From 5613f1277938ad67ea7ad34a14dae698452ee17c Mon Sep 17 00:00:00 2001 From: Github Actions Bot Date: Tue, 12 Dec 2023 15:56:58 +0000 Subject: [PATCH] Update auto generated go snappi --- gosnappi/gosnappi.go | 160040 +++++++++++++++++++++++------------- gosnappi/otg/otg.pb.go | 124126 ++++++++++++++++------------ gosnappi/otg/otg.proto | 13184 +-- requirements.txt | 8 +- snappi/__init__.py | 124 + snappi/docs/openapi.yaml | 19709 +++-- snappi/otg_pb2.py | 4722 +- snappi/snappi.py | 14173 +++- 8 files changed, 210769 insertions(+), 125317 deletions(-) diff --git a/gosnappi/gosnappi.go b/gosnappi/gosnappi.go index 230eb513..fc5ff97f 100644 --- a/gosnappi/gosnappi.go +++ b/gosnappi/gosnappi.go @@ -4587,9 +4587,6 @@ type CaptureRequest interface { // x-constraint: // - /components/schemas/Port/properties/name // -// x-constraint: -// - /components/schemas/Port/properties/name -// // PortName returns a string func (obj *captureRequest) PortName() string { @@ -4602,9 +4599,6 @@ func (obj *captureRequest) PortName() string { // x-constraint: // - /components/schemas/Port/properties/name // -// x-constraint: -// - /components/schemas/Port/properties/name -// // SetPortName sets the string value in the CaptureRequest object func (obj *captureRequest) SetPortName(value string) CaptureRequest { @@ -8219,9 +8213,6 @@ type Layer1 interface { // x-constraint: // - /components/schemas/Port/properties/name // -// x-constraint: -// - /components/schemas/Port/properties/name -// // PortNames returns a []string func (obj *layer1) PortNames() []string { if obj.obj.PortNames == nil { @@ -8236,9 +8227,6 @@ func (obj *layer1) PortNames() []string { // x-constraint: // - /components/schemas/Port/properties/name // -// x-constraint: -// - /components/schemas/Port/properties/name -// // SetPortNames sets the []string value in the Layer1 object func (obj *layer1) SetPortNames(value []string) Layer1 { @@ -8396,8 +8384,6 @@ func (obj *layer1) SetMtu(value uint32) Layer1 { return obj } -// Under Review: This field is currently under review for pending exploration on use cases -// // Under Review: This field is currently under review for pending exploration on use cases // // Set to true to override the auto_negotiate, link_training @@ -8409,8 +8395,6 @@ func (obj *layer1) IeeeMediaDefaults() bool { } -// Under Review: This field is currently under review for pending exploration on use cases -// // Under Review: This field is currently under review for pending exploration on use cases // // Set to true to override the auto_negotiate, link_training @@ -8420,8 +8404,6 @@ func (obj *layer1) HasIeeeMediaDefaults() bool { return obj.obj.IeeeMediaDefaults != nil } -// Under Review: This field is currently under review for pending exploration on use cases -// // Under Review: This field is currently under review for pending exploration on use cases // // Set to true to override the auto_negotiate, link_training @@ -8433,8 +8415,6 @@ func (obj *layer1) SetIeeeMediaDefaults(value bool) Layer1 { return obj } -// Under Review: This field is currently under review for pending exploration on use cases, given that a separate configuration called `AutoNegotiation` already exists. -// // Under Review: This field is currently under review for pending exploration on use cases, given that a separate configuration called `AutoNegotiation` already exists. // // Enable/disable auto negotiation. @@ -8445,8 +8425,6 @@ func (obj *layer1) AutoNegotiate() bool { } -// Under Review: This field is currently under review for pending exploration on use cases, given that a separate configuration called `AutoNegotiation` already exists. -// // Under Review: This field is currently under review for pending exploration on use cases, given that a separate configuration called `AutoNegotiation` already exists. // // Enable/disable auto negotiation. @@ -8455,8 +8433,6 @@ func (obj *layer1) HasAutoNegotiate() bool { return obj.obj.AutoNegotiate != nil } -// Under Review: This field is currently under review for pending exploration on use cases, given that a separate configuration called `AutoNegotiation` already exists. -// // Under Review: This field is currently under review for pending exploration on use cases, given that a separate configuration called `AutoNegotiation` already exists. // // Enable/disable auto negotiation. @@ -8776,8 +8752,6 @@ func (obj *capture) setNil() { // Capture is under Review: There may be changes in filter configuration // -// Under Review: There may be changes in filter configuration -// // Configuration for capture settings. type Capture interface { Validation @@ -8848,9 +8822,6 @@ type Capture interface { // x-constraint: // - /components/schemas/Port/properties/name // -// x-constraint: -// - /components/schemas/Port/properties/name -// // PortNames returns a []string func (obj *capture) PortNames() []string { if obj.obj.PortNames == nil { @@ -8864,9 +8835,6 @@ func (obj *capture) PortNames() []string { // x-constraint: // - /components/schemas/Port/properties/name // -// x-constraint: -// - /components/schemas/Port/properties/name -// // SetPortNames sets the []string value in the Capture object func (obj *capture) SetPortNames(value []string) Capture { @@ -10273,8 +10241,6 @@ func (obj *flowFlowHeaderIter) appendHolderSlice(item FlowHeader) FlowFlowHeader return obj } -// Under Review: The packet header schema for egress tracking currently exposes unwanted fields. The query structure for tagged metrics inside flows metrics requires documenting expected response format. -// // Under Review: The packet header schema for egress tracking currently exposes unwanted fields. The query structure for tagged metrics inside flows metrics requires documenting expected response format. // // The list of protocol headers defining the shape of all @@ -14012,9 +13978,6 @@ type PortMetricsRequest interface { // x-constraint: // - /components/schemas/Port/properties/name // -// x-constraint: -// - /components/schemas/Port/properties/name -// // PortNames returns a []string func (obj *portMetricsRequest) PortNames() []string { if obj.obj.PortNames == nil { @@ -14028,9 +13991,6 @@ func (obj *portMetricsRequest) PortNames() []string { // x-constraint: // - /components/schemas/Port/properties/name // -// x-constraint: -// - /components/schemas/Port/properties/name -// // SetPortNames sets the []string value in the PortMetricsRequest object func (obj *portMetricsRequest) SetPortNames(value []string) PortMetricsRequest { @@ -14358,9 +14318,6 @@ type FlowMetricsRequest interface { // x-constraint: // - /components/schemas/Flow/properties/name // -// x-constraint: -// - /components/schemas/Flow/properties/name -// // FlowNames returns a []string func (obj *flowMetricsRequest) FlowNames() []string { if obj.obj.FlowNames == nil { @@ -14375,9 +14332,6 @@ func (obj *flowMetricsRequest) FlowNames() []string { // x-constraint: // - /components/schemas/Flow/properties/name // -// x-constraint: -// - /components/schemas/Flow/properties/name -// // SetFlowNames sets the []string value in the FlowMetricsRequest object func (obj *flowMetricsRequest) SetFlowNames(value []string) FlowMetricsRequest { @@ -14710,9 +14664,6 @@ type Bgpv4MetricsRequest interface { // x-constraint: // - /components/schemas/Bgp.V4peer/properties/name // -// x-constraint: -// - /components/schemas/Bgp.V4peer/properties/name -// // PeerNames returns a []string func (obj *bgpv4MetricsRequest) PeerNames() []string { if obj.obj.PeerNames == nil { @@ -14726,9 +14677,6 @@ func (obj *bgpv4MetricsRequest) PeerNames() []string { // x-constraint: // - /components/schemas/Bgp.V4peer/properties/name // -// x-constraint: -// - /components/schemas/Bgp.V4peer/properties/name -// // SetPeerNames sets the []string value in the Bgpv4MetricsRequest object func (obj *bgpv4MetricsRequest) SetPeerNames(value []string) Bgpv4MetricsRequest { @@ -15046,9 +14994,6 @@ type Bgpv6MetricsRequest interface { // x-constraint: // - /components/schemas/Bgp.V6peer/properties/name // -// x-constraint: -// - /components/schemas/Bgp.V6peer/properties/name -// // PeerNames returns a []string func (obj *bgpv6MetricsRequest) PeerNames() []string { if obj.obj.PeerNames == nil { @@ -15062,9 +15007,6 @@ func (obj *bgpv6MetricsRequest) PeerNames() []string { // x-constraint: // - /components/schemas/Bgp.V6peer/properties/name // -// x-constraint: -// - /components/schemas/Bgp.V6peer/properties/name -// // SetPeerNames sets the []string value in the Bgpv6MetricsRequest object func (obj *bgpv6MetricsRequest) SetPeerNames(value []string) Bgpv6MetricsRequest { @@ -15382,9 +15324,6 @@ type IsisMetricsRequest interface { // x-constraint: // - /components/schemas/Device.IsisRouter/properties/name // -// x-constraint: -// - /components/schemas/Device.IsisRouter/properties/name -// // RouterNames returns a []string func (obj *isisMetricsRequest) RouterNames() []string { if obj.obj.RouterNames == nil { @@ -15398,9 +15337,6 @@ func (obj *isisMetricsRequest) RouterNames() []string { // x-constraint: // - /components/schemas/Device.IsisRouter/properties/name // -// x-constraint: -// - /components/schemas/Device.IsisRouter/properties/name -// // SetRouterNames sets the []string value in the IsisMetricsRequest object func (obj *isisMetricsRequest) SetRouterNames(value []string) IsisMetricsRequest { @@ -15738,9 +15674,6 @@ type LagMetricsRequest interface { // x-constraint: // - /components/schemas/Lag/properties/name // -// x-constraint: -// - /components/schemas/Lag/properties/name -// // LagNames returns a []string func (obj *lagMetricsRequest) LagNames() []string { if obj.obj.LagNames == nil { @@ -15754,9 +15687,6 @@ func (obj *lagMetricsRequest) LagNames() []string { // x-constraint: // - /components/schemas/Lag/properties/name // -// x-constraint: -// - /components/schemas/Lag/properties/name -// // SetLagNames sets the []string value in the LagMetricsRequest object func (obj *lagMetricsRequest) SetLagNames(value []string) LagMetricsRequest { @@ -16066,9 +15996,6 @@ type LacpMetricsRequest interface { // x-constraint: // - /components/schemas/Lag/properties/name // -// x-constraint: -// - /components/schemas/Lag/properties/name -// // LagNames returns a []string func (obj *lacpMetricsRequest) LagNames() []string { if obj.obj.LagNames == nil { @@ -16082,9 +16009,6 @@ func (obj *lacpMetricsRequest) LagNames() []string { // x-constraint: // - /components/schemas/Lag/properties/name // -// x-constraint: -// - /components/schemas/Lag/properties/name -// // SetLagNames sets the []string value in the LacpMetricsRequest object func (obj *lacpMetricsRequest) SetLagNames(value []string) LacpMetricsRequest { @@ -16101,9 +16025,6 @@ func (obj *lacpMetricsRequest) SetLagNames(value []string) LacpMetricsRequest { // x-constraint: // - /components/schemas/Port/properties/name // -// x-constraint: -// - /components/schemas/Port/properties/name -// // LagMemberPortNames returns a []string func (obj *lacpMetricsRequest) LagMemberPortNames() []string { if obj.obj.LagMemberPortNames == nil { @@ -16117,9 +16038,6 @@ func (obj *lacpMetricsRequest) LagMemberPortNames() []string { // x-constraint: // - /components/schemas/Port/properties/name // -// x-constraint: -// - /components/schemas/Port/properties/name -// // SetLagMemberPortNames sets the []string value in the LacpMetricsRequest object func (obj *lacpMetricsRequest) SetLagMemberPortNames(value []string) LacpMetricsRequest { @@ -16435,9 +16353,6 @@ type LldpMetricsRequest interface { // x-constraint: // - /components/schemas/Lldp/properties/name // -// x-constraint: -// - /components/schemas/Lldp/properties/name -// // LldpNames returns a []string func (obj *lldpMetricsRequest) LldpNames() []string { if obj.obj.LldpNames == nil { @@ -16451,9 +16366,6 @@ func (obj *lldpMetricsRequest) LldpNames() []string { // x-constraint: // - /components/schemas/Lldp/properties/name // -// x-constraint: -// - /components/schemas/Lldp/properties/name -// // SetLldpNames sets the []string value in the LldpMetricsRequest object func (obj *lldpMetricsRequest) SetLldpNames(value []string) LldpMetricsRequest { @@ -16751,9 +16663,6 @@ type RsvpMetricsRequest interface { // x-constraint: // - /components/schemas/Device.Rsvp/properties/name // -// x-constraint: -// - /components/schemas/Device.Rsvp/properties/name -// // RouterNames returns a []string func (obj *rsvpMetricsRequest) RouterNames() []string { if obj.obj.RouterNames == nil { @@ -16767,9 +16676,6 @@ func (obj *rsvpMetricsRequest) RouterNames() []string { // x-constraint: // - /components/schemas/Device.Rsvp/properties/name // -// x-constraint: -// - /components/schemas/Device.Rsvp/properties/name -// // SetRouterNames sets the []string value in the RsvpMetricsRequest object func (obj *rsvpMetricsRequest) SetRouterNames(value []string) RsvpMetricsRequest { @@ -17111,9 +17017,6 @@ type Neighborsv4StatesRequest interface { // x-constraint: // - /components/schemas/Device.Ethernet/properties/name // -// x-constraint: -// - /components/schemas/Device.Ethernet/properties/name -// // EthernetNames returns a []string func (obj *neighborsv4StatesRequest) EthernetNames() []string { if obj.obj.EthernetNames == nil { @@ -17127,9 +17030,6 @@ func (obj *neighborsv4StatesRequest) EthernetNames() []string { // x-constraint: // - /components/schemas/Device.Ethernet/properties/name // -// x-constraint: -// - /components/schemas/Device.Ethernet/properties/name -// // SetEthernetNames sets the []string value in the Neighborsv4StatesRequest object func (obj *neighborsv4StatesRequest) SetEthernetNames(value []string) Neighborsv4StatesRequest { @@ -17383,9 +17283,6 @@ type Neighborsv6StatesRequest interface { // x-constraint: // - /components/schemas/Device.Ethernet/properties/name // -// x-constraint: -// - /components/schemas/Device.Ethernet/properties/name -// // EthernetNames returns a []string func (obj *neighborsv6StatesRequest) EthernetNames() []string { if obj.obj.EthernetNames == nil { @@ -17399,9 +17296,6 @@ func (obj *neighborsv6StatesRequest) EthernetNames() []string { // x-constraint: // - /components/schemas/Device.Ethernet/properties/name // -// x-constraint: -// - /components/schemas/Device.Ethernet/properties/name -// // SetEthernetNames sets the []string value in the Neighborsv6StatesRequest object func (obj *neighborsv6StatesRequest) SetEthernetNames(value []string) Neighborsv6StatesRequest { @@ -17675,10 +17569,6 @@ type BgpPrefixStateRequest interface { // - /components/schemas/Bgp.V4Peer/properties/name // - /components/schemas/Bgp.V6Peer/properties/name // -// x-constraint: -// - /components/schemas/Bgp.V4Peer/properties/name -// - /components/schemas/Bgp.V6Peer/properties/name -// // BgpPeerNames returns a []string func (obj *bgpPrefixStateRequest) BgpPeerNames() []string { if obj.obj.BgpPeerNames == nil { @@ -17693,10 +17583,6 @@ func (obj *bgpPrefixStateRequest) BgpPeerNames() []string { // - /components/schemas/Bgp.V4Peer/properties/name // - /components/schemas/Bgp.V6Peer/properties/name // -// x-constraint: -// - /components/schemas/Bgp.V4Peer/properties/name -// - /components/schemas/Bgp.V6Peer/properties/name -// // SetBgpPeerNames sets the []string value in the BgpPrefixStateRequest object func (obj *bgpPrefixStateRequest) SetBgpPeerNames(value []string) BgpPrefixStateRequest { @@ -18184,9 +18070,6 @@ type IsisLspsStateRequest interface { // x-constraint: // - /components/schemas/Device.IsisRouter/properties/name // -// x-constraint: -// - /components/schemas/Device.IsisRouter/properties/name -// // IsisRouterNames returns a []string func (obj *isisLspsStateRequest) IsisRouterNames() []string { if obj.obj.IsisRouterNames == nil { @@ -18200,9 +18083,6 @@ func (obj *isisLspsStateRequest) IsisRouterNames() []string { // x-constraint: // - /components/schemas/Device.IsisRouter/properties/name // -// x-constraint: -// - /components/schemas/Device.IsisRouter/properties/name -// // SetIsisRouterNames sets the []string value in the IsisLspsStateRequest object func (obj *isisLspsStateRequest) SetIsisRouterNames(value []string) IsisLspsStateRequest { @@ -18460,9 +18340,6 @@ type LldpNeighborsStateRequest interface { // x-constraint: // - /components/schemas/Lldp/properties/name // -// x-constraint: -// - /components/schemas/Lldp/properties/name -// // LldpNames returns a []string func (obj *lldpNeighborsStateRequest) LldpNames() []string { if obj.obj.LldpNames == nil { @@ -18476,9 +18353,6 @@ func (obj *lldpNeighborsStateRequest) LldpNames() []string { // x-constraint: // - /components/schemas/Lldp/properties/name // -// x-constraint: -// - /components/schemas/Lldp/properties/name -// // SetLldpNames sets the []string value in the LldpNeighborsStateRequest object func (obj *lldpNeighborsStateRequest) SetLldpNames(value []string) LldpNeighborsStateRequest { @@ -18753,9 +18627,6 @@ type RsvpLspsStateRequest interface { // x-constraint: // - /components/schemas/Device.Rsvp/properties/name // -// x-constraint: -// - /components/schemas/Device.Rsvp/properties/name -// // RsvpRouterNames returns a []string func (obj *rsvpLspsStateRequest) RsvpRouterNames() []string { if obj.obj.RsvpRouterNames == nil { @@ -18769,9 +18640,6 @@ func (obj *rsvpLspsStateRequest) RsvpRouterNames() []string { // x-constraint: // - /components/schemas/Device.Rsvp/properties/name // -// x-constraint: -// - /components/schemas/Device.Rsvp/properties/name -// // SetRsvpRouterNames sets the []string value in the RsvpLspsStateRequest object func (obj *rsvpLspsStateRequest) SetRsvpRouterNames(value []string) RsvpLspsStateRequest { @@ -22540,9 +22408,6 @@ type LagPort interface { // x-constraint: // - /components/schemas/Port/properties/name // -// x-constraint: -// - /components/schemas/Port/properties/name -// // PortName returns a string func (obj *lagPort) PortName() string { @@ -22555,9 +22420,6 @@ func (obj *lagPort) PortName() string { // x-constraint: // - /components/schemas/Port/properties/name // -// x-constraint: -// - /components/schemas/Port/properties/name -// // SetPortName sets the string value in the LagPort object func (obj *lagPort) SetPortName(value string) LagPort { @@ -25389,9 +25251,6 @@ type DeviceIpv4Loopback interface { // x-constraint: // - /components/schemas/Device.Ethernet/properties/name // -// x-constraint: -// - /components/schemas/Device.Ethernet/properties/name -// // EthName returns a string func (obj *deviceIpv4Loopback) EthName() string { @@ -25404,9 +25263,6 @@ func (obj *deviceIpv4Loopback) EthName() string { // x-constraint: // - /components/schemas/Device.Ethernet/properties/name // -// x-constraint: -// - /components/schemas/Device.Ethernet/properties/name -// // SetEthName sets the string value in the DeviceIpv4Loopback object func (obj *deviceIpv4Loopback) SetEthName(value string) DeviceIpv4Loopback { @@ -25726,9 +25582,6 @@ type DeviceIpv6Loopback interface { // x-constraint: // - /components/schemas/Device.Ethernet/properties/name // -// x-constraint: -// - /components/schemas/Device.Ethernet/properties/name -// // EthName returns a string func (obj *deviceIpv6Loopback) EthName() string { @@ -25742,9 +25595,6 @@ func (obj *deviceIpv6Loopback) EthName() string { // x-constraint: // - /components/schemas/Device.Ethernet/properties/name // -// x-constraint: -// - /components/schemas/Device.Ethernet/properties/name -// // SetEthName sets the string value in the DeviceIpv6Loopback object func (obj *deviceIpv6Loopback) SetEthName(value string) DeviceIpv6Loopback { @@ -28435,6 +28285,7 @@ type flowHeader struct { pppHolder FlowPpp igmpv1Holder FlowIgmpv1 mplsHolder FlowMpls + rsvpHolder FlowRsvp } func NewFlowHeader() FlowHeader { @@ -28637,6 +28488,7 @@ func (obj *flowHeader) setNil() { obj.pppHolder = nil obj.igmpv1Holder = nil obj.mplsHolder = nil + obj.rsvpHolder = nil obj.validationErrors = nil obj.warnings = nil obj.constraints = make(map[string]map[string]Constraints) @@ -28834,6 +28686,14 @@ type FlowHeader interface { SetMpls(value FlowMpls) FlowHeader // HasMpls checks if Mpls has been set in FlowHeader HasMpls() bool + // Rsvp returns FlowRsvp, set in FlowHeader. + // FlowRsvp is rSVP packet header as defined in RFC2205 and RFC3209. Currently only supported message type is "path" with mandatory objects and sub-objects. + Rsvp() FlowRsvp + // SetRsvp assigns FlowRsvp provided by user to FlowHeader. + // FlowRsvp is rSVP packet header as defined in RFC2205 and RFC3209. Currently only supported message type is "path" with mandatory objects and sub-objects. + SetRsvp(value FlowRsvp) FlowHeader + // HasRsvp checks if Rsvp has been set in FlowHeader + HasRsvp() bool setNil() } @@ -28860,6 +28720,7 @@ var FlowHeaderChoice = struct { PPP FlowHeaderChoiceEnum IGMPV1 FlowHeaderChoiceEnum MPLS FlowHeaderChoiceEnum + RSVP FlowHeaderChoiceEnum }{ CUSTOM: FlowHeaderChoiceEnum("custom"), ETHERNET: FlowHeaderChoiceEnum("ethernet"), @@ -28880,6 +28741,7 @@ var FlowHeaderChoice = struct { PPP: FlowHeaderChoiceEnum("ppp"), IGMPV1: FlowHeaderChoiceEnum("igmpv1"), MPLS: FlowHeaderChoiceEnum("mpls"), + RSVP: FlowHeaderChoiceEnum("rsvp"), } func (obj *flowHeader) Choice() FlowHeaderChoiceEnum { @@ -28902,6 +28764,8 @@ func (obj *flowHeader) SetChoice(value FlowHeaderChoiceEnum) FlowHeader { } enumValue := otg.FlowHeader_Choice_Enum(intValue) obj.obj.Choice = &enumValue + obj.obj.Rsvp = nil + obj.rsvpHolder = nil obj.obj.Mpls = nil obj.mplsHolder = nil obj.obj.Igmpv1 = nil @@ -29017,6 +28881,10 @@ func (obj *flowHeader) SetChoice(value FlowHeaderChoiceEnum) FlowHeader { obj.obj.Mpls = NewFlowMpls().Msg() } + if value == FlowHeaderChoice.RSVP { + obj.obj.Rsvp = NewFlowRsvp().Msg() + } + return obj } @@ -29552,6 +29420,34 @@ func (obj *flowHeader) SetMpls(value FlowMpls) FlowHeader { return obj } +// description is TBD +// Rsvp returns a FlowRsvp +func (obj *flowHeader) Rsvp() FlowRsvp { + if obj.obj.Rsvp == nil { + obj.SetChoice(FlowHeaderChoice.RSVP) + } + if obj.rsvpHolder == nil { + obj.rsvpHolder = &flowRsvp{obj: obj.obj.Rsvp} + } + return obj.rsvpHolder +} + +// description is TBD +// Rsvp returns a FlowRsvp +func (obj *flowHeader) HasRsvp() bool { + return obj.obj.Rsvp != nil +} + +// description is TBD +// SetRsvp sets the FlowRsvp value in the FlowHeader object +func (obj *flowHeader) SetRsvp(value FlowRsvp) FlowHeader { + obj.SetChoice(FlowHeaderChoice.RSVP) + obj.rsvpHolder = nil + obj.obj.Rsvp = value.Msg() + + return obj +} + func (obj *flowHeader) validateObj(vObj *validation, set_default bool) { if set_default { obj.setDefault() @@ -29652,6 +29548,11 @@ func (obj *flowHeader) validateObj(vObj *validation, set_default bool) { obj.Mpls().validateObj(vObj, set_default) } + if obj.obj.Rsvp != nil { + + obj.Rsvp().validateObj(vObj, set_default) + } + } func (obj *flowHeader) setDefault() { @@ -33324,9 +33225,6 @@ func (obj *lldpConnection) SetChoice(value LldpConnectionChoiceEnum) LldpConnect // x-constraint: // - /components/schemas/Port/properties/name // -// x-constraint: -// - /components/schemas/Port/properties/name -// // PortName returns a string func (obj *lldpConnection) PortName() string { @@ -33343,9 +33241,6 @@ func (obj *lldpConnection) PortName() string { // x-constraint: // - /components/schemas/Port/properties/name // -// x-constraint: -// - /components/schemas/Port/properties/name -// // PortName returns a string func (obj *lldpConnection) HasPortName() bool { return obj.obj.PortName != nil @@ -33356,9 +33251,6 @@ func (obj *lldpConnection) HasPortName() bool { // x-constraint: // - /components/schemas/Port/properties/name // -// x-constraint: -// - /components/schemas/Port/properties/name -// // SetPortName sets the string value in the LldpConnection object func (obj *lldpConnection) SetPortName(value string) LldpConnection { obj.SetChoice(LldpConnectionChoice.PORT_NAME) @@ -34746,9 +34638,6 @@ type StatePortLink interface { // x-constraint: // - /components/schemas/Port/properties/name // -// x-constraint: -// - /components/schemas/Port/properties/name -// // PortNames returns a []string func (obj *statePortLink) PortNames() []string { if obj.obj.PortNames == nil { @@ -34762,9 +34651,6 @@ func (obj *statePortLink) PortNames() []string { // x-constraint: // - /components/schemas/Port/properties/name // -// x-constraint: -// - /components/schemas/Port/properties/name -// // SetPortNames sets the []string value in the StatePortLink object func (obj *statePortLink) SetPortNames(value []string) StatePortLink { @@ -35055,9 +34941,6 @@ type StatePortCapture interface { // x-constraint: // - /components/schemas/Port/properties/name // -// x-constraint: -// - /components/schemas/Port/properties/name -// // PortNames returns a []string func (obj *statePortCapture) PortNames() []string { if obj.obj.PortNames == nil { @@ -35072,9 +34955,6 @@ func (obj *statePortCapture) PortNames() []string { // x-constraint: // - /components/schemas/Port/properties/name // -// x-constraint: -// - /components/schemas/Port/properties/name -// // SetPortNames sets the []string value in the StatePortCapture object func (obj *statePortCapture) SetPortNames(value []string) StatePortCapture { @@ -35637,12 +35517,6 @@ type StateProtocolRoute interface { // - /components/schemas/Isis.V4RouteRange/properties/name // - /components/schemas/Isis.V6RouteRange/properties/name // -// x-constraint: -// - /components/schemas/Bgp.V4RouteRange/properties/name -// - /components/schemas/Bgp.V6RouteRange/properties/name -// - /components/schemas/Isis.V4RouteRange/properties/name -// - /components/schemas/Isis.V6RouteRange/properties/name -// // Names returns a []string func (obj *stateProtocolRoute) Names() []string { if obj.obj.Names == nil { @@ -35659,12 +35533,6 @@ func (obj *stateProtocolRoute) Names() []string { // - /components/schemas/Isis.V4RouteRange/properties/name // - /components/schemas/Isis.V6RouteRange/properties/name // -// x-constraint: -// - /components/schemas/Bgp.V4RouteRange/properties/name -// - /components/schemas/Bgp.V6RouteRange/properties/name -// - /components/schemas/Isis.V4RouteRange/properties/name -// - /components/schemas/Isis.V6RouteRange/properties/name -// // SetNames sets the []string value in the StateProtocolRoute object func (obj *stateProtocolRoute) SetNames(value []string) StateProtocolRoute { @@ -36978,9 +36846,6 @@ type StateTrafficFlowTransmit interface { // x-constraint: // - /components/schemas/Flow/properties/name // -// x-constraint: -// - /components/schemas/Flow/properties/name -// // FlowNames returns a []string func (obj *stateTrafficFlowTransmit) FlowNames() []string { if obj.obj.FlowNames == nil { @@ -36995,9 +36860,6 @@ func (obj *stateTrafficFlowTransmit) FlowNames() []string { // x-constraint: // - /components/schemas/Flow/properties/name // -// x-constraint: -// - /components/schemas/Flow/properties/name -// // SetFlowNames sets the []string value in the StateTrafficFlowTransmit object func (obj *stateTrafficFlowTransmit) SetFlowNames(value []string) StateTrafficFlowTransmit { @@ -39909,9 +39771,6 @@ type PortMetric interface { // x-constraint: // - /components/schemas/Port/properties/name // -// x-constraint: -// - /components/schemas/Port/properties/name -// // Name returns a string func (obj *portMetric) Name() string { @@ -39924,9 +39783,6 @@ func (obj *portMetric) Name() string { // x-constraint: // - /components/schemas/Port/properties/name // -// x-constraint: -// - /components/schemas/Port/properties/name -// // Name returns a string func (obj *portMetric) HasName() bool { return obj.obj.Name != nil @@ -39937,9 +39793,6 @@ func (obj *portMetric) HasName() bool { // x-constraint: // - /components/schemas/Port/properties/name // -// x-constraint: -// - /components/schemas/Port/properties/name -// // SetName sets the string value in the PortMetric object func (obj *portMetric) SetName(value string) PortMetric { @@ -43790,9 +43643,6 @@ type LagMetric interface { // x-constraint: // - /components/schemas/Lag/properties/name // -// x-constraint: -// - /components/schemas/Lag/properties/name -// // Name returns a string func (obj *lagMetric) Name() string { @@ -43805,9 +43655,6 @@ func (obj *lagMetric) Name() string { // x-constraint: // - /components/schemas/Lag/properties/name // -// x-constraint: -// - /components/schemas/Lag/properties/name -// // Name returns a string func (obj *lagMetric) HasName() bool { return obj.obj.Name != nil @@ -43818,9 +43665,6 @@ func (obj *lagMetric) HasName() bool { // x-constraint: // - /components/schemas/Lag/properties/name // -// x-constraint: -// - /components/schemas/Lag/properties/name -// // SetName sets the string value in the LagMetric object func (obj *lagMetric) SetName(value string) LagMetric { @@ -54463,9 +54307,6 @@ func (obj *ethernetConnection) SetChoice(value EthernetConnectionChoiceEnum) Eth // x-constraint: // - /components/schemas/Port/properties/name // -// x-constraint: -// - /components/schemas/Port/properties/name -// // PortName returns a string func (obj *ethernetConnection) PortName() string { @@ -54482,9 +54323,6 @@ func (obj *ethernetConnection) PortName() string { // x-constraint: // - /components/schemas/Port/properties/name // -// x-constraint: -// - /components/schemas/Port/properties/name -// // PortName returns a string func (obj *ethernetConnection) HasPortName() bool { return obj.obj.PortName != nil @@ -54495,9 +54333,6 @@ func (obj *ethernetConnection) HasPortName() bool { // x-constraint: // - /components/schemas/Port/properties/name // -// x-constraint: -// - /components/schemas/Port/properties/name -// // SetPortName sets the string value in the EthernetConnection object func (obj *ethernetConnection) SetPortName(value string) EthernetConnection { obj.SetChoice(EthernetConnectionChoice.PORT_NAME) @@ -54510,9 +54345,6 @@ func (obj *ethernetConnection) SetPortName(value string) EthernetConnection { // x-constraint: // - /components/schemas/Lag/properties/name // -// x-constraint: -// - /components/schemas/Lag/properties/name -// // LagName returns a string func (obj *ethernetConnection) LagName() string { @@ -54529,9 +54361,6 @@ func (obj *ethernetConnection) LagName() string { // x-constraint: // - /components/schemas/Lag/properties/name // -// x-constraint: -// - /components/schemas/Lag/properties/name -// // LagName returns a string func (obj *ethernetConnection) HasLagName() bool { return obj.obj.LagName != nil @@ -54542,9 +54371,6 @@ func (obj *ethernetConnection) HasLagName() bool { // x-constraint: // - /components/schemas/Lag/properties/name // -// x-constraint: -// - /components/schemas/Lag/properties/name -// // SetLagName sets the string value in the EthernetConnection object func (obj *ethernetConnection) SetLagName(value string) EthernetConnection { obj.SetChoice(EthernetConnectionChoice.LAG_NAME) @@ -54558,10 +54384,6 @@ func (obj *ethernetConnection) SetLagName(value string) EthernetConnection { // - #/components/schemas/Vxlan.V4Tunnel/properties/name // - #/components/schemas/Vxlan.V6Tunnel/properties/name // -// x-constraint: -// - #/components/schemas/Vxlan.V4Tunnel/properties/name -// - #/components/schemas/Vxlan.V6Tunnel/properties/name -// // VxlanName returns a string func (obj *ethernetConnection) VxlanName() string { @@ -54579,10 +54401,6 @@ func (obj *ethernetConnection) VxlanName() string { // - #/components/schemas/Vxlan.V4Tunnel/properties/name // - #/components/schemas/Vxlan.V6Tunnel/properties/name // -// x-constraint: -// - #/components/schemas/Vxlan.V4Tunnel/properties/name -// - #/components/schemas/Vxlan.V6Tunnel/properties/name -// // VxlanName returns a string func (obj *ethernetConnection) HasVxlanName() bool { return obj.obj.VxlanName != nil @@ -54594,10 +54412,6 @@ func (obj *ethernetConnection) HasVxlanName() bool { // - #/components/schemas/Vxlan.V4Tunnel/properties/name // - #/components/schemas/Vxlan.V6Tunnel/properties/name // -// x-constraint: -// - #/components/schemas/Vxlan.V4Tunnel/properties/name -// - #/components/schemas/Vxlan.V6Tunnel/properties/name -// // SetVxlanName sets the string value in the EthernetConnection object func (obj *ethernetConnection) SetVxlanName(value string) EthernetConnection { obj.SetChoice(EthernetConnectionChoice.VXLAN_NAME) @@ -56475,9 +56289,6 @@ type IsisInterface interface { // x-constraint: // - /components/schemas/Device.Ethernet/properties/name // -// x-constraint: -// - /components/schemas/Device.Ethernet/properties/name -// // EthName returns a string func (obj *isisInterface) EthName() string { @@ -56490,9 +56301,6 @@ func (obj *isisInterface) EthName() string { // x-constraint: // - /components/schemas/Device.Ethernet/properties/name // -// x-constraint: -// - /components/schemas/Device.Ethernet/properties/name -// // SetEthName sets the string value in the IsisInterface object func (obj *isisInterface) SetEthName(value string) IsisInterface { @@ -59903,10 +59711,6 @@ type BgpV4Interface interface { // - /components/schemas/Device.Ipv4/properties/name // - /components/schemas/Device.Ipv4Loopback/properties/name // -// x-constraint: -// - /components/schemas/Device.Ipv4/properties/name -// - /components/schemas/Device.Ipv4Loopback/properties/name -// // Ipv4Name returns a string func (obj *bgpV4Interface) Ipv4Name() string { @@ -59920,10 +59724,6 @@ func (obj *bgpV4Interface) Ipv4Name() string { // - /components/schemas/Device.Ipv4/properties/name // - /components/schemas/Device.Ipv4Loopback/properties/name // -// x-constraint: -// - /components/schemas/Device.Ipv4/properties/name -// - /components/schemas/Device.Ipv4Loopback/properties/name -// // SetIpv4Name sets the string value in the BgpV4Interface object func (obj *bgpV4Interface) SetIpv4Name(value string) BgpV4Interface { @@ -60291,10 +60091,6 @@ type BgpV6Interface interface { // - /components/schemas/Device.Ipv6/properties/name // - /components/schemas/Device.Ipv6Loopback/properties/name // -// x-constraint: -// - /components/schemas/Device.Ipv6/properties/name -// - /components/schemas/Device.Ipv6Loopback/properties/name -// // Ipv6Name returns a string func (obj *bgpV6Interface) Ipv6Name() string { @@ -60308,10 +60104,6 @@ func (obj *bgpV6Interface) Ipv6Name() string { // - /components/schemas/Device.Ipv6/properties/name // - /components/schemas/Device.Ipv6Loopback/properties/name // -// x-constraint: -// - /components/schemas/Device.Ipv6/properties/name -// - /components/schemas/Device.Ipv6Loopback/properties/name -// // SetIpv6Name sets the string value in the BgpV6Interface object func (obj *bgpV6Interface) SetIpv6Name(value string) BgpV6Interface { @@ -60693,10 +60485,6 @@ type VxlanV4Tunnel interface { // - /components/schemas/Device.Ipv4/properties/name // - /components/schemas/Device.Ipv4Loopback/properties/name // -// x-constraint: -// - /components/schemas/Device.Ipv4/properties/name -// - /components/schemas/Device.Ipv4Loopback/properties/name -// // SourceInterface returns a string func (obj *vxlanV4Tunnel) SourceInterface() string { @@ -60710,10 +60498,6 @@ func (obj *vxlanV4Tunnel) SourceInterface() string { // - /components/schemas/Device.Ipv4/properties/name // - /components/schemas/Device.Ipv4Loopback/properties/name // -// x-constraint: -// - /components/schemas/Device.Ipv4/properties/name -// - /components/schemas/Device.Ipv4Loopback/properties/name -// // SetSourceInterface sets the string value in the VxlanV4Tunnel object func (obj *vxlanV4Tunnel) SetSourceInterface(value string) VxlanV4Tunnel { @@ -61079,10 +60863,6 @@ type VxlanV6Tunnel interface { // - /components/schemas/Device.Ipv6/properties/name // - /components/schemas/Device.Ipv6Loopback/properties/name // -// x-constraint: -// - /components/schemas/Device.Ipv6/properties/name -// - /components/schemas/Device.Ipv6Loopback/properties/name -// // SourceInterface returns a string func (obj *vxlanV6Tunnel) SourceInterface() string { @@ -61096,10 +60876,6 @@ func (obj *vxlanV6Tunnel) SourceInterface() string { // - /components/schemas/Device.Ipv6/properties/name // - /components/schemas/Device.Ipv6Loopback/properties/name // -// x-constraint: -// - /components/schemas/Device.Ipv6/properties/name -// - /components/schemas/Device.Ipv6Loopback/properties/name -// // SetSourceInterface sets the string value in the VxlanV6Tunnel object func (obj *vxlanV6Tunnel) SetSourceInterface(value string) VxlanV6Tunnel { @@ -61497,9 +61273,6 @@ type RsvpIpv4Interface interface { // x-constraint: // - /components/schemas/Device.Ipv4/properties/name // -// x-constraint: -// - /components/schemas/Device.Ipv4/properties/name -// // Ipv4Name returns a string func (obj *rsvpIpv4Interface) Ipv4Name() string { @@ -61512,9 +61285,6 @@ func (obj *rsvpIpv4Interface) Ipv4Name() string { // x-constraint: // - /components/schemas/Device.Ipv4/properties/name // -// x-constraint: -// - /components/schemas/Device.Ipv4/properties/name -// // SetIpv4Name sets the string value in the RsvpIpv4Interface object func (obj *rsvpIpv4Interface) SetIpv4Name(value string) RsvpIpv4Interface { @@ -62105,10 +61875,6 @@ type RsvpLspIpv4Interface interface { // - /components/schemas/Device.Ipv4/properties/name // - /components/schemas/Device.Ipv4Loopback/properties/name // -// x-constraint: -// - /components/schemas/Device.Ipv4/properties/name -// - /components/schemas/Device.Ipv4Loopback/properties/name -// // Ipv4Name returns a string func (obj *rsvpLspIpv4Interface) Ipv4Name() string { @@ -62122,10 +61888,6 @@ func (obj *rsvpLspIpv4Interface) Ipv4Name() string { // - /components/schemas/Device.Ipv4/properties/name // - /components/schemas/Device.Ipv4Loopback/properties/name // -// x-constraint: -// - /components/schemas/Device.Ipv4/properties/name -// - /components/schemas/Device.Ipv4Loopback/properties/name -// // SetIpv4Name sets the string value in the RsvpLspIpv4Interface object func (obj *rsvpLspIpv4Interface) SetIpv4Name(value string) RsvpLspIpv4Interface { @@ -62531,10 +62293,6 @@ type FlowPort interface { // - /components/schemas/Port/properties/name // - /components/schemas/Lag/properties/name // -// x-constraint: -// - /components/schemas/Port/properties/name -// - /components/schemas/Lag/properties/name -// // TxName returns a string func (obj *flowPort) TxName() string { @@ -62548,10 +62306,6 @@ func (obj *flowPort) TxName() string { // - /components/schemas/Port/properties/name // - /components/schemas/Lag/properties/name // -// x-constraint: -// - /components/schemas/Port/properties/name -// - /components/schemas/Lag/properties/name -// // SetTxName sets the string value in the FlowPort object func (obj *flowPort) SetTxName(value string) FlowPort { @@ -62559,8 +62313,6 @@ func (obj *flowPort) SetTxName(value string) FlowPort { return obj } -// Deprecated: This property is deprecated in favor of property rx_names -// // Deprecated: This property is deprecated in favor of property rx_names // // The unique name of a port that is the intended receive port. @@ -62569,10 +62321,6 @@ func (obj *flowPort) SetTxName(value string) FlowPort { // - /components/schemas/Port/properties/name // - /components/schemas/Lag/properties/name // -// x-constraint: -// - /components/schemas/Port/properties/name -// - /components/schemas/Lag/properties/name -// // RxName returns a string func (obj *flowPort) RxName() string { @@ -62580,8 +62328,6 @@ func (obj *flowPort) RxName() string { } -// Deprecated: This property is deprecated in favor of property rx_names -// // Deprecated: This property is deprecated in favor of property rx_names // // The unique name of a port that is the intended receive port. @@ -62590,17 +62336,11 @@ func (obj *flowPort) RxName() string { // - /components/schemas/Port/properties/name // - /components/schemas/Lag/properties/name // -// x-constraint: -// - /components/schemas/Port/properties/name -// - /components/schemas/Lag/properties/name -// // RxName returns a string func (obj *flowPort) HasRxName() bool { return obj.obj.RxName != nil } -// Deprecated: This property is deprecated in favor of property rx_names -// // Deprecated: This property is deprecated in favor of property rx_names // // The unique name of a port that is the intended receive port. @@ -62609,10 +62349,6 @@ func (obj *flowPort) HasRxName() bool { // - /components/schemas/Port/properties/name // - /components/schemas/Lag/properties/name // -// x-constraint: -// - /components/schemas/Port/properties/name -// - /components/schemas/Lag/properties/name -// // SetRxName sets the string value in the FlowPort object func (obj *flowPort) SetRxName(value string) FlowPort { @@ -62626,10 +62362,6 @@ func (obj *flowPort) SetRxName(value string) FlowPort { // - /components/schemas/Port/properties/name // - /components/schemas/Lag/properties/name // -// x-constraint: -// - /components/schemas/Port/properties/name -// - /components/schemas/Lag/properties/name -// // RxNames returns a []string func (obj *flowPort) RxNames() []string { if obj.obj.RxNames == nil { @@ -62644,10 +62376,6 @@ func (obj *flowPort) RxNames() []string { // - /components/schemas/Port/properties/name // - /components/schemas/Lag/properties/name // -// x-constraint: -// - /components/schemas/Port/properties/name -// - /components/schemas/Lag/properties/name -// // SetRxNames sets the []string value in the FlowPort object func (obj *flowPort) SetRxNames(value []string) FlowPort { @@ -62989,17 +62717,6 @@ func (obj *flowRouter) SetMode(value FlowRouterModeEnum) FlowRouter { // - /components/schemas/Isis.V4RouteRange/properties/name // - /components/schemas/Isis.V6RouteRange/properties/name // -// x-constraint: -// - /components/schemas/Device.Ethernet/properties/name -// - /components/schemas/Device.Ipv4/properties/name -// - /components/schemas/Device.Ipv6/properties/name -// - /components/schemas/Bgp.V4RouteRange/properties/name -// - /components/schemas/Bgp.V6RouteRange/properties/name -// - /components/schemas/Bgp.CMacIpRange/properties/name -// - /components/schemas/Rsvp.LspIpv4Interface.P2PIngressIpv4Lsp/properties/name -// - /components/schemas/Isis.V4RouteRange/properties/name -// - /components/schemas/Isis.V6RouteRange/properties/name -// // TxNames returns a []string func (obj *flowRouter) TxNames() []string { if obj.obj.TxNames == nil { @@ -63021,17 +62738,6 @@ func (obj *flowRouter) TxNames() []string { // - /components/schemas/Isis.V4RouteRange/properties/name // - /components/schemas/Isis.V6RouteRange/properties/name // -// x-constraint: -// - /components/schemas/Device.Ethernet/properties/name -// - /components/schemas/Device.Ipv4/properties/name -// - /components/schemas/Device.Ipv6/properties/name -// - /components/schemas/Bgp.V4RouteRange/properties/name -// - /components/schemas/Bgp.V6RouteRange/properties/name -// - /components/schemas/Bgp.CMacIpRange/properties/name -// - /components/schemas/Rsvp.LspIpv4Interface.P2PIngressIpv4Lsp/properties/name -// - /components/schemas/Isis.V4RouteRange/properties/name -// - /components/schemas/Isis.V6RouteRange/properties/name -// // SetTxNames sets the []string value in the FlowRouter object func (obj *flowRouter) SetTxNames(value []string) FlowRouter { @@ -63056,17 +62762,6 @@ func (obj *flowRouter) SetTxNames(value []string) FlowRouter { // - /components/schemas/Isis.V4RouteRange/properties/name // - /components/schemas/Isis.V6RouteRange/properties/name // -// x-constraint: -// - /components/schemas/Device.Ethernet/properties/name -// - /components/schemas/Device.Ipv4/properties/name -// - /components/schemas/Device.Ipv6/properties/name -// - /components/schemas/Bgp.V4RouteRange/properties/name -// - /components/schemas/Bgp.V6RouteRange/properties/name -// - /components/schemas/Bgp.CMacIpRange/properties/name -// - /components/schemas/Rsvp.LspIpv4Interface.P2PEgressIpv4Lsp/properties/name -// - /components/schemas/Isis.V4RouteRange/properties/name -// - /components/schemas/Isis.V6RouteRange/properties/name -// // RxNames returns a []string func (obj *flowRouter) RxNames() []string { if obj.obj.RxNames == nil { @@ -63088,17 +62783,6 @@ func (obj *flowRouter) RxNames() []string { // - /components/schemas/Isis.V4RouteRange/properties/name // - /components/schemas/Isis.V6RouteRange/properties/name // -// x-constraint: -// - /components/schemas/Device.Ethernet/properties/name -// - /components/schemas/Device.Ipv4/properties/name -// - /components/schemas/Device.Ipv6/properties/name -// - /components/schemas/Bgp.V4RouteRange/properties/name -// - /components/schemas/Bgp.V6RouteRange/properties/name -// - /components/schemas/Bgp.CMacIpRange/properties/name -// - /components/schemas/Rsvp.LspIpv4Interface.P2PEgressIpv4Lsp/properties/name -// - /components/schemas/Isis.V4RouteRange/properties/name -// - /components/schemas/Isis.V6RouteRange/properties/name -// // SetRxNames sets the []string value in the FlowRouter object func (obj *flowRouter) SetRxNames(value []string) FlowRouter { @@ -73221,29 +72905,36 @@ func (obj *flowMpls) setDefault() { } -// ***** FlowSizeIncrement ***** -type flowSizeIncrement struct { +// ***** FlowRsvp ***** +type flowRsvp struct { validation - obj *otg.FlowSizeIncrement -} - -func NewFlowSizeIncrement() FlowSizeIncrement { - obj := flowSizeIncrement{obj: &otg.FlowSizeIncrement{}} + obj *otg.FlowRsvp + versionHolder PatternFlowRsvpVersion + flagHolder FlowRSVPFlag + rsvpChecksumHolder PatternFlowRsvpRsvpChecksum + timeToLiveHolder PatternFlowRsvpTimeToLive + reservedHolder PatternFlowRsvpReserved + rsvpLengthHolder FlowRSVPLength + messageTypeHolder FlowRSVPMessage +} + +func NewFlowRsvp() FlowRsvp { + obj := flowRsvp{obj: &otg.FlowRsvp{}} obj.setDefault() return &obj } -func (obj *flowSizeIncrement) Msg() *otg.FlowSizeIncrement { +func (obj *flowRsvp) Msg() *otg.FlowRsvp { return obj.obj } -func (obj *flowSizeIncrement) SetMsg(msg *otg.FlowSizeIncrement) FlowSizeIncrement { - +func (obj *flowRsvp) SetMsg(msg *otg.FlowRsvp) FlowRsvp { + obj.setNil() proto.Merge(obj.obj, msg) return obj } -func (obj *flowSizeIncrement) ToProto() (*otg.FlowSizeIncrement, error) { +func (obj *flowRsvp) ToProto() (*otg.FlowRsvp, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -73251,7 +72942,7 @@ func (obj *flowSizeIncrement) ToProto() (*otg.FlowSizeIncrement, error) { return obj.Msg(), nil } -func (obj *flowSizeIncrement) FromProto(msg *otg.FlowSizeIncrement) (FlowSizeIncrement, error) { +func (obj *flowRsvp) FromProto(msg *otg.FlowRsvp) (FlowRsvp, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -73260,7 +72951,7 @@ func (obj *flowSizeIncrement) FromProto(msg *otg.FlowSizeIncrement) (FlowSizeInc return newObj, nil } -func (obj *flowSizeIncrement) ToPbText() (string, error) { +func (obj *flowRsvp) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -73272,12 +72963,12 @@ func (obj *flowSizeIncrement) ToPbText() (string, error) { return string(protoMarshal), nil } -func (obj *flowSizeIncrement) FromPbText(value string) error { +func (obj *flowRsvp) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj } - + obj.setNil() vErr := obj.validateToAndFrom() if vErr != nil { return vErr @@ -73285,7 +72976,7 @@ func (obj *flowSizeIncrement) FromPbText(value string) error { return retObj } -func (obj *flowSizeIncrement) ToYaml() (string, error) { +func (obj *flowRsvp) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -73306,7 +72997,7 @@ func (obj *flowSizeIncrement) ToYaml() (string, error) { return string(data), nil } -func (obj *flowSizeIncrement) FromYaml(value string) error { +func (obj *flowRsvp) FromYaml(value string) error { if value == "" { value = "{}" } @@ -73323,7 +73014,7 @@ func (obj *flowSizeIncrement) FromYaml(value string) error { return fmt.Errorf("unmarshal error %s", strings.Replace( uError.Error(), "\u00a0", " ", -1)[7:]) } - + obj.setNil() vErr := obj.validateToAndFrom() if vErr != nil { return vErr @@ -73331,7 +73022,7 @@ func (obj *flowSizeIncrement) FromYaml(value string) error { return nil } -func (obj *flowSizeIncrement) ToJson() (string, error) { +func (obj *flowRsvp) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -73349,7 +73040,7 @@ func (obj *flowSizeIncrement) ToJson() (string, error) { return string(data), nil } -func (obj *flowSizeIncrement) FromJson(value string) error { +func (obj *flowRsvp) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -73362,7 +73053,7 @@ func (obj *flowSizeIncrement) FromJson(value string) error { return fmt.Errorf("unmarshal error %s", strings.Replace( uError.Error(), "\u00a0", " ", -1)[7:]) } - + obj.setNil() err := obj.validateToAndFrom() if err != nil { return err @@ -73370,19 +73061,19 @@ func (obj *flowSizeIncrement) FromJson(value string) error { return nil } -func (obj *flowSizeIncrement) validateToAndFrom() error { +func (obj *flowRsvp) validateToAndFrom() error { // emptyVars() obj.validateObj(&obj.validation, true) return obj.validationResult() } -func (obj *flowSizeIncrement) Validate() error { +func (obj *flowRsvp) Validate() error { // emptyVars() obj.validateObj(&obj.validation, false) return obj.validationResult() } -func (obj *flowSizeIncrement) String() string { +func (obj *flowRsvp) String() string { str, err := obj.ToYaml() if err != nil { return err.Error() @@ -73390,12 +73081,12 @@ func (obj *flowSizeIncrement) String() string { return str } -func (obj *flowSizeIncrement) Clone() (FlowSizeIncrement, error) { +func (obj *flowRsvp) Clone() (FlowRsvp, error) { vErr := obj.Validate() if vErr != nil { return nil, vErr } - newObj := NewFlowSizeIncrement() + newObj := NewFlowRsvp() data, err := proto.Marshal(obj.Msg()) if err != nil { return nil, err @@ -73407,190 +73098,377 @@ func (obj *flowSizeIncrement) Clone() (FlowSizeIncrement, error) { return newObj, nil } -// FlowSizeIncrement is frame size that increments from a starting size to -// an ending size incrementing by a step size. -type FlowSizeIncrement interface { +func (obj *flowRsvp) setNil() { + obj.versionHolder = nil + obj.flagHolder = nil + obj.rsvpChecksumHolder = nil + obj.timeToLiveHolder = nil + obj.reservedHolder = nil + obj.rsvpLengthHolder = nil + obj.messageTypeHolder = nil + obj.validationErrors = nil + obj.warnings = nil + obj.constraints = make(map[string]map[string]Constraints) +} + +// FlowRsvp is rSVP packet header as defined in RFC2205 and RFC3209. Currently only supported message type is "path" with mandatory objects and sub-objects. +type FlowRsvp interface { Validation - // Msg marshals FlowSizeIncrement to protobuf object *otg.FlowSizeIncrement + // Msg marshals FlowRsvp to protobuf object *otg.FlowRsvp // and doesn't set defaults - Msg() *otg.FlowSizeIncrement - // SetMsg unmarshals FlowSizeIncrement from protobuf object *otg.FlowSizeIncrement + Msg() *otg.FlowRsvp + // SetMsg unmarshals FlowRsvp from protobuf object *otg.FlowRsvp // and doesn't set defaults - SetMsg(*otg.FlowSizeIncrement) FlowSizeIncrement - // ToProto marshals FlowSizeIncrement to protobuf object *otg.FlowSizeIncrement - ToProto() (*otg.FlowSizeIncrement, error) - // ToPbText marshals FlowSizeIncrement to protobuf text + SetMsg(*otg.FlowRsvp) FlowRsvp + // ToProto marshals FlowRsvp to protobuf object *otg.FlowRsvp + ToProto() (*otg.FlowRsvp, error) + // ToPbText marshals FlowRsvp to protobuf text ToPbText() (string, error) - // ToYaml marshals FlowSizeIncrement to YAML text + // ToYaml marshals FlowRsvp to YAML text ToYaml() (string, error) - // ToJson marshals FlowSizeIncrement to JSON text + // ToJson marshals FlowRsvp to JSON text ToJson() (string, error) - // FromProto unmarshals FlowSizeIncrement from protobuf object *otg.FlowSizeIncrement - FromProto(msg *otg.FlowSizeIncrement) (FlowSizeIncrement, error) - // FromPbText unmarshals FlowSizeIncrement from protobuf text + // FromProto unmarshals FlowRsvp from protobuf object *otg.FlowRsvp + FromProto(msg *otg.FlowRsvp) (FlowRsvp, error) + // FromPbText unmarshals FlowRsvp from protobuf text FromPbText(value string) error - // FromYaml unmarshals FlowSizeIncrement from YAML text + // FromYaml unmarshals FlowRsvp from YAML text FromYaml(value string) error - // FromJson unmarshals FlowSizeIncrement from JSON text + // FromJson unmarshals FlowRsvp from JSON text FromJson(value string) error - // Validate validates FlowSizeIncrement + // Validate validates FlowRsvp Validate() error // A stringer function String() string // Clones the object - Clone() (FlowSizeIncrement, error) + Clone() (FlowRsvp, error) validateToAndFrom() error validateObj(vObj *validation, set_default bool) setDefault() - // Start returns uint32, set in FlowSizeIncrement. - Start() uint32 - // SetStart assigns uint32 provided by user to FlowSizeIncrement - SetStart(value uint32) FlowSizeIncrement - // HasStart checks if Start has been set in FlowSizeIncrement - HasStart() bool - // End returns uint32, set in FlowSizeIncrement. - End() uint32 - // SetEnd assigns uint32 provided by user to FlowSizeIncrement - SetEnd(value uint32) FlowSizeIncrement - // HasEnd checks if End has been set in FlowSizeIncrement - HasEnd() bool - // Step returns uint32, set in FlowSizeIncrement. - Step() uint32 - // SetStep assigns uint32 provided by user to FlowSizeIncrement - SetStep(value uint32) FlowSizeIncrement - // HasStep checks if Step has been set in FlowSizeIncrement - HasStep() bool + // Version returns PatternFlowRsvpVersion, set in FlowRsvp. + // PatternFlowRsvpVersion is protocol Version number. + Version() PatternFlowRsvpVersion + // SetVersion assigns PatternFlowRsvpVersion provided by user to FlowRsvp. + // PatternFlowRsvpVersion is protocol Version number. + SetVersion(value PatternFlowRsvpVersion) FlowRsvp + // HasVersion checks if Version has been set in FlowRsvp + HasVersion() bool + // Flag returns FlowRSVPFlag, set in FlowRsvp. + // FlowRSVPFlag is description is TBD + Flag() FlowRSVPFlag + // SetFlag assigns FlowRSVPFlag provided by user to FlowRsvp. + // FlowRSVPFlag is description is TBD + SetFlag(value FlowRSVPFlag) FlowRsvp + // HasFlag checks if Flag has been set in FlowRsvp + HasFlag() bool + // RsvpChecksum returns PatternFlowRsvpRsvpChecksum, set in FlowRsvp. + // PatternFlowRsvpRsvpChecksum is the one's complement of the one's complement sum of the message, with the checksum field replaced by zero for the purpose of computing the checksum. An all-zero value means that no checksum was transmitted. + RsvpChecksum() PatternFlowRsvpRsvpChecksum + // SetRsvpChecksum assigns PatternFlowRsvpRsvpChecksum provided by user to FlowRsvp. + // PatternFlowRsvpRsvpChecksum is the one's complement of the one's complement sum of the message, with the checksum field replaced by zero for the purpose of computing the checksum. An all-zero value means that no checksum was transmitted. + SetRsvpChecksum(value PatternFlowRsvpRsvpChecksum) FlowRsvp + // HasRsvpChecksum checks if RsvpChecksum has been set in FlowRsvp + HasRsvpChecksum() bool + // TimeToLive returns PatternFlowRsvpTimeToLive, set in FlowRsvp. + // PatternFlowRsvpTimeToLive is the IP time-to-live(TTL) value with which the message was sent. + TimeToLive() PatternFlowRsvpTimeToLive + // SetTimeToLive assigns PatternFlowRsvpTimeToLive provided by user to FlowRsvp. + // PatternFlowRsvpTimeToLive is the IP time-to-live(TTL) value with which the message was sent. + SetTimeToLive(value PatternFlowRsvpTimeToLive) FlowRsvp + // HasTimeToLive checks if TimeToLive has been set in FlowRsvp + HasTimeToLive() bool + // Reserved returns PatternFlowRsvpReserved, set in FlowRsvp. + // PatternFlowRsvpReserved is reserved + Reserved() PatternFlowRsvpReserved + // SetReserved assigns PatternFlowRsvpReserved provided by user to FlowRsvp. + // PatternFlowRsvpReserved is reserved + SetReserved(value PatternFlowRsvpReserved) FlowRsvp + // HasReserved checks if Reserved has been set in FlowRsvp + HasReserved() bool + // RsvpLength returns FlowRSVPLength, set in FlowRsvp. + // FlowRSVPLength is description is TBD + RsvpLength() FlowRSVPLength + // SetRsvpLength assigns FlowRSVPLength provided by user to FlowRsvp. + // FlowRSVPLength is description is TBD + SetRsvpLength(value FlowRSVPLength) FlowRsvp + // HasRsvpLength checks if RsvpLength has been set in FlowRsvp + HasRsvpLength() bool + // MessageType returns FlowRSVPMessage, set in FlowRsvp. + // FlowRSVPMessage is description is TBD + MessageType() FlowRSVPMessage + // SetMessageType assigns FlowRSVPMessage provided by user to FlowRsvp. + // FlowRSVPMessage is description is TBD + SetMessageType(value FlowRSVPMessage) FlowRsvp + // HasMessageType checks if MessageType has been set in FlowRsvp + HasMessageType() bool + setNil() } -// Starting frame size in bytes -// Start returns a uint32 -func (obj *flowSizeIncrement) Start() uint32 { +// description is TBD +// Version returns a PatternFlowRsvpVersion +func (obj *flowRsvp) Version() PatternFlowRsvpVersion { + if obj.obj.Version == nil { + obj.obj.Version = NewPatternFlowRsvpVersion().Msg() + } + if obj.versionHolder == nil { + obj.versionHolder = &patternFlowRsvpVersion{obj: obj.obj.Version} + } + return obj.versionHolder +} - return *obj.obj.Start +// description is TBD +// Version returns a PatternFlowRsvpVersion +func (obj *flowRsvp) HasVersion() bool { + return obj.obj.Version != nil +} + +// description is TBD +// SetVersion sets the PatternFlowRsvpVersion value in the FlowRsvp object +func (obj *flowRsvp) SetVersion(value PatternFlowRsvpVersion) FlowRsvp { + + obj.versionHolder = nil + obj.obj.Version = value.Msg() + return obj } -// Starting frame size in bytes -// Start returns a uint32 -func (obj *flowSizeIncrement) HasStart() bool { - return obj.obj.Start != nil +// Flag, 0x01-0x08: Reserved. +// Flag returns a FlowRSVPFlag +func (obj *flowRsvp) Flag() FlowRSVPFlag { + if obj.obj.Flag == nil { + obj.obj.Flag = NewFlowRSVPFlag().Msg() + } + if obj.flagHolder == nil { + obj.flagHolder = &flowRSVPFlag{obj: obj.obj.Flag} + } + return obj.flagHolder } -// Starting frame size in bytes -// SetStart sets the uint32 value in the FlowSizeIncrement object -func (obj *flowSizeIncrement) SetStart(value uint32) FlowSizeIncrement { +// Flag, 0x01-0x08: Reserved. +// Flag returns a FlowRSVPFlag +func (obj *flowRsvp) HasFlag() bool { + return obj.obj.Flag != nil +} + +// Flag, 0x01-0x08: Reserved. +// SetFlag sets the FlowRSVPFlag value in the FlowRsvp object +func (obj *flowRsvp) SetFlag(value FlowRSVPFlag) FlowRsvp { + + obj.flagHolder = nil + obj.obj.Flag = value.Msg() - obj.obj.Start = &value return obj } -// Ending frame size in bytes -// End returns a uint32 -func (obj *flowSizeIncrement) End() uint32 { +// description is TBD +// RsvpChecksum returns a PatternFlowRsvpRsvpChecksum +func (obj *flowRsvp) RsvpChecksum() PatternFlowRsvpRsvpChecksum { + if obj.obj.RsvpChecksum == nil { + obj.obj.RsvpChecksum = NewPatternFlowRsvpRsvpChecksum().Msg() + } + if obj.rsvpChecksumHolder == nil { + obj.rsvpChecksumHolder = &patternFlowRsvpRsvpChecksum{obj: obj.obj.RsvpChecksum} + } + return obj.rsvpChecksumHolder +} - return *obj.obj.End +// description is TBD +// RsvpChecksum returns a PatternFlowRsvpRsvpChecksum +func (obj *flowRsvp) HasRsvpChecksum() bool { + return obj.obj.RsvpChecksum != nil +} +// description is TBD +// SetRsvpChecksum sets the PatternFlowRsvpRsvpChecksum value in the FlowRsvp object +func (obj *flowRsvp) SetRsvpChecksum(value PatternFlowRsvpRsvpChecksum) FlowRsvp { + + obj.rsvpChecksumHolder = nil + obj.obj.RsvpChecksum = value.Msg() + + return obj } -// Ending frame size in bytes -// End returns a uint32 -func (obj *flowSizeIncrement) HasEnd() bool { - return obj.obj.End != nil +// description is TBD +// TimeToLive returns a PatternFlowRsvpTimeToLive +func (obj *flowRsvp) TimeToLive() PatternFlowRsvpTimeToLive { + if obj.obj.TimeToLive == nil { + obj.obj.TimeToLive = NewPatternFlowRsvpTimeToLive().Msg() + } + if obj.timeToLiveHolder == nil { + obj.timeToLiveHolder = &patternFlowRsvpTimeToLive{obj: obj.obj.TimeToLive} + } + return obj.timeToLiveHolder } -// Ending frame size in bytes -// SetEnd sets the uint32 value in the FlowSizeIncrement object -func (obj *flowSizeIncrement) SetEnd(value uint32) FlowSizeIncrement { +// description is TBD +// TimeToLive returns a PatternFlowRsvpTimeToLive +func (obj *flowRsvp) HasTimeToLive() bool { + return obj.obj.TimeToLive != nil +} + +// description is TBD +// SetTimeToLive sets the PatternFlowRsvpTimeToLive value in the FlowRsvp object +func (obj *flowRsvp) SetTimeToLive(value PatternFlowRsvpTimeToLive) FlowRsvp { + + obj.timeToLiveHolder = nil + obj.obj.TimeToLive = value.Msg() - obj.obj.End = &value return obj } -// Step frame size in bytes -// Step returns a uint32 -func (obj *flowSizeIncrement) Step() uint32 { +// description is TBD +// Reserved returns a PatternFlowRsvpReserved +func (obj *flowRsvp) Reserved() PatternFlowRsvpReserved { + if obj.obj.Reserved == nil { + obj.obj.Reserved = NewPatternFlowRsvpReserved().Msg() + } + if obj.reservedHolder == nil { + obj.reservedHolder = &patternFlowRsvpReserved{obj: obj.obj.Reserved} + } + return obj.reservedHolder +} - return *obj.obj.Step +// description is TBD +// Reserved returns a PatternFlowRsvpReserved +func (obj *flowRsvp) HasReserved() bool { + return obj.obj.Reserved != nil +} + +// description is TBD +// SetReserved sets the PatternFlowRsvpReserved value in the FlowRsvp object +func (obj *flowRsvp) SetReserved(value PatternFlowRsvpReserved) FlowRsvp { + + obj.reservedHolder = nil + obj.obj.Reserved = value.Msg() + return obj } -// Step frame size in bytes -// Step returns a uint32 -func (obj *flowSizeIncrement) HasStep() bool { - return obj.obj.Step != nil +// The sum of the lengths of the common header and all objects included in the message. +// RsvpLength returns a FlowRSVPLength +func (obj *flowRsvp) RsvpLength() FlowRSVPLength { + if obj.obj.RsvpLength == nil { + obj.obj.RsvpLength = NewFlowRSVPLength().Msg() + } + if obj.rsvpLengthHolder == nil { + obj.rsvpLengthHolder = &flowRSVPLength{obj: obj.obj.RsvpLength} + } + return obj.rsvpLengthHolder } -// Step frame size in bytes -// SetStep sets the uint32 value in the FlowSizeIncrement object -func (obj *flowSizeIncrement) SetStep(value uint32) FlowSizeIncrement { +// The sum of the lengths of the common header and all objects included in the message. +// RsvpLength returns a FlowRSVPLength +func (obj *flowRsvp) HasRsvpLength() bool { + return obj.obj.RsvpLength != nil +} + +// The sum of the lengths of the common header and all objects included in the message. +// SetRsvpLength sets the FlowRSVPLength value in the FlowRsvp object +func (obj *flowRsvp) SetRsvpLength(value FlowRSVPLength) FlowRsvp { + + obj.rsvpLengthHolder = nil + obj.obj.RsvpLength = value.Msg() - obj.obj.Step = &value return obj } -func (obj *flowSizeIncrement) validateObj(vObj *validation, set_default bool) { +// An 8-bit number that identifies the function of the RSVP message. There are aound 20 message types is defined https://www.iana.org/assignments/rsvp-parameters/rsvp-parameters.xhtml#rsvp-parameters-2 . Among Those we are presently supporting "path"(value: 1) message type. +// MessageType returns a FlowRSVPMessage +func (obj *flowRsvp) MessageType() FlowRSVPMessage { + if obj.obj.MessageType == nil { + obj.obj.MessageType = NewFlowRSVPMessage().Msg() + } + if obj.messageTypeHolder == nil { + obj.messageTypeHolder = &flowRSVPMessage{obj: obj.obj.MessageType} + } + return obj.messageTypeHolder +} + +// An 8-bit number that identifies the function of the RSVP message. There are aound 20 message types is defined https://www.iana.org/assignments/rsvp-parameters/rsvp-parameters.xhtml#rsvp-parameters-2 . Among Those we are presently supporting "path"(value: 1) message type. +// MessageType returns a FlowRSVPMessage +func (obj *flowRsvp) HasMessageType() bool { + return obj.obj.MessageType != nil +} + +// An 8-bit number that identifies the function of the RSVP message. There are aound 20 message types is defined https://www.iana.org/assignments/rsvp-parameters/rsvp-parameters.xhtml#rsvp-parameters-2 . Among Those we are presently supporting "path"(value: 1) message type. +// SetMessageType sets the FlowRSVPMessage value in the FlowRsvp object +func (obj *flowRsvp) SetMessageType(value FlowRSVPMessage) FlowRsvp { + + obj.messageTypeHolder = nil + obj.obj.MessageType = value.Msg() + + return obj +} + +func (obj *flowRsvp) validateObj(vObj *validation, set_default bool) { if set_default { obj.setDefault() } - if obj.obj.Start != nil { + if obj.obj.Version != nil { - if *obj.obj.Start < 1 || *obj.obj.Start > 4294967295 { - vObj.validationErrors = append( - vObj.validationErrors, - fmt.Sprintf("1 <= FlowSizeIncrement.Start <= 4294967295 but Got %d", *obj.obj.Start)) - } + obj.Version().validateObj(vObj, set_default) + } + + if obj.obj.Flag != nil { + obj.Flag().validateObj(vObj, set_default) } - if obj.obj.End != nil { + if obj.obj.RsvpChecksum != nil { - if *obj.obj.End < 64 || *obj.obj.End > 4294967295 { - vObj.validationErrors = append( - vObj.validationErrors, - fmt.Sprintf("64 <= FlowSizeIncrement.End <= 4294967295 but Got %d", *obj.obj.End)) - } + obj.RsvpChecksum().validateObj(vObj, set_default) + } + + if obj.obj.TimeToLive != nil { + obj.TimeToLive().validateObj(vObj, set_default) } -} + if obj.obj.Reserved != nil { -func (obj *flowSizeIncrement) setDefault() { - if obj.obj.Start == nil { - obj.SetStart(64) + obj.Reserved().validateObj(vObj, set_default) } - if obj.obj.End == nil { - obj.SetEnd(1518) + + if obj.obj.RsvpLength != nil { + + obj.RsvpLength().validateObj(vObj, set_default) } - if obj.obj.Step == nil { - obj.SetStep(1) + + if obj.obj.MessageType != nil { + + obj.MessageType().validateObj(vObj, set_default) } } -// ***** FlowSizeRandom ***** -type flowSizeRandom struct { +func (obj *flowRsvp) setDefault() { + +} + +// ***** FlowSizeIncrement ***** +type flowSizeIncrement struct { validation - obj *otg.FlowSizeRandom + obj *otg.FlowSizeIncrement } -func NewFlowSizeRandom() FlowSizeRandom { - obj := flowSizeRandom{obj: &otg.FlowSizeRandom{}} +func NewFlowSizeIncrement() FlowSizeIncrement { + obj := flowSizeIncrement{obj: &otg.FlowSizeIncrement{}} obj.setDefault() return &obj } -func (obj *flowSizeRandom) Msg() *otg.FlowSizeRandom { +func (obj *flowSizeIncrement) Msg() *otg.FlowSizeIncrement { return obj.obj } -func (obj *flowSizeRandom) SetMsg(msg *otg.FlowSizeRandom) FlowSizeRandom { +func (obj *flowSizeIncrement) SetMsg(msg *otg.FlowSizeIncrement) FlowSizeIncrement { proto.Merge(obj.obj, msg) return obj } -func (obj *flowSizeRandom) ToProto() (*otg.FlowSizeRandom, error) { +func (obj *flowSizeIncrement) ToProto() (*otg.FlowSizeIncrement, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -73598,7 +73476,7 @@ func (obj *flowSizeRandom) ToProto() (*otg.FlowSizeRandom, error) { return obj.Msg(), nil } -func (obj *flowSizeRandom) FromProto(msg *otg.FlowSizeRandom) (FlowSizeRandom, error) { +func (obj *flowSizeIncrement) FromProto(msg *otg.FlowSizeIncrement) (FlowSizeIncrement, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -73607,7 +73485,7 @@ func (obj *flowSizeRandom) FromProto(msg *otg.FlowSizeRandom) (FlowSizeRandom, e return newObj, nil } -func (obj *flowSizeRandom) ToPbText() (string, error) { +func (obj *flowSizeIncrement) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -73619,7 +73497,7 @@ func (obj *flowSizeRandom) ToPbText() (string, error) { return string(protoMarshal), nil } -func (obj *flowSizeRandom) FromPbText(value string) error { +func (obj *flowSizeIncrement) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj @@ -73632,7 +73510,7 @@ func (obj *flowSizeRandom) FromPbText(value string) error { return retObj } -func (obj *flowSizeRandom) ToYaml() (string, error) { +func (obj *flowSizeIncrement) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -73653,7 +73531,354 @@ func (obj *flowSizeRandom) ToYaml() (string, error) { return string(data), nil } -func (obj *flowSizeRandom) FromYaml(value string) error { +func (obj *flowSizeIncrement) FromYaml(value string) error { + if value == "" { + value = "{}" + } + data, err := yaml.YAMLToJSON([]byte(value)) + if err != nil { + return err + } + opts := protojson.UnmarshalOptions{ + AllowPartial: true, + DiscardUnknown: false, + } + uError := opts.Unmarshal([]byte(data), obj.Msg()) + if uError != nil { + return fmt.Errorf("unmarshal error %s", strings.Replace( + uError.Error(), "\u00a0", " ", -1)[7:]) + } + + vErr := obj.validateToAndFrom() + if vErr != nil { + return vErr + } + return nil +} + +func (obj *flowSizeIncrement) ToJson() (string, error) { + vErr := obj.validateToAndFrom() + if vErr != nil { + return "", vErr + } + opts := protojson.MarshalOptions{ + UseProtoNames: true, + AllowPartial: true, + EmitUnpopulated: false, + Indent: " ", + } + data, err := opts.Marshal(obj.Msg()) + if err != nil { + return "", err + } + return string(data), nil +} + +func (obj *flowSizeIncrement) FromJson(value string) error { + opts := protojson.UnmarshalOptions{ + AllowPartial: true, + DiscardUnknown: false, + } + if value == "" { + value = "{}" + } + uError := opts.Unmarshal([]byte(value), obj.Msg()) + if uError != nil { + return fmt.Errorf("unmarshal error %s", strings.Replace( + uError.Error(), "\u00a0", " ", -1)[7:]) + } + + err := obj.validateToAndFrom() + if err != nil { + return err + } + return nil +} + +func (obj *flowSizeIncrement) validateToAndFrom() error { + // emptyVars() + obj.validateObj(&obj.validation, true) + return obj.validationResult() +} + +func (obj *flowSizeIncrement) Validate() error { + // emptyVars() + obj.validateObj(&obj.validation, false) + return obj.validationResult() +} + +func (obj *flowSizeIncrement) String() string { + str, err := obj.ToYaml() + if err != nil { + return err.Error() + } + return str +} + +func (obj *flowSizeIncrement) Clone() (FlowSizeIncrement, error) { + vErr := obj.Validate() + if vErr != nil { + return nil, vErr + } + newObj := NewFlowSizeIncrement() + data, err := proto.Marshal(obj.Msg()) + if err != nil { + return nil, err + } + pbErr := proto.Unmarshal(data, newObj.Msg()) + if pbErr != nil { + return nil, pbErr + } + return newObj, nil +} + +// FlowSizeIncrement is frame size that increments from a starting size to +// an ending size incrementing by a step size. +type FlowSizeIncrement interface { + Validation + // Msg marshals FlowSizeIncrement to protobuf object *otg.FlowSizeIncrement + // and doesn't set defaults + Msg() *otg.FlowSizeIncrement + // SetMsg unmarshals FlowSizeIncrement from protobuf object *otg.FlowSizeIncrement + // and doesn't set defaults + SetMsg(*otg.FlowSizeIncrement) FlowSizeIncrement + // ToProto marshals FlowSizeIncrement to protobuf object *otg.FlowSizeIncrement + ToProto() (*otg.FlowSizeIncrement, error) + // ToPbText marshals FlowSizeIncrement to protobuf text + ToPbText() (string, error) + // ToYaml marshals FlowSizeIncrement to YAML text + ToYaml() (string, error) + // ToJson marshals FlowSizeIncrement to JSON text + ToJson() (string, error) + // FromProto unmarshals FlowSizeIncrement from protobuf object *otg.FlowSizeIncrement + FromProto(msg *otg.FlowSizeIncrement) (FlowSizeIncrement, error) + // FromPbText unmarshals FlowSizeIncrement from protobuf text + FromPbText(value string) error + // FromYaml unmarshals FlowSizeIncrement from YAML text + FromYaml(value string) error + // FromJson unmarshals FlowSizeIncrement from JSON text + FromJson(value string) error + // Validate validates FlowSizeIncrement + Validate() error + // A stringer function + String() string + // Clones the object + Clone() (FlowSizeIncrement, error) + validateToAndFrom() error + validateObj(vObj *validation, set_default bool) + setDefault() + // Start returns uint32, set in FlowSizeIncrement. + Start() uint32 + // SetStart assigns uint32 provided by user to FlowSizeIncrement + SetStart(value uint32) FlowSizeIncrement + // HasStart checks if Start has been set in FlowSizeIncrement + HasStart() bool + // End returns uint32, set in FlowSizeIncrement. + End() uint32 + // SetEnd assigns uint32 provided by user to FlowSizeIncrement + SetEnd(value uint32) FlowSizeIncrement + // HasEnd checks if End has been set in FlowSizeIncrement + HasEnd() bool + // Step returns uint32, set in FlowSizeIncrement. + Step() uint32 + // SetStep assigns uint32 provided by user to FlowSizeIncrement + SetStep(value uint32) FlowSizeIncrement + // HasStep checks if Step has been set in FlowSizeIncrement + HasStep() bool +} + +// Starting frame size in bytes +// Start returns a uint32 +func (obj *flowSizeIncrement) Start() uint32 { + + return *obj.obj.Start + +} + +// Starting frame size in bytes +// Start returns a uint32 +func (obj *flowSizeIncrement) HasStart() bool { + return obj.obj.Start != nil +} + +// Starting frame size in bytes +// SetStart sets the uint32 value in the FlowSizeIncrement object +func (obj *flowSizeIncrement) SetStart(value uint32) FlowSizeIncrement { + + obj.obj.Start = &value + return obj +} + +// Ending frame size in bytes +// End returns a uint32 +func (obj *flowSizeIncrement) End() uint32 { + + return *obj.obj.End + +} + +// Ending frame size in bytes +// End returns a uint32 +func (obj *flowSizeIncrement) HasEnd() bool { + return obj.obj.End != nil +} + +// Ending frame size in bytes +// SetEnd sets the uint32 value in the FlowSizeIncrement object +func (obj *flowSizeIncrement) SetEnd(value uint32) FlowSizeIncrement { + + obj.obj.End = &value + return obj +} + +// Step frame size in bytes +// Step returns a uint32 +func (obj *flowSizeIncrement) Step() uint32 { + + return *obj.obj.Step + +} + +// Step frame size in bytes +// Step returns a uint32 +func (obj *flowSizeIncrement) HasStep() bool { + return obj.obj.Step != nil +} + +// Step frame size in bytes +// SetStep sets the uint32 value in the FlowSizeIncrement object +func (obj *flowSizeIncrement) SetStep(value uint32) FlowSizeIncrement { + + obj.obj.Step = &value + return obj +} + +func (obj *flowSizeIncrement) validateObj(vObj *validation, set_default bool) { + if set_default { + obj.setDefault() + } + + if obj.obj.Start != nil { + + if *obj.obj.Start < 1 || *obj.obj.Start > 4294967295 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("1 <= FlowSizeIncrement.Start <= 4294967295 but Got %d", *obj.obj.Start)) + } + + } + + if obj.obj.End != nil { + + if *obj.obj.End < 64 || *obj.obj.End > 4294967295 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("64 <= FlowSizeIncrement.End <= 4294967295 but Got %d", *obj.obj.End)) + } + + } + +} + +func (obj *flowSizeIncrement) setDefault() { + if obj.obj.Start == nil { + obj.SetStart(64) + } + if obj.obj.End == nil { + obj.SetEnd(1518) + } + if obj.obj.Step == nil { + obj.SetStep(1) + } + +} + +// ***** FlowSizeRandom ***** +type flowSizeRandom struct { + validation + obj *otg.FlowSizeRandom +} + +func NewFlowSizeRandom() FlowSizeRandom { + obj := flowSizeRandom{obj: &otg.FlowSizeRandom{}} + obj.setDefault() + return &obj +} + +func (obj *flowSizeRandom) Msg() *otg.FlowSizeRandom { + return obj.obj +} + +func (obj *flowSizeRandom) SetMsg(msg *otg.FlowSizeRandom) FlowSizeRandom { + + proto.Merge(obj.obj, msg) + return obj +} + +func (obj *flowSizeRandom) ToProto() (*otg.FlowSizeRandom, error) { + err := obj.validateToAndFrom() + if err != nil { + return nil, err + } + return obj.Msg(), nil +} + +func (obj *flowSizeRandom) FromProto(msg *otg.FlowSizeRandom) (FlowSizeRandom, error) { + newObj := obj.SetMsg(msg) + err := newObj.validateToAndFrom() + if err != nil { + return nil, err + } + return newObj, nil +} + +func (obj *flowSizeRandom) ToPbText() (string, error) { + vErr := obj.validateToAndFrom() + if vErr != nil { + return "", vErr + } + protoMarshal, err := proto.Marshal(obj.Msg()) + if err != nil { + return "", err + } + return string(protoMarshal), nil +} + +func (obj *flowSizeRandom) FromPbText(value string) error { + retObj := proto.Unmarshal([]byte(value), obj.Msg()) + if retObj != nil { + return retObj + } + + vErr := obj.validateToAndFrom() + if vErr != nil { + return vErr + } + return retObj +} + +func (obj *flowSizeRandom) ToYaml() (string, error) { + vErr := obj.validateToAndFrom() + if vErr != nil { + return "", vErr + } + opts := protojson.MarshalOptions{ + UseProtoNames: true, + AllowPartial: true, + EmitUnpopulated: false, + } + data, err := opts.Marshal(obj.Msg()) + if err != nil { + return "", err + } + data, err = yaml.JSONToYAML(data) + if err != nil { + return "", err + } + return string(data), nil +} + +func (obj *flowSizeRandom) FromYaml(value string) error { if value == "" { value = "{}" } @@ -77644,9 +77869,6 @@ type StateProtocolLacpAdmin interface { // x-constraint: // - /components/schemas/Port/properties/name // -// x-constraint: -// - /components/schemas/Port/properties/name -// // LagMemberNames returns a []string func (obj *stateProtocolLacpAdmin) LagMemberNames() []string { if obj.obj.LagMemberNames == nil { @@ -77660,9 +77882,6 @@ func (obj *stateProtocolLacpAdmin) LagMemberNames() []string { // x-constraint: // - /components/schemas/Port/properties/name // -// x-constraint: -// - /components/schemas/Port/properties/name -// // SetLagMemberNames sets the []string value in the StateProtocolLacpAdmin object func (obj *stateProtocolLacpAdmin) SetLagMemberNames(value []string) StateProtocolLacpAdmin { @@ -77952,9 +78171,6 @@ type StateProtocolLacpMemberPorts interface { // x-constraint: // - /components/schemas/Port/properties/name // -// x-constraint: -// - /components/schemas/Port/properties/name -// // LagMemberNames returns a []string func (obj *stateProtocolLacpMemberPorts) LagMemberNames() []string { if obj.obj.LagMemberNames == nil { @@ -77968,9 +78184,6 @@ func (obj *stateProtocolLacpMemberPorts) LagMemberNames() []string { // x-constraint: // - /components/schemas/Port/properties/name // -// x-constraint: -// - /components/schemas/Port/properties/name -// // SetLagMemberNames sets the []string value in the StateProtocolLacpMemberPorts object func (obj *stateProtocolLacpMemberPorts) SetLagMemberNames(value []string) StateProtocolLacpMemberPorts { @@ -78261,10 +78474,6 @@ type StateProtocolBgpPeers interface { // - /components/schemas/Bgp.V4Peer/properties/name // - /components/schemas/Bgp.V6Peer/properties/name // -// x-constraint: -// - /components/schemas/Bgp.V4Peer/properties/name -// - /components/schemas/Bgp.V6Peer/properties/name -// // PeerNames returns a []string func (obj *stateProtocolBgpPeers) PeerNames() []string { if obj.obj.PeerNames == nil { @@ -78279,10 +78488,6 @@ func (obj *stateProtocolBgpPeers) PeerNames() []string { // - /components/schemas/Bgp.V4Peer/properties/name // - /components/schemas/Bgp.V6Peer/properties/name // -// x-constraint: -// - /components/schemas/Bgp.V4Peer/properties/name -// - /components/schemas/Bgp.V6Peer/properties/name -// // SetPeerNames sets the []string value in the StateProtocolBgpPeers object func (obj *stateProtocolBgpPeers) SetPeerNames(value []string) StateProtocolBgpPeers { @@ -78572,9 +78777,6 @@ type StateProtocolIsisRouters interface { // x-constraint: // - /components/schemas/Device.IsisRouter/properties/name // -// x-constraint: -// - /components/schemas/Device.IsisRouter/properties/name -// // RouterNames returns a []string func (obj *stateProtocolIsisRouters) RouterNames() []string { if obj.obj.RouterNames == nil { @@ -78588,9 +78790,6 @@ func (obj *stateProtocolIsisRouters) RouterNames() []string { // x-constraint: // - /components/schemas/Device.IsisRouter/properties/name // -// x-constraint: -// - /components/schemas/Device.IsisRouter/properties/name -// // SetRouterNames sets the []string value in the StateProtocolIsisRouters object func (obj *stateProtocolIsisRouters) SetRouterNames(value []string) StateProtocolIsisRouters { @@ -79649,9 +79848,6 @@ type ActionProtocolBgpNotification interface { // x-constraint: // - /components/schemas/Device.Bgp/properties/name // -// x-constraint: -// - /components/schemas/Device.Bgp/properties/name -// // Names returns a []string func (obj *actionProtocolBgpNotification) Names() []string { if obj.obj.Names == nil { @@ -79665,9 +79861,6 @@ func (obj *actionProtocolBgpNotification) Names() []string { // x-constraint: // - /components/schemas/Device.Bgp/properties/name // -// x-constraint: -// - /components/schemas/Device.Bgp/properties/name -// // SetNames sets the []string value in the ActionProtocolBgpNotification object func (obj *actionProtocolBgpNotification) SetNames(value []string) ActionProtocolBgpNotification { @@ -80248,9 +80441,6 @@ type ActionProtocolBgpInitiateGracefulRestart interface { // x-constraint: // - /components/schemas/Device.Bgp/properties/name // -// x-constraint: -// - /components/schemas/Device.Bgp/properties/name -// // PeerNames returns a []string func (obj *actionProtocolBgpInitiateGracefulRestart) PeerNames() []string { if obj.obj.PeerNames == nil { @@ -80264,9 +80454,6 @@ func (obj *actionProtocolBgpInitiateGracefulRestart) PeerNames() []string { // x-constraint: // - /components/schemas/Device.Bgp/properties/name // -// x-constraint: -// - /components/schemas/Device.Bgp/properties/name -// // SetPeerNames sets the []string value in the ActionProtocolBgpInitiateGracefulRestart object func (obj *actionProtocolBgpInitiateGracefulRestart) SetPeerNames(value []string) ActionProtocolBgpInitiateGracefulRestart { @@ -164339,29 +164526,31 @@ func (obj *patternFlowMplsTimeToLive) setDefault() { } -// ***** FlowSizeWeightPairsCustom ***** -type flowSizeWeightPairsCustom struct { +// ***** PatternFlowRsvpVersion ***** +type patternFlowRsvpVersion struct { validation - obj *otg.FlowSizeWeightPairsCustom + obj *otg.PatternFlowRsvpVersion + incrementHolder PatternFlowRsvpVersionCounter + decrementHolder PatternFlowRsvpVersionCounter } -func NewFlowSizeWeightPairsCustom() FlowSizeWeightPairsCustom { - obj := flowSizeWeightPairsCustom{obj: &otg.FlowSizeWeightPairsCustom{}} +func NewPatternFlowRsvpVersion() PatternFlowRsvpVersion { + obj := patternFlowRsvpVersion{obj: &otg.PatternFlowRsvpVersion{}} obj.setDefault() return &obj } -func (obj *flowSizeWeightPairsCustom) Msg() *otg.FlowSizeWeightPairsCustom { +func (obj *patternFlowRsvpVersion) Msg() *otg.PatternFlowRsvpVersion { return obj.obj } -func (obj *flowSizeWeightPairsCustom) SetMsg(msg *otg.FlowSizeWeightPairsCustom) FlowSizeWeightPairsCustom { - +func (obj *patternFlowRsvpVersion) SetMsg(msg *otg.PatternFlowRsvpVersion) PatternFlowRsvpVersion { + obj.setNil() proto.Merge(obj.obj, msg) return obj } -func (obj *flowSizeWeightPairsCustom) ToProto() (*otg.FlowSizeWeightPairsCustom, error) { +func (obj *patternFlowRsvpVersion) ToProto() (*otg.PatternFlowRsvpVersion, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -164369,7 +164558,7 @@ func (obj *flowSizeWeightPairsCustom) ToProto() (*otg.FlowSizeWeightPairsCustom, return obj.Msg(), nil } -func (obj *flowSizeWeightPairsCustom) FromProto(msg *otg.FlowSizeWeightPairsCustom) (FlowSizeWeightPairsCustom, error) { +func (obj *patternFlowRsvpVersion) FromProto(msg *otg.PatternFlowRsvpVersion) (PatternFlowRsvpVersion, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -164378,7 +164567,7 @@ func (obj *flowSizeWeightPairsCustom) FromProto(msg *otg.FlowSizeWeightPairsCust return newObj, nil } -func (obj *flowSizeWeightPairsCustom) ToPbText() (string, error) { +func (obj *patternFlowRsvpVersion) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -164390,12 +164579,12 @@ func (obj *flowSizeWeightPairsCustom) ToPbText() (string, error) { return string(protoMarshal), nil } -func (obj *flowSizeWeightPairsCustom) FromPbText(value string) error { +func (obj *patternFlowRsvpVersion) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj } - + obj.setNil() vErr := obj.validateToAndFrom() if vErr != nil { return vErr @@ -164403,7 +164592,7 @@ func (obj *flowSizeWeightPairsCustom) FromPbText(value string) error { return retObj } -func (obj *flowSizeWeightPairsCustom) ToYaml() (string, error) { +func (obj *patternFlowRsvpVersion) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -164424,7 +164613,7 @@ func (obj *flowSizeWeightPairsCustom) ToYaml() (string, error) { return string(data), nil } -func (obj *flowSizeWeightPairsCustom) FromYaml(value string) error { +func (obj *patternFlowRsvpVersion) FromYaml(value string) error { if value == "" { value = "{}" } @@ -164441,7 +164630,7 @@ func (obj *flowSizeWeightPairsCustom) FromYaml(value string) error { return fmt.Errorf("unmarshal error %s", strings.Replace( uError.Error(), "\u00a0", " ", -1)[7:]) } - + obj.setNil() vErr := obj.validateToAndFrom() if vErr != nil { return vErr @@ -164449,7 +164638,7 @@ func (obj *flowSizeWeightPairsCustom) FromYaml(value string) error { return nil } -func (obj *flowSizeWeightPairsCustom) ToJson() (string, error) { +func (obj *patternFlowRsvpVersion) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -164467,7 +164656,7 @@ func (obj *flowSizeWeightPairsCustom) ToJson() (string, error) { return string(data), nil } -func (obj *flowSizeWeightPairsCustom) FromJson(value string) error { +func (obj *patternFlowRsvpVersion) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -164480,7 +164669,7 @@ func (obj *flowSizeWeightPairsCustom) FromJson(value string) error { return fmt.Errorf("unmarshal error %s", strings.Replace( uError.Error(), "\u00a0", " ", -1)[7:]) } - + obj.setNil() err := obj.validateToAndFrom() if err != nil { return err @@ -164488,19 +164677,19 @@ func (obj *flowSizeWeightPairsCustom) FromJson(value string) error { return nil } -func (obj *flowSizeWeightPairsCustom) validateToAndFrom() error { +func (obj *patternFlowRsvpVersion) validateToAndFrom() error { // emptyVars() obj.validateObj(&obj.validation, true) return obj.validationResult() } -func (obj *flowSizeWeightPairsCustom) Validate() error { +func (obj *patternFlowRsvpVersion) Validate() error { // emptyVars() obj.validateObj(&obj.validation, false) return obj.validationResult() } -func (obj *flowSizeWeightPairsCustom) String() string { +func (obj *patternFlowRsvpVersion) String() string { str, err := obj.ToYaml() if err != nil { return err.Error() @@ -164508,12 +164697,12 @@ func (obj *flowSizeWeightPairsCustom) String() string { return str } -func (obj *flowSizeWeightPairsCustom) Clone() (FlowSizeWeightPairsCustom, error) { +func (obj *patternFlowRsvpVersion) Clone() (PatternFlowRsvpVersion, error) { vErr := obj.Validate() if vErr != nil { return nil, vErr } - newObj := NewFlowSizeWeightPairsCustom() + newObj := NewPatternFlowRsvpVersion() data, err := proto.Marshal(obj.Msg()) if err != nil { return nil, err @@ -164525,151 +164714,319 @@ func (obj *flowSizeWeightPairsCustom) Clone() (FlowSizeWeightPairsCustom, error) return newObj, nil } -// FlowSizeWeightPairsCustom is custom frame size distribution pair. -type FlowSizeWeightPairsCustom interface { +func (obj *patternFlowRsvpVersion) setNil() { + obj.incrementHolder = nil + obj.decrementHolder = nil + obj.validationErrors = nil + obj.warnings = nil + obj.constraints = make(map[string]map[string]Constraints) +} + +// PatternFlowRsvpVersion is protocol Version number. +type PatternFlowRsvpVersion interface { Validation - // Msg marshals FlowSizeWeightPairsCustom to protobuf object *otg.FlowSizeWeightPairsCustom + // Msg marshals PatternFlowRsvpVersion to protobuf object *otg.PatternFlowRsvpVersion // and doesn't set defaults - Msg() *otg.FlowSizeWeightPairsCustom - // SetMsg unmarshals FlowSizeWeightPairsCustom from protobuf object *otg.FlowSizeWeightPairsCustom + Msg() *otg.PatternFlowRsvpVersion + // SetMsg unmarshals PatternFlowRsvpVersion from protobuf object *otg.PatternFlowRsvpVersion // and doesn't set defaults - SetMsg(*otg.FlowSizeWeightPairsCustom) FlowSizeWeightPairsCustom - // ToProto marshals FlowSizeWeightPairsCustom to protobuf object *otg.FlowSizeWeightPairsCustom - ToProto() (*otg.FlowSizeWeightPairsCustom, error) - // ToPbText marshals FlowSizeWeightPairsCustom to protobuf text + SetMsg(*otg.PatternFlowRsvpVersion) PatternFlowRsvpVersion + // ToProto marshals PatternFlowRsvpVersion to protobuf object *otg.PatternFlowRsvpVersion + ToProto() (*otg.PatternFlowRsvpVersion, error) + // ToPbText marshals PatternFlowRsvpVersion to protobuf text ToPbText() (string, error) - // ToYaml marshals FlowSizeWeightPairsCustom to YAML text + // ToYaml marshals PatternFlowRsvpVersion to YAML text ToYaml() (string, error) - // ToJson marshals FlowSizeWeightPairsCustom to JSON text + // ToJson marshals PatternFlowRsvpVersion to JSON text ToJson() (string, error) - // FromProto unmarshals FlowSizeWeightPairsCustom from protobuf object *otg.FlowSizeWeightPairsCustom - FromProto(msg *otg.FlowSizeWeightPairsCustom) (FlowSizeWeightPairsCustom, error) - // FromPbText unmarshals FlowSizeWeightPairsCustom from protobuf text + // FromProto unmarshals PatternFlowRsvpVersion from protobuf object *otg.PatternFlowRsvpVersion + FromProto(msg *otg.PatternFlowRsvpVersion) (PatternFlowRsvpVersion, error) + // FromPbText unmarshals PatternFlowRsvpVersion from protobuf text FromPbText(value string) error - // FromYaml unmarshals FlowSizeWeightPairsCustom from YAML text + // FromYaml unmarshals PatternFlowRsvpVersion from YAML text FromYaml(value string) error - // FromJson unmarshals FlowSizeWeightPairsCustom from JSON text + // FromJson unmarshals PatternFlowRsvpVersion from JSON text FromJson(value string) error - // Validate validates FlowSizeWeightPairsCustom + // Validate validates PatternFlowRsvpVersion Validate() error // A stringer function String() string // Clones the object - Clone() (FlowSizeWeightPairsCustom, error) + Clone() (PatternFlowRsvpVersion, error) validateToAndFrom() error validateObj(vObj *validation, set_default bool) setDefault() - // Size returns uint32, set in FlowSizeWeightPairsCustom. - Size() uint32 - // SetSize assigns uint32 provided by user to FlowSizeWeightPairsCustom - SetSize(value uint32) FlowSizeWeightPairsCustom - // HasSize checks if Size has been set in FlowSizeWeightPairsCustom - HasSize() bool - // Weight returns float32, set in FlowSizeWeightPairsCustom. - Weight() float32 - // SetWeight assigns float32 provided by user to FlowSizeWeightPairsCustom - SetWeight(value float32) FlowSizeWeightPairsCustom - // HasWeight checks if Weight has been set in FlowSizeWeightPairsCustom - HasWeight() bool + // Choice returns PatternFlowRsvpVersionChoiceEnum, set in PatternFlowRsvpVersion + Choice() PatternFlowRsvpVersionChoiceEnum + // SetChoice assigns PatternFlowRsvpVersionChoiceEnum provided by user to PatternFlowRsvpVersion + SetChoice(value PatternFlowRsvpVersionChoiceEnum) PatternFlowRsvpVersion + // HasChoice checks if Choice has been set in PatternFlowRsvpVersion + HasChoice() bool + // Value returns uint32, set in PatternFlowRsvpVersion. + Value() uint32 + // SetValue assigns uint32 provided by user to PatternFlowRsvpVersion + SetValue(value uint32) PatternFlowRsvpVersion + // HasValue checks if Value has been set in PatternFlowRsvpVersion + HasValue() bool + // Values returns []uint32, set in PatternFlowRsvpVersion. + Values() []uint32 + // SetValues assigns []uint32 provided by user to PatternFlowRsvpVersion + SetValues(value []uint32) PatternFlowRsvpVersion + // Increment returns PatternFlowRsvpVersionCounter, set in PatternFlowRsvpVersion. + // PatternFlowRsvpVersionCounter is integer counter pattern + Increment() PatternFlowRsvpVersionCounter + // SetIncrement assigns PatternFlowRsvpVersionCounter provided by user to PatternFlowRsvpVersion. + // PatternFlowRsvpVersionCounter is integer counter pattern + SetIncrement(value PatternFlowRsvpVersionCounter) PatternFlowRsvpVersion + // HasIncrement checks if Increment has been set in PatternFlowRsvpVersion + HasIncrement() bool + // Decrement returns PatternFlowRsvpVersionCounter, set in PatternFlowRsvpVersion. + // PatternFlowRsvpVersionCounter is integer counter pattern + Decrement() PatternFlowRsvpVersionCounter + // SetDecrement assigns PatternFlowRsvpVersionCounter provided by user to PatternFlowRsvpVersion. + // PatternFlowRsvpVersionCounter is integer counter pattern + SetDecrement(value PatternFlowRsvpVersionCounter) PatternFlowRsvpVersion + // HasDecrement checks if Decrement has been set in PatternFlowRsvpVersion + HasDecrement() bool + setNil() } -// The size of the frame (in bytes) for this weight pair. -// Size returns a uint32 -func (obj *flowSizeWeightPairsCustom) Size() uint32 { +type PatternFlowRsvpVersionChoiceEnum string - return *obj.obj.Size +// Enum of Choice on PatternFlowRsvpVersion +var PatternFlowRsvpVersionChoice = struct { + VALUE PatternFlowRsvpVersionChoiceEnum + VALUES PatternFlowRsvpVersionChoiceEnum + INCREMENT PatternFlowRsvpVersionChoiceEnum + DECREMENT PatternFlowRsvpVersionChoiceEnum +}{ + VALUE: PatternFlowRsvpVersionChoiceEnum("value"), + VALUES: PatternFlowRsvpVersionChoiceEnum("values"), + INCREMENT: PatternFlowRsvpVersionChoiceEnum("increment"), + DECREMENT: PatternFlowRsvpVersionChoiceEnum("decrement"), +} +func (obj *patternFlowRsvpVersion) Choice() PatternFlowRsvpVersionChoiceEnum { + return PatternFlowRsvpVersionChoiceEnum(obj.obj.Choice.Enum().String()) } -// The size of the frame (in bytes) for this weight pair. -// Size returns a uint32 -func (obj *flowSizeWeightPairsCustom) HasSize() bool { - return obj.obj.Size != nil +// description is TBD +// Choice returns a string +func (obj *patternFlowRsvpVersion) HasChoice() bool { + return obj.obj.Choice != nil } -// The size of the frame (in bytes) for this weight pair. -// SetSize sets the uint32 value in the FlowSizeWeightPairsCustom object -func (obj *flowSizeWeightPairsCustom) SetSize(value uint32) FlowSizeWeightPairsCustom { +func (obj *patternFlowRsvpVersion) SetChoice(value PatternFlowRsvpVersionChoiceEnum) PatternFlowRsvpVersion { + intValue, ok := otg.PatternFlowRsvpVersion_Choice_Enum_value[string(value)] + if !ok { + obj.validationErrors = append(obj.validationErrors, fmt.Sprintf( + "%s is not a valid choice on PatternFlowRsvpVersionChoiceEnum", string(value))) + return obj + } + enumValue := otg.PatternFlowRsvpVersion_Choice_Enum(intValue) + obj.obj.Choice = &enumValue + obj.obj.Decrement = nil + obj.decrementHolder = nil + obj.obj.Increment = nil + obj.incrementHolder = nil + obj.obj.Values = nil + obj.obj.Value = nil + + if value == PatternFlowRsvpVersionChoice.VALUE { + defaultValue := uint32(1) + obj.obj.Value = &defaultValue + } + + if value == PatternFlowRsvpVersionChoice.VALUES { + defaultValue := []uint32{1} + obj.obj.Values = defaultValue + } + + if value == PatternFlowRsvpVersionChoice.INCREMENT { + obj.obj.Increment = NewPatternFlowRsvpVersionCounter().Msg() + } + + if value == PatternFlowRsvpVersionChoice.DECREMENT { + obj.obj.Decrement = NewPatternFlowRsvpVersionCounter().Msg() + } - obj.obj.Size = &value return obj } -// Weight assigned to the corresponding frame size in this weight pair. -// Higher weight means more packets. -// Weight returns a float32 -func (obj *flowSizeWeightPairsCustom) Weight() float32 { +// description is TBD +// Value returns a uint32 +func (obj *patternFlowRsvpVersion) Value() uint32 { - return *obj.obj.Weight + if obj.obj.Value == nil { + obj.SetChoice(PatternFlowRsvpVersionChoice.VALUE) + } + + return *obj.obj.Value } -// Weight assigned to the corresponding frame size in this weight pair. -// Higher weight means more packets. -// Weight returns a float32 -func (obj *flowSizeWeightPairsCustom) HasWeight() bool { - return obj.obj.Weight != nil +// description is TBD +// Value returns a uint32 +func (obj *patternFlowRsvpVersion) HasValue() bool { + return obj.obj.Value != nil } -// Weight assigned to the corresponding frame size in this weight pair. -// Higher weight means more packets. -// SetWeight sets the float32 value in the FlowSizeWeightPairsCustom object -func (obj *flowSizeWeightPairsCustom) SetWeight(value float32) FlowSizeWeightPairsCustom { +// description is TBD +// SetValue sets the uint32 value in the PatternFlowRsvpVersion object +func (obj *patternFlowRsvpVersion) SetValue(value uint32) PatternFlowRsvpVersion { + obj.SetChoice(PatternFlowRsvpVersionChoice.VALUE) + obj.obj.Value = &value + return obj +} + +// description is TBD +// Values returns a []uint32 +func (obj *patternFlowRsvpVersion) Values() []uint32 { + if obj.obj.Values == nil { + obj.SetValues([]uint32{1}) + } + return obj.obj.Values +} + +// description is TBD +// SetValues sets the []uint32 value in the PatternFlowRsvpVersion object +func (obj *patternFlowRsvpVersion) SetValues(value []uint32) PatternFlowRsvpVersion { + obj.SetChoice(PatternFlowRsvpVersionChoice.VALUES) + if obj.obj.Values == nil { + obj.obj.Values = make([]uint32, 0) + } + obj.obj.Values = value - obj.obj.Weight = &value return obj } -func (obj *flowSizeWeightPairsCustom) validateObj(vObj *validation, set_default bool) { +// description is TBD +// Increment returns a PatternFlowRsvpVersionCounter +func (obj *patternFlowRsvpVersion) Increment() PatternFlowRsvpVersionCounter { + if obj.obj.Increment == nil { + obj.SetChoice(PatternFlowRsvpVersionChoice.INCREMENT) + } + if obj.incrementHolder == nil { + obj.incrementHolder = &patternFlowRsvpVersionCounter{obj: obj.obj.Increment} + } + return obj.incrementHolder +} + +// description is TBD +// Increment returns a PatternFlowRsvpVersionCounter +func (obj *patternFlowRsvpVersion) HasIncrement() bool { + return obj.obj.Increment != nil +} + +// description is TBD +// SetIncrement sets the PatternFlowRsvpVersionCounter value in the PatternFlowRsvpVersion object +func (obj *patternFlowRsvpVersion) SetIncrement(value PatternFlowRsvpVersionCounter) PatternFlowRsvpVersion { + obj.SetChoice(PatternFlowRsvpVersionChoice.INCREMENT) + obj.incrementHolder = nil + obj.obj.Increment = value.Msg() + + return obj +} + +// description is TBD +// Decrement returns a PatternFlowRsvpVersionCounter +func (obj *patternFlowRsvpVersion) Decrement() PatternFlowRsvpVersionCounter { + if obj.obj.Decrement == nil { + obj.SetChoice(PatternFlowRsvpVersionChoice.DECREMENT) + } + if obj.decrementHolder == nil { + obj.decrementHolder = &patternFlowRsvpVersionCounter{obj: obj.obj.Decrement} + } + return obj.decrementHolder +} + +// description is TBD +// Decrement returns a PatternFlowRsvpVersionCounter +func (obj *patternFlowRsvpVersion) HasDecrement() bool { + return obj.obj.Decrement != nil +} + +// description is TBD +// SetDecrement sets the PatternFlowRsvpVersionCounter value in the PatternFlowRsvpVersion object +func (obj *patternFlowRsvpVersion) SetDecrement(value PatternFlowRsvpVersionCounter) PatternFlowRsvpVersion { + obj.SetChoice(PatternFlowRsvpVersionChoice.DECREMENT) + obj.decrementHolder = nil + obj.obj.Decrement = value.Msg() + + return obj +} + +func (obj *patternFlowRsvpVersion) validateObj(vObj *validation, set_default bool) { if set_default { obj.setDefault() } - if obj.obj.Size != nil { + if obj.obj.Value != nil { - if *obj.obj.Size < 12 || *obj.obj.Size > 65535 { + if *obj.obj.Value > 15 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("12 <= FlowSizeWeightPairsCustom.Size <= 65535 but Got %d", *obj.obj.Size)) + fmt.Sprintf("0 <= PatternFlowRsvpVersion.Value <= 15 but Got %d", *obj.obj.Value)) } } -} + if obj.obj.Values != nil { + + for _, item := range obj.obj.Values { + if item > 15 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("min(uint32) <= PatternFlowRsvpVersion.Values <= 15 but Got %d", item)) + } + + } -func (obj *flowSizeWeightPairsCustom) setDefault() { - if obj.obj.Size == nil { - obj.SetSize(64) } - if obj.obj.Weight == nil { - obj.SetWeight(1) + + if obj.obj.Increment != nil { + + obj.Increment().validateObj(vObj, set_default) + } + + if obj.obj.Decrement != nil { + + obj.Decrement().validateObj(vObj, set_default) } } -// ***** FlowDelay ***** -type flowDelay struct { +func (obj *patternFlowRsvpVersion) setDefault() { + if obj.obj.Choice == nil { + obj.SetChoice(PatternFlowRsvpVersionChoice.VALUE) + + } + +} + +// ***** FlowRSVPFlag ***** +type flowRSVPFlag struct { validation - obj *otg.FlowDelay + obj *otg.FlowRSVPFlag } -func NewFlowDelay() FlowDelay { - obj := flowDelay{obj: &otg.FlowDelay{}} +func NewFlowRSVPFlag() FlowRSVPFlag { + obj := flowRSVPFlag{obj: &otg.FlowRSVPFlag{}} obj.setDefault() return &obj } -func (obj *flowDelay) Msg() *otg.FlowDelay { +func (obj *flowRSVPFlag) Msg() *otg.FlowRSVPFlag { return obj.obj } -func (obj *flowDelay) SetMsg(msg *otg.FlowDelay) FlowDelay { +func (obj *flowRSVPFlag) SetMsg(msg *otg.FlowRSVPFlag) FlowRSVPFlag { proto.Merge(obj.obj, msg) return obj } -func (obj *flowDelay) ToProto() (*otg.FlowDelay, error) { +func (obj *flowRSVPFlag) ToProto() (*otg.FlowRSVPFlag, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -164677,7 +165034,7 @@ func (obj *flowDelay) ToProto() (*otg.FlowDelay, error) { return obj.Msg(), nil } -func (obj *flowDelay) FromProto(msg *otg.FlowDelay) (FlowDelay, error) { +func (obj *flowRSVPFlag) FromProto(msg *otg.FlowRSVPFlag) (FlowRSVPFlag, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -164686,7 +165043,7 @@ func (obj *flowDelay) FromProto(msg *otg.FlowDelay) (FlowDelay, error) { return newObj, nil } -func (obj *flowDelay) ToPbText() (string, error) { +func (obj *flowRSVPFlag) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -164698,7 +165055,7 @@ func (obj *flowDelay) ToPbText() (string, error) { return string(protoMarshal), nil } -func (obj *flowDelay) FromPbText(value string) error { +func (obj *flowRSVPFlag) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj @@ -164711,7 +165068,7 @@ func (obj *flowDelay) FromPbText(value string) error { return retObj } -func (obj *flowDelay) ToYaml() (string, error) { +func (obj *flowRSVPFlag) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -164732,7 +165089,7 @@ func (obj *flowDelay) ToYaml() (string, error) { return string(data), nil } -func (obj *flowDelay) FromYaml(value string) error { +func (obj *flowRSVPFlag) FromYaml(value string) error { if value == "" { value = "{}" } @@ -164757,7 +165114,7 @@ func (obj *flowDelay) FromYaml(value string) error { return nil } -func (obj *flowDelay) ToJson() (string, error) { +func (obj *flowRSVPFlag) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -164775,7 +165132,7 @@ func (obj *flowDelay) ToJson() (string, error) { return string(data), nil } -func (obj *flowDelay) FromJson(value string) error { +func (obj *flowRSVPFlag) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -164796,19 +165153,19 @@ func (obj *flowDelay) FromJson(value string) error { return nil } -func (obj *flowDelay) validateToAndFrom() error { +func (obj *flowRSVPFlag) validateToAndFrom() error { // emptyVars() obj.validateObj(&obj.validation, true) return obj.validationResult() } -func (obj *flowDelay) Validate() error { +func (obj *flowRSVPFlag) Validate() error { // emptyVars() obj.validateObj(&obj.validation, false) return obj.validationResult() } -func (obj *flowDelay) String() string { +func (obj *flowRSVPFlag) String() string { str, err := obj.ToYaml() if err != nil { return err.Error() @@ -164816,12 +165173,12 @@ func (obj *flowDelay) String() string { return str } -func (obj *flowDelay) Clone() (FlowDelay, error) { +func (obj *flowRSVPFlag) Clone() (FlowRSVPFlag, error) { vErr := obj.Validate() if vErr != nil { return nil, vErr } - newObj := NewFlowDelay() + newObj := NewFlowRSVPFlag() data, err := proto.Marshal(obj.Msg()) if err != nil { return nil, err @@ -164833,276 +165190,120 @@ func (obj *flowDelay) Clone() (FlowDelay, error) { return newObj, nil } -// FlowDelay is the optional container to specify the delay before starting -// transmission of packets. -type FlowDelay interface { +// FlowRSVPFlag is description is TBD +type FlowRSVPFlag interface { Validation - // Msg marshals FlowDelay to protobuf object *otg.FlowDelay + // Msg marshals FlowRSVPFlag to protobuf object *otg.FlowRSVPFlag // and doesn't set defaults - Msg() *otg.FlowDelay - // SetMsg unmarshals FlowDelay from protobuf object *otg.FlowDelay + Msg() *otg.FlowRSVPFlag + // SetMsg unmarshals FlowRSVPFlag from protobuf object *otg.FlowRSVPFlag // and doesn't set defaults - SetMsg(*otg.FlowDelay) FlowDelay - // ToProto marshals FlowDelay to protobuf object *otg.FlowDelay - ToProto() (*otg.FlowDelay, error) - // ToPbText marshals FlowDelay to protobuf text + SetMsg(*otg.FlowRSVPFlag) FlowRSVPFlag + // ToProto marshals FlowRSVPFlag to protobuf object *otg.FlowRSVPFlag + ToProto() (*otg.FlowRSVPFlag, error) + // ToPbText marshals FlowRSVPFlag to protobuf text ToPbText() (string, error) - // ToYaml marshals FlowDelay to YAML text + // ToYaml marshals FlowRSVPFlag to YAML text ToYaml() (string, error) - // ToJson marshals FlowDelay to JSON text + // ToJson marshals FlowRSVPFlag to JSON text ToJson() (string, error) - // FromProto unmarshals FlowDelay from protobuf object *otg.FlowDelay - FromProto(msg *otg.FlowDelay) (FlowDelay, error) - // FromPbText unmarshals FlowDelay from protobuf text + // FromProto unmarshals FlowRSVPFlag from protobuf object *otg.FlowRSVPFlag + FromProto(msg *otg.FlowRSVPFlag) (FlowRSVPFlag, error) + // FromPbText unmarshals FlowRSVPFlag from protobuf text FromPbText(value string) error - // FromYaml unmarshals FlowDelay from YAML text + // FromYaml unmarshals FlowRSVPFlag from YAML text FromYaml(value string) error - // FromJson unmarshals FlowDelay from JSON text + // FromJson unmarshals FlowRSVPFlag from JSON text FromJson(value string) error - // Validate validates FlowDelay + // Validate validates FlowRSVPFlag Validate() error // A stringer function String() string // Clones the object - Clone() (FlowDelay, error) + Clone() (FlowRSVPFlag, error) validateToAndFrom() error validateObj(vObj *validation, set_default bool) setDefault() - // Choice returns FlowDelayChoiceEnum, set in FlowDelay - Choice() FlowDelayChoiceEnum - // SetChoice assigns FlowDelayChoiceEnum provided by user to FlowDelay - SetChoice(value FlowDelayChoiceEnum) FlowDelay - // HasChoice checks if Choice has been set in FlowDelay + // Choice returns FlowRSVPFlagChoiceEnum, set in FlowRSVPFlag + Choice() FlowRSVPFlagChoiceEnum + // SetChoice assigns FlowRSVPFlagChoiceEnum provided by user to FlowRSVPFlag + SetChoice(value FlowRSVPFlagChoiceEnum) FlowRSVPFlag + // HasChoice checks if Choice has been set in FlowRSVPFlag HasChoice() bool - // Bytes returns float32, set in FlowDelay. - Bytes() float32 - // SetBytes assigns float32 provided by user to FlowDelay - SetBytes(value float32) FlowDelay - // HasBytes checks if Bytes has been set in FlowDelay - HasBytes() bool - // Nanoseconds returns float32, set in FlowDelay. - Nanoseconds() float32 - // SetNanoseconds assigns float32 provided by user to FlowDelay - SetNanoseconds(value float32) FlowDelay - // HasNanoseconds checks if Nanoseconds has been set in FlowDelay - HasNanoseconds() bool - // Microseconds returns float32, set in FlowDelay. - Microseconds() float32 - // SetMicroseconds assigns float32 provided by user to FlowDelay - SetMicroseconds(value float32) FlowDelay - // HasMicroseconds checks if Microseconds has been set in FlowDelay - HasMicroseconds() bool } -type FlowDelayChoiceEnum string +type FlowRSVPFlagChoiceEnum string -// Enum of Choice on FlowDelay -var FlowDelayChoice = struct { - BYTES FlowDelayChoiceEnum - NANOSECONDS FlowDelayChoiceEnum - MICROSECONDS FlowDelayChoiceEnum +// Enum of Choice on FlowRSVPFlag +var FlowRSVPFlagChoice = struct { + NOT_REFRESH_REDUCTION_CAPABLE FlowRSVPFlagChoiceEnum + REFRESH_REDUCTION_CAPABLE FlowRSVPFlagChoiceEnum }{ - BYTES: FlowDelayChoiceEnum("bytes"), - NANOSECONDS: FlowDelayChoiceEnum("nanoseconds"), - MICROSECONDS: FlowDelayChoiceEnum("microseconds"), + NOT_REFRESH_REDUCTION_CAPABLE: FlowRSVPFlagChoiceEnum("not_refresh_reduction_capable"), + REFRESH_REDUCTION_CAPABLE: FlowRSVPFlagChoiceEnum("refresh_reduction_capable"), } -func (obj *flowDelay) Choice() FlowDelayChoiceEnum { - return FlowDelayChoiceEnum(obj.obj.Choice.Enum().String()) +func (obj *flowRSVPFlag) Choice() FlowRSVPFlagChoiceEnum { + return FlowRSVPFlagChoiceEnum(obj.obj.Choice.Enum().String()) } // description is TBD // Choice returns a string -func (obj *flowDelay) HasChoice() bool { +func (obj *flowRSVPFlag) HasChoice() bool { return obj.obj.Choice != nil } -func (obj *flowDelay) SetChoice(value FlowDelayChoiceEnum) FlowDelay { - intValue, ok := otg.FlowDelay_Choice_Enum_value[string(value)] +func (obj *flowRSVPFlag) SetChoice(value FlowRSVPFlagChoiceEnum) FlowRSVPFlag { + intValue, ok := otg.FlowRSVPFlag_Choice_Enum_value[string(value)] if !ok { obj.validationErrors = append(obj.validationErrors, fmt.Sprintf( - "%s is not a valid choice on FlowDelayChoiceEnum", string(value))) + "%s is not a valid choice on FlowRSVPFlagChoiceEnum", string(value))) return obj } - enumValue := otg.FlowDelay_Choice_Enum(intValue) + enumValue := otg.FlowRSVPFlag_Choice_Enum(intValue) obj.obj.Choice = &enumValue - obj.obj.Microseconds = nil - obj.obj.Nanoseconds = nil - obj.obj.Bytes = nil - - if value == FlowDelayChoice.BYTES { - defaultValue := float32(0) - obj.obj.Bytes = &defaultValue - } - - if value == FlowDelayChoice.NANOSECONDS { - defaultValue := float32(0) - obj.obj.Nanoseconds = &defaultValue - } - - if value == FlowDelayChoice.MICROSECONDS { - defaultValue := float32(0) - obj.obj.Microseconds = &defaultValue - } - - return obj -} - -// The delay before starting transmission of packets. -// A value of 0 indicates no delay. -// Bytes returns a float32 -func (obj *flowDelay) Bytes() float32 { - - if obj.obj.Bytes == nil { - obj.SetChoice(FlowDelayChoice.BYTES) - } - - return *obj.obj.Bytes - -} - -// The delay before starting transmission of packets. -// A value of 0 indicates no delay. -// Bytes returns a float32 -func (obj *flowDelay) HasBytes() bool { - return obj.obj.Bytes != nil -} - -// The delay before starting transmission of packets. -// A value of 0 indicates no delay. -// SetBytes sets the float32 value in the FlowDelay object -func (obj *flowDelay) SetBytes(value float32) FlowDelay { - obj.SetChoice(FlowDelayChoice.BYTES) - obj.obj.Bytes = &value - return obj -} - -// The delay before starting transmission of packets. -// A value of 0 indicates no delay. -// Nanoseconds returns a float32 -func (obj *flowDelay) Nanoseconds() float32 { - - if obj.obj.Nanoseconds == nil { - obj.SetChoice(FlowDelayChoice.NANOSECONDS) - } - - return *obj.obj.Nanoseconds - -} -// The delay before starting transmission of packets. -// A value of 0 indicates no delay. -// Nanoseconds returns a float32 -func (obj *flowDelay) HasNanoseconds() bool { - return obj.obj.Nanoseconds != nil -} - -// The delay before starting transmission of packets. -// A value of 0 indicates no delay. -// SetNanoseconds sets the float32 value in the FlowDelay object -func (obj *flowDelay) SetNanoseconds(value float32) FlowDelay { - obj.SetChoice(FlowDelayChoice.NANOSECONDS) - obj.obj.Nanoseconds = &value - return obj -} - -// The delay before starting transmission of packets. -// A value of 0 indicates no delay. -// Microseconds returns a float32 -func (obj *flowDelay) Microseconds() float32 { - - if obj.obj.Microseconds == nil { - obj.SetChoice(FlowDelayChoice.MICROSECONDS) - } - - return *obj.obj.Microseconds - -} - -// The delay before starting transmission of packets. -// A value of 0 indicates no delay. -// Microseconds returns a float32 -func (obj *flowDelay) HasMicroseconds() bool { - return obj.obj.Microseconds != nil -} - -// The delay before starting transmission of packets. -// A value of 0 indicates no delay. -// SetMicroseconds sets the float32 value in the FlowDelay object -func (obj *flowDelay) SetMicroseconds(value float32) FlowDelay { - obj.SetChoice(FlowDelayChoice.MICROSECONDS) - obj.obj.Microseconds = &value return obj } -func (obj *flowDelay) validateObj(vObj *validation, set_default bool) { +func (obj *flowRSVPFlag) validateObj(vObj *validation, set_default bool) { if set_default { obj.setDefault() } - if obj.obj.Bytes != nil { - - if *obj.obj.Bytes < 0 { - vObj.validationErrors = append( - vObj.validationErrors, - fmt.Sprintf("0 <= FlowDelay.Bytes <= max(float32) but Got %f", *obj.obj.Bytes)) - } - - } - - if obj.obj.Nanoseconds != nil { - - if *obj.obj.Nanoseconds < 0 { - vObj.validationErrors = append( - vObj.validationErrors, - fmt.Sprintf("0 <= FlowDelay.Nanoseconds <= max(float32) but Got %f", *obj.obj.Nanoseconds)) - } - - } - - if obj.obj.Microseconds != nil { - - if *obj.obj.Microseconds < 0 { - vObj.validationErrors = append( - vObj.validationErrors, - fmt.Sprintf("0 <= FlowDelay.Microseconds <= max(float32) but Got %f", *obj.obj.Microseconds)) - } - - } - } -func (obj *flowDelay) setDefault() { +func (obj *flowRSVPFlag) setDefault() { if obj.obj.Choice == nil { - obj.SetChoice(FlowDelayChoice.BYTES) + obj.SetChoice(FlowRSVPFlagChoice.NOT_REFRESH_REDUCTION_CAPABLE) } } -// ***** FlowDurationInterBurstGap ***** -type flowDurationInterBurstGap struct { +// ***** PatternFlowRsvpRsvpChecksum ***** +type patternFlowRsvpRsvpChecksum struct { validation - obj *otg.FlowDurationInterBurstGap + obj *otg.PatternFlowRsvpRsvpChecksum } -func NewFlowDurationInterBurstGap() FlowDurationInterBurstGap { - obj := flowDurationInterBurstGap{obj: &otg.FlowDurationInterBurstGap{}} +func NewPatternFlowRsvpRsvpChecksum() PatternFlowRsvpRsvpChecksum { + obj := patternFlowRsvpRsvpChecksum{obj: &otg.PatternFlowRsvpRsvpChecksum{}} obj.setDefault() return &obj } -func (obj *flowDurationInterBurstGap) Msg() *otg.FlowDurationInterBurstGap { +func (obj *patternFlowRsvpRsvpChecksum) Msg() *otg.PatternFlowRsvpRsvpChecksum { return obj.obj } -func (obj *flowDurationInterBurstGap) SetMsg(msg *otg.FlowDurationInterBurstGap) FlowDurationInterBurstGap { +func (obj *patternFlowRsvpRsvpChecksum) SetMsg(msg *otg.PatternFlowRsvpRsvpChecksum) PatternFlowRsvpRsvpChecksum { proto.Merge(obj.obj, msg) return obj } -func (obj *flowDurationInterBurstGap) ToProto() (*otg.FlowDurationInterBurstGap, error) { +func (obj *patternFlowRsvpRsvpChecksum) ToProto() (*otg.PatternFlowRsvpRsvpChecksum, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -165110,7 +165311,7 @@ func (obj *flowDurationInterBurstGap) ToProto() (*otg.FlowDurationInterBurstGap, return obj.Msg(), nil } -func (obj *flowDurationInterBurstGap) FromProto(msg *otg.FlowDurationInterBurstGap) (FlowDurationInterBurstGap, error) { +func (obj *patternFlowRsvpRsvpChecksum) FromProto(msg *otg.PatternFlowRsvpRsvpChecksum) (PatternFlowRsvpRsvpChecksum, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -165119,7 +165320,7 @@ func (obj *flowDurationInterBurstGap) FromProto(msg *otg.FlowDurationInterBurstG return newObj, nil } -func (obj *flowDurationInterBurstGap) ToPbText() (string, error) { +func (obj *patternFlowRsvpRsvpChecksum) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -165131,7 +165332,7 @@ func (obj *flowDurationInterBurstGap) ToPbText() (string, error) { return string(protoMarshal), nil } -func (obj *flowDurationInterBurstGap) FromPbText(value string) error { +func (obj *patternFlowRsvpRsvpChecksum) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj @@ -165144,7 +165345,7 @@ func (obj *flowDurationInterBurstGap) FromPbText(value string) error { return retObj } -func (obj *flowDurationInterBurstGap) ToYaml() (string, error) { +func (obj *patternFlowRsvpRsvpChecksum) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -165165,7 +165366,7 @@ func (obj *flowDurationInterBurstGap) ToYaml() (string, error) { return string(data), nil } -func (obj *flowDurationInterBurstGap) FromYaml(value string) error { +func (obj *patternFlowRsvpRsvpChecksum) FromYaml(value string) error { if value == "" { value = "{}" } @@ -165190,7 +165391,7 @@ func (obj *flowDurationInterBurstGap) FromYaml(value string) error { return nil } -func (obj *flowDurationInterBurstGap) ToJson() (string, error) { +func (obj *patternFlowRsvpRsvpChecksum) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -165208,7 +165409,7 @@ func (obj *flowDurationInterBurstGap) ToJson() (string, error) { return string(data), nil } -func (obj *flowDurationInterBurstGap) FromJson(value string) error { +func (obj *patternFlowRsvpRsvpChecksum) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -165229,19 +165430,19 @@ func (obj *flowDurationInterBurstGap) FromJson(value string) error { return nil } -func (obj *flowDurationInterBurstGap) validateToAndFrom() error { +func (obj *patternFlowRsvpRsvpChecksum) validateToAndFrom() error { // emptyVars() obj.validateObj(&obj.validation, true) return obj.validationResult() } -func (obj *flowDurationInterBurstGap) Validate() error { +func (obj *patternFlowRsvpRsvpChecksum) Validate() error { // emptyVars() obj.validateObj(&obj.validation, false) return obj.validationResult() } -func (obj *flowDurationInterBurstGap) String() string { +func (obj *patternFlowRsvpRsvpChecksum) String() string { str, err := obj.ToYaml() if err != nil { return err.Error() @@ -165249,12 +165450,12 @@ func (obj *flowDurationInterBurstGap) String() string { return str } -func (obj *flowDurationInterBurstGap) Clone() (FlowDurationInterBurstGap, error) { +func (obj *patternFlowRsvpRsvpChecksum) Clone() (PatternFlowRsvpRsvpChecksum, error) { vErr := obj.Validate() if vErr != nil { return nil, vErr } - newObj := NewFlowDurationInterBurstGap() + newObj := NewPatternFlowRsvpRsvpChecksum() data, err := proto.Marshal(obj.Msg()) if err != nil { return nil, err @@ -165266,275 +165467,209 @@ func (obj *flowDurationInterBurstGap) Clone() (FlowDurationInterBurstGap, error) return newObj, nil } -// FlowDurationInterBurstGap is the optional container for specifying a gap between bursts. -type FlowDurationInterBurstGap interface { +// PatternFlowRsvpRsvpChecksum is the one's complement of the one's complement sum of the message, with the checksum field replaced by zero for the purpose of computing the checksum. An all-zero value means that no checksum was transmitted. +type PatternFlowRsvpRsvpChecksum interface { Validation - // Msg marshals FlowDurationInterBurstGap to protobuf object *otg.FlowDurationInterBurstGap + // Msg marshals PatternFlowRsvpRsvpChecksum to protobuf object *otg.PatternFlowRsvpRsvpChecksum // and doesn't set defaults - Msg() *otg.FlowDurationInterBurstGap - // SetMsg unmarshals FlowDurationInterBurstGap from protobuf object *otg.FlowDurationInterBurstGap + Msg() *otg.PatternFlowRsvpRsvpChecksum + // SetMsg unmarshals PatternFlowRsvpRsvpChecksum from protobuf object *otg.PatternFlowRsvpRsvpChecksum // and doesn't set defaults - SetMsg(*otg.FlowDurationInterBurstGap) FlowDurationInterBurstGap - // ToProto marshals FlowDurationInterBurstGap to protobuf object *otg.FlowDurationInterBurstGap - ToProto() (*otg.FlowDurationInterBurstGap, error) - // ToPbText marshals FlowDurationInterBurstGap to protobuf text + SetMsg(*otg.PatternFlowRsvpRsvpChecksum) PatternFlowRsvpRsvpChecksum + // ToProto marshals PatternFlowRsvpRsvpChecksum to protobuf object *otg.PatternFlowRsvpRsvpChecksum + ToProto() (*otg.PatternFlowRsvpRsvpChecksum, error) + // ToPbText marshals PatternFlowRsvpRsvpChecksum to protobuf text ToPbText() (string, error) - // ToYaml marshals FlowDurationInterBurstGap to YAML text + // ToYaml marshals PatternFlowRsvpRsvpChecksum to YAML text ToYaml() (string, error) - // ToJson marshals FlowDurationInterBurstGap to JSON text + // ToJson marshals PatternFlowRsvpRsvpChecksum to JSON text ToJson() (string, error) - // FromProto unmarshals FlowDurationInterBurstGap from protobuf object *otg.FlowDurationInterBurstGap - FromProto(msg *otg.FlowDurationInterBurstGap) (FlowDurationInterBurstGap, error) - // FromPbText unmarshals FlowDurationInterBurstGap from protobuf text + // FromProto unmarshals PatternFlowRsvpRsvpChecksum from protobuf object *otg.PatternFlowRsvpRsvpChecksum + FromProto(msg *otg.PatternFlowRsvpRsvpChecksum) (PatternFlowRsvpRsvpChecksum, error) + // FromPbText unmarshals PatternFlowRsvpRsvpChecksum from protobuf text FromPbText(value string) error - // FromYaml unmarshals FlowDurationInterBurstGap from YAML text + // FromYaml unmarshals PatternFlowRsvpRsvpChecksum from YAML text FromYaml(value string) error - // FromJson unmarshals FlowDurationInterBurstGap from JSON text + // FromJson unmarshals PatternFlowRsvpRsvpChecksum from JSON text FromJson(value string) error - // Validate validates FlowDurationInterBurstGap + // Validate validates PatternFlowRsvpRsvpChecksum Validate() error // A stringer function String() string // Clones the object - Clone() (FlowDurationInterBurstGap, error) + Clone() (PatternFlowRsvpRsvpChecksum, error) validateToAndFrom() error validateObj(vObj *validation, set_default bool) setDefault() - // Choice returns FlowDurationInterBurstGapChoiceEnum, set in FlowDurationInterBurstGap - Choice() FlowDurationInterBurstGapChoiceEnum - // SetChoice assigns FlowDurationInterBurstGapChoiceEnum provided by user to FlowDurationInterBurstGap - SetChoice(value FlowDurationInterBurstGapChoiceEnum) FlowDurationInterBurstGap - // HasChoice checks if Choice has been set in FlowDurationInterBurstGap + // Choice returns PatternFlowRsvpRsvpChecksumChoiceEnum, set in PatternFlowRsvpRsvpChecksum + Choice() PatternFlowRsvpRsvpChecksumChoiceEnum + // SetChoice assigns PatternFlowRsvpRsvpChecksumChoiceEnum provided by user to PatternFlowRsvpRsvpChecksum + SetChoice(value PatternFlowRsvpRsvpChecksumChoiceEnum) PatternFlowRsvpRsvpChecksum + // HasChoice checks if Choice has been set in PatternFlowRsvpRsvpChecksum HasChoice() bool - // Bytes returns float64, set in FlowDurationInterBurstGap. - Bytes() float64 - // SetBytes assigns float64 provided by user to FlowDurationInterBurstGap - SetBytes(value float64) FlowDurationInterBurstGap - // HasBytes checks if Bytes has been set in FlowDurationInterBurstGap - HasBytes() bool - // Nanoseconds returns float64, set in FlowDurationInterBurstGap. - Nanoseconds() float64 - // SetNanoseconds assigns float64 provided by user to FlowDurationInterBurstGap - SetNanoseconds(value float64) FlowDurationInterBurstGap - // HasNanoseconds checks if Nanoseconds has been set in FlowDurationInterBurstGap - HasNanoseconds() bool - // Microseconds returns float64, set in FlowDurationInterBurstGap. - Microseconds() float64 - // SetMicroseconds assigns float64 provided by user to FlowDurationInterBurstGap - SetMicroseconds(value float64) FlowDurationInterBurstGap - // HasMicroseconds checks if Microseconds has been set in FlowDurationInterBurstGap - HasMicroseconds() bool + // Generated returns PatternFlowRsvpRsvpChecksumGeneratedEnum, set in PatternFlowRsvpRsvpChecksum + Generated() PatternFlowRsvpRsvpChecksumGeneratedEnum + // SetGenerated assigns PatternFlowRsvpRsvpChecksumGeneratedEnum provided by user to PatternFlowRsvpRsvpChecksum + SetGenerated(value PatternFlowRsvpRsvpChecksumGeneratedEnum) PatternFlowRsvpRsvpChecksum + // HasGenerated checks if Generated has been set in PatternFlowRsvpRsvpChecksum + HasGenerated() bool + // Custom returns uint32, set in PatternFlowRsvpRsvpChecksum. + Custom() uint32 + // SetCustom assigns uint32 provided by user to PatternFlowRsvpRsvpChecksum + SetCustom(value uint32) PatternFlowRsvpRsvpChecksum + // HasCustom checks if Custom has been set in PatternFlowRsvpRsvpChecksum + HasCustom() bool } -type FlowDurationInterBurstGapChoiceEnum string +type PatternFlowRsvpRsvpChecksumChoiceEnum string -// Enum of Choice on FlowDurationInterBurstGap -var FlowDurationInterBurstGapChoice = struct { - BYTES FlowDurationInterBurstGapChoiceEnum - NANOSECONDS FlowDurationInterBurstGapChoiceEnum - MICROSECONDS FlowDurationInterBurstGapChoiceEnum +// Enum of Choice on PatternFlowRsvpRsvpChecksum +var PatternFlowRsvpRsvpChecksumChoice = struct { + GENERATED PatternFlowRsvpRsvpChecksumChoiceEnum + CUSTOM PatternFlowRsvpRsvpChecksumChoiceEnum }{ - BYTES: FlowDurationInterBurstGapChoiceEnum("bytes"), - NANOSECONDS: FlowDurationInterBurstGapChoiceEnum("nanoseconds"), - MICROSECONDS: FlowDurationInterBurstGapChoiceEnum("microseconds"), + GENERATED: PatternFlowRsvpRsvpChecksumChoiceEnum("generated"), + CUSTOM: PatternFlowRsvpRsvpChecksumChoiceEnum("custom"), } -func (obj *flowDurationInterBurstGap) Choice() FlowDurationInterBurstGapChoiceEnum { - return FlowDurationInterBurstGapChoiceEnum(obj.obj.Choice.Enum().String()) +func (obj *patternFlowRsvpRsvpChecksum) Choice() PatternFlowRsvpRsvpChecksumChoiceEnum { + return PatternFlowRsvpRsvpChecksumChoiceEnum(obj.obj.Choice.Enum().String()) } -// The type of inter burst gap units. +// The type of checksum // Choice returns a string -func (obj *flowDurationInterBurstGap) HasChoice() bool { +func (obj *patternFlowRsvpRsvpChecksum) HasChoice() bool { return obj.obj.Choice != nil } -func (obj *flowDurationInterBurstGap) SetChoice(value FlowDurationInterBurstGapChoiceEnum) FlowDurationInterBurstGap { - intValue, ok := otg.FlowDurationInterBurstGap_Choice_Enum_value[string(value)] +func (obj *patternFlowRsvpRsvpChecksum) SetChoice(value PatternFlowRsvpRsvpChecksumChoiceEnum) PatternFlowRsvpRsvpChecksum { + intValue, ok := otg.PatternFlowRsvpRsvpChecksum_Choice_Enum_value[string(value)] if !ok { obj.validationErrors = append(obj.validationErrors, fmt.Sprintf( - "%s is not a valid choice on FlowDurationInterBurstGapChoiceEnum", string(value))) + "%s is not a valid choice on PatternFlowRsvpRsvpChecksumChoiceEnum", string(value))) return obj } - enumValue := otg.FlowDurationInterBurstGap_Choice_Enum(intValue) + enumValue := otg.PatternFlowRsvpRsvpChecksum_Choice_Enum(intValue) obj.obj.Choice = &enumValue - obj.obj.Microseconds = nil - obj.obj.Nanoseconds = nil - obj.obj.Bytes = nil - - if value == FlowDurationInterBurstGapChoice.BYTES { - defaultValue := float64(12) - obj.obj.Bytes = &defaultValue - } - - if value == FlowDurationInterBurstGapChoice.NANOSECONDS { - defaultValue := float64(96) - obj.obj.Nanoseconds = &defaultValue - } - - if value == FlowDurationInterBurstGapChoice.MICROSECONDS { - defaultValue := float64(0.096) - obj.obj.Microseconds = &defaultValue - } - + obj.obj.Custom = nil + obj.obj.Generated = otg.PatternFlowRsvpRsvpChecksum_Generated_unspecified.Enum() return obj } -// The amount of time between bursts expressed in bytes. -// A value of 0 indicates no gap between bursts. -// Bytes returns a float64 -func (obj *flowDurationInterBurstGap) Bytes() float64 { - - if obj.obj.Bytes == nil { - obj.SetChoice(FlowDurationInterBurstGapChoice.BYTES) - } - - return *obj.obj.Bytes +type PatternFlowRsvpRsvpChecksumGeneratedEnum string +// Enum of Generated on PatternFlowRsvpRsvpChecksum +var PatternFlowRsvpRsvpChecksumGenerated = struct { + GOOD PatternFlowRsvpRsvpChecksumGeneratedEnum + BAD PatternFlowRsvpRsvpChecksumGeneratedEnum +}{ + GOOD: PatternFlowRsvpRsvpChecksumGeneratedEnum("good"), + BAD: PatternFlowRsvpRsvpChecksumGeneratedEnum("bad"), } -// The amount of time between bursts expressed in bytes. -// A value of 0 indicates no gap between bursts. -// Bytes returns a float64 -func (obj *flowDurationInterBurstGap) HasBytes() bool { - return obj.obj.Bytes != nil +func (obj *patternFlowRsvpRsvpChecksum) Generated() PatternFlowRsvpRsvpChecksumGeneratedEnum { + return PatternFlowRsvpRsvpChecksumGeneratedEnum(obj.obj.Generated.Enum().String()) } -// The amount of time between bursts expressed in bytes. -// A value of 0 indicates no gap between bursts. -// SetBytes sets the float64 value in the FlowDurationInterBurstGap object -func (obj *flowDurationInterBurstGap) SetBytes(value float64) FlowDurationInterBurstGap { - obj.SetChoice(FlowDurationInterBurstGapChoice.BYTES) - obj.obj.Bytes = &value - return obj +// A system generated checksum value +// Generated returns a string +func (obj *patternFlowRsvpRsvpChecksum) HasGenerated() bool { + return obj.obj.Generated != nil } -// The amount of time between bursts expressed in nanoseconds. -// A value of 0 indicates no gap between bursts. -// Nanoseconds returns a float64 -func (obj *flowDurationInterBurstGap) Nanoseconds() float64 { - - if obj.obj.Nanoseconds == nil { - obj.SetChoice(FlowDurationInterBurstGapChoice.NANOSECONDS) +func (obj *patternFlowRsvpRsvpChecksum) SetGenerated(value PatternFlowRsvpRsvpChecksumGeneratedEnum) PatternFlowRsvpRsvpChecksum { + intValue, ok := otg.PatternFlowRsvpRsvpChecksum_Generated_Enum_value[string(value)] + if !ok { + obj.validationErrors = append(obj.validationErrors, fmt.Sprintf( + "%s is not a valid choice on PatternFlowRsvpRsvpChecksumGeneratedEnum", string(value))) + return obj } + enumValue := otg.PatternFlowRsvpRsvpChecksum_Generated_Enum(intValue) + obj.obj.Generated = &enumValue - return *obj.obj.Nanoseconds - -} - -// The amount of time between bursts expressed in nanoseconds. -// A value of 0 indicates no gap between bursts. -// Nanoseconds returns a float64 -func (obj *flowDurationInterBurstGap) HasNanoseconds() bool { - return obj.obj.Nanoseconds != nil -} - -// The amount of time between bursts expressed in nanoseconds. -// A value of 0 indicates no gap between bursts. -// SetNanoseconds sets the float64 value in the FlowDurationInterBurstGap object -func (obj *flowDurationInterBurstGap) SetNanoseconds(value float64) FlowDurationInterBurstGap { - obj.SetChoice(FlowDurationInterBurstGapChoice.NANOSECONDS) - obj.obj.Nanoseconds = &value return obj } -// The amount of time between bursts expressed in microseconds. -// A value of 0 indicates no gap between bursts. -// Microseconds returns a float64 -func (obj *flowDurationInterBurstGap) Microseconds() float64 { +// A custom checksum value +// Custom returns a uint32 +func (obj *patternFlowRsvpRsvpChecksum) Custom() uint32 { - if obj.obj.Microseconds == nil { - obj.SetChoice(FlowDurationInterBurstGapChoice.MICROSECONDS) + if obj.obj.Custom == nil { + obj.SetChoice(PatternFlowRsvpRsvpChecksumChoice.CUSTOM) } - return *obj.obj.Microseconds + return *obj.obj.Custom } -// The amount of time between bursts expressed in microseconds. -// A value of 0 indicates no gap between bursts. -// Microseconds returns a float64 -func (obj *flowDurationInterBurstGap) HasMicroseconds() bool { - return obj.obj.Microseconds != nil +// A custom checksum value +// Custom returns a uint32 +func (obj *patternFlowRsvpRsvpChecksum) HasCustom() bool { + return obj.obj.Custom != nil } -// The amount of time between bursts expressed in microseconds. -// A value of 0 indicates no gap between bursts. -// SetMicroseconds sets the float64 value in the FlowDurationInterBurstGap object -func (obj *flowDurationInterBurstGap) SetMicroseconds(value float64) FlowDurationInterBurstGap { - obj.SetChoice(FlowDurationInterBurstGapChoice.MICROSECONDS) - obj.obj.Microseconds = &value +// A custom checksum value +// SetCustom sets the uint32 value in the PatternFlowRsvpRsvpChecksum object +func (obj *patternFlowRsvpRsvpChecksum) SetCustom(value uint32) PatternFlowRsvpRsvpChecksum { + obj.SetChoice(PatternFlowRsvpRsvpChecksumChoice.CUSTOM) + obj.obj.Custom = &value return obj } -func (obj *flowDurationInterBurstGap) validateObj(vObj *validation, set_default bool) { +func (obj *patternFlowRsvpRsvpChecksum) validateObj(vObj *validation, set_default bool) { if set_default { obj.setDefault() } - if obj.obj.Bytes != nil { - - if *obj.obj.Bytes < 0 { - vObj.validationErrors = append( - vObj.validationErrors, - fmt.Sprintf("0 <= FlowDurationInterBurstGap.Bytes <= max(float64) but Got %f", *obj.obj.Bytes)) - } - - } - - if obj.obj.Nanoseconds != nil { - - if *obj.obj.Nanoseconds < 0 { - vObj.validationErrors = append( - vObj.validationErrors, - fmt.Sprintf("0 <= FlowDurationInterBurstGap.Nanoseconds <= max(float64) but Got %f", *obj.obj.Nanoseconds)) - } - - } - - if obj.obj.Microseconds != nil { + if obj.obj.Custom != nil { - if *obj.obj.Microseconds < 0 { + if *obj.obj.Custom > 65535 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("0 <= FlowDurationInterBurstGap.Microseconds <= max(float64) but Got %f", *obj.obj.Microseconds)) + fmt.Sprintf("0 <= PatternFlowRsvpRsvpChecksum.Custom <= 65535 but Got %d", *obj.obj.Custom)) } } } -func (obj *flowDurationInterBurstGap) setDefault() { +func (obj *patternFlowRsvpRsvpChecksum) setDefault() { if obj.obj.Choice == nil { - obj.SetChoice(FlowDurationInterBurstGapChoice.BYTES) + obj.SetChoice(PatternFlowRsvpRsvpChecksumChoice.GENERATED) + if obj.obj.Generated.Number() == 0 { + obj.SetGenerated(PatternFlowRsvpRsvpChecksumGenerated.GOOD) + + } } } -// ***** FlowRxTxRatioRxCount ***** -type flowRxTxRatioRxCount struct { +// ***** PatternFlowRsvpTimeToLive ***** +type patternFlowRsvpTimeToLive struct { validation - obj *otg.FlowRxTxRatioRxCount + obj *otg.PatternFlowRsvpTimeToLive + incrementHolder PatternFlowRsvpTimeToLiveCounter + decrementHolder PatternFlowRsvpTimeToLiveCounter } -func NewFlowRxTxRatioRxCount() FlowRxTxRatioRxCount { - obj := flowRxTxRatioRxCount{obj: &otg.FlowRxTxRatioRxCount{}} +func NewPatternFlowRsvpTimeToLive() PatternFlowRsvpTimeToLive { + obj := patternFlowRsvpTimeToLive{obj: &otg.PatternFlowRsvpTimeToLive{}} obj.setDefault() return &obj } -func (obj *flowRxTxRatioRxCount) Msg() *otg.FlowRxTxRatioRxCount { +func (obj *patternFlowRsvpTimeToLive) Msg() *otg.PatternFlowRsvpTimeToLive { return obj.obj } -func (obj *flowRxTxRatioRxCount) SetMsg(msg *otg.FlowRxTxRatioRxCount) FlowRxTxRatioRxCount { - +func (obj *patternFlowRsvpTimeToLive) SetMsg(msg *otg.PatternFlowRsvpTimeToLive) PatternFlowRsvpTimeToLive { + obj.setNil() proto.Merge(obj.obj, msg) return obj } -func (obj *flowRxTxRatioRxCount) ToProto() (*otg.FlowRxTxRatioRxCount, error) { +func (obj *patternFlowRsvpTimeToLive) ToProto() (*otg.PatternFlowRsvpTimeToLive, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -165542,7 +165677,7 @@ func (obj *flowRxTxRatioRxCount) ToProto() (*otg.FlowRxTxRatioRxCount, error) { return obj.Msg(), nil } -func (obj *flowRxTxRatioRxCount) FromProto(msg *otg.FlowRxTxRatioRxCount) (FlowRxTxRatioRxCount, error) { +func (obj *patternFlowRsvpTimeToLive) FromProto(msg *otg.PatternFlowRsvpTimeToLive) (PatternFlowRsvpTimeToLive, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -165551,7 +165686,7 @@ func (obj *flowRxTxRatioRxCount) FromProto(msg *otg.FlowRxTxRatioRxCount) (FlowR return newObj, nil } -func (obj *flowRxTxRatioRxCount) ToPbText() (string, error) { +func (obj *patternFlowRsvpTimeToLive) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -165563,12 +165698,12 @@ func (obj *flowRxTxRatioRxCount) ToPbText() (string, error) { return string(protoMarshal), nil } -func (obj *flowRxTxRatioRxCount) FromPbText(value string) error { +func (obj *patternFlowRsvpTimeToLive) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj } - + obj.setNil() vErr := obj.validateToAndFrom() if vErr != nil { return vErr @@ -165576,7 +165711,7 @@ func (obj *flowRxTxRatioRxCount) FromPbText(value string) error { return retObj } -func (obj *flowRxTxRatioRxCount) ToYaml() (string, error) { +func (obj *patternFlowRsvpTimeToLive) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -165597,7 +165732,7 @@ func (obj *flowRxTxRatioRxCount) ToYaml() (string, error) { return string(data), nil } -func (obj *flowRxTxRatioRxCount) FromYaml(value string) error { +func (obj *patternFlowRsvpTimeToLive) FromYaml(value string) error { if value == "" { value = "{}" } @@ -165614,7 +165749,7 @@ func (obj *flowRxTxRatioRxCount) FromYaml(value string) error { return fmt.Errorf("unmarshal error %s", strings.Replace( uError.Error(), "\u00a0", " ", -1)[7:]) } - + obj.setNil() vErr := obj.validateToAndFrom() if vErr != nil { return vErr @@ -165622,7 +165757,7 @@ func (obj *flowRxTxRatioRxCount) FromYaml(value string) error { return nil } -func (obj *flowRxTxRatioRxCount) ToJson() (string, error) { +func (obj *patternFlowRsvpTimeToLive) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -165640,7 +165775,7 @@ func (obj *flowRxTxRatioRxCount) ToJson() (string, error) { return string(data), nil } -func (obj *flowRxTxRatioRxCount) FromJson(value string) error { +func (obj *patternFlowRsvpTimeToLive) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -165653,7 +165788,7 @@ func (obj *flowRxTxRatioRxCount) FromJson(value string) error { return fmt.Errorf("unmarshal error %s", strings.Replace( uError.Error(), "\u00a0", " ", -1)[7:]) } - + obj.setNil() err := obj.validateToAndFrom() if err != nil { return err @@ -165661,19 +165796,19 @@ func (obj *flowRxTxRatioRxCount) FromJson(value string) error { return nil } -func (obj *flowRxTxRatioRxCount) validateToAndFrom() error { +func (obj *patternFlowRsvpTimeToLive) validateToAndFrom() error { // emptyVars() obj.validateObj(&obj.validation, true) return obj.validationResult() } -func (obj *flowRxTxRatioRxCount) Validate() error { +func (obj *patternFlowRsvpTimeToLive) Validate() error { // emptyVars() obj.validateObj(&obj.validation, false) return obj.validationResult() } -func (obj *flowRxTxRatioRxCount) String() string { +func (obj *patternFlowRsvpTimeToLive) String() string { str, err := obj.ToYaml() if err != nil { return err.Error() @@ -165681,12 +165816,12 @@ func (obj *flowRxTxRatioRxCount) String() string { return str } -func (obj *flowRxTxRatioRxCount) Clone() (FlowRxTxRatioRxCount, error) { +func (obj *patternFlowRsvpTimeToLive) Clone() (PatternFlowRsvpTimeToLive, error) { vErr := obj.Validate() if vErr != nil { return nil, vErr } - newObj := NewFlowRxTxRatioRxCount() + newObj := NewPatternFlowRsvpTimeToLive() data, err := proto.Marshal(obj.Msg()) if err != nil { return nil, err @@ -165698,77 +165833,321 @@ func (obj *flowRxTxRatioRxCount) Clone() (FlowRxTxRatioRxCount, error) { return newObj, nil } -// FlowRxTxRatioRxCount is this is for cases where one copy of Tx packet is received on all Rx ports and so the sum total of Rx packets -// received across all Rx ports is a multiple of Rx port count and Tx packets. -type FlowRxTxRatioRxCount interface { +func (obj *patternFlowRsvpTimeToLive) setNil() { + obj.incrementHolder = nil + obj.decrementHolder = nil + obj.validationErrors = nil + obj.warnings = nil + obj.constraints = make(map[string]map[string]Constraints) +} + +// PatternFlowRsvpTimeToLive is the IP time-to-live(TTL) value with which the message was sent. +type PatternFlowRsvpTimeToLive interface { Validation - // Msg marshals FlowRxTxRatioRxCount to protobuf object *otg.FlowRxTxRatioRxCount + // Msg marshals PatternFlowRsvpTimeToLive to protobuf object *otg.PatternFlowRsvpTimeToLive // and doesn't set defaults - Msg() *otg.FlowRxTxRatioRxCount - // SetMsg unmarshals FlowRxTxRatioRxCount from protobuf object *otg.FlowRxTxRatioRxCount + Msg() *otg.PatternFlowRsvpTimeToLive + // SetMsg unmarshals PatternFlowRsvpTimeToLive from protobuf object *otg.PatternFlowRsvpTimeToLive // and doesn't set defaults - SetMsg(*otg.FlowRxTxRatioRxCount) FlowRxTxRatioRxCount - // ToProto marshals FlowRxTxRatioRxCount to protobuf object *otg.FlowRxTxRatioRxCount - ToProto() (*otg.FlowRxTxRatioRxCount, error) - // ToPbText marshals FlowRxTxRatioRxCount to protobuf text + SetMsg(*otg.PatternFlowRsvpTimeToLive) PatternFlowRsvpTimeToLive + // ToProto marshals PatternFlowRsvpTimeToLive to protobuf object *otg.PatternFlowRsvpTimeToLive + ToProto() (*otg.PatternFlowRsvpTimeToLive, error) + // ToPbText marshals PatternFlowRsvpTimeToLive to protobuf text ToPbText() (string, error) - // ToYaml marshals FlowRxTxRatioRxCount to YAML text + // ToYaml marshals PatternFlowRsvpTimeToLive to YAML text ToYaml() (string, error) - // ToJson marshals FlowRxTxRatioRxCount to JSON text + // ToJson marshals PatternFlowRsvpTimeToLive to JSON text ToJson() (string, error) - // FromProto unmarshals FlowRxTxRatioRxCount from protobuf object *otg.FlowRxTxRatioRxCount - FromProto(msg *otg.FlowRxTxRatioRxCount) (FlowRxTxRatioRxCount, error) - // FromPbText unmarshals FlowRxTxRatioRxCount from protobuf text + // FromProto unmarshals PatternFlowRsvpTimeToLive from protobuf object *otg.PatternFlowRsvpTimeToLive + FromProto(msg *otg.PatternFlowRsvpTimeToLive) (PatternFlowRsvpTimeToLive, error) + // FromPbText unmarshals PatternFlowRsvpTimeToLive from protobuf text FromPbText(value string) error - // FromYaml unmarshals FlowRxTxRatioRxCount from YAML text + // FromYaml unmarshals PatternFlowRsvpTimeToLive from YAML text FromYaml(value string) error - // FromJson unmarshals FlowRxTxRatioRxCount from JSON text + // FromJson unmarshals PatternFlowRsvpTimeToLive from JSON text FromJson(value string) error - // Validate validates FlowRxTxRatioRxCount + // Validate validates PatternFlowRsvpTimeToLive Validate() error // A stringer function String() string // Clones the object - Clone() (FlowRxTxRatioRxCount, error) + Clone() (PatternFlowRsvpTimeToLive, error) validateToAndFrom() error validateObj(vObj *validation, set_default bool) setDefault() + // Choice returns PatternFlowRsvpTimeToLiveChoiceEnum, set in PatternFlowRsvpTimeToLive + Choice() PatternFlowRsvpTimeToLiveChoiceEnum + // SetChoice assigns PatternFlowRsvpTimeToLiveChoiceEnum provided by user to PatternFlowRsvpTimeToLive + SetChoice(value PatternFlowRsvpTimeToLiveChoiceEnum) PatternFlowRsvpTimeToLive + // HasChoice checks if Choice has been set in PatternFlowRsvpTimeToLive + HasChoice() bool + // Value returns uint32, set in PatternFlowRsvpTimeToLive. + Value() uint32 + // SetValue assigns uint32 provided by user to PatternFlowRsvpTimeToLive + SetValue(value uint32) PatternFlowRsvpTimeToLive + // HasValue checks if Value has been set in PatternFlowRsvpTimeToLive + HasValue() bool + // Values returns []uint32, set in PatternFlowRsvpTimeToLive. + Values() []uint32 + // SetValues assigns []uint32 provided by user to PatternFlowRsvpTimeToLive + SetValues(value []uint32) PatternFlowRsvpTimeToLive + // Increment returns PatternFlowRsvpTimeToLiveCounter, set in PatternFlowRsvpTimeToLive. + // PatternFlowRsvpTimeToLiveCounter is integer counter pattern + Increment() PatternFlowRsvpTimeToLiveCounter + // SetIncrement assigns PatternFlowRsvpTimeToLiveCounter provided by user to PatternFlowRsvpTimeToLive. + // PatternFlowRsvpTimeToLiveCounter is integer counter pattern + SetIncrement(value PatternFlowRsvpTimeToLiveCounter) PatternFlowRsvpTimeToLive + // HasIncrement checks if Increment has been set in PatternFlowRsvpTimeToLive + HasIncrement() bool + // Decrement returns PatternFlowRsvpTimeToLiveCounter, set in PatternFlowRsvpTimeToLive. + // PatternFlowRsvpTimeToLiveCounter is integer counter pattern + Decrement() PatternFlowRsvpTimeToLiveCounter + // SetDecrement assigns PatternFlowRsvpTimeToLiveCounter provided by user to PatternFlowRsvpTimeToLive. + // PatternFlowRsvpTimeToLiveCounter is integer counter pattern + SetDecrement(value PatternFlowRsvpTimeToLiveCounter) PatternFlowRsvpTimeToLive + // HasDecrement checks if Decrement has been set in PatternFlowRsvpTimeToLive + HasDecrement() bool + setNil() } -func (obj *flowRxTxRatioRxCount) validateObj(vObj *validation, set_default bool) { +type PatternFlowRsvpTimeToLiveChoiceEnum string + +// Enum of Choice on PatternFlowRsvpTimeToLive +var PatternFlowRsvpTimeToLiveChoice = struct { + VALUE PatternFlowRsvpTimeToLiveChoiceEnum + VALUES PatternFlowRsvpTimeToLiveChoiceEnum + INCREMENT PatternFlowRsvpTimeToLiveChoiceEnum + DECREMENT PatternFlowRsvpTimeToLiveChoiceEnum +}{ + VALUE: PatternFlowRsvpTimeToLiveChoiceEnum("value"), + VALUES: PatternFlowRsvpTimeToLiveChoiceEnum("values"), + INCREMENT: PatternFlowRsvpTimeToLiveChoiceEnum("increment"), + DECREMENT: PatternFlowRsvpTimeToLiveChoiceEnum("decrement"), +} + +func (obj *patternFlowRsvpTimeToLive) Choice() PatternFlowRsvpTimeToLiveChoiceEnum { + return PatternFlowRsvpTimeToLiveChoiceEnum(obj.obj.Choice.Enum().String()) +} + +// description is TBD +// Choice returns a string +func (obj *patternFlowRsvpTimeToLive) HasChoice() bool { + return obj.obj.Choice != nil +} + +func (obj *patternFlowRsvpTimeToLive) SetChoice(value PatternFlowRsvpTimeToLiveChoiceEnum) PatternFlowRsvpTimeToLive { + intValue, ok := otg.PatternFlowRsvpTimeToLive_Choice_Enum_value[string(value)] + if !ok { + obj.validationErrors = append(obj.validationErrors, fmt.Sprintf( + "%s is not a valid choice on PatternFlowRsvpTimeToLiveChoiceEnum", string(value))) + return obj + } + enumValue := otg.PatternFlowRsvpTimeToLive_Choice_Enum(intValue) + obj.obj.Choice = &enumValue + obj.obj.Decrement = nil + obj.decrementHolder = nil + obj.obj.Increment = nil + obj.incrementHolder = nil + obj.obj.Values = nil + obj.obj.Value = nil + + if value == PatternFlowRsvpTimeToLiveChoice.VALUE { + defaultValue := uint32(0) + obj.obj.Value = &defaultValue + } + + if value == PatternFlowRsvpTimeToLiveChoice.VALUES { + defaultValue := []uint32{0} + obj.obj.Values = defaultValue + } + + if value == PatternFlowRsvpTimeToLiveChoice.INCREMENT { + obj.obj.Increment = NewPatternFlowRsvpTimeToLiveCounter().Msg() + } + + if value == PatternFlowRsvpTimeToLiveChoice.DECREMENT { + obj.obj.Decrement = NewPatternFlowRsvpTimeToLiveCounter().Msg() + } + + return obj +} + +// description is TBD +// Value returns a uint32 +func (obj *patternFlowRsvpTimeToLive) Value() uint32 { + + if obj.obj.Value == nil { + obj.SetChoice(PatternFlowRsvpTimeToLiveChoice.VALUE) + } + + return *obj.obj.Value + +} + +// description is TBD +// Value returns a uint32 +func (obj *patternFlowRsvpTimeToLive) HasValue() bool { + return obj.obj.Value != nil +} + +// description is TBD +// SetValue sets the uint32 value in the PatternFlowRsvpTimeToLive object +func (obj *patternFlowRsvpTimeToLive) SetValue(value uint32) PatternFlowRsvpTimeToLive { + obj.SetChoice(PatternFlowRsvpTimeToLiveChoice.VALUE) + obj.obj.Value = &value + return obj +} + +// description is TBD +// Values returns a []uint32 +func (obj *patternFlowRsvpTimeToLive) Values() []uint32 { + if obj.obj.Values == nil { + obj.SetValues([]uint32{0}) + } + return obj.obj.Values +} + +// description is TBD +// SetValues sets the []uint32 value in the PatternFlowRsvpTimeToLive object +func (obj *patternFlowRsvpTimeToLive) SetValues(value []uint32) PatternFlowRsvpTimeToLive { + obj.SetChoice(PatternFlowRsvpTimeToLiveChoice.VALUES) + if obj.obj.Values == nil { + obj.obj.Values = make([]uint32, 0) + } + obj.obj.Values = value + + return obj +} + +// description is TBD +// Increment returns a PatternFlowRsvpTimeToLiveCounter +func (obj *patternFlowRsvpTimeToLive) Increment() PatternFlowRsvpTimeToLiveCounter { + if obj.obj.Increment == nil { + obj.SetChoice(PatternFlowRsvpTimeToLiveChoice.INCREMENT) + } + if obj.incrementHolder == nil { + obj.incrementHolder = &patternFlowRsvpTimeToLiveCounter{obj: obj.obj.Increment} + } + return obj.incrementHolder +} + +// description is TBD +// Increment returns a PatternFlowRsvpTimeToLiveCounter +func (obj *patternFlowRsvpTimeToLive) HasIncrement() bool { + return obj.obj.Increment != nil +} + +// description is TBD +// SetIncrement sets the PatternFlowRsvpTimeToLiveCounter value in the PatternFlowRsvpTimeToLive object +func (obj *patternFlowRsvpTimeToLive) SetIncrement(value PatternFlowRsvpTimeToLiveCounter) PatternFlowRsvpTimeToLive { + obj.SetChoice(PatternFlowRsvpTimeToLiveChoice.INCREMENT) + obj.incrementHolder = nil + obj.obj.Increment = value.Msg() + + return obj +} + +// description is TBD +// Decrement returns a PatternFlowRsvpTimeToLiveCounter +func (obj *patternFlowRsvpTimeToLive) Decrement() PatternFlowRsvpTimeToLiveCounter { + if obj.obj.Decrement == nil { + obj.SetChoice(PatternFlowRsvpTimeToLiveChoice.DECREMENT) + } + if obj.decrementHolder == nil { + obj.decrementHolder = &patternFlowRsvpTimeToLiveCounter{obj: obj.obj.Decrement} + } + return obj.decrementHolder +} + +// description is TBD +// Decrement returns a PatternFlowRsvpTimeToLiveCounter +func (obj *patternFlowRsvpTimeToLive) HasDecrement() bool { + return obj.obj.Decrement != nil +} + +// description is TBD +// SetDecrement sets the PatternFlowRsvpTimeToLiveCounter value in the PatternFlowRsvpTimeToLive object +func (obj *patternFlowRsvpTimeToLive) SetDecrement(value PatternFlowRsvpTimeToLiveCounter) PatternFlowRsvpTimeToLive { + obj.SetChoice(PatternFlowRsvpTimeToLiveChoice.DECREMENT) + obj.decrementHolder = nil + obj.obj.Decrement = value.Msg() + + return obj +} + +func (obj *patternFlowRsvpTimeToLive) validateObj(vObj *validation, set_default bool) { if set_default { obj.setDefault() } + if obj.obj.Value != nil { + + if *obj.obj.Value > 255 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("0 <= PatternFlowRsvpTimeToLive.Value <= 255 but Got %d", *obj.obj.Value)) + } + + } + + if obj.obj.Values != nil { + + for _, item := range obj.obj.Values { + if item > 255 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("min(uint32) <= PatternFlowRsvpTimeToLive.Values <= 255 but Got %d", item)) + } + + } + + } + + if obj.obj.Increment != nil { + + obj.Increment().validateObj(vObj, set_default) + } + + if obj.obj.Decrement != nil { + + obj.Decrement().validateObj(vObj, set_default) + } + } -func (obj *flowRxTxRatioRxCount) setDefault() { +func (obj *patternFlowRsvpTimeToLive) setDefault() { + if obj.obj.Choice == nil { + obj.SetChoice(PatternFlowRsvpTimeToLiveChoice.VALUE) + + } } -// ***** ActionProtocolIpv4PingRequest ***** -type actionProtocolIpv4PingRequest struct { +// ***** PatternFlowRsvpReserved ***** +type patternFlowRsvpReserved struct { validation - obj *otg.ActionProtocolIpv4PingRequest + obj *otg.PatternFlowRsvpReserved + incrementHolder PatternFlowRsvpReservedCounter + decrementHolder PatternFlowRsvpReservedCounter } -func NewActionProtocolIpv4PingRequest() ActionProtocolIpv4PingRequest { - obj := actionProtocolIpv4PingRequest{obj: &otg.ActionProtocolIpv4PingRequest{}} +func NewPatternFlowRsvpReserved() PatternFlowRsvpReserved { + obj := patternFlowRsvpReserved{obj: &otg.PatternFlowRsvpReserved{}} obj.setDefault() return &obj } -func (obj *actionProtocolIpv4PingRequest) Msg() *otg.ActionProtocolIpv4PingRequest { +func (obj *patternFlowRsvpReserved) Msg() *otg.PatternFlowRsvpReserved { return obj.obj } -func (obj *actionProtocolIpv4PingRequest) SetMsg(msg *otg.ActionProtocolIpv4PingRequest) ActionProtocolIpv4PingRequest { - +func (obj *patternFlowRsvpReserved) SetMsg(msg *otg.PatternFlowRsvpReserved) PatternFlowRsvpReserved { + obj.setNil() proto.Merge(obj.obj, msg) return obj } -func (obj *actionProtocolIpv4PingRequest) ToProto() (*otg.ActionProtocolIpv4PingRequest, error) { +func (obj *patternFlowRsvpReserved) ToProto() (*otg.PatternFlowRsvpReserved, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -165776,7 +166155,7 @@ func (obj *actionProtocolIpv4PingRequest) ToProto() (*otg.ActionProtocolIpv4Ping return obj.Msg(), nil } -func (obj *actionProtocolIpv4PingRequest) FromProto(msg *otg.ActionProtocolIpv4PingRequest) (ActionProtocolIpv4PingRequest, error) { +func (obj *patternFlowRsvpReserved) FromProto(msg *otg.PatternFlowRsvpReserved) (PatternFlowRsvpReserved, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -165785,7 +166164,7 @@ func (obj *actionProtocolIpv4PingRequest) FromProto(msg *otg.ActionProtocolIpv4P return newObj, nil } -func (obj *actionProtocolIpv4PingRequest) ToPbText() (string, error) { +func (obj *patternFlowRsvpReserved) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -165797,12 +166176,12 @@ func (obj *actionProtocolIpv4PingRequest) ToPbText() (string, error) { return string(protoMarshal), nil } -func (obj *actionProtocolIpv4PingRequest) FromPbText(value string) error { +func (obj *patternFlowRsvpReserved) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj } - + obj.setNil() vErr := obj.validateToAndFrom() if vErr != nil { return vErr @@ -165810,7 +166189,7 @@ func (obj *actionProtocolIpv4PingRequest) FromPbText(value string) error { return retObj } -func (obj *actionProtocolIpv4PingRequest) ToYaml() (string, error) { +func (obj *patternFlowRsvpReserved) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -165831,7 +166210,7 @@ func (obj *actionProtocolIpv4PingRequest) ToYaml() (string, error) { return string(data), nil } -func (obj *actionProtocolIpv4PingRequest) FromYaml(value string) error { +func (obj *patternFlowRsvpReserved) FromYaml(value string) error { if value == "" { value = "{}" } @@ -165848,7 +166227,7 @@ func (obj *actionProtocolIpv4PingRequest) FromYaml(value string) error { return fmt.Errorf("unmarshal error %s", strings.Replace( uError.Error(), "\u00a0", " ", -1)[7:]) } - + obj.setNil() vErr := obj.validateToAndFrom() if vErr != nil { return vErr @@ -165856,7 +166235,7 @@ func (obj *actionProtocolIpv4PingRequest) FromYaml(value string) error { return nil } -func (obj *actionProtocolIpv4PingRequest) ToJson() (string, error) { +func (obj *patternFlowRsvpReserved) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -165874,7 +166253,7 @@ func (obj *actionProtocolIpv4PingRequest) ToJson() (string, error) { return string(data), nil } -func (obj *actionProtocolIpv4PingRequest) FromJson(value string) error { +func (obj *patternFlowRsvpReserved) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -165887,7 +166266,7 @@ func (obj *actionProtocolIpv4PingRequest) FromJson(value string) error { return fmt.Errorf("unmarshal error %s", strings.Replace( uError.Error(), "\u00a0", " ", -1)[7:]) } - + obj.setNil() err := obj.validateToAndFrom() if err != nil { return err @@ -165895,19 +166274,19 @@ func (obj *actionProtocolIpv4PingRequest) FromJson(value string) error { return nil } -func (obj *actionProtocolIpv4PingRequest) validateToAndFrom() error { +func (obj *patternFlowRsvpReserved) validateToAndFrom() error { // emptyVars() obj.validateObj(&obj.validation, true) return obj.validationResult() } -func (obj *actionProtocolIpv4PingRequest) Validate() error { +func (obj *patternFlowRsvpReserved) Validate() error { // emptyVars() obj.validateObj(&obj.validation, false) return obj.validationResult() } -func (obj *actionProtocolIpv4PingRequest) String() string { +func (obj *patternFlowRsvpReserved) String() string { str, err := obj.ToYaml() if err != nil { return err.Error() @@ -165915,12 +166294,12 @@ func (obj *actionProtocolIpv4PingRequest) String() string { return str } -func (obj *actionProtocolIpv4PingRequest) Clone() (ActionProtocolIpv4PingRequest, error) { +func (obj *patternFlowRsvpReserved) Clone() (PatternFlowRsvpReserved, error) { vErr := obj.Validate() if vErr != nil { return nil, vErr } - newObj := NewActionProtocolIpv4PingRequest() + newObj := NewPatternFlowRsvpReserved() data, err := proto.Marshal(obj.Msg()) if err != nil { return nil, err @@ -165932,169 +166311,319 @@ func (obj *actionProtocolIpv4PingRequest) Clone() (ActionProtocolIpv4PingRequest return newObj, nil } -// ActionProtocolIpv4PingRequest is under Review: Most ping request parameters are still TBD. -// -// Under Review: Most ping request parameters are still TBD. -// -// Request for initiating ping between a single source and destination pair. -// For ping request, 1 IPv4 ICMP Echo Request shall be sent and wait for ping response to either succeed or time out. The API wait timeout for each request shall be 300ms. -type ActionProtocolIpv4PingRequest interface { +func (obj *patternFlowRsvpReserved) setNil() { + obj.incrementHolder = nil + obj.decrementHolder = nil + obj.validationErrors = nil + obj.warnings = nil + obj.constraints = make(map[string]map[string]Constraints) +} + +// PatternFlowRsvpReserved is reserved +type PatternFlowRsvpReserved interface { Validation - // Msg marshals ActionProtocolIpv4PingRequest to protobuf object *otg.ActionProtocolIpv4PingRequest + // Msg marshals PatternFlowRsvpReserved to protobuf object *otg.PatternFlowRsvpReserved // and doesn't set defaults - Msg() *otg.ActionProtocolIpv4PingRequest - // SetMsg unmarshals ActionProtocolIpv4PingRequest from protobuf object *otg.ActionProtocolIpv4PingRequest + Msg() *otg.PatternFlowRsvpReserved + // SetMsg unmarshals PatternFlowRsvpReserved from protobuf object *otg.PatternFlowRsvpReserved // and doesn't set defaults - SetMsg(*otg.ActionProtocolIpv4PingRequest) ActionProtocolIpv4PingRequest - // ToProto marshals ActionProtocolIpv4PingRequest to protobuf object *otg.ActionProtocolIpv4PingRequest - ToProto() (*otg.ActionProtocolIpv4PingRequest, error) - // ToPbText marshals ActionProtocolIpv4PingRequest to protobuf text + SetMsg(*otg.PatternFlowRsvpReserved) PatternFlowRsvpReserved + // ToProto marshals PatternFlowRsvpReserved to protobuf object *otg.PatternFlowRsvpReserved + ToProto() (*otg.PatternFlowRsvpReserved, error) + // ToPbText marshals PatternFlowRsvpReserved to protobuf text ToPbText() (string, error) - // ToYaml marshals ActionProtocolIpv4PingRequest to YAML text + // ToYaml marshals PatternFlowRsvpReserved to YAML text ToYaml() (string, error) - // ToJson marshals ActionProtocolIpv4PingRequest to JSON text + // ToJson marshals PatternFlowRsvpReserved to JSON text ToJson() (string, error) - // FromProto unmarshals ActionProtocolIpv4PingRequest from protobuf object *otg.ActionProtocolIpv4PingRequest - FromProto(msg *otg.ActionProtocolIpv4PingRequest) (ActionProtocolIpv4PingRequest, error) - // FromPbText unmarshals ActionProtocolIpv4PingRequest from protobuf text + // FromProto unmarshals PatternFlowRsvpReserved from protobuf object *otg.PatternFlowRsvpReserved + FromProto(msg *otg.PatternFlowRsvpReserved) (PatternFlowRsvpReserved, error) + // FromPbText unmarshals PatternFlowRsvpReserved from protobuf text FromPbText(value string) error - // FromYaml unmarshals ActionProtocolIpv4PingRequest from YAML text + // FromYaml unmarshals PatternFlowRsvpReserved from YAML text FromYaml(value string) error - // FromJson unmarshals ActionProtocolIpv4PingRequest from JSON text + // FromJson unmarshals PatternFlowRsvpReserved from JSON text FromJson(value string) error - // Validate validates ActionProtocolIpv4PingRequest + // Validate validates PatternFlowRsvpReserved Validate() error // A stringer function String() string // Clones the object - Clone() (ActionProtocolIpv4PingRequest, error) + Clone() (PatternFlowRsvpReserved, error) validateToAndFrom() error validateObj(vObj *validation, set_default bool) setDefault() - // SrcName returns string, set in ActionProtocolIpv4PingRequest. - SrcName() string - // SetSrcName assigns string provided by user to ActionProtocolIpv4PingRequest - SetSrcName(value string) ActionProtocolIpv4PingRequest - // HasSrcName checks if SrcName has been set in ActionProtocolIpv4PingRequest - HasSrcName() bool - // DstIp returns string, set in ActionProtocolIpv4PingRequest. - DstIp() string - // SetDstIp assigns string provided by user to ActionProtocolIpv4PingRequest - SetDstIp(value string) ActionProtocolIpv4PingRequest - // HasDstIp checks if DstIp has been set in ActionProtocolIpv4PingRequest - HasDstIp() bool + // Choice returns PatternFlowRsvpReservedChoiceEnum, set in PatternFlowRsvpReserved + Choice() PatternFlowRsvpReservedChoiceEnum + // SetChoice assigns PatternFlowRsvpReservedChoiceEnum provided by user to PatternFlowRsvpReserved + SetChoice(value PatternFlowRsvpReservedChoiceEnum) PatternFlowRsvpReserved + // HasChoice checks if Choice has been set in PatternFlowRsvpReserved + HasChoice() bool + // Value returns uint32, set in PatternFlowRsvpReserved. + Value() uint32 + // SetValue assigns uint32 provided by user to PatternFlowRsvpReserved + SetValue(value uint32) PatternFlowRsvpReserved + // HasValue checks if Value has been set in PatternFlowRsvpReserved + HasValue() bool + // Values returns []uint32, set in PatternFlowRsvpReserved. + Values() []uint32 + // SetValues assigns []uint32 provided by user to PatternFlowRsvpReserved + SetValues(value []uint32) PatternFlowRsvpReserved + // Increment returns PatternFlowRsvpReservedCounter, set in PatternFlowRsvpReserved. + // PatternFlowRsvpReservedCounter is integer counter pattern + Increment() PatternFlowRsvpReservedCounter + // SetIncrement assigns PatternFlowRsvpReservedCounter provided by user to PatternFlowRsvpReserved. + // PatternFlowRsvpReservedCounter is integer counter pattern + SetIncrement(value PatternFlowRsvpReservedCounter) PatternFlowRsvpReserved + // HasIncrement checks if Increment has been set in PatternFlowRsvpReserved + HasIncrement() bool + // Decrement returns PatternFlowRsvpReservedCounter, set in PatternFlowRsvpReserved. + // PatternFlowRsvpReservedCounter is integer counter pattern + Decrement() PatternFlowRsvpReservedCounter + // SetDecrement assigns PatternFlowRsvpReservedCounter provided by user to PatternFlowRsvpReserved. + // PatternFlowRsvpReservedCounter is integer counter pattern + SetDecrement(value PatternFlowRsvpReservedCounter) PatternFlowRsvpReserved + // HasDecrement checks if Decrement has been set in PatternFlowRsvpReserved + HasDecrement() bool + setNil() } -// Name of source IPv4 interface to be used. -// -// x-constraint: -// - /components/schemas/Device.Ipv4/properties/name -// -// x-constraint: -// - /components/schemas/Device.Ipv4/properties/name -// -// SrcName returns a string -func (obj *actionProtocolIpv4PingRequest) SrcName() string { +type PatternFlowRsvpReservedChoiceEnum string - return *obj.obj.SrcName +// Enum of Choice on PatternFlowRsvpReserved +var PatternFlowRsvpReservedChoice = struct { + VALUE PatternFlowRsvpReservedChoiceEnum + VALUES PatternFlowRsvpReservedChoiceEnum + INCREMENT PatternFlowRsvpReservedChoiceEnum + DECREMENT PatternFlowRsvpReservedChoiceEnum +}{ + VALUE: PatternFlowRsvpReservedChoiceEnum("value"), + VALUES: PatternFlowRsvpReservedChoiceEnum("values"), + INCREMENT: PatternFlowRsvpReservedChoiceEnum("increment"), + DECREMENT: PatternFlowRsvpReservedChoiceEnum("decrement"), +} +func (obj *patternFlowRsvpReserved) Choice() PatternFlowRsvpReservedChoiceEnum { + return PatternFlowRsvpReservedChoiceEnum(obj.obj.Choice.Enum().String()) } -// Name of source IPv4 interface to be used. -// -// x-constraint: -// - /components/schemas/Device.Ipv4/properties/name -// -// x-constraint: -// - /components/schemas/Device.Ipv4/properties/name -// -// SrcName returns a string -func (obj *actionProtocolIpv4PingRequest) HasSrcName() bool { - return obj.obj.SrcName != nil +// description is TBD +// Choice returns a string +func (obj *patternFlowRsvpReserved) HasChoice() bool { + return obj.obj.Choice != nil } -// Name of source IPv4 interface to be used. -// -// x-constraint: -// - /components/schemas/Device.Ipv4/properties/name -// -// x-constraint: -// - /components/schemas/Device.Ipv4/properties/name -// -// SetSrcName sets the string value in the ActionProtocolIpv4PingRequest object -func (obj *actionProtocolIpv4PingRequest) SetSrcName(value string) ActionProtocolIpv4PingRequest { +func (obj *patternFlowRsvpReserved) SetChoice(value PatternFlowRsvpReservedChoiceEnum) PatternFlowRsvpReserved { + intValue, ok := otg.PatternFlowRsvpReserved_Choice_Enum_value[string(value)] + if !ok { + obj.validationErrors = append(obj.validationErrors, fmt.Sprintf( + "%s is not a valid choice on PatternFlowRsvpReservedChoiceEnum", string(value))) + return obj + } + enumValue := otg.PatternFlowRsvpReserved_Choice_Enum(intValue) + obj.obj.Choice = &enumValue + obj.obj.Decrement = nil + obj.decrementHolder = nil + obj.obj.Increment = nil + obj.incrementHolder = nil + obj.obj.Values = nil + obj.obj.Value = nil + + if value == PatternFlowRsvpReservedChoice.VALUE { + defaultValue := uint32(0) + obj.obj.Value = &defaultValue + } + + if value == PatternFlowRsvpReservedChoice.VALUES { + defaultValue := []uint32{0} + obj.obj.Values = defaultValue + } + + if value == PatternFlowRsvpReservedChoice.INCREMENT { + obj.obj.Increment = NewPatternFlowRsvpReservedCounter().Msg() + } + + if value == PatternFlowRsvpReservedChoice.DECREMENT { + obj.obj.Decrement = NewPatternFlowRsvpReservedCounter().Msg() + } - obj.obj.SrcName = &value return obj } -// Destination IPv4 address to ping. -// DstIp returns a string -func (obj *actionProtocolIpv4PingRequest) DstIp() string { +// description is TBD +// Value returns a uint32 +func (obj *patternFlowRsvpReserved) Value() uint32 { - return *obj.obj.DstIp + if obj.obj.Value == nil { + obj.SetChoice(PatternFlowRsvpReservedChoice.VALUE) + } + + return *obj.obj.Value } -// Destination IPv4 address to ping. -// DstIp returns a string -func (obj *actionProtocolIpv4PingRequest) HasDstIp() bool { - return obj.obj.DstIp != nil +// description is TBD +// Value returns a uint32 +func (obj *patternFlowRsvpReserved) HasValue() bool { + return obj.obj.Value != nil } -// Destination IPv4 address to ping. -// SetDstIp sets the string value in the ActionProtocolIpv4PingRequest object -func (obj *actionProtocolIpv4PingRequest) SetDstIp(value string) ActionProtocolIpv4PingRequest { +// description is TBD +// SetValue sets the uint32 value in the PatternFlowRsvpReserved object +func (obj *patternFlowRsvpReserved) SetValue(value uint32) PatternFlowRsvpReserved { + obj.SetChoice(PatternFlowRsvpReservedChoice.VALUE) + obj.obj.Value = &value + return obj +} + +// description is TBD +// Values returns a []uint32 +func (obj *patternFlowRsvpReserved) Values() []uint32 { + if obj.obj.Values == nil { + obj.SetValues([]uint32{0}) + } + return obj.obj.Values +} + +// description is TBD +// SetValues sets the []uint32 value in the PatternFlowRsvpReserved object +func (obj *patternFlowRsvpReserved) SetValues(value []uint32) PatternFlowRsvpReserved { + obj.SetChoice(PatternFlowRsvpReservedChoice.VALUES) + if obj.obj.Values == nil { + obj.obj.Values = make([]uint32, 0) + } + obj.obj.Values = value - obj.obj.DstIp = &value return obj } -func (obj *actionProtocolIpv4PingRequest) validateObj(vObj *validation, set_default bool) { +// description is TBD +// Increment returns a PatternFlowRsvpReservedCounter +func (obj *patternFlowRsvpReserved) Increment() PatternFlowRsvpReservedCounter { + if obj.obj.Increment == nil { + obj.SetChoice(PatternFlowRsvpReservedChoice.INCREMENT) + } + if obj.incrementHolder == nil { + obj.incrementHolder = &patternFlowRsvpReservedCounter{obj: obj.obj.Increment} + } + return obj.incrementHolder +} + +// description is TBD +// Increment returns a PatternFlowRsvpReservedCounter +func (obj *patternFlowRsvpReserved) HasIncrement() bool { + return obj.obj.Increment != nil +} + +// description is TBD +// SetIncrement sets the PatternFlowRsvpReservedCounter value in the PatternFlowRsvpReserved object +func (obj *patternFlowRsvpReserved) SetIncrement(value PatternFlowRsvpReservedCounter) PatternFlowRsvpReserved { + obj.SetChoice(PatternFlowRsvpReservedChoice.INCREMENT) + obj.incrementHolder = nil + obj.obj.Increment = value.Msg() + + return obj +} + +// description is TBD +// Decrement returns a PatternFlowRsvpReservedCounter +func (obj *patternFlowRsvpReserved) Decrement() PatternFlowRsvpReservedCounter { + if obj.obj.Decrement == nil { + obj.SetChoice(PatternFlowRsvpReservedChoice.DECREMENT) + } + if obj.decrementHolder == nil { + obj.decrementHolder = &patternFlowRsvpReservedCounter{obj: obj.obj.Decrement} + } + return obj.decrementHolder +} + +// description is TBD +// Decrement returns a PatternFlowRsvpReservedCounter +func (obj *patternFlowRsvpReserved) HasDecrement() bool { + return obj.obj.Decrement != nil +} + +// description is TBD +// SetDecrement sets the PatternFlowRsvpReservedCounter value in the PatternFlowRsvpReserved object +func (obj *patternFlowRsvpReserved) SetDecrement(value PatternFlowRsvpReservedCounter) PatternFlowRsvpReserved { + obj.SetChoice(PatternFlowRsvpReservedChoice.DECREMENT) + obj.decrementHolder = nil + obj.obj.Decrement = value.Msg() + + return obj +} + +func (obj *patternFlowRsvpReserved) validateObj(vObj *validation, set_default bool) { if set_default { obj.setDefault() } - obj.addWarnings("ActionProtocolIpv4PingRequest is under review, Most ping request parameters are still TBD.") + if obj.obj.Value != nil { - if obj.obj.DstIp != nil { + if *obj.obj.Value > 255 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("0 <= PatternFlowRsvpReserved.Value <= 255 but Got %d", *obj.obj.Value)) + } + + } + + if obj.obj.Values != nil { + + for _, item := range obj.obj.Values { + if item > 255 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("min(uint32) <= PatternFlowRsvpReserved.Values <= 255 but Got %d", item)) + } - err := obj.validateIpv4(obj.DstIp()) - if err != nil { - vObj.validationErrors = append(vObj.validationErrors, fmt.Sprintf("%s %s", err.Error(), "on ActionProtocolIpv4PingRequest.DstIp")) } } + if obj.obj.Increment != nil { + + obj.Increment().validateObj(vObj, set_default) + } + + if obj.obj.Decrement != nil { + + obj.Decrement().validateObj(vObj, set_default) + } + } -func (obj *actionProtocolIpv4PingRequest) setDefault() { +func (obj *patternFlowRsvpReserved) setDefault() { + if obj.obj.Choice == nil { + obj.SetChoice(PatternFlowRsvpReservedChoice.VALUE) + + } } -// ***** ActionProtocolIpv6PingRequest ***** -type actionProtocolIpv6PingRequest struct { +// ***** FlowRSVPLength ***** +type flowRSVPLength struct { validation - obj *otg.ActionProtocolIpv6PingRequest + obj *otg.FlowRSVPLength } -func NewActionProtocolIpv6PingRequest() ActionProtocolIpv6PingRequest { - obj := actionProtocolIpv6PingRequest{obj: &otg.ActionProtocolIpv6PingRequest{}} +func NewFlowRSVPLength() FlowRSVPLength { + obj := flowRSVPLength{obj: &otg.FlowRSVPLength{}} obj.setDefault() return &obj } -func (obj *actionProtocolIpv6PingRequest) Msg() *otg.ActionProtocolIpv6PingRequest { +func (obj *flowRSVPLength) Msg() *otg.FlowRSVPLength { return obj.obj } -func (obj *actionProtocolIpv6PingRequest) SetMsg(msg *otg.ActionProtocolIpv6PingRequest) ActionProtocolIpv6PingRequest { +func (obj *flowRSVPLength) SetMsg(msg *otg.FlowRSVPLength) FlowRSVPLength { proto.Merge(obj.obj, msg) return obj } -func (obj *actionProtocolIpv6PingRequest) ToProto() (*otg.ActionProtocolIpv6PingRequest, error) { +func (obj *flowRSVPLength) ToProto() (*otg.FlowRSVPLength, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -166102,7 +166631,7 @@ func (obj *actionProtocolIpv6PingRequest) ToProto() (*otg.ActionProtocolIpv6Ping return obj.Msg(), nil } -func (obj *actionProtocolIpv6PingRequest) FromProto(msg *otg.ActionProtocolIpv6PingRequest) (ActionProtocolIpv6PingRequest, error) { +func (obj *flowRSVPLength) FromProto(msg *otg.FlowRSVPLength) (FlowRSVPLength, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -166111,7 +166640,7 @@ func (obj *actionProtocolIpv6PingRequest) FromProto(msg *otg.ActionProtocolIpv6P return newObj, nil } -func (obj *actionProtocolIpv6PingRequest) ToPbText() (string, error) { +func (obj *flowRSVPLength) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -166123,7 +166652,7 @@ func (obj *actionProtocolIpv6PingRequest) ToPbText() (string, error) { return string(protoMarshal), nil } -func (obj *actionProtocolIpv6PingRequest) FromPbText(value string) error { +func (obj *flowRSVPLength) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj @@ -166136,7 +166665,7 @@ func (obj *actionProtocolIpv6PingRequest) FromPbText(value string) error { return retObj } -func (obj *actionProtocolIpv6PingRequest) ToYaml() (string, error) { +func (obj *flowRSVPLength) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -166157,7 +166686,7 @@ func (obj *actionProtocolIpv6PingRequest) ToYaml() (string, error) { return string(data), nil } -func (obj *actionProtocolIpv6PingRequest) FromYaml(value string) error { +func (obj *flowRSVPLength) FromYaml(value string) error { if value == "" { value = "{}" } @@ -166182,7 +166711,7 @@ func (obj *actionProtocolIpv6PingRequest) FromYaml(value string) error { return nil } -func (obj *actionProtocolIpv6PingRequest) ToJson() (string, error) { +func (obj *flowRSVPLength) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -166200,7 +166729,7 @@ func (obj *actionProtocolIpv6PingRequest) ToJson() (string, error) { return string(data), nil } -func (obj *actionProtocolIpv6PingRequest) FromJson(value string) error { +func (obj *flowRSVPLength) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -166221,19 +166750,19 @@ func (obj *actionProtocolIpv6PingRequest) FromJson(value string) error { return nil } -func (obj *actionProtocolIpv6PingRequest) validateToAndFrom() error { +func (obj *flowRSVPLength) validateToAndFrom() error { // emptyVars() obj.validateObj(&obj.validation, true) return obj.validationResult() } -func (obj *actionProtocolIpv6PingRequest) Validate() error { +func (obj *flowRSVPLength) Validate() error { // emptyVars() obj.validateObj(&obj.validation, false) return obj.validationResult() } -func (obj *actionProtocolIpv6PingRequest) String() string { +func (obj *flowRSVPLength) String() string { str, err := obj.ToYaml() if err != nil { return err.Error() @@ -166241,12 +166770,12 @@ func (obj *actionProtocolIpv6PingRequest) String() string { return str } -func (obj *actionProtocolIpv6PingRequest) Clone() (ActionProtocolIpv6PingRequest, error) { +func (obj *flowRSVPLength) Clone() (FlowRSVPLength, error) { vErr := obj.Validate() if vErr != nil { return nil, vErr } - newObj := NewActionProtocolIpv6PingRequest() + newObj := NewFlowRSVPLength() data, err := proto.Marshal(obj.Msg()) if err != nil { return nil, err @@ -166258,169 +166787,207 @@ func (obj *actionProtocolIpv6PingRequest) Clone() (ActionProtocolIpv6PingRequest return newObj, nil } -// ActionProtocolIpv6PingRequest is under Review: Most ping request parameters are still TBD. -// -// Under Review: Most ping request parameters are still TBD. -// -// Request for initiating ping between a single source and destination pair. -// For ping request, 1 IPv6 ICMP Echo Request shall be sent and wait for ping response to either succeed or time out. The API wait timeout for each request shall be 300ms. -type ActionProtocolIpv6PingRequest interface { +// FlowRSVPLength is description is TBD +type FlowRSVPLength interface { Validation - // Msg marshals ActionProtocolIpv6PingRequest to protobuf object *otg.ActionProtocolIpv6PingRequest + // Msg marshals FlowRSVPLength to protobuf object *otg.FlowRSVPLength // and doesn't set defaults - Msg() *otg.ActionProtocolIpv6PingRequest - // SetMsg unmarshals ActionProtocolIpv6PingRequest from protobuf object *otg.ActionProtocolIpv6PingRequest + Msg() *otg.FlowRSVPLength + // SetMsg unmarshals FlowRSVPLength from protobuf object *otg.FlowRSVPLength // and doesn't set defaults - SetMsg(*otg.ActionProtocolIpv6PingRequest) ActionProtocolIpv6PingRequest - // ToProto marshals ActionProtocolIpv6PingRequest to protobuf object *otg.ActionProtocolIpv6PingRequest - ToProto() (*otg.ActionProtocolIpv6PingRequest, error) - // ToPbText marshals ActionProtocolIpv6PingRequest to protobuf text + SetMsg(*otg.FlowRSVPLength) FlowRSVPLength + // ToProto marshals FlowRSVPLength to protobuf object *otg.FlowRSVPLength + ToProto() (*otg.FlowRSVPLength, error) + // ToPbText marshals FlowRSVPLength to protobuf text ToPbText() (string, error) - // ToYaml marshals ActionProtocolIpv6PingRequest to YAML text + // ToYaml marshals FlowRSVPLength to YAML text ToYaml() (string, error) - // ToJson marshals ActionProtocolIpv6PingRequest to JSON text + // ToJson marshals FlowRSVPLength to JSON text ToJson() (string, error) - // FromProto unmarshals ActionProtocolIpv6PingRequest from protobuf object *otg.ActionProtocolIpv6PingRequest - FromProto(msg *otg.ActionProtocolIpv6PingRequest) (ActionProtocolIpv6PingRequest, error) - // FromPbText unmarshals ActionProtocolIpv6PingRequest from protobuf text + // FromProto unmarshals FlowRSVPLength from protobuf object *otg.FlowRSVPLength + FromProto(msg *otg.FlowRSVPLength) (FlowRSVPLength, error) + // FromPbText unmarshals FlowRSVPLength from protobuf text FromPbText(value string) error - // FromYaml unmarshals ActionProtocolIpv6PingRequest from YAML text + // FromYaml unmarshals FlowRSVPLength from YAML text FromYaml(value string) error - // FromJson unmarshals ActionProtocolIpv6PingRequest from JSON text + // FromJson unmarshals FlowRSVPLength from JSON text FromJson(value string) error - // Validate validates ActionProtocolIpv6PingRequest + // Validate validates FlowRSVPLength Validate() error // A stringer function String() string // Clones the object - Clone() (ActionProtocolIpv6PingRequest, error) + Clone() (FlowRSVPLength, error) validateToAndFrom() error validateObj(vObj *validation, set_default bool) setDefault() - // SrcName returns string, set in ActionProtocolIpv6PingRequest. - SrcName() string - // SetSrcName assigns string provided by user to ActionProtocolIpv6PingRequest - SetSrcName(value string) ActionProtocolIpv6PingRequest - // HasSrcName checks if SrcName has been set in ActionProtocolIpv6PingRequest - HasSrcName() bool - // DstIp returns string, set in ActionProtocolIpv6PingRequest. - DstIp() string - // SetDstIp assigns string provided by user to ActionProtocolIpv6PingRequest - SetDstIp(value string) ActionProtocolIpv6PingRequest - // HasDstIp checks if DstIp has been set in ActionProtocolIpv6PingRequest - HasDstIp() bool + // Choice returns FlowRSVPLengthChoiceEnum, set in FlowRSVPLength + Choice() FlowRSVPLengthChoiceEnum + // SetChoice assigns FlowRSVPLengthChoiceEnum provided by user to FlowRSVPLength + SetChoice(value FlowRSVPLengthChoiceEnum) FlowRSVPLength + // HasChoice checks if Choice has been set in FlowRSVPLength + HasChoice() bool + // Auto returns uint32, set in FlowRSVPLength. + Auto() uint32 + // HasAuto checks if Auto has been set in FlowRSVPLength + HasAuto() bool + // Value returns uint32, set in FlowRSVPLength. + Value() uint32 + // SetValue assigns uint32 provided by user to FlowRSVPLength + SetValue(value uint32) FlowRSVPLength + // HasValue checks if Value has been set in FlowRSVPLength + HasValue() bool } -// Name of source IPv6 interface to be used. -// -// x-constraint: -// - /components/schemas/Device.Ipv6/properties/name -// -// x-constraint: -// - /components/schemas/Device.Ipv6/properties/name -// -// SrcName returns a string -func (obj *actionProtocolIpv6PingRequest) SrcName() string { +type FlowRSVPLengthChoiceEnum string - return *obj.obj.SrcName +// Enum of Choice on FlowRSVPLength +var FlowRSVPLengthChoice = struct { + AUTO FlowRSVPLengthChoiceEnum + VALUE FlowRSVPLengthChoiceEnum +}{ + AUTO: FlowRSVPLengthChoiceEnum("auto"), + VALUE: FlowRSVPLengthChoiceEnum("value"), +} +func (obj *flowRSVPLength) Choice() FlowRSVPLengthChoiceEnum { + return FlowRSVPLengthChoiceEnum(obj.obj.Choice.Enum().String()) } -// Name of source IPv6 interface to be used. -// -// x-constraint: -// - /components/schemas/Device.Ipv6/properties/name -// -// x-constraint: -// - /components/schemas/Device.Ipv6/properties/name -// -// SrcName returns a string -func (obj *actionProtocolIpv6PingRequest) HasSrcName() bool { - return obj.obj.SrcName != nil +// auto or configured value. +// Choice returns a string +func (obj *flowRSVPLength) HasChoice() bool { + return obj.obj.Choice != nil } -// Name of source IPv6 interface to be used. -// -// x-constraint: -// - /components/schemas/Device.Ipv6/properties/name -// -// x-constraint: -// - /components/schemas/Device.Ipv6/properties/name -// -// SetSrcName sets the string value in the ActionProtocolIpv6PingRequest object -func (obj *actionProtocolIpv6PingRequest) SetSrcName(value string) ActionProtocolIpv6PingRequest { +func (obj *flowRSVPLength) SetChoice(value FlowRSVPLengthChoiceEnum) FlowRSVPLength { + intValue, ok := otg.FlowRSVPLength_Choice_Enum_value[string(value)] + if !ok { + obj.validationErrors = append(obj.validationErrors, fmt.Sprintf( + "%s is not a valid choice on FlowRSVPLengthChoiceEnum", string(value))) + return obj + } + enumValue := otg.FlowRSVPLength_Choice_Enum(intValue) + obj.obj.Choice = &enumValue + obj.obj.Value = nil + obj.obj.Auto = nil + + if value == FlowRSVPLengthChoice.AUTO { + defaultValue := uint32(0) + obj.obj.Auto = &defaultValue + } + + if value == FlowRSVPLengthChoice.VALUE { + defaultValue := uint32(0) + obj.obj.Value = &defaultValue + } - obj.obj.SrcName = &value return obj } -// Destination IPv6 address to ping. -// DstIp returns a string -func (obj *actionProtocolIpv6PingRequest) DstIp() string { +// The OTG implementation can provide a system generated value for this property. If the OTG is unable to generate a value the default value must be used. +// Auto returns a uint32 +func (obj *flowRSVPLength) Auto() uint32 { - return *obj.obj.DstIp + if obj.obj.Auto == nil { + obj.SetChoice(FlowRSVPLengthChoice.AUTO) + } -} + return *obj.obj.Auto -// Destination IPv6 address to ping. -// DstIp returns a string -func (obj *actionProtocolIpv6PingRequest) HasDstIp() bool { - return obj.obj.DstIp != nil } -// Destination IPv6 address to ping. -// SetDstIp sets the string value in the ActionProtocolIpv6PingRequest object -func (obj *actionProtocolIpv6PingRequest) SetDstIp(value string) ActionProtocolIpv6PingRequest { - - obj.obj.DstIp = &value - return obj +// The OTG implementation can provide a system generated value for this property. If the OTG is unable to generate a value the default value must be used. +// Auto returns a uint32 +func (obj *flowRSVPLength) HasAuto() bool { + return obj.obj.Auto != nil } -func (obj *actionProtocolIpv6PingRequest) validateObj(vObj *validation, set_default bool) { - if set_default { - obj.setDefault() +// description is TBD +// Value returns a uint32 +func (obj *flowRSVPLength) Value() uint32 { + + if obj.obj.Value == nil { + obj.SetChoice(FlowRSVPLengthChoice.VALUE) } - obj.addWarnings("ActionProtocolIpv6PingRequest is under review, Most ping request parameters are still TBD.") + return *obj.obj.Value - if obj.obj.DstIp != nil { +} - err := obj.validateIpv6(obj.DstIp()) - if err != nil { - vObj.validationErrors = append(vObj.validationErrors, fmt.Sprintf("%s %s", err.Error(), "on ActionProtocolIpv6PingRequest.DstIp")) +// description is TBD +// Value returns a uint32 +func (obj *flowRSVPLength) HasValue() bool { + return obj.obj.Value != nil +} + +// description is TBD +// SetValue sets the uint32 value in the FlowRSVPLength object +func (obj *flowRSVPLength) SetValue(value uint32) FlowRSVPLength { + obj.SetChoice(FlowRSVPLengthChoice.VALUE) + obj.obj.Value = &value + return obj +} + +func (obj *flowRSVPLength) validateObj(vObj *validation, set_default bool) { + if set_default { + obj.setDefault() + } + + if obj.obj.Auto != nil { + + if *obj.obj.Auto > 65535 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("0 <= FlowRSVPLength.Auto <= 65535 but Got %d", *obj.obj.Auto)) + } + + } + + if obj.obj.Value != nil { + + if *obj.obj.Value > 65535 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("0 <= FlowRSVPLength.Value <= 65535 but Got %d", *obj.obj.Value)) } } } -func (obj *actionProtocolIpv6PingRequest) setDefault() { +func (obj *flowRSVPLength) setDefault() { + if obj.obj.Choice == nil { + obj.SetChoice(FlowRSVPLengthChoice.AUTO) + + } } -// ***** DeviceBgpCeaseError ***** -type deviceBgpCeaseError struct { +// ***** FlowRSVPMessage ***** +type flowRSVPMessage struct { validation - obj *otg.DeviceBgpCeaseError + obj *otg.FlowRSVPMessage + pathHolder FlowRSVPPathMessage } -func NewDeviceBgpCeaseError() DeviceBgpCeaseError { - obj := deviceBgpCeaseError{obj: &otg.DeviceBgpCeaseError{}} +func NewFlowRSVPMessage() FlowRSVPMessage { + obj := flowRSVPMessage{obj: &otg.FlowRSVPMessage{}} obj.setDefault() return &obj } -func (obj *deviceBgpCeaseError) Msg() *otg.DeviceBgpCeaseError { +func (obj *flowRSVPMessage) Msg() *otg.FlowRSVPMessage { return obj.obj } -func (obj *deviceBgpCeaseError) SetMsg(msg *otg.DeviceBgpCeaseError) DeviceBgpCeaseError { - +func (obj *flowRSVPMessage) SetMsg(msg *otg.FlowRSVPMessage) FlowRSVPMessage { + obj.setNil() proto.Merge(obj.obj, msg) return obj } -func (obj *deviceBgpCeaseError) ToProto() (*otg.DeviceBgpCeaseError, error) { +func (obj *flowRSVPMessage) ToProto() (*otg.FlowRSVPMessage, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -166428,7 +166995,7 @@ func (obj *deviceBgpCeaseError) ToProto() (*otg.DeviceBgpCeaseError, error) { return obj.Msg(), nil } -func (obj *deviceBgpCeaseError) FromProto(msg *otg.DeviceBgpCeaseError) (DeviceBgpCeaseError, error) { +func (obj *flowRSVPMessage) FromProto(msg *otg.FlowRSVPMessage) (FlowRSVPMessage, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -166437,7 +167004,7 @@ func (obj *deviceBgpCeaseError) FromProto(msg *otg.DeviceBgpCeaseError) (DeviceB return newObj, nil } -func (obj *deviceBgpCeaseError) ToPbText() (string, error) { +func (obj *flowRSVPMessage) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -166449,12 +167016,12 @@ func (obj *deviceBgpCeaseError) ToPbText() (string, error) { return string(protoMarshal), nil } -func (obj *deviceBgpCeaseError) FromPbText(value string) error { +func (obj *flowRSVPMessage) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj } - + obj.setNil() vErr := obj.validateToAndFrom() if vErr != nil { return vErr @@ -166462,7 +167029,7 @@ func (obj *deviceBgpCeaseError) FromPbText(value string) error { return retObj } -func (obj *deviceBgpCeaseError) ToYaml() (string, error) { +func (obj *flowRSVPMessage) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -166483,7 +167050,7 @@ func (obj *deviceBgpCeaseError) ToYaml() (string, error) { return string(data), nil } -func (obj *deviceBgpCeaseError) FromYaml(value string) error { +func (obj *flowRSVPMessage) FromYaml(value string) error { if value == "" { value = "{}" } @@ -166500,7 +167067,7 @@ func (obj *deviceBgpCeaseError) FromYaml(value string) error { return fmt.Errorf("unmarshal error %s", strings.Replace( uError.Error(), "\u00a0", " ", -1)[7:]) } - + obj.setNil() vErr := obj.validateToAndFrom() if vErr != nil { return vErr @@ -166508,7 +167075,7 @@ func (obj *deviceBgpCeaseError) FromYaml(value string) error { return nil } -func (obj *deviceBgpCeaseError) ToJson() (string, error) { +func (obj *flowRSVPMessage) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -166526,7 +167093,7 @@ func (obj *deviceBgpCeaseError) ToJson() (string, error) { return string(data), nil } -func (obj *deviceBgpCeaseError) FromJson(value string) error { +func (obj *flowRSVPMessage) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -166539,7 +167106,7 @@ func (obj *deviceBgpCeaseError) FromJson(value string) error { return fmt.Errorf("unmarshal error %s", strings.Replace( uError.Error(), "\u00a0", " ", -1)[7:]) } - + obj.setNil() err := obj.validateToAndFrom() if err != nil { return err @@ -166547,19 +167114,19 @@ func (obj *deviceBgpCeaseError) FromJson(value string) error { return nil } -func (obj *deviceBgpCeaseError) validateToAndFrom() error { +func (obj *flowRSVPMessage) validateToAndFrom() error { // emptyVars() obj.validateObj(&obj.validation, true) return obj.validationResult() } -func (obj *deviceBgpCeaseError) Validate() error { +func (obj *flowRSVPMessage) Validate() error { // emptyVars() obj.validateObj(&obj.validation, false) return obj.validationResult() } -func (obj *deviceBgpCeaseError) String() string { +func (obj *flowRSVPMessage) String() string { str, err := obj.ToYaml() if err != nil { return err.Error() @@ -166567,12 +167134,12 @@ func (obj *deviceBgpCeaseError) String() string { return str } -func (obj *deviceBgpCeaseError) Clone() (DeviceBgpCeaseError, error) { +func (obj *flowRSVPMessage) Clone() (FlowRSVPMessage, error) { vErr := obj.Validate() if vErr != nil { return nil, vErr } - newObj := NewDeviceBgpCeaseError() + newObj := NewFlowRSVPMessage() data, err := proto.Marshal(obj.Msg()) if err != nil { return nil, err @@ -166584,134 +167151,173 @@ func (obj *deviceBgpCeaseError) Clone() (DeviceBgpCeaseError, error) { return newObj, nil } -// DeviceBgpCeaseError is in the absence of any fatal errors, a BGP peer can close its BGP connection by sending the NOTIFICATION message with the Error Code Cease. -type DeviceBgpCeaseError interface { +func (obj *flowRSVPMessage) setNil() { + obj.pathHolder = nil + obj.validationErrors = nil + obj.warnings = nil + obj.constraints = make(map[string]map[string]Constraints) +} + +// FlowRSVPMessage is description is TBD +type FlowRSVPMessage interface { Validation - // Msg marshals DeviceBgpCeaseError to protobuf object *otg.DeviceBgpCeaseError + // Msg marshals FlowRSVPMessage to protobuf object *otg.FlowRSVPMessage // and doesn't set defaults - Msg() *otg.DeviceBgpCeaseError - // SetMsg unmarshals DeviceBgpCeaseError from protobuf object *otg.DeviceBgpCeaseError + Msg() *otg.FlowRSVPMessage + // SetMsg unmarshals FlowRSVPMessage from protobuf object *otg.FlowRSVPMessage // and doesn't set defaults - SetMsg(*otg.DeviceBgpCeaseError) DeviceBgpCeaseError - // ToProto marshals DeviceBgpCeaseError to protobuf object *otg.DeviceBgpCeaseError - ToProto() (*otg.DeviceBgpCeaseError, error) - // ToPbText marshals DeviceBgpCeaseError to protobuf text + SetMsg(*otg.FlowRSVPMessage) FlowRSVPMessage + // ToProto marshals FlowRSVPMessage to protobuf object *otg.FlowRSVPMessage + ToProto() (*otg.FlowRSVPMessage, error) + // ToPbText marshals FlowRSVPMessage to protobuf text ToPbText() (string, error) - // ToYaml marshals DeviceBgpCeaseError to YAML text + // ToYaml marshals FlowRSVPMessage to YAML text ToYaml() (string, error) - // ToJson marshals DeviceBgpCeaseError to JSON text + // ToJson marshals FlowRSVPMessage to JSON text ToJson() (string, error) - // FromProto unmarshals DeviceBgpCeaseError from protobuf object *otg.DeviceBgpCeaseError - FromProto(msg *otg.DeviceBgpCeaseError) (DeviceBgpCeaseError, error) - // FromPbText unmarshals DeviceBgpCeaseError from protobuf text + // FromProto unmarshals FlowRSVPMessage from protobuf object *otg.FlowRSVPMessage + FromProto(msg *otg.FlowRSVPMessage) (FlowRSVPMessage, error) + // FromPbText unmarshals FlowRSVPMessage from protobuf text FromPbText(value string) error - // FromYaml unmarshals DeviceBgpCeaseError from YAML text + // FromYaml unmarshals FlowRSVPMessage from YAML text FromYaml(value string) error - // FromJson unmarshals DeviceBgpCeaseError from JSON text + // FromJson unmarshals FlowRSVPMessage from JSON text FromJson(value string) error - // Validate validates DeviceBgpCeaseError + // Validate validates FlowRSVPMessage Validate() error // A stringer function String() string // Clones the object - Clone() (DeviceBgpCeaseError, error) + Clone() (FlowRSVPMessage, error) validateToAndFrom() error validateObj(vObj *validation, set_default bool) setDefault() - // Subcode returns DeviceBgpCeaseErrorSubcodeEnum, set in DeviceBgpCeaseError - Subcode() DeviceBgpCeaseErrorSubcodeEnum - // SetSubcode assigns DeviceBgpCeaseErrorSubcodeEnum provided by user to DeviceBgpCeaseError - SetSubcode(value DeviceBgpCeaseErrorSubcodeEnum) DeviceBgpCeaseError - // HasSubcode checks if Subcode has been set in DeviceBgpCeaseError - HasSubcode() bool + // Choice returns FlowRSVPMessageChoiceEnum, set in FlowRSVPMessage + Choice() FlowRSVPMessageChoiceEnum + // SetChoice assigns FlowRSVPMessageChoiceEnum provided by user to FlowRSVPMessage + SetChoice(value FlowRSVPMessageChoiceEnum) FlowRSVPMessage + // HasChoice checks if Choice has been set in FlowRSVPMessage + HasChoice() bool + // Path returns FlowRSVPPathMessage, set in FlowRSVPMessage. + // FlowRSVPPathMessage is "path" message required the follwoing list of objects in order as defined in https://www.rfc-editor.org/rfc/rfc3209.html#page-15: 1. SESSION 2. RSVP_HOP 3. TIME_VALUES 4. EXPLICIT_ROUTE [optional] 5. LABEL_REQUEST 6. SESSION_ATTRIBUTE [optional] 7. SENDER_TEMPLATE 8. SENDER_TSPEC 9. RECORD_ROUTE [optional] + Path() FlowRSVPPathMessage + // SetPath assigns FlowRSVPPathMessage provided by user to FlowRSVPMessage. + // FlowRSVPPathMessage is "path" message required the follwoing list of objects in order as defined in https://www.rfc-editor.org/rfc/rfc3209.html#page-15: 1. SESSION 2. RSVP_HOP 3. TIME_VALUES 4. EXPLICIT_ROUTE [optional] 5. LABEL_REQUEST 6. SESSION_ATTRIBUTE [optional] 7. SENDER_TEMPLATE 8. SENDER_TSPEC 9. RECORD_ROUTE [optional] + SetPath(value FlowRSVPPathMessage) FlowRSVPMessage + // HasPath checks if Path has been set in FlowRSVPMessage + HasPath() bool + setNil() } -type DeviceBgpCeaseErrorSubcodeEnum string +type FlowRSVPMessageChoiceEnum string -// Enum of Subcode on DeviceBgpCeaseError -var DeviceBgpCeaseErrorSubcode = struct { - MAX_NUMBER_PREFIX_REACHED_CODE6_SUBCODE1 DeviceBgpCeaseErrorSubcodeEnum - ADMIN_SHUTDOWN_CODE6_SUBCODE2 DeviceBgpCeaseErrorSubcodeEnum - PEER_DELETED_CODE6_SUBCODE3 DeviceBgpCeaseErrorSubcodeEnum - ADMIN_RESET_CODE6_SUBCODE4 DeviceBgpCeaseErrorSubcodeEnum - CONNECTION_REJECT_CODE6_SUBCODE5 DeviceBgpCeaseErrorSubcodeEnum - OTHER_CONFIG_CHANGES_CODE6_SUBCODE6 DeviceBgpCeaseErrorSubcodeEnum - CONNECTION_COLLISION_RESOLUTION_CODE6_SUBCODE7 DeviceBgpCeaseErrorSubcodeEnum - OUT_OF_RESOURCES_CODE6_SUBCODE8 DeviceBgpCeaseErrorSubcodeEnum - BFD_SESSION_DOWN_CODE6_SUBCODE9 DeviceBgpCeaseErrorSubcodeEnum +// Enum of Choice on FlowRSVPMessage +var FlowRSVPMessageChoice = struct { + PATH FlowRSVPMessageChoiceEnum }{ - MAX_NUMBER_PREFIX_REACHED_CODE6_SUBCODE1: DeviceBgpCeaseErrorSubcodeEnum("max_number_prefix_reached_code6_subcode1"), - ADMIN_SHUTDOWN_CODE6_SUBCODE2: DeviceBgpCeaseErrorSubcodeEnum("admin_shutdown_code6_subcode2"), - PEER_DELETED_CODE6_SUBCODE3: DeviceBgpCeaseErrorSubcodeEnum("peer_deleted_code6_subcode3"), - ADMIN_RESET_CODE6_SUBCODE4: DeviceBgpCeaseErrorSubcodeEnum("admin_reset_code6_subcode4"), - CONNECTION_REJECT_CODE6_SUBCODE5: DeviceBgpCeaseErrorSubcodeEnum("connection_reject_code6_subcode5"), - OTHER_CONFIG_CHANGES_CODE6_SUBCODE6: DeviceBgpCeaseErrorSubcodeEnum("other_config_changes_code6_subcode6"), - CONNECTION_COLLISION_RESOLUTION_CODE6_SUBCODE7: DeviceBgpCeaseErrorSubcodeEnum("connection_collision_resolution_code6_subcode7"), - OUT_OF_RESOURCES_CODE6_SUBCODE8: DeviceBgpCeaseErrorSubcodeEnum("out_of_resources_code6_subcode8"), - BFD_SESSION_DOWN_CODE6_SUBCODE9: DeviceBgpCeaseErrorSubcodeEnum("bfd_session_down_code6_subcode9"), + PATH: FlowRSVPMessageChoiceEnum("path"), } -func (obj *deviceBgpCeaseError) Subcode() DeviceBgpCeaseErrorSubcodeEnum { - return DeviceBgpCeaseErrorSubcodeEnum(obj.obj.Subcode.Enum().String()) +func (obj *flowRSVPMessage) Choice() FlowRSVPMessageChoiceEnum { + return FlowRSVPMessageChoiceEnum(obj.obj.Choice.Enum().String()) } -// The Error Subcode to be sent to the peer in the Cease NOTIFICATION. -// Subcode returns a string -func (obj *deviceBgpCeaseError) HasSubcode() bool { - return obj.obj.Subcode != nil +// description is TBD +// Choice returns a string +func (obj *flowRSVPMessage) HasChoice() bool { + return obj.obj.Choice != nil } -func (obj *deviceBgpCeaseError) SetSubcode(value DeviceBgpCeaseErrorSubcodeEnum) DeviceBgpCeaseError { - intValue, ok := otg.DeviceBgpCeaseError_Subcode_Enum_value[string(value)] +func (obj *flowRSVPMessage) SetChoice(value FlowRSVPMessageChoiceEnum) FlowRSVPMessage { + intValue, ok := otg.FlowRSVPMessage_Choice_Enum_value[string(value)] if !ok { obj.validationErrors = append(obj.validationErrors, fmt.Sprintf( - "%s is not a valid choice on DeviceBgpCeaseErrorSubcodeEnum", string(value))) + "%s is not a valid choice on FlowRSVPMessageChoiceEnum", string(value))) return obj } - enumValue := otg.DeviceBgpCeaseError_Subcode_Enum(intValue) - obj.obj.Subcode = &enumValue + enumValue := otg.FlowRSVPMessage_Choice_Enum(intValue) + obj.obj.Choice = &enumValue + obj.obj.Path = nil + obj.pathHolder = nil + + if value == FlowRSVPMessageChoice.PATH { + obj.obj.Path = NewFlowRSVPPathMessage().Msg() + } return obj } -func (obj *deviceBgpCeaseError) validateObj(vObj *validation, set_default bool) { +// description is TBD +// Path returns a FlowRSVPPathMessage +func (obj *flowRSVPMessage) Path() FlowRSVPPathMessage { + if obj.obj.Path == nil { + obj.SetChoice(FlowRSVPMessageChoice.PATH) + } + if obj.pathHolder == nil { + obj.pathHolder = &flowRSVPPathMessage{obj: obj.obj.Path} + } + return obj.pathHolder +} + +// description is TBD +// Path returns a FlowRSVPPathMessage +func (obj *flowRSVPMessage) HasPath() bool { + return obj.obj.Path != nil +} + +// description is TBD +// SetPath sets the FlowRSVPPathMessage value in the FlowRSVPMessage object +func (obj *flowRSVPMessage) SetPath(value FlowRSVPPathMessage) FlowRSVPMessage { + obj.SetChoice(FlowRSVPMessageChoice.PATH) + obj.pathHolder = nil + obj.obj.Path = value.Msg() + + return obj +} + +func (obj *flowRSVPMessage) validateObj(vObj *validation, set_default bool) { if set_default { obj.setDefault() } + if obj.obj.Path != nil { + + obj.Path().validateObj(vObj, set_default) + } + } -func (obj *deviceBgpCeaseError) setDefault() { - if obj.obj.Subcode == nil { - obj.SetSubcode(DeviceBgpCeaseErrorSubcode.ADMIN_SHUTDOWN_CODE6_SUBCODE2) +func (obj *flowRSVPMessage) setDefault() { + if obj.obj.Choice == nil { + obj.SetChoice(FlowRSVPMessageChoice.PATH) } } -// ***** DeviceBgpMessageHeaderError ***** -type deviceBgpMessageHeaderError struct { +// ***** FlowSizeWeightPairsCustom ***** +type flowSizeWeightPairsCustom struct { validation - obj *otg.DeviceBgpMessageHeaderError + obj *otg.FlowSizeWeightPairsCustom } -func NewDeviceBgpMessageHeaderError() DeviceBgpMessageHeaderError { - obj := deviceBgpMessageHeaderError{obj: &otg.DeviceBgpMessageHeaderError{}} +func NewFlowSizeWeightPairsCustom() FlowSizeWeightPairsCustom { + obj := flowSizeWeightPairsCustom{obj: &otg.FlowSizeWeightPairsCustom{}} obj.setDefault() return &obj } -func (obj *deviceBgpMessageHeaderError) Msg() *otg.DeviceBgpMessageHeaderError { +func (obj *flowSizeWeightPairsCustom) Msg() *otg.FlowSizeWeightPairsCustom { return obj.obj } -func (obj *deviceBgpMessageHeaderError) SetMsg(msg *otg.DeviceBgpMessageHeaderError) DeviceBgpMessageHeaderError { +func (obj *flowSizeWeightPairsCustom) SetMsg(msg *otg.FlowSizeWeightPairsCustom) FlowSizeWeightPairsCustom { proto.Merge(obj.obj, msg) return obj } -func (obj *deviceBgpMessageHeaderError) ToProto() (*otg.DeviceBgpMessageHeaderError, error) { +func (obj *flowSizeWeightPairsCustom) ToProto() (*otg.FlowSizeWeightPairsCustom, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -166719,7 +167325,7 @@ func (obj *deviceBgpMessageHeaderError) ToProto() (*otg.DeviceBgpMessageHeaderEr return obj.Msg(), nil } -func (obj *deviceBgpMessageHeaderError) FromProto(msg *otg.DeviceBgpMessageHeaderError) (DeviceBgpMessageHeaderError, error) { +func (obj *flowSizeWeightPairsCustom) FromProto(msg *otg.FlowSizeWeightPairsCustom) (FlowSizeWeightPairsCustom, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -166728,7 +167334,7 @@ func (obj *deviceBgpMessageHeaderError) FromProto(msg *otg.DeviceBgpMessageHeade return newObj, nil } -func (obj *deviceBgpMessageHeaderError) ToPbText() (string, error) { +func (obj *flowSizeWeightPairsCustom) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -166740,7 +167346,7 @@ func (obj *deviceBgpMessageHeaderError) ToPbText() (string, error) { return string(protoMarshal), nil } -func (obj *deviceBgpMessageHeaderError) FromPbText(value string) error { +func (obj *flowSizeWeightPairsCustom) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj @@ -166753,7 +167359,7 @@ func (obj *deviceBgpMessageHeaderError) FromPbText(value string) error { return retObj } -func (obj *deviceBgpMessageHeaderError) ToYaml() (string, error) { +func (obj *flowSizeWeightPairsCustom) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -166774,7 +167380,7 @@ func (obj *deviceBgpMessageHeaderError) ToYaml() (string, error) { return string(data), nil } -func (obj *deviceBgpMessageHeaderError) FromYaml(value string) error { +func (obj *flowSizeWeightPairsCustom) FromYaml(value string) error { if value == "" { value = "{}" } @@ -166799,7 +167405,7 @@ func (obj *deviceBgpMessageHeaderError) FromYaml(value string) error { return nil } -func (obj *deviceBgpMessageHeaderError) ToJson() (string, error) { +func (obj *flowSizeWeightPairsCustom) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -166817,7 +167423,7 @@ func (obj *deviceBgpMessageHeaderError) ToJson() (string, error) { return string(data), nil } -func (obj *deviceBgpMessageHeaderError) FromJson(value string) error { +func (obj *flowSizeWeightPairsCustom) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -166838,19 +167444,19 @@ func (obj *deviceBgpMessageHeaderError) FromJson(value string) error { return nil } -func (obj *deviceBgpMessageHeaderError) validateToAndFrom() error { +func (obj *flowSizeWeightPairsCustom) validateToAndFrom() error { // emptyVars() obj.validateObj(&obj.validation, true) return obj.validationResult() } -func (obj *deviceBgpMessageHeaderError) Validate() error { +func (obj *flowSizeWeightPairsCustom) Validate() error { // emptyVars() obj.validateObj(&obj.validation, false) return obj.validationResult() } -func (obj *deviceBgpMessageHeaderError) String() string { +func (obj *flowSizeWeightPairsCustom) String() string { str, err := obj.ToYaml() if err != nil { return err.Error() @@ -166858,12 +167464,12 @@ func (obj *deviceBgpMessageHeaderError) String() string { return str } -func (obj *deviceBgpMessageHeaderError) Clone() (DeviceBgpMessageHeaderError, error) { +func (obj *flowSizeWeightPairsCustom) Clone() (FlowSizeWeightPairsCustom, error) { vErr := obj.Validate() if vErr != nil { return nil, vErr } - newObj := NewDeviceBgpMessageHeaderError() + newObj := NewFlowSizeWeightPairsCustom() data, err := proto.Marshal(obj.Msg()) if err != nil { return nil, err @@ -166875,122 +167481,151 @@ func (obj *deviceBgpMessageHeaderError) Clone() (DeviceBgpMessageHeaderError, er return newObj, nil } -// DeviceBgpMessageHeaderError is all errors detected while processing the Message Header are indicated by sending the NOTIFICATION message with the Error Code-Message Header Error. The Error Subcode elaborates on the specific nature of the error. -type DeviceBgpMessageHeaderError interface { +// FlowSizeWeightPairsCustom is custom frame size distribution pair. +type FlowSizeWeightPairsCustom interface { Validation - // Msg marshals DeviceBgpMessageHeaderError to protobuf object *otg.DeviceBgpMessageHeaderError + // Msg marshals FlowSizeWeightPairsCustom to protobuf object *otg.FlowSizeWeightPairsCustom // and doesn't set defaults - Msg() *otg.DeviceBgpMessageHeaderError - // SetMsg unmarshals DeviceBgpMessageHeaderError from protobuf object *otg.DeviceBgpMessageHeaderError + Msg() *otg.FlowSizeWeightPairsCustom + // SetMsg unmarshals FlowSizeWeightPairsCustom from protobuf object *otg.FlowSizeWeightPairsCustom // and doesn't set defaults - SetMsg(*otg.DeviceBgpMessageHeaderError) DeviceBgpMessageHeaderError - // ToProto marshals DeviceBgpMessageHeaderError to protobuf object *otg.DeviceBgpMessageHeaderError - ToProto() (*otg.DeviceBgpMessageHeaderError, error) - // ToPbText marshals DeviceBgpMessageHeaderError to protobuf text + SetMsg(*otg.FlowSizeWeightPairsCustom) FlowSizeWeightPairsCustom + // ToProto marshals FlowSizeWeightPairsCustom to protobuf object *otg.FlowSizeWeightPairsCustom + ToProto() (*otg.FlowSizeWeightPairsCustom, error) + // ToPbText marshals FlowSizeWeightPairsCustom to protobuf text ToPbText() (string, error) - // ToYaml marshals DeviceBgpMessageHeaderError to YAML text + // ToYaml marshals FlowSizeWeightPairsCustom to YAML text ToYaml() (string, error) - // ToJson marshals DeviceBgpMessageHeaderError to JSON text + // ToJson marshals FlowSizeWeightPairsCustom to JSON text ToJson() (string, error) - // FromProto unmarshals DeviceBgpMessageHeaderError from protobuf object *otg.DeviceBgpMessageHeaderError - FromProto(msg *otg.DeviceBgpMessageHeaderError) (DeviceBgpMessageHeaderError, error) - // FromPbText unmarshals DeviceBgpMessageHeaderError from protobuf text + // FromProto unmarshals FlowSizeWeightPairsCustom from protobuf object *otg.FlowSizeWeightPairsCustom + FromProto(msg *otg.FlowSizeWeightPairsCustom) (FlowSizeWeightPairsCustom, error) + // FromPbText unmarshals FlowSizeWeightPairsCustom from protobuf text FromPbText(value string) error - // FromYaml unmarshals DeviceBgpMessageHeaderError from YAML text + // FromYaml unmarshals FlowSizeWeightPairsCustom from YAML text FromYaml(value string) error - // FromJson unmarshals DeviceBgpMessageHeaderError from JSON text + // FromJson unmarshals FlowSizeWeightPairsCustom from JSON text FromJson(value string) error - // Validate validates DeviceBgpMessageHeaderError + // Validate validates FlowSizeWeightPairsCustom Validate() error // A stringer function String() string // Clones the object - Clone() (DeviceBgpMessageHeaderError, error) + Clone() (FlowSizeWeightPairsCustom, error) validateToAndFrom() error validateObj(vObj *validation, set_default bool) setDefault() - // Subcode returns DeviceBgpMessageHeaderErrorSubcodeEnum, set in DeviceBgpMessageHeaderError - Subcode() DeviceBgpMessageHeaderErrorSubcodeEnum - // SetSubcode assigns DeviceBgpMessageHeaderErrorSubcodeEnum provided by user to DeviceBgpMessageHeaderError - SetSubcode(value DeviceBgpMessageHeaderErrorSubcodeEnum) DeviceBgpMessageHeaderError - // HasSubcode checks if Subcode has been set in DeviceBgpMessageHeaderError - HasSubcode() bool + // Size returns uint32, set in FlowSizeWeightPairsCustom. + Size() uint32 + // SetSize assigns uint32 provided by user to FlowSizeWeightPairsCustom + SetSize(value uint32) FlowSizeWeightPairsCustom + // HasSize checks if Size has been set in FlowSizeWeightPairsCustom + HasSize() bool + // Weight returns float32, set in FlowSizeWeightPairsCustom. + Weight() float32 + // SetWeight assigns float32 provided by user to FlowSizeWeightPairsCustom + SetWeight(value float32) FlowSizeWeightPairsCustom + // HasWeight checks if Weight has been set in FlowSizeWeightPairsCustom + HasWeight() bool } -type DeviceBgpMessageHeaderErrorSubcodeEnum string +// The size of the frame (in bytes) for this weight pair. +// Size returns a uint32 +func (obj *flowSizeWeightPairsCustom) Size() uint32 { + + return *obj.obj.Size -// Enum of Subcode on DeviceBgpMessageHeaderError -var DeviceBgpMessageHeaderErrorSubcode = struct { - CONNECTION_NOT_SYNCHRONIZED_CODE1_SUBCODE1 DeviceBgpMessageHeaderErrorSubcodeEnum - BAD_MESSAGE_LENGTH_CODE1_SUBCODE2 DeviceBgpMessageHeaderErrorSubcodeEnum - BAD_MESSAGE_TYPE_CODE1_SUBCODE3 DeviceBgpMessageHeaderErrorSubcodeEnum -}{ - CONNECTION_NOT_SYNCHRONIZED_CODE1_SUBCODE1: DeviceBgpMessageHeaderErrorSubcodeEnum("connection_not_synchronized_code1_subcode1"), - BAD_MESSAGE_LENGTH_CODE1_SUBCODE2: DeviceBgpMessageHeaderErrorSubcodeEnum("bad_message_length_code1_subcode2"), - BAD_MESSAGE_TYPE_CODE1_SUBCODE3: DeviceBgpMessageHeaderErrorSubcodeEnum("bad_message_type_code1_subcode3"), } -func (obj *deviceBgpMessageHeaderError) Subcode() DeviceBgpMessageHeaderErrorSubcodeEnum { - return DeviceBgpMessageHeaderErrorSubcodeEnum(obj.obj.Subcode.Enum().String()) +// The size of the frame (in bytes) for this weight pair. +// Size returns a uint32 +func (obj *flowSizeWeightPairsCustom) HasSize() bool { + return obj.obj.Size != nil } -// The Error Subcode indicates the specific type of error encountered during Message Header processing. -// Subcode returns a string -func (obj *deviceBgpMessageHeaderError) HasSubcode() bool { - return obj.obj.Subcode != nil +// The size of the frame (in bytes) for this weight pair. +// SetSize sets the uint32 value in the FlowSizeWeightPairsCustom object +func (obj *flowSizeWeightPairsCustom) SetSize(value uint32) FlowSizeWeightPairsCustom { + + obj.obj.Size = &value + return obj } -func (obj *deviceBgpMessageHeaderError) SetSubcode(value DeviceBgpMessageHeaderErrorSubcodeEnum) DeviceBgpMessageHeaderError { - intValue, ok := otg.DeviceBgpMessageHeaderError_Subcode_Enum_value[string(value)] - if !ok { - obj.validationErrors = append(obj.validationErrors, fmt.Sprintf( - "%s is not a valid choice on DeviceBgpMessageHeaderErrorSubcodeEnum", string(value))) - return obj - } - enumValue := otg.DeviceBgpMessageHeaderError_Subcode_Enum(intValue) - obj.obj.Subcode = &enumValue +// Weight assigned to the corresponding frame size in this weight pair. +// Higher weight means more packets. +// Weight returns a float32 +func (obj *flowSizeWeightPairsCustom) Weight() float32 { + + return *obj.obj.Weight + +} + +// Weight assigned to the corresponding frame size in this weight pair. +// Higher weight means more packets. +// Weight returns a float32 +func (obj *flowSizeWeightPairsCustom) HasWeight() bool { + return obj.obj.Weight != nil +} + +// Weight assigned to the corresponding frame size in this weight pair. +// Higher weight means more packets. +// SetWeight sets the float32 value in the FlowSizeWeightPairsCustom object +func (obj *flowSizeWeightPairsCustom) SetWeight(value float32) FlowSizeWeightPairsCustom { + obj.obj.Weight = &value return obj } -func (obj *deviceBgpMessageHeaderError) validateObj(vObj *validation, set_default bool) { +func (obj *flowSizeWeightPairsCustom) validateObj(vObj *validation, set_default bool) { if set_default { obj.setDefault() } -} + if obj.obj.Size != nil { -func (obj *deviceBgpMessageHeaderError) setDefault() { - if obj.obj.Subcode == nil { - obj.SetSubcode(DeviceBgpMessageHeaderErrorSubcode.CONNECTION_NOT_SYNCHRONIZED_CODE1_SUBCODE1) + if *obj.obj.Size < 12 || *obj.obj.Size > 65535 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("12 <= FlowSizeWeightPairsCustom.Size <= 65535 but Got %d", *obj.obj.Size)) + } } } -// ***** DeviceBgpOpenMessageError ***** -type deviceBgpOpenMessageError struct { +func (obj *flowSizeWeightPairsCustom) setDefault() { + if obj.obj.Size == nil { + obj.SetSize(64) + } + if obj.obj.Weight == nil { + obj.SetWeight(1) + } + +} + +// ***** FlowDelay ***** +type flowDelay struct { validation - obj *otg.DeviceBgpOpenMessageError + obj *otg.FlowDelay } -func NewDeviceBgpOpenMessageError() DeviceBgpOpenMessageError { - obj := deviceBgpOpenMessageError{obj: &otg.DeviceBgpOpenMessageError{}} +func NewFlowDelay() FlowDelay { + obj := flowDelay{obj: &otg.FlowDelay{}} obj.setDefault() return &obj } -func (obj *deviceBgpOpenMessageError) Msg() *otg.DeviceBgpOpenMessageError { +func (obj *flowDelay) Msg() *otg.FlowDelay { return obj.obj } -func (obj *deviceBgpOpenMessageError) SetMsg(msg *otg.DeviceBgpOpenMessageError) DeviceBgpOpenMessageError { +func (obj *flowDelay) SetMsg(msg *otg.FlowDelay) FlowDelay { proto.Merge(obj.obj, msg) return obj } -func (obj *deviceBgpOpenMessageError) ToProto() (*otg.DeviceBgpOpenMessageError, error) { +func (obj *flowDelay) ToProto() (*otg.FlowDelay, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -166998,7 +167633,7 @@ func (obj *deviceBgpOpenMessageError) ToProto() (*otg.DeviceBgpOpenMessageError, return obj.Msg(), nil } -func (obj *deviceBgpOpenMessageError) FromProto(msg *otg.DeviceBgpOpenMessageError) (DeviceBgpOpenMessageError, error) { +func (obj *flowDelay) FromProto(msg *otg.FlowDelay) (FlowDelay, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -167007,7 +167642,7 @@ func (obj *deviceBgpOpenMessageError) FromProto(msg *otg.DeviceBgpOpenMessageErr return newObj, nil } -func (obj *deviceBgpOpenMessageError) ToPbText() (string, error) { +func (obj *flowDelay) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -167019,7 +167654,7 @@ func (obj *deviceBgpOpenMessageError) ToPbText() (string, error) { return string(protoMarshal), nil } -func (obj *deviceBgpOpenMessageError) FromPbText(value string) error { +func (obj *flowDelay) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj @@ -167032,7 +167667,7 @@ func (obj *deviceBgpOpenMessageError) FromPbText(value string) error { return retObj } -func (obj *deviceBgpOpenMessageError) ToYaml() (string, error) { +func (obj *flowDelay) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -167053,7 +167688,7 @@ func (obj *deviceBgpOpenMessageError) ToYaml() (string, error) { return string(data), nil } -func (obj *deviceBgpOpenMessageError) FromYaml(value string) error { +func (obj *flowDelay) FromYaml(value string) error { if value == "" { value = "{}" } @@ -167078,7 +167713,7 @@ func (obj *deviceBgpOpenMessageError) FromYaml(value string) error { return nil } -func (obj *deviceBgpOpenMessageError) ToJson() (string, error) { +func (obj *flowDelay) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -167096,7 +167731,7 @@ func (obj *deviceBgpOpenMessageError) ToJson() (string, error) { return string(data), nil } -func (obj *deviceBgpOpenMessageError) FromJson(value string) error { +func (obj *flowDelay) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -167117,19 +167752,19 @@ func (obj *deviceBgpOpenMessageError) FromJson(value string) error { return nil } -func (obj *deviceBgpOpenMessageError) validateToAndFrom() error { +func (obj *flowDelay) validateToAndFrom() error { // emptyVars() obj.validateObj(&obj.validation, true) return obj.validationResult() } -func (obj *deviceBgpOpenMessageError) Validate() error { +func (obj *flowDelay) Validate() error { // emptyVars() obj.validateObj(&obj.validation, false) return obj.validationResult() } -func (obj *deviceBgpOpenMessageError) String() string { +func (obj *flowDelay) String() string { str, err := obj.ToYaml() if err != nil { return err.Error() @@ -167137,12 +167772,12 @@ func (obj *deviceBgpOpenMessageError) String() string { return str } -func (obj *deviceBgpOpenMessageError) Clone() (DeviceBgpOpenMessageError, error) { +func (obj *flowDelay) Clone() (FlowDelay, error) { vErr := obj.Validate() if vErr != nil { return nil, vErr } - newObj := NewDeviceBgpOpenMessageError() + newObj := NewFlowDelay() data, err := proto.Marshal(obj.Msg()) if err != nil { return nil, err @@ -167154,130 +167789,276 @@ func (obj *deviceBgpOpenMessageError) Clone() (DeviceBgpOpenMessageError, error) return newObj, nil } -// DeviceBgpOpenMessageError is all errors detected while processing the OPEN message are indicated by sending the NOTIFICATION message with the Error Code-Open Message Error. The Error Subcode elaborates on the specific nature of the error. -type DeviceBgpOpenMessageError interface { +// FlowDelay is the optional container to specify the delay before starting +// transmission of packets. +type FlowDelay interface { Validation - // Msg marshals DeviceBgpOpenMessageError to protobuf object *otg.DeviceBgpOpenMessageError + // Msg marshals FlowDelay to protobuf object *otg.FlowDelay // and doesn't set defaults - Msg() *otg.DeviceBgpOpenMessageError - // SetMsg unmarshals DeviceBgpOpenMessageError from protobuf object *otg.DeviceBgpOpenMessageError + Msg() *otg.FlowDelay + // SetMsg unmarshals FlowDelay from protobuf object *otg.FlowDelay // and doesn't set defaults - SetMsg(*otg.DeviceBgpOpenMessageError) DeviceBgpOpenMessageError - // ToProto marshals DeviceBgpOpenMessageError to protobuf object *otg.DeviceBgpOpenMessageError - ToProto() (*otg.DeviceBgpOpenMessageError, error) - // ToPbText marshals DeviceBgpOpenMessageError to protobuf text + SetMsg(*otg.FlowDelay) FlowDelay + // ToProto marshals FlowDelay to protobuf object *otg.FlowDelay + ToProto() (*otg.FlowDelay, error) + // ToPbText marshals FlowDelay to protobuf text ToPbText() (string, error) - // ToYaml marshals DeviceBgpOpenMessageError to YAML text + // ToYaml marshals FlowDelay to YAML text ToYaml() (string, error) - // ToJson marshals DeviceBgpOpenMessageError to JSON text + // ToJson marshals FlowDelay to JSON text ToJson() (string, error) - // FromProto unmarshals DeviceBgpOpenMessageError from protobuf object *otg.DeviceBgpOpenMessageError - FromProto(msg *otg.DeviceBgpOpenMessageError) (DeviceBgpOpenMessageError, error) - // FromPbText unmarshals DeviceBgpOpenMessageError from protobuf text + // FromProto unmarshals FlowDelay from protobuf object *otg.FlowDelay + FromProto(msg *otg.FlowDelay) (FlowDelay, error) + // FromPbText unmarshals FlowDelay from protobuf text FromPbText(value string) error - // FromYaml unmarshals DeviceBgpOpenMessageError from YAML text + // FromYaml unmarshals FlowDelay from YAML text FromYaml(value string) error - // FromJson unmarshals DeviceBgpOpenMessageError from JSON text + // FromJson unmarshals FlowDelay from JSON text FromJson(value string) error - // Validate validates DeviceBgpOpenMessageError + // Validate validates FlowDelay Validate() error // A stringer function String() string // Clones the object - Clone() (DeviceBgpOpenMessageError, error) + Clone() (FlowDelay, error) validateToAndFrom() error validateObj(vObj *validation, set_default bool) setDefault() - // Subcode returns DeviceBgpOpenMessageErrorSubcodeEnum, set in DeviceBgpOpenMessageError - Subcode() DeviceBgpOpenMessageErrorSubcodeEnum - // SetSubcode assigns DeviceBgpOpenMessageErrorSubcodeEnum provided by user to DeviceBgpOpenMessageError - SetSubcode(value DeviceBgpOpenMessageErrorSubcodeEnum) DeviceBgpOpenMessageError - // HasSubcode checks if Subcode has been set in DeviceBgpOpenMessageError - HasSubcode() bool + // Choice returns FlowDelayChoiceEnum, set in FlowDelay + Choice() FlowDelayChoiceEnum + // SetChoice assigns FlowDelayChoiceEnum provided by user to FlowDelay + SetChoice(value FlowDelayChoiceEnum) FlowDelay + // HasChoice checks if Choice has been set in FlowDelay + HasChoice() bool + // Bytes returns float32, set in FlowDelay. + Bytes() float32 + // SetBytes assigns float32 provided by user to FlowDelay + SetBytes(value float32) FlowDelay + // HasBytes checks if Bytes has been set in FlowDelay + HasBytes() bool + // Nanoseconds returns float32, set in FlowDelay. + Nanoseconds() float32 + // SetNanoseconds assigns float32 provided by user to FlowDelay + SetNanoseconds(value float32) FlowDelay + // HasNanoseconds checks if Nanoseconds has been set in FlowDelay + HasNanoseconds() bool + // Microseconds returns float32, set in FlowDelay. + Microseconds() float32 + // SetMicroseconds assigns float32 provided by user to FlowDelay + SetMicroseconds(value float32) FlowDelay + // HasMicroseconds checks if Microseconds has been set in FlowDelay + HasMicroseconds() bool } -type DeviceBgpOpenMessageErrorSubcodeEnum string +type FlowDelayChoiceEnum string -// Enum of Subcode on DeviceBgpOpenMessageError -var DeviceBgpOpenMessageErrorSubcode = struct { - UNSUPPORTED_VERSION_NUMBER_CODE2_SUBCODE1 DeviceBgpOpenMessageErrorSubcodeEnum - ERROR_PEER_AS_CODE2_SUBCODE2 DeviceBgpOpenMessageErrorSubcodeEnum - ERROR_BGP_ID_CODE2_SUBCODE3 DeviceBgpOpenMessageErrorSubcodeEnum - UNSUPPORTED_OPTIONAL_PARAMETER_CODE2_SUBCODE4 DeviceBgpOpenMessageErrorSubcodeEnum - AUTH_FAILED_CODE2_SUBCODE5 DeviceBgpOpenMessageErrorSubcodeEnum - UNSUPPORTED_HOLD_TIME_CODE2_SUBCODE6 DeviceBgpOpenMessageErrorSubcodeEnum - UNSUPPORTED_CAPABILITY_CODE2_SUBCODE7 DeviceBgpOpenMessageErrorSubcodeEnum +// Enum of Choice on FlowDelay +var FlowDelayChoice = struct { + BYTES FlowDelayChoiceEnum + NANOSECONDS FlowDelayChoiceEnum + MICROSECONDS FlowDelayChoiceEnum }{ - UNSUPPORTED_VERSION_NUMBER_CODE2_SUBCODE1: DeviceBgpOpenMessageErrorSubcodeEnum("unsupported_version_number_code2_subcode1"), - ERROR_PEER_AS_CODE2_SUBCODE2: DeviceBgpOpenMessageErrorSubcodeEnum("error_peer_as_code2_subcode2"), - ERROR_BGP_ID_CODE2_SUBCODE3: DeviceBgpOpenMessageErrorSubcodeEnum("error_bgp_id_code2_subcode3"), - UNSUPPORTED_OPTIONAL_PARAMETER_CODE2_SUBCODE4: DeviceBgpOpenMessageErrorSubcodeEnum("unsupported_optional_parameter_code2_subcode4"), - AUTH_FAILED_CODE2_SUBCODE5: DeviceBgpOpenMessageErrorSubcodeEnum("auth_failed_code2_subcode5"), - UNSUPPORTED_HOLD_TIME_CODE2_SUBCODE6: DeviceBgpOpenMessageErrorSubcodeEnum("unsupported_hold_time_code2_subcode6"), - UNSUPPORTED_CAPABILITY_CODE2_SUBCODE7: DeviceBgpOpenMessageErrorSubcodeEnum("unsupported_capability_code2_subcode7"), + BYTES: FlowDelayChoiceEnum("bytes"), + NANOSECONDS: FlowDelayChoiceEnum("nanoseconds"), + MICROSECONDS: FlowDelayChoiceEnum("microseconds"), } -func (obj *deviceBgpOpenMessageError) Subcode() DeviceBgpOpenMessageErrorSubcodeEnum { - return DeviceBgpOpenMessageErrorSubcodeEnum(obj.obj.Subcode.Enum().String()) +func (obj *flowDelay) Choice() FlowDelayChoiceEnum { + return FlowDelayChoiceEnum(obj.obj.Choice.Enum().String()) } -// The Error Subcode indicates the specific type of error encountered during OPEN message processing. -// Subcode returns a string -func (obj *deviceBgpOpenMessageError) HasSubcode() bool { - return obj.obj.Subcode != nil +// description is TBD +// Choice returns a string +func (obj *flowDelay) HasChoice() bool { + return obj.obj.Choice != nil } -func (obj *deviceBgpOpenMessageError) SetSubcode(value DeviceBgpOpenMessageErrorSubcodeEnum) DeviceBgpOpenMessageError { - intValue, ok := otg.DeviceBgpOpenMessageError_Subcode_Enum_value[string(value)] +func (obj *flowDelay) SetChoice(value FlowDelayChoiceEnum) FlowDelay { + intValue, ok := otg.FlowDelay_Choice_Enum_value[string(value)] if !ok { obj.validationErrors = append(obj.validationErrors, fmt.Sprintf( - "%s is not a valid choice on DeviceBgpOpenMessageErrorSubcodeEnum", string(value))) + "%s is not a valid choice on FlowDelayChoiceEnum", string(value))) return obj } - enumValue := otg.DeviceBgpOpenMessageError_Subcode_Enum(intValue) - obj.obj.Subcode = &enumValue + enumValue := otg.FlowDelay_Choice_Enum(intValue) + obj.obj.Choice = &enumValue + obj.obj.Microseconds = nil + obj.obj.Nanoseconds = nil + obj.obj.Bytes = nil + + if value == FlowDelayChoice.BYTES { + defaultValue := float32(0) + obj.obj.Bytes = &defaultValue + } + + if value == FlowDelayChoice.NANOSECONDS { + defaultValue := float32(0) + obj.obj.Nanoseconds = &defaultValue + } + + if value == FlowDelayChoice.MICROSECONDS { + defaultValue := float32(0) + obj.obj.Microseconds = &defaultValue + } return obj } -func (obj *deviceBgpOpenMessageError) validateObj(vObj *validation, set_default bool) { +// The delay before starting transmission of packets. +// A value of 0 indicates no delay. +// Bytes returns a float32 +func (obj *flowDelay) Bytes() float32 { + + if obj.obj.Bytes == nil { + obj.SetChoice(FlowDelayChoice.BYTES) + } + + return *obj.obj.Bytes + +} + +// The delay before starting transmission of packets. +// A value of 0 indicates no delay. +// Bytes returns a float32 +func (obj *flowDelay) HasBytes() bool { + return obj.obj.Bytes != nil +} + +// The delay before starting transmission of packets. +// A value of 0 indicates no delay. +// SetBytes sets the float32 value in the FlowDelay object +func (obj *flowDelay) SetBytes(value float32) FlowDelay { + obj.SetChoice(FlowDelayChoice.BYTES) + obj.obj.Bytes = &value + return obj +} + +// The delay before starting transmission of packets. +// A value of 0 indicates no delay. +// Nanoseconds returns a float32 +func (obj *flowDelay) Nanoseconds() float32 { + + if obj.obj.Nanoseconds == nil { + obj.SetChoice(FlowDelayChoice.NANOSECONDS) + } + + return *obj.obj.Nanoseconds + +} + +// The delay before starting transmission of packets. +// A value of 0 indicates no delay. +// Nanoseconds returns a float32 +func (obj *flowDelay) HasNanoseconds() bool { + return obj.obj.Nanoseconds != nil +} + +// The delay before starting transmission of packets. +// A value of 0 indicates no delay. +// SetNanoseconds sets the float32 value in the FlowDelay object +func (obj *flowDelay) SetNanoseconds(value float32) FlowDelay { + obj.SetChoice(FlowDelayChoice.NANOSECONDS) + obj.obj.Nanoseconds = &value + return obj +} + +// The delay before starting transmission of packets. +// A value of 0 indicates no delay. +// Microseconds returns a float32 +func (obj *flowDelay) Microseconds() float32 { + + if obj.obj.Microseconds == nil { + obj.SetChoice(FlowDelayChoice.MICROSECONDS) + } + + return *obj.obj.Microseconds + +} + +// The delay before starting transmission of packets. +// A value of 0 indicates no delay. +// Microseconds returns a float32 +func (obj *flowDelay) HasMicroseconds() bool { + return obj.obj.Microseconds != nil +} + +// The delay before starting transmission of packets. +// A value of 0 indicates no delay. +// SetMicroseconds sets the float32 value in the FlowDelay object +func (obj *flowDelay) SetMicroseconds(value float32) FlowDelay { + obj.SetChoice(FlowDelayChoice.MICROSECONDS) + obj.obj.Microseconds = &value + return obj +} + +func (obj *flowDelay) validateObj(vObj *validation, set_default bool) { if set_default { obj.setDefault() } + if obj.obj.Bytes != nil { + + if *obj.obj.Bytes < 0 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("0 <= FlowDelay.Bytes <= max(float32) but Got %f", *obj.obj.Bytes)) + } + + } + + if obj.obj.Nanoseconds != nil { + + if *obj.obj.Nanoseconds < 0 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("0 <= FlowDelay.Nanoseconds <= max(float32) but Got %f", *obj.obj.Nanoseconds)) + } + + } + + if obj.obj.Microseconds != nil { + + if *obj.obj.Microseconds < 0 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("0 <= FlowDelay.Microseconds <= max(float32) but Got %f", *obj.obj.Microseconds)) + } + + } + } -func (obj *deviceBgpOpenMessageError) setDefault() { - if obj.obj.Subcode == nil { - obj.SetSubcode(DeviceBgpOpenMessageErrorSubcode.UNSUPPORTED_VERSION_NUMBER_CODE2_SUBCODE1) +func (obj *flowDelay) setDefault() { + if obj.obj.Choice == nil { + obj.SetChoice(FlowDelayChoice.BYTES) } } -// ***** DeviceBgpUpdateMessageError ***** -type deviceBgpUpdateMessageError struct { +// ***** FlowDurationInterBurstGap ***** +type flowDurationInterBurstGap struct { validation - obj *otg.DeviceBgpUpdateMessageError + obj *otg.FlowDurationInterBurstGap } -func NewDeviceBgpUpdateMessageError() DeviceBgpUpdateMessageError { - obj := deviceBgpUpdateMessageError{obj: &otg.DeviceBgpUpdateMessageError{}} +func NewFlowDurationInterBurstGap() FlowDurationInterBurstGap { + obj := flowDurationInterBurstGap{obj: &otg.FlowDurationInterBurstGap{}} obj.setDefault() return &obj } -func (obj *deviceBgpUpdateMessageError) Msg() *otg.DeviceBgpUpdateMessageError { +func (obj *flowDurationInterBurstGap) Msg() *otg.FlowDurationInterBurstGap { return obj.obj } -func (obj *deviceBgpUpdateMessageError) SetMsg(msg *otg.DeviceBgpUpdateMessageError) DeviceBgpUpdateMessageError { +func (obj *flowDurationInterBurstGap) SetMsg(msg *otg.FlowDurationInterBurstGap) FlowDurationInterBurstGap { proto.Merge(obj.obj, msg) return obj } -func (obj *deviceBgpUpdateMessageError) ToProto() (*otg.DeviceBgpUpdateMessageError, error) { +func (obj *flowDurationInterBurstGap) ToProto() (*otg.FlowDurationInterBurstGap, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -167285,7 +168066,7 @@ func (obj *deviceBgpUpdateMessageError) ToProto() (*otg.DeviceBgpUpdateMessageEr return obj.Msg(), nil } -func (obj *deviceBgpUpdateMessageError) FromProto(msg *otg.DeviceBgpUpdateMessageError) (DeviceBgpUpdateMessageError, error) { +func (obj *flowDurationInterBurstGap) FromProto(msg *otg.FlowDurationInterBurstGap) (FlowDurationInterBurstGap, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -167294,7 +168075,7 @@ func (obj *deviceBgpUpdateMessageError) FromProto(msg *otg.DeviceBgpUpdateMessag return newObj, nil } -func (obj *deviceBgpUpdateMessageError) ToPbText() (string, error) { +func (obj *flowDurationInterBurstGap) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -167306,7 +168087,7 @@ func (obj *deviceBgpUpdateMessageError) ToPbText() (string, error) { return string(protoMarshal), nil } -func (obj *deviceBgpUpdateMessageError) FromPbText(value string) error { +func (obj *flowDurationInterBurstGap) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj @@ -167319,7 +168100,7 @@ func (obj *deviceBgpUpdateMessageError) FromPbText(value string) error { return retObj } -func (obj *deviceBgpUpdateMessageError) ToYaml() (string, error) { +func (obj *flowDurationInterBurstGap) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -167340,7 +168121,7 @@ func (obj *deviceBgpUpdateMessageError) ToYaml() (string, error) { return string(data), nil } -func (obj *deviceBgpUpdateMessageError) FromYaml(value string) error { +func (obj *flowDurationInterBurstGap) FromYaml(value string) error { if value == "" { value = "{}" } @@ -167365,7 +168146,7 @@ func (obj *deviceBgpUpdateMessageError) FromYaml(value string) error { return nil } -func (obj *deviceBgpUpdateMessageError) ToJson() (string, error) { +func (obj *flowDurationInterBurstGap) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -167383,7 +168164,7 @@ func (obj *deviceBgpUpdateMessageError) ToJson() (string, error) { return string(data), nil } -func (obj *deviceBgpUpdateMessageError) FromJson(value string) error { +func (obj *flowDurationInterBurstGap) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -167404,19 +168185,19 @@ func (obj *deviceBgpUpdateMessageError) FromJson(value string) error { return nil } -func (obj *deviceBgpUpdateMessageError) validateToAndFrom() error { +func (obj *flowDurationInterBurstGap) validateToAndFrom() error { // emptyVars() obj.validateObj(&obj.validation, true) return obj.validationResult() } -func (obj *deviceBgpUpdateMessageError) Validate() error { +func (obj *flowDurationInterBurstGap) Validate() error { // emptyVars() obj.validateObj(&obj.validation, false) return obj.validationResult() } -func (obj *deviceBgpUpdateMessageError) String() string { +func (obj *flowDurationInterBurstGap) String() string { str, err := obj.ToYaml() if err != nil { return err.Error() @@ -167424,12 +168205,12 @@ func (obj *deviceBgpUpdateMessageError) String() string { return str } -func (obj *deviceBgpUpdateMessageError) Clone() (DeviceBgpUpdateMessageError, error) { +func (obj *flowDurationInterBurstGap) Clone() (FlowDurationInterBurstGap, error) { vErr := obj.Validate() if vErr != nil { return nil, vErr } - newObj := NewDeviceBgpUpdateMessageError() + newObj := NewFlowDurationInterBurstGap() data, err := proto.Marshal(obj.Msg()) if err != nil { return nil, err @@ -167441,138 +168222,275 @@ func (obj *deviceBgpUpdateMessageError) Clone() (DeviceBgpUpdateMessageError, er return newObj, nil } -// DeviceBgpUpdateMessageError is all errors detected while processing the UPDATE message are indicated by sending the NOTIFICATION message with the Error Code-Update Message Error. The Error Subcode elaborates on the specific nature of the error. -type DeviceBgpUpdateMessageError interface { +// FlowDurationInterBurstGap is the optional container for specifying a gap between bursts. +type FlowDurationInterBurstGap interface { Validation - // Msg marshals DeviceBgpUpdateMessageError to protobuf object *otg.DeviceBgpUpdateMessageError + // Msg marshals FlowDurationInterBurstGap to protobuf object *otg.FlowDurationInterBurstGap // and doesn't set defaults - Msg() *otg.DeviceBgpUpdateMessageError - // SetMsg unmarshals DeviceBgpUpdateMessageError from protobuf object *otg.DeviceBgpUpdateMessageError + Msg() *otg.FlowDurationInterBurstGap + // SetMsg unmarshals FlowDurationInterBurstGap from protobuf object *otg.FlowDurationInterBurstGap // and doesn't set defaults - SetMsg(*otg.DeviceBgpUpdateMessageError) DeviceBgpUpdateMessageError - // ToProto marshals DeviceBgpUpdateMessageError to protobuf object *otg.DeviceBgpUpdateMessageError - ToProto() (*otg.DeviceBgpUpdateMessageError, error) - // ToPbText marshals DeviceBgpUpdateMessageError to protobuf text + SetMsg(*otg.FlowDurationInterBurstGap) FlowDurationInterBurstGap + // ToProto marshals FlowDurationInterBurstGap to protobuf object *otg.FlowDurationInterBurstGap + ToProto() (*otg.FlowDurationInterBurstGap, error) + // ToPbText marshals FlowDurationInterBurstGap to protobuf text ToPbText() (string, error) - // ToYaml marshals DeviceBgpUpdateMessageError to YAML text + // ToYaml marshals FlowDurationInterBurstGap to YAML text ToYaml() (string, error) - // ToJson marshals DeviceBgpUpdateMessageError to JSON text + // ToJson marshals FlowDurationInterBurstGap to JSON text ToJson() (string, error) - // FromProto unmarshals DeviceBgpUpdateMessageError from protobuf object *otg.DeviceBgpUpdateMessageError - FromProto(msg *otg.DeviceBgpUpdateMessageError) (DeviceBgpUpdateMessageError, error) - // FromPbText unmarshals DeviceBgpUpdateMessageError from protobuf text + // FromProto unmarshals FlowDurationInterBurstGap from protobuf object *otg.FlowDurationInterBurstGap + FromProto(msg *otg.FlowDurationInterBurstGap) (FlowDurationInterBurstGap, error) + // FromPbText unmarshals FlowDurationInterBurstGap from protobuf text FromPbText(value string) error - // FromYaml unmarshals DeviceBgpUpdateMessageError from YAML text + // FromYaml unmarshals FlowDurationInterBurstGap from YAML text FromYaml(value string) error - // FromJson unmarshals DeviceBgpUpdateMessageError from JSON text + // FromJson unmarshals FlowDurationInterBurstGap from JSON text FromJson(value string) error - // Validate validates DeviceBgpUpdateMessageError + // Validate validates FlowDurationInterBurstGap Validate() error // A stringer function String() string // Clones the object - Clone() (DeviceBgpUpdateMessageError, error) + Clone() (FlowDurationInterBurstGap, error) validateToAndFrom() error validateObj(vObj *validation, set_default bool) setDefault() - // Subcode returns DeviceBgpUpdateMessageErrorSubcodeEnum, set in DeviceBgpUpdateMessageError - Subcode() DeviceBgpUpdateMessageErrorSubcodeEnum - // SetSubcode assigns DeviceBgpUpdateMessageErrorSubcodeEnum provided by user to DeviceBgpUpdateMessageError - SetSubcode(value DeviceBgpUpdateMessageErrorSubcodeEnum) DeviceBgpUpdateMessageError - // HasSubcode checks if Subcode has been set in DeviceBgpUpdateMessageError - HasSubcode() bool + // Choice returns FlowDurationInterBurstGapChoiceEnum, set in FlowDurationInterBurstGap + Choice() FlowDurationInterBurstGapChoiceEnum + // SetChoice assigns FlowDurationInterBurstGapChoiceEnum provided by user to FlowDurationInterBurstGap + SetChoice(value FlowDurationInterBurstGapChoiceEnum) FlowDurationInterBurstGap + // HasChoice checks if Choice has been set in FlowDurationInterBurstGap + HasChoice() bool + // Bytes returns float64, set in FlowDurationInterBurstGap. + Bytes() float64 + // SetBytes assigns float64 provided by user to FlowDurationInterBurstGap + SetBytes(value float64) FlowDurationInterBurstGap + // HasBytes checks if Bytes has been set in FlowDurationInterBurstGap + HasBytes() bool + // Nanoseconds returns float64, set in FlowDurationInterBurstGap. + Nanoseconds() float64 + // SetNanoseconds assigns float64 provided by user to FlowDurationInterBurstGap + SetNanoseconds(value float64) FlowDurationInterBurstGap + // HasNanoseconds checks if Nanoseconds has been set in FlowDurationInterBurstGap + HasNanoseconds() bool + // Microseconds returns float64, set in FlowDurationInterBurstGap. + Microseconds() float64 + // SetMicroseconds assigns float64 provided by user to FlowDurationInterBurstGap + SetMicroseconds(value float64) FlowDurationInterBurstGap + // HasMicroseconds checks if Microseconds has been set in FlowDurationInterBurstGap + HasMicroseconds() bool } -type DeviceBgpUpdateMessageErrorSubcodeEnum string +type FlowDurationInterBurstGapChoiceEnum string -// Enum of Subcode on DeviceBgpUpdateMessageError -var DeviceBgpUpdateMessageErrorSubcode = struct { - MALFORMED_ATTRIB_LIST_CODE3_SUBCODE1 DeviceBgpUpdateMessageErrorSubcodeEnum - UNRECOGNIZED_WELLKNOWN_ATTRIB_CODE3_SUBCODE2 DeviceBgpUpdateMessageErrorSubcodeEnum - WELLKNOWN_ATTRIB_MISSING_CODE3_SUBCODE3 DeviceBgpUpdateMessageErrorSubcodeEnum - ATTRIB_FLAGS_ERROR_CODE3_SUBCODE4 DeviceBgpUpdateMessageErrorSubcodeEnum - ATTRIB_LENGTH_ERROR_CODE3_SUBCODE5 DeviceBgpUpdateMessageErrorSubcodeEnum - INVALID_ORIGIN_ATTRIB_CODE3_SUBCODE6 DeviceBgpUpdateMessageErrorSubcodeEnum - AS_ROUTING_LOOP_CODE3_SUBCODE7 DeviceBgpUpdateMessageErrorSubcodeEnum - INVALID_NHOP_ATTRIB_CODE3_SUBCODE8 DeviceBgpUpdateMessageErrorSubcodeEnum - ERROR_OPTIONAL_ATTRIB_CODE3_SUBCODE9 DeviceBgpUpdateMessageErrorSubcodeEnum - INVALID_NETWORK_FIELD_CODE3_SUBCODE10 DeviceBgpUpdateMessageErrorSubcodeEnum - ABNORMAL_ASPATH_CODE3_SUBCODE11 DeviceBgpUpdateMessageErrorSubcodeEnum +// Enum of Choice on FlowDurationInterBurstGap +var FlowDurationInterBurstGapChoice = struct { + BYTES FlowDurationInterBurstGapChoiceEnum + NANOSECONDS FlowDurationInterBurstGapChoiceEnum + MICROSECONDS FlowDurationInterBurstGapChoiceEnum }{ - MALFORMED_ATTRIB_LIST_CODE3_SUBCODE1: DeviceBgpUpdateMessageErrorSubcodeEnum("malformed_attrib_list_code3_subcode1"), - UNRECOGNIZED_WELLKNOWN_ATTRIB_CODE3_SUBCODE2: DeviceBgpUpdateMessageErrorSubcodeEnum("unrecognized_wellknown_attrib_code3_subcode2"), - WELLKNOWN_ATTRIB_MISSING_CODE3_SUBCODE3: DeviceBgpUpdateMessageErrorSubcodeEnum("wellknown_attrib_missing_code3_subcode3"), - ATTRIB_FLAGS_ERROR_CODE3_SUBCODE4: DeviceBgpUpdateMessageErrorSubcodeEnum("attrib_flags_error_code3_subcode4"), - ATTRIB_LENGTH_ERROR_CODE3_SUBCODE5: DeviceBgpUpdateMessageErrorSubcodeEnum("attrib_length_error_code3_subcode5"), - INVALID_ORIGIN_ATTRIB_CODE3_SUBCODE6: DeviceBgpUpdateMessageErrorSubcodeEnum("invalid_origin_attrib_code3_subcode6"), - AS_ROUTING_LOOP_CODE3_SUBCODE7: DeviceBgpUpdateMessageErrorSubcodeEnum("as_routing_loop_code3_subcode7"), - INVALID_NHOP_ATTRIB_CODE3_SUBCODE8: DeviceBgpUpdateMessageErrorSubcodeEnum("invalid_nhop_attrib_code3_subcode8"), - ERROR_OPTIONAL_ATTRIB_CODE3_SUBCODE9: DeviceBgpUpdateMessageErrorSubcodeEnum("error_optional_attrib_code3_subcode9"), - INVALID_NETWORK_FIELD_CODE3_SUBCODE10: DeviceBgpUpdateMessageErrorSubcodeEnum("invalid_network_field_code3_subcode10"), - ABNORMAL_ASPATH_CODE3_SUBCODE11: DeviceBgpUpdateMessageErrorSubcodeEnum("abnormal_aspath_code3_subcode11"), + BYTES: FlowDurationInterBurstGapChoiceEnum("bytes"), + NANOSECONDS: FlowDurationInterBurstGapChoiceEnum("nanoseconds"), + MICROSECONDS: FlowDurationInterBurstGapChoiceEnum("microseconds"), } -func (obj *deviceBgpUpdateMessageError) Subcode() DeviceBgpUpdateMessageErrorSubcodeEnum { - return DeviceBgpUpdateMessageErrorSubcodeEnum(obj.obj.Subcode.Enum().String()) +func (obj *flowDurationInterBurstGap) Choice() FlowDurationInterBurstGapChoiceEnum { + return FlowDurationInterBurstGapChoiceEnum(obj.obj.Choice.Enum().String()) } -// The Error Subcode, the specific type of error encountered during UPDATE processing. -// Subcode returns a string -func (obj *deviceBgpUpdateMessageError) HasSubcode() bool { - return obj.obj.Subcode != nil +// The type of inter burst gap units. +// Choice returns a string +func (obj *flowDurationInterBurstGap) HasChoice() bool { + return obj.obj.Choice != nil } -func (obj *deviceBgpUpdateMessageError) SetSubcode(value DeviceBgpUpdateMessageErrorSubcodeEnum) DeviceBgpUpdateMessageError { - intValue, ok := otg.DeviceBgpUpdateMessageError_Subcode_Enum_value[string(value)] +func (obj *flowDurationInterBurstGap) SetChoice(value FlowDurationInterBurstGapChoiceEnum) FlowDurationInterBurstGap { + intValue, ok := otg.FlowDurationInterBurstGap_Choice_Enum_value[string(value)] if !ok { obj.validationErrors = append(obj.validationErrors, fmt.Sprintf( - "%s is not a valid choice on DeviceBgpUpdateMessageErrorSubcodeEnum", string(value))) + "%s is not a valid choice on FlowDurationInterBurstGapChoiceEnum", string(value))) return obj } - enumValue := otg.DeviceBgpUpdateMessageError_Subcode_Enum(intValue) - obj.obj.Subcode = &enumValue + enumValue := otg.FlowDurationInterBurstGap_Choice_Enum(intValue) + obj.obj.Choice = &enumValue + obj.obj.Microseconds = nil + obj.obj.Nanoseconds = nil + obj.obj.Bytes = nil + + if value == FlowDurationInterBurstGapChoice.BYTES { + defaultValue := float64(12) + obj.obj.Bytes = &defaultValue + } + + if value == FlowDurationInterBurstGapChoice.NANOSECONDS { + defaultValue := float64(96) + obj.obj.Nanoseconds = &defaultValue + } + + if value == FlowDurationInterBurstGapChoice.MICROSECONDS { + defaultValue := float64(0.096) + obj.obj.Microseconds = &defaultValue + } return obj } -func (obj *deviceBgpUpdateMessageError) validateObj(vObj *validation, set_default bool) { +// The amount of time between bursts expressed in bytes. +// A value of 0 indicates no gap between bursts. +// Bytes returns a float64 +func (obj *flowDurationInterBurstGap) Bytes() float64 { + + if obj.obj.Bytes == nil { + obj.SetChoice(FlowDurationInterBurstGapChoice.BYTES) + } + + return *obj.obj.Bytes + +} + +// The amount of time between bursts expressed in bytes. +// A value of 0 indicates no gap between bursts. +// Bytes returns a float64 +func (obj *flowDurationInterBurstGap) HasBytes() bool { + return obj.obj.Bytes != nil +} + +// The amount of time between bursts expressed in bytes. +// A value of 0 indicates no gap between bursts. +// SetBytes sets the float64 value in the FlowDurationInterBurstGap object +func (obj *flowDurationInterBurstGap) SetBytes(value float64) FlowDurationInterBurstGap { + obj.SetChoice(FlowDurationInterBurstGapChoice.BYTES) + obj.obj.Bytes = &value + return obj +} + +// The amount of time between bursts expressed in nanoseconds. +// A value of 0 indicates no gap between bursts. +// Nanoseconds returns a float64 +func (obj *flowDurationInterBurstGap) Nanoseconds() float64 { + + if obj.obj.Nanoseconds == nil { + obj.SetChoice(FlowDurationInterBurstGapChoice.NANOSECONDS) + } + + return *obj.obj.Nanoseconds + +} + +// The amount of time between bursts expressed in nanoseconds. +// A value of 0 indicates no gap between bursts. +// Nanoseconds returns a float64 +func (obj *flowDurationInterBurstGap) HasNanoseconds() bool { + return obj.obj.Nanoseconds != nil +} + +// The amount of time between bursts expressed in nanoseconds. +// A value of 0 indicates no gap between bursts. +// SetNanoseconds sets the float64 value in the FlowDurationInterBurstGap object +func (obj *flowDurationInterBurstGap) SetNanoseconds(value float64) FlowDurationInterBurstGap { + obj.SetChoice(FlowDurationInterBurstGapChoice.NANOSECONDS) + obj.obj.Nanoseconds = &value + return obj +} + +// The amount of time between bursts expressed in microseconds. +// A value of 0 indicates no gap between bursts. +// Microseconds returns a float64 +func (obj *flowDurationInterBurstGap) Microseconds() float64 { + + if obj.obj.Microseconds == nil { + obj.SetChoice(FlowDurationInterBurstGapChoice.MICROSECONDS) + } + + return *obj.obj.Microseconds + +} + +// The amount of time between bursts expressed in microseconds. +// A value of 0 indicates no gap between bursts. +// Microseconds returns a float64 +func (obj *flowDurationInterBurstGap) HasMicroseconds() bool { + return obj.obj.Microseconds != nil +} + +// The amount of time between bursts expressed in microseconds. +// A value of 0 indicates no gap between bursts. +// SetMicroseconds sets the float64 value in the FlowDurationInterBurstGap object +func (obj *flowDurationInterBurstGap) SetMicroseconds(value float64) FlowDurationInterBurstGap { + obj.SetChoice(FlowDurationInterBurstGapChoice.MICROSECONDS) + obj.obj.Microseconds = &value + return obj +} + +func (obj *flowDurationInterBurstGap) validateObj(vObj *validation, set_default bool) { if set_default { obj.setDefault() } + if obj.obj.Bytes != nil { + + if *obj.obj.Bytes < 0 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("0 <= FlowDurationInterBurstGap.Bytes <= max(float64) but Got %f", *obj.obj.Bytes)) + } + + } + + if obj.obj.Nanoseconds != nil { + + if *obj.obj.Nanoseconds < 0 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("0 <= FlowDurationInterBurstGap.Nanoseconds <= max(float64) but Got %f", *obj.obj.Nanoseconds)) + } + + } + + if obj.obj.Microseconds != nil { + + if *obj.obj.Microseconds < 0 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("0 <= FlowDurationInterBurstGap.Microseconds <= max(float64) but Got %f", *obj.obj.Microseconds)) + } + + } + } -func (obj *deviceBgpUpdateMessageError) setDefault() { - if obj.obj.Subcode == nil { - obj.SetSubcode(DeviceBgpUpdateMessageErrorSubcode.MALFORMED_ATTRIB_LIST_CODE3_SUBCODE1) +func (obj *flowDurationInterBurstGap) setDefault() { + if obj.obj.Choice == nil { + obj.SetChoice(FlowDurationInterBurstGapChoice.BYTES) } } -// ***** DeviceBgpHoldTimerExpired ***** -type deviceBgpHoldTimerExpired struct { +// ***** FlowRxTxRatioRxCount ***** +type flowRxTxRatioRxCount struct { validation - obj *otg.DeviceBgpHoldTimerExpired + obj *otg.FlowRxTxRatioRxCount } -func NewDeviceBgpHoldTimerExpired() DeviceBgpHoldTimerExpired { - obj := deviceBgpHoldTimerExpired{obj: &otg.DeviceBgpHoldTimerExpired{}} +func NewFlowRxTxRatioRxCount() FlowRxTxRatioRxCount { + obj := flowRxTxRatioRxCount{obj: &otg.FlowRxTxRatioRxCount{}} obj.setDefault() return &obj } -func (obj *deviceBgpHoldTimerExpired) Msg() *otg.DeviceBgpHoldTimerExpired { +func (obj *flowRxTxRatioRxCount) Msg() *otg.FlowRxTxRatioRxCount { return obj.obj } -func (obj *deviceBgpHoldTimerExpired) SetMsg(msg *otg.DeviceBgpHoldTimerExpired) DeviceBgpHoldTimerExpired { +func (obj *flowRxTxRatioRxCount) SetMsg(msg *otg.FlowRxTxRatioRxCount) FlowRxTxRatioRxCount { proto.Merge(obj.obj, msg) return obj } -func (obj *deviceBgpHoldTimerExpired) ToProto() (*otg.DeviceBgpHoldTimerExpired, error) { +func (obj *flowRxTxRatioRxCount) ToProto() (*otg.FlowRxTxRatioRxCount, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -167580,7 +168498,7 @@ func (obj *deviceBgpHoldTimerExpired) ToProto() (*otg.DeviceBgpHoldTimerExpired, return obj.Msg(), nil } -func (obj *deviceBgpHoldTimerExpired) FromProto(msg *otg.DeviceBgpHoldTimerExpired) (DeviceBgpHoldTimerExpired, error) { +func (obj *flowRxTxRatioRxCount) FromProto(msg *otg.FlowRxTxRatioRxCount) (FlowRxTxRatioRxCount, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -167589,7 +168507,7 @@ func (obj *deviceBgpHoldTimerExpired) FromProto(msg *otg.DeviceBgpHoldTimerExpir return newObj, nil } -func (obj *deviceBgpHoldTimerExpired) ToPbText() (string, error) { +func (obj *flowRxTxRatioRxCount) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -167601,7 +168519,7 @@ func (obj *deviceBgpHoldTimerExpired) ToPbText() (string, error) { return string(protoMarshal), nil } -func (obj *deviceBgpHoldTimerExpired) FromPbText(value string) error { +func (obj *flowRxTxRatioRxCount) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj @@ -167614,7 +168532,7 @@ func (obj *deviceBgpHoldTimerExpired) FromPbText(value string) error { return retObj } -func (obj *deviceBgpHoldTimerExpired) ToYaml() (string, error) { +func (obj *flowRxTxRatioRxCount) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -167635,7 +168553,7 @@ func (obj *deviceBgpHoldTimerExpired) ToYaml() (string, error) { return string(data), nil } -func (obj *deviceBgpHoldTimerExpired) FromYaml(value string) error { +func (obj *flowRxTxRatioRxCount) FromYaml(value string) error { if value == "" { value = "{}" } @@ -167660,7 +168578,7 @@ func (obj *deviceBgpHoldTimerExpired) FromYaml(value string) error { return nil } -func (obj *deviceBgpHoldTimerExpired) ToJson() (string, error) { +func (obj *flowRxTxRatioRxCount) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -167678,7 +168596,7 @@ func (obj *deviceBgpHoldTimerExpired) ToJson() (string, error) { return string(data), nil } -func (obj *deviceBgpHoldTimerExpired) FromJson(value string) error { +func (obj *flowRxTxRatioRxCount) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -167699,19 +168617,19 @@ func (obj *deviceBgpHoldTimerExpired) FromJson(value string) error { return nil } -func (obj *deviceBgpHoldTimerExpired) validateToAndFrom() error { +func (obj *flowRxTxRatioRxCount) validateToAndFrom() error { // emptyVars() obj.validateObj(&obj.validation, true) return obj.validationResult() } -func (obj *deviceBgpHoldTimerExpired) Validate() error { +func (obj *flowRxTxRatioRxCount) Validate() error { // emptyVars() obj.validateObj(&obj.validation, false) return obj.validationResult() } -func (obj *deviceBgpHoldTimerExpired) String() string { +func (obj *flowRxTxRatioRxCount) String() string { str, err := obj.ToYaml() if err != nil { return err.Error() @@ -167719,12 +168637,12 @@ func (obj *deviceBgpHoldTimerExpired) String() string { return str } -func (obj *deviceBgpHoldTimerExpired) Clone() (DeviceBgpHoldTimerExpired, error) { +func (obj *flowRxTxRatioRxCount) Clone() (FlowRxTxRatioRxCount, error) { vErr := obj.Validate() if vErr != nil { return nil, vErr } - newObj := NewDeviceBgpHoldTimerExpired() + newObj := NewFlowRxTxRatioRxCount() data, err := proto.Marshal(obj.Msg()) if err != nil { return nil, err @@ -167736,76 +168654,77 @@ func (obj *deviceBgpHoldTimerExpired) Clone() (DeviceBgpHoldTimerExpired, error) return newObj, nil } -// DeviceBgpHoldTimerExpired is if a system does not receive successive KEEPALIVE, UPDATE, and/or NOTIFICATION messages within the period specified in the Hold Time field of the OPEN message, then the NOTIFICATION message with the Hold Timer Expired Error Code(Error Code 4) is sent and the BGP connection is closed. The Sub Code used is 0. If a user wants to use non zero Sub Code then CustomError can be used. -type DeviceBgpHoldTimerExpired interface { +// FlowRxTxRatioRxCount is this is for cases where one copy of Tx packet is received on all Rx ports and so the sum total of Rx packets +// received across all Rx ports is a multiple of Rx port count and Tx packets. +type FlowRxTxRatioRxCount interface { Validation - // Msg marshals DeviceBgpHoldTimerExpired to protobuf object *otg.DeviceBgpHoldTimerExpired + // Msg marshals FlowRxTxRatioRxCount to protobuf object *otg.FlowRxTxRatioRxCount // and doesn't set defaults - Msg() *otg.DeviceBgpHoldTimerExpired - // SetMsg unmarshals DeviceBgpHoldTimerExpired from protobuf object *otg.DeviceBgpHoldTimerExpired + Msg() *otg.FlowRxTxRatioRxCount + // SetMsg unmarshals FlowRxTxRatioRxCount from protobuf object *otg.FlowRxTxRatioRxCount // and doesn't set defaults - SetMsg(*otg.DeviceBgpHoldTimerExpired) DeviceBgpHoldTimerExpired - // ToProto marshals DeviceBgpHoldTimerExpired to protobuf object *otg.DeviceBgpHoldTimerExpired - ToProto() (*otg.DeviceBgpHoldTimerExpired, error) - // ToPbText marshals DeviceBgpHoldTimerExpired to protobuf text + SetMsg(*otg.FlowRxTxRatioRxCount) FlowRxTxRatioRxCount + // ToProto marshals FlowRxTxRatioRxCount to protobuf object *otg.FlowRxTxRatioRxCount + ToProto() (*otg.FlowRxTxRatioRxCount, error) + // ToPbText marshals FlowRxTxRatioRxCount to protobuf text ToPbText() (string, error) - // ToYaml marshals DeviceBgpHoldTimerExpired to YAML text + // ToYaml marshals FlowRxTxRatioRxCount to YAML text ToYaml() (string, error) - // ToJson marshals DeviceBgpHoldTimerExpired to JSON text + // ToJson marshals FlowRxTxRatioRxCount to JSON text ToJson() (string, error) - // FromProto unmarshals DeviceBgpHoldTimerExpired from protobuf object *otg.DeviceBgpHoldTimerExpired - FromProto(msg *otg.DeviceBgpHoldTimerExpired) (DeviceBgpHoldTimerExpired, error) - // FromPbText unmarshals DeviceBgpHoldTimerExpired from protobuf text + // FromProto unmarshals FlowRxTxRatioRxCount from protobuf object *otg.FlowRxTxRatioRxCount + FromProto(msg *otg.FlowRxTxRatioRxCount) (FlowRxTxRatioRxCount, error) + // FromPbText unmarshals FlowRxTxRatioRxCount from protobuf text FromPbText(value string) error - // FromYaml unmarshals DeviceBgpHoldTimerExpired from YAML text + // FromYaml unmarshals FlowRxTxRatioRxCount from YAML text FromYaml(value string) error - // FromJson unmarshals DeviceBgpHoldTimerExpired from JSON text + // FromJson unmarshals FlowRxTxRatioRxCount from JSON text FromJson(value string) error - // Validate validates DeviceBgpHoldTimerExpired + // Validate validates FlowRxTxRatioRxCount Validate() error // A stringer function String() string // Clones the object - Clone() (DeviceBgpHoldTimerExpired, error) + Clone() (FlowRxTxRatioRxCount, error) validateToAndFrom() error validateObj(vObj *validation, set_default bool) setDefault() } -func (obj *deviceBgpHoldTimerExpired) validateObj(vObj *validation, set_default bool) { +func (obj *flowRxTxRatioRxCount) validateObj(vObj *validation, set_default bool) { if set_default { obj.setDefault() } } -func (obj *deviceBgpHoldTimerExpired) setDefault() { +func (obj *flowRxTxRatioRxCount) setDefault() { } -// ***** DeviceBgpFiniteStateMachineError ***** -type deviceBgpFiniteStateMachineError struct { +// ***** ActionProtocolIpv4PingRequest ***** +type actionProtocolIpv4PingRequest struct { validation - obj *otg.DeviceBgpFiniteStateMachineError + obj *otg.ActionProtocolIpv4PingRequest } -func NewDeviceBgpFiniteStateMachineError() DeviceBgpFiniteStateMachineError { - obj := deviceBgpFiniteStateMachineError{obj: &otg.DeviceBgpFiniteStateMachineError{}} +func NewActionProtocolIpv4PingRequest() ActionProtocolIpv4PingRequest { + obj := actionProtocolIpv4PingRequest{obj: &otg.ActionProtocolIpv4PingRequest{}} obj.setDefault() return &obj } -func (obj *deviceBgpFiniteStateMachineError) Msg() *otg.DeviceBgpFiniteStateMachineError { +func (obj *actionProtocolIpv4PingRequest) Msg() *otg.ActionProtocolIpv4PingRequest { return obj.obj } -func (obj *deviceBgpFiniteStateMachineError) SetMsg(msg *otg.DeviceBgpFiniteStateMachineError) DeviceBgpFiniteStateMachineError { +func (obj *actionProtocolIpv4PingRequest) SetMsg(msg *otg.ActionProtocolIpv4PingRequest) ActionProtocolIpv4PingRequest { proto.Merge(obj.obj, msg) return obj } -func (obj *deviceBgpFiniteStateMachineError) ToProto() (*otg.DeviceBgpFiniteStateMachineError, error) { +func (obj *actionProtocolIpv4PingRequest) ToProto() (*otg.ActionProtocolIpv4PingRequest, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -167813,7 +168732,7 @@ func (obj *deviceBgpFiniteStateMachineError) ToProto() (*otg.DeviceBgpFiniteStat return obj.Msg(), nil } -func (obj *deviceBgpFiniteStateMachineError) FromProto(msg *otg.DeviceBgpFiniteStateMachineError) (DeviceBgpFiniteStateMachineError, error) { +func (obj *actionProtocolIpv4PingRequest) FromProto(msg *otg.ActionProtocolIpv4PingRequest) (ActionProtocolIpv4PingRequest, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -167822,7 +168741,7 @@ func (obj *deviceBgpFiniteStateMachineError) FromProto(msg *otg.DeviceBgpFiniteS return newObj, nil } -func (obj *deviceBgpFiniteStateMachineError) ToPbText() (string, error) { +func (obj *actionProtocolIpv4PingRequest) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -167834,7 +168753,7 @@ func (obj *deviceBgpFiniteStateMachineError) ToPbText() (string, error) { return string(protoMarshal), nil } -func (obj *deviceBgpFiniteStateMachineError) FromPbText(value string) error { +func (obj *actionProtocolIpv4PingRequest) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj @@ -167847,7 +168766,7 @@ func (obj *deviceBgpFiniteStateMachineError) FromPbText(value string) error { return retObj } -func (obj *deviceBgpFiniteStateMachineError) ToYaml() (string, error) { +func (obj *actionProtocolIpv4PingRequest) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -167868,7 +168787,7 @@ func (obj *deviceBgpFiniteStateMachineError) ToYaml() (string, error) { return string(data), nil } -func (obj *deviceBgpFiniteStateMachineError) FromYaml(value string) error { +func (obj *actionProtocolIpv4PingRequest) FromYaml(value string) error { if value == "" { value = "{}" } @@ -167893,7 +168812,7 @@ func (obj *deviceBgpFiniteStateMachineError) FromYaml(value string) error { return nil } -func (obj *deviceBgpFiniteStateMachineError) ToJson() (string, error) { +func (obj *actionProtocolIpv4PingRequest) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -167911,7 +168830,7 @@ func (obj *deviceBgpFiniteStateMachineError) ToJson() (string, error) { return string(data), nil } -func (obj *deviceBgpFiniteStateMachineError) FromJson(value string) error { +func (obj *actionProtocolIpv4PingRequest) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -167932,19 +168851,19 @@ func (obj *deviceBgpFiniteStateMachineError) FromJson(value string) error { return nil } -func (obj *deviceBgpFiniteStateMachineError) validateToAndFrom() error { +func (obj *actionProtocolIpv4PingRequest) validateToAndFrom() error { // emptyVars() obj.validateObj(&obj.validation, true) return obj.validationResult() } -func (obj *deviceBgpFiniteStateMachineError) Validate() error { +func (obj *actionProtocolIpv4PingRequest) Validate() error { // emptyVars() obj.validateObj(&obj.validation, false) return obj.validationResult() } -func (obj *deviceBgpFiniteStateMachineError) String() string { +func (obj *actionProtocolIpv4PingRequest) String() string { str, err := obj.ToYaml() if err != nil { return err.Error() @@ -167952,12 +168871,12 @@ func (obj *deviceBgpFiniteStateMachineError) String() string { return str } -func (obj *deviceBgpFiniteStateMachineError) Clone() (DeviceBgpFiniteStateMachineError, error) { +func (obj *actionProtocolIpv4PingRequest) Clone() (ActionProtocolIpv4PingRequest, error) { vErr := obj.Validate() if vErr != nil { return nil, vErr } - newObj := NewDeviceBgpFiniteStateMachineError() + newObj := NewActionProtocolIpv4PingRequest() data, err := proto.Marshal(obj.Msg()) if err != nil { return nil, err @@ -167969,76 +168888,158 @@ func (obj *deviceBgpFiniteStateMachineError) Clone() (DeviceBgpFiniteStateMachin return newObj, nil } -// DeviceBgpFiniteStateMachineError is any error detected by the BGP Finite State Machine (e.g., receipt of an unexpected event) is indicated by sending the NOTIFICATION message with the Error Code-Finite State Machine Error(Error Code 5). The Sub Code used is 0. If a user wants to use non zero Sub Code then CustomError can be used. -type DeviceBgpFiniteStateMachineError interface { +// ActionProtocolIpv4PingRequest is under Review: Most ping request parameters are still TBD. +// +// Request for initiating ping between a single source and destination pair. +// For ping request, 1 IPv4 ICMP Echo Request shall be sent and wait for ping response to either succeed or time out. The API wait timeout for each request shall be 300ms. +type ActionProtocolIpv4PingRequest interface { Validation - // Msg marshals DeviceBgpFiniteStateMachineError to protobuf object *otg.DeviceBgpFiniteStateMachineError + // Msg marshals ActionProtocolIpv4PingRequest to protobuf object *otg.ActionProtocolIpv4PingRequest // and doesn't set defaults - Msg() *otg.DeviceBgpFiniteStateMachineError - // SetMsg unmarshals DeviceBgpFiniteStateMachineError from protobuf object *otg.DeviceBgpFiniteStateMachineError + Msg() *otg.ActionProtocolIpv4PingRequest + // SetMsg unmarshals ActionProtocolIpv4PingRequest from protobuf object *otg.ActionProtocolIpv4PingRequest // and doesn't set defaults - SetMsg(*otg.DeviceBgpFiniteStateMachineError) DeviceBgpFiniteStateMachineError - // ToProto marshals DeviceBgpFiniteStateMachineError to protobuf object *otg.DeviceBgpFiniteStateMachineError - ToProto() (*otg.DeviceBgpFiniteStateMachineError, error) - // ToPbText marshals DeviceBgpFiniteStateMachineError to protobuf text + SetMsg(*otg.ActionProtocolIpv4PingRequest) ActionProtocolIpv4PingRequest + // ToProto marshals ActionProtocolIpv4PingRequest to protobuf object *otg.ActionProtocolIpv4PingRequest + ToProto() (*otg.ActionProtocolIpv4PingRequest, error) + // ToPbText marshals ActionProtocolIpv4PingRequest to protobuf text ToPbText() (string, error) - // ToYaml marshals DeviceBgpFiniteStateMachineError to YAML text + // ToYaml marshals ActionProtocolIpv4PingRequest to YAML text ToYaml() (string, error) - // ToJson marshals DeviceBgpFiniteStateMachineError to JSON text + // ToJson marshals ActionProtocolIpv4PingRequest to JSON text ToJson() (string, error) - // FromProto unmarshals DeviceBgpFiniteStateMachineError from protobuf object *otg.DeviceBgpFiniteStateMachineError - FromProto(msg *otg.DeviceBgpFiniteStateMachineError) (DeviceBgpFiniteStateMachineError, error) - // FromPbText unmarshals DeviceBgpFiniteStateMachineError from protobuf text + // FromProto unmarshals ActionProtocolIpv4PingRequest from protobuf object *otg.ActionProtocolIpv4PingRequest + FromProto(msg *otg.ActionProtocolIpv4PingRequest) (ActionProtocolIpv4PingRequest, error) + // FromPbText unmarshals ActionProtocolIpv4PingRequest from protobuf text FromPbText(value string) error - // FromYaml unmarshals DeviceBgpFiniteStateMachineError from YAML text + // FromYaml unmarshals ActionProtocolIpv4PingRequest from YAML text FromYaml(value string) error - // FromJson unmarshals DeviceBgpFiniteStateMachineError from JSON text + // FromJson unmarshals ActionProtocolIpv4PingRequest from JSON text FromJson(value string) error - // Validate validates DeviceBgpFiniteStateMachineError + // Validate validates ActionProtocolIpv4PingRequest Validate() error // A stringer function String() string // Clones the object - Clone() (DeviceBgpFiniteStateMachineError, error) + Clone() (ActionProtocolIpv4PingRequest, error) validateToAndFrom() error validateObj(vObj *validation, set_default bool) setDefault() + // SrcName returns string, set in ActionProtocolIpv4PingRequest. + SrcName() string + // SetSrcName assigns string provided by user to ActionProtocolIpv4PingRequest + SetSrcName(value string) ActionProtocolIpv4PingRequest + // HasSrcName checks if SrcName has been set in ActionProtocolIpv4PingRequest + HasSrcName() bool + // DstIp returns string, set in ActionProtocolIpv4PingRequest. + DstIp() string + // SetDstIp assigns string provided by user to ActionProtocolIpv4PingRequest + SetDstIp(value string) ActionProtocolIpv4PingRequest + // HasDstIp checks if DstIp has been set in ActionProtocolIpv4PingRequest + HasDstIp() bool } -func (obj *deviceBgpFiniteStateMachineError) validateObj(vObj *validation, set_default bool) { +// Name of source IPv4 interface to be used. +// +// x-constraint: +// - /components/schemas/Device.Ipv4/properties/name +// +// SrcName returns a string +func (obj *actionProtocolIpv4PingRequest) SrcName() string { + + return *obj.obj.SrcName + +} + +// Name of source IPv4 interface to be used. +// +// x-constraint: +// - /components/schemas/Device.Ipv4/properties/name +// +// SrcName returns a string +func (obj *actionProtocolIpv4PingRequest) HasSrcName() bool { + return obj.obj.SrcName != nil +} + +// Name of source IPv4 interface to be used. +// +// x-constraint: +// - /components/schemas/Device.Ipv4/properties/name +// +// SetSrcName sets the string value in the ActionProtocolIpv4PingRequest object +func (obj *actionProtocolIpv4PingRequest) SetSrcName(value string) ActionProtocolIpv4PingRequest { + + obj.obj.SrcName = &value + return obj +} + +// Destination IPv4 address to ping. +// DstIp returns a string +func (obj *actionProtocolIpv4PingRequest) DstIp() string { + + return *obj.obj.DstIp + +} + +// Destination IPv4 address to ping. +// DstIp returns a string +func (obj *actionProtocolIpv4PingRequest) HasDstIp() bool { + return obj.obj.DstIp != nil +} + +// Destination IPv4 address to ping. +// SetDstIp sets the string value in the ActionProtocolIpv4PingRequest object +func (obj *actionProtocolIpv4PingRequest) SetDstIp(value string) ActionProtocolIpv4PingRequest { + + obj.obj.DstIp = &value + return obj +} + +func (obj *actionProtocolIpv4PingRequest) validateObj(vObj *validation, set_default bool) { if set_default { obj.setDefault() } + obj.addWarnings("ActionProtocolIpv4PingRequest is under review, Most ping request parameters are still TBD.") + + if obj.obj.DstIp != nil { + + err := obj.validateIpv4(obj.DstIp()) + if err != nil { + vObj.validationErrors = append(vObj.validationErrors, fmt.Sprintf("%s %s", err.Error(), "on ActionProtocolIpv4PingRequest.DstIp")) + } + + } + } -func (obj *deviceBgpFiniteStateMachineError) setDefault() { +func (obj *actionProtocolIpv4PingRequest) setDefault() { } -// ***** DeviceBgpCustomError ***** -type deviceBgpCustomError struct { +// ***** ActionProtocolIpv6PingRequest ***** +type actionProtocolIpv6PingRequest struct { validation - obj *otg.DeviceBgpCustomError + obj *otg.ActionProtocolIpv6PingRequest } -func NewDeviceBgpCustomError() DeviceBgpCustomError { - obj := deviceBgpCustomError{obj: &otg.DeviceBgpCustomError{}} +func NewActionProtocolIpv6PingRequest() ActionProtocolIpv6PingRequest { + obj := actionProtocolIpv6PingRequest{obj: &otg.ActionProtocolIpv6PingRequest{}} obj.setDefault() return &obj } -func (obj *deviceBgpCustomError) Msg() *otg.DeviceBgpCustomError { +func (obj *actionProtocolIpv6PingRequest) Msg() *otg.ActionProtocolIpv6PingRequest { return obj.obj } -func (obj *deviceBgpCustomError) SetMsg(msg *otg.DeviceBgpCustomError) DeviceBgpCustomError { +func (obj *actionProtocolIpv6PingRequest) SetMsg(msg *otg.ActionProtocolIpv6PingRequest) ActionProtocolIpv6PingRequest { proto.Merge(obj.obj, msg) return obj } -func (obj *deviceBgpCustomError) ToProto() (*otg.DeviceBgpCustomError, error) { +func (obj *actionProtocolIpv6PingRequest) ToProto() (*otg.ActionProtocolIpv6PingRequest, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -168046,7 +169047,7 @@ func (obj *deviceBgpCustomError) ToProto() (*otg.DeviceBgpCustomError, error) { return obj.Msg(), nil } -func (obj *deviceBgpCustomError) FromProto(msg *otg.DeviceBgpCustomError) (DeviceBgpCustomError, error) { +func (obj *actionProtocolIpv6PingRequest) FromProto(msg *otg.ActionProtocolIpv6PingRequest) (ActionProtocolIpv6PingRequest, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -168055,7 +169056,7 @@ func (obj *deviceBgpCustomError) FromProto(msg *otg.DeviceBgpCustomError) (Devic return newObj, nil } -func (obj *deviceBgpCustomError) ToPbText() (string, error) { +func (obj *actionProtocolIpv6PingRequest) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -168067,7 +169068,7 @@ func (obj *deviceBgpCustomError) ToPbText() (string, error) { return string(protoMarshal), nil } -func (obj *deviceBgpCustomError) FromPbText(value string) error { +func (obj *actionProtocolIpv6PingRequest) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj @@ -168080,7 +169081,7 @@ func (obj *deviceBgpCustomError) FromPbText(value string) error { return retObj } -func (obj *deviceBgpCustomError) ToYaml() (string, error) { +func (obj *actionProtocolIpv6PingRequest) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -168101,7 +169102,7 @@ func (obj *deviceBgpCustomError) ToYaml() (string, error) { return string(data), nil } -func (obj *deviceBgpCustomError) FromYaml(value string) error { +func (obj *actionProtocolIpv6PingRequest) FromYaml(value string) error { if value == "" { value = "{}" } @@ -168126,7 +169127,7 @@ func (obj *deviceBgpCustomError) FromYaml(value string) error { return nil } -func (obj *deviceBgpCustomError) ToJson() (string, error) { +func (obj *actionProtocolIpv6PingRequest) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -168144,7 +169145,7 @@ func (obj *deviceBgpCustomError) ToJson() (string, error) { return string(data), nil } -func (obj *deviceBgpCustomError) FromJson(value string) error { +func (obj *actionProtocolIpv6PingRequest) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -168165,19 +169166,19 @@ func (obj *deviceBgpCustomError) FromJson(value string) error { return nil } -func (obj *deviceBgpCustomError) validateToAndFrom() error { +func (obj *actionProtocolIpv6PingRequest) validateToAndFrom() error { // emptyVars() obj.validateObj(&obj.validation, true) return obj.validationResult() } -func (obj *deviceBgpCustomError) Validate() error { +func (obj *actionProtocolIpv6PingRequest) Validate() error { // emptyVars() obj.validateObj(&obj.validation, false) return obj.validationResult() } -func (obj *deviceBgpCustomError) String() string { +func (obj *actionProtocolIpv6PingRequest) String() string { str, err := obj.ToYaml() if err != nil { return err.Error() @@ -168185,12 +169186,12 @@ func (obj *deviceBgpCustomError) String() string { return str } -func (obj *deviceBgpCustomError) Clone() (DeviceBgpCustomError, error) { +func (obj *actionProtocolIpv6PingRequest) Clone() (ActionProtocolIpv6PingRequest, error) { vErr := obj.Validate() if vErr != nil { return nil, vErr } - newObj := NewDeviceBgpCustomError() + newObj := NewActionProtocolIpv6PingRequest() data, err := proto.Marshal(obj.Msg()) if err != nil { return nil, err @@ -168202,133 +169203,158 @@ func (obj *deviceBgpCustomError) Clone() (DeviceBgpCustomError, error) { return newObj, nil } -// DeviceBgpCustomError is a BGP peer can send NOTIFICATION message with user defined Error Code and Error Subcode. -type DeviceBgpCustomError interface { +// ActionProtocolIpv6PingRequest is under Review: Most ping request parameters are still TBD. +// +// Request for initiating ping between a single source and destination pair. +// For ping request, 1 IPv6 ICMP Echo Request shall be sent and wait for ping response to either succeed or time out. The API wait timeout for each request shall be 300ms. +type ActionProtocolIpv6PingRequest interface { Validation - // Msg marshals DeviceBgpCustomError to protobuf object *otg.DeviceBgpCustomError + // Msg marshals ActionProtocolIpv6PingRequest to protobuf object *otg.ActionProtocolIpv6PingRequest // and doesn't set defaults - Msg() *otg.DeviceBgpCustomError - // SetMsg unmarshals DeviceBgpCustomError from protobuf object *otg.DeviceBgpCustomError + Msg() *otg.ActionProtocolIpv6PingRequest + // SetMsg unmarshals ActionProtocolIpv6PingRequest from protobuf object *otg.ActionProtocolIpv6PingRequest // and doesn't set defaults - SetMsg(*otg.DeviceBgpCustomError) DeviceBgpCustomError - // ToProto marshals DeviceBgpCustomError to protobuf object *otg.DeviceBgpCustomError - ToProto() (*otg.DeviceBgpCustomError, error) - // ToPbText marshals DeviceBgpCustomError to protobuf text + SetMsg(*otg.ActionProtocolIpv6PingRequest) ActionProtocolIpv6PingRequest + // ToProto marshals ActionProtocolIpv6PingRequest to protobuf object *otg.ActionProtocolIpv6PingRequest + ToProto() (*otg.ActionProtocolIpv6PingRequest, error) + // ToPbText marshals ActionProtocolIpv6PingRequest to protobuf text ToPbText() (string, error) - // ToYaml marshals DeviceBgpCustomError to YAML text + // ToYaml marshals ActionProtocolIpv6PingRequest to YAML text ToYaml() (string, error) - // ToJson marshals DeviceBgpCustomError to JSON text + // ToJson marshals ActionProtocolIpv6PingRequest to JSON text ToJson() (string, error) - // FromProto unmarshals DeviceBgpCustomError from protobuf object *otg.DeviceBgpCustomError - FromProto(msg *otg.DeviceBgpCustomError) (DeviceBgpCustomError, error) - // FromPbText unmarshals DeviceBgpCustomError from protobuf text + // FromProto unmarshals ActionProtocolIpv6PingRequest from protobuf object *otg.ActionProtocolIpv6PingRequest + FromProto(msg *otg.ActionProtocolIpv6PingRequest) (ActionProtocolIpv6PingRequest, error) + // FromPbText unmarshals ActionProtocolIpv6PingRequest from protobuf text FromPbText(value string) error - // FromYaml unmarshals DeviceBgpCustomError from YAML text + // FromYaml unmarshals ActionProtocolIpv6PingRequest from YAML text FromYaml(value string) error - // FromJson unmarshals DeviceBgpCustomError from JSON text + // FromJson unmarshals ActionProtocolIpv6PingRequest from JSON text FromJson(value string) error - // Validate validates DeviceBgpCustomError + // Validate validates ActionProtocolIpv6PingRequest Validate() error // A stringer function String() string // Clones the object - Clone() (DeviceBgpCustomError, error) + Clone() (ActionProtocolIpv6PingRequest, error) validateToAndFrom() error validateObj(vObj *validation, set_default bool) setDefault() - // Code returns uint32, set in DeviceBgpCustomError. - Code() uint32 - // SetCode assigns uint32 provided by user to DeviceBgpCustomError - SetCode(value uint32) DeviceBgpCustomError - // HasCode checks if Code has been set in DeviceBgpCustomError - HasCode() bool - // Subcode returns uint32, set in DeviceBgpCustomError. - Subcode() uint32 - // SetSubcode assigns uint32 provided by user to DeviceBgpCustomError - SetSubcode(value uint32) DeviceBgpCustomError - // HasSubcode checks if Subcode has been set in DeviceBgpCustomError - HasSubcode() bool + // SrcName returns string, set in ActionProtocolIpv6PingRequest. + SrcName() string + // SetSrcName assigns string provided by user to ActionProtocolIpv6PingRequest + SetSrcName(value string) ActionProtocolIpv6PingRequest + // HasSrcName checks if SrcName has been set in ActionProtocolIpv6PingRequest + HasSrcName() bool + // DstIp returns string, set in ActionProtocolIpv6PingRequest. + DstIp() string + // SetDstIp assigns string provided by user to ActionProtocolIpv6PingRequest + SetDstIp(value string) ActionProtocolIpv6PingRequest + // HasDstIp checks if DstIp has been set in ActionProtocolIpv6PingRequest + HasDstIp() bool } -// The Error code to be sent in the NOTIFICATION message to peer. -// Code returns a uint32 -func (obj *deviceBgpCustomError) Code() uint32 { +// Name of source IPv6 interface to be used. +// +// x-constraint: +// - /components/schemas/Device.Ipv6/properties/name +// +// SrcName returns a string +func (obj *actionProtocolIpv6PingRequest) SrcName() string { - return *obj.obj.Code + return *obj.obj.SrcName } -// The Error code to be sent in the NOTIFICATION message to peer. -// Code returns a uint32 -func (obj *deviceBgpCustomError) HasCode() bool { - return obj.obj.Code != nil +// Name of source IPv6 interface to be used. +// +// x-constraint: +// - /components/schemas/Device.Ipv6/properties/name +// +// SrcName returns a string +func (obj *actionProtocolIpv6PingRequest) HasSrcName() bool { + return obj.obj.SrcName != nil } -// The Error code to be sent in the NOTIFICATION message to peer. -// SetCode sets the uint32 value in the DeviceBgpCustomError object -func (obj *deviceBgpCustomError) SetCode(value uint32) DeviceBgpCustomError { +// Name of source IPv6 interface to be used. +// +// x-constraint: +// - /components/schemas/Device.Ipv6/properties/name +// +// SetSrcName sets the string value in the ActionProtocolIpv6PingRequest object +func (obj *actionProtocolIpv6PingRequest) SetSrcName(value string) ActionProtocolIpv6PingRequest { - obj.obj.Code = &value + obj.obj.SrcName = &value return obj } -// The Error Subcode to be sent in the NOTIFICATION message to peer. -// Subcode returns a uint32 -func (obj *deviceBgpCustomError) Subcode() uint32 { +// Destination IPv6 address to ping. +// DstIp returns a string +func (obj *actionProtocolIpv6PingRequest) DstIp() string { - return *obj.obj.Subcode + return *obj.obj.DstIp } -// The Error Subcode to be sent in the NOTIFICATION message to peer. -// Subcode returns a uint32 -func (obj *deviceBgpCustomError) HasSubcode() bool { - return obj.obj.Subcode != nil +// Destination IPv6 address to ping. +// DstIp returns a string +func (obj *actionProtocolIpv6PingRequest) HasDstIp() bool { + return obj.obj.DstIp != nil } -// The Error Subcode to be sent in the NOTIFICATION message to peer. -// SetSubcode sets the uint32 value in the DeviceBgpCustomError object -func (obj *deviceBgpCustomError) SetSubcode(value uint32) DeviceBgpCustomError { +// Destination IPv6 address to ping. +// SetDstIp sets the string value in the ActionProtocolIpv6PingRequest object +func (obj *actionProtocolIpv6PingRequest) SetDstIp(value string) ActionProtocolIpv6PingRequest { - obj.obj.Subcode = &value + obj.obj.DstIp = &value return obj } -func (obj *deviceBgpCustomError) validateObj(vObj *validation, set_default bool) { +func (obj *actionProtocolIpv6PingRequest) validateObj(vObj *validation, set_default bool) { if set_default { obj.setDefault() } + obj.addWarnings("ActionProtocolIpv6PingRequest is under review, Most ping request parameters are still TBD.") + + if obj.obj.DstIp != nil { + + err := obj.validateIpv6(obj.DstIp()) + if err != nil { + vObj.validationErrors = append(vObj.validationErrors, fmt.Sprintf("%s %s", err.Error(), "on ActionProtocolIpv6PingRequest.DstIp")) + } + + } + } -func (obj *deviceBgpCustomError) setDefault() { +func (obj *actionProtocolIpv6PingRequest) setDefault() { } -// ***** ActionResponseProtocolIpv4 ***** -type actionResponseProtocolIpv4 struct { +// ***** DeviceBgpCeaseError ***** +type deviceBgpCeaseError struct { validation - obj *otg.ActionResponseProtocolIpv4 - pingHolder ActionResponseProtocolIpv4Ping + obj *otg.DeviceBgpCeaseError } -func NewActionResponseProtocolIpv4() ActionResponseProtocolIpv4 { - obj := actionResponseProtocolIpv4{obj: &otg.ActionResponseProtocolIpv4{}} +func NewDeviceBgpCeaseError() DeviceBgpCeaseError { + obj := deviceBgpCeaseError{obj: &otg.DeviceBgpCeaseError{}} obj.setDefault() return &obj } -func (obj *actionResponseProtocolIpv4) Msg() *otg.ActionResponseProtocolIpv4 { +func (obj *deviceBgpCeaseError) Msg() *otg.DeviceBgpCeaseError { return obj.obj } -func (obj *actionResponseProtocolIpv4) SetMsg(msg *otg.ActionResponseProtocolIpv4) ActionResponseProtocolIpv4 { - obj.setNil() +func (obj *deviceBgpCeaseError) SetMsg(msg *otg.DeviceBgpCeaseError) DeviceBgpCeaseError { + proto.Merge(obj.obj, msg) return obj } -func (obj *actionResponseProtocolIpv4) ToProto() (*otg.ActionResponseProtocolIpv4, error) { +func (obj *deviceBgpCeaseError) ToProto() (*otg.DeviceBgpCeaseError, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -168336,7 +169362,7 @@ func (obj *actionResponseProtocolIpv4) ToProto() (*otg.ActionResponseProtocolIpv return obj.Msg(), nil } -func (obj *actionResponseProtocolIpv4) FromProto(msg *otg.ActionResponseProtocolIpv4) (ActionResponseProtocolIpv4, error) { +func (obj *deviceBgpCeaseError) FromProto(msg *otg.DeviceBgpCeaseError) (DeviceBgpCeaseError, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -168345,7 +169371,7 @@ func (obj *actionResponseProtocolIpv4) FromProto(msg *otg.ActionResponseProtocol return newObj, nil } -func (obj *actionResponseProtocolIpv4) ToPbText() (string, error) { +func (obj *deviceBgpCeaseError) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -168357,12 +169383,12 @@ func (obj *actionResponseProtocolIpv4) ToPbText() (string, error) { return string(protoMarshal), nil } -func (obj *actionResponseProtocolIpv4) FromPbText(value string) error { +func (obj *deviceBgpCeaseError) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj } - obj.setNil() + vErr := obj.validateToAndFrom() if vErr != nil { return vErr @@ -168370,7 +169396,7 @@ func (obj *actionResponseProtocolIpv4) FromPbText(value string) error { return retObj } -func (obj *actionResponseProtocolIpv4) ToYaml() (string, error) { +func (obj *deviceBgpCeaseError) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -168391,7 +169417,7 @@ func (obj *actionResponseProtocolIpv4) ToYaml() (string, error) { return string(data), nil } -func (obj *actionResponseProtocolIpv4) FromYaml(value string) error { +func (obj *deviceBgpCeaseError) FromYaml(value string) error { if value == "" { value = "{}" } @@ -168408,7 +169434,7 @@ func (obj *actionResponseProtocolIpv4) FromYaml(value string) error { return fmt.Errorf("unmarshal error %s", strings.Replace( uError.Error(), "\u00a0", " ", -1)[7:]) } - obj.setNil() + vErr := obj.validateToAndFrom() if vErr != nil { return vErr @@ -168416,7 +169442,7 @@ func (obj *actionResponseProtocolIpv4) FromYaml(value string) error { return nil } -func (obj *actionResponseProtocolIpv4) ToJson() (string, error) { +func (obj *deviceBgpCeaseError) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -168434,7 +169460,7 @@ func (obj *actionResponseProtocolIpv4) ToJson() (string, error) { return string(data), nil } -func (obj *actionResponseProtocolIpv4) FromJson(value string) error { +func (obj *deviceBgpCeaseError) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -168447,7 +169473,7 @@ func (obj *actionResponseProtocolIpv4) FromJson(value string) error { return fmt.Errorf("unmarshal error %s", strings.Replace( uError.Error(), "\u00a0", " ", -1)[7:]) } - obj.setNil() + err := obj.validateToAndFrom() if err != nil { return err @@ -168455,19 +169481,19 @@ func (obj *actionResponseProtocolIpv4) FromJson(value string) error { return nil } -func (obj *actionResponseProtocolIpv4) validateToAndFrom() error { +func (obj *deviceBgpCeaseError) validateToAndFrom() error { // emptyVars() obj.validateObj(&obj.validation, true) return obj.validationResult() } -func (obj *actionResponseProtocolIpv4) Validate() error { +func (obj *deviceBgpCeaseError) Validate() error { // emptyVars() obj.validateObj(&obj.validation, false) return obj.validationResult() } -func (obj *actionResponseProtocolIpv4) String() string { +func (obj *deviceBgpCeaseError) String() string { str, err := obj.ToYaml() if err != nil { return err.Error() @@ -168475,12 +169501,12 @@ func (obj *actionResponseProtocolIpv4) String() string { return str } -func (obj *actionResponseProtocolIpv4) Clone() (ActionResponseProtocolIpv4, error) { +func (obj *deviceBgpCeaseError) Clone() (DeviceBgpCeaseError, error) { vErr := obj.Validate() if vErr != nil { return nil, vErr } - newObj := NewActionResponseProtocolIpv4() + newObj := NewDeviceBgpCeaseError() data, err := proto.Marshal(obj.Msg()) if err != nil { return nil, err @@ -168492,167 +169518,134 @@ func (obj *actionResponseProtocolIpv4) Clone() (ActionResponseProtocolIpv4, erro return newObj, nil } -func (obj *actionResponseProtocolIpv4) setNil() { - obj.pingHolder = nil - obj.validationErrors = nil - obj.warnings = nil - obj.constraints = make(map[string]map[string]Constraints) -} - -// ActionResponseProtocolIpv4 is response for actions associated with IPv4 on configured resources. -type ActionResponseProtocolIpv4 interface { +// DeviceBgpCeaseError is in the absence of any fatal errors, a BGP peer can close its BGP connection by sending the NOTIFICATION message with the Error Code Cease. +type DeviceBgpCeaseError interface { Validation - // Msg marshals ActionResponseProtocolIpv4 to protobuf object *otg.ActionResponseProtocolIpv4 + // Msg marshals DeviceBgpCeaseError to protobuf object *otg.DeviceBgpCeaseError // and doesn't set defaults - Msg() *otg.ActionResponseProtocolIpv4 - // SetMsg unmarshals ActionResponseProtocolIpv4 from protobuf object *otg.ActionResponseProtocolIpv4 + Msg() *otg.DeviceBgpCeaseError + // SetMsg unmarshals DeviceBgpCeaseError from protobuf object *otg.DeviceBgpCeaseError // and doesn't set defaults - SetMsg(*otg.ActionResponseProtocolIpv4) ActionResponseProtocolIpv4 - // ToProto marshals ActionResponseProtocolIpv4 to protobuf object *otg.ActionResponseProtocolIpv4 - ToProto() (*otg.ActionResponseProtocolIpv4, error) - // ToPbText marshals ActionResponseProtocolIpv4 to protobuf text + SetMsg(*otg.DeviceBgpCeaseError) DeviceBgpCeaseError + // ToProto marshals DeviceBgpCeaseError to protobuf object *otg.DeviceBgpCeaseError + ToProto() (*otg.DeviceBgpCeaseError, error) + // ToPbText marshals DeviceBgpCeaseError to protobuf text ToPbText() (string, error) - // ToYaml marshals ActionResponseProtocolIpv4 to YAML text + // ToYaml marshals DeviceBgpCeaseError to YAML text ToYaml() (string, error) - // ToJson marshals ActionResponseProtocolIpv4 to JSON text + // ToJson marshals DeviceBgpCeaseError to JSON text ToJson() (string, error) - // FromProto unmarshals ActionResponseProtocolIpv4 from protobuf object *otg.ActionResponseProtocolIpv4 - FromProto(msg *otg.ActionResponseProtocolIpv4) (ActionResponseProtocolIpv4, error) - // FromPbText unmarshals ActionResponseProtocolIpv4 from protobuf text + // FromProto unmarshals DeviceBgpCeaseError from protobuf object *otg.DeviceBgpCeaseError + FromProto(msg *otg.DeviceBgpCeaseError) (DeviceBgpCeaseError, error) + // FromPbText unmarshals DeviceBgpCeaseError from protobuf text FromPbText(value string) error - // FromYaml unmarshals ActionResponseProtocolIpv4 from YAML text + // FromYaml unmarshals DeviceBgpCeaseError from YAML text FromYaml(value string) error - // FromJson unmarshals ActionResponseProtocolIpv4 from JSON text + // FromJson unmarshals DeviceBgpCeaseError from JSON text FromJson(value string) error - // Validate validates ActionResponseProtocolIpv4 + // Validate validates DeviceBgpCeaseError Validate() error // A stringer function String() string // Clones the object - Clone() (ActionResponseProtocolIpv4, error) + Clone() (DeviceBgpCeaseError, error) validateToAndFrom() error validateObj(vObj *validation, set_default bool) setDefault() - // Choice returns ActionResponseProtocolIpv4ChoiceEnum, set in ActionResponseProtocolIpv4 - Choice() ActionResponseProtocolIpv4ChoiceEnum - // SetChoice assigns ActionResponseProtocolIpv4ChoiceEnum provided by user to ActionResponseProtocolIpv4 - SetChoice(value ActionResponseProtocolIpv4ChoiceEnum) ActionResponseProtocolIpv4 - // Ping returns ActionResponseProtocolIpv4Ping, set in ActionResponseProtocolIpv4. - // ActionResponseProtocolIpv4Ping is response for ping initiated between multiple source and destination pairs. - Ping() ActionResponseProtocolIpv4Ping - // SetPing assigns ActionResponseProtocolIpv4Ping provided by user to ActionResponseProtocolIpv4. - // ActionResponseProtocolIpv4Ping is response for ping initiated between multiple source and destination pairs. - SetPing(value ActionResponseProtocolIpv4Ping) ActionResponseProtocolIpv4 - // HasPing checks if Ping has been set in ActionResponseProtocolIpv4 - HasPing() bool - setNil() + // Subcode returns DeviceBgpCeaseErrorSubcodeEnum, set in DeviceBgpCeaseError + Subcode() DeviceBgpCeaseErrorSubcodeEnum + // SetSubcode assigns DeviceBgpCeaseErrorSubcodeEnum provided by user to DeviceBgpCeaseError + SetSubcode(value DeviceBgpCeaseErrorSubcodeEnum) DeviceBgpCeaseError + // HasSubcode checks if Subcode has been set in DeviceBgpCeaseError + HasSubcode() bool } -type ActionResponseProtocolIpv4ChoiceEnum string +type DeviceBgpCeaseErrorSubcodeEnum string -// Enum of Choice on ActionResponseProtocolIpv4 -var ActionResponseProtocolIpv4Choice = struct { - PING ActionResponseProtocolIpv4ChoiceEnum +// Enum of Subcode on DeviceBgpCeaseError +var DeviceBgpCeaseErrorSubcode = struct { + MAX_NUMBER_PREFIX_REACHED_CODE6_SUBCODE1 DeviceBgpCeaseErrorSubcodeEnum + ADMIN_SHUTDOWN_CODE6_SUBCODE2 DeviceBgpCeaseErrorSubcodeEnum + PEER_DELETED_CODE6_SUBCODE3 DeviceBgpCeaseErrorSubcodeEnum + ADMIN_RESET_CODE6_SUBCODE4 DeviceBgpCeaseErrorSubcodeEnum + CONNECTION_REJECT_CODE6_SUBCODE5 DeviceBgpCeaseErrorSubcodeEnum + OTHER_CONFIG_CHANGES_CODE6_SUBCODE6 DeviceBgpCeaseErrorSubcodeEnum + CONNECTION_COLLISION_RESOLUTION_CODE6_SUBCODE7 DeviceBgpCeaseErrorSubcodeEnum + OUT_OF_RESOURCES_CODE6_SUBCODE8 DeviceBgpCeaseErrorSubcodeEnum + BFD_SESSION_DOWN_CODE6_SUBCODE9 DeviceBgpCeaseErrorSubcodeEnum }{ - PING: ActionResponseProtocolIpv4ChoiceEnum("ping"), + MAX_NUMBER_PREFIX_REACHED_CODE6_SUBCODE1: DeviceBgpCeaseErrorSubcodeEnum("max_number_prefix_reached_code6_subcode1"), + ADMIN_SHUTDOWN_CODE6_SUBCODE2: DeviceBgpCeaseErrorSubcodeEnum("admin_shutdown_code6_subcode2"), + PEER_DELETED_CODE6_SUBCODE3: DeviceBgpCeaseErrorSubcodeEnum("peer_deleted_code6_subcode3"), + ADMIN_RESET_CODE6_SUBCODE4: DeviceBgpCeaseErrorSubcodeEnum("admin_reset_code6_subcode4"), + CONNECTION_REJECT_CODE6_SUBCODE5: DeviceBgpCeaseErrorSubcodeEnum("connection_reject_code6_subcode5"), + OTHER_CONFIG_CHANGES_CODE6_SUBCODE6: DeviceBgpCeaseErrorSubcodeEnum("other_config_changes_code6_subcode6"), + CONNECTION_COLLISION_RESOLUTION_CODE6_SUBCODE7: DeviceBgpCeaseErrorSubcodeEnum("connection_collision_resolution_code6_subcode7"), + OUT_OF_RESOURCES_CODE6_SUBCODE8: DeviceBgpCeaseErrorSubcodeEnum("out_of_resources_code6_subcode8"), + BFD_SESSION_DOWN_CODE6_SUBCODE9: DeviceBgpCeaseErrorSubcodeEnum("bfd_session_down_code6_subcode9"), } -func (obj *actionResponseProtocolIpv4) Choice() ActionResponseProtocolIpv4ChoiceEnum { - return ActionResponseProtocolIpv4ChoiceEnum(obj.obj.Choice.Enum().String()) +func (obj *deviceBgpCeaseError) Subcode() DeviceBgpCeaseErrorSubcodeEnum { + return DeviceBgpCeaseErrorSubcodeEnum(obj.obj.Subcode.Enum().String()) } -func (obj *actionResponseProtocolIpv4) SetChoice(value ActionResponseProtocolIpv4ChoiceEnum) ActionResponseProtocolIpv4 { - intValue, ok := otg.ActionResponseProtocolIpv4_Choice_Enum_value[string(value)] +// The Error Subcode to be sent to the peer in the Cease NOTIFICATION. +// Subcode returns a string +func (obj *deviceBgpCeaseError) HasSubcode() bool { + return obj.obj.Subcode != nil +} + +func (obj *deviceBgpCeaseError) SetSubcode(value DeviceBgpCeaseErrorSubcodeEnum) DeviceBgpCeaseError { + intValue, ok := otg.DeviceBgpCeaseError_Subcode_Enum_value[string(value)] if !ok { obj.validationErrors = append(obj.validationErrors, fmt.Sprintf( - "%s is not a valid choice on ActionResponseProtocolIpv4ChoiceEnum", string(value))) + "%s is not a valid choice on DeviceBgpCeaseErrorSubcodeEnum", string(value))) return obj } - enumValue := otg.ActionResponseProtocolIpv4_Choice_Enum(intValue) - obj.obj.Choice = &enumValue - obj.obj.Ping = nil - obj.pingHolder = nil - - if value == ActionResponseProtocolIpv4Choice.PING { - obj.obj.Ping = NewActionResponseProtocolIpv4Ping().Msg() - } - - return obj -} - -// description is TBD -// Ping returns a ActionResponseProtocolIpv4Ping -func (obj *actionResponseProtocolIpv4) Ping() ActionResponseProtocolIpv4Ping { - if obj.obj.Ping == nil { - obj.SetChoice(ActionResponseProtocolIpv4Choice.PING) - } - if obj.pingHolder == nil { - obj.pingHolder = &actionResponseProtocolIpv4Ping{obj: obj.obj.Ping} - } - return obj.pingHolder -} - -// description is TBD -// Ping returns a ActionResponseProtocolIpv4Ping -func (obj *actionResponseProtocolIpv4) HasPing() bool { - return obj.obj.Ping != nil -} - -// description is TBD -// SetPing sets the ActionResponseProtocolIpv4Ping value in the ActionResponseProtocolIpv4 object -func (obj *actionResponseProtocolIpv4) SetPing(value ActionResponseProtocolIpv4Ping) ActionResponseProtocolIpv4 { - obj.SetChoice(ActionResponseProtocolIpv4Choice.PING) - obj.pingHolder = nil - obj.obj.Ping = value.Msg() + enumValue := otg.DeviceBgpCeaseError_Subcode_Enum(intValue) + obj.obj.Subcode = &enumValue return obj } -func (obj *actionResponseProtocolIpv4) validateObj(vObj *validation, set_default bool) { +func (obj *deviceBgpCeaseError) validateObj(vObj *validation, set_default bool) { if set_default { obj.setDefault() } - // Choice is required - if obj.obj.Choice == nil { - vObj.validationErrors = append(vObj.validationErrors, "Choice is required field on interface ActionResponseProtocolIpv4") - } +} - if obj.obj.Ping != nil { +func (obj *deviceBgpCeaseError) setDefault() { + if obj.obj.Subcode == nil { + obj.SetSubcode(DeviceBgpCeaseErrorSubcode.ADMIN_SHUTDOWN_CODE6_SUBCODE2) - obj.Ping().validateObj(vObj, set_default) } } -func (obj *actionResponseProtocolIpv4) setDefault() { - -} - -// ***** ActionResponseProtocolIpv6 ***** -type actionResponseProtocolIpv6 struct { +// ***** DeviceBgpMessageHeaderError ***** +type deviceBgpMessageHeaderError struct { validation - obj *otg.ActionResponseProtocolIpv6 - pingHolder ActionResponseProtocolIpv6Ping + obj *otg.DeviceBgpMessageHeaderError } -func NewActionResponseProtocolIpv6() ActionResponseProtocolIpv6 { - obj := actionResponseProtocolIpv6{obj: &otg.ActionResponseProtocolIpv6{}} +func NewDeviceBgpMessageHeaderError() DeviceBgpMessageHeaderError { + obj := deviceBgpMessageHeaderError{obj: &otg.DeviceBgpMessageHeaderError{}} obj.setDefault() return &obj } -func (obj *actionResponseProtocolIpv6) Msg() *otg.ActionResponseProtocolIpv6 { +func (obj *deviceBgpMessageHeaderError) Msg() *otg.DeviceBgpMessageHeaderError { return obj.obj } -func (obj *actionResponseProtocolIpv6) SetMsg(msg *otg.ActionResponseProtocolIpv6) ActionResponseProtocolIpv6 { - obj.setNil() +func (obj *deviceBgpMessageHeaderError) SetMsg(msg *otg.DeviceBgpMessageHeaderError) DeviceBgpMessageHeaderError { + proto.Merge(obj.obj, msg) return obj } -func (obj *actionResponseProtocolIpv6) ToProto() (*otg.ActionResponseProtocolIpv6, error) { +func (obj *deviceBgpMessageHeaderError) ToProto() (*otg.DeviceBgpMessageHeaderError, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -168660,7 +169653,7 @@ func (obj *actionResponseProtocolIpv6) ToProto() (*otg.ActionResponseProtocolIpv return obj.Msg(), nil } -func (obj *actionResponseProtocolIpv6) FromProto(msg *otg.ActionResponseProtocolIpv6) (ActionResponseProtocolIpv6, error) { +func (obj *deviceBgpMessageHeaderError) FromProto(msg *otg.DeviceBgpMessageHeaderError) (DeviceBgpMessageHeaderError, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -168669,7 +169662,7 @@ func (obj *actionResponseProtocolIpv6) FromProto(msg *otg.ActionResponseProtocol return newObj, nil } -func (obj *actionResponseProtocolIpv6) ToPbText() (string, error) { +func (obj *deviceBgpMessageHeaderError) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -168681,12 +169674,12 @@ func (obj *actionResponseProtocolIpv6) ToPbText() (string, error) { return string(protoMarshal), nil } -func (obj *actionResponseProtocolIpv6) FromPbText(value string) error { +func (obj *deviceBgpMessageHeaderError) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj } - obj.setNil() + vErr := obj.validateToAndFrom() if vErr != nil { return vErr @@ -168694,7 +169687,7 @@ func (obj *actionResponseProtocolIpv6) FromPbText(value string) error { return retObj } -func (obj *actionResponseProtocolIpv6) ToYaml() (string, error) { +func (obj *deviceBgpMessageHeaderError) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -168715,7 +169708,7 @@ func (obj *actionResponseProtocolIpv6) ToYaml() (string, error) { return string(data), nil } -func (obj *actionResponseProtocolIpv6) FromYaml(value string) error { +func (obj *deviceBgpMessageHeaderError) FromYaml(value string) error { if value == "" { value = "{}" } @@ -168732,7 +169725,7 @@ func (obj *actionResponseProtocolIpv6) FromYaml(value string) error { return fmt.Errorf("unmarshal error %s", strings.Replace( uError.Error(), "\u00a0", " ", -1)[7:]) } - obj.setNil() + vErr := obj.validateToAndFrom() if vErr != nil { return vErr @@ -168740,7 +169733,7 @@ func (obj *actionResponseProtocolIpv6) FromYaml(value string) error { return nil } -func (obj *actionResponseProtocolIpv6) ToJson() (string, error) { +func (obj *deviceBgpMessageHeaderError) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -168758,7 +169751,7 @@ func (obj *actionResponseProtocolIpv6) ToJson() (string, error) { return string(data), nil } -func (obj *actionResponseProtocolIpv6) FromJson(value string) error { +func (obj *deviceBgpMessageHeaderError) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -168771,7 +169764,7 @@ func (obj *actionResponseProtocolIpv6) FromJson(value string) error { return fmt.Errorf("unmarshal error %s", strings.Replace( uError.Error(), "\u00a0", " ", -1)[7:]) } - obj.setNil() + err := obj.validateToAndFrom() if err != nil { return err @@ -168779,19 +169772,19 @@ func (obj *actionResponseProtocolIpv6) FromJson(value string) error { return nil } -func (obj *actionResponseProtocolIpv6) validateToAndFrom() error { +func (obj *deviceBgpMessageHeaderError) validateToAndFrom() error { // emptyVars() obj.validateObj(&obj.validation, true) return obj.validationResult() } -func (obj *actionResponseProtocolIpv6) Validate() error { +func (obj *deviceBgpMessageHeaderError) Validate() error { // emptyVars() obj.validateObj(&obj.validation, false) return obj.validationResult() } -func (obj *actionResponseProtocolIpv6) String() string { +func (obj *deviceBgpMessageHeaderError) String() string { str, err := obj.ToYaml() if err != nil { return err.Error() @@ -168799,12 +169792,12 @@ func (obj *actionResponseProtocolIpv6) String() string { return str } -func (obj *actionResponseProtocolIpv6) Clone() (ActionResponseProtocolIpv6, error) { +func (obj *deviceBgpMessageHeaderError) Clone() (DeviceBgpMessageHeaderError, error) { vErr := obj.Validate() if vErr != nil { return nil, vErr } - newObj := NewActionResponseProtocolIpv6() + newObj := NewDeviceBgpMessageHeaderError() data, err := proto.Marshal(obj.Msg()) if err != nil { return nil, err @@ -168816,167 +169809,122 @@ func (obj *actionResponseProtocolIpv6) Clone() (ActionResponseProtocolIpv6, erro return newObj, nil } -func (obj *actionResponseProtocolIpv6) setNil() { - obj.pingHolder = nil - obj.validationErrors = nil - obj.warnings = nil - obj.constraints = make(map[string]map[string]Constraints) -} - -// ActionResponseProtocolIpv6 is response for actions associated with IPv6 on configured resources. -type ActionResponseProtocolIpv6 interface { +// DeviceBgpMessageHeaderError is all errors detected while processing the Message Header are indicated by sending the NOTIFICATION message with the Error Code-Message Header Error. The Error Subcode elaborates on the specific nature of the error. +type DeviceBgpMessageHeaderError interface { Validation - // Msg marshals ActionResponseProtocolIpv6 to protobuf object *otg.ActionResponseProtocolIpv6 + // Msg marshals DeviceBgpMessageHeaderError to protobuf object *otg.DeviceBgpMessageHeaderError // and doesn't set defaults - Msg() *otg.ActionResponseProtocolIpv6 - // SetMsg unmarshals ActionResponseProtocolIpv6 from protobuf object *otg.ActionResponseProtocolIpv6 + Msg() *otg.DeviceBgpMessageHeaderError + // SetMsg unmarshals DeviceBgpMessageHeaderError from protobuf object *otg.DeviceBgpMessageHeaderError // and doesn't set defaults - SetMsg(*otg.ActionResponseProtocolIpv6) ActionResponseProtocolIpv6 - // ToProto marshals ActionResponseProtocolIpv6 to protobuf object *otg.ActionResponseProtocolIpv6 - ToProto() (*otg.ActionResponseProtocolIpv6, error) - // ToPbText marshals ActionResponseProtocolIpv6 to protobuf text + SetMsg(*otg.DeviceBgpMessageHeaderError) DeviceBgpMessageHeaderError + // ToProto marshals DeviceBgpMessageHeaderError to protobuf object *otg.DeviceBgpMessageHeaderError + ToProto() (*otg.DeviceBgpMessageHeaderError, error) + // ToPbText marshals DeviceBgpMessageHeaderError to protobuf text ToPbText() (string, error) - // ToYaml marshals ActionResponseProtocolIpv6 to YAML text + // ToYaml marshals DeviceBgpMessageHeaderError to YAML text ToYaml() (string, error) - // ToJson marshals ActionResponseProtocolIpv6 to JSON text + // ToJson marshals DeviceBgpMessageHeaderError to JSON text ToJson() (string, error) - // FromProto unmarshals ActionResponseProtocolIpv6 from protobuf object *otg.ActionResponseProtocolIpv6 - FromProto(msg *otg.ActionResponseProtocolIpv6) (ActionResponseProtocolIpv6, error) - // FromPbText unmarshals ActionResponseProtocolIpv6 from protobuf text + // FromProto unmarshals DeviceBgpMessageHeaderError from protobuf object *otg.DeviceBgpMessageHeaderError + FromProto(msg *otg.DeviceBgpMessageHeaderError) (DeviceBgpMessageHeaderError, error) + // FromPbText unmarshals DeviceBgpMessageHeaderError from protobuf text FromPbText(value string) error - // FromYaml unmarshals ActionResponseProtocolIpv6 from YAML text + // FromYaml unmarshals DeviceBgpMessageHeaderError from YAML text FromYaml(value string) error - // FromJson unmarshals ActionResponseProtocolIpv6 from JSON text + // FromJson unmarshals DeviceBgpMessageHeaderError from JSON text FromJson(value string) error - // Validate validates ActionResponseProtocolIpv6 + // Validate validates DeviceBgpMessageHeaderError Validate() error // A stringer function String() string // Clones the object - Clone() (ActionResponseProtocolIpv6, error) + Clone() (DeviceBgpMessageHeaderError, error) validateToAndFrom() error validateObj(vObj *validation, set_default bool) setDefault() - // Choice returns ActionResponseProtocolIpv6ChoiceEnum, set in ActionResponseProtocolIpv6 - Choice() ActionResponseProtocolIpv6ChoiceEnum - // SetChoice assigns ActionResponseProtocolIpv6ChoiceEnum provided by user to ActionResponseProtocolIpv6 - SetChoice(value ActionResponseProtocolIpv6ChoiceEnum) ActionResponseProtocolIpv6 - // Ping returns ActionResponseProtocolIpv6Ping, set in ActionResponseProtocolIpv6. - // ActionResponseProtocolIpv6Ping is response for ping initiated between multiple source and destination pairs. - Ping() ActionResponseProtocolIpv6Ping - // SetPing assigns ActionResponseProtocolIpv6Ping provided by user to ActionResponseProtocolIpv6. - // ActionResponseProtocolIpv6Ping is response for ping initiated between multiple source and destination pairs. - SetPing(value ActionResponseProtocolIpv6Ping) ActionResponseProtocolIpv6 - // HasPing checks if Ping has been set in ActionResponseProtocolIpv6 - HasPing() bool - setNil() + // Subcode returns DeviceBgpMessageHeaderErrorSubcodeEnum, set in DeviceBgpMessageHeaderError + Subcode() DeviceBgpMessageHeaderErrorSubcodeEnum + // SetSubcode assigns DeviceBgpMessageHeaderErrorSubcodeEnum provided by user to DeviceBgpMessageHeaderError + SetSubcode(value DeviceBgpMessageHeaderErrorSubcodeEnum) DeviceBgpMessageHeaderError + // HasSubcode checks if Subcode has been set in DeviceBgpMessageHeaderError + HasSubcode() bool } -type ActionResponseProtocolIpv6ChoiceEnum string +type DeviceBgpMessageHeaderErrorSubcodeEnum string -// Enum of Choice on ActionResponseProtocolIpv6 -var ActionResponseProtocolIpv6Choice = struct { - PING ActionResponseProtocolIpv6ChoiceEnum +// Enum of Subcode on DeviceBgpMessageHeaderError +var DeviceBgpMessageHeaderErrorSubcode = struct { + CONNECTION_NOT_SYNCHRONIZED_CODE1_SUBCODE1 DeviceBgpMessageHeaderErrorSubcodeEnum + BAD_MESSAGE_LENGTH_CODE1_SUBCODE2 DeviceBgpMessageHeaderErrorSubcodeEnum + BAD_MESSAGE_TYPE_CODE1_SUBCODE3 DeviceBgpMessageHeaderErrorSubcodeEnum }{ - PING: ActionResponseProtocolIpv6ChoiceEnum("ping"), + CONNECTION_NOT_SYNCHRONIZED_CODE1_SUBCODE1: DeviceBgpMessageHeaderErrorSubcodeEnum("connection_not_synchronized_code1_subcode1"), + BAD_MESSAGE_LENGTH_CODE1_SUBCODE2: DeviceBgpMessageHeaderErrorSubcodeEnum("bad_message_length_code1_subcode2"), + BAD_MESSAGE_TYPE_CODE1_SUBCODE3: DeviceBgpMessageHeaderErrorSubcodeEnum("bad_message_type_code1_subcode3"), } -func (obj *actionResponseProtocolIpv6) Choice() ActionResponseProtocolIpv6ChoiceEnum { - return ActionResponseProtocolIpv6ChoiceEnum(obj.obj.Choice.Enum().String()) +func (obj *deviceBgpMessageHeaderError) Subcode() DeviceBgpMessageHeaderErrorSubcodeEnum { + return DeviceBgpMessageHeaderErrorSubcodeEnum(obj.obj.Subcode.Enum().String()) } -func (obj *actionResponseProtocolIpv6) SetChoice(value ActionResponseProtocolIpv6ChoiceEnum) ActionResponseProtocolIpv6 { - intValue, ok := otg.ActionResponseProtocolIpv6_Choice_Enum_value[string(value)] +// The Error Subcode indicates the specific type of error encountered during Message Header processing. +// Subcode returns a string +func (obj *deviceBgpMessageHeaderError) HasSubcode() bool { + return obj.obj.Subcode != nil +} + +func (obj *deviceBgpMessageHeaderError) SetSubcode(value DeviceBgpMessageHeaderErrorSubcodeEnum) DeviceBgpMessageHeaderError { + intValue, ok := otg.DeviceBgpMessageHeaderError_Subcode_Enum_value[string(value)] if !ok { obj.validationErrors = append(obj.validationErrors, fmt.Sprintf( - "%s is not a valid choice on ActionResponseProtocolIpv6ChoiceEnum", string(value))) + "%s is not a valid choice on DeviceBgpMessageHeaderErrorSubcodeEnum", string(value))) return obj } - enumValue := otg.ActionResponseProtocolIpv6_Choice_Enum(intValue) - obj.obj.Choice = &enumValue - obj.obj.Ping = nil - obj.pingHolder = nil - - if value == ActionResponseProtocolIpv6Choice.PING { - obj.obj.Ping = NewActionResponseProtocolIpv6Ping().Msg() - } - - return obj -} - -// description is TBD -// Ping returns a ActionResponseProtocolIpv6Ping -func (obj *actionResponseProtocolIpv6) Ping() ActionResponseProtocolIpv6Ping { - if obj.obj.Ping == nil { - obj.SetChoice(ActionResponseProtocolIpv6Choice.PING) - } - if obj.pingHolder == nil { - obj.pingHolder = &actionResponseProtocolIpv6Ping{obj: obj.obj.Ping} - } - return obj.pingHolder -} - -// description is TBD -// Ping returns a ActionResponseProtocolIpv6Ping -func (obj *actionResponseProtocolIpv6) HasPing() bool { - return obj.obj.Ping != nil -} - -// description is TBD -// SetPing sets the ActionResponseProtocolIpv6Ping value in the ActionResponseProtocolIpv6 object -func (obj *actionResponseProtocolIpv6) SetPing(value ActionResponseProtocolIpv6Ping) ActionResponseProtocolIpv6 { - obj.SetChoice(ActionResponseProtocolIpv6Choice.PING) - obj.pingHolder = nil - obj.obj.Ping = value.Msg() + enumValue := otg.DeviceBgpMessageHeaderError_Subcode_Enum(intValue) + obj.obj.Subcode = &enumValue return obj } -func (obj *actionResponseProtocolIpv6) validateObj(vObj *validation, set_default bool) { +func (obj *deviceBgpMessageHeaderError) validateObj(vObj *validation, set_default bool) { if set_default { obj.setDefault() } - // Choice is required - if obj.obj.Choice == nil { - vObj.validationErrors = append(vObj.validationErrors, "Choice is required field on interface ActionResponseProtocolIpv6") - } +} - if obj.obj.Ping != nil { +func (obj *deviceBgpMessageHeaderError) setDefault() { + if obj.obj.Subcode == nil { + obj.SetSubcode(DeviceBgpMessageHeaderErrorSubcode.CONNECTION_NOT_SYNCHRONIZED_CODE1_SUBCODE1) - obj.Ping().validateObj(vObj, set_default) } } -func (obj *actionResponseProtocolIpv6) setDefault() { - -} - -// ***** FlowMetricTag ***** -type flowMetricTag struct { +// ***** DeviceBgpOpenMessageError ***** +type deviceBgpOpenMessageError struct { validation - obj *otg.FlowMetricTag - valueHolder FlowMetricTagValue + obj *otg.DeviceBgpOpenMessageError } -func NewFlowMetricTag() FlowMetricTag { - obj := flowMetricTag{obj: &otg.FlowMetricTag{}} +func NewDeviceBgpOpenMessageError() DeviceBgpOpenMessageError { + obj := deviceBgpOpenMessageError{obj: &otg.DeviceBgpOpenMessageError{}} obj.setDefault() return &obj } -func (obj *flowMetricTag) Msg() *otg.FlowMetricTag { +func (obj *deviceBgpOpenMessageError) Msg() *otg.DeviceBgpOpenMessageError { return obj.obj } -func (obj *flowMetricTag) SetMsg(msg *otg.FlowMetricTag) FlowMetricTag { - obj.setNil() +func (obj *deviceBgpOpenMessageError) SetMsg(msg *otg.DeviceBgpOpenMessageError) DeviceBgpOpenMessageError { + proto.Merge(obj.obj, msg) return obj } -func (obj *flowMetricTag) ToProto() (*otg.FlowMetricTag, error) { +func (obj *deviceBgpOpenMessageError) ToProto() (*otg.DeviceBgpOpenMessageError, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -168984,7 +169932,7 @@ func (obj *flowMetricTag) ToProto() (*otg.FlowMetricTag, error) { return obj.Msg(), nil } -func (obj *flowMetricTag) FromProto(msg *otg.FlowMetricTag) (FlowMetricTag, error) { +func (obj *deviceBgpOpenMessageError) FromProto(msg *otg.DeviceBgpOpenMessageError) (DeviceBgpOpenMessageError, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -168993,7 +169941,7 @@ func (obj *flowMetricTag) FromProto(msg *otg.FlowMetricTag) (FlowMetricTag, erro return newObj, nil } -func (obj *flowMetricTag) ToPbText() (string, error) { +func (obj *deviceBgpOpenMessageError) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -169005,12 +169953,12 @@ func (obj *flowMetricTag) ToPbText() (string, error) { return string(protoMarshal), nil } -func (obj *flowMetricTag) FromPbText(value string) error { +func (obj *deviceBgpOpenMessageError) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj } - obj.setNil() + vErr := obj.validateToAndFrom() if vErr != nil { return vErr @@ -169018,7 +169966,7 @@ func (obj *flowMetricTag) FromPbText(value string) error { return retObj } -func (obj *flowMetricTag) ToYaml() (string, error) { +func (obj *deviceBgpOpenMessageError) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -169039,7 +169987,7 @@ func (obj *flowMetricTag) ToYaml() (string, error) { return string(data), nil } -func (obj *flowMetricTag) FromYaml(value string) error { +func (obj *deviceBgpOpenMessageError) FromYaml(value string) error { if value == "" { value = "{}" } @@ -169056,7 +170004,7 @@ func (obj *flowMetricTag) FromYaml(value string) error { return fmt.Errorf("unmarshal error %s", strings.Replace( uError.Error(), "\u00a0", " ", -1)[7:]) } - obj.setNil() + vErr := obj.validateToAndFrom() if vErr != nil { return vErr @@ -169064,7 +170012,7 @@ func (obj *flowMetricTag) FromYaml(value string) error { return nil } -func (obj *flowMetricTag) ToJson() (string, error) { +func (obj *deviceBgpOpenMessageError) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -169082,7 +170030,7 @@ func (obj *flowMetricTag) ToJson() (string, error) { return string(data), nil } -func (obj *flowMetricTag) FromJson(value string) error { +func (obj *deviceBgpOpenMessageError) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -169095,7 +170043,7 @@ func (obj *flowMetricTag) FromJson(value string) error { return fmt.Errorf("unmarshal error %s", strings.Replace( uError.Error(), "\u00a0", " ", -1)[7:]) } - obj.setNil() + err := obj.validateToAndFrom() if err != nil { return err @@ -169103,19 +170051,19 @@ func (obj *flowMetricTag) FromJson(value string) error { return nil } -func (obj *flowMetricTag) validateToAndFrom() error { +func (obj *deviceBgpOpenMessageError) validateToAndFrom() error { // emptyVars() obj.validateObj(&obj.validation, true) return obj.validationResult() } -func (obj *flowMetricTag) Validate() error { +func (obj *deviceBgpOpenMessageError) Validate() error { // emptyVars() obj.validateObj(&obj.validation, false) return obj.validationResult() } -func (obj *flowMetricTag) String() string { +func (obj *deviceBgpOpenMessageError) String() string { str, err := obj.ToYaml() if err != nil { return err.Error() @@ -169123,12 +170071,12 @@ func (obj *flowMetricTag) String() string { return str } -func (obj *flowMetricTag) Clone() (FlowMetricTag, error) { +func (obj *deviceBgpOpenMessageError) Clone() (DeviceBgpOpenMessageError, error) { vErr := obj.Validate() if vErr != nil { return nil, vErr } - newObj := NewFlowMetricTag() + newObj := NewDeviceBgpOpenMessageError() data, err := proto.Marshal(obj.Msg()) if err != nil { return nil, err @@ -169140,153 +170088,130 @@ func (obj *flowMetricTag) Clone() (FlowMetricTag, error) { return newObj, nil } -func (obj *flowMetricTag) setNil() { - obj.valueHolder = nil - obj.validationErrors = nil - obj.warnings = nil - obj.constraints = make(map[string]map[string]Constraints) -} - -// FlowMetricTag is description is TBD -type FlowMetricTag interface { +// DeviceBgpOpenMessageError is all errors detected while processing the OPEN message are indicated by sending the NOTIFICATION message with the Error Code-Open Message Error. The Error Subcode elaborates on the specific nature of the error. +type DeviceBgpOpenMessageError interface { Validation - // Msg marshals FlowMetricTag to protobuf object *otg.FlowMetricTag + // Msg marshals DeviceBgpOpenMessageError to protobuf object *otg.DeviceBgpOpenMessageError // and doesn't set defaults - Msg() *otg.FlowMetricTag - // SetMsg unmarshals FlowMetricTag from protobuf object *otg.FlowMetricTag + Msg() *otg.DeviceBgpOpenMessageError + // SetMsg unmarshals DeviceBgpOpenMessageError from protobuf object *otg.DeviceBgpOpenMessageError // and doesn't set defaults - SetMsg(*otg.FlowMetricTag) FlowMetricTag - // ToProto marshals FlowMetricTag to protobuf object *otg.FlowMetricTag - ToProto() (*otg.FlowMetricTag, error) - // ToPbText marshals FlowMetricTag to protobuf text + SetMsg(*otg.DeviceBgpOpenMessageError) DeviceBgpOpenMessageError + // ToProto marshals DeviceBgpOpenMessageError to protobuf object *otg.DeviceBgpOpenMessageError + ToProto() (*otg.DeviceBgpOpenMessageError, error) + // ToPbText marshals DeviceBgpOpenMessageError to protobuf text ToPbText() (string, error) - // ToYaml marshals FlowMetricTag to YAML text + // ToYaml marshals DeviceBgpOpenMessageError to YAML text ToYaml() (string, error) - // ToJson marshals FlowMetricTag to JSON text + // ToJson marshals DeviceBgpOpenMessageError to JSON text ToJson() (string, error) - // FromProto unmarshals FlowMetricTag from protobuf object *otg.FlowMetricTag - FromProto(msg *otg.FlowMetricTag) (FlowMetricTag, error) - // FromPbText unmarshals FlowMetricTag from protobuf text + // FromProto unmarshals DeviceBgpOpenMessageError from protobuf object *otg.DeviceBgpOpenMessageError + FromProto(msg *otg.DeviceBgpOpenMessageError) (DeviceBgpOpenMessageError, error) + // FromPbText unmarshals DeviceBgpOpenMessageError from protobuf text FromPbText(value string) error - // FromYaml unmarshals FlowMetricTag from YAML text + // FromYaml unmarshals DeviceBgpOpenMessageError from YAML text FromYaml(value string) error - // FromJson unmarshals FlowMetricTag from JSON text + // FromJson unmarshals DeviceBgpOpenMessageError from JSON text FromJson(value string) error - // Validate validates FlowMetricTag + // Validate validates DeviceBgpOpenMessageError Validate() error // A stringer function String() string // Clones the object - Clone() (FlowMetricTag, error) + Clone() (DeviceBgpOpenMessageError, error) validateToAndFrom() error validateObj(vObj *validation, set_default bool) setDefault() - // Name returns string, set in FlowMetricTag. - Name() string - // SetName assigns string provided by user to FlowMetricTag - SetName(value string) FlowMetricTag - // HasName checks if Name has been set in FlowMetricTag - HasName() bool - // Value returns FlowMetricTagValue, set in FlowMetricTag. - // FlowMetricTagValue is a container for metric tag value - Value() FlowMetricTagValue - // SetValue assigns FlowMetricTagValue provided by user to FlowMetricTag. - // FlowMetricTagValue is a container for metric tag value - SetValue(value FlowMetricTagValue) FlowMetricTag - // HasValue checks if Value has been set in FlowMetricTag - HasValue() bool - setNil() + // Subcode returns DeviceBgpOpenMessageErrorSubcodeEnum, set in DeviceBgpOpenMessageError + Subcode() DeviceBgpOpenMessageErrorSubcodeEnum + // SetSubcode assigns DeviceBgpOpenMessageErrorSubcodeEnum provided by user to DeviceBgpOpenMessageError + SetSubcode(value DeviceBgpOpenMessageErrorSubcodeEnum) DeviceBgpOpenMessageError + // HasSubcode checks if Subcode has been set in DeviceBgpOpenMessageError + HasSubcode() bool } -// Name of packet field metric tag -// Name returns a string -func (obj *flowMetricTag) Name() string { - - return *obj.obj.Name +type DeviceBgpOpenMessageErrorSubcodeEnum string +// Enum of Subcode on DeviceBgpOpenMessageError +var DeviceBgpOpenMessageErrorSubcode = struct { + UNSUPPORTED_VERSION_NUMBER_CODE2_SUBCODE1 DeviceBgpOpenMessageErrorSubcodeEnum + ERROR_PEER_AS_CODE2_SUBCODE2 DeviceBgpOpenMessageErrorSubcodeEnum + ERROR_BGP_ID_CODE2_SUBCODE3 DeviceBgpOpenMessageErrorSubcodeEnum + UNSUPPORTED_OPTIONAL_PARAMETER_CODE2_SUBCODE4 DeviceBgpOpenMessageErrorSubcodeEnum + AUTH_FAILED_CODE2_SUBCODE5 DeviceBgpOpenMessageErrorSubcodeEnum + UNSUPPORTED_HOLD_TIME_CODE2_SUBCODE6 DeviceBgpOpenMessageErrorSubcodeEnum + UNSUPPORTED_CAPABILITY_CODE2_SUBCODE7 DeviceBgpOpenMessageErrorSubcodeEnum +}{ + UNSUPPORTED_VERSION_NUMBER_CODE2_SUBCODE1: DeviceBgpOpenMessageErrorSubcodeEnum("unsupported_version_number_code2_subcode1"), + ERROR_PEER_AS_CODE2_SUBCODE2: DeviceBgpOpenMessageErrorSubcodeEnum("error_peer_as_code2_subcode2"), + ERROR_BGP_ID_CODE2_SUBCODE3: DeviceBgpOpenMessageErrorSubcodeEnum("error_bgp_id_code2_subcode3"), + UNSUPPORTED_OPTIONAL_PARAMETER_CODE2_SUBCODE4: DeviceBgpOpenMessageErrorSubcodeEnum("unsupported_optional_parameter_code2_subcode4"), + AUTH_FAILED_CODE2_SUBCODE5: DeviceBgpOpenMessageErrorSubcodeEnum("auth_failed_code2_subcode5"), + UNSUPPORTED_HOLD_TIME_CODE2_SUBCODE6: DeviceBgpOpenMessageErrorSubcodeEnum("unsupported_hold_time_code2_subcode6"), + UNSUPPORTED_CAPABILITY_CODE2_SUBCODE7: DeviceBgpOpenMessageErrorSubcodeEnum("unsupported_capability_code2_subcode7"), } -// Name of packet field metric tag -// Name returns a string -func (obj *flowMetricTag) HasName() bool { - return obj.obj.Name != nil +func (obj *deviceBgpOpenMessageError) Subcode() DeviceBgpOpenMessageErrorSubcodeEnum { + return DeviceBgpOpenMessageErrorSubcodeEnum(obj.obj.Subcode.Enum().String()) } -// Name of packet field metric tag -// SetName sets the string value in the FlowMetricTag object -func (obj *flowMetricTag) SetName(value string) FlowMetricTag { - - obj.obj.Name = &value - return obj +// The Error Subcode indicates the specific type of error encountered during OPEN message processing. +// Subcode returns a string +func (obj *deviceBgpOpenMessageError) HasSubcode() bool { + return obj.obj.Subcode != nil } -// description is TBD -// Value returns a FlowMetricTagValue -func (obj *flowMetricTag) Value() FlowMetricTagValue { - if obj.obj.Value == nil { - obj.obj.Value = NewFlowMetricTagValue().Msg() - } - if obj.valueHolder == nil { - obj.valueHolder = &flowMetricTagValue{obj: obj.obj.Value} +func (obj *deviceBgpOpenMessageError) SetSubcode(value DeviceBgpOpenMessageErrorSubcodeEnum) DeviceBgpOpenMessageError { + intValue, ok := otg.DeviceBgpOpenMessageError_Subcode_Enum_value[string(value)] + if !ok { + obj.validationErrors = append(obj.validationErrors, fmt.Sprintf( + "%s is not a valid choice on DeviceBgpOpenMessageErrorSubcodeEnum", string(value))) + return obj } - return obj.valueHolder -} - -// description is TBD -// Value returns a FlowMetricTagValue -func (obj *flowMetricTag) HasValue() bool { - return obj.obj.Value != nil -} - -// description is TBD -// SetValue sets the FlowMetricTagValue value in the FlowMetricTag object -func (obj *flowMetricTag) SetValue(value FlowMetricTagValue) FlowMetricTag { - - obj.valueHolder = nil - obj.obj.Value = value.Msg() + enumValue := otg.DeviceBgpOpenMessageError_Subcode_Enum(intValue) + obj.obj.Subcode = &enumValue return obj } -func (obj *flowMetricTag) validateObj(vObj *validation, set_default bool) { +func (obj *deviceBgpOpenMessageError) validateObj(vObj *validation, set_default bool) { if set_default { obj.setDefault() } - if obj.obj.Value != nil { - - obj.Value().validateObj(vObj, set_default) - } - } -func (obj *flowMetricTag) setDefault() { +func (obj *deviceBgpOpenMessageError) setDefault() { + if obj.obj.Subcode == nil { + obj.SetSubcode(DeviceBgpOpenMessageErrorSubcode.UNSUPPORTED_VERSION_NUMBER_CODE2_SUBCODE1) + + } } -// ***** ResultBgpCommunity ***** -type resultBgpCommunity struct { +// ***** DeviceBgpUpdateMessageError ***** +type deviceBgpUpdateMessageError struct { validation - obj *otg.ResultBgpCommunity + obj *otg.DeviceBgpUpdateMessageError } -func NewResultBgpCommunity() ResultBgpCommunity { - obj := resultBgpCommunity{obj: &otg.ResultBgpCommunity{}} +func NewDeviceBgpUpdateMessageError() DeviceBgpUpdateMessageError { + obj := deviceBgpUpdateMessageError{obj: &otg.DeviceBgpUpdateMessageError{}} obj.setDefault() return &obj } -func (obj *resultBgpCommunity) Msg() *otg.ResultBgpCommunity { +func (obj *deviceBgpUpdateMessageError) Msg() *otg.DeviceBgpUpdateMessageError { return obj.obj } -func (obj *resultBgpCommunity) SetMsg(msg *otg.ResultBgpCommunity) ResultBgpCommunity { +func (obj *deviceBgpUpdateMessageError) SetMsg(msg *otg.DeviceBgpUpdateMessageError) DeviceBgpUpdateMessageError { proto.Merge(obj.obj, msg) return obj } -func (obj *resultBgpCommunity) ToProto() (*otg.ResultBgpCommunity, error) { +func (obj *deviceBgpUpdateMessageError) ToProto() (*otg.DeviceBgpUpdateMessageError, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -169294,7 +170219,7 @@ func (obj *resultBgpCommunity) ToProto() (*otg.ResultBgpCommunity, error) { return obj.Msg(), nil } -func (obj *resultBgpCommunity) FromProto(msg *otg.ResultBgpCommunity) (ResultBgpCommunity, error) { +func (obj *deviceBgpUpdateMessageError) FromProto(msg *otg.DeviceBgpUpdateMessageError) (DeviceBgpUpdateMessageError, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -169303,7 +170228,7 @@ func (obj *resultBgpCommunity) FromProto(msg *otg.ResultBgpCommunity) (ResultBgp return newObj, nil } -func (obj *resultBgpCommunity) ToPbText() (string, error) { +func (obj *deviceBgpUpdateMessageError) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -169315,7 +170240,7 @@ func (obj *resultBgpCommunity) ToPbText() (string, error) { return string(protoMarshal), nil } -func (obj *resultBgpCommunity) FromPbText(value string) error { +func (obj *deviceBgpUpdateMessageError) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj @@ -169328,7 +170253,7 @@ func (obj *resultBgpCommunity) FromPbText(value string) error { return retObj } -func (obj *resultBgpCommunity) ToYaml() (string, error) { +func (obj *deviceBgpUpdateMessageError) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -169349,7 +170274,7 @@ func (obj *resultBgpCommunity) ToYaml() (string, error) { return string(data), nil } -func (obj *resultBgpCommunity) FromYaml(value string) error { +func (obj *deviceBgpUpdateMessageError) FromYaml(value string) error { if value == "" { value = "{}" } @@ -169374,7 +170299,7 @@ func (obj *resultBgpCommunity) FromYaml(value string) error { return nil } -func (obj *resultBgpCommunity) ToJson() (string, error) { +func (obj *deviceBgpUpdateMessageError) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -169392,7 +170317,7 @@ func (obj *resultBgpCommunity) ToJson() (string, error) { return string(data), nil } -func (obj *resultBgpCommunity) FromJson(value string) error { +func (obj *deviceBgpUpdateMessageError) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -169413,19 +170338,19 @@ func (obj *resultBgpCommunity) FromJson(value string) error { return nil } -func (obj *resultBgpCommunity) validateToAndFrom() error { +func (obj *deviceBgpUpdateMessageError) validateToAndFrom() error { // emptyVars() obj.validateObj(&obj.validation, true) return obj.validationResult() } -func (obj *resultBgpCommunity) Validate() error { +func (obj *deviceBgpUpdateMessageError) Validate() error { // emptyVars() obj.validateObj(&obj.validation, false) return obj.validationResult() } -func (obj *resultBgpCommunity) String() string { +func (obj *deviceBgpUpdateMessageError) String() string { str, err := obj.ToYaml() if err != nil { return err.Error() @@ -169433,12 +170358,12 @@ func (obj *resultBgpCommunity) String() string { return str } -func (obj *resultBgpCommunity) Clone() (ResultBgpCommunity, error) { +func (obj *deviceBgpUpdateMessageError) Clone() (DeviceBgpUpdateMessageError, error) { vErr := obj.Validate() if vErr != nil { return nil, vErr } - newObj := NewResultBgpCommunity() + newObj := NewDeviceBgpUpdateMessageError() data, err := proto.Marshal(obj.Msg()) if err != nil { return nil, err @@ -169450,201 +170375,138 @@ func (obj *resultBgpCommunity) Clone() (ResultBgpCommunity, error) { return newObj, nil } -// ResultBgpCommunity is bGP communities provide additional capability for tagging routes and for modifying BGP routing policy on upstream and downstream routers. BGP community is a 32-bit number which is broken into 16-bit AS number and a 16-bit custom value. -type ResultBgpCommunity interface { +// DeviceBgpUpdateMessageError is all errors detected while processing the UPDATE message are indicated by sending the NOTIFICATION message with the Error Code-Update Message Error. The Error Subcode elaborates on the specific nature of the error. +type DeviceBgpUpdateMessageError interface { Validation - // Msg marshals ResultBgpCommunity to protobuf object *otg.ResultBgpCommunity + // Msg marshals DeviceBgpUpdateMessageError to protobuf object *otg.DeviceBgpUpdateMessageError // and doesn't set defaults - Msg() *otg.ResultBgpCommunity - // SetMsg unmarshals ResultBgpCommunity from protobuf object *otg.ResultBgpCommunity + Msg() *otg.DeviceBgpUpdateMessageError + // SetMsg unmarshals DeviceBgpUpdateMessageError from protobuf object *otg.DeviceBgpUpdateMessageError // and doesn't set defaults - SetMsg(*otg.ResultBgpCommunity) ResultBgpCommunity - // ToProto marshals ResultBgpCommunity to protobuf object *otg.ResultBgpCommunity - ToProto() (*otg.ResultBgpCommunity, error) - // ToPbText marshals ResultBgpCommunity to protobuf text + SetMsg(*otg.DeviceBgpUpdateMessageError) DeviceBgpUpdateMessageError + // ToProto marshals DeviceBgpUpdateMessageError to protobuf object *otg.DeviceBgpUpdateMessageError + ToProto() (*otg.DeviceBgpUpdateMessageError, error) + // ToPbText marshals DeviceBgpUpdateMessageError to protobuf text ToPbText() (string, error) - // ToYaml marshals ResultBgpCommunity to YAML text + // ToYaml marshals DeviceBgpUpdateMessageError to YAML text ToYaml() (string, error) - // ToJson marshals ResultBgpCommunity to JSON text + // ToJson marshals DeviceBgpUpdateMessageError to JSON text ToJson() (string, error) - // FromProto unmarshals ResultBgpCommunity from protobuf object *otg.ResultBgpCommunity - FromProto(msg *otg.ResultBgpCommunity) (ResultBgpCommunity, error) - // FromPbText unmarshals ResultBgpCommunity from protobuf text + // FromProto unmarshals DeviceBgpUpdateMessageError from protobuf object *otg.DeviceBgpUpdateMessageError + FromProto(msg *otg.DeviceBgpUpdateMessageError) (DeviceBgpUpdateMessageError, error) + // FromPbText unmarshals DeviceBgpUpdateMessageError from protobuf text FromPbText(value string) error - // FromYaml unmarshals ResultBgpCommunity from YAML text + // FromYaml unmarshals DeviceBgpUpdateMessageError from YAML text FromYaml(value string) error - // FromJson unmarshals ResultBgpCommunity from JSON text + // FromJson unmarshals DeviceBgpUpdateMessageError from JSON text FromJson(value string) error - // Validate validates ResultBgpCommunity + // Validate validates DeviceBgpUpdateMessageError Validate() error // A stringer function String() string // Clones the object - Clone() (ResultBgpCommunity, error) + Clone() (DeviceBgpUpdateMessageError, error) validateToAndFrom() error validateObj(vObj *validation, set_default bool) setDefault() - // Type returns ResultBgpCommunityTypeEnum, set in ResultBgpCommunity - Type() ResultBgpCommunityTypeEnum - // SetType assigns ResultBgpCommunityTypeEnum provided by user to ResultBgpCommunity - SetType(value ResultBgpCommunityTypeEnum) ResultBgpCommunity - // HasType checks if Type has been set in ResultBgpCommunity - HasType() bool - // AsNumber returns uint32, set in ResultBgpCommunity. - AsNumber() uint32 - // SetAsNumber assigns uint32 provided by user to ResultBgpCommunity - SetAsNumber(value uint32) ResultBgpCommunity - // HasAsNumber checks if AsNumber has been set in ResultBgpCommunity - HasAsNumber() bool - // AsCustom returns uint32, set in ResultBgpCommunity. - AsCustom() uint32 - // SetAsCustom assigns uint32 provided by user to ResultBgpCommunity - SetAsCustom(value uint32) ResultBgpCommunity - // HasAsCustom checks if AsCustom has been set in ResultBgpCommunity - HasAsCustom() bool -} - -type ResultBgpCommunityTypeEnum string - -// Enum of Type on ResultBgpCommunity -var ResultBgpCommunityType = struct { - MANUAL_AS_NUMBER ResultBgpCommunityTypeEnum - NO_EXPORT ResultBgpCommunityTypeEnum - NO_ADVERTISED ResultBgpCommunityTypeEnum - NO_EXPORT_SUBCONFED ResultBgpCommunityTypeEnum - LLGR_STALE ResultBgpCommunityTypeEnum - NO_LLGR ResultBgpCommunityTypeEnum + // Subcode returns DeviceBgpUpdateMessageErrorSubcodeEnum, set in DeviceBgpUpdateMessageError + Subcode() DeviceBgpUpdateMessageErrorSubcodeEnum + // SetSubcode assigns DeviceBgpUpdateMessageErrorSubcodeEnum provided by user to DeviceBgpUpdateMessageError + SetSubcode(value DeviceBgpUpdateMessageErrorSubcodeEnum) DeviceBgpUpdateMessageError + // HasSubcode checks if Subcode has been set in DeviceBgpUpdateMessageError + HasSubcode() bool +} + +type DeviceBgpUpdateMessageErrorSubcodeEnum string + +// Enum of Subcode on DeviceBgpUpdateMessageError +var DeviceBgpUpdateMessageErrorSubcode = struct { + MALFORMED_ATTRIB_LIST_CODE3_SUBCODE1 DeviceBgpUpdateMessageErrorSubcodeEnum + UNRECOGNIZED_WELLKNOWN_ATTRIB_CODE3_SUBCODE2 DeviceBgpUpdateMessageErrorSubcodeEnum + WELLKNOWN_ATTRIB_MISSING_CODE3_SUBCODE3 DeviceBgpUpdateMessageErrorSubcodeEnum + ATTRIB_FLAGS_ERROR_CODE3_SUBCODE4 DeviceBgpUpdateMessageErrorSubcodeEnum + ATTRIB_LENGTH_ERROR_CODE3_SUBCODE5 DeviceBgpUpdateMessageErrorSubcodeEnum + INVALID_ORIGIN_ATTRIB_CODE3_SUBCODE6 DeviceBgpUpdateMessageErrorSubcodeEnum + AS_ROUTING_LOOP_CODE3_SUBCODE7 DeviceBgpUpdateMessageErrorSubcodeEnum + INVALID_NHOP_ATTRIB_CODE3_SUBCODE8 DeviceBgpUpdateMessageErrorSubcodeEnum + ERROR_OPTIONAL_ATTRIB_CODE3_SUBCODE9 DeviceBgpUpdateMessageErrorSubcodeEnum + INVALID_NETWORK_FIELD_CODE3_SUBCODE10 DeviceBgpUpdateMessageErrorSubcodeEnum + ABNORMAL_ASPATH_CODE3_SUBCODE11 DeviceBgpUpdateMessageErrorSubcodeEnum }{ - MANUAL_AS_NUMBER: ResultBgpCommunityTypeEnum("manual_as_number"), - NO_EXPORT: ResultBgpCommunityTypeEnum("no_export"), - NO_ADVERTISED: ResultBgpCommunityTypeEnum("no_advertised"), - NO_EXPORT_SUBCONFED: ResultBgpCommunityTypeEnum("no_export_subconfed"), - LLGR_STALE: ResultBgpCommunityTypeEnum("llgr_stale"), - NO_LLGR: ResultBgpCommunityTypeEnum("no_llgr"), + MALFORMED_ATTRIB_LIST_CODE3_SUBCODE1: DeviceBgpUpdateMessageErrorSubcodeEnum("malformed_attrib_list_code3_subcode1"), + UNRECOGNIZED_WELLKNOWN_ATTRIB_CODE3_SUBCODE2: DeviceBgpUpdateMessageErrorSubcodeEnum("unrecognized_wellknown_attrib_code3_subcode2"), + WELLKNOWN_ATTRIB_MISSING_CODE3_SUBCODE3: DeviceBgpUpdateMessageErrorSubcodeEnum("wellknown_attrib_missing_code3_subcode3"), + ATTRIB_FLAGS_ERROR_CODE3_SUBCODE4: DeviceBgpUpdateMessageErrorSubcodeEnum("attrib_flags_error_code3_subcode4"), + ATTRIB_LENGTH_ERROR_CODE3_SUBCODE5: DeviceBgpUpdateMessageErrorSubcodeEnum("attrib_length_error_code3_subcode5"), + INVALID_ORIGIN_ATTRIB_CODE3_SUBCODE6: DeviceBgpUpdateMessageErrorSubcodeEnum("invalid_origin_attrib_code3_subcode6"), + AS_ROUTING_LOOP_CODE3_SUBCODE7: DeviceBgpUpdateMessageErrorSubcodeEnum("as_routing_loop_code3_subcode7"), + INVALID_NHOP_ATTRIB_CODE3_SUBCODE8: DeviceBgpUpdateMessageErrorSubcodeEnum("invalid_nhop_attrib_code3_subcode8"), + ERROR_OPTIONAL_ATTRIB_CODE3_SUBCODE9: DeviceBgpUpdateMessageErrorSubcodeEnum("error_optional_attrib_code3_subcode9"), + INVALID_NETWORK_FIELD_CODE3_SUBCODE10: DeviceBgpUpdateMessageErrorSubcodeEnum("invalid_network_field_code3_subcode10"), + ABNORMAL_ASPATH_CODE3_SUBCODE11: DeviceBgpUpdateMessageErrorSubcodeEnum("abnormal_aspath_code3_subcode11"), } -func (obj *resultBgpCommunity) Type() ResultBgpCommunityTypeEnum { - return ResultBgpCommunityTypeEnum(obj.obj.Type.Enum().String()) +func (obj *deviceBgpUpdateMessageError) Subcode() DeviceBgpUpdateMessageErrorSubcodeEnum { + return DeviceBgpUpdateMessageErrorSubcodeEnum(obj.obj.Subcode.Enum().String()) } -// The type of community AS number. If community type is manual_as_number then as_number and as_custom will be available. -// Type returns a string -func (obj *resultBgpCommunity) HasType() bool { - return obj.obj.Type != nil +// The Error Subcode, the specific type of error encountered during UPDATE processing. +// Subcode returns a string +func (obj *deviceBgpUpdateMessageError) HasSubcode() bool { + return obj.obj.Subcode != nil } -func (obj *resultBgpCommunity) SetType(value ResultBgpCommunityTypeEnum) ResultBgpCommunity { - intValue, ok := otg.ResultBgpCommunity_Type_Enum_value[string(value)] +func (obj *deviceBgpUpdateMessageError) SetSubcode(value DeviceBgpUpdateMessageErrorSubcodeEnum) DeviceBgpUpdateMessageError { + intValue, ok := otg.DeviceBgpUpdateMessageError_Subcode_Enum_value[string(value)] if !ok { obj.validationErrors = append(obj.validationErrors, fmt.Sprintf( - "%s is not a valid choice on ResultBgpCommunityTypeEnum", string(value))) + "%s is not a valid choice on DeviceBgpUpdateMessageErrorSubcodeEnum", string(value))) return obj } - enumValue := otg.ResultBgpCommunity_Type_Enum(intValue) - obj.obj.Type = &enumValue - - return obj -} - -// First two octets of 32 bit community AS number. -// AsNumber returns a uint32 -func (obj *resultBgpCommunity) AsNumber() uint32 { - - return *obj.obj.AsNumber - -} - -// First two octets of 32 bit community AS number. -// AsNumber returns a uint32 -func (obj *resultBgpCommunity) HasAsNumber() bool { - return obj.obj.AsNumber != nil -} - -// First two octets of 32 bit community AS number. -// SetAsNumber sets the uint32 value in the ResultBgpCommunity object -func (obj *resultBgpCommunity) SetAsNumber(value uint32) ResultBgpCommunity { - - obj.obj.AsNumber = &value - return obj -} - -// Last two octets of the community value. -// AsCustom returns a uint32 -func (obj *resultBgpCommunity) AsCustom() uint32 { - - return *obj.obj.AsCustom - -} - -// Last two octets of the community value. -// AsCustom returns a uint32 -func (obj *resultBgpCommunity) HasAsCustom() bool { - return obj.obj.AsCustom != nil -} - -// Last two octets of the community value. -// SetAsCustom sets the uint32 value in the ResultBgpCommunity object -func (obj *resultBgpCommunity) SetAsCustom(value uint32) ResultBgpCommunity { + enumValue := otg.DeviceBgpUpdateMessageError_Subcode_Enum(intValue) + obj.obj.Subcode = &enumValue - obj.obj.AsCustom = &value return obj } -func (obj *resultBgpCommunity) validateObj(vObj *validation, set_default bool) { +func (obj *deviceBgpUpdateMessageError) validateObj(vObj *validation, set_default bool) { if set_default { obj.setDefault() } - if obj.obj.AsNumber != nil { - - if *obj.obj.AsNumber > 65535 { - vObj.validationErrors = append( - vObj.validationErrors, - fmt.Sprintf("0 <= ResultBgpCommunity.AsNumber <= 65535 but Got %d", *obj.obj.AsNumber)) - } - - } - - if obj.obj.AsCustom != nil { +} - if *obj.obj.AsCustom > 65535 { - vObj.validationErrors = append( - vObj.validationErrors, - fmt.Sprintf("0 <= ResultBgpCommunity.AsCustom <= 65535 but Got %d", *obj.obj.AsCustom)) - } +func (obj *deviceBgpUpdateMessageError) setDefault() { + if obj.obj.Subcode == nil { + obj.SetSubcode(DeviceBgpUpdateMessageErrorSubcode.MALFORMED_ATTRIB_LIST_CODE3_SUBCODE1) } } -func (obj *resultBgpCommunity) setDefault() { - -} - -// ***** ResultBgpAsPath ***** -type resultBgpAsPath struct { +// ***** DeviceBgpHoldTimerExpired ***** +type deviceBgpHoldTimerExpired struct { validation - obj *otg.ResultBgpAsPath - segmentsHolder ResultBgpAsPathResultBgpAsPathSegmentIter + obj *otg.DeviceBgpHoldTimerExpired } -func NewResultBgpAsPath() ResultBgpAsPath { - obj := resultBgpAsPath{obj: &otg.ResultBgpAsPath{}} +func NewDeviceBgpHoldTimerExpired() DeviceBgpHoldTimerExpired { + obj := deviceBgpHoldTimerExpired{obj: &otg.DeviceBgpHoldTimerExpired{}} obj.setDefault() return &obj } -func (obj *resultBgpAsPath) Msg() *otg.ResultBgpAsPath { +func (obj *deviceBgpHoldTimerExpired) Msg() *otg.DeviceBgpHoldTimerExpired { return obj.obj } -func (obj *resultBgpAsPath) SetMsg(msg *otg.ResultBgpAsPath) ResultBgpAsPath { - obj.setNil() +func (obj *deviceBgpHoldTimerExpired) SetMsg(msg *otg.DeviceBgpHoldTimerExpired) DeviceBgpHoldTimerExpired { + proto.Merge(obj.obj, msg) return obj } -func (obj *resultBgpAsPath) ToProto() (*otg.ResultBgpAsPath, error) { +func (obj *deviceBgpHoldTimerExpired) ToProto() (*otg.DeviceBgpHoldTimerExpired, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -169652,7 +170514,7 @@ func (obj *resultBgpAsPath) ToProto() (*otg.ResultBgpAsPath, error) { return obj.Msg(), nil } -func (obj *resultBgpAsPath) FromProto(msg *otg.ResultBgpAsPath) (ResultBgpAsPath, error) { +func (obj *deviceBgpHoldTimerExpired) FromProto(msg *otg.DeviceBgpHoldTimerExpired) (DeviceBgpHoldTimerExpired, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -169661,7 +170523,7 @@ func (obj *resultBgpAsPath) FromProto(msg *otg.ResultBgpAsPath) (ResultBgpAsPath return newObj, nil } -func (obj *resultBgpAsPath) ToPbText() (string, error) { +func (obj *deviceBgpHoldTimerExpired) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -169673,12 +170535,12 @@ func (obj *resultBgpAsPath) ToPbText() (string, error) { return string(protoMarshal), nil } -func (obj *resultBgpAsPath) FromPbText(value string) error { +func (obj *deviceBgpHoldTimerExpired) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj } - obj.setNil() + vErr := obj.validateToAndFrom() if vErr != nil { return vErr @@ -169686,7 +170548,7 @@ func (obj *resultBgpAsPath) FromPbText(value string) error { return retObj } -func (obj *resultBgpAsPath) ToYaml() (string, error) { +func (obj *deviceBgpHoldTimerExpired) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -169707,7 +170569,7 @@ func (obj *resultBgpAsPath) ToYaml() (string, error) { return string(data), nil } -func (obj *resultBgpAsPath) FromYaml(value string) error { +func (obj *deviceBgpHoldTimerExpired) FromYaml(value string) error { if value == "" { value = "{}" } @@ -169724,7 +170586,7 @@ func (obj *resultBgpAsPath) FromYaml(value string) error { return fmt.Errorf("unmarshal error %s", strings.Replace( uError.Error(), "\u00a0", " ", -1)[7:]) } - obj.setNil() + vErr := obj.validateToAndFrom() if vErr != nil { return vErr @@ -169732,7 +170594,7 @@ func (obj *resultBgpAsPath) FromYaml(value string) error { return nil } -func (obj *resultBgpAsPath) ToJson() (string, error) { +func (obj *deviceBgpHoldTimerExpired) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -169750,7 +170612,7 @@ func (obj *resultBgpAsPath) ToJson() (string, error) { return string(data), nil } -func (obj *resultBgpAsPath) FromJson(value string) error { +func (obj *deviceBgpHoldTimerExpired) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -169763,7 +170625,7 @@ func (obj *resultBgpAsPath) FromJson(value string) error { return fmt.Errorf("unmarshal error %s", strings.Replace( uError.Error(), "\u00a0", " ", -1)[7:]) } - obj.setNil() + err := obj.validateToAndFrom() if err != nil { return err @@ -169771,19 +170633,19 @@ func (obj *resultBgpAsPath) FromJson(value string) error { return nil } -func (obj *resultBgpAsPath) validateToAndFrom() error { +func (obj *deviceBgpHoldTimerExpired) validateToAndFrom() error { // emptyVars() obj.validateObj(&obj.validation, true) return obj.validationResult() } -func (obj *resultBgpAsPath) Validate() error { +func (obj *deviceBgpHoldTimerExpired) Validate() error { // emptyVars() obj.validateObj(&obj.validation, false) return obj.validationResult() } -func (obj *resultBgpAsPath) String() string { +func (obj *deviceBgpHoldTimerExpired) String() string { str, err := obj.ToYaml() if err != nil { return err.Error() @@ -169791,12 +170653,12 @@ func (obj *resultBgpAsPath) String() string { return str } -func (obj *resultBgpAsPath) Clone() (ResultBgpAsPath, error) { +func (obj *deviceBgpHoldTimerExpired) Clone() (DeviceBgpHoldTimerExpired, error) { vErr := obj.Validate() if vErr != nil { return nil, vErr } - newObj := NewResultBgpAsPath() + newObj := NewDeviceBgpHoldTimerExpired() data, err := proto.Marshal(obj.Msg()) if err != nil { return nil, err @@ -169808,187 +170670,76 @@ func (obj *resultBgpAsPath) Clone() (ResultBgpAsPath, error) { return newObj, nil } -func (obj *resultBgpAsPath) setNil() { - obj.segmentsHolder = nil - obj.validationErrors = nil - obj.warnings = nil - obj.constraints = make(map[string]map[string]Constraints) -} - -// ResultBgpAsPath is this attribute identifies the autonomous systems through which routing information carried in this UPDATE message has passed. -type ResultBgpAsPath interface { +// DeviceBgpHoldTimerExpired is if a system does not receive successive KEEPALIVE, UPDATE, and/or NOTIFICATION messages within the period specified in the Hold Time field of the OPEN message, then the NOTIFICATION message with the Hold Timer Expired Error Code(Error Code 4) is sent and the BGP connection is closed. The Sub Code used is 0. If a user wants to use non zero Sub Code then CustomError can be used. +type DeviceBgpHoldTimerExpired interface { Validation - // Msg marshals ResultBgpAsPath to protobuf object *otg.ResultBgpAsPath + // Msg marshals DeviceBgpHoldTimerExpired to protobuf object *otg.DeviceBgpHoldTimerExpired // and doesn't set defaults - Msg() *otg.ResultBgpAsPath - // SetMsg unmarshals ResultBgpAsPath from protobuf object *otg.ResultBgpAsPath + Msg() *otg.DeviceBgpHoldTimerExpired + // SetMsg unmarshals DeviceBgpHoldTimerExpired from protobuf object *otg.DeviceBgpHoldTimerExpired // and doesn't set defaults - SetMsg(*otg.ResultBgpAsPath) ResultBgpAsPath - // ToProto marshals ResultBgpAsPath to protobuf object *otg.ResultBgpAsPath - ToProto() (*otg.ResultBgpAsPath, error) - // ToPbText marshals ResultBgpAsPath to protobuf text + SetMsg(*otg.DeviceBgpHoldTimerExpired) DeviceBgpHoldTimerExpired + // ToProto marshals DeviceBgpHoldTimerExpired to protobuf object *otg.DeviceBgpHoldTimerExpired + ToProto() (*otg.DeviceBgpHoldTimerExpired, error) + // ToPbText marshals DeviceBgpHoldTimerExpired to protobuf text ToPbText() (string, error) - // ToYaml marshals ResultBgpAsPath to YAML text + // ToYaml marshals DeviceBgpHoldTimerExpired to YAML text ToYaml() (string, error) - // ToJson marshals ResultBgpAsPath to JSON text + // ToJson marshals DeviceBgpHoldTimerExpired to JSON text ToJson() (string, error) - // FromProto unmarshals ResultBgpAsPath from protobuf object *otg.ResultBgpAsPath - FromProto(msg *otg.ResultBgpAsPath) (ResultBgpAsPath, error) - // FromPbText unmarshals ResultBgpAsPath from protobuf text + // FromProto unmarshals DeviceBgpHoldTimerExpired from protobuf object *otg.DeviceBgpHoldTimerExpired + FromProto(msg *otg.DeviceBgpHoldTimerExpired) (DeviceBgpHoldTimerExpired, error) + // FromPbText unmarshals DeviceBgpHoldTimerExpired from protobuf text FromPbText(value string) error - // FromYaml unmarshals ResultBgpAsPath from YAML text + // FromYaml unmarshals DeviceBgpHoldTimerExpired from YAML text FromYaml(value string) error - // FromJson unmarshals ResultBgpAsPath from JSON text + // FromJson unmarshals DeviceBgpHoldTimerExpired from JSON text FromJson(value string) error - // Validate validates ResultBgpAsPath + // Validate validates DeviceBgpHoldTimerExpired Validate() error // A stringer function String() string // Clones the object - Clone() (ResultBgpAsPath, error) + Clone() (DeviceBgpHoldTimerExpired, error) validateToAndFrom() error validateObj(vObj *validation, set_default bool) setDefault() - // Segments returns ResultBgpAsPathResultBgpAsPathSegmentIterIter, set in ResultBgpAsPath - Segments() ResultBgpAsPathResultBgpAsPathSegmentIter - setNil() -} - -// AS Path segments present in the received AS Path attribute. -// Segments returns a []ResultBgpAsPathSegment -func (obj *resultBgpAsPath) Segments() ResultBgpAsPathResultBgpAsPathSegmentIter { - if len(obj.obj.Segments) == 0 { - obj.obj.Segments = []*otg.ResultBgpAsPathSegment{} - } - if obj.segmentsHolder == nil { - obj.segmentsHolder = newResultBgpAsPathResultBgpAsPathSegmentIter(&obj.obj.Segments).setMsg(obj) - } - return obj.segmentsHolder -} - -type resultBgpAsPathResultBgpAsPathSegmentIter struct { - obj *resultBgpAsPath - resultBgpAsPathSegmentSlice []ResultBgpAsPathSegment - fieldPtr *[]*otg.ResultBgpAsPathSegment -} - -func newResultBgpAsPathResultBgpAsPathSegmentIter(ptr *[]*otg.ResultBgpAsPathSegment) ResultBgpAsPathResultBgpAsPathSegmentIter { - return &resultBgpAsPathResultBgpAsPathSegmentIter{fieldPtr: ptr} -} - -type ResultBgpAsPathResultBgpAsPathSegmentIter interface { - setMsg(*resultBgpAsPath) ResultBgpAsPathResultBgpAsPathSegmentIter - Items() []ResultBgpAsPathSegment - Add() ResultBgpAsPathSegment - Append(items ...ResultBgpAsPathSegment) ResultBgpAsPathResultBgpAsPathSegmentIter - Set(index int, newObj ResultBgpAsPathSegment) ResultBgpAsPathResultBgpAsPathSegmentIter - Clear() ResultBgpAsPathResultBgpAsPathSegmentIter - clearHolderSlice() ResultBgpAsPathResultBgpAsPathSegmentIter - appendHolderSlice(item ResultBgpAsPathSegment) ResultBgpAsPathResultBgpAsPathSegmentIter -} - -func (obj *resultBgpAsPathResultBgpAsPathSegmentIter) setMsg(msg *resultBgpAsPath) ResultBgpAsPathResultBgpAsPathSegmentIter { - obj.clearHolderSlice() - for _, val := range *obj.fieldPtr { - obj.appendHolderSlice(&resultBgpAsPathSegment{obj: val}) - } - obj.obj = msg - return obj -} - -func (obj *resultBgpAsPathResultBgpAsPathSegmentIter) Items() []ResultBgpAsPathSegment { - return obj.resultBgpAsPathSegmentSlice -} - -func (obj *resultBgpAsPathResultBgpAsPathSegmentIter) Add() ResultBgpAsPathSegment { - newObj := &otg.ResultBgpAsPathSegment{} - *obj.fieldPtr = append(*obj.fieldPtr, newObj) - newLibObj := &resultBgpAsPathSegment{obj: newObj} - newLibObj.setDefault() - obj.resultBgpAsPathSegmentSlice = append(obj.resultBgpAsPathSegmentSlice, newLibObj) - return newLibObj -} - -func (obj *resultBgpAsPathResultBgpAsPathSegmentIter) Append(items ...ResultBgpAsPathSegment) ResultBgpAsPathResultBgpAsPathSegmentIter { - for _, item := range items { - newObj := item.Msg() - *obj.fieldPtr = append(*obj.fieldPtr, newObj) - obj.resultBgpAsPathSegmentSlice = append(obj.resultBgpAsPathSegmentSlice, item) - } - return obj -} - -func (obj *resultBgpAsPathResultBgpAsPathSegmentIter) Set(index int, newObj ResultBgpAsPathSegment) ResultBgpAsPathResultBgpAsPathSegmentIter { - (*obj.fieldPtr)[index] = newObj.Msg() - obj.resultBgpAsPathSegmentSlice[index] = newObj - return obj -} -func (obj *resultBgpAsPathResultBgpAsPathSegmentIter) Clear() ResultBgpAsPathResultBgpAsPathSegmentIter { - if len(*obj.fieldPtr) > 0 { - *obj.fieldPtr = []*otg.ResultBgpAsPathSegment{} - obj.resultBgpAsPathSegmentSlice = []ResultBgpAsPathSegment{} - } - return obj -} -func (obj *resultBgpAsPathResultBgpAsPathSegmentIter) clearHolderSlice() ResultBgpAsPathResultBgpAsPathSegmentIter { - if len(obj.resultBgpAsPathSegmentSlice) > 0 { - obj.resultBgpAsPathSegmentSlice = []ResultBgpAsPathSegment{} - } - return obj -} -func (obj *resultBgpAsPathResultBgpAsPathSegmentIter) appendHolderSlice(item ResultBgpAsPathSegment) ResultBgpAsPathResultBgpAsPathSegmentIter { - obj.resultBgpAsPathSegmentSlice = append(obj.resultBgpAsPathSegmentSlice, item) - return obj } -func (obj *resultBgpAsPath) validateObj(vObj *validation, set_default bool) { +func (obj *deviceBgpHoldTimerExpired) validateObj(vObj *validation, set_default bool) { if set_default { obj.setDefault() } - if len(obj.obj.Segments) != 0 { - - if set_default { - obj.Segments().clearHolderSlice() - for _, item := range obj.obj.Segments { - obj.Segments().appendHolderSlice(&resultBgpAsPathSegment{obj: item}) - } - } - for _, item := range obj.Segments().Items() { - item.validateObj(vObj, set_default) - } - - } - } -func (obj *resultBgpAsPath) setDefault() { +func (obj *deviceBgpHoldTimerExpired) setDefault() { } -// ***** IsisLspFlags ***** -type isisLspFlags struct { +// ***** DeviceBgpFiniteStateMachineError ***** +type deviceBgpFiniteStateMachineError struct { validation - obj *otg.IsisLspFlags + obj *otg.DeviceBgpFiniteStateMachineError } -func NewIsisLspFlags() IsisLspFlags { - obj := isisLspFlags{obj: &otg.IsisLspFlags{}} +func NewDeviceBgpFiniteStateMachineError() DeviceBgpFiniteStateMachineError { + obj := deviceBgpFiniteStateMachineError{obj: &otg.DeviceBgpFiniteStateMachineError{}} obj.setDefault() return &obj } -func (obj *isisLspFlags) Msg() *otg.IsisLspFlags { +func (obj *deviceBgpFiniteStateMachineError) Msg() *otg.DeviceBgpFiniteStateMachineError { return obj.obj } -func (obj *isisLspFlags) SetMsg(msg *otg.IsisLspFlags) IsisLspFlags { +func (obj *deviceBgpFiniteStateMachineError) SetMsg(msg *otg.DeviceBgpFiniteStateMachineError) DeviceBgpFiniteStateMachineError { proto.Merge(obj.obj, msg) return obj } -func (obj *isisLspFlags) ToProto() (*otg.IsisLspFlags, error) { +func (obj *deviceBgpFiniteStateMachineError) ToProto() (*otg.DeviceBgpFiniteStateMachineError, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -169996,7 +170747,7 @@ func (obj *isisLspFlags) ToProto() (*otg.IsisLspFlags, error) { return obj.Msg(), nil } -func (obj *isisLspFlags) FromProto(msg *otg.IsisLspFlags) (IsisLspFlags, error) { +func (obj *deviceBgpFiniteStateMachineError) FromProto(msg *otg.DeviceBgpFiniteStateMachineError) (DeviceBgpFiniteStateMachineError, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -170005,7 +170756,7 @@ func (obj *isisLspFlags) FromProto(msg *otg.IsisLspFlags) (IsisLspFlags, error) return newObj, nil } -func (obj *isisLspFlags) ToPbText() (string, error) { +func (obj *deviceBgpFiniteStateMachineError) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -170017,7 +170768,7 @@ func (obj *isisLspFlags) ToPbText() (string, error) { return string(protoMarshal), nil } -func (obj *isisLspFlags) FromPbText(value string) error { +func (obj *deviceBgpFiniteStateMachineError) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj @@ -170030,7 +170781,7 @@ func (obj *isisLspFlags) FromPbText(value string) error { return retObj } -func (obj *isisLspFlags) ToYaml() (string, error) { +func (obj *deviceBgpFiniteStateMachineError) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -170051,7 +170802,7 @@ func (obj *isisLspFlags) ToYaml() (string, error) { return string(data), nil } -func (obj *isisLspFlags) FromYaml(value string) error { +func (obj *deviceBgpFiniteStateMachineError) FromYaml(value string) error { if value == "" { value = "{}" } @@ -170076,7 +170827,7 @@ func (obj *isisLspFlags) FromYaml(value string) error { return nil } -func (obj *isisLspFlags) ToJson() (string, error) { +func (obj *deviceBgpFiniteStateMachineError) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -170094,7 +170845,7 @@ func (obj *isisLspFlags) ToJson() (string, error) { return string(data), nil } -func (obj *isisLspFlags) FromJson(value string) error { +func (obj *deviceBgpFiniteStateMachineError) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -170115,19 +170866,19 @@ func (obj *isisLspFlags) FromJson(value string) error { return nil } -func (obj *isisLspFlags) validateToAndFrom() error { +func (obj *deviceBgpFiniteStateMachineError) validateToAndFrom() error { // emptyVars() obj.validateObj(&obj.validation, true) return obj.validationResult() } -func (obj *isisLspFlags) Validate() error { +func (obj *deviceBgpFiniteStateMachineError) Validate() error { // emptyVars() obj.validateObj(&obj.validation, false) return obj.validationResult() } -func (obj *isisLspFlags) String() string { +func (obj *deviceBgpFiniteStateMachineError) String() string { str, err := obj.ToYaml() if err != nil { return err.Error() @@ -170135,12 +170886,12 @@ func (obj *isisLspFlags) String() string { return str } -func (obj *isisLspFlags) Clone() (IsisLspFlags, error) { +func (obj *deviceBgpFiniteStateMachineError) Clone() (DeviceBgpFiniteStateMachineError, error) { vErr := obj.Validate() if vErr != nil { return nil, vErr } - newObj := NewIsisLspFlags() + newObj := NewDeviceBgpFiniteStateMachineError() data, err := proto.Marshal(obj.Msg()) if err != nil { return nil, err @@ -170152,263 +170903,366 @@ func (obj *isisLspFlags) Clone() (IsisLspFlags, error) { return newObj, nil } -// IsisLspFlags is lSP Type flags. -type IsisLspFlags interface { +// DeviceBgpFiniteStateMachineError is any error detected by the BGP Finite State Machine (e.g., receipt of an unexpected event) is indicated by sending the NOTIFICATION message with the Error Code-Finite State Machine Error(Error Code 5). The Sub Code used is 0. If a user wants to use non zero Sub Code then CustomError can be used. +type DeviceBgpFiniteStateMachineError interface { Validation - // Msg marshals IsisLspFlags to protobuf object *otg.IsisLspFlags + // Msg marshals DeviceBgpFiniteStateMachineError to protobuf object *otg.DeviceBgpFiniteStateMachineError // and doesn't set defaults - Msg() *otg.IsisLspFlags - // SetMsg unmarshals IsisLspFlags from protobuf object *otg.IsisLspFlags + Msg() *otg.DeviceBgpFiniteStateMachineError + // SetMsg unmarshals DeviceBgpFiniteStateMachineError from protobuf object *otg.DeviceBgpFiniteStateMachineError // and doesn't set defaults - SetMsg(*otg.IsisLspFlags) IsisLspFlags - // ToProto marshals IsisLspFlags to protobuf object *otg.IsisLspFlags - ToProto() (*otg.IsisLspFlags, error) - // ToPbText marshals IsisLspFlags to protobuf text + SetMsg(*otg.DeviceBgpFiniteStateMachineError) DeviceBgpFiniteStateMachineError + // ToProto marshals DeviceBgpFiniteStateMachineError to protobuf object *otg.DeviceBgpFiniteStateMachineError + ToProto() (*otg.DeviceBgpFiniteStateMachineError, error) + // ToPbText marshals DeviceBgpFiniteStateMachineError to protobuf text ToPbText() (string, error) - // ToYaml marshals IsisLspFlags to YAML text + // ToYaml marshals DeviceBgpFiniteStateMachineError to YAML text ToYaml() (string, error) - // ToJson marshals IsisLspFlags to JSON text + // ToJson marshals DeviceBgpFiniteStateMachineError to JSON text ToJson() (string, error) - // FromProto unmarshals IsisLspFlags from protobuf object *otg.IsisLspFlags - FromProto(msg *otg.IsisLspFlags) (IsisLspFlags, error) - // FromPbText unmarshals IsisLspFlags from protobuf text + // FromProto unmarshals DeviceBgpFiniteStateMachineError from protobuf object *otg.DeviceBgpFiniteStateMachineError + FromProto(msg *otg.DeviceBgpFiniteStateMachineError) (DeviceBgpFiniteStateMachineError, error) + // FromPbText unmarshals DeviceBgpFiniteStateMachineError from protobuf text FromPbText(value string) error - // FromYaml unmarshals IsisLspFlags from YAML text + // FromYaml unmarshals DeviceBgpFiniteStateMachineError from YAML text FromYaml(value string) error - // FromJson unmarshals IsisLspFlags from JSON text + // FromJson unmarshals DeviceBgpFiniteStateMachineError from JSON text FromJson(value string) error - // Validate validates IsisLspFlags + // Validate validates DeviceBgpFiniteStateMachineError Validate() error // A stringer function String() string // Clones the object - Clone() (IsisLspFlags, error) + Clone() (DeviceBgpFiniteStateMachineError, error) validateToAndFrom() error validateObj(vObj *validation, set_default bool) setDefault() - // PartitionRepair returns bool, set in IsisLspFlags. - PartitionRepair() bool - // SetPartitionRepair assigns bool provided by user to IsisLspFlags - SetPartitionRepair(value bool) IsisLspFlags - // HasPartitionRepair checks if PartitionRepair has been set in IsisLspFlags - HasPartitionRepair() bool - // AttachedError returns bool, set in IsisLspFlags. - AttachedError() bool - // SetAttachedError assigns bool provided by user to IsisLspFlags - SetAttachedError(value bool) IsisLspFlags - // HasAttachedError checks if AttachedError has been set in IsisLspFlags - HasAttachedError() bool - // AttachedExpense returns bool, set in IsisLspFlags. - AttachedExpense() bool - // SetAttachedExpense assigns bool provided by user to IsisLspFlags - SetAttachedExpense(value bool) IsisLspFlags - // HasAttachedExpense checks if AttachedExpense has been set in IsisLspFlags - HasAttachedExpense() bool - // AttachedDelay returns bool, set in IsisLspFlags. - AttachedDelay() bool - // SetAttachedDelay assigns bool provided by user to IsisLspFlags - SetAttachedDelay(value bool) IsisLspFlags - // HasAttachedDelay checks if AttachedDelay has been set in IsisLspFlags - HasAttachedDelay() bool - // AttachedDefault returns bool, set in IsisLspFlags. - AttachedDefault() bool - // SetAttachedDefault assigns bool provided by user to IsisLspFlags - SetAttachedDefault(value bool) IsisLspFlags - // HasAttachedDefault checks if AttachedDefault has been set in IsisLspFlags - HasAttachedDefault() bool - // Overload returns bool, set in IsisLspFlags. - Overload() bool - // SetOverload assigns bool provided by user to IsisLspFlags - SetOverload(value bool) IsisLspFlags - // HasOverload checks if Overload has been set in IsisLspFlags - HasOverload() bool } -// When set, the originator supports partition repair. -// PartitionRepair returns a bool -func (obj *isisLspFlags) PartitionRepair() bool { +func (obj *deviceBgpFiniteStateMachineError) validateObj(vObj *validation, set_default bool) { + if set_default { + obj.setDefault() + } - return *obj.obj.PartitionRepair +} + +func (obj *deviceBgpFiniteStateMachineError) setDefault() { } -// When set, the originator supports partition repair. -// PartitionRepair returns a bool -func (obj *isisLspFlags) HasPartitionRepair() bool { - return obj.obj.PartitionRepair != nil +// ***** DeviceBgpCustomError ***** +type deviceBgpCustomError struct { + validation + obj *otg.DeviceBgpCustomError } -// When set, the originator supports partition repair. -// SetPartitionRepair sets the bool value in the IsisLspFlags object -func (obj *isisLspFlags) SetPartitionRepair(value bool) IsisLspFlags { +func NewDeviceBgpCustomError() DeviceBgpCustomError { + obj := deviceBgpCustomError{obj: &otg.DeviceBgpCustomError{}} + obj.setDefault() + return &obj +} - obj.obj.PartitionRepair = &value - return obj +func (obj *deviceBgpCustomError) Msg() *otg.DeviceBgpCustomError { + return obj.obj } -// When set, the originator is attached to another area using the referred metric. -// AttachedError returns a bool -func (obj *isisLspFlags) AttachedError() bool { +func (obj *deviceBgpCustomError) SetMsg(msg *otg.DeviceBgpCustomError) DeviceBgpCustomError { - return *obj.obj.AttachedError + proto.Merge(obj.obj, msg) + return obj +} +func (obj *deviceBgpCustomError) ToProto() (*otg.DeviceBgpCustomError, error) { + err := obj.validateToAndFrom() + if err != nil { + return nil, err + } + return obj.Msg(), nil } -// When set, the originator is attached to another area using the referred metric. -// AttachedError returns a bool -func (obj *isisLspFlags) HasAttachedError() bool { - return obj.obj.AttachedError != nil +func (obj *deviceBgpCustomError) FromProto(msg *otg.DeviceBgpCustomError) (DeviceBgpCustomError, error) { + newObj := obj.SetMsg(msg) + err := newObj.validateToAndFrom() + if err != nil { + return nil, err + } + return newObj, nil } -// When set, the originator is attached to another area using the referred metric. -// SetAttachedError sets the bool value in the IsisLspFlags object -func (obj *isisLspFlags) SetAttachedError(value bool) IsisLspFlags { +func (obj *deviceBgpCustomError) ToPbText() (string, error) { + vErr := obj.validateToAndFrom() + if vErr != nil { + return "", vErr + } + protoMarshal, err := proto.Marshal(obj.Msg()) + if err != nil { + return "", err + } + return string(protoMarshal), nil +} - obj.obj.AttachedError = &value - return obj +func (obj *deviceBgpCustomError) FromPbText(value string) error { + retObj := proto.Unmarshal([]byte(value), obj.Msg()) + if retObj != nil { + return retObj + } + + vErr := obj.validateToAndFrom() + if vErr != nil { + return vErr + } + return retObj } -// When set, the originator is attached to another -// area using the referred metric. -// AttachedExpense returns a bool -func (obj *isisLspFlags) AttachedExpense() bool { +func (obj *deviceBgpCustomError) ToYaml() (string, error) { + vErr := obj.validateToAndFrom() + if vErr != nil { + return "", vErr + } + opts := protojson.MarshalOptions{ + UseProtoNames: true, + AllowPartial: true, + EmitUnpopulated: false, + } + data, err := opts.Marshal(obj.Msg()) + if err != nil { + return "", err + } + data, err = yaml.JSONToYAML(data) + if err != nil { + return "", err + } + return string(data), nil +} - return *obj.obj.AttachedExpense +func (obj *deviceBgpCustomError) FromYaml(value string) error { + if value == "" { + value = "{}" + } + data, err := yaml.YAMLToJSON([]byte(value)) + if err != nil { + return err + } + opts := protojson.UnmarshalOptions{ + AllowPartial: true, + DiscardUnknown: false, + } + uError := opts.Unmarshal([]byte(data), obj.Msg()) + if uError != nil { + return fmt.Errorf("unmarshal error %s", strings.Replace( + uError.Error(), "\u00a0", " ", -1)[7:]) + } + vErr := obj.validateToAndFrom() + if vErr != nil { + return vErr + } + return nil } -// When set, the originator is attached to another -// area using the referred metric. -// AttachedExpense returns a bool -func (obj *isisLspFlags) HasAttachedExpense() bool { - return obj.obj.AttachedExpense != nil +func (obj *deviceBgpCustomError) ToJson() (string, error) { + vErr := obj.validateToAndFrom() + if vErr != nil { + return "", vErr + } + opts := protojson.MarshalOptions{ + UseProtoNames: true, + AllowPartial: true, + EmitUnpopulated: false, + Indent: " ", + } + data, err := opts.Marshal(obj.Msg()) + if err != nil { + return "", err + } + return string(data), nil } -// When set, the originator is attached to another -// area using the referred metric. -// SetAttachedExpense sets the bool value in the IsisLspFlags object -func (obj *isisLspFlags) SetAttachedExpense(value bool) IsisLspFlags { +func (obj *deviceBgpCustomError) FromJson(value string) error { + opts := protojson.UnmarshalOptions{ + AllowPartial: true, + DiscardUnknown: false, + } + if value == "" { + value = "{}" + } + uError := opts.Unmarshal([]byte(value), obj.Msg()) + if uError != nil { + return fmt.Errorf("unmarshal error %s", strings.Replace( + uError.Error(), "\u00a0", " ", -1)[7:]) + } - obj.obj.AttachedExpense = &value - return obj + err := obj.validateToAndFrom() + if err != nil { + return err + } + return nil } -// Delay Metric - when set, the originator is attached to another -// area using the referred metric. -// AttachedDelay returns a bool -func (obj *isisLspFlags) AttachedDelay() bool { - - return *obj.obj.AttachedDelay +func (obj *deviceBgpCustomError) validateToAndFrom() error { + // emptyVars() + obj.validateObj(&obj.validation, true) + return obj.validationResult() +} +func (obj *deviceBgpCustomError) Validate() error { + // emptyVars() + obj.validateObj(&obj.validation, false) + return obj.validationResult() } -// Delay Metric - when set, the originator is attached to another -// area using the referred metric. -// AttachedDelay returns a bool -func (obj *isisLspFlags) HasAttachedDelay() bool { - return obj.obj.AttachedDelay != nil +func (obj *deviceBgpCustomError) String() string { + str, err := obj.ToYaml() + if err != nil { + return err.Error() + } + return str } -// Delay Metric - when set, the originator is attached to another -// area using the referred metric. -// SetAttachedDelay sets the bool value in the IsisLspFlags object -func (obj *isisLspFlags) SetAttachedDelay(value bool) IsisLspFlags { +func (obj *deviceBgpCustomError) Clone() (DeviceBgpCustomError, error) { + vErr := obj.Validate() + if vErr != nil { + return nil, vErr + } + newObj := NewDeviceBgpCustomError() + data, err := proto.Marshal(obj.Msg()) + if err != nil { + return nil, err + } + pbErr := proto.Unmarshal(data, newObj.Msg()) + if pbErr != nil { + return nil, pbErr + } + return newObj, nil +} - obj.obj.AttachedDelay = &value - return obj +// DeviceBgpCustomError is a BGP peer can send NOTIFICATION message with user defined Error Code and Error Subcode. +type DeviceBgpCustomError interface { + Validation + // Msg marshals DeviceBgpCustomError to protobuf object *otg.DeviceBgpCustomError + // and doesn't set defaults + Msg() *otg.DeviceBgpCustomError + // SetMsg unmarshals DeviceBgpCustomError from protobuf object *otg.DeviceBgpCustomError + // and doesn't set defaults + SetMsg(*otg.DeviceBgpCustomError) DeviceBgpCustomError + // ToProto marshals DeviceBgpCustomError to protobuf object *otg.DeviceBgpCustomError + ToProto() (*otg.DeviceBgpCustomError, error) + // ToPbText marshals DeviceBgpCustomError to protobuf text + ToPbText() (string, error) + // ToYaml marshals DeviceBgpCustomError to YAML text + ToYaml() (string, error) + // ToJson marshals DeviceBgpCustomError to JSON text + ToJson() (string, error) + // FromProto unmarshals DeviceBgpCustomError from protobuf object *otg.DeviceBgpCustomError + FromProto(msg *otg.DeviceBgpCustomError) (DeviceBgpCustomError, error) + // FromPbText unmarshals DeviceBgpCustomError from protobuf text + FromPbText(value string) error + // FromYaml unmarshals DeviceBgpCustomError from YAML text + FromYaml(value string) error + // FromJson unmarshals DeviceBgpCustomError from JSON text + FromJson(value string) error + // Validate validates DeviceBgpCustomError + Validate() error + // A stringer function + String() string + // Clones the object + Clone() (DeviceBgpCustomError, error) + validateToAndFrom() error + validateObj(vObj *validation, set_default bool) + setDefault() + // Code returns uint32, set in DeviceBgpCustomError. + Code() uint32 + // SetCode assigns uint32 provided by user to DeviceBgpCustomError + SetCode(value uint32) DeviceBgpCustomError + // HasCode checks if Code has been set in DeviceBgpCustomError + HasCode() bool + // Subcode returns uint32, set in DeviceBgpCustomError. + Subcode() uint32 + // SetSubcode assigns uint32 provided by user to DeviceBgpCustomError + SetSubcode(value uint32) DeviceBgpCustomError + // HasSubcode checks if Subcode has been set in DeviceBgpCustomError + HasSubcode() bool } -// Default Metric - when set, the originator is attached to another -// area using the referred metric. -// AttachedDefault returns a bool -func (obj *isisLspFlags) AttachedDefault() bool { +// The Error code to be sent in the NOTIFICATION message to peer. +// Code returns a uint32 +func (obj *deviceBgpCustomError) Code() uint32 { - return *obj.obj.AttachedDefault + return *obj.obj.Code } -// Default Metric - when set, the originator is attached to another -// area using the referred metric. -// AttachedDefault returns a bool -func (obj *isisLspFlags) HasAttachedDefault() bool { - return obj.obj.AttachedDefault != nil +// The Error code to be sent in the NOTIFICATION message to peer. +// Code returns a uint32 +func (obj *deviceBgpCustomError) HasCode() bool { + return obj.obj.Code != nil } -// Default Metric - when set, the originator is attached to another -// area using the referred metric. -// SetAttachedDefault sets the bool value in the IsisLspFlags object -func (obj *isisLspFlags) SetAttachedDefault(value bool) IsisLspFlags { +// The Error code to be sent in the NOTIFICATION message to peer. +// SetCode sets the uint32 value in the DeviceBgpCustomError object +func (obj *deviceBgpCustomError) SetCode(value uint32) DeviceBgpCustomError { - obj.obj.AttachedDefault = &value + obj.obj.Code = &value return obj } -// Overload bit - when set, the originator is overloaded, and must -// be avoided in path calculation. -// Overload returns a bool -func (obj *isisLspFlags) Overload() bool { +// The Error Subcode to be sent in the NOTIFICATION message to peer. +// Subcode returns a uint32 +func (obj *deviceBgpCustomError) Subcode() uint32 { - return *obj.obj.Overload + return *obj.obj.Subcode } -// Overload bit - when set, the originator is overloaded, and must -// be avoided in path calculation. -// Overload returns a bool -func (obj *isisLspFlags) HasOverload() bool { - return obj.obj.Overload != nil +// The Error Subcode to be sent in the NOTIFICATION message to peer. +// Subcode returns a uint32 +func (obj *deviceBgpCustomError) HasSubcode() bool { + return obj.obj.Subcode != nil } -// Overload bit - when set, the originator is overloaded, and must -// be avoided in path calculation. -// SetOverload sets the bool value in the IsisLspFlags object -func (obj *isisLspFlags) SetOverload(value bool) IsisLspFlags { +// The Error Subcode to be sent in the NOTIFICATION message to peer. +// SetSubcode sets the uint32 value in the DeviceBgpCustomError object +func (obj *deviceBgpCustomError) SetSubcode(value uint32) DeviceBgpCustomError { - obj.obj.Overload = &value + obj.obj.Subcode = &value return obj } -func (obj *isisLspFlags) validateObj(vObj *validation, set_default bool) { +func (obj *deviceBgpCustomError) validateObj(vObj *validation, set_default bool) { if set_default { obj.setDefault() } } -func (obj *isisLspFlags) setDefault() { +func (obj *deviceBgpCustomError) setDefault() { } -// ***** IsisLspTlvs ***** -type isisLspTlvs struct { +// ***** ActionResponseProtocolIpv4 ***** +type actionResponseProtocolIpv4 struct { validation - obj *otg.IsisLspTlvs - hostnameTlvsHolder IsisLspTlvsIsisLspHostnameIter - isReachabilityTlvsHolder IsisLspTlvsIsisLspIsReachabilityTlvIter - extendedIsReachabilityTlvsHolder IsisLspTlvsIsisLspExtendedIsReachabilityTlvIter - ipv4InternalReachabilityTlvsHolder IsisLspTlvsIsisLspIpv4InternalReachabilityTlvIter - ipv4ExternalReachabilityTlvsHolder IsisLspTlvsIsisLspIpv4ExternalReachabilityTlvIter - extendedIpv4ReachabilityTlvsHolder IsisLspTlvsIsisLspExtendedIpv4ReachabilityTlvIter - ipv6ReachabilityTlvsHolder IsisLspTlvsIsisLspIpv6ReachabilityTlvIter + obj *otg.ActionResponseProtocolIpv4 + pingHolder ActionResponseProtocolIpv4Ping } -func NewIsisLspTlvs() IsisLspTlvs { - obj := isisLspTlvs{obj: &otg.IsisLspTlvs{}} +func NewActionResponseProtocolIpv4() ActionResponseProtocolIpv4 { + obj := actionResponseProtocolIpv4{obj: &otg.ActionResponseProtocolIpv4{}} obj.setDefault() return &obj } -func (obj *isisLspTlvs) Msg() *otg.IsisLspTlvs { +func (obj *actionResponseProtocolIpv4) Msg() *otg.ActionResponseProtocolIpv4 { return obj.obj } -func (obj *isisLspTlvs) SetMsg(msg *otg.IsisLspTlvs) IsisLspTlvs { +func (obj *actionResponseProtocolIpv4) SetMsg(msg *otg.ActionResponseProtocolIpv4) ActionResponseProtocolIpv4 { obj.setNil() proto.Merge(obj.obj, msg) return obj } -func (obj *isisLspTlvs) ToProto() (*otg.IsisLspTlvs, error) { +func (obj *actionResponseProtocolIpv4) ToProto() (*otg.ActionResponseProtocolIpv4, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -170416,7 +171270,7 @@ func (obj *isisLspTlvs) ToProto() (*otg.IsisLspTlvs, error) { return obj.Msg(), nil } -func (obj *isisLspTlvs) FromProto(msg *otg.IsisLspTlvs) (IsisLspTlvs, error) { +func (obj *actionResponseProtocolIpv4) FromProto(msg *otg.ActionResponseProtocolIpv4) (ActionResponseProtocolIpv4, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -170425,7 +171279,7 @@ func (obj *isisLspTlvs) FromProto(msg *otg.IsisLspTlvs) (IsisLspTlvs, error) { return newObj, nil } -func (obj *isisLspTlvs) ToPbText() (string, error) { +func (obj *actionResponseProtocolIpv4) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -170437,7 +171291,7 @@ func (obj *isisLspTlvs) ToPbText() (string, error) { return string(protoMarshal), nil } -func (obj *isisLspTlvs) FromPbText(value string) error { +func (obj *actionResponseProtocolIpv4) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj @@ -170450,7 +171304,7 @@ func (obj *isisLspTlvs) FromPbText(value string) error { return retObj } -func (obj *isisLspTlvs) ToYaml() (string, error) { +func (obj *actionResponseProtocolIpv4) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -170471,7 +171325,7 @@ func (obj *isisLspTlvs) ToYaml() (string, error) { return string(data), nil } -func (obj *isisLspTlvs) FromYaml(value string) error { +func (obj *actionResponseProtocolIpv4) FromYaml(value string) error { if value == "" { value = "{}" } @@ -170496,7 +171350,7 @@ func (obj *isisLspTlvs) FromYaml(value string) error { return nil } -func (obj *isisLspTlvs) ToJson() (string, error) { +func (obj *actionResponseProtocolIpv4) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -170514,7 +171368,7 @@ func (obj *isisLspTlvs) ToJson() (string, error) { return string(data), nil } -func (obj *isisLspTlvs) FromJson(value string) error { +func (obj *actionResponseProtocolIpv4) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -170535,19 +171389,19 @@ func (obj *isisLspTlvs) FromJson(value string) error { return nil } -func (obj *isisLspTlvs) validateToAndFrom() error { +func (obj *actionResponseProtocolIpv4) validateToAndFrom() error { // emptyVars() obj.validateObj(&obj.validation, true) return obj.validationResult() } -func (obj *isisLspTlvs) Validate() error { +func (obj *actionResponseProtocolIpv4) Validate() error { // emptyVars() obj.validateObj(&obj.validation, false) return obj.validationResult() } -func (obj *isisLspTlvs) String() string { +func (obj *actionResponseProtocolIpv4) String() string { str, err := obj.ToYaml() if err != nil { return err.Error() @@ -170555,12 +171409,12 @@ func (obj *isisLspTlvs) String() string { return str } -func (obj *isisLspTlvs) Clone() (IsisLspTlvs, error) { +func (obj *actionResponseProtocolIpv4) Clone() (ActionResponseProtocolIpv4, error) { vErr := obj.Validate() if vErr != nil { return nil, vErr } - newObj := NewIsisLspTlvs() + newObj := NewActionResponseProtocolIpv4() data, err := proto.Marshal(obj.Msg()) if err != nil { return nil, err @@ -170572,811 +171426,801 @@ func (obj *isisLspTlvs) Clone() (IsisLspTlvs, error) { return newObj, nil } -func (obj *isisLspTlvs) setNil() { - obj.hostnameTlvsHolder = nil - obj.isReachabilityTlvsHolder = nil - obj.extendedIsReachabilityTlvsHolder = nil - obj.ipv4InternalReachabilityTlvsHolder = nil - obj.ipv4ExternalReachabilityTlvsHolder = nil - obj.extendedIpv4ReachabilityTlvsHolder = nil - obj.ipv6ReachabilityTlvsHolder = nil +func (obj *actionResponseProtocolIpv4) setNil() { + obj.pingHolder = nil obj.validationErrors = nil obj.warnings = nil obj.constraints = make(map[string]map[string]Constraints) } -// IsisLspTlvs is this contains the list of TLVs present in one LSP. -type IsisLspTlvs interface { +// ActionResponseProtocolIpv4 is response for actions associated with IPv4 on configured resources. +type ActionResponseProtocolIpv4 interface { Validation - // Msg marshals IsisLspTlvs to protobuf object *otg.IsisLspTlvs + // Msg marshals ActionResponseProtocolIpv4 to protobuf object *otg.ActionResponseProtocolIpv4 // and doesn't set defaults - Msg() *otg.IsisLspTlvs - // SetMsg unmarshals IsisLspTlvs from protobuf object *otg.IsisLspTlvs + Msg() *otg.ActionResponseProtocolIpv4 + // SetMsg unmarshals ActionResponseProtocolIpv4 from protobuf object *otg.ActionResponseProtocolIpv4 // and doesn't set defaults - SetMsg(*otg.IsisLspTlvs) IsisLspTlvs - // ToProto marshals IsisLspTlvs to protobuf object *otg.IsisLspTlvs - ToProto() (*otg.IsisLspTlvs, error) - // ToPbText marshals IsisLspTlvs to protobuf text + SetMsg(*otg.ActionResponseProtocolIpv4) ActionResponseProtocolIpv4 + // ToProto marshals ActionResponseProtocolIpv4 to protobuf object *otg.ActionResponseProtocolIpv4 + ToProto() (*otg.ActionResponseProtocolIpv4, error) + // ToPbText marshals ActionResponseProtocolIpv4 to protobuf text ToPbText() (string, error) - // ToYaml marshals IsisLspTlvs to YAML text + // ToYaml marshals ActionResponseProtocolIpv4 to YAML text ToYaml() (string, error) - // ToJson marshals IsisLspTlvs to JSON text + // ToJson marshals ActionResponseProtocolIpv4 to JSON text ToJson() (string, error) - // FromProto unmarshals IsisLspTlvs from protobuf object *otg.IsisLspTlvs - FromProto(msg *otg.IsisLspTlvs) (IsisLspTlvs, error) - // FromPbText unmarshals IsisLspTlvs from protobuf text + // FromProto unmarshals ActionResponseProtocolIpv4 from protobuf object *otg.ActionResponseProtocolIpv4 + FromProto(msg *otg.ActionResponseProtocolIpv4) (ActionResponseProtocolIpv4, error) + // FromPbText unmarshals ActionResponseProtocolIpv4 from protobuf text FromPbText(value string) error - // FromYaml unmarshals IsisLspTlvs from YAML text + // FromYaml unmarshals ActionResponseProtocolIpv4 from YAML text FromYaml(value string) error - // FromJson unmarshals IsisLspTlvs from JSON text + // FromJson unmarshals ActionResponseProtocolIpv4 from JSON text FromJson(value string) error - // Validate validates IsisLspTlvs + // Validate validates ActionResponseProtocolIpv4 Validate() error // A stringer function String() string // Clones the object - Clone() (IsisLspTlvs, error) + Clone() (ActionResponseProtocolIpv4, error) validateToAndFrom() error validateObj(vObj *validation, set_default bool) setDefault() - // HostnameTlvs returns IsisLspTlvsIsisLspHostnameIterIter, set in IsisLspTlvs - HostnameTlvs() IsisLspTlvsIsisLspHostnameIter - // IsReachabilityTlvs returns IsisLspTlvsIsisLspIsReachabilityTlvIterIter, set in IsisLspTlvs - IsReachabilityTlvs() IsisLspTlvsIsisLspIsReachabilityTlvIter - // ExtendedIsReachabilityTlvs returns IsisLspTlvsIsisLspExtendedIsReachabilityTlvIterIter, set in IsisLspTlvs - ExtendedIsReachabilityTlvs() IsisLspTlvsIsisLspExtendedIsReachabilityTlvIter - // Ipv4InternalReachabilityTlvs returns IsisLspTlvsIsisLspIpv4InternalReachabilityTlvIterIter, set in IsisLspTlvs - Ipv4InternalReachabilityTlvs() IsisLspTlvsIsisLspIpv4InternalReachabilityTlvIter - // Ipv4ExternalReachabilityTlvs returns IsisLspTlvsIsisLspIpv4ExternalReachabilityTlvIterIter, set in IsisLspTlvs - Ipv4ExternalReachabilityTlvs() IsisLspTlvsIsisLspIpv4ExternalReachabilityTlvIter - // ExtendedIpv4ReachabilityTlvs returns IsisLspTlvsIsisLspExtendedIpv4ReachabilityTlvIterIter, set in IsisLspTlvs - ExtendedIpv4ReachabilityTlvs() IsisLspTlvsIsisLspExtendedIpv4ReachabilityTlvIter - // Ipv6ReachabilityTlvs returns IsisLspTlvsIsisLspIpv6ReachabilityTlvIterIter, set in IsisLspTlvs - Ipv6ReachabilityTlvs() IsisLspTlvsIsisLspIpv6ReachabilityTlvIter + // Choice returns ActionResponseProtocolIpv4ChoiceEnum, set in ActionResponseProtocolIpv4 + Choice() ActionResponseProtocolIpv4ChoiceEnum + // SetChoice assigns ActionResponseProtocolIpv4ChoiceEnum provided by user to ActionResponseProtocolIpv4 + SetChoice(value ActionResponseProtocolIpv4ChoiceEnum) ActionResponseProtocolIpv4 + // Ping returns ActionResponseProtocolIpv4Ping, set in ActionResponseProtocolIpv4. + // ActionResponseProtocolIpv4Ping is response for ping initiated between multiple source and destination pairs. + Ping() ActionResponseProtocolIpv4Ping + // SetPing assigns ActionResponseProtocolIpv4Ping provided by user to ActionResponseProtocolIpv4. + // ActionResponseProtocolIpv4Ping is response for ping initiated between multiple source and destination pairs. + SetPing(value ActionResponseProtocolIpv4Ping) ActionResponseProtocolIpv4 + // HasPing checks if Ping has been set in ActionResponseProtocolIpv4 + HasPing() bool setNil() } -// Array of Hostname TLVs ( type 137) present in this LSP. -// HostnameTlvs returns a []IsisLspHostname -func (obj *isisLspTlvs) HostnameTlvs() IsisLspTlvsIsisLspHostnameIter { - if len(obj.obj.HostnameTlvs) == 0 { - obj.obj.HostnameTlvs = []*otg.IsisLspHostname{} - } - if obj.hostnameTlvsHolder == nil { - obj.hostnameTlvsHolder = newIsisLspTlvsIsisLspHostnameIter(&obj.obj.HostnameTlvs).setMsg(obj) - } - return obj.hostnameTlvsHolder -} +type ActionResponseProtocolIpv4ChoiceEnum string -type isisLspTlvsIsisLspHostnameIter struct { - obj *isisLspTlvs - isisLspHostnameSlice []IsisLspHostname - fieldPtr *[]*otg.IsisLspHostname +// Enum of Choice on ActionResponseProtocolIpv4 +var ActionResponseProtocolIpv4Choice = struct { + PING ActionResponseProtocolIpv4ChoiceEnum +}{ + PING: ActionResponseProtocolIpv4ChoiceEnum("ping"), } -func newIsisLspTlvsIsisLspHostnameIter(ptr *[]*otg.IsisLspHostname) IsisLspTlvsIsisLspHostnameIter { - return &isisLspTlvsIsisLspHostnameIter{fieldPtr: ptr} +func (obj *actionResponseProtocolIpv4) Choice() ActionResponseProtocolIpv4ChoiceEnum { + return ActionResponseProtocolIpv4ChoiceEnum(obj.obj.Choice.Enum().String()) } -type IsisLspTlvsIsisLspHostnameIter interface { - setMsg(*isisLspTlvs) IsisLspTlvsIsisLspHostnameIter - Items() []IsisLspHostname - Add() IsisLspHostname - Append(items ...IsisLspHostname) IsisLspTlvsIsisLspHostnameIter - Set(index int, newObj IsisLspHostname) IsisLspTlvsIsisLspHostnameIter - Clear() IsisLspTlvsIsisLspHostnameIter - clearHolderSlice() IsisLspTlvsIsisLspHostnameIter - appendHolderSlice(item IsisLspHostname) IsisLspTlvsIsisLspHostnameIter -} +func (obj *actionResponseProtocolIpv4) SetChoice(value ActionResponseProtocolIpv4ChoiceEnum) ActionResponseProtocolIpv4 { + intValue, ok := otg.ActionResponseProtocolIpv4_Choice_Enum_value[string(value)] + if !ok { + obj.validationErrors = append(obj.validationErrors, fmt.Sprintf( + "%s is not a valid choice on ActionResponseProtocolIpv4ChoiceEnum", string(value))) + return obj + } + enumValue := otg.ActionResponseProtocolIpv4_Choice_Enum(intValue) + obj.obj.Choice = &enumValue + obj.obj.Ping = nil + obj.pingHolder = nil -func (obj *isisLspTlvsIsisLspHostnameIter) setMsg(msg *isisLspTlvs) IsisLspTlvsIsisLspHostnameIter { - obj.clearHolderSlice() - for _, val := range *obj.fieldPtr { - obj.appendHolderSlice(&isisLspHostname{obj: val}) + if value == ActionResponseProtocolIpv4Choice.PING { + obj.obj.Ping = NewActionResponseProtocolIpv4Ping().Msg() } - obj.obj = msg + return obj } -func (obj *isisLspTlvsIsisLspHostnameIter) Items() []IsisLspHostname { - return obj.isisLspHostnameSlice +// description is TBD +// Ping returns a ActionResponseProtocolIpv4Ping +func (obj *actionResponseProtocolIpv4) Ping() ActionResponseProtocolIpv4Ping { + if obj.obj.Ping == nil { + obj.SetChoice(ActionResponseProtocolIpv4Choice.PING) + } + if obj.pingHolder == nil { + obj.pingHolder = &actionResponseProtocolIpv4Ping{obj: obj.obj.Ping} + } + return obj.pingHolder } -func (obj *isisLspTlvsIsisLspHostnameIter) Add() IsisLspHostname { - newObj := &otg.IsisLspHostname{} - *obj.fieldPtr = append(*obj.fieldPtr, newObj) - newLibObj := &isisLspHostname{obj: newObj} - newLibObj.setDefault() - obj.isisLspHostnameSlice = append(obj.isisLspHostnameSlice, newLibObj) - return newLibObj +// description is TBD +// Ping returns a ActionResponseProtocolIpv4Ping +func (obj *actionResponseProtocolIpv4) HasPing() bool { + return obj.obj.Ping != nil } -func (obj *isisLspTlvsIsisLspHostnameIter) Append(items ...IsisLspHostname) IsisLspTlvsIsisLspHostnameIter { - for _, item := range items { - newObj := item.Msg() - *obj.fieldPtr = append(*obj.fieldPtr, newObj) - obj.isisLspHostnameSlice = append(obj.isisLspHostnameSlice, item) - } - return obj -} +// description is TBD +// SetPing sets the ActionResponseProtocolIpv4Ping value in the ActionResponseProtocolIpv4 object +func (obj *actionResponseProtocolIpv4) SetPing(value ActionResponseProtocolIpv4Ping) ActionResponseProtocolIpv4 { + obj.SetChoice(ActionResponseProtocolIpv4Choice.PING) + obj.pingHolder = nil + obj.obj.Ping = value.Msg() -func (obj *isisLspTlvsIsisLspHostnameIter) Set(index int, newObj IsisLspHostname) IsisLspTlvsIsisLspHostnameIter { - (*obj.fieldPtr)[index] = newObj.Msg() - obj.isisLspHostnameSlice[index] = newObj return obj } -func (obj *isisLspTlvsIsisLspHostnameIter) Clear() IsisLspTlvsIsisLspHostnameIter { - if len(*obj.fieldPtr) > 0 { - *obj.fieldPtr = []*otg.IsisLspHostname{} - obj.isisLspHostnameSlice = []IsisLspHostname{} + +func (obj *actionResponseProtocolIpv4) validateObj(vObj *validation, set_default bool) { + if set_default { + obj.setDefault() } - return obj -} -func (obj *isisLspTlvsIsisLspHostnameIter) clearHolderSlice() IsisLspTlvsIsisLspHostnameIter { - if len(obj.isisLspHostnameSlice) > 0 { - obj.isisLspHostnameSlice = []IsisLspHostname{} + + // Choice is required + if obj.obj.Choice == nil { + vObj.validationErrors = append(vObj.validationErrors, "Choice is required field on interface ActionResponseProtocolIpv4") } - return obj + + if obj.obj.Ping != nil { + + obj.Ping().validateObj(vObj, set_default) + } + } -func (obj *isisLspTlvsIsisLspHostnameIter) appendHolderSlice(item IsisLspHostname) IsisLspTlvsIsisLspHostnameIter { - obj.isisLspHostnameSlice = append(obj.isisLspHostnameSlice, item) - return obj + +func (obj *actionResponseProtocolIpv4) setDefault() { + } -// Array of IS-Reachability TLVs (type 2) present in this LSP. -// IsReachabilityTlvs returns a []IsisLspIsReachabilityTlv -func (obj *isisLspTlvs) IsReachabilityTlvs() IsisLspTlvsIsisLspIsReachabilityTlvIter { - if len(obj.obj.IsReachabilityTlvs) == 0 { - obj.obj.IsReachabilityTlvs = []*otg.IsisLspIsReachabilityTlv{} - } - if obj.isReachabilityTlvsHolder == nil { - obj.isReachabilityTlvsHolder = newIsisLspTlvsIsisLspIsReachabilityTlvIter(&obj.obj.IsReachabilityTlvs).setMsg(obj) - } - return obj.isReachabilityTlvsHolder -} - -type isisLspTlvsIsisLspIsReachabilityTlvIter struct { - obj *isisLspTlvs - isisLspIsReachabilityTlvSlice []IsisLspIsReachabilityTlv - fieldPtr *[]*otg.IsisLspIsReachabilityTlv +// ***** ActionResponseProtocolIpv6 ***** +type actionResponseProtocolIpv6 struct { + validation + obj *otg.ActionResponseProtocolIpv6 + pingHolder ActionResponseProtocolIpv6Ping } -func newIsisLspTlvsIsisLspIsReachabilityTlvIter(ptr *[]*otg.IsisLspIsReachabilityTlv) IsisLspTlvsIsisLspIsReachabilityTlvIter { - return &isisLspTlvsIsisLspIsReachabilityTlvIter{fieldPtr: ptr} +func NewActionResponseProtocolIpv6() ActionResponseProtocolIpv6 { + obj := actionResponseProtocolIpv6{obj: &otg.ActionResponseProtocolIpv6{}} + obj.setDefault() + return &obj } -type IsisLspTlvsIsisLspIsReachabilityTlvIter interface { - setMsg(*isisLspTlvs) IsisLspTlvsIsisLspIsReachabilityTlvIter - Items() []IsisLspIsReachabilityTlv - Add() IsisLspIsReachabilityTlv - Append(items ...IsisLspIsReachabilityTlv) IsisLspTlvsIsisLspIsReachabilityTlvIter - Set(index int, newObj IsisLspIsReachabilityTlv) IsisLspTlvsIsisLspIsReachabilityTlvIter - Clear() IsisLspTlvsIsisLspIsReachabilityTlvIter - clearHolderSlice() IsisLspTlvsIsisLspIsReachabilityTlvIter - appendHolderSlice(item IsisLspIsReachabilityTlv) IsisLspTlvsIsisLspIsReachabilityTlvIter +func (obj *actionResponseProtocolIpv6) Msg() *otg.ActionResponseProtocolIpv6 { + return obj.obj } -func (obj *isisLspTlvsIsisLspIsReachabilityTlvIter) setMsg(msg *isisLspTlvs) IsisLspTlvsIsisLspIsReachabilityTlvIter { - obj.clearHolderSlice() - for _, val := range *obj.fieldPtr { - obj.appendHolderSlice(&isisLspIsReachabilityTlv{obj: val}) - } - obj.obj = msg +func (obj *actionResponseProtocolIpv6) SetMsg(msg *otg.ActionResponseProtocolIpv6) ActionResponseProtocolIpv6 { + obj.setNil() + proto.Merge(obj.obj, msg) return obj } -func (obj *isisLspTlvsIsisLspIsReachabilityTlvIter) Items() []IsisLspIsReachabilityTlv { - return obj.isisLspIsReachabilityTlvSlice -} - -func (obj *isisLspTlvsIsisLspIsReachabilityTlvIter) Add() IsisLspIsReachabilityTlv { - newObj := &otg.IsisLspIsReachabilityTlv{} - *obj.fieldPtr = append(*obj.fieldPtr, newObj) - newLibObj := &isisLspIsReachabilityTlv{obj: newObj} - newLibObj.setDefault() - obj.isisLspIsReachabilityTlvSlice = append(obj.isisLspIsReachabilityTlvSlice, newLibObj) - return newLibObj +func (obj *actionResponseProtocolIpv6) ToProto() (*otg.ActionResponseProtocolIpv6, error) { + err := obj.validateToAndFrom() + if err != nil { + return nil, err + } + return obj.Msg(), nil } -func (obj *isisLspTlvsIsisLspIsReachabilityTlvIter) Append(items ...IsisLspIsReachabilityTlv) IsisLspTlvsIsisLspIsReachabilityTlvIter { - for _, item := range items { - newObj := item.Msg() - *obj.fieldPtr = append(*obj.fieldPtr, newObj) - obj.isisLspIsReachabilityTlvSlice = append(obj.isisLspIsReachabilityTlvSlice, item) +func (obj *actionResponseProtocolIpv6) FromProto(msg *otg.ActionResponseProtocolIpv6) (ActionResponseProtocolIpv6, error) { + newObj := obj.SetMsg(msg) + err := newObj.validateToAndFrom() + if err != nil { + return nil, err } - return obj + return newObj, nil } -func (obj *isisLspTlvsIsisLspIsReachabilityTlvIter) Set(index int, newObj IsisLspIsReachabilityTlv) IsisLspTlvsIsisLspIsReachabilityTlvIter { - (*obj.fieldPtr)[index] = newObj.Msg() - obj.isisLspIsReachabilityTlvSlice[index] = newObj - return obj -} -func (obj *isisLspTlvsIsisLspIsReachabilityTlvIter) Clear() IsisLspTlvsIsisLspIsReachabilityTlvIter { - if len(*obj.fieldPtr) > 0 { - *obj.fieldPtr = []*otg.IsisLspIsReachabilityTlv{} - obj.isisLspIsReachabilityTlvSlice = []IsisLspIsReachabilityTlv{} +func (obj *actionResponseProtocolIpv6) ToPbText() (string, error) { + vErr := obj.validateToAndFrom() + if vErr != nil { + return "", vErr } - return obj -} -func (obj *isisLspTlvsIsisLspIsReachabilityTlvIter) clearHolderSlice() IsisLspTlvsIsisLspIsReachabilityTlvIter { - if len(obj.isisLspIsReachabilityTlvSlice) > 0 { - obj.isisLspIsReachabilityTlvSlice = []IsisLspIsReachabilityTlv{} + protoMarshal, err := proto.Marshal(obj.Msg()) + if err != nil { + return "", err } - return obj -} -func (obj *isisLspTlvsIsisLspIsReachabilityTlvIter) appendHolderSlice(item IsisLspIsReachabilityTlv) IsisLspTlvsIsisLspIsReachabilityTlvIter { - obj.isisLspIsReachabilityTlvSlice = append(obj.isisLspIsReachabilityTlvSlice, item) - return obj + return string(protoMarshal), nil } -// Array of Extended IS-Reachability TLVs (type 22) present in this LSP. -// ExtendedIsReachabilityTlvs returns a []IsisLspExtendedIsReachabilityTlv -func (obj *isisLspTlvs) ExtendedIsReachabilityTlvs() IsisLspTlvsIsisLspExtendedIsReachabilityTlvIter { - if len(obj.obj.ExtendedIsReachabilityTlvs) == 0 { - obj.obj.ExtendedIsReachabilityTlvs = []*otg.IsisLspExtendedIsReachabilityTlv{} +func (obj *actionResponseProtocolIpv6) FromPbText(value string) error { + retObj := proto.Unmarshal([]byte(value), obj.Msg()) + if retObj != nil { + return retObj } - if obj.extendedIsReachabilityTlvsHolder == nil { - obj.extendedIsReachabilityTlvsHolder = newIsisLspTlvsIsisLspExtendedIsReachabilityTlvIter(&obj.obj.ExtendedIsReachabilityTlvs).setMsg(obj) + obj.setNil() + vErr := obj.validateToAndFrom() + if vErr != nil { + return vErr } - return obj.extendedIsReachabilityTlvsHolder + return retObj } -type isisLspTlvsIsisLspExtendedIsReachabilityTlvIter struct { - obj *isisLspTlvs - isisLspExtendedIsReachabilityTlvSlice []IsisLspExtendedIsReachabilityTlv - fieldPtr *[]*otg.IsisLspExtendedIsReachabilityTlv +func (obj *actionResponseProtocolIpv6) ToYaml() (string, error) { + vErr := obj.validateToAndFrom() + if vErr != nil { + return "", vErr + } + opts := protojson.MarshalOptions{ + UseProtoNames: true, + AllowPartial: true, + EmitUnpopulated: false, + } + data, err := opts.Marshal(obj.Msg()) + if err != nil { + return "", err + } + data, err = yaml.JSONToYAML(data) + if err != nil { + return "", err + } + return string(data), nil } -func newIsisLspTlvsIsisLspExtendedIsReachabilityTlvIter(ptr *[]*otg.IsisLspExtendedIsReachabilityTlv) IsisLspTlvsIsisLspExtendedIsReachabilityTlvIter { - return &isisLspTlvsIsisLspExtendedIsReachabilityTlvIter{fieldPtr: ptr} +func (obj *actionResponseProtocolIpv6) FromYaml(value string) error { + if value == "" { + value = "{}" + } + data, err := yaml.YAMLToJSON([]byte(value)) + if err != nil { + return err + } + opts := protojson.UnmarshalOptions{ + AllowPartial: true, + DiscardUnknown: false, + } + uError := opts.Unmarshal([]byte(data), obj.Msg()) + if uError != nil { + return fmt.Errorf("unmarshal error %s", strings.Replace( + uError.Error(), "\u00a0", " ", -1)[7:]) + } + obj.setNil() + vErr := obj.validateToAndFrom() + if vErr != nil { + return vErr + } + return nil } -type IsisLspTlvsIsisLspExtendedIsReachabilityTlvIter interface { - setMsg(*isisLspTlvs) IsisLspTlvsIsisLspExtendedIsReachabilityTlvIter - Items() []IsisLspExtendedIsReachabilityTlv - Add() IsisLspExtendedIsReachabilityTlv - Append(items ...IsisLspExtendedIsReachabilityTlv) IsisLspTlvsIsisLspExtendedIsReachabilityTlvIter - Set(index int, newObj IsisLspExtendedIsReachabilityTlv) IsisLspTlvsIsisLspExtendedIsReachabilityTlvIter - Clear() IsisLspTlvsIsisLspExtendedIsReachabilityTlvIter - clearHolderSlice() IsisLspTlvsIsisLspExtendedIsReachabilityTlvIter - appendHolderSlice(item IsisLspExtendedIsReachabilityTlv) IsisLspTlvsIsisLspExtendedIsReachabilityTlvIter +func (obj *actionResponseProtocolIpv6) ToJson() (string, error) { + vErr := obj.validateToAndFrom() + if vErr != nil { + return "", vErr + } + opts := protojson.MarshalOptions{ + UseProtoNames: true, + AllowPartial: true, + EmitUnpopulated: false, + Indent: " ", + } + data, err := opts.Marshal(obj.Msg()) + if err != nil { + return "", err + } + return string(data), nil } -func (obj *isisLspTlvsIsisLspExtendedIsReachabilityTlvIter) setMsg(msg *isisLspTlvs) IsisLspTlvsIsisLspExtendedIsReachabilityTlvIter { - obj.clearHolderSlice() - for _, val := range *obj.fieldPtr { - obj.appendHolderSlice(&isisLspExtendedIsReachabilityTlv{obj: val}) +func (obj *actionResponseProtocolIpv6) FromJson(value string) error { + opts := protojson.UnmarshalOptions{ + AllowPartial: true, + DiscardUnknown: false, } - obj.obj = msg - return obj + if value == "" { + value = "{}" + } + uError := opts.Unmarshal([]byte(value), obj.Msg()) + if uError != nil { + return fmt.Errorf("unmarshal error %s", strings.Replace( + uError.Error(), "\u00a0", " ", -1)[7:]) + } + obj.setNil() + err := obj.validateToAndFrom() + if err != nil { + return err + } + return nil } -func (obj *isisLspTlvsIsisLspExtendedIsReachabilityTlvIter) Items() []IsisLspExtendedIsReachabilityTlv { - return obj.isisLspExtendedIsReachabilityTlvSlice +func (obj *actionResponseProtocolIpv6) validateToAndFrom() error { + // emptyVars() + obj.validateObj(&obj.validation, true) + return obj.validationResult() } -func (obj *isisLspTlvsIsisLspExtendedIsReachabilityTlvIter) Add() IsisLspExtendedIsReachabilityTlv { - newObj := &otg.IsisLspExtendedIsReachabilityTlv{} - *obj.fieldPtr = append(*obj.fieldPtr, newObj) - newLibObj := &isisLspExtendedIsReachabilityTlv{obj: newObj} - newLibObj.setDefault() - obj.isisLspExtendedIsReachabilityTlvSlice = append(obj.isisLspExtendedIsReachabilityTlvSlice, newLibObj) - return newLibObj +func (obj *actionResponseProtocolIpv6) Validate() error { + // emptyVars() + obj.validateObj(&obj.validation, false) + return obj.validationResult() } -func (obj *isisLspTlvsIsisLspExtendedIsReachabilityTlvIter) Append(items ...IsisLspExtendedIsReachabilityTlv) IsisLspTlvsIsisLspExtendedIsReachabilityTlvIter { - for _, item := range items { - newObj := item.Msg() - *obj.fieldPtr = append(*obj.fieldPtr, newObj) - obj.isisLspExtendedIsReachabilityTlvSlice = append(obj.isisLspExtendedIsReachabilityTlvSlice, item) +func (obj *actionResponseProtocolIpv6) String() string { + str, err := obj.ToYaml() + if err != nil { + return err.Error() } - return obj + return str } -func (obj *isisLspTlvsIsisLspExtendedIsReachabilityTlvIter) Set(index int, newObj IsisLspExtendedIsReachabilityTlv) IsisLspTlvsIsisLspExtendedIsReachabilityTlvIter { - (*obj.fieldPtr)[index] = newObj.Msg() - obj.isisLspExtendedIsReachabilityTlvSlice[index] = newObj - return obj -} -func (obj *isisLspTlvsIsisLspExtendedIsReachabilityTlvIter) Clear() IsisLspTlvsIsisLspExtendedIsReachabilityTlvIter { - if len(*obj.fieldPtr) > 0 { - *obj.fieldPtr = []*otg.IsisLspExtendedIsReachabilityTlv{} - obj.isisLspExtendedIsReachabilityTlvSlice = []IsisLspExtendedIsReachabilityTlv{} - } - return obj -} -func (obj *isisLspTlvsIsisLspExtendedIsReachabilityTlvIter) clearHolderSlice() IsisLspTlvsIsisLspExtendedIsReachabilityTlvIter { - if len(obj.isisLspExtendedIsReachabilityTlvSlice) > 0 { - obj.isisLspExtendedIsReachabilityTlvSlice = []IsisLspExtendedIsReachabilityTlv{} +func (obj *actionResponseProtocolIpv6) Clone() (ActionResponseProtocolIpv6, error) { + vErr := obj.Validate() + if vErr != nil { + return nil, vErr } - return obj -} -func (obj *isisLspTlvsIsisLspExtendedIsReachabilityTlvIter) appendHolderSlice(item IsisLspExtendedIsReachabilityTlv) IsisLspTlvsIsisLspExtendedIsReachabilityTlvIter { - obj.isisLspExtendedIsReachabilityTlvSlice = append(obj.isisLspExtendedIsReachabilityTlvSlice, item) - return obj -} - -// Array of IPv4 Internal Reachability TLVs (type 128) present in this LSP. -// Ipv4InternalReachabilityTlvs returns a []IsisLspIpv4InternalReachabilityTlv -func (obj *isisLspTlvs) Ipv4InternalReachabilityTlvs() IsisLspTlvsIsisLspIpv4InternalReachabilityTlvIter { - if len(obj.obj.Ipv4InternalReachabilityTlvs) == 0 { - obj.obj.Ipv4InternalReachabilityTlvs = []*otg.IsisLspIpv4InternalReachabilityTlv{} + newObj := NewActionResponseProtocolIpv6() + data, err := proto.Marshal(obj.Msg()) + if err != nil { + return nil, err } - if obj.ipv4InternalReachabilityTlvsHolder == nil { - obj.ipv4InternalReachabilityTlvsHolder = newIsisLspTlvsIsisLspIpv4InternalReachabilityTlvIter(&obj.obj.Ipv4InternalReachabilityTlvs).setMsg(obj) + pbErr := proto.Unmarshal(data, newObj.Msg()) + if pbErr != nil { + return nil, pbErr } - return obj.ipv4InternalReachabilityTlvsHolder -} - -type isisLspTlvsIsisLspIpv4InternalReachabilityTlvIter struct { - obj *isisLspTlvs - isisLspIpv4InternalReachabilityTlvSlice []IsisLspIpv4InternalReachabilityTlv - fieldPtr *[]*otg.IsisLspIpv4InternalReachabilityTlv + return newObj, nil } -func newIsisLspTlvsIsisLspIpv4InternalReachabilityTlvIter(ptr *[]*otg.IsisLspIpv4InternalReachabilityTlv) IsisLspTlvsIsisLspIpv4InternalReachabilityTlvIter { - return &isisLspTlvsIsisLspIpv4InternalReachabilityTlvIter{fieldPtr: ptr} +func (obj *actionResponseProtocolIpv6) setNil() { + obj.pingHolder = nil + obj.validationErrors = nil + obj.warnings = nil + obj.constraints = make(map[string]map[string]Constraints) } -type IsisLspTlvsIsisLspIpv4InternalReachabilityTlvIter interface { - setMsg(*isisLspTlvs) IsisLspTlvsIsisLspIpv4InternalReachabilityTlvIter - Items() []IsisLspIpv4InternalReachabilityTlv - Add() IsisLspIpv4InternalReachabilityTlv - Append(items ...IsisLspIpv4InternalReachabilityTlv) IsisLspTlvsIsisLspIpv4InternalReachabilityTlvIter - Set(index int, newObj IsisLspIpv4InternalReachabilityTlv) IsisLspTlvsIsisLspIpv4InternalReachabilityTlvIter - Clear() IsisLspTlvsIsisLspIpv4InternalReachabilityTlvIter - clearHolderSlice() IsisLspTlvsIsisLspIpv4InternalReachabilityTlvIter - appendHolderSlice(item IsisLspIpv4InternalReachabilityTlv) IsisLspTlvsIsisLspIpv4InternalReachabilityTlvIter +// ActionResponseProtocolIpv6 is response for actions associated with IPv6 on configured resources. +type ActionResponseProtocolIpv6 interface { + Validation + // Msg marshals ActionResponseProtocolIpv6 to protobuf object *otg.ActionResponseProtocolIpv6 + // and doesn't set defaults + Msg() *otg.ActionResponseProtocolIpv6 + // SetMsg unmarshals ActionResponseProtocolIpv6 from protobuf object *otg.ActionResponseProtocolIpv6 + // and doesn't set defaults + SetMsg(*otg.ActionResponseProtocolIpv6) ActionResponseProtocolIpv6 + // ToProto marshals ActionResponseProtocolIpv6 to protobuf object *otg.ActionResponseProtocolIpv6 + ToProto() (*otg.ActionResponseProtocolIpv6, error) + // ToPbText marshals ActionResponseProtocolIpv6 to protobuf text + ToPbText() (string, error) + // ToYaml marshals ActionResponseProtocolIpv6 to YAML text + ToYaml() (string, error) + // ToJson marshals ActionResponseProtocolIpv6 to JSON text + ToJson() (string, error) + // FromProto unmarshals ActionResponseProtocolIpv6 from protobuf object *otg.ActionResponseProtocolIpv6 + FromProto(msg *otg.ActionResponseProtocolIpv6) (ActionResponseProtocolIpv6, error) + // FromPbText unmarshals ActionResponseProtocolIpv6 from protobuf text + FromPbText(value string) error + // FromYaml unmarshals ActionResponseProtocolIpv6 from YAML text + FromYaml(value string) error + // FromJson unmarshals ActionResponseProtocolIpv6 from JSON text + FromJson(value string) error + // Validate validates ActionResponseProtocolIpv6 + Validate() error + // A stringer function + String() string + // Clones the object + Clone() (ActionResponseProtocolIpv6, error) + validateToAndFrom() error + validateObj(vObj *validation, set_default bool) + setDefault() + // Choice returns ActionResponseProtocolIpv6ChoiceEnum, set in ActionResponseProtocolIpv6 + Choice() ActionResponseProtocolIpv6ChoiceEnum + // SetChoice assigns ActionResponseProtocolIpv6ChoiceEnum provided by user to ActionResponseProtocolIpv6 + SetChoice(value ActionResponseProtocolIpv6ChoiceEnum) ActionResponseProtocolIpv6 + // Ping returns ActionResponseProtocolIpv6Ping, set in ActionResponseProtocolIpv6. + // ActionResponseProtocolIpv6Ping is response for ping initiated between multiple source and destination pairs. + Ping() ActionResponseProtocolIpv6Ping + // SetPing assigns ActionResponseProtocolIpv6Ping provided by user to ActionResponseProtocolIpv6. + // ActionResponseProtocolIpv6Ping is response for ping initiated between multiple source and destination pairs. + SetPing(value ActionResponseProtocolIpv6Ping) ActionResponseProtocolIpv6 + // HasPing checks if Ping has been set in ActionResponseProtocolIpv6 + HasPing() bool + setNil() } -func (obj *isisLspTlvsIsisLspIpv4InternalReachabilityTlvIter) setMsg(msg *isisLspTlvs) IsisLspTlvsIsisLspIpv4InternalReachabilityTlvIter { - obj.clearHolderSlice() - for _, val := range *obj.fieldPtr { - obj.appendHolderSlice(&isisLspIpv4InternalReachabilityTlv{obj: val}) - } - obj.obj = msg - return obj -} +type ActionResponseProtocolIpv6ChoiceEnum string -func (obj *isisLspTlvsIsisLspIpv4InternalReachabilityTlvIter) Items() []IsisLspIpv4InternalReachabilityTlv { - return obj.isisLspIpv4InternalReachabilityTlvSlice +// Enum of Choice on ActionResponseProtocolIpv6 +var ActionResponseProtocolIpv6Choice = struct { + PING ActionResponseProtocolIpv6ChoiceEnum +}{ + PING: ActionResponseProtocolIpv6ChoiceEnum("ping"), } -func (obj *isisLspTlvsIsisLspIpv4InternalReachabilityTlvIter) Add() IsisLspIpv4InternalReachabilityTlv { - newObj := &otg.IsisLspIpv4InternalReachabilityTlv{} - *obj.fieldPtr = append(*obj.fieldPtr, newObj) - newLibObj := &isisLspIpv4InternalReachabilityTlv{obj: newObj} - newLibObj.setDefault() - obj.isisLspIpv4InternalReachabilityTlvSlice = append(obj.isisLspIpv4InternalReachabilityTlvSlice, newLibObj) - return newLibObj +func (obj *actionResponseProtocolIpv6) Choice() ActionResponseProtocolIpv6ChoiceEnum { + return ActionResponseProtocolIpv6ChoiceEnum(obj.obj.Choice.Enum().String()) } -func (obj *isisLspTlvsIsisLspIpv4InternalReachabilityTlvIter) Append(items ...IsisLspIpv4InternalReachabilityTlv) IsisLspTlvsIsisLspIpv4InternalReachabilityTlvIter { - for _, item := range items { - newObj := item.Msg() - *obj.fieldPtr = append(*obj.fieldPtr, newObj) - obj.isisLspIpv4InternalReachabilityTlvSlice = append(obj.isisLspIpv4InternalReachabilityTlvSlice, item) +func (obj *actionResponseProtocolIpv6) SetChoice(value ActionResponseProtocolIpv6ChoiceEnum) ActionResponseProtocolIpv6 { + intValue, ok := otg.ActionResponseProtocolIpv6_Choice_Enum_value[string(value)] + if !ok { + obj.validationErrors = append(obj.validationErrors, fmt.Sprintf( + "%s is not a valid choice on ActionResponseProtocolIpv6ChoiceEnum", string(value))) + return obj } - return obj -} + enumValue := otg.ActionResponseProtocolIpv6_Choice_Enum(intValue) + obj.obj.Choice = &enumValue + obj.obj.Ping = nil + obj.pingHolder = nil -func (obj *isisLspTlvsIsisLspIpv4InternalReachabilityTlvIter) Set(index int, newObj IsisLspIpv4InternalReachabilityTlv) IsisLspTlvsIsisLspIpv4InternalReachabilityTlvIter { - (*obj.fieldPtr)[index] = newObj.Msg() - obj.isisLspIpv4InternalReachabilityTlvSlice[index] = newObj - return obj -} -func (obj *isisLspTlvsIsisLspIpv4InternalReachabilityTlvIter) Clear() IsisLspTlvsIsisLspIpv4InternalReachabilityTlvIter { - if len(*obj.fieldPtr) > 0 { - *obj.fieldPtr = []*otg.IsisLspIpv4InternalReachabilityTlv{} - obj.isisLspIpv4InternalReachabilityTlvSlice = []IsisLspIpv4InternalReachabilityTlv{} - } - return obj -} -func (obj *isisLspTlvsIsisLspIpv4InternalReachabilityTlvIter) clearHolderSlice() IsisLspTlvsIsisLspIpv4InternalReachabilityTlvIter { - if len(obj.isisLspIpv4InternalReachabilityTlvSlice) > 0 { - obj.isisLspIpv4InternalReachabilityTlvSlice = []IsisLspIpv4InternalReachabilityTlv{} + if value == ActionResponseProtocolIpv6Choice.PING { + obj.obj.Ping = NewActionResponseProtocolIpv6Ping().Msg() } - return obj -} -func (obj *isisLspTlvsIsisLspIpv4InternalReachabilityTlvIter) appendHolderSlice(item IsisLspIpv4InternalReachabilityTlv) IsisLspTlvsIsisLspIpv4InternalReachabilityTlvIter { - obj.isisLspIpv4InternalReachabilityTlvSlice = append(obj.isisLspIpv4InternalReachabilityTlvSlice, item) + return obj } -// Array of IPv4 External Reachability TLVs (type 130) present in this LSP. -// Ipv4ExternalReachabilityTlvs returns a []IsisLspIpv4ExternalReachabilityTlv -func (obj *isisLspTlvs) Ipv4ExternalReachabilityTlvs() IsisLspTlvsIsisLspIpv4ExternalReachabilityTlvIter { - if len(obj.obj.Ipv4ExternalReachabilityTlvs) == 0 { - obj.obj.Ipv4ExternalReachabilityTlvs = []*otg.IsisLspIpv4ExternalReachabilityTlv{} +// description is TBD +// Ping returns a ActionResponseProtocolIpv6Ping +func (obj *actionResponseProtocolIpv6) Ping() ActionResponseProtocolIpv6Ping { + if obj.obj.Ping == nil { + obj.SetChoice(ActionResponseProtocolIpv6Choice.PING) } - if obj.ipv4ExternalReachabilityTlvsHolder == nil { - obj.ipv4ExternalReachabilityTlvsHolder = newIsisLspTlvsIsisLspIpv4ExternalReachabilityTlvIter(&obj.obj.Ipv4ExternalReachabilityTlvs).setMsg(obj) + if obj.pingHolder == nil { + obj.pingHolder = &actionResponseProtocolIpv6Ping{obj: obj.obj.Ping} } - return obj.ipv4ExternalReachabilityTlvsHolder + return obj.pingHolder } -type isisLspTlvsIsisLspIpv4ExternalReachabilityTlvIter struct { - obj *isisLspTlvs - isisLspIpv4ExternalReachabilityTlvSlice []IsisLspIpv4ExternalReachabilityTlv - fieldPtr *[]*otg.IsisLspIpv4ExternalReachabilityTlv +// description is TBD +// Ping returns a ActionResponseProtocolIpv6Ping +func (obj *actionResponseProtocolIpv6) HasPing() bool { + return obj.obj.Ping != nil } -func newIsisLspTlvsIsisLspIpv4ExternalReachabilityTlvIter(ptr *[]*otg.IsisLspIpv4ExternalReachabilityTlv) IsisLspTlvsIsisLspIpv4ExternalReachabilityTlvIter { - return &isisLspTlvsIsisLspIpv4ExternalReachabilityTlvIter{fieldPtr: ptr} -} +// description is TBD +// SetPing sets the ActionResponseProtocolIpv6Ping value in the ActionResponseProtocolIpv6 object +func (obj *actionResponseProtocolIpv6) SetPing(value ActionResponseProtocolIpv6Ping) ActionResponseProtocolIpv6 { + obj.SetChoice(ActionResponseProtocolIpv6Choice.PING) + obj.pingHolder = nil + obj.obj.Ping = value.Msg() -type IsisLspTlvsIsisLspIpv4ExternalReachabilityTlvIter interface { - setMsg(*isisLspTlvs) IsisLspTlvsIsisLspIpv4ExternalReachabilityTlvIter - Items() []IsisLspIpv4ExternalReachabilityTlv - Add() IsisLspIpv4ExternalReachabilityTlv - Append(items ...IsisLspIpv4ExternalReachabilityTlv) IsisLspTlvsIsisLspIpv4ExternalReachabilityTlvIter - Set(index int, newObj IsisLspIpv4ExternalReachabilityTlv) IsisLspTlvsIsisLspIpv4ExternalReachabilityTlvIter - Clear() IsisLspTlvsIsisLspIpv4ExternalReachabilityTlvIter - clearHolderSlice() IsisLspTlvsIsisLspIpv4ExternalReachabilityTlvIter - appendHolderSlice(item IsisLspIpv4ExternalReachabilityTlv) IsisLspTlvsIsisLspIpv4ExternalReachabilityTlvIter + return obj } -func (obj *isisLspTlvsIsisLspIpv4ExternalReachabilityTlvIter) setMsg(msg *isisLspTlvs) IsisLspTlvsIsisLspIpv4ExternalReachabilityTlvIter { - obj.clearHolderSlice() - for _, val := range *obj.fieldPtr { - obj.appendHolderSlice(&isisLspIpv4ExternalReachabilityTlv{obj: val}) +func (obj *actionResponseProtocolIpv6) validateObj(vObj *validation, set_default bool) { + if set_default { + obj.setDefault() } - obj.obj = msg - return obj -} -func (obj *isisLspTlvsIsisLspIpv4ExternalReachabilityTlvIter) Items() []IsisLspIpv4ExternalReachabilityTlv { - return obj.isisLspIpv4ExternalReachabilityTlvSlice -} + // Choice is required + if obj.obj.Choice == nil { + vObj.validationErrors = append(vObj.validationErrors, "Choice is required field on interface ActionResponseProtocolIpv6") + } -func (obj *isisLspTlvsIsisLspIpv4ExternalReachabilityTlvIter) Add() IsisLspIpv4ExternalReachabilityTlv { - newObj := &otg.IsisLspIpv4ExternalReachabilityTlv{} - *obj.fieldPtr = append(*obj.fieldPtr, newObj) - newLibObj := &isisLspIpv4ExternalReachabilityTlv{obj: newObj} - newLibObj.setDefault() - obj.isisLspIpv4ExternalReachabilityTlvSlice = append(obj.isisLspIpv4ExternalReachabilityTlvSlice, newLibObj) - return newLibObj -} + if obj.obj.Ping != nil { -func (obj *isisLspTlvsIsisLspIpv4ExternalReachabilityTlvIter) Append(items ...IsisLspIpv4ExternalReachabilityTlv) IsisLspTlvsIsisLspIpv4ExternalReachabilityTlvIter { - for _, item := range items { - newObj := item.Msg() - *obj.fieldPtr = append(*obj.fieldPtr, newObj) - obj.isisLspIpv4ExternalReachabilityTlvSlice = append(obj.isisLspIpv4ExternalReachabilityTlvSlice, item) + obj.Ping().validateObj(vObj, set_default) } - return obj -} -func (obj *isisLspTlvsIsisLspIpv4ExternalReachabilityTlvIter) Set(index int, newObj IsisLspIpv4ExternalReachabilityTlv) IsisLspTlvsIsisLspIpv4ExternalReachabilityTlvIter { - (*obj.fieldPtr)[index] = newObj.Msg() - obj.isisLspIpv4ExternalReachabilityTlvSlice[index] = newObj - return obj -} -func (obj *isisLspTlvsIsisLspIpv4ExternalReachabilityTlvIter) Clear() IsisLspTlvsIsisLspIpv4ExternalReachabilityTlvIter { - if len(*obj.fieldPtr) > 0 { - *obj.fieldPtr = []*otg.IsisLspIpv4ExternalReachabilityTlv{} - obj.isisLspIpv4ExternalReachabilityTlvSlice = []IsisLspIpv4ExternalReachabilityTlv{} - } - return obj -} -func (obj *isisLspTlvsIsisLspIpv4ExternalReachabilityTlvIter) clearHolderSlice() IsisLspTlvsIsisLspIpv4ExternalReachabilityTlvIter { - if len(obj.isisLspIpv4ExternalReachabilityTlvSlice) > 0 { - obj.isisLspIpv4ExternalReachabilityTlvSlice = []IsisLspIpv4ExternalReachabilityTlv{} - } - return obj -} -func (obj *isisLspTlvsIsisLspIpv4ExternalReachabilityTlvIter) appendHolderSlice(item IsisLspIpv4ExternalReachabilityTlv) IsisLspTlvsIsisLspIpv4ExternalReachabilityTlvIter { - obj.isisLspIpv4ExternalReachabilityTlvSlice = append(obj.isisLspIpv4ExternalReachabilityTlvSlice, item) - return obj } -// Array of IPv4 Extended Reachability TLVs (type 135) present in this LSP. -// ExtendedIpv4ReachabilityTlvs returns a []IsisLspExtendedIpv4ReachabilityTlv -func (obj *isisLspTlvs) ExtendedIpv4ReachabilityTlvs() IsisLspTlvsIsisLspExtendedIpv4ReachabilityTlvIter { - if len(obj.obj.ExtendedIpv4ReachabilityTlvs) == 0 { - obj.obj.ExtendedIpv4ReachabilityTlvs = []*otg.IsisLspExtendedIpv4ReachabilityTlv{} - } - if obj.extendedIpv4ReachabilityTlvsHolder == nil { - obj.extendedIpv4ReachabilityTlvsHolder = newIsisLspTlvsIsisLspExtendedIpv4ReachabilityTlvIter(&obj.obj.ExtendedIpv4ReachabilityTlvs).setMsg(obj) - } - return obj.extendedIpv4ReachabilityTlvsHolder -} +func (obj *actionResponseProtocolIpv6) setDefault() { -type isisLspTlvsIsisLspExtendedIpv4ReachabilityTlvIter struct { - obj *isisLspTlvs - isisLspExtendedIpv4ReachabilityTlvSlice []IsisLspExtendedIpv4ReachabilityTlv - fieldPtr *[]*otg.IsisLspExtendedIpv4ReachabilityTlv } -func newIsisLspTlvsIsisLspExtendedIpv4ReachabilityTlvIter(ptr *[]*otg.IsisLspExtendedIpv4ReachabilityTlv) IsisLspTlvsIsisLspExtendedIpv4ReachabilityTlvIter { - return &isisLspTlvsIsisLspExtendedIpv4ReachabilityTlvIter{fieldPtr: ptr} +// ***** FlowMetricTag ***** +type flowMetricTag struct { + validation + obj *otg.FlowMetricTag + valueHolder FlowMetricTagValue } -type IsisLspTlvsIsisLspExtendedIpv4ReachabilityTlvIter interface { - setMsg(*isisLspTlvs) IsisLspTlvsIsisLspExtendedIpv4ReachabilityTlvIter - Items() []IsisLspExtendedIpv4ReachabilityTlv - Add() IsisLspExtendedIpv4ReachabilityTlv - Append(items ...IsisLspExtendedIpv4ReachabilityTlv) IsisLspTlvsIsisLspExtendedIpv4ReachabilityTlvIter - Set(index int, newObj IsisLspExtendedIpv4ReachabilityTlv) IsisLspTlvsIsisLspExtendedIpv4ReachabilityTlvIter - Clear() IsisLspTlvsIsisLspExtendedIpv4ReachabilityTlvIter - clearHolderSlice() IsisLspTlvsIsisLspExtendedIpv4ReachabilityTlvIter - appendHolderSlice(item IsisLspExtendedIpv4ReachabilityTlv) IsisLspTlvsIsisLspExtendedIpv4ReachabilityTlvIter +func NewFlowMetricTag() FlowMetricTag { + obj := flowMetricTag{obj: &otg.FlowMetricTag{}} + obj.setDefault() + return &obj } -func (obj *isisLspTlvsIsisLspExtendedIpv4ReachabilityTlvIter) setMsg(msg *isisLspTlvs) IsisLspTlvsIsisLspExtendedIpv4ReachabilityTlvIter { - obj.clearHolderSlice() - for _, val := range *obj.fieldPtr { - obj.appendHolderSlice(&isisLspExtendedIpv4ReachabilityTlv{obj: val}) - } - obj.obj = msg - return obj +func (obj *flowMetricTag) Msg() *otg.FlowMetricTag { + return obj.obj } -func (obj *isisLspTlvsIsisLspExtendedIpv4ReachabilityTlvIter) Items() []IsisLspExtendedIpv4ReachabilityTlv { - return obj.isisLspExtendedIpv4ReachabilityTlvSlice +func (obj *flowMetricTag) SetMsg(msg *otg.FlowMetricTag) FlowMetricTag { + obj.setNil() + proto.Merge(obj.obj, msg) + return obj } -func (obj *isisLspTlvsIsisLspExtendedIpv4ReachabilityTlvIter) Add() IsisLspExtendedIpv4ReachabilityTlv { - newObj := &otg.IsisLspExtendedIpv4ReachabilityTlv{} - *obj.fieldPtr = append(*obj.fieldPtr, newObj) - newLibObj := &isisLspExtendedIpv4ReachabilityTlv{obj: newObj} - newLibObj.setDefault() - obj.isisLspExtendedIpv4ReachabilityTlvSlice = append(obj.isisLspExtendedIpv4ReachabilityTlvSlice, newLibObj) - return newLibObj +func (obj *flowMetricTag) ToProto() (*otg.FlowMetricTag, error) { + err := obj.validateToAndFrom() + if err != nil { + return nil, err + } + return obj.Msg(), nil } -func (obj *isisLspTlvsIsisLspExtendedIpv4ReachabilityTlvIter) Append(items ...IsisLspExtendedIpv4ReachabilityTlv) IsisLspTlvsIsisLspExtendedIpv4ReachabilityTlvIter { - for _, item := range items { - newObj := item.Msg() - *obj.fieldPtr = append(*obj.fieldPtr, newObj) - obj.isisLspExtendedIpv4ReachabilityTlvSlice = append(obj.isisLspExtendedIpv4ReachabilityTlvSlice, item) +func (obj *flowMetricTag) FromProto(msg *otg.FlowMetricTag) (FlowMetricTag, error) { + newObj := obj.SetMsg(msg) + err := newObj.validateToAndFrom() + if err != nil { + return nil, err } - return obj + return newObj, nil } -func (obj *isisLspTlvsIsisLspExtendedIpv4ReachabilityTlvIter) Set(index int, newObj IsisLspExtendedIpv4ReachabilityTlv) IsisLspTlvsIsisLspExtendedIpv4ReachabilityTlvIter { - (*obj.fieldPtr)[index] = newObj.Msg() - obj.isisLspExtendedIpv4ReachabilityTlvSlice[index] = newObj - return obj -} -func (obj *isisLspTlvsIsisLspExtendedIpv4ReachabilityTlvIter) Clear() IsisLspTlvsIsisLspExtendedIpv4ReachabilityTlvIter { - if len(*obj.fieldPtr) > 0 { - *obj.fieldPtr = []*otg.IsisLspExtendedIpv4ReachabilityTlv{} - obj.isisLspExtendedIpv4ReachabilityTlvSlice = []IsisLspExtendedIpv4ReachabilityTlv{} +func (obj *flowMetricTag) ToPbText() (string, error) { + vErr := obj.validateToAndFrom() + if vErr != nil { + return "", vErr } - return obj -} -func (obj *isisLspTlvsIsisLspExtendedIpv4ReachabilityTlvIter) clearHolderSlice() IsisLspTlvsIsisLspExtendedIpv4ReachabilityTlvIter { - if len(obj.isisLspExtendedIpv4ReachabilityTlvSlice) > 0 { - obj.isisLspExtendedIpv4ReachabilityTlvSlice = []IsisLspExtendedIpv4ReachabilityTlv{} + protoMarshal, err := proto.Marshal(obj.Msg()) + if err != nil { + return "", err } - return obj -} -func (obj *isisLspTlvsIsisLspExtendedIpv4ReachabilityTlvIter) appendHolderSlice(item IsisLspExtendedIpv4ReachabilityTlv) IsisLspTlvsIsisLspExtendedIpv4ReachabilityTlvIter { - obj.isisLspExtendedIpv4ReachabilityTlvSlice = append(obj.isisLspExtendedIpv4ReachabilityTlvSlice, item) - return obj + return string(protoMarshal), nil } -// Array of IPv6 Reachability TLVs (type 236) present in this LSP. -// Ipv6ReachabilityTlvs returns a []IsisLspIpv6ReachabilityTlv -func (obj *isisLspTlvs) Ipv6ReachabilityTlvs() IsisLspTlvsIsisLspIpv6ReachabilityTlvIter { - if len(obj.obj.Ipv6ReachabilityTlvs) == 0 { - obj.obj.Ipv6ReachabilityTlvs = []*otg.IsisLspIpv6ReachabilityTlv{} +func (obj *flowMetricTag) FromPbText(value string) error { + retObj := proto.Unmarshal([]byte(value), obj.Msg()) + if retObj != nil { + return retObj } - if obj.ipv6ReachabilityTlvsHolder == nil { - obj.ipv6ReachabilityTlvsHolder = newIsisLspTlvsIsisLspIpv6ReachabilityTlvIter(&obj.obj.Ipv6ReachabilityTlvs).setMsg(obj) + obj.setNil() + vErr := obj.validateToAndFrom() + if vErr != nil { + return vErr } - return obj.ipv6ReachabilityTlvsHolder + return retObj } -type isisLspTlvsIsisLspIpv6ReachabilityTlvIter struct { - obj *isisLspTlvs - isisLspIpv6ReachabilityTlvSlice []IsisLspIpv6ReachabilityTlv - fieldPtr *[]*otg.IsisLspIpv6ReachabilityTlv +func (obj *flowMetricTag) ToYaml() (string, error) { + vErr := obj.validateToAndFrom() + if vErr != nil { + return "", vErr + } + opts := protojson.MarshalOptions{ + UseProtoNames: true, + AllowPartial: true, + EmitUnpopulated: false, + } + data, err := opts.Marshal(obj.Msg()) + if err != nil { + return "", err + } + data, err = yaml.JSONToYAML(data) + if err != nil { + return "", err + } + return string(data), nil } -func newIsisLspTlvsIsisLspIpv6ReachabilityTlvIter(ptr *[]*otg.IsisLspIpv6ReachabilityTlv) IsisLspTlvsIsisLspIpv6ReachabilityTlvIter { - return &isisLspTlvsIsisLspIpv6ReachabilityTlvIter{fieldPtr: ptr} +func (obj *flowMetricTag) FromYaml(value string) error { + if value == "" { + value = "{}" + } + data, err := yaml.YAMLToJSON([]byte(value)) + if err != nil { + return err + } + opts := protojson.UnmarshalOptions{ + AllowPartial: true, + DiscardUnknown: false, + } + uError := opts.Unmarshal([]byte(data), obj.Msg()) + if uError != nil { + return fmt.Errorf("unmarshal error %s", strings.Replace( + uError.Error(), "\u00a0", " ", -1)[7:]) + } + obj.setNil() + vErr := obj.validateToAndFrom() + if vErr != nil { + return vErr + } + return nil } -type IsisLspTlvsIsisLspIpv6ReachabilityTlvIter interface { - setMsg(*isisLspTlvs) IsisLspTlvsIsisLspIpv6ReachabilityTlvIter - Items() []IsisLspIpv6ReachabilityTlv - Add() IsisLspIpv6ReachabilityTlv - Append(items ...IsisLspIpv6ReachabilityTlv) IsisLspTlvsIsisLspIpv6ReachabilityTlvIter - Set(index int, newObj IsisLspIpv6ReachabilityTlv) IsisLspTlvsIsisLspIpv6ReachabilityTlvIter - Clear() IsisLspTlvsIsisLspIpv6ReachabilityTlvIter - clearHolderSlice() IsisLspTlvsIsisLspIpv6ReachabilityTlvIter - appendHolderSlice(item IsisLspIpv6ReachabilityTlv) IsisLspTlvsIsisLspIpv6ReachabilityTlvIter +func (obj *flowMetricTag) ToJson() (string, error) { + vErr := obj.validateToAndFrom() + if vErr != nil { + return "", vErr + } + opts := protojson.MarshalOptions{ + UseProtoNames: true, + AllowPartial: true, + EmitUnpopulated: false, + Indent: " ", + } + data, err := opts.Marshal(obj.Msg()) + if err != nil { + return "", err + } + return string(data), nil } -func (obj *isisLspTlvsIsisLspIpv6ReachabilityTlvIter) setMsg(msg *isisLspTlvs) IsisLspTlvsIsisLspIpv6ReachabilityTlvIter { - obj.clearHolderSlice() - for _, val := range *obj.fieldPtr { - obj.appendHolderSlice(&isisLspIpv6ReachabilityTlv{obj: val}) +func (obj *flowMetricTag) FromJson(value string) error { + opts := protojson.UnmarshalOptions{ + AllowPartial: true, + DiscardUnknown: false, } - obj.obj = msg - return obj + if value == "" { + value = "{}" + } + uError := opts.Unmarshal([]byte(value), obj.Msg()) + if uError != nil { + return fmt.Errorf("unmarshal error %s", strings.Replace( + uError.Error(), "\u00a0", " ", -1)[7:]) + } + obj.setNil() + err := obj.validateToAndFrom() + if err != nil { + return err + } + return nil } -func (obj *isisLspTlvsIsisLspIpv6ReachabilityTlvIter) Items() []IsisLspIpv6ReachabilityTlv { - return obj.isisLspIpv6ReachabilityTlvSlice +func (obj *flowMetricTag) validateToAndFrom() error { + // emptyVars() + obj.validateObj(&obj.validation, true) + return obj.validationResult() } -func (obj *isisLspTlvsIsisLspIpv6ReachabilityTlvIter) Add() IsisLspIpv6ReachabilityTlv { - newObj := &otg.IsisLspIpv6ReachabilityTlv{} - *obj.fieldPtr = append(*obj.fieldPtr, newObj) - newLibObj := &isisLspIpv6ReachabilityTlv{obj: newObj} - newLibObj.setDefault() - obj.isisLspIpv6ReachabilityTlvSlice = append(obj.isisLspIpv6ReachabilityTlvSlice, newLibObj) - return newLibObj +func (obj *flowMetricTag) Validate() error { + // emptyVars() + obj.validateObj(&obj.validation, false) + return obj.validationResult() } -func (obj *isisLspTlvsIsisLspIpv6ReachabilityTlvIter) Append(items ...IsisLspIpv6ReachabilityTlv) IsisLspTlvsIsisLspIpv6ReachabilityTlvIter { - for _, item := range items { - newObj := item.Msg() - *obj.fieldPtr = append(*obj.fieldPtr, newObj) - obj.isisLspIpv6ReachabilityTlvSlice = append(obj.isisLspIpv6ReachabilityTlvSlice, item) +func (obj *flowMetricTag) String() string { + str, err := obj.ToYaml() + if err != nil { + return err.Error() } - return obj + return str } -func (obj *isisLspTlvsIsisLspIpv6ReachabilityTlvIter) Set(index int, newObj IsisLspIpv6ReachabilityTlv) IsisLspTlvsIsisLspIpv6ReachabilityTlvIter { - (*obj.fieldPtr)[index] = newObj.Msg() - obj.isisLspIpv6ReachabilityTlvSlice[index] = newObj - return obj -} -func (obj *isisLspTlvsIsisLspIpv6ReachabilityTlvIter) Clear() IsisLspTlvsIsisLspIpv6ReachabilityTlvIter { - if len(*obj.fieldPtr) > 0 { - *obj.fieldPtr = []*otg.IsisLspIpv6ReachabilityTlv{} - obj.isisLspIpv6ReachabilityTlvSlice = []IsisLspIpv6ReachabilityTlv{} +func (obj *flowMetricTag) Clone() (FlowMetricTag, error) { + vErr := obj.Validate() + if vErr != nil { + return nil, vErr } - return obj -} -func (obj *isisLspTlvsIsisLspIpv6ReachabilityTlvIter) clearHolderSlice() IsisLspTlvsIsisLspIpv6ReachabilityTlvIter { - if len(obj.isisLspIpv6ReachabilityTlvSlice) > 0 { - obj.isisLspIpv6ReachabilityTlvSlice = []IsisLspIpv6ReachabilityTlv{} + newObj := NewFlowMetricTag() + data, err := proto.Marshal(obj.Msg()) + if err != nil { + return nil, err } - return obj -} -func (obj *isisLspTlvsIsisLspIpv6ReachabilityTlvIter) appendHolderSlice(item IsisLspIpv6ReachabilityTlv) IsisLspTlvsIsisLspIpv6ReachabilityTlvIter { - obj.isisLspIpv6ReachabilityTlvSlice = append(obj.isisLspIpv6ReachabilityTlvSlice, item) - return obj -} - -func (obj *isisLspTlvs) validateObj(vObj *validation, set_default bool) { - if set_default { - obj.setDefault() + pbErr := proto.Unmarshal(data, newObj.Msg()) + if pbErr != nil { + return nil, pbErr } + return newObj, nil +} - if len(obj.obj.HostnameTlvs) != 0 { +func (obj *flowMetricTag) setNil() { + obj.valueHolder = nil + obj.validationErrors = nil + obj.warnings = nil + obj.constraints = make(map[string]map[string]Constraints) +} - if set_default { - obj.HostnameTlvs().clearHolderSlice() - for _, item := range obj.obj.HostnameTlvs { - obj.HostnameTlvs().appendHolderSlice(&isisLspHostname{obj: item}) - } - } - for _, item := range obj.HostnameTlvs().Items() { - item.validateObj(vObj, set_default) - } +// FlowMetricTag is description is TBD +type FlowMetricTag interface { + Validation + // Msg marshals FlowMetricTag to protobuf object *otg.FlowMetricTag + // and doesn't set defaults + Msg() *otg.FlowMetricTag + // SetMsg unmarshals FlowMetricTag from protobuf object *otg.FlowMetricTag + // and doesn't set defaults + SetMsg(*otg.FlowMetricTag) FlowMetricTag + // ToProto marshals FlowMetricTag to protobuf object *otg.FlowMetricTag + ToProto() (*otg.FlowMetricTag, error) + // ToPbText marshals FlowMetricTag to protobuf text + ToPbText() (string, error) + // ToYaml marshals FlowMetricTag to YAML text + ToYaml() (string, error) + // ToJson marshals FlowMetricTag to JSON text + ToJson() (string, error) + // FromProto unmarshals FlowMetricTag from protobuf object *otg.FlowMetricTag + FromProto(msg *otg.FlowMetricTag) (FlowMetricTag, error) + // FromPbText unmarshals FlowMetricTag from protobuf text + FromPbText(value string) error + // FromYaml unmarshals FlowMetricTag from YAML text + FromYaml(value string) error + // FromJson unmarshals FlowMetricTag from JSON text + FromJson(value string) error + // Validate validates FlowMetricTag + Validate() error + // A stringer function + String() string + // Clones the object + Clone() (FlowMetricTag, error) + validateToAndFrom() error + validateObj(vObj *validation, set_default bool) + setDefault() + // Name returns string, set in FlowMetricTag. + Name() string + // SetName assigns string provided by user to FlowMetricTag + SetName(value string) FlowMetricTag + // HasName checks if Name has been set in FlowMetricTag + HasName() bool + // Value returns FlowMetricTagValue, set in FlowMetricTag. + // FlowMetricTagValue is a container for metric tag value + Value() FlowMetricTagValue + // SetValue assigns FlowMetricTagValue provided by user to FlowMetricTag. + // FlowMetricTagValue is a container for metric tag value + SetValue(value FlowMetricTagValue) FlowMetricTag + // HasValue checks if Value has been set in FlowMetricTag + HasValue() bool + setNil() +} - } +// Name of packet field metric tag +// Name returns a string +func (obj *flowMetricTag) Name() string { - if len(obj.obj.IsReachabilityTlvs) != 0 { + return *obj.obj.Name - if set_default { - obj.IsReachabilityTlvs().clearHolderSlice() - for _, item := range obj.obj.IsReachabilityTlvs { - obj.IsReachabilityTlvs().appendHolderSlice(&isisLspIsReachabilityTlv{obj: item}) - } - } - for _, item := range obj.IsReachabilityTlvs().Items() { - item.validateObj(vObj, set_default) - } +} - } +// Name of packet field metric tag +// Name returns a string +func (obj *flowMetricTag) HasName() bool { + return obj.obj.Name != nil +} - if len(obj.obj.ExtendedIsReachabilityTlvs) != 0 { +// Name of packet field metric tag +// SetName sets the string value in the FlowMetricTag object +func (obj *flowMetricTag) SetName(value string) FlowMetricTag { - if set_default { - obj.ExtendedIsReachabilityTlvs().clearHolderSlice() - for _, item := range obj.obj.ExtendedIsReachabilityTlvs { - obj.ExtendedIsReachabilityTlvs().appendHolderSlice(&isisLspExtendedIsReachabilityTlv{obj: item}) - } - } - for _, item := range obj.ExtendedIsReachabilityTlvs().Items() { - item.validateObj(vObj, set_default) - } + obj.obj.Name = &value + return obj +} +// description is TBD +// Value returns a FlowMetricTagValue +func (obj *flowMetricTag) Value() FlowMetricTagValue { + if obj.obj.Value == nil { + obj.obj.Value = NewFlowMetricTagValue().Msg() } - - if len(obj.obj.Ipv4InternalReachabilityTlvs) != 0 { - - if set_default { - obj.Ipv4InternalReachabilityTlvs().clearHolderSlice() - for _, item := range obj.obj.Ipv4InternalReachabilityTlvs { - obj.Ipv4InternalReachabilityTlvs().appendHolderSlice(&isisLspIpv4InternalReachabilityTlv{obj: item}) - } - } - for _, item := range obj.Ipv4InternalReachabilityTlvs().Items() { - item.validateObj(vObj, set_default) - } - + if obj.valueHolder == nil { + obj.valueHolder = &flowMetricTagValue{obj: obj.obj.Value} } + return obj.valueHolder +} - if len(obj.obj.Ipv4ExternalReachabilityTlvs) != 0 { - - if set_default { - obj.Ipv4ExternalReachabilityTlvs().clearHolderSlice() - for _, item := range obj.obj.Ipv4ExternalReachabilityTlvs { - obj.Ipv4ExternalReachabilityTlvs().appendHolderSlice(&isisLspIpv4ExternalReachabilityTlv{obj: item}) - } - } - for _, item := range obj.Ipv4ExternalReachabilityTlvs().Items() { - item.validateObj(vObj, set_default) - } +// description is TBD +// Value returns a FlowMetricTagValue +func (obj *flowMetricTag) HasValue() bool { + return obj.obj.Value != nil +} - } +// description is TBD +// SetValue sets the FlowMetricTagValue value in the FlowMetricTag object +func (obj *flowMetricTag) SetValue(value FlowMetricTagValue) FlowMetricTag { - if len(obj.obj.ExtendedIpv4ReachabilityTlvs) != 0 { + obj.valueHolder = nil + obj.obj.Value = value.Msg() - if set_default { - obj.ExtendedIpv4ReachabilityTlvs().clearHolderSlice() - for _, item := range obj.obj.ExtendedIpv4ReachabilityTlvs { - obj.ExtendedIpv4ReachabilityTlvs().appendHolderSlice(&isisLspExtendedIpv4ReachabilityTlv{obj: item}) - } - } - for _, item := range obj.ExtendedIpv4ReachabilityTlvs().Items() { - item.validateObj(vObj, set_default) - } + return obj +} +func (obj *flowMetricTag) validateObj(vObj *validation, set_default bool) { + if set_default { + obj.setDefault() } - if len(obj.obj.Ipv6ReachabilityTlvs) != 0 { - - if set_default { - obj.Ipv6ReachabilityTlvs().clearHolderSlice() - for _, item := range obj.obj.Ipv6ReachabilityTlvs { - obj.Ipv6ReachabilityTlvs().appendHolderSlice(&isisLspIpv6ReachabilityTlv{obj: item}) - } - } - for _, item := range obj.Ipv6ReachabilityTlvs().Items() { - item.validateObj(vObj, set_default) - } + if obj.obj.Value != nil { + obj.Value().validateObj(vObj, set_default) } } -func (obj *isisLspTlvs) setDefault() { +func (obj *flowMetricTag) setDefault() { } -// ***** RsvpLspState ***** -type rsvpLspState struct { +// ***** ResultBgpCommunity ***** +type resultBgpCommunity struct { validation - obj *otg.RsvpLspState + obj *otg.ResultBgpCommunity } -func NewRsvpLspState() RsvpLspState { - obj := rsvpLspState{obj: &otg.RsvpLspState{}} +func NewResultBgpCommunity() ResultBgpCommunity { + obj := resultBgpCommunity{obj: &otg.ResultBgpCommunity{}} obj.setDefault() return &obj } -func (obj *rsvpLspState) Msg() *otg.RsvpLspState { +func (obj *resultBgpCommunity) Msg() *otg.ResultBgpCommunity { return obj.obj } -func (obj *rsvpLspState) SetMsg(msg *otg.RsvpLspState) RsvpLspState { +func (obj *resultBgpCommunity) SetMsg(msg *otg.ResultBgpCommunity) ResultBgpCommunity { proto.Merge(obj.obj, msg) return obj } -func (obj *rsvpLspState) ToProto() (*otg.RsvpLspState, error) { +func (obj *resultBgpCommunity) ToProto() (*otg.ResultBgpCommunity, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -171384,7 +172228,7 @@ func (obj *rsvpLspState) ToProto() (*otg.RsvpLspState, error) { return obj.Msg(), nil } -func (obj *rsvpLspState) FromProto(msg *otg.RsvpLspState) (RsvpLspState, error) { +func (obj *resultBgpCommunity) FromProto(msg *otg.ResultBgpCommunity) (ResultBgpCommunity, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -171393,7 +172237,7 @@ func (obj *rsvpLspState) FromProto(msg *otg.RsvpLspState) (RsvpLspState, error) return newObj, nil } -func (obj *rsvpLspState) ToPbText() (string, error) { +func (obj *resultBgpCommunity) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -171405,7 +172249,7 @@ func (obj *rsvpLspState) ToPbText() (string, error) { return string(protoMarshal), nil } -func (obj *rsvpLspState) FromPbText(value string) error { +func (obj *resultBgpCommunity) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj @@ -171418,7 +172262,7 @@ func (obj *rsvpLspState) FromPbText(value string) error { return retObj } -func (obj *rsvpLspState) ToYaml() (string, error) { +func (obj *resultBgpCommunity) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -171439,7 +172283,7 @@ func (obj *rsvpLspState) ToYaml() (string, error) { return string(data), nil } -func (obj *rsvpLspState) FromYaml(value string) error { +func (obj *resultBgpCommunity) FromYaml(value string) error { if value == "" { value = "{}" } @@ -171464,7 +172308,7 @@ func (obj *rsvpLspState) FromYaml(value string) error { return nil } -func (obj *rsvpLspState) ToJson() (string, error) { +func (obj *resultBgpCommunity) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -171482,7 +172326,7 @@ func (obj *rsvpLspState) ToJson() (string, error) { return string(data), nil } -func (obj *rsvpLspState) FromJson(value string) error { +func (obj *resultBgpCommunity) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -171503,19 +172347,19 @@ func (obj *rsvpLspState) FromJson(value string) error { return nil } -func (obj *rsvpLspState) validateToAndFrom() error { +func (obj *resultBgpCommunity) validateToAndFrom() error { // emptyVars() obj.validateObj(&obj.validation, true) return obj.validationResult() } -func (obj *rsvpLspState) Validate() error { +func (obj *resultBgpCommunity) Validate() error { // emptyVars() obj.validateObj(&obj.validation, false) return obj.validationResult() } -func (obj *rsvpLspState) String() string { +func (obj *resultBgpCommunity) String() string { str, err := obj.ToYaml() if err != nil { return err.Error() @@ -171523,12 +172367,12 @@ func (obj *rsvpLspState) String() string { return str } -func (obj *rsvpLspState) Clone() (RsvpLspState, error) { +func (obj *resultBgpCommunity) Clone() (ResultBgpCommunity, error) { vErr := obj.Validate() if vErr != nil { return nil, vErr } - newObj := NewRsvpLspState() + newObj := NewResultBgpCommunity() data, err := proto.Marshal(obj.Msg()) if err != nil { return nil, err @@ -171540,326 +172384,201 @@ func (obj *rsvpLspState) Clone() (RsvpLspState, error) { return newObj, nil } -// RsvpLspState is iPv4 RSVP-TE Discovered LSPs. -type RsvpLspState interface { +// ResultBgpCommunity is bGP communities provide additional capability for tagging routes and for modifying BGP routing policy on upstream and downstream routers. BGP community is a 32-bit number which is broken into 16-bit AS number and a 16-bit custom value. +type ResultBgpCommunity interface { Validation - // Msg marshals RsvpLspState to protobuf object *otg.RsvpLspState + // Msg marshals ResultBgpCommunity to protobuf object *otg.ResultBgpCommunity // and doesn't set defaults - Msg() *otg.RsvpLspState - // SetMsg unmarshals RsvpLspState from protobuf object *otg.RsvpLspState + Msg() *otg.ResultBgpCommunity + // SetMsg unmarshals ResultBgpCommunity from protobuf object *otg.ResultBgpCommunity // and doesn't set defaults - SetMsg(*otg.RsvpLspState) RsvpLspState - // ToProto marshals RsvpLspState to protobuf object *otg.RsvpLspState - ToProto() (*otg.RsvpLspState, error) - // ToPbText marshals RsvpLspState to protobuf text + SetMsg(*otg.ResultBgpCommunity) ResultBgpCommunity + // ToProto marshals ResultBgpCommunity to protobuf object *otg.ResultBgpCommunity + ToProto() (*otg.ResultBgpCommunity, error) + // ToPbText marshals ResultBgpCommunity to protobuf text ToPbText() (string, error) - // ToYaml marshals RsvpLspState to YAML text + // ToYaml marshals ResultBgpCommunity to YAML text ToYaml() (string, error) - // ToJson marshals RsvpLspState to JSON text + // ToJson marshals ResultBgpCommunity to JSON text ToJson() (string, error) - // FromProto unmarshals RsvpLspState from protobuf object *otg.RsvpLspState - FromProto(msg *otg.RsvpLspState) (RsvpLspState, error) - // FromPbText unmarshals RsvpLspState from protobuf text + // FromProto unmarshals ResultBgpCommunity from protobuf object *otg.ResultBgpCommunity + FromProto(msg *otg.ResultBgpCommunity) (ResultBgpCommunity, error) + // FromPbText unmarshals ResultBgpCommunity from protobuf text FromPbText(value string) error - // FromYaml unmarshals RsvpLspState from YAML text + // FromYaml unmarshals ResultBgpCommunity from YAML text FromYaml(value string) error - // FromJson unmarshals RsvpLspState from JSON text + // FromJson unmarshals ResultBgpCommunity from JSON text FromJson(value string) error - // Validate validates RsvpLspState + // Validate validates ResultBgpCommunity Validate() error // A stringer function String() string // Clones the object - Clone() (RsvpLspState, error) + Clone() (ResultBgpCommunity, error) validateToAndFrom() error validateObj(vObj *validation, set_default bool) setDefault() - // TunnelId returns uint32, set in RsvpLspState. - TunnelId() uint32 - // SetTunnelId assigns uint32 provided by user to RsvpLspState - SetTunnelId(value uint32) RsvpLspState - // HasTunnelId checks if TunnelId has been set in RsvpLspState - HasTunnelId() bool - // LspId returns uint32, set in RsvpLspState. - LspId() uint32 - // SetLspId assigns uint32 provided by user to RsvpLspState - SetLspId(value uint32) RsvpLspState - // HasLspId checks if LspId has been set in RsvpLspState - HasLspId() bool - // SessionName returns string, set in RsvpLspState. - SessionName() string - // SetSessionName assigns string provided by user to RsvpLspState - SetSessionName(value string) RsvpLspState - // HasSessionName checks if SessionName has been set in RsvpLspState - HasSessionName() bool - // LabelIn returns uint32, set in RsvpLspState. - LabelIn() uint32 - // SetLabelIn assigns uint32 provided by user to RsvpLspState - SetLabelIn(value uint32) RsvpLspState - // HasLabelIn checks if LabelIn has been set in RsvpLspState - HasLabelIn() bool - // LabelOut returns uint32, set in RsvpLspState. - LabelOut() uint32 - // SetLabelOut assigns uint32 provided by user to RsvpLspState - SetLabelOut(value uint32) RsvpLspState - // HasLabelOut checks if LabelOut has been set in RsvpLspState - HasLabelOut() bool - // SessionStatus returns RsvpLspStateSessionStatusEnum, set in RsvpLspState - SessionStatus() RsvpLspStateSessionStatusEnum - // SetSessionStatus assigns RsvpLspStateSessionStatusEnum provided by user to RsvpLspState - SetSessionStatus(value RsvpLspStateSessionStatusEnum) RsvpLspState - // HasSessionStatus checks if SessionStatus has been set in RsvpLspState - HasSessionStatus() bool - // LastFlapReason returns RsvpLspStateLastFlapReasonEnum, set in RsvpLspState - LastFlapReason() RsvpLspStateLastFlapReasonEnum - // SetLastFlapReason assigns RsvpLspStateLastFlapReasonEnum provided by user to RsvpLspState - SetLastFlapReason(value RsvpLspStateLastFlapReasonEnum) RsvpLspState - // HasLastFlapReason checks if LastFlapReason has been set in RsvpLspState - HasLastFlapReason() bool - // UpTime returns uint64, set in RsvpLspState. - UpTime() uint64 - // SetUpTime assigns uint64 provided by user to RsvpLspState - SetUpTime(value uint64) RsvpLspState - // HasUpTime checks if UpTime has been set in RsvpLspState - HasUpTime() bool -} - -// The tunnel id of RSVP session which acts as an identifier that remains constant over the life of the tunnel. -// TunnelId returns a uint32 -func (obj *rsvpLspState) TunnelId() uint32 { - - return *obj.obj.TunnelId - -} - -// The tunnel id of RSVP session which acts as an identifier that remains constant over the life of the tunnel. -// TunnelId returns a uint32 -func (obj *rsvpLspState) HasTunnelId() bool { - return obj.obj.TunnelId != nil -} - -// The tunnel id of RSVP session which acts as an identifier that remains constant over the life of the tunnel. -// SetTunnelId sets the uint32 value in the RsvpLspState object -func (obj *rsvpLspState) SetTunnelId(value uint32) RsvpLspState { - - obj.obj.TunnelId = &value - return obj -} - -// The lsp-id of RSVP session which acts as a differentiator for two lsps originating from the same headend, commonly used to distinguish RSVP sessions during make before break operations. -// LspId returns a uint32 -func (obj *rsvpLspState) LspId() uint32 { - - return *obj.obj.LspId - -} - -// The lsp-id of RSVP session which acts as a differentiator for two lsps originating from the same headend, commonly used to distinguish RSVP sessions during make before break operations. -// LspId returns a uint32 -func (obj *rsvpLspState) HasLspId() bool { - return obj.obj.LspId != nil + // Type returns ResultBgpCommunityTypeEnum, set in ResultBgpCommunity + Type() ResultBgpCommunityTypeEnum + // SetType assigns ResultBgpCommunityTypeEnum provided by user to ResultBgpCommunity + SetType(value ResultBgpCommunityTypeEnum) ResultBgpCommunity + // HasType checks if Type has been set in ResultBgpCommunity + HasType() bool + // AsNumber returns uint32, set in ResultBgpCommunity. + AsNumber() uint32 + // SetAsNumber assigns uint32 provided by user to ResultBgpCommunity + SetAsNumber(value uint32) ResultBgpCommunity + // HasAsNumber checks if AsNumber has been set in ResultBgpCommunity + HasAsNumber() bool + // AsCustom returns uint32, set in ResultBgpCommunity. + AsCustom() uint32 + // SetAsCustom assigns uint32 provided by user to ResultBgpCommunity + SetAsCustom(value uint32) ResultBgpCommunity + // HasAsCustom checks if AsCustom has been set in ResultBgpCommunity + HasAsCustom() bool } -// The lsp-id of RSVP session which acts as a differentiator for two lsps originating from the same headend, commonly used to distinguish RSVP sessions during make before break operations. -// SetLspId sets the uint32 value in the RsvpLspState object -func (obj *rsvpLspState) SetLspId(value uint32) RsvpLspState { +type ResultBgpCommunityTypeEnum string - obj.obj.LspId = &value - return obj +// Enum of Type on ResultBgpCommunity +var ResultBgpCommunityType = struct { + MANUAL_AS_NUMBER ResultBgpCommunityTypeEnum + NO_EXPORT ResultBgpCommunityTypeEnum + NO_ADVERTISED ResultBgpCommunityTypeEnum + NO_EXPORT_SUBCONFED ResultBgpCommunityTypeEnum + LLGR_STALE ResultBgpCommunityTypeEnum + NO_LLGR ResultBgpCommunityTypeEnum +}{ + MANUAL_AS_NUMBER: ResultBgpCommunityTypeEnum("manual_as_number"), + NO_EXPORT: ResultBgpCommunityTypeEnum("no_export"), + NO_ADVERTISED: ResultBgpCommunityTypeEnum("no_advertised"), + NO_EXPORT_SUBCONFED: ResultBgpCommunityTypeEnum("no_export_subconfed"), + LLGR_STALE: ResultBgpCommunityTypeEnum("llgr_stale"), + NO_LLGR: ResultBgpCommunityTypeEnum("no_llgr"), } -// The value of RSVP-TE Session Name field of the Session Attribute object. -// SessionName returns a string -func (obj *rsvpLspState) SessionName() string { - - return *obj.obj.SessionName - +func (obj *resultBgpCommunity) Type() ResultBgpCommunityTypeEnum { + return ResultBgpCommunityTypeEnum(obj.obj.Type.Enum().String()) } -// The value of RSVP-TE Session Name field of the Session Attribute object. -// SessionName returns a string -func (obj *rsvpLspState) HasSessionName() bool { - return obj.obj.SessionName != nil +// The type of community AS number. If community type is manual_as_number then as_number and as_custom will be available. +// Type returns a string +func (obj *resultBgpCommunity) HasType() bool { + return obj.obj.Type != nil } -// The value of RSVP-TE Session Name field of the Session Attribute object. -// SetSessionName sets the string value in the RsvpLspState object -func (obj *rsvpLspState) SetSessionName(value string) RsvpLspState { +func (obj *resultBgpCommunity) SetType(value ResultBgpCommunityTypeEnum) ResultBgpCommunity { + intValue, ok := otg.ResultBgpCommunity_Type_Enum_value[string(value)] + if !ok { + obj.validationErrors = append(obj.validationErrors, fmt.Sprintf( + "%s is not a valid choice on ResultBgpCommunityTypeEnum", string(value))) + return obj + } + enumValue := otg.ResultBgpCommunity_Type_Enum(intValue) + obj.obj.Type = &enumValue - obj.obj.SessionName = &value return obj } -// The label received by RSVP-TE ingress. -// LabelIn returns a uint32 -func (obj *rsvpLspState) LabelIn() uint32 { +// First two octets of 32 bit community AS number. +// AsNumber returns a uint32 +func (obj *resultBgpCommunity) AsNumber() uint32 { - return *obj.obj.LabelIn + return *obj.obj.AsNumber } -// The label received by RSVP-TE ingress. -// LabelIn returns a uint32 -func (obj *rsvpLspState) HasLabelIn() bool { - return obj.obj.LabelIn != nil +// First two octets of 32 bit community AS number. +// AsNumber returns a uint32 +func (obj *resultBgpCommunity) HasAsNumber() bool { + return obj.obj.AsNumber != nil } -// The label received by RSVP-TE ingress. -// SetLabelIn sets the uint32 value in the RsvpLspState object -func (obj *rsvpLspState) SetLabelIn(value uint32) RsvpLspState { +// First two octets of 32 bit community AS number. +// SetAsNumber sets the uint32 value in the ResultBgpCommunity object +func (obj *resultBgpCommunity) SetAsNumber(value uint32) ResultBgpCommunity { - obj.obj.LabelIn = &value + obj.obj.AsNumber = &value return obj } -// The label assigned by RSVP-TE egress. -// LabelOut returns a uint32 -func (obj *rsvpLspState) LabelOut() uint32 { +// Last two octets of the community value. +// AsCustom returns a uint32 +func (obj *resultBgpCommunity) AsCustom() uint32 { - return *obj.obj.LabelOut + return *obj.obj.AsCustom } -// The label assigned by RSVP-TE egress. -// LabelOut returns a uint32 -func (obj *rsvpLspState) HasLabelOut() bool { - return obj.obj.LabelOut != nil +// Last two octets of the community value. +// AsCustom returns a uint32 +func (obj *resultBgpCommunity) HasAsCustom() bool { + return obj.obj.AsCustom != nil } -// The label assigned by RSVP-TE egress. -// SetLabelOut sets the uint32 value in the RsvpLspState object -func (obj *rsvpLspState) SetLabelOut(value uint32) RsvpLspState { +// Last two octets of the community value. +// SetAsCustom sets the uint32 value in the ResultBgpCommunity object +func (obj *resultBgpCommunity) SetAsCustom(value uint32) ResultBgpCommunity { - obj.obj.LabelOut = &value + obj.obj.AsCustom = &value return obj } -type RsvpLspStateSessionStatusEnum string - -// Enum of SessionStatus on RsvpLspState -var RsvpLspStateSessionStatus = struct { - UP RsvpLspStateSessionStatusEnum - DOWN RsvpLspStateSessionStatusEnum -}{ - UP: RsvpLspStateSessionStatusEnum("up"), - DOWN: RsvpLspStateSessionStatusEnum("down"), -} - -func (obj *rsvpLspState) SessionStatus() RsvpLspStateSessionStatusEnum { - return RsvpLspStateSessionStatusEnum(obj.obj.SessionStatus.Enum().String()) -} - -// Operational state of the RSVP LSP. -// SessionStatus returns a string -func (obj *rsvpLspState) HasSessionStatus() bool { - return obj.obj.SessionStatus != nil -} - -func (obj *rsvpLspState) SetSessionStatus(value RsvpLspStateSessionStatusEnum) RsvpLspState { - intValue, ok := otg.RsvpLspState_SessionStatus_Enum_value[string(value)] - if !ok { - obj.validationErrors = append(obj.validationErrors, fmt.Sprintf( - "%s is not a valid choice on RsvpLspStateSessionStatusEnum", string(value))) - return obj +func (obj *resultBgpCommunity) validateObj(vObj *validation, set_default bool) { + if set_default { + obj.setDefault() } - enumValue := otg.RsvpLspState_SessionStatus_Enum(intValue) - obj.obj.SessionStatus = &enumValue - - return obj -} - -type RsvpLspStateLastFlapReasonEnum string - -// Enum of LastFlapReason on RsvpLspState -var RsvpLspStateLastFlapReason = struct { - RESV_TEAR RsvpLspStateLastFlapReasonEnum - PATH_TEAR RsvpLspStateLastFlapReasonEnum - PATH_TIMEOUT RsvpLspStateLastFlapReasonEnum -}{ - RESV_TEAR: RsvpLspStateLastFlapReasonEnum("resv_tear"), - PATH_TEAR: RsvpLspStateLastFlapReasonEnum("path_tear"), - PATH_TIMEOUT: RsvpLspStateLastFlapReasonEnum("path_timeout"), -} -func (obj *rsvpLspState) LastFlapReason() RsvpLspStateLastFlapReasonEnum { - return RsvpLspStateLastFlapReasonEnum(obj.obj.LastFlapReason.Enum().String()) -} + if obj.obj.AsNumber != nil { -// The reason for the last flap of this RSVP session. -// LastFlapReason returns a string -func (obj *rsvpLspState) HasLastFlapReason() bool { - return obj.obj.LastFlapReason != nil -} + if *obj.obj.AsNumber > 65535 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("0 <= ResultBgpCommunity.AsNumber <= 65535 but Got %d", *obj.obj.AsNumber)) + } -func (obj *rsvpLspState) SetLastFlapReason(value RsvpLspStateLastFlapReasonEnum) RsvpLspState { - intValue, ok := otg.RsvpLspState_LastFlapReason_Enum_value[string(value)] - if !ok { - obj.validationErrors = append(obj.validationErrors, fmt.Sprintf( - "%s is not a valid choice on RsvpLspStateLastFlapReasonEnum", string(value))) - return obj } - enumValue := otg.RsvpLspState_LastFlapReason_Enum(intValue) - obj.obj.LastFlapReason = &enumValue - - return obj -} - -// The tunnel UP time in milli seconds. If the tunnel is DOWN the UP time will be zero. -// UpTime returns a uint64 -func (obj *rsvpLspState) UpTime() uint64 { - - return *obj.obj.UpTime - -} - -// The tunnel UP time in milli seconds. If the tunnel is DOWN the UP time will be zero. -// UpTime returns a uint64 -func (obj *rsvpLspState) HasUpTime() bool { - return obj.obj.UpTime != nil -} -// The tunnel UP time in milli seconds. If the tunnel is DOWN the UP time will be zero. -// SetUpTime sets the uint64 value in the RsvpLspState object -func (obj *rsvpLspState) SetUpTime(value uint64) RsvpLspState { + if obj.obj.AsCustom != nil { - obj.obj.UpTime = &value - return obj -} + if *obj.obj.AsCustom > 65535 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("0 <= ResultBgpCommunity.AsCustom <= 65535 but Got %d", *obj.obj.AsCustom)) + } -func (obj *rsvpLspState) validateObj(vObj *validation, set_default bool) { - if set_default { - obj.setDefault() } } -func (obj *rsvpLspState) setDefault() { +func (obj *resultBgpCommunity) setDefault() { } -// ***** RsvpLspIpv4Rro ***** -type rsvpLspIpv4Rro struct { +// ***** ResultBgpAsPath ***** +type resultBgpAsPath struct { validation - obj *otg.RsvpLspIpv4Rro + obj *otg.ResultBgpAsPath + segmentsHolder ResultBgpAsPathResultBgpAsPathSegmentIter } -func NewRsvpLspIpv4Rro() RsvpLspIpv4Rro { - obj := rsvpLspIpv4Rro{obj: &otg.RsvpLspIpv4Rro{}} +func NewResultBgpAsPath() ResultBgpAsPath { + obj := resultBgpAsPath{obj: &otg.ResultBgpAsPath{}} obj.setDefault() return &obj } -func (obj *rsvpLspIpv4Rro) Msg() *otg.RsvpLspIpv4Rro { +func (obj *resultBgpAsPath) Msg() *otg.ResultBgpAsPath { return obj.obj } -func (obj *rsvpLspIpv4Rro) SetMsg(msg *otg.RsvpLspIpv4Rro) RsvpLspIpv4Rro { - +func (obj *resultBgpAsPath) SetMsg(msg *otg.ResultBgpAsPath) ResultBgpAsPath { + obj.setNil() proto.Merge(obj.obj, msg) return obj } -func (obj *rsvpLspIpv4Rro) ToProto() (*otg.RsvpLspIpv4Rro, error) { +func (obj *resultBgpAsPath) ToProto() (*otg.ResultBgpAsPath, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -171867,7 +172586,7 @@ func (obj *rsvpLspIpv4Rro) ToProto() (*otg.RsvpLspIpv4Rro, error) { return obj.Msg(), nil } -func (obj *rsvpLspIpv4Rro) FromProto(msg *otg.RsvpLspIpv4Rro) (RsvpLspIpv4Rro, error) { +func (obj *resultBgpAsPath) FromProto(msg *otg.ResultBgpAsPath) (ResultBgpAsPath, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -171876,7 +172595,7 @@ func (obj *rsvpLspIpv4Rro) FromProto(msg *otg.RsvpLspIpv4Rro) (RsvpLspIpv4Rro, e return newObj, nil } -func (obj *rsvpLspIpv4Rro) ToPbText() (string, error) { +func (obj *resultBgpAsPath) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -171888,12 +172607,12 @@ func (obj *rsvpLspIpv4Rro) ToPbText() (string, error) { return string(protoMarshal), nil } -func (obj *rsvpLspIpv4Rro) FromPbText(value string) error { +func (obj *resultBgpAsPath) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj } - + obj.setNil() vErr := obj.validateToAndFrom() if vErr != nil { return vErr @@ -171901,7 +172620,7 @@ func (obj *rsvpLspIpv4Rro) FromPbText(value string) error { return retObj } -func (obj *rsvpLspIpv4Rro) ToYaml() (string, error) { +func (obj *resultBgpAsPath) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -171922,7 +172641,7 @@ func (obj *rsvpLspIpv4Rro) ToYaml() (string, error) { return string(data), nil } -func (obj *rsvpLspIpv4Rro) FromYaml(value string) error { +func (obj *resultBgpAsPath) FromYaml(value string) error { if value == "" { value = "{}" } @@ -171939,7 +172658,7 @@ func (obj *rsvpLspIpv4Rro) FromYaml(value string) error { return fmt.Errorf("unmarshal error %s", strings.Replace( uError.Error(), "\u00a0", " ", -1)[7:]) } - + obj.setNil() vErr := obj.validateToAndFrom() if vErr != nil { return vErr @@ -171947,7 +172666,7 @@ func (obj *rsvpLspIpv4Rro) FromYaml(value string) error { return nil } -func (obj *rsvpLspIpv4Rro) ToJson() (string, error) { +func (obj *resultBgpAsPath) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -171965,7 +172684,7 @@ func (obj *rsvpLspIpv4Rro) ToJson() (string, error) { return string(data), nil } -func (obj *rsvpLspIpv4Rro) FromJson(value string) error { +func (obj *resultBgpAsPath) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -171978,7 +172697,7 @@ func (obj *rsvpLspIpv4Rro) FromJson(value string) error { return fmt.Errorf("unmarshal error %s", strings.Replace( uError.Error(), "\u00a0", " ", -1)[7:]) } - + obj.setNil() err := obj.validateToAndFrom() if err != nil { return err @@ -171986,19 +172705,19 @@ func (obj *rsvpLspIpv4Rro) FromJson(value string) error { return nil } -func (obj *rsvpLspIpv4Rro) validateToAndFrom() error { +func (obj *resultBgpAsPath) validateToAndFrom() error { // emptyVars() obj.validateObj(&obj.validation, true) return obj.validationResult() } -func (obj *rsvpLspIpv4Rro) Validate() error { +func (obj *resultBgpAsPath) Validate() error { // emptyVars() obj.validateObj(&obj.validation, false) return obj.validationResult() } -func (obj *rsvpLspIpv4Rro) String() string { +func (obj *resultBgpAsPath) String() string { str, err := obj.ToYaml() if err != nil { return err.Error() @@ -172006,12 +172725,12 @@ func (obj *rsvpLspIpv4Rro) String() string { return str } -func (obj *rsvpLspIpv4Rro) Clone() (RsvpLspIpv4Rro, error) { +func (obj *resultBgpAsPath) Clone() (ResultBgpAsPath, error) { vErr := obj.Validate() if vErr != nil { return nil, vErr } - newObj := NewRsvpLspIpv4Rro() + newObj := NewResultBgpAsPath() data, err := proto.Marshal(obj.Msg()) if err != nil { return nil, err @@ -172023,141 +172742,187 @@ func (obj *rsvpLspIpv4Rro) Clone() (RsvpLspIpv4Rro, error) { return newObj, nil } -// RsvpLspIpv4Rro is this contains the list of Record Route Object(RRO) objects associated with the traffic engineering tunnel. The Record Route Object(RRO) is used in RSVP-TE to record the route traversed by the LSP. The RRO might be present in both Path message and Resv message, the RRO stores the IP addresses of the routers that the traffic engineering tunnel traversed and also the label generated and distributed by the routers. The RROs in the Resv message mirrors that of the Path message, the only difference is that the RRO in a Resv message records the path information in the reverse direction. -type RsvpLspIpv4Rro interface { +func (obj *resultBgpAsPath) setNil() { + obj.segmentsHolder = nil + obj.validationErrors = nil + obj.warnings = nil + obj.constraints = make(map[string]map[string]Constraints) +} + +// ResultBgpAsPath is this attribute identifies the autonomous systems through which routing information carried in this UPDATE message has passed. +type ResultBgpAsPath interface { Validation - // Msg marshals RsvpLspIpv4Rro to protobuf object *otg.RsvpLspIpv4Rro + // Msg marshals ResultBgpAsPath to protobuf object *otg.ResultBgpAsPath // and doesn't set defaults - Msg() *otg.RsvpLspIpv4Rro - // SetMsg unmarshals RsvpLspIpv4Rro from protobuf object *otg.RsvpLspIpv4Rro + Msg() *otg.ResultBgpAsPath + // SetMsg unmarshals ResultBgpAsPath from protobuf object *otg.ResultBgpAsPath // and doesn't set defaults - SetMsg(*otg.RsvpLspIpv4Rro) RsvpLspIpv4Rro - // ToProto marshals RsvpLspIpv4Rro to protobuf object *otg.RsvpLspIpv4Rro - ToProto() (*otg.RsvpLspIpv4Rro, error) - // ToPbText marshals RsvpLspIpv4Rro to protobuf text + SetMsg(*otg.ResultBgpAsPath) ResultBgpAsPath + // ToProto marshals ResultBgpAsPath to protobuf object *otg.ResultBgpAsPath + ToProto() (*otg.ResultBgpAsPath, error) + // ToPbText marshals ResultBgpAsPath to protobuf text ToPbText() (string, error) - // ToYaml marshals RsvpLspIpv4Rro to YAML text + // ToYaml marshals ResultBgpAsPath to YAML text ToYaml() (string, error) - // ToJson marshals RsvpLspIpv4Rro to JSON text + // ToJson marshals ResultBgpAsPath to JSON text ToJson() (string, error) - // FromProto unmarshals RsvpLspIpv4Rro from protobuf object *otg.RsvpLspIpv4Rro - FromProto(msg *otg.RsvpLspIpv4Rro) (RsvpLspIpv4Rro, error) - // FromPbText unmarshals RsvpLspIpv4Rro from protobuf text + // FromProto unmarshals ResultBgpAsPath from protobuf object *otg.ResultBgpAsPath + FromProto(msg *otg.ResultBgpAsPath) (ResultBgpAsPath, error) + // FromPbText unmarshals ResultBgpAsPath from protobuf text FromPbText(value string) error - // FromYaml unmarshals RsvpLspIpv4Rro from YAML text + // FromYaml unmarshals ResultBgpAsPath from YAML text FromYaml(value string) error - // FromJson unmarshals RsvpLspIpv4Rro from JSON text + // FromJson unmarshals ResultBgpAsPath from JSON text FromJson(value string) error - // Validate validates RsvpLspIpv4Rro + // Validate validates ResultBgpAsPath Validate() error // A stringer function String() string // Clones the object - Clone() (RsvpLspIpv4Rro, error) + Clone() (ResultBgpAsPath, error) validateToAndFrom() error validateObj(vObj *validation, set_default bool) setDefault() - // Address returns string, set in RsvpLspIpv4Rro. - Address() string - // SetAddress assigns string provided by user to RsvpLspIpv4Rro - SetAddress(value string) RsvpLspIpv4Rro - // HasAddress checks if Address has been set in RsvpLspIpv4Rro - HasAddress() bool - // ReportedLabel returns uint32, set in RsvpLspIpv4Rro. - ReportedLabel() uint32 - // SetReportedLabel assigns uint32 provided by user to RsvpLspIpv4Rro - SetReportedLabel(value uint32) RsvpLspIpv4Rro - // HasReportedLabel checks if ReportedLabel has been set in RsvpLspIpv4Rro - HasReportedLabel() bool + // Segments returns ResultBgpAsPathResultBgpAsPathSegmentIterIter, set in ResultBgpAsPath + Segments() ResultBgpAsPathResultBgpAsPathSegmentIter + setNil() } -// The IPv4 addresses of the routers that the traffic engineering tunnel traversed. -// Address returns a string -func (obj *rsvpLspIpv4Rro) Address() string { - - return *obj.obj.Address +// AS Path segments present in the received AS Path attribute. +// Segments returns a []ResultBgpAsPathSegment +func (obj *resultBgpAsPath) Segments() ResultBgpAsPathResultBgpAsPathSegmentIter { + if len(obj.obj.Segments) == 0 { + obj.obj.Segments = []*otg.ResultBgpAsPathSegment{} + } + if obj.segmentsHolder == nil { + obj.segmentsHolder = newResultBgpAsPathResultBgpAsPathSegmentIter(&obj.obj.Segments).setMsg(obj) + } + return obj.segmentsHolder +} +type resultBgpAsPathResultBgpAsPathSegmentIter struct { + obj *resultBgpAsPath + resultBgpAsPathSegmentSlice []ResultBgpAsPathSegment + fieldPtr *[]*otg.ResultBgpAsPathSegment } -// The IPv4 addresses of the routers that the traffic engineering tunnel traversed. -// Address returns a string -func (obj *rsvpLspIpv4Rro) HasAddress() bool { - return obj.obj.Address != nil +func newResultBgpAsPathResultBgpAsPathSegmentIter(ptr *[]*otg.ResultBgpAsPathSegment) ResultBgpAsPathResultBgpAsPathSegmentIter { + return &resultBgpAsPathResultBgpAsPathSegmentIter{fieldPtr: ptr} } -// The IPv4 addresses of the routers that the traffic engineering tunnel traversed. -// SetAddress sets the string value in the RsvpLspIpv4Rro object -func (obj *rsvpLspIpv4Rro) SetAddress(value string) RsvpLspIpv4Rro { +type ResultBgpAsPathResultBgpAsPathSegmentIter interface { + setMsg(*resultBgpAsPath) ResultBgpAsPathResultBgpAsPathSegmentIter + Items() []ResultBgpAsPathSegment + Add() ResultBgpAsPathSegment + Append(items ...ResultBgpAsPathSegment) ResultBgpAsPathResultBgpAsPathSegmentIter + Set(index int, newObj ResultBgpAsPathSegment) ResultBgpAsPathResultBgpAsPathSegmentIter + Clear() ResultBgpAsPathResultBgpAsPathSegmentIter + clearHolderSlice() ResultBgpAsPathResultBgpAsPathSegmentIter + appendHolderSlice(item ResultBgpAsPathSegment) ResultBgpAsPathResultBgpAsPathSegmentIter +} - obj.obj.Address = &value +func (obj *resultBgpAsPathResultBgpAsPathSegmentIter) setMsg(msg *resultBgpAsPath) ResultBgpAsPathResultBgpAsPathSegmentIter { + obj.clearHolderSlice() + for _, val := range *obj.fieldPtr { + obj.appendHolderSlice(&resultBgpAsPathSegment{obj: val}) + } + obj.obj = msg return obj } -// Label reported for RRO hop. When the Label_Recording flag is set in the Session Attribute object, nodes doing route recording should include the Label Record subobject containing the reported label. -// ReportedLabel returns a uint32 -func (obj *rsvpLspIpv4Rro) ReportedLabel() uint32 { - - return *obj.obj.ReportedLabel - +func (obj *resultBgpAsPathResultBgpAsPathSegmentIter) Items() []ResultBgpAsPathSegment { + return obj.resultBgpAsPathSegmentSlice } -// Label reported for RRO hop. When the Label_Recording flag is set in the Session Attribute object, nodes doing route recording should include the Label Record subobject containing the reported label. -// ReportedLabel returns a uint32 -func (obj *rsvpLspIpv4Rro) HasReportedLabel() bool { - return obj.obj.ReportedLabel != nil +func (obj *resultBgpAsPathResultBgpAsPathSegmentIter) Add() ResultBgpAsPathSegment { + newObj := &otg.ResultBgpAsPathSegment{} + *obj.fieldPtr = append(*obj.fieldPtr, newObj) + newLibObj := &resultBgpAsPathSegment{obj: newObj} + newLibObj.setDefault() + obj.resultBgpAsPathSegmentSlice = append(obj.resultBgpAsPathSegmentSlice, newLibObj) + return newLibObj } -// Label reported for RRO hop. When the Label_Recording flag is set in the Session Attribute object, nodes doing route recording should include the Label Record subobject containing the reported label. -// SetReportedLabel sets the uint32 value in the RsvpLspIpv4Rro object -func (obj *rsvpLspIpv4Rro) SetReportedLabel(value uint32) RsvpLspIpv4Rro { +func (obj *resultBgpAsPathResultBgpAsPathSegmentIter) Append(items ...ResultBgpAsPathSegment) ResultBgpAsPathResultBgpAsPathSegmentIter { + for _, item := range items { + newObj := item.Msg() + *obj.fieldPtr = append(*obj.fieldPtr, newObj) + obj.resultBgpAsPathSegmentSlice = append(obj.resultBgpAsPathSegmentSlice, item) + } + return obj +} - obj.obj.ReportedLabel = &value +func (obj *resultBgpAsPathResultBgpAsPathSegmentIter) Set(index int, newObj ResultBgpAsPathSegment) ResultBgpAsPathResultBgpAsPathSegmentIter { + (*obj.fieldPtr)[index] = newObj.Msg() + obj.resultBgpAsPathSegmentSlice[index] = newObj + return obj +} +func (obj *resultBgpAsPathResultBgpAsPathSegmentIter) Clear() ResultBgpAsPathResultBgpAsPathSegmentIter { + if len(*obj.fieldPtr) > 0 { + *obj.fieldPtr = []*otg.ResultBgpAsPathSegment{} + obj.resultBgpAsPathSegmentSlice = []ResultBgpAsPathSegment{} + } + return obj +} +func (obj *resultBgpAsPathResultBgpAsPathSegmentIter) clearHolderSlice() ResultBgpAsPathResultBgpAsPathSegmentIter { + if len(obj.resultBgpAsPathSegmentSlice) > 0 { + obj.resultBgpAsPathSegmentSlice = []ResultBgpAsPathSegment{} + } + return obj +} +func (obj *resultBgpAsPathResultBgpAsPathSegmentIter) appendHolderSlice(item ResultBgpAsPathSegment) ResultBgpAsPathResultBgpAsPathSegmentIter { + obj.resultBgpAsPathSegmentSlice = append(obj.resultBgpAsPathSegmentSlice, item) return obj } -func (obj *rsvpLspIpv4Rro) validateObj(vObj *validation, set_default bool) { +func (obj *resultBgpAsPath) validateObj(vObj *validation, set_default bool) { if set_default { obj.setDefault() } - if obj.obj.Address != nil { + if len(obj.obj.Segments) != 0 { - err := obj.validateIpv4(obj.Address()) - if err != nil { - vObj.validationErrors = append(vObj.validationErrors, fmt.Sprintf("%s %s", err.Error(), "on RsvpLspIpv4Rro.Address")) + if set_default { + obj.Segments().clearHolderSlice() + for _, item := range obj.obj.Segments { + obj.Segments().appendHolderSlice(&resultBgpAsPathSegment{obj: item}) + } + } + for _, item := range obj.Segments().Items() { + item.validateObj(vObj, set_default) } } } -func (obj *rsvpLspIpv4Rro) setDefault() { +func (obj *resultBgpAsPath) setDefault() { } -// ***** RsvpLspIpv4Ero ***** -type rsvpLspIpv4Ero struct { +// ***** IsisLspFlags ***** +type isisLspFlags struct { validation - obj *otg.RsvpLspIpv4Ero + obj *otg.IsisLspFlags } -func NewRsvpLspIpv4Ero() RsvpLspIpv4Ero { - obj := rsvpLspIpv4Ero{obj: &otg.RsvpLspIpv4Ero{}} +func NewIsisLspFlags() IsisLspFlags { + obj := isisLspFlags{obj: &otg.IsisLspFlags{}} obj.setDefault() return &obj } -func (obj *rsvpLspIpv4Ero) Msg() *otg.RsvpLspIpv4Ero { +func (obj *isisLspFlags) Msg() *otg.IsisLspFlags { return obj.obj } -func (obj *rsvpLspIpv4Ero) SetMsg(msg *otg.RsvpLspIpv4Ero) RsvpLspIpv4Ero { +func (obj *isisLspFlags) SetMsg(msg *otg.IsisLspFlags) IsisLspFlags { proto.Merge(obj.obj, msg) return obj } -func (obj *rsvpLspIpv4Ero) ToProto() (*otg.RsvpLspIpv4Ero, error) { +func (obj *isisLspFlags) ToProto() (*otg.IsisLspFlags, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -172165,7 +172930,7 @@ func (obj *rsvpLspIpv4Ero) ToProto() (*otg.RsvpLspIpv4Ero, error) { return obj.Msg(), nil } -func (obj *rsvpLspIpv4Ero) FromProto(msg *otg.RsvpLspIpv4Ero) (RsvpLspIpv4Ero, error) { +func (obj *isisLspFlags) FromProto(msg *otg.IsisLspFlags) (IsisLspFlags, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -172174,7 +172939,7 @@ func (obj *rsvpLspIpv4Ero) FromProto(msg *otg.RsvpLspIpv4Ero) (RsvpLspIpv4Ero, e return newObj, nil } -func (obj *rsvpLspIpv4Ero) ToPbText() (string, error) { +func (obj *isisLspFlags) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -172186,7 +172951,7 @@ func (obj *rsvpLspIpv4Ero) ToPbText() (string, error) { return string(protoMarshal), nil } -func (obj *rsvpLspIpv4Ero) FromPbText(value string) error { +func (obj *isisLspFlags) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj @@ -172199,7 +172964,7 @@ func (obj *rsvpLspIpv4Ero) FromPbText(value string) error { return retObj } -func (obj *rsvpLspIpv4Ero) ToYaml() (string, error) { +func (obj *isisLspFlags) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -172220,7 +172985,7 @@ func (obj *rsvpLspIpv4Ero) ToYaml() (string, error) { return string(data), nil } -func (obj *rsvpLspIpv4Ero) FromYaml(value string) error { +func (obj *isisLspFlags) FromYaml(value string) error { if value == "" { value = "{}" } @@ -172245,7 +173010,7 @@ func (obj *rsvpLspIpv4Ero) FromYaml(value string) error { return nil } -func (obj *rsvpLspIpv4Ero) ToJson() (string, error) { +func (obj *isisLspFlags) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -172263,7 +173028,7 @@ func (obj *rsvpLspIpv4Ero) ToJson() (string, error) { return string(data), nil } -func (obj *rsvpLspIpv4Ero) FromJson(value string) error { +func (obj *isisLspFlags) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -172284,19 +173049,19 @@ func (obj *rsvpLspIpv4Ero) FromJson(value string) error { return nil } -func (obj *rsvpLspIpv4Ero) validateToAndFrom() error { +func (obj *isisLspFlags) validateToAndFrom() error { // emptyVars() obj.validateObj(&obj.validation, true) return obj.validationResult() } -func (obj *rsvpLspIpv4Ero) Validate() error { +func (obj *isisLspFlags) Validate() error { // emptyVars() obj.validateObj(&obj.validation, false) return obj.validationResult() } -func (obj *rsvpLspIpv4Ero) String() string { +func (obj *isisLspFlags) String() string { str, err := obj.ToYaml() if err != nil { return err.Error() @@ -172304,12 +173069,12 @@ func (obj *rsvpLspIpv4Ero) String() string { return str } -func (obj *rsvpLspIpv4Ero) Clone() (RsvpLspIpv4Ero, error) { +func (obj *isisLspFlags) Clone() (IsisLspFlags, error) { vErr := obj.Validate() if vErr != nil { return nil, vErr } - newObj := NewRsvpLspIpv4Ero() + newObj := NewIsisLspFlags() data, err := proto.Marshal(obj.Msg()) if err != nil { return nil, err @@ -172321,189 +173086,263 @@ func (obj *rsvpLspIpv4Ero) Clone() (RsvpLspIpv4Ero, error) { return newObj, nil } -// RsvpLspIpv4Ero is this contains the list of sub-objects included in the Explicit Route Object(ERO) object send in the PATH message from the ingress. These sub-objects contain the intermediate hops to be traversed by the LSP while being forwarded towards the egress endpoint. -type RsvpLspIpv4Ero interface { +// IsisLspFlags is lSP Type flags. +type IsisLspFlags interface { Validation - // Msg marshals RsvpLspIpv4Ero to protobuf object *otg.RsvpLspIpv4Ero + // Msg marshals IsisLspFlags to protobuf object *otg.IsisLspFlags // and doesn't set defaults - Msg() *otg.RsvpLspIpv4Ero - // SetMsg unmarshals RsvpLspIpv4Ero from protobuf object *otg.RsvpLspIpv4Ero + Msg() *otg.IsisLspFlags + // SetMsg unmarshals IsisLspFlags from protobuf object *otg.IsisLspFlags // and doesn't set defaults - SetMsg(*otg.RsvpLspIpv4Ero) RsvpLspIpv4Ero - // ToProto marshals RsvpLspIpv4Ero to protobuf object *otg.RsvpLspIpv4Ero - ToProto() (*otg.RsvpLspIpv4Ero, error) - // ToPbText marshals RsvpLspIpv4Ero to protobuf text + SetMsg(*otg.IsisLspFlags) IsisLspFlags + // ToProto marshals IsisLspFlags to protobuf object *otg.IsisLspFlags + ToProto() (*otg.IsisLspFlags, error) + // ToPbText marshals IsisLspFlags to protobuf text ToPbText() (string, error) - // ToYaml marshals RsvpLspIpv4Ero to YAML text + // ToYaml marshals IsisLspFlags to YAML text ToYaml() (string, error) - // ToJson marshals RsvpLspIpv4Ero to JSON text + // ToJson marshals IsisLspFlags to JSON text ToJson() (string, error) - // FromProto unmarshals RsvpLspIpv4Ero from protobuf object *otg.RsvpLspIpv4Ero - FromProto(msg *otg.RsvpLspIpv4Ero) (RsvpLspIpv4Ero, error) - // FromPbText unmarshals RsvpLspIpv4Ero from protobuf text + // FromProto unmarshals IsisLspFlags from protobuf object *otg.IsisLspFlags + FromProto(msg *otg.IsisLspFlags) (IsisLspFlags, error) + // FromPbText unmarshals IsisLspFlags from protobuf text FromPbText(value string) error - // FromYaml unmarshals RsvpLspIpv4Ero from YAML text + // FromYaml unmarshals IsisLspFlags from YAML text FromYaml(value string) error - // FromJson unmarshals RsvpLspIpv4Ero from JSON text + // FromJson unmarshals IsisLspFlags from JSON text FromJson(value string) error - // Validate validates RsvpLspIpv4Ero + // Validate validates IsisLspFlags Validate() error // A stringer function String() string // Clones the object - Clone() (RsvpLspIpv4Ero, error) + Clone() (IsisLspFlags, error) validateToAndFrom() error validateObj(vObj *validation, set_default bool) setDefault() - // Prefix returns string, set in RsvpLspIpv4Ero. - Prefix() string - // SetPrefix assigns string provided by user to RsvpLspIpv4Ero - SetPrefix(value string) RsvpLspIpv4Ero - // HasPrefix checks if Prefix has been set in RsvpLspIpv4Ero - HasPrefix() bool - // Asn returns uint32, set in RsvpLspIpv4Ero. - Asn() uint32 - // SetAsn assigns uint32 provided by user to RsvpLspIpv4Ero - SetAsn(value uint32) RsvpLspIpv4Ero - // HasAsn checks if Asn has been set in RsvpLspIpv4Ero - HasAsn() bool - // Type returns RsvpLspIpv4EroTypeEnum, set in RsvpLspIpv4Ero - Type() RsvpLspIpv4EroTypeEnum - // SetType assigns RsvpLspIpv4EroTypeEnum provided by user to RsvpLspIpv4Ero - SetType(value RsvpLspIpv4EroTypeEnum) RsvpLspIpv4Ero - // HasType checks if Type has been set in RsvpLspIpv4Ero - HasType() bool + // PartitionRepair returns bool, set in IsisLspFlags. + PartitionRepair() bool + // SetPartitionRepair assigns bool provided by user to IsisLspFlags + SetPartitionRepair(value bool) IsisLspFlags + // HasPartitionRepair checks if PartitionRepair has been set in IsisLspFlags + HasPartitionRepair() bool + // AttachedError returns bool, set in IsisLspFlags. + AttachedError() bool + // SetAttachedError assigns bool provided by user to IsisLspFlags + SetAttachedError(value bool) IsisLspFlags + // HasAttachedError checks if AttachedError has been set in IsisLspFlags + HasAttachedError() bool + // AttachedExpense returns bool, set in IsisLspFlags. + AttachedExpense() bool + // SetAttachedExpense assigns bool provided by user to IsisLspFlags + SetAttachedExpense(value bool) IsisLspFlags + // HasAttachedExpense checks if AttachedExpense has been set in IsisLspFlags + HasAttachedExpense() bool + // AttachedDelay returns bool, set in IsisLspFlags. + AttachedDelay() bool + // SetAttachedDelay assigns bool provided by user to IsisLspFlags + SetAttachedDelay(value bool) IsisLspFlags + // HasAttachedDelay checks if AttachedDelay has been set in IsisLspFlags + HasAttachedDelay() bool + // AttachedDefault returns bool, set in IsisLspFlags. + AttachedDefault() bool + // SetAttachedDefault assigns bool provided by user to IsisLspFlags + SetAttachedDefault(value bool) IsisLspFlags + // HasAttachedDefault checks if AttachedDefault has been set in IsisLspFlags + HasAttachedDefault() bool + // Overload returns bool, set in IsisLspFlags. + Overload() bool + // SetOverload assigns bool provided by user to IsisLspFlags + SetOverload(value bool) IsisLspFlags + // HasOverload checks if Overload has been set in IsisLspFlags + HasOverload() bool } -// The IPv4 prefix indicated by the ERO. Specified only when the ERO hop is an IPv4 prefix. -// Prefix returns a string -func (obj *rsvpLspIpv4Ero) Prefix() string { +// When set, the originator supports partition repair. +// PartitionRepair returns a bool +func (obj *isisLspFlags) PartitionRepair() bool { - return *obj.obj.Prefix + return *obj.obj.PartitionRepair } -// The IPv4 prefix indicated by the ERO. Specified only when the ERO hop is an IPv4 prefix. -// Prefix returns a string -func (obj *rsvpLspIpv4Ero) HasPrefix() bool { - return obj.obj.Prefix != nil +// When set, the originator supports partition repair. +// PartitionRepair returns a bool +func (obj *isisLspFlags) HasPartitionRepair() bool { + return obj.obj.PartitionRepair != nil } -// The IPv4 prefix indicated by the ERO. Specified only when the ERO hop is an IPv4 prefix. -// SetPrefix sets the string value in the RsvpLspIpv4Ero object -func (obj *rsvpLspIpv4Ero) SetPrefix(value string) RsvpLspIpv4Ero { +// When set, the originator supports partition repair. +// SetPartitionRepair sets the bool value in the IsisLspFlags object +func (obj *isisLspFlags) SetPartitionRepair(value bool) IsisLspFlags { - obj.obj.Prefix = &value + obj.obj.PartitionRepair = &value return obj } -// The autonomous system number indicated by the ERO. Specified only when the ERO hop is an 2 or 4-byte AS number. -// Asn returns a uint32 -func (obj *rsvpLspIpv4Ero) Asn() uint32 { +// When set, the originator is attached to another area using the referred metric. +// AttachedError returns a bool +func (obj *isisLspFlags) AttachedError() bool { - return *obj.obj.Asn + return *obj.obj.AttachedError } -// The autonomous system number indicated by the ERO. Specified only when the ERO hop is an 2 or 4-byte AS number. -// Asn returns a uint32 -func (obj *rsvpLspIpv4Ero) HasAsn() bool { - return obj.obj.Asn != nil +// When set, the originator is attached to another area using the referred metric. +// AttachedError returns a bool +func (obj *isisLspFlags) HasAttachedError() bool { + return obj.obj.AttachedError != nil } -// The autonomous system number indicated by the ERO. Specified only when the ERO hop is an 2 or 4-byte AS number. -// SetAsn sets the uint32 value in the RsvpLspIpv4Ero object -func (obj *rsvpLspIpv4Ero) SetAsn(value uint32) RsvpLspIpv4Ero { +// When set, the originator is attached to another area using the referred metric. +// SetAttachedError sets the bool value in the IsisLspFlags object +func (obj *isisLspFlags) SetAttachedError(value bool) IsisLspFlags { - obj.obj.Asn = &value + obj.obj.AttachedError = &value return obj } -type RsvpLspIpv4EroTypeEnum string +// When set, the originator is attached to another +// area using the referred metric. +// AttachedExpense returns a bool +func (obj *isisLspFlags) AttachedExpense() bool { + + return *obj.obj.AttachedExpense -// Enum of Type on RsvpLspIpv4Ero -var RsvpLspIpv4EroType = struct { - IPV4 RsvpLspIpv4EroTypeEnum - IPV6 RsvpLspIpv4EroTypeEnum - ASN RsvpLspIpv4EroTypeEnum - ASN4 RsvpLspIpv4EroTypeEnum - LABEL RsvpLspIpv4EroTypeEnum - UNNUMBERED_INTERFACE RsvpLspIpv4EroTypeEnum -}{ - IPV4: RsvpLspIpv4EroTypeEnum("ipv4"), - IPV6: RsvpLspIpv4EroTypeEnum("ipv6"), - ASN: RsvpLspIpv4EroTypeEnum("asn"), - ASN4: RsvpLspIpv4EroTypeEnum("asn4"), - LABEL: RsvpLspIpv4EroTypeEnum("label"), - UNNUMBERED_INTERFACE: RsvpLspIpv4EroTypeEnum("unnumbered_interface"), } -func (obj *rsvpLspIpv4Ero) Type() RsvpLspIpv4EroTypeEnum { - return RsvpLspIpv4EroTypeEnum(obj.obj.Type.Enum().String()) +// When set, the originator is attached to another +// area using the referred metric. +// AttachedExpense returns a bool +func (obj *isisLspFlags) HasAttachedExpense() bool { + return obj.obj.AttachedExpense != nil } -// The type indicated by the ERO. -// Type returns a string -func (obj *rsvpLspIpv4Ero) HasType() bool { - return obj.obj.Type != nil +// When set, the originator is attached to another +// area using the referred metric. +// SetAttachedExpense sets the bool value in the IsisLspFlags object +func (obj *isisLspFlags) SetAttachedExpense(value bool) IsisLspFlags { + + obj.obj.AttachedExpense = &value + return obj } -func (obj *rsvpLspIpv4Ero) SetType(value RsvpLspIpv4EroTypeEnum) RsvpLspIpv4Ero { - intValue, ok := otg.RsvpLspIpv4Ero_Type_Enum_value[string(value)] - if !ok { - obj.validationErrors = append(obj.validationErrors, fmt.Sprintf( - "%s is not a valid choice on RsvpLspIpv4EroTypeEnum", string(value))) - return obj - } - enumValue := otg.RsvpLspIpv4Ero_Type_Enum(intValue) - obj.obj.Type = &enumValue +// Delay Metric - when set, the originator is attached to another +// area using the referred metric. +// AttachedDelay returns a bool +func (obj *isisLspFlags) AttachedDelay() bool { + + return *obj.obj.AttachedDelay + +} + +// Delay Metric - when set, the originator is attached to another +// area using the referred metric. +// AttachedDelay returns a bool +func (obj *isisLspFlags) HasAttachedDelay() bool { + return obj.obj.AttachedDelay != nil +} + +// Delay Metric - when set, the originator is attached to another +// area using the referred metric. +// SetAttachedDelay sets the bool value in the IsisLspFlags object +func (obj *isisLspFlags) SetAttachedDelay(value bool) IsisLspFlags { + obj.obj.AttachedDelay = &value return obj } -func (obj *rsvpLspIpv4Ero) validateObj(vObj *validation, set_default bool) { - if set_default { - obj.setDefault() - } +// Default Metric - when set, the originator is attached to another +// area using the referred metric. +// AttachedDefault returns a bool +func (obj *isisLspFlags) AttachedDefault() bool { - if obj.obj.Prefix != nil { + return *obj.obj.AttachedDefault - err := obj.validateIpv4(obj.Prefix()) - if err != nil { - vObj.validationErrors = append(vObj.validationErrors, fmt.Sprintf("%s %s", err.Error(), "on RsvpLspIpv4Ero.Prefix")) - } +} + +// Default Metric - when set, the originator is attached to another +// area using the referred metric. +// AttachedDefault returns a bool +func (obj *isisLspFlags) HasAttachedDefault() bool { + return obj.obj.AttachedDefault != nil +} + +// Default Metric - when set, the originator is attached to another +// area using the referred metric. +// SetAttachedDefault sets the bool value in the IsisLspFlags object +func (obj *isisLspFlags) SetAttachedDefault(value bool) IsisLspFlags { + + obj.obj.AttachedDefault = &value + return obj +} + +// Overload bit - when set, the originator is overloaded, and must +// be avoided in path calculation. +// Overload returns a bool +func (obj *isisLspFlags) Overload() bool { + + return *obj.obj.Overload + +} + +// Overload bit - when set, the originator is overloaded, and must +// be avoided in path calculation. +// Overload returns a bool +func (obj *isisLspFlags) HasOverload() bool { + return obj.obj.Overload != nil +} + +// Overload bit - when set, the originator is overloaded, and must +// be avoided in path calculation. +// SetOverload sets the bool value in the IsisLspFlags object +func (obj *isisLspFlags) SetOverload(value bool) IsisLspFlags { + + obj.obj.Overload = &value + return obj +} +func (obj *isisLspFlags) validateObj(vObj *validation, set_default bool) { + if set_default { + obj.setDefault() } } -func (obj *rsvpLspIpv4Ero) setDefault() { +func (obj *isisLspFlags) setDefault() { } -// ***** LinkStatepriorityBandwidths ***** -type linkStatepriorityBandwidths struct { +// ***** IsisLspTlvs ***** +type isisLspTlvs struct { validation - obj *otg.LinkStatepriorityBandwidths + obj *otg.IsisLspTlvs + hostnameTlvsHolder IsisLspTlvsIsisLspHostnameIter + isReachabilityTlvsHolder IsisLspTlvsIsisLspIsReachabilityTlvIter + extendedIsReachabilityTlvsHolder IsisLspTlvsIsisLspExtendedIsReachabilityTlvIter + ipv4InternalReachabilityTlvsHolder IsisLspTlvsIsisLspIpv4InternalReachabilityTlvIter + ipv4ExternalReachabilityTlvsHolder IsisLspTlvsIsisLspIpv4ExternalReachabilityTlvIter + extendedIpv4ReachabilityTlvsHolder IsisLspTlvsIsisLspExtendedIpv4ReachabilityTlvIter + ipv6ReachabilityTlvsHolder IsisLspTlvsIsisLspIpv6ReachabilityTlvIter } -func NewLinkStatepriorityBandwidths() LinkStatepriorityBandwidths { - obj := linkStatepriorityBandwidths{obj: &otg.LinkStatepriorityBandwidths{}} +func NewIsisLspTlvs() IsisLspTlvs { + obj := isisLspTlvs{obj: &otg.IsisLspTlvs{}} obj.setDefault() return &obj } -func (obj *linkStatepriorityBandwidths) Msg() *otg.LinkStatepriorityBandwidths { +func (obj *isisLspTlvs) Msg() *otg.IsisLspTlvs { return obj.obj } -func (obj *linkStatepriorityBandwidths) SetMsg(msg *otg.LinkStatepriorityBandwidths) LinkStatepriorityBandwidths { - +func (obj *isisLspTlvs) SetMsg(msg *otg.IsisLspTlvs) IsisLspTlvs { + obj.setNil() proto.Merge(obj.obj, msg) return obj } -func (obj *linkStatepriorityBandwidths) ToProto() (*otg.LinkStatepriorityBandwidths, error) { +func (obj *isisLspTlvs) ToProto() (*otg.IsisLspTlvs, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -172511,7 +173350,7 @@ func (obj *linkStatepriorityBandwidths) ToProto() (*otg.LinkStatepriorityBandwid return obj.Msg(), nil } -func (obj *linkStatepriorityBandwidths) FromProto(msg *otg.LinkStatepriorityBandwidths) (LinkStatepriorityBandwidths, error) { +func (obj *isisLspTlvs) FromProto(msg *otg.IsisLspTlvs) (IsisLspTlvs, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -172520,7 +173359,7 @@ func (obj *linkStatepriorityBandwidths) FromProto(msg *otg.LinkStatepriorityBand return newObj, nil } -func (obj *linkStatepriorityBandwidths) ToPbText() (string, error) { +func (obj *isisLspTlvs) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -172532,12 +173371,12 @@ func (obj *linkStatepriorityBandwidths) ToPbText() (string, error) { return string(protoMarshal), nil } -func (obj *linkStatepriorityBandwidths) FromPbText(value string) error { +func (obj *isisLspTlvs) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj } - + obj.setNil() vErr := obj.validateToAndFrom() if vErr != nil { return vErr @@ -172545,7 +173384,7 @@ func (obj *linkStatepriorityBandwidths) FromPbText(value string) error { return retObj } -func (obj *linkStatepriorityBandwidths) ToYaml() (string, error) { +func (obj *isisLspTlvs) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -172566,7 +173405,7 @@ func (obj *linkStatepriorityBandwidths) ToYaml() (string, error) { return string(data), nil } -func (obj *linkStatepriorityBandwidths) FromYaml(value string) error { +func (obj *isisLspTlvs) FromYaml(value string) error { if value == "" { value = "{}" } @@ -172583,7 +173422,7 @@ func (obj *linkStatepriorityBandwidths) FromYaml(value string) error { return fmt.Errorf("unmarshal error %s", strings.Replace( uError.Error(), "\u00a0", " ", -1)[7:]) } - + obj.setNil() vErr := obj.validateToAndFrom() if vErr != nil { return vErr @@ -172591,7 +173430,7 @@ func (obj *linkStatepriorityBandwidths) FromYaml(value string) error { return nil } -func (obj *linkStatepriorityBandwidths) ToJson() (string, error) { +func (obj *isisLspTlvs) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -172609,7 +173448,7 @@ func (obj *linkStatepriorityBandwidths) ToJson() (string, error) { return string(data), nil } -func (obj *linkStatepriorityBandwidths) FromJson(value string) error { +func (obj *isisLspTlvs) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -172622,7 +173461,7 @@ func (obj *linkStatepriorityBandwidths) FromJson(value string) error { return fmt.Errorf("unmarshal error %s", strings.Replace( uError.Error(), "\u00a0", " ", -1)[7:]) } - + obj.setNil() err := obj.validateToAndFrom() if err != nil { return err @@ -172630,19 +173469,19 @@ func (obj *linkStatepriorityBandwidths) FromJson(value string) error { return nil } -func (obj *linkStatepriorityBandwidths) validateToAndFrom() error { +func (obj *isisLspTlvs) validateToAndFrom() error { // emptyVars() obj.validateObj(&obj.validation, true) return obj.validationResult() } -func (obj *linkStatepriorityBandwidths) Validate() error { +func (obj *isisLspTlvs) Validate() error { // emptyVars() obj.validateObj(&obj.validation, false) return obj.validationResult() } -func (obj *linkStatepriorityBandwidths) String() string { +func (obj *isisLspTlvs) String() string { str, err := obj.ToYaml() if err != nil { return err.Error() @@ -172650,12 +173489,12 @@ func (obj *linkStatepriorityBandwidths) String() string { return str } -func (obj *linkStatepriorityBandwidths) Clone() (LinkStatepriorityBandwidths, error) { +func (obj *isisLspTlvs) Clone() (IsisLspTlvs, error) { vErr := obj.Validate() if vErr != nil { return nil, vErr } - newObj := NewLinkStatepriorityBandwidths() + newObj := NewIsisLspTlvs() data, err := proto.Marshal(obj.Msg()) if err != nil { return nil, err @@ -172667,332 +173506,811 @@ func (obj *linkStatepriorityBandwidths) Clone() (LinkStatepriorityBandwidths, er return newObj, nil } -// LinkStatepriorityBandwidths is specifies the amount of bandwidth that can be reserved with a setup priority of 0 -// through 7, arranged in increasing order with priority 0 having highest priority. -// In ISIS, this is sent in sub-TLV (11) of Extended IS Reachability TLV. -type LinkStatepriorityBandwidths interface { +func (obj *isisLspTlvs) setNil() { + obj.hostnameTlvsHolder = nil + obj.isReachabilityTlvsHolder = nil + obj.extendedIsReachabilityTlvsHolder = nil + obj.ipv4InternalReachabilityTlvsHolder = nil + obj.ipv4ExternalReachabilityTlvsHolder = nil + obj.extendedIpv4ReachabilityTlvsHolder = nil + obj.ipv6ReachabilityTlvsHolder = nil + obj.validationErrors = nil + obj.warnings = nil + obj.constraints = make(map[string]map[string]Constraints) +} + +// IsisLspTlvs is this contains the list of TLVs present in one LSP. +type IsisLspTlvs interface { Validation - // Msg marshals LinkStatepriorityBandwidths to protobuf object *otg.LinkStatepriorityBandwidths + // Msg marshals IsisLspTlvs to protobuf object *otg.IsisLspTlvs // and doesn't set defaults - Msg() *otg.LinkStatepriorityBandwidths - // SetMsg unmarshals LinkStatepriorityBandwidths from protobuf object *otg.LinkStatepriorityBandwidths + Msg() *otg.IsisLspTlvs + // SetMsg unmarshals IsisLspTlvs from protobuf object *otg.IsisLspTlvs // and doesn't set defaults - SetMsg(*otg.LinkStatepriorityBandwidths) LinkStatepriorityBandwidths - // ToProto marshals LinkStatepriorityBandwidths to protobuf object *otg.LinkStatepriorityBandwidths - ToProto() (*otg.LinkStatepriorityBandwidths, error) - // ToPbText marshals LinkStatepriorityBandwidths to protobuf text + SetMsg(*otg.IsisLspTlvs) IsisLspTlvs + // ToProto marshals IsisLspTlvs to protobuf object *otg.IsisLspTlvs + ToProto() (*otg.IsisLspTlvs, error) + // ToPbText marshals IsisLspTlvs to protobuf text ToPbText() (string, error) - // ToYaml marshals LinkStatepriorityBandwidths to YAML text + // ToYaml marshals IsisLspTlvs to YAML text ToYaml() (string, error) - // ToJson marshals LinkStatepriorityBandwidths to JSON text + // ToJson marshals IsisLspTlvs to JSON text ToJson() (string, error) - // FromProto unmarshals LinkStatepriorityBandwidths from protobuf object *otg.LinkStatepriorityBandwidths - FromProto(msg *otg.LinkStatepriorityBandwidths) (LinkStatepriorityBandwidths, error) - // FromPbText unmarshals LinkStatepriorityBandwidths from protobuf text + // FromProto unmarshals IsisLspTlvs from protobuf object *otg.IsisLspTlvs + FromProto(msg *otg.IsisLspTlvs) (IsisLspTlvs, error) + // FromPbText unmarshals IsisLspTlvs from protobuf text FromPbText(value string) error - // FromYaml unmarshals LinkStatepriorityBandwidths from YAML text + // FromYaml unmarshals IsisLspTlvs from YAML text FromYaml(value string) error - // FromJson unmarshals LinkStatepriorityBandwidths from JSON text + // FromJson unmarshals IsisLspTlvs from JSON text FromJson(value string) error - // Validate validates LinkStatepriorityBandwidths + // Validate validates IsisLspTlvs Validate() error // A stringer function String() string // Clones the object - Clone() (LinkStatepriorityBandwidths, error) + Clone() (IsisLspTlvs, error) validateToAndFrom() error validateObj(vObj *validation, set_default bool) setDefault() - // Pb0 returns uint32, set in LinkStatepriorityBandwidths. - Pb0() uint32 - // SetPb0 assigns uint32 provided by user to LinkStatepriorityBandwidths - SetPb0(value uint32) LinkStatepriorityBandwidths - // HasPb0 checks if Pb0 has been set in LinkStatepriorityBandwidths - HasPb0() bool - // Pb1 returns uint32, set in LinkStatepriorityBandwidths. - Pb1() uint32 - // SetPb1 assigns uint32 provided by user to LinkStatepriorityBandwidths - SetPb1(value uint32) LinkStatepriorityBandwidths - // HasPb1 checks if Pb1 has been set in LinkStatepriorityBandwidths - HasPb1() bool - // Pb2 returns uint32, set in LinkStatepriorityBandwidths. - Pb2() uint32 - // SetPb2 assigns uint32 provided by user to LinkStatepriorityBandwidths - SetPb2(value uint32) LinkStatepriorityBandwidths - // HasPb2 checks if Pb2 has been set in LinkStatepriorityBandwidths - HasPb2() bool - // Pb3 returns uint32, set in LinkStatepriorityBandwidths. - Pb3() uint32 - // SetPb3 assigns uint32 provided by user to LinkStatepriorityBandwidths - SetPb3(value uint32) LinkStatepriorityBandwidths - // HasPb3 checks if Pb3 has been set in LinkStatepriorityBandwidths - HasPb3() bool - // Pb4 returns uint32, set in LinkStatepriorityBandwidths. - Pb4() uint32 - // SetPb4 assigns uint32 provided by user to LinkStatepriorityBandwidths - SetPb4(value uint32) LinkStatepriorityBandwidths - // HasPb4 checks if Pb4 has been set in LinkStatepriorityBandwidths - HasPb4() bool - // Pb5 returns uint32, set in LinkStatepriorityBandwidths. - Pb5() uint32 - // SetPb5 assigns uint32 provided by user to LinkStatepriorityBandwidths - SetPb5(value uint32) LinkStatepriorityBandwidths - // HasPb5 checks if Pb5 has been set in LinkStatepriorityBandwidths - HasPb5() bool - // Pb6 returns uint32, set in LinkStatepriorityBandwidths. - Pb6() uint32 - // SetPb6 assigns uint32 provided by user to LinkStatepriorityBandwidths - SetPb6(value uint32) LinkStatepriorityBandwidths - // HasPb6 checks if Pb6 has been set in LinkStatepriorityBandwidths - HasPb6() bool - // Pb7 returns uint32, set in LinkStatepriorityBandwidths. - Pb7() uint32 - // SetPb7 assigns uint32 provided by user to LinkStatepriorityBandwidths - SetPb7(value uint32) LinkStatepriorityBandwidths - // HasPb7 checks if Pb7 has been set in LinkStatepriorityBandwidths - HasPb7() bool -} - -// Specifies the amount of bandwidth that can be reserved for the Priority 0. -// Pb0 returns a uint32 -func (obj *linkStatepriorityBandwidths) Pb0() uint32 { - - return *obj.obj.Pb0 + // HostnameTlvs returns IsisLspTlvsIsisLspHostnameIterIter, set in IsisLspTlvs + HostnameTlvs() IsisLspTlvsIsisLspHostnameIter + // IsReachabilityTlvs returns IsisLspTlvsIsisLspIsReachabilityTlvIterIter, set in IsisLspTlvs + IsReachabilityTlvs() IsisLspTlvsIsisLspIsReachabilityTlvIter + // ExtendedIsReachabilityTlvs returns IsisLspTlvsIsisLspExtendedIsReachabilityTlvIterIter, set in IsisLspTlvs + ExtendedIsReachabilityTlvs() IsisLspTlvsIsisLspExtendedIsReachabilityTlvIter + // Ipv4InternalReachabilityTlvs returns IsisLspTlvsIsisLspIpv4InternalReachabilityTlvIterIter, set in IsisLspTlvs + Ipv4InternalReachabilityTlvs() IsisLspTlvsIsisLspIpv4InternalReachabilityTlvIter + // Ipv4ExternalReachabilityTlvs returns IsisLspTlvsIsisLspIpv4ExternalReachabilityTlvIterIter, set in IsisLspTlvs + Ipv4ExternalReachabilityTlvs() IsisLspTlvsIsisLspIpv4ExternalReachabilityTlvIter + // ExtendedIpv4ReachabilityTlvs returns IsisLspTlvsIsisLspExtendedIpv4ReachabilityTlvIterIter, set in IsisLspTlvs + ExtendedIpv4ReachabilityTlvs() IsisLspTlvsIsisLspExtendedIpv4ReachabilityTlvIter + // Ipv6ReachabilityTlvs returns IsisLspTlvsIsisLspIpv6ReachabilityTlvIterIter, set in IsisLspTlvs + Ipv6ReachabilityTlvs() IsisLspTlvsIsisLspIpv6ReachabilityTlvIter + setNil() +} +// Array of Hostname TLVs ( type 137) present in this LSP. +// HostnameTlvs returns a []IsisLspHostname +func (obj *isisLspTlvs) HostnameTlvs() IsisLspTlvsIsisLspHostnameIter { + if len(obj.obj.HostnameTlvs) == 0 { + obj.obj.HostnameTlvs = []*otg.IsisLspHostname{} + } + if obj.hostnameTlvsHolder == nil { + obj.hostnameTlvsHolder = newIsisLspTlvsIsisLspHostnameIter(&obj.obj.HostnameTlvs).setMsg(obj) + } + return obj.hostnameTlvsHolder } -// Specifies the amount of bandwidth that can be reserved for the Priority 0. -// Pb0 returns a uint32 -func (obj *linkStatepriorityBandwidths) HasPb0() bool { - return obj.obj.Pb0 != nil +type isisLspTlvsIsisLspHostnameIter struct { + obj *isisLspTlvs + isisLspHostnameSlice []IsisLspHostname + fieldPtr *[]*otg.IsisLspHostname } -// Specifies the amount of bandwidth that can be reserved for the Priority 0. -// SetPb0 sets the uint32 value in the LinkStatepriorityBandwidths object -func (obj *linkStatepriorityBandwidths) SetPb0(value uint32) LinkStatepriorityBandwidths { +func newIsisLspTlvsIsisLspHostnameIter(ptr *[]*otg.IsisLspHostname) IsisLspTlvsIsisLspHostnameIter { + return &isisLspTlvsIsisLspHostnameIter{fieldPtr: ptr} +} - obj.obj.Pb0 = &value +type IsisLspTlvsIsisLspHostnameIter interface { + setMsg(*isisLspTlvs) IsisLspTlvsIsisLspHostnameIter + Items() []IsisLspHostname + Add() IsisLspHostname + Append(items ...IsisLspHostname) IsisLspTlvsIsisLspHostnameIter + Set(index int, newObj IsisLspHostname) IsisLspTlvsIsisLspHostnameIter + Clear() IsisLspTlvsIsisLspHostnameIter + clearHolderSlice() IsisLspTlvsIsisLspHostnameIter + appendHolderSlice(item IsisLspHostname) IsisLspTlvsIsisLspHostnameIter +} + +func (obj *isisLspTlvsIsisLspHostnameIter) setMsg(msg *isisLspTlvs) IsisLspTlvsIsisLspHostnameIter { + obj.clearHolderSlice() + for _, val := range *obj.fieldPtr { + obj.appendHolderSlice(&isisLspHostname{obj: val}) + } + obj.obj = msg return obj } -// Specifies the amount of bandwidth that can be reserved for the Priority 1. -// Pb1 returns a uint32 -func (obj *linkStatepriorityBandwidths) Pb1() uint32 { +func (obj *isisLspTlvsIsisLspHostnameIter) Items() []IsisLspHostname { + return obj.isisLspHostnameSlice +} - return *obj.obj.Pb1 +func (obj *isisLspTlvsIsisLspHostnameIter) Add() IsisLspHostname { + newObj := &otg.IsisLspHostname{} + *obj.fieldPtr = append(*obj.fieldPtr, newObj) + newLibObj := &isisLspHostname{obj: newObj} + newLibObj.setDefault() + obj.isisLspHostnameSlice = append(obj.isisLspHostnameSlice, newLibObj) + return newLibObj +} +func (obj *isisLspTlvsIsisLspHostnameIter) Append(items ...IsisLspHostname) IsisLspTlvsIsisLspHostnameIter { + for _, item := range items { + newObj := item.Msg() + *obj.fieldPtr = append(*obj.fieldPtr, newObj) + obj.isisLspHostnameSlice = append(obj.isisLspHostnameSlice, item) + } + return obj } -// Specifies the amount of bandwidth that can be reserved for the Priority 1. -// Pb1 returns a uint32 -func (obj *linkStatepriorityBandwidths) HasPb1() bool { - return obj.obj.Pb1 != nil +func (obj *isisLspTlvsIsisLspHostnameIter) Set(index int, newObj IsisLspHostname) IsisLspTlvsIsisLspHostnameIter { + (*obj.fieldPtr)[index] = newObj.Msg() + obj.isisLspHostnameSlice[index] = newObj + return obj +} +func (obj *isisLspTlvsIsisLspHostnameIter) Clear() IsisLspTlvsIsisLspHostnameIter { + if len(*obj.fieldPtr) > 0 { + *obj.fieldPtr = []*otg.IsisLspHostname{} + obj.isisLspHostnameSlice = []IsisLspHostname{} + } + return obj +} +func (obj *isisLspTlvsIsisLspHostnameIter) clearHolderSlice() IsisLspTlvsIsisLspHostnameIter { + if len(obj.isisLspHostnameSlice) > 0 { + obj.isisLspHostnameSlice = []IsisLspHostname{} + } + return obj +} +func (obj *isisLspTlvsIsisLspHostnameIter) appendHolderSlice(item IsisLspHostname) IsisLspTlvsIsisLspHostnameIter { + obj.isisLspHostnameSlice = append(obj.isisLspHostnameSlice, item) + return obj } -// Specifies the amount of bandwidth that can be reserved for the Priority 1. -// SetPb1 sets the uint32 value in the LinkStatepriorityBandwidths object -func (obj *linkStatepriorityBandwidths) SetPb1(value uint32) LinkStatepriorityBandwidths { +// Array of IS-Reachability TLVs (type 2) present in this LSP. +// IsReachabilityTlvs returns a []IsisLspIsReachabilityTlv +func (obj *isisLspTlvs) IsReachabilityTlvs() IsisLspTlvsIsisLspIsReachabilityTlvIter { + if len(obj.obj.IsReachabilityTlvs) == 0 { + obj.obj.IsReachabilityTlvs = []*otg.IsisLspIsReachabilityTlv{} + } + if obj.isReachabilityTlvsHolder == nil { + obj.isReachabilityTlvsHolder = newIsisLspTlvsIsisLspIsReachabilityTlvIter(&obj.obj.IsReachabilityTlvs).setMsg(obj) + } + return obj.isReachabilityTlvsHolder +} - obj.obj.Pb1 = &value - return obj +type isisLspTlvsIsisLspIsReachabilityTlvIter struct { + obj *isisLspTlvs + isisLspIsReachabilityTlvSlice []IsisLspIsReachabilityTlv + fieldPtr *[]*otg.IsisLspIsReachabilityTlv } -// Specify the amount of bandwidth that can be reserved for the Priority 2. -// Pb2 returns a uint32 -func (obj *linkStatepriorityBandwidths) Pb2() uint32 { +func newIsisLspTlvsIsisLspIsReachabilityTlvIter(ptr *[]*otg.IsisLspIsReachabilityTlv) IsisLspTlvsIsisLspIsReachabilityTlvIter { + return &isisLspTlvsIsisLspIsReachabilityTlvIter{fieldPtr: ptr} +} - return *obj.obj.Pb2 +type IsisLspTlvsIsisLspIsReachabilityTlvIter interface { + setMsg(*isisLspTlvs) IsisLspTlvsIsisLspIsReachabilityTlvIter + Items() []IsisLspIsReachabilityTlv + Add() IsisLspIsReachabilityTlv + Append(items ...IsisLspIsReachabilityTlv) IsisLspTlvsIsisLspIsReachabilityTlvIter + Set(index int, newObj IsisLspIsReachabilityTlv) IsisLspTlvsIsisLspIsReachabilityTlvIter + Clear() IsisLspTlvsIsisLspIsReachabilityTlvIter + clearHolderSlice() IsisLspTlvsIsisLspIsReachabilityTlvIter + appendHolderSlice(item IsisLspIsReachabilityTlv) IsisLspTlvsIsisLspIsReachabilityTlvIter +} +func (obj *isisLspTlvsIsisLspIsReachabilityTlvIter) setMsg(msg *isisLspTlvs) IsisLspTlvsIsisLspIsReachabilityTlvIter { + obj.clearHolderSlice() + for _, val := range *obj.fieldPtr { + obj.appendHolderSlice(&isisLspIsReachabilityTlv{obj: val}) + } + obj.obj = msg + return obj } -// Specify the amount of bandwidth that can be reserved for the Priority 2. -// Pb2 returns a uint32 -func (obj *linkStatepriorityBandwidths) HasPb2() bool { - return obj.obj.Pb2 != nil +func (obj *isisLspTlvsIsisLspIsReachabilityTlvIter) Items() []IsisLspIsReachabilityTlv { + return obj.isisLspIsReachabilityTlvSlice } -// Specify the amount of bandwidth that can be reserved for the Priority 2. -// SetPb2 sets the uint32 value in the LinkStatepriorityBandwidths object -func (obj *linkStatepriorityBandwidths) SetPb2(value uint32) LinkStatepriorityBandwidths { +func (obj *isisLspTlvsIsisLspIsReachabilityTlvIter) Add() IsisLspIsReachabilityTlv { + newObj := &otg.IsisLspIsReachabilityTlv{} + *obj.fieldPtr = append(*obj.fieldPtr, newObj) + newLibObj := &isisLspIsReachabilityTlv{obj: newObj} + newLibObj.setDefault() + obj.isisLspIsReachabilityTlvSlice = append(obj.isisLspIsReachabilityTlvSlice, newLibObj) + return newLibObj +} - obj.obj.Pb2 = &value +func (obj *isisLspTlvsIsisLspIsReachabilityTlvIter) Append(items ...IsisLspIsReachabilityTlv) IsisLspTlvsIsisLspIsReachabilityTlvIter { + for _, item := range items { + newObj := item.Msg() + *obj.fieldPtr = append(*obj.fieldPtr, newObj) + obj.isisLspIsReachabilityTlvSlice = append(obj.isisLspIsReachabilityTlvSlice, item) + } return obj } -// Specifies the amount of bandwidth that can be reserved for the Priority 3. -// Pb3 returns a uint32 -func (obj *linkStatepriorityBandwidths) Pb3() uint32 { +func (obj *isisLspTlvsIsisLspIsReachabilityTlvIter) Set(index int, newObj IsisLspIsReachabilityTlv) IsisLspTlvsIsisLspIsReachabilityTlvIter { + (*obj.fieldPtr)[index] = newObj.Msg() + obj.isisLspIsReachabilityTlvSlice[index] = newObj + return obj +} +func (obj *isisLspTlvsIsisLspIsReachabilityTlvIter) Clear() IsisLspTlvsIsisLspIsReachabilityTlvIter { + if len(*obj.fieldPtr) > 0 { + *obj.fieldPtr = []*otg.IsisLspIsReachabilityTlv{} + obj.isisLspIsReachabilityTlvSlice = []IsisLspIsReachabilityTlv{} + } + return obj +} +func (obj *isisLspTlvsIsisLspIsReachabilityTlvIter) clearHolderSlice() IsisLspTlvsIsisLspIsReachabilityTlvIter { + if len(obj.isisLspIsReachabilityTlvSlice) > 0 { + obj.isisLspIsReachabilityTlvSlice = []IsisLspIsReachabilityTlv{} + } + return obj +} +func (obj *isisLspTlvsIsisLspIsReachabilityTlvIter) appendHolderSlice(item IsisLspIsReachabilityTlv) IsisLspTlvsIsisLspIsReachabilityTlvIter { + obj.isisLspIsReachabilityTlvSlice = append(obj.isisLspIsReachabilityTlvSlice, item) + return obj +} - return *obj.obj.Pb3 +// Array of Extended IS-Reachability TLVs (type 22) present in this LSP. +// ExtendedIsReachabilityTlvs returns a []IsisLspExtendedIsReachabilityTlv +func (obj *isisLspTlvs) ExtendedIsReachabilityTlvs() IsisLspTlvsIsisLspExtendedIsReachabilityTlvIter { + if len(obj.obj.ExtendedIsReachabilityTlvs) == 0 { + obj.obj.ExtendedIsReachabilityTlvs = []*otg.IsisLspExtendedIsReachabilityTlv{} + } + if obj.extendedIsReachabilityTlvsHolder == nil { + obj.extendedIsReachabilityTlvsHolder = newIsisLspTlvsIsisLspExtendedIsReachabilityTlvIter(&obj.obj.ExtendedIsReachabilityTlvs).setMsg(obj) + } + return obj.extendedIsReachabilityTlvsHolder +} +type isisLspTlvsIsisLspExtendedIsReachabilityTlvIter struct { + obj *isisLspTlvs + isisLspExtendedIsReachabilityTlvSlice []IsisLspExtendedIsReachabilityTlv + fieldPtr *[]*otg.IsisLspExtendedIsReachabilityTlv } -// Specifies the amount of bandwidth that can be reserved for the Priority 3. -// Pb3 returns a uint32 -func (obj *linkStatepriorityBandwidths) HasPb3() bool { - return obj.obj.Pb3 != nil +func newIsisLspTlvsIsisLspExtendedIsReachabilityTlvIter(ptr *[]*otg.IsisLspExtendedIsReachabilityTlv) IsisLspTlvsIsisLspExtendedIsReachabilityTlvIter { + return &isisLspTlvsIsisLspExtendedIsReachabilityTlvIter{fieldPtr: ptr} } -// Specifies the amount of bandwidth that can be reserved for the Priority 3. -// SetPb3 sets the uint32 value in the LinkStatepriorityBandwidths object -func (obj *linkStatepriorityBandwidths) SetPb3(value uint32) LinkStatepriorityBandwidths { +type IsisLspTlvsIsisLspExtendedIsReachabilityTlvIter interface { + setMsg(*isisLspTlvs) IsisLspTlvsIsisLspExtendedIsReachabilityTlvIter + Items() []IsisLspExtendedIsReachabilityTlv + Add() IsisLspExtendedIsReachabilityTlv + Append(items ...IsisLspExtendedIsReachabilityTlv) IsisLspTlvsIsisLspExtendedIsReachabilityTlvIter + Set(index int, newObj IsisLspExtendedIsReachabilityTlv) IsisLspTlvsIsisLspExtendedIsReachabilityTlvIter + Clear() IsisLspTlvsIsisLspExtendedIsReachabilityTlvIter + clearHolderSlice() IsisLspTlvsIsisLspExtendedIsReachabilityTlvIter + appendHolderSlice(item IsisLspExtendedIsReachabilityTlv) IsisLspTlvsIsisLspExtendedIsReachabilityTlvIter +} - obj.obj.Pb3 = &value +func (obj *isisLspTlvsIsisLspExtendedIsReachabilityTlvIter) setMsg(msg *isisLspTlvs) IsisLspTlvsIsisLspExtendedIsReachabilityTlvIter { + obj.clearHolderSlice() + for _, val := range *obj.fieldPtr { + obj.appendHolderSlice(&isisLspExtendedIsReachabilityTlv{obj: val}) + } + obj.obj = msg return obj } -// Specifies the amount of bandwidth that can be reserved for the Priority 4. -// Pb4 returns a uint32 -func (obj *linkStatepriorityBandwidths) Pb4() uint32 { +func (obj *isisLspTlvsIsisLspExtendedIsReachabilityTlvIter) Items() []IsisLspExtendedIsReachabilityTlv { + return obj.isisLspExtendedIsReachabilityTlvSlice +} - return *obj.obj.Pb4 +func (obj *isisLspTlvsIsisLspExtendedIsReachabilityTlvIter) Add() IsisLspExtendedIsReachabilityTlv { + newObj := &otg.IsisLspExtendedIsReachabilityTlv{} + *obj.fieldPtr = append(*obj.fieldPtr, newObj) + newLibObj := &isisLspExtendedIsReachabilityTlv{obj: newObj} + newLibObj.setDefault() + obj.isisLspExtendedIsReachabilityTlvSlice = append(obj.isisLspExtendedIsReachabilityTlvSlice, newLibObj) + return newLibObj +} + +func (obj *isisLspTlvsIsisLspExtendedIsReachabilityTlvIter) Append(items ...IsisLspExtendedIsReachabilityTlv) IsisLspTlvsIsisLspExtendedIsReachabilityTlvIter { + for _, item := range items { + newObj := item.Msg() + *obj.fieldPtr = append(*obj.fieldPtr, newObj) + obj.isisLspExtendedIsReachabilityTlvSlice = append(obj.isisLspExtendedIsReachabilityTlvSlice, item) + } + return obj +} +func (obj *isisLspTlvsIsisLspExtendedIsReachabilityTlvIter) Set(index int, newObj IsisLspExtendedIsReachabilityTlv) IsisLspTlvsIsisLspExtendedIsReachabilityTlvIter { + (*obj.fieldPtr)[index] = newObj.Msg() + obj.isisLspExtendedIsReachabilityTlvSlice[index] = newObj + return obj +} +func (obj *isisLspTlvsIsisLspExtendedIsReachabilityTlvIter) Clear() IsisLspTlvsIsisLspExtendedIsReachabilityTlvIter { + if len(*obj.fieldPtr) > 0 { + *obj.fieldPtr = []*otg.IsisLspExtendedIsReachabilityTlv{} + obj.isisLspExtendedIsReachabilityTlvSlice = []IsisLspExtendedIsReachabilityTlv{} + } + return obj +} +func (obj *isisLspTlvsIsisLspExtendedIsReachabilityTlvIter) clearHolderSlice() IsisLspTlvsIsisLspExtendedIsReachabilityTlvIter { + if len(obj.isisLspExtendedIsReachabilityTlvSlice) > 0 { + obj.isisLspExtendedIsReachabilityTlvSlice = []IsisLspExtendedIsReachabilityTlv{} + } + return obj +} +func (obj *isisLspTlvsIsisLspExtendedIsReachabilityTlvIter) appendHolderSlice(item IsisLspExtendedIsReachabilityTlv) IsisLspTlvsIsisLspExtendedIsReachabilityTlvIter { + obj.isisLspExtendedIsReachabilityTlvSlice = append(obj.isisLspExtendedIsReachabilityTlvSlice, item) + return obj } -// Specifies the amount of bandwidth that can be reserved for the Priority 4. -// Pb4 returns a uint32 -func (obj *linkStatepriorityBandwidths) HasPb4() bool { - return obj.obj.Pb4 != nil +// Array of IPv4 Internal Reachability TLVs (type 128) present in this LSP. +// Ipv4InternalReachabilityTlvs returns a []IsisLspIpv4InternalReachabilityTlv +func (obj *isisLspTlvs) Ipv4InternalReachabilityTlvs() IsisLspTlvsIsisLspIpv4InternalReachabilityTlvIter { + if len(obj.obj.Ipv4InternalReachabilityTlvs) == 0 { + obj.obj.Ipv4InternalReachabilityTlvs = []*otg.IsisLspIpv4InternalReachabilityTlv{} + } + if obj.ipv4InternalReachabilityTlvsHolder == nil { + obj.ipv4InternalReachabilityTlvsHolder = newIsisLspTlvsIsisLspIpv4InternalReachabilityTlvIter(&obj.obj.Ipv4InternalReachabilityTlvs).setMsg(obj) + } + return obj.ipv4InternalReachabilityTlvsHolder } -// Specifies the amount of bandwidth that can be reserved for the Priority 4. -// SetPb4 sets the uint32 value in the LinkStatepriorityBandwidths object -func (obj *linkStatepriorityBandwidths) SetPb4(value uint32) LinkStatepriorityBandwidths { +type isisLspTlvsIsisLspIpv4InternalReachabilityTlvIter struct { + obj *isisLspTlvs + isisLspIpv4InternalReachabilityTlvSlice []IsisLspIpv4InternalReachabilityTlv + fieldPtr *[]*otg.IsisLspIpv4InternalReachabilityTlv +} - obj.obj.Pb4 = &value +func newIsisLspTlvsIsisLspIpv4InternalReachabilityTlvIter(ptr *[]*otg.IsisLspIpv4InternalReachabilityTlv) IsisLspTlvsIsisLspIpv4InternalReachabilityTlvIter { + return &isisLspTlvsIsisLspIpv4InternalReachabilityTlvIter{fieldPtr: ptr} +} + +type IsisLspTlvsIsisLspIpv4InternalReachabilityTlvIter interface { + setMsg(*isisLspTlvs) IsisLspTlvsIsisLspIpv4InternalReachabilityTlvIter + Items() []IsisLspIpv4InternalReachabilityTlv + Add() IsisLspIpv4InternalReachabilityTlv + Append(items ...IsisLspIpv4InternalReachabilityTlv) IsisLspTlvsIsisLspIpv4InternalReachabilityTlvIter + Set(index int, newObj IsisLspIpv4InternalReachabilityTlv) IsisLspTlvsIsisLspIpv4InternalReachabilityTlvIter + Clear() IsisLspTlvsIsisLspIpv4InternalReachabilityTlvIter + clearHolderSlice() IsisLspTlvsIsisLspIpv4InternalReachabilityTlvIter + appendHolderSlice(item IsisLspIpv4InternalReachabilityTlv) IsisLspTlvsIsisLspIpv4InternalReachabilityTlvIter +} + +func (obj *isisLspTlvsIsisLspIpv4InternalReachabilityTlvIter) setMsg(msg *isisLspTlvs) IsisLspTlvsIsisLspIpv4InternalReachabilityTlvIter { + obj.clearHolderSlice() + for _, val := range *obj.fieldPtr { + obj.appendHolderSlice(&isisLspIpv4InternalReachabilityTlv{obj: val}) + } + obj.obj = msg return obj } -// Specifies the amount of bandwidth that can be reserved for the Priority 5. -// Pb5 returns a uint32 -func (obj *linkStatepriorityBandwidths) Pb5() uint32 { +func (obj *isisLspTlvsIsisLspIpv4InternalReachabilityTlvIter) Items() []IsisLspIpv4InternalReachabilityTlv { + return obj.isisLspIpv4InternalReachabilityTlvSlice +} - return *obj.obj.Pb5 +func (obj *isisLspTlvsIsisLspIpv4InternalReachabilityTlvIter) Add() IsisLspIpv4InternalReachabilityTlv { + newObj := &otg.IsisLspIpv4InternalReachabilityTlv{} + *obj.fieldPtr = append(*obj.fieldPtr, newObj) + newLibObj := &isisLspIpv4InternalReachabilityTlv{obj: newObj} + newLibObj.setDefault() + obj.isisLspIpv4InternalReachabilityTlvSlice = append(obj.isisLspIpv4InternalReachabilityTlvSlice, newLibObj) + return newLibObj +} +func (obj *isisLspTlvsIsisLspIpv4InternalReachabilityTlvIter) Append(items ...IsisLspIpv4InternalReachabilityTlv) IsisLspTlvsIsisLspIpv4InternalReachabilityTlvIter { + for _, item := range items { + newObj := item.Msg() + *obj.fieldPtr = append(*obj.fieldPtr, newObj) + obj.isisLspIpv4InternalReachabilityTlvSlice = append(obj.isisLspIpv4InternalReachabilityTlvSlice, item) + } + return obj } -// Specifies the amount of bandwidth that can be reserved for the Priority 5. -// Pb5 returns a uint32 -func (obj *linkStatepriorityBandwidths) HasPb5() bool { - return obj.obj.Pb5 != nil +func (obj *isisLspTlvsIsisLspIpv4InternalReachabilityTlvIter) Set(index int, newObj IsisLspIpv4InternalReachabilityTlv) IsisLspTlvsIsisLspIpv4InternalReachabilityTlvIter { + (*obj.fieldPtr)[index] = newObj.Msg() + obj.isisLspIpv4InternalReachabilityTlvSlice[index] = newObj + return obj +} +func (obj *isisLspTlvsIsisLspIpv4InternalReachabilityTlvIter) Clear() IsisLspTlvsIsisLspIpv4InternalReachabilityTlvIter { + if len(*obj.fieldPtr) > 0 { + *obj.fieldPtr = []*otg.IsisLspIpv4InternalReachabilityTlv{} + obj.isisLspIpv4InternalReachabilityTlvSlice = []IsisLspIpv4InternalReachabilityTlv{} + } + return obj +} +func (obj *isisLspTlvsIsisLspIpv4InternalReachabilityTlvIter) clearHolderSlice() IsisLspTlvsIsisLspIpv4InternalReachabilityTlvIter { + if len(obj.isisLspIpv4InternalReachabilityTlvSlice) > 0 { + obj.isisLspIpv4InternalReachabilityTlvSlice = []IsisLspIpv4InternalReachabilityTlv{} + } + return obj +} +func (obj *isisLspTlvsIsisLspIpv4InternalReachabilityTlvIter) appendHolderSlice(item IsisLspIpv4InternalReachabilityTlv) IsisLspTlvsIsisLspIpv4InternalReachabilityTlvIter { + obj.isisLspIpv4InternalReachabilityTlvSlice = append(obj.isisLspIpv4InternalReachabilityTlvSlice, item) + return obj } -// Specifies the amount of bandwidth that can be reserved for the Priority 5. -// SetPb5 sets the uint32 value in the LinkStatepriorityBandwidths object -func (obj *linkStatepriorityBandwidths) SetPb5(value uint32) LinkStatepriorityBandwidths { +// Array of IPv4 External Reachability TLVs (type 130) present in this LSP. +// Ipv4ExternalReachabilityTlvs returns a []IsisLspIpv4ExternalReachabilityTlv +func (obj *isisLspTlvs) Ipv4ExternalReachabilityTlvs() IsisLspTlvsIsisLspIpv4ExternalReachabilityTlvIter { + if len(obj.obj.Ipv4ExternalReachabilityTlvs) == 0 { + obj.obj.Ipv4ExternalReachabilityTlvs = []*otg.IsisLspIpv4ExternalReachabilityTlv{} + } + if obj.ipv4ExternalReachabilityTlvsHolder == nil { + obj.ipv4ExternalReachabilityTlvsHolder = newIsisLspTlvsIsisLspIpv4ExternalReachabilityTlvIter(&obj.obj.Ipv4ExternalReachabilityTlvs).setMsg(obj) + } + return obj.ipv4ExternalReachabilityTlvsHolder +} - obj.obj.Pb5 = &value +type isisLspTlvsIsisLspIpv4ExternalReachabilityTlvIter struct { + obj *isisLspTlvs + isisLspIpv4ExternalReachabilityTlvSlice []IsisLspIpv4ExternalReachabilityTlv + fieldPtr *[]*otg.IsisLspIpv4ExternalReachabilityTlv +} + +func newIsisLspTlvsIsisLspIpv4ExternalReachabilityTlvIter(ptr *[]*otg.IsisLspIpv4ExternalReachabilityTlv) IsisLspTlvsIsisLspIpv4ExternalReachabilityTlvIter { + return &isisLspTlvsIsisLspIpv4ExternalReachabilityTlvIter{fieldPtr: ptr} +} + +type IsisLspTlvsIsisLspIpv4ExternalReachabilityTlvIter interface { + setMsg(*isisLspTlvs) IsisLspTlvsIsisLspIpv4ExternalReachabilityTlvIter + Items() []IsisLspIpv4ExternalReachabilityTlv + Add() IsisLspIpv4ExternalReachabilityTlv + Append(items ...IsisLspIpv4ExternalReachabilityTlv) IsisLspTlvsIsisLspIpv4ExternalReachabilityTlvIter + Set(index int, newObj IsisLspIpv4ExternalReachabilityTlv) IsisLspTlvsIsisLspIpv4ExternalReachabilityTlvIter + Clear() IsisLspTlvsIsisLspIpv4ExternalReachabilityTlvIter + clearHolderSlice() IsisLspTlvsIsisLspIpv4ExternalReachabilityTlvIter + appendHolderSlice(item IsisLspIpv4ExternalReachabilityTlv) IsisLspTlvsIsisLspIpv4ExternalReachabilityTlvIter +} + +func (obj *isisLspTlvsIsisLspIpv4ExternalReachabilityTlvIter) setMsg(msg *isisLspTlvs) IsisLspTlvsIsisLspIpv4ExternalReachabilityTlvIter { + obj.clearHolderSlice() + for _, val := range *obj.fieldPtr { + obj.appendHolderSlice(&isisLspIpv4ExternalReachabilityTlv{obj: val}) + } + obj.obj = msg return obj } -// Specifies the amount of bandwidth that can be reserved for the Priority 6. -// Pb6 returns a uint32 -func (obj *linkStatepriorityBandwidths) Pb6() uint32 { +func (obj *isisLspTlvsIsisLspIpv4ExternalReachabilityTlvIter) Items() []IsisLspIpv4ExternalReachabilityTlv { + return obj.isisLspIpv4ExternalReachabilityTlvSlice +} - return *obj.obj.Pb6 +func (obj *isisLspTlvsIsisLspIpv4ExternalReachabilityTlvIter) Add() IsisLspIpv4ExternalReachabilityTlv { + newObj := &otg.IsisLspIpv4ExternalReachabilityTlv{} + *obj.fieldPtr = append(*obj.fieldPtr, newObj) + newLibObj := &isisLspIpv4ExternalReachabilityTlv{obj: newObj} + newLibObj.setDefault() + obj.isisLspIpv4ExternalReachabilityTlvSlice = append(obj.isisLspIpv4ExternalReachabilityTlvSlice, newLibObj) + return newLibObj +} +func (obj *isisLspTlvsIsisLspIpv4ExternalReachabilityTlvIter) Append(items ...IsisLspIpv4ExternalReachabilityTlv) IsisLspTlvsIsisLspIpv4ExternalReachabilityTlvIter { + for _, item := range items { + newObj := item.Msg() + *obj.fieldPtr = append(*obj.fieldPtr, newObj) + obj.isisLspIpv4ExternalReachabilityTlvSlice = append(obj.isisLspIpv4ExternalReachabilityTlvSlice, item) + } + return obj } -// Specifies the amount of bandwidth that can be reserved for the Priority 6. -// Pb6 returns a uint32 -func (obj *linkStatepriorityBandwidths) HasPb6() bool { - return obj.obj.Pb6 != nil +func (obj *isisLspTlvsIsisLspIpv4ExternalReachabilityTlvIter) Set(index int, newObj IsisLspIpv4ExternalReachabilityTlv) IsisLspTlvsIsisLspIpv4ExternalReachabilityTlvIter { + (*obj.fieldPtr)[index] = newObj.Msg() + obj.isisLspIpv4ExternalReachabilityTlvSlice[index] = newObj + return obj +} +func (obj *isisLspTlvsIsisLspIpv4ExternalReachabilityTlvIter) Clear() IsisLspTlvsIsisLspIpv4ExternalReachabilityTlvIter { + if len(*obj.fieldPtr) > 0 { + *obj.fieldPtr = []*otg.IsisLspIpv4ExternalReachabilityTlv{} + obj.isisLspIpv4ExternalReachabilityTlvSlice = []IsisLspIpv4ExternalReachabilityTlv{} + } + return obj +} +func (obj *isisLspTlvsIsisLspIpv4ExternalReachabilityTlvIter) clearHolderSlice() IsisLspTlvsIsisLspIpv4ExternalReachabilityTlvIter { + if len(obj.isisLspIpv4ExternalReachabilityTlvSlice) > 0 { + obj.isisLspIpv4ExternalReachabilityTlvSlice = []IsisLspIpv4ExternalReachabilityTlv{} + } + return obj +} +func (obj *isisLspTlvsIsisLspIpv4ExternalReachabilityTlvIter) appendHolderSlice(item IsisLspIpv4ExternalReachabilityTlv) IsisLspTlvsIsisLspIpv4ExternalReachabilityTlvIter { + obj.isisLspIpv4ExternalReachabilityTlvSlice = append(obj.isisLspIpv4ExternalReachabilityTlvSlice, item) + return obj } -// Specifies the amount of bandwidth that can be reserved for the Priority 6. -// SetPb6 sets the uint32 value in the LinkStatepriorityBandwidths object -func (obj *linkStatepriorityBandwidths) SetPb6(value uint32) LinkStatepriorityBandwidths { +// Array of IPv4 Extended Reachability TLVs (type 135) present in this LSP. +// ExtendedIpv4ReachabilityTlvs returns a []IsisLspExtendedIpv4ReachabilityTlv +func (obj *isisLspTlvs) ExtendedIpv4ReachabilityTlvs() IsisLspTlvsIsisLspExtendedIpv4ReachabilityTlvIter { + if len(obj.obj.ExtendedIpv4ReachabilityTlvs) == 0 { + obj.obj.ExtendedIpv4ReachabilityTlvs = []*otg.IsisLspExtendedIpv4ReachabilityTlv{} + } + if obj.extendedIpv4ReachabilityTlvsHolder == nil { + obj.extendedIpv4ReachabilityTlvsHolder = newIsisLspTlvsIsisLspExtendedIpv4ReachabilityTlvIter(&obj.obj.ExtendedIpv4ReachabilityTlvs).setMsg(obj) + } + return obj.extendedIpv4ReachabilityTlvsHolder +} - obj.obj.Pb6 = &value +type isisLspTlvsIsisLspExtendedIpv4ReachabilityTlvIter struct { + obj *isisLspTlvs + isisLspExtendedIpv4ReachabilityTlvSlice []IsisLspExtendedIpv4ReachabilityTlv + fieldPtr *[]*otg.IsisLspExtendedIpv4ReachabilityTlv +} + +func newIsisLspTlvsIsisLspExtendedIpv4ReachabilityTlvIter(ptr *[]*otg.IsisLspExtendedIpv4ReachabilityTlv) IsisLspTlvsIsisLspExtendedIpv4ReachabilityTlvIter { + return &isisLspTlvsIsisLspExtendedIpv4ReachabilityTlvIter{fieldPtr: ptr} +} + +type IsisLspTlvsIsisLspExtendedIpv4ReachabilityTlvIter interface { + setMsg(*isisLspTlvs) IsisLspTlvsIsisLspExtendedIpv4ReachabilityTlvIter + Items() []IsisLspExtendedIpv4ReachabilityTlv + Add() IsisLspExtendedIpv4ReachabilityTlv + Append(items ...IsisLspExtendedIpv4ReachabilityTlv) IsisLspTlvsIsisLspExtendedIpv4ReachabilityTlvIter + Set(index int, newObj IsisLspExtendedIpv4ReachabilityTlv) IsisLspTlvsIsisLspExtendedIpv4ReachabilityTlvIter + Clear() IsisLspTlvsIsisLspExtendedIpv4ReachabilityTlvIter + clearHolderSlice() IsisLspTlvsIsisLspExtendedIpv4ReachabilityTlvIter + appendHolderSlice(item IsisLspExtendedIpv4ReachabilityTlv) IsisLspTlvsIsisLspExtendedIpv4ReachabilityTlvIter +} + +func (obj *isisLspTlvsIsisLspExtendedIpv4ReachabilityTlvIter) setMsg(msg *isisLspTlvs) IsisLspTlvsIsisLspExtendedIpv4ReachabilityTlvIter { + obj.clearHolderSlice() + for _, val := range *obj.fieldPtr { + obj.appendHolderSlice(&isisLspExtendedIpv4ReachabilityTlv{obj: val}) + } + obj.obj = msg return obj } -// Specifies the amount of bandwidth that can be reserved for the Priority 7. -// Pb7 returns a uint32 -func (obj *linkStatepriorityBandwidths) Pb7() uint32 { +func (obj *isisLspTlvsIsisLspExtendedIpv4ReachabilityTlvIter) Items() []IsisLspExtendedIpv4ReachabilityTlv { + return obj.isisLspExtendedIpv4ReachabilityTlvSlice +} - return *obj.obj.Pb7 +func (obj *isisLspTlvsIsisLspExtendedIpv4ReachabilityTlvIter) Add() IsisLspExtendedIpv4ReachabilityTlv { + newObj := &otg.IsisLspExtendedIpv4ReachabilityTlv{} + *obj.fieldPtr = append(*obj.fieldPtr, newObj) + newLibObj := &isisLspExtendedIpv4ReachabilityTlv{obj: newObj} + newLibObj.setDefault() + obj.isisLspExtendedIpv4ReachabilityTlvSlice = append(obj.isisLspExtendedIpv4ReachabilityTlvSlice, newLibObj) + return newLibObj +} +func (obj *isisLspTlvsIsisLspExtendedIpv4ReachabilityTlvIter) Append(items ...IsisLspExtendedIpv4ReachabilityTlv) IsisLspTlvsIsisLspExtendedIpv4ReachabilityTlvIter { + for _, item := range items { + newObj := item.Msg() + *obj.fieldPtr = append(*obj.fieldPtr, newObj) + obj.isisLspExtendedIpv4ReachabilityTlvSlice = append(obj.isisLspExtendedIpv4ReachabilityTlvSlice, item) + } + return obj } -// Specifies the amount of bandwidth that can be reserved for the Priority 7. -// Pb7 returns a uint32 -func (obj *linkStatepriorityBandwidths) HasPb7() bool { - return obj.obj.Pb7 != nil +func (obj *isisLspTlvsIsisLspExtendedIpv4ReachabilityTlvIter) Set(index int, newObj IsisLspExtendedIpv4ReachabilityTlv) IsisLspTlvsIsisLspExtendedIpv4ReachabilityTlvIter { + (*obj.fieldPtr)[index] = newObj.Msg() + obj.isisLspExtendedIpv4ReachabilityTlvSlice[index] = newObj + return obj +} +func (obj *isisLspTlvsIsisLspExtendedIpv4ReachabilityTlvIter) Clear() IsisLspTlvsIsisLspExtendedIpv4ReachabilityTlvIter { + if len(*obj.fieldPtr) > 0 { + *obj.fieldPtr = []*otg.IsisLspExtendedIpv4ReachabilityTlv{} + obj.isisLspExtendedIpv4ReachabilityTlvSlice = []IsisLspExtendedIpv4ReachabilityTlv{} + } + return obj +} +func (obj *isisLspTlvsIsisLspExtendedIpv4ReachabilityTlvIter) clearHolderSlice() IsisLspTlvsIsisLspExtendedIpv4ReachabilityTlvIter { + if len(obj.isisLspExtendedIpv4ReachabilityTlvSlice) > 0 { + obj.isisLspExtendedIpv4ReachabilityTlvSlice = []IsisLspExtendedIpv4ReachabilityTlv{} + } + return obj +} +func (obj *isisLspTlvsIsisLspExtendedIpv4ReachabilityTlvIter) appendHolderSlice(item IsisLspExtendedIpv4ReachabilityTlv) IsisLspTlvsIsisLspExtendedIpv4ReachabilityTlvIter { + obj.isisLspExtendedIpv4ReachabilityTlvSlice = append(obj.isisLspExtendedIpv4ReachabilityTlvSlice, item) + return obj } -// Specifies the amount of bandwidth that can be reserved for the Priority 7. -// SetPb7 sets the uint32 value in the LinkStatepriorityBandwidths object -func (obj *linkStatepriorityBandwidths) SetPb7(value uint32) LinkStatepriorityBandwidths { +// Array of IPv6 Reachability TLVs (type 236) present in this LSP. +// Ipv6ReachabilityTlvs returns a []IsisLspIpv6ReachabilityTlv +func (obj *isisLspTlvs) Ipv6ReachabilityTlvs() IsisLspTlvsIsisLspIpv6ReachabilityTlvIter { + if len(obj.obj.Ipv6ReachabilityTlvs) == 0 { + obj.obj.Ipv6ReachabilityTlvs = []*otg.IsisLspIpv6ReachabilityTlv{} + } + if obj.ipv6ReachabilityTlvsHolder == nil { + obj.ipv6ReachabilityTlvsHolder = newIsisLspTlvsIsisLspIpv6ReachabilityTlvIter(&obj.obj.Ipv6ReachabilityTlvs).setMsg(obj) + } + return obj.ipv6ReachabilityTlvsHolder +} - obj.obj.Pb7 = &value +type isisLspTlvsIsisLspIpv6ReachabilityTlvIter struct { + obj *isisLspTlvs + isisLspIpv6ReachabilityTlvSlice []IsisLspIpv6ReachabilityTlv + fieldPtr *[]*otg.IsisLspIpv6ReachabilityTlv +} + +func newIsisLspTlvsIsisLspIpv6ReachabilityTlvIter(ptr *[]*otg.IsisLspIpv6ReachabilityTlv) IsisLspTlvsIsisLspIpv6ReachabilityTlvIter { + return &isisLspTlvsIsisLspIpv6ReachabilityTlvIter{fieldPtr: ptr} +} + +type IsisLspTlvsIsisLspIpv6ReachabilityTlvIter interface { + setMsg(*isisLspTlvs) IsisLspTlvsIsisLspIpv6ReachabilityTlvIter + Items() []IsisLspIpv6ReachabilityTlv + Add() IsisLspIpv6ReachabilityTlv + Append(items ...IsisLspIpv6ReachabilityTlv) IsisLspTlvsIsisLspIpv6ReachabilityTlvIter + Set(index int, newObj IsisLspIpv6ReachabilityTlv) IsisLspTlvsIsisLspIpv6ReachabilityTlvIter + Clear() IsisLspTlvsIsisLspIpv6ReachabilityTlvIter + clearHolderSlice() IsisLspTlvsIsisLspIpv6ReachabilityTlvIter + appendHolderSlice(item IsisLspIpv6ReachabilityTlv) IsisLspTlvsIsisLspIpv6ReachabilityTlvIter +} + +func (obj *isisLspTlvsIsisLspIpv6ReachabilityTlvIter) setMsg(msg *isisLspTlvs) IsisLspTlvsIsisLspIpv6ReachabilityTlvIter { + obj.clearHolderSlice() + for _, val := range *obj.fieldPtr { + obj.appendHolderSlice(&isisLspIpv6ReachabilityTlv{obj: val}) + } + obj.obj = msg return obj } -func (obj *linkStatepriorityBandwidths) validateObj(vObj *validation, set_default bool) { - if set_default { - obj.setDefault() +func (obj *isisLspTlvsIsisLspIpv6ReachabilityTlvIter) Items() []IsisLspIpv6ReachabilityTlv { + return obj.isisLspIpv6ReachabilityTlvSlice +} + +func (obj *isisLspTlvsIsisLspIpv6ReachabilityTlvIter) Add() IsisLspIpv6ReachabilityTlv { + newObj := &otg.IsisLspIpv6ReachabilityTlv{} + *obj.fieldPtr = append(*obj.fieldPtr, newObj) + newLibObj := &isisLspIpv6ReachabilityTlv{obj: newObj} + newLibObj.setDefault() + obj.isisLspIpv6ReachabilityTlvSlice = append(obj.isisLspIpv6ReachabilityTlvSlice, newLibObj) + return newLibObj +} + +func (obj *isisLspTlvsIsisLspIpv6ReachabilityTlvIter) Append(items ...IsisLspIpv6ReachabilityTlv) IsisLspTlvsIsisLspIpv6ReachabilityTlvIter { + for _, item := range items { + newObj := item.Msg() + *obj.fieldPtr = append(*obj.fieldPtr, newObj) + obj.isisLspIpv6ReachabilityTlvSlice = append(obj.isisLspIpv6ReachabilityTlvSlice, item) } + return obj +} +func (obj *isisLspTlvsIsisLspIpv6ReachabilityTlvIter) Set(index int, newObj IsisLspIpv6ReachabilityTlv) IsisLspTlvsIsisLspIpv6ReachabilityTlvIter { + (*obj.fieldPtr)[index] = newObj.Msg() + obj.isisLspIpv6ReachabilityTlvSlice[index] = newObj + return obj +} +func (obj *isisLspTlvsIsisLspIpv6ReachabilityTlvIter) Clear() IsisLspTlvsIsisLspIpv6ReachabilityTlvIter { + if len(*obj.fieldPtr) > 0 { + *obj.fieldPtr = []*otg.IsisLspIpv6ReachabilityTlv{} + obj.isisLspIpv6ReachabilityTlvSlice = []IsisLspIpv6ReachabilityTlv{} + } + return obj +} +func (obj *isisLspTlvsIsisLspIpv6ReachabilityTlvIter) clearHolderSlice() IsisLspTlvsIsisLspIpv6ReachabilityTlvIter { + if len(obj.isisLspIpv6ReachabilityTlvSlice) > 0 { + obj.isisLspIpv6ReachabilityTlvSlice = []IsisLspIpv6ReachabilityTlv{} + } + return obj +} +func (obj *isisLspTlvsIsisLspIpv6ReachabilityTlvIter) appendHolderSlice(item IsisLspIpv6ReachabilityTlv) IsisLspTlvsIsisLspIpv6ReachabilityTlvIter { + obj.isisLspIpv6ReachabilityTlvSlice = append(obj.isisLspIpv6ReachabilityTlvSlice, item) + return obj } -func (obj *linkStatepriorityBandwidths) setDefault() { - if obj.obj.Pb0 == nil { - obj.SetPb0(125000000) +func (obj *isisLspTlvs) validateObj(vObj *validation, set_default bool) { + if set_default { + obj.setDefault() } - if obj.obj.Pb1 == nil { - obj.SetPb1(125000000) + + if len(obj.obj.HostnameTlvs) != 0 { + + if set_default { + obj.HostnameTlvs().clearHolderSlice() + for _, item := range obj.obj.HostnameTlvs { + obj.HostnameTlvs().appendHolderSlice(&isisLspHostname{obj: item}) + } + } + for _, item := range obj.HostnameTlvs().Items() { + item.validateObj(vObj, set_default) + } + } - if obj.obj.Pb2 == nil { - obj.SetPb2(125000000) + + if len(obj.obj.IsReachabilityTlvs) != 0 { + + if set_default { + obj.IsReachabilityTlvs().clearHolderSlice() + for _, item := range obj.obj.IsReachabilityTlvs { + obj.IsReachabilityTlvs().appendHolderSlice(&isisLspIsReachabilityTlv{obj: item}) + } + } + for _, item := range obj.IsReachabilityTlvs().Items() { + item.validateObj(vObj, set_default) + } + } - if obj.obj.Pb3 == nil { - obj.SetPb3(125000000) + + if len(obj.obj.ExtendedIsReachabilityTlvs) != 0 { + + if set_default { + obj.ExtendedIsReachabilityTlvs().clearHolderSlice() + for _, item := range obj.obj.ExtendedIsReachabilityTlvs { + obj.ExtendedIsReachabilityTlvs().appendHolderSlice(&isisLspExtendedIsReachabilityTlv{obj: item}) + } + } + for _, item := range obj.ExtendedIsReachabilityTlvs().Items() { + item.validateObj(vObj, set_default) + } + } - if obj.obj.Pb4 == nil { - obj.SetPb4(125000000) + + if len(obj.obj.Ipv4InternalReachabilityTlvs) != 0 { + + if set_default { + obj.Ipv4InternalReachabilityTlvs().clearHolderSlice() + for _, item := range obj.obj.Ipv4InternalReachabilityTlvs { + obj.Ipv4InternalReachabilityTlvs().appendHolderSlice(&isisLspIpv4InternalReachabilityTlv{obj: item}) + } + } + for _, item := range obj.Ipv4InternalReachabilityTlvs().Items() { + item.validateObj(vObj, set_default) + } + } - if obj.obj.Pb5 == nil { - obj.SetPb5(125000000) + + if len(obj.obj.Ipv4ExternalReachabilityTlvs) != 0 { + + if set_default { + obj.Ipv4ExternalReachabilityTlvs().clearHolderSlice() + for _, item := range obj.obj.Ipv4ExternalReachabilityTlvs { + obj.Ipv4ExternalReachabilityTlvs().appendHolderSlice(&isisLspIpv4ExternalReachabilityTlv{obj: item}) + } + } + for _, item := range obj.Ipv4ExternalReachabilityTlvs().Items() { + item.validateObj(vObj, set_default) + } + } - if obj.obj.Pb6 == nil { - obj.SetPb6(125000000) + + if len(obj.obj.ExtendedIpv4ReachabilityTlvs) != 0 { + + if set_default { + obj.ExtendedIpv4ReachabilityTlvs().clearHolderSlice() + for _, item := range obj.obj.ExtendedIpv4ReachabilityTlvs { + obj.ExtendedIpv4ReachabilityTlvs().appendHolderSlice(&isisLspExtendedIpv4ReachabilityTlv{obj: item}) + } + } + for _, item := range obj.ExtendedIpv4ReachabilityTlvs().Items() { + item.validateObj(vObj, set_default) + } + } - if obj.obj.Pb7 == nil { - obj.SetPb7(125000000) + + if len(obj.obj.Ipv6ReachabilityTlvs) != 0 { + + if set_default { + obj.Ipv6ReachabilityTlvs().clearHolderSlice() + for _, item := range obj.obj.Ipv6ReachabilityTlvs { + obj.Ipv6ReachabilityTlvs().appendHolderSlice(&isisLspIpv6ReachabilityTlv{obj: item}) + } + } + for _, item := range obj.Ipv6ReachabilityTlvs().Items() { + item.validateObj(vObj, set_default) + } + } } -// ***** BgpV4EthernetSegment ***** -type bgpV4EthernetSegment struct { +func (obj *isisLspTlvs) setDefault() { + +} + +// ***** RsvpLspState ***** +type rsvpLspState struct { validation - obj *otg.BgpV4EthernetSegment - dfElectionHolder BgpEthernetSegmentDfElection - evisHolder BgpV4EthernetSegmentBgpV4EvpnEvisIter - advancedHolder BgpRouteAdvanced - communitiesHolder BgpV4EthernetSegmentBgpCommunityIter - extCommunitiesHolder BgpV4EthernetSegmentBgpExtCommunityIter - asPathHolder BgpAsPath + obj *otg.RsvpLspState } -func NewBgpV4EthernetSegment() BgpV4EthernetSegment { - obj := bgpV4EthernetSegment{obj: &otg.BgpV4EthernetSegment{}} +func NewRsvpLspState() RsvpLspState { + obj := rsvpLspState{obj: &otg.RsvpLspState{}} obj.setDefault() return &obj } -func (obj *bgpV4EthernetSegment) Msg() *otg.BgpV4EthernetSegment { +func (obj *rsvpLspState) Msg() *otg.RsvpLspState { return obj.obj } -func (obj *bgpV4EthernetSegment) SetMsg(msg *otg.BgpV4EthernetSegment) BgpV4EthernetSegment { - obj.setNil() +func (obj *rsvpLspState) SetMsg(msg *otg.RsvpLspState) RsvpLspState { + proto.Merge(obj.obj, msg) return obj } -func (obj *bgpV4EthernetSegment) ToProto() (*otg.BgpV4EthernetSegment, error) { +func (obj *rsvpLspState) ToProto() (*otg.RsvpLspState, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -173000,7 +174318,7 @@ func (obj *bgpV4EthernetSegment) ToProto() (*otg.BgpV4EthernetSegment, error) { return obj.Msg(), nil } -func (obj *bgpV4EthernetSegment) FromProto(msg *otg.BgpV4EthernetSegment) (BgpV4EthernetSegment, error) { +func (obj *rsvpLspState) FromProto(msg *otg.RsvpLspState) (RsvpLspState, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -173009,7 +174327,7 @@ func (obj *bgpV4EthernetSegment) FromProto(msg *otg.BgpV4EthernetSegment) (BgpV4 return newObj, nil } -func (obj *bgpV4EthernetSegment) ToPbText() (string, error) { +func (obj *rsvpLspState) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -173021,12 +174339,12 @@ func (obj *bgpV4EthernetSegment) ToPbText() (string, error) { return string(protoMarshal), nil } -func (obj *bgpV4EthernetSegment) FromPbText(value string) error { +func (obj *rsvpLspState) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj } - obj.setNil() + vErr := obj.validateToAndFrom() if vErr != nil { return vErr @@ -173034,7 +174352,7 @@ func (obj *bgpV4EthernetSegment) FromPbText(value string) error { return retObj } -func (obj *bgpV4EthernetSegment) ToYaml() (string, error) { +func (obj *rsvpLspState) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -173055,7 +174373,7 @@ func (obj *bgpV4EthernetSegment) ToYaml() (string, error) { return string(data), nil } -func (obj *bgpV4EthernetSegment) FromYaml(value string) error { +func (obj *rsvpLspState) FromYaml(value string) error { if value == "" { value = "{}" } @@ -173072,7 +174390,7 @@ func (obj *bgpV4EthernetSegment) FromYaml(value string) error { return fmt.Errorf("unmarshal error %s", strings.Replace( uError.Error(), "\u00a0", " ", -1)[7:]) } - obj.setNil() + vErr := obj.validateToAndFrom() if vErr != nil { return vErr @@ -173080,7 +174398,7 @@ func (obj *bgpV4EthernetSegment) FromYaml(value string) error { return nil } -func (obj *bgpV4EthernetSegment) ToJson() (string, error) { +func (obj *rsvpLspState) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -173098,7 +174416,7 @@ func (obj *bgpV4EthernetSegment) ToJson() (string, error) { return string(data), nil } -func (obj *bgpV4EthernetSegment) FromJson(value string) error { +func (obj *rsvpLspState) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -173111,7 +174429,7 @@ func (obj *bgpV4EthernetSegment) FromJson(value string) error { return fmt.Errorf("unmarshal error %s", strings.Replace( uError.Error(), "\u00a0", " ", -1)[7:]) } - obj.setNil() + err := obj.validateToAndFrom() if err != nil { return err @@ -173119,19 +174437,19 @@ func (obj *bgpV4EthernetSegment) FromJson(value string) error { return nil } -func (obj *bgpV4EthernetSegment) validateToAndFrom() error { +func (obj *rsvpLspState) validateToAndFrom() error { // emptyVars() obj.validateObj(&obj.validation, true) return obj.validationResult() } -func (obj *bgpV4EthernetSegment) Validate() error { +func (obj *rsvpLspState) Validate() error { // emptyVars() obj.validateObj(&obj.validation, false) return obj.validationResult() } -func (obj *bgpV4EthernetSegment) String() string { +func (obj *rsvpLspState) String() string { str, err := obj.ToYaml() if err != nil { return err.Error() @@ -173139,12 +174457,12 @@ func (obj *bgpV4EthernetSegment) String() string { return str } -func (obj *bgpV4EthernetSegment) Clone() (BgpV4EthernetSegment, error) { +func (obj *rsvpLspState) Clone() (RsvpLspState, error) { vErr := obj.Validate() if vErr != nil { return nil, vErr } - newObj := NewBgpV4EthernetSegment() + newObj := NewRsvpLspState() data, err := proto.Marshal(obj.Msg()) if err != nil { return nil, err @@ -173156,648 +174474,326 @@ func (obj *bgpV4EthernetSegment) Clone() (BgpV4EthernetSegment, error) { return newObj, nil } -func (obj *bgpV4EthernetSegment) setNil() { - obj.dfElectionHolder = nil - obj.evisHolder = nil - obj.advancedHolder = nil - obj.communitiesHolder = nil - obj.extCommunitiesHolder = nil - obj.asPathHolder = nil - obj.validationErrors = nil - obj.warnings = nil - obj.constraints = make(map[string]map[string]Constraints) -} - -// BgpV4EthernetSegment is configuration for BGP Ethernet Segment ranges. Advertises following routes - -// -// Type 4 - Ethernet Segment Route -type BgpV4EthernetSegment interface { +// RsvpLspState is iPv4 RSVP-TE Discovered LSPs. +type RsvpLspState interface { Validation - // Msg marshals BgpV4EthernetSegment to protobuf object *otg.BgpV4EthernetSegment + // Msg marshals RsvpLspState to protobuf object *otg.RsvpLspState // and doesn't set defaults - Msg() *otg.BgpV4EthernetSegment - // SetMsg unmarshals BgpV4EthernetSegment from protobuf object *otg.BgpV4EthernetSegment + Msg() *otg.RsvpLspState + // SetMsg unmarshals RsvpLspState from protobuf object *otg.RsvpLspState // and doesn't set defaults - SetMsg(*otg.BgpV4EthernetSegment) BgpV4EthernetSegment - // ToProto marshals BgpV4EthernetSegment to protobuf object *otg.BgpV4EthernetSegment - ToProto() (*otg.BgpV4EthernetSegment, error) - // ToPbText marshals BgpV4EthernetSegment to protobuf text + SetMsg(*otg.RsvpLspState) RsvpLspState + // ToProto marshals RsvpLspState to protobuf object *otg.RsvpLspState + ToProto() (*otg.RsvpLspState, error) + // ToPbText marshals RsvpLspState to protobuf text ToPbText() (string, error) - // ToYaml marshals BgpV4EthernetSegment to YAML text + // ToYaml marshals RsvpLspState to YAML text ToYaml() (string, error) - // ToJson marshals BgpV4EthernetSegment to JSON text + // ToJson marshals RsvpLspState to JSON text ToJson() (string, error) - // FromProto unmarshals BgpV4EthernetSegment from protobuf object *otg.BgpV4EthernetSegment - FromProto(msg *otg.BgpV4EthernetSegment) (BgpV4EthernetSegment, error) - // FromPbText unmarshals BgpV4EthernetSegment from protobuf text + // FromProto unmarshals RsvpLspState from protobuf object *otg.RsvpLspState + FromProto(msg *otg.RsvpLspState) (RsvpLspState, error) + // FromPbText unmarshals RsvpLspState from protobuf text FromPbText(value string) error - // FromYaml unmarshals BgpV4EthernetSegment from YAML text + // FromYaml unmarshals RsvpLspState from YAML text FromYaml(value string) error - // FromJson unmarshals BgpV4EthernetSegment from JSON text + // FromJson unmarshals RsvpLspState from JSON text FromJson(value string) error - // Validate validates BgpV4EthernetSegment + // Validate validates RsvpLspState Validate() error // A stringer function String() string // Clones the object - Clone() (BgpV4EthernetSegment, error) + Clone() (RsvpLspState, error) validateToAndFrom() error validateObj(vObj *validation, set_default bool) setDefault() - // DfElection returns BgpEthernetSegmentDfElection, set in BgpV4EthernetSegment. - // BgpEthernetSegmentDfElection is configuration for Designated Forwarder (DF) election among the Provider Edge (PE) routers on the same Ethernet Segment. - DfElection() BgpEthernetSegmentDfElection - // SetDfElection assigns BgpEthernetSegmentDfElection provided by user to BgpV4EthernetSegment. - // BgpEthernetSegmentDfElection is configuration for Designated Forwarder (DF) election among the Provider Edge (PE) routers on the same Ethernet Segment. - SetDfElection(value BgpEthernetSegmentDfElection) BgpV4EthernetSegment - // HasDfElection checks if DfElection has been set in BgpV4EthernetSegment - HasDfElection() bool - // Evis returns BgpV4EthernetSegmentBgpV4EvpnEvisIterIter, set in BgpV4EthernetSegment - Evis() BgpV4EthernetSegmentBgpV4EvpnEvisIter - // Esi returns string, set in BgpV4EthernetSegment. - Esi() string - // SetEsi assigns string provided by user to BgpV4EthernetSegment - SetEsi(value string) BgpV4EthernetSegment - // HasEsi checks if Esi has been set in BgpV4EthernetSegment - HasEsi() bool - // ActiveMode returns BgpV4EthernetSegmentActiveModeEnum, set in BgpV4EthernetSegment - ActiveMode() BgpV4EthernetSegmentActiveModeEnum - // SetActiveMode assigns BgpV4EthernetSegmentActiveModeEnum provided by user to BgpV4EthernetSegment - SetActiveMode(value BgpV4EthernetSegmentActiveModeEnum) BgpV4EthernetSegment - // HasActiveMode checks if ActiveMode has been set in BgpV4EthernetSegment - HasActiveMode() bool - // EsiLabel returns uint32, set in BgpV4EthernetSegment. - EsiLabel() uint32 - // SetEsiLabel assigns uint32 provided by user to BgpV4EthernetSegment - SetEsiLabel(value uint32) BgpV4EthernetSegment - // HasEsiLabel checks if EsiLabel has been set in BgpV4EthernetSegment - HasEsiLabel() bool - // Advanced returns BgpRouteAdvanced, set in BgpV4EthernetSegment. - // BgpRouteAdvanced is configuration for advanced BGP route range settings. - Advanced() BgpRouteAdvanced - // SetAdvanced assigns BgpRouteAdvanced provided by user to BgpV4EthernetSegment. - // BgpRouteAdvanced is configuration for advanced BGP route range settings. - SetAdvanced(value BgpRouteAdvanced) BgpV4EthernetSegment - // HasAdvanced checks if Advanced has been set in BgpV4EthernetSegment - HasAdvanced() bool - // Communities returns BgpV4EthernetSegmentBgpCommunityIterIter, set in BgpV4EthernetSegment - Communities() BgpV4EthernetSegmentBgpCommunityIter - // ExtCommunities returns BgpV4EthernetSegmentBgpExtCommunityIterIter, set in BgpV4EthernetSegment - ExtCommunities() BgpV4EthernetSegmentBgpExtCommunityIter - // AsPath returns BgpAsPath, set in BgpV4EthernetSegment. - // BgpAsPath is this attribute identifies the autonomous systems through which routing information carried in this UPDATE message has passed. This contains the configuration of how to include the Local AS in the AS path attribute of the MP REACH NLRI. It also contains optional configuration of additional AS Path Segments that can be included in the AS Path attribute. The AS Path consists of a Set or Sequence of Autonomous Systems (AS) numbers that a routing information passes through to reach the destination. - AsPath() BgpAsPath - // SetAsPath assigns BgpAsPath provided by user to BgpV4EthernetSegment. - // BgpAsPath is this attribute identifies the autonomous systems through which routing information carried in this UPDATE message has passed. This contains the configuration of how to include the Local AS in the AS path attribute of the MP REACH NLRI. It also contains optional configuration of additional AS Path Segments that can be included in the AS Path attribute. The AS Path consists of a Set or Sequence of Autonomous Systems (AS) numbers that a routing information passes through to reach the destination. - SetAsPath(value BgpAsPath) BgpV4EthernetSegment - // HasAsPath checks if AsPath has been set in BgpV4EthernetSegment - HasAsPath() bool - setNil() + // TunnelId returns uint32, set in RsvpLspState. + TunnelId() uint32 + // SetTunnelId assigns uint32 provided by user to RsvpLspState + SetTunnelId(value uint32) RsvpLspState + // HasTunnelId checks if TunnelId has been set in RsvpLspState + HasTunnelId() bool + // LspId returns uint32, set in RsvpLspState. + LspId() uint32 + // SetLspId assigns uint32 provided by user to RsvpLspState + SetLspId(value uint32) RsvpLspState + // HasLspId checks if LspId has been set in RsvpLspState + HasLspId() bool + // SessionName returns string, set in RsvpLspState. + SessionName() string + // SetSessionName assigns string provided by user to RsvpLspState + SetSessionName(value string) RsvpLspState + // HasSessionName checks if SessionName has been set in RsvpLspState + HasSessionName() bool + // LabelIn returns uint32, set in RsvpLspState. + LabelIn() uint32 + // SetLabelIn assigns uint32 provided by user to RsvpLspState + SetLabelIn(value uint32) RsvpLspState + // HasLabelIn checks if LabelIn has been set in RsvpLspState + HasLabelIn() bool + // LabelOut returns uint32, set in RsvpLspState. + LabelOut() uint32 + // SetLabelOut assigns uint32 provided by user to RsvpLspState + SetLabelOut(value uint32) RsvpLspState + // HasLabelOut checks if LabelOut has been set in RsvpLspState + HasLabelOut() bool + // SessionStatus returns RsvpLspStateSessionStatusEnum, set in RsvpLspState + SessionStatus() RsvpLspStateSessionStatusEnum + // SetSessionStatus assigns RsvpLspStateSessionStatusEnum provided by user to RsvpLspState + SetSessionStatus(value RsvpLspStateSessionStatusEnum) RsvpLspState + // HasSessionStatus checks if SessionStatus has been set in RsvpLspState + HasSessionStatus() bool + // LastFlapReason returns RsvpLspStateLastFlapReasonEnum, set in RsvpLspState + LastFlapReason() RsvpLspStateLastFlapReasonEnum + // SetLastFlapReason assigns RsvpLspStateLastFlapReasonEnum provided by user to RsvpLspState + SetLastFlapReason(value RsvpLspStateLastFlapReasonEnum) RsvpLspState + // HasLastFlapReason checks if LastFlapReason has been set in RsvpLspState + HasLastFlapReason() bool + // UpTime returns uint64, set in RsvpLspState. + UpTime() uint64 + // SetUpTime assigns uint64 provided by user to RsvpLspState + SetUpTime(value uint64) RsvpLspState + // HasUpTime checks if UpTime has been set in RsvpLspState + HasUpTime() bool } -// Designated Forwarder (DF) election configuration. -// DfElection returns a BgpEthernetSegmentDfElection -func (obj *bgpV4EthernetSegment) DfElection() BgpEthernetSegmentDfElection { - if obj.obj.DfElection == nil { - obj.obj.DfElection = NewBgpEthernetSegmentDfElection().Msg() - } - if obj.dfElectionHolder == nil { - obj.dfElectionHolder = &bgpEthernetSegmentDfElection{obj: obj.obj.DfElection} - } - return obj.dfElectionHolder -} +// The tunnel id of RSVP session which acts as an identifier that remains constant over the life of the tunnel. +// TunnelId returns a uint32 +func (obj *rsvpLspState) TunnelId() uint32 { + + return *obj.obj.TunnelId -// Designated Forwarder (DF) election configuration. -// DfElection returns a BgpEthernetSegmentDfElection -func (obj *bgpV4EthernetSegment) HasDfElection() bool { - return obj.obj.DfElection != nil } -// Designated Forwarder (DF) election configuration. -// SetDfElection sets the BgpEthernetSegmentDfElection value in the BgpV4EthernetSegment object -func (obj *bgpV4EthernetSegment) SetDfElection(value BgpEthernetSegmentDfElection) BgpV4EthernetSegment { +// The tunnel id of RSVP session which acts as an identifier that remains constant over the life of the tunnel. +// TunnelId returns a uint32 +func (obj *rsvpLspState) HasTunnelId() bool { + return obj.obj.TunnelId != nil +} - obj.dfElectionHolder = nil - obj.obj.DfElection = value.Msg() +// The tunnel id of RSVP session which acts as an identifier that remains constant over the life of the tunnel. +// SetTunnelId sets the uint32 value in the RsvpLspState object +func (obj *rsvpLspState) SetTunnelId(value uint32) RsvpLspState { + obj.obj.TunnelId = &value return obj } -// This contains the list of EVIs. -// Evis returns a []BgpV4EvpnEvis -func (obj *bgpV4EthernetSegment) Evis() BgpV4EthernetSegmentBgpV4EvpnEvisIter { - if len(obj.obj.Evis) == 0 { - obj.obj.Evis = []*otg.BgpV4EvpnEvis{} - } - if obj.evisHolder == nil { - obj.evisHolder = newBgpV4EthernetSegmentBgpV4EvpnEvisIter(&obj.obj.Evis).setMsg(obj) - } - return obj.evisHolder +// The lsp-id of RSVP session which acts as a differentiator for two lsps originating from the same headend, commonly used to distinguish RSVP sessions during make before break operations. +// LspId returns a uint32 +func (obj *rsvpLspState) LspId() uint32 { + + return *obj.obj.LspId + } -type bgpV4EthernetSegmentBgpV4EvpnEvisIter struct { - obj *bgpV4EthernetSegment - bgpV4EvpnEvisSlice []BgpV4EvpnEvis - fieldPtr *[]*otg.BgpV4EvpnEvis +// The lsp-id of RSVP session which acts as a differentiator for two lsps originating from the same headend, commonly used to distinguish RSVP sessions during make before break operations. +// LspId returns a uint32 +func (obj *rsvpLspState) HasLspId() bool { + return obj.obj.LspId != nil } -func newBgpV4EthernetSegmentBgpV4EvpnEvisIter(ptr *[]*otg.BgpV4EvpnEvis) BgpV4EthernetSegmentBgpV4EvpnEvisIter { - return &bgpV4EthernetSegmentBgpV4EvpnEvisIter{fieldPtr: ptr} +// The lsp-id of RSVP session which acts as a differentiator for two lsps originating from the same headend, commonly used to distinguish RSVP sessions during make before break operations. +// SetLspId sets the uint32 value in the RsvpLspState object +func (obj *rsvpLspState) SetLspId(value uint32) RsvpLspState { + + obj.obj.LspId = &value + return obj } -type BgpV4EthernetSegmentBgpV4EvpnEvisIter interface { - setMsg(*bgpV4EthernetSegment) BgpV4EthernetSegmentBgpV4EvpnEvisIter - Items() []BgpV4EvpnEvis - Add() BgpV4EvpnEvis - Append(items ...BgpV4EvpnEvis) BgpV4EthernetSegmentBgpV4EvpnEvisIter - Set(index int, newObj BgpV4EvpnEvis) BgpV4EthernetSegmentBgpV4EvpnEvisIter - Clear() BgpV4EthernetSegmentBgpV4EvpnEvisIter - clearHolderSlice() BgpV4EthernetSegmentBgpV4EvpnEvisIter - appendHolderSlice(item BgpV4EvpnEvis) BgpV4EthernetSegmentBgpV4EvpnEvisIter -} +// The value of RSVP-TE Session Name field of the Session Attribute object. +// SessionName returns a string +func (obj *rsvpLspState) SessionName() string { -func (obj *bgpV4EthernetSegmentBgpV4EvpnEvisIter) setMsg(msg *bgpV4EthernetSegment) BgpV4EthernetSegmentBgpV4EvpnEvisIter { - obj.clearHolderSlice() - for _, val := range *obj.fieldPtr { - obj.appendHolderSlice(&bgpV4EvpnEvis{obj: val}) - } - obj.obj = msg - return obj -} + return *obj.obj.SessionName -func (obj *bgpV4EthernetSegmentBgpV4EvpnEvisIter) Items() []BgpV4EvpnEvis { - return obj.bgpV4EvpnEvisSlice } -func (obj *bgpV4EthernetSegmentBgpV4EvpnEvisIter) Add() BgpV4EvpnEvis { - newObj := &otg.BgpV4EvpnEvis{} - *obj.fieldPtr = append(*obj.fieldPtr, newObj) - newLibObj := &bgpV4EvpnEvis{obj: newObj} - newLibObj.setDefault() - obj.bgpV4EvpnEvisSlice = append(obj.bgpV4EvpnEvisSlice, newLibObj) - return newLibObj +// The value of RSVP-TE Session Name field of the Session Attribute object. +// SessionName returns a string +func (obj *rsvpLspState) HasSessionName() bool { + return obj.obj.SessionName != nil } -func (obj *bgpV4EthernetSegmentBgpV4EvpnEvisIter) Append(items ...BgpV4EvpnEvis) BgpV4EthernetSegmentBgpV4EvpnEvisIter { - for _, item := range items { - newObj := item.Msg() - *obj.fieldPtr = append(*obj.fieldPtr, newObj) - obj.bgpV4EvpnEvisSlice = append(obj.bgpV4EvpnEvisSlice, item) - } - return obj -} +// The value of RSVP-TE Session Name field of the Session Attribute object. +// SetSessionName sets the string value in the RsvpLspState object +func (obj *rsvpLspState) SetSessionName(value string) RsvpLspState { -func (obj *bgpV4EthernetSegmentBgpV4EvpnEvisIter) Set(index int, newObj BgpV4EvpnEvis) BgpV4EthernetSegmentBgpV4EvpnEvisIter { - (*obj.fieldPtr)[index] = newObj.Msg() - obj.bgpV4EvpnEvisSlice[index] = newObj - return obj -} -func (obj *bgpV4EthernetSegmentBgpV4EvpnEvisIter) Clear() BgpV4EthernetSegmentBgpV4EvpnEvisIter { - if len(*obj.fieldPtr) > 0 { - *obj.fieldPtr = []*otg.BgpV4EvpnEvis{} - obj.bgpV4EvpnEvisSlice = []BgpV4EvpnEvis{} - } - return obj -} -func (obj *bgpV4EthernetSegmentBgpV4EvpnEvisIter) clearHolderSlice() BgpV4EthernetSegmentBgpV4EvpnEvisIter { - if len(obj.bgpV4EvpnEvisSlice) > 0 { - obj.bgpV4EvpnEvisSlice = []BgpV4EvpnEvis{} - } - return obj -} -func (obj *bgpV4EthernetSegmentBgpV4EvpnEvisIter) appendHolderSlice(item BgpV4EvpnEvis) BgpV4EthernetSegmentBgpV4EvpnEvisIter { - obj.bgpV4EvpnEvisSlice = append(obj.bgpV4EvpnEvisSlice, item) + obj.obj.SessionName = &value return obj } -// 10-octet Ethernet Segment Identifier (ESI) Example - For multi-home scenario nonZero ESI is '10000000000000000000' . -// Esi returns a string -func (obj *bgpV4EthernetSegment) Esi() string { +// The label received by RSVP-TE ingress. +// LabelIn returns a uint32 +func (obj *rsvpLspState) LabelIn() uint32 { - return *obj.obj.Esi + return *obj.obj.LabelIn } -// 10-octet Ethernet Segment Identifier (ESI) Example - For multi-home scenario nonZero ESI is '10000000000000000000' . -// Esi returns a string -func (obj *bgpV4EthernetSegment) HasEsi() bool { - return obj.obj.Esi != nil +// The label received by RSVP-TE ingress. +// LabelIn returns a uint32 +func (obj *rsvpLspState) HasLabelIn() bool { + return obj.obj.LabelIn != nil } -// 10-octet Ethernet Segment Identifier (ESI) Example - For multi-home scenario nonZero ESI is '10000000000000000000' . -// SetEsi sets the string value in the BgpV4EthernetSegment object -func (obj *bgpV4EthernetSegment) SetEsi(value string) BgpV4EthernetSegment { +// The label received by RSVP-TE ingress. +// SetLabelIn sets the uint32 value in the RsvpLspState object +func (obj *rsvpLspState) SetLabelIn(value uint32) RsvpLspState { - obj.obj.Esi = &value + obj.obj.LabelIn = &value return obj } -type BgpV4EthernetSegmentActiveModeEnum string +// The label assigned by RSVP-TE egress. +// LabelOut returns a uint32 +func (obj *rsvpLspState) LabelOut() uint32 { -// Enum of ActiveMode on BgpV4EthernetSegment -var BgpV4EthernetSegmentActiveMode = struct { - SINGLE_ACTIVE BgpV4EthernetSegmentActiveModeEnum - ALL_ACTIVE BgpV4EthernetSegmentActiveModeEnum -}{ - SINGLE_ACTIVE: BgpV4EthernetSegmentActiveModeEnum("single_active"), - ALL_ACTIVE: BgpV4EthernetSegmentActiveModeEnum("all_active"), -} + return *obj.obj.LabelOut -func (obj *bgpV4EthernetSegment) ActiveMode() BgpV4EthernetSegmentActiveModeEnum { - return BgpV4EthernetSegmentActiveModeEnum(obj.obj.ActiveMode.Enum().String()) } -// Single Active or All Active mode Redundancy mode selection for Multi-home. -// ActiveMode returns a string -func (obj *bgpV4EthernetSegment) HasActiveMode() bool { - return obj.obj.ActiveMode != nil +// The label assigned by RSVP-TE egress. +// LabelOut returns a uint32 +func (obj *rsvpLspState) HasLabelOut() bool { + return obj.obj.LabelOut != nil } -func (obj *bgpV4EthernetSegment) SetActiveMode(value BgpV4EthernetSegmentActiveModeEnum) BgpV4EthernetSegment { - intValue, ok := otg.BgpV4EthernetSegment_ActiveMode_Enum_value[string(value)] - if !ok { - obj.validationErrors = append(obj.validationErrors, fmt.Sprintf( - "%s is not a valid choice on BgpV4EthernetSegmentActiveModeEnum", string(value))) - return obj - } - enumValue := otg.BgpV4EthernetSegment_ActiveMode_Enum(intValue) - obj.obj.ActiveMode = &enumValue +// The label assigned by RSVP-TE egress. +// SetLabelOut sets the uint32 value in the RsvpLspState object +func (obj *rsvpLspState) SetLabelOut(value uint32) RsvpLspState { + obj.obj.LabelOut = &value return obj } -// The label value to be advertised as ESI Label in ESI Label Extended Community. This is included in Ethernet Auto-discovery per ES Routes advertised by a router. -// EsiLabel returns a uint32 -func (obj *bgpV4EthernetSegment) EsiLabel() uint32 { - - return *obj.obj.EsiLabel - -} - -// The label value to be advertised as ESI Label in ESI Label Extended Community. This is included in Ethernet Auto-discovery per ES Routes advertised by a router. -// EsiLabel returns a uint32 -func (obj *bgpV4EthernetSegment) HasEsiLabel() bool { - return obj.obj.EsiLabel != nil -} - -// The label value to be advertised as ESI Label in ESI Label Extended Community. This is included in Ethernet Auto-discovery per ES Routes advertised by a router. -// SetEsiLabel sets the uint32 value in the BgpV4EthernetSegment object -func (obj *bgpV4EthernetSegment) SetEsiLabel(value uint32) BgpV4EthernetSegment { - - obj.obj.EsiLabel = &value - return obj -} +type RsvpLspStateSessionStatusEnum string -// description is TBD -// Advanced returns a BgpRouteAdvanced -func (obj *bgpV4EthernetSegment) Advanced() BgpRouteAdvanced { - if obj.obj.Advanced == nil { - obj.obj.Advanced = NewBgpRouteAdvanced().Msg() - } - if obj.advancedHolder == nil { - obj.advancedHolder = &bgpRouteAdvanced{obj: obj.obj.Advanced} - } - return obj.advancedHolder +// Enum of SessionStatus on RsvpLspState +var RsvpLspStateSessionStatus = struct { + UP RsvpLspStateSessionStatusEnum + DOWN RsvpLspStateSessionStatusEnum +}{ + UP: RsvpLspStateSessionStatusEnum("up"), + DOWN: RsvpLspStateSessionStatusEnum("down"), } -// description is TBD -// Advanced returns a BgpRouteAdvanced -func (obj *bgpV4EthernetSegment) HasAdvanced() bool { - return obj.obj.Advanced != nil +func (obj *rsvpLspState) SessionStatus() RsvpLspStateSessionStatusEnum { + return RsvpLspStateSessionStatusEnum(obj.obj.SessionStatus.Enum().String()) } -// description is TBD -// SetAdvanced sets the BgpRouteAdvanced value in the BgpV4EthernetSegment object -func (obj *bgpV4EthernetSegment) SetAdvanced(value BgpRouteAdvanced) BgpV4EthernetSegment { - - obj.advancedHolder = nil - obj.obj.Advanced = value.Msg() - - return obj +// Operational state of the RSVP LSP. +// SessionStatus returns a string +func (obj *rsvpLspState) HasSessionStatus() bool { + return obj.obj.SessionStatus != nil } -// Optional community settings. -// Communities returns a []BgpCommunity -func (obj *bgpV4EthernetSegment) Communities() BgpV4EthernetSegmentBgpCommunityIter { - if len(obj.obj.Communities) == 0 { - obj.obj.Communities = []*otg.BgpCommunity{} - } - if obj.communitiesHolder == nil { - obj.communitiesHolder = newBgpV4EthernetSegmentBgpCommunityIter(&obj.obj.Communities).setMsg(obj) +func (obj *rsvpLspState) SetSessionStatus(value RsvpLspStateSessionStatusEnum) RsvpLspState { + intValue, ok := otg.RsvpLspState_SessionStatus_Enum_value[string(value)] + if !ok { + obj.validationErrors = append(obj.validationErrors, fmt.Sprintf( + "%s is not a valid choice on RsvpLspStateSessionStatusEnum", string(value))) + return obj } - return obj.communitiesHolder -} - -type bgpV4EthernetSegmentBgpCommunityIter struct { - obj *bgpV4EthernetSegment - bgpCommunitySlice []BgpCommunity - fieldPtr *[]*otg.BgpCommunity -} - -func newBgpV4EthernetSegmentBgpCommunityIter(ptr *[]*otg.BgpCommunity) BgpV4EthernetSegmentBgpCommunityIter { - return &bgpV4EthernetSegmentBgpCommunityIter{fieldPtr: ptr} -} - -type BgpV4EthernetSegmentBgpCommunityIter interface { - setMsg(*bgpV4EthernetSegment) BgpV4EthernetSegmentBgpCommunityIter - Items() []BgpCommunity - Add() BgpCommunity - Append(items ...BgpCommunity) BgpV4EthernetSegmentBgpCommunityIter - Set(index int, newObj BgpCommunity) BgpV4EthernetSegmentBgpCommunityIter - Clear() BgpV4EthernetSegmentBgpCommunityIter - clearHolderSlice() BgpV4EthernetSegmentBgpCommunityIter - appendHolderSlice(item BgpCommunity) BgpV4EthernetSegmentBgpCommunityIter -} + enumValue := otg.RsvpLspState_SessionStatus_Enum(intValue) + obj.obj.SessionStatus = &enumValue -func (obj *bgpV4EthernetSegmentBgpCommunityIter) setMsg(msg *bgpV4EthernetSegment) BgpV4EthernetSegmentBgpCommunityIter { - obj.clearHolderSlice() - for _, val := range *obj.fieldPtr { - obj.appendHolderSlice(&bgpCommunity{obj: val}) - } - obj.obj = msg return obj } -func (obj *bgpV4EthernetSegmentBgpCommunityIter) Items() []BgpCommunity { - return obj.bgpCommunitySlice -} +type RsvpLspStateLastFlapReasonEnum string -func (obj *bgpV4EthernetSegmentBgpCommunityIter) Add() BgpCommunity { - newObj := &otg.BgpCommunity{} - *obj.fieldPtr = append(*obj.fieldPtr, newObj) - newLibObj := &bgpCommunity{obj: newObj} - newLibObj.setDefault() - obj.bgpCommunitySlice = append(obj.bgpCommunitySlice, newLibObj) - return newLibObj +// Enum of LastFlapReason on RsvpLspState +var RsvpLspStateLastFlapReason = struct { + RESV_TEAR RsvpLspStateLastFlapReasonEnum + PATH_TEAR RsvpLspStateLastFlapReasonEnum + PATH_TIMEOUT RsvpLspStateLastFlapReasonEnum +}{ + RESV_TEAR: RsvpLspStateLastFlapReasonEnum("resv_tear"), + PATH_TEAR: RsvpLspStateLastFlapReasonEnum("path_tear"), + PATH_TIMEOUT: RsvpLspStateLastFlapReasonEnum("path_timeout"), } -func (obj *bgpV4EthernetSegmentBgpCommunityIter) Append(items ...BgpCommunity) BgpV4EthernetSegmentBgpCommunityIter { - for _, item := range items { - newObj := item.Msg() - *obj.fieldPtr = append(*obj.fieldPtr, newObj) - obj.bgpCommunitySlice = append(obj.bgpCommunitySlice, item) - } - return obj +func (obj *rsvpLspState) LastFlapReason() RsvpLspStateLastFlapReasonEnum { + return RsvpLspStateLastFlapReasonEnum(obj.obj.LastFlapReason.Enum().String()) } -func (obj *bgpV4EthernetSegmentBgpCommunityIter) Set(index int, newObj BgpCommunity) BgpV4EthernetSegmentBgpCommunityIter { - (*obj.fieldPtr)[index] = newObj.Msg() - obj.bgpCommunitySlice[index] = newObj - return obj -} -func (obj *bgpV4EthernetSegmentBgpCommunityIter) Clear() BgpV4EthernetSegmentBgpCommunityIter { - if len(*obj.fieldPtr) > 0 { - *obj.fieldPtr = []*otg.BgpCommunity{} - obj.bgpCommunitySlice = []BgpCommunity{} - } - return obj -} -func (obj *bgpV4EthernetSegmentBgpCommunityIter) clearHolderSlice() BgpV4EthernetSegmentBgpCommunityIter { - if len(obj.bgpCommunitySlice) > 0 { - obj.bgpCommunitySlice = []BgpCommunity{} - } - return obj -} -func (obj *bgpV4EthernetSegmentBgpCommunityIter) appendHolderSlice(item BgpCommunity) BgpV4EthernetSegmentBgpCommunityIter { - obj.bgpCommunitySlice = append(obj.bgpCommunitySlice, item) - return obj +// The reason for the last flap of this RSVP session. +// LastFlapReason returns a string +func (obj *rsvpLspState) HasLastFlapReason() bool { + return obj.obj.LastFlapReason != nil } -// Optional Extended Community settings. The Extended Communities Attribute is a transitive optional BGP attribute, with the Type Code 16. Community and Extended Communities attributes are utilized to trigger routing decisions, such as acceptance, rejection, preference, or redistribution. An extended community is an 8-Bytes value. It is divided into two main parts. The first 2 Bytes of the community encode a type and sub-type fields and the last 6 Bytes carry a unique set of data in a format defined by the type and sub-type field. Extended communities provide a larger range for grouping or categorizing communities. When type is administrator_as_2octet or administrator_as_4octet, the valid sub types are route target and origin. The valid value for administrator_as_2octet and administrator_as_4octet type is either two byte AS followed by four byte local administrator id or four byte AS followed by two byte local administrator id. When type is administrator_ipv4_address the valid sub types are route target and origin. The valid value for administrator_ipv4_address is a four byte IPv4 address followed by a two byte local administrator id. When type is opaque, valid sub types are color and encapsulation. When sub type is color, first two bytes of the value field contain flags and last four bytes contains the value of the color. When sub type is encapsulation the first four bytes of value field are reserved and last two bytes carries the tunnel type from IANA's "ETHER TYPES" registry e.g IPv4 (protocol type = 0x0800), IPv6 (protocol type = 0x86dd), and MPLS (protocol type = 0x8847). When type is administrator_as_2octet_link_bandwidth the valid sub type is extended_bandwidth. The first two bytes of the value field contains the AS number and the last four bytes contains the bandwidth in IEEE floating point format. When type is evpn the valid subtype is mac_address. In the value field the low-order bit of the first byte(Flags) is defined as the "Sticky/static" flag and may be set to 1, indicating the MAC address is static and cannot move. The second byte is reserved and the last four bytes contain the sequence number which is used to ensure that PEs retain the correct MAC/IP Advertisement route when multiple updates occur for the same MAC address. -// ExtCommunities returns a []BgpExtCommunity -func (obj *bgpV4EthernetSegment) ExtCommunities() BgpV4EthernetSegmentBgpExtCommunityIter { - if len(obj.obj.ExtCommunities) == 0 { - obj.obj.ExtCommunities = []*otg.BgpExtCommunity{} - } - if obj.extCommunitiesHolder == nil { - obj.extCommunitiesHolder = newBgpV4EthernetSegmentBgpExtCommunityIter(&obj.obj.ExtCommunities).setMsg(obj) +func (obj *rsvpLspState) SetLastFlapReason(value RsvpLspStateLastFlapReasonEnum) RsvpLspState { + intValue, ok := otg.RsvpLspState_LastFlapReason_Enum_value[string(value)] + if !ok { + obj.validationErrors = append(obj.validationErrors, fmt.Sprintf( + "%s is not a valid choice on RsvpLspStateLastFlapReasonEnum", string(value))) + return obj } - return obj.extCommunitiesHolder -} - -type bgpV4EthernetSegmentBgpExtCommunityIter struct { - obj *bgpV4EthernetSegment - bgpExtCommunitySlice []BgpExtCommunity - fieldPtr *[]*otg.BgpExtCommunity -} - -func newBgpV4EthernetSegmentBgpExtCommunityIter(ptr *[]*otg.BgpExtCommunity) BgpV4EthernetSegmentBgpExtCommunityIter { - return &bgpV4EthernetSegmentBgpExtCommunityIter{fieldPtr: ptr} -} - -type BgpV4EthernetSegmentBgpExtCommunityIter interface { - setMsg(*bgpV4EthernetSegment) BgpV4EthernetSegmentBgpExtCommunityIter - Items() []BgpExtCommunity - Add() BgpExtCommunity - Append(items ...BgpExtCommunity) BgpV4EthernetSegmentBgpExtCommunityIter - Set(index int, newObj BgpExtCommunity) BgpV4EthernetSegmentBgpExtCommunityIter - Clear() BgpV4EthernetSegmentBgpExtCommunityIter - clearHolderSlice() BgpV4EthernetSegmentBgpExtCommunityIter - appendHolderSlice(item BgpExtCommunity) BgpV4EthernetSegmentBgpExtCommunityIter -} + enumValue := otg.RsvpLspState_LastFlapReason_Enum(intValue) + obj.obj.LastFlapReason = &enumValue -func (obj *bgpV4EthernetSegmentBgpExtCommunityIter) setMsg(msg *bgpV4EthernetSegment) BgpV4EthernetSegmentBgpExtCommunityIter { - obj.clearHolderSlice() - for _, val := range *obj.fieldPtr { - obj.appendHolderSlice(&bgpExtCommunity{obj: val}) - } - obj.obj = msg return obj } -func (obj *bgpV4EthernetSegmentBgpExtCommunityIter) Items() []BgpExtCommunity { - return obj.bgpExtCommunitySlice -} - -func (obj *bgpV4EthernetSegmentBgpExtCommunityIter) Add() BgpExtCommunity { - newObj := &otg.BgpExtCommunity{} - *obj.fieldPtr = append(*obj.fieldPtr, newObj) - newLibObj := &bgpExtCommunity{obj: newObj} - newLibObj.setDefault() - obj.bgpExtCommunitySlice = append(obj.bgpExtCommunitySlice, newLibObj) - return newLibObj -} - -func (obj *bgpV4EthernetSegmentBgpExtCommunityIter) Append(items ...BgpExtCommunity) BgpV4EthernetSegmentBgpExtCommunityIter { - for _, item := range items { - newObj := item.Msg() - *obj.fieldPtr = append(*obj.fieldPtr, newObj) - obj.bgpExtCommunitySlice = append(obj.bgpExtCommunitySlice, item) - } - return obj -} +// The tunnel UP time in milli seconds. If the tunnel is DOWN the UP time will be zero. +// UpTime returns a uint64 +func (obj *rsvpLspState) UpTime() uint64 { -func (obj *bgpV4EthernetSegmentBgpExtCommunityIter) Set(index int, newObj BgpExtCommunity) BgpV4EthernetSegmentBgpExtCommunityIter { - (*obj.fieldPtr)[index] = newObj.Msg() - obj.bgpExtCommunitySlice[index] = newObj - return obj -} -func (obj *bgpV4EthernetSegmentBgpExtCommunityIter) Clear() BgpV4EthernetSegmentBgpExtCommunityIter { - if len(*obj.fieldPtr) > 0 { - *obj.fieldPtr = []*otg.BgpExtCommunity{} - obj.bgpExtCommunitySlice = []BgpExtCommunity{} - } - return obj -} -func (obj *bgpV4EthernetSegmentBgpExtCommunityIter) clearHolderSlice() BgpV4EthernetSegmentBgpExtCommunityIter { - if len(obj.bgpExtCommunitySlice) > 0 { - obj.bgpExtCommunitySlice = []BgpExtCommunity{} - } - return obj -} -func (obj *bgpV4EthernetSegmentBgpExtCommunityIter) appendHolderSlice(item BgpExtCommunity) BgpV4EthernetSegmentBgpExtCommunityIter { - obj.bgpExtCommunitySlice = append(obj.bgpExtCommunitySlice, item) - return obj -} + return *obj.obj.UpTime -// Optional AS PATH settings. -// AsPath returns a BgpAsPath -func (obj *bgpV4EthernetSegment) AsPath() BgpAsPath { - if obj.obj.AsPath == nil { - obj.obj.AsPath = NewBgpAsPath().Msg() - } - if obj.asPathHolder == nil { - obj.asPathHolder = &bgpAsPath{obj: obj.obj.AsPath} - } - return obj.asPathHolder } -// Optional AS PATH settings. -// AsPath returns a BgpAsPath -func (obj *bgpV4EthernetSegment) HasAsPath() bool { - return obj.obj.AsPath != nil +// The tunnel UP time in milli seconds. If the tunnel is DOWN the UP time will be zero. +// UpTime returns a uint64 +func (obj *rsvpLspState) HasUpTime() bool { + return obj.obj.UpTime != nil } -// Optional AS PATH settings. -// SetAsPath sets the BgpAsPath value in the BgpV4EthernetSegment object -func (obj *bgpV4EthernetSegment) SetAsPath(value BgpAsPath) BgpV4EthernetSegment { - - obj.asPathHolder = nil - obj.obj.AsPath = value.Msg() +// The tunnel UP time in milli seconds. If the tunnel is DOWN the UP time will be zero. +// SetUpTime sets the uint64 value in the RsvpLspState object +func (obj *rsvpLspState) SetUpTime(value uint64) RsvpLspState { + obj.obj.UpTime = &value return obj } -func (obj *bgpV4EthernetSegment) validateObj(vObj *validation, set_default bool) { +func (obj *rsvpLspState) validateObj(vObj *validation, set_default bool) { if set_default { obj.setDefault() } - if obj.obj.DfElection != nil { - - obj.DfElection().validateObj(vObj, set_default) - } - - if len(obj.obj.Evis) != 0 { - - if set_default { - obj.Evis().clearHolderSlice() - for _, item := range obj.obj.Evis { - obj.Evis().appendHolderSlice(&bgpV4EvpnEvis{obj: item}) - } - } - for _, item := range obj.Evis().Items() { - item.validateObj(vObj, set_default) - } - - } - - if obj.obj.Esi != nil { - - err := obj.validateHex(obj.Esi()) - if err != nil { - vObj.validationErrors = append(vObj.validationErrors, fmt.Sprintf("%s %s", err.Error(), "on BgpV4EthernetSegment.Esi")) - } - - } - - if obj.obj.EsiLabel != nil { - - if *obj.obj.EsiLabel > 16777215 { - vObj.validationErrors = append( - vObj.validationErrors, - fmt.Sprintf("0 <= BgpV4EthernetSegment.EsiLabel <= 16777215 but Got %d", *obj.obj.EsiLabel)) - } - - } - - if obj.obj.Advanced != nil { - - obj.Advanced().validateObj(vObj, set_default) - } - - if len(obj.obj.Communities) != 0 { - - if set_default { - obj.Communities().clearHolderSlice() - for _, item := range obj.obj.Communities { - obj.Communities().appendHolderSlice(&bgpCommunity{obj: item}) - } - } - for _, item := range obj.Communities().Items() { - item.validateObj(vObj, set_default) - } - - } - - if len(obj.obj.ExtCommunities) != 0 { - - if set_default { - obj.ExtCommunities().clearHolderSlice() - for _, item := range obj.obj.ExtCommunities { - obj.ExtCommunities().appendHolderSlice(&bgpExtCommunity{obj: item}) - } - } - for _, item := range obj.ExtCommunities().Items() { - item.validateObj(vObj, set_default) - } - - } - - if obj.obj.AsPath != nil { - - obj.AsPath().validateObj(vObj, set_default) - } - } -func (obj *bgpV4EthernetSegment) setDefault() { - if obj.obj.Esi == nil { - obj.SetEsi("00000000000000000000") - } - if obj.obj.ActiveMode == nil { - obj.SetActiveMode(BgpV4EthernetSegmentActiveMode.ALL_ACTIVE) - - } - if obj.obj.EsiLabel == nil { - obj.SetEsiLabel(0) - } +func (obj *rsvpLspState) setDefault() { } -// ***** BgpAdvanced ***** -type bgpAdvanced struct { +// ***** RsvpLspIpv4Rro ***** +type rsvpLspIpv4Rro struct { validation - obj *otg.BgpAdvanced + obj *otg.RsvpLspIpv4Rro } -func NewBgpAdvanced() BgpAdvanced { - obj := bgpAdvanced{obj: &otg.BgpAdvanced{}} +func NewRsvpLspIpv4Rro() RsvpLspIpv4Rro { + obj := rsvpLspIpv4Rro{obj: &otg.RsvpLspIpv4Rro{}} obj.setDefault() return &obj } -func (obj *bgpAdvanced) Msg() *otg.BgpAdvanced { +func (obj *rsvpLspIpv4Rro) Msg() *otg.RsvpLspIpv4Rro { return obj.obj } -func (obj *bgpAdvanced) SetMsg(msg *otg.BgpAdvanced) BgpAdvanced { +func (obj *rsvpLspIpv4Rro) SetMsg(msg *otg.RsvpLspIpv4Rro) RsvpLspIpv4Rro { proto.Merge(obj.obj, msg) return obj } -func (obj *bgpAdvanced) ToProto() (*otg.BgpAdvanced, error) { +func (obj *rsvpLspIpv4Rro) ToProto() (*otg.RsvpLspIpv4Rro, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -173805,7 +174801,7 @@ func (obj *bgpAdvanced) ToProto() (*otg.BgpAdvanced, error) { return obj.Msg(), nil } -func (obj *bgpAdvanced) FromProto(msg *otg.BgpAdvanced) (BgpAdvanced, error) { +func (obj *rsvpLspIpv4Rro) FromProto(msg *otg.RsvpLspIpv4Rro) (RsvpLspIpv4Rro, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -173814,7 +174810,7 @@ func (obj *bgpAdvanced) FromProto(msg *otg.BgpAdvanced) (BgpAdvanced, error) { return newObj, nil } -func (obj *bgpAdvanced) ToPbText() (string, error) { +func (obj *rsvpLspIpv4Rro) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -173826,7 +174822,7 @@ func (obj *bgpAdvanced) ToPbText() (string, error) { return string(protoMarshal), nil } -func (obj *bgpAdvanced) FromPbText(value string) error { +func (obj *rsvpLspIpv4Rro) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj @@ -173839,7 +174835,7 @@ func (obj *bgpAdvanced) FromPbText(value string) error { return retObj } -func (obj *bgpAdvanced) ToYaml() (string, error) { +func (obj *rsvpLspIpv4Rro) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -173860,7 +174856,7 @@ func (obj *bgpAdvanced) ToYaml() (string, error) { return string(data), nil } -func (obj *bgpAdvanced) FromYaml(value string) error { +func (obj *rsvpLspIpv4Rro) FromYaml(value string) error { if value == "" { value = "{}" } @@ -173885,7 +174881,7 @@ func (obj *bgpAdvanced) FromYaml(value string) error { return nil } -func (obj *bgpAdvanced) ToJson() (string, error) { +func (obj *rsvpLspIpv4Rro) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -173903,7 +174899,7 @@ func (obj *bgpAdvanced) ToJson() (string, error) { return string(data), nil } -func (obj *bgpAdvanced) FromJson(value string) error { +func (obj *rsvpLspIpv4Rro) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -173924,19 +174920,19 @@ func (obj *bgpAdvanced) FromJson(value string) error { return nil } -func (obj *bgpAdvanced) validateToAndFrom() error { +func (obj *rsvpLspIpv4Rro) validateToAndFrom() error { // emptyVars() obj.validateObj(&obj.validation, true) return obj.validationResult() } -func (obj *bgpAdvanced) Validate() error { +func (obj *rsvpLspIpv4Rro) Validate() error { // emptyVars() obj.validateObj(&obj.validation, false) return obj.validationResult() } -func (obj *bgpAdvanced) String() string { +func (obj *rsvpLspIpv4Rro) String() string { str, err := obj.ToYaml() if err != nil { return err.Error() @@ -173944,12 +174940,12 @@ func (obj *bgpAdvanced) String() string { return str } -func (obj *bgpAdvanced) Clone() (BgpAdvanced, error) { +func (obj *rsvpLspIpv4Rro) Clone() (RsvpLspIpv4Rro, error) { vErr := obj.Validate() if vErr != nil { return nil, vErr } - newObj := NewBgpAdvanced() + newObj := NewRsvpLspIpv4Rro() data, err := proto.Marshal(obj.Msg()) if err != nil { return nil, err @@ -173961,357 +174957,141 @@ func (obj *bgpAdvanced) Clone() (BgpAdvanced, error) { return newObj, nil } -// BgpAdvanced is configuration for BGP advanced settings. -type BgpAdvanced interface { +// RsvpLspIpv4Rro is this contains the list of Record Route Object(RRO) objects associated with the traffic engineering tunnel. The Record Route Object(RRO) is used in RSVP-TE to record the route traversed by the LSP. The RRO might be present in both Path message and Resv message, the RRO stores the IP addresses of the routers that the traffic engineering tunnel traversed and also the label generated and distributed by the routers. The RROs in the Resv message mirrors that of the Path message, the only difference is that the RRO in a Resv message records the path information in the reverse direction. +type RsvpLspIpv4Rro interface { Validation - // Msg marshals BgpAdvanced to protobuf object *otg.BgpAdvanced + // Msg marshals RsvpLspIpv4Rro to protobuf object *otg.RsvpLspIpv4Rro // and doesn't set defaults - Msg() *otg.BgpAdvanced - // SetMsg unmarshals BgpAdvanced from protobuf object *otg.BgpAdvanced + Msg() *otg.RsvpLspIpv4Rro + // SetMsg unmarshals RsvpLspIpv4Rro from protobuf object *otg.RsvpLspIpv4Rro // and doesn't set defaults - SetMsg(*otg.BgpAdvanced) BgpAdvanced - // ToProto marshals BgpAdvanced to protobuf object *otg.BgpAdvanced - ToProto() (*otg.BgpAdvanced, error) - // ToPbText marshals BgpAdvanced to protobuf text + SetMsg(*otg.RsvpLspIpv4Rro) RsvpLspIpv4Rro + // ToProto marshals RsvpLspIpv4Rro to protobuf object *otg.RsvpLspIpv4Rro + ToProto() (*otg.RsvpLspIpv4Rro, error) + // ToPbText marshals RsvpLspIpv4Rro to protobuf text ToPbText() (string, error) - // ToYaml marshals BgpAdvanced to YAML text + // ToYaml marshals RsvpLspIpv4Rro to YAML text ToYaml() (string, error) - // ToJson marshals BgpAdvanced to JSON text + // ToJson marshals RsvpLspIpv4Rro to JSON text ToJson() (string, error) - // FromProto unmarshals BgpAdvanced from protobuf object *otg.BgpAdvanced - FromProto(msg *otg.BgpAdvanced) (BgpAdvanced, error) - // FromPbText unmarshals BgpAdvanced from protobuf text + // FromProto unmarshals RsvpLspIpv4Rro from protobuf object *otg.RsvpLspIpv4Rro + FromProto(msg *otg.RsvpLspIpv4Rro) (RsvpLspIpv4Rro, error) + // FromPbText unmarshals RsvpLspIpv4Rro from protobuf text FromPbText(value string) error - // FromYaml unmarshals BgpAdvanced from YAML text + // FromYaml unmarshals RsvpLspIpv4Rro from YAML text FromYaml(value string) error - // FromJson unmarshals BgpAdvanced from JSON text + // FromJson unmarshals RsvpLspIpv4Rro from JSON text FromJson(value string) error - // Validate validates BgpAdvanced + // Validate validates RsvpLspIpv4Rro Validate() error // A stringer function String() string // Clones the object - Clone() (BgpAdvanced, error) + Clone() (RsvpLspIpv4Rro, error) validateToAndFrom() error validateObj(vObj *validation, set_default bool) setDefault() - // HoldTimeInterval returns uint32, set in BgpAdvanced. - HoldTimeInterval() uint32 - // SetHoldTimeInterval assigns uint32 provided by user to BgpAdvanced - SetHoldTimeInterval(value uint32) BgpAdvanced - // HasHoldTimeInterval checks if HoldTimeInterval has been set in BgpAdvanced - HasHoldTimeInterval() bool - // KeepAliveInterval returns uint32, set in BgpAdvanced. - KeepAliveInterval() uint32 - // SetKeepAliveInterval assigns uint32 provided by user to BgpAdvanced - SetKeepAliveInterval(value uint32) BgpAdvanced - // HasKeepAliveInterval checks if KeepAliveInterval has been set in BgpAdvanced - HasKeepAliveInterval() bool - // UpdateInterval returns uint32, set in BgpAdvanced. - UpdateInterval() uint32 - // SetUpdateInterval assigns uint32 provided by user to BgpAdvanced - SetUpdateInterval(value uint32) BgpAdvanced - // HasUpdateInterval checks if UpdateInterval has been set in BgpAdvanced - HasUpdateInterval() bool - // TimeToLive returns uint32, set in BgpAdvanced. - TimeToLive() uint32 - // SetTimeToLive assigns uint32 provided by user to BgpAdvanced - SetTimeToLive(value uint32) BgpAdvanced - // HasTimeToLive checks if TimeToLive has been set in BgpAdvanced - HasTimeToLive() bool - // Md5Key returns string, set in BgpAdvanced. - Md5Key() string - // SetMd5Key assigns string provided by user to BgpAdvanced - SetMd5Key(value string) BgpAdvanced - // HasMd5Key checks if Md5Key has been set in BgpAdvanced - HasMd5Key() bool - // PassiveMode returns bool, set in BgpAdvanced. - PassiveMode() bool - // SetPassiveMode assigns bool provided by user to BgpAdvanced - SetPassiveMode(value bool) BgpAdvanced - // HasPassiveMode checks if PassiveMode has been set in BgpAdvanced - HasPassiveMode() bool - // ListenPort returns uint32, set in BgpAdvanced. - ListenPort() uint32 - // SetListenPort assigns uint32 provided by user to BgpAdvanced - SetListenPort(value uint32) BgpAdvanced - // HasListenPort checks if ListenPort has been set in BgpAdvanced - HasListenPort() bool - // NeighborPort returns uint32, set in BgpAdvanced. - NeighborPort() uint32 - // SetNeighborPort assigns uint32 provided by user to BgpAdvanced - SetNeighborPort(value uint32) BgpAdvanced - // HasNeighborPort checks if NeighborPort has been set in BgpAdvanced - HasNeighborPort() bool -} - -// Number of seconds the sender proposes for the value of the Hold Timer. -// HoldTimeInterval returns a uint32 -func (obj *bgpAdvanced) HoldTimeInterval() uint32 { - - return *obj.obj.HoldTimeInterval - -} - -// Number of seconds the sender proposes for the value of the Hold Timer. -// HoldTimeInterval returns a uint32 -func (obj *bgpAdvanced) HasHoldTimeInterval() bool { - return obj.obj.HoldTimeInterval != nil -} - -// Number of seconds the sender proposes for the value of the Hold Timer. -// SetHoldTimeInterval sets the uint32 value in the BgpAdvanced object -func (obj *bgpAdvanced) SetHoldTimeInterval(value uint32) BgpAdvanced { - - obj.obj.HoldTimeInterval = &value - return obj -} - -// Number of seconds between transmissions of Keepalive messages by this peer. -// KeepAliveInterval returns a uint32 -func (obj *bgpAdvanced) KeepAliveInterval() uint32 { - - return *obj.obj.KeepAliveInterval - -} - -// Number of seconds between transmissions of Keepalive messages by this peer. -// KeepAliveInterval returns a uint32 -func (obj *bgpAdvanced) HasKeepAliveInterval() bool { - return obj.obj.KeepAliveInterval != nil -} - -// Number of seconds between transmissions of Keepalive messages by this peer. -// SetKeepAliveInterval sets the uint32 value in the BgpAdvanced object -func (obj *bgpAdvanced) SetKeepAliveInterval(value uint32) BgpAdvanced { - - obj.obj.KeepAliveInterval = &value - return obj -} - -// The time interval at which Update messages are sent to the DUT, expressed as the number of milliseconds between Update messages. The update interval 0 implies to send all the updates as fast as possible. -// UpdateInterval returns a uint32 -func (obj *bgpAdvanced) UpdateInterval() uint32 { - - return *obj.obj.UpdateInterval - -} - -// The time interval at which Update messages are sent to the DUT, expressed as the number of milliseconds between Update messages. The update interval 0 implies to send all the updates as fast as possible. -// UpdateInterval returns a uint32 -func (obj *bgpAdvanced) HasUpdateInterval() bool { - return obj.obj.UpdateInterval != nil -} - -// The time interval at which Update messages are sent to the DUT, expressed as the number of milliseconds between Update messages. The update interval 0 implies to send all the updates as fast as possible. -// SetUpdateInterval sets the uint32 value in the BgpAdvanced object -func (obj *bgpAdvanced) SetUpdateInterval(value uint32) BgpAdvanced { - - obj.obj.UpdateInterval = &value - return obj -} - -// The limited number of iterations that a unit of data can experience before the data is discarded. This is placed in the TTL field in the IP header of the transmitted packets. -// TimeToLive returns a uint32 -func (obj *bgpAdvanced) TimeToLive() uint32 { - - return *obj.obj.TimeToLive - -} - -// The limited number of iterations that a unit of data can experience before the data is discarded. This is placed in the TTL field in the IP header of the transmitted packets. -// TimeToLive returns a uint32 -func (obj *bgpAdvanced) HasTimeToLive() bool { - return obj.obj.TimeToLive != nil -} - -// The limited number of iterations that a unit of data can experience before the data is discarded. This is placed in the TTL field in the IP header of the transmitted packets. -// SetTimeToLive sets the uint32 value in the BgpAdvanced object -func (obj *bgpAdvanced) SetTimeToLive(value uint32) BgpAdvanced { - - obj.obj.TimeToLive = &value - return obj -} - -// The value to be used as a secret MD5 key for authentication. If not configured, MD5 authentication will not be enabled. -// Md5Key returns a string -func (obj *bgpAdvanced) Md5Key() string { - - return *obj.obj.Md5Key - -} - -// The value to be used as a secret MD5 key for authentication. If not configured, MD5 authentication will not be enabled. -// Md5Key returns a string -func (obj *bgpAdvanced) HasMd5Key() bool { - return obj.obj.Md5Key != nil -} - -// The value to be used as a secret MD5 key for authentication. If not configured, MD5 authentication will not be enabled. -// SetMd5Key sets the string value in the BgpAdvanced object -func (obj *bgpAdvanced) SetMd5Key(value string) BgpAdvanced { - - obj.obj.Md5Key = &value - return obj -} - -// If set to true, the local BGP peer will wait for the remote peer to initiate the BGP session -// by establishing the TCP connection, rather than initiating sessions from the local peer. -// PassiveMode returns a bool -func (obj *bgpAdvanced) PassiveMode() bool { - - return *obj.obj.PassiveMode - -} - -// If set to true, the local BGP peer will wait for the remote peer to initiate the BGP session -// by establishing the TCP connection, rather than initiating sessions from the local peer. -// PassiveMode returns a bool -func (obj *bgpAdvanced) HasPassiveMode() bool { - return obj.obj.PassiveMode != nil -} - -// If set to true, the local BGP peer will wait for the remote peer to initiate the BGP session -// by establishing the TCP connection, rather than initiating sessions from the local peer. -// SetPassiveMode sets the bool value in the BgpAdvanced object -func (obj *bgpAdvanced) SetPassiveMode(value bool) BgpAdvanced { - - obj.obj.PassiveMode = &value - return obj + // Address returns string, set in RsvpLspIpv4Rro. + Address() string + // SetAddress assigns string provided by user to RsvpLspIpv4Rro + SetAddress(value string) RsvpLspIpv4Rro + // HasAddress checks if Address has been set in RsvpLspIpv4Rro + HasAddress() bool + // ReportedLabel returns uint32, set in RsvpLspIpv4Rro. + ReportedLabel() uint32 + // SetReportedLabel assigns uint32 provided by user to RsvpLspIpv4Rro + SetReportedLabel(value uint32) RsvpLspIpv4Rro + // HasReportedLabel checks if ReportedLabel has been set in RsvpLspIpv4Rro + HasReportedLabel() bool } -// The TCP port number on which to accept BGP connections from the remote peer. -// ListenPort returns a uint32 -func (obj *bgpAdvanced) ListenPort() uint32 { +// The IPv4 addresses of the routers that the traffic engineering tunnel traversed. +// Address returns a string +func (obj *rsvpLspIpv4Rro) Address() string { - return *obj.obj.ListenPort + return *obj.obj.Address } -// The TCP port number on which to accept BGP connections from the remote peer. -// ListenPort returns a uint32 -func (obj *bgpAdvanced) HasListenPort() bool { - return obj.obj.ListenPort != nil +// The IPv4 addresses of the routers that the traffic engineering tunnel traversed. +// Address returns a string +func (obj *rsvpLspIpv4Rro) HasAddress() bool { + return obj.obj.Address != nil } -// The TCP port number on which to accept BGP connections from the remote peer. -// SetListenPort sets the uint32 value in the BgpAdvanced object -func (obj *bgpAdvanced) SetListenPort(value uint32) BgpAdvanced { +// The IPv4 addresses of the routers that the traffic engineering tunnel traversed. +// SetAddress sets the string value in the RsvpLspIpv4Rro object +func (obj *rsvpLspIpv4Rro) SetAddress(value string) RsvpLspIpv4Rro { - obj.obj.ListenPort = &value + obj.obj.Address = &value return obj } -// Destination TCP port number of the BGP peer when initiating a -// session from the local BGP peer. -// NeighborPort returns a uint32 -func (obj *bgpAdvanced) NeighborPort() uint32 { +// Label reported for RRO hop. When the Label_Recording flag is set in the Session Attribute object, nodes doing route recording should include the Label Record subobject containing the reported label. +// ReportedLabel returns a uint32 +func (obj *rsvpLspIpv4Rro) ReportedLabel() uint32 { - return *obj.obj.NeighborPort + return *obj.obj.ReportedLabel } -// Destination TCP port number of the BGP peer when initiating a -// session from the local BGP peer. -// NeighborPort returns a uint32 -func (obj *bgpAdvanced) HasNeighborPort() bool { - return obj.obj.NeighborPort != nil +// Label reported for RRO hop. When the Label_Recording flag is set in the Session Attribute object, nodes doing route recording should include the Label Record subobject containing the reported label. +// ReportedLabel returns a uint32 +func (obj *rsvpLspIpv4Rro) HasReportedLabel() bool { + return obj.obj.ReportedLabel != nil } -// Destination TCP port number of the BGP peer when initiating a -// session from the local BGP peer. -// SetNeighborPort sets the uint32 value in the BgpAdvanced object -func (obj *bgpAdvanced) SetNeighborPort(value uint32) BgpAdvanced { +// Label reported for RRO hop. When the Label_Recording flag is set in the Session Attribute object, nodes doing route recording should include the Label Record subobject containing the reported label. +// SetReportedLabel sets the uint32 value in the RsvpLspIpv4Rro object +func (obj *rsvpLspIpv4Rro) SetReportedLabel(value uint32) RsvpLspIpv4Rro { - obj.obj.NeighborPort = &value + obj.obj.ReportedLabel = &value return obj } -func (obj *bgpAdvanced) validateObj(vObj *validation, set_default bool) { +func (obj *rsvpLspIpv4Rro) validateObj(vObj *validation, set_default bool) { if set_default { obj.setDefault() } - if obj.obj.TimeToLive != nil { - - if *obj.obj.TimeToLive > 255 { - vObj.validationErrors = append( - vObj.validationErrors, - fmt.Sprintf("0 <= BgpAdvanced.TimeToLive <= 255 but Got %d", *obj.obj.TimeToLive)) - } - - } - - if obj.obj.ListenPort != nil { - - if *obj.obj.ListenPort > 65535 { - vObj.validationErrors = append( - vObj.validationErrors, - fmt.Sprintf("0 <= BgpAdvanced.ListenPort <= 65535 but Got %d", *obj.obj.ListenPort)) - } - - } - - if obj.obj.NeighborPort != nil { + if obj.obj.Address != nil { - if *obj.obj.NeighborPort > 65535 { - vObj.validationErrors = append( - vObj.validationErrors, - fmt.Sprintf("0 <= BgpAdvanced.NeighborPort <= 65535 but Got %d", *obj.obj.NeighborPort)) + err := obj.validateIpv4(obj.Address()) + if err != nil { + vObj.validationErrors = append(vObj.validationErrors, fmt.Sprintf("%s %s", err.Error(), "on RsvpLspIpv4Rro.Address")) } } } -func (obj *bgpAdvanced) setDefault() { - if obj.obj.HoldTimeInterval == nil { - obj.SetHoldTimeInterval(90) - } - if obj.obj.KeepAliveInterval == nil { - obj.SetKeepAliveInterval(30) - } - if obj.obj.UpdateInterval == nil { - obj.SetUpdateInterval(0) - } - if obj.obj.TimeToLive == nil { - obj.SetTimeToLive(64) - } - if obj.obj.PassiveMode == nil { - obj.SetPassiveMode(false) - } - if obj.obj.ListenPort == nil { - obj.SetListenPort(179) - } - if obj.obj.NeighborPort == nil { - obj.SetNeighborPort(179) - } +func (obj *rsvpLspIpv4Rro) setDefault() { } -// ***** BgpCapability ***** -type bgpCapability struct { +// ***** RsvpLspIpv4Ero ***** +type rsvpLspIpv4Ero struct { validation - obj *otg.BgpCapability + obj *otg.RsvpLspIpv4Ero } -func NewBgpCapability() BgpCapability { - obj := bgpCapability{obj: &otg.BgpCapability{}} +func NewRsvpLspIpv4Ero() RsvpLspIpv4Ero { + obj := rsvpLspIpv4Ero{obj: &otg.RsvpLspIpv4Ero{}} obj.setDefault() return &obj } -func (obj *bgpCapability) Msg() *otg.BgpCapability { +func (obj *rsvpLspIpv4Ero) Msg() *otg.RsvpLspIpv4Ero { return obj.obj } -func (obj *bgpCapability) SetMsg(msg *otg.BgpCapability) BgpCapability { +func (obj *rsvpLspIpv4Ero) SetMsg(msg *otg.RsvpLspIpv4Ero) RsvpLspIpv4Ero { proto.Merge(obj.obj, msg) return obj } -func (obj *bgpCapability) ToProto() (*otg.BgpCapability, error) { +func (obj *rsvpLspIpv4Ero) ToProto() (*otg.RsvpLspIpv4Ero, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -174319,7 +175099,7 @@ func (obj *bgpCapability) ToProto() (*otg.BgpCapability, error) { return obj.Msg(), nil } -func (obj *bgpCapability) FromProto(msg *otg.BgpCapability) (BgpCapability, error) { +func (obj *rsvpLspIpv4Ero) FromProto(msg *otg.RsvpLspIpv4Ero) (RsvpLspIpv4Ero, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -174328,7 +175108,7 @@ func (obj *bgpCapability) FromProto(msg *otg.BgpCapability) (BgpCapability, erro return newObj, nil } -func (obj *bgpCapability) ToPbText() (string, error) { +func (obj *rsvpLspIpv4Ero) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -174340,7 +175120,7 @@ func (obj *bgpCapability) ToPbText() (string, error) { return string(protoMarshal), nil } -func (obj *bgpCapability) FromPbText(value string) error { +func (obj *rsvpLspIpv4Ero) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj @@ -174353,7 +175133,7 @@ func (obj *bgpCapability) FromPbText(value string) error { return retObj } -func (obj *bgpCapability) ToYaml() (string, error) { +func (obj *rsvpLspIpv4Ero) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -174374,7 +175154,7 @@ func (obj *bgpCapability) ToYaml() (string, error) { return string(data), nil } -func (obj *bgpCapability) FromYaml(value string) error { +func (obj *rsvpLspIpv4Ero) FromYaml(value string) error { if value == "" { value = "{}" } @@ -174399,7 +175179,7 @@ func (obj *bgpCapability) FromYaml(value string) error { return nil } -func (obj *bgpCapability) ToJson() (string, error) { +func (obj *rsvpLspIpv4Ero) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -174417,7 +175197,7 @@ func (obj *bgpCapability) ToJson() (string, error) { return string(data), nil } -func (obj *bgpCapability) FromJson(value string) error { +func (obj *rsvpLspIpv4Ero) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -174438,19 +175218,19 @@ func (obj *bgpCapability) FromJson(value string) error { return nil } -func (obj *bgpCapability) validateToAndFrom() error { +func (obj *rsvpLspIpv4Ero) validateToAndFrom() error { // emptyVars() obj.validateObj(&obj.validation, true) return obj.validationResult() } -func (obj *bgpCapability) Validate() error { +func (obj *rsvpLspIpv4Ero) Validate() error { // emptyVars() obj.validateObj(&obj.validation, false) return obj.validationResult() } -func (obj *bgpCapability) String() string { +func (obj *rsvpLspIpv4Ero) String() string { str, err := obj.ToYaml() if err != nil { return err.Error() @@ -174458,12 +175238,12 @@ func (obj *bgpCapability) String() string { return str } -func (obj *bgpCapability) Clone() (BgpCapability, error) { +func (obj *rsvpLspIpv4Ero) Clone() (RsvpLspIpv4Ero, error) { vErr := obj.Validate() if vErr != nil { return nil, vErr } - newObj := NewBgpCapability() + newObj := NewRsvpLspIpv4Ero() data, err := proto.Marshal(obj.Msg()) if err != nil { return nil, err @@ -174475,863 +175255,45893 @@ func (obj *bgpCapability) Clone() (BgpCapability, error) { return newObj, nil } -// BgpCapability is configuration for BGP capability settings. -type BgpCapability interface { +// RsvpLspIpv4Ero is this contains the list of sub-objects included in the Explicit Route Object(ERO) object send in the PATH message from the ingress. These sub-objects contain the intermediate hops to be traversed by the LSP while being forwarded towards the egress endpoint. +type RsvpLspIpv4Ero interface { Validation - // Msg marshals BgpCapability to protobuf object *otg.BgpCapability + // Msg marshals RsvpLspIpv4Ero to protobuf object *otg.RsvpLspIpv4Ero // and doesn't set defaults - Msg() *otg.BgpCapability - // SetMsg unmarshals BgpCapability from protobuf object *otg.BgpCapability + Msg() *otg.RsvpLspIpv4Ero + // SetMsg unmarshals RsvpLspIpv4Ero from protobuf object *otg.RsvpLspIpv4Ero // and doesn't set defaults - SetMsg(*otg.BgpCapability) BgpCapability - // ToProto marshals BgpCapability to protobuf object *otg.BgpCapability - ToProto() (*otg.BgpCapability, error) - // ToPbText marshals BgpCapability to protobuf text + SetMsg(*otg.RsvpLspIpv4Ero) RsvpLspIpv4Ero + // ToProto marshals RsvpLspIpv4Ero to protobuf object *otg.RsvpLspIpv4Ero + ToProto() (*otg.RsvpLspIpv4Ero, error) + // ToPbText marshals RsvpLspIpv4Ero to protobuf text ToPbText() (string, error) - // ToYaml marshals BgpCapability to YAML text + // ToYaml marshals RsvpLspIpv4Ero to YAML text ToYaml() (string, error) - // ToJson marshals BgpCapability to JSON text + // ToJson marshals RsvpLspIpv4Ero to JSON text ToJson() (string, error) - // FromProto unmarshals BgpCapability from protobuf object *otg.BgpCapability - FromProto(msg *otg.BgpCapability) (BgpCapability, error) - // FromPbText unmarshals BgpCapability from protobuf text + // FromProto unmarshals RsvpLspIpv4Ero from protobuf object *otg.RsvpLspIpv4Ero + FromProto(msg *otg.RsvpLspIpv4Ero) (RsvpLspIpv4Ero, error) + // FromPbText unmarshals RsvpLspIpv4Ero from protobuf text FromPbText(value string) error - // FromYaml unmarshals BgpCapability from YAML text + // FromYaml unmarshals RsvpLspIpv4Ero from YAML text FromYaml(value string) error - // FromJson unmarshals BgpCapability from JSON text + // FromJson unmarshals RsvpLspIpv4Ero from JSON text FromJson(value string) error - // Validate validates BgpCapability + // Validate validates RsvpLspIpv4Ero Validate() error // A stringer function String() string // Clones the object - Clone() (BgpCapability, error) + Clone() (RsvpLspIpv4Ero, error) validateToAndFrom() error validateObj(vObj *validation, set_default bool) setDefault() - // Ipv4Unicast returns bool, set in BgpCapability. - Ipv4Unicast() bool - // SetIpv4Unicast assigns bool provided by user to BgpCapability - SetIpv4Unicast(value bool) BgpCapability - // HasIpv4Unicast checks if Ipv4Unicast has been set in BgpCapability - HasIpv4Unicast() bool - // Ipv4Multicast returns bool, set in BgpCapability. - Ipv4Multicast() bool - // SetIpv4Multicast assigns bool provided by user to BgpCapability - SetIpv4Multicast(value bool) BgpCapability - // HasIpv4Multicast checks if Ipv4Multicast has been set in BgpCapability - HasIpv4Multicast() bool - // Ipv6Unicast returns bool, set in BgpCapability. - Ipv6Unicast() bool - // SetIpv6Unicast assigns bool provided by user to BgpCapability - SetIpv6Unicast(value bool) BgpCapability - // HasIpv6Unicast checks if Ipv6Unicast has been set in BgpCapability - HasIpv6Unicast() bool - // Ipv6Multicast returns bool, set in BgpCapability. - Ipv6Multicast() bool - // SetIpv6Multicast assigns bool provided by user to BgpCapability - SetIpv6Multicast(value bool) BgpCapability - // HasIpv6Multicast checks if Ipv6Multicast has been set in BgpCapability - HasIpv6Multicast() bool - // Vpls returns bool, set in BgpCapability. - Vpls() bool - // SetVpls assigns bool provided by user to BgpCapability - SetVpls(value bool) BgpCapability - // HasVpls checks if Vpls has been set in BgpCapability - HasVpls() bool - // RouteRefresh returns bool, set in BgpCapability. - RouteRefresh() bool - // SetRouteRefresh assigns bool provided by user to BgpCapability - SetRouteRefresh(value bool) BgpCapability - // HasRouteRefresh checks if RouteRefresh has been set in BgpCapability - HasRouteRefresh() bool - // RouteConstraint returns bool, set in BgpCapability. - RouteConstraint() bool - // SetRouteConstraint assigns bool provided by user to BgpCapability - SetRouteConstraint(value bool) BgpCapability - // HasRouteConstraint checks if RouteConstraint has been set in BgpCapability - HasRouteConstraint() bool - // LinkStateNonVpn returns bool, set in BgpCapability. - LinkStateNonVpn() bool - // SetLinkStateNonVpn assigns bool provided by user to BgpCapability - SetLinkStateNonVpn(value bool) BgpCapability - // HasLinkStateNonVpn checks if LinkStateNonVpn has been set in BgpCapability - HasLinkStateNonVpn() bool - // LinkStateVpn returns bool, set in BgpCapability. - LinkStateVpn() bool - // SetLinkStateVpn assigns bool provided by user to BgpCapability - SetLinkStateVpn(value bool) BgpCapability - // HasLinkStateVpn checks if LinkStateVpn has been set in BgpCapability - HasLinkStateVpn() bool - // Evpn returns bool, set in BgpCapability. - Evpn() bool - // SetEvpn assigns bool provided by user to BgpCapability - SetEvpn(value bool) BgpCapability - // HasEvpn checks if Evpn has been set in BgpCapability - HasEvpn() bool - // ExtendedNextHopEncoding returns bool, set in BgpCapability. - ExtendedNextHopEncoding() bool - // SetExtendedNextHopEncoding assigns bool provided by user to BgpCapability - SetExtendedNextHopEncoding(value bool) BgpCapability - // HasExtendedNextHopEncoding checks if ExtendedNextHopEncoding has been set in BgpCapability - HasExtendedNextHopEncoding() bool - // Ipv4MulticastVpn returns bool, set in BgpCapability. - Ipv4MulticastVpn() bool - // SetIpv4MulticastVpn assigns bool provided by user to BgpCapability - SetIpv4MulticastVpn(value bool) BgpCapability - // HasIpv4MulticastVpn checks if Ipv4MulticastVpn has been set in BgpCapability - HasIpv4MulticastVpn() bool - // Ipv4MplsVpn returns bool, set in BgpCapability. - Ipv4MplsVpn() bool - // SetIpv4MplsVpn assigns bool provided by user to BgpCapability - SetIpv4MplsVpn(value bool) BgpCapability - // HasIpv4MplsVpn checks if Ipv4MplsVpn has been set in BgpCapability - HasIpv4MplsVpn() bool - // Ipv4Mdt returns bool, set in BgpCapability. - Ipv4Mdt() bool - // SetIpv4Mdt assigns bool provided by user to BgpCapability - SetIpv4Mdt(value bool) BgpCapability - // HasIpv4Mdt checks if Ipv4Mdt has been set in BgpCapability - HasIpv4Mdt() bool - // Ipv4MulticastMplsVpn returns bool, set in BgpCapability. - Ipv4MulticastMplsVpn() bool - // SetIpv4MulticastMplsVpn assigns bool provided by user to BgpCapability - SetIpv4MulticastMplsVpn(value bool) BgpCapability - // HasIpv4MulticastMplsVpn checks if Ipv4MulticastMplsVpn has been set in BgpCapability - HasIpv4MulticastMplsVpn() bool - // Ipv4UnicastFlowSpec returns bool, set in BgpCapability. - Ipv4UnicastFlowSpec() bool - // SetIpv4UnicastFlowSpec assigns bool provided by user to BgpCapability - SetIpv4UnicastFlowSpec(value bool) BgpCapability - // HasIpv4UnicastFlowSpec checks if Ipv4UnicastFlowSpec has been set in BgpCapability - HasIpv4UnicastFlowSpec() bool - // Ipv4SrTePolicy returns bool, set in BgpCapability. - Ipv4SrTePolicy() bool - // SetIpv4SrTePolicy assigns bool provided by user to BgpCapability - SetIpv4SrTePolicy(value bool) BgpCapability - // HasIpv4SrTePolicy checks if Ipv4SrTePolicy has been set in BgpCapability - HasIpv4SrTePolicy() bool - // Ipv4UnicastAddPath returns bool, set in BgpCapability. - Ipv4UnicastAddPath() bool - // SetIpv4UnicastAddPath assigns bool provided by user to BgpCapability - SetIpv4UnicastAddPath(value bool) BgpCapability - // HasIpv4UnicastAddPath checks if Ipv4UnicastAddPath has been set in BgpCapability - HasIpv4UnicastAddPath() bool - // Ipv6MulticastVpn returns bool, set in BgpCapability. - Ipv6MulticastVpn() bool - // SetIpv6MulticastVpn assigns bool provided by user to BgpCapability - SetIpv6MulticastVpn(value bool) BgpCapability - // HasIpv6MulticastVpn checks if Ipv6MulticastVpn has been set in BgpCapability - HasIpv6MulticastVpn() bool - // Ipv6MplsVpn returns bool, set in BgpCapability. - Ipv6MplsVpn() bool - // SetIpv6MplsVpn assigns bool provided by user to BgpCapability - SetIpv6MplsVpn(value bool) BgpCapability - // HasIpv6MplsVpn checks if Ipv6MplsVpn has been set in BgpCapability - HasIpv6MplsVpn() bool - // Ipv6Mdt returns bool, set in BgpCapability. - Ipv6Mdt() bool - // SetIpv6Mdt assigns bool provided by user to BgpCapability - SetIpv6Mdt(value bool) BgpCapability - // HasIpv6Mdt checks if Ipv6Mdt has been set in BgpCapability - HasIpv6Mdt() bool - // Ipv6MulticastMplsVpn returns bool, set in BgpCapability. - Ipv6MulticastMplsVpn() bool - // SetIpv6MulticastMplsVpn assigns bool provided by user to BgpCapability - SetIpv6MulticastMplsVpn(value bool) BgpCapability - // HasIpv6MulticastMplsVpn checks if Ipv6MulticastMplsVpn has been set in BgpCapability - HasIpv6MulticastMplsVpn() bool - // Ipv6UnicastFlowSpec returns bool, set in BgpCapability. - Ipv6UnicastFlowSpec() bool - // SetIpv6UnicastFlowSpec assigns bool provided by user to BgpCapability - SetIpv6UnicastFlowSpec(value bool) BgpCapability - // HasIpv6UnicastFlowSpec checks if Ipv6UnicastFlowSpec has been set in BgpCapability - HasIpv6UnicastFlowSpec() bool - // Ipv6SrTePolicy returns bool, set in BgpCapability. - Ipv6SrTePolicy() bool - // SetIpv6SrTePolicy assigns bool provided by user to BgpCapability - SetIpv6SrTePolicy(value bool) BgpCapability - // HasIpv6SrTePolicy checks if Ipv6SrTePolicy has been set in BgpCapability - HasIpv6SrTePolicy() bool - // Ipv6UnicastAddPath returns bool, set in BgpCapability. - Ipv6UnicastAddPath() bool - // SetIpv6UnicastAddPath assigns bool provided by user to BgpCapability - SetIpv6UnicastAddPath(value bool) BgpCapability - // HasIpv6UnicastAddPath checks if Ipv6UnicastAddPath has been set in BgpCapability - HasIpv6UnicastAddPath() bool -} - -// Support for the IPv4 Unicast address family. -// Ipv4Unicast returns a bool -func (obj *bgpCapability) Ipv4Unicast() bool { - - return *obj.obj.Ipv4Unicast - -} - -// Support for the IPv4 Unicast address family. -// Ipv4Unicast returns a bool -func (obj *bgpCapability) HasIpv4Unicast() bool { - return obj.obj.Ipv4Unicast != nil -} - -// Support for the IPv4 Unicast address family. -// SetIpv4Unicast sets the bool value in the BgpCapability object -func (obj *bgpCapability) SetIpv4Unicast(value bool) BgpCapability { - - obj.obj.Ipv4Unicast = &value - return obj + // Prefix returns string, set in RsvpLspIpv4Ero. + Prefix() string + // SetPrefix assigns string provided by user to RsvpLspIpv4Ero + SetPrefix(value string) RsvpLspIpv4Ero + // HasPrefix checks if Prefix has been set in RsvpLspIpv4Ero + HasPrefix() bool + // Asn returns uint32, set in RsvpLspIpv4Ero. + Asn() uint32 + // SetAsn assigns uint32 provided by user to RsvpLspIpv4Ero + SetAsn(value uint32) RsvpLspIpv4Ero + // HasAsn checks if Asn has been set in RsvpLspIpv4Ero + HasAsn() bool + // Type returns RsvpLspIpv4EroTypeEnum, set in RsvpLspIpv4Ero + Type() RsvpLspIpv4EroTypeEnum + // SetType assigns RsvpLspIpv4EroTypeEnum provided by user to RsvpLspIpv4Ero + SetType(value RsvpLspIpv4EroTypeEnum) RsvpLspIpv4Ero + // HasType checks if Type has been set in RsvpLspIpv4Ero + HasType() bool } -// Support for the IPv4 Multicast address family. -// Ipv4Multicast returns a bool -func (obj *bgpCapability) Ipv4Multicast() bool { +// The IPv4 prefix indicated by the ERO. Specified only when the ERO hop is an IPv4 prefix. +// Prefix returns a string +func (obj *rsvpLspIpv4Ero) Prefix() string { - return *obj.obj.Ipv4Multicast + return *obj.obj.Prefix } -// Support for the IPv4 Multicast address family. -// Ipv4Multicast returns a bool -func (obj *bgpCapability) HasIpv4Multicast() bool { - return obj.obj.Ipv4Multicast != nil +// The IPv4 prefix indicated by the ERO. Specified only when the ERO hop is an IPv4 prefix. +// Prefix returns a string +func (obj *rsvpLspIpv4Ero) HasPrefix() bool { + return obj.obj.Prefix != nil } -// Support for the IPv4 Multicast address family. -// SetIpv4Multicast sets the bool value in the BgpCapability object -func (obj *bgpCapability) SetIpv4Multicast(value bool) BgpCapability { +// The IPv4 prefix indicated by the ERO. Specified only when the ERO hop is an IPv4 prefix. +// SetPrefix sets the string value in the RsvpLspIpv4Ero object +func (obj *rsvpLspIpv4Ero) SetPrefix(value string) RsvpLspIpv4Ero { - obj.obj.Ipv4Multicast = &value + obj.obj.Prefix = &value return obj } -// Support for the IPv4 Unicast address family. -// Ipv6Unicast returns a bool -func (obj *bgpCapability) Ipv6Unicast() bool { +// The autonomous system number indicated by the ERO. Specified only when the ERO hop is an 2 or 4-byte AS number. +// Asn returns a uint32 +func (obj *rsvpLspIpv4Ero) Asn() uint32 { - return *obj.obj.Ipv6Unicast + return *obj.obj.Asn } -// Support for the IPv4 Unicast address family. -// Ipv6Unicast returns a bool -func (obj *bgpCapability) HasIpv6Unicast() bool { - return obj.obj.Ipv6Unicast != nil +// The autonomous system number indicated by the ERO. Specified only when the ERO hop is an 2 or 4-byte AS number. +// Asn returns a uint32 +func (obj *rsvpLspIpv4Ero) HasAsn() bool { + return obj.obj.Asn != nil } -// Support for the IPv4 Unicast address family. -// SetIpv6Unicast sets the bool value in the BgpCapability object -func (obj *bgpCapability) SetIpv6Unicast(value bool) BgpCapability { +// The autonomous system number indicated by the ERO. Specified only when the ERO hop is an 2 or 4-byte AS number. +// SetAsn sets the uint32 value in the RsvpLspIpv4Ero object +func (obj *rsvpLspIpv4Ero) SetAsn(value uint32) RsvpLspIpv4Ero { - obj.obj.Ipv6Unicast = &value + obj.obj.Asn = &value return obj } -// Support for the IPv6 Multicast address family. -// Ipv6Multicast returns a bool -func (obj *bgpCapability) Ipv6Multicast() bool { - - return *obj.obj.Ipv6Multicast - -} - -// Support for the IPv6 Multicast address family. -// Ipv6Multicast returns a bool -func (obj *bgpCapability) HasIpv6Multicast() bool { - return obj.obj.Ipv6Multicast != nil -} - -// Support for the IPv6 Multicast address family. -// SetIpv6Multicast sets the bool value in the BgpCapability object -func (obj *bgpCapability) SetIpv6Multicast(value bool) BgpCapability { +type RsvpLspIpv4EroTypeEnum string - obj.obj.Ipv6Multicast = &value - return obj +// Enum of Type on RsvpLspIpv4Ero +var RsvpLspIpv4EroType = struct { + IPV4 RsvpLspIpv4EroTypeEnum + IPV6 RsvpLspIpv4EroTypeEnum + ASN RsvpLspIpv4EroTypeEnum + ASN4 RsvpLspIpv4EroTypeEnum + LABEL RsvpLspIpv4EroTypeEnum + UNNUMBERED_INTERFACE RsvpLspIpv4EroTypeEnum +}{ + IPV4: RsvpLspIpv4EroTypeEnum("ipv4"), + IPV6: RsvpLspIpv4EroTypeEnum("ipv6"), + ASN: RsvpLspIpv4EroTypeEnum("asn"), + ASN4: RsvpLspIpv4EroTypeEnum("asn4"), + LABEL: RsvpLspIpv4EroTypeEnum("label"), + UNNUMBERED_INTERFACE: RsvpLspIpv4EroTypeEnum("unnumbered_interface"), } -// Support for VPLS as below. -// RFC4761 - Virtual Private LAN Service (VPLS) using BGP for Auto-Discovery -// and Signaling. -// RFC6624 - Layer 2 Virtual Private Networks using BGP for Auto-Discovery -// and Signaling. -// Vpls returns a bool -func (obj *bgpCapability) Vpls() bool { - - return *obj.obj.Vpls - +func (obj *rsvpLspIpv4Ero) Type() RsvpLspIpv4EroTypeEnum { + return RsvpLspIpv4EroTypeEnum(obj.obj.Type.Enum().String()) } -// Support for VPLS as below. -// RFC4761 - Virtual Private LAN Service (VPLS) using BGP for Auto-Discovery -// and Signaling. -// RFC6624 - Layer 2 Virtual Private Networks using BGP for Auto-Discovery -// and Signaling. -// Vpls returns a bool -func (obj *bgpCapability) HasVpls() bool { - return obj.obj.Vpls != nil +// The type indicated by the ERO. +// Type returns a string +func (obj *rsvpLspIpv4Ero) HasType() bool { + return obj.obj.Type != nil } -// Support for VPLS as below. -// RFC4761 - Virtual Private LAN Service (VPLS) using BGP for Auto-Discovery -// and Signaling. -// RFC6624 - Layer 2 Virtual Private Networks using BGP for Auto-Discovery -// and Signaling. -// SetVpls sets the bool value in the BgpCapability object -func (obj *bgpCapability) SetVpls(value bool) BgpCapability { +func (obj *rsvpLspIpv4Ero) SetType(value RsvpLspIpv4EroTypeEnum) RsvpLspIpv4Ero { + intValue, ok := otg.RsvpLspIpv4Ero_Type_Enum_value[string(value)] + if !ok { + obj.validationErrors = append(obj.validationErrors, fmt.Sprintf( + "%s is not a valid choice on RsvpLspIpv4EroTypeEnum", string(value))) + return obj + } + enumValue := otg.RsvpLspIpv4Ero_Type_Enum(intValue) + obj.obj.Type = &enumValue - obj.obj.Vpls = &value return obj } -// Support for the route refresh capabilities. Route Refresh allows the dynamic exchange of route refresh requests and routing information between BGP peers and the subsequent re-advertisement of the outbound or inbound routing table. -// RouteRefresh returns a bool -func (obj *bgpCapability) RouteRefresh() bool { - - return *obj.obj.RouteRefresh +func (obj *rsvpLspIpv4Ero) validateObj(vObj *validation, set_default bool) { + if set_default { + obj.setDefault() + } -} + if obj.obj.Prefix != nil { -// Support for the route refresh capabilities. Route Refresh allows the dynamic exchange of route refresh requests and routing information between BGP peers and the subsequent re-advertisement of the outbound or inbound routing table. -// RouteRefresh returns a bool -func (obj *bgpCapability) HasRouteRefresh() bool { - return obj.obj.RouteRefresh != nil -} + err := obj.validateIpv4(obj.Prefix()) + if err != nil { + vObj.validationErrors = append(vObj.validationErrors, fmt.Sprintf("%s %s", err.Error(), "on RsvpLspIpv4Ero.Prefix")) + } -// Support for the route refresh capabilities. Route Refresh allows the dynamic exchange of route refresh requests and routing information between BGP peers and the subsequent re-advertisement of the outbound or inbound routing table. -// SetRouteRefresh sets the bool value in the BgpCapability object -func (obj *bgpCapability) SetRouteRefresh(value bool) BgpCapability { + } - obj.obj.RouteRefresh = &value - return obj } -// Supports for the route constraint capabilities. Route Constraint allows the advertisement of Route Target Membership information. The BGP peers exchange Route Target Reachability Information, which is used to build a route distribution graph. This limits the propagation of VPN Network Layer Reachability Information (NLRI) between different autonomous systems or distinct clusters of the same autonomous system. This is supported for Layer 3 Virtual Private Network scenario. -// RouteConstraint returns a bool -func (obj *bgpCapability) RouteConstraint() bool { - - return *obj.obj.RouteConstraint - -} +func (obj *rsvpLspIpv4Ero) setDefault() { -// Supports for the route constraint capabilities. Route Constraint allows the advertisement of Route Target Membership information. The BGP peers exchange Route Target Reachability Information, which is used to build a route distribution graph. This limits the propagation of VPN Network Layer Reachability Information (NLRI) between different autonomous systems or distinct clusters of the same autonomous system. This is supported for Layer 3 Virtual Private Network scenario. -// RouteConstraint returns a bool -func (obj *bgpCapability) HasRouteConstraint() bool { - return obj.obj.RouteConstraint != nil } -// Supports for the route constraint capabilities. Route Constraint allows the advertisement of Route Target Membership information. The BGP peers exchange Route Target Reachability Information, which is used to build a route distribution graph. This limits the propagation of VPN Network Layer Reachability Information (NLRI) between different autonomous systems or distinct clusters of the same autonomous system. This is supported for Layer 3 Virtual Private Network scenario. -// SetRouteConstraint sets the bool value in the BgpCapability object -func (obj *bgpCapability) SetRouteConstraint(value bool) BgpCapability { - - obj.obj.RouteConstraint = &value - return obj +// ***** LinkStatepriorityBandwidths ***** +type linkStatepriorityBandwidths struct { + validation + obj *otg.LinkStatepriorityBandwidths } -// Support for BGP Link State for ISIS and OSPF. -// LinkStateNonVpn returns a bool -func (obj *bgpCapability) LinkStateNonVpn() bool { - - return *obj.obj.LinkStateNonVpn - +func NewLinkStatepriorityBandwidths() LinkStatepriorityBandwidths { + obj := linkStatepriorityBandwidths{obj: &otg.LinkStatepriorityBandwidths{}} + obj.setDefault() + return &obj } -// Support for BGP Link State for ISIS and OSPF. -// LinkStateNonVpn returns a bool -func (obj *bgpCapability) HasLinkStateNonVpn() bool { - return obj.obj.LinkStateNonVpn != nil +func (obj *linkStatepriorityBandwidths) Msg() *otg.LinkStatepriorityBandwidths { + return obj.obj } -// Support for BGP Link State for ISIS and OSPF. -// SetLinkStateNonVpn sets the bool value in the BgpCapability object -func (obj *bgpCapability) SetLinkStateNonVpn(value bool) BgpCapability { +func (obj *linkStatepriorityBandwidths) SetMsg(msg *otg.LinkStatepriorityBandwidths) LinkStatepriorityBandwidths { - obj.obj.LinkStateNonVpn = &value + proto.Merge(obj.obj, msg) return obj } -// Capability advertisement of BGP Link State for VPNs. -// LinkStateVpn returns a bool -func (obj *bgpCapability) LinkStateVpn() bool { - - return *obj.obj.LinkStateVpn - +func (obj *linkStatepriorityBandwidths) ToProto() (*otg.LinkStatepriorityBandwidths, error) { + err := obj.validateToAndFrom() + if err != nil { + return nil, err + } + return obj.Msg(), nil } -// Capability advertisement of BGP Link State for VPNs. -// LinkStateVpn returns a bool -func (obj *bgpCapability) HasLinkStateVpn() bool { - return obj.obj.LinkStateVpn != nil +func (obj *linkStatepriorityBandwidths) FromProto(msg *otg.LinkStatepriorityBandwidths) (LinkStatepriorityBandwidths, error) { + newObj := obj.SetMsg(msg) + err := newObj.validateToAndFrom() + if err != nil { + return nil, err + } + return newObj, nil } -// Capability advertisement of BGP Link State for VPNs. -// SetLinkStateVpn sets the bool value in the BgpCapability object -func (obj *bgpCapability) SetLinkStateVpn(value bool) BgpCapability { - - obj.obj.LinkStateVpn = &value - return obj +func (obj *linkStatepriorityBandwidths) ToPbText() (string, error) { + vErr := obj.validateToAndFrom() + if vErr != nil { + return "", vErr + } + protoMarshal, err := proto.Marshal(obj.Msg()) + if err != nil { + return "", err + } + return string(protoMarshal), nil } -// Support for the EVPN address family. -// Evpn returns a bool -func (obj *bgpCapability) Evpn() bool { - - return *obj.obj.Evpn - -} +func (obj *linkStatepriorityBandwidths) FromPbText(value string) error { + retObj := proto.Unmarshal([]byte(value), obj.Msg()) + if retObj != nil { + return retObj + } -// Support for the EVPN address family. -// Evpn returns a bool -func (obj *bgpCapability) HasEvpn() bool { - return obj.obj.Evpn != nil + vErr := obj.validateToAndFrom() + if vErr != nil { + return vErr + } + return retObj } -// Support for the EVPN address family. -// SetEvpn sets the bool value in the BgpCapability object -func (obj *bgpCapability) SetEvpn(value bool) BgpCapability { - - obj.obj.Evpn = &value - return obj +func (obj *linkStatepriorityBandwidths) ToYaml() (string, error) { + vErr := obj.validateToAndFrom() + if vErr != nil { + return "", vErr + } + opts := protojson.MarshalOptions{ + UseProtoNames: true, + AllowPartial: true, + EmitUnpopulated: false, + } + data, err := opts.Marshal(obj.Msg()) + if err != nil { + return "", err + } + data, err = yaml.JSONToYAML(data) + if err != nil { + return "", err + } + return string(data), nil } -// Support for extended Next Hop Encoding for Nexthop field in IPv4 routes advertisement. This allows IPv4 routes being advertised by IPv6 peers to include an IPv6 Nexthop. -// ExtendedNextHopEncoding returns a bool -func (obj *bgpCapability) ExtendedNextHopEncoding() bool { - - return *obj.obj.ExtendedNextHopEncoding - -} +func (obj *linkStatepriorityBandwidths) FromYaml(value string) error { + if value == "" { + value = "{}" + } + data, err := yaml.YAMLToJSON([]byte(value)) + if err != nil { + return err + } + opts := protojson.UnmarshalOptions{ + AllowPartial: true, + DiscardUnknown: false, + } + uError := opts.Unmarshal([]byte(data), obj.Msg()) + if uError != nil { + return fmt.Errorf("unmarshal error %s", strings.Replace( + uError.Error(), "\u00a0", " ", -1)[7:]) + } -// Support for extended Next Hop Encoding for Nexthop field in IPv4 routes advertisement. This allows IPv4 routes being advertised by IPv6 peers to include an IPv6 Nexthop. -// ExtendedNextHopEncoding returns a bool -func (obj *bgpCapability) HasExtendedNextHopEncoding() bool { - return obj.obj.ExtendedNextHopEncoding != nil + vErr := obj.validateToAndFrom() + if vErr != nil { + return vErr + } + return nil } -// Support for extended Next Hop Encoding for Nexthop field in IPv4 routes advertisement. This allows IPv4 routes being advertised by IPv6 peers to include an IPv6 Nexthop. -// SetExtendedNextHopEncoding sets the bool value in the BgpCapability object -func (obj *bgpCapability) SetExtendedNextHopEncoding(value bool) BgpCapability { - - obj.obj.ExtendedNextHopEncoding = &value - return obj +func (obj *linkStatepriorityBandwidths) ToJson() (string, error) { + vErr := obj.validateToAndFrom() + if vErr != nil { + return "", vErr + } + opts := protojson.MarshalOptions{ + UseProtoNames: true, + AllowPartial: true, + EmitUnpopulated: false, + Indent: " ", + } + data, err := opts.Marshal(obj.Msg()) + if err != nil { + return "", err + } + return string(data), nil } -// Support for the IPv4 Multicast VPN address family. -// Ipv4MulticastVpn returns a bool -func (obj *bgpCapability) Ipv4MulticastVpn() bool { - - return *obj.obj.Ipv4MulticastVpn +func (obj *linkStatepriorityBandwidths) FromJson(value string) error { + opts := protojson.UnmarshalOptions{ + AllowPartial: true, + DiscardUnknown: false, + } + if value == "" { + value = "{}" + } + uError := opts.Unmarshal([]byte(value), obj.Msg()) + if uError != nil { + return fmt.Errorf("unmarshal error %s", strings.Replace( + uError.Error(), "\u00a0", " ", -1)[7:]) + } + err := obj.validateToAndFrom() + if err != nil { + return err + } + return nil } -// Support for the IPv4 Multicast VPN address family. -// Ipv4MulticastVpn returns a bool -func (obj *bgpCapability) HasIpv4MulticastVpn() bool { - return obj.obj.Ipv4MulticastVpn != nil +func (obj *linkStatepriorityBandwidths) validateToAndFrom() error { + // emptyVars() + obj.validateObj(&obj.validation, true) + return obj.validationResult() } -// Support for the IPv4 Multicast VPN address family. -// SetIpv4MulticastVpn sets the bool value in the BgpCapability object -func (obj *bgpCapability) SetIpv4MulticastVpn(value bool) BgpCapability { - - obj.obj.Ipv4MulticastVpn = &value - return obj +func (obj *linkStatepriorityBandwidths) Validate() error { + // emptyVars() + obj.validateObj(&obj.validation, false) + return obj.validationResult() } -// Support for the IPv4 MPLS L3VPN address family. -// Ipv4MplsVpn returns a bool -func (obj *bgpCapability) Ipv4MplsVpn() bool { - - return *obj.obj.Ipv4MplsVpn - +func (obj *linkStatepriorityBandwidths) String() string { + str, err := obj.ToYaml() + if err != nil { + return err.Error() + } + return str } -// Support for the IPv4 MPLS L3VPN address family. -// Ipv4MplsVpn returns a bool -func (obj *bgpCapability) HasIpv4MplsVpn() bool { - return obj.obj.Ipv4MplsVpn != nil +func (obj *linkStatepriorityBandwidths) Clone() (LinkStatepriorityBandwidths, error) { + vErr := obj.Validate() + if vErr != nil { + return nil, vErr + } + newObj := NewLinkStatepriorityBandwidths() + data, err := proto.Marshal(obj.Msg()) + if err != nil { + return nil, err + } + pbErr := proto.Unmarshal(data, newObj.Msg()) + if pbErr != nil { + return nil, pbErr + } + return newObj, nil } -// Support for the IPv4 MPLS L3VPN address family. -// SetIpv4MplsVpn sets the bool value in the BgpCapability object -func (obj *bgpCapability) SetIpv4MplsVpn(value bool) BgpCapability { - - obj.obj.Ipv4MplsVpn = &value - return obj +// LinkStatepriorityBandwidths is specifies the amount of bandwidth that can be reserved with a setup priority of 0 +// through 7, arranged in increasing order with priority 0 having highest priority. +// In ISIS, this is sent in sub-TLV (11) of Extended IS Reachability TLV. +type LinkStatepriorityBandwidths interface { + Validation + // Msg marshals LinkStatepriorityBandwidths to protobuf object *otg.LinkStatepriorityBandwidths + // and doesn't set defaults + Msg() *otg.LinkStatepriorityBandwidths + // SetMsg unmarshals LinkStatepriorityBandwidths from protobuf object *otg.LinkStatepriorityBandwidths + // and doesn't set defaults + SetMsg(*otg.LinkStatepriorityBandwidths) LinkStatepriorityBandwidths + // ToProto marshals LinkStatepriorityBandwidths to protobuf object *otg.LinkStatepriorityBandwidths + ToProto() (*otg.LinkStatepriorityBandwidths, error) + // ToPbText marshals LinkStatepriorityBandwidths to protobuf text + ToPbText() (string, error) + // ToYaml marshals LinkStatepriorityBandwidths to YAML text + ToYaml() (string, error) + // ToJson marshals LinkStatepriorityBandwidths to JSON text + ToJson() (string, error) + // FromProto unmarshals LinkStatepriorityBandwidths from protobuf object *otg.LinkStatepriorityBandwidths + FromProto(msg *otg.LinkStatepriorityBandwidths) (LinkStatepriorityBandwidths, error) + // FromPbText unmarshals LinkStatepriorityBandwidths from protobuf text + FromPbText(value string) error + // FromYaml unmarshals LinkStatepriorityBandwidths from YAML text + FromYaml(value string) error + // FromJson unmarshals LinkStatepriorityBandwidths from JSON text + FromJson(value string) error + // Validate validates LinkStatepriorityBandwidths + Validate() error + // A stringer function + String() string + // Clones the object + Clone() (LinkStatepriorityBandwidths, error) + validateToAndFrom() error + validateObj(vObj *validation, set_default bool) + setDefault() + // Pb0 returns uint32, set in LinkStatepriorityBandwidths. + Pb0() uint32 + // SetPb0 assigns uint32 provided by user to LinkStatepriorityBandwidths + SetPb0(value uint32) LinkStatepriorityBandwidths + // HasPb0 checks if Pb0 has been set in LinkStatepriorityBandwidths + HasPb0() bool + // Pb1 returns uint32, set in LinkStatepriorityBandwidths. + Pb1() uint32 + // SetPb1 assigns uint32 provided by user to LinkStatepriorityBandwidths + SetPb1(value uint32) LinkStatepriorityBandwidths + // HasPb1 checks if Pb1 has been set in LinkStatepriorityBandwidths + HasPb1() bool + // Pb2 returns uint32, set in LinkStatepriorityBandwidths. + Pb2() uint32 + // SetPb2 assigns uint32 provided by user to LinkStatepriorityBandwidths + SetPb2(value uint32) LinkStatepriorityBandwidths + // HasPb2 checks if Pb2 has been set in LinkStatepriorityBandwidths + HasPb2() bool + // Pb3 returns uint32, set in LinkStatepriorityBandwidths. + Pb3() uint32 + // SetPb3 assigns uint32 provided by user to LinkStatepriorityBandwidths + SetPb3(value uint32) LinkStatepriorityBandwidths + // HasPb3 checks if Pb3 has been set in LinkStatepriorityBandwidths + HasPb3() bool + // Pb4 returns uint32, set in LinkStatepriorityBandwidths. + Pb4() uint32 + // SetPb4 assigns uint32 provided by user to LinkStatepriorityBandwidths + SetPb4(value uint32) LinkStatepriorityBandwidths + // HasPb4 checks if Pb4 has been set in LinkStatepriorityBandwidths + HasPb4() bool + // Pb5 returns uint32, set in LinkStatepriorityBandwidths. + Pb5() uint32 + // SetPb5 assigns uint32 provided by user to LinkStatepriorityBandwidths + SetPb5(value uint32) LinkStatepriorityBandwidths + // HasPb5 checks if Pb5 has been set in LinkStatepriorityBandwidths + HasPb5() bool + // Pb6 returns uint32, set in LinkStatepriorityBandwidths. + Pb6() uint32 + // SetPb6 assigns uint32 provided by user to LinkStatepriorityBandwidths + SetPb6(value uint32) LinkStatepriorityBandwidths + // HasPb6 checks if Pb6 has been set in LinkStatepriorityBandwidths + HasPb6() bool + // Pb7 returns uint32, set in LinkStatepriorityBandwidths. + Pb7() uint32 + // SetPb7 assigns uint32 provided by user to LinkStatepriorityBandwidths + SetPb7(value uint32) LinkStatepriorityBandwidths + // HasPb7 checks if Pb7 has been set in LinkStatepriorityBandwidths + HasPb7() bool } -// Supports for IPv4 MDT address family messages. -// Ipv4Mdt returns a bool -func (obj *bgpCapability) Ipv4Mdt() bool { +// Specifies the amount of bandwidth that can be reserved for the Priority 0. +// Pb0 returns a uint32 +func (obj *linkStatepriorityBandwidths) Pb0() uint32 { - return *obj.obj.Ipv4Mdt + return *obj.obj.Pb0 } -// Supports for IPv4 MDT address family messages. -// Ipv4Mdt returns a bool -func (obj *bgpCapability) HasIpv4Mdt() bool { - return obj.obj.Ipv4Mdt != nil +// Specifies the amount of bandwidth that can be reserved for the Priority 0. +// Pb0 returns a uint32 +func (obj *linkStatepriorityBandwidths) HasPb0() bool { + return obj.obj.Pb0 != nil } -// Supports for IPv4 MDT address family messages. -// SetIpv4Mdt sets the bool value in the BgpCapability object -func (obj *bgpCapability) SetIpv4Mdt(value bool) BgpCapability { +// Specifies the amount of bandwidth that can be reserved for the Priority 0. +// SetPb0 sets the uint32 value in the LinkStatepriorityBandwidths object +func (obj *linkStatepriorityBandwidths) SetPb0(value uint32) LinkStatepriorityBandwidths { - obj.obj.Ipv4Mdt = &value + obj.obj.Pb0 = &value return obj } -// Support for the IPv4 Multicast VPN address family. -// Ipv4MulticastMplsVpn returns a bool -func (obj *bgpCapability) Ipv4MulticastMplsVpn() bool { +// Specifies the amount of bandwidth that can be reserved for the Priority 1. +// Pb1 returns a uint32 +func (obj *linkStatepriorityBandwidths) Pb1() uint32 { - return *obj.obj.Ipv4MulticastMplsVpn + return *obj.obj.Pb1 } -// Support for the IPv4 Multicast VPN address family. -// Ipv4MulticastMplsVpn returns a bool -func (obj *bgpCapability) HasIpv4MulticastMplsVpn() bool { - return obj.obj.Ipv4MulticastMplsVpn != nil +// Specifies the amount of bandwidth that can be reserved for the Priority 1. +// Pb1 returns a uint32 +func (obj *linkStatepriorityBandwidths) HasPb1() bool { + return obj.obj.Pb1 != nil } -// Support for the IPv4 Multicast VPN address family. -// SetIpv4MulticastMplsVpn sets the bool value in the BgpCapability object -func (obj *bgpCapability) SetIpv4MulticastMplsVpn(value bool) BgpCapability { +// Specifies the amount of bandwidth that can be reserved for the Priority 1. +// SetPb1 sets the uint32 value in the LinkStatepriorityBandwidths object +func (obj *linkStatepriorityBandwidths) SetPb1(value uint32) LinkStatepriorityBandwidths { - obj.obj.Ipv4MulticastMplsVpn = &value + obj.obj.Pb1 = &value return obj } -// Support for propagation of IPv4 unicast flow specification rules. -// Ipv4UnicastFlowSpec returns a bool -func (obj *bgpCapability) Ipv4UnicastFlowSpec() bool { +// Specify the amount of bandwidth that can be reserved for the Priority 2. +// Pb2 returns a uint32 +func (obj *linkStatepriorityBandwidths) Pb2() uint32 { - return *obj.obj.Ipv4UnicastFlowSpec + return *obj.obj.Pb2 } -// Support for propagation of IPv4 unicast flow specification rules. -// Ipv4UnicastFlowSpec returns a bool -func (obj *bgpCapability) HasIpv4UnicastFlowSpec() bool { - return obj.obj.Ipv4UnicastFlowSpec != nil +// Specify the amount of bandwidth that can be reserved for the Priority 2. +// Pb2 returns a uint32 +func (obj *linkStatepriorityBandwidths) HasPb2() bool { + return obj.obj.Pb2 != nil } -// Support for propagation of IPv4 unicast flow specification rules. -// SetIpv4UnicastFlowSpec sets the bool value in the BgpCapability object -func (obj *bgpCapability) SetIpv4UnicastFlowSpec(value bool) BgpCapability { +// Specify the amount of bandwidth that can be reserved for the Priority 2. +// SetPb2 sets the uint32 value in the LinkStatepriorityBandwidths object +func (obj *linkStatepriorityBandwidths) SetPb2(value uint32) LinkStatepriorityBandwidths { - obj.obj.Ipv4UnicastFlowSpec = &value + obj.obj.Pb2 = &value return obj } -// Support for IPv4 SRTE policy. -// Ipv4SrTePolicy returns a bool -func (obj *bgpCapability) Ipv4SrTePolicy() bool { +// Specifies the amount of bandwidth that can be reserved for the Priority 3. +// Pb3 returns a uint32 +func (obj *linkStatepriorityBandwidths) Pb3() uint32 { - return *obj.obj.Ipv4SrTePolicy + return *obj.obj.Pb3 } -// Support for IPv4 SRTE policy. -// Ipv4SrTePolicy returns a bool -func (obj *bgpCapability) HasIpv4SrTePolicy() bool { - return obj.obj.Ipv4SrTePolicy != nil +// Specifies the amount of bandwidth that can be reserved for the Priority 3. +// Pb3 returns a uint32 +func (obj *linkStatepriorityBandwidths) HasPb3() bool { + return obj.obj.Pb3 != nil } -// Support for IPv4 SRTE policy. -// SetIpv4SrTePolicy sets the bool value in the BgpCapability object -func (obj *bgpCapability) SetIpv4SrTePolicy(value bool) BgpCapability { +// Specifies the amount of bandwidth that can be reserved for the Priority 3. +// SetPb3 sets the uint32 value in the LinkStatepriorityBandwidths object +func (obj *linkStatepriorityBandwidths) SetPb3(value uint32) LinkStatepriorityBandwidths { - obj.obj.Ipv4SrTePolicy = &value + obj.obj.Pb3 = &value return obj } -// Support for IPv4 Unicast Add Path Capability. -// Ipv4UnicastAddPath returns a bool -func (obj *bgpCapability) Ipv4UnicastAddPath() bool { +// Specifies the amount of bandwidth that can be reserved for the Priority 4. +// Pb4 returns a uint32 +func (obj *linkStatepriorityBandwidths) Pb4() uint32 { - return *obj.obj.Ipv4UnicastAddPath + return *obj.obj.Pb4 } -// Support for IPv4 Unicast Add Path Capability. -// Ipv4UnicastAddPath returns a bool -func (obj *bgpCapability) HasIpv4UnicastAddPath() bool { - return obj.obj.Ipv4UnicastAddPath != nil +// Specifies the amount of bandwidth that can be reserved for the Priority 4. +// Pb4 returns a uint32 +func (obj *linkStatepriorityBandwidths) HasPb4() bool { + return obj.obj.Pb4 != nil } -// Support for IPv4 Unicast Add Path Capability. -// SetIpv4UnicastAddPath sets the bool value in the BgpCapability object -func (obj *bgpCapability) SetIpv4UnicastAddPath(value bool) BgpCapability { +// Specifies the amount of bandwidth that can be reserved for the Priority 4. +// SetPb4 sets the uint32 value in the LinkStatepriorityBandwidths object +func (obj *linkStatepriorityBandwidths) SetPb4(value uint32) LinkStatepriorityBandwidths { - obj.obj.Ipv4UnicastAddPath = &value + obj.obj.Pb4 = &value return obj } -// Support for the IPv6 Multicast VPN address family. -// Ipv6MulticastVpn returns a bool -func (obj *bgpCapability) Ipv6MulticastVpn() bool { +// Specifies the amount of bandwidth that can be reserved for the Priority 5. +// Pb5 returns a uint32 +func (obj *linkStatepriorityBandwidths) Pb5() uint32 { - return *obj.obj.Ipv6MulticastVpn + return *obj.obj.Pb5 } -// Support for the IPv6 Multicast VPN address family. -// Ipv6MulticastVpn returns a bool -func (obj *bgpCapability) HasIpv6MulticastVpn() bool { - return obj.obj.Ipv6MulticastVpn != nil +// Specifies the amount of bandwidth that can be reserved for the Priority 5. +// Pb5 returns a uint32 +func (obj *linkStatepriorityBandwidths) HasPb5() bool { + return obj.obj.Pb5 != nil } -// Support for the IPv6 Multicast VPN address family. -// SetIpv6MulticastVpn sets the bool value in the BgpCapability object -func (obj *bgpCapability) SetIpv6MulticastVpn(value bool) BgpCapability { +// Specifies the amount of bandwidth that can be reserved for the Priority 5. +// SetPb5 sets the uint32 value in the LinkStatepriorityBandwidths object +func (obj *linkStatepriorityBandwidths) SetPb5(value uint32) LinkStatepriorityBandwidths { - obj.obj.Ipv6MulticastVpn = &value + obj.obj.Pb5 = &value return obj } -// Support for the IPv6 MPLS L3VPN address family. -// Ipv6MplsVpn returns a bool -func (obj *bgpCapability) Ipv6MplsVpn() bool { +// Specifies the amount of bandwidth that can be reserved for the Priority 6. +// Pb6 returns a uint32 +func (obj *linkStatepriorityBandwidths) Pb6() uint32 { - return *obj.obj.Ipv6MplsVpn + return *obj.obj.Pb6 } -// Support for the IPv6 MPLS L3VPN address family. -// Ipv6MplsVpn returns a bool -func (obj *bgpCapability) HasIpv6MplsVpn() bool { - return obj.obj.Ipv6MplsVpn != nil +// Specifies the amount of bandwidth that can be reserved for the Priority 6. +// Pb6 returns a uint32 +func (obj *linkStatepriorityBandwidths) HasPb6() bool { + return obj.obj.Pb6 != nil } -// Support for the IPv6 MPLS L3VPN address family. -// SetIpv6MplsVpn sets the bool value in the BgpCapability object -func (obj *bgpCapability) SetIpv6MplsVpn(value bool) BgpCapability { +// Specifies the amount of bandwidth that can be reserved for the Priority 6. +// SetPb6 sets the uint32 value in the LinkStatepriorityBandwidths object +func (obj *linkStatepriorityBandwidths) SetPb6(value uint32) LinkStatepriorityBandwidths { - obj.obj.Ipv6MplsVpn = &value + obj.obj.Pb6 = &value return obj } -// Support for IPv6 MDT address family messages. -// Ipv6Mdt returns a bool -func (obj *bgpCapability) Ipv6Mdt() bool { +// Specifies the amount of bandwidth that can be reserved for the Priority 7. +// Pb7 returns a uint32 +func (obj *linkStatepriorityBandwidths) Pb7() uint32 { - return *obj.obj.Ipv6Mdt + return *obj.obj.Pb7 } -// Support for IPv6 MDT address family messages. -// Ipv6Mdt returns a bool -func (obj *bgpCapability) HasIpv6Mdt() bool { - return obj.obj.Ipv6Mdt != nil +// Specifies the amount of bandwidth that can be reserved for the Priority 7. +// Pb7 returns a uint32 +func (obj *linkStatepriorityBandwidths) HasPb7() bool { + return obj.obj.Pb7 != nil } -// Support for IPv6 MDT address family messages. -// SetIpv6Mdt sets the bool value in the BgpCapability object -func (obj *bgpCapability) SetIpv6Mdt(value bool) BgpCapability { +// Specifies the amount of bandwidth that can be reserved for the Priority 7. +// SetPb7 sets the uint32 value in the LinkStatepriorityBandwidths object +func (obj *linkStatepriorityBandwidths) SetPb7(value uint32) LinkStatepriorityBandwidths { - obj.obj.Ipv6Mdt = &value + obj.obj.Pb7 = &value return obj } -// Support for the IPv6 Multicast VPN address family. -// Ipv6MulticastMplsVpn returns a bool -func (obj *bgpCapability) Ipv6MulticastMplsVpn() bool { - - return *obj.obj.Ipv6MulticastMplsVpn - -} - -// Support for the IPv6 Multicast VPN address family. -// Ipv6MulticastMplsVpn returns a bool -func (obj *bgpCapability) HasIpv6MulticastMplsVpn() bool { - return obj.obj.Ipv6MulticastMplsVpn != nil -} - -// Support for the IPv6 Multicast VPN address family. -// SetIpv6MulticastMplsVpn sets the bool value in the BgpCapability object -func (obj *bgpCapability) SetIpv6MulticastMplsVpn(value bool) BgpCapability { +func (obj *linkStatepriorityBandwidths) validateObj(vObj *validation, set_default bool) { + if set_default { + obj.setDefault() + } - obj.obj.Ipv6MulticastMplsVpn = &value - return obj } -// Support for propagation of IPv6 unicast flow specification rules. -// Ipv6UnicastFlowSpec returns a bool -func (obj *bgpCapability) Ipv6UnicastFlowSpec() bool { - - return *obj.obj.Ipv6UnicastFlowSpec - -} +func (obj *linkStatepriorityBandwidths) setDefault() { + if obj.obj.Pb0 == nil { + obj.SetPb0(125000000) + } + if obj.obj.Pb1 == nil { + obj.SetPb1(125000000) + } + if obj.obj.Pb2 == nil { + obj.SetPb2(125000000) + } + if obj.obj.Pb3 == nil { + obj.SetPb3(125000000) + } + if obj.obj.Pb4 == nil { + obj.SetPb4(125000000) + } + if obj.obj.Pb5 == nil { + obj.SetPb5(125000000) + } + if obj.obj.Pb6 == nil { + obj.SetPb6(125000000) + } + if obj.obj.Pb7 == nil { + obj.SetPb7(125000000) + } -// Support for propagation of IPv6 unicast flow specification rules. -// Ipv6UnicastFlowSpec returns a bool -func (obj *bgpCapability) HasIpv6UnicastFlowSpec() bool { - return obj.obj.Ipv6UnicastFlowSpec != nil } -// Support for propagation of IPv6 unicast flow specification rules. -// SetIpv6UnicastFlowSpec sets the bool value in the BgpCapability object -func (obj *bgpCapability) SetIpv6UnicastFlowSpec(value bool) BgpCapability { - - obj.obj.Ipv6UnicastFlowSpec = &value - return obj +// ***** BgpV4EthernetSegment ***** +type bgpV4EthernetSegment struct { + validation + obj *otg.BgpV4EthernetSegment + dfElectionHolder BgpEthernetSegmentDfElection + evisHolder BgpV4EthernetSegmentBgpV4EvpnEvisIter + advancedHolder BgpRouteAdvanced + communitiesHolder BgpV4EthernetSegmentBgpCommunityIter + extCommunitiesHolder BgpV4EthernetSegmentBgpExtCommunityIter + asPathHolder BgpAsPath } -// Support for IPv6 SRTE policy. -// Ipv6SrTePolicy returns a bool -func (obj *bgpCapability) Ipv6SrTePolicy() bool { - - return *obj.obj.Ipv6SrTePolicy - +func NewBgpV4EthernetSegment() BgpV4EthernetSegment { + obj := bgpV4EthernetSegment{obj: &otg.BgpV4EthernetSegment{}} + obj.setDefault() + return &obj } -// Support for IPv6 SRTE policy. -// Ipv6SrTePolicy returns a bool -func (obj *bgpCapability) HasIpv6SrTePolicy() bool { - return obj.obj.Ipv6SrTePolicy != nil +func (obj *bgpV4EthernetSegment) Msg() *otg.BgpV4EthernetSegment { + return obj.obj } -// Support for IPv6 SRTE policy. -// SetIpv6SrTePolicy sets the bool value in the BgpCapability object -func (obj *bgpCapability) SetIpv6SrTePolicy(value bool) BgpCapability { - - obj.obj.Ipv6SrTePolicy = &value +func (obj *bgpV4EthernetSegment) SetMsg(msg *otg.BgpV4EthernetSegment) BgpV4EthernetSegment { + obj.setNil() + proto.Merge(obj.obj, msg) return obj } -// Support for IPv6 Unicast Add Path Capability. -// Ipv6UnicastAddPath returns a bool -func (obj *bgpCapability) Ipv6UnicastAddPath() bool { - - return *obj.obj.Ipv6UnicastAddPath - +func (obj *bgpV4EthernetSegment) ToProto() (*otg.BgpV4EthernetSegment, error) { + err := obj.validateToAndFrom() + if err != nil { + return nil, err + } + return obj.Msg(), nil } -// Support for IPv6 Unicast Add Path Capability. -// Ipv6UnicastAddPath returns a bool -func (obj *bgpCapability) HasIpv6UnicastAddPath() bool { - return obj.obj.Ipv6UnicastAddPath != nil +func (obj *bgpV4EthernetSegment) FromProto(msg *otg.BgpV4EthernetSegment) (BgpV4EthernetSegment, error) { + newObj := obj.SetMsg(msg) + err := newObj.validateToAndFrom() + if err != nil { + return nil, err + } + return newObj, nil } -// Support for IPv6 Unicast Add Path Capability. -// SetIpv6UnicastAddPath sets the bool value in the BgpCapability object -func (obj *bgpCapability) SetIpv6UnicastAddPath(value bool) BgpCapability { - - obj.obj.Ipv6UnicastAddPath = &value - return obj +func (obj *bgpV4EthernetSegment) ToPbText() (string, error) { + vErr := obj.validateToAndFrom() + if vErr != nil { + return "", vErr + } + protoMarshal, err := proto.Marshal(obj.Msg()) + if err != nil { + return "", err + } + return string(protoMarshal), nil } -func (obj *bgpCapability) validateObj(vObj *validation, set_default bool) { - if set_default { - obj.setDefault() +func (obj *bgpV4EthernetSegment) FromPbText(value string) error { + retObj := proto.Unmarshal([]byte(value), obj.Msg()) + if retObj != nil { + return retObj } - + obj.setNil() + vErr := obj.validateToAndFrom() + if vErr != nil { + return vErr + } + return retObj } -func (obj *bgpCapability) setDefault() { - if obj.obj.Ipv4Unicast == nil { - obj.SetIpv4Unicast(true) +func (obj *bgpV4EthernetSegment) ToYaml() (string, error) { + vErr := obj.validateToAndFrom() + if vErr != nil { + return "", vErr } - if obj.obj.Ipv4Multicast == nil { - obj.SetIpv4Multicast(false) + opts := protojson.MarshalOptions{ + UseProtoNames: true, + AllowPartial: true, + EmitUnpopulated: false, } - if obj.obj.Ipv6Unicast == nil { - obj.SetIpv6Unicast(true) + data, err := opts.Marshal(obj.Msg()) + if err != nil { + return "", err } - if obj.obj.Ipv6Multicast == nil { - obj.SetIpv6Multicast(false) + data, err = yaml.JSONToYAML(data) + if err != nil { + return "", err } - if obj.obj.Vpls == nil { - obj.SetVpls(false) + return string(data), nil +} + +func (obj *bgpV4EthernetSegment) FromYaml(value string) error { + if value == "" { + value = "{}" } - if obj.obj.RouteRefresh == nil { - obj.SetRouteRefresh(true) + data, err := yaml.YAMLToJSON([]byte(value)) + if err != nil { + return err } - if obj.obj.RouteConstraint == nil { - obj.SetRouteConstraint(false) + opts := protojson.UnmarshalOptions{ + AllowPartial: true, + DiscardUnknown: false, } - if obj.obj.LinkStateNonVpn == nil { - obj.SetLinkStateNonVpn(false) + uError := opts.Unmarshal([]byte(data), obj.Msg()) + if uError != nil { + return fmt.Errorf("unmarshal error %s", strings.Replace( + uError.Error(), "\u00a0", " ", -1)[7:]) } - if obj.obj.LinkStateVpn == nil { - obj.SetLinkStateVpn(false) + obj.setNil() + vErr := obj.validateToAndFrom() + if vErr != nil { + return vErr } - if obj.obj.Evpn == nil { - obj.SetEvpn(false) + return nil +} + +func (obj *bgpV4EthernetSegment) ToJson() (string, error) { + vErr := obj.validateToAndFrom() + if vErr != nil { + return "", vErr } - if obj.obj.ExtendedNextHopEncoding == nil { - obj.SetExtendedNextHopEncoding(false) + opts := protojson.MarshalOptions{ + UseProtoNames: true, + AllowPartial: true, + EmitUnpopulated: false, + Indent: " ", } - if obj.obj.Ipv4MulticastVpn == nil { - obj.SetIpv4MulticastVpn(false) + data, err := opts.Marshal(obj.Msg()) + if err != nil { + return "", err } - if obj.obj.Ipv4MplsVpn == nil { + return string(data), nil +} + +func (obj *bgpV4EthernetSegment) FromJson(value string) error { + opts := protojson.UnmarshalOptions{ + AllowPartial: true, + DiscardUnknown: false, + } + if value == "" { + value = "{}" + } + uError := opts.Unmarshal([]byte(value), obj.Msg()) + if uError != nil { + return fmt.Errorf("unmarshal error %s", strings.Replace( + uError.Error(), "\u00a0", " ", -1)[7:]) + } + obj.setNil() + err := obj.validateToAndFrom() + if err != nil { + return err + } + return nil +} + +func (obj *bgpV4EthernetSegment) validateToAndFrom() error { + // emptyVars() + obj.validateObj(&obj.validation, true) + return obj.validationResult() +} + +func (obj *bgpV4EthernetSegment) Validate() error { + // emptyVars() + obj.validateObj(&obj.validation, false) + return obj.validationResult() +} + +func (obj *bgpV4EthernetSegment) String() string { + str, err := obj.ToYaml() + if err != nil { + return err.Error() + } + return str +} + +func (obj *bgpV4EthernetSegment) Clone() (BgpV4EthernetSegment, error) { + vErr := obj.Validate() + if vErr != nil { + return nil, vErr + } + newObj := NewBgpV4EthernetSegment() + data, err := proto.Marshal(obj.Msg()) + if err != nil { + return nil, err + } + pbErr := proto.Unmarshal(data, newObj.Msg()) + if pbErr != nil { + return nil, pbErr + } + return newObj, nil +} + +func (obj *bgpV4EthernetSegment) setNil() { + obj.dfElectionHolder = nil + obj.evisHolder = nil + obj.advancedHolder = nil + obj.communitiesHolder = nil + obj.extCommunitiesHolder = nil + obj.asPathHolder = nil + obj.validationErrors = nil + obj.warnings = nil + obj.constraints = make(map[string]map[string]Constraints) +} + +// BgpV4EthernetSegment is configuration for BGP Ethernet Segment ranges. Advertises following routes - +// +// Type 4 - Ethernet Segment Route +type BgpV4EthernetSegment interface { + Validation + // Msg marshals BgpV4EthernetSegment to protobuf object *otg.BgpV4EthernetSegment + // and doesn't set defaults + Msg() *otg.BgpV4EthernetSegment + // SetMsg unmarshals BgpV4EthernetSegment from protobuf object *otg.BgpV4EthernetSegment + // and doesn't set defaults + SetMsg(*otg.BgpV4EthernetSegment) BgpV4EthernetSegment + // ToProto marshals BgpV4EthernetSegment to protobuf object *otg.BgpV4EthernetSegment + ToProto() (*otg.BgpV4EthernetSegment, error) + // ToPbText marshals BgpV4EthernetSegment to protobuf text + ToPbText() (string, error) + // ToYaml marshals BgpV4EthernetSegment to YAML text + ToYaml() (string, error) + // ToJson marshals BgpV4EthernetSegment to JSON text + ToJson() (string, error) + // FromProto unmarshals BgpV4EthernetSegment from protobuf object *otg.BgpV4EthernetSegment + FromProto(msg *otg.BgpV4EthernetSegment) (BgpV4EthernetSegment, error) + // FromPbText unmarshals BgpV4EthernetSegment from protobuf text + FromPbText(value string) error + // FromYaml unmarshals BgpV4EthernetSegment from YAML text + FromYaml(value string) error + // FromJson unmarshals BgpV4EthernetSegment from JSON text + FromJson(value string) error + // Validate validates BgpV4EthernetSegment + Validate() error + // A stringer function + String() string + // Clones the object + Clone() (BgpV4EthernetSegment, error) + validateToAndFrom() error + validateObj(vObj *validation, set_default bool) + setDefault() + // DfElection returns BgpEthernetSegmentDfElection, set in BgpV4EthernetSegment. + // BgpEthernetSegmentDfElection is configuration for Designated Forwarder (DF) election among the Provider Edge (PE) routers on the same Ethernet Segment. + DfElection() BgpEthernetSegmentDfElection + // SetDfElection assigns BgpEthernetSegmentDfElection provided by user to BgpV4EthernetSegment. + // BgpEthernetSegmentDfElection is configuration for Designated Forwarder (DF) election among the Provider Edge (PE) routers on the same Ethernet Segment. + SetDfElection(value BgpEthernetSegmentDfElection) BgpV4EthernetSegment + // HasDfElection checks if DfElection has been set in BgpV4EthernetSegment + HasDfElection() bool + // Evis returns BgpV4EthernetSegmentBgpV4EvpnEvisIterIter, set in BgpV4EthernetSegment + Evis() BgpV4EthernetSegmentBgpV4EvpnEvisIter + // Esi returns string, set in BgpV4EthernetSegment. + Esi() string + // SetEsi assigns string provided by user to BgpV4EthernetSegment + SetEsi(value string) BgpV4EthernetSegment + // HasEsi checks if Esi has been set in BgpV4EthernetSegment + HasEsi() bool + // ActiveMode returns BgpV4EthernetSegmentActiveModeEnum, set in BgpV4EthernetSegment + ActiveMode() BgpV4EthernetSegmentActiveModeEnum + // SetActiveMode assigns BgpV4EthernetSegmentActiveModeEnum provided by user to BgpV4EthernetSegment + SetActiveMode(value BgpV4EthernetSegmentActiveModeEnum) BgpV4EthernetSegment + // HasActiveMode checks if ActiveMode has been set in BgpV4EthernetSegment + HasActiveMode() bool + // EsiLabel returns uint32, set in BgpV4EthernetSegment. + EsiLabel() uint32 + // SetEsiLabel assigns uint32 provided by user to BgpV4EthernetSegment + SetEsiLabel(value uint32) BgpV4EthernetSegment + // HasEsiLabel checks if EsiLabel has been set in BgpV4EthernetSegment + HasEsiLabel() bool + // Advanced returns BgpRouteAdvanced, set in BgpV4EthernetSegment. + // BgpRouteAdvanced is configuration for advanced BGP route range settings. + Advanced() BgpRouteAdvanced + // SetAdvanced assigns BgpRouteAdvanced provided by user to BgpV4EthernetSegment. + // BgpRouteAdvanced is configuration for advanced BGP route range settings. + SetAdvanced(value BgpRouteAdvanced) BgpV4EthernetSegment + // HasAdvanced checks if Advanced has been set in BgpV4EthernetSegment + HasAdvanced() bool + // Communities returns BgpV4EthernetSegmentBgpCommunityIterIter, set in BgpV4EthernetSegment + Communities() BgpV4EthernetSegmentBgpCommunityIter + // ExtCommunities returns BgpV4EthernetSegmentBgpExtCommunityIterIter, set in BgpV4EthernetSegment + ExtCommunities() BgpV4EthernetSegmentBgpExtCommunityIter + // AsPath returns BgpAsPath, set in BgpV4EthernetSegment. + // BgpAsPath is this attribute identifies the autonomous systems through which routing information carried in this UPDATE message has passed. This contains the configuration of how to include the Local AS in the AS path attribute of the MP REACH NLRI. It also contains optional configuration of additional AS Path Segments that can be included in the AS Path attribute. The AS Path consists of a Set or Sequence of Autonomous Systems (AS) numbers that a routing information passes through to reach the destination. + AsPath() BgpAsPath + // SetAsPath assigns BgpAsPath provided by user to BgpV4EthernetSegment. + // BgpAsPath is this attribute identifies the autonomous systems through which routing information carried in this UPDATE message has passed. This contains the configuration of how to include the Local AS in the AS path attribute of the MP REACH NLRI. It also contains optional configuration of additional AS Path Segments that can be included in the AS Path attribute. The AS Path consists of a Set or Sequence of Autonomous Systems (AS) numbers that a routing information passes through to reach the destination. + SetAsPath(value BgpAsPath) BgpV4EthernetSegment + // HasAsPath checks if AsPath has been set in BgpV4EthernetSegment + HasAsPath() bool + setNil() +} + +// Designated Forwarder (DF) election configuration. +// DfElection returns a BgpEthernetSegmentDfElection +func (obj *bgpV4EthernetSegment) DfElection() BgpEthernetSegmentDfElection { + if obj.obj.DfElection == nil { + obj.obj.DfElection = NewBgpEthernetSegmentDfElection().Msg() + } + if obj.dfElectionHolder == nil { + obj.dfElectionHolder = &bgpEthernetSegmentDfElection{obj: obj.obj.DfElection} + } + return obj.dfElectionHolder +} + +// Designated Forwarder (DF) election configuration. +// DfElection returns a BgpEthernetSegmentDfElection +func (obj *bgpV4EthernetSegment) HasDfElection() bool { + return obj.obj.DfElection != nil +} + +// Designated Forwarder (DF) election configuration. +// SetDfElection sets the BgpEthernetSegmentDfElection value in the BgpV4EthernetSegment object +func (obj *bgpV4EthernetSegment) SetDfElection(value BgpEthernetSegmentDfElection) BgpV4EthernetSegment { + + obj.dfElectionHolder = nil + obj.obj.DfElection = value.Msg() + + return obj +} + +// This contains the list of EVIs. +// Evis returns a []BgpV4EvpnEvis +func (obj *bgpV4EthernetSegment) Evis() BgpV4EthernetSegmentBgpV4EvpnEvisIter { + if len(obj.obj.Evis) == 0 { + obj.obj.Evis = []*otg.BgpV4EvpnEvis{} + } + if obj.evisHolder == nil { + obj.evisHolder = newBgpV4EthernetSegmentBgpV4EvpnEvisIter(&obj.obj.Evis).setMsg(obj) + } + return obj.evisHolder +} + +type bgpV4EthernetSegmentBgpV4EvpnEvisIter struct { + obj *bgpV4EthernetSegment + bgpV4EvpnEvisSlice []BgpV4EvpnEvis + fieldPtr *[]*otg.BgpV4EvpnEvis +} + +func newBgpV4EthernetSegmentBgpV4EvpnEvisIter(ptr *[]*otg.BgpV4EvpnEvis) BgpV4EthernetSegmentBgpV4EvpnEvisIter { + return &bgpV4EthernetSegmentBgpV4EvpnEvisIter{fieldPtr: ptr} +} + +type BgpV4EthernetSegmentBgpV4EvpnEvisIter interface { + setMsg(*bgpV4EthernetSegment) BgpV4EthernetSegmentBgpV4EvpnEvisIter + Items() []BgpV4EvpnEvis + Add() BgpV4EvpnEvis + Append(items ...BgpV4EvpnEvis) BgpV4EthernetSegmentBgpV4EvpnEvisIter + Set(index int, newObj BgpV4EvpnEvis) BgpV4EthernetSegmentBgpV4EvpnEvisIter + Clear() BgpV4EthernetSegmentBgpV4EvpnEvisIter + clearHolderSlice() BgpV4EthernetSegmentBgpV4EvpnEvisIter + appendHolderSlice(item BgpV4EvpnEvis) BgpV4EthernetSegmentBgpV4EvpnEvisIter +} + +func (obj *bgpV4EthernetSegmentBgpV4EvpnEvisIter) setMsg(msg *bgpV4EthernetSegment) BgpV4EthernetSegmentBgpV4EvpnEvisIter { + obj.clearHolderSlice() + for _, val := range *obj.fieldPtr { + obj.appendHolderSlice(&bgpV4EvpnEvis{obj: val}) + } + obj.obj = msg + return obj +} + +func (obj *bgpV4EthernetSegmentBgpV4EvpnEvisIter) Items() []BgpV4EvpnEvis { + return obj.bgpV4EvpnEvisSlice +} + +func (obj *bgpV4EthernetSegmentBgpV4EvpnEvisIter) Add() BgpV4EvpnEvis { + newObj := &otg.BgpV4EvpnEvis{} + *obj.fieldPtr = append(*obj.fieldPtr, newObj) + newLibObj := &bgpV4EvpnEvis{obj: newObj} + newLibObj.setDefault() + obj.bgpV4EvpnEvisSlice = append(obj.bgpV4EvpnEvisSlice, newLibObj) + return newLibObj +} + +func (obj *bgpV4EthernetSegmentBgpV4EvpnEvisIter) Append(items ...BgpV4EvpnEvis) BgpV4EthernetSegmentBgpV4EvpnEvisIter { + for _, item := range items { + newObj := item.Msg() + *obj.fieldPtr = append(*obj.fieldPtr, newObj) + obj.bgpV4EvpnEvisSlice = append(obj.bgpV4EvpnEvisSlice, item) + } + return obj +} + +func (obj *bgpV4EthernetSegmentBgpV4EvpnEvisIter) Set(index int, newObj BgpV4EvpnEvis) BgpV4EthernetSegmentBgpV4EvpnEvisIter { + (*obj.fieldPtr)[index] = newObj.Msg() + obj.bgpV4EvpnEvisSlice[index] = newObj + return obj +} +func (obj *bgpV4EthernetSegmentBgpV4EvpnEvisIter) Clear() BgpV4EthernetSegmentBgpV4EvpnEvisIter { + if len(*obj.fieldPtr) > 0 { + *obj.fieldPtr = []*otg.BgpV4EvpnEvis{} + obj.bgpV4EvpnEvisSlice = []BgpV4EvpnEvis{} + } + return obj +} +func (obj *bgpV4EthernetSegmentBgpV4EvpnEvisIter) clearHolderSlice() BgpV4EthernetSegmentBgpV4EvpnEvisIter { + if len(obj.bgpV4EvpnEvisSlice) > 0 { + obj.bgpV4EvpnEvisSlice = []BgpV4EvpnEvis{} + } + return obj +} +func (obj *bgpV4EthernetSegmentBgpV4EvpnEvisIter) appendHolderSlice(item BgpV4EvpnEvis) BgpV4EthernetSegmentBgpV4EvpnEvisIter { + obj.bgpV4EvpnEvisSlice = append(obj.bgpV4EvpnEvisSlice, item) + return obj +} + +// 10-octet Ethernet Segment Identifier (ESI) Example - For multi-home scenario nonZero ESI is '10000000000000000000' . +// Esi returns a string +func (obj *bgpV4EthernetSegment) Esi() string { + + return *obj.obj.Esi + +} + +// 10-octet Ethernet Segment Identifier (ESI) Example - For multi-home scenario nonZero ESI is '10000000000000000000' . +// Esi returns a string +func (obj *bgpV4EthernetSegment) HasEsi() bool { + return obj.obj.Esi != nil +} + +// 10-octet Ethernet Segment Identifier (ESI) Example - For multi-home scenario nonZero ESI is '10000000000000000000' . +// SetEsi sets the string value in the BgpV4EthernetSegment object +func (obj *bgpV4EthernetSegment) SetEsi(value string) BgpV4EthernetSegment { + + obj.obj.Esi = &value + return obj +} + +type BgpV4EthernetSegmentActiveModeEnum string + +// Enum of ActiveMode on BgpV4EthernetSegment +var BgpV4EthernetSegmentActiveMode = struct { + SINGLE_ACTIVE BgpV4EthernetSegmentActiveModeEnum + ALL_ACTIVE BgpV4EthernetSegmentActiveModeEnum +}{ + SINGLE_ACTIVE: BgpV4EthernetSegmentActiveModeEnum("single_active"), + ALL_ACTIVE: BgpV4EthernetSegmentActiveModeEnum("all_active"), +} + +func (obj *bgpV4EthernetSegment) ActiveMode() BgpV4EthernetSegmentActiveModeEnum { + return BgpV4EthernetSegmentActiveModeEnum(obj.obj.ActiveMode.Enum().String()) +} + +// Single Active or All Active mode Redundancy mode selection for Multi-home. +// ActiveMode returns a string +func (obj *bgpV4EthernetSegment) HasActiveMode() bool { + return obj.obj.ActiveMode != nil +} + +func (obj *bgpV4EthernetSegment) SetActiveMode(value BgpV4EthernetSegmentActiveModeEnum) BgpV4EthernetSegment { + intValue, ok := otg.BgpV4EthernetSegment_ActiveMode_Enum_value[string(value)] + if !ok { + obj.validationErrors = append(obj.validationErrors, fmt.Sprintf( + "%s is not a valid choice on BgpV4EthernetSegmentActiveModeEnum", string(value))) + return obj + } + enumValue := otg.BgpV4EthernetSegment_ActiveMode_Enum(intValue) + obj.obj.ActiveMode = &enumValue + + return obj +} + +// The label value to be advertised as ESI Label in ESI Label Extended Community. This is included in Ethernet Auto-discovery per ES Routes advertised by a router. +// EsiLabel returns a uint32 +func (obj *bgpV4EthernetSegment) EsiLabel() uint32 { + + return *obj.obj.EsiLabel + +} + +// The label value to be advertised as ESI Label in ESI Label Extended Community. This is included in Ethernet Auto-discovery per ES Routes advertised by a router. +// EsiLabel returns a uint32 +func (obj *bgpV4EthernetSegment) HasEsiLabel() bool { + return obj.obj.EsiLabel != nil +} + +// The label value to be advertised as ESI Label in ESI Label Extended Community. This is included in Ethernet Auto-discovery per ES Routes advertised by a router. +// SetEsiLabel sets the uint32 value in the BgpV4EthernetSegment object +func (obj *bgpV4EthernetSegment) SetEsiLabel(value uint32) BgpV4EthernetSegment { + + obj.obj.EsiLabel = &value + return obj +} + +// description is TBD +// Advanced returns a BgpRouteAdvanced +func (obj *bgpV4EthernetSegment) Advanced() BgpRouteAdvanced { + if obj.obj.Advanced == nil { + obj.obj.Advanced = NewBgpRouteAdvanced().Msg() + } + if obj.advancedHolder == nil { + obj.advancedHolder = &bgpRouteAdvanced{obj: obj.obj.Advanced} + } + return obj.advancedHolder +} + +// description is TBD +// Advanced returns a BgpRouteAdvanced +func (obj *bgpV4EthernetSegment) HasAdvanced() bool { + return obj.obj.Advanced != nil +} + +// description is TBD +// SetAdvanced sets the BgpRouteAdvanced value in the BgpV4EthernetSegment object +func (obj *bgpV4EthernetSegment) SetAdvanced(value BgpRouteAdvanced) BgpV4EthernetSegment { + + obj.advancedHolder = nil + obj.obj.Advanced = value.Msg() + + return obj +} + +// Optional community settings. +// Communities returns a []BgpCommunity +func (obj *bgpV4EthernetSegment) Communities() BgpV4EthernetSegmentBgpCommunityIter { + if len(obj.obj.Communities) == 0 { + obj.obj.Communities = []*otg.BgpCommunity{} + } + if obj.communitiesHolder == nil { + obj.communitiesHolder = newBgpV4EthernetSegmentBgpCommunityIter(&obj.obj.Communities).setMsg(obj) + } + return obj.communitiesHolder +} + +type bgpV4EthernetSegmentBgpCommunityIter struct { + obj *bgpV4EthernetSegment + bgpCommunitySlice []BgpCommunity + fieldPtr *[]*otg.BgpCommunity +} + +func newBgpV4EthernetSegmentBgpCommunityIter(ptr *[]*otg.BgpCommunity) BgpV4EthernetSegmentBgpCommunityIter { + return &bgpV4EthernetSegmentBgpCommunityIter{fieldPtr: ptr} +} + +type BgpV4EthernetSegmentBgpCommunityIter interface { + setMsg(*bgpV4EthernetSegment) BgpV4EthernetSegmentBgpCommunityIter + Items() []BgpCommunity + Add() BgpCommunity + Append(items ...BgpCommunity) BgpV4EthernetSegmentBgpCommunityIter + Set(index int, newObj BgpCommunity) BgpV4EthernetSegmentBgpCommunityIter + Clear() BgpV4EthernetSegmentBgpCommunityIter + clearHolderSlice() BgpV4EthernetSegmentBgpCommunityIter + appendHolderSlice(item BgpCommunity) BgpV4EthernetSegmentBgpCommunityIter +} + +func (obj *bgpV4EthernetSegmentBgpCommunityIter) setMsg(msg *bgpV4EthernetSegment) BgpV4EthernetSegmentBgpCommunityIter { + obj.clearHolderSlice() + for _, val := range *obj.fieldPtr { + obj.appendHolderSlice(&bgpCommunity{obj: val}) + } + obj.obj = msg + return obj +} + +func (obj *bgpV4EthernetSegmentBgpCommunityIter) Items() []BgpCommunity { + return obj.bgpCommunitySlice +} + +func (obj *bgpV4EthernetSegmentBgpCommunityIter) Add() BgpCommunity { + newObj := &otg.BgpCommunity{} + *obj.fieldPtr = append(*obj.fieldPtr, newObj) + newLibObj := &bgpCommunity{obj: newObj} + newLibObj.setDefault() + obj.bgpCommunitySlice = append(obj.bgpCommunitySlice, newLibObj) + return newLibObj +} + +func (obj *bgpV4EthernetSegmentBgpCommunityIter) Append(items ...BgpCommunity) BgpV4EthernetSegmentBgpCommunityIter { + for _, item := range items { + newObj := item.Msg() + *obj.fieldPtr = append(*obj.fieldPtr, newObj) + obj.bgpCommunitySlice = append(obj.bgpCommunitySlice, item) + } + return obj +} + +func (obj *bgpV4EthernetSegmentBgpCommunityIter) Set(index int, newObj BgpCommunity) BgpV4EthernetSegmentBgpCommunityIter { + (*obj.fieldPtr)[index] = newObj.Msg() + obj.bgpCommunitySlice[index] = newObj + return obj +} +func (obj *bgpV4EthernetSegmentBgpCommunityIter) Clear() BgpV4EthernetSegmentBgpCommunityIter { + if len(*obj.fieldPtr) > 0 { + *obj.fieldPtr = []*otg.BgpCommunity{} + obj.bgpCommunitySlice = []BgpCommunity{} + } + return obj +} +func (obj *bgpV4EthernetSegmentBgpCommunityIter) clearHolderSlice() BgpV4EthernetSegmentBgpCommunityIter { + if len(obj.bgpCommunitySlice) > 0 { + obj.bgpCommunitySlice = []BgpCommunity{} + } + return obj +} +func (obj *bgpV4EthernetSegmentBgpCommunityIter) appendHolderSlice(item BgpCommunity) BgpV4EthernetSegmentBgpCommunityIter { + obj.bgpCommunitySlice = append(obj.bgpCommunitySlice, item) + return obj +} + +// Optional Extended Community settings. The Extended Communities Attribute is a transitive optional BGP attribute, with the Type Code 16. Community and Extended Communities attributes are utilized to trigger routing decisions, such as acceptance, rejection, preference, or redistribution. An extended community is an 8-Bytes value. It is divided into two main parts. The first 2 Bytes of the community encode a type and sub-type fields and the last 6 Bytes carry a unique set of data in a format defined by the type and sub-type field. Extended communities provide a larger range for grouping or categorizing communities. When type is administrator_as_2octet or administrator_as_4octet, the valid sub types are route target and origin. The valid value for administrator_as_2octet and administrator_as_4octet type is either two byte AS followed by four byte local administrator id or four byte AS followed by two byte local administrator id. When type is administrator_ipv4_address the valid sub types are route target and origin. The valid value for administrator_ipv4_address is a four byte IPv4 address followed by a two byte local administrator id. When type is opaque, valid sub types are color and encapsulation. When sub type is color, first two bytes of the value field contain flags and last four bytes contains the value of the color. When sub type is encapsulation the first four bytes of value field are reserved and last two bytes carries the tunnel type from IANA's "ETHER TYPES" registry e.g IPv4 (protocol type = 0x0800), IPv6 (protocol type = 0x86dd), and MPLS (protocol type = 0x8847). When type is administrator_as_2octet_link_bandwidth the valid sub type is extended_bandwidth. The first two bytes of the value field contains the AS number and the last four bytes contains the bandwidth in IEEE floating point format. When type is evpn the valid subtype is mac_address. In the value field the low-order bit of the first byte(Flags) is defined as the "Sticky/static" flag and may be set to 1, indicating the MAC address is static and cannot move. The second byte is reserved and the last four bytes contain the sequence number which is used to ensure that PEs retain the correct MAC/IP Advertisement route when multiple updates occur for the same MAC address. +// ExtCommunities returns a []BgpExtCommunity +func (obj *bgpV4EthernetSegment) ExtCommunities() BgpV4EthernetSegmentBgpExtCommunityIter { + if len(obj.obj.ExtCommunities) == 0 { + obj.obj.ExtCommunities = []*otg.BgpExtCommunity{} + } + if obj.extCommunitiesHolder == nil { + obj.extCommunitiesHolder = newBgpV4EthernetSegmentBgpExtCommunityIter(&obj.obj.ExtCommunities).setMsg(obj) + } + return obj.extCommunitiesHolder +} + +type bgpV4EthernetSegmentBgpExtCommunityIter struct { + obj *bgpV4EthernetSegment + bgpExtCommunitySlice []BgpExtCommunity + fieldPtr *[]*otg.BgpExtCommunity +} + +func newBgpV4EthernetSegmentBgpExtCommunityIter(ptr *[]*otg.BgpExtCommunity) BgpV4EthernetSegmentBgpExtCommunityIter { + return &bgpV4EthernetSegmentBgpExtCommunityIter{fieldPtr: ptr} +} + +type BgpV4EthernetSegmentBgpExtCommunityIter interface { + setMsg(*bgpV4EthernetSegment) BgpV4EthernetSegmentBgpExtCommunityIter + Items() []BgpExtCommunity + Add() BgpExtCommunity + Append(items ...BgpExtCommunity) BgpV4EthernetSegmentBgpExtCommunityIter + Set(index int, newObj BgpExtCommunity) BgpV4EthernetSegmentBgpExtCommunityIter + Clear() BgpV4EthernetSegmentBgpExtCommunityIter + clearHolderSlice() BgpV4EthernetSegmentBgpExtCommunityIter + appendHolderSlice(item BgpExtCommunity) BgpV4EthernetSegmentBgpExtCommunityIter +} + +func (obj *bgpV4EthernetSegmentBgpExtCommunityIter) setMsg(msg *bgpV4EthernetSegment) BgpV4EthernetSegmentBgpExtCommunityIter { + obj.clearHolderSlice() + for _, val := range *obj.fieldPtr { + obj.appendHolderSlice(&bgpExtCommunity{obj: val}) + } + obj.obj = msg + return obj +} + +func (obj *bgpV4EthernetSegmentBgpExtCommunityIter) Items() []BgpExtCommunity { + return obj.bgpExtCommunitySlice +} + +func (obj *bgpV4EthernetSegmentBgpExtCommunityIter) Add() BgpExtCommunity { + newObj := &otg.BgpExtCommunity{} + *obj.fieldPtr = append(*obj.fieldPtr, newObj) + newLibObj := &bgpExtCommunity{obj: newObj} + newLibObj.setDefault() + obj.bgpExtCommunitySlice = append(obj.bgpExtCommunitySlice, newLibObj) + return newLibObj +} + +func (obj *bgpV4EthernetSegmentBgpExtCommunityIter) Append(items ...BgpExtCommunity) BgpV4EthernetSegmentBgpExtCommunityIter { + for _, item := range items { + newObj := item.Msg() + *obj.fieldPtr = append(*obj.fieldPtr, newObj) + obj.bgpExtCommunitySlice = append(obj.bgpExtCommunitySlice, item) + } + return obj +} + +func (obj *bgpV4EthernetSegmentBgpExtCommunityIter) Set(index int, newObj BgpExtCommunity) BgpV4EthernetSegmentBgpExtCommunityIter { + (*obj.fieldPtr)[index] = newObj.Msg() + obj.bgpExtCommunitySlice[index] = newObj + return obj +} +func (obj *bgpV4EthernetSegmentBgpExtCommunityIter) Clear() BgpV4EthernetSegmentBgpExtCommunityIter { + if len(*obj.fieldPtr) > 0 { + *obj.fieldPtr = []*otg.BgpExtCommunity{} + obj.bgpExtCommunitySlice = []BgpExtCommunity{} + } + return obj +} +func (obj *bgpV4EthernetSegmentBgpExtCommunityIter) clearHolderSlice() BgpV4EthernetSegmentBgpExtCommunityIter { + if len(obj.bgpExtCommunitySlice) > 0 { + obj.bgpExtCommunitySlice = []BgpExtCommunity{} + } + return obj +} +func (obj *bgpV4EthernetSegmentBgpExtCommunityIter) appendHolderSlice(item BgpExtCommunity) BgpV4EthernetSegmentBgpExtCommunityIter { + obj.bgpExtCommunitySlice = append(obj.bgpExtCommunitySlice, item) + return obj +} + +// Optional AS PATH settings. +// AsPath returns a BgpAsPath +func (obj *bgpV4EthernetSegment) AsPath() BgpAsPath { + if obj.obj.AsPath == nil { + obj.obj.AsPath = NewBgpAsPath().Msg() + } + if obj.asPathHolder == nil { + obj.asPathHolder = &bgpAsPath{obj: obj.obj.AsPath} + } + return obj.asPathHolder +} + +// Optional AS PATH settings. +// AsPath returns a BgpAsPath +func (obj *bgpV4EthernetSegment) HasAsPath() bool { + return obj.obj.AsPath != nil +} + +// Optional AS PATH settings. +// SetAsPath sets the BgpAsPath value in the BgpV4EthernetSegment object +func (obj *bgpV4EthernetSegment) SetAsPath(value BgpAsPath) BgpV4EthernetSegment { + + obj.asPathHolder = nil + obj.obj.AsPath = value.Msg() + + return obj +} + +func (obj *bgpV4EthernetSegment) validateObj(vObj *validation, set_default bool) { + if set_default { + obj.setDefault() + } + + if obj.obj.DfElection != nil { + + obj.DfElection().validateObj(vObj, set_default) + } + + if len(obj.obj.Evis) != 0 { + + if set_default { + obj.Evis().clearHolderSlice() + for _, item := range obj.obj.Evis { + obj.Evis().appendHolderSlice(&bgpV4EvpnEvis{obj: item}) + } + } + for _, item := range obj.Evis().Items() { + item.validateObj(vObj, set_default) + } + + } + + if obj.obj.Esi != nil { + + err := obj.validateHex(obj.Esi()) + if err != nil { + vObj.validationErrors = append(vObj.validationErrors, fmt.Sprintf("%s %s", err.Error(), "on BgpV4EthernetSegment.Esi")) + } + + } + + if obj.obj.EsiLabel != nil { + + if *obj.obj.EsiLabel > 16777215 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("0 <= BgpV4EthernetSegment.EsiLabel <= 16777215 but Got %d", *obj.obj.EsiLabel)) + } + + } + + if obj.obj.Advanced != nil { + + obj.Advanced().validateObj(vObj, set_default) + } + + if len(obj.obj.Communities) != 0 { + + if set_default { + obj.Communities().clearHolderSlice() + for _, item := range obj.obj.Communities { + obj.Communities().appendHolderSlice(&bgpCommunity{obj: item}) + } + } + for _, item := range obj.Communities().Items() { + item.validateObj(vObj, set_default) + } + + } + + if len(obj.obj.ExtCommunities) != 0 { + + if set_default { + obj.ExtCommunities().clearHolderSlice() + for _, item := range obj.obj.ExtCommunities { + obj.ExtCommunities().appendHolderSlice(&bgpExtCommunity{obj: item}) + } + } + for _, item := range obj.ExtCommunities().Items() { + item.validateObj(vObj, set_default) + } + + } + + if obj.obj.AsPath != nil { + + obj.AsPath().validateObj(vObj, set_default) + } + +} + +func (obj *bgpV4EthernetSegment) setDefault() { + if obj.obj.Esi == nil { + obj.SetEsi("00000000000000000000") + } + if obj.obj.ActiveMode == nil { + obj.SetActiveMode(BgpV4EthernetSegmentActiveMode.ALL_ACTIVE) + + } + if obj.obj.EsiLabel == nil { + obj.SetEsiLabel(0) + } + +} + +// ***** BgpAdvanced ***** +type bgpAdvanced struct { + validation + obj *otg.BgpAdvanced +} + +func NewBgpAdvanced() BgpAdvanced { + obj := bgpAdvanced{obj: &otg.BgpAdvanced{}} + obj.setDefault() + return &obj +} + +func (obj *bgpAdvanced) Msg() *otg.BgpAdvanced { + return obj.obj +} + +func (obj *bgpAdvanced) SetMsg(msg *otg.BgpAdvanced) BgpAdvanced { + + proto.Merge(obj.obj, msg) + return obj +} + +func (obj *bgpAdvanced) ToProto() (*otg.BgpAdvanced, error) { + err := obj.validateToAndFrom() + if err != nil { + return nil, err + } + return obj.Msg(), nil +} + +func (obj *bgpAdvanced) FromProto(msg *otg.BgpAdvanced) (BgpAdvanced, error) { + newObj := obj.SetMsg(msg) + err := newObj.validateToAndFrom() + if err != nil { + return nil, err + } + return newObj, nil +} + +func (obj *bgpAdvanced) ToPbText() (string, error) { + vErr := obj.validateToAndFrom() + if vErr != nil { + return "", vErr + } + protoMarshal, err := proto.Marshal(obj.Msg()) + if err != nil { + return "", err + } + return string(protoMarshal), nil +} + +func (obj *bgpAdvanced) FromPbText(value string) error { + retObj := proto.Unmarshal([]byte(value), obj.Msg()) + if retObj != nil { + return retObj + } + + vErr := obj.validateToAndFrom() + if vErr != nil { + return vErr + } + return retObj +} + +func (obj *bgpAdvanced) ToYaml() (string, error) { + vErr := obj.validateToAndFrom() + if vErr != nil { + return "", vErr + } + opts := protojson.MarshalOptions{ + UseProtoNames: true, + AllowPartial: true, + EmitUnpopulated: false, + } + data, err := opts.Marshal(obj.Msg()) + if err != nil { + return "", err + } + data, err = yaml.JSONToYAML(data) + if err != nil { + return "", err + } + return string(data), nil +} + +func (obj *bgpAdvanced) FromYaml(value string) error { + if value == "" { + value = "{}" + } + data, err := yaml.YAMLToJSON([]byte(value)) + if err != nil { + return err + } + opts := protojson.UnmarshalOptions{ + AllowPartial: true, + DiscardUnknown: false, + } + uError := opts.Unmarshal([]byte(data), obj.Msg()) + if uError != nil { + return fmt.Errorf("unmarshal error %s", strings.Replace( + uError.Error(), "\u00a0", " ", -1)[7:]) + } + + vErr := obj.validateToAndFrom() + if vErr != nil { + return vErr + } + return nil +} + +func (obj *bgpAdvanced) ToJson() (string, error) { + vErr := obj.validateToAndFrom() + if vErr != nil { + return "", vErr + } + opts := protojson.MarshalOptions{ + UseProtoNames: true, + AllowPartial: true, + EmitUnpopulated: false, + Indent: " ", + } + data, err := opts.Marshal(obj.Msg()) + if err != nil { + return "", err + } + return string(data), nil +} + +func (obj *bgpAdvanced) FromJson(value string) error { + opts := protojson.UnmarshalOptions{ + AllowPartial: true, + DiscardUnknown: false, + } + if value == "" { + value = "{}" + } + uError := opts.Unmarshal([]byte(value), obj.Msg()) + if uError != nil { + return fmt.Errorf("unmarshal error %s", strings.Replace( + uError.Error(), "\u00a0", " ", -1)[7:]) + } + + err := obj.validateToAndFrom() + if err != nil { + return err + } + return nil +} + +func (obj *bgpAdvanced) validateToAndFrom() error { + // emptyVars() + obj.validateObj(&obj.validation, true) + return obj.validationResult() +} + +func (obj *bgpAdvanced) Validate() error { + // emptyVars() + obj.validateObj(&obj.validation, false) + return obj.validationResult() +} + +func (obj *bgpAdvanced) String() string { + str, err := obj.ToYaml() + if err != nil { + return err.Error() + } + return str +} + +func (obj *bgpAdvanced) Clone() (BgpAdvanced, error) { + vErr := obj.Validate() + if vErr != nil { + return nil, vErr + } + newObj := NewBgpAdvanced() + data, err := proto.Marshal(obj.Msg()) + if err != nil { + return nil, err + } + pbErr := proto.Unmarshal(data, newObj.Msg()) + if pbErr != nil { + return nil, pbErr + } + return newObj, nil +} + +// BgpAdvanced is configuration for BGP advanced settings. +type BgpAdvanced interface { + Validation + // Msg marshals BgpAdvanced to protobuf object *otg.BgpAdvanced + // and doesn't set defaults + Msg() *otg.BgpAdvanced + // SetMsg unmarshals BgpAdvanced from protobuf object *otg.BgpAdvanced + // and doesn't set defaults + SetMsg(*otg.BgpAdvanced) BgpAdvanced + // ToProto marshals BgpAdvanced to protobuf object *otg.BgpAdvanced + ToProto() (*otg.BgpAdvanced, error) + // ToPbText marshals BgpAdvanced to protobuf text + ToPbText() (string, error) + // ToYaml marshals BgpAdvanced to YAML text + ToYaml() (string, error) + // ToJson marshals BgpAdvanced to JSON text + ToJson() (string, error) + // FromProto unmarshals BgpAdvanced from protobuf object *otg.BgpAdvanced + FromProto(msg *otg.BgpAdvanced) (BgpAdvanced, error) + // FromPbText unmarshals BgpAdvanced from protobuf text + FromPbText(value string) error + // FromYaml unmarshals BgpAdvanced from YAML text + FromYaml(value string) error + // FromJson unmarshals BgpAdvanced from JSON text + FromJson(value string) error + // Validate validates BgpAdvanced + Validate() error + // A stringer function + String() string + // Clones the object + Clone() (BgpAdvanced, error) + validateToAndFrom() error + validateObj(vObj *validation, set_default bool) + setDefault() + // HoldTimeInterval returns uint32, set in BgpAdvanced. + HoldTimeInterval() uint32 + // SetHoldTimeInterval assigns uint32 provided by user to BgpAdvanced + SetHoldTimeInterval(value uint32) BgpAdvanced + // HasHoldTimeInterval checks if HoldTimeInterval has been set in BgpAdvanced + HasHoldTimeInterval() bool + // KeepAliveInterval returns uint32, set in BgpAdvanced. + KeepAliveInterval() uint32 + // SetKeepAliveInterval assigns uint32 provided by user to BgpAdvanced + SetKeepAliveInterval(value uint32) BgpAdvanced + // HasKeepAliveInterval checks if KeepAliveInterval has been set in BgpAdvanced + HasKeepAliveInterval() bool + // UpdateInterval returns uint32, set in BgpAdvanced. + UpdateInterval() uint32 + // SetUpdateInterval assigns uint32 provided by user to BgpAdvanced + SetUpdateInterval(value uint32) BgpAdvanced + // HasUpdateInterval checks if UpdateInterval has been set in BgpAdvanced + HasUpdateInterval() bool + // TimeToLive returns uint32, set in BgpAdvanced. + TimeToLive() uint32 + // SetTimeToLive assigns uint32 provided by user to BgpAdvanced + SetTimeToLive(value uint32) BgpAdvanced + // HasTimeToLive checks if TimeToLive has been set in BgpAdvanced + HasTimeToLive() bool + // Md5Key returns string, set in BgpAdvanced. + Md5Key() string + // SetMd5Key assigns string provided by user to BgpAdvanced + SetMd5Key(value string) BgpAdvanced + // HasMd5Key checks if Md5Key has been set in BgpAdvanced + HasMd5Key() bool + // PassiveMode returns bool, set in BgpAdvanced. + PassiveMode() bool + // SetPassiveMode assigns bool provided by user to BgpAdvanced + SetPassiveMode(value bool) BgpAdvanced + // HasPassiveMode checks if PassiveMode has been set in BgpAdvanced + HasPassiveMode() bool + // ListenPort returns uint32, set in BgpAdvanced. + ListenPort() uint32 + // SetListenPort assigns uint32 provided by user to BgpAdvanced + SetListenPort(value uint32) BgpAdvanced + // HasListenPort checks if ListenPort has been set in BgpAdvanced + HasListenPort() bool + // NeighborPort returns uint32, set in BgpAdvanced. + NeighborPort() uint32 + // SetNeighborPort assigns uint32 provided by user to BgpAdvanced + SetNeighborPort(value uint32) BgpAdvanced + // HasNeighborPort checks if NeighborPort has been set in BgpAdvanced + HasNeighborPort() bool +} + +// Number of seconds the sender proposes for the value of the Hold Timer. +// HoldTimeInterval returns a uint32 +func (obj *bgpAdvanced) HoldTimeInterval() uint32 { + + return *obj.obj.HoldTimeInterval + +} + +// Number of seconds the sender proposes for the value of the Hold Timer. +// HoldTimeInterval returns a uint32 +func (obj *bgpAdvanced) HasHoldTimeInterval() bool { + return obj.obj.HoldTimeInterval != nil +} + +// Number of seconds the sender proposes for the value of the Hold Timer. +// SetHoldTimeInterval sets the uint32 value in the BgpAdvanced object +func (obj *bgpAdvanced) SetHoldTimeInterval(value uint32) BgpAdvanced { + + obj.obj.HoldTimeInterval = &value + return obj +} + +// Number of seconds between transmissions of Keepalive messages by this peer. +// KeepAliveInterval returns a uint32 +func (obj *bgpAdvanced) KeepAliveInterval() uint32 { + + return *obj.obj.KeepAliveInterval + +} + +// Number of seconds between transmissions of Keepalive messages by this peer. +// KeepAliveInterval returns a uint32 +func (obj *bgpAdvanced) HasKeepAliveInterval() bool { + return obj.obj.KeepAliveInterval != nil +} + +// Number of seconds between transmissions of Keepalive messages by this peer. +// SetKeepAliveInterval sets the uint32 value in the BgpAdvanced object +func (obj *bgpAdvanced) SetKeepAliveInterval(value uint32) BgpAdvanced { + + obj.obj.KeepAliveInterval = &value + return obj +} + +// The time interval at which Update messages are sent to the DUT, expressed as the number of milliseconds between Update messages. The update interval 0 implies to send all the updates as fast as possible. +// UpdateInterval returns a uint32 +func (obj *bgpAdvanced) UpdateInterval() uint32 { + + return *obj.obj.UpdateInterval + +} + +// The time interval at which Update messages are sent to the DUT, expressed as the number of milliseconds between Update messages. The update interval 0 implies to send all the updates as fast as possible. +// UpdateInterval returns a uint32 +func (obj *bgpAdvanced) HasUpdateInterval() bool { + return obj.obj.UpdateInterval != nil +} + +// The time interval at which Update messages are sent to the DUT, expressed as the number of milliseconds between Update messages. The update interval 0 implies to send all the updates as fast as possible. +// SetUpdateInterval sets the uint32 value in the BgpAdvanced object +func (obj *bgpAdvanced) SetUpdateInterval(value uint32) BgpAdvanced { + + obj.obj.UpdateInterval = &value + return obj +} + +// The limited number of iterations that a unit of data can experience before the data is discarded. This is placed in the TTL field in the IP header of the transmitted packets. +// TimeToLive returns a uint32 +func (obj *bgpAdvanced) TimeToLive() uint32 { + + return *obj.obj.TimeToLive + +} + +// The limited number of iterations that a unit of data can experience before the data is discarded. This is placed in the TTL field in the IP header of the transmitted packets. +// TimeToLive returns a uint32 +func (obj *bgpAdvanced) HasTimeToLive() bool { + return obj.obj.TimeToLive != nil +} + +// The limited number of iterations that a unit of data can experience before the data is discarded. This is placed in the TTL field in the IP header of the transmitted packets. +// SetTimeToLive sets the uint32 value in the BgpAdvanced object +func (obj *bgpAdvanced) SetTimeToLive(value uint32) BgpAdvanced { + + obj.obj.TimeToLive = &value + return obj +} + +// The value to be used as a secret MD5 key for authentication. If not configured, MD5 authentication will not be enabled. +// Md5Key returns a string +func (obj *bgpAdvanced) Md5Key() string { + + return *obj.obj.Md5Key + +} + +// The value to be used as a secret MD5 key for authentication. If not configured, MD5 authentication will not be enabled. +// Md5Key returns a string +func (obj *bgpAdvanced) HasMd5Key() bool { + return obj.obj.Md5Key != nil +} + +// The value to be used as a secret MD5 key for authentication. If not configured, MD5 authentication will not be enabled. +// SetMd5Key sets the string value in the BgpAdvanced object +func (obj *bgpAdvanced) SetMd5Key(value string) BgpAdvanced { + + obj.obj.Md5Key = &value + return obj +} + +// If set to true, the local BGP peer will wait for the remote peer to initiate the BGP session +// by establishing the TCP connection, rather than initiating sessions from the local peer. +// PassiveMode returns a bool +func (obj *bgpAdvanced) PassiveMode() bool { + + return *obj.obj.PassiveMode + +} + +// If set to true, the local BGP peer will wait for the remote peer to initiate the BGP session +// by establishing the TCP connection, rather than initiating sessions from the local peer. +// PassiveMode returns a bool +func (obj *bgpAdvanced) HasPassiveMode() bool { + return obj.obj.PassiveMode != nil +} + +// If set to true, the local BGP peer will wait for the remote peer to initiate the BGP session +// by establishing the TCP connection, rather than initiating sessions from the local peer. +// SetPassiveMode sets the bool value in the BgpAdvanced object +func (obj *bgpAdvanced) SetPassiveMode(value bool) BgpAdvanced { + + obj.obj.PassiveMode = &value + return obj +} + +// The TCP port number on which to accept BGP connections from the remote peer. +// ListenPort returns a uint32 +func (obj *bgpAdvanced) ListenPort() uint32 { + + return *obj.obj.ListenPort + +} + +// The TCP port number on which to accept BGP connections from the remote peer. +// ListenPort returns a uint32 +func (obj *bgpAdvanced) HasListenPort() bool { + return obj.obj.ListenPort != nil +} + +// The TCP port number on which to accept BGP connections from the remote peer. +// SetListenPort sets the uint32 value in the BgpAdvanced object +func (obj *bgpAdvanced) SetListenPort(value uint32) BgpAdvanced { + + obj.obj.ListenPort = &value + return obj +} + +// Destination TCP port number of the BGP peer when initiating a +// session from the local BGP peer. +// NeighborPort returns a uint32 +func (obj *bgpAdvanced) NeighborPort() uint32 { + + return *obj.obj.NeighborPort + +} + +// Destination TCP port number of the BGP peer when initiating a +// session from the local BGP peer. +// NeighborPort returns a uint32 +func (obj *bgpAdvanced) HasNeighborPort() bool { + return obj.obj.NeighborPort != nil +} + +// Destination TCP port number of the BGP peer when initiating a +// session from the local BGP peer. +// SetNeighborPort sets the uint32 value in the BgpAdvanced object +func (obj *bgpAdvanced) SetNeighborPort(value uint32) BgpAdvanced { + + obj.obj.NeighborPort = &value + return obj +} + +func (obj *bgpAdvanced) validateObj(vObj *validation, set_default bool) { + if set_default { + obj.setDefault() + } + + if obj.obj.TimeToLive != nil { + + if *obj.obj.TimeToLive > 255 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("0 <= BgpAdvanced.TimeToLive <= 255 but Got %d", *obj.obj.TimeToLive)) + } + + } + + if obj.obj.ListenPort != nil { + + if *obj.obj.ListenPort > 65535 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("0 <= BgpAdvanced.ListenPort <= 65535 but Got %d", *obj.obj.ListenPort)) + } + + } + + if obj.obj.NeighborPort != nil { + + if *obj.obj.NeighborPort > 65535 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("0 <= BgpAdvanced.NeighborPort <= 65535 but Got %d", *obj.obj.NeighborPort)) + } + + } + +} + +func (obj *bgpAdvanced) setDefault() { + if obj.obj.HoldTimeInterval == nil { + obj.SetHoldTimeInterval(90) + } + if obj.obj.KeepAliveInterval == nil { + obj.SetKeepAliveInterval(30) + } + if obj.obj.UpdateInterval == nil { + obj.SetUpdateInterval(0) + } + if obj.obj.TimeToLive == nil { + obj.SetTimeToLive(64) + } + if obj.obj.PassiveMode == nil { + obj.SetPassiveMode(false) + } + if obj.obj.ListenPort == nil { + obj.SetListenPort(179) + } + if obj.obj.NeighborPort == nil { + obj.SetNeighborPort(179) + } + +} + +// ***** BgpCapability ***** +type bgpCapability struct { + validation + obj *otg.BgpCapability +} + +func NewBgpCapability() BgpCapability { + obj := bgpCapability{obj: &otg.BgpCapability{}} + obj.setDefault() + return &obj +} + +func (obj *bgpCapability) Msg() *otg.BgpCapability { + return obj.obj +} + +func (obj *bgpCapability) SetMsg(msg *otg.BgpCapability) BgpCapability { + + proto.Merge(obj.obj, msg) + return obj +} + +func (obj *bgpCapability) ToProto() (*otg.BgpCapability, error) { + err := obj.validateToAndFrom() + if err != nil { + return nil, err + } + return obj.Msg(), nil +} + +func (obj *bgpCapability) FromProto(msg *otg.BgpCapability) (BgpCapability, error) { + newObj := obj.SetMsg(msg) + err := newObj.validateToAndFrom() + if err != nil { + return nil, err + } + return newObj, nil +} + +func (obj *bgpCapability) ToPbText() (string, error) { + vErr := obj.validateToAndFrom() + if vErr != nil { + return "", vErr + } + protoMarshal, err := proto.Marshal(obj.Msg()) + if err != nil { + return "", err + } + return string(protoMarshal), nil +} + +func (obj *bgpCapability) FromPbText(value string) error { + retObj := proto.Unmarshal([]byte(value), obj.Msg()) + if retObj != nil { + return retObj + } + + vErr := obj.validateToAndFrom() + if vErr != nil { + return vErr + } + return retObj +} + +func (obj *bgpCapability) ToYaml() (string, error) { + vErr := obj.validateToAndFrom() + if vErr != nil { + return "", vErr + } + opts := protojson.MarshalOptions{ + UseProtoNames: true, + AllowPartial: true, + EmitUnpopulated: false, + } + data, err := opts.Marshal(obj.Msg()) + if err != nil { + return "", err + } + data, err = yaml.JSONToYAML(data) + if err != nil { + return "", err + } + return string(data), nil +} + +func (obj *bgpCapability) FromYaml(value string) error { + if value == "" { + value = "{}" + } + data, err := yaml.YAMLToJSON([]byte(value)) + if err != nil { + return err + } + opts := protojson.UnmarshalOptions{ + AllowPartial: true, + DiscardUnknown: false, + } + uError := opts.Unmarshal([]byte(data), obj.Msg()) + if uError != nil { + return fmt.Errorf("unmarshal error %s", strings.Replace( + uError.Error(), "\u00a0", " ", -1)[7:]) + } + + vErr := obj.validateToAndFrom() + if vErr != nil { + return vErr + } + return nil +} + +func (obj *bgpCapability) ToJson() (string, error) { + vErr := obj.validateToAndFrom() + if vErr != nil { + return "", vErr + } + opts := protojson.MarshalOptions{ + UseProtoNames: true, + AllowPartial: true, + EmitUnpopulated: false, + Indent: " ", + } + data, err := opts.Marshal(obj.Msg()) + if err != nil { + return "", err + } + return string(data), nil +} + +func (obj *bgpCapability) FromJson(value string) error { + opts := protojson.UnmarshalOptions{ + AllowPartial: true, + DiscardUnknown: false, + } + if value == "" { + value = "{}" + } + uError := opts.Unmarshal([]byte(value), obj.Msg()) + if uError != nil { + return fmt.Errorf("unmarshal error %s", strings.Replace( + uError.Error(), "\u00a0", " ", -1)[7:]) + } + + err := obj.validateToAndFrom() + if err != nil { + return err + } + return nil +} + +func (obj *bgpCapability) validateToAndFrom() error { + // emptyVars() + obj.validateObj(&obj.validation, true) + return obj.validationResult() +} + +func (obj *bgpCapability) Validate() error { + // emptyVars() + obj.validateObj(&obj.validation, false) + return obj.validationResult() +} + +func (obj *bgpCapability) String() string { + str, err := obj.ToYaml() + if err != nil { + return err.Error() + } + return str +} + +func (obj *bgpCapability) Clone() (BgpCapability, error) { + vErr := obj.Validate() + if vErr != nil { + return nil, vErr + } + newObj := NewBgpCapability() + data, err := proto.Marshal(obj.Msg()) + if err != nil { + return nil, err + } + pbErr := proto.Unmarshal(data, newObj.Msg()) + if pbErr != nil { + return nil, pbErr + } + return newObj, nil +} + +// BgpCapability is configuration for BGP capability settings. +type BgpCapability interface { + Validation + // Msg marshals BgpCapability to protobuf object *otg.BgpCapability + // and doesn't set defaults + Msg() *otg.BgpCapability + // SetMsg unmarshals BgpCapability from protobuf object *otg.BgpCapability + // and doesn't set defaults + SetMsg(*otg.BgpCapability) BgpCapability + // ToProto marshals BgpCapability to protobuf object *otg.BgpCapability + ToProto() (*otg.BgpCapability, error) + // ToPbText marshals BgpCapability to protobuf text + ToPbText() (string, error) + // ToYaml marshals BgpCapability to YAML text + ToYaml() (string, error) + // ToJson marshals BgpCapability to JSON text + ToJson() (string, error) + // FromProto unmarshals BgpCapability from protobuf object *otg.BgpCapability + FromProto(msg *otg.BgpCapability) (BgpCapability, error) + // FromPbText unmarshals BgpCapability from protobuf text + FromPbText(value string) error + // FromYaml unmarshals BgpCapability from YAML text + FromYaml(value string) error + // FromJson unmarshals BgpCapability from JSON text + FromJson(value string) error + // Validate validates BgpCapability + Validate() error + // A stringer function + String() string + // Clones the object + Clone() (BgpCapability, error) + validateToAndFrom() error + validateObj(vObj *validation, set_default bool) + setDefault() + // Ipv4Unicast returns bool, set in BgpCapability. + Ipv4Unicast() bool + // SetIpv4Unicast assigns bool provided by user to BgpCapability + SetIpv4Unicast(value bool) BgpCapability + // HasIpv4Unicast checks if Ipv4Unicast has been set in BgpCapability + HasIpv4Unicast() bool + // Ipv4Multicast returns bool, set in BgpCapability. + Ipv4Multicast() bool + // SetIpv4Multicast assigns bool provided by user to BgpCapability + SetIpv4Multicast(value bool) BgpCapability + // HasIpv4Multicast checks if Ipv4Multicast has been set in BgpCapability + HasIpv4Multicast() bool + // Ipv6Unicast returns bool, set in BgpCapability. + Ipv6Unicast() bool + // SetIpv6Unicast assigns bool provided by user to BgpCapability + SetIpv6Unicast(value bool) BgpCapability + // HasIpv6Unicast checks if Ipv6Unicast has been set in BgpCapability + HasIpv6Unicast() bool + // Ipv6Multicast returns bool, set in BgpCapability. + Ipv6Multicast() bool + // SetIpv6Multicast assigns bool provided by user to BgpCapability + SetIpv6Multicast(value bool) BgpCapability + // HasIpv6Multicast checks if Ipv6Multicast has been set in BgpCapability + HasIpv6Multicast() bool + // Vpls returns bool, set in BgpCapability. + Vpls() bool + // SetVpls assigns bool provided by user to BgpCapability + SetVpls(value bool) BgpCapability + // HasVpls checks if Vpls has been set in BgpCapability + HasVpls() bool + // RouteRefresh returns bool, set in BgpCapability. + RouteRefresh() bool + // SetRouteRefresh assigns bool provided by user to BgpCapability + SetRouteRefresh(value bool) BgpCapability + // HasRouteRefresh checks if RouteRefresh has been set in BgpCapability + HasRouteRefresh() bool + // RouteConstraint returns bool, set in BgpCapability. + RouteConstraint() bool + // SetRouteConstraint assigns bool provided by user to BgpCapability + SetRouteConstraint(value bool) BgpCapability + // HasRouteConstraint checks if RouteConstraint has been set in BgpCapability + HasRouteConstraint() bool + // LinkStateNonVpn returns bool, set in BgpCapability. + LinkStateNonVpn() bool + // SetLinkStateNonVpn assigns bool provided by user to BgpCapability + SetLinkStateNonVpn(value bool) BgpCapability + // HasLinkStateNonVpn checks if LinkStateNonVpn has been set in BgpCapability + HasLinkStateNonVpn() bool + // LinkStateVpn returns bool, set in BgpCapability. + LinkStateVpn() bool + // SetLinkStateVpn assigns bool provided by user to BgpCapability + SetLinkStateVpn(value bool) BgpCapability + // HasLinkStateVpn checks if LinkStateVpn has been set in BgpCapability + HasLinkStateVpn() bool + // Evpn returns bool, set in BgpCapability. + Evpn() bool + // SetEvpn assigns bool provided by user to BgpCapability + SetEvpn(value bool) BgpCapability + // HasEvpn checks if Evpn has been set in BgpCapability + HasEvpn() bool + // ExtendedNextHopEncoding returns bool, set in BgpCapability. + ExtendedNextHopEncoding() bool + // SetExtendedNextHopEncoding assigns bool provided by user to BgpCapability + SetExtendedNextHopEncoding(value bool) BgpCapability + // HasExtendedNextHopEncoding checks if ExtendedNextHopEncoding has been set in BgpCapability + HasExtendedNextHopEncoding() bool + // Ipv4MulticastVpn returns bool, set in BgpCapability. + Ipv4MulticastVpn() bool + // SetIpv4MulticastVpn assigns bool provided by user to BgpCapability + SetIpv4MulticastVpn(value bool) BgpCapability + // HasIpv4MulticastVpn checks if Ipv4MulticastVpn has been set in BgpCapability + HasIpv4MulticastVpn() bool + // Ipv4MplsVpn returns bool, set in BgpCapability. + Ipv4MplsVpn() bool + // SetIpv4MplsVpn assigns bool provided by user to BgpCapability + SetIpv4MplsVpn(value bool) BgpCapability + // HasIpv4MplsVpn checks if Ipv4MplsVpn has been set in BgpCapability + HasIpv4MplsVpn() bool + // Ipv4Mdt returns bool, set in BgpCapability. + Ipv4Mdt() bool + // SetIpv4Mdt assigns bool provided by user to BgpCapability + SetIpv4Mdt(value bool) BgpCapability + // HasIpv4Mdt checks if Ipv4Mdt has been set in BgpCapability + HasIpv4Mdt() bool + // Ipv4MulticastMplsVpn returns bool, set in BgpCapability. + Ipv4MulticastMplsVpn() bool + // SetIpv4MulticastMplsVpn assigns bool provided by user to BgpCapability + SetIpv4MulticastMplsVpn(value bool) BgpCapability + // HasIpv4MulticastMplsVpn checks if Ipv4MulticastMplsVpn has been set in BgpCapability + HasIpv4MulticastMplsVpn() bool + // Ipv4UnicastFlowSpec returns bool, set in BgpCapability. + Ipv4UnicastFlowSpec() bool + // SetIpv4UnicastFlowSpec assigns bool provided by user to BgpCapability + SetIpv4UnicastFlowSpec(value bool) BgpCapability + // HasIpv4UnicastFlowSpec checks if Ipv4UnicastFlowSpec has been set in BgpCapability + HasIpv4UnicastFlowSpec() bool + // Ipv4SrTePolicy returns bool, set in BgpCapability. + Ipv4SrTePolicy() bool + // SetIpv4SrTePolicy assigns bool provided by user to BgpCapability + SetIpv4SrTePolicy(value bool) BgpCapability + // HasIpv4SrTePolicy checks if Ipv4SrTePolicy has been set in BgpCapability + HasIpv4SrTePolicy() bool + // Ipv4UnicastAddPath returns bool, set in BgpCapability. + Ipv4UnicastAddPath() bool + // SetIpv4UnicastAddPath assigns bool provided by user to BgpCapability + SetIpv4UnicastAddPath(value bool) BgpCapability + // HasIpv4UnicastAddPath checks if Ipv4UnicastAddPath has been set in BgpCapability + HasIpv4UnicastAddPath() bool + // Ipv6MulticastVpn returns bool, set in BgpCapability. + Ipv6MulticastVpn() bool + // SetIpv6MulticastVpn assigns bool provided by user to BgpCapability + SetIpv6MulticastVpn(value bool) BgpCapability + // HasIpv6MulticastVpn checks if Ipv6MulticastVpn has been set in BgpCapability + HasIpv6MulticastVpn() bool + // Ipv6MplsVpn returns bool, set in BgpCapability. + Ipv6MplsVpn() bool + // SetIpv6MplsVpn assigns bool provided by user to BgpCapability + SetIpv6MplsVpn(value bool) BgpCapability + // HasIpv6MplsVpn checks if Ipv6MplsVpn has been set in BgpCapability + HasIpv6MplsVpn() bool + // Ipv6Mdt returns bool, set in BgpCapability. + Ipv6Mdt() bool + // SetIpv6Mdt assigns bool provided by user to BgpCapability + SetIpv6Mdt(value bool) BgpCapability + // HasIpv6Mdt checks if Ipv6Mdt has been set in BgpCapability + HasIpv6Mdt() bool + // Ipv6MulticastMplsVpn returns bool, set in BgpCapability. + Ipv6MulticastMplsVpn() bool + // SetIpv6MulticastMplsVpn assigns bool provided by user to BgpCapability + SetIpv6MulticastMplsVpn(value bool) BgpCapability + // HasIpv6MulticastMplsVpn checks if Ipv6MulticastMplsVpn has been set in BgpCapability + HasIpv6MulticastMplsVpn() bool + // Ipv6UnicastFlowSpec returns bool, set in BgpCapability. + Ipv6UnicastFlowSpec() bool + // SetIpv6UnicastFlowSpec assigns bool provided by user to BgpCapability + SetIpv6UnicastFlowSpec(value bool) BgpCapability + // HasIpv6UnicastFlowSpec checks if Ipv6UnicastFlowSpec has been set in BgpCapability + HasIpv6UnicastFlowSpec() bool + // Ipv6SrTePolicy returns bool, set in BgpCapability. + Ipv6SrTePolicy() bool + // SetIpv6SrTePolicy assigns bool provided by user to BgpCapability + SetIpv6SrTePolicy(value bool) BgpCapability + // HasIpv6SrTePolicy checks if Ipv6SrTePolicy has been set in BgpCapability + HasIpv6SrTePolicy() bool + // Ipv6UnicastAddPath returns bool, set in BgpCapability. + Ipv6UnicastAddPath() bool + // SetIpv6UnicastAddPath assigns bool provided by user to BgpCapability + SetIpv6UnicastAddPath(value bool) BgpCapability + // HasIpv6UnicastAddPath checks if Ipv6UnicastAddPath has been set in BgpCapability + HasIpv6UnicastAddPath() bool +} + +// Support for the IPv4 Unicast address family. +// Ipv4Unicast returns a bool +func (obj *bgpCapability) Ipv4Unicast() bool { + + return *obj.obj.Ipv4Unicast + +} + +// Support for the IPv4 Unicast address family. +// Ipv4Unicast returns a bool +func (obj *bgpCapability) HasIpv4Unicast() bool { + return obj.obj.Ipv4Unicast != nil +} + +// Support for the IPv4 Unicast address family. +// SetIpv4Unicast sets the bool value in the BgpCapability object +func (obj *bgpCapability) SetIpv4Unicast(value bool) BgpCapability { + + obj.obj.Ipv4Unicast = &value + return obj +} + +// Support for the IPv4 Multicast address family. +// Ipv4Multicast returns a bool +func (obj *bgpCapability) Ipv4Multicast() bool { + + return *obj.obj.Ipv4Multicast + +} + +// Support for the IPv4 Multicast address family. +// Ipv4Multicast returns a bool +func (obj *bgpCapability) HasIpv4Multicast() bool { + return obj.obj.Ipv4Multicast != nil +} + +// Support for the IPv4 Multicast address family. +// SetIpv4Multicast sets the bool value in the BgpCapability object +func (obj *bgpCapability) SetIpv4Multicast(value bool) BgpCapability { + + obj.obj.Ipv4Multicast = &value + return obj +} + +// Support for the IPv4 Unicast address family. +// Ipv6Unicast returns a bool +func (obj *bgpCapability) Ipv6Unicast() bool { + + return *obj.obj.Ipv6Unicast + +} + +// Support for the IPv4 Unicast address family. +// Ipv6Unicast returns a bool +func (obj *bgpCapability) HasIpv6Unicast() bool { + return obj.obj.Ipv6Unicast != nil +} + +// Support for the IPv4 Unicast address family. +// SetIpv6Unicast sets the bool value in the BgpCapability object +func (obj *bgpCapability) SetIpv6Unicast(value bool) BgpCapability { + + obj.obj.Ipv6Unicast = &value + return obj +} + +// Support for the IPv6 Multicast address family. +// Ipv6Multicast returns a bool +func (obj *bgpCapability) Ipv6Multicast() bool { + + return *obj.obj.Ipv6Multicast + +} + +// Support for the IPv6 Multicast address family. +// Ipv6Multicast returns a bool +func (obj *bgpCapability) HasIpv6Multicast() bool { + return obj.obj.Ipv6Multicast != nil +} + +// Support for the IPv6 Multicast address family. +// SetIpv6Multicast sets the bool value in the BgpCapability object +func (obj *bgpCapability) SetIpv6Multicast(value bool) BgpCapability { + + obj.obj.Ipv6Multicast = &value + return obj +} + +// Support for VPLS as below. +// RFC4761 - Virtual Private LAN Service (VPLS) using BGP for Auto-Discovery +// and Signaling. +// RFC6624 - Layer 2 Virtual Private Networks using BGP for Auto-Discovery +// and Signaling. +// Vpls returns a bool +func (obj *bgpCapability) Vpls() bool { + + return *obj.obj.Vpls + +} + +// Support for VPLS as below. +// RFC4761 - Virtual Private LAN Service (VPLS) using BGP for Auto-Discovery +// and Signaling. +// RFC6624 - Layer 2 Virtual Private Networks using BGP for Auto-Discovery +// and Signaling. +// Vpls returns a bool +func (obj *bgpCapability) HasVpls() bool { + return obj.obj.Vpls != nil +} + +// Support for VPLS as below. +// RFC4761 - Virtual Private LAN Service (VPLS) using BGP for Auto-Discovery +// and Signaling. +// RFC6624 - Layer 2 Virtual Private Networks using BGP for Auto-Discovery +// and Signaling. +// SetVpls sets the bool value in the BgpCapability object +func (obj *bgpCapability) SetVpls(value bool) BgpCapability { + + obj.obj.Vpls = &value + return obj +} + +// Support for the route refresh capabilities. Route Refresh allows the dynamic exchange of route refresh requests and routing information between BGP peers and the subsequent re-advertisement of the outbound or inbound routing table. +// RouteRefresh returns a bool +func (obj *bgpCapability) RouteRefresh() bool { + + return *obj.obj.RouteRefresh + +} + +// Support for the route refresh capabilities. Route Refresh allows the dynamic exchange of route refresh requests and routing information between BGP peers and the subsequent re-advertisement of the outbound or inbound routing table. +// RouteRefresh returns a bool +func (obj *bgpCapability) HasRouteRefresh() bool { + return obj.obj.RouteRefresh != nil +} + +// Support for the route refresh capabilities. Route Refresh allows the dynamic exchange of route refresh requests and routing information between BGP peers and the subsequent re-advertisement of the outbound or inbound routing table. +// SetRouteRefresh sets the bool value in the BgpCapability object +func (obj *bgpCapability) SetRouteRefresh(value bool) BgpCapability { + + obj.obj.RouteRefresh = &value + return obj +} + +// Supports for the route constraint capabilities. Route Constraint allows the advertisement of Route Target Membership information. The BGP peers exchange Route Target Reachability Information, which is used to build a route distribution graph. This limits the propagation of VPN Network Layer Reachability Information (NLRI) between different autonomous systems or distinct clusters of the same autonomous system. This is supported for Layer 3 Virtual Private Network scenario. +// RouteConstraint returns a bool +func (obj *bgpCapability) RouteConstraint() bool { + + return *obj.obj.RouteConstraint + +} + +// Supports for the route constraint capabilities. Route Constraint allows the advertisement of Route Target Membership information. The BGP peers exchange Route Target Reachability Information, which is used to build a route distribution graph. This limits the propagation of VPN Network Layer Reachability Information (NLRI) between different autonomous systems or distinct clusters of the same autonomous system. This is supported for Layer 3 Virtual Private Network scenario. +// RouteConstraint returns a bool +func (obj *bgpCapability) HasRouteConstraint() bool { + return obj.obj.RouteConstraint != nil +} + +// Supports for the route constraint capabilities. Route Constraint allows the advertisement of Route Target Membership information. The BGP peers exchange Route Target Reachability Information, which is used to build a route distribution graph. This limits the propagation of VPN Network Layer Reachability Information (NLRI) between different autonomous systems or distinct clusters of the same autonomous system. This is supported for Layer 3 Virtual Private Network scenario. +// SetRouteConstraint sets the bool value in the BgpCapability object +func (obj *bgpCapability) SetRouteConstraint(value bool) BgpCapability { + + obj.obj.RouteConstraint = &value + return obj +} + +// Support for BGP Link State for ISIS and OSPF. +// LinkStateNonVpn returns a bool +func (obj *bgpCapability) LinkStateNonVpn() bool { + + return *obj.obj.LinkStateNonVpn + +} + +// Support for BGP Link State for ISIS and OSPF. +// LinkStateNonVpn returns a bool +func (obj *bgpCapability) HasLinkStateNonVpn() bool { + return obj.obj.LinkStateNonVpn != nil +} + +// Support for BGP Link State for ISIS and OSPF. +// SetLinkStateNonVpn sets the bool value in the BgpCapability object +func (obj *bgpCapability) SetLinkStateNonVpn(value bool) BgpCapability { + + obj.obj.LinkStateNonVpn = &value + return obj +} + +// Capability advertisement of BGP Link State for VPNs. +// LinkStateVpn returns a bool +func (obj *bgpCapability) LinkStateVpn() bool { + + return *obj.obj.LinkStateVpn + +} + +// Capability advertisement of BGP Link State for VPNs. +// LinkStateVpn returns a bool +func (obj *bgpCapability) HasLinkStateVpn() bool { + return obj.obj.LinkStateVpn != nil +} + +// Capability advertisement of BGP Link State for VPNs. +// SetLinkStateVpn sets the bool value in the BgpCapability object +func (obj *bgpCapability) SetLinkStateVpn(value bool) BgpCapability { + + obj.obj.LinkStateVpn = &value + return obj +} + +// Support for the EVPN address family. +// Evpn returns a bool +func (obj *bgpCapability) Evpn() bool { + + return *obj.obj.Evpn + +} + +// Support for the EVPN address family. +// Evpn returns a bool +func (obj *bgpCapability) HasEvpn() bool { + return obj.obj.Evpn != nil +} + +// Support for the EVPN address family. +// SetEvpn sets the bool value in the BgpCapability object +func (obj *bgpCapability) SetEvpn(value bool) BgpCapability { + + obj.obj.Evpn = &value + return obj +} + +// Support for extended Next Hop Encoding for Nexthop field in IPv4 routes advertisement. This allows IPv4 routes being advertised by IPv6 peers to include an IPv6 Nexthop. +// ExtendedNextHopEncoding returns a bool +func (obj *bgpCapability) ExtendedNextHopEncoding() bool { + + return *obj.obj.ExtendedNextHopEncoding + +} + +// Support for extended Next Hop Encoding for Nexthop field in IPv4 routes advertisement. This allows IPv4 routes being advertised by IPv6 peers to include an IPv6 Nexthop. +// ExtendedNextHopEncoding returns a bool +func (obj *bgpCapability) HasExtendedNextHopEncoding() bool { + return obj.obj.ExtendedNextHopEncoding != nil +} + +// Support for extended Next Hop Encoding for Nexthop field in IPv4 routes advertisement. This allows IPv4 routes being advertised by IPv6 peers to include an IPv6 Nexthop. +// SetExtendedNextHopEncoding sets the bool value in the BgpCapability object +func (obj *bgpCapability) SetExtendedNextHopEncoding(value bool) BgpCapability { + + obj.obj.ExtendedNextHopEncoding = &value + return obj +} + +// Support for the IPv4 Multicast VPN address family. +// Ipv4MulticastVpn returns a bool +func (obj *bgpCapability) Ipv4MulticastVpn() bool { + + return *obj.obj.Ipv4MulticastVpn + +} + +// Support for the IPv4 Multicast VPN address family. +// Ipv4MulticastVpn returns a bool +func (obj *bgpCapability) HasIpv4MulticastVpn() bool { + return obj.obj.Ipv4MulticastVpn != nil +} + +// Support for the IPv4 Multicast VPN address family. +// SetIpv4MulticastVpn sets the bool value in the BgpCapability object +func (obj *bgpCapability) SetIpv4MulticastVpn(value bool) BgpCapability { + + obj.obj.Ipv4MulticastVpn = &value + return obj +} + +// Support for the IPv4 MPLS L3VPN address family. +// Ipv4MplsVpn returns a bool +func (obj *bgpCapability) Ipv4MplsVpn() bool { + + return *obj.obj.Ipv4MplsVpn + +} + +// Support for the IPv4 MPLS L3VPN address family. +// Ipv4MplsVpn returns a bool +func (obj *bgpCapability) HasIpv4MplsVpn() bool { + return obj.obj.Ipv4MplsVpn != nil +} + +// Support for the IPv4 MPLS L3VPN address family. +// SetIpv4MplsVpn sets the bool value in the BgpCapability object +func (obj *bgpCapability) SetIpv4MplsVpn(value bool) BgpCapability { + + obj.obj.Ipv4MplsVpn = &value + return obj +} + +// Supports for IPv4 MDT address family messages. +// Ipv4Mdt returns a bool +func (obj *bgpCapability) Ipv4Mdt() bool { + + return *obj.obj.Ipv4Mdt + +} + +// Supports for IPv4 MDT address family messages. +// Ipv4Mdt returns a bool +func (obj *bgpCapability) HasIpv4Mdt() bool { + return obj.obj.Ipv4Mdt != nil +} + +// Supports for IPv4 MDT address family messages. +// SetIpv4Mdt sets the bool value in the BgpCapability object +func (obj *bgpCapability) SetIpv4Mdt(value bool) BgpCapability { + + obj.obj.Ipv4Mdt = &value + return obj +} + +// Support for the IPv4 Multicast VPN address family. +// Ipv4MulticastMplsVpn returns a bool +func (obj *bgpCapability) Ipv4MulticastMplsVpn() bool { + + return *obj.obj.Ipv4MulticastMplsVpn + +} + +// Support for the IPv4 Multicast VPN address family. +// Ipv4MulticastMplsVpn returns a bool +func (obj *bgpCapability) HasIpv4MulticastMplsVpn() bool { + return obj.obj.Ipv4MulticastMplsVpn != nil +} + +// Support for the IPv4 Multicast VPN address family. +// SetIpv4MulticastMplsVpn sets the bool value in the BgpCapability object +func (obj *bgpCapability) SetIpv4MulticastMplsVpn(value bool) BgpCapability { + + obj.obj.Ipv4MulticastMplsVpn = &value + return obj +} + +// Support for propagation of IPv4 unicast flow specification rules. +// Ipv4UnicastFlowSpec returns a bool +func (obj *bgpCapability) Ipv4UnicastFlowSpec() bool { + + return *obj.obj.Ipv4UnicastFlowSpec + +} + +// Support for propagation of IPv4 unicast flow specification rules. +// Ipv4UnicastFlowSpec returns a bool +func (obj *bgpCapability) HasIpv4UnicastFlowSpec() bool { + return obj.obj.Ipv4UnicastFlowSpec != nil +} + +// Support for propagation of IPv4 unicast flow specification rules. +// SetIpv4UnicastFlowSpec sets the bool value in the BgpCapability object +func (obj *bgpCapability) SetIpv4UnicastFlowSpec(value bool) BgpCapability { + + obj.obj.Ipv4UnicastFlowSpec = &value + return obj +} + +// Support for IPv4 SRTE policy. +// Ipv4SrTePolicy returns a bool +func (obj *bgpCapability) Ipv4SrTePolicy() bool { + + return *obj.obj.Ipv4SrTePolicy + +} + +// Support for IPv4 SRTE policy. +// Ipv4SrTePolicy returns a bool +func (obj *bgpCapability) HasIpv4SrTePolicy() bool { + return obj.obj.Ipv4SrTePolicy != nil +} + +// Support for IPv4 SRTE policy. +// SetIpv4SrTePolicy sets the bool value in the BgpCapability object +func (obj *bgpCapability) SetIpv4SrTePolicy(value bool) BgpCapability { + + obj.obj.Ipv4SrTePolicy = &value + return obj +} + +// Support for IPv4 Unicast Add Path Capability. +// Ipv4UnicastAddPath returns a bool +func (obj *bgpCapability) Ipv4UnicastAddPath() bool { + + return *obj.obj.Ipv4UnicastAddPath + +} + +// Support for IPv4 Unicast Add Path Capability. +// Ipv4UnicastAddPath returns a bool +func (obj *bgpCapability) HasIpv4UnicastAddPath() bool { + return obj.obj.Ipv4UnicastAddPath != nil +} + +// Support for IPv4 Unicast Add Path Capability. +// SetIpv4UnicastAddPath sets the bool value in the BgpCapability object +func (obj *bgpCapability) SetIpv4UnicastAddPath(value bool) BgpCapability { + + obj.obj.Ipv4UnicastAddPath = &value + return obj +} + +// Support for the IPv6 Multicast VPN address family. +// Ipv6MulticastVpn returns a bool +func (obj *bgpCapability) Ipv6MulticastVpn() bool { + + return *obj.obj.Ipv6MulticastVpn + +} + +// Support for the IPv6 Multicast VPN address family. +// Ipv6MulticastVpn returns a bool +func (obj *bgpCapability) HasIpv6MulticastVpn() bool { + return obj.obj.Ipv6MulticastVpn != nil +} + +// Support for the IPv6 Multicast VPN address family. +// SetIpv6MulticastVpn sets the bool value in the BgpCapability object +func (obj *bgpCapability) SetIpv6MulticastVpn(value bool) BgpCapability { + + obj.obj.Ipv6MulticastVpn = &value + return obj +} + +// Support for the IPv6 MPLS L3VPN address family. +// Ipv6MplsVpn returns a bool +func (obj *bgpCapability) Ipv6MplsVpn() bool { + + return *obj.obj.Ipv6MplsVpn + +} + +// Support for the IPv6 MPLS L3VPN address family. +// Ipv6MplsVpn returns a bool +func (obj *bgpCapability) HasIpv6MplsVpn() bool { + return obj.obj.Ipv6MplsVpn != nil +} + +// Support for the IPv6 MPLS L3VPN address family. +// SetIpv6MplsVpn sets the bool value in the BgpCapability object +func (obj *bgpCapability) SetIpv6MplsVpn(value bool) BgpCapability { + + obj.obj.Ipv6MplsVpn = &value + return obj +} + +// Support for IPv6 MDT address family messages. +// Ipv6Mdt returns a bool +func (obj *bgpCapability) Ipv6Mdt() bool { + + return *obj.obj.Ipv6Mdt + +} + +// Support for IPv6 MDT address family messages. +// Ipv6Mdt returns a bool +func (obj *bgpCapability) HasIpv6Mdt() bool { + return obj.obj.Ipv6Mdt != nil +} + +// Support for IPv6 MDT address family messages. +// SetIpv6Mdt sets the bool value in the BgpCapability object +func (obj *bgpCapability) SetIpv6Mdt(value bool) BgpCapability { + + obj.obj.Ipv6Mdt = &value + return obj +} + +// Support for the IPv6 Multicast VPN address family. +// Ipv6MulticastMplsVpn returns a bool +func (obj *bgpCapability) Ipv6MulticastMplsVpn() bool { + + return *obj.obj.Ipv6MulticastMplsVpn + +} + +// Support for the IPv6 Multicast VPN address family. +// Ipv6MulticastMplsVpn returns a bool +func (obj *bgpCapability) HasIpv6MulticastMplsVpn() bool { + return obj.obj.Ipv6MulticastMplsVpn != nil +} + +// Support for the IPv6 Multicast VPN address family. +// SetIpv6MulticastMplsVpn sets the bool value in the BgpCapability object +func (obj *bgpCapability) SetIpv6MulticastMplsVpn(value bool) BgpCapability { + + obj.obj.Ipv6MulticastMplsVpn = &value + return obj +} + +// Support for propagation of IPv6 unicast flow specification rules. +// Ipv6UnicastFlowSpec returns a bool +func (obj *bgpCapability) Ipv6UnicastFlowSpec() bool { + + return *obj.obj.Ipv6UnicastFlowSpec + +} + +// Support for propagation of IPv6 unicast flow specification rules. +// Ipv6UnicastFlowSpec returns a bool +func (obj *bgpCapability) HasIpv6UnicastFlowSpec() bool { + return obj.obj.Ipv6UnicastFlowSpec != nil +} + +// Support for propagation of IPv6 unicast flow specification rules. +// SetIpv6UnicastFlowSpec sets the bool value in the BgpCapability object +func (obj *bgpCapability) SetIpv6UnicastFlowSpec(value bool) BgpCapability { + + obj.obj.Ipv6UnicastFlowSpec = &value + return obj +} + +// Support for IPv6 SRTE policy. +// Ipv6SrTePolicy returns a bool +func (obj *bgpCapability) Ipv6SrTePolicy() bool { + + return *obj.obj.Ipv6SrTePolicy + +} + +// Support for IPv6 SRTE policy. +// Ipv6SrTePolicy returns a bool +func (obj *bgpCapability) HasIpv6SrTePolicy() bool { + return obj.obj.Ipv6SrTePolicy != nil +} + +// Support for IPv6 SRTE policy. +// SetIpv6SrTePolicy sets the bool value in the BgpCapability object +func (obj *bgpCapability) SetIpv6SrTePolicy(value bool) BgpCapability { + + obj.obj.Ipv6SrTePolicy = &value + return obj +} + +// Support for IPv6 Unicast Add Path Capability. +// Ipv6UnicastAddPath returns a bool +func (obj *bgpCapability) Ipv6UnicastAddPath() bool { + + return *obj.obj.Ipv6UnicastAddPath + +} + +// Support for IPv6 Unicast Add Path Capability. +// Ipv6UnicastAddPath returns a bool +func (obj *bgpCapability) HasIpv6UnicastAddPath() bool { + return obj.obj.Ipv6UnicastAddPath != nil +} + +// Support for IPv6 Unicast Add Path Capability. +// SetIpv6UnicastAddPath sets the bool value in the BgpCapability object +func (obj *bgpCapability) SetIpv6UnicastAddPath(value bool) BgpCapability { + + obj.obj.Ipv6UnicastAddPath = &value + return obj +} + +func (obj *bgpCapability) validateObj(vObj *validation, set_default bool) { + if set_default { + obj.setDefault() + } + +} + +func (obj *bgpCapability) setDefault() { + if obj.obj.Ipv4Unicast == nil { + obj.SetIpv4Unicast(true) + } + if obj.obj.Ipv4Multicast == nil { + obj.SetIpv4Multicast(false) + } + if obj.obj.Ipv6Unicast == nil { + obj.SetIpv6Unicast(true) + } + if obj.obj.Ipv6Multicast == nil { + obj.SetIpv6Multicast(false) + } + if obj.obj.Vpls == nil { + obj.SetVpls(false) + } + if obj.obj.RouteRefresh == nil { + obj.SetRouteRefresh(true) + } + if obj.obj.RouteConstraint == nil { + obj.SetRouteConstraint(false) + } + if obj.obj.LinkStateNonVpn == nil { + obj.SetLinkStateNonVpn(false) + } + if obj.obj.LinkStateVpn == nil { + obj.SetLinkStateVpn(false) + } + if obj.obj.Evpn == nil { + obj.SetEvpn(false) + } + if obj.obj.ExtendedNextHopEncoding == nil { + obj.SetExtendedNextHopEncoding(false) + } + if obj.obj.Ipv4MulticastVpn == nil { + obj.SetIpv4MulticastVpn(false) + } + if obj.obj.Ipv4MplsVpn == nil { obj.SetIpv4MplsVpn(false) } - if obj.obj.Ipv4Mdt == nil { - obj.SetIpv4Mdt(false) + if obj.obj.Ipv4Mdt == nil { + obj.SetIpv4Mdt(false) + } + if obj.obj.Ipv4MulticastMplsVpn == nil { + obj.SetIpv4MulticastMplsVpn(false) + } + if obj.obj.Ipv4UnicastFlowSpec == nil { + obj.SetIpv4UnicastFlowSpec(false) + } + if obj.obj.Ipv4SrTePolicy == nil { + obj.SetIpv4SrTePolicy(false) + } + if obj.obj.Ipv4UnicastAddPath == nil { + obj.SetIpv4UnicastAddPath(false) + } + if obj.obj.Ipv6MulticastVpn == nil { + obj.SetIpv6MulticastVpn(false) + } + if obj.obj.Ipv6MplsVpn == nil { + obj.SetIpv6MplsVpn(false) + } + if obj.obj.Ipv6Mdt == nil { + obj.SetIpv6Mdt(false) + } + if obj.obj.Ipv6MulticastMplsVpn == nil { + obj.SetIpv6MulticastMplsVpn(false) + } + if obj.obj.Ipv6UnicastFlowSpec == nil { + obj.SetIpv6UnicastFlowSpec(false) + } + if obj.obj.Ipv6SrTePolicy == nil { + obj.SetIpv6SrTePolicy(false) + } + if obj.obj.Ipv6UnicastAddPath == nil { + obj.SetIpv6UnicastAddPath(false) + } + +} + +// ***** BgpLearnedInformationFilter ***** +type bgpLearnedInformationFilter struct { + validation + obj *otg.BgpLearnedInformationFilter +} + +func NewBgpLearnedInformationFilter() BgpLearnedInformationFilter { + obj := bgpLearnedInformationFilter{obj: &otg.BgpLearnedInformationFilter{}} + obj.setDefault() + return &obj +} + +func (obj *bgpLearnedInformationFilter) Msg() *otg.BgpLearnedInformationFilter { + return obj.obj +} + +func (obj *bgpLearnedInformationFilter) SetMsg(msg *otg.BgpLearnedInformationFilter) BgpLearnedInformationFilter { + + proto.Merge(obj.obj, msg) + return obj +} + +func (obj *bgpLearnedInformationFilter) ToProto() (*otg.BgpLearnedInformationFilter, error) { + err := obj.validateToAndFrom() + if err != nil { + return nil, err + } + return obj.Msg(), nil +} + +func (obj *bgpLearnedInformationFilter) FromProto(msg *otg.BgpLearnedInformationFilter) (BgpLearnedInformationFilter, error) { + newObj := obj.SetMsg(msg) + err := newObj.validateToAndFrom() + if err != nil { + return nil, err + } + return newObj, nil +} + +func (obj *bgpLearnedInformationFilter) ToPbText() (string, error) { + vErr := obj.validateToAndFrom() + if vErr != nil { + return "", vErr + } + protoMarshal, err := proto.Marshal(obj.Msg()) + if err != nil { + return "", err + } + return string(protoMarshal), nil +} + +func (obj *bgpLearnedInformationFilter) FromPbText(value string) error { + retObj := proto.Unmarshal([]byte(value), obj.Msg()) + if retObj != nil { + return retObj + } + + vErr := obj.validateToAndFrom() + if vErr != nil { + return vErr + } + return retObj +} + +func (obj *bgpLearnedInformationFilter) ToYaml() (string, error) { + vErr := obj.validateToAndFrom() + if vErr != nil { + return "", vErr + } + opts := protojson.MarshalOptions{ + UseProtoNames: true, + AllowPartial: true, + EmitUnpopulated: false, + } + data, err := opts.Marshal(obj.Msg()) + if err != nil { + return "", err + } + data, err = yaml.JSONToYAML(data) + if err != nil { + return "", err + } + return string(data), nil +} + +func (obj *bgpLearnedInformationFilter) FromYaml(value string) error { + if value == "" { + value = "{}" + } + data, err := yaml.YAMLToJSON([]byte(value)) + if err != nil { + return err + } + opts := protojson.UnmarshalOptions{ + AllowPartial: true, + DiscardUnknown: false, + } + uError := opts.Unmarshal([]byte(data), obj.Msg()) + if uError != nil { + return fmt.Errorf("unmarshal error %s", strings.Replace( + uError.Error(), "\u00a0", " ", -1)[7:]) + } + + vErr := obj.validateToAndFrom() + if vErr != nil { + return vErr + } + return nil +} + +func (obj *bgpLearnedInformationFilter) ToJson() (string, error) { + vErr := obj.validateToAndFrom() + if vErr != nil { + return "", vErr + } + opts := protojson.MarshalOptions{ + UseProtoNames: true, + AllowPartial: true, + EmitUnpopulated: false, + Indent: " ", + } + data, err := opts.Marshal(obj.Msg()) + if err != nil { + return "", err + } + return string(data), nil +} + +func (obj *bgpLearnedInformationFilter) FromJson(value string) error { + opts := protojson.UnmarshalOptions{ + AllowPartial: true, + DiscardUnknown: false, + } + if value == "" { + value = "{}" + } + uError := opts.Unmarshal([]byte(value), obj.Msg()) + if uError != nil { + return fmt.Errorf("unmarshal error %s", strings.Replace( + uError.Error(), "\u00a0", " ", -1)[7:]) + } + + err := obj.validateToAndFrom() + if err != nil { + return err + } + return nil +} + +func (obj *bgpLearnedInformationFilter) validateToAndFrom() error { + // emptyVars() + obj.validateObj(&obj.validation, true) + return obj.validationResult() +} + +func (obj *bgpLearnedInformationFilter) Validate() error { + // emptyVars() + obj.validateObj(&obj.validation, false) + return obj.validationResult() +} + +func (obj *bgpLearnedInformationFilter) String() string { + str, err := obj.ToYaml() + if err != nil { + return err.Error() + } + return str +} + +func (obj *bgpLearnedInformationFilter) Clone() (BgpLearnedInformationFilter, error) { + vErr := obj.Validate() + if vErr != nil { + return nil, vErr + } + newObj := NewBgpLearnedInformationFilter() + data, err := proto.Marshal(obj.Msg()) + if err != nil { + return nil, err + } + pbErr := proto.Unmarshal(data, newObj.Msg()) + if pbErr != nil { + return nil, pbErr + } + return newObj, nil +} + +// BgpLearnedInformationFilter is configuration for controlling storage of BGP learned information recieved from the peer. +type BgpLearnedInformationFilter interface { + Validation + // Msg marshals BgpLearnedInformationFilter to protobuf object *otg.BgpLearnedInformationFilter + // and doesn't set defaults + Msg() *otg.BgpLearnedInformationFilter + // SetMsg unmarshals BgpLearnedInformationFilter from protobuf object *otg.BgpLearnedInformationFilter + // and doesn't set defaults + SetMsg(*otg.BgpLearnedInformationFilter) BgpLearnedInformationFilter + // ToProto marshals BgpLearnedInformationFilter to protobuf object *otg.BgpLearnedInformationFilter + ToProto() (*otg.BgpLearnedInformationFilter, error) + // ToPbText marshals BgpLearnedInformationFilter to protobuf text + ToPbText() (string, error) + // ToYaml marshals BgpLearnedInformationFilter to YAML text + ToYaml() (string, error) + // ToJson marshals BgpLearnedInformationFilter to JSON text + ToJson() (string, error) + // FromProto unmarshals BgpLearnedInformationFilter from protobuf object *otg.BgpLearnedInformationFilter + FromProto(msg *otg.BgpLearnedInformationFilter) (BgpLearnedInformationFilter, error) + // FromPbText unmarshals BgpLearnedInformationFilter from protobuf text + FromPbText(value string) error + // FromYaml unmarshals BgpLearnedInformationFilter from YAML text + FromYaml(value string) error + // FromJson unmarshals BgpLearnedInformationFilter from JSON text + FromJson(value string) error + // Validate validates BgpLearnedInformationFilter + Validate() error + // A stringer function + String() string + // Clones the object + Clone() (BgpLearnedInformationFilter, error) + validateToAndFrom() error + validateObj(vObj *validation, set_default bool) + setDefault() + // UnicastIpv4Prefix returns bool, set in BgpLearnedInformationFilter. + UnicastIpv4Prefix() bool + // SetUnicastIpv4Prefix assigns bool provided by user to BgpLearnedInformationFilter + SetUnicastIpv4Prefix(value bool) BgpLearnedInformationFilter + // HasUnicastIpv4Prefix checks if UnicastIpv4Prefix has been set in BgpLearnedInformationFilter + HasUnicastIpv4Prefix() bool + // UnicastIpv6Prefix returns bool, set in BgpLearnedInformationFilter. + UnicastIpv6Prefix() bool + // SetUnicastIpv6Prefix assigns bool provided by user to BgpLearnedInformationFilter + SetUnicastIpv6Prefix(value bool) BgpLearnedInformationFilter + // HasUnicastIpv6Prefix checks if UnicastIpv6Prefix has been set in BgpLearnedInformationFilter + HasUnicastIpv6Prefix() bool +} + +// If enabled, will store the information related to Unicast IPv4 Prefixes recieved from the peer. +// UnicastIpv4Prefix returns a bool +func (obj *bgpLearnedInformationFilter) UnicastIpv4Prefix() bool { + + return *obj.obj.UnicastIpv4Prefix + +} + +// If enabled, will store the information related to Unicast IPv4 Prefixes recieved from the peer. +// UnicastIpv4Prefix returns a bool +func (obj *bgpLearnedInformationFilter) HasUnicastIpv4Prefix() bool { + return obj.obj.UnicastIpv4Prefix != nil +} + +// If enabled, will store the information related to Unicast IPv4 Prefixes recieved from the peer. +// SetUnicastIpv4Prefix sets the bool value in the BgpLearnedInformationFilter object +func (obj *bgpLearnedInformationFilter) SetUnicastIpv4Prefix(value bool) BgpLearnedInformationFilter { + + obj.obj.UnicastIpv4Prefix = &value + return obj +} + +// If enabled, will store the information related to Unicast IPv6 Prefixes recieved from the peer. +// UnicastIpv6Prefix returns a bool +func (obj *bgpLearnedInformationFilter) UnicastIpv6Prefix() bool { + + return *obj.obj.UnicastIpv6Prefix + +} + +// If enabled, will store the information related to Unicast IPv6 Prefixes recieved from the peer. +// UnicastIpv6Prefix returns a bool +func (obj *bgpLearnedInformationFilter) HasUnicastIpv6Prefix() bool { + return obj.obj.UnicastIpv6Prefix != nil +} + +// If enabled, will store the information related to Unicast IPv6 Prefixes recieved from the peer. +// SetUnicastIpv6Prefix sets the bool value in the BgpLearnedInformationFilter object +func (obj *bgpLearnedInformationFilter) SetUnicastIpv6Prefix(value bool) BgpLearnedInformationFilter { + + obj.obj.UnicastIpv6Prefix = &value + return obj +} + +func (obj *bgpLearnedInformationFilter) validateObj(vObj *validation, set_default bool) { + if set_default { + obj.setDefault() + } + +} + +func (obj *bgpLearnedInformationFilter) setDefault() { + if obj.obj.UnicastIpv4Prefix == nil { + obj.SetUnicastIpv4Prefix(false) + } + if obj.obj.UnicastIpv6Prefix == nil { + obj.SetUnicastIpv6Prefix(false) + } + +} + +// ***** BgpV4RouteRange ***** +type bgpV4RouteRange struct { + validation + obj *otg.BgpV4RouteRange + addressesHolder BgpV4RouteRangeV4RouteAddressIter + advancedHolder BgpRouteAdvanced + communitiesHolder BgpV4RouteRangeBgpCommunityIter + asPathHolder BgpAsPath + addPathHolder BgpAddPath + extCommunitiesHolder BgpV4RouteRangeBgpExtCommunityIter + extendedCommunitiesHolder BgpV4RouteRangeBgpExtendedCommunityIter +} + +func NewBgpV4RouteRange() BgpV4RouteRange { + obj := bgpV4RouteRange{obj: &otg.BgpV4RouteRange{}} + obj.setDefault() + return &obj +} + +func (obj *bgpV4RouteRange) Msg() *otg.BgpV4RouteRange { + return obj.obj +} + +func (obj *bgpV4RouteRange) SetMsg(msg *otg.BgpV4RouteRange) BgpV4RouteRange { + obj.setNil() + proto.Merge(obj.obj, msg) + return obj +} + +func (obj *bgpV4RouteRange) ToProto() (*otg.BgpV4RouteRange, error) { + err := obj.validateToAndFrom() + if err != nil { + return nil, err + } + return obj.Msg(), nil +} + +func (obj *bgpV4RouteRange) FromProto(msg *otg.BgpV4RouteRange) (BgpV4RouteRange, error) { + newObj := obj.SetMsg(msg) + err := newObj.validateToAndFrom() + if err != nil { + return nil, err + } + return newObj, nil +} + +func (obj *bgpV4RouteRange) ToPbText() (string, error) { + vErr := obj.validateToAndFrom() + if vErr != nil { + return "", vErr + } + protoMarshal, err := proto.Marshal(obj.Msg()) + if err != nil { + return "", err + } + return string(protoMarshal), nil +} + +func (obj *bgpV4RouteRange) FromPbText(value string) error { + retObj := proto.Unmarshal([]byte(value), obj.Msg()) + if retObj != nil { + return retObj + } + obj.setNil() + vErr := obj.validateToAndFrom() + if vErr != nil { + return vErr + } + return retObj +} + +func (obj *bgpV4RouteRange) ToYaml() (string, error) { + vErr := obj.validateToAndFrom() + if vErr != nil { + return "", vErr + } + opts := protojson.MarshalOptions{ + UseProtoNames: true, + AllowPartial: true, + EmitUnpopulated: false, + } + data, err := opts.Marshal(obj.Msg()) + if err != nil { + return "", err + } + data, err = yaml.JSONToYAML(data) + if err != nil { + return "", err + } + return string(data), nil +} + +func (obj *bgpV4RouteRange) FromYaml(value string) error { + if value == "" { + value = "{}" + } + data, err := yaml.YAMLToJSON([]byte(value)) + if err != nil { + return err + } + opts := protojson.UnmarshalOptions{ + AllowPartial: true, + DiscardUnknown: false, + } + uError := opts.Unmarshal([]byte(data), obj.Msg()) + if uError != nil { + return fmt.Errorf("unmarshal error %s", strings.Replace( + uError.Error(), "\u00a0", " ", -1)[7:]) + } + obj.setNil() + vErr := obj.validateToAndFrom() + if vErr != nil { + return vErr + } + return nil +} + +func (obj *bgpV4RouteRange) ToJson() (string, error) { + vErr := obj.validateToAndFrom() + if vErr != nil { + return "", vErr + } + opts := protojson.MarshalOptions{ + UseProtoNames: true, + AllowPartial: true, + EmitUnpopulated: false, + Indent: " ", + } + data, err := opts.Marshal(obj.Msg()) + if err != nil { + return "", err + } + return string(data), nil +} + +func (obj *bgpV4RouteRange) FromJson(value string) error { + opts := protojson.UnmarshalOptions{ + AllowPartial: true, + DiscardUnknown: false, + } + if value == "" { + value = "{}" + } + uError := opts.Unmarshal([]byte(value), obj.Msg()) + if uError != nil { + return fmt.Errorf("unmarshal error %s", strings.Replace( + uError.Error(), "\u00a0", " ", -1)[7:]) + } + obj.setNil() + err := obj.validateToAndFrom() + if err != nil { + return err + } + return nil +} + +func (obj *bgpV4RouteRange) validateToAndFrom() error { + // emptyVars() + obj.validateObj(&obj.validation, true) + return obj.validationResult() +} + +func (obj *bgpV4RouteRange) Validate() error { + // emptyVars() + obj.validateObj(&obj.validation, false) + return obj.validationResult() +} + +func (obj *bgpV4RouteRange) String() string { + str, err := obj.ToYaml() + if err != nil { + return err.Error() + } + return str +} + +func (obj *bgpV4RouteRange) Clone() (BgpV4RouteRange, error) { + vErr := obj.Validate() + if vErr != nil { + return nil, vErr + } + newObj := NewBgpV4RouteRange() + data, err := proto.Marshal(obj.Msg()) + if err != nil { + return nil, err + } + pbErr := proto.Unmarshal(data, newObj.Msg()) + if pbErr != nil { + return nil, pbErr + } + return newObj, nil +} + +func (obj *bgpV4RouteRange) setNil() { + obj.addressesHolder = nil + obj.advancedHolder = nil + obj.communitiesHolder = nil + obj.asPathHolder = nil + obj.addPathHolder = nil + obj.extCommunitiesHolder = nil + obj.extendedCommunitiesHolder = nil + obj.validationErrors = nil + obj.warnings = nil + obj.constraints = make(map[string]map[string]Constraints) +} + +// BgpV4RouteRange is emulated BGPv4 route range. +type BgpV4RouteRange interface { + Validation + // Msg marshals BgpV4RouteRange to protobuf object *otg.BgpV4RouteRange + // and doesn't set defaults + Msg() *otg.BgpV4RouteRange + // SetMsg unmarshals BgpV4RouteRange from protobuf object *otg.BgpV4RouteRange + // and doesn't set defaults + SetMsg(*otg.BgpV4RouteRange) BgpV4RouteRange + // ToProto marshals BgpV4RouteRange to protobuf object *otg.BgpV4RouteRange + ToProto() (*otg.BgpV4RouteRange, error) + // ToPbText marshals BgpV4RouteRange to protobuf text + ToPbText() (string, error) + // ToYaml marshals BgpV4RouteRange to YAML text + ToYaml() (string, error) + // ToJson marshals BgpV4RouteRange to JSON text + ToJson() (string, error) + // FromProto unmarshals BgpV4RouteRange from protobuf object *otg.BgpV4RouteRange + FromProto(msg *otg.BgpV4RouteRange) (BgpV4RouteRange, error) + // FromPbText unmarshals BgpV4RouteRange from protobuf text + FromPbText(value string) error + // FromYaml unmarshals BgpV4RouteRange from YAML text + FromYaml(value string) error + // FromJson unmarshals BgpV4RouteRange from JSON text + FromJson(value string) error + // Validate validates BgpV4RouteRange + Validate() error + // A stringer function + String() string + // Clones the object + Clone() (BgpV4RouteRange, error) + validateToAndFrom() error + validateObj(vObj *validation, set_default bool) + setDefault() + // Addresses returns BgpV4RouteRangeV4RouteAddressIterIter, set in BgpV4RouteRange + Addresses() BgpV4RouteRangeV4RouteAddressIter + // NextHopMode returns BgpV4RouteRangeNextHopModeEnum, set in BgpV4RouteRange + NextHopMode() BgpV4RouteRangeNextHopModeEnum + // SetNextHopMode assigns BgpV4RouteRangeNextHopModeEnum provided by user to BgpV4RouteRange + SetNextHopMode(value BgpV4RouteRangeNextHopModeEnum) BgpV4RouteRange + // HasNextHopMode checks if NextHopMode has been set in BgpV4RouteRange + HasNextHopMode() bool + // NextHopAddressType returns BgpV4RouteRangeNextHopAddressTypeEnum, set in BgpV4RouteRange + NextHopAddressType() BgpV4RouteRangeNextHopAddressTypeEnum + // SetNextHopAddressType assigns BgpV4RouteRangeNextHopAddressTypeEnum provided by user to BgpV4RouteRange + SetNextHopAddressType(value BgpV4RouteRangeNextHopAddressTypeEnum) BgpV4RouteRange + // HasNextHopAddressType checks if NextHopAddressType has been set in BgpV4RouteRange + HasNextHopAddressType() bool + // NextHopIpv4Address returns string, set in BgpV4RouteRange. + NextHopIpv4Address() string + // SetNextHopIpv4Address assigns string provided by user to BgpV4RouteRange + SetNextHopIpv4Address(value string) BgpV4RouteRange + // HasNextHopIpv4Address checks if NextHopIpv4Address has been set in BgpV4RouteRange + HasNextHopIpv4Address() bool + // NextHopIpv6Address returns string, set in BgpV4RouteRange. + NextHopIpv6Address() string + // SetNextHopIpv6Address assigns string provided by user to BgpV4RouteRange + SetNextHopIpv6Address(value string) BgpV4RouteRange + // HasNextHopIpv6Address checks if NextHopIpv6Address has been set in BgpV4RouteRange + HasNextHopIpv6Address() bool + // Advanced returns BgpRouteAdvanced, set in BgpV4RouteRange. + // BgpRouteAdvanced is configuration for advanced BGP route range settings. + Advanced() BgpRouteAdvanced + // SetAdvanced assigns BgpRouteAdvanced provided by user to BgpV4RouteRange. + // BgpRouteAdvanced is configuration for advanced BGP route range settings. + SetAdvanced(value BgpRouteAdvanced) BgpV4RouteRange + // HasAdvanced checks if Advanced has been set in BgpV4RouteRange + HasAdvanced() bool + // Communities returns BgpV4RouteRangeBgpCommunityIterIter, set in BgpV4RouteRange + Communities() BgpV4RouteRangeBgpCommunityIter + // AsPath returns BgpAsPath, set in BgpV4RouteRange. + // BgpAsPath is this attribute identifies the autonomous systems through which routing information carried in this UPDATE message has passed. This contains the configuration of how to include the Local AS in the AS path attribute of the MP REACH NLRI. It also contains optional configuration of additional AS Path Segments that can be included in the AS Path attribute. The AS Path consists of a Set or Sequence of Autonomous Systems (AS) numbers that a routing information passes through to reach the destination. + AsPath() BgpAsPath + // SetAsPath assigns BgpAsPath provided by user to BgpV4RouteRange. + // BgpAsPath is this attribute identifies the autonomous systems through which routing information carried in this UPDATE message has passed. This contains the configuration of how to include the Local AS in the AS path attribute of the MP REACH NLRI. It also contains optional configuration of additional AS Path Segments that can be included in the AS Path attribute. The AS Path consists of a Set or Sequence of Autonomous Systems (AS) numbers that a routing information passes through to reach the destination. + SetAsPath(value BgpAsPath) BgpV4RouteRange + // HasAsPath checks if AsPath has been set in BgpV4RouteRange + HasAsPath() bool + // AddPath returns BgpAddPath, set in BgpV4RouteRange. + // BgpAddPath is the BGP Additional Paths feature is a BGP extension that allows the advertisement of multiple paths for the same prefix without the new paths implicitly replacing any previous paths. + AddPath() BgpAddPath + // SetAddPath assigns BgpAddPath provided by user to BgpV4RouteRange. + // BgpAddPath is the BGP Additional Paths feature is a BGP extension that allows the advertisement of multiple paths for the same prefix without the new paths implicitly replacing any previous paths. + SetAddPath(value BgpAddPath) BgpV4RouteRange + // HasAddPath checks if AddPath has been set in BgpV4RouteRange + HasAddPath() bool + // Name returns string, set in BgpV4RouteRange. + Name() string + // SetName assigns string provided by user to BgpV4RouteRange + SetName(value string) BgpV4RouteRange + // ExtCommunities returns BgpV4RouteRangeBgpExtCommunityIterIter, set in BgpV4RouteRange + ExtCommunities() BgpV4RouteRangeBgpExtCommunityIter + // ExtendedCommunities returns BgpV4RouteRangeBgpExtendedCommunityIterIter, set in BgpV4RouteRange + ExtendedCommunities() BgpV4RouteRangeBgpExtendedCommunityIter + setNil() +} + +// A list of group of IPv4 route addresses. +// Addresses returns a []V4RouteAddress +func (obj *bgpV4RouteRange) Addresses() BgpV4RouteRangeV4RouteAddressIter { + if len(obj.obj.Addresses) == 0 { + obj.obj.Addresses = []*otg.V4RouteAddress{} + } + if obj.addressesHolder == nil { + obj.addressesHolder = newBgpV4RouteRangeV4RouteAddressIter(&obj.obj.Addresses).setMsg(obj) + } + return obj.addressesHolder +} + +type bgpV4RouteRangeV4RouteAddressIter struct { + obj *bgpV4RouteRange + v4RouteAddressSlice []V4RouteAddress + fieldPtr *[]*otg.V4RouteAddress +} + +func newBgpV4RouteRangeV4RouteAddressIter(ptr *[]*otg.V4RouteAddress) BgpV4RouteRangeV4RouteAddressIter { + return &bgpV4RouteRangeV4RouteAddressIter{fieldPtr: ptr} +} + +type BgpV4RouteRangeV4RouteAddressIter interface { + setMsg(*bgpV4RouteRange) BgpV4RouteRangeV4RouteAddressIter + Items() []V4RouteAddress + Add() V4RouteAddress + Append(items ...V4RouteAddress) BgpV4RouteRangeV4RouteAddressIter + Set(index int, newObj V4RouteAddress) BgpV4RouteRangeV4RouteAddressIter + Clear() BgpV4RouteRangeV4RouteAddressIter + clearHolderSlice() BgpV4RouteRangeV4RouteAddressIter + appendHolderSlice(item V4RouteAddress) BgpV4RouteRangeV4RouteAddressIter +} + +func (obj *bgpV4RouteRangeV4RouteAddressIter) setMsg(msg *bgpV4RouteRange) BgpV4RouteRangeV4RouteAddressIter { + obj.clearHolderSlice() + for _, val := range *obj.fieldPtr { + obj.appendHolderSlice(&v4RouteAddress{obj: val}) + } + obj.obj = msg + return obj +} + +func (obj *bgpV4RouteRangeV4RouteAddressIter) Items() []V4RouteAddress { + return obj.v4RouteAddressSlice +} + +func (obj *bgpV4RouteRangeV4RouteAddressIter) Add() V4RouteAddress { + newObj := &otg.V4RouteAddress{} + *obj.fieldPtr = append(*obj.fieldPtr, newObj) + newLibObj := &v4RouteAddress{obj: newObj} + newLibObj.setDefault() + obj.v4RouteAddressSlice = append(obj.v4RouteAddressSlice, newLibObj) + return newLibObj +} + +func (obj *bgpV4RouteRangeV4RouteAddressIter) Append(items ...V4RouteAddress) BgpV4RouteRangeV4RouteAddressIter { + for _, item := range items { + newObj := item.Msg() + *obj.fieldPtr = append(*obj.fieldPtr, newObj) + obj.v4RouteAddressSlice = append(obj.v4RouteAddressSlice, item) + } + return obj +} + +func (obj *bgpV4RouteRangeV4RouteAddressIter) Set(index int, newObj V4RouteAddress) BgpV4RouteRangeV4RouteAddressIter { + (*obj.fieldPtr)[index] = newObj.Msg() + obj.v4RouteAddressSlice[index] = newObj + return obj +} +func (obj *bgpV4RouteRangeV4RouteAddressIter) Clear() BgpV4RouteRangeV4RouteAddressIter { + if len(*obj.fieldPtr) > 0 { + *obj.fieldPtr = []*otg.V4RouteAddress{} + obj.v4RouteAddressSlice = []V4RouteAddress{} + } + return obj +} +func (obj *bgpV4RouteRangeV4RouteAddressIter) clearHolderSlice() BgpV4RouteRangeV4RouteAddressIter { + if len(obj.v4RouteAddressSlice) > 0 { + obj.v4RouteAddressSlice = []V4RouteAddress{} + } + return obj +} +func (obj *bgpV4RouteRangeV4RouteAddressIter) appendHolderSlice(item V4RouteAddress) BgpV4RouteRangeV4RouteAddressIter { + obj.v4RouteAddressSlice = append(obj.v4RouteAddressSlice, item) + return obj +} + +type BgpV4RouteRangeNextHopModeEnum string + +// Enum of NextHopMode on BgpV4RouteRange +var BgpV4RouteRangeNextHopMode = struct { + LOCAL_IP BgpV4RouteRangeNextHopModeEnum + MANUAL BgpV4RouteRangeNextHopModeEnum +}{ + LOCAL_IP: BgpV4RouteRangeNextHopModeEnum("local_ip"), + MANUAL: BgpV4RouteRangeNextHopModeEnum("manual"), +} + +func (obj *bgpV4RouteRange) NextHopMode() BgpV4RouteRangeNextHopModeEnum { + return BgpV4RouteRangeNextHopModeEnum(obj.obj.NextHopMode.Enum().String()) +} + +// Specify the NextHop in MP REACH NLRI. The mode for setting the IP address of the NextHop in the MP REACH NLRI can be one of the following: +// Local IP: Automatically fills the Nexthop with the Local IP of the BGP +// peer. +// If BGP peer is of type IPv6, Nexthop Encoding capability should be enabled. +// Manual: Override the Nexthop with any arbitrary IPv4/IPv6 address. +// NextHopMode returns a string +func (obj *bgpV4RouteRange) HasNextHopMode() bool { + return obj.obj.NextHopMode != nil +} + +func (obj *bgpV4RouteRange) SetNextHopMode(value BgpV4RouteRangeNextHopModeEnum) BgpV4RouteRange { + intValue, ok := otg.BgpV4RouteRange_NextHopMode_Enum_value[string(value)] + if !ok { + obj.validationErrors = append(obj.validationErrors, fmt.Sprintf( + "%s is not a valid choice on BgpV4RouteRangeNextHopModeEnum", string(value))) + return obj + } + enumValue := otg.BgpV4RouteRange_NextHopMode_Enum(intValue) + obj.obj.NextHopMode = &enumValue + + return obj +} + +type BgpV4RouteRangeNextHopAddressTypeEnum string + +// Enum of NextHopAddressType on BgpV4RouteRange +var BgpV4RouteRangeNextHopAddressType = struct { + IPV4 BgpV4RouteRangeNextHopAddressTypeEnum + IPV6 BgpV4RouteRangeNextHopAddressTypeEnum +}{ + IPV4: BgpV4RouteRangeNextHopAddressTypeEnum("ipv4"), + IPV6: BgpV4RouteRangeNextHopAddressTypeEnum("ipv6"), +} + +func (obj *bgpV4RouteRange) NextHopAddressType() BgpV4RouteRangeNextHopAddressTypeEnum { + return BgpV4RouteRangeNextHopAddressTypeEnum(obj.obj.NextHopAddressType.Enum().String()) +} + +// If the Nexthop Mode is Manual, it sets the type of the NextHop IP address. +// NextHopAddressType returns a string +func (obj *bgpV4RouteRange) HasNextHopAddressType() bool { + return obj.obj.NextHopAddressType != nil +} + +func (obj *bgpV4RouteRange) SetNextHopAddressType(value BgpV4RouteRangeNextHopAddressTypeEnum) BgpV4RouteRange { + intValue, ok := otg.BgpV4RouteRange_NextHopAddressType_Enum_value[string(value)] + if !ok { + obj.validationErrors = append(obj.validationErrors, fmt.Sprintf( + "%s is not a valid choice on BgpV4RouteRangeNextHopAddressTypeEnum", string(value))) + return obj + } + enumValue := otg.BgpV4RouteRange_NextHopAddressType_Enum(intValue) + obj.obj.NextHopAddressType = &enumValue + + return obj +} + +// The IPv4 address of the next hop if the Nexthop Mode is manual and the Nexthop type is IPv4. If BGP peer is of type IPv6, Nexthop Encoding capability should be enabled. +// NextHopIpv4Address returns a string +func (obj *bgpV4RouteRange) NextHopIpv4Address() string { + + return *obj.obj.NextHopIpv4Address + +} + +// The IPv4 address of the next hop if the Nexthop Mode is manual and the Nexthop type is IPv4. If BGP peer is of type IPv6, Nexthop Encoding capability should be enabled. +// NextHopIpv4Address returns a string +func (obj *bgpV4RouteRange) HasNextHopIpv4Address() bool { + return obj.obj.NextHopIpv4Address != nil +} + +// The IPv4 address of the next hop if the Nexthop Mode is manual and the Nexthop type is IPv4. If BGP peer is of type IPv6, Nexthop Encoding capability should be enabled. +// SetNextHopIpv4Address sets the string value in the BgpV4RouteRange object +func (obj *bgpV4RouteRange) SetNextHopIpv4Address(value string) BgpV4RouteRange { + + obj.obj.NextHopIpv4Address = &value + return obj +} + +// The IPv6 address of the next hop if the Nexthop Mode is manual and the Nexthop type is IPv6. +// NextHopIpv6Address returns a string +func (obj *bgpV4RouteRange) NextHopIpv6Address() string { + + return *obj.obj.NextHopIpv6Address + +} + +// The IPv6 address of the next hop if the Nexthop Mode is manual and the Nexthop type is IPv6. +// NextHopIpv6Address returns a string +func (obj *bgpV4RouteRange) HasNextHopIpv6Address() bool { + return obj.obj.NextHopIpv6Address != nil +} + +// The IPv6 address of the next hop if the Nexthop Mode is manual and the Nexthop type is IPv6. +// SetNextHopIpv6Address sets the string value in the BgpV4RouteRange object +func (obj *bgpV4RouteRange) SetNextHopIpv6Address(value string) BgpV4RouteRange { + + obj.obj.NextHopIpv6Address = &value + return obj +} + +// description is TBD +// Advanced returns a BgpRouteAdvanced +func (obj *bgpV4RouteRange) Advanced() BgpRouteAdvanced { + if obj.obj.Advanced == nil { + obj.obj.Advanced = NewBgpRouteAdvanced().Msg() + } + if obj.advancedHolder == nil { + obj.advancedHolder = &bgpRouteAdvanced{obj: obj.obj.Advanced} + } + return obj.advancedHolder +} + +// description is TBD +// Advanced returns a BgpRouteAdvanced +func (obj *bgpV4RouteRange) HasAdvanced() bool { + return obj.obj.Advanced != nil +} + +// description is TBD +// SetAdvanced sets the BgpRouteAdvanced value in the BgpV4RouteRange object +func (obj *bgpV4RouteRange) SetAdvanced(value BgpRouteAdvanced) BgpV4RouteRange { + + obj.advancedHolder = nil + obj.obj.Advanced = value.Msg() + + return obj +} + +// Optional community settings. +// Communities returns a []BgpCommunity +func (obj *bgpV4RouteRange) Communities() BgpV4RouteRangeBgpCommunityIter { + if len(obj.obj.Communities) == 0 { + obj.obj.Communities = []*otg.BgpCommunity{} + } + if obj.communitiesHolder == nil { + obj.communitiesHolder = newBgpV4RouteRangeBgpCommunityIter(&obj.obj.Communities).setMsg(obj) + } + return obj.communitiesHolder +} + +type bgpV4RouteRangeBgpCommunityIter struct { + obj *bgpV4RouteRange + bgpCommunitySlice []BgpCommunity + fieldPtr *[]*otg.BgpCommunity +} + +func newBgpV4RouteRangeBgpCommunityIter(ptr *[]*otg.BgpCommunity) BgpV4RouteRangeBgpCommunityIter { + return &bgpV4RouteRangeBgpCommunityIter{fieldPtr: ptr} +} + +type BgpV4RouteRangeBgpCommunityIter interface { + setMsg(*bgpV4RouteRange) BgpV4RouteRangeBgpCommunityIter + Items() []BgpCommunity + Add() BgpCommunity + Append(items ...BgpCommunity) BgpV4RouteRangeBgpCommunityIter + Set(index int, newObj BgpCommunity) BgpV4RouteRangeBgpCommunityIter + Clear() BgpV4RouteRangeBgpCommunityIter + clearHolderSlice() BgpV4RouteRangeBgpCommunityIter + appendHolderSlice(item BgpCommunity) BgpV4RouteRangeBgpCommunityIter +} + +func (obj *bgpV4RouteRangeBgpCommunityIter) setMsg(msg *bgpV4RouteRange) BgpV4RouteRangeBgpCommunityIter { + obj.clearHolderSlice() + for _, val := range *obj.fieldPtr { + obj.appendHolderSlice(&bgpCommunity{obj: val}) + } + obj.obj = msg + return obj +} + +func (obj *bgpV4RouteRangeBgpCommunityIter) Items() []BgpCommunity { + return obj.bgpCommunitySlice +} + +func (obj *bgpV4RouteRangeBgpCommunityIter) Add() BgpCommunity { + newObj := &otg.BgpCommunity{} + *obj.fieldPtr = append(*obj.fieldPtr, newObj) + newLibObj := &bgpCommunity{obj: newObj} + newLibObj.setDefault() + obj.bgpCommunitySlice = append(obj.bgpCommunitySlice, newLibObj) + return newLibObj +} + +func (obj *bgpV4RouteRangeBgpCommunityIter) Append(items ...BgpCommunity) BgpV4RouteRangeBgpCommunityIter { + for _, item := range items { + newObj := item.Msg() + *obj.fieldPtr = append(*obj.fieldPtr, newObj) + obj.bgpCommunitySlice = append(obj.bgpCommunitySlice, item) + } + return obj +} + +func (obj *bgpV4RouteRangeBgpCommunityIter) Set(index int, newObj BgpCommunity) BgpV4RouteRangeBgpCommunityIter { + (*obj.fieldPtr)[index] = newObj.Msg() + obj.bgpCommunitySlice[index] = newObj + return obj +} +func (obj *bgpV4RouteRangeBgpCommunityIter) Clear() BgpV4RouteRangeBgpCommunityIter { + if len(*obj.fieldPtr) > 0 { + *obj.fieldPtr = []*otg.BgpCommunity{} + obj.bgpCommunitySlice = []BgpCommunity{} + } + return obj +} +func (obj *bgpV4RouteRangeBgpCommunityIter) clearHolderSlice() BgpV4RouteRangeBgpCommunityIter { + if len(obj.bgpCommunitySlice) > 0 { + obj.bgpCommunitySlice = []BgpCommunity{} + } + return obj +} +func (obj *bgpV4RouteRangeBgpCommunityIter) appendHolderSlice(item BgpCommunity) BgpV4RouteRangeBgpCommunityIter { + obj.bgpCommunitySlice = append(obj.bgpCommunitySlice, item) + return obj +} + +// description is TBD +// AsPath returns a BgpAsPath +func (obj *bgpV4RouteRange) AsPath() BgpAsPath { + if obj.obj.AsPath == nil { + obj.obj.AsPath = NewBgpAsPath().Msg() + } + if obj.asPathHolder == nil { + obj.asPathHolder = &bgpAsPath{obj: obj.obj.AsPath} + } + return obj.asPathHolder +} + +// description is TBD +// AsPath returns a BgpAsPath +func (obj *bgpV4RouteRange) HasAsPath() bool { + return obj.obj.AsPath != nil +} + +// description is TBD +// SetAsPath sets the BgpAsPath value in the BgpV4RouteRange object +func (obj *bgpV4RouteRange) SetAsPath(value BgpAsPath) BgpV4RouteRange { + + obj.asPathHolder = nil + obj.obj.AsPath = value.Msg() + + return obj +} + +// description is TBD +// AddPath returns a BgpAddPath +func (obj *bgpV4RouteRange) AddPath() BgpAddPath { + if obj.obj.AddPath == nil { + obj.obj.AddPath = NewBgpAddPath().Msg() + } + if obj.addPathHolder == nil { + obj.addPathHolder = &bgpAddPath{obj: obj.obj.AddPath} + } + return obj.addPathHolder +} + +// description is TBD +// AddPath returns a BgpAddPath +func (obj *bgpV4RouteRange) HasAddPath() bool { + return obj.obj.AddPath != nil +} + +// description is TBD +// SetAddPath sets the BgpAddPath value in the BgpV4RouteRange object +func (obj *bgpV4RouteRange) SetAddPath(value BgpAddPath) BgpV4RouteRange { + + obj.addPathHolder = nil + obj.obj.AddPath = value.Msg() + + return obj +} + +// Globally unique name of an object. It also serves as the primary key for arrays of objects. +// Name returns a string +func (obj *bgpV4RouteRange) Name() string { + + return *obj.obj.Name + +} + +// Globally unique name of an object. It also serves as the primary key for arrays of objects. +// SetName sets the string value in the BgpV4RouteRange object +func (obj *bgpV4RouteRange) SetName(value string) BgpV4RouteRange { + + obj.obj.Name = &value + return obj +} + +// Deprecated: This property is deprecated in favor of property extended_communities +// +// Optional Extended Community settings. The Extended Communities Attribute is a transitive optional BGP attribute, with the Type Code 16. Community and Extended Communities attributes are utilized to trigger routing decisions, such as acceptance, rejection, preference, or redistribution. An extended community is an 8-Bytes value. It is divided into two main parts. The first 2 Bytes of the community encode a type and sub-type fields and the last 6 Bytes carry a unique set of data in a format defined by the type and sub-type field. Extended communities provide a larger range for grouping or categorizing communities. When type is administrator_as_2octet or administrator_as_4octet, the valid sub types are route target and origin. The valid value for administrator_as_2octet and administrator_as_4octet type is either two byte AS followed by four byte local administrator id or four byte AS followed by two byte local administrator id. When type is administrator_ipv4_address the valid sub types are route target and origin. The valid value for administrator_ipv4_address is a four byte IPv4 address followed by a two byte local administrator id. When type is opaque, valid sub types are color and encapsulation. When sub type is color, first two bytes of the value field contain flags and last four bytes contains the value of the color. When sub type is encapsulation the first four bytes of value field are reserved and last two bytes carries the tunnel type from IANA's "ETHER TYPES" registry e.g IPv4 (protocol type = 0x0800), IPv6 (protocol type = 0x86dd), and MPLS (protocol type = 0x8847). When type is administrator_as_2octet_link_bandwidth the valid sub type is extended_bandwidth. The first two bytes of the value field contains the AS number and the last four bytes contains the bandwidth in IEEE floating point format. When type is evpn the valid subtype is mac_address. In the value field the low-order bit of the first byte(Flags) is defined as the "Sticky/static" flag and may be set to 1, indicating the MAC address is static and cannot move. The second byte is reserved and the last four bytes contain the sequence number which is used to ensure that PEs retain the correct MAC/IP Advertisement route when multiple updates occur for the same MAC address. Note evpn type is defined mainly for use with evpn route updates and not for IPv4 and IPv6 route updates. +// ExtCommunities returns a []BgpExtCommunity +func (obj *bgpV4RouteRange) ExtCommunities() BgpV4RouteRangeBgpExtCommunityIter { + if len(obj.obj.ExtCommunities) == 0 { + obj.obj.ExtCommunities = []*otg.BgpExtCommunity{} + } + if obj.extCommunitiesHolder == nil { + obj.extCommunitiesHolder = newBgpV4RouteRangeBgpExtCommunityIter(&obj.obj.ExtCommunities).setMsg(obj) + } + return obj.extCommunitiesHolder +} + +type bgpV4RouteRangeBgpExtCommunityIter struct { + obj *bgpV4RouteRange + bgpExtCommunitySlice []BgpExtCommunity + fieldPtr *[]*otg.BgpExtCommunity +} + +func newBgpV4RouteRangeBgpExtCommunityIter(ptr *[]*otg.BgpExtCommunity) BgpV4RouteRangeBgpExtCommunityIter { + return &bgpV4RouteRangeBgpExtCommunityIter{fieldPtr: ptr} +} + +type BgpV4RouteRangeBgpExtCommunityIter interface { + setMsg(*bgpV4RouteRange) BgpV4RouteRangeBgpExtCommunityIter + Items() []BgpExtCommunity + Add() BgpExtCommunity + Append(items ...BgpExtCommunity) BgpV4RouteRangeBgpExtCommunityIter + Set(index int, newObj BgpExtCommunity) BgpV4RouteRangeBgpExtCommunityIter + Clear() BgpV4RouteRangeBgpExtCommunityIter + clearHolderSlice() BgpV4RouteRangeBgpExtCommunityIter + appendHolderSlice(item BgpExtCommunity) BgpV4RouteRangeBgpExtCommunityIter +} + +func (obj *bgpV4RouteRangeBgpExtCommunityIter) setMsg(msg *bgpV4RouteRange) BgpV4RouteRangeBgpExtCommunityIter { + obj.clearHolderSlice() + for _, val := range *obj.fieldPtr { + obj.appendHolderSlice(&bgpExtCommunity{obj: val}) + } + obj.obj = msg + return obj +} + +func (obj *bgpV4RouteRangeBgpExtCommunityIter) Items() []BgpExtCommunity { + return obj.bgpExtCommunitySlice +} + +func (obj *bgpV4RouteRangeBgpExtCommunityIter) Add() BgpExtCommunity { + newObj := &otg.BgpExtCommunity{} + *obj.fieldPtr = append(*obj.fieldPtr, newObj) + newLibObj := &bgpExtCommunity{obj: newObj} + newLibObj.setDefault() + obj.bgpExtCommunitySlice = append(obj.bgpExtCommunitySlice, newLibObj) + return newLibObj +} + +func (obj *bgpV4RouteRangeBgpExtCommunityIter) Append(items ...BgpExtCommunity) BgpV4RouteRangeBgpExtCommunityIter { + for _, item := range items { + newObj := item.Msg() + *obj.fieldPtr = append(*obj.fieldPtr, newObj) + obj.bgpExtCommunitySlice = append(obj.bgpExtCommunitySlice, item) + } + return obj +} + +func (obj *bgpV4RouteRangeBgpExtCommunityIter) Set(index int, newObj BgpExtCommunity) BgpV4RouteRangeBgpExtCommunityIter { + (*obj.fieldPtr)[index] = newObj.Msg() + obj.bgpExtCommunitySlice[index] = newObj + return obj +} +func (obj *bgpV4RouteRangeBgpExtCommunityIter) Clear() BgpV4RouteRangeBgpExtCommunityIter { + if len(*obj.fieldPtr) > 0 { + *obj.fieldPtr = []*otg.BgpExtCommunity{} + obj.bgpExtCommunitySlice = []BgpExtCommunity{} + } + return obj +} +func (obj *bgpV4RouteRangeBgpExtCommunityIter) clearHolderSlice() BgpV4RouteRangeBgpExtCommunityIter { + if len(obj.bgpExtCommunitySlice) > 0 { + obj.bgpExtCommunitySlice = []BgpExtCommunity{} + } + return obj +} +func (obj *bgpV4RouteRangeBgpExtCommunityIter) appendHolderSlice(item BgpExtCommunity) BgpV4RouteRangeBgpExtCommunityIter { + obj.bgpExtCommunitySlice = append(obj.bgpExtCommunitySlice, item) + return obj +} + +// Optional Extended Community settings. The Extended Communities Attribute is a transitive optional BGP attribute, with the Type Code 16. Community and Extended Communities attributes are utilized to trigger routing decisions, such as acceptance, rejection, preference, or redistribution. An extended community is an eight byte value. It is divided into two main parts. The first two bytes of the community encode a type and sub-type fields and the last six bytes carry a unique set of data in a format defined by the type and sub-type field. Extended communities provide a larger range for grouping or categorizing communities. +// ExtendedCommunities returns a []BgpExtendedCommunity +func (obj *bgpV4RouteRange) ExtendedCommunities() BgpV4RouteRangeBgpExtendedCommunityIter { + if len(obj.obj.ExtendedCommunities) == 0 { + obj.obj.ExtendedCommunities = []*otg.BgpExtendedCommunity{} + } + if obj.extendedCommunitiesHolder == nil { + obj.extendedCommunitiesHolder = newBgpV4RouteRangeBgpExtendedCommunityIter(&obj.obj.ExtendedCommunities).setMsg(obj) + } + return obj.extendedCommunitiesHolder +} + +type bgpV4RouteRangeBgpExtendedCommunityIter struct { + obj *bgpV4RouteRange + bgpExtendedCommunitySlice []BgpExtendedCommunity + fieldPtr *[]*otg.BgpExtendedCommunity +} + +func newBgpV4RouteRangeBgpExtendedCommunityIter(ptr *[]*otg.BgpExtendedCommunity) BgpV4RouteRangeBgpExtendedCommunityIter { + return &bgpV4RouteRangeBgpExtendedCommunityIter{fieldPtr: ptr} +} + +type BgpV4RouteRangeBgpExtendedCommunityIter interface { + setMsg(*bgpV4RouteRange) BgpV4RouteRangeBgpExtendedCommunityIter + Items() []BgpExtendedCommunity + Add() BgpExtendedCommunity + Append(items ...BgpExtendedCommunity) BgpV4RouteRangeBgpExtendedCommunityIter + Set(index int, newObj BgpExtendedCommunity) BgpV4RouteRangeBgpExtendedCommunityIter + Clear() BgpV4RouteRangeBgpExtendedCommunityIter + clearHolderSlice() BgpV4RouteRangeBgpExtendedCommunityIter + appendHolderSlice(item BgpExtendedCommunity) BgpV4RouteRangeBgpExtendedCommunityIter +} + +func (obj *bgpV4RouteRangeBgpExtendedCommunityIter) setMsg(msg *bgpV4RouteRange) BgpV4RouteRangeBgpExtendedCommunityIter { + obj.clearHolderSlice() + for _, val := range *obj.fieldPtr { + obj.appendHolderSlice(&bgpExtendedCommunity{obj: val}) + } + obj.obj = msg + return obj +} + +func (obj *bgpV4RouteRangeBgpExtendedCommunityIter) Items() []BgpExtendedCommunity { + return obj.bgpExtendedCommunitySlice +} + +func (obj *bgpV4RouteRangeBgpExtendedCommunityIter) Add() BgpExtendedCommunity { + newObj := &otg.BgpExtendedCommunity{} + *obj.fieldPtr = append(*obj.fieldPtr, newObj) + newLibObj := &bgpExtendedCommunity{obj: newObj} + newLibObj.setDefault() + obj.bgpExtendedCommunitySlice = append(obj.bgpExtendedCommunitySlice, newLibObj) + return newLibObj +} + +func (obj *bgpV4RouteRangeBgpExtendedCommunityIter) Append(items ...BgpExtendedCommunity) BgpV4RouteRangeBgpExtendedCommunityIter { + for _, item := range items { + newObj := item.Msg() + *obj.fieldPtr = append(*obj.fieldPtr, newObj) + obj.bgpExtendedCommunitySlice = append(obj.bgpExtendedCommunitySlice, item) + } + return obj +} + +func (obj *bgpV4RouteRangeBgpExtendedCommunityIter) Set(index int, newObj BgpExtendedCommunity) BgpV4RouteRangeBgpExtendedCommunityIter { + (*obj.fieldPtr)[index] = newObj.Msg() + obj.bgpExtendedCommunitySlice[index] = newObj + return obj +} +func (obj *bgpV4RouteRangeBgpExtendedCommunityIter) Clear() BgpV4RouteRangeBgpExtendedCommunityIter { + if len(*obj.fieldPtr) > 0 { + *obj.fieldPtr = []*otg.BgpExtendedCommunity{} + obj.bgpExtendedCommunitySlice = []BgpExtendedCommunity{} + } + return obj +} +func (obj *bgpV4RouteRangeBgpExtendedCommunityIter) clearHolderSlice() BgpV4RouteRangeBgpExtendedCommunityIter { + if len(obj.bgpExtendedCommunitySlice) > 0 { + obj.bgpExtendedCommunitySlice = []BgpExtendedCommunity{} + } + return obj +} +func (obj *bgpV4RouteRangeBgpExtendedCommunityIter) appendHolderSlice(item BgpExtendedCommunity) BgpV4RouteRangeBgpExtendedCommunityIter { + obj.bgpExtendedCommunitySlice = append(obj.bgpExtendedCommunitySlice, item) + return obj +} + +func (obj *bgpV4RouteRange) validateObj(vObj *validation, set_default bool) { + if set_default { + obj.setDefault() + } + + if len(obj.obj.Addresses) != 0 { + + if set_default { + obj.Addresses().clearHolderSlice() + for _, item := range obj.obj.Addresses { + obj.Addresses().appendHolderSlice(&v4RouteAddress{obj: item}) + } + } + for _, item := range obj.Addresses().Items() { + item.validateObj(vObj, set_default) + } + + } + + if obj.obj.NextHopIpv4Address != nil { + + err := obj.validateIpv4(obj.NextHopIpv4Address()) + if err != nil { + vObj.validationErrors = append(vObj.validationErrors, fmt.Sprintf("%s %s", err.Error(), "on BgpV4RouteRange.NextHopIpv4Address")) + } + + } + + if obj.obj.NextHopIpv6Address != nil { + + err := obj.validateIpv6(obj.NextHopIpv6Address()) + if err != nil { + vObj.validationErrors = append(vObj.validationErrors, fmt.Sprintf("%s %s", err.Error(), "on BgpV4RouteRange.NextHopIpv6Address")) + } + + } + + if obj.obj.Advanced != nil { + + obj.Advanced().validateObj(vObj, set_default) + } + + if len(obj.obj.Communities) != 0 { + + if set_default { + obj.Communities().clearHolderSlice() + for _, item := range obj.obj.Communities { + obj.Communities().appendHolderSlice(&bgpCommunity{obj: item}) + } + } + for _, item := range obj.Communities().Items() { + item.validateObj(vObj, set_default) + } + + } + + if obj.obj.AsPath != nil { + + obj.AsPath().validateObj(vObj, set_default) + } + + if obj.obj.AddPath != nil { + + obj.AddPath().validateObj(vObj, set_default) + } + + // Name is required + if obj.obj.Name == nil { + vObj.validationErrors = append(vObj.validationErrors, "Name is required field on interface BgpV4RouteRange") + } + + if len(obj.obj.ExtCommunities) != 0 { + obj.addWarnings("ExtCommunities property in schema BgpV4RouteRange is deprecated, This property is deprecated in favor of property extended_communities") + + if set_default { + obj.ExtCommunities().clearHolderSlice() + for _, item := range obj.obj.ExtCommunities { + obj.ExtCommunities().appendHolderSlice(&bgpExtCommunity{obj: item}) + } + } + for _, item := range obj.ExtCommunities().Items() { + item.validateObj(vObj, set_default) + } + + } + + if len(obj.obj.ExtendedCommunities) != 0 { + + if set_default { + obj.ExtendedCommunities().clearHolderSlice() + for _, item := range obj.obj.ExtendedCommunities { + obj.ExtendedCommunities().appendHolderSlice(&bgpExtendedCommunity{obj: item}) + } + } + for _, item := range obj.ExtendedCommunities().Items() { + item.validateObj(vObj, set_default) + } + + } + +} + +func (obj *bgpV4RouteRange) setDefault() { + if obj.obj.NextHopMode == nil { + obj.SetNextHopMode(BgpV4RouteRangeNextHopMode.LOCAL_IP) + + } + if obj.obj.NextHopAddressType == nil { + obj.SetNextHopAddressType(BgpV4RouteRangeNextHopAddressType.IPV4) + + } + if obj.obj.NextHopIpv4Address == nil { + obj.SetNextHopIpv4Address("0.0.0.0") + } + if obj.obj.NextHopIpv6Address == nil { + obj.SetNextHopIpv6Address("::0") + } + +} + +// ***** BgpV6RouteRange ***** +type bgpV6RouteRange struct { + validation + obj *otg.BgpV6RouteRange + addressesHolder BgpV6RouteRangeV6RouteAddressIter + advancedHolder BgpRouteAdvanced + communitiesHolder BgpV6RouteRangeBgpCommunityIter + asPathHolder BgpAsPath + addPathHolder BgpAddPath + extCommunitiesHolder BgpV6RouteRangeBgpExtCommunityIter + extendedCommunitiesHolder BgpV6RouteRangeBgpExtendedCommunityIter +} + +func NewBgpV6RouteRange() BgpV6RouteRange { + obj := bgpV6RouteRange{obj: &otg.BgpV6RouteRange{}} + obj.setDefault() + return &obj +} + +func (obj *bgpV6RouteRange) Msg() *otg.BgpV6RouteRange { + return obj.obj +} + +func (obj *bgpV6RouteRange) SetMsg(msg *otg.BgpV6RouteRange) BgpV6RouteRange { + obj.setNil() + proto.Merge(obj.obj, msg) + return obj +} + +func (obj *bgpV6RouteRange) ToProto() (*otg.BgpV6RouteRange, error) { + err := obj.validateToAndFrom() + if err != nil { + return nil, err + } + return obj.Msg(), nil +} + +func (obj *bgpV6RouteRange) FromProto(msg *otg.BgpV6RouteRange) (BgpV6RouteRange, error) { + newObj := obj.SetMsg(msg) + err := newObj.validateToAndFrom() + if err != nil { + return nil, err + } + return newObj, nil +} + +func (obj *bgpV6RouteRange) ToPbText() (string, error) { + vErr := obj.validateToAndFrom() + if vErr != nil { + return "", vErr + } + protoMarshal, err := proto.Marshal(obj.Msg()) + if err != nil { + return "", err + } + return string(protoMarshal), nil +} + +func (obj *bgpV6RouteRange) FromPbText(value string) error { + retObj := proto.Unmarshal([]byte(value), obj.Msg()) + if retObj != nil { + return retObj + } + obj.setNil() + vErr := obj.validateToAndFrom() + if vErr != nil { + return vErr + } + return retObj +} + +func (obj *bgpV6RouteRange) ToYaml() (string, error) { + vErr := obj.validateToAndFrom() + if vErr != nil { + return "", vErr + } + opts := protojson.MarshalOptions{ + UseProtoNames: true, + AllowPartial: true, + EmitUnpopulated: false, + } + data, err := opts.Marshal(obj.Msg()) + if err != nil { + return "", err + } + data, err = yaml.JSONToYAML(data) + if err != nil { + return "", err + } + return string(data), nil +} + +func (obj *bgpV6RouteRange) FromYaml(value string) error { + if value == "" { + value = "{}" + } + data, err := yaml.YAMLToJSON([]byte(value)) + if err != nil { + return err + } + opts := protojson.UnmarshalOptions{ + AllowPartial: true, + DiscardUnknown: false, + } + uError := opts.Unmarshal([]byte(data), obj.Msg()) + if uError != nil { + return fmt.Errorf("unmarshal error %s", strings.Replace( + uError.Error(), "\u00a0", " ", -1)[7:]) + } + obj.setNil() + vErr := obj.validateToAndFrom() + if vErr != nil { + return vErr + } + return nil +} + +func (obj *bgpV6RouteRange) ToJson() (string, error) { + vErr := obj.validateToAndFrom() + if vErr != nil { + return "", vErr + } + opts := protojson.MarshalOptions{ + UseProtoNames: true, + AllowPartial: true, + EmitUnpopulated: false, + Indent: " ", + } + data, err := opts.Marshal(obj.Msg()) + if err != nil { + return "", err + } + return string(data), nil +} + +func (obj *bgpV6RouteRange) FromJson(value string) error { + opts := protojson.UnmarshalOptions{ + AllowPartial: true, + DiscardUnknown: false, + } + if value == "" { + value = "{}" + } + uError := opts.Unmarshal([]byte(value), obj.Msg()) + if uError != nil { + return fmt.Errorf("unmarshal error %s", strings.Replace( + uError.Error(), "\u00a0", " ", -1)[7:]) + } + obj.setNil() + err := obj.validateToAndFrom() + if err != nil { + return err + } + return nil +} + +func (obj *bgpV6RouteRange) validateToAndFrom() error { + // emptyVars() + obj.validateObj(&obj.validation, true) + return obj.validationResult() +} + +func (obj *bgpV6RouteRange) Validate() error { + // emptyVars() + obj.validateObj(&obj.validation, false) + return obj.validationResult() +} + +func (obj *bgpV6RouteRange) String() string { + str, err := obj.ToYaml() + if err != nil { + return err.Error() + } + return str +} + +func (obj *bgpV6RouteRange) Clone() (BgpV6RouteRange, error) { + vErr := obj.Validate() + if vErr != nil { + return nil, vErr + } + newObj := NewBgpV6RouteRange() + data, err := proto.Marshal(obj.Msg()) + if err != nil { + return nil, err + } + pbErr := proto.Unmarshal(data, newObj.Msg()) + if pbErr != nil { + return nil, pbErr + } + return newObj, nil +} + +func (obj *bgpV6RouteRange) setNil() { + obj.addressesHolder = nil + obj.advancedHolder = nil + obj.communitiesHolder = nil + obj.asPathHolder = nil + obj.addPathHolder = nil + obj.extCommunitiesHolder = nil + obj.extendedCommunitiesHolder = nil + obj.validationErrors = nil + obj.warnings = nil + obj.constraints = make(map[string]map[string]Constraints) +} + +// BgpV6RouteRange is emulated BGPv6 route range. +type BgpV6RouteRange interface { + Validation + // Msg marshals BgpV6RouteRange to protobuf object *otg.BgpV6RouteRange + // and doesn't set defaults + Msg() *otg.BgpV6RouteRange + // SetMsg unmarshals BgpV6RouteRange from protobuf object *otg.BgpV6RouteRange + // and doesn't set defaults + SetMsg(*otg.BgpV6RouteRange) BgpV6RouteRange + // ToProto marshals BgpV6RouteRange to protobuf object *otg.BgpV6RouteRange + ToProto() (*otg.BgpV6RouteRange, error) + // ToPbText marshals BgpV6RouteRange to protobuf text + ToPbText() (string, error) + // ToYaml marshals BgpV6RouteRange to YAML text + ToYaml() (string, error) + // ToJson marshals BgpV6RouteRange to JSON text + ToJson() (string, error) + // FromProto unmarshals BgpV6RouteRange from protobuf object *otg.BgpV6RouteRange + FromProto(msg *otg.BgpV6RouteRange) (BgpV6RouteRange, error) + // FromPbText unmarshals BgpV6RouteRange from protobuf text + FromPbText(value string) error + // FromYaml unmarshals BgpV6RouteRange from YAML text + FromYaml(value string) error + // FromJson unmarshals BgpV6RouteRange from JSON text + FromJson(value string) error + // Validate validates BgpV6RouteRange + Validate() error + // A stringer function + String() string + // Clones the object + Clone() (BgpV6RouteRange, error) + validateToAndFrom() error + validateObj(vObj *validation, set_default bool) + setDefault() + // Addresses returns BgpV6RouteRangeV6RouteAddressIterIter, set in BgpV6RouteRange + Addresses() BgpV6RouteRangeV6RouteAddressIter + // NextHopMode returns BgpV6RouteRangeNextHopModeEnum, set in BgpV6RouteRange + NextHopMode() BgpV6RouteRangeNextHopModeEnum + // SetNextHopMode assigns BgpV6RouteRangeNextHopModeEnum provided by user to BgpV6RouteRange + SetNextHopMode(value BgpV6RouteRangeNextHopModeEnum) BgpV6RouteRange + // HasNextHopMode checks if NextHopMode has been set in BgpV6RouteRange + HasNextHopMode() bool + // NextHopAddressType returns BgpV6RouteRangeNextHopAddressTypeEnum, set in BgpV6RouteRange + NextHopAddressType() BgpV6RouteRangeNextHopAddressTypeEnum + // SetNextHopAddressType assigns BgpV6RouteRangeNextHopAddressTypeEnum provided by user to BgpV6RouteRange + SetNextHopAddressType(value BgpV6RouteRangeNextHopAddressTypeEnum) BgpV6RouteRange + // HasNextHopAddressType checks if NextHopAddressType has been set in BgpV6RouteRange + HasNextHopAddressType() bool + // NextHopIpv4Address returns string, set in BgpV6RouteRange. + NextHopIpv4Address() string + // SetNextHopIpv4Address assigns string provided by user to BgpV6RouteRange + SetNextHopIpv4Address(value string) BgpV6RouteRange + // HasNextHopIpv4Address checks if NextHopIpv4Address has been set in BgpV6RouteRange + HasNextHopIpv4Address() bool + // NextHopIpv6Address returns string, set in BgpV6RouteRange. + NextHopIpv6Address() string + // SetNextHopIpv6Address assigns string provided by user to BgpV6RouteRange + SetNextHopIpv6Address(value string) BgpV6RouteRange + // HasNextHopIpv6Address checks if NextHopIpv6Address has been set in BgpV6RouteRange + HasNextHopIpv6Address() bool + // Advanced returns BgpRouteAdvanced, set in BgpV6RouteRange. + // BgpRouteAdvanced is configuration for advanced BGP route range settings. + Advanced() BgpRouteAdvanced + // SetAdvanced assigns BgpRouteAdvanced provided by user to BgpV6RouteRange. + // BgpRouteAdvanced is configuration for advanced BGP route range settings. + SetAdvanced(value BgpRouteAdvanced) BgpV6RouteRange + // HasAdvanced checks if Advanced has been set in BgpV6RouteRange + HasAdvanced() bool + // Communities returns BgpV6RouteRangeBgpCommunityIterIter, set in BgpV6RouteRange + Communities() BgpV6RouteRangeBgpCommunityIter + // AsPath returns BgpAsPath, set in BgpV6RouteRange. + // BgpAsPath is this attribute identifies the autonomous systems through which routing information carried in this UPDATE message has passed. This contains the configuration of how to include the Local AS in the AS path attribute of the MP REACH NLRI. It also contains optional configuration of additional AS Path Segments that can be included in the AS Path attribute. The AS Path consists of a Set or Sequence of Autonomous Systems (AS) numbers that a routing information passes through to reach the destination. + AsPath() BgpAsPath + // SetAsPath assigns BgpAsPath provided by user to BgpV6RouteRange. + // BgpAsPath is this attribute identifies the autonomous systems through which routing information carried in this UPDATE message has passed. This contains the configuration of how to include the Local AS in the AS path attribute of the MP REACH NLRI. It also contains optional configuration of additional AS Path Segments that can be included in the AS Path attribute. The AS Path consists of a Set or Sequence of Autonomous Systems (AS) numbers that a routing information passes through to reach the destination. + SetAsPath(value BgpAsPath) BgpV6RouteRange + // HasAsPath checks if AsPath has been set in BgpV6RouteRange + HasAsPath() bool + // AddPath returns BgpAddPath, set in BgpV6RouteRange. + // BgpAddPath is the BGP Additional Paths feature is a BGP extension that allows the advertisement of multiple paths for the same prefix without the new paths implicitly replacing any previous paths. + AddPath() BgpAddPath + // SetAddPath assigns BgpAddPath provided by user to BgpV6RouteRange. + // BgpAddPath is the BGP Additional Paths feature is a BGP extension that allows the advertisement of multiple paths for the same prefix without the new paths implicitly replacing any previous paths. + SetAddPath(value BgpAddPath) BgpV6RouteRange + // HasAddPath checks if AddPath has been set in BgpV6RouteRange + HasAddPath() bool + // Name returns string, set in BgpV6RouteRange. + Name() string + // SetName assigns string provided by user to BgpV6RouteRange + SetName(value string) BgpV6RouteRange + // ExtCommunities returns BgpV6RouteRangeBgpExtCommunityIterIter, set in BgpV6RouteRange + ExtCommunities() BgpV6RouteRangeBgpExtCommunityIter + // ExtendedCommunities returns BgpV6RouteRangeBgpExtendedCommunityIterIter, set in BgpV6RouteRange + ExtendedCommunities() BgpV6RouteRangeBgpExtendedCommunityIter + setNil() +} + +// A list of group of IPv6 route addresses. +// Addresses returns a []V6RouteAddress +func (obj *bgpV6RouteRange) Addresses() BgpV6RouteRangeV6RouteAddressIter { + if len(obj.obj.Addresses) == 0 { + obj.obj.Addresses = []*otg.V6RouteAddress{} + } + if obj.addressesHolder == nil { + obj.addressesHolder = newBgpV6RouteRangeV6RouteAddressIter(&obj.obj.Addresses).setMsg(obj) + } + return obj.addressesHolder +} + +type bgpV6RouteRangeV6RouteAddressIter struct { + obj *bgpV6RouteRange + v6RouteAddressSlice []V6RouteAddress + fieldPtr *[]*otg.V6RouteAddress +} + +func newBgpV6RouteRangeV6RouteAddressIter(ptr *[]*otg.V6RouteAddress) BgpV6RouteRangeV6RouteAddressIter { + return &bgpV6RouteRangeV6RouteAddressIter{fieldPtr: ptr} +} + +type BgpV6RouteRangeV6RouteAddressIter interface { + setMsg(*bgpV6RouteRange) BgpV6RouteRangeV6RouteAddressIter + Items() []V6RouteAddress + Add() V6RouteAddress + Append(items ...V6RouteAddress) BgpV6RouteRangeV6RouteAddressIter + Set(index int, newObj V6RouteAddress) BgpV6RouteRangeV6RouteAddressIter + Clear() BgpV6RouteRangeV6RouteAddressIter + clearHolderSlice() BgpV6RouteRangeV6RouteAddressIter + appendHolderSlice(item V6RouteAddress) BgpV6RouteRangeV6RouteAddressIter +} + +func (obj *bgpV6RouteRangeV6RouteAddressIter) setMsg(msg *bgpV6RouteRange) BgpV6RouteRangeV6RouteAddressIter { + obj.clearHolderSlice() + for _, val := range *obj.fieldPtr { + obj.appendHolderSlice(&v6RouteAddress{obj: val}) + } + obj.obj = msg + return obj +} + +func (obj *bgpV6RouteRangeV6RouteAddressIter) Items() []V6RouteAddress { + return obj.v6RouteAddressSlice +} + +func (obj *bgpV6RouteRangeV6RouteAddressIter) Add() V6RouteAddress { + newObj := &otg.V6RouteAddress{} + *obj.fieldPtr = append(*obj.fieldPtr, newObj) + newLibObj := &v6RouteAddress{obj: newObj} + newLibObj.setDefault() + obj.v6RouteAddressSlice = append(obj.v6RouteAddressSlice, newLibObj) + return newLibObj +} + +func (obj *bgpV6RouteRangeV6RouteAddressIter) Append(items ...V6RouteAddress) BgpV6RouteRangeV6RouteAddressIter { + for _, item := range items { + newObj := item.Msg() + *obj.fieldPtr = append(*obj.fieldPtr, newObj) + obj.v6RouteAddressSlice = append(obj.v6RouteAddressSlice, item) + } + return obj +} + +func (obj *bgpV6RouteRangeV6RouteAddressIter) Set(index int, newObj V6RouteAddress) BgpV6RouteRangeV6RouteAddressIter { + (*obj.fieldPtr)[index] = newObj.Msg() + obj.v6RouteAddressSlice[index] = newObj + return obj +} +func (obj *bgpV6RouteRangeV6RouteAddressIter) Clear() BgpV6RouteRangeV6RouteAddressIter { + if len(*obj.fieldPtr) > 0 { + *obj.fieldPtr = []*otg.V6RouteAddress{} + obj.v6RouteAddressSlice = []V6RouteAddress{} + } + return obj +} +func (obj *bgpV6RouteRangeV6RouteAddressIter) clearHolderSlice() BgpV6RouteRangeV6RouteAddressIter { + if len(obj.v6RouteAddressSlice) > 0 { + obj.v6RouteAddressSlice = []V6RouteAddress{} + } + return obj +} +func (obj *bgpV6RouteRangeV6RouteAddressIter) appendHolderSlice(item V6RouteAddress) BgpV6RouteRangeV6RouteAddressIter { + obj.v6RouteAddressSlice = append(obj.v6RouteAddressSlice, item) + return obj +} + +type BgpV6RouteRangeNextHopModeEnum string + +// Enum of NextHopMode on BgpV6RouteRange +var BgpV6RouteRangeNextHopMode = struct { + LOCAL_IP BgpV6RouteRangeNextHopModeEnum + MANUAL BgpV6RouteRangeNextHopModeEnum +}{ + LOCAL_IP: BgpV6RouteRangeNextHopModeEnum("local_ip"), + MANUAL: BgpV6RouteRangeNextHopModeEnum("manual"), +} + +func (obj *bgpV6RouteRange) NextHopMode() BgpV6RouteRangeNextHopModeEnum { + return BgpV6RouteRangeNextHopModeEnum(obj.obj.NextHopMode.Enum().String()) +} + +// Specify the NextHop in MP REACH NLRI. The mode for setting the IP address of the NextHop in the MP REACH NLRI can be one of the following: +// Local IP: Automatically fills the Nexthop with the Local IP of the BGP +// peer. +// If BGP peer is of type IPv6, Nexthop Encoding capability should be enabled. +// Manual: Override the Nexthop with any arbitrary IPv4/IPv6 address. +// NextHopMode returns a string +func (obj *bgpV6RouteRange) HasNextHopMode() bool { + return obj.obj.NextHopMode != nil +} + +func (obj *bgpV6RouteRange) SetNextHopMode(value BgpV6RouteRangeNextHopModeEnum) BgpV6RouteRange { + intValue, ok := otg.BgpV6RouteRange_NextHopMode_Enum_value[string(value)] + if !ok { + obj.validationErrors = append(obj.validationErrors, fmt.Sprintf( + "%s is not a valid choice on BgpV6RouteRangeNextHopModeEnum", string(value))) + return obj + } + enumValue := otg.BgpV6RouteRange_NextHopMode_Enum(intValue) + obj.obj.NextHopMode = &enumValue + + return obj +} + +type BgpV6RouteRangeNextHopAddressTypeEnum string + +// Enum of NextHopAddressType on BgpV6RouteRange +var BgpV6RouteRangeNextHopAddressType = struct { + IPV4 BgpV6RouteRangeNextHopAddressTypeEnum + IPV6 BgpV6RouteRangeNextHopAddressTypeEnum +}{ + IPV4: BgpV6RouteRangeNextHopAddressTypeEnum("ipv4"), + IPV6: BgpV6RouteRangeNextHopAddressTypeEnum("ipv6"), +} + +func (obj *bgpV6RouteRange) NextHopAddressType() BgpV6RouteRangeNextHopAddressTypeEnum { + return BgpV6RouteRangeNextHopAddressTypeEnum(obj.obj.NextHopAddressType.Enum().String()) +} + +// If the Nexthop Mode is Manual, it sets the type of the NextHop IP address. +// NextHopAddressType returns a string +func (obj *bgpV6RouteRange) HasNextHopAddressType() bool { + return obj.obj.NextHopAddressType != nil +} + +func (obj *bgpV6RouteRange) SetNextHopAddressType(value BgpV6RouteRangeNextHopAddressTypeEnum) BgpV6RouteRange { + intValue, ok := otg.BgpV6RouteRange_NextHopAddressType_Enum_value[string(value)] + if !ok { + obj.validationErrors = append(obj.validationErrors, fmt.Sprintf( + "%s is not a valid choice on BgpV6RouteRangeNextHopAddressTypeEnum", string(value))) + return obj + } + enumValue := otg.BgpV6RouteRange_NextHopAddressType_Enum(intValue) + obj.obj.NextHopAddressType = &enumValue + + return obj +} + +// The IPv4 address of the next hop if the Nexthop Mode is manual and the Nexthop type is IPv4. If BGP peer is of type IPv6, Nexthop Encoding capability should be enabled. +// NextHopIpv4Address returns a string +func (obj *bgpV6RouteRange) NextHopIpv4Address() string { + + return *obj.obj.NextHopIpv4Address + +} + +// The IPv4 address of the next hop if the Nexthop Mode is manual and the Nexthop type is IPv4. If BGP peer is of type IPv6, Nexthop Encoding capability should be enabled. +// NextHopIpv4Address returns a string +func (obj *bgpV6RouteRange) HasNextHopIpv4Address() bool { + return obj.obj.NextHopIpv4Address != nil +} + +// The IPv4 address of the next hop if the Nexthop Mode is manual and the Nexthop type is IPv4. If BGP peer is of type IPv6, Nexthop Encoding capability should be enabled. +// SetNextHopIpv4Address sets the string value in the BgpV6RouteRange object +func (obj *bgpV6RouteRange) SetNextHopIpv4Address(value string) BgpV6RouteRange { + + obj.obj.NextHopIpv4Address = &value + return obj +} + +// The IPv6 address of the next hop if the Nexthop Mode is manual and the Nexthop type is IPv6. +// NextHopIpv6Address returns a string +func (obj *bgpV6RouteRange) NextHopIpv6Address() string { + + return *obj.obj.NextHopIpv6Address + +} + +// The IPv6 address of the next hop if the Nexthop Mode is manual and the Nexthop type is IPv6. +// NextHopIpv6Address returns a string +func (obj *bgpV6RouteRange) HasNextHopIpv6Address() bool { + return obj.obj.NextHopIpv6Address != nil +} + +// The IPv6 address of the next hop if the Nexthop Mode is manual and the Nexthop type is IPv6. +// SetNextHopIpv6Address sets the string value in the BgpV6RouteRange object +func (obj *bgpV6RouteRange) SetNextHopIpv6Address(value string) BgpV6RouteRange { + + obj.obj.NextHopIpv6Address = &value + return obj +} + +// description is TBD +// Advanced returns a BgpRouteAdvanced +func (obj *bgpV6RouteRange) Advanced() BgpRouteAdvanced { + if obj.obj.Advanced == nil { + obj.obj.Advanced = NewBgpRouteAdvanced().Msg() + } + if obj.advancedHolder == nil { + obj.advancedHolder = &bgpRouteAdvanced{obj: obj.obj.Advanced} + } + return obj.advancedHolder +} + +// description is TBD +// Advanced returns a BgpRouteAdvanced +func (obj *bgpV6RouteRange) HasAdvanced() bool { + return obj.obj.Advanced != nil +} + +// description is TBD +// SetAdvanced sets the BgpRouteAdvanced value in the BgpV6RouteRange object +func (obj *bgpV6RouteRange) SetAdvanced(value BgpRouteAdvanced) BgpV6RouteRange { + + obj.advancedHolder = nil + obj.obj.Advanced = value.Msg() + + return obj +} + +// Optional community settings. +// Communities returns a []BgpCommunity +func (obj *bgpV6RouteRange) Communities() BgpV6RouteRangeBgpCommunityIter { + if len(obj.obj.Communities) == 0 { + obj.obj.Communities = []*otg.BgpCommunity{} + } + if obj.communitiesHolder == nil { + obj.communitiesHolder = newBgpV6RouteRangeBgpCommunityIter(&obj.obj.Communities).setMsg(obj) + } + return obj.communitiesHolder +} + +type bgpV6RouteRangeBgpCommunityIter struct { + obj *bgpV6RouteRange + bgpCommunitySlice []BgpCommunity + fieldPtr *[]*otg.BgpCommunity +} + +func newBgpV6RouteRangeBgpCommunityIter(ptr *[]*otg.BgpCommunity) BgpV6RouteRangeBgpCommunityIter { + return &bgpV6RouteRangeBgpCommunityIter{fieldPtr: ptr} +} + +type BgpV6RouteRangeBgpCommunityIter interface { + setMsg(*bgpV6RouteRange) BgpV6RouteRangeBgpCommunityIter + Items() []BgpCommunity + Add() BgpCommunity + Append(items ...BgpCommunity) BgpV6RouteRangeBgpCommunityIter + Set(index int, newObj BgpCommunity) BgpV6RouteRangeBgpCommunityIter + Clear() BgpV6RouteRangeBgpCommunityIter + clearHolderSlice() BgpV6RouteRangeBgpCommunityIter + appendHolderSlice(item BgpCommunity) BgpV6RouteRangeBgpCommunityIter +} + +func (obj *bgpV6RouteRangeBgpCommunityIter) setMsg(msg *bgpV6RouteRange) BgpV6RouteRangeBgpCommunityIter { + obj.clearHolderSlice() + for _, val := range *obj.fieldPtr { + obj.appendHolderSlice(&bgpCommunity{obj: val}) + } + obj.obj = msg + return obj +} + +func (obj *bgpV6RouteRangeBgpCommunityIter) Items() []BgpCommunity { + return obj.bgpCommunitySlice +} + +func (obj *bgpV6RouteRangeBgpCommunityIter) Add() BgpCommunity { + newObj := &otg.BgpCommunity{} + *obj.fieldPtr = append(*obj.fieldPtr, newObj) + newLibObj := &bgpCommunity{obj: newObj} + newLibObj.setDefault() + obj.bgpCommunitySlice = append(obj.bgpCommunitySlice, newLibObj) + return newLibObj +} + +func (obj *bgpV6RouteRangeBgpCommunityIter) Append(items ...BgpCommunity) BgpV6RouteRangeBgpCommunityIter { + for _, item := range items { + newObj := item.Msg() + *obj.fieldPtr = append(*obj.fieldPtr, newObj) + obj.bgpCommunitySlice = append(obj.bgpCommunitySlice, item) + } + return obj +} + +func (obj *bgpV6RouteRangeBgpCommunityIter) Set(index int, newObj BgpCommunity) BgpV6RouteRangeBgpCommunityIter { + (*obj.fieldPtr)[index] = newObj.Msg() + obj.bgpCommunitySlice[index] = newObj + return obj +} +func (obj *bgpV6RouteRangeBgpCommunityIter) Clear() BgpV6RouteRangeBgpCommunityIter { + if len(*obj.fieldPtr) > 0 { + *obj.fieldPtr = []*otg.BgpCommunity{} + obj.bgpCommunitySlice = []BgpCommunity{} + } + return obj +} +func (obj *bgpV6RouteRangeBgpCommunityIter) clearHolderSlice() BgpV6RouteRangeBgpCommunityIter { + if len(obj.bgpCommunitySlice) > 0 { + obj.bgpCommunitySlice = []BgpCommunity{} + } + return obj +} +func (obj *bgpV6RouteRangeBgpCommunityIter) appendHolderSlice(item BgpCommunity) BgpV6RouteRangeBgpCommunityIter { + obj.bgpCommunitySlice = append(obj.bgpCommunitySlice, item) + return obj +} + +// description is TBD +// AsPath returns a BgpAsPath +func (obj *bgpV6RouteRange) AsPath() BgpAsPath { + if obj.obj.AsPath == nil { + obj.obj.AsPath = NewBgpAsPath().Msg() + } + if obj.asPathHolder == nil { + obj.asPathHolder = &bgpAsPath{obj: obj.obj.AsPath} + } + return obj.asPathHolder +} + +// description is TBD +// AsPath returns a BgpAsPath +func (obj *bgpV6RouteRange) HasAsPath() bool { + return obj.obj.AsPath != nil +} + +// description is TBD +// SetAsPath sets the BgpAsPath value in the BgpV6RouteRange object +func (obj *bgpV6RouteRange) SetAsPath(value BgpAsPath) BgpV6RouteRange { + + obj.asPathHolder = nil + obj.obj.AsPath = value.Msg() + + return obj +} + +// description is TBD +// AddPath returns a BgpAddPath +func (obj *bgpV6RouteRange) AddPath() BgpAddPath { + if obj.obj.AddPath == nil { + obj.obj.AddPath = NewBgpAddPath().Msg() + } + if obj.addPathHolder == nil { + obj.addPathHolder = &bgpAddPath{obj: obj.obj.AddPath} + } + return obj.addPathHolder +} + +// description is TBD +// AddPath returns a BgpAddPath +func (obj *bgpV6RouteRange) HasAddPath() bool { + return obj.obj.AddPath != nil +} + +// description is TBD +// SetAddPath sets the BgpAddPath value in the BgpV6RouteRange object +func (obj *bgpV6RouteRange) SetAddPath(value BgpAddPath) BgpV6RouteRange { + + obj.addPathHolder = nil + obj.obj.AddPath = value.Msg() + + return obj +} + +// Globally unique name of an object. It also serves as the primary key for arrays of objects. +// Name returns a string +func (obj *bgpV6RouteRange) Name() string { + + return *obj.obj.Name + +} + +// Globally unique name of an object. It also serves as the primary key for arrays of objects. +// SetName sets the string value in the BgpV6RouteRange object +func (obj *bgpV6RouteRange) SetName(value string) BgpV6RouteRange { + + obj.obj.Name = &value + return obj +} + +// Deprecated: This property is deprecated in favor of property extended_communities +// +// Optional Extended Community settings. The Extended Communities Attribute is a transitive optional BGP attribute, with the Type Code 16. Community and Extended Communities attributes are utilized to trigger routing decisions, such as acceptance, rejection, preference, or redistribution. An extended community is an 8-Bytes value. It is divided into two main parts. The first 2 Bytes of the community encode a type and sub-type fields and the last 6 Bytes carry a unique set of data in a format defined by the type and sub-type field. Extended communities provide a larger range for grouping or categorizing communities. When type is administrator_as_2octet or administrator_as_4octet, the valid sub types are route target and origin. The valid value for administrator_as_2octet and administrator_as_4octet type is either two byte AS followed by four byte local administrator id or four byte AS followed by two byte local administrator id. When type is administrator_ipv4_address the valid sub types are route target and origin. The valid value for administrator_ipv4_address is a four byte IPv4 address followed by a two byte local administrator id. When type is opaque, valid sub types are color and encapsulation. When sub type is color, first two bytes of the value field contain flags and last four bytes contains the value of the color. When sub type is encapsulation the first four bytes of value field are reserved and last two bytes carries the tunnel type from IANA's "ETHER TYPES" registry e.g IPv4 (protocol type = 0x0800), IPv6 (protocol type = 0x86dd), and MPLS (protocol type = 0x8847). When type is administrator_as_2octet_link_bandwidth the valid sub type is extended_bandwidth. The first two bytes of the value field contains the AS number and the last four bytes contains the bandwidth in IEEE floating point format. When type is evpn the valid subtype is mac_address. In the value field the low-order bit of the first byte(Flags) is defined as the "Sticky/static" flag and may be set to 1, indicating the MAC address is static and cannot move. The second byte is reserved and the last four bytes contain the sequence number which is used to ensure that PEs retain the correct MAC/IP Advertisement route when multiple updates occur for the same MAC address. Note evpn type is defined mainly for use with evpn route updates and not for IPv4 and IPv6 route updates. +// ExtCommunities returns a []BgpExtCommunity +func (obj *bgpV6RouteRange) ExtCommunities() BgpV6RouteRangeBgpExtCommunityIter { + if len(obj.obj.ExtCommunities) == 0 { + obj.obj.ExtCommunities = []*otg.BgpExtCommunity{} + } + if obj.extCommunitiesHolder == nil { + obj.extCommunitiesHolder = newBgpV6RouteRangeBgpExtCommunityIter(&obj.obj.ExtCommunities).setMsg(obj) + } + return obj.extCommunitiesHolder +} + +type bgpV6RouteRangeBgpExtCommunityIter struct { + obj *bgpV6RouteRange + bgpExtCommunitySlice []BgpExtCommunity + fieldPtr *[]*otg.BgpExtCommunity +} + +func newBgpV6RouteRangeBgpExtCommunityIter(ptr *[]*otg.BgpExtCommunity) BgpV6RouteRangeBgpExtCommunityIter { + return &bgpV6RouteRangeBgpExtCommunityIter{fieldPtr: ptr} +} + +type BgpV6RouteRangeBgpExtCommunityIter interface { + setMsg(*bgpV6RouteRange) BgpV6RouteRangeBgpExtCommunityIter + Items() []BgpExtCommunity + Add() BgpExtCommunity + Append(items ...BgpExtCommunity) BgpV6RouteRangeBgpExtCommunityIter + Set(index int, newObj BgpExtCommunity) BgpV6RouteRangeBgpExtCommunityIter + Clear() BgpV6RouteRangeBgpExtCommunityIter + clearHolderSlice() BgpV6RouteRangeBgpExtCommunityIter + appendHolderSlice(item BgpExtCommunity) BgpV6RouteRangeBgpExtCommunityIter +} + +func (obj *bgpV6RouteRangeBgpExtCommunityIter) setMsg(msg *bgpV6RouteRange) BgpV6RouteRangeBgpExtCommunityIter { + obj.clearHolderSlice() + for _, val := range *obj.fieldPtr { + obj.appendHolderSlice(&bgpExtCommunity{obj: val}) + } + obj.obj = msg + return obj +} + +func (obj *bgpV6RouteRangeBgpExtCommunityIter) Items() []BgpExtCommunity { + return obj.bgpExtCommunitySlice +} + +func (obj *bgpV6RouteRangeBgpExtCommunityIter) Add() BgpExtCommunity { + newObj := &otg.BgpExtCommunity{} + *obj.fieldPtr = append(*obj.fieldPtr, newObj) + newLibObj := &bgpExtCommunity{obj: newObj} + newLibObj.setDefault() + obj.bgpExtCommunitySlice = append(obj.bgpExtCommunitySlice, newLibObj) + return newLibObj +} + +func (obj *bgpV6RouteRangeBgpExtCommunityIter) Append(items ...BgpExtCommunity) BgpV6RouteRangeBgpExtCommunityIter { + for _, item := range items { + newObj := item.Msg() + *obj.fieldPtr = append(*obj.fieldPtr, newObj) + obj.bgpExtCommunitySlice = append(obj.bgpExtCommunitySlice, item) + } + return obj +} + +func (obj *bgpV6RouteRangeBgpExtCommunityIter) Set(index int, newObj BgpExtCommunity) BgpV6RouteRangeBgpExtCommunityIter { + (*obj.fieldPtr)[index] = newObj.Msg() + obj.bgpExtCommunitySlice[index] = newObj + return obj +} +func (obj *bgpV6RouteRangeBgpExtCommunityIter) Clear() BgpV6RouteRangeBgpExtCommunityIter { + if len(*obj.fieldPtr) > 0 { + *obj.fieldPtr = []*otg.BgpExtCommunity{} + obj.bgpExtCommunitySlice = []BgpExtCommunity{} + } + return obj +} +func (obj *bgpV6RouteRangeBgpExtCommunityIter) clearHolderSlice() BgpV6RouteRangeBgpExtCommunityIter { + if len(obj.bgpExtCommunitySlice) > 0 { + obj.bgpExtCommunitySlice = []BgpExtCommunity{} + } + return obj +} +func (obj *bgpV6RouteRangeBgpExtCommunityIter) appendHolderSlice(item BgpExtCommunity) BgpV6RouteRangeBgpExtCommunityIter { + obj.bgpExtCommunitySlice = append(obj.bgpExtCommunitySlice, item) + return obj +} + +// Optional Extended Community settings. The Extended Communities Attribute is a transitive optional BGP attribute, with the Type Code 16. Community and Extended Communities attributes are utilized to trigger routing decisions, such as acceptance, rejection, preference, or redistribution. An extended community is an eight byte value. It is divided into two main parts. The first two bytes of the community encode a type and sub-type fields and the last six bytes carry a unique set of data in a format defined by the type and sub-type field. Extended communities provide a larger range for grouping or categorizing communities. +// ExtendedCommunities returns a []BgpExtendedCommunity +func (obj *bgpV6RouteRange) ExtendedCommunities() BgpV6RouteRangeBgpExtendedCommunityIter { + if len(obj.obj.ExtendedCommunities) == 0 { + obj.obj.ExtendedCommunities = []*otg.BgpExtendedCommunity{} + } + if obj.extendedCommunitiesHolder == nil { + obj.extendedCommunitiesHolder = newBgpV6RouteRangeBgpExtendedCommunityIter(&obj.obj.ExtendedCommunities).setMsg(obj) + } + return obj.extendedCommunitiesHolder +} + +type bgpV6RouteRangeBgpExtendedCommunityIter struct { + obj *bgpV6RouteRange + bgpExtendedCommunitySlice []BgpExtendedCommunity + fieldPtr *[]*otg.BgpExtendedCommunity +} + +func newBgpV6RouteRangeBgpExtendedCommunityIter(ptr *[]*otg.BgpExtendedCommunity) BgpV6RouteRangeBgpExtendedCommunityIter { + return &bgpV6RouteRangeBgpExtendedCommunityIter{fieldPtr: ptr} +} + +type BgpV6RouteRangeBgpExtendedCommunityIter interface { + setMsg(*bgpV6RouteRange) BgpV6RouteRangeBgpExtendedCommunityIter + Items() []BgpExtendedCommunity + Add() BgpExtendedCommunity + Append(items ...BgpExtendedCommunity) BgpV6RouteRangeBgpExtendedCommunityIter + Set(index int, newObj BgpExtendedCommunity) BgpV6RouteRangeBgpExtendedCommunityIter + Clear() BgpV6RouteRangeBgpExtendedCommunityIter + clearHolderSlice() BgpV6RouteRangeBgpExtendedCommunityIter + appendHolderSlice(item BgpExtendedCommunity) BgpV6RouteRangeBgpExtendedCommunityIter +} + +func (obj *bgpV6RouteRangeBgpExtendedCommunityIter) setMsg(msg *bgpV6RouteRange) BgpV6RouteRangeBgpExtendedCommunityIter { + obj.clearHolderSlice() + for _, val := range *obj.fieldPtr { + obj.appendHolderSlice(&bgpExtendedCommunity{obj: val}) + } + obj.obj = msg + return obj +} + +func (obj *bgpV6RouteRangeBgpExtendedCommunityIter) Items() []BgpExtendedCommunity { + return obj.bgpExtendedCommunitySlice +} + +func (obj *bgpV6RouteRangeBgpExtendedCommunityIter) Add() BgpExtendedCommunity { + newObj := &otg.BgpExtendedCommunity{} + *obj.fieldPtr = append(*obj.fieldPtr, newObj) + newLibObj := &bgpExtendedCommunity{obj: newObj} + newLibObj.setDefault() + obj.bgpExtendedCommunitySlice = append(obj.bgpExtendedCommunitySlice, newLibObj) + return newLibObj +} + +func (obj *bgpV6RouteRangeBgpExtendedCommunityIter) Append(items ...BgpExtendedCommunity) BgpV6RouteRangeBgpExtendedCommunityIter { + for _, item := range items { + newObj := item.Msg() + *obj.fieldPtr = append(*obj.fieldPtr, newObj) + obj.bgpExtendedCommunitySlice = append(obj.bgpExtendedCommunitySlice, item) + } + return obj +} + +func (obj *bgpV6RouteRangeBgpExtendedCommunityIter) Set(index int, newObj BgpExtendedCommunity) BgpV6RouteRangeBgpExtendedCommunityIter { + (*obj.fieldPtr)[index] = newObj.Msg() + obj.bgpExtendedCommunitySlice[index] = newObj + return obj +} +func (obj *bgpV6RouteRangeBgpExtendedCommunityIter) Clear() BgpV6RouteRangeBgpExtendedCommunityIter { + if len(*obj.fieldPtr) > 0 { + *obj.fieldPtr = []*otg.BgpExtendedCommunity{} + obj.bgpExtendedCommunitySlice = []BgpExtendedCommunity{} + } + return obj +} +func (obj *bgpV6RouteRangeBgpExtendedCommunityIter) clearHolderSlice() BgpV6RouteRangeBgpExtendedCommunityIter { + if len(obj.bgpExtendedCommunitySlice) > 0 { + obj.bgpExtendedCommunitySlice = []BgpExtendedCommunity{} + } + return obj +} +func (obj *bgpV6RouteRangeBgpExtendedCommunityIter) appendHolderSlice(item BgpExtendedCommunity) BgpV6RouteRangeBgpExtendedCommunityIter { + obj.bgpExtendedCommunitySlice = append(obj.bgpExtendedCommunitySlice, item) + return obj +} + +func (obj *bgpV6RouteRange) validateObj(vObj *validation, set_default bool) { + if set_default { + obj.setDefault() + } + + if len(obj.obj.Addresses) != 0 { + + if set_default { + obj.Addresses().clearHolderSlice() + for _, item := range obj.obj.Addresses { + obj.Addresses().appendHolderSlice(&v6RouteAddress{obj: item}) + } + } + for _, item := range obj.Addresses().Items() { + item.validateObj(vObj, set_default) + } + + } + + if obj.obj.NextHopIpv4Address != nil { + + err := obj.validateIpv4(obj.NextHopIpv4Address()) + if err != nil { + vObj.validationErrors = append(vObj.validationErrors, fmt.Sprintf("%s %s", err.Error(), "on BgpV6RouteRange.NextHopIpv4Address")) + } + + } + + if obj.obj.NextHopIpv6Address != nil { + + err := obj.validateIpv6(obj.NextHopIpv6Address()) + if err != nil { + vObj.validationErrors = append(vObj.validationErrors, fmt.Sprintf("%s %s", err.Error(), "on BgpV6RouteRange.NextHopIpv6Address")) + } + + } + + if obj.obj.Advanced != nil { + + obj.Advanced().validateObj(vObj, set_default) + } + + if len(obj.obj.Communities) != 0 { + + if set_default { + obj.Communities().clearHolderSlice() + for _, item := range obj.obj.Communities { + obj.Communities().appendHolderSlice(&bgpCommunity{obj: item}) + } + } + for _, item := range obj.Communities().Items() { + item.validateObj(vObj, set_default) + } + + } + + if obj.obj.AsPath != nil { + + obj.AsPath().validateObj(vObj, set_default) + } + + if obj.obj.AddPath != nil { + + obj.AddPath().validateObj(vObj, set_default) + } + + // Name is required + if obj.obj.Name == nil { + vObj.validationErrors = append(vObj.validationErrors, "Name is required field on interface BgpV6RouteRange") + } + + if len(obj.obj.ExtCommunities) != 0 { + obj.addWarnings("ExtCommunities property in schema BgpV6RouteRange is deprecated, This property is deprecated in favor of property extended_communities") + + if set_default { + obj.ExtCommunities().clearHolderSlice() + for _, item := range obj.obj.ExtCommunities { + obj.ExtCommunities().appendHolderSlice(&bgpExtCommunity{obj: item}) + } + } + for _, item := range obj.ExtCommunities().Items() { + item.validateObj(vObj, set_default) + } + + } + + if len(obj.obj.ExtendedCommunities) != 0 { + + if set_default { + obj.ExtendedCommunities().clearHolderSlice() + for _, item := range obj.obj.ExtendedCommunities { + obj.ExtendedCommunities().appendHolderSlice(&bgpExtendedCommunity{obj: item}) + } + } + for _, item := range obj.ExtendedCommunities().Items() { + item.validateObj(vObj, set_default) + } + + } + +} + +func (obj *bgpV6RouteRange) setDefault() { + if obj.obj.NextHopMode == nil { + obj.SetNextHopMode(BgpV6RouteRangeNextHopMode.LOCAL_IP) + + } + if obj.obj.NextHopAddressType == nil { + obj.SetNextHopAddressType(BgpV6RouteRangeNextHopAddressType.IPV6) + + } + if obj.obj.NextHopIpv4Address == nil { + obj.SetNextHopIpv4Address("0.0.0.0") + } + if obj.obj.NextHopIpv6Address == nil { + obj.SetNextHopIpv6Address("::0") + } + +} + +// ***** BgpSrteV4Policy ***** +type bgpSrteV4Policy struct { + validation + obj *otg.BgpSrteV4Policy + advancedHolder BgpRouteAdvanced + addPathHolder BgpAddPath + asPathHolder BgpAsPath + communitiesHolder BgpSrteV4PolicyBgpCommunityIter + extCommunitiesHolder BgpSrteV4PolicyBgpExtCommunityIter + tunnelTlvsHolder BgpSrteV4PolicyBgpSrteV4TunnelTlvIter +} + +func NewBgpSrteV4Policy() BgpSrteV4Policy { + obj := bgpSrteV4Policy{obj: &otg.BgpSrteV4Policy{}} + obj.setDefault() + return &obj +} + +func (obj *bgpSrteV4Policy) Msg() *otg.BgpSrteV4Policy { + return obj.obj +} + +func (obj *bgpSrteV4Policy) SetMsg(msg *otg.BgpSrteV4Policy) BgpSrteV4Policy { + obj.setNil() + proto.Merge(obj.obj, msg) + return obj +} + +func (obj *bgpSrteV4Policy) ToProto() (*otg.BgpSrteV4Policy, error) { + err := obj.validateToAndFrom() + if err != nil { + return nil, err + } + return obj.Msg(), nil +} + +func (obj *bgpSrteV4Policy) FromProto(msg *otg.BgpSrteV4Policy) (BgpSrteV4Policy, error) { + newObj := obj.SetMsg(msg) + err := newObj.validateToAndFrom() + if err != nil { + return nil, err + } + return newObj, nil +} + +func (obj *bgpSrteV4Policy) ToPbText() (string, error) { + vErr := obj.validateToAndFrom() + if vErr != nil { + return "", vErr + } + protoMarshal, err := proto.Marshal(obj.Msg()) + if err != nil { + return "", err + } + return string(protoMarshal), nil +} + +func (obj *bgpSrteV4Policy) FromPbText(value string) error { + retObj := proto.Unmarshal([]byte(value), obj.Msg()) + if retObj != nil { + return retObj + } + obj.setNil() + vErr := obj.validateToAndFrom() + if vErr != nil { + return vErr + } + return retObj +} + +func (obj *bgpSrteV4Policy) ToYaml() (string, error) { + vErr := obj.validateToAndFrom() + if vErr != nil { + return "", vErr + } + opts := protojson.MarshalOptions{ + UseProtoNames: true, + AllowPartial: true, + EmitUnpopulated: false, + } + data, err := opts.Marshal(obj.Msg()) + if err != nil { + return "", err + } + data, err = yaml.JSONToYAML(data) + if err != nil { + return "", err + } + return string(data), nil +} + +func (obj *bgpSrteV4Policy) FromYaml(value string) error { + if value == "" { + value = "{}" + } + data, err := yaml.YAMLToJSON([]byte(value)) + if err != nil { + return err + } + opts := protojson.UnmarshalOptions{ + AllowPartial: true, + DiscardUnknown: false, + } + uError := opts.Unmarshal([]byte(data), obj.Msg()) + if uError != nil { + return fmt.Errorf("unmarshal error %s", strings.Replace( + uError.Error(), "\u00a0", " ", -1)[7:]) + } + obj.setNil() + vErr := obj.validateToAndFrom() + if vErr != nil { + return vErr + } + return nil +} + +func (obj *bgpSrteV4Policy) ToJson() (string, error) { + vErr := obj.validateToAndFrom() + if vErr != nil { + return "", vErr + } + opts := protojson.MarshalOptions{ + UseProtoNames: true, + AllowPartial: true, + EmitUnpopulated: false, + Indent: " ", + } + data, err := opts.Marshal(obj.Msg()) + if err != nil { + return "", err + } + return string(data), nil +} + +func (obj *bgpSrteV4Policy) FromJson(value string) error { + opts := protojson.UnmarshalOptions{ + AllowPartial: true, + DiscardUnknown: false, + } + if value == "" { + value = "{}" + } + uError := opts.Unmarshal([]byte(value), obj.Msg()) + if uError != nil { + return fmt.Errorf("unmarshal error %s", strings.Replace( + uError.Error(), "\u00a0", " ", -1)[7:]) + } + obj.setNil() + err := obj.validateToAndFrom() + if err != nil { + return err + } + return nil +} + +func (obj *bgpSrteV4Policy) validateToAndFrom() error { + // emptyVars() + obj.validateObj(&obj.validation, true) + return obj.validationResult() +} + +func (obj *bgpSrteV4Policy) Validate() error { + // emptyVars() + obj.validateObj(&obj.validation, false) + return obj.validationResult() +} + +func (obj *bgpSrteV4Policy) String() string { + str, err := obj.ToYaml() + if err != nil { + return err.Error() + } + return str +} + +func (obj *bgpSrteV4Policy) Clone() (BgpSrteV4Policy, error) { + vErr := obj.Validate() + if vErr != nil { + return nil, vErr + } + newObj := NewBgpSrteV4Policy() + data, err := proto.Marshal(obj.Msg()) + if err != nil { + return nil, err + } + pbErr := proto.Unmarshal(data, newObj.Msg()) + if pbErr != nil { + return nil, pbErr + } + return newObj, nil +} + +func (obj *bgpSrteV4Policy) setNil() { + obj.advancedHolder = nil + obj.addPathHolder = nil + obj.asPathHolder = nil + obj.communitiesHolder = nil + obj.extCommunitiesHolder = nil + obj.tunnelTlvsHolder = nil + obj.validationErrors = nil + obj.warnings = nil + obj.constraints = make(map[string]map[string]Constraints) +} + +// BgpSrteV4Policy is configuration for BGP Segment Routing Traffic Engineering(SRTE) +// policy. + +type BgpSrteV4Policy interface { + Validation + // Msg marshals BgpSrteV4Policy to protobuf object *otg.BgpSrteV4Policy + // and doesn't set defaults + Msg() *otg.BgpSrteV4Policy + // SetMsg unmarshals BgpSrteV4Policy from protobuf object *otg.BgpSrteV4Policy + // and doesn't set defaults + SetMsg(*otg.BgpSrteV4Policy) BgpSrteV4Policy + // ToProto marshals BgpSrteV4Policy to protobuf object *otg.BgpSrteV4Policy + ToProto() (*otg.BgpSrteV4Policy, error) + // ToPbText marshals BgpSrteV4Policy to protobuf text + ToPbText() (string, error) + // ToYaml marshals BgpSrteV4Policy to YAML text + ToYaml() (string, error) + // ToJson marshals BgpSrteV4Policy to JSON text + ToJson() (string, error) + // FromProto unmarshals BgpSrteV4Policy from protobuf object *otg.BgpSrteV4Policy + FromProto(msg *otg.BgpSrteV4Policy) (BgpSrteV4Policy, error) + // FromPbText unmarshals BgpSrteV4Policy from protobuf text + FromPbText(value string) error + // FromYaml unmarshals BgpSrteV4Policy from YAML text + FromYaml(value string) error + // FromJson unmarshals BgpSrteV4Policy from JSON text + FromJson(value string) error + // Validate validates BgpSrteV4Policy + Validate() error + // A stringer function + String() string + // Clones the object + Clone() (BgpSrteV4Policy, error) + validateToAndFrom() error + validateObj(vObj *validation, set_default bool) + setDefault() + // Distinguisher returns uint32, set in BgpSrteV4Policy. + Distinguisher() uint32 + // SetDistinguisher assigns uint32 provided by user to BgpSrteV4Policy + SetDistinguisher(value uint32) BgpSrteV4Policy + // HasDistinguisher checks if Distinguisher has been set in BgpSrteV4Policy + HasDistinguisher() bool + // Color returns uint32, set in BgpSrteV4Policy. + Color() uint32 + // SetColor assigns uint32 provided by user to BgpSrteV4Policy + SetColor(value uint32) BgpSrteV4Policy + // HasColor checks if Color has been set in BgpSrteV4Policy + HasColor() bool + // Ipv4Endpoint returns string, set in BgpSrteV4Policy. + Ipv4Endpoint() string + // SetIpv4Endpoint assigns string provided by user to BgpSrteV4Policy + SetIpv4Endpoint(value string) BgpSrteV4Policy + // NextHopMode returns BgpSrteV4PolicyNextHopModeEnum, set in BgpSrteV4Policy + NextHopMode() BgpSrteV4PolicyNextHopModeEnum + // SetNextHopMode assigns BgpSrteV4PolicyNextHopModeEnum provided by user to BgpSrteV4Policy + SetNextHopMode(value BgpSrteV4PolicyNextHopModeEnum) BgpSrteV4Policy + // HasNextHopMode checks if NextHopMode has been set in BgpSrteV4Policy + HasNextHopMode() bool + // NextHopAddressType returns BgpSrteV4PolicyNextHopAddressTypeEnum, set in BgpSrteV4Policy + NextHopAddressType() BgpSrteV4PolicyNextHopAddressTypeEnum + // SetNextHopAddressType assigns BgpSrteV4PolicyNextHopAddressTypeEnum provided by user to BgpSrteV4Policy + SetNextHopAddressType(value BgpSrteV4PolicyNextHopAddressTypeEnum) BgpSrteV4Policy + // HasNextHopAddressType checks if NextHopAddressType has been set in BgpSrteV4Policy + HasNextHopAddressType() bool + // NextHopIpv4Address returns string, set in BgpSrteV4Policy. + NextHopIpv4Address() string + // SetNextHopIpv4Address assigns string provided by user to BgpSrteV4Policy + SetNextHopIpv4Address(value string) BgpSrteV4Policy + // HasNextHopIpv4Address checks if NextHopIpv4Address has been set in BgpSrteV4Policy + HasNextHopIpv4Address() bool + // NextHopIpv6Address returns string, set in BgpSrteV4Policy. + NextHopIpv6Address() string + // SetNextHopIpv6Address assigns string provided by user to BgpSrteV4Policy + SetNextHopIpv6Address(value string) BgpSrteV4Policy + // HasNextHopIpv6Address checks if NextHopIpv6Address has been set in BgpSrteV4Policy + HasNextHopIpv6Address() bool + // Advanced returns BgpRouteAdvanced, set in BgpSrteV4Policy. + // BgpRouteAdvanced is configuration for advanced BGP route range settings. + Advanced() BgpRouteAdvanced + // SetAdvanced assigns BgpRouteAdvanced provided by user to BgpSrteV4Policy. + // BgpRouteAdvanced is configuration for advanced BGP route range settings. + SetAdvanced(value BgpRouteAdvanced) BgpSrteV4Policy + // HasAdvanced checks if Advanced has been set in BgpSrteV4Policy + HasAdvanced() bool + // AddPath returns BgpAddPath, set in BgpSrteV4Policy. + // BgpAddPath is the BGP Additional Paths feature is a BGP extension that allows the advertisement of multiple paths for the same prefix without the new paths implicitly replacing any previous paths. + AddPath() BgpAddPath + // SetAddPath assigns BgpAddPath provided by user to BgpSrteV4Policy. + // BgpAddPath is the BGP Additional Paths feature is a BGP extension that allows the advertisement of multiple paths for the same prefix without the new paths implicitly replacing any previous paths. + SetAddPath(value BgpAddPath) BgpSrteV4Policy + // HasAddPath checks if AddPath has been set in BgpSrteV4Policy + HasAddPath() bool + // AsPath returns BgpAsPath, set in BgpSrteV4Policy. + // BgpAsPath is this attribute identifies the autonomous systems through which routing information carried in this UPDATE message has passed. This contains the configuration of how to include the Local AS in the AS path attribute of the MP REACH NLRI. It also contains optional configuration of additional AS Path Segments that can be included in the AS Path attribute. The AS Path consists of a Set or Sequence of Autonomous Systems (AS) numbers that a routing information passes through to reach the destination. + AsPath() BgpAsPath + // SetAsPath assigns BgpAsPath provided by user to BgpSrteV4Policy. + // BgpAsPath is this attribute identifies the autonomous systems through which routing information carried in this UPDATE message has passed. This contains the configuration of how to include the Local AS in the AS path attribute of the MP REACH NLRI. It also contains optional configuration of additional AS Path Segments that can be included in the AS Path attribute. The AS Path consists of a Set or Sequence of Autonomous Systems (AS) numbers that a routing information passes through to reach the destination. + SetAsPath(value BgpAsPath) BgpSrteV4Policy + // HasAsPath checks if AsPath has been set in BgpSrteV4Policy + HasAsPath() bool + // Communities returns BgpSrteV4PolicyBgpCommunityIterIter, set in BgpSrteV4Policy + Communities() BgpSrteV4PolicyBgpCommunityIter + // ExtCommunities returns BgpSrteV4PolicyBgpExtCommunityIterIter, set in BgpSrteV4Policy + ExtCommunities() BgpSrteV4PolicyBgpExtCommunityIter + // TunnelTlvs returns BgpSrteV4PolicyBgpSrteV4TunnelTlvIterIter, set in BgpSrteV4Policy + TunnelTlvs() BgpSrteV4PolicyBgpSrteV4TunnelTlvIter + // Name returns string, set in BgpSrteV4Policy. + Name() string + // SetName assigns string provided by user to BgpSrteV4Policy + SetName(value string) BgpSrteV4Policy + // Active returns bool, set in BgpSrteV4Policy. + Active() bool + // SetActive assigns bool provided by user to BgpSrteV4Policy + SetActive(value bool) BgpSrteV4Policy + // HasActive checks if Active has been set in BgpSrteV4Policy + HasActive() bool + setNil() +} + +// 4-octet value uniquely identifying the policy in the context of (color, endpoint) tuple. It is used by the SR Policy originator to make unique (from an NLRI perspective) both for multiple candidate paths of the same SR Policy as well as candidate paths of different SR Policies (i.e. with different segment list) with the same Color and Endpoint but meant for different head-ends. +// Distinguisher returns a uint32 +func (obj *bgpSrteV4Policy) Distinguisher() uint32 { + + return *obj.obj.Distinguisher + +} + +// 4-octet value uniquely identifying the policy in the context of (color, endpoint) tuple. It is used by the SR Policy originator to make unique (from an NLRI perspective) both for multiple candidate paths of the same SR Policy as well as candidate paths of different SR Policies (i.e. with different segment list) with the same Color and Endpoint but meant for different head-ends. +// Distinguisher returns a uint32 +func (obj *bgpSrteV4Policy) HasDistinguisher() bool { + return obj.obj.Distinguisher != nil +} + +// 4-octet value uniquely identifying the policy in the context of (color, endpoint) tuple. It is used by the SR Policy originator to make unique (from an NLRI perspective) both for multiple candidate paths of the same SR Policy as well as candidate paths of different SR Policies (i.e. with different segment list) with the same Color and Endpoint but meant for different head-ends. +// SetDistinguisher sets the uint32 value in the BgpSrteV4Policy object +func (obj *bgpSrteV4Policy) SetDistinguisher(value uint32) BgpSrteV4Policy { + + obj.obj.Distinguisher = &value + return obj +} + +// Policy color is used to match the color of the destination prefixes to steer traffic into the SR Policy. +// Color returns a uint32 +func (obj *bgpSrteV4Policy) Color() uint32 { + + return *obj.obj.Color + +} + +// Policy color is used to match the color of the destination prefixes to steer traffic into the SR Policy. +// Color returns a uint32 +func (obj *bgpSrteV4Policy) HasColor() bool { + return obj.obj.Color != nil +} + +// Policy color is used to match the color of the destination prefixes to steer traffic into the SR Policy. +// SetColor sets the uint32 value in the BgpSrteV4Policy object +func (obj *bgpSrteV4Policy) SetColor(value uint32) BgpSrteV4Policy { + + obj.obj.Color = &value + return obj +} + +// Specifies a single node or a set of nodes (e.g. an anycast address). It is selected on the basis of the SR Policy type (AFI). +// Ipv4Endpoint returns a string +func (obj *bgpSrteV4Policy) Ipv4Endpoint() string { + + return *obj.obj.Ipv4Endpoint + +} + +// Specifies a single node or a set of nodes (e.g. an anycast address). It is selected on the basis of the SR Policy type (AFI). +// SetIpv4Endpoint sets the string value in the BgpSrteV4Policy object +func (obj *bgpSrteV4Policy) SetIpv4Endpoint(value string) BgpSrteV4Policy { + + obj.obj.Ipv4Endpoint = &value + return obj +} + +type BgpSrteV4PolicyNextHopModeEnum string + +// Enum of NextHopMode on BgpSrteV4Policy +var BgpSrteV4PolicyNextHopMode = struct { + LOCAL_IP BgpSrteV4PolicyNextHopModeEnum + MANUAL BgpSrteV4PolicyNextHopModeEnum +}{ + LOCAL_IP: BgpSrteV4PolicyNextHopModeEnum("local_ip"), + MANUAL: BgpSrteV4PolicyNextHopModeEnum("manual"), +} + +func (obj *bgpSrteV4Policy) NextHopMode() BgpSrteV4PolicyNextHopModeEnum { + return BgpSrteV4PolicyNextHopModeEnum(obj.obj.NextHopMode.Enum().String()) +} + +// Mode for choosing the NextHop in MP REACH NLRI. Available modes are : Local IP: Automatically fills the Nexthop with the Local IP of the BGP peer. For IPv6 BGP peer the Nexthop Encoding capability should be enabled. Manual: Override the Nexthop with any arbitrary IPv4/IPv6 address. +// NextHopMode returns a string +func (obj *bgpSrteV4Policy) HasNextHopMode() bool { + return obj.obj.NextHopMode != nil +} + +func (obj *bgpSrteV4Policy) SetNextHopMode(value BgpSrteV4PolicyNextHopModeEnum) BgpSrteV4Policy { + intValue, ok := otg.BgpSrteV4Policy_NextHopMode_Enum_value[string(value)] + if !ok { + obj.validationErrors = append(obj.validationErrors, fmt.Sprintf( + "%s is not a valid choice on BgpSrteV4PolicyNextHopModeEnum", string(value))) + return obj + } + enumValue := otg.BgpSrteV4Policy_NextHopMode_Enum(intValue) + obj.obj.NextHopMode = &enumValue + + return obj +} + +type BgpSrteV4PolicyNextHopAddressTypeEnum string + +// Enum of NextHopAddressType on BgpSrteV4Policy +var BgpSrteV4PolicyNextHopAddressType = struct { + IPV4 BgpSrteV4PolicyNextHopAddressTypeEnum + IPV6 BgpSrteV4PolicyNextHopAddressTypeEnum +}{ + IPV4: BgpSrteV4PolicyNextHopAddressTypeEnum("ipv4"), + IPV6: BgpSrteV4PolicyNextHopAddressTypeEnum("ipv6"), +} + +func (obj *bgpSrteV4Policy) NextHopAddressType() BgpSrteV4PolicyNextHopAddressTypeEnum { + return BgpSrteV4PolicyNextHopAddressTypeEnum(obj.obj.NextHopAddressType.Enum().String()) +} + +// Type of next hop IP address to be used when 'next_hop_mode' is set to 'manual'. +// NextHopAddressType returns a string +func (obj *bgpSrteV4Policy) HasNextHopAddressType() bool { + return obj.obj.NextHopAddressType != nil +} + +func (obj *bgpSrteV4Policy) SetNextHopAddressType(value BgpSrteV4PolicyNextHopAddressTypeEnum) BgpSrteV4Policy { + intValue, ok := otg.BgpSrteV4Policy_NextHopAddressType_Enum_value[string(value)] + if !ok { + obj.validationErrors = append(obj.validationErrors, fmt.Sprintf( + "%s is not a valid choice on BgpSrteV4PolicyNextHopAddressTypeEnum", string(value))) + return obj + } + enumValue := otg.BgpSrteV4Policy_NextHopAddressType_Enum(intValue) + obj.obj.NextHopAddressType = &enumValue + + return obj +} + +// The IPv4 address of the next hop if the Nexthop type 'next_hop_mode' is 'manual' and the Nexthop type 'next_hop_address_type' is IPv4. If BGP peer is of type IPv6, Nexthop Encoding capability extended_next_hop_encoding should be enabled. +// NextHopIpv4Address returns a string +func (obj *bgpSrteV4Policy) NextHopIpv4Address() string { + + return *obj.obj.NextHopIpv4Address + +} + +// The IPv4 address of the next hop if the Nexthop type 'next_hop_mode' is 'manual' and the Nexthop type 'next_hop_address_type' is IPv4. If BGP peer is of type IPv6, Nexthop Encoding capability extended_next_hop_encoding should be enabled. +// NextHopIpv4Address returns a string +func (obj *bgpSrteV4Policy) HasNextHopIpv4Address() bool { + return obj.obj.NextHopIpv4Address != nil +} + +// The IPv4 address of the next hop if the Nexthop type 'next_hop_mode' is 'manual' and the Nexthop type 'next_hop_address_type' is IPv4. If BGP peer is of type IPv6, Nexthop Encoding capability extended_next_hop_encoding should be enabled. +// SetNextHopIpv4Address sets the string value in the BgpSrteV4Policy object +func (obj *bgpSrteV4Policy) SetNextHopIpv4Address(value string) BgpSrteV4Policy { + + obj.obj.NextHopIpv4Address = &value + return obj +} + +// The IPv6 address of the next hop if the Nexthop Mode 'next_hop_address_type' is 'manual' and the Nexthop type 'next_hop_address_type' is IPv6. +// NextHopIpv6Address returns a string +func (obj *bgpSrteV4Policy) NextHopIpv6Address() string { + + return *obj.obj.NextHopIpv6Address + +} + +// The IPv6 address of the next hop if the Nexthop Mode 'next_hop_address_type' is 'manual' and the Nexthop type 'next_hop_address_type' is IPv6. +// NextHopIpv6Address returns a string +func (obj *bgpSrteV4Policy) HasNextHopIpv6Address() bool { + return obj.obj.NextHopIpv6Address != nil +} + +// The IPv6 address of the next hop if the Nexthop Mode 'next_hop_address_type' is 'manual' and the Nexthop type 'next_hop_address_type' is IPv6. +// SetNextHopIpv6Address sets the string value in the BgpSrteV4Policy object +func (obj *bgpSrteV4Policy) SetNextHopIpv6Address(value string) BgpSrteV4Policy { + + obj.obj.NextHopIpv6Address = &value + return obj +} + +// description is TBD +// Advanced returns a BgpRouteAdvanced +func (obj *bgpSrteV4Policy) Advanced() BgpRouteAdvanced { + if obj.obj.Advanced == nil { + obj.obj.Advanced = NewBgpRouteAdvanced().Msg() + } + if obj.advancedHolder == nil { + obj.advancedHolder = &bgpRouteAdvanced{obj: obj.obj.Advanced} + } + return obj.advancedHolder +} + +// description is TBD +// Advanced returns a BgpRouteAdvanced +func (obj *bgpSrteV4Policy) HasAdvanced() bool { + return obj.obj.Advanced != nil +} + +// description is TBD +// SetAdvanced sets the BgpRouteAdvanced value in the BgpSrteV4Policy object +func (obj *bgpSrteV4Policy) SetAdvanced(value BgpRouteAdvanced) BgpSrteV4Policy { + + obj.advancedHolder = nil + obj.obj.Advanced = value.Msg() + + return obj +} + +// description is TBD +// AddPath returns a BgpAddPath +func (obj *bgpSrteV4Policy) AddPath() BgpAddPath { + if obj.obj.AddPath == nil { + obj.obj.AddPath = NewBgpAddPath().Msg() + } + if obj.addPathHolder == nil { + obj.addPathHolder = &bgpAddPath{obj: obj.obj.AddPath} + } + return obj.addPathHolder +} + +// description is TBD +// AddPath returns a BgpAddPath +func (obj *bgpSrteV4Policy) HasAddPath() bool { + return obj.obj.AddPath != nil +} + +// description is TBD +// SetAddPath sets the BgpAddPath value in the BgpSrteV4Policy object +func (obj *bgpSrteV4Policy) SetAddPath(value BgpAddPath) BgpSrteV4Policy { + + obj.addPathHolder = nil + obj.obj.AddPath = value.Msg() + + return obj +} + +// description is TBD +// AsPath returns a BgpAsPath +func (obj *bgpSrteV4Policy) AsPath() BgpAsPath { + if obj.obj.AsPath == nil { + obj.obj.AsPath = NewBgpAsPath().Msg() + } + if obj.asPathHolder == nil { + obj.asPathHolder = &bgpAsPath{obj: obj.obj.AsPath} + } + return obj.asPathHolder +} + +// description is TBD +// AsPath returns a BgpAsPath +func (obj *bgpSrteV4Policy) HasAsPath() bool { + return obj.obj.AsPath != nil +} + +// description is TBD +// SetAsPath sets the BgpAsPath value in the BgpSrteV4Policy object +func (obj *bgpSrteV4Policy) SetAsPath(value BgpAsPath) BgpSrteV4Policy { + + obj.asPathHolder = nil + obj.obj.AsPath = value.Msg() + + return obj +} + +// Optional Community settings. +// Communities returns a []BgpCommunity +func (obj *bgpSrteV4Policy) Communities() BgpSrteV4PolicyBgpCommunityIter { + if len(obj.obj.Communities) == 0 { + obj.obj.Communities = []*otg.BgpCommunity{} + } + if obj.communitiesHolder == nil { + obj.communitiesHolder = newBgpSrteV4PolicyBgpCommunityIter(&obj.obj.Communities).setMsg(obj) + } + return obj.communitiesHolder +} + +type bgpSrteV4PolicyBgpCommunityIter struct { + obj *bgpSrteV4Policy + bgpCommunitySlice []BgpCommunity + fieldPtr *[]*otg.BgpCommunity +} + +func newBgpSrteV4PolicyBgpCommunityIter(ptr *[]*otg.BgpCommunity) BgpSrteV4PolicyBgpCommunityIter { + return &bgpSrteV4PolicyBgpCommunityIter{fieldPtr: ptr} +} + +type BgpSrteV4PolicyBgpCommunityIter interface { + setMsg(*bgpSrteV4Policy) BgpSrteV4PolicyBgpCommunityIter + Items() []BgpCommunity + Add() BgpCommunity + Append(items ...BgpCommunity) BgpSrteV4PolicyBgpCommunityIter + Set(index int, newObj BgpCommunity) BgpSrteV4PolicyBgpCommunityIter + Clear() BgpSrteV4PolicyBgpCommunityIter + clearHolderSlice() BgpSrteV4PolicyBgpCommunityIter + appendHolderSlice(item BgpCommunity) BgpSrteV4PolicyBgpCommunityIter +} + +func (obj *bgpSrteV4PolicyBgpCommunityIter) setMsg(msg *bgpSrteV4Policy) BgpSrteV4PolicyBgpCommunityIter { + obj.clearHolderSlice() + for _, val := range *obj.fieldPtr { + obj.appendHolderSlice(&bgpCommunity{obj: val}) + } + obj.obj = msg + return obj +} + +func (obj *bgpSrteV4PolicyBgpCommunityIter) Items() []BgpCommunity { + return obj.bgpCommunitySlice +} + +func (obj *bgpSrteV4PolicyBgpCommunityIter) Add() BgpCommunity { + newObj := &otg.BgpCommunity{} + *obj.fieldPtr = append(*obj.fieldPtr, newObj) + newLibObj := &bgpCommunity{obj: newObj} + newLibObj.setDefault() + obj.bgpCommunitySlice = append(obj.bgpCommunitySlice, newLibObj) + return newLibObj +} + +func (obj *bgpSrteV4PolicyBgpCommunityIter) Append(items ...BgpCommunity) BgpSrteV4PolicyBgpCommunityIter { + for _, item := range items { + newObj := item.Msg() + *obj.fieldPtr = append(*obj.fieldPtr, newObj) + obj.bgpCommunitySlice = append(obj.bgpCommunitySlice, item) + } + return obj +} + +func (obj *bgpSrteV4PolicyBgpCommunityIter) Set(index int, newObj BgpCommunity) BgpSrteV4PolicyBgpCommunityIter { + (*obj.fieldPtr)[index] = newObj.Msg() + obj.bgpCommunitySlice[index] = newObj + return obj +} +func (obj *bgpSrteV4PolicyBgpCommunityIter) Clear() BgpSrteV4PolicyBgpCommunityIter { + if len(*obj.fieldPtr) > 0 { + *obj.fieldPtr = []*otg.BgpCommunity{} + obj.bgpCommunitySlice = []BgpCommunity{} + } + return obj +} +func (obj *bgpSrteV4PolicyBgpCommunityIter) clearHolderSlice() BgpSrteV4PolicyBgpCommunityIter { + if len(obj.bgpCommunitySlice) > 0 { + obj.bgpCommunitySlice = []BgpCommunity{} + } + return obj +} +func (obj *bgpSrteV4PolicyBgpCommunityIter) appendHolderSlice(item BgpCommunity) BgpSrteV4PolicyBgpCommunityIter { + obj.bgpCommunitySlice = append(obj.bgpCommunitySlice, item) + return obj +} + +// Optional Extended Community settings. The Extended Communities Attribute is a transitive optional BGP attribute, with the Type Code 16. Community and Extended Communities attributes are utilized to trigger routing decisions, such as acceptance, rejection, preference, or redistribution. An extended community is an 8-Bytes value. It is divided into two main parts. The first 2 Bytes of the community encode a type and sub-type fields and the last 6 Bytes carry a unique set of data in a format defined by the type and sub-type field. Extended communities provide a larger range for grouping or categorizing communities. When type is administrator_as_2octet or administrator_as_4octet, the valid sub types are route target and origin. The valid value for administrator_as_2octet and administrator_as_4octet type is either two byte AS followed by four byte local administrator id or four byte AS followed by two byte local administrator id. When type is administrator_ipv4_address the valid sub types are route target and origin. The valid value for administrator_ipv4_address is a four byte IPv4 address followed by a two byte local administrator id. When type is opaque, valid sub types are color and encapsulation. When sub type is color, first two bytes of the value field contain flags and last four bytes contains the value of the color. When sub type is encapsulation the first four bytes of value field are reserved and last two bytes carries the tunnel type from IANA's "ETHER TYPES" registry e.g IPv4 (protocol type = 0x0800), IPv6 (protocol type = 0x86dd), and MPLS (protocol type = 0x8847). When type is administrator_as_2octet_link_bandwidth the valid sub type is extended_bandwidth. The first two bytes of the value field contains the AS number and the last four bytes contains the bandwidth in IEEE floating point format. When type is evpn the valid subtype is mac_address. In the value field the low-order bit of the first byte(Flags) is defined as the "Sticky/static" flag and may be set to 1, indicating the MAC address is static and cannot move. The second byte is reserved and the last four bytes contain the sequence number which is used to ensure that PEs retain the correct MAC/IP Advertisement route when multiple updates occur for the same MAC address. +// ExtCommunities returns a []BgpExtCommunity +func (obj *bgpSrteV4Policy) ExtCommunities() BgpSrteV4PolicyBgpExtCommunityIter { + if len(obj.obj.ExtCommunities) == 0 { + obj.obj.ExtCommunities = []*otg.BgpExtCommunity{} + } + if obj.extCommunitiesHolder == nil { + obj.extCommunitiesHolder = newBgpSrteV4PolicyBgpExtCommunityIter(&obj.obj.ExtCommunities).setMsg(obj) + } + return obj.extCommunitiesHolder +} + +type bgpSrteV4PolicyBgpExtCommunityIter struct { + obj *bgpSrteV4Policy + bgpExtCommunitySlice []BgpExtCommunity + fieldPtr *[]*otg.BgpExtCommunity +} + +func newBgpSrteV4PolicyBgpExtCommunityIter(ptr *[]*otg.BgpExtCommunity) BgpSrteV4PolicyBgpExtCommunityIter { + return &bgpSrteV4PolicyBgpExtCommunityIter{fieldPtr: ptr} +} + +type BgpSrteV4PolicyBgpExtCommunityIter interface { + setMsg(*bgpSrteV4Policy) BgpSrteV4PolicyBgpExtCommunityIter + Items() []BgpExtCommunity + Add() BgpExtCommunity + Append(items ...BgpExtCommunity) BgpSrteV4PolicyBgpExtCommunityIter + Set(index int, newObj BgpExtCommunity) BgpSrteV4PolicyBgpExtCommunityIter + Clear() BgpSrteV4PolicyBgpExtCommunityIter + clearHolderSlice() BgpSrteV4PolicyBgpExtCommunityIter + appendHolderSlice(item BgpExtCommunity) BgpSrteV4PolicyBgpExtCommunityIter +} + +func (obj *bgpSrteV4PolicyBgpExtCommunityIter) setMsg(msg *bgpSrteV4Policy) BgpSrteV4PolicyBgpExtCommunityIter { + obj.clearHolderSlice() + for _, val := range *obj.fieldPtr { + obj.appendHolderSlice(&bgpExtCommunity{obj: val}) + } + obj.obj = msg + return obj +} + +func (obj *bgpSrteV4PolicyBgpExtCommunityIter) Items() []BgpExtCommunity { + return obj.bgpExtCommunitySlice +} + +func (obj *bgpSrteV4PolicyBgpExtCommunityIter) Add() BgpExtCommunity { + newObj := &otg.BgpExtCommunity{} + *obj.fieldPtr = append(*obj.fieldPtr, newObj) + newLibObj := &bgpExtCommunity{obj: newObj} + newLibObj.setDefault() + obj.bgpExtCommunitySlice = append(obj.bgpExtCommunitySlice, newLibObj) + return newLibObj +} + +func (obj *bgpSrteV4PolicyBgpExtCommunityIter) Append(items ...BgpExtCommunity) BgpSrteV4PolicyBgpExtCommunityIter { + for _, item := range items { + newObj := item.Msg() + *obj.fieldPtr = append(*obj.fieldPtr, newObj) + obj.bgpExtCommunitySlice = append(obj.bgpExtCommunitySlice, item) + } + return obj +} + +func (obj *bgpSrteV4PolicyBgpExtCommunityIter) Set(index int, newObj BgpExtCommunity) BgpSrteV4PolicyBgpExtCommunityIter { + (*obj.fieldPtr)[index] = newObj.Msg() + obj.bgpExtCommunitySlice[index] = newObj + return obj +} +func (obj *bgpSrteV4PolicyBgpExtCommunityIter) Clear() BgpSrteV4PolicyBgpExtCommunityIter { + if len(*obj.fieldPtr) > 0 { + *obj.fieldPtr = []*otg.BgpExtCommunity{} + obj.bgpExtCommunitySlice = []BgpExtCommunity{} + } + return obj +} +func (obj *bgpSrteV4PolicyBgpExtCommunityIter) clearHolderSlice() BgpSrteV4PolicyBgpExtCommunityIter { + if len(obj.bgpExtCommunitySlice) > 0 { + obj.bgpExtCommunitySlice = []BgpExtCommunity{} + } + return obj +} +func (obj *bgpSrteV4PolicyBgpExtCommunityIter) appendHolderSlice(item BgpExtCommunity) BgpSrteV4PolicyBgpExtCommunityIter { + obj.bgpExtCommunitySlice = append(obj.bgpExtCommunitySlice, item) + return obj +} + +// List Tunnel Encapsulation Attributes. +// TunnelTlvs returns a []BgpSrteV4TunnelTlv +func (obj *bgpSrteV4Policy) TunnelTlvs() BgpSrteV4PolicyBgpSrteV4TunnelTlvIter { + if len(obj.obj.TunnelTlvs) == 0 { + obj.obj.TunnelTlvs = []*otg.BgpSrteV4TunnelTlv{} + } + if obj.tunnelTlvsHolder == nil { + obj.tunnelTlvsHolder = newBgpSrteV4PolicyBgpSrteV4TunnelTlvIter(&obj.obj.TunnelTlvs).setMsg(obj) + } + return obj.tunnelTlvsHolder +} + +type bgpSrteV4PolicyBgpSrteV4TunnelTlvIter struct { + obj *bgpSrteV4Policy + bgpSrteV4TunnelTlvSlice []BgpSrteV4TunnelTlv + fieldPtr *[]*otg.BgpSrteV4TunnelTlv +} + +func newBgpSrteV4PolicyBgpSrteV4TunnelTlvIter(ptr *[]*otg.BgpSrteV4TunnelTlv) BgpSrteV4PolicyBgpSrteV4TunnelTlvIter { + return &bgpSrteV4PolicyBgpSrteV4TunnelTlvIter{fieldPtr: ptr} +} + +type BgpSrteV4PolicyBgpSrteV4TunnelTlvIter interface { + setMsg(*bgpSrteV4Policy) BgpSrteV4PolicyBgpSrteV4TunnelTlvIter + Items() []BgpSrteV4TunnelTlv + Add() BgpSrteV4TunnelTlv + Append(items ...BgpSrteV4TunnelTlv) BgpSrteV4PolicyBgpSrteV4TunnelTlvIter + Set(index int, newObj BgpSrteV4TunnelTlv) BgpSrteV4PolicyBgpSrteV4TunnelTlvIter + Clear() BgpSrteV4PolicyBgpSrteV4TunnelTlvIter + clearHolderSlice() BgpSrteV4PolicyBgpSrteV4TunnelTlvIter + appendHolderSlice(item BgpSrteV4TunnelTlv) BgpSrteV4PolicyBgpSrteV4TunnelTlvIter +} + +func (obj *bgpSrteV4PolicyBgpSrteV4TunnelTlvIter) setMsg(msg *bgpSrteV4Policy) BgpSrteV4PolicyBgpSrteV4TunnelTlvIter { + obj.clearHolderSlice() + for _, val := range *obj.fieldPtr { + obj.appendHolderSlice(&bgpSrteV4TunnelTlv{obj: val}) + } + obj.obj = msg + return obj +} + +func (obj *bgpSrteV4PolicyBgpSrteV4TunnelTlvIter) Items() []BgpSrteV4TunnelTlv { + return obj.bgpSrteV4TunnelTlvSlice +} + +func (obj *bgpSrteV4PolicyBgpSrteV4TunnelTlvIter) Add() BgpSrteV4TunnelTlv { + newObj := &otg.BgpSrteV4TunnelTlv{} + *obj.fieldPtr = append(*obj.fieldPtr, newObj) + newLibObj := &bgpSrteV4TunnelTlv{obj: newObj} + newLibObj.setDefault() + obj.bgpSrteV4TunnelTlvSlice = append(obj.bgpSrteV4TunnelTlvSlice, newLibObj) + return newLibObj +} + +func (obj *bgpSrteV4PolicyBgpSrteV4TunnelTlvIter) Append(items ...BgpSrteV4TunnelTlv) BgpSrteV4PolicyBgpSrteV4TunnelTlvIter { + for _, item := range items { + newObj := item.Msg() + *obj.fieldPtr = append(*obj.fieldPtr, newObj) + obj.bgpSrteV4TunnelTlvSlice = append(obj.bgpSrteV4TunnelTlvSlice, item) + } + return obj +} + +func (obj *bgpSrteV4PolicyBgpSrteV4TunnelTlvIter) Set(index int, newObj BgpSrteV4TunnelTlv) BgpSrteV4PolicyBgpSrteV4TunnelTlvIter { + (*obj.fieldPtr)[index] = newObj.Msg() + obj.bgpSrteV4TunnelTlvSlice[index] = newObj + return obj +} +func (obj *bgpSrteV4PolicyBgpSrteV4TunnelTlvIter) Clear() BgpSrteV4PolicyBgpSrteV4TunnelTlvIter { + if len(*obj.fieldPtr) > 0 { + *obj.fieldPtr = []*otg.BgpSrteV4TunnelTlv{} + obj.bgpSrteV4TunnelTlvSlice = []BgpSrteV4TunnelTlv{} + } + return obj +} +func (obj *bgpSrteV4PolicyBgpSrteV4TunnelTlvIter) clearHolderSlice() BgpSrteV4PolicyBgpSrteV4TunnelTlvIter { + if len(obj.bgpSrteV4TunnelTlvSlice) > 0 { + obj.bgpSrteV4TunnelTlvSlice = []BgpSrteV4TunnelTlv{} + } + return obj +} +func (obj *bgpSrteV4PolicyBgpSrteV4TunnelTlvIter) appendHolderSlice(item BgpSrteV4TunnelTlv) BgpSrteV4PolicyBgpSrteV4TunnelTlvIter { + obj.bgpSrteV4TunnelTlvSlice = append(obj.bgpSrteV4TunnelTlvSlice, item) + return obj +} + +// Globally unique name of an object. It also serves as the primary key for arrays of objects. +// Name returns a string +func (obj *bgpSrteV4Policy) Name() string { + + return *obj.obj.Name + +} + +// Globally unique name of an object. It also serves as the primary key for arrays of objects. +// SetName sets the string value in the BgpSrteV4Policy object +func (obj *bgpSrteV4Policy) SetName(value string) BgpSrteV4Policy { + + obj.obj.Name = &value + return obj +} + +// If enabled means that this part of the configuration including any active 'children' nodes will be advertised to peer. If disabled, this means that though config is present, it is not taking any part of the test but can be activated at run-time to advertise just this part of the configuration to the peer. +// Active returns a bool +func (obj *bgpSrteV4Policy) Active() bool { + + return *obj.obj.Active + +} + +// If enabled means that this part of the configuration including any active 'children' nodes will be advertised to peer. If disabled, this means that though config is present, it is not taking any part of the test but can be activated at run-time to advertise just this part of the configuration to the peer. +// Active returns a bool +func (obj *bgpSrteV4Policy) HasActive() bool { + return obj.obj.Active != nil +} + +// If enabled means that this part of the configuration including any active 'children' nodes will be advertised to peer. If disabled, this means that though config is present, it is not taking any part of the test but can be activated at run-time to advertise just this part of the configuration to the peer. +// SetActive sets the bool value in the BgpSrteV4Policy object +func (obj *bgpSrteV4Policy) SetActive(value bool) BgpSrteV4Policy { + + obj.obj.Active = &value + return obj +} + +func (obj *bgpSrteV4Policy) validateObj(vObj *validation, set_default bool) { + if set_default { + obj.setDefault() + } + + // Ipv4Endpoint is required + if obj.obj.Ipv4Endpoint == nil { + vObj.validationErrors = append(vObj.validationErrors, "Ipv4Endpoint is required field on interface BgpSrteV4Policy") + } + if obj.obj.Ipv4Endpoint != nil { + + err := obj.validateIpv4(obj.Ipv4Endpoint()) + if err != nil { + vObj.validationErrors = append(vObj.validationErrors, fmt.Sprintf("%s %s", err.Error(), "on BgpSrteV4Policy.Ipv4Endpoint")) + } + + } + + if obj.obj.NextHopIpv4Address != nil { + + err := obj.validateIpv4(obj.NextHopIpv4Address()) + if err != nil { + vObj.validationErrors = append(vObj.validationErrors, fmt.Sprintf("%s %s", err.Error(), "on BgpSrteV4Policy.NextHopIpv4Address")) + } + + } + + if obj.obj.NextHopIpv6Address != nil { + + err := obj.validateIpv6(obj.NextHopIpv6Address()) + if err != nil { + vObj.validationErrors = append(vObj.validationErrors, fmt.Sprintf("%s %s", err.Error(), "on BgpSrteV4Policy.NextHopIpv6Address")) + } + + } + + if obj.obj.Advanced != nil { + + obj.Advanced().validateObj(vObj, set_default) + } + + if obj.obj.AddPath != nil { + + obj.AddPath().validateObj(vObj, set_default) + } + + if obj.obj.AsPath != nil { + + obj.AsPath().validateObj(vObj, set_default) + } + + if len(obj.obj.Communities) != 0 { + + if set_default { + obj.Communities().clearHolderSlice() + for _, item := range obj.obj.Communities { + obj.Communities().appendHolderSlice(&bgpCommunity{obj: item}) + } + } + for _, item := range obj.Communities().Items() { + item.validateObj(vObj, set_default) + } + + } + + if len(obj.obj.ExtCommunities) != 0 { + + if set_default { + obj.ExtCommunities().clearHolderSlice() + for _, item := range obj.obj.ExtCommunities { + obj.ExtCommunities().appendHolderSlice(&bgpExtCommunity{obj: item}) + } + } + for _, item := range obj.ExtCommunities().Items() { + item.validateObj(vObj, set_default) + } + + } + + if len(obj.obj.TunnelTlvs) != 0 { + + if set_default { + obj.TunnelTlvs().clearHolderSlice() + for _, item := range obj.obj.TunnelTlvs { + obj.TunnelTlvs().appendHolderSlice(&bgpSrteV4TunnelTlv{obj: item}) + } + } + for _, item := range obj.TunnelTlvs().Items() { + item.validateObj(vObj, set_default) + } + + } + + // Name is required + if obj.obj.Name == nil { + vObj.validationErrors = append(vObj.validationErrors, "Name is required field on interface BgpSrteV4Policy") + } +} + +func (obj *bgpSrteV4Policy) setDefault() { + if obj.obj.Distinguisher == nil { + obj.SetDistinguisher(1) + } + if obj.obj.Color == nil { + obj.SetColor(100) + } + if obj.obj.NextHopMode == nil { + obj.SetNextHopMode(BgpSrteV4PolicyNextHopMode.LOCAL_IP) + + } + if obj.obj.NextHopAddressType == nil { + obj.SetNextHopAddressType(BgpSrteV4PolicyNextHopAddressType.IPV4) + + } + if obj.obj.Active == nil { + obj.SetActive(true) + } + +} + +// ***** BgpSrteV6Policy ***** +type bgpSrteV6Policy struct { + validation + obj *otg.BgpSrteV6Policy + advancedHolder BgpRouteAdvanced + addPathHolder BgpAddPath + asPathHolder BgpAsPath + communitiesHolder BgpSrteV6PolicyBgpCommunityIter + extcommunitiesHolder BgpSrteV6PolicyBgpExtCommunityIter + tunnelTlvsHolder BgpSrteV6PolicyBgpSrteV6TunnelTlvIter +} + +func NewBgpSrteV6Policy() BgpSrteV6Policy { + obj := bgpSrteV6Policy{obj: &otg.BgpSrteV6Policy{}} + obj.setDefault() + return &obj +} + +func (obj *bgpSrteV6Policy) Msg() *otg.BgpSrteV6Policy { + return obj.obj +} + +func (obj *bgpSrteV6Policy) SetMsg(msg *otg.BgpSrteV6Policy) BgpSrteV6Policy { + obj.setNil() + proto.Merge(obj.obj, msg) + return obj +} + +func (obj *bgpSrteV6Policy) ToProto() (*otg.BgpSrteV6Policy, error) { + err := obj.validateToAndFrom() + if err != nil { + return nil, err + } + return obj.Msg(), nil +} + +func (obj *bgpSrteV6Policy) FromProto(msg *otg.BgpSrteV6Policy) (BgpSrteV6Policy, error) { + newObj := obj.SetMsg(msg) + err := newObj.validateToAndFrom() + if err != nil { + return nil, err + } + return newObj, nil +} + +func (obj *bgpSrteV6Policy) ToPbText() (string, error) { + vErr := obj.validateToAndFrom() + if vErr != nil { + return "", vErr + } + protoMarshal, err := proto.Marshal(obj.Msg()) + if err != nil { + return "", err + } + return string(protoMarshal), nil +} + +func (obj *bgpSrteV6Policy) FromPbText(value string) error { + retObj := proto.Unmarshal([]byte(value), obj.Msg()) + if retObj != nil { + return retObj + } + obj.setNil() + vErr := obj.validateToAndFrom() + if vErr != nil { + return vErr + } + return retObj +} + +func (obj *bgpSrteV6Policy) ToYaml() (string, error) { + vErr := obj.validateToAndFrom() + if vErr != nil { + return "", vErr + } + opts := protojson.MarshalOptions{ + UseProtoNames: true, + AllowPartial: true, + EmitUnpopulated: false, + } + data, err := opts.Marshal(obj.Msg()) + if err != nil { + return "", err + } + data, err = yaml.JSONToYAML(data) + if err != nil { + return "", err + } + return string(data), nil +} + +func (obj *bgpSrteV6Policy) FromYaml(value string) error { + if value == "" { + value = "{}" + } + data, err := yaml.YAMLToJSON([]byte(value)) + if err != nil { + return err + } + opts := protojson.UnmarshalOptions{ + AllowPartial: true, + DiscardUnknown: false, + } + uError := opts.Unmarshal([]byte(data), obj.Msg()) + if uError != nil { + return fmt.Errorf("unmarshal error %s", strings.Replace( + uError.Error(), "\u00a0", " ", -1)[7:]) + } + obj.setNil() + vErr := obj.validateToAndFrom() + if vErr != nil { + return vErr + } + return nil +} + +func (obj *bgpSrteV6Policy) ToJson() (string, error) { + vErr := obj.validateToAndFrom() + if vErr != nil { + return "", vErr + } + opts := protojson.MarshalOptions{ + UseProtoNames: true, + AllowPartial: true, + EmitUnpopulated: false, + Indent: " ", + } + data, err := opts.Marshal(obj.Msg()) + if err != nil { + return "", err + } + return string(data), nil +} + +func (obj *bgpSrteV6Policy) FromJson(value string) error { + opts := protojson.UnmarshalOptions{ + AllowPartial: true, + DiscardUnknown: false, + } + if value == "" { + value = "{}" + } + uError := opts.Unmarshal([]byte(value), obj.Msg()) + if uError != nil { + return fmt.Errorf("unmarshal error %s", strings.Replace( + uError.Error(), "\u00a0", " ", -1)[7:]) + } + obj.setNil() + err := obj.validateToAndFrom() + if err != nil { + return err + } + return nil +} + +func (obj *bgpSrteV6Policy) validateToAndFrom() error { + // emptyVars() + obj.validateObj(&obj.validation, true) + return obj.validationResult() +} + +func (obj *bgpSrteV6Policy) Validate() error { + // emptyVars() + obj.validateObj(&obj.validation, false) + return obj.validationResult() +} + +func (obj *bgpSrteV6Policy) String() string { + str, err := obj.ToYaml() + if err != nil { + return err.Error() + } + return str +} + +func (obj *bgpSrteV6Policy) Clone() (BgpSrteV6Policy, error) { + vErr := obj.Validate() + if vErr != nil { + return nil, vErr + } + newObj := NewBgpSrteV6Policy() + data, err := proto.Marshal(obj.Msg()) + if err != nil { + return nil, err + } + pbErr := proto.Unmarshal(data, newObj.Msg()) + if pbErr != nil { + return nil, pbErr + } + return newObj, nil +} + +func (obj *bgpSrteV6Policy) setNil() { + obj.advancedHolder = nil + obj.addPathHolder = nil + obj.asPathHolder = nil + obj.communitiesHolder = nil + obj.extcommunitiesHolder = nil + obj.tunnelTlvsHolder = nil + obj.validationErrors = nil + obj.warnings = nil + obj.constraints = make(map[string]map[string]Constraints) +} + +// BgpSrteV6Policy is configuration for BGP Segment Routing Traffic Engineering policy. + +type BgpSrteV6Policy interface { + Validation + // Msg marshals BgpSrteV6Policy to protobuf object *otg.BgpSrteV6Policy + // and doesn't set defaults + Msg() *otg.BgpSrteV6Policy + // SetMsg unmarshals BgpSrteV6Policy from protobuf object *otg.BgpSrteV6Policy + // and doesn't set defaults + SetMsg(*otg.BgpSrteV6Policy) BgpSrteV6Policy + // ToProto marshals BgpSrteV6Policy to protobuf object *otg.BgpSrteV6Policy + ToProto() (*otg.BgpSrteV6Policy, error) + // ToPbText marshals BgpSrteV6Policy to protobuf text + ToPbText() (string, error) + // ToYaml marshals BgpSrteV6Policy to YAML text + ToYaml() (string, error) + // ToJson marshals BgpSrteV6Policy to JSON text + ToJson() (string, error) + // FromProto unmarshals BgpSrteV6Policy from protobuf object *otg.BgpSrteV6Policy + FromProto(msg *otg.BgpSrteV6Policy) (BgpSrteV6Policy, error) + // FromPbText unmarshals BgpSrteV6Policy from protobuf text + FromPbText(value string) error + // FromYaml unmarshals BgpSrteV6Policy from YAML text + FromYaml(value string) error + // FromJson unmarshals BgpSrteV6Policy from JSON text + FromJson(value string) error + // Validate validates BgpSrteV6Policy + Validate() error + // A stringer function + String() string + // Clones the object + Clone() (BgpSrteV6Policy, error) + validateToAndFrom() error + validateObj(vObj *validation, set_default bool) + setDefault() + // Distinguisher returns uint32, set in BgpSrteV6Policy. + Distinguisher() uint32 + // SetDistinguisher assigns uint32 provided by user to BgpSrteV6Policy + SetDistinguisher(value uint32) BgpSrteV6Policy + // HasDistinguisher checks if Distinguisher has been set in BgpSrteV6Policy + HasDistinguisher() bool + // Color returns uint32, set in BgpSrteV6Policy. + Color() uint32 + // SetColor assigns uint32 provided by user to BgpSrteV6Policy + SetColor(value uint32) BgpSrteV6Policy + // HasColor checks if Color has been set in BgpSrteV6Policy + HasColor() bool + // Ipv6Endpoint returns string, set in BgpSrteV6Policy. + Ipv6Endpoint() string + // SetIpv6Endpoint assigns string provided by user to BgpSrteV6Policy + SetIpv6Endpoint(value string) BgpSrteV6Policy + // NextHopMode returns BgpSrteV6PolicyNextHopModeEnum, set in BgpSrteV6Policy + NextHopMode() BgpSrteV6PolicyNextHopModeEnum + // SetNextHopMode assigns BgpSrteV6PolicyNextHopModeEnum provided by user to BgpSrteV6Policy + SetNextHopMode(value BgpSrteV6PolicyNextHopModeEnum) BgpSrteV6Policy + // HasNextHopMode checks if NextHopMode has been set in BgpSrteV6Policy + HasNextHopMode() bool + // NextHopAddressType returns BgpSrteV6PolicyNextHopAddressTypeEnum, set in BgpSrteV6Policy + NextHopAddressType() BgpSrteV6PolicyNextHopAddressTypeEnum + // SetNextHopAddressType assigns BgpSrteV6PolicyNextHopAddressTypeEnum provided by user to BgpSrteV6Policy + SetNextHopAddressType(value BgpSrteV6PolicyNextHopAddressTypeEnum) BgpSrteV6Policy + // HasNextHopAddressType checks if NextHopAddressType has been set in BgpSrteV6Policy + HasNextHopAddressType() bool + // NextHopIpv4Address returns string, set in BgpSrteV6Policy. + NextHopIpv4Address() string + // SetNextHopIpv4Address assigns string provided by user to BgpSrteV6Policy + SetNextHopIpv4Address(value string) BgpSrteV6Policy + // HasNextHopIpv4Address checks if NextHopIpv4Address has been set in BgpSrteV6Policy + HasNextHopIpv4Address() bool + // NextHopIpv6Address returns string, set in BgpSrteV6Policy. + NextHopIpv6Address() string + // SetNextHopIpv6Address assigns string provided by user to BgpSrteV6Policy + SetNextHopIpv6Address(value string) BgpSrteV6Policy + // HasNextHopIpv6Address checks if NextHopIpv6Address has been set in BgpSrteV6Policy + HasNextHopIpv6Address() bool + // Advanced returns BgpRouteAdvanced, set in BgpSrteV6Policy. + // BgpRouteAdvanced is configuration for advanced BGP route range settings. + Advanced() BgpRouteAdvanced + // SetAdvanced assigns BgpRouteAdvanced provided by user to BgpSrteV6Policy. + // BgpRouteAdvanced is configuration for advanced BGP route range settings. + SetAdvanced(value BgpRouteAdvanced) BgpSrteV6Policy + // HasAdvanced checks if Advanced has been set in BgpSrteV6Policy + HasAdvanced() bool + // AddPath returns BgpAddPath, set in BgpSrteV6Policy. + // BgpAddPath is the BGP Additional Paths feature is a BGP extension that allows the advertisement of multiple paths for the same prefix without the new paths implicitly replacing any previous paths. + AddPath() BgpAddPath + // SetAddPath assigns BgpAddPath provided by user to BgpSrteV6Policy. + // BgpAddPath is the BGP Additional Paths feature is a BGP extension that allows the advertisement of multiple paths for the same prefix without the new paths implicitly replacing any previous paths. + SetAddPath(value BgpAddPath) BgpSrteV6Policy + // HasAddPath checks if AddPath has been set in BgpSrteV6Policy + HasAddPath() bool + // AsPath returns BgpAsPath, set in BgpSrteV6Policy. + // BgpAsPath is this attribute identifies the autonomous systems through which routing information carried in this UPDATE message has passed. This contains the configuration of how to include the Local AS in the AS path attribute of the MP REACH NLRI. It also contains optional configuration of additional AS Path Segments that can be included in the AS Path attribute. The AS Path consists of a Set or Sequence of Autonomous Systems (AS) numbers that a routing information passes through to reach the destination. + AsPath() BgpAsPath + // SetAsPath assigns BgpAsPath provided by user to BgpSrteV6Policy. + // BgpAsPath is this attribute identifies the autonomous systems through which routing information carried in this UPDATE message has passed. This contains the configuration of how to include the Local AS in the AS path attribute of the MP REACH NLRI. It also contains optional configuration of additional AS Path Segments that can be included in the AS Path attribute. The AS Path consists of a Set or Sequence of Autonomous Systems (AS) numbers that a routing information passes through to reach the destination. + SetAsPath(value BgpAsPath) BgpSrteV6Policy + // HasAsPath checks if AsPath has been set in BgpSrteV6Policy + HasAsPath() bool + // Communities returns BgpSrteV6PolicyBgpCommunityIterIter, set in BgpSrteV6Policy + Communities() BgpSrteV6PolicyBgpCommunityIter + // Extcommunities returns BgpSrteV6PolicyBgpExtCommunityIterIter, set in BgpSrteV6Policy + Extcommunities() BgpSrteV6PolicyBgpExtCommunityIter + // TunnelTlvs returns BgpSrteV6PolicyBgpSrteV6TunnelTlvIterIter, set in BgpSrteV6Policy + TunnelTlvs() BgpSrteV6PolicyBgpSrteV6TunnelTlvIter + // Name returns string, set in BgpSrteV6Policy. + Name() string + // SetName assigns string provided by user to BgpSrteV6Policy + SetName(value string) BgpSrteV6Policy + // Active returns bool, set in BgpSrteV6Policy. + Active() bool + // SetActive assigns bool provided by user to BgpSrteV6Policy + SetActive(value bool) BgpSrteV6Policy + // HasActive checks if Active has been set in BgpSrteV6Policy + HasActive() bool + setNil() +} + +// Identifies the policy in the context of (color and endpoint) tuple. It is used by the SR Policy originator to make unique multiple occurrences of the same SR Policy. +// Distinguisher returns a uint32 +func (obj *bgpSrteV6Policy) Distinguisher() uint32 { + + return *obj.obj.Distinguisher + +} + +// Identifies the policy in the context of (color and endpoint) tuple. It is used by the SR Policy originator to make unique multiple occurrences of the same SR Policy. +// Distinguisher returns a uint32 +func (obj *bgpSrteV6Policy) HasDistinguisher() bool { + return obj.obj.Distinguisher != nil +} + +// Identifies the policy in the context of (color and endpoint) tuple. It is used by the SR Policy originator to make unique multiple occurrences of the same SR Policy. +// SetDistinguisher sets the uint32 value in the BgpSrteV6Policy object +func (obj *bgpSrteV6Policy) SetDistinguisher(value uint32) BgpSrteV6Policy { + + obj.obj.Distinguisher = &value + return obj +} + +// Identifies the policy. It is used to match the color of the destination prefixes to steer traffic into the SR Policy. +// Color returns a uint32 +func (obj *bgpSrteV6Policy) Color() uint32 { + + return *obj.obj.Color + +} + +// Identifies the policy. It is used to match the color of the destination prefixes to steer traffic into the SR Policy. +// Color returns a uint32 +func (obj *bgpSrteV6Policy) HasColor() bool { + return obj.obj.Color != nil +} + +// Identifies the policy. It is used to match the color of the destination prefixes to steer traffic into the SR Policy. +// SetColor sets the uint32 value in the BgpSrteV6Policy object +func (obj *bgpSrteV6Policy) SetColor(value uint32) BgpSrteV6Policy { + + obj.obj.Color = &value + return obj +} + +// Specifies a single node or a set of nodes (e.g., an anycast address). It is selected on the basis of the SR Policy type (AFI). +// Ipv6Endpoint returns a string +func (obj *bgpSrteV6Policy) Ipv6Endpoint() string { + + return *obj.obj.Ipv6Endpoint + +} + +// Specifies a single node or a set of nodes (e.g., an anycast address). It is selected on the basis of the SR Policy type (AFI). +// SetIpv6Endpoint sets the string value in the BgpSrteV6Policy object +func (obj *bgpSrteV6Policy) SetIpv6Endpoint(value string) BgpSrteV6Policy { + + obj.obj.Ipv6Endpoint = &value + return obj +} + +type BgpSrteV6PolicyNextHopModeEnum string + +// Enum of NextHopMode on BgpSrteV6Policy +var BgpSrteV6PolicyNextHopMode = struct { + LOCAL_IP BgpSrteV6PolicyNextHopModeEnum + MANUAL BgpSrteV6PolicyNextHopModeEnum +}{ + LOCAL_IP: BgpSrteV6PolicyNextHopModeEnum("local_ip"), + MANUAL: BgpSrteV6PolicyNextHopModeEnum("manual"), +} + +func (obj *bgpSrteV6Policy) NextHopMode() BgpSrteV6PolicyNextHopModeEnum { + return BgpSrteV6PolicyNextHopModeEnum(obj.obj.NextHopMode.Enum().String()) +} + +// Mode for choosing the NextHop in MP REACH NLRI. Available modes are : Local IP: Automatically fills the Nexthop with the Local IP of the BGP peer. For IPv6 BGP peer the Nexthop Encoding capability should be enabled. Manual: Override the Nexthop with any arbitrary IPv4/IPv6 address. +// NextHopMode returns a string +func (obj *bgpSrteV6Policy) HasNextHopMode() bool { + return obj.obj.NextHopMode != nil +} + +func (obj *bgpSrteV6Policy) SetNextHopMode(value BgpSrteV6PolicyNextHopModeEnum) BgpSrteV6Policy { + intValue, ok := otg.BgpSrteV6Policy_NextHopMode_Enum_value[string(value)] + if !ok { + obj.validationErrors = append(obj.validationErrors, fmt.Sprintf( + "%s is not a valid choice on BgpSrteV6PolicyNextHopModeEnum", string(value))) + return obj + } + enumValue := otg.BgpSrteV6Policy_NextHopMode_Enum(intValue) + obj.obj.NextHopMode = &enumValue + + return obj +} + +type BgpSrteV6PolicyNextHopAddressTypeEnum string + +// Enum of NextHopAddressType on BgpSrteV6Policy +var BgpSrteV6PolicyNextHopAddressType = struct { + IPV4 BgpSrteV6PolicyNextHopAddressTypeEnum + IPV6 BgpSrteV6PolicyNextHopAddressTypeEnum +}{ + IPV4: BgpSrteV6PolicyNextHopAddressTypeEnum("ipv4"), + IPV6: BgpSrteV6PolicyNextHopAddressTypeEnum("ipv6"), +} + +func (obj *bgpSrteV6Policy) NextHopAddressType() BgpSrteV6PolicyNextHopAddressTypeEnum { + return BgpSrteV6PolicyNextHopAddressTypeEnum(obj.obj.NextHopAddressType.Enum().String()) +} + +// Type of next hop IP address to be used when 'next_hop_mode' is set to 'manual'. +// NextHopAddressType returns a string +func (obj *bgpSrteV6Policy) HasNextHopAddressType() bool { + return obj.obj.NextHopAddressType != nil +} + +func (obj *bgpSrteV6Policy) SetNextHopAddressType(value BgpSrteV6PolicyNextHopAddressTypeEnum) BgpSrteV6Policy { + intValue, ok := otg.BgpSrteV6Policy_NextHopAddressType_Enum_value[string(value)] + if !ok { + obj.validationErrors = append(obj.validationErrors, fmt.Sprintf( + "%s is not a valid choice on BgpSrteV6PolicyNextHopAddressTypeEnum", string(value))) + return obj + } + enumValue := otg.BgpSrteV6Policy_NextHopAddressType_Enum(intValue) + obj.obj.NextHopAddressType = &enumValue + + return obj +} + +// The IPv4 address of the Nexthop if the 'next_hop_mode' is 'manual' and the Nexthop type 'next_hop_address_type' is IPv4. If BGP peer is of type IPv6, Nexthop Encoding capability extended_next_hop_encoding should be enabled. +// NextHopIpv4Address returns a string +func (obj *bgpSrteV6Policy) NextHopIpv4Address() string { + + return *obj.obj.NextHopIpv4Address + +} + +// The IPv4 address of the Nexthop if the 'next_hop_mode' is 'manual' and the Nexthop type 'next_hop_address_type' is IPv4. If BGP peer is of type IPv6, Nexthop Encoding capability extended_next_hop_encoding should be enabled. +// NextHopIpv4Address returns a string +func (obj *bgpSrteV6Policy) HasNextHopIpv4Address() bool { + return obj.obj.NextHopIpv4Address != nil +} + +// The IPv4 address of the Nexthop if the 'next_hop_mode' is 'manual' and the Nexthop type 'next_hop_address_type' is IPv4. If BGP peer is of type IPv6, Nexthop Encoding capability extended_next_hop_encoding should be enabled. +// SetNextHopIpv4Address sets the string value in the BgpSrteV6Policy object +func (obj *bgpSrteV6Policy) SetNextHopIpv4Address(value string) BgpSrteV6Policy { + + obj.obj.NextHopIpv4Address = &value + return obj +} + +// The IPv6 address of the next hop if the Nexthop Mode 'next_hop_address_type' is 'manual' and the Nexthop type 'next_hop_address_type' is IPv6. +// NextHopIpv6Address returns a string +func (obj *bgpSrteV6Policy) NextHopIpv6Address() string { + + return *obj.obj.NextHopIpv6Address + +} + +// The IPv6 address of the next hop if the Nexthop Mode 'next_hop_address_type' is 'manual' and the Nexthop type 'next_hop_address_type' is IPv6. +// NextHopIpv6Address returns a string +func (obj *bgpSrteV6Policy) HasNextHopIpv6Address() bool { + return obj.obj.NextHopIpv6Address != nil +} + +// The IPv6 address of the next hop if the Nexthop Mode 'next_hop_address_type' is 'manual' and the Nexthop type 'next_hop_address_type' is IPv6. +// SetNextHopIpv6Address sets the string value in the BgpSrteV6Policy object +func (obj *bgpSrteV6Policy) SetNextHopIpv6Address(value string) BgpSrteV6Policy { + + obj.obj.NextHopIpv6Address = &value + return obj +} + +// description is TBD +// Advanced returns a BgpRouteAdvanced +func (obj *bgpSrteV6Policy) Advanced() BgpRouteAdvanced { + if obj.obj.Advanced == nil { + obj.obj.Advanced = NewBgpRouteAdvanced().Msg() + } + if obj.advancedHolder == nil { + obj.advancedHolder = &bgpRouteAdvanced{obj: obj.obj.Advanced} + } + return obj.advancedHolder +} + +// description is TBD +// Advanced returns a BgpRouteAdvanced +func (obj *bgpSrteV6Policy) HasAdvanced() bool { + return obj.obj.Advanced != nil +} + +// description is TBD +// SetAdvanced sets the BgpRouteAdvanced value in the BgpSrteV6Policy object +func (obj *bgpSrteV6Policy) SetAdvanced(value BgpRouteAdvanced) BgpSrteV6Policy { + + obj.advancedHolder = nil + obj.obj.Advanced = value.Msg() + + return obj +} + +// description is TBD +// AddPath returns a BgpAddPath +func (obj *bgpSrteV6Policy) AddPath() BgpAddPath { + if obj.obj.AddPath == nil { + obj.obj.AddPath = NewBgpAddPath().Msg() + } + if obj.addPathHolder == nil { + obj.addPathHolder = &bgpAddPath{obj: obj.obj.AddPath} + } + return obj.addPathHolder +} + +// description is TBD +// AddPath returns a BgpAddPath +func (obj *bgpSrteV6Policy) HasAddPath() bool { + return obj.obj.AddPath != nil +} + +// description is TBD +// SetAddPath sets the BgpAddPath value in the BgpSrteV6Policy object +func (obj *bgpSrteV6Policy) SetAddPath(value BgpAddPath) BgpSrteV6Policy { + + obj.addPathHolder = nil + obj.obj.AddPath = value.Msg() + + return obj +} + +// description is TBD +// AsPath returns a BgpAsPath +func (obj *bgpSrteV6Policy) AsPath() BgpAsPath { + if obj.obj.AsPath == nil { + obj.obj.AsPath = NewBgpAsPath().Msg() + } + if obj.asPathHolder == nil { + obj.asPathHolder = &bgpAsPath{obj: obj.obj.AsPath} + } + return obj.asPathHolder +} + +// description is TBD +// AsPath returns a BgpAsPath +func (obj *bgpSrteV6Policy) HasAsPath() bool { + return obj.obj.AsPath != nil +} + +// description is TBD +// SetAsPath sets the BgpAsPath value in the BgpSrteV6Policy object +func (obj *bgpSrteV6Policy) SetAsPath(value BgpAsPath) BgpSrteV6Policy { + + obj.asPathHolder = nil + obj.obj.AsPath = value.Msg() + + return obj +} + +// Optional community settings. +// Communities returns a []BgpCommunity +func (obj *bgpSrteV6Policy) Communities() BgpSrteV6PolicyBgpCommunityIter { + if len(obj.obj.Communities) == 0 { + obj.obj.Communities = []*otg.BgpCommunity{} + } + if obj.communitiesHolder == nil { + obj.communitiesHolder = newBgpSrteV6PolicyBgpCommunityIter(&obj.obj.Communities).setMsg(obj) + } + return obj.communitiesHolder +} + +type bgpSrteV6PolicyBgpCommunityIter struct { + obj *bgpSrteV6Policy + bgpCommunitySlice []BgpCommunity + fieldPtr *[]*otg.BgpCommunity +} + +func newBgpSrteV6PolicyBgpCommunityIter(ptr *[]*otg.BgpCommunity) BgpSrteV6PolicyBgpCommunityIter { + return &bgpSrteV6PolicyBgpCommunityIter{fieldPtr: ptr} +} + +type BgpSrteV6PolicyBgpCommunityIter interface { + setMsg(*bgpSrteV6Policy) BgpSrteV6PolicyBgpCommunityIter + Items() []BgpCommunity + Add() BgpCommunity + Append(items ...BgpCommunity) BgpSrteV6PolicyBgpCommunityIter + Set(index int, newObj BgpCommunity) BgpSrteV6PolicyBgpCommunityIter + Clear() BgpSrteV6PolicyBgpCommunityIter + clearHolderSlice() BgpSrteV6PolicyBgpCommunityIter + appendHolderSlice(item BgpCommunity) BgpSrteV6PolicyBgpCommunityIter +} + +func (obj *bgpSrteV6PolicyBgpCommunityIter) setMsg(msg *bgpSrteV6Policy) BgpSrteV6PolicyBgpCommunityIter { + obj.clearHolderSlice() + for _, val := range *obj.fieldPtr { + obj.appendHolderSlice(&bgpCommunity{obj: val}) + } + obj.obj = msg + return obj +} + +func (obj *bgpSrteV6PolicyBgpCommunityIter) Items() []BgpCommunity { + return obj.bgpCommunitySlice +} + +func (obj *bgpSrteV6PolicyBgpCommunityIter) Add() BgpCommunity { + newObj := &otg.BgpCommunity{} + *obj.fieldPtr = append(*obj.fieldPtr, newObj) + newLibObj := &bgpCommunity{obj: newObj} + newLibObj.setDefault() + obj.bgpCommunitySlice = append(obj.bgpCommunitySlice, newLibObj) + return newLibObj +} + +func (obj *bgpSrteV6PolicyBgpCommunityIter) Append(items ...BgpCommunity) BgpSrteV6PolicyBgpCommunityIter { + for _, item := range items { + newObj := item.Msg() + *obj.fieldPtr = append(*obj.fieldPtr, newObj) + obj.bgpCommunitySlice = append(obj.bgpCommunitySlice, item) + } + return obj +} + +func (obj *bgpSrteV6PolicyBgpCommunityIter) Set(index int, newObj BgpCommunity) BgpSrteV6PolicyBgpCommunityIter { + (*obj.fieldPtr)[index] = newObj.Msg() + obj.bgpCommunitySlice[index] = newObj + return obj +} +func (obj *bgpSrteV6PolicyBgpCommunityIter) Clear() BgpSrteV6PolicyBgpCommunityIter { + if len(*obj.fieldPtr) > 0 { + *obj.fieldPtr = []*otg.BgpCommunity{} + obj.bgpCommunitySlice = []BgpCommunity{} + } + return obj +} +func (obj *bgpSrteV6PolicyBgpCommunityIter) clearHolderSlice() BgpSrteV6PolicyBgpCommunityIter { + if len(obj.bgpCommunitySlice) > 0 { + obj.bgpCommunitySlice = []BgpCommunity{} + } + return obj +} +func (obj *bgpSrteV6PolicyBgpCommunityIter) appendHolderSlice(item BgpCommunity) BgpSrteV6PolicyBgpCommunityIter { + obj.bgpCommunitySlice = append(obj.bgpCommunitySlice, item) + return obj +} + +// Optional Extended Community settings. The Extended Communities Attribute is a transitive optional BGP attribute, with the Type Code 16. Community and Extended Communities attributes are utilized to trigger routing decisions, such as acceptance, rejection, preference, or redistribution. An extended community is an 8-Bytes value. It is divided into two main parts. The first 2 Bytes of the community encode a type and sub-type fields and the last 6 Bytes carry a unique set of data in a format defined by the type and sub-type field. Extended communities provide a larger range for grouping or categorizing communities. When type is administrator_as_2octet or administrator_as_4octet, the valid sub types are route target and origin. The valid value for administrator_as_2octet and administrator_as_4octet type is either two byte AS followed by four byte local administrator id or four byte AS followed by two byte local administrator id. When type is administrator_ipv4_address the valid sub types are route target and origin. The valid value for administrator_ipv4_address is a four byte IPv4 address followed by a two byte local administrator id. When type is opaque, valid sub types are color and encapsulation. When sub type is color, first two bytes of the value field contain flags and last four bytes contains the value of the color. When sub type is encapsulation the first four bytes of value field are reserved and last two bytes carries the tunnel type from IANA's "ETHER TYPES" registry e.g IPv4 (protocol type = 0x0800), IPv6 (protocol type = 0x86dd), and MPLS (protocol type = 0x8847). When type is administrator_as_2octet_link_bandwidth the valid sub type is extended_bandwidth. The first two bytes of the value field contains the AS number and the last four bytes contains the bandwidth in IEEE floating point format. When type is evpn the valid subtype is mac_address. In the value field the low-order bit of the first byte(Flags) is defined as the "Sticky/static" flag and may be set to 1, indicating the MAC address is static and cannot move. The second byte is reserved and the last four bytes contain the sequence number which is used to ensure that PEs retain the correct MAC/IP Advertisement route when multiple updates occur for the same MAC address. +// Extcommunities returns a []BgpExtCommunity +func (obj *bgpSrteV6Policy) Extcommunities() BgpSrteV6PolicyBgpExtCommunityIter { + if len(obj.obj.Extcommunities) == 0 { + obj.obj.Extcommunities = []*otg.BgpExtCommunity{} + } + if obj.extcommunitiesHolder == nil { + obj.extcommunitiesHolder = newBgpSrteV6PolicyBgpExtCommunityIter(&obj.obj.Extcommunities).setMsg(obj) + } + return obj.extcommunitiesHolder +} + +type bgpSrteV6PolicyBgpExtCommunityIter struct { + obj *bgpSrteV6Policy + bgpExtCommunitySlice []BgpExtCommunity + fieldPtr *[]*otg.BgpExtCommunity +} + +func newBgpSrteV6PolicyBgpExtCommunityIter(ptr *[]*otg.BgpExtCommunity) BgpSrteV6PolicyBgpExtCommunityIter { + return &bgpSrteV6PolicyBgpExtCommunityIter{fieldPtr: ptr} +} + +type BgpSrteV6PolicyBgpExtCommunityIter interface { + setMsg(*bgpSrteV6Policy) BgpSrteV6PolicyBgpExtCommunityIter + Items() []BgpExtCommunity + Add() BgpExtCommunity + Append(items ...BgpExtCommunity) BgpSrteV6PolicyBgpExtCommunityIter + Set(index int, newObj BgpExtCommunity) BgpSrteV6PolicyBgpExtCommunityIter + Clear() BgpSrteV6PolicyBgpExtCommunityIter + clearHolderSlice() BgpSrteV6PolicyBgpExtCommunityIter + appendHolderSlice(item BgpExtCommunity) BgpSrteV6PolicyBgpExtCommunityIter +} + +func (obj *bgpSrteV6PolicyBgpExtCommunityIter) setMsg(msg *bgpSrteV6Policy) BgpSrteV6PolicyBgpExtCommunityIter { + obj.clearHolderSlice() + for _, val := range *obj.fieldPtr { + obj.appendHolderSlice(&bgpExtCommunity{obj: val}) + } + obj.obj = msg + return obj +} + +func (obj *bgpSrteV6PolicyBgpExtCommunityIter) Items() []BgpExtCommunity { + return obj.bgpExtCommunitySlice +} + +func (obj *bgpSrteV6PolicyBgpExtCommunityIter) Add() BgpExtCommunity { + newObj := &otg.BgpExtCommunity{} + *obj.fieldPtr = append(*obj.fieldPtr, newObj) + newLibObj := &bgpExtCommunity{obj: newObj} + newLibObj.setDefault() + obj.bgpExtCommunitySlice = append(obj.bgpExtCommunitySlice, newLibObj) + return newLibObj +} + +func (obj *bgpSrteV6PolicyBgpExtCommunityIter) Append(items ...BgpExtCommunity) BgpSrteV6PolicyBgpExtCommunityIter { + for _, item := range items { + newObj := item.Msg() + *obj.fieldPtr = append(*obj.fieldPtr, newObj) + obj.bgpExtCommunitySlice = append(obj.bgpExtCommunitySlice, item) + } + return obj +} + +func (obj *bgpSrteV6PolicyBgpExtCommunityIter) Set(index int, newObj BgpExtCommunity) BgpSrteV6PolicyBgpExtCommunityIter { + (*obj.fieldPtr)[index] = newObj.Msg() + obj.bgpExtCommunitySlice[index] = newObj + return obj +} +func (obj *bgpSrteV6PolicyBgpExtCommunityIter) Clear() BgpSrteV6PolicyBgpExtCommunityIter { + if len(*obj.fieldPtr) > 0 { + *obj.fieldPtr = []*otg.BgpExtCommunity{} + obj.bgpExtCommunitySlice = []BgpExtCommunity{} + } + return obj +} +func (obj *bgpSrteV6PolicyBgpExtCommunityIter) clearHolderSlice() BgpSrteV6PolicyBgpExtCommunityIter { + if len(obj.bgpExtCommunitySlice) > 0 { + obj.bgpExtCommunitySlice = []BgpExtCommunity{} + } + return obj +} +func (obj *bgpSrteV6PolicyBgpExtCommunityIter) appendHolderSlice(item BgpExtCommunity) BgpSrteV6PolicyBgpExtCommunityIter { + obj.bgpExtCommunitySlice = append(obj.bgpExtCommunitySlice, item) + return obj +} + +// List of optional tunnel TLV settings. +// TunnelTlvs returns a []BgpSrteV6TunnelTlv +func (obj *bgpSrteV6Policy) TunnelTlvs() BgpSrteV6PolicyBgpSrteV6TunnelTlvIter { + if len(obj.obj.TunnelTlvs) == 0 { + obj.obj.TunnelTlvs = []*otg.BgpSrteV6TunnelTlv{} + } + if obj.tunnelTlvsHolder == nil { + obj.tunnelTlvsHolder = newBgpSrteV6PolicyBgpSrteV6TunnelTlvIter(&obj.obj.TunnelTlvs).setMsg(obj) + } + return obj.tunnelTlvsHolder +} + +type bgpSrteV6PolicyBgpSrteV6TunnelTlvIter struct { + obj *bgpSrteV6Policy + bgpSrteV6TunnelTlvSlice []BgpSrteV6TunnelTlv + fieldPtr *[]*otg.BgpSrteV6TunnelTlv +} + +func newBgpSrteV6PolicyBgpSrteV6TunnelTlvIter(ptr *[]*otg.BgpSrteV6TunnelTlv) BgpSrteV6PolicyBgpSrteV6TunnelTlvIter { + return &bgpSrteV6PolicyBgpSrteV6TunnelTlvIter{fieldPtr: ptr} +} + +type BgpSrteV6PolicyBgpSrteV6TunnelTlvIter interface { + setMsg(*bgpSrteV6Policy) BgpSrteV6PolicyBgpSrteV6TunnelTlvIter + Items() []BgpSrteV6TunnelTlv + Add() BgpSrteV6TunnelTlv + Append(items ...BgpSrteV6TunnelTlv) BgpSrteV6PolicyBgpSrteV6TunnelTlvIter + Set(index int, newObj BgpSrteV6TunnelTlv) BgpSrteV6PolicyBgpSrteV6TunnelTlvIter + Clear() BgpSrteV6PolicyBgpSrteV6TunnelTlvIter + clearHolderSlice() BgpSrteV6PolicyBgpSrteV6TunnelTlvIter + appendHolderSlice(item BgpSrteV6TunnelTlv) BgpSrteV6PolicyBgpSrteV6TunnelTlvIter +} + +func (obj *bgpSrteV6PolicyBgpSrteV6TunnelTlvIter) setMsg(msg *bgpSrteV6Policy) BgpSrteV6PolicyBgpSrteV6TunnelTlvIter { + obj.clearHolderSlice() + for _, val := range *obj.fieldPtr { + obj.appendHolderSlice(&bgpSrteV6TunnelTlv{obj: val}) + } + obj.obj = msg + return obj +} + +func (obj *bgpSrteV6PolicyBgpSrteV6TunnelTlvIter) Items() []BgpSrteV6TunnelTlv { + return obj.bgpSrteV6TunnelTlvSlice +} + +func (obj *bgpSrteV6PolicyBgpSrteV6TunnelTlvIter) Add() BgpSrteV6TunnelTlv { + newObj := &otg.BgpSrteV6TunnelTlv{} + *obj.fieldPtr = append(*obj.fieldPtr, newObj) + newLibObj := &bgpSrteV6TunnelTlv{obj: newObj} + newLibObj.setDefault() + obj.bgpSrteV6TunnelTlvSlice = append(obj.bgpSrteV6TunnelTlvSlice, newLibObj) + return newLibObj +} + +func (obj *bgpSrteV6PolicyBgpSrteV6TunnelTlvIter) Append(items ...BgpSrteV6TunnelTlv) BgpSrteV6PolicyBgpSrteV6TunnelTlvIter { + for _, item := range items { + newObj := item.Msg() + *obj.fieldPtr = append(*obj.fieldPtr, newObj) + obj.bgpSrteV6TunnelTlvSlice = append(obj.bgpSrteV6TunnelTlvSlice, item) + } + return obj +} + +func (obj *bgpSrteV6PolicyBgpSrteV6TunnelTlvIter) Set(index int, newObj BgpSrteV6TunnelTlv) BgpSrteV6PolicyBgpSrteV6TunnelTlvIter { + (*obj.fieldPtr)[index] = newObj.Msg() + obj.bgpSrteV6TunnelTlvSlice[index] = newObj + return obj +} +func (obj *bgpSrteV6PolicyBgpSrteV6TunnelTlvIter) Clear() BgpSrteV6PolicyBgpSrteV6TunnelTlvIter { + if len(*obj.fieldPtr) > 0 { + *obj.fieldPtr = []*otg.BgpSrteV6TunnelTlv{} + obj.bgpSrteV6TunnelTlvSlice = []BgpSrteV6TunnelTlv{} + } + return obj +} +func (obj *bgpSrteV6PolicyBgpSrteV6TunnelTlvIter) clearHolderSlice() BgpSrteV6PolicyBgpSrteV6TunnelTlvIter { + if len(obj.bgpSrteV6TunnelTlvSlice) > 0 { + obj.bgpSrteV6TunnelTlvSlice = []BgpSrteV6TunnelTlv{} + } + return obj +} +func (obj *bgpSrteV6PolicyBgpSrteV6TunnelTlvIter) appendHolderSlice(item BgpSrteV6TunnelTlv) BgpSrteV6PolicyBgpSrteV6TunnelTlvIter { + obj.bgpSrteV6TunnelTlvSlice = append(obj.bgpSrteV6TunnelTlvSlice, item) + return obj +} + +// Globally unique name of an object. It also serves as the primary key for arrays of objects. +// Name returns a string +func (obj *bgpSrteV6Policy) Name() string { + + return *obj.obj.Name + +} + +// Globally unique name of an object. It also serves as the primary key for arrays of objects. +// SetName sets the string value in the BgpSrteV6Policy object +func (obj *bgpSrteV6Policy) SetName(value string) BgpSrteV6Policy { + + obj.obj.Name = &value + return obj +} + +// If enabled means that this part of the configuration including any active 'children' nodes will be advertised to peer. If disabled, this means that though config is present, it is not taking any part of the test but can be activated at run-time to advertise just this part of the configuration to the peer. +// Active returns a bool +func (obj *bgpSrteV6Policy) Active() bool { + + return *obj.obj.Active + +} + +// If enabled means that this part of the configuration including any active 'children' nodes will be advertised to peer. If disabled, this means that though config is present, it is not taking any part of the test but can be activated at run-time to advertise just this part of the configuration to the peer. +// Active returns a bool +func (obj *bgpSrteV6Policy) HasActive() bool { + return obj.obj.Active != nil +} + +// If enabled means that this part of the configuration including any active 'children' nodes will be advertised to peer. If disabled, this means that though config is present, it is not taking any part of the test but can be activated at run-time to advertise just this part of the configuration to the peer. +// SetActive sets the bool value in the BgpSrteV6Policy object +func (obj *bgpSrteV6Policy) SetActive(value bool) BgpSrteV6Policy { + + obj.obj.Active = &value + return obj +} + +func (obj *bgpSrteV6Policy) validateObj(vObj *validation, set_default bool) { + if set_default { + obj.setDefault() + } + + // Ipv6Endpoint is required + if obj.obj.Ipv6Endpoint == nil { + vObj.validationErrors = append(vObj.validationErrors, "Ipv6Endpoint is required field on interface BgpSrteV6Policy") + } + if obj.obj.Ipv6Endpoint != nil { + + err := obj.validateIpv6(obj.Ipv6Endpoint()) + if err != nil { + vObj.validationErrors = append(vObj.validationErrors, fmt.Sprintf("%s %s", err.Error(), "on BgpSrteV6Policy.Ipv6Endpoint")) + } + + } + + if obj.obj.NextHopIpv4Address != nil { + + err := obj.validateIpv4(obj.NextHopIpv4Address()) + if err != nil { + vObj.validationErrors = append(vObj.validationErrors, fmt.Sprintf("%s %s", err.Error(), "on BgpSrteV6Policy.NextHopIpv4Address")) + } + + } + + if obj.obj.NextHopIpv6Address != nil { + + err := obj.validateIpv6(obj.NextHopIpv6Address()) + if err != nil { + vObj.validationErrors = append(vObj.validationErrors, fmt.Sprintf("%s %s", err.Error(), "on BgpSrteV6Policy.NextHopIpv6Address")) + } + + } + + if obj.obj.Advanced != nil { + + obj.Advanced().validateObj(vObj, set_default) + } + + if obj.obj.AddPath != nil { + + obj.AddPath().validateObj(vObj, set_default) + } + + if obj.obj.AsPath != nil { + + obj.AsPath().validateObj(vObj, set_default) + } + + if len(obj.obj.Communities) != 0 { + + if set_default { + obj.Communities().clearHolderSlice() + for _, item := range obj.obj.Communities { + obj.Communities().appendHolderSlice(&bgpCommunity{obj: item}) + } + } + for _, item := range obj.Communities().Items() { + item.validateObj(vObj, set_default) + } + + } + + if len(obj.obj.Extcommunities) != 0 { + + if set_default { + obj.Extcommunities().clearHolderSlice() + for _, item := range obj.obj.Extcommunities { + obj.Extcommunities().appendHolderSlice(&bgpExtCommunity{obj: item}) + } + } + for _, item := range obj.Extcommunities().Items() { + item.validateObj(vObj, set_default) + } + + } + + if len(obj.obj.TunnelTlvs) != 0 { + + if set_default { + obj.TunnelTlvs().clearHolderSlice() + for _, item := range obj.obj.TunnelTlvs { + obj.TunnelTlvs().appendHolderSlice(&bgpSrteV6TunnelTlv{obj: item}) + } + } + for _, item := range obj.TunnelTlvs().Items() { + item.validateObj(vObj, set_default) + } + + } + + // Name is required + if obj.obj.Name == nil { + vObj.validationErrors = append(vObj.validationErrors, "Name is required field on interface BgpSrteV6Policy") + } +} + +func (obj *bgpSrteV6Policy) setDefault() { + if obj.obj.Distinguisher == nil { + obj.SetDistinguisher(1) + } + if obj.obj.Color == nil { + obj.SetColor(100) + } + if obj.obj.NextHopMode == nil { + obj.SetNextHopMode(BgpSrteV6PolicyNextHopMode.LOCAL_IP) + + } + if obj.obj.NextHopAddressType == nil { + obj.SetNextHopAddressType(BgpSrteV6PolicyNextHopAddressType.IPV6) + + } + if obj.obj.NextHopIpv4Address == nil { + obj.SetNextHopIpv4Address("0.0.0.0") + } + if obj.obj.NextHopIpv6Address == nil { + obj.SetNextHopIpv6Address("::0") + } + if obj.obj.Active == nil { + obj.SetActive(true) + } + +} + +// ***** BgpGracefulRestart ***** +type bgpGracefulRestart struct { + validation + obj *otg.BgpGracefulRestart +} + +func NewBgpGracefulRestart() BgpGracefulRestart { + obj := bgpGracefulRestart{obj: &otg.BgpGracefulRestart{}} + obj.setDefault() + return &obj +} + +func (obj *bgpGracefulRestart) Msg() *otg.BgpGracefulRestart { + return obj.obj +} + +func (obj *bgpGracefulRestart) SetMsg(msg *otg.BgpGracefulRestart) BgpGracefulRestart { + + proto.Merge(obj.obj, msg) + return obj +} + +func (obj *bgpGracefulRestart) ToProto() (*otg.BgpGracefulRestart, error) { + err := obj.validateToAndFrom() + if err != nil { + return nil, err + } + return obj.Msg(), nil +} + +func (obj *bgpGracefulRestart) FromProto(msg *otg.BgpGracefulRestart) (BgpGracefulRestart, error) { + newObj := obj.SetMsg(msg) + err := newObj.validateToAndFrom() + if err != nil { + return nil, err + } + return newObj, nil +} + +func (obj *bgpGracefulRestart) ToPbText() (string, error) { + vErr := obj.validateToAndFrom() + if vErr != nil { + return "", vErr + } + protoMarshal, err := proto.Marshal(obj.Msg()) + if err != nil { + return "", err + } + return string(protoMarshal), nil +} + +func (obj *bgpGracefulRestart) FromPbText(value string) error { + retObj := proto.Unmarshal([]byte(value), obj.Msg()) + if retObj != nil { + return retObj + } + + vErr := obj.validateToAndFrom() + if vErr != nil { + return vErr + } + return retObj +} + +func (obj *bgpGracefulRestart) ToYaml() (string, error) { + vErr := obj.validateToAndFrom() + if vErr != nil { + return "", vErr + } + opts := protojson.MarshalOptions{ + UseProtoNames: true, + AllowPartial: true, + EmitUnpopulated: false, + } + data, err := opts.Marshal(obj.Msg()) + if err != nil { + return "", err + } + data, err = yaml.JSONToYAML(data) + if err != nil { + return "", err + } + return string(data), nil +} + +func (obj *bgpGracefulRestart) FromYaml(value string) error { + if value == "" { + value = "{}" + } + data, err := yaml.YAMLToJSON([]byte(value)) + if err != nil { + return err + } + opts := protojson.UnmarshalOptions{ + AllowPartial: true, + DiscardUnknown: false, + } + uError := opts.Unmarshal([]byte(data), obj.Msg()) + if uError != nil { + return fmt.Errorf("unmarshal error %s", strings.Replace( + uError.Error(), "\u00a0", " ", -1)[7:]) + } + + vErr := obj.validateToAndFrom() + if vErr != nil { + return vErr + } + return nil +} + +func (obj *bgpGracefulRestart) ToJson() (string, error) { + vErr := obj.validateToAndFrom() + if vErr != nil { + return "", vErr + } + opts := protojson.MarshalOptions{ + UseProtoNames: true, + AllowPartial: true, + EmitUnpopulated: false, + Indent: " ", + } + data, err := opts.Marshal(obj.Msg()) + if err != nil { + return "", err + } + return string(data), nil +} + +func (obj *bgpGracefulRestart) FromJson(value string) error { + opts := protojson.UnmarshalOptions{ + AllowPartial: true, + DiscardUnknown: false, + } + if value == "" { + value = "{}" + } + uError := opts.Unmarshal([]byte(value), obj.Msg()) + if uError != nil { + return fmt.Errorf("unmarshal error %s", strings.Replace( + uError.Error(), "\u00a0", " ", -1)[7:]) + } + + err := obj.validateToAndFrom() + if err != nil { + return err + } + return nil +} + +func (obj *bgpGracefulRestart) validateToAndFrom() error { + // emptyVars() + obj.validateObj(&obj.validation, true) + return obj.validationResult() +} + +func (obj *bgpGracefulRestart) Validate() error { + // emptyVars() + obj.validateObj(&obj.validation, false) + return obj.validationResult() +} + +func (obj *bgpGracefulRestart) String() string { + str, err := obj.ToYaml() + if err != nil { + return err.Error() + } + return str +} + +func (obj *bgpGracefulRestart) Clone() (BgpGracefulRestart, error) { + vErr := obj.Validate() + if vErr != nil { + return nil, vErr + } + newObj := NewBgpGracefulRestart() + data, err := proto.Marshal(obj.Msg()) + if err != nil { + return nil, err + } + pbErr := proto.Unmarshal(data, newObj.Msg()) + if pbErr != nil { + return nil, pbErr + } + return newObj, nil +} + +// BgpGracefulRestart is the Graceful Restart Capability (RFC 4724) is a BGP capability that can be used by a BGP speaker to indicate its ability to preserve its forwarding state during BGP restart. The Graceful Restart (GR) capability is advertised in OPEN messages sent between BGP peers. After a BGP session has been established, and the initial routing update has been completed, an End-of-RIB (Routing Information Base) marker is sent in an UPDATE message to convey information about routing convergence. +type BgpGracefulRestart interface { + Validation + // Msg marshals BgpGracefulRestart to protobuf object *otg.BgpGracefulRestart + // and doesn't set defaults + Msg() *otg.BgpGracefulRestart + // SetMsg unmarshals BgpGracefulRestart from protobuf object *otg.BgpGracefulRestart + // and doesn't set defaults + SetMsg(*otg.BgpGracefulRestart) BgpGracefulRestart + // ToProto marshals BgpGracefulRestart to protobuf object *otg.BgpGracefulRestart + ToProto() (*otg.BgpGracefulRestart, error) + // ToPbText marshals BgpGracefulRestart to protobuf text + ToPbText() (string, error) + // ToYaml marshals BgpGracefulRestart to YAML text + ToYaml() (string, error) + // ToJson marshals BgpGracefulRestart to JSON text + ToJson() (string, error) + // FromProto unmarshals BgpGracefulRestart from protobuf object *otg.BgpGracefulRestart + FromProto(msg *otg.BgpGracefulRestart) (BgpGracefulRestart, error) + // FromPbText unmarshals BgpGracefulRestart from protobuf text + FromPbText(value string) error + // FromYaml unmarshals BgpGracefulRestart from YAML text + FromYaml(value string) error + // FromJson unmarshals BgpGracefulRestart from JSON text + FromJson(value string) error + // Validate validates BgpGracefulRestart + Validate() error + // A stringer function + String() string + // Clones the object + Clone() (BgpGracefulRestart, error) + validateToAndFrom() error + validateObj(vObj *validation, set_default bool) + setDefault() + // EnableGr returns bool, set in BgpGracefulRestart. + EnableGr() bool + // SetEnableGr assigns bool provided by user to BgpGracefulRestart + SetEnableGr(value bool) BgpGracefulRestart + // HasEnableGr checks if EnableGr has been set in BgpGracefulRestart + HasEnableGr() bool + // RestartTime returns uint32, set in BgpGracefulRestart. + RestartTime() uint32 + // SetRestartTime assigns uint32 provided by user to BgpGracefulRestart + SetRestartTime(value uint32) BgpGracefulRestart + // HasRestartTime checks if RestartTime has been set in BgpGracefulRestart + HasRestartTime() bool + // EnableLlgr returns bool, set in BgpGracefulRestart. + EnableLlgr() bool + // SetEnableLlgr assigns bool provided by user to BgpGracefulRestart + SetEnableLlgr(value bool) BgpGracefulRestart + // HasEnableLlgr checks if EnableLlgr has been set in BgpGracefulRestart + HasEnableLlgr() bool + // StaleTime returns uint32, set in BgpGracefulRestart. + StaleTime() uint32 + // SetStaleTime assigns uint32 provided by user to BgpGracefulRestart + SetStaleTime(value uint32) BgpGracefulRestart + // HasStaleTime checks if StaleTime has been set in BgpGracefulRestart + HasStaleTime() bool +} + +// If enabled, Graceful Restart capability is advertised in BGP OPEN messages. +// EnableGr returns a bool +func (obj *bgpGracefulRestart) EnableGr() bool { + + return *obj.obj.EnableGr + +} + +// If enabled, Graceful Restart capability is advertised in BGP OPEN messages. +// EnableGr returns a bool +func (obj *bgpGracefulRestart) HasEnableGr() bool { + return obj.obj.EnableGr != nil +} + +// If enabled, Graceful Restart capability is advertised in BGP OPEN messages. +// SetEnableGr sets the bool value in the BgpGracefulRestart object +func (obj *bgpGracefulRestart) SetEnableGr(value bool) BgpGracefulRestart { + + obj.obj.EnableGr = &value + return obj +} + +// This is the estimated duration (in seconds) it will take for the BGP session to be re-established after a restart. This can be used to speed up routing convergence by its peer in case the BGP speaker does not come back after a restart. +// RestartTime returns a uint32 +func (obj *bgpGracefulRestart) RestartTime() uint32 { + + return *obj.obj.RestartTime + +} + +// This is the estimated duration (in seconds) it will take for the BGP session to be re-established after a restart. This can be used to speed up routing convergence by its peer in case the BGP speaker does not come back after a restart. +// RestartTime returns a uint32 +func (obj *bgpGracefulRestart) HasRestartTime() bool { + return obj.obj.RestartTime != nil +} + +// This is the estimated duration (in seconds) it will take for the BGP session to be re-established after a restart. This can be used to speed up routing convergence by its peer in case the BGP speaker does not come back after a restart. +// SetRestartTime sets the uint32 value in the BgpGracefulRestart object +func (obj *bgpGracefulRestart) SetRestartTime(value uint32) BgpGracefulRestart { + + obj.obj.RestartTime = &value + return obj +} + +// If enabled, the "Long-lived Graceful Restart Capability", or "LLGR Capability" +// will be advertised. +// This capability MUST be advertised in conjunction with the Graceful Restart +// capability. +// EnableLlgr returns a bool +func (obj *bgpGracefulRestart) EnableLlgr() bool { + + return *obj.obj.EnableLlgr + +} + +// If enabled, the "Long-lived Graceful Restart Capability", or "LLGR Capability" +// will be advertised. +// This capability MUST be advertised in conjunction with the Graceful Restart +// capability. +// EnableLlgr returns a bool +func (obj *bgpGracefulRestart) HasEnableLlgr() bool { + return obj.obj.EnableLlgr != nil +} + +// If enabled, the "Long-lived Graceful Restart Capability", or "LLGR Capability" +// will be advertised. +// This capability MUST be advertised in conjunction with the Graceful Restart +// capability. +// SetEnableLlgr sets the bool value in the BgpGracefulRestart object +func (obj *bgpGracefulRestart) SetEnableLlgr(value bool) BgpGracefulRestart { + + obj.obj.EnableLlgr = &value + return obj +} + +// Duration (in seconds) specifying how long stale information (for the AFI/SAFI) +// may be retained. This is a three byte field and is applicable +// only if 'enable_llgr' is set to 'true'. +// StaleTime returns a uint32 +func (obj *bgpGracefulRestart) StaleTime() uint32 { + + return *obj.obj.StaleTime + +} + +// Duration (in seconds) specifying how long stale information (for the AFI/SAFI) +// may be retained. This is a three byte field and is applicable +// only if 'enable_llgr' is set to 'true'. +// StaleTime returns a uint32 +func (obj *bgpGracefulRestart) HasStaleTime() bool { + return obj.obj.StaleTime != nil +} + +// Duration (in seconds) specifying how long stale information (for the AFI/SAFI) +// may be retained. This is a three byte field and is applicable +// only if 'enable_llgr' is set to 'true'. +// SetStaleTime sets the uint32 value in the BgpGracefulRestart object +func (obj *bgpGracefulRestart) SetStaleTime(value uint32) BgpGracefulRestart { + + obj.obj.StaleTime = &value + return obj +} + +func (obj *bgpGracefulRestart) validateObj(vObj *validation, set_default bool) { + if set_default { + obj.setDefault() + } + + if obj.obj.RestartTime != nil { + + if *obj.obj.RestartTime > 4096 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("0 <= BgpGracefulRestart.RestartTime <= 4096 but Got %d", *obj.obj.RestartTime)) + } + + } + + if obj.obj.StaleTime != nil { + + if *obj.obj.StaleTime > 16777215 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("0 <= BgpGracefulRestart.StaleTime <= 16777215 but Got %d", *obj.obj.StaleTime)) + } + + } + +} + +func (obj *bgpGracefulRestart) setDefault() { + if obj.obj.EnableGr == nil { + obj.SetEnableGr(false) + } + if obj.obj.RestartTime == nil { + obj.SetRestartTime(45) + } + if obj.obj.EnableLlgr == nil { + obj.SetEnableLlgr(false) + } + if obj.obj.StaleTime == nil { + obj.SetStaleTime(10) + } + +} + +// ***** BgpV6SegmentRouting ***** +type bgpV6SegmentRouting struct { + validation + obj *otg.BgpV6SegmentRouting +} + +func NewBgpV6SegmentRouting() BgpV6SegmentRouting { + obj := bgpV6SegmentRouting{obj: &otg.BgpV6SegmentRouting{}} + obj.setDefault() + return &obj +} + +func (obj *bgpV6SegmentRouting) Msg() *otg.BgpV6SegmentRouting { + return obj.obj +} + +func (obj *bgpV6SegmentRouting) SetMsg(msg *otg.BgpV6SegmentRouting) BgpV6SegmentRouting { + + proto.Merge(obj.obj, msg) + return obj +} + +func (obj *bgpV6SegmentRouting) ToProto() (*otg.BgpV6SegmentRouting, error) { + err := obj.validateToAndFrom() + if err != nil { + return nil, err + } + return obj.Msg(), nil +} + +func (obj *bgpV6SegmentRouting) FromProto(msg *otg.BgpV6SegmentRouting) (BgpV6SegmentRouting, error) { + newObj := obj.SetMsg(msg) + err := newObj.validateToAndFrom() + if err != nil { + return nil, err + } + return newObj, nil +} + +func (obj *bgpV6SegmentRouting) ToPbText() (string, error) { + vErr := obj.validateToAndFrom() + if vErr != nil { + return "", vErr + } + protoMarshal, err := proto.Marshal(obj.Msg()) + if err != nil { + return "", err + } + return string(protoMarshal), nil +} + +func (obj *bgpV6SegmentRouting) FromPbText(value string) error { + retObj := proto.Unmarshal([]byte(value), obj.Msg()) + if retObj != nil { + return retObj + } + + vErr := obj.validateToAndFrom() + if vErr != nil { + return vErr + } + return retObj +} + +func (obj *bgpV6SegmentRouting) ToYaml() (string, error) { + vErr := obj.validateToAndFrom() + if vErr != nil { + return "", vErr + } + opts := protojson.MarshalOptions{ + UseProtoNames: true, + AllowPartial: true, + EmitUnpopulated: false, + } + data, err := opts.Marshal(obj.Msg()) + if err != nil { + return "", err + } + data, err = yaml.JSONToYAML(data) + if err != nil { + return "", err + } + return string(data), nil +} + +func (obj *bgpV6SegmentRouting) FromYaml(value string) error { + if value == "" { + value = "{}" + } + data, err := yaml.YAMLToJSON([]byte(value)) + if err != nil { + return err + } + opts := protojson.UnmarshalOptions{ + AllowPartial: true, + DiscardUnknown: false, + } + uError := opts.Unmarshal([]byte(data), obj.Msg()) + if uError != nil { + return fmt.Errorf("unmarshal error %s", strings.Replace( + uError.Error(), "\u00a0", " ", -1)[7:]) + } + + vErr := obj.validateToAndFrom() + if vErr != nil { + return vErr + } + return nil +} + +func (obj *bgpV6SegmentRouting) ToJson() (string, error) { + vErr := obj.validateToAndFrom() + if vErr != nil { + return "", vErr + } + opts := protojson.MarshalOptions{ + UseProtoNames: true, + AllowPartial: true, + EmitUnpopulated: false, + Indent: " ", + } + data, err := opts.Marshal(obj.Msg()) + if err != nil { + return "", err + } + return string(data), nil +} + +func (obj *bgpV6SegmentRouting) FromJson(value string) error { + opts := protojson.UnmarshalOptions{ + AllowPartial: true, + DiscardUnknown: false, + } + if value == "" { + value = "{}" + } + uError := opts.Unmarshal([]byte(value), obj.Msg()) + if uError != nil { + return fmt.Errorf("unmarshal error %s", strings.Replace( + uError.Error(), "\u00a0", " ", -1)[7:]) + } + + err := obj.validateToAndFrom() + if err != nil { + return err + } + return nil +} + +func (obj *bgpV6SegmentRouting) validateToAndFrom() error { + // emptyVars() + obj.validateObj(&obj.validation, true) + return obj.validationResult() +} + +func (obj *bgpV6SegmentRouting) Validate() error { + // emptyVars() + obj.validateObj(&obj.validation, false) + return obj.validationResult() +} + +func (obj *bgpV6SegmentRouting) String() string { + str, err := obj.ToYaml() + if err != nil { + return err.Error() + } + return str +} + +func (obj *bgpV6SegmentRouting) Clone() (BgpV6SegmentRouting, error) { + vErr := obj.Validate() + if vErr != nil { + return nil, vErr + } + newObj := NewBgpV6SegmentRouting() + data, err := proto.Marshal(obj.Msg()) + if err != nil { + return nil, err + } + pbErr := proto.Unmarshal(data, newObj.Msg()) + if pbErr != nil { + return nil, pbErr + } + return newObj, nil +} + +// BgpV6SegmentRouting is configuration for BGPv6 segment routing settings. +type BgpV6SegmentRouting interface { + Validation + // Msg marshals BgpV6SegmentRouting to protobuf object *otg.BgpV6SegmentRouting + // and doesn't set defaults + Msg() *otg.BgpV6SegmentRouting + // SetMsg unmarshals BgpV6SegmentRouting from protobuf object *otg.BgpV6SegmentRouting + // and doesn't set defaults + SetMsg(*otg.BgpV6SegmentRouting) BgpV6SegmentRouting + // ToProto marshals BgpV6SegmentRouting to protobuf object *otg.BgpV6SegmentRouting + ToProto() (*otg.BgpV6SegmentRouting, error) + // ToPbText marshals BgpV6SegmentRouting to protobuf text + ToPbText() (string, error) + // ToYaml marshals BgpV6SegmentRouting to YAML text + ToYaml() (string, error) + // ToJson marshals BgpV6SegmentRouting to JSON text + ToJson() (string, error) + // FromProto unmarshals BgpV6SegmentRouting from protobuf object *otg.BgpV6SegmentRouting + FromProto(msg *otg.BgpV6SegmentRouting) (BgpV6SegmentRouting, error) + // FromPbText unmarshals BgpV6SegmentRouting from protobuf text + FromPbText(value string) error + // FromYaml unmarshals BgpV6SegmentRouting from YAML text + FromYaml(value string) error + // FromJson unmarshals BgpV6SegmentRouting from JSON text + FromJson(value string) error + // Validate validates BgpV6SegmentRouting + Validate() error + // A stringer function + String() string + // Clones the object + Clone() (BgpV6SegmentRouting, error) + validateToAndFrom() error + validateObj(vObj *validation, set_default bool) + setDefault() + // IngressSupportsVpn returns bool, set in BgpV6SegmentRouting. + IngressSupportsVpn() bool + // SetIngressSupportsVpn assigns bool provided by user to BgpV6SegmentRouting + SetIngressSupportsVpn(value bool) BgpV6SegmentRouting + // HasIngressSupportsVpn checks if IngressSupportsVpn has been set in BgpV6SegmentRouting + HasIngressSupportsVpn() bool + // ReducedEncapsulation returns bool, set in BgpV6SegmentRouting. + ReducedEncapsulation() bool + // SetReducedEncapsulation assigns bool provided by user to BgpV6SegmentRouting + SetReducedEncapsulation(value bool) BgpV6SegmentRouting + // HasReducedEncapsulation checks if ReducedEncapsulation has been set in BgpV6SegmentRouting + HasReducedEncapsulation() bool + // CopyTimeToLive returns bool, set in BgpV6SegmentRouting. + CopyTimeToLive() bool + // SetCopyTimeToLive assigns bool provided by user to BgpV6SegmentRouting + SetCopyTimeToLive(value bool) BgpV6SegmentRouting + // HasCopyTimeToLive checks if CopyTimeToLive has been set in BgpV6SegmentRouting + HasCopyTimeToLive() bool + // TimeToLive returns uint32, set in BgpV6SegmentRouting. + TimeToLive() uint32 + // SetTimeToLive assigns uint32 provided by user to BgpV6SegmentRouting + SetTimeToLive(value uint32) BgpV6SegmentRouting + // HasTimeToLive checks if TimeToLive has been set in BgpV6SegmentRouting + HasTimeToLive() bool + // MaxSidsPerSrh returns uint32, set in BgpV6SegmentRouting. + MaxSidsPerSrh() uint32 + // SetMaxSidsPerSrh assigns uint32 provided by user to BgpV6SegmentRouting + SetMaxSidsPerSrh(value uint32) BgpV6SegmentRouting + // HasMaxSidsPerSrh checks if MaxSidsPerSrh has been set in BgpV6SegmentRouting + HasMaxSidsPerSrh() bool + // AutoGenerateSegmentLeftValue returns bool, set in BgpV6SegmentRouting. + AutoGenerateSegmentLeftValue() bool + // SetAutoGenerateSegmentLeftValue assigns bool provided by user to BgpV6SegmentRouting + SetAutoGenerateSegmentLeftValue(value bool) BgpV6SegmentRouting + // HasAutoGenerateSegmentLeftValue checks if AutoGenerateSegmentLeftValue has been set in BgpV6SegmentRouting + HasAutoGenerateSegmentLeftValue() bool + // SegmentLeftValue returns uint32, set in BgpV6SegmentRouting. + SegmentLeftValue() uint32 + // SetSegmentLeftValue assigns uint32 provided by user to BgpV6SegmentRouting + SetSegmentLeftValue(value uint32) BgpV6SegmentRouting + // HasSegmentLeftValue checks if SegmentLeftValue has been set in BgpV6SegmentRouting + HasSegmentLeftValue() bool + // AdvertiseSrTePolicy returns bool, set in BgpV6SegmentRouting. + AdvertiseSrTePolicy() bool + // SetAdvertiseSrTePolicy assigns bool provided by user to BgpV6SegmentRouting + SetAdvertiseSrTePolicy(value bool) BgpV6SegmentRouting + // HasAdvertiseSrTePolicy checks if AdvertiseSrTePolicy has been set in BgpV6SegmentRouting + HasAdvertiseSrTePolicy() bool +} + +// TBD +// IngressSupportsVpn returns a bool +func (obj *bgpV6SegmentRouting) IngressSupportsVpn() bool { + + return *obj.obj.IngressSupportsVpn + +} + +// TBD +// IngressSupportsVpn returns a bool +func (obj *bgpV6SegmentRouting) HasIngressSupportsVpn() bool { + return obj.obj.IngressSupportsVpn != nil +} + +// TBD +// SetIngressSupportsVpn sets the bool value in the BgpV6SegmentRouting object +func (obj *bgpV6SegmentRouting) SetIngressSupportsVpn(value bool) BgpV6SegmentRouting { + + obj.obj.IngressSupportsVpn = &value + return obj +} + +// TBD +// ReducedEncapsulation returns a bool +func (obj *bgpV6SegmentRouting) ReducedEncapsulation() bool { + + return *obj.obj.ReducedEncapsulation + +} + +// TBD +// ReducedEncapsulation returns a bool +func (obj *bgpV6SegmentRouting) HasReducedEncapsulation() bool { + return obj.obj.ReducedEncapsulation != nil +} + +// TBD +// SetReducedEncapsulation sets the bool value in the BgpV6SegmentRouting object +func (obj *bgpV6SegmentRouting) SetReducedEncapsulation(value bool) BgpV6SegmentRouting { + + obj.obj.ReducedEncapsulation = &value + return obj +} + +// TBD +// CopyTimeToLive returns a bool +func (obj *bgpV6SegmentRouting) CopyTimeToLive() bool { + + return *obj.obj.CopyTimeToLive + +} + +// TBD +// CopyTimeToLive returns a bool +func (obj *bgpV6SegmentRouting) HasCopyTimeToLive() bool { + return obj.obj.CopyTimeToLive != nil +} + +// TBD +// SetCopyTimeToLive sets the bool value in the BgpV6SegmentRouting object +func (obj *bgpV6SegmentRouting) SetCopyTimeToLive(value bool) BgpV6SegmentRouting { + + obj.obj.CopyTimeToLive = &value + return obj +} + +// TBD +// TimeToLive returns a uint32 +func (obj *bgpV6SegmentRouting) TimeToLive() uint32 { + + return *obj.obj.TimeToLive + +} + +// TBD +// TimeToLive returns a uint32 +func (obj *bgpV6SegmentRouting) HasTimeToLive() bool { + return obj.obj.TimeToLive != nil +} + +// TBD +// SetTimeToLive sets the uint32 value in the BgpV6SegmentRouting object +func (obj *bgpV6SegmentRouting) SetTimeToLive(value uint32) BgpV6SegmentRouting { + + obj.obj.TimeToLive = &value + return obj +} + +// TBD +// MaxSidsPerSrh returns a uint32 +func (obj *bgpV6SegmentRouting) MaxSidsPerSrh() uint32 { + + return *obj.obj.MaxSidsPerSrh + +} + +// TBD +// MaxSidsPerSrh returns a uint32 +func (obj *bgpV6SegmentRouting) HasMaxSidsPerSrh() bool { + return obj.obj.MaxSidsPerSrh != nil +} + +// TBD +// SetMaxSidsPerSrh sets the uint32 value in the BgpV6SegmentRouting object +func (obj *bgpV6SegmentRouting) SetMaxSidsPerSrh(value uint32) BgpV6SegmentRouting { + + obj.obj.MaxSidsPerSrh = &value + return obj +} + +// TBD +// AutoGenerateSegmentLeftValue returns a bool +func (obj *bgpV6SegmentRouting) AutoGenerateSegmentLeftValue() bool { + + return *obj.obj.AutoGenerateSegmentLeftValue + +} + +// TBD +// AutoGenerateSegmentLeftValue returns a bool +func (obj *bgpV6SegmentRouting) HasAutoGenerateSegmentLeftValue() bool { + return obj.obj.AutoGenerateSegmentLeftValue != nil +} + +// TBD +// SetAutoGenerateSegmentLeftValue sets the bool value in the BgpV6SegmentRouting object +func (obj *bgpV6SegmentRouting) SetAutoGenerateSegmentLeftValue(value bool) BgpV6SegmentRouting { + + obj.obj.AutoGenerateSegmentLeftValue = &value + return obj +} + +// TBD +// SegmentLeftValue returns a uint32 +func (obj *bgpV6SegmentRouting) SegmentLeftValue() uint32 { + + return *obj.obj.SegmentLeftValue + +} + +// TBD +// SegmentLeftValue returns a uint32 +func (obj *bgpV6SegmentRouting) HasSegmentLeftValue() bool { + return obj.obj.SegmentLeftValue != nil +} + +// TBD +// SetSegmentLeftValue sets the uint32 value in the BgpV6SegmentRouting object +func (obj *bgpV6SegmentRouting) SetSegmentLeftValue(value uint32) BgpV6SegmentRouting { + + obj.obj.SegmentLeftValue = &value + return obj +} + +// TBD +// AdvertiseSrTePolicy returns a bool +func (obj *bgpV6SegmentRouting) AdvertiseSrTePolicy() bool { + + return *obj.obj.AdvertiseSrTePolicy + +} + +// TBD +// AdvertiseSrTePolicy returns a bool +func (obj *bgpV6SegmentRouting) HasAdvertiseSrTePolicy() bool { + return obj.obj.AdvertiseSrTePolicy != nil +} + +// TBD +// SetAdvertiseSrTePolicy sets the bool value in the BgpV6SegmentRouting object +func (obj *bgpV6SegmentRouting) SetAdvertiseSrTePolicy(value bool) BgpV6SegmentRouting { + + obj.obj.AdvertiseSrTePolicy = &value + return obj +} + +func (obj *bgpV6SegmentRouting) validateObj(vObj *validation, set_default bool) { + if set_default { + obj.setDefault() + } + + if obj.obj.MaxSidsPerSrh != nil { + + if *obj.obj.MaxSidsPerSrh > 255 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("0 <= BgpV6SegmentRouting.MaxSidsPerSrh <= 255 but Got %d", *obj.obj.MaxSidsPerSrh)) + } + + } + +} + +func (obj *bgpV6SegmentRouting) setDefault() { + if obj.obj.IngressSupportsVpn == nil { + obj.SetIngressSupportsVpn(false) + } + if obj.obj.ReducedEncapsulation == nil { + obj.SetReducedEncapsulation(false) + } + if obj.obj.CopyTimeToLive == nil { + obj.SetCopyTimeToLive(false) + } + if obj.obj.TimeToLive == nil { + obj.SetTimeToLive(0) + } + if obj.obj.MaxSidsPerSrh == nil { + obj.SetMaxSidsPerSrh(0) + } + if obj.obj.AutoGenerateSegmentLeftValue == nil { + obj.SetAutoGenerateSegmentLeftValue(false) + } + if obj.obj.SegmentLeftValue == nil { + obj.SetSegmentLeftValue(0) + } + if obj.obj.AdvertiseSrTePolicy == nil { + obj.SetAdvertiseSrTePolicy(false) + } + +} + +// ***** BgpV6EthernetSegment ***** +type bgpV6EthernetSegment struct { + validation + obj *otg.BgpV6EthernetSegment + dfElectionHolder BgpEthernetSegmentDfElection + evisHolder BgpV6EthernetSegmentBgpV6EvpnEvisIter + advancedHolder BgpRouteAdvanced + communitiesHolder BgpV6EthernetSegmentBgpCommunityIter + extCommunitiesHolder BgpV6EthernetSegmentBgpExtCommunityIter + asPathHolder BgpAsPath +} + +func NewBgpV6EthernetSegment() BgpV6EthernetSegment { + obj := bgpV6EthernetSegment{obj: &otg.BgpV6EthernetSegment{}} + obj.setDefault() + return &obj +} + +func (obj *bgpV6EthernetSegment) Msg() *otg.BgpV6EthernetSegment { + return obj.obj +} + +func (obj *bgpV6EthernetSegment) SetMsg(msg *otg.BgpV6EthernetSegment) BgpV6EthernetSegment { + obj.setNil() + proto.Merge(obj.obj, msg) + return obj +} + +func (obj *bgpV6EthernetSegment) ToProto() (*otg.BgpV6EthernetSegment, error) { + err := obj.validateToAndFrom() + if err != nil { + return nil, err + } + return obj.Msg(), nil +} + +func (obj *bgpV6EthernetSegment) FromProto(msg *otg.BgpV6EthernetSegment) (BgpV6EthernetSegment, error) { + newObj := obj.SetMsg(msg) + err := newObj.validateToAndFrom() + if err != nil { + return nil, err + } + return newObj, nil +} + +func (obj *bgpV6EthernetSegment) ToPbText() (string, error) { + vErr := obj.validateToAndFrom() + if vErr != nil { + return "", vErr + } + protoMarshal, err := proto.Marshal(obj.Msg()) + if err != nil { + return "", err + } + return string(protoMarshal), nil +} + +func (obj *bgpV6EthernetSegment) FromPbText(value string) error { + retObj := proto.Unmarshal([]byte(value), obj.Msg()) + if retObj != nil { + return retObj + } + obj.setNil() + vErr := obj.validateToAndFrom() + if vErr != nil { + return vErr + } + return retObj +} + +func (obj *bgpV6EthernetSegment) ToYaml() (string, error) { + vErr := obj.validateToAndFrom() + if vErr != nil { + return "", vErr + } + opts := protojson.MarshalOptions{ + UseProtoNames: true, + AllowPartial: true, + EmitUnpopulated: false, + } + data, err := opts.Marshal(obj.Msg()) + if err != nil { + return "", err + } + data, err = yaml.JSONToYAML(data) + if err != nil { + return "", err + } + return string(data), nil +} + +func (obj *bgpV6EthernetSegment) FromYaml(value string) error { + if value == "" { + value = "{}" + } + data, err := yaml.YAMLToJSON([]byte(value)) + if err != nil { + return err + } + opts := protojson.UnmarshalOptions{ + AllowPartial: true, + DiscardUnknown: false, + } + uError := opts.Unmarshal([]byte(data), obj.Msg()) + if uError != nil { + return fmt.Errorf("unmarshal error %s", strings.Replace( + uError.Error(), "\u00a0", " ", -1)[7:]) + } + obj.setNil() + vErr := obj.validateToAndFrom() + if vErr != nil { + return vErr + } + return nil +} + +func (obj *bgpV6EthernetSegment) ToJson() (string, error) { + vErr := obj.validateToAndFrom() + if vErr != nil { + return "", vErr + } + opts := protojson.MarshalOptions{ + UseProtoNames: true, + AllowPartial: true, + EmitUnpopulated: false, + Indent: " ", + } + data, err := opts.Marshal(obj.Msg()) + if err != nil { + return "", err + } + return string(data), nil +} + +func (obj *bgpV6EthernetSegment) FromJson(value string) error { + opts := protojson.UnmarshalOptions{ + AllowPartial: true, + DiscardUnknown: false, + } + if value == "" { + value = "{}" + } + uError := opts.Unmarshal([]byte(value), obj.Msg()) + if uError != nil { + return fmt.Errorf("unmarshal error %s", strings.Replace( + uError.Error(), "\u00a0", " ", -1)[7:]) + } + obj.setNil() + err := obj.validateToAndFrom() + if err != nil { + return err + } + return nil +} + +func (obj *bgpV6EthernetSegment) validateToAndFrom() error { + // emptyVars() + obj.validateObj(&obj.validation, true) + return obj.validationResult() +} + +func (obj *bgpV6EthernetSegment) Validate() error { + // emptyVars() + obj.validateObj(&obj.validation, false) + return obj.validationResult() +} + +func (obj *bgpV6EthernetSegment) String() string { + str, err := obj.ToYaml() + if err != nil { + return err.Error() + } + return str +} + +func (obj *bgpV6EthernetSegment) Clone() (BgpV6EthernetSegment, error) { + vErr := obj.Validate() + if vErr != nil { + return nil, vErr + } + newObj := NewBgpV6EthernetSegment() + data, err := proto.Marshal(obj.Msg()) + if err != nil { + return nil, err + } + pbErr := proto.Unmarshal(data, newObj.Msg()) + if pbErr != nil { + return nil, pbErr + } + return newObj, nil +} + +func (obj *bgpV6EthernetSegment) setNil() { + obj.dfElectionHolder = nil + obj.evisHolder = nil + obj.advancedHolder = nil + obj.communitiesHolder = nil + obj.extCommunitiesHolder = nil + obj.asPathHolder = nil + obj.validationErrors = nil + obj.warnings = nil + obj.constraints = make(map[string]map[string]Constraints) +} + +// BgpV6EthernetSegment is configuration for BGP Ethernet Segment ranges. Advertises following routes - +// +// Type 4 - Ethernet Segment Route +type BgpV6EthernetSegment interface { + Validation + // Msg marshals BgpV6EthernetSegment to protobuf object *otg.BgpV6EthernetSegment + // and doesn't set defaults + Msg() *otg.BgpV6EthernetSegment + // SetMsg unmarshals BgpV6EthernetSegment from protobuf object *otg.BgpV6EthernetSegment + // and doesn't set defaults + SetMsg(*otg.BgpV6EthernetSegment) BgpV6EthernetSegment + // ToProto marshals BgpV6EthernetSegment to protobuf object *otg.BgpV6EthernetSegment + ToProto() (*otg.BgpV6EthernetSegment, error) + // ToPbText marshals BgpV6EthernetSegment to protobuf text + ToPbText() (string, error) + // ToYaml marshals BgpV6EthernetSegment to YAML text + ToYaml() (string, error) + // ToJson marshals BgpV6EthernetSegment to JSON text + ToJson() (string, error) + // FromProto unmarshals BgpV6EthernetSegment from protobuf object *otg.BgpV6EthernetSegment + FromProto(msg *otg.BgpV6EthernetSegment) (BgpV6EthernetSegment, error) + // FromPbText unmarshals BgpV6EthernetSegment from protobuf text + FromPbText(value string) error + // FromYaml unmarshals BgpV6EthernetSegment from YAML text + FromYaml(value string) error + // FromJson unmarshals BgpV6EthernetSegment from JSON text + FromJson(value string) error + // Validate validates BgpV6EthernetSegment + Validate() error + // A stringer function + String() string + // Clones the object + Clone() (BgpV6EthernetSegment, error) + validateToAndFrom() error + validateObj(vObj *validation, set_default bool) + setDefault() + // DfElection returns BgpEthernetSegmentDfElection, set in BgpV6EthernetSegment. + // BgpEthernetSegmentDfElection is configuration for Designated Forwarder (DF) election among the Provider Edge (PE) routers on the same Ethernet Segment. + DfElection() BgpEthernetSegmentDfElection + // SetDfElection assigns BgpEthernetSegmentDfElection provided by user to BgpV6EthernetSegment. + // BgpEthernetSegmentDfElection is configuration for Designated Forwarder (DF) election among the Provider Edge (PE) routers on the same Ethernet Segment. + SetDfElection(value BgpEthernetSegmentDfElection) BgpV6EthernetSegment + // HasDfElection checks if DfElection has been set in BgpV6EthernetSegment + HasDfElection() bool + // Evis returns BgpV6EthernetSegmentBgpV6EvpnEvisIterIter, set in BgpV6EthernetSegment + Evis() BgpV6EthernetSegmentBgpV6EvpnEvisIter + // Esi returns string, set in BgpV6EthernetSegment. + Esi() string + // SetEsi assigns string provided by user to BgpV6EthernetSegment + SetEsi(value string) BgpV6EthernetSegment + // HasEsi checks if Esi has been set in BgpV6EthernetSegment + HasEsi() bool + // ActiveMode returns BgpV6EthernetSegmentActiveModeEnum, set in BgpV6EthernetSegment + ActiveMode() BgpV6EthernetSegmentActiveModeEnum + // SetActiveMode assigns BgpV6EthernetSegmentActiveModeEnum provided by user to BgpV6EthernetSegment + SetActiveMode(value BgpV6EthernetSegmentActiveModeEnum) BgpV6EthernetSegment + // HasActiveMode checks if ActiveMode has been set in BgpV6EthernetSegment + HasActiveMode() bool + // EsiLabel returns uint32, set in BgpV6EthernetSegment. + EsiLabel() uint32 + // SetEsiLabel assigns uint32 provided by user to BgpV6EthernetSegment + SetEsiLabel(value uint32) BgpV6EthernetSegment + // HasEsiLabel checks if EsiLabel has been set in BgpV6EthernetSegment + HasEsiLabel() bool + // Advanced returns BgpRouteAdvanced, set in BgpV6EthernetSegment. + // BgpRouteAdvanced is configuration for advanced BGP route range settings. + Advanced() BgpRouteAdvanced + // SetAdvanced assigns BgpRouteAdvanced provided by user to BgpV6EthernetSegment. + // BgpRouteAdvanced is configuration for advanced BGP route range settings. + SetAdvanced(value BgpRouteAdvanced) BgpV6EthernetSegment + // HasAdvanced checks if Advanced has been set in BgpV6EthernetSegment + HasAdvanced() bool + // Communities returns BgpV6EthernetSegmentBgpCommunityIterIter, set in BgpV6EthernetSegment + Communities() BgpV6EthernetSegmentBgpCommunityIter + // ExtCommunities returns BgpV6EthernetSegmentBgpExtCommunityIterIter, set in BgpV6EthernetSegment + ExtCommunities() BgpV6EthernetSegmentBgpExtCommunityIter + // AsPath returns BgpAsPath, set in BgpV6EthernetSegment. + // BgpAsPath is this attribute identifies the autonomous systems through which routing information carried in this UPDATE message has passed. This contains the configuration of how to include the Local AS in the AS path attribute of the MP REACH NLRI. It also contains optional configuration of additional AS Path Segments that can be included in the AS Path attribute. The AS Path consists of a Set or Sequence of Autonomous Systems (AS) numbers that a routing information passes through to reach the destination. + AsPath() BgpAsPath + // SetAsPath assigns BgpAsPath provided by user to BgpV6EthernetSegment. + // BgpAsPath is this attribute identifies the autonomous systems through which routing information carried in this UPDATE message has passed. This contains the configuration of how to include the Local AS in the AS path attribute of the MP REACH NLRI. It also contains optional configuration of additional AS Path Segments that can be included in the AS Path attribute. The AS Path consists of a Set or Sequence of Autonomous Systems (AS) numbers that a routing information passes through to reach the destination. + SetAsPath(value BgpAsPath) BgpV6EthernetSegment + // HasAsPath checks if AsPath has been set in BgpV6EthernetSegment + HasAsPath() bool + setNil() +} + +// Designated Forwarder (DF) election configuration. +// DfElection returns a BgpEthernetSegmentDfElection +func (obj *bgpV6EthernetSegment) DfElection() BgpEthernetSegmentDfElection { + if obj.obj.DfElection == nil { + obj.obj.DfElection = NewBgpEthernetSegmentDfElection().Msg() + } + if obj.dfElectionHolder == nil { + obj.dfElectionHolder = &bgpEthernetSegmentDfElection{obj: obj.obj.DfElection} + } + return obj.dfElectionHolder +} + +// Designated Forwarder (DF) election configuration. +// DfElection returns a BgpEthernetSegmentDfElection +func (obj *bgpV6EthernetSegment) HasDfElection() bool { + return obj.obj.DfElection != nil +} + +// Designated Forwarder (DF) election configuration. +// SetDfElection sets the BgpEthernetSegmentDfElection value in the BgpV6EthernetSegment object +func (obj *bgpV6EthernetSegment) SetDfElection(value BgpEthernetSegmentDfElection) BgpV6EthernetSegment { + + obj.dfElectionHolder = nil + obj.obj.DfElection = value.Msg() + + return obj +} + +// This contains the list of EVIs. +// Evis returns a []BgpV6EvpnEvis +func (obj *bgpV6EthernetSegment) Evis() BgpV6EthernetSegmentBgpV6EvpnEvisIter { + if len(obj.obj.Evis) == 0 { + obj.obj.Evis = []*otg.BgpV6EvpnEvis{} + } + if obj.evisHolder == nil { + obj.evisHolder = newBgpV6EthernetSegmentBgpV6EvpnEvisIter(&obj.obj.Evis).setMsg(obj) + } + return obj.evisHolder +} + +type bgpV6EthernetSegmentBgpV6EvpnEvisIter struct { + obj *bgpV6EthernetSegment + bgpV6EvpnEvisSlice []BgpV6EvpnEvis + fieldPtr *[]*otg.BgpV6EvpnEvis +} + +func newBgpV6EthernetSegmentBgpV6EvpnEvisIter(ptr *[]*otg.BgpV6EvpnEvis) BgpV6EthernetSegmentBgpV6EvpnEvisIter { + return &bgpV6EthernetSegmentBgpV6EvpnEvisIter{fieldPtr: ptr} +} + +type BgpV6EthernetSegmentBgpV6EvpnEvisIter interface { + setMsg(*bgpV6EthernetSegment) BgpV6EthernetSegmentBgpV6EvpnEvisIter + Items() []BgpV6EvpnEvis + Add() BgpV6EvpnEvis + Append(items ...BgpV6EvpnEvis) BgpV6EthernetSegmentBgpV6EvpnEvisIter + Set(index int, newObj BgpV6EvpnEvis) BgpV6EthernetSegmentBgpV6EvpnEvisIter + Clear() BgpV6EthernetSegmentBgpV6EvpnEvisIter + clearHolderSlice() BgpV6EthernetSegmentBgpV6EvpnEvisIter + appendHolderSlice(item BgpV6EvpnEvis) BgpV6EthernetSegmentBgpV6EvpnEvisIter +} + +func (obj *bgpV6EthernetSegmentBgpV6EvpnEvisIter) setMsg(msg *bgpV6EthernetSegment) BgpV6EthernetSegmentBgpV6EvpnEvisIter { + obj.clearHolderSlice() + for _, val := range *obj.fieldPtr { + obj.appendHolderSlice(&bgpV6EvpnEvis{obj: val}) + } + obj.obj = msg + return obj +} + +func (obj *bgpV6EthernetSegmentBgpV6EvpnEvisIter) Items() []BgpV6EvpnEvis { + return obj.bgpV6EvpnEvisSlice +} + +func (obj *bgpV6EthernetSegmentBgpV6EvpnEvisIter) Add() BgpV6EvpnEvis { + newObj := &otg.BgpV6EvpnEvis{} + *obj.fieldPtr = append(*obj.fieldPtr, newObj) + newLibObj := &bgpV6EvpnEvis{obj: newObj} + newLibObj.setDefault() + obj.bgpV6EvpnEvisSlice = append(obj.bgpV6EvpnEvisSlice, newLibObj) + return newLibObj +} + +func (obj *bgpV6EthernetSegmentBgpV6EvpnEvisIter) Append(items ...BgpV6EvpnEvis) BgpV6EthernetSegmentBgpV6EvpnEvisIter { + for _, item := range items { + newObj := item.Msg() + *obj.fieldPtr = append(*obj.fieldPtr, newObj) + obj.bgpV6EvpnEvisSlice = append(obj.bgpV6EvpnEvisSlice, item) + } + return obj +} + +func (obj *bgpV6EthernetSegmentBgpV6EvpnEvisIter) Set(index int, newObj BgpV6EvpnEvis) BgpV6EthernetSegmentBgpV6EvpnEvisIter { + (*obj.fieldPtr)[index] = newObj.Msg() + obj.bgpV6EvpnEvisSlice[index] = newObj + return obj +} +func (obj *bgpV6EthernetSegmentBgpV6EvpnEvisIter) Clear() BgpV6EthernetSegmentBgpV6EvpnEvisIter { + if len(*obj.fieldPtr) > 0 { + *obj.fieldPtr = []*otg.BgpV6EvpnEvis{} + obj.bgpV6EvpnEvisSlice = []BgpV6EvpnEvis{} + } + return obj +} +func (obj *bgpV6EthernetSegmentBgpV6EvpnEvisIter) clearHolderSlice() BgpV6EthernetSegmentBgpV6EvpnEvisIter { + if len(obj.bgpV6EvpnEvisSlice) > 0 { + obj.bgpV6EvpnEvisSlice = []BgpV6EvpnEvis{} + } + return obj +} +func (obj *bgpV6EthernetSegmentBgpV6EvpnEvisIter) appendHolderSlice(item BgpV6EvpnEvis) BgpV6EthernetSegmentBgpV6EvpnEvisIter { + obj.bgpV6EvpnEvisSlice = append(obj.bgpV6EvpnEvisSlice, item) + return obj +} + +// 10-octet Ethernet Segment Identifier (ESI) Example - For multi-home scenario nonZero ESI is '10000000000000000000' . +// Esi returns a string +func (obj *bgpV6EthernetSegment) Esi() string { + + return *obj.obj.Esi + +} + +// 10-octet Ethernet Segment Identifier (ESI) Example - For multi-home scenario nonZero ESI is '10000000000000000000' . +// Esi returns a string +func (obj *bgpV6EthernetSegment) HasEsi() bool { + return obj.obj.Esi != nil +} + +// 10-octet Ethernet Segment Identifier (ESI) Example - For multi-home scenario nonZero ESI is '10000000000000000000' . +// SetEsi sets the string value in the BgpV6EthernetSegment object +func (obj *bgpV6EthernetSegment) SetEsi(value string) BgpV6EthernetSegment { + + obj.obj.Esi = &value + return obj +} + +type BgpV6EthernetSegmentActiveModeEnum string + +// Enum of ActiveMode on BgpV6EthernetSegment +var BgpV6EthernetSegmentActiveMode = struct { + SINGLE_ACTIVE BgpV6EthernetSegmentActiveModeEnum + ALL_ACTIVE BgpV6EthernetSegmentActiveModeEnum +}{ + SINGLE_ACTIVE: BgpV6EthernetSegmentActiveModeEnum("single_active"), + ALL_ACTIVE: BgpV6EthernetSegmentActiveModeEnum("all_active"), +} + +func (obj *bgpV6EthernetSegment) ActiveMode() BgpV6EthernetSegmentActiveModeEnum { + return BgpV6EthernetSegmentActiveModeEnum(obj.obj.ActiveMode.Enum().String()) +} + +// Single Active or All Active mode Redundancy mode selection for Multi-home. +// ActiveMode returns a string +func (obj *bgpV6EthernetSegment) HasActiveMode() bool { + return obj.obj.ActiveMode != nil +} + +func (obj *bgpV6EthernetSegment) SetActiveMode(value BgpV6EthernetSegmentActiveModeEnum) BgpV6EthernetSegment { + intValue, ok := otg.BgpV6EthernetSegment_ActiveMode_Enum_value[string(value)] + if !ok { + obj.validationErrors = append(obj.validationErrors, fmt.Sprintf( + "%s is not a valid choice on BgpV6EthernetSegmentActiveModeEnum", string(value))) + return obj + } + enumValue := otg.BgpV6EthernetSegment_ActiveMode_Enum(intValue) + obj.obj.ActiveMode = &enumValue + + return obj +} + +// The label value to be advertised as ESI Label in ESI Label Extended Community. This is included in Ethernet Auto-discovery per ES Routes advertised by a router. +// EsiLabel returns a uint32 +func (obj *bgpV6EthernetSegment) EsiLabel() uint32 { + + return *obj.obj.EsiLabel + +} + +// The label value to be advertised as ESI Label in ESI Label Extended Community. This is included in Ethernet Auto-discovery per ES Routes advertised by a router. +// EsiLabel returns a uint32 +func (obj *bgpV6EthernetSegment) HasEsiLabel() bool { + return obj.obj.EsiLabel != nil +} + +// The label value to be advertised as ESI Label in ESI Label Extended Community. This is included in Ethernet Auto-discovery per ES Routes advertised by a router. +// SetEsiLabel sets the uint32 value in the BgpV6EthernetSegment object +func (obj *bgpV6EthernetSegment) SetEsiLabel(value uint32) BgpV6EthernetSegment { + + obj.obj.EsiLabel = &value + return obj +} + +// description is TBD +// Advanced returns a BgpRouteAdvanced +func (obj *bgpV6EthernetSegment) Advanced() BgpRouteAdvanced { + if obj.obj.Advanced == nil { + obj.obj.Advanced = NewBgpRouteAdvanced().Msg() + } + if obj.advancedHolder == nil { + obj.advancedHolder = &bgpRouteAdvanced{obj: obj.obj.Advanced} + } + return obj.advancedHolder +} + +// description is TBD +// Advanced returns a BgpRouteAdvanced +func (obj *bgpV6EthernetSegment) HasAdvanced() bool { + return obj.obj.Advanced != nil +} + +// description is TBD +// SetAdvanced sets the BgpRouteAdvanced value in the BgpV6EthernetSegment object +func (obj *bgpV6EthernetSegment) SetAdvanced(value BgpRouteAdvanced) BgpV6EthernetSegment { + + obj.advancedHolder = nil + obj.obj.Advanced = value.Msg() + + return obj +} + +// Optional community settings. +// Communities returns a []BgpCommunity +func (obj *bgpV6EthernetSegment) Communities() BgpV6EthernetSegmentBgpCommunityIter { + if len(obj.obj.Communities) == 0 { + obj.obj.Communities = []*otg.BgpCommunity{} + } + if obj.communitiesHolder == nil { + obj.communitiesHolder = newBgpV6EthernetSegmentBgpCommunityIter(&obj.obj.Communities).setMsg(obj) + } + return obj.communitiesHolder +} + +type bgpV6EthernetSegmentBgpCommunityIter struct { + obj *bgpV6EthernetSegment + bgpCommunitySlice []BgpCommunity + fieldPtr *[]*otg.BgpCommunity +} + +func newBgpV6EthernetSegmentBgpCommunityIter(ptr *[]*otg.BgpCommunity) BgpV6EthernetSegmentBgpCommunityIter { + return &bgpV6EthernetSegmentBgpCommunityIter{fieldPtr: ptr} +} + +type BgpV6EthernetSegmentBgpCommunityIter interface { + setMsg(*bgpV6EthernetSegment) BgpV6EthernetSegmentBgpCommunityIter + Items() []BgpCommunity + Add() BgpCommunity + Append(items ...BgpCommunity) BgpV6EthernetSegmentBgpCommunityIter + Set(index int, newObj BgpCommunity) BgpV6EthernetSegmentBgpCommunityIter + Clear() BgpV6EthernetSegmentBgpCommunityIter + clearHolderSlice() BgpV6EthernetSegmentBgpCommunityIter + appendHolderSlice(item BgpCommunity) BgpV6EthernetSegmentBgpCommunityIter +} + +func (obj *bgpV6EthernetSegmentBgpCommunityIter) setMsg(msg *bgpV6EthernetSegment) BgpV6EthernetSegmentBgpCommunityIter { + obj.clearHolderSlice() + for _, val := range *obj.fieldPtr { + obj.appendHolderSlice(&bgpCommunity{obj: val}) + } + obj.obj = msg + return obj +} + +func (obj *bgpV6EthernetSegmentBgpCommunityIter) Items() []BgpCommunity { + return obj.bgpCommunitySlice +} + +func (obj *bgpV6EthernetSegmentBgpCommunityIter) Add() BgpCommunity { + newObj := &otg.BgpCommunity{} + *obj.fieldPtr = append(*obj.fieldPtr, newObj) + newLibObj := &bgpCommunity{obj: newObj} + newLibObj.setDefault() + obj.bgpCommunitySlice = append(obj.bgpCommunitySlice, newLibObj) + return newLibObj +} + +func (obj *bgpV6EthernetSegmentBgpCommunityIter) Append(items ...BgpCommunity) BgpV6EthernetSegmentBgpCommunityIter { + for _, item := range items { + newObj := item.Msg() + *obj.fieldPtr = append(*obj.fieldPtr, newObj) + obj.bgpCommunitySlice = append(obj.bgpCommunitySlice, item) + } + return obj +} + +func (obj *bgpV6EthernetSegmentBgpCommunityIter) Set(index int, newObj BgpCommunity) BgpV6EthernetSegmentBgpCommunityIter { + (*obj.fieldPtr)[index] = newObj.Msg() + obj.bgpCommunitySlice[index] = newObj + return obj +} +func (obj *bgpV6EthernetSegmentBgpCommunityIter) Clear() BgpV6EthernetSegmentBgpCommunityIter { + if len(*obj.fieldPtr) > 0 { + *obj.fieldPtr = []*otg.BgpCommunity{} + obj.bgpCommunitySlice = []BgpCommunity{} + } + return obj +} +func (obj *bgpV6EthernetSegmentBgpCommunityIter) clearHolderSlice() BgpV6EthernetSegmentBgpCommunityIter { + if len(obj.bgpCommunitySlice) > 0 { + obj.bgpCommunitySlice = []BgpCommunity{} + } + return obj +} +func (obj *bgpV6EthernetSegmentBgpCommunityIter) appendHolderSlice(item BgpCommunity) BgpV6EthernetSegmentBgpCommunityIter { + obj.bgpCommunitySlice = append(obj.bgpCommunitySlice, item) + return obj +} + +// Optional Extended Community settings. The Extended Communities Attribute is a transitive optional BGP attribute, with the Type Code 16. Community and Extended Communities attributes are utilized to trigger routing decisions, such as acceptance, rejection, preference, or redistribution. An extended community is an 8-Bytes value. It is divided into two main parts. The first 2 Bytes of the community encode a type and sub-type fields and the last 6 Bytes carry a unique set of data in a format defined by the type and sub-type field. Extended communities provide a larger range for grouping or categorizing communities. When type is administrator_as_2octet or administrator_as_4octet, the valid sub types are route target and origin. The valid value for administrator_as_2octet and administrator_as_4octet type is either two byte AS followed by four byte local administrator id or four byte AS followed by two byte local administrator id. When type is administrator_ipv4_address the valid sub types are route target and origin. The valid value for administrator_ipv4_address is a four byte IPv4 address followed by a two byte local administrator id. When type is opaque, valid sub types are color and encapsulation. When sub type is color, first two bytes of the value field contain flags and last four bytes contains the value of the color. When sub type is encapsulation the first four bytes of value field are reserved and last two bytes carries the tunnel type from IANA's "ETHER TYPES" registry e.g IPv4 (protocol type = 0x0800), IPv6 (protocol type = 0x86dd), and MPLS (protocol type = 0x8847). When type is administrator_as_2octet_link_bandwidth the valid sub type is extended_bandwidth. The first two bytes of the value field contains the AS number and the last four bytes contains the bandwidth in IEEE floating point format. When type is evpn the valid subtype is mac_address. In the value field the low-order bit of the first byte(Flags) is defined as the "Sticky/static" flag and may be set to 1, indicating the MAC address is static and cannot move. The second byte is reserved and the last four bytes contain the sequence number which is used to ensure that PEs retain the correct MAC/IP Advertisement route when multiple updates occur for the same MAC address. +// ExtCommunities returns a []BgpExtCommunity +func (obj *bgpV6EthernetSegment) ExtCommunities() BgpV6EthernetSegmentBgpExtCommunityIter { + if len(obj.obj.ExtCommunities) == 0 { + obj.obj.ExtCommunities = []*otg.BgpExtCommunity{} + } + if obj.extCommunitiesHolder == nil { + obj.extCommunitiesHolder = newBgpV6EthernetSegmentBgpExtCommunityIter(&obj.obj.ExtCommunities).setMsg(obj) + } + return obj.extCommunitiesHolder +} + +type bgpV6EthernetSegmentBgpExtCommunityIter struct { + obj *bgpV6EthernetSegment + bgpExtCommunitySlice []BgpExtCommunity + fieldPtr *[]*otg.BgpExtCommunity +} + +func newBgpV6EthernetSegmentBgpExtCommunityIter(ptr *[]*otg.BgpExtCommunity) BgpV6EthernetSegmentBgpExtCommunityIter { + return &bgpV6EthernetSegmentBgpExtCommunityIter{fieldPtr: ptr} +} + +type BgpV6EthernetSegmentBgpExtCommunityIter interface { + setMsg(*bgpV6EthernetSegment) BgpV6EthernetSegmentBgpExtCommunityIter + Items() []BgpExtCommunity + Add() BgpExtCommunity + Append(items ...BgpExtCommunity) BgpV6EthernetSegmentBgpExtCommunityIter + Set(index int, newObj BgpExtCommunity) BgpV6EthernetSegmentBgpExtCommunityIter + Clear() BgpV6EthernetSegmentBgpExtCommunityIter + clearHolderSlice() BgpV6EthernetSegmentBgpExtCommunityIter + appendHolderSlice(item BgpExtCommunity) BgpV6EthernetSegmentBgpExtCommunityIter +} + +func (obj *bgpV6EthernetSegmentBgpExtCommunityIter) setMsg(msg *bgpV6EthernetSegment) BgpV6EthernetSegmentBgpExtCommunityIter { + obj.clearHolderSlice() + for _, val := range *obj.fieldPtr { + obj.appendHolderSlice(&bgpExtCommunity{obj: val}) + } + obj.obj = msg + return obj +} + +func (obj *bgpV6EthernetSegmentBgpExtCommunityIter) Items() []BgpExtCommunity { + return obj.bgpExtCommunitySlice +} + +func (obj *bgpV6EthernetSegmentBgpExtCommunityIter) Add() BgpExtCommunity { + newObj := &otg.BgpExtCommunity{} + *obj.fieldPtr = append(*obj.fieldPtr, newObj) + newLibObj := &bgpExtCommunity{obj: newObj} + newLibObj.setDefault() + obj.bgpExtCommunitySlice = append(obj.bgpExtCommunitySlice, newLibObj) + return newLibObj +} + +func (obj *bgpV6EthernetSegmentBgpExtCommunityIter) Append(items ...BgpExtCommunity) BgpV6EthernetSegmentBgpExtCommunityIter { + for _, item := range items { + newObj := item.Msg() + *obj.fieldPtr = append(*obj.fieldPtr, newObj) + obj.bgpExtCommunitySlice = append(obj.bgpExtCommunitySlice, item) + } + return obj +} + +func (obj *bgpV6EthernetSegmentBgpExtCommunityIter) Set(index int, newObj BgpExtCommunity) BgpV6EthernetSegmentBgpExtCommunityIter { + (*obj.fieldPtr)[index] = newObj.Msg() + obj.bgpExtCommunitySlice[index] = newObj + return obj +} +func (obj *bgpV6EthernetSegmentBgpExtCommunityIter) Clear() BgpV6EthernetSegmentBgpExtCommunityIter { + if len(*obj.fieldPtr) > 0 { + *obj.fieldPtr = []*otg.BgpExtCommunity{} + obj.bgpExtCommunitySlice = []BgpExtCommunity{} + } + return obj +} +func (obj *bgpV6EthernetSegmentBgpExtCommunityIter) clearHolderSlice() BgpV6EthernetSegmentBgpExtCommunityIter { + if len(obj.bgpExtCommunitySlice) > 0 { + obj.bgpExtCommunitySlice = []BgpExtCommunity{} + } + return obj +} +func (obj *bgpV6EthernetSegmentBgpExtCommunityIter) appendHolderSlice(item BgpExtCommunity) BgpV6EthernetSegmentBgpExtCommunityIter { + obj.bgpExtCommunitySlice = append(obj.bgpExtCommunitySlice, item) + return obj +} + +// Optional AS PATH settings. +// AsPath returns a BgpAsPath +func (obj *bgpV6EthernetSegment) AsPath() BgpAsPath { + if obj.obj.AsPath == nil { + obj.obj.AsPath = NewBgpAsPath().Msg() + } + if obj.asPathHolder == nil { + obj.asPathHolder = &bgpAsPath{obj: obj.obj.AsPath} + } + return obj.asPathHolder +} + +// Optional AS PATH settings. +// AsPath returns a BgpAsPath +func (obj *bgpV6EthernetSegment) HasAsPath() bool { + return obj.obj.AsPath != nil +} + +// Optional AS PATH settings. +// SetAsPath sets the BgpAsPath value in the BgpV6EthernetSegment object +func (obj *bgpV6EthernetSegment) SetAsPath(value BgpAsPath) BgpV6EthernetSegment { + + obj.asPathHolder = nil + obj.obj.AsPath = value.Msg() + + return obj +} + +func (obj *bgpV6EthernetSegment) validateObj(vObj *validation, set_default bool) { + if set_default { + obj.setDefault() + } + + if obj.obj.DfElection != nil { + + obj.DfElection().validateObj(vObj, set_default) + } + + if len(obj.obj.Evis) != 0 { + + if set_default { + obj.Evis().clearHolderSlice() + for _, item := range obj.obj.Evis { + obj.Evis().appendHolderSlice(&bgpV6EvpnEvis{obj: item}) + } + } + for _, item := range obj.Evis().Items() { + item.validateObj(vObj, set_default) + } + + } + + if obj.obj.Esi != nil { + + err := obj.validateHex(obj.Esi()) + if err != nil { + vObj.validationErrors = append(vObj.validationErrors, fmt.Sprintf("%s %s", err.Error(), "on BgpV6EthernetSegment.Esi")) + } + + } + + if obj.obj.EsiLabel != nil { + + if *obj.obj.EsiLabel > 16777215 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("0 <= BgpV6EthernetSegment.EsiLabel <= 16777215 but Got %d", *obj.obj.EsiLabel)) + } + + } + + if obj.obj.Advanced != nil { + + obj.Advanced().validateObj(vObj, set_default) + } + + if len(obj.obj.Communities) != 0 { + + if set_default { + obj.Communities().clearHolderSlice() + for _, item := range obj.obj.Communities { + obj.Communities().appendHolderSlice(&bgpCommunity{obj: item}) + } + } + for _, item := range obj.Communities().Items() { + item.validateObj(vObj, set_default) + } + + } + + if len(obj.obj.ExtCommunities) != 0 { + + if set_default { + obj.ExtCommunities().clearHolderSlice() + for _, item := range obj.obj.ExtCommunities { + obj.ExtCommunities().appendHolderSlice(&bgpExtCommunity{obj: item}) + } + } + for _, item := range obj.ExtCommunities().Items() { + item.validateObj(vObj, set_default) + } + + } + + if obj.obj.AsPath != nil { + + obj.AsPath().validateObj(vObj, set_default) + } + +} + +func (obj *bgpV6EthernetSegment) setDefault() { + if obj.obj.Esi == nil { + obj.SetEsi("00000000000000000000") + } + if obj.obj.ActiveMode == nil { + obj.SetActiveMode(BgpV6EthernetSegmentActiveMode.ALL_ACTIVE) + + } + if obj.obj.EsiLabel == nil { + obj.SetEsiLabel(0) + } + +} + +// ***** VxlanV4TunnelDestinationIPModeUnicast ***** +type vxlanV4TunnelDestinationIPModeUnicast struct { + validation + obj *otg.VxlanV4TunnelDestinationIPModeUnicast + vtepsHolder VxlanV4TunnelDestinationIPModeUnicastVxlanV4TunnelDestinationIPModeUnicastVtepIter +} + +func NewVxlanV4TunnelDestinationIPModeUnicast() VxlanV4TunnelDestinationIPModeUnicast { + obj := vxlanV4TunnelDestinationIPModeUnicast{obj: &otg.VxlanV4TunnelDestinationIPModeUnicast{}} + obj.setDefault() + return &obj +} + +func (obj *vxlanV4TunnelDestinationIPModeUnicast) Msg() *otg.VxlanV4TunnelDestinationIPModeUnicast { + return obj.obj +} + +func (obj *vxlanV4TunnelDestinationIPModeUnicast) SetMsg(msg *otg.VxlanV4TunnelDestinationIPModeUnicast) VxlanV4TunnelDestinationIPModeUnicast { + obj.setNil() + proto.Merge(obj.obj, msg) + return obj +} + +func (obj *vxlanV4TunnelDestinationIPModeUnicast) ToProto() (*otg.VxlanV4TunnelDestinationIPModeUnicast, error) { + err := obj.validateToAndFrom() + if err != nil { + return nil, err + } + return obj.Msg(), nil +} + +func (obj *vxlanV4TunnelDestinationIPModeUnicast) FromProto(msg *otg.VxlanV4TunnelDestinationIPModeUnicast) (VxlanV4TunnelDestinationIPModeUnicast, error) { + newObj := obj.SetMsg(msg) + err := newObj.validateToAndFrom() + if err != nil { + return nil, err + } + return newObj, nil +} + +func (obj *vxlanV4TunnelDestinationIPModeUnicast) ToPbText() (string, error) { + vErr := obj.validateToAndFrom() + if vErr != nil { + return "", vErr + } + protoMarshal, err := proto.Marshal(obj.Msg()) + if err != nil { + return "", err + } + return string(protoMarshal), nil +} + +func (obj *vxlanV4TunnelDestinationIPModeUnicast) FromPbText(value string) error { + retObj := proto.Unmarshal([]byte(value), obj.Msg()) + if retObj != nil { + return retObj + } + obj.setNil() + vErr := obj.validateToAndFrom() + if vErr != nil { + return vErr + } + return retObj +} + +func (obj *vxlanV4TunnelDestinationIPModeUnicast) ToYaml() (string, error) { + vErr := obj.validateToAndFrom() + if vErr != nil { + return "", vErr + } + opts := protojson.MarshalOptions{ + UseProtoNames: true, + AllowPartial: true, + EmitUnpopulated: false, + } + data, err := opts.Marshal(obj.Msg()) + if err != nil { + return "", err + } + data, err = yaml.JSONToYAML(data) + if err != nil { + return "", err + } + return string(data), nil +} + +func (obj *vxlanV4TunnelDestinationIPModeUnicast) FromYaml(value string) error { + if value == "" { + value = "{}" + } + data, err := yaml.YAMLToJSON([]byte(value)) + if err != nil { + return err + } + opts := protojson.UnmarshalOptions{ + AllowPartial: true, + DiscardUnknown: false, + } + uError := opts.Unmarshal([]byte(data), obj.Msg()) + if uError != nil { + return fmt.Errorf("unmarshal error %s", strings.Replace( + uError.Error(), "\u00a0", " ", -1)[7:]) + } + obj.setNil() + vErr := obj.validateToAndFrom() + if vErr != nil { + return vErr + } + return nil +} + +func (obj *vxlanV4TunnelDestinationIPModeUnicast) ToJson() (string, error) { + vErr := obj.validateToAndFrom() + if vErr != nil { + return "", vErr + } + opts := protojson.MarshalOptions{ + UseProtoNames: true, + AllowPartial: true, + EmitUnpopulated: false, + Indent: " ", + } + data, err := opts.Marshal(obj.Msg()) + if err != nil { + return "", err + } + return string(data), nil +} + +func (obj *vxlanV4TunnelDestinationIPModeUnicast) FromJson(value string) error { + opts := protojson.UnmarshalOptions{ + AllowPartial: true, + DiscardUnknown: false, + } + if value == "" { + value = "{}" + } + uError := opts.Unmarshal([]byte(value), obj.Msg()) + if uError != nil { + return fmt.Errorf("unmarshal error %s", strings.Replace( + uError.Error(), "\u00a0", " ", -1)[7:]) + } + obj.setNil() + err := obj.validateToAndFrom() + if err != nil { + return err + } + return nil +} + +func (obj *vxlanV4TunnelDestinationIPModeUnicast) validateToAndFrom() error { + // emptyVars() + obj.validateObj(&obj.validation, true) + return obj.validationResult() +} + +func (obj *vxlanV4TunnelDestinationIPModeUnicast) Validate() error { + // emptyVars() + obj.validateObj(&obj.validation, false) + return obj.validationResult() +} + +func (obj *vxlanV4TunnelDestinationIPModeUnicast) String() string { + str, err := obj.ToYaml() + if err != nil { + return err.Error() + } + return str +} + +func (obj *vxlanV4TunnelDestinationIPModeUnicast) Clone() (VxlanV4TunnelDestinationIPModeUnicast, error) { + vErr := obj.Validate() + if vErr != nil { + return nil, vErr + } + newObj := NewVxlanV4TunnelDestinationIPModeUnicast() + data, err := proto.Marshal(obj.Msg()) + if err != nil { + return nil, err + } + pbErr := proto.Unmarshal(data, newObj.Msg()) + if pbErr != nil { + return nil, pbErr + } + return newObj, nil +} + +func (obj *vxlanV4TunnelDestinationIPModeUnicast) setNil() { + obj.vtepsHolder = nil + obj.validationErrors = nil + obj.warnings = nil + obj.constraints = make(map[string]map[string]Constraints) +} + +// VxlanV4TunnelDestinationIPModeUnicast is description is TBD +type VxlanV4TunnelDestinationIPModeUnicast interface { + Validation + // Msg marshals VxlanV4TunnelDestinationIPModeUnicast to protobuf object *otg.VxlanV4TunnelDestinationIPModeUnicast + // and doesn't set defaults + Msg() *otg.VxlanV4TunnelDestinationIPModeUnicast + // SetMsg unmarshals VxlanV4TunnelDestinationIPModeUnicast from protobuf object *otg.VxlanV4TunnelDestinationIPModeUnicast + // and doesn't set defaults + SetMsg(*otg.VxlanV4TunnelDestinationIPModeUnicast) VxlanV4TunnelDestinationIPModeUnicast + // ToProto marshals VxlanV4TunnelDestinationIPModeUnicast to protobuf object *otg.VxlanV4TunnelDestinationIPModeUnicast + ToProto() (*otg.VxlanV4TunnelDestinationIPModeUnicast, error) + // ToPbText marshals VxlanV4TunnelDestinationIPModeUnicast to protobuf text + ToPbText() (string, error) + // ToYaml marshals VxlanV4TunnelDestinationIPModeUnicast to YAML text + ToYaml() (string, error) + // ToJson marshals VxlanV4TunnelDestinationIPModeUnicast to JSON text + ToJson() (string, error) + // FromProto unmarshals VxlanV4TunnelDestinationIPModeUnicast from protobuf object *otg.VxlanV4TunnelDestinationIPModeUnicast + FromProto(msg *otg.VxlanV4TunnelDestinationIPModeUnicast) (VxlanV4TunnelDestinationIPModeUnicast, error) + // FromPbText unmarshals VxlanV4TunnelDestinationIPModeUnicast from protobuf text + FromPbText(value string) error + // FromYaml unmarshals VxlanV4TunnelDestinationIPModeUnicast from YAML text + FromYaml(value string) error + // FromJson unmarshals VxlanV4TunnelDestinationIPModeUnicast from JSON text + FromJson(value string) error + // Validate validates VxlanV4TunnelDestinationIPModeUnicast + Validate() error + // A stringer function + String() string + // Clones the object + Clone() (VxlanV4TunnelDestinationIPModeUnicast, error) + validateToAndFrom() error + validateObj(vObj *validation, set_default bool) + setDefault() + // Vteps returns VxlanV4TunnelDestinationIPModeUnicastVxlanV4TunnelDestinationIPModeUnicastVtepIterIter, set in VxlanV4TunnelDestinationIPModeUnicast + Vteps() VxlanV4TunnelDestinationIPModeUnicastVxlanV4TunnelDestinationIPModeUnicastVtepIter + setNil() +} + +// List of VTEPs for member VNI(VXLAN Network Identifier) +// Vteps returns a []VxlanV4TunnelDestinationIPModeUnicastVtep +func (obj *vxlanV4TunnelDestinationIPModeUnicast) Vteps() VxlanV4TunnelDestinationIPModeUnicastVxlanV4TunnelDestinationIPModeUnicastVtepIter { + if len(obj.obj.Vteps) == 0 { + obj.obj.Vteps = []*otg.VxlanV4TunnelDestinationIPModeUnicastVtep{} + } + if obj.vtepsHolder == nil { + obj.vtepsHolder = newVxlanV4TunnelDestinationIPModeUnicastVxlanV4TunnelDestinationIPModeUnicastVtepIter(&obj.obj.Vteps).setMsg(obj) + } + return obj.vtepsHolder +} + +type vxlanV4TunnelDestinationIPModeUnicastVxlanV4TunnelDestinationIPModeUnicastVtepIter struct { + obj *vxlanV4TunnelDestinationIPModeUnicast + vxlanV4TunnelDestinationIPModeUnicastVtepSlice []VxlanV4TunnelDestinationIPModeUnicastVtep + fieldPtr *[]*otg.VxlanV4TunnelDestinationIPModeUnicastVtep +} + +func newVxlanV4TunnelDestinationIPModeUnicastVxlanV4TunnelDestinationIPModeUnicastVtepIter(ptr *[]*otg.VxlanV4TunnelDestinationIPModeUnicastVtep) VxlanV4TunnelDestinationIPModeUnicastVxlanV4TunnelDestinationIPModeUnicastVtepIter { + return &vxlanV4TunnelDestinationIPModeUnicastVxlanV4TunnelDestinationIPModeUnicastVtepIter{fieldPtr: ptr} +} + +type VxlanV4TunnelDestinationIPModeUnicastVxlanV4TunnelDestinationIPModeUnicastVtepIter interface { + setMsg(*vxlanV4TunnelDestinationIPModeUnicast) VxlanV4TunnelDestinationIPModeUnicastVxlanV4TunnelDestinationIPModeUnicastVtepIter + Items() []VxlanV4TunnelDestinationIPModeUnicastVtep + Add() VxlanV4TunnelDestinationIPModeUnicastVtep + Append(items ...VxlanV4TunnelDestinationIPModeUnicastVtep) VxlanV4TunnelDestinationIPModeUnicastVxlanV4TunnelDestinationIPModeUnicastVtepIter + Set(index int, newObj VxlanV4TunnelDestinationIPModeUnicastVtep) VxlanV4TunnelDestinationIPModeUnicastVxlanV4TunnelDestinationIPModeUnicastVtepIter + Clear() VxlanV4TunnelDestinationIPModeUnicastVxlanV4TunnelDestinationIPModeUnicastVtepIter + clearHolderSlice() VxlanV4TunnelDestinationIPModeUnicastVxlanV4TunnelDestinationIPModeUnicastVtepIter + appendHolderSlice(item VxlanV4TunnelDestinationIPModeUnicastVtep) VxlanV4TunnelDestinationIPModeUnicastVxlanV4TunnelDestinationIPModeUnicastVtepIter +} + +func (obj *vxlanV4TunnelDestinationIPModeUnicastVxlanV4TunnelDestinationIPModeUnicastVtepIter) setMsg(msg *vxlanV4TunnelDestinationIPModeUnicast) VxlanV4TunnelDestinationIPModeUnicastVxlanV4TunnelDestinationIPModeUnicastVtepIter { + obj.clearHolderSlice() + for _, val := range *obj.fieldPtr { + obj.appendHolderSlice(&vxlanV4TunnelDestinationIPModeUnicastVtep{obj: val}) + } + obj.obj = msg + return obj +} + +func (obj *vxlanV4TunnelDestinationIPModeUnicastVxlanV4TunnelDestinationIPModeUnicastVtepIter) Items() []VxlanV4TunnelDestinationIPModeUnicastVtep { + return obj.vxlanV4TunnelDestinationIPModeUnicastVtepSlice +} + +func (obj *vxlanV4TunnelDestinationIPModeUnicastVxlanV4TunnelDestinationIPModeUnicastVtepIter) Add() VxlanV4TunnelDestinationIPModeUnicastVtep { + newObj := &otg.VxlanV4TunnelDestinationIPModeUnicastVtep{} + *obj.fieldPtr = append(*obj.fieldPtr, newObj) + newLibObj := &vxlanV4TunnelDestinationIPModeUnicastVtep{obj: newObj} + newLibObj.setDefault() + obj.vxlanV4TunnelDestinationIPModeUnicastVtepSlice = append(obj.vxlanV4TunnelDestinationIPModeUnicastVtepSlice, newLibObj) + return newLibObj +} + +func (obj *vxlanV4TunnelDestinationIPModeUnicastVxlanV4TunnelDestinationIPModeUnicastVtepIter) Append(items ...VxlanV4TunnelDestinationIPModeUnicastVtep) VxlanV4TunnelDestinationIPModeUnicastVxlanV4TunnelDestinationIPModeUnicastVtepIter { + for _, item := range items { + newObj := item.Msg() + *obj.fieldPtr = append(*obj.fieldPtr, newObj) + obj.vxlanV4TunnelDestinationIPModeUnicastVtepSlice = append(obj.vxlanV4TunnelDestinationIPModeUnicastVtepSlice, item) + } + return obj +} + +func (obj *vxlanV4TunnelDestinationIPModeUnicastVxlanV4TunnelDestinationIPModeUnicastVtepIter) Set(index int, newObj VxlanV4TunnelDestinationIPModeUnicastVtep) VxlanV4TunnelDestinationIPModeUnicastVxlanV4TunnelDestinationIPModeUnicastVtepIter { + (*obj.fieldPtr)[index] = newObj.Msg() + obj.vxlanV4TunnelDestinationIPModeUnicastVtepSlice[index] = newObj + return obj +} +func (obj *vxlanV4TunnelDestinationIPModeUnicastVxlanV4TunnelDestinationIPModeUnicastVtepIter) Clear() VxlanV4TunnelDestinationIPModeUnicastVxlanV4TunnelDestinationIPModeUnicastVtepIter { + if len(*obj.fieldPtr) > 0 { + *obj.fieldPtr = []*otg.VxlanV4TunnelDestinationIPModeUnicastVtep{} + obj.vxlanV4TunnelDestinationIPModeUnicastVtepSlice = []VxlanV4TunnelDestinationIPModeUnicastVtep{} + } + return obj +} +func (obj *vxlanV4TunnelDestinationIPModeUnicastVxlanV4TunnelDestinationIPModeUnicastVtepIter) clearHolderSlice() VxlanV4TunnelDestinationIPModeUnicastVxlanV4TunnelDestinationIPModeUnicastVtepIter { + if len(obj.vxlanV4TunnelDestinationIPModeUnicastVtepSlice) > 0 { + obj.vxlanV4TunnelDestinationIPModeUnicastVtepSlice = []VxlanV4TunnelDestinationIPModeUnicastVtep{} + } + return obj +} +func (obj *vxlanV4TunnelDestinationIPModeUnicastVxlanV4TunnelDestinationIPModeUnicastVtepIter) appendHolderSlice(item VxlanV4TunnelDestinationIPModeUnicastVtep) VxlanV4TunnelDestinationIPModeUnicastVxlanV4TunnelDestinationIPModeUnicastVtepIter { + obj.vxlanV4TunnelDestinationIPModeUnicastVtepSlice = append(obj.vxlanV4TunnelDestinationIPModeUnicastVtepSlice, item) + return obj +} + +func (obj *vxlanV4TunnelDestinationIPModeUnicast) validateObj(vObj *validation, set_default bool) { + if set_default { + obj.setDefault() + } + + if len(obj.obj.Vteps) != 0 { + + if set_default { + obj.Vteps().clearHolderSlice() + for _, item := range obj.obj.Vteps { + obj.Vteps().appendHolderSlice(&vxlanV4TunnelDestinationIPModeUnicastVtep{obj: item}) + } + } + for _, item := range obj.Vteps().Items() { + item.validateObj(vObj, set_default) + } + + } + +} + +func (obj *vxlanV4TunnelDestinationIPModeUnicast) setDefault() { + +} + +// ***** VxlanV4TunnelDestinationIPModeMulticast ***** +type vxlanV4TunnelDestinationIPModeMulticast struct { + validation + obj *otg.VxlanV4TunnelDestinationIPModeMulticast +} + +func NewVxlanV4TunnelDestinationIPModeMulticast() VxlanV4TunnelDestinationIPModeMulticast { + obj := vxlanV4TunnelDestinationIPModeMulticast{obj: &otg.VxlanV4TunnelDestinationIPModeMulticast{}} + obj.setDefault() + return &obj +} + +func (obj *vxlanV4TunnelDestinationIPModeMulticast) Msg() *otg.VxlanV4TunnelDestinationIPModeMulticast { + return obj.obj +} + +func (obj *vxlanV4TunnelDestinationIPModeMulticast) SetMsg(msg *otg.VxlanV4TunnelDestinationIPModeMulticast) VxlanV4TunnelDestinationIPModeMulticast { + + proto.Merge(obj.obj, msg) + return obj +} + +func (obj *vxlanV4TunnelDestinationIPModeMulticast) ToProto() (*otg.VxlanV4TunnelDestinationIPModeMulticast, error) { + err := obj.validateToAndFrom() + if err != nil { + return nil, err + } + return obj.Msg(), nil +} + +func (obj *vxlanV4TunnelDestinationIPModeMulticast) FromProto(msg *otg.VxlanV4TunnelDestinationIPModeMulticast) (VxlanV4TunnelDestinationIPModeMulticast, error) { + newObj := obj.SetMsg(msg) + err := newObj.validateToAndFrom() + if err != nil { + return nil, err + } + return newObj, nil +} + +func (obj *vxlanV4TunnelDestinationIPModeMulticast) ToPbText() (string, error) { + vErr := obj.validateToAndFrom() + if vErr != nil { + return "", vErr + } + protoMarshal, err := proto.Marshal(obj.Msg()) + if err != nil { + return "", err + } + return string(protoMarshal), nil +} + +func (obj *vxlanV4TunnelDestinationIPModeMulticast) FromPbText(value string) error { + retObj := proto.Unmarshal([]byte(value), obj.Msg()) + if retObj != nil { + return retObj + } + + vErr := obj.validateToAndFrom() + if vErr != nil { + return vErr + } + return retObj +} + +func (obj *vxlanV4TunnelDestinationIPModeMulticast) ToYaml() (string, error) { + vErr := obj.validateToAndFrom() + if vErr != nil { + return "", vErr + } + opts := protojson.MarshalOptions{ + UseProtoNames: true, + AllowPartial: true, + EmitUnpopulated: false, + } + data, err := opts.Marshal(obj.Msg()) + if err != nil { + return "", err + } + data, err = yaml.JSONToYAML(data) + if err != nil { + return "", err + } + return string(data), nil +} + +func (obj *vxlanV4TunnelDestinationIPModeMulticast) FromYaml(value string) error { + if value == "" { + value = "{}" + } + data, err := yaml.YAMLToJSON([]byte(value)) + if err != nil { + return err + } + opts := protojson.UnmarshalOptions{ + AllowPartial: true, + DiscardUnknown: false, + } + uError := opts.Unmarshal([]byte(data), obj.Msg()) + if uError != nil { + return fmt.Errorf("unmarshal error %s", strings.Replace( + uError.Error(), "\u00a0", " ", -1)[7:]) + } + + vErr := obj.validateToAndFrom() + if vErr != nil { + return vErr + } + return nil +} + +func (obj *vxlanV4TunnelDestinationIPModeMulticast) ToJson() (string, error) { + vErr := obj.validateToAndFrom() + if vErr != nil { + return "", vErr + } + opts := protojson.MarshalOptions{ + UseProtoNames: true, + AllowPartial: true, + EmitUnpopulated: false, + Indent: " ", + } + data, err := opts.Marshal(obj.Msg()) + if err != nil { + return "", err + } + return string(data), nil +} + +func (obj *vxlanV4TunnelDestinationIPModeMulticast) FromJson(value string) error { + opts := protojson.UnmarshalOptions{ + AllowPartial: true, + DiscardUnknown: false, + } + if value == "" { + value = "{}" + } + uError := opts.Unmarshal([]byte(value), obj.Msg()) + if uError != nil { + return fmt.Errorf("unmarshal error %s", strings.Replace( + uError.Error(), "\u00a0", " ", -1)[7:]) + } + + err := obj.validateToAndFrom() + if err != nil { + return err + } + return nil +} + +func (obj *vxlanV4TunnelDestinationIPModeMulticast) validateToAndFrom() error { + // emptyVars() + obj.validateObj(&obj.validation, true) + return obj.validationResult() +} + +func (obj *vxlanV4TunnelDestinationIPModeMulticast) Validate() error { + // emptyVars() + obj.validateObj(&obj.validation, false) + return obj.validationResult() +} + +func (obj *vxlanV4TunnelDestinationIPModeMulticast) String() string { + str, err := obj.ToYaml() + if err != nil { + return err.Error() + } + return str +} + +func (obj *vxlanV4TunnelDestinationIPModeMulticast) Clone() (VxlanV4TunnelDestinationIPModeMulticast, error) { + vErr := obj.Validate() + if vErr != nil { + return nil, vErr + } + newObj := NewVxlanV4TunnelDestinationIPModeMulticast() + data, err := proto.Marshal(obj.Msg()) + if err != nil { + return nil, err + } + pbErr := proto.Unmarshal(data, newObj.Msg()) + if pbErr != nil { + return nil, pbErr + } + return newObj, nil +} + +// VxlanV4TunnelDestinationIPModeMulticast is multicast Group address for member VNI(VXLAN Network Identifier) +type VxlanV4TunnelDestinationIPModeMulticast interface { + Validation + // Msg marshals VxlanV4TunnelDestinationIPModeMulticast to protobuf object *otg.VxlanV4TunnelDestinationIPModeMulticast + // and doesn't set defaults + Msg() *otg.VxlanV4TunnelDestinationIPModeMulticast + // SetMsg unmarshals VxlanV4TunnelDestinationIPModeMulticast from protobuf object *otg.VxlanV4TunnelDestinationIPModeMulticast + // and doesn't set defaults + SetMsg(*otg.VxlanV4TunnelDestinationIPModeMulticast) VxlanV4TunnelDestinationIPModeMulticast + // ToProto marshals VxlanV4TunnelDestinationIPModeMulticast to protobuf object *otg.VxlanV4TunnelDestinationIPModeMulticast + ToProto() (*otg.VxlanV4TunnelDestinationIPModeMulticast, error) + // ToPbText marshals VxlanV4TunnelDestinationIPModeMulticast to protobuf text + ToPbText() (string, error) + // ToYaml marshals VxlanV4TunnelDestinationIPModeMulticast to YAML text + ToYaml() (string, error) + // ToJson marshals VxlanV4TunnelDestinationIPModeMulticast to JSON text + ToJson() (string, error) + // FromProto unmarshals VxlanV4TunnelDestinationIPModeMulticast from protobuf object *otg.VxlanV4TunnelDestinationIPModeMulticast + FromProto(msg *otg.VxlanV4TunnelDestinationIPModeMulticast) (VxlanV4TunnelDestinationIPModeMulticast, error) + // FromPbText unmarshals VxlanV4TunnelDestinationIPModeMulticast from protobuf text + FromPbText(value string) error + // FromYaml unmarshals VxlanV4TunnelDestinationIPModeMulticast from YAML text + FromYaml(value string) error + // FromJson unmarshals VxlanV4TunnelDestinationIPModeMulticast from JSON text + FromJson(value string) error + // Validate validates VxlanV4TunnelDestinationIPModeMulticast + Validate() error + // A stringer function + String() string + // Clones the object + Clone() (VxlanV4TunnelDestinationIPModeMulticast, error) + validateToAndFrom() error + validateObj(vObj *validation, set_default bool) + setDefault() + // Address returns string, set in VxlanV4TunnelDestinationIPModeMulticast. + Address() string + // SetAddress assigns string provided by user to VxlanV4TunnelDestinationIPModeMulticast + SetAddress(value string) VxlanV4TunnelDestinationIPModeMulticast + // HasAddress checks if Address has been set in VxlanV4TunnelDestinationIPModeMulticast + HasAddress() bool +} + +// IPv4 Multicast address +// Address returns a string +func (obj *vxlanV4TunnelDestinationIPModeMulticast) Address() string { + + return *obj.obj.Address + +} + +// IPv4 Multicast address +// Address returns a string +func (obj *vxlanV4TunnelDestinationIPModeMulticast) HasAddress() bool { + return obj.obj.Address != nil +} + +// IPv4 Multicast address +// SetAddress sets the string value in the VxlanV4TunnelDestinationIPModeMulticast object +func (obj *vxlanV4TunnelDestinationIPModeMulticast) SetAddress(value string) VxlanV4TunnelDestinationIPModeMulticast { + + obj.obj.Address = &value + return obj +} + +func (obj *vxlanV4TunnelDestinationIPModeMulticast) validateObj(vObj *validation, set_default bool) { + if set_default { + obj.setDefault() + } + + if obj.obj.Address != nil { + + err := obj.validateIpv4(obj.Address()) + if err != nil { + vObj.validationErrors = append(vObj.validationErrors, fmt.Sprintf("%s %s", err.Error(), "on VxlanV4TunnelDestinationIPModeMulticast.Address")) + } + + } + +} + +func (obj *vxlanV4TunnelDestinationIPModeMulticast) setDefault() { + +} + +// ***** VxlanV6TunnelDestinationIPModeUnicast ***** +type vxlanV6TunnelDestinationIPModeUnicast struct { + validation + obj *otg.VxlanV6TunnelDestinationIPModeUnicast + vtepsHolder VxlanV6TunnelDestinationIPModeUnicastVxlanV6TunnelDestinationIPModeUnicastVtepIter +} + +func NewVxlanV6TunnelDestinationIPModeUnicast() VxlanV6TunnelDestinationIPModeUnicast { + obj := vxlanV6TunnelDestinationIPModeUnicast{obj: &otg.VxlanV6TunnelDestinationIPModeUnicast{}} + obj.setDefault() + return &obj +} + +func (obj *vxlanV6TunnelDestinationIPModeUnicast) Msg() *otg.VxlanV6TunnelDestinationIPModeUnicast { + return obj.obj +} + +func (obj *vxlanV6TunnelDestinationIPModeUnicast) SetMsg(msg *otg.VxlanV6TunnelDestinationIPModeUnicast) VxlanV6TunnelDestinationIPModeUnicast { + obj.setNil() + proto.Merge(obj.obj, msg) + return obj +} + +func (obj *vxlanV6TunnelDestinationIPModeUnicast) ToProto() (*otg.VxlanV6TunnelDestinationIPModeUnicast, error) { + err := obj.validateToAndFrom() + if err != nil { + return nil, err + } + return obj.Msg(), nil +} + +func (obj *vxlanV6TunnelDestinationIPModeUnicast) FromProto(msg *otg.VxlanV6TunnelDestinationIPModeUnicast) (VxlanV6TunnelDestinationIPModeUnicast, error) { + newObj := obj.SetMsg(msg) + err := newObj.validateToAndFrom() + if err != nil { + return nil, err + } + return newObj, nil +} + +func (obj *vxlanV6TunnelDestinationIPModeUnicast) ToPbText() (string, error) { + vErr := obj.validateToAndFrom() + if vErr != nil { + return "", vErr + } + protoMarshal, err := proto.Marshal(obj.Msg()) + if err != nil { + return "", err + } + return string(protoMarshal), nil +} + +func (obj *vxlanV6TunnelDestinationIPModeUnicast) FromPbText(value string) error { + retObj := proto.Unmarshal([]byte(value), obj.Msg()) + if retObj != nil { + return retObj + } + obj.setNil() + vErr := obj.validateToAndFrom() + if vErr != nil { + return vErr + } + return retObj +} + +func (obj *vxlanV6TunnelDestinationIPModeUnicast) ToYaml() (string, error) { + vErr := obj.validateToAndFrom() + if vErr != nil { + return "", vErr + } + opts := protojson.MarshalOptions{ + UseProtoNames: true, + AllowPartial: true, + EmitUnpopulated: false, + } + data, err := opts.Marshal(obj.Msg()) + if err != nil { + return "", err + } + data, err = yaml.JSONToYAML(data) + if err != nil { + return "", err + } + return string(data), nil +} + +func (obj *vxlanV6TunnelDestinationIPModeUnicast) FromYaml(value string) error { + if value == "" { + value = "{}" + } + data, err := yaml.YAMLToJSON([]byte(value)) + if err != nil { + return err + } + opts := protojson.UnmarshalOptions{ + AllowPartial: true, + DiscardUnknown: false, + } + uError := opts.Unmarshal([]byte(data), obj.Msg()) + if uError != nil { + return fmt.Errorf("unmarshal error %s", strings.Replace( + uError.Error(), "\u00a0", " ", -1)[7:]) + } + obj.setNil() + vErr := obj.validateToAndFrom() + if vErr != nil { + return vErr + } + return nil +} + +func (obj *vxlanV6TunnelDestinationIPModeUnicast) ToJson() (string, error) { + vErr := obj.validateToAndFrom() + if vErr != nil { + return "", vErr + } + opts := protojson.MarshalOptions{ + UseProtoNames: true, + AllowPartial: true, + EmitUnpopulated: false, + Indent: " ", + } + data, err := opts.Marshal(obj.Msg()) + if err != nil { + return "", err + } + return string(data), nil +} + +func (obj *vxlanV6TunnelDestinationIPModeUnicast) FromJson(value string) error { + opts := protojson.UnmarshalOptions{ + AllowPartial: true, + DiscardUnknown: false, + } + if value == "" { + value = "{}" + } + uError := opts.Unmarshal([]byte(value), obj.Msg()) + if uError != nil { + return fmt.Errorf("unmarshal error %s", strings.Replace( + uError.Error(), "\u00a0", " ", -1)[7:]) + } + obj.setNil() + err := obj.validateToAndFrom() + if err != nil { + return err + } + return nil +} + +func (obj *vxlanV6TunnelDestinationIPModeUnicast) validateToAndFrom() error { + // emptyVars() + obj.validateObj(&obj.validation, true) + return obj.validationResult() +} + +func (obj *vxlanV6TunnelDestinationIPModeUnicast) Validate() error { + // emptyVars() + obj.validateObj(&obj.validation, false) + return obj.validationResult() +} + +func (obj *vxlanV6TunnelDestinationIPModeUnicast) String() string { + str, err := obj.ToYaml() + if err != nil { + return err.Error() + } + return str +} + +func (obj *vxlanV6TunnelDestinationIPModeUnicast) Clone() (VxlanV6TunnelDestinationIPModeUnicast, error) { + vErr := obj.Validate() + if vErr != nil { + return nil, vErr + } + newObj := NewVxlanV6TunnelDestinationIPModeUnicast() + data, err := proto.Marshal(obj.Msg()) + if err != nil { + return nil, err + } + pbErr := proto.Unmarshal(data, newObj.Msg()) + if pbErr != nil { + return nil, pbErr + } + return newObj, nil +} + +func (obj *vxlanV6TunnelDestinationIPModeUnicast) setNil() { + obj.vtepsHolder = nil + obj.validationErrors = nil + obj.warnings = nil + obj.constraints = make(map[string]map[string]Constraints) +} + +// VxlanV6TunnelDestinationIPModeUnicast is description is TBD +type VxlanV6TunnelDestinationIPModeUnicast interface { + Validation + // Msg marshals VxlanV6TunnelDestinationIPModeUnicast to protobuf object *otg.VxlanV6TunnelDestinationIPModeUnicast + // and doesn't set defaults + Msg() *otg.VxlanV6TunnelDestinationIPModeUnicast + // SetMsg unmarshals VxlanV6TunnelDestinationIPModeUnicast from protobuf object *otg.VxlanV6TunnelDestinationIPModeUnicast + // and doesn't set defaults + SetMsg(*otg.VxlanV6TunnelDestinationIPModeUnicast) VxlanV6TunnelDestinationIPModeUnicast + // ToProto marshals VxlanV6TunnelDestinationIPModeUnicast to protobuf object *otg.VxlanV6TunnelDestinationIPModeUnicast + ToProto() (*otg.VxlanV6TunnelDestinationIPModeUnicast, error) + // ToPbText marshals VxlanV6TunnelDestinationIPModeUnicast to protobuf text + ToPbText() (string, error) + // ToYaml marshals VxlanV6TunnelDestinationIPModeUnicast to YAML text + ToYaml() (string, error) + // ToJson marshals VxlanV6TunnelDestinationIPModeUnicast to JSON text + ToJson() (string, error) + // FromProto unmarshals VxlanV6TunnelDestinationIPModeUnicast from protobuf object *otg.VxlanV6TunnelDestinationIPModeUnicast + FromProto(msg *otg.VxlanV6TunnelDestinationIPModeUnicast) (VxlanV6TunnelDestinationIPModeUnicast, error) + // FromPbText unmarshals VxlanV6TunnelDestinationIPModeUnicast from protobuf text + FromPbText(value string) error + // FromYaml unmarshals VxlanV6TunnelDestinationIPModeUnicast from YAML text + FromYaml(value string) error + // FromJson unmarshals VxlanV6TunnelDestinationIPModeUnicast from JSON text + FromJson(value string) error + // Validate validates VxlanV6TunnelDestinationIPModeUnicast + Validate() error + // A stringer function + String() string + // Clones the object + Clone() (VxlanV6TunnelDestinationIPModeUnicast, error) + validateToAndFrom() error + validateObj(vObj *validation, set_default bool) + setDefault() + // Vteps returns VxlanV6TunnelDestinationIPModeUnicastVxlanV6TunnelDestinationIPModeUnicastVtepIterIter, set in VxlanV6TunnelDestinationIPModeUnicast + Vteps() VxlanV6TunnelDestinationIPModeUnicastVxlanV6TunnelDestinationIPModeUnicastVtepIter + setNil() +} + +// List of VTEPs for member VNI(VXLAN Network Identifier) +// Vteps returns a []VxlanV6TunnelDestinationIPModeUnicastVtep +func (obj *vxlanV6TunnelDestinationIPModeUnicast) Vteps() VxlanV6TunnelDestinationIPModeUnicastVxlanV6TunnelDestinationIPModeUnicastVtepIter { + if len(obj.obj.Vteps) == 0 { + obj.obj.Vteps = []*otg.VxlanV6TunnelDestinationIPModeUnicastVtep{} + } + if obj.vtepsHolder == nil { + obj.vtepsHolder = newVxlanV6TunnelDestinationIPModeUnicastVxlanV6TunnelDestinationIPModeUnicastVtepIter(&obj.obj.Vteps).setMsg(obj) + } + return obj.vtepsHolder +} + +type vxlanV6TunnelDestinationIPModeUnicastVxlanV6TunnelDestinationIPModeUnicastVtepIter struct { + obj *vxlanV6TunnelDestinationIPModeUnicast + vxlanV6TunnelDestinationIPModeUnicastVtepSlice []VxlanV6TunnelDestinationIPModeUnicastVtep + fieldPtr *[]*otg.VxlanV6TunnelDestinationIPModeUnicastVtep +} + +func newVxlanV6TunnelDestinationIPModeUnicastVxlanV6TunnelDestinationIPModeUnicastVtepIter(ptr *[]*otg.VxlanV6TunnelDestinationIPModeUnicastVtep) VxlanV6TunnelDestinationIPModeUnicastVxlanV6TunnelDestinationIPModeUnicastVtepIter { + return &vxlanV6TunnelDestinationIPModeUnicastVxlanV6TunnelDestinationIPModeUnicastVtepIter{fieldPtr: ptr} +} + +type VxlanV6TunnelDestinationIPModeUnicastVxlanV6TunnelDestinationIPModeUnicastVtepIter interface { + setMsg(*vxlanV6TunnelDestinationIPModeUnicast) VxlanV6TunnelDestinationIPModeUnicastVxlanV6TunnelDestinationIPModeUnicastVtepIter + Items() []VxlanV6TunnelDestinationIPModeUnicastVtep + Add() VxlanV6TunnelDestinationIPModeUnicastVtep + Append(items ...VxlanV6TunnelDestinationIPModeUnicastVtep) VxlanV6TunnelDestinationIPModeUnicastVxlanV6TunnelDestinationIPModeUnicastVtepIter + Set(index int, newObj VxlanV6TunnelDestinationIPModeUnicastVtep) VxlanV6TunnelDestinationIPModeUnicastVxlanV6TunnelDestinationIPModeUnicastVtepIter + Clear() VxlanV6TunnelDestinationIPModeUnicastVxlanV6TunnelDestinationIPModeUnicastVtepIter + clearHolderSlice() VxlanV6TunnelDestinationIPModeUnicastVxlanV6TunnelDestinationIPModeUnicastVtepIter + appendHolderSlice(item VxlanV6TunnelDestinationIPModeUnicastVtep) VxlanV6TunnelDestinationIPModeUnicastVxlanV6TunnelDestinationIPModeUnicastVtepIter +} + +func (obj *vxlanV6TunnelDestinationIPModeUnicastVxlanV6TunnelDestinationIPModeUnicastVtepIter) setMsg(msg *vxlanV6TunnelDestinationIPModeUnicast) VxlanV6TunnelDestinationIPModeUnicastVxlanV6TunnelDestinationIPModeUnicastVtepIter { + obj.clearHolderSlice() + for _, val := range *obj.fieldPtr { + obj.appendHolderSlice(&vxlanV6TunnelDestinationIPModeUnicastVtep{obj: val}) + } + obj.obj = msg + return obj +} + +func (obj *vxlanV6TunnelDestinationIPModeUnicastVxlanV6TunnelDestinationIPModeUnicastVtepIter) Items() []VxlanV6TunnelDestinationIPModeUnicastVtep { + return obj.vxlanV6TunnelDestinationIPModeUnicastVtepSlice +} + +func (obj *vxlanV6TunnelDestinationIPModeUnicastVxlanV6TunnelDestinationIPModeUnicastVtepIter) Add() VxlanV6TunnelDestinationIPModeUnicastVtep { + newObj := &otg.VxlanV6TunnelDestinationIPModeUnicastVtep{} + *obj.fieldPtr = append(*obj.fieldPtr, newObj) + newLibObj := &vxlanV6TunnelDestinationIPModeUnicastVtep{obj: newObj} + newLibObj.setDefault() + obj.vxlanV6TunnelDestinationIPModeUnicastVtepSlice = append(obj.vxlanV6TunnelDestinationIPModeUnicastVtepSlice, newLibObj) + return newLibObj +} + +func (obj *vxlanV6TunnelDestinationIPModeUnicastVxlanV6TunnelDestinationIPModeUnicastVtepIter) Append(items ...VxlanV6TunnelDestinationIPModeUnicastVtep) VxlanV6TunnelDestinationIPModeUnicastVxlanV6TunnelDestinationIPModeUnicastVtepIter { + for _, item := range items { + newObj := item.Msg() + *obj.fieldPtr = append(*obj.fieldPtr, newObj) + obj.vxlanV6TunnelDestinationIPModeUnicastVtepSlice = append(obj.vxlanV6TunnelDestinationIPModeUnicastVtepSlice, item) + } + return obj +} + +func (obj *vxlanV6TunnelDestinationIPModeUnicastVxlanV6TunnelDestinationIPModeUnicastVtepIter) Set(index int, newObj VxlanV6TunnelDestinationIPModeUnicastVtep) VxlanV6TunnelDestinationIPModeUnicastVxlanV6TunnelDestinationIPModeUnicastVtepIter { + (*obj.fieldPtr)[index] = newObj.Msg() + obj.vxlanV6TunnelDestinationIPModeUnicastVtepSlice[index] = newObj + return obj +} +func (obj *vxlanV6TunnelDestinationIPModeUnicastVxlanV6TunnelDestinationIPModeUnicastVtepIter) Clear() VxlanV6TunnelDestinationIPModeUnicastVxlanV6TunnelDestinationIPModeUnicastVtepIter { + if len(*obj.fieldPtr) > 0 { + *obj.fieldPtr = []*otg.VxlanV6TunnelDestinationIPModeUnicastVtep{} + obj.vxlanV6TunnelDestinationIPModeUnicastVtepSlice = []VxlanV6TunnelDestinationIPModeUnicastVtep{} + } + return obj +} +func (obj *vxlanV6TunnelDestinationIPModeUnicastVxlanV6TunnelDestinationIPModeUnicastVtepIter) clearHolderSlice() VxlanV6TunnelDestinationIPModeUnicastVxlanV6TunnelDestinationIPModeUnicastVtepIter { + if len(obj.vxlanV6TunnelDestinationIPModeUnicastVtepSlice) > 0 { + obj.vxlanV6TunnelDestinationIPModeUnicastVtepSlice = []VxlanV6TunnelDestinationIPModeUnicastVtep{} + } + return obj +} +func (obj *vxlanV6TunnelDestinationIPModeUnicastVxlanV6TunnelDestinationIPModeUnicastVtepIter) appendHolderSlice(item VxlanV6TunnelDestinationIPModeUnicastVtep) VxlanV6TunnelDestinationIPModeUnicastVxlanV6TunnelDestinationIPModeUnicastVtepIter { + obj.vxlanV6TunnelDestinationIPModeUnicastVtepSlice = append(obj.vxlanV6TunnelDestinationIPModeUnicastVtepSlice, item) + return obj +} + +func (obj *vxlanV6TunnelDestinationIPModeUnicast) validateObj(vObj *validation, set_default bool) { + if set_default { + obj.setDefault() + } + + if len(obj.obj.Vteps) != 0 { + + if set_default { + obj.Vteps().clearHolderSlice() + for _, item := range obj.obj.Vteps { + obj.Vteps().appendHolderSlice(&vxlanV6TunnelDestinationIPModeUnicastVtep{obj: item}) + } + } + for _, item := range obj.Vteps().Items() { + item.validateObj(vObj, set_default) + } + + } + +} + +func (obj *vxlanV6TunnelDestinationIPModeUnicast) setDefault() { + +} + +// ***** VxlanV6TunnelDestinationIPModeMulticast ***** +type vxlanV6TunnelDestinationIPModeMulticast struct { + validation + obj *otg.VxlanV6TunnelDestinationIPModeMulticast +} + +func NewVxlanV6TunnelDestinationIPModeMulticast() VxlanV6TunnelDestinationIPModeMulticast { + obj := vxlanV6TunnelDestinationIPModeMulticast{obj: &otg.VxlanV6TunnelDestinationIPModeMulticast{}} + obj.setDefault() + return &obj +} + +func (obj *vxlanV6TunnelDestinationIPModeMulticast) Msg() *otg.VxlanV6TunnelDestinationIPModeMulticast { + return obj.obj +} + +func (obj *vxlanV6TunnelDestinationIPModeMulticast) SetMsg(msg *otg.VxlanV6TunnelDestinationIPModeMulticast) VxlanV6TunnelDestinationIPModeMulticast { + + proto.Merge(obj.obj, msg) + return obj +} + +func (obj *vxlanV6TunnelDestinationIPModeMulticast) ToProto() (*otg.VxlanV6TunnelDestinationIPModeMulticast, error) { + err := obj.validateToAndFrom() + if err != nil { + return nil, err + } + return obj.Msg(), nil +} + +func (obj *vxlanV6TunnelDestinationIPModeMulticast) FromProto(msg *otg.VxlanV6TunnelDestinationIPModeMulticast) (VxlanV6TunnelDestinationIPModeMulticast, error) { + newObj := obj.SetMsg(msg) + err := newObj.validateToAndFrom() + if err != nil { + return nil, err + } + return newObj, nil +} + +func (obj *vxlanV6TunnelDestinationIPModeMulticast) ToPbText() (string, error) { + vErr := obj.validateToAndFrom() + if vErr != nil { + return "", vErr + } + protoMarshal, err := proto.Marshal(obj.Msg()) + if err != nil { + return "", err + } + return string(protoMarshal), nil +} + +func (obj *vxlanV6TunnelDestinationIPModeMulticast) FromPbText(value string) error { + retObj := proto.Unmarshal([]byte(value), obj.Msg()) + if retObj != nil { + return retObj + } + + vErr := obj.validateToAndFrom() + if vErr != nil { + return vErr + } + return retObj +} + +func (obj *vxlanV6TunnelDestinationIPModeMulticast) ToYaml() (string, error) { + vErr := obj.validateToAndFrom() + if vErr != nil { + return "", vErr + } + opts := protojson.MarshalOptions{ + UseProtoNames: true, + AllowPartial: true, + EmitUnpopulated: false, + } + data, err := opts.Marshal(obj.Msg()) + if err != nil { + return "", err + } + data, err = yaml.JSONToYAML(data) + if err != nil { + return "", err + } + return string(data), nil +} + +func (obj *vxlanV6TunnelDestinationIPModeMulticast) FromYaml(value string) error { + if value == "" { + value = "{}" + } + data, err := yaml.YAMLToJSON([]byte(value)) + if err != nil { + return err + } + opts := protojson.UnmarshalOptions{ + AllowPartial: true, + DiscardUnknown: false, + } + uError := opts.Unmarshal([]byte(data), obj.Msg()) + if uError != nil { + return fmt.Errorf("unmarshal error %s", strings.Replace( + uError.Error(), "\u00a0", " ", -1)[7:]) + } + + vErr := obj.validateToAndFrom() + if vErr != nil { + return vErr + } + return nil +} + +func (obj *vxlanV6TunnelDestinationIPModeMulticast) ToJson() (string, error) { + vErr := obj.validateToAndFrom() + if vErr != nil { + return "", vErr + } + opts := protojson.MarshalOptions{ + UseProtoNames: true, + AllowPartial: true, + EmitUnpopulated: false, + Indent: " ", + } + data, err := opts.Marshal(obj.Msg()) + if err != nil { + return "", err + } + return string(data), nil +} + +func (obj *vxlanV6TunnelDestinationIPModeMulticast) FromJson(value string) error { + opts := protojson.UnmarshalOptions{ + AllowPartial: true, + DiscardUnknown: false, + } + if value == "" { + value = "{}" + } + uError := opts.Unmarshal([]byte(value), obj.Msg()) + if uError != nil { + return fmt.Errorf("unmarshal error %s", strings.Replace( + uError.Error(), "\u00a0", " ", -1)[7:]) + } + + err := obj.validateToAndFrom() + if err != nil { + return err + } + return nil +} + +func (obj *vxlanV6TunnelDestinationIPModeMulticast) validateToAndFrom() error { + // emptyVars() + obj.validateObj(&obj.validation, true) + return obj.validationResult() +} + +func (obj *vxlanV6TunnelDestinationIPModeMulticast) Validate() error { + // emptyVars() + obj.validateObj(&obj.validation, false) + return obj.validationResult() +} + +func (obj *vxlanV6TunnelDestinationIPModeMulticast) String() string { + str, err := obj.ToYaml() + if err != nil { + return err.Error() + } + return str +} + +func (obj *vxlanV6TunnelDestinationIPModeMulticast) Clone() (VxlanV6TunnelDestinationIPModeMulticast, error) { + vErr := obj.Validate() + if vErr != nil { + return nil, vErr + } + newObj := NewVxlanV6TunnelDestinationIPModeMulticast() + data, err := proto.Marshal(obj.Msg()) + if err != nil { + return nil, err + } + pbErr := proto.Unmarshal(data, newObj.Msg()) + if pbErr != nil { + return nil, pbErr + } + return newObj, nil +} + +// VxlanV6TunnelDestinationIPModeMulticast is multicast Group address for member VNI(VXLAN Network Identifier) +type VxlanV6TunnelDestinationIPModeMulticast interface { + Validation + // Msg marshals VxlanV6TunnelDestinationIPModeMulticast to protobuf object *otg.VxlanV6TunnelDestinationIPModeMulticast + // and doesn't set defaults + Msg() *otg.VxlanV6TunnelDestinationIPModeMulticast + // SetMsg unmarshals VxlanV6TunnelDestinationIPModeMulticast from protobuf object *otg.VxlanV6TunnelDestinationIPModeMulticast + // and doesn't set defaults + SetMsg(*otg.VxlanV6TunnelDestinationIPModeMulticast) VxlanV6TunnelDestinationIPModeMulticast + // ToProto marshals VxlanV6TunnelDestinationIPModeMulticast to protobuf object *otg.VxlanV6TunnelDestinationIPModeMulticast + ToProto() (*otg.VxlanV6TunnelDestinationIPModeMulticast, error) + // ToPbText marshals VxlanV6TunnelDestinationIPModeMulticast to protobuf text + ToPbText() (string, error) + // ToYaml marshals VxlanV6TunnelDestinationIPModeMulticast to YAML text + ToYaml() (string, error) + // ToJson marshals VxlanV6TunnelDestinationIPModeMulticast to JSON text + ToJson() (string, error) + // FromProto unmarshals VxlanV6TunnelDestinationIPModeMulticast from protobuf object *otg.VxlanV6TunnelDestinationIPModeMulticast + FromProto(msg *otg.VxlanV6TunnelDestinationIPModeMulticast) (VxlanV6TunnelDestinationIPModeMulticast, error) + // FromPbText unmarshals VxlanV6TunnelDestinationIPModeMulticast from protobuf text + FromPbText(value string) error + // FromYaml unmarshals VxlanV6TunnelDestinationIPModeMulticast from YAML text + FromYaml(value string) error + // FromJson unmarshals VxlanV6TunnelDestinationIPModeMulticast from JSON text + FromJson(value string) error + // Validate validates VxlanV6TunnelDestinationIPModeMulticast + Validate() error + // A stringer function + String() string + // Clones the object + Clone() (VxlanV6TunnelDestinationIPModeMulticast, error) + validateToAndFrom() error + validateObj(vObj *validation, set_default bool) + setDefault() + // Address returns string, set in VxlanV6TunnelDestinationIPModeMulticast. + Address() string + // SetAddress assigns string provided by user to VxlanV6TunnelDestinationIPModeMulticast + SetAddress(value string) VxlanV6TunnelDestinationIPModeMulticast + // HasAddress checks if Address has been set in VxlanV6TunnelDestinationIPModeMulticast + HasAddress() bool +} + +// IPv6 Multicast address +// Address returns a string +func (obj *vxlanV6TunnelDestinationIPModeMulticast) Address() string { + + return *obj.obj.Address + +} + +// IPv6 Multicast address +// Address returns a string +func (obj *vxlanV6TunnelDestinationIPModeMulticast) HasAddress() bool { + return obj.obj.Address != nil +} + +// IPv6 Multicast address +// SetAddress sets the string value in the VxlanV6TunnelDestinationIPModeMulticast object +func (obj *vxlanV6TunnelDestinationIPModeMulticast) SetAddress(value string) VxlanV6TunnelDestinationIPModeMulticast { + + obj.obj.Address = &value + return obj +} + +func (obj *vxlanV6TunnelDestinationIPModeMulticast) validateObj(vObj *validation, set_default bool) { + if set_default { + obj.setDefault() + } + + if obj.obj.Address != nil { + + err := obj.validateIpv6(obj.Address()) + if err != nil { + vObj.validationErrors = append(vObj.validationErrors, fmt.Sprintf("%s %s", err.Error(), "on VxlanV6TunnelDestinationIPModeMulticast.Address")) + } + + } + +} + +func (obj *vxlanV6TunnelDestinationIPModeMulticast) setDefault() { + +} + +// ***** RsvpSessionAttribute ***** +type rsvpSessionAttribute struct { + validation + obj *otg.RsvpSessionAttribute + resourceAffinitiesHolder RsvpResourceAffinities +} + +func NewRsvpSessionAttribute() RsvpSessionAttribute { + obj := rsvpSessionAttribute{obj: &otg.RsvpSessionAttribute{}} + obj.setDefault() + return &obj +} + +func (obj *rsvpSessionAttribute) Msg() *otg.RsvpSessionAttribute { + return obj.obj +} + +func (obj *rsvpSessionAttribute) SetMsg(msg *otg.RsvpSessionAttribute) RsvpSessionAttribute { + obj.setNil() + proto.Merge(obj.obj, msg) + return obj +} + +func (obj *rsvpSessionAttribute) ToProto() (*otg.RsvpSessionAttribute, error) { + err := obj.validateToAndFrom() + if err != nil { + return nil, err + } + return obj.Msg(), nil +} + +func (obj *rsvpSessionAttribute) FromProto(msg *otg.RsvpSessionAttribute) (RsvpSessionAttribute, error) { + newObj := obj.SetMsg(msg) + err := newObj.validateToAndFrom() + if err != nil { + return nil, err + } + return newObj, nil +} + +func (obj *rsvpSessionAttribute) ToPbText() (string, error) { + vErr := obj.validateToAndFrom() + if vErr != nil { + return "", vErr + } + protoMarshal, err := proto.Marshal(obj.Msg()) + if err != nil { + return "", err + } + return string(protoMarshal), nil +} + +func (obj *rsvpSessionAttribute) FromPbText(value string) error { + retObj := proto.Unmarshal([]byte(value), obj.Msg()) + if retObj != nil { + return retObj + } + obj.setNil() + vErr := obj.validateToAndFrom() + if vErr != nil { + return vErr + } + return retObj +} + +func (obj *rsvpSessionAttribute) ToYaml() (string, error) { + vErr := obj.validateToAndFrom() + if vErr != nil { + return "", vErr + } + opts := protojson.MarshalOptions{ + UseProtoNames: true, + AllowPartial: true, + EmitUnpopulated: false, + } + data, err := opts.Marshal(obj.Msg()) + if err != nil { + return "", err + } + data, err = yaml.JSONToYAML(data) + if err != nil { + return "", err + } + return string(data), nil +} + +func (obj *rsvpSessionAttribute) FromYaml(value string) error { + if value == "" { + value = "{}" + } + data, err := yaml.YAMLToJSON([]byte(value)) + if err != nil { + return err + } + opts := protojson.UnmarshalOptions{ + AllowPartial: true, + DiscardUnknown: false, + } + uError := opts.Unmarshal([]byte(data), obj.Msg()) + if uError != nil { + return fmt.Errorf("unmarshal error %s", strings.Replace( + uError.Error(), "\u00a0", " ", -1)[7:]) + } + obj.setNil() + vErr := obj.validateToAndFrom() + if vErr != nil { + return vErr + } + return nil +} + +func (obj *rsvpSessionAttribute) ToJson() (string, error) { + vErr := obj.validateToAndFrom() + if vErr != nil { + return "", vErr + } + opts := protojson.MarshalOptions{ + UseProtoNames: true, + AllowPartial: true, + EmitUnpopulated: false, + Indent: " ", + } + data, err := opts.Marshal(obj.Msg()) + if err != nil { + return "", err + } + return string(data), nil +} + +func (obj *rsvpSessionAttribute) FromJson(value string) error { + opts := protojson.UnmarshalOptions{ + AllowPartial: true, + DiscardUnknown: false, + } + if value == "" { + value = "{}" + } + uError := opts.Unmarshal([]byte(value), obj.Msg()) + if uError != nil { + return fmt.Errorf("unmarshal error %s", strings.Replace( + uError.Error(), "\u00a0", " ", -1)[7:]) + } + obj.setNil() + err := obj.validateToAndFrom() + if err != nil { + return err + } + return nil +} + +func (obj *rsvpSessionAttribute) validateToAndFrom() error { + // emptyVars() + obj.validateObj(&obj.validation, true) + return obj.validationResult() +} + +func (obj *rsvpSessionAttribute) Validate() error { + // emptyVars() + obj.validateObj(&obj.validation, false) + return obj.validationResult() +} + +func (obj *rsvpSessionAttribute) String() string { + str, err := obj.ToYaml() + if err != nil { + return err.Error() + } + return str +} + +func (obj *rsvpSessionAttribute) Clone() (RsvpSessionAttribute, error) { + vErr := obj.Validate() + if vErr != nil { + return nil, vErr + } + newObj := NewRsvpSessionAttribute() + data, err := proto.Marshal(obj.Msg()) + if err != nil { + return nil, err + } + pbErr := proto.Unmarshal(data, newObj.Msg()) + if pbErr != nil { + return nil, pbErr + } + return newObj, nil +} + +func (obj *rsvpSessionAttribute) setNil() { + obj.resourceAffinitiesHolder = nil + obj.validationErrors = nil + obj.warnings = nil + obj.constraints = make(map[string]map[string]Constraints) +} + +// RsvpSessionAttribute is configuration for RSVP-TE SESSION_ATTRIBUTE object included in Path Messages as defined in RFC3209. The bandwidth_protection_desired and node_protection_desired flags are defined in RFC4090 (Fast Reroute). +type RsvpSessionAttribute interface { + Validation + // Msg marshals RsvpSessionAttribute to protobuf object *otg.RsvpSessionAttribute + // and doesn't set defaults + Msg() *otg.RsvpSessionAttribute + // SetMsg unmarshals RsvpSessionAttribute from protobuf object *otg.RsvpSessionAttribute + // and doesn't set defaults + SetMsg(*otg.RsvpSessionAttribute) RsvpSessionAttribute + // ToProto marshals RsvpSessionAttribute to protobuf object *otg.RsvpSessionAttribute + ToProto() (*otg.RsvpSessionAttribute, error) + // ToPbText marshals RsvpSessionAttribute to protobuf text + ToPbText() (string, error) + // ToYaml marshals RsvpSessionAttribute to YAML text + ToYaml() (string, error) + // ToJson marshals RsvpSessionAttribute to JSON text + ToJson() (string, error) + // FromProto unmarshals RsvpSessionAttribute from protobuf object *otg.RsvpSessionAttribute + FromProto(msg *otg.RsvpSessionAttribute) (RsvpSessionAttribute, error) + // FromPbText unmarshals RsvpSessionAttribute from protobuf text + FromPbText(value string) error + // FromYaml unmarshals RsvpSessionAttribute from YAML text + FromYaml(value string) error + // FromJson unmarshals RsvpSessionAttribute from JSON text + FromJson(value string) error + // Validate validates RsvpSessionAttribute + Validate() error + // A stringer function + String() string + // Clones the object + Clone() (RsvpSessionAttribute, error) + validateToAndFrom() error + validateObj(vObj *validation, set_default bool) + setDefault() + // AutoGenerateSessionName returns bool, set in RsvpSessionAttribute. + AutoGenerateSessionName() bool + // SetAutoGenerateSessionName assigns bool provided by user to RsvpSessionAttribute + SetAutoGenerateSessionName(value bool) RsvpSessionAttribute + // HasAutoGenerateSessionName checks if AutoGenerateSessionName has been set in RsvpSessionAttribute + HasAutoGenerateSessionName() bool + // SessionName returns string, set in RsvpSessionAttribute. + SessionName() string + // SetSessionName assigns string provided by user to RsvpSessionAttribute + SetSessionName(value string) RsvpSessionAttribute + // HasSessionName checks if SessionName has been set in RsvpSessionAttribute + HasSessionName() bool + // SetupPriority returns uint32, set in RsvpSessionAttribute. + SetupPriority() uint32 + // SetSetupPriority assigns uint32 provided by user to RsvpSessionAttribute + SetSetupPriority(value uint32) RsvpSessionAttribute + // HasSetupPriority checks if SetupPriority has been set in RsvpSessionAttribute + HasSetupPriority() bool + // HoldingPriority returns uint32, set in RsvpSessionAttribute. + HoldingPriority() uint32 + // SetHoldingPriority assigns uint32 provided by user to RsvpSessionAttribute + SetHoldingPriority(value uint32) RsvpSessionAttribute + // HasHoldingPriority checks if HoldingPriority has been set in RsvpSessionAttribute + HasHoldingPriority() bool + // LocalProtectionDesired returns bool, set in RsvpSessionAttribute. + LocalProtectionDesired() bool + // SetLocalProtectionDesired assigns bool provided by user to RsvpSessionAttribute + SetLocalProtectionDesired(value bool) RsvpSessionAttribute + // HasLocalProtectionDesired checks if LocalProtectionDesired has been set in RsvpSessionAttribute + HasLocalProtectionDesired() bool + // LabelRecordingDesired returns bool, set in RsvpSessionAttribute. + LabelRecordingDesired() bool + // SetLabelRecordingDesired assigns bool provided by user to RsvpSessionAttribute + SetLabelRecordingDesired(value bool) RsvpSessionAttribute + // HasLabelRecordingDesired checks if LabelRecordingDesired has been set in RsvpSessionAttribute + HasLabelRecordingDesired() bool + // SeStyleDesired returns bool, set in RsvpSessionAttribute. + SeStyleDesired() bool + // SetSeStyleDesired assigns bool provided by user to RsvpSessionAttribute + SetSeStyleDesired(value bool) RsvpSessionAttribute + // HasSeStyleDesired checks if SeStyleDesired has been set in RsvpSessionAttribute + HasSeStyleDesired() bool + // BandwidthProtectionDesired returns bool, set in RsvpSessionAttribute. + BandwidthProtectionDesired() bool + // SetBandwidthProtectionDesired assigns bool provided by user to RsvpSessionAttribute + SetBandwidthProtectionDesired(value bool) RsvpSessionAttribute + // HasBandwidthProtectionDesired checks if BandwidthProtectionDesired has been set in RsvpSessionAttribute + HasBandwidthProtectionDesired() bool + // NodeProtectionDesired returns bool, set in RsvpSessionAttribute. + NodeProtectionDesired() bool + // SetNodeProtectionDesired assigns bool provided by user to RsvpSessionAttribute + SetNodeProtectionDesired(value bool) RsvpSessionAttribute + // HasNodeProtectionDesired checks if NodeProtectionDesired has been set in RsvpSessionAttribute + HasNodeProtectionDesired() bool + // ResourceAffinities returns RsvpResourceAffinities, set in RsvpSessionAttribute. + // RsvpResourceAffinities is this is an optional object. If included, the extended SESSION_ATTRIBUTE object is sent in the Path message containing + // the additional fields included in this object. This contains a set of three bitmaps using which further constraints can be + // set on the path calculated for the LSP based on the Admin Group settings in the IGP (e.g ISIS or OSPF interface). + ResourceAffinities() RsvpResourceAffinities + // SetResourceAffinities assigns RsvpResourceAffinities provided by user to RsvpSessionAttribute. + // RsvpResourceAffinities is this is an optional object. If included, the extended SESSION_ATTRIBUTE object is sent in the Path message containing + // the additional fields included in this object. This contains a set of three bitmaps using which further constraints can be + // set on the path calculated for the LSP based on the Admin Group settings in the IGP (e.g ISIS or OSPF interface). + SetResourceAffinities(value RsvpResourceAffinities) RsvpSessionAttribute + // HasResourceAffinities checks if ResourceAffinities has been set in RsvpSessionAttribute + HasResourceAffinities() bool + setNil() +} + +// If this is enabled, an auto-generated Session Name is included in the SESSION_ATTRIBUTE object in the Path Message for this LSP. +// AutoGenerateSessionName returns a bool +func (obj *rsvpSessionAttribute) AutoGenerateSessionName() bool { + + return *obj.obj.AutoGenerateSessionName + +} + +// If this is enabled, an auto-generated Session Name is included in the SESSION_ATTRIBUTE object in the Path Message for this LSP. +// AutoGenerateSessionName returns a bool +func (obj *rsvpSessionAttribute) HasAutoGenerateSessionName() bool { + return obj.obj.AutoGenerateSessionName != nil +} + +// If this is enabled, an auto-generated Session Name is included in the SESSION_ATTRIBUTE object in the Path Message for this LSP. +// SetAutoGenerateSessionName sets the bool value in the RsvpSessionAttribute object +func (obj *rsvpSessionAttribute) SetAutoGenerateSessionName(value bool) RsvpSessionAttribute { + + obj.obj.AutoGenerateSessionName = &value + return obj +} + +// If auto_generate_session_name is set to 'false', then the value of this field is used to fill the Session Name field of the SESSION_ATTRIBUTE object in the Path Message for this LSP. It is suggested to include the Local IP, Remote IP, Tunnel ID and LSP ID in the auto-generated Session Name to ensure uniqueness of the name in the test. The maximum length of session name is 254 bytes. +// SessionName returns a string +func (obj *rsvpSessionAttribute) SessionName() string { + + return *obj.obj.SessionName + +} + +// If auto_generate_session_name is set to 'false', then the value of this field is used to fill the Session Name field of the SESSION_ATTRIBUTE object in the Path Message for this LSP. It is suggested to include the Local IP, Remote IP, Tunnel ID and LSP ID in the auto-generated Session Name to ensure uniqueness of the name in the test. The maximum length of session name is 254 bytes. +// SessionName returns a string +func (obj *rsvpSessionAttribute) HasSessionName() bool { + return obj.obj.SessionName != nil +} + +// If auto_generate_session_name is set to 'false', then the value of this field is used to fill the Session Name field of the SESSION_ATTRIBUTE object in the Path Message for this LSP. It is suggested to include the Local IP, Remote IP, Tunnel ID and LSP ID in the auto-generated Session Name to ensure uniqueness of the name in the test. The maximum length of session name is 254 bytes. +// SetSessionName sets the string value in the RsvpSessionAttribute object +func (obj *rsvpSessionAttribute) SetSessionName(value string) RsvpSessionAttribute { + + obj.obj.SessionName = &value + return obj +} + +// Specifies the value of the Setup Priority field. This controls whether the LSP should pre-empt existing LSP setup with certain Holding Priority if resource limitation is encountered when setting up the LSP. (e.g. bandwidth availability). The value 0 is the highest priority while 7 is the lowest. +// SetupPriority returns a uint32 +func (obj *rsvpSessionAttribute) SetupPriority() uint32 { + + return *obj.obj.SetupPriority + +} + +// Specifies the value of the Setup Priority field. This controls whether the LSP should pre-empt existing LSP setup with certain Holding Priority if resource limitation is encountered when setting up the LSP. (e.g. bandwidth availability). The value 0 is the highest priority while 7 is the lowest. +// SetupPriority returns a uint32 +func (obj *rsvpSessionAttribute) HasSetupPriority() bool { + return obj.obj.SetupPriority != nil +} + +// Specifies the value of the Setup Priority field. This controls whether the LSP should pre-empt existing LSP setup with certain Holding Priority if resource limitation is encountered when setting up the LSP. (e.g. bandwidth availability). The value 0 is the highest priority while 7 is the lowest. +// SetSetupPriority sets the uint32 value in the RsvpSessionAttribute object +func (obj *rsvpSessionAttribute) SetSetupPriority(value uint32) RsvpSessionAttribute { + + obj.obj.SetupPriority = &value + return obj +} + +// Specifies the value of the Holding Priority field. This controls whether a new LSP being created with certain Setup Priority should pre-empt this LSP if resource limitation is encountered when setting up the LSP. (e.g. bandwidth availability). The value 0 is the highest priority while 7 is the lowest. +// HoldingPriority returns a uint32 +func (obj *rsvpSessionAttribute) HoldingPriority() uint32 { + + return *obj.obj.HoldingPriority + +} + +// Specifies the value of the Holding Priority field. This controls whether a new LSP being created with certain Setup Priority should pre-empt this LSP if resource limitation is encountered when setting up the LSP. (e.g. bandwidth availability). The value 0 is the highest priority while 7 is the lowest. +// HoldingPriority returns a uint32 +func (obj *rsvpSessionAttribute) HasHoldingPriority() bool { + return obj.obj.HoldingPriority != nil +} + +// Specifies the value of the Holding Priority field. This controls whether a new LSP being created with certain Setup Priority should pre-empt this LSP if resource limitation is encountered when setting up the LSP. (e.g. bandwidth availability). The value 0 is the highest priority while 7 is the lowest. +// SetHoldingPriority sets the uint32 value in the RsvpSessionAttribute object +func (obj *rsvpSessionAttribute) SetHoldingPriority(value uint32) RsvpSessionAttribute { + + obj.obj.HoldingPriority = &value + return obj +} + +// This flag permits transit routers to use a local repair mechanism which may result in violation of the explicit route object. When a fault is detected on an adjacent downstream link or node, a transit router can reroute traffic for fast service restoration. +// LocalProtectionDesired returns a bool +func (obj *rsvpSessionAttribute) LocalProtectionDesired() bool { + + return *obj.obj.LocalProtectionDesired + +} + +// This flag permits transit routers to use a local repair mechanism which may result in violation of the explicit route object. When a fault is detected on an adjacent downstream link or node, a transit router can reroute traffic for fast service restoration. +// LocalProtectionDesired returns a bool +func (obj *rsvpSessionAttribute) HasLocalProtectionDesired() bool { + return obj.obj.LocalProtectionDesired != nil +} + +// This flag permits transit routers to use a local repair mechanism which may result in violation of the explicit route object. When a fault is detected on an adjacent downstream link or node, a transit router can reroute traffic for fast service restoration. +// SetLocalProtectionDesired sets the bool value in the RsvpSessionAttribute object +func (obj *rsvpSessionAttribute) SetLocalProtectionDesired(value bool) RsvpSessionAttribute { + + obj.obj.LocalProtectionDesired = &value + return obj +} + +// This flag indicates that label information should be included when doing a route record. +// LabelRecordingDesired returns a bool +func (obj *rsvpSessionAttribute) LabelRecordingDesired() bool { + + return *obj.obj.LabelRecordingDesired + +} + +// This flag indicates that label information should be included when doing a route record. +// LabelRecordingDesired returns a bool +func (obj *rsvpSessionAttribute) HasLabelRecordingDesired() bool { + return obj.obj.LabelRecordingDesired != nil +} + +// This flag indicates that label information should be included when doing a route record. +// SetLabelRecordingDesired sets the bool value in the RsvpSessionAttribute object +func (obj *rsvpSessionAttribute) SetLabelRecordingDesired(value bool) RsvpSessionAttribute { + + obj.obj.LabelRecordingDesired = &value + return obj +} + +// This flag indicates that the tunnel ingress node may choose to reroute this tunnel without tearing it down. A tunnel egress node SHOULD use the Shared Explicit(SE) Style when responding with a Resv message. +// SeStyleDesired returns a bool +func (obj *rsvpSessionAttribute) SeStyleDesired() bool { + + return *obj.obj.SeStyleDesired + +} + +// This flag indicates that the tunnel ingress node may choose to reroute this tunnel without tearing it down. A tunnel egress node SHOULD use the Shared Explicit(SE) Style when responding with a Resv message. +// SeStyleDesired returns a bool +func (obj *rsvpSessionAttribute) HasSeStyleDesired() bool { + return obj.obj.SeStyleDesired != nil +} + +// This flag indicates that the tunnel ingress node may choose to reroute this tunnel without tearing it down. A tunnel egress node SHOULD use the Shared Explicit(SE) Style when responding with a Resv message. +// SetSeStyleDesired sets the bool value in the RsvpSessionAttribute object +func (obj *rsvpSessionAttribute) SetSeStyleDesired(value bool) RsvpSessionAttribute { + + obj.obj.SeStyleDesired = &value + return obj +} + +// This flag in the SESSION_ATTRIBUTE object in the Path Message indicates to the PLRs along the protected LSP path that a backup path with a bandwidth guarantee is desired. This bandwidth has to be guaranteed for the protected LSP, if no FAST_REROUTE object is included in the PATH message. If a FAST_REROUTE object is present in the Path message, then the bandwidth specified therein is to be guaranteed. +// BandwidthProtectionDesired returns a bool +func (obj *rsvpSessionAttribute) BandwidthProtectionDesired() bool { + + return *obj.obj.BandwidthProtectionDesired + +} + +// This flag in the SESSION_ATTRIBUTE object in the Path Message indicates to the PLRs along the protected LSP path that a backup path with a bandwidth guarantee is desired. This bandwidth has to be guaranteed for the protected LSP, if no FAST_REROUTE object is included in the PATH message. If a FAST_REROUTE object is present in the Path message, then the bandwidth specified therein is to be guaranteed. +// BandwidthProtectionDesired returns a bool +func (obj *rsvpSessionAttribute) HasBandwidthProtectionDesired() bool { + return obj.obj.BandwidthProtectionDesired != nil +} + +// This flag in the SESSION_ATTRIBUTE object in the Path Message indicates to the PLRs along the protected LSP path that a backup path with a bandwidth guarantee is desired. This bandwidth has to be guaranteed for the protected LSP, if no FAST_REROUTE object is included in the PATH message. If a FAST_REROUTE object is present in the Path message, then the bandwidth specified therein is to be guaranteed. +// SetBandwidthProtectionDesired sets the bool value in the RsvpSessionAttribute object +func (obj *rsvpSessionAttribute) SetBandwidthProtectionDesired(value bool) RsvpSessionAttribute { + + obj.obj.BandwidthProtectionDesired = &value + return obj +} + +// This flag in the SESSION_ATTRIBUTE object in the Path Message indicates to the PLRs along a protected LSP path that it is desired to have a backup path that bypasses at least the next node of the protected LSP. +// NodeProtectionDesired returns a bool +func (obj *rsvpSessionAttribute) NodeProtectionDesired() bool { + + return *obj.obj.NodeProtectionDesired + +} + +// This flag in the SESSION_ATTRIBUTE object in the Path Message indicates to the PLRs along a protected LSP path that it is desired to have a backup path that bypasses at least the next node of the protected LSP. +// NodeProtectionDesired returns a bool +func (obj *rsvpSessionAttribute) HasNodeProtectionDesired() bool { + return obj.obj.NodeProtectionDesired != nil +} + +// This flag in the SESSION_ATTRIBUTE object in the Path Message indicates to the PLRs along a protected LSP path that it is desired to have a backup path that bypasses at least the next node of the protected LSP. +// SetNodeProtectionDesired sets the bool value in the RsvpSessionAttribute object +func (obj *rsvpSessionAttribute) SetNodeProtectionDesired(value bool) RsvpSessionAttribute { + + obj.obj.NodeProtectionDesired = &value + return obj +} + +// This is an optional object. If included the extended SESSION_ATTRIBUTE object is sent in the Path message containing +// the additional fields included in this object. This contains a set of three bitmaps using which further constraints can be +// set on the path calculated for the LSP based on the Admin Group settings in the IGP (e.g ISIS or OSPF interface). +// ResourceAffinities returns a RsvpResourceAffinities +func (obj *rsvpSessionAttribute) ResourceAffinities() RsvpResourceAffinities { + if obj.obj.ResourceAffinities == nil { + obj.obj.ResourceAffinities = NewRsvpResourceAffinities().Msg() + } + if obj.resourceAffinitiesHolder == nil { + obj.resourceAffinitiesHolder = &rsvpResourceAffinities{obj: obj.obj.ResourceAffinities} + } + return obj.resourceAffinitiesHolder +} + +// This is an optional object. If included the extended SESSION_ATTRIBUTE object is sent in the Path message containing +// the additional fields included in this object. This contains a set of three bitmaps using which further constraints can be +// set on the path calculated for the LSP based on the Admin Group settings in the IGP (e.g ISIS or OSPF interface). +// ResourceAffinities returns a RsvpResourceAffinities +func (obj *rsvpSessionAttribute) HasResourceAffinities() bool { + return obj.obj.ResourceAffinities != nil +} + +// This is an optional object. If included the extended SESSION_ATTRIBUTE object is sent in the Path message containing +// the additional fields included in this object. This contains a set of three bitmaps using which further constraints can be +// set on the path calculated for the LSP based on the Admin Group settings in the IGP (e.g ISIS or OSPF interface). +// SetResourceAffinities sets the RsvpResourceAffinities value in the RsvpSessionAttribute object +func (obj *rsvpSessionAttribute) SetResourceAffinities(value RsvpResourceAffinities) RsvpSessionAttribute { + + obj.resourceAffinitiesHolder = nil + obj.obj.ResourceAffinities = value.Msg() + + return obj +} + +func (obj *rsvpSessionAttribute) validateObj(vObj *validation, set_default bool) { + if set_default { + obj.setDefault() + } + + if obj.obj.SessionName != nil { + + if len(*obj.obj.SessionName) < 0 || len(*obj.obj.SessionName) > 254 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf( + "0 <= length of RsvpSessionAttribute.SessionName <= 254 but Got %d", + len(*obj.obj.SessionName))) + } + + } + + if obj.obj.SetupPriority != nil { + + if *obj.obj.SetupPriority > 7 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("0 <= RsvpSessionAttribute.SetupPriority <= 7 but Got %d", *obj.obj.SetupPriority)) + } + + } + + if obj.obj.HoldingPriority != nil { + + if *obj.obj.HoldingPriority > 7 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("0 <= RsvpSessionAttribute.HoldingPriority <= 7 but Got %d", *obj.obj.HoldingPriority)) + } + + } + + if obj.obj.ResourceAffinities != nil { + + obj.ResourceAffinities().validateObj(vObj, set_default) + } + +} + +func (obj *rsvpSessionAttribute) setDefault() { + if obj.obj.AutoGenerateSessionName == nil { + obj.SetAutoGenerateSessionName(true) + } + if obj.obj.SetupPriority == nil { + obj.SetSetupPriority(7) + } + if obj.obj.HoldingPriority == nil { + obj.SetHoldingPriority(7) + } + if obj.obj.LocalProtectionDesired == nil { + obj.SetLocalProtectionDesired(false) + } + if obj.obj.LabelRecordingDesired == nil { + obj.SetLabelRecordingDesired(false) + } + if obj.obj.SeStyleDesired == nil { + obj.SetSeStyleDesired(false) + } + if obj.obj.BandwidthProtectionDesired == nil { + obj.SetBandwidthProtectionDesired(false) + } + if obj.obj.NodeProtectionDesired == nil { + obj.SetNodeProtectionDesired(false) + } + +} + +// ***** RsvpTspec ***** +type rsvpTspec struct { + validation + obj *otg.RsvpTspec +} + +func NewRsvpTspec() RsvpTspec { + obj := rsvpTspec{obj: &otg.RsvpTspec{}} + obj.setDefault() + return &obj +} + +func (obj *rsvpTspec) Msg() *otg.RsvpTspec { + return obj.obj +} + +func (obj *rsvpTspec) SetMsg(msg *otg.RsvpTspec) RsvpTspec { + + proto.Merge(obj.obj, msg) + return obj +} + +func (obj *rsvpTspec) ToProto() (*otg.RsvpTspec, error) { + err := obj.validateToAndFrom() + if err != nil { + return nil, err + } + return obj.Msg(), nil +} + +func (obj *rsvpTspec) FromProto(msg *otg.RsvpTspec) (RsvpTspec, error) { + newObj := obj.SetMsg(msg) + err := newObj.validateToAndFrom() + if err != nil { + return nil, err + } + return newObj, nil +} + +func (obj *rsvpTspec) ToPbText() (string, error) { + vErr := obj.validateToAndFrom() + if vErr != nil { + return "", vErr + } + protoMarshal, err := proto.Marshal(obj.Msg()) + if err != nil { + return "", err + } + return string(protoMarshal), nil +} + +func (obj *rsvpTspec) FromPbText(value string) error { + retObj := proto.Unmarshal([]byte(value), obj.Msg()) + if retObj != nil { + return retObj + } + + vErr := obj.validateToAndFrom() + if vErr != nil { + return vErr + } + return retObj +} + +func (obj *rsvpTspec) ToYaml() (string, error) { + vErr := obj.validateToAndFrom() + if vErr != nil { + return "", vErr + } + opts := protojson.MarshalOptions{ + UseProtoNames: true, + AllowPartial: true, + EmitUnpopulated: false, + } + data, err := opts.Marshal(obj.Msg()) + if err != nil { + return "", err + } + data, err = yaml.JSONToYAML(data) + if err != nil { + return "", err + } + return string(data), nil +} + +func (obj *rsvpTspec) FromYaml(value string) error { + if value == "" { + value = "{}" + } + data, err := yaml.YAMLToJSON([]byte(value)) + if err != nil { + return err + } + opts := protojson.UnmarshalOptions{ + AllowPartial: true, + DiscardUnknown: false, + } + uError := opts.Unmarshal([]byte(data), obj.Msg()) + if uError != nil { + return fmt.Errorf("unmarshal error %s", strings.Replace( + uError.Error(), "\u00a0", " ", -1)[7:]) + } + + vErr := obj.validateToAndFrom() + if vErr != nil { + return vErr + } + return nil +} + +func (obj *rsvpTspec) ToJson() (string, error) { + vErr := obj.validateToAndFrom() + if vErr != nil { + return "", vErr + } + opts := protojson.MarshalOptions{ + UseProtoNames: true, + AllowPartial: true, + EmitUnpopulated: false, + Indent: " ", + } + data, err := opts.Marshal(obj.Msg()) + if err != nil { + return "", err + } + return string(data), nil +} + +func (obj *rsvpTspec) FromJson(value string) error { + opts := protojson.UnmarshalOptions{ + AllowPartial: true, + DiscardUnknown: false, + } + if value == "" { + value = "{}" + } + uError := opts.Unmarshal([]byte(value), obj.Msg()) + if uError != nil { + return fmt.Errorf("unmarshal error %s", strings.Replace( + uError.Error(), "\u00a0", " ", -1)[7:]) + } + + err := obj.validateToAndFrom() + if err != nil { + return err + } + return nil +} + +func (obj *rsvpTspec) validateToAndFrom() error { + // emptyVars() + obj.validateObj(&obj.validation, true) + return obj.validationResult() +} + +func (obj *rsvpTspec) Validate() error { + // emptyVars() + obj.validateObj(&obj.validation, false) + return obj.validationResult() +} + +func (obj *rsvpTspec) String() string { + str, err := obj.ToYaml() + if err != nil { + return err.Error() + } + return str +} + +func (obj *rsvpTspec) Clone() (RsvpTspec, error) { + vErr := obj.Validate() + if vErr != nil { + return nil, vErr + } + newObj := NewRsvpTspec() + data, err := proto.Marshal(obj.Msg()) + if err != nil { + return nil, err + } + pbErr := proto.Unmarshal(data, newObj.Msg()) + if pbErr != nil { + return nil, pbErr + } + return newObj, nil +} + +// RsvpTspec is configuration for RSVP-TE TSPEC object included in Path Messages. The usage of these parameters is defined in RFC2215. +type RsvpTspec interface { + Validation + // Msg marshals RsvpTspec to protobuf object *otg.RsvpTspec + // and doesn't set defaults + Msg() *otg.RsvpTspec + // SetMsg unmarshals RsvpTspec from protobuf object *otg.RsvpTspec + // and doesn't set defaults + SetMsg(*otg.RsvpTspec) RsvpTspec + // ToProto marshals RsvpTspec to protobuf object *otg.RsvpTspec + ToProto() (*otg.RsvpTspec, error) + // ToPbText marshals RsvpTspec to protobuf text + ToPbText() (string, error) + // ToYaml marshals RsvpTspec to YAML text + ToYaml() (string, error) + // ToJson marshals RsvpTspec to JSON text + ToJson() (string, error) + // FromProto unmarshals RsvpTspec from protobuf object *otg.RsvpTspec + FromProto(msg *otg.RsvpTspec) (RsvpTspec, error) + // FromPbText unmarshals RsvpTspec from protobuf text + FromPbText(value string) error + // FromYaml unmarshals RsvpTspec from YAML text + FromYaml(value string) error + // FromJson unmarshals RsvpTspec from JSON text + FromJson(value string) error + // Validate validates RsvpTspec + Validate() error + // A stringer function + String() string + // Clones the object + Clone() (RsvpTspec, error) + validateToAndFrom() error + validateObj(vObj *validation, set_default bool) + setDefault() + // TokenBucketRate returns float32, set in RsvpTspec. + TokenBucketRate() float32 + // SetTokenBucketRate assigns float32 provided by user to RsvpTspec + SetTokenBucketRate(value float32) RsvpTspec + // HasTokenBucketRate checks if TokenBucketRate has been set in RsvpTspec + HasTokenBucketRate() bool + // TokenBucketSize returns float32, set in RsvpTspec. + TokenBucketSize() float32 + // SetTokenBucketSize assigns float32 provided by user to RsvpTspec + SetTokenBucketSize(value float32) RsvpTspec + // HasTokenBucketSize checks if TokenBucketSize has been set in RsvpTspec + HasTokenBucketSize() bool + // PeakDataRate returns float32, set in RsvpTspec. + PeakDataRate() float32 + // SetPeakDataRate assigns float32 provided by user to RsvpTspec + SetPeakDataRate(value float32) RsvpTspec + // HasPeakDataRate checks if PeakDataRate has been set in RsvpTspec + HasPeakDataRate() bool + // MinimumPolicedUnit returns uint32, set in RsvpTspec. + MinimumPolicedUnit() uint32 + // SetMinimumPolicedUnit assigns uint32 provided by user to RsvpTspec + SetMinimumPolicedUnit(value uint32) RsvpTspec + // HasMinimumPolicedUnit checks if MinimumPolicedUnit has been set in RsvpTspec + HasMinimumPolicedUnit() bool + // MaximumPolicedUnit returns uint32, set in RsvpTspec. + MaximumPolicedUnit() uint32 + // SetMaximumPolicedUnit assigns uint32 provided by user to RsvpTspec + SetMaximumPolicedUnit(value uint32) RsvpTspec + // HasMaximumPolicedUnit checks if MaximumPolicedUnit has been set in RsvpTspec + HasMaximumPolicedUnit() bool +} + +// The rate of the traffic to be carried in this LSP in bytes per second. This is part of the Token Bucket specification defined for a traffic flow defined in RFC2215. +// TokenBucketRate returns a float32 +func (obj *rsvpTspec) TokenBucketRate() float32 { + + return *obj.obj.TokenBucketRate + +} + +// The rate of the traffic to be carried in this LSP in bytes per second. This is part of the Token Bucket specification defined for a traffic flow defined in RFC2215. +// TokenBucketRate returns a float32 +func (obj *rsvpTspec) HasTokenBucketRate() bool { + return obj.obj.TokenBucketRate != nil +} + +// The rate of the traffic to be carried in this LSP in bytes per second. This is part of the Token Bucket specification defined for a traffic flow defined in RFC2215. +// SetTokenBucketRate sets the float32 value in the RsvpTspec object +func (obj *rsvpTspec) SetTokenBucketRate(value float32) RsvpTspec { + + obj.obj.TokenBucketRate = &value + return obj +} + +// The depth of the token bucket in bytes used to specify the Token Bucket characteristics of the traffic to be carried in the LSP. This is part of the Token Bucket specification defined for a traffic flow defined in RFC2215. +// TokenBucketSize returns a float32 +func (obj *rsvpTspec) TokenBucketSize() float32 { + + return *obj.obj.TokenBucketSize + +} + +// The depth of the token bucket in bytes used to specify the Token Bucket characteristics of the traffic to be carried in the LSP. This is part of the Token Bucket specification defined for a traffic flow defined in RFC2215. +// TokenBucketSize returns a float32 +func (obj *rsvpTspec) HasTokenBucketSize() bool { + return obj.obj.TokenBucketSize != nil +} + +// The depth of the token bucket in bytes used to specify the Token Bucket characteristics of the traffic to be carried in the LSP. This is part of the Token Bucket specification defined for a traffic flow defined in RFC2215. +// SetTokenBucketSize sets the float32 value in the RsvpTspec object +func (obj *rsvpTspec) SetTokenBucketSize(value float32) RsvpTspec { + + obj.obj.TokenBucketSize = &value + return obj +} + +// The peak data rate of the traffic in bytes per second used to specify the Token Bucket characteristics of the traffic to be carried in the LSP. This is part of the Token Bucket specification defined for a traffic flow defined in RFC2215. +// PeakDataRate returns a float32 +func (obj *rsvpTspec) PeakDataRate() float32 { + + return *obj.obj.PeakDataRate + +} + +// The peak data rate of the traffic in bytes per second used to specify the Token Bucket characteristics of the traffic to be carried in the LSP. This is part of the Token Bucket specification defined for a traffic flow defined in RFC2215. +// PeakDataRate returns a float32 +func (obj *rsvpTspec) HasPeakDataRate() bool { + return obj.obj.PeakDataRate != nil +} + +// The peak data rate of the traffic in bytes per second used to specify the Token Bucket characteristics of the traffic to be carried in the LSP. This is part of the Token Bucket specification defined for a traffic flow defined in RFC2215. +// SetPeakDataRate sets the float32 value in the RsvpTspec object +func (obj *rsvpTspec) SetPeakDataRate(value float32) RsvpTspec { + + obj.obj.PeakDataRate = &value + return obj +} + +// Specifies the minium length of packet frames that will be policed. +// MinimumPolicedUnit returns a uint32 +func (obj *rsvpTspec) MinimumPolicedUnit() uint32 { + + return *obj.obj.MinimumPolicedUnit + +} + +// Specifies the minium length of packet frames that will be policed. +// MinimumPolicedUnit returns a uint32 +func (obj *rsvpTspec) HasMinimumPolicedUnit() bool { + return obj.obj.MinimumPolicedUnit != nil +} + +// Specifies the minium length of packet frames that will be policed. +// SetMinimumPolicedUnit sets the uint32 value in the RsvpTspec object +func (obj *rsvpTspec) SetMinimumPolicedUnit(value uint32) RsvpTspec { + + obj.obj.MinimumPolicedUnit = &value + return obj +} + +// Specifies the maximum length of packet frames that will be policed. +// MaximumPolicedUnit returns a uint32 +func (obj *rsvpTspec) MaximumPolicedUnit() uint32 { + + return *obj.obj.MaximumPolicedUnit + +} + +// Specifies the maximum length of packet frames that will be policed. +// MaximumPolicedUnit returns a uint32 +func (obj *rsvpTspec) HasMaximumPolicedUnit() bool { + return obj.obj.MaximumPolicedUnit != nil +} + +// Specifies the maximum length of packet frames that will be policed. +// SetMaximumPolicedUnit sets the uint32 value in the RsvpTspec object +func (obj *rsvpTspec) SetMaximumPolicedUnit(value uint32) RsvpTspec { + + obj.obj.MaximumPolicedUnit = &value + return obj +} + +func (obj *rsvpTspec) validateObj(vObj *validation, set_default bool) { + if set_default { + obj.setDefault() + } + + if obj.obj.MinimumPolicedUnit != nil { + + if *obj.obj.MinimumPolicedUnit > 65535 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("0 <= RsvpTspec.MinimumPolicedUnit <= 65535 but Got %d", *obj.obj.MinimumPolicedUnit)) + } + + } + + if obj.obj.MaximumPolicedUnit != nil { + + if *obj.obj.MaximumPolicedUnit > 65535 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("0 <= RsvpTspec.MaximumPolicedUnit <= 65535 but Got %d", *obj.obj.MaximumPolicedUnit)) + } + + } + +} + +func (obj *rsvpTspec) setDefault() { + if obj.obj.TokenBucketRate == nil { + obj.SetTokenBucketRate(0) + } + if obj.obj.TokenBucketSize == nil { + obj.SetTokenBucketSize(0) + } + if obj.obj.PeakDataRate == nil { + obj.SetPeakDataRate(0) + } + if obj.obj.MinimumPolicedUnit == nil { + obj.SetMinimumPolicedUnit(0) + } + if obj.obj.MaximumPolicedUnit == nil { + obj.SetMaximumPolicedUnit(0) + } + +} + +// ***** RsvpFastReroute ***** +type rsvpFastReroute struct { + validation + obj *otg.RsvpFastReroute +} + +func NewRsvpFastReroute() RsvpFastReroute { + obj := rsvpFastReroute{obj: &otg.RsvpFastReroute{}} + obj.setDefault() + return &obj +} + +func (obj *rsvpFastReroute) Msg() *otg.RsvpFastReroute { + return obj.obj +} + +func (obj *rsvpFastReroute) SetMsg(msg *otg.RsvpFastReroute) RsvpFastReroute { + + proto.Merge(obj.obj, msg) + return obj +} + +func (obj *rsvpFastReroute) ToProto() (*otg.RsvpFastReroute, error) { + err := obj.validateToAndFrom() + if err != nil { + return nil, err + } + return obj.Msg(), nil +} + +func (obj *rsvpFastReroute) FromProto(msg *otg.RsvpFastReroute) (RsvpFastReroute, error) { + newObj := obj.SetMsg(msg) + err := newObj.validateToAndFrom() + if err != nil { + return nil, err + } + return newObj, nil +} + +func (obj *rsvpFastReroute) ToPbText() (string, error) { + vErr := obj.validateToAndFrom() + if vErr != nil { + return "", vErr + } + protoMarshal, err := proto.Marshal(obj.Msg()) + if err != nil { + return "", err + } + return string(protoMarshal), nil +} + +func (obj *rsvpFastReroute) FromPbText(value string) error { + retObj := proto.Unmarshal([]byte(value), obj.Msg()) + if retObj != nil { + return retObj + } + + vErr := obj.validateToAndFrom() + if vErr != nil { + return vErr + } + return retObj +} + +func (obj *rsvpFastReroute) ToYaml() (string, error) { + vErr := obj.validateToAndFrom() + if vErr != nil { + return "", vErr + } + opts := protojson.MarshalOptions{ + UseProtoNames: true, + AllowPartial: true, + EmitUnpopulated: false, + } + data, err := opts.Marshal(obj.Msg()) + if err != nil { + return "", err + } + data, err = yaml.JSONToYAML(data) + if err != nil { + return "", err + } + return string(data), nil +} + +func (obj *rsvpFastReroute) FromYaml(value string) error { + if value == "" { + value = "{}" + } + data, err := yaml.YAMLToJSON([]byte(value)) + if err != nil { + return err + } + opts := protojson.UnmarshalOptions{ + AllowPartial: true, + DiscardUnknown: false, + } + uError := opts.Unmarshal([]byte(data), obj.Msg()) + if uError != nil { + return fmt.Errorf("unmarshal error %s", strings.Replace( + uError.Error(), "\u00a0", " ", -1)[7:]) + } + + vErr := obj.validateToAndFrom() + if vErr != nil { + return vErr + } + return nil +} + +func (obj *rsvpFastReroute) ToJson() (string, error) { + vErr := obj.validateToAndFrom() + if vErr != nil { + return "", vErr + } + opts := protojson.MarshalOptions{ + UseProtoNames: true, + AllowPartial: true, + EmitUnpopulated: false, + Indent: " ", + } + data, err := opts.Marshal(obj.Msg()) + if err != nil { + return "", err + } + return string(data), nil +} + +func (obj *rsvpFastReroute) FromJson(value string) error { + opts := protojson.UnmarshalOptions{ + AllowPartial: true, + DiscardUnknown: false, + } + if value == "" { + value = "{}" + } + uError := opts.Unmarshal([]byte(value), obj.Msg()) + if uError != nil { + return fmt.Errorf("unmarshal error %s", strings.Replace( + uError.Error(), "\u00a0", " ", -1)[7:]) + } + + err := obj.validateToAndFrom() + if err != nil { + return err + } + return nil +} + +func (obj *rsvpFastReroute) validateToAndFrom() error { + // emptyVars() + obj.validateObj(&obj.validation, true) + return obj.validationResult() +} + +func (obj *rsvpFastReroute) Validate() error { + // emptyVars() + obj.validateObj(&obj.validation, false) + return obj.validationResult() +} + +func (obj *rsvpFastReroute) String() string { + str, err := obj.ToYaml() + if err != nil { + return err.Error() + } + return str +} + +func (obj *rsvpFastReroute) Clone() (RsvpFastReroute, error) { + vErr := obj.Validate() + if vErr != nil { + return nil, vErr + } + newObj := NewRsvpFastReroute() + data, err := proto.Marshal(obj.Msg()) + if err != nil { + return nil, err + } + pbErr := proto.Unmarshal(data, newObj.Msg()) + if pbErr != nil { + return nil, pbErr + } + return newObj, nil +} + +// RsvpFastReroute is configuration for the optional RSVP-TE FAST_REROUTE object included in Path Messages as defined in RFC4090. +type RsvpFastReroute interface { + Validation + // Msg marshals RsvpFastReroute to protobuf object *otg.RsvpFastReroute + // and doesn't set defaults + Msg() *otg.RsvpFastReroute + // SetMsg unmarshals RsvpFastReroute from protobuf object *otg.RsvpFastReroute + // and doesn't set defaults + SetMsg(*otg.RsvpFastReroute) RsvpFastReroute + // ToProto marshals RsvpFastReroute to protobuf object *otg.RsvpFastReroute + ToProto() (*otg.RsvpFastReroute, error) + // ToPbText marshals RsvpFastReroute to protobuf text + ToPbText() (string, error) + // ToYaml marshals RsvpFastReroute to YAML text + ToYaml() (string, error) + // ToJson marshals RsvpFastReroute to JSON text + ToJson() (string, error) + // FromProto unmarshals RsvpFastReroute from protobuf object *otg.RsvpFastReroute + FromProto(msg *otg.RsvpFastReroute) (RsvpFastReroute, error) + // FromPbText unmarshals RsvpFastReroute from protobuf text + FromPbText(value string) error + // FromYaml unmarshals RsvpFastReroute from YAML text + FromYaml(value string) error + // FromJson unmarshals RsvpFastReroute from JSON text + FromJson(value string) error + // Validate validates RsvpFastReroute + Validate() error + // A stringer function + String() string + // Clones the object + Clone() (RsvpFastReroute, error) + validateToAndFrom() error + validateObj(vObj *validation, set_default bool) + setDefault() + // SetupPriority returns uint32, set in RsvpFastReroute. + SetupPriority() uint32 + // SetSetupPriority assigns uint32 provided by user to RsvpFastReroute + SetSetupPriority(value uint32) RsvpFastReroute + // HasSetupPriority checks if SetupPriority has been set in RsvpFastReroute + HasSetupPriority() bool + // HoldingPriority returns uint32, set in RsvpFastReroute. + HoldingPriority() uint32 + // SetHoldingPriority assigns uint32 provided by user to RsvpFastReroute + SetHoldingPriority(value uint32) RsvpFastReroute + // HasHoldingPriority checks if HoldingPriority has been set in RsvpFastReroute + HasHoldingPriority() bool + // HopLimit returns uint32, set in RsvpFastReroute. + HopLimit() uint32 + // SetHopLimit assigns uint32 provided by user to RsvpFastReroute + SetHopLimit(value uint32) RsvpFastReroute + // HasHopLimit checks if HopLimit has been set in RsvpFastReroute + HasHopLimit() bool + // Bandwidth returns float32, set in RsvpFastReroute. + Bandwidth() float32 + // SetBandwidth assigns float32 provided by user to RsvpFastReroute + SetBandwidth(value float32) RsvpFastReroute + // HasBandwidth checks if Bandwidth has been set in RsvpFastReroute + HasBandwidth() bool + // ExcludeAny returns string, set in RsvpFastReroute. + ExcludeAny() string + // SetExcludeAny assigns string provided by user to RsvpFastReroute + SetExcludeAny(value string) RsvpFastReroute + // HasExcludeAny checks if ExcludeAny has been set in RsvpFastReroute + HasExcludeAny() bool + // IncludeAny returns string, set in RsvpFastReroute. + IncludeAny() string + // SetIncludeAny assigns string provided by user to RsvpFastReroute + SetIncludeAny(value string) RsvpFastReroute + // HasIncludeAny checks if IncludeAny has been set in RsvpFastReroute + HasIncludeAny() bool + // IncludeAll returns string, set in RsvpFastReroute. + IncludeAll() string + // SetIncludeAll assigns string provided by user to RsvpFastReroute + SetIncludeAll(value string) RsvpFastReroute + // HasIncludeAll checks if IncludeAll has been set in RsvpFastReroute + HasIncludeAll() bool + // OneToOneBackupDesired returns bool, set in RsvpFastReroute. + OneToOneBackupDesired() bool + // SetOneToOneBackupDesired assigns bool provided by user to RsvpFastReroute + SetOneToOneBackupDesired(value bool) RsvpFastReroute + // HasOneToOneBackupDesired checks if OneToOneBackupDesired has been set in RsvpFastReroute + HasOneToOneBackupDesired() bool + // FacilityBackupDesired returns bool, set in RsvpFastReroute. + FacilityBackupDesired() bool + // SetFacilityBackupDesired assigns bool provided by user to RsvpFastReroute + SetFacilityBackupDesired(value bool) RsvpFastReroute + // HasFacilityBackupDesired checks if FacilityBackupDesired has been set in RsvpFastReroute + HasFacilityBackupDesired() bool +} + +// Specifies the value of the Setup Priority field. This controls whether the backup LSP should pre-empt existing LSP that is setup with certain Holding Priority. While setting up a backup LSP, preemption of existing LSP can happen if resource limitation is encountered (e.g bandwidth availability). +// SetupPriority returns a uint32 +func (obj *rsvpFastReroute) SetupPriority() uint32 { + + return *obj.obj.SetupPriority + +} + +// Specifies the value of the Setup Priority field. This controls whether the backup LSP should pre-empt existing LSP that is setup with certain Holding Priority. While setting up a backup LSP, preemption of existing LSP can happen if resource limitation is encountered (e.g bandwidth availability). +// SetupPriority returns a uint32 +func (obj *rsvpFastReroute) HasSetupPriority() bool { + return obj.obj.SetupPriority != nil +} + +// Specifies the value of the Setup Priority field. This controls whether the backup LSP should pre-empt existing LSP that is setup with certain Holding Priority. While setting up a backup LSP, preemption of existing LSP can happen if resource limitation is encountered (e.g bandwidth availability). +// SetSetupPriority sets the uint32 value in the RsvpFastReroute object +func (obj *rsvpFastReroute) SetSetupPriority(value uint32) RsvpFastReroute { + + obj.obj.SetupPriority = &value + return obj +} + +// Specifies the value of the Holding Priority field. This controls whether a new LSP being created with certain Setup Priority should pre-empt this LSP set up with this Holding Priority. While setting up a new LSP, preemption of existing LSP can happen if resource limitation is encountered (e.g bandwidth availability). +// HoldingPriority returns a uint32 +func (obj *rsvpFastReroute) HoldingPriority() uint32 { + + return *obj.obj.HoldingPriority + +} + +// Specifies the value of the Holding Priority field. This controls whether a new LSP being created with certain Setup Priority should pre-empt this LSP set up with this Holding Priority. While setting up a new LSP, preemption of existing LSP can happen if resource limitation is encountered (e.g bandwidth availability). +// HoldingPriority returns a uint32 +func (obj *rsvpFastReroute) HasHoldingPriority() bool { + return obj.obj.HoldingPriority != nil +} + +// Specifies the value of the Holding Priority field. This controls whether a new LSP being created with certain Setup Priority should pre-empt this LSP set up with this Holding Priority. While setting up a new LSP, preemption of existing LSP can happen if resource limitation is encountered (e.g bandwidth availability). +// SetHoldingPriority sets the uint32 value in the RsvpFastReroute object +func (obj *rsvpFastReroute) SetHoldingPriority(value uint32) RsvpFastReroute { + + obj.obj.HoldingPriority = &value + return obj +} + +// Specifies the value of the Hop Limit field. This controls the maximum number of hops the LSP should traverse to reach the LSP end-point. +// HopLimit returns a uint32 +func (obj *rsvpFastReroute) HopLimit() uint32 { + + return *obj.obj.HopLimit + +} + +// Specifies the value of the Hop Limit field. This controls the maximum number of hops the LSP should traverse to reach the LSP end-point. +// HopLimit returns a uint32 +func (obj *rsvpFastReroute) HasHopLimit() bool { + return obj.obj.HopLimit != nil +} + +// Specifies the value of the Hop Limit field. This controls the maximum number of hops the LSP should traverse to reach the LSP end-point. +// SetHopLimit sets the uint32 value in the RsvpFastReroute object +func (obj *rsvpFastReroute) SetHopLimit(value uint32) RsvpFastReroute { + + obj.obj.HopLimit = &value + return obj +} + +// Specifies the value of the Bandwidth field as a 32-bit IEEE floating point integer, in bytes per second, as desired for the LSP. +// Bandwidth returns a float32 +func (obj *rsvpFastReroute) Bandwidth() float32 { + + return *obj.obj.Bandwidth + +} + +// Specifies the value of the Bandwidth field as a 32-bit IEEE floating point integer, in bytes per second, as desired for the LSP. +// Bandwidth returns a float32 +func (obj *rsvpFastReroute) HasBandwidth() bool { + return obj.obj.Bandwidth != nil +} + +// Specifies the value of the Bandwidth field as a 32-bit IEEE floating point integer, in bytes per second, as desired for the LSP. +// SetBandwidth sets the float32 value in the RsvpFastReroute object +func (obj *rsvpFastReroute) SetBandwidth(value float32) RsvpFastReroute { + + obj.obj.Bandwidth = &value + return obj +} + +// A 32-bit vector representing a set of attribute filters associated with a tunnel any of which renders a link unacceptable. A null set (all bits set to zero) doesn't render the link unacceptable. The most significant byte in the hex-string is the farthest to the left in the byte sequence. Leading zero bytes in the configured value may be omitted for brevity. +// ExcludeAny returns a string +func (obj *rsvpFastReroute) ExcludeAny() string { + + return *obj.obj.ExcludeAny + +} + +// A 32-bit vector representing a set of attribute filters associated with a tunnel any of which renders a link unacceptable. A null set (all bits set to zero) doesn't render the link unacceptable. The most significant byte in the hex-string is the farthest to the left in the byte sequence. Leading zero bytes in the configured value may be omitted for brevity. +// ExcludeAny returns a string +func (obj *rsvpFastReroute) HasExcludeAny() bool { + return obj.obj.ExcludeAny != nil +} + +// A 32-bit vector representing a set of attribute filters associated with a tunnel any of which renders a link unacceptable. A null set (all bits set to zero) doesn't render the link unacceptable. The most significant byte in the hex-string is the farthest to the left in the byte sequence. Leading zero bytes in the configured value may be omitted for brevity. +// SetExcludeAny sets the string value in the RsvpFastReroute object +func (obj *rsvpFastReroute) SetExcludeAny(value string) RsvpFastReroute { + + obj.obj.ExcludeAny = &value + return obj +} + +// A 32-bit vector representing a set of attribute filters associated with a tunnel any of which renders a link acceptable. A null set (all bits set to zero) automatically passes. The most significant byte in the hex-string is the farthest to the left in the byte sequence. Leading zero bytes in the configured value may be omitted for brevity. +// IncludeAny returns a string +func (obj *rsvpFastReroute) IncludeAny() string { + + return *obj.obj.IncludeAny + +} + +// A 32-bit vector representing a set of attribute filters associated with a tunnel any of which renders a link acceptable. A null set (all bits set to zero) automatically passes. The most significant byte in the hex-string is the farthest to the left in the byte sequence. Leading zero bytes in the configured value may be omitted for brevity. +// IncludeAny returns a string +func (obj *rsvpFastReroute) HasIncludeAny() bool { + return obj.obj.IncludeAny != nil +} + +// A 32-bit vector representing a set of attribute filters associated with a tunnel any of which renders a link acceptable. A null set (all bits set to zero) automatically passes. The most significant byte in the hex-string is the farthest to the left in the byte sequence. Leading zero bytes in the configured value may be omitted for brevity. +// SetIncludeAny sets the string value in the RsvpFastReroute object +func (obj *rsvpFastReroute) SetIncludeAny(value string) RsvpFastReroute { + + obj.obj.IncludeAny = &value + return obj +} + +// A 32-bit vector representing a set of attribute filters associated with a tunnel all of which must be present for a link to be acceptable. A null set (all bits set to zero) automatically passes. The most significant byte in the hex-string is the farthest to the left in the byte sequence. Leading zero bytes in the configured value may be omitted for brevity. +// IncludeAll returns a string +func (obj *rsvpFastReroute) IncludeAll() string { + + return *obj.obj.IncludeAll + +} + +// A 32-bit vector representing a set of attribute filters associated with a tunnel all of which must be present for a link to be acceptable. A null set (all bits set to zero) automatically passes. The most significant byte in the hex-string is the farthest to the left in the byte sequence. Leading zero bytes in the configured value may be omitted for brevity. +// IncludeAll returns a string +func (obj *rsvpFastReroute) HasIncludeAll() bool { + return obj.obj.IncludeAll != nil +} + +// A 32-bit vector representing a set of attribute filters associated with a tunnel all of which must be present for a link to be acceptable. A null set (all bits set to zero) automatically passes. The most significant byte in the hex-string is the farthest to the left in the byte sequence. Leading zero bytes in the configured value may be omitted for brevity. +// SetIncludeAll sets the string value in the RsvpFastReroute object +func (obj *rsvpFastReroute) SetIncludeAll(value string) RsvpFastReroute { + + obj.obj.IncludeAll = &value + return obj +} + +// Requests protection via the one-to-one backup method. +// OneToOneBackupDesired returns a bool +func (obj *rsvpFastReroute) OneToOneBackupDesired() bool { + + return *obj.obj.OneToOneBackupDesired + +} + +// Requests protection via the one-to-one backup method. +// OneToOneBackupDesired returns a bool +func (obj *rsvpFastReroute) HasOneToOneBackupDesired() bool { + return obj.obj.OneToOneBackupDesired != nil +} + +// Requests protection via the one-to-one backup method. +// SetOneToOneBackupDesired sets the bool value in the RsvpFastReroute object +func (obj *rsvpFastReroute) SetOneToOneBackupDesired(value bool) RsvpFastReroute { + + obj.obj.OneToOneBackupDesired = &value + return obj +} + +// Requests protection via the facility backup method. +// FacilityBackupDesired returns a bool +func (obj *rsvpFastReroute) FacilityBackupDesired() bool { + + return *obj.obj.FacilityBackupDesired + +} + +// Requests protection via the facility backup method. +// FacilityBackupDesired returns a bool +func (obj *rsvpFastReroute) HasFacilityBackupDesired() bool { + return obj.obj.FacilityBackupDesired != nil +} + +// Requests protection via the facility backup method. +// SetFacilityBackupDesired sets the bool value in the RsvpFastReroute object +func (obj *rsvpFastReroute) SetFacilityBackupDesired(value bool) RsvpFastReroute { + + obj.obj.FacilityBackupDesired = &value + return obj +} + +func (obj *rsvpFastReroute) validateObj(vObj *validation, set_default bool) { + if set_default { + obj.setDefault() + } + + if obj.obj.SetupPriority != nil { + + if *obj.obj.SetupPriority > 7 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("0 <= RsvpFastReroute.SetupPriority <= 7 but Got %d", *obj.obj.SetupPriority)) + } + + } + + if obj.obj.HoldingPriority != nil { + + if *obj.obj.HoldingPriority > 7 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("0 <= RsvpFastReroute.HoldingPriority <= 7 but Got %d", *obj.obj.HoldingPriority)) + } + + } + + if obj.obj.HopLimit != nil { + + if *obj.obj.HopLimit > 255 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("0 <= RsvpFastReroute.HopLimit <= 255 but Got %d", *obj.obj.HopLimit)) + } + + } + + if obj.obj.ExcludeAny != nil { + + if len(*obj.obj.ExcludeAny) < 0 || len(*obj.obj.ExcludeAny) > 8 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf( + "0 <= length of RsvpFastReroute.ExcludeAny <= 8 but Got %d", + len(*obj.obj.ExcludeAny))) + } + + } + + if obj.obj.IncludeAny != nil { + + if len(*obj.obj.IncludeAny) < 0 || len(*obj.obj.IncludeAny) > 8 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf( + "0 <= length of RsvpFastReroute.IncludeAny <= 8 but Got %d", + len(*obj.obj.IncludeAny))) + } + + } + + if obj.obj.IncludeAll != nil { + + if len(*obj.obj.IncludeAll) < 0 || len(*obj.obj.IncludeAll) > 8 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf( + "0 <= length of RsvpFastReroute.IncludeAll <= 8 but Got %d", + len(*obj.obj.IncludeAll))) + } + + } + +} + +func (obj *rsvpFastReroute) setDefault() { + if obj.obj.SetupPriority == nil { + obj.SetSetupPriority(7) + } + if obj.obj.HoldingPriority == nil { + obj.SetHoldingPriority(7) + } + if obj.obj.HopLimit == nil { + obj.SetHopLimit(3) + } + if obj.obj.Bandwidth == nil { + obj.SetBandwidth(0) + } + if obj.obj.ExcludeAny == nil { + obj.SetExcludeAny("0") + } + if obj.obj.IncludeAny == nil { + obj.SetIncludeAny("0") + } + if obj.obj.IncludeAll == nil { + obj.SetIncludeAll("0") + } + if obj.obj.OneToOneBackupDesired == nil { + obj.SetOneToOneBackupDesired(false) + } + if obj.obj.FacilityBackupDesired == nil { + obj.SetFacilityBackupDesired(false) + } + +} + +// ***** RsvpEro ***** +type rsvpEro struct { + validation + obj *otg.RsvpEro + subobjectsHolder RsvpEroRsvpEroSubobjectIter +} + +func NewRsvpEro() RsvpEro { + obj := rsvpEro{obj: &otg.RsvpEro{}} + obj.setDefault() + return &obj +} + +func (obj *rsvpEro) Msg() *otg.RsvpEro { + return obj.obj +} + +func (obj *rsvpEro) SetMsg(msg *otg.RsvpEro) RsvpEro { + obj.setNil() + proto.Merge(obj.obj, msg) + return obj +} + +func (obj *rsvpEro) ToProto() (*otg.RsvpEro, error) { + err := obj.validateToAndFrom() + if err != nil { + return nil, err + } + return obj.Msg(), nil +} + +func (obj *rsvpEro) FromProto(msg *otg.RsvpEro) (RsvpEro, error) { + newObj := obj.SetMsg(msg) + err := newObj.validateToAndFrom() + if err != nil { + return nil, err + } + return newObj, nil +} + +func (obj *rsvpEro) ToPbText() (string, error) { + vErr := obj.validateToAndFrom() + if vErr != nil { + return "", vErr + } + protoMarshal, err := proto.Marshal(obj.Msg()) + if err != nil { + return "", err + } + return string(protoMarshal), nil +} + +func (obj *rsvpEro) FromPbText(value string) error { + retObj := proto.Unmarshal([]byte(value), obj.Msg()) + if retObj != nil { + return retObj + } + obj.setNil() + vErr := obj.validateToAndFrom() + if vErr != nil { + return vErr + } + return retObj +} + +func (obj *rsvpEro) ToYaml() (string, error) { + vErr := obj.validateToAndFrom() + if vErr != nil { + return "", vErr + } + opts := protojson.MarshalOptions{ + UseProtoNames: true, + AllowPartial: true, + EmitUnpopulated: false, + } + data, err := opts.Marshal(obj.Msg()) + if err != nil { + return "", err + } + data, err = yaml.JSONToYAML(data) + if err != nil { + return "", err + } + return string(data), nil +} + +func (obj *rsvpEro) FromYaml(value string) error { + if value == "" { + value = "{}" + } + data, err := yaml.YAMLToJSON([]byte(value)) + if err != nil { + return err + } + opts := protojson.UnmarshalOptions{ + AllowPartial: true, + DiscardUnknown: false, + } + uError := opts.Unmarshal([]byte(data), obj.Msg()) + if uError != nil { + return fmt.Errorf("unmarshal error %s", strings.Replace( + uError.Error(), "\u00a0", " ", -1)[7:]) + } + obj.setNil() + vErr := obj.validateToAndFrom() + if vErr != nil { + return vErr + } + return nil +} + +func (obj *rsvpEro) ToJson() (string, error) { + vErr := obj.validateToAndFrom() + if vErr != nil { + return "", vErr + } + opts := protojson.MarshalOptions{ + UseProtoNames: true, + AllowPartial: true, + EmitUnpopulated: false, + Indent: " ", + } + data, err := opts.Marshal(obj.Msg()) + if err != nil { + return "", err + } + return string(data), nil +} + +func (obj *rsvpEro) FromJson(value string) error { + opts := protojson.UnmarshalOptions{ + AllowPartial: true, + DiscardUnknown: false, + } + if value == "" { + value = "{}" + } + uError := opts.Unmarshal([]byte(value), obj.Msg()) + if uError != nil { + return fmt.Errorf("unmarshal error %s", strings.Replace( + uError.Error(), "\u00a0", " ", -1)[7:]) + } + obj.setNil() + err := obj.validateToAndFrom() + if err != nil { + return err + } + return nil +} + +func (obj *rsvpEro) validateToAndFrom() error { + // emptyVars() + obj.validateObj(&obj.validation, true) + return obj.validationResult() +} + +func (obj *rsvpEro) Validate() error { + // emptyVars() + obj.validateObj(&obj.validation, false) + return obj.validationResult() +} + +func (obj *rsvpEro) String() string { + str, err := obj.ToYaml() + if err != nil { + return err.Error() + } + return str +} + +func (obj *rsvpEro) Clone() (RsvpEro, error) { + vErr := obj.Validate() + if vErr != nil { + return nil, vErr + } + newObj := NewRsvpEro() + data, err := proto.Marshal(obj.Msg()) + if err != nil { + return nil, err + } + pbErr := proto.Unmarshal(data, newObj.Msg()) + if pbErr != nil { + return nil, pbErr + } + return newObj, nil +} + +func (obj *rsvpEro) setNil() { + obj.subobjectsHolder = nil + obj.validationErrors = nil + obj.warnings = nil + obj.constraints = make(map[string]map[string]Constraints) +} + +// RsvpEro is configuration for the optional RSVP-TE explicit route object(ERO) object included in Path Messages. +type RsvpEro interface { + Validation + // Msg marshals RsvpEro to protobuf object *otg.RsvpEro + // and doesn't set defaults + Msg() *otg.RsvpEro + // SetMsg unmarshals RsvpEro from protobuf object *otg.RsvpEro + // and doesn't set defaults + SetMsg(*otg.RsvpEro) RsvpEro + // ToProto marshals RsvpEro to protobuf object *otg.RsvpEro + ToProto() (*otg.RsvpEro, error) + // ToPbText marshals RsvpEro to protobuf text + ToPbText() (string, error) + // ToYaml marshals RsvpEro to YAML text + ToYaml() (string, error) + // ToJson marshals RsvpEro to JSON text + ToJson() (string, error) + // FromProto unmarshals RsvpEro from protobuf object *otg.RsvpEro + FromProto(msg *otg.RsvpEro) (RsvpEro, error) + // FromPbText unmarshals RsvpEro from protobuf text + FromPbText(value string) error + // FromYaml unmarshals RsvpEro from YAML text + FromYaml(value string) error + // FromJson unmarshals RsvpEro from JSON text + FromJson(value string) error + // Validate validates RsvpEro + Validate() error + // A stringer function + String() string + // Clones the object + Clone() (RsvpEro, error) + validateToAndFrom() error + validateObj(vObj *validation, set_default bool) + setDefault() + // PrependNeighborIp returns RsvpEroPrependNeighborIpEnum, set in RsvpEro + PrependNeighborIp() RsvpEroPrependNeighborIpEnum + // SetPrependNeighborIp assigns RsvpEroPrependNeighborIpEnum provided by user to RsvpEro + SetPrependNeighborIp(value RsvpEroPrependNeighborIpEnum) RsvpEro + // HasPrependNeighborIp checks if PrependNeighborIp has been set in RsvpEro + HasPrependNeighborIp() bool + // PrefixLength returns uint32, set in RsvpEro. + PrefixLength() uint32 + // SetPrefixLength assigns uint32 provided by user to RsvpEro + SetPrefixLength(value uint32) RsvpEro + // HasPrefixLength checks if PrefixLength has been set in RsvpEro + HasPrefixLength() bool + // Subobjects returns RsvpEroRsvpEroSubobjectIterIter, set in RsvpEro + Subobjects() RsvpEroRsvpEroSubobjectIter + setNil() +} + +type RsvpEroPrependNeighborIpEnum string + +// Enum of PrependNeighborIp on RsvpEro +var RsvpEroPrependNeighborIp = struct { + DONT_PREPEND RsvpEroPrependNeighborIpEnum + PREPEND_LOOSE RsvpEroPrependNeighborIpEnum + PREPEND_STRICT RsvpEroPrependNeighborIpEnum +}{ + DONT_PREPEND: RsvpEroPrependNeighborIpEnum("dont_prepend"), + PREPEND_LOOSE: RsvpEroPrependNeighborIpEnum("prepend_loose"), + PREPEND_STRICT: RsvpEroPrependNeighborIpEnum("prepend_strict"), +} + +func (obj *rsvpEro) PrependNeighborIp() RsvpEroPrependNeighborIpEnum { + return RsvpEroPrependNeighborIpEnum(obj.obj.PrependNeighborIp.Enum().String()) +} + +// Determines whether the IP address of the RSVP neighbor should be added as an ERO sub-object. If it is to be included, it can be included as a Loose hop or as a Strict hop. +// PrependNeighborIp returns a string +func (obj *rsvpEro) HasPrependNeighborIp() bool { + return obj.obj.PrependNeighborIp != nil +} + +func (obj *rsvpEro) SetPrependNeighborIp(value RsvpEroPrependNeighborIpEnum) RsvpEro { + intValue, ok := otg.RsvpEro_PrependNeighborIp_Enum_value[string(value)] + if !ok { + obj.validationErrors = append(obj.validationErrors, fmt.Sprintf( + "%s is not a valid choice on RsvpEroPrependNeighborIpEnum", string(value))) + return obj + } + enumValue := otg.RsvpEro_PrependNeighborIp_Enum(intValue) + obj.obj.PrependNeighborIp = &enumValue + + return obj +} + +// If prepend_egress_ip is set to one of 'prepend_loose' or 'prepend_strict', then set this value as the prefix length of the ERO sub-object containing egress IP address. +// PrefixLength returns a uint32 +func (obj *rsvpEro) PrefixLength() uint32 { + + return *obj.obj.PrefixLength + +} + +// If prepend_egress_ip is set to one of 'prepend_loose' or 'prepend_strict', then set this value as the prefix length of the ERO sub-object containing egress IP address. +// PrefixLength returns a uint32 +func (obj *rsvpEro) HasPrefixLength() bool { + return obj.obj.PrefixLength != nil +} + +// If prepend_egress_ip is set to one of 'prepend_loose' or 'prepend_strict', then set this value as the prefix length of the ERO sub-object containing egress IP address. +// SetPrefixLength sets the uint32 value in the RsvpEro object +func (obj *rsvpEro) SetPrefixLength(value uint32) RsvpEro { + + obj.obj.PrefixLength = &value + return obj +} + +// Array of sub-objects to be included in the ERO. These sub-objects contain the intermediate hops to be traversed by the LSP while being forwarded towards the egress endpoint. These sub-objects are included after the optional sub-object containing IP address of egress endpoint of the LSP (when present). +// Subobjects returns a []RsvpEroSubobject +func (obj *rsvpEro) Subobjects() RsvpEroRsvpEroSubobjectIter { + if len(obj.obj.Subobjects) == 0 { + obj.obj.Subobjects = []*otg.RsvpEroSubobject{} + } + if obj.subobjectsHolder == nil { + obj.subobjectsHolder = newRsvpEroRsvpEroSubobjectIter(&obj.obj.Subobjects).setMsg(obj) + } + return obj.subobjectsHolder +} + +type rsvpEroRsvpEroSubobjectIter struct { + obj *rsvpEro + rsvpEroSubobjectSlice []RsvpEroSubobject + fieldPtr *[]*otg.RsvpEroSubobject +} + +func newRsvpEroRsvpEroSubobjectIter(ptr *[]*otg.RsvpEroSubobject) RsvpEroRsvpEroSubobjectIter { + return &rsvpEroRsvpEroSubobjectIter{fieldPtr: ptr} +} + +type RsvpEroRsvpEroSubobjectIter interface { + setMsg(*rsvpEro) RsvpEroRsvpEroSubobjectIter + Items() []RsvpEroSubobject + Add() RsvpEroSubobject + Append(items ...RsvpEroSubobject) RsvpEroRsvpEroSubobjectIter + Set(index int, newObj RsvpEroSubobject) RsvpEroRsvpEroSubobjectIter + Clear() RsvpEroRsvpEroSubobjectIter + clearHolderSlice() RsvpEroRsvpEroSubobjectIter + appendHolderSlice(item RsvpEroSubobject) RsvpEroRsvpEroSubobjectIter +} + +func (obj *rsvpEroRsvpEroSubobjectIter) setMsg(msg *rsvpEro) RsvpEroRsvpEroSubobjectIter { + obj.clearHolderSlice() + for _, val := range *obj.fieldPtr { + obj.appendHolderSlice(&rsvpEroSubobject{obj: val}) + } + obj.obj = msg + return obj +} + +func (obj *rsvpEroRsvpEroSubobjectIter) Items() []RsvpEroSubobject { + return obj.rsvpEroSubobjectSlice +} + +func (obj *rsvpEroRsvpEroSubobjectIter) Add() RsvpEroSubobject { + newObj := &otg.RsvpEroSubobject{} + *obj.fieldPtr = append(*obj.fieldPtr, newObj) + newLibObj := &rsvpEroSubobject{obj: newObj} + newLibObj.setDefault() + obj.rsvpEroSubobjectSlice = append(obj.rsvpEroSubobjectSlice, newLibObj) + return newLibObj +} + +func (obj *rsvpEroRsvpEroSubobjectIter) Append(items ...RsvpEroSubobject) RsvpEroRsvpEroSubobjectIter { + for _, item := range items { + newObj := item.Msg() + *obj.fieldPtr = append(*obj.fieldPtr, newObj) + obj.rsvpEroSubobjectSlice = append(obj.rsvpEroSubobjectSlice, item) + } + return obj +} + +func (obj *rsvpEroRsvpEroSubobjectIter) Set(index int, newObj RsvpEroSubobject) RsvpEroRsvpEroSubobjectIter { + (*obj.fieldPtr)[index] = newObj.Msg() + obj.rsvpEroSubobjectSlice[index] = newObj + return obj +} +func (obj *rsvpEroRsvpEroSubobjectIter) Clear() RsvpEroRsvpEroSubobjectIter { + if len(*obj.fieldPtr) > 0 { + *obj.fieldPtr = []*otg.RsvpEroSubobject{} + obj.rsvpEroSubobjectSlice = []RsvpEroSubobject{} + } + return obj +} +func (obj *rsvpEroRsvpEroSubobjectIter) clearHolderSlice() RsvpEroRsvpEroSubobjectIter { + if len(obj.rsvpEroSubobjectSlice) > 0 { + obj.rsvpEroSubobjectSlice = []RsvpEroSubobject{} + } + return obj +} +func (obj *rsvpEroRsvpEroSubobjectIter) appendHolderSlice(item RsvpEroSubobject) RsvpEroRsvpEroSubobjectIter { + obj.rsvpEroSubobjectSlice = append(obj.rsvpEroSubobjectSlice, item) + return obj +} + +func (obj *rsvpEro) validateObj(vObj *validation, set_default bool) { + if set_default { + obj.setDefault() + } + + if obj.obj.PrefixLength != nil { + + if *obj.obj.PrefixLength > 32 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("0 <= RsvpEro.PrefixLength <= 32 but Got %d", *obj.obj.PrefixLength)) + } + + } + + if len(obj.obj.Subobjects) != 0 { + + if set_default { + obj.Subobjects().clearHolderSlice() + for _, item := range obj.obj.Subobjects { + obj.Subobjects().appendHolderSlice(&rsvpEroSubobject{obj: item}) + } + } + for _, item := range obj.Subobjects().Items() { + item.validateObj(vObj, set_default) + } + + } + +} + +func (obj *rsvpEro) setDefault() { + if obj.obj.PrependNeighborIp == nil { + obj.SetPrependNeighborIp(RsvpEroPrependNeighborIp.PREPEND_LOOSE) + + } + if obj.obj.PrefixLength == nil { + obj.SetPrefixLength(32) + } + +} + +// ***** PatternFlowEthernetDstCounter ***** +type patternFlowEthernetDstCounter struct { + validation + obj *otg.PatternFlowEthernetDstCounter +} + +func NewPatternFlowEthernetDstCounter() PatternFlowEthernetDstCounter { + obj := patternFlowEthernetDstCounter{obj: &otg.PatternFlowEthernetDstCounter{}} + obj.setDefault() + return &obj +} + +func (obj *patternFlowEthernetDstCounter) Msg() *otg.PatternFlowEthernetDstCounter { + return obj.obj +} + +func (obj *patternFlowEthernetDstCounter) SetMsg(msg *otg.PatternFlowEthernetDstCounter) PatternFlowEthernetDstCounter { + + proto.Merge(obj.obj, msg) + return obj +} + +func (obj *patternFlowEthernetDstCounter) ToProto() (*otg.PatternFlowEthernetDstCounter, error) { + err := obj.validateToAndFrom() + if err != nil { + return nil, err + } + return obj.Msg(), nil +} + +func (obj *patternFlowEthernetDstCounter) FromProto(msg *otg.PatternFlowEthernetDstCounter) (PatternFlowEthernetDstCounter, error) { + newObj := obj.SetMsg(msg) + err := newObj.validateToAndFrom() + if err != nil { + return nil, err + } + return newObj, nil +} + +func (obj *patternFlowEthernetDstCounter) ToPbText() (string, error) { + vErr := obj.validateToAndFrom() + if vErr != nil { + return "", vErr + } + protoMarshal, err := proto.Marshal(obj.Msg()) + if err != nil { + return "", err + } + return string(protoMarshal), nil +} + +func (obj *patternFlowEthernetDstCounter) FromPbText(value string) error { + retObj := proto.Unmarshal([]byte(value), obj.Msg()) + if retObj != nil { + return retObj + } + + vErr := obj.validateToAndFrom() + if vErr != nil { + return vErr + } + return retObj +} + +func (obj *patternFlowEthernetDstCounter) ToYaml() (string, error) { + vErr := obj.validateToAndFrom() + if vErr != nil { + return "", vErr + } + opts := protojson.MarshalOptions{ + UseProtoNames: true, + AllowPartial: true, + EmitUnpopulated: false, + } + data, err := opts.Marshal(obj.Msg()) + if err != nil { + return "", err + } + data, err = yaml.JSONToYAML(data) + if err != nil { + return "", err + } + return string(data), nil +} + +func (obj *patternFlowEthernetDstCounter) FromYaml(value string) error { + if value == "" { + value = "{}" + } + data, err := yaml.YAMLToJSON([]byte(value)) + if err != nil { + return err + } + opts := protojson.UnmarshalOptions{ + AllowPartial: true, + DiscardUnknown: false, + } + uError := opts.Unmarshal([]byte(data), obj.Msg()) + if uError != nil { + return fmt.Errorf("unmarshal error %s", strings.Replace( + uError.Error(), "\u00a0", " ", -1)[7:]) + } + + vErr := obj.validateToAndFrom() + if vErr != nil { + return vErr + } + return nil +} + +func (obj *patternFlowEthernetDstCounter) ToJson() (string, error) { + vErr := obj.validateToAndFrom() + if vErr != nil { + return "", vErr + } + opts := protojson.MarshalOptions{ + UseProtoNames: true, + AllowPartial: true, + EmitUnpopulated: false, + Indent: " ", + } + data, err := opts.Marshal(obj.Msg()) + if err != nil { + return "", err + } + return string(data), nil +} + +func (obj *patternFlowEthernetDstCounter) FromJson(value string) error { + opts := protojson.UnmarshalOptions{ + AllowPartial: true, + DiscardUnknown: false, + } + if value == "" { + value = "{}" + } + uError := opts.Unmarshal([]byte(value), obj.Msg()) + if uError != nil { + return fmt.Errorf("unmarshal error %s", strings.Replace( + uError.Error(), "\u00a0", " ", -1)[7:]) + } + + err := obj.validateToAndFrom() + if err != nil { + return err + } + return nil +} + +func (obj *patternFlowEthernetDstCounter) validateToAndFrom() error { + // emptyVars() + obj.validateObj(&obj.validation, true) + return obj.validationResult() +} + +func (obj *patternFlowEthernetDstCounter) Validate() error { + // emptyVars() + obj.validateObj(&obj.validation, false) + return obj.validationResult() +} + +func (obj *patternFlowEthernetDstCounter) String() string { + str, err := obj.ToYaml() + if err != nil { + return err.Error() + } + return str +} + +func (obj *patternFlowEthernetDstCounter) Clone() (PatternFlowEthernetDstCounter, error) { + vErr := obj.Validate() + if vErr != nil { + return nil, vErr + } + newObj := NewPatternFlowEthernetDstCounter() + data, err := proto.Marshal(obj.Msg()) + if err != nil { + return nil, err + } + pbErr := proto.Unmarshal(data, newObj.Msg()) + if pbErr != nil { + return nil, pbErr + } + return newObj, nil +} + +// PatternFlowEthernetDstCounter is mac counter pattern +type PatternFlowEthernetDstCounter interface { + Validation + // Msg marshals PatternFlowEthernetDstCounter to protobuf object *otg.PatternFlowEthernetDstCounter + // and doesn't set defaults + Msg() *otg.PatternFlowEthernetDstCounter + // SetMsg unmarshals PatternFlowEthernetDstCounter from protobuf object *otg.PatternFlowEthernetDstCounter + // and doesn't set defaults + SetMsg(*otg.PatternFlowEthernetDstCounter) PatternFlowEthernetDstCounter + // ToProto marshals PatternFlowEthernetDstCounter to protobuf object *otg.PatternFlowEthernetDstCounter + ToProto() (*otg.PatternFlowEthernetDstCounter, error) + // ToPbText marshals PatternFlowEthernetDstCounter to protobuf text + ToPbText() (string, error) + // ToYaml marshals PatternFlowEthernetDstCounter to YAML text + ToYaml() (string, error) + // ToJson marshals PatternFlowEthernetDstCounter to JSON text + ToJson() (string, error) + // FromProto unmarshals PatternFlowEthernetDstCounter from protobuf object *otg.PatternFlowEthernetDstCounter + FromProto(msg *otg.PatternFlowEthernetDstCounter) (PatternFlowEthernetDstCounter, error) + // FromPbText unmarshals PatternFlowEthernetDstCounter from protobuf text + FromPbText(value string) error + // FromYaml unmarshals PatternFlowEthernetDstCounter from YAML text + FromYaml(value string) error + // FromJson unmarshals PatternFlowEthernetDstCounter from JSON text + FromJson(value string) error + // Validate validates PatternFlowEthernetDstCounter + Validate() error + // A stringer function + String() string + // Clones the object + Clone() (PatternFlowEthernetDstCounter, error) + validateToAndFrom() error + validateObj(vObj *validation, set_default bool) + setDefault() + // Start returns string, set in PatternFlowEthernetDstCounter. + Start() string + // SetStart assigns string provided by user to PatternFlowEthernetDstCounter + SetStart(value string) PatternFlowEthernetDstCounter + // HasStart checks if Start has been set in PatternFlowEthernetDstCounter + HasStart() bool + // Step returns string, set in PatternFlowEthernetDstCounter. + Step() string + // SetStep assigns string provided by user to PatternFlowEthernetDstCounter + SetStep(value string) PatternFlowEthernetDstCounter + // HasStep checks if Step has been set in PatternFlowEthernetDstCounter + HasStep() bool + // Count returns uint32, set in PatternFlowEthernetDstCounter. + Count() uint32 + // SetCount assigns uint32 provided by user to PatternFlowEthernetDstCounter + SetCount(value uint32) PatternFlowEthernetDstCounter + // HasCount checks if Count has been set in PatternFlowEthernetDstCounter + HasCount() bool +} + +// description is TBD +// Start returns a string +func (obj *patternFlowEthernetDstCounter) Start() string { + + return *obj.obj.Start + +} + +// description is TBD +// Start returns a string +func (obj *patternFlowEthernetDstCounter) HasStart() bool { + return obj.obj.Start != nil +} + +// description is TBD +// SetStart sets the string value in the PatternFlowEthernetDstCounter object +func (obj *patternFlowEthernetDstCounter) SetStart(value string) PatternFlowEthernetDstCounter { + + obj.obj.Start = &value + return obj +} + +// description is TBD +// Step returns a string +func (obj *patternFlowEthernetDstCounter) Step() string { + + return *obj.obj.Step + +} + +// description is TBD +// Step returns a string +func (obj *patternFlowEthernetDstCounter) HasStep() bool { + return obj.obj.Step != nil +} + +// description is TBD +// SetStep sets the string value in the PatternFlowEthernetDstCounter object +func (obj *patternFlowEthernetDstCounter) SetStep(value string) PatternFlowEthernetDstCounter { + + obj.obj.Step = &value + return obj +} + +// description is TBD +// Count returns a uint32 +func (obj *patternFlowEthernetDstCounter) Count() uint32 { + + return *obj.obj.Count + +} + +// description is TBD +// Count returns a uint32 +func (obj *patternFlowEthernetDstCounter) HasCount() bool { + return obj.obj.Count != nil +} + +// description is TBD +// SetCount sets the uint32 value in the PatternFlowEthernetDstCounter object +func (obj *patternFlowEthernetDstCounter) SetCount(value uint32) PatternFlowEthernetDstCounter { + + obj.obj.Count = &value + return obj +} + +func (obj *patternFlowEthernetDstCounter) validateObj(vObj *validation, set_default bool) { + if set_default { + obj.setDefault() + } + + if obj.obj.Start != nil { + + err := obj.validateMac(obj.Start()) + if err != nil { + vObj.validationErrors = append(vObj.validationErrors, fmt.Sprintf("%s %s", err.Error(), "on PatternFlowEthernetDstCounter.Start")) + } + + } + + if obj.obj.Step != nil { + + err := obj.validateMac(obj.Step()) + if err != nil { + vObj.validationErrors = append(vObj.validationErrors, fmt.Sprintf("%s %s", err.Error(), "on PatternFlowEthernetDstCounter.Step")) + } + + } + +} + +func (obj *patternFlowEthernetDstCounter) setDefault() { + if obj.obj.Start == nil { + obj.SetStart("00:00:00:00:00:00") + } + if obj.obj.Step == nil { + obj.SetStep("00:00:00:00:00:01") + } + if obj.obj.Count == nil { + obj.SetCount(1) + } + +} + +// ***** PatternFlowEthernetDstMetricTag ***** +type patternFlowEthernetDstMetricTag struct { + validation + obj *otg.PatternFlowEthernetDstMetricTag +} + +func NewPatternFlowEthernetDstMetricTag() PatternFlowEthernetDstMetricTag { + obj := patternFlowEthernetDstMetricTag{obj: &otg.PatternFlowEthernetDstMetricTag{}} + obj.setDefault() + return &obj +} + +func (obj *patternFlowEthernetDstMetricTag) Msg() *otg.PatternFlowEthernetDstMetricTag { + return obj.obj +} + +func (obj *patternFlowEthernetDstMetricTag) SetMsg(msg *otg.PatternFlowEthernetDstMetricTag) PatternFlowEthernetDstMetricTag { + + proto.Merge(obj.obj, msg) + return obj +} + +func (obj *patternFlowEthernetDstMetricTag) ToProto() (*otg.PatternFlowEthernetDstMetricTag, error) { + err := obj.validateToAndFrom() + if err != nil { + return nil, err + } + return obj.Msg(), nil +} + +func (obj *patternFlowEthernetDstMetricTag) FromProto(msg *otg.PatternFlowEthernetDstMetricTag) (PatternFlowEthernetDstMetricTag, error) { + newObj := obj.SetMsg(msg) + err := newObj.validateToAndFrom() + if err != nil { + return nil, err + } + return newObj, nil +} + +func (obj *patternFlowEthernetDstMetricTag) ToPbText() (string, error) { + vErr := obj.validateToAndFrom() + if vErr != nil { + return "", vErr + } + protoMarshal, err := proto.Marshal(obj.Msg()) + if err != nil { + return "", err + } + return string(protoMarshal), nil +} + +func (obj *patternFlowEthernetDstMetricTag) FromPbText(value string) error { + retObj := proto.Unmarshal([]byte(value), obj.Msg()) + if retObj != nil { + return retObj + } + + vErr := obj.validateToAndFrom() + if vErr != nil { + return vErr + } + return retObj +} + +func (obj *patternFlowEthernetDstMetricTag) ToYaml() (string, error) { + vErr := obj.validateToAndFrom() + if vErr != nil { + return "", vErr + } + opts := protojson.MarshalOptions{ + UseProtoNames: true, + AllowPartial: true, + EmitUnpopulated: false, + } + data, err := opts.Marshal(obj.Msg()) + if err != nil { + return "", err + } + data, err = yaml.JSONToYAML(data) + if err != nil { + return "", err + } + return string(data), nil +} + +func (obj *patternFlowEthernetDstMetricTag) FromYaml(value string) error { + if value == "" { + value = "{}" + } + data, err := yaml.YAMLToJSON([]byte(value)) + if err != nil { + return err + } + opts := protojson.UnmarshalOptions{ + AllowPartial: true, + DiscardUnknown: false, + } + uError := opts.Unmarshal([]byte(data), obj.Msg()) + if uError != nil { + return fmt.Errorf("unmarshal error %s", strings.Replace( + uError.Error(), "\u00a0", " ", -1)[7:]) + } + + vErr := obj.validateToAndFrom() + if vErr != nil { + return vErr + } + return nil +} + +func (obj *patternFlowEthernetDstMetricTag) ToJson() (string, error) { + vErr := obj.validateToAndFrom() + if vErr != nil { + return "", vErr + } + opts := protojson.MarshalOptions{ + UseProtoNames: true, + AllowPartial: true, + EmitUnpopulated: false, + Indent: " ", + } + data, err := opts.Marshal(obj.Msg()) + if err != nil { + return "", err + } + return string(data), nil +} + +func (obj *patternFlowEthernetDstMetricTag) FromJson(value string) error { + opts := protojson.UnmarshalOptions{ + AllowPartial: true, + DiscardUnknown: false, + } + if value == "" { + value = "{}" + } + uError := opts.Unmarshal([]byte(value), obj.Msg()) + if uError != nil { + return fmt.Errorf("unmarshal error %s", strings.Replace( + uError.Error(), "\u00a0", " ", -1)[7:]) + } + + err := obj.validateToAndFrom() + if err != nil { + return err + } + return nil +} + +func (obj *patternFlowEthernetDstMetricTag) validateToAndFrom() error { + // emptyVars() + obj.validateObj(&obj.validation, true) + return obj.validationResult() +} + +func (obj *patternFlowEthernetDstMetricTag) Validate() error { + // emptyVars() + obj.validateObj(&obj.validation, false) + return obj.validationResult() +} + +func (obj *patternFlowEthernetDstMetricTag) String() string { + str, err := obj.ToYaml() + if err != nil { + return err.Error() + } + return str +} + +func (obj *patternFlowEthernetDstMetricTag) Clone() (PatternFlowEthernetDstMetricTag, error) { + vErr := obj.Validate() + if vErr != nil { + return nil, vErr + } + newObj := NewPatternFlowEthernetDstMetricTag() + data, err := proto.Marshal(obj.Msg()) + if err != nil { + return nil, err + } + pbErr := proto.Unmarshal(data, newObj.Msg()) + if pbErr != nil { + return nil, pbErr + } + return newObj, nil +} + +// PatternFlowEthernetDstMetricTag is metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. +type PatternFlowEthernetDstMetricTag interface { + Validation + // Msg marshals PatternFlowEthernetDstMetricTag to protobuf object *otg.PatternFlowEthernetDstMetricTag + // and doesn't set defaults + Msg() *otg.PatternFlowEthernetDstMetricTag + // SetMsg unmarshals PatternFlowEthernetDstMetricTag from protobuf object *otg.PatternFlowEthernetDstMetricTag + // and doesn't set defaults + SetMsg(*otg.PatternFlowEthernetDstMetricTag) PatternFlowEthernetDstMetricTag + // ToProto marshals PatternFlowEthernetDstMetricTag to protobuf object *otg.PatternFlowEthernetDstMetricTag + ToProto() (*otg.PatternFlowEthernetDstMetricTag, error) + // ToPbText marshals PatternFlowEthernetDstMetricTag to protobuf text + ToPbText() (string, error) + // ToYaml marshals PatternFlowEthernetDstMetricTag to YAML text + ToYaml() (string, error) + // ToJson marshals PatternFlowEthernetDstMetricTag to JSON text + ToJson() (string, error) + // FromProto unmarshals PatternFlowEthernetDstMetricTag from protobuf object *otg.PatternFlowEthernetDstMetricTag + FromProto(msg *otg.PatternFlowEthernetDstMetricTag) (PatternFlowEthernetDstMetricTag, error) + // FromPbText unmarshals PatternFlowEthernetDstMetricTag from protobuf text + FromPbText(value string) error + // FromYaml unmarshals PatternFlowEthernetDstMetricTag from YAML text + FromYaml(value string) error + // FromJson unmarshals PatternFlowEthernetDstMetricTag from JSON text + FromJson(value string) error + // Validate validates PatternFlowEthernetDstMetricTag + Validate() error + // A stringer function + String() string + // Clones the object + Clone() (PatternFlowEthernetDstMetricTag, error) + validateToAndFrom() error + validateObj(vObj *validation, set_default bool) + setDefault() + // Name returns string, set in PatternFlowEthernetDstMetricTag. + Name() string + // SetName assigns string provided by user to PatternFlowEthernetDstMetricTag + SetName(value string) PatternFlowEthernetDstMetricTag + // Offset returns uint32, set in PatternFlowEthernetDstMetricTag. + Offset() uint32 + // SetOffset assigns uint32 provided by user to PatternFlowEthernetDstMetricTag + SetOffset(value uint32) PatternFlowEthernetDstMetricTag + // HasOffset checks if Offset has been set in PatternFlowEthernetDstMetricTag + HasOffset() bool + // Length returns uint32, set in PatternFlowEthernetDstMetricTag. + Length() uint32 + // SetLength assigns uint32 provided by user to PatternFlowEthernetDstMetricTag + SetLength(value uint32) PatternFlowEthernetDstMetricTag + // HasLength checks if Length has been set in PatternFlowEthernetDstMetricTag + HasLength() bool +} + +// Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field +// Name returns a string +func (obj *patternFlowEthernetDstMetricTag) Name() string { + + return *obj.obj.Name + +} + +// Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field +// SetName sets the string value in the PatternFlowEthernetDstMetricTag object +func (obj *patternFlowEthernetDstMetricTag) SetName(value string) PatternFlowEthernetDstMetricTag { + + obj.obj.Name = &value + return obj +} + +// Offset in bits relative to start of corresponding header field +// Offset returns a uint32 +func (obj *patternFlowEthernetDstMetricTag) Offset() uint32 { + + return *obj.obj.Offset + +} + +// Offset in bits relative to start of corresponding header field +// Offset returns a uint32 +func (obj *patternFlowEthernetDstMetricTag) HasOffset() bool { + return obj.obj.Offset != nil +} + +// Offset in bits relative to start of corresponding header field +// SetOffset sets the uint32 value in the PatternFlowEthernetDstMetricTag object +func (obj *patternFlowEthernetDstMetricTag) SetOffset(value uint32) PatternFlowEthernetDstMetricTag { + + obj.obj.Offset = &value + return obj +} + +// Number of bits to track for metrics starting from configured offset of corresponding header field +// Length returns a uint32 +func (obj *patternFlowEthernetDstMetricTag) Length() uint32 { + + return *obj.obj.Length + +} + +// Number of bits to track for metrics starting from configured offset of corresponding header field +// Length returns a uint32 +func (obj *patternFlowEthernetDstMetricTag) HasLength() bool { + return obj.obj.Length != nil +} + +// Number of bits to track for metrics starting from configured offset of corresponding header field +// SetLength sets the uint32 value in the PatternFlowEthernetDstMetricTag object +func (obj *patternFlowEthernetDstMetricTag) SetLength(value uint32) PatternFlowEthernetDstMetricTag { + + obj.obj.Length = &value + return obj +} + +func (obj *patternFlowEthernetDstMetricTag) validateObj(vObj *validation, set_default bool) { + if set_default { + obj.setDefault() + } + + // Name is required + if obj.obj.Name == nil { + vObj.validationErrors = append(vObj.validationErrors, "Name is required field on interface PatternFlowEthernetDstMetricTag") + } + + if obj.obj.Offset != nil { + + if *obj.obj.Offset > 47 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("0 <= PatternFlowEthernetDstMetricTag.Offset <= 47 but Got %d", *obj.obj.Offset)) + } + + } + + if obj.obj.Length != nil { + + if *obj.obj.Length < 1 || *obj.obj.Length > 48 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("1 <= PatternFlowEthernetDstMetricTag.Length <= 48 but Got %d", *obj.obj.Length)) + } + + } + +} + +func (obj *patternFlowEthernetDstMetricTag) setDefault() { + if obj.obj.Offset == nil { + obj.SetOffset(0) + } + if obj.obj.Length == nil { + obj.SetLength(48) + } + +} + +// ***** PatternFlowEthernetSrcCounter ***** +type patternFlowEthernetSrcCounter struct { + validation + obj *otg.PatternFlowEthernetSrcCounter +} + +func NewPatternFlowEthernetSrcCounter() PatternFlowEthernetSrcCounter { + obj := patternFlowEthernetSrcCounter{obj: &otg.PatternFlowEthernetSrcCounter{}} + obj.setDefault() + return &obj +} + +func (obj *patternFlowEthernetSrcCounter) Msg() *otg.PatternFlowEthernetSrcCounter { + return obj.obj +} + +func (obj *patternFlowEthernetSrcCounter) SetMsg(msg *otg.PatternFlowEthernetSrcCounter) PatternFlowEthernetSrcCounter { + + proto.Merge(obj.obj, msg) + return obj +} + +func (obj *patternFlowEthernetSrcCounter) ToProto() (*otg.PatternFlowEthernetSrcCounter, error) { + err := obj.validateToAndFrom() + if err != nil { + return nil, err + } + return obj.Msg(), nil +} + +func (obj *patternFlowEthernetSrcCounter) FromProto(msg *otg.PatternFlowEthernetSrcCounter) (PatternFlowEthernetSrcCounter, error) { + newObj := obj.SetMsg(msg) + err := newObj.validateToAndFrom() + if err != nil { + return nil, err + } + return newObj, nil +} + +func (obj *patternFlowEthernetSrcCounter) ToPbText() (string, error) { + vErr := obj.validateToAndFrom() + if vErr != nil { + return "", vErr + } + protoMarshal, err := proto.Marshal(obj.Msg()) + if err != nil { + return "", err + } + return string(protoMarshal), nil +} + +func (obj *patternFlowEthernetSrcCounter) FromPbText(value string) error { + retObj := proto.Unmarshal([]byte(value), obj.Msg()) + if retObj != nil { + return retObj + } + + vErr := obj.validateToAndFrom() + if vErr != nil { + return vErr + } + return retObj +} + +func (obj *patternFlowEthernetSrcCounter) ToYaml() (string, error) { + vErr := obj.validateToAndFrom() + if vErr != nil { + return "", vErr + } + opts := protojson.MarshalOptions{ + UseProtoNames: true, + AllowPartial: true, + EmitUnpopulated: false, + } + data, err := opts.Marshal(obj.Msg()) + if err != nil { + return "", err + } + data, err = yaml.JSONToYAML(data) + if err != nil { + return "", err + } + return string(data), nil +} + +func (obj *patternFlowEthernetSrcCounter) FromYaml(value string) error { + if value == "" { + value = "{}" + } + data, err := yaml.YAMLToJSON([]byte(value)) + if err != nil { + return err + } + opts := protojson.UnmarshalOptions{ + AllowPartial: true, + DiscardUnknown: false, + } + uError := opts.Unmarshal([]byte(data), obj.Msg()) + if uError != nil { + return fmt.Errorf("unmarshal error %s", strings.Replace( + uError.Error(), "\u00a0", " ", -1)[7:]) + } + + vErr := obj.validateToAndFrom() + if vErr != nil { + return vErr + } + return nil +} + +func (obj *patternFlowEthernetSrcCounter) ToJson() (string, error) { + vErr := obj.validateToAndFrom() + if vErr != nil { + return "", vErr + } + opts := protojson.MarshalOptions{ + UseProtoNames: true, + AllowPartial: true, + EmitUnpopulated: false, + Indent: " ", + } + data, err := opts.Marshal(obj.Msg()) + if err != nil { + return "", err + } + return string(data), nil +} + +func (obj *patternFlowEthernetSrcCounter) FromJson(value string) error { + opts := protojson.UnmarshalOptions{ + AllowPartial: true, + DiscardUnknown: false, + } + if value == "" { + value = "{}" + } + uError := opts.Unmarshal([]byte(value), obj.Msg()) + if uError != nil { + return fmt.Errorf("unmarshal error %s", strings.Replace( + uError.Error(), "\u00a0", " ", -1)[7:]) + } + + err := obj.validateToAndFrom() + if err != nil { + return err + } + return nil +} + +func (obj *patternFlowEthernetSrcCounter) validateToAndFrom() error { + // emptyVars() + obj.validateObj(&obj.validation, true) + return obj.validationResult() +} + +func (obj *patternFlowEthernetSrcCounter) Validate() error { + // emptyVars() + obj.validateObj(&obj.validation, false) + return obj.validationResult() +} + +func (obj *patternFlowEthernetSrcCounter) String() string { + str, err := obj.ToYaml() + if err != nil { + return err.Error() + } + return str +} + +func (obj *patternFlowEthernetSrcCounter) Clone() (PatternFlowEthernetSrcCounter, error) { + vErr := obj.Validate() + if vErr != nil { + return nil, vErr + } + newObj := NewPatternFlowEthernetSrcCounter() + data, err := proto.Marshal(obj.Msg()) + if err != nil { + return nil, err + } + pbErr := proto.Unmarshal(data, newObj.Msg()) + if pbErr != nil { + return nil, pbErr + } + return newObj, nil +} + +// PatternFlowEthernetSrcCounter is mac counter pattern +type PatternFlowEthernetSrcCounter interface { + Validation + // Msg marshals PatternFlowEthernetSrcCounter to protobuf object *otg.PatternFlowEthernetSrcCounter + // and doesn't set defaults + Msg() *otg.PatternFlowEthernetSrcCounter + // SetMsg unmarshals PatternFlowEthernetSrcCounter from protobuf object *otg.PatternFlowEthernetSrcCounter + // and doesn't set defaults + SetMsg(*otg.PatternFlowEthernetSrcCounter) PatternFlowEthernetSrcCounter + // ToProto marshals PatternFlowEthernetSrcCounter to protobuf object *otg.PatternFlowEthernetSrcCounter + ToProto() (*otg.PatternFlowEthernetSrcCounter, error) + // ToPbText marshals PatternFlowEthernetSrcCounter to protobuf text + ToPbText() (string, error) + // ToYaml marshals PatternFlowEthernetSrcCounter to YAML text + ToYaml() (string, error) + // ToJson marshals PatternFlowEthernetSrcCounter to JSON text + ToJson() (string, error) + // FromProto unmarshals PatternFlowEthernetSrcCounter from protobuf object *otg.PatternFlowEthernetSrcCounter + FromProto(msg *otg.PatternFlowEthernetSrcCounter) (PatternFlowEthernetSrcCounter, error) + // FromPbText unmarshals PatternFlowEthernetSrcCounter from protobuf text + FromPbText(value string) error + // FromYaml unmarshals PatternFlowEthernetSrcCounter from YAML text + FromYaml(value string) error + // FromJson unmarshals PatternFlowEthernetSrcCounter from JSON text + FromJson(value string) error + // Validate validates PatternFlowEthernetSrcCounter + Validate() error + // A stringer function + String() string + // Clones the object + Clone() (PatternFlowEthernetSrcCounter, error) + validateToAndFrom() error + validateObj(vObj *validation, set_default bool) + setDefault() + // Start returns string, set in PatternFlowEthernetSrcCounter. + Start() string + // SetStart assigns string provided by user to PatternFlowEthernetSrcCounter + SetStart(value string) PatternFlowEthernetSrcCounter + // HasStart checks if Start has been set in PatternFlowEthernetSrcCounter + HasStart() bool + // Step returns string, set in PatternFlowEthernetSrcCounter. + Step() string + // SetStep assigns string provided by user to PatternFlowEthernetSrcCounter + SetStep(value string) PatternFlowEthernetSrcCounter + // HasStep checks if Step has been set in PatternFlowEthernetSrcCounter + HasStep() bool + // Count returns uint32, set in PatternFlowEthernetSrcCounter. + Count() uint32 + // SetCount assigns uint32 provided by user to PatternFlowEthernetSrcCounter + SetCount(value uint32) PatternFlowEthernetSrcCounter + // HasCount checks if Count has been set in PatternFlowEthernetSrcCounter + HasCount() bool +} + +// description is TBD +// Start returns a string +func (obj *patternFlowEthernetSrcCounter) Start() string { + + return *obj.obj.Start + +} + +// description is TBD +// Start returns a string +func (obj *patternFlowEthernetSrcCounter) HasStart() bool { + return obj.obj.Start != nil +} + +// description is TBD +// SetStart sets the string value in the PatternFlowEthernetSrcCounter object +func (obj *patternFlowEthernetSrcCounter) SetStart(value string) PatternFlowEthernetSrcCounter { + + obj.obj.Start = &value + return obj +} + +// description is TBD +// Step returns a string +func (obj *patternFlowEthernetSrcCounter) Step() string { + + return *obj.obj.Step + +} + +// description is TBD +// Step returns a string +func (obj *patternFlowEthernetSrcCounter) HasStep() bool { + return obj.obj.Step != nil +} + +// description is TBD +// SetStep sets the string value in the PatternFlowEthernetSrcCounter object +func (obj *patternFlowEthernetSrcCounter) SetStep(value string) PatternFlowEthernetSrcCounter { + + obj.obj.Step = &value + return obj +} + +// description is TBD +// Count returns a uint32 +func (obj *patternFlowEthernetSrcCounter) Count() uint32 { + + return *obj.obj.Count + +} + +// description is TBD +// Count returns a uint32 +func (obj *patternFlowEthernetSrcCounter) HasCount() bool { + return obj.obj.Count != nil +} + +// description is TBD +// SetCount sets the uint32 value in the PatternFlowEthernetSrcCounter object +func (obj *patternFlowEthernetSrcCounter) SetCount(value uint32) PatternFlowEthernetSrcCounter { + + obj.obj.Count = &value + return obj +} + +func (obj *patternFlowEthernetSrcCounter) validateObj(vObj *validation, set_default bool) { + if set_default { + obj.setDefault() + } + + if obj.obj.Start != nil { + + err := obj.validateMac(obj.Start()) + if err != nil { + vObj.validationErrors = append(vObj.validationErrors, fmt.Sprintf("%s %s", err.Error(), "on PatternFlowEthernetSrcCounter.Start")) + } + + } + + if obj.obj.Step != nil { + + err := obj.validateMac(obj.Step()) + if err != nil { + vObj.validationErrors = append(vObj.validationErrors, fmt.Sprintf("%s %s", err.Error(), "on PatternFlowEthernetSrcCounter.Step")) + } + + } + +} + +func (obj *patternFlowEthernetSrcCounter) setDefault() { + if obj.obj.Start == nil { + obj.SetStart("00:00:00:00:00:00") + } + if obj.obj.Step == nil { + obj.SetStep("00:00:00:00:00:01") + } + if obj.obj.Count == nil { + obj.SetCount(1) + } + +} + +// ***** PatternFlowEthernetSrcMetricTag ***** +type patternFlowEthernetSrcMetricTag struct { + validation + obj *otg.PatternFlowEthernetSrcMetricTag +} + +func NewPatternFlowEthernetSrcMetricTag() PatternFlowEthernetSrcMetricTag { + obj := patternFlowEthernetSrcMetricTag{obj: &otg.PatternFlowEthernetSrcMetricTag{}} + obj.setDefault() + return &obj +} + +func (obj *patternFlowEthernetSrcMetricTag) Msg() *otg.PatternFlowEthernetSrcMetricTag { + return obj.obj +} + +func (obj *patternFlowEthernetSrcMetricTag) SetMsg(msg *otg.PatternFlowEthernetSrcMetricTag) PatternFlowEthernetSrcMetricTag { + + proto.Merge(obj.obj, msg) + return obj +} + +func (obj *patternFlowEthernetSrcMetricTag) ToProto() (*otg.PatternFlowEthernetSrcMetricTag, error) { + err := obj.validateToAndFrom() + if err != nil { + return nil, err + } + return obj.Msg(), nil +} + +func (obj *patternFlowEthernetSrcMetricTag) FromProto(msg *otg.PatternFlowEthernetSrcMetricTag) (PatternFlowEthernetSrcMetricTag, error) { + newObj := obj.SetMsg(msg) + err := newObj.validateToAndFrom() + if err != nil { + return nil, err + } + return newObj, nil +} + +func (obj *patternFlowEthernetSrcMetricTag) ToPbText() (string, error) { + vErr := obj.validateToAndFrom() + if vErr != nil { + return "", vErr + } + protoMarshal, err := proto.Marshal(obj.Msg()) + if err != nil { + return "", err + } + return string(protoMarshal), nil +} + +func (obj *patternFlowEthernetSrcMetricTag) FromPbText(value string) error { + retObj := proto.Unmarshal([]byte(value), obj.Msg()) + if retObj != nil { + return retObj + } + + vErr := obj.validateToAndFrom() + if vErr != nil { + return vErr + } + return retObj +} + +func (obj *patternFlowEthernetSrcMetricTag) ToYaml() (string, error) { + vErr := obj.validateToAndFrom() + if vErr != nil { + return "", vErr + } + opts := protojson.MarshalOptions{ + UseProtoNames: true, + AllowPartial: true, + EmitUnpopulated: false, + } + data, err := opts.Marshal(obj.Msg()) + if err != nil { + return "", err + } + data, err = yaml.JSONToYAML(data) + if err != nil { + return "", err + } + return string(data), nil +} + +func (obj *patternFlowEthernetSrcMetricTag) FromYaml(value string) error { + if value == "" { + value = "{}" + } + data, err := yaml.YAMLToJSON([]byte(value)) + if err != nil { + return err + } + opts := protojson.UnmarshalOptions{ + AllowPartial: true, + DiscardUnknown: false, + } + uError := opts.Unmarshal([]byte(data), obj.Msg()) + if uError != nil { + return fmt.Errorf("unmarshal error %s", strings.Replace( + uError.Error(), "\u00a0", " ", -1)[7:]) + } + + vErr := obj.validateToAndFrom() + if vErr != nil { + return vErr + } + return nil +} + +func (obj *patternFlowEthernetSrcMetricTag) ToJson() (string, error) { + vErr := obj.validateToAndFrom() + if vErr != nil { + return "", vErr + } + opts := protojson.MarshalOptions{ + UseProtoNames: true, + AllowPartial: true, + EmitUnpopulated: false, + Indent: " ", + } + data, err := opts.Marshal(obj.Msg()) + if err != nil { + return "", err + } + return string(data), nil +} + +func (obj *patternFlowEthernetSrcMetricTag) FromJson(value string) error { + opts := protojson.UnmarshalOptions{ + AllowPartial: true, + DiscardUnknown: false, + } + if value == "" { + value = "{}" + } + uError := opts.Unmarshal([]byte(value), obj.Msg()) + if uError != nil { + return fmt.Errorf("unmarshal error %s", strings.Replace( + uError.Error(), "\u00a0", " ", -1)[7:]) + } + + err := obj.validateToAndFrom() + if err != nil { + return err + } + return nil +} + +func (obj *patternFlowEthernetSrcMetricTag) validateToAndFrom() error { + // emptyVars() + obj.validateObj(&obj.validation, true) + return obj.validationResult() +} + +func (obj *patternFlowEthernetSrcMetricTag) Validate() error { + // emptyVars() + obj.validateObj(&obj.validation, false) + return obj.validationResult() +} + +func (obj *patternFlowEthernetSrcMetricTag) String() string { + str, err := obj.ToYaml() + if err != nil { + return err.Error() + } + return str +} + +func (obj *patternFlowEthernetSrcMetricTag) Clone() (PatternFlowEthernetSrcMetricTag, error) { + vErr := obj.Validate() + if vErr != nil { + return nil, vErr + } + newObj := NewPatternFlowEthernetSrcMetricTag() + data, err := proto.Marshal(obj.Msg()) + if err != nil { + return nil, err + } + pbErr := proto.Unmarshal(data, newObj.Msg()) + if pbErr != nil { + return nil, pbErr + } + return newObj, nil +} + +// PatternFlowEthernetSrcMetricTag is metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. +type PatternFlowEthernetSrcMetricTag interface { + Validation + // Msg marshals PatternFlowEthernetSrcMetricTag to protobuf object *otg.PatternFlowEthernetSrcMetricTag + // and doesn't set defaults + Msg() *otg.PatternFlowEthernetSrcMetricTag + // SetMsg unmarshals PatternFlowEthernetSrcMetricTag from protobuf object *otg.PatternFlowEthernetSrcMetricTag + // and doesn't set defaults + SetMsg(*otg.PatternFlowEthernetSrcMetricTag) PatternFlowEthernetSrcMetricTag + // ToProto marshals PatternFlowEthernetSrcMetricTag to protobuf object *otg.PatternFlowEthernetSrcMetricTag + ToProto() (*otg.PatternFlowEthernetSrcMetricTag, error) + // ToPbText marshals PatternFlowEthernetSrcMetricTag to protobuf text + ToPbText() (string, error) + // ToYaml marshals PatternFlowEthernetSrcMetricTag to YAML text + ToYaml() (string, error) + // ToJson marshals PatternFlowEthernetSrcMetricTag to JSON text + ToJson() (string, error) + // FromProto unmarshals PatternFlowEthernetSrcMetricTag from protobuf object *otg.PatternFlowEthernetSrcMetricTag + FromProto(msg *otg.PatternFlowEthernetSrcMetricTag) (PatternFlowEthernetSrcMetricTag, error) + // FromPbText unmarshals PatternFlowEthernetSrcMetricTag from protobuf text + FromPbText(value string) error + // FromYaml unmarshals PatternFlowEthernetSrcMetricTag from YAML text + FromYaml(value string) error + // FromJson unmarshals PatternFlowEthernetSrcMetricTag from JSON text + FromJson(value string) error + // Validate validates PatternFlowEthernetSrcMetricTag + Validate() error + // A stringer function + String() string + // Clones the object + Clone() (PatternFlowEthernetSrcMetricTag, error) + validateToAndFrom() error + validateObj(vObj *validation, set_default bool) + setDefault() + // Name returns string, set in PatternFlowEthernetSrcMetricTag. + Name() string + // SetName assigns string provided by user to PatternFlowEthernetSrcMetricTag + SetName(value string) PatternFlowEthernetSrcMetricTag + // Offset returns uint32, set in PatternFlowEthernetSrcMetricTag. + Offset() uint32 + // SetOffset assigns uint32 provided by user to PatternFlowEthernetSrcMetricTag + SetOffset(value uint32) PatternFlowEthernetSrcMetricTag + // HasOffset checks if Offset has been set in PatternFlowEthernetSrcMetricTag + HasOffset() bool + // Length returns uint32, set in PatternFlowEthernetSrcMetricTag. + Length() uint32 + // SetLength assigns uint32 provided by user to PatternFlowEthernetSrcMetricTag + SetLength(value uint32) PatternFlowEthernetSrcMetricTag + // HasLength checks if Length has been set in PatternFlowEthernetSrcMetricTag + HasLength() bool +} + +// Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field +// Name returns a string +func (obj *patternFlowEthernetSrcMetricTag) Name() string { + + return *obj.obj.Name + +} + +// Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field +// SetName sets the string value in the PatternFlowEthernetSrcMetricTag object +func (obj *patternFlowEthernetSrcMetricTag) SetName(value string) PatternFlowEthernetSrcMetricTag { + + obj.obj.Name = &value + return obj +} + +// Offset in bits relative to start of corresponding header field +// Offset returns a uint32 +func (obj *patternFlowEthernetSrcMetricTag) Offset() uint32 { + + return *obj.obj.Offset + +} + +// Offset in bits relative to start of corresponding header field +// Offset returns a uint32 +func (obj *patternFlowEthernetSrcMetricTag) HasOffset() bool { + return obj.obj.Offset != nil +} + +// Offset in bits relative to start of corresponding header field +// SetOffset sets the uint32 value in the PatternFlowEthernetSrcMetricTag object +func (obj *patternFlowEthernetSrcMetricTag) SetOffset(value uint32) PatternFlowEthernetSrcMetricTag { + + obj.obj.Offset = &value + return obj +} + +// Number of bits to track for metrics starting from configured offset of corresponding header field +// Length returns a uint32 +func (obj *patternFlowEthernetSrcMetricTag) Length() uint32 { + + return *obj.obj.Length + +} + +// Number of bits to track for metrics starting from configured offset of corresponding header field +// Length returns a uint32 +func (obj *patternFlowEthernetSrcMetricTag) HasLength() bool { + return obj.obj.Length != nil +} + +// Number of bits to track for metrics starting from configured offset of corresponding header field +// SetLength sets the uint32 value in the PatternFlowEthernetSrcMetricTag object +func (obj *patternFlowEthernetSrcMetricTag) SetLength(value uint32) PatternFlowEthernetSrcMetricTag { + + obj.obj.Length = &value + return obj +} + +func (obj *patternFlowEthernetSrcMetricTag) validateObj(vObj *validation, set_default bool) { + if set_default { + obj.setDefault() + } + + // Name is required + if obj.obj.Name == nil { + vObj.validationErrors = append(vObj.validationErrors, "Name is required field on interface PatternFlowEthernetSrcMetricTag") + } + + if obj.obj.Offset != nil { + + if *obj.obj.Offset > 47 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("0 <= PatternFlowEthernetSrcMetricTag.Offset <= 47 but Got %d", *obj.obj.Offset)) + } + + } + + if obj.obj.Length != nil { + + if *obj.obj.Length < 1 || *obj.obj.Length > 48 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("1 <= PatternFlowEthernetSrcMetricTag.Length <= 48 but Got %d", *obj.obj.Length)) + } + + } + +} + +func (obj *patternFlowEthernetSrcMetricTag) setDefault() { + if obj.obj.Offset == nil { + obj.SetOffset(0) + } + if obj.obj.Length == nil { + obj.SetLength(48) + } + +} + +// ***** PatternFlowEthernetEtherTypeCounter ***** +type patternFlowEthernetEtherTypeCounter struct { + validation + obj *otg.PatternFlowEthernetEtherTypeCounter +} + +func NewPatternFlowEthernetEtherTypeCounter() PatternFlowEthernetEtherTypeCounter { + obj := patternFlowEthernetEtherTypeCounter{obj: &otg.PatternFlowEthernetEtherTypeCounter{}} + obj.setDefault() + return &obj +} + +func (obj *patternFlowEthernetEtherTypeCounter) Msg() *otg.PatternFlowEthernetEtherTypeCounter { + return obj.obj +} + +func (obj *patternFlowEthernetEtherTypeCounter) SetMsg(msg *otg.PatternFlowEthernetEtherTypeCounter) PatternFlowEthernetEtherTypeCounter { + + proto.Merge(obj.obj, msg) + return obj +} + +func (obj *patternFlowEthernetEtherTypeCounter) ToProto() (*otg.PatternFlowEthernetEtherTypeCounter, error) { + err := obj.validateToAndFrom() + if err != nil { + return nil, err + } + return obj.Msg(), nil +} + +func (obj *patternFlowEthernetEtherTypeCounter) FromProto(msg *otg.PatternFlowEthernetEtherTypeCounter) (PatternFlowEthernetEtherTypeCounter, error) { + newObj := obj.SetMsg(msg) + err := newObj.validateToAndFrom() + if err != nil { + return nil, err + } + return newObj, nil +} + +func (obj *patternFlowEthernetEtherTypeCounter) ToPbText() (string, error) { + vErr := obj.validateToAndFrom() + if vErr != nil { + return "", vErr + } + protoMarshal, err := proto.Marshal(obj.Msg()) + if err != nil { + return "", err + } + return string(protoMarshal), nil +} + +func (obj *patternFlowEthernetEtherTypeCounter) FromPbText(value string) error { + retObj := proto.Unmarshal([]byte(value), obj.Msg()) + if retObj != nil { + return retObj + } + + vErr := obj.validateToAndFrom() + if vErr != nil { + return vErr + } + return retObj +} + +func (obj *patternFlowEthernetEtherTypeCounter) ToYaml() (string, error) { + vErr := obj.validateToAndFrom() + if vErr != nil { + return "", vErr + } + opts := protojson.MarshalOptions{ + UseProtoNames: true, + AllowPartial: true, + EmitUnpopulated: false, + } + data, err := opts.Marshal(obj.Msg()) + if err != nil { + return "", err + } + data, err = yaml.JSONToYAML(data) + if err != nil { + return "", err + } + return string(data), nil +} + +func (obj *patternFlowEthernetEtherTypeCounter) FromYaml(value string) error { + if value == "" { + value = "{}" + } + data, err := yaml.YAMLToJSON([]byte(value)) + if err != nil { + return err + } + opts := protojson.UnmarshalOptions{ + AllowPartial: true, + DiscardUnknown: false, + } + uError := opts.Unmarshal([]byte(data), obj.Msg()) + if uError != nil { + return fmt.Errorf("unmarshal error %s", strings.Replace( + uError.Error(), "\u00a0", " ", -1)[7:]) + } + + vErr := obj.validateToAndFrom() + if vErr != nil { + return vErr + } + return nil +} + +func (obj *patternFlowEthernetEtherTypeCounter) ToJson() (string, error) { + vErr := obj.validateToAndFrom() + if vErr != nil { + return "", vErr + } + opts := protojson.MarshalOptions{ + UseProtoNames: true, + AllowPartial: true, + EmitUnpopulated: false, + Indent: " ", + } + data, err := opts.Marshal(obj.Msg()) + if err != nil { + return "", err + } + return string(data), nil +} + +func (obj *patternFlowEthernetEtherTypeCounter) FromJson(value string) error { + opts := protojson.UnmarshalOptions{ + AllowPartial: true, + DiscardUnknown: false, + } + if value == "" { + value = "{}" + } + uError := opts.Unmarshal([]byte(value), obj.Msg()) + if uError != nil { + return fmt.Errorf("unmarshal error %s", strings.Replace( + uError.Error(), "\u00a0", " ", -1)[7:]) + } + + err := obj.validateToAndFrom() + if err != nil { + return err + } + return nil +} + +func (obj *patternFlowEthernetEtherTypeCounter) validateToAndFrom() error { + // emptyVars() + obj.validateObj(&obj.validation, true) + return obj.validationResult() +} + +func (obj *patternFlowEthernetEtherTypeCounter) Validate() error { + // emptyVars() + obj.validateObj(&obj.validation, false) + return obj.validationResult() +} + +func (obj *patternFlowEthernetEtherTypeCounter) String() string { + str, err := obj.ToYaml() + if err != nil { + return err.Error() + } + return str +} + +func (obj *patternFlowEthernetEtherTypeCounter) Clone() (PatternFlowEthernetEtherTypeCounter, error) { + vErr := obj.Validate() + if vErr != nil { + return nil, vErr + } + newObj := NewPatternFlowEthernetEtherTypeCounter() + data, err := proto.Marshal(obj.Msg()) + if err != nil { + return nil, err + } + pbErr := proto.Unmarshal(data, newObj.Msg()) + if pbErr != nil { + return nil, pbErr + } + return newObj, nil +} + +// PatternFlowEthernetEtherTypeCounter is integer counter pattern +type PatternFlowEthernetEtherTypeCounter interface { + Validation + // Msg marshals PatternFlowEthernetEtherTypeCounter to protobuf object *otg.PatternFlowEthernetEtherTypeCounter + // and doesn't set defaults + Msg() *otg.PatternFlowEthernetEtherTypeCounter + // SetMsg unmarshals PatternFlowEthernetEtherTypeCounter from protobuf object *otg.PatternFlowEthernetEtherTypeCounter + // and doesn't set defaults + SetMsg(*otg.PatternFlowEthernetEtherTypeCounter) PatternFlowEthernetEtherTypeCounter + // ToProto marshals PatternFlowEthernetEtherTypeCounter to protobuf object *otg.PatternFlowEthernetEtherTypeCounter + ToProto() (*otg.PatternFlowEthernetEtherTypeCounter, error) + // ToPbText marshals PatternFlowEthernetEtherTypeCounter to protobuf text + ToPbText() (string, error) + // ToYaml marshals PatternFlowEthernetEtherTypeCounter to YAML text + ToYaml() (string, error) + // ToJson marshals PatternFlowEthernetEtherTypeCounter to JSON text + ToJson() (string, error) + // FromProto unmarshals PatternFlowEthernetEtherTypeCounter from protobuf object *otg.PatternFlowEthernetEtherTypeCounter + FromProto(msg *otg.PatternFlowEthernetEtherTypeCounter) (PatternFlowEthernetEtherTypeCounter, error) + // FromPbText unmarshals PatternFlowEthernetEtherTypeCounter from protobuf text + FromPbText(value string) error + // FromYaml unmarshals PatternFlowEthernetEtherTypeCounter from YAML text + FromYaml(value string) error + // FromJson unmarshals PatternFlowEthernetEtherTypeCounter from JSON text + FromJson(value string) error + // Validate validates PatternFlowEthernetEtherTypeCounter + Validate() error + // A stringer function + String() string + // Clones the object + Clone() (PatternFlowEthernetEtherTypeCounter, error) + validateToAndFrom() error + validateObj(vObj *validation, set_default bool) + setDefault() + // Start returns uint32, set in PatternFlowEthernetEtherTypeCounter. + Start() uint32 + // SetStart assigns uint32 provided by user to PatternFlowEthernetEtherTypeCounter + SetStart(value uint32) PatternFlowEthernetEtherTypeCounter + // HasStart checks if Start has been set in PatternFlowEthernetEtherTypeCounter + HasStart() bool + // Step returns uint32, set in PatternFlowEthernetEtherTypeCounter. + Step() uint32 + // SetStep assigns uint32 provided by user to PatternFlowEthernetEtherTypeCounter + SetStep(value uint32) PatternFlowEthernetEtherTypeCounter + // HasStep checks if Step has been set in PatternFlowEthernetEtherTypeCounter + HasStep() bool + // Count returns uint32, set in PatternFlowEthernetEtherTypeCounter. + Count() uint32 + // SetCount assigns uint32 provided by user to PatternFlowEthernetEtherTypeCounter + SetCount(value uint32) PatternFlowEthernetEtherTypeCounter + // HasCount checks if Count has been set in PatternFlowEthernetEtherTypeCounter + HasCount() bool +} + +// description is TBD +// Start returns a uint32 +func (obj *patternFlowEthernetEtherTypeCounter) Start() uint32 { + + return *obj.obj.Start + +} + +// description is TBD +// Start returns a uint32 +func (obj *patternFlowEthernetEtherTypeCounter) HasStart() bool { + return obj.obj.Start != nil +} + +// description is TBD +// SetStart sets the uint32 value in the PatternFlowEthernetEtherTypeCounter object +func (obj *patternFlowEthernetEtherTypeCounter) SetStart(value uint32) PatternFlowEthernetEtherTypeCounter { + + obj.obj.Start = &value + return obj +} + +// description is TBD +// Step returns a uint32 +func (obj *patternFlowEthernetEtherTypeCounter) Step() uint32 { + + return *obj.obj.Step + +} + +// description is TBD +// Step returns a uint32 +func (obj *patternFlowEthernetEtherTypeCounter) HasStep() bool { + return obj.obj.Step != nil +} + +// description is TBD +// SetStep sets the uint32 value in the PatternFlowEthernetEtherTypeCounter object +func (obj *patternFlowEthernetEtherTypeCounter) SetStep(value uint32) PatternFlowEthernetEtherTypeCounter { + + obj.obj.Step = &value + return obj +} + +// description is TBD +// Count returns a uint32 +func (obj *patternFlowEthernetEtherTypeCounter) Count() uint32 { + + return *obj.obj.Count + +} + +// description is TBD +// Count returns a uint32 +func (obj *patternFlowEthernetEtherTypeCounter) HasCount() bool { + return obj.obj.Count != nil +} + +// description is TBD +// SetCount sets the uint32 value in the PatternFlowEthernetEtherTypeCounter object +func (obj *patternFlowEthernetEtherTypeCounter) SetCount(value uint32) PatternFlowEthernetEtherTypeCounter { + + obj.obj.Count = &value + return obj +} + +func (obj *patternFlowEthernetEtherTypeCounter) validateObj(vObj *validation, set_default bool) { + if set_default { + obj.setDefault() + } + + if obj.obj.Start != nil { + + if *obj.obj.Start > 65535 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("0 <= PatternFlowEthernetEtherTypeCounter.Start <= 65535 but Got %d", *obj.obj.Start)) + } + + } + + if obj.obj.Step != nil { + + if *obj.obj.Step > 65535 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("0 <= PatternFlowEthernetEtherTypeCounter.Step <= 65535 but Got %d", *obj.obj.Step)) + } + + } + + if obj.obj.Count != nil { + + if *obj.obj.Count > 65535 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("0 <= PatternFlowEthernetEtherTypeCounter.Count <= 65535 but Got %d", *obj.obj.Count)) + } + + } + +} + +func (obj *patternFlowEthernetEtherTypeCounter) setDefault() { + if obj.obj.Start == nil { + obj.SetStart(65535) + } + if obj.obj.Step == nil { + obj.SetStep(1) + } + if obj.obj.Count == nil { + obj.SetCount(1) + } + +} + +// ***** PatternFlowEthernetEtherTypeMetricTag ***** +type patternFlowEthernetEtherTypeMetricTag struct { + validation + obj *otg.PatternFlowEthernetEtherTypeMetricTag +} + +func NewPatternFlowEthernetEtherTypeMetricTag() PatternFlowEthernetEtherTypeMetricTag { + obj := patternFlowEthernetEtherTypeMetricTag{obj: &otg.PatternFlowEthernetEtherTypeMetricTag{}} + obj.setDefault() + return &obj +} + +func (obj *patternFlowEthernetEtherTypeMetricTag) Msg() *otg.PatternFlowEthernetEtherTypeMetricTag { + return obj.obj +} + +func (obj *patternFlowEthernetEtherTypeMetricTag) SetMsg(msg *otg.PatternFlowEthernetEtherTypeMetricTag) PatternFlowEthernetEtherTypeMetricTag { + + proto.Merge(obj.obj, msg) + return obj +} + +func (obj *patternFlowEthernetEtherTypeMetricTag) ToProto() (*otg.PatternFlowEthernetEtherTypeMetricTag, error) { + err := obj.validateToAndFrom() + if err != nil { + return nil, err + } + return obj.Msg(), nil +} + +func (obj *patternFlowEthernetEtherTypeMetricTag) FromProto(msg *otg.PatternFlowEthernetEtherTypeMetricTag) (PatternFlowEthernetEtherTypeMetricTag, error) { + newObj := obj.SetMsg(msg) + err := newObj.validateToAndFrom() + if err != nil { + return nil, err + } + return newObj, nil +} + +func (obj *patternFlowEthernetEtherTypeMetricTag) ToPbText() (string, error) { + vErr := obj.validateToAndFrom() + if vErr != nil { + return "", vErr + } + protoMarshal, err := proto.Marshal(obj.Msg()) + if err != nil { + return "", err + } + return string(protoMarshal), nil +} + +func (obj *patternFlowEthernetEtherTypeMetricTag) FromPbText(value string) error { + retObj := proto.Unmarshal([]byte(value), obj.Msg()) + if retObj != nil { + return retObj + } + + vErr := obj.validateToAndFrom() + if vErr != nil { + return vErr + } + return retObj +} + +func (obj *patternFlowEthernetEtherTypeMetricTag) ToYaml() (string, error) { + vErr := obj.validateToAndFrom() + if vErr != nil { + return "", vErr + } + opts := protojson.MarshalOptions{ + UseProtoNames: true, + AllowPartial: true, + EmitUnpopulated: false, + } + data, err := opts.Marshal(obj.Msg()) + if err != nil { + return "", err + } + data, err = yaml.JSONToYAML(data) + if err != nil { + return "", err + } + return string(data), nil +} + +func (obj *patternFlowEthernetEtherTypeMetricTag) FromYaml(value string) error { + if value == "" { + value = "{}" + } + data, err := yaml.YAMLToJSON([]byte(value)) + if err != nil { + return err + } + opts := protojson.UnmarshalOptions{ + AllowPartial: true, + DiscardUnknown: false, + } + uError := opts.Unmarshal([]byte(data), obj.Msg()) + if uError != nil { + return fmt.Errorf("unmarshal error %s", strings.Replace( + uError.Error(), "\u00a0", " ", -1)[7:]) + } + + vErr := obj.validateToAndFrom() + if vErr != nil { + return vErr + } + return nil +} + +func (obj *patternFlowEthernetEtherTypeMetricTag) ToJson() (string, error) { + vErr := obj.validateToAndFrom() + if vErr != nil { + return "", vErr + } + opts := protojson.MarshalOptions{ + UseProtoNames: true, + AllowPartial: true, + EmitUnpopulated: false, + Indent: " ", + } + data, err := opts.Marshal(obj.Msg()) + if err != nil { + return "", err + } + return string(data), nil +} + +func (obj *patternFlowEthernetEtherTypeMetricTag) FromJson(value string) error { + opts := protojson.UnmarshalOptions{ + AllowPartial: true, + DiscardUnknown: false, + } + if value == "" { + value = "{}" + } + uError := opts.Unmarshal([]byte(value), obj.Msg()) + if uError != nil { + return fmt.Errorf("unmarshal error %s", strings.Replace( + uError.Error(), "\u00a0", " ", -1)[7:]) + } + + err := obj.validateToAndFrom() + if err != nil { + return err + } + return nil +} + +func (obj *patternFlowEthernetEtherTypeMetricTag) validateToAndFrom() error { + // emptyVars() + obj.validateObj(&obj.validation, true) + return obj.validationResult() +} + +func (obj *patternFlowEthernetEtherTypeMetricTag) Validate() error { + // emptyVars() + obj.validateObj(&obj.validation, false) + return obj.validationResult() +} + +func (obj *patternFlowEthernetEtherTypeMetricTag) String() string { + str, err := obj.ToYaml() + if err != nil { + return err.Error() + } + return str +} + +func (obj *patternFlowEthernetEtherTypeMetricTag) Clone() (PatternFlowEthernetEtherTypeMetricTag, error) { + vErr := obj.Validate() + if vErr != nil { + return nil, vErr + } + newObj := NewPatternFlowEthernetEtherTypeMetricTag() + data, err := proto.Marshal(obj.Msg()) + if err != nil { + return nil, err + } + pbErr := proto.Unmarshal(data, newObj.Msg()) + if pbErr != nil { + return nil, pbErr + } + return newObj, nil +} + +// PatternFlowEthernetEtherTypeMetricTag is metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. +type PatternFlowEthernetEtherTypeMetricTag interface { + Validation + // Msg marshals PatternFlowEthernetEtherTypeMetricTag to protobuf object *otg.PatternFlowEthernetEtherTypeMetricTag + // and doesn't set defaults + Msg() *otg.PatternFlowEthernetEtherTypeMetricTag + // SetMsg unmarshals PatternFlowEthernetEtherTypeMetricTag from protobuf object *otg.PatternFlowEthernetEtherTypeMetricTag + // and doesn't set defaults + SetMsg(*otg.PatternFlowEthernetEtherTypeMetricTag) PatternFlowEthernetEtherTypeMetricTag + // ToProto marshals PatternFlowEthernetEtherTypeMetricTag to protobuf object *otg.PatternFlowEthernetEtherTypeMetricTag + ToProto() (*otg.PatternFlowEthernetEtherTypeMetricTag, error) + // ToPbText marshals PatternFlowEthernetEtherTypeMetricTag to protobuf text + ToPbText() (string, error) + // ToYaml marshals PatternFlowEthernetEtherTypeMetricTag to YAML text + ToYaml() (string, error) + // ToJson marshals PatternFlowEthernetEtherTypeMetricTag to JSON text + ToJson() (string, error) + // FromProto unmarshals PatternFlowEthernetEtherTypeMetricTag from protobuf object *otg.PatternFlowEthernetEtherTypeMetricTag + FromProto(msg *otg.PatternFlowEthernetEtherTypeMetricTag) (PatternFlowEthernetEtherTypeMetricTag, error) + // FromPbText unmarshals PatternFlowEthernetEtherTypeMetricTag from protobuf text + FromPbText(value string) error + // FromYaml unmarshals PatternFlowEthernetEtherTypeMetricTag from YAML text + FromYaml(value string) error + // FromJson unmarshals PatternFlowEthernetEtherTypeMetricTag from JSON text + FromJson(value string) error + // Validate validates PatternFlowEthernetEtherTypeMetricTag + Validate() error + // A stringer function + String() string + // Clones the object + Clone() (PatternFlowEthernetEtherTypeMetricTag, error) + validateToAndFrom() error + validateObj(vObj *validation, set_default bool) + setDefault() + // Name returns string, set in PatternFlowEthernetEtherTypeMetricTag. + Name() string + // SetName assigns string provided by user to PatternFlowEthernetEtherTypeMetricTag + SetName(value string) PatternFlowEthernetEtherTypeMetricTag + // Offset returns uint32, set in PatternFlowEthernetEtherTypeMetricTag. + Offset() uint32 + // SetOffset assigns uint32 provided by user to PatternFlowEthernetEtherTypeMetricTag + SetOffset(value uint32) PatternFlowEthernetEtherTypeMetricTag + // HasOffset checks if Offset has been set in PatternFlowEthernetEtherTypeMetricTag + HasOffset() bool + // Length returns uint32, set in PatternFlowEthernetEtherTypeMetricTag. + Length() uint32 + // SetLength assigns uint32 provided by user to PatternFlowEthernetEtherTypeMetricTag + SetLength(value uint32) PatternFlowEthernetEtherTypeMetricTag + // HasLength checks if Length has been set in PatternFlowEthernetEtherTypeMetricTag + HasLength() bool +} + +// Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field +// Name returns a string +func (obj *patternFlowEthernetEtherTypeMetricTag) Name() string { + + return *obj.obj.Name + +} + +// Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field +// SetName sets the string value in the PatternFlowEthernetEtherTypeMetricTag object +func (obj *patternFlowEthernetEtherTypeMetricTag) SetName(value string) PatternFlowEthernetEtherTypeMetricTag { + + obj.obj.Name = &value + return obj +} + +// Offset in bits relative to start of corresponding header field +// Offset returns a uint32 +func (obj *patternFlowEthernetEtherTypeMetricTag) Offset() uint32 { + + return *obj.obj.Offset + +} + +// Offset in bits relative to start of corresponding header field +// Offset returns a uint32 +func (obj *patternFlowEthernetEtherTypeMetricTag) HasOffset() bool { + return obj.obj.Offset != nil +} + +// Offset in bits relative to start of corresponding header field +// SetOffset sets the uint32 value in the PatternFlowEthernetEtherTypeMetricTag object +func (obj *patternFlowEthernetEtherTypeMetricTag) SetOffset(value uint32) PatternFlowEthernetEtherTypeMetricTag { + + obj.obj.Offset = &value + return obj +} + +// Number of bits to track for metrics starting from configured offset of corresponding header field +// Length returns a uint32 +func (obj *patternFlowEthernetEtherTypeMetricTag) Length() uint32 { + + return *obj.obj.Length + +} + +// Number of bits to track for metrics starting from configured offset of corresponding header field +// Length returns a uint32 +func (obj *patternFlowEthernetEtherTypeMetricTag) HasLength() bool { + return obj.obj.Length != nil +} + +// Number of bits to track for metrics starting from configured offset of corresponding header field +// SetLength sets the uint32 value in the PatternFlowEthernetEtherTypeMetricTag object +func (obj *patternFlowEthernetEtherTypeMetricTag) SetLength(value uint32) PatternFlowEthernetEtherTypeMetricTag { + + obj.obj.Length = &value + return obj +} + +func (obj *patternFlowEthernetEtherTypeMetricTag) validateObj(vObj *validation, set_default bool) { + if set_default { + obj.setDefault() + } + + // Name is required + if obj.obj.Name == nil { + vObj.validationErrors = append(vObj.validationErrors, "Name is required field on interface PatternFlowEthernetEtherTypeMetricTag") + } + + if obj.obj.Offset != nil { + + if *obj.obj.Offset > 15 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("0 <= PatternFlowEthernetEtherTypeMetricTag.Offset <= 15 but Got %d", *obj.obj.Offset)) + } + + } + + if obj.obj.Length != nil { + + if *obj.obj.Length < 1 || *obj.obj.Length > 16 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("1 <= PatternFlowEthernetEtherTypeMetricTag.Length <= 16 but Got %d", *obj.obj.Length)) + } + + } + +} + +func (obj *patternFlowEthernetEtherTypeMetricTag) setDefault() { + if obj.obj.Offset == nil { + obj.SetOffset(0) + } + if obj.obj.Length == nil { + obj.SetLength(16) + } + +} + +// ***** PatternFlowEthernetPfcQueueCounter ***** +type patternFlowEthernetPfcQueueCounter struct { + validation + obj *otg.PatternFlowEthernetPfcQueueCounter +} + +func NewPatternFlowEthernetPfcQueueCounter() PatternFlowEthernetPfcQueueCounter { + obj := patternFlowEthernetPfcQueueCounter{obj: &otg.PatternFlowEthernetPfcQueueCounter{}} + obj.setDefault() + return &obj +} + +func (obj *patternFlowEthernetPfcQueueCounter) Msg() *otg.PatternFlowEthernetPfcQueueCounter { + return obj.obj +} + +func (obj *patternFlowEthernetPfcQueueCounter) SetMsg(msg *otg.PatternFlowEthernetPfcQueueCounter) PatternFlowEthernetPfcQueueCounter { + + proto.Merge(obj.obj, msg) + return obj +} + +func (obj *patternFlowEthernetPfcQueueCounter) ToProto() (*otg.PatternFlowEthernetPfcQueueCounter, error) { + err := obj.validateToAndFrom() + if err != nil { + return nil, err + } + return obj.Msg(), nil +} + +func (obj *patternFlowEthernetPfcQueueCounter) FromProto(msg *otg.PatternFlowEthernetPfcQueueCounter) (PatternFlowEthernetPfcQueueCounter, error) { + newObj := obj.SetMsg(msg) + err := newObj.validateToAndFrom() + if err != nil { + return nil, err + } + return newObj, nil +} + +func (obj *patternFlowEthernetPfcQueueCounter) ToPbText() (string, error) { + vErr := obj.validateToAndFrom() + if vErr != nil { + return "", vErr + } + protoMarshal, err := proto.Marshal(obj.Msg()) + if err != nil { + return "", err + } + return string(protoMarshal), nil +} + +func (obj *patternFlowEthernetPfcQueueCounter) FromPbText(value string) error { + retObj := proto.Unmarshal([]byte(value), obj.Msg()) + if retObj != nil { + return retObj + } + + vErr := obj.validateToAndFrom() + if vErr != nil { + return vErr + } + return retObj +} + +func (obj *patternFlowEthernetPfcQueueCounter) ToYaml() (string, error) { + vErr := obj.validateToAndFrom() + if vErr != nil { + return "", vErr + } + opts := protojson.MarshalOptions{ + UseProtoNames: true, + AllowPartial: true, + EmitUnpopulated: false, + } + data, err := opts.Marshal(obj.Msg()) + if err != nil { + return "", err + } + data, err = yaml.JSONToYAML(data) + if err != nil { + return "", err + } + return string(data), nil +} + +func (obj *patternFlowEthernetPfcQueueCounter) FromYaml(value string) error { + if value == "" { + value = "{}" + } + data, err := yaml.YAMLToJSON([]byte(value)) + if err != nil { + return err + } + opts := protojson.UnmarshalOptions{ + AllowPartial: true, + DiscardUnknown: false, + } + uError := opts.Unmarshal([]byte(data), obj.Msg()) + if uError != nil { + return fmt.Errorf("unmarshal error %s", strings.Replace( + uError.Error(), "\u00a0", " ", -1)[7:]) + } + + vErr := obj.validateToAndFrom() + if vErr != nil { + return vErr + } + return nil +} + +func (obj *patternFlowEthernetPfcQueueCounter) ToJson() (string, error) { + vErr := obj.validateToAndFrom() + if vErr != nil { + return "", vErr + } + opts := protojson.MarshalOptions{ + UseProtoNames: true, + AllowPartial: true, + EmitUnpopulated: false, + Indent: " ", + } + data, err := opts.Marshal(obj.Msg()) + if err != nil { + return "", err + } + return string(data), nil +} + +func (obj *patternFlowEthernetPfcQueueCounter) FromJson(value string) error { + opts := protojson.UnmarshalOptions{ + AllowPartial: true, + DiscardUnknown: false, + } + if value == "" { + value = "{}" + } + uError := opts.Unmarshal([]byte(value), obj.Msg()) + if uError != nil { + return fmt.Errorf("unmarshal error %s", strings.Replace( + uError.Error(), "\u00a0", " ", -1)[7:]) + } + + err := obj.validateToAndFrom() + if err != nil { + return err + } + return nil +} + +func (obj *patternFlowEthernetPfcQueueCounter) validateToAndFrom() error { + // emptyVars() + obj.validateObj(&obj.validation, true) + return obj.validationResult() +} + +func (obj *patternFlowEthernetPfcQueueCounter) Validate() error { + // emptyVars() + obj.validateObj(&obj.validation, false) + return obj.validationResult() +} + +func (obj *patternFlowEthernetPfcQueueCounter) String() string { + str, err := obj.ToYaml() + if err != nil { + return err.Error() + } + return str +} + +func (obj *patternFlowEthernetPfcQueueCounter) Clone() (PatternFlowEthernetPfcQueueCounter, error) { + vErr := obj.Validate() + if vErr != nil { + return nil, vErr + } + newObj := NewPatternFlowEthernetPfcQueueCounter() + data, err := proto.Marshal(obj.Msg()) + if err != nil { + return nil, err + } + pbErr := proto.Unmarshal(data, newObj.Msg()) + if pbErr != nil { + return nil, pbErr + } + return newObj, nil +} + +// PatternFlowEthernetPfcQueueCounter is integer counter pattern +type PatternFlowEthernetPfcQueueCounter interface { + Validation + // Msg marshals PatternFlowEthernetPfcQueueCounter to protobuf object *otg.PatternFlowEthernetPfcQueueCounter + // and doesn't set defaults + Msg() *otg.PatternFlowEthernetPfcQueueCounter + // SetMsg unmarshals PatternFlowEthernetPfcQueueCounter from protobuf object *otg.PatternFlowEthernetPfcQueueCounter + // and doesn't set defaults + SetMsg(*otg.PatternFlowEthernetPfcQueueCounter) PatternFlowEthernetPfcQueueCounter + // ToProto marshals PatternFlowEthernetPfcQueueCounter to protobuf object *otg.PatternFlowEthernetPfcQueueCounter + ToProto() (*otg.PatternFlowEthernetPfcQueueCounter, error) + // ToPbText marshals PatternFlowEthernetPfcQueueCounter to protobuf text + ToPbText() (string, error) + // ToYaml marshals PatternFlowEthernetPfcQueueCounter to YAML text + ToYaml() (string, error) + // ToJson marshals PatternFlowEthernetPfcQueueCounter to JSON text + ToJson() (string, error) + // FromProto unmarshals PatternFlowEthernetPfcQueueCounter from protobuf object *otg.PatternFlowEthernetPfcQueueCounter + FromProto(msg *otg.PatternFlowEthernetPfcQueueCounter) (PatternFlowEthernetPfcQueueCounter, error) + // FromPbText unmarshals PatternFlowEthernetPfcQueueCounter from protobuf text + FromPbText(value string) error + // FromYaml unmarshals PatternFlowEthernetPfcQueueCounter from YAML text + FromYaml(value string) error + // FromJson unmarshals PatternFlowEthernetPfcQueueCounter from JSON text + FromJson(value string) error + // Validate validates PatternFlowEthernetPfcQueueCounter + Validate() error + // A stringer function + String() string + // Clones the object + Clone() (PatternFlowEthernetPfcQueueCounter, error) + validateToAndFrom() error + validateObj(vObj *validation, set_default bool) + setDefault() + // Start returns uint32, set in PatternFlowEthernetPfcQueueCounter. + Start() uint32 + // SetStart assigns uint32 provided by user to PatternFlowEthernetPfcQueueCounter + SetStart(value uint32) PatternFlowEthernetPfcQueueCounter + // HasStart checks if Start has been set in PatternFlowEthernetPfcQueueCounter + HasStart() bool + // Step returns uint32, set in PatternFlowEthernetPfcQueueCounter. + Step() uint32 + // SetStep assigns uint32 provided by user to PatternFlowEthernetPfcQueueCounter + SetStep(value uint32) PatternFlowEthernetPfcQueueCounter + // HasStep checks if Step has been set in PatternFlowEthernetPfcQueueCounter + HasStep() bool + // Count returns uint32, set in PatternFlowEthernetPfcQueueCounter. + Count() uint32 + // SetCount assigns uint32 provided by user to PatternFlowEthernetPfcQueueCounter + SetCount(value uint32) PatternFlowEthernetPfcQueueCounter + // HasCount checks if Count has been set in PatternFlowEthernetPfcQueueCounter + HasCount() bool +} + +// description is TBD +// Start returns a uint32 +func (obj *patternFlowEthernetPfcQueueCounter) Start() uint32 { + + return *obj.obj.Start + +} + +// description is TBD +// Start returns a uint32 +func (obj *patternFlowEthernetPfcQueueCounter) HasStart() bool { + return obj.obj.Start != nil +} + +// description is TBD +// SetStart sets the uint32 value in the PatternFlowEthernetPfcQueueCounter object +func (obj *patternFlowEthernetPfcQueueCounter) SetStart(value uint32) PatternFlowEthernetPfcQueueCounter { + + obj.obj.Start = &value + return obj +} + +// description is TBD +// Step returns a uint32 +func (obj *patternFlowEthernetPfcQueueCounter) Step() uint32 { + + return *obj.obj.Step + +} + +// description is TBD +// Step returns a uint32 +func (obj *patternFlowEthernetPfcQueueCounter) HasStep() bool { + return obj.obj.Step != nil +} + +// description is TBD +// SetStep sets the uint32 value in the PatternFlowEthernetPfcQueueCounter object +func (obj *patternFlowEthernetPfcQueueCounter) SetStep(value uint32) PatternFlowEthernetPfcQueueCounter { + + obj.obj.Step = &value + return obj +} + +// description is TBD +// Count returns a uint32 +func (obj *patternFlowEthernetPfcQueueCounter) Count() uint32 { + + return *obj.obj.Count + +} + +// description is TBD +// Count returns a uint32 +func (obj *patternFlowEthernetPfcQueueCounter) HasCount() bool { + return obj.obj.Count != nil +} + +// description is TBD +// SetCount sets the uint32 value in the PatternFlowEthernetPfcQueueCounter object +func (obj *patternFlowEthernetPfcQueueCounter) SetCount(value uint32) PatternFlowEthernetPfcQueueCounter { + + obj.obj.Count = &value + return obj +} + +func (obj *patternFlowEthernetPfcQueueCounter) validateObj(vObj *validation, set_default bool) { + if set_default { + obj.setDefault() + } + + if obj.obj.Start != nil { + + if *obj.obj.Start > 7 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("0 <= PatternFlowEthernetPfcQueueCounter.Start <= 7 but Got %d", *obj.obj.Start)) + } + + } + + if obj.obj.Step != nil { + + if *obj.obj.Step > 7 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("0 <= PatternFlowEthernetPfcQueueCounter.Step <= 7 but Got %d", *obj.obj.Step)) + } + + } + + if obj.obj.Count != nil { + + if *obj.obj.Count > 7 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("0 <= PatternFlowEthernetPfcQueueCounter.Count <= 7 but Got %d", *obj.obj.Count)) + } + + } + +} + +func (obj *patternFlowEthernetPfcQueueCounter) setDefault() { + if obj.obj.Start == nil { + obj.SetStart(0) + } + if obj.obj.Step == nil { + obj.SetStep(1) + } + if obj.obj.Count == nil { + obj.SetCount(1) + } + +} + +// ***** PatternFlowEthernetPfcQueueMetricTag ***** +type patternFlowEthernetPfcQueueMetricTag struct { + validation + obj *otg.PatternFlowEthernetPfcQueueMetricTag +} + +func NewPatternFlowEthernetPfcQueueMetricTag() PatternFlowEthernetPfcQueueMetricTag { + obj := patternFlowEthernetPfcQueueMetricTag{obj: &otg.PatternFlowEthernetPfcQueueMetricTag{}} + obj.setDefault() + return &obj +} + +func (obj *patternFlowEthernetPfcQueueMetricTag) Msg() *otg.PatternFlowEthernetPfcQueueMetricTag { + return obj.obj +} + +func (obj *patternFlowEthernetPfcQueueMetricTag) SetMsg(msg *otg.PatternFlowEthernetPfcQueueMetricTag) PatternFlowEthernetPfcQueueMetricTag { + + proto.Merge(obj.obj, msg) + return obj +} + +func (obj *patternFlowEthernetPfcQueueMetricTag) ToProto() (*otg.PatternFlowEthernetPfcQueueMetricTag, error) { + err := obj.validateToAndFrom() + if err != nil { + return nil, err + } + return obj.Msg(), nil +} + +func (obj *patternFlowEthernetPfcQueueMetricTag) FromProto(msg *otg.PatternFlowEthernetPfcQueueMetricTag) (PatternFlowEthernetPfcQueueMetricTag, error) { + newObj := obj.SetMsg(msg) + err := newObj.validateToAndFrom() + if err != nil { + return nil, err + } + return newObj, nil +} + +func (obj *patternFlowEthernetPfcQueueMetricTag) ToPbText() (string, error) { + vErr := obj.validateToAndFrom() + if vErr != nil { + return "", vErr + } + protoMarshal, err := proto.Marshal(obj.Msg()) + if err != nil { + return "", err + } + return string(protoMarshal), nil +} + +func (obj *patternFlowEthernetPfcQueueMetricTag) FromPbText(value string) error { + retObj := proto.Unmarshal([]byte(value), obj.Msg()) + if retObj != nil { + return retObj + } + + vErr := obj.validateToAndFrom() + if vErr != nil { + return vErr + } + return retObj +} + +func (obj *patternFlowEthernetPfcQueueMetricTag) ToYaml() (string, error) { + vErr := obj.validateToAndFrom() + if vErr != nil { + return "", vErr + } + opts := protojson.MarshalOptions{ + UseProtoNames: true, + AllowPartial: true, + EmitUnpopulated: false, + } + data, err := opts.Marshal(obj.Msg()) + if err != nil { + return "", err + } + data, err = yaml.JSONToYAML(data) + if err != nil { + return "", err + } + return string(data), nil +} + +func (obj *patternFlowEthernetPfcQueueMetricTag) FromYaml(value string) error { + if value == "" { + value = "{}" + } + data, err := yaml.YAMLToJSON([]byte(value)) + if err != nil { + return err + } + opts := protojson.UnmarshalOptions{ + AllowPartial: true, + DiscardUnknown: false, + } + uError := opts.Unmarshal([]byte(data), obj.Msg()) + if uError != nil { + return fmt.Errorf("unmarshal error %s", strings.Replace( + uError.Error(), "\u00a0", " ", -1)[7:]) + } + + vErr := obj.validateToAndFrom() + if vErr != nil { + return vErr + } + return nil +} + +func (obj *patternFlowEthernetPfcQueueMetricTag) ToJson() (string, error) { + vErr := obj.validateToAndFrom() + if vErr != nil { + return "", vErr + } + opts := protojson.MarshalOptions{ + UseProtoNames: true, + AllowPartial: true, + EmitUnpopulated: false, + Indent: " ", + } + data, err := opts.Marshal(obj.Msg()) + if err != nil { + return "", err + } + return string(data), nil +} + +func (obj *patternFlowEthernetPfcQueueMetricTag) FromJson(value string) error { + opts := protojson.UnmarshalOptions{ + AllowPartial: true, + DiscardUnknown: false, + } + if value == "" { + value = "{}" + } + uError := opts.Unmarshal([]byte(value), obj.Msg()) + if uError != nil { + return fmt.Errorf("unmarshal error %s", strings.Replace( + uError.Error(), "\u00a0", " ", -1)[7:]) + } + + err := obj.validateToAndFrom() + if err != nil { + return err + } + return nil +} + +func (obj *patternFlowEthernetPfcQueueMetricTag) validateToAndFrom() error { + // emptyVars() + obj.validateObj(&obj.validation, true) + return obj.validationResult() +} + +func (obj *patternFlowEthernetPfcQueueMetricTag) Validate() error { + // emptyVars() + obj.validateObj(&obj.validation, false) + return obj.validationResult() +} + +func (obj *patternFlowEthernetPfcQueueMetricTag) String() string { + str, err := obj.ToYaml() + if err != nil { + return err.Error() + } + return str +} + +func (obj *patternFlowEthernetPfcQueueMetricTag) Clone() (PatternFlowEthernetPfcQueueMetricTag, error) { + vErr := obj.Validate() + if vErr != nil { + return nil, vErr + } + newObj := NewPatternFlowEthernetPfcQueueMetricTag() + data, err := proto.Marshal(obj.Msg()) + if err != nil { + return nil, err + } + pbErr := proto.Unmarshal(data, newObj.Msg()) + if pbErr != nil { + return nil, pbErr + } + return newObj, nil +} + +// PatternFlowEthernetPfcQueueMetricTag is metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. +type PatternFlowEthernetPfcQueueMetricTag interface { + Validation + // Msg marshals PatternFlowEthernetPfcQueueMetricTag to protobuf object *otg.PatternFlowEthernetPfcQueueMetricTag + // and doesn't set defaults + Msg() *otg.PatternFlowEthernetPfcQueueMetricTag + // SetMsg unmarshals PatternFlowEthernetPfcQueueMetricTag from protobuf object *otg.PatternFlowEthernetPfcQueueMetricTag + // and doesn't set defaults + SetMsg(*otg.PatternFlowEthernetPfcQueueMetricTag) PatternFlowEthernetPfcQueueMetricTag + // ToProto marshals PatternFlowEthernetPfcQueueMetricTag to protobuf object *otg.PatternFlowEthernetPfcQueueMetricTag + ToProto() (*otg.PatternFlowEthernetPfcQueueMetricTag, error) + // ToPbText marshals PatternFlowEthernetPfcQueueMetricTag to protobuf text + ToPbText() (string, error) + // ToYaml marshals PatternFlowEthernetPfcQueueMetricTag to YAML text + ToYaml() (string, error) + // ToJson marshals PatternFlowEthernetPfcQueueMetricTag to JSON text + ToJson() (string, error) + // FromProto unmarshals PatternFlowEthernetPfcQueueMetricTag from protobuf object *otg.PatternFlowEthernetPfcQueueMetricTag + FromProto(msg *otg.PatternFlowEthernetPfcQueueMetricTag) (PatternFlowEthernetPfcQueueMetricTag, error) + // FromPbText unmarshals PatternFlowEthernetPfcQueueMetricTag from protobuf text + FromPbText(value string) error + // FromYaml unmarshals PatternFlowEthernetPfcQueueMetricTag from YAML text + FromYaml(value string) error + // FromJson unmarshals PatternFlowEthernetPfcQueueMetricTag from JSON text + FromJson(value string) error + // Validate validates PatternFlowEthernetPfcQueueMetricTag + Validate() error + // A stringer function + String() string + // Clones the object + Clone() (PatternFlowEthernetPfcQueueMetricTag, error) + validateToAndFrom() error + validateObj(vObj *validation, set_default bool) + setDefault() + // Name returns string, set in PatternFlowEthernetPfcQueueMetricTag. + Name() string + // SetName assigns string provided by user to PatternFlowEthernetPfcQueueMetricTag + SetName(value string) PatternFlowEthernetPfcQueueMetricTag + // Offset returns uint32, set in PatternFlowEthernetPfcQueueMetricTag. + Offset() uint32 + // SetOffset assigns uint32 provided by user to PatternFlowEthernetPfcQueueMetricTag + SetOffset(value uint32) PatternFlowEthernetPfcQueueMetricTag + // HasOffset checks if Offset has been set in PatternFlowEthernetPfcQueueMetricTag + HasOffset() bool + // Length returns uint32, set in PatternFlowEthernetPfcQueueMetricTag. + Length() uint32 + // SetLength assigns uint32 provided by user to PatternFlowEthernetPfcQueueMetricTag + SetLength(value uint32) PatternFlowEthernetPfcQueueMetricTag + // HasLength checks if Length has been set in PatternFlowEthernetPfcQueueMetricTag + HasLength() bool +} + +// Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field +// Name returns a string +func (obj *patternFlowEthernetPfcQueueMetricTag) Name() string { + + return *obj.obj.Name + +} + +// Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field +// SetName sets the string value in the PatternFlowEthernetPfcQueueMetricTag object +func (obj *patternFlowEthernetPfcQueueMetricTag) SetName(value string) PatternFlowEthernetPfcQueueMetricTag { + + obj.obj.Name = &value + return obj +} + +// Offset in bits relative to start of corresponding header field +// Offset returns a uint32 +func (obj *patternFlowEthernetPfcQueueMetricTag) Offset() uint32 { + + return *obj.obj.Offset + +} + +// Offset in bits relative to start of corresponding header field +// Offset returns a uint32 +func (obj *patternFlowEthernetPfcQueueMetricTag) HasOffset() bool { + return obj.obj.Offset != nil +} + +// Offset in bits relative to start of corresponding header field +// SetOffset sets the uint32 value in the PatternFlowEthernetPfcQueueMetricTag object +func (obj *patternFlowEthernetPfcQueueMetricTag) SetOffset(value uint32) PatternFlowEthernetPfcQueueMetricTag { + + obj.obj.Offset = &value + return obj +} + +// Number of bits to track for metrics starting from configured offset of corresponding header field +// Length returns a uint32 +func (obj *patternFlowEthernetPfcQueueMetricTag) Length() uint32 { + + return *obj.obj.Length + +} + +// Number of bits to track for metrics starting from configured offset of corresponding header field +// Length returns a uint32 +func (obj *patternFlowEthernetPfcQueueMetricTag) HasLength() bool { + return obj.obj.Length != nil +} + +// Number of bits to track for metrics starting from configured offset of corresponding header field +// SetLength sets the uint32 value in the PatternFlowEthernetPfcQueueMetricTag object +func (obj *patternFlowEthernetPfcQueueMetricTag) SetLength(value uint32) PatternFlowEthernetPfcQueueMetricTag { + + obj.obj.Length = &value + return obj +} + +func (obj *patternFlowEthernetPfcQueueMetricTag) validateObj(vObj *validation, set_default bool) { + if set_default { + obj.setDefault() + } + + // Name is required + if obj.obj.Name == nil { + vObj.validationErrors = append(vObj.validationErrors, "Name is required field on interface PatternFlowEthernetPfcQueueMetricTag") + } + + if obj.obj.Offset != nil { + + if *obj.obj.Offset > 2 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("0 <= PatternFlowEthernetPfcQueueMetricTag.Offset <= 2 but Got %d", *obj.obj.Offset)) + } + + } + + if obj.obj.Length != nil { + + if *obj.obj.Length < 1 || *obj.obj.Length > 3 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("1 <= PatternFlowEthernetPfcQueueMetricTag.Length <= 3 but Got %d", *obj.obj.Length)) + } + + } + +} + +func (obj *patternFlowEthernetPfcQueueMetricTag) setDefault() { + if obj.obj.Offset == nil { + obj.SetOffset(0) + } + if obj.obj.Length == nil { + obj.SetLength(3) + } + +} + +// ***** PatternFlowVlanPriorityCounter ***** +type patternFlowVlanPriorityCounter struct { + validation + obj *otg.PatternFlowVlanPriorityCounter +} + +func NewPatternFlowVlanPriorityCounter() PatternFlowVlanPriorityCounter { + obj := patternFlowVlanPriorityCounter{obj: &otg.PatternFlowVlanPriorityCounter{}} + obj.setDefault() + return &obj +} + +func (obj *patternFlowVlanPriorityCounter) Msg() *otg.PatternFlowVlanPriorityCounter { + return obj.obj +} + +func (obj *patternFlowVlanPriorityCounter) SetMsg(msg *otg.PatternFlowVlanPriorityCounter) PatternFlowVlanPriorityCounter { + + proto.Merge(obj.obj, msg) + return obj +} + +func (obj *patternFlowVlanPriorityCounter) ToProto() (*otg.PatternFlowVlanPriorityCounter, error) { + err := obj.validateToAndFrom() + if err != nil { + return nil, err + } + return obj.Msg(), nil +} + +func (obj *patternFlowVlanPriorityCounter) FromProto(msg *otg.PatternFlowVlanPriorityCounter) (PatternFlowVlanPriorityCounter, error) { + newObj := obj.SetMsg(msg) + err := newObj.validateToAndFrom() + if err != nil { + return nil, err + } + return newObj, nil +} + +func (obj *patternFlowVlanPriorityCounter) ToPbText() (string, error) { + vErr := obj.validateToAndFrom() + if vErr != nil { + return "", vErr + } + protoMarshal, err := proto.Marshal(obj.Msg()) + if err != nil { + return "", err + } + return string(protoMarshal), nil +} + +func (obj *patternFlowVlanPriorityCounter) FromPbText(value string) error { + retObj := proto.Unmarshal([]byte(value), obj.Msg()) + if retObj != nil { + return retObj + } + + vErr := obj.validateToAndFrom() + if vErr != nil { + return vErr + } + return retObj +} + +func (obj *patternFlowVlanPriorityCounter) ToYaml() (string, error) { + vErr := obj.validateToAndFrom() + if vErr != nil { + return "", vErr + } + opts := protojson.MarshalOptions{ + UseProtoNames: true, + AllowPartial: true, + EmitUnpopulated: false, + } + data, err := opts.Marshal(obj.Msg()) + if err != nil { + return "", err + } + data, err = yaml.JSONToYAML(data) + if err != nil { + return "", err + } + return string(data), nil +} + +func (obj *patternFlowVlanPriorityCounter) FromYaml(value string) error { + if value == "" { + value = "{}" + } + data, err := yaml.YAMLToJSON([]byte(value)) + if err != nil { + return err + } + opts := protojson.UnmarshalOptions{ + AllowPartial: true, + DiscardUnknown: false, + } + uError := opts.Unmarshal([]byte(data), obj.Msg()) + if uError != nil { + return fmt.Errorf("unmarshal error %s", strings.Replace( + uError.Error(), "\u00a0", " ", -1)[7:]) + } + + vErr := obj.validateToAndFrom() + if vErr != nil { + return vErr + } + return nil +} + +func (obj *patternFlowVlanPriorityCounter) ToJson() (string, error) { + vErr := obj.validateToAndFrom() + if vErr != nil { + return "", vErr + } + opts := protojson.MarshalOptions{ + UseProtoNames: true, + AllowPartial: true, + EmitUnpopulated: false, + Indent: " ", + } + data, err := opts.Marshal(obj.Msg()) + if err != nil { + return "", err + } + return string(data), nil +} + +func (obj *patternFlowVlanPriorityCounter) FromJson(value string) error { + opts := protojson.UnmarshalOptions{ + AllowPartial: true, + DiscardUnknown: false, + } + if value == "" { + value = "{}" + } + uError := opts.Unmarshal([]byte(value), obj.Msg()) + if uError != nil { + return fmt.Errorf("unmarshal error %s", strings.Replace( + uError.Error(), "\u00a0", " ", -1)[7:]) + } + + err := obj.validateToAndFrom() + if err != nil { + return err + } + return nil +} + +func (obj *patternFlowVlanPriorityCounter) validateToAndFrom() error { + // emptyVars() + obj.validateObj(&obj.validation, true) + return obj.validationResult() +} + +func (obj *patternFlowVlanPriorityCounter) Validate() error { + // emptyVars() + obj.validateObj(&obj.validation, false) + return obj.validationResult() +} + +func (obj *patternFlowVlanPriorityCounter) String() string { + str, err := obj.ToYaml() + if err != nil { + return err.Error() + } + return str +} + +func (obj *patternFlowVlanPriorityCounter) Clone() (PatternFlowVlanPriorityCounter, error) { + vErr := obj.Validate() + if vErr != nil { + return nil, vErr + } + newObj := NewPatternFlowVlanPriorityCounter() + data, err := proto.Marshal(obj.Msg()) + if err != nil { + return nil, err + } + pbErr := proto.Unmarshal(data, newObj.Msg()) + if pbErr != nil { + return nil, pbErr + } + return newObj, nil +} + +// PatternFlowVlanPriorityCounter is integer counter pattern +type PatternFlowVlanPriorityCounter interface { + Validation + // Msg marshals PatternFlowVlanPriorityCounter to protobuf object *otg.PatternFlowVlanPriorityCounter + // and doesn't set defaults + Msg() *otg.PatternFlowVlanPriorityCounter + // SetMsg unmarshals PatternFlowVlanPriorityCounter from protobuf object *otg.PatternFlowVlanPriorityCounter + // and doesn't set defaults + SetMsg(*otg.PatternFlowVlanPriorityCounter) PatternFlowVlanPriorityCounter + // ToProto marshals PatternFlowVlanPriorityCounter to protobuf object *otg.PatternFlowVlanPriorityCounter + ToProto() (*otg.PatternFlowVlanPriorityCounter, error) + // ToPbText marshals PatternFlowVlanPriorityCounter to protobuf text + ToPbText() (string, error) + // ToYaml marshals PatternFlowVlanPriorityCounter to YAML text + ToYaml() (string, error) + // ToJson marshals PatternFlowVlanPriorityCounter to JSON text + ToJson() (string, error) + // FromProto unmarshals PatternFlowVlanPriorityCounter from protobuf object *otg.PatternFlowVlanPriorityCounter + FromProto(msg *otg.PatternFlowVlanPriorityCounter) (PatternFlowVlanPriorityCounter, error) + // FromPbText unmarshals PatternFlowVlanPriorityCounter from protobuf text + FromPbText(value string) error + // FromYaml unmarshals PatternFlowVlanPriorityCounter from YAML text + FromYaml(value string) error + // FromJson unmarshals PatternFlowVlanPriorityCounter from JSON text + FromJson(value string) error + // Validate validates PatternFlowVlanPriorityCounter + Validate() error + // A stringer function + String() string + // Clones the object + Clone() (PatternFlowVlanPriorityCounter, error) + validateToAndFrom() error + validateObj(vObj *validation, set_default bool) + setDefault() + // Start returns uint32, set in PatternFlowVlanPriorityCounter. + Start() uint32 + // SetStart assigns uint32 provided by user to PatternFlowVlanPriorityCounter + SetStart(value uint32) PatternFlowVlanPriorityCounter + // HasStart checks if Start has been set in PatternFlowVlanPriorityCounter + HasStart() bool + // Step returns uint32, set in PatternFlowVlanPriorityCounter. + Step() uint32 + // SetStep assigns uint32 provided by user to PatternFlowVlanPriorityCounter + SetStep(value uint32) PatternFlowVlanPriorityCounter + // HasStep checks if Step has been set in PatternFlowVlanPriorityCounter + HasStep() bool + // Count returns uint32, set in PatternFlowVlanPriorityCounter. + Count() uint32 + // SetCount assigns uint32 provided by user to PatternFlowVlanPriorityCounter + SetCount(value uint32) PatternFlowVlanPriorityCounter + // HasCount checks if Count has been set in PatternFlowVlanPriorityCounter + HasCount() bool +} + +// description is TBD +// Start returns a uint32 +func (obj *patternFlowVlanPriorityCounter) Start() uint32 { + + return *obj.obj.Start + +} + +// description is TBD +// Start returns a uint32 +func (obj *patternFlowVlanPriorityCounter) HasStart() bool { + return obj.obj.Start != nil +} + +// description is TBD +// SetStart sets the uint32 value in the PatternFlowVlanPriorityCounter object +func (obj *patternFlowVlanPriorityCounter) SetStart(value uint32) PatternFlowVlanPriorityCounter { + + obj.obj.Start = &value + return obj +} + +// description is TBD +// Step returns a uint32 +func (obj *patternFlowVlanPriorityCounter) Step() uint32 { + + return *obj.obj.Step + +} + +// description is TBD +// Step returns a uint32 +func (obj *patternFlowVlanPriorityCounter) HasStep() bool { + return obj.obj.Step != nil +} + +// description is TBD +// SetStep sets the uint32 value in the PatternFlowVlanPriorityCounter object +func (obj *patternFlowVlanPriorityCounter) SetStep(value uint32) PatternFlowVlanPriorityCounter { + + obj.obj.Step = &value + return obj +} + +// description is TBD +// Count returns a uint32 +func (obj *patternFlowVlanPriorityCounter) Count() uint32 { + + return *obj.obj.Count + +} + +// description is TBD +// Count returns a uint32 +func (obj *patternFlowVlanPriorityCounter) HasCount() bool { + return obj.obj.Count != nil +} + +// description is TBD +// SetCount sets the uint32 value in the PatternFlowVlanPriorityCounter object +func (obj *patternFlowVlanPriorityCounter) SetCount(value uint32) PatternFlowVlanPriorityCounter { + + obj.obj.Count = &value + return obj +} + +func (obj *patternFlowVlanPriorityCounter) validateObj(vObj *validation, set_default bool) { + if set_default { + obj.setDefault() + } + + if obj.obj.Start != nil { + + if *obj.obj.Start > 7 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("0 <= PatternFlowVlanPriorityCounter.Start <= 7 but Got %d", *obj.obj.Start)) + } + + } + + if obj.obj.Step != nil { + + if *obj.obj.Step > 7 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("0 <= PatternFlowVlanPriorityCounter.Step <= 7 but Got %d", *obj.obj.Step)) + } + + } + + if obj.obj.Count != nil { + + if *obj.obj.Count > 7 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("0 <= PatternFlowVlanPriorityCounter.Count <= 7 but Got %d", *obj.obj.Count)) + } + + } + +} + +func (obj *patternFlowVlanPriorityCounter) setDefault() { + if obj.obj.Start == nil { + obj.SetStart(0) + } + if obj.obj.Step == nil { + obj.SetStep(1) + } + if obj.obj.Count == nil { + obj.SetCount(1) + } + +} + +// ***** PatternFlowVlanPriorityMetricTag ***** +type patternFlowVlanPriorityMetricTag struct { + validation + obj *otg.PatternFlowVlanPriorityMetricTag +} + +func NewPatternFlowVlanPriorityMetricTag() PatternFlowVlanPriorityMetricTag { + obj := patternFlowVlanPriorityMetricTag{obj: &otg.PatternFlowVlanPriorityMetricTag{}} + obj.setDefault() + return &obj +} + +func (obj *patternFlowVlanPriorityMetricTag) Msg() *otg.PatternFlowVlanPriorityMetricTag { + return obj.obj +} + +func (obj *patternFlowVlanPriorityMetricTag) SetMsg(msg *otg.PatternFlowVlanPriorityMetricTag) PatternFlowVlanPriorityMetricTag { + + proto.Merge(obj.obj, msg) + return obj +} + +func (obj *patternFlowVlanPriorityMetricTag) ToProto() (*otg.PatternFlowVlanPriorityMetricTag, error) { + err := obj.validateToAndFrom() + if err != nil { + return nil, err + } + return obj.Msg(), nil +} + +func (obj *patternFlowVlanPriorityMetricTag) FromProto(msg *otg.PatternFlowVlanPriorityMetricTag) (PatternFlowVlanPriorityMetricTag, error) { + newObj := obj.SetMsg(msg) + err := newObj.validateToAndFrom() + if err != nil { + return nil, err + } + return newObj, nil +} + +func (obj *patternFlowVlanPriorityMetricTag) ToPbText() (string, error) { + vErr := obj.validateToAndFrom() + if vErr != nil { + return "", vErr + } + protoMarshal, err := proto.Marshal(obj.Msg()) + if err != nil { + return "", err + } + return string(protoMarshal), nil +} + +func (obj *patternFlowVlanPriorityMetricTag) FromPbText(value string) error { + retObj := proto.Unmarshal([]byte(value), obj.Msg()) + if retObj != nil { + return retObj + } + + vErr := obj.validateToAndFrom() + if vErr != nil { + return vErr + } + return retObj +} + +func (obj *patternFlowVlanPriorityMetricTag) ToYaml() (string, error) { + vErr := obj.validateToAndFrom() + if vErr != nil { + return "", vErr + } + opts := protojson.MarshalOptions{ + UseProtoNames: true, + AllowPartial: true, + EmitUnpopulated: false, + } + data, err := opts.Marshal(obj.Msg()) + if err != nil { + return "", err + } + data, err = yaml.JSONToYAML(data) + if err != nil { + return "", err + } + return string(data), nil +} + +func (obj *patternFlowVlanPriorityMetricTag) FromYaml(value string) error { + if value == "" { + value = "{}" + } + data, err := yaml.YAMLToJSON([]byte(value)) + if err != nil { + return err + } + opts := protojson.UnmarshalOptions{ + AllowPartial: true, + DiscardUnknown: false, + } + uError := opts.Unmarshal([]byte(data), obj.Msg()) + if uError != nil { + return fmt.Errorf("unmarshal error %s", strings.Replace( + uError.Error(), "\u00a0", " ", -1)[7:]) + } + + vErr := obj.validateToAndFrom() + if vErr != nil { + return vErr + } + return nil +} + +func (obj *patternFlowVlanPriorityMetricTag) ToJson() (string, error) { + vErr := obj.validateToAndFrom() + if vErr != nil { + return "", vErr + } + opts := protojson.MarshalOptions{ + UseProtoNames: true, + AllowPartial: true, + EmitUnpopulated: false, + Indent: " ", + } + data, err := opts.Marshal(obj.Msg()) + if err != nil { + return "", err + } + return string(data), nil +} + +func (obj *patternFlowVlanPriorityMetricTag) FromJson(value string) error { + opts := protojson.UnmarshalOptions{ + AllowPartial: true, + DiscardUnknown: false, + } + if value == "" { + value = "{}" + } + uError := opts.Unmarshal([]byte(value), obj.Msg()) + if uError != nil { + return fmt.Errorf("unmarshal error %s", strings.Replace( + uError.Error(), "\u00a0", " ", -1)[7:]) + } + + err := obj.validateToAndFrom() + if err != nil { + return err + } + return nil +} + +func (obj *patternFlowVlanPriorityMetricTag) validateToAndFrom() error { + // emptyVars() + obj.validateObj(&obj.validation, true) + return obj.validationResult() +} + +func (obj *patternFlowVlanPriorityMetricTag) Validate() error { + // emptyVars() + obj.validateObj(&obj.validation, false) + return obj.validationResult() +} + +func (obj *patternFlowVlanPriorityMetricTag) String() string { + str, err := obj.ToYaml() + if err != nil { + return err.Error() + } + return str +} + +func (obj *patternFlowVlanPriorityMetricTag) Clone() (PatternFlowVlanPriorityMetricTag, error) { + vErr := obj.Validate() + if vErr != nil { + return nil, vErr + } + newObj := NewPatternFlowVlanPriorityMetricTag() + data, err := proto.Marshal(obj.Msg()) + if err != nil { + return nil, err + } + pbErr := proto.Unmarshal(data, newObj.Msg()) + if pbErr != nil { + return nil, pbErr + } + return newObj, nil +} + +// PatternFlowVlanPriorityMetricTag is metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. +type PatternFlowVlanPriorityMetricTag interface { + Validation + // Msg marshals PatternFlowVlanPriorityMetricTag to protobuf object *otg.PatternFlowVlanPriorityMetricTag + // and doesn't set defaults + Msg() *otg.PatternFlowVlanPriorityMetricTag + // SetMsg unmarshals PatternFlowVlanPriorityMetricTag from protobuf object *otg.PatternFlowVlanPriorityMetricTag + // and doesn't set defaults + SetMsg(*otg.PatternFlowVlanPriorityMetricTag) PatternFlowVlanPriorityMetricTag + // ToProto marshals PatternFlowVlanPriorityMetricTag to protobuf object *otg.PatternFlowVlanPriorityMetricTag + ToProto() (*otg.PatternFlowVlanPriorityMetricTag, error) + // ToPbText marshals PatternFlowVlanPriorityMetricTag to protobuf text + ToPbText() (string, error) + // ToYaml marshals PatternFlowVlanPriorityMetricTag to YAML text + ToYaml() (string, error) + // ToJson marshals PatternFlowVlanPriorityMetricTag to JSON text + ToJson() (string, error) + // FromProto unmarshals PatternFlowVlanPriorityMetricTag from protobuf object *otg.PatternFlowVlanPriorityMetricTag + FromProto(msg *otg.PatternFlowVlanPriorityMetricTag) (PatternFlowVlanPriorityMetricTag, error) + // FromPbText unmarshals PatternFlowVlanPriorityMetricTag from protobuf text + FromPbText(value string) error + // FromYaml unmarshals PatternFlowVlanPriorityMetricTag from YAML text + FromYaml(value string) error + // FromJson unmarshals PatternFlowVlanPriorityMetricTag from JSON text + FromJson(value string) error + // Validate validates PatternFlowVlanPriorityMetricTag + Validate() error + // A stringer function + String() string + // Clones the object + Clone() (PatternFlowVlanPriorityMetricTag, error) + validateToAndFrom() error + validateObj(vObj *validation, set_default bool) + setDefault() + // Name returns string, set in PatternFlowVlanPriorityMetricTag. + Name() string + // SetName assigns string provided by user to PatternFlowVlanPriorityMetricTag + SetName(value string) PatternFlowVlanPriorityMetricTag + // Offset returns uint32, set in PatternFlowVlanPriorityMetricTag. + Offset() uint32 + // SetOffset assigns uint32 provided by user to PatternFlowVlanPriorityMetricTag + SetOffset(value uint32) PatternFlowVlanPriorityMetricTag + // HasOffset checks if Offset has been set in PatternFlowVlanPriorityMetricTag + HasOffset() bool + // Length returns uint32, set in PatternFlowVlanPriorityMetricTag. + Length() uint32 + // SetLength assigns uint32 provided by user to PatternFlowVlanPriorityMetricTag + SetLength(value uint32) PatternFlowVlanPriorityMetricTag + // HasLength checks if Length has been set in PatternFlowVlanPriorityMetricTag + HasLength() bool +} + +// Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field +// Name returns a string +func (obj *patternFlowVlanPriorityMetricTag) Name() string { + + return *obj.obj.Name + +} + +// Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field +// SetName sets the string value in the PatternFlowVlanPriorityMetricTag object +func (obj *patternFlowVlanPriorityMetricTag) SetName(value string) PatternFlowVlanPriorityMetricTag { + + obj.obj.Name = &value + return obj +} + +// Offset in bits relative to start of corresponding header field +// Offset returns a uint32 +func (obj *patternFlowVlanPriorityMetricTag) Offset() uint32 { + + return *obj.obj.Offset + +} + +// Offset in bits relative to start of corresponding header field +// Offset returns a uint32 +func (obj *patternFlowVlanPriorityMetricTag) HasOffset() bool { + return obj.obj.Offset != nil +} + +// Offset in bits relative to start of corresponding header field +// SetOffset sets the uint32 value in the PatternFlowVlanPriorityMetricTag object +func (obj *patternFlowVlanPriorityMetricTag) SetOffset(value uint32) PatternFlowVlanPriorityMetricTag { + + obj.obj.Offset = &value + return obj +} + +// Number of bits to track for metrics starting from configured offset of corresponding header field +// Length returns a uint32 +func (obj *patternFlowVlanPriorityMetricTag) Length() uint32 { + + return *obj.obj.Length + +} + +// Number of bits to track for metrics starting from configured offset of corresponding header field +// Length returns a uint32 +func (obj *patternFlowVlanPriorityMetricTag) HasLength() bool { + return obj.obj.Length != nil +} + +// Number of bits to track for metrics starting from configured offset of corresponding header field +// SetLength sets the uint32 value in the PatternFlowVlanPriorityMetricTag object +func (obj *patternFlowVlanPriorityMetricTag) SetLength(value uint32) PatternFlowVlanPriorityMetricTag { + + obj.obj.Length = &value + return obj +} + +func (obj *patternFlowVlanPriorityMetricTag) validateObj(vObj *validation, set_default bool) { + if set_default { + obj.setDefault() + } + + // Name is required + if obj.obj.Name == nil { + vObj.validationErrors = append(vObj.validationErrors, "Name is required field on interface PatternFlowVlanPriorityMetricTag") + } + + if obj.obj.Offset != nil { + + if *obj.obj.Offset > 2 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("0 <= PatternFlowVlanPriorityMetricTag.Offset <= 2 but Got %d", *obj.obj.Offset)) + } + + } + + if obj.obj.Length != nil { + + if *obj.obj.Length < 1 || *obj.obj.Length > 3 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("1 <= PatternFlowVlanPriorityMetricTag.Length <= 3 but Got %d", *obj.obj.Length)) + } + + } + +} + +func (obj *patternFlowVlanPriorityMetricTag) setDefault() { + if obj.obj.Offset == nil { + obj.SetOffset(0) + } + if obj.obj.Length == nil { + obj.SetLength(3) + } + +} + +// ***** PatternFlowVlanCfiCounter ***** +type patternFlowVlanCfiCounter struct { + validation + obj *otg.PatternFlowVlanCfiCounter +} + +func NewPatternFlowVlanCfiCounter() PatternFlowVlanCfiCounter { + obj := patternFlowVlanCfiCounter{obj: &otg.PatternFlowVlanCfiCounter{}} + obj.setDefault() + return &obj +} + +func (obj *patternFlowVlanCfiCounter) Msg() *otg.PatternFlowVlanCfiCounter { + return obj.obj +} + +func (obj *patternFlowVlanCfiCounter) SetMsg(msg *otg.PatternFlowVlanCfiCounter) PatternFlowVlanCfiCounter { + + proto.Merge(obj.obj, msg) + return obj +} + +func (obj *patternFlowVlanCfiCounter) ToProto() (*otg.PatternFlowVlanCfiCounter, error) { + err := obj.validateToAndFrom() + if err != nil { + return nil, err + } + return obj.Msg(), nil +} + +func (obj *patternFlowVlanCfiCounter) FromProto(msg *otg.PatternFlowVlanCfiCounter) (PatternFlowVlanCfiCounter, error) { + newObj := obj.SetMsg(msg) + err := newObj.validateToAndFrom() + if err != nil { + return nil, err + } + return newObj, nil +} + +func (obj *patternFlowVlanCfiCounter) ToPbText() (string, error) { + vErr := obj.validateToAndFrom() + if vErr != nil { + return "", vErr + } + protoMarshal, err := proto.Marshal(obj.Msg()) + if err != nil { + return "", err + } + return string(protoMarshal), nil +} + +func (obj *patternFlowVlanCfiCounter) FromPbText(value string) error { + retObj := proto.Unmarshal([]byte(value), obj.Msg()) + if retObj != nil { + return retObj + } + + vErr := obj.validateToAndFrom() + if vErr != nil { + return vErr + } + return retObj +} + +func (obj *patternFlowVlanCfiCounter) ToYaml() (string, error) { + vErr := obj.validateToAndFrom() + if vErr != nil { + return "", vErr + } + opts := protojson.MarshalOptions{ + UseProtoNames: true, + AllowPartial: true, + EmitUnpopulated: false, + } + data, err := opts.Marshal(obj.Msg()) + if err != nil { + return "", err + } + data, err = yaml.JSONToYAML(data) + if err != nil { + return "", err + } + return string(data), nil +} + +func (obj *patternFlowVlanCfiCounter) FromYaml(value string) error { + if value == "" { + value = "{}" + } + data, err := yaml.YAMLToJSON([]byte(value)) + if err != nil { + return err + } + opts := protojson.UnmarshalOptions{ + AllowPartial: true, + DiscardUnknown: false, + } + uError := opts.Unmarshal([]byte(data), obj.Msg()) + if uError != nil { + return fmt.Errorf("unmarshal error %s", strings.Replace( + uError.Error(), "\u00a0", " ", -1)[7:]) + } + + vErr := obj.validateToAndFrom() + if vErr != nil { + return vErr + } + return nil +} + +func (obj *patternFlowVlanCfiCounter) ToJson() (string, error) { + vErr := obj.validateToAndFrom() + if vErr != nil { + return "", vErr + } + opts := protojson.MarshalOptions{ + UseProtoNames: true, + AllowPartial: true, + EmitUnpopulated: false, + Indent: " ", + } + data, err := opts.Marshal(obj.Msg()) + if err != nil { + return "", err + } + return string(data), nil +} + +func (obj *patternFlowVlanCfiCounter) FromJson(value string) error { + opts := protojson.UnmarshalOptions{ + AllowPartial: true, + DiscardUnknown: false, + } + if value == "" { + value = "{}" + } + uError := opts.Unmarshal([]byte(value), obj.Msg()) + if uError != nil { + return fmt.Errorf("unmarshal error %s", strings.Replace( + uError.Error(), "\u00a0", " ", -1)[7:]) + } + + err := obj.validateToAndFrom() + if err != nil { + return err + } + return nil +} + +func (obj *patternFlowVlanCfiCounter) validateToAndFrom() error { + // emptyVars() + obj.validateObj(&obj.validation, true) + return obj.validationResult() +} + +func (obj *patternFlowVlanCfiCounter) Validate() error { + // emptyVars() + obj.validateObj(&obj.validation, false) + return obj.validationResult() +} + +func (obj *patternFlowVlanCfiCounter) String() string { + str, err := obj.ToYaml() + if err != nil { + return err.Error() + } + return str +} + +func (obj *patternFlowVlanCfiCounter) Clone() (PatternFlowVlanCfiCounter, error) { + vErr := obj.Validate() + if vErr != nil { + return nil, vErr + } + newObj := NewPatternFlowVlanCfiCounter() + data, err := proto.Marshal(obj.Msg()) + if err != nil { + return nil, err + } + pbErr := proto.Unmarshal(data, newObj.Msg()) + if pbErr != nil { + return nil, pbErr + } + return newObj, nil +} + +// PatternFlowVlanCfiCounter is integer counter pattern +type PatternFlowVlanCfiCounter interface { + Validation + // Msg marshals PatternFlowVlanCfiCounter to protobuf object *otg.PatternFlowVlanCfiCounter + // and doesn't set defaults + Msg() *otg.PatternFlowVlanCfiCounter + // SetMsg unmarshals PatternFlowVlanCfiCounter from protobuf object *otg.PatternFlowVlanCfiCounter + // and doesn't set defaults + SetMsg(*otg.PatternFlowVlanCfiCounter) PatternFlowVlanCfiCounter + // ToProto marshals PatternFlowVlanCfiCounter to protobuf object *otg.PatternFlowVlanCfiCounter + ToProto() (*otg.PatternFlowVlanCfiCounter, error) + // ToPbText marshals PatternFlowVlanCfiCounter to protobuf text + ToPbText() (string, error) + // ToYaml marshals PatternFlowVlanCfiCounter to YAML text + ToYaml() (string, error) + // ToJson marshals PatternFlowVlanCfiCounter to JSON text + ToJson() (string, error) + // FromProto unmarshals PatternFlowVlanCfiCounter from protobuf object *otg.PatternFlowVlanCfiCounter + FromProto(msg *otg.PatternFlowVlanCfiCounter) (PatternFlowVlanCfiCounter, error) + // FromPbText unmarshals PatternFlowVlanCfiCounter from protobuf text + FromPbText(value string) error + // FromYaml unmarshals PatternFlowVlanCfiCounter from YAML text + FromYaml(value string) error + // FromJson unmarshals PatternFlowVlanCfiCounter from JSON text + FromJson(value string) error + // Validate validates PatternFlowVlanCfiCounter + Validate() error + // A stringer function + String() string + // Clones the object + Clone() (PatternFlowVlanCfiCounter, error) + validateToAndFrom() error + validateObj(vObj *validation, set_default bool) + setDefault() + // Start returns uint32, set in PatternFlowVlanCfiCounter. + Start() uint32 + // SetStart assigns uint32 provided by user to PatternFlowVlanCfiCounter + SetStart(value uint32) PatternFlowVlanCfiCounter + // HasStart checks if Start has been set in PatternFlowVlanCfiCounter + HasStart() bool + // Step returns uint32, set in PatternFlowVlanCfiCounter. + Step() uint32 + // SetStep assigns uint32 provided by user to PatternFlowVlanCfiCounter + SetStep(value uint32) PatternFlowVlanCfiCounter + // HasStep checks if Step has been set in PatternFlowVlanCfiCounter + HasStep() bool + // Count returns uint32, set in PatternFlowVlanCfiCounter. + Count() uint32 + // SetCount assigns uint32 provided by user to PatternFlowVlanCfiCounter + SetCount(value uint32) PatternFlowVlanCfiCounter + // HasCount checks if Count has been set in PatternFlowVlanCfiCounter + HasCount() bool +} + +// description is TBD +// Start returns a uint32 +func (obj *patternFlowVlanCfiCounter) Start() uint32 { + + return *obj.obj.Start + +} + +// description is TBD +// Start returns a uint32 +func (obj *patternFlowVlanCfiCounter) HasStart() bool { + return obj.obj.Start != nil +} + +// description is TBD +// SetStart sets the uint32 value in the PatternFlowVlanCfiCounter object +func (obj *patternFlowVlanCfiCounter) SetStart(value uint32) PatternFlowVlanCfiCounter { + + obj.obj.Start = &value + return obj +} + +// description is TBD +// Step returns a uint32 +func (obj *patternFlowVlanCfiCounter) Step() uint32 { + + return *obj.obj.Step + +} + +// description is TBD +// Step returns a uint32 +func (obj *patternFlowVlanCfiCounter) HasStep() bool { + return obj.obj.Step != nil +} + +// description is TBD +// SetStep sets the uint32 value in the PatternFlowVlanCfiCounter object +func (obj *patternFlowVlanCfiCounter) SetStep(value uint32) PatternFlowVlanCfiCounter { + + obj.obj.Step = &value + return obj +} + +// description is TBD +// Count returns a uint32 +func (obj *patternFlowVlanCfiCounter) Count() uint32 { + + return *obj.obj.Count + +} + +// description is TBD +// Count returns a uint32 +func (obj *patternFlowVlanCfiCounter) HasCount() bool { + return obj.obj.Count != nil +} + +// description is TBD +// SetCount sets the uint32 value in the PatternFlowVlanCfiCounter object +func (obj *patternFlowVlanCfiCounter) SetCount(value uint32) PatternFlowVlanCfiCounter { + + obj.obj.Count = &value + return obj +} + +func (obj *patternFlowVlanCfiCounter) validateObj(vObj *validation, set_default bool) { + if set_default { + obj.setDefault() + } + + if obj.obj.Start != nil { + + if *obj.obj.Start > 1 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("0 <= PatternFlowVlanCfiCounter.Start <= 1 but Got %d", *obj.obj.Start)) + } + + } + + if obj.obj.Step != nil { + + if *obj.obj.Step > 1 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("0 <= PatternFlowVlanCfiCounter.Step <= 1 but Got %d", *obj.obj.Step)) + } + + } + + if obj.obj.Count != nil { + + if *obj.obj.Count > 1 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("0 <= PatternFlowVlanCfiCounter.Count <= 1 but Got %d", *obj.obj.Count)) + } + + } + +} + +func (obj *patternFlowVlanCfiCounter) setDefault() { + if obj.obj.Start == nil { + obj.SetStart(0) + } + if obj.obj.Step == nil { + obj.SetStep(1) + } + if obj.obj.Count == nil { + obj.SetCount(1) + } + +} + +// ***** PatternFlowVlanCfiMetricTag ***** +type patternFlowVlanCfiMetricTag struct { + validation + obj *otg.PatternFlowVlanCfiMetricTag +} + +func NewPatternFlowVlanCfiMetricTag() PatternFlowVlanCfiMetricTag { + obj := patternFlowVlanCfiMetricTag{obj: &otg.PatternFlowVlanCfiMetricTag{}} + obj.setDefault() + return &obj +} + +func (obj *patternFlowVlanCfiMetricTag) Msg() *otg.PatternFlowVlanCfiMetricTag { + return obj.obj +} + +func (obj *patternFlowVlanCfiMetricTag) SetMsg(msg *otg.PatternFlowVlanCfiMetricTag) PatternFlowVlanCfiMetricTag { + + proto.Merge(obj.obj, msg) + return obj +} + +func (obj *patternFlowVlanCfiMetricTag) ToProto() (*otg.PatternFlowVlanCfiMetricTag, error) { + err := obj.validateToAndFrom() + if err != nil { + return nil, err + } + return obj.Msg(), nil +} + +func (obj *patternFlowVlanCfiMetricTag) FromProto(msg *otg.PatternFlowVlanCfiMetricTag) (PatternFlowVlanCfiMetricTag, error) { + newObj := obj.SetMsg(msg) + err := newObj.validateToAndFrom() + if err != nil { + return nil, err + } + return newObj, nil +} + +func (obj *patternFlowVlanCfiMetricTag) ToPbText() (string, error) { + vErr := obj.validateToAndFrom() + if vErr != nil { + return "", vErr + } + protoMarshal, err := proto.Marshal(obj.Msg()) + if err != nil { + return "", err + } + return string(protoMarshal), nil +} + +func (obj *patternFlowVlanCfiMetricTag) FromPbText(value string) error { + retObj := proto.Unmarshal([]byte(value), obj.Msg()) + if retObj != nil { + return retObj + } + + vErr := obj.validateToAndFrom() + if vErr != nil { + return vErr + } + return retObj +} + +func (obj *patternFlowVlanCfiMetricTag) ToYaml() (string, error) { + vErr := obj.validateToAndFrom() + if vErr != nil { + return "", vErr + } + opts := protojson.MarshalOptions{ + UseProtoNames: true, + AllowPartial: true, + EmitUnpopulated: false, + } + data, err := opts.Marshal(obj.Msg()) + if err != nil { + return "", err + } + data, err = yaml.JSONToYAML(data) + if err != nil { + return "", err + } + return string(data), nil +} + +func (obj *patternFlowVlanCfiMetricTag) FromYaml(value string) error { + if value == "" { + value = "{}" + } + data, err := yaml.YAMLToJSON([]byte(value)) + if err != nil { + return err + } + opts := protojson.UnmarshalOptions{ + AllowPartial: true, + DiscardUnknown: false, + } + uError := opts.Unmarshal([]byte(data), obj.Msg()) + if uError != nil { + return fmt.Errorf("unmarshal error %s", strings.Replace( + uError.Error(), "\u00a0", " ", -1)[7:]) + } + + vErr := obj.validateToAndFrom() + if vErr != nil { + return vErr + } + return nil +} + +func (obj *patternFlowVlanCfiMetricTag) ToJson() (string, error) { + vErr := obj.validateToAndFrom() + if vErr != nil { + return "", vErr + } + opts := protojson.MarshalOptions{ + UseProtoNames: true, + AllowPartial: true, + EmitUnpopulated: false, + Indent: " ", + } + data, err := opts.Marshal(obj.Msg()) + if err != nil { + return "", err + } + return string(data), nil +} + +func (obj *patternFlowVlanCfiMetricTag) FromJson(value string) error { + opts := protojson.UnmarshalOptions{ + AllowPartial: true, + DiscardUnknown: false, + } + if value == "" { + value = "{}" + } + uError := opts.Unmarshal([]byte(value), obj.Msg()) + if uError != nil { + return fmt.Errorf("unmarshal error %s", strings.Replace( + uError.Error(), "\u00a0", " ", -1)[7:]) + } + + err := obj.validateToAndFrom() + if err != nil { + return err + } + return nil +} + +func (obj *patternFlowVlanCfiMetricTag) validateToAndFrom() error { + // emptyVars() + obj.validateObj(&obj.validation, true) + return obj.validationResult() +} + +func (obj *patternFlowVlanCfiMetricTag) Validate() error { + // emptyVars() + obj.validateObj(&obj.validation, false) + return obj.validationResult() +} + +func (obj *patternFlowVlanCfiMetricTag) String() string { + str, err := obj.ToYaml() + if err != nil { + return err.Error() + } + return str +} + +func (obj *patternFlowVlanCfiMetricTag) Clone() (PatternFlowVlanCfiMetricTag, error) { + vErr := obj.Validate() + if vErr != nil { + return nil, vErr + } + newObj := NewPatternFlowVlanCfiMetricTag() + data, err := proto.Marshal(obj.Msg()) + if err != nil { + return nil, err + } + pbErr := proto.Unmarshal(data, newObj.Msg()) + if pbErr != nil { + return nil, pbErr + } + return newObj, nil +} + +// PatternFlowVlanCfiMetricTag is metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. +type PatternFlowVlanCfiMetricTag interface { + Validation + // Msg marshals PatternFlowVlanCfiMetricTag to protobuf object *otg.PatternFlowVlanCfiMetricTag + // and doesn't set defaults + Msg() *otg.PatternFlowVlanCfiMetricTag + // SetMsg unmarshals PatternFlowVlanCfiMetricTag from protobuf object *otg.PatternFlowVlanCfiMetricTag + // and doesn't set defaults + SetMsg(*otg.PatternFlowVlanCfiMetricTag) PatternFlowVlanCfiMetricTag + // ToProto marshals PatternFlowVlanCfiMetricTag to protobuf object *otg.PatternFlowVlanCfiMetricTag + ToProto() (*otg.PatternFlowVlanCfiMetricTag, error) + // ToPbText marshals PatternFlowVlanCfiMetricTag to protobuf text + ToPbText() (string, error) + // ToYaml marshals PatternFlowVlanCfiMetricTag to YAML text + ToYaml() (string, error) + // ToJson marshals PatternFlowVlanCfiMetricTag to JSON text + ToJson() (string, error) + // FromProto unmarshals PatternFlowVlanCfiMetricTag from protobuf object *otg.PatternFlowVlanCfiMetricTag + FromProto(msg *otg.PatternFlowVlanCfiMetricTag) (PatternFlowVlanCfiMetricTag, error) + // FromPbText unmarshals PatternFlowVlanCfiMetricTag from protobuf text + FromPbText(value string) error + // FromYaml unmarshals PatternFlowVlanCfiMetricTag from YAML text + FromYaml(value string) error + // FromJson unmarshals PatternFlowVlanCfiMetricTag from JSON text + FromJson(value string) error + // Validate validates PatternFlowVlanCfiMetricTag + Validate() error + // A stringer function + String() string + // Clones the object + Clone() (PatternFlowVlanCfiMetricTag, error) + validateToAndFrom() error + validateObj(vObj *validation, set_default bool) + setDefault() + // Name returns string, set in PatternFlowVlanCfiMetricTag. + Name() string + // SetName assigns string provided by user to PatternFlowVlanCfiMetricTag + SetName(value string) PatternFlowVlanCfiMetricTag + // Offset returns uint32, set in PatternFlowVlanCfiMetricTag. + Offset() uint32 + // SetOffset assigns uint32 provided by user to PatternFlowVlanCfiMetricTag + SetOffset(value uint32) PatternFlowVlanCfiMetricTag + // HasOffset checks if Offset has been set in PatternFlowVlanCfiMetricTag + HasOffset() bool + // Length returns uint32, set in PatternFlowVlanCfiMetricTag. + Length() uint32 + // SetLength assigns uint32 provided by user to PatternFlowVlanCfiMetricTag + SetLength(value uint32) PatternFlowVlanCfiMetricTag + // HasLength checks if Length has been set in PatternFlowVlanCfiMetricTag + HasLength() bool +} + +// Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field +// Name returns a string +func (obj *patternFlowVlanCfiMetricTag) Name() string { + + return *obj.obj.Name + +} + +// Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field +// SetName sets the string value in the PatternFlowVlanCfiMetricTag object +func (obj *patternFlowVlanCfiMetricTag) SetName(value string) PatternFlowVlanCfiMetricTag { + + obj.obj.Name = &value + return obj +} + +// Offset in bits relative to start of corresponding header field +// Offset returns a uint32 +func (obj *patternFlowVlanCfiMetricTag) Offset() uint32 { + + return *obj.obj.Offset + +} + +// Offset in bits relative to start of corresponding header field +// Offset returns a uint32 +func (obj *patternFlowVlanCfiMetricTag) HasOffset() bool { + return obj.obj.Offset != nil +} + +// Offset in bits relative to start of corresponding header field +// SetOffset sets the uint32 value in the PatternFlowVlanCfiMetricTag object +func (obj *patternFlowVlanCfiMetricTag) SetOffset(value uint32) PatternFlowVlanCfiMetricTag { + + obj.obj.Offset = &value + return obj +} + +// Number of bits to track for metrics starting from configured offset of corresponding header field +// Length returns a uint32 +func (obj *patternFlowVlanCfiMetricTag) Length() uint32 { + + return *obj.obj.Length + +} + +// Number of bits to track for metrics starting from configured offset of corresponding header field +// Length returns a uint32 +func (obj *patternFlowVlanCfiMetricTag) HasLength() bool { + return obj.obj.Length != nil +} + +// Number of bits to track for metrics starting from configured offset of corresponding header field +// SetLength sets the uint32 value in the PatternFlowVlanCfiMetricTag object +func (obj *patternFlowVlanCfiMetricTag) SetLength(value uint32) PatternFlowVlanCfiMetricTag { + + obj.obj.Length = &value + return obj +} + +func (obj *patternFlowVlanCfiMetricTag) validateObj(vObj *validation, set_default bool) { + if set_default { + obj.setDefault() + } + + // Name is required + if obj.obj.Name == nil { + vObj.validationErrors = append(vObj.validationErrors, "Name is required field on interface PatternFlowVlanCfiMetricTag") + } + + if obj.obj.Offset != nil { + + if *obj.obj.Offset > 0 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("0 <= PatternFlowVlanCfiMetricTag.Offset <= 0 but Got %d", *obj.obj.Offset)) + } + + } + + if obj.obj.Length != nil { + + if *obj.obj.Length < 1 || *obj.obj.Length > 1 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("1 <= PatternFlowVlanCfiMetricTag.Length <= 1 but Got %d", *obj.obj.Length)) + } + + } + +} + +func (obj *patternFlowVlanCfiMetricTag) setDefault() { + if obj.obj.Offset == nil { + obj.SetOffset(0) + } + if obj.obj.Length == nil { + obj.SetLength(1) + } + +} + +// ***** PatternFlowVlanIdCounter ***** +type patternFlowVlanIdCounter struct { + validation + obj *otg.PatternFlowVlanIdCounter +} + +func NewPatternFlowVlanIdCounter() PatternFlowVlanIdCounter { + obj := patternFlowVlanIdCounter{obj: &otg.PatternFlowVlanIdCounter{}} + obj.setDefault() + return &obj +} + +func (obj *patternFlowVlanIdCounter) Msg() *otg.PatternFlowVlanIdCounter { + return obj.obj +} + +func (obj *patternFlowVlanIdCounter) SetMsg(msg *otg.PatternFlowVlanIdCounter) PatternFlowVlanIdCounter { + + proto.Merge(obj.obj, msg) + return obj +} + +func (obj *patternFlowVlanIdCounter) ToProto() (*otg.PatternFlowVlanIdCounter, error) { + err := obj.validateToAndFrom() + if err != nil { + return nil, err + } + return obj.Msg(), nil +} + +func (obj *patternFlowVlanIdCounter) FromProto(msg *otg.PatternFlowVlanIdCounter) (PatternFlowVlanIdCounter, error) { + newObj := obj.SetMsg(msg) + err := newObj.validateToAndFrom() + if err != nil { + return nil, err + } + return newObj, nil +} + +func (obj *patternFlowVlanIdCounter) ToPbText() (string, error) { + vErr := obj.validateToAndFrom() + if vErr != nil { + return "", vErr + } + protoMarshal, err := proto.Marshal(obj.Msg()) + if err != nil { + return "", err + } + return string(protoMarshal), nil +} + +func (obj *patternFlowVlanIdCounter) FromPbText(value string) error { + retObj := proto.Unmarshal([]byte(value), obj.Msg()) + if retObj != nil { + return retObj + } + + vErr := obj.validateToAndFrom() + if vErr != nil { + return vErr + } + return retObj +} + +func (obj *patternFlowVlanIdCounter) ToYaml() (string, error) { + vErr := obj.validateToAndFrom() + if vErr != nil { + return "", vErr + } + opts := protojson.MarshalOptions{ + UseProtoNames: true, + AllowPartial: true, + EmitUnpopulated: false, + } + data, err := opts.Marshal(obj.Msg()) + if err != nil { + return "", err + } + data, err = yaml.JSONToYAML(data) + if err != nil { + return "", err + } + return string(data), nil +} + +func (obj *patternFlowVlanIdCounter) FromYaml(value string) error { + if value == "" { + value = "{}" + } + data, err := yaml.YAMLToJSON([]byte(value)) + if err != nil { + return err + } + opts := protojson.UnmarshalOptions{ + AllowPartial: true, + DiscardUnknown: false, + } + uError := opts.Unmarshal([]byte(data), obj.Msg()) + if uError != nil { + return fmt.Errorf("unmarshal error %s", strings.Replace( + uError.Error(), "\u00a0", " ", -1)[7:]) + } + + vErr := obj.validateToAndFrom() + if vErr != nil { + return vErr + } + return nil +} + +func (obj *patternFlowVlanIdCounter) ToJson() (string, error) { + vErr := obj.validateToAndFrom() + if vErr != nil { + return "", vErr + } + opts := protojson.MarshalOptions{ + UseProtoNames: true, + AllowPartial: true, + EmitUnpopulated: false, + Indent: " ", + } + data, err := opts.Marshal(obj.Msg()) + if err != nil { + return "", err + } + return string(data), nil +} + +func (obj *patternFlowVlanIdCounter) FromJson(value string) error { + opts := protojson.UnmarshalOptions{ + AllowPartial: true, + DiscardUnknown: false, + } + if value == "" { + value = "{}" + } + uError := opts.Unmarshal([]byte(value), obj.Msg()) + if uError != nil { + return fmt.Errorf("unmarshal error %s", strings.Replace( + uError.Error(), "\u00a0", " ", -1)[7:]) + } + + err := obj.validateToAndFrom() + if err != nil { + return err + } + return nil +} + +func (obj *patternFlowVlanIdCounter) validateToAndFrom() error { + // emptyVars() + obj.validateObj(&obj.validation, true) + return obj.validationResult() +} + +func (obj *patternFlowVlanIdCounter) Validate() error { + // emptyVars() + obj.validateObj(&obj.validation, false) + return obj.validationResult() +} + +func (obj *patternFlowVlanIdCounter) String() string { + str, err := obj.ToYaml() + if err != nil { + return err.Error() + } + return str +} + +func (obj *patternFlowVlanIdCounter) Clone() (PatternFlowVlanIdCounter, error) { + vErr := obj.Validate() + if vErr != nil { + return nil, vErr + } + newObj := NewPatternFlowVlanIdCounter() + data, err := proto.Marshal(obj.Msg()) + if err != nil { + return nil, err + } + pbErr := proto.Unmarshal(data, newObj.Msg()) + if pbErr != nil { + return nil, pbErr + } + return newObj, nil +} + +// PatternFlowVlanIdCounter is integer counter pattern +type PatternFlowVlanIdCounter interface { + Validation + // Msg marshals PatternFlowVlanIdCounter to protobuf object *otg.PatternFlowVlanIdCounter + // and doesn't set defaults + Msg() *otg.PatternFlowVlanIdCounter + // SetMsg unmarshals PatternFlowVlanIdCounter from protobuf object *otg.PatternFlowVlanIdCounter + // and doesn't set defaults + SetMsg(*otg.PatternFlowVlanIdCounter) PatternFlowVlanIdCounter + // ToProto marshals PatternFlowVlanIdCounter to protobuf object *otg.PatternFlowVlanIdCounter + ToProto() (*otg.PatternFlowVlanIdCounter, error) + // ToPbText marshals PatternFlowVlanIdCounter to protobuf text + ToPbText() (string, error) + // ToYaml marshals PatternFlowVlanIdCounter to YAML text + ToYaml() (string, error) + // ToJson marshals PatternFlowVlanIdCounter to JSON text + ToJson() (string, error) + // FromProto unmarshals PatternFlowVlanIdCounter from protobuf object *otg.PatternFlowVlanIdCounter + FromProto(msg *otg.PatternFlowVlanIdCounter) (PatternFlowVlanIdCounter, error) + // FromPbText unmarshals PatternFlowVlanIdCounter from protobuf text + FromPbText(value string) error + // FromYaml unmarshals PatternFlowVlanIdCounter from YAML text + FromYaml(value string) error + // FromJson unmarshals PatternFlowVlanIdCounter from JSON text + FromJson(value string) error + // Validate validates PatternFlowVlanIdCounter + Validate() error + // A stringer function + String() string + // Clones the object + Clone() (PatternFlowVlanIdCounter, error) + validateToAndFrom() error + validateObj(vObj *validation, set_default bool) + setDefault() + // Start returns uint32, set in PatternFlowVlanIdCounter. + Start() uint32 + // SetStart assigns uint32 provided by user to PatternFlowVlanIdCounter + SetStart(value uint32) PatternFlowVlanIdCounter + // HasStart checks if Start has been set in PatternFlowVlanIdCounter + HasStart() bool + // Step returns uint32, set in PatternFlowVlanIdCounter. + Step() uint32 + // SetStep assigns uint32 provided by user to PatternFlowVlanIdCounter + SetStep(value uint32) PatternFlowVlanIdCounter + // HasStep checks if Step has been set in PatternFlowVlanIdCounter + HasStep() bool + // Count returns uint32, set in PatternFlowVlanIdCounter. + Count() uint32 + // SetCount assigns uint32 provided by user to PatternFlowVlanIdCounter + SetCount(value uint32) PatternFlowVlanIdCounter + // HasCount checks if Count has been set in PatternFlowVlanIdCounter + HasCount() bool +} + +// description is TBD +// Start returns a uint32 +func (obj *patternFlowVlanIdCounter) Start() uint32 { + + return *obj.obj.Start + +} + +// description is TBD +// Start returns a uint32 +func (obj *patternFlowVlanIdCounter) HasStart() bool { + return obj.obj.Start != nil +} + +// description is TBD +// SetStart sets the uint32 value in the PatternFlowVlanIdCounter object +func (obj *patternFlowVlanIdCounter) SetStart(value uint32) PatternFlowVlanIdCounter { + + obj.obj.Start = &value + return obj +} + +// description is TBD +// Step returns a uint32 +func (obj *patternFlowVlanIdCounter) Step() uint32 { + + return *obj.obj.Step + +} + +// description is TBD +// Step returns a uint32 +func (obj *patternFlowVlanIdCounter) HasStep() bool { + return obj.obj.Step != nil +} + +// description is TBD +// SetStep sets the uint32 value in the PatternFlowVlanIdCounter object +func (obj *patternFlowVlanIdCounter) SetStep(value uint32) PatternFlowVlanIdCounter { + + obj.obj.Step = &value + return obj +} + +// description is TBD +// Count returns a uint32 +func (obj *patternFlowVlanIdCounter) Count() uint32 { + + return *obj.obj.Count + +} + +// description is TBD +// Count returns a uint32 +func (obj *patternFlowVlanIdCounter) HasCount() bool { + return obj.obj.Count != nil +} + +// description is TBD +// SetCount sets the uint32 value in the PatternFlowVlanIdCounter object +func (obj *patternFlowVlanIdCounter) SetCount(value uint32) PatternFlowVlanIdCounter { + + obj.obj.Count = &value + return obj +} + +func (obj *patternFlowVlanIdCounter) validateObj(vObj *validation, set_default bool) { + if set_default { + obj.setDefault() + } + + if obj.obj.Start != nil { + + if *obj.obj.Start > 4095 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("0 <= PatternFlowVlanIdCounter.Start <= 4095 but Got %d", *obj.obj.Start)) + } + + } + + if obj.obj.Step != nil { + + if *obj.obj.Step > 4095 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("0 <= PatternFlowVlanIdCounter.Step <= 4095 but Got %d", *obj.obj.Step)) + } + + } + + if obj.obj.Count != nil { + + if *obj.obj.Count > 4095 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("0 <= PatternFlowVlanIdCounter.Count <= 4095 but Got %d", *obj.obj.Count)) + } + + } + +} + +func (obj *patternFlowVlanIdCounter) setDefault() { + if obj.obj.Start == nil { + obj.SetStart(0) + } + if obj.obj.Step == nil { + obj.SetStep(1) + } + if obj.obj.Count == nil { + obj.SetCount(1) + } + +} + +// ***** PatternFlowVlanIdMetricTag ***** +type patternFlowVlanIdMetricTag struct { + validation + obj *otg.PatternFlowVlanIdMetricTag +} + +func NewPatternFlowVlanIdMetricTag() PatternFlowVlanIdMetricTag { + obj := patternFlowVlanIdMetricTag{obj: &otg.PatternFlowVlanIdMetricTag{}} + obj.setDefault() + return &obj +} + +func (obj *patternFlowVlanIdMetricTag) Msg() *otg.PatternFlowVlanIdMetricTag { + return obj.obj +} + +func (obj *patternFlowVlanIdMetricTag) SetMsg(msg *otg.PatternFlowVlanIdMetricTag) PatternFlowVlanIdMetricTag { + + proto.Merge(obj.obj, msg) + return obj +} + +func (obj *patternFlowVlanIdMetricTag) ToProto() (*otg.PatternFlowVlanIdMetricTag, error) { + err := obj.validateToAndFrom() + if err != nil { + return nil, err + } + return obj.Msg(), nil +} + +func (obj *patternFlowVlanIdMetricTag) FromProto(msg *otg.PatternFlowVlanIdMetricTag) (PatternFlowVlanIdMetricTag, error) { + newObj := obj.SetMsg(msg) + err := newObj.validateToAndFrom() + if err != nil { + return nil, err + } + return newObj, nil +} + +func (obj *patternFlowVlanIdMetricTag) ToPbText() (string, error) { + vErr := obj.validateToAndFrom() + if vErr != nil { + return "", vErr + } + protoMarshal, err := proto.Marshal(obj.Msg()) + if err != nil { + return "", err + } + return string(protoMarshal), nil +} + +func (obj *patternFlowVlanIdMetricTag) FromPbText(value string) error { + retObj := proto.Unmarshal([]byte(value), obj.Msg()) + if retObj != nil { + return retObj + } + + vErr := obj.validateToAndFrom() + if vErr != nil { + return vErr + } + return retObj +} + +func (obj *patternFlowVlanIdMetricTag) ToYaml() (string, error) { + vErr := obj.validateToAndFrom() + if vErr != nil { + return "", vErr + } + opts := protojson.MarshalOptions{ + UseProtoNames: true, + AllowPartial: true, + EmitUnpopulated: false, + } + data, err := opts.Marshal(obj.Msg()) + if err != nil { + return "", err + } + data, err = yaml.JSONToYAML(data) + if err != nil { + return "", err + } + return string(data), nil +} + +func (obj *patternFlowVlanIdMetricTag) FromYaml(value string) error { + if value == "" { + value = "{}" + } + data, err := yaml.YAMLToJSON([]byte(value)) + if err != nil { + return err + } + opts := protojson.UnmarshalOptions{ + AllowPartial: true, + DiscardUnknown: false, + } + uError := opts.Unmarshal([]byte(data), obj.Msg()) + if uError != nil { + return fmt.Errorf("unmarshal error %s", strings.Replace( + uError.Error(), "\u00a0", " ", -1)[7:]) + } + + vErr := obj.validateToAndFrom() + if vErr != nil { + return vErr + } + return nil +} + +func (obj *patternFlowVlanIdMetricTag) ToJson() (string, error) { + vErr := obj.validateToAndFrom() + if vErr != nil { + return "", vErr + } + opts := protojson.MarshalOptions{ + UseProtoNames: true, + AllowPartial: true, + EmitUnpopulated: false, + Indent: " ", + } + data, err := opts.Marshal(obj.Msg()) + if err != nil { + return "", err + } + return string(data), nil +} + +func (obj *patternFlowVlanIdMetricTag) FromJson(value string) error { + opts := protojson.UnmarshalOptions{ + AllowPartial: true, + DiscardUnknown: false, + } + if value == "" { + value = "{}" + } + uError := opts.Unmarshal([]byte(value), obj.Msg()) + if uError != nil { + return fmt.Errorf("unmarshal error %s", strings.Replace( + uError.Error(), "\u00a0", " ", -1)[7:]) + } + + err := obj.validateToAndFrom() + if err != nil { + return err + } + return nil +} + +func (obj *patternFlowVlanIdMetricTag) validateToAndFrom() error { + // emptyVars() + obj.validateObj(&obj.validation, true) + return obj.validationResult() +} + +func (obj *patternFlowVlanIdMetricTag) Validate() error { + // emptyVars() + obj.validateObj(&obj.validation, false) + return obj.validationResult() +} + +func (obj *patternFlowVlanIdMetricTag) String() string { + str, err := obj.ToYaml() + if err != nil { + return err.Error() + } + return str +} + +func (obj *patternFlowVlanIdMetricTag) Clone() (PatternFlowVlanIdMetricTag, error) { + vErr := obj.Validate() + if vErr != nil { + return nil, vErr + } + newObj := NewPatternFlowVlanIdMetricTag() + data, err := proto.Marshal(obj.Msg()) + if err != nil { + return nil, err + } + pbErr := proto.Unmarshal(data, newObj.Msg()) + if pbErr != nil { + return nil, pbErr + } + return newObj, nil +} + +// PatternFlowVlanIdMetricTag is metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. +type PatternFlowVlanIdMetricTag interface { + Validation + // Msg marshals PatternFlowVlanIdMetricTag to protobuf object *otg.PatternFlowVlanIdMetricTag + // and doesn't set defaults + Msg() *otg.PatternFlowVlanIdMetricTag + // SetMsg unmarshals PatternFlowVlanIdMetricTag from protobuf object *otg.PatternFlowVlanIdMetricTag + // and doesn't set defaults + SetMsg(*otg.PatternFlowVlanIdMetricTag) PatternFlowVlanIdMetricTag + // ToProto marshals PatternFlowVlanIdMetricTag to protobuf object *otg.PatternFlowVlanIdMetricTag + ToProto() (*otg.PatternFlowVlanIdMetricTag, error) + // ToPbText marshals PatternFlowVlanIdMetricTag to protobuf text + ToPbText() (string, error) + // ToYaml marshals PatternFlowVlanIdMetricTag to YAML text + ToYaml() (string, error) + // ToJson marshals PatternFlowVlanIdMetricTag to JSON text + ToJson() (string, error) + // FromProto unmarshals PatternFlowVlanIdMetricTag from protobuf object *otg.PatternFlowVlanIdMetricTag + FromProto(msg *otg.PatternFlowVlanIdMetricTag) (PatternFlowVlanIdMetricTag, error) + // FromPbText unmarshals PatternFlowVlanIdMetricTag from protobuf text + FromPbText(value string) error + // FromYaml unmarshals PatternFlowVlanIdMetricTag from YAML text + FromYaml(value string) error + // FromJson unmarshals PatternFlowVlanIdMetricTag from JSON text + FromJson(value string) error + // Validate validates PatternFlowVlanIdMetricTag + Validate() error + // A stringer function + String() string + // Clones the object + Clone() (PatternFlowVlanIdMetricTag, error) + validateToAndFrom() error + validateObj(vObj *validation, set_default bool) + setDefault() + // Name returns string, set in PatternFlowVlanIdMetricTag. + Name() string + // SetName assigns string provided by user to PatternFlowVlanIdMetricTag + SetName(value string) PatternFlowVlanIdMetricTag + // Offset returns uint32, set in PatternFlowVlanIdMetricTag. + Offset() uint32 + // SetOffset assigns uint32 provided by user to PatternFlowVlanIdMetricTag + SetOffset(value uint32) PatternFlowVlanIdMetricTag + // HasOffset checks if Offset has been set in PatternFlowVlanIdMetricTag + HasOffset() bool + // Length returns uint32, set in PatternFlowVlanIdMetricTag. + Length() uint32 + // SetLength assigns uint32 provided by user to PatternFlowVlanIdMetricTag + SetLength(value uint32) PatternFlowVlanIdMetricTag + // HasLength checks if Length has been set in PatternFlowVlanIdMetricTag + HasLength() bool +} + +// Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field +// Name returns a string +func (obj *patternFlowVlanIdMetricTag) Name() string { + + return *obj.obj.Name + +} + +// Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field +// SetName sets the string value in the PatternFlowVlanIdMetricTag object +func (obj *patternFlowVlanIdMetricTag) SetName(value string) PatternFlowVlanIdMetricTag { + + obj.obj.Name = &value + return obj +} + +// Offset in bits relative to start of corresponding header field +// Offset returns a uint32 +func (obj *patternFlowVlanIdMetricTag) Offset() uint32 { + + return *obj.obj.Offset + +} + +// Offset in bits relative to start of corresponding header field +// Offset returns a uint32 +func (obj *patternFlowVlanIdMetricTag) HasOffset() bool { + return obj.obj.Offset != nil +} + +// Offset in bits relative to start of corresponding header field +// SetOffset sets the uint32 value in the PatternFlowVlanIdMetricTag object +func (obj *patternFlowVlanIdMetricTag) SetOffset(value uint32) PatternFlowVlanIdMetricTag { + + obj.obj.Offset = &value + return obj +} + +// Number of bits to track for metrics starting from configured offset of corresponding header field +// Length returns a uint32 +func (obj *patternFlowVlanIdMetricTag) Length() uint32 { + + return *obj.obj.Length + +} + +// Number of bits to track for metrics starting from configured offset of corresponding header field +// Length returns a uint32 +func (obj *patternFlowVlanIdMetricTag) HasLength() bool { + return obj.obj.Length != nil +} + +// Number of bits to track for metrics starting from configured offset of corresponding header field +// SetLength sets the uint32 value in the PatternFlowVlanIdMetricTag object +func (obj *patternFlowVlanIdMetricTag) SetLength(value uint32) PatternFlowVlanIdMetricTag { + + obj.obj.Length = &value + return obj +} + +func (obj *patternFlowVlanIdMetricTag) validateObj(vObj *validation, set_default bool) { + if set_default { + obj.setDefault() + } + + // Name is required + if obj.obj.Name == nil { + vObj.validationErrors = append(vObj.validationErrors, "Name is required field on interface PatternFlowVlanIdMetricTag") + } + + if obj.obj.Offset != nil { + + if *obj.obj.Offset > 11 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("0 <= PatternFlowVlanIdMetricTag.Offset <= 11 but Got %d", *obj.obj.Offset)) + } + + } + + if obj.obj.Length != nil { + + if *obj.obj.Length < 1 || *obj.obj.Length > 12 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("1 <= PatternFlowVlanIdMetricTag.Length <= 12 but Got %d", *obj.obj.Length)) + } + + } + +} + +func (obj *patternFlowVlanIdMetricTag) setDefault() { + if obj.obj.Offset == nil { + obj.SetOffset(0) + } + if obj.obj.Length == nil { + obj.SetLength(12) + } + +} + +// ***** PatternFlowVlanTpidCounter ***** +type patternFlowVlanTpidCounter struct { + validation + obj *otg.PatternFlowVlanTpidCounter +} + +func NewPatternFlowVlanTpidCounter() PatternFlowVlanTpidCounter { + obj := patternFlowVlanTpidCounter{obj: &otg.PatternFlowVlanTpidCounter{}} + obj.setDefault() + return &obj +} + +func (obj *patternFlowVlanTpidCounter) Msg() *otg.PatternFlowVlanTpidCounter { + return obj.obj +} + +func (obj *patternFlowVlanTpidCounter) SetMsg(msg *otg.PatternFlowVlanTpidCounter) PatternFlowVlanTpidCounter { + + proto.Merge(obj.obj, msg) + return obj +} + +func (obj *patternFlowVlanTpidCounter) ToProto() (*otg.PatternFlowVlanTpidCounter, error) { + err := obj.validateToAndFrom() + if err != nil { + return nil, err + } + return obj.Msg(), nil +} + +func (obj *patternFlowVlanTpidCounter) FromProto(msg *otg.PatternFlowVlanTpidCounter) (PatternFlowVlanTpidCounter, error) { + newObj := obj.SetMsg(msg) + err := newObj.validateToAndFrom() + if err != nil { + return nil, err + } + return newObj, nil +} + +func (obj *patternFlowVlanTpidCounter) ToPbText() (string, error) { + vErr := obj.validateToAndFrom() + if vErr != nil { + return "", vErr + } + protoMarshal, err := proto.Marshal(obj.Msg()) + if err != nil { + return "", err + } + return string(protoMarshal), nil +} + +func (obj *patternFlowVlanTpidCounter) FromPbText(value string) error { + retObj := proto.Unmarshal([]byte(value), obj.Msg()) + if retObj != nil { + return retObj + } + + vErr := obj.validateToAndFrom() + if vErr != nil { + return vErr + } + return retObj +} + +func (obj *patternFlowVlanTpidCounter) ToYaml() (string, error) { + vErr := obj.validateToAndFrom() + if vErr != nil { + return "", vErr + } + opts := protojson.MarshalOptions{ + UseProtoNames: true, + AllowPartial: true, + EmitUnpopulated: false, + } + data, err := opts.Marshal(obj.Msg()) + if err != nil { + return "", err + } + data, err = yaml.JSONToYAML(data) + if err != nil { + return "", err + } + return string(data), nil +} + +func (obj *patternFlowVlanTpidCounter) FromYaml(value string) error { + if value == "" { + value = "{}" + } + data, err := yaml.YAMLToJSON([]byte(value)) + if err != nil { + return err + } + opts := protojson.UnmarshalOptions{ + AllowPartial: true, + DiscardUnknown: false, + } + uError := opts.Unmarshal([]byte(data), obj.Msg()) + if uError != nil { + return fmt.Errorf("unmarshal error %s", strings.Replace( + uError.Error(), "\u00a0", " ", -1)[7:]) + } + + vErr := obj.validateToAndFrom() + if vErr != nil { + return vErr + } + return nil +} + +func (obj *patternFlowVlanTpidCounter) ToJson() (string, error) { + vErr := obj.validateToAndFrom() + if vErr != nil { + return "", vErr + } + opts := protojson.MarshalOptions{ + UseProtoNames: true, + AllowPartial: true, + EmitUnpopulated: false, + Indent: " ", + } + data, err := opts.Marshal(obj.Msg()) + if err != nil { + return "", err + } + return string(data), nil +} + +func (obj *patternFlowVlanTpidCounter) FromJson(value string) error { + opts := protojson.UnmarshalOptions{ + AllowPartial: true, + DiscardUnknown: false, + } + if value == "" { + value = "{}" + } + uError := opts.Unmarshal([]byte(value), obj.Msg()) + if uError != nil { + return fmt.Errorf("unmarshal error %s", strings.Replace( + uError.Error(), "\u00a0", " ", -1)[7:]) + } + + err := obj.validateToAndFrom() + if err != nil { + return err + } + return nil +} + +func (obj *patternFlowVlanTpidCounter) validateToAndFrom() error { + // emptyVars() + obj.validateObj(&obj.validation, true) + return obj.validationResult() +} + +func (obj *patternFlowVlanTpidCounter) Validate() error { + // emptyVars() + obj.validateObj(&obj.validation, false) + return obj.validationResult() +} + +func (obj *patternFlowVlanTpidCounter) String() string { + str, err := obj.ToYaml() + if err != nil { + return err.Error() + } + return str +} + +func (obj *patternFlowVlanTpidCounter) Clone() (PatternFlowVlanTpidCounter, error) { + vErr := obj.Validate() + if vErr != nil { + return nil, vErr + } + newObj := NewPatternFlowVlanTpidCounter() + data, err := proto.Marshal(obj.Msg()) + if err != nil { + return nil, err + } + pbErr := proto.Unmarshal(data, newObj.Msg()) + if pbErr != nil { + return nil, pbErr + } + return newObj, nil +} + +// PatternFlowVlanTpidCounter is integer counter pattern +type PatternFlowVlanTpidCounter interface { + Validation + // Msg marshals PatternFlowVlanTpidCounter to protobuf object *otg.PatternFlowVlanTpidCounter + // and doesn't set defaults + Msg() *otg.PatternFlowVlanTpidCounter + // SetMsg unmarshals PatternFlowVlanTpidCounter from protobuf object *otg.PatternFlowVlanTpidCounter + // and doesn't set defaults + SetMsg(*otg.PatternFlowVlanTpidCounter) PatternFlowVlanTpidCounter + // ToProto marshals PatternFlowVlanTpidCounter to protobuf object *otg.PatternFlowVlanTpidCounter + ToProto() (*otg.PatternFlowVlanTpidCounter, error) + // ToPbText marshals PatternFlowVlanTpidCounter to protobuf text + ToPbText() (string, error) + // ToYaml marshals PatternFlowVlanTpidCounter to YAML text + ToYaml() (string, error) + // ToJson marshals PatternFlowVlanTpidCounter to JSON text + ToJson() (string, error) + // FromProto unmarshals PatternFlowVlanTpidCounter from protobuf object *otg.PatternFlowVlanTpidCounter + FromProto(msg *otg.PatternFlowVlanTpidCounter) (PatternFlowVlanTpidCounter, error) + // FromPbText unmarshals PatternFlowVlanTpidCounter from protobuf text + FromPbText(value string) error + // FromYaml unmarshals PatternFlowVlanTpidCounter from YAML text + FromYaml(value string) error + // FromJson unmarshals PatternFlowVlanTpidCounter from JSON text + FromJson(value string) error + // Validate validates PatternFlowVlanTpidCounter + Validate() error + // A stringer function + String() string + // Clones the object + Clone() (PatternFlowVlanTpidCounter, error) + validateToAndFrom() error + validateObj(vObj *validation, set_default bool) + setDefault() + // Start returns uint32, set in PatternFlowVlanTpidCounter. + Start() uint32 + // SetStart assigns uint32 provided by user to PatternFlowVlanTpidCounter + SetStart(value uint32) PatternFlowVlanTpidCounter + // HasStart checks if Start has been set in PatternFlowVlanTpidCounter + HasStart() bool + // Step returns uint32, set in PatternFlowVlanTpidCounter. + Step() uint32 + // SetStep assigns uint32 provided by user to PatternFlowVlanTpidCounter + SetStep(value uint32) PatternFlowVlanTpidCounter + // HasStep checks if Step has been set in PatternFlowVlanTpidCounter + HasStep() bool + // Count returns uint32, set in PatternFlowVlanTpidCounter. + Count() uint32 + // SetCount assigns uint32 provided by user to PatternFlowVlanTpidCounter + SetCount(value uint32) PatternFlowVlanTpidCounter + // HasCount checks if Count has been set in PatternFlowVlanTpidCounter + HasCount() bool +} + +// description is TBD +// Start returns a uint32 +func (obj *patternFlowVlanTpidCounter) Start() uint32 { + + return *obj.obj.Start + +} + +// description is TBD +// Start returns a uint32 +func (obj *patternFlowVlanTpidCounter) HasStart() bool { + return obj.obj.Start != nil +} + +// description is TBD +// SetStart sets the uint32 value in the PatternFlowVlanTpidCounter object +func (obj *patternFlowVlanTpidCounter) SetStart(value uint32) PatternFlowVlanTpidCounter { + + obj.obj.Start = &value + return obj +} + +// description is TBD +// Step returns a uint32 +func (obj *patternFlowVlanTpidCounter) Step() uint32 { + + return *obj.obj.Step + +} + +// description is TBD +// Step returns a uint32 +func (obj *patternFlowVlanTpidCounter) HasStep() bool { + return obj.obj.Step != nil +} + +// description is TBD +// SetStep sets the uint32 value in the PatternFlowVlanTpidCounter object +func (obj *patternFlowVlanTpidCounter) SetStep(value uint32) PatternFlowVlanTpidCounter { + + obj.obj.Step = &value + return obj +} + +// description is TBD +// Count returns a uint32 +func (obj *patternFlowVlanTpidCounter) Count() uint32 { + + return *obj.obj.Count + +} + +// description is TBD +// Count returns a uint32 +func (obj *patternFlowVlanTpidCounter) HasCount() bool { + return obj.obj.Count != nil +} + +// description is TBD +// SetCount sets the uint32 value in the PatternFlowVlanTpidCounter object +func (obj *patternFlowVlanTpidCounter) SetCount(value uint32) PatternFlowVlanTpidCounter { + + obj.obj.Count = &value + return obj +} + +func (obj *patternFlowVlanTpidCounter) validateObj(vObj *validation, set_default bool) { + if set_default { + obj.setDefault() + } + + if obj.obj.Start != nil { + + if *obj.obj.Start > 65535 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("0 <= PatternFlowVlanTpidCounter.Start <= 65535 but Got %d", *obj.obj.Start)) + } + + } + + if obj.obj.Step != nil { + + if *obj.obj.Step > 65535 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("0 <= PatternFlowVlanTpidCounter.Step <= 65535 but Got %d", *obj.obj.Step)) + } + + } + + if obj.obj.Count != nil { + + if *obj.obj.Count > 65535 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("0 <= PatternFlowVlanTpidCounter.Count <= 65535 but Got %d", *obj.obj.Count)) + } + + } + +} + +func (obj *patternFlowVlanTpidCounter) setDefault() { + if obj.obj.Start == nil { + obj.SetStart(65535) + } + if obj.obj.Step == nil { + obj.SetStep(1) + } + if obj.obj.Count == nil { + obj.SetCount(1) + } + +} + +// ***** PatternFlowVlanTpidMetricTag ***** +type patternFlowVlanTpidMetricTag struct { + validation + obj *otg.PatternFlowVlanTpidMetricTag +} + +func NewPatternFlowVlanTpidMetricTag() PatternFlowVlanTpidMetricTag { + obj := patternFlowVlanTpidMetricTag{obj: &otg.PatternFlowVlanTpidMetricTag{}} + obj.setDefault() + return &obj +} + +func (obj *patternFlowVlanTpidMetricTag) Msg() *otg.PatternFlowVlanTpidMetricTag { + return obj.obj +} + +func (obj *patternFlowVlanTpidMetricTag) SetMsg(msg *otg.PatternFlowVlanTpidMetricTag) PatternFlowVlanTpidMetricTag { + + proto.Merge(obj.obj, msg) + return obj +} + +func (obj *patternFlowVlanTpidMetricTag) ToProto() (*otg.PatternFlowVlanTpidMetricTag, error) { + err := obj.validateToAndFrom() + if err != nil { + return nil, err + } + return obj.Msg(), nil +} + +func (obj *patternFlowVlanTpidMetricTag) FromProto(msg *otg.PatternFlowVlanTpidMetricTag) (PatternFlowVlanTpidMetricTag, error) { + newObj := obj.SetMsg(msg) + err := newObj.validateToAndFrom() + if err != nil { + return nil, err + } + return newObj, nil +} + +func (obj *patternFlowVlanTpidMetricTag) ToPbText() (string, error) { + vErr := obj.validateToAndFrom() + if vErr != nil { + return "", vErr + } + protoMarshal, err := proto.Marshal(obj.Msg()) + if err != nil { + return "", err + } + return string(protoMarshal), nil +} + +func (obj *patternFlowVlanTpidMetricTag) FromPbText(value string) error { + retObj := proto.Unmarshal([]byte(value), obj.Msg()) + if retObj != nil { + return retObj + } + + vErr := obj.validateToAndFrom() + if vErr != nil { + return vErr + } + return retObj +} + +func (obj *patternFlowVlanTpidMetricTag) ToYaml() (string, error) { + vErr := obj.validateToAndFrom() + if vErr != nil { + return "", vErr + } + opts := protojson.MarshalOptions{ + UseProtoNames: true, + AllowPartial: true, + EmitUnpopulated: false, + } + data, err := opts.Marshal(obj.Msg()) + if err != nil { + return "", err + } + data, err = yaml.JSONToYAML(data) + if err != nil { + return "", err + } + return string(data), nil +} + +func (obj *patternFlowVlanTpidMetricTag) FromYaml(value string) error { + if value == "" { + value = "{}" + } + data, err := yaml.YAMLToJSON([]byte(value)) + if err != nil { + return err + } + opts := protojson.UnmarshalOptions{ + AllowPartial: true, + DiscardUnknown: false, + } + uError := opts.Unmarshal([]byte(data), obj.Msg()) + if uError != nil { + return fmt.Errorf("unmarshal error %s", strings.Replace( + uError.Error(), "\u00a0", " ", -1)[7:]) + } + + vErr := obj.validateToAndFrom() + if vErr != nil { + return vErr + } + return nil +} + +func (obj *patternFlowVlanTpidMetricTag) ToJson() (string, error) { + vErr := obj.validateToAndFrom() + if vErr != nil { + return "", vErr + } + opts := protojson.MarshalOptions{ + UseProtoNames: true, + AllowPartial: true, + EmitUnpopulated: false, + Indent: " ", + } + data, err := opts.Marshal(obj.Msg()) + if err != nil { + return "", err + } + return string(data), nil +} + +func (obj *patternFlowVlanTpidMetricTag) FromJson(value string) error { + opts := protojson.UnmarshalOptions{ + AllowPartial: true, + DiscardUnknown: false, + } + if value == "" { + value = "{}" + } + uError := opts.Unmarshal([]byte(value), obj.Msg()) + if uError != nil { + return fmt.Errorf("unmarshal error %s", strings.Replace( + uError.Error(), "\u00a0", " ", -1)[7:]) + } + + err := obj.validateToAndFrom() + if err != nil { + return err + } + return nil +} + +func (obj *patternFlowVlanTpidMetricTag) validateToAndFrom() error { + // emptyVars() + obj.validateObj(&obj.validation, true) + return obj.validationResult() +} + +func (obj *patternFlowVlanTpidMetricTag) Validate() error { + // emptyVars() + obj.validateObj(&obj.validation, false) + return obj.validationResult() +} + +func (obj *patternFlowVlanTpidMetricTag) String() string { + str, err := obj.ToYaml() + if err != nil { + return err.Error() + } + return str +} + +func (obj *patternFlowVlanTpidMetricTag) Clone() (PatternFlowVlanTpidMetricTag, error) { + vErr := obj.Validate() + if vErr != nil { + return nil, vErr + } + newObj := NewPatternFlowVlanTpidMetricTag() + data, err := proto.Marshal(obj.Msg()) + if err != nil { + return nil, err + } + pbErr := proto.Unmarshal(data, newObj.Msg()) + if pbErr != nil { + return nil, pbErr + } + return newObj, nil +} + +// PatternFlowVlanTpidMetricTag is metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. +type PatternFlowVlanTpidMetricTag interface { + Validation + // Msg marshals PatternFlowVlanTpidMetricTag to protobuf object *otg.PatternFlowVlanTpidMetricTag + // and doesn't set defaults + Msg() *otg.PatternFlowVlanTpidMetricTag + // SetMsg unmarshals PatternFlowVlanTpidMetricTag from protobuf object *otg.PatternFlowVlanTpidMetricTag + // and doesn't set defaults + SetMsg(*otg.PatternFlowVlanTpidMetricTag) PatternFlowVlanTpidMetricTag + // ToProto marshals PatternFlowVlanTpidMetricTag to protobuf object *otg.PatternFlowVlanTpidMetricTag + ToProto() (*otg.PatternFlowVlanTpidMetricTag, error) + // ToPbText marshals PatternFlowVlanTpidMetricTag to protobuf text + ToPbText() (string, error) + // ToYaml marshals PatternFlowVlanTpidMetricTag to YAML text + ToYaml() (string, error) + // ToJson marshals PatternFlowVlanTpidMetricTag to JSON text + ToJson() (string, error) + // FromProto unmarshals PatternFlowVlanTpidMetricTag from protobuf object *otg.PatternFlowVlanTpidMetricTag + FromProto(msg *otg.PatternFlowVlanTpidMetricTag) (PatternFlowVlanTpidMetricTag, error) + // FromPbText unmarshals PatternFlowVlanTpidMetricTag from protobuf text + FromPbText(value string) error + // FromYaml unmarshals PatternFlowVlanTpidMetricTag from YAML text + FromYaml(value string) error + // FromJson unmarshals PatternFlowVlanTpidMetricTag from JSON text + FromJson(value string) error + // Validate validates PatternFlowVlanTpidMetricTag + Validate() error + // A stringer function + String() string + // Clones the object + Clone() (PatternFlowVlanTpidMetricTag, error) + validateToAndFrom() error + validateObj(vObj *validation, set_default bool) + setDefault() + // Name returns string, set in PatternFlowVlanTpidMetricTag. + Name() string + // SetName assigns string provided by user to PatternFlowVlanTpidMetricTag + SetName(value string) PatternFlowVlanTpidMetricTag + // Offset returns uint32, set in PatternFlowVlanTpidMetricTag. + Offset() uint32 + // SetOffset assigns uint32 provided by user to PatternFlowVlanTpidMetricTag + SetOffset(value uint32) PatternFlowVlanTpidMetricTag + // HasOffset checks if Offset has been set in PatternFlowVlanTpidMetricTag + HasOffset() bool + // Length returns uint32, set in PatternFlowVlanTpidMetricTag. + Length() uint32 + // SetLength assigns uint32 provided by user to PatternFlowVlanTpidMetricTag + SetLength(value uint32) PatternFlowVlanTpidMetricTag + // HasLength checks if Length has been set in PatternFlowVlanTpidMetricTag + HasLength() bool +} + +// Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field +// Name returns a string +func (obj *patternFlowVlanTpidMetricTag) Name() string { + + return *obj.obj.Name + +} + +// Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field +// SetName sets the string value in the PatternFlowVlanTpidMetricTag object +func (obj *patternFlowVlanTpidMetricTag) SetName(value string) PatternFlowVlanTpidMetricTag { + + obj.obj.Name = &value + return obj +} + +// Offset in bits relative to start of corresponding header field +// Offset returns a uint32 +func (obj *patternFlowVlanTpidMetricTag) Offset() uint32 { + + return *obj.obj.Offset + +} + +// Offset in bits relative to start of corresponding header field +// Offset returns a uint32 +func (obj *patternFlowVlanTpidMetricTag) HasOffset() bool { + return obj.obj.Offset != nil +} + +// Offset in bits relative to start of corresponding header field +// SetOffset sets the uint32 value in the PatternFlowVlanTpidMetricTag object +func (obj *patternFlowVlanTpidMetricTag) SetOffset(value uint32) PatternFlowVlanTpidMetricTag { + + obj.obj.Offset = &value + return obj +} + +// Number of bits to track for metrics starting from configured offset of corresponding header field +// Length returns a uint32 +func (obj *patternFlowVlanTpidMetricTag) Length() uint32 { + + return *obj.obj.Length + +} + +// Number of bits to track for metrics starting from configured offset of corresponding header field +// Length returns a uint32 +func (obj *patternFlowVlanTpidMetricTag) HasLength() bool { + return obj.obj.Length != nil +} + +// Number of bits to track for metrics starting from configured offset of corresponding header field +// SetLength sets the uint32 value in the PatternFlowVlanTpidMetricTag object +func (obj *patternFlowVlanTpidMetricTag) SetLength(value uint32) PatternFlowVlanTpidMetricTag { + + obj.obj.Length = &value + return obj +} + +func (obj *patternFlowVlanTpidMetricTag) validateObj(vObj *validation, set_default bool) { + if set_default { + obj.setDefault() + } + + // Name is required + if obj.obj.Name == nil { + vObj.validationErrors = append(vObj.validationErrors, "Name is required field on interface PatternFlowVlanTpidMetricTag") + } + + if obj.obj.Offset != nil { + + if *obj.obj.Offset > 15 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("0 <= PatternFlowVlanTpidMetricTag.Offset <= 15 but Got %d", *obj.obj.Offset)) + } + + } + + if obj.obj.Length != nil { + + if *obj.obj.Length < 1 || *obj.obj.Length > 16 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("1 <= PatternFlowVlanTpidMetricTag.Length <= 16 but Got %d", *obj.obj.Length)) + } + + } + +} + +func (obj *patternFlowVlanTpidMetricTag) setDefault() { + if obj.obj.Offset == nil { + obj.SetOffset(0) + } + if obj.obj.Length == nil { + obj.SetLength(16) + } + +} + +// ***** PatternFlowVxlanFlagsCounter ***** +type patternFlowVxlanFlagsCounter struct { + validation + obj *otg.PatternFlowVxlanFlagsCounter +} + +func NewPatternFlowVxlanFlagsCounter() PatternFlowVxlanFlagsCounter { + obj := patternFlowVxlanFlagsCounter{obj: &otg.PatternFlowVxlanFlagsCounter{}} + obj.setDefault() + return &obj +} + +func (obj *patternFlowVxlanFlagsCounter) Msg() *otg.PatternFlowVxlanFlagsCounter { + return obj.obj +} + +func (obj *patternFlowVxlanFlagsCounter) SetMsg(msg *otg.PatternFlowVxlanFlagsCounter) PatternFlowVxlanFlagsCounter { + + proto.Merge(obj.obj, msg) + return obj +} + +func (obj *patternFlowVxlanFlagsCounter) ToProto() (*otg.PatternFlowVxlanFlagsCounter, error) { + err := obj.validateToAndFrom() + if err != nil { + return nil, err + } + return obj.Msg(), nil +} + +func (obj *patternFlowVxlanFlagsCounter) FromProto(msg *otg.PatternFlowVxlanFlagsCounter) (PatternFlowVxlanFlagsCounter, error) { + newObj := obj.SetMsg(msg) + err := newObj.validateToAndFrom() + if err != nil { + return nil, err + } + return newObj, nil +} + +func (obj *patternFlowVxlanFlagsCounter) ToPbText() (string, error) { + vErr := obj.validateToAndFrom() + if vErr != nil { + return "", vErr + } + protoMarshal, err := proto.Marshal(obj.Msg()) + if err != nil { + return "", err + } + return string(protoMarshal), nil +} + +func (obj *patternFlowVxlanFlagsCounter) FromPbText(value string) error { + retObj := proto.Unmarshal([]byte(value), obj.Msg()) + if retObj != nil { + return retObj + } + + vErr := obj.validateToAndFrom() + if vErr != nil { + return vErr + } + return retObj +} + +func (obj *patternFlowVxlanFlagsCounter) ToYaml() (string, error) { + vErr := obj.validateToAndFrom() + if vErr != nil { + return "", vErr + } + opts := protojson.MarshalOptions{ + UseProtoNames: true, + AllowPartial: true, + EmitUnpopulated: false, + } + data, err := opts.Marshal(obj.Msg()) + if err != nil { + return "", err + } + data, err = yaml.JSONToYAML(data) + if err != nil { + return "", err + } + return string(data), nil +} + +func (obj *patternFlowVxlanFlagsCounter) FromYaml(value string) error { + if value == "" { + value = "{}" + } + data, err := yaml.YAMLToJSON([]byte(value)) + if err != nil { + return err + } + opts := protojson.UnmarshalOptions{ + AllowPartial: true, + DiscardUnknown: false, + } + uError := opts.Unmarshal([]byte(data), obj.Msg()) + if uError != nil { + return fmt.Errorf("unmarshal error %s", strings.Replace( + uError.Error(), "\u00a0", " ", -1)[7:]) + } + + vErr := obj.validateToAndFrom() + if vErr != nil { + return vErr + } + return nil +} + +func (obj *patternFlowVxlanFlagsCounter) ToJson() (string, error) { + vErr := obj.validateToAndFrom() + if vErr != nil { + return "", vErr + } + opts := protojson.MarshalOptions{ + UseProtoNames: true, + AllowPartial: true, + EmitUnpopulated: false, + Indent: " ", + } + data, err := opts.Marshal(obj.Msg()) + if err != nil { + return "", err + } + return string(data), nil +} + +func (obj *patternFlowVxlanFlagsCounter) FromJson(value string) error { + opts := protojson.UnmarshalOptions{ + AllowPartial: true, + DiscardUnknown: false, + } + if value == "" { + value = "{}" + } + uError := opts.Unmarshal([]byte(value), obj.Msg()) + if uError != nil { + return fmt.Errorf("unmarshal error %s", strings.Replace( + uError.Error(), "\u00a0", " ", -1)[7:]) + } + + err := obj.validateToAndFrom() + if err != nil { + return err + } + return nil +} + +func (obj *patternFlowVxlanFlagsCounter) validateToAndFrom() error { + // emptyVars() + obj.validateObj(&obj.validation, true) + return obj.validationResult() +} + +func (obj *patternFlowVxlanFlagsCounter) Validate() error { + // emptyVars() + obj.validateObj(&obj.validation, false) + return obj.validationResult() +} + +func (obj *patternFlowVxlanFlagsCounter) String() string { + str, err := obj.ToYaml() + if err != nil { + return err.Error() + } + return str +} + +func (obj *patternFlowVxlanFlagsCounter) Clone() (PatternFlowVxlanFlagsCounter, error) { + vErr := obj.Validate() + if vErr != nil { + return nil, vErr + } + newObj := NewPatternFlowVxlanFlagsCounter() + data, err := proto.Marshal(obj.Msg()) + if err != nil { + return nil, err + } + pbErr := proto.Unmarshal(data, newObj.Msg()) + if pbErr != nil { + return nil, pbErr + } + return newObj, nil +} + +// PatternFlowVxlanFlagsCounter is integer counter pattern +type PatternFlowVxlanFlagsCounter interface { + Validation + // Msg marshals PatternFlowVxlanFlagsCounter to protobuf object *otg.PatternFlowVxlanFlagsCounter + // and doesn't set defaults + Msg() *otg.PatternFlowVxlanFlagsCounter + // SetMsg unmarshals PatternFlowVxlanFlagsCounter from protobuf object *otg.PatternFlowVxlanFlagsCounter + // and doesn't set defaults + SetMsg(*otg.PatternFlowVxlanFlagsCounter) PatternFlowVxlanFlagsCounter + // ToProto marshals PatternFlowVxlanFlagsCounter to protobuf object *otg.PatternFlowVxlanFlagsCounter + ToProto() (*otg.PatternFlowVxlanFlagsCounter, error) + // ToPbText marshals PatternFlowVxlanFlagsCounter to protobuf text + ToPbText() (string, error) + // ToYaml marshals PatternFlowVxlanFlagsCounter to YAML text + ToYaml() (string, error) + // ToJson marshals PatternFlowVxlanFlagsCounter to JSON text + ToJson() (string, error) + // FromProto unmarshals PatternFlowVxlanFlagsCounter from protobuf object *otg.PatternFlowVxlanFlagsCounter + FromProto(msg *otg.PatternFlowVxlanFlagsCounter) (PatternFlowVxlanFlagsCounter, error) + // FromPbText unmarshals PatternFlowVxlanFlagsCounter from protobuf text + FromPbText(value string) error + // FromYaml unmarshals PatternFlowVxlanFlagsCounter from YAML text + FromYaml(value string) error + // FromJson unmarshals PatternFlowVxlanFlagsCounter from JSON text + FromJson(value string) error + // Validate validates PatternFlowVxlanFlagsCounter + Validate() error + // A stringer function + String() string + // Clones the object + Clone() (PatternFlowVxlanFlagsCounter, error) + validateToAndFrom() error + validateObj(vObj *validation, set_default bool) + setDefault() + // Start returns uint32, set in PatternFlowVxlanFlagsCounter. + Start() uint32 + // SetStart assigns uint32 provided by user to PatternFlowVxlanFlagsCounter + SetStart(value uint32) PatternFlowVxlanFlagsCounter + // HasStart checks if Start has been set in PatternFlowVxlanFlagsCounter + HasStart() bool + // Step returns uint32, set in PatternFlowVxlanFlagsCounter. + Step() uint32 + // SetStep assigns uint32 provided by user to PatternFlowVxlanFlagsCounter + SetStep(value uint32) PatternFlowVxlanFlagsCounter + // HasStep checks if Step has been set in PatternFlowVxlanFlagsCounter + HasStep() bool + // Count returns uint32, set in PatternFlowVxlanFlagsCounter. + Count() uint32 + // SetCount assigns uint32 provided by user to PatternFlowVxlanFlagsCounter + SetCount(value uint32) PatternFlowVxlanFlagsCounter + // HasCount checks if Count has been set in PatternFlowVxlanFlagsCounter + HasCount() bool +} + +// description is TBD +// Start returns a uint32 +func (obj *patternFlowVxlanFlagsCounter) Start() uint32 { + + return *obj.obj.Start + +} + +// description is TBD +// Start returns a uint32 +func (obj *patternFlowVxlanFlagsCounter) HasStart() bool { + return obj.obj.Start != nil +} + +// description is TBD +// SetStart sets the uint32 value in the PatternFlowVxlanFlagsCounter object +func (obj *patternFlowVxlanFlagsCounter) SetStart(value uint32) PatternFlowVxlanFlagsCounter { + + obj.obj.Start = &value + return obj +} + +// description is TBD +// Step returns a uint32 +func (obj *patternFlowVxlanFlagsCounter) Step() uint32 { + + return *obj.obj.Step + +} + +// description is TBD +// Step returns a uint32 +func (obj *patternFlowVxlanFlagsCounter) HasStep() bool { + return obj.obj.Step != nil +} + +// description is TBD +// SetStep sets the uint32 value in the PatternFlowVxlanFlagsCounter object +func (obj *patternFlowVxlanFlagsCounter) SetStep(value uint32) PatternFlowVxlanFlagsCounter { + + obj.obj.Step = &value + return obj +} + +// description is TBD +// Count returns a uint32 +func (obj *patternFlowVxlanFlagsCounter) Count() uint32 { + + return *obj.obj.Count + +} + +// description is TBD +// Count returns a uint32 +func (obj *patternFlowVxlanFlagsCounter) HasCount() bool { + return obj.obj.Count != nil +} + +// description is TBD +// SetCount sets the uint32 value in the PatternFlowVxlanFlagsCounter object +func (obj *patternFlowVxlanFlagsCounter) SetCount(value uint32) PatternFlowVxlanFlagsCounter { + + obj.obj.Count = &value + return obj +} + +func (obj *patternFlowVxlanFlagsCounter) validateObj(vObj *validation, set_default bool) { + if set_default { + obj.setDefault() + } + + if obj.obj.Start != nil { + + if *obj.obj.Start > 255 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("0 <= PatternFlowVxlanFlagsCounter.Start <= 255 but Got %d", *obj.obj.Start)) + } + + } + + if obj.obj.Step != nil { + + if *obj.obj.Step > 255 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("0 <= PatternFlowVxlanFlagsCounter.Step <= 255 but Got %d", *obj.obj.Step)) + } + + } + + if obj.obj.Count != nil { + + if *obj.obj.Count > 255 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("0 <= PatternFlowVxlanFlagsCounter.Count <= 255 but Got %d", *obj.obj.Count)) + } + + } + +} + +func (obj *patternFlowVxlanFlagsCounter) setDefault() { + if obj.obj.Start == nil { + obj.SetStart(8) + } + if obj.obj.Step == nil { + obj.SetStep(1) + } + if obj.obj.Count == nil { + obj.SetCount(1) + } + +} + +// ***** PatternFlowVxlanFlagsMetricTag ***** +type patternFlowVxlanFlagsMetricTag struct { + validation + obj *otg.PatternFlowVxlanFlagsMetricTag +} + +func NewPatternFlowVxlanFlagsMetricTag() PatternFlowVxlanFlagsMetricTag { + obj := patternFlowVxlanFlagsMetricTag{obj: &otg.PatternFlowVxlanFlagsMetricTag{}} + obj.setDefault() + return &obj +} + +func (obj *patternFlowVxlanFlagsMetricTag) Msg() *otg.PatternFlowVxlanFlagsMetricTag { + return obj.obj +} + +func (obj *patternFlowVxlanFlagsMetricTag) SetMsg(msg *otg.PatternFlowVxlanFlagsMetricTag) PatternFlowVxlanFlagsMetricTag { + + proto.Merge(obj.obj, msg) + return obj +} + +func (obj *patternFlowVxlanFlagsMetricTag) ToProto() (*otg.PatternFlowVxlanFlagsMetricTag, error) { + err := obj.validateToAndFrom() + if err != nil { + return nil, err + } + return obj.Msg(), nil +} + +func (obj *patternFlowVxlanFlagsMetricTag) FromProto(msg *otg.PatternFlowVxlanFlagsMetricTag) (PatternFlowVxlanFlagsMetricTag, error) { + newObj := obj.SetMsg(msg) + err := newObj.validateToAndFrom() + if err != nil { + return nil, err + } + return newObj, nil +} + +func (obj *patternFlowVxlanFlagsMetricTag) ToPbText() (string, error) { + vErr := obj.validateToAndFrom() + if vErr != nil { + return "", vErr + } + protoMarshal, err := proto.Marshal(obj.Msg()) + if err != nil { + return "", err + } + return string(protoMarshal), nil +} + +func (obj *patternFlowVxlanFlagsMetricTag) FromPbText(value string) error { + retObj := proto.Unmarshal([]byte(value), obj.Msg()) + if retObj != nil { + return retObj + } + + vErr := obj.validateToAndFrom() + if vErr != nil { + return vErr + } + return retObj +} + +func (obj *patternFlowVxlanFlagsMetricTag) ToYaml() (string, error) { + vErr := obj.validateToAndFrom() + if vErr != nil { + return "", vErr + } + opts := protojson.MarshalOptions{ + UseProtoNames: true, + AllowPartial: true, + EmitUnpopulated: false, + } + data, err := opts.Marshal(obj.Msg()) + if err != nil { + return "", err + } + data, err = yaml.JSONToYAML(data) + if err != nil { + return "", err + } + return string(data), nil +} + +func (obj *patternFlowVxlanFlagsMetricTag) FromYaml(value string) error { + if value == "" { + value = "{}" + } + data, err := yaml.YAMLToJSON([]byte(value)) + if err != nil { + return err + } + opts := protojson.UnmarshalOptions{ + AllowPartial: true, + DiscardUnknown: false, + } + uError := opts.Unmarshal([]byte(data), obj.Msg()) + if uError != nil { + return fmt.Errorf("unmarshal error %s", strings.Replace( + uError.Error(), "\u00a0", " ", -1)[7:]) + } + + vErr := obj.validateToAndFrom() + if vErr != nil { + return vErr + } + return nil +} + +func (obj *patternFlowVxlanFlagsMetricTag) ToJson() (string, error) { + vErr := obj.validateToAndFrom() + if vErr != nil { + return "", vErr + } + opts := protojson.MarshalOptions{ + UseProtoNames: true, + AllowPartial: true, + EmitUnpopulated: false, + Indent: " ", + } + data, err := opts.Marshal(obj.Msg()) + if err != nil { + return "", err + } + return string(data), nil +} + +func (obj *patternFlowVxlanFlagsMetricTag) FromJson(value string) error { + opts := protojson.UnmarshalOptions{ + AllowPartial: true, + DiscardUnknown: false, + } + if value == "" { + value = "{}" + } + uError := opts.Unmarshal([]byte(value), obj.Msg()) + if uError != nil { + return fmt.Errorf("unmarshal error %s", strings.Replace( + uError.Error(), "\u00a0", " ", -1)[7:]) + } + + err := obj.validateToAndFrom() + if err != nil { + return err + } + return nil +} + +func (obj *patternFlowVxlanFlagsMetricTag) validateToAndFrom() error { + // emptyVars() + obj.validateObj(&obj.validation, true) + return obj.validationResult() +} + +func (obj *patternFlowVxlanFlagsMetricTag) Validate() error { + // emptyVars() + obj.validateObj(&obj.validation, false) + return obj.validationResult() +} + +func (obj *patternFlowVxlanFlagsMetricTag) String() string { + str, err := obj.ToYaml() + if err != nil { + return err.Error() + } + return str +} + +func (obj *patternFlowVxlanFlagsMetricTag) Clone() (PatternFlowVxlanFlagsMetricTag, error) { + vErr := obj.Validate() + if vErr != nil { + return nil, vErr + } + newObj := NewPatternFlowVxlanFlagsMetricTag() + data, err := proto.Marshal(obj.Msg()) + if err != nil { + return nil, err + } + pbErr := proto.Unmarshal(data, newObj.Msg()) + if pbErr != nil { + return nil, pbErr + } + return newObj, nil +} + +// PatternFlowVxlanFlagsMetricTag is metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. +type PatternFlowVxlanFlagsMetricTag interface { + Validation + // Msg marshals PatternFlowVxlanFlagsMetricTag to protobuf object *otg.PatternFlowVxlanFlagsMetricTag + // and doesn't set defaults + Msg() *otg.PatternFlowVxlanFlagsMetricTag + // SetMsg unmarshals PatternFlowVxlanFlagsMetricTag from protobuf object *otg.PatternFlowVxlanFlagsMetricTag + // and doesn't set defaults + SetMsg(*otg.PatternFlowVxlanFlagsMetricTag) PatternFlowVxlanFlagsMetricTag + // ToProto marshals PatternFlowVxlanFlagsMetricTag to protobuf object *otg.PatternFlowVxlanFlagsMetricTag + ToProto() (*otg.PatternFlowVxlanFlagsMetricTag, error) + // ToPbText marshals PatternFlowVxlanFlagsMetricTag to protobuf text + ToPbText() (string, error) + // ToYaml marshals PatternFlowVxlanFlagsMetricTag to YAML text + ToYaml() (string, error) + // ToJson marshals PatternFlowVxlanFlagsMetricTag to JSON text + ToJson() (string, error) + // FromProto unmarshals PatternFlowVxlanFlagsMetricTag from protobuf object *otg.PatternFlowVxlanFlagsMetricTag + FromProto(msg *otg.PatternFlowVxlanFlagsMetricTag) (PatternFlowVxlanFlagsMetricTag, error) + // FromPbText unmarshals PatternFlowVxlanFlagsMetricTag from protobuf text + FromPbText(value string) error + // FromYaml unmarshals PatternFlowVxlanFlagsMetricTag from YAML text + FromYaml(value string) error + // FromJson unmarshals PatternFlowVxlanFlagsMetricTag from JSON text + FromJson(value string) error + // Validate validates PatternFlowVxlanFlagsMetricTag + Validate() error + // A stringer function + String() string + // Clones the object + Clone() (PatternFlowVxlanFlagsMetricTag, error) + validateToAndFrom() error + validateObj(vObj *validation, set_default bool) + setDefault() + // Name returns string, set in PatternFlowVxlanFlagsMetricTag. + Name() string + // SetName assigns string provided by user to PatternFlowVxlanFlagsMetricTag + SetName(value string) PatternFlowVxlanFlagsMetricTag + // Offset returns uint32, set in PatternFlowVxlanFlagsMetricTag. + Offset() uint32 + // SetOffset assigns uint32 provided by user to PatternFlowVxlanFlagsMetricTag + SetOffset(value uint32) PatternFlowVxlanFlagsMetricTag + // HasOffset checks if Offset has been set in PatternFlowVxlanFlagsMetricTag + HasOffset() bool + // Length returns uint32, set in PatternFlowVxlanFlagsMetricTag. + Length() uint32 + // SetLength assigns uint32 provided by user to PatternFlowVxlanFlagsMetricTag + SetLength(value uint32) PatternFlowVxlanFlagsMetricTag + // HasLength checks if Length has been set in PatternFlowVxlanFlagsMetricTag + HasLength() bool +} + +// Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field +// Name returns a string +func (obj *patternFlowVxlanFlagsMetricTag) Name() string { + + return *obj.obj.Name + +} + +// Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field +// SetName sets the string value in the PatternFlowVxlanFlagsMetricTag object +func (obj *patternFlowVxlanFlagsMetricTag) SetName(value string) PatternFlowVxlanFlagsMetricTag { + + obj.obj.Name = &value + return obj +} + +// Offset in bits relative to start of corresponding header field +// Offset returns a uint32 +func (obj *patternFlowVxlanFlagsMetricTag) Offset() uint32 { + + return *obj.obj.Offset + +} + +// Offset in bits relative to start of corresponding header field +// Offset returns a uint32 +func (obj *patternFlowVxlanFlagsMetricTag) HasOffset() bool { + return obj.obj.Offset != nil +} + +// Offset in bits relative to start of corresponding header field +// SetOffset sets the uint32 value in the PatternFlowVxlanFlagsMetricTag object +func (obj *patternFlowVxlanFlagsMetricTag) SetOffset(value uint32) PatternFlowVxlanFlagsMetricTag { + + obj.obj.Offset = &value + return obj +} + +// Number of bits to track for metrics starting from configured offset of corresponding header field +// Length returns a uint32 +func (obj *patternFlowVxlanFlagsMetricTag) Length() uint32 { + + return *obj.obj.Length + +} + +// Number of bits to track for metrics starting from configured offset of corresponding header field +// Length returns a uint32 +func (obj *patternFlowVxlanFlagsMetricTag) HasLength() bool { + return obj.obj.Length != nil +} + +// Number of bits to track for metrics starting from configured offset of corresponding header field +// SetLength sets the uint32 value in the PatternFlowVxlanFlagsMetricTag object +func (obj *patternFlowVxlanFlagsMetricTag) SetLength(value uint32) PatternFlowVxlanFlagsMetricTag { + + obj.obj.Length = &value + return obj +} + +func (obj *patternFlowVxlanFlagsMetricTag) validateObj(vObj *validation, set_default bool) { + if set_default { + obj.setDefault() + } + + // Name is required + if obj.obj.Name == nil { + vObj.validationErrors = append(vObj.validationErrors, "Name is required field on interface PatternFlowVxlanFlagsMetricTag") + } + + if obj.obj.Offset != nil { + + if *obj.obj.Offset > 7 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("0 <= PatternFlowVxlanFlagsMetricTag.Offset <= 7 but Got %d", *obj.obj.Offset)) + } + + } + + if obj.obj.Length != nil { + + if *obj.obj.Length < 1 || *obj.obj.Length > 8 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("1 <= PatternFlowVxlanFlagsMetricTag.Length <= 8 but Got %d", *obj.obj.Length)) + } + + } + +} + +func (obj *patternFlowVxlanFlagsMetricTag) setDefault() { + if obj.obj.Offset == nil { + obj.SetOffset(0) + } + if obj.obj.Length == nil { + obj.SetLength(8) + } + +} + +// ***** PatternFlowVxlanReserved0Counter ***** +type patternFlowVxlanReserved0Counter struct { + validation + obj *otg.PatternFlowVxlanReserved0Counter +} + +func NewPatternFlowVxlanReserved0Counter() PatternFlowVxlanReserved0Counter { + obj := patternFlowVxlanReserved0Counter{obj: &otg.PatternFlowVxlanReserved0Counter{}} + obj.setDefault() + return &obj +} + +func (obj *patternFlowVxlanReserved0Counter) Msg() *otg.PatternFlowVxlanReserved0Counter { + return obj.obj +} + +func (obj *patternFlowVxlanReserved0Counter) SetMsg(msg *otg.PatternFlowVxlanReserved0Counter) PatternFlowVxlanReserved0Counter { + + proto.Merge(obj.obj, msg) + return obj +} + +func (obj *patternFlowVxlanReserved0Counter) ToProto() (*otg.PatternFlowVxlanReserved0Counter, error) { + err := obj.validateToAndFrom() + if err != nil { + return nil, err + } + return obj.Msg(), nil +} + +func (obj *patternFlowVxlanReserved0Counter) FromProto(msg *otg.PatternFlowVxlanReserved0Counter) (PatternFlowVxlanReserved0Counter, error) { + newObj := obj.SetMsg(msg) + err := newObj.validateToAndFrom() + if err != nil { + return nil, err + } + return newObj, nil +} + +func (obj *patternFlowVxlanReserved0Counter) ToPbText() (string, error) { + vErr := obj.validateToAndFrom() + if vErr != nil { + return "", vErr + } + protoMarshal, err := proto.Marshal(obj.Msg()) + if err != nil { + return "", err + } + return string(protoMarshal), nil +} + +func (obj *patternFlowVxlanReserved0Counter) FromPbText(value string) error { + retObj := proto.Unmarshal([]byte(value), obj.Msg()) + if retObj != nil { + return retObj + } + + vErr := obj.validateToAndFrom() + if vErr != nil { + return vErr + } + return retObj +} + +func (obj *patternFlowVxlanReserved0Counter) ToYaml() (string, error) { + vErr := obj.validateToAndFrom() + if vErr != nil { + return "", vErr + } + opts := protojson.MarshalOptions{ + UseProtoNames: true, + AllowPartial: true, + EmitUnpopulated: false, + } + data, err := opts.Marshal(obj.Msg()) + if err != nil { + return "", err + } + data, err = yaml.JSONToYAML(data) + if err != nil { + return "", err + } + return string(data), nil +} + +func (obj *patternFlowVxlanReserved0Counter) FromYaml(value string) error { + if value == "" { + value = "{}" + } + data, err := yaml.YAMLToJSON([]byte(value)) + if err != nil { + return err + } + opts := protojson.UnmarshalOptions{ + AllowPartial: true, + DiscardUnknown: false, + } + uError := opts.Unmarshal([]byte(data), obj.Msg()) + if uError != nil { + return fmt.Errorf("unmarshal error %s", strings.Replace( + uError.Error(), "\u00a0", " ", -1)[7:]) + } + + vErr := obj.validateToAndFrom() + if vErr != nil { + return vErr + } + return nil +} + +func (obj *patternFlowVxlanReserved0Counter) ToJson() (string, error) { + vErr := obj.validateToAndFrom() + if vErr != nil { + return "", vErr + } + opts := protojson.MarshalOptions{ + UseProtoNames: true, + AllowPartial: true, + EmitUnpopulated: false, + Indent: " ", + } + data, err := opts.Marshal(obj.Msg()) + if err != nil { + return "", err + } + return string(data), nil +} + +func (obj *patternFlowVxlanReserved0Counter) FromJson(value string) error { + opts := protojson.UnmarshalOptions{ + AllowPartial: true, + DiscardUnknown: false, + } + if value == "" { + value = "{}" + } + uError := opts.Unmarshal([]byte(value), obj.Msg()) + if uError != nil { + return fmt.Errorf("unmarshal error %s", strings.Replace( + uError.Error(), "\u00a0", " ", -1)[7:]) + } + + err := obj.validateToAndFrom() + if err != nil { + return err + } + return nil +} + +func (obj *patternFlowVxlanReserved0Counter) validateToAndFrom() error { + // emptyVars() + obj.validateObj(&obj.validation, true) + return obj.validationResult() +} + +func (obj *patternFlowVxlanReserved0Counter) Validate() error { + // emptyVars() + obj.validateObj(&obj.validation, false) + return obj.validationResult() +} + +func (obj *patternFlowVxlanReserved0Counter) String() string { + str, err := obj.ToYaml() + if err != nil { + return err.Error() + } + return str +} + +func (obj *patternFlowVxlanReserved0Counter) Clone() (PatternFlowVxlanReserved0Counter, error) { + vErr := obj.Validate() + if vErr != nil { + return nil, vErr + } + newObj := NewPatternFlowVxlanReserved0Counter() + data, err := proto.Marshal(obj.Msg()) + if err != nil { + return nil, err + } + pbErr := proto.Unmarshal(data, newObj.Msg()) + if pbErr != nil { + return nil, pbErr + } + return newObj, nil +} + +// PatternFlowVxlanReserved0Counter is integer counter pattern +type PatternFlowVxlanReserved0Counter interface { + Validation + // Msg marshals PatternFlowVxlanReserved0Counter to protobuf object *otg.PatternFlowVxlanReserved0Counter + // and doesn't set defaults + Msg() *otg.PatternFlowVxlanReserved0Counter + // SetMsg unmarshals PatternFlowVxlanReserved0Counter from protobuf object *otg.PatternFlowVxlanReserved0Counter + // and doesn't set defaults + SetMsg(*otg.PatternFlowVxlanReserved0Counter) PatternFlowVxlanReserved0Counter + // ToProto marshals PatternFlowVxlanReserved0Counter to protobuf object *otg.PatternFlowVxlanReserved0Counter + ToProto() (*otg.PatternFlowVxlanReserved0Counter, error) + // ToPbText marshals PatternFlowVxlanReserved0Counter to protobuf text + ToPbText() (string, error) + // ToYaml marshals PatternFlowVxlanReserved0Counter to YAML text + ToYaml() (string, error) + // ToJson marshals PatternFlowVxlanReserved0Counter to JSON text + ToJson() (string, error) + // FromProto unmarshals PatternFlowVxlanReserved0Counter from protobuf object *otg.PatternFlowVxlanReserved0Counter + FromProto(msg *otg.PatternFlowVxlanReserved0Counter) (PatternFlowVxlanReserved0Counter, error) + // FromPbText unmarshals PatternFlowVxlanReserved0Counter from protobuf text + FromPbText(value string) error + // FromYaml unmarshals PatternFlowVxlanReserved0Counter from YAML text + FromYaml(value string) error + // FromJson unmarshals PatternFlowVxlanReserved0Counter from JSON text + FromJson(value string) error + // Validate validates PatternFlowVxlanReserved0Counter + Validate() error + // A stringer function + String() string + // Clones the object + Clone() (PatternFlowVxlanReserved0Counter, error) + validateToAndFrom() error + validateObj(vObj *validation, set_default bool) + setDefault() + // Start returns uint32, set in PatternFlowVxlanReserved0Counter. + Start() uint32 + // SetStart assigns uint32 provided by user to PatternFlowVxlanReserved0Counter + SetStart(value uint32) PatternFlowVxlanReserved0Counter + // HasStart checks if Start has been set in PatternFlowVxlanReserved0Counter + HasStart() bool + // Step returns uint32, set in PatternFlowVxlanReserved0Counter. + Step() uint32 + // SetStep assigns uint32 provided by user to PatternFlowVxlanReserved0Counter + SetStep(value uint32) PatternFlowVxlanReserved0Counter + // HasStep checks if Step has been set in PatternFlowVxlanReserved0Counter + HasStep() bool + // Count returns uint32, set in PatternFlowVxlanReserved0Counter. + Count() uint32 + // SetCount assigns uint32 provided by user to PatternFlowVxlanReserved0Counter + SetCount(value uint32) PatternFlowVxlanReserved0Counter + // HasCount checks if Count has been set in PatternFlowVxlanReserved0Counter + HasCount() bool +} + +// description is TBD +// Start returns a uint32 +func (obj *patternFlowVxlanReserved0Counter) Start() uint32 { + + return *obj.obj.Start + +} + +// description is TBD +// Start returns a uint32 +func (obj *patternFlowVxlanReserved0Counter) HasStart() bool { + return obj.obj.Start != nil +} + +// description is TBD +// SetStart sets the uint32 value in the PatternFlowVxlanReserved0Counter object +func (obj *patternFlowVxlanReserved0Counter) SetStart(value uint32) PatternFlowVxlanReserved0Counter { + + obj.obj.Start = &value + return obj +} + +// description is TBD +// Step returns a uint32 +func (obj *patternFlowVxlanReserved0Counter) Step() uint32 { + + return *obj.obj.Step + +} + +// description is TBD +// Step returns a uint32 +func (obj *patternFlowVxlanReserved0Counter) HasStep() bool { + return obj.obj.Step != nil +} + +// description is TBD +// SetStep sets the uint32 value in the PatternFlowVxlanReserved0Counter object +func (obj *patternFlowVxlanReserved0Counter) SetStep(value uint32) PatternFlowVxlanReserved0Counter { + + obj.obj.Step = &value + return obj +} + +// description is TBD +// Count returns a uint32 +func (obj *patternFlowVxlanReserved0Counter) Count() uint32 { + + return *obj.obj.Count + +} + +// description is TBD +// Count returns a uint32 +func (obj *patternFlowVxlanReserved0Counter) HasCount() bool { + return obj.obj.Count != nil +} + +// description is TBD +// SetCount sets the uint32 value in the PatternFlowVxlanReserved0Counter object +func (obj *patternFlowVxlanReserved0Counter) SetCount(value uint32) PatternFlowVxlanReserved0Counter { + + obj.obj.Count = &value + return obj +} + +func (obj *patternFlowVxlanReserved0Counter) validateObj(vObj *validation, set_default bool) { + if set_default { + obj.setDefault() + } + + if obj.obj.Start != nil { + + if *obj.obj.Start > 16777215 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("0 <= PatternFlowVxlanReserved0Counter.Start <= 16777215 but Got %d", *obj.obj.Start)) + } + + } + + if obj.obj.Step != nil { + + if *obj.obj.Step > 16777215 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("0 <= PatternFlowVxlanReserved0Counter.Step <= 16777215 but Got %d", *obj.obj.Step)) + } + + } + + if obj.obj.Count != nil { + + if *obj.obj.Count > 16777215 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("0 <= PatternFlowVxlanReserved0Counter.Count <= 16777215 but Got %d", *obj.obj.Count)) + } + + } + +} + +func (obj *patternFlowVxlanReserved0Counter) setDefault() { + if obj.obj.Start == nil { + obj.SetStart(0) + } + if obj.obj.Step == nil { + obj.SetStep(1) + } + if obj.obj.Count == nil { + obj.SetCount(1) + } + +} + +// ***** PatternFlowVxlanReserved0MetricTag ***** +type patternFlowVxlanReserved0MetricTag struct { + validation + obj *otg.PatternFlowVxlanReserved0MetricTag +} + +func NewPatternFlowVxlanReserved0MetricTag() PatternFlowVxlanReserved0MetricTag { + obj := patternFlowVxlanReserved0MetricTag{obj: &otg.PatternFlowVxlanReserved0MetricTag{}} + obj.setDefault() + return &obj +} + +func (obj *patternFlowVxlanReserved0MetricTag) Msg() *otg.PatternFlowVxlanReserved0MetricTag { + return obj.obj +} + +func (obj *patternFlowVxlanReserved0MetricTag) SetMsg(msg *otg.PatternFlowVxlanReserved0MetricTag) PatternFlowVxlanReserved0MetricTag { + + proto.Merge(obj.obj, msg) + return obj +} + +func (obj *patternFlowVxlanReserved0MetricTag) ToProto() (*otg.PatternFlowVxlanReserved0MetricTag, error) { + err := obj.validateToAndFrom() + if err != nil { + return nil, err + } + return obj.Msg(), nil +} + +func (obj *patternFlowVxlanReserved0MetricTag) FromProto(msg *otg.PatternFlowVxlanReserved0MetricTag) (PatternFlowVxlanReserved0MetricTag, error) { + newObj := obj.SetMsg(msg) + err := newObj.validateToAndFrom() + if err != nil { + return nil, err + } + return newObj, nil +} + +func (obj *patternFlowVxlanReserved0MetricTag) ToPbText() (string, error) { + vErr := obj.validateToAndFrom() + if vErr != nil { + return "", vErr + } + protoMarshal, err := proto.Marshal(obj.Msg()) + if err != nil { + return "", err + } + return string(protoMarshal), nil +} + +func (obj *patternFlowVxlanReserved0MetricTag) FromPbText(value string) error { + retObj := proto.Unmarshal([]byte(value), obj.Msg()) + if retObj != nil { + return retObj + } + + vErr := obj.validateToAndFrom() + if vErr != nil { + return vErr + } + return retObj +} + +func (obj *patternFlowVxlanReserved0MetricTag) ToYaml() (string, error) { + vErr := obj.validateToAndFrom() + if vErr != nil { + return "", vErr + } + opts := protojson.MarshalOptions{ + UseProtoNames: true, + AllowPartial: true, + EmitUnpopulated: false, + } + data, err := opts.Marshal(obj.Msg()) + if err != nil { + return "", err + } + data, err = yaml.JSONToYAML(data) + if err != nil { + return "", err + } + return string(data), nil +} + +func (obj *patternFlowVxlanReserved0MetricTag) FromYaml(value string) error { + if value == "" { + value = "{}" + } + data, err := yaml.YAMLToJSON([]byte(value)) + if err != nil { + return err + } + opts := protojson.UnmarshalOptions{ + AllowPartial: true, + DiscardUnknown: false, + } + uError := opts.Unmarshal([]byte(data), obj.Msg()) + if uError != nil { + return fmt.Errorf("unmarshal error %s", strings.Replace( + uError.Error(), "\u00a0", " ", -1)[7:]) + } + + vErr := obj.validateToAndFrom() + if vErr != nil { + return vErr + } + return nil +} + +func (obj *patternFlowVxlanReserved0MetricTag) ToJson() (string, error) { + vErr := obj.validateToAndFrom() + if vErr != nil { + return "", vErr + } + opts := protojson.MarshalOptions{ + UseProtoNames: true, + AllowPartial: true, + EmitUnpopulated: false, + Indent: " ", + } + data, err := opts.Marshal(obj.Msg()) + if err != nil { + return "", err + } + return string(data), nil +} + +func (obj *patternFlowVxlanReserved0MetricTag) FromJson(value string) error { + opts := protojson.UnmarshalOptions{ + AllowPartial: true, + DiscardUnknown: false, + } + if value == "" { + value = "{}" + } + uError := opts.Unmarshal([]byte(value), obj.Msg()) + if uError != nil { + return fmt.Errorf("unmarshal error %s", strings.Replace( + uError.Error(), "\u00a0", " ", -1)[7:]) + } + + err := obj.validateToAndFrom() + if err != nil { + return err + } + return nil +} + +func (obj *patternFlowVxlanReserved0MetricTag) validateToAndFrom() error { + // emptyVars() + obj.validateObj(&obj.validation, true) + return obj.validationResult() +} + +func (obj *patternFlowVxlanReserved0MetricTag) Validate() error { + // emptyVars() + obj.validateObj(&obj.validation, false) + return obj.validationResult() +} + +func (obj *patternFlowVxlanReserved0MetricTag) String() string { + str, err := obj.ToYaml() + if err != nil { + return err.Error() + } + return str +} + +func (obj *patternFlowVxlanReserved0MetricTag) Clone() (PatternFlowVxlanReserved0MetricTag, error) { + vErr := obj.Validate() + if vErr != nil { + return nil, vErr + } + newObj := NewPatternFlowVxlanReserved0MetricTag() + data, err := proto.Marshal(obj.Msg()) + if err != nil { + return nil, err + } + pbErr := proto.Unmarshal(data, newObj.Msg()) + if pbErr != nil { + return nil, pbErr + } + return newObj, nil +} + +// PatternFlowVxlanReserved0MetricTag is metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. +type PatternFlowVxlanReserved0MetricTag interface { + Validation + // Msg marshals PatternFlowVxlanReserved0MetricTag to protobuf object *otg.PatternFlowVxlanReserved0MetricTag + // and doesn't set defaults + Msg() *otg.PatternFlowVxlanReserved0MetricTag + // SetMsg unmarshals PatternFlowVxlanReserved0MetricTag from protobuf object *otg.PatternFlowVxlanReserved0MetricTag + // and doesn't set defaults + SetMsg(*otg.PatternFlowVxlanReserved0MetricTag) PatternFlowVxlanReserved0MetricTag + // ToProto marshals PatternFlowVxlanReserved0MetricTag to protobuf object *otg.PatternFlowVxlanReserved0MetricTag + ToProto() (*otg.PatternFlowVxlanReserved0MetricTag, error) + // ToPbText marshals PatternFlowVxlanReserved0MetricTag to protobuf text + ToPbText() (string, error) + // ToYaml marshals PatternFlowVxlanReserved0MetricTag to YAML text + ToYaml() (string, error) + // ToJson marshals PatternFlowVxlanReserved0MetricTag to JSON text + ToJson() (string, error) + // FromProto unmarshals PatternFlowVxlanReserved0MetricTag from protobuf object *otg.PatternFlowVxlanReserved0MetricTag + FromProto(msg *otg.PatternFlowVxlanReserved0MetricTag) (PatternFlowVxlanReserved0MetricTag, error) + // FromPbText unmarshals PatternFlowVxlanReserved0MetricTag from protobuf text + FromPbText(value string) error + // FromYaml unmarshals PatternFlowVxlanReserved0MetricTag from YAML text + FromYaml(value string) error + // FromJson unmarshals PatternFlowVxlanReserved0MetricTag from JSON text + FromJson(value string) error + // Validate validates PatternFlowVxlanReserved0MetricTag + Validate() error + // A stringer function + String() string + // Clones the object + Clone() (PatternFlowVxlanReserved0MetricTag, error) + validateToAndFrom() error + validateObj(vObj *validation, set_default bool) + setDefault() + // Name returns string, set in PatternFlowVxlanReserved0MetricTag. + Name() string + // SetName assigns string provided by user to PatternFlowVxlanReserved0MetricTag + SetName(value string) PatternFlowVxlanReserved0MetricTag + // Offset returns uint32, set in PatternFlowVxlanReserved0MetricTag. + Offset() uint32 + // SetOffset assigns uint32 provided by user to PatternFlowVxlanReserved0MetricTag + SetOffset(value uint32) PatternFlowVxlanReserved0MetricTag + // HasOffset checks if Offset has been set in PatternFlowVxlanReserved0MetricTag + HasOffset() bool + // Length returns uint32, set in PatternFlowVxlanReserved0MetricTag. + Length() uint32 + // SetLength assigns uint32 provided by user to PatternFlowVxlanReserved0MetricTag + SetLength(value uint32) PatternFlowVxlanReserved0MetricTag + // HasLength checks if Length has been set in PatternFlowVxlanReserved0MetricTag + HasLength() bool +} + +// Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field +// Name returns a string +func (obj *patternFlowVxlanReserved0MetricTag) Name() string { + + return *obj.obj.Name + +} + +// Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field +// SetName sets the string value in the PatternFlowVxlanReserved0MetricTag object +func (obj *patternFlowVxlanReserved0MetricTag) SetName(value string) PatternFlowVxlanReserved0MetricTag { + + obj.obj.Name = &value + return obj +} + +// Offset in bits relative to start of corresponding header field +// Offset returns a uint32 +func (obj *patternFlowVxlanReserved0MetricTag) Offset() uint32 { + + return *obj.obj.Offset + +} + +// Offset in bits relative to start of corresponding header field +// Offset returns a uint32 +func (obj *patternFlowVxlanReserved0MetricTag) HasOffset() bool { + return obj.obj.Offset != nil +} + +// Offset in bits relative to start of corresponding header field +// SetOffset sets the uint32 value in the PatternFlowVxlanReserved0MetricTag object +func (obj *patternFlowVxlanReserved0MetricTag) SetOffset(value uint32) PatternFlowVxlanReserved0MetricTag { + + obj.obj.Offset = &value + return obj +} + +// Number of bits to track for metrics starting from configured offset of corresponding header field +// Length returns a uint32 +func (obj *patternFlowVxlanReserved0MetricTag) Length() uint32 { + + return *obj.obj.Length + +} + +// Number of bits to track for metrics starting from configured offset of corresponding header field +// Length returns a uint32 +func (obj *patternFlowVxlanReserved0MetricTag) HasLength() bool { + return obj.obj.Length != nil +} + +// Number of bits to track for metrics starting from configured offset of corresponding header field +// SetLength sets the uint32 value in the PatternFlowVxlanReserved0MetricTag object +func (obj *patternFlowVxlanReserved0MetricTag) SetLength(value uint32) PatternFlowVxlanReserved0MetricTag { + + obj.obj.Length = &value + return obj +} + +func (obj *patternFlowVxlanReserved0MetricTag) validateObj(vObj *validation, set_default bool) { + if set_default { + obj.setDefault() + } + + // Name is required + if obj.obj.Name == nil { + vObj.validationErrors = append(vObj.validationErrors, "Name is required field on interface PatternFlowVxlanReserved0MetricTag") + } + + if obj.obj.Offset != nil { + + if *obj.obj.Offset > 23 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("0 <= PatternFlowVxlanReserved0MetricTag.Offset <= 23 but Got %d", *obj.obj.Offset)) + } + + } + + if obj.obj.Length != nil { + + if *obj.obj.Length < 1 || *obj.obj.Length > 24 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("1 <= PatternFlowVxlanReserved0MetricTag.Length <= 24 but Got %d", *obj.obj.Length)) + } + + } + +} + +func (obj *patternFlowVxlanReserved0MetricTag) setDefault() { + if obj.obj.Offset == nil { + obj.SetOffset(0) + } + if obj.obj.Length == nil { + obj.SetLength(24) + } + +} + +// ***** PatternFlowVxlanVniCounter ***** +type patternFlowVxlanVniCounter struct { + validation + obj *otg.PatternFlowVxlanVniCounter +} + +func NewPatternFlowVxlanVniCounter() PatternFlowVxlanVniCounter { + obj := patternFlowVxlanVniCounter{obj: &otg.PatternFlowVxlanVniCounter{}} + obj.setDefault() + return &obj +} + +func (obj *patternFlowVxlanVniCounter) Msg() *otg.PatternFlowVxlanVniCounter { + return obj.obj +} + +func (obj *patternFlowVxlanVniCounter) SetMsg(msg *otg.PatternFlowVxlanVniCounter) PatternFlowVxlanVniCounter { + + proto.Merge(obj.obj, msg) + return obj +} + +func (obj *patternFlowVxlanVniCounter) ToProto() (*otg.PatternFlowVxlanVniCounter, error) { + err := obj.validateToAndFrom() + if err != nil { + return nil, err + } + return obj.Msg(), nil +} + +func (obj *patternFlowVxlanVniCounter) FromProto(msg *otg.PatternFlowVxlanVniCounter) (PatternFlowVxlanVniCounter, error) { + newObj := obj.SetMsg(msg) + err := newObj.validateToAndFrom() + if err != nil { + return nil, err + } + return newObj, nil +} + +func (obj *patternFlowVxlanVniCounter) ToPbText() (string, error) { + vErr := obj.validateToAndFrom() + if vErr != nil { + return "", vErr + } + protoMarshal, err := proto.Marshal(obj.Msg()) + if err != nil { + return "", err + } + return string(protoMarshal), nil +} + +func (obj *patternFlowVxlanVniCounter) FromPbText(value string) error { + retObj := proto.Unmarshal([]byte(value), obj.Msg()) + if retObj != nil { + return retObj + } + + vErr := obj.validateToAndFrom() + if vErr != nil { + return vErr + } + return retObj +} + +func (obj *patternFlowVxlanVniCounter) ToYaml() (string, error) { + vErr := obj.validateToAndFrom() + if vErr != nil { + return "", vErr + } + opts := protojson.MarshalOptions{ + UseProtoNames: true, + AllowPartial: true, + EmitUnpopulated: false, + } + data, err := opts.Marshal(obj.Msg()) + if err != nil { + return "", err + } + data, err = yaml.JSONToYAML(data) + if err != nil { + return "", err + } + return string(data), nil +} + +func (obj *patternFlowVxlanVniCounter) FromYaml(value string) error { + if value == "" { + value = "{}" + } + data, err := yaml.YAMLToJSON([]byte(value)) + if err != nil { + return err + } + opts := protojson.UnmarshalOptions{ + AllowPartial: true, + DiscardUnknown: false, + } + uError := opts.Unmarshal([]byte(data), obj.Msg()) + if uError != nil { + return fmt.Errorf("unmarshal error %s", strings.Replace( + uError.Error(), "\u00a0", " ", -1)[7:]) + } + + vErr := obj.validateToAndFrom() + if vErr != nil { + return vErr + } + return nil +} + +func (obj *patternFlowVxlanVniCounter) ToJson() (string, error) { + vErr := obj.validateToAndFrom() + if vErr != nil { + return "", vErr + } + opts := protojson.MarshalOptions{ + UseProtoNames: true, + AllowPartial: true, + EmitUnpopulated: false, + Indent: " ", + } + data, err := opts.Marshal(obj.Msg()) + if err != nil { + return "", err + } + return string(data), nil +} + +func (obj *patternFlowVxlanVniCounter) FromJson(value string) error { + opts := protojson.UnmarshalOptions{ + AllowPartial: true, + DiscardUnknown: false, + } + if value == "" { + value = "{}" + } + uError := opts.Unmarshal([]byte(value), obj.Msg()) + if uError != nil { + return fmt.Errorf("unmarshal error %s", strings.Replace( + uError.Error(), "\u00a0", " ", -1)[7:]) + } + + err := obj.validateToAndFrom() + if err != nil { + return err + } + return nil +} + +func (obj *patternFlowVxlanVniCounter) validateToAndFrom() error { + // emptyVars() + obj.validateObj(&obj.validation, true) + return obj.validationResult() +} + +func (obj *patternFlowVxlanVniCounter) Validate() error { + // emptyVars() + obj.validateObj(&obj.validation, false) + return obj.validationResult() +} + +func (obj *patternFlowVxlanVniCounter) String() string { + str, err := obj.ToYaml() + if err != nil { + return err.Error() + } + return str +} + +func (obj *patternFlowVxlanVniCounter) Clone() (PatternFlowVxlanVniCounter, error) { + vErr := obj.Validate() + if vErr != nil { + return nil, vErr + } + newObj := NewPatternFlowVxlanVniCounter() + data, err := proto.Marshal(obj.Msg()) + if err != nil { + return nil, err + } + pbErr := proto.Unmarshal(data, newObj.Msg()) + if pbErr != nil { + return nil, pbErr + } + return newObj, nil +} + +// PatternFlowVxlanVniCounter is integer counter pattern +type PatternFlowVxlanVniCounter interface { + Validation + // Msg marshals PatternFlowVxlanVniCounter to protobuf object *otg.PatternFlowVxlanVniCounter + // and doesn't set defaults + Msg() *otg.PatternFlowVxlanVniCounter + // SetMsg unmarshals PatternFlowVxlanVniCounter from protobuf object *otg.PatternFlowVxlanVniCounter + // and doesn't set defaults + SetMsg(*otg.PatternFlowVxlanVniCounter) PatternFlowVxlanVniCounter + // ToProto marshals PatternFlowVxlanVniCounter to protobuf object *otg.PatternFlowVxlanVniCounter + ToProto() (*otg.PatternFlowVxlanVniCounter, error) + // ToPbText marshals PatternFlowVxlanVniCounter to protobuf text + ToPbText() (string, error) + // ToYaml marshals PatternFlowVxlanVniCounter to YAML text + ToYaml() (string, error) + // ToJson marshals PatternFlowVxlanVniCounter to JSON text + ToJson() (string, error) + // FromProto unmarshals PatternFlowVxlanVniCounter from protobuf object *otg.PatternFlowVxlanVniCounter + FromProto(msg *otg.PatternFlowVxlanVniCounter) (PatternFlowVxlanVniCounter, error) + // FromPbText unmarshals PatternFlowVxlanVniCounter from protobuf text + FromPbText(value string) error + // FromYaml unmarshals PatternFlowVxlanVniCounter from YAML text + FromYaml(value string) error + // FromJson unmarshals PatternFlowVxlanVniCounter from JSON text + FromJson(value string) error + // Validate validates PatternFlowVxlanVniCounter + Validate() error + // A stringer function + String() string + // Clones the object + Clone() (PatternFlowVxlanVniCounter, error) + validateToAndFrom() error + validateObj(vObj *validation, set_default bool) + setDefault() + // Start returns uint32, set in PatternFlowVxlanVniCounter. + Start() uint32 + // SetStart assigns uint32 provided by user to PatternFlowVxlanVniCounter + SetStart(value uint32) PatternFlowVxlanVniCounter + // HasStart checks if Start has been set in PatternFlowVxlanVniCounter + HasStart() bool + // Step returns uint32, set in PatternFlowVxlanVniCounter. + Step() uint32 + // SetStep assigns uint32 provided by user to PatternFlowVxlanVniCounter + SetStep(value uint32) PatternFlowVxlanVniCounter + // HasStep checks if Step has been set in PatternFlowVxlanVniCounter + HasStep() bool + // Count returns uint32, set in PatternFlowVxlanVniCounter. + Count() uint32 + // SetCount assigns uint32 provided by user to PatternFlowVxlanVniCounter + SetCount(value uint32) PatternFlowVxlanVniCounter + // HasCount checks if Count has been set in PatternFlowVxlanVniCounter + HasCount() bool +} + +// description is TBD +// Start returns a uint32 +func (obj *patternFlowVxlanVniCounter) Start() uint32 { + + return *obj.obj.Start + +} + +// description is TBD +// Start returns a uint32 +func (obj *patternFlowVxlanVniCounter) HasStart() bool { + return obj.obj.Start != nil +} + +// description is TBD +// SetStart sets the uint32 value in the PatternFlowVxlanVniCounter object +func (obj *patternFlowVxlanVniCounter) SetStart(value uint32) PatternFlowVxlanVniCounter { + + obj.obj.Start = &value + return obj +} + +// description is TBD +// Step returns a uint32 +func (obj *patternFlowVxlanVniCounter) Step() uint32 { + + return *obj.obj.Step + +} + +// description is TBD +// Step returns a uint32 +func (obj *patternFlowVxlanVniCounter) HasStep() bool { + return obj.obj.Step != nil +} + +// description is TBD +// SetStep sets the uint32 value in the PatternFlowVxlanVniCounter object +func (obj *patternFlowVxlanVniCounter) SetStep(value uint32) PatternFlowVxlanVniCounter { + + obj.obj.Step = &value + return obj +} + +// description is TBD +// Count returns a uint32 +func (obj *patternFlowVxlanVniCounter) Count() uint32 { + + return *obj.obj.Count + +} + +// description is TBD +// Count returns a uint32 +func (obj *patternFlowVxlanVniCounter) HasCount() bool { + return obj.obj.Count != nil +} + +// description is TBD +// SetCount sets the uint32 value in the PatternFlowVxlanVniCounter object +func (obj *patternFlowVxlanVniCounter) SetCount(value uint32) PatternFlowVxlanVniCounter { + + obj.obj.Count = &value + return obj +} + +func (obj *patternFlowVxlanVniCounter) validateObj(vObj *validation, set_default bool) { + if set_default { + obj.setDefault() + } + + if obj.obj.Start != nil { + + if *obj.obj.Start > 16777215 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("0 <= PatternFlowVxlanVniCounter.Start <= 16777215 but Got %d", *obj.obj.Start)) + } + + } + + if obj.obj.Step != nil { + + if *obj.obj.Step > 16777215 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("0 <= PatternFlowVxlanVniCounter.Step <= 16777215 but Got %d", *obj.obj.Step)) + } + + } + + if obj.obj.Count != nil { + + if *obj.obj.Count > 16777215 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("0 <= PatternFlowVxlanVniCounter.Count <= 16777215 but Got %d", *obj.obj.Count)) + } + + } + +} + +func (obj *patternFlowVxlanVniCounter) setDefault() { + if obj.obj.Start == nil { + obj.SetStart(0) + } + if obj.obj.Step == nil { + obj.SetStep(1) + } + if obj.obj.Count == nil { + obj.SetCount(1) + } + +} + +// ***** PatternFlowVxlanVniMetricTag ***** +type patternFlowVxlanVniMetricTag struct { + validation + obj *otg.PatternFlowVxlanVniMetricTag +} + +func NewPatternFlowVxlanVniMetricTag() PatternFlowVxlanVniMetricTag { + obj := patternFlowVxlanVniMetricTag{obj: &otg.PatternFlowVxlanVniMetricTag{}} + obj.setDefault() + return &obj +} + +func (obj *patternFlowVxlanVniMetricTag) Msg() *otg.PatternFlowVxlanVniMetricTag { + return obj.obj +} + +func (obj *patternFlowVxlanVniMetricTag) SetMsg(msg *otg.PatternFlowVxlanVniMetricTag) PatternFlowVxlanVniMetricTag { + + proto.Merge(obj.obj, msg) + return obj +} + +func (obj *patternFlowVxlanVniMetricTag) ToProto() (*otg.PatternFlowVxlanVniMetricTag, error) { + err := obj.validateToAndFrom() + if err != nil { + return nil, err + } + return obj.Msg(), nil +} + +func (obj *patternFlowVxlanVniMetricTag) FromProto(msg *otg.PatternFlowVxlanVniMetricTag) (PatternFlowVxlanVniMetricTag, error) { + newObj := obj.SetMsg(msg) + err := newObj.validateToAndFrom() + if err != nil { + return nil, err + } + return newObj, nil +} + +func (obj *patternFlowVxlanVniMetricTag) ToPbText() (string, error) { + vErr := obj.validateToAndFrom() + if vErr != nil { + return "", vErr + } + protoMarshal, err := proto.Marshal(obj.Msg()) + if err != nil { + return "", err + } + return string(protoMarshal), nil +} + +func (obj *patternFlowVxlanVniMetricTag) FromPbText(value string) error { + retObj := proto.Unmarshal([]byte(value), obj.Msg()) + if retObj != nil { + return retObj + } + + vErr := obj.validateToAndFrom() + if vErr != nil { + return vErr + } + return retObj +} + +func (obj *patternFlowVxlanVniMetricTag) ToYaml() (string, error) { + vErr := obj.validateToAndFrom() + if vErr != nil { + return "", vErr + } + opts := protojson.MarshalOptions{ + UseProtoNames: true, + AllowPartial: true, + EmitUnpopulated: false, + } + data, err := opts.Marshal(obj.Msg()) + if err != nil { + return "", err + } + data, err = yaml.JSONToYAML(data) + if err != nil { + return "", err + } + return string(data), nil +} + +func (obj *patternFlowVxlanVniMetricTag) FromYaml(value string) error { + if value == "" { + value = "{}" + } + data, err := yaml.YAMLToJSON([]byte(value)) + if err != nil { + return err + } + opts := protojson.UnmarshalOptions{ + AllowPartial: true, + DiscardUnknown: false, + } + uError := opts.Unmarshal([]byte(data), obj.Msg()) + if uError != nil { + return fmt.Errorf("unmarshal error %s", strings.Replace( + uError.Error(), "\u00a0", " ", -1)[7:]) + } + + vErr := obj.validateToAndFrom() + if vErr != nil { + return vErr + } + return nil +} + +func (obj *patternFlowVxlanVniMetricTag) ToJson() (string, error) { + vErr := obj.validateToAndFrom() + if vErr != nil { + return "", vErr + } + opts := protojson.MarshalOptions{ + UseProtoNames: true, + AllowPartial: true, + EmitUnpopulated: false, + Indent: " ", + } + data, err := opts.Marshal(obj.Msg()) + if err != nil { + return "", err + } + return string(data), nil +} + +func (obj *patternFlowVxlanVniMetricTag) FromJson(value string) error { + opts := protojson.UnmarshalOptions{ + AllowPartial: true, + DiscardUnknown: false, + } + if value == "" { + value = "{}" + } + uError := opts.Unmarshal([]byte(value), obj.Msg()) + if uError != nil { + return fmt.Errorf("unmarshal error %s", strings.Replace( + uError.Error(), "\u00a0", " ", -1)[7:]) + } + + err := obj.validateToAndFrom() + if err != nil { + return err + } + return nil +} + +func (obj *patternFlowVxlanVniMetricTag) validateToAndFrom() error { + // emptyVars() + obj.validateObj(&obj.validation, true) + return obj.validationResult() +} + +func (obj *patternFlowVxlanVniMetricTag) Validate() error { + // emptyVars() + obj.validateObj(&obj.validation, false) + return obj.validationResult() +} + +func (obj *patternFlowVxlanVniMetricTag) String() string { + str, err := obj.ToYaml() + if err != nil { + return err.Error() + } + return str +} + +func (obj *patternFlowVxlanVniMetricTag) Clone() (PatternFlowVxlanVniMetricTag, error) { + vErr := obj.Validate() + if vErr != nil { + return nil, vErr + } + newObj := NewPatternFlowVxlanVniMetricTag() + data, err := proto.Marshal(obj.Msg()) + if err != nil { + return nil, err + } + pbErr := proto.Unmarshal(data, newObj.Msg()) + if pbErr != nil { + return nil, pbErr + } + return newObj, nil +} + +// PatternFlowVxlanVniMetricTag is metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. +type PatternFlowVxlanVniMetricTag interface { + Validation + // Msg marshals PatternFlowVxlanVniMetricTag to protobuf object *otg.PatternFlowVxlanVniMetricTag + // and doesn't set defaults + Msg() *otg.PatternFlowVxlanVniMetricTag + // SetMsg unmarshals PatternFlowVxlanVniMetricTag from protobuf object *otg.PatternFlowVxlanVniMetricTag + // and doesn't set defaults + SetMsg(*otg.PatternFlowVxlanVniMetricTag) PatternFlowVxlanVniMetricTag + // ToProto marshals PatternFlowVxlanVniMetricTag to protobuf object *otg.PatternFlowVxlanVniMetricTag + ToProto() (*otg.PatternFlowVxlanVniMetricTag, error) + // ToPbText marshals PatternFlowVxlanVniMetricTag to protobuf text + ToPbText() (string, error) + // ToYaml marshals PatternFlowVxlanVniMetricTag to YAML text + ToYaml() (string, error) + // ToJson marshals PatternFlowVxlanVniMetricTag to JSON text + ToJson() (string, error) + // FromProto unmarshals PatternFlowVxlanVniMetricTag from protobuf object *otg.PatternFlowVxlanVniMetricTag + FromProto(msg *otg.PatternFlowVxlanVniMetricTag) (PatternFlowVxlanVniMetricTag, error) + // FromPbText unmarshals PatternFlowVxlanVniMetricTag from protobuf text + FromPbText(value string) error + // FromYaml unmarshals PatternFlowVxlanVniMetricTag from YAML text + FromYaml(value string) error + // FromJson unmarshals PatternFlowVxlanVniMetricTag from JSON text + FromJson(value string) error + // Validate validates PatternFlowVxlanVniMetricTag + Validate() error + // A stringer function + String() string + // Clones the object + Clone() (PatternFlowVxlanVniMetricTag, error) + validateToAndFrom() error + validateObj(vObj *validation, set_default bool) + setDefault() + // Name returns string, set in PatternFlowVxlanVniMetricTag. + Name() string + // SetName assigns string provided by user to PatternFlowVxlanVniMetricTag + SetName(value string) PatternFlowVxlanVniMetricTag + // Offset returns uint32, set in PatternFlowVxlanVniMetricTag. + Offset() uint32 + // SetOffset assigns uint32 provided by user to PatternFlowVxlanVniMetricTag + SetOffset(value uint32) PatternFlowVxlanVniMetricTag + // HasOffset checks if Offset has been set in PatternFlowVxlanVniMetricTag + HasOffset() bool + // Length returns uint32, set in PatternFlowVxlanVniMetricTag. + Length() uint32 + // SetLength assigns uint32 provided by user to PatternFlowVxlanVniMetricTag + SetLength(value uint32) PatternFlowVxlanVniMetricTag + // HasLength checks if Length has been set in PatternFlowVxlanVniMetricTag + HasLength() bool +} + +// Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field +// Name returns a string +func (obj *patternFlowVxlanVniMetricTag) Name() string { + + return *obj.obj.Name + +} + +// Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field +// SetName sets the string value in the PatternFlowVxlanVniMetricTag object +func (obj *patternFlowVxlanVniMetricTag) SetName(value string) PatternFlowVxlanVniMetricTag { + + obj.obj.Name = &value + return obj +} + +// Offset in bits relative to start of corresponding header field +// Offset returns a uint32 +func (obj *patternFlowVxlanVniMetricTag) Offset() uint32 { + + return *obj.obj.Offset + +} + +// Offset in bits relative to start of corresponding header field +// Offset returns a uint32 +func (obj *patternFlowVxlanVniMetricTag) HasOffset() bool { + return obj.obj.Offset != nil +} + +// Offset in bits relative to start of corresponding header field +// SetOffset sets the uint32 value in the PatternFlowVxlanVniMetricTag object +func (obj *patternFlowVxlanVniMetricTag) SetOffset(value uint32) PatternFlowVxlanVniMetricTag { + + obj.obj.Offset = &value + return obj +} + +// Number of bits to track for metrics starting from configured offset of corresponding header field +// Length returns a uint32 +func (obj *patternFlowVxlanVniMetricTag) Length() uint32 { + + return *obj.obj.Length + +} + +// Number of bits to track for metrics starting from configured offset of corresponding header field +// Length returns a uint32 +func (obj *patternFlowVxlanVniMetricTag) HasLength() bool { + return obj.obj.Length != nil +} + +// Number of bits to track for metrics starting from configured offset of corresponding header field +// SetLength sets the uint32 value in the PatternFlowVxlanVniMetricTag object +func (obj *patternFlowVxlanVniMetricTag) SetLength(value uint32) PatternFlowVxlanVniMetricTag { + + obj.obj.Length = &value + return obj +} + +func (obj *patternFlowVxlanVniMetricTag) validateObj(vObj *validation, set_default bool) { + if set_default { + obj.setDefault() + } + + // Name is required + if obj.obj.Name == nil { + vObj.validationErrors = append(vObj.validationErrors, "Name is required field on interface PatternFlowVxlanVniMetricTag") + } + + if obj.obj.Offset != nil { + + if *obj.obj.Offset > 23 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("0 <= PatternFlowVxlanVniMetricTag.Offset <= 23 but Got %d", *obj.obj.Offset)) + } + + } + + if obj.obj.Length != nil { + + if *obj.obj.Length < 1 || *obj.obj.Length > 24 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("1 <= PatternFlowVxlanVniMetricTag.Length <= 24 but Got %d", *obj.obj.Length)) + } + + } + +} + +func (obj *patternFlowVxlanVniMetricTag) setDefault() { + if obj.obj.Offset == nil { + obj.SetOffset(0) + } + if obj.obj.Length == nil { + obj.SetLength(24) + } + +} + +// ***** PatternFlowVxlanReserved1Counter ***** +type patternFlowVxlanReserved1Counter struct { + validation + obj *otg.PatternFlowVxlanReserved1Counter +} + +func NewPatternFlowVxlanReserved1Counter() PatternFlowVxlanReserved1Counter { + obj := patternFlowVxlanReserved1Counter{obj: &otg.PatternFlowVxlanReserved1Counter{}} + obj.setDefault() + return &obj +} + +func (obj *patternFlowVxlanReserved1Counter) Msg() *otg.PatternFlowVxlanReserved1Counter { + return obj.obj +} + +func (obj *patternFlowVxlanReserved1Counter) SetMsg(msg *otg.PatternFlowVxlanReserved1Counter) PatternFlowVxlanReserved1Counter { + + proto.Merge(obj.obj, msg) + return obj +} + +func (obj *patternFlowVxlanReserved1Counter) ToProto() (*otg.PatternFlowVxlanReserved1Counter, error) { + err := obj.validateToAndFrom() + if err != nil { + return nil, err + } + return obj.Msg(), nil +} + +func (obj *patternFlowVxlanReserved1Counter) FromProto(msg *otg.PatternFlowVxlanReserved1Counter) (PatternFlowVxlanReserved1Counter, error) { + newObj := obj.SetMsg(msg) + err := newObj.validateToAndFrom() + if err != nil { + return nil, err + } + return newObj, nil +} + +func (obj *patternFlowVxlanReserved1Counter) ToPbText() (string, error) { + vErr := obj.validateToAndFrom() + if vErr != nil { + return "", vErr + } + protoMarshal, err := proto.Marshal(obj.Msg()) + if err != nil { + return "", err + } + return string(protoMarshal), nil +} + +func (obj *patternFlowVxlanReserved1Counter) FromPbText(value string) error { + retObj := proto.Unmarshal([]byte(value), obj.Msg()) + if retObj != nil { + return retObj + } + + vErr := obj.validateToAndFrom() + if vErr != nil { + return vErr + } + return retObj +} + +func (obj *patternFlowVxlanReserved1Counter) ToYaml() (string, error) { + vErr := obj.validateToAndFrom() + if vErr != nil { + return "", vErr + } + opts := protojson.MarshalOptions{ + UseProtoNames: true, + AllowPartial: true, + EmitUnpopulated: false, + } + data, err := opts.Marshal(obj.Msg()) + if err != nil { + return "", err + } + data, err = yaml.JSONToYAML(data) + if err != nil { + return "", err + } + return string(data), nil +} + +func (obj *patternFlowVxlanReserved1Counter) FromYaml(value string) error { + if value == "" { + value = "{}" + } + data, err := yaml.YAMLToJSON([]byte(value)) + if err != nil { + return err + } + opts := protojson.UnmarshalOptions{ + AllowPartial: true, + DiscardUnknown: false, + } + uError := opts.Unmarshal([]byte(data), obj.Msg()) + if uError != nil { + return fmt.Errorf("unmarshal error %s", strings.Replace( + uError.Error(), "\u00a0", " ", -1)[7:]) + } + + vErr := obj.validateToAndFrom() + if vErr != nil { + return vErr + } + return nil +} + +func (obj *patternFlowVxlanReserved1Counter) ToJson() (string, error) { + vErr := obj.validateToAndFrom() + if vErr != nil { + return "", vErr + } + opts := protojson.MarshalOptions{ + UseProtoNames: true, + AllowPartial: true, + EmitUnpopulated: false, + Indent: " ", + } + data, err := opts.Marshal(obj.Msg()) + if err != nil { + return "", err + } + return string(data), nil +} + +func (obj *patternFlowVxlanReserved1Counter) FromJson(value string) error { + opts := protojson.UnmarshalOptions{ + AllowPartial: true, + DiscardUnknown: false, + } + if value == "" { + value = "{}" + } + uError := opts.Unmarshal([]byte(value), obj.Msg()) + if uError != nil { + return fmt.Errorf("unmarshal error %s", strings.Replace( + uError.Error(), "\u00a0", " ", -1)[7:]) + } + + err := obj.validateToAndFrom() + if err != nil { + return err + } + return nil +} + +func (obj *patternFlowVxlanReserved1Counter) validateToAndFrom() error { + // emptyVars() + obj.validateObj(&obj.validation, true) + return obj.validationResult() +} + +func (obj *patternFlowVxlanReserved1Counter) Validate() error { + // emptyVars() + obj.validateObj(&obj.validation, false) + return obj.validationResult() +} + +func (obj *patternFlowVxlanReserved1Counter) String() string { + str, err := obj.ToYaml() + if err != nil { + return err.Error() + } + return str +} + +func (obj *patternFlowVxlanReserved1Counter) Clone() (PatternFlowVxlanReserved1Counter, error) { + vErr := obj.Validate() + if vErr != nil { + return nil, vErr + } + newObj := NewPatternFlowVxlanReserved1Counter() + data, err := proto.Marshal(obj.Msg()) + if err != nil { + return nil, err + } + pbErr := proto.Unmarshal(data, newObj.Msg()) + if pbErr != nil { + return nil, pbErr + } + return newObj, nil +} + +// PatternFlowVxlanReserved1Counter is integer counter pattern +type PatternFlowVxlanReserved1Counter interface { + Validation + // Msg marshals PatternFlowVxlanReserved1Counter to protobuf object *otg.PatternFlowVxlanReserved1Counter + // and doesn't set defaults + Msg() *otg.PatternFlowVxlanReserved1Counter + // SetMsg unmarshals PatternFlowVxlanReserved1Counter from protobuf object *otg.PatternFlowVxlanReserved1Counter + // and doesn't set defaults + SetMsg(*otg.PatternFlowVxlanReserved1Counter) PatternFlowVxlanReserved1Counter + // ToProto marshals PatternFlowVxlanReserved1Counter to protobuf object *otg.PatternFlowVxlanReserved1Counter + ToProto() (*otg.PatternFlowVxlanReserved1Counter, error) + // ToPbText marshals PatternFlowVxlanReserved1Counter to protobuf text + ToPbText() (string, error) + // ToYaml marshals PatternFlowVxlanReserved1Counter to YAML text + ToYaml() (string, error) + // ToJson marshals PatternFlowVxlanReserved1Counter to JSON text + ToJson() (string, error) + // FromProto unmarshals PatternFlowVxlanReserved1Counter from protobuf object *otg.PatternFlowVxlanReserved1Counter + FromProto(msg *otg.PatternFlowVxlanReserved1Counter) (PatternFlowVxlanReserved1Counter, error) + // FromPbText unmarshals PatternFlowVxlanReserved1Counter from protobuf text + FromPbText(value string) error + // FromYaml unmarshals PatternFlowVxlanReserved1Counter from YAML text + FromYaml(value string) error + // FromJson unmarshals PatternFlowVxlanReserved1Counter from JSON text + FromJson(value string) error + // Validate validates PatternFlowVxlanReserved1Counter + Validate() error + // A stringer function + String() string + // Clones the object + Clone() (PatternFlowVxlanReserved1Counter, error) + validateToAndFrom() error + validateObj(vObj *validation, set_default bool) + setDefault() + // Start returns uint32, set in PatternFlowVxlanReserved1Counter. + Start() uint32 + // SetStart assigns uint32 provided by user to PatternFlowVxlanReserved1Counter + SetStart(value uint32) PatternFlowVxlanReserved1Counter + // HasStart checks if Start has been set in PatternFlowVxlanReserved1Counter + HasStart() bool + // Step returns uint32, set in PatternFlowVxlanReserved1Counter. + Step() uint32 + // SetStep assigns uint32 provided by user to PatternFlowVxlanReserved1Counter + SetStep(value uint32) PatternFlowVxlanReserved1Counter + // HasStep checks if Step has been set in PatternFlowVxlanReserved1Counter + HasStep() bool + // Count returns uint32, set in PatternFlowVxlanReserved1Counter. + Count() uint32 + // SetCount assigns uint32 provided by user to PatternFlowVxlanReserved1Counter + SetCount(value uint32) PatternFlowVxlanReserved1Counter + // HasCount checks if Count has been set in PatternFlowVxlanReserved1Counter + HasCount() bool +} + +// description is TBD +// Start returns a uint32 +func (obj *patternFlowVxlanReserved1Counter) Start() uint32 { + + return *obj.obj.Start + +} + +// description is TBD +// Start returns a uint32 +func (obj *patternFlowVxlanReserved1Counter) HasStart() bool { + return obj.obj.Start != nil +} + +// description is TBD +// SetStart sets the uint32 value in the PatternFlowVxlanReserved1Counter object +func (obj *patternFlowVxlanReserved1Counter) SetStart(value uint32) PatternFlowVxlanReserved1Counter { + + obj.obj.Start = &value + return obj +} + +// description is TBD +// Step returns a uint32 +func (obj *patternFlowVxlanReserved1Counter) Step() uint32 { + + return *obj.obj.Step + +} + +// description is TBD +// Step returns a uint32 +func (obj *patternFlowVxlanReserved1Counter) HasStep() bool { + return obj.obj.Step != nil +} + +// description is TBD +// SetStep sets the uint32 value in the PatternFlowVxlanReserved1Counter object +func (obj *patternFlowVxlanReserved1Counter) SetStep(value uint32) PatternFlowVxlanReserved1Counter { + + obj.obj.Step = &value + return obj +} + +// description is TBD +// Count returns a uint32 +func (obj *patternFlowVxlanReserved1Counter) Count() uint32 { + + return *obj.obj.Count + +} + +// description is TBD +// Count returns a uint32 +func (obj *patternFlowVxlanReserved1Counter) HasCount() bool { + return obj.obj.Count != nil +} + +// description is TBD +// SetCount sets the uint32 value in the PatternFlowVxlanReserved1Counter object +func (obj *patternFlowVxlanReserved1Counter) SetCount(value uint32) PatternFlowVxlanReserved1Counter { + + obj.obj.Count = &value + return obj +} + +func (obj *patternFlowVxlanReserved1Counter) validateObj(vObj *validation, set_default bool) { + if set_default { + obj.setDefault() + } + + if obj.obj.Start != nil { + + if *obj.obj.Start > 255 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("0 <= PatternFlowVxlanReserved1Counter.Start <= 255 but Got %d", *obj.obj.Start)) + } + + } + + if obj.obj.Step != nil { + + if *obj.obj.Step > 255 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("0 <= PatternFlowVxlanReserved1Counter.Step <= 255 but Got %d", *obj.obj.Step)) + } + + } + + if obj.obj.Count != nil { + + if *obj.obj.Count > 255 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("0 <= PatternFlowVxlanReserved1Counter.Count <= 255 but Got %d", *obj.obj.Count)) + } + + } + +} + +func (obj *patternFlowVxlanReserved1Counter) setDefault() { + if obj.obj.Start == nil { + obj.SetStart(0) + } + if obj.obj.Step == nil { + obj.SetStep(1) + } + if obj.obj.Count == nil { + obj.SetCount(1) + } + +} + +// ***** PatternFlowVxlanReserved1MetricTag ***** +type patternFlowVxlanReserved1MetricTag struct { + validation + obj *otg.PatternFlowVxlanReserved1MetricTag +} + +func NewPatternFlowVxlanReserved1MetricTag() PatternFlowVxlanReserved1MetricTag { + obj := patternFlowVxlanReserved1MetricTag{obj: &otg.PatternFlowVxlanReserved1MetricTag{}} + obj.setDefault() + return &obj +} + +func (obj *patternFlowVxlanReserved1MetricTag) Msg() *otg.PatternFlowVxlanReserved1MetricTag { + return obj.obj +} + +func (obj *patternFlowVxlanReserved1MetricTag) SetMsg(msg *otg.PatternFlowVxlanReserved1MetricTag) PatternFlowVxlanReserved1MetricTag { + + proto.Merge(obj.obj, msg) + return obj +} + +func (obj *patternFlowVxlanReserved1MetricTag) ToProto() (*otg.PatternFlowVxlanReserved1MetricTag, error) { + err := obj.validateToAndFrom() + if err != nil { + return nil, err + } + return obj.Msg(), nil +} + +func (obj *patternFlowVxlanReserved1MetricTag) FromProto(msg *otg.PatternFlowVxlanReserved1MetricTag) (PatternFlowVxlanReserved1MetricTag, error) { + newObj := obj.SetMsg(msg) + err := newObj.validateToAndFrom() + if err != nil { + return nil, err + } + return newObj, nil +} + +func (obj *patternFlowVxlanReserved1MetricTag) ToPbText() (string, error) { + vErr := obj.validateToAndFrom() + if vErr != nil { + return "", vErr + } + protoMarshal, err := proto.Marshal(obj.Msg()) + if err != nil { + return "", err + } + return string(protoMarshal), nil +} + +func (obj *patternFlowVxlanReserved1MetricTag) FromPbText(value string) error { + retObj := proto.Unmarshal([]byte(value), obj.Msg()) + if retObj != nil { + return retObj + } + + vErr := obj.validateToAndFrom() + if vErr != nil { + return vErr + } + return retObj +} + +func (obj *patternFlowVxlanReserved1MetricTag) ToYaml() (string, error) { + vErr := obj.validateToAndFrom() + if vErr != nil { + return "", vErr + } + opts := protojson.MarshalOptions{ + UseProtoNames: true, + AllowPartial: true, + EmitUnpopulated: false, + } + data, err := opts.Marshal(obj.Msg()) + if err != nil { + return "", err + } + data, err = yaml.JSONToYAML(data) + if err != nil { + return "", err + } + return string(data), nil +} + +func (obj *patternFlowVxlanReserved1MetricTag) FromYaml(value string) error { + if value == "" { + value = "{}" + } + data, err := yaml.YAMLToJSON([]byte(value)) + if err != nil { + return err + } + opts := protojson.UnmarshalOptions{ + AllowPartial: true, + DiscardUnknown: false, + } + uError := opts.Unmarshal([]byte(data), obj.Msg()) + if uError != nil { + return fmt.Errorf("unmarshal error %s", strings.Replace( + uError.Error(), "\u00a0", " ", -1)[7:]) + } + + vErr := obj.validateToAndFrom() + if vErr != nil { + return vErr + } + return nil +} + +func (obj *patternFlowVxlanReserved1MetricTag) ToJson() (string, error) { + vErr := obj.validateToAndFrom() + if vErr != nil { + return "", vErr + } + opts := protojson.MarshalOptions{ + UseProtoNames: true, + AllowPartial: true, + EmitUnpopulated: false, + Indent: " ", + } + data, err := opts.Marshal(obj.Msg()) + if err != nil { + return "", err + } + return string(data), nil +} + +func (obj *patternFlowVxlanReserved1MetricTag) FromJson(value string) error { + opts := protojson.UnmarshalOptions{ + AllowPartial: true, + DiscardUnknown: false, + } + if value == "" { + value = "{}" + } + uError := opts.Unmarshal([]byte(value), obj.Msg()) + if uError != nil { + return fmt.Errorf("unmarshal error %s", strings.Replace( + uError.Error(), "\u00a0", " ", -1)[7:]) + } + + err := obj.validateToAndFrom() + if err != nil { + return err + } + return nil +} + +func (obj *patternFlowVxlanReserved1MetricTag) validateToAndFrom() error { + // emptyVars() + obj.validateObj(&obj.validation, true) + return obj.validationResult() +} + +func (obj *patternFlowVxlanReserved1MetricTag) Validate() error { + // emptyVars() + obj.validateObj(&obj.validation, false) + return obj.validationResult() +} + +func (obj *patternFlowVxlanReserved1MetricTag) String() string { + str, err := obj.ToYaml() + if err != nil { + return err.Error() + } + return str +} + +func (obj *patternFlowVxlanReserved1MetricTag) Clone() (PatternFlowVxlanReserved1MetricTag, error) { + vErr := obj.Validate() + if vErr != nil { + return nil, vErr + } + newObj := NewPatternFlowVxlanReserved1MetricTag() + data, err := proto.Marshal(obj.Msg()) + if err != nil { + return nil, err + } + pbErr := proto.Unmarshal(data, newObj.Msg()) + if pbErr != nil { + return nil, pbErr + } + return newObj, nil +} + +// PatternFlowVxlanReserved1MetricTag is metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. +type PatternFlowVxlanReserved1MetricTag interface { + Validation + // Msg marshals PatternFlowVxlanReserved1MetricTag to protobuf object *otg.PatternFlowVxlanReserved1MetricTag + // and doesn't set defaults + Msg() *otg.PatternFlowVxlanReserved1MetricTag + // SetMsg unmarshals PatternFlowVxlanReserved1MetricTag from protobuf object *otg.PatternFlowVxlanReserved1MetricTag + // and doesn't set defaults + SetMsg(*otg.PatternFlowVxlanReserved1MetricTag) PatternFlowVxlanReserved1MetricTag + // ToProto marshals PatternFlowVxlanReserved1MetricTag to protobuf object *otg.PatternFlowVxlanReserved1MetricTag + ToProto() (*otg.PatternFlowVxlanReserved1MetricTag, error) + // ToPbText marshals PatternFlowVxlanReserved1MetricTag to protobuf text + ToPbText() (string, error) + // ToYaml marshals PatternFlowVxlanReserved1MetricTag to YAML text + ToYaml() (string, error) + // ToJson marshals PatternFlowVxlanReserved1MetricTag to JSON text + ToJson() (string, error) + // FromProto unmarshals PatternFlowVxlanReserved1MetricTag from protobuf object *otg.PatternFlowVxlanReserved1MetricTag + FromProto(msg *otg.PatternFlowVxlanReserved1MetricTag) (PatternFlowVxlanReserved1MetricTag, error) + // FromPbText unmarshals PatternFlowVxlanReserved1MetricTag from protobuf text + FromPbText(value string) error + // FromYaml unmarshals PatternFlowVxlanReserved1MetricTag from YAML text + FromYaml(value string) error + // FromJson unmarshals PatternFlowVxlanReserved1MetricTag from JSON text + FromJson(value string) error + // Validate validates PatternFlowVxlanReserved1MetricTag + Validate() error + // A stringer function + String() string + // Clones the object + Clone() (PatternFlowVxlanReserved1MetricTag, error) + validateToAndFrom() error + validateObj(vObj *validation, set_default bool) + setDefault() + // Name returns string, set in PatternFlowVxlanReserved1MetricTag. + Name() string + // SetName assigns string provided by user to PatternFlowVxlanReserved1MetricTag + SetName(value string) PatternFlowVxlanReserved1MetricTag + // Offset returns uint32, set in PatternFlowVxlanReserved1MetricTag. + Offset() uint32 + // SetOffset assigns uint32 provided by user to PatternFlowVxlanReserved1MetricTag + SetOffset(value uint32) PatternFlowVxlanReserved1MetricTag + // HasOffset checks if Offset has been set in PatternFlowVxlanReserved1MetricTag + HasOffset() bool + // Length returns uint32, set in PatternFlowVxlanReserved1MetricTag. + Length() uint32 + // SetLength assigns uint32 provided by user to PatternFlowVxlanReserved1MetricTag + SetLength(value uint32) PatternFlowVxlanReserved1MetricTag + // HasLength checks if Length has been set in PatternFlowVxlanReserved1MetricTag + HasLength() bool +} + +// Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field +// Name returns a string +func (obj *patternFlowVxlanReserved1MetricTag) Name() string { + + return *obj.obj.Name + +} + +// Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field +// SetName sets the string value in the PatternFlowVxlanReserved1MetricTag object +func (obj *patternFlowVxlanReserved1MetricTag) SetName(value string) PatternFlowVxlanReserved1MetricTag { + + obj.obj.Name = &value + return obj +} + +// Offset in bits relative to start of corresponding header field +// Offset returns a uint32 +func (obj *patternFlowVxlanReserved1MetricTag) Offset() uint32 { + + return *obj.obj.Offset + +} + +// Offset in bits relative to start of corresponding header field +// Offset returns a uint32 +func (obj *patternFlowVxlanReserved1MetricTag) HasOffset() bool { + return obj.obj.Offset != nil +} + +// Offset in bits relative to start of corresponding header field +// SetOffset sets the uint32 value in the PatternFlowVxlanReserved1MetricTag object +func (obj *patternFlowVxlanReserved1MetricTag) SetOffset(value uint32) PatternFlowVxlanReserved1MetricTag { + + obj.obj.Offset = &value + return obj +} + +// Number of bits to track for metrics starting from configured offset of corresponding header field +// Length returns a uint32 +func (obj *patternFlowVxlanReserved1MetricTag) Length() uint32 { + + return *obj.obj.Length + +} + +// Number of bits to track for metrics starting from configured offset of corresponding header field +// Length returns a uint32 +func (obj *patternFlowVxlanReserved1MetricTag) HasLength() bool { + return obj.obj.Length != nil +} + +// Number of bits to track for metrics starting from configured offset of corresponding header field +// SetLength sets the uint32 value in the PatternFlowVxlanReserved1MetricTag object +func (obj *patternFlowVxlanReserved1MetricTag) SetLength(value uint32) PatternFlowVxlanReserved1MetricTag { + + obj.obj.Length = &value + return obj +} + +func (obj *patternFlowVxlanReserved1MetricTag) validateObj(vObj *validation, set_default bool) { + if set_default { + obj.setDefault() + } + + // Name is required + if obj.obj.Name == nil { + vObj.validationErrors = append(vObj.validationErrors, "Name is required field on interface PatternFlowVxlanReserved1MetricTag") + } + + if obj.obj.Offset != nil { + + if *obj.obj.Offset > 7 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("0 <= PatternFlowVxlanReserved1MetricTag.Offset <= 7 but Got %d", *obj.obj.Offset)) + } + + } + + if obj.obj.Length != nil { + + if *obj.obj.Length < 1 || *obj.obj.Length > 8 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("1 <= PatternFlowVxlanReserved1MetricTag.Length <= 8 but Got %d", *obj.obj.Length)) + } + + } + +} + +func (obj *patternFlowVxlanReserved1MetricTag) setDefault() { + if obj.obj.Offset == nil { + obj.SetOffset(0) + } + if obj.obj.Length == nil { + obj.SetLength(8) + } + +} + +// ***** PatternFlowIpv4VersionCounter ***** +type patternFlowIpv4VersionCounter struct { + validation + obj *otg.PatternFlowIpv4VersionCounter +} + +func NewPatternFlowIpv4VersionCounter() PatternFlowIpv4VersionCounter { + obj := patternFlowIpv4VersionCounter{obj: &otg.PatternFlowIpv4VersionCounter{}} + obj.setDefault() + return &obj +} + +func (obj *patternFlowIpv4VersionCounter) Msg() *otg.PatternFlowIpv4VersionCounter { + return obj.obj +} + +func (obj *patternFlowIpv4VersionCounter) SetMsg(msg *otg.PatternFlowIpv4VersionCounter) PatternFlowIpv4VersionCounter { + + proto.Merge(obj.obj, msg) + return obj +} + +func (obj *patternFlowIpv4VersionCounter) ToProto() (*otg.PatternFlowIpv4VersionCounter, error) { + err := obj.validateToAndFrom() + if err != nil { + return nil, err + } + return obj.Msg(), nil +} + +func (obj *patternFlowIpv4VersionCounter) FromProto(msg *otg.PatternFlowIpv4VersionCounter) (PatternFlowIpv4VersionCounter, error) { + newObj := obj.SetMsg(msg) + err := newObj.validateToAndFrom() + if err != nil { + return nil, err + } + return newObj, nil +} + +func (obj *patternFlowIpv4VersionCounter) ToPbText() (string, error) { + vErr := obj.validateToAndFrom() + if vErr != nil { + return "", vErr + } + protoMarshal, err := proto.Marshal(obj.Msg()) + if err != nil { + return "", err + } + return string(protoMarshal), nil +} + +func (obj *patternFlowIpv4VersionCounter) FromPbText(value string) error { + retObj := proto.Unmarshal([]byte(value), obj.Msg()) + if retObj != nil { + return retObj + } + + vErr := obj.validateToAndFrom() + if vErr != nil { + return vErr + } + return retObj +} + +func (obj *patternFlowIpv4VersionCounter) ToYaml() (string, error) { + vErr := obj.validateToAndFrom() + if vErr != nil { + return "", vErr + } + opts := protojson.MarshalOptions{ + UseProtoNames: true, + AllowPartial: true, + EmitUnpopulated: false, + } + data, err := opts.Marshal(obj.Msg()) + if err != nil { + return "", err + } + data, err = yaml.JSONToYAML(data) + if err != nil { + return "", err + } + return string(data), nil +} + +func (obj *patternFlowIpv4VersionCounter) FromYaml(value string) error { + if value == "" { + value = "{}" + } + data, err := yaml.YAMLToJSON([]byte(value)) + if err != nil { + return err + } + opts := protojson.UnmarshalOptions{ + AllowPartial: true, + DiscardUnknown: false, + } + uError := opts.Unmarshal([]byte(data), obj.Msg()) + if uError != nil { + return fmt.Errorf("unmarshal error %s", strings.Replace( + uError.Error(), "\u00a0", " ", -1)[7:]) + } + + vErr := obj.validateToAndFrom() + if vErr != nil { + return vErr + } + return nil +} + +func (obj *patternFlowIpv4VersionCounter) ToJson() (string, error) { + vErr := obj.validateToAndFrom() + if vErr != nil { + return "", vErr + } + opts := protojson.MarshalOptions{ + UseProtoNames: true, + AllowPartial: true, + EmitUnpopulated: false, + Indent: " ", + } + data, err := opts.Marshal(obj.Msg()) + if err != nil { + return "", err + } + return string(data), nil +} + +func (obj *patternFlowIpv4VersionCounter) FromJson(value string) error { + opts := protojson.UnmarshalOptions{ + AllowPartial: true, + DiscardUnknown: false, + } + if value == "" { + value = "{}" + } + uError := opts.Unmarshal([]byte(value), obj.Msg()) + if uError != nil { + return fmt.Errorf("unmarshal error %s", strings.Replace( + uError.Error(), "\u00a0", " ", -1)[7:]) + } + + err := obj.validateToAndFrom() + if err != nil { + return err + } + return nil +} + +func (obj *patternFlowIpv4VersionCounter) validateToAndFrom() error { + // emptyVars() + obj.validateObj(&obj.validation, true) + return obj.validationResult() +} + +func (obj *patternFlowIpv4VersionCounter) Validate() error { + // emptyVars() + obj.validateObj(&obj.validation, false) + return obj.validationResult() +} + +func (obj *patternFlowIpv4VersionCounter) String() string { + str, err := obj.ToYaml() + if err != nil { + return err.Error() + } + return str +} + +func (obj *patternFlowIpv4VersionCounter) Clone() (PatternFlowIpv4VersionCounter, error) { + vErr := obj.Validate() + if vErr != nil { + return nil, vErr + } + newObj := NewPatternFlowIpv4VersionCounter() + data, err := proto.Marshal(obj.Msg()) + if err != nil { + return nil, err + } + pbErr := proto.Unmarshal(data, newObj.Msg()) + if pbErr != nil { + return nil, pbErr + } + return newObj, nil +} + +// PatternFlowIpv4VersionCounter is integer counter pattern +type PatternFlowIpv4VersionCounter interface { + Validation + // Msg marshals PatternFlowIpv4VersionCounter to protobuf object *otg.PatternFlowIpv4VersionCounter + // and doesn't set defaults + Msg() *otg.PatternFlowIpv4VersionCounter + // SetMsg unmarshals PatternFlowIpv4VersionCounter from protobuf object *otg.PatternFlowIpv4VersionCounter + // and doesn't set defaults + SetMsg(*otg.PatternFlowIpv4VersionCounter) PatternFlowIpv4VersionCounter + // ToProto marshals PatternFlowIpv4VersionCounter to protobuf object *otg.PatternFlowIpv4VersionCounter + ToProto() (*otg.PatternFlowIpv4VersionCounter, error) + // ToPbText marshals PatternFlowIpv4VersionCounter to protobuf text + ToPbText() (string, error) + // ToYaml marshals PatternFlowIpv4VersionCounter to YAML text + ToYaml() (string, error) + // ToJson marshals PatternFlowIpv4VersionCounter to JSON text + ToJson() (string, error) + // FromProto unmarshals PatternFlowIpv4VersionCounter from protobuf object *otg.PatternFlowIpv4VersionCounter + FromProto(msg *otg.PatternFlowIpv4VersionCounter) (PatternFlowIpv4VersionCounter, error) + // FromPbText unmarshals PatternFlowIpv4VersionCounter from protobuf text + FromPbText(value string) error + // FromYaml unmarshals PatternFlowIpv4VersionCounter from YAML text + FromYaml(value string) error + // FromJson unmarshals PatternFlowIpv4VersionCounter from JSON text + FromJson(value string) error + // Validate validates PatternFlowIpv4VersionCounter + Validate() error + // A stringer function + String() string + // Clones the object + Clone() (PatternFlowIpv4VersionCounter, error) + validateToAndFrom() error + validateObj(vObj *validation, set_default bool) + setDefault() + // Start returns uint32, set in PatternFlowIpv4VersionCounter. + Start() uint32 + // SetStart assigns uint32 provided by user to PatternFlowIpv4VersionCounter + SetStart(value uint32) PatternFlowIpv4VersionCounter + // HasStart checks if Start has been set in PatternFlowIpv4VersionCounter + HasStart() bool + // Step returns uint32, set in PatternFlowIpv4VersionCounter. + Step() uint32 + // SetStep assigns uint32 provided by user to PatternFlowIpv4VersionCounter + SetStep(value uint32) PatternFlowIpv4VersionCounter + // HasStep checks if Step has been set in PatternFlowIpv4VersionCounter + HasStep() bool + // Count returns uint32, set in PatternFlowIpv4VersionCounter. + Count() uint32 + // SetCount assigns uint32 provided by user to PatternFlowIpv4VersionCounter + SetCount(value uint32) PatternFlowIpv4VersionCounter + // HasCount checks if Count has been set in PatternFlowIpv4VersionCounter + HasCount() bool +} + +// description is TBD +// Start returns a uint32 +func (obj *patternFlowIpv4VersionCounter) Start() uint32 { + + return *obj.obj.Start + +} + +// description is TBD +// Start returns a uint32 +func (obj *patternFlowIpv4VersionCounter) HasStart() bool { + return obj.obj.Start != nil +} + +// description is TBD +// SetStart sets the uint32 value in the PatternFlowIpv4VersionCounter object +func (obj *patternFlowIpv4VersionCounter) SetStart(value uint32) PatternFlowIpv4VersionCounter { + + obj.obj.Start = &value + return obj +} + +// description is TBD +// Step returns a uint32 +func (obj *patternFlowIpv4VersionCounter) Step() uint32 { + + return *obj.obj.Step + +} + +// description is TBD +// Step returns a uint32 +func (obj *patternFlowIpv4VersionCounter) HasStep() bool { + return obj.obj.Step != nil +} + +// description is TBD +// SetStep sets the uint32 value in the PatternFlowIpv4VersionCounter object +func (obj *patternFlowIpv4VersionCounter) SetStep(value uint32) PatternFlowIpv4VersionCounter { + + obj.obj.Step = &value + return obj +} + +// description is TBD +// Count returns a uint32 +func (obj *patternFlowIpv4VersionCounter) Count() uint32 { + + return *obj.obj.Count + +} + +// description is TBD +// Count returns a uint32 +func (obj *patternFlowIpv4VersionCounter) HasCount() bool { + return obj.obj.Count != nil +} + +// description is TBD +// SetCount sets the uint32 value in the PatternFlowIpv4VersionCounter object +func (obj *patternFlowIpv4VersionCounter) SetCount(value uint32) PatternFlowIpv4VersionCounter { + + obj.obj.Count = &value + return obj +} + +func (obj *patternFlowIpv4VersionCounter) validateObj(vObj *validation, set_default bool) { + if set_default { + obj.setDefault() + } + + if obj.obj.Start != nil { + + if *obj.obj.Start > 15 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("0 <= PatternFlowIpv4VersionCounter.Start <= 15 but Got %d", *obj.obj.Start)) + } + + } + + if obj.obj.Step != nil { + + if *obj.obj.Step > 15 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("0 <= PatternFlowIpv4VersionCounter.Step <= 15 but Got %d", *obj.obj.Step)) + } + + } + + if obj.obj.Count != nil { + + if *obj.obj.Count > 15 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("0 <= PatternFlowIpv4VersionCounter.Count <= 15 but Got %d", *obj.obj.Count)) + } + + } + +} + +func (obj *patternFlowIpv4VersionCounter) setDefault() { + if obj.obj.Start == nil { + obj.SetStart(4) + } + if obj.obj.Step == nil { + obj.SetStep(1) + } + if obj.obj.Count == nil { + obj.SetCount(1) + } + +} + +// ***** PatternFlowIpv4VersionMetricTag ***** +type patternFlowIpv4VersionMetricTag struct { + validation + obj *otg.PatternFlowIpv4VersionMetricTag +} + +func NewPatternFlowIpv4VersionMetricTag() PatternFlowIpv4VersionMetricTag { + obj := patternFlowIpv4VersionMetricTag{obj: &otg.PatternFlowIpv4VersionMetricTag{}} + obj.setDefault() + return &obj +} + +func (obj *patternFlowIpv4VersionMetricTag) Msg() *otg.PatternFlowIpv4VersionMetricTag { + return obj.obj +} + +func (obj *patternFlowIpv4VersionMetricTag) SetMsg(msg *otg.PatternFlowIpv4VersionMetricTag) PatternFlowIpv4VersionMetricTag { + + proto.Merge(obj.obj, msg) + return obj +} + +func (obj *patternFlowIpv4VersionMetricTag) ToProto() (*otg.PatternFlowIpv4VersionMetricTag, error) { + err := obj.validateToAndFrom() + if err != nil { + return nil, err + } + return obj.Msg(), nil +} + +func (obj *patternFlowIpv4VersionMetricTag) FromProto(msg *otg.PatternFlowIpv4VersionMetricTag) (PatternFlowIpv4VersionMetricTag, error) { + newObj := obj.SetMsg(msg) + err := newObj.validateToAndFrom() + if err != nil { + return nil, err + } + return newObj, nil +} + +func (obj *patternFlowIpv4VersionMetricTag) ToPbText() (string, error) { + vErr := obj.validateToAndFrom() + if vErr != nil { + return "", vErr + } + protoMarshal, err := proto.Marshal(obj.Msg()) + if err != nil { + return "", err + } + return string(protoMarshal), nil +} + +func (obj *patternFlowIpv4VersionMetricTag) FromPbText(value string) error { + retObj := proto.Unmarshal([]byte(value), obj.Msg()) + if retObj != nil { + return retObj + } + + vErr := obj.validateToAndFrom() + if vErr != nil { + return vErr + } + return retObj +} + +func (obj *patternFlowIpv4VersionMetricTag) ToYaml() (string, error) { + vErr := obj.validateToAndFrom() + if vErr != nil { + return "", vErr + } + opts := protojson.MarshalOptions{ + UseProtoNames: true, + AllowPartial: true, + EmitUnpopulated: false, + } + data, err := opts.Marshal(obj.Msg()) + if err != nil { + return "", err + } + data, err = yaml.JSONToYAML(data) + if err != nil { + return "", err + } + return string(data), nil +} + +func (obj *patternFlowIpv4VersionMetricTag) FromYaml(value string) error { + if value == "" { + value = "{}" + } + data, err := yaml.YAMLToJSON([]byte(value)) + if err != nil { + return err + } + opts := protojson.UnmarshalOptions{ + AllowPartial: true, + DiscardUnknown: false, + } + uError := opts.Unmarshal([]byte(data), obj.Msg()) + if uError != nil { + return fmt.Errorf("unmarshal error %s", strings.Replace( + uError.Error(), "\u00a0", " ", -1)[7:]) + } + + vErr := obj.validateToAndFrom() + if vErr != nil { + return vErr + } + return nil +} + +func (obj *patternFlowIpv4VersionMetricTag) ToJson() (string, error) { + vErr := obj.validateToAndFrom() + if vErr != nil { + return "", vErr + } + opts := protojson.MarshalOptions{ + UseProtoNames: true, + AllowPartial: true, + EmitUnpopulated: false, + Indent: " ", + } + data, err := opts.Marshal(obj.Msg()) + if err != nil { + return "", err + } + return string(data), nil +} + +func (obj *patternFlowIpv4VersionMetricTag) FromJson(value string) error { + opts := protojson.UnmarshalOptions{ + AllowPartial: true, + DiscardUnknown: false, + } + if value == "" { + value = "{}" + } + uError := opts.Unmarshal([]byte(value), obj.Msg()) + if uError != nil { + return fmt.Errorf("unmarshal error %s", strings.Replace( + uError.Error(), "\u00a0", " ", -1)[7:]) + } + + err := obj.validateToAndFrom() + if err != nil { + return err + } + return nil +} + +func (obj *patternFlowIpv4VersionMetricTag) validateToAndFrom() error { + // emptyVars() + obj.validateObj(&obj.validation, true) + return obj.validationResult() +} + +func (obj *patternFlowIpv4VersionMetricTag) Validate() error { + // emptyVars() + obj.validateObj(&obj.validation, false) + return obj.validationResult() +} + +func (obj *patternFlowIpv4VersionMetricTag) String() string { + str, err := obj.ToYaml() + if err != nil { + return err.Error() + } + return str +} + +func (obj *patternFlowIpv4VersionMetricTag) Clone() (PatternFlowIpv4VersionMetricTag, error) { + vErr := obj.Validate() + if vErr != nil { + return nil, vErr + } + newObj := NewPatternFlowIpv4VersionMetricTag() + data, err := proto.Marshal(obj.Msg()) + if err != nil { + return nil, err + } + pbErr := proto.Unmarshal(data, newObj.Msg()) + if pbErr != nil { + return nil, pbErr + } + return newObj, nil +} + +// PatternFlowIpv4VersionMetricTag is metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. +type PatternFlowIpv4VersionMetricTag interface { + Validation + // Msg marshals PatternFlowIpv4VersionMetricTag to protobuf object *otg.PatternFlowIpv4VersionMetricTag + // and doesn't set defaults + Msg() *otg.PatternFlowIpv4VersionMetricTag + // SetMsg unmarshals PatternFlowIpv4VersionMetricTag from protobuf object *otg.PatternFlowIpv4VersionMetricTag + // and doesn't set defaults + SetMsg(*otg.PatternFlowIpv4VersionMetricTag) PatternFlowIpv4VersionMetricTag + // ToProto marshals PatternFlowIpv4VersionMetricTag to protobuf object *otg.PatternFlowIpv4VersionMetricTag + ToProto() (*otg.PatternFlowIpv4VersionMetricTag, error) + // ToPbText marshals PatternFlowIpv4VersionMetricTag to protobuf text + ToPbText() (string, error) + // ToYaml marshals PatternFlowIpv4VersionMetricTag to YAML text + ToYaml() (string, error) + // ToJson marshals PatternFlowIpv4VersionMetricTag to JSON text + ToJson() (string, error) + // FromProto unmarshals PatternFlowIpv4VersionMetricTag from protobuf object *otg.PatternFlowIpv4VersionMetricTag + FromProto(msg *otg.PatternFlowIpv4VersionMetricTag) (PatternFlowIpv4VersionMetricTag, error) + // FromPbText unmarshals PatternFlowIpv4VersionMetricTag from protobuf text + FromPbText(value string) error + // FromYaml unmarshals PatternFlowIpv4VersionMetricTag from YAML text + FromYaml(value string) error + // FromJson unmarshals PatternFlowIpv4VersionMetricTag from JSON text + FromJson(value string) error + // Validate validates PatternFlowIpv4VersionMetricTag + Validate() error + // A stringer function + String() string + // Clones the object + Clone() (PatternFlowIpv4VersionMetricTag, error) + validateToAndFrom() error + validateObj(vObj *validation, set_default bool) + setDefault() + // Name returns string, set in PatternFlowIpv4VersionMetricTag. + Name() string + // SetName assigns string provided by user to PatternFlowIpv4VersionMetricTag + SetName(value string) PatternFlowIpv4VersionMetricTag + // Offset returns uint32, set in PatternFlowIpv4VersionMetricTag. + Offset() uint32 + // SetOffset assigns uint32 provided by user to PatternFlowIpv4VersionMetricTag + SetOffset(value uint32) PatternFlowIpv4VersionMetricTag + // HasOffset checks if Offset has been set in PatternFlowIpv4VersionMetricTag + HasOffset() bool + // Length returns uint32, set in PatternFlowIpv4VersionMetricTag. + Length() uint32 + // SetLength assigns uint32 provided by user to PatternFlowIpv4VersionMetricTag + SetLength(value uint32) PatternFlowIpv4VersionMetricTag + // HasLength checks if Length has been set in PatternFlowIpv4VersionMetricTag + HasLength() bool +} + +// Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field +// Name returns a string +func (obj *patternFlowIpv4VersionMetricTag) Name() string { + + return *obj.obj.Name + +} + +// Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field +// SetName sets the string value in the PatternFlowIpv4VersionMetricTag object +func (obj *patternFlowIpv4VersionMetricTag) SetName(value string) PatternFlowIpv4VersionMetricTag { + + obj.obj.Name = &value + return obj +} + +// Offset in bits relative to start of corresponding header field +// Offset returns a uint32 +func (obj *patternFlowIpv4VersionMetricTag) Offset() uint32 { + + return *obj.obj.Offset + +} + +// Offset in bits relative to start of corresponding header field +// Offset returns a uint32 +func (obj *patternFlowIpv4VersionMetricTag) HasOffset() bool { + return obj.obj.Offset != nil +} + +// Offset in bits relative to start of corresponding header field +// SetOffset sets the uint32 value in the PatternFlowIpv4VersionMetricTag object +func (obj *patternFlowIpv4VersionMetricTag) SetOffset(value uint32) PatternFlowIpv4VersionMetricTag { + + obj.obj.Offset = &value + return obj +} + +// Number of bits to track for metrics starting from configured offset of corresponding header field +// Length returns a uint32 +func (obj *patternFlowIpv4VersionMetricTag) Length() uint32 { + + return *obj.obj.Length + +} + +// Number of bits to track for metrics starting from configured offset of corresponding header field +// Length returns a uint32 +func (obj *patternFlowIpv4VersionMetricTag) HasLength() bool { + return obj.obj.Length != nil +} + +// Number of bits to track for metrics starting from configured offset of corresponding header field +// SetLength sets the uint32 value in the PatternFlowIpv4VersionMetricTag object +func (obj *patternFlowIpv4VersionMetricTag) SetLength(value uint32) PatternFlowIpv4VersionMetricTag { + + obj.obj.Length = &value + return obj +} + +func (obj *patternFlowIpv4VersionMetricTag) validateObj(vObj *validation, set_default bool) { + if set_default { + obj.setDefault() + } + + // Name is required + if obj.obj.Name == nil { + vObj.validationErrors = append(vObj.validationErrors, "Name is required field on interface PatternFlowIpv4VersionMetricTag") + } + + if obj.obj.Offset != nil { + + if *obj.obj.Offset > 3 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("0 <= PatternFlowIpv4VersionMetricTag.Offset <= 3 but Got %d", *obj.obj.Offset)) + } + + } + + if obj.obj.Length != nil { + + if *obj.obj.Length < 1 || *obj.obj.Length > 4 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("1 <= PatternFlowIpv4VersionMetricTag.Length <= 4 but Got %d", *obj.obj.Length)) + } + + } + +} + +func (obj *patternFlowIpv4VersionMetricTag) setDefault() { + if obj.obj.Offset == nil { + obj.SetOffset(0) + } + if obj.obj.Length == nil { + obj.SetLength(4) + } + +} + +// ***** PatternFlowIpv4HeaderLengthCounter ***** +type patternFlowIpv4HeaderLengthCounter struct { + validation + obj *otg.PatternFlowIpv4HeaderLengthCounter +} + +func NewPatternFlowIpv4HeaderLengthCounter() PatternFlowIpv4HeaderLengthCounter { + obj := patternFlowIpv4HeaderLengthCounter{obj: &otg.PatternFlowIpv4HeaderLengthCounter{}} + obj.setDefault() + return &obj +} + +func (obj *patternFlowIpv4HeaderLengthCounter) Msg() *otg.PatternFlowIpv4HeaderLengthCounter { + return obj.obj +} + +func (obj *patternFlowIpv4HeaderLengthCounter) SetMsg(msg *otg.PatternFlowIpv4HeaderLengthCounter) PatternFlowIpv4HeaderLengthCounter { + + proto.Merge(obj.obj, msg) + return obj +} + +func (obj *patternFlowIpv4HeaderLengthCounter) ToProto() (*otg.PatternFlowIpv4HeaderLengthCounter, error) { + err := obj.validateToAndFrom() + if err != nil { + return nil, err + } + return obj.Msg(), nil +} + +func (obj *patternFlowIpv4HeaderLengthCounter) FromProto(msg *otg.PatternFlowIpv4HeaderLengthCounter) (PatternFlowIpv4HeaderLengthCounter, error) { + newObj := obj.SetMsg(msg) + err := newObj.validateToAndFrom() + if err != nil { + return nil, err + } + return newObj, nil +} + +func (obj *patternFlowIpv4HeaderLengthCounter) ToPbText() (string, error) { + vErr := obj.validateToAndFrom() + if vErr != nil { + return "", vErr + } + protoMarshal, err := proto.Marshal(obj.Msg()) + if err != nil { + return "", err + } + return string(protoMarshal), nil +} + +func (obj *patternFlowIpv4HeaderLengthCounter) FromPbText(value string) error { + retObj := proto.Unmarshal([]byte(value), obj.Msg()) + if retObj != nil { + return retObj + } + + vErr := obj.validateToAndFrom() + if vErr != nil { + return vErr + } + return retObj +} + +func (obj *patternFlowIpv4HeaderLengthCounter) ToYaml() (string, error) { + vErr := obj.validateToAndFrom() + if vErr != nil { + return "", vErr + } + opts := protojson.MarshalOptions{ + UseProtoNames: true, + AllowPartial: true, + EmitUnpopulated: false, + } + data, err := opts.Marshal(obj.Msg()) + if err != nil { + return "", err + } + data, err = yaml.JSONToYAML(data) + if err != nil { + return "", err + } + return string(data), nil +} + +func (obj *patternFlowIpv4HeaderLengthCounter) FromYaml(value string) error { + if value == "" { + value = "{}" + } + data, err := yaml.YAMLToJSON([]byte(value)) + if err != nil { + return err + } + opts := protojson.UnmarshalOptions{ + AllowPartial: true, + DiscardUnknown: false, + } + uError := opts.Unmarshal([]byte(data), obj.Msg()) + if uError != nil { + return fmt.Errorf("unmarshal error %s", strings.Replace( + uError.Error(), "\u00a0", " ", -1)[7:]) + } + + vErr := obj.validateToAndFrom() + if vErr != nil { + return vErr + } + return nil +} + +func (obj *patternFlowIpv4HeaderLengthCounter) ToJson() (string, error) { + vErr := obj.validateToAndFrom() + if vErr != nil { + return "", vErr + } + opts := protojson.MarshalOptions{ + UseProtoNames: true, + AllowPartial: true, + EmitUnpopulated: false, + Indent: " ", + } + data, err := opts.Marshal(obj.Msg()) + if err != nil { + return "", err + } + return string(data), nil +} + +func (obj *patternFlowIpv4HeaderLengthCounter) FromJson(value string) error { + opts := protojson.UnmarshalOptions{ + AllowPartial: true, + DiscardUnknown: false, + } + if value == "" { + value = "{}" + } + uError := opts.Unmarshal([]byte(value), obj.Msg()) + if uError != nil { + return fmt.Errorf("unmarshal error %s", strings.Replace( + uError.Error(), "\u00a0", " ", -1)[7:]) + } + + err := obj.validateToAndFrom() + if err != nil { + return err + } + return nil +} + +func (obj *patternFlowIpv4HeaderLengthCounter) validateToAndFrom() error { + // emptyVars() + obj.validateObj(&obj.validation, true) + return obj.validationResult() +} + +func (obj *patternFlowIpv4HeaderLengthCounter) Validate() error { + // emptyVars() + obj.validateObj(&obj.validation, false) + return obj.validationResult() +} + +func (obj *patternFlowIpv4HeaderLengthCounter) String() string { + str, err := obj.ToYaml() + if err != nil { + return err.Error() + } + return str +} + +func (obj *patternFlowIpv4HeaderLengthCounter) Clone() (PatternFlowIpv4HeaderLengthCounter, error) { + vErr := obj.Validate() + if vErr != nil { + return nil, vErr + } + newObj := NewPatternFlowIpv4HeaderLengthCounter() + data, err := proto.Marshal(obj.Msg()) + if err != nil { + return nil, err + } + pbErr := proto.Unmarshal(data, newObj.Msg()) + if pbErr != nil { + return nil, pbErr + } + return newObj, nil +} + +// PatternFlowIpv4HeaderLengthCounter is integer counter pattern +type PatternFlowIpv4HeaderLengthCounter interface { + Validation + // Msg marshals PatternFlowIpv4HeaderLengthCounter to protobuf object *otg.PatternFlowIpv4HeaderLengthCounter + // and doesn't set defaults + Msg() *otg.PatternFlowIpv4HeaderLengthCounter + // SetMsg unmarshals PatternFlowIpv4HeaderLengthCounter from protobuf object *otg.PatternFlowIpv4HeaderLengthCounter + // and doesn't set defaults + SetMsg(*otg.PatternFlowIpv4HeaderLengthCounter) PatternFlowIpv4HeaderLengthCounter + // ToProto marshals PatternFlowIpv4HeaderLengthCounter to protobuf object *otg.PatternFlowIpv4HeaderLengthCounter + ToProto() (*otg.PatternFlowIpv4HeaderLengthCounter, error) + // ToPbText marshals PatternFlowIpv4HeaderLengthCounter to protobuf text + ToPbText() (string, error) + // ToYaml marshals PatternFlowIpv4HeaderLengthCounter to YAML text + ToYaml() (string, error) + // ToJson marshals PatternFlowIpv4HeaderLengthCounter to JSON text + ToJson() (string, error) + // FromProto unmarshals PatternFlowIpv4HeaderLengthCounter from protobuf object *otg.PatternFlowIpv4HeaderLengthCounter + FromProto(msg *otg.PatternFlowIpv4HeaderLengthCounter) (PatternFlowIpv4HeaderLengthCounter, error) + // FromPbText unmarshals PatternFlowIpv4HeaderLengthCounter from protobuf text + FromPbText(value string) error + // FromYaml unmarshals PatternFlowIpv4HeaderLengthCounter from YAML text + FromYaml(value string) error + // FromJson unmarshals PatternFlowIpv4HeaderLengthCounter from JSON text + FromJson(value string) error + // Validate validates PatternFlowIpv4HeaderLengthCounter + Validate() error + // A stringer function + String() string + // Clones the object + Clone() (PatternFlowIpv4HeaderLengthCounter, error) + validateToAndFrom() error + validateObj(vObj *validation, set_default bool) + setDefault() + // Start returns uint32, set in PatternFlowIpv4HeaderLengthCounter. + Start() uint32 + // SetStart assigns uint32 provided by user to PatternFlowIpv4HeaderLengthCounter + SetStart(value uint32) PatternFlowIpv4HeaderLengthCounter + // HasStart checks if Start has been set in PatternFlowIpv4HeaderLengthCounter + HasStart() bool + // Step returns uint32, set in PatternFlowIpv4HeaderLengthCounter. + Step() uint32 + // SetStep assigns uint32 provided by user to PatternFlowIpv4HeaderLengthCounter + SetStep(value uint32) PatternFlowIpv4HeaderLengthCounter + // HasStep checks if Step has been set in PatternFlowIpv4HeaderLengthCounter + HasStep() bool + // Count returns uint32, set in PatternFlowIpv4HeaderLengthCounter. + Count() uint32 + // SetCount assigns uint32 provided by user to PatternFlowIpv4HeaderLengthCounter + SetCount(value uint32) PatternFlowIpv4HeaderLengthCounter + // HasCount checks if Count has been set in PatternFlowIpv4HeaderLengthCounter + HasCount() bool +} + +// description is TBD +// Start returns a uint32 +func (obj *patternFlowIpv4HeaderLengthCounter) Start() uint32 { + + return *obj.obj.Start + +} + +// description is TBD +// Start returns a uint32 +func (obj *patternFlowIpv4HeaderLengthCounter) HasStart() bool { + return obj.obj.Start != nil +} + +// description is TBD +// SetStart sets the uint32 value in the PatternFlowIpv4HeaderLengthCounter object +func (obj *patternFlowIpv4HeaderLengthCounter) SetStart(value uint32) PatternFlowIpv4HeaderLengthCounter { + + obj.obj.Start = &value + return obj +} + +// description is TBD +// Step returns a uint32 +func (obj *patternFlowIpv4HeaderLengthCounter) Step() uint32 { + + return *obj.obj.Step + +} + +// description is TBD +// Step returns a uint32 +func (obj *patternFlowIpv4HeaderLengthCounter) HasStep() bool { + return obj.obj.Step != nil +} + +// description is TBD +// SetStep sets the uint32 value in the PatternFlowIpv4HeaderLengthCounter object +func (obj *patternFlowIpv4HeaderLengthCounter) SetStep(value uint32) PatternFlowIpv4HeaderLengthCounter { + + obj.obj.Step = &value + return obj +} + +// description is TBD +// Count returns a uint32 +func (obj *patternFlowIpv4HeaderLengthCounter) Count() uint32 { + + return *obj.obj.Count + +} + +// description is TBD +// Count returns a uint32 +func (obj *patternFlowIpv4HeaderLengthCounter) HasCount() bool { + return obj.obj.Count != nil +} + +// description is TBD +// SetCount sets the uint32 value in the PatternFlowIpv4HeaderLengthCounter object +func (obj *patternFlowIpv4HeaderLengthCounter) SetCount(value uint32) PatternFlowIpv4HeaderLengthCounter { + + obj.obj.Count = &value + return obj +} + +func (obj *patternFlowIpv4HeaderLengthCounter) validateObj(vObj *validation, set_default bool) { + if set_default { + obj.setDefault() + } + + if obj.obj.Start != nil { + + if *obj.obj.Start > 15 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("0 <= PatternFlowIpv4HeaderLengthCounter.Start <= 15 but Got %d", *obj.obj.Start)) + } + + } + + if obj.obj.Step != nil { + + if *obj.obj.Step > 15 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("0 <= PatternFlowIpv4HeaderLengthCounter.Step <= 15 but Got %d", *obj.obj.Step)) + } + + } + + if obj.obj.Count != nil { + + if *obj.obj.Count > 15 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("0 <= PatternFlowIpv4HeaderLengthCounter.Count <= 15 but Got %d", *obj.obj.Count)) + } + + } + +} + +func (obj *patternFlowIpv4HeaderLengthCounter) setDefault() { + if obj.obj.Start == nil { + obj.SetStart(5) + } + if obj.obj.Step == nil { + obj.SetStep(1) + } + if obj.obj.Count == nil { + obj.SetCount(1) + } + +} + +// ***** PatternFlowIpv4HeaderLengthMetricTag ***** +type patternFlowIpv4HeaderLengthMetricTag struct { + validation + obj *otg.PatternFlowIpv4HeaderLengthMetricTag +} + +func NewPatternFlowIpv4HeaderLengthMetricTag() PatternFlowIpv4HeaderLengthMetricTag { + obj := patternFlowIpv4HeaderLengthMetricTag{obj: &otg.PatternFlowIpv4HeaderLengthMetricTag{}} + obj.setDefault() + return &obj +} + +func (obj *patternFlowIpv4HeaderLengthMetricTag) Msg() *otg.PatternFlowIpv4HeaderLengthMetricTag { + return obj.obj +} + +func (obj *patternFlowIpv4HeaderLengthMetricTag) SetMsg(msg *otg.PatternFlowIpv4HeaderLengthMetricTag) PatternFlowIpv4HeaderLengthMetricTag { + + proto.Merge(obj.obj, msg) + return obj +} + +func (obj *patternFlowIpv4HeaderLengthMetricTag) ToProto() (*otg.PatternFlowIpv4HeaderLengthMetricTag, error) { + err := obj.validateToAndFrom() + if err != nil { + return nil, err + } + return obj.Msg(), nil +} + +func (obj *patternFlowIpv4HeaderLengthMetricTag) FromProto(msg *otg.PatternFlowIpv4HeaderLengthMetricTag) (PatternFlowIpv4HeaderLengthMetricTag, error) { + newObj := obj.SetMsg(msg) + err := newObj.validateToAndFrom() + if err != nil { + return nil, err + } + return newObj, nil +} + +func (obj *patternFlowIpv4HeaderLengthMetricTag) ToPbText() (string, error) { + vErr := obj.validateToAndFrom() + if vErr != nil { + return "", vErr + } + protoMarshal, err := proto.Marshal(obj.Msg()) + if err != nil { + return "", err + } + return string(protoMarshal), nil +} + +func (obj *patternFlowIpv4HeaderLengthMetricTag) FromPbText(value string) error { + retObj := proto.Unmarshal([]byte(value), obj.Msg()) + if retObj != nil { + return retObj + } + + vErr := obj.validateToAndFrom() + if vErr != nil { + return vErr + } + return retObj +} + +func (obj *patternFlowIpv4HeaderLengthMetricTag) ToYaml() (string, error) { + vErr := obj.validateToAndFrom() + if vErr != nil { + return "", vErr + } + opts := protojson.MarshalOptions{ + UseProtoNames: true, + AllowPartial: true, + EmitUnpopulated: false, + } + data, err := opts.Marshal(obj.Msg()) + if err != nil { + return "", err + } + data, err = yaml.JSONToYAML(data) + if err != nil { + return "", err + } + return string(data), nil +} + +func (obj *patternFlowIpv4HeaderLengthMetricTag) FromYaml(value string) error { + if value == "" { + value = "{}" + } + data, err := yaml.YAMLToJSON([]byte(value)) + if err != nil { + return err + } + opts := protojson.UnmarshalOptions{ + AllowPartial: true, + DiscardUnknown: false, + } + uError := opts.Unmarshal([]byte(data), obj.Msg()) + if uError != nil { + return fmt.Errorf("unmarshal error %s", strings.Replace( + uError.Error(), "\u00a0", " ", -1)[7:]) + } + + vErr := obj.validateToAndFrom() + if vErr != nil { + return vErr + } + return nil +} + +func (obj *patternFlowIpv4HeaderLengthMetricTag) ToJson() (string, error) { + vErr := obj.validateToAndFrom() + if vErr != nil { + return "", vErr + } + opts := protojson.MarshalOptions{ + UseProtoNames: true, + AllowPartial: true, + EmitUnpopulated: false, + Indent: " ", + } + data, err := opts.Marshal(obj.Msg()) + if err != nil { + return "", err + } + return string(data), nil +} + +func (obj *patternFlowIpv4HeaderLengthMetricTag) FromJson(value string) error { + opts := protojson.UnmarshalOptions{ + AllowPartial: true, + DiscardUnknown: false, + } + if value == "" { + value = "{}" + } + uError := opts.Unmarshal([]byte(value), obj.Msg()) + if uError != nil { + return fmt.Errorf("unmarshal error %s", strings.Replace( + uError.Error(), "\u00a0", " ", -1)[7:]) + } + + err := obj.validateToAndFrom() + if err != nil { + return err + } + return nil +} + +func (obj *patternFlowIpv4HeaderLengthMetricTag) validateToAndFrom() error { + // emptyVars() + obj.validateObj(&obj.validation, true) + return obj.validationResult() +} + +func (obj *patternFlowIpv4HeaderLengthMetricTag) Validate() error { + // emptyVars() + obj.validateObj(&obj.validation, false) + return obj.validationResult() +} + +func (obj *patternFlowIpv4HeaderLengthMetricTag) String() string { + str, err := obj.ToYaml() + if err != nil { + return err.Error() + } + return str +} + +func (obj *patternFlowIpv4HeaderLengthMetricTag) Clone() (PatternFlowIpv4HeaderLengthMetricTag, error) { + vErr := obj.Validate() + if vErr != nil { + return nil, vErr + } + newObj := NewPatternFlowIpv4HeaderLengthMetricTag() + data, err := proto.Marshal(obj.Msg()) + if err != nil { + return nil, err + } + pbErr := proto.Unmarshal(data, newObj.Msg()) + if pbErr != nil { + return nil, pbErr + } + return newObj, nil +} + +// PatternFlowIpv4HeaderLengthMetricTag is metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. +type PatternFlowIpv4HeaderLengthMetricTag interface { + Validation + // Msg marshals PatternFlowIpv4HeaderLengthMetricTag to protobuf object *otg.PatternFlowIpv4HeaderLengthMetricTag + // and doesn't set defaults + Msg() *otg.PatternFlowIpv4HeaderLengthMetricTag + // SetMsg unmarshals PatternFlowIpv4HeaderLengthMetricTag from protobuf object *otg.PatternFlowIpv4HeaderLengthMetricTag + // and doesn't set defaults + SetMsg(*otg.PatternFlowIpv4HeaderLengthMetricTag) PatternFlowIpv4HeaderLengthMetricTag + // ToProto marshals PatternFlowIpv4HeaderLengthMetricTag to protobuf object *otg.PatternFlowIpv4HeaderLengthMetricTag + ToProto() (*otg.PatternFlowIpv4HeaderLengthMetricTag, error) + // ToPbText marshals PatternFlowIpv4HeaderLengthMetricTag to protobuf text + ToPbText() (string, error) + // ToYaml marshals PatternFlowIpv4HeaderLengthMetricTag to YAML text + ToYaml() (string, error) + // ToJson marshals PatternFlowIpv4HeaderLengthMetricTag to JSON text + ToJson() (string, error) + // FromProto unmarshals PatternFlowIpv4HeaderLengthMetricTag from protobuf object *otg.PatternFlowIpv4HeaderLengthMetricTag + FromProto(msg *otg.PatternFlowIpv4HeaderLengthMetricTag) (PatternFlowIpv4HeaderLengthMetricTag, error) + // FromPbText unmarshals PatternFlowIpv4HeaderLengthMetricTag from protobuf text + FromPbText(value string) error + // FromYaml unmarshals PatternFlowIpv4HeaderLengthMetricTag from YAML text + FromYaml(value string) error + // FromJson unmarshals PatternFlowIpv4HeaderLengthMetricTag from JSON text + FromJson(value string) error + // Validate validates PatternFlowIpv4HeaderLengthMetricTag + Validate() error + // A stringer function + String() string + // Clones the object + Clone() (PatternFlowIpv4HeaderLengthMetricTag, error) + validateToAndFrom() error + validateObj(vObj *validation, set_default bool) + setDefault() + // Name returns string, set in PatternFlowIpv4HeaderLengthMetricTag. + Name() string + // SetName assigns string provided by user to PatternFlowIpv4HeaderLengthMetricTag + SetName(value string) PatternFlowIpv4HeaderLengthMetricTag + // Offset returns uint32, set in PatternFlowIpv4HeaderLengthMetricTag. + Offset() uint32 + // SetOffset assigns uint32 provided by user to PatternFlowIpv4HeaderLengthMetricTag + SetOffset(value uint32) PatternFlowIpv4HeaderLengthMetricTag + // HasOffset checks if Offset has been set in PatternFlowIpv4HeaderLengthMetricTag + HasOffset() bool + // Length returns uint32, set in PatternFlowIpv4HeaderLengthMetricTag. + Length() uint32 + // SetLength assigns uint32 provided by user to PatternFlowIpv4HeaderLengthMetricTag + SetLength(value uint32) PatternFlowIpv4HeaderLengthMetricTag + // HasLength checks if Length has been set in PatternFlowIpv4HeaderLengthMetricTag + HasLength() bool +} + +// Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field +// Name returns a string +func (obj *patternFlowIpv4HeaderLengthMetricTag) Name() string { + + return *obj.obj.Name + +} + +// Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field +// SetName sets the string value in the PatternFlowIpv4HeaderLengthMetricTag object +func (obj *patternFlowIpv4HeaderLengthMetricTag) SetName(value string) PatternFlowIpv4HeaderLengthMetricTag { + + obj.obj.Name = &value + return obj +} + +// Offset in bits relative to start of corresponding header field +// Offset returns a uint32 +func (obj *patternFlowIpv4HeaderLengthMetricTag) Offset() uint32 { + + return *obj.obj.Offset + +} + +// Offset in bits relative to start of corresponding header field +// Offset returns a uint32 +func (obj *patternFlowIpv4HeaderLengthMetricTag) HasOffset() bool { + return obj.obj.Offset != nil +} + +// Offset in bits relative to start of corresponding header field +// SetOffset sets the uint32 value in the PatternFlowIpv4HeaderLengthMetricTag object +func (obj *patternFlowIpv4HeaderLengthMetricTag) SetOffset(value uint32) PatternFlowIpv4HeaderLengthMetricTag { + + obj.obj.Offset = &value + return obj +} + +// Number of bits to track for metrics starting from configured offset of corresponding header field +// Length returns a uint32 +func (obj *patternFlowIpv4HeaderLengthMetricTag) Length() uint32 { + + return *obj.obj.Length + +} + +// Number of bits to track for metrics starting from configured offset of corresponding header field +// Length returns a uint32 +func (obj *patternFlowIpv4HeaderLengthMetricTag) HasLength() bool { + return obj.obj.Length != nil +} + +// Number of bits to track for metrics starting from configured offset of corresponding header field +// SetLength sets the uint32 value in the PatternFlowIpv4HeaderLengthMetricTag object +func (obj *patternFlowIpv4HeaderLengthMetricTag) SetLength(value uint32) PatternFlowIpv4HeaderLengthMetricTag { + + obj.obj.Length = &value + return obj +} + +func (obj *patternFlowIpv4HeaderLengthMetricTag) validateObj(vObj *validation, set_default bool) { + if set_default { + obj.setDefault() + } + + // Name is required + if obj.obj.Name == nil { + vObj.validationErrors = append(vObj.validationErrors, "Name is required field on interface PatternFlowIpv4HeaderLengthMetricTag") + } + + if obj.obj.Offset != nil { + + if *obj.obj.Offset > 3 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("0 <= PatternFlowIpv4HeaderLengthMetricTag.Offset <= 3 but Got %d", *obj.obj.Offset)) + } + + } + + if obj.obj.Length != nil { + + if *obj.obj.Length < 1 || *obj.obj.Length > 4 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("1 <= PatternFlowIpv4HeaderLengthMetricTag.Length <= 4 but Got %d", *obj.obj.Length)) + } + + } + +} + +func (obj *patternFlowIpv4HeaderLengthMetricTag) setDefault() { + if obj.obj.Offset == nil { + obj.SetOffset(0) + } + if obj.obj.Length == nil { + obj.SetLength(4) + } + +} + +// ***** PatternFlowIpv4PriorityRaw ***** +type patternFlowIpv4PriorityRaw struct { + validation + obj *otg.PatternFlowIpv4PriorityRaw + incrementHolder PatternFlowIpv4PriorityRawCounter + decrementHolder PatternFlowIpv4PriorityRawCounter + metricTagsHolder PatternFlowIpv4PriorityRawPatternFlowIpv4PriorityRawMetricTagIter +} + +func NewPatternFlowIpv4PriorityRaw() PatternFlowIpv4PriorityRaw { + obj := patternFlowIpv4PriorityRaw{obj: &otg.PatternFlowIpv4PriorityRaw{}} + obj.setDefault() + return &obj +} + +func (obj *patternFlowIpv4PriorityRaw) Msg() *otg.PatternFlowIpv4PriorityRaw { + return obj.obj +} + +func (obj *patternFlowIpv4PriorityRaw) SetMsg(msg *otg.PatternFlowIpv4PriorityRaw) PatternFlowIpv4PriorityRaw { + obj.setNil() + proto.Merge(obj.obj, msg) + return obj +} + +func (obj *patternFlowIpv4PriorityRaw) ToProto() (*otg.PatternFlowIpv4PriorityRaw, error) { + err := obj.validateToAndFrom() + if err != nil { + return nil, err + } + return obj.Msg(), nil +} + +func (obj *patternFlowIpv4PriorityRaw) FromProto(msg *otg.PatternFlowIpv4PriorityRaw) (PatternFlowIpv4PriorityRaw, error) { + newObj := obj.SetMsg(msg) + err := newObj.validateToAndFrom() + if err != nil { + return nil, err + } + return newObj, nil +} + +func (obj *patternFlowIpv4PriorityRaw) ToPbText() (string, error) { + vErr := obj.validateToAndFrom() + if vErr != nil { + return "", vErr + } + protoMarshal, err := proto.Marshal(obj.Msg()) + if err != nil { + return "", err + } + return string(protoMarshal), nil +} + +func (obj *patternFlowIpv4PriorityRaw) FromPbText(value string) error { + retObj := proto.Unmarshal([]byte(value), obj.Msg()) + if retObj != nil { + return retObj + } + obj.setNil() + vErr := obj.validateToAndFrom() + if vErr != nil { + return vErr + } + return retObj +} + +func (obj *patternFlowIpv4PriorityRaw) ToYaml() (string, error) { + vErr := obj.validateToAndFrom() + if vErr != nil { + return "", vErr + } + opts := protojson.MarshalOptions{ + UseProtoNames: true, + AllowPartial: true, + EmitUnpopulated: false, + } + data, err := opts.Marshal(obj.Msg()) + if err != nil { + return "", err + } + data, err = yaml.JSONToYAML(data) + if err != nil { + return "", err + } + return string(data), nil +} + +func (obj *patternFlowIpv4PriorityRaw) FromYaml(value string) error { + if value == "" { + value = "{}" + } + data, err := yaml.YAMLToJSON([]byte(value)) + if err != nil { + return err + } + opts := protojson.UnmarshalOptions{ + AllowPartial: true, + DiscardUnknown: false, + } + uError := opts.Unmarshal([]byte(data), obj.Msg()) + if uError != nil { + return fmt.Errorf("unmarshal error %s", strings.Replace( + uError.Error(), "\u00a0", " ", -1)[7:]) + } + obj.setNil() + vErr := obj.validateToAndFrom() + if vErr != nil { + return vErr + } + return nil +} + +func (obj *patternFlowIpv4PriorityRaw) ToJson() (string, error) { + vErr := obj.validateToAndFrom() + if vErr != nil { + return "", vErr + } + opts := protojson.MarshalOptions{ + UseProtoNames: true, + AllowPartial: true, + EmitUnpopulated: false, + Indent: " ", + } + data, err := opts.Marshal(obj.Msg()) + if err != nil { + return "", err + } + return string(data), nil +} + +func (obj *patternFlowIpv4PriorityRaw) FromJson(value string) error { + opts := protojson.UnmarshalOptions{ + AllowPartial: true, + DiscardUnknown: false, + } + if value == "" { + value = "{}" + } + uError := opts.Unmarshal([]byte(value), obj.Msg()) + if uError != nil { + return fmt.Errorf("unmarshal error %s", strings.Replace( + uError.Error(), "\u00a0", " ", -1)[7:]) + } + obj.setNil() + err := obj.validateToAndFrom() + if err != nil { + return err + } + return nil +} + +func (obj *patternFlowIpv4PriorityRaw) validateToAndFrom() error { + // emptyVars() + obj.validateObj(&obj.validation, true) + return obj.validationResult() +} + +func (obj *patternFlowIpv4PriorityRaw) Validate() error { + // emptyVars() + obj.validateObj(&obj.validation, false) + return obj.validationResult() +} + +func (obj *patternFlowIpv4PriorityRaw) String() string { + str, err := obj.ToYaml() + if err != nil { + return err.Error() + } + return str +} + +func (obj *patternFlowIpv4PriorityRaw) Clone() (PatternFlowIpv4PriorityRaw, error) { + vErr := obj.Validate() + if vErr != nil { + return nil, vErr + } + newObj := NewPatternFlowIpv4PriorityRaw() + data, err := proto.Marshal(obj.Msg()) + if err != nil { + return nil, err + } + pbErr := proto.Unmarshal(data, newObj.Msg()) + if pbErr != nil { + return nil, pbErr + } + return newObj, nil +} + +func (obj *patternFlowIpv4PriorityRaw) setNil() { + obj.incrementHolder = nil + obj.decrementHolder = nil + obj.metricTagsHolder = nil + obj.validationErrors = nil + obj.warnings = nil + obj.constraints = make(map[string]map[string]Constraints) +} + +// PatternFlowIpv4PriorityRaw is raw priority +type PatternFlowIpv4PriorityRaw interface { + Validation + // Msg marshals PatternFlowIpv4PriorityRaw to protobuf object *otg.PatternFlowIpv4PriorityRaw + // and doesn't set defaults + Msg() *otg.PatternFlowIpv4PriorityRaw + // SetMsg unmarshals PatternFlowIpv4PriorityRaw from protobuf object *otg.PatternFlowIpv4PriorityRaw + // and doesn't set defaults + SetMsg(*otg.PatternFlowIpv4PriorityRaw) PatternFlowIpv4PriorityRaw + // ToProto marshals PatternFlowIpv4PriorityRaw to protobuf object *otg.PatternFlowIpv4PriorityRaw + ToProto() (*otg.PatternFlowIpv4PriorityRaw, error) + // ToPbText marshals PatternFlowIpv4PriorityRaw to protobuf text + ToPbText() (string, error) + // ToYaml marshals PatternFlowIpv4PriorityRaw to YAML text + ToYaml() (string, error) + // ToJson marshals PatternFlowIpv4PriorityRaw to JSON text + ToJson() (string, error) + // FromProto unmarshals PatternFlowIpv4PriorityRaw from protobuf object *otg.PatternFlowIpv4PriorityRaw + FromProto(msg *otg.PatternFlowIpv4PriorityRaw) (PatternFlowIpv4PriorityRaw, error) + // FromPbText unmarshals PatternFlowIpv4PriorityRaw from protobuf text + FromPbText(value string) error + // FromYaml unmarshals PatternFlowIpv4PriorityRaw from YAML text + FromYaml(value string) error + // FromJson unmarshals PatternFlowIpv4PriorityRaw from JSON text + FromJson(value string) error + // Validate validates PatternFlowIpv4PriorityRaw + Validate() error + // A stringer function + String() string + // Clones the object + Clone() (PatternFlowIpv4PriorityRaw, error) + validateToAndFrom() error + validateObj(vObj *validation, set_default bool) + setDefault() + // Choice returns PatternFlowIpv4PriorityRawChoiceEnum, set in PatternFlowIpv4PriorityRaw + Choice() PatternFlowIpv4PriorityRawChoiceEnum + // SetChoice assigns PatternFlowIpv4PriorityRawChoiceEnum provided by user to PatternFlowIpv4PriorityRaw + SetChoice(value PatternFlowIpv4PriorityRawChoiceEnum) PatternFlowIpv4PriorityRaw + // HasChoice checks if Choice has been set in PatternFlowIpv4PriorityRaw + HasChoice() bool + // Value returns uint32, set in PatternFlowIpv4PriorityRaw. + Value() uint32 + // SetValue assigns uint32 provided by user to PatternFlowIpv4PriorityRaw + SetValue(value uint32) PatternFlowIpv4PriorityRaw + // HasValue checks if Value has been set in PatternFlowIpv4PriorityRaw + HasValue() bool + // Values returns []uint32, set in PatternFlowIpv4PriorityRaw. + Values() []uint32 + // SetValues assigns []uint32 provided by user to PatternFlowIpv4PriorityRaw + SetValues(value []uint32) PatternFlowIpv4PriorityRaw + // Increment returns PatternFlowIpv4PriorityRawCounter, set in PatternFlowIpv4PriorityRaw. + // PatternFlowIpv4PriorityRawCounter is integer counter pattern + Increment() PatternFlowIpv4PriorityRawCounter + // SetIncrement assigns PatternFlowIpv4PriorityRawCounter provided by user to PatternFlowIpv4PriorityRaw. + // PatternFlowIpv4PriorityRawCounter is integer counter pattern + SetIncrement(value PatternFlowIpv4PriorityRawCounter) PatternFlowIpv4PriorityRaw + // HasIncrement checks if Increment has been set in PatternFlowIpv4PriorityRaw + HasIncrement() bool + // Decrement returns PatternFlowIpv4PriorityRawCounter, set in PatternFlowIpv4PriorityRaw. + // PatternFlowIpv4PriorityRawCounter is integer counter pattern + Decrement() PatternFlowIpv4PriorityRawCounter + // SetDecrement assigns PatternFlowIpv4PriorityRawCounter provided by user to PatternFlowIpv4PriorityRaw. + // PatternFlowIpv4PriorityRawCounter is integer counter pattern + SetDecrement(value PatternFlowIpv4PriorityRawCounter) PatternFlowIpv4PriorityRaw + // HasDecrement checks if Decrement has been set in PatternFlowIpv4PriorityRaw + HasDecrement() bool + // MetricTags returns PatternFlowIpv4PriorityRawPatternFlowIpv4PriorityRawMetricTagIterIter, set in PatternFlowIpv4PriorityRaw + MetricTags() PatternFlowIpv4PriorityRawPatternFlowIpv4PriorityRawMetricTagIter + setNil() +} + +type PatternFlowIpv4PriorityRawChoiceEnum string + +// Enum of Choice on PatternFlowIpv4PriorityRaw +var PatternFlowIpv4PriorityRawChoice = struct { + VALUE PatternFlowIpv4PriorityRawChoiceEnum + VALUES PatternFlowIpv4PriorityRawChoiceEnum + INCREMENT PatternFlowIpv4PriorityRawChoiceEnum + DECREMENT PatternFlowIpv4PriorityRawChoiceEnum +}{ + VALUE: PatternFlowIpv4PriorityRawChoiceEnum("value"), + VALUES: PatternFlowIpv4PriorityRawChoiceEnum("values"), + INCREMENT: PatternFlowIpv4PriorityRawChoiceEnum("increment"), + DECREMENT: PatternFlowIpv4PriorityRawChoiceEnum("decrement"), +} + +func (obj *patternFlowIpv4PriorityRaw) Choice() PatternFlowIpv4PriorityRawChoiceEnum { + return PatternFlowIpv4PriorityRawChoiceEnum(obj.obj.Choice.Enum().String()) +} + +// description is TBD +// Choice returns a string +func (obj *patternFlowIpv4PriorityRaw) HasChoice() bool { + return obj.obj.Choice != nil +} + +func (obj *patternFlowIpv4PriorityRaw) SetChoice(value PatternFlowIpv4PriorityRawChoiceEnum) PatternFlowIpv4PriorityRaw { + intValue, ok := otg.PatternFlowIpv4PriorityRaw_Choice_Enum_value[string(value)] + if !ok { + obj.validationErrors = append(obj.validationErrors, fmt.Sprintf( + "%s is not a valid choice on PatternFlowIpv4PriorityRawChoiceEnum", string(value))) + return obj + } + enumValue := otg.PatternFlowIpv4PriorityRaw_Choice_Enum(intValue) + obj.obj.Choice = &enumValue + obj.obj.Decrement = nil + obj.decrementHolder = nil + obj.obj.Increment = nil + obj.incrementHolder = nil + obj.obj.Values = nil + obj.obj.Value = nil + + if value == PatternFlowIpv4PriorityRawChoice.VALUE { + defaultValue := uint32(0) + obj.obj.Value = &defaultValue + } + + if value == PatternFlowIpv4PriorityRawChoice.VALUES { + defaultValue := []uint32{0} + obj.obj.Values = defaultValue + } + + if value == PatternFlowIpv4PriorityRawChoice.INCREMENT { + obj.obj.Increment = NewPatternFlowIpv4PriorityRawCounter().Msg() + } + + if value == PatternFlowIpv4PriorityRawChoice.DECREMENT { + obj.obj.Decrement = NewPatternFlowIpv4PriorityRawCounter().Msg() + } + + return obj +} + +// description is TBD +// Value returns a uint32 +func (obj *patternFlowIpv4PriorityRaw) Value() uint32 { + + if obj.obj.Value == nil { + obj.SetChoice(PatternFlowIpv4PriorityRawChoice.VALUE) + } + + return *obj.obj.Value + +} + +// description is TBD +// Value returns a uint32 +func (obj *patternFlowIpv4PriorityRaw) HasValue() bool { + return obj.obj.Value != nil +} + +// description is TBD +// SetValue sets the uint32 value in the PatternFlowIpv4PriorityRaw object +func (obj *patternFlowIpv4PriorityRaw) SetValue(value uint32) PatternFlowIpv4PriorityRaw { + obj.SetChoice(PatternFlowIpv4PriorityRawChoice.VALUE) + obj.obj.Value = &value + return obj +} + +// description is TBD +// Values returns a []uint32 +func (obj *patternFlowIpv4PriorityRaw) Values() []uint32 { + if obj.obj.Values == nil { + obj.SetValues([]uint32{0}) + } + return obj.obj.Values +} + +// description is TBD +// SetValues sets the []uint32 value in the PatternFlowIpv4PriorityRaw object +func (obj *patternFlowIpv4PriorityRaw) SetValues(value []uint32) PatternFlowIpv4PriorityRaw { + obj.SetChoice(PatternFlowIpv4PriorityRawChoice.VALUES) + if obj.obj.Values == nil { + obj.obj.Values = make([]uint32, 0) + } + obj.obj.Values = value + + return obj +} + +// description is TBD +// Increment returns a PatternFlowIpv4PriorityRawCounter +func (obj *patternFlowIpv4PriorityRaw) Increment() PatternFlowIpv4PriorityRawCounter { + if obj.obj.Increment == nil { + obj.SetChoice(PatternFlowIpv4PriorityRawChoice.INCREMENT) + } + if obj.incrementHolder == nil { + obj.incrementHolder = &patternFlowIpv4PriorityRawCounter{obj: obj.obj.Increment} + } + return obj.incrementHolder +} + +// description is TBD +// Increment returns a PatternFlowIpv4PriorityRawCounter +func (obj *patternFlowIpv4PriorityRaw) HasIncrement() bool { + return obj.obj.Increment != nil +} + +// description is TBD +// SetIncrement sets the PatternFlowIpv4PriorityRawCounter value in the PatternFlowIpv4PriorityRaw object +func (obj *patternFlowIpv4PriorityRaw) SetIncrement(value PatternFlowIpv4PriorityRawCounter) PatternFlowIpv4PriorityRaw { + obj.SetChoice(PatternFlowIpv4PriorityRawChoice.INCREMENT) + obj.incrementHolder = nil + obj.obj.Increment = value.Msg() + + return obj +} + +// description is TBD +// Decrement returns a PatternFlowIpv4PriorityRawCounter +func (obj *patternFlowIpv4PriorityRaw) Decrement() PatternFlowIpv4PriorityRawCounter { + if obj.obj.Decrement == nil { + obj.SetChoice(PatternFlowIpv4PriorityRawChoice.DECREMENT) + } + if obj.decrementHolder == nil { + obj.decrementHolder = &patternFlowIpv4PriorityRawCounter{obj: obj.obj.Decrement} + } + return obj.decrementHolder +} + +// description is TBD +// Decrement returns a PatternFlowIpv4PriorityRawCounter +func (obj *patternFlowIpv4PriorityRaw) HasDecrement() bool { + return obj.obj.Decrement != nil +} + +// description is TBD +// SetDecrement sets the PatternFlowIpv4PriorityRawCounter value in the PatternFlowIpv4PriorityRaw object +func (obj *patternFlowIpv4PriorityRaw) SetDecrement(value PatternFlowIpv4PriorityRawCounter) PatternFlowIpv4PriorityRaw { + obj.SetChoice(PatternFlowIpv4PriorityRawChoice.DECREMENT) + obj.decrementHolder = nil + obj.obj.Decrement = value.Msg() + + return obj +} + +// One or more metric tags can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. +// MetricTags returns a []PatternFlowIpv4PriorityRawMetricTag +func (obj *patternFlowIpv4PriorityRaw) MetricTags() PatternFlowIpv4PriorityRawPatternFlowIpv4PriorityRawMetricTagIter { + if len(obj.obj.MetricTags) == 0 { + obj.obj.MetricTags = []*otg.PatternFlowIpv4PriorityRawMetricTag{} + } + if obj.metricTagsHolder == nil { + obj.metricTagsHolder = newPatternFlowIpv4PriorityRawPatternFlowIpv4PriorityRawMetricTagIter(&obj.obj.MetricTags).setMsg(obj) + } + return obj.metricTagsHolder +} + +type patternFlowIpv4PriorityRawPatternFlowIpv4PriorityRawMetricTagIter struct { + obj *patternFlowIpv4PriorityRaw + patternFlowIpv4PriorityRawMetricTagSlice []PatternFlowIpv4PriorityRawMetricTag + fieldPtr *[]*otg.PatternFlowIpv4PriorityRawMetricTag +} + +func newPatternFlowIpv4PriorityRawPatternFlowIpv4PriorityRawMetricTagIter(ptr *[]*otg.PatternFlowIpv4PriorityRawMetricTag) PatternFlowIpv4PriorityRawPatternFlowIpv4PriorityRawMetricTagIter { + return &patternFlowIpv4PriorityRawPatternFlowIpv4PriorityRawMetricTagIter{fieldPtr: ptr} +} + +type PatternFlowIpv4PriorityRawPatternFlowIpv4PriorityRawMetricTagIter interface { + setMsg(*patternFlowIpv4PriorityRaw) PatternFlowIpv4PriorityRawPatternFlowIpv4PriorityRawMetricTagIter + Items() []PatternFlowIpv4PriorityRawMetricTag + Add() PatternFlowIpv4PriorityRawMetricTag + Append(items ...PatternFlowIpv4PriorityRawMetricTag) PatternFlowIpv4PriorityRawPatternFlowIpv4PriorityRawMetricTagIter + Set(index int, newObj PatternFlowIpv4PriorityRawMetricTag) PatternFlowIpv4PriorityRawPatternFlowIpv4PriorityRawMetricTagIter + Clear() PatternFlowIpv4PriorityRawPatternFlowIpv4PriorityRawMetricTagIter + clearHolderSlice() PatternFlowIpv4PriorityRawPatternFlowIpv4PriorityRawMetricTagIter + appendHolderSlice(item PatternFlowIpv4PriorityRawMetricTag) PatternFlowIpv4PriorityRawPatternFlowIpv4PriorityRawMetricTagIter +} + +func (obj *patternFlowIpv4PriorityRawPatternFlowIpv4PriorityRawMetricTagIter) setMsg(msg *patternFlowIpv4PriorityRaw) PatternFlowIpv4PriorityRawPatternFlowIpv4PriorityRawMetricTagIter { + obj.clearHolderSlice() + for _, val := range *obj.fieldPtr { + obj.appendHolderSlice(&patternFlowIpv4PriorityRawMetricTag{obj: val}) + } + obj.obj = msg + return obj +} + +func (obj *patternFlowIpv4PriorityRawPatternFlowIpv4PriorityRawMetricTagIter) Items() []PatternFlowIpv4PriorityRawMetricTag { + return obj.patternFlowIpv4PriorityRawMetricTagSlice +} + +func (obj *patternFlowIpv4PriorityRawPatternFlowIpv4PriorityRawMetricTagIter) Add() PatternFlowIpv4PriorityRawMetricTag { + newObj := &otg.PatternFlowIpv4PriorityRawMetricTag{} + *obj.fieldPtr = append(*obj.fieldPtr, newObj) + newLibObj := &patternFlowIpv4PriorityRawMetricTag{obj: newObj} + newLibObj.setDefault() + obj.patternFlowIpv4PriorityRawMetricTagSlice = append(obj.patternFlowIpv4PriorityRawMetricTagSlice, newLibObj) + return newLibObj +} + +func (obj *patternFlowIpv4PriorityRawPatternFlowIpv4PriorityRawMetricTagIter) Append(items ...PatternFlowIpv4PriorityRawMetricTag) PatternFlowIpv4PriorityRawPatternFlowIpv4PriorityRawMetricTagIter { + for _, item := range items { + newObj := item.Msg() + *obj.fieldPtr = append(*obj.fieldPtr, newObj) + obj.patternFlowIpv4PriorityRawMetricTagSlice = append(obj.patternFlowIpv4PriorityRawMetricTagSlice, item) + } + return obj +} + +func (obj *patternFlowIpv4PriorityRawPatternFlowIpv4PriorityRawMetricTagIter) Set(index int, newObj PatternFlowIpv4PriorityRawMetricTag) PatternFlowIpv4PriorityRawPatternFlowIpv4PriorityRawMetricTagIter { + (*obj.fieldPtr)[index] = newObj.Msg() + obj.patternFlowIpv4PriorityRawMetricTagSlice[index] = newObj + return obj +} +func (obj *patternFlowIpv4PriorityRawPatternFlowIpv4PriorityRawMetricTagIter) Clear() PatternFlowIpv4PriorityRawPatternFlowIpv4PriorityRawMetricTagIter { + if len(*obj.fieldPtr) > 0 { + *obj.fieldPtr = []*otg.PatternFlowIpv4PriorityRawMetricTag{} + obj.patternFlowIpv4PriorityRawMetricTagSlice = []PatternFlowIpv4PriorityRawMetricTag{} + } + return obj +} +func (obj *patternFlowIpv4PriorityRawPatternFlowIpv4PriorityRawMetricTagIter) clearHolderSlice() PatternFlowIpv4PriorityRawPatternFlowIpv4PriorityRawMetricTagIter { + if len(obj.patternFlowIpv4PriorityRawMetricTagSlice) > 0 { + obj.patternFlowIpv4PriorityRawMetricTagSlice = []PatternFlowIpv4PriorityRawMetricTag{} + } + return obj +} +func (obj *patternFlowIpv4PriorityRawPatternFlowIpv4PriorityRawMetricTagIter) appendHolderSlice(item PatternFlowIpv4PriorityRawMetricTag) PatternFlowIpv4PriorityRawPatternFlowIpv4PriorityRawMetricTagIter { + obj.patternFlowIpv4PriorityRawMetricTagSlice = append(obj.patternFlowIpv4PriorityRawMetricTagSlice, item) + return obj +} + +func (obj *patternFlowIpv4PriorityRaw) validateObj(vObj *validation, set_default bool) { + if set_default { + obj.setDefault() + } + + if obj.obj.Value != nil { + + if *obj.obj.Value > 255 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("0 <= PatternFlowIpv4PriorityRaw.Value <= 255 but Got %d", *obj.obj.Value)) + } + + } + + if obj.obj.Values != nil { + + for _, item := range obj.obj.Values { + if item > 255 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("min(uint32) <= PatternFlowIpv4PriorityRaw.Values <= 255 but Got %d", item)) + } + + } + + } + + if obj.obj.Increment != nil { + + obj.Increment().validateObj(vObj, set_default) + } + + if obj.obj.Decrement != nil { + + obj.Decrement().validateObj(vObj, set_default) + } + + if len(obj.obj.MetricTags) != 0 { + + if set_default { + obj.MetricTags().clearHolderSlice() + for _, item := range obj.obj.MetricTags { + obj.MetricTags().appendHolderSlice(&patternFlowIpv4PriorityRawMetricTag{obj: item}) + } + } + for _, item := range obj.MetricTags().Items() { + item.validateObj(vObj, set_default) + } + + } + +} + +func (obj *patternFlowIpv4PriorityRaw) setDefault() { + if obj.obj.Choice == nil { + obj.SetChoice(PatternFlowIpv4PriorityRawChoice.VALUE) + + } + +} + +// ***** FlowIpv4Tos ***** +type flowIpv4Tos struct { + validation + obj *otg.FlowIpv4Tos + precedenceHolder PatternFlowIpv4TosPrecedence + delayHolder PatternFlowIpv4TosDelay + throughputHolder PatternFlowIpv4TosThroughput + reliabilityHolder PatternFlowIpv4TosReliability + monetaryHolder PatternFlowIpv4TosMonetary + unusedHolder PatternFlowIpv4TosUnused +} + +func NewFlowIpv4Tos() FlowIpv4Tos { + obj := flowIpv4Tos{obj: &otg.FlowIpv4Tos{}} + obj.setDefault() + return &obj +} + +func (obj *flowIpv4Tos) Msg() *otg.FlowIpv4Tos { + return obj.obj +} + +func (obj *flowIpv4Tos) SetMsg(msg *otg.FlowIpv4Tos) FlowIpv4Tos { + obj.setNil() + proto.Merge(obj.obj, msg) + return obj +} + +func (obj *flowIpv4Tos) ToProto() (*otg.FlowIpv4Tos, error) { + err := obj.validateToAndFrom() + if err != nil { + return nil, err + } + return obj.Msg(), nil +} + +func (obj *flowIpv4Tos) FromProto(msg *otg.FlowIpv4Tos) (FlowIpv4Tos, error) { + newObj := obj.SetMsg(msg) + err := newObj.validateToAndFrom() + if err != nil { + return nil, err + } + return newObj, nil +} + +func (obj *flowIpv4Tos) ToPbText() (string, error) { + vErr := obj.validateToAndFrom() + if vErr != nil { + return "", vErr + } + protoMarshal, err := proto.Marshal(obj.Msg()) + if err != nil { + return "", err + } + return string(protoMarshal), nil +} + +func (obj *flowIpv4Tos) FromPbText(value string) error { + retObj := proto.Unmarshal([]byte(value), obj.Msg()) + if retObj != nil { + return retObj + } + obj.setNil() + vErr := obj.validateToAndFrom() + if vErr != nil { + return vErr + } + return retObj +} + +func (obj *flowIpv4Tos) ToYaml() (string, error) { + vErr := obj.validateToAndFrom() + if vErr != nil { + return "", vErr + } + opts := protojson.MarshalOptions{ + UseProtoNames: true, + AllowPartial: true, + EmitUnpopulated: false, + } + data, err := opts.Marshal(obj.Msg()) + if err != nil { + return "", err + } + data, err = yaml.JSONToYAML(data) + if err != nil { + return "", err + } + return string(data), nil +} + +func (obj *flowIpv4Tos) FromYaml(value string) error { + if value == "" { + value = "{}" + } + data, err := yaml.YAMLToJSON([]byte(value)) + if err != nil { + return err + } + opts := protojson.UnmarshalOptions{ + AllowPartial: true, + DiscardUnknown: false, + } + uError := opts.Unmarshal([]byte(data), obj.Msg()) + if uError != nil { + return fmt.Errorf("unmarshal error %s", strings.Replace( + uError.Error(), "\u00a0", " ", -1)[7:]) + } + obj.setNil() + vErr := obj.validateToAndFrom() + if vErr != nil { + return vErr + } + return nil +} + +func (obj *flowIpv4Tos) ToJson() (string, error) { + vErr := obj.validateToAndFrom() + if vErr != nil { + return "", vErr + } + opts := protojson.MarshalOptions{ + UseProtoNames: true, + AllowPartial: true, + EmitUnpopulated: false, + Indent: " ", + } + data, err := opts.Marshal(obj.Msg()) + if err != nil { + return "", err + } + return string(data), nil +} + +func (obj *flowIpv4Tos) FromJson(value string) error { + opts := protojson.UnmarshalOptions{ + AllowPartial: true, + DiscardUnknown: false, + } + if value == "" { + value = "{}" + } + uError := opts.Unmarshal([]byte(value), obj.Msg()) + if uError != nil { + return fmt.Errorf("unmarshal error %s", strings.Replace( + uError.Error(), "\u00a0", " ", -1)[7:]) + } + obj.setNil() + err := obj.validateToAndFrom() + if err != nil { + return err + } + return nil +} + +func (obj *flowIpv4Tos) validateToAndFrom() error { + // emptyVars() + obj.validateObj(&obj.validation, true) + return obj.validationResult() +} + +func (obj *flowIpv4Tos) Validate() error { + // emptyVars() + obj.validateObj(&obj.validation, false) + return obj.validationResult() +} + +func (obj *flowIpv4Tos) String() string { + str, err := obj.ToYaml() + if err != nil { + return err.Error() + } + return str +} + +func (obj *flowIpv4Tos) Clone() (FlowIpv4Tos, error) { + vErr := obj.Validate() + if vErr != nil { + return nil, vErr + } + newObj := NewFlowIpv4Tos() + data, err := proto.Marshal(obj.Msg()) + if err != nil { + return nil, err + } + pbErr := proto.Unmarshal(data, newObj.Msg()) + if pbErr != nil { + return nil, pbErr + } + return newObj, nil +} + +func (obj *flowIpv4Tos) setNil() { + obj.precedenceHolder = nil + obj.delayHolder = nil + obj.throughputHolder = nil + obj.reliabilityHolder = nil + obj.monetaryHolder = nil + obj.unusedHolder = nil + obj.validationErrors = nil + obj.warnings = nil + obj.constraints = make(map[string]map[string]Constraints) +} + +// FlowIpv4Tos is type of service (TOS) packet field. +type FlowIpv4Tos interface { + Validation + // Msg marshals FlowIpv4Tos to protobuf object *otg.FlowIpv4Tos + // and doesn't set defaults + Msg() *otg.FlowIpv4Tos + // SetMsg unmarshals FlowIpv4Tos from protobuf object *otg.FlowIpv4Tos + // and doesn't set defaults + SetMsg(*otg.FlowIpv4Tos) FlowIpv4Tos + // ToProto marshals FlowIpv4Tos to protobuf object *otg.FlowIpv4Tos + ToProto() (*otg.FlowIpv4Tos, error) + // ToPbText marshals FlowIpv4Tos to protobuf text + ToPbText() (string, error) + // ToYaml marshals FlowIpv4Tos to YAML text + ToYaml() (string, error) + // ToJson marshals FlowIpv4Tos to JSON text + ToJson() (string, error) + // FromProto unmarshals FlowIpv4Tos from protobuf object *otg.FlowIpv4Tos + FromProto(msg *otg.FlowIpv4Tos) (FlowIpv4Tos, error) + // FromPbText unmarshals FlowIpv4Tos from protobuf text + FromPbText(value string) error + // FromYaml unmarshals FlowIpv4Tos from YAML text + FromYaml(value string) error + // FromJson unmarshals FlowIpv4Tos from JSON text + FromJson(value string) error + // Validate validates FlowIpv4Tos + Validate() error + // A stringer function + String() string + // Clones the object + Clone() (FlowIpv4Tos, error) + validateToAndFrom() error + validateObj(vObj *validation, set_default bool) + setDefault() + // Precedence returns PatternFlowIpv4TosPrecedence, set in FlowIpv4Tos. + // PatternFlowIpv4TosPrecedence is precedence + Precedence() PatternFlowIpv4TosPrecedence + // SetPrecedence assigns PatternFlowIpv4TosPrecedence provided by user to FlowIpv4Tos. + // PatternFlowIpv4TosPrecedence is precedence + SetPrecedence(value PatternFlowIpv4TosPrecedence) FlowIpv4Tos + // HasPrecedence checks if Precedence has been set in FlowIpv4Tos + HasPrecedence() bool + // Delay returns PatternFlowIpv4TosDelay, set in FlowIpv4Tos. + // PatternFlowIpv4TosDelay is delay + Delay() PatternFlowIpv4TosDelay + // SetDelay assigns PatternFlowIpv4TosDelay provided by user to FlowIpv4Tos. + // PatternFlowIpv4TosDelay is delay + SetDelay(value PatternFlowIpv4TosDelay) FlowIpv4Tos + // HasDelay checks if Delay has been set in FlowIpv4Tos + HasDelay() bool + // Throughput returns PatternFlowIpv4TosThroughput, set in FlowIpv4Tos. + // PatternFlowIpv4TosThroughput is throughput + Throughput() PatternFlowIpv4TosThroughput + // SetThroughput assigns PatternFlowIpv4TosThroughput provided by user to FlowIpv4Tos. + // PatternFlowIpv4TosThroughput is throughput + SetThroughput(value PatternFlowIpv4TosThroughput) FlowIpv4Tos + // HasThroughput checks if Throughput has been set in FlowIpv4Tos + HasThroughput() bool + // Reliability returns PatternFlowIpv4TosReliability, set in FlowIpv4Tos. + // PatternFlowIpv4TosReliability is reliability + Reliability() PatternFlowIpv4TosReliability + // SetReliability assigns PatternFlowIpv4TosReliability provided by user to FlowIpv4Tos. + // PatternFlowIpv4TosReliability is reliability + SetReliability(value PatternFlowIpv4TosReliability) FlowIpv4Tos + // HasReliability checks if Reliability has been set in FlowIpv4Tos + HasReliability() bool + // Monetary returns PatternFlowIpv4TosMonetary, set in FlowIpv4Tos. + // PatternFlowIpv4TosMonetary is monetary + Monetary() PatternFlowIpv4TosMonetary + // SetMonetary assigns PatternFlowIpv4TosMonetary provided by user to FlowIpv4Tos. + // PatternFlowIpv4TosMonetary is monetary + SetMonetary(value PatternFlowIpv4TosMonetary) FlowIpv4Tos + // HasMonetary checks if Monetary has been set in FlowIpv4Tos + HasMonetary() bool + // Unused returns PatternFlowIpv4TosUnused, set in FlowIpv4Tos. + // PatternFlowIpv4TosUnused is unused + Unused() PatternFlowIpv4TosUnused + // SetUnused assigns PatternFlowIpv4TosUnused provided by user to FlowIpv4Tos. + // PatternFlowIpv4TosUnused is unused + SetUnused(value PatternFlowIpv4TosUnused) FlowIpv4Tos + // HasUnused checks if Unused has been set in FlowIpv4Tos + HasUnused() bool + setNil() +} + +// description is TBD +// Precedence returns a PatternFlowIpv4TosPrecedence +func (obj *flowIpv4Tos) Precedence() PatternFlowIpv4TosPrecedence { + if obj.obj.Precedence == nil { + obj.obj.Precedence = NewPatternFlowIpv4TosPrecedence().Msg() + } + if obj.precedenceHolder == nil { + obj.precedenceHolder = &patternFlowIpv4TosPrecedence{obj: obj.obj.Precedence} + } + return obj.precedenceHolder +} + +// description is TBD +// Precedence returns a PatternFlowIpv4TosPrecedence +func (obj *flowIpv4Tos) HasPrecedence() bool { + return obj.obj.Precedence != nil +} + +// description is TBD +// SetPrecedence sets the PatternFlowIpv4TosPrecedence value in the FlowIpv4Tos object +func (obj *flowIpv4Tos) SetPrecedence(value PatternFlowIpv4TosPrecedence) FlowIpv4Tos { + + obj.precedenceHolder = nil + obj.obj.Precedence = value.Msg() + + return obj +} + +// description is TBD +// Delay returns a PatternFlowIpv4TosDelay +func (obj *flowIpv4Tos) Delay() PatternFlowIpv4TosDelay { + if obj.obj.Delay == nil { + obj.obj.Delay = NewPatternFlowIpv4TosDelay().Msg() + } + if obj.delayHolder == nil { + obj.delayHolder = &patternFlowIpv4TosDelay{obj: obj.obj.Delay} + } + return obj.delayHolder +} + +// description is TBD +// Delay returns a PatternFlowIpv4TosDelay +func (obj *flowIpv4Tos) HasDelay() bool { + return obj.obj.Delay != nil +} + +// description is TBD +// SetDelay sets the PatternFlowIpv4TosDelay value in the FlowIpv4Tos object +func (obj *flowIpv4Tos) SetDelay(value PatternFlowIpv4TosDelay) FlowIpv4Tos { + + obj.delayHolder = nil + obj.obj.Delay = value.Msg() + + return obj +} + +// description is TBD +// Throughput returns a PatternFlowIpv4TosThroughput +func (obj *flowIpv4Tos) Throughput() PatternFlowIpv4TosThroughput { + if obj.obj.Throughput == nil { + obj.obj.Throughput = NewPatternFlowIpv4TosThroughput().Msg() + } + if obj.throughputHolder == nil { + obj.throughputHolder = &patternFlowIpv4TosThroughput{obj: obj.obj.Throughput} + } + return obj.throughputHolder +} + +// description is TBD +// Throughput returns a PatternFlowIpv4TosThroughput +func (obj *flowIpv4Tos) HasThroughput() bool { + return obj.obj.Throughput != nil +} + +// description is TBD +// SetThroughput sets the PatternFlowIpv4TosThroughput value in the FlowIpv4Tos object +func (obj *flowIpv4Tos) SetThroughput(value PatternFlowIpv4TosThroughput) FlowIpv4Tos { + + obj.throughputHolder = nil + obj.obj.Throughput = value.Msg() + + return obj +} + +// description is TBD +// Reliability returns a PatternFlowIpv4TosReliability +func (obj *flowIpv4Tos) Reliability() PatternFlowIpv4TosReliability { + if obj.obj.Reliability == nil { + obj.obj.Reliability = NewPatternFlowIpv4TosReliability().Msg() + } + if obj.reliabilityHolder == nil { + obj.reliabilityHolder = &patternFlowIpv4TosReliability{obj: obj.obj.Reliability} + } + return obj.reliabilityHolder +} + +// description is TBD +// Reliability returns a PatternFlowIpv4TosReliability +func (obj *flowIpv4Tos) HasReliability() bool { + return obj.obj.Reliability != nil +} + +// description is TBD +// SetReliability sets the PatternFlowIpv4TosReliability value in the FlowIpv4Tos object +func (obj *flowIpv4Tos) SetReliability(value PatternFlowIpv4TosReliability) FlowIpv4Tos { + + obj.reliabilityHolder = nil + obj.obj.Reliability = value.Msg() + + return obj +} + +// description is TBD +// Monetary returns a PatternFlowIpv4TosMonetary +func (obj *flowIpv4Tos) Monetary() PatternFlowIpv4TosMonetary { + if obj.obj.Monetary == nil { + obj.obj.Monetary = NewPatternFlowIpv4TosMonetary().Msg() + } + if obj.monetaryHolder == nil { + obj.monetaryHolder = &patternFlowIpv4TosMonetary{obj: obj.obj.Monetary} + } + return obj.monetaryHolder +} + +// description is TBD +// Monetary returns a PatternFlowIpv4TosMonetary +func (obj *flowIpv4Tos) HasMonetary() bool { + return obj.obj.Monetary != nil +} + +// description is TBD +// SetMonetary sets the PatternFlowIpv4TosMonetary value in the FlowIpv4Tos object +func (obj *flowIpv4Tos) SetMonetary(value PatternFlowIpv4TosMonetary) FlowIpv4Tos { + + obj.monetaryHolder = nil + obj.obj.Monetary = value.Msg() + + return obj +} + +// description is TBD +// Unused returns a PatternFlowIpv4TosUnused +func (obj *flowIpv4Tos) Unused() PatternFlowIpv4TosUnused { + if obj.obj.Unused == nil { + obj.obj.Unused = NewPatternFlowIpv4TosUnused().Msg() + } + if obj.unusedHolder == nil { + obj.unusedHolder = &patternFlowIpv4TosUnused{obj: obj.obj.Unused} + } + return obj.unusedHolder +} + +// description is TBD +// Unused returns a PatternFlowIpv4TosUnused +func (obj *flowIpv4Tos) HasUnused() bool { + return obj.obj.Unused != nil +} + +// description is TBD +// SetUnused sets the PatternFlowIpv4TosUnused value in the FlowIpv4Tos object +func (obj *flowIpv4Tos) SetUnused(value PatternFlowIpv4TosUnused) FlowIpv4Tos { + + obj.unusedHolder = nil + obj.obj.Unused = value.Msg() + + return obj +} + +func (obj *flowIpv4Tos) validateObj(vObj *validation, set_default bool) { + if set_default { + obj.setDefault() + } + + if obj.obj.Precedence != nil { + + obj.Precedence().validateObj(vObj, set_default) + } + + if obj.obj.Delay != nil { + + obj.Delay().validateObj(vObj, set_default) + } + + if obj.obj.Throughput != nil { + + obj.Throughput().validateObj(vObj, set_default) + } + + if obj.obj.Reliability != nil { + + obj.Reliability().validateObj(vObj, set_default) + } + + if obj.obj.Monetary != nil { + + obj.Monetary().validateObj(vObj, set_default) + } + + if obj.obj.Unused != nil { + + obj.Unused().validateObj(vObj, set_default) + } + +} + +func (obj *flowIpv4Tos) setDefault() { + +} + +// ***** FlowIpv4Dscp ***** +type flowIpv4Dscp struct { + validation + obj *otg.FlowIpv4Dscp + phbHolder PatternFlowIpv4DscpPhb + ecnHolder PatternFlowIpv4DscpEcn +} + +func NewFlowIpv4Dscp() FlowIpv4Dscp { + obj := flowIpv4Dscp{obj: &otg.FlowIpv4Dscp{}} + obj.setDefault() + return &obj +} + +func (obj *flowIpv4Dscp) Msg() *otg.FlowIpv4Dscp { + return obj.obj +} + +func (obj *flowIpv4Dscp) SetMsg(msg *otg.FlowIpv4Dscp) FlowIpv4Dscp { + obj.setNil() + proto.Merge(obj.obj, msg) + return obj +} + +func (obj *flowIpv4Dscp) ToProto() (*otg.FlowIpv4Dscp, error) { + err := obj.validateToAndFrom() + if err != nil { + return nil, err + } + return obj.Msg(), nil +} + +func (obj *flowIpv4Dscp) FromProto(msg *otg.FlowIpv4Dscp) (FlowIpv4Dscp, error) { + newObj := obj.SetMsg(msg) + err := newObj.validateToAndFrom() + if err != nil { + return nil, err + } + return newObj, nil +} + +func (obj *flowIpv4Dscp) ToPbText() (string, error) { + vErr := obj.validateToAndFrom() + if vErr != nil { + return "", vErr + } + protoMarshal, err := proto.Marshal(obj.Msg()) + if err != nil { + return "", err + } + return string(protoMarshal), nil +} + +func (obj *flowIpv4Dscp) FromPbText(value string) error { + retObj := proto.Unmarshal([]byte(value), obj.Msg()) + if retObj != nil { + return retObj + } + obj.setNil() + vErr := obj.validateToAndFrom() + if vErr != nil { + return vErr + } + return retObj +} + +func (obj *flowIpv4Dscp) ToYaml() (string, error) { + vErr := obj.validateToAndFrom() + if vErr != nil { + return "", vErr + } + opts := protojson.MarshalOptions{ + UseProtoNames: true, + AllowPartial: true, + EmitUnpopulated: false, + } + data, err := opts.Marshal(obj.Msg()) + if err != nil { + return "", err + } + data, err = yaml.JSONToYAML(data) + if err != nil { + return "", err + } + return string(data), nil +} + +func (obj *flowIpv4Dscp) FromYaml(value string) error { + if value == "" { + value = "{}" + } + data, err := yaml.YAMLToJSON([]byte(value)) + if err != nil { + return err + } + opts := protojson.UnmarshalOptions{ + AllowPartial: true, + DiscardUnknown: false, + } + uError := opts.Unmarshal([]byte(data), obj.Msg()) + if uError != nil { + return fmt.Errorf("unmarshal error %s", strings.Replace( + uError.Error(), "\u00a0", " ", -1)[7:]) + } + obj.setNil() + vErr := obj.validateToAndFrom() + if vErr != nil { + return vErr + } + return nil +} + +func (obj *flowIpv4Dscp) ToJson() (string, error) { + vErr := obj.validateToAndFrom() + if vErr != nil { + return "", vErr + } + opts := protojson.MarshalOptions{ + UseProtoNames: true, + AllowPartial: true, + EmitUnpopulated: false, + Indent: " ", + } + data, err := opts.Marshal(obj.Msg()) + if err != nil { + return "", err + } + return string(data), nil +} + +func (obj *flowIpv4Dscp) FromJson(value string) error { + opts := protojson.UnmarshalOptions{ + AllowPartial: true, + DiscardUnknown: false, + } + if value == "" { + value = "{}" + } + uError := opts.Unmarshal([]byte(value), obj.Msg()) + if uError != nil { + return fmt.Errorf("unmarshal error %s", strings.Replace( + uError.Error(), "\u00a0", " ", -1)[7:]) + } + obj.setNil() + err := obj.validateToAndFrom() + if err != nil { + return err + } + return nil +} + +func (obj *flowIpv4Dscp) validateToAndFrom() error { + // emptyVars() + obj.validateObj(&obj.validation, true) + return obj.validationResult() +} + +func (obj *flowIpv4Dscp) Validate() error { + // emptyVars() + obj.validateObj(&obj.validation, false) + return obj.validationResult() +} + +func (obj *flowIpv4Dscp) String() string { + str, err := obj.ToYaml() + if err != nil { + return err.Error() + } + return str +} + +func (obj *flowIpv4Dscp) Clone() (FlowIpv4Dscp, error) { + vErr := obj.Validate() + if vErr != nil { + return nil, vErr + } + newObj := NewFlowIpv4Dscp() + data, err := proto.Marshal(obj.Msg()) + if err != nil { + return nil, err + } + pbErr := proto.Unmarshal(data, newObj.Msg()) + if pbErr != nil { + return nil, pbErr + } + return newObj, nil +} + +func (obj *flowIpv4Dscp) setNil() { + obj.phbHolder = nil + obj.ecnHolder = nil + obj.validationErrors = nil + obj.warnings = nil + obj.constraints = make(map[string]map[string]Constraints) +} + +// FlowIpv4Dscp is differentiated services code point (DSCP) packet field. +type FlowIpv4Dscp interface { + Validation + // Msg marshals FlowIpv4Dscp to protobuf object *otg.FlowIpv4Dscp + // and doesn't set defaults + Msg() *otg.FlowIpv4Dscp + // SetMsg unmarshals FlowIpv4Dscp from protobuf object *otg.FlowIpv4Dscp + // and doesn't set defaults + SetMsg(*otg.FlowIpv4Dscp) FlowIpv4Dscp + // ToProto marshals FlowIpv4Dscp to protobuf object *otg.FlowIpv4Dscp + ToProto() (*otg.FlowIpv4Dscp, error) + // ToPbText marshals FlowIpv4Dscp to protobuf text + ToPbText() (string, error) + // ToYaml marshals FlowIpv4Dscp to YAML text + ToYaml() (string, error) + // ToJson marshals FlowIpv4Dscp to JSON text + ToJson() (string, error) + // FromProto unmarshals FlowIpv4Dscp from protobuf object *otg.FlowIpv4Dscp + FromProto(msg *otg.FlowIpv4Dscp) (FlowIpv4Dscp, error) + // FromPbText unmarshals FlowIpv4Dscp from protobuf text + FromPbText(value string) error + // FromYaml unmarshals FlowIpv4Dscp from YAML text + FromYaml(value string) error + // FromJson unmarshals FlowIpv4Dscp from JSON text + FromJson(value string) error + // Validate validates FlowIpv4Dscp + Validate() error + // A stringer function + String() string + // Clones the object + Clone() (FlowIpv4Dscp, error) + validateToAndFrom() error + validateObj(vObj *validation, set_default bool) + setDefault() + // Phb returns PatternFlowIpv4DscpPhb, set in FlowIpv4Dscp. + // PatternFlowIpv4DscpPhb is per hop behavior + Phb() PatternFlowIpv4DscpPhb + // SetPhb assigns PatternFlowIpv4DscpPhb provided by user to FlowIpv4Dscp. + // PatternFlowIpv4DscpPhb is per hop behavior + SetPhb(value PatternFlowIpv4DscpPhb) FlowIpv4Dscp + // HasPhb checks if Phb has been set in FlowIpv4Dscp + HasPhb() bool + // Ecn returns PatternFlowIpv4DscpEcn, set in FlowIpv4Dscp. + // PatternFlowIpv4DscpEcn is explicit congestion notification + Ecn() PatternFlowIpv4DscpEcn + // SetEcn assigns PatternFlowIpv4DscpEcn provided by user to FlowIpv4Dscp. + // PatternFlowIpv4DscpEcn is explicit congestion notification + SetEcn(value PatternFlowIpv4DscpEcn) FlowIpv4Dscp + // HasEcn checks if Ecn has been set in FlowIpv4Dscp + HasEcn() bool + setNil() +} + +// description is TBD +// Phb returns a PatternFlowIpv4DscpPhb +func (obj *flowIpv4Dscp) Phb() PatternFlowIpv4DscpPhb { + if obj.obj.Phb == nil { + obj.obj.Phb = NewPatternFlowIpv4DscpPhb().Msg() + } + if obj.phbHolder == nil { + obj.phbHolder = &patternFlowIpv4DscpPhb{obj: obj.obj.Phb} + } + return obj.phbHolder +} + +// description is TBD +// Phb returns a PatternFlowIpv4DscpPhb +func (obj *flowIpv4Dscp) HasPhb() bool { + return obj.obj.Phb != nil +} + +// description is TBD +// SetPhb sets the PatternFlowIpv4DscpPhb value in the FlowIpv4Dscp object +func (obj *flowIpv4Dscp) SetPhb(value PatternFlowIpv4DscpPhb) FlowIpv4Dscp { + + obj.phbHolder = nil + obj.obj.Phb = value.Msg() + + return obj +} + +// description is TBD +// Ecn returns a PatternFlowIpv4DscpEcn +func (obj *flowIpv4Dscp) Ecn() PatternFlowIpv4DscpEcn { + if obj.obj.Ecn == nil { + obj.obj.Ecn = NewPatternFlowIpv4DscpEcn().Msg() + } + if obj.ecnHolder == nil { + obj.ecnHolder = &patternFlowIpv4DscpEcn{obj: obj.obj.Ecn} + } + return obj.ecnHolder +} + +// description is TBD +// Ecn returns a PatternFlowIpv4DscpEcn +func (obj *flowIpv4Dscp) HasEcn() bool { + return obj.obj.Ecn != nil +} + +// description is TBD +// SetEcn sets the PatternFlowIpv4DscpEcn value in the FlowIpv4Dscp object +func (obj *flowIpv4Dscp) SetEcn(value PatternFlowIpv4DscpEcn) FlowIpv4Dscp { + + obj.ecnHolder = nil + obj.obj.Ecn = value.Msg() + + return obj +} + +func (obj *flowIpv4Dscp) validateObj(vObj *validation, set_default bool) { + if set_default { + obj.setDefault() + } + + if obj.obj.Phb != nil { + + obj.Phb().validateObj(vObj, set_default) + } + + if obj.obj.Ecn != nil { + + obj.Ecn().validateObj(vObj, set_default) + } + +} + +func (obj *flowIpv4Dscp) setDefault() { + +} + +// ***** PatternFlowIpv4TotalLengthCounter ***** +type patternFlowIpv4TotalLengthCounter struct { + validation + obj *otg.PatternFlowIpv4TotalLengthCounter +} + +func NewPatternFlowIpv4TotalLengthCounter() PatternFlowIpv4TotalLengthCounter { + obj := patternFlowIpv4TotalLengthCounter{obj: &otg.PatternFlowIpv4TotalLengthCounter{}} + obj.setDefault() + return &obj +} + +func (obj *patternFlowIpv4TotalLengthCounter) Msg() *otg.PatternFlowIpv4TotalLengthCounter { + return obj.obj +} + +func (obj *patternFlowIpv4TotalLengthCounter) SetMsg(msg *otg.PatternFlowIpv4TotalLengthCounter) PatternFlowIpv4TotalLengthCounter { + + proto.Merge(obj.obj, msg) + return obj +} + +func (obj *patternFlowIpv4TotalLengthCounter) ToProto() (*otg.PatternFlowIpv4TotalLengthCounter, error) { + err := obj.validateToAndFrom() + if err != nil { + return nil, err + } + return obj.Msg(), nil +} + +func (obj *patternFlowIpv4TotalLengthCounter) FromProto(msg *otg.PatternFlowIpv4TotalLengthCounter) (PatternFlowIpv4TotalLengthCounter, error) { + newObj := obj.SetMsg(msg) + err := newObj.validateToAndFrom() + if err != nil { + return nil, err + } + return newObj, nil +} + +func (obj *patternFlowIpv4TotalLengthCounter) ToPbText() (string, error) { + vErr := obj.validateToAndFrom() + if vErr != nil { + return "", vErr + } + protoMarshal, err := proto.Marshal(obj.Msg()) + if err != nil { + return "", err + } + return string(protoMarshal), nil +} + +func (obj *patternFlowIpv4TotalLengthCounter) FromPbText(value string) error { + retObj := proto.Unmarshal([]byte(value), obj.Msg()) + if retObj != nil { + return retObj + } + + vErr := obj.validateToAndFrom() + if vErr != nil { + return vErr + } + return retObj +} + +func (obj *patternFlowIpv4TotalLengthCounter) ToYaml() (string, error) { + vErr := obj.validateToAndFrom() + if vErr != nil { + return "", vErr + } + opts := protojson.MarshalOptions{ + UseProtoNames: true, + AllowPartial: true, + EmitUnpopulated: false, + } + data, err := opts.Marshal(obj.Msg()) + if err != nil { + return "", err + } + data, err = yaml.JSONToYAML(data) + if err != nil { + return "", err + } + return string(data), nil +} + +func (obj *patternFlowIpv4TotalLengthCounter) FromYaml(value string) error { + if value == "" { + value = "{}" + } + data, err := yaml.YAMLToJSON([]byte(value)) + if err != nil { + return err + } + opts := protojson.UnmarshalOptions{ + AllowPartial: true, + DiscardUnknown: false, + } + uError := opts.Unmarshal([]byte(data), obj.Msg()) + if uError != nil { + return fmt.Errorf("unmarshal error %s", strings.Replace( + uError.Error(), "\u00a0", " ", -1)[7:]) + } + + vErr := obj.validateToAndFrom() + if vErr != nil { + return vErr + } + return nil +} + +func (obj *patternFlowIpv4TotalLengthCounter) ToJson() (string, error) { + vErr := obj.validateToAndFrom() + if vErr != nil { + return "", vErr + } + opts := protojson.MarshalOptions{ + UseProtoNames: true, + AllowPartial: true, + EmitUnpopulated: false, + Indent: " ", + } + data, err := opts.Marshal(obj.Msg()) + if err != nil { + return "", err + } + return string(data), nil +} + +func (obj *patternFlowIpv4TotalLengthCounter) FromJson(value string) error { + opts := protojson.UnmarshalOptions{ + AllowPartial: true, + DiscardUnknown: false, + } + if value == "" { + value = "{}" + } + uError := opts.Unmarshal([]byte(value), obj.Msg()) + if uError != nil { + return fmt.Errorf("unmarshal error %s", strings.Replace( + uError.Error(), "\u00a0", " ", -1)[7:]) + } + + err := obj.validateToAndFrom() + if err != nil { + return err + } + return nil +} + +func (obj *patternFlowIpv4TotalLengthCounter) validateToAndFrom() error { + // emptyVars() + obj.validateObj(&obj.validation, true) + return obj.validationResult() +} + +func (obj *patternFlowIpv4TotalLengthCounter) Validate() error { + // emptyVars() + obj.validateObj(&obj.validation, false) + return obj.validationResult() +} + +func (obj *patternFlowIpv4TotalLengthCounter) String() string { + str, err := obj.ToYaml() + if err != nil { + return err.Error() + } + return str +} + +func (obj *patternFlowIpv4TotalLengthCounter) Clone() (PatternFlowIpv4TotalLengthCounter, error) { + vErr := obj.Validate() + if vErr != nil { + return nil, vErr + } + newObj := NewPatternFlowIpv4TotalLengthCounter() + data, err := proto.Marshal(obj.Msg()) + if err != nil { + return nil, err + } + pbErr := proto.Unmarshal(data, newObj.Msg()) + if pbErr != nil { + return nil, pbErr + } + return newObj, nil +} + +// PatternFlowIpv4TotalLengthCounter is integer counter pattern +type PatternFlowIpv4TotalLengthCounter interface { + Validation + // Msg marshals PatternFlowIpv4TotalLengthCounter to protobuf object *otg.PatternFlowIpv4TotalLengthCounter + // and doesn't set defaults + Msg() *otg.PatternFlowIpv4TotalLengthCounter + // SetMsg unmarshals PatternFlowIpv4TotalLengthCounter from protobuf object *otg.PatternFlowIpv4TotalLengthCounter + // and doesn't set defaults + SetMsg(*otg.PatternFlowIpv4TotalLengthCounter) PatternFlowIpv4TotalLengthCounter + // ToProto marshals PatternFlowIpv4TotalLengthCounter to protobuf object *otg.PatternFlowIpv4TotalLengthCounter + ToProto() (*otg.PatternFlowIpv4TotalLengthCounter, error) + // ToPbText marshals PatternFlowIpv4TotalLengthCounter to protobuf text + ToPbText() (string, error) + // ToYaml marshals PatternFlowIpv4TotalLengthCounter to YAML text + ToYaml() (string, error) + // ToJson marshals PatternFlowIpv4TotalLengthCounter to JSON text + ToJson() (string, error) + // FromProto unmarshals PatternFlowIpv4TotalLengthCounter from protobuf object *otg.PatternFlowIpv4TotalLengthCounter + FromProto(msg *otg.PatternFlowIpv4TotalLengthCounter) (PatternFlowIpv4TotalLengthCounter, error) + // FromPbText unmarshals PatternFlowIpv4TotalLengthCounter from protobuf text + FromPbText(value string) error + // FromYaml unmarshals PatternFlowIpv4TotalLengthCounter from YAML text + FromYaml(value string) error + // FromJson unmarshals PatternFlowIpv4TotalLengthCounter from JSON text + FromJson(value string) error + // Validate validates PatternFlowIpv4TotalLengthCounter + Validate() error + // A stringer function + String() string + // Clones the object + Clone() (PatternFlowIpv4TotalLengthCounter, error) + validateToAndFrom() error + validateObj(vObj *validation, set_default bool) + setDefault() + // Start returns uint32, set in PatternFlowIpv4TotalLengthCounter. + Start() uint32 + // SetStart assigns uint32 provided by user to PatternFlowIpv4TotalLengthCounter + SetStart(value uint32) PatternFlowIpv4TotalLengthCounter + // HasStart checks if Start has been set in PatternFlowIpv4TotalLengthCounter + HasStart() bool + // Step returns uint32, set in PatternFlowIpv4TotalLengthCounter. + Step() uint32 + // SetStep assigns uint32 provided by user to PatternFlowIpv4TotalLengthCounter + SetStep(value uint32) PatternFlowIpv4TotalLengthCounter + // HasStep checks if Step has been set in PatternFlowIpv4TotalLengthCounter + HasStep() bool + // Count returns uint32, set in PatternFlowIpv4TotalLengthCounter. + Count() uint32 + // SetCount assigns uint32 provided by user to PatternFlowIpv4TotalLengthCounter + SetCount(value uint32) PatternFlowIpv4TotalLengthCounter + // HasCount checks if Count has been set in PatternFlowIpv4TotalLengthCounter + HasCount() bool +} + +// description is TBD +// Start returns a uint32 +func (obj *patternFlowIpv4TotalLengthCounter) Start() uint32 { + + return *obj.obj.Start + +} + +// description is TBD +// Start returns a uint32 +func (obj *patternFlowIpv4TotalLengthCounter) HasStart() bool { + return obj.obj.Start != nil +} + +// description is TBD +// SetStart sets the uint32 value in the PatternFlowIpv4TotalLengthCounter object +func (obj *patternFlowIpv4TotalLengthCounter) SetStart(value uint32) PatternFlowIpv4TotalLengthCounter { + + obj.obj.Start = &value + return obj +} + +// description is TBD +// Step returns a uint32 +func (obj *patternFlowIpv4TotalLengthCounter) Step() uint32 { + + return *obj.obj.Step + +} + +// description is TBD +// Step returns a uint32 +func (obj *patternFlowIpv4TotalLengthCounter) HasStep() bool { + return obj.obj.Step != nil +} + +// description is TBD +// SetStep sets the uint32 value in the PatternFlowIpv4TotalLengthCounter object +func (obj *patternFlowIpv4TotalLengthCounter) SetStep(value uint32) PatternFlowIpv4TotalLengthCounter { + + obj.obj.Step = &value + return obj +} + +// description is TBD +// Count returns a uint32 +func (obj *patternFlowIpv4TotalLengthCounter) Count() uint32 { + + return *obj.obj.Count + +} + +// description is TBD +// Count returns a uint32 +func (obj *patternFlowIpv4TotalLengthCounter) HasCount() bool { + return obj.obj.Count != nil +} + +// description is TBD +// SetCount sets the uint32 value in the PatternFlowIpv4TotalLengthCounter object +func (obj *patternFlowIpv4TotalLengthCounter) SetCount(value uint32) PatternFlowIpv4TotalLengthCounter { + + obj.obj.Count = &value + return obj +} + +func (obj *patternFlowIpv4TotalLengthCounter) validateObj(vObj *validation, set_default bool) { + if set_default { + obj.setDefault() + } + + if obj.obj.Start != nil { + + if *obj.obj.Start > 65535 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("0 <= PatternFlowIpv4TotalLengthCounter.Start <= 65535 but Got %d", *obj.obj.Start)) + } + + } + + if obj.obj.Step != nil { + + if *obj.obj.Step > 65535 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("0 <= PatternFlowIpv4TotalLengthCounter.Step <= 65535 but Got %d", *obj.obj.Step)) + } + + } + + if obj.obj.Count != nil { + + if *obj.obj.Count > 65535 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("0 <= PatternFlowIpv4TotalLengthCounter.Count <= 65535 but Got %d", *obj.obj.Count)) + } + + } + +} + +func (obj *patternFlowIpv4TotalLengthCounter) setDefault() { + if obj.obj.Start == nil { + obj.SetStart(46) + } + if obj.obj.Step == nil { + obj.SetStep(1) + } + if obj.obj.Count == nil { + obj.SetCount(1) + } + +} + +// ***** PatternFlowIpv4TotalLengthMetricTag ***** +type patternFlowIpv4TotalLengthMetricTag struct { + validation + obj *otg.PatternFlowIpv4TotalLengthMetricTag +} + +func NewPatternFlowIpv4TotalLengthMetricTag() PatternFlowIpv4TotalLengthMetricTag { + obj := patternFlowIpv4TotalLengthMetricTag{obj: &otg.PatternFlowIpv4TotalLengthMetricTag{}} + obj.setDefault() + return &obj +} + +func (obj *patternFlowIpv4TotalLengthMetricTag) Msg() *otg.PatternFlowIpv4TotalLengthMetricTag { + return obj.obj +} + +func (obj *patternFlowIpv4TotalLengthMetricTag) SetMsg(msg *otg.PatternFlowIpv4TotalLengthMetricTag) PatternFlowIpv4TotalLengthMetricTag { + + proto.Merge(obj.obj, msg) + return obj +} + +func (obj *patternFlowIpv4TotalLengthMetricTag) ToProto() (*otg.PatternFlowIpv4TotalLengthMetricTag, error) { + err := obj.validateToAndFrom() + if err != nil { + return nil, err + } + return obj.Msg(), nil +} + +func (obj *patternFlowIpv4TotalLengthMetricTag) FromProto(msg *otg.PatternFlowIpv4TotalLengthMetricTag) (PatternFlowIpv4TotalLengthMetricTag, error) { + newObj := obj.SetMsg(msg) + err := newObj.validateToAndFrom() + if err != nil { + return nil, err + } + return newObj, nil +} + +func (obj *patternFlowIpv4TotalLengthMetricTag) ToPbText() (string, error) { + vErr := obj.validateToAndFrom() + if vErr != nil { + return "", vErr + } + protoMarshal, err := proto.Marshal(obj.Msg()) + if err != nil { + return "", err + } + return string(protoMarshal), nil +} + +func (obj *patternFlowIpv4TotalLengthMetricTag) FromPbText(value string) error { + retObj := proto.Unmarshal([]byte(value), obj.Msg()) + if retObj != nil { + return retObj + } + + vErr := obj.validateToAndFrom() + if vErr != nil { + return vErr + } + return retObj +} + +func (obj *patternFlowIpv4TotalLengthMetricTag) ToYaml() (string, error) { + vErr := obj.validateToAndFrom() + if vErr != nil { + return "", vErr + } + opts := protojson.MarshalOptions{ + UseProtoNames: true, + AllowPartial: true, + EmitUnpopulated: false, + } + data, err := opts.Marshal(obj.Msg()) + if err != nil { + return "", err + } + data, err = yaml.JSONToYAML(data) + if err != nil { + return "", err + } + return string(data), nil +} + +func (obj *patternFlowIpv4TotalLengthMetricTag) FromYaml(value string) error { + if value == "" { + value = "{}" + } + data, err := yaml.YAMLToJSON([]byte(value)) + if err != nil { + return err + } + opts := protojson.UnmarshalOptions{ + AllowPartial: true, + DiscardUnknown: false, + } + uError := opts.Unmarshal([]byte(data), obj.Msg()) + if uError != nil { + return fmt.Errorf("unmarshal error %s", strings.Replace( + uError.Error(), "\u00a0", " ", -1)[7:]) + } + + vErr := obj.validateToAndFrom() + if vErr != nil { + return vErr + } + return nil +} + +func (obj *patternFlowIpv4TotalLengthMetricTag) ToJson() (string, error) { + vErr := obj.validateToAndFrom() + if vErr != nil { + return "", vErr + } + opts := protojson.MarshalOptions{ + UseProtoNames: true, + AllowPartial: true, + EmitUnpopulated: false, + Indent: " ", + } + data, err := opts.Marshal(obj.Msg()) + if err != nil { + return "", err + } + return string(data), nil +} + +func (obj *patternFlowIpv4TotalLengthMetricTag) FromJson(value string) error { + opts := protojson.UnmarshalOptions{ + AllowPartial: true, + DiscardUnknown: false, + } + if value == "" { + value = "{}" + } + uError := opts.Unmarshal([]byte(value), obj.Msg()) + if uError != nil { + return fmt.Errorf("unmarshal error %s", strings.Replace( + uError.Error(), "\u00a0", " ", -1)[7:]) + } + + err := obj.validateToAndFrom() + if err != nil { + return err + } + return nil +} + +func (obj *patternFlowIpv4TotalLengthMetricTag) validateToAndFrom() error { + // emptyVars() + obj.validateObj(&obj.validation, true) + return obj.validationResult() +} + +func (obj *patternFlowIpv4TotalLengthMetricTag) Validate() error { + // emptyVars() + obj.validateObj(&obj.validation, false) + return obj.validationResult() +} + +func (obj *patternFlowIpv4TotalLengthMetricTag) String() string { + str, err := obj.ToYaml() + if err != nil { + return err.Error() + } + return str +} + +func (obj *patternFlowIpv4TotalLengthMetricTag) Clone() (PatternFlowIpv4TotalLengthMetricTag, error) { + vErr := obj.Validate() + if vErr != nil { + return nil, vErr + } + newObj := NewPatternFlowIpv4TotalLengthMetricTag() + data, err := proto.Marshal(obj.Msg()) + if err != nil { + return nil, err + } + pbErr := proto.Unmarshal(data, newObj.Msg()) + if pbErr != nil { + return nil, pbErr + } + return newObj, nil +} + +// PatternFlowIpv4TotalLengthMetricTag is metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. +type PatternFlowIpv4TotalLengthMetricTag interface { + Validation + // Msg marshals PatternFlowIpv4TotalLengthMetricTag to protobuf object *otg.PatternFlowIpv4TotalLengthMetricTag + // and doesn't set defaults + Msg() *otg.PatternFlowIpv4TotalLengthMetricTag + // SetMsg unmarshals PatternFlowIpv4TotalLengthMetricTag from protobuf object *otg.PatternFlowIpv4TotalLengthMetricTag + // and doesn't set defaults + SetMsg(*otg.PatternFlowIpv4TotalLengthMetricTag) PatternFlowIpv4TotalLengthMetricTag + // ToProto marshals PatternFlowIpv4TotalLengthMetricTag to protobuf object *otg.PatternFlowIpv4TotalLengthMetricTag + ToProto() (*otg.PatternFlowIpv4TotalLengthMetricTag, error) + // ToPbText marshals PatternFlowIpv4TotalLengthMetricTag to protobuf text + ToPbText() (string, error) + // ToYaml marshals PatternFlowIpv4TotalLengthMetricTag to YAML text + ToYaml() (string, error) + // ToJson marshals PatternFlowIpv4TotalLengthMetricTag to JSON text + ToJson() (string, error) + // FromProto unmarshals PatternFlowIpv4TotalLengthMetricTag from protobuf object *otg.PatternFlowIpv4TotalLengthMetricTag + FromProto(msg *otg.PatternFlowIpv4TotalLengthMetricTag) (PatternFlowIpv4TotalLengthMetricTag, error) + // FromPbText unmarshals PatternFlowIpv4TotalLengthMetricTag from protobuf text + FromPbText(value string) error + // FromYaml unmarshals PatternFlowIpv4TotalLengthMetricTag from YAML text + FromYaml(value string) error + // FromJson unmarshals PatternFlowIpv4TotalLengthMetricTag from JSON text + FromJson(value string) error + // Validate validates PatternFlowIpv4TotalLengthMetricTag + Validate() error + // A stringer function + String() string + // Clones the object + Clone() (PatternFlowIpv4TotalLengthMetricTag, error) + validateToAndFrom() error + validateObj(vObj *validation, set_default bool) + setDefault() + // Name returns string, set in PatternFlowIpv4TotalLengthMetricTag. + Name() string + // SetName assigns string provided by user to PatternFlowIpv4TotalLengthMetricTag + SetName(value string) PatternFlowIpv4TotalLengthMetricTag + // Offset returns uint32, set in PatternFlowIpv4TotalLengthMetricTag. + Offset() uint32 + // SetOffset assigns uint32 provided by user to PatternFlowIpv4TotalLengthMetricTag + SetOffset(value uint32) PatternFlowIpv4TotalLengthMetricTag + // HasOffset checks if Offset has been set in PatternFlowIpv4TotalLengthMetricTag + HasOffset() bool + // Length returns uint32, set in PatternFlowIpv4TotalLengthMetricTag. + Length() uint32 + // SetLength assigns uint32 provided by user to PatternFlowIpv4TotalLengthMetricTag + SetLength(value uint32) PatternFlowIpv4TotalLengthMetricTag + // HasLength checks if Length has been set in PatternFlowIpv4TotalLengthMetricTag + HasLength() bool +} + +// Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field +// Name returns a string +func (obj *patternFlowIpv4TotalLengthMetricTag) Name() string { + + return *obj.obj.Name + +} + +// Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field +// SetName sets the string value in the PatternFlowIpv4TotalLengthMetricTag object +func (obj *patternFlowIpv4TotalLengthMetricTag) SetName(value string) PatternFlowIpv4TotalLengthMetricTag { + + obj.obj.Name = &value + return obj +} + +// Offset in bits relative to start of corresponding header field +// Offset returns a uint32 +func (obj *patternFlowIpv4TotalLengthMetricTag) Offset() uint32 { + + return *obj.obj.Offset + +} + +// Offset in bits relative to start of corresponding header field +// Offset returns a uint32 +func (obj *patternFlowIpv4TotalLengthMetricTag) HasOffset() bool { + return obj.obj.Offset != nil +} + +// Offset in bits relative to start of corresponding header field +// SetOffset sets the uint32 value in the PatternFlowIpv4TotalLengthMetricTag object +func (obj *patternFlowIpv4TotalLengthMetricTag) SetOffset(value uint32) PatternFlowIpv4TotalLengthMetricTag { + + obj.obj.Offset = &value + return obj +} + +// Number of bits to track for metrics starting from configured offset of corresponding header field +// Length returns a uint32 +func (obj *patternFlowIpv4TotalLengthMetricTag) Length() uint32 { + + return *obj.obj.Length + +} + +// Number of bits to track for metrics starting from configured offset of corresponding header field +// Length returns a uint32 +func (obj *patternFlowIpv4TotalLengthMetricTag) HasLength() bool { + return obj.obj.Length != nil +} + +// Number of bits to track for metrics starting from configured offset of corresponding header field +// SetLength sets the uint32 value in the PatternFlowIpv4TotalLengthMetricTag object +func (obj *patternFlowIpv4TotalLengthMetricTag) SetLength(value uint32) PatternFlowIpv4TotalLengthMetricTag { + + obj.obj.Length = &value + return obj +} + +func (obj *patternFlowIpv4TotalLengthMetricTag) validateObj(vObj *validation, set_default bool) { + if set_default { + obj.setDefault() + } + + // Name is required + if obj.obj.Name == nil { + vObj.validationErrors = append(vObj.validationErrors, "Name is required field on interface PatternFlowIpv4TotalLengthMetricTag") + } + + if obj.obj.Offset != nil { + + if *obj.obj.Offset > 15 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("0 <= PatternFlowIpv4TotalLengthMetricTag.Offset <= 15 but Got %d", *obj.obj.Offset)) + } + + } + + if obj.obj.Length != nil { + + if *obj.obj.Length < 1 || *obj.obj.Length > 16 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("1 <= PatternFlowIpv4TotalLengthMetricTag.Length <= 16 but Got %d", *obj.obj.Length)) + } + + } + +} + +func (obj *patternFlowIpv4TotalLengthMetricTag) setDefault() { + if obj.obj.Offset == nil { + obj.SetOffset(0) + } + if obj.obj.Length == nil { + obj.SetLength(16) + } + +} + +// ***** PatternFlowIpv4IdentificationCounter ***** +type patternFlowIpv4IdentificationCounter struct { + validation + obj *otg.PatternFlowIpv4IdentificationCounter +} + +func NewPatternFlowIpv4IdentificationCounter() PatternFlowIpv4IdentificationCounter { + obj := patternFlowIpv4IdentificationCounter{obj: &otg.PatternFlowIpv4IdentificationCounter{}} + obj.setDefault() + return &obj +} + +func (obj *patternFlowIpv4IdentificationCounter) Msg() *otg.PatternFlowIpv4IdentificationCounter { + return obj.obj +} + +func (obj *patternFlowIpv4IdentificationCounter) SetMsg(msg *otg.PatternFlowIpv4IdentificationCounter) PatternFlowIpv4IdentificationCounter { + + proto.Merge(obj.obj, msg) + return obj +} + +func (obj *patternFlowIpv4IdentificationCounter) ToProto() (*otg.PatternFlowIpv4IdentificationCounter, error) { + err := obj.validateToAndFrom() + if err != nil { + return nil, err + } + return obj.Msg(), nil +} + +func (obj *patternFlowIpv4IdentificationCounter) FromProto(msg *otg.PatternFlowIpv4IdentificationCounter) (PatternFlowIpv4IdentificationCounter, error) { + newObj := obj.SetMsg(msg) + err := newObj.validateToAndFrom() + if err != nil { + return nil, err + } + return newObj, nil +} + +func (obj *patternFlowIpv4IdentificationCounter) ToPbText() (string, error) { + vErr := obj.validateToAndFrom() + if vErr != nil { + return "", vErr + } + protoMarshal, err := proto.Marshal(obj.Msg()) + if err != nil { + return "", err + } + return string(protoMarshal), nil +} + +func (obj *patternFlowIpv4IdentificationCounter) FromPbText(value string) error { + retObj := proto.Unmarshal([]byte(value), obj.Msg()) + if retObj != nil { + return retObj + } + + vErr := obj.validateToAndFrom() + if vErr != nil { + return vErr + } + return retObj +} + +func (obj *patternFlowIpv4IdentificationCounter) ToYaml() (string, error) { + vErr := obj.validateToAndFrom() + if vErr != nil { + return "", vErr + } + opts := protojson.MarshalOptions{ + UseProtoNames: true, + AllowPartial: true, + EmitUnpopulated: false, + } + data, err := opts.Marshal(obj.Msg()) + if err != nil { + return "", err + } + data, err = yaml.JSONToYAML(data) + if err != nil { + return "", err + } + return string(data), nil +} + +func (obj *patternFlowIpv4IdentificationCounter) FromYaml(value string) error { + if value == "" { + value = "{}" + } + data, err := yaml.YAMLToJSON([]byte(value)) + if err != nil { + return err + } + opts := protojson.UnmarshalOptions{ + AllowPartial: true, + DiscardUnknown: false, + } + uError := opts.Unmarshal([]byte(data), obj.Msg()) + if uError != nil { + return fmt.Errorf("unmarshal error %s", strings.Replace( + uError.Error(), "\u00a0", " ", -1)[7:]) + } + + vErr := obj.validateToAndFrom() + if vErr != nil { + return vErr + } + return nil +} + +func (obj *patternFlowIpv4IdentificationCounter) ToJson() (string, error) { + vErr := obj.validateToAndFrom() + if vErr != nil { + return "", vErr + } + opts := protojson.MarshalOptions{ + UseProtoNames: true, + AllowPartial: true, + EmitUnpopulated: false, + Indent: " ", + } + data, err := opts.Marshal(obj.Msg()) + if err != nil { + return "", err + } + return string(data), nil +} + +func (obj *patternFlowIpv4IdentificationCounter) FromJson(value string) error { + opts := protojson.UnmarshalOptions{ + AllowPartial: true, + DiscardUnknown: false, + } + if value == "" { + value = "{}" + } + uError := opts.Unmarshal([]byte(value), obj.Msg()) + if uError != nil { + return fmt.Errorf("unmarshal error %s", strings.Replace( + uError.Error(), "\u00a0", " ", -1)[7:]) + } + + err := obj.validateToAndFrom() + if err != nil { + return err + } + return nil +} + +func (obj *patternFlowIpv4IdentificationCounter) validateToAndFrom() error { + // emptyVars() + obj.validateObj(&obj.validation, true) + return obj.validationResult() +} + +func (obj *patternFlowIpv4IdentificationCounter) Validate() error { + // emptyVars() + obj.validateObj(&obj.validation, false) + return obj.validationResult() +} + +func (obj *patternFlowIpv4IdentificationCounter) String() string { + str, err := obj.ToYaml() + if err != nil { + return err.Error() + } + return str +} + +func (obj *patternFlowIpv4IdentificationCounter) Clone() (PatternFlowIpv4IdentificationCounter, error) { + vErr := obj.Validate() + if vErr != nil { + return nil, vErr + } + newObj := NewPatternFlowIpv4IdentificationCounter() + data, err := proto.Marshal(obj.Msg()) + if err != nil { + return nil, err + } + pbErr := proto.Unmarshal(data, newObj.Msg()) + if pbErr != nil { + return nil, pbErr + } + return newObj, nil +} + +// PatternFlowIpv4IdentificationCounter is integer counter pattern +type PatternFlowIpv4IdentificationCounter interface { + Validation + // Msg marshals PatternFlowIpv4IdentificationCounter to protobuf object *otg.PatternFlowIpv4IdentificationCounter + // and doesn't set defaults + Msg() *otg.PatternFlowIpv4IdentificationCounter + // SetMsg unmarshals PatternFlowIpv4IdentificationCounter from protobuf object *otg.PatternFlowIpv4IdentificationCounter + // and doesn't set defaults + SetMsg(*otg.PatternFlowIpv4IdentificationCounter) PatternFlowIpv4IdentificationCounter + // ToProto marshals PatternFlowIpv4IdentificationCounter to protobuf object *otg.PatternFlowIpv4IdentificationCounter + ToProto() (*otg.PatternFlowIpv4IdentificationCounter, error) + // ToPbText marshals PatternFlowIpv4IdentificationCounter to protobuf text + ToPbText() (string, error) + // ToYaml marshals PatternFlowIpv4IdentificationCounter to YAML text + ToYaml() (string, error) + // ToJson marshals PatternFlowIpv4IdentificationCounter to JSON text + ToJson() (string, error) + // FromProto unmarshals PatternFlowIpv4IdentificationCounter from protobuf object *otg.PatternFlowIpv4IdentificationCounter + FromProto(msg *otg.PatternFlowIpv4IdentificationCounter) (PatternFlowIpv4IdentificationCounter, error) + // FromPbText unmarshals PatternFlowIpv4IdentificationCounter from protobuf text + FromPbText(value string) error + // FromYaml unmarshals PatternFlowIpv4IdentificationCounter from YAML text + FromYaml(value string) error + // FromJson unmarshals PatternFlowIpv4IdentificationCounter from JSON text + FromJson(value string) error + // Validate validates PatternFlowIpv4IdentificationCounter + Validate() error + // A stringer function + String() string + // Clones the object + Clone() (PatternFlowIpv4IdentificationCounter, error) + validateToAndFrom() error + validateObj(vObj *validation, set_default bool) + setDefault() + // Start returns uint32, set in PatternFlowIpv4IdentificationCounter. + Start() uint32 + // SetStart assigns uint32 provided by user to PatternFlowIpv4IdentificationCounter + SetStart(value uint32) PatternFlowIpv4IdentificationCounter + // HasStart checks if Start has been set in PatternFlowIpv4IdentificationCounter + HasStart() bool + // Step returns uint32, set in PatternFlowIpv4IdentificationCounter. + Step() uint32 + // SetStep assigns uint32 provided by user to PatternFlowIpv4IdentificationCounter + SetStep(value uint32) PatternFlowIpv4IdentificationCounter + // HasStep checks if Step has been set in PatternFlowIpv4IdentificationCounter + HasStep() bool + // Count returns uint32, set in PatternFlowIpv4IdentificationCounter. + Count() uint32 + // SetCount assigns uint32 provided by user to PatternFlowIpv4IdentificationCounter + SetCount(value uint32) PatternFlowIpv4IdentificationCounter + // HasCount checks if Count has been set in PatternFlowIpv4IdentificationCounter + HasCount() bool +} + +// description is TBD +// Start returns a uint32 +func (obj *patternFlowIpv4IdentificationCounter) Start() uint32 { + + return *obj.obj.Start + +} + +// description is TBD +// Start returns a uint32 +func (obj *patternFlowIpv4IdentificationCounter) HasStart() bool { + return obj.obj.Start != nil +} + +// description is TBD +// SetStart sets the uint32 value in the PatternFlowIpv4IdentificationCounter object +func (obj *patternFlowIpv4IdentificationCounter) SetStart(value uint32) PatternFlowIpv4IdentificationCounter { + + obj.obj.Start = &value + return obj +} + +// description is TBD +// Step returns a uint32 +func (obj *patternFlowIpv4IdentificationCounter) Step() uint32 { + + return *obj.obj.Step + +} + +// description is TBD +// Step returns a uint32 +func (obj *patternFlowIpv4IdentificationCounter) HasStep() bool { + return obj.obj.Step != nil +} + +// description is TBD +// SetStep sets the uint32 value in the PatternFlowIpv4IdentificationCounter object +func (obj *patternFlowIpv4IdentificationCounter) SetStep(value uint32) PatternFlowIpv4IdentificationCounter { + + obj.obj.Step = &value + return obj +} + +// description is TBD +// Count returns a uint32 +func (obj *patternFlowIpv4IdentificationCounter) Count() uint32 { + + return *obj.obj.Count + +} + +// description is TBD +// Count returns a uint32 +func (obj *patternFlowIpv4IdentificationCounter) HasCount() bool { + return obj.obj.Count != nil +} + +// description is TBD +// SetCount sets the uint32 value in the PatternFlowIpv4IdentificationCounter object +func (obj *patternFlowIpv4IdentificationCounter) SetCount(value uint32) PatternFlowIpv4IdentificationCounter { + + obj.obj.Count = &value + return obj +} + +func (obj *patternFlowIpv4IdentificationCounter) validateObj(vObj *validation, set_default bool) { + if set_default { + obj.setDefault() + } + + if obj.obj.Start != nil { + + if *obj.obj.Start > 65535 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("0 <= PatternFlowIpv4IdentificationCounter.Start <= 65535 but Got %d", *obj.obj.Start)) + } + + } + + if obj.obj.Step != nil { + + if *obj.obj.Step > 65535 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("0 <= PatternFlowIpv4IdentificationCounter.Step <= 65535 but Got %d", *obj.obj.Step)) + } + + } + + if obj.obj.Count != nil { + + if *obj.obj.Count > 65535 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("0 <= PatternFlowIpv4IdentificationCounter.Count <= 65535 but Got %d", *obj.obj.Count)) + } + + } + +} + +func (obj *patternFlowIpv4IdentificationCounter) setDefault() { + if obj.obj.Start == nil { + obj.SetStart(0) + } + if obj.obj.Step == nil { + obj.SetStep(1) + } + if obj.obj.Count == nil { + obj.SetCount(1) + } + +} + +// ***** PatternFlowIpv4IdentificationMetricTag ***** +type patternFlowIpv4IdentificationMetricTag struct { + validation + obj *otg.PatternFlowIpv4IdentificationMetricTag +} + +func NewPatternFlowIpv4IdentificationMetricTag() PatternFlowIpv4IdentificationMetricTag { + obj := patternFlowIpv4IdentificationMetricTag{obj: &otg.PatternFlowIpv4IdentificationMetricTag{}} + obj.setDefault() + return &obj +} + +func (obj *patternFlowIpv4IdentificationMetricTag) Msg() *otg.PatternFlowIpv4IdentificationMetricTag { + return obj.obj +} + +func (obj *patternFlowIpv4IdentificationMetricTag) SetMsg(msg *otg.PatternFlowIpv4IdentificationMetricTag) PatternFlowIpv4IdentificationMetricTag { + + proto.Merge(obj.obj, msg) + return obj +} + +func (obj *patternFlowIpv4IdentificationMetricTag) ToProto() (*otg.PatternFlowIpv4IdentificationMetricTag, error) { + err := obj.validateToAndFrom() + if err != nil { + return nil, err + } + return obj.Msg(), nil +} + +func (obj *patternFlowIpv4IdentificationMetricTag) FromProto(msg *otg.PatternFlowIpv4IdentificationMetricTag) (PatternFlowIpv4IdentificationMetricTag, error) { + newObj := obj.SetMsg(msg) + err := newObj.validateToAndFrom() + if err != nil { + return nil, err + } + return newObj, nil +} + +func (obj *patternFlowIpv4IdentificationMetricTag) ToPbText() (string, error) { + vErr := obj.validateToAndFrom() + if vErr != nil { + return "", vErr + } + protoMarshal, err := proto.Marshal(obj.Msg()) + if err != nil { + return "", err + } + return string(protoMarshal), nil +} + +func (obj *patternFlowIpv4IdentificationMetricTag) FromPbText(value string) error { + retObj := proto.Unmarshal([]byte(value), obj.Msg()) + if retObj != nil { + return retObj + } + + vErr := obj.validateToAndFrom() + if vErr != nil { + return vErr + } + return retObj +} + +func (obj *patternFlowIpv4IdentificationMetricTag) ToYaml() (string, error) { + vErr := obj.validateToAndFrom() + if vErr != nil { + return "", vErr + } + opts := protojson.MarshalOptions{ + UseProtoNames: true, + AllowPartial: true, + EmitUnpopulated: false, + } + data, err := opts.Marshal(obj.Msg()) + if err != nil { + return "", err + } + data, err = yaml.JSONToYAML(data) + if err != nil { + return "", err + } + return string(data), nil +} + +func (obj *patternFlowIpv4IdentificationMetricTag) FromYaml(value string) error { + if value == "" { + value = "{}" + } + data, err := yaml.YAMLToJSON([]byte(value)) + if err != nil { + return err + } + opts := protojson.UnmarshalOptions{ + AllowPartial: true, + DiscardUnknown: false, + } + uError := opts.Unmarshal([]byte(data), obj.Msg()) + if uError != nil { + return fmt.Errorf("unmarshal error %s", strings.Replace( + uError.Error(), "\u00a0", " ", -1)[7:]) + } + + vErr := obj.validateToAndFrom() + if vErr != nil { + return vErr + } + return nil +} + +func (obj *patternFlowIpv4IdentificationMetricTag) ToJson() (string, error) { + vErr := obj.validateToAndFrom() + if vErr != nil { + return "", vErr + } + opts := protojson.MarshalOptions{ + UseProtoNames: true, + AllowPartial: true, + EmitUnpopulated: false, + Indent: " ", + } + data, err := opts.Marshal(obj.Msg()) + if err != nil { + return "", err + } + return string(data), nil +} + +func (obj *patternFlowIpv4IdentificationMetricTag) FromJson(value string) error { + opts := protojson.UnmarshalOptions{ + AllowPartial: true, + DiscardUnknown: false, + } + if value == "" { + value = "{}" + } + uError := opts.Unmarshal([]byte(value), obj.Msg()) + if uError != nil { + return fmt.Errorf("unmarshal error %s", strings.Replace( + uError.Error(), "\u00a0", " ", -1)[7:]) + } + + err := obj.validateToAndFrom() + if err != nil { + return err + } + return nil +} + +func (obj *patternFlowIpv4IdentificationMetricTag) validateToAndFrom() error { + // emptyVars() + obj.validateObj(&obj.validation, true) + return obj.validationResult() +} + +func (obj *patternFlowIpv4IdentificationMetricTag) Validate() error { + // emptyVars() + obj.validateObj(&obj.validation, false) + return obj.validationResult() +} + +func (obj *patternFlowIpv4IdentificationMetricTag) String() string { + str, err := obj.ToYaml() + if err != nil { + return err.Error() + } + return str +} + +func (obj *patternFlowIpv4IdentificationMetricTag) Clone() (PatternFlowIpv4IdentificationMetricTag, error) { + vErr := obj.Validate() + if vErr != nil { + return nil, vErr + } + newObj := NewPatternFlowIpv4IdentificationMetricTag() + data, err := proto.Marshal(obj.Msg()) + if err != nil { + return nil, err + } + pbErr := proto.Unmarshal(data, newObj.Msg()) + if pbErr != nil { + return nil, pbErr + } + return newObj, nil +} + +// PatternFlowIpv4IdentificationMetricTag is metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. +type PatternFlowIpv4IdentificationMetricTag interface { + Validation + // Msg marshals PatternFlowIpv4IdentificationMetricTag to protobuf object *otg.PatternFlowIpv4IdentificationMetricTag + // and doesn't set defaults + Msg() *otg.PatternFlowIpv4IdentificationMetricTag + // SetMsg unmarshals PatternFlowIpv4IdentificationMetricTag from protobuf object *otg.PatternFlowIpv4IdentificationMetricTag + // and doesn't set defaults + SetMsg(*otg.PatternFlowIpv4IdentificationMetricTag) PatternFlowIpv4IdentificationMetricTag + // ToProto marshals PatternFlowIpv4IdentificationMetricTag to protobuf object *otg.PatternFlowIpv4IdentificationMetricTag + ToProto() (*otg.PatternFlowIpv4IdentificationMetricTag, error) + // ToPbText marshals PatternFlowIpv4IdentificationMetricTag to protobuf text + ToPbText() (string, error) + // ToYaml marshals PatternFlowIpv4IdentificationMetricTag to YAML text + ToYaml() (string, error) + // ToJson marshals PatternFlowIpv4IdentificationMetricTag to JSON text + ToJson() (string, error) + // FromProto unmarshals PatternFlowIpv4IdentificationMetricTag from protobuf object *otg.PatternFlowIpv4IdentificationMetricTag + FromProto(msg *otg.PatternFlowIpv4IdentificationMetricTag) (PatternFlowIpv4IdentificationMetricTag, error) + // FromPbText unmarshals PatternFlowIpv4IdentificationMetricTag from protobuf text + FromPbText(value string) error + // FromYaml unmarshals PatternFlowIpv4IdentificationMetricTag from YAML text + FromYaml(value string) error + // FromJson unmarshals PatternFlowIpv4IdentificationMetricTag from JSON text + FromJson(value string) error + // Validate validates PatternFlowIpv4IdentificationMetricTag + Validate() error + // A stringer function + String() string + // Clones the object + Clone() (PatternFlowIpv4IdentificationMetricTag, error) + validateToAndFrom() error + validateObj(vObj *validation, set_default bool) + setDefault() + // Name returns string, set in PatternFlowIpv4IdentificationMetricTag. + Name() string + // SetName assigns string provided by user to PatternFlowIpv4IdentificationMetricTag + SetName(value string) PatternFlowIpv4IdentificationMetricTag + // Offset returns uint32, set in PatternFlowIpv4IdentificationMetricTag. + Offset() uint32 + // SetOffset assigns uint32 provided by user to PatternFlowIpv4IdentificationMetricTag + SetOffset(value uint32) PatternFlowIpv4IdentificationMetricTag + // HasOffset checks if Offset has been set in PatternFlowIpv4IdentificationMetricTag + HasOffset() bool + // Length returns uint32, set in PatternFlowIpv4IdentificationMetricTag. + Length() uint32 + // SetLength assigns uint32 provided by user to PatternFlowIpv4IdentificationMetricTag + SetLength(value uint32) PatternFlowIpv4IdentificationMetricTag + // HasLength checks if Length has been set in PatternFlowIpv4IdentificationMetricTag + HasLength() bool +} + +// Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field +// Name returns a string +func (obj *patternFlowIpv4IdentificationMetricTag) Name() string { + + return *obj.obj.Name + +} + +// Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field +// SetName sets the string value in the PatternFlowIpv4IdentificationMetricTag object +func (obj *patternFlowIpv4IdentificationMetricTag) SetName(value string) PatternFlowIpv4IdentificationMetricTag { + + obj.obj.Name = &value + return obj +} + +// Offset in bits relative to start of corresponding header field +// Offset returns a uint32 +func (obj *patternFlowIpv4IdentificationMetricTag) Offset() uint32 { + + return *obj.obj.Offset + +} + +// Offset in bits relative to start of corresponding header field +// Offset returns a uint32 +func (obj *patternFlowIpv4IdentificationMetricTag) HasOffset() bool { + return obj.obj.Offset != nil +} + +// Offset in bits relative to start of corresponding header field +// SetOffset sets the uint32 value in the PatternFlowIpv4IdentificationMetricTag object +func (obj *patternFlowIpv4IdentificationMetricTag) SetOffset(value uint32) PatternFlowIpv4IdentificationMetricTag { + + obj.obj.Offset = &value + return obj +} + +// Number of bits to track for metrics starting from configured offset of corresponding header field +// Length returns a uint32 +func (obj *patternFlowIpv4IdentificationMetricTag) Length() uint32 { + + return *obj.obj.Length + +} + +// Number of bits to track for metrics starting from configured offset of corresponding header field +// Length returns a uint32 +func (obj *patternFlowIpv4IdentificationMetricTag) HasLength() bool { + return obj.obj.Length != nil +} + +// Number of bits to track for metrics starting from configured offset of corresponding header field +// SetLength sets the uint32 value in the PatternFlowIpv4IdentificationMetricTag object +func (obj *patternFlowIpv4IdentificationMetricTag) SetLength(value uint32) PatternFlowIpv4IdentificationMetricTag { + + obj.obj.Length = &value + return obj +} + +func (obj *patternFlowIpv4IdentificationMetricTag) validateObj(vObj *validation, set_default bool) { + if set_default { + obj.setDefault() + } + + // Name is required + if obj.obj.Name == nil { + vObj.validationErrors = append(vObj.validationErrors, "Name is required field on interface PatternFlowIpv4IdentificationMetricTag") + } + + if obj.obj.Offset != nil { + + if *obj.obj.Offset > 15 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("0 <= PatternFlowIpv4IdentificationMetricTag.Offset <= 15 but Got %d", *obj.obj.Offset)) + } + + } + + if obj.obj.Length != nil { + + if *obj.obj.Length < 1 || *obj.obj.Length > 16 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("1 <= PatternFlowIpv4IdentificationMetricTag.Length <= 16 but Got %d", *obj.obj.Length)) + } + + } + +} + +func (obj *patternFlowIpv4IdentificationMetricTag) setDefault() { + if obj.obj.Offset == nil { + obj.SetOffset(0) + } + if obj.obj.Length == nil { + obj.SetLength(16) + } + +} + +// ***** PatternFlowIpv4ReservedCounter ***** +type patternFlowIpv4ReservedCounter struct { + validation + obj *otg.PatternFlowIpv4ReservedCounter +} + +func NewPatternFlowIpv4ReservedCounter() PatternFlowIpv4ReservedCounter { + obj := patternFlowIpv4ReservedCounter{obj: &otg.PatternFlowIpv4ReservedCounter{}} + obj.setDefault() + return &obj +} + +func (obj *patternFlowIpv4ReservedCounter) Msg() *otg.PatternFlowIpv4ReservedCounter { + return obj.obj +} + +func (obj *patternFlowIpv4ReservedCounter) SetMsg(msg *otg.PatternFlowIpv4ReservedCounter) PatternFlowIpv4ReservedCounter { + + proto.Merge(obj.obj, msg) + return obj +} + +func (obj *patternFlowIpv4ReservedCounter) ToProto() (*otg.PatternFlowIpv4ReservedCounter, error) { + err := obj.validateToAndFrom() + if err != nil { + return nil, err + } + return obj.Msg(), nil +} + +func (obj *patternFlowIpv4ReservedCounter) FromProto(msg *otg.PatternFlowIpv4ReservedCounter) (PatternFlowIpv4ReservedCounter, error) { + newObj := obj.SetMsg(msg) + err := newObj.validateToAndFrom() + if err != nil { + return nil, err + } + return newObj, nil +} + +func (obj *patternFlowIpv4ReservedCounter) ToPbText() (string, error) { + vErr := obj.validateToAndFrom() + if vErr != nil { + return "", vErr + } + protoMarshal, err := proto.Marshal(obj.Msg()) + if err != nil { + return "", err + } + return string(protoMarshal), nil +} + +func (obj *patternFlowIpv4ReservedCounter) FromPbText(value string) error { + retObj := proto.Unmarshal([]byte(value), obj.Msg()) + if retObj != nil { + return retObj + } + + vErr := obj.validateToAndFrom() + if vErr != nil { + return vErr + } + return retObj +} + +func (obj *patternFlowIpv4ReservedCounter) ToYaml() (string, error) { + vErr := obj.validateToAndFrom() + if vErr != nil { + return "", vErr + } + opts := protojson.MarshalOptions{ + UseProtoNames: true, + AllowPartial: true, + EmitUnpopulated: false, + } + data, err := opts.Marshal(obj.Msg()) + if err != nil { + return "", err + } + data, err = yaml.JSONToYAML(data) + if err != nil { + return "", err + } + return string(data), nil +} + +func (obj *patternFlowIpv4ReservedCounter) FromYaml(value string) error { + if value == "" { + value = "{}" + } + data, err := yaml.YAMLToJSON([]byte(value)) + if err != nil { + return err + } + opts := protojson.UnmarshalOptions{ + AllowPartial: true, + DiscardUnknown: false, + } + uError := opts.Unmarshal([]byte(data), obj.Msg()) + if uError != nil { + return fmt.Errorf("unmarshal error %s", strings.Replace( + uError.Error(), "\u00a0", " ", -1)[7:]) + } + + vErr := obj.validateToAndFrom() + if vErr != nil { + return vErr + } + return nil +} + +func (obj *patternFlowIpv4ReservedCounter) ToJson() (string, error) { + vErr := obj.validateToAndFrom() + if vErr != nil { + return "", vErr + } + opts := protojson.MarshalOptions{ + UseProtoNames: true, + AllowPartial: true, + EmitUnpopulated: false, + Indent: " ", + } + data, err := opts.Marshal(obj.Msg()) + if err != nil { + return "", err + } + return string(data), nil +} + +func (obj *patternFlowIpv4ReservedCounter) FromJson(value string) error { + opts := protojson.UnmarshalOptions{ + AllowPartial: true, + DiscardUnknown: false, + } + if value == "" { + value = "{}" + } + uError := opts.Unmarshal([]byte(value), obj.Msg()) + if uError != nil { + return fmt.Errorf("unmarshal error %s", strings.Replace( + uError.Error(), "\u00a0", " ", -1)[7:]) + } + + err := obj.validateToAndFrom() + if err != nil { + return err + } + return nil +} + +func (obj *patternFlowIpv4ReservedCounter) validateToAndFrom() error { + // emptyVars() + obj.validateObj(&obj.validation, true) + return obj.validationResult() +} + +func (obj *patternFlowIpv4ReservedCounter) Validate() error { + // emptyVars() + obj.validateObj(&obj.validation, false) + return obj.validationResult() +} + +func (obj *patternFlowIpv4ReservedCounter) String() string { + str, err := obj.ToYaml() + if err != nil { + return err.Error() + } + return str +} + +func (obj *patternFlowIpv4ReservedCounter) Clone() (PatternFlowIpv4ReservedCounter, error) { + vErr := obj.Validate() + if vErr != nil { + return nil, vErr + } + newObj := NewPatternFlowIpv4ReservedCounter() + data, err := proto.Marshal(obj.Msg()) + if err != nil { + return nil, err + } + pbErr := proto.Unmarshal(data, newObj.Msg()) + if pbErr != nil { + return nil, pbErr + } + return newObj, nil +} + +// PatternFlowIpv4ReservedCounter is integer counter pattern +type PatternFlowIpv4ReservedCounter interface { + Validation + // Msg marshals PatternFlowIpv4ReservedCounter to protobuf object *otg.PatternFlowIpv4ReservedCounter + // and doesn't set defaults + Msg() *otg.PatternFlowIpv4ReservedCounter + // SetMsg unmarshals PatternFlowIpv4ReservedCounter from protobuf object *otg.PatternFlowIpv4ReservedCounter + // and doesn't set defaults + SetMsg(*otg.PatternFlowIpv4ReservedCounter) PatternFlowIpv4ReservedCounter + // ToProto marshals PatternFlowIpv4ReservedCounter to protobuf object *otg.PatternFlowIpv4ReservedCounter + ToProto() (*otg.PatternFlowIpv4ReservedCounter, error) + // ToPbText marshals PatternFlowIpv4ReservedCounter to protobuf text + ToPbText() (string, error) + // ToYaml marshals PatternFlowIpv4ReservedCounter to YAML text + ToYaml() (string, error) + // ToJson marshals PatternFlowIpv4ReservedCounter to JSON text + ToJson() (string, error) + // FromProto unmarshals PatternFlowIpv4ReservedCounter from protobuf object *otg.PatternFlowIpv4ReservedCounter + FromProto(msg *otg.PatternFlowIpv4ReservedCounter) (PatternFlowIpv4ReservedCounter, error) + // FromPbText unmarshals PatternFlowIpv4ReservedCounter from protobuf text + FromPbText(value string) error + // FromYaml unmarshals PatternFlowIpv4ReservedCounter from YAML text + FromYaml(value string) error + // FromJson unmarshals PatternFlowIpv4ReservedCounter from JSON text + FromJson(value string) error + // Validate validates PatternFlowIpv4ReservedCounter + Validate() error + // A stringer function + String() string + // Clones the object + Clone() (PatternFlowIpv4ReservedCounter, error) + validateToAndFrom() error + validateObj(vObj *validation, set_default bool) + setDefault() + // Start returns uint32, set in PatternFlowIpv4ReservedCounter. + Start() uint32 + // SetStart assigns uint32 provided by user to PatternFlowIpv4ReservedCounter + SetStart(value uint32) PatternFlowIpv4ReservedCounter + // HasStart checks if Start has been set in PatternFlowIpv4ReservedCounter + HasStart() bool + // Step returns uint32, set in PatternFlowIpv4ReservedCounter. + Step() uint32 + // SetStep assigns uint32 provided by user to PatternFlowIpv4ReservedCounter + SetStep(value uint32) PatternFlowIpv4ReservedCounter + // HasStep checks if Step has been set in PatternFlowIpv4ReservedCounter + HasStep() bool + // Count returns uint32, set in PatternFlowIpv4ReservedCounter. + Count() uint32 + // SetCount assigns uint32 provided by user to PatternFlowIpv4ReservedCounter + SetCount(value uint32) PatternFlowIpv4ReservedCounter + // HasCount checks if Count has been set in PatternFlowIpv4ReservedCounter + HasCount() bool +} + +// description is TBD +// Start returns a uint32 +func (obj *patternFlowIpv4ReservedCounter) Start() uint32 { + + return *obj.obj.Start + +} + +// description is TBD +// Start returns a uint32 +func (obj *patternFlowIpv4ReservedCounter) HasStart() bool { + return obj.obj.Start != nil +} + +// description is TBD +// SetStart sets the uint32 value in the PatternFlowIpv4ReservedCounter object +func (obj *patternFlowIpv4ReservedCounter) SetStart(value uint32) PatternFlowIpv4ReservedCounter { + + obj.obj.Start = &value + return obj +} + +// description is TBD +// Step returns a uint32 +func (obj *patternFlowIpv4ReservedCounter) Step() uint32 { + + return *obj.obj.Step + +} + +// description is TBD +// Step returns a uint32 +func (obj *patternFlowIpv4ReservedCounter) HasStep() bool { + return obj.obj.Step != nil +} + +// description is TBD +// SetStep sets the uint32 value in the PatternFlowIpv4ReservedCounter object +func (obj *patternFlowIpv4ReservedCounter) SetStep(value uint32) PatternFlowIpv4ReservedCounter { + + obj.obj.Step = &value + return obj +} + +// description is TBD +// Count returns a uint32 +func (obj *patternFlowIpv4ReservedCounter) Count() uint32 { + + return *obj.obj.Count + +} + +// description is TBD +// Count returns a uint32 +func (obj *patternFlowIpv4ReservedCounter) HasCount() bool { + return obj.obj.Count != nil +} + +// description is TBD +// SetCount sets the uint32 value in the PatternFlowIpv4ReservedCounter object +func (obj *patternFlowIpv4ReservedCounter) SetCount(value uint32) PatternFlowIpv4ReservedCounter { + + obj.obj.Count = &value + return obj +} + +func (obj *patternFlowIpv4ReservedCounter) validateObj(vObj *validation, set_default bool) { + if set_default { + obj.setDefault() + } + + if obj.obj.Start != nil { + + if *obj.obj.Start > 1 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("0 <= PatternFlowIpv4ReservedCounter.Start <= 1 but Got %d", *obj.obj.Start)) + } + + } + + if obj.obj.Step != nil { + + if *obj.obj.Step > 1 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("0 <= PatternFlowIpv4ReservedCounter.Step <= 1 but Got %d", *obj.obj.Step)) + } + + } + + if obj.obj.Count != nil { + + if *obj.obj.Count > 1 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("0 <= PatternFlowIpv4ReservedCounter.Count <= 1 but Got %d", *obj.obj.Count)) + } + + } + +} + +func (obj *patternFlowIpv4ReservedCounter) setDefault() { + if obj.obj.Start == nil { + obj.SetStart(0) + } + if obj.obj.Step == nil { + obj.SetStep(1) + } + if obj.obj.Count == nil { + obj.SetCount(1) + } + +} + +// ***** PatternFlowIpv4ReservedMetricTag ***** +type patternFlowIpv4ReservedMetricTag struct { + validation + obj *otg.PatternFlowIpv4ReservedMetricTag +} + +func NewPatternFlowIpv4ReservedMetricTag() PatternFlowIpv4ReservedMetricTag { + obj := patternFlowIpv4ReservedMetricTag{obj: &otg.PatternFlowIpv4ReservedMetricTag{}} + obj.setDefault() + return &obj +} + +func (obj *patternFlowIpv4ReservedMetricTag) Msg() *otg.PatternFlowIpv4ReservedMetricTag { + return obj.obj +} + +func (obj *patternFlowIpv4ReservedMetricTag) SetMsg(msg *otg.PatternFlowIpv4ReservedMetricTag) PatternFlowIpv4ReservedMetricTag { + + proto.Merge(obj.obj, msg) + return obj +} + +func (obj *patternFlowIpv4ReservedMetricTag) ToProto() (*otg.PatternFlowIpv4ReservedMetricTag, error) { + err := obj.validateToAndFrom() + if err != nil { + return nil, err + } + return obj.Msg(), nil +} + +func (obj *patternFlowIpv4ReservedMetricTag) FromProto(msg *otg.PatternFlowIpv4ReservedMetricTag) (PatternFlowIpv4ReservedMetricTag, error) { + newObj := obj.SetMsg(msg) + err := newObj.validateToAndFrom() + if err != nil { + return nil, err + } + return newObj, nil +} + +func (obj *patternFlowIpv4ReservedMetricTag) ToPbText() (string, error) { + vErr := obj.validateToAndFrom() + if vErr != nil { + return "", vErr + } + protoMarshal, err := proto.Marshal(obj.Msg()) + if err != nil { + return "", err + } + return string(protoMarshal), nil +} + +func (obj *patternFlowIpv4ReservedMetricTag) FromPbText(value string) error { + retObj := proto.Unmarshal([]byte(value), obj.Msg()) + if retObj != nil { + return retObj + } + + vErr := obj.validateToAndFrom() + if vErr != nil { + return vErr + } + return retObj +} + +func (obj *patternFlowIpv4ReservedMetricTag) ToYaml() (string, error) { + vErr := obj.validateToAndFrom() + if vErr != nil { + return "", vErr + } + opts := protojson.MarshalOptions{ + UseProtoNames: true, + AllowPartial: true, + EmitUnpopulated: false, + } + data, err := opts.Marshal(obj.Msg()) + if err != nil { + return "", err + } + data, err = yaml.JSONToYAML(data) + if err != nil { + return "", err + } + return string(data), nil +} + +func (obj *patternFlowIpv4ReservedMetricTag) FromYaml(value string) error { + if value == "" { + value = "{}" + } + data, err := yaml.YAMLToJSON([]byte(value)) + if err != nil { + return err + } + opts := protojson.UnmarshalOptions{ + AllowPartial: true, + DiscardUnknown: false, + } + uError := opts.Unmarshal([]byte(data), obj.Msg()) + if uError != nil { + return fmt.Errorf("unmarshal error %s", strings.Replace( + uError.Error(), "\u00a0", " ", -1)[7:]) + } + + vErr := obj.validateToAndFrom() + if vErr != nil { + return vErr + } + return nil +} + +func (obj *patternFlowIpv4ReservedMetricTag) ToJson() (string, error) { + vErr := obj.validateToAndFrom() + if vErr != nil { + return "", vErr + } + opts := protojson.MarshalOptions{ + UseProtoNames: true, + AllowPartial: true, + EmitUnpopulated: false, + Indent: " ", + } + data, err := opts.Marshal(obj.Msg()) + if err != nil { + return "", err + } + return string(data), nil +} + +func (obj *patternFlowIpv4ReservedMetricTag) FromJson(value string) error { + opts := protojson.UnmarshalOptions{ + AllowPartial: true, + DiscardUnknown: false, + } + if value == "" { + value = "{}" + } + uError := opts.Unmarshal([]byte(value), obj.Msg()) + if uError != nil { + return fmt.Errorf("unmarshal error %s", strings.Replace( + uError.Error(), "\u00a0", " ", -1)[7:]) + } + + err := obj.validateToAndFrom() + if err != nil { + return err + } + return nil +} + +func (obj *patternFlowIpv4ReservedMetricTag) validateToAndFrom() error { + // emptyVars() + obj.validateObj(&obj.validation, true) + return obj.validationResult() +} + +func (obj *patternFlowIpv4ReservedMetricTag) Validate() error { + // emptyVars() + obj.validateObj(&obj.validation, false) + return obj.validationResult() +} + +func (obj *patternFlowIpv4ReservedMetricTag) String() string { + str, err := obj.ToYaml() + if err != nil { + return err.Error() + } + return str +} + +func (obj *patternFlowIpv4ReservedMetricTag) Clone() (PatternFlowIpv4ReservedMetricTag, error) { + vErr := obj.Validate() + if vErr != nil { + return nil, vErr + } + newObj := NewPatternFlowIpv4ReservedMetricTag() + data, err := proto.Marshal(obj.Msg()) + if err != nil { + return nil, err + } + pbErr := proto.Unmarshal(data, newObj.Msg()) + if pbErr != nil { + return nil, pbErr + } + return newObj, nil +} + +// PatternFlowIpv4ReservedMetricTag is metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. +type PatternFlowIpv4ReservedMetricTag interface { + Validation + // Msg marshals PatternFlowIpv4ReservedMetricTag to protobuf object *otg.PatternFlowIpv4ReservedMetricTag + // and doesn't set defaults + Msg() *otg.PatternFlowIpv4ReservedMetricTag + // SetMsg unmarshals PatternFlowIpv4ReservedMetricTag from protobuf object *otg.PatternFlowIpv4ReservedMetricTag + // and doesn't set defaults + SetMsg(*otg.PatternFlowIpv4ReservedMetricTag) PatternFlowIpv4ReservedMetricTag + // ToProto marshals PatternFlowIpv4ReservedMetricTag to protobuf object *otg.PatternFlowIpv4ReservedMetricTag + ToProto() (*otg.PatternFlowIpv4ReservedMetricTag, error) + // ToPbText marshals PatternFlowIpv4ReservedMetricTag to protobuf text + ToPbText() (string, error) + // ToYaml marshals PatternFlowIpv4ReservedMetricTag to YAML text + ToYaml() (string, error) + // ToJson marshals PatternFlowIpv4ReservedMetricTag to JSON text + ToJson() (string, error) + // FromProto unmarshals PatternFlowIpv4ReservedMetricTag from protobuf object *otg.PatternFlowIpv4ReservedMetricTag + FromProto(msg *otg.PatternFlowIpv4ReservedMetricTag) (PatternFlowIpv4ReservedMetricTag, error) + // FromPbText unmarshals PatternFlowIpv4ReservedMetricTag from protobuf text + FromPbText(value string) error + // FromYaml unmarshals PatternFlowIpv4ReservedMetricTag from YAML text + FromYaml(value string) error + // FromJson unmarshals PatternFlowIpv4ReservedMetricTag from JSON text + FromJson(value string) error + // Validate validates PatternFlowIpv4ReservedMetricTag + Validate() error + // A stringer function + String() string + // Clones the object + Clone() (PatternFlowIpv4ReservedMetricTag, error) + validateToAndFrom() error + validateObj(vObj *validation, set_default bool) + setDefault() + // Name returns string, set in PatternFlowIpv4ReservedMetricTag. + Name() string + // SetName assigns string provided by user to PatternFlowIpv4ReservedMetricTag + SetName(value string) PatternFlowIpv4ReservedMetricTag + // Offset returns uint32, set in PatternFlowIpv4ReservedMetricTag. + Offset() uint32 + // SetOffset assigns uint32 provided by user to PatternFlowIpv4ReservedMetricTag + SetOffset(value uint32) PatternFlowIpv4ReservedMetricTag + // HasOffset checks if Offset has been set in PatternFlowIpv4ReservedMetricTag + HasOffset() bool + // Length returns uint32, set in PatternFlowIpv4ReservedMetricTag. + Length() uint32 + // SetLength assigns uint32 provided by user to PatternFlowIpv4ReservedMetricTag + SetLength(value uint32) PatternFlowIpv4ReservedMetricTag + // HasLength checks if Length has been set in PatternFlowIpv4ReservedMetricTag + HasLength() bool +} + +// Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field +// Name returns a string +func (obj *patternFlowIpv4ReservedMetricTag) Name() string { + + return *obj.obj.Name + +} + +// Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field +// SetName sets the string value in the PatternFlowIpv4ReservedMetricTag object +func (obj *patternFlowIpv4ReservedMetricTag) SetName(value string) PatternFlowIpv4ReservedMetricTag { + + obj.obj.Name = &value + return obj +} + +// Offset in bits relative to start of corresponding header field +// Offset returns a uint32 +func (obj *patternFlowIpv4ReservedMetricTag) Offset() uint32 { + + return *obj.obj.Offset + +} + +// Offset in bits relative to start of corresponding header field +// Offset returns a uint32 +func (obj *patternFlowIpv4ReservedMetricTag) HasOffset() bool { + return obj.obj.Offset != nil +} + +// Offset in bits relative to start of corresponding header field +// SetOffset sets the uint32 value in the PatternFlowIpv4ReservedMetricTag object +func (obj *patternFlowIpv4ReservedMetricTag) SetOffset(value uint32) PatternFlowIpv4ReservedMetricTag { + + obj.obj.Offset = &value + return obj +} + +// Number of bits to track for metrics starting from configured offset of corresponding header field +// Length returns a uint32 +func (obj *patternFlowIpv4ReservedMetricTag) Length() uint32 { + + return *obj.obj.Length + +} + +// Number of bits to track for metrics starting from configured offset of corresponding header field +// Length returns a uint32 +func (obj *patternFlowIpv4ReservedMetricTag) HasLength() bool { + return obj.obj.Length != nil +} + +// Number of bits to track for metrics starting from configured offset of corresponding header field +// SetLength sets the uint32 value in the PatternFlowIpv4ReservedMetricTag object +func (obj *patternFlowIpv4ReservedMetricTag) SetLength(value uint32) PatternFlowIpv4ReservedMetricTag { + + obj.obj.Length = &value + return obj +} + +func (obj *patternFlowIpv4ReservedMetricTag) validateObj(vObj *validation, set_default bool) { + if set_default { + obj.setDefault() + } + + // Name is required + if obj.obj.Name == nil { + vObj.validationErrors = append(vObj.validationErrors, "Name is required field on interface PatternFlowIpv4ReservedMetricTag") + } + + if obj.obj.Offset != nil { + + if *obj.obj.Offset > 0 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("0 <= PatternFlowIpv4ReservedMetricTag.Offset <= 0 but Got %d", *obj.obj.Offset)) + } + + } + + if obj.obj.Length != nil { + + if *obj.obj.Length < 1 || *obj.obj.Length > 1 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("1 <= PatternFlowIpv4ReservedMetricTag.Length <= 1 but Got %d", *obj.obj.Length)) + } + + } + +} + +func (obj *patternFlowIpv4ReservedMetricTag) setDefault() { + if obj.obj.Offset == nil { + obj.SetOffset(0) + } + if obj.obj.Length == nil { + obj.SetLength(1) + } + +} + +// ***** PatternFlowIpv4DontFragmentCounter ***** +type patternFlowIpv4DontFragmentCounter struct { + validation + obj *otg.PatternFlowIpv4DontFragmentCounter +} + +func NewPatternFlowIpv4DontFragmentCounter() PatternFlowIpv4DontFragmentCounter { + obj := patternFlowIpv4DontFragmentCounter{obj: &otg.PatternFlowIpv4DontFragmentCounter{}} + obj.setDefault() + return &obj +} + +func (obj *patternFlowIpv4DontFragmentCounter) Msg() *otg.PatternFlowIpv4DontFragmentCounter { + return obj.obj +} + +func (obj *patternFlowIpv4DontFragmentCounter) SetMsg(msg *otg.PatternFlowIpv4DontFragmentCounter) PatternFlowIpv4DontFragmentCounter { + + proto.Merge(obj.obj, msg) + return obj +} + +func (obj *patternFlowIpv4DontFragmentCounter) ToProto() (*otg.PatternFlowIpv4DontFragmentCounter, error) { + err := obj.validateToAndFrom() + if err != nil { + return nil, err + } + return obj.Msg(), nil +} + +func (obj *patternFlowIpv4DontFragmentCounter) FromProto(msg *otg.PatternFlowIpv4DontFragmentCounter) (PatternFlowIpv4DontFragmentCounter, error) { + newObj := obj.SetMsg(msg) + err := newObj.validateToAndFrom() + if err != nil { + return nil, err + } + return newObj, nil +} + +func (obj *patternFlowIpv4DontFragmentCounter) ToPbText() (string, error) { + vErr := obj.validateToAndFrom() + if vErr != nil { + return "", vErr + } + protoMarshal, err := proto.Marshal(obj.Msg()) + if err != nil { + return "", err + } + return string(protoMarshal), nil +} + +func (obj *patternFlowIpv4DontFragmentCounter) FromPbText(value string) error { + retObj := proto.Unmarshal([]byte(value), obj.Msg()) + if retObj != nil { + return retObj + } + + vErr := obj.validateToAndFrom() + if vErr != nil { + return vErr + } + return retObj +} + +func (obj *patternFlowIpv4DontFragmentCounter) ToYaml() (string, error) { + vErr := obj.validateToAndFrom() + if vErr != nil { + return "", vErr + } + opts := protojson.MarshalOptions{ + UseProtoNames: true, + AllowPartial: true, + EmitUnpopulated: false, + } + data, err := opts.Marshal(obj.Msg()) + if err != nil { + return "", err + } + data, err = yaml.JSONToYAML(data) + if err != nil { + return "", err + } + return string(data), nil +} + +func (obj *patternFlowIpv4DontFragmentCounter) FromYaml(value string) error { + if value == "" { + value = "{}" + } + data, err := yaml.YAMLToJSON([]byte(value)) + if err != nil { + return err + } + opts := protojson.UnmarshalOptions{ + AllowPartial: true, + DiscardUnknown: false, + } + uError := opts.Unmarshal([]byte(data), obj.Msg()) + if uError != nil { + return fmt.Errorf("unmarshal error %s", strings.Replace( + uError.Error(), "\u00a0", " ", -1)[7:]) + } + + vErr := obj.validateToAndFrom() + if vErr != nil { + return vErr + } + return nil +} + +func (obj *patternFlowIpv4DontFragmentCounter) ToJson() (string, error) { + vErr := obj.validateToAndFrom() + if vErr != nil { + return "", vErr + } + opts := protojson.MarshalOptions{ + UseProtoNames: true, + AllowPartial: true, + EmitUnpopulated: false, + Indent: " ", + } + data, err := opts.Marshal(obj.Msg()) + if err != nil { + return "", err + } + return string(data), nil +} + +func (obj *patternFlowIpv4DontFragmentCounter) FromJson(value string) error { + opts := protojson.UnmarshalOptions{ + AllowPartial: true, + DiscardUnknown: false, + } + if value == "" { + value = "{}" + } + uError := opts.Unmarshal([]byte(value), obj.Msg()) + if uError != nil { + return fmt.Errorf("unmarshal error %s", strings.Replace( + uError.Error(), "\u00a0", " ", -1)[7:]) + } + + err := obj.validateToAndFrom() + if err != nil { + return err + } + return nil +} + +func (obj *patternFlowIpv4DontFragmentCounter) validateToAndFrom() error { + // emptyVars() + obj.validateObj(&obj.validation, true) + return obj.validationResult() +} + +func (obj *patternFlowIpv4DontFragmentCounter) Validate() error { + // emptyVars() + obj.validateObj(&obj.validation, false) + return obj.validationResult() +} + +func (obj *patternFlowIpv4DontFragmentCounter) String() string { + str, err := obj.ToYaml() + if err != nil { + return err.Error() + } + return str +} + +func (obj *patternFlowIpv4DontFragmentCounter) Clone() (PatternFlowIpv4DontFragmentCounter, error) { + vErr := obj.Validate() + if vErr != nil { + return nil, vErr + } + newObj := NewPatternFlowIpv4DontFragmentCounter() + data, err := proto.Marshal(obj.Msg()) + if err != nil { + return nil, err + } + pbErr := proto.Unmarshal(data, newObj.Msg()) + if pbErr != nil { + return nil, pbErr + } + return newObj, nil +} + +// PatternFlowIpv4DontFragmentCounter is integer counter pattern +type PatternFlowIpv4DontFragmentCounter interface { + Validation + // Msg marshals PatternFlowIpv4DontFragmentCounter to protobuf object *otg.PatternFlowIpv4DontFragmentCounter + // and doesn't set defaults + Msg() *otg.PatternFlowIpv4DontFragmentCounter + // SetMsg unmarshals PatternFlowIpv4DontFragmentCounter from protobuf object *otg.PatternFlowIpv4DontFragmentCounter + // and doesn't set defaults + SetMsg(*otg.PatternFlowIpv4DontFragmentCounter) PatternFlowIpv4DontFragmentCounter + // ToProto marshals PatternFlowIpv4DontFragmentCounter to protobuf object *otg.PatternFlowIpv4DontFragmentCounter + ToProto() (*otg.PatternFlowIpv4DontFragmentCounter, error) + // ToPbText marshals PatternFlowIpv4DontFragmentCounter to protobuf text + ToPbText() (string, error) + // ToYaml marshals PatternFlowIpv4DontFragmentCounter to YAML text + ToYaml() (string, error) + // ToJson marshals PatternFlowIpv4DontFragmentCounter to JSON text + ToJson() (string, error) + // FromProto unmarshals PatternFlowIpv4DontFragmentCounter from protobuf object *otg.PatternFlowIpv4DontFragmentCounter + FromProto(msg *otg.PatternFlowIpv4DontFragmentCounter) (PatternFlowIpv4DontFragmentCounter, error) + // FromPbText unmarshals PatternFlowIpv4DontFragmentCounter from protobuf text + FromPbText(value string) error + // FromYaml unmarshals PatternFlowIpv4DontFragmentCounter from YAML text + FromYaml(value string) error + // FromJson unmarshals PatternFlowIpv4DontFragmentCounter from JSON text + FromJson(value string) error + // Validate validates PatternFlowIpv4DontFragmentCounter + Validate() error + // A stringer function + String() string + // Clones the object + Clone() (PatternFlowIpv4DontFragmentCounter, error) + validateToAndFrom() error + validateObj(vObj *validation, set_default bool) + setDefault() + // Start returns uint32, set in PatternFlowIpv4DontFragmentCounter. + Start() uint32 + // SetStart assigns uint32 provided by user to PatternFlowIpv4DontFragmentCounter + SetStart(value uint32) PatternFlowIpv4DontFragmentCounter + // HasStart checks if Start has been set in PatternFlowIpv4DontFragmentCounter + HasStart() bool + // Step returns uint32, set in PatternFlowIpv4DontFragmentCounter. + Step() uint32 + // SetStep assigns uint32 provided by user to PatternFlowIpv4DontFragmentCounter + SetStep(value uint32) PatternFlowIpv4DontFragmentCounter + // HasStep checks if Step has been set in PatternFlowIpv4DontFragmentCounter + HasStep() bool + // Count returns uint32, set in PatternFlowIpv4DontFragmentCounter. + Count() uint32 + // SetCount assigns uint32 provided by user to PatternFlowIpv4DontFragmentCounter + SetCount(value uint32) PatternFlowIpv4DontFragmentCounter + // HasCount checks if Count has been set in PatternFlowIpv4DontFragmentCounter + HasCount() bool +} + +// description is TBD +// Start returns a uint32 +func (obj *patternFlowIpv4DontFragmentCounter) Start() uint32 { + + return *obj.obj.Start + +} + +// description is TBD +// Start returns a uint32 +func (obj *patternFlowIpv4DontFragmentCounter) HasStart() bool { + return obj.obj.Start != nil +} + +// description is TBD +// SetStart sets the uint32 value in the PatternFlowIpv4DontFragmentCounter object +func (obj *patternFlowIpv4DontFragmentCounter) SetStart(value uint32) PatternFlowIpv4DontFragmentCounter { + + obj.obj.Start = &value + return obj +} + +// description is TBD +// Step returns a uint32 +func (obj *patternFlowIpv4DontFragmentCounter) Step() uint32 { + + return *obj.obj.Step + +} + +// description is TBD +// Step returns a uint32 +func (obj *patternFlowIpv4DontFragmentCounter) HasStep() bool { + return obj.obj.Step != nil +} + +// description is TBD +// SetStep sets the uint32 value in the PatternFlowIpv4DontFragmentCounter object +func (obj *patternFlowIpv4DontFragmentCounter) SetStep(value uint32) PatternFlowIpv4DontFragmentCounter { + + obj.obj.Step = &value + return obj +} + +// description is TBD +// Count returns a uint32 +func (obj *patternFlowIpv4DontFragmentCounter) Count() uint32 { + + return *obj.obj.Count + +} + +// description is TBD +// Count returns a uint32 +func (obj *patternFlowIpv4DontFragmentCounter) HasCount() bool { + return obj.obj.Count != nil +} + +// description is TBD +// SetCount sets the uint32 value in the PatternFlowIpv4DontFragmentCounter object +func (obj *patternFlowIpv4DontFragmentCounter) SetCount(value uint32) PatternFlowIpv4DontFragmentCounter { + + obj.obj.Count = &value + return obj +} + +func (obj *patternFlowIpv4DontFragmentCounter) validateObj(vObj *validation, set_default bool) { + if set_default { + obj.setDefault() + } + + if obj.obj.Start != nil { + + if *obj.obj.Start > 1 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("0 <= PatternFlowIpv4DontFragmentCounter.Start <= 1 but Got %d", *obj.obj.Start)) + } + + } + + if obj.obj.Step != nil { + + if *obj.obj.Step > 1 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("0 <= PatternFlowIpv4DontFragmentCounter.Step <= 1 but Got %d", *obj.obj.Step)) + } + + } + + if obj.obj.Count != nil { + + if *obj.obj.Count > 1 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("0 <= PatternFlowIpv4DontFragmentCounter.Count <= 1 but Got %d", *obj.obj.Count)) + } + + } + +} + +func (obj *patternFlowIpv4DontFragmentCounter) setDefault() { + if obj.obj.Start == nil { + obj.SetStart(0) + } + if obj.obj.Step == nil { + obj.SetStep(1) + } + if obj.obj.Count == nil { + obj.SetCount(1) + } + +} + +// ***** PatternFlowIpv4DontFragmentMetricTag ***** +type patternFlowIpv4DontFragmentMetricTag struct { + validation + obj *otg.PatternFlowIpv4DontFragmentMetricTag +} + +func NewPatternFlowIpv4DontFragmentMetricTag() PatternFlowIpv4DontFragmentMetricTag { + obj := patternFlowIpv4DontFragmentMetricTag{obj: &otg.PatternFlowIpv4DontFragmentMetricTag{}} + obj.setDefault() + return &obj +} + +func (obj *patternFlowIpv4DontFragmentMetricTag) Msg() *otg.PatternFlowIpv4DontFragmentMetricTag { + return obj.obj +} + +func (obj *patternFlowIpv4DontFragmentMetricTag) SetMsg(msg *otg.PatternFlowIpv4DontFragmentMetricTag) PatternFlowIpv4DontFragmentMetricTag { + + proto.Merge(obj.obj, msg) + return obj +} + +func (obj *patternFlowIpv4DontFragmentMetricTag) ToProto() (*otg.PatternFlowIpv4DontFragmentMetricTag, error) { + err := obj.validateToAndFrom() + if err != nil { + return nil, err + } + return obj.Msg(), nil +} + +func (obj *patternFlowIpv4DontFragmentMetricTag) FromProto(msg *otg.PatternFlowIpv4DontFragmentMetricTag) (PatternFlowIpv4DontFragmentMetricTag, error) { + newObj := obj.SetMsg(msg) + err := newObj.validateToAndFrom() + if err != nil { + return nil, err + } + return newObj, nil +} + +func (obj *patternFlowIpv4DontFragmentMetricTag) ToPbText() (string, error) { + vErr := obj.validateToAndFrom() + if vErr != nil { + return "", vErr + } + protoMarshal, err := proto.Marshal(obj.Msg()) + if err != nil { + return "", err + } + return string(protoMarshal), nil +} + +func (obj *patternFlowIpv4DontFragmentMetricTag) FromPbText(value string) error { + retObj := proto.Unmarshal([]byte(value), obj.Msg()) + if retObj != nil { + return retObj + } + + vErr := obj.validateToAndFrom() + if vErr != nil { + return vErr + } + return retObj +} + +func (obj *patternFlowIpv4DontFragmentMetricTag) ToYaml() (string, error) { + vErr := obj.validateToAndFrom() + if vErr != nil { + return "", vErr + } + opts := protojson.MarshalOptions{ + UseProtoNames: true, + AllowPartial: true, + EmitUnpopulated: false, + } + data, err := opts.Marshal(obj.Msg()) + if err != nil { + return "", err + } + data, err = yaml.JSONToYAML(data) + if err != nil { + return "", err + } + return string(data), nil +} + +func (obj *patternFlowIpv4DontFragmentMetricTag) FromYaml(value string) error { + if value == "" { + value = "{}" + } + data, err := yaml.YAMLToJSON([]byte(value)) + if err != nil { + return err + } + opts := protojson.UnmarshalOptions{ + AllowPartial: true, + DiscardUnknown: false, + } + uError := opts.Unmarshal([]byte(data), obj.Msg()) + if uError != nil { + return fmt.Errorf("unmarshal error %s", strings.Replace( + uError.Error(), "\u00a0", " ", -1)[7:]) + } + + vErr := obj.validateToAndFrom() + if vErr != nil { + return vErr + } + return nil +} + +func (obj *patternFlowIpv4DontFragmentMetricTag) ToJson() (string, error) { + vErr := obj.validateToAndFrom() + if vErr != nil { + return "", vErr + } + opts := protojson.MarshalOptions{ + UseProtoNames: true, + AllowPartial: true, + EmitUnpopulated: false, + Indent: " ", + } + data, err := opts.Marshal(obj.Msg()) + if err != nil { + return "", err + } + return string(data), nil +} + +func (obj *patternFlowIpv4DontFragmentMetricTag) FromJson(value string) error { + opts := protojson.UnmarshalOptions{ + AllowPartial: true, + DiscardUnknown: false, + } + if value == "" { + value = "{}" + } + uError := opts.Unmarshal([]byte(value), obj.Msg()) + if uError != nil { + return fmt.Errorf("unmarshal error %s", strings.Replace( + uError.Error(), "\u00a0", " ", -1)[7:]) + } + + err := obj.validateToAndFrom() + if err != nil { + return err + } + return nil +} + +func (obj *patternFlowIpv4DontFragmentMetricTag) validateToAndFrom() error { + // emptyVars() + obj.validateObj(&obj.validation, true) + return obj.validationResult() +} + +func (obj *patternFlowIpv4DontFragmentMetricTag) Validate() error { + // emptyVars() + obj.validateObj(&obj.validation, false) + return obj.validationResult() +} + +func (obj *patternFlowIpv4DontFragmentMetricTag) String() string { + str, err := obj.ToYaml() + if err != nil { + return err.Error() + } + return str +} + +func (obj *patternFlowIpv4DontFragmentMetricTag) Clone() (PatternFlowIpv4DontFragmentMetricTag, error) { + vErr := obj.Validate() + if vErr != nil { + return nil, vErr + } + newObj := NewPatternFlowIpv4DontFragmentMetricTag() + data, err := proto.Marshal(obj.Msg()) + if err != nil { + return nil, err + } + pbErr := proto.Unmarshal(data, newObj.Msg()) + if pbErr != nil { + return nil, pbErr + } + return newObj, nil +} + +// PatternFlowIpv4DontFragmentMetricTag is metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. +type PatternFlowIpv4DontFragmentMetricTag interface { + Validation + // Msg marshals PatternFlowIpv4DontFragmentMetricTag to protobuf object *otg.PatternFlowIpv4DontFragmentMetricTag + // and doesn't set defaults + Msg() *otg.PatternFlowIpv4DontFragmentMetricTag + // SetMsg unmarshals PatternFlowIpv4DontFragmentMetricTag from protobuf object *otg.PatternFlowIpv4DontFragmentMetricTag + // and doesn't set defaults + SetMsg(*otg.PatternFlowIpv4DontFragmentMetricTag) PatternFlowIpv4DontFragmentMetricTag + // ToProto marshals PatternFlowIpv4DontFragmentMetricTag to protobuf object *otg.PatternFlowIpv4DontFragmentMetricTag + ToProto() (*otg.PatternFlowIpv4DontFragmentMetricTag, error) + // ToPbText marshals PatternFlowIpv4DontFragmentMetricTag to protobuf text + ToPbText() (string, error) + // ToYaml marshals PatternFlowIpv4DontFragmentMetricTag to YAML text + ToYaml() (string, error) + // ToJson marshals PatternFlowIpv4DontFragmentMetricTag to JSON text + ToJson() (string, error) + // FromProto unmarshals PatternFlowIpv4DontFragmentMetricTag from protobuf object *otg.PatternFlowIpv4DontFragmentMetricTag + FromProto(msg *otg.PatternFlowIpv4DontFragmentMetricTag) (PatternFlowIpv4DontFragmentMetricTag, error) + // FromPbText unmarshals PatternFlowIpv4DontFragmentMetricTag from protobuf text + FromPbText(value string) error + // FromYaml unmarshals PatternFlowIpv4DontFragmentMetricTag from YAML text + FromYaml(value string) error + // FromJson unmarshals PatternFlowIpv4DontFragmentMetricTag from JSON text + FromJson(value string) error + // Validate validates PatternFlowIpv4DontFragmentMetricTag + Validate() error + // A stringer function + String() string + // Clones the object + Clone() (PatternFlowIpv4DontFragmentMetricTag, error) + validateToAndFrom() error + validateObj(vObj *validation, set_default bool) + setDefault() + // Name returns string, set in PatternFlowIpv4DontFragmentMetricTag. + Name() string + // SetName assigns string provided by user to PatternFlowIpv4DontFragmentMetricTag + SetName(value string) PatternFlowIpv4DontFragmentMetricTag + // Offset returns uint32, set in PatternFlowIpv4DontFragmentMetricTag. + Offset() uint32 + // SetOffset assigns uint32 provided by user to PatternFlowIpv4DontFragmentMetricTag + SetOffset(value uint32) PatternFlowIpv4DontFragmentMetricTag + // HasOffset checks if Offset has been set in PatternFlowIpv4DontFragmentMetricTag + HasOffset() bool + // Length returns uint32, set in PatternFlowIpv4DontFragmentMetricTag. + Length() uint32 + // SetLength assigns uint32 provided by user to PatternFlowIpv4DontFragmentMetricTag + SetLength(value uint32) PatternFlowIpv4DontFragmentMetricTag + // HasLength checks if Length has been set in PatternFlowIpv4DontFragmentMetricTag + HasLength() bool +} + +// Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field +// Name returns a string +func (obj *patternFlowIpv4DontFragmentMetricTag) Name() string { + + return *obj.obj.Name + +} + +// Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field +// SetName sets the string value in the PatternFlowIpv4DontFragmentMetricTag object +func (obj *patternFlowIpv4DontFragmentMetricTag) SetName(value string) PatternFlowIpv4DontFragmentMetricTag { + + obj.obj.Name = &value + return obj +} + +// Offset in bits relative to start of corresponding header field +// Offset returns a uint32 +func (obj *patternFlowIpv4DontFragmentMetricTag) Offset() uint32 { + + return *obj.obj.Offset + +} + +// Offset in bits relative to start of corresponding header field +// Offset returns a uint32 +func (obj *patternFlowIpv4DontFragmentMetricTag) HasOffset() bool { + return obj.obj.Offset != nil +} + +// Offset in bits relative to start of corresponding header field +// SetOffset sets the uint32 value in the PatternFlowIpv4DontFragmentMetricTag object +func (obj *patternFlowIpv4DontFragmentMetricTag) SetOffset(value uint32) PatternFlowIpv4DontFragmentMetricTag { + + obj.obj.Offset = &value + return obj +} + +// Number of bits to track for metrics starting from configured offset of corresponding header field +// Length returns a uint32 +func (obj *patternFlowIpv4DontFragmentMetricTag) Length() uint32 { + + return *obj.obj.Length + +} + +// Number of bits to track for metrics starting from configured offset of corresponding header field +// Length returns a uint32 +func (obj *patternFlowIpv4DontFragmentMetricTag) HasLength() bool { + return obj.obj.Length != nil +} + +// Number of bits to track for metrics starting from configured offset of corresponding header field +// SetLength sets the uint32 value in the PatternFlowIpv4DontFragmentMetricTag object +func (obj *patternFlowIpv4DontFragmentMetricTag) SetLength(value uint32) PatternFlowIpv4DontFragmentMetricTag { + + obj.obj.Length = &value + return obj +} + +func (obj *patternFlowIpv4DontFragmentMetricTag) validateObj(vObj *validation, set_default bool) { + if set_default { + obj.setDefault() + } + + // Name is required + if obj.obj.Name == nil { + vObj.validationErrors = append(vObj.validationErrors, "Name is required field on interface PatternFlowIpv4DontFragmentMetricTag") + } + + if obj.obj.Offset != nil { + + if *obj.obj.Offset > 0 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("0 <= PatternFlowIpv4DontFragmentMetricTag.Offset <= 0 but Got %d", *obj.obj.Offset)) + } + + } + + if obj.obj.Length != nil { + + if *obj.obj.Length < 1 || *obj.obj.Length > 1 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("1 <= PatternFlowIpv4DontFragmentMetricTag.Length <= 1 but Got %d", *obj.obj.Length)) + } + + } + +} + +func (obj *patternFlowIpv4DontFragmentMetricTag) setDefault() { + if obj.obj.Offset == nil { + obj.SetOffset(0) + } + if obj.obj.Length == nil { + obj.SetLength(1) + } + +} + +// ***** PatternFlowIpv4MoreFragmentsCounter ***** +type patternFlowIpv4MoreFragmentsCounter struct { + validation + obj *otg.PatternFlowIpv4MoreFragmentsCounter +} + +func NewPatternFlowIpv4MoreFragmentsCounter() PatternFlowIpv4MoreFragmentsCounter { + obj := patternFlowIpv4MoreFragmentsCounter{obj: &otg.PatternFlowIpv4MoreFragmentsCounter{}} + obj.setDefault() + return &obj +} + +func (obj *patternFlowIpv4MoreFragmentsCounter) Msg() *otg.PatternFlowIpv4MoreFragmentsCounter { + return obj.obj +} + +func (obj *patternFlowIpv4MoreFragmentsCounter) SetMsg(msg *otg.PatternFlowIpv4MoreFragmentsCounter) PatternFlowIpv4MoreFragmentsCounter { + + proto.Merge(obj.obj, msg) + return obj +} + +func (obj *patternFlowIpv4MoreFragmentsCounter) ToProto() (*otg.PatternFlowIpv4MoreFragmentsCounter, error) { + err := obj.validateToAndFrom() + if err != nil { + return nil, err + } + return obj.Msg(), nil +} + +func (obj *patternFlowIpv4MoreFragmentsCounter) FromProto(msg *otg.PatternFlowIpv4MoreFragmentsCounter) (PatternFlowIpv4MoreFragmentsCounter, error) { + newObj := obj.SetMsg(msg) + err := newObj.validateToAndFrom() + if err != nil { + return nil, err + } + return newObj, nil +} + +func (obj *patternFlowIpv4MoreFragmentsCounter) ToPbText() (string, error) { + vErr := obj.validateToAndFrom() + if vErr != nil { + return "", vErr + } + protoMarshal, err := proto.Marshal(obj.Msg()) + if err != nil { + return "", err + } + return string(protoMarshal), nil +} + +func (obj *patternFlowIpv4MoreFragmentsCounter) FromPbText(value string) error { + retObj := proto.Unmarshal([]byte(value), obj.Msg()) + if retObj != nil { + return retObj + } + + vErr := obj.validateToAndFrom() + if vErr != nil { + return vErr + } + return retObj +} + +func (obj *patternFlowIpv4MoreFragmentsCounter) ToYaml() (string, error) { + vErr := obj.validateToAndFrom() + if vErr != nil { + return "", vErr + } + opts := protojson.MarshalOptions{ + UseProtoNames: true, + AllowPartial: true, + EmitUnpopulated: false, + } + data, err := opts.Marshal(obj.Msg()) + if err != nil { + return "", err + } + data, err = yaml.JSONToYAML(data) + if err != nil { + return "", err + } + return string(data), nil +} + +func (obj *patternFlowIpv4MoreFragmentsCounter) FromYaml(value string) error { + if value == "" { + value = "{}" + } + data, err := yaml.YAMLToJSON([]byte(value)) + if err != nil { + return err + } + opts := protojson.UnmarshalOptions{ + AllowPartial: true, + DiscardUnknown: false, + } + uError := opts.Unmarshal([]byte(data), obj.Msg()) + if uError != nil { + return fmt.Errorf("unmarshal error %s", strings.Replace( + uError.Error(), "\u00a0", " ", -1)[7:]) + } + + vErr := obj.validateToAndFrom() + if vErr != nil { + return vErr + } + return nil +} + +func (obj *patternFlowIpv4MoreFragmentsCounter) ToJson() (string, error) { + vErr := obj.validateToAndFrom() + if vErr != nil { + return "", vErr + } + opts := protojson.MarshalOptions{ + UseProtoNames: true, + AllowPartial: true, + EmitUnpopulated: false, + Indent: " ", + } + data, err := opts.Marshal(obj.Msg()) + if err != nil { + return "", err + } + return string(data), nil +} + +func (obj *patternFlowIpv4MoreFragmentsCounter) FromJson(value string) error { + opts := protojson.UnmarshalOptions{ + AllowPartial: true, + DiscardUnknown: false, + } + if value == "" { + value = "{}" + } + uError := opts.Unmarshal([]byte(value), obj.Msg()) + if uError != nil { + return fmt.Errorf("unmarshal error %s", strings.Replace( + uError.Error(), "\u00a0", " ", -1)[7:]) + } + + err := obj.validateToAndFrom() + if err != nil { + return err + } + return nil +} + +func (obj *patternFlowIpv4MoreFragmentsCounter) validateToAndFrom() error { + // emptyVars() + obj.validateObj(&obj.validation, true) + return obj.validationResult() +} + +func (obj *patternFlowIpv4MoreFragmentsCounter) Validate() error { + // emptyVars() + obj.validateObj(&obj.validation, false) + return obj.validationResult() +} + +func (obj *patternFlowIpv4MoreFragmentsCounter) String() string { + str, err := obj.ToYaml() + if err != nil { + return err.Error() + } + return str +} + +func (obj *patternFlowIpv4MoreFragmentsCounter) Clone() (PatternFlowIpv4MoreFragmentsCounter, error) { + vErr := obj.Validate() + if vErr != nil { + return nil, vErr + } + newObj := NewPatternFlowIpv4MoreFragmentsCounter() + data, err := proto.Marshal(obj.Msg()) + if err != nil { + return nil, err + } + pbErr := proto.Unmarshal(data, newObj.Msg()) + if pbErr != nil { + return nil, pbErr + } + return newObj, nil +} + +// PatternFlowIpv4MoreFragmentsCounter is integer counter pattern +type PatternFlowIpv4MoreFragmentsCounter interface { + Validation + // Msg marshals PatternFlowIpv4MoreFragmentsCounter to protobuf object *otg.PatternFlowIpv4MoreFragmentsCounter + // and doesn't set defaults + Msg() *otg.PatternFlowIpv4MoreFragmentsCounter + // SetMsg unmarshals PatternFlowIpv4MoreFragmentsCounter from protobuf object *otg.PatternFlowIpv4MoreFragmentsCounter + // and doesn't set defaults + SetMsg(*otg.PatternFlowIpv4MoreFragmentsCounter) PatternFlowIpv4MoreFragmentsCounter + // ToProto marshals PatternFlowIpv4MoreFragmentsCounter to protobuf object *otg.PatternFlowIpv4MoreFragmentsCounter + ToProto() (*otg.PatternFlowIpv4MoreFragmentsCounter, error) + // ToPbText marshals PatternFlowIpv4MoreFragmentsCounter to protobuf text + ToPbText() (string, error) + // ToYaml marshals PatternFlowIpv4MoreFragmentsCounter to YAML text + ToYaml() (string, error) + // ToJson marshals PatternFlowIpv4MoreFragmentsCounter to JSON text + ToJson() (string, error) + // FromProto unmarshals PatternFlowIpv4MoreFragmentsCounter from protobuf object *otg.PatternFlowIpv4MoreFragmentsCounter + FromProto(msg *otg.PatternFlowIpv4MoreFragmentsCounter) (PatternFlowIpv4MoreFragmentsCounter, error) + // FromPbText unmarshals PatternFlowIpv4MoreFragmentsCounter from protobuf text + FromPbText(value string) error + // FromYaml unmarshals PatternFlowIpv4MoreFragmentsCounter from YAML text + FromYaml(value string) error + // FromJson unmarshals PatternFlowIpv4MoreFragmentsCounter from JSON text + FromJson(value string) error + // Validate validates PatternFlowIpv4MoreFragmentsCounter + Validate() error + // A stringer function + String() string + // Clones the object + Clone() (PatternFlowIpv4MoreFragmentsCounter, error) + validateToAndFrom() error + validateObj(vObj *validation, set_default bool) + setDefault() + // Start returns uint32, set in PatternFlowIpv4MoreFragmentsCounter. + Start() uint32 + // SetStart assigns uint32 provided by user to PatternFlowIpv4MoreFragmentsCounter + SetStart(value uint32) PatternFlowIpv4MoreFragmentsCounter + // HasStart checks if Start has been set in PatternFlowIpv4MoreFragmentsCounter + HasStart() bool + // Step returns uint32, set in PatternFlowIpv4MoreFragmentsCounter. + Step() uint32 + // SetStep assigns uint32 provided by user to PatternFlowIpv4MoreFragmentsCounter + SetStep(value uint32) PatternFlowIpv4MoreFragmentsCounter + // HasStep checks if Step has been set in PatternFlowIpv4MoreFragmentsCounter + HasStep() bool + // Count returns uint32, set in PatternFlowIpv4MoreFragmentsCounter. + Count() uint32 + // SetCount assigns uint32 provided by user to PatternFlowIpv4MoreFragmentsCounter + SetCount(value uint32) PatternFlowIpv4MoreFragmentsCounter + // HasCount checks if Count has been set in PatternFlowIpv4MoreFragmentsCounter + HasCount() bool +} + +// description is TBD +// Start returns a uint32 +func (obj *patternFlowIpv4MoreFragmentsCounter) Start() uint32 { + + return *obj.obj.Start + +} + +// description is TBD +// Start returns a uint32 +func (obj *patternFlowIpv4MoreFragmentsCounter) HasStart() bool { + return obj.obj.Start != nil +} + +// description is TBD +// SetStart sets the uint32 value in the PatternFlowIpv4MoreFragmentsCounter object +func (obj *patternFlowIpv4MoreFragmentsCounter) SetStart(value uint32) PatternFlowIpv4MoreFragmentsCounter { + + obj.obj.Start = &value + return obj +} + +// description is TBD +// Step returns a uint32 +func (obj *patternFlowIpv4MoreFragmentsCounter) Step() uint32 { + + return *obj.obj.Step + +} + +// description is TBD +// Step returns a uint32 +func (obj *patternFlowIpv4MoreFragmentsCounter) HasStep() bool { + return obj.obj.Step != nil +} + +// description is TBD +// SetStep sets the uint32 value in the PatternFlowIpv4MoreFragmentsCounter object +func (obj *patternFlowIpv4MoreFragmentsCounter) SetStep(value uint32) PatternFlowIpv4MoreFragmentsCounter { + + obj.obj.Step = &value + return obj +} + +// description is TBD +// Count returns a uint32 +func (obj *patternFlowIpv4MoreFragmentsCounter) Count() uint32 { + + return *obj.obj.Count + +} + +// description is TBD +// Count returns a uint32 +func (obj *patternFlowIpv4MoreFragmentsCounter) HasCount() bool { + return obj.obj.Count != nil +} + +// description is TBD +// SetCount sets the uint32 value in the PatternFlowIpv4MoreFragmentsCounter object +func (obj *patternFlowIpv4MoreFragmentsCounter) SetCount(value uint32) PatternFlowIpv4MoreFragmentsCounter { + + obj.obj.Count = &value + return obj +} + +func (obj *patternFlowIpv4MoreFragmentsCounter) validateObj(vObj *validation, set_default bool) { + if set_default { + obj.setDefault() + } + + if obj.obj.Start != nil { + + if *obj.obj.Start > 1 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("0 <= PatternFlowIpv4MoreFragmentsCounter.Start <= 1 but Got %d", *obj.obj.Start)) + } + + } + + if obj.obj.Step != nil { + + if *obj.obj.Step > 1 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("0 <= PatternFlowIpv4MoreFragmentsCounter.Step <= 1 but Got %d", *obj.obj.Step)) + } + + } + + if obj.obj.Count != nil { + + if *obj.obj.Count > 1 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("0 <= PatternFlowIpv4MoreFragmentsCounter.Count <= 1 but Got %d", *obj.obj.Count)) + } + + } + +} + +func (obj *patternFlowIpv4MoreFragmentsCounter) setDefault() { + if obj.obj.Start == nil { + obj.SetStart(0) + } + if obj.obj.Step == nil { + obj.SetStep(1) + } + if obj.obj.Count == nil { + obj.SetCount(1) + } + +} + +// ***** PatternFlowIpv4MoreFragmentsMetricTag ***** +type patternFlowIpv4MoreFragmentsMetricTag struct { + validation + obj *otg.PatternFlowIpv4MoreFragmentsMetricTag +} + +func NewPatternFlowIpv4MoreFragmentsMetricTag() PatternFlowIpv4MoreFragmentsMetricTag { + obj := patternFlowIpv4MoreFragmentsMetricTag{obj: &otg.PatternFlowIpv4MoreFragmentsMetricTag{}} + obj.setDefault() + return &obj +} + +func (obj *patternFlowIpv4MoreFragmentsMetricTag) Msg() *otg.PatternFlowIpv4MoreFragmentsMetricTag { + return obj.obj +} + +func (obj *patternFlowIpv4MoreFragmentsMetricTag) SetMsg(msg *otg.PatternFlowIpv4MoreFragmentsMetricTag) PatternFlowIpv4MoreFragmentsMetricTag { + + proto.Merge(obj.obj, msg) + return obj +} + +func (obj *patternFlowIpv4MoreFragmentsMetricTag) ToProto() (*otg.PatternFlowIpv4MoreFragmentsMetricTag, error) { + err := obj.validateToAndFrom() + if err != nil { + return nil, err + } + return obj.Msg(), nil +} + +func (obj *patternFlowIpv4MoreFragmentsMetricTag) FromProto(msg *otg.PatternFlowIpv4MoreFragmentsMetricTag) (PatternFlowIpv4MoreFragmentsMetricTag, error) { + newObj := obj.SetMsg(msg) + err := newObj.validateToAndFrom() + if err != nil { + return nil, err + } + return newObj, nil +} + +func (obj *patternFlowIpv4MoreFragmentsMetricTag) ToPbText() (string, error) { + vErr := obj.validateToAndFrom() + if vErr != nil { + return "", vErr + } + protoMarshal, err := proto.Marshal(obj.Msg()) + if err != nil { + return "", err + } + return string(protoMarshal), nil +} + +func (obj *patternFlowIpv4MoreFragmentsMetricTag) FromPbText(value string) error { + retObj := proto.Unmarshal([]byte(value), obj.Msg()) + if retObj != nil { + return retObj + } + + vErr := obj.validateToAndFrom() + if vErr != nil { + return vErr + } + return retObj +} + +func (obj *patternFlowIpv4MoreFragmentsMetricTag) ToYaml() (string, error) { + vErr := obj.validateToAndFrom() + if vErr != nil { + return "", vErr + } + opts := protojson.MarshalOptions{ + UseProtoNames: true, + AllowPartial: true, + EmitUnpopulated: false, + } + data, err := opts.Marshal(obj.Msg()) + if err != nil { + return "", err + } + data, err = yaml.JSONToYAML(data) + if err != nil { + return "", err + } + return string(data), nil +} + +func (obj *patternFlowIpv4MoreFragmentsMetricTag) FromYaml(value string) error { + if value == "" { + value = "{}" + } + data, err := yaml.YAMLToJSON([]byte(value)) + if err != nil { + return err + } + opts := protojson.UnmarshalOptions{ + AllowPartial: true, + DiscardUnknown: false, + } + uError := opts.Unmarshal([]byte(data), obj.Msg()) + if uError != nil { + return fmt.Errorf("unmarshal error %s", strings.Replace( + uError.Error(), "\u00a0", " ", -1)[7:]) + } + + vErr := obj.validateToAndFrom() + if vErr != nil { + return vErr + } + return nil +} + +func (obj *patternFlowIpv4MoreFragmentsMetricTag) ToJson() (string, error) { + vErr := obj.validateToAndFrom() + if vErr != nil { + return "", vErr + } + opts := protojson.MarshalOptions{ + UseProtoNames: true, + AllowPartial: true, + EmitUnpopulated: false, + Indent: " ", + } + data, err := opts.Marshal(obj.Msg()) + if err != nil { + return "", err + } + return string(data), nil +} + +func (obj *patternFlowIpv4MoreFragmentsMetricTag) FromJson(value string) error { + opts := protojson.UnmarshalOptions{ + AllowPartial: true, + DiscardUnknown: false, + } + if value == "" { + value = "{}" + } + uError := opts.Unmarshal([]byte(value), obj.Msg()) + if uError != nil { + return fmt.Errorf("unmarshal error %s", strings.Replace( + uError.Error(), "\u00a0", " ", -1)[7:]) + } + + err := obj.validateToAndFrom() + if err != nil { + return err + } + return nil +} + +func (obj *patternFlowIpv4MoreFragmentsMetricTag) validateToAndFrom() error { + // emptyVars() + obj.validateObj(&obj.validation, true) + return obj.validationResult() +} + +func (obj *patternFlowIpv4MoreFragmentsMetricTag) Validate() error { + // emptyVars() + obj.validateObj(&obj.validation, false) + return obj.validationResult() +} + +func (obj *patternFlowIpv4MoreFragmentsMetricTag) String() string { + str, err := obj.ToYaml() + if err != nil { + return err.Error() + } + return str +} + +func (obj *patternFlowIpv4MoreFragmentsMetricTag) Clone() (PatternFlowIpv4MoreFragmentsMetricTag, error) { + vErr := obj.Validate() + if vErr != nil { + return nil, vErr + } + newObj := NewPatternFlowIpv4MoreFragmentsMetricTag() + data, err := proto.Marshal(obj.Msg()) + if err != nil { + return nil, err + } + pbErr := proto.Unmarshal(data, newObj.Msg()) + if pbErr != nil { + return nil, pbErr + } + return newObj, nil +} + +// PatternFlowIpv4MoreFragmentsMetricTag is metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. +type PatternFlowIpv4MoreFragmentsMetricTag interface { + Validation + // Msg marshals PatternFlowIpv4MoreFragmentsMetricTag to protobuf object *otg.PatternFlowIpv4MoreFragmentsMetricTag + // and doesn't set defaults + Msg() *otg.PatternFlowIpv4MoreFragmentsMetricTag + // SetMsg unmarshals PatternFlowIpv4MoreFragmentsMetricTag from protobuf object *otg.PatternFlowIpv4MoreFragmentsMetricTag + // and doesn't set defaults + SetMsg(*otg.PatternFlowIpv4MoreFragmentsMetricTag) PatternFlowIpv4MoreFragmentsMetricTag + // ToProto marshals PatternFlowIpv4MoreFragmentsMetricTag to protobuf object *otg.PatternFlowIpv4MoreFragmentsMetricTag + ToProto() (*otg.PatternFlowIpv4MoreFragmentsMetricTag, error) + // ToPbText marshals PatternFlowIpv4MoreFragmentsMetricTag to protobuf text + ToPbText() (string, error) + // ToYaml marshals PatternFlowIpv4MoreFragmentsMetricTag to YAML text + ToYaml() (string, error) + // ToJson marshals PatternFlowIpv4MoreFragmentsMetricTag to JSON text + ToJson() (string, error) + // FromProto unmarshals PatternFlowIpv4MoreFragmentsMetricTag from protobuf object *otg.PatternFlowIpv4MoreFragmentsMetricTag + FromProto(msg *otg.PatternFlowIpv4MoreFragmentsMetricTag) (PatternFlowIpv4MoreFragmentsMetricTag, error) + // FromPbText unmarshals PatternFlowIpv4MoreFragmentsMetricTag from protobuf text + FromPbText(value string) error + // FromYaml unmarshals PatternFlowIpv4MoreFragmentsMetricTag from YAML text + FromYaml(value string) error + // FromJson unmarshals PatternFlowIpv4MoreFragmentsMetricTag from JSON text + FromJson(value string) error + // Validate validates PatternFlowIpv4MoreFragmentsMetricTag + Validate() error + // A stringer function + String() string + // Clones the object + Clone() (PatternFlowIpv4MoreFragmentsMetricTag, error) + validateToAndFrom() error + validateObj(vObj *validation, set_default bool) + setDefault() + // Name returns string, set in PatternFlowIpv4MoreFragmentsMetricTag. + Name() string + // SetName assigns string provided by user to PatternFlowIpv4MoreFragmentsMetricTag + SetName(value string) PatternFlowIpv4MoreFragmentsMetricTag + // Offset returns uint32, set in PatternFlowIpv4MoreFragmentsMetricTag. + Offset() uint32 + // SetOffset assigns uint32 provided by user to PatternFlowIpv4MoreFragmentsMetricTag + SetOffset(value uint32) PatternFlowIpv4MoreFragmentsMetricTag + // HasOffset checks if Offset has been set in PatternFlowIpv4MoreFragmentsMetricTag + HasOffset() bool + // Length returns uint32, set in PatternFlowIpv4MoreFragmentsMetricTag. + Length() uint32 + // SetLength assigns uint32 provided by user to PatternFlowIpv4MoreFragmentsMetricTag + SetLength(value uint32) PatternFlowIpv4MoreFragmentsMetricTag + // HasLength checks if Length has been set in PatternFlowIpv4MoreFragmentsMetricTag + HasLength() bool +} + +// Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field +// Name returns a string +func (obj *patternFlowIpv4MoreFragmentsMetricTag) Name() string { + + return *obj.obj.Name + +} + +// Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field +// SetName sets the string value in the PatternFlowIpv4MoreFragmentsMetricTag object +func (obj *patternFlowIpv4MoreFragmentsMetricTag) SetName(value string) PatternFlowIpv4MoreFragmentsMetricTag { + + obj.obj.Name = &value + return obj +} + +// Offset in bits relative to start of corresponding header field +// Offset returns a uint32 +func (obj *patternFlowIpv4MoreFragmentsMetricTag) Offset() uint32 { + + return *obj.obj.Offset + +} + +// Offset in bits relative to start of corresponding header field +// Offset returns a uint32 +func (obj *patternFlowIpv4MoreFragmentsMetricTag) HasOffset() bool { + return obj.obj.Offset != nil +} + +// Offset in bits relative to start of corresponding header field +// SetOffset sets the uint32 value in the PatternFlowIpv4MoreFragmentsMetricTag object +func (obj *patternFlowIpv4MoreFragmentsMetricTag) SetOffset(value uint32) PatternFlowIpv4MoreFragmentsMetricTag { + + obj.obj.Offset = &value + return obj +} + +// Number of bits to track for metrics starting from configured offset of corresponding header field +// Length returns a uint32 +func (obj *patternFlowIpv4MoreFragmentsMetricTag) Length() uint32 { + + return *obj.obj.Length + +} + +// Number of bits to track for metrics starting from configured offset of corresponding header field +// Length returns a uint32 +func (obj *patternFlowIpv4MoreFragmentsMetricTag) HasLength() bool { + return obj.obj.Length != nil +} + +// Number of bits to track for metrics starting from configured offset of corresponding header field +// SetLength sets the uint32 value in the PatternFlowIpv4MoreFragmentsMetricTag object +func (obj *patternFlowIpv4MoreFragmentsMetricTag) SetLength(value uint32) PatternFlowIpv4MoreFragmentsMetricTag { + + obj.obj.Length = &value + return obj +} + +func (obj *patternFlowIpv4MoreFragmentsMetricTag) validateObj(vObj *validation, set_default bool) { + if set_default { + obj.setDefault() + } + + // Name is required + if obj.obj.Name == nil { + vObj.validationErrors = append(vObj.validationErrors, "Name is required field on interface PatternFlowIpv4MoreFragmentsMetricTag") + } + + if obj.obj.Offset != nil { + + if *obj.obj.Offset > 0 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("0 <= PatternFlowIpv4MoreFragmentsMetricTag.Offset <= 0 but Got %d", *obj.obj.Offset)) + } + + } + + if obj.obj.Length != nil { + + if *obj.obj.Length < 1 || *obj.obj.Length > 1 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("1 <= PatternFlowIpv4MoreFragmentsMetricTag.Length <= 1 but Got %d", *obj.obj.Length)) + } + + } + +} + +func (obj *patternFlowIpv4MoreFragmentsMetricTag) setDefault() { + if obj.obj.Offset == nil { + obj.SetOffset(0) + } + if obj.obj.Length == nil { + obj.SetLength(1) + } + +} + +// ***** PatternFlowIpv4FragmentOffsetCounter ***** +type patternFlowIpv4FragmentOffsetCounter struct { + validation + obj *otg.PatternFlowIpv4FragmentOffsetCounter +} + +func NewPatternFlowIpv4FragmentOffsetCounter() PatternFlowIpv4FragmentOffsetCounter { + obj := patternFlowIpv4FragmentOffsetCounter{obj: &otg.PatternFlowIpv4FragmentOffsetCounter{}} + obj.setDefault() + return &obj +} + +func (obj *patternFlowIpv4FragmentOffsetCounter) Msg() *otg.PatternFlowIpv4FragmentOffsetCounter { + return obj.obj +} + +func (obj *patternFlowIpv4FragmentOffsetCounter) SetMsg(msg *otg.PatternFlowIpv4FragmentOffsetCounter) PatternFlowIpv4FragmentOffsetCounter { + + proto.Merge(obj.obj, msg) + return obj +} + +func (obj *patternFlowIpv4FragmentOffsetCounter) ToProto() (*otg.PatternFlowIpv4FragmentOffsetCounter, error) { + err := obj.validateToAndFrom() + if err != nil { + return nil, err + } + return obj.Msg(), nil +} + +func (obj *patternFlowIpv4FragmentOffsetCounter) FromProto(msg *otg.PatternFlowIpv4FragmentOffsetCounter) (PatternFlowIpv4FragmentOffsetCounter, error) { + newObj := obj.SetMsg(msg) + err := newObj.validateToAndFrom() + if err != nil { + return nil, err + } + return newObj, nil +} + +func (obj *patternFlowIpv4FragmentOffsetCounter) ToPbText() (string, error) { + vErr := obj.validateToAndFrom() + if vErr != nil { + return "", vErr + } + protoMarshal, err := proto.Marshal(obj.Msg()) + if err != nil { + return "", err + } + return string(protoMarshal), nil +} + +func (obj *patternFlowIpv4FragmentOffsetCounter) FromPbText(value string) error { + retObj := proto.Unmarshal([]byte(value), obj.Msg()) + if retObj != nil { + return retObj + } + + vErr := obj.validateToAndFrom() + if vErr != nil { + return vErr + } + return retObj +} + +func (obj *patternFlowIpv4FragmentOffsetCounter) ToYaml() (string, error) { + vErr := obj.validateToAndFrom() + if vErr != nil { + return "", vErr + } + opts := protojson.MarshalOptions{ + UseProtoNames: true, + AllowPartial: true, + EmitUnpopulated: false, + } + data, err := opts.Marshal(obj.Msg()) + if err != nil { + return "", err + } + data, err = yaml.JSONToYAML(data) + if err != nil { + return "", err + } + return string(data), nil +} + +func (obj *patternFlowIpv4FragmentOffsetCounter) FromYaml(value string) error { + if value == "" { + value = "{}" + } + data, err := yaml.YAMLToJSON([]byte(value)) + if err != nil { + return err + } + opts := protojson.UnmarshalOptions{ + AllowPartial: true, + DiscardUnknown: false, + } + uError := opts.Unmarshal([]byte(data), obj.Msg()) + if uError != nil { + return fmt.Errorf("unmarshal error %s", strings.Replace( + uError.Error(), "\u00a0", " ", -1)[7:]) + } + + vErr := obj.validateToAndFrom() + if vErr != nil { + return vErr + } + return nil +} + +func (obj *patternFlowIpv4FragmentOffsetCounter) ToJson() (string, error) { + vErr := obj.validateToAndFrom() + if vErr != nil { + return "", vErr + } + opts := protojson.MarshalOptions{ + UseProtoNames: true, + AllowPartial: true, + EmitUnpopulated: false, + Indent: " ", + } + data, err := opts.Marshal(obj.Msg()) + if err != nil { + return "", err + } + return string(data), nil +} + +func (obj *patternFlowIpv4FragmentOffsetCounter) FromJson(value string) error { + opts := protojson.UnmarshalOptions{ + AllowPartial: true, + DiscardUnknown: false, + } + if value == "" { + value = "{}" + } + uError := opts.Unmarshal([]byte(value), obj.Msg()) + if uError != nil { + return fmt.Errorf("unmarshal error %s", strings.Replace( + uError.Error(), "\u00a0", " ", -1)[7:]) + } + + err := obj.validateToAndFrom() + if err != nil { + return err + } + return nil +} + +func (obj *patternFlowIpv4FragmentOffsetCounter) validateToAndFrom() error { + // emptyVars() + obj.validateObj(&obj.validation, true) + return obj.validationResult() +} + +func (obj *patternFlowIpv4FragmentOffsetCounter) Validate() error { + // emptyVars() + obj.validateObj(&obj.validation, false) + return obj.validationResult() +} + +func (obj *patternFlowIpv4FragmentOffsetCounter) String() string { + str, err := obj.ToYaml() + if err != nil { + return err.Error() + } + return str +} + +func (obj *patternFlowIpv4FragmentOffsetCounter) Clone() (PatternFlowIpv4FragmentOffsetCounter, error) { + vErr := obj.Validate() + if vErr != nil { + return nil, vErr + } + newObj := NewPatternFlowIpv4FragmentOffsetCounter() + data, err := proto.Marshal(obj.Msg()) + if err != nil { + return nil, err + } + pbErr := proto.Unmarshal(data, newObj.Msg()) + if pbErr != nil { + return nil, pbErr + } + return newObj, nil +} + +// PatternFlowIpv4FragmentOffsetCounter is integer counter pattern +type PatternFlowIpv4FragmentOffsetCounter interface { + Validation + // Msg marshals PatternFlowIpv4FragmentOffsetCounter to protobuf object *otg.PatternFlowIpv4FragmentOffsetCounter + // and doesn't set defaults + Msg() *otg.PatternFlowIpv4FragmentOffsetCounter + // SetMsg unmarshals PatternFlowIpv4FragmentOffsetCounter from protobuf object *otg.PatternFlowIpv4FragmentOffsetCounter + // and doesn't set defaults + SetMsg(*otg.PatternFlowIpv4FragmentOffsetCounter) PatternFlowIpv4FragmentOffsetCounter + // ToProto marshals PatternFlowIpv4FragmentOffsetCounter to protobuf object *otg.PatternFlowIpv4FragmentOffsetCounter + ToProto() (*otg.PatternFlowIpv4FragmentOffsetCounter, error) + // ToPbText marshals PatternFlowIpv4FragmentOffsetCounter to protobuf text + ToPbText() (string, error) + // ToYaml marshals PatternFlowIpv4FragmentOffsetCounter to YAML text + ToYaml() (string, error) + // ToJson marshals PatternFlowIpv4FragmentOffsetCounter to JSON text + ToJson() (string, error) + // FromProto unmarshals PatternFlowIpv4FragmentOffsetCounter from protobuf object *otg.PatternFlowIpv4FragmentOffsetCounter + FromProto(msg *otg.PatternFlowIpv4FragmentOffsetCounter) (PatternFlowIpv4FragmentOffsetCounter, error) + // FromPbText unmarshals PatternFlowIpv4FragmentOffsetCounter from protobuf text + FromPbText(value string) error + // FromYaml unmarshals PatternFlowIpv4FragmentOffsetCounter from YAML text + FromYaml(value string) error + // FromJson unmarshals PatternFlowIpv4FragmentOffsetCounter from JSON text + FromJson(value string) error + // Validate validates PatternFlowIpv4FragmentOffsetCounter + Validate() error + // A stringer function + String() string + // Clones the object + Clone() (PatternFlowIpv4FragmentOffsetCounter, error) + validateToAndFrom() error + validateObj(vObj *validation, set_default bool) + setDefault() + // Start returns uint32, set in PatternFlowIpv4FragmentOffsetCounter. + Start() uint32 + // SetStart assigns uint32 provided by user to PatternFlowIpv4FragmentOffsetCounter + SetStart(value uint32) PatternFlowIpv4FragmentOffsetCounter + // HasStart checks if Start has been set in PatternFlowIpv4FragmentOffsetCounter + HasStart() bool + // Step returns uint32, set in PatternFlowIpv4FragmentOffsetCounter. + Step() uint32 + // SetStep assigns uint32 provided by user to PatternFlowIpv4FragmentOffsetCounter + SetStep(value uint32) PatternFlowIpv4FragmentOffsetCounter + // HasStep checks if Step has been set in PatternFlowIpv4FragmentOffsetCounter + HasStep() bool + // Count returns uint32, set in PatternFlowIpv4FragmentOffsetCounter. + Count() uint32 + // SetCount assigns uint32 provided by user to PatternFlowIpv4FragmentOffsetCounter + SetCount(value uint32) PatternFlowIpv4FragmentOffsetCounter + // HasCount checks if Count has been set in PatternFlowIpv4FragmentOffsetCounter + HasCount() bool +} + +// description is TBD +// Start returns a uint32 +func (obj *patternFlowIpv4FragmentOffsetCounter) Start() uint32 { + + return *obj.obj.Start + +} + +// description is TBD +// Start returns a uint32 +func (obj *patternFlowIpv4FragmentOffsetCounter) HasStart() bool { + return obj.obj.Start != nil +} + +// description is TBD +// SetStart sets the uint32 value in the PatternFlowIpv4FragmentOffsetCounter object +func (obj *patternFlowIpv4FragmentOffsetCounter) SetStart(value uint32) PatternFlowIpv4FragmentOffsetCounter { + + obj.obj.Start = &value + return obj +} + +// description is TBD +// Step returns a uint32 +func (obj *patternFlowIpv4FragmentOffsetCounter) Step() uint32 { + + return *obj.obj.Step + +} + +// description is TBD +// Step returns a uint32 +func (obj *patternFlowIpv4FragmentOffsetCounter) HasStep() bool { + return obj.obj.Step != nil +} + +// description is TBD +// SetStep sets the uint32 value in the PatternFlowIpv4FragmentOffsetCounter object +func (obj *patternFlowIpv4FragmentOffsetCounter) SetStep(value uint32) PatternFlowIpv4FragmentOffsetCounter { + + obj.obj.Step = &value + return obj +} + +// description is TBD +// Count returns a uint32 +func (obj *patternFlowIpv4FragmentOffsetCounter) Count() uint32 { + + return *obj.obj.Count + +} + +// description is TBD +// Count returns a uint32 +func (obj *patternFlowIpv4FragmentOffsetCounter) HasCount() bool { + return obj.obj.Count != nil +} + +// description is TBD +// SetCount sets the uint32 value in the PatternFlowIpv4FragmentOffsetCounter object +func (obj *patternFlowIpv4FragmentOffsetCounter) SetCount(value uint32) PatternFlowIpv4FragmentOffsetCounter { + + obj.obj.Count = &value + return obj +} + +func (obj *patternFlowIpv4FragmentOffsetCounter) validateObj(vObj *validation, set_default bool) { + if set_default { + obj.setDefault() + } + + if obj.obj.Start != nil { + + if *obj.obj.Start > 31 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("0 <= PatternFlowIpv4FragmentOffsetCounter.Start <= 31 but Got %d", *obj.obj.Start)) + } + + } + + if obj.obj.Step != nil { + + if *obj.obj.Step > 31 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("0 <= PatternFlowIpv4FragmentOffsetCounter.Step <= 31 but Got %d", *obj.obj.Step)) + } + + } + + if obj.obj.Count != nil { + + if *obj.obj.Count > 31 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("0 <= PatternFlowIpv4FragmentOffsetCounter.Count <= 31 but Got %d", *obj.obj.Count)) + } + + } + +} + +func (obj *patternFlowIpv4FragmentOffsetCounter) setDefault() { + if obj.obj.Start == nil { + obj.SetStart(0) + } + if obj.obj.Step == nil { + obj.SetStep(1) + } + if obj.obj.Count == nil { + obj.SetCount(1) + } + +} + +// ***** PatternFlowIpv4FragmentOffsetMetricTag ***** +type patternFlowIpv4FragmentOffsetMetricTag struct { + validation + obj *otg.PatternFlowIpv4FragmentOffsetMetricTag +} + +func NewPatternFlowIpv4FragmentOffsetMetricTag() PatternFlowIpv4FragmentOffsetMetricTag { + obj := patternFlowIpv4FragmentOffsetMetricTag{obj: &otg.PatternFlowIpv4FragmentOffsetMetricTag{}} + obj.setDefault() + return &obj +} + +func (obj *patternFlowIpv4FragmentOffsetMetricTag) Msg() *otg.PatternFlowIpv4FragmentOffsetMetricTag { + return obj.obj +} + +func (obj *patternFlowIpv4FragmentOffsetMetricTag) SetMsg(msg *otg.PatternFlowIpv4FragmentOffsetMetricTag) PatternFlowIpv4FragmentOffsetMetricTag { + + proto.Merge(obj.obj, msg) + return obj +} + +func (obj *patternFlowIpv4FragmentOffsetMetricTag) ToProto() (*otg.PatternFlowIpv4FragmentOffsetMetricTag, error) { + err := obj.validateToAndFrom() + if err != nil { + return nil, err + } + return obj.Msg(), nil +} + +func (obj *patternFlowIpv4FragmentOffsetMetricTag) FromProto(msg *otg.PatternFlowIpv4FragmentOffsetMetricTag) (PatternFlowIpv4FragmentOffsetMetricTag, error) { + newObj := obj.SetMsg(msg) + err := newObj.validateToAndFrom() + if err != nil { + return nil, err + } + return newObj, nil +} + +func (obj *patternFlowIpv4FragmentOffsetMetricTag) ToPbText() (string, error) { + vErr := obj.validateToAndFrom() + if vErr != nil { + return "", vErr + } + protoMarshal, err := proto.Marshal(obj.Msg()) + if err != nil { + return "", err + } + return string(protoMarshal), nil +} + +func (obj *patternFlowIpv4FragmentOffsetMetricTag) FromPbText(value string) error { + retObj := proto.Unmarshal([]byte(value), obj.Msg()) + if retObj != nil { + return retObj + } + + vErr := obj.validateToAndFrom() + if vErr != nil { + return vErr + } + return retObj +} + +func (obj *patternFlowIpv4FragmentOffsetMetricTag) ToYaml() (string, error) { + vErr := obj.validateToAndFrom() + if vErr != nil { + return "", vErr + } + opts := protojson.MarshalOptions{ + UseProtoNames: true, + AllowPartial: true, + EmitUnpopulated: false, + } + data, err := opts.Marshal(obj.Msg()) + if err != nil { + return "", err + } + data, err = yaml.JSONToYAML(data) + if err != nil { + return "", err + } + return string(data), nil +} + +func (obj *patternFlowIpv4FragmentOffsetMetricTag) FromYaml(value string) error { + if value == "" { + value = "{}" + } + data, err := yaml.YAMLToJSON([]byte(value)) + if err != nil { + return err + } + opts := protojson.UnmarshalOptions{ + AllowPartial: true, + DiscardUnknown: false, + } + uError := opts.Unmarshal([]byte(data), obj.Msg()) + if uError != nil { + return fmt.Errorf("unmarshal error %s", strings.Replace( + uError.Error(), "\u00a0", " ", -1)[7:]) + } + + vErr := obj.validateToAndFrom() + if vErr != nil { + return vErr + } + return nil +} + +func (obj *patternFlowIpv4FragmentOffsetMetricTag) ToJson() (string, error) { + vErr := obj.validateToAndFrom() + if vErr != nil { + return "", vErr + } + opts := protojson.MarshalOptions{ + UseProtoNames: true, + AllowPartial: true, + EmitUnpopulated: false, + Indent: " ", + } + data, err := opts.Marshal(obj.Msg()) + if err != nil { + return "", err + } + return string(data), nil +} + +func (obj *patternFlowIpv4FragmentOffsetMetricTag) FromJson(value string) error { + opts := protojson.UnmarshalOptions{ + AllowPartial: true, + DiscardUnknown: false, + } + if value == "" { + value = "{}" + } + uError := opts.Unmarshal([]byte(value), obj.Msg()) + if uError != nil { + return fmt.Errorf("unmarshal error %s", strings.Replace( + uError.Error(), "\u00a0", " ", -1)[7:]) + } + + err := obj.validateToAndFrom() + if err != nil { + return err + } + return nil +} + +func (obj *patternFlowIpv4FragmentOffsetMetricTag) validateToAndFrom() error { + // emptyVars() + obj.validateObj(&obj.validation, true) + return obj.validationResult() +} + +func (obj *patternFlowIpv4FragmentOffsetMetricTag) Validate() error { + // emptyVars() + obj.validateObj(&obj.validation, false) + return obj.validationResult() +} + +func (obj *patternFlowIpv4FragmentOffsetMetricTag) String() string { + str, err := obj.ToYaml() + if err != nil { + return err.Error() + } + return str +} + +func (obj *patternFlowIpv4FragmentOffsetMetricTag) Clone() (PatternFlowIpv4FragmentOffsetMetricTag, error) { + vErr := obj.Validate() + if vErr != nil { + return nil, vErr + } + newObj := NewPatternFlowIpv4FragmentOffsetMetricTag() + data, err := proto.Marshal(obj.Msg()) + if err != nil { + return nil, err + } + pbErr := proto.Unmarshal(data, newObj.Msg()) + if pbErr != nil { + return nil, pbErr + } + return newObj, nil +} + +// PatternFlowIpv4FragmentOffsetMetricTag is metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. +type PatternFlowIpv4FragmentOffsetMetricTag interface { + Validation + // Msg marshals PatternFlowIpv4FragmentOffsetMetricTag to protobuf object *otg.PatternFlowIpv4FragmentOffsetMetricTag + // and doesn't set defaults + Msg() *otg.PatternFlowIpv4FragmentOffsetMetricTag + // SetMsg unmarshals PatternFlowIpv4FragmentOffsetMetricTag from protobuf object *otg.PatternFlowIpv4FragmentOffsetMetricTag + // and doesn't set defaults + SetMsg(*otg.PatternFlowIpv4FragmentOffsetMetricTag) PatternFlowIpv4FragmentOffsetMetricTag + // ToProto marshals PatternFlowIpv4FragmentOffsetMetricTag to protobuf object *otg.PatternFlowIpv4FragmentOffsetMetricTag + ToProto() (*otg.PatternFlowIpv4FragmentOffsetMetricTag, error) + // ToPbText marshals PatternFlowIpv4FragmentOffsetMetricTag to protobuf text + ToPbText() (string, error) + // ToYaml marshals PatternFlowIpv4FragmentOffsetMetricTag to YAML text + ToYaml() (string, error) + // ToJson marshals PatternFlowIpv4FragmentOffsetMetricTag to JSON text + ToJson() (string, error) + // FromProto unmarshals PatternFlowIpv4FragmentOffsetMetricTag from protobuf object *otg.PatternFlowIpv4FragmentOffsetMetricTag + FromProto(msg *otg.PatternFlowIpv4FragmentOffsetMetricTag) (PatternFlowIpv4FragmentOffsetMetricTag, error) + // FromPbText unmarshals PatternFlowIpv4FragmentOffsetMetricTag from protobuf text + FromPbText(value string) error + // FromYaml unmarshals PatternFlowIpv4FragmentOffsetMetricTag from YAML text + FromYaml(value string) error + // FromJson unmarshals PatternFlowIpv4FragmentOffsetMetricTag from JSON text + FromJson(value string) error + // Validate validates PatternFlowIpv4FragmentOffsetMetricTag + Validate() error + // A stringer function + String() string + // Clones the object + Clone() (PatternFlowIpv4FragmentOffsetMetricTag, error) + validateToAndFrom() error + validateObj(vObj *validation, set_default bool) + setDefault() + // Name returns string, set in PatternFlowIpv4FragmentOffsetMetricTag. + Name() string + // SetName assigns string provided by user to PatternFlowIpv4FragmentOffsetMetricTag + SetName(value string) PatternFlowIpv4FragmentOffsetMetricTag + // Offset returns uint32, set in PatternFlowIpv4FragmentOffsetMetricTag. + Offset() uint32 + // SetOffset assigns uint32 provided by user to PatternFlowIpv4FragmentOffsetMetricTag + SetOffset(value uint32) PatternFlowIpv4FragmentOffsetMetricTag + // HasOffset checks if Offset has been set in PatternFlowIpv4FragmentOffsetMetricTag + HasOffset() bool + // Length returns uint32, set in PatternFlowIpv4FragmentOffsetMetricTag. + Length() uint32 + // SetLength assigns uint32 provided by user to PatternFlowIpv4FragmentOffsetMetricTag + SetLength(value uint32) PatternFlowIpv4FragmentOffsetMetricTag + // HasLength checks if Length has been set in PatternFlowIpv4FragmentOffsetMetricTag + HasLength() bool +} + +// Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field +// Name returns a string +func (obj *patternFlowIpv4FragmentOffsetMetricTag) Name() string { + + return *obj.obj.Name + +} + +// Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field +// SetName sets the string value in the PatternFlowIpv4FragmentOffsetMetricTag object +func (obj *patternFlowIpv4FragmentOffsetMetricTag) SetName(value string) PatternFlowIpv4FragmentOffsetMetricTag { + + obj.obj.Name = &value + return obj +} + +// Offset in bits relative to start of corresponding header field +// Offset returns a uint32 +func (obj *patternFlowIpv4FragmentOffsetMetricTag) Offset() uint32 { + + return *obj.obj.Offset + +} + +// Offset in bits relative to start of corresponding header field +// Offset returns a uint32 +func (obj *patternFlowIpv4FragmentOffsetMetricTag) HasOffset() bool { + return obj.obj.Offset != nil +} + +// Offset in bits relative to start of corresponding header field +// SetOffset sets the uint32 value in the PatternFlowIpv4FragmentOffsetMetricTag object +func (obj *patternFlowIpv4FragmentOffsetMetricTag) SetOffset(value uint32) PatternFlowIpv4FragmentOffsetMetricTag { + + obj.obj.Offset = &value + return obj +} + +// Number of bits to track for metrics starting from configured offset of corresponding header field +// Length returns a uint32 +func (obj *patternFlowIpv4FragmentOffsetMetricTag) Length() uint32 { + + return *obj.obj.Length + +} + +// Number of bits to track for metrics starting from configured offset of corresponding header field +// Length returns a uint32 +func (obj *patternFlowIpv4FragmentOffsetMetricTag) HasLength() bool { + return obj.obj.Length != nil +} + +// Number of bits to track for metrics starting from configured offset of corresponding header field +// SetLength sets the uint32 value in the PatternFlowIpv4FragmentOffsetMetricTag object +func (obj *patternFlowIpv4FragmentOffsetMetricTag) SetLength(value uint32) PatternFlowIpv4FragmentOffsetMetricTag { + + obj.obj.Length = &value + return obj +} + +func (obj *patternFlowIpv4FragmentOffsetMetricTag) validateObj(vObj *validation, set_default bool) { + if set_default { + obj.setDefault() + } + + // Name is required + if obj.obj.Name == nil { + vObj.validationErrors = append(vObj.validationErrors, "Name is required field on interface PatternFlowIpv4FragmentOffsetMetricTag") + } + + if obj.obj.Offset != nil { + + if *obj.obj.Offset > 4 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("0 <= PatternFlowIpv4FragmentOffsetMetricTag.Offset <= 4 but Got %d", *obj.obj.Offset)) + } + + } + + if obj.obj.Length != nil { + + if *obj.obj.Length < 1 || *obj.obj.Length > 5 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("1 <= PatternFlowIpv4FragmentOffsetMetricTag.Length <= 5 but Got %d", *obj.obj.Length)) + } + + } + +} + +func (obj *patternFlowIpv4FragmentOffsetMetricTag) setDefault() { + if obj.obj.Offset == nil { + obj.SetOffset(0) + } + if obj.obj.Length == nil { + obj.SetLength(5) + } + +} + +// ***** PatternFlowIpv4TimeToLiveCounter ***** +type patternFlowIpv4TimeToLiveCounter struct { + validation + obj *otg.PatternFlowIpv4TimeToLiveCounter +} + +func NewPatternFlowIpv4TimeToLiveCounter() PatternFlowIpv4TimeToLiveCounter { + obj := patternFlowIpv4TimeToLiveCounter{obj: &otg.PatternFlowIpv4TimeToLiveCounter{}} + obj.setDefault() + return &obj +} + +func (obj *patternFlowIpv4TimeToLiveCounter) Msg() *otg.PatternFlowIpv4TimeToLiveCounter { + return obj.obj +} + +func (obj *patternFlowIpv4TimeToLiveCounter) SetMsg(msg *otg.PatternFlowIpv4TimeToLiveCounter) PatternFlowIpv4TimeToLiveCounter { + + proto.Merge(obj.obj, msg) + return obj +} + +func (obj *patternFlowIpv4TimeToLiveCounter) ToProto() (*otg.PatternFlowIpv4TimeToLiveCounter, error) { + err := obj.validateToAndFrom() + if err != nil { + return nil, err + } + return obj.Msg(), nil +} + +func (obj *patternFlowIpv4TimeToLiveCounter) FromProto(msg *otg.PatternFlowIpv4TimeToLiveCounter) (PatternFlowIpv4TimeToLiveCounter, error) { + newObj := obj.SetMsg(msg) + err := newObj.validateToAndFrom() + if err != nil { + return nil, err + } + return newObj, nil +} + +func (obj *patternFlowIpv4TimeToLiveCounter) ToPbText() (string, error) { + vErr := obj.validateToAndFrom() + if vErr != nil { + return "", vErr + } + protoMarshal, err := proto.Marshal(obj.Msg()) + if err != nil { + return "", err + } + return string(protoMarshal), nil +} + +func (obj *patternFlowIpv4TimeToLiveCounter) FromPbText(value string) error { + retObj := proto.Unmarshal([]byte(value), obj.Msg()) + if retObj != nil { + return retObj + } + + vErr := obj.validateToAndFrom() + if vErr != nil { + return vErr + } + return retObj +} + +func (obj *patternFlowIpv4TimeToLiveCounter) ToYaml() (string, error) { + vErr := obj.validateToAndFrom() + if vErr != nil { + return "", vErr + } + opts := protojson.MarshalOptions{ + UseProtoNames: true, + AllowPartial: true, + EmitUnpopulated: false, + } + data, err := opts.Marshal(obj.Msg()) + if err != nil { + return "", err + } + data, err = yaml.JSONToYAML(data) + if err != nil { + return "", err + } + return string(data), nil +} + +func (obj *patternFlowIpv4TimeToLiveCounter) FromYaml(value string) error { + if value == "" { + value = "{}" + } + data, err := yaml.YAMLToJSON([]byte(value)) + if err != nil { + return err + } + opts := protojson.UnmarshalOptions{ + AllowPartial: true, + DiscardUnknown: false, + } + uError := opts.Unmarshal([]byte(data), obj.Msg()) + if uError != nil { + return fmt.Errorf("unmarshal error %s", strings.Replace( + uError.Error(), "\u00a0", " ", -1)[7:]) + } + + vErr := obj.validateToAndFrom() + if vErr != nil { + return vErr + } + return nil +} + +func (obj *patternFlowIpv4TimeToLiveCounter) ToJson() (string, error) { + vErr := obj.validateToAndFrom() + if vErr != nil { + return "", vErr + } + opts := protojson.MarshalOptions{ + UseProtoNames: true, + AllowPartial: true, + EmitUnpopulated: false, + Indent: " ", + } + data, err := opts.Marshal(obj.Msg()) + if err != nil { + return "", err + } + return string(data), nil +} + +func (obj *patternFlowIpv4TimeToLiveCounter) FromJson(value string) error { + opts := protojson.UnmarshalOptions{ + AllowPartial: true, + DiscardUnknown: false, + } + if value == "" { + value = "{}" + } + uError := opts.Unmarshal([]byte(value), obj.Msg()) + if uError != nil { + return fmt.Errorf("unmarshal error %s", strings.Replace( + uError.Error(), "\u00a0", " ", -1)[7:]) + } + + err := obj.validateToAndFrom() + if err != nil { + return err + } + return nil +} + +func (obj *patternFlowIpv4TimeToLiveCounter) validateToAndFrom() error { + // emptyVars() + obj.validateObj(&obj.validation, true) + return obj.validationResult() +} + +func (obj *patternFlowIpv4TimeToLiveCounter) Validate() error { + // emptyVars() + obj.validateObj(&obj.validation, false) + return obj.validationResult() +} + +func (obj *patternFlowIpv4TimeToLiveCounter) String() string { + str, err := obj.ToYaml() + if err != nil { + return err.Error() + } + return str +} + +func (obj *patternFlowIpv4TimeToLiveCounter) Clone() (PatternFlowIpv4TimeToLiveCounter, error) { + vErr := obj.Validate() + if vErr != nil { + return nil, vErr + } + newObj := NewPatternFlowIpv4TimeToLiveCounter() + data, err := proto.Marshal(obj.Msg()) + if err != nil { + return nil, err + } + pbErr := proto.Unmarshal(data, newObj.Msg()) + if pbErr != nil { + return nil, pbErr + } + return newObj, nil +} + +// PatternFlowIpv4TimeToLiveCounter is integer counter pattern +type PatternFlowIpv4TimeToLiveCounter interface { + Validation + // Msg marshals PatternFlowIpv4TimeToLiveCounter to protobuf object *otg.PatternFlowIpv4TimeToLiveCounter + // and doesn't set defaults + Msg() *otg.PatternFlowIpv4TimeToLiveCounter + // SetMsg unmarshals PatternFlowIpv4TimeToLiveCounter from protobuf object *otg.PatternFlowIpv4TimeToLiveCounter + // and doesn't set defaults + SetMsg(*otg.PatternFlowIpv4TimeToLiveCounter) PatternFlowIpv4TimeToLiveCounter + // ToProto marshals PatternFlowIpv4TimeToLiveCounter to protobuf object *otg.PatternFlowIpv4TimeToLiveCounter + ToProto() (*otg.PatternFlowIpv4TimeToLiveCounter, error) + // ToPbText marshals PatternFlowIpv4TimeToLiveCounter to protobuf text + ToPbText() (string, error) + // ToYaml marshals PatternFlowIpv4TimeToLiveCounter to YAML text + ToYaml() (string, error) + // ToJson marshals PatternFlowIpv4TimeToLiveCounter to JSON text + ToJson() (string, error) + // FromProto unmarshals PatternFlowIpv4TimeToLiveCounter from protobuf object *otg.PatternFlowIpv4TimeToLiveCounter + FromProto(msg *otg.PatternFlowIpv4TimeToLiveCounter) (PatternFlowIpv4TimeToLiveCounter, error) + // FromPbText unmarshals PatternFlowIpv4TimeToLiveCounter from protobuf text + FromPbText(value string) error + // FromYaml unmarshals PatternFlowIpv4TimeToLiveCounter from YAML text + FromYaml(value string) error + // FromJson unmarshals PatternFlowIpv4TimeToLiveCounter from JSON text + FromJson(value string) error + // Validate validates PatternFlowIpv4TimeToLiveCounter + Validate() error + // A stringer function + String() string + // Clones the object + Clone() (PatternFlowIpv4TimeToLiveCounter, error) + validateToAndFrom() error + validateObj(vObj *validation, set_default bool) + setDefault() + // Start returns uint32, set in PatternFlowIpv4TimeToLiveCounter. + Start() uint32 + // SetStart assigns uint32 provided by user to PatternFlowIpv4TimeToLiveCounter + SetStart(value uint32) PatternFlowIpv4TimeToLiveCounter + // HasStart checks if Start has been set in PatternFlowIpv4TimeToLiveCounter + HasStart() bool + // Step returns uint32, set in PatternFlowIpv4TimeToLiveCounter. + Step() uint32 + // SetStep assigns uint32 provided by user to PatternFlowIpv4TimeToLiveCounter + SetStep(value uint32) PatternFlowIpv4TimeToLiveCounter + // HasStep checks if Step has been set in PatternFlowIpv4TimeToLiveCounter + HasStep() bool + // Count returns uint32, set in PatternFlowIpv4TimeToLiveCounter. + Count() uint32 + // SetCount assigns uint32 provided by user to PatternFlowIpv4TimeToLiveCounter + SetCount(value uint32) PatternFlowIpv4TimeToLiveCounter + // HasCount checks if Count has been set in PatternFlowIpv4TimeToLiveCounter + HasCount() bool +} + +// description is TBD +// Start returns a uint32 +func (obj *patternFlowIpv4TimeToLiveCounter) Start() uint32 { + + return *obj.obj.Start + +} + +// description is TBD +// Start returns a uint32 +func (obj *patternFlowIpv4TimeToLiveCounter) HasStart() bool { + return obj.obj.Start != nil +} + +// description is TBD +// SetStart sets the uint32 value in the PatternFlowIpv4TimeToLiveCounter object +func (obj *patternFlowIpv4TimeToLiveCounter) SetStart(value uint32) PatternFlowIpv4TimeToLiveCounter { + + obj.obj.Start = &value + return obj +} + +// description is TBD +// Step returns a uint32 +func (obj *patternFlowIpv4TimeToLiveCounter) Step() uint32 { + + return *obj.obj.Step + +} + +// description is TBD +// Step returns a uint32 +func (obj *patternFlowIpv4TimeToLiveCounter) HasStep() bool { + return obj.obj.Step != nil +} + +// description is TBD +// SetStep sets the uint32 value in the PatternFlowIpv4TimeToLiveCounter object +func (obj *patternFlowIpv4TimeToLiveCounter) SetStep(value uint32) PatternFlowIpv4TimeToLiveCounter { + + obj.obj.Step = &value + return obj +} + +// description is TBD +// Count returns a uint32 +func (obj *patternFlowIpv4TimeToLiveCounter) Count() uint32 { + + return *obj.obj.Count + +} + +// description is TBD +// Count returns a uint32 +func (obj *patternFlowIpv4TimeToLiveCounter) HasCount() bool { + return obj.obj.Count != nil +} + +// description is TBD +// SetCount sets the uint32 value in the PatternFlowIpv4TimeToLiveCounter object +func (obj *patternFlowIpv4TimeToLiveCounter) SetCount(value uint32) PatternFlowIpv4TimeToLiveCounter { + + obj.obj.Count = &value + return obj +} + +func (obj *patternFlowIpv4TimeToLiveCounter) validateObj(vObj *validation, set_default bool) { + if set_default { + obj.setDefault() + } + + if obj.obj.Start != nil { + + if *obj.obj.Start > 255 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("0 <= PatternFlowIpv4TimeToLiveCounter.Start <= 255 but Got %d", *obj.obj.Start)) + } + + } + + if obj.obj.Step != nil { + + if *obj.obj.Step > 255 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("0 <= PatternFlowIpv4TimeToLiveCounter.Step <= 255 but Got %d", *obj.obj.Step)) + } + + } + + if obj.obj.Count != nil { + + if *obj.obj.Count > 255 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("0 <= PatternFlowIpv4TimeToLiveCounter.Count <= 255 but Got %d", *obj.obj.Count)) + } + + } + +} + +func (obj *patternFlowIpv4TimeToLiveCounter) setDefault() { + if obj.obj.Start == nil { + obj.SetStart(64) + } + if obj.obj.Step == nil { + obj.SetStep(1) + } + if obj.obj.Count == nil { + obj.SetCount(1) + } + +} + +// ***** PatternFlowIpv4TimeToLiveMetricTag ***** +type patternFlowIpv4TimeToLiveMetricTag struct { + validation + obj *otg.PatternFlowIpv4TimeToLiveMetricTag +} + +func NewPatternFlowIpv4TimeToLiveMetricTag() PatternFlowIpv4TimeToLiveMetricTag { + obj := patternFlowIpv4TimeToLiveMetricTag{obj: &otg.PatternFlowIpv4TimeToLiveMetricTag{}} + obj.setDefault() + return &obj +} + +func (obj *patternFlowIpv4TimeToLiveMetricTag) Msg() *otg.PatternFlowIpv4TimeToLiveMetricTag { + return obj.obj +} + +func (obj *patternFlowIpv4TimeToLiveMetricTag) SetMsg(msg *otg.PatternFlowIpv4TimeToLiveMetricTag) PatternFlowIpv4TimeToLiveMetricTag { + + proto.Merge(obj.obj, msg) + return obj +} + +func (obj *patternFlowIpv4TimeToLiveMetricTag) ToProto() (*otg.PatternFlowIpv4TimeToLiveMetricTag, error) { + err := obj.validateToAndFrom() + if err != nil { + return nil, err + } + return obj.Msg(), nil +} + +func (obj *patternFlowIpv4TimeToLiveMetricTag) FromProto(msg *otg.PatternFlowIpv4TimeToLiveMetricTag) (PatternFlowIpv4TimeToLiveMetricTag, error) { + newObj := obj.SetMsg(msg) + err := newObj.validateToAndFrom() + if err != nil { + return nil, err + } + return newObj, nil +} + +func (obj *patternFlowIpv4TimeToLiveMetricTag) ToPbText() (string, error) { + vErr := obj.validateToAndFrom() + if vErr != nil { + return "", vErr + } + protoMarshal, err := proto.Marshal(obj.Msg()) + if err != nil { + return "", err + } + return string(protoMarshal), nil +} + +func (obj *patternFlowIpv4TimeToLiveMetricTag) FromPbText(value string) error { + retObj := proto.Unmarshal([]byte(value), obj.Msg()) + if retObj != nil { + return retObj + } + + vErr := obj.validateToAndFrom() + if vErr != nil { + return vErr + } + return retObj +} + +func (obj *patternFlowIpv4TimeToLiveMetricTag) ToYaml() (string, error) { + vErr := obj.validateToAndFrom() + if vErr != nil { + return "", vErr + } + opts := protojson.MarshalOptions{ + UseProtoNames: true, + AllowPartial: true, + EmitUnpopulated: false, + } + data, err := opts.Marshal(obj.Msg()) + if err != nil { + return "", err + } + data, err = yaml.JSONToYAML(data) + if err != nil { + return "", err + } + return string(data), nil +} + +func (obj *patternFlowIpv4TimeToLiveMetricTag) FromYaml(value string) error { + if value == "" { + value = "{}" + } + data, err := yaml.YAMLToJSON([]byte(value)) + if err != nil { + return err + } + opts := protojson.UnmarshalOptions{ + AllowPartial: true, + DiscardUnknown: false, + } + uError := opts.Unmarshal([]byte(data), obj.Msg()) + if uError != nil { + return fmt.Errorf("unmarshal error %s", strings.Replace( + uError.Error(), "\u00a0", " ", -1)[7:]) + } + + vErr := obj.validateToAndFrom() + if vErr != nil { + return vErr + } + return nil +} + +func (obj *patternFlowIpv4TimeToLiveMetricTag) ToJson() (string, error) { + vErr := obj.validateToAndFrom() + if vErr != nil { + return "", vErr + } + opts := protojson.MarshalOptions{ + UseProtoNames: true, + AllowPartial: true, + EmitUnpopulated: false, + Indent: " ", + } + data, err := opts.Marshal(obj.Msg()) + if err != nil { + return "", err + } + return string(data), nil +} + +func (obj *patternFlowIpv4TimeToLiveMetricTag) FromJson(value string) error { + opts := protojson.UnmarshalOptions{ + AllowPartial: true, + DiscardUnknown: false, + } + if value == "" { + value = "{}" + } + uError := opts.Unmarshal([]byte(value), obj.Msg()) + if uError != nil { + return fmt.Errorf("unmarshal error %s", strings.Replace( + uError.Error(), "\u00a0", " ", -1)[7:]) + } + + err := obj.validateToAndFrom() + if err != nil { + return err + } + return nil +} + +func (obj *patternFlowIpv4TimeToLiveMetricTag) validateToAndFrom() error { + // emptyVars() + obj.validateObj(&obj.validation, true) + return obj.validationResult() +} + +func (obj *patternFlowIpv4TimeToLiveMetricTag) Validate() error { + // emptyVars() + obj.validateObj(&obj.validation, false) + return obj.validationResult() +} + +func (obj *patternFlowIpv4TimeToLiveMetricTag) String() string { + str, err := obj.ToYaml() + if err != nil { + return err.Error() + } + return str +} + +func (obj *patternFlowIpv4TimeToLiveMetricTag) Clone() (PatternFlowIpv4TimeToLiveMetricTag, error) { + vErr := obj.Validate() + if vErr != nil { + return nil, vErr + } + newObj := NewPatternFlowIpv4TimeToLiveMetricTag() + data, err := proto.Marshal(obj.Msg()) + if err != nil { + return nil, err + } + pbErr := proto.Unmarshal(data, newObj.Msg()) + if pbErr != nil { + return nil, pbErr + } + return newObj, nil +} + +// PatternFlowIpv4TimeToLiveMetricTag is metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. +type PatternFlowIpv4TimeToLiveMetricTag interface { + Validation + // Msg marshals PatternFlowIpv4TimeToLiveMetricTag to protobuf object *otg.PatternFlowIpv4TimeToLiveMetricTag + // and doesn't set defaults + Msg() *otg.PatternFlowIpv4TimeToLiveMetricTag + // SetMsg unmarshals PatternFlowIpv4TimeToLiveMetricTag from protobuf object *otg.PatternFlowIpv4TimeToLiveMetricTag + // and doesn't set defaults + SetMsg(*otg.PatternFlowIpv4TimeToLiveMetricTag) PatternFlowIpv4TimeToLiveMetricTag + // ToProto marshals PatternFlowIpv4TimeToLiveMetricTag to protobuf object *otg.PatternFlowIpv4TimeToLiveMetricTag + ToProto() (*otg.PatternFlowIpv4TimeToLiveMetricTag, error) + // ToPbText marshals PatternFlowIpv4TimeToLiveMetricTag to protobuf text + ToPbText() (string, error) + // ToYaml marshals PatternFlowIpv4TimeToLiveMetricTag to YAML text + ToYaml() (string, error) + // ToJson marshals PatternFlowIpv4TimeToLiveMetricTag to JSON text + ToJson() (string, error) + // FromProto unmarshals PatternFlowIpv4TimeToLiveMetricTag from protobuf object *otg.PatternFlowIpv4TimeToLiveMetricTag + FromProto(msg *otg.PatternFlowIpv4TimeToLiveMetricTag) (PatternFlowIpv4TimeToLiveMetricTag, error) + // FromPbText unmarshals PatternFlowIpv4TimeToLiveMetricTag from protobuf text + FromPbText(value string) error + // FromYaml unmarshals PatternFlowIpv4TimeToLiveMetricTag from YAML text + FromYaml(value string) error + // FromJson unmarshals PatternFlowIpv4TimeToLiveMetricTag from JSON text + FromJson(value string) error + // Validate validates PatternFlowIpv4TimeToLiveMetricTag + Validate() error + // A stringer function + String() string + // Clones the object + Clone() (PatternFlowIpv4TimeToLiveMetricTag, error) + validateToAndFrom() error + validateObj(vObj *validation, set_default bool) + setDefault() + // Name returns string, set in PatternFlowIpv4TimeToLiveMetricTag. + Name() string + // SetName assigns string provided by user to PatternFlowIpv4TimeToLiveMetricTag + SetName(value string) PatternFlowIpv4TimeToLiveMetricTag + // Offset returns uint32, set in PatternFlowIpv4TimeToLiveMetricTag. + Offset() uint32 + // SetOffset assigns uint32 provided by user to PatternFlowIpv4TimeToLiveMetricTag + SetOffset(value uint32) PatternFlowIpv4TimeToLiveMetricTag + // HasOffset checks if Offset has been set in PatternFlowIpv4TimeToLiveMetricTag + HasOffset() bool + // Length returns uint32, set in PatternFlowIpv4TimeToLiveMetricTag. + Length() uint32 + // SetLength assigns uint32 provided by user to PatternFlowIpv4TimeToLiveMetricTag + SetLength(value uint32) PatternFlowIpv4TimeToLiveMetricTag + // HasLength checks if Length has been set in PatternFlowIpv4TimeToLiveMetricTag + HasLength() bool +} + +// Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field +// Name returns a string +func (obj *patternFlowIpv4TimeToLiveMetricTag) Name() string { + + return *obj.obj.Name + +} + +// Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field +// SetName sets the string value in the PatternFlowIpv4TimeToLiveMetricTag object +func (obj *patternFlowIpv4TimeToLiveMetricTag) SetName(value string) PatternFlowIpv4TimeToLiveMetricTag { + + obj.obj.Name = &value + return obj +} + +// Offset in bits relative to start of corresponding header field +// Offset returns a uint32 +func (obj *patternFlowIpv4TimeToLiveMetricTag) Offset() uint32 { + + return *obj.obj.Offset + +} + +// Offset in bits relative to start of corresponding header field +// Offset returns a uint32 +func (obj *patternFlowIpv4TimeToLiveMetricTag) HasOffset() bool { + return obj.obj.Offset != nil +} + +// Offset in bits relative to start of corresponding header field +// SetOffset sets the uint32 value in the PatternFlowIpv4TimeToLiveMetricTag object +func (obj *patternFlowIpv4TimeToLiveMetricTag) SetOffset(value uint32) PatternFlowIpv4TimeToLiveMetricTag { + + obj.obj.Offset = &value + return obj +} + +// Number of bits to track for metrics starting from configured offset of corresponding header field +// Length returns a uint32 +func (obj *patternFlowIpv4TimeToLiveMetricTag) Length() uint32 { + + return *obj.obj.Length + +} + +// Number of bits to track for metrics starting from configured offset of corresponding header field +// Length returns a uint32 +func (obj *patternFlowIpv4TimeToLiveMetricTag) HasLength() bool { + return obj.obj.Length != nil +} + +// Number of bits to track for metrics starting from configured offset of corresponding header field +// SetLength sets the uint32 value in the PatternFlowIpv4TimeToLiveMetricTag object +func (obj *patternFlowIpv4TimeToLiveMetricTag) SetLength(value uint32) PatternFlowIpv4TimeToLiveMetricTag { + + obj.obj.Length = &value + return obj +} + +func (obj *patternFlowIpv4TimeToLiveMetricTag) validateObj(vObj *validation, set_default bool) { + if set_default { + obj.setDefault() + } + + // Name is required + if obj.obj.Name == nil { + vObj.validationErrors = append(vObj.validationErrors, "Name is required field on interface PatternFlowIpv4TimeToLiveMetricTag") + } + + if obj.obj.Offset != nil { + + if *obj.obj.Offset > 7 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("0 <= PatternFlowIpv4TimeToLiveMetricTag.Offset <= 7 but Got %d", *obj.obj.Offset)) + } + + } + + if obj.obj.Length != nil { + + if *obj.obj.Length < 1 || *obj.obj.Length > 8 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("1 <= PatternFlowIpv4TimeToLiveMetricTag.Length <= 8 but Got %d", *obj.obj.Length)) + } + + } + +} + +func (obj *patternFlowIpv4TimeToLiveMetricTag) setDefault() { + if obj.obj.Offset == nil { + obj.SetOffset(0) + } + if obj.obj.Length == nil { + obj.SetLength(8) + } + +} + +// ***** PatternFlowIpv4ProtocolCounter ***** +type patternFlowIpv4ProtocolCounter struct { + validation + obj *otg.PatternFlowIpv4ProtocolCounter +} + +func NewPatternFlowIpv4ProtocolCounter() PatternFlowIpv4ProtocolCounter { + obj := patternFlowIpv4ProtocolCounter{obj: &otg.PatternFlowIpv4ProtocolCounter{}} + obj.setDefault() + return &obj +} + +func (obj *patternFlowIpv4ProtocolCounter) Msg() *otg.PatternFlowIpv4ProtocolCounter { + return obj.obj +} + +func (obj *patternFlowIpv4ProtocolCounter) SetMsg(msg *otg.PatternFlowIpv4ProtocolCounter) PatternFlowIpv4ProtocolCounter { + + proto.Merge(obj.obj, msg) + return obj +} + +func (obj *patternFlowIpv4ProtocolCounter) ToProto() (*otg.PatternFlowIpv4ProtocolCounter, error) { + err := obj.validateToAndFrom() + if err != nil { + return nil, err + } + return obj.Msg(), nil +} + +func (obj *patternFlowIpv4ProtocolCounter) FromProto(msg *otg.PatternFlowIpv4ProtocolCounter) (PatternFlowIpv4ProtocolCounter, error) { + newObj := obj.SetMsg(msg) + err := newObj.validateToAndFrom() + if err != nil { + return nil, err + } + return newObj, nil +} + +func (obj *patternFlowIpv4ProtocolCounter) ToPbText() (string, error) { + vErr := obj.validateToAndFrom() + if vErr != nil { + return "", vErr + } + protoMarshal, err := proto.Marshal(obj.Msg()) + if err != nil { + return "", err + } + return string(protoMarshal), nil +} + +func (obj *patternFlowIpv4ProtocolCounter) FromPbText(value string) error { + retObj := proto.Unmarshal([]byte(value), obj.Msg()) + if retObj != nil { + return retObj + } + + vErr := obj.validateToAndFrom() + if vErr != nil { + return vErr + } + return retObj +} + +func (obj *patternFlowIpv4ProtocolCounter) ToYaml() (string, error) { + vErr := obj.validateToAndFrom() + if vErr != nil { + return "", vErr + } + opts := protojson.MarshalOptions{ + UseProtoNames: true, + AllowPartial: true, + EmitUnpopulated: false, + } + data, err := opts.Marshal(obj.Msg()) + if err != nil { + return "", err + } + data, err = yaml.JSONToYAML(data) + if err != nil { + return "", err + } + return string(data), nil +} + +func (obj *patternFlowIpv4ProtocolCounter) FromYaml(value string) error { + if value == "" { + value = "{}" + } + data, err := yaml.YAMLToJSON([]byte(value)) + if err != nil { + return err + } + opts := protojson.UnmarshalOptions{ + AllowPartial: true, + DiscardUnknown: false, + } + uError := opts.Unmarshal([]byte(data), obj.Msg()) + if uError != nil { + return fmt.Errorf("unmarshal error %s", strings.Replace( + uError.Error(), "\u00a0", " ", -1)[7:]) + } + + vErr := obj.validateToAndFrom() + if vErr != nil { + return vErr + } + return nil +} + +func (obj *patternFlowIpv4ProtocolCounter) ToJson() (string, error) { + vErr := obj.validateToAndFrom() + if vErr != nil { + return "", vErr + } + opts := protojson.MarshalOptions{ + UseProtoNames: true, + AllowPartial: true, + EmitUnpopulated: false, + Indent: " ", + } + data, err := opts.Marshal(obj.Msg()) + if err != nil { + return "", err + } + return string(data), nil +} + +func (obj *patternFlowIpv4ProtocolCounter) FromJson(value string) error { + opts := protojson.UnmarshalOptions{ + AllowPartial: true, + DiscardUnknown: false, + } + if value == "" { + value = "{}" + } + uError := opts.Unmarshal([]byte(value), obj.Msg()) + if uError != nil { + return fmt.Errorf("unmarshal error %s", strings.Replace( + uError.Error(), "\u00a0", " ", -1)[7:]) + } + + err := obj.validateToAndFrom() + if err != nil { + return err + } + return nil +} + +func (obj *patternFlowIpv4ProtocolCounter) validateToAndFrom() error { + // emptyVars() + obj.validateObj(&obj.validation, true) + return obj.validationResult() +} + +func (obj *patternFlowIpv4ProtocolCounter) Validate() error { + // emptyVars() + obj.validateObj(&obj.validation, false) + return obj.validationResult() +} + +func (obj *patternFlowIpv4ProtocolCounter) String() string { + str, err := obj.ToYaml() + if err != nil { + return err.Error() + } + return str +} + +func (obj *patternFlowIpv4ProtocolCounter) Clone() (PatternFlowIpv4ProtocolCounter, error) { + vErr := obj.Validate() + if vErr != nil { + return nil, vErr + } + newObj := NewPatternFlowIpv4ProtocolCounter() + data, err := proto.Marshal(obj.Msg()) + if err != nil { + return nil, err + } + pbErr := proto.Unmarshal(data, newObj.Msg()) + if pbErr != nil { + return nil, pbErr + } + return newObj, nil +} + +// PatternFlowIpv4ProtocolCounter is integer counter pattern +type PatternFlowIpv4ProtocolCounter interface { + Validation + // Msg marshals PatternFlowIpv4ProtocolCounter to protobuf object *otg.PatternFlowIpv4ProtocolCounter + // and doesn't set defaults + Msg() *otg.PatternFlowIpv4ProtocolCounter + // SetMsg unmarshals PatternFlowIpv4ProtocolCounter from protobuf object *otg.PatternFlowIpv4ProtocolCounter + // and doesn't set defaults + SetMsg(*otg.PatternFlowIpv4ProtocolCounter) PatternFlowIpv4ProtocolCounter + // ToProto marshals PatternFlowIpv4ProtocolCounter to protobuf object *otg.PatternFlowIpv4ProtocolCounter + ToProto() (*otg.PatternFlowIpv4ProtocolCounter, error) + // ToPbText marshals PatternFlowIpv4ProtocolCounter to protobuf text + ToPbText() (string, error) + // ToYaml marshals PatternFlowIpv4ProtocolCounter to YAML text + ToYaml() (string, error) + // ToJson marshals PatternFlowIpv4ProtocolCounter to JSON text + ToJson() (string, error) + // FromProto unmarshals PatternFlowIpv4ProtocolCounter from protobuf object *otg.PatternFlowIpv4ProtocolCounter + FromProto(msg *otg.PatternFlowIpv4ProtocolCounter) (PatternFlowIpv4ProtocolCounter, error) + // FromPbText unmarshals PatternFlowIpv4ProtocolCounter from protobuf text + FromPbText(value string) error + // FromYaml unmarshals PatternFlowIpv4ProtocolCounter from YAML text + FromYaml(value string) error + // FromJson unmarshals PatternFlowIpv4ProtocolCounter from JSON text + FromJson(value string) error + // Validate validates PatternFlowIpv4ProtocolCounter + Validate() error + // A stringer function + String() string + // Clones the object + Clone() (PatternFlowIpv4ProtocolCounter, error) + validateToAndFrom() error + validateObj(vObj *validation, set_default bool) + setDefault() + // Start returns uint32, set in PatternFlowIpv4ProtocolCounter. + Start() uint32 + // SetStart assigns uint32 provided by user to PatternFlowIpv4ProtocolCounter + SetStart(value uint32) PatternFlowIpv4ProtocolCounter + // HasStart checks if Start has been set in PatternFlowIpv4ProtocolCounter + HasStart() bool + // Step returns uint32, set in PatternFlowIpv4ProtocolCounter. + Step() uint32 + // SetStep assigns uint32 provided by user to PatternFlowIpv4ProtocolCounter + SetStep(value uint32) PatternFlowIpv4ProtocolCounter + // HasStep checks if Step has been set in PatternFlowIpv4ProtocolCounter + HasStep() bool + // Count returns uint32, set in PatternFlowIpv4ProtocolCounter. + Count() uint32 + // SetCount assigns uint32 provided by user to PatternFlowIpv4ProtocolCounter + SetCount(value uint32) PatternFlowIpv4ProtocolCounter + // HasCount checks if Count has been set in PatternFlowIpv4ProtocolCounter + HasCount() bool +} + +// description is TBD +// Start returns a uint32 +func (obj *patternFlowIpv4ProtocolCounter) Start() uint32 { + + return *obj.obj.Start + +} + +// description is TBD +// Start returns a uint32 +func (obj *patternFlowIpv4ProtocolCounter) HasStart() bool { + return obj.obj.Start != nil +} + +// description is TBD +// SetStart sets the uint32 value in the PatternFlowIpv4ProtocolCounter object +func (obj *patternFlowIpv4ProtocolCounter) SetStart(value uint32) PatternFlowIpv4ProtocolCounter { + + obj.obj.Start = &value + return obj +} + +// description is TBD +// Step returns a uint32 +func (obj *patternFlowIpv4ProtocolCounter) Step() uint32 { + + return *obj.obj.Step + +} + +// description is TBD +// Step returns a uint32 +func (obj *patternFlowIpv4ProtocolCounter) HasStep() bool { + return obj.obj.Step != nil +} + +// description is TBD +// SetStep sets the uint32 value in the PatternFlowIpv4ProtocolCounter object +func (obj *patternFlowIpv4ProtocolCounter) SetStep(value uint32) PatternFlowIpv4ProtocolCounter { + + obj.obj.Step = &value + return obj +} + +// description is TBD +// Count returns a uint32 +func (obj *patternFlowIpv4ProtocolCounter) Count() uint32 { + + return *obj.obj.Count + +} + +// description is TBD +// Count returns a uint32 +func (obj *patternFlowIpv4ProtocolCounter) HasCount() bool { + return obj.obj.Count != nil +} + +// description is TBD +// SetCount sets the uint32 value in the PatternFlowIpv4ProtocolCounter object +func (obj *patternFlowIpv4ProtocolCounter) SetCount(value uint32) PatternFlowIpv4ProtocolCounter { + + obj.obj.Count = &value + return obj +} + +func (obj *patternFlowIpv4ProtocolCounter) validateObj(vObj *validation, set_default bool) { + if set_default { + obj.setDefault() + } + + if obj.obj.Start != nil { + + if *obj.obj.Start > 255 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("0 <= PatternFlowIpv4ProtocolCounter.Start <= 255 but Got %d", *obj.obj.Start)) + } + + } + + if obj.obj.Step != nil { + + if *obj.obj.Step > 255 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("0 <= PatternFlowIpv4ProtocolCounter.Step <= 255 but Got %d", *obj.obj.Step)) + } + + } + + if obj.obj.Count != nil { + + if *obj.obj.Count > 255 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("0 <= PatternFlowIpv4ProtocolCounter.Count <= 255 but Got %d", *obj.obj.Count)) + } + + } + +} + +func (obj *patternFlowIpv4ProtocolCounter) setDefault() { + if obj.obj.Start == nil { + obj.SetStart(61) + } + if obj.obj.Step == nil { + obj.SetStep(1) + } + if obj.obj.Count == nil { + obj.SetCount(1) + } + +} + +// ***** PatternFlowIpv4ProtocolMetricTag ***** +type patternFlowIpv4ProtocolMetricTag struct { + validation + obj *otg.PatternFlowIpv4ProtocolMetricTag +} + +func NewPatternFlowIpv4ProtocolMetricTag() PatternFlowIpv4ProtocolMetricTag { + obj := patternFlowIpv4ProtocolMetricTag{obj: &otg.PatternFlowIpv4ProtocolMetricTag{}} + obj.setDefault() + return &obj +} + +func (obj *patternFlowIpv4ProtocolMetricTag) Msg() *otg.PatternFlowIpv4ProtocolMetricTag { + return obj.obj +} + +func (obj *patternFlowIpv4ProtocolMetricTag) SetMsg(msg *otg.PatternFlowIpv4ProtocolMetricTag) PatternFlowIpv4ProtocolMetricTag { + + proto.Merge(obj.obj, msg) + return obj +} + +func (obj *patternFlowIpv4ProtocolMetricTag) ToProto() (*otg.PatternFlowIpv4ProtocolMetricTag, error) { + err := obj.validateToAndFrom() + if err != nil { + return nil, err + } + return obj.Msg(), nil +} + +func (obj *patternFlowIpv4ProtocolMetricTag) FromProto(msg *otg.PatternFlowIpv4ProtocolMetricTag) (PatternFlowIpv4ProtocolMetricTag, error) { + newObj := obj.SetMsg(msg) + err := newObj.validateToAndFrom() + if err != nil { + return nil, err + } + return newObj, nil +} + +func (obj *patternFlowIpv4ProtocolMetricTag) ToPbText() (string, error) { + vErr := obj.validateToAndFrom() + if vErr != nil { + return "", vErr + } + protoMarshal, err := proto.Marshal(obj.Msg()) + if err != nil { + return "", err + } + return string(protoMarshal), nil +} + +func (obj *patternFlowIpv4ProtocolMetricTag) FromPbText(value string) error { + retObj := proto.Unmarshal([]byte(value), obj.Msg()) + if retObj != nil { + return retObj + } + + vErr := obj.validateToAndFrom() + if vErr != nil { + return vErr + } + return retObj +} + +func (obj *patternFlowIpv4ProtocolMetricTag) ToYaml() (string, error) { + vErr := obj.validateToAndFrom() + if vErr != nil { + return "", vErr + } + opts := protojson.MarshalOptions{ + UseProtoNames: true, + AllowPartial: true, + EmitUnpopulated: false, + } + data, err := opts.Marshal(obj.Msg()) + if err != nil { + return "", err + } + data, err = yaml.JSONToYAML(data) + if err != nil { + return "", err + } + return string(data), nil +} + +func (obj *patternFlowIpv4ProtocolMetricTag) FromYaml(value string) error { + if value == "" { + value = "{}" + } + data, err := yaml.YAMLToJSON([]byte(value)) + if err != nil { + return err + } + opts := protojson.UnmarshalOptions{ + AllowPartial: true, + DiscardUnknown: false, + } + uError := opts.Unmarshal([]byte(data), obj.Msg()) + if uError != nil { + return fmt.Errorf("unmarshal error %s", strings.Replace( + uError.Error(), "\u00a0", " ", -1)[7:]) + } + + vErr := obj.validateToAndFrom() + if vErr != nil { + return vErr + } + return nil +} + +func (obj *patternFlowIpv4ProtocolMetricTag) ToJson() (string, error) { + vErr := obj.validateToAndFrom() + if vErr != nil { + return "", vErr + } + opts := protojson.MarshalOptions{ + UseProtoNames: true, + AllowPartial: true, + EmitUnpopulated: false, + Indent: " ", + } + data, err := opts.Marshal(obj.Msg()) + if err != nil { + return "", err + } + return string(data), nil +} + +func (obj *patternFlowIpv4ProtocolMetricTag) FromJson(value string) error { + opts := protojson.UnmarshalOptions{ + AllowPartial: true, + DiscardUnknown: false, + } + if value == "" { + value = "{}" + } + uError := opts.Unmarshal([]byte(value), obj.Msg()) + if uError != nil { + return fmt.Errorf("unmarshal error %s", strings.Replace( + uError.Error(), "\u00a0", " ", -1)[7:]) + } + + err := obj.validateToAndFrom() + if err != nil { + return err + } + return nil +} + +func (obj *patternFlowIpv4ProtocolMetricTag) validateToAndFrom() error { + // emptyVars() + obj.validateObj(&obj.validation, true) + return obj.validationResult() +} + +func (obj *patternFlowIpv4ProtocolMetricTag) Validate() error { + // emptyVars() + obj.validateObj(&obj.validation, false) + return obj.validationResult() +} + +func (obj *patternFlowIpv4ProtocolMetricTag) String() string { + str, err := obj.ToYaml() + if err != nil { + return err.Error() + } + return str +} + +func (obj *patternFlowIpv4ProtocolMetricTag) Clone() (PatternFlowIpv4ProtocolMetricTag, error) { + vErr := obj.Validate() + if vErr != nil { + return nil, vErr + } + newObj := NewPatternFlowIpv4ProtocolMetricTag() + data, err := proto.Marshal(obj.Msg()) + if err != nil { + return nil, err + } + pbErr := proto.Unmarshal(data, newObj.Msg()) + if pbErr != nil { + return nil, pbErr + } + return newObj, nil +} + +// PatternFlowIpv4ProtocolMetricTag is metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. +type PatternFlowIpv4ProtocolMetricTag interface { + Validation + // Msg marshals PatternFlowIpv4ProtocolMetricTag to protobuf object *otg.PatternFlowIpv4ProtocolMetricTag + // and doesn't set defaults + Msg() *otg.PatternFlowIpv4ProtocolMetricTag + // SetMsg unmarshals PatternFlowIpv4ProtocolMetricTag from protobuf object *otg.PatternFlowIpv4ProtocolMetricTag + // and doesn't set defaults + SetMsg(*otg.PatternFlowIpv4ProtocolMetricTag) PatternFlowIpv4ProtocolMetricTag + // ToProto marshals PatternFlowIpv4ProtocolMetricTag to protobuf object *otg.PatternFlowIpv4ProtocolMetricTag + ToProto() (*otg.PatternFlowIpv4ProtocolMetricTag, error) + // ToPbText marshals PatternFlowIpv4ProtocolMetricTag to protobuf text + ToPbText() (string, error) + // ToYaml marshals PatternFlowIpv4ProtocolMetricTag to YAML text + ToYaml() (string, error) + // ToJson marshals PatternFlowIpv4ProtocolMetricTag to JSON text + ToJson() (string, error) + // FromProto unmarshals PatternFlowIpv4ProtocolMetricTag from protobuf object *otg.PatternFlowIpv4ProtocolMetricTag + FromProto(msg *otg.PatternFlowIpv4ProtocolMetricTag) (PatternFlowIpv4ProtocolMetricTag, error) + // FromPbText unmarshals PatternFlowIpv4ProtocolMetricTag from protobuf text + FromPbText(value string) error + // FromYaml unmarshals PatternFlowIpv4ProtocolMetricTag from YAML text + FromYaml(value string) error + // FromJson unmarshals PatternFlowIpv4ProtocolMetricTag from JSON text + FromJson(value string) error + // Validate validates PatternFlowIpv4ProtocolMetricTag + Validate() error + // A stringer function + String() string + // Clones the object + Clone() (PatternFlowIpv4ProtocolMetricTag, error) + validateToAndFrom() error + validateObj(vObj *validation, set_default bool) + setDefault() + // Name returns string, set in PatternFlowIpv4ProtocolMetricTag. + Name() string + // SetName assigns string provided by user to PatternFlowIpv4ProtocolMetricTag + SetName(value string) PatternFlowIpv4ProtocolMetricTag + // Offset returns uint32, set in PatternFlowIpv4ProtocolMetricTag. + Offset() uint32 + // SetOffset assigns uint32 provided by user to PatternFlowIpv4ProtocolMetricTag + SetOffset(value uint32) PatternFlowIpv4ProtocolMetricTag + // HasOffset checks if Offset has been set in PatternFlowIpv4ProtocolMetricTag + HasOffset() bool + // Length returns uint32, set in PatternFlowIpv4ProtocolMetricTag. + Length() uint32 + // SetLength assigns uint32 provided by user to PatternFlowIpv4ProtocolMetricTag + SetLength(value uint32) PatternFlowIpv4ProtocolMetricTag + // HasLength checks if Length has been set in PatternFlowIpv4ProtocolMetricTag + HasLength() bool +} + +// Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field +// Name returns a string +func (obj *patternFlowIpv4ProtocolMetricTag) Name() string { + + return *obj.obj.Name + +} + +// Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field +// SetName sets the string value in the PatternFlowIpv4ProtocolMetricTag object +func (obj *patternFlowIpv4ProtocolMetricTag) SetName(value string) PatternFlowIpv4ProtocolMetricTag { + + obj.obj.Name = &value + return obj +} + +// Offset in bits relative to start of corresponding header field +// Offset returns a uint32 +func (obj *patternFlowIpv4ProtocolMetricTag) Offset() uint32 { + + return *obj.obj.Offset + +} + +// Offset in bits relative to start of corresponding header field +// Offset returns a uint32 +func (obj *patternFlowIpv4ProtocolMetricTag) HasOffset() bool { + return obj.obj.Offset != nil +} + +// Offset in bits relative to start of corresponding header field +// SetOffset sets the uint32 value in the PatternFlowIpv4ProtocolMetricTag object +func (obj *patternFlowIpv4ProtocolMetricTag) SetOffset(value uint32) PatternFlowIpv4ProtocolMetricTag { + + obj.obj.Offset = &value + return obj +} + +// Number of bits to track for metrics starting from configured offset of corresponding header field +// Length returns a uint32 +func (obj *patternFlowIpv4ProtocolMetricTag) Length() uint32 { + + return *obj.obj.Length + +} + +// Number of bits to track for metrics starting from configured offset of corresponding header field +// Length returns a uint32 +func (obj *patternFlowIpv4ProtocolMetricTag) HasLength() bool { + return obj.obj.Length != nil +} + +// Number of bits to track for metrics starting from configured offset of corresponding header field +// SetLength sets the uint32 value in the PatternFlowIpv4ProtocolMetricTag object +func (obj *patternFlowIpv4ProtocolMetricTag) SetLength(value uint32) PatternFlowIpv4ProtocolMetricTag { + + obj.obj.Length = &value + return obj +} + +func (obj *patternFlowIpv4ProtocolMetricTag) validateObj(vObj *validation, set_default bool) { + if set_default { + obj.setDefault() + } + + // Name is required + if obj.obj.Name == nil { + vObj.validationErrors = append(vObj.validationErrors, "Name is required field on interface PatternFlowIpv4ProtocolMetricTag") + } + + if obj.obj.Offset != nil { + + if *obj.obj.Offset > 7 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("0 <= PatternFlowIpv4ProtocolMetricTag.Offset <= 7 but Got %d", *obj.obj.Offset)) + } + + } + + if obj.obj.Length != nil { + + if *obj.obj.Length < 1 || *obj.obj.Length > 8 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("1 <= PatternFlowIpv4ProtocolMetricTag.Length <= 8 but Got %d", *obj.obj.Length)) + } + + } + +} + +func (obj *patternFlowIpv4ProtocolMetricTag) setDefault() { + if obj.obj.Offset == nil { + obj.SetOffset(0) + } + if obj.obj.Length == nil { + obj.SetLength(8) + } + +} + +// ***** PatternFlowIpv4SrcCounter ***** +type patternFlowIpv4SrcCounter struct { + validation + obj *otg.PatternFlowIpv4SrcCounter +} + +func NewPatternFlowIpv4SrcCounter() PatternFlowIpv4SrcCounter { + obj := patternFlowIpv4SrcCounter{obj: &otg.PatternFlowIpv4SrcCounter{}} + obj.setDefault() + return &obj +} + +func (obj *patternFlowIpv4SrcCounter) Msg() *otg.PatternFlowIpv4SrcCounter { + return obj.obj +} + +func (obj *patternFlowIpv4SrcCounter) SetMsg(msg *otg.PatternFlowIpv4SrcCounter) PatternFlowIpv4SrcCounter { + + proto.Merge(obj.obj, msg) + return obj +} + +func (obj *patternFlowIpv4SrcCounter) ToProto() (*otg.PatternFlowIpv4SrcCounter, error) { + err := obj.validateToAndFrom() + if err != nil { + return nil, err + } + return obj.Msg(), nil +} + +func (obj *patternFlowIpv4SrcCounter) FromProto(msg *otg.PatternFlowIpv4SrcCounter) (PatternFlowIpv4SrcCounter, error) { + newObj := obj.SetMsg(msg) + err := newObj.validateToAndFrom() + if err != nil { + return nil, err + } + return newObj, nil +} + +func (obj *patternFlowIpv4SrcCounter) ToPbText() (string, error) { + vErr := obj.validateToAndFrom() + if vErr != nil { + return "", vErr + } + protoMarshal, err := proto.Marshal(obj.Msg()) + if err != nil { + return "", err + } + return string(protoMarshal), nil +} + +func (obj *patternFlowIpv4SrcCounter) FromPbText(value string) error { + retObj := proto.Unmarshal([]byte(value), obj.Msg()) + if retObj != nil { + return retObj + } + + vErr := obj.validateToAndFrom() + if vErr != nil { + return vErr + } + return retObj +} + +func (obj *patternFlowIpv4SrcCounter) ToYaml() (string, error) { + vErr := obj.validateToAndFrom() + if vErr != nil { + return "", vErr + } + opts := protojson.MarshalOptions{ + UseProtoNames: true, + AllowPartial: true, + EmitUnpopulated: false, + } + data, err := opts.Marshal(obj.Msg()) + if err != nil { + return "", err + } + data, err = yaml.JSONToYAML(data) + if err != nil { + return "", err + } + return string(data), nil +} + +func (obj *patternFlowIpv4SrcCounter) FromYaml(value string) error { + if value == "" { + value = "{}" + } + data, err := yaml.YAMLToJSON([]byte(value)) + if err != nil { + return err + } + opts := protojson.UnmarshalOptions{ + AllowPartial: true, + DiscardUnknown: false, + } + uError := opts.Unmarshal([]byte(data), obj.Msg()) + if uError != nil { + return fmt.Errorf("unmarshal error %s", strings.Replace( + uError.Error(), "\u00a0", " ", -1)[7:]) + } + + vErr := obj.validateToAndFrom() + if vErr != nil { + return vErr + } + return nil +} + +func (obj *patternFlowIpv4SrcCounter) ToJson() (string, error) { + vErr := obj.validateToAndFrom() + if vErr != nil { + return "", vErr + } + opts := protojson.MarshalOptions{ + UseProtoNames: true, + AllowPartial: true, + EmitUnpopulated: false, + Indent: " ", + } + data, err := opts.Marshal(obj.Msg()) + if err != nil { + return "", err + } + return string(data), nil +} + +func (obj *patternFlowIpv4SrcCounter) FromJson(value string) error { + opts := protojson.UnmarshalOptions{ + AllowPartial: true, + DiscardUnknown: false, + } + if value == "" { + value = "{}" + } + uError := opts.Unmarshal([]byte(value), obj.Msg()) + if uError != nil { + return fmt.Errorf("unmarshal error %s", strings.Replace( + uError.Error(), "\u00a0", " ", -1)[7:]) + } + + err := obj.validateToAndFrom() + if err != nil { + return err + } + return nil +} + +func (obj *patternFlowIpv4SrcCounter) validateToAndFrom() error { + // emptyVars() + obj.validateObj(&obj.validation, true) + return obj.validationResult() +} + +func (obj *patternFlowIpv4SrcCounter) Validate() error { + // emptyVars() + obj.validateObj(&obj.validation, false) + return obj.validationResult() +} + +func (obj *patternFlowIpv4SrcCounter) String() string { + str, err := obj.ToYaml() + if err != nil { + return err.Error() + } + return str +} + +func (obj *patternFlowIpv4SrcCounter) Clone() (PatternFlowIpv4SrcCounter, error) { + vErr := obj.Validate() + if vErr != nil { + return nil, vErr + } + newObj := NewPatternFlowIpv4SrcCounter() + data, err := proto.Marshal(obj.Msg()) + if err != nil { + return nil, err + } + pbErr := proto.Unmarshal(data, newObj.Msg()) + if pbErr != nil { + return nil, pbErr + } + return newObj, nil +} + +// PatternFlowIpv4SrcCounter is ipv4 counter pattern +type PatternFlowIpv4SrcCounter interface { + Validation + // Msg marshals PatternFlowIpv4SrcCounter to protobuf object *otg.PatternFlowIpv4SrcCounter + // and doesn't set defaults + Msg() *otg.PatternFlowIpv4SrcCounter + // SetMsg unmarshals PatternFlowIpv4SrcCounter from protobuf object *otg.PatternFlowIpv4SrcCounter + // and doesn't set defaults + SetMsg(*otg.PatternFlowIpv4SrcCounter) PatternFlowIpv4SrcCounter + // ToProto marshals PatternFlowIpv4SrcCounter to protobuf object *otg.PatternFlowIpv4SrcCounter + ToProto() (*otg.PatternFlowIpv4SrcCounter, error) + // ToPbText marshals PatternFlowIpv4SrcCounter to protobuf text + ToPbText() (string, error) + // ToYaml marshals PatternFlowIpv4SrcCounter to YAML text + ToYaml() (string, error) + // ToJson marshals PatternFlowIpv4SrcCounter to JSON text + ToJson() (string, error) + // FromProto unmarshals PatternFlowIpv4SrcCounter from protobuf object *otg.PatternFlowIpv4SrcCounter + FromProto(msg *otg.PatternFlowIpv4SrcCounter) (PatternFlowIpv4SrcCounter, error) + // FromPbText unmarshals PatternFlowIpv4SrcCounter from protobuf text + FromPbText(value string) error + // FromYaml unmarshals PatternFlowIpv4SrcCounter from YAML text + FromYaml(value string) error + // FromJson unmarshals PatternFlowIpv4SrcCounter from JSON text + FromJson(value string) error + // Validate validates PatternFlowIpv4SrcCounter + Validate() error + // A stringer function + String() string + // Clones the object + Clone() (PatternFlowIpv4SrcCounter, error) + validateToAndFrom() error + validateObj(vObj *validation, set_default bool) + setDefault() + // Start returns string, set in PatternFlowIpv4SrcCounter. + Start() string + // SetStart assigns string provided by user to PatternFlowIpv4SrcCounter + SetStart(value string) PatternFlowIpv4SrcCounter + // HasStart checks if Start has been set in PatternFlowIpv4SrcCounter + HasStart() bool + // Step returns string, set in PatternFlowIpv4SrcCounter. + Step() string + // SetStep assigns string provided by user to PatternFlowIpv4SrcCounter + SetStep(value string) PatternFlowIpv4SrcCounter + // HasStep checks if Step has been set in PatternFlowIpv4SrcCounter + HasStep() bool + // Count returns uint32, set in PatternFlowIpv4SrcCounter. + Count() uint32 + // SetCount assigns uint32 provided by user to PatternFlowIpv4SrcCounter + SetCount(value uint32) PatternFlowIpv4SrcCounter + // HasCount checks if Count has been set in PatternFlowIpv4SrcCounter + HasCount() bool +} + +// description is TBD +// Start returns a string +func (obj *patternFlowIpv4SrcCounter) Start() string { + + return *obj.obj.Start + +} + +// description is TBD +// Start returns a string +func (obj *patternFlowIpv4SrcCounter) HasStart() bool { + return obj.obj.Start != nil +} + +// description is TBD +// SetStart sets the string value in the PatternFlowIpv4SrcCounter object +func (obj *patternFlowIpv4SrcCounter) SetStart(value string) PatternFlowIpv4SrcCounter { + + obj.obj.Start = &value + return obj +} + +// description is TBD +// Step returns a string +func (obj *patternFlowIpv4SrcCounter) Step() string { + + return *obj.obj.Step + +} + +// description is TBD +// Step returns a string +func (obj *patternFlowIpv4SrcCounter) HasStep() bool { + return obj.obj.Step != nil +} + +// description is TBD +// SetStep sets the string value in the PatternFlowIpv4SrcCounter object +func (obj *patternFlowIpv4SrcCounter) SetStep(value string) PatternFlowIpv4SrcCounter { + + obj.obj.Step = &value + return obj +} + +// description is TBD +// Count returns a uint32 +func (obj *patternFlowIpv4SrcCounter) Count() uint32 { + + return *obj.obj.Count + +} + +// description is TBD +// Count returns a uint32 +func (obj *patternFlowIpv4SrcCounter) HasCount() bool { + return obj.obj.Count != nil +} + +// description is TBD +// SetCount sets the uint32 value in the PatternFlowIpv4SrcCounter object +func (obj *patternFlowIpv4SrcCounter) SetCount(value uint32) PatternFlowIpv4SrcCounter { + + obj.obj.Count = &value + return obj +} + +func (obj *patternFlowIpv4SrcCounter) validateObj(vObj *validation, set_default bool) { + if set_default { + obj.setDefault() + } + + if obj.obj.Start != nil { + + err := obj.validateIpv4(obj.Start()) + if err != nil { + vObj.validationErrors = append(vObj.validationErrors, fmt.Sprintf("%s %s", err.Error(), "on PatternFlowIpv4SrcCounter.Start")) + } + + } + + if obj.obj.Step != nil { + + err := obj.validateIpv4(obj.Step()) + if err != nil { + vObj.validationErrors = append(vObj.validationErrors, fmt.Sprintf("%s %s", err.Error(), "on PatternFlowIpv4SrcCounter.Step")) + } + + } + +} + +func (obj *patternFlowIpv4SrcCounter) setDefault() { + if obj.obj.Start == nil { + obj.SetStart("0.0.0.0") + } + if obj.obj.Step == nil { + obj.SetStep("0.0.0.1") + } + if obj.obj.Count == nil { + obj.SetCount(1) + } + +} + +// ***** PatternFlowIpv4SrcMetricTag ***** +type patternFlowIpv4SrcMetricTag struct { + validation + obj *otg.PatternFlowIpv4SrcMetricTag +} + +func NewPatternFlowIpv4SrcMetricTag() PatternFlowIpv4SrcMetricTag { + obj := patternFlowIpv4SrcMetricTag{obj: &otg.PatternFlowIpv4SrcMetricTag{}} + obj.setDefault() + return &obj +} + +func (obj *patternFlowIpv4SrcMetricTag) Msg() *otg.PatternFlowIpv4SrcMetricTag { + return obj.obj +} + +func (obj *patternFlowIpv4SrcMetricTag) SetMsg(msg *otg.PatternFlowIpv4SrcMetricTag) PatternFlowIpv4SrcMetricTag { + + proto.Merge(obj.obj, msg) + return obj +} + +func (obj *patternFlowIpv4SrcMetricTag) ToProto() (*otg.PatternFlowIpv4SrcMetricTag, error) { + err := obj.validateToAndFrom() + if err != nil { + return nil, err + } + return obj.Msg(), nil +} + +func (obj *patternFlowIpv4SrcMetricTag) FromProto(msg *otg.PatternFlowIpv4SrcMetricTag) (PatternFlowIpv4SrcMetricTag, error) { + newObj := obj.SetMsg(msg) + err := newObj.validateToAndFrom() + if err != nil { + return nil, err + } + return newObj, nil +} + +func (obj *patternFlowIpv4SrcMetricTag) ToPbText() (string, error) { + vErr := obj.validateToAndFrom() + if vErr != nil { + return "", vErr + } + protoMarshal, err := proto.Marshal(obj.Msg()) + if err != nil { + return "", err + } + return string(protoMarshal), nil +} + +func (obj *patternFlowIpv4SrcMetricTag) FromPbText(value string) error { + retObj := proto.Unmarshal([]byte(value), obj.Msg()) + if retObj != nil { + return retObj + } + + vErr := obj.validateToAndFrom() + if vErr != nil { + return vErr + } + return retObj +} + +func (obj *patternFlowIpv4SrcMetricTag) ToYaml() (string, error) { + vErr := obj.validateToAndFrom() + if vErr != nil { + return "", vErr + } + opts := protojson.MarshalOptions{ + UseProtoNames: true, + AllowPartial: true, + EmitUnpopulated: false, + } + data, err := opts.Marshal(obj.Msg()) + if err != nil { + return "", err + } + data, err = yaml.JSONToYAML(data) + if err != nil { + return "", err + } + return string(data), nil +} + +func (obj *patternFlowIpv4SrcMetricTag) FromYaml(value string) error { + if value == "" { + value = "{}" + } + data, err := yaml.YAMLToJSON([]byte(value)) + if err != nil { + return err + } + opts := protojson.UnmarshalOptions{ + AllowPartial: true, + DiscardUnknown: false, + } + uError := opts.Unmarshal([]byte(data), obj.Msg()) + if uError != nil { + return fmt.Errorf("unmarshal error %s", strings.Replace( + uError.Error(), "\u00a0", " ", -1)[7:]) + } + + vErr := obj.validateToAndFrom() + if vErr != nil { + return vErr + } + return nil +} + +func (obj *patternFlowIpv4SrcMetricTag) ToJson() (string, error) { + vErr := obj.validateToAndFrom() + if vErr != nil { + return "", vErr + } + opts := protojson.MarshalOptions{ + UseProtoNames: true, + AllowPartial: true, + EmitUnpopulated: false, + Indent: " ", + } + data, err := opts.Marshal(obj.Msg()) + if err != nil { + return "", err + } + return string(data), nil +} + +func (obj *patternFlowIpv4SrcMetricTag) FromJson(value string) error { + opts := protojson.UnmarshalOptions{ + AllowPartial: true, + DiscardUnknown: false, + } + if value == "" { + value = "{}" + } + uError := opts.Unmarshal([]byte(value), obj.Msg()) + if uError != nil { + return fmt.Errorf("unmarshal error %s", strings.Replace( + uError.Error(), "\u00a0", " ", -1)[7:]) + } + + err := obj.validateToAndFrom() + if err != nil { + return err + } + return nil +} + +func (obj *patternFlowIpv4SrcMetricTag) validateToAndFrom() error { + // emptyVars() + obj.validateObj(&obj.validation, true) + return obj.validationResult() +} + +func (obj *patternFlowIpv4SrcMetricTag) Validate() error { + // emptyVars() + obj.validateObj(&obj.validation, false) + return obj.validationResult() +} + +func (obj *patternFlowIpv4SrcMetricTag) String() string { + str, err := obj.ToYaml() + if err != nil { + return err.Error() + } + return str +} + +func (obj *patternFlowIpv4SrcMetricTag) Clone() (PatternFlowIpv4SrcMetricTag, error) { + vErr := obj.Validate() + if vErr != nil { + return nil, vErr + } + newObj := NewPatternFlowIpv4SrcMetricTag() + data, err := proto.Marshal(obj.Msg()) + if err != nil { + return nil, err + } + pbErr := proto.Unmarshal(data, newObj.Msg()) + if pbErr != nil { + return nil, pbErr + } + return newObj, nil +} + +// PatternFlowIpv4SrcMetricTag is metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. +type PatternFlowIpv4SrcMetricTag interface { + Validation + // Msg marshals PatternFlowIpv4SrcMetricTag to protobuf object *otg.PatternFlowIpv4SrcMetricTag + // and doesn't set defaults + Msg() *otg.PatternFlowIpv4SrcMetricTag + // SetMsg unmarshals PatternFlowIpv4SrcMetricTag from protobuf object *otg.PatternFlowIpv4SrcMetricTag + // and doesn't set defaults + SetMsg(*otg.PatternFlowIpv4SrcMetricTag) PatternFlowIpv4SrcMetricTag + // ToProto marshals PatternFlowIpv4SrcMetricTag to protobuf object *otg.PatternFlowIpv4SrcMetricTag + ToProto() (*otg.PatternFlowIpv4SrcMetricTag, error) + // ToPbText marshals PatternFlowIpv4SrcMetricTag to protobuf text + ToPbText() (string, error) + // ToYaml marshals PatternFlowIpv4SrcMetricTag to YAML text + ToYaml() (string, error) + // ToJson marshals PatternFlowIpv4SrcMetricTag to JSON text + ToJson() (string, error) + // FromProto unmarshals PatternFlowIpv4SrcMetricTag from protobuf object *otg.PatternFlowIpv4SrcMetricTag + FromProto(msg *otg.PatternFlowIpv4SrcMetricTag) (PatternFlowIpv4SrcMetricTag, error) + // FromPbText unmarshals PatternFlowIpv4SrcMetricTag from protobuf text + FromPbText(value string) error + // FromYaml unmarshals PatternFlowIpv4SrcMetricTag from YAML text + FromYaml(value string) error + // FromJson unmarshals PatternFlowIpv4SrcMetricTag from JSON text + FromJson(value string) error + // Validate validates PatternFlowIpv4SrcMetricTag + Validate() error + // A stringer function + String() string + // Clones the object + Clone() (PatternFlowIpv4SrcMetricTag, error) + validateToAndFrom() error + validateObj(vObj *validation, set_default bool) + setDefault() + // Name returns string, set in PatternFlowIpv4SrcMetricTag. + Name() string + // SetName assigns string provided by user to PatternFlowIpv4SrcMetricTag + SetName(value string) PatternFlowIpv4SrcMetricTag + // Offset returns uint32, set in PatternFlowIpv4SrcMetricTag. + Offset() uint32 + // SetOffset assigns uint32 provided by user to PatternFlowIpv4SrcMetricTag + SetOffset(value uint32) PatternFlowIpv4SrcMetricTag + // HasOffset checks if Offset has been set in PatternFlowIpv4SrcMetricTag + HasOffset() bool + // Length returns uint32, set in PatternFlowIpv4SrcMetricTag. + Length() uint32 + // SetLength assigns uint32 provided by user to PatternFlowIpv4SrcMetricTag + SetLength(value uint32) PatternFlowIpv4SrcMetricTag + // HasLength checks if Length has been set in PatternFlowIpv4SrcMetricTag + HasLength() bool +} + +// Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field +// Name returns a string +func (obj *patternFlowIpv4SrcMetricTag) Name() string { + + return *obj.obj.Name + +} + +// Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field +// SetName sets the string value in the PatternFlowIpv4SrcMetricTag object +func (obj *patternFlowIpv4SrcMetricTag) SetName(value string) PatternFlowIpv4SrcMetricTag { + + obj.obj.Name = &value + return obj +} + +// Offset in bits relative to start of corresponding header field +// Offset returns a uint32 +func (obj *patternFlowIpv4SrcMetricTag) Offset() uint32 { + + return *obj.obj.Offset + +} + +// Offset in bits relative to start of corresponding header field +// Offset returns a uint32 +func (obj *patternFlowIpv4SrcMetricTag) HasOffset() bool { + return obj.obj.Offset != nil +} + +// Offset in bits relative to start of corresponding header field +// SetOffset sets the uint32 value in the PatternFlowIpv4SrcMetricTag object +func (obj *patternFlowIpv4SrcMetricTag) SetOffset(value uint32) PatternFlowIpv4SrcMetricTag { + + obj.obj.Offset = &value + return obj +} + +// Number of bits to track for metrics starting from configured offset of corresponding header field +// Length returns a uint32 +func (obj *patternFlowIpv4SrcMetricTag) Length() uint32 { + + return *obj.obj.Length + +} + +// Number of bits to track for metrics starting from configured offset of corresponding header field +// Length returns a uint32 +func (obj *patternFlowIpv4SrcMetricTag) HasLength() bool { + return obj.obj.Length != nil +} + +// Number of bits to track for metrics starting from configured offset of corresponding header field +// SetLength sets the uint32 value in the PatternFlowIpv4SrcMetricTag object +func (obj *patternFlowIpv4SrcMetricTag) SetLength(value uint32) PatternFlowIpv4SrcMetricTag { + + obj.obj.Length = &value + return obj +} + +func (obj *patternFlowIpv4SrcMetricTag) validateObj(vObj *validation, set_default bool) { + if set_default { + obj.setDefault() + } + + // Name is required + if obj.obj.Name == nil { + vObj.validationErrors = append(vObj.validationErrors, "Name is required field on interface PatternFlowIpv4SrcMetricTag") + } + + if obj.obj.Offset != nil { + + if *obj.obj.Offset > 31 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("0 <= PatternFlowIpv4SrcMetricTag.Offset <= 31 but Got %d", *obj.obj.Offset)) + } + + } + + if obj.obj.Length != nil { + + if *obj.obj.Length < 1 || *obj.obj.Length > 32 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("1 <= PatternFlowIpv4SrcMetricTag.Length <= 32 but Got %d", *obj.obj.Length)) + } + + } + +} + +func (obj *patternFlowIpv4SrcMetricTag) setDefault() { + if obj.obj.Offset == nil { + obj.SetOffset(0) + } + if obj.obj.Length == nil { + obj.SetLength(32) + } + +} + +// ***** PatternFlowIpv4DstCounter ***** +type patternFlowIpv4DstCounter struct { + validation + obj *otg.PatternFlowIpv4DstCounter +} + +func NewPatternFlowIpv4DstCounter() PatternFlowIpv4DstCounter { + obj := patternFlowIpv4DstCounter{obj: &otg.PatternFlowIpv4DstCounter{}} + obj.setDefault() + return &obj +} + +func (obj *patternFlowIpv4DstCounter) Msg() *otg.PatternFlowIpv4DstCounter { + return obj.obj +} + +func (obj *patternFlowIpv4DstCounter) SetMsg(msg *otg.PatternFlowIpv4DstCounter) PatternFlowIpv4DstCounter { + + proto.Merge(obj.obj, msg) + return obj +} + +func (obj *patternFlowIpv4DstCounter) ToProto() (*otg.PatternFlowIpv4DstCounter, error) { + err := obj.validateToAndFrom() + if err != nil { + return nil, err + } + return obj.Msg(), nil +} + +func (obj *patternFlowIpv4DstCounter) FromProto(msg *otg.PatternFlowIpv4DstCounter) (PatternFlowIpv4DstCounter, error) { + newObj := obj.SetMsg(msg) + err := newObj.validateToAndFrom() + if err != nil { + return nil, err + } + return newObj, nil +} + +func (obj *patternFlowIpv4DstCounter) ToPbText() (string, error) { + vErr := obj.validateToAndFrom() + if vErr != nil { + return "", vErr + } + protoMarshal, err := proto.Marshal(obj.Msg()) + if err != nil { + return "", err + } + return string(protoMarshal), nil +} + +func (obj *patternFlowIpv4DstCounter) FromPbText(value string) error { + retObj := proto.Unmarshal([]byte(value), obj.Msg()) + if retObj != nil { + return retObj + } + + vErr := obj.validateToAndFrom() + if vErr != nil { + return vErr + } + return retObj +} + +func (obj *patternFlowIpv4DstCounter) ToYaml() (string, error) { + vErr := obj.validateToAndFrom() + if vErr != nil { + return "", vErr + } + opts := protojson.MarshalOptions{ + UseProtoNames: true, + AllowPartial: true, + EmitUnpopulated: false, + } + data, err := opts.Marshal(obj.Msg()) + if err != nil { + return "", err + } + data, err = yaml.JSONToYAML(data) + if err != nil { + return "", err + } + return string(data), nil +} + +func (obj *patternFlowIpv4DstCounter) FromYaml(value string) error { + if value == "" { + value = "{}" + } + data, err := yaml.YAMLToJSON([]byte(value)) + if err != nil { + return err + } + opts := protojson.UnmarshalOptions{ + AllowPartial: true, + DiscardUnknown: false, + } + uError := opts.Unmarshal([]byte(data), obj.Msg()) + if uError != nil { + return fmt.Errorf("unmarshal error %s", strings.Replace( + uError.Error(), "\u00a0", " ", -1)[7:]) + } + + vErr := obj.validateToAndFrom() + if vErr != nil { + return vErr + } + return nil +} + +func (obj *patternFlowIpv4DstCounter) ToJson() (string, error) { + vErr := obj.validateToAndFrom() + if vErr != nil { + return "", vErr + } + opts := protojson.MarshalOptions{ + UseProtoNames: true, + AllowPartial: true, + EmitUnpopulated: false, + Indent: " ", + } + data, err := opts.Marshal(obj.Msg()) + if err != nil { + return "", err + } + return string(data), nil +} + +func (obj *patternFlowIpv4DstCounter) FromJson(value string) error { + opts := protojson.UnmarshalOptions{ + AllowPartial: true, + DiscardUnknown: false, + } + if value == "" { + value = "{}" + } + uError := opts.Unmarshal([]byte(value), obj.Msg()) + if uError != nil { + return fmt.Errorf("unmarshal error %s", strings.Replace( + uError.Error(), "\u00a0", " ", -1)[7:]) + } + + err := obj.validateToAndFrom() + if err != nil { + return err + } + return nil +} + +func (obj *patternFlowIpv4DstCounter) validateToAndFrom() error { + // emptyVars() + obj.validateObj(&obj.validation, true) + return obj.validationResult() +} + +func (obj *patternFlowIpv4DstCounter) Validate() error { + // emptyVars() + obj.validateObj(&obj.validation, false) + return obj.validationResult() +} + +func (obj *patternFlowIpv4DstCounter) String() string { + str, err := obj.ToYaml() + if err != nil { + return err.Error() + } + return str +} + +func (obj *patternFlowIpv4DstCounter) Clone() (PatternFlowIpv4DstCounter, error) { + vErr := obj.Validate() + if vErr != nil { + return nil, vErr + } + newObj := NewPatternFlowIpv4DstCounter() + data, err := proto.Marshal(obj.Msg()) + if err != nil { + return nil, err + } + pbErr := proto.Unmarshal(data, newObj.Msg()) + if pbErr != nil { + return nil, pbErr + } + return newObj, nil +} + +// PatternFlowIpv4DstCounter is ipv4 counter pattern +type PatternFlowIpv4DstCounter interface { + Validation + // Msg marshals PatternFlowIpv4DstCounter to protobuf object *otg.PatternFlowIpv4DstCounter + // and doesn't set defaults + Msg() *otg.PatternFlowIpv4DstCounter + // SetMsg unmarshals PatternFlowIpv4DstCounter from protobuf object *otg.PatternFlowIpv4DstCounter + // and doesn't set defaults + SetMsg(*otg.PatternFlowIpv4DstCounter) PatternFlowIpv4DstCounter + // ToProto marshals PatternFlowIpv4DstCounter to protobuf object *otg.PatternFlowIpv4DstCounter + ToProto() (*otg.PatternFlowIpv4DstCounter, error) + // ToPbText marshals PatternFlowIpv4DstCounter to protobuf text + ToPbText() (string, error) + // ToYaml marshals PatternFlowIpv4DstCounter to YAML text + ToYaml() (string, error) + // ToJson marshals PatternFlowIpv4DstCounter to JSON text + ToJson() (string, error) + // FromProto unmarshals PatternFlowIpv4DstCounter from protobuf object *otg.PatternFlowIpv4DstCounter + FromProto(msg *otg.PatternFlowIpv4DstCounter) (PatternFlowIpv4DstCounter, error) + // FromPbText unmarshals PatternFlowIpv4DstCounter from protobuf text + FromPbText(value string) error + // FromYaml unmarshals PatternFlowIpv4DstCounter from YAML text + FromYaml(value string) error + // FromJson unmarshals PatternFlowIpv4DstCounter from JSON text + FromJson(value string) error + // Validate validates PatternFlowIpv4DstCounter + Validate() error + // A stringer function + String() string + // Clones the object + Clone() (PatternFlowIpv4DstCounter, error) + validateToAndFrom() error + validateObj(vObj *validation, set_default bool) + setDefault() + // Start returns string, set in PatternFlowIpv4DstCounter. + Start() string + // SetStart assigns string provided by user to PatternFlowIpv4DstCounter + SetStart(value string) PatternFlowIpv4DstCounter + // HasStart checks if Start has been set in PatternFlowIpv4DstCounter + HasStart() bool + // Step returns string, set in PatternFlowIpv4DstCounter. + Step() string + // SetStep assigns string provided by user to PatternFlowIpv4DstCounter + SetStep(value string) PatternFlowIpv4DstCounter + // HasStep checks if Step has been set in PatternFlowIpv4DstCounter + HasStep() bool + // Count returns uint32, set in PatternFlowIpv4DstCounter. + Count() uint32 + // SetCount assigns uint32 provided by user to PatternFlowIpv4DstCounter + SetCount(value uint32) PatternFlowIpv4DstCounter + // HasCount checks if Count has been set in PatternFlowIpv4DstCounter + HasCount() bool +} + +// description is TBD +// Start returns a string +func (obj *patternFlowIpv4DstCounter) Start() string { + + return *obj.obj.Start + +} + +// description is TBD +// Start returns a string +func (obj *patternFlowIpv4DstCounter) HasStart() bool { + return obj.obj.Start != nil +} + +// description is TBD +// SetStart sets the string value in the PatternFlowIpv4DstCounter object +func (obj *patternFlowIpv4DstCounter) SetStart(value string) PatternFlowIpv4DstCounter { + + obj.obj.Start = &value + return obj +} + +// description is TBD +// Step returns a string +func (obj *patternFlowIpv4DstCounter) Step() string { + + return *obj.obj.Step + +} + +// description is TBD +// Step returns a string +func (obj *patternFlowIpv4DstCounter) HasStep() bool { + return obj.obj.Step != nil +} + +// description is TBD +// SetStep sets the string value in the PatternFlowIpv4DstCounter object +func (obj *patternFlowIpv4DstCounter) SetStep(value string) PatternFlowIpv4DstCounter { + + obj.obj.Step = &value + return obj +} + +// description is TBD +// Count returns a uint32 +func (obj *patternFlowIpv4DstCounter) Count() uint32 { + + return *obj.obj.Count + +} + +// description is TBD +// Count returns a uint32 +func (obj *patternFlowIpv4DstCounter) HasCount() bool { + return obj.obj.Count != nil +} + +// description is TBD +// SetCount sets the uint32 value in the PatternFlowIpv4DstCounter object +func (obj *patternFlowIpv4DstCounter) SetCount(value uint32) PatternFlowIpv4DstCounter { + + obj.obj.Count = &value + return obj +} + +func (obj *patternFlowIpv4DstCounter) validateObj(vObj *validation, set_default bool) { + if set_default { + obj.setDefault() + } + + if obj.obj.Start != nil { + + err := obj.validateIpv4(obj.Start()) + if err != nil { + vObj.validationErrors = append(vObj.validationErrors, fmt.Sprintf("%s %s", err.Error(), "on PatternFlowIpv4DstCounter.Start")) + } + + } + + if obj.obj.Step != nil { + + err := obj.validateIpv4(obj.Step()) + if err != nil { + vObj.validationErrors = append(vObj.validationErrors, fmt.Sprintf("%s %s", err.Error(), "on PatternFlowIpv4DstCounter.Step")) + } + + } + +} + +func (obj *patternFlowIpv4DstCounter) setDefault() { + if obj.obj.Start == nil { + obj.SetStart("0.0.0.0") + } + if obj.obj.Step == nil { + obj.SetStep("0.0.0.1") + } + if obj.obj.Count == nil { + obj.SetCount(1) + } + +} + +// ***** PatternFlowIpv4DstMetricTag ***** +type patternFlowIpv4DstMetricTag struct { + validation + obj *otg.PatternFlowIpv4DstMetricTag +} + +func NewPatternFlowIpv4DstMetricTag() PatternFlowIpv4DstMetricTag { + obj := patternFlowIpv4DstMetricTag{obj: &otg.PatternFlowIpv4DstMetricTag{}} + obj.setDefault() + return &obj +} + +func (obj *patternFlowIpv4DstMetricTag) Msg() *otg.PatternFlowIpv4DstMetricTag { + return obj.obj +} + +func (obj *patternFlowIpv4DstMetricTag) SetMsg(msg *otg.PatternFlowIpv4DstMetricTag) PatternFlowIpv4DstMetricTag { + + proto.Merge(obj.obj, msg) + return obj +} + +func (obj *patternFlowIpv4DstMetricTag) ToProto() (*otg.PatternFlowIpv4DstMetricTag, error) { + err := obj.validateToAndFrom() + if err != nil { + return nil, err + } + return obj.Msg(), nil +} + +func (obj *patternFlowIpv4DstMetricTag) FromProto(msg *otg.PatternFlowIpv4DstMetricTag) (PatternFlowIpv4DstMetricTag, error) { + newObj := obj.SetMsg(msg) + err := newObj.validateToAndFrom() + if err != nil { + return nil, err + } + return newObj, nil +} + +func (obj *patternFlowIpv4DstMetricTag) ToPbText() (string, error) { + vErr := obj.validateToAndFrom() + if vErr != nil { + return "", vErr + } + protoMarshal, err := proto.Marshal(obj.Msg()) + if err != nil { + return "", err + } + return string(protoMarshal), nil +} + +func (obj *patternFlowIpv4DstMetricTag) FromPbText(value string) error { + retObj := proto.Unmarshal([]byte(value), obj.Msg()) + if retObj != nil { + return retObj + } + + vErr := obj.validateToAndFrom() + if vErr != nil { + return vErr + } + return retObj +} + +func (obj *patternFlowIpv4DstMetricTag) ToYaml() (string, error) { + vErr := obj.validateToAndFrom() + if vErr != nil { + return "", vErr + } + opts := protojson.MarshalOptions{ + UseProtoNames: true, + AllowPartial: true, + EmitUnpopulated: false, + } + data, err := opts.Marshal(obj.Msg()) + if err != nil { + return "", err + } + data, err = yaml.JSONToYAML(data) + if err != nil { + return "", err + } + return string(data), nil +} + +func (obj *patternFlowIpv4DstMetricTag) FromYaml(value string) error { + if value == "" { + value = "{}" + } + data, err := yaml.YAMLToJSON([]byte(value)) + if err != nil { + return err + } + opts := protojson.UnmarshalOptions{ + AllowPartial: true, + DiscardUnknown: false, + } + uError := opts.Unmarshal([]byte(data), obj.Msg()) + if uError != nil { + return fmt.Errorf("unmarshal error %s", strings.Replace( + uError.Error(), "\u00a0", " ", -1)[7:]) + } + + vErr := obj.validateToAndFrom() + if vErr != nil { + return vErr + } + return nil +} + +func (obj *patternFlowIpv4DstMetricTag) ToJson() (string, error) { + vErr := obj.validateToAndFrom() + if vErr != nil { + return "", vErr + } + opts := protojson.MarshalOptions{ + UseProtoNames: true, + AllowPartial: true, + EmitUnpopulated: false, + Indent: " ", + } + data, err := opts.Marshal(obj.Msg()) + if err != nil { + return "", err + } + return string(data), nil +} + +func (obj *patternFlowIpv4DstMetricTag) FromJson(value string) error { + opts := protojson.UnmarshalOptions{ + AllowPartial: true, + DiscardUnknown: false, + } + if value == "" { + value = "{}" + } + uError := opts.Unmarshal([]byte(value), obj.Msg()) + if uError != nil { + return fmt.Errorf("unmarshal error %s", strings.Replace( + uError.Error(), "\u00a0", " ", -1)[7:]) + } + + err := obj.validateToAndFrom() + if err != nil { + return err + } + return nil +} + +func (obj *patternFlowIpv4DstMetricTag) validateToAndFrom() error { + // emptyVars() + obj.validateObj(&obj.validation, true) + return obj.validationResult() +} + +func (obj *patternFlowIpv4DstMetricTag) Validate() error { + // emptyVars() + obj.validateObj(&obj.validation, false) + return obj.validationResult() +} + +func (obj *patternFlowIpv4DstMetricTag) String() string { + str, err := obj.ToYaml() + if err != nil { + return err.Error() + } + return str +} + +func (obj *patternFlowIpv4DstMetricTag) Clone() (PatternFlowIpv4DstMetricTag, error) { + vErr := obj.Validate() + if vErr != nil { + return nil, vErr + } + newObj := NewPatternFlowIpv4DstMetricTag() + data, err := proto.Marshal(obj.Msg()) + if err != nil { + return nil, err + } + pbErr := proto.Unmarshal(data, newObj.Msg()) + if pbErr != nil { + return nil, pbErr + } + return newObj, nil +} + +// PatternFlowIpv4DstMetricTag is metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. +type PatternFlowIpv4DstMetricTag interface { + Validation + // Msg marshals PatternFlowIpv4DstMetricTag to protobuf object *otg.PatternFlowIpv4DstMetricTag + // and doesn't set defaults + Msg() *otg.PatternFlowIpv4DstMetricTag + // SetMsg unmarshals PatternFlowIpv4DstMetricTag from protobuf object *otg.PatternFlowIpv4DstMetricTag + // and doesn't set defaults + SetMsg(*otg.PatternFlowIpv4DstMetricTag) PatternFlowIpv4DstMetricTag + // ToProto marshals PatternFlowIpv4DstMetricTag to protobuf object *otg.PatternFlowIpv4DstMetricTag + ToProto() (*otg.PatternFlowIpv4DstMetricTag, error) + // ToPbText marshals PatternFlowIpv4DstMetricTag to protobuf text + ToPbText() (string, error) + // ToYaml marshals PatternFlowIpv4DstMetricTag to YAML text + ToYaml() (string, error) + // ToJson marshals PatternFlowIpv4DstMetricTag to JSON text + ToJson() (string, error) + // FromProto unmarshals PatternFlowIpv4DstMetricTag from protobuf object *otg.PatternFlowIpv4DstMetricTag + FromProto(msg *otg.PatternFlowIpv4DstMetricTag) (PatternFlowIpv4DstMetricTag, error) + // FromPbText unmarshals PatternFlowIpv4DstMetricTag from protobuf text + FromPbText(value string) error + // FromYaml unmarshals PatternFlowIpv4DstMetricTag from YAML text + FromYaml(value string) error + // FromJson unmarshals PatternFlowIpv4DstMetricTag from JSON text + FromJson(value string) error + // Validate validates PatternFlowIpv4DstMetricTag + Validate() error + // A stringer function + String() string + // Clones the object + Clone() (PatternFlowIpv4DstMetricTag, error) + validateToAndFrom() error + validateObj(vObj *validation, set_default bool) + setDefault() + // Name returns string, set in PatternFlowIpv4DstMetricTag. + Name() string + // SetName assigns string provided by user to PatternFlowIpv4DstMetricTag + SetName(value string) PatternFlowIpv4DstMetricTag + // Offset returns uint32, set in PatternFlowIpv4DstMetricTag. + Offset() uint32 + // SetOffset assigns uint32 provided by user to PatternFlowIpv4DstMetricTag + SetOffset(value uint32) PatternFlowIpv4DstMetricTag + // HasOffset checks if Offset has been set in PatternFlowIpv4DstMetricTag + HasOffset() bool + // Length returns uint32, set in PatternFlowIpv4DstMetricTag. + Length() uint32 + // SetLength assigns uint32 provided by user to PatternFlowIpv4DstMetricTag + SetLength(value uint32) PatternFlowIpv4DstMetricTag + // HasLength checks if Length has been set in PatternFlowIpv4DstMetricTag + HasLength() bool +} + +// Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field +// Name returns a string +func (obj *patternFlowIpv4DstMetricTag) Name() string { + + return *obj.obj.Name + +} + +// Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field +// SetName sets the string value in the PatternFlowIpv4DstMetricTag object +func (obj *patternFlowIpv4DstMetricTag) SetName(value string) PatternFlowIpv4DstMetricTag { + + obj.obj.Name = &value + return obj +} + +// Offset in bits relative to start of corresponding header field +// Offset returns a uint32 +func (obj *patternFlowIpv4DstMetricTag) Offset() uint32 { + + return *obj.obj.Offset + +} + +// Offset in bits relative to start of corresponding header field +// Offset returns a uint32 +func (obj *patternFlowIpv4DstMetricTag) HasOffset() bool { + return obj.obj.Offset != nil +} + +// Offset in bits relative to start of corresponding header field +// SetOffset sets the uint32 value in the PatternFlowIpv4DstMetricTag object +func (obj *patternFlowIpv4DstMetricTag) SetOffset(value uint32) PatternFlowIpv4DstMetricTag { + + obj.obj.Offset = &value + return obj +} + +// Number of bits to track for metrics starting from configured offset of corresponding header field +// Length returns a uint32 +func (obj *patternFlowIpv4DstMetricTag) Length() uint32 { + + return *obj.obj.Length + +} + +// Number of bits to track for metrics starting from configured offset of corresponding header field +// Length returns a uint32 +func (obj *patternFlowIpv4DstMetricTag) HasLength() bool { + return obj.obj.Length != nil +} + +// Number of bits to track for metrics starting from configured offset of corresponding header field +// SetLength sets the uint32 value in the PatternFlowIpv4DstMetricTag object +func (obj *patternFlowIpv4DstMetricTag) SetLength(value uint32) PatternFlowIpv4DstMetricTag { + + obj.obj.Length = &value + return obj +} + +func (obj *patternFlowIpv4DstMetricTag) validateObj(vObj *validation, set_default bool) { + if set_default { + obj.setDefault() + } + + // Name is required + if obj.obj.Name == nil { + vObj.validationErrors = append(vObj.validationErrors, "Name is required field on interface PatternFlowIpv4DstMetricTag") + } + + if obj.obj.Offset != nil { + + if *obj.obj.Offset > 31 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("0 <= PatternFlowIpv4DstMetricTag.Offset <= 31 but Got %d", *obj.obj.Offset)) + } + + } + + if obj.obj.Length != nil { + + if *obj.obj.Length < 1 || *obj.obj.Length > 32 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("1 <= PatternFlowIpv4DstMetricTag.Length <= 32 but Got %d", *obj.obj.Length)) + } + + } + +} + +func (obj *patternFlowIpv4DstMetricTag) setDefault() { + if obj.obj.Offset == nil { + obj.SetOffset(0) + } + if obj.obj.Length == nil { + obj.SetLength(32) + } + +} + +// ***** PatternFlowIpv6VersionCounter ***** +type patternFlowIpv6VersionCounter struct { + validation + obj *otg.PatternFlowIpv6VersionCounter +} + +func NewPatternFlowIpv6VersionCounter() PatternFlowIpv6VersionCounter { + obj := patternFlowIpv6VersionCounter{obj: &otg.PatternFlowIpv6VersionCounter{}} + obj.setDefault() + return &obj +} + +func (obj *patternFlowIpv6VersionCounter) Msg() *otg.PatternFlowIpv6VersionCounter { + return obj.obj +} + +func (obj *patternFlowIpv6VersionCounter) SetMsg(msg *otg.PatternFlowIpv6VersionCounter) PatternFlowIpv6VersionCounter { + + proto.Merge(obj.obj, msg) + return obj +} + +func (obj *patternFlowIpv6VersionCounter) ToProto() (*otg.PatternFlowIpv6VersionCounter, error) { + err := obj.validateToAndFrom() + if err != nil { + return nil, err + } + return obj.Msg(), nil +} + +func (obj *patternFlowIpv6VersionCounter) FromProto(msg *otg.PatternFlowIpv6VersionCounter) (PatternFlowIpv6VersionCounter, error) { + newObj := obj.SetMsg(msg) + err := newObj.validateToAndFrom() + if err != nil { + return nil, err + } + return newObj, nil +} + +func (obj *patternFlowIpv6VersionCounter) ToPbText() (string, error) { + vErr := obj.validateToAndFrom() + if vErr != nil { + return "", vErr + } + protoMarshal, err := proto.Marshal(obj.Msg()) + if err != nil { + return "", err + } + return string(protoMarshal), nil +} + +func (obj *patternFlowIpv6VersionCounter) FromPbText(value string) error { + retObj := proto.Unmarshal([]byte(value), obj.Msg()) + if retObj != nil { + return retObj + } + + vErr := obj.validateToAndFrom() + if vErr != nil { + return vErr + } + return retObj +} + +func (obj *patternFlowIpv6VersionCounter) ToYaml() (string, error) { + vErr := obj.validateToAndFrom() + if vErr != nil { + return "", vErr + } + opts := protojson.MarshalOptions{ + UseProtoNames: true, + AllowPartial: true, + EmitUnpopulated: false, + } + data, err := opts.Marshal(obj.Msg()) + if err != nil { + return "", err + } + data, err = yaml.JSONToYAML(data) + if err != nil { + return "", err + } + return string(data), nil +} + +func (obj *patternFlowIpv6VersionCounter) FromYaml(value string) error { + if value == "" { + value = "{}" + } + data, err := yaml.YAMLToJSON([]byte(value)) + if err != nil { + return err + } + opts := protojson.UnmarshalOptions{ + AllowPartial: true, + DiscardUnknown: false, + } + uError := opts.Unmarshal([]byte(data), obj.Msg()) + if uError != nil { + return fmt.Errorf("unmarshal error %s", strings.Replace( + uError.Error(), "\u00a0", " ", -1)[7:]) + } + + vErr := obj.validateToAndFrom() + if vErr != nil { + return vErr + } + return nil +} + +func (obj *patternFlowIpv6VersionCounter) ToJson() (string, error) { + vErr := obj.validateToAndFrom() + if vErr != nil { + return "", vErr + } + opts := protojson.MarshalOptions{ + UseProtoNames: true, + AllowPartial: true, + EmitUnpopulated: false, + Indent: " ", + } + data, err := opts.Marshal(obj.Msg()) + if err != nil { + return "", err + } + return string(data), nil +} + +func (obj *patternFlowIpv6VersionCounter) FromJson(value string) error { + opts := protojson.UnmarshalOptions{ + AllowPartial: true, + DiscardUnknown: false, + } + if value == "" { + value = "{}" + } + uError := opts.Unmarshal([]byte(value), obj.Msg()) + if uError != nil { + return fmt.Errorf("unmarshal error %s", strings.Replace( + uError.Error(), "\u00a0", " ", -1)[7:]) + } + + err := obj.validateToAndFrom() + if err != nil { + return err + } + return nil +} + +func (obj *patternFlowIpv6VersionCounter) validateToAndFrom() error { + // emptyVars() + obj.validateObj(&obj.validation, true) + return obj.validationResult() +} + +func (obj *patternFlowIpv6VersionCounter) Validate() error { + // emptyVars() + obj.validateObj(&obj.validation, false) + return obj.validationResult() +} + +func (obj *patternFlowIpv6VersionCounter) String() string { + str, err := obj.ToYaml() + if err != nil { + return err.Error() + } + return str +} + +func (obj *patternFlowIpv6VersionCounter) Clone() (PatternFlowIpv6VersionCounter, error) { + vErr := obj.Validate() + if vErr != nil { + return nil, vErr + } + newObj := NewPatternFlowIpv6VersionCounter() + data, err := proto.Marshal(obj.Msg()) + if err != nil { + return nil, err + } + pbErr := proto.Unmarshal(data, newObj.Msg()) + if pbErr != nil { + return nil, pbErr + } + return newObj, nil +} + +// PatternFlowIpv6VersionCounter is integer counter pattern +type PatternFlowIpv6VersionCounter interface { + Validation + // Msg marshals PatternFlowIpv6VersionCounter to protobuf object *otg.PatternFlowIpv6VersionCounter + // and doesn't set defaults + Msg() *otg.PatternFlowIpv6VersionCounter + // SetMsg unmarshals PatternFlowIpv6VersionCounter from protobuf object *otg.PatternFlowIpv6VersionCounter + // and doesn't set defaults + SetMsg(*otg.PatternFlowIpv6VersionCounter) PatternFlowIpv6VersionCounter + // ToProto marshals PatternFlowIpv6VersionCounter to protobuf object *otg.PatternFlowIpv6VersionCounter + ToProto() (*otg.PatternFlowIpv6VersionCounter, error) + // ToPbText marshals PatternFlowIpv6VersionCounter to protobuf text + ToPbText() (string, error) + // ToYaml marshals PatternFlowIpv6VersionCounter to YAML text + ToYaml() (string, error) + // ToJson marshals PatternFlowIpv6VersionCounter to JSON text + ToJson() (string, error) + // FromProto unmarshals PatternFlowIpv6VersionCounter from protobuf object *otg.PatternFlowIpv6VersionCounter + FromProto(msg *otg.PatternFlowIpv6VersionCounter) (PatternFlowIpv6VersionCounter, error) + // FromPbText unmarshals PatternFlowIpv6VersionCounter from protobuf text + FromPbText(value string) error + // FromYaml unmarshals PatternFlowIpv6VersionCounter from YAML text + FromYaml(value string) error + // FromJson unmarshals PatternFlowIpv6VersionCounter from JSON text + FromJson(value string) error + // Validate validates PatternFlowIpv6VersionCounter + Validate() error + // A stringer function + String() string + // Clones the object + Clone() (PatternFlowIpv6VersionCounter, error) + validateToAndFrom() error + validateObj(vObj *validation, set_default bool) + setDefault() + // Start returns uint32, set in PatternFlowIpv6VersionCounter. + Start() uint32 + // SetStart assigns uint32 provided by user to PatternFlowIpv6VersionCounter + SetStart(value uint32) PatternFlowIpv6VersionCounter + // HasStart checks if Start has been set in PatternFlowIpv6VersionCounter + HasStart() bool + // Step returns uint32, set in PatternFlowIpv6VersionCounter. + Step() uint32 + // SetStep assigns uint32 provided by user to PatternFlowIpv6VersionCounter + SetStep(value uint32) PatternFlowIpv6VersionCounter + // HasStep checks if Step has been set in PatternFlowIpv6VersionCounter + HasStep() bool + // Count returns uint32, set in PatternFlowIpv6VersionCounter. + Count() uint32 + // SetCount assigns uint32 provided by user to PatternFlowIpv6VersionCounter + SetCount(value uint32) PatternFlowIpv6VersionCounter + // HasCount checks if Count has been set in PatternFlowIpv6VersionCounter + HasCount() bool +} + +// description is TBD +// Start returns a uint32 +func (obj *patternFlowIpv6VersionCounter) Start() uint32 { + + return *obj.obj.Start + +} + +// description is TBD +// Start returns a uint32 +func (obj *patternFlowIpv6VersionCounter) HasStart() bool { + return obj.obj.Start != nil +} + +// description is TBD +// SetStart sets the uint32 value in the PatternFlowIpv6VersionCounter object +func (obj *patternFlowIpv6VersionCounter) SetStart(value uint32) PatternFlowIpv6VersionCounter { + + obj.obj.Start = &value + return obj +} + +// description is TBD +// Step returns a uint32 +func (obj *patternFlowIpv6VersionCounter) Step() uint32 { + + return *obj.obj.Step + +} + +// description is TBD +// Step returns a uint32 +func (obj *patternFlowIpv6VersionCounter) HasStep() bool { + return obj.obj.Step != nil +} + +// description is TBD +// SetStep sets the uint32 value in the PatternFlowIpv6VersionCounter object +func (obj *patternFlowIpv6VersionCounter) SetStep(value uint32) PatternFlowIpv6VersionCounter { + + obj.obj.Step = &value + return obj +} + +// description is TBD +// Count returns a uint32 +func (obj *patternFlowIpv6VersionCounter) Count() uint32 { + + return *obj.obj.Count + +} + +// description is TBD +// Count returns a uint32 +func (obj *patternFlowIpv6VersionCounter) HasCount() bool { + return obj.obj.Count != nil +} + +// description is TBD +// SetCount sets the uint32 value in the PatternFlowIpv6VersionCounter object +func (obj *patternFlowIpv6VersionCounter) SetCount(value uint32) PatternFlowIpv6VersionCounter { + + obj.obj.Count = &value + return obj +} + +func (obj *patternFlowIpv6VersionCounter) validateObj(vObj *validation, set_default bool) { + if set_default { + obj.setDefault() + } + + if obj.obj.Start != nil { + + if *obj.obj.Start > 15 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("0 <= PatternFlowIpv6VersionCounter.Start <= 15 but Got %d", *obj.obj.Start)) + } + + } + + if obj.obj.Step != nil { + + if *obj.obj.Step > 15 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("0 <= PatternFlowIpv6VersionCounter.Step <= 15 but Got %d", *obj.obj.Step)) + } + + } + + if obj.obj.Count != nil { + + if *obj.obj.Count > 15 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("0 <= PatternFlowIpv6VersionCounter.Count <= 15 but Got %d", *obj.obj.Count)) + } + + } + +} + +func (obj *patternFlowIpv6VersionCounter) setDefault() { + if obj.obj.Start == nil { + obj.SetStart(6) + } + if obj.obj.Step == nil { + obj.SetStep(1) + } + if obj.obj.Count == nil { + obj.SetCount(1) + } + +} + +// ***** PatternFlowIpv6VersionMetricTag ***** +type patternFlowIpv6VersionMetricTag struct { + validation + obj *otg.PatternFlowIpv6VersionMetricTag +} + +func NewPatternFlowIpv6VersionMetricTag() PatternFlowIpv6VersionMetricTag { + obj := patternFlowIpv6VersionMetricTag{obj: &otg.PatternFlowIpv6VersionMetricTag{}} + obj.setDefault() + return &obj +} + +func (obj *patternFlowIpv6VersionMetricTag) Msg() *otg.PatternFlowIpv6VersionMetricTag { + return obj.obj +} + +func (obj *patternFlowIpv6VersionMetricTag) SetMsg(msg *otg.PatternFlowIpv6VersionMetricTag) PatternFlowIpv6VersionMetricTag { + + proto.Merge(obj.obj, msg) + return obj +} + +func (obj *patternFlowIpv6VersionMetricTag) ToProto() (*otg.PatternFlowIpv6VersionMetricTag, error) { + err := obj.validateToAndFrom() + if err != nil { + return nil, err + } + return obj.Msg(), nil +} + +func (obj *patternFlowIpv6VersionMetricTag) FromProto(msg *otg.PatternFlowIpv6VersionMetricTag) (PatternFlowIpv6VersionMetricTag, error) { + newObj := obj.SetMsg(msg) + err := newObj.validateToAndFrom() + if err != nil { + return nil, err + } + return newObj, nil +} + +func (obj *patternFlowIpv6VersionMetricTag) ToPbText() (string, error) { + vErr := obj.validateToAndFrom() + if vErr != nil { + return "", vErr + } + protoMarshal, err := proto.Marshal(obj.Msg()) + if err != nil { + return "", err + } + return string(protoMarshal), nil +} + +func (obj *patternFlowIpv6VersionMetricTag) FromPbText(value string) error { + retObj := proto.Unmarshal([]byte(value), obj.Msg()) + if retObj != nil { + return retObj + } + + vErr := obj.validateToAndFrom() + if vErr != nil { + return vErr + } + return retObj +} + +func (obj *patternFlowIpv6VersionMetricTag) ToYaml() (string, error) { + vErr := obj.validateToAndFrom() + if vErr != nil { + return "", vErr + } + opts := protojson.MarshalOptions{ + UseProtoNames: true, + AllowPartial: true, + EmitUnpopulated: false, + } + data, err := opts.Marshal(obj.Msg()) + if err != nil { + return "", err + } + data, err = yaml.JSONToYAML(data) + if err != nil { + return "", err + } + return string(data), nil +} + +func (obj *patternFlowIpv6VersionMetricTag) FromYaml(value string) error { + if value == "" { + value = "{}" + } + data, err := yaml.YAMLToJSON([]byte(value)) + if err != nil { + return err + } + opts := protojson.UnmarshalOptions{ + AllowPartial: true, + DiscardUnknown: false, + } + uError := opts.Unmarshal([]byte(data), obj.Msg()) + if uError != nil { + return fmt.Errorf("unmarshal error %s", strings.Replace( + uError.Error(), "\u00a0", " ", -1)[7:]) + } + + vErr := obj.validateToAndFrom() + if vErr != nil { + return vErr + } + return nil +} + +func (obj *patternFlowIpv6VersionMetricTag) ToJson() (string, error) { + vErr := obj.validateToAndFrom() + if vErr != nil { + return "", vErr + } + opts := protojson.MarshalOptions{ + UseProtoNames: true, + AllowPartial: true, + EmitUnpopulated: false, + Indent: " ", + } + data, err := opts.Marshal(obj.Msg()) + if err != nil { + return "", err + } + return string(data), nil +} + +func (obj *patternFlowIpv6VersionMetricTag) FromJson(value string) error { + opts := protojson.UnmarshalOptions{ + AllowPartial: true, + DiscardUnknown: false, + } + if value == "" { + value = "{}" + } + uError := opts.Unmarshal([]byte(value), obj.Msg()) + if uError != nil { + return fmt.Errorf("unmarshal error %s", strings.Replace( + uError.Error(), "\u00a0", " ", -1)[7:]) + } + + err := obj.validateToAndFrom() + if err != nil { + return err + } + return nil +} + +func (obj *patternFlowIpv6VersionMetricTag) validateToAndFrom() error { + // emptyVars() + obj.validateObj(&obj.validation, true) + return obj.validationResult() +} + +func (obj *patternFlowIpv6VersionMetricTag) Validate() error { + // emptyVars() + obj.validateObj(&obj.validation, false) + return obj.validationResult() +} + +func (obj *patternFlowIpv6VersionMetricTag) String() string { + str, err := obj.ToYaml() + if err != nil { + return err.Error() + } + return str +} + +func (obj *patternFlowIpv6VersionMetricTag) Clone() (PatternFlowIpv6VersionMetricTag, error) { + vErr := obj.Validate() + if vErr != nil { + return nil, vErr + } + newObj := NewPatternFlowIpv6VersionMetricTag() + data, err := proto.Marshal(obj.Msg()) + if err != nil { + return nil, err + } + pbErr := proto.Unmarshal(data, newObj.Msg()) + if pbErr != nil { + return nil, pbErr + } + return newObj, nil +} + +// PatternFlowIpv6VersionMetricTag is metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. +type PatternFlowIpv6VersionMetricTag interface { + Validation + // Msg marshals PatternFlowIpv6VersionMetricTag to protobuf object *otg.PatternFlowIpv6VersionMetricTag + // and doesn't set defaults + Msg() *otg.PatternFlowIpv6VersionMetricTag + // SetMsg unmarshals PatternFlowIpv6VersionMetricTag from protobuf object *otg.PatternFlowIpv6VersionMetricTag + // and doesn't set defaults + SetMsg(*otg.PatternFlowIpv6VersionMetricTag) PatternFlowIpv6VersionMetricTag + // ToProto marshals PatternFlowIpv6VersionMetricTag to protobuf object *otg.PatternFlowIpv6VersionMetricTag + ToProto() (*otg.PatternFlowIpv6VersionMetricTag, error) + // ToPbText marshals PatternFlowIpv6VersionMetricTag to protobuf text + ToPbText() (string, error) + // ToYaml marshals PatternFlowIpv6VersionMetricTag to YAML text + ToYaml() (string, error) + // ToJson marshals PatternFlowIpv6VersionMetricTag to JSON text + ToJson() (string, error) + // FromProto unmarshals PatternFlowIpv6VersionMetricTag from protobuf object *otg.PatternFlowIpv6VersionMetricTag + FromProto(msg *otg.PatternFlowIpv6VersionMetricTag) (PatternFlowIpv6VersionMetricTag, error) + // FromPbText unmarshals PatternFlowIpv6VersionMetricTag from protobuf text + FromPbText(value string) error + // FromYaml unmarshals PatternFlowIpv6VersionMetricTag from YAML text + FromYaml(value string) error + // FromJson unmarshals PatternFlowIpv6VersionMetricTag from JSON text + FromJson(value string) error + // Validate validates PatternFlowIpv6VersionMetricTag + Validate() error + // A stringer function + String() string + // Clones the object + Clone() (PatternFlowIpv6VersionMetricTag, error) + validateToAndFrom() error + validateObj(vObj *validation, set_default bool) + setDefault() + // Name returns string, set in PatternFlowIpv6VersionMetricTag. + Name() string + // SetName assigns string provided by user to PatternFlowIpv6VersionMetricTag + SetName(value string) PatternFlowIpv6VersionMetricTag + // Offset returns uint32, set in PatternFlowIpv6VersionMetricTag. + Offset() uint32 + // SetOffset assigns uint32 provided by user to PatternFlowIpv6VersionMetricTag + SetOffset(value uint32) PatternFlowIpv6VersionMetricTag + // HasOffset checks if Offset has been set in PatternFlowIpv6VersionMetricTag + HasOffset() bool + // Length returns uint32, set in PatternFlowIpv6VersionMetricTag. + Length() uint32 + // SetLength assigns uint32 provided by user to PatternFlowIpv6VersionMetricTag + SetLength(value uint32) PatternFlowIpv6VersionMetricTag + // HasLength checks if Length has been set in PatternFlowIpv6VersionMetricTag + HasLength() bool +} + +// Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field +// Name returns a string +func (obj *patternFlowIpv6VersionMetricTag) Name() string { + + return *obj.obj.Name + +} + +// Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field +// SetName sets the string value in the PatternFlowIpv6VersionMetricTag object +func (obj *patternFlowIpv6VersionMetricTag) SetName(value string) PatternFlowIpv6VersionMetricTag { + + obj.obj.Name = &value + return obj +} + +// Offset in bits relative to start of corresponding header field +// Offset returns a uint32 +func (obj *patternFlowIpv6VersionMetricTag) Offset() uint32 { + + return *obj.obj.Offset + +} + +// Offset in bits relative to start of corresponding header field +// Offset returns a uint32 +func (obj *patternFlowIpv6VersionMetricTag) HasOffset() bool { + return obj.obj.Offset != nil +} + +// Offset in bits relative to start of corresponding header field +// SetOffset sets the uint32 value in the PatternFlowIpv6VersionMetricTag object +func (obj *patternFlowIpv6VersionMetricTag) SetOffset(value uint32) PatternFlowIpv6VersionMetricTag { + + obj.obj.Offset = &value + return obj +} + +// Number of bits to track for metrics starting from configured offset of corresponding header field +// Length returns a uint32 +func (obj *patternFlowIpv6VersionMetricTag) Length() uint32 { + + return *obj.obj.Length + +} + +// Number of bits to track for metrics starting from configured offset of corresponding header field +// Length returns a uint32 +func (obj *patternFlowIpv6VersionMetricTag) HasLength() bool { + return obj.obj.Length != nil +} + +// Number of bits to track for metrics starting from configured offset of corresponding header field +// SetLength sets the uint32 value in the PatternFlowIpv6VersionMetricTag object +func (obj *patternFlowIpv6VersionMetricTag) SetLength(value uint32) PatternFlowIpv6VersionMetricTag { + + obj.obj.Length = &value + return obj +} + +func (obj *patternFlowIpv6VersionMetricTag) validateObj(vObj *validation, set_default bool) { + if set_default { + obj.setDefault() + } + + // Name is required + if obj.obj.Name == nil { + vObj.validationErrors = append(vObj.validationErrors, "Name is required field on interface PatternFlowIpv6VersionMetricTag") + } + + if obj.obj.Offset != nil { + + if *obj.obj.Offset > 3 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("0 <= PatternFlowIpv6VersionMetricTag.Offset <= 3 but Got %d", *obj.obj.Offset)) + } + + } + + if obj.obj.Length != nil { + + if *obj.obj.Length < 1 || *obj.obj.Length > 4 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("1 <= PatternFlowIpv6VersionMetricTag.Length <= 4 but Got %d", *obj.obj.Length)) + } + + } + +} + +func (obj *patternFlowIpv6VersionMetricTag) setDefault() { + if obj.obj.Offset == nil { + obj.SetOffset(0) + } + if obj.obj.Length == nil { + obj.SetLength(4) + } + +} + +// ***** PatternFlowIpv6TrafficClassCounter ***** +type patternFlowIpv6TrafficClassCounter struct { + validation + obj *otg.PatternFlowIpv6TrafficClassCounter +} + +func NewPatternFlowIpv6TrafficClassCounter() PatternFlowIpv6TrafficClassCounter { + obj := patternFlowIpv6TrafficClassCounter{obj: &otg.PatternFlowIpv6TrafficClassCounter{}} + obj.setDefault() + return &obj +} + +func (obj *patternFlowIpv6TrafficClassCounter) Msg() *otg.PatternFlowIpv6TrafficClassCounter { + return obj.obj +} + +func (obj *patternFlowIpv6TrafficClassCounter) SetMsg(msg *otg.PatternFlowIpv6TrafficClassCounter) PatternFlowIpv6TrafficClassCounter { + + proto.Merge(obj.obj, msg) + return obj +} + +func (obj *patternFlowIpv6TrafficClassCounter) ToProto() (*otg.PatternFlowIpv6TrafficClassCounter, error) { + err := obj.validateToAndFrom() + if err != nil { + return nil, err + } + return obj.Msg(), nil +} + +func (obj *patternFlowIpv6TrafficClassCounter) FromProto(msg *otg.PatternFlowIpv6TrafficClassCounter) (PatternFlowIpv6TrafficClassCounter, error) { + newObj := obj.SetMsg(msg) + err := newObj.validateToAndFrom() + if err != nil { + return nil, err + } + return newObj, nil +} + +func (obj *patternFlowIpv6TrafficClassCounter) ToPbText() (string, error) { + vErr := obj.validateToAndFrom() + if vErr != nil { + return "", vErr + } + protoMarshal, err := proto.Marshal(obj.Msg()) + if err != nil { + return "", err + } + return string(protoMarshal), nil +} + +func (obj *patternFlowIpv6TrafficClassCounter) FromPbText(value string) error { + retObj := proto.Unmarshal([]byte(value), obj.Msg()) + if retObj != nil { + return retObj + } + + vErr := obj.validateToAndFrom() + if vErr != nil { + return vErr + } + return retObj +} + +func (obj *patternFlowIpv6TrafficClassCounter) ToYaml() (string, error) { + vErr := obj.validateToAndFrom() + if vErr != nil { + return "", vErr + } + opts := protojson.MarshalOptions{ + UseProtoNames: true, + AllowPartial: true, + EmitUnpopulated: false, + } + data, err := opts.Marshal(obj.Msg()) + if err != nil { + return "", err + } + data, err = yaml.JSONToYAML(data) + if err != nil { + return "", err + } + return string(data), nil +} + +func (obj *patternFlowIpv6TrafficClassCounter) FromYaml(value string) error { + if value == "" { + value = "{}" + } + data, err := yaml.YAMLToJSON([]byte(value)) + if err != nil { + return err + } + opts := protojson.UnmarshalOptions{ + AllowPartial: true, + DiscardUnknown: false, + } + uError := opts.Unmarshal([]byte(data), obj.Msg()) + if uError != nil { + return fmt.Errorf("unmarshal error %s", strings.Replace( + uError.Error(), "\u00a0", " ", -1)[7:]) + } + + vErr := obj.validateToAndFrom() + if vErr != nil { + return vErr + } + return nil +} + +func (obj *patternFlowIpv6TrafficClassCounter) ToJson() (string, error) { + vErr := obj.validateToAndFrom() + if vErr != nil { + return "", vErr + } + opts := protojson.MarshalOptions{ + UseProtoNames: true, + AllowPartial: true, + EmitUnpopulated: false, + Indent: " ", + } + data, err := opts.Marshal(obj.Msg()) + if err != nil { + return "", err + } + return string(data), nil +} + +func (obj *patternFlowIpv6TrafficClassCounter) FromJson(value string) error { + opts := protojson.UnmarshalOptions{ + AllowPartial: true, + DiscardUnknown: false, + } + if value == "" { + value = "{}" + } + uError := opts.Unmarshal([]byte(value), obj.Msg()) + if uError != nil { + return fmt.Errorf("unmarshal error %s", strings.Replace( + uError.Error(), "\u00a0", " ", -1)[7:]) + } + + err := obj.validateToAndFrom() + if err != nil { + return err + } + return nil +} + +func (obj *patternFlowIpv6TrafficClassCounter) validateToAndFrom() error { + // emptyVars() + obj.validateObj(&obj.validation, true) + return obj.validationResult() +} + +func (obj *patternFlowIpv6TrafficClassCounter) Validate() error { + // emptyVars() + obj.validateObj(&obj.validation, false) + return obj.validationResult() +} + +func (obj *patternFlowIpv6TrafficClassCounter) String() string { + str, err := obj.ToYaml() + if err != nil { + return err.Error() + } + return str +} + +func (obj *patternFlowIpv6TrafficClassCounter) Clone() (PatternFlowIpv6TrafficClassCounter, error) { + vErr := obj.Validate() + if vErr != nil { + return nil, vErr + } + newObj := NewPatternFlowIpv6TrafficClassCounter() + data, err := proto.Marshal(obj.Msg()) + if err != nil { + return nil, err + } + pbErr := proto.Unmarshal(data, newObj.Msg()) + if pbErr != nil { + return nil, pbErr + } + return newObj, nil +} + +// PatternFlowIpv6TrafficClassCounter is integer counter pattern +type PatternFlowIpv6TrafficClassCounter interface { + Validation + // Msg marshals PatternFlowIpv6TrafficClassCounter to protobuf object *otg.PatternFlowIpv6TrafficClassCounter + // and doesn't set defaults + Msg() *otg.PatternFlowIpv6TrafficClassCounter + // SetMsg unmarshals PatternFlowIpv6TrafficClassCounter from protobuf object *otg.PatternFlowIpv6TrafficClassCounter + // and doesn't set defaults + SetMsg(*otg.PatternFlowIpv6TrafficClassCounter) PatternFlowIpv6TrafficClassCounter + // ToProto marshals PatternFlowIpv6TrafficClassCounter to protobuf object *otg.PatternFlowIpv6TrafficClassCounter + ToProto() (*otg.PatternFlowIpv6TrafficClassCounter, error) + // ToPbText marshals PatternFlowIpv6TrafficClassCounter to protobuf text + ToPbText() (string, error) + // ToYaml marshals PatternFlowIpv6TrafficClassCounter to YAML text + ToYaml() (string, error) + // ToJson marshals PatternFlowIpv6TrafficClassCounter to JSON text + ToJson() (string, error) + // FromProto unmarshals PatternFlowIpv6TrafficClassCounter from protobuf object *otg.PatternFlowIpv6TrafficClassCounter + FromProto(msg *otg.PatternFlowIpv6TrafficClassCounter) (PatternFlowIpv6TrafficClassCounter, error) + // FromPbText unmarshals PatternFlowIpv6TrafficClassCounter from protobuf text + FromPbText(value string) error + // FromYaml unmarshals PatternFlowIpv6TrafficClassCounter from YAML text + FromYaml(value string) error + // FromJson unmarshals PatternFlowIpv6TrafficClassCounter from JSON text + FromJson(value string) error + // Validate validates PatternFlowIpv6TrafficClassCounter + Validate() error + // A stringer function + String() string + // Clones the object + Clone() (PatternFlowIpv6TrafficClassCounter, error) + validateToAndFrom() error + validateObj(vObj *validation, set_default bool) + setDefault() + // Start returns uint32, set in PatternFlowIpv6TrafficClassCounter. + Start() uint32 + // SetStart assigns uint32 provided by user to PatternFlowIpv6TrafficClassCounter + SetStart(value uint32) PatternFlowIpv6TrafficClassCounter + // HasStart checks if Start has been set in PatternFlowIpv6TrafficClassCounter + HasStart() bool + // Step returns uint32, set in PatternFlowIpv6TrafficClassCounter. + Step() uint32 + // SetStep assigns uint32 provided by user to PatternFlowIpv6TrafficClassCounter + SetStep(value uint32) PatternFlowIpv6TrafficClassCounter + // HasStep checks if Step has been set in PatternFlowIpv6TrafficClassCounter + HasStep() bool + // Count returns uint32, set in PatternFlowIpv6TrafficClassCounter. + Count() uint32 + // SetCount assigns uint32 provided by user to PatternFlowIpv6TrafficClassCounter + SetCount(value uint32) PatternFlowIpv6TrafficClassCounter + // HasCount checks if Count has been set in PatternFlowIpv6TrafficClassCounter + HasCount() bool +} + +// description is TBD +// Start returns a uint32 +func (obj *patternFlowIpv6TrafficClassCounter) Start() uint32 { + + return *obj.obj.Start + +} + +// description is TBD +// Start returns a uint32 +func (obj *patternFlowIpv6TrafficClassCounter) HasStart() bool { + return obj.obj.Start != nil +} + +// description is TBD +// SetStart sets the uint32 value in the PatternFlowIpv6TrafficClassCounter object +func (obj *patternFlowIpv6TrafficClassCounter) SetStart(value uint32) PatternFlowIpv6TrafficClassCounter { + + obj.obj.Start = &value + return obj +} + +// description is TBD +// Step returns a uint32 +func (obj *patternFlowIpv6TrafficClassCounter) Step() uint32 { + + return *obj.obj.Step + +} + +// description is TBD +// Step returns a uint32 +func (obj *patternFlowIpv6TrafficClassCounter) HasStep() bool { + return obj.obj.Step != nil +} + +// description is TBD +// SetStep sets the uint32 value in the PatternFlowIpv6TrafficClassCounter object +func (obj *patternFlowIpv6TrafficClassCounter) SetStep(value uint32) PatternFlowIpv6TrafficClassCounter { + + obj.obj.Step = &value + return obj +} + +// description is TBD +// Count returns a uint32 +func (obj *patternFlowIpv6TrafficClassCounter) Count() uint32 { + + return *obj.obj.Count + +} + +// description is TBD +// Count returns a uint32 +func (obj *patternFlowIpv6TrafficClassCounter) HasCount() bool { + return obj.obj.Count != nil +} + +// description is TBD +// SetCount sets the uint32 value in the PatternFlowIpv6TrafficClassCounter object +func (obj *patternFlowIpv6TrafficClassCounter) SetCount(value uint32) PatternFlowIpv6TrafficClassCounter { + + obj.obj.Count = &value + return obj +} + +func (obj *patternFlowIpv6TrafficClassCounter) validateObj(vObj *validation, set_default bool) { + if set_default { + obj.setDefault() + } + + if obj.obj.Start != nil { + + if *obj.obj.Start > 255 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("0 <= PatternFlowIpv6TrafficClassCounter.Start <= 255 but Got %d", *obj.obj.Start)) + } + + } + + if obj.obj.Step != nil { + + if *obj.obj.Step > 255 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("0 <= PatternFlowIpv6TrafficClassCounter.Step <= 255 but Got %d", *obj.obj.Step)) + } + + } + + if obj.obj.Count != nil { + + if *obj.obj.Count > 255 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("0 <= PatternFlowIpv6TrafficClassCounter.Count <= 255 but Got %d", *obj.obj.Count)) + } + + } + +} + +func (obj *patternFlowIpv6TrafficClassCounter) setDefault() { + if obj.obj.Start == nil { + obj.SetStart(0) + } + if obj.obj.Step == nil { + obj.SetStep(1) + } + if obj.obj.Count == nil { + obj.SetCount(1) + } + +} + +// ***** PatternFlowIpv6TrafficClassMetricTag ***** +type patternFlowIpv6TrafficClassMetricTag struct { + validation + obj *otg.PatternFlowIpv6TrafficClassMetricTag +} + +func NewPatternFlowIpv6TrafficClassMetricTag() PatternFlowIpv6TrafficClassMetricTag { + obj := patternFlowIpv6TrafficClassMetricTag{obj: &otg.PatternFlowIpv6TrafficClassMetricTag{}} + obj.setDefault() + return &obj +} + +func (obj *patternFlowIpv6TrafficClassMetricTag) Msg() *otg.PatternFlowIpv6TrafficClassMetricTag { + return obj.obj +} + +func (obj *patternFlowIpv6TrafficClassMetricTag) SetMsg(msg *otg.PatternFlowIpv6TrafficClassMetricTag) PatternFlowIpv6TrafficClassMetricTag { + + proto.Merge(obj.obj, msg) + return obj +} + +func (obj *patternFlowIpv6TrafficClassMetricTag) ToProto() (*otg.PatternFlowIpv6TrafficClassMetricTag, error) { + err := obj.validateToAndFrom() + if err != nil { + return nil, err + } + return obj.Msg(), nil +} + +func (obj *patternFlowIpv6TrafficClassMetricTag) FromProto(msg *otg.PatternFlowIpv6TrafficClassMetricTag) (PatternFlowIpv6TrafficClassMetricTag, error) { + newObj := obj.SetMsg(msg) + err := newObj.validateToAndFrom() + if err != nil { + return nil, err + } + return newObj, nil +} + +func (obj *patternFlowIpv6TrafficClassMetricTag) ToPbText() (string, error) { + vErr := obj.validateToAndFrom() + if vErr != nil { + return "", vErr + } + protoMarshal, err := proto.Marshal(obj.Msg()) + if err != nil { + return "", err + } + return string(protoMarshal), nil +} + +func (obj *patternFlowIpv6TrafficClassMetricTag) FromPbText(value string) error { + retObj := proto.Unmarshal([]byte(value), obj.Msg()) + if retObj != nil { + return retObj + } + + vErr := obj.validateToAndFrom() + if vErr != nil { + return vErr + } + return retObj +} + +func (obj *patternFlowIpv6TrafficClassMetricTag) ToYaml() (string, error) { + vErr := obj.validateToAndFrom() + if vErr != nil { + return "", vErr + } + opts := protojson.MarshalOptions{ + UseProtoNames: true, + AllowPartial: true, + EmitUnpopulated: false, + } + data, err := opts.Marshal(obj.Msg()) + if err != nil { + return "", err + } + data, err = yaml.JSONToYAML(data) + if err != nil { + return "", err + } + return string(data), nil +} + +func (obj *patternFlowIpv6TrafficClassMetricTag) FromYaml(value string) error { + if value == "" { + value = "{}" + } + data, err := yaml.YAMLToJSON([]byte(value)) + if err != nil { + return err + } + opts := protojson.UnmarshalOptions{ + AllowPartial: true, + DiscardUnknown: false, + } + uError := opts.Unmarshal([]byte(data), obj.Msg()) + if uError != nil { + return fmt.Errorf("unmarshal error %s", strings.Replace( + uError.Error(), "\u00a0", " ", -1)[7:]) + } + + vErr := obj.validateToAndFrom() + if vErr != nil { + return vErr + } + return nil +} + +func (obj *patternFlowIpv6TrafficClassMetricTag) ToJson() (string, error) { + vErr := obj.validateToAndFrom() + if vErr != nil { + return "", vErr + } + opts := protojson.MarshalOptions{ + UseProtoNames: true, + AllowPartial: true, + EmitUnpopulated: false, + Indent: " ", + } + data, err := opts.Marshal(obj.Msg()) + if err != nil { + return "", err + } + return string(data), nil +} + +func (obj *patternFlowIpv6TrafficClassMetricTag) FromJson(value string) error { + opts := protojson.UnmarshalOptions{ + AllowPartial: true, + DiscardUnknown: false, + } + if value == "" { + value = "{}" + } + uError := opts.Unmarshal([]byte(value), obj.Msg()) + if uError != nil { + return fmt.Errorf("unmarshal error %s", strings.Replace( + uError.Error(), "\u00a0", " ", -1)[7:]) + } + + err := obj.validateToAndFrom() + if err != nil { + return err + } + return nil +} + +func (obj *patternFlowIpv6TrafficClassMetricTag) validateToAndFrom() error { + // emptyVars() + obj.validateObj(&obj.validation, true) + return obj.validationResult() +} + +func (obj *patternFlowIpv6TrafficClassMetricTag) Validate() error { + // emptyVars() + obj.validateObj(&obj.validation, false) + return obj.validationResult() +} + +func (obj *patternFlowIpv6TrafficClassMetricTag) String() string { + str, err := obj.ToYaml() + if err != nil { + return err.Error() + } + return str +} + +func (obj *patternFlowIpv6TrafficClassMetricTag) Clone() (PatternFlowIpv6TrafficClassMetricTag, error) { + vErr := obj.Validate() + if vErr != nil { + return nil, vErr + } + newObj := NewPatternFlowIpv6TrafficClassMetricTag() + data, err := proto.Marshal(obj.Msg()) + if err != nil { + return nil, err + } + pbErr := proto.Unmarshal(data, newObj.Msg()) + if pbErr != nil { + return nil, pbErr + } + return newObj, nil +} + +// PatternFlowIpv6TrafficClassMetricTag is metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. +type PatternFlowIpv6TrafficClassMetricTag interface { + Validation + // Msg marshals PatternFlowIpv6TrafficClassMetricTag to protobuf object *otg.PatternFlowIpv6TrafficClassMetricTag + // and doesn't set defaults + Msg() *otg.PatternFlowIpv6TrafficClassMetricTag + // SetMsg unmarshals PatternFlowIpv6TrafficClassMetricTag from protobuf object *otg.PatternFlowIpv6TrafficClassMetricTag + // and doesn't set defaults + SetMsg(*otg.PatternFlowIpv6TrafficClassMetricTag) PatternFlowIpv6TrafficClassMetricTag + // ToProto marshals PatternFlowIpv6TrafficClassMetricTag to protobuf object *otg.PatternFlowIpv6TrafficClassMetricTag + ToProto() (*otg.PatternFlowIpv6TrafficClassMetricTag, error) + // ToPbText marshals PatternFlowIpv6TrafficClassMetricTag to protobuf text + ToPbText() (string, error) + // ToYaml marshals PatternFlowIpv6TrafficClassMetricTag to YAML text + ToYaml() (string, error) + // ToJson marshals PatternFlowIpv6TrafficClassMetricTag to JSON text + ToJson() (string, error) + // FromProto unmarshals PatternFlowIpv6TrafficClassMetricTag from protobuf object *otg.PatternFlowIpv6TrafficClassMetricTag + FromProto(msg *otg.PatternFlowIpv6TrafficClassMetricTag) (PatternFlowIpv6TrafficClassMetricTag, error) + // FromPbText unmarshals PatternFlowIpv6TrafficClassMetricTag from protobuf text + FromPbText(value string) error + // FromYaml unmarshals PatternFlowIpv6TrafficClassMetricTag from YAML text + FromYaml(value string) error + // FromJson unmarshals PatternFlowIpv6TrafficClassMetricTag from JSON text + FromJson(value string) error + // Validate validates PatternFlowIpv6TrafficClassMetricTag + Validate() error + // A stringer function + String() string + // Clones the object + Clone() (PatternFlowIpv6TrafficClassMetricTag, error) + validateToAndFrom() error + validateObj(vObj *validation, set_default bool) + setDefault() + // Name returns string, set in PatternFlowIpv6TrafficClassMetricTag. + Name() string + // SetName assigns string provided by user to PatternFlowIpv6TrafficClassMetricTag + SetName(value string) PatternFlowIpv6TrafficClassMetricTag + // Offset returns uint32, set in PatternFlowIpv6TrafficClassMetricTag. + Offset() uint32 + // SetOffset assigns uint32 provided by user to PatternFlowIpv6TrafficClassMetricTag + SetOffset(value uint32) PatternFlowIpv6TrafficClassMetricTag + // HasOffset checks if Offset has been set in PatternFlowIpv6TrafficClassMetricTag + HasOffset() bool + // Length returns uint32, set in PatternFlowIpv6TrafficClassMetricTag. + Length() uint32 + // SetLength assigns uint32 provided by user to PatternFlowIpv6TrafficClassMetricTag + SetLength(value uint32) PatternFlowIpv6TrafficClassMetricTag + // HasLength checks if Length has been set in PatternFlowIpv6TrafficClassMetricTag + HasLength() bool +} + +// Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field +// Name returns a string +func (obj *patternFlowIpv6TrafficClassMetricTag) Name() string { + + return *obj.obj.Name + +} + +// Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field +// SetName sets the string value in the PatternFlowIpv6TrafficClassMetricTag object +func (obj *patternFlowIpv6TrafficClassMetricTag) SetName(value string) PatternFlowIpv6TrafficClassMetricTag { + + obj.obj.Name = &value + return obj +} + +// Offset in bits relative to start of corresponding header field +// Offset returns a uint32 +func (obj *patternFlowIpv6TrafficClassMetricTag) Offset() uint32 { + + return *obj.obj.Offset + +} + +// Offset in bits relative to start of corresponding header field +// Offset returns a uint32 +func (obj *patternFlowIpv6TrafficClassMetricTag) HasOffset() bool { + return obj.obj.Offset != nil +} + +// Offset in bits relative to start of corresponding header field +// SetOffset sets the uint32 value in the PatternFlowIpv6TrafficClassMetricTag object +func (obj *patternFlowIpv6TrafficClassMetricTag) SetOffset(value uint32) PatternFlowIpv6TrafficClassMetricTag { + + obj.obj.Offset = &value + return obj +} + +// Number of bits to track for metrics starting from configured offset of corresponding header field +// Length returns a uint32 +func (obj *patternFlowIpv6TrafficClassMetricTag) Length() uint32 { + + return *obj.obj.Length + +} + +// Number of bits to track for metrics starting from configured offset of corresponding header field +// Length returns a uint32 +func (obj *patternFlowIpv6TrafficClassMetricTag) HasLength() bool { + return obj.obj.Length != nil +} + +// Number of bits to track for metrics starting from configured offset of corresponding header field +// SetLength sets the uint32 value in the PatternFlowIpv6TrafficClassMetricTag object +func (obj *patternFlowIpv6TrafficClassMetricTag) SetLength(value uint32) PatternFlowIpv6TrafficClassMetricTag { + + obj.obj.Length = &value + return obj +} + +func (obj *patternFlowIpv6TrafficClassMetricTag) validateObj(vObj *validation, set_default bool) { + if set_default { + obj.setDefault() + } + + // Name is required + if obj.obj.Name == nil { + vObj.validationErrors = append(vObj.validationErrors, "Name is required field on interface PatternFlowIpv6TrafficClassMetricTag") + } + + if obj.obj.Offset != nil { + + if *obj.obj.Offset > 7 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("0 <= PatternFlowIpv6TrafficClassMetricTag.Offset <= 7 but Got %d", *obj.obj.Offset)) + } + + } + + if obj.obj.Length != nil { + + if *obj.obj.Length < 1 || *obj.obj.Length > 8 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("1 <= PatternFlowIpv6TrafficClassMetricTag.Length <= 8 but Got %d", *obj.obj.Length)) + } + + } + +} + +func (obj *patternFlowIpv6TrafficClassMetricTag) setDefault() { + if obj.obj.Offset == nil { + obj.SetOffset(0) + } + if obj.obj.Length == nil { + obj.SetLength(8) + } + +} + +// ***** PatternFlowIpv6FlowLabelCounter ***** +type patternFlowIpv6FlowLabelCounter struct { + validation + obj *otg.PatternFlowIpv6FlowLabelCounter +} + +func NewPatternFlowIpv6FlowLabelCounter() PatternFlowIpv6FlowLabelCounter { + obj := patternFlowIpv6FlowLabelCounter{obj: &otg.PatternFlowIpv6FlowLabelCounter{}} + obj.setDefault() + return &obj +} + +func (obj *patternFlowIpv6FlowLabelCounter) Msg() *otg.PatternFlowIpv6FlowLabelCounter { + return obj.obj +} + +func (obj *patternFlowIpv6FlowLabelCounter) SetMsg(msg *otg.PatternFlowIpv6FlowLabelCounter) PatternFlowIpv6FlowLabelCounter { + + proto.Merge(obj.obj, msg) + return obj +} + +func (obj *patternFlowIpv6FlowLabelCounter) ToProto() (*otg.PatternFlowIpv6FlowLabelCounter, error) { + err := obj.validateToAndFrom() + if err != nil { + return nil, err + } + return obj.Msg(), nil +} + +func (obj *patternFlowIpv6FlowLabelCounter) FromProto(msg *otg.PatternFlowIpv6FlowLabelCounter) (PatternFlowIpv6FlowLabelCounter, error) { + newObj := obj.SetMsg(msg) + err := newObj.validateToAndFrom() + if err != nil { + return nil, err + } + return newObj, nil +} + +func (obj *patternFlowIpv6FlowLabelCounter) ToPbText() (string, error) { + vErr := obj.validateToAndFrom() + if vErr != nil { + return "", vErr + } + protoMarshal, err := proto.Marshal(obj.Msg()) + if err != nil { + return "", err + } + return string(protoMarshal), nil +} + +func (obj *patternFlowIpv6FlowLabelCounter) FromPbText(value string) error { + retObj := proto.Unmarshal([]byte(value), obj.Msg()) + if retObj != nil { + return retObj + } + + vErr := obj.validateToAndFrom() + if vErr != nil { + return vErr + } + return retObj +} + +func (obj *patternFlowIpv6FlowLabelCounter) ToYaml() (string, error) { + vErr := obj.validateToAndFrom() + if vErr != nil { + return "", vErr + } + opts := protojson.MarshalOptions{ + UseProtoNames: true, + AllowPartial: true, + EmitUnpopulated: false, + } + data, err := opts.Marshal(obj.Msg()) + if err != nil { + return "", err + } + data, err = yaml.JSONToYAML(data) + if err != nil { + return "", err + } + return string(data), nil +} + +func (obj *patternFlowIpv6FlowLabelCounter) FromYaml(value string) error { + if value == "" { + value = "{}" + } + data, err := yaml.YAMLToJSON([]byte(value)) + if err != nil { + return err + } + opts := protojson.UnmarshalOptions{ + AllowPartial: true, + DiscardUnknown: false, + } + uError := opts.Unmarshal([]byte(data), obj.Msg()) + if uError != nil { + return fmt.Errorf("unmarshal error %s", strings.Replace( + uError.Error(), "\u00a0", " ", -1)[7:]) + } + + vErr := obj.validateToAndFrom() + if vErr != nil { + return vErr + } + return nil +} + +func (obj *patternFlowIpv6FlowLabelCounter) ToJson() (string, error) { + vErr := obj.validateToAndFrom() + if vErr != nil { + return "", vErr + } + opts := protojson.MarshalOptions{ + UseProtoNames: true, + AllowPartial: true, + EmitUnpopulated: false, + Indent: " ", + } + data, err := opts.Marshal(obj.Msg()) + if err != nil { + return "", err + } + return string(data), nil +} + +func (obj *patternFlowIpv6FlowLabelCounter) FromJson(value string) error { + opts := protojson.UnmarshalOptions{ + AllowPartial: true, + DiscardUnknown: false, + } + if value == "" { + value = "{}" + } + uError := opts.Unmarshal([]byte(value), obj.Msg()) + if uError != nil { + return fmt.Errorf("unmarshal error %s", strings.Replace( + uError.Error(), "\u00a0", " ", -1)[7:]) + } + + err := obj.validateToAndFrom() + if err != nil { + return err + } + return nil +} + +func (obj *patternFlowIpv6FlowLabelCounter) validateToAndFrom() error { + // emptyVars() + obj.validateObj(&obj.validation, true) + return obj.validationResult() +} + +func (obj *patternFlowIpv6FlowLabelCounter) Validate() error { + // emptyVars() + obj.validateObj(&obj.validation, false) + return obj.validationResult() +} + +func (obj *patternFlowIpv6FlowLabelCounter) String() string { + str, err := obj.ToYaml() + if err != nil { + return err.Error() + } + return str +} + +func (obj *patternFlowIpv6FlowLabelCounter) Clone() (PatternFlowIpv6FlowLabelCounter, error) { + vErr := obj.Validate() + if vErr != nil { + return nil, vErr + } + newObj := NewPatternFlowIpv6FlowLabelCounter() + data, err := proto.Marshal(obj.Msg()) + if err != nil { + return nil, err + } + pbErr := proto.Unmarshal(data, newObj.Msg()) + if pbErr != nil { + return nil, pbErr + } + return newObj, nil +} + +// PatternFlowIpv6FlowLabelCounter is integer counter pattern +type PatternFlowIpv6FlowLabelCounter interface { + Validation + // Msg marshals PatternFlowIpv6FlowLabelCounter to protobuf object *otg.PatternFlowIpv6FlowLabelCounter + // and doesn't set defaults + Msg() *otg.PatternFlowIpv6FlowLabelCounter + // SetMsg unmarshals PatternFlowIpv6FlowLabelCounter from protobuf object *otg.PatternFlowIpv6FlowLabelCounter + // and doesn't set defaults + SetMsg(*otg.PatternFlowIpv6FlowLabelCounter) PatternFlowIpv6FlowLabelCounter + // ToProto marshals PatternFlowIpv6FlowLabelCounter to protobuf object *otg.PatternFlowIpv6FlowLabelCounter + ToProto() (*otg.PatternFlowIpv6FlowLabelCounter, error) + // ToPbText marshals PatternFlowIpv6FlowLabelCounter to protobuf text + ToPbText() (string, error) + // ToYaml marshals PatternFlowIpv6FlowLabelCounter to YAML text + ToYaml() (string, error) + // ToJson marshals PatternFlowIpv6FlowLabelCounter to JSON text + ToJson() (string, error) + // FromProto unmarshals PatternFlowIpv6FlowLabelCounter from protobuf object *otg.PatternFlowIpv6FlowLabelCounter + FromProto(msg *otg.PatternFlowIpv6FlowLabelCounter) (PatternFlowIpv6FlowLabelCounter, error) + // FromPbText unmarshals PatternFlowIpv6FlowLabelCounter from protobuf text + FromPbText(value string) error + // FromYaml unmarshals PatternFlowIpv6FlowLabelCounter from YAML text + FromYaml(value string) error + // FromJson unmarshals PatternFlowIpv6FlowLabelCounter from JSON text + FromJson(value string) error + // Validate validates PatternFlowIpv6FlowLabelCounter + Validate() error + // A stringer function + String() string + // Clones the object + Clone() (PatternFlowIpv6FlowLabelCounter, error) + validateToAndFrom() error + validateObj(vObj *validation, set_default bool) + setDefault() + // Start returns uint32, set in PatternFlowIpv6FlowLabelCounter. + Start() uint32 + // SetStart assigns uint32 provided by user to PatternFlowIpv6FlowLabelCounter + SetStart(value uint32) PatternFlowIpv6FlowLabelCounter + // HasStart checks if Start has been set in PatternFlowIpv6FlowLabelCounter + HasStart() bool + // Step returns uint32, set in PatternFlowIpv6FlowLabelCounter. + Step() uint32 + // SetStep assigns uint32 provided by user to PatternFlowIpv6FlowLabelCounter + SetStep(value uint32) PatternFlowIpv6FlowLabelCounter + // HasStep checks if Step has been set in PatternFlowIpv6FlowLabelCounter + HasStep() bool + // Count returns uint32, set in PatternFlowIpv6FlowLabelCounter. + Count() uint32 + // SetCount assigns uint32 provided by user to PatternFlowIpv6FlowLabelCounter + SetCount(value uint32) PatternFlowIpv6FlowLabelCounter + // HasCount checks if Count has been set in PatternFlowIpv6FlowLabelCounter + HasCount() bool +} + +// description is TBD +// Start returns a uint32 +func (obj *patternFlowIpv6FlowLabelCounter) Start() uint32 { + + return *obj.obj.Start + +} + +// description is TBD +// Start returns a uint32 +func (obj *patternFlowIpv6FlowLabelCounter) HasStart() bool { + return obj.obj.Start != nil +} + +// description is TBD +// SetStart sets the uint32 value in the PatternFlowIpv6FlowLabelCounter object +func (obj *patternFlowIpv6FlowLabelCounter) SetStart(value uint32) PatternFlowIpv6FlowLabelCounter { + + obj.obj.Start = &value + return obj +} + +// description is TBD +// Step returns a uint32 +func (obj *patternFlowIpv6FlowLabelCounter) Step() uint32 { + + return *obj.obj.Step + +} + +// description is TBD +// Step returns a uint32 +func (obj *patternFlowIpv6FlowLabelCounter) HasStep() bool { + return obj.obj.Step != nil +} + +// description is TBD +// SetStep sets the uint32 value in the PatternFlowIpv6FlowLabelCounter object +func (obj *patternFlowIpv6FlowLabelCounter) SetStep(value uint32) PatternFlowIpv6FlowLabelCounter { + + obj.obj.Step = &value + return obj +} + +// description is TBD +// Count returns a uint32 +func (obj *patternFlowIpv6FlowLabelCounter) Count() uint32 { + + return *obj.obj.Count + +} + +// description is TBD +// Count returns a uint32 +func (obj *patternFlowIpv6FlowLabelCounter) HasCount() bool { + return obj.obj.Count != nil +} + +// description is TBD +// SetCount sets the uint32 value in the PatternFlowIpv6FlowLabelCounter object +func (obj *patternFlowIpv6FlowLabelCounter) SetCount(value uint32) PatternFlowIpv6FlowLabelCounter { + + obj.obj.Count = &value + return obj +} + +func (obj *patternFlowIpv6FlowLabelCounter) validateObj(vObj *validation, set_default bool) { + if set_default { + obj.setDefault() + } + + if obj.obj.Start != nil { + + if *obj.obj.Start > 1048575 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("0 <= PatternFlowIpv6FlowLabelCounter.Start <= 1048575 but Got %d", *obj.obj.Start)) + } + + } + + if obj.obj.Step != nil { + + if *obj.obj.Step > 1048575 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("0 <= PatternFlowIpv6FlowLabelCounter.Step <= 1048575 but Got %d", *obj.obj.Step)) + } + + } + + if obj.obj.Count != nil { + + if *obj.obj.Count > 1048575 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("0 <= PatternFlowIpv6FlowLabelCounter.Count <= 1048575 but Got %d", *obj.obj.Count)) + } + + } + +} + +func (obj *patternFlowIpv6FlowLabelCounter) setDefault() { + if obj.obj.Start == nil { + obj.SetStart(0) + } + if obj.obj.Step == nil { + obj.SetStep(1) + } + if obj.obj.Count == nil { + obj.SetCount(1) + } + +} + +// ***** PatternFlowIpv6FlowLabelMetricTag ***** +type patternFlowIpv6FlowLabelMetricTag struct { + validation + obj *otg.PatternFlowIpv6FlowLabelMetricTag +} + +func NewPatternFlowIpv6FlowLabelMetricTag() PatternFlowIpv6FlowLabelMetricTag { + obj := patternFlowIpv6FlowLabelMetricTag{obj: &otg.PatternFlowIpv6FlowLabelMetricTag{}} + obj.setDefault() + return &obj +} + +func (obj *patternFlowIpv6FlowLabelMetricTag) Msg() *otg.PatternFlowIpv6FlowLabelMetricTag { + return obj.obj +} + +func (obj *patternFlowIpv6FlowLabelMetricTag) SetMsg(msg *otg.PatternFlowIpv6FlowLabelMetricTag) PatternFlowIpv6FlowLabelMetricTag { + + proto.Merge(obj.obj, msg) + return obj +} + +func (obj *patternFlowIpv6FlowLabelMetricTag) ToProto() (*otg.PatternFlowIpv6FlowLabelMetricTag, error) { + err := obj.validateToAndFrom() + if err != nil { + return nil, err + } + return obj.Msg(), nil +} + +func (obj *patternFlowIpv6FlowLabelMetricTag) FromProto(msg *otg.PatternFlowIpv6FlowLabelMetricTag) (PatternFlowIpv6FlowLabelMetricTag, error) { + newObj := obj.SetMsg(msg) + err := newObj.validateToAndFrom() + if err != nil { + return nil, err + } + return newObj, nil +} + +func (obj *patternFlowIpv6FlowLabelMetricTag) ToPbText() (string, error) { + vErr := obj.validateToAndFrom() + if vErr != nil { + return "", vErr + } + protoMarshal, err := proto.Marshal(obj.Msg()) + if err != nil { + return "", err + } + return string(protoMarshal), nil +} + +func (obj *patternFlowIpv6FlowLabelMetricTag) FromPbText(value string) error { + retObj := proto.Unmarshal([]byte(value), obj.Msg()) + if retObj != nil { + return retObj + } + + vErr := obj.validateToAndFrom() + if vErr != nil { + return vErr + } + return retObj +} + +func (obj *patternFlowIpv6FlowLabelMetricTag) ToYaml() (string, error) { + vErr := obj.validateToAndFrom() + if vErr != nil { + return "", vErr + } + opts := protojson.MarshalOptions{ + UseProtoNames: true, + AllowPartial: true, + EmitUnpopulated: false, + } + data, err := opts.Marshal(obj.Msg()) + if err != nil { + return "", err + } + data, err = yaml.JSONToYAML(data) + if err != nil { + return "", err + } + return string(data), nil +} + +func (obj *patternFlowIpv6FlowLabelMetricTag) FromYaml(value string) error { + if value == "" { + value = "{}" + } + data, err := yaml.YAMLToJSON([]byte(value)) + if err != nil { + return err + } + opts := protojson.UnmarshalOptions{ + AllowPartial: true, + DiscardUnknown: false, + } + uError := opts.Unmarshal([]byte(data), obj.Msg()) + if uError != nil { + return fmt.Errorf("unmarshal error %s", strings.Replace( + uError.Error(), "\u00a0", " ", -1)[7:]) + } + + vErr := obj.validateToAndFrom() + if vErr != nil { + return vErr + } + return nil +} + +func (obj *patternFlowIpv6FlowLabelMetricTag) ToJson() (string, error) { + vErr := obj.validateToAndFrom() + if vErr != nil { + return "", vErr + } + opts := protojson.MarshalOptions{ + UseProtoNames: true, + AllowPartial: true, + EmitUnpopulated: false, + Indent: " ", + } + data, err := opts.Marshal(obj.Msg()) + if err != nil { + return "", err + } + return string(data), nil +} + +func (obj *patternFlowIpv6FlowLabelMetricTag) FromJson(value string) error { + opts := protojson.UnmarshalOptions{ + AllowPartial: true, + DiscardUnknown: false, + } + if value == "" { + value = "{}" + } + uError := opts.Unmarshal([]byte(value), obj.Msg()) + if uError != nil { + return fmt.Errorf("unmarshal error %s", strings.Replace( + uError.Error(), "\u00a0", " ", -1)[7:]) + } + + err := obj.validateToAndFrom() + if err != nil { + return err + } + return nil +} + +func (obj *patternFlowIpv6FlowLabelMetricTag) validateToAndFrom() error { + // emptyVars() + obj.validateObj(&obj.validation, true) + return obj.validationResult() +} + +func (obj *patternFlowIpv6FlowLabelMetricTag) Validate() error { + // emptyVars() + obj.validateObj(&obj.validation, false) + return obj.validationResult() +} + +func (obj *patternFlowIpv6FlowLabelMetricTag) String() string { + str, err := obj.ToYaml() + if err != nil { + return err.Error() + } + return str +} + +func (obj *patternFlowIpv6FlowLabelMetricTag) Clone() (PatternFlowIpv6FlowLabelMetricTag, error) { + vErr := obj.Validate() + if vErr != nil { + return nil, vErr + } + newObj := NewPatternFlowIpv6FlowLabelMetricTag() + data, err := proto.Marshal(obj.Msg()) + if err != nil { + return nil, err + } + pbErr := proto.Unmarshal(data, newObj.Msg()) + if pbErr != nil { + return nil, pbErr + } + return newObj, nil +} + +// PatternFlowIpv6FlowLabelMetricTag is metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. +type PatternFlowIpv6FlowLabelMetricTag interface { + Validation + // Msg marshals PatternFlowIpv6FlowLabelMetricTag to protobuf object *otg.PatternFlowIpv6FlowLabelMetricTag + // and doesn't set defaults + Msg() *otg.PatternFlowIpv6FlowLabelMetricTag + // SetMsg unmarshals PatternFlowIpv6FlowLabelMetricTag from protobuf object *otg.PatternFlowIpv6FlowLabelMetricTag + // and doesn't set defaults + SetMsg(*otg.PatternFlowIpv6FlowLabelMetricTag) PatternFlowIpv6FlowLabelMetricTag + // ToProto marshals PatternFlowIpv6FlowLabelMetricTag to protobuf object *otg.PatternFlowIpv6FlowLabelMetricTag + ToProto() (*otg.PatternFlowIpv6FlowLabelMetricTag, error) + // ToPbText marshals PatternFlowIpv6FlowLabelMetricTag to protobuf text + ToPbText() (string, error) + // ToYaml marshals PatternFlowIpv6FlowLabelMetricTag to YAML text + ToYaml() (string, error) + // ToJson marshals PatternFlowIpv6FlowLabelMetricTag to JSON text + ToJson() (string, error) + // FromProto unmarshals PatternFlowIpv6FlowLabelMetricTag from protobuf object *otg.PatternFlowIpv6FlowLabelMetricTag + FromProto(msg *otg.PatternFlowIpv6FlowLabelMetricTag) (PatternFlowIpv6FlowLabelMetricTag, error) + // FromPbText unmarshals PatternFlowIpv6FlowLabelMetricTag from protobuf text + FromPbText(value string) error + // FromYaml unmarshals PatternFlowIpv6FlowLabelMetricTag from YAML text + FromYaml(value string) error + // FromJson unmarshals PatternFlowIpv6FlowLabelMetricTag from JSON text + FromJson(value string) error + // Validate validates PatternFlowIpv6FlowLabelMetricTag + Validate() error + // A stringer function + String() string + // Clones the object + Clone() (PatternFlowIpv6FlowLabelMetricTag, error) + validateToAndFrom() error + validateObj(vObj *validation, set_default bool) + setDefault() + // Name returns string, set in PatternFlowIpv6FlowLabelMetricTag. + Name() string + // SetName assigns string provided by user to PatternFlowIpv6FlowLabelMetricTag + SetName(value string) PatternFlowIpv6FlowLabelMetricTag + // Offset returns uint32, set in PatternFlowIpv6FlowLabelMetricTag. + Offset() uint32 + // SetOffset assigns uint32 provided by user to PatternFlowIpv6FlowLabelMetricTag + SetOffset(value uint32) PatternFlowIpv6FlowLabelMetricTag + // HasOffset checks if Offset has been set in PatternFlowIpv6FlowLabelMetricTag + HasOffset() bool + // Length returns uint32, set in PatternFlowIpv6FlowLabelMetricTag. + Length() uint32 + // SetLength assigns uint32 provided by user to PatternFlowIpv6FlowLabelMetricTag + SetLength(value uint32) PatternFlowIpv6FlowLabelMetricTag + // HasLength checks if Length has been set in PatternFlowIpv6FlowLabelMetricTag + HasLength() bool +} + +// Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field +// Name returns a string +func (obj *patternFlowIpv6FlowLabelMetricTag) Name() string { + + return *obj.obj.Name + +} + +// Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field +// SetName sets the string value in the PatternFlowIpv6FlowLabelMetricTag object +func (obj *patternFlowIpv6FlowLabelMetricTag) SetName(value string) PatternFlowIpv6FlowLabelMetricTag { + + obj.obj.Name = &value + return obj +} + +// Offset in bits relative to start of corresponding header field +// Offset returns a uint32 +func (obj *patternFlowIpv6FlowLabelMetricTag) Offset() uint32 { + + return *obj.obj.Offset + +} + +// Offset in bits relative to start of corresponding header field +// Offset returns a uint32 +func (obj *patternFlowIpv6FlowLabelMetricTag) HasOffset() bool { + return obj.obj.Offset != nil +} + +// Offset in bits relative to start of corresponding header field +// SetOffset sets the uint32 value in the PatternFlowIpv6FlowLabelMetricTag object +func (obj *patternFlowIpv6FlowLabelMetricTag) SetOffset(value uint32) PatternFlowIpv6FlowLabelMetricTag { + + obj.obj.Offset = &value + return obj +} + +// Number of bits to track for metrics starting from configured offset of corresponding header field +// Length returns a uint32 +func (obj *patternFlowIpv6FlowLabelMetricTag) Length() uint32 { + + return *obj.obj.Length + +} + +// Number of bits to track for metrics starting from configured offset of corresponding header field +// Length returns a uint32 +func (obj *patternFlowIpv6FlowLabelMetricTag) HasLength() bool { + return obj.obj.Length != nil +} + +// Number of bits to track for metrics starting from configured offset of corresponding header field +// SetLength sets the uint32 value in the PatternFlowIpv6FlowLabelMetricTag object +func (obj *patternFlowIpv6FlowLabelMetricTag) SetLength(value uint32) PatternFlowIpv6FlowLabelMetricTag { + + obj.obj.Length = &value + return obj +} + +func (obj *patternFlowIpv6FlowLabelMetricTag) validateObj(vObj *validation, set_default bool) { + if set_default { + obj.setDefault() + } + + // Name is required + if obj.obj.Name == nil { + vObj.validationErrors = append(vObj.validationErrors, "Name is required field on interface PatternFlowIpv6FlowLabelMetricTag") + } + + if obj.obj.Offset != nil { + + if *obj.obj.Offset > 19 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("0 <= PatternFlowIpv6FlowLabelMetricTag.Offset <= 19 but Got %d", *obj.obj.Offset)) + } + + } + + if obj.obj.Length != nil { + + if *obj.obj.Length < 1 || *obj.obj.Length > 20 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("1 <= PatternFlowIpv6FlowLabelMetricTag.Length <= 20 but Got %d", *obj.obj.Length)) + } + + } + +} + +func (obj *patternFlowIpv6FlowLabelMetricTag) setDefault() { + if obj.obj.Offset == nil { + obj.SetOffset(0) + } + if obj.obj.Length == nil { + obj.SetLength(20) + } + +} + +// ***** PatternFlowIpv6PayloadLengthCounter ***** +type patternFlowIpv6PayloadLengthCounter struct { + validation + obj *otg.PatternFlowIpv6PayloadLengthCounter +} + +func NewPatternFlowIpv6PayloadLengthCounter() PatternFlowIpv6PayloadLengthCounter { + obj := patternFlowIpv6PayloadLengthCounter{obj: &otg.PatternFlowIpv6PayloadLengthCounter{}} + obj.setDefault() + return &obj +} + +func (obj *patternFlowIpv6PayloadLengthCounter) Msg() *otg.PatternFlowIpv6PayloadLengthCounter { + return obj.obj +} + +func (obj *patternFlowIpv6PayloadLengthCounter) SetMsg(msg *otg.PatternFlowIpv6PayloadLengthCounter) PatternFlowIpv6PayloadLengthCounter { + + proto.Merge(obj.obj, msg) + return obj +} + +func (obj *patternFlowIpv6PayloadLengthCounter) ToProto() (*otg.PatternFlowIpv6PayloadLengthCounter, error) { + err := obj.validateToAndFrom() + if err != nil { + return nil, err + } + return obj.Msg(), nil +} + +func (obj *patternFlowIpv6PayloadLengthCounter) FromProto(msg *otg.PatternFlowIpv6PayloadLengthCounter) (PatternFlowIpv6PayloadLengthCounter, error) { + newObj := obj.SetMsg(msg) + err := newObj.validateToAndFrom() + if err != nil { + return nil, err + } + return newObj, nil +} + +func (obj *patternFlowIpv6PayloadLengthCounter) ToPbText() (string, error) { + vErr := obj.validateToAndFrom() + if vErr != nil { + return "", vErr + } + protoMarshal, err := proto.Marshal(obj.Msg()) + if err != nil { + return "", err + } + return string(protoMarshal), nil +} + +func (obj *patternFlowIpv6PayloadLengthCounter) FromPbText(value string) error { + retObj := proto.Unmarshal([]byte(value), obj.Msg()) + if retObj != nil { + return retObj + } + + vErr := obj.validateToAndFrom() + if vErr != nil { + return vErr + } + return retObj +} + +func (obj *patternFlowIpv6PayloadLengthCounter) ToYaml() (string, error) { + vErr := obj.validateToAndFrom() + if vErr != nil { + return "", vErr + } + opts := protojson.MarshalOptions{ + UseProtoNames: true, + AllowPartial: true, + EmitUnpopulated: false, + } + data, err := opts.Marshal(obj.Msg()) + if err != nil { + return "", err + } + data, err = yaml.JSONToYAML(data) + if err != nil { + return "", err + } + return string(data), nil +} + +func (obj *patternFlowIpv6PayloadLengthCounter) FromYaml(value string) error { + if value == "" { + value = "{}" + } + data, err := yaml.YAMLToJSON([]byte(value)) + if err != nil { + return err + } + opts := protojson.UnmarshalOptions{ + AllowPartial: true, + DiscardUnknown: false, + } + uError := opts.Unmarshal([]byte(data), obj.Msg()) + if uError != nil { + return fmt.Errorf("unmarshal error %s", strings.Replace( + uError.Error(), "\u00a0", " ", -1)[7:]) + } + + vErr := obj.validateToAndFrom() + if vErr != nil { + return vErr + } + return nil +} + +func (obj *patternFlowIpv6PayloadLengthCounter) ToJson() (string, error) { + vErr := obj.validateToAndFrom() + if vErr != nil { + return "", vErr + } + opts := protojson.MarshalOptions{ + UseProtoNames: true, + AllowPartial: true, + EmitUnpopulated: false, + Indent: " ", + } + data, err := opts.Marshal(obj.Msg()) + if err != nil { + return "", err + } + return string(data), nil +} + +func (obj *patternFlowIpv6PayloadLengthCounter) FromJson(value string) error { + opts := protojson.UnmarshalOptions{ + AllowPartial: true, + DiscardUnknown: false, + } + if value == "" { + value = "{}" + } + uError := opts.Unmarshal([]byte(value), obj.Msg()) + if uError != nil { + return fmt.Errorf("unmarshal error %s", strings.Replace( + uError.Error(), "\u00a0", " ", -1)[7:]) + } + + err := obj.validateToAndFrom() + if err != nil { + return err + } + return nil +} + +func (obj *patternFlowIpv6PayloadLengthCounter) validateToAndFrom() error { + // emptyVars() + obj.validateObj(&obj.validation, true) + return obj.validationResult() +} + +func (obj *patternFlowIpv6PayloadLengthCounter) Validate() error { + // emptyVars() + obj.validateObj(&obj.validation, false) + return obj.validationResult() +} + +func (obj *patternFlowIpv6PayloadLengthCounter) String() string { + str, err := obj.ToYaml() + if err != nil { + return err.Error() + } + return str +} + +func (obj *patternFlowIpv6PayloadLengthCounter) Clone() (PatternFlowIpv6PayloadLengthCounter, error) { + vErr := obj.Validate() + if vErr != nil { + return nil, vErr + } + newObj := NewPatternFlowIpv6PayloadLengthCounter() + data, err := proto.Marshal(obj.Msg()) + if err != nil { + return nil, err + } + pbErr := proto.Unmarshal(data, newObj.Msg()) + if pbErr != nil { + return nil, pbErr + } + return newObj, nil +} + +// PatternFlowIpv6PayloadLengthCounter is integer counter pattern +type PatternFlowIpv6PayloadLengthCounter interface { + Validation + // Msg marshals PatternFlowIpv6PayloadLengthCounter to protobuf object *otg.PatternFlowIpv6PayloadLengthCounter + // and doesn't set defaults + Msg() *otg.PatternFlowIpv6PayloadLengthCounter + // SetMsg unmarshals PatternFlowIpv6PayloadLengthCounter from protobuf object *otg.PatternFlowIpv6PayloadLengthCounter + // and doesn't set defaults + SetMsg(*otg.PatternFlowIpv6PayloadLengthCounter) PatternFlowIpv6PayloadLengthCounter + // ToProto marshals PatternFlowIpv6PayloadLengthCounter to protobuf object *otg.PatternFlowIpv6PayloadLengthCounter + ToProto() (*otg.PatternFlowIpv6PayloadLengthCounter, error) + // ToPbText marshals PatternFlowIpv6PayloadLengthCounter to protobuf text + ToPbText() (string, error) + // ToYaml marshals PatternFlowIpv6PayloadLengthCounter to YAML text + ToYaml() (string, error) + // ToJson marshals PatternFlowIpv6PayloadLengthCounter to JSON text + ToJson() (string, error) + // FromProto unmarshals PatternFlowIpv6PayloadLengthCounter from protobuf object *otg.PatternFlowIpv6PayloadLengthCounter + FromProto(msg *otg.PatternFlowIpv6PayloadLengthCounter) (PatternFlowIpv6PayloadLengthCounter, error) + // FromPbText unmarshals PatternFlowIpv6PayloadLengthCounter from protobuf text + FromPbText(value string) error + // FromYaml unmarshals PatternFlowIpv6PayloadLengthCounter from YAML text + FromYaml(value string) error + // FromJson unmarshals PatternFlowIpv6PayloadLengthCounter from JSON text + FromJson(value string) error + // Validate validates PatternFlowIpv6PayloadLengthCounter + Validate() error + // A stringer function + String() string + // Clones the object + Clone() (PatternFlowIpv6PayloadLengthCounter, error) + validateToAndFrom() error + validateObj(vObj *validation, set_default bool) + setDefault() + // Start returns uint32, set in PatternFlowIpv6PayloadLengthCounter. + Start() uint32 + // SetStart assigns uint32 provided by user to PatternFlowIpv6PayloadLengthCounter + SetStart(value uint32) PatternFlowIpv6PayloadLengthCounter + // HasStart checks if Start has been set in PatternFlowIpv6PayloadLengthCounter + HasStart() bool + // Step returns uint32, set in PatternFlowIpv6PayloadLengthCounter. + Step() uint32 + // SetStep assigns uint32 provided by user to PatternFlowIpv6PayloadLengthCounter + SetStep(value uint32) PatternFlowIpv6PayloadLengthCounter + // HasStep checks if Step has been set in PatternFlowIpv6PayloadLengthCounter + HasStep() bool + // Count returns uint32, set in PatternFlowIpv6PayloadLengthCounter. + Count() uint32 + // SetCount assigns uint32 provided by user to PatternFlowIpv6PayloadLengthCounter + SetCount(value uint32) PatternFlowIpv6PayloadLengthCounter + // HasCount checks if Count has been set in PatternFlowIpv6PayloadLengthCounter + HasCount() bool +} + +// description is TBD +// Start returns a uint32 +func (obj *patternFlowIpv6PayloadLengthCounter) Start() uint32 { + + return *obj.obj.Start + +} + +// description is TBD +// Start returns a uint32 +func (obj *patternFlowIpv6PayloadLengthCounter) HasStart() bool { + return obj.obj.Start != nil +} + +// description is TBD +// SetStart sets the uint32 value in the PatternFlowIpv6PayloadLengthCounter object +func (obj *patternFlowIpv6PayloadLengthCounter) SetStart(value uint32) PatternFlowIpv6PayloadLengthCounter { + + obj.obj.Start = &value + return obj +} + +// description is TBD +// Step returns a uint32 +func (obj *patternFlowIpv6PayloadLengthCounter) Step() uint32 { + + return *obj.obj.Step + +} + +// description is TBD +// Step returns a uint32 +func (obj *patternFlowIpv6PayloadLengthCounter) HasStep() bool { + return obj.obj.Step != nil +} + +// description is TBD +// SetStep sets the uint32 value in the PatternFlowIpv6PayloadLengthCounter object +func (obj *patternFlowIpv6PayloadLengthCounter) SetStep(value uint32) PatternFlowIpv6PayloadLengthCounter { + + obj.obj.Step = &value + return obj +} + +// description is TBD +// Count returns a uint32 +func (obj *patternFlowIpv6PayloadLengthCounter) Count() uint32 { + + return *obj.obj.Count + +} + +// description is TBD +// Count returns a uint32 +func (obj *patternFlowIpv6PayloadLengthCounter) HasCount() bool { + return obj.obj.Count != nil +} + +// description is TBD +// SetCount sets the uint32 value in the PatternFlowIpv6PayloadLengthCounter object +func (obj *patternFlowIpv6PayloadLengthCounter) SetCount(value uint32) PatternFlowIpv6PayloadLengthCounter { + + obj.obj.Count = &value + return obj +} + +func (obj *patternFlowIpv6PayloadLengthCounter) validateObj(vObj *validation, set_default bool) { + if set_default { + obj.setDefault() + } + + if obj.obj.Start != nil { + + if *obj.obj.Start > 65535 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("0 <= PatternFlowIpv6PayloadLengthCounter.Start <= 65535 but Got %d", *obj.obj.Start)) + } + + } + + if obj.obj.Step != nil { + + if *obj.obj.Step > 65535 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("0 <= PatternFlowIpv6PayloadLengthCounter.Step <= 65535 but Got %d", *obj.obj.Step)) + } + + } + + if obj.obj.Count != nil { + + if *obj.obj.Count > 65535 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("0 <= PatternFlowIpv6PayloadLengthCounter.Count <= 65535 but Got %d", *obj.obj.Count)) + } + + } + +} + +func (obj *patternFlowIpv6PayloadLengthCounter) setDefault() { + if obj.obj.Start == nil { + obj.SetStart(0) + } + if obj.obj.Step == nil { + obj.SetStep(1) + } + if obj.obj.Count == nil { + obj.SetCount(1) + } + +} + +// ***** PatternFlowIpv6PayloadLengthMetricTag ***** +type patternFlowIpv6PayloadLengthMetricTag struct { + validation + obj *otg.PatternFlowIpv6PayloadLengthMetricTag +} + +func NewPatternFlowIpv6PayloadLengthMetricTag() PatternFlowIpv6PayloadLengthMetricTag { + obj := patternFlowIpv6PayloadLengthMetricTag{obj: &otg.PatternFlowIpv6PayloadLengthMetricTag{}} + obj.setDefault() + return &obj +} + +func (obj *patternFlowIpv6PayloadLengthMetricTag) Msg() *otg.PatternFlowIpv6PayloadLengthMetricTag { + return obj.obj +} + +func (obj *patternFlowIpv6PayloadLengthMetricTag) SetMsg(msg *otg.PatternFlowIpv6PayloadLengthMetricTag) PatternFlowIpv6PayloadLengthMetricTag { + + proto.Merge(obj.obj, msg) + return obj +} + +func (obj *patternFlowIpv6PayloadLengthMetricTag) ToProto() (*otg.PatternFlowIpv6PayloadLengthMetricTag, error) { + err := obj.validateToAndFrom() + if err != nil { + return nil, err + } + return obj.Msg(), nil +} + +func (obj *patternFlowIpv6PayloadLengthMetricTag) FromProto(msg *otg.PatternFlowIpv6PayloadLengthMetricTag) (PatternFlowIpv6PayloadLengthMetricTag, error) { + newObj := obj.SetMsg(msg) + err := newObj.validateToAndFrom() + if err != nil { + return nil, err + } + return newObj, nil +} + +func (obj *patternFlowIpv6PayloadLengthMetricTag) ToPbText() (string, error) { + vErr := obj.validateToAndFrom() + if vErr != nil { + return "", vErr + } + protoMarshal, err := proto.Marshal(obj.Msg()) + if err != nil { + return "", err + } + return string(protoMarshal), nil +} + +func (obj *patternFlowIpv6PayloadLengthMetricTag) FromPbText(value string) error { + retObj := proto.Unmarshal([]byte(value), obj.Msg()) + if retObj != nil { + return retObj + } + + vErr := obj.validateToAndFrom() + if vErr != nil { + return vErr + } + return retObj +} + +func (obj *patternFlowIpv6PayloadLengthMetricTag) ToYaml() (string, error) { + vErr := obj.validateToAndFrom() + if vErr != nil { + return "", vErr + } + opts := protojson.MarshalOptions{ + UseProtoNames: true, + AllowPartial: true, + EmitUnpopulated: false, + } + data, err := opts.Marshal(obj.Msg()) + if err != nil { + return "", err + } + data, err = yaml.JSONToYAML(data) + if err != nil { + return "", err + } + return string(data), nil +} + +func (obj *patternFlowIpv6PayloadLengthMetricTag) FromYaml(value string) error { + if value == "" { + value = "{}" + } + data, err := yaml.YAMLToJSON([]byte(value)) + if err != nil { + return err + } + opts := protojson.UnmarshalOptions{ + AllowPartial: true, + DiscardUnknown: false, + } + uError := opts.Unmarshal([]byte(data), obj.Msg()) + if uError != nil { + return fmt.Errorf("unmarshal error %s", strings.Replace( + uError.Error(), "\u00a0", " ", -1)[7:]) + } + + vErr := obj.validateToAndFrom() + if vErr != nil { + return vErr + } + return nil +} + +func (obj *patternFlowIpv6PayloadLengthMetricTag) ToJson() (string, error) { + vErr := obj.validateToAndFrom() + if vErr != nil { + return "", vErr + } + opts := protojson.MarshalOptions{ + UseProtoNames: true, + AllowPartial: true, + EmitUnpopulated: false, + Indent: " ", + } + data, err := opts.Marshal(obj.Msg()) + if err != nil { + return "", err + } + return string(data), nil +} + +func (obj *patternFlowIpv6PayloadLengthMetricTag) FromJson(value string) error { + opts := protojson.UnmarshalOptions{ + AllowPartial: true, + DiscardUnknown: false, + } + if value == "" { + value = "{}" + } + uError := opts.Unmarshal([]byte(value), obj.Msg()) + if uError != nil { + return fmt.Errorf("unmarshal error %s", strings.Replace( + uError.Error(), "\u00a0", " ", -1)[7:]) + } + + err := obj.validateToAndFrom() + if err != nil { + return err + } + return nil +} + +func (obj *patternFlowIpv6PayloadLengthMetricTag) validateToAndFrom() error { + // emptyVars() + obj.validateObj(&obj.validation, true) + return obj.validationResult() +} + +func (obj *patternFlowIpv6PayloadLengthMetricTag) Validate() error { + // emptyVars() + obj.validateObj(&obj.validation, false) + return obj.validationResult() +} + +func (obj *patternFlowIpv6PayloadLengthMetricTag) String() string { + str, err := obj.ToYaml() + if err != nil { + return err.Error() + } + return str +} + +func (obj *patternFlowIpv6PayloadLengthMetricTag) Clone() (PatternFlowIpv6PayloadLengthMetricTag, error) { + vErr := obj.Validate() + if vErr != nil { + return nil, vErr + } + newObj := NewPatternFlowIpv6PayloadLengthMetricTag() + data, err := proto.Marshal(obj.Msg()) + if err != nil { + return nil, err + } + pbErr := proto.Unmarshal(data, newObj.Msg()) + if pbErr != nil { + return nil, pbErr + } + return newObj, nil +} + +// PatternFlowIpv6PayloadLengthMetricTag is metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. +type PatternFlowIpv6PayloadLengthMetricTag interface { + Validation + // Msg marshals PatternFlowIpv6PayloadLengthMetricTag to protobuf object *otg.PatternFlowIpv6PayloadLengthMetricTag + // and doesn't set defaults + Msg() *otg.PatternFlowIpv6PayloadLengthMetricTag + // SetMsg unmarshals PatternFlowIpv6PayloadLengthMetricTag from protobuf object *otg.PatternFlowIpv6PayloadLengthMetricTag + // and doesn't set defaults + SetMsg(*otg.PatternFlowIpv6PayloadLengthMetricTag) PatternFlowIpv6PayloadLengthMetricTag + // ToProto marshals PatternFlowIpv6PayloadLengthMetricTag to protobuf object *otg.PatternFlowIpv6PayloadLengthMetricTag + ToProto() (*otg.PatternFlowIpv6PayloadLengthMetricTag, error) + // ToPbText marshals PatternFlowIpv6PayloadLengthMetricTag to protobuf text + ToPbText() (string, error) + // ToYaml marshals PatternFlowIpv6PayloadLengthMetricTag to YAML text + ToYaml() (string, error) + // ToJson marshals PatternFlowIpv6PayloadLengthMetricTag to JSON text + ToJson() (string, error) + // FromProto unmarshals PatternFlowIpv6PayloadLengthMetricTag from protobuf object *otg.PatternFlowIpv6PayloadLengthMetricTag + FromProto(msg *otg.PatternFlowIpv6PayloadLengthMetricTag) (PatternFlowIpv6PayloadLengthMetricTag, error) + // FromPbText unmarshals PatternFlowIpv6PayloadLengthMetricTag from protobuf text + FromPbText(value string) error + // FromYaml unmarshals PatternFlowIpv6PayloadLengthMetricTag from YAML text + FromYaml(value string) error + // FromJson unmarshals PatternFlowIpv6PayloadLengthMetricTag from JSON text + FromJson(value string) error + // Validate validates PatternFlowIpv6PayloadLengthMetricTag + Validate() error + // A stringer function + String() string + // Clones the object + Clone() (PatternFlowIpv6PayloadLengthMetricTag, error) + validateToAndFrom() error + validateObj(vObj *validation, set_default bool) + setDefault() + // Name returns string, set in PatternFlowIpv6PayloadLengthMetricTag. + Name() string + // SetName assigns string provided by user to PatternFlowIpv6PayloadLengthMetricTag + SetName(value string) PatternFlowIpv6PayloadLengthMetricTag + // Offset returns uint32, set in PatternFlowIpv6PayloadLengthMetricTag. + Offset() uint32 + // SetOffset assigns uint32 provided by user to PatternFlowIpv6PayloadLengthMetricTag + SetOffset(value uint32) PatternFlowIpv6PayloadLengthMetricTag + // HasOffset checks if Offset has been set in PatternFlowIpv6PayloadLengthMetricTag + HasOffset() bool + // Length returns uint32, set in PatternFlowIpv6PayloadLengthMetricTag. + Length() uint32 + // SetLength assigns uint32 provided by user to PatternFlowIpv6PayloadLengthMetricTag + SetLength(value uint32) PatternFlowIpv6PayloadLengthMetricTag + // HasLength checks if Length has been set in PatternFlowIpv6PayloadLengthMetricTag + HasLength() bool +} + +// Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field +// Name returns a string +func (obj *patternFlowIpv6PayloadLengthMetricTag) Name() string { + + return *obj.obj.Name + +} + +// Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field +// SetName sets the string value in the PatternFlowIpv6PayloadLengthMetricTag object +func (obj *patternFlowIpv6PayloadLengthMetricTag) SetName(value string) PatternFlowIpv6PayloadLengthMetricTag { + + obj.obj.Name = &value + return obj +} + +// Offset in bits relative to start of corresponding header field +// Offset returns a uint32 +func (obj *patternFlowIpv6PayloadLengthMetricTag) Offset() uint32 { + + return *obj.obj.Offset + +} + +// Offset in bits relative to start of corresponding header field +// Offset returns a uint32 +func (obj *patternFlowIpv6PayloadLengthMetricTag) HasOffset() bool { + return obj.obj.Offset != nil +} + +// Offset in bits relative to start of corresponding header field +// SetOffset sets the uint32 value in the PatternFlowIpv6PayloadLengthMetricTag object +func (obj *patternFlowIpv6PayloadLengthMetricTag) SetOffset(value uint32) PatternFlowIpv6PayloadLengthMetricTag { + + obj.obj.Offset = &value + return obj +} + +// Number of bits to track for metrics starting from configured offset of corresponding header field +// Length returns a uint32 +func (obj *patternFlowIpv6PayloadLengthMetricTag) Length() uint32 { + + return *obj.obj.Length + +} + +// Number of bits to track for metrics starting from configured offset of corresponding header field +// Length returns a uint32 +func (obj *patternFlowIpv6PayloadLengthMetricTag) HasLength() bool { + return obj.obj.Length != nil +} + +// Number of bits to track for metrics starting from configured offset of corresponding header field +// SetLength sets the uint32 value in the PatternFlowIpv6PayloadLengthMetricTag object +func (obj *patternFlowIpv6PayloadLengthMetricTag) SetLength(value uint32) PatternFlowIpv6PayloadLengthMetricTag { + + obj.obj.Length = &value + return obj +} + +func (obj *patternFlowIpv6PayloadLengthMetricTag) validateObj(vObj *validation, set_default bool) { + if set_default { + obj.setDefault() + } + + // Name is required + if obj.obj.Name == nil { + vObj.validationErrors = append(vObj.validationErrors, "Name is required field on interface PatternFlowIpv6PayloadLengthMetricTag") + } + + if obj.obj.Offset != nil { + + if *obj.obj.Offset > 15 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("0 <= PatternFlowIpv6PayloadLengthMetricTag.Offset <= 15 but Got %d", *obj.obj.Offset)) + } + + } + + if obj.obj.Length != nil { + + if *obj.obj.Length < 1 || *obj.obj.Length > 16 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("1 <= PatternFlowIpv6PayloadLengthMetricTag.Length <= 16 but Got %d", *obj.obj.Length)) + } + + } + +} + +func (obj *patternFlowIpv6PayloadLengthMetricTag) setDefault() { + if obj.obj.Offset == nil { + obj.SetOffset(0) + } + if obj.obj.Length == nil { + obj.SetLength(16) + } + +} + +// ***** PatternFlowIpv6NextHeaderCounter ***** +type patternFlowIpv6NextHeaderCounter struct { + validation + obj *otg.PatternFlowIpv6NextHeaderCounter +} + +func NewPatternFlowIpv6NextHeaderCounter() PatternFlowIpv6NextHeaderCounter { + obj := patternFlowIpv6NextHeaderCounter{obj: &otg.PatternFlowIpv6NextHeaderCounter{}} + obj.setDefault() + return &obj +} + +func (obj *patternFlowIpv6NextHeaderCounter) Msg() *otg.PatternFlowIpv6NextHeaderCounter { + return obj.obj +} + +func (obj *patternFlowIpv6NextHeaderCounter) SetMsg(msg *otg.PatternFlowIpv6NextHeaderCounter) PatternFlowIpv6NextHeaderCounter { + + proto.Merge(obj.obj, msg) + return obj +} + +func (obj *patternFlowIpv6NextHeaderCounter) ToProto() (*otg.PatternFlowIpv6NextHeaderCounter, error) { + err := obj.validateToAndFrom() + if err != nil { + return nil, err + } + return obj.Msg(), nil +} + +func (obj *patternFlowIpv6NextHeaderCounter) FromProto(msg *otg.PatternFlowIpv6NextHeaderCounter) (PatternFlowIpv6NextHeaderCounter, error) { + newObj := obj.SetMsg(msg) + err := newObj.validateToAndFrom() + if err != nil { + return nil, err + } + return newObj, nil +} + +func (obj *patternFlowIpv6NextHeaderCounter) ToPbText() (string, error) { + vErr := obj.validateToAndFrom() + if vErr != nil { + return "", vErr + } + protoMarshal, err := proto.Marshal(obj.Msg()) + if err != nil { + return "", err + } + return string(protoMarshal), nil +} + +func (obj *patternFlowIpv6NextHeaderCounter) FromPbText(value string) error { + retObj := proto.Unmarshal([]byte(value), obj.Msg()) + if retObj != nil { + return retObj + } + + vErr := obj.validateToAndFrom() + if vErr != nil { + return vErr + } + return retObj +} + +func (obj *patternFlowIpv6NextHeaderCounter) ToYaml() (string, error) { + vErr := obj.validateToAndFrom() + if vErr != nil { + return "", vErr + } + opts := protojson.MarshalOptions{ + UseProtoNames: true, + AllowPartial: true, + EmitUnpopulated: false, + } + data, err := opts.Marshal(obj.Msg()) + if err != nil { + return "", err + } + data, err = yaml.JSONToYAML(data) + if err != nil { + return "", err + } + return string(data), nil +} + +func (obj *patternFlowIpv6NextHeaderCounter) FromYaml(value string) error { + if value == "" { + value = "{}" + } + data, err := yaml.YAMLToJSON([]byte(value)) + if err != nil { + return err + } + opts := protojson.UnmarshalOptions{ + AllowPartial: true, + DiscardUnknown: false, + } + uError := opts.Unmarshal([]byte(data), obj.Msg()) + if uError != nil { + return fmt.Errorf("unmarshal error %s", strings.Replace( + uError.Error(), "\u00a0", " ", -1)[7:]) + } + + vErr := obj.validateToAndFrom() + if vErr != nil { + return vErr + } + return nil +} + +func (obj *patternFlowIpv6NextHeaderCounter) ToJson() (string, error) { + vErr := obj.validateToAndFrom() + if vErr != nil { + return "", vErr + } + opts := protojson.MarshalOptions{ + UseProtoNames: true, + AllowPartial: true, + EmitUnpopulated: false, + Indent: " ", + } + data, err := opts.Marshal(obj.Msg()) + if err != nil { + return "", err + } + return string(data), nil +} + +func (obj *patternFlowIpv6NextHeaderCounter) FromJson(value string) error { + opts := protojson.UnmarshalOptions{ + AllowPartial: true, + DiscardUnknown: false, + } + if value == "" { + value = "{}" + } + uError := opts.Unmarshal([]byte(value), obj.Msg()) + if uError != nil { + return fmt.Errorf("unmarshal error %s", strings.Replace( + uError.Error(), "\u00a0", " ", -1)[7:]) + } + + err := obj.validateToAndFrom() + if err != nil { + return err + } + return nil +} + +func (obj *patternFlowIpv6NextHeaderCounter) validateToAndFrom() error { + // emptyVars() + obj.validateObj(&obj.validation, true) + return obj.validationResult() +} + +func (obj *patternFlowIpv6NextHeaderCounter) Validate() error { + // emptyVars() + obj.validateObj(&obj.validation, false) + return obj.validationResult() +} + +func (obj *patternFlowIpv6NextHeaderCounter) String() string { + str, err := obj.ToYaml() + if err != nil { + return err.Error() + } + return str +} + +func (obj *patternFlowIpv6NextHeaderCounter) Clone() (PatternFlowIpv6NextHeaderCounter, error) { + vErr := obj.Validate() + if vErr != nil { + return nil, vErr + } + newObj := NewPatternFlowIpv6NextHeaderCounter() + data, err := proto.Marshal(obj.Msg()) + if err != nil { + return nil, err + } + pbErr := proto.Unmarshal(data, newObj.Msg()) + if pbErr != nil { + return nil, pbErr + } + return newObj, nil +} + +// PatternFlowIpv6NextHeaderCounter is integer counter pattern +type PatternFlowIpv6NextHeaderCounter interface { + Validation + // Msg marshals PatternFlowIpv6NextHeaderCounter to protobuf object *otg.PatternFlowIpv6NextHeaderCounter + // and doesn't set defaults + Msg() *otg.PatternFlowIpv6NextHeaderCounter + // SetMsg unmarshals PatternFlowIpv6NextHeaderCounter from protobuf object *otg.PatternFlowIpv6NextHeaderCounter + // and doesn't set defaults + SetMsg(*otg.PatternFlowIpv6NextHeaderCounter) PatternFlowIpv6NextHeaderCounter + // ToProto marshals PatternFlowIpv6NextHeaderCounter to protobuf object *otg.PatternFlowIpv6NextHeaderCounter + ToProto() (*otg.PatternFlowIpv6NextHeaderCounter, error) + // ToPbText marshals PatternFlowIpv6NextHeaderCounter to protobuf text + ToPbText() (string, error) + // ToYaml marshals PatternFlowIpv6NextHeaderCounter to YAML text + ToYaml() (string, error) + // ToJson marshals PatternFlowIpv6NextHeaderCounter to JSON text + ToJson() (string, error) + // FromProto unmarshals PatternFlowIpv6NextHeaderCounter from protobuf object *otg.PatternFlowIpv6NextHeaderCounter + FromProto(msg *otg.PatternFlowIpv6NextHeaderCounter) (PatternFlowIpv6NextHeaderCounter, error) + // FromPbText unmarshals PatternFlowIpv6NextHeaderCounter from protobuf text + FromPbText(value string) error + // FromYaml unmarshals PatternFlowIpv6NextHeaderCounter from YAML text + FromYaml(value string) error + // FromJson unmarshals PatternFlowIpv6NextHeaderCounter from JSON text + FromJson(value string) error + // Validate validates PatternFlowIpv6NextHeaderCounter + Validate() error + // A stringer function + String() string + // Clones the object + Clone() (PatternFlowIpv6NextHeaderCounter, error) + validateToAndFrom() error + validateObj(vObj *validation, set_default bool) + setDefault() + // Start returns uint32, set in PatternFlowIpv6NextHeaderCounter. + Start() uint32 + // SetStart assigns uint32 provided by user to PatternFlowIpv6NextHeaderCounter + SetStart(value uint32) PatternFlowIpv6NextHeaderCounter + // HasStart checks if Start has been set in PatternFlowIpv6NextHeaderCounter + HasStart() bool + // Step returns uint32, set in PatternFlowIpv6NextHeaderCounter. + Step() uint32 + // SetStep assigns uint32 provided by user to PatternFlowIpv6NextHeaderCounter + SetStep(value uint32) PatternFlowIpv6NextHeaderCounter + // HasStep checks if Step has been set in PatternFlowIpv6NextHeaderCounter + HasStep() bool + // Count returns uint32, set in PatternFlowIpv6NextHeaderCounter. + Count() uint32 + // SetCount assigns uint32 provided by user to PatternFlowIpv6NextHeaderCounter + SetCount(value uint32) PatternFlowIpv6NextHeaderCounter + // HasCount checks if Count has been set in PatternFlowIpv6NextHeaderCounter + HasCount() bool +} + +// description is TBD +// Start returns a uint32 +func (obj *patternFlowIpv6NextHeaderCounter) Start() uint32 { + + return *obj.obj.Start + +} + +// description is TBD +// Start returns a uint32 +func (obj *patternFlowIpv6NextHeaderCounter) HasStart() bool { + return obj.obj.Start != nil +} + +// description is TBD +// SetStart sets the uint32 value in the PatternFlowIpv6NextHeaderCounter object +func (obj *patternFlowIpv6NextHeaderCounter) SetStart(value uint32) PatternFlowIpv6NextHeaderCounter { + + obj.obj.Start = &value + return obj +} + +// description is TBD +// Step returns a uint32 +func (obj *patternFlowIpv6NextHeaderCounter) Step() uint32 { + + return *obj.obj.Step + +} + +// description is TBD +// Step returns a uint32 +func (obj *patternFlowIpv6NextHeaderCounter) HasStep() bool { + return obj.obj.Step != nil +} + +// description is TBD +// SetStep sets the uint32 value in the PatternFlowIpv6NextHeaderCounter object +func (obj *patternFlowIpv6NextHeaderCounter) SetStep(value uint32) PatternFlowIpv6NextHeaderCounter { + + obj.obj.Step = &value + return obj +} + +// description is TBD +// Count returns a uint32 +func (obj *patternFlowIpv6NextHeaderCounter) Count() uint32 { + + return *obj.obj.Count + +} + +// description is TBD +// Count returns a uint32 +func (obj *patternFlowIpv6NextHeaderCounter) HasCount() bool { + return obj.obj.Count != nil +} + +// description is TBD +// SetCount sets the uint32 value in the PatternFlowIpv6NextHeaderCounter object +func (obj *patternFlowIpv6NextHeaderCounter) SetCount(value uint32) PatternFlowIpv6NextHeaderCounter { + + obj.obj.Count = &value + return obj +} + +func (obj *patternFlowIpv6NextHeaderCounter) validateObj(vObj *validation, set_default bool) { + if set_default { + obj.setDefault() + } + + if obj.obj.Start != nil { + + if *obj.obj.Start > 255 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("0 <= PatternFlowIpv6NextHeaderCounter.Start <= 255 but Got %d", *obj.obj.Start)) + } + + } + + if obj.obj.Step != nil { + + if *obj.obj.Step > 255 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("0 <= PatternFlowIpv6NextHeaderCounter.Step <= 255 but Got %d", *obj.obj.Step)) + } + + } + + if obj.obj.Count != nil { + + if *obj.obj.Count > 255 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("0 <= PatternFlowIpv6NextHeaderCounter.Count <= 255 but Got %d", *obj.obj.Count)) + } + + } + +} + +func (obj *patternFlowIpv6NextHeaderCounter) setDefault() { + if obj.obj.Start == nil { + obj.SetStart(59) + } + if obj.obj.Step == nil { + obj.SetStep(1) + } + if obj.obj.Count == nil { + obj.SetCount(1) + } + +} + +// ***** PatternFlowIpv6NextHeaderMetricTag ***** +type patternFlowIpv6NextHeaderMetricTag struct { + validation + obj *otg.PatternFlowIpv6NextHeaderMetricTag +} + +func NewPatternFlowIpv6NextHeaderMetricTag() PatternFlowIpv6NextHeaderMetricTag { + obj := patternFlowIpv6NextHeaderMetricTag{obj: &otg.PatternFlowIpv6NextHeaderMetricTag{}} + obj.setDefault() + return &obj +} + +func (obj *patternFlowIpv6NextHeaderMetricTag) Msg() *otg.PatternFlowIpv6NextHeaderMetricTag { + return obj.obj +} + +func (obj *patternFlowIpv6NextHeaderMetricTag) SetMsg(msg *otg.PatternFlowIpv6NextHeaderMetricTag) PatternFlowIpv6NextHeaderMetricTag { + + proto.Merge(obj.obj, msg) + return obj +} + +func (obj *patternFlowIpv6NextHeaderMetricTag) ToProto() (*otg.PatternFlowIpv6NextHeaderMetricTag, error) { + err := obj.validateToAndFrom() + if err != nil { + return nil, err + } + return obj.Msg(), nil +} + +func (obj *patternFlowIpv6NextHeaderMetricTag) FromProto(msg *otg.PatternFlowIpv6NextHeaderMetricTag) (PatternFlowIpv6NextHeaderMetricTag, error) { + newObj := obj.SetMsg(msg) + err := newObj.validateToAndFrom() + if err != nil { + return nil, err + } + return newObj, nil +} + +func (obj *patternFlowIpv6NextHeaderMetricTag) ToPbText() (string, error) { + vErr := obj.validateToAndFrom() + if vErr != nil { + return "", vErr + } + protoMarshal, err := proto.Marshal(obj.Msg()) + if err != nil { + return "", err + } + return string(protoMarshal), nil +} + +func (obj *patternFlowIpv6NextHeaderMetricTag) FromPbText(value string) error { + retObj := proto.Unmarshal([]byte(value), obj.Msg()) + if retObj != nil { + return retObj + } + + vErr := obj.validateToAndFrom() + if vErr != nil { + return vErr + } + return retObj +} + +func (obj *patternFlowIpv6NextHeaderMetricTag) ToYaml() (string, error) { + vErr := obj.validateToAndFrom() + if vErr != nil { + return "", vErr + } + opts := protojson.MarshalOptions{ + UseProtoNames: true, + AllowPartial: true, + EmitUnpopulated: false, + } + data, err := opts.Marshal(obj.Msg()) + if err != nil { + return "", err + } + data, err = yaml.JSONToYAML(data) + if err != nil { + return "", err + } + return string(data), nil +} + +func (obj *patternFlowIpv6NextHeaderMetricTag) FromYaml(value string) error { + if value == "" { + value = "{}" + } + data, err := yaml.YAMLToJSON([]byte(value)) + if err != nil { + return err + } + opts := protojson.UnmarshalOptions{ + AllowPartial: true, + DiscardUnknown: false, + } + uError := opts.Unmarshal([]byte(data), obj.Msg()) + if uError != nil { + return fmt.Errorf("unmarshal error %s", strings.Replace( + uError.Error(), "\u00a0", " ", -1)[7:]) + } + + vErr := obj.validateToAndFrom() + if vErr != nil { + return vErr + } + return nil +} + +func (obj *patternFlowIpv6NextHeaderMetricTag) ToJson() (string, error) { + vErr := obj.validateToAndFrom() + if vErr != nil { + return "", vErr + } + opts := protojson.MarshalOptions{ + UseProtoNames: true, + AllowPartial: true, + EmitUnpopulated: false, + Indent: " ", + } + data, err := opts.Marshal(obj.Msg()) + if err != nil { + return "", err + } + return string(data), nil +} + +func (obj *patternFlowIpv6NextHeaderMetricTag) FromJson(value string) error { + opts := protojson.UnmarshalOptions{ + AllowPartial: true, + DiscardUnknown: false, + } + if value == "" { + value = "{}" + } + uError := opts.Unmarshal([]byte(value), obj.Msg()) + if uError != nil { + return fmt.Errorf("unmarshal error %s", strings.Replace( + uError.Error(), "\u00a0", " ", -1)[7:]) + } + + err := obj.validateToAndFrom() + if err != nil { + return err + } + return nil +} + +func (obj *patternFlowIpv6NextHeaderMetricTag) validateToAndFrom() error { + // emptyVars() + obj.validateObj(&obj.validation, true) + return obj.validationResult() +} + +func (obj *patternFlowIpv6NextHeaderMetricTag) Validate() error { + // emptyVars() + obj.validateObj(&obj.validation, false) + return obj.validationResult() +} + +func (obj *patternFlowIpv6NextHeaderMetricTag) String() string { + str, err := obj.ToYaml() + if err != nil { + return err.Error() + } + return str +} + +func (obj *patternFlowIpv6NextHeaderMetricTag) Clone() (PatternFlowIpv6NextHeaderMetricTag, error) { + vErr := obj.Validate() + if vErr != nil { + return nil, vErr + } + newObj := NewPatternFlowIpv6NextHeaderMetricTag() + data, err := proto.Marshal(obj.Msg()) + if err != nil { + return nil, err + } + pbErr := proto.Unmarshal(data, newObj.Msg()) + if pbErr != nil { + return nil, pbErr + } + return newObj, nil +} + +// PatternFlowIpv6NextHeaderMetricTag is metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. +type PatternFlowIpv6NextHeaderMetricTag interface { + Validation + // Msg marshals PatternFlowIpv6NextHeaderMetricTag to protobuf object *otg.PatternFlowIpv6NextHeaderMetricTag + // and doesn't set defaults + Msg() *otg.PatternFlowIpv6NextHeaderMetricTag + // SetMsg unmarshals PatternFlowIpv6NextHeaderMetricTag from protobuf object *otg.PatternFlowIpv6NextHeaderMetricTag + // and doesn't set defaults + SetMsg(*otg.PatternFlowIpv6NextHeaderMetricTag) PatternFlowIpv6NextHeaderMetricTag + // ToProto marshals PatternFlowIpv6NextHeaderMetricTag to protobuf object *otg.PatternFlowIpv6NextHeaderMetricTag + ToProto() (*otg.PatternFlowIpv6NextHeaderMetricTag, error) + // ToPbText marshals PatternFlowIpv6NextHeaderMetricTag to protobuf text + ToPbText() (string, error) + // ToYaml marshals PatternFlowIpv6NextHeaderMetricTag to YAML text + ToYaml() (string, error) + // ToJson marshals PatternFlowIpv6NextHeaderMetricTag to JSON text + ToJson() (string, error) + // FromProto unmarshals PatternFlowIpv6NextHeaderMetricTag from protobuf object *otg.PatternFlowIpv6NextHeaderMetricTag + FromProto(msg *otg.PatternFlowIpv6NextHeaderMetricTag) (PatternFlowIpv6NextHeaderMetricTag, error) + // FromPbText unmarshals PatternFlowIpv6NextHeaderMetricTag from protobuf text + FromPbText(value string) error + // FromYaml unmarshals PatternFlowIpv6NextHeaderMetricTag from YAML text + FromYaml(value string) error + // FromJson unmarshals PatternFlowIpv6NextHeaderMetricTag from JSON text + FromJson(value string) error + // Validate validates PatternFlowIpv6NextHeaderMetricTag + Validate() error + // A stringer function + String() string + // Clones the object + Clone() (PatternFlowIpv6NextHeaderMetricTag, error) + validateToAndFrom() error + validateObj(vObj *validation, set_default bool) + setDefault() + // Name returns string, set in PatternFlowIpv6NextHeaderMetricTag. + Name() string + // SetName assigns string provided by user to PatternFlowIpv6NextHeaderMetricTag + SetName(value string) PatternFlowIpv6NextHeaderMetricTag + // Offset returns uint32, set in PatternFlowIpv6NextHeaderMetricTag. + Offset() uint32 + // SetOffset assigns uint32 provided by user to PatternFlowIpv6NextHeaderMetricTag + SetOffset(value uint32) PatternFlowIpv6NextHeaderMetricTag + // HasOffset checks if Offset has been set in PatternFlowIpv6NextHeaderMetricTag + HasOffset() bool + // Length returns uint32, set in PatternFlowIpv6NextHeaderMetricTag. + Length() uint32 + // SetLength assigns uint32 provided by user to PatternFlowIpv6NextHeaderMetricTag + SetLength(value uint32) PatternFlowIpv6NextHeaderMetricTag + // HasLength checks if Length has been set in PatternFlowIpv6NextHeaderMetricTag + HasLength() bool +} + +// Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field +// Name returns a string +func (obj *patternFlowIpv6NextHeaderMetricTag) Name() string { + + return *obj.obj.Name + +} + +// Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field +// SetName sets the string value in the PatternFlowIpv6NextHeaderMetricTag object +func (obj *patternFlowIpv6NextHeaderMetricTag) SetName(value string) PatternFlowIpv6NextHeaderMetricTag { + + obj.obj.Name = &value + return obj +} + +// Offset in bits relative to start of corresponding header field +// Offset returns a uint32 +func (obj *patternFlowIpv6NextHeaderMetricTag) Offset() uint32 { + + return *obj.obj.Offset + +} + +// Offset in bits relative to start of corresponding header field +// Offset returns a uint32 +func (obj *patternFlowIpv6NextHeaderMetricTag) HasOffset() bool { + return obj.obj.Offset != nil +} + +// Offset in bits relative to start of corresponding header field +// SetOffset sets the uint32 value in the PatternFlowIpv6NextHeaderMetricTag object +func (obj *patternFlowIpv6NextHeaderMetricTag) SetOffset(value uint32) PatternFlowIpv6NextHeaderMetricTag { + + obj.obj.Offset = &value + return obj +} + +// Number of bits to track for metrics starting from configured offset of corresponding header field +// Length returns a uint32 +func (obj *patternFlowIpv6NextHeaderMetricTag) Length() uint32 { + + return *obj.obj.Length + +} + +// Number of bits to track for metrics starting from configured offset of corresponding header field +// Length returns a uint32 +func (obj *patternFlowIpv6NextHeaderMetricTag) HasLength() bool { + return obj.obj.Length != nil +} + +// Number of bits to track for metrics starting from configured offset of corresponding header field +// SetLength sets the uint32 value in the PatternFlowIpv6NextHeaderMetricTag object +func (obj *patternFlowIpv6NextHeaderMetricTag) SetLength(value uint32) PatternFlowIpv6NextHeaderMetricTag { + + obj.obj.Length = &value + return obj +} + +func (obj *patternFlowIpv6NextHeaderMetricTag) validateObj(vObj *validation, set_default bool) { + if set_default { + obj.setDefault() + } + + // Name is required + if obj.obj.Name == nil { + vObj.validationErrors = append(vObj.validationErrors, "Name is required field on interface PatternFlowIpv6NextHeaderMetricTag") + } + + if obj.obj.Offset != nil { + + if *obj.obj.Offset > 7 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("0 <= PatternFlowIpv6NextHeaderMetricTag.Offset <= 7 but Got %d", *obj.obj.Offset)) + } + + } + + if obj.obj.Length != nil { + + if *obj.obj.Length < 1 || *obj.obj.Length > 8 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("1 <= PatternFlowIpv6NextHeaderMetricTag.Length <= 8 but Got %d", *obj.obj.Length)) + } + + } + +} + +func (obj *patternFlowIpv6NextHeaderMetricTag) setDefault() { + if obj.obj.Offset == nil { + obj.SetOffset(0) + } + if obj.obj.Length == nil { + obj.SetLength(8) + } + +} + +// ***** PatternFlowIpv6HopLimitCounter ***** +type patternFlowIpv6HopLimitCounter struct { + validation + obj *otg.PatternFlowIpv6HopLimitCounter +} + +func NewPatternFlowIpv6HopLimitCounter() PatternFlowIpv6HopLimitCounter { + obj := patternFlowIpv6HopLimitCounter{obj: &otg.PatternFlowIpv6HopLimitCounter{}} + obj.setDefault() + return &obj +} + +func (obj *patternFlowIpv6HopLimitCounter) Msg() *otg.PatternFlowIpv6HopLimitCounter { + return obj.obj +} + +func (obj *patternFlowIpv6HopLimitCounter) SetMsg(msg *otg.PatternFlowIpv6HopLimitCounter) PatternFlowIpv6HopLimitCounter { + + proto.Merge(obj.obj, msg) + return obj +} + +func (obj *patternFlowIpv6HopLimitCounter) ToProto() (*otg.PatternFlowIpv6HopLimitCounter, error) { + err := obj.validateToAndFrom() + if err != nil { + return nil, err + } + return obj.Msg(), nil +} + +func (obj *patternFlowIpv6HopLimitCounter) FromProto(msg *otg.PatternFlowIpv6HopLimitCounter) (PatternFlowIpv6HopLimitCounter, error) { + newObj := obj.SetMsg(msg) + err := newObj.validateToAndFrom() + if err != nil { + return nil, err + } + return newObj, nil +} + +func (obj *patternFlowIpv6HopLimitCounter) ToPbText() (string, error) { + vErr := obj.validateToAndFrom() + if vErr != nil { + return "", vErr + } + protoMarshal, err := proto.Marshal(obj.Msg()) + if err != nil { + return "", err + } + return string(protoMarshal), nil +} + +func (obj *patternFlowIpv6HopLimitCounter) FromPbText(value string) error { + retObj := proto.Unmarshal([]byte(value), obj.Msg()) + if retObj != nil { + return retObj + } + + vErr := obj.validateToAndFrom() + if vErr != nil { + return vErr + } + return retObj +} + +func (obj *patternFlowIpv6HopLimitCounter) ToYaml() (string, error) { + vErr := obj.validateToAndFrom() + if vErr != nil { + return "", vErr + } + opts := protojson.MarshalOptions{ + UseProtoNames: true, + AllowPartial: true, + EmitUnpopulated: false, + } + data, err := opts.Marshal(obj.Msg()) + if err != nil { + return "", err + } + data, err = yaml.JSONToYAML(data) + if err != nil { + return "", err + } + return string(data), nil +} + +func (obj *patternFlowIpv6HopLimitCounter) FromYaml(value string) error { + if value == "" { + value = "{}" + } + data, err := yaml.YAMLToJSON([]byte(value)) + if err != nil { + return err + } + opts := protojson.UnmarshalOptions{ + AllowPartial: true, + DiscardUnknown: false, + } + uError := opts.Unmarshal([]byte(data), obj.Msg()) + if uError != nil { + return fmt.Errorf("unmarshal error %s", strings.Replace( + uError.Error(), "\u00a0", " ", -1)[7:]) + } + + vErr := obj.validateToAndFrom() + if vErr != nil { + return vErr + } + return nil +} + +func (obj *patternFlowIpv6HopLimitCounter) ToJson() (string, error) { + vErr := obj.validateToAndFrom() + if vErr != nil { + return "", vErr + } + opts := protojson.MarshalOptions{ + UseProtoNames: true, + AllowPartial: true, + EmitUnpopulated: false, + Indent: " ", + } + data, err := opts.Marshal(obj.Msg()) + if err != nil { + return "", err + } + return string(data), nil +} + +func (obj *patternFlowIpv6HopLimitCounter) FromJson(value string) error { + opts := protojson.UnmarshalOptions{ + AllowPartial: true, + DiscardUnknown: false, + } + if value == "" { + value = "{}" + } + uError := opts.Unmarshal([]byte(value), obj.Msg()) + if uError != nil { + return fmt.Errorf("unmarshal error %s", strings.Replace( + uError.Error(), "\u00a0", " ", -1)[7:]) + } + + err := obj.validateToAndFrom() + if err != nil { + return err + } + return nil +} + +func (obj *patternFlowIpv6HopLimitCounter) validateToAndFrom() error { + // emptyVars() + obj.validateObj(&obj.validation, true) + return obj.validationResult() +} + +func (obj *patternFlowIpv6HopLimitCounter) Validate() error { + // emptyVars() + obj.validateObj(&obj.validation, false) + return obj.validationResult() +} + +func (obj *patternFlowIpv6HopLimitCounter) String() string { + str, err := obj.ToYaml() + if err != nil { + return err.Error() + } + return str +} + +func (obj *patternFlowIpv6HopLimitCounter) Clone() (PatternFlowIpv6HopLimitCounter, error) { + vErr := obj.Validate() + if vErr != nil { + return nil, vErr + } + newObj := NewPatternFlowIpv6HopLimitCounter() + data, err := proto.Marshal(obj.Msg()) + if err != nil { + return nil, err + } + pbErr := proto.Unmarshal(data, newObj.Msg()) + if pbErr != nil { + return nil, pbErr + } + return newObj, nil +} + +// PatternFlowIpv6HopLimitCounter is integer counter pattern +type PatternFlowIpv6HopLimitCounter interface { + Validation + // Msg marshals PatternFlowIpv6HopLimitCounter to protobuf object *otg.PatternFlowIpv6HopLimitCounter + // and doesn't set defaults + Msg() *otg.PatternFlowIpv6HopLimitCounter + // SetMsg unmarshals PatternFlowIpv6HopLimitCounter from protobuf object *otg.PatternFlowIpv6HopLimitCounter + // and doesn't set defaults + SetMsg(*otg.PatternFlowIpv6HopLimitCounter) PatternFlowIpv6HopLimitCounter + // ToProto marshals PatternFlowIpv6HopLimitCounter to protobuf object *otg.PatternFlowIpv6HopLimitCounter + ToProto() (*otg.PatternFlowIpv6HopLimitCounter, error) + // ToPbText marshals PatternFlowIpv6HopLimitCounter to protobuf text + ToPbText() (string, error) + // ToYaml marshals PatternFlowIpv6HopLimitCounter to YAML text + ToYaml() (string, error) + // ToJson marshals PatternFlowIpv6HopLimitCounter to JSON text + ToJson() (string, error) + // FromProto unmarshals PatternFlowIpv6HopLimitCounter from protobuf object *otg.PatternFlowIpv6HopLimitCounter + FromProto(msg *otg.PatternFlowIpv6HopLimitCounter) (PatternFlowIpv6HopLimitCounter, error) + // FromPbText unmarshals PatternFlowIpv6HopLimitCounter from protobuf text + FromPbText(value string) error + // FromYaml unmarshals PatternFlowIpv6HopLimitCounter from YAML text + FromYaml(value string) error + // FromJson unmarshals PatternFlowIpv6HopLimitCounter from JSON text + FromJson(value string) error + // Validate validates PatternFlowIpv6HopLimitCounter + Validate() error + // A stringer function + String() string + // Clones the object + Clone() (PatternFlowIpv6HopLimitCounter, error) + validateToAndFrom() error + validateObj(vObj *validation, set_default bool) + setDefault() + // Start returns uint32, set in PatternFlowIpv6HopLimitCounter. + Start() uint32 + // SetStart assigns uint32 provided by user to PatternFlowIpv6HopLimitCounter + SetStart(value uint32) PatternFlowIpv6HopLimitCounter + // HasStart checks if Start has been set in PatternFlowIpv6HopLimitCounter + HasStart() bool + // Step returns uint32, set in PatternFlowIpv6HopLimitCounter. + Step() uint32 + // SetStep assigns uint32 provided by user to PatternFlowIpv6HopLimitCounter + SetStep(value uint32) PatternFlowIpv6HopLimitCounter + // HasStep checks if Step has been set in PatternFlowIpv6HopLimitCounter + HasStep() bool + // Count returns uint32, set in PatternFlowIpv6HopLimitCounter. + Count() uint32 + // SetCount assigns uint32 provided by user to PatternFlowIpv6HopLimitCounter + SetCount(value uint32) PatternFlowIpv6HopLimitCounter + // HasCount checks if Count has been set in PatternFlowIpv6HopLimitCounter + HasCount() bool +} + +// description is TBD +// Start returns a uint32 +func (obj *patternFlowIpv6HopLimitCounter) Start() uint32 { + + return *obj.obj.Start + +} + +// description is TBD +// Start returns a uint32 +func (obj *patternFlowIpv6HopLimitCounter) HasStart() bool { + return obj.obj.Start != nil +} + +// description is TBD +// SetStart sets the uint32 value in the PatternFlowIpv6HopLimitCounter object +func (obj *patternFlowIpv6HopLimitCounter) SetStart(value uint32) PatternFlowIpv6HopLimitCounter { + + obj.obj.Start = &value + return obj +} + +// description is TBD +// Step returns a uint32 +func (obj *patternFlowIpv6HopLimitCounter) Step() uint32 { + + return *obj.obj.Step + +} + +// description is TBD +// Step returns a uint32 +func (obj *patternFlowIpv6HopLimitCounter) HasStep() bool { + return obj.obj.Step != nil +} + +// description is TBD +// SetStep sets the uint32 value in the PatternFlowIpv6HopLimitCounter object +func (obj *patternFlowIpv6HopLimitCounter) SetStep(value uint32) PatternFlowIpv6HopLimitCounter { + + obj.obj.Step = &value + return obj +} + +// description is TBD +// Count returns a uint32 +func (obj *patternFlowIpv6HopLimitCounter) Count() uint32 { + + return *obj.obj.Count + +} + +// description is TBD +// Count returns a uint32 +func (obj *patternFlowIpv6HopLimitCounter) HasCount() bool { + return obj.obj.Count != nil +} + +// description is TBD +// SetCount sets the uint32 value in the PatternFlowIpv6HopLimitCounter object +func (obj *patternFlowIpv6HopLimitCounter) SetCount(value uint32) PatternFlowIpv6HopLimitCounter { + + obj.obj.Count = &value + return obj +} + +func (obj *patternFlowIpv6HopLimitCounter) validateObj(vObj *validation, set_default bool) { + if set_default { + obj.setDefault() + } + + if obj.obj.Start != nil { + + if *obj.obj.Start > 255 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("0 <= PatternFlowIpv6HopLimitCounter.Start <= 255 but Got %d", *obj.obj.Start)) + } + + } + + if obj.obj.Step != nil { + + if *obj.obj.Step > 255 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("0 <= PatternFlowIpv6HopLimitCounter.Step <= 255 but Got %d", *obj.obj.Step)) + } + + } + + if obj.obj.Count != nil { + + if *obj.obj.Count > 255 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("0 <= PatternFlowIpv6HopLimitCounter.Count <= 255 but Got %d", *obj.obj.Count)) + } + + } + +} + +func (obj *patternFlowIpv6HopLimitCounter) setDefault() { + if obj.obj.Start == nil { + obj.SetStart(64) + } + if obj.obj.Step == nil { + obj.SetStep(1) + } + if obj.obj.Count == nil { + obj.SetCount(1) + } + +} + +// ***** PatternFlowIpv6HopLimitMetricTag ***** +type patternFlowIpv6HopLimitMetricTag struct { + validation + obj *otg.PatternFlowIpv6HopLimitMetricTag +} + +func NewPatternFlowIpv6HopLimitMetricTag() PatternFlowIpv6HopLimitMetricTag { + obj := patternFlowIpv6HopLimitMetricTag{obj: &otg.PatternFlowIpv6HopLimitMetricTag{}} + obj.setDefault() + return &obj +} + +func (obj *patternFlowIpv6HopLimitMetricTag) Msg() *otg.PatternFlowIpv6HopLimitMetricTag { + return obj.obj +} + +func (obj *patternFlowIpv6HopLimitMetricTag) SetMsg(msg *otg.PatternFlowIpv6HopLimitMetricTag) PatternFlowIpv6HopLimitMetricTag { + + proto.Merge(obj.obj, msg) + return obj +} + +func (obj *patternFlowIpv6HopLimitMetricTag) ToProto() (*otg.PatternFlowIpv6HopLimitMetricTag, error) { + err := obj.validateToAndFrom() + if err != nil { + return nil, err + } + return obj.Msg(), nil +} + +func (obj *patternFlowIpv6HopLimitMetricTag) FromProto(msg *otg.PatternFlowIpv6HopLimitMetricTag) (PatternFlowIpv6HopLimitMetricTag, error) { + newObj := obj.SetMsg(msg) + err := newObj.validateToAndFrom() + if err != nil { + return nil, err + } + return newObj, nil +} + +func (obj *patternFlowIpv6HopLimitMetricTag) ToPbText() (string, error) { + vErr := obj.validateToAndFrom() + if vErr != nil { + return "", vErr + } + protoMarshal, err := proto.Marshal(obj.Msg()) + if err != nil { + return "", err + } + return string(protoMarshal), nil +} + +func (obj *patternFlowIpv6HopLimitMetricTag) FromPbText(value string) error { + retObj := proto.Unmarshal([]byte(value), obj.Msg()) + if retObj != nil { + return retObj + } + + vErr := obj.validateToAndFrom() + if vErr != nil { + return vErr + } + return retObj +} + +func (obj *patternFlowIpv6HopLimitMetricTag) ToYaml() (string, error) { + vErr := obj.validateToAndFrom() + if vErr != nil { + return "", vErr + } + opts := protojson.MarshalOptions{ + UseProtoNames: true, + AllowPartial: true, + EmitUnpopulated: false, + } + data, err := opts.Marshal(obj.Msg()) + if err != nil { + return "", err + } + data, err = yaml.JSONToYAML(data) + if err != nil { + return "", err + } + return string(data), nil +} + +func (obj *patternFlowIpv6HopLimitMetricTag) FromYaml(value string) error { + if value == "" { + value = "{}" + } + data, err := yaml.YAMLToJSON([]byte(value)) + if err != nil { + return err + } + opts := protojson.UnmarshalOptions{ + AllowPartial: true, + DiscardUnknown: false, + } + uError := opts.Unmarshal([]byte(data), obj.Msg()) + if uError != nil { + return fmt.Errorf("unmarshal error %s", strings.Replace( + uError.Error(), "\u00a0", " ", -1)[7:]) + } + + vErr := obj.validateToAndFrom() + if vErr != nil { + return vErr + } + return nil +} + +func (obj *patternFlowIpv6HopLimitMetricTag) ToJson() (string, error) { + vErr := obj.validateToAndFrom() + if vErr != nil { + return "", vErr + } + opts := protojson.MarshalOptions{ + UseProtoNames: true, + AllowPartial: true, + EmitUnpopulated: false, + Indent: " ", + } + data, err := opts.Marshal(obj.Msg()) + if err != nil { + return "", err + } + return string(data), nil +} + +func (obj *patternFlowIpv6HopLimitMetricTag) FromJson(value string) error { + opts := protojson.UnmarshalOptions{ + AllowPartial: true, + DiscardUnknown: false, + } + if value == "" { + value = "{}" + } + uError := opts.Unmarshal([]byte(value), obj.Msg()) + if uError != nil { + return fmt.Errorf("unmarshal error %s", strings.Replace( + uError.Error(), "\u00a0", " ", -1)[7:]) + } + + err := obj.validateToAndFrom() + if err != nil { + return err + } + return nil +} + +func (obj *patternFlowIpv6HopLimitMetricTag) validateToAndFrom() error { + // emptyVars() + obj.validateObj(&obj.validation, true) + return obj.validationResult() +} + +func (obj *patternFlowIpv6HopLimitMetricTag) Validate() error { + // emptyVars() + obj.validateObj(&obj.validation, false) + return obj.validationResult() +} + +func (obj *patternFlowIpv6HopLimitMetricTag) String() string { + str, err := obj.ToYaml() + if err != nil { + return err.Error() + } + return str +} + +func (obj *patternFlowIpv6HopLimitMetricTag) Clone() (PatternFlowIpv6HopLimitMetricTag, error) { + vErr := obj.Validate() + if vErr != nil { + return nil, vErr + } + newObj := NewPatternFlowIpv6HopLimitMetricTag() + data, err := proto.Marshal(obj.Msg()) + if err != nil { + return nil, err + } + pbErr := proto.Unmarshal(data, newObj.Msg()) + if pbErr != nil { + return nil, pbErr + } + return newObj, nil +} + +// PatternFlowIpv6HopLimitMetricTag is metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. +type PatternFlowIpv6HopLimitMetricTag interface { + Validation + // Msg marshals PatternFlowIpv6HopLimitMetricTag to protobuf object *otg.PatternFlowIpv6HopLimitMetricTag + // and doesn't set defaults + Msg() *otg.PatternFlowIpv6HopLimitMetricTag + // SetMsg unmarshals PatternFlowIpv6HopLimitMetricTag from protobuf object *otg.PatternFlowIpv6HopLimitMetricTag + // and doesn't set defaults + SetMsg(*otg.PatternFlowIpv6HopLimitMetricTag) PatternFlowIpv6HopLimitMetricTag + // ToProto marshals PatternFlowIpv6HopLimitMetricTag to protobuf object *otg.PatternFlowIpv6HopLimitMetricTag + ToProto() (*otg.PatternFlowIpv6HopLimitMetricTag, error) + // ToPbText marshals PatternFlowIpv6HopLimitMetricTag to protobuf text + ToPbText() (string, error) + // ToYaml marshals PatternFlowIpv6HopLimitMetricTag to YAML text + ToYaml() (string, error) + // ToJson marshals PatternFlowIpv6HopLimitMetricTag to JSON text + ToJson() (string, error) + // FromProto unmarshals PatternFlowIpv6HopLimitMetricTag from protobuf object *otg.PatternFlowIpv6HopLimitMetricTag + FromProto(msg *otg.PatternFlowIpv6HopLimitMetricTag) (PatternFlowIpv6HopLimitMetricTag, error) + // FromPbText unmarshals PatternFlowIpv6HopLimitMetricTag from protobuf text + FromPbText(value string) error + // FromYaml unmarshals PatternFlowIpv6HopLimitMetricTag from YAML text + FromYaml(value string) error + // FromJson unmarshals PatternFlowIpv6HopLimitMetricTag from JSON text + FromJson(value string) error + // Validate validates PatternFlowIpv6HopLimitMetricTag + Validate() error + // A stringer function + String() string + // Clones the object + Clone() (PatternFlowIpv6HopLimitMetricTag, error) + validateToAndFrom() error + validateObj(vObj *validation, set_default bool) + setDefault() + // Name returns string, set in PatternFlowIpv6HopLimitMetricTag. + Name() string + // SetName assigns string provided by user to PatternFlowIpv6HopLimitMetricTag + SetName(value string) PatternFlowIpv6HopLimitMetricTag + // Offset returns uint32, set in PatternFlowIpv6HopLimitMetricTag. + Offset() uint32 + // SetOffset assigns uint32 provided by user to PatternFlowIpv6HopLimitMetricTag + SetOffset(value uint32) PatternFlowIpv6HopLimitMetricTag + // HasOffset checks if Offset has been set in PatternFlowIpv6HopLimitMetricTag + HasOffset() bool + // Length returns uint32, set in PatternFlowIpv6HopLimitMetricTag. + Length() uint32 + // SetLength assigns uint32 provided by user to PatternFlowIpv6HopLimitMetricTag + SetLength(value uint32) PatternFlowIpv6HopLimitMetricTag + // HasLength checks if Length has been set in PatternFlowIpv6HopLimitMetricTag + HasLength() bool +} + +// Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field +// Name returns a string +func (obj *patternFlowIpv6HopLimitMetricTag) Name() string { + + return *obj.obj.Name + +} + +// Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field +// SetName sets the string value in the PatternFlowIpv6HopLimitMetricTag object +func (obj *patternFlowIpv6HopLimitMetricTag) SetName(value string) PatternFlowIpv6HopLimitMetricTag { + + obj.obj.Name = &value + return obj +} + +// Offset in bits relative to start of corresponding header field +// Offset returns a uint32 +func (obj *patternFlowIpv6HopLimitMetricTag) Offset() uint32 { + + return *obj.obj.Offset + +} + +// Offset in bits relative to start of corresponding header field +// Offset returns a uint32 +func (obj *patternFlowIpv6HopLimitMetricTag) HasOffset() bool { + return obj.obj.Offset != nil +} + +// Offset in bits relative to start of corresponding header field +// SetOffset sets the uint32 value in the PatternFlowIpv6HopLimitMetricTag object +func (obj *patternFlowIpv6HopLimitMetricTag) SetOffset(value uint32) PatternFlowIpv6HopLimitMetricTag { + + obj.obj.Offset = &value + return obj +} + +// Number of bits to track for metrics starting from configured offset of corresponding header field +// Length returns a uint32 +func (obj *patternFlowIpv6HopLimitMetricTag) Length() uint32 { + + return *obj.obj.Length + +} + +// Number of bits to track for metrics starting from configured offset of corresponding header field +// Length returns a uint32 +func (obj *patternFlowIpv6HopLimitMetricTag) HasLength() bool { + return obj.obj.Length != nil +} + +// Number of bits to track for metrics starting from configured offset of corresponding header field +// SetLength sets the uint32 value in the PatternFlowIpv6HopLimitMetricTag object +func (obj *patternFlowIpv6HopLimitMetricTag) SetLength(value uint32) PatternFlowIpv6HopLimitMetricTag { + + obj.obj.Length = &value + return obj +} + +func (obj *patternFlowIpv6HopLimitMetricTag) validateObj(vObj *validation, set_default bool) { + if set_default { + obj.setDefault() + } + + // Name is required + if obj.obj.Name == nil { + vObj.validationErrors = append(vObj.validationErrors, "Name is required field on interface PatternFlowIpv6HopLimitMetricTag") + } + + if obj.obj.Offset != nil { + + if *obj.obj.Offset > 7 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("0 <= PatternFlowIpv6HopLimitMetricTag.Offset <= 7 but Got %d", *obj.obj.Offset)) + } + + } + + if obj.obj.Length != nil { + + if *obj.obj.Length < 1 || *obj.obj.Length > 8 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("1 <= PatternFlowIpv6HopLimitMetricTag.Length <= 8 but Got %d", *obj.obj.Length)) + } + + } + +} + +func (obj *patternFlowIpv6HopLimitMetricTag) setDefault() { + if obj.obj.Offset == nil { + obj.SetOffset(0) + } + if obj.obj.Length == nil { + obj.SetLength(8) + } + +} + +// ***** PatternFlowIpv6SrcCounter ***** +type patternFlowIpv6SrcCounter struct { + validation + obj *otg.PatternFlowIpv6SrcCounter +} + +func NewPatternFlowIpv6SrcCounter() PatternFlowIpv6SrcCounter { + obj := patternFlowIpv6SrcCounter{obj: &otg.PatternFlowIpv6SrcCounter{}} + obj.setDefault() + return &obj +} + +func (obj *patternFlowIpv6SrcCounter) Msg() *otg.PatternFlowIpv6SrcCounter { + return obj.obj +} + +func (obj *patternFlowIpv6SrcCounter) SetMsg(msg *otg.PatternFlowIpv6SrcCounter) PatternFlowIpv6SrcCounter { + + proto.Merge(obj.obj, msg) + return obj +} + +func (obj *patternFlowIpv6SrcCounter) ToProto() (*otg.PatternFlowIpv6SrcCounter, error) { + err := obj.validateToAndFrom() + if err != nil { + return nil, err + } + return obj.Msg(), nil +} + +func (obj *patternFlowIpv6SrcCounter) FromProto(msg *otg.PatternFlowIpv6SrcCounter) (PatternFlowIpv6SrcCounter, error) { + newObj := obj.SetMsg(msg) + err := newObj.validateToAndFrom() + if err != nil { + return nil, err + } + return newObj, nil +} + +func (obj *patternFlowIpv6SrcCounter) ToPbText() (string, error) { + vErr := obj.validateToAndFrom() + if vErr != nil { + return "", vErr + } + protoMarshal, err := proto.Marshal(obj.Msg()) + if err != nil { + return "", err + } + return string(protoMarshal), nil +} + +func (obj *patternFlowIpv6SrcCounter) FromPbText(value string) error { + retObj := proto.Unmarshal([]byte(value), obj.Msg()) + if retObj != nil { + return retObj + } + + vErr := obj.validateToAndFrom() + if vErr != nil { + return vErr + } + return retObj +} + +func (obj *patternFlowIpv6SrcCounter) ToYaml() (string, error) { + vErr := obj.validateToAndFrom() + if vErr != nil { + return "", vErr + } + opts := protojson.MarshalOptions{ + UseProtoNames: true, + AllowPartial: true, + EmitUnpopulated: false, + } + data, err := opts.Marshal(obj.Msg()) + if err != nil { + return "", err + } + data, err = yaml.JSONToYAML(data) + if err != nil { + return "", err + } + return string(data), nil +} + +func (obj *patternFlowIpv6SrcCounter) FromYaml(value string) error { + if value == "" { + value = "{}" + } + data, err := yaml.YAMLToJSON([]byte(value)) + if err != nil { + return err + } + opts := protojson.UnmarshalOptions{ + AllowPartial: true, + DiscardUnknown: false, + } + uError := opts.Unmarshal([]byte(data), obj.Msg()) + if uError != nil { + return fmt.Errorf("unmarshal error %s", strings.Replace( + uError.Error(), "\u00a0", " ", -1)[7:]) + } + + vErr := obj.validateToAndFrom() + if vErr != nil { + return vErr + } + return nil +} + +func (obj *patternFlowIpv6SrcCounter) ToJson() (string, error) { + vErr := obj.validateToAndFrom() + if vErr != nil { + return "", vErr + } + opts := protojson.MarshalOptions{ + UseProtoNames: true, + AllowPartial: true, + EmitUnpopulated: false, + Indent: " ", + } + data, err := opts.Marshal(obj.Msg()) + if err != nil { + return "", err + } + return string(data), nil +} + +func (obj *patternFlowIpv6SrcCounter) FromJson(value string) error { + opts := protojson.UnmarshalOptions{ + AllowPartial: true, + DiscardUnknown: false, + } + if value == "" { + value = "{}" + } + uError := opts.Unmarshal([]byte(value), obj.Msg()) + if uError != nil { + return fmt.Errorf("unmarshal error %s", strings.Replace( + uError.Error(), "\u00a0", " ", -1)[7:]) + } + + err := obj.validateToAndFrom() + if err != nil { + return err + } + return nil +} + +func (obj *patternFlowIpv6SrcCounter) validateToAndFrom() error { + // emptyVars() + obj.validateObj(&obj.validation, true) + return obj.validationResult() +} + +func (obj *patternFlowIpv6SrcCounter) Validate() error { + // emptyVars() + obj.validateObj(&obj.validation, false) + return obj.validationResult() +} + +func (obj *patternFlowIpv6SrcCounter) String() string { + str, err := obj.ToYaml() + if err != nil { + return err.Error() + } + return str +} + +func (obj *patternFlowIpv6SrcCounter) Clone() (PatternFlowIpv6SrcCounter, error) { + vErr := obj.Validate() + if vErr != nil { + return nil, vErr + } + newObj := NewPatternFlowIpv6SrcCounter() + data, err := proto.Marshal(obj.Msg()) + if err != nil { + return nil, err + } + pbErr := proto.Unmarshal(data, newObj.Msg()) + if pbErr != nil { + return nil, pbErr + } + return newObj, nil +} + +// PatternFlowIpv6SrcCounter is ipv6 counter pattern +type PatternFlowIpv6SrcCounter interface { + Validation + // Msg marshals PatternFlowIpv6SrcCounter to protobuf object *otg.PatternFlowIpv6SrcCounter + // and doesn't set defaults + Msg() *otg.PatternFlowIpv6SrcCounter + // SetMsg unmarshals PatternFlowIpv6SrcCounter from protobuf object *otg.PatternFlowIpv6SrcCounter + // and doesn't set defaults + SetMsg(*otg.PatternFlowIpv6SrcCounter) PatternFlowIpv6SrcCounter + // ToProto marshals PatternFlowIpv6SrcCounter to protobuf object *otg.PatternFlowIpv6SrcCounter + ToProto() (*otg.PatternFlowIpv6SrcCounter, error) + // ToPbText marshals PatternFlowIpv6SrcCounter to protobuf text + ToPbText() (string, error) + // ToYaml marshals PatternFlowIpv6SrcCounter to YAML text + ToYaml() (string, error) + // ToJson marshals PatternFlowIpv6SrcCounter to JSON text + ToJson() (string, error) + // FromProto unmarshals PatternFlowIpv6SrcCounter from protobuf object *otg.PatternFlowIpv6SrcCounter + FromProto(msg *otg.PatternFlowIpv6SrcCounter) (PatternFlowIpv6SrcCounter, error) + // FromPbText unmarshals PatternFlowIpv6SrcCounter from protobuf text + FromPbText(value string) error + // FromYaml unmarshals PatternFlowIpv6SrcCounter from YAML text + FromYaml(value string) error + // FromJson unmarshals PatternFlowIpv6SrcCounter from JSON text + FromJson(value string) error + // Validate validates PatternFlowIpv6SrcCounter + Validate() error + // A stringer function + String() string + // Clones the object + Clone() (PatternFlowIpv6SrcCounter, error) + validateToAndFrom() error + validateObj(vObj *validation, set_default bool) + setDefault() + // Start returns string, set in PatternFlowIpv6SrcCounter. + Start() string + // SetStart assigns string provided by user to PatternFlowIpv6SrcCounter + SetStart(value string) PatternFlowIpv6SrcCounter + // HasStart checks if Start has been set in PatternFlowIpv6SrcCounter + HasStart() bool + // Step returns string, set in PatternFlowIpv6SrcCounter. + Step() string + // SetStep assigns string provided by user to PatternFlowIpv6SrcCounter + SetStep(value string) PatternFlowIpv6SrcCounter + // HasStep checks if Step has been set in PatternFlowIpv6SrcCounter + HasStep() bool + // Count returns uint32, set in PatternFlowIpv6SrcCounter. + Count() uint32 + // SetCount assigns uint32 provided by user to PatternFlowIpv6SrcCounter + SetCount(value uint32) PatternFlowIpv6SrcCounter + // HasCount checks if Count has been set in PatternFlowIpv6SrcCounter + HasCount() bool +} + +// description is TBD +// Start returns a string +func (obj *patternFlowIpv6SrcCounter) Start() string { + + return *obj.obj.Start + +} + +// description is TBD +// Start returns a string +func (obj *patternFlowIpv6SrcCounter) HasStart() bool { + return obj.obj.Start != nil +} + +// description is TBD +// SetStart sets the string value in the PatternFlowIpv6SrcCounter object +func (obj *patternFlowIpv6SrcCounter) SetStart(value string) PatternFlowIpv6SrcCounter { + + obj.obj.Start = &value + return obj +} + +// description is TBD +// Step returns a string +func (obj *patternFlowIpv6SrcCounter) Step() string { + + return *obj.obj.Step + +} + +// description is TBD +// Step returns a string +func (obj *patternFlowIpv6SrcCounter) HasStep() bool { + return obj.obj.Step != nil +} + +// description is TBD +// SetStep sets the string value in the PatternFlowIpv6SrcCounter object +func (obj *patternFlowIpv6SrcCounter) SetStep(value string) PatternFlowIpv6SrcCounter { + + obj.obj.Step = &value + return obj +} + +// description is TBD +// Count returns a uint32 +func (obj *patternFlowIpv6SrcCounter) Count() uint32 { + + return *obj.obj.Count + +} + +// description is TBD +// Count returns a uint32 +func (obj *patternFlowIpv6SrcCounter) HasCount() bool { + return obj.obj.Count != nil +} + +// description is TBD +// SetCount sets the uint32 value in the PatternFlowIpv6SrcCounter object +func (obj *patternFlowIpv6SrcCounter) SetCount(value uint32) PatternFlowIpv6SrcCounter { + + obj.obj.Count = &value + return obj +} + +func (obj *patternFlowIpv6SrcCounter) validateObj(vObj *validation, set_default bool) { + if set_default { + obj.setDefault() + } + + if obj.obj.Start != nil { + + err := obj.validateIpv6(obj.Start()) + if err != nil { + vObj.validationErrors = append(vObj.validationErrors, fmt.Sprintf("%s %s", err.Error(), "on PatternFlowIpv6SrcCounter.Start")) + } + + } + + if obj.obj.Step != nil { + + err := obj.validateIpv6(obj.Step()) + if err != nil { + vObj.validationErrors = append(vObj.validationErrors, fmt.Sprintf("%s %s", err.Error(), "on PatternFlowIpv6SrcCounter.Step")) + } + + } + +} + +func (obj *patternFlowIpv6SrcCounter) setDefault() { + if obj.obj.Start == nil { + obj.SetStart("::0") + } + if obj.obj.Step == nil { + obj.SetStep("::1") + } + if obj.obj.Count == nil { + obj.SetCount(1) + } + +} + +// ***** PatternFlowIpv6SrcMetricTag ***** +type patternFlowIpv6SrcMetricTag struct { + validation + obj *otg.PatternFlowIpv6SrcMetricTag +} + +func NewPatternFlowIpv6SrcMetricTag() PatternFlowIpv6SrcMetricTag { + obj := patternFlowIpv6SrcMetricTag{obj: &otg.PatternFlowIpv6SrcMetricTag{}} + obj.setDefault() + return &obj +} + +func (obj *patternFlowIpv6SrcMetricTag) Msg() *otg.PatternFlowIpv6SrcMetricTag { + return obj.obj +} + +func (obj *patternFlowIpv6SrcMetricTag) SetMsg(msg *otg.PatternFlowIpv6SrcMetricTag) PatternFlowIpv6SrcMetricTag { + + proto.Merge(obj.obj, msg) + return obj +} + +func (obj *patternFlowIpv6SrcMetricTag) ToProto() (*otg.PatternFlowIpv6SrcMetricTag, error) { + err := obj.validateToAndFrom() + if err != nil { + return nil, err + } + return obj.Msg(), nil +} + +func (obj *patternFlowIpv6SrcMetricTag) FromProto(msg *otg.PatternFlowIpv6SrcMetricTag) (PatternFlowIpv6SrcMetricTag, error) { + newObj := obj.SetMsg(msg) + err := newObj.validateToAndFrom() + if err != nil { + return nil, err + } + return newObj, nil +} + +func (obj *patternFlowIpv6SrcMetricTag) ToPbText() (string, error) { + vErr := obj.validateToAndFrom() + if vErr != nil { + return "", vErr + } + protoMarshal, err := proto.Marshal(obj.Msg()) + if err != nil { + return "", err + } + return string(protoMarshal), nil +} + +func (obj *patternFlowIpv6SrcMetricTag) FromPbText(value string) error { + retObj := proto.Unmarshal([]byte(value), obj.Msg()) + if retObj != nil { + return retObj + } + + vErr := obj.validateToAndFrom() + if vErr != nil { + return vErr + } + return retObj +} + +func (obj *patternFlowIpv6SrcMetricTag) ToYaml() (string, error) { + vErr := obj.validateToAndFrom() + if vErr != nil { + return "", vErr + } + opts := protojson.MarshalOptions{ + UseProtoNames: true, + AllowPartial: true, + EmitUnpopulated: false, + } + data, err := opts.Marshal(obj.Msg()) + if err != nil { + return "", err + } + data, err = yaml.JSONToYAML(data) + if err != nil { + return "", err + } + return string(data), nil +} + +func (obj *patternFlowIpv6SrcMetricTag) FromYaml(value string) error { + if value == "" { + value = "{}" + } + data, err := yaml.YAMLToJSON([]byte(value)) + if err != nil { + return err + } + opts := protojson.UnmarshalOptions{ + AllowPartial: true, + DiscardUnknown: false, + } + uError := opts.Unmarshal([]byte(data), obj.Msg()) + if uError != nil { + return fmt.Errorf("unmarshal error %s", strings.Replace( + uError.Error(), "\u00a0", " ", -1)[7:]) + } + + vErr := obj.validateToAndFrom() + if vErr != nil { + return vErr + } + return nil +} + +func (obj *patternFlowIpv6SrcMetricTag) ToJson() (string, error) { + vErr := obj.validateToAndFrom() + if vErr != nil { + return "", vErr + } + opts := protojson.MarshalOptions{ + UseProtoNames: true, + AllowPartial: true, + EmitUnpopulated: false, + Indent: " ", + } + data, err := opts.Marshal(obj.Msg()) + if err != nil { + return "", err + } + return string(data), nil +} + +func (obj *patternFlowIpv6SrcMetricTag) FromJson(value string) error { + opts := protojson.UnmarshalOptions{ + AllowPartial: true, + DiscardUnknown: false, + } + if value == "" { + value = "{}" + } + uError := opts.Unmarshal([]byte(value), obj.Msg()) + if uError != nil { + return fmt.Errorf("unmarshal error %s", strings.Replace( + uError.Error(), "\u00a0", " ", -1)[7:]) + } + + err := obj.validateToAndFrom() + if err != nil { + return err + } + return nil +} + +func (obj *patternFlowIpv6SrcMetricTag) validateToAndFrom() error { + // emptyVars() + obj.validateObj(&obj.validation, true) + return obj.validationResult() +} + +func (obj *patternFlowIpv6SrcMetricTag) Validate() error { + // emptyVars() + obj.validateObj(&obj.validation, false) + return obj.validationResult() +} + +func (obj *patternFlowIpv6SrcMetricTag) String() string { + str, err := obj.ToYaml() + if err != nil { + return err.Error() + } + return str +} + +func (obj *patternFlowIpv6SrcMetricTag) Clone() (PatternFlowIpv6SrcMetricTag, error) { + vErr := obj.Validate() + if vErr != nil { + return nil, vErr + } + newObj := NewPatternFlowIpv6SrcMetricTag() + data, err := proto.Marshal(obj.Msg()) + if err != nil { + return nil, err + } + pbErr := proto.Unmarshal(data, newObj.Msg()) + if pbErr != nil { + return nil, pbErr + } + return newObj, nil +} + +// PatternFlowIpv6SrcMetricTag is metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. +type PatternFlowIpv6SrcMetricTag interface { + Validation + // Msg marshals PatternFlowIpv6SrcMetricTag to protobuf object *otg.PatternFlowIpv6SrcMetricTag + // and doesn't set defaults + Msg() *otg.PatternFlowIpv6SrcMetricTag + // SetMsg unmarshals PatternFlowIpv6SrcMetricTag from protobuf object *otg.PatternFlowIpv6SrcMetricTag + // and doesn't set defaults + SetMsg(*otg.PatternFlowIpv6SrcMetricTag) PatternFlowIpv6SrcMetricTag + // ToProto marshals PatternFlowIpv6SrcMetricTag to protobuf object *otg.PatternFlowIpv6SrcMetricTag + ToProto() (*otg.PatternFlowIpv6SrcMetricTag, error) + // ToPbText marshals PatternFlowIpv6SrcMetricTag to protobuf text + ToPbText() (string, error) + // ToYaml marshals PatternFlowIpv6SrcMetricTag to YAML text + ToYaml() (string, error) + // ToJson marshals PatternFlowIpv6SrcMetricTag to JSON text + ToJson() (string, error) + // FromProto unmarshals PatternFlowIpv6SrcMetricTag from protobuf object *otg.PatternFlowIpv6SrcMetricTag + FromProto(msg *otg.PatternFlowIpv6SrcMetricTag) (PatternFlowIpv6SrcMetricTag, error) + // FromPbText unmarshals PatternFlowIpv6SrcMetricTag from protobuf text + FromPbText(value string) error + // FromYaml unmarshals PatternFlowIpv6SrcMetricTag from YAML text + FromYaml(value string) error + // FromJson unmarshals PatternFlowIpv6SrcMetricTag from JSON text + FromJson(value string) error + // Validate validates PatternFlowIpv6SrcMetricTag + Validate() error + // A stringer function + String() string + // Clones the object + Clone() (PatternFlowIpv6SrcMetricTag, error) + validateToAndFrom() error + validateObj(vObj *validation, set_default bool) + setDefault() + // Name returns string, set in PatternFlowIpv6SrcMetricTag. + Name() string + // SetName assigns string provided by user to PatternFlowIpv6SrcMetricTag + SetName(value string) PatternFlowIpv6SrcMetricTag + // Offset returns uint32, set in PatternFlowIpv6SrcMetricTag. + Offset() uint32 + // SetOffset assigns uint32 provided by user to PatternFlowIpv6SrcMetricTag + SetOffset(value uint32) PatternFlowIpv6SrcMetricTag + // HasOffset checks if Offset has been set in PatternFlowIpv6SrcMetricTag + HasOffset() bool + // Length returns uint32, set in PatternFlowIpv6SrcMetricTag. + Length() uint32 + // SetLength assigns uint32 provided by user to PatternFlowIpv6SrcMetricTag + SetLength(value uint32) PatternFlowIpv6SrcMetricTag + // HasLength checks if Length has been set in PatternFlowIpv6SrcMetricTag + HasLength() bool +} + +// Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field +// Name returns a string +func (obj *patternFlowIpv6SrcMetricTag) Name() string { + + return *obj.obj.Name + +} + +// Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field +// SetName sets the string value in the PatternFlowIpv6SrcMetricTag object +func (obj *patternFlowIpv6SrcMetricTag) SetName(value string) PatternFlowIpv6SrcMetricTag { + + obj.obj.Name = &value + return obj +} + +// Offset in bits relative to start of corresponding header field +// Offset returns a uint32 +func (obj *patternFlowIpv6SrcMetricTag) Offset() uint32 { + + return *obj.obj.Offset + +} + +// Offset in bits relative to start of corresponding header field +// Offset returns a uint32 +func (obj *patternFlowIpv6SrcMetricTag) HasOffset() bool { + return obj.obj.Offset != nil +} + +// Offset in bits relative to start of corresponding header field +// SetOffset sets the uint32 value in the PatternFlowIpv6SrcMetricTag object +func (obj *patternFlowIpv6SrcMetricTag) SetOffset(value uint32) PatternFlowIpv6SrcMetricTag { + + obj.obj.Offset = &value + return obj +} + +// Number of bits to track for metrics starting from configured offset of corresponding header field +// Length returns a uint32 +func (obj *patternFlowIpv6SrcMetricTag) Length() uint32 { + + return *obj.obj.Length + +} + +// Number of bits to track for metrics starting from configured offset of corresponding header field +// Length returns a uint32 +func (obj *patternFlowIpv6SrcMetricTag) HasLength() bool { + return obj.obj.Length != nil +} + +// Number of bits to track for metrics starting from configured offset of corresponding header field +// SetLength sets the uint32 value in the PatternFlowIpv6SrcMetricTag object +func (obj *patternFlowIpv6SrcMetricTag) SetLength(value uint32) PatternFlowIpv6SrcMetricTag { + + obj.obj.Length = &value + return obj +} + +func (obj *patternFlowIpv6SrcMetricTag) validateObj(vObj *validation, set_default bool) { + if set_default { + obj.setDefault() + } + + // Name is required + if obj.obj.Name == nil { + vObj.validationErrors = append(vObj.validationErrors, "Name is required field on interface PatternFlowIpv6SrcMetricTag") + } + + if obj.obj.Offset != nil { + + if *obj.obj.Offset > 127 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("0 <= PatternFlowIpv6SrcMetricTag.Offset <= 127 but Got %d", *obj.obj.Offset)) + } + + } + + if obj.obj.Length != nil { + + if *obj.obj.Length < 1 || *obj.obj.Length > 128 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("1 <= PatternFlowIpv6SrcMetricTag.Length <= 128 but Got %d", *obj.obj.Length)) + } + + } + +} + +func (obj *patternFlowIpv6SrcMetricTag) setDefault() { + if obj.obj.Offset == nil { + obj.SetOffset(0) + } + if obj.obj.Length == nil { + obj.SetLength(128) + } + +} + +// ***** PatternFlowIpv6DstCounter ***** +type patternFlowIpv6DstCounter struct { + validation + obj *otg.PatternFlowIpv6DstCounter +} + +func NewPatternFlowIpv6DstCounter() PatternFlowIpv6DstCounter { + obj := patternFlowIpv6DstCounter{obj: &otg.PatternFlowIpv6DstCounter{}} + obj.setDefault() + return &obj +} + +func (obj *patternFlowIpv6DstCounter) Msg() *otg.PatternFlowIpv6DstCounter { + return obj.obj +} + +func (obj *patternFlowIpv6DstCounter) SetMsg(msg *otg.PatternFlowIpv6DstCounter) PatternFlowIpv6DstCounter { + + proto.Merge(obj.obj, msg) + return obj +} + +func (obj *patternFlowIpv6DstCounter) ToProto() (*otg.PatternFlowIpv6DstCounter, error) { + err := obj.validateToAndFrom() + if err != nil { + return nil, err + } + return obj.Msg(), nil +} + +func (obj *patternFlowIpv6DstCounter) FromProto(msg *otg.PatternFlowIpv6DstCounter) (PatternFlowIpv6DstCounter, error) { + newObj := obj.SetMsg(msg) + err := newObj.validateToAndFrom() + if err != nil { + return nil, err + } + return newObj, nil +} + +func (obj *patternFlowIpv6DstCounter) ToPbText() (string, error) { + vErr := obj.validateToAndFrom() + if vErr != nil { + return "", vErr + } + protoMarshal, err := proto.Marshal(obj.Msg()) + if err != nil { + return "", err + } + return string(protoMarshal), nil +} + +func (obj *patternFlowIpv6DstCounter) FromPbText(value string) error { + retObj := proto.Unmarshal([]byte(value), obj.Msg()) + if retObj != nil { + return retObj + } + + vErr := obj.validateToAndFrom() + if vErr != nil { + return vErr + } + return retObj +} + +func (obj *patternFlowIpv6DstCounter) ToYaml() (string, error) { + vErr := obj.validateToAndFrom() + if vErr != nil { + return "", vErr + } + opts := protojson.MarshalOptions{ + UseProtoNames: true, + AllowPartial: true, + EmitUnpopulated: false, + } + data, err := opts.Marshal(obj.Msg()) + if err != nil { + return "", err + } + data, err = yaml.JSONToYAML(data) + if err != nil { + return "", err + } + return string(data), nil +} + +func (obj *patternFlowIpv6DstCounter) FromYaml(value string) error { + if value == "" { + value = "{}" + } + data, err := yaml.YAMLToJSON([]byte(value)) + if err != nil { + return err + } + opts := protojson.UnmarshalOptions{ + AllowPartial: true, + DiscardUnknown: false, + } + uError := opts.Unmarshal([]byte(data), obj.Msg()) + if uError != nil { + return fmt.Errorf("unmarshal error %s", strings.Replace( + uError.Error(), "\u00a0", " ", -1)[7:]) + } + + vErr := obj.validateToAndFrom() + if vErr != nil { + return vErr + } + return nil +} + +func (obj *patternFlowIpv6DstCounter) ToJson() (string, error) { + vErr := obj.validateToAndFrom() + if vErr != nil { + return "", vErr + } + opts := protojson.MarshalOptions{ + UseProtoNames: true, + AllowPartial: true, + EmitUnpopulated: false, + Indent: " ", + } + data, err := opts.Marshal(obj.Msg()) + if err != nil { + return "", err + } + return string(data), nil +} + +func (obj *patternFlowIpv6DstCounter) FromJson(value string) error { + opts := protojson.UnmarshalOptions{ + AllowPartial: true, + DiscardUnknown: false, + } + if value == "" { + value = "{}" + } + uError := opts.Unmarshal([]byte(value), obj.Msg()) + if uError != nil { + return fmt.Errorf("unmarshal error %s", strings.Replace( + uError.Error(), "\u00a0", " ", -1)[7:]) + } + + err := obj.validateToAndFrom() + if err != nil { + return err + } + return nil +} + +func (obj *patternFlowIpv6DstCounter) validateToAndFrom() error { + // emptyVars() + obj.validateObj(&obj.validation, true) + return obj.validationResult() +} + +func (obj *patternFlowIpv6DstCounter) Validate() error { + // emptyVars() + obj.validateObj(&obj.validation, false) + return obj.validationResult() +} + +func (obj *patternFlowIpv6DstCounter) String() string { + str, err := obj.ToYaml() + if err != nil { + return err.Error() + } + return str +} + +func (obj *patternFlowIpv6DstCounter) Clone() (PatternFlowIpv6DstCounter, error) { + vErr := obj.Validate() + if vErr != nil { + return nil, vErr + } + newObj := NewPatternFlowIpv6DstCounter() + data, err := proto.Marshal(obj.Msg()) + if err != nil { + return nil, err + } + pbErr := proto.Unmarshal(data, newObj.Msg()) + if pbErr != nil { + return nil, pbErr + } + return newObj, nil +} + +// PatternFlowIpv6DstCounter is ipv6 counter pattern +type PatternFlowIpv6DstCounter interface { + Validation + // Msg marshals PatternFlowIpv6DstCounter to protobuf object *otg.PatternFlowIpv6DstCounter + // and doesn't set defaults + Msg() *otg.PatternFlowIpv6DstCounter + // SetMsg unmarshals PatternFlowIpv6DstCounter from protobuf object *otg.PatternFlowIpv6DstCounter + // and doesn't set defaults + SetMsg(*otg.PatternFlowIpv6DstCounter) PatternFlowIpv6DstCounter + // ToProto marshals PatternFlowIpv6DstCounter to protobuf object *otg.PatternFlowIpv6DstCounter + ToProto() (*otg.PatternFlowIpv6DstCounter, error) + // ToPbText marshals PatternFlowIpv6DstCounter to protobuf text + ToPbText() (string, error) + // ToYaml marshals PatternFlowIpv6DstCounter to YAML text + ToYaml() (string, error) + // ToJson marshals PatternFlowIpv6DstCounter to JSON text + ToJson() (string, error) + // FromProto unmarshals PatternFlowIpv6DstCounter from protobuf object *otg.PatternFlowIpv6DstCounter + FromProto(msg *otg.PatternFlowIpv6DstCounter) (PatternFlowIpv6DstCounter, error) + // FromPbText unmarshals PatternFlowIpv6DstCounter from protobuf text + FromPbText(value string) error + // FromYaml unmarshals PatternFlowIpv6DstCounter from YAML text + FromYaml(value string) error + // FromJson unmarshals PatternFlowIpv6DstCounter from JSON text + FromJson(value string) error + // Validate validates PatternFlowIpv6DstCounter + Validate() error + // A stringer function + String() string + // Clones the object + Clone() (PatternFlowIpv6DstCounter, error) + validateToAndFrom() error + validateObj(vObj *validation, set_default bool) + setDefault() + // Start returns string, set in PatternFlowIpv6DstCounter. + Start() string + // SetStart assigns string provided by user to PatternFlowIpv6DstCounter + SetStart(value string) PatternFlowIpv6DstCounter + // HasStart checks if Start has been set in PatternFlowIpv6DstCounter + HasStart() bool + // Step returns string, set in PatternFlowIpv6DstCounter. + Step() string + // SetStep assigns string provided by user to PatternFlowIpv6DstCounter + SetStep(value string) PatternFlowIpv6DstCounter + // HasStep checks if Step has been set in PatternFlowIpv6DstCounter + HasStep() bool + // Count returns uint32, set in PatternFlowIpv6DstCounter. + Count() uint32 + // SetCount assigns uint32 provided by user to PatternFlowIpv6DstCounter + SetCount(value uint32) PatternFlowIpv6DstCounter + // HasCount checks if Count has been set in PatternFlowIpv6DstCounter + HasCount() bool +} + +// description is TBD +// Start returns a string +func (obj *patternFlowIpv6DstCounter) Start() string { + + return *obj.obj.Start + +} + +// description is TBD +// Start returns a string +func (obj *patternFlowIpv6DstCounter) HasStart() bool { + return obj.obj.Start != nil +} + +// description is TBD +// SetStart sets the string value in the PatternFlowIpv6DstCounter object +func (obj *patternFlowIpv6DstCounter) SetStart(value string) PatternFlowIpv6DstCounter { + + obj.obj.Start = &value + return obj +} + +// description is TBD +// Step returns a string +func (obj *patternFlowIpv6DstCounter) Step() string { + + return *obj.obj.Step + +} + +// description is TBD +// Step returns a string +func (obj *patternFlowIpv6DstCounter) HasStep() bool { + return obj.obj.Step != nil +} + +// description is TBD +// SetStep sets the string value in the PatternFlowIpv6DstCounter object +func (obj *patternFlowIpv6DstCounter) SetStep(value string) PatternFlowIpv6DstCounter { + + obj.obj.Step = &value + return obj +} + +// description is TBD +// Count returns a uint32 +func (obj *patternFlowIpv6DstCounter) Count() uint32 { + + return *obj.obj.Count + +} + +// description is TBD +// Count returns a uint32 +func (obj *patternFlowIpv6DstCounter) HasCount() bool { + return obj.obj.Count != nil +} + +// description is TBD +// SetCount sets the uint32 value in the PatternFlowIpv6DstCounter object +func (obj *patternFlowIpv6DstCounter) SetCount(value uint32) PatternFlowIpv6DstCounter { + + obj.obj.Count = &value + return obj +} + +func (obj *patternFlowIpv6DstCounter) validateObj(vObj *validation, set_default bool) { + if set_default { + obj.setDefault() + } + + if obj.obj.Start != nil { + + err := obj.validateIpv6(obj.Start()) + if err != nil { + vObj.validationErrors = append(vObj.validationErrors, fmt.Sprintf("%s %s", err.Error(), "on PatternFlowIpv6DstCounter.Start")) + } + + } + + if obj.obj.Step != nil { + + err := obj.validateIpv6(obj.Step()) + if err != nil { + vObj.validationErrors = append(vObj.validationErrors, fmt.Sprintf("%s %s", err.Error(), "on PatternFlowIpv6DstCounter.Step")) + } + + } + +} + +func (obj *patternFlowIpv6DstCounter) setDefault() { + if obj.obj.Start == nil { + obj.SetStart("::0") + } + if obj.obj.Step == nil { + obj.SetStep("::1") + } + if obj.obj.Count == nil { + obj.SetCount(1) + } + +} + +// ***** PatternFlowIpv6DstMetricTag ***** +type patternFlowIpv6DstMetricTag struct { + validation + obj *otg.PatternFlowIpv6DstMetricTag +} + +func NewPatternFlowIpv6DstMetricTag() PatternFlowIpv6DstMetricTag { + obj := patternFlowIpv6DstMetricTag{obj: &otg.PatternFlowIpv6DstMetricTag{}} + obj.setDefault() + return &obj +} + +func (obj *patternFlowIpv6DstMetricTag) Msg() *otg.PatternFlowIpv6DstMetricTag { + return obj.obj +} + +func (obj *patternFlowIpv6DstMetricTag) SetMsg(msg *otg.PatternFlowIpv6DstMetricTag) PatternFlowIpv6DstMetricTag { + + proto.Merge(obj.obj, msg) + return obj +} + +func (obj *patternFlowIpv6DstMetricTag) ToProto() (*otg.PatternFlowIpv6DstMetricTag, error) { + err := obj.validateToAndFrom() + if err != nil { + return nil, err + } + return obj.Msg(), nil +} + +func (obj *patternFlowIpv6DstMetricTag) FromProto(msg *otg.PatternFlowIpv6DstMetricTag) (PatternFlowIpv6DstMetricTag, error) { + newObj := obj.SetMsg(msg) + err := newObj.validateToAndFrom() + if err != nil { + return nil, err + } + return newObj, nil +} + +func (obj *patternFlowIpv6DstMetricTag) ToPbText() (string, error) { + vErr := obj.validateToAndFrom() + if vErr != nil { + return "", vErr + } + protoMarshal, err := proto.Marshal(obj.Msg()) + if err != nil { + return "", err + } + return string(protoMarshal), nil +} + +func (obj *patternFlowIpv6DstMetricTag) FromPbText(value string) error { + retObj := proto.Unmarshal([]byte(value), obj.Msg()) + if retObj != nil { + return retObj + } + + vErr := obj.validateToAndFrom() + if vErr != nil { + return vErr + } + return retObj +} + +func (obj *patternFlowIpv6DstMetricTag) ToYaml() (string, error) { + vErr := obj.validateToAndFrom() + if vErr != nil { + return "", vErr + } + opts := protojson.MarshalOptions{ + UseProtoNames: true, + AllowPartial: true, + EmitUnpopulated: false, + } + data, err := opts.Marshal(obj.Msg()) + if err != nil { + return "", err + } + data, err = yaml.JSONToYAML(data) + if err != nil { + return "", err + } + return string(data), nil +} + +func (obj *patternFlowIpv6DstMetricTag) FromYaml(value string) error { + if value == "" { + value = "{}" + } + data, err := yaml.YAMLToJSON([]byte(value)) + if err != nil { + return err + } + opts := protojson.UnmarshalOptions{ + AllowPartial: true, + DiscardUnknown: false, + } + uError := opts.Unmarshal([]byte(data), obj.Msg()) + if uError != nil { + return fmt.Errorf("unmarshal error %s", strings.Replace( + uError.Error(), "\u00a0", " ", -1)[7:]) + } + + vErr := obj.validateToAndFrom() + if vErr != nil { + return vErr + } + return nil +} + +func (obj *patternFlowIpv6DstMetricTag) ToJson() (string, error) { + vErr := obj.validateToAndFrom() + if vErr != nil { + return "", vErr + } + opts := protojson.MarshalOptions{ + UseProtoNames: true, + AllowPartial: true, + EmitUnpopulated: false, + Indent: " ", + } + data, err := opts.Marshal(obj.Msg()) + if err != nil { + return "", err + } + return string(data), nil +} + +func (obj *patternFlowIpv6DstMetricTag) FromJson(value string) error { + opts := protojson.UnmarshalOptions{ + AllowPartial: true, + DiscardUnknown: false, + } + if value == "" { + value = "{}" + } + uError := opts.Unmarshal([]byte(value), obj.Msg()) + if uError != nil { + return fmt.Errorf("unmarshal error %s", strings.Replace( + uError.Error(), "\u00a0", " ", -1)[7:]) + } + + err := obj.validateToAndFrom() + if err != nil { + return err + } + return nil +} + +func (obj *patternFlowIpv6DstMetricTag) validateToAndFrom() error { + // emptyVars() + obj.validateObj(&obj.validation, true) + return obj.validationResult() +} + +func (obj *patternFlowIpv6DstMetricTag) Validate() error { + // emptyVars() + obj.validateObj(&obj.validation, false) + return obj.validationResult() +} + +func (obj *patternFlowIpv6DstMetricTag) String() string { + str, err := obj.ToYaml() + if err != nil { + return err.Error() + } + return str +} + +func (obj *patternFlowIpv6DstMetricTag) Clone() (PatternFlowIpv6DstMetricTag, error) { + vErr := obj.Validate() + if vErr != nil { + return nil, vErr + } + newObj := NewPatternFlowIpv6DstMetricTag() + data, err := proto.Marshal(obj.Msg()) + if err != nil { + return nil, err + } + pbErr := proto.Unmarshal(data, newObj.Msg()) + if pbErr != nil { + return nil, pbErr + } + return newObj, nil +} + +// PatternFlowIpv6DstMetricTag is metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. +type PatternFlowIpv6DstMetricTag interface { + Validation + // Msg marshals PatternFlowIpv6DstMetricTag to protobuf object *otg.PatternFlowIpv6DstMetricTag + // and doesn't set defaults + Msg() *otg.PatternFlowIpv6DstMetricTag + // SetMsg unmarshals PatternFlowIpv6DstMetricTag from protobuf object *otg.PatternFlowIpv6DstMetricTag + // and doesn't set defaults + SetMsg(*otg.PatternFlowIpv6DstMetricTag) PatternFlowIpv6DstMetricTag + // ToProto marshals PatternFlowIpv6DstMetricTag to protobuf object *otg.PatternFlowIpv6DstMetricTag + ToProto() (*otg.PatternFlowIpv6DstMetricTag, error) + // ToPbText marshals PatternFlowIpv6DstMetricTag to protobuf text + ToPbText() (string, error) + // ToYaml marshals PatternFlowIpv6DstMetricTag to YAML text + ToYaml() (string, error) + // ToJson marshals PatternFlowIpv6DstMetricTag to JSON text + ToJson() (string, error) + // FromProto unmarshals PatternFlowIpv6DstMetricTag from protobuf object *otg.PatternFlowIpv6DstMetricTag + FromProto(msg *otg.PatternFlowIpv6DstMetricTag) (PatternFlowIpv6DstMetricTag, error) + // FromPbText unmarshals PatternFlowIpv6DstMetricTag from protobuf text + FromPbText(value string) error + // FromYaml unmarshals PatternFlowIpv6DstMetricTag from YAML text + FromYaml(value string) error + // FromJson unmarshals PatternFlowIpv6DstMetricTag from JSON text + FromJson(value string) error + // Validate validates PatternFlowIpv6DstMetricTag + Validate() error + // A stringer function + String() string + // Clones the object + Clone() (PatternFlowIpv6DstMetricTag, error) + validateToAndFrom() error + validateObj(vObj *validation, set_default bool) + setDefault() + // Name returns string, set in PatternFlowIpv6DstMetricTag. + Name() string + // SetName assigns string provided by user to PatternFlowIpv6DstMetricTag + SetName(value string) PatternFlowIpv6DstMetricTag + // Offset returns uint32, set in PatternFlowIpv6DstMetricTag. + Offset() uint32 + // SetOffset assigns uint32 provided by user to PatternFlowIpv6DstMetricTag + SetOffset(value uint32) PatternFlowIpv6DstMetricTag + // HasOffset checks if Offset has been set in PatternFlowIpv6DstMetricTag + HasOffset() bool + // Length returns uint32, set in PatternFlowIpv6DstMetricTag. + Length() uint32 + // SetLength assigns uint32 provided by user to PatternFlowIpv6DstMetricTag + SetLength(value uint32) PatternFlowIpv6DstMetricTag + // HasLength checks if Length has been set in PatternFlowIpv6DstMetricTag + HasLength() bool +} + +// Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field +// Name returns a string +func (obj *patternFlowIpv6DstMetricTag) Name() string { + + return *obj.obj.Name + +} + +// Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field +// SetName sets the string value in the PatternFlowIpv6DstMetricTag object +func (obj *patternFlowIpv6DstMetricTag) SetName(value string) PatternFlowIpv6DstMetricTag { + + obj.obj.Name = &value + return obj +} + +// Offset in bits relative to start of corresponding header field +// Offset returns a uint32 +func (obj *patternFlowIpv6DstMetricTag) Offset() uint32 { + + return *obj.obj.Offset + +} + +// Offset in bits relative to start of corresponding header field +// Offset returns a uint32 +func (obj *patternFlowIpv6DstMetricTag) HasOffset() bool { + return obj.obj.Offset != nil +} + +// Offset in bits relative to start of corresponding header field +// SetOffset sets the uint32 value in the PatternFlowIpv6DstMetricTag object +func (obj *patternFlowIpv6DstMetricTag) SetOffset(value uint32) PatternFlowIpv6DstMetricTag { + + obj.obj.Offset = &value + return obj +} + +// Number of bits to track for metrics starting from configured offset of corresponding header field +// Length returns a uint32 +func (obj *patternFlowIpv6DstMetricTag) Length() uint32 { + + return *obj.obj.Length + +} + +// Number of bits to track for metrics starting from configured offset of corresponding header field +// Length returns a uint32 +func (obj *patternFlowIpv6DstMetricTag) HasLength() bool { + return obj.obj.Length != nil +} + +// Number of bits to track for metrics starting from configured offset of corresponding header field +// SetLength sets the uint32 value in the PatternFlowIpv6DstMetricTag object +func (obj *patternFlowIpv6DstMetricTag) SetLength(value uint32) PatternFlowIpv6DstMetricTag { + + obj.obj.Length = &value + return obj +} + +func (obj *patternFlowIpv6DstMetricTag) validateObj(vObj *validation, set_default bool) { + if set_default { + obj.setDefault() + } + + // Name is required + if obj.obj.Name == nil { + vObj.validationErrors = append(vObj.validationErrors, "Name is required field on interface PatternFlowIpv6DstMetricTag") + } + + if obj.obj.Offset != nil { + + if *obj.obj.Offset > 127 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("0 <= PatternFlowIpv6DstMetricTag.Offset <= 127 but Got %d", *obj.obj.Offset)) + } + + } + + if obj.obj.Length != nil { + + if *obj.obj.Length < 1 || *obj.obj.Length > 128 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("1 <= PatternFlowIpv6DstMetricTag.Length <= 128 but Got %d", *obj.obj.Length)) + } + + } + +} + +func (obj *patternFlowIpv6DstMetricTag) setDefault() { + if obj.obj.Offset == nil { + obj.SetOffset(0) + } + if obj.obj.Length == nil { + obj.SetLength(128) + } + +} + +// ***** PatternFlowPfcPauseDstCounter ***** +type patternFlowPfcPauseDstCounter struct { + validation + obj *otg.PatternFlowPfcPauseDstCounter +} + +func NewPatternFlowPfcPauseDstCounter() PatternFlowPfcPauseDstCounter { + obj := patternFlowPfcPauseDstCounter{obj: &otg.PatternFlowPfcPauseDstCounter{}} + obj.setDefault() + return &obj +} + +func (obj *patternFlowPfcPauseDstCounter) Msg() *otg.PatternFlowPfcPauseDstCounter { + return obj.obj +} + +func (obj *patternFlowPfcPauseDstCounter) SetMsg(msg *otg.PatternFlowPfcPauseDstCounter) PatternFlowPfcPauseDstCounter { + + proto.Merge(obj.obj, msg) + return obj +} + +func (obj *patternFlowPfcPauseDstCounter) ToProto() (*otg.PatternFlowPfcPauseDstCounter, error) { + err := obj.validateToAndFrom() + if err != nil { + return nil, err + } + return obj.Msg(), nil +} + +func (obj *patternFlowPfcPauseDstCounter) FromProto(msg *otg.PatternFlowPfcPauseDstCounter) (PatternFlowPfcPauseDstCounter, error) { + newObj := obj.SetMsg(msg) + err := newObj.validateToAndFrom() + if err != nil { + return nil, err + } + return newObj, nil +} + +func (obj *patternFlowPfcPauseDstCounter) ToPbText() (string, error) { + vErr := obj.validateToAndFrom() + if vErr != nil { + return "", vErr + } + protoMarshal, err := proto.Marshal(obj.Msg()) + if err != nil { + return "", err + } + return string(protoMarshal), nil +} + +func (obj *patternFlowPfcPauseDstCounter) FromPbText(value string) error { + retObj := proto.Unmarshal([]byte(value), obj.Msg()) + if retObj != nil { + return retObj + } + + vErr := obj.validateToAndFrom() + if vErr != nil { + return vErr + } + return retObj +} + +func (obj *patternFlowPfcPauseDstCounter) ToYaml() (string, error) { + vErr := obj.validateToAndFrom() + if vErr != nil { + return "", vErr + } + opts := protojson.MarshalOptions{ + UseProtoNames: true, + AllowPartial: true, + EmitUnpopulated: false, + } + data, err := opts.Marshal(obj.Msg()) + if err != nil { + return "", err + } + data, err = yaml.JSONToYAML(data) + if err != nil { + return "", err + } + return string(data), nil +} + +func (obj *patternFlowPfcPauseDstCounter) FromYaml(value string) error { + if value == "" { + value = "{}" + } + data, err := yaml.YAMLToJSON([]byte(value)) + if err != nil { + return err + } + opts := protojson.UnmarshalOptions{ + AllowPartial: true, + DiscardUnknown: false, + } + uError := opts.Unmarshal([]byte(data), obj.Msg()) + if uError != nil { + return fmt.Errorf("unmarshal error %s", strings.Replace( + uError.Error(), "\u00a0", " ", -1)[7:]) + } + + vErr := obj.validateToAndFrom() + if vErr != nil { + return vErr + } + return nil +} + +func (obj *patternFlowPfcPauseDstCounter) ToJson() (string, error) { + vErr := obj.validateToAndFrom() + if vErr != nil { + return "", vErr + } + opts := protojson.MarshalOptions{ + UseProtoNames: true, + AllowPartial: true, + EmitUnpopulated: false, + Indent: " ", + } + data, err := opts.Marshal(obj.Msg()) + if err != nil { + return "", err + } + return string(data), nil +} + +func (obj *patternFlowPfcPauseDstCounter) FromJson(value string) error { + opts := protojson.UnmarshalOptions{ + AllowPartial: true, + DiscardUnknown: false, + } + if value == "" { + value = "{}" + } + uError := opts.Unmarshal([]byte(value), obj.Msg()) + if uError != nil { + return fmt.Errorf("unmarshal error %s", strings.Replace( + uError.Error(), "\u00a0", " ", -1)[7:]) + } + + err := obj.validateToAndFrom() + if err != nil { + return err + } + return nil +} + +func (obj *patternFlowPfcPauseDstCounter) validateToAndFrom() error { + // emptyVars() + obj.validateObj(&obj.validation, true) + return obj.validationResult() +} + +func (obj *patternFlowPfcPauseDstCounter) Validate() error { + // emptyVars() + obj.validateObj(&obj.validation, false) + return obj.validationResult() +} + +func (obj *patternFlowPfcPauseDstCounter) String() string { + str, err := obj.ToYaml() + if err != nil { + return err.Error() + } + return str +} + +func (obj *patternFlowPfcPauseDstCounter) Clone() (PatternFlowPfcPauseDstCounter, error) { + vErr := obj.Validate() + if vErr != nil { + return nil, vErr + } + newObj := NewPatternFlowPfcPauseDstCounter() + data, err := proto.Marshal(obj.Msg()) + if err != nil { + return nil, err + } + pbErr := proto.Unmarshal(data, newObj.Msg()) + if pbErr != nil { + return nil, pbErr + } + return newObj, nil +} + +// PatternFlowPfcPauseDstCounter is mac counter pattern +type PatternFlowPfcPauseDstCounter interface { + Validation + // Msg marshals PatternFlowPfcPauseDstCounter to protobuf object *otg.PatternFlowPfcPauseDstCounter + // and doesn't set defaults + Msg() *otg.PatternFlowPfcPauseDstCounter + // SetMsg unmarshals PatternFlowPfcPauseDstCounter from protobuf object *otg.PatternFlowPfcPauseDstCounter + // and doesn't set defaults + SetMsg(*otg.PatternFlowPfcPauseDstCounter) PatternFlowPfcPauseDstCounter + // ToProto marshals PatternFlowPfcPauseDstCounter to protobuf object *otg.PatternFlowPfcPauseDstCounter + ToProto() (*otg.PatternFlowPfcPauseDstCounter, error) + // ToPbText marshals PatternFlowPfcPauseDstCounter to protobuf text + ToPbText() (string, error) + // ToYaml marshals PatternFlowPfcPauseDstCounter to YAML text + ToYaml() (string, error) + // ToJson marshals PatternFlowPfcPauseDstCounter to JSON text + ToJson() (string, error) + // FromProto unmarshals PatternFlowPfcPauseDstCounter from protobuf object *otg.PatternFlowPfcPauseDstCounter + FromProto(msg *otg.PatternFlowPfcPauseDstCounter) (PatternFlowPfcPauseDstCounter, error) + // FromPbText unmarshals PatternFlowPfcPauseDstCounter from protobuf text + FromPbText(value string) error + // FromYaml unmarshals PatternFlowPfcPauseDstCounter from YAML text + FromYaml(value string) error + // FromJson unmarshals PatternFlowPfcPauseDstCounter from JSON text + FromJson(value string) error + // Validate validates PatternFlowPfcPauseDstCounter + Validate() error + // A stringer function + String() string + // Clones the object + Clone() (PatternFlowPfcPauseDstCounter, error) + validateToAndFrom() error + validateObj(vObj *validation, set_default bool) + setDefault() + // Start returns string, set in PatternFlowPfcPauseDstCounter. + Start() string + // SetStart assigns string provided by user to PatternFlowPfcPauseDstCounter + SetStart(value string) PatternFlowPfcPauseDstCounter + // HasStart checks if Start has been set in PatternFlowPfcPauseDstCounter + HasStart() bool + // Step returns string, set in PatternFlowPfcPauseDstCounter. + Step() string + // SetStep assigns string provided by user to PatternFlowPfcPauseDstCounter + SetStep(value string) PatternFlowPfcPauseDstCounter + // HasStep checks if Step has been set in PatternFlowPfcPauseDstCounter + HasStep() bool + // Count returns uint32, set in PatternFlowPfcPauseDstCounter. + Count() uint32 + // SetCount assigns uint32 provided by user to PatternFlowPfcPauseDstCounter + SetCount(value uint32) PatternFlowPfcPauseDstCounter + // HasCount checks if Count has been set in PatternFlowPfcPauseDstCounter + HasCount() bool +} + +// description is TBD +// Start returns a string +func (obj *patternFlowPfcPauseDstCounter) Start() string { + + return *obj.obj.Start + +} + +// description is TBD +// Start returns a string +func (obj *patternFlowPfcPauseDstCounter) HasStart() bool { + return obj.obj.Start != nil +} + +// description is TBD +// SetStart sets the string value in the PatternFlowPfcPauseDstCounter object +func (obj *patternFlowPfcPauseDstCounter) SetStart(value string) PatternFlowPfcPauseDstCounter { + + obj.obj.Start = &value + return obj +} + +// description is TBD +// Step returns a string +func (obj *patternFlowPfcPauseDstCounter) Step() string { + + return *obj.obj.Step + +} + +// description is TBD +// Step returns a string +func (obj *patternFlowPfcPauseDstCounter) HasStep() bool { + return obj.obj.Step != nil +} + +// description is TBD +// SetStep sets the string value in the PatternFlowPfcPauseDstCounter object +func (obj *patternFlowPfcPauseDstCounter) SetStep(value string) PatternFlowPfcPauseDstCounter { + + obj.obj.Step = &value + return obj +} + +// description is TBD +// Count returns a uint32 +func (obj *patternFlowPfcPauseDstCounter) Count() uint32 { + + return *obj.obj.Count + +} + +// description is TBD +// Count returns a uint32 +func (obj *patternFlowPfcPauseDstCounter) HasCount() bool { + return obj.obj.Count != nil +} + +// description is TBD +// SetCount sets the uint32 value in the PatternFlowPfcPauseDstCounter object +func (obj *patternFlowPfcPauseDstCounter) SetCount(value uint32) PatternFlowPfcPauseDstCounter { + + obj.obj.Count = &value + return obj +} + +func (obj *patternFlowPfcPauseDstCounter) validateObj(vObj *validation, set_default bool) { + if set_default { + obj.setDefault() + } + + if obj.obj.Start != nil { + + err := obj.validateMac(obj.Start()) + if err != nil { + vObj.validationErrors = append(vObj.validationErrors, fmt.Sprintf("%s %s", err.Error(), "on PatternFlowPfcPauseDstCounter.Start")) + } + + } + + if obj.obj.Step != nil { + + err := obj.validateMac(obj.Step()) + if err != nil { + vObj.validationErrors = append(vObj.validationErrors, fmt.Sprintf("%s %s", err.Error(), "on PatternFlowPfcPauseDstCounter.Step")) + } + + } + +} + +func (obj *patternFlowPfcPauseDstCounter) setDefault() { + if obj.obj.Start == nil { + obj.SetStart("01:80:c2:00:00:01") + } + if obj.obj.Step == nil { + obj.SetStep("00:00:00:00:00:01") + } + if obj.obj.Count == nil { + obj.SetCount(1) + } + +} + +// ***** PatternFlowPfcPauseDstMetricTag ***** +type patternFlowPfcPauseDstMetricTag struct { + validation + obj *otg.PatternFlowPfcPauseDstMetricTag +} + +func NewPatternFlowPfcPauseDstMetricTag() PatternFlowPfcPauseDstMetricTag { + obj := patternFlowPfcPauseDstMetricTag{obj: &otg.PatternFlowPfcPauseDstMetricTag{}} + obj.setDefault() + return &obj +} + +func (obj *patternFlowPfcPauseDstMetricTag) Msg() *otg.PatternFlowPfcPauseDstMetricTag { + return obj.obj +} + +func (obj *patternFlowPfcPauseDstMetricTag) SetMsg(msg *otg.PatternFlowPfcPauseDstMetricTag) PatternFlowPfcPauseDstMetricTag { + + proto.Merge(obj.obj, msg) + return obj +} + +func (obj *patternFlowPfcPauseDstMetricTag) ToProto() (*otg.PatternFlowPfcPauseDstMetricTag, error) { + err := obj.validateToAndFrom() + if err != nil { + return nil, err + } + return obj.Msg(), nil +} + +func (obj *patternFlowPfcPauseDstMetricTag) FromProto(msg *otg.PatternFlowPfcPauseDstMetricTag) (PatternFlowPfcPauseDstMetricTag, error) { + newObj := obj.SetMsg(msg) + err := newObj.validateToAndFrom() + if err != nil { + return nil, err + } + return newObj, nil +} + +func (obj *patternFlowPfcPauseDstMetricTag) ToPbText() (string, error) { + vErr := obj.validateToAndFrom() + if vErr != nil { + return "", vErr + } + protoMarshal, err := proto.Marshal(obj.Msg()) + if err != nil { + return "", err + } + return string(protoMarshal), nil +} + +func (obj *patternFlowPfcPauseDstMetricTag) FromPbText(value string) error { + retObj := proto.Unmarshal([]byte(value), obj.Msg()) + if retObj != nil { + return retObj + } + + vErr := obj.validateToAndFrom() + if vErr != nil { + return vErr + } + return retObj +} + +func (obj *patternFlowPfcPauseDstMetricTag) ToYaml() (string, error) { + vErr := obj.validateToAndFrom() + if vErr != nil { + return "", vErr + } + opts := protojson.MarshalOptions{ + UseProtoNames: true, + AllowPartial: true, + EmitUnpopulated: false, + } + data, err := opts.Marshal(obj.Msg()) + if err != nil { + return "", err + } + data, err = yaml.JSONToYAML(data) + if err != nil { + return "", err + } + return string(data), nil +} + +func (obj *patternFlowPfcPauseDstMetricTag) FromYaml(value string) error { + if value == "" { + value = "{}" + } + data, err := yaml.YAMLToJSON([]byte(value)) + if err != nil { + return err + } + opts := protojson.UnmarshalOptions{ + AllowPartial: true, + DiscardUnknown: false, + } + uError := opts.Unmarshal([]byte(data), obj.Msg()) + if uError != nil { + return fmt.Errorf("unmarshal error %s", strings.Replace( + uError.Error(), "\u00a0", " ", -1)[7:]) + } + + vErr := obj.validateToAndFrom() + if vErr != nil { + return vErr + } + return nil +} + +func (obj *patternFlowPfcPauseDstMetricTag) ToJson() (string, error) { + vErr := obj.validateToAndFrom() + if vErr != nil { + return "", vErr + } + opts := protojson.MarshalOptions{ + UseProtoNames: true, + AllowPartial: true, + EmitUnpopulated: false, + Indent: " ", + } + data, err := opts.Marshal(obj.Msg()) + if err != nil { + return "", err + } + return string(data), nil +} + +func (obj *patternFlowPfcPauseDstMetricTag) FromJson(value string) error { + opts := protojson.UnmarshalOptions{ + AllowPartial: true, + DiscardUnknown: false, + } + if value == "" { + value = "{}" + } + uError := opts.Unmarshal([]byte(value), obj.Msg()) + if uError != nil { + return fmt.Errorf("unmarshal error %s", strings.Replace( + uError.Error(), "\u00a0", " ", -1)[7:]) + } + + err := obj.validateToAndFrom() + if err != nil { + return err + } + return nil +} + +func (obj *patternFlowPfcPauseDstMetricTag) validateToAndFrom() error { + // emptyVars() + obj.validateObj(&obj.validation, true) + return obj.validationResult() +} + +func (obj *patternFlowPfcPauseDstMetricTag) Validate() error { + // emptyVars() + obj.validateObj(&obj.validation, false) + return obj.validationResult() +} + +func (obj *patternFlowPfcPauseDstMetricTag) String() string { + str, err := obj.ToYaml() + if err != nil { + return err.Error() + } + return str +} + +func (obj *patternFlowPfcPauseDstMetricTag) Clone() (PatternFlowPfcPauseDstMetricTag, error) { + vErr := obj.Validate() + if vErr != nil { + return nil, vErr + } + newObj := NewPatternFlowPfcPauseDstMetricTag() + data, err := proto.Marshal(obj.Msg()) + if err != nil { + return nil, err + } + pbErr := proto.Unmarshal(data, newObj.Msg()) + if pbErr != nil { + return nil, pbErr + } + return newObj, nil +} + +// PatternFlowPfcPauseDstMetricTag is metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. +type PatternFlowPfcPauseDstMetricTag interface { + Validation + // Msg marshals PatternFlowPfcPauseDstMetricTag to protobuf object *otg.PatternFlowPfcPauseDstMetricTag + // and doesn't set defaults + Msg() *otg.PatternFlowPfcPauseDstMetricTag + // SetMsg unmarshals PatternFlowPfcPauseDstMetricTag from protobuf object *otg.PatternFlowPfcPauseDstMetricTag + // and doesn't set defaults + SetMsg(*otg.PatternFlowPfcPauseDstMetricTag) PatternFlowPfcPauseDstMetricTag + // ToProto marshals PatternFlowPfcPauseDstMetricTag to protobuf object *otg.PatternFlowPfcPauseDstMetricTag + ToProto() (*otg.PatternFlowPfcPauseDstMetricTag, error) + // ToPbText marshals PatternFlowPfcPauseDstMetricTag to protobuf text + ToPbText() (string, error) + // ToYaml marshals PatternFlowPfcPauseDstMetricTag to YAML text + ToYaml() (string, error) + // ToJson marshals PatternFlowPfcPauseDstMetricTag to JSON text + ToJson() (string, error) + // FromProto unmarshals PatternFlowPfcPauseDstMetricTag from protobuf object *otg.PatternFlowPfcPauseDstMetricTag + FromProto(msg *otg.PatternFlowPfcPauseDstMetricTag) (PatternFlowPfcPauseDstMetricTag, error) + // FromPbText unmarshals PatternFlowPfcPauseDstMetricTag from protobuf text + FromPbText(value string) error + // FromYaml unmarshals PatternFlowPfcPauseDstMetricTag from YAML text + FromYaml(value string) error + // FromJson unmarshals PatternFlowPfcPauseDstMetricTag from JSON text + FromJson(value string) error + // Validate validates PatternFlowPfcPauseDstMetricTag + Validate() error + // A stringer function + String() string + // Clones the object + Clone() (PatternFlowPfcPauseDstMetricTag, error) + validateToAndFrom() error + validateObj(vObj *validation, set_default bool) + setDefault() + // Name returns string, set in PatternFlowPfcPauseDstMetricTag. + Name() string + // SetName assigns string provided by user to PatternFlowPfcPauseDstMetricTag + SetName(value string) PatternFlowPfcPauseDstMetricTag + // Offset returns uint32, set in PatternFlowPfcPauseDstMetricTag. + Offset() uint32 + // SetOffset assigns uint32 provided by user to PatternFlowPfcPauseDstMetricTag + SetOffset(value uint32) PatternFlowPfcPauseDstMetricTag + // HasOffset checks if Offset has been set in PatternFlowPfcPauseDstMetricTag + HasOffset() bool + // Length returns uint32, set in PatternFlowPfcPauseDstMetricTag. + Length() uint32 + // SetLength assigns uint32 provided by user to PatternFlowPfcPauseDstMetricTag + SetLength(value uint32) PatternFlowPfcPauseDstMetricTag + // HasLength checks if Length has been set in PatternFlowPfcPauseDstMetricTag + HasLength() bool +} + +// Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field +// Name returns a string +func (obj *patternFlowPfcPauseDstMetricTag) Name() string { + + return *obj.obj.Name + +} + +// Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field +// SetName sets the string value in the PatternFlowPfcPauseDstMetricTag object +func (obj *patternFlowPfcPauseDstMetricTag) SetName(value string) PatternFlowPfcPauseDstMetricTag { + + obj.obj.Name = &value + return obj +} + +// Offset in bits relative to start of corresponding header field +// Offset returns a uint32 +func (obj *patternFlowPfcPauseDstMetricTag) Offset() uint32 { + + return *obj.obj.Offset + +} + +// Offset in bits relative to start of corresponding header field +// Offset returns a uint32 +func (obj *patternFlowPfcPauseDstMetricTag) HasOffset() bool { + return obj.obj.Offset != nil +} + +// Offset in bits relative to start of corresponding header field +// SetOffset sets the uint32 value in the PatternFlowPfcPauseDstMetricTag object +func (obj *patternFlowPfcPauseDstMetricTag) SetOffset(value uint32) PatternFlowPfcPauseDstMetricTag { + + obj.obj.Offset = &value + return obj +} + +// Number of bits to track for metrics starting from configured offset of corresponding header field +// Length returns a uint32 +func (obj *patternFlowPfcPauseDstMetricTag) Length() uint32 { + + return *obj.obj.Length + +} + +// Number of bits to track for metrics starting from configured offset of corresponding header field +// Length returns a uint32 +func (obj *patternFlowPfcPauseDstMetricTag) HasLength() bool { + return obj.obj.Length != nil +} + +// Number of bits to track for metrics starting from configured offset of corresponding header field +// SetLength sets the uint32 value in the PatternFlowPfcPauseDstMetricTag object +func (obj *patternFlowPfcPauseDstMetricTag) SetLength(value uint32) PatternFlowPfcPauseDstMetricTag { + + obj.obj.Length = &value + return obj +} + +func (obj *patternFlowPfcPauseDstMetricTag) validateObj(vObj *validation, set_default bool) { + if set_default { + obj.setDefault() + } + + // Name is required + if obj.obj.Name == nil { + vObj.validationErrors = append(vObj.validationErrors, "Name is required field on interface PatternFlowPfcPauseDstMetricTag") + } + + if obj.obj.Offset != nil { + + if *obj.obj.Offset > 47 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("0 <= PatternFlowPfcPauseDstMetricTag.Offset <= 47 but Got %d", *obj.obj.Offset)) + } + + } + + if obj.obj.Length != nil { + + if *obj.obj.Length < 1 || *obj.obj.Length > 48 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("1 <= PatternFlowPfcPauseDstMetricTag.Length <= 48 but Got %d", *obj.obj.Length)) + } + + } + +} + +func (obj *patternFlowPfcPauseDstMetricTag) setDefault() { + if obj.obj.Offset == nil { + obj.SetOffset(0) + } + if obj.obj.Length == nil { + obj.SetLength(48) + } + +} + +// ***** PatternFlowPfcPauseSrcCounter ***** +type patternFlowPfcPauseSrcCounter struct { + validation + obj *otg.PatternFlowPfcPauseSrcCounter +} + +func NewPatternFlowPfcPauseSrcCounter() PatternFlowPfcPauseSrcCounter { + obj := patternFlowPfcPauseSrcCounter{obj: &otg.PatternFlowPfcPauseSrcCounter{}} + obj.setDefault() + return &obj +} + +func (obj *patternFlowPfcPauseSrcCounter) Msg() *otg.PatternFlowPfcPauseSrcCounter { + return obj.obj +} + +func (obj *patternFlowPfcPauseSrcCounter) SetMsg(msg *otg.PatternFlowPfcPauseSrcCounter) PatternFlowPfcPauseSrcCounter { + + proto.Merge(obj.obj, msg) + return obj +} + +func (obj *patternFlowPfcPauseSrcCounter) ToProto() (*otg.PatternFlowPfcPauseSrcCounter, error) { + err := obj.validateToAndFrom() + if err != nil { + return nil, err + } + return obj.Msg(), nil +} + +func (obj *patternFlowPfcPauseSrcCounter) FromProto(msg *otg.PatternFlowPfcPauseSrcCounter) (PatternFlowPfcPauseSrcCounter, error) { + newObj := obj.SetMsg(msg) + err := newObj.validateToAndFrom() + if err != nil { + return nil, err + } + return newObj, nil +} + +func (obj *patternFlowPfcPauseSrcCounter) ToPbText() (string, error) { + vErr := obj.validateToAndFrom() + if vErr != nil { + return "", vErr + } + protoMarshal, err := proto.Marshal(obj.Msg()) + if err != nil { + return "", err + } + return string(protoMarshal), nil +} + +func (obj *patternFlowPfcPauseSrcCounter) FromPbText(value string) error { + retObj := proto.Unmarshal([]byte(value), obj.Msg()) + if retObj != nil { + return retObj + } + + vErr := obj.validateToAndFrom() + if vErr != nil { + return vErr + } + return retObj +} + +func (obj *patternFlowPfcPauseSrcCounter) ToYaml() (string, error) { + vErr := obj.validateToAndFrom() + if vErr != nil { + return "", vErr + } + opts := protojson.MarshalOptions{ + UseProtoNames: true, + AllowPartial: true, + EmitUnpopulated: false, + } + data, err := opts.Marshal(obj.Msg()) + if err != nil { + return "", err + } + data, err = yaml.JSONToYAML(data) + if err != nil { + return "", err + } + return string(data), nil +} + +func (obj *patternFlowPfcPauseSrcCounter) FromYaml(value string) error { + if value == "" { + value = "{}" + } + data, err := yaml.YAMLToJSON([]byte(value)) + if err != nil { + return err + } + opts := protojson.UnmarshalOptions{ + AllowPartial: true, + DiscardUnknown: false, + } + uError := opts.Unmarshal([]byte(data), obj.Msg()) + if uError != nil { + return fmt.Errorf("unmarshal error %s", strings.Replace( + uError.Error(), "\u00a0", " ", -1)[7:]) + } + + vErr := obj.validateToAndFrom() + if vErr != nil { + return vErr + } + return nil +} + +func (obj *patternFlowPfcPauseSrcCounter) ToJson() (string, error) { + vErr := obj.validateToAndFrom() + if vErr != nil { + return "", vErr + } + opts := protojson.MarshalOptions{ + UseProtoNames: true, + AllowPartial: true, + EmitUnpopulated: false, + Indent: " ", + } + data, err := opts.Marshal(obj.Msg()) + if err != nil { + return "", err + } + return string(data), nil +} + +func (obj *patternFlowPfcPauseSrcCounter) FromJson(value string) error { + opts := protojson.UnmarshalOptions{ + AllowPartial: true, + DiscardUnknown: false, + } + if value == "" { + value = "{}" + } + uError := opts.Unmarshal([]byte(value), obj.Msg()) + if uError != nil { + return fmt.Errorf("unmarshal error %s", strings.Replace( + uError.Error(), "\u00a0", " ", -1)[7:]) + } + + err := obj.validateToAndFrom() + if err != nil { + return err + } + return nil +} + +func (obj *patternFlowPfcPauseSrcCounter) validateToAndFrom() error { + // emptyVars() + obj.validateObj(&obj.validation, true) + return obj.validationResult() +} + +func (obj *patternFlowPfcPauseSrcCounter) Validate() error { + // emptyVars() + obj.validateObj(&obj.validation, false) + return obj.validationResult() +} + +func (obj *patternFlowPfcPauseSrcCounter) String() string { + str, err := obj.ToYaml() + if err != nil { + return err.Error() + } + return str +} + +func (obj *patternFlowPfcPauseSrcCounter) Clone() (PatternFlowPfcPauseSrcCounter, error) { + vErr := obj.Validate() + if vErr != nil { + return nil, vErr + } + newObj := NewPatternFlowPfcPauseSrcCounter() + data, err := proto.Marshal(obj.Msg()) + if err != nil { + return nil, err + } + pbErr := proto.Unmarshal(data, newObj.Msg()) + if pbErr != nil { + return nil, pbErr + } + return newObj, nil +} + +// PatternFlowPfcPauseSrcCounter is mac counter pattern +type PatternFlowPfcPauseSrcCounter interface { + Validation + // Msg marshals PatternFlowPfcPauseSrcCounter to protobuf object *otg.PatternFlowPfcPauseSrcCounter + // and doesn't set defaults + Msg() *otg.PatternFlowPfcPauseSrcCounter + // SetMsg unmarshals PatternFlowPfcPauseSrcCounter from protobuf object *otg.PatternFlowPfcPauseSrcCounter + // and doesn't set defaults + SetMsg(*otg.PatternFlowPfcPauseSrcCounter) PatternFlowPfcPauseSrcCounter + // ToProto marshals PatternFlowPfcPauseSrcCounter to protobuf object *otg.PatternFlowPfcPauseSrcCounter + ToProto() (*otg.PatternFlowPfcPauseSrcCounter, error) + // ToPbText marshals PatternFlowPfcPauseSrcCounter to protobuf text + ToPbText() (string, error) + // ToYaml marshals PatternFlowPfcPauseSrcCounter to YAML text + ToYaml() (string, error) + // ToJson marshals PatternFlowPfcPauseSrcCounter to JSON text + ToJson() (string, error) + // FromProto unmarshals PatternFlowPfcPauseSrcCounter from protobuf object *otg.PatternFlowPfcPauseSrcCounter + FromProto(msg *otg.PatternFlowPfcPauseSrcCounter) (PatternFlowPfcPauseSrcCounter, error) + // FromPbText unmarshals PatternFlowPfcPauseSrcCounter from protobuf text + FromPbText(value string) error + // FromYaml unmarshals PatternFlowPfcPauseSrcCounter from YAML text + FromYaml(value string) error + // FromJson unmarshals PatternFlowPfcPauseSrcCounter from JSON text + FromJson(value string) error + // Validate validates PatternFlowPfcPauseSrcCounter + Validate() error + // A stringer function + String() string + // Clones the object + Clone() (PatternFlowPfcPauseSrcCounter, error) + validateToAndFrom() error + validateObj(vObj *validation, set_default bool) + setDefault() + // Start returns string, set in PatternFlowPfcPauseSrcCounter. + Start() string + // SetStart assigns string provided by user to PatternFlowPfcPauseSrcCounter + SetStart(value string) PatternFlowPfcPauseSrcCounter + // HasStart checks if Start has been set in PatternFlowPfcPauseSrcCounter + HasStart() bool + // Step returns string, set in PatternFlowPfcPauseSrcCounter. + Step() string + // SetStep assigns string provided by user to PatternFlowPfcPauseSrcCounter + SetStep(value string) PatternFlowPfcPauseSrcCounter + // HasStep checks if Step has been set in PatternFlowPfcPauseSrcCounter + HasStep() bool + // Count returns uint32, set in PatternFlowPfcPauseSrcCounter. + Count() uint32 + // SetCount assigns uint32 provided by user to PatternFlowPfcPauseSrcCounter + SetCount(value uint32) PatternFlowPfcPauseSrcCounter + // HasCount checks if Count has been set in PatternFlowPfcPauseSrcCounter + HasCount() bool +} + +// description is TBD +// Start returns a string +func (obj *patternFlowPfcPauseSrcCounter) Start() string { + + return *obj.obj.Start + +} + +// description is TBD +// Start returns a string +func (obj *patternFlowPfcPauseSrcCounter) HasStart() bool { + return obj.obj.Start != nil +} + +// description is TBD +// SetStart sets the string value in the PatternFlowPfcPauseSrcCounter object +func (obj *patternFlowPfcPauseSrcCounter) SetStart(value string) PatternFlowPfcPauseSrcCounter { + + obj.obj.Start = &value + return obj +} + +// description is TBD +// Step returns a string +func (obj *patternFlowPfcPauseSrcCounter) Step() string { + + return *obj.obj.Step + +} + +// description is TBD +// Step returns a string +func (obj *patternFlowPfcPauseSrcCounter) HasStep() bool { + return obj.obj.Step != nil +} + +// description is TBD +// SetStep sets the string value in the PatternFlowPfcPauseSrcCounter object +func (obj *patternFlowPfcPauseSrcCounter) SetStep(value string) PatternFlowPfcPauseSrcCounter { + + obj.obj.Step = &value + return obj +} + +// description is TBD +// Count returns a uint32 +func (obj *patternFlowPfcPauseSrcCounter) Count() uint32 { + + return *obj.obj.Count + +} + +// description is TBD +// Count returns a uint32 +func (obj *patternFlowPfcPauseSrcCounter) HasCount() bool { + return obj.obj.Count != nil +} + +// description is TBD +// SetCount sets the uint32 value in the PatternFlowPfcPauseSrcCounter object +func (obj *patternFlowPfcPauseSrcCounter) SetCount(value uint32) PatternFlowPfcPauseSrcCounter { + + obj.obj.Count = &value + return obj +} + +func (obj *patternFlowPfcPauseSrcCounter) validateObj(vObj *validation, set_default bool) { + if set_default { + obj.setDefault() + } + + if obj.obj.Start != nil { + + err := obj.validateMac(obj.Start()) + if err != nil { + vObj.validationErrors = append(vObj.validationErrors, fmt.Sprintf("%s %s", err.Error(), "on PatternFlowPfcPauseSrcCounter.Start")) + } + + } + + if obj.obj.Step != nil { + + err := obj.validateMac(obj.Step()) + if err != nil { + vObj.validationErrors = append(vObj.validationErrors, fmt.Sprintf("%s %s", err.Error(), "on PatternFlowPfcPauseSrcCounter.Step")) + } + + } + +} + +func (obj *patternFlowPfcPauseSrcCounter) setDefault() { + if obj.obj.Start == nil { + obj.SetStart("00:00:00:00:00:00") + } + if obj.obj.Step == nil { + obj.SetStep("00:00:00:00:00:01") + } + if obj.obj.Count == nil { + obj.SetCount(1) + } + +} + +// ***** PatternFlowPfcPauseSrcMetricTag ***** +type patternFlowPfcPauseSrcMetricTag struct { + validation + obj *otg.PatternFlowPfcPauseSrcMetricTag +} + +func NewPatternFlowPfcPauseSrcMetricTag() PatternFlowPfcPauseSrcMetricTag { + obj := patternFlowPfcPauseSrcMetricTag{obj: &otg.PatternFlowPfcPauseSrcMetricTag{}} + obj.setDefault() + return &obj +} + +func (obj *patternFlowPfcPauseSrcMetricTag) Msg() *otg.PatternFlowPfcPauseSrcMetricTag { + return obj.obj +} + +func (obj *patternFlowPfcPauseSrcMetricTag) SetMsg(msg *otg.PatternFlowPfcPauseSrcMetricTag) PatternFlowPfcPauseSrcMetricTag { + + proto.Merge(obj.obj, msg) + return obj +} + +func (obj *patternFlowPfcPauseSrcMetricTag) ToProto() (*otg.PatternFlowPfcPauseSrcMetricTag, error) { + err := obj.validateToAndFrom() + if err != nil { + return nil, err + } + return obj.Msg(), nil +} + +func (obj *patternFlowPfcPauseSrcMetricTag) FromProto(msg *otg.PatternFlowPfcPauseSrcMetricTag) (PatternFlowPfcPauseSrcMetricTag, error) { + newObj := obj.SetMsg(msg) + err := newObj.validateToAndFrom() + if err != nil { + return nil, err + } + return newObj, nil +} + +func (obj *patternFlowPfcPauseSrcMetricTag) ToPbText() (string, error) { + vErr := obj.validateToAndFrom() + if vErr != nil { + return "", vErr + } + protoMarshal, err := proto.Marshal(obj.Msg()) + if err != nil { + return "", err + } + return string(protoMarshal), nil +} + +func (obj *patternFlowPfcPauseSrcMetricTag) FromPbText(value string) error { + retObj := proto.Unmarshal([]byte(value), obj.Msg()) + if retObj != nil { + return retObj + } + + vErr := obj.validateToAndFrom() + if vErr != nil { + return vErr + } + return retObj +} + +func (obj *patternFlowPfcPauseSrcMetricTag) ToYaml() (string, error) { + vErr := obj.validateToAndFrom() + if vErr != nil { + return "", vErr + } + opts := protojson.MarshalOptions{ + UseProtoNames: true, + AllowPartial: true, + EmitUnpopulated: false, + } + data, err := opts.Marshal(obj.Msg()) + if err != nil { + return "", err + } + data, err = yaml.JSONToYAML(data) + if err != nil { + return "", err + } + return string(data), nil +} + +func (obj *patternFlowPfcPauseSrcMetricTag) FromYaml(value string) error { + if value == "" { + value = "{}" + } + data, err := yaml.YAMLToJSON([]byte(value)) + if err != nil { + return err + } + opts := protojson.UnmarshalOptions{ + AllowPartial: true, + DiscardUnknown: false, + } + uError := opts.Unmarshal([]byte(data), obj.Msg()) + if uError != nil { + return fmt.Errorf("unmarshal error %s", strings.Replace( + uError.Error(), "\u00a0", " ", -1)[7:]) + } + + vErr := obj.validateToAndFrom() + if vErr != nil { + return vErr + } + return nil +} + +func (obj *patternFlowPfcPauseSrcMetricTag) ToJson() (string, error) { + vErr := obj.validateToAndFrom() + if vErr != nil { + return "", vErr + } + opts := protojson.MarshalOptions{ + UseProtoNames: true, + AllowPartial: true, + EmitUnpopulated: false, + Indent: " ", + } + data, err := opts.Marshal(obj.Msg()) + if err != nil { + return "", err + } + return string(data), nil +} + +func (obj *patternFlowPfcPauseSrcMetricTag) FromJson(value string) error { + opts := protojson.UnmarshalOptions{ + AllowPartial: true, + DiscardUnknown: false, + } + if value == "" { + value = "{}" + } + uError := opts.Unmarshal([]byte(value), obj.Msg()) + if uError != nil { + return fmt.Errorf("unmarshal error %s", strings.Replace( + uError.Error(), "\u00a0", " ", -1)[7:]) + } + + err := obj.validateToAndFrom() + if err != nil { + return err + } + return nil +} + +func (obj *patternFlowPfcPauseSrcMetricTag) validateToAndFrom() error { + // emptyVars() + obj.validateObj(&obj.validation, true) + return obj.validationResult() +} + +func (obj *patternFlowPfcPauseSrcMetricTag) Validate() error { + // emptyVars() + obj.validateObj(&obj.validation, false) + return obj.validationResult() +} + +func (obj *patternFlowPfcPauseSrcMetricTag) String() string { + str, err := obj.ToYaml() + if err != nil { + return err.Error() + } + return str +} + +func (obj *patternFlowPfcPauseSrcMetricTag) Clone() (PatternFlowPfcPauseSrcMetricTag, error) { + vErr := obj.Validate() + if vErr != nil { + return nil, vErr + } + newObj := NewPatternFlowPfcPauseSrcMetricTag() + data, err := proto.Marshal(obj.Msg()) + if err != nil { + return nil, err + } + pbErr := proto.Unmarshal(data, newObj.Msg()) + if pbErr != nil { + return nil, pbErr + } + return newObj, nil +} + +// PatternFlowPfcPauseSrcMetricTag is metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. +type PatternFlowPfcPauseSrcMetricTag interface { + Validation + // Msg marshals PatternFlowPfcPauseSrcMetricTag to protobuf object *otg.PatternFlowPfcPauseSrcMetricTag + // and doesn't set defaults + Msg() *otg.PatternFlowPfcPauseSrcMetricTag + // SetMsg unmarshals PatternFlowPfcPauseSrcMetricTag from protobuf object *otg.PatternFlowPfcPauseSrcMetricTag + // and doesn't set defaults + SetMsg(*otg.PatternFlowPfcPauseSrcMetricTag) PatternFlowPfcPauseSrcMetricTag + // ToProto marshals PatternFlowPfcPauseSrcMetricTag to protobuf object *otg.PatternFlowPfcPauseSrcMetricTag + ToProto() (*otg.PatternFlowPfcPauseSrcMetricTag, error) + // ToPbText marshals PatternFlowPfcPauseSrcMetricTag to protobuf text + ToPbText() (string, error) + // ToYaml marshals PatternFlowPfcPauseSrcMetricTag to YAML text + ToYaml() (string, error) + // ToJson marshals PatternFlowPfcPauseSrcMetricTag to JSON text + ToJson() (string, error) + // FromProto unmarshals PatternFlowPfcPauseSrcMetricTag from protobuf object *otg.PatternFlowPfcPauseSrcMetricTag + FromProto(msg *otg.PatternFlowPfcPauseSrcMetricTag) (PatternFlowPfcPauseSrcMetricTag, error) + // FromPbText unmarshals PatternFlowPfcPauseSrcMetricTag from protobuf text + FromPbText(value string) error + // FromYaml unmarshals PatternFlowPfcPauseSrcMetricTag from YAML text + FromYaml(value string) error + // FromJson unmarshals PatternFlowPfcPauseSrcMetricTag from JSON text + FromJson(value string) error + // Validate validates PatternFlowPfcPauseSrcMetricTag + Validate() error + // A stringer function + String() string + // Clones the object + Clone() (PatternFlowPfcPauseSrcMetricTag, error) + validateToAndFrom() error + validateObj(vObj *validation, set_default bool) + setDefault() + // Name returns string, set in PatternFlowPfcPauseSrcMetricTag. + Name() string + // SetName assigns string provided by user to PatternFlowPfcPauseSrcMetricTag + SetName(value string) PatternFlowPfcPauseSrcMetricTag + // Offset returns uint32, set in PatternFlowPfcPauseSrcMetricTag. + Offset() uint32 + // SetOffset assigns uint32 provided by user to PatternFlowPfcPauseSrcMetricTag + SetOffset(value uint32) PatternFlowPfcPauseSrcMetricTag + // HasOffset checks if Offset has been set in PatternFlowPfcPauseSrcMetricTag + HasOffset() bool + // Length returns uint32, set in PatternFlowPfcPauseSrcMetricTag. + Length() uint32 + // SetLength assigns uint32 provided by user to PatternFlowPfcPauseSrcMetricTag + SetLength(value uint32) PatternFlowPfcPauseSrcMetricTag + // HasLength checks if Length has been set in PatternFlowPfcPauseSrcMetricTag + HasLength() bool +} + +// Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field +// Name returns a string +func (obj *patternFlowPfcPauseSrcMetricTag) Name() string { + + return *obj.obj.Name + +} + +// Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field +// SetName sets the string value in the PatternFlowPfcPauseSrcMetricTag object +func (obj *patternFlowPfcPauseSrcMetricTag) SetName(value string) PatternFlowPfcPauseSrcMetricTag { + + obj.obj.Name = &value + return obj +} + +// Offset in bits relative to start of corresponding header field +// Offset returns a uint32 +func (obj *patternFlowPfcPauseSrcMetricTag) Offset() uint32 { + + return *obj.obj.Offset + +} + +// Offset in bits relative to start of corresponding header field +// Offset returns a uint32 +func (obj *patternFlowPfcPauseSrcMetricTag) HasOffset() bool { + return obj.obj.Offset != nil +} + +// Offset in bits relative to start of corresponding header field +// SetOffset sets the uint32 value in the PatternFlowPfcPauseSrcMetricTag object +func (obj *patternFlowPfcPauseSrcMetricTag) SetOffset(value uint32) PatternFlowPfcPauseSrcMetricTag { + + obj.obj.Offset = &value + return obj +} + +// Number of bits to track for metrics starting from configured offset of corresponding header field +// Length returns a uint32 +func (obj *patternFlowPfcPauseSrcMetricTag) Length() uint32 { + + return *obj.obj.Length + +} + +// Number of bits to track for metrics starting from configured offset of corresponding header field +// Length returns a uint32 +func (obj *patternFlowPfcPauseSrcMetricTag) HasLength() bool { + return obj.obj.Length != nil +} + +// Number of bits to track for metrics starting from configured offset of corresponding header field +// SetLength sets the uint32 value in the PatternFlowPfcPauseSrcMetricTag object +func (obj *patternFlowPfcPauseSrcMetricTag) SetLength(value uint32) PatternFlowPfcPauseSrcMetricTag { + + obj.obj.Length = &value + return obj +} + +func (obj *patternFlowPfcPauseSrcMetricTag) validateObj(vObj *validation, set_default bool) { + if set_default { + obj.setDefault() + } + + // Name is required + if obj.obj.Name == nil { + vObj.validationErrors = append(vObj.validationErrors, "Name is required field on interface PatternFlowPfcPauseSrcMetricTag") + } + + if obj.obj.Offset != nil { + + if *obj.obj.Offset > 47 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("0 <= PatternFlowPfcPauseSrcMetricTag.Offset <= 47 but Got %d", *obj.obj.Offset)) + } + + } + + if obj.obj.Length != nil { + + if *obj.obj.Length < 1 || *obj.obj.Length > 48 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("1 <= PatternFlowPfcPauseSrcMetricTag.Length <= 48 but Got %d", *obj.obj.Length)) + } + + } + +} + +func (obj *patternFlowPfcPauseSrcMetricTag) setDefault() { + if obj.obj.Offset == nil { + obj.SetOffset(0) + } + if obj.obj.Length == nil { + obj.SetLength(48) + } + +} + +// ***** PatternFlowPfcPauseEtherTypeCounter ***** +type patternFlowPfcPauseEtherTypeCounter struct { + validation + obj *otg.PatternFlowPfcPauseEtherTypeCounter +} + +func NewPatternFlowPfcPauseEtherTypeCounter() PatternFlowPfcPauseEtherTypeCounter { + obj := patternFlowPfcPauseEtherTypeCounter{obj: &otg.PatternFlowPfcPauseEtherTypeCounter{}} + obj.setDefault() + return &obj +} + +func (obj *patternFlowPfcPauseEtherTypeCounter) Msg() *otg.PatternFlowPfcPauseEtherTypeCounter { + return obj.obj +} + +func (obj *patternFlowPfcPauseEtherTypeCounter) SetMsg(msg *otg.PatternFlowPfcPauseEtherTypeCounter) PatternFlowPfcPauseEtherTypeCounter { + + proto.Merge(obj.obj, msg) + return obj +} + +func (obj *patternFlowPfcPauseEtherTypeCounter) ToProto() (*otg.PatternFlowPfcPauseEtherTypeCounter, error) { + err := obj.validateToAndFrom() + if err != nil { + return nil, err + } + return obj.Msg(), nil +} + +func (obj *patternFlowPfcPauseEtherTypeCounter) FromProto(msg *otg.PatternFlowPfcPauseEtherTypeCounter) (PatternFlowPfcPauseEtherTypeCounter, error) { + newObj := obj.SetMsg(msg) + err := newObj.validateToAndFrom() + if err != nil { + return nil, err + } + return newObj, nil +} + +func (obj *patternFlowPfcPauseEtherTypeCounter) ToPbText() (string, error) { + vErr := obj.validateToAndFrom() + if vErr != nil { + return "", vErr + } + protoMarshal, err := proto.Marshal(obj.Msg()) + if err != nil { + return "", err + } + return string(protoMarshal), nil +} + +func (obj *patternFlowPfcPauseEtherTypeCounter) FromPbText(value string) error { + retObj := proto.Unmarshal([]byte(value), obj.Msg()) + if retObj != nil { + return retObj + } + + vErr := obj.validateToAndFrom() + if vErr != nil { + return vErr + } + return retObj +} + +func (obj *patternFlowPfcPauseEtherTypeCounter) ToYaml() (string, error) { + vErr := obj.validateToAndFrom() + if vErr != nil { + return "", vErr + } + opts := protojson.MarshalOptions{ + UseProtoNames: true, + AllowPartial: true, + EmitUnpopulated: false, + } + data, err := opts.Marshal(obj.Msg()) + if err != nil { + return "", err + } + data, err = yaml.JSONToYAML(data) + if err != nil { + return "", err + } + return string(data), nil +} + +func (obj *patternFlowPfcPauseEtherTypeCounter) FromYaml(value string) error { + if value == "" { + value = "{}" + } + data, err := yaml.YAMLToJSON([]byte(value)) + if err != nil { + return err + } + opts := protojson.UnmarshalOptions{ + AllowPartial: true, + DiscardUnknown: false, + } + uError := opts.Unmarshal([]byte(data), obj.Msg()) + if uError != nil { + return fmt.Errorf("unmarshal error %s", strings.Replace( + uError.Error(), "\u00a0", " ", -1)[7:]) + } + + vErr := obj.validateToAndFrom() + if vErr != nil { + return vErr + } + return nil +} + +func (obj *patternFlowPfcPauseEtherTypeCounter) ToJson() (string, error) { + vErr := obj.validateToAndFrom() + if vErr != nil { + return "", vErr + } + opts := protojson.MarshalOptions{ + UseProtoNames: true, + AllowPartial: true, + EmitUnpopulated: false, + Indent: " ", + } + data, err := opts.Marshal(obj.Msg()) + if err != nil { + return "", err + } + return string(data), nil +} + +func (obj *patternFlowPfcPauseEtherTypeCounter) FromJson(value string) error { + opts := protojson.UnmarshalOptions{ + AllowPartial: true, + DiscardUnknown: false, + } + if value == "" { + value = "{}" + } + uError := opts.Unmarshal([]byte(value), obj.Msg()) + if uError != nil { + return fmt.Errorf("unmarshal error %s", strings.Replace( + uError.Error(), "\u00a0", " ", -1)[7:]) + } + + err := obj.validateToAndFrom() + if err != nil { + return err + } + return nil +} + +func (obj *patternFlowPfcPauseEtherTypeCounter) validateToAndFrom() error { + // emptyVars() + obj.validateObj(&obj.validation, true) + return obj.validationResult() +} + +func (obj *patternFlowPfcPauseEtherTypeCounter) Validate() error { + // emptyVars() + obj.validateObj(&obj.validation, false) + return obj.validationResult() +} + +func (obj *patternFlowPfcPauseEtherTypeCounter) String() string { + str, err := obj.ToYaml() + if err != nil { + return err.Error() + } + return str +} + +func (obj *patternFlowPfcPauseEtherTypeCounter) Clone() (PatternFlowPfcPauseEtherTypeCounter, error) { + vErr := obj.Validate() + if vErr != nil { + return nil, vErr + } + newObj := NewPatternFlowPfcPauseEtherTypeCounter() + data, err := proto.Marshal(obj.Msg()) + if err != nil { + return nil, err + } + pbErr := proto.Unmarshal(data, newObj.Msg()) + if pbErr != nil { + return nil, pbErr + } + return newObj, nil +} + +// PatternFlowPfcPauseEtherTypeCounter is integer counter pattern +type PatternFlowPfcPauseEtherTypeCounter interface { + Validation + // Msg marshals PatternFlowPfcPauseEtherTypeCounter to protobuf object *otg.PatternFlowPfcPauseEtherTypeCounter + // and doesn't set defaults + Msg() *otg.PatternFlowPfcPauseEtherTypeCounter + // SetMsg unmarshals PatternFlowPfcPauseEtherTypeCounter from protobuf object *otg.PatternFlowPfcPauseEtherTypeCounter + // and doesn't set defaults + SetMsg(*otg.PatternFlowPfcPauseEtherTypeCounter) PatternFlowPfcPauseEtherTypeCounter + // ToProto marshals PatternFlowPfcPauseEtherTypeCounter to protobuf object *otg.PatternFlowPfcPauseEtherTypeCounter + ToProto() (*otg.PatternFlowPfcPauseEtherTypeCounter, error) + // ToPbText marshals PatternFlowPfcPauseEtherTypeCounter to protobuf text + ToPbText() (string, error) + // ToYaml marshals PatternFlowPfcPauseEtherTypeCounter to YAML text + ToYaml() (string, error) + // ToJson marshals PatternFlowPfcPauseEtherTypeCounter to JSON text + ToJson() (string, error) + // FromProto unmarshals PatternFlowPfcPauseEtherTypeCounter from protobuf object *otg.PatternFlowPfcPauseEtherTypeCounter + FromProto(msg *otg.PatternFlowPfcPauseEtherTypeCounter) (PatternFlowPfcPauseEtherTypeCounter, error) + // FromPbText unmarshals PatternFlowPfcPauseEtherTypeCounter from protobuf text + FromPbText(value string) error + // FromYaml unmarshals PatternFlowPfcPauseEtherTypeCounter from YAML text + FromYaml(value string) error + // FromJson unmarshals PatternFlowPfcPauseEtherTypeCounter from JSON text + FromJson(value string) error + // Validate validates PatternFlowPfcPauseEtherTypeCounter + Validate() error + // A stringer function + String() string + // Clones the object + Clone() (PatternFlowPfcPauseEtherTypeCounter, error) + validateToAndFrom() error + validateObj(vObj *validation, set_default bool) + setDefault() + // Start returns uint32, set in PatternFlowPfcPauseEtherTypeCounter. + Start() uint32 + // SetStart assigns uint32 provided by user to PatternFlowPfcPauseEtherTypeCounter + SetStart(value uint32) PatternFlowPfcPauseEtherTypeCounter + // HasStart checks if Start has been set in PatternFlowPfcPauseEtherTypeCounter + HasStart() bool + // Step returns uint32, set in PatternFlowPfcPauseEtherTypeCounter. + Step() uint32 + // SetStep assigns uint32 provided by user to PatternFlowPfcPauseEtherTypeCounter + SetStep(value uint32) PatternFlowPfcPauseEtherTypeCounter + // HasStep checks if Step has been set in PatternFlowPfcPauseEtherTypeCounter + HasStep() bool + // Count returns uint32, set in PatternFlowPfcPauseEtherTypeCounter. + Count() uint32 + // SetCount assigns uint32 provided by user to PatternFlowPfcPauseEtherTypeCounter + SetCount(value uint32) PatternFlowPfcPauseEtherTypeCounter + // HasCount checks if Count has been set in PatternFlowPfcPauseEtherTypeCounter + HasCount() bool +} + +// description is TBD +// Start returns a uint32 +func (obj *patternFlowPfcPauseEtherTypeCounter) Start() uint32 { + + return *obj.obj.Start + +} + +// description is TBD +// Start returns a uint32 +func (obj *patternFlowPfcPauseEtherTypeCounter) HasStart() bool { + return obj.obj.Start != nil +} + +// description is TBD +// SetStart sets the uint32 value in the PatternFlowPfcPauseEtherTypeCounter object +func (obj *patternFlowPfcPauseEtherTypeCounter) SetStart(value uint32) PatternFlowPfcPauseEtherTypeCounter { + + obj.obj.Start = &value + return obj +} + +// description is TBD +// Step returns a uint32 +func (obj *patternFlowPfcPauseEtherTypeCounter) Step() uint32 { + + return *obj.obj.Step + +} + +// description is TBD +// Step returns a uint32 +func (obj *patternFlowPfcPauseEtherTypeCounter) HasStep() bool { + return obj.obj.Step != nil +} + +// description is TBD +// SetStep sets the uint32 value in the PatternFlowPfcPauseEtherTypeCounter object +func (obj *patternFlowPfcPauseEtherTypeCounter) SetStep(value uint32) PatternFlowPfcPauseEtherTypeCounter { + + obj.obj.Step = &value + return obj +} + +// description is TBD +// Count returns a uint32 +func (obj *patternFlowPfcPauseEtherTypeCounter) Count() uint32 { + + return *obj.obj.Count + +} + +// description is TBD +// Count returns a uint32 +func (obj *patternFlowPfcPauseEtherTypeCounter) HasCount() bool { + return obj.obj.Count != nil +} + +// description is TBD +// SetCount sets the uint32 value in the PatternFlowPfcPauseEtherTypeCounter object +func (obj *patternFlowPfcPauseEtherTypeCounter) SetCount(value uint32) PatternFlowPfcPauseEtherTypeCounter { + + obj.obj.Count = &value + return obj +} + +func (obj *patternFlowPfcPauseEtherTypeCounter) validateObj(vObj *validation, set_default bool) { + if set_default { + obj.setDefault() + } + + if obj.obj.Start != nil { + + if *obj.obj.Start > 65535 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("0 <= PatternFlowPfcPauseEtherTypeCounter.Start <= 65535 but Got %d", *obj.obj.Start)) + } + + } + + if obj.obj.Step != nil { + + if *obj.obj.Step > 65535 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("0 <= PatternFlowPfcPauseEtherTypeCounter.Step <= 65535 but Got %d", *obj.obj.Step)) + } + + } + + if obj.obj.Count != nil { + + if *obj.obj.Count > 65535 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("0 <= PatternFlowPfcPauseEtherTypeCounter.Count <= 65535 but Got %d", *obj.obj.Count)) + } + + } + +} + +func (obj *patternFlowPfcPauseEtherTypeCounter) setDefault() { + if obj.obj.Start == nil { + obj.SetStart(34824) + } + if obj.obj.Step == nil { + obj.SetStep(1) + } + if obj.obj.Count == nil { + obj.SetCount(1) + } + +} + +// ***** PatternFlowPfcPauseEtherTypeMetricTag ***** +type patternFlowPfcPauseEtherTypeMetricTag struct { + validation + obj *otg.PatternFlowPfcPauseEtherTypeMetricTag +} + +func NewPatternFlowPfcPauseEtherTypeMetricTag() PatternFlowPfcPauseEtherTypeMetricTag { + obj := patternFlowPfcPauseEtherTypeMetricTag{obj: &otg.PatternFlowPfcPauseEtherTypeMetricTag{}} + obj.setDefault() + return &obj +} + +func (obj *patternFlowPfcPauseEtherTypeMetricTag) Msg() *otg.PatternFlowPfcPauseEtherTypeMetricTag { + return obj.obj +} + +func (obj *patternFlowPfcPauseEtherTypeMetricTag) SetMsg(msg *otg.PatternFlowPfcPauseEtherTypeMetricTag) PatternFlowPfcPauseEtherTypeMetricTag { + + proto.Merge(obj.obj, msg) + return obj +} + +func (obj *patternFlowPfcPauseEtherTypeMetricTag) ToProto() (*otg.PatternFlowPfcPauseEtherTypeMetricTag, error) { + err := obj.validateToAndFrom() + if err != nil { + return nil, err + } + return obj.Msg(), nil +} + +func (obj *patternFlowPfcPauseEtherTypeMetricTag) FromProto(msg *otg.PatternFlowPfcPauseEtherTypeMetricTag) (PatternFlowPfcPauseEtherTypeMetricTag, error) { + newObj := obj.SetMsg(msg) + err := newObj.validateToAndFrom() + if err != nil { + return nil, err + } + return newObj, nil +} + +func (obj *patternFlowPfcPauseEtherTypeMetricTag) ToPbText() (string, error) { + vErr := obj.validateToAndFrom() + if vErr != nil { + return "", vErr + } + protoMarshal, err := proto.Marshal(obj.Msg()) + if err != nil { + return "", err + } + return string(protoMarshal), nil +} + +func (obj *patternFlowPfcPauseEtherTypeMetricTag) FromPbText(value string) error { + retObj := proto.Unmarshal([]byte(value), obj.Msg()) + if retObj != nil { + return retObj + } + + vErr := obj.validateToAndFrom() + if vErr != nil { + return vErr + } + return retObj +} + +func (obj *patternFlowPfcPauseEtherTypeMetricTag) ToYaml() (string, error) { + vErr := obj.validateToAndFrom() + if vErr != nil { + return "", vErr + } + opts := protojson.MarshalOptions{ + UseProtoNames: true, + AllowPartial: true, + EmitUnpopulated: false, + } + data, err := opts.Marshal(obj.Msg()) + if err != nil { + return "", err + } + data, err = yaml.JSONToYAML(data) + if err != nil { + return "", err + } + return string(data), nil +} + +func (obj *patternFlowPfcPauseEtherTypeMetricTag) FromYaml(value string) error { + if value == "" { + value = "{}" + } + data, err := yaml.YAMLToJSON([]byte(value)) + if err != nil { + return err + } + opts := protojson.UnmarshalOptions{ + AllowPartial: true, + DiscardUnknown: false, + } + uError := opts.Unmarshal([]byte(data), obj.Msg()) + if uError != nil { + return fmt.Errorf("unmarshal error %s", strings.Replace( + uError.Error(), "\u00a0", " ", -1)[7:]) + } + + vErr := obj.validateToAndFrom() + if vErr != nil { + return vErr + } + return nil +} + +func (obj *patternFlowPfcPauseEtherTypeMetricTag) ToJson() (string, error) { + vErr := obj.validateToAndFrom() + if vErr != nil { + return "", vErr + } + opts := protojson.MarshalOptions{ + UseProtoNames: true, + AllowPartial: true, + EmitUnpopulated: false, + Indent: " ", + } + data, err := opts.Marshal(obj.Msg()) + if err != nil { + return "", err + } + return string(data), nil +} + +func (obj *patternFlowPfcPauseEtherTypeMetricTag) FromJson(value string) error { + opts := protojson.UnmarshalOptions{ + AllowPartial: true, + DiscardUnknown: false, + } + if value == "" { + value = "{}" + } + uError := opts.Unmarshal([]byte(value), obj.Msg()) + if uError != nil { + return fmt.Errorf("unmarshal error %s", strings.Replace( + uError.Error(), "\u00a0", " ", -1)[7:]) + } + + err := obj.validateToAndFrom() + if err != nil { + return err + } + return nil +} + +func (obj *patternFlowPfcPauseEtherTypeMetricTag) validateToAndFrom() error { + // emptyVars() + obj.validateObj(&obj.validation, true) + return obj.validationResult() +} + +func (obj *patternFlowPfcPauseEtherTypeMetricTag) Validate() error { + // emptyVars() + obj.validateObj(&obj.validation, false) + return obj.validationResult() +} + +func (obj *patternFlowPfcPauseEtherTypeMetricTag) String() string { + str, err := obj.ToYaml() + if err != nil { + return err.Error() + } + return str +} + +func (obj *patternFlowPfcPauseEtherTypeMetricTag) Clone() (PatternFlowPfcPauseEtherTypeMetricTag, error) { + vErr := obj.Validate() + if vErr != nil { + return nil, vErr + } + newObj := NewPatternFlowPfcPauseEtherTypeMetricTag() + data, err := proto.Marshal(obj.Msg()) + if err != nil { + return nil, err + } + pbErr := proto.Unmarshal(data, newObj.Msg()) + if pbErr != nil { + return nil, pbErr + } + return newObj, nil +} + +// PatternFlowPfcPauseEtherTypeMetricTag is metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. +type PatternFlowPfcPauseEtherTypeMetricTag interface { + Validation + // Msg marshals PatternFlowPfcPauseEtherTypeMetricTag to protobuf object *otg.PatternFlowPfcPauseEtherTypeMetricTag + // and doesn't set defaults + Msg() *otg.PatternFlowPfcPauseEtherTypeMetricTag + // SetMsg unmarshals PatternFlowPfcPauseEtherTypeMetricTag from protobuf object *otg.PatternFlowPfcPauseEtherTypeMetricTag + // and doesn't set defaults + SetMsg(*otg.PatternFlowPfcPauseEtherTypeMetricTag) PatternFlowPfcPauseEtherTypeMetricTag + // ToProto marshals PatternFlowPfcPauseEtherTypeMetricTag to protobuf object *otg.PatternFlowPfcPauseEtherTypeMetricTag + ToProto() (*otg.PatternFlowPfcPauseEtherTypeMetricTag, error) + // ToPbText marshals PatternFlowPfcPauseEtherTypeMetricTag to protobuf text + ToPbText() (string, error) + // ToYaml marshals PatternFlowPfcPauseEtherTypeMetricTag to YAML text + ToYaml() (string, error) + // ToJson marshals PatternFlowPfcPauseEtherTypeMetricTag to JSON text + ToJson() (string, error) + // FromProto unmarshals PatternFlowPfcPauseEtherTypeMetricTag from protobuf object *otg.PatternFlowPfcPauseEtherTypeMetricTag + FromProto(msg *otg.PatternFlowPfcPauseEtherTypeMetricTag) (PatternFlowPfcPauseEtherTypeMetricTag, error) + // FromPbText unmarshals PatternFlowPfcPauseEtherTypeMetricTag from protobuf text + FromPbText(value string) error + // FromYaml unmarshals PatternFlowPfcPauseEtherTypeMetricTag from YAML text + FromYaml(value string) error + // FromJson unmarshals PatternFlowPfcPauseEtherTypeMetricTag from JSON text + FromJson(value string) error + // Validate validates PatternFlowPfcPauseEtherTypeMetricTag + Validate() error + // A stringer function + String() string + // Clones the object + Clone() (PatternFlowPfcPauseEtherTypeMetricTag, error) + validateToAndFrom() error + validateObj(vObj *validation, set_default bool) + setDefault() + // Name returns string, set in PatternFlowPfcPauseEtherTypeMetricTag. + Name() string + // SetName assigns string provided by user to PatternFlowPfcPauseEtherTypeMetricTag + SetName(value string) PatternFlowPfcPauseEtherTypeMetricTag + // Offset returns uint32, set in PatternFlowPfcPauseEtherTypeMetricTag. + Offset() uint32 + // SetOffset assigns uint32 provided by user to PatternFlowPfcPauseEtherTypeMetricTag + SetOffset(value uint32) PatternFlowPfcPauseEtherTypeMetricTag + // HasOffset checks if Offset has been set in PatternFlowPfcPauseEtherTypeMetricTag + HasOffset() bool + // Length returns uint32, set in PatternFlowPfcPauseEtherTypeMetricTag. + Length() uint32 + // SetLength assigns uint32 provided by user to PatternFlowPfcPauseEtherTypeMetricTag + SetLength(value uint32) PatternFlowPfcPauseEtherTypeMetricTag + // HasLength checks if Length has been set in PatternFlowPfcPauseEtherTypeMetricTag + HasLength() bool +} + +// Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field +// Name returns a string +func (obj *patternFlowPfcPauseEtherTypeMetricTag) Name() string { + + return *obj.obj.Name + +} + +// Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field +// SetName sets the string value in the PatternFlowPfcPauseEtherTypeMetricTag object +func (obj *patternFlowPfcPauseEtherTypeMetricTag) SetName(value string) PatternFlowPfcPauseEtherTypeMetricTag { + + obj.obj.Name = &value + return obj +} + +// Offset in bits relative to start of corresponding header field +// Offset returns a uint32 +func (obj *patternFlowPfcPauseEtherTypeMetricTag) Offset() uint32 { + + return *obj.obj.Offset + +} + +// Offset in bits relative to start of corresponding header field +// Offset returns a uint32 +func (obj *patternFlowPfcPauseEtherTypeMetricTag) HasOffset() bool { + return obj.obj.Offset != nil +} + +// Offset in bits relative to start of corresponding header field +// SetOffset sets the uint32 value in the PatternFlowPfcPauseEtherTypeMetricTag object +func (obj *patternFlowPfcPauseEtherTypeMetricTag) SetOffset(value uint32) PatternFlowPfcPauseEtherTypeMetricTag { + + obj.obj.Offset = &value + return obj +} + +// Number of bits to track for metrics starting from configured offset of corresponding header field +// Length returns a uint32 +func (obj *patternFlowPfcPauseEtherTypeMetricTag) Length() uint32 { + + return *obj.obj.Length + +} + +// Number of bits to track for metrics starting from configured offset of corresponding header field +// Length returns a uint32 +func (obj *patternFlowPfcPauseEtherTypeMetricTag) HasLength() bool { + return obj.obj.Length != nil +} + +// Number of bits to track for metrics starting from configured offset of corresponding header field +// SetLength sets the uint32 value in the PatternFlowPfcPauseEtherTypeMetricTag object +func (obj *patternFlowPfcPauseEtherTypeMetricTag) SetLength(value uint32) PatternFlowPfcPauseEtherTypeMetricTag { + + obj.obj.Length = &value + return obj +} + +func (obj *patternFlowPfcPauseEtherTypeMetricTag) validateObj(vObj *validation, set_default bool) { + if set_default { + obj.setDefault() + } + + // Name is required + if obj.obj.Name == nil { + vObj.validationErrors = append(vObj.validationErrors, "Name is required field on interface PatternFlowPfcPauseEtherTypeMetricTag") + } + + if obj.obj.Offset != nil { + + if *obj.obj.Offset > 15 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("0 <= PatternFlowPfcPauseEtherTypeMetricTag.Offset <= 15 but Got %d", *obj.obj.Offset)) + } + + } + + if obj.obj.Length != nil { + + if *obj.obj.Length < 1 || *obj.obj.Length > 16 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("1 <= PatternFlowPfcPauseEtherTypeMetricTag.Length <= 16 but Got %d", *obj.obj.Length)) + } + + } + +} + +func (obj *patternFlowPfcPauseEtherTypeMetricTag) setDefault() { + if obj.obj.Offset == nil { + obj.SetOffset(0) + } + if obj.obj.Length == nil { + obj.SetLength(16) + } + +} + +// ***** PatternFlowPfcPauseControlOpCodeCounter ***** +type patternFlowPfcPauseControlOpCodeCounter struct { + validation + obj *otg.PatternFlowPfcPauseControlOpCodeCounter +} + +func NewPatternFlowPfcPauseControlOpCodeCounter() PatternFlowPfcPauseControlOpCodeCounter { + obj := patternFlowPfcPauseControlOpCodeCounter{obj: &otg.PatternFlowPfcPauseControlOpCodeCounter{}} + obj.setDefault() + return &obj +} + +func (obj *patternFlowPfcPauseControlOpCodeCounter) Msg() *otg.PatternFlowPfcPauseControlOpCodeCounter { + return obj.obj +} + +func (obj *patternFlowPfcPauseControlOpCodeCounter) SetMsg(msg *otg.PatternFlowPfcPauseControlOpCodeCounter) PatternFlowPfcPauseControlOpCodeCounter { + + proto.Merge(obj.obj, msg) + return obj +} + +func (obj *patternFlowPfcPauseControlOpCodeCounter) ToProto() (*otg.PatternFlowPfcPauseControlOpCodeCounter, error) { + err := obj.validateToAndFrom() + if err != nil { + return nil, err + } + return obj.Msg(), nil +} + +func (obj *patternFlowPfcPauseControlOpCodeCounter) FromProto(msg *otg.PatternFlowPfcPauseControlOpCodeCounter) (PatternFlowPfcPauseControlOpCodeCounter, error) { + newObj := obj.SetMsg(msg) + err := newObj.validateToAndFrom() + if err != nil { + return nil, err + } + return newObj, nil +} + +func (obj *patternFlowPfcPauseControlOpCodeCounter) ToPbText() (string, error) { + vErr := obj.validateToAndFrom() + if vErr != nil { + return "", vErr + } + protoMarshal, err := proto.Marshal(obj.Msg()) + if err != nil { + return "", err + } + return string(protoMarshal), nil +} + +func (obj *patternFlowPfcPauseControlOpCodeCounter) FromPbText(value string) error { + retObj := proto.Unmarshal([]byte(value), obj.Msg()) + if retObj != nil { + return retObj + } + + vErr := obj.validateToAndFrom() + if vErr != nil { + return vErr + } + return retObj +} + +func (obj *patternFlowPfcPauseControlOpCodeCounter) ToYaml() (string, error) { + vErr := obj.validateToAndFrom() + if vErr != nil { + return "", vErr + } + opts := protojson.MarshalOptions{ + UseProtoNames: true, + AllowPartial: true, + EmitUnpopulated: false, + } + data, err := opts.Marshal(obj.Msg()) + if err != nil { + return "", err + } + data, err = yaml.JSONToYAML(data) + if err != nil { + return "", err + } + return string(data), nil +} + +func (obj *patternFlowPfcPauseControlOpCodeCounter) FromYaml(value string) error { + if value == "" { + value = "{}" + } + data, err := yaml.YAMLToJSON([]byte(value)) + if err != nil { + return err + } + opts := protojson.UnmarshalOptions{ + AllowPartial: true, + DiscardUnknown: false, + } + uError := opts.Unmarshal([]byte(data), obj.Msg()) + if uError != nil { + return fmt.Errorf("unmarshal error %s", strings.Replace( + uError.Error(), "\u00a0", " ", -1)[7:]) + } + + vErr := obj.validateToAndFrom() + if vErr != nil { + return vErr + } + return nil +} + +func (obj *patternFlowPfcPauseControlOpCodeCounter) ToJson() (string, error) { + vErr := obj.validateToAndFrom() + if vErr != nil { + return "", vErr + } + opts := protojson.MarshalOptions{ + UseProtoNames: true, + AllowPartial: true, + EmitUnpopulated: false, + Indent: " ", + } + data, err := opts.Marshal(obj.Msg()) + if err != nil { + return "", err + } + return string(data), nil +} + +func (obj *patternFlowPfcPauseControlOpCodeCounter) FromJson(value string) error { + opts := protojson.UnmarshalOptions{ + AllowPartial: true, + DiscardUnknown: false, + } + if value == "" { + value = "{}" + } + uError := opts.Unmarshal([]byte(value), obj.Msg()) + if uError != nil { + return fmt.Errorf("unmarshal error %s", strings.Replace( + uError.Error(), "\u00a0", " ", -1)[7:]) + } + + err := obj.validateToAndFrom() + if err != nil { + return err + } + return nil +} + +func (obj *patternFlowPfcPauseControlOpCodeCounter) validateToAndFrom() error { + // emptyVars() + obj.validateObj(&obj.validation, true) + return obj.validationResult() +} + +func (obj *patternFlowPfcPauseControlOpCodeCounter) Validate() error { + // emptyVars() + obj.validateObj(&obj.validation, false) + return obj.validationResult() +} + +func (obj *patternFlowPfcPauseControlOpCodeCounter) String() string { + str, err := obj.ToYaml() + if err != nil { + return err.Error() + } + return str +} + +func (obj *patternFlowPfcPauseControlOpCodeCounter) Clone() (PatternFlowPfcPauseControlOpCodeCounter, error) { + vErr := obj.Validate() + if vErr != nil { + return nil, vErr + } + newObj := NewPatternFlowPfcPauseControlOpCodeCounter() + data, err := proto.Marshal(obj.Msg()) + if err != nil { + return nil, err + } + pbErr := proto.Unmarshal(data, newObj.Msg()) + if pbErr != nil { + return nil, pbErr + } + return newObj, nil +} + +// PatternFlowPfcPauseControlOpCodeCounter is integer counter pattern +type PatternFlowPfcPauseControlOpCodeCounter interface { + Validation + // Msg marshals PatternFlowPfcPauseControlOpCodeCounter to protobuf object *otg.PatternFlowPfcPauseControlOpCodeCounter + // and doesn't set defaults + Msg() *otg.PatternFlowPfcPauseControlOpCodeCounter + // SetMsg unmarshals PatternFlowPfcPauseControlOpCodeCounter from protobuf object *otg.PatternFlowPfcPauseControlOpCodeCounter + // and doesn't set defaults + SetMsg(*otg.PatternFlowPfcPauseControlOpCodeCounter) PatternFlowPfcPauseControlOpCodeCounter + // ToProto marshals PatternFlowPfcPauseControlOpCodeCounter to protobuf object *otg.PatternFlowPfcPauseControlOpCodeCounter + ToProto() (*otg.PatternFlowPfcPauseControlOpCodeCounter, error) + // ToPbText marshals PatternFlowPfcPauseControlOpCodeCounter to protobuf text + ToPbText() (string, error) + // ToYaml marshals PatternFlowPfcPauseControlOpCodeCounter to YAML text + ToYaml() (string, error) + // ToJson marshals PatternFlowPfcPauseControlOpCodeCounter to JSON text + ToJson() (string, error) + // FromProto unmarshals PatternFlowPfcPauseControlOpCodeCounter from protobuf object *otg.PatternFlowPfcPauseControlOpCodeCounter + FromProto(msg *otg.PatternFlowPfcPauseControlOpCodeCounter) (PatternFlowPfcPauseControlOpCodeCounter, error) + // FromPbText unmarshals PatternFlowPfcPauseControlOpCodeCounter from protobuf text + FromPbText(value string) error + // FromYaml unmarshals PatternFlowPfcPauseControlOpCodeCounter from YAML text + FromYaml(value string) error + // FromJson unmarshals PatternFlowPfcPauseControlOpCodeCounter from JSON text + FromJson(value string) error + // Validate validates PatternFlowPfcPauseControlOpCodeCounter + Validate() error + // A stringer function + String() string + // Clones the object + Clone() (PatternFlowPfcPauseControlOpCodeCounter, error) + validateToAndFrom() error + validateObj(vObj *validation, set_default bool) + setDefault() + // Start returns uint32, set in PatternFlowPfcPauseControlOpCodeCounter. + Start() uint32 + // SetStart assigns uint32 provided by user to PatternFlowPfcPauseControlOpCodeCounter + SetStart(value uint32) PatternFlowPfcPauseControlOpCodeCounter + // HasStart checks if Start has been set in PatternFlowPfcPauseControlOpCodeCounter + HasStart() bool + // Step returns uint32, set in PatternFlowPfcPauseControlOpCodeCounter. + Step() uint32 + // SetStep assigns uint32 provided by user to PatternFlowPfcPauseControlOpCodeCounter + SetStep(value uint32) PatternFlowPfcPauseControlOpCodeCounter + // HasStep checks if Step has been set in PatternFlowPfcPauseControlOpCodeCounter + HasStep() bool + // Count returns uint32, set in PatternFlowPfcPauseControlOpCodeCounter. + Count() uint32 + // SetCount assigns uint32 provided by user to PatternFlowPfcPauseControlOpCodeCounter + SetCount(value uint32) PatternFlowPfcPauseControlOpCodeCounter + // HasCount checks if Count has been set in PatternFlowPfcPauseControlOpCodeCounter + HasCount() bool +} + +// description is TBD +// Start returns a uint32 +func (obj *patternFlowPfcPauseControlOpCodeCounter) Start() uint32 { + + return *obj.obj.Start + +} + +// description is TBD +// Start returns a uint32 +func (obj *patternFlowPfcPauseControlOpCodeCounter) HasStart() bool { + return obj.obj.Start != nil +} + +// description is TBD +// SetStart sets the uint32 value in the PatternFlowPfcPauseControlOpCodeCounter object +func (obj *patternFlowPfcPauseControlOpCodeCounter) SetStart(value uint32) PatternFlowPfcPauseControlOpCodeCounter { + + obj.obj.Start = &value + return obj +} + +// description is TBD +// Step returns a uint32 +func (obj *patternFlowPfcPauseControlOpCodeCounter) Step() uint32 { + + return *obj.obj.Step + +} + +// description is TBD +// Step returns a uint32 +func (obj *patternFlowPfcPauseControlOpCodeCounter) HasStep() bool { + return obj.obj.Step != nil +} + +// description is TBD +// SetStep sets the uint32 value in the PatternFlowPfcPauseControlOpCodeCounter object +func (obj *patternFlowPfcPauseControlOpCodeCounter) SetStep(value uint32) PatternFlowPfcPauseControlOpCodeCounter { + + obj.obj.Step = &value + return obj +} + +// description is TBD +// Count returns a uint32 +func (obj *patternFlowPfcPauseControlOpCodeCounter) Count() uint32 { + + return *obj.obj.Count + +} + +// description is TBD +// Count returns a uint32 +func (obj *patternFlowPfcPauseControlOpCodeCounter) HasCount() bool { + return obj.obj.Count != nil +} + +// description is TBD +// SetCount sets the uint32 value in the PatternFlowPfcPauseControlOpCodeCounter object +func (obj *patternFlowPfcPauseControlOpCodeCounter) SetCount(value uint32) PatternFlowPfcPauseControlOpCodeCounter { + + obj.obj.Count = &value + return obj +} + +func (obj *patternFlowPfcPauseControlOpCodeCounter) validateObj(vObj *validation, set_default bool) { + if set_default { + obj.setDefault() + } + + if obj.obj.Start != nil { + + if *obj.obj.Start > 65535 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("0 <= PatternFlowPfcPauseControlOpCodeCounter.Start <= 65535 but Got %d", *obj.obj.Start)) + } + + } + + if obj.obj.Step != nil { + + if *obj.obj.Step > 65535 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("0 <= PatternFlowPfcPauseControlOpCodeCounter.Step <= 65535 but Got %d", *obj.obj.Step)) + } + + } + + if obj.obj.Count != nil { + + if *obj.obj.Count > 65535 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("0 <= PatternFlowPfcPauseControlOpCodeCounter.Count <= 65535 but Got %d", *obj.obj.Count)) + } + + } + +} + +func (obj *patternFlowPfcPauseControlOpCodeCounter) setDefault() { + if obj.obj.Start == nil { + obj.SetStart(257) + } + if obj.obj.Step == nil { + obj.SetStep(1) + } + if obj.obj.Count == nil { + obj.SetCount(1) + } + +} + +// ***** PatternFlowPfcPauseControlOpCodeMetricTag ***** +type patternFlowPfcPauseControlOpCodeMetricTag struct { + validation + obj *otg.PatternFlowPfcPauseControlOpCodeMetricTag +} + +func NewPatternFlowPfcPauseControlOpCodeMetricTag() PatternFlowPfcPauseControlOpCodeMetricTag { + obj := patternFlowPfcPauseControlOpCodeMetricTag{obj: &otg.PatternFlowPfcPauseControlOpCodeMetricTag{}} + obj.setDefault() + return &obj +} + +func (obj *patternFlowPfcPauseControlOpCodeMetricTag) Msg() *otg.PatternFlowPfcPauseControlOpCodeMetricTag { + return obj.obj +} + +func (obj *patternFlowPfcPauseControlOpCodeMetricTag) SetMsg(msg *otg.PatternFlowPfcPauseControlOpCodeMetricTag) PatternFlowPfcPauseControlOpCodeMetricTag { + + proto.Merge(obj.obj, msg) + return obj +} + +func (obj *patternFlowPfcPauseControlOpCodeMetricTag) ToProto() (*otg.PatternFlowPfcPauseControlOpCodeMetricTag, error) { + err := obj.validateToAndFrom() + if err != nil { + return nil, err + } + return obj.Msg(), nil +} + +func (obj *patternFlowPfcPauseControlOpCodeMetricTag) FromProto(msg *otg.PatternFlowPfcPauseControlOpCodeMetricTag) (PatternFlowPfcPauseControlOpCodeMetricTag, error) { + newObj := obj.SetMsg(msg) + err := newObj.validateToAndFrom() + if err != nil { + return nil, err + } + return newObj, nil +} + +func (obj *patternFlowPfcPauseControlOpCodeMetricTag) ToPbText() (string, error) { + vErr := obj.validateToAndFrom() + if vErr != nil { + return "", vErr + } + protoMarshal, err := proto.Marshal(obj.Msg()) + if err != nil { + return "", err + } + return string(protoMarshal), nil +} + +func (obj *patternFlowPfcPauseControlOpCodeMetricTag) FromPbText(value string) error { + retObj := proto.Unmarshal([]byte(value), obj.Msg()) + if retObj != nil { + return retObj + } + + vErr := obj.validateToAndFrom() + if vErr != nil { + return vErr + } + return retObj +} + +func (obj *patternFlowPfcPauseControlOpCodeMetricTag) ToYaml() (string, error) { + vErr := obj.validateToAndFrom() + if vErr != nil { + return "", vErr + } + opts := protojson.MarshalOptions{ + UseProtoNames: true, + AllowPartial: true, + EmitUnpopulated: false, + } + data, err := opts.Marshal(obj.Msg()) + if err != nil { + return "", err + } + data, err = yaml.JSONToYAML(data) + if err != nil { + return "", err + } + return string(data), nil +} + +func (obj *patternFlowPfcPauseControlOpCodeMetricTag) FromYaml(value string) error { + if value == "" { + value = "{}" + } + data, err := yaml.YAMLToJSON([]byte(value)) + if err != nil { + return err + } + opts := protojson.UnmarshalOptions{ + AllowPartial: true, + DiscardUnknown: false, + } + uError := opts.Unmarshal([]byte(data), obj.Msg()) + if uError != nil { + return fmt.Errorf("unmarshal error %s", strings.Replace( + uError.Error(), "\u00a0", " ", -1)[7:]) + } + + vErr := obj.validateToAndFrom() + if vErr != nil { + return vErr + } + return nil +} + +func (obj *patternFlowPfcPauseControlOpCodeMetricTag) ToJson() (string, error) { + vErr := obj.validateToAndFrom() + if vErr != nil { + return "", vErr + } + opts := protojson.MarshalOptions{ + UseProtoNames: true, + AllowPartial: true, + EmitUnpopulated: false, + Indent: " ", + } + data, err := opts.Marshal(obj.Msg()) + if err != nil { + return "", err + } + return string(data), nil +} + +func (obj *patternFlowPfcPauseControlOpCodeMetricTag) FromJson(value string) error { + opts := protojson.UnmarshalOptions{ + AllowPartial: true, + DiscardUnknown: false, + } + if value == "" { + value = "{}" + } + uError := opts.Unmarshal([]byte(value), obj.Msg()) + if uError != nil { + return fmt.Errorf("unmarshal error %s", strings.Replace( + uError.Error(), "\u00a0", " ", -1)[7:]) + } + + err := obj.validateToAndFrom() + if err != nil { + return err + } + return nil +} + +func (obj *patternFlowPfcPauseControlOpCodeMetricTag) validateToAndFrom() error { + // emptyVars() + obj.validateObj(&obj.validation, true) + return obj.validationResult() +} + +func (obj *patternFlowPfcPauseControlOpCodeMetricTag) Validate() error { + // emptyVars() + obj.validateObj(&obj.validation, false) + return obj.validationResult() +} + +func (obj *patternFlowPfcPauseControlOpCodeMetricTag) String() string { + str, err := obj.ToYaml() + if err != nil { + return err.Error() + } + return str +} + +func (obj *patternFlowPfcPauseControlOpCodeMetricTag) Clone() (PatternFlowPfcPauseControlOpCodeMetricTag, error) { + vErr := obj.Validate() + if vErr != nil { + return nil, vErr + } + newObj := NewPatternFlowPfcPauseControlOpCodeMetricTag() + data, err := proto.Marshal(obj.Msg()) + if err != nil { + return nil, err + } + pbErr := proto.Unmarshal(data, newObj.Msg()) + if pbErr != nil { + return nil, pbErr + } + return newObj, nil +} + +// PatternFlowPfcPauseControlOpCodeMetricTag is metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. +type PatternFlowPfcPauseControlOpCodeMetricTag interface { + Validation + // Msg marshals PatternFlowPfcPauseControlOpCodeMetricTag to protobuf object *otg.PatternFlowPfcPauseControlOpCodeMetricTag + // and doesn't set defaults + Msg() *otg.PatternFlowPfcPauseControlOpCodeMetricTag + // SetMsg unmarshals PatternFlowPfcPauseControlOpCodeMetricTag from protobuf object *otg.PatternFlowPfcPauseControlOpCodeMetricTag + // and doesn't set defaults + SetMsg(*otg.PatternFlowPfcPauseControlOpCodeMetricTag) PatternFlowPfcPauseControlOpCodeMetricTag + // ToProto marshals PatternFlowPfcPauseControlOpCodeMetricTag to protobuf object *otg.PatternFlowPfcPauseControlOpCodeMetricTag + ToProto() (*otg.PatternFlowPfcPauseControlOpCodeMetricTag, error) + // ToPbText marshals PatternFlowPfcPauseControlOpCodeMetricTag to protobuf text + ToPbText() (string, error) + // ToYaml marshals PatternFlowPfcPauseControlOpCodeMetricTag to YAML text + ToYaml() (string, error) + // ToJson marshals PatternFlowPfcPauseControlOpCodeMetricTag to JSON text + ToJson() (string, error) + // FromProto unmarshals PatternFlowPfcPauseControlOpCodeMetricTag from protobuf object *otg.PatternFlowPfcPauseControlOpCodeMetricTag + FromProto(msg *otg.PatternFlowPfcPauseControlOpCodeMetricTag) (PatternFlowPfcPauseControlOpCodeMetricTag, error) + // FromPbText unmarshals PatternFlowPfcPauseControlOpCodeMetricTag from protobuf text + FromPbText(value string) error + // FromYaml unmarshals PatternFlowPfcPauseControlOpCodeMetricTag from YAML text + FromYaml(value string) error + // FromJson unmarshals PatternFlowPfcPauseControlOpCodeMetricTag from JSON text + FromJson(value string) error + // Validate validates PatternFlowPfcPauseControlOpCodeMetricTag + Validate() error + // A stringer function + String() string + // Clones the object + Clone() (PatternFlowPfcPauseControlOpCodeMetricTag, error) + validateToAndFrom() error + validateObj(vObj *validation, set_default bool) + setDefault() + // Name returns string, set in PatternFlowPfcPauseControlOpCodeMetricTag. + Name() string + // SetName assigns string provided by user to PatternFlowPfcPauseControlOpCodeMetricTag + SetName(value string) PatternFlowPfcPauseControlOpCodeMetricTag + // Offset returns uint32, set in PatternFlowPfcPauseControlOpCodeMetricTag. + Offset() uint32 + // SetOffset assigns uint32 provided by user to PatternFlowPfcPauseControlOpCodeMetricTag + SetOffset(value uint32) PatternFlowPfcPauseControlOpCodeMetricTag + // HasOffset checks if Offset has been set in PatternFlowPfcPauseControlOpCodeMetricTag + HasOffset() bool + // Length returns uint32, set in PatternFlowPfcPauseControlOpCodeMetricTag. + Length() uint32 + // SetLength assigns uint32 provided by user to PatternFlowPfcPauseControlOpCodeMetricTag + SetLength(value uint32) PatternFlowPfcPauseControlOpCodeMetricTag + // HasLength checks if Length has been set in PatternFlowPfcPauseControlOpCodeMetricTag + HasLength() bool +} + +// Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field +// Name returns a string +func (obj *patternFlowPfcPauseControlOpCodeMetricTag) Name() string { + + return *obj.obj.Name + +} + +// Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field +// SetName sets the string value in the PatternFlowPfcPauseControlOpCodeMetricTag object +func (obj *patternFlowPfcPauseControlOpCodeMetricTag) SetName(value string) PatternFlowPfcPauseControlOpCodeMetricTag { + + obj.obj.Name = &value + return obj +} + +// Offset in bits relative to start of corresponding header field +// Offset returns a uint32 +func (obj *patternFlowPfcPauseControlOpCodeMetricTag) Offset() uint32 { + + return *obj.obj.Offset + +} + +// Offset in bits relative to start of corresponding header field +// Offset returns a uint32 +func (obj *patternFlowPfcPauseControlOpCodeMetricTag) HasOffset() bool { + return obj.obj.Offset != nil +} + +// Offset in bits relative to start of corresponding header field +// SetOffset sets the uint32 value in the PatternFlowPfcPauseControlOpCodeMetricTag object +func (obj *patternFlowPfcPauseControlOpCodeMetricTag) SetOffset(value uint32) PatternFlowPfcPauseControlOpCodeMetricTag { + + obj.obj.Offset = &value + return obj +} + +// Number of bits to track for metrics starting from configured offset of corresponding header field +// Length returns a uint32 +func (obj *patternFlowPfcPauseControlOpCodeMetricTag) Length() uint32 { + + return *obj.obj.Length + +} + +// Number of bits to track for metrics starting from configured offset of corresponding header field +// Length returns a uint32 +func (obj *patternFlowPfcPauseControlOpCodeMetricTag) HasLength() bool { + return obj.obj.Length != nil +} + +// Number of bits to track for metrics starting from configured offset of corresponding header field +// SetLength sets the uint32 value in the PatternFlowPfcPauseControlOpCodeMetricTag object +func (obj *patternFlowPfcPauseControlOpCodeMetricTag) SetLength(value uint32) PatternFlowPfcPauseControlOpCodeMetricTag { + + obj.obj.Length = &value + return obj +} + +func (obj *patternFlowPfcPauseControlOpCodeMetricTag) validateObj(vObj *validation, set_default bool) { + if set_default { + obj.setDefault() + } + + // Name is required + if obj.obj.Name == nil { + vObj.validationErrors = append(vObj.validationErrors, "Name is required field on interface PatternFlowPfcPauseControlOpCodeMetricTag") + } + + if obj.obj.Offset != nil { + + if *obj.obj.Offset > 15 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("0 <= PatternFlowPfcPauseControlOpCodeMetricTag.Offset <= 15 but Got %d", *obj.obj.Offset)) + } + + } + + if obj.obj.Length != nil { + + if *obj.obj.Length < 1 || *obj.obj.Length > 16 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("1 <= PatternFlowPfcPauseControlOpCodeMetricTag.Length <= 16 but Got %d", *obj.obj.Length)) + } + + } + +} + +func (obj *patternFlowPfcPauseControlOpCodeMetricTag) setDefault() { + if obj.obj.Offset == nil { + obj.SetOffset(0) + } + if obj.obj.Length == nil { + obj.SetLength(16) + } + +} + +// ***** PatternFlowPfcPauseClassEnableVectorCounter ***** +type patternFlowPfcPauseClassEnableVectorCounter struct { + validation + obj *otg.PatternFlowPfcPauseClassEnableVectorCounter +} + +func NewPatternFlowPfcPauseClassEnableVectorCounter() PatternFlowPfcPauseClassEnableVectorCounter { + obj := patternFlowPfcPauseClassEnableVectorCounter{obj: &otg.PatternFlowPfcPauseClassEnableVectorCounter{}} + obj.setDefault() + return &obj +} + +func (obj *patternFlowPfcPauseClassEnableVectorCounter) Msg() *otg.PatternFlowPfcPauseClassEnableVectorCounter { + return obj.obj +} + +func (obj *patternFlowPfcPauseClassEnableVectorCounter) SetMsg(msg *otg.PatternFlowPfcPauseClassEnableVectorCounter) PatternFlowPfcPauseClassEnableVectorCounter { + + proto.Merge(obj.obj, msg) + return obj +} + +func (obj *patternFlowPfcPauseClassEnableVectorCounter) ToProto() (*otg.PatternFlowPfcPauseClassEnableVectorCounter, error) { + err := obj.validateToAndFrom() + if err != nil { + return nil, err + } + return obj.Msg(), nil +} + +func (obj *patternFlowPfcPauseClassEnableVectorCounter) FromProto(msg *otg.PatternFlowPfcPauseClassEnableVectorCounter) (PatternFlowPfcPauseClassEnableVectorCounter, error) { + newObj := obj.SetMsg(msg) + err := newObj.validateToAndFrom() + if err != nil { + return nil, err + } + return newObj, nil +} + +func (obj *patternFlowPfcPauseClassEnableVectorCounter) ToPbText() (string, error) { + vErr := obj.validateToAndFrom() + if vErr != nil { + return "", vErr + } + protoMarshal, err := proto.Marshal(obj.Msg()) + if err != nil { + return "", err + } + return string(protoMarshal), nil +} + +func (obj *patternFlowPfcPauseClassEnableVectorCounter) FromPbText(value string) error { + retObj := proto.Unmarshal([]byte(value), obj.Msg()) + if retObj != nil { + return retObj + } + + vErr := obj.validateToAndFrom() + if vErr != nil { + return vErr + } + return retObj +} + +func (obj *patternFlowPfcPauseClassEnableVectorCounter) ToYaml() (string, error) { + vErr := obj.validateToAndFrom() + if vErr != nil { + return "", vErr + } + opts := protojson.MarshalOptions{ + UseProtoNames: true, + AllowPartial: true, + EmitUnpopulated: false, + } + data, err := opts.Marshal(obj.Msg()) + if err != nil { + return "", err + } + data, err = yaml.JSONToYAML(data) + if err != nil { + return "", err + } + return string(data), nil +} + +func (obj *patternFlowPfcPauseClassEnableVectorCounter) FromYaml(value string) error { + if value == "" { + value = "{}" + } + data, err := yaml.YAMLToJSON([]byte(value)) + if err != nil { + return err + } + opts := protojson.UnmarshalOptions{ + AllowPartial: true, + DiscardUnknown: false, + } + uError := opts.Unmarshal([]byte(data), obj.Msg()) + if uError != nil { + return fmt.Errorf("unmarshal error %s", strings.Replace( + uError.Error(), "\u00a0", " ", -1)[7:]) + } + + vErr := obj.validateToAndFrom() + if vErr != nil { + return vErr + } + return nil +} + +func (obj *patternFlowPfcPauseClassEnableVectorCounter) ToJson() (string, error) { + vErr := obj.validateToAndFrom() + if vErr != nil { + return "", vErr + } + opts := protojson.MarshalOptions{ + UseProtoNames: true, + AllowPartial: true, + EmitUnpopulated: false, + Indent: " ", + } + data, err := opts.Marshal(obj.Msg()) + if err != nil { + return "", err + } + return string(data), nil +} + +func (obj *patternFlowPfcPauseClassEnableVectorCounter) FromJson(value string) error { + opts := protojson.UnmarshalOptions{ + AllowPartial: true, + DiscardUnknown: false, + } + if value == "" { + value = "{}" + } + uError := opts.Unmarshal([]byte(value), obj.Msg()) + if uError != nil { + return fmt.Errorf("unmarshal error %s", strings.Replace( + uError.Error(), "\u00a0", " ", -1)[7:]) + } + + err := obj.validateToAndFrom() + if err != nil { + return err + } + return nil +} + +func (obj *patternFlowPfcPauseClassEnableVectorCounter) validateToAndFrom() error { + // emptyVars() + obj.validateObj(&obj.validation, true) + return obj.validationResult() +} + +func (obj *patternFlowPfcPauseClassEnableVectorCounter) Validate() error { + // emptyVars() + obj.validateObj(&obj.validation, false) + return obj.validationResult() +} + +func (obj *patternFlowPfcPauseClassEnableVectorCounter) String() string { + str, err := obj.ToYaml() + if err != nil { + return err.Error() + } + return str +} + +func (obj *patternFlowPfcPauseClassEnableVectorCounter) Clone() (PatternFlowPfcPauseClassEnableVectorCounter, error) { + vErr := obj.Validate() + if vErr != nil { + return nil, vErr + } + newObj := NewPatternFlowPfcPauseClassEnableVectorCounter() + data, err := proto.Marshal(obj.Msg()) + if err != nil { + return nil, err + } + pbErr := proto.Unmarshal(data, newObj.Msg()) + if pbErr != nil { + return nil, pbErr + } + return newObj, nil +} + +// PatternFlowPfcPauseClassEnableVectorCounter is integer counter pattern +type PatternFlowPfcPauseClassEnableVectorCounter interface { + Validation + // Msg marshals PatternFlowPfcPauseClassEnableVectorCounter to protobuf object *otg.PatternFlowPfcPauseClassEnableVectorCounter + // and doesn't set defaults + Msg() *otg.PatternFlowPfcPauseClassEnableVectorCounter + // SetMsg unmarshals PatternFlowPfcPauseClassEnableVectorCounter from protobuf object *otg.PatternFlowPfcPauseClassEnableVectorCounter + // and doesn't set defaults + SetMsg(*otg.PatternFlowPfcPauseClassEnableVectorCounter) PatternFlowPfcPauseClassEnableVectorCounter + // ToProto marshals PatternFlowPfcPauseClassEnableVectorCounter to protobuf object *otg.PatternFlowPfcPauseClassEnableVectorCounter + ToProto() (*otg.PatternFlowPfcPauseClassEnableVectorCounter, error) + // ToPbText marshals PatternFlowPfcPauseClassEnableVectorCounter to protobuf text + ToPbText() (string, error) + // ToYaml marshals PatternFlowPfcPauseClassEnableVectorCounter to YAML text + ToYaml() (string, error) + // ToJson marshals PatternFlowPfcPauseClassEnableVectorCounter to JSON text + ToJson() (string, error) + // FromProto unmarshals PatternFlowPfcPauseClassEnableVectorCounter from protobuf object *otg.PatternFlowPfcPauseClassEnableVectorCounter + FromProto(msg *otg.PatternFlowPfcPauseClassEnableVectorCounter) (PatternFlowPfcPauseClassEnableVectorCounter, error) + // FromPbText unmarshals PatternFlowPfcPauseClassEnableVectorCounter from protobuf text + FromPbText(value string) error + // FromYaml unmarshals PatternFlowPfcPauseClassEnableVectorCounter from YAML text + FromYaml(value string) error + // FromJson unmarshals PatternFlowPfcPauseClassEnableVectorCounter from JSON text + FromJson(value string) error + // Validate validates PatternFlowPfcPauseClassEnableVectorCounter + Validate() error + // A stringer function + String() string + // Clones the object + Clone() (PatternFlowPfcPauseClassEnableVectorCounter, error) + validateToAndFrom() error + validateObj(vObj *validation, set_default bool) + setDefault() + // Start returns uint32, set in PatternFlowPfcPauseClassEnableVectorCounter. + Start() uint32 + // SetStart assigns uint32 provided by user to PatternFlowPfcPauseClassEnableVectorCounter + SetStart(value uint32) PatternFlowPfcPauseClassEnableVectorCounter + // HasStart checks if Start has been set in PatternFlowPfcPauseClassEnableVectorCounter + HasStart() bool + // Step returns uint32, set in PatternFlowPfcPauseClassEnableVectorCounter. + Step() uint32 + // SetStep assigns uint32 provided by user to PatternFlowPfcPauseClassEnableVectorCounter + SetStep(value uint32) PatternFlowPfcPauseClassEnableVectorCounter + // HasStep checks if Step has been set in PatternFlowPfcPauseClassEnableVectorCounter + HasStep() bool + // Count returns uint32, set in PatternFlowPfcPauseClassEnableVectorCounter. + Count() uint32 + // SetCount assigns uint32 provided by user to PatternFlowPfcPauseClassEnableVectorCounter + SetCount(value uint32) PatternFlowPfcPauseClassEnableVectorCounter + // HasCount checks if Count has been set in PatternFlowPfcPauseClassEnableVectorCounter + HasCount() bool +} + +// description is TBD +// Start returns a uint32 +func (obj *patternFlowPfcPauseClassEnableVectorCounter) Start() uint32 { + + return *obj.obj.Start + +} + +// description is TBD +// Start returns a uint32 +func (obj *patternFlowPfcPauseClassEnableVectorCounter) HasStart() bool { + return obj.obj.Start != nil +} + +// description is TBD +// SetStart sets the uint32 value in the PatternFlowPfcPauseClassEnableVectorCounter object +func (obj *patternFlowPfcPauseClassEnableVectorCounter) SetStart(value uint32) PatternFlowPfcPauseClassEnableVectorCounter { + + obj.obj.Start = &value + return obj +} + +// description is TBD +// Step returns a uint32 +func (obj *patternFlowPfcPauseClassEnableVectorCounter) Step() uint32 { + + return *obj.obj.Step + +} + +// description is TBD +// Step returns a uint32 +func (obj *patternFlowPfcPauseClassEnableVectorCounter) HasStep() bool { + return obj.obj.Step != nil +} + +// description is TBD +// SetStep sets the uint32 value in the PatternFlowPfcPauseClassEnableVectorCounter object +func (obj *patternFlowPfcPauseClassEnableVectorCounter) SetStep(value uint32) PatternFlowPfcPauseClassEnableVectorCounter { + + obj.obj.Step = &value + return obj +} + +// description is TBD +// Count returns a uint32 +func (obj *patternFlowPfcPauseClassEnableVectorCounter) Count() uint32 { + + return *obj.obj.Count + +} + +// description is TBD +// Count returns a uint32 +func (obj *patternFlowPfcPauseClassEnableVectorCounter) HasCount() bool { + return obj.obj.Count != nil +} + +// description is TBD +// SetCount sets the uint32 value in the PatternFlowPfcPauseClassEnableVectorCounter object +func (obj *patternFlowPfcPauseClassEnableVectorCounter) SetCount(value uint32) PatternFlowPfcPauseClassEnableVectorCounter { + + obj.obj.Count = &value + return obj +} + +func (obj *patternFlowPfcPauseClassEnableVectorCounter) validateObj(vObj *validation, set_default bool) { + if set_default { + obj.setDefault() + } + + if obj.obj.Start != nil { + + if *obj.obj.Start > 65535 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("0 <= PatternFlowPfcPauseClassEnableVectorCounter.Start <= 65535 but Got %d", *obj.obj.Start)) + } + + } + + if obj.obj.Step != nil { + + if *obj.obj.Step > 65535 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("0 <= PatternFlowPfcPauseClassEnableVectorCounter.Step <= 65535 but Got %d", *obj.obj.Step)) + } + + } + + if obj.obj.Count != nil { + + if *obj.obj.Count > 65535 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("0 <= PatternFlowPfcPauseClassEnableVectorCounter.Count <= 65535 but Got %d", *obj.obj.Count)) + } + + } + +} + +func (obj *patternFlowPfcPauseClassEnableVectorCounter) setDefault() { + if obj.obj.Start == nil { + obj.SetStart(0) + } + if obj.obj.Step == nil { + obj.SetStep(1) + } + if obj.obj.Count == nil { + obj.SetCount(1) + } + +} + +// ***** PatternFlowPfcPauseClassEnableVectorMetricTag ***** +type patternFlowPfcPauseClassEnableVectorMetricTag struct { + validation + obj *otg.PatternFlowPfcPauseClassEnableVectorMetricTag +} + +func NewPatternFlowPfcPauseClassEnableVectorMetricTag() PatternFlowPfcPauseClassEnableVectorMetricTag { + obj := patternFlowPfcPauseClassEnableVectorMetricTag{obj: &otg.PatternFlowPfcPauseClassEnableVectorMetricTag{}} + obj.setDefault() + return &obj +} + +func (obj *patternFlowPfcPauseClassEnableVectorMetricTag) Msg() *otg.PatternFlowPfcPauseClassEnableVectorMetricTag { + return obj.obj +} + +func (obj *patternFlowPfcPauseClassEnableVectorMetricTag) SetMsg(msg *otg.PatternFlowPfcPauseClassEnableVectorMetricTag) PatternFlowPfcPauseClassEnableVectorMetricTag { + + proto.Merge(obj.obj, msg) + return obj +} + +func (obj *patternFlowPfcPauseClassEnableVectorMetricTag) ToProto() (*otg.PatternFlowPfcPauseClassEnableVectorMetricTag, error) { + err := obj.validateToAndFrom() + if err != nil { + return nil, err + } + return obj.Msg(), nil +} + +func (obj *patternFlowPfcPauseClassEnableVectorMetricTag) FromProto(msg *otg.PatternFlowPfcPauseClassEnableVectorMetricTag) (PatternFlowPfcPauseClassEnableVectorMetricTag, error) { + newObj := obj.SetMsg(msg) + err := newObj.validateToAndFrom() + if err != nil { + return nil, err + } + return newObj, nil +} + +func (obj *patternFlowPfcPauseClassEnableVectorMetricTag) ToPbText() (string, error) { + vErr := obj.validateToAndFrom() + if vErr != nil { + return "", vErr + } + protoMarshal, err := proto.Marshal(obj.Msg()) + if err != nil { + return "", err + } + return string(protoMarshal), nil +} + +func (obj *patternFlowPfcPauseClassEnableVectorMetricTag) FromPbText(value string) error { + retObj := proto.Unmarshal([]byte(value), obj.Msg()) + if retObj != nil { + return retObj + } + + vErr := obj.validateToAndFrom() + if vErr != nil { + return vErr + } + return retObj +} + +func (obj *patternFlowPfcPauseClassEnableVectorMetricTag) ToYaml() (string, error) { + vErr := obj.validateToAndFrom() + if vErr != nil { + return "", vErr + } + opts := protojson.MarshalOptions{ + UseProtoNames: true, + AllowPartial: true, + EmitUnpopulated: false, + } + data, err := opts.Marshal(obj.Msg()) + if err != nil { + return "", err + } + data, err = yaml.JSONToYAML(data) + if err != nil { + return "", err + } + return string(data), nil +} + +func (obj *patternFlowPfcPauseClassEnableVectorMetricTag) FromYaml(value string) error { + if value == "" { + value = "{}" + } + data, err := yaml.YAMLToJSON([]byte(value)) + if err != nil { + return err + } + opts := protojson.UnmarshalOptions{ + AllowPartial: true, + DiscardUnknown: false, + } + uError := opts.Unmarshal([]byte(data), obj.Msg()) + if uError != nil { + return fmt.Errorf("unmarshal error %s", strings.Replace( + uError.Error(), "\u00a0", " ", -1)[7:]) + } + + vErr := obj.validateToAndFrom() + if vErr != nil { + return vErr + } + return nil +} + +func (obj *patternFlowPfcPauseClassEnableVectorMetricTag) ToJson() (string, error) { + vErr := obj.validateToAndFrom() + if vErr != nil { + return "", vErr + } + opts := protojson.MarshalOptions{ + UseProtoNames: true, + AllowPartial: true, + EmitUnpopulated: false, + Indent: " ", + } + data, err := opts.Marshal(obj.Msg()) + if err != nil { + return "", err + } + return string(data), nil +} + +func (obj *patternFlowPfcPauseClassEnableVectorMetricTag) FromJson(value string) error { + opts := protojson.UnmarshalOptions{ + AllowPartial: true, + DiscardUnknown: false, + } + if value == "" { + value = "{}" + } + uError := opts.Unmarshal([]byte(value), obj.Msg()) + if uError != nil { + return fmt.Errorf("unmarshal error %s", strings.Replace( + uError.Error(), "\u00a0", " ", -1)[7:]) + } + + err := obj.validateToAndFrom() + if err != nil { + return err + } + return nil +} + +func (obj *patternFlowPfcPauseClassEnableVectorMetricTag) validateToAndFrom() error { + // emptyVars() + obj.validateObj(&obj.validation, true) + return obj.validationResult() +} + +func (obj *patternFlowPfcPauseClassEnableVectorMetricTag) Validate() error { + // emptyVars() + obj.validateObj(&obj.validation, false) + return obj.validationResult() +} + +func (obj *patternFlowPfcPauseClassEnableVectorMetricTag) String() string { + str, err := obj.ToYaml() + if err != nil { + return err.Error() + } + return str +} + +func (obj *patternFlowPfcPauseClassEnableVectorMetricTag) Clone() (PatternFlowPfcPauseClassEnableVectorMetricTag, error) { + vErr := obj.Validate() + if vErr != nil { + return nil, vErr + } + newObj := NewPatternFlowPfcPauseClassEnableVectorMetricTag() + data, err := proto.Marshal(obj.Msg()) + if err != nil { + return nil, err + } + pbErr := proto.Unmarshal(data, newObj.Msg()) + if pbErr != nil { + return nil, pbErr + } + return newObj, nil +} + +// PatternFlowPfcPauseClassEnableVectorMetricTag is metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. +type PatternFlowPfcPauseClassEnableVectorMetricTag interface { + Validation + // Msg marshals PatternFlowPfcPauseClassEnableVectorMetricTag to protobuf object *otg.PatternFlowPfcPauseClassEnableVectorMetricTag + // and doesn't set defaults + Msg() *otg.PatternFlowPfcPauseClassEnableVectorMetricTag + // SetMsg unmarshals PatternFlowPfcPauseClassEnableVectorMetricTag from protobuf object *otg.PatternFlowPfcPauseClassEnableVectorMetricTag + // and doesn't set defaults + SetMsg(*otg.PatternFlowPfcPauseClassEnableVectorMetricTag) PatternFlowPfcPauseClassEnableVectorMetricTag + // ToProto marshals PatternFlowPfcPauseClassEnableVectorMetricTag to protobuf object *otg.PatternFlowPfcPauseClassEnableVectorMetricTag + ToProto() (*otg.PatternFlowPfcPauseClassEnableVectorMetricTag, error) + // ToPbText marshals PatternFlowPfcPauseClassEnableVectorMetricTag to protobuf text + ToPbText() (string, error) + // ToYaml marshals PatternFlowPfcPauseClassEnableVectorMetricTag to YAML text + ToYaml() (string, error) + // ToJson marshals PatternFlowPfcPauseClassEnableVectorMetricTag to JSON text + ToJson() (string, error) + // FromProto unmarshals PatternFlowPfcPauseClassEnableVectorMetricTag from protobuf object *otg.PatternFlowPfcPauseClassEnableVectorMetricTag + FromProto(msg *otg.PatternFlowPfcPauseClassEnableVectorMetricTag) (PatternFlowPfcPauseClassEnableVectorMetricTag, error) + // FromPbText unmarshals PatternFlowPfcPauseClassEnableVectorMetricTag from protobuf text + FromPbText(value string) error + // FromYaml unmarshals PatternFlowPfcPauseClassEnableVectorMetricTag from YAML text + FromYaml(value string) error + // FromJson unmarshals PatternFlowPfcPauseClassEnableVectorMetricTag from JSON text + FromJson(value string) error + // Validate validates PatternFlowPfcPauseClassEnableVectorMetricTag + Validate() error + // A stringer function + String() string + // Clones the object + Clone() (PatternFlowPfcPauseClassEnableVectorMetricTag, error) + validateToAndFrom() error + validateObj(vObj *validation, set_default bool) + setDefault() + // Name returns string, set in PatternFlowPfcPauseClassEnableVectorMetricTag. + Name() string + // SetName assigns string provided by user to PatternFlowPfcPauseClassEnableVectorMetricTag + SetName(value string) PatternFlowPfcPauseClassEnableVectorMetricTag + // Offset returns uint32, set in PatternFlowPfcPauseClassEnableVectorMetricTag. + Offset() uint32 + // SetOffset assigns uint32 provided by user to PatternFlowPfcPauseClassEnableVectorMetricTag + SetOffset(value uint32) PatternFlowPfcPauseClassEnableVectorMetricTag + // HasOffset checks if Offset has been set in PatternFlowPfcPauseClassEnableVectorMetricTag + HasOffset() bool + // Length returns uint32, set in PatternFlowPfcPauseClassEnableVectorMetricTag. + Length() uint32 + // SetLength assigns uint32 provided by user to PatternFlowPfcPauseClassEnableVectorMetricTag + SetLength(value uint32) PatternFlowPfcPauseClassEnableVectorMetricTag + // HasLength checks if Length has been set in PatternFlowPfcPauseClassEnableVectorMetricTag + HasLength() bool +} + +// Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field +// Name returns a string +func (obj *patternFlowPfcPauseClassEnableVectorMetricTag) Name() string { + + return *obj.obj.Name + +} + +// Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field +// SetName sets the string value in the PatternFlowPfcPauseClassEnableVectorMetricTag object +func (obj *patternFlowPfcPauseClassEnableVectorMetricTag) SetName(value string) PatternFlowPfcPauseClassEnableVectorMetricTag { + + obj.obj.Name = &value + return obj +} + +// Offset in bits relative to start of corresponding header field +// Offset returns a uint32 +func (obj *patternFlowPfcPauseClassEnableVectorMetricTag) Offset() uint32 { + + return *obj.obj.Offset + +} + +// Offset in bits relative to start of corresponding header field +// Offset returns a uint32 +func (obj *patternFlowPfcPauseClassEnableVectorMetricTag) HasOffset() bool { + return obj.obj.Offset != nil +} + +// Offset in bits relative to start of corresponding header field +// SetOffset sets the uint32 value in the PatternFlowPfcPauseClassEnableVectorMetricTag object +func (obj *patternFlowPfcPauseClassEnableVectorMetricTag) SetOffset(value uint32) PatternFlowPfcPauseClassEnableVectorMetricTag { + + obj.obj.Offset = &value + return obj +} + +// Number of bits to track for metrics starting from configured offset of corresponding header field +// Length returns a uint32 +func (obj *patternFlowPfcPauseClassEnableVectorMetricTag) Length() uint32 { + + return *obj.obj.Length + +} + +// Number of bits to track for metrics starting from configured offset of corresponding header field +// Length returns a uint32 +func (obj *patternFlowPfcPauseClassEnableVectorMetricTag) HasLength() bool { + return obj.obj.Length != nil +} + +// Number of bits to track for metrics starting from configured offset of corresponding header field +// SetLength sets the uint32 value in the PatternFlowPfcPauseClassEnableVectorMetricTag object +func (obj *patternFlowPfcPauseClassEnableVectorMetricTag) SetLength(value uint32) PatternFlowPfcPauseClassEnableVectorMetricTag { + + obj.obj.Length = &value + return obj +} + +func (obj *patternFlowPfcPauseClassEnableVectorMetricTag) validateObj(vObj *validation, set_default bool) { + if set_default { + obj.setDefault() + } + + // Name is required + if obj.obj.Name == nil { + vObj.validationErrors = append(vObj.validationErrors, "Name is required field on interface PatternFlowPfcPauseClassEnableVectorMetricTag") + } + + if obj.obj.Offset != nil { + + if *obj.obj.Offset > 15 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("0 <= PatternFlowPfcPauseClassEnableVectorMetricTag.Offset <= 15 but Got %d", *obj.obj.Offset)) + } + + } + + if obj.obj.Length != nil { + + if *obj.obj.Length < 1 || *obj.obj.Length > 16 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("1 <= PatternFlowPfcPauseClassEnableVectorMetricTag.Length <= 16 but Got %d", *obj.obj.Length)) + } + + } + +} + +func (obj *patternFlowPfcPauseClassEnableVectorMetricTag) setDefault() { + if obj.obj.Offset == nil { + obj.SetOffset(0) + } + if obj.obj.Length == nil { + obj.SetLength(16) + } + +} + +// ***** PatternFlowPfcPausePauseClass0Counter ***** +type patternFlowPfcPausePauseClass0Counter struct { + validation + obj *otg.PatternFlowPfcPausePauseClass0Counter +} + +func NewPatternFlowPfcPausePauseClass0Counter() PatternFlowPfcPausePauseClass0Counter { + obj := patternFlowPfcPausePauseClass0Counter{obj: &otg.PatternFlowPfcPausePauseClass0Counter{}} + obj.setDefault() + return &obj +} + +func (obj *patternFlowPfcPausePauseClass0Counter) Msg() *otg.PatternFlowPfcPausePauseClass0Counter { + return obj.obj +} + +func (obj *patternFlowPfcPausePauseClass0Counter) SetMsg(msg *otg.PatternFlowPfcPausePauseClass0Counter) PatternFlowPfcPausePauseClass0Counter { + + proto.Merge(obj.obj, msg) + return obj +} + +func (obj *patternFlowPfcPausePauseClass0Counter) ToProto() (*otg.PatternFlowPfcPausePauseClass0Counter, error) { + err := obj.validateToAndFrom() + if err != nil { + return nil, err + } + return obj.Msg(), nil +} + +func (obj *patternFlowPfcPausePauseClass0Counter) FromProto(msg *otg.PatternFlowPfcPausePauseClass0Counter) (PatternFlowPfcPausePauseClass0Counter, error) { + newObj := obj.SetMsg(msg) + err := newObj.validateToAndFrom() + if err != nil { + return nil, err + } + return newObj, nil +} + +func (obj *patternFlowPfcPausePauseClass0Counter) ToPbText() (string, error) { + vErr := obj.validateToAndFrom() + if vErr != nil { + return "", vErr + } + protoMarshal, err := proto.Marshal(obj.Msg()) + if err != nil { + return "", err + } + return string(protoMarshal), nil +} + +func (obj *patternFlowPfcPausePauseClass0Counter) FromPbText(value string) error { + retObj := proto.Unmarshal([]byte(value), obj.Msg()) + if retObj != nil { + return retObj + } + + vErr := obj.validateToAndFrom() + if vErr != nil { + return vErr + } + return retObj +} + +func (obj *patternFlowPfcPausePauseClass0Counter) ToYaml() (string, error) { + vErr := obj.validateToAndFrom() + if vErr != nil { + return "", vErr + } + opts := protojson.MarshalOptions{ + UseProtoNames: true, + AllowPartial: true, + EmitUnpopulated: false, + } + data, err := opts.Marshal(obj.Msg()) + if err != nil { + return "", err + } + data, err = yaml.JSONToYAML(data) + if err != nil { + return "", err + } + return string(data), nil +} + +func (obj *patternFlowPfcPausePauseClass0Counter) FromYaml(value string) error { + if value == "" { + value = "{}" + } + data, err := yaml.YAMLToJSON([]byte(value)) + if err != nil { + return err + } + opts := protojson.UnmarshalOptions{ + AllowPartial: true, + DiscardUnknown: false, + } + uError := opts.Unmarshal([]byte(data), obj.Msg()) + if uError != nil { + return fmt.Errorf("unmarshal error %s", strings.Replace( + uError.Error(), "\u00a0", " ", -1)[7:]) + } + + vErr := obj.validateToAndFrom() + if vErr != nil { + return vErr + } + return nil +} + +func (obj *patternFlowPfcPausePauseClass0Counter) ToJson() (string, error) { + vErr := obj.validateToAndFrom() + if vErr != nil { + return "", vErr + } + opts := protojson.MarshalOptions{ + UseProtoNames: true, + AllowPartial: true, + EmitUnpopulated: false, + Indent: " ", + } + data, err := opts.Marshal(obj.Msg()) + if err != nil { + return "", err + } + return string(data), nil +} + +func (obj *patternFlowPfcPausePauseClass0Counter) FromJson(value string) error { + opts := protojson.UnmarshalOptions{ + AllowPartial: true, + DiscardUnknown: false, + } + if value == "" { + value = "{}" + } + uError := opts.Unmarshal([]byte(value), obj.Msg()) + if uError != nil { + return fmt.Errorf("unmarshal error %s", strings.Replace( + uError.Error(), "\u00a0", " ", -1)[7:]) + } + + err := obj.validateToAndFrom() + if err != nil { + return err + } + return nil +} + +func (obj *patternFlowPfcPausePauseClass0Counter) validateToAndFrom() error { + // emptyVars() + obj.validateObj(&obj.validation, true) + return obj.validationResult() +} + +func (obj *patternFlowPfcPausePauseClass0Counter) Validate() error { + // emptyVars() + obj.validateObj(&obj.validation, false) + return obj.validationResult() +} + +func (obj *patternFlowPfcPausePauseClass0Counter) String() string { + str, err := obj.ToYaml() + if err != nil { + return err.Error() + } + return str +} + +func (obj *patternFlowPfcPausePauseClass0Counter) Clone() (PatternFlowPfcPausePauseClass0Counter, error) { + vErr := obj.Validate() + if vErr != nil { + return nil, vErr + } + newObj := NewPatternFlowPfcPausePauseClass0Counter() + data, err := proto.Marshal(obj.Msg()) + if err != nil { + return nil, err + } + pbErr := proto.Unmarshal(data, newObj.Msg()) + if pbErr != nil { + return nil, pbErr + } + return newObj, nil +} + +// PatternFlowPfcPausePauseClass0Counter is integer counter pattern +type PatternFlowPfcPausePauseClass0Counter interface { + Validation + // Msg marshals PatternFlowPfcPausePauseClass0Counter to protobuf object *otg.PatternFlowPfcPausePauseClass0Counter + // and doesn't set defaults + Msg() *otg.PatternFlowPfcPausePauseClass0Counter + // SetMsg unmarshals PatternFlowPfcPausePauseClass0Counter from protobuf object *otg.PatternFlowPfcPausePauseClass0Counter + // and doesn't set defaults + SetMsg(*otg.PatternFlowPfcPausePauseClass0Counter) PatternFlowPfcPausePauseClass0Counter + // ToProto marshals PatternFlowPfcPausePauseClass0Counter to protobuf object *otg.PatternFlowPfcPausePauseClass0Counter + ToProto() (*otg.PatternFlowPfcPausePauseClass0Counter, error) + // ToPbText marshals PatternFlowPfcPausePauseClass0Counter to protobuf text + ToPbText() (string, error) + // ToYaml marshals PatternFlowPfcPausePauseClass0Counter to YAML text + ToYaml() (string, error) + // ToJson marshals PatternFlowPfcPausePauseClass0Counter to JSON text + ToJson() (string, error) + // FromProto unmarshals PatternFlowPfcPausePauseClass0Counter from protobuf object *otg.PatternFlowPfcPausePauseClass0Counter + FromProto(msg *otg.PatternFlowPfcPausePauseClass0Counter) (PatternFlowPfcPausePauseClass0Counter, error) + // FromPbText unmarshals PatternFlowPfcPausePauseClass0Counter from protobuf text + FromPbText(value string) error + // FromYaml unmarshals PatternFlowPfcPausePauseClass0Counter from YAML text + FromYaml(value string) error + // FromJson unmarshals PatternFlowPfcPausePauseClass0Counter from JSON text + FromJson(value string) error + // Validate validates PatternFlowPfcPausePauseClass0Counter + Validate() error + // A stringer function + String() string + // Clones the object + Clone() (PatternFlowPfcPausePauseClass0Counter, error) + validateToAndFrom() error + validateObj(vObj *validation, set_default bool) + setDefault() + // Start returns uint32, set in PatternFlowPfcPausePauseClass0Counter. + Start() uint32 + // SetStart assigns uint32 provided by user to PatternFlowPfcPausePauseClass0Counter + SetStart(value uint32) PatternFlowPfcPausePauseClass0Counter + // HasStart checks if Start has been set in PatternFlowPfcPausePauseClass0Counter + HasStart() bool + // Step returns uint32, set in PatternFlowPfcPausePauseClass0Counter. + Step() uint32 + // SetStep assigns uint32 provided by user to PatternFlowPfcPausePauseClass0Counter + SetStep(value uint32) PatternFlowPfcPausePauseClass0Counter + // HasStep checks if Step has been set in PatternFlowPfcPausePauseClass0Counter + HasStep() bool + // Count returns uint32, set in PatternFlowPfcPausePauseClass0Counter. + Count() uint32 + // SetCount assigns uint32 provided by user to PatternFlowPfcPausePauseClass0Counter + SetCount(value uint32) PatternFlowPfcPausePauseClass0Counter + // HasCount checks if Count has been set in PatternFlowPfcPausePauseClass0Counter + HasCount() bool +} + +// description is TBD +// Start returns a uint32 +func (obj *patternFlowPfcPausePauseClass0Counter) Start() uint32 { + + return *obj.obj.Start + +} + +// description is TBD +// Start returns a uint32 +func (obj *patternFlowPfcPausePauseClass0Counter) HasStart() bool { + return obj.obj.Start != nil +} + +// description is TBD +// SetStart sets the uint32 value in the PatternFlowPfcPausePauseClass0Counter object +func (obj *patternFlowPfcPausePauseClass0Counter) SetStart(value uint32) PatternFlowPfcPausePauseClass0Counter { + + obj.obj.Start = &value + return obj +} + +// description is TBD +// Step returns a uint32 +func (obj *patternFlowPfcPausePauseClass0Counter) Step() uint32 { + + return *obj.obj.Step + +} + +// description is TBD +// Step returns a uint32 +func (obj *patternFlowPfcPausePauseClass0Counter) HasStep() bool { + return obj.obj.Step != nil +} + +// description is TBD +// SetStep sets the uint32 value in the PatternFlowPfcPausePauseClass0Counter object +func (obj *patternFlowPfcPausePauseClass0Counter) SetStep(value uint32) PatternFlowPfcPausePauseClass0Counter { + + obj.obj.Step = &value + return obj +} + +// description is TBD +// Count returns a uint32 +func (obj *patternFlowPfcPausePauseClass0Counter) Count() uint32 { + + return *obj.obj.Count + +} + +// description is TBD +// Count returns a uint32 +func (obj *patternFlowPfcPausePauseClass0Counter) HasCount() bool { + return obj.obj.Count != nil +} + +// description is TBD +// SetCount sets the uint32 value in the PatternFlowPfcPausePauseClass0Counter object +func (obj *patternFlowPfcPausePauseClass0Counter) SetCount(value uint32) PatternFlowPfcPausePauseClass0Counter { + + obj.obj.Count = &value + return obj +} + +func (obj *patternFlowPfcPausePauseClass0Counter) validateObj(vObj *validation, set_default bool) { + if set_default { + obj.setDefault() + } + + if obj.obj.Start != nil { + + if *obj.obj.Start > 65535 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("0 <= PatternFlowPfcPausePauseClass0Counter.Start <= 65535 but Got %d", *obj.obj.Start)) + } + + } + + if obj.obj.Step != nil { + + if *obj.obj.Step > 65535 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("0 <= PatternFlowPfcPausePauseClass0Counter.Step <= 65535 but Got %d", *obj.obj.Step)) + } + + } + + if obj.obj.Count != nil { + + if *obj.obj.Count > 65535 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("0 <= PatternFlowPfcPausePauseClass0Counter.Count <= 65535 but Got %d", *obj.obj.Count)) + } + + } + +} + +func (obj *patternFlowPfcPausePauseClass0Counter) setDefault() { + if obj.obj.Start == nil { + obj.SetStart(0) + } + if obj.obj.Step == nil { + obj.SetStep(1) + } + if obj.obj.Count == nil { + obj.SetCount(1) + } + +} + +// ***** PatternFlowPfcPausePauseClass0MetricTag ***** +type patternFlowPfcPausePauseClass0MetricTag struct { + validation + obj *otg.PatternFlowPfcPausePauseClass0MetricTag +} + +func NewPatternFlowPfcPausePauseClass0MetricTag() PatternFlowPfcPausePauseClass0MetricTag { + obj := patternFlowPfcPausePauseClass0MetricTag{obj: &otg.PatternFlowPfcPausePauseClass0MetricTag{}} + obj.setDefault() + return &obj +} + +func (obj *patternFlowPfcPausePauseClass0MetricTag) Msg() *otg.PatternFlowPfcPausePauseClass0MetricTag { + return obj.obj +} + +func (obj *patternFlowPfcPausePauseClass0MetricTag) SetMsg(msg *otg.PatternFlowPfcPausePauseClass0MetricTag) PatternFlowPfcPausePauseClass0MetricTag { + + proto.Merge(obj.obj, msg) + return obj +} + +func (obj *patternFlowPfcPausePauseClass0MetricTag) ToProto() (*otg.PatternFlowPfcPausePauseClass0MetricTag, error) { + err := obj.validateToAndFrom() + if err != nil { + return nil, err + } + return obj.Msg(), nil +} + +func (obj *patternFlowPfcPausePauseClass0MetricTag) FromProto(msg *otg.PatternFlowPfcPausePauseClass0MetricTag) (PatternFlowPfcPausePauseClass0MetricTag, error) { + newObj := obj.SetMsg(msg) + err := newObj.validateToAndFrom() + if err != nil { + return nil, err + } + return newObj, nil +} + +func (obj *patternFlowPfcPausePauseClass0MetricTag) ToPbText() (string, error) { + vErr := obj.validateToAndFrom() + if vErr != nil { + return "", vErr + } + protoMarshal, err := proto.Marshal(obj.Msg()) + if err != nil { + return "", err + } + return string(protoMarshal), nil +} + +func (obj *patternFlowPfcPausePauseClass0MetricTag) FromPbText(value string) error { + retObj := proto.Unmarshal([]byte(value), obj.Msg()) + if retObj != nil { + return retObj + } + + vErr := obj.validateToAndFrom() + if vErr != nil { + return vErr + } + return retObj +} + +func (obj *patternFlowPfcPausePauseClass0MetricTag) ToYaml() (string, error) { + vErr := obj.validateToAndFrom() + if vErr != nil { + return "", vErr + } + opts := protojson.MarshalOptions{ + UseProtoNames: true, + AllowPartial: true, + EmitUnpopulated: false, + } + data, err := opts.Marshal(obj.Msg()) + if err != nil { + return "", err + } + data, err = yaml.JSONToYAML(data) + if err != nil { + return "", err + } + return string(data), nil +} + +func (obj *patternFlowPfcPausePauseClass0MetricTag) FromYaml(value string) error { + if value == "" { + value = "{}" + } + data, err := yaml.YAMLToJSON([]byte(value)) + if err != nil { + return err + } + opts := protojson.UnmarshalOptions{ + AllowPartial: true, + DiscardUnknown: false, + } + uError := opts.Unmarshal([]byte(data), obj.Msg()) + if uError != nil { + return fmt.Errorf("unmarshal error %s", strings.Replace( + uError.Error(), "\u00a0", " ", -1)[7:]) + } + + vErr := obj.validateToAndFrom() + if vErr != nil { + return vErr + } + return nil +} + +func (obj *patternFlowPfcPausePauseClass0MetricTag) ToJson() (string, error) { + vErr := obj.validateToAndFrom() + if vErr != nil { + return "", vErr + } + opts := protojson.MarshalOptions{ + UseProtoNames: true, + AllowPartial: true, + EmitUnpopulated: false, + Indent: " ", + } + data, err := opts.Marshal(obj.Msg()) + if err != nil { + return "", err + } + return string(data), nil +} + +func (obj *patternFlowPfcPausePauseClass0MetricTag) FromJson(value string) error { + opts := protojson.UnmarshalOptions{ + AllowPartial: true, + DiscardUnknown: false, + } + if value == "" { + value = "{}" + } + uError := opts.Unmarshal([]byte(value), obj.Msg()) + if uError != nil { + return fmt.Errorf("unmarshal error %s", strings.Replace( + uError.Error(), "\u00a0", " ", -1)[7:]) + } + + err := obj.validateToAndFrom() + if err != nil { + return err + } + return nil +} + +func (obj *patternFlowPfcPausePauseClass0MetricTag) validateToAndFrom() error { + // emptyVars() + obj.validateObj(&obj.validation, true) + return obj.validationResult() +} + +func (obj *patternFlowPfcPausePauseClass0MetricTag) Validate() error { + // emptyVars() + obj.validateObj(&obj.validation, false) + return obj.validationResult() +} + +func (obj *patternFlowPfcPausePauseClass0MetricTag) String() string { + str, err := obj.ToYaml() + if err != nil { + return err.Error() + } + return str +} + +func (obj *patternFlowPfcPausePauseClass0MetricTag) Clone() (PatternFlowPfcPausePauseClass0MetricTag, error) { + vErr := obj.Validate() + if vErr != nil { + return nil, vErr + } + newObj := NewPatternFlowPfcPausePauseClass0MetricTag() + data, err := proto.Marshal(obj.Msg()) + if err != nil { + return nil, err + } + pbErr := proto.Unmarshal(data, newObj.Msg()) + if pbErr != nil { + return nil, pbErr + } + return newObj, nil +} + +// PatternFlowPfcPausePauseClass0MetricTag is metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. +type PatternFlowPfcPausePauseClass0MetricTag interface { + Validation + // Msg marshals PatternFlowPfcPausePauseClass0MetricTag to protobuf object *otg.PatternFlowPfcPausePauseClass0MetricTag + // and doesn't set defaults + Msg() *otg.PatternFlowPfcPausePauseClass0MetricTag + // SetMsg unmarshals PatternFlowPfcPausePauseClass0MetricTag from protobuf object *otg.PatternFlowPfcPausePauseClass0MetricTag + // and doesn't set defaults + SetMsg(*otg.PatternFlowPfcPausePauseClass0MetricTag) PatternFlowPfcPausePauseClass0MetricTag + // ToProto marshals PatternFlowPfcPausePauseClass0MetricTag to protobuf object *otg.PatternFlowPfcPausePauseClass0MetricTag + ToProto() (*otg.PatternFlowPfcPausePauseClass0MetricTag, error) + // ToPbText marshals PatternFlowPfcPausePauseClass0MetricTag to protobuf text + ToPbText() (string, error) + // ToYaml marshals PatternFlowPfcPausePauseClass0MetricTag to YAML text + ToYaml() (string, error) + // ToJson marshals PatternFlowPfcPausePauseClass0MetricTag to JSON text + ToJson() (string, error) + // FromProto unmarshals PatternFlowPfcPausePauseClass0MetricTag from protobuf object *otg.PatternFlowPfcPausePauseClass0MetricTag + FromProto(msg *otg.PatternFlowPfcPausePauseClass0MetricTag) (PatternFlowPfcPausePauseClass0MetricTag, error) + // FromPbText unmarshals PatternFlowPfcPausePauseClass0MetricTag from protobuf text + FromPbText(value string) error + // FromYaml unmarshals PatternFlowPfcPausePauseClass0MetricTag from YAML text + FromYaml(value string) error + // FromJson unmarshals PatternFlowPfcPausePauseClass0MetricTag from JSON text + FromJson(value string) error + // Validate validates PatternFlowPfcPausePauseClass0MetricTag + Validate() error + // A stringer function + String() string + // Clones the object + Clone() (PatternFlowPfcPausePauseClass0MetricTag, error) + validateToAndFrom() error + validateObj(vObj *validation, set_default bool) + setDefault() + // Name returns string, set in PatternFlowPfcPausePauseClass0MetricTag. + Name() string + // SetName assigns string provided by user to PatternFlowPfcPausePauseClass0MetricTag + SetName(value string) PatternFlowPfcPausePauseClass0MetricTag + // Offset returns uint32, set in PatternFlowPfcPausePauseClass0MetricTag. + Offset() uint32 + // SetOffset assigns uint32 provided by user to PatternFlowPfcPausePauseClass0MetricTag + SetOffset(value uint32) PatternFlowPfcPausePauseClass0MetricTag + // HasOffset checks if Offset has been set in PatternFlowPfcPausePauseClass0MetricTag + HasOffset() bool + // Length returns uint32, set in PatternFlowPfcPausePauseClass0MetricTag. + Length() uint32 + // SetLength assigns uint32 provided by user to PatternFlowPfcPausePauseClass0MetricTag + SetLength(value uint32) PatternFlowPfcPausePauseClass0MetricTag + // HasLength checks if Length has been set in PatternFlowPfcPausePauseClass0MetricTag + HasLength() bool +} + +// Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field +// Name returns a string +func (obj *patternFlowPfcPausePauseClass0MetricTag) Name() string { + + return *obj.obj.Name + +} + +// Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field +// SetName sets the string value in the PatternFlowPfcPausePauseClass0MetricTag object +func (obj *patternFlowPfcPausePauseClass0MetricTag) SetName(value string) PatternFlowPfcPausePauseClass0MetricTag { + + obj.obj.Name = &value + return obj +} + +// Offset in bits relative to start of corresponding header field +// Offset returns a uint32 +func (obj *patternFlowPfcPausePauseClass0MetricTag) Offset() uint32 { + + return *obj.obj.Offset + +} + +// Offset in bits relative to start of corresponding header field +// Offset returns a uint32 +func (obj *patternFlowPfcPausePauseClass0MetricTag) HasOffset() bool { + return obj.obj.Offset != nil +} + +// Offset in bits relative to start of corresponding header field +// SetOffset sets the uint32 value in the PatternFlowPfcPausePauseClass0MetricTag object +func (obj *patternFlowPfcPausePauseClass0MetricTag) SetOffset(value uint32) PatternFlowPfcPausePauseClass0MetricTag { + + obj.obj.Offset = &value + return obj +} + +// Number of bits to track for metrics starting from configured offset of corresponding header field +// Length returns a uint32 +func (obj *patternFlowPfcPausePauseClass0MetricTag) Length() uint32 { + + return *obj.obj.Length + +} + +// Number of bits to track for metrics starting from configured offset of corresponding header field +// Length returns a uint32 +func (obj *patternFlowPfcPausePauseClass0MetricTag) HasLength() bool { + return obj.obj.Length != nil +} + +// Number of bits to track for metrics starting from configured offset of corresponding header field +// SetLength sets the uint32 value in the PatternFlowPfcPausePauseClass0MetricTag object +func (obj *patternFlowPfcPausePauseClass0MetricTag) SetLength(value uint32) PatternFlowPfcPausePauseClass0MetricTag { + + obj.obj.Length = &value + return obj +} + +func (obj *patternFlowPfcPausePauseClass0MetricTag) validateObj(vObj *validation, set_default bool) { + if set_default { + obj.setDefault() + } + + // Name is required + if obj.obj.Name == nil { + vObj.validationErrors = append(vObj.validationErrors, "Name is required field on interface PatternFlowPfcPausePauseClass0MetricTag") + } + + if obj.obj.Offset != nil { + + if *obj.obj.Offset > 15 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("0 <= PatternFlowPfcPausePauseClass0MetricTag.Offset <= 15 but Got %d", *obj.obj.Offset)) + } + + } + + if obj.obj.Length != nil { + + if *obj.obj.Length < 1 || *obj.obj.Length > 16 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("1 <= PatternFlowPfcPausePauseClass0MetricTag.Length <= 16 but Got %d", *obj.obj.Length)) + } + + } + +} + +func (obj *patternFlowPfcPausePauseClass0MetricTag) setDefault() { + if obj.obj.Offset == nil { + obj.SetOffset(0) + } + if obj.obj.Length == nil { + obj.SetLength(16) + } + +} + +// ***** PatternFlowPfcPausePauseClass1Counter ***** +type patternFlowPfcPausePauseClass1Counter struct { + validation + obj *otg.PatternFlowPfcPausePauseClass1Counter +} + +func NewPatternFlowPfcPausePauseClass1Counter() PatternFlowPfcPausePauseClass1Counter { + obj := patternFlowPfcPausePauseClass1Counter{obj: &otg.PatternFlowPfcPausePauseClass1Counter{}} + obj.setDefault() + return &obj +} + +func (obj *patternFlowPfcPausePauseClass1Counter) Msg() *otg.PatternFlowPfcPausePauseClass1Counter { + return obj.obj +} + +func (obj *patternFlowPfcPausePauseClass1Counter) SetMsg(msg *otg.PatternFlowPfcPausePauseClass1Counter) PatternFlowPfcPausePauseClass1Counter { + + proto.Merge(obj.obj, msg) + return obj +} + +func (obj *patternFlowPfcPausePauseClass1Counter) ToProto() (*otg.PatternFlowPfcPausePauseClass1Counter, error) { + err := obj.validateToAndFrom() + if err != nil { + return nil, err + } + return obj.Msg(), nil +} + +func (obj *patternFlowPfcPausePauseClass1Counter) FromProto(msg *otg.PatternFlowPfcPausePauseClass1Counter) (PatternFlowPfcPausePauseClass1Counter, error) { + newObj := obj.SetMsg(msg) + err := newObj.validateToAndFrom() + if err != nil { + return nil, err + } + return newObj, nil +} + +func (obj *patternFlowPfcPausePauseClass1Counter) ToPbText() (string, error) { + vErr := obj.validateToAndFrom() + if vErr != nil { + return "", vErr + } + protoMarshal, err := proto.Marshal(obj.Msg()) + if err != nil { + return "", err + } + return string(protoMarshal), nil +} + +func (obj *patternFlowPfcPausePauseClass1Counter) FromPbText(value string) error { + retObj := proto.Unmarshal([]byte(value), obj.Msg()) + if retObj != nil { + return retObj + } + + vErr := obj.validateToAndFrom() + if vErr != nil { + return vErr + } + return retObj +} + +func (obj *patternFlowPfcPausePauseClass1Counter) ToYaml() (string, error) { + vErr := obj.validateToAndFrom() + if vErr != nil { + return "", vErr + } + opts := protojson.MarshalOptions{ + UseProtoNames: true, + AllowPartial: true, + EmitUnpopulated: false, + } + data, err := opts.Marshal(obj.Msg()) + if err != nil { + return "", err + } + data, err = yaml.JSONToYAML(data) + if err != nil { + return "", err + } + return string(data), nil +} + +func (obj *patternFlowPfcPausePauseClass1Counter) FromYaml(value string) error { + if value == "" { + value = "{}" + } + data, err := yaml.YAMLToJSON([]byte(value)) + if err != nil { + return err + } + opts := protojson.UnmarshalOptions{ + AllowPartial: true, + DiscardUnknown: false, + } + uError := opts.Unmarshal([]byte(data), obj.Msg()) + if uError != nil { + return fmt.Errorf("unmarshal error %s", strings.Replace( + uError.Error(), "\u00a0", " ", -1)[7:]) + } + + vErr := obj.validateToAndFrom() + if vErr != nil { + return vErr + } + return nil +} + +func (obj *patternFlowPfcPausePauseClass1Counter) ToJson() (string, error) { + vErr := obj.validateToAndFrom() + if vErr != nil { + return "", vErr + } + opts := protojson.MarshalOptions{ + UseProtoNames: true, + AllowPartial: true, + EmitUnpopulated: false, + Indent: " ", + } + data, err := opts.Marshal(obj.Msg()) + if err != nil { + return "", err + } + return string(data), nil +} + +func (obj *patternFlowPfcPausePauseClass1Counter) FromJson(value string) error { + opts := protojson.UnmarshalOptions{ + AllowPartial: true, + DiscardUnknown: false, + } + if value == "" { + value = "{}" + } + uError := opts.Unmarshal([]byte(value), obj.Msg()) + if uError != nil { + return fmt.Errorf("unmarshal error %s", strings.Replace( + uError.Error(), "\u00a0", " ", -1)[7:]) + } + + err := obj.validateToAndFrom() + if err != nil { + return err + } + return nil +} + +func (obj *patternFlowPfcPausePauseClass1Counter) validateToAndFrom() error { + // emptyVars() + obj.validateObj(&obj.validation, true) + return obj.validationResult() +} + +func (obj *patternFlowPfcPausePauseClass1Counter) Validate() error { + // emptyVars() + obj.validateObj(&obj.validation, false) + return obj.validationResult() +} + +func (obj *patternFlowPfcPausePauseClass1Counter) String() string { + str, err := obj.ToYaml() + if err != nil { + return err.Error() + } + return str +} + +func (obj *patternFlowPfcPausePauseClass1Counter) Clone() (PatternFlowPfcPausePauseClass1Counter, error) { + vErr := obj.Validate() + if vErr != nil { + return nil, vErr + } + newObj := NewPatternFlowPfcPausePauseClass1Counter() + data, err := proto.Marshal(obj.Msg()) + if err != nil { + return nil, err + } + pbErr := proto.Unmarshal(data, newObj.Msg()) + if pbErr != nil { + return nil, pbErr + } + return newObj, nil +} + +// PatternFlowPfcPausePauseClass1Counter is integer counter pattern +type PatternFlowPfcPausePauseClass1Counter interface { + Validation + // Msg marshals PatternFlowPfcPausePauseClass1Counter to protobuf object *otg.PatternFlowPfcPausePauseClass1Counter + // and doesn't set defaults + Msg() *otg.PatternFlowPfcPausePauseClass1Counter + // SetMsg unmarshals PatternFlowPfcPausePauseClass1Counter from protobuf object *otg.PatternFlowPfcPausePauseClass1Counter + // and doesn't set defaults + SetMsg(*otg.PatternFlowPfcPausePauseClass1Counter) PatternFlowPfcPausePauseClass1Counter + // ToProto marshals PatternFlowPfcPausePauseClass1Counter to protobuf object *otg.PatternFlowPfcPausePauseClass1Counter + ToProto() (*otg.PatternFlowPfcPausePauseClass1Counter, error) + // ToPbText marshals PatternFlowPfcPausePauseClass1Counter to protobuf text + ToPbText() (string, error) + // ToYaml marshals PatternFlowPfcPausePauseClass1Counter to YAML text + ToYaml() (string, error) + // ToJson marshals PatternFlowPfcPausePauseClass1Counter to JSON text + ToJson() (string, error) + // FromProto unmarshals PatternFlowPfcPausePauseClass1Counter from protobuf object *otg.PatternFlowPfcPausePauseClass1Counter + FromProto(msg *otg.PatternFlowPfcPausePauseClass1Counter) (PatternFlowPfcPausePauseClass1Counter, error) + // FromPbText unmarshals PatternFlowPfcPausePauseClass1Counter from protobuf text + FromPbText(value string) error + // FromYaml unmarshals PatternFlowPfcPausePauseClass1Counter from YAML text + FromYaml(value string) error + // FromJson unmarshals PatternFlowPfcPausePauseClass1Counter from JSON text + FromJson(value string) error + // Validate validates PatternFlowPfcPausePauseClass1Counter + Validate() error + // A stringer function + String() string + // Clones the object + Clone() (PatternFlowPfcPausePauseClass1Counter, error) + validateToAndFrom() error + validateObj(vObj *validation, set_default bool) + setDefault() + // Start returns uint32, set in PatternFlowPfcPausePauseClass1Counter. + Start() uint32 + // SetStart assigns uint32 provided by user to PatternFlowPfcPausePauseClass1Counter + SetStart(value uint32) PatternFlowPfcPausePauseClass1Counter + // HasStart checks if Start has been set in PatternFlowPfcPausePauseClass1Counter + HasStart() bool + // Step returns uint32, set in PatternFlowPfcPausePauseClass1Counter. + Step() uint32 + // SetStep assigns uint32 provided by user to PatternFlowPfcPausePauseClass1Counter + SetStep(value uint32) PatternFlowPfcPausePauseClass1Counter + // HasStep checks if Step has been set in PatternFlowPfcPausePauseClass1Counter + HasStep() bool + // Count returns uint32, set in PatternFlowPfcPausePauseClass1Counter. + Count() uint32 + // SetCount assigns uint32 provided by user to PatternFlowPfcPausePauseClass1Counter + SetCount(value uint32) PatternFlowPfcPausePauseClass1Counter + // HasCount checks if Count has been set in PatternFlowPfcPausePauseClass1Counter + HasCount() bool +} + +// description is TBD +// Start returns a uint32 +func (obj *patternFlowPfcPausePauseClass1Counter) Start() uint32 { + + return *obj.obj.Start + +} + +// description is TBD +// Start returns a uint32 +func (obj *patternFlowPfcPausePauseClass1Counter) HasStart() bool { + return obj.obj.Start != nil +} + +// description is TBD +// SetStart sets the uint32 value in the PatternFlowPfcPausePauseClass1Counter object +func (obj *patternFlowPfcPausePauseClass1Counter) SetStart(value uint32) PatternFlowPfcPausePauseClass1Counter { + + obj.obj.Start = &value + return obj +} + +// description is TBD +// Step returns a uint32 +func (obj *patternFlowPfcPausePauseClass1Counter) Step() uint32 { + + return *obj.obj.Step + +} + +// description is TBD +// Step returns a uint32 +func (obj *patternFlowPfcPausePauseClass1Counter) HasStep() bool { + return obj.obj.Step != nil +} + +// description is TBD +// SetStep sets the uint32 value in the PatternFlowPfcPausePauseClass1Counter object +func (obj *patternFlowPfcPausePauseClass1Counter) SetStep(value uint32) PatternFlowPfcPausePauseClass1Counter { + + obj.obj.Step = &value + return obj +} + +// description is TBD +// Count returns a uint32 +func (obj *patternFlowPfcPausePauseClass1Counter) Count() uint32 { + + return *obj.obj.Count + +} + +// description is TBD +// Count returns a uint32 +func (obj *patternFlowPfcPausePauseClass1Counter) HasCount() bool { + return obj.obj.Count != nil +} + +// description is TBD +// SetCount sets the uint32 value in the PatternFlowPfcPausePauseClass1Counter object +func (obj *patternFlowPfcPausePauseClass1Counter) SetCount(value uint32) PatternFlowPfcPausePauseClass1Counter { + + obj.obj.Count = &value + return obj +} + +func (obj *patternFlowPfcPausePauseClass1Counter) validateObj(vObj *validation, set_default bool) { + if set_default { + obj.setDefault() + } + + if obj.obj.Start != nil { + + if *obj.obj.Start > 65535 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("0 <= PatternFlowPfcPausePauseClass1Counter.Start <= 65535 but Got %d", *obj.obj.Start)) + } + + } + + if obj.obj.Step != nil { + + if *obj.obj.Step > 65535 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("0 <= PatternFlowPfcPausePauseClass1Counter.Step <= 65535 but Got %d", *obj.obj.Step)) + } + + } + + if obj.obj.Count != nil { + + if *obj.obj.Count > 65535 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("0 <= PatternFlowPfcPausePauseClass1Counter.Count <= 65535 but Got %d", *obj.obj.Count)) + } + + } + +} + +func (obj *patternFlowPfcPausePauseClass1Counter) setDefault() { + if obj.obj.Start == nil { + obj.SetStart(0) + } + if obj.obj.Step == nil { + obj.SetStep(1) + } + if obj.obj.Count == nil { + obj.SetCount(1) + } + +} + +// ***** PatternFlowPfcPausePauseClass1MetricTag ***** +type patternFlowPfcPausePauseClass1MetricTag struct { + validation + obj *otg.PatternFlowPfcPausePauseClass1MetricTag +} + +func NewPatternFlowPfcPausePauseClass1MetricTag() PatternFlowPfcPausePauseClass1MetricTag { + obj := patternFlowPfcPausePauseClass1MetricTag{obj: &otg.PatternFlowPfcPausePauseClass1MetricTag{}} + obj.setDefault() + return &obj +} + +func (obj *patternFlowPfcPausePauseClass1MetricTag) Msg() *otg.PatternFlowPfcPausePauseClass1MetricTag { + return obj.obj +} + +func (obj *patternFlowPfcPausePauseClass1MetricTag) SetMsg(msg *otg.PatternFlowPfcPausePauseClass1MetricTag) PatternFlowPfcPausePauseClass1MetricTag { + + proto.Merge(obj.obj, msg) + return obj +} + +func (obj *patternFlowPfcPausePauseClass1MetricTag) ToProto() (*otg.PatternFlowPfcPausePauseClass1MetricTag, error) { + err := obj.validateToAndFrom() + if err != nil { + return nil, err + } + return obj.Msg(), nil +} + +func (obj *patternFlowPfcPausePauseClass1MetricTag) FromProto(msg *otg.PatternFlowPfcPausePauseClass1MetricTag) (PatternFlowPfcPausePauseClass1MetricTag, error) { + newObj := obj.SetMsg(msg) + err := newObj.validateToAndFrom() + if err != nil { + return nil, err + } + return newObj, nil +} + +func (obj *patternFlowPfcPausePauseClass1MetricTag) ToPbText() (string, error) { + vErr := obj.validateToAndFrom() + if vErr != nil { + return "", vErr + } + protoMarshal, err := proto.Marshal(obj.Msg()) + if err != nil { + return "", err + } + return string(protoMarshal), nil +} + +func (obj *patternFlowPfcPausePauseClass1MetricTag) FromPbText(value string) error { + retObj := proto.Unmarshal([]byte(value), obj.Msg()) + if retObj != nil { + return retObj + } + + vErr := obj.validateToAndFrom() + if vErr != nil { + return vErr + } + return retObj +} + +func (obj *patternFlowPfcPausePauseClass1MetricTag) ToYaml() (string, error) { + vErr := obj.validateToAndFrom() + if vErr != nil { + return "", vErr + } + opts := protojson.MarshalOptions{ + UseProtoNames: true, + AllowPartial: true, + EmitUnpopulated: false, + } + data, err := opts.Marshal(obj.Msg()) + if err != nil { + return "", err + } + data, err = yaml.JSONToYAML(data) + if err != nil { + return "", err + } + return string(data), nil +} + +func (obj *patternFlowPfcPausePauseClass1MetricTag) FromYaml(value string) error { + if value == "" { + value = "{}" + } + data, err := yaml.YAMLToJSON([]byte(value)) + if err != nil { + return err + } + opts := protojson.UnmarshalOptions{ + AllowPartial: true, + DiscardUnknown: false, + } + uError := opts.Unmarshal([]byte(data), obj.Msg()) + if uError != nil { + return fmt.Errorf("unmarshal error %s", strings.Replace( + uError.Error(), "\u00a0", " ", -1)[7:]) + } + + vErr := obj.validateToAndFrom() + if vErr != nil { + return vErr + } + return nil +} + +func (obj *patternFlowPfcPausePauseClass1MetricTag) ToJson() (string, error) { + vErr := obj.validateToAndFrom() + if vErr != nil { + return "", vErr + } + opts := protojson.MarshalOptions{ + UseProtoNames: true, + AllowPartial: true, + EmitUnpopulated: false, + Indent: " ", + } + data, err := opts.Marshal(obj.Msg()) + if err != nil { + return "", err + } + return string(data), nil +} + +func (obj *patternFlowPfcPausePauseClass1MetricTag) FromJson(value string) error { + opts := protojson.UnmarshalOptions{ + AllowPartial: true, + DiscardUnknown: false, + } + if value == "" { + value = "{}" + } + uError := opts.Unmarshal([]byte(value), obj.Msg()) + if uError != nil { + return fmt.Errorf("unmarshal error %s", strings.Replace( + uError.Error(), "\u00a0", " ", -1)[7:]) + } + + err := obj.validateToAndFrom() + if err != nil { + return err + } + return nil +} + +func (obj *patternFlowPfcPausePauseClass1MetricTag) validateToAndFrom() error { + // emptyVars() + obj.validateObj(&obj.validation, true) + return obj.validationResult() +} + +func (obj *patternFlowPfcPausePauseClass1MetricTag) Validate() error { + // emptyVars() + obj.validateObj(&obj.validation, false) + return obj.validationResult() +} + +func (obj *patternFlowPfcPausePauseClass1MetricTag) String() string { + str, err := obj.ToYaml() + if err != nil { + return err.Error() + } + return str +} + +func (obj *patternFlowPfcPausePauseClass1MetricTag) Clone() (PatternFlowPfcPausePauseClass1MetricTag, error) { + vErr := obj.Validate() + if vErr != nil { + return nil, vErr + } + newObj := NewPatternFlowPfcPausePauseClass1MetricTag() + data, err := proto.Marshal(obj.Msg()) + if err != nil { + return nil, err + } + pbErr := proto.Unmarshal(data, newObj.Msg()) + if pbErr != nil { + return nil, pbErr + } + return newObj, nil +} + +// PatternFlowPfcPausePauseClass1MetricTag is metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. +type PatternFlowPfcPausePauseClass1MetricTag interface { + Validation + // Msg marshals PatternFlowPfcPausePauseClass1MetricTag to protobuf object *otg.PatternFlowPfcPausePauseClass1MetricTag + // and doesn't set defaults + Msg() *otg.PatternFlowPfcPausePauseClass1MetricTag + // SetMsg unmarshals PatternFlowPfcPausePauseClass1MetricTag from protobuf object *otg.PatternFlowPfcPausePauseClass1MetricTag + // and doesn't set defaults + SetMsg(*otg.PatternFlowPfcPausePauseClass1MetricTag) PatternFlowPfcPausePauseClass1MetricTag + // ToProto marshals PatternFlowPfcPausePauseClass1MetricTag to protobuf object *otg.PatternFlowPfcPausePauseClass1MetricTag + ToProto() (*otg.PatternFlowPfcPausePauseClass1MetricTag, error) + // ToPbText marshals PatternFlowPfcPausePauseClass1MetricTag to protobuf text + ToPbText() (string, error) + // ToYaml marshals PatternFlowPfcPausePauseClass1MetricTag to YAML text + ToYaml() (string, error) + // ToJson marshals PatternFlowPfcPausePauseClass1MetricTag to JSON text + ToJson() (string, error) + // FromProto unmarshals PatternFlowPfcPausePauseClass1MetricTag from protobuf object *otg.PatternFlowPfcPausePauseClass1MetricTag + FromProto(msg *otg.PatternFlowPfcPausePauseClass1MetricTag) (PatternFlowPfcPausePauseClass1MetricTag, error) + // FromPbText unmarshals PatternFlowPfcPausePauseClass1MetricTag from protobuf text + FromPbText(value string) error + // FromYaml unmarshals PatternFlowPfcPausePauseClass1MetricTag from YAML text + FromYaml(value string) error + // FromJson unmarshals PatternFlowPfcPausePauseClass1MetricTag from JSON text + FromJson(value string) error + // Validate validates PatternFlowPfcPausePauseClass1MetricTag + Validate() error + // A stringer function + String() string + // Clones the object + Clone() (PatternFlowPfcPausePauseClass1MetricTag, error) + validateToAndFrom() error + validateObj(vObj *validation, set_default bool) + setDefault() + // Name returns string, set in PatternFlowPfcPausePauseClass1MetricTag. + Name() string + // SetName assigns string provided by user to PatternFlowPfcPausePauseClass1MetricTag + SetName(value string) PatternFlowPfcPausePauseClass1MetricTag + // Offset returns uint32, set in PatternFlowPfcPausePauseClass1MetricTag. + Offset() uint32 + // SetOffset assigns uint32 provided by user to PatternFlowPfcPausePauseClass1MetricTag + SetOffset(value uint32) PatternFlowPfcPausePauseClass1MetricTag + // HasOffset checks if Offset has been set in PatternFlowPfcPausePauseClass1MetricTag + HasOffset() bool + // Length returns uint32, set in PatternFlowPfcPausePauseClass1MetricTag. + Length() uint32 + // SetLength assigns uint32 provided by user to PatternFlowPfcPausePauseClass1MetricTag + SetLength(value uint32) PatternFlowPfcPausePauseClass1MetricTag + // HasLength checks if Length has been set in PatternFlowPfcPausePauseClass1MetricTag + HasLength() bool +} + +// Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field +// Name returns a string +func (obj *patternFlowPfcPausePauseClass1MetricTag) Name() string { + + return *obj.obj.Name + +} + +// Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field +// SetName sets the string value in the PatternFlowPfcPausePauseClass1MetricTag object +func (obj *patternFlowPfcPausePauseClass1MetricTag) SetName(value string) PatternFlowPfcPausePauseClass1MetricTag { + + obj.obj.Name = &value + return obj +} + +// Offset in bits relative to start of corresponding header field +// Offset returns a uint32 +func (obj *patternFlowPfcPausePauseClass1MetricTag) Offset() uint32 { + + return *obj.obj.Offset + +} + +// Offset in bits relative to start of corresponding header field +// Offset returns a uint32 +func (obj *patternFlowPfcPausePauseClass1MetricTag) HasOffset() bool { + return obj.obj.Offset != nil +} + +// Offset in bits relative to start of corresponding header field +// SetOffset sets the uint32 value in the PatternFlowPfcPausePauseClass1MetricTag object +func (obj *patternFlowPfcPausePauseClass1MetricTag) SetOffset(value uint32) PatternFlowPfcPausePauseClass1MetricTag { + + obj.obj.Offset = &value + return obj +} + +// Number of bits to track for metrics starting from configured offset of corresponding header field +// Length returns a uint32 +func (obj *patternFlowPfcPausePauseClass1MetricTag) Length() uint32 { + + return *obj.obj.Length + +} + +// Number of bits to track for metrics starting from configured offset of corresponding header field +// Length returns a uint32 +func (obj *patternFlowPfcPausePauseClass1MetricTag) HasLength() bool { + return obj.obj.Length != nil +} + +// Number of bits to track for metrics starting from configured offset of corresponding header field +// SetLength sets the uint32 value in the PatternFlowPfcPausePauseClass1MetricTag object +func (obj *patternFlowPfcPausePauseClass1MetricTag) SetLength(value uint32) PatternFlowPfcPausePauseClass1MetricTag { + + obj.obj.Length = &value + return obj +} + +func (obj *patternFlowPfcPausePauseClass1MetricTag) validateObj(vObj *validation, set_default bool) { + if set_default { + obj.setDefault() + } + + // Name is required + if obj.obj.Name == nil { + vObj.validationErrors = append(vObj.validationErrors, "Name is required field on interface PatternFlowPfcPausePauseClass1MetricTag") + } + + if obj.obj.Offset != nil { + + if *obj.obj.Offset > 15 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("0 <= PatternFlowPfcPausePauseClass1MetricTag.Offset <= 15 but Got %d", *obj.obj.Offset)) + } + + } + + if obj.obj.Length != nil { + + if *obj.obj.Length < 1 || *obj.obj.Length > 16 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("1 <= PatternFlowPfcPausePauseClass1MetricTag.Length <= 16 but Got %d", *obj.obj.Length)) + } + + } + +} + +func (obj *patternFlowPfcPausePauseClass1MetricTag) setDefault() { + if obj.obj.Offset == nil { + obj.SetOffset(0) + } + if obj.obj.Length == nil { + obj.SetLength(16) + } + +} + +// ***** PatternFlowPfcPausePauseClass2Counter ***** +type patternFlowPfcPausePauseClass2Counter struct { + validation + obj *otg.PatternFlowPfcPausePauseClass2Counter +} + +func NewPatternFlowPfcPausePauseClass2Counter() PatternFlowPfcPausePauseClass2Counter { + obj := patternFlowPfcPausePauseClass2Counter{obj: &otg.PatternFlowPfcPausePauseClass2Counter{}} + obj.setDefault() + return &obj +} + +func (obj *patternFlowPfcPausePauseClass2Counter) Msg() *otg.PatternFlowPfcPausePauseClass2Counter { + return obj.obj +} + +func (obj *patternFlowPfcPausePauseClass2Counter) SetMsg(msg *otg.PatternFlowPfcPausePauseClass2Counter) PatternFlowPfcPausePauseClass2Counter { + + proto.Merge(obj.obj, msg) + return obj +} + +func (obj *patternFlowPfcPausePauseClass2Counter) ToProto() (*otg.PatternFlowPfcPausePauseClass2Counter, error) { + err := obj.validateToAndFrom() + if err != nil { + return nil, err + } + return obj.Msg(), nil +} + +func (obj *patternFlowPfcPausePauseClass2Counter) FromProto(msg *otg.PatternFlowPfcPausePauseClass2Counter) (PatternFlowPfcPausePauseClass2Counter, error) { + newObj := obj.SetMsg(msg) + err := newObj.validateToAndFrom() + if err != nil { + return nil, err + } + return newObj, nil +} + +func (obj *patternFlowPfcPausePauseClass2Counter) ToPbText() (string, error) { + vErr := obj.validateToAndFrom() + if vErr != nil { + return "", vErr + } + protoMarshal, err := proto.Marshal(obj.Msg()) + if err != nil { + return "", err + } + return string(protoMarshal), nil +} + +func (obj *patternFlowPfcPausePauseClass2Counter) FromPbText(value string) error { + retObj := proto.Unmarshal([]byte(value), obj.Msg()) + if retObj != nil { + return retObj + } + + vErr := obj.validateToAndFrom() + if vErr != nil { + return vErr + } + return retObj +} + +func (obj *patternFlowPfcPausePauseClass2Counter) ToYaml() (string, error) { + vErr := obj.validateToAndFrom() + if vErr != nil { + return "", vErr + } + opts := protojson.MarshalOptions{ + UseProtoNames: true, + AllowPartial: true, + EmitUnpopulated: false, + } + data, err := opts.Marshal(obj.Msg()) + if err != nil { + return "", err + } + data, err = yaml.JSONToYAML(data) + if err != nil { + return "", err + } + return string(data), nil +} + +func (obj *patternFlowPfcPausePauseClass2Counter) FromYaml(value string) error { + if value == "" { + value = "{}" + } + data, err := yaml.YAMLToJSON([]byte(value)) + if err != nil { + return err + } + opts := protojson.UnmarshalOptions{ + AllowPartial: true, + DiscardUnknown: false, + } + uError := opts.Unmarshal([]byte(data), obj.Msg()) + if uError != nil { + return fmt.Errorf("unmarshal error %s", strings.Replace( + uError.Error(), "\u00a0", " ", -1)[7:]) + } + + vErr := obj.validateToAndFrom() + if vErr != nil { + return vErr + } + return nil +} + +func (obj *patternFlowPfcPausePauseClass2Counter) ToJson() (string, error) { + vErr := obj.validateToAndFrom() + if vErr != nil { + return "", vErr + } + opts := protojson.MarshalOptions{ + UseProtoNames: true, + AllowPartial: true, + EmitUnpopulated: false, + Indent: " ", + } + data, err := opts.Marshal(obj.Msg()) + if err != nil { + return "", err + } + return string(data), nil +} + +func (obj *patternFlowPfcPausePauseClass2Counter) FromJson(value string) error { + opts := protojson.UnmarshalOptions{ + AllowPartial: true, + DiscardUnknown: false, + } + if value == "" { + value = "{}" + } + uError := opts.Unmarshal([]byte(value), obj.Msg()) + if uError != nil { + return fmt.Errorf("unmarshal error %s", strings.Replace( + uError.Error(), "\u00a0", " ", -1)[7:]) + } + + err := obj.validateToAndFrom() + if err != nil { + return err + } + return nil +} + +func (obj *patternFlowPfcPausePauseClass2Counter) validateToAndFrom() error { + // emptyVars() + obj.validateObj(&obj.validation, true) + return obj.validationResult() +} + +func (obj *patternFlowPfcPausePauseClass2Counter) Validate() error { + // emptyVars() + obj.validateObj(&obj.validation, false) + return obj.validationResult() +} + +func (obj *patternFlowPfcPausePauseClass2Counter) String() string { + str, err := obj.ToYaml() + if err != nil { + return err.Error() + } + return str +} + +func (obj *patternFlowPfcPausePauseClass2Counter) Clone() (PatternFlowPfcPausePauseClass2Counter, error) { + vErr := obj.Validate() + if vErr != nil { + return nil, vErr + } + newObj := NewPatternFlowPfcPausePauseClass2Counter() + data, err := proto.Marshal(obj.Msg()) + if err != nil { + return nil, err + } + pbErr := proto.Unmarshal(data, newObj.Msg()) + if pbErr != nil { + return nil, pbErr + } + return newObj, nil +} + +// PatternFlowPfcPausePauseClass2Counter is integer counter pattern +type PatternFlowPfcPausePauseClass2Counter interface { + Validation + // Msg marshals PatternFlowPfcPausePauseClass2Counter to protobuf object *otg.PatternFlowPfcPausePauseClass2Counter + // and doesn't set defaults + Msg() *otg.PatternFlowPfcPausePauseClass2Counter + // SetMsg unmarshals PatternFlowPfcPausePauseClass2Counter from protobuf object *otg.PatternFlowPfcPausePauseClass2Counter + // and doesn't set defaults + SetMsg(*otg.PatternFlowPfcPausePauseClass2Counter) PatternFlowPfcPausePauseClass2Counter + // ToProto marshals PatternFlowPfcPausePauseClass2Counter to protobuf object *otg.PatternFlowPfcPausePauseClass2Counter + ToProto() (*otg.PatternFlowPfcPausePauseClass2Counter, error) + // ToPbText marshals PatternFlowPfcPausePauseClass2Counter to protobuf text + ToPbText() (string, error) + // ToYaml marshals PatternFlowPfcPausePauseClass2Counter to YAML text + ToYaml() (string, error) + // ToJson marshals PatternFlowPfcPausePauseClass2Counter to JSON text + ToJson() (string, error) + // FromProto unmarshals PatternFlowPfcPausePauseClass2Counter from protobuf object *otg.PatternFlowPfcPausePauseClass2Counter + FromProto(msg *otg.PatternFlowPfcPausePauseClass2Counter) (PatternFlowPfcPausePauseClass2Counter, error) + // FromPbText unmarshals PatternFlowPfcPausePauseClass2Counter from protobuf text + FromPbText(value string) error + // FromYaml unmarshals PatternFlowPfcPausePauseClass2Counter from YAML text + FromYaml(value string) error + // FromJson unmarshals PatternFlowPfcPausePauseClass2Counter from JSON text + FromJson(value string) error + // Validate validates PatternFlowPfcPausePauseClass2Counter + Validate() error + // A stringer function + String() string + // Clones the object + Clone() (PatternFlowPfcPausePauseClass2Counter, error) + validateToAndFrom() error + validateObj(vObj *validation, set_default bool) + setDefault() + // Start returns uint32, set in PatternFlowPfcPausePauseClass2Counter. + Start() uint32 + // SetStart assigns uint32 provided by user to PatternFlowPfcPausePauseClass2Counter + SetStart(value uint32) PatternFlowPfcPausePauseClass2Counter + // HasStart checks if Start has been set in PatternFlowPfcPausePauseClass2Counter + HasStart() bool + // Step returns uint32, set in PatternFlowPfcPausePauseClass2Counter. + Step() uint32 + // SetStep assigns uint32 provided by user to PatternFlowPfcPausePauseClass2Counter + SetStep(value uint32) PatternFlowPfcPausePauseClass2Counter + // HasStep checks if Step has been set in PatternFlowPfcPausePauseClass2Counter + HasStep() bool + // Count returns uint32, set in PatternFlowPfcPausePauseClass2Counter. + Count() uint32 + // SetCount assigns uint32 provided by user to PatternFlowPfcPausePauseClass2Counter + SetCount(value uint32) PatternFlowPfcPausePauseClass2Counter + // HasCount checks if Count has been set in PatternFlowPfcPausePauseClass2Counter + HasCount() bool +} + +// description is TBD +// Start returns a uint32 +func (obj *patternFlowPfcPausePauseClass2Counter) Start() uint32 { + + return *obj.obj.Start + +} + +// description is TBD +// Start returns a uint32 +func (obj *patternFlowPfcPausePauseClass2Counter) HasStart() bool { + return obj.obj.Start != nil +} + +// description is TBD +// SetStart sets the uint32 value in the PatternFlowPfcPausePauseClass2Counter object +func (obj *patternFlowPfcPausePauseClass2Counter) SetStart(value uint32) PatternFlowPfcPausePauseClass2Counter { + + obj.obj.Start = &value + return obj +} + +// description is TBD +// Step returns a uint32 +func (obj *patternFlowPfcPausePauseClass2Counter) Step() uint32 { + + return *obj.obj.Step + +} + +// description is TBD +// Step returns a uint32 +func (obj *patternFlowPfcPausePauseClass2Counter) HasStep() bool { + return obj.obj.Step != nil +} + +// description is TBD +// SetStep sets the uint32 value in the PatternFlowPfcPausePauseClass2Counter object +func (obj *patternFlowPfcPausePauseClass2Counter) SetStep(value uint32) PatternFlowPfcPausePauseClass2Counter { + + obj.obj.Step = &value + return obj +} + +// description is TBD +// Count returns a uint32 +func (obj *patternFlowPfcPausePauseClass2Counter) Count() uint32 { + + return *obj.obj.Count + +} + +// description is TBD +// Count returns a uint32 +func (obj *patternFlowPfcPausePauseClass2Counter) HasCount() bool { + return obj.obj.Count != nil +} + +// description is TBD +// SetCount sets the uint32 value in the PatternFlowPfcPausePauseClass2Counter object +func (obj *patternFlowPfcPausePauseClass2Counter) SetCount(value uint32) PatternFlowPfcPausePauseClass2Counter { + + obj.obj.Count = &value + return obj +} + +func (obj *patternFlowPfcPausePauseClass2Counter) validateObj(vObj *validation, set_default bool) { + if set_default { + obj.setDefault() + } + + if obj.obj.Start != nil { + + if *obj.obj.Start > 65535 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("0 <= PatternFlowPfcPausePauseClass2Counter.Start <= 65535 but Got %d", *obj.obj.Start)) + } + + } + + if obj.obj.Step != nil { + + if *obj.obj.Step > 65535 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("0 <= PatternFlowPfcPausePauseClass2Counter.Step <= 65535 but Got %d", *obj.obj.Step)) + } + + } + + if obj.obj.Count != nil { + + if *obj.obj.Count > 65535 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("0 <= PatternFlowPfcPausePauseClass2Counter.Count <= 65535 but Got %d", *obj.obj.Count)) + } + + } + +} + +func (obj *patternFlowPfcPausePauseClass2Counter) setDefault() { + if obj.obj.Start == nil { + obj.SetStart(0) + } + if obj.obj.Step == nil { + obj.SetStep(1) + } + if obj.obj.Count == nil { + obj.SetCount(1) + } + +} + +// ***** PatternFlowPfcPausePauseClass2MetricTag ***** +type patternFlowPfcPausePauseClass2MetricTag struct { + validation + obj *otg.PatternFlowPfcPausePauseClass2MetricTag +} + +func NewPatternFlowPfcPausePauseClass2MetricTag() PatternFlowPfcPausePauseClass2MetricTag { + obj := patternFlowPfcPausePauseClass2MetricTag{obj: &otg.PatternFlowPfcPausePauseClass2MetricTag{}} + obj.setDefault() + return &obj +} + +func (obj *patternFlowPfcPausePauseClass2MetricTag) Msg() *otg.PatternFlowPfcPausePauseClass2MetricTag { + return obj.obj +} + +func (obj *patternFlowPfcPausePauseClass2MetricTag) SetMsg(msg *otg.PatternFlowPfcPausePauseClass2MetricTag) PatternFlowPfcPausePauseClass2MetricTag { + + proto.Merge(obj.obj, msg) + return obj +} + +func (obj *patternFlowPfcPausePauseClass2MetricTag) ToProto() (*otg.PatternFlowPfcPausePauseClass2MetricTag, error) { + err := obj.validateToAndFrom() + if err != nil { + return nil, err + } + return obj.Msg(), nil +} + +func (obj *patternFlowPfcPausePauseClass2MetricTag) FromProto(msg *otg.PatternFlowPfcPausePauseClass2MetricTag) (PatternFlowPfcPausePauseClass2MetricTag, error) { + newObj := obj.SetMsg(msg) + err := newObj.validateToAndFrom() + if err != nil { + return nil, err + } + return newObj, nil +} + +func (obj *patternFlowPfcPausePauseClass2MetricTag) ToPbText() (string, error) { + vErr := obj.validateToAndFrom() + if vErr != nil { + return "", vErr + } + protoMarshal, err := proto.Marshal(obj.Msg()) + if err != nil { + return "", err + } + return string(protoMarshal), nil +} + +func (obj *patternFlowPfcPausePauseClass2MetricTag) FromPbText(value string) error { + retObj := proto.Unmarshal([]byte(value), obj.Msg()) + if retObj != nil { + return retObj + } + + vErr := obj.validateToAndFrom() + if vErr != nil { + return vErr + } + return retObj +} + +func (obj *patternFlowPfcPausePauseClass2MetricTag) ToYaml() (string, error) { + vErr := obj.validateToAndFrom() + if vErr != nil { + return "", vErr + } + opts := protojson.MarshalOptions{ + UseProtoNames: true, + AllowPartial: true, + EmitUnpopulated: false, + } + data, err := opts.Marshal(obj.Msg()) + if err != nil { + return "", err + } + data, err = yaml.JSONToYAML(data) + if err != nil { + return "", err + } + return string(data), nil +} + +func (obj *patternFlowPfcPausePauseClass2MetricTag) FromYaml(value string) error { + if value == "" { + value = "{}" + } + data, err := yaml.YAMLToJSON([]byte(value)) + if err != nil { + return err + } + opts := protojson.UnmarshalOptions{ + AllowPartial: true, + DiscardUnknown: false, + } + uError := opts.Unmarshal([]byte(data), obj.Msg()) + if uError != nil { + return fmt.Errorf("unmarshal error %s", strings.Replace( + uError.Error(), "\u00a0", " ", -1)[7:]) + } + + vErr := obj.validateToAndFrom() + if vErr != nil { + return vErr + } + return nil +} + +func (obj *patternFlowPfcPausePauseClass2MetricTag) ToJson() (string, error) { + vErr := obj.validateToAndFrom() + if vErr != nil { + return "", vErr + } + opts := protojson.MarshalOptions{ + UseProtoNames: true, + AllowPartial: true, + EmitUnpopulated: false, + Indent: " ", + } + data, err := opts.Marshal(obj.Msg()) + if err != nil { + return "", err + } + return string(data), nil +} + +func (obj *patternFlowPfcPausePauseClass2MetricTag) FromJson(value string) error { + opts := protojson.UnmarshalOptions{ + AllowPartial: true, + DiscardUnknown: false, + } + if value == "" { + value = "{}" + } + uError := opts.Unmarshal([]byte(value), obj.Msg()) + if uError != nil { + return fmt.Errorf("unmarshal error %s", strings.Replace( + uError.Error(), "\u00a0", " ", -1)[7:]) + } + + err := obj.validateToAndFrom() + if err != nil { + return err + } + return nil +} + +func (obj *patternFlowPfcPausePauseClass2MetricTag) validateToAndFrom() error { + // emptyVars() + obj.validateObj(&obj.validation, true) + return obj.validationResult() +} + +func (obj *patternFlowPfcPausePauseClass2MetricTag) Validate() error { + // emptyVars() + obj.validateObj(&obj.validation, false) + return obj.validationResult() +} + +func (obj *patternFlowPfcPausePauseClass2MetricTag) String() string { + str, err := obj.ToYaml() + if err != nil { + return err.Error() + } + return str +} + +func (obj *patternFlowPfcPausePauseClass2MetricTag) Clone() (PatternFlowPfcPausePauseClass2MetricTag, error) { + vErr := obj.Validate() + if vErr != nil { + return nil, vErr + } + newObj := NewPatternFlowPfcPausePauseClass2MetricTag() + data, err := proto.Marshal(obj.Msg()) + if err != nil { + return nil, err + } + pbErr := proto.Unmarshal(data, newObj.Msg()) + if pbErr != nil { + return nil, pbErr + } + return newObj, nil +} + +// PatternFlowPfcPausePauseClass2MetricTag is metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. +type PatternFlowPfcPausePauseClass2MetricTag interface { + Validation + // Msg marshals PatternFlowPfcPausePauseClass2MetricTag to protobuf object *otg.PatternFlowPfcPausePauseClass2MetricTag + // and doesn't set defaults + Msg() *otg.PatternFlowPfcPausePauseClass2MetricTag + // SetMsg unmarshals PatternFlowPfcPausePauseClass2MetricTag from protobuf object *otg.PatternFlowPfcPausePauseClass2MetricTag + // and doesn't set defaults + SetMsg(*otg.PatternFlowPfcPausePauseClass2MetricTag) PatternFlowPfcPausePauseClass2MetricTag + // ToProto marshals PatternFlowPfcPausePauseClass2MetricTag to protobuf object *otg.PatternFlowPfcPausePauseClass2MetricTag + ToProto() (*otg.PatternFlowPfcPausePauseClass2MetricTag, error) + // ToPbText marshals PatternFlowPfcPausePauseClass2MetricTag to protobuf text + ToPbText() (string, error) + // ToYaml marshals PatternFlowPfcPausePauseClass2MetricTag to YAML text + ToYaml() (string, error) + // ToJson marshals PatternFlowPfcPausePauseClass2MetricTag to JSON text + ToJson() (string, error) + // FromProto unmarshals PatternFlowPfcPausePauseClass2MetricTag from protobuf object *otg.PatternFlowPfcPausePauseClass2MetricTag + FromProto(msg *otg.PatternFlowPfcPausePauseClass2MetricTag) (PatternFlowPfcPausePauseClass2MetricTag, error) + // FromPbText unmarshals PatternFlowPfcPausePauseClass2MetricTag from protobuf text + FromPbText(value string) error + // FromYaml unmarshals PatternFlowPfcPausePauseClass2MetricTag from YAML text + FromYaml(value string) error + // FromJson unmarshals PatternFlowPfcPausePauseClass2MetricTag from JSON text + FromJson(value string) error + // Validate validates PatternFlowPfcPausePauseClass2MetricTag + Validate() error + // A stringer function + String() string + // Clones the object + Clone() (PatternFlowPfcPausePauseClass2MetricTag, error) + validateToAndFrom() error + validateObj(vObj *validation, set_default bool) + setDefault() + // Name returns string, set in PatternFlowPfcPausePauseClass2MetricTag. + Name() string + // SetName assigns string provided by user to PatternFlowPfcPausePauseClass2MetricTag + SetName(value string) PatternFlowPfcPausePauseClass2MetricTag + // Offset returns uint32, set in PatternFlowPfcPausePauseClass2MetricTag. + Offset() uint32 + // SetOffset assigns uint32 provided by user to PatternFlowPfcPausePauseClass2MetricTag + SetOffset(value uint32) PatternFlowPfcPausePauseClass2MetricTag + // HasOffset checks if Offset has been set in PatternFlowPfcPausePauseClass2MetricTag + HasOffset() bool + // Length returns uint32, set in PatternFlowPfcPausePauseClass2MetricTag. + Length() uint32 + // SetLength assigns uint32 provided by user to PatternFlowPfcPausePauseClass2MetricTag + SetLength(value uint32) PatternFlowPfcPausePauseClass2MetricTag + // HasLength checks if Length has been set in PatternFlowPfcPausePauseClass2MetricTag + HasLength() bool +} + +// Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field +// Name returns a string +func (obj *patternFlowPfcPausePauseClass2MetricTag) Name() string { + + return *obj.obj.Name + +} + +// Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field +// SetName sets the string value in the PatternFlowPfcPausePauseClass2MetricTag object +func (obj *patternFlowPfcPausePauseClass2MetricTag) SetName(value string) PatternFlowPfcPausePauseClass2MetricTag { + + obj.obj.Name = &value + return obj +} + +// Offset in bits relative to start of corresponding header field +// Offset returns a uint32 +func (obj *patternFlowPfcPausePauseClass2MetricTag) Offset() uint32 { + + return *obj.obj.Offset + +} + +// Offset in bits relative to start of corresponding header field +// Offset returns a uint32 +func (obj *patternFlowPfcPausePauseClass2MetricTag) HasOffset() bool { + return obj.obj.Offset != nil +} + +// Offset in bits relative to start of corresponding header field +// SetOffset sets the uint32 value in the PatternFlowPfcPausePauseClass2MetricTag object +func (obj *patternFlowPfcPausePauseClass2MetricTag) SetOffset(value uint32) PatternFlowPfcPausePauseClass2MetricTag { + + obj.obj.Offset = &value + return obj +} + +// Number of bits to track for metrics starting from configured offset of corresponding header field +// Length returns a uint32 +func (obj *patternFlowPfcPausePauseClass2MetricTag) Length() uint32 { + + return *obj.obj.Length + +} + +// Number of bits to track for metrics starting from configured offset of corresponding header field +// Length returns a uint32 +func (obj *patternFlowPfcPausePauseClass2MetricTag) HasLength() bool { + return obj.obj.Length != nil +} + +// Number of bits to track for metrics starting from configured offset of corresponding header field +// SetLength sets the uint32 value in the PatternFlowPfcPausePauseClass2MetricTag object +func (obj *patternFlowPfcPausePauseClass2MetricTag) SetLength(value uint32) PatternFlowPfcPausePauseClass2MetricTag { + + obj.obj.Length = &value + return obj +} + +func (obj *patternFlowPfcPausePauseClass2MetricTag) validateObj(vObj *validation, set_default bool) { + if set_default { + obj.setDefault() + } + + // Name is required + if obj.obj.Name == nil { + vObj.validationErrors = append(vObj.validationErrors, "Name is required field on interface PatternFlowPfcPausePauseClass2MetricTag") + } + + if obj.obj.Offset != nil { + + if *obj.obj.Offset > 15 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("0 <= PatternFlowPfcPausePauseClass2MetricTag.Offset <= 15 but Got %d", *obj.obj.Offset)) + } + + } + + if obj.obj.Length != nil { + + if *obj.obj.Length < 1 || *obj.obj.Length > 16 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("1 <= PatternFlowPfcPausePauseClass2MetricTag.Length <= 16 but Got %d", *obj.obj.Length)) + } + + } + +} + +func (obj *patternFlowPfcPausePauseClass2MetricTag) setDefault() { + if obj.obj.Offset == nil { + obj.SetOffset(0) + } + if obj.obj.Length == nil { + obj.SetLength(16) + } + +} + +// ***** PatternFlowPfcPausePauseClass3Counter ***** +type patternFlowPfcPausePauseClass3Counter struct { + validation + obj *otg.PatternFlowPfcPausePauseClass3Counter +} + +func NewPatternFlowPfcPausePauseClass3Counter() PatternFlowPfcPausePauseClass3Counter { + obj := patternFlowPfcPausePauseClass3Counter{obj: &otg.PatternFlowPfcPausePauseClass3Counter{}} + obj.setDefault() + return &obj +} + +func (obj *patternFlowPfcPausePauseClass3Counter) Msg() *otg.PatternFlowPfcPausePauseClass3Counter { + return obj.obj +} + +func (obj *patternFlowPfcPausePauseClass3Counter) SetMsg(msg *otg.PatternFlowPfcPausePauseClass3Counter) PatternFlowPfcPausePauseClass3Counter { + + proto.Merge(obj.obj, msg) + return obj +} + +func (obj *patternFlowPfcPausePauseClass3Counter) ToProto() (*otg.PatternFlowPfcPausePauseClass3Counter, error) { + err := obj.validateToAndFrom() + if err != nil { + return nil, err + } + return obj.Msg(), nil +} + +func (obj *patternFlowPfcPausePauseClass3Counter) FromProto(msg *otg.PatternFlowPfcPausePauseClass3Counter) (PatternFlowPfcPausePauseClass3Counter, error) { + newObj := obj.SetMsg(msg) + err := newObj.validateToAndFrom() + if err != nil { + return nil, err + } + return newObj, nil +} + +func (obj *patternFlowPfcPausePauseClass3Counter) ToPbText() (string, error) { + vErr := obj.validateToAndFrom() + if vErr != nil { + return "", vErr + } + protoMarshal, err := proto.Marshal(obj.Msg()) + if err != nil { + return "", err + } + return string(protoMarshal), nil +} + +func (obj *patternFlowPfcPausePauseClass3Counter) FromPbText(value string) error { + retObj := proto.Unmarshal([]byte(value), obj.Msg()) + if retObj != nil { + return retObj + } + + vErr := obj.validateToAndFrom() + if vErr != nil { + return vErr + } + return retObj +} + +func (obj *patternFlowPfcPausePauseClass3Counter) ToYaml() (string, error) { + vErr := obj.validateToAndFrom() + if vErr != nil { + return "", vErr + } + opts := protojson.MarshalOptions{ + UseProtoNames: true, + AllowPartial: true, + EmitUnpopulated: false, + } + data, err := opts.Marshal(obj.Msg()) + if err != nil { + return "", err + } + data, err = yaml.JSONToYAML(data) + if err != nil { + return "", err + } + return string(data), nil +} + +func (obj *patternFlowPfcPausePauseClass3Counter) FromYaml(value string) error { + if value == "" { + value = "{}" + } + data, err := yaml.YAMLToJSON([]byte(value)) + if err != nil { + return err + } + opts := protojson.UnmarshalOptions{ + AllowPartial: true, + DiscardUnknown: false, + } + uError := opts.Unmarshal([]byte(data), obj.Msg()) + if uError != nil { + return fmt.Errorf("unmarshal error %s", strings.Replace( + uError.Error(), "\u00a0", " ", -1)[7:]) + } + + vErr := obj.validateToAndFrom() + if vErr != nil { + return vErr + } + return nil +} + +func (obj *patternFlowPfcPausePauseClass3Counter) ToJson() (string, error) { + vErr := obj.validateToAndFrom() + if vErr != nil { + return "", vErr + } + opts := protojson.MarshalOptions{ + UseProtoNames: true, + AllowPartial: true, + EmitUnpopulated: false, + Indent: " ", + } + data, err := opts.Marshal(obj.Msg()) + if err != nil { + return "", err + } + return string(data), nil +} + +func (obj *patternFlowPfcPausePauseClass3Counter) FromJson(value string) error { + opts := protojson.UnmarshalOptions{ + AllowPartial: true, + DiscardUnknown: false, + } + if value == "" { + value = "{}" + } + uError := opts.Unmarshal([]byte(value), obj.Msg()) + if uError != nil { + return fmt.Errorf("unmarshal error %s", strings.Replace( + uError.Error(), "\u00a0", " ", -1)[7:]) + } + + err := obj.validateToAndFrom() + if err != nil { + return err + } + return nil +} + +func (obj *patternFlowPfcPausePauseClass3Counter) validateToAndFrom() error { + // emptyVars() + obj.validateObj(&obj.validation, true) + return obj.validationResult() +} + +func (obj *patternFlowPfcPausePauseClass3Counter) Validate() error { + // emptyVars() + obj.validateObj(&obj.validation, false) + return obj.validationResult() +} + +func (obj *patternFlowPfcPausePauseClass3Counter) String() string { + str, err := obj.ToYaml() + if err != nil { + return err.Error() + } + return str +} + +func (obj *patternFlowPfcPausePauseClass3Counter) Clone() (PatternFlowPfcPausePauseClass3Counter, error) { + vErr := obj.Validate() + if vErr != nil { + return nil, vErr + } + newObj := NewPatternFlowPfcPausePauseClass3Counter() + data, err := proto.Marshal(obj.Msg()) + if err != nil { + return nil, err + } + pbErr := proto.Unmarshal(data, newObj.Msg()) + if pbErr != nil { + return nil, pbErr + } + return newObj, nil +} + +// PatternFlowPfcPausePauseClass3Counter is integer counter pattern +type PatternFlowPfcPausePauseClass3Counter interface { + Validation + // Msg marshals PatternFlowPfcPausePauseClass3Counter to protobuf object *otg.PatternFlowPfcPausePauseClass3Counter + // and doesn't set defaults + Msg() *otg.PatternFlowPfcPausePauseClass3Counter + // SetMsg unmarshals PatternFlowPfcPausePauseClass3Counter from protobuf object *otg.PatternFlowPfcPausePauseClass3Counter + // and doesn't set defaults + SetMsg(*otg.PatternFlowPfcPausePauseClass3Counter) PatternFlowPfcPausePauseClass3Counter + // ToProto marshals PatternFlowPfcPausePauseClass3Counter to protobuf object *otg.PatternFlowPfcPausePauseClass3Counter + ToProto() (*otg.PatternFlowPfcPausePauseClass3Counter, error) + // ToPbText marshals PatternFlowPfcPausePauseClass3Counter to protobuf text + ToPbText() (string, error) + // ToYaml marshals PatternFlowPfcPausePauseClass3Counter to YAML text + ToYaml() (string, error) + // ToJson marshals PatternFlowPfcPausePauseClass3Counter to JSON text + ToJson() (string, error) + // FromProto unmarshals PatternFlowPfcPausePauseClass3Counter from protobuf object *otg.PatternFlowPfcPausePauseClass3Counter + FromProto(msg *otg.PatternFlowPfcPausePauseClass3Counter) (PatternFlowPfcPausePauseClass3Counter, error) + // FromPbText unmarshals PatternFlowPfcPausePauseClass3Counter from protobuf text + FromPbText(value string) error + // FromYaml unmarshals PatternFlowPfcPausePauseClass3Counter from YAML text + FromYaml(value string) error + // FromJson unmarshals PatternFlowPfcPausePauseClass3Counter from JSON text + FromJson(value string) error + // Validate validates PatternFlowPfcPausePauseClass3Counter + Validate() error + // A stringer function + String() string + // Clones the object + Clone() (PatternFlowPfcPausePauseClass3Counter, error) + validateToAndFrom() error + validateObj(vObj *validation, set_default bool) + setDefault() + // Start returns uint32, set in PatternFlowPfcPausePauseClass3Counter. + Start() uint32 + // SetStart assigns uint32 provided by user to PatternFlowPfcPausePauseClass3Counter + SetStart(value uint32) PatternFlowPfcPausePauseClass3Counter + // HasStart checks if Start has been set in PatternFlowPfcPausePauseClass3Counter + HasStart() bool + // Step returns uint32, set in PatternFlowPfcPausePauseClass3Counter. + Step() uint32 + // SetStep assigns uint32 provided by user to PatternFlowPfcPausePauseClass3Counter + SetStep(value uint32) PatternFlowPfcPausePauseClass3Counter + // HasStep checks if Step has been set in PatternFlowPfcPausePauseClass3Counter + HasStep() bool + // Count returns uint32, set in PatternFlowPfcPausePauseClass3Counter. + Count() uint32 + // SetCount assigns uint32 provided by user to PatternFlowPfcPausePauseClass3Counter + SetCount(value uint32) PatternFlowPfcPausePauseClass3Counter + // HasCount checks if Count has been set in PatternFlowPfcPausePauseClass3Counter + HasCount() bool +} + +// description is TBD +// Start returns a uint32 +func (obj *patternFlowPfcPausePauseClass3Counter) Start() uint32 { + + return *obj.obj.Start + +} + +// description is TBD +// Start returns a uint32 +func (obj *patternFlowPfcPausePauseClass3Counter) HasStart() bool { + return obj.obj.Start != nil +} + +// description is TBD +// SetStart sets the uint32 value in the PatternFlowPfcPausePauseClass3Counter object +func (obj *patternFlowPfcPausePauseClass3Counter) SetStart(value uint32) PatternFlowPfcPausePauseClass3Counter { + + obj.obj.Start = &value + return obj +} + +// description is TBD +// Step returns a uint32 +func (obj *patternFlowPfcPausePauseClass3Counter) Step() uint32 { + + return *obj.obj.Step + +} + +// description is TBD +// Step returns a uint32 +func (obj *patternFlowPfcPausePauseClass3Counter) HasStep() bool { + return obj.obj.Step != nil +} + +// description is TBD +// SetStep sets the uint32 value in the PatternFlowPfcPausePauseClass3Counter object +func (obj *patternFlowPfcPausePauseClass3Counter) SetStep(value uint32) PatternFlowPfcPausePauseClass3Counter { + + obj.obj.Step = &value + return obj +} + +// description is TBD +// Count returns a uint32 +func (obj *patternFlowPfcPausePauseClass3Counter) Count() uint32 { + + return *obj.obj.Count + +} + +// description is TBD +// Count returns a uint32 +func (obj *patternFlowPfcPausePauseClass3Counter) HasCount() bool { + return obj.obj.Count != nil +} + +// description is TBD +// SetCount sets the uint32 value in the PatternFlowPfcPausePauseClass3Counter object +func (obj *patternFlowPfcPausePauseClass3Counter) SetCount(value uint32) PatternFlowPfcPausePauseClass3Counter { + + obj.obj.Count = &value + return obj +} + +func (obj *patternFlowPfcPausePauseClass3Counter) validateObj(vObj *validation, set_default bool) { + if set_default { + obj.setDefault() + } + + if obj.obj.Start != nil { + + if *obj.obj.Start > 65535 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("0 <= PatternFlowPfcPausePauseClass3Counter.Start <= 65535 but Got %d", *obj.obj.Start)) + } + + } + + if obj.obj.Step != nil { + + if *obj.obj.Step > 65535 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("0 <= PatternFlowPfcPausePauseClass3Counter.Step <= 65535 but Got %d", *obj.obj.Step)) + } + + } + + if obj.obj.Count != nil { + + if *obj.obj.Count > 65535 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("0 <= PatternFlowPfcPausePauseClass3Counter.Count <= 65535 but Got %d", *obj.obj.Count)) + } + + } + +} + +func (obj *patternFlowPfcPausePauseClass3Counter) setDefault() { + if obj.obj.Start == nil { + obj.SetStart(0) + } + if obj.obj.Step == nil { + obj.SetStep(1) + } + if obj.obj.Count == nil { + obj.SetCount(1) + } + +} + +// ***** PatternFlowPfcPausePauseClass3MetricTag ***** +type patternFlowPfcPausePauseClass3MetricTag struct { + validation + obj *otg.PatternFlowPfcPausePauseClass3MetricTag +} + +func NewPatternFlowPfcPausePauseClass3MetricTag() PatternFlowPfcPausePauseClass3MetricTag { + obj := patternFlowPfcPausePauseClass3MetricTag{obj: &otg.PatternFlowPfcPausePauseClass3MetricTag{}} + obj.setDefault() + return &obj +} + +func (obj *patternFlowPfcPausePauseClass3MetricTag) Msg() *otg.PatternFlowPfcPausePauseClass3MetricTag { + return obj.obj +} + +func (obj *patternFlowPfcPausePauseClass3MetricTag) SetMsg(msg *otg.PatternFlowPfcPausePauseClass3MetricTag) PatternFlowPfcPausePauseClass3MetricTag { + + proto.Merge(obj.obj, msg) + return obj +} + +func (obj *patternFlowPfcPausePauseClass3MetricTag) ToProto() (*otg.PatternFlowPfcPausePauseClass3MetricTag, error) { + err := obj.validateToAndFrom() + if err != nil { + return nil, err + } + return obj.Msg(), nil +} + +func (obj *patternFlowPfcPausePauseClass3MetricTag) FromProto(msg *otg.PatternFlowPfcPausePauseClass3MetricTag) (PatternFlowPfcPausePauseClass3MetricTag, error) { + newObj := obj.SetMsg(msg) + err := newObj.validateToAndFrom() + if err != nil { + return nil, err + } + return newObj, nil +} + +func (obj *patternFlowPfcPausePauseClass3MetricTag) ToPbText() (string, error) { + vErr := obj.validateToAndFrom() + if vErr != nil { + return "", vErr + } + protoMarshal, err := proto.Marshal(obj.Msg()) + if err != nil { + return "", err + } + return string(protoMarshal), nil +} + +func (obj *patternFlowPfcPausePauseClass3MetricTag) FromPbText(value string) error { + retObj := proto.Unmarshal([]byte(value), obj.Msg()) + if retObj != nil { + return retObj + } + + vErr := obj.validateToAndFrom() + if vErr != nil { + return vErr + } + return retObj +} + +func (obj *patternFlowPfcPausePauseClass3MetricTag) ToYaml() (string, error) { + vErr := obj.validateToAndFrom() + if vErr != nil { + return "", vErr + } + opts := protojson.MarshalOptions{ + UseProtoNames: true, + AllowPartial: true, + EmitUnpopulated: false, + } + data, err := opts.Marshal(obj.Msg()) + if err != nil { + return "", err + } + data, err = yaml.JSONToYAML(data) + if err != nil { + return "", err + } + return string(data), nil +} + +func (obj *patternFlowPfcPausePauseClass3MetricTag) FromYaml(value string) error { + if value == "" { + value = "{}" + } + data, err := yaml.YAMLToJSON([]byte(value)) + if err != nil { + return err + } + opts := protojson.UnmarshalOptions{ + AllowPartial: true, + DiscardUnknown: false, + } + uError := opts.Unmarshal([]byte(data), obj.Msg()) + if uError != nil { + return fmt.Errorf("unmarshal error %s", strings.Replace( + uError.Error(), "\u00a0", " ", -1)[7:]) + } + + vErr := obj.validateToAndFrom() + if vErr != nil { + return vErr + } + return nil +} + +func (obj *patternFlowPfcPausePauseClass3MetricTag) ToJson() (string, error) { + vErr := obj.validateToAndFrom() + if vErr != nil { + return "", vErr + } + opts := protojson.MarshalOptions{ + UseProtoNames: true, + AllowPartial: true, + EmitUnpopulated: false, + Indent: " ", + } + data, err := opts.Marshal(obj.Msg()) + if err != nil { + return "", err + } + return string(data), nil +} + +func (obj *patternFlowPfcPausePauseClass3MetricTag) FromJson(value string) error { + opts := protojson.UnmarshalOptions{ + AllowPartial: true, + DiscardUnknown: false, + } + if value == "" { + value = "{}" + } + uError := opts.Unmarshal([]byte(value), obj.Msg()) + if uError != nil { + return fmt.Errorf("unmarshal error %s", strings.Replace( + uError.Error(), "\u00a0", " ", -1)[7:]) + } + + err := obj.validateToAndFrom() + if err != nil { + return err + } + return nil +} + +func (obj *patternFlowPfcPausePauseClass3MetricTag) validateToAndFrom() error { + // emptyVars() + obj.validateObj(&obj.validation, true) + return obj.validationResult() +} + +func (obj *patternFlowPfcPausePauseClass3MetricTag) Validate() error { + // emptyVars() + obj.validateObj(&obj.validation, false) + return obj.validationResult() +} + +func (obj *patternFlowPfcPausePauseClass3MetricTag) String() string { + str, err := obj.ToYaml() + if err != nil { + return err.Error() + } + return str +} + +func (obj *patternFlowPfcPausePauseClass3MetricTag) Clone() (PatternFlowPfcPausePauseClass3MetricTag, error) { + vErr := obj.Validate() + if vErr != nil { + return nil, vErr + } + newObj := NewPatternFlowPfcPausePauseClass3MetricTag() + data, err := proto.Marshal(obj.Msg()) + if err != nil { + return nil, err + } + pbErr := proto.Unmarshal(data, newObj.Msg()) + if pbErr != nil { + return nil, pbErr + } + return newObj, nil +} + +// PatternFlowPfcPausePauseClass3MetricTag is metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. +type PatternFlowPfcPausePauseClass3MetricTag interface { + Validation + // Msg marshals PatternFlowPfcPausePauseClass3MetricTag to protobuf object *otg.PatternFlowPfcPausePauseClass3MetricTag + // and doesn't set defaults + Msg() *otg.PatternFlowPfcPausePauseClass3MetricTag + // SetMsg unmarshals PatternFlowPfcPausePauseClass3MetricTag from protobuf object *otg.PatternFlowPfcPausePauseClass3MetricTag + // and doesn't set defaults + SetMsg(*otg.PatternFlowPfcPausePauseClass3MetricTag) PatternFlowPfcPausePauseClass3MetricTag + // ToProto marshals PatternFlowPfcPausePauseClass3MetricTag to protobuf object *otg.PatternFlowPfcPausePauseClass3MetricTag + ToProto() (*otg.PatternFlowPfcPausePauseClass3MetricTag, error) + // ToPbText marshals PatternFlowPfcPausePauseClass3MetricTag to protobuf text + ToPbText() (string, error) + // ToYaml marshals PatternFlowPfcPausePauseClass3MetricTag to YAML text + ToYaml() (string, error) + // ToJson marshals PatternFlowPfcPausePauseClass3MetricTag to JSON text + ToJson() (string, error) + // FromProto unmarshals PatternFlowPfcPausePauseClass3MetricTag from protobuf object *otg.PatternFlowPfcPausePauseClass3MetricTag + FromProto(msg *otg.PatternFlowPfcPausePauseClass3MetricTag) (PatternFlowPfcPausePauseClass3MetricTag, error) + // FromPbText unmarshals PatternFlowPfcPausePauseClass3MetricTag from protobuf text + FromPbText(value string) error + // FromYaml unmarshals PatternFlowPfcPausePauseClass3MetricTag from YAML text + FromYaml(value string) error + // FromJson unmarshals PatternFlowPfcPausePauseClass3MetricTag from JSON text + FromJson(value string) error + // Validate validates PatternFlowPfcPausePauseClass3MetricTag + Validate() error + // A stringer function + String() string + // Clones the object + Clone() (PatternFlowPfcPausePauseClass3MetricTag, error) + validateToAndFrom() error + validateObj(vObj *validation, set_default bool) + setDefault() + // Name returns string, set in PatternFlowPfcPausePauseClass3MetricTag. + Name() string + // SetName assigns string provided by user to PatternFlowPfcPausePauseClass3MetricTag + SetName(value string) PatternFlowPfcPausePauseClass3MetricTag + // Offset returns uint32, set in PatternFlowPfcPausePauseClass3MetricTag. + Offset() uint32 + // SetOffset assigns uint32 provided by user to PatternFlowPfcPausePauseClass3MetricTag + SetOffset(value uint32) PatternFlowPfcPausePauseClass3MetricTag + // HasOffset checks if Offset has been set in PatternFlowPfcPausePauseClass3MetricTag + HasOffset() bool + // Length returns uint32, set in PatternFlowPfcPausePauseClass3MetricTag. + Length() uint32 + // SetLength assigns uint32 provided by user to PatternFlowPfcPausePauseClass3MetricTag + SetLength(value uint32) PatternFlowPfcPausePauseClass3MetricTag + // HasLength checks if Length has been set in PatternFlowPfcPausePauseClass3MetricTag + HasLength() bool +} + +// Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field +// Name returns a string +func (obj *patternFlowPfcPausePauseClass3MetricTag) Name() string { + + return *obj.obj.Name + +} + +// Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field +// SetName sets the string value in the PatternFlowPfcPausePauseClass3MetricTag object +func (obj *patternFlowPfcPausePauseClass3MetricTag) SetName(value string) PatternFlowPfcPausePauseClass3MetricTag { + + obj.obj.Name = &value + return obj +} + +// Offset in bits relative to start of corresponding header field +// Offset returns a uint32 +func (obj *patternFlowPfcPausePauseClass3MetricTag) Offset() uint32 { + + return *obj.obj.Offset + +} + +// Offset in bits relative to start of corresponding header field +// Offset returns a uint32 +func (obj *patternFlowPfcPausePauseClass3MetricTag) HasOffset() bool { + return obj.obj.Offset != nil +} + +// Offset in bits relative to start of corresponding header field +// SetOffset sets the uint32 value in the PatternFlowPfcPausePauseClass3MetricTag object +func (obj *patternFlowPfcPausePauseClass3MetricTag) SetOffset(value uint32) PatternFlowPfcPausePauseClass3MetricTag { + + obj.obj.Offset = &value + return obj +} + +// Number of bits to track for metrics starting from configured offset of corresponding header field +// Length returns a uint32 +func (obj *patternFlowPfcPausePauseClass3MetricTag) Length() uint32 { + + return *obj.obj.Length + +} + +// Number of bits to track for metrics starting from configured offset of corresponding header field +// Length returns a uint32 +func (obj *patternFlowPfcPausePauseClass3MetricTag) HasLength() bool { + return obj.obj.Length != nil +} + +// Number of bits to track for metrics starting from configured offset of corresponding header field +// SetLength sets the uint32 value in the PatternFlowPfcPausePauseClass3MetricTag object +func (obj *patternFlowPfcPausePauseClass3MetricTag) SetLength(value uint32) PatternFlowPfcPausePauseClass3MetricTag { + + obj.obj.Length = &value + return obj +} + +func (obj *patternFlowPfcPausePauseClass3MetricTag) validateObj(vObj *validation, set_default bool) { + if set_default { + obj.setDefault() + } + + // Name is required + if obj.obj.Name == nil { + vObj.validationErrors = append(vObj.validationErrors, "Name is required field on interface PatternFlowPfcPausePauseClass3MetricTag") + } + + if obj.obj.Offset != nil { + + if *obj.obj.Offset > 15 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("0 <= PatternFlowPfcPausePauseClass3MetricTag.Offset <= 15 but Got %d", *obj.obj.Offset)) + } + + } + + if obj.obj.Length != nil { + + if *obj.obj.Length < 1 || *obj.obj.Length > 16 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("1 <= PatternFlowPfcPausePauseClass3MetricTag.Length <= 16 but Got %d", *obj.obj.Length)) + } + + } + +} + +func (obj *patternFlowPfcPausePauseClass3MetricTag) setDefault() { + if obj.obj.Offset == nil { + obj.SetOffset(0) + } + if obj.obj.Length == nil { + obj.SetLength(16) + } + +} + +// ***** PatternFlowPfcPausePauseClass4Counter ***** +type patternFlowPfcPausePauseClass4Counter struct { + validation + obj *otg.PatternFlowPfcPausePauseClass4Counter +} + +func NewPatternFlowPfcPausePauseClass4Counter() PatternFlowPfcPausePauseClass4Counter { + obj := patternFlowPfcPausePauseClass4Counter{obj: &otg.PatternFlowPfcPausePauseClass4Counter{}} + obj.setDefault() + return &obj +} + +func (obj *patternFlowPfcPausePauseClass4Counter) Msg() *otg.PatternFlowPfcPausePauseClass4Counter { + return obj.obj +} + +func (obj *patternFlowPfcPausePauseClass4Counter) SetMsg(msg *otg.PatternFlowPfcPausePauseClass4Counter) PatternFlowPfcPausePauseClass4Counter { + + proto.Merge(obj.obj, msg) + return obj +} + +func (obj *patternFlowPfcPausePauseClass4Counter) ToProto() (*otg.PatternFlowPfcPausePauseClass4Counter, error) { + err := obj.validateToAndFrom() + if err != nil { + return nil, err + } + return obj.Msg(), nil +} + +func (obj *patternFlowPfcPausePauseClass4Counter) FromProto(msg *otg.PatternFlowPfcPausePauseClass4Counter) (PatternFlowPfcPausePauseClass4Counter, error) { + newObj := obj.SetMsg(msg) + err := newObj.validateToAndFrom() + if err != nil { + return nil, err + } + return newObj, nil +} + +func (obj *patternFlowPfcPausePauseClass4Counter) ToPbText() (string, error) { + vErr := obj.validateToAndFrom() + if vErr != nil { + return "", vErr + } + protoMarshal, err := proto.Marshal(obj.Msg()) + if err != nil { + return "", err + } + return string(protoMarshal), nil +} + +func (obj *patternFlowPfcPausePauseClass4Counter) FromPbText(value string) error { + retObj := proto.Unmarshal([]byte(value), obj.Msg()) + if retObj != nil { + return retObj + } + + vErr := obj.validateToAndFrom() + if vErr != nil { + return vErr + } + return retObj +} + +func (obj *patternFlowPfcPausePauseClass4Counter) ToYaml() (string, error) { + vErr := obj.validateToAndFrom() + if vErr != nil { + return "", vErr + } + opts := protojson.MarshalOptions{ + UseProtoNames: true, + AllowPartial: true, + EmitUnpopulated: false, + } + data, err := opts.Marshal(obj.Msg()) + if err != nil { + return "", err + } + data, err = yaml.JSONToYAML(data) + if err != nil { + return "", err + } + return string(data), nil +} + +func (obj *patternFlowPfcPausePauseClass4Counter) FromYaml(value string) error { + if value == "" { + value = "{}" + } + data, err := yaml.YAMLToJSON([]byte(value)) + if err != nil { + return err + } + opts := protojson.UnmarshalOptions{ + AllowPartial: true, + DiscardUnknown: false, + } + uError := opts.Unmarshal([]byte(data), obj.Msg()) + if uError != nil { + return fmt.Errorf("unmarshal error %s", strings.Replace( + uError.Error(), "\u00a0", " ", -1)[7:]) + } + + vErr := obj.validateToAndFrom() + if vErr != nil { + return vErr + } + return nil +} + +func (obj *patternFlowPfcPausePauseClass4Counter) ToJson() (string, error) { + vErr := obj.validateToAndFrom() + if vErr != nil { + return "", vErr + } + opts := protojson.MarshalOptions{ + UseProtoNames: true, + AllowPartial: true, + EmitUnpopulated: false, + Indent: " ", + } + data, err := opts.Marshal(obj.Msg()) + if err != nil { + return "", err + } + return string(data), nil +} + +func (obj *patternFlowPfcPausePauseClass4Counter) FromJson(value string) error { + opts := protojson.UnmarshalOptions{ + AllowPartial: true, + DiscardUnknown: false, + } + if value == "" { + value = "{}" + } + uError := opts.Unmarshal([]byte(value), obj.Msg()) + if uError != nil { + return fmt.Errorf("unmarshal error %s", strings.Replace( + uError.Error(), "\u00a0", " ", -1)[7:]) + } + + err := obj.validateToAndFrom() + if err != nil { + return err + } + return nil +} + +func (obj *patternFlowPfcPausePauseClass4Counter) validateToAndFrom() error { + // emptyVars() + obj.validateObj(&obj.validation, true) + return obj.validationResult() +} + +func (obj *patternFlowPfcPausePauseClass4Counter) Validate() error { + // emptyVars() + obj.validateObj(&obj.validation, false) + return obj.validationResult() +} + +func (obj *patternFlowPfcPausePauseClass4Counter) String() string { + str, err := obj.ToYaml() + if err != nil { + return err.Error() + } + return str +} + +func (obj *patternFlowPfcPausePauseClass4Counter) Clone() (PatternFlowPfcPausePauseClass4Counter, error) { + vErr := obj.Validate() + if vErr != nil { + return nil, vErr + } + newObj := NewPatternFlowPfcPausePauseClass4Counter() + data, err := proto.Marshal(obj.Msg()) + if err != nil { + return nil, err + } + pbErr := proto.Unmarshal(data, newObj.Msg()) + if pbErr != nil { + return nil, pbErr + } + return newObj, nil +} + +// PatternFlowPfcPausePauseClass4Counter is integer counter pattern +type PatternFlowPfcPausePauseClass4Counter interface { + Validation + // Msg marshals PatternFlowPfcPausePauseClass4Counter to protobuf object *otg.PatternFlowPfcPausePauseClass4Counter + // and doesn't set defaults + Msg() *otg.PatternFlowPfcPausePauseClass4Counter + // SetMsg unmarshals PatternFlowPfcPausePauseClass4Counter from protobuf object *otg.PatternFlowPfcPausePauseClass4Counter + // and doesn't set defaults + SetMsg(*otg.PatternFlowPfcPausePauseClass4Counter) PatternFlowPfcPausePauseClass4Counter + // ToProto marshals PatternFlowPfcPausePauseClass4Counter to protobuf object *otg.PatternFlowPfcPausePauseClass4Counter + ToProto() (*otg.PatternFlowPfcPausePauseClass4Counter, error) + // ToPbText marshals PatternFlowPfcPausePauseClass4Counter to protobuf text + ToPbText() (string, error) + // ToYaml marshals PatternFlowPfcPausePauseClass4Counter to YAML text + ToYaml() (string, error) + // ToJson marshals PatternFlowPfcPausePauseClass4Counter to JSON text + ToJson() (string, error) + // FromProto unmarshals PatternFlowPfcPausePauseClass4Counter from protobuf object *otg.PatternFlowPfcPausePauseClass4Counter + FromProto(msg *otg.PatternFlowPfcPausePauseClass4Counter) (PatternFlowPfcPausePauseClass4Counter, error) + // FromPbText unmarshals PatternFlowPfcPausePauseClass4Counter from protobuf text + FromPbText(value string) error + // FromYaml unmarshals PatternFlowPfcPausePauseClass4Counter from YAML text + FromYaml(value string) error + // FromJson unmarshals PatternFlowPfcPausePauseClass4Counter from JSON text + FromJson(value string) error + // Validate validates PatternFlowPfcPausePauseClass4Counter + Validate() error + // A stringer function + String() string + // Clones the object + Clone() (PatternFlowPfcPausePauseClass4Counter, error) + validateToAndFrom() error + validateObj(vObj *validation, set_default bool) + setDefault() + // Start returns uint32, set in PatternFlowPfcPausePauseClass4Counter. + Start() uint32 + // SetStart assigns uint32 provided by user to PatternFlowPfcPausePauseClass4Counter + SetStart(value uint32) PatternFlowPfcPausePauseClass4Counter + // HasStart checks if Start has been set in PatternFlowPfcPausePauseClass4Counter + HasStart() bool + // Step returns uint32, set in PatternFlowPfcPausePauseClass4Counter. + Step() uint32 + // SetStep assigns uint32 provided by user to PatternFlowPfcPausePauseClass4Counter + SetStep(value uint32) PatternFlowPfcPausePauseClass4Counter + // HasStep checks if Step has been set in PatternFlowPfcPausePauseClass4Counter + HasStep() bool + // Count returns uint32, set in PatternFlowPfcPausePauseClass4Counter. + Count() uint32 + // SetCount assigns uint32 provided by user to PatternFlowPfcPausePauseClass4Counter + SetCount(value uint32) PatternFlowPfcPausePauseClass4Counter + // HasCount checks if Count has been set in PatternFlowPfcPausePauseClass4Counter + HasCount() bool +} + +// description is TBD +// Start returns a uint32 +func (obj *patternFlowPfcPausePauseClass4Counter) Start() uint32 { + + return *obj.obj.Start + +} + +// description is TBD +// Start returns a uint32 +func (obj *patternFlowPfcPausePauseClass4Counter) HasStart() bool { + return obj.obj.Start != nil +} + +// description is TBD +// SetStart sets the uint32 value in the PatternFlowPfcPausePauseClass4Counter object +func (obj *patternFlowPfcPausePauseClass4Counter) SetStart(value uint32) PatternFlowPfcPausePauseClass4Counter { + + obj.obj.Start = &value + return obj +} + +// description is TBD +// Step returns a uint32 +func (obj *patternFlowPfcPausePauseClass4Counter) Step() uint32 { + + return *obj.obj.Step + +} + +// description is TBD +// Step returns a uint32 +func (obj *patternFlowPfcPausePauseClass4Counter) HasStep() bool { + return obj.obj.Step != nil +} + +// description is TBD +// SetStep sets the uint32 value in the PatternFlowPfcPausePauseClass4Counter object +func (obj *patternFlowPfcPausePauseClass4Counter) SetStep(value uint32) PatternFlowPfcPausePauseClass4Counter { + + obj.obj.Step = &value + return obj +} + +// description is TBD +// Count returns a uint32 +func (obj *patternFlowPfcPausePauseClass4Counter) Count() uint32 { + + return *obj.obj.Count + +} + +// description is TBD +// Count returns a uint32 +func (obj *patternFlowPfcPausePauseClass4Counter) HasCount() bool { + return obj.obj.Count != nil +} + +// description is TBD +// SetCount sets the uint32 value in the PatternFlowPfcPausePauseClass4Counter object +func (obj *patternFlowPfcPausePauseClass4Counter) SetCount(value uint32) PatternFlowPfcPausePauseClass4Counter { + + obj.obj.Count = &value + return obj +} + +func (obj *patternFlowPfcPausePauseClass4Counter) validateObj(vObj *validation, set_default bool) { + if set_default { + obj.setDefault() + } + + if obj.obj.Start != nil { + + if *obj.obj.Start > 65535 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("0 <= PatternFlowPfcPausePauseClass4Counter.Start <= 65535 but Got %d", *obj.obj.Start)) + } + + } + + if obj.obj.Step != nil { + + if *obj.obj.Step > 65535 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("0 <= PatternFlowPfcPausePauseClass4Counter.Step <= 65535 but Got %d", *obj.obj.Step)) + } + + } + + if obj.obj.Count != nil { + + if *obj.obj.Count > 65535 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("0 <= PatternFlowPfcPausePauseClass4Counter.Count <= 65535 but Got %d", *obj.obj.Count)) + } + + } + +} + +func (obj *patternFlowPfcPausePauseClass4Counter) setDefault() { + if obj.obj.Start == nil { + obj.SetStart(0) + } + if obj.obj.Step == nil { + obj.SetStep(1) + } + if obj.obj.Count == nil { + obj.SetCount(1) + } + +} + +// ***** PatternFlowPfcPausePauseClass4MetricTag ***** +type patternFlowPfcPausePauseClass4MetricTag struct { + validation + obj *otg.PatternFlowPfcPausePauseClass4MetricTag +} + +func NewPatternFlowPfcPausePauseClass4MetricTag() PatternFlowPfcPausePauseClass4MetricTag { + obj := patternFlowPfcPausePauseClass4MetricTag{obj: &otg.PatternFlowPfcPausePauseClass4MetricTag{}} + obj.setDefault() + return &obj +} + +func (obj *patternFlowPfcPausePauseClass4MetricTag) Msg() *otg.PatternFlowPfcPausePauseClass4MetricTag { + return obj.obj +} + +func (obj *patternFlowPfcPausePauseClass4MetricTag) SetMsg(msg *otg.PatternFlowPfcPausePauseClass4MetricTag) PatternFlowPfcPausePauseClass4MetricTag { + + proto.Merge(obj.obj, msg) + return obj +} + +func (obj *patternFlowPfcPausePauseClass4MetricTag) ToProto() (*otg.PatternFlowPfcPausePauseClass4MetricTag, error) { + err := obj.validateToAndFrom() + if err != nil { + return nil, err + } + return obj.Msg(), nil +} + +func (obj *patternFlowPfcPausePauseClass4MetricTag) FromProto(msg *otg.PatternFlowPfcPausePauseClass4MetricTag) (PatternFlowPfcPausePauseClass4MetricTag, error) { + newObj := obj.SetMsg(msg) + err := newObj.validateToAndFrom() + if err != nil { + return nil, err + } + return newObj, nil +} + +func (obj *patternFlowPfcPausePauseClass4MetricTag) ToPbText() (string, error) { + vErr := obj.validateToAndFrom() + if vErr != nil { + return "", vErr + } + protoMarshal, err := proto.Marshal(obj.Msg()) + if err != nil { + return "", err + } + return string(protoMarshal), nil +} + +func (obj *patternFlowPfcPausePauseClass4MetricTag) FromPbText(value string) error { + retObj := proto.Unmarshal([]byte(value), obj.Msg()) + if retObj != nil { + return retObj + } + + vErr := obj.validateToAndFrom() + if vErr != nil { + return vErr + } + return retObj +} + +func (obj *patternFlowPfcPausePauseClass4MetricTag) ToYaml() (string, error) { + vErr := obj.validateToAndFrom() + if vErr != nil { + return "", vErr + } + opts := protojson.MarshalOptions{ + UseProtoNames: true, + AllowPartial: true, + EmitUnpopulated: false, + } + data, err := opts.Marshal(obj.Msg()) + if err != nil { + return "", err + } + data, err = yaml.JSONToYAML(data) + if err != nil { + return "", err + } + return string(data), nil +} + +func (obj *patternFlowPfcPausePauseClass4MetricTag) FromYaml(value string) error { + if value == "" { + value = "{}" + } + data, err := yaml.YAMLToJSON([]byte(value)) + if err != nil { + return err + } + opts := protojson.UnmarshalOptions{ + AllowPartial: true, + DiscardUnknown: false, + } + uError := opts.Unmarshal([]byte(data), obj.Msg()) + if uError != nil { + return fmt.Errorf("unmarshal error %s", strings.Replace( + uError.Error(), "\u00a0", " ", -1)[7:]) + } + + vErr := obj.validateToAndFrom() + if vErr != nil { + return vErr + } + return nil +} + +func (obj *patternFlowPfcPausePauseClass4MetricTag) ToJson() (string, error) { + vErr := obj.validateToAndFrom() + if vErr != nil { + return "", vErr + } + opts := protojson.MarshalOptions{ + UseProtoNames: true, + AllowPartial: true, + EmitUnpopulated: false, + Indent: " ", + } + data, err := opts.Marshal(obj.Msg()) + if err != nil { + return "", err + } + return string(data), nil +} + +func (obj *patternFlowPfcPausePauseClass4MetricTag) FromJson(value string) error { + opts := protojson.UnmarshalOptions{ + AllowPartial: true, + DiscardUnknown: false, + } + if value == "" { + value = "{}" + } + uError := opts.Unmarshal([]byte(value), obj.Msg()) + if uError != nil { + return fmt.Errorf("unmarshal error %s", strings.Replace( + uError.Error(), "\u00a0", " ", -1)[7:]) + } + + err := obj.validateToAndFrom() + if err != nil { + return err + } + return nil +} + +func (obj *patternFlowPfcPausePauseClass4MetricTag) validateToAndFrom() error { + // emptyVars() + obj.validateObj(&obj.validation, true) + return obj.validationResult() +} + +func (obj *patternFlowPfcPausePauseClass4MetricTag) Validate() error { + // emptyVars() + obj.validateObj(&obj.validation, false) + return obj.validationResult() +} + +func (obj *patternFlowPfcPausePauseClass4MetricTag) String() string { + str, err := obj.ToYaml() + if err != nil { + return err.Error() + } + return str +} + +func (obj *patternFlowPfcPausePauseClass4MetricTag) Clone() (PatternFlowPfcPausePauseClass4MetricTag, error) { + vErr := obj.Validate() + if vErr != nil { + return nil, vErr + } + newObj := NewPatternFlowPfcPausePauseClass4MetricTag() + data, err := proto.Marshal(obj.Msg()) + if err != nil { + return nil, err + } + pbErr := proto.Unmarshal(data, newObj.Msg()) + if pbErr != nil { + return nil, pbErr + } + return newObj, nil +} + +// PatternFlowPfcPausePauseClass4MetricTag is metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. +type PatternFlowPfcPausePauseClass4MetricTag interface { + Validation + // Msg marshals PatternFlowPfcPausePauseClass4MetricTag to protobuf object *otg.PatternFlowPfcPausePauseClass4MetricTag + // and doesn't set defaults + Msg() *otg.PatternFlowPfcPausePauseClass4MetricTag + // SetMsg unmarshals PatternFlowPfcPausePauseClass4MetricTag from protobuf object *otg.PatternFlowPfcPausePauseClass4MetricTag + // and doesn't set defaults + SetMsg(*otg.PatternFlowPfcPausePauseClass4MetricTag) PatternFlowPfcPausePauseClass4MetricTag + // ToProto marshals PatternFlowPfcPausePauseClass4MetricTag to protobuf object *otg.PatternFlowPfcPausePauseClass4MetricTag + ToProto() (*otg.PatternFlowPfcPausePauseClass4MetricTag, error) + // ToPbText marshals PatternFlowPfcPausePauseClass4MetricTag to protobuf text + ToPbText() (string, error) + // ToYaml marshals PatternFlowPfcPausePauseClass4MetricTag to YAML text + ToYaml() (string, error) + // ToJson marshals PatternFlowPfcPausePauseClass4MetricTag to JSON text + ToJson() (string, error) + // FromProto unmarshals PatternFlowPfcPausePauseClass4MetricTag from protobuf object *otg.PatternFlowPfcPausePauseClass4MetricTag + FromProto(msg *otg.PatternFlowPfcPausePauseClass4MetricTag) (PatternFlowPfcPausePauseClass4MetricTag, error) + // FromPbText unmarshals PatternFlowPfcPausePauseClass4MetricTag from protobuf text + FromPbText(value string) error + // FromYaml unmarshals PatternFlowPfcPausePauseClass4MetricTag from YAML text + FromYaml(value string) error + // FromJson unmarshals PatternFlowPfcPausePauseClass4MetricTag from JSON text + FromJson(value string) error + // Validate validates PatternFlowPfcPausePauseClass4MetricTag + Validate() error + // A stringer function + String() string + // Clones the object + Clone() (PatternFlowPfcPausePauseClass4MetricTag, error) + validateToAndFrom() error + validateObj(vObj *validation, set_default bool) + setDefault() + // Name returns string, set in PatternFlowPfcPausePauseClass4MetricTag. + Name() string + // SetName assigns string provided by user to PatternFlowPfcPausePauseClass4MetricTag + SetName(value string) PatternFlowPfcPausePauseClass4MetricTag + // Offset returns uint32, set in PatternFlowPfcPausePauseClass4MetricTag. + Offset() uint32 + // SetOffset assigns uint32 provided by user to PatternFlowPfcPausePauseClass4MetricTag + SetOffset(value uint32) PatternFlowPfcPausePauseClass4MetricTag + // HasOffset checks if Offset has been set in PatternFlowPfcPausePauseClass4MetricTag + HasOffset() bool + // Length returns uint32, set in PatternFlowPfcPausePauseClass4MetricTag. + Length() uint32 + // SetLength assigns uint32 provided by user to PatternFlowPfcPausePauseClass4MetricTag + SetLength(value uint32) PatternFlowPfcPausePauseClass4MetricTag + // HasLength checks if Length has been set in PatternFlowPfcPausePauseClass4MetricTag + HasLength() bool +} + +// Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field +// Name returns a string +func (obj *patternFlowPfcPausePauseClass4MetricTag) Name() string { + + return *obj.obj.Name + +} + +// Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field +// SetName sets the string value in the PatternFlowPfcPausePauseClass4MetricTag object +func (obj *patternFlowPfcPausePauseClass4MetricTag) SetName(value string) PatternFlowPfcPausePauseClass4MetricTag { + + obj.obj.Name = &value + return obj +} + +// Offset in bits relative to start of corresponding header field +// Offset returns a uint32 +func (obj *patternFlowPfcPausePauseClass4MetricTag) Offset() uint32 { + + return *obj.obj.Offset + +} + +// Offset in bits relative to start of corresponding header field +// Offset returns a uint32 +func (obj *patternFlowPfcPausePauseClass4MetricTag) HasOffset() bool { + return obj.obj.Offset != nil +} + +// Offset in bits relative to start of corresponding header field +// SetOffset sets the uint32 value in the PatternFlowPfcPausePauseClass4MetricTag object +func (obj *patternFlowPfcPausePauseClass4MetricTag) SetOffset(value uint32) PatternFlowPfcPausePauseClass4MetricTag { + + obj.obj.Offset = &value + return obj +} + +// Number of bits to track for metrics starting from configured offset of corresponding header field +// Length returns a uint32 +func (obj *patternFlowPfcPausePauseClass4MetricTag) Length() uint32 { + + return *obj.obj.Length + +} + +// Number of bits to track for metrics starting from configured offset of corresponding header field +// Length returns a uint32 +func (obj *patternFlowPfcPausePauseClass4MetricTag) HasLength() bool { + return obj.obj.Length != nil +} + +// Number of bits to track for metrics starting from configured offset of corresponding header field +// SetLength sets the uint32 value in the PatternFlowPfcPausePauseClass4MetricTag object +func (obj *patternFlowPfcPausePauseClass4MetricTag) SetLength(value uint32) PatternFlowPfcPausePauseClass4MetricTag { + + obj.obj.Length = &value + return obj +} + +func (obj *patternFlowPfcPausePauseClass4MetricTag) validateObj(vObj *validation, set_default bool) { + if set_default { + obj.setDefault() + } + + // Name is required + if obj.obj.Name == nil { + vObj.validationErrors = append(vObj.validationErrors, "Name is required field on interface PatternFlowPfcPausePauseClass4MetricTag") + } + + if obj.obj.Offset != nil { + + if *obj.obj.Offset > 15 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("0 <= PatternFlowPfcPausePauseClass4MetricTag.Offset <= 15 but Got %d", *obj.obj.Offset)) + } + + } + + if obj.obj.Length != nil { + + if *obj.obj.Length < 1 || *obj.obj.Length > 16 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("1 <= PatternFlowPfcPausePauseClass4MetricTag.Length <= 16 but Got %d", *obj.obj.Length)) + } + + } + +} + +func (obj *patternFlowPfcPausePauseClass4MetricTag) setDefault() { + if obj.obj.Offset == nil { + obj.SetOffset(0) + } + if obj.obj.Length == nil { + obj.SetLength(16) + } + +} + +// ***** PatternFlowPfcPausePauseClass5Counter ***** +type patternFlowPfcPausePauseClass5Counter struct { + validation + obj *otg.PatternFlowPfcPausePauseClass5Counter +} + +func NewPatternFlowPfcPausePauseClass5Counter() PatternFlowPfcPausePauseClass5Counter { + obj := patternFlowPfcPausePauseClass5Counter{obj: &otg.PatternFlowPfcPausePauseClass5Counter{}} + obj.setDefault() + return &obj +} + +func (obj *patternFlowPfcPausePauseClass5Counter) Msg() *otg.PatternFlowPfcPausePauseClass5Counter { + return obj.obj +} + +func (obj *patternFlowPfcPausePauseClass5Counter) SetMsg(msg *otg.PatternFlowPfcPausePauseClass5Counter) PatternFlowPfcPausePauseClass5Counter { + + proto.Merge(obj.obj, msg) + return obj +} + +func (obj *patternFlowPfcPausePauseClass5Counter) ToProto() (*otg.PatternFlowPfcPausePauseClass5Counter, error) { + err := obj.validateToAndFrom() + if err != nil { + return nil, err + } + return obj.Msg(), nil +} + +func (obj *patternFlowPfcPausePauseClass5Counter) FromProto(msg *otg.PatternFlowPfcPausePauseClass5Counter) (PatternFlowPfcPausePauseClass5Counter, error) { + newObj := obj.SetMsg(msg) + err := newObj.validateToAndFrom() + if err != nil { + return nil, err + } + return newObj, nil +} + +func (obj *patternFlowPfcPausePauseClass5Counter) ToPbText() (string, error) { + vErr := obj.validateToAndFrom() + if vErr != nil { + return "", vErr + } + protoMarshal, err := proto.Marshal(obj.Msg()) + if err != nil { + return "", err + } + return string(protoMarshal), nil +} + +func (obj *patternFlowPfcPausePauseClass5Counter) FromPbText(value string) error { + retObj := proto.Unmarshal([]byte(value), obj.Msg()) + if retObj != nil { + return retObj + } + + vErr := obj.validateToAndFrom() + if vErr != nil { + return vErr + } + return retObj +} + +func (obj *patternFlowPfcPausePauseClass5Counter) ToYaml() (string, error) { + vErr := obj.validateToAndFrom() + if vErr != nil { + return "", vErr + } + opts := protojson.MarshalOptions{ + UseProtoNames: true, + AllowPartial: true, + EmitUnpopulated: false, + } + data, err := opts.Marshal(obj.Msg()) + if err != nil { + return "", err + } + data, err = yaml.JSONToYAML(data) + if err != nil { + return "", err + } + return string(data), nil +} + +func (obj *patternFlowPfcPausePauseClass5Counter) FromYaml(value string) error { + if value == "" { + value = "{}" + } + data, err := yaml.YAMLToJSON([]byte(value)) + if err != nil { + return err + } + opts := protojson.UnmarshalOptions{ + AllowPartial: true, + DiscardUnknown: false, + } + uError := opts.Unmarshal([]byte(data), obj.Msg()) + if uError != nil { + return fmt.Errorf("unmarshal error %s", strings.Replace( + uError.Error(), "\u00a0", " ", -1)[7:]) + } + + vErr := obj.validateToAndFrom() + if vErr != nil { + return vErr + } + return nil +} + +func (obj *patternFlowPfcPausePauseClass5Counter) ToJson() (string, error) { + vErr := obj.validateToAndFrom() + if vErr != nil { + return "", vErr + } + opts := protojson.MarshalOptions{ + UseProtoNames: true, + AllowPartial: true, + EmitUnpopulated: false, + Indent: " ", + } + data, err := opts.Marshal(obj.Msg()) + if err != nil { + return "", err + } + return string(data), nil +} + +func (obj *patternFlowPfcPausePauseClass5Counter) FromJson(value string) error { + opts := protojson.UnmarshalOptions{ + AllowPartial: true, + DiscardUnknown: false, + } + if value == "" { + value = "{}" + } + uError := opts.Unmarshal([]byte(value), obj.Msg()) + if uError != nil { + return fmt.Errorf("unmarshal error %s", strings.Replace( + uError.Error(), "\u00a0", " ", -1)[7:]) + } + + err := obj.validateToAndFrom() + if err != nil { + return err + } + return nil +} + +func (obj *patternFlowPfcPausePauseClass5Counter) validateToAndFrom() error { + // emptyVars() + obj.validateObj(&obj.validation, true) + return obj.validationResult() +} + +func (obj *patternFlowPfcPausePauseClass5Counter) Validate() error { + // emptyVars() + obj.validateObj(&obj.validation, false) + return obj.validationResult() +} + +func (obj *patternFlowPfcPausePauseClass5Counter) String() string { + str, err := obj.ToYaml() + if err != nil { + return err.Error() + } + return str +} + +func (obj *patternFlowPfcPausePauseClass5Counter) Clone() (PatternFlowPfcPausePauseClass5Counter, error) { + vErr := obj.Validate() + if vErr != nil { + return nil, vErr + } + newObj := NewPatternFlowPfcPausePauseClass5Counter() + data, err := proto.Marshal(obj.Msg()) + if err != nil { + return nil, err + } + pbErr := proto.Unmarshal(data, newObj.Msg()) + if pbErr != nil { + return nil, pbErr + } + return newObj, nil +} + +// PatternFlowPfcPausePauseClass5Counter is integer counter pattern +type PatternFlowPfcPausePauseClass5Counter interface { + Validation + // Msg marshals PatternFlowPfcPausePauseClass5Counter to protobuf object *otg.PatternFlowPfcPausePauseClass5Counter + // and doesn't set defaults + Msg() *otg.PatternFlowPfcPausePauseClass5Counter + // SetMsg unmarshals PatternFlowPfcPausePauseClass5Counter from protobuf object *otg.PatternFlowPfcPausePauseClass5Counter + // and doesn't set defaults + SetMsg(*otg.PatternFlowPfcPausePauseClass5Counter) PatternFlowPfcPausePauseClass5Counter + // ToProto marshals PatternFlowPfcPausePauseClass5Counter to protobuf object *otg.PatternFlowPfcPausePauseClass5Counter + ToProto() (*otg.PatternFlowPfcPausePauseClass5Counter, error) + // ToPbText marshals PatternFlowPfcPausePauseClass5Counter to protobuf text + ToPbText() (string, error) + // ToYaml marshals PatternFlowPfcPausePauseClass5Counter to YAML text + ToYaml() (string, error) + // ToJson marshals PatternFlowPfcPausePauseClass5Counter to JSON text + ToJson() (string, error) + // FromProto unmarshals PatternFlowPfcPausePauseClass5Counter from protobuf object *otg.PatternFlowPfcPausePauseClass5Counter + FromProto(msg *otg.PatternFlowPfcPausePauseClass5Counter) (PatternFlowPfcPausePauseClass5Counter, error) + // FromPbText unmarshals PatternFlowPfcPausePauseClass5Counter from protobuf text + FromPbText(value string) error + // FromYaml unmarshals PatternFlowPfcPausePauseClass5Counter from YAML text + FromYaml(value string) error + // FromJson unmarshals PatternFlowPfcPausePauseClass5Counter from JSON text + FromJson(value string) error + // Validate validates PatternFlowPfcPausePauseClass5Counter + Validate() error + // A stringer function + String() string + // Clones the object + Clone() (PatternFlowPfcPausePauseClass5Counter, error) + validateToAndFrom() error + validateObj(vObj *validation, set_default bool) + setDefault() + // Start returns uint32, set in PatternFlowPfcPausePauseClass5Counter. + Start() uint32 + // SetStart assigns uint32 provided by user to PatternFlowPfcPausePauseClass5Counter + SetStart(value uint32) PatternFlowPfcPausePauseClass5Counter + // HasStart checks if Start has been set in PatternFlowPfcPausePauseClass5Counter + HasStart() bool + // Step returns uint32, set in PatternFlowPfcPausePauseClass5Counter. + Step() uint32 + // SetStep assigns uint32 provided by user to PatternFlowPfcPausePauseClass5Counter + SetStep(value uint32) PatternFlowPfcPausePauseClass5Counter + // HasStep checks if Step has been set in PatternFlowPfcPausePauseClass5Counter + HasStep() bool + // Count returns uint32, set in PatternFlowPfcPausePauseClass5Counter. + Count() uint32 + // SetCount assigns uint32 provided by user to PatternFlowPfcPausePauseClass5Counter + SetCount(value uint32) PatternFlowPfcPausePauseClass5Counter + // HasCount checks if Count has been set in PatternFlowPfcPausePauseClass5Counter + HasCount() bool +} + +// description is TBD +// Start returns a uint32 +func (obj *patternFlowPfcPausePauseClass5Counter) Start() uint32 { + + return *obj.obj.Start + +} + +// description is TBD +// Start returns a uint32 +func (obj *patternFlowPfcPausePauseClass5Counter) HasStart() bool { + return obj.obj.Start != nil +} + +// description is TBD +// SetStart sets the uint32 value in the PatternFlowPfcPausePauseClass5Counter object +func (obj *patternFlowPfcPausePauseClass5Counter) SetStart(value uint32) PatternFlowPfcPausePauseClass5Counter { + + obj.obj.Start = &value + return obj +} + +// description is TBD +// Step returns a uint32 +func (obj *patternFlowPfcPausePauseClass5Counter) Step() uint32 { + + return *obj.obj.Step + +} + +// description is TBD +// Step returns a uint32 +func (obj *patternFlowPfcPausePauseClass5Counter) HasStep() bool { + return obj.obj.Step != nil +} + +// description is TBD +// SetStep sets the uint32 value in the PatternFlowPfcPausePauseClass5Counter object +func (obj *patternFlowPfcPausePauseClass5Counter) SetStep(value uint32) PatternFlowPfcPausePauseClass5Counter { + + obj.obj.Step = &value + return obj +} + +// description is TBD +// Count returns a uint32 +func (obj *patternFlowPfcPausePauseClass5Counter) Count() uint32 { + + return *obj.obj.Count + +} + +// description is TBD +// Count returns a uint32 +func (obj *patternFlowPfcPausePauseClass5Counter) HasCount() bool { + return obj.obj.Count != nil +} + +// description is TBD +// SetCount sets the uint32 value in the PatternFlowPfcPausePauseClass5Counter object +func (obj *patternFlowPfcPausePauseClass5Counter) SetCount(value uint32) PatternFlowPfcPausePauseClass5Counter { + + obj.obj.Count = &value + return obj +} + +func (obj *patternFlowPfcPausePauseClass5Counter) validateObj(vObj *validation, set_default bool) { + if set_default { + obj.setDefault() + } + + if obj.obj.Start != nil { + + if *obj.obj.Start > 65535 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("0 <= PatternFlowPfcPausePauseClass5Counter.Start <= 65535 but Got %d", *obj.obj.Start)) + } + + } + + if obj.obj.Step != nil { + + if *obj.obj.Step > 65535 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("0 <= PatternFlowPfcPausePauseClass5Counter.Step <= 65535 but Got %d", *obj.obj.Step)) + } + + } + + if obj.obj.Count != nil { + + if *obj.obj.Count > 65535 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("0 <= PatternFlowPfcPausePauseClass5Counter.Count <= 65535 but Got %d", *obj.obj.Count)) + } + + } + +} + +func (obj *patternFlowPfcPausePauseClass5Counter) setDefault() { + if obj.obj.Start == nil { + obj.SetStart(0) + } + if obj.obj.Step == nil { + obj.SetStep(1) + } + if obj.obj.Count == nil { + obj.SetCount(1) + } + +} + +// ***** PatternFlowPfcPausePauseClass5MetricTag ***** +type patternFlowPfcPausePauseClass5MetricTag struct { + validation + obj *otg.PatternFlowPfcPausePauseClass5MetricTag +} + +func NewPatternFlowPfcPausePauseClass5MetricTag() PatternFlowPfcPausePauseClass5MetricTag { + obj := patternFlowPfcPausePauseClass5MetricTag{obj: &otg.PatternFlowPfcPausePauseClass5MetricTag{}} + obj.setDefault() + return &obj +} + +func (obj *patternFlowPfcPausePauseClass5MetricTag) Msg() *otg.PatternFlowPfcPausePauseClass5MetricTag { + return obj.obj +} + +func (obj *patternFlowPfcPausePauseClass5MetricTag) SetMsg(msg *otg.PatternFlowPfcPausePauseClass5MetricTag) PatternFlowPfcPausePauseClass5MetricTag { + + proto.Merge(obj.obj, msg) + return obj +} + +func (obj *patternFlowPfcPausePauseClass5MetricTag) ToProto() (*otg.PatternFlowPfcPausePauseClass5MetricTag, error) { + err := obj.validateToAndFrom() + if err != nil { + return nil, err + } + return obj.Msg(), nil +} + +func (obj *patternFlowPfcPausePauseClass5MetricTag) FromProto(msg *otg.PatternFlowPfcPausePauseClass5MetricTag) (PatternFlowPfcPausePauseClass5MetricTag, error) { + newObj := obj.SetMsg(msg) + err := newObj.validateToAndFrom() + if err != nil { + return nil, err + } + return newObj, nil +} + +func (obj *patternFlowPfcPausePauseClass5MetricTag) ToPbText() (string, error) { + vErr := obj.validateToAndFrom() + if vErr != nil { + return "", vErr + } + protoMarshal, err := proto.Marshal(obj.Msg()) + if err != nil { + return "", err + } + return string(protoMarshal), nil +} + +func (obj *patternFlowPfcPausePauseClass5MetricTag) FromPbText(value string) error { + retObj := proto.Unmarshal([]byte(value), obj.Msg()) + if retObj != nil { + return retObj + } + + vErr := obj.validateToAndFrom() + if vErr != nil { + return vErr + } + return retObj +} + +func (obj *patternFlowPfcPausePauseClass5MetricTag) ToYaml() (string, error) { + vErr := obj.validateToAndFrom() + if vErr != nil { + return "", vErr + } + opts := protojson.MarshalOptions{ + UseProtoNames: true, + AllowPartial: true, + EmitUnpopulated: false, + } + data, err := opts.Marshal(obj.Msg()) + if err != nil { + return "", err + } + data, err = yaml.JSONToYAML(data) + if err != nil { + return "", err + } + return string(data), nil +} + +func (obj *patternFlowPfcPausePauseClass5MetricTag) FromYaml(value string) error { + if value == "" { + value = "{}" + } + data, err := yaml.YAMLToJSON([]byte(value)) + if err != nil { + return err + } + opts := protojson.UnmarshalOptions{ + AllowPartial: true, + DiscardUnknown: false, + } + uError := opts.Unmarshal([]byte(data), obj.Msg()) + if uError != nil { + return fmt.Errorf("unmarshal error %s", strings.Replace( + uError.Error(), "\u00a0", " ", -1)[7:]) + } + + vErr := obj.validateToAndFrom() + if vErr != nil { + return vErr + } + return nil +} + +func (obj *patternFlowPfcPausePauseClass5MetricTag) ToJson() (string, error) { + vErr := obj.validateToAndFrom() + if vErr != nil { + return "", vErr + } + opts := protojson.MarshalOptions{ + UseProtoNames: true, + AllowPartial: true, + EmitUnpopulated: false, + Indent: " ", + } + data, err := opts.Marshal(obj.Msg()) + if err != nil { + return "", err + } + return string(data), nil +} + +func (obj *patternFlowPfcPausePauseClass5MetricTag) FromJson(value string) error { + opts := protojson.UnmarshalOptions{ + AllowPartial: true, + DiscardUnknown: false, + } + if value == "" { + value = "{}" + } + uError := opts.Unmarshal([]byte(value), obj.Msg()) + if uError != nil { + return fmt.Errorf("unmarshal error %s", strings.Replace( + uError.Error(), "\u00a0", " ", -1)[7:]) + } + + err := obj.validateToAndFrom() + if err != nil { + return err + } + return nil +} + +func (obj *patternFlowPfcPausePauseClass5MetricTag) validateToAndFrom() error { + // emptyVars() + obj.validateObj(&obj.validation, true) + return obj.validationResult() +} + +func (obj *patternFlowPfcPausePauseClass5MetricTag) Validate() error { + // emptyVars() + obj.validateObj(&obj.validation, false) + return obj.validationResult() +} + +func (obj *patternFlowPfcPausePauseClass5MetricTag) String() string { + str, err := obj.ToYaml() + if err != nil { + return err.Error() + } + return str +} + +func (obj *patternFlowPfcPausePauseClass5MetricTag) Clone() (PatternFlowPfcPausePauseClass5MetricTag, error) { + vErr := obj.Validate() + if vErr != nil { + return nil, vErr + } + newObj := NewPatternFlowPfcPausePauseClass5MetricTag() + data, err := proto.Marshal(obj.Msg()) + if err != nil { + return nil, err + } + pbErr := proto.Unmarshal(data, newObj.Msg()) + if pbErr != nil { + return nil, pbErr + } + return newObj, nil +} + +// PatternFlowPfcPausePauseClass5MetricTag is metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. +type PatternFlowPfcPausePauseClass5MetricTag interface { + Validation + // Msg marshals PatternFlowPfcPausePauseClass5MetricTag to protobuf object *otg.PatternFlowPfcPausePauseClass5MetricTag + // and doesn't set defaults + Msg() *otg.PatternFlowPfcPausePauseClass5MetricTag + // SetMsg unmarshals PatternFlowPfcPausePauseClass5MetricTag from protobuf object *otg.PatternFlowPfcPausePauseClass5MetricTag + // and doesn't set defaults + SetMsg(*otg.PatternFlowPfcPausePauseClass5MetricTag) PatternFlowPfcPausePauseClass5MetricTag + // ToProto marshals PatternFlowPfcPausePauseClass5MetricTag to protobuf object *otg.PatternFlowPfcPausePauseClass5MetricTag + ToProto() (*otg.PatternFlowPfcPausePauseClass5MetricTag, error) + // ToPbText marshals PatternFlowPfcPausePauseClass5MetricTag to protobuf text + ToPbText() (string, error) + // ToYaml marshals PatternFlowPfcPausePauseClass5MetricTag to YAML text + ToYaml() (string, error) + // ToJson marshals PatternFlowPfcPausePauseClass5MetricTag to JSON text + ToJson() (string, error) + // FromProto unmarshals PatternFlowPfcPausePauseClass5MetricTag from protobuf object *otg.PatternFlowPfcPausePauseClass5MetricTag + FromProto(msg *otg.PatternFlowPfcPausePauseClass5MetricTag) (PatternFlowPfcPausePauseClass5MetricTag, error) + // FromPbText unmarshals PatternFlowPfcPausePauseClass5MetricTag from protobuf text + FromPbText(value string) error + // FromYaml unmarshals PatternFlowPfcPausePauseClass5MetricTag from YAML text + FromYaml(value string) error + // FromJson unmarshals PatternFlowPfcPausePauseClass5MetricTag from JSON text + FromJson(value string) error + // Validate validates PatternFlowPfcPausePauseClass5MetricTag + Validate() error + // A stringer function + String() string + // Clones the object + Clone() (PatternFlowPfcPausePauseClass5MetricTag, error) + validateToAndFrom() error + validateObj(vObj *validation, set_default bool) + setDefault() + // Name returns string, set in PatternFlowPfcPausePauseClass5MetricTag. + Name() string + // SetName assigns string provided by user to PatternFlowPfcPausePauseClass5MetricTag + SetName(value string) PatternFlowPfcPausePauseClass5MetricTag + // Offset returns uint32, set in PatternFlowPfcPausePauseClass5MetricTag. + Offset() uint32 + // SetOffset assigns uint32 provided by user to PatternFlowPfcPausePauseClass5MetricTag + SetOffset(value uint32) PatternFlowPfcPausePauseClass5MetricTag + // HasOffset checks if Offset has been set in PatternFlowPfcPausePauseClass5MetricTag + HasOffset() bool + // Length returns uint32, set in PatternFlowPfcPausePauseClass5MetricTag. + Length() uint32 + // SetLength assigns uint32 provided by user to PatternFlowPfcPausePauseClass5MetricTag + SetLength(value uint32) PatternFlowPfcPausePauseClass5MetricTag + // HasLength checks if Length has been set in PatternFlowPfcPausePauseClass5MetricTag + HasLength() bool +} + +// Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field +// Name returns a string +func (obj *patternFlowPfcPausePauseClass5MetricTag) Name() string { + + return *obj.obj.Name + +} + +// Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field +// SetName sets the string value in the PatternFlowPfcPausePauseClass5MetricTag object +func (obj *patternFlowPfcPausePauseClass5MetricTag) SetName(value string) PatternFlowPfcPausePauseClass5MetricTag { + + obj.obj.Name = &value + return obj +} + +// Offset in bits relative to start of corresponding header field +// Offset returns a uint32 +func (obj *patternFlowPfcPausePauseClass5MetricTag) Offset() uint32 { + + return *obj.obj.Offset + +} + +// Offset in bits relative to start of corresponding header field +// Offset returns a uint32 +func (obj *patternFlowPfcPausePauseClass5MetricTag) HasOffset() bool { + return obj.obj.Offset != nil +} + +// Offset in bits relative to start of corresponding header field +// SetOffset sets the uint32 value in the PatternFlowPfcPausePauseClass5MetricTag object +func (obj *patternFlowPfcPausePauseClass5MetricTag) SetOffset(value uint32) PatternFlowPfcPausePauseClass5MetricTag { + + obj.obj.Offset = &value + return obj +} + +// Number of bits to track for metrics starting from configured offset of corresponding header field +// Length returns a uint32 +func (obj *patternFlowPfcPausePauseClass5MetricTag) Length() uint32 { + + return *obj.obj.Length + +} + +// Number of bits to track for metrics starting from configured offset of corresponding header field +// Length returns a uint32 +func (obj *patternFlowPfcPausePauseClass5MetricTag) HasLength() bool { + return obj.obj.Length != nil +} + +// Number of bits to track for metrics starting from configured offset of corresponding header field +// SetLength sets the uint32 value in the PatternFlowPfcPausePauseClass5MetricTag object +func (obj *patternFlowPfcPausePauseClass5MetricTag) SetLength(value uint32) PatternFlowPfcPausePauseClass5MetricTag { + + obj.obj.Length = &value + return obj +} + +func (obj *patternFlowPfcPausePauseClass5MetricTag) validateObj(vObj *validation, set_default bool) { + if set_default { + obj.setDefault() + } + + // Name is required + if obj.obj.Name == nil { + vObj.validationErrors = append(vObj.validationErrors, "Name is required field on interface PatternFlowPfcPausePauseClass5MetricTag") + } + + if obj.obj.Offset != nil { + + if *obj.obj.Offset > 15 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("0 <= PatternFlowPfcPausePauseClass5MetricTag.Offset <= 15 but Got %d", *obj.obj.Offset)) + } + + } + + if obj.obj.Length != nil { + + if *obj.obj.Length < 1 || *obj.obj.Length > 16 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("1 <= PatternFlowPfcPausePauseClass5MetricTag.Length <= 16 but Got %d", *obj.obj.Length)) + } + + } + +} + +func (obj *patternFlowPfcPausePauseClass5MetricTag) setDefault() { + if obj.obj.Offset == nil { + obj.SetOffset(0) + } + if obj.obj.Length == nil { + obj.SetLength(16) + } + +} + +// ***** PatternFlowPfcPausePauseClass6Counter ***** +type patternFlowPfcPausePauseClass6Counter struct { + validation + obj *otg.PatternFlowPfcPausePauseClass6Counter +} + +func NewPatternFlowPfcPausePauseClass6Counter() PatternFlowPfcPausePauseClass6Counter { + obj := patternFlowPfcPausePauseClass6Counter{obj: &otg.PatternFlowPfcPausePauseClass6Counter{}} + obj.setDefault() + return &obj +} + +func (obj *patternFlowPfcPausePauseClass6Counter) Msg() *otg.PatternFlowPfcPausePauseClass6Counter { + return obj.obj +} + +func (obj *patternFlowPfcPausePauseClass6Counter) SetMsg(msg *otg.PatternFlowPfcPausePauseClass6Counter) PatternFlowPfcPausePauseClass6Counter { + + proto.Merge(obj.obj, msg) + return obj +} + +func (obj *patternFlowPfcPausePauseClass6Counter) ToProto() (*otg.PatternFlowPfcPausePauseClass6Counter, error) { + err := obj.validateToAndFrom() + if err != nil { + return nil, err + } + return obj.Msg(), nil +} + +func (obj *patternFlowPfcPausePauseClass6Counter) FromProto(msg *otg.PatternFlowPfcPausePauseClass6Counter) (PatternFlowPfcPausePauseClass6Counter, error) { + newObj := obj.SetMsg(msg) + err := newObj.validateToAndFrom() + if err != nil { + return nil, err + } + return newObj, nil +} + +func (obj *patternFlowPfcPausePauseClass6Counter) ToPbText() (string, error) { + vErr := obj.validateToAndFrom() + if vErr != nil { + return "", vErr + } + protoMarshal, err := proto.Marshal(obj.Msg()) + if err != nil { + return "", err + } + return string(protoMarshal), nil +} + +func (obj *patternFlowPfcPausePauseClass6Counter) FromPbText(value string) error { + retObj := proto.Unmarshal([]byte(value), obj.Msg()) + if retObj != nil { + return retObj + } + + vErr := obj.validateToAndFrom() + if vErr != nil { + return vErr + } + return retObj +} + +func (obj *patternFlowPfcPausePauseClass6Counter) ToYaml() (string, error) { + vErr := obj.validateToAndFrom() + if vErr != nil { + return "", vErr + } + opts := protojson.MarshalOptions{ + UseProtoNames: true, + AllowPartial: true, + EmitUnpopulated: false, + } + data, err := opts.Marshal(obj.Msg()) + if err != nil { + return "", err + } + data, err = yaml.JSONToYAML(data) + if err != nil { + return "", err + } + return string(data), nil +} + +func (obj *patternFlowPfcPausePauseClass6Counter) FromYaml(value string) error { + if value == "" { + value = "{}" + } + data, err := yaml.YAMLToJSON([]byte(value)) + if err != nil { + return err + } + opts := protojson.UnmarshalOptions{ + AllowPartial: true, + DiscardUnknown: false, + } + uError := opts.Unmarshal([]byte(data), obj.Msg()) + if uError != nil { + return fmt.Errorf("unmarshal error %s", strings.Replace( + uError.Error(), "\u00a0", " ", -1)[7:]) + } + + vErr := obj.validateToAndFrom() + if vErr != nil { + return vErr + } + return nil +} + +func (obj *patternFlowPfcPausePauseClass6Counter) ToJson() (string, error) { + vErr := obj.validateToAndFrom() + if vErr != nil { + return "", vErr + } + opts := protojson.MarshalOptions{ + UseProtoNames: true, + AllowPartial: true, + EmitUnpopulated: false, + Indent: " ", + } + data, err := opts.Marshal(obj.Msg()) + if err != nil { + return "", err + } + return string(data), nil +} + +func (obj *patternFlowPfcPausePauseClass6Counter) FromJson(value string) error { + opts := protojson.UnmarshalOptions{ + AllowPartial: true, + DiscardUnknown: false, + } + if value == "" { + value = "{}" + } + uError := opts.Unmarshal([]byte(value), obj.Msg()) + if uError != nil { + return fmt.Errorf("unmarshal error %s", strings.Replace( + uError.Error(), "\u00a0", " ", -1)[7:]) + } + + err := obj.validateToAndFrom() + if err != nil { + return err + } + return nil +} + +func (obj *patternFlowPfcPausePauseClass6Counter) validateToAndFrom() error { + // emptyVars() + obj.validateObj(&obj.validation, true) + return obj.validationResult() +} + +func (obj *patternFlowPfcPausePauseClass6Counter) Validate() error { + // emptyVars() + obj.validateObj(&obj.validation, false) + return obj.validationResult() +} + +func (obj *patternFlowPfcPausePauseClass6Counter) String() string { + str, err := obj.ToYaml() + if err != nil { + return err.Error() + } + return str +} + +func (obj *patternFlowPfcPausePauseClass6Counter) Clone() (PatternFlowPfcPausePauseClass6Counter, error) { + vErr := obj.Validate() + if vErr != nil { + return nil, vErr + } + newObj := NewPatternFlowPfcPausePauseClass6Counter() + data, err := proto.Marshal(obj.Msg()) + if err != nil { + return nil, err + } + pbErr := proto.Unmarshal(data, newObj.Msg()) + if pbErr != nil { + return nil, pbErr + } + return newObj, nil +} + +// PatternFlowPfcPausePauseClass6Counter is integer counter pattern +type PatternFlowPfcPausePauseClass6Counter interface { + Validation + // Msg marshals PatternFlowPfcPausePauseClass6Counter to protobuf object *otg.PatternFlowPfcPausePauseClass6Counter + // and doesn't set defaults + Msg() *otg.PatternFlowPfcPausePauseClass6Counter + // SetMsg unmarshals PatternFlowPfcPausePauseClass6Counter from protobuf object *otg.PatternFlowPfcPausePauseClass6Counter + // and doesn't set defaults + SetMsg(*otg.PatternFlowPfcPausePauseClass6Counter) PatternFlowPfcPausePauseClass6Counter + // ToProto marshals PatternFlowPfcPausePauseClass6Counter to protobuf object *otg.PatternFlowPfcPausePauseClass6Counter + ToProto() (*otg.PatternFlowPfcPausePauseClass6Counter, error) + // ToPbText marshals PatternFlowPfcPausePauseClass6Counter to protobuf text + ToPbText() (string, error) + // ToYaml marshals PatternFlowPfcPausePauseClass6Counter to YAML text + ToYaml() (string, error) + // ToJson marshals PatternFlowPfcPausePauseClass6Counter to JSON text + ToJson() (string, error) + // FromProto unmarshals PatternFlowPfcPausePauseClass6Counter from protobuf object *otg.PatternFlowPfcPausePauseClass6Counter + FromProto(msg *otg.PatternFlowPfcPausePauseClass6Counter) (PatternFlowPfcPausePauseClass6Counter, error) + // FromPbText unmarshals PatternFlowPfcPausePauseClass6Counter from protobuf text + FromPbText(value string) error + // FromYaml unmarshals PatternFlowPfcPausePauseClass6Counter from YAML text + FromYaml(value string) error + // FromJson unmarshals PatternFlowPfcPausePauseClass6Counter from JSON text + FromJson(value string) error + // Validate validates PatternFlowPfcPausePauseClass6Counter + Validate() error + // A stringer function + String() string + // Clones the object + Clone() (PatternFlowPfcPausePauseClass6Counter, error) + validateToAndFrom() error + validateObj(vObj *validation, set_default bool) + setDefault() + // Start returns uint32, set in PatternFlowPfcPausePauseClass6Counter. + Start() uint32 + // SetStart assigns uint32 provided by user to PatternFlowPfcPausePauseClass6Counter + SetStart(value uint32) PatternFlowPfcPausePauseClass6Counter + // HasStart checks if Start has been set in PatternFlowPfcPausePauseClass6Counter + HasStart() bool + // Step returns uint32, set in PatternFlowPfcPausePauseClass6Counter. + Step() uint32 + // SetStep assigns uint32 provided by user to PatternFlowPfcPausePauseClass6Counter + SetStep(value uint32) PatternFlowPfcPausePauseClass6Counter + // HasStep checks if Step has been set in PatternFlowPfcPausePauseClass6Counter + HasStep() bool + // Count returns uint32, set in PatternFlowPfcPausePauseClass6Counter. + Count() uint32 + // SetCount assigns uint32 provided by user to PatternFlowPfcPausePauseClass6Counter + SetCount(value uint32) PatternFlowPfcPausePauseClass6Counter + // HasCount checks if Count has been set in PatternFlowPfcPausePauseClass6Counter + HasCount() bool +} + +// description is TBD +// Start returns a uint32 +func (obj *patternFlowPfcPausePauseClass6Counter) Start() uint32 { + + return *obj.obj.Start + +} + +// description is TBD +// Start returns a uint32 +func (obj *patternFlowPfcPausePauseClass6Counter) HasStart() bool { + return obj.obj.Start != nil +} + +// description is TBD +// SetStart sets the uint32 value in the PatternFlowPfcPausePauseClass6Counter object +func (obj *patternFlowPfcPausePauseClass6Counter) SetStart(value uint32) PatternFlowPfcPausePauseClass6Counter { + + obj.obj.Start = &value + return obj +} + +// description is TBD +// Step returns a uint32 +func (obj *patternFlowPfcPausePauseClass6Counter) Step() uint32 { + + return *obj.obj.Step + +} + +// description is TBD +// Step returns a uint32 +func (obj *patternFlowPfcPausePauseClass6Counter) HasStep() bool { + return obj.obj.Step != nil +} + +// description is TBD +// SetStep sets the uint32 value in the PatternFlowPfcPausePauseClass6Counter object +func (obj *patternFlowPfcPausePauseClass6Counter) SetStep(value uint32) PatternFlowPfcPausePauseClass6Counter { + + obj.obj.Step = &value + return obj +} + +// description is TBD +// Count returns a uint32 +func (obj *patternFlowPfcPausePauseClass6Counter) Count() uint32 { + + return *obj.obj.Count + +} + +// description is TBD +// Count returns a uint32 +func (obj *patternFlowPfcPausePauseClass6Counter) HasCount() bool { + return obj.obj.Count != nil +} + +// description is TBD +// SetCount sets the uint32 value in the PatternFlowPfcPausePauseClass6Counter object +func (obj *patternFlowPfcPausePauseClass6Counter) SetCount(value uint32) PatternFlowPfcPausePauseClass6Counter { + + obj.obj.Count = &value + return obj +} + +func (obj *patternFlowPfcPausePauseClass6Counter) validateObj(vObj *validation, set_default bool) { + if set_default { + obj.setDefault() + } + + if obj.obj.Start != nil { + + if *obj.obj.Start > 65535 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("0 <= PatternFlowPfcPausePauseClass6Counter.Start <= 65535 but Got %d", *obj.obj.Start)) + } + + } + + if obj.obj.Step != nil { + + if *obj.obj.Step > 65535 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("0 <= PatternFlowPfcPausePauseClass6Counter.Step <= 65535 but Got %d", *obj.obj.Step)) + } + + } + + if obj.obj.Count != nil { + + if *obj.obj.Count > 65535 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("0 <= PatternFlowPfcPausePauseClass6Counter.Count <= 65535 but Got %d", *obj.obj.Count)) + } + + } + +} + +func (obj *patternFlowPfcPausePauseClass6Counter) setDefault() { + if obj.obj.Start == nil { + obj.SetStart(0) + } + if obj.obj.Step == nil { + obj.SetStep(1) + } + if obj.obj.Count == nil { + obj.SetCount(1) + } + +} + +// ***** PatternFlowPfcPausePauseClass6MetricTag ***** +type patternFlowPfcPausePauseClass6MetricTag struct { + validation + obj *otg.PatternFlowPfcPausePauseClass6MetricTag +} + +func NewPatternFlowPfcPausePauseClass6MetricTag() PatternFlowPfcPausePauseClass6MetricTag { + obj := patternFlowPfcPausePauseClass6MetricTag{obj: &otg.PatternFlowPfcPausePauseClass6MetricTag{}} + obj.setDefault() + return &obj +} + +func (obj *patternFlowPfcPausePauseClass6MetricTag) Msg() *otg.PatternFlowPfcPausePauseClass6MetricTag { + return obj.obj +} + +func (obj *patternFlowPfcPausePauseClass6MetricTag) SetMsg(msg *otg.PatternFlowPfcPausePauseClass6MetricTag) PatternFlowPfcPausePauseClass6MetricTag { + + proto.Merge(obj.obj, msg) + return obj +} + +func (obj *patternFlowPfcPausePauseClass6MetricTag) ToProto() (*otg.PatternFlowPfcPausePauseClass6MetricTag, error) { + err := obj.validateToAndFrom() + if err != nil { + return nil, err + } + return obj.Msg(), nil +} + +func (obj *patternFlowPfcPausePauseClass6MetricTag) FromProto(msg *otg.PatternFlowPfcPausePauseClass6MetricTag) (PatternFlowPfcPausePauseClass6MetricTag, error) { + newObj := obj.SetMsg(msg) + err := newObj.validateToAndFrom() + if err != nil { + return nil, err + } + return newObj, nil +} + +func (obj *patternFlowPfcPausePauseClass6MetricTag) ToPbText() (string, error) { + vErr := obj.validateToAndFrom() + if vErr != nil { + return "", vErr + } + protoMarshal, err := proto.Marshal(obj.Msg()) + if err != nil { + return "", err + } + return string(protoMarshal), nil +} + +func (obj *patternFlowPfcPausePauseClass6MetricTag) FromPbText(value string) error { + retObj := proto.Unmarshal([]byte(value), obj.Msg()) + if retObj != nil { + return retObj + } + + vErr := obj.validateToAndFrom() + if vErr != nil { + return vErr + } + return retObj +} + +func (obj *patternFlowPfcPausePauseClass6MetricTag) ToYaml() (string, error) { + vErr := obj.validateToAndFrom() + if vErr != nil { + return "", vErr + } + opts := protojson.MarshalOptions{ + UseProtoNames: true, + AllowPartial: true, + EmitUnpopulated: false, + } + data, err := opts.Marshal(obj.Msg()) + if err != nil { + return "", err + } + data, err = yaml.JSONToYAML(data) + if err != nil { + return "", err + } + return string(data), nil +} + +func (obj *patternFlowPfcPausePauseClass6MetricTag) FromYaml(value string) error { + if value == "" { + value = "{}" + } + data, err := yaml.YAMLToJSON([]byte(value)) + if err != nil { + return err + } + opts := protojson.UnmarshalOptions{ + AllowPartial: true, + DiscardUnknown: false, + } + uError := opts.Unmarshal([]byte(data), obj.Msg()) + if uError != nil { + return fmt.Errorf("unmarshal error %s", strings.Replace( + uError.Error(), "\u00a0", " ", -1)[7:]) + } + + vErr := obj.validateToAndFrom() + if vErr != nil { + return vErr + } + return nil +} + +func (obj *patternFlowPfcPausePauseClass6MetricTag) ToJson() (string, error) { + vErr := obj.validateToAndFrom() + if vErr != nil { + return "", vErr + } + opts := protojson.MarshalOptions{ + UseProtoNames: true, + AllowPartial: true, + EmitUnpopulated: false, + Indent: " ", + } + data, err := opts.Marshal(obj.Msg()) + if err != nil { + return "", err + } + return string(data), nil +} + +func (obj *patternFlowPfcPausePauseClass6MetricTag) FromJson(value string) error { + opts := protojson.UnmarshalOptions{ + AllowPartial: true, + DiscardUnknown: false, + } + if value == "" { + value = "{}" + } + uError := opts.Unmarshal([]byte(value), obj.Msg()) + if uError != nil { + return fmt.Errorf("unmarshal error %s", strings.Replace( + uError.Error(), "\u00a0", " ", -1)[7:]) + } + + err := obj.validateToAndFrom() + if err != nil { + return err + } + return nil +} + +func (obj *patternFlowPfcPausePauseClass6MetricTag) validateToAndFrom() error { + // emptyVars() + obj.validateObj(&obj.validation, true) + return obj.validationResult() +} + +func (obj *patternFlowPfcPausePauseClass6MetricTag) Validate() error { + // emptyVars() + obj.validateObj(&obj.validation, false) + return obj.validationResult() +} + +func (obj *patternFlowPfcPausePauseClass6MetricTag) String() string { + str, err := obj.ToYaml() + if err != nil { + return err.Error() + } + return str +} + +func (obj *patternFlowPfcPausePauseClass6MetricTag) Clone() (PatternFlowPfcPausePauseClass6MetricTag, error) { + vErr := obj.Validate() + if vErr != nil { + return nil, vErr + } + newObj := NewPatternFlowPfcPausePauseClass6MetricTag() + data, err := proto.Marshal(obj.Msg()) + if err != nil { + return nil, err + } + pbErr := proto.Unmarshal(data, newObj.Msg()) + if pbErr != nil { + return nil, pbErr + } + return newObj, nil +} + +// PatternFlowPfcPausePauseClass6MetricTag is metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. +type PatternFlowPfcPausePauseClass6MetricTag interface { + Validation + // Msg marshals PatternFlowPfcPausePauseClass6MetricTag to protobuf object *otg.PatternFlowPfcPausePauseClass6MetricTag + // and doesn't set defaults + Msg() *otg.PatternFlowPfcPausePauseClass6MetricTag + // SetMsg unmarshals PatternFlowPfcPausePauseClass6MetricTag from protobuf object *otg.PatternFlowPfcPausePauseClass6MetricTag + // and doesn't set defaults + SetMsg(*otg.PatternFlowPfcPausePauseClass6MetricTag) PatternFlowPfcPausePauseClass6MetricTag + // ToProto marshals PatternFlowPfcPausePauseClass6MetricTag to protobuf object *otg.PatternFlowPfcPausePauseClass6MetricTag + ToProto() (*otg.PatternFlowPfcPausePauseClass6MetricTag, error) + // ToPbText marshals PatternFlowPfcPausePauseClass6MetricTag to protobuf text + ToPbText() (string, error) + // ToYaml marshals PatternFlowPfcPausePauseClass6MetricTag to YAML text + ToYaml() (string, error) + // ToJson marshals PatternFlowPfcPausePauseClass6MetricTag to JSON text + ToJson() (string, error) + // FromProto unmarshals PatternFlowPfcPausePauseClass6MetricTag from protobuf object *otg.PatternFlowPfcPausePauseClass6MetricTag + FromProto(msg *otg.PatternFlowPfcPausePauseClass6MetricTag) (PatternFlowPfcPausePauseClass6MetricTag, error) + // FromPbText unmarshals PatternFlowPfcPausePauseClass6MetricTag from protobuf text + FromPbText(value string) error + // FromYaml unmarshals PatternFlowPfcPausePauseClass6MetricTag from YAML text + FromYaml(value string) error + // FromJson unmarshals PatternFlowPfcPausePauseClass6MetricTag from JSON text + FromJson(value string) error + // Validate validates PatternFlowPfcPausePauseClass6MetricTag + Validate() error + // A stringer function + String() string + // Clones the object + Clone() (PatternFlowPfcPausePauseClass6MetricTag, error) + validateToAndFrom() error + validateObj(vObj *validation, set_default bool) + setDefault() + // Name returns string, set in PatternFlowPfcPausePauseClass6MetricTag. + Name() string + // SetName assigns string provided by user to PatternFlowPfcPausePauseClass6MetricTag + SetName(value string) PatternFlowPfcPausePauseClass6MetricTag + // Offset returns uint32, set in PatternFlowPfcPausePauseClass6MetricTag. + Offset() uint32 + // SetOffset assigns uint32 provided by user to PatternFlowPfcPausePauseClass6MetricTag + SetOffset(value uint32) PatternFlowPfcPausePauseClass6MetricTag + // HasOffset checks if Offset has been set in PatternFlowPfcPausePauseClass6MetricTag + HasOffset() bool + // Length returns uint32, set in PatternFlowPfcPausePauseClass6MetricTag. + Length() uint32 + // SetLength assigns uint32 provided by user to PatternFlowPfcPausePauseClass6MetricTag + SetLength(value uint32) PatternFlowPfcPausePauseClass6MetricTag + // HasLength checks if Length has been set in PatternFlowPfcPausePauseClass6MetricTag + HasLength() bool +} + +// Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field +// Name returns a string +func (obj *patternFlowPfcPausePauseClass6MetricTag) Name() string { + + return *obj.obj.Name + +} + +// Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field +// SetName sets the string value in the PatternFlowPfcPausePauseClass6MetricTag object +func (obj *patternFlowPfcPausePauseClass6MetricTag) SetName(value string) PatternFlowPfcPausePauseClass6MetricTag { + + obj.obj.Name = &value + return obj +} + +// Offset in bits relative to start of corresponding header field +// Offset returns a uint32 +func (obj *patternFlowPfcPausePauseClass6MetricTag) Offset() uint32 { + + return *obj.obj.Offset + +} + +// Offset in bits relative to start of corresponding header field +// Offset returns a uint32 +func (obj *patternFlowPfcPausePauseClass6MetricTag) HasOffset() bool { + return obj.obj.Offset != nil +} + +// Offset in bits relative to start of corresponding header field +// SetOffset sets the uint32 value in the PatternFlowPfcPausePauseClass6MetricTag object +func (obj *patternFlowPfcPausePauseClass6MetricTag) SetOffset(value uint32) PatternFlowPfcPausePauseClass6MetricTag { + + obj.obj.Offset = &value + return obj +} + +// Number of bits to track for metrics starting from configured offset of corresponding header field +// Length returns a uint32 +func (obj *patternFlowPfcPausePauseClass6MetricTag) Length() uint32 { + + return *obj.obj.Length + +} + +// Number of bits to track for metrics starting from configured offset of corresponding header field +// Length returns a uint32 +func (obj *patternFlowPfcPausePauseClass6MetricTag) HasLength() bool { + return obj.obj.Length != nil +} + +// Number of bits to track for metrics starting from configured offset of corresponding header field +// SetLength sets the uint32 value in the PatternFlowPfcPausePauseClass6MetricTag object +func (obj *patternFlowPfcPausePauseClass6MetricTag) SetLength(value uint32) PatternFlowPfcPausePauseClass6MetricTag { + + obj.obj.Length = &value + return obj +} + +func (obj *patternFlowPfcPausePauseClass6MetricTag) validateObj(vObj *validation, set_default bool) { + if set_default { + obj.setDefault() + } + + // Name is required + if obj.obj.Name == nil { + vObj.validationErrors = append(vObj.validationErrors, "Name is required field on interface PatternFlowPfcPausePauseClass6MetricTag") + } + + if obj.obj.Offset != nil { + + if *obj.obj.Offset > 15 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("0 <= PatternFlowPfcPausePauseClass6MetricTag.Offset <= 15 but Got %d", *obj.obj.Offset)) + } + + } + + if obj.obj.Length != nil { + + if *obj.obj.Length < 1 || *obj.obj.Length > 16 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("1 <= PatternFlowPfcPausePauseClass6MetricTag.Length <= 16 but Got %d", *obj.obj.Length)) + } + + } + +} + +func (obj *patternFlowPfcPausePauseClass6MetricTag) setDefault() { + if obj.obj.Offset == nil { + obj.SetOffset(0) + } + if obj.obj.Length == nil { + obj.SetLength(16) + } + +} + +// ***** PatternFlowPfcPausePauseClass7Counter ***** +type patternFlowPfcPausePauseClass7Counter struct { + validation + obj *otg.PatternFlowPfcPausePauseClass7Counter +} + +func NewPatternFlowPfcPausePauseClass7Counter() PatternFlowPfcPausePauseClass7Counter { + obj := patternFlowPfcPausePauseClass7Counter{obj: &otg.PatternFlowPfcPausePauseClass7Counter{}} + obj.setDefault() + return &obj +} + +func (obj *patternFlowPfcPausePauseClass7Counter) Msg() *otg.PatternFlowPfcPausePauseClass7Counter { + return obj.obj +} + +func (obj *patternFlowPfcPausePauseClass7Counter) SetMsg(msg *otg.PatternFlowPfcPausePauseClass7Counter) PatternFlowPfcPausePauseClass7Counter { + + proto.Merge(obj.obj, msg) + return obj +} + +func (obj *patternFlowPfcPausePauseClass7Counter) ToProto() (*otg.PatternFlowPfcPausePauseClass7Counter, error) { + err := obj.validateToAndFrom() + if err != nil { + return nil, err + } + return obj.Msg(), nil +} + +func (obj *patternFlowPfcPausePauseClass7Counter) FromProto(msg *otg.PatternFlowPfcPausePauseClass7Counter) (PatternFlowPfcPausePauseClass7Counter, error) { + newObj := obj.SetMsg(msg) + err := newObj.validateToAndFrom() + if err != nil { + return nil, err + } + return newObj, nil +} + +func (obj *patternFlowPfcPausePauseClass7Counter) ToPbText() (string, error) { + vErr := obj.validateToAndFrom() + if vErr != nil { + return "", vErr + } + protoMarshal, err := proto.Marshal(obj.Msg()) + if err != nil { + return "", err + } + return string(protoMarshal), nil +} + +func (obj *patternFlowPfcPausePauseClass7Counter) FromPbText(value string) error { + retObj := proto.Unmarshal([]byte(value), obj.Msg()) + if retObj != nil { + return retObj + } + + vErr := obj.validateToAndFrom() + if vErr != nil { + return vErr + } + return retObj +} + +func (obj *patternFlowPfcPausePauseClass7Counter) ToYaml() (string, error) { + vErr := obj.validateToAndFrom() + if vErr != nil { + return "", vErr + } + opts := protojson.MarshalOptions{ + UseProtoNames: true, + AllowPartial: true, + EmitUnpopulated: false, + } + data, err := opts.Marshal(obj.Msg()) + if err != nil { + return "", err + } + data, err = yaml.JSONToYAML(data) + if err != nil { + return "", err + } + return string(data), nil +} + +func (obj *patternFlowPfcPausePauseClass7Counter) FromYaml(value string) error { + if value == "" { + value = "{}" + } + data, err := yaml.YAMLToJSON([]byte(value)) + if err != nil { + return err + } + opts := protojson.UnmarshalOptions{ + AllowPartial: true, + DiscardUnknown: false, + } + uError := opts.Unmarshal([]byte(data), obj.Msg()) + if uError != nil { + return fmt.Errorf("unmarshal error %s", strings.Replace( + uError.Error(), "\u00a0", " ", -1)[7:]) + } + + vErr := obj.validateToAndFrom() + if vErr != nil { + return vErr + } + return nil +} + +func (obj *patternFlowPfcPausePauseClass7Counter) ToJson() (string, error) { + vErr := obj.validateToAndFrom() + if vErr != nil { + return "", vErr + } + opts := protojson.MarshalOptions{ + UseProtoNames: true, + AllowPartial: true, + EmitUnpopulated: false, + Indent: " ", + } + data, err := opts.Marshal(obj.Msg()) + if err != nil { + return "", err + } + return string(data), nil +} + +func (obj *patternFlowPfcPausePauseClass7Counter) FromJson(value string) error { + opts := protojson.UnmarshalOptions{ + AllowPartial: true, + DiscardUnknown: false, + } + if value == "" { + value = "{}" + } + uError := opts.Unmarshal([]byte(value), obj.Msg()) + if uError != nil { + return fmt.Errorf("unmarshal error %s", strings.Replace( + uError.Error(), "\u00a0", " ", -1)[7:]) + } + + err := obj.validateToAndFrom() + if err != nil { + return err + } + return nil +} + +func (obj *patternFlowPfcPausePauseClass7Counter) validateToAndFrom() error { + // emptyVars() + obj.validateObj(&obj.validation, true) + return obj.validationResult() +} + +func (obj *patternFlowPfcPausePauseClass7Counter) Validate() error { + // emptyVars() + obj.validateObj(&obj.validation, false) + return obj.validationResult() +} + +func (obj *patternFlowPfcPausePauseClass7Counter) String() string { + str, err := obj.ToYaml() + if err != nil { + return err.Error() + } + return str +} + +func (obj *patternFlowPfcPausePauseClass7Counter) Clone() (PatternFlowPfcPausePauseClass7Counter, error) { + vErr := obj.Validate() + if vErr != nil { + return nil, vErr + } + newObj := NewPatternFlowPfcPausePauseClass7Counter() + data, err := proto.Marshal(obj.Msg()) + if err != nil { + return nil, err + } + pbErr := proto.Unmarshal(data, newObj.Msg()) + if pbErr != nil { + return nil, pbErr + } + return newObj, nil +} + +// PatternFlowPfcPausePauseClass7Counter is integer counter pattern +type PatternFlowPfcPausePauseClass7Counter interface { + Validation + // Msg marshals PatternFlowPfcPausePauseClass7Counter to protobuf object *otg.PatternFlowPfcPausePauseClass7Counter + // and doesn't set defaults + Msg() *otg.PatternFlowPfcPausePauseClass7Counter + // SetMsg unmarshals PatternFlowPfcPausePauseClass7Counter from protobuf object *otg.PatternFlowPfcPausePauseClass7Counter + // and doesn't set defaults + SetMsg(*otg.PatternFlowPfcPausePauseClass7Counter) PatternFlowPfcPausePauseClass7Counter + // ToProto marshals PatternFlowPfcPausePauseClass7Counter to protobuf object *otg.PatternFlowPfcPausePauseClass7Counter + ToProto() (*otg.PatternFlowPfcPausePauseClass7Counter, error) + // ToPbText marshals PatternFlowPfcPausePauseClass7Counter to protobuf text + ToPbText() (string, error) + // ToYaml marshals PatternFlowPfcPausePauseClass7Counter to YAML text + ToYaml() (string, error) + // ToJson marshals PatternFlowPfcPausePauseClass7Counter to JSON text + ToJson() (string, error) + // FromProto unmarshals PatternFlowPfcPausePauseClass7Counter from protobuf object *otg.PatternFlowPfcPausePauseClass7Counter + FromProto(msg *otg.PatternFlowPfcPausePauseClass7Counter) (PatternFlowPfcPausePauseClass7Counter, error) + // FromPbText unmarshals PatternFlowPfcPausePauseClass7Counter from protobuf text + FromPbText(value string) error + // FromYaml unmarshals PatternFlowPfcPausePauseClass7Counter from YAML text + FromYaml(value string) error + // FromJson unmarshals PatternFlowPfcPausePauseClass7Counter from JSON text + FromJson(value string) error + // Validate validates PatternFlowPfcPausePauseClass7Counter + Validate() error + // A stringer function + String() string + // Clones the object + Clone() (PatternFlowPfcPausePauseClass7Counter, error) + validateToAndFrom() error + validateObj(vObj *validation, set_default bool) + setDefault() + // Start returns uint32, set in PatternFlowPfcPausePauseClass7Counter. + Start() uint32 + // SetStart assigns uint32 provided by user to PatternFlowPfcPausePauseClass7Counter + SetStart(value uint32) PatternFlowPfcPausePauseClass7Counter + // HasStart checks if Start has been set in PatternFlowPfcPausePauseClass7Counter + HasStart() bool + // Step returns uint32, set in PatternFlowPfcPausePauseClass7Counter. + Step() uint32 + // SetStep assigns uint32 provided by user to PatternFlowPfcPausePauseClass7Counter + SetStep(value uint32) PatternFlowPfcPausePauseClass7Counter + // HasStep checks if Step has been set in PatternFlowPfcPausePauseClass7Counter + HasStep() bool + // Count returns uint32, set in PatternFlowPfcPausePauseClass7Counter. + Count() uint32 + // SetCount assigns uint32 provided by user to PatternFlowPfcPausePauseClass7Counter + SetCount(value uint32) PatternFlowPfcPausePauseClass7Counter + // HasCount checks if Count has been set in PatternFlowPfcPausePauseClass7Counter + HasCount() bool +} + +// description is TBD +// Start returns a uint32 +func (obj *patternFlowPfcPausePauseClass7Counter) Start() uint32 { + + return *obj.obj.Start + +} + +// description is TBD +// Start returns a uint32 +func (obj *patternFlowPfcPausePauseClass7Counter) HasStart() bool { + return obj.obj.Start != nil +} + +// description is TBD +// SetStart sets the uint32 value in the PatternFlowPfcPausePauseClass7Counter object +func (obj *patternFlowPfcPausePauseClass7Counter) SetStart(value uint32) PatternFlowPfcPausePauseClass7Counter { + + obj.obj.Start = &value + return obj +} + +// description is TBD +// Step returns a uint32 +func (obj *patternFlowPfcPausePauseClass7Counter) Step() uint32 { + + return *obj.obj.Step + +} + +// description is TBD +// Step returns a uint32 +func (obj *patternFlowPfcPausePauseClass7Counter) HasStep() bool { + return obj.obj.Step != nil +} + +// description is TBD +// SetStep sets the uint32 value in the PatternFlowPfcPausePauseClass7Counter object +func (obj *patternFlowPfcPausePauseClass7Counter) SetStep(value uint32) PatternFlowPfcPausePauseClass7Counter { + + obj.obj.Step = &value + return obj +} + +// description is TBD +// Count returns a uint32 +func (obj *patternFlowPfcPausePauseClass7Counter) Count() uint32 { + + return *obj.obj.Count + +} + +// description is TBD +// Count returns a uint32 +func (obj *patternFlowPfcPausePauseClass7Counter) HasCount() bool { + return obj.obj.Count != nil +} + +// description is TBD +// SetCount sets the uint32 value in the PatternFlowPfcPausePauseClass7Counter object +func (obj *patternFlowPfcPausePauseClass7Counter) SetCount(value uint32) PatternFlowPfcPausePauseClass7Counter { + + obj.obj.Count = &value + return obj +} + +func (obj *patternFlowPfcPausePauseClass7Counter) validateObj(vObj *validation, set_default bool) { + if set_default { + obj.setDefault() + } + + if obj.obj.Start != nil { + + if *obj.obj.Start > 65535 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("0 <= PatternFlowPfcPausePauseClass7Counter.Start <= 65535 but Got %d", *obj.obj.Start)) + } + + } + + if obj.obj.Step != nil { + + if *obj.obj.Step > 65535 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("0 <= PatternFlowPfcPausePauseClass7Counter.Step <= 65535 but Got %d", *obj.obj.Step)) + } + + } + + if obj.obj.Count != nil { + + if *obj.obj.Count > 65535 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("0 <= PatternFlowPfcPausePauseClass7Counter.Count <= 65535 but Got %d", *obj.obj.Count)) + } + + } + +} + +func (obj *patternFlowPfcPausePauseClass7Counter) setDefault() { + if obj.obj.Start == nil { + obj.SetStart(0) + } + if obj.obj.Step == nil { + obj.SetStep(1) + } + if obj.obj.Count == nil { + obj.SetCount(1) + } + +} + +// ***** PatternFlowPfcPausePauseClass7MetricTag ***** +type patternFlowPfcPausePauseClass7MetricTag struct { + validation + obj *otg.PatternFlowPfcPausePauseClass7MetricTag +} + +func NewPatternFlowPfcPausePauseClass7MetricTag() PatternFlowPfcPausePauseClass7MetricTag { + obj := patternFlowPfcPausePauseClass7MetricTag{obj: &otg.PatternFlowPfcPausePauseClass7MetricTag{}} + obj.setDefault() + return &obj +} + +func (obj *patternFlowPfcPausePauseClass7MetricTag) Msg() *otg.PatternFlowPfcPausePauseClass7MetricTag { + return obj.obj +} + +func (obj *patternFlowPfcPausePauseClass7MetricTag) SetMsg(msg *otg.PatternFlowPfcPausePauseClass7MetricTag) PatternFlowPfcPausePauseClass7MetricTag { + + proto.Merge(obj.obj, msg) + return obj +} + +func (obj *patternFlowPfcPausePauseClass7MetricTag) ToProto() (*otg.PatternFlowPfcPausePauseClass7MetricTag, error) { + err := obj.validateToAndFrom() + if err != nil { + return nil, err + } + return obj.Msg(), nil +} + +func (obj *patternFlowPfcPausePauseClass7MetricTag) FromProto(msg *otg.PatternFlowPfcPausePauseClass7MetricTag) (PatternFlowPfcPausePauseClass7MetricTag, error) { + newObj := obj.SetMsg(msg) + err := newObj.validateToAndFrom() + if err != nil { + return nil, err + } + return newObj, nil +} + +func (obj *patternFlowPfcPausePauseClass7MetricTag) ToPbText() (string, error) { + vErr := obj.validateToAndFrom() + if vErr != nil { + return "", vErr + } + protoMarshal, err := proto.Marshal(obj.Msg()) + if err != nil { + return "", err + } + return string(protoMarshal), nil +} + +func (obj *patternFlowPfcPausePauseClass7MetricTag) FromPbText(value string) error { + retObj := proto.Unmarshal([]byte(value), obj.Msg()) + if retObj != nil { + return retObj + } + + vErr := obj.validateToAndFrom() + if vErr != nil { + return vErr + } + return retObj +} + +func (obj *patternFlowPfcPausePauseClass7MetricTag) ToYaml() (string, error) { + vErr := obj.validateToAndFrom() + if vErr != nil { + return "", vErr + } + opts := protojson.MarshalOptions{ + UseProtoNames: true, + AllowPartial: true, + EmitUnpopulated: false, + } + data, err := opts.Marshal(obj.Msg()) + if err != nil { + return "", err + } + data, err = yaml.JSONToYAML(data) + if err != nil { + return "", err + } + return string(data), nil +} + +func (obj *patternFlowPfcPausePauseClass7MetricTag) FromYaml(value string) error { + if value == "" { + value = "{}" + } + data, err := yaml.YAMLToJSON([]byte(value)) + if err != nil { + return err + } + opts := protojson.UnmarshalOptions{ + AllowPartial: true, + DiscardUnknown: false, + } + uError := opts.Unmarshal([]byte(data), obj.Msg()) + if uError != nil { + return fmt.Errorf("unmarshal error %s", strings.Replace( + uError.Error(), "\u00a0", " ", -1)[7:]) + } + + vErr := obj.validateToAndFrom() + if vErr != nil { + return vErr + } + return nil +} + +func (obj *patternFlowPfcPausePauseClass7MetricTag) ToJson() (string, error) { + vErr := obj.validateToAndFrom() + if vErr != nil { + return "", vErr + } + opts := protojson.MarshalOptions{ + UseProtoNames: true, + AllowPartial: true, + EmitUnpopulated: false, + Indent: " ", + } + data, err := opts.Marshal(obj.Msg()) + if err != nil { + return "", err + } + return string(data), nil +} + +func (obj *patternFlowPfcPausePauseClass7MetricTag) FromJson(value string) error { + opts := protojson.UnmarshalOptions{ + AllowPartial: true, + DiscardUnknown: false, + } + if value == "" { + value = "{}" + } + uError := opts.Unmarshal([]byte(value), obj.Msg()) + if uError != nil { + return fmt.Errorf("unmarshal error %s", strings.Replace( + uError.Error(), "\u00a0", " ", -1)[7:]) + } + + err := obj.validateToAndFrom() + if err != nil { + return err + } + return nil +} + +func (obj *patternFlowPfcPausePauseClass7MetricTag) validateToAndFrom() error { + // emptyVars() + obj.validateObj(&obj.validation, true) + return obj.validationResult() +} + +func (obj *patternFlowPfcPausePauseClass7MetricTag) Validate() error { + // emptyVars() + obj.validateObj(&obj.validation, false) + return obj.validationResult() +} + +func (obj *patternFlowPfcPausePauseClass7MetricTag) String() string { + str, err := obj.ToYaml() + if err != nil { + return err.Error() + } + return str +} + +func (obj *patternFlowPfcPausePauseClass7MetricTag) Clone() (PatternFlowPfcPausePauseClass7MetricTag, error) { + vErr := obj.Validate() + if vErr != nil { + return nil, vErr + } + newObj := NewPatternFlowPfcPausePauseClass7MetricTag() + data, err := proto.Marshal(obj.Msg()) + if err != nil { + return nil, err + } + pbErr := proto.Unmarshal(data, newObj.Msg()) + if pbErr != nil { + return nil, pbErr + } + return newObj, nil +} + +// PatternFlowPfcPausePauseClass7MetricTag is metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. +type PatternFlowPfcPausePauseClass7MetricTag interface { + Validation + // Msg marshals PatternFlowPfcPausePauseClass7MetricTag to protobuf object *otg.PatternFlowPfcPausePauseClass7MetricTag + // and doesn't set defaults + Msg() *otg.PatternFlowPfcPausePauseClass7MetricTag + // SetMsg unmarshals PatternFlowPfcPausePauseClass7MetricTag from protobuf object *otg.PatternFlowPfcPausePauseClass7MetricTag + // and doesn't set defaults + SetMsg(*otg.PatternFlowPfcPausePauseClass7MetricTag) PatternFlowPfcPausePauseClass7MetricTag + // ToProto marshals PatternFlowPfcPausePauseClass7MetricTag to protobuf object *otg.PatternFlowPfcPausePauseClass7MetricTag + ToProto() (*otg.PatternFlowPfcPausePauseClass7MetricTag, error) + // ToPbText marshals PatternFlowPfcPausePauseClass7MetricTag to protobuf text + ToPbText() (string, error) + // ToYaml marshals PatternFlowPfcPausePauseClass7MetricTag to YAML text + ToYaml() (string, error) + // ToJson marshals PatternFlowPfcPausePauseClass7MetricTag to JSON text + ToJson() (string, error) + // FromProto unmarshals PatternFlowPfcPausePauseClass7MetricTag from protobuf object *otg.PatternFlowPfcPausePauseClass7MetricTag + FromProto(msg *otg.PatternFlowPfcPausePauseClass7MetricTag) (PatternFlowPfcPausePauseClass7MetricTag, error) + // FromPbText unmarshals PatternFlowPfcPausePauseClass7MetricTag from protobuf text + FromPbText(value string) error + // FromYaml unmarshals PatternFlowPfcPausePauseClass7MetricTag from YAML text + FromYaml(value string) error + // FromJson unmarshals PatternFlowPfcPausePauseClass7MetricTag from JSON text + FromJson(value string) error + // Validate validates PatternFlowPfcPausePauseClass7MetricTag + Validate() error + // A stringer function + String() string + // Clones the object + Clone() (PatternFlowPfcPausePauseClass7MetricTag, error) + validateToAndFrom() error + validateObj(vObj *validation, set_default bool) + setDefault() + // Name returns string, set in PatternFlowPfcPausePauseClass7MetricTag. + Name() string + // SetName assigns string provided by user to PatternFlowPfcPausePauseClass7MetricTag + SetName(value string) PatternFlowPfcPausePauseClass7MetricTag + // Offset returns uint32, set in PatternFlowPfcPausePauseClass7MetricTag. + Offset() uint32 + // SetOffset assigns uint32 provided by user to PatternFlowPfcPausePauseClass7MetricTag + SetOffset(value uint32) PatternFlowPfcPausePauseClass7MetricTag + // HasOffset checks if Offset has been set in PatternFlowPfcPausePauseClass7MetricTag + HasOffset() bool + // Length returns uint32, set in PatternFlowPfcPausePauseClass7MetricTag. + Length() uint32 + // SetLength assigns uint32 provided by user to PatternFlowPfcPausePauseClass7MetricTag + SetLength(value uint32) PatternFlowPfcPausePauseClass7MetricTag + // HasLength checks if Length has been set in PatternFlowPfcPausePauseClass7MetricTag + HasLength() bool +} + +// Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field +// Name returns a string +func (obj *patternFlowPfcPausePauseClass7MetricTag) Name() string { + + return *obj.obj.Name + +} + +// Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field +// SetName sets the string value in the PatternFlowPfcPausePauseClass7MetricTag object +func (obj *patternFlowPfcPausePauseClass7MetricTag) SetName(value string) PatternFlowPfcPausePauseClass7MetricTag { + + obj.obj.Name = &value + return obj +} + +// Offset in bits relative to start of corresponding header field +// Offset returns a uint32 +func (obj *patternFlowPfcPausePauseClass7MetricTag) Offset() uint32 { + + return *obj.obj.Offset + +} + +// Offset in bits relative to start of corresponding header field +// Offset returns a uint32 +func (obj *patternFlowPfcPausePauseClass7MetricTag) HasOffset() bool { + return obj.obj.Offset != nil +} + +// Offset in bits relative to start of corresponding header field +// SetOffset sets the uint32 value in the PatternFlowPfcPausePauseClass7MetricTag object +func (obj *patternFlowPfcPausePauseClass7MetricTag) SetOffset(value uint32) PatternFlowPfcPausePauseClass7MetricTag { + + obj.obj.Offset = &value + return obj +} + +// Number of bits to track for metrics starting from configured offset of corresponding header field +// Length returns a uint32 +func (obj *patternFlowPfcPausePauseClass7MetricTag) Length() uint32 { + + return *obj.obj.Length + +} + +// Number of bits to track for metrics starting from configured offset of corresponding header field +// Length returns a uint32 +func (obj *patternFlowPfcPausePauseClass7MetricTag) HasLength() bool { + return obj.obj.Length != nil +} + +// Number of bits to track for metrics starting from configured offset of corresponding header field +// SetLength sets the uint32 value in the PatternFlowPfcPausePauseClass7MetricTag object +func (obj *patternFlowPfcPausePauseClass7MetricTag) SetLength(value uint32) PatternFlowPfcPausePauseClass7MetricTag { + + obj.obj.Length = &value + return obj +} + +func (obj *patternFlowPfcPausePauseClass7MetricTag) validateObj(vObj *validation, set_default bool) { + if set_default { + obj.setDefault() + } + + // Name is required + if obj.obj.Name == nil { + vObj.validationErrors = append(vObj.validationErrors, "Name is required field on interface PatternFlowPfcPausePauseClass7MetricTag") } - if obj.obj.Ipv4MulticastMplsVpn == nil { - obj.SetIpv4MulticastMplsVpn(false) + + if obj.obj.Offset != nil { + + if *obj.obj.Offset > 15 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("0 <= PatternFlowPfcPausePauseClass7MetricTag.Offset <= 15 but Got %d", *obj.obj.Offset)) + } + } - if obj.obj.Ipv4UnicastFlowSpec == nil { - obj.SetIpv4UnicastFlowSpec(false) + + if obj.obj.Length != nil { + + if *obj.obj.Length < 1 || *obj.obj.Length > 16 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("1 <= PatternFlowPfcPausePauseClass7MetricTag.Length <= 16 but Got %d", *obj.obj.Length)) + } + } - if obj.obj.Ipv4SrTePolicy == nil { - obj.SetIpv4SrTePolicy(false) + +} + +func (obj *patternFlowPfcPausePauseClass7MetricTag) setDefault() { + if obj.obj.Offset == nil { + obj.SetOffset(0) } - if obj.obj.Ipv4UnicastAddPath == nil { - obj.SetIpv4UnicastAddPath(false) + if obj.obj.Length == nil { + obj.SetLength(16) } - if obj.obj.Ipv6MulticastVpn == nil { - obj.SetIpv6MulticastVpn(false) + +} + +// ***** PatternFlowEthernetPauseDstCounter ***** +type patternFlowEthernetPauseDstCounter struct { + validation + obj *otg.PatternFlowEthernetPauseDstCounter +} + +func NewPatternFlowEthernetPauseDstCounter() PatternFlowEthernetPauseDstCounter { + obj := patternFlowEthernetPauseDstCounter{obj: &otg.PatternFlowEthernetPauseDstCounter{}} + obj.setDefault() + return &obj +} + +func (obj *patternFlowEthernetPauseDstCounter) Msg() *otg.PatternFlowEthernetPauseDstCounter { + return obj.obj +} + +func (obj *patternFlowEthernetPauseDstCounter) SetMsg(msg *otg.PatternFlowEthernetPauseDstCounter) PatternFlowEthernetPauseDstCounter { + + proto.Merge(obj.obj, msg) + return obj +} + +func (obj *patternFlowEthernetPauseDstCounter) ToProto() (*otg.PatternFlowEthernetPauseDstCounter, error) { + err := obj.validateToAndFrom() + if err != nil { + return nil, err } - if obj.obj.Ipv6MplsVpn == nil { - obj.SetIpv6MplsVpn(false) + return obj.Msg(), nil +} + +func (obj *patternFlowEthernetPauseDstCounter) FromProto(msg *otg.PatternFlowEthernetPauseDstCounter) (PatternFlowEthernetPauseDstCounter, error) { + newObj := obj.SetMsg(msg) + err := newObj.validateToAndFrom() + if err != nil { + return nil, err + } + return newObj, nil +} + +func (obj *patternFlowEthernetPauseDstCounter) ToPbText() (string, error) { + vErr := obj.validateToAndFrom() + if vErr != nil { + return "", vErr + } + protoMarshal, err := proto.Marshal(obj.Msg()) + if err != nil { + return "", err + } + return string(protoMarshal), nil +} + +func (obj *patternFlowEthernetPauseDstCounter) FromPbText(value string) error { + retObj := proto.Unmarshal([]byte(value), obj.Msg()) + if retObj != nil { + return retObj + } + + vErr := obj.validateToAndFrom() + if vErr != nil { + return vErr + } + return retObj +} + +func (obj *patternFlowEthernetPauseDstCounter) ToYaml() (string, error) { + vErr := obj.validateToAndFrom() + if vErr != nil { + return "", vErr + } + opts := protojson.MarshalOptions{ + UseProtoNames: true, + AllowPartial: true, + EmitUnpopulated: false, + } + data, err := opts.Marshal(obj.Msg()) + if err != nil { + return "", err + } + data, err = yaml.JSONToYAML(data) + if err != nil { + return "", err + } + return string(data), nil +} + +func (obj *patternFlowEthernetPauseDstCounter) FromYaml(value string) error { + if value == "" { + value = "{}" + } + data, err := yaml.YAMLToJSON([]byte(value)) + if err != nil { + return err + } + opts := protojson.UnmarshalOptions{ + AllowPartial: true, + DiscardUnknown: false, + } + uError := opts.Unmarshal([]byte(data), obj.Msg()) + if uError != nil { + return fmt.Errorf("unmarshal error %s", strings.Replace( + uError.Error(), "\u00a0", " ", -1)[7:]) + } + + vErr := obj.validateToAndFrom() + if vErr != nil { + return vErr + } + return nil +} + +func (obj *patternFlowEthernetPauseDstCounter) ToJson() (string, error) { + vErr := obj.validateToAndFrom() + if vErr != nil { + return "", vErr + } + opts := protojson.MarshalOptions{ + UseProtoNames: true, + AllowPartial: true, + EmitUnpopulated: false, + Indent: " ", + } + data, err := opts.Marshal(obj.Msg()) + if err != nil { + return "", err + } + return string(data), nil +} + +func (obj *patternFlowEthernetPauseDstCounter) FromJson(value string) error { + opts := protojson.UnmarshalOptions{ + AllowPartial: true, + DiscardUnknown: false, + } + if value == "" { + value = "{}" + } + uError := opts.Unmarshal([]byte(value), obj.Msg()) + if uError != nil { + return fmt.Errorf("unmarshal error %s", strings.Replace( + uError.Error(), "\u00a0", " ", -1)[7:]) + } + + err := obj.validateToAndFrom() + if err != nil { + return err + } + return nil +} + +func (obj *patternFlowEthernetPauseDstCounter) validateToAndFrom() error { + // emptyVars() + obj.validateObj(&obj.validation, true) + return obj.validationResult() +} + +func (obj *patternFlowEthernetPauseDstCounter) Validate() error { + // emptyVars() + obj.validateObj(&obj.validation, false) + return obj.validationResult() +} + +func (obj *patternFlowEthernetPauseDstCounter) String() string { + str, err := obj.ToYaml() + if err != nil { + return err.Error() + } + return str +} + +func (obj *patternFlowEthernetPauseDstCounter) Clone() (PatternFlowEthernetPauseDstCounter, error) { + vErr := obj.Validate() + if vErr != nil { + return nil, vErr + } + newObj := NewPatternFlowEthernetPauseDstCounter() + data, err := proto.Marshal(obj.Msg()) + if err != nil { + return nil, err + } + pbErr := proto.Unmarshal(data, newObj.Msg()) + if pbErr != nil { + return nil, pbErr + } + return newObj, nil +} + +// PatternFlowEthernetPauseDstCounter is mac counter pattern +type PatternFlowEthernetPauseDstCounter interface { + Validation + // Msg marshals PatternFlowEthernetPauseDstCounter to protobuf object *otg.PatternFlowEthernetPauseDstCounter + // and doesn't set defaults + Msg() *otg.PatternFlowEthernetPauseDstCounter + // SetMsg unmarshals PatternFlowEthernetPauseDstCounter from protobuf object *otg.PatternFlowEthernetPauseDstCounter + // and doesn't set defaults + SetMsg(*otg.PatternFlowEthernetPauseDstCounter) PatternFlowEthernetPauseDstCounter + // ToProto marshals PatternFlowEthernetPauseDstCounter to protobuf object *otg.PatternFlowEthernetPauseDstCounter + ToProto() (*otg.PatternFlowEthernetPauseDstCounter, error) + // ToPbText marshals PatternFlowEthernetPauseDstCounter to protobuf text + ToPbText() (string, error) + // ToYaml marshals PatternFlowEthernetPauseDstCounter to YAML text + ToYaml() (string, error) + // ToJson marshals PatternFlowEthernetPauseDstCounter to JSON text + ToJson() (string, error) + // FromProto unmarshals PatternFlowEthernetPauseDstCounter from protobuf object *otg.PatternFlowEthernetPauseDstCounter + FromProto(msg *otg.PatternFlowEthernetPauseDstCounter) (PatternFlowEthernetPauseDstCounter, error) + // FromPbText unmarshals PatternFlowEthernetPauseDstCounter from protobuf text + FromPbText(value string) error + // FromYaml unmarshals PatternFlowEthernetPauseDstCounter from YAML text + FromYaml(value string) error + // FromJson unmarshals PatternFlowEthernetPauseDstCounter from JSON text + FromJson(value string) error + // Validate validates PatternFlowEthernetPauseDstCounter + Validate() error + // A stringer function + String() string + // Clones the object + Clone() (PatternFlowEthernetPauseDstCounter, error) + validateToAndFrom() error + validateObj(vObj *validation, set_default bool) + setDefault() + // Start returns string, set in PatternFlowEthernetPauseDstCounter. + Start() string + // SetStart assigns string provided by user to PatternFlowEthernetPauseDstCounter + SetStart(value string) PatternFlowEthernetPauseDstCounter + // HasStart checks if Start has been set in PatternFlowEthernetPauseDstCounter + HasStart() bool + // Step returns string, set in PatternFlowEthernetPauseDstCounter. + Step() string + // SetStep assigns string provided by user to PatternFlowEthernetPauseDstCounter + SetStep(value string) PatternFlowEthernetPauseDstCounter + // HasStep checks if Step has been set in PatternFlowEthernetPauseDstCounter + HasStep() bool + // Count returns uint32, set in PatternFlowEthernetPauseDstCounter. + Count() uint32 + // SetCount assigns uint32 provided by user to PatternFlowEthernetPauseDstCounter + SetCount(value uint32) PatternFlowEthernetPauseDstCounter + // HasCount checks if Count has been set in PatternFlowEthernetPauseDstCounter + HasCount() bool +} + +// description is TBD +// Start returns a string +func (obj *patternFlowEthernetPauseDstCounter) Start() string { + + return *obj.obj.Start + +} + +// description is TBD +// Start returns a string +func (obj *patternFlowEthernetPauseDstCounter) HasStart() bool { + return obj.obj.Start != nil +} + +// description is TBD +// SetStart sets the string value in the PatternFlowEthernetPauseDstCounter object +func (obj *patternFlowEthernetPauseDstCounter) SetStart(value string) PatternFlowEthernetPauseDstCounter { + + obj.obj.Start = &value + return obj +} + +// description is TBD +// Step returns a string +func (obj *patternFlowEthernetPauseDstCounter) Step() string { + + return *obj.obj.Step + +} + +// description is TBD +// Step returns a string +func (obj *patternFlowEthernetPauseDstCounter) HasStep() bool { + return obj.obj.Step != nil +} + +// description is TBD +// SetStep sets the string value in the PatternFlowEthernetPauseDstCounter object +func (obj *patternFlowEthernetPauseDstCounter) SetStep(value string) PatternFlowEthernetPauseDstCounter { + + obj.obj.Step = &value + return obj +} + +// description is TBD +// Count returns a uint32 +func (obj *patternFlowEthernetPauseDstCounter) Count() uint32 { + + return *obj.obj.Count + +} + +// description is TBD +// Count returns a uint32 +func (obj *patternFlowEthernetPauseDstCounter) HasCount() bool { + return obj.obj.Count != nil +} + +// description is TBD +// SetCount sets the uint32 value in the PatternFlowEthernetPauseDstCounter object +func (obj *patternFlowEthernetPauseDstCounter) SetCount(value uint32) PatternFlowEthernetPauseDstCounter { + + obj.obj.Count = &value + return obj +} + +func (obj *patternFlowEthernetPauseDstCounter) validateObj(vObj *validation, set_default bool) { + if set_default { + obj.setDefault() + } + + if obj.obj.Start != nil { + + err := obj.validateMac(obj.Start()) + if err != nil { + vObj.validationErrors = append(vObj.validationErrors, fmt.Sprintf("%s %s", err.Error(), "on PatternFlowEthernetPauseDstCounter.Start")) + } + + } + + if obj.obj.Step != nil { + + err := obj.validateMac(obj.Step()) + if err != nil { + vObj.validationErrors = append(vObj.validationErrors, fmt.Sprintf("%s %s", err.Error(), "on PatternFlowEthernetPauseDstCounter.Step")) + } + + } + +} + +func (obj *patternFlowEthernetPauseDstCounter) setDefault() { + if obj.obj.Start == nil { + obj.SetStart("01:80:c2:00:00:01") + } + if obj.obj.Step == nil { + obj.SetStep("00:00:00:00:00:01") + } + if obj.obj.Count == nil { + obj.SetCount(1) + } + +} + +// ***** PatternFlowEthernetPauseDstMetricTag ***** +type patternFlowEthernetPauseDstMetricTag struct { + validation + obj *otg.PatternFlowEthernetPauseDstMetricTag +} + +func NewPatternFlowEthernetPauseDstMetricTag() PatternFlowEthernetPauseDstMetricTag { + obj := patternFlowEthernetPauseDstMetricTag{obj: &otg.PatternFlowEthernetPauseDstMetricTag{}} + obj.setDefault() + return &obj +} + +func (obj *patternFlowEthernetPauseDstMetricTag) Msg() *otg.PatternFlowEthernetPauseDstMetricTag { + return obj.obj +} + +func (obj *patternFlowEthernetPauseDstMetricTag) SetMsg(msg *otg.PatternFlowEthernetPauseDstMetricTag) PatternFlowEthernetPauseDstMetricTag { + + proto.Merge(obj.obj, msg) + return obj +} + +func (obj *patternFlowEthernetPauseDstMetricTag) ToProto() (*otg.PatternFlowEthernetPauseDstMetricTag, error) { + err := obj.validateToAndFrom() + if err != nil { + return nil, err + } + return obj.Msg(), nil +} + +func (obj *patternFlowEthernetPauseDstMetricTag) FromProto(msg *otg.PatternFlowEthernetPauseDstMetricTag) (PatternFlowEthernetPauseDstMetricTag, error) { + newObj := obj.SetMsg(msg) + err := newObj.validateToAndFrom() + if err != nil { + return nil, err + } + return newObj, nil +} + +func (obj *patternFlowEthernetPauseDstMetricTag) ToPbText() (string, error) { + vErr := obj.validateToAndFrom() + if vErr != nil { + return "", vErr + } + protoMarshal, err := proto.Marshal(obj.Msg()) + if err != nil { + return "", err + } + return string(protoMarshal), nil +} + +func (obj *patternFlowEthernetPauseDstMetricTag) FromPbText(value string) error { + retObj := proto.Unmarshal([]byte(value), obj.Msg()) + if retObj != nil { + return retObj + } + + vErr := obj.validateToAndFrom() + if vErr != nil { + return vErr + } + return retObj +} + +func (obj *patternFlowEthernetPauseDstMetricTag) ToYaml() (string, error) { + vErr := obj.validateToAndFrom() + if vErr != nil { + return "", vErr + } + opts := protojson.MarshalOptions{ + UseProtoNames: true, + AllowPartial: true, + EmitUnpopulated: false, + } + data, err := opts.Marshal(obj.Msg()) + if err != nil { + return "", err + } + data, err = yaml.JSONToYAML(data) + if err != nil { + return "", err + } + return string(data), nil +} + +func (obj *patternFlowEthernetPauseDstMetricTag) FromYaml(value string) error { + if value == "" { + value = "{}" + } + data, err := yaml.YAMLToJSON([]byte(value)) + if err != nil { + return err + } + opts := protojson.UnmarshalOptions{ + AllowPartial: true, + DiscardUnknown: false, + } + uError := opts.Unmarshal([]byte(data), obj.Msg()) + if uError != nil { + return fmt.Errorf("unmarshal error %s", strings.Replace( + uError.Error(), "\u00a0", " ", -1)[7:]) + } + + vErr := obj.validateToAndFrom() + if vErr != nil { + return vErr + } + return nil +} + +func (obj *patternFlowEthernetPauseDstMetricTag) ToJson() (string, error) { + vErr := obj.validateToAndFrom() + if vErr != nil { + return "", vErr + } + opts := protojson.MarshalOptions{ + UseProtoNames: true, + AllowPartial: true, + EmitUnpopulated: false, + Indent: " ", + } + data, err := opts.Marshal(obj.Msg()) + if err != nil { + return "", err + } + return string(data), nil +} + +func (obj *patternFlowEthernetPauseDstMetricTag) FromJson(value string) error { + opts := protojson.UnmarshalOptions{ + AllowPartial: true, + DiscardUnknown: false, + } + if value == "" { + value = "{}" + } + uError := opts.Unmarshal([]byte(value), obj.Msg()) + if uError != nil { + return fmt.Errorf("unmarshal error %s", strings.Replace( + uError.Error(), "\u00a0", " ", -1)[7:]) + } + + err := obj.validateToAndFrom() + if err != nil { + return err + } + return nil +} + +func (obj *patternFlowEthernetPauseDstMetricTag) validateToAndFrom() error { + // emptyVars() + obj.validateObj(&obj.validation, true) + return obj.validationResult() +} + +func (obj *patternFlowEthernetPauseDstMetricTag) Validate() error { + // emptyVars() + obj.validateObj(&obj.validation, false) + return obj.validationResult() +} + +func (obj *patternFlowEthernetPauseDstMetricTag) String() string { + str, err := obj.ToYaml() + if err != nil { + return err.Error() + } + return str +} + +func (obj *patternFlowEthernetPauseDstMetricTag) Clone() (PatternFlowEthernetPauseDstMetricTag, error) { + vErr := obj.Validate() + if vErr != nil { + return nil, vErr + } + newObj := NewPatternFlowEthernetPauseDstMetricTag() + data, err := proto.Marshal(obj.Msg()) + if err != nil { + return nil, err + } + pbErr := proto.Unmarshal(data, newObj.Msg()) + if pbErr != nil { + return nil, pbErr + } + return newObj, nil +} + +// PatternFlowEthernetPauseDstMetricTag is metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. +type PatternFlowEthernetPauseDstMetricTag interface { + Validation + // Msg marshals PatternFlowEthernetPauseDstMetricTag to protobuf object *otg.PatternFlowEthernetPauseDstMetricTag + // and doesn't set defaults + Msg() *otg.PatternFlowEthernetPauseDstMetricTag + // SetMsg unmarshals PatternFlowEthernetPauseDstMetricTag from protobuf object *otg.PatternFlowEthernetPauseDstMetricTag + // and doesn't set defaults + SetMsg(*otg.PatternFlowEthernetPauseDstMetricTag) PatternFlowEthernetPauseDstMetricTag + // ToProto marshals PatternFlowEthernetPauseDstMetricTag to protobuf object *otg.PatternFlowEthernetPauseDstMetricTag + ToProto() (*otg.PatternFlowEthernetPauseDstMetricTag, error) + // ToPbText marshals PatternFlowEthernetPauseDstMetricTag to protobuf text + ToPbText() (string, error) + // ToYaml marshals PatternFlowEthernetPauseDstMetricTag to YAML text + ToYaml() (string, error) + // ToJson marshals PatternFlowEthernetPauseDstMetricTag to JSON text + ToJson() (string, error) + // FromProto unmarshals PatternFlowEthernetPauseDstMetricTag from protobuf object *otg.PatternFlowEthernetPauseDstMetricTag + FromProto(msg *otg.PatternFlowEthernetPauseDstMetricTag) (PatternFlowEthernetPauseDstMetricTag, error) + // FromPbText unmarshals PatternFlowEthernetPauseDstMetricTag from protobuf text + FromPbText(value string) error + // FromYaml unmarshals PatternFlowEthernetPauseDstMetricTag from YAML text + FromYaml(value string) error + // FromJson unmarshals PatternFlowEthernetPauseDstMetricTag from JSON text + FromJson(value string) error + // Validate validates PatternFlowEthernetPauseDstMetricTag + Validate() error + // A stringer function + String() string + // Clones the object + Clone() (PatternFlowEthernetPauseDstMetricTag, error) + validateToAndFrom() error + validateObj(vObj *validation, set_default bool) + setDefault() + // Name returns string, set in PatternFlowEthernetPauseDstMetricTag. + Name() string + // SetName assigns string provided by user to PatternFlowEthernetPauseDstMetricTag + SetName(value string) PatternFlowEthernetPauseDstMetricTag + // Offset returns uint32, set in PatternFlowEthernetPauseDstMetricTag. + Offset() uint32 + // SetOffset assigns uint32 provided by user to PatternFlowEthernetPauseDstMetricTag + SetOffset(value uint32) PatternFlowEthernetPauseDstMetricTag + // HasOffset checks if Offset has been set in PatternFlowEthernetPauseDstMetricTag + HasOffset() bool + // Length returns uint32, set in PatternFlowEthernetPauseDstMetricTag. + Length() uint32 + // SetLength assigns uint32 provided by user to PatternFlowEthernetPauseDstMetricTag + SetLength(value uint32) PatternFlowEthernetPauseDstMetricTag + // HasLength checks if Length has been set in PatternFlowEthernetPauseDstMetricTag + HasLength() bool +} + +// Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field +// Name returns a string +func (obj *patternFlowEthernetPauseDstMetricTag) Name() string { + + return *obj.obj.Name + +} + +// Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field +// SetName sets the string value in the PatternFlowEthernetPauseDstMetricTag object +func (obj *patternFlowEthernetPauseDstMetricTag) SetName(value string) PatternFlowEthernetPauseDstMetricTag { + + obj.obj.Name = &value + return obj +} + +// Offset in bits relative to start of corresponding header field +// Offset returns a uint32 +func (obj *patternFlowEthernetPauseDstMetricTag) Offset() uint32 { + + return *obj.obj.Offset + +} + +// Offset in bits relative to start of corresponding header field +// Offset returns a uint32 +func (obj *patternFlowEthernetPauseDstMetricTag) HasOffset() bool { + return obj.obj.Offset != nil +} + +// Offset in bits relative to start of corresponding header field +// SetOffset sets the uint32 value in the PatternFlowEthernetPauseDstMetricTag object +func (obj *patternFlowEthernetPauseDstMetricTag) SetOffset(value uint32) PatternFlowEthernetPauseDstMetricTag { + + obj.obj.Offset = &value + return obj +} + +// Number of bits to track for metrics starting from configured offset of corresponding header field +// Length returns a uint32 +func (obj *patternFlowEthernetPauseDstMetricTag) Length() uint32 { + + return *obj.obj.Length + +} + +// Number of bits to track for metrics starting from configured offset of corresponding header field +// Length returns a uint32 +func (obj *patternFlowEthernetPauseDstMetricTag) HasLength() bool { + return obj.obj.Length != nil +} + +// Number of bits to track for metrics starting from configured offset of corresponding header field +// SetLength sets the uint32 value in the PatternFlowEthernetPauseDstMetricTag object +func (obj *patternFlowEthernetPauseDstMetricTag) SetLength(value uint32) PatternFlowEthernetPauseDstMetricTag { + + obj.obj.Length = &value + return obj +} + +func (obj *patternFlowEthernetPauseDstMetricTag) validateObj(vObj *validation, set_default bool) { + if set_default { + obj.setDefault() + } + + // Name is required + if obj.obj.Name == nil { + vObj.validationErrors = append(vObj.validationErrors, "Name is required field on interface PatternFlowEthernetPauseDstMetricTag") + } + + if obj.obj.Offset != nil { + + if *obj.obj.Offset > 47 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("0 <= PatternFlowEthernetPauseDstMetricTag.Offset <= 47 but Got %d", *obj.obj.Offset)) + } + + } + + if obj.obj.Length != nil { + + if *obj.obj.Length < 1 || *obj.obj.Length > 48 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("1 <= PatternFlowEthernetPauseDstMetricTag.Length <= 48 but Got %d", *obj.obj.Length)) + } + + } + +} + +func (obj *patternFlowEthernetPauseDstMetricTag) setDefault() { + if obj.obj.Offset == nil { + obj.SetOffset(0) + } + if obj.obj.Length == nil { + obj.SetLength(48) + } + +} + +// ***** PatternFlowEthernetPauseSrcCounter ***** +type patternFlowEthernetPauseSrcCounter struct { + validation + obj *otg.PatternFlowEthernetPauseSrcCounter +} + +func NewPatternFlowEthernetPauseSrcCounter() PatternFlowEthernetPauseSrcCounter { + obj := patternFlowEthernetPauseSrcCounter{obj: &otg.PatternFlowEthernetPauseSrcCounter{}} + obj.setDefault() + return &obj +} + +func (obj *patternFlowEthernetPauseSrcCounter) Msg() *otg.PatternFlowEthernetPauseSrcCounter { + return obj.obj +} + +func (obj *patternFlowEthernetPauseSrcCounter) SetMsg(msg *otg.PatternFlowEthernetPauseSrcCounter) PatternFlowEthernetPauseSrcCounter { + + proto.Merge(obj.obj, msg) + return obj +} + +func (obj *patternFlowEthernetPauseSrcCounter) ToProto() (*otg.PatternFlowEthernetPauseSrcCounter, error) { + err := obj.validateToAndFrom() + if err != nil { + return nil, err + } + return obj.Msg(), nil +} + +func (obj *patternFlowEthernetPauseSrcCounter) FromProto(msg *otg.PatternFlowEthernetPauseSrcCounter) (PatternFlowEthernetPauseSrcCounter, error) { + newObj := obj.SetMsg(msg) + err := newObj.validateToAndFrom() + if err != nil { + return nil, err + } + return newObj, nil +} + +func (obj *patternFlowEthernetPauseSrcCounter) ToPbText() (string, error) { + vErr := obj.validateToAndFrom() + if vErr != nil { + return "", vErr + } + protoMarshal, err := proto.Marshal(obj.Msg()) + if err != nil { + return "", err + } + return string(protoMarshal), nil +} + +func (obj *patternFlowEthernetPauseSrcCounter) FromPbText(value string) error { + retObj := proto.Unmarshal([]byte(value), obj.Msg()) + if retObj != nil { + return retObj + } + + vErr := obj.validateToAndFrom() + if vErr != nil { + return vErr + } + return retObj +} + +func (obj *patternFlowEthernetPauseSrcCounter) ToYaml() (string, error) { + vErr := obj.validateToAndFrom() + if vErr != nil { + return "", vErr + } + opts := protojson.MarshalOptions{ + UseProtoNames: true, + AllowPartial: true, + EmitUnpopulated: false, + } + data, err := opts.Marshal(obj.Msg()) + if err != nil { + return "", err + } + data, err = yaml.JSONToYAML(data) + if err != nil { + return "", err + } + return string(data), nil +} + +func (obj *patternFlowEthernetPauseSrcCounter) FromYaml(value string) error { + if value == "" { + value = "{}" + } + data, err := yaml.YAMLToJSON([]byte(value)) + if err != nil { + return err + } + opts := protojson.UnmarshalOptions{ + AllowPartial: true, + DiscardUnknown: false, + } + uError := opts.Unmarshal([]byte(data), obj.Msg()) + if uError != nil { + return fmt.Errorf("unmarshal error %s", strings.Replace( + uError.Error(), "\u00a0", " ", -1)[7:]) + } + + vErr := obj.validateToAndFrom() + if vErr != nil { + return vErr + } + return nil +} + +func (obj *patternFlowEthernetPauseSrcCounter) ToJson() (string, error) { + vErr := obj.validateToAndFrom() + if vErr != nil { + return "", vErr + } + opts := protojson.MarshalOptions{ + UseProtoNames: true, + AllowPartial: true, + EmitUnpopulated: false, + Indent: " ", + } + data, err := opts.Marshal(obj.Msg()) + if err != nil { + return "", err + } + return string(data), nil +} + +func (obj *patternFlowEthernetPauseSrcCounter) FromJson(value string) error { + opts := protojson.UnmarshalOptions{ + AllowPartial: true, + DiscardUnknown: false, + } + if value == "" { + value = "{}" + } + uError := opts.Unmarshal([]byte(value), obj.Msg()) + if uError != nil { + return fmt.Errorf("unmarshal error %s", strings.Replace( + uError.Error(), "\u00a0", " ", -1)[7:]) + } + + err := obj.validateToAndFrom() + if err != nil { + return err + } + return nil +} + +func (obj *patternFlowEthernetPauseSrcCounter) validateToAndFrom() error { + // emptyVars() + obj.validateObj(&obj.validation, true) + return obj.validationResult() +} + +func (obj *patternFlowEthernetPauseSrcCounter) Validate() error { + // emptyVars() + obj.validateObj(&obj.validation, false) + return obj.validationResult() +} + +func (obj *patternFlowEthernetPauseSrcCounter) String() string { + str, err := obj.ToYaml() + if err != nil { + return err.Error() + } + return str +} + +func (obj *patternFlowEthernetPauseSrcCounter) Clone() (PatternFlowEthernetPauseSrcCounter, error) { + vErr := obj.Validate() + if vErr != nil { + return nil, vErr + } + newObj := NewPatternFlowEthernetPauseSrcCounter() + data, err := proto.Marshal(obj.Msg()) + if err != nil { + return nil, err + } + pbErr := proto.Unmarshal(data, newObj.Msg()) + if pbErr != nil { + return nil, pbErr + } + return newObj, nil +} + +// PatternFlowEthernetPauseSrcCounter is mac counter pattern +type PatternFlowEthernetPauseSrcCounter interface { + Validation + // Msg marshals PatternFlowEthernetPauseSrcCounter to protobuf object *otg.PatternFlowEthernetPauseSrcCounter + // and doesn't set defaults + Msg() *otg.PatternFlowEthernetPauseSrcCounter + // SetMsg unmarshals PatternFlowEthernetPauseSrcCounter from protobuf object *otg.PatternFlowEthernetPauseSrcCounter + // and doesn't set defaults + SetMsg(*otg.PatternFlowEthernetPauseSrcCounter) PatternFlowEthernetPauseSrcCounter + // ToProto marshals PatternFlowEthernetPauseSrcCounter to protobuf object *otg.PatternFlowEthernetPauseSrcCounter + ToProto() (*otg.PatternFlowEthernetPauseSrcCounter, error) + // ToPbText marshals PatternFlowEthernetPauseSrcCounter to protobuf text + ToPbText() (string, error) + // ToYaml marshals PatternFlowEthernetPauseSrcCounter to YAML text + ToYaml() (string, error) + // ToJson marshals PatternFlowEthernetPauseSrcCounter to JSON text + ToJson() (string, error) + // FromProto unmarshals PatternFlowEthernetPauseSrcCounter from protobuf object *otg.PatternFlowEthernetPauseSrcCounter + FromProto(msg *otg.PatternFlowEthernetPauseSrcCounter) (PatternFlowEthernetPauseSrcCounter, error) + // FromPbText unmarshals PatternFlowEthernetPauseSrcCounter from protobuf text + FromPbText(value string) error + // FromYaml unmarshals PatternFlowEthernetPauseSrcCounter from YAML text + FromYaml(value string) error + // FromJson unmarshals PatternFlowEthernetPauseSrcCounter from JSON text + FromJson(value string) error + // Validate validates PatternFlowEthernetPauseSrcCounter + Validate() error + // A stringer function + String() string + // Clones the object + Clone() (PatternFlowEthernetPauseSrcCounter, error) + validateToAndFrom() error + validateObj(vObj *validation, set_default bool) + setDefault() + // Start returns string, set in PatternFlowEthernetPauseSrcCounter. + Start() string + // SetStart assigns string provided by user to PatternFlowEthernetPauseSrcCounter + SetStart(value string) PatternFlowEthernetPauseSrcCounter + // HasStart checks if Start has been set in PatternFlowEthernetPauseSrcCounter + HasStart() bool + // Step returns string, set in PatternFlowEthernetPauseSrcCounter. + Step() string + // SetStep assigns string provided by user to PatternFlowEthernetPauseSrcCounter + SetStep(value string) PatternFlowEthernetPauseSrcCounter + // HasStep checks if Step has been set in PatternFlowEthernetPauseSrcCounter + HasStep() bool + // Count returns uint32, set in PatternFlowEthernetPauseSrcCounter. + Count() uint32 + // SetCount assigns uint32 provided by user to PatternFlowEthernetPauseSrcCounter + SetCount(value uint32) PatternFlowEthernetPauseSrcCounter + // HasCount checks if Count has been set in PatternFlowEthernetPauseSrcCounter + HasCount() bool +} + +// description is TBD +// Start returns a string +func (obj *patternFlowEthernetPauseSrcCounter) Start() string { + + return *obj.obj.Start + +} + +// description is TBD +// Start returns a string +func (obj *patternFlowEthernetPauseSrcCounter) HasStart() bool { + return obj.obj.Start != nil +} + +// description is TBD +// SetStart sets the string value in the PatternFlowEthernetPauseSrcCounter object +func (obj *patternFlowEthernetPauseSrcCounter) SetStart(value string) PatternFlowEthernetPauseSrcCounter { + + obj.obj.Start = &value + return obj +} + +// description is TBD +// Step returns a string +func (obj *patternFlowEthernetPauseSrcCounter) Step() string { + + return *obj.obj.Step + +} + +// description is TBD +// Step returns a string +func (obj *patternFlowEthernetPauseSrcCounter) HasStep() bool { + return obj.obj.Step != nil +} + +// description is TBD +// SetStep sets the string value in the PatternFlowEthernetPauseSrcCounter object +func (obj *patternFlowEthernetPauseSrcCounter) SetStep(value string) PatternFlowEthernetPauseSrcCounter { + + obj.obj.Step = &value + return obj +} + +// description is TBD +// Count returns a uint32 +func (obj *patternFlowEthernetPauseSrcCounter) Count() uint32 { + + return *obj.obj.Count + +} + +// description is TBD +// Count returns a uint32 +func (obj *patternFlowEthernetPauseSrcCounter) HasCount() bool { + return obj.obj.Count != nil +} + +// description is TBD +// SetCount sets the uint32 value in the PatternFlowEthernetPauseSrcCounter object +func (obj *patternFlowEthernetPauseSrcCounter) SetCount(value uint32) PatternFlowEthernetPauseSrcCounter { + + obj.obj.Count = &value + return obj +} + +func (obj *patternFlowEthernetPauseSrcCounter) validateObj(vObj *validation, set_default bool) { + if set_default { + obj.setDefault() } - if obj.obj.Ipv6Mdt == nil { - obj.SetIpv6Mdt(false) + + if obj.obj.Start != nil { + + err := obj.validateMac(obj.Start()) + if err != nil { + vObj.validationErrors = append(vObj.validationErrors, fmt.Sprintf("%s %s", err.Error(), "on PatternFlowEthernetPauseSrcCounter.Start")) + } + } - if obj.obj.Ipv6MulticastMplsVpn == nil { - obj.SetIpv6MulticastMplsVpn(false) + + if obj.obj.Step != nil { + + err := obj.validateMac(obj.Step()) + if err != nil { + vObj.validationErrors = append(vObj.validationErrors, fmt.Sprintf("%s %s", err.Error(), "on PatternFlowEthernetPauseSrcCounter.Step")) + } + } - if obj.obj.Ipv6UnicastFlowSpec == nil { - obj.SetIpv6UnicastFlowSpec(false) + +} + +func (obj *patternFlowEthernetPauseSrcCounter) setDefault() { + if obj.obj.Start == nil { + obj.SetStart("00:00:00:00:00:00") } - if obj.obj.Ipv6SrTePolicy == nil { - obj.SetIpv6SrTePolicy(false) + if obj.obj.Step == nil { + obj.SetStep("00:00:00:00:00:01") } - if obj.obj.Ipv6UnicastAddPath == nil { - obj.SetIpv6UnicastAddPath(false) + if obj.obj.Count == nil { + obj.SetCount(1) } } -// ***** BgpLearnedInformationFilter ***** -type bgpLearnedInformationFilter struct { +// ***** PatternFlowEthernetPauseSrcMetricTag ***** +type patternFlowEthernetPauseSrcMetricTag struct { validation - obj *otg.BgpLearnedInformationFilter + obj *otg.PatternFlowEthernetPauseSrcMetricTag } -func NewBgpLearnedInformationFilter() BgpLearnedInformationFilter { - obj := bgpLearnedInformationFilter{obj: &otg.BgpLearnedInformationFilter{}} +func NewPatternFlowEthernetPauseSrcMetricTag() PatternFlowEthernetPauseSrcMetricTag { + obj := patternFlowEthernetPauseSrcMetricTag{obj: &otg.PatternFlowEthernetPauseSrcMetricTag{}} obj.setDefault() return &obj } -func (obj *bgpLearnedInformationFilter) Msg() *otg.BgpLearnedInformationFilter { +func (obj *patternFlowEthernetPauseSrcMetricTag) Msg() *otg.PatternFlowEthernetPauseSrcMetricTag { return obj.obj } -func (obj *bgpLearnedInformationFilter) SetMsg(msg *otg.BgpLearnedInformationFilter) BgpLearnedInformationFilter { +func (obj *patternFlowEthernetPauseSrcMetricTag) SetMsg(msg *otg.PatternFlowEthernetPauseSrcMetricTag) PatternFlowEthernetPauseSrcMetricTag { proto.Merge(obj.obj, msg) return obj } -func (obj *bgpLearnedInformationFilter) ToProto() (*otg.BgpLearnedInformationFilter, error) { +func (obj *patternFlowEthernetPauseSrcMetricTag) ToProto() (*otg.PatternFlowEthernetPauseSrcMetricTag, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -175339,7 +221149,7 @@ func (obj *bgpLearnedInformationFilter) ToProto() (*otg.BgpLearnedInformationFil return obj.Msg(), nil } -func (obj *bgpLearnedInformationFilter) FromProto(msg *otg.BgpLearnedInformationFilter) (BgpLearnedInformationFilter, error) { +func (obj *patternFlowEthernetPauseSrcMetricTag) FromProto(msg *otg.PatternFlowEthernetPauseSrcMetricTag) (PatternFlowEthernetPauseSrcMetricTag, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -175348,7 +221158,7 @@ func (obj *bgpLearnedInformationFilter) FromProto(msg *otg.BgpLearnedInformation return newObj, nil } -func (obj *bgpLearnedInformationFilter) ToPbText() (string, error) { +func (obj *patternFlowEthernetPauseSrcMetricTag) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -175360,7 +221170,7 @@ func (obj *bgpLearnedInformationFilter) ToPbText() (string, error) { return string(protoMarshal), nil } -func (obj *bgpLearnedInformationFilter) FromPbText(value string) error { +func (obj *patternFlowEthernetPauseSrcMetricTag) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj @@ -175373,7 +221183,7 @@ func (obj *bgpLearnedInformationFilter) FromPbText(value string) error { return retObj } -func (obj *bgpLearnedInformationFilter) ToYaml() (string, error) { +func (obj *patternFlowEthernetPauseSrcMetricTag) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -175394,7 +221204,7 @@ func (obj *bgpLearnedInformationFilter) ToYaml() (string, error) { return string(data), nil } -func (obj *bgpLearnedInformationFilter) FromYaml(value string) error { +func (obj *patternFlowEthernetPauseSrcMetricTag) FromYaml(value string) error { if value == "" { value = "{}" } @@ -175419,7 +221229,7 @@ func (obj *bgpLearnedInformationFilter) FromYaml(value string) error { return nil } -func (obj *bgpLearnedInformationFilter) ToJson() (string, error) { +func (obj *patternFlowEthernetPauseSrcMetricTag) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -175437,7 +221247,7 @@ func (obj *bgpLearnedInformationFilter) ToJson() (string, error) { return string(data), nil } -func (obj *bgpLearnedInformationFilter) FromJson(value string) error { +func (obj *patternFlowEthernetPauseSrcMetricTag) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -175458,19 +221268,19 @@ func (obj *bgpLearnedInformationFilter) FromJson(value string) error { return nil } -func (obj *bgpLearnedInformationFilter) validateToAndFrom() error { +func (obj *patternFlowEthernetPauseSrcMetricTag) validateToAndFrom() error { // emptyVars() obj.validateObj(&obj.validation, true) return obj.validationResult() } -func (obj *bgpLearnedInformationFilter) Validate() error { +func (obj *patternFlowEthernetPauseSrcMetricTag) Validate() error { // emptyVars() obj.validateObj(&obj.validation, false) return obj.validationResult() } -func (obj *bgpLearnedInformationFilter) String() string { +func (obj *patternFlowEthernetPauseSrcMetricTag) String() string { str, err := obj.ToYaml() if err != nil { return err.Error() @@ -175478,12 +221288,12 @@ func (obj *bgpLearnedInformationFilter) String() string { return str } -func (obj *bgpLearnedInformationFilter) Clone() (BgpLearnedInformationFilter, error) { +func (obj *patternFlowEthernetPauseSrcMetricTag) Clone() (PatternFlowEthernetPauseSrcMetricTag, error) { vErr := obj.Validate() if vErr != nil { return nil, vErr } - newObj := NewBgpLearnedInformationFilter() + newObj := NewPatternFlowEthernetPauseSrcMetricTag() data, err := proto.Marshal(obj.Msg()) if err != nil { return nil, err @@ -175495,145 +221305,183 @@ func (obj *bgpLearnedInformationFilter) Clone() (BgpLearnedInformationFilter, er return newObj, nil } -// BgpLearnedInformationFilter is configuration for controlling storage of BGP learned information recieved from the peer. -type BgpLearnedInformationFilter interface { +// PatternFlowEthernetPauseSrcMetricTag is metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. +type PatternFlowEthernetPauseSrcMetricTag interface { Validation - // Msg marshals BgpLearnedInformationFilter to protobuf object *otg.BgpLearnedInformationFilter + // Msg marshals PatternFlowEthernetPauseSrcMetricTag to protobuf object *otg.PatternFlowEthernetPauseSrcMetricTag // and doesn't set defaults - Msg() *otg.BgpLearnedInformationFilter - // SetMsg unmarshals BgpLearnedInformationFilter from protobuf object *otg.BgpLearnedInformationFilter + Msg() *otg.PatternFlowEthernetPauseSrcMetricTag + // SetMsg unmarshals PatternFlowEthernetPauseSrcMetricTag from protobuf object *otg.PatternFlowEthernetPauseSrcMetricTag // and doesn't set defaults - SetMsg(*otg.BgpLearnedInformationFilter) BgpLearnedInformationFilter - // ToProto marshals BgpLearnedInformationFilter to protobuf object *otg.BgpLearnedInformationFilter - ToProto() (*otg.BgpLearnedInformationFilter, error) - // ToPbText marshals BgpLearnedInformationFilter to protobuf text + SetMsg(*otg.PatternFlowEthernetPauseSrcMetricTag) PatternFlowEthernetPauseSrcMetricTag + // ToProto marshals PatternFlowEthernetPauseSrcMetricTag to protobuf object *otg.PatternFlowEthernetPauseSrcMetricTag + ToProto() (*otg.PatternFlowEthernetPauseSrcMetricTag, error) + // ToPbText marshals PatternFlowEthernetPauseSrcMetricTag to protobuf text ToPbText() (string, error) - // ToYaml marshals BgpLearnedInformationFilter to YAML text + // ToYaml marshals PatternFlowEthernetPauseSrcMetricTag to YAML text ToYaml() (string, error) - // ToJson marshals BgpLearnedInformationFilter to JSON text + // ToJson marshals PatternFlowEthernetPauseSrcMetricTag to JSON text ToJson() (string, error) - // FromProto unmarshals BgpLearnedInformationFilter from protobuf object *otg.BgpLearnedInformationFilter - FromProto(msg *otg.BgpLearnedInformationFilter) (BgpLearnedInformationFilter, error) - // FromPbText unmarshals BgpLearnedInformationFilter from protobuf text + // FromProto unmarshals PatternFlowEthernetPauseSrcMetricTag from protobuf object *otg.PatternFlowEthernetPauseSrcMetricTag + FromProto(msg *otg.PatternFlowEthernetPauseSrcMetricTag) (PatternFlowEthernetPauseSrcMetricTag, error) + // FromPbText unmarshals PatternFlowEthernetPauseSrcMetricTag from protobuf text FromPbText(value string) error - // FromYaml unmarshals BgpLearnedInformationFilter from YAML text + // FromYaml unmarshals PatternFlowEthernetPauseSrcMetricTag from YAML text FromYaml(value string) error - // FromJson unmarshals BgpLearnedInformationFilter from JSON text + // FromJson unmarshals PatternFlowEthernetPauseSrcMetricTag from JSON text FromJson(value string) error - // Validate validates BgpLearnedInformationFilter + // Validate validates PatternFlowEthernetPauseSrcMetricTag Validate() error // A stringer function String() string // Clones the object - Clone() (BgpLearnedInformationFilter, error) + Clone() (PatternFlowEthernetPauseSrcMetricTag, error) validateToAndFrom() error validateObj(vObj *validation, set_default bool) setDefault() - // UnicastIpv4Prefix returns bool, set in BgpLearnedInformationFilter. - UnicastIpv4Prefix() bool - // SetUnicastIpv4Prefix assigns bool provided by user to BgpLearnedInformationFilter - SetUnicastIpv4Prefix(value bool) BgpLearnedInformationFilter - // HasUnicastIpv4Prefix checks if UnicastIpv4Prefix has been set in BgpLearnedInformationFilter - HasUnicastIpv4Prefix() bool - // UnicastIpv6Prefix returns bool, set in BgpLearnedInformationFilter. - UnicastIpv6Prefix() bool - // SetUnicastIpv6Prefix assigns bool provided by user to BgpLearnedInformationFilter - SetUnicastIpv6Prefix(value bool) BgpLearnedInformationFilter - // HasUnicastIpv6Prefix checks if UnicastIpv6Prefix has been set in BgpLearnedInformationFilter - HasUnicastIpv6Prefix() bool + // Name returns string, set in PatternFlowEthernetPauseSrcMetricTag. + Name() string + // SetName assigns string provided by user to PatternFlowEthernetPauseSrcMetricTag + SetName(value string) PatternFlowEthernetPauseSrcMetricTag + // Offset returns uint32, set in PatternFlowEthernetPauseSrcMetricTag. + Offset() uint32 + // SetOffset assigns uint32 provided by user to PatternFlowEthernetPauseSrcMetricTag + SetOffset(value uint32) PatternFlowEthernetPauseSrcMetricTag + // HasOffset checks if Offset has been set in PatternFlowEthernetPauseSrcMetricTag + HasOffset() bool + // Length returns uint32, set in PatternFlowEthernetPauseSrcMetricTag. + Length() uint32 + // SetLength assigns uint32 provided by user to PatternFlowEthernetPauseSrcMetricTag + SetLength(value uint32) PatternFlowEthernetPauseSrcMetricTag + // HasLength checks if Length has been set in PatternFlowEthernetPauseSrcMetricTag + HasLength() bool } -// If enabled, will store the information related to Unicast IPv4 Prefixes recieved from the peer. -// UnicastIpv4Prefix returns a bool -func (obj *bgpLearnedInformationFilter) UnicastIpv4Prefix() bool { +// Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field +// Name returns a string +func (obj *patternFlowEthernetPauseSrcMetricTag) Name() string { - return *obj.obj.UnicastIpv4Prefix + return *obj.obj.Name } -// If enabled, will store the information related to Unicast IPv4 Prefixes recieved from the peer. -// UnicastIpv4Prefix returns a bool -func (obj *bgpLearnedInformationFilter) HasUnicastIpv4Prefix() bool { - return obj.obj.UnicastIpv4Prefix != nil +// Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field +// SetName sets the string value in the PatternFlowEthernetPauseSrcMetricTag object +func (obj *patternFlowEthernetPauseSrcMetricTag) SetName(value string) PatternFlowEthernetPauseSrcMetricTag { + + obj.obj.Name = &value + return obj } -// If enabled, will store the information related to Unicast IPv4 Prefixes recieved from the peer. -// SetUnicastIpv4Prefix sets the bool value in the BgpLearnedInformationFilter object -func (obj *bgpLearnedInformationFilter) SetUnicastIpv4Prefix(value bool) BgpLearnedInformationFilter { +// Offset in bits relative to start of corresponding header field +// Offset returns a uint32 +func (obj *patternFlowEthernetPauseSrcMetricTag) Offset() uint32 { - obj.obj.UnicastIpv4Prefix = &value + return *obj.obj.Offset + +} + +// Offset in bits relative to start of corresponding header field +// Offset returns a uint32 +func (obj *patternFlowEthernetPauseSrcMetricTag) HasOffset() bool { + return obj.obj.Offset != nil +} + +// Offset in bits relative to start of corresponding header field +// SetOffset sets the uint32 value in the PatternFlowEthernetPauseSrcMetricTag object +func (obj *patternFlowEthernetPauseSrcMetricTag) SetOffset(value uint32) PatternFlowEthernetPauseSrcMetricTag { + + obj.obj.Offset = &value return obj } -// If enabled, will store the information related to Unicast IPv6 Prefixes recieved from the peer. -// UnicastIpv6Prefix returns a bool -func (obj *bgpLearnedInformationFilter) UnicastIpv6Prefix() bool { +// Number of bits to track for metrics starting from configured offset of corresponding header field +// Length returns a uint32 +func (obj *patternFlowEthernetPauseSrcMetricTag) Length() uint32 { - return *obj.obj.UnicastIpv6Prefix + return *obj.obj.Length } -// If enabled, will store the information related to Unicast IPv6 Prefixes recieved from the peer. -// UnicastIpv6Prefix returns a bool -func (obj *bgpLearnedInformationFilter) HasUnicastIpv6Prefix() bool { - return obj.obj.UnicastIpv6Prefix != nil +// Number of bits to track for metrics starting from configured offset of corresponding header field +// Length returns a uint32 +func (obj *patternFlowEthernetPauseSrcMetricTag) HasLength() bool { + return obj.obj.Length != nil } -// If enabled, will store the information related to Unicast IPv6 Prefixes recieved from the peer. -// SetUnicastIpv6Prefix sets the bool value in the BgpLearnedInformationFilter object -func (obj *bgpLearnedInformationFilter) SetUnicastIpv6Prefix(value bool) BgpLearnedInformationFilter { +// Number of bits to track for metrics starting from configured offset of corresponding header field +// SetLength sets the uint32 value in the PatternFlowEthernetPauseSrcMetricTag object +func (obj *patternFlowEthernetPauseSrcMetricTag) SetLength(value uint32) PatternFlowEthernetPauseSrcMetricTag { - obj.obj.UnicastIpv6Prefix = &value + obj.obj.Length = &value return obj } -func (obj *bgpLearnedInformationFilter) validateObj(vObj *validation, set_default bool) { +func (obj *patternFlowEthernetPauseSrcMetricTag) validateObj(vObj *validation, set_default bool) { if set_default { obj.setDefault() } + // Name is required + if obj.obj.Name == nil { + vObj.validationErrors = append(vObj.validationErrors, "Name is required field on interface PatternFlowEthernetPauseSrcMetricTag") + } + + if obj.obj.Offset != nil { + + if *obj.obj.Offset > 47 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("0 <= PatternFlowEthernetPauseSrcMetricTag.Offset <= 47 but Got %d", *obj.obj.Offset)) + } + + } + + if obj.obj.Length != nil { + + if *obj.obj.Length < 1 || *obj.obj.Length > 48 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("1 <= PatternFlowEthernetPauseSrcMetricTag.Length <= 48 but Got %d", *obj.obj.Length)) + } + + } + } -func (obj *bgpLearnedInformationFilter) setDefault() { - if obj.obj.UnicastIpv4Prefix == nil { - obj.SetUnicastIpv4Prefix(false) +func (obj *patternFlowEthernetPauseSrcMetricTag) setDefault() { + if obj.obj.Offset == nil { + obj.SetOffset(0) } - if obj.obj.UnicastIpv6Prefix == nil { - obj.SetUnicastIpv6Prefix(false) + if obj.obj.Length == nil { + obj.SetLength(48) } } -// ***** BgpV4RouteRange ***** -type bgpV4RouteRange struct { +// ***** PatternFlowEthernetPauseEtherTypeCounter ***** +type patternFlowEthernetPauseEtherTypeCounter struct { validation - obj *otg.BgpV4RouteRange - addressesHolder BgpV4RouteRangeV4RouteAddressIter - advancedHolder BgpRouteAdvanced - communitiesHolder BgpV4RouteRangeBgpCommunityIter - asPathHolder BgpAsPath - addPathHolder BgpAddPath - extCommunitiesHolder BgpV4RouteRangeBgpExtCommunityIter - extendedCommunitiesHolder BgpV4RouteRangeBgpExtendedCommunityIter + obj *otg.PatternFlowEthernetPauseEtherTypeCounter } -func NewBgpV4RouteRange() BgpV4RouteRange { - obj := bgpV4RouteRange{obj: &otg.BgpV4RouteRange{}} +func NewPatternFlowEthernetPauseEtherTypeCounter() PatternFlowEthernetPauseEtherTypeCounter { + obj := patternFlowEthernetPauseEtherTypeCounter{obj: &otg.PatternFlowEthernetPauseEtherTypeCounter{}} obj.setDefault() return &obj } -func (obj *bgpV4RouteRange) Msg() *otg.BgpV4RouteRange { +func (obj *patternFlowEthernetPauseEtherTypeCounter) Msg() *otg.PatternFlowEthernetPauseEtherTypeCounter { return obj.obj } -func (obj *bgpV4RouteRange) SetMsg(msg *otg.BgpV4RouteRange) BgpV4RouteRange { - obj.setNil() +func (obj *patternFlowEthernetPauseEtherTypeCounter) SetMsg(msg *otg.PatternFlowEthernetPauseEtherTypeCounter) PatternFlowEthernetPauseEtherTypeCounter { + proto.Merge(obj.obj, msg) return obj } -func (obj *bgpV4RouteRange) ToProto() (*otg.BgpV4RouteRange, error) { +func (obj *patternFlowEthernetPauseEtherTypeCounter) ToProto() (*otg.PatternFlowEthernetPauseEtherTypeCounter, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -175641,7 +221489,7 @@ func (obj *bgpV4RouteRange) ToProto() (*otg.BgpV4RouteRange, error) { return obj.Msg(), nil } -func (obj *bgpV4RouteRange) FromProto(msg *otg.BgpV4RouteRange) (BgpV4RouteRange, error) { +func (obj *patternFlowEthernetPauseEtherTypeCounter) FromProto(msg *otg.PatternFlowEthernetPauseEtherTypeCounter) (PatternFlowEthernetPauseEtherTypeCounter, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -175650,7 +221498,7 @@ func (obj *bgpV4RouteRange) FromProto(msg *otg.BgpV4RouteRange) (BgpV4RouteRange return newObj, nil } -func (obj *bgpV4RouteRange) ToPbText() (string, error) { +func (obj *patternFlowEthernetPauseEtherTypeCounter) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -175662,12 +221510,12 @@ func (obj *bgpV4RouteRange) ToPbText() (string, error) { return string(protoMarshal), nil } -func (obj *bgpV4RouteRange) FromPbText(value string) error { +func (obj *patternFlowEthernetPauseEtherTypeCounter) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj } - obj.setNil() + vErr := obj.validateToAndFrom() if vErr != nil { return vErr @@ -175675,7 +221523,7 @@ func (obj *bgpV4RouteRange) FromPbText(value string) error { return retObj } -func (obj *bgpV4RouteRange) ToYaml() (string, error) { +func (obj *patternFlowEthernetPauseEtherTypeCounter) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -175696,7 +221544,7 @@ func (obj *bgpV4RouteRange) ToYaml() (string, error) { return string(data), nil } -func (obj *bgpV4RouteRange) FromYaml(value string) error { +func (obj *patternFlowEthernetPauseEtherTypeCounter) FromYaml(value string) error { if value == "" { value = "{}" } @@ -175713,7 +221561,7 @@ func (obj *bgpV4RouteRange) FromYaml(value string) error { return fmt.Errorf("unmarshal error %s", strings.Replace( uError.Error(), "\u00a0", " ", -1)[7:]) } - obj.setNil() + vErr := obj.validateToAndFrom() if vErr != nil { return vErr @@ -175721,7 +221569,7 @@ func (obj *bgpV4RouteRange) FromYaml(value string) error { return nil } -func (obj *bgpV4RouteRange) ToJson() (string, error) { +func (obj *patternFlowEthernetPauseEtherTypeCounter) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -175739,7 +221587,7 @@ func (obj *bgpV4RouteRange) ToJson() (string, error) { return string(data), nil } -func (obj *bgpV4RouteRange) FromJson(value string) error { +func (obj *patternFlowEthernetPauseEtherTypeCounter) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -175752,7 +221600,7 @@ func (obj *bgpV4RouteRange) FromJson(value string) error { return fmt.Errorf("unmarshal error %s", strings.Replace( uError.Error(), "\u00a0", " ", -1)[7:]) } - obj.setNil() + err := obj.validateToAndFrom() if err != nil { return err @@ -175760,19 +221608,19 @@ func (obj *bgpV4RouteRange) FromJson(value string) error { return nil } -func (obj *bgpV4RouteRange) validateToAndFrom() error { +func (obj *patternFlowEthernetPauseEtherTypeCounter) validateToAndFrom() error { // emptyVars() obj.validateObj(&obj.validation, true) return obj.validationResult() } -func (obj *bgpV4RouteRange) Validate() error { +func (obj *patternFlowEthernetPauseEtherTypeCounter) Validate() error { // emptyVars() obj.validateObj(&obj.validation, false) return obj.validationResult() } -func (obj *bgpV4RouteRange) String() string { +func (obj *patternFlowEthernetPauseEtherTypeCounter) String() string { str, err := obj.ToYaml() if err != nil { return err.Error() @@ -175780,12 +221628,12 @@ func (obj *bgpV4RouteRange) String() string { return str } -func (obj *bgpV4RouteRange) Clone() (BgpV4RouteRange, error) { +func (obj *patternFlowEthernetPauseEtherTypeCounter) Clone() (PatternFlowEthernetPauseEtherTypeCounter, error) { vErr := obj.Validate() if vErr != nil { return nil, vErr } - newObj := NewBgpV4RouteRange() + newObj := NewPatternFlowEthernetPauseEtherTypeCounter() data, err := proto.Marshal(obj.Msg()) if err != nil { return nil, err @@ -175797,834 +221645,199 @@ func (obj *bgpV4RouteRange) Clone() (BgpV4RouteRange, error) { return newObj, nil } -func (obj *bgpV4RouteRange) setNil() { - obj.addressesHolder = nil - obj.advancedHolder = nil - obj.communitiesHolder = nil - obj.asPathHolder = nil - obj.addPathHolder = nil - obj.extCommunitiesHolder = nil - obj.extendedCommunitiesHolder = nil - obj.validationErrors = nil - obj.warnings = nil - obj.constraints = make(map[string]map[string]Constraints) -} - -// BgpV4RouteRange is emulated BGPv4 route range. -type BgpV4RouteRange interface { +// PatternFlowEthernetPauseEtherTypeCounter is integer counter pattern +type PatternFlowEthernetPauseEtherTypeCounter interface { Validation - // Msg marshals BgpV4RouteRange to protobuf object *otg.BgpV4RouteRange + // Msg marshals PatternFlowEthernetPauseEtherTypeCounter to protobuf object *otg.PatternFlowEthernetPauseEtherTypeCounter // and doesn't set defaults - Msg() *otg.BgpV4RouteRange - // SetMsg unmarshals BgpV4RouteRange from protobuf object *otg.BgpV4RouteRange + Msg() *otg.PatternFlowEthernetPauseEtherTypeCounter + // SetMsg unmarshals PatternFlowEthernetPauseEtherTypeCounter from protobuf object *otg.PatternFlowEthernetPauseEtherTypeCounter // and doesn't set defaults - SetMsg(*otg.BgpV4RouteRange) BgpV4RouteRange - // ToProto marshals BgpV4RouteRange to protobuf object *otg.BgpV4RouteRange - ToProto() (*otg.BgpV4RouteRange, error) - // ToPbText marshals BgpV4RouteRange to protobuf text + SetMsg(*otg.PatternFlowEthernetPauseEtherTypeCounter) PatternFlowEthernetPauseEtherTypeCounter + // ToProto marshals PatternFlowEthernetPauseEtherTypeCounter to protobuf object *otg.PatternFlowEthernetPauseEtherTypeCounter + ToProto() (*otg.PatternFlowEthernetPauseEtherTypeCounter, error) + // ToPbText marshals PatternFlowEthernetPauseEtherTypeCounter to protobuf text ToPbText() (string, error) - // ToYaml marshals BgpV4RouteRange to YAML text + // ToYaml marshals PatternFlowEthernetPauseEtherTypeCounter to YAML text ToYaml() (string, error) - // ToJson marshals BgpV4RouteRange to JSON text + // ToJson marshals PatternFlowEthernetPauseEtherTypeCounter to JSON text ToJson() (string, error) - // FromProto unmarshals BgpV4RouteRange from protobuf object *otg.BgpV4RouteRange - FromProto(msg *otg.BgpV4RouteRange) (BgpV4RouteRange, error) - // FromPbText unmarshals BgpV4RouteRange from protobuf text + // FromProto unmarshals PatternFlowEthernetPauseEtherTypeCounter from protobuf object *otg.PatternFlowEthernetPauseEtherTypeCounter + FromProto(msg *otg.PatternFlowEthernetPauseEtherTypeCounter) (PatternFlowEthernetPauseEtherTypeCounter, error) + // FromPbText unmarshals PatternFlowEthernetPauseEtherTypeCounter from protobuf text FromPbText(value string) error - // FromYaml unmarshals BgpV4RouteRange from YAML text + // FromYaml unmarshals PatternFlowEthernetPauseEtherTypeCounter from YAML text FromYaml(value string) error - // FromJson unmarshals BgpV4RouteRange from JSON text + // FromJson unmarshals PatternFlowEthernetPauseEtherTypeCounter from JSON text FromJson(value string) error - // Validate validates BgpV4RouteRange + // Validate validates PatternFlowEthernetPauseEtherTypeCounter Validate() error // A stringer function String() string // Clones the object - Clone() (BgpV4RouteRange, error) + Clone() (PatternFlowEthernetPauseEtherTypeCounter, error) validateToAndFrom() error validateObj(vObj *validation, set_default bool) setDefault() - // Addresses returns BgpV4RouteRangeV4RouteAddressIterIter, set in BgpV4RouteRange - Addresses() BgpV4RouteRangeV4RouteAddressIter - // NextHopMode returns BgpV4RouteRangeNextHopModeEnum, set in BgpV4RouteRange - NextHopMode() BgpV4RouteRangeNextHopModeEnum - // SetNextHopMode assigns BgpV4RouteRangeNextHopModeEnum provided by user to BgpV4RouteRange - SetNextHopMode(value BgpV4RouteRangeNextHopModeEnum) BgpV4RouteRange - // HasNextHopMode checks if NextHopMode has been set in BgpV4RouteRange - HasNextHopMode() bool - // NextHopAddressType returns BgpV4RouteRangeNextHopAddressTypeEnum, set in BgpV4RouteRange - NextHopAddressType() BgpV4RouteRangeNextHopAddressTypeEnum - // SetNextHopAddressType assigns BgpV4RouteRangeNextHopAddressTypeEnum provided by user to BgpV4RouteRange - SetNextHopAddressType(value BgpV4RouteRangeNextHopAddressTypeEnum) BgpV4RouteRange - // HasNextHopAddressType checks if NextHopAddressType has been set in BgpV4RouteRange - HasNextHopAddressType() bool - // NextHopIpv4Address returns string, set in BgpV4RouteRange. - NextHopIpv4Address() string - // SetNextHopIpv4Address assigns string provided by user to BgpV4RouteRange - SetNextHopIpv4Address(value string) BgpV4RouteRange - // HasNextHopIpv4Address checks if NextHopIpv4Address has been set in BgpV4RouteRange - HasNextHopIpv4Address() bool - // NextHopIpv6Address returns string, set in BgpV4RouteRange. - NextHopIpv6Address() string - // SetNextHopIpv6Address assigns string provided by user to BgpV4RouteRange - SetNextHopIpv6Address(value string) BgpV4RouteRange - // HasNextHopIpv6Address checks if NextHopIpv6Address has been set in BgpV4RouteRange - HasNextHopIpv6Address() bool - // Advanced returns BgpRouteAdvanced, set in BgpV4RouteRange. - // BgpRouteAdvanced is configuration for advanced BGP route range settings. - Advanced() BgpRouteAdvanced - // SetAdvanced assigns BgpRouteAdvanced provided by user to BgpV4RouteRange. - // BgpRouteAdvanced is configuration for advanced BGP route range settings. - SetAdvanced(value BgpRouteAdvanced) BgpV4RouteRange - // HasAdvanced checks if Advanced has been set in BgpV4RouteRange - HasAdvanced() bool - // Communities returns BgpV4RouteRangeBgpCommunityIterIter, set in BgpV4RouteRange - Communities() BgpV4RouteRangeBgpCommunityIter - // AsPath returns BgpAsPath, set in BgpV4RouteRange. - // BgpAsPath is this attribute identifies the autonomous systems through which routing information carried in this UPDATE message has passed. This contains the configuration of how to include the Local AS in the AS path attribute of the MP REACH NLRI. It also contains optional configuration of additional AS Path Segments that can be included in the AS Path attribute. The AS Path consists of a Set or Sequence of Autonomous Systems (AS) numbers that a routing information passes through to reach the destination. - AsPath() BgpAsPath - // SetAsPath assigns BgpAsPath provided by user to BgpV4RouteRange. - // BgpAsPath is this attribute identifies the autonomous systems through which routing information carried in this UPDATE message has passed. This contains the configuration of how to include the Local AS in the AS path attribute of the MP REACH NLRI. It also contains optional configuration of additional AS Path Segments that can be included in the AS Path attribute. The AS Path consists of a Set or Sequence of Autonomous Systems (AS) numbers that a routing information passes through to reach the destination. - SetAsPath(value BgpAsPath) BgpV4RouteRange - // HasAsPath checks if AsPath has been set in BgpV4RouteRange - HasAsPath() bool - // AddPath returns BgpAddPath, set in BgpV4RouteRange. - // BgpAddPath is the BGP Additional Paths feature is a BGP extension that allows the advertisement of multiple paths for the same prefix without the new paths implicitly replacing any previous paths. - AddPath() BgpAddPath - // SetAddPath assigns BgpAddPath provided by user to BgpV4RouteRange. - // BgpAddPath is the BGP Additional Paths feature is a BGP extension that allows the advertisement of multiple paths for the same prefix without the new paths implicitly replacing any previous paths. - SetAddPath(value BgpAddPath) BgpV4RouteRange - // HasAddPath checks if AddPath has been set in BgpV4RouteRange - HasAddPath() bool - // Name returns string, set in BgpV4RouteRange. - Name() string - // SetName assigns string provided by user to BgpV4RouteRange - SetName(value string) BgpV4RouteRange - // ExtCommunities returns BgpV4RouteRangeBgpExtCommunityIterIter, set in BgpV4RouteRange - ExtCommunities() BgpV4RouteRangeBgpExtCommunityIter - // ExtendedCommunities returns BgpV4RouteRangeBgpExtendedCommunityIterIter, set in BgpV4RouteRange - ExtendedCommunities() BgpV4RouteRangeBgpExtendedCommunityIter - setNil() -} - -// A list of group of IPv4 route addresses. -// Addresses returns a []V4RouteAddress -func (obj *bgpV4RouteRange) Addresses() BgpV4RouteRangeV4RouteAddressIter { - if len(obj.obj.Addresses) == 0 { - obj.obj.Addresses = []*otg.V4RouteAddress{} - } - if obj.addressesHolder == nil { - obj.addressesHolder = newBgpV4RouteRangeV4RouteAddressIter(&obj.obj.Addresses).setMsg(obj) - } - return obj.addressesHolder -} - -type bgpV4RouteRangeV4RouteAddressIter struct { - obj *bgpV4RouteRange - v4RouteAddressSlice []V4RouteAddress - fieldPtr *[]*otg.V4RouteAddress -} - -func newBgpV4RouteRangeV4RouteAddressIter(ptr *[]*otg.V4RouteAddress) BgpV4RouteRangeV4RouteAddressIter { - return &bgpV4RouteRangeV4RouteAddressIter{fieldPtr: ptr} -} - -type BgpV4RouteRangeV4RouteAddressIter interface { - setMsg(*bgpV4RouteRange) BgpV4RouteRangeV4RouteAddressIter - Items() []V4RouteAddress - Add() V4RouteAddress - Append(items ...V4RouteAddress) BgpV4RouteRangeV4RouteAddressIter - Set(index int, newObj V4RouteAddress) BgpV4RouteRangeV4RouteAddressIter - Clear() BgpV4RouteRangeV4RouteAddressIter - clearHolderSlice() BgpV4RouteRangeV4RouteAddressIter - appendHolderSlice(item V4RouteAddress) BgpV4RouteRangeV4RouteAddressIter -} - -func (obj *bgpV4RouteRangeV4RouteAddressIter) setMsg(msg *bgpV4RouteRange) BgpV4RouteRangeV4RouteAddressIter { - obj.clearHolderSlice() - for _, val := range *obj.fieldPtr { - obj.appendHolderSlice(&v4RouteAddress{obj: val}) - } - obj.obj = msg - return obj -} - -func (obj *bgpV4RouteRangeV4RouteAddressIter) Items() []V4RouteAddress { - return obj.v4RouteAddressSlice -} - -func (obj *bgpV4RouteRangeV4RouteAddressIter) Add() V4RouteAddress { - newObj := &otg.V4RouteAddress{} - *obj.fieldPtr = append(*obj.fieldPtr, newObj) - newLibObj := &v4RouteAddress{obj: newObj} - newLibObj.setDefault() - obj.v4RouteAddressSlice = append(obj.v4RouteAddressSlice, newLibObj) - return newLibObj -} - -func (obj *bgpV4RouteRangeV4RouteAddressIter) Append(items ...V4RouteAddress) BgpV4RouteRangeV4RouteAddressIter { - for _, item := range items { - newObj := item.Msg() - *obj.fieldPtr = append(*obj.fieldPtr, newObj) - obj.v4RouteAddressSlice = append(obj.v4RouteAddressSlice, item) - } - return obj -} - -func (obj *bgpV4RouteRangeV4RouteAddressIter) Set(index int, newObj V4RouteAddress) BgpV4RouteRangeV4RouteAddressIter { - (*obj.fieldPtr)[index] = newObj.Msg() - obj.v4RouteAddressSlice[index] = newObj - return obj -} -func (obj *bgpV4RouteRangeV4RouteAddressIter) Clear() BgpV4RouteRangeV4RouteAddressIter { - if len(*obj.fieldPtr) > 0 { - *obj.fieldPtr = []*otg.V4RouteAddress{} - obj.v4RouteAddressSlice = []V4RouteAddress{} - } - return obj -} -func (obj *bgpV4RouteRangeV4RouteAddressIter) clearHolderSlice() BgpV4RouteRangeV4RouteAddressIter { - if len(obj.v4RouteAddressSlice) > 0 { - obj.v4RouteAddressSlice = []V4RouteAddress{} - } - return obj -} -func (obj *bgpV4RouteRangeV4RouteAddressIter) appendHolderSlice(item V4RouteAddress) BgpV4RouteRangeV4RouteAddressIter { - obj.v4RouteAddressSlice = append(obj.v4RouteAddressSlice, item) - return obj -} - -type BgpV4RouteRangeNextHopModeEnum string - -// Enum of NextHopMode on BgpV4RouteRange -var BgpV4RouteRangeNextHopMode = struct { - LOCAL_IP BgpV4RouteRangeNextHopModeEnum - MANUAL BgpV4RouteRangeNextHopModeEnum -}{ - LOCAL_IP: BgpV4RouteRangeNextHopModeEnum("local_ip"), - MANUAL: BgpV4RouteRangeNextHopModeEnum("manual"), -} - -func (obj *bgpV4RouteRange) NextHopMode() BgpV4RouteRangeNextHopModeEnum { - return BgpV4RouteRangeNextHopModeEnum(obj.obj.NextHopMode.Enum().String()) -} - -// Specify the NextHop in MP REACH NLRI. The mode for setting the IP address of the NextHop in the MP REACH NLRI can be one of the following: -// Local IP: Automatically fills the Nexthop with the Local IP of the BGP -// peer. -// If BGP peer is of type IPv6, Nexthop Encoding capability should be enabled. -// Manual: Override the Nexthop with any arbitrary IPv4/IPv6 address. -// NextHopMode returns a string -func (obj *bgpV4RouteRange) HasNextHopMode() bool { - return obj.obj.NextHopMode != nil -} - -func (obj *bgpV4RouteRange) SetNextHopMode(value BgpV4RouteRangeNextHopModeEnum) BgpV4RouteRange { - intValue, ok := otg.BgpV4RouteRange_NextHopMode_Enum_value[string(value)] - if !ok { - obj.validationErrors = append(obj.validationErrors, fmt.Sprintf( - "%s is not a valid choice on BgpV4RouteRangeNextHopModeEnum", string(value))) - return obj - } - enumValue := otg.BgpV4RouteRange_NextHopMode_Enum(intValue) - obj.obj.NextHopMode = &enumValue - - return obj -} - -type BgpV4RouteRangeNextHopAddressTypeEnum string - -// Enum of NextHopAddressType on BgpV4RouteRange -var BgpV4RouteRangeNextHopAddressType = struct { - IPV4 BgpV4RouteRangeNextHopAddressTypeEnum - IPV6 BgpV4RouteRangeNextHopAddressTypeEnum -}{ - IPV4: BgpV4RouteRangeNextHopAddressTypeEnum("ipv4"), - IPV6: BgpV4RouteRangeNextHopAddressTypeEnum("ipv6"), -} - -func (obj *bgpV4RouteRange) NextHopAddressType() BgpV4RouteRangeNextHopAddressTypeEnum { - return BgpV4RouteRangeNextHopAddressTypeEnum(obj.obj.NextHopAddressType.Enum().String()) -} - -// If the Nexthop Mode is Manual, it sets the type of the NextHop IP address. -// NextHopAddressType returns a string -func (obj *bgpV4RouteRange) HasNextHopAddressType() bool { - return obj.obj.NextHopAddressType != nil -} - -func (obj *bgpV4RouteRange) SetNextHopAddressType(value BgpV4RouteRangeNextHopAddressTypeEnum) BgpV4RouteRange { - intValue, ok := otg.BgpV4RouteRange_NextHopAddressType_Enum_value[string(value)] - if !ok { - obj.validationErrors = append(obj.validationErrors, fmt.Sprintf( - "%s is not a valid choice on BgpV4RouteRangeNextHopAddressTypeEnum", string(value))) - return obj - } - enumValue := otg.BgpV4RouteRange_NextHopAddressType_Enum(intValue) - obj.obj.NextHopAddressType = &enumValue - - return obj -} - -// The IPv4 address of the next hop if the Nexthop Mode is manual and the Nexthop type is IPv4. If BGP peer is of type IPv6, Nexthop Encoding capability should be enabled. -// NextHopIpv4Address returns a string -func (obj *bgpV4RouteRange) NextHopIpv4Address() string { - - return *obj.obj.NextHopIpv4Address - -} - -// The IPv4 address of the next hop if the Nexthop Mode is manual and the Nexthop type is IPv4. If BGP peer is of type IPv6, Nexthop Encoding capability should be enabled. -// NextHopIpv4Address returns a string -func (obj *bgpV4RouteRange) HasNextHopIpv4Address() bool { - return obj.obj.NextHopIpv4Address != nil -} - -// The IPv4 address of the next hop if the Nexthop Mode is manual and the Nexthop type is IPv4. If BGP peer is of type IPv6, Nexthop Encoding capability should be enabled. -// SetNextHopIpv4Address sets the string value in the BgpV4RouteRange object -func (obj *bgpV4RouteRange) SetNextHopIpv4Address(value string) BgpV4RouteRange { - - obj.obj.NextHopIpv4Address = &value - return obj -} - -// The IPv6 address of the next hop if the Nexthop Mode is manual and the Nexthop type is IPv6. -// NextHopIpv6Address returns a string -func (obj *bgpV4RouteRange) NextHopIpv6Address() string { - - return *obj.obj.NextHopIpv6Address - -} - -// The IPv6 address of the next hop if the Nexthop Mode is manual and the Nexthop type is IPv6. -// NextHopIpv6Address returns a string -func (obj *bgpV4RouteRange) HasNextHopIpv6Address() bool { - return obj.obj.NextHopIpv6Address != nil -} - -// The IPv6 address of the next hop if the Nexthop Mode is manual and the Nexthop type is IPv6. -// SetNextHopIpv6Address sets the string value in the BgpV4RouteRange object -func (obj *bgpV4RouteRange) SetNextHopIpv6Address(value string) BgpV4RouteRange { - - obj.obj.NextHopIpv6Address = &value - return obj -} - -// description is TBD -// Advanced returns a BgpRouteAdvanced -func (obj *bgpV4RouteRange) Advanced() BgpRouteAdvanced { - if obj.obj.Advanced == nil { - obj.obj.Advanced = NewBgpRouteAdvanced().Msg() - } - if obj.advancedHolder == nil { - obj.advancedHolder = &bgpRouteAdvanced{obj: obj.obj.Advanced} - } - return obj.advancedHolder -} - -// description is TBD -// Advanced returns a BgpRouteAdvanced -func (obj *bgpV4RouteRange) HasAdvanced() bool { - return obj.obj.Advanced != nil -} - -// description is TBD -// SetAdvanced sets the BgpRouteAdvanced value in the BgpV4RouteRange object -func (obj *bgpV4RouteRange) SetAdvanced(value BgpRouteAdvanced) BgpV4RouteRange { - - obj.advancedHolder = nil - obj.obj.Advanced = value.Msg() - - return obj -} - -// Optional community settings. -// Communities returns a []BgpCommunity -func (obj *bgpV4RouteRange) Communities() BgpV4RouteRangeBgpCommunityIter { - if len(obj.obj.Communities) == 0 { - obj.obj.Communities = []*otg.BgpCommunity{} - } - if obj.communitiesHolder == nil { - obj.communitiesHolder = newBgpV4RouteRangeBgpCommunityIter(&obj.obj.Communities).setMsg(obj) - } - return obj.communitiesHolder -} - -type bgpV4RouteRangeBgpCommunityIter struct { - obj *bgpV4RouteRange - bgpCommunitySlice []BgpCommunity - fieldPtr *[]*otg.BgpCommunity -} - -func newBgpV4RouteRangeBgpCommunityIter(ptr *[]*otg.BgpCommunity) BgpV4RouteRangeBgpCommunityIter { - return &bgpV4RouteRangeBgpCommunityIter{fieldPtr: ptr} -} - -type BgpV4RouteRangeBgpCommunityIter interface { - setMsg(*bgpV4RouteRange) BgpV4RouteRangeBgpCommunityIter - Items() []BgpCommunity - Add() BgpCommunity - Append(items ...BgpCommunity) BgpV4RouteRangeBgpCommunityIter - Set(index int, newObj BgpCommunity) BgpV4RouteRangeBgpCommunityIter - Clear() BgpV4RouteRangeBgpCommunityIter - clearHolderSlice() BgpV4RouteRangeBgpCommunityIter - appendHolderSlice(item BgpCommunity) BgpV4RouteRangeBgpCommunityIter -} - -func (obj *bgpV4RouteRangeBgpCommunityIter) setMsg(msg *bgpV4RouteRange) BgpV4RouteRangeBgpCommunityIter { - obj.clearHolderSlice() - for _, val := range *obj.fieldPtr { - obj.appendHolderSlice(&bgpCommunity{obj: val}) - } - obj.obj = msg - return obj -} - -func (obj *bgpV4RouteRangeBgpCommunityIter) Items() []BgpCommunity { - return obj.bgpCommunitySlice -} - -func (obj *bgpV4RouteRangeBgpCommunityIter) Add() BgpCommunity { - newObj := &otg.BgpCommunity{} - *obj.fieldPtr = append(*obj.fieldPtr, newObj) - newLibObj := &bgpCommunity{obj: newObj} - newLibObj.setDefault() - obj.bgpCommunitySlice = append(obj.bgpCommunitySlice, newLibObj) - return newLibObj -} - -func (obj *bgpV4RouteRangeBgpCommunityIter) Append(items ...BgpCommunity) BgpV4RouteRangeBgpCommunityIter { - for _, item := range items { - newObj := item.Msg() - *obj.fieldPtr = append(*obj.fieldPtr, newObj) - obj.bgpCommunitySlice = append(obj.bgpCommunitySlice, item) - } - return obj -} - -func (obj *bgpV4RouteRangeBgpCommunityIter) Set(index int, newObj BgpCommunity) BgpV4RouteRangeBgpCommunityIter { - (*obj.fieldPtr)[index] = newObj.Msg() - obj.bgpCommunitySlice[index] = newObj - return obj -} -func (obj *bgpV4RouteRangeBgpCommunityIter) Clear() BgpV4RouteRangeBgpCommunityIter { - if len(*obj.fieldPtr) > 0 { - *obj.fieldPtr = []*otg.BgpCommunity{} - obj.bgpCommunitySlice = []BgpCommunity{} - } - return obj -} -func (obj *bgpV4RouteRangeBgpCommunityIter) clearHolderSlice() BgpV4RouteRangeBgpCommunityIter { - if len(obj.bgpCommunitySlice) > 0 { - obj.bgpCommunitySlice = []BgpCommunity{} - } - return obj -} -func (obj *bgpV4RouteRangeBgpCommunityIter) appendHolderSlice(item BgpCommunity) BgpV4RouteRangeBgpCommunityIter { - obj.bgpCommunitySlice = append(obj.bgpCommunitySlice, item) - return obj -} - -// description is TBD -// AsPath returns a BgpAsPath -func (obj *bgpV4RouteRange) AsPath() BgpAsPath { - if obj.obj.AsPath == nil { - obj.obj.AsPath = NewBgpAsPath().Msg() - } - if obj.asPathHolder == nil { - obj.asPathHolder = &bgpAsPath{obj: obj.obj.AsPath} - } - return obj.asPathHolder -} - -// description is TBD -// AsPath returns a BgpAsPath -func (obj *bgpV4RouteRange) HasAsPath() bool { - return obj.obj.AsPath != nil -} - -// description is TBD -// SetAsPath sets the BgpAsPath value in the BgpV4RouteRange object -func (obj *bgpV4RouteRange) SetAsPath(value BgpAsPath) BgpV4RouteRange { - - obj.asPathHolder = nil - obj.obj.AsPath = value.Msg() - - return obj -} - -// description is TBD -// AddPath returns a BgpAddPath -func (obj *bgpV4RouteRange) AddPath() BgpAddPath { - if obj.obj.AddPath == nil { - obj.obj.AddPath = NewBgpAddPath().Msg() - } - if obj.addPathHolder == nil { - obj.addPathHolder = &bgpAddPath{obj: obj.obj.AddPath} - } - return obj.addPathHolder -} - -// description is TBD -// AddPath returns a BgpAddPath -func (obj *bgpV4RouteRange) HasAddPath() bool { - return obj.obj.AddPath != nil + // Start returns uint32, set in PatternFlowEthernetPauseEtherTypeCounter. + Start() uint32 + // SetStart assigns uint32 provided by user to PatternFlowEthernetPauseEtherTypeCounter + SetStart(value uint32) PatternFlowEthernetPauseEtherTypeCounter + // HasStart checks if Start has been set in PatternFlowEthernetPauseEtherTypeCounter + HasStart() bool + // Step returns uint32, set in PatternFlowEthernetPauseEtherTypeCounter. + Step() uint32 + // SetStep assigns uint32 provided by user to PatternFlowEthernetPauseEtherTypeCounter + SetStep(value uint32) PatternFlowEthernetPauseEtherTypeCounter + // HasStep checks if Step has been set in PatternFlowEthernetPauseEtherTypeCounter + HasStep() bool + // Count returns uint32, set in PatternFlowEthernetPauseEtherTypeCounter. + Count() uint32 + // SetCount assigns uint32 provided by user to PatternFlowEthernetPauseEtherTypeCounter + SetCount(value uint32) PatternFlowEthernetPauseEtherTypeCounter + // HasCount checks if Count has been set in PatternFlowEthernetPauseEtherTypeCounter + HasCount() bool } // description is TBD -// SetAddPath sets the BgpAddPath value in the BgpV4RouteRange object -func (obj *bgpV4RouteRange) SetAddPath(value BgpAddPath) BgpV4RouteRange { - - obj.addPathHolder = nil - obj.obj.AddPath = value.Msg() - - return obj -} - -// Globally unique name of an object. It also serves as the primary key for arrays of objects. -// Name returns a string -func (obj *bgpV4RouteRange) Name() string { - - return *obj.obj.Name - -} - -// Globally unique name of an object. It also serves as the primary key for arrays of objects. -// SetName sets the string value in the BgpV4RouteRange object -func (obj *bgpV4RouteRange) SetName(value string) BgpV4RouteRange { - - obj.obj.Name = &value - return obj -} - -// Deprecated: This property is deprecated in favor of property extended_communities -// -// Deprecated: This property is deprecated in favor of property extended_communities -// -// Optional Extended Community settings. The Extended Communities Attribute is a transitive optional BGP attribute, with the Type Code 16. Community and Extended Communities attributes are utilized to trigger routing decisions, such as acceptance, rejection, preference, or redistribution. An extended community is an 8-Bytes value. It is divided into two main parts. The first 2 Bytes of the community encode a type and sub-type fields and the last 6 Bytes carry a unique set of data in a format defined by the type and sub-type field. Extended communities provide a larger range for grouping or categorizing communities. When type is administrator_as_2octet or administrator_as_4octet, the valid sub types are route target and origin. The valid value for administrator_as_2octet and administrator_as_4octet type is either two byte AS followed by four byte local administrator id or four byte AS followed by two byte local administrator id. When type is administrator_ipv4_address the valid sub types are route target and origin. The valid value for administrator_ipv4_address is a four byte IPv4 address followed by a two byte local administrator id. When type is opaque, valid sub types are color and encapsulation. When sub type is color, first two bytes of the value field contain flags and last four bytes contains the value of the color. When sub type is encapsulation the first four bytes of value field are reserved and last two bytes carries the tunnel type from IANA's "ETHER TYPES" registry e.g IPv4 (protocol type = 0x0800), IPv6 (protocol type = 0x86dd), and MPLS (protocol type = 0x8847). When type is administrator_as_2octet_link_bandwidth the valid sub type is extended_bandwidth. The first two bytes of the value field contains the AS number and the last four bytes contains the bandwidth in IEEE floating point format. When type is evpn the valid subtype is mac_address. In the value field the low-order bit of the first byte(Flags) is defined as the "Sticky/static" flag and may be set to 1, indicating the MAC address is static and cannot move. The second byte is reserved and the last four bytes contain the sequence number which is used to ensure that PEs retain the correct MAC/IP Advertisement route when multiple updates occur for the same MAC address. Note evpn type is defined mainly for use with evpn route updates and not for IPv4 and IPv6 route updates. -// ExtCommunities returns a []BgpExtCommunity -func (obj *bgpV4RouteRange) ExtCommunities() BgpV4RouteRangeBgpExtCommunityIter { - if len(obj.obj.ExtCommunities) == 0 { - obj.obj.ExtCommunities = []*otg.BgpExtCommunity{} - } - if obj.extCommunitiesHolder == nil { - obj.extCommunitiesHolder = newBgpV4RouteRangeBgpExtCommunityIter(&obj.obj.ExtCommunities).setMsg(obj) - } - return obj.extCommunitiesHolder -} - -type bgpV4RouteRangeBgpExtCommunityIter struct { - obj *bgpV4RouteRange - bgpExtCommunitySlice []BgpExtCommunity - fieldPtr *[]*otg.BgpExtCommunity -} - -func newBgpV4RouteRangeBgpExtCommunityIter(ptr *[]*otg.BgpExtCommunity) BgpV4RouteRangeBgpExtCommunityIter { - return &bgpV4RouteRangeBgpExtCommunityIter{fieldPtr: ptr} -} - -type BgpV4RouteRangeBgpExtCommunityIter interface { - setMsg(*bgpV4RouteRange) BgpV4RouteRangeBgpExtCommunityIter - Items() []BgpExtCommunity - Add() BgpExtCommunity - Append(items ...BgpExtCommunity) BgpV4RouteRangeBgpExtCommunityIter - Set(index int, newObj BgpExtCommunity) BgpV4RouteRangeBgpExtCommunityIter - Clear() BgpV4RouteRangeBgpExtCommunityIter - clearHolderSlice() BgpV4RouteRangeBgpExtCommunityIter - appendHolderSlice(item BgpExtCommunity) BgpV4RouteRangeBgpExtCommunityIter -} - -func (obj *bgpV4RouteRangeBgpExtCommunityIter) setMsg(msg *bgpV4RouteRange) BgpV4RouteRangeBgpExtCommunityIter { - obj.clearHolderSlice() - for _, val := range *obj.fieldPtr { - obj.appendHolderSlice(&bgpExtCommunity{obj: val}) - } - obj.obj = msg - return obj -} - -func (obj *bgpV4RouteRangeBgpExtCommunityIter) Items() []BgpExtCommunity { - return obj.bgpExtCommunitySlice -} - -func (obj *bgpV4RouteRangeBgpExtCommunityIter) Add() BgpExtCommunity { - newObj := &otg.BgpExtCommunity{} - *obj.fieldPtr = append(*obj.fieldPtr, newObj) - newLibObj := &bgpExtCommunity{obj: newObj} - newLibObj.setDefault() - obj.bgpExtCommunitySlice = append(obj.bgpExtCommunitySlice, newLibObj) - return newLibObj -} - -func (obj *bgpV4RouteRangeBgpExtCommunityIter) Append(items ...BgpExtCommunity) BgpV4RouteRangeBgpExtCommunityIter { - for _, item := range items { - newObj := item.Msg() - *obj.fieldPtr = append(*obj.fieldPtr, newObj) - obj.bgpExtCommunitySlice = append(obj.bgpExtCommunitySlice, item) - } - return obj -} - -func (obj *bgpV4RouteRangeBgpExtCommunityIter) Set(index int, newObj BgpExtCommunity) BgpV4RouteRangeBgpExtCommunityIter { - (*obj.fieldPtr)[index] = newObj.Msg() - obj.bgpExtCommunitySlice[index] = newObj - return obj -} -func (obj *bgpV4RouteRangeBgpExtCommunityIter) Clear() BgpV4RouteRangeBgpExtCommunityIter { - if len(*obj.fieldPtr) > 0 { - *obj.fieldPtr = []*otg.BgpExtCommunity{} - obj.bgpExtCommunitySlice = []BgpExtCommunity{} - } - return obj -} -func (obj *bgpV4RouteRangeBgpExtCommunityIter) clearHolderSlice() BgpV4RouteRangeBgpExtCommunityIter { - if len(obj.bgpExtCommunitySlice) > 0 { - obj.bgpExtCommunitySlice = []BgpExtCommunity{} - } - return obj -} -func (obj *bgpV4RouteRangeBgpExtCommunityIter) appendHolderSlice(item BgpExtCommunity) BgpV4RouteRangeBgpExtCommunityIter { - obj.bgpExtCommunitySlice = append(obj.bgpExtCommunitySlice, item) - return obj -} - -// Optional Extended Community settings. The Extended Communities Attribute is a transitive optional BGP attribute, with the Type Code 16. Community and Extended Communities attributes are utilized to trigger routing decisions, such as acceptance, rejection, preference, or redistribution. An extended community is an eight byte value. It is divided into two main parts. The first two bytes of the community encode a type and sub-type fields and the last six bytes carry a unique set of data in a format defined by the type and sub-type field. Extended communities provide a larger range for grouping or categorizing communities. -// ExtendedCommunities returns a []BgpExtendedCommunity -func (obj *bgpV4RouteRange) ExtendedCommunities() BgpV4RouteRangeBgpExtendedCommunityIter { - if len(obj.obj.ExtendedCommunities) == 0 { - obj.obj.ExtendedCommunities = []*otg.BgpExtendedCommunity{} - } - if obj.extendedCommunitiesHolder == nil { - obj.extendedCommunitiesHolder = newBgpV4RouteRangeBgpExtendedCommunityIter(&obj.obj.ExtendedCommunities).setMsg(obj) - } - return obj.extendedCommunitiesHolder -} - -type bgpV4RouteRangeBgpExtendedCommunityIter struct { - obj *bgpV4RouteRange - bgpExtendedCommunitySlice []BgpExtendedCommunity - fieldPtr *[]*otg.BgpExtendedCommunity -} - -func newBgpV4RouteRangeBgpExtendedCommunityIter(ptr *[]*otg.BgpExtendedCommunity) BgpV4RouteRangeBgpExtendedCommunityIter { - return &bgpV4RouteRangeBgpExtendedCommunityIter{fieldPtr: ptr} -} - -type BgpV4RouteRangeBgpExtendedCommunityIter interface { - setMsg(*bgpV4RouteRange) BgpV4RouteRangeBgpExtendedCommunityIter - Items() []BgpExtendedCommunity - Add() BgpExtendedCommunity - Append(items ...BgpExtendedCommunity) BgpV4RouteRangeBgpExtendedCommunityIter - Set(index int, newObj BgpExtendedCommunity) BgpV4RouteRangeBgpExtendedCommunityIter - Clear() BgpV4RouteRangeBgpExtendedCommunityIter - clearHolderSlice() BgpV4RouteRangeBgpExtendedCommunityIter - appendHolderSlice(item BgpExtendedCommunity) BgpV4RouteRangeBgpExtendedCommunityIter -} - -func (obj *bgpV4RouteRangeBgpExtendedCommunityIter) setMsg(msg *bgpV4RouteRange) BgpV4RouteRangeBgpExtendedCommunityIter { - obj.clearHolderSlice() - for _, val := range *obj.fieldPtr { - obj.appendHolderSlice(&bgpExtendedCommunity{obj: val}) - } - obj.obj = msg - return obj -} - -func (obj *bgpV4RouteRangeBgpExtendedCommunityIter) Items() []BgpExtendedCommunity { - return obj.bgpExtendedCommunitySlice -} - -func (obj *bgpV4RouteRangeBgpExtendedCommunityIter) Add() BgpExtendedCommunity { - newObj := &otg.BgpExtendedCommunity{} - *obj.fieldPtr = append(*obj.fieldPtr, newObj) - newLibObj := &bgpExtendedCommunity{obj: newObj} - newLibObj.setDefault() - obj.bgpExtendedCommunitySlice = append(obj.bgpExtendedCommunitySlice, newLibObj) - return newLibObj -} +// Start returns a uint32 +func (obj *patternFlowEthernetPauseEtherTypeCounter) Start() uint32 { -func (obj *bgpV4RouteRangeBgpExtendedCommunityIter) Append(items ...BgpExtendedCommunity) BgpV4RouteRangeBgpExtendedCommunityIter { - for _, item := range items { - newObj := item.Msg() - *obj.fieldPtr = append(*obj.fieldPtr, newObj) - obj.bgpExtendedCommunitySlice = append(obj.bgpExtendedCommunitySlice, item) - } - return obj -} + return *obj.obj.Start -func (obj *bgpV4RouteRangeBgpExtendedCommunityIter) Set(index int, newObj BgpExtendedCommunity) BgpV4RouteRangeBgpExtendedCommunityIter { - (*obj.fieldPtr)[index] = newObj.Msg() - obj.bgpExtendedCommunitySlice[index] = newObj - return obj -} -func (obj *bgpV4RouteRangeBgpExtendedCommunityIter) Clear() BgpV4RouteRangeBgpExtendedCommunityIter { - if len(*obj.fieldPtr) > 0 { - *obj.fieldPtr = []*otg.BgpExtendedCommunity{} - obj.bgpExtendedCommunitySlice = []BgpExtendedCommunity{} - } - return obj -} -func (obj *bgpV4RouteRangeBgpExtendedCommunityIter) clearHolderSlice() BgpV4RouteRangeBgpExtendedCommunityIter { - if len(obj.bgpExtendedCommunitySlice) > 0 { - obj.bgpExtendedCommunitySlice = []BgpExtendedCommunity{} - } - return obj -} -func (obj *bgpV4RouteRangeBgpExtendedCommunityIter) appendHolderSlice(item BgpExtendedCommunity) BgpV4RouteRangeBgpExtendedCommunityIter { - obj.bgpExtendedCommunitySlice = append(obj.bgpExtendedCommunitySlice, item) - return obj } -func (obj *bgpV4RouteRange) validateObj(vObj *validation, set_default bool) { - if set_default { - obj.setDefault() - } - - if len(obj.obj.Addresses) != 0 { +// description is TBD +// Start returns a uint32 +func (obj *patternFlowEthernetPauseEtherTypeCounter) HasStart() bool { + return obj.obj.Start != nil +} - if set_default { - obj.Addresses().clearHolderSlice() - for _, item := range obj.obj.Addresses { - obj.Addresses().appendHolderSlice(&v4RouteAddress{obj: item}) - } - } - for _, item := range obj.Addresses().Items() { - item.validateObj(vObj, set_default) - } +// description is TBD +// SetStart sets the uint32 value in the PatternFlowEthernetPauseEtherTypeCounter object +func (obj *patternFlowEthernetPauseEtherTypeCounter) SetStart(value uint32) PatternFlowEthernetPauseEtherTypeCounter { - } + obj.obj.Start = &value + return obj +} - if obj.obj.NextHopIpv4Address != nil { +// description is TBD +// Step returns a uint32 +func (obj *patternFlowEthernetPauseEtherTypeCounter) Step() uint32 { - err := obj.validateIpv4(obj.NextHopIpv4Address()) - if err != nil { - vObj.validationErrors = append(vObj.validationErrors, fmt.Sprintf("%s %s", err.Error(), "on BgpV4RouteRange.NextHopIpv4Address")) - } + return *obj.obj.Step - } +} - if obj.obj.NextHopIpv6Address != nil { +// description is TBD +// Step returns a uint32 +func (obj *patternFlowEthernetPauseEtherTypeCounter) HasStep() bool { + return obj.obj.Step != nil +} - err := obj.validateIpv6(obj.NextHopIpv6Address()) - if err != nil { - vObj.validationErrors = append(vObj.validationErrors, fmt.Sprintf("%s %s", err.Error(), "on BgpV4RouteRange.NextHopIpv6Address")) - } +// description is TBD +// SetStep sets the uint32 value in the PatternFlowEthernetPauseEtherTypeCounter object +func (obj *patternFlowEthernetPauseEtherTypeCounter) SetStep(value uint32) PatternFlowEthernetPauseEtherTypeCounter { - } + obj.obj.Step = &value + return obj +} - if obj.obj.Advanced != nil { +// description is TBD +// Count returns a uint32 +func (obj *patternFlowEthernetPauseEtherTypeCounter) Count() uint32 { - obj.Advanced().validateObj(vObj, set_default) - } + return *obj.obj.Count - if len(obj.obj.Communities) != 0 { +} - if set_default { - obj.Communities().clearHolderSlice() - for _, item := range obj.obj.Communities { - obj.Communities().appendHolderSlice(&bgpCommunity{obj: item}) - } - } - for _, item := range obj.Communities().Items() { - item.validateObj(vObj, set_default) - } +// description is TBD +// Count returns a uint32 +func (obj *patternFlowEthernetPauseEtherTypeCounter) HasCount() bool { + return obj.obj.Count != nil +} - } +// description is TBD +// SetCount sets the uint32 value in the PatternFlowEthernetPauseEtherTypeCounter object +func (obj *patternFlowEthernetPauseEtherTypeCounter) SetCount(value uint32) PatternFlowEthernetPauseEtherTypeCounter { - if obj.obj.AsPath != nil { + obj.obj.Count = &value + return obj +} - obj.AsPath().validateObj(vObj, set_default) +func (obj *patternFlowEthernetPauseEtherTypeCounter) validateObj(vObj *validation, set_default bool) { + if set_default { + obj.setDefault() } - if obj.obj.AddPath != nil { + if obj.obj.Start != nil { - obj.AddPath().validateObj(vObj, set_default) - } + if *obj.obj.Start > 65535 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("0 <= PatternFlowEthernetPauseEtherTypeCounter.Start <= 65535 but Got %d", *obj.obj.Start)) + } - // Name is required - if obj.obj.Name == nil { - vObj.validationErrors = append(vObj.validationErrors, "Name is required field on interface BgpV4RouteRange") } - if len(obj.obj.ExtCommunities) != 0 { - obj.addWarnings("ExtCommunities property in schema BgpV4RouteRange is deprecated, This property is deprecated in favor of property extended_communities") + if obj.obj.Step != nil { - if set_default { - obj.ExtCommunities().clearHolderSlice() - for _, item := range obj.obj.ExtCommunities { - obj.ExtCommunities().appendHolderSlice(&bgpExtCommunity{obj: item}) - } - } - for _, item := range obj.ExtCommunities().Items() { - item.validateObj(vObj, set_default) + if *obj.obj.Step > 65535 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("0 <= PatternFlowEthernetPauseEtherTypeCounter.Step <= 65535 but Got %d", *obj.obj.Step)) } } - if len(obj.obj.ExtendedCommunities) != 0 { + if obj.obj.Count != nil { - if set_default { - obj.ExtendedCommunities().clearHolderSlice() - for _, item := range obj.obj.ExtendedCommunities { - obj.ExtendedCommunities().appendHolderSlice(&bgpExtendedCommunity{obj: item}) - } - } - for _, item := range obj.ExtendedCommunities().Items() { - item.validateObj(vObj, set_default) + if *obj.obj.Count > 65535 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("0 <= PatternFlowEthernetPauseEtherTypeCounter.Count <= 65535 but Got %d", *obj.obj.Count)) } } } -func (obj *bgpV4RouteRange) setDefault() { - if obj.obj.NextHopMode == nil { - obj.SetNextHopMode(BgpV4RouteRangeNextHopMode.LOCAL_IP) - - } - if obj.obj.NextHopAddressType == nil { - obj.SetNextHopAddressType(BgpV4RouteRangeNextHopAddressType.IPV4) - +func (obj *patternFlowEthernetPauseEtherTypeCounter) setDefault() { + if obj.obj.Start == nil { + obj.SetStart(34824) } - if obj.obj.NextHopIpv4Address == nil { - obj.SetNextHopIpv4Address("0.0.0.0") + if obj.obj.Step == nil { + obj.SetStep(1) } - if obj.obj.NextHopIpv6Address == nil { - obj.SetNextHopIpv6Address("::0") + if obj.obj.Count == nil { + obj.SetCount(1) } } -// ***** BgpV6RouteRange ***** -type bgpV6RouteRange struct { +// ***** PatternFlowEthernetPauseEtherTypeMetricTag ***** +type patternFlowEthernetPauseEtherTypeMetricTag struct { validation - obj *otg.BgpV6RouteRange - addressesHolder BgpV6RouteRangeV6RouteAddressIter - advancedHolder BgpRouteAdvanced - communitiesHolder BgpV6RouteRangeBgpCommunityIter - asPathHolder BgpAsPath - addPathHolder BgpAddPath - extCommunitiesHolder BgpV6RouteRangeBgpExtCommunityIter - extendedCommunitiesHolder BgpV6RouteRangeBgpExtendedCommunityIter + obj *otg.PatternFlowEthernetPauseEtherTypeMetricTag } -func NewBgpV6RouteRange() BgpV6RouteRange { - obj := bgpV6RouteRange{obj: &otg.BgpV6RouteRange{}} +func NewPatternFlowEthernetPauseEtherTypeMetricTag() PatternFlowEthernetPauseEtherTypeMetricTag { + obj := patternFlowEthernetPauseEtherTypeMetricTag{obj: &otg.PatternFlowEthernetPauseEtherTypeMetricTag{}} obj.setDefault() return &obj } -func (obj *bgpV6RouteRange) Msg() *otg.BgpV6RouteRange { +func (obj *patternFlowEthernetPauseEtherTypeMetricTag) Msg() *otg.PatternFlowEthernetPauseEtherTypeMetricTag { return obj.obj } -func (obj *bgpV6RouteRange) SetMsg(msg *otg.BgpV6RouteRange) BgpV6RouteRange { - obj.setNil() +func (obj *patternFlowEthernetPauseEtherTypeMetricTag) SetMsg(msg *otg.PatternFlowEthernetPauseEtherTypeMetricTag) PatternFlowEthernetPauseEtherTypeMetricTag { + proto.Merge(obj.obj, msg) return obj } -func (obj *bgpV6RouteRange) ToProto() (*otg.BgpV6RouteRange, error) { +func (obj *patternFlowEthernetPauseEtherTypeMetricTag) ToProto() (*otg.PatternFlowEthernetPauseEtherTypeMetricTag, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -176632,7 +221845,7 @@ func (obj *bgpV6RouteRange) ToProto() (*otg.BgpV6RouteRange, error) { return obj.Msg(), nil } -func (obj *bgpV6RouteRange) FromProto(msg *otg.BgpV6RouteRange) (BgpV6RouteRange, error) { +func (obj *patternFlowEthernetPauseEtherTypeMetricTag) FromProto(msg *otg.PatternFlowEthernetPauseEtherTypeMetricTag) (PatternFlowEthernetPauseEtherTypeMetricTag, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -176641,7 +221854,7 @@ func (obj *bgpV6RouteRange) FromProto(msg *otg.BgpV6RouteRange) (BgpV6RouteRange return newObj, nil } -func (obj *bgpV6RouteRange) ToPbText() (string, error) { +func (obj *patternFlowEthernetPauseEtherTypeMetricTag) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -176653,12 +221866,12 @@ func (obj *bgpV6RouteRange) ToPbText() (string, error) { return string(protoMarshal), nil } -func (obj *bgpV6RouteRange) FromPbText(value string) error { +func (obj *patternFlowEthernetPauseEtherTypeMetricTag) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj } - obj.setNil() + vErr := obj.validateToAndFrom() if vErr != nil { return vErr @@ -176666,7 +221879,7 @@ func (obj *bgpV6RouteRange) FromPbText(value string) error { return retObj } -func (obj *bgpV6RouteRange) ToYaml() (string, error) { +func (obj *patternFlowEthernetPauseEtherTypeMetricTag) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -176687,7 +221900,7 @@ func (obj *bgpV6RouteRange) ToYaml() (string, error) { return string(data), nil } -func (obj *bgpV6RouteRange) FromYaml(value string) error { +func (obj *patternFlowEthernetPauseEtherTypeMetricTag) FromYaml(value string) error { if value == "" { value = "{}" } @@ -176704,7 +221917,7 @@ func (obj *bgpV6RouteRange) FromYaml(value string) error { return fmt.Errorf("unmarshal error %s", strings.Replace( uError.Error(), "\u00a0", " ", -1)[7:]) } - obj.setNil() + vErr := obj.validateToAndFrom() if vErr != nil { return vErr @@ -176712,7 +221925,7 @@ func (obj *bgpV6RouteRange) FromYaml(value string) error { return nil } -func (obj *bgpV6RouteRange) ToJson() (string, error) { +func (obj *patternFlowEthernetPauseEtherTypeMetricTag) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -176730,7 +221943,7 @@ func (obj *bgpV6RouteRange) ToJson() (string, error) { return string(data), nil } -func (obj *bgpV6RouteRange) FromJson(value string) error { +func (obj *patternFlowEthernetPauseEtherTypeMetricTag) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -176743,7 +221956,7 @@ func (obj *bgpV6RouteRange) FromJson(value string) error { return fmt.Errorf("unmarshal error %s", strings.Replace( uError.Error(), "\u00a0", " ", -1)[7:]) } - obj.setNil() + err := obj.validateToAndFrom() if err != nil { return err @@ -176751,19 +221964,19 @@ func (obj *bgpV6RouteRange) FromJson(value string) error { return nil } -func (obj *bgpV6RouteRange) validateToAndFrom() error { +func (obj *patternFlowEthernetPauseEtherTypeMetricTag) validateToAndFrom() error { // emptyVars() obj.validateObj(&obj.validation, true) return obj.validationResult() } -func (obj *bgpV6RouteRange) Validate() error { +func (obj *patternFlowEthernetPauseEtherTypeMetricTag) Validate() error { // emptyVars() obj.validateObj(&obj.validation, false) return obj.validationResult() } -func (obj *bgpV6RouteRange) String() string { +func (obj *patternFlowEthernetPauseEtherTypeMetricTag) String() string { str, err := obj.ToYaml() if err != nil { return err.Error() @@ -176771,12 +221984,12 @@ func (obj *bgpV6RouteRange) String() string { return str } -func (obj *bgpV6RouteRange) Clone() (BgpV6RouteRange, error) { +func (obj *patternFlowEthernetPauseEtherTypeMetricTag) Clone() (PatternFlowEthernetPauseEtherTypeMetricTag, error) { vErr := obj.Validate() if vErr != nil { return nil, vErr } - newObj := NewBgpV6RouteRange() + newObj := NewPatternFlowEthernetPauseEtherTypeMetricTag() data, err := proto.Marshal(obj.Msg()) if err != nil { return nil, err @@ -176788,833 +222001,183 @@ func (obj *bgpV6RouteRange) Clone() (BgpV6RouteRange, error) { return newObj, nil } -func (obj *bgpV6RouteRange) setNil() { - obj.addressesHolder = nil - obj.advancedHolder = nil - obj.communitiesHolder = nil - obj.asPathHolder = nil - obj.addPathHolder = nil - obj.extCommunitiesHolder = nil - obj.extendedCommunitiesHolder = nil - obj.validationErrors = nil - obj.warnings = nil - obj.constraints = make(map[string]map[string]Constraints) -} - -// BgpV6RouteRange is emulated BGPv6 route range. -type BgpV6RouteRange interface { +// PatternFlowEthernetPauseEtherTypeMetricTag is metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. +type PatternFlowEthernetPauseEtherTypeMetricTag interface { Validation - // Msg marshals BgpV6RouteRange to protobuf object *otg.BgpV6RouteRange + // Msg marshals PatternFlowEthernetPauseEtherTypeMetricTag to protobuf object *otg.PatternFlowEthernetPauseEtherTypeMetricTag // and doesn't set defaults - Msg() *otg.BgpV6RouteRange - // SetMsg unmarshals BgpV6RouteRange from protobuf object *otg.BgpV6RouteRange + Msg() *otg.PatternFlowEthernetPauseEtherTypeMetricTag + // SetMsg unmarshals PatternFlowEthernetPauseEtherTypeMetricTag from protobuf object *otg.PatternFlowEthernetPauseEtherTypeMetricTag // and doesn't set defaults - SetMsg(*otg.BgpV6RouteRange) BgpV6RouteRange - // ToProto marshals BgpV6RouteRange to protobuf object *otg.BgpV6RouteRange - ToProto() (*otg.BgpV6RouteRange, error) - // ToPbText marshals BgpV6RouteRange to protobuf text + SetMsg(*otg.PatternFlowEthernetPauseEtherTypeMetricTag) PatternFlowEthernetPauseEtherTypeMetricTag + // ToProto marshals PatternFlowEthernetPauseEtherTypeMetricTag to protobuf object *otg.PatternFlowEthernetPauseEtherTypeMetricTag + ToProto() (*otg.PatternFlowEthernetPauseEtherTypeMetricTag, error) + // ToPbText marshals PatternFlowEthernetPauseEtherTypeMetricTag to protobuf text ToPbText() (string, error) - // ToYaml marshals BgpV6RouteRange to YAML text + // ToYaml marshals PatternFlowEthernetPauseEtherTypeMetricTag to YAML text ToYaml() (string, error) - // ToJson marshals BgpV6RouteRange to JSON text + // ToJson marshals PatternFlowEthernetPauseEtherTypeMetricTag to JSON text ToJson() (string, error) - // FromProto unmarshals BgpV6RouteRange from protobuf object *otg.BgpV6RouteRange - FromProto(msg *otg.BgpV6RouteRange) (BgpV6RouteRange, error) - // FromPbText unmarshals BgpV6RouteRange from protobuf text + // FromProto unmarshals PatternFlowEthernetPauseEtherTypeMetricTag from protobuf object *otg.PatternFlowEthernetPauseEtherTypeMetricTag + FromProto(msg *otg.PatternFlowEthernetPauseEtherTypeMetricTag) (PatternFlowEthernetPauseEtherTypeMetricTag, error) + // FromPbText unmarshals PatternFlowEthernetPauseEtherTypeMetricTag from protobuf text FromPbText(value string) error - // FromYaml unmarshals BgpV6RouteRange from YAML text + // FromYaml unmarshals PatternFlowEthernetPauseEtherTypeMetricTag from YAML text FromYaml(value string) error - // FromJson unmarshals BgpV6RouteRange from JSON text + // FromJson unmarshals PatternFlowEthernetPauseEtherTypeMetricTag from JSON text FromJson(value string) error - // Validate validates BgpV6RouteRange + // Validate validates PatternFlowEthernetPauseEtherTypeMetricTag Validate() error // A stringer function String() string // Clones the object - Clone() (BgpV6RouteRange, error) + Clone() (PatternFlowEthernetPauseEtherTypeMetricTag, error) validateToAndFrom() error validateObj(vObj *validation, set_default bool) setDefault() - // Addresses returns BgpV6RouteRangeV6RouteAddressIterIter, set in BgpV6RouteRange - Addresses() BgpV6RouteRangeV6RouteAddressIter - // NextHopMode returns BgpV6RouteRangeNextHopModeEnum, set in BgpV6RouteRange - NextHopMode() BgpV6RouteRangeNextHopModeEnum - // SetNextHopMode assigns BgpV6RouteRangeNextHopModeEnum provided by user to BgpV6RouteRange - SetNextHopMode(value BgpV6RouteRangeNextHopModeEnum) BgpV6RouteRange - // HasNextHopMode checks if NextHopMode has been set in BgpV6RouteRange - HasNextHopMode() bool - // NextHopAddressType returns BgpV6RouteRangeNextHopAddressTypeEnum, set in BgpV6RouteRange - NextHopAddressType() BgpV6RouteRangeNextHopAddressTypeEnum - // SetNextHopAddressType assigns BgpV6RouteRangeNextHopAddressTypeEnum provided by user to BgpV6RouteRange - SetNextHopAddressType(value BgpV6RouteRangeNextHopAddressTypeEnum) BgpV6RouteRange - // HasNextHopAddressType checks if NextHopAddressType has been set in BgpV6RouteRange - HasNextHopAddressType() bool - // NextHopIpv4Address returns string, set in BgpV6RouteRange. - NextHopIpv4Address() string - // SetNextHopIpv4Address assigns string provided by user to BgpV6RouteRange - SetNextHopIpv4Address(value string) BgpV6RouteRange - // HasNextHopIpv4Address checks if NextHopIpv4Address has been set in BgpV6RouteRange - HasNextHopIpv4Address() bool - // NextHopIpv6Address returns string, set in BgpV6RouteRange. - NextHopIpv6Address() string - // SetNextHopIpv6Address assigns string provided by user to BgpV6RouteRange - SetNextHopIpv6Address(value string) BgpV6RouteRange - // HasNextHopIpv6Address checks if NextHopIpv6Address has been set in BgpV6RouteRange - HasNextHopIpv6Address() bool - // Advanced returns BgpRouteAdvanced, set in BgpV6RouteRange. - // BgpRouteAdvanced is configuration for advanced BGP route range settings. - Advanced() BgpRouteAdvanced - // SetAdvanced assigns BgpRouteAdvanced provided by user to BgpV6RouteRange. - // BgpRouteAdvanced is configuration for advanced BGP route range settings. - SetAdvanced(value BgpRouteAdvanced) BgpV6RouteRange - // HasAdvanced checks if Advanced has been set in BgpV6RouteRange - HasAdvanced() bool - // Communities returns BgpV6RouteRangeBgpCommunityIterIter, set in BgpV6RouteRange - Communities() BgpV6RouteRangeBgpCommunityIter - // AsPath returns BgpAsPath, set in BgpV6RouteRange. - // BgpAsPath is this attribute identifies the autonomous systems through which routing information carried in this UPDATE message has passed. This contains the configuration of how to include the Local AS in the AS path attribute of the MP REACH NLRI. It also contains optional configuration of additional AS Path Segments that can be included in the AS Path attribute. The AS Path consists of a Set or Sequence of Autonomous Systems (AS) numbers that a routing information passes through to reach the destination. - AsPath() BgpAsPath - // SetAsPath assigns BgpAsPath provided by user to BgpV6RouteRange. - // BgpAsPath is this attribute identifies the autonomous systems through which routing information carried in this UPDATE message has passed. This contains the configuration of how to include the Local AS in the AS path attribute of the MP REACH NLRI. It also contains optional configuration of additional AS Path Segments that can be included in the AS Path attribute. The AS Path consists of a Set or Sequence of Autonomous Systems (AS) numbers that a routing information passes through to reach the destination. - SetAsPath(value BgpAsPath) BgpV6RouteRange - // HasAsPath checks if AsPath has been set in BgpV6RouteRange - HasAsPath() bool - // AddPath returns BgpAddPath, set in BgpV6RouteRange. - // BgpAddPath is the BGP Additional Paths feature is a BGP extension that allows the advertisement of multiple paths for the same prefix without the new paths implicitly replacing any previous paths. - AddPath() BgpAddPath - // SetAddPath assigns BgpAddPath provided by user to BgpV6RouteRange. - // BgpAddPath is the BGP Additional Paths feature is a BGP extension that allows the advertisement of multiple paths for the same prefix without the new paths implicitly replacing any previous paths. - SetAddPath(value BgpAddPath) BgpV6RouteRange - // HasAddPath checks if AddPath has been set in BgpV6RouteRange - HasAddPath() bool - // Name returns string, set in BgpV6RouteRange. + // Name returns string, set in PatternFlowEthernetPauseEtherTypeMetricTag. Name() string - // SetName assigns string provided by user to BgpV6RouteRange - SetName(value string) BgpV6RouteRange - // ExtCommunities returns BgpV6RouteRangeBgpExtCommunityIterIter, set in BgpV6RouteRange - ExtCommunities() BgpV6RouteRangeBgpExtCommunityIter - // ExtendedCommunities returns BgpV6RouteRangeBgpExtendedCommunityIterIter, set in BgpV6RouteRange - ExtendedCommunities() BgpV6RouteRangeBgpExtendedCommunityIter - setNil() -} - -// A list of group of IPv6 route addresses. -// Addresses returns a []V6RouteAddress -func (obj *bgpV6RouteRange) Addresses() BgpV6RouteRangeV6RouteAddressIter { - if len(obj.obj.Addresses) == 0 { - obj.obj.Addresses = []*otg.V6RouteAddress{} - } - if obj.addressesHolder == nil { - obj.addressesHolder = newBgpV6RouteRangeV6RouteAddressIter(&obj.obj.Addresses).setMsg(obj) - } - return obj.addressesHolder -} - -type bgpV6RouteRangeV6RouteAddressIter struct { - obj *bgpV6RouteRange - v6RouteAddressSlice []V6RouteAddress - fieldPtr *[]*otg.V6RouteAddress -} - -func newBgpV6RouteRangeV6RouteAddressIter(ptr *[]*otg.V6RouteAddress) BgpV6RouteRangeV6RouteAddressIter { - return &bgpV6RouteRangeV6RouteAddressIter{fieldPtr: ptr} -} - -type BgpV6RouteRangeV6RouteAddressIter interface { - setMsg(*bgpV6RouteRange) BgpV6RouteRangeV6RouteAddressIter - Items() []V6RouteAddress - Add() V6RouteAddress - Append(items ...V6RouteAddress) BgpV6RouteRangeV6RouteAddressIter - Set(index int, newObj V6RouteAddress) BgpV6RouteRangeV6RouteAddressIter - Clear() BgpV6RouteRangeV6RouteAddressIter - clearHolderSlice() BgpV6RouteRangeV6RouteAddressIter - appendHolderSlice(item V6RouteAddress) BgpV6RouteRangeV6RouteAddressIter -} - -func (obj *bgpV6RouteRangeV6RouteAddressIter) setMsg(msg *bgpV6RouteRange) BgpV6RouteRangeV6RouteAddressIter { - obj.clearHolderSlice() - for _, val := range *obj.fieldPtr { - obj.appendHolderSlice(&v6RouteAddress{obj: val}) - } - obj.obj = msg - return obj -} - -func (obj *bgpV6RouteRangeV6RouteAddressIter) Items() []V6RouteAddress { - return obj.v6RouteAddressSlice -} - -func (obj *bgpV6RouteRangeV6RouteAddressIter) Add() V6RouteAddress { - newObj := &otg.V6RouteAddress{} - *obj.fieldPtr = append(*obj.fieldPtr, newObj) - newLibObj := &v6RouteAddress{obj: newObj} - newLibObj.setDefault() - obj.v6RouteAddressSlice = append(obj.v6RouteAddressSlice, newLibObj) - return newLibObj -} - -func (obj *bgpV6RouteRangeV6RouteAddressIter) Append(items ...V6RouteAddress) BgpV6RouteRangeV6RouteAddressIter { - for _, item := range items { - newObj := item.Msg() - *obj.fieldPtr = append(*obj.fieldPtr, newObj) - obj.v6RouteAddressSlice = append(obj.v6RouteAddressSlice, item) - } - return obj -} - -func (obj *bgpV6RouteRangeV6RouteAddressIter) Set(index int, newObj V6RouteAddress) BgpV6RouteRangeV6RouteAddressIter { - (*obj.fieldPtr)[index] = newObj.Msg() - obj.v6RouteAddressSlice[index] = newObj - return obj -} -func (obj *bgpV6RouteRangeV6RouteAddressIter) Clear() BgpV6RouteRangeV6RouteAddressIter { - if len(*obj.fieldPtr) > 0 { - *obj.fieldPtr = []*otg.V6RouteAddress{} - obj.v6RouteAddressSlice = []V6RouteAddress{} - } - return obj -} -func (obj *bgpV6RouteRangeV6RouteAddressIter) clearHolderSlice() BgpV6RouteRangeV6RouteAddressIter { - if len(obj.v6RouteAddressSlice) > 0 { - obj.v6RouteAddressSlice = []V6RouteAddress{} - } - return obj -} -func (obj *bgpV6RouteRangeV6RouteAddressIter) appendHolderSlice(item V6RouteAddress) BgpV6RouteRangeV6RouteAddressIter { - obj.v6RouteAddressSlice = append(obj.v6RouteAddressSlice, item) - return obj -} - -type BgpV6RouteRangeNextHopModeEnum string - -// Enum of NextHopMode on BgpV6RouteRange -var BgpV6RouteRangeNextHopMode = struct { - LOCAL_IP BgpV6RouteRangeNextHopModeEnum - MANUAL BgpV6RouteRangeNextHopModeEnum -}{ - LOCAL_IP: BgpV6RouteRangeNextHopModeEnum("local_ip"), - MANUAL: BgpV6RouteRangeNextHopModeEnum("manual"), -} - -func (obj *bgpV6RouteRange) NextHopMode() BgpV6RouteRangeNextHopModeEnum { - return BgpV6RouteRangeNextHopModeEnum(obj.obj.NextHopMode.Enum().String()) -} - -// Specify the NextHop in MP REACH NLRI. The mode for setting the IP address of the NextHop in the MP REACH NLRI can be one of the following: -// Local IP: Automatically fills the Nexthop with the Local IP of the BGP -// peer. -// If BGP peer is of type IPv6, Nexthop Encoding capability should be enabled. -// Manual: Override the Nexthop with any arbitrary IPv4/IPv6 address. -// NextHopMode returns a string -func (obj *bgpV6RouteRange) HasNextHopMode() bool { - return obj.obj.NextHopMode != nil -} - -func (obj *bgpV6RouteRange) SetNextHopMode(value BgpV6RouteRangeNextHopModeEnum) BgpV6RouteRange { - intValue, ok := otg.BgpV6RouteRange_NextHopMode_Enum_value[string(value)] - if !ok { - obj.validationErrors = append(obj.validationErrors, fmt.Sprintf( - "%s is not a valid choice on BgpV6RouteRangeNextHopModeEnum", string(value))) - return obj - } - enumValue := otg.BgpV6RouteRange_NextHopMode_Enum(intValue) - obj.obj.NextHopMode = &enumValue - - return obj -} - -type BgpV6RouteRangeNextHopAddressTypeEnum string - -// Enum of NextHopAddressType on BgpV6RouteRange -var BgpV6RouteRangeNextHopAddressType = struct { - IPV4 BgpV6RouteRangeNextHopAddressTypeEnum - IPV6 BgpV6RouteRangeNextHopAddressTypeEnum -}{ - IPV4: BgpV6RouteRangeNextHopAddressTypeEnum("ipv4"), - IPV6: BgpV6RouteRangeNextHopAddressTypeEnum("ipv6"), -} - -func (obj *bgpV6RouteRange) NextHopAddressType() BgpV6RouteRangeNextHopAddressTypeEnum { - return BgpV6RouteRangeNextHopAddressTypeEnum(obj.obj.NextHopAddressType.Enum().String()) -} - -// If the Nexthop Mode is Manual, it sets the type of the NextHop IP address. -// NextHopAddressType returns a string -func (obj *bgpV6RouteRange) HasNextHopAddressType() bool { - return obj.obj.NextHopAddressType != nil -} - -func (obj *bgpV6RouteRange) SetNextHopAddressType(value BgpV6RouteRangeNextHopAddressTypeEnum) BgpV6RouteRange { - intValue, ok := otg.BgpV6RouteRange_NextHopAddressType_Enum_value[string(value)] - if !ok { - obj.validationErrors = append(obj.validationErrors, fmt.Sprintf( - "%s is not a valid choice on BgpV6RouteRangeNextHopAddressTypeEnum", string(value))) - return obj - } - enumValue := otg.BgpV6RouteRange_NextHopAddressType_Enum(intValue) - obj.obj.NextHopAddressType = &enumValue - - return obj -} - -// The IPv4 address of the next hop if the Nexthop Mode is manual and the Nexthop type is IPv4. If BGP peer is of type IPv6, Nexthop Encoding capability should be enabled. -// NextHopIpv4Address returns a string -func (obj *bgpV6RouteRange) NextHopIpv4Address() string { - - return *obj.obj.NextHopIpv4Address - -} - -// The IPv4 address of the next hop if the Nexthop Mode is manual and the Nexthop type is IPv4. If BGP peer is of type IPv6, Nexthop Encoding capability should be enabled. -// NextHopIpv4Address returns a string -func (obj *bgpV6RouteRange) HasNextHopIpv4Address() bool { - return obj.obj.NextHopIpv4Address != nil -} - -// The IPv4 address of the next hop if the Nexthop Mode is manual and the Nexthop type is IPv4. If BGP peer is of type IPv6, Nexthop Encoding capability should be enabled. -// SetNextHopIpv4Address sets the string value in the BgpV6RouteRange object -func (obj *bgpV6RouteRange) SetNextHopIpv4Address(value string) BgpV6RouteRange { - - obj.obj.NextHopIpv4Address = &value - return obj -} - -// The IPv6 address of the next hop if the Nexthop Mode is manual and the Nexthop type is IPv6. -// NextHopIpv6Address returns a string -func (obj *bgpV6RouteRange) NextHopIpv6Address() string { - - return *obj.obj.NextHopIpv6Address - -} - -// The IPv6 address of the next hop if the Nexthop Mode is manual and the Nexthop type is IPv6. -// NextHopIpv6Address returns a string -func (obj *bgpV6RouteRange) HasNextHopIpv6Address() bool { - return obj.obj.NextHopIpv6Address != nil -} - -// The IPv6 address of the next hop if the Nexthop Mode is manual and the Nexthop type is IPv6. -// SetNextHopIpv6Address sets the string value in the BgpV6RouteRange object -func (obj *bgpV6RouteRange) SetNextHopIpv6Address(value string) BgpV6RouteRange { - - obj.obj.NextHopIpv6Address = &value - return obj -} - -// description is TBD -// Advanced returns a BgpRouteAdvanced -func (obj *bgpV6RouteRange) Advanced() BgpRouteAdvanced { - if obj.obj.Advanced == nil { - obj.obj.Advanced = NewBgpRouteAdvanced().Msg() - } - if obj.advancedHolder == nil { - obj.advancedHolder = &bgpRouteAdvanced{obj: obj.obj.Advanced} - } - return obj.advancedHolder -} - -// description is TBD -// Advanced returns a BgpRouteAdvanced -func (obj *bgpV6RouteRange) HasAdvanced() bool { - return obj.obj.Advanced != nil -} - -// description is TBD -// SetAdvanced sets the BgpRouteAdvanced value in the BgpV6RouteRange object -func (obj *bgpV6RouteRange) SetAdvanced(value BgpRouteAdvanced) BgpV6RouteRange { - - obj.advancedHolder = nil - obj.obj.Advanced = value.Msg() - - return obj -} - -// Optional community settings. -// Communities returns a []BgpCommunity -func (obj *bgpV6RouteRange) Communities() BgpV6RouteRangeBgpCommunityIter { - if len(obj.obj.Communities) == 0 { - obj.obj.Communities = []*otg.BgpCommunity{} - } - if obj.communitiesHolder == nil { - obj.communitiesHolder = newBgpV6RouteRangeBgpCommunityIter(&obj.obj.Communities).setMsg(obj) - } - return obj.communitiesHolder -} - -type bgpV6RouteRangeBgpCommunityIter struct { - obj *bgpV6RouteRange - bgpCommunitySlice []BgpCommunity - fieldPtr *[]*otg.BgpCommunity -} - -func newBgpV6RouteRangeBgpCommunityIter(ptr *[]*otg.BgpCommunity) BgpV6RouteRangeBgpCommunityIter { - return &bgpV6RouteRangeBgpCommunityIter{fieldPtr: ptr} -} - -type BgpV6RouteRangeBgpCommunityIter interface { - setMsg(*bgpV6RouteRange) BgpV6RouteRangeBgpCommunityIter - Items() []BgpCommunity - Add() BgpCommunity - Append(items ...BgpCommunity) BgpV6RouteRangeBgpCommunityIter - Set(index int, newObj BgpCommunity) BgpV6RouteRangeBgpCommunityIter - Clear() BgpV6RouteRangeBgpCommunityIter - clearHolderSlice() BgpV6RouteRangeBgpCommunityIter - appendHolderSlice(item BgpCommunity) BgpV6RouteRangeBgpCommunityIter -} - -func (obj *bgpV6RouteRangeBgpCommunityIter) setMsg(msg *bgpV6RouteRange) BgpV6RouteRangeBgpCommunityIter { - obj.clearHolderSlice() - for _, val := range *obj.fieldPtr { - obj.appendHolderSlice(&bgpCommunity{obj: val}) - } - obj.obj = msg - return obj -} - -func (obj *bgpV6RouteRangeBgpCommunityIter) Items() []BgpCommunity { - return obj.bgpCommunitySlice -} - -func (obj *bgpV6RouteRangeBgpCommunityIter) Add() BgpCommunity { - newObj := &otg.BgpCommunity{} - *obj.fieldPtr = append(*obj.fieldPtr, newObj) - newLibObj := &bgpCommunity{obj: newObj} - newLibObj.setDefault() - obj.bgpCommunitySlice = append(obj.bgpCommunitySlice, newLibObj) - return newLibObj -} - -func (obj *bgpV6RouteRangeBgpCommunityIter) Append(items ...BgpCommunity) BgpV6RouteRangeBgpCommunityIter { - for _, item := range items { - newObj := item.Msg() - *obj.fieldPtr = append(*obj.fieldPtr, newObj) - obj.bgpCommunitySlice = append(obj.bgpCommunitySlice, item) - } - return obj -} - -func (obj *bgpV6RouteRangeBgpCommunityIter) Set(index int, newObj BgpCommunity) BgpV6RouteRangeBgpCommunityIter { - (*obj.fieldPtr)[index] = newObj.Msg() - obj.bgpCommunitySlice[index] = newObj - return obj -} -func (obj *bgpV6RouteRangeBgpCommunityIter) Clear() BgpV6RouteRangeBgpCommunityIter { - if len(*obj.fieldPtr) > 0 { - *obj.fieldPtr = []*otg.BgpCommunity{} - obj.bgpCommunitySlice = []BgpCommunity{} - } - return obj -} -func (obj *bgpV6RouteRangeBgpCommunityIter) clearHolderSlice() BgpV6RouteRangeBgpCommunityIter { - if len(obj.bgpCommunitySlice) > 0 { - obj.bgpCommunitySlice = []BgpCommunity{} - } - return obj -} -func (obj *bgpV6RouteRangeBgpCommunityIter) appendHolderSlice(item BgpCommunity) BgpV6RouteRangeBgpCommunityIter { - obj.bgpCommunitySlice = append(obj.bgpCommunitySlice, item) - return obj -} - -// description is TBD -// AsPath returns a BgpAsPath -func (obj *bgpV6RouteRange) AsPath() BgpAsPath { - if obj.obj.AsPath == nil { - obj.obj.AsPath = NewBgpAsPath().Msg() - } - if obj.asPathHolder == nil { - obj.asPathHolder = &bgpAsPath{obj: obj.obj.AsPath} - } - return obj.asPathHolder -} - -// description is TBD -// AsPath returns a BgpAsPath -func (obj *bgpV6RouteRange) HasAsPath() bool { - return obj.obj.AsPath != nil -} - -// description is TBD -// SetAsPath sets the BgpAsPath value in the BgpV6RouteRange object -func (obj *bgpV6RouteRange) SetAsPath(value BgpAsPath) BgpV6RouteRange { - - obj.asPathHolder = nil - obj.obj.AsPath = value.Msg() - - return obj -} - -// description is TBD -// AddPath returns a BgpAddPath -func (obj *bgpV6RouteRange) AddPath() BgpAddPath { - if obj.obj.AddPath == nil { - obj.obj.AddPath = NewBgpAddPath().Msg() - } - if obj.addPathHolder == nil { - obj.addPathHolder = &bgpAddPath{obj: obj.obj.AddPath} - } - return obj.addPathHolder -} - -// description is TBD -// AddPath returns a BgpAddPath -func (obj *bgpV6RouteRange) HasAddPath() bool { - return obj.obj.AddPath != nil -} - -// description is TBD -// SetAddPath sets the BgpAddPath value in the BgpV6RouteRange object -func (obj *bgpV6RouteRange) SetAddPath(value BgpAddPath) BgpV6RouteRange { - - obj.addPathHolder = nil - obj.obj.AddPath = value.Msg() - - return obj + // SetName assigns string provided by user to PatternFlowEthernetPauseEtherTypeMetricTag + SetName(value string) PatternFlowEthernetPauseEtherTypeMetricTag + // Offset returns uint32, set in PatternFlowEthernetPauseEtherTypeMetricTag. + Offset() uint32 + // SetOffset assigns uint32 provided by user to PatternFlowEthernetPauseEtherTypeMetricTag + SetOffset(value uint32) PatternFlowEthernetPauseEtherTypeMetricTag + // HasOffset checks if Offset has been set in PatternFlowEthernetPauseEtherTypeMetricTag + HasOffset() bool + // Length returns uint32, set in PatternFlowEthernetPauseEtherTypeMetricTag. + Length() uint32 + // SetLength assigns uint32 provided by user to PatternFlowEthernetPauseEtherTypeMetricTag + SetLength(value uint32) PatternFlowEthernetPauseEtherTypeMetricTag + // HasLength checks if Length has been set in PatternFlowEthernetPauseEtherTypeMetricTag + HasLength() bool } -// Globally unique name of an object. It also serves as the primary key for arrays of objects. +// Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field // Name returns a string -func (obj *bgpV6RouteRange) Name() string { +func (obj *patternFlowEthernetPauseEtherTypeMetricTag) Name() string { return *obj.obj.Name } -// Globally unique name of an object. It also serves as the primary key for arrays of objects. -// SetName sets the string value in the BgpV6RouteRange object -func (obj *bgpV6RouteRange) SetName(value string) BgpV6RouteRange { +// Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field +// SetName sets the string value in the PatternFlowEthernetPauseEtherTypeMetricTag object +func (obj *patternFlowEthernetPauseEtherTypeMetricTag) SetName(value string) PatternFlowEthernetPauseEtherTypeMetricTag { obj.obj.Name = &value return obj } -// Deprecated: This property is deprecated in favor of property extended_communities -// -// Deprecated: This property is deprecated in favor of property extended_communities -// -// Optional Extended Community settings. The Extended Communities Attribute is a transitive optional BGP attribute, with the Type Code 16. Community and Extended Communities attributes are utilized to trigger routing decisions, such as acceptance, rejection, preference, or redistribution. An extended community is an 8-Bytes value. It is divided into two main parts. The first 2 Bytes of the community encode a type and sub-type fields and the last 6 Bytes carry a unique set of data in a format defined by the type and sub-type field. Extended communities provide a larger range for grouping or categorizing communities. When type is administrator_as_2octet or administrator_as_4octet, the valid sub types are route target and origin. The valid value for administrator_as_2octet and administrator_as_4octet type is either two byte AS followed by four byte local administrator id or four byte AS followed by two byte local administrator id. When type is administrator_ipv4_address the valid sub types are route target and origin. The valid value for administrator_ipv4_address is a four byte IPv4 address followed by a two byte local administrator id. When type is opaque, valid sub types are color and encapsulation. When sub type is color, first two bytes of the value field contain flags and last four bytes contains the value of the color. When sub type is encapsulation the first four bytes of value field are reserved and last two bytes carries the tunnel type from IANA's "ETHER TYPES" registry e.g IPv4 (protocol type = 0x0800), IPv6 (protocol type = 0x86dd), and MPLS (protocol type = 0x8847). When type is administrator_as_2octet_link_bandwidth the valid sub type is extended_bandwidth. The first two bytes of the value field contains the AS number and the last four bytes contains the bandwidth in IEEE floating point format. When type is evpn the valid subtype is mac_address. In the value field the low-order bit of the first byte(Flags) is defined as the "Sticky/static" flag and may be set to 1, indicating the MAC address is static and cannot move. The second byte is reserved and the last four bytes contain the sequence number which is used to ensure that PEs retain the correct MAC/IP Advertisement route when multiple updates occur for the same MAC address. Note evpn type is defined mainly for use with evpn route updates and not for IPv4 and IPv6 route updates. -// ExtCommunities returns a []BgpExtCommunity -func (obj *bgpV6RouteRange) ExtCommunities() BgpV6RouteRangeBgpExtCommunityIter { - if len(obj.obj.ExtCommunities) == 0 { - obj.obj.ExtCommunities = []*otg.BgpExtCommunity{} - } - if obj.extCommunitiesHolder == nil { - obj.extCommunitiesHolder = newBgpV6RouteRangeBgpExtCommunityIter(&obj.obj.ExtCommunities).setMsg(obj) - } - return obj.extCommunitiesHolder -} - -type bgpV6RouteRangeBgpExtCommunityIter struct { - obj *bgpV6RouteRange - bgpExtCommunitySlice []BgpExtCommunity - fieldPtr *[]*otg.BgpExtCommunity -} - -func newBgpV6RouteRangeBgpExtCommunityIter(ptr *[]*otg.BgpExtCommunity) BgpV6RouteRangeBgpExtCommunityIter { - return &bgpV6RouteRangeBgpExtCommunityIter{fieldPtr: ptr} -} - -type BgpV6RouteRangeBgpExtCommunityIter interface { - setMsg(*bgpV6RouteRange) BgpV6RouteRangeBgpExtCommunityIter - Items() []BgpExtCommunity - Add() BgpExtCommunity - Append(items ...BgpExtCommunity) BgpV6RouteRangeBgpExtCommunityIter - Set(index int, newObj BgpExtCommunity) BgpV6RouteRangeBgpExtCommunityIter - Clear() BgpV6RouteRangeBgpExtCommunityIter - clearHolderSlice() BgpV6RouteRangeBgpExtCommunityIter - appendHolderSlice(item BgpExtCommunity) BgpV6RouteRangeBgpExtCommunityIter -} +// Offset in bits relative to start of corresponding header field +// Offset returns a uint32 +func (obj *patternFlowEthernetPauseEtherTypeMetricTag) Offset() uint32 { -func (obj *bgpV6RouteRangeBgpExtCommunityIter) setMsg(msg *bgpV6RouteRange) BgpV6RouteRangeBgpExtCommunityIter { - obj.clearHolderSlice() - for _, val := range *obj.fieldPtr { - obj.appendHolderSlice(&bgpExtCommunity{obj: val}) - } - obj.obj = msg - return obj -} + return *obj.obj.Offset -func (obj *bgpV6RouteRangeBgpExtCommunityIter) Items() []BgpExtCommunity { - return obj.bgpExtCommunitySlice } -func (obj *bgpV6RouteRangeBgpExtCommunityIter) Add() BgpExtCommunity { - newObj := &otg.BgpExtCommunity{} - *obj.fieldPtr = append(*obj.fieldPtr, newObj) - newLibObj := &bgpExtCommunity{obj: newObj} - newLibObj.setDefault() - obj.bgpExtCommunitySlice = append(obj.bgpExtCommunitySlice, newLibObj) - return newLibObj +// Offset in bits relative to start of corresponding header field +// Offset returns a uint32 +func (obj *patternFlowEthernetPauseEtherTypeMetricTag) HasOffset() bool { + return obj.obj.Offset != nil } -func (obj *bgpV6RouteRangeBgpExtCommunityIter) Append(items ...BgpExtCommunity) BgpV6RouteRangeBgpExtCommunityIter { - for _, item := range items { - newObj := item.Msg() - *obj.fieldPtr = append(*obj.fieldPtr, newObj) - obj.bgpExtCommunitySlice = append(obj.bgpExtCommunitySlice, item) - } - return obj -} +// Offset in bits relative to start of corresponding header field +// SetOffset sets the uint32 value in the PatternFlowEthernetPauseEtherTypeMetricTag object +func (obj *patternFlowEthernetPauseEtherTypeMetricTag) SetOffset(value uint32) PatternFlowEthernetPauseEtherTypeMetricTag { -func (obj *bgpV6RouteRangeBgpExtCommunityIter) Set(index int, newObj BgpExtCommunity) BgpV6RouteRangeBgpExtCommunityIter { - (*obj.fieldPtr)[index] = newObj.Msg() - obj.bgpExtCommunitySlice[index] = newObj - return obj -} -func (obj *bgpV6RouteRangeBgpExtCommunityIter) Clear() BgpV6RouteRangeBgpExtCommunityIter { - if len(*obj.fieldPtr) > 0 { - *obj.fieldPtr = []*otg.BgpExtCommunity{} - obj.bgpExtCommunitySlice = []BgpExtCommunity{} - } - return obj -} -func (obj *bgpV6RouteRangeBgpExtCommunityIter) clearHolderSlice() BgpV6RouteRangeBgpExtCommunityIter { - if len(obj.bgpExtCommunitySlice) > 0 { - obj.bgpExtCommunitySlice = []BgpExtCommunity{} - } - return obj -} -func (obj *bgpV6RouteRangeBgpExtCommunityIter) appendHolderSlice(item BgpExtCommunity) BgpV6RouteRangeBgpExtCommunityIter { - obj.bgpExtCommunitySlice = append(obj.bgpExtCommunitySlice, item) + obj.obj.Offset = &value return obj } -// Optional Extended Community settings. The Extended Communities Attribute is a transitive optional BGP attribute, with the Type Code 16. Community and Extended Communities attributes are utilized to trigger routing decisions, such as acceptance, rejection, preference, or redistribution. An extended community is an eight byte value. It is divided into two main parts. The first two bytes of the community encode a type and sub-type fields and the last six bytes carry a unique set of data in a format defined by the type and sub-type field. Extended communities provide a larger range for grouping or categorizing communities. -// ExtendedCommunities returns a []BgpExtendedCommunity -func (obj *bgpV6RouteRange) ExtendedCommunities() BgpV6RouteRangeBgpExtendedCommunityIter { - if len(obj.obj.ExtendedCommunities) == 0 { - obj.obj.ExtendedCommunities = []*otg.BgpExtendedCommunity{} - } - if obj.extendedCommunitiesHolder == nil { - obj.extendedCommunitiesHolder = newBgpV6RouteRangeBgpExtendedCommunityIter(&obj.obj.ExtendedCommunities).setMsg(obj) - } - return obj.extendedCommunitiesHolder -} - -type bgpV6RouteRangeBgpExtendedCommunityIter struct { - obj *bgpV6RouteRange - bgpExtendedCommunitySlice []BgpExtendedCommunity - fieldPtr *[]*otg.BgpExtendedCommunity -} - -func newBgpV6RouteRangeBgpExtendedCommunityIter(ptr *[]*otg.BgpExtendedCommunity) BgpV6RouteRangeBgpExtendedCommunityIter { - return &bgpV6RouteRangeBgpExtendedCommunityIter{fieldPtr: ptr} -} - -type BgpV6RouteRangeBgpExtendedCommunityIter interface { - setMsg(*bgpV6RouteRange) BgpV6RouteRangeBgpExtendedCommunityIter - Items() []BgpExtendedCommunity - Add() BgpExtendedCommunity - Append(items ...BgpExtendedCommunity) BgpV6RouteRangeBgpExtendedCommunityIter - Set(index int, newObj BgpExtendedCommunity) BgpV6RouteRangeBgpExtendedCommunityIter - Clear() BgpV6RouteRangeBgpExtendedCommunityIter - clearHolderSlice() BgpV6RouteRangeBgpExtendedCommunityIter - appendHolderSlice(item BgpExtendedCommunity) BgpV6RouteRangeBgpExtendedCommunityIter -} +// Number of bits to track for metrics starting from configured offset of corresponding header field +// Length returns a uint32 +func (obj *patternFlowEthernetPauseEtherTypeMetricTag) Length() uint32 { -func (obj *bgpV6RouteRangeBgpExtendedCommunityIter) setMsg(msg *bgpV6RouteRange) BgpV6RouteRangeBgpExtendedCommunityIter { - obj.clearHolderSlice() - for _, val := range *obj.fieldPtr { - obj.appendHolderSlice(&bgpExtendedCommunity{obj: val}) - } - obj.obj = msg - return obj -} + return *obj.obj.Length -func (obj *bgpV6RouteRangeBgpExtendedCommunityIter) Items() []BgpExtendedCommunity { - return obj.bgpExtendedCommunitySlice } -func (obj *bgpV6RouteRangeBgpExtendedCommunityIter) Add() BgpExtendedCommunity { - newObj := &otg.BgpExtendedCommunity{} - *obj.fieldPtr = append(*obj.fieldPtr, newObj) - newLibObj := &bgpExtendedCommunity{obj: newObj} - newLibObj.setDefault() - obj.bgpExtendedCommunitySlice = append(obj.bgpExtendedCommunitySlice, newLibObj) - return newLibObj +// Number of bits to track for metrics starting from configured offset of corresponding header field +// Length returns a uint32 +func (obj *patternFlowEthernetPauseEtherTypeMetricTag) HasLength() bool { + return obj.obj.Length != nil } -func (obj *bgpV6RouteRangeBgpExtendedCommunityIter) Append(items ...BgpExtendedCommunity) BgpV6RouteRangeBgpExtendedCommunityIter { - for _, item := range items { - newObj := item.Msg() - *obj.fieldPtr = append(*obj.fieldPtr, newObj) - obj.bgpExtendedCommunitySlice = append(obj.bgpExtendedCommunitySlice, item) - } - return obj -} +// Number of bits to track for metrics starting from configured offset of corresponding header field +// SetLength sets the uint32 value in the PatternFlowEthernetPauseEtherTypeMetricTag object +func (obj *patternFlowEthernetPauseEtherTypeMetricTag) SetLength(value uint32) PatternFlowEthernetPauseEtherTypeMetricTag { -func (obj *bgpV6RouteRangeBgpExtendedCommunityIter) Set(index int, newObj BgpExtendedCommunity) BgpV6RouteRangeBgpExtendedCommunityIter { - (*obj.fieldPtr)[index] = newObj.Msg() - obj.bgpExtendedCommunitySlice[index] = newObj - return obj -} -func (obj *bgpV6RouteRangeBgpExtendedCommunityIter) Clear() BgpV6RouteRangeBgpExtendedCommunityIter { - if len(*obj.fieldPtr) > 0 { - *obj.fieldPtr = []*otg.BgpExtendedCommunity{} - obj.bgpExtendedCommunitySlice = []BgpExtendedCommunity{} - } - return obj -} -func (obj *bgpV6RouteRangeBgpExtendedCommunityIter) clearHolderSlice() BgpV6RouteRangeBgpExtendedCommunityIter { - if len(obj.bgpExtendedCommunitySlice) > 0 { - obj.bgpExtendedCommunitySlice = []BgpExtendedCommunity{} - } - return obj -} -func (obj *bgpV6RouteRangeBgpExtendedCommunityIter) appendHolderSlice(item BgpExtendedCommunity) BgpV6RouteRangeBgpExtendedCommunityIter { - obj.bgpExtendedCommunitySlice = append(obj.bgpExtendedCommunitySlice, item) + obj.obj.Length = &value return obj } -func (obj *bgpV6RouteRange) validateObj(vObj *validation, set_default bool) { +func (obj *patternFlowEthernetPauseEtherTypeMetricTag) validateObj(vObj *validation, set_default bool) { if set_default { obj.setDefault() } - if len(obj.obj.Addresses) != 0 { - - if set_default { - obj.Addresses().clearHolderSlice() - for _, item := range obj.obj.Addresses { - obj.Addresses().appendHolderSlice(&v6RouteAddress{obj: item}) - } - } - for _, item := range obj.Addresses().Items() { - item.validateObj(vObj, set_default) - } - - } - - if obj.obj.NextHopIpv4Address != nil { - - err := obj.validateIpv4(obj.NextHopIpv4Address()) - if err != nil { - vObj.validationErrors = append(vObj.validationErrors, fmt.Sprintf("%s %s", err.Error(), "on BgpV6RouteRange.NextHopIpv4Address")) - } - - } - - if obj.obj.NextHopIpv6Address != nil { - - err := obj.validateIpv6(obj.NextHopIpv6Address()) - if err != nil { - vObj.validationErrors = append(vObj.validationErrors, fmt.Sprintf("%s %s", err.Error(), "on BgpV6RouteRange.NextHopIpv6Address")) - } - - } - - if obj.obj.Advanced != nil { - - obj.Advanced().validateObj(vObj, set_default) - } - - if len(obj.obj.Communities) != 0 { - - if set_default { - obj.Communities().clearHolderSlice() - for _, item := range obj.obj.Communities { - obj.Communities().appendHolderSlice(&bgpCommunity{obj: item}) - } - } - for _, item := range obj.Communities().Items() { - item.validateObj(vObj, set_default) - } - - } - - if obj.obj.AsPath != nil { - - obj.AsPath().validateObj(vObj, set_default) - } - - if obj.obj.AddPath != nil { - - obj.AddPath().validateObj(vObj, set_default) - } - // Name is required if obj.obj.Name == nil { - vObj.validationErrors = append(vObj.validationErrors, "Name is required field on interface BgpV6RouteRange") + vObj.validationErrors = append(vObj.validationErrors, "Name is required field on interface PatternFlowEthernetPauseEtherTypeMetricTag") } - if len(obj.obj.ExtCommunities) != 0 { - obj.addWarnings("ExtCommunities property in schema BgpV6RouteRange is deprecated, This property is deprecated in favor of property extended_communities") + if obj.obj.Offset != nil { - if set_default { - obj.ExtCommunities().clearHolderSlice() - for _, item := range obj.obj.ExtCommunities { - obj.ExtCommunities().appendHolderSlice(&bgpExtCommunity{obj: item}) - } - } - for _, item := range obj.ExtCommunities().Items() { - item.validateObj(vObj, set_default) + if *obj.obj.Offset > 15 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("0 <= PatternFlowEthernetPauseEtherTypeMetricTag.Offset <= 15 but Got %d", *obj.obj.Offset)) } } - if len(obj.obj.ExtendedCommunities) != 0 { + if obj.obj.Length != nil { - if set_default { - obj.ExtendedCommunities().clearHolderSlice() - for _, item := range obj.obj.ExtendedCommunities { - obj.ExtendedCommunities().appendHolderSlice(&bgpExtendedCommunity{obj: item}) - } - } - for _, item := range obj.ExtendedCommunities().Items() { - item.validateObj(vObj, set_default) + if *obj.obj.Length < 1 || *obj.obj.Length > 16 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("1 <= PatternFlowEthernetPauseEtherTypeMetricTag.Length <= 16 but Got %d", *obj.obj.Length)) } } } -func (obj *bgpV6RouteRange) setDefault() { - if obj.obj.NextHopMode == nil { - obj.SetNextHopMode(BgpV6RouteRangeNextHopMode.LOCAL_IP) - - } - if obj.obj.NextHopAddressType == nil { - obj.SetNextHopAddressType(BgpV6RouteRangeNextHopAddressType.IPV6) - - } - if obj.obj.NextHopIpv4Address == nil { - obj.SetNextHopIpv4Address("0.0.0.0") +func (obj *patternFlowEthernetPauseEtherTypeMetricTag) setDefault() { + if obj.obj.Offset == nil { + obj.SetOffset(0) } - if obj.obj.NextHopIpv6Address == nil { - obj.SetNextHopIpv6Address("::0") + if obj.obj.Length == nil { + obj.SetLength(16) } } -// ***** BgpSrteV4Policy ***** -type bgpSrteV4Policy struct { +// ***** PatternFlowEthernetPauseControlOpCodeCounter ***** +type patternFlowEthernetPauseControlOpCodeCounter struct { validation - obj *otg.BgpSrteV4Policy - advancedHolder BgpRouteAdvanced - addPathHolder BgpAddPath - asPathHolder BgpAsPath - communitiesHolder BgpSrteV4PolicyBgpCommunityIter - extCommunitiesHolder BgpSrteV4PolicyBgpExtCommunityIter - tunnelTlvsHolder BgpSrteV4PolicyBgpSrteV4TunnelTlvIter + obj *otg.PatternFlowEthernetPauseControlOpCodeCounter } -func NewBgpSrteV4Policy() BgpSrteV4Policy { - obj := bgpSrteV4Policy{obj: &otg.BgpSrteV4Policy{}} +func NewPatternFlowEthernetPauseControlOpCodeCounter() PatternFlowEthernetPauseControlOpCodeCounter { + obj := patternFlowEthernetPauseControlOpCodeCounter{obj: &otg.PatternFlowEthernetPauseControlOpCodeCounter{}} obj.setDefault() return &obj } -func (obj *bgpSrteV4Policy) Msg() *otg.BgpSrteV4Policy { +func (obj *patternFlowEthernetPauseControlOpCodeCounter) Msg() *otg.PatternFlowEthernetPauseControlOpCodeCounter { return obj.obj } -func (obj *bgpSrteV4Policy) SetMsg(msg *otg.BgpSrteV4Policy) BgpSrteV4Policy { - obj.setNil() +func (obj *patternFlowEthernetPauseControlOpCodeCounter) SetMsg(msg *otg.PatternFlowEthernetPauseControlOpCodeCounter) PatternFlowEthernetPauseControlOpCodeCounter { + proto.Merge(obj.obj, msg) return obj } -func (obj *bgpSrteV4Policy) ToProto() (*otg.BgpSrteV4Policy, error) { +func (obj *patternFlowEthernetPauseControlOpCodeCounter) ToProto() (*otg.PatternFlowEthernetPauseControlOpCodeCounter, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -177622,7 +222185,7 @@ func (obj *bgpSrteV4Policy) ToProto() (*otg.BgpSrteV4Policy, error) { return obj.Msg(), nil } -func (obj *bgpSrteV4Policy) FromProto(msg *otg.BgpSrteV4Policy) (BgpSrteV4Policy, error) { +func (obj *patternFlowEthernetPauseControlOpCodeCounter) FromProto(msg *otg.PatternFlowEthernetPauseControlOpCodeCounter) (PatternFlowEthernetPauseControlOpCodeCounter, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -177631,7 +222194,7 @@ func (obj *bgpSrteV4Policy) FromProto(msg *otg.BgpSrteV4Policy) (BgpSrteV4Policy return newObj, nil } -func (obj *bgpSrteV4Policy) ToPbText() (string, error) { +func (obj *patternFlowEthernetPauseControlOpCodeCounter) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -177643,12 +222206,12 @@ func (obj *bgpSrteV4Policy) ToPbText() (string, error) { return string(protoMarshal), nil } -func (obj *bgpSrteV4Policy) FromPbText(value string) error { +func (obj *patternFlowEthernetPauseControlOpCodeCounter) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj } - obj.setNil() + vErr := obj.validateToAndFrom() if vErr != nil { return vErr @@ -177656,7 +222219,7 @@ func (obj *bgpSrteV4Policy) FromPbText(value string) error { return retObj } -func (obj *bgpSrteV4Policy) ToYaml() (string, error) { +func (obj *patternFlowEthernetPauseControlOpCodeCounter) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -177677,7 +222240,7 @@ func (obj *bgpSrteV4Policy) ToYaml() (string, error) { return string(data), nil } -func (obj *bgpSrteV4Policy) FromYaml(value string) error { +func (obj *patternFlowEthernetPauseControlOpCodeCounter) FromYaml(value string) error { if value == "" { value = "{}" } @@ -177694,7 +222257,7 @@ func (obj *bgpSrteV4Policy) FromYaml(value string) error { return fmt.Errorf("unmarshal error %s", strings.Replace( uError.Error(), "\u00a0", " ", -1)[7:]) } - obj.setNil() + vErr := obj.validateToAndFrom() if vErr != nil { return vErr @@ -177702,7 +222265,7 @@ func (obj *bgpSrteV4Policy) FromYaml(value string) error { return nil } -func (obj *bgpSrteV4Policy) ToJson() (string, error) { +func (obj *patternFlowEthernetPauseControlOpCodeCounter) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -177720,7 +222283,7 @@ func (obj *bgpSrteV4Policy) ToJson() (string, error) { return string(data), nil } -func (obj *bgpSrteV4Policy) FromJson(value string) error { +func (obj *patternFlowEthernetPauseControlOpCodeCounter) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -177733,7 +222296,7 @@ func (obj *bgpSrteV4Policy) FromJson(value string) error { return fmt.Errorf("unmarshal error %s", strings.Replace( uError.Error(), "\u00a0", " ", -1)[7:]) } - obj.setNil() + err := obj.validateToAndFrom() if err != nil { return err @@ -177741,19 +222304,19 @@ func (obj *bgpSrteV4Policy) FromJson(value string) error { return nil } -func (obj *bgpSrteV4Policy) validateToAndFrom() error { +func (obj *patternFlowEthernetPauseControlOpCodeCounter) validateToAndFrom() error { // emptyVars() obj.validateObj(&obj.validation, true) return obj.validationResult() } -func (obj *bgpSrteV4Policy) Validate() error { +func (obj *patternFlowEthernetPauseControlOpCodeCounter) Validate() error { // emptyVars() obj.validateObj(&obj.validation, false) return obj.validationResult() } -func (obj *bgpSrteV4Policy) String() string { +func (obj *patternFlowEthernetPauseControlOpCodeCounter) String() string { str, err := obj.ToYaml() if err != nil { return err.Error() @@ -177761,12 +222324,12 @@ func (obj *bgpSrteV4Policy) String() string { return str } -func (obj *bgpSrteV4Policy) Clone() (BgpSrteV4Policy, error) { +func (obj *patternFlowEthernetPauseControlOpCodeCounter) Clone() (PatternFlowEthernetPauseControlOpCodeCounter, error) { vErr := obj.Validate() if vErr != nil { return nil, vErr } - newObj := NewBgpSrteV4Policy() + newObj := NewPatternFlowEthernetPauseControlOpCodeCounter() data, err := proto.Marshal(obj.Msg()) if err != nil { return nil, err @@ -177778,841 +222341,539 @@ func (obj *bgpSrteV4Policy) Clone() (BgpSrteV4Policy, error) { return newObj, nil } -func (obj *bgpSrteV4Policy) setNil() { - obj.advancedHolder = nil - obj.addPathHolder = nil - obj.asPathHolder = nil - obj.communitiesHolder = nil - obj.extCommunitiesHolder = nil - obj.tunnelTlvsHolder = nil - obj.validationErrors = nil - obj.warnings = nil - obj.constraints = make(map[string]map[string]Constraints) -} - -// BgpSrteV4Policy is configuration for BGP Segment Routing Traffic Engineering(SRTE) -// policy. - -type BgpSrteV4Policy interface { +// PatternFlowEthernetPauseControlOpCodeCounter is integer counter pattern +type PatternFlowEthernetPauseControlOpCodeCounter interface { Validation - // Msg marshals BgpSrteV4Policy to protobuf object *otg.BgpSrteV4Policy + // Msg marshals PatternFlowEthernetPauseControlOpCodeCounter to protobuf object *otg.PatternFlowEthernetPauseControlOpCodeCounter // and doesn't set defaults - Msg() *otg.BgpSrteV4Policy - // SetMsg unmarshals BgpSrteV4Policy from protobuf object *otg.BgpSrteV4Policy + Msg() *otg.PatternFlowEthernetPauseControlOpCodeCounter + // SetMsg unmarshals PatternFlowEthernetPauseControlOpCodeCounter from protobuf object *otg.PatternFlowEthernetPauseControlOpCodeCounter // and doesn't set defaults - SetMsg(*otg.BgpSrteV4Policy) BgpSrteV4Policy - // ToProto marshals BgpSrteV4Policy to protobuf object *otg.BgpSrteV4Policy - ToProto() (*otg.BgpSrteV4Policy, error) - // ToPbText marshals BgpSrteV4Policy to protobuf text + SetMsg(*otg.PatternFlowEthernetPauseControlOpCodeCounter) PatternFlowEthernetPauseControlOpCodeCounter + // ToProto marshals PatternFlowEthernetPauseControlOpCodeCounter to protobuf object *otg.PatternFlowEthernetPauseControlOpCodeCounter + ToProto() (*otg.PatternFlowEthernetPauseControlOpCodeCounter, error) + // ToPbText marshals PatternFlowEthernetPauseControlOpCodeCounter to protobuf text ToPbText() (string, error) - // ToYaml marshals BgpSrteV4Policy to YAML text + // ToYaml marshals PatternFlowEthernetPauseControlOpCodeCounter to YAML text ToYaml() (string, error) - // ToJson marshals BgpSrteV4Policy to JSON text + // ToJson marshals PatternFlowEthernetPauseControlOpCodeCounter to JSON text ToJson() (string, error) - // FromProto unmarshals BgpSrteV4Policy from protobuf object *otg.BgpSrteV4Policy - FromProto(msg *otg.BgpSrteV4Policy) (BgpSrteV4Policy, error) - // FromPbText unmarshals BgpSrteV4Policy from protobuf text + // FromProto unmarshals PatternFlowEthernetPauseControlOpCodeCounter from protobuf object *otg.PatternFlowEthernetPauseControlOpCodeCounter + FromProto(msg *otg.PatternFlowEthernetPauseControlOpCodeCounter) (PatternFlowEthernetPauseControlOpCodeCounter, error) + // FromPbText unmarshals PatternFlowEthernetPauseControlOpCodeCounter from protobuf text FromPbText(value string) error - // FromYaml unmarshals BgpSrteV4Policy from YAML text + // FromYaml unmarshals PatternFlowEthernetPauseControlOpCodeCounter from YAML text FromYaml(value string) error - // FromJson unmarshals BgpSrteV4Policy from JSON text + // FromJson unmarshals PatternFlowEthernetPauseControlOpCodeCounter from JSON text FromJson(value string) error - // Validate validates BgpSrteV4Policy + // Validate validates PatternFlowEthernetPauseControlOpCodeCounter Validate() error // A stringer function String() string // Clones the object - Clone() (BgpSrteV4Policy, error) + Clone() (PatternFlowEthernetPauseControlOpCodeCounter, error) validateToAndFrom() error validateObj(vObj *validation, set_default bool) setDefault() - // Distinguisher returns uint32, set in BgpSrteV4Policy. - Distinguisher() uint32 - // SetDistinguisher assigns uint32 provided by user to BgpSrteV4Policy - SetDistinguisher(value uint32) BgpSrteV4Policy - // HasDistinguisher checks if Distinguisher has been set in BgpSrteV4Policy - HasDistinguisher() bool - // Color returns uint32, set in BgpSrteV4Policy. - Color() uint32 - // SetColor assigns uint32 provided by user to BgpSrteV4Policy - SetColor(value uint32) BgpSrteV4Policy - // HasColor checks if Color has been set in BgpSrteV4Policy - HasColor() bool - // Ipv4Endpoint returns string, set in BgpSrteV4Policy. - Ipv4Endpoint() string - // SetIpv4Endpoint assigns string provided by user to BgpSrteV4Policy - SetIpv4Endpoint(value string) BgpSrteV4Policy - // NextHopMode returns BgpSrteV4PolicyNextHopModeEnum, set in BgpSrteV4Policy - NextHopMode() BgpSrteV4PolicyNextHopModeEnum - // SetNextHopMode assigns BgpSrteV4PolicyNextHopModeEnum provided by user to BgpSrteV4Policy - SetNextHopMode(value BgpSrteV4PolicyNextHopModeEnum) BgpSrteV4Policy - // HasNextHopMode checks if NextHopMode has been set in BgpSrteV4Policy - HasNextHopMode() bool - // NextHopAddressType returns BgpSrteV4PolicyNextHopAddressTypeEnum, set in BgpSrteV4Policy - NextHopAddressType() BgpSrteV4PolicyNextHopAddressTypeEnum - // SetNextHopAddressType assigns BgpSrteV4PolicyNextHopAddressTypeEnum provided by user to BgpSrteV4Policy - SetNextHopAddressType(value BgpSrteV4PolicyNextHopAddressTypeEnum) BgpSrteV4Policy - // HasNextHopAddressType checks if NextHopAddressType has been set in BgpSrteV4Policy - HasNextHopAddressType() bool - // NextHopIpv4Address returns string, set in BgpSrteV4Policy. - NextHopIpv4Address() string - // SetNextHopIpv4Address assigns string provided by user to BgpSrteV4Policy - SetNextHopIpv4Address(value string) BgpSrteV4Policy - // HasNextHopIpv4Address checks if NextHopIpv4Address has been set in BgpSrteV4Policy - HasNextHopIpv4Address() bool - // NextHopIpv6Address returns string, set in BgpSrteV4Policy. - NextHopIpv6Address() string - // SetNextHopIpv6Address assigns string provided by user to BgpSrteV4Policy - SetNextHopIpv6Address(value string) BgpSrteV4Policy - // HasNextHopIpv6Address checks if NextHopIpv6Address has been set in BgpSrteV4Policy - HasNextHopIpv6Address() bool - // Advanced returns BgpRouteAdvanced, set in BgpSrteV4Policy. - // BgpRouteAdvanced is configuration for advanced BGP route range settings. - Advanced() BgpRouteAdvanced - // SetAdvanced assigns BgpRouteAdvanced provided by user to BgpSrteV4Policy. - // BgpRouteAdvanced is configuration for advanced BGP route range settings. - SetAdvanced(value BgpRouteAdvanced) BgpSrteV4Policy - // HasAdvanced checks if Advanced has been set in BgpSrteV4Policy - HasAdvanced() bool - // AddPath returns BgpAddPath, set in BgpSrteV4Policy. - // BgpAddPath is the BGP Additional Paths feature is a BGP extension that allows the advertisement of multiple paths for the same prefix without the new paths implicitly replacing any previous paths. - AddPath() BgpAddPath - // SetAddPath assigns BgpAddPath provided by user to BgpSrteV4Policy. - // BgpAddPath is the BGP Additional Paths feature is a BGP extension that allows the advertisement of multiple paths for the same prefix without the new paths implicitly replacing any previous paths. - SetAddPath(value BgpAddPath) BgpSrteV4Policy - // HasAddPath checks if AddPath has been set in BgpSrteV4Policy - HasAddPath() bool - // AsPath returns BgpAsPath, set in BgpSrteV4Policy. - // BgpAsPath is this attribute identifies the autonomous systems through which routing information carried in this UPDATE message has passed. This contains the configuration of how to include the Local AS in the AS path attribute of the MP REACH NLRI. It also contains optional configuration of additional AS Path Segments that can be included in the AS Path attribute. The AS Path consists of a Set or Sequence of Autonomous Systems (AS) numbers that a routing information passes through to reach the destination. - AsPath() BgpAsPath - // SetAsPath assigns BgpAsPath provided by user to BgpSrteV4Policy. - // BgpAsPath is this attribute identifies the autonomous systems through which routing information carried in this UPDATE message has passed. This contains the configuration of how to include the Local AS in the AS path attribute of the MP REACH NLRI. It also contains optional configuration of additional AS Path Segments that can be included in the AS Path attribute. The AS Path consists of a Set or Sequence of Autonomous Systems (AS) numbers that a routing information passes through to reach the destination. - SetAsPath(value BgpAsPath) BgpSrteV4Policy - // HasAsPath checks if AsPath has been set in BgpSrteV4Policy - HasAsPath() bool - // Communities returns BgpSrteV4PolicyBgpCommunityIterIter, set in BgpSrteV4Policy - Communities() BgpSrteV4PolicyBgpCommunityIter - // ExtCommunities returns BgpSrteV4PolicyBgpExtCommunityIterIter, set in BgpSrteV4Policy - ExtCommunities() BgpSrteV4PolicyBgpExtCommunityIter - // TunnelTlvs returns BgpSrteV4PolicyBgpSrteV4TunnelTlvIterIter, set in BgpSrteV4Policy - TunnelTlvs() BgpSrteV4PolicyBgpSrteV4TunnelTlvIter - // Name returns string, set in BgpSrteV4Policy. - Name() string - // SetName assigns string provided by user to BgpSrteV4Policy - SetName(value string) BgpSrteV4Policy - // Active returns bool, set in BgpSrteV4Policy. - Active() bool - // SetActive assigns bool provided by user to BgpSrteV4Policy - SetActive(value bool) BgpSrteV4Policy - // HasActive checks if Active has been set in BgpSrteV4Policy - HasActive() bool - setNil() + // Start returns uint32, set in PatternFlowEthernetPauseControlOpCodeCounter. + Start() uint32 + // SetStart assigns uint32 provided by user to PatternFlowEthernetPauseControlOpCodeCounter + SetStart(value uint32) PatternFlowEthernetPauseControlOpCodeCounter + // HasStart checks if Start has been set in PatternFlowEthernetPauseControlOpCodeCounter + HasStart() bool + // Step returns uint32, set in PatternFlowEthernetPauseControlOpCodeCounter. + Step() uint32 + // SetStep assigns uint32 provided by user to PatternFlowEthernetPauseControlOpCodeCounter + SetStep(value uint32) PatternFlowEthernetPauseControlOpCodeCounter + // HasStep checks if Step has been set in PatternFlowEthernetPauseControlOpCodeCounter + HasStep() bool + // Count returns uint32, set in PatternFlowEthernetPauseControlOpCodeCounter. + Count() uint32 + // SetCount assigns uint32 provided by user to PatternFlowEthernetPauseControlOpCodeCounter + SetCount(value uint32) PatternFlowEthernetPauseControlOpCodeCounter + // HasCount checks if Count has been set in PatternFlowEthernetPauseControlOpCodeCounter + HasCount() bool } -// 4-octet value uniquely identifying the policy in the context of (color, endpoint) tuple. It is used by the SR Policy originator to make unique (from an NLRI perspective) both for multiple candidate paths of the same SR Policy as well as candidate paths of different SR Policies (i.e. with different segment list) with the same Color and Endpoint but meant for different head-ends. -// Distinguisher returns a uint32 -func (obj *bgpSrteV4Policy) Distinguisher() uint32 { +// description is TBD +// Start returns a uint32 +func (obj *patternFlowEthernetPauseControlOpCodeCounter) Start() uint32 { - return *obj.obj.Distinguisher + return *obj.obj.Start } -// 4-octet value uniquely identifying the policy in the context of (color, endpoint) tuple. It is used by the SR Policy originator to make unique (from an NLRI perspective) both for multiple candidate paths of the same SR Policy as well as candidate paths of different SR Policies (i.e. with different segment list) with the same Color and Endpoint but meant for different head-ends. -// Distinguisher returns a uint32 -func (obj *bgpSrteV4Policy) HasDistinguisher() bool { - return obj.obj.Distinguisher != nil +// description is TBD +// Start returns a uint32 +func (obj *patternFlowEthernetPauseControlOpCodeCounter) HasStart() bool { + return obj.obj.Start != nil } -// 4-octet value uniquely identifying the policy in the context of (color, endpoint) tuple. It is used by the SR Policy originator to make unique (from an NLRI perspective) both for multiple candidate paths of the same SR Policy as well as candidate paths of different SR Policies (i.e. with different segment list) with the same Color and Endpoint but meant for different head-ends. -// SetDistinguisher sets the uint32 value in the BgpSrteV4Policy object -func (obj *bgpSrteV4Policy) SetDistinguisher(value uint32) BgpSrteV4Policy { +// description is TBD +// SetStart sets the uint32 value in the PatternFlowEthernetPauseControlOpCodeCounter object +func (obj *patternFlowEthernetPauseControlOpCodeCounter) SetStart(value uint32) PatternFlowEthernetPauseControlOpCodeCounter { - obj.obj.Distinguisher = &value + obj.obj.Start = &value return obj } -// Policy color is used to match the color of the destination prefixes to steer traffic into the SR Policy. -// Color returns a uint32 -func (obj *bgpSrteV4Policy) Color() uint32 { - - return *obj.obj.Color - -} - -// Policy color is used to match the color of the destination prefixes to steer traffic into the SR Policy. -// Color returns a uint32 -func (obj *bgpSrteV4Policy) HasColor() bool { - return obj.obj.Color != nil -} +// description is TBD +// Step returns a uint32 +func (obj *patternFlowEthernetPauseControlOpCodeCounter) Step() uint32 { -// Policy color is used to match the color of the destination prefixes to steer traffic into the SR Policy. -// SetColor sets the uint32 value in the BgpSrteV4Policy object -func (obj *bgpSrteV4Policy) SetColor(value uint32) BgpSrteV4Policy { + return *obj.obj.Step - obj.obj.Color = &value - return obj } -// Specifies a single node or a set of nodes (e.g. an anycast address). It is selected on the basis of the SR Policy type (AFI). -// Ipv4Endpoint returns a string -func (obj *bgpSrteV4Policy) Ipv4Endpoint() string { - - return *obj.obj.Ipv4Endpoint - +// description is TBD +// Step returns a uint32 +func (obj *patternFlowEthernetPauseControlOpCodeCounter) HasStep() bool { + return obj.obj.Step != nil } -// Specifies a single node or a set of nodes (e.g. an anycast address). It is selected on the basis of the SR Policy type (AFI). -// SetIpv4Endpoint sets the string value in the BgpSrteV4Policy object -func (obj *bgpSrteV4Policy) SetIpv4Endpoint(value string) BgpSrteV4Policy { +// description is TBD +// SetStep sets the uint32 value in the PatternFlowEthernetPauseControlOpCodeCounter object +func (obj *patternFlowEthernetPauseControlOpCodeCounter) SetStep(value uint32) PatternFlowEthernetPauseControlOpCodeCounter { - obj.obj.Ipv4Endpoint = &value + obj.obj.Step = &value return obj } -type BgpSrteV4PolicyNextHopModeEnum string +// description is TBD +// Count returns a uint32 +func (obj *patternFlowEthernetPauseControlOpCodeCounter) Count() uint32 { -// Enum of NextHopMode on BgpSrteV4Policy -var BgpSrteV4PolicyNextHopMode = struct { - LOCAL_IP BgpSrteV4PolicyNextHopModeEnum - MANUAL BgpSrteV4PolicyNextHopModeEnum -}{ - LOCAL_IP: BgpSrteV4PolicyNextHopModeEnum("local_ip"), - MANUAL: BgpSrteV4PolicyNextHopModeEnum("manual"), -} + return *obj.obj.Count -func (obj *bgpSrteV4Policy) NextHopMode() BgpSrteV4PolicyNextHopModeEnum { - return BgpSrteV4PolicyNextHopModeEnum(obj.obj.NextHopMode.Enum().String()) } -// Mode for choosing the NextHop in MP REACH NLRI. Available modes are : Local IP: Automatically fills the Nexthop with the Local IP of the BGP peer. For IPv6 BGP peer the Nexthop Encoding capability should be enabled. Manual: Override the Nexthop with any arbitrary IPv4/IPv6 address. -// NextHopMode returns a string -func (obj *bgpSrteV4Policy) HasNextHopMode() bool { - return obj.obj.NextHopMode != nil +// description is TBD +// Count returns a uint32 +func (obj *patternFlowEthernetPauseControlOpCodeCounter) HasCount() bool { + return obj.obj.Count != nil } -func (obj *bgpSrteV4Policy) SetNextHopMode(value BgpSrteV4PolicyNextHopModeEnum) BgpSrteV4Policy { - intValue, ok := otg.BgpSrteV4Policy_NextHopMode_Enum_value[string(value)] - if !ok { - obj.validationErrors = append(obj.validationErrors, fmt.Sprintf( - "%s is not a valid choice on BgpSrteV4PolicyNextHopModeEnum", string(value))) - return obj - } - enumValue := otg.BgpSrteV4Policy_NextHopMode_Enum(intValue) - obj.obj.NextHopMode = &enumValue +// description is TBD +// SetCount sets the uint32 value in the PatternFlowEthernetPauseControlOpCodeCounter object +func (obj *patternFlowEthernetPauseControlOpCodeCounter) SetCount(value uint32) PatternFlowEthernetPauseControlOpCodeCounter { + obj.obj.Count = &value return obj } -type BgpSrteV4PolicyNextHopAddressTypeEnum string - -// Enum of NextHopAddressType on BgpSrteV4Policy -var BgpSrteV4PolicyNextHopAddressType = struct { - IPV4 BgpSrteV4PolicyNextHopAddressTypeEnum - IPV6 BgpSrteV4PolicyNextHopAddressTypeEnum -}{ - IPV4: BgpSrteV4PolicyNextHopAddressTypeEnum("ipv4"), - IPV6: BgpSrteV4PolicyNextHopAddressTypeEnum("ipv6"), -} - -func (obj *bgpSrteV4Policy) NextHopAddressType() BgpSrteV4PolicyNextHopAddressTypeEnum { - return BgpSrteV4PolicyNextHopAddressTypeEnum(obj.obj.NextHopAddressType.Enum().String()) -} - -// Type of next hop IP address to be used when 'next_hop_mode' is set to 'manual'. -// NextHopAddressType returns a string -func (obj *bgpSrteV4Policy) HasNextHopAddressType() bool { - return obj.obj.NextHopAddressType != nil -} - -func (obj *bgpSrteV4Policy) SetNextHopAddressType(value BgpSrteV4PolicyNextHopAddressTypeEnum) BgpSrteV4Policy { - intValue, ok := otg.BgpSrteV4Policy_NextHopAddressType_Enum_value[string(value)] - if !ok { - obj.validationErrors = append(obj.validationErrors, fmt.Sprintf( - "%s is not a valid choice on BgpSrteV4PolicyNextHopAddressTypeEnum", string(value))) - return obj +func (obj *patternFlowEthernetPauseControlOpCodeCounter) validateObj(vObj *validation, set_default bool) { + if set_default { + obj.setDefault() } - enumValue := otg.BgpSrteV4Policy_NextHopAddressType_Enum(intValue) - obj.obj.NextHopAddressType = &enumValue - - return obj -} - -// The IPv4 address of the next hop if the Nexthop type 'next_hop_mode' is 'manual' and the Nexthop type 'next_hop_address_type' is IPv4. If BGP peer is of type IPv6, Nexthop Encoding capability extended_next_hop_encoding should be enabled. -// NextHopIpv4Address returns a string -func (obj *bgpSrteV4Policy) NextHopIpv4Address() string { - return *obj.obj.NextHopIpv4Address - -} + if obj.obj.Start != nil { -// The IPv4 address of the next hop if the Nexthop type 'next_hop_mode' is 'manual' and the Nexthop type 'next_hop_address_type' is IPv4. If BGP peer is of type IPv6, Nexthop Encoding capability extended_next_hop_encoding should be enabled. -// NextHopIpv4Address returns a string -func (obj *bgpSrteV4Policy) HasNextHopIpv4Address() bool { - return obj.obj.NextHopIpv4Address != nil -} + if *obj.obj.Start > 65535 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("0 <= PatternFlowEthernetPauseControlOpCodeCounter.Start <= 65535 but Got %d", *obj.obj.Start)) + } -// The IPv4 address of the next hop if the Nexthop type 'next_hop_mode' is 'manual' and the Nexthop type 'next_hop_address_type' is IPv4. If BGP peer is of type IPv6, Nexthop Encoding capability extended_next_hop_encoding should be enabled. -// SetNextHopIpv4Address sets the string value in the BgpSrteV4Policy object -func (obj *bgpSrteV4Policy) SetNextHopIpv4Address(value string) BgpSrteV4Policy { + } - obj.obj.NextHopIpv4Address = &value - return obj -} + if obj.obj.Step != nil { -// The IPv6 address of the next hop if the Nexthop Mode 'next_hop_address_type' is 'manual' and the Nexthop type 'next_hop_address_type' is IPv6. -// NextHopIpv6Address returns a string -func (obj *bgpSrteV4Policy) NextHopIpv6Address() string { + if *obj.obj.Step > 65535 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("0 <= PatternFlowEthernetPauseControlOpCodeCounter.Step <= 65535 but Got %d", *obj.obj.Step)) + } - return *obj.obj.NextHopIpv6Address + } -} + if obj.obj.Count != nil { -// The IPv6 address of the next hop if the Nexthop Mode 'next_hop_address_type' is 'manual' and the Nexthop type 'next_hop_address_type' is IPv6. -// NextHopIpv6Address returns a string -func (obj *bgpSrteV4Policy) HasNextHopIpv6Address() bool { - return obj.obj.NextHopIpv6Address != nil -} + if *obj.obj.Count > 65535 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("0 <= PatternFlowEthernetPauseControlOpCodeCounter.Count <= 65535 but Got %d", *obj.obj.Count)) + } -// The IPv6 address of the next hop if the Nexthop Mode 'next_hop_address_type' is 'manual' and the Nexthop type 'next_hop_address_type' is IPv6. -// SetNextHopIpv6Address sets the string value in the BgpSrteV4Policy object -func (obj *bgpSrteV4Policy) SetNextHopIpv6Address(value string) BgpSrteV4Policy { + } - obj.obj.NextHopIpv6Address = &value - return obj } -// description is TBD -// Advanced returns a BgpRouteAdvanced -func (obj *bgpSrteV4Policy) Advanced() BgpRouteAdvanced { - if obj.obj.Advanced == nil { - obj.obj.Advanced = NewBgpRouteAdvanced().Msg() +func (obj *patternFlowEthernetPauseControlOpCodeCounter) setDefault() { + if obj.obj.Start == nil { + obj.SetStart(1) } - if obj.advancedHolder == nil { - obj.advancedHolder = &bgpRouteAdvanced{obj: obj.obj.Advanced} + if obj.obj.Step == nil { + obj.SetStep(1) + } + if obj.obj.Count == nil { + obj.SetCount(1) } - return obj.advancedHolder -} -// description is TBD -// Advanced returns a BgpRouteAdvanced -func (obj *bgpSrteV4Policy) HasAdvanced() bool { - return obj.obj.Advanced != nil } -// description is TBD -// SetAdvanced sets the BgpRouteAdvanced value in the BgpSrteV4Policy object -func (obj *bgpSrteV4Policy) SetAdvanced(value BgpRouteAdvanced) BgpSrteV4Policy { - - obj.advancedHolder = nil - obj.obj.Advanced = value.Msg() - - return obj +// ***** PatternFlowEthernetPauseControlOpCodeMetricTag ***** +type patternFlowEthernetPauseControlOpCodeMetricTag struct { + validation + obj *otg.PatternFlowEthernetPauseControlOpCodeMetricTag } -// description is TBD -// AddPath returns a BgpAddPath -func (obj *bgpSrteV4Policy) AddPath() BgpAddPath { - if obj.obj.AddPath == nil { - obj.obj.AddPath = NewBgpAddPath().Msg() - } - if obj.addPathHolder == nil { - obj.addPathHolder = &bgpAddPath{obj: obj.obj.AddPath} - } - return obj.addPathHolder +func NewPatternFlowEthernetPauseControlOpCodeMetricTag() PatternFlowEthernetPauseControlOpCodeMetricTag { + obj := patternFlowEthernetPauseControlOpCodeMetricTag{obj: &otg.PatternFlowEthernetPauseControlOpCodeMetricTag{}} + obj.setDefault() + return &obj } -// description is TBD -// AddPath returns a BgpAddPath -func (obj *bgpSrteV4Policy) HasAddPath() bool { - return obj.obj.AddPath != nil +func (obj *patternFlowEthernetPauseControlOpCodeMetricTag) Msg() *otg.PatternFlowEthernetPauseControlOpCodeMetricTag { + return obj.obj } -// description is TBD -// SetAddPath sets the BgpAddPath value in the BgpSrteV4Policy object -func (obj *bgpSrteV4Policy) SetAddPath(value BgpAddPath) BgpSrteV4Policy { - - obj.addPathHolder = nil - obj.obj.AddPath = value.Msg() +func (obj *patternFlowEthernetPauseControlOpCodeMetricTag) SetMsg(msg *otg.PatternFlowEthernetPauseControlOpCodeMetricTag) PatternFlowEthernetPauseControlOpCodeMetricTag { + proto.Merge(obj.obj, msg) return obj } -// description is TBD -// AsPath returns a BgpAsPath -func (obj *bgpSrteV4Policy) AsPath() BgpAsPath { - if obj.obj.AsPath == nil { - obj.obj.AsPath = NewBgpAsPath().Msg() - } - if obj.asPathHolder == nil { - obj.asPathHolder = &bgpAsPath{obj: obj.obj.AsPath} +func (obj *patternFlowEthernetPauseControlOpCodeMetricTag) ToProto() (*otg.PatternFlowEthernetPauseControlOpCodeMetricTag, error) { + err := obj.validateToAndFrom() + if err != nil { + return nil, err } - return obj.asPathHolder -} - -// description is TBD -// AsPath returns a BgpAsPath -func (obj *bgpSrteV4Policy) HasAsPath() bool { - return obj.obj.AsPath != nil + return obj.Msg(), nil } -// description is TBD -// SetAsPath sets the BgpAsPath value in the BgpSrteV4Policy object -func (obj *bgpSrteV4Policy) SetAsPath(value BgpAsPath) BgpSrteV4Policy { - - obj.asPathHolder = nil - obj.obj.AsPath = value.Msg() - - return obj +func (obj *patternFlowEthernetPauseControlOpCodeMetricTag) FromProto(msg *otg.PatternFlowEthernetPauseControlOpCodeMetricTag) (PatternFlowEthernetPauseControlOpCodeMetricTag, error) { + newObj := obj.SetMsg(msg) + err := newObj.validateToAndFrom() + if err != nil { + return nil, err + } + return newObj, nil } -// Optional Community settings. -// Communities returns a []BgpCommunity -func (obj *bgpSrteV4Policy) Communities() BgpSrteV4PolicyBgpCommunityIter { - if len(obj.obj.Communities) == 0 { - obj.obj.Communities = []*otg.BgpCommunity{} +func (obj *patternFlowEthernetPauseControlOpCodeMetricTag) ToPbText() (string, error) { + vErr := obj.validateToAndFrom() + if vErr != nil { + return "", vErr } - if obj.communitiesHolder == nil { - obj.communitiesHolder = newBgpSrteV4PolicyBgpCommunityIter(&obj.obj.Communities).setMsg(obj) + protoMarshal, err := proto.Marshal(obj.Msg()) + if err != nil { + return "", err } - return obj.communitiesHolder -} - -type bgpSrteV4PolicyBgpCommunityIter struct { - obj *bgpSrteV4Policy - bgpCommunitySlice []BgpCommunity - fieldPtr *[]*otg.BgpCommunity -} - -func newBgpSrteV4PolicyBgpCommunityIter(ptr *[]*otg.BgpCommunity) BgpSrteV4PolicyBgpCommunityIter { - return &bgpSrteV4PolicyBgpCommunityIter{fieldPtr: ptr} -} - -type BgpSrteV4PolicyBgpCommunityIter interface { - setMsg(*bgpSrteV4Policy) BgpSrteV4PolicyBgpCommunityIter - Items() []BgpCommunity - Add() BgpCommunity - Append(items ...BgpCommunity) BgpSrteV4PolicyBgpCommunityIter - Set(index int, newObj BgpCommunity) BgpSrteV4PolicyBgpCommunityIter - Clear() BgpSrteV4PolicyBgpCommunityIter - clearHolderSlice() BgpSrteV4PolicyBgpCommunityIter - appendHolderSlice(item BgpCommunity) BgpSrteV4PolicyBgpCommunityIter + return string(protoMarshal), nil } -func (obj *bgpSrteV4PolicyBgpCommunityIter) setMsg(msg *bgpSrteV4Policy) BgpSrteV4PolicyBgpCommunityIter { - obj.clearHolderSlice() - for _, val := range *obj.fieldPtr { - obj.appendHolderSlice(&bgpCommunity{obj: val}) +func (obj *patternFlowEthernetPauseControlOpCodeMetricTag) FromPbText(value string) error { + retObj := proto.Unmarshal([]byte(value), obj.Msg()) + if retObj != nil { + return retObj } - obj.obj = msg - return obj -} - -func (obj *bgpSrteV4PolicyBgpCommunityIter) Items() []BgpCommunity { - return obj.bgpCommunitySlice -} - -func (obj *bgpSrteV4PolicyBgpCommunityIter) Add() BgpCommunity { - newObj := &otg.BgpCommunity{} - *obj.fieldPtr = append(*obj.fieldPtr, newObj) - newLibObj := &bgpCommunity{obj: newObj} - newLibObj.setDefault() - obj.bgpCommunitySlice = append(obj.bgpCommunitySlice, newLibObj) - return newLibObj -} -func (obj *bgpSrteV4PolicyBgpCommunityIter) Append(items ...BgpCommunity) BgpSrteV4PolicyBgpCommunityIter { - for _, item := range items { - newObj := item.Msg() - *obj.fieldPtr = append(*obj.fieldPtr, newObj) - obj.bgpCommunitySlice = append(obj.bgpCommunitySlice, item) + vErr := obj.validateToAndFrom() + if vErr != nil { + return vErr } - return obj + return retObj } -func (obj *bgpSrteV4PolicyBgpCommunityIter) Set(index int, newObj BgpCommunity) BgpSrteV4PolicyBgpCommunityIter { - (*obj.fieldPtr)[index] = newObj.Msg() - obj.bgpCommunitySlice[index] = newObj - return obj -} -func (obj *bgpSrteV4PolicyBgpCommunityIter) Clear() BgpSrteV4PolicyBgpCommunityIter { - if len(*obj.fieldPtr) > 0 { - *obj.fieldPtr = []*otg.BgpCommunity{} - obj.bgpCommunitySlice = []BgpCommunity{} +func (obj *patternFlowEthernetPauseControlOpCodeMetricTag) ToYaml() (string, error) { + vErr := obj.validateToAndFrom() + if vErr != nil { + return "", vErr } - return obj -} -func (obj *bgpSrteV4PolicyBgpCommunityIter) clearHolderSlice() BgpSrteV4PolicyBgpCommunityIter { - if len(obj.bgpCommunitySlice) > 0 { - obj.bgpCommunitySlice = []BgpCommunity{} + opts := protojson.MarshalOptions{ + UseProtoNames: true, + AllowPartial: true, + EmitUnpopulated: false, } - return obj -} -func (obj *bgpSrteV4PolicyBgpCommunityIter) appendHolderSlice(item BgpCommunity) BgpSrteV4PolicyBgpCommunityIter { - obj.bgpCommunitySlice = append(obj.bgpCommunitySlice, item) - return obj -} - -// Optional Extended Community settings. The Extended Communities Attribute is a transitive optional BGP attribute, with the Type Code 16. Community and Extended Communities attributes are utilized to trigger routing decisions, such as acceptance, rejection, preference, or redistribution. An extended community is an 8-Bytes value. It is divided into two main parts. The first 2 Bytes of the community encode a type and sub-type fields and the last 6 Bytes carry a unique set of data in a format defined by the type and sub-type field. Extended communities provide a larger range for grouping or categorizing communities. When type is administrator_as_2octet or administrator_as_4octet, the valid sub types are route target and origin. The valid value for administrator_as_2octet and administrator_as_4octet type is either two byte AS followed by four byte local administrator id or four byte AS followed by two byte local administrator id. When type is administrator_ipv4_address the valid sub types are route target and origin. The valid value for administrator_ipv4_address is a four byte IPv4 address followed by a two byte local administrator id. When type is opaque, valid sub types are color and encapsulation. When sub type is color, first two bytes of the value field contain flags and last four bytes contains the value of the color. When sub type is encapsulation the first four bytes of value field are reserved and last two bytes carries the tunnel type from IANA's "ETHER TYPES" registry e.g IPv4 (protocol type = 0x0800), IPv6 (protocol type = 0x86dd), and MPLS (protocol type = 0x8847). When type is administrator_as_2octet_link_bandwidth the valid sub type is extended_bandwidth. The first two bytes of the value field contains the AS number and the last four bytes contains the bandwidth in IEEE floating point format. When type is evpn the valid subtype is mac_address. In the value field the low-order bit of the first byte(Flags) is defined as the "Sticky/static" flag and may be set to 1, indicating the MAC address is static and cannot move. The second byte is reserved and the last four bytes contain the sequence number which is used to ensure that PEs retain the correct MAC/IP Advertisement route when multiple updates occur for the same MAC address. -// ExtCommunities returns a []BgpExtCommunity -func (obj *bgpSrteV4Policy) ExtCommunities() BgpSrteV4PolicyBgpExtCommunityIter { - if len(obj.obj.ExtCommunities) == 0 { - obj.obj.ExtCommunities = []*otg.BgpExtCommunity{} + data, err := opts.Marshal(obj.Msg()) + if err != nil { + return "", err } - if obj.extCommunitiesHolder == nil { - obj.extCommunitiesHolder = newBgpSrteV4PolicyBgpExtCommunityIter(&obj.obj.ExtCommunities).setMsg(obj) + data, err = yaml.JSONToYAML(data) + if err != nil { + return "", err } - return obj.extCommunitiesHolder -} - -type bgpSrteV4PolicyBgpExtCommunityIter struct { - obj *bgpSrteV4Policy - bgpExtCommunitySlice []BgpExtCommunity - fieldPtr *[]*otg.BgpExtCommunity -} - -func newBgpSrteV4PolicyBgpExtCommunityIter(ptr *[]*otg.BgpExtCommunity) BgpSrteV4PolicyBgpExtCommunityIter { - return &bgpSrteV4PolicyBgpExtCommunityIter{fieldPtr: ptr} -} - -type BgpSrteV4PolicyBgpExtCommunityIter interface { - setMsg(*bgpSrteV4Policy) BgpSrteV4PolicyBgpExtCommunityIter - Items() []BgpExtCommunity - Add() BgpExtCommunity - Append(items ...BgpExtCommunity) BgpSrteV4PolicyBgpExtCommunityIter - Set(index int, newObj BgpExtCommunity) BgpSrteV4PolicyBgpExtCommunityIter - Clear() BgpSrteV4PolicyBgpExtCommunityIter - clearHolderSlice() BgpSrteV4PolicyBgpExtCommunityIter - appendHolderSlice(item BgpExtCommunity) BgpSrteV4PolicyBgpExtCommunityIter + return string(data), nil } -func (obj *bgpSrteV4PolicyBgpExtCommunityIter) setMsg(msg *bgpSrteV4Policy) BgpSrteV4PolicyBgpExtCommunityIter { - obj.clearHolderSlice() - for _, val := range *obj.fieldPtr { - obj.appendHolderSlice(&bgpExtCommunity{obj: val}) +func (obj *patternFlowEthernetPauseControlOpCodeMetricTag) FromYaml(value string) error { + if value == "" { + value = "{}" + } + data, err := yaml.YAMLToJSON([]byte(value)) + if err != nil { + return err + } + opts := protojson.UnmarshalOptions{ + AllowPartial: true, + DiscardUnknown: false, + } + uError := opts.Unmarshal([]byte(data), obj.Msg()) + if uError != nil { + return fmt.Errorf("unmarshal error %s", strings.Replace( + uError.Error(), "\u00a0", " ", -1)[7:]) } - obj.obj = msg - return obj -} - -func (obj *bgpSrteV4PolicyBgpExtCommunityIter) Items() []BgpExtCommunity { - return obj.bgpExtCommunitySlice -} - -func (obj *bgpSrteV4PolicyBgpExtCommunityIter) Add() BgpExtCommunity { - newObj := &otg.BgpExtCommunity{} - *obj.fieldPtr = append(*obj.fieldPtr, newObj) - newLibObj := &bgpExtCommunity{obj: newObj} - newLibObj.setDefault() - obj.bgpExtCommunitySlice = append(obj.bgpExtCommunitySlice, newLibObj) - return newLibObj -} -func (obj *bgpSrteV4PolicyBgpExtCommunityIter) Append(items ...BgpExtCommunity) BgpSrteV4PolicyBgpExtCommunityIter { - for _, item := range items { - newObj := item.Msg() - *obj.fieldPtr = append(*obj.fieldPtr, newObj) - obj.bgpExtCommunitySlice = append(obj.bgpExtCommunitySlice, item) + vErr := obj.validateToAndFrom() + if vErr != nil { + return vErr } - return obj + return nil } -func (obj *bgpSrteV4PolicyBgpExtCommunityIter) Set(index int, newObj BgpExtCommunity) BgpSrteV4PolicyBgpExtCommunityIter { - (*obj.fieldPtr)[index] = newObj.Msg() - obj.bgpExtCommunitySlice[index] = newObj - return obj -} -func (obj *bgpSrteV4PolicyBgpExtCommunityIter) Clear() BgpSrteV4PolicyBgpExtCommunityIter { - if len(*obj.fieldPtr) > 0 { - *obj.fieldPtr = []*otg.BgpExtCommunity{} - obj.bgpExtCommunitySlice = []BgpExtCommunity{} +func (obj *patternFlowEthernetPauseControlOpCodeMetricTag) ToJson() (string, error) { + vErr := obj.validateToAndFrom() + if vErr != nil { + return "", vErr } - return obj -} -func (obj *bgpSrteV4PolicyBgpExtCommunityIter) clearHolderSlice() BgpSrteV4PolicyBgpExtCommunityIter { - if len(obj.bgpExtCommunitySlice) > 0 { - obj.bgpExtCommunitySlice = []BgpExtCommunity{} + opts := protojson.MarshalOptions{ + UseProtoNames: true, + AllowPartial: true, + EmitUnpopulated: false, + Indent: " ", } - return obj -} -func (obj *bgpSrteV4PolicyBgpExtCommunityIter) appendHolderSlice(item BgpExtCommunity) BgpSrteV4PolicyBgpExtCommunityIter { - obj.bgpExtCommunitySlice = append(obj.bgpExtCommunitySlice, item) - return obj + data, err := opts.Marshal(obj.Msg()) + if err != nil { + return "", err + } + return string(data), nil } -// List Tunnel Encapsulation Attributes. -// TunnelTlvs returns a []BgpSrteV4TunnelTlv -func (obj *bgpSrteV4Policy) TunnelTlvs() BgpSrteV4PolicyBgpSrteV4TunnelTlvIter { - if len(obj.obj.TunnelTlvs) == 0 { - obj.obj.TunnelTlvs = []*otg.BgpSrteV4TunnelTlv{} +func (obj *patternFlowEthernetPauseControlOpCodeMetricTag) FromJson(value string) error { + opts := protojson.UnmarshalOptions{ + AllowPartial: true, + DiscardUnknown: false, } - if obj.tunnelTlvsHolder == nil { - obj.tunnelTlvsHolder = newBgpSrteV4PolicyBgpSrteV4TunnelTlvIter(&obj.obj.TunnelTlvs).setMsg(obj) + if value == "" { + value = "{}" + } + uError := opts.Unmarshal([]byte(value), obj.Msg()) + if uError != nil { + return fmt.Errorf("unmarshal error %s", strings.Replace( + uError.Error(), "\u00a0", " ", -1)[7:]) } - return obj.tunnelTlvsHolder -} - -type bgpSrteV4PolicyBgpSrteV4TunnelTlvIter struct { - obj *bgpSrteV4Policy - bgpSrteV4TunnelTlvSlice []BgpSrteV4TunnelTlv - fieldPtr *[]*otg.BgpSrteV4TunnelTlv -} - -func newBgpSrteV4PolicyBgpSrteV4TunnelTlvIter(ptr *[]*otg.BgpSrteV4TunnelTlv) BgpSrteV4PolicyBgpSrteV4TunnelTlvIter { - return &bgpSrteV4PolicyBgpSrteV4TunnelTlvIter{fieldPtr: ptr} -} - -type BgpSrteV4PolicyBgpSrteV4TunnelTlvIter interface { - setMsg(*bgpSrteV4Policy) BgpSrteV4PolicyBgpSrteV4TunnelTlvIter - Items() []BgpSrteV4TunnelTlv - Add() BgpSrteV4TunnelTlv - Append(items ...BgpSrteV4TunnelTlv) BgpSrteV4PolicyBgpSrteV4TunnelTlvIter - Set(index int, newObj BgpSrteV4TunnelTlv) BgpSrteV4PolicyBgpSrteV4TunnelTlvIter - Clear() BgpSrteV4PolicyBgpSrteV4TunnelTlvIter - clearHolderSlice() BgpSrteV4PolicyBgpSrteV4TunnelTlvIter - appendHolderSlice(item BgpSrteV4TunnelTlv) BgpSrteV4PolicyBgpSrteV4TunnelTlvIter -} -func (obj *bgpSrteV4PolicyBgpSrteV4TunnelTlvIter) setMsg(msg *bgpSrteV4Policy) BgpSrteV4PolicyBgpSrteV4TunnelTlvIter { - obj.clearHolderSlice() - for _, val := range *obj.fieldPtr { - obj.appendHolderSlice(&bgpSrteV4TunnelTlv{obj: val}) + err := obj.validateToAndFrom() + if err != nil { + return err } - obj.obj = msg - return obj + return nil } -func (obj *bgpSrteV4PolicyBgpSrteV4TunnelTlvIter) Items() []BgpSrteV4TunnelTlv { - return obj.bgpSrteV4TunnelTlvSlice +func (obj *patternFlowEthernetPauseControlOpCodeMetricTag) validateToAndFrom() error { + // emptyVars() + obj.validateObj(&obj.validation, true) + return obj.validationResult() } -func (obj *bgpSrteV4PolicyBgpSrteV4TunnelTlvIter) Add() BgpSrteV4TunnelTlv { - newObj := &otg.BgpSrteV4TunnelTlv{} - *obj.fieldPtr = append(*obj.fieldPtr, newObj) - newLibObj := &bgpSrteV4TunnelTlv{obj: newObj} - newLibObj.setDefault() - obj.bgpSrteV4TunnelTlvSlice = append(obj.bgpSrteV4TunnelTlvSlice, newLibObj) - return newLibObj +func (obj *patternFlowEthernetPauseControlOpCodeMetricTag) Validate() error { + // emptyVars() + obj.validateObj(&obj.validation, false) + return obj.validationResult() } -func (obj *bgpSrteV4PolicyBgpSrteV4TunnelTlvIter) Append(items ...BgpSrteV4TunnelTlv) BgpSrteV4PolicyBgpSrteV4TunnelTlvIter { - for _, item := range items { - newObj := item.Msg() - *obj.fieldPtr = append(*obj.fieldPtr, newObj) - obj.bgpSrteV4TunnelTlvSlice = append(obj.bgpSrteV4TunnelTlvSlice, item) +func (obj *patternFlowEthernetPauseControlOpCodeMetricTag) String() string { + str, err := obj.ToYaml() + if err != nil { + return err.Error() } - return obj + return str } -func (obj *bgpSrteV4PolicyBgpSrteV4TunnelTlvIter) Set(index int, newObj BgpSrteV4TunnelTlv) BgpSrteV4PolicyBgpSrteV4TunnelTlvIter { - (*obj.fieldPtr)[index] = newObj.Msg() - obj.bgpSrteV4TunnelTlvSlice[index] = newObj - return obj -} -func (obj *bgpSrteV4PolicyBgpSrteV4TunnelTlvIter) Clear() BgpSrteV4PolicyBgpSrteV4TunnelTlvIter { - if len(*obj.fieldPtr) > 0 { - *obj.fieldPtr = []*otg.BgpSrteV4TunnelTlv{} - obj.bgpSrteV4TunnelTlvSlice = []BgpSrteV4TunnelTlv{} +func (obj *patternFlowEthernetPauseControlOpCodeMetricTag) Clone() (PatternFlowEthernetPauseControlOpCodeMetricTag, error) { + vErr := obj.Validate() + if vErr != nil { + return nil, vErr } - return obj -} -func (obj *bgpSrteV4PolicyBgpSrteV4TunnelTlvIter) clearHolderSlice() BgpSrteV4PolicyBgpSrteV4TunnelTlvIter { - if len(obj.bgpSrteV4TunnelTlvSlice) > 0 { - obj.bgpSrteV4TunnelTlvSlice = []BgpSrteV4TunnelTlv{} + newObj := NewPatternFlowEthernetPauseControlOpCodeMetricTag() + data, err := proto.Marshal(obj.Msg()) + if err != nil { + return nil, err } - return obj + pbErr := proto.Unmarshal(data, newObj.Msg()) + if pbErr != nil { + return nil, pbErr + } + return newObj, nil } -func (obj *bgpSrteV4PolicyBgpSrteV4TunnelTlvIter) appendHolderSlice(item BgpSrteV4TunnelTlv) BgpSrteV4PolicyBgpSrteV4TunnelTlvIter { - obj.bgpSrteV4TunnelTlvSlice = append(obj.bgpSrteV4TunnelTlvSlice, item) - return obj + +// PatternFlowEthernetPauseControlOpCodeMetricTag is metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. +type PatternFlowEthernetPauseControlOpCodeMetricTag interface { + Validation + // Msg marshals PatternFlowEthernetPauseControlOpCodeMetricTag to protobuf object *otg.PatternFlowEthernetPauseControlOpCodeMetricTag + // and doesn't set defaults + Msg() *otg.PatternFlowEthernetPauseControlOpCodeMetricTag + // SetMsg unmarshals PatternFlowEthernetPauseControlOpCodeMetricTag from protobuf object *otg.PatternFlowEthernetPauseControlOpCodeMetricTag + // and doesn't set defaults + SetMsg(*otg.PatternFlowEthernetPauseControlOpCodeMetricTag) PatternFlowEthernetPauseControlOpCodeMetricTag + // ToProto marshals PatternFlowEthernetPauseControlOpCodeMetricTag to protobuf object *otg.PatternFlowEthernetPauseControlOpCodeMetricTag + ToProto() (*otg.PatternFlowEthernetPauseControlOpCodeMetricTag, error) + // ToPbText marshals PatternFlowEthernetPauseControlOpCodeMetricTag to protobuf text + ToPbText() (string, error) + // ToYaml marshals PatternFlowEthernetPauseControlOpCodeMetricTag to YAML text + ToYaml() (string, error) + // ToJson marshals PatternFlowEthernetPauseControlOpCodeMetricTag to JSON text + ToJson() (string, error) + // FromProto unmarshals PatternFlowEthernetPauseControlOpCodeMetricTag from protobuf object *otg.PatternFlowEthernetPauseControlOpCodeMetricTag + FromProto(msg *otg.PatternFlowEthernetPauseControlOpCodeMetricTag) (PatternFlowEthernetPauseControlOpCodeMetricTag, error) + // FromPbText unmarshals PatternFlowEthernetPauseControlOpCodeMetricTag from protobuf text + FromPbText(value string) error + // FromYaml unmarshals PatternFlowEthernetPauseControlOpCodeMetricTag from YAML text + FromYaml(value string) error + // FromJson unmarshals PatternFlowEthernetPauseControlOpCodeMetricTag from JSON text + FromJson(value string) error + // Validate validates PatternFlowEthernetPauseControlOpCodeMetricTag + Validate() error + // A stringer function + String() string + // Clones the object + Clone() (PatternFlowEthernetPauseControlOpCodeMetricTag, error) + validateToAndFrom() error + validateObj(vObj *validation, set_default bool) + setDefault() + // Name returns string, set in PatternFlowEthernetPauseControlOpCodeMetricTag. + Name() string + // SetName assigns string provided by user to PatternFlowEthernetPauseControlOpCodeMetricTag + SetName(value string) PatternFlowEthernetPauseControlOpCodeMetricTag + // Offset returns uint32, set in PatternFlowEthernetPauseControlOpCodeMetricTag. + Offset() uint32 + // SetOffset assigns uint32 provided by user to PatternFlowEthernetPauseControlOpCodeMetricTag + SetOffset(value uint32) PatternFlowEthernetPauseControlOpCodeMetricTag + // HasOffset checks if Offset has been set in PatternFlowEthernetPauseControlOpCodeMetricTag + HasOffset() bool + // Length returns uint32, set in PatternFlowEthernetPauseControlOpCodeMetricTag. + Length() uint32 + // SetLength assigns uint32 provided by user to PatternFlowEthernetPauseControlOpCodeMetricTag + SetLength(value uint32) PatternFlowEthernetPauseControlOpCodeMetricTag + // HasLength checks if Length has been set in PatternFlowEthernetPauseControlOpCodeMetricTag + HasLength() bool } -// Globally unique name of an object. It also serves as the primary key for arrays of objects. +// Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field // Name returns a string -func (obj *bgpSrteV4Policy) Name() string { +func (obj *patternFlowEthernetPauseControlOpCodeMetricTag) Name() string { return *obj.obj.Name } -// Globally unique name of an object. It also serves as the primary key for arrays of objects. -// SetName sets the string value in the BgpSrteV4Policy object -func (obj *bgpSrteV4Policy) SetName(value string) BgpSrteV4Policy { +// Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field +// SetName sets the string value in the PatternFlowEthernetPauseControlOpCodeMetricTag object +func (obj *patternFlowEthernetPauseControlOpCodeMetricTag) SetName(value string) PatternFlowEthernetPauseControlOpCodeMetricTag { obj.obj.Name = &value return obj } -// If enabled means that this part of the configuration including any active 'children' nodes will be advertised to peer. If disabled, this means that though config is present, it is not taking any part of the test but can be activated at run-time to advertise just this part of the configuration to the peer. -// Active returns a bool -func (obj *bgpSrteV4Policy) Active() bool { +// Offset in bits relative to start of corresponding header field +// Offset returns a uint32 +func (obj *patternFlowEthernetPauseControlOpCodeMetricTag) Offset() uint32 { - return *obj.obj.Active + return *obj.obj.Offset } -// If enabled means that this part of the configuration including any active 'children' nodes will be advertised to peer. If disabled, this means that though config is present, it is not taking any part of the test but can be activated at run-time to advertise just this part of the configuration to the peer. -// Active returns a bool -func (obj *bgpSrteV4Policy) HasActive() bool { - return obj.obj.Active != nil +// Offset in bits relative to start of corresponding header field +// Offset returns a uint32 +func (obj *patternFlowEthernetPauseControlOpCodeMetricTag) HasOffset() bool { + return obj.obj.Offset != nil } -// If enabled means that this part of the configuration including any active 'children' nodes will be advertised to peer. If disabled, this means that though config is present, it is not taking any part of the test but can be activated at run-time to advertise just this part of the configuration to the peer. -// SetActive sets the bool value in the BgpSrteV4Policy object -func (obj *bgpSrteV4Policy) SetActive(value bool) BgpSrteV4Policy { +// Offset in bits relative to start of corresponding header field +// SetOffset sets the uint32 value in the PatternFlowEthernetPauseControlOpCodeMetricTag object +func (obj *patternFlowEthernetPauseControlOpCodeMetricTag) SetOffset(value uint32) PatternFlowEthernetPauseControlOpCodeMetricTag { - obj.obj.Active = &value + obj.obj.Offset = &value return obj } -func (obj *bgpSrteV4Policy) validateObj(vObj *validation, set_default bool) { - if set_default { - obj.setDefault() - } - - // Ipv4Endpoint is required - if obj.obj.Ipv4Endpoint == nil { - vObj.validationErrors = append(vObj.validationErrors, "Ipv4Endpoint is required field on interface BgpSrteV4Policy") - } - if obj.obj.Ipv4Endpoint != nil { - - err := obj.validateIpv4(obj.Ipv4Endpoint()) - if err != nil { - vObj.validationErrors = append(vObj.validationErrors, fmt.Sprintf("%s %s", err.Error(), "on BgpSrteV4Policy.Ipv4Endpoint")) - } - - } - - if obj.obj.NextHopIpv4Address != nil { - - err := obj.validateIpv4(obj.NextHopIpv4Address()) - if err != nil { - vObj.validationErrors = append(vObj.validationErrors, fmt.Sprintf("%s %s", err.Error(), "on BgpSrteV4Policy.NextHopIpv4Address")) - } - - } - - if obj.obj.NextHopIpv6Address != nil { - - err := obj.validateIpv6(obj.NextHopIpv6Address()) - if err != nil { - vObj.validationErrors = append(vObj.validationErrors, fmt.Sprintf("%s %s", err.Error(), "on BgpSrteV4Policy.NextHopIpv6Address")) - } - - } +// Number of bits to track for metrics starting from configured offset of corresponding header field +// Length returns a uint32 +func (obj *patternFlowEthernetPauseControlOpCodeMetricTag) Length() uint32 { - if obj.obj.Advanced != nil { + return *obj.obj.Length - obj.Advanced().validateObj(vObj, set_default) - } +} - if obj.obj.AddPath != nil { +// Number of bits to track for metrics starting from configured offset of corresponding header field +// Length returns a uint32 +func (obj *patternFlowEthernetPauseControlOpCodeMetricTag) HasLength() bool { + return obj.obj.Length != nil +} - obj.AddPath().validateObj(vObj, set_default) - } +// Number of bits to track for metrics starting from configured offset of corresponding header field +// SetLength sets the uint32 value in the PatternFlowEthernetPauseControlOpCodeMetricTag object +func (obj *patternFlowEthernetPauseControlOpCodeMetricTag) SetLength(value uint32) PatternFlowEthernetPauseControlOpCodeMetricTag { - if obj.obj.AsPath != nil { + obj.obj.Length = &value + return obj +} - obj.AsPath().validateObj(vObj, set_default) +func (obj *patternFlowEthernetPauseControlOpCodeMetricTag) validateObj(vObj *validation, set_default bool) { + if set_default { + obj.setDefault() } - if len(obj.obj.Communities) != 0 { - - if set_default { - obj.Communities().clearHolderSlice() - for _, item := range obj.obj.Communities { - obj.Communities().appendHolderSlice(&bgpCommunity{obj: item}) - } - } - for _, item := range obj.Communities().Items() { - item.validateObj(vObj, set_default) - } - + // Name is required + if obj.obj.Name == nil { + vObj.validationErrors = append(vObj.validationErrors, "Name is required field on interface PatternFlowEthernetPauseControlOpCodeMetricTag") } - if len(obj.obj.ExtCommunities) != 0 { + if obj.obj.Offset != nil { - if set_default { - obj.ExtCommunities().clearHolderSlice() - for _, item := range obj.obj.ExtCommunities { - obj.ExtCommunities().appendHolderSlice(&bgpExtCommunity{obj: item}) - } - } - for _, item := range obj.ExtCommunities().Items() { - item.validateObj(vObj, set_default) + if *obj.obj.Offset > 15 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("0 <= PatternFlowEthernetPauseControlOpCodeMetricTag.Offset <= 15 but Got %d", *obj.obj.Offset)) } } - if len(obj.obj.TunnelTlvs) != 0 { + if obj.obj.Length != nil { - if set_default { - obj.TunnelTlvs().clearHolderSlice() - for _, item := range obj.obj.TunnelTlvs { - obj.TunnelTlvs().appendHolderSlice(&bgpSrteV4TunnelTlv{obj: item}) - } - } - for _, item := range obj.TunnelTlvs().Items() { - item.validateObj(vObj, set_default) + if *obj.obj.Length < 1 || *obj.obj.Length > 16 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("1 <= PatternFlowEthernetPauseControlOpCodeMetricTag.Length <= 16 but Got %d", *obj.obj.Length)) } } - // Name is required - if obj.obj.Name == nil { - vObj.validationErrors = append(vObj.validationErrors, "Name is required field on interface BgpSrteV4Policy") - } } -func (obj *bgpSrteV4Policy) setDefault() { - if obj.obj.Distinguisher == nil { - obj.SetDistinguisher(1) - } - if obj.obj.Color == nil { - obj.SetColor(100) - } - if obj.obj.NextHopMode == nil { - obj.SetNextHopMode(BgpSrteV4PolicyNextHopMode.LOCAL_IP) - - } - if obj.obj.NextHopAddressType == nil { - obj.SetNextHopAddressType(BgpSrteV4PolicyNextHopAddressType.IPV4) - +func (obj *patternFlowEthernetPauseControlOpCodeMetricTag) setDefault() { + if obj.obj.Offset == nil { + obj.SetOffset(0) } - if obj.obj.Active == nil { - obj.SetActive(true) + if obj.obj.Length == nil { + obj.SetLength(16) } } -// ***** BgpSrteV6Policy ***** -type bgpSrteV6Policy struct { +// ***** PatternFlowEthernetPauseTimeCounter ***** +type patternFlowEthernetPauseTimeCounter struct { validation - obj *otg.BgpSrteV6Policy - advancedHolder BgpRouteAdvanced - addPathHolder BgpAddPath - asPathHolder BgpAsPath - communitiesHolder BgpSrteV6PolicyBgpCommunityIter - extcommunitiesHolder BgpSrteV6PolicyBgpExtCommunityIter - tunnelTlvsHolder BgpSrteV6PolicyBgpSrteV6TunnelTlvIter + obj *otg.PatternFlowEthernetPauseTimeCounter } -func NewBgpSrteV6Policy() BgpSrteV6Policy { - obj := bgpSrteV6Policy{obj: &otg.BgpSrteV6Policy{}} +func NewPatternFlowEthernetPauseTimeCounter() PatternFlowEthernetPauseTimeCounter { + obj := patternFlowEthernetPauseTimeCounter{obj: &otg.PatternFlowEthernetPauseTimeCounter{}} obj.setDefault() return &obj } -func (obj *bgpSrteV6Policy) Msg() *otg.BgpSrteV6Policy { +func (obj *patternFlowEthernetPauseTimeCounter) Msg() *otg.PatternFlowEthernetPauseTimeCounter { return obj.obj } -func (obj *bgpSrteV6Policy) SetMsg(msg *otg.BgpSrteV6Policy) BgpSrteV6Policy { - obj.setNil() +func (obj *patternFlowEthernetPauseTimeCounter) SetMsg(msg *otg.PatternFlowEthernetPauseTimeCounter) PatternFlowEthernetPauseTimeCounter { + proto.Merge(obj.obj, msg) return obj } -func (obj *bgpSrteV6Policy) ToProto() (*otg.BgpSrteV6Policy, error) { +func (obj *patternFlowEthernetPauseTimeCounter) ToProto() (*otg.PatternFlowEthernetPauseTimeCounter, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -178620,7 +222881,7 @@ func (obj *bgpSrteV6Policy) ToProto() (*otg.BgpSrteV6Policy, error) { return obj.Msg(), nil } -func (obj *bgpSrteV6Policy) FromProto(msg *otg.BgpSrteV6Policy) (BgpSrteV6Policy, error) { +func (obj *patternFlowEthernetPauseTimeCounter) FromProto(msg *otg.PatternFlowEthernetPauseTimeCounter) (PatternFlowEthernetPauseTimeCounter, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -178629,7 +222890,7 @@ func (obj *bgpSrteV6Policy) FromProto(msg *otg.BgpSrteV6Policy) (BgpSrteV6Policy return newObj, nil } -func (obj *bgpSrteV6Policy) ToPbText() (string, error) { +func (obj *patternFlowEthernetPauseTimeCounter) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -178641,12 +222902,12 @@ func (obj *bgpSrteV6Policy) ToPbText() (string, error) { return string(protoMarshal), nil } -func (obj *bgpSrteV6Policy) FromPbText(value string) error { +func (obj *patternFlowEthernetPauseTimeCounter) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj } - obj.setNil() + vErr := obj.validateToAndFrom() if vErr != nil { return vErr @@ -178654,7 +222915,7 @@ func (obj *bgpSrteV6Policy) FromPbText(value string) error { return retObj } -func (obj *bgpSrteV6Policy) ToYaml() (string, error) { +func (obj *patternFlowEthernetPauseTimeCounter) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -178675,7 +222936,7 @@ func (obj *bgpSrteV6Policy) ToYaml() (string, error) { return string(data), nil } -func (obj *bgpSrteV6Policy) FromYaml(value string) error { +func (obj *patternFlowEthernetPauseTimeCounter) FromYaml(value string) error { if value == "" { value = "{}" } @@ -178692,7 +222953,7 @@ func (obj *bgpSrteV6Policy) FromYaml(value string) error { return fmt.Errorf("unmarshal error %s", strings.Replace( uError.Error(), "\u00a0", " ", -1)[7:]) } - obj.setNil() + vErr := obj.validateToAndFrom() if vErr != nil { return vErr @@ -178700,7 +222961,7 @@ func (obj *bgpSrteV6Policy) FromYaml(value string) error { return nil } -func (obj *bgpSrteV6Policy) ToJson() (string, error) { +func (obj *patternFlowEthernetPauseTimeCounter) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -178718,7 +222979,7 @@ func (obj *bgpSrteV6Policy) ToJson() (string, error) { return string(data), nil } -func (obj *bgpSrteV6Policy) FromJson(value string) error { +func (obj *patternFlowEthernetPauseTimeCounter) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -178731,7 +222992,7 @@ func (obj *bgpSrteV6Policy) FromJson(value string) error { return fmt.Errorf("unmarshal error %s", strings.Replace( uError.Error(), "\u00a0", " ", -1)[7:]) } - obj.setNil() + err := obj.validateToAndFrom() if err != nil { return err @@ -178739,19 +223000,19 @@ func (obj *bgpSrteV6Policy) FromJson(value string) error { return nil } -func (obj *bgpSrteV6Policy) validateToAndFrom() error { +func (obj *patternFlowEthernetPauseTimeCounter) validateToAndFrom() error { // emptyVars() obj.validateObj(&obj.validation, true) return obj.validationResult() } -func (obj *bgpSrteV6Policy) Validate() error { +func (obj *patternFlowEthernetPauseTimeCounter) Validate() error { // emptyVars() obj.validateObj(&obj.validation, false) return obj.validationResult() } -func (obj *bgpSrteV6Policy) String() string { +func (obj *patternFlowEthernetPauseTimeCounter) String() string { str, err := obj.ToYaml() if err != nil { return err.Error() @@ -178759,12 +223020,12 @@ func (obj *bgpSrteV6Policy) String() string { return str } -func (obj *bgpSrteV6Policy) Clone() (BgpSrteV6Policy, error) { +func (obj *patternFlowEthernetPauseTimeCounter) Clone() (PatternFlowEthernetPauseTimeCounter, error) { vErr := obj.Validate() if vErr != nil { return nil, vErr } - newObj := NewBgpSrteV6Policy() + newObj := NewPatternFlowEthernetPauseTimeCounter() data, err := proto.Marshal(obj.Msg()) if err != nil { return nil, err @@ -178776,840 +223037,539 @@ func (obj *bgpSrteV6Policy) Clone() (BgpSrteV6Policy, error) { return newObj, nil } -func (obj *bgpSrteV6Policy) setNil() { - obj.advancedHolder = nil - obj.addPathHolder = nil - obj.asPathHolder = nil - obj.communitiesHolder = nil - obj.extcommunitiesHolder = nil - obj.tunnelTlvsHolder = nil - obj.validationErrors = nil - obj.warnings = nil - obj.constraints = make(map[string]map[string]Constraints) -} - -// BgpSrteV6Policy is configuration for BGP Segment Routing Traffic Engineering policy. - -type BgpSrteV6Policy interface { +// PatternFlowEthernetPauseTimeCounter is integer counter pattern +type PatternFlowEthernetPauseTimeCounter interface { Validation - // Msg marshals BgpSrteV6Policy to protobuf object *otg.BgpSrteV6Policy + // Msg marshals PatternFlowEthernetPauseTimeCounter to protobuf object *otg.PatternFlowEthernetPauseTimeCounter // and doesn't set defaults - Msg() *otg.BgpSrteV6Policy - // SetMsg unmarshals BgpSrteV6Policy from protobuf object *otg.BgpSrteV6Policy + Msg() *otg.PatternFlowEthernetPauseTimeCounter + // SetMsg unmarshals PatternFlowEthernetPauseTimeCounter from protobuf object *otg.PatternFlowEthernetPauseTimeCounter // and doesn't set defaults - SetMsg(*otg.BgpSrteV6Policy) BgpSrteV6Policy - // ToProto marshals BgpSrteV6Policy to protobuf object *otg.BgpSrteV6Policy - ToProto() (*otg.BgpSrteV6Policy, error) - // ToPbText marshals BgpSrteV6Policy to protobuf text + SetMsg(*otg.PatternFlowEthernetPauseTimeCounter) PatternFlowEthernetPauseTimeCounter + // ToProto marshals PatternFlowEthernetPauseTimeCounter to protobuf object *otg.PatternFlowEthernetPauseTimeCounter + ToProto() (*otg.PatternFlowEthernetPauseTimeCounter, error) + // ToPbText marshals PatternFlowEthernetPauseTimeCounter to protobuf text ToPbText() (string, error) - // ToYaml marshals BgpSrteV6Policy to YAML text + // ToYaml marshals PatternFlowEthernetPauseTimeCounter to YAML text ToYaml() (string, error) - // ToJson marshals BgpSrteV6Policy to JSON text + // ToJson marshals PatternFlowEthernetPauseTimeCounter to JSON text ToJson() (string, error) - // FromProto unmarshals BgpSrteV6Policy from protobuf object *otg.BgpSrteV6Policy - FromProto(msg *otg.BgpSrteV6Policy) (BgpSrteV6Policy, error) - // FromPbText unmarshals BgpSrteV6Policy from protobuf text + // FromProto unmarshals PatternFlowEthernetPauseTimeCounter from protobuf object *otg.PatternFlowEthernetPauseTimeCounter + FromProto(msg *otg.PatternFlowEthernetPauseTimeCounter) (PatternFlowEthernetPauseTimeCounter, error) + // FromPbText unmarshals PatternFlowEthernetPauseTimeCounter from protobuf text FromPbText(value string) error - // FromYaml unmarshals BgpSrteV6Policy from YAML text + // FromYaml unmarshals PatternFlowEthernetPauseTimeCounter from YAML text FromYaml(value string) error - // FromJson unmarshals BgpSrteV6Policy from JSON text + // FromJson unmarshals PatternFlowEthernetPauseTimeCounter from JSON text FromJson(value string) error - // Validate validates BgpSrteV6Policy + // Validate validates PatternFlowEthernetPauseTimeCounter Validate() error // A stringer function String() string // Clones the object - Clone() (BgpSrteV6Policy, error) + Clone() (PatternFlowEthernetPauseTimeCounter, error) validateToAndFrom() error validateObj(vObj *validation, set_default bool) setDefault() - // Distinguisher returns uint32, set in BgpSrteV6Policy. - Distinguisher() uint32 - // SetDistinguisher assigns uint32 provided by user to BgpSrteV6Policy - SetDistinguisher(value uint32) BgpSrteV6Policy - // HasDistinguisher checks if Distinguisher has been set in BgpSrteV6Policy - HasDistinguisher() bool - // Color returns uint32, set in BgpSrteV6Policy. - Color() uint32 - // SetColor assigns uint32 provided by user to BgpSrteV6Policy - SetColor(value uint32) BgpSrteV6Policy - // HasColor checks if Color has been set in BgpSrteV6Policy - HasColor() bool - // Ipv6Endpoint returns string, set in BgpSrteV6Policy. - Ipv6Endpoint() string - // SetIpv6Endpoint assigns string provided by user to BgpSrteV6Policy - SetIpv6Endpoint(value string) BgpSrteV6Policy - // NextHopMode returns BgpSrteV6PolicyNextHopModeEnum, set in BgpSrteV6Policy - NextHopMode() BgpSrteV6PolicyNextHopModeEnum - // SetNextHopMode assigns BgpSrteV6PolicyNextHopModeEnum provided by user to BgpSrteV6Policy - SetNextHopMode(value BgpSrteV6PolicyNextHopModeEnum) BgpSrteV6Policy - // HasNextHopMode checks if NextHopMode has been set in BgpSrteV6Policy - HasNextHopMode() bool - // NextHopAddressType returns BgpSrteV6PolicyNextHopAddressTypeEnum, set in BgpSrteV6Policy - NextHopAddressType() BgpSrteV6PolicyNextHopAddressTypeEnum - // SetNextHopAddressType assigns BgpSrteV6PolicyNextHopAddressTypeEnum provided by user to BgpSrteV6Policy - SetNextHopAddressType(value BgpSrteV6PolicyNextHopAddressTypeEnum) BgpSrteV6Policy - // HasNextHopAddressType checks if NextHopAddressType has been set in BgpSrteV6Policy - HasNextHopAddressType() bool - // NextHopIpv4Address returns string, set in BgpSrteV6Policy. - NextHopIpv4Address() string - // SetNextHopIpv4Address assigns string provided by user to BgpSrteV6Policy - SetNextHopIpv4Address(value string) BgpSrteV6Policy - // HasNextHopIpv4Address checks if NextHopIpv4Address has been set in BgpSrteV6Policy - HasNextHopIpv4Address() bool - // NextHopIpv6Address returns string, set in BgpSrteV6Policy. - NextHopIpv6Address() string - // SetNextHopIpv6Address assigns string provided by user to BgpSrteV6Policy - SetNextHopIpv6Address(value string) BgpSrteV6Policy - // HasNextHopIpv6Address checks if NextHopIpv6Address has been set in BgpSrteV6Policy - HasNextHopIpv6Address() bool - // Advanced returns BgpRouteAdvanced, set in BgpSrteV6Policy. - // BgpRouteAdvanced is configuration for advanced BGP route range settings. - Advanced() BgpRouteAdvanced - // SetAdvanced assigns BgpRouteAdvanced provided by user to BgpSrteV6Policy. - // BgpRouteAdvanced is configuration for advanced BGP route range settings. - SetAdvanced(value BgpRouteAdvanced) BgpSrteV6Policy - // HasAdvanced checks if Advanced has been set in BgpSrteV6Policy - HasAdvanced() bool - // AddPath returns BgpAddPath, set in BgpSrteV6Policy. - // BgpAddPath is the BGP Additional Paths feature is a BGP extension that allows the advertisement of multiple paths for the same prefix without the new paths implicitly replacing any previous paths. - AddPath() BgpAddPath - // SetAddPath assigns BgpAddPath provided by user to BgpSrteV6Policy. - // BgpAddPath is the BGP Additional Paths feature is a BGP extension that allows the advertisement of multiple paths for the same prefix without the new paths implicitly replacing any previous paths. - SetAddPath(value BgpAddPath) BgpSrteV6Policy - // HasAddPath checks if AddPath has been set in BgpSrteV6Policy - HasAddPath() bool - // AsPath returns BgpAsPath, set in BgpSrteV6Policy. - // BgpAsPath is this attribute identifies the autonomous systems through which routing information carried in this UPDATE message has passed. This contains the configuration of how to include the Local AS in the AS path attribute of the MP REACH NLRI. It also contains optional configuration of additional AS Path Segments that can be included in the AS Path attribute. The AS Path consists of a Set or Sequence of Autonomous Systems (AS) numbers that a routing information passes through to reach the destination. - AsPath() BgpAsPath - // SetAsPath assigns BgpAsPath provided by user to BgpSrteV6Policy. - // BgpAsPath is this attribute identifies the autonomous systems through which routing information carried in this UPDATE message has passed. This contains the configuration of how to include the Local AS in the AS path attribute of the MP REACH NLRI. It also contains optional configuration of additional AS Path Segments that can be included in the AS Path attribute. The AS Path consists of a Set or Sequence of Autonomous Systems (AS) numbers that a routing information passes through to reach the destination. - SetAsPath(value BgpAsPath) BgpSrteV6Policy - // HasAsPath checks if AsPath has been set in BgpSrteV6Policy - HasAsPath() bool - // Communities returns BgpSrteV6PolicyBgpCommunityIterIter, set in BgpSrteV6Policy - Communities() BgpSrteV6PolicyBgpCommunityIter - // Extcommunities returns BgpSrteV6PolicyBgpExtCommunityIterIter, set in BgpSrteV6Policy - Extcommunities() BgpSrteV6PolicyBgpExtCommunityIter - // TunnelTlvs returns BgpSrteV6PolicyBgpSrteV6TunnelTlvIterIter, set in BgpSrteV6Policy - TunnelTlvs() BgpSrteV6PolicyBgpSrteV6TunnelTlvIter - // Name returns string, set in BgpSrteV6Policy. - Name() string - // SetName assigns string provided by user to BgpSrteV6Policy - SetName(value string) BgpSrteV6Policy - // Active returns bool, set in BgpSrteV6Policy. - Active() bool - // SetActive assigns bool provided by user to BgpSrteV6Policy - SetActive(value bool) BgpSrteV6Policy - // HasActive checks if Active has been set in BgpSrteV6Policy - HasActive() bool - setNil() + // Start returns uint32, set in PatternFlowEthernetPauseTimeCounter. + Start() uint32 + // SetStart assigns uint32 provided by user to PatternFlowEthernetPauseTimeCounter + SetStart(value uint32) PatternFlowEthernetPauseTimeCounter + // HasStart checks if Start has been set in PatternFlowEthernetPauseTimeCounter + HasStart() bool + // Step returns uint32, set in PatternFlowEthernetPauseTimeCounter. + Step() uint32 + // SetStep assigns uint32 provided by user to PatternFlowEthernetPauseTimeCounter + SetStep(value uint32) PatternFlowEthernetPauseTimeCounter + // HasStep checks if Step has been set in PatternFlowEthernetPauseTimeCounter + HasStep() bool + // Count returns uint32, set in PatternFlowEthernetPauseTimeCounter. + Count() uint32 + // SetCount assigns uint32 provided by user to PatternFlowEthernetPauseTimeCounter + SetCount(value uint32) PatternFlowEthernetPauseTimeCounter + // HasCount checks if Count has been set in PatternFlowEthernetPauseTimeCounter + HasCount() bool } -// Identifies the policy in the context of (color and endpoint) tuple. It is used by the SR Policy originator to make unique multiple occurrences of the same SR Policy. -// Distinguisher returns a uint32 -func (obj *bgpSrteV6Policy) Distinguisher() uint32 { +// description is TBD +// Start returns a uint32 +func (obj *patternFlowEthernetPauseTimeCounter) Start() uint32 { - return *obj.obj.Distinguisher + return *obj.obj.Start } -// Identifies the policy in the context of (color and endpoint) tuple. It is used by the SR Policy originator to make unique multiple occurrences of the same SR Policy. -// Distinguisher returns a uint32 -func (obj *bgpSrteV6Policy) HasDistinguisher() bool { - return obj.obj.Distinguisher != nil +// description is TBD +// Start returns a uint32 +func (obj *patternFlowEthernetPauseTimeCounter) HasStart() bool { + return obj.obj.Start != nil } -// Identifies the policy in the context of (color and endpoint) tuple. It is used by the SR Policy originator to make unique multiple occurrences of the same SR Policy. -// SetDistinguisher sets the uint32 value in the BgpSrteV6Policy object -func (obj *bgpSrteV6Policy) SetDistinguisher(value uint32) BgpSrteV6Policy { +// description is TBD +// SetStart sets the uint32 value in the PatternFlowEthernetPauseTimeCounter object +func (obj *patternFlowEthernetPauseTimeCounter) SetStart(value uint32) PatternFlowEthernetPauseTimeCounter { - obj.obj.Distinguisher = &value + obj.obj.Start = &value return obj } -// Identifies the policy. It is used to match the color of the destination prefixes to steer traffic into the SR Policy. -// Color returns a uint32 -func (obj *bgpSrteV6Policy) Color() uint32 { - - return *obj.obj.Color - -} - -// Identifies the policy. It is used to match the color of the destination prefixes to steer traffic into the SR Policy. -// Color returns a uint32 -func (obj *bgpSrteV6Policy) HasColor() bool { - return obj.obj.Color != nil -} +// description is TBD +// Step returns a uint32 +func (obj *patternFlowEthernetPauseTimeCounter) Step() uint32 { -// Identifies the policy. It is used to match the color of the destination prefixes to steer traffic into the SR Policy. -// SetColor sets the uint32 value in the BgpSrteV6Policy object -func (obj *bgpSrteV6Policy) SetColor(value uint32) BgpSrteV6Policy { + return *obj.obj.Step - obj.obj.Color = &value - return obj } -// Specifies a single node or a set of nodes (e.g., an anycast address). It is selected on the basis of the SR Policy type (AFI). -// Ipv6Endpoint returns a string -func (obj *bgpSrteV6Policy) Ipv6Endpoint() string { - - return *obj.obj.Ipv6Endpoint - +// description is TBD +// Step returns a uint32 +func (obj *patternFlowEthernetPauseTimeCounter) HasStep() bool { + return obj.obj.Step != nil } -// Specifies a single node or a set of nodes (e.g., an anycast address). It is selected on the basis of the SR Policy type (AFI). -// SetIpv6Endpoint sets the string value in the BgpSrteV6Policy object -func (obj *bgpSrteV6Policy) SetIpv6Endpoint(value string) BgpSrteV6Policy { +// description is TBD +// SetStep sets the uint32 value in the PatternFlowEthernetPauseTimeCounter object +func (obj *patternFlowEthernetPauseTimeCounter) SetStep(value uint32) PatternFlowEthernetPauseTimeCounter { - obj.obj.Ipv6Endpoint = &value + obj.obj.Step = &value return obj } -type BgpSrteV6PolicyNextHopModeEnum string +// description is TBD +// Count returns a uint32 +func (obj *patternFlowEthernetPauseTimeCounter) Count() uint32 { -// Enum of NextHopMode on BgpSrteV6Policy -var BgpSrteV6PolicyNextHopMode = struct { - LOCAL_IP BgpSrteV6PolicyNextHopModeEnum - MANUAL BgpSrteV6PolicyNextHopModeEnum -}{ - LOCAL_IP: BgpSrteV6PolicyNextHopModeEnum("local_ip"), - MANUAL: BgpSrteV6PolicyNextHopModeEnum("manual"), -} + return *obj.obj.Count -func (obj *bgpSrteV6Policy) NextHopMode() BgpSrteV6PolicyNextHopModeEnum { - return BgpSrteV6PolicyNextHopModeEnum(obj.obj.NextHopMode.Enum().String()) } -// Mode for choosing the NextHop in MP REACH NLRI. Available modes are : Local IP: Automatically fills the Nexthop with the Local IP of the BGP peer. For IPv6 BGP peer the Nexthop Encoding capability should be enabled. Manual: Override the Nexthop with any arbitrary IPv4/IPv6 address. -// NextHopMode returns a string -func (obj *bgpSrteV6Policy) HasNextHopMode() bool { - return obj.obj.NextHopMode != nil +// description is TBD +// Count returns a uint32 +func (obj *patternFlowEthernetPauseTimeCounter) HasCount() bool { + return obj.obj.Count != nil } -func (obj *bgpSrteV6Policy) SetNextHopMode(value BgpSrteV6PolicyNextHopModeEnum) BgpSrteV6Policy { - intValue, ok := otg.BgpSrteV6Policy_NextHopMode_Enum_value[string(value)] - if !ok { - obj.validationErrors = append(obj.validationErrors, fmt.Sprintf( - "%s is not a valid choice on BgpSrteV6PolicyNextHopModeEnum", string(value))) - return obj - } - enumValue := otg.BgpSrteV6Policy_NextHopMode_Enum(intValue) - obj.obj.NextHopMode = &enumValue +// description is TBD +// SetCount sets the uint32 value in the PatternFlowEthernetPauseTimeCounter object +func (obj *patternFlowEthernetPauseTimeCounter) SetCount(value uint32) PatternFlowEthernetPauseTimeCounter { + obj.obj.Count = &value return obj } -type BgpSrteV6PolicyNextHopAddressTypeEnum string - -// Enum of NextHopAddressType on BgpSrteV6Policy -var BgpSrteV6PolicyNextHopAddressType = struct { - IPV4 BgpSrteV6PolicyNextHopAddressTypeEnum - IPV6 BgpSrteV6PolicyNextHopAddressTypeEnum -}{ - IPV4: BgpSrteV6PolicyNextHopAddressTypeEnum("ipv4"), - IPV6: BgpSrteV6PolicyNextHopAddressTypeEnum("ipv6"), -} - -func (obj *bgpSrteV6Policy) NextHopAddressType() BgpSrteV6PolicyNextHopAddressTypeEnum { - return BgpSrteV6PolicyNextHopAddressTypeEnum(obj.obj.NextHopAddressType.Enum().String()) -} - -// Type of next hop IP address to be used when 'next_hop_mode' is set to 'manual'. -// NextHopAddressType returns a string -func (obj *bgpSrteV6Policy) HasNextHopAddressType() bool { - return obj.obj.NextHopAddressType != nil -} - -func (obj *bgpSrteV6Policy) SetNextHopAddressType(value BgpSrteV6PolicyNextHopAddressTypeEnum) BgpSrteV6Policy { - intValue, ok := otg.BgpSrteV6Policy_NextHopAddressType_Enum_value[string(value)] - if !ok { - obj.validationErrors = append(obj.validationErrors, fmt.Sprintf( - "%s is not a valid choice on BgpSrteV6PolicyNextHopAddressTypeEnum", string(value))) - return obj +func (obj *patternFlowEthernetPauseTimeCounter) validateObj(vObj *validation, set_default bool) { + if set_default { + obj.setDefault() } - enumValue := otg.BgpSrteV6Policy_NextHopAddressType_Enum(intValue) - obj.obj.NextHopAddressType = &enumValue - - return obj -} - -// The IPv4 address of the Nexthop if the 'next_hop_mode' is 'manual' and the Nexthop type 'next_hop_address_type' is IPv4. If BGP peer is of type IPv6, Nexthop Encoding capability extended_next_hop_encoding should be enabled. -// NextHopIpv4Address returns a string -func (obj *bgpSrteV6Policy) NextHopIpv4Address() string { - - return *obj.obj.NextHopIpv4Address -} + if obj.obj.Start != nil { -// The IPv4 address of the Nexthop if the 'next_hop_mode' is 'manual' and the Nexthop type 'next_hop_address_type' is IPv4. If BGP peer is of type IPv6, Nexthop Encoding capability extended_next_hop_encoding should be enabled. -// NextHopIpv4Address returns a string -func (obj *bgpSrteV6Policy) HasNextHopIpv4Address() bool { - return obj.obj.NextHopIpv4Address != nil -} + if *obj.obj.Start > 65535 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("0 <= PatternFlowEthernetPauseTimeCounter.Start <= 65535 but Got %d", *obj.obj.Start)) + } -// The IPv4 address of the Nexthop if the 'next_hop_mode' is 'manual' and the Nexthop type 'next_hop_address_type' is IPv4. If BGP peer is of type IPv6, Nexthop Encoding capability extended_next_hop_encoding should be enabled. -// SetNextHopIpv4Address sets the string value in the BgpSrteV6Policy object -func (obj *bgpSrteV6Policy) SetNextHopIpv4Address(value string) BgpSrteV6Policy { + } - obj.obj.NextHopIpv4Address = &value - return obj -} + if obj.obj.Step != nil { -// The IPv6 address of the next hop if the Nexthop Mode 'next_hop_address_type' is 'manual' and the Nexthop type 'next_hop_address_type' is IPv6. -// NextHopIpv6Address returns a string -func (obj *bgpSrteV6Policy) NextHopIpv6Address() string { + if *obj.obj.Step > 65535 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("0 <= PatternFlowEthernetPauseTimeCounter.Step <= 65535 but Got %d", *obj.obj.Step)) + } - return *obj.obj.NextHopIpv6Address + } -} + if obj.obj.Count != nil { -// The IPv6 address of the next hop if the Nexthop Mode 'next_hop_address_type' is 'manual' and the Nexthop type 'next_hop_address_type' is IPv6. -// NextHopIpv6Address returns a string -func (obj *bgpSrteV6Policy) HasNextHopIpv6Address() bool { - return obj.obj.NextHopIpv6Address != nil -} + if *obj.obj.Count > 65535 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("0 <= PatternFlowEthernetPauseTimeCounter.Count <= 65535 but Got %d", *obj.obj.Count)) + } -// The IPv6 address of the next hop if the Nexthop Mode 'next_hop_address_type' is 'manual' and the Nexthop type 'next_hop_address_type' is IPv6. -// SetNextHopIpv6Address sets the string value in the BgpSrteV6Policy object -func (obj *bgpSrteV6Policy) SetNextHopIpv6Address(value string) BgpSrteV6Policy { + } - obj.obj.NextHopIpv6Address = &value - return obj } -// description is TBD -// Advanced returns a BgpRouteAdvanced -func (obj *bgpSrteV6Policy) Advanced() BgpRouteAdvanced { - if obj.obj.Advanced == nil { - obj.obj.Advanced = NewBgpRouteAdvanced().Msg() +func (obj *patternFlowEthernetPauseTimeCounter) setDefault() { + if obj.obj.Start == nil { + obj.SetStart(0) } - if obj.advancedHolder == nil { - obj.advancedHolder = &bgpRouteAdvanced{obj: obj.obj.Advanced} + if obj.obj.Step == nil { + obj.SetStep(1) + } + if obj.obj.Count == nil { + obj.SetCount(1) } - return obj.advancedHolder -} -// description is TBD -// Advanced returns a BgpRouteAdvanced -func (obj *bgpSrteV6Policy) HasAdvanced() bool { - return obj.obj.Advanced != nil } -// description is TBD -// SetAdvanced sets the BgpRouteAdvanced value in the BgpSrteV6Policy object -func (obj *bgpSrteV6Policy) SetAdvanced(value BgpRouteAdvanced) BgpSrteV6Policy { - - obj.advancedHolder = nil - obj.obj.Advanced = value.Msg() - - return obj +// ***** PatternFlowEthernetPauseTimeMetricTag ***** +type patternFlowEthernetPauseTimeMetricTag struct { + validation + obj *otg.PatternFlowEthernetPauseTimeMetricTag } -// description is TBD -// AddPath returns a BgpAddPath -func (obj *bgpSrteV6Policy) AddPath() BgpAddPath { - if obj.obj.AddPath == nil { - obj.obj.AddPath = NewBgpAddPath().Msg() - } - if obj.addPathHolder == nil { - obj.addPathHolder = &bgpAddPath{obj: obj.obj.AddPath} - } - return obj.addPathHolder +func NewPatternFlowEthernetPauseTimeMetricTag() PatternFlowEthernetPauseTimeMetricTag { + obj := patternFlowEthernetPauseTimeMetricTag{obj: &otg.PatternFlowEthernetPauseTimeMetricTag{}} + obj.setDefault() + return &obj } -// description is TBD -// AddPath returns a BgpAddPath -func (obj *bgpSrteV6Policy) HasAddPath() bool { - return obj.obj.AddPath != nil +func (obj *patternFlowEthernetPauseTimeMetricTag) Msg() *otg.PatternFlowEthernetPauseTimeMetricTag { + return obj.obj } -// description is TBD -// SetAddPath sets the BgpAddPath value in the BgpSrteV6Policy object -func (obj *bgpSrteV6Policy) SetAddPath(value BgpAddPath) BgpSrteV6Policy { - - obj.addPathHolder = nil - obj.obj.AddPath = value.Msg() +func (obj *patternFlowEthernetPauseTimeMetricTag) SetMsg(msg *otg.PatternFlowEthernetPauseTimeMetricTag) PatternFlowEthernetPauseTimeMetricTag { + proto.Merge(obj.obj, msg) return obj } -// description is TBD -// AsPath returns a BgpAsPath -func (obj *bgpSrteV6Policy) AsPath() BgpAsPath { - if obj.obj.AsPath == nil { - obj.obj.AsPath = NewBgpAsPath().Msg() - } - if obj.asPathHolder == nil { - obj.asPathHolder = &bgpAsPath{obj: obj.obj.AsPath} +func (obj *patternFlowEthernetPauseTimeMetricTag) ToProto() (*otg.PatternFlowEthernetPauseTimeMetricTag, error) { + err := obj.validateToAndFrom() + if err != nil { + return nil, err } - return obj.asPathHolder -} - -// description is TBD -// AsPath returns a BgpAsPath -func (obj *bgpSrteV6Policy) HasAsPath() bool { - return obj.obj.AsPath != nil + return obj.Msg(), nil } -// description is TBD -// SetAsPath sets the BgpAsPath value in the BgpSrteV6Policy object -func (obj *bgpSrteV6Policy) SetAsPath(value BgpAsPath) BgpSrteV6Policy { - - obj.asPathHolder = nil - obj.obj.AsPath = value.Msg() - - return obj +func (obj *patternFlowEthernetPauseTimeMetricTag) FromProto(msg *otg.PatternFlowEthernetPauseTimeMetricTag) (PatternFlowEthernetPauseTimeMetricTag, error) { + newObj := obj.SetMsg(msg) + err := newObj.validateToAndFrom() + if err != nil { + return nil, err + } + return newObj, nil } -// Optional community settings. -// Communities returns a []BgpCommunity -func (obj *bgpSrteV6Policy) Communities() BgpSrteV6PolicyBgpCommunityIter { - if len(obj.obj.Communities) == 0 { - obj.obj.Communities = []*otg.BgpCommunity{} +func (obj *patternFlowEthernetPauseTimeMetricTag) ToPbText() (string, error) { + vErr := obj.validateToAndFrom() + if vErr != nil { + return "", vErr } - if obj.communitiesHolder == nil { - obj.communitiesHolder = newBgpSrteV6PolicyBgpCommunityIter(&obj.obj.Communities).setMsg(obj) + protoMarshal, err := proto.Marshal(obj.Msg()) + if err != nil { + return "", err } - return obj.communitiesHolder -} - -type bgpSrteV6PolicyBgpCommunityIter struct { - obj *bgpSrteV6Policy - bgpCommunitySlice []BgpCommunity - fieldPtr *[]*otg.BgpCommunity -} - -func newBgpSrteV6PolicyBgpCommunityIter(ptr *[]*otg.BgpCommunity) BgpSrteV6PolicyBgpCommunityIter { - return &bgpSrteV6PolicyBgpCommunityIter{fieldPtr: ptr} -} - -type BgpSrteV6PolicyBgpCommunityIter interface { - setMsg(*bgpSrteV6Policy) BgpSrteV6PolicyBgpCommunityIter - Items() []BgpCommunity - Add() BgpCommunity - Append(items ...BgpCommunity) BgpSrteV6PolicyBgpCommunityIter - Set(index int, newObj BgpCommunity) BgpSrteV6PolicyBgpCommunityIter - Clear() BgpSrteV6PolicyBgpCommunityIter - clearHolderSlice() BgpSrteV6PolicyBgpCommunityIter - appendHolderSlice(item BgpCommunity) BgpSrteV6PolicyBgpCommunityIter + return string(protoMarshal), nil } -func (obj *bgpSrteV6PolicyBgpCommunityIter) setMsg(msg *bgpSrteV6Policy) BgpSrteV6PolicyBgpCommunityIter { - obj.clearHolderSlice() - for _, val := range *obj.fieldPtr { - obj.appendHolderSlice(&bgpCommunity{obj: val}) +func (obj *patternFlowEthernetPauseTimeMetricTag) FromPbText(value string) error { + retObj := proto.Unmarshal([]byte(value), obj.Msg()) + if retObj != nil { + return retObj } - obj.obj = msg - return obj -} - -func (obj *bgpSrteV6PolicyBgpCommunityIter) Items() []BgpCommunity { - return obj.bgpCommunitySlice -} - -func (obj *bgpSrteV6PolicyBgpCommunityIter) Add() BgpCommunity { - newObj := &otg.BgpCommunity{} - *obj.fieldPtr = append(*obj.fieldPtr, newObj) - newLibObj := &bgpCommunity{obj: newObj} - newLibObj.setDefault() - obj.bgpCommunitySlice = append(obj.bgpCommunitySlice, newLibObj) - return newLibObj -} -func (obj *bgpSrteV6PolicyBgpCommunityIter) Append(items ...BgpCommunity) BgpSrteV6PolicyBgpCommunityIter { - for _, item := range items { - newObj := item.Msg() - *obj.fieldPtr = append(*obj.fieldPtr, newObj) - obj.bgpCommunitySlice = append(obj.bgpCommunitySlice, item) + vErr := obj.validateToAndFrom() + if vErr != nil { + return vErr } - return obj + return retObj } -func (obj *bgpSrteV6PolicyBgpCommunityIter) Set(index int, newObj BgpCommunity) BgpSrteV6PolicyBgpCommunityIter { - (*obj.fieldPtr)[index] = newObj.Msg() - obj.bgpCommunitySlice[index] = newObj - return obj -} -func (obj *bgpSrteV6PolicyBgpCommunityIter) Clear() BgpSrteV6PolicyBgpCommunityIter { - if len(*obj.fieldPtr) > 0 { - *obj.fieldPtr = []*otg.BgpCommunity{} - obj.bgpCommunitySlice = []BgpCommunity{} +func (obj *patternFlowEthernetPauseTimeMetricTag) ToYaml() (string, error) { + vErr := obj.validateToAndFrom() + if vErr != nil { + return "", vErr } - return obj -} -func (obj *bgpSrteV6PolicyBgpCommunityIter) clearHolderSlice() BgpSrteV6PolicyBgpCommunityIter { - if len(obj.bgpCommunitySlice) > 0 { - obj.bgpCommunitySlice = []BgpCommunity{} + opts := protojson.MarshalOptions{ + UseProtoNames: true, + AllowPartial: true, + EmitUnpopulated: false, } - return obj -} -func (obj *bgpSrteV6PolicyBgpCommunityIter) appendHolderSlice(item BgpCommunity) BgpSrteV6PolicyBgpCommunityIter { - obj.bgpCommunitySlice = append(obj.bgpCommunitySlice, item) - return obj -} - -// Optional Extended Community settings. The Extended Communities Attribute is a transitive optional BGP attribute, with the Type Code 16. Community and Extended Communities attributes are utilized to trigger routing decisions, such as acceptance, rejection, preference, or redistribution. An extended community is an 8-Bytes value. It is divided into two main parts. The first 2 Bytes of the community encode a type and sub-type fields and the last 6 Bytes carry a unique set of data in a format defined by the type and sub-type field. Extended communities provide a larger range for grouping or categorizing communities. When type is administrator_as_2octet or administrator_as_4octet, the valid sub types are route target and origin. The valid value for administrator_as_2octet and administrator_as_4octet type is either two byte AS followed by four byte local administrator id or four byte AS followed by two byte local administrator id. When type is administrator_ipv4_address the valid sub types are route target and origin. The valid value for administrator_ipv4_address is a four byte IPv4 address followed by a two byte local administrator id. When type is opaque, valid sub types are color and encapsulation. When sub type is color, first two bytes of the value field contain flags and last four bytes contains the value of the color. When sub type is encapsulation the first four bytes of value field are reserved and last two bytes carries the tunnel type from IANA's "ETHER TYPES" registry e.g IPv4 (protocol type = 0x0800), IPv6 (protocol type = 0x86dd), and MPLS (protocol type = 0x8847). When type is administrator_as_2octet_link_bandwidth the valid sub type is extended_bandwidth. The first two bytes of the value field contains the AS number and the last four bytes contains the bandwidth in IEEE floating point format. When type is evpn the valid subtype is mac_address. In the value field the low-order bit of the first byte(Flags) is defined as the "Sticky/static" flag and may be set to 1, indicating the MAC address is static and cannot move. The second byte is reserved and the last four bytes contain the sequence number which is used to ensure that PEs retain the correct MAC/IP Advertisement route when multiple updates occur for the same MAC address. -// Extcommunities returns a []BgpExtCommunity -func (obj *bgpSrteV6Policy) Extcommunities() BgpSrteV6PolicyBgpExtCommunityIter { - if len(obj.obj.Extcommunities) == 0 { - obj.obj.Extcommunities = []*otg.BgpExtCommunity{} + data, err := opts.Marshal(obj.Msg()) + if err != nil { + return "", err } - if obj.extcommunitiesHolder == nil { - obj.extcommunitiesHolder = newBgpSrteV6PolicyBgpExtCommunityIter(&obj.obj.Extcommunities).setMsg(obj) + data, err = yaml.JSONToYAML(data) + if err != nil { + return "", err } - return obj.extcommunitiesHolder -} - -type bgpSrteV6PolicyBgpExtCommunityIter struct { - obj *bgpSrteV6Policy - bgpExtCommunitySlice []BgpExtCommunity - fieldPtr *[]*otg.BgpExtCommunity -} - -func newBgpSrteV6PolicyBgpExtCommunityIter(ptr *[]*otg.BgpExtCommunity) BgpSrteV6PolicyBgpExtCommunityIter { - return &bgpSrteV6PolicyBgpExtCommunityIter{fieldPtr: ptr} -} - -type BgpSrteV6PolicyBgpExtCommunityIter interface { - setMsg(*bgpSrteV6Policy) BgpSrteV6PolicyBgpExtCommunityIter - Items() []BgpExtCommunity - Add() BgpExtCommunity - Append(items ...BgpExtCommunity) BgpSrteV6PolicyBgpExtCommunityIter - Set(index int, newObj BgpExtCommunity) BgpSrteV6PolicyBgpExtCommunityIter - Clear() BgpSrteV6PolicyBgpExtCommunityIter - clearHolderSlice() BgpSrteV6PolicyBgpExtCommunityIter - appendHolderSlice(item BgpExtCommunity) BgpSrteV6PolicyBgpExtCommunityIter + return string(data), nil } -func (obj *bgpSrteV6PolicyBgpExtCommunityIter) setMsg(msg *bgpSrteV6Policy) BgpSrteV6PolicyBgpExtCommunityIter { - obj.clearHolderSlice() - for _, val := range *obj.fieldPtr { - obj.appendHolderSlice(&bgpExtCommunity{obj: val}) +func (obj *patternFlowEthernetPauseTimeMetricTag) FromYaml(value string) error { + if value == "" { + value = "{}" + } + data, err := yaml.YAMLToJSON([]byte(value)) + if err != nil { + return err + } + opts := protojson.UnmarshalOptions{ + AllowPartial: true, + DiscardUnknown: false, + } + uError := opts.Unmarshal([]byte(data), obj.Msg()) + if uError != nil { + return fmt.Errorf("unmarshal error %s", strings.Replace( + uError.Error(), "\u00a0", " ", -1)[7:]) } - obj.obj = msg - return obj -} - -func (obj *bgpSrteV6PolicyBgpExtCommunityIter) Items() []BgpExtCommunity { - return obj.bgpExtCommunitySlice -} - -func (obj *bgpSrteV6PolicyBgpExtCommunityIter) Add() BgpExtCommunity { - newObj := &otg.BgpExtCommunity{} - *obj.fieldPtr = append(*obj.fieldPtr, newObj) - newLibObj := &bgpExtCommunity{obj: newObj} - newLibObj.setDefault() - obj.bgpExtCommunitySlice = append(obj.bgpExtCommunitySlice, newLibObj) - return newLibObj -} -func (obj *bgpSrteV6PolicyBgpExtCommunityIter) Append(items ...BgpExtCommunity) BgpSrteV6PolicyBgpExtCommunityIter { - for _, item := range items { - newObj := item.Msg() - *obj.fieldPtr = append(*obj.fieldPtr, newObj) - obj.bgpExtCommunitySlice = append(obj.bgpExtCommunitySlice, item) + vErr := obj.validateToAndFrom() + if vErr != nil { + return vErr } - return obj + return nil } -func (obj *bgpSrteV6PolicyBgpExtCommunityIter) Set(index int, newObj BgpExtCommunity) BgpSrteV6PolicyBgpExtCommunityIter { - (*obj.fieldPtr)[index] = newObj.Msg() - obj.bgpExtCommunitySlice[index] = newObj - return obj -} -func (obj *bgpSrteV6PolicyBgpExtCommunityIter) Clear() BgpSrteV6PolicyBgpExtCommunityIter { - if len(*obj.fieldPtr) > 0 { - *obj.fieldPtr = []*otg.BgpExtCommunity{} - obj.bgpExtCommunitySlice = []BgpExtCommunity{} +func (obj *patternFlowEthernetPauseTimeMetricTag) ToJson() (string, error) { + vErr := obj.validateToAndFrom() + if vErr != nil { + return "", vErr } - return obj -} -func (obj *bgpSrteV6PolicyBgpExtCommunityIter) clearHolderSlice() BgpSrteV6PolicyBgpExtCommunityIter { - if len(obj.bgpExtCommunitySlice) > 0 { - obj.bgpExtCommunitySlice = []BgpExtCommunity{} + opts := protojson.MarshalOptions{ + UseProtoNames: true, + AllowPartial: true, + EmitUnpopulated: false, + Indent: " ", } - return obj -} -func (obj *bgpSrteV6PolicyBgpExtCommunityIter) appendHolderSlice(item BgpExtCommunity) BgpSrteV6PolicyBgpExtCommunityIter { - obj.bgpExtCommunitySlice = append(obj.bgpExtCommunitySlice, item) - return obj + data, err := opts.Marshal(obj.Msg()) + if err != nil { + return "", err + } + return string(data), nil } -// List of optional tunnel TLV settings. -// TunnelTlvs returns a []BgpSrteV6TunnelTlv -func (obj *bgpSrteV6Policy) TunnelTlvs() BgpSrteV6PolicyBgpSrteV6TunnelTlvIter { - if len(obj.obj.TunnelTlvs) == 0 { - obj.obj.TunnelTlvs = []*otg.BgpSrteV6TunnelTlv{} +func (obj *patternFlowEthernetPauseTimeMetricTag) FromJson(value string) error { + opts := protojson.UnmarshalOptions{ + AllowPartial: true, + DiscardUnknown: false, } - if obj.tunnelTlvsHolder == nil { - obj.tunnelTlvsHolder = newBgpSrteV6PolicyBgpSrteV6TunnelTlvIter(&obj.obj.TunnelTlvs).setMsg(obj) + if value == "" { + value = "{}" + } + uError := opts.Unmarshal([]byte(value), obj.Msg()) + if uError != nil { + return fmt.Errorf("unmarshal error %s", strings.Replace( + uError.Error(), "\u00a0", " ", -1)[7:]) } - return obj.tunnelTlvsHolder -} - -type bgpSrteV6PolicyBgpSrteV6TunnelTlvIter struct { - obj *bgpSrteV6Policy - bgpSrteV6TunnelTlvSlice []BgpSrteV6TunnelTlv - fieldPtr *[]*otg.BgpSrteV6TunnelTlv -} - -func newBgpSrteV6PolicyBgpSrteV6TunnelTlvIter(ptr *[]*otg.BgpSrteV6TunnelTlv) BgpSrteV6PolicyBgpSrteV6TunnelTlvIter { - return &bgpSrteV6PolicyBgpSrteV6TunnelTlvIter{fieldPtr: ptr} -} - -type BgpSrteV6PolicyBgpSrteV6TunnelTlvIter interface { - setMsg(*bgpSrteV6Policy) BgpSrteV6PolicyBgpSrteV6TunnelTlvIter - Items() []BgpSrteV6TunnelTlv - Add() BgpSrteV6TunnelTlv - Append(items ...BgpSrteV6TunnelTlv) BgpSrteV6PolicyBgpSrteV6TunnelTlvIter - Set(index int, newObj BgpSrteV6TunnelTlv) BgpSrteV6PolicyBgpSrteV6TunnelTlvIter - Clear() BgpSrteV6PolicyBgpSrteV6TunnelTlvIter - clearHolderSlice() BgpSrteV6PolicyBgpSrteV6TunnelTlvIter - appendHolderSlice(item BgpSrteV6TunnelTlv) BgpSrteV6PolicyBgpSrteV6TunnelTlvIter -} -func (obj *bgpSrteV6PolicyBgpSrteV6TunnelTlvIter) setMsg(msg *bgpSrteV6Policy) BgpSrteV6PolicyBgpSrteV6TunnelTlvIter { - obj.clearHolderSlice() - for _, val := range *obj.fieldPtr { - obj.appendHolderSlice(&bgpSrteV6TunnelTlv{obj: val}) + err := obj.validateToAndFrom() + if err != nil { + return err } - obj.obj = msg - return obj + return nil } -func (obj *bgpSrteV6PolicyBgpSrteV6TunnelTlvIter) Items() []BgpSrteV6TunnelTlv { - return obj.bgpSrteV6TunnelTlvSlice +func (obj *patternFlowEthernetPauseTimeMetricTag) validateToAndFrom() error { + // emptyVars() + obj.validateObj(&obj.validation, true) + return obj.validationResult() } -func (obj *bgpSrteV6PolicyBgpSrteV6TunnelTlvIter) Add() BgpSrteV6TunnelTlv { - newObj := &otg.BgpSrteV6TunnelTlv{} - *obj.fieldPtr = append(*obj.fieldPtr, newObj) - newLibObj := &bgpSrteV6TunnelTlv{obj: newObj} - newLibObj.setDefault() - obj.bgpSrteV6TunnelTlvSlice = append(obj.bgpSrteV6TunnelTlvSlice, newLibObj) - return newLibObj +func (obj *patternFlowEthernetPauseTimeMetricTag) Validate() error { + // emptyVars() + obj.validateObj(&obj.validation, false) + return obj.validationResult() } -func (obj *bgpSrteV6PolicyBgpSrteV6TunnelTlvIter) Append(items ...BgpSrteV6TunnelTlv) BgpSrteV6PolicyBgpSrteV6TunnelTlvIter { - for _, item := range items { - newObj := item.Msg() - *obj.fieldPtr = append(*obj.fieldPtr, newObj) - obj.bgpSrteV6TunnelTlvSlice = append(obj.bgpSrteV6TunnelTlvSlice, item) +func (obj *patternFlowEthernetPauseTimeMetricTag) String() string { + str, err := obj.ToYaml() + if err != nil { + return err.Error() } - return obj + return str } -func (obj *bgpSrteV6PolicyBgpSrteV6TunnelTlvIter) Set(index int, newObj BgpSrteV6TunnelTlv) BgpSrteV6PolicyBgpSrteV6TunnelTlvIter { - (*obj.fieldPtr)[index] = newObj.Msg() - obj.bgpSrteV6TunnelTlvSlice[index] = newObj - return obj -} -func (obj *bgpSrteV6PolicyBgpSrteV6TunnelTlvIter) Clear() BgpSrteV6PolicyBgpSrteV6TunnelTlvIter { - if len(*obj.fieldPtr) > 0 { - *obj.fieldPtr = []*otg.BgpSrteV6TunnelTlv{} - obj.bgpSrteV6TunnelTlvSlice = []BgpSrteV6TunnelTlv{} +func (obj *patternFlowEthernetPauseTimeMetricTag) Clone() (PatternFlowEthernetPauseTimeMetricTag, error) { + vErr := obj.Validate() + if vErr != nil { + return nil, vErr } - return obj -} -func (obj *bgpSrteV6PolicyBgpSrteV6TunnelTlvIter) clearHolderSlice() BgpSrteV6PolicyBgpSrteV6TunnelTlvIter { - if len(obj.bgpSrteV6TunnelTlvSlice) > 0 { - obj.bgpSrteV6TunnelTlvSlice = []BgpSrteV6TunnelTlv{} + newObj := NewPatternFlowEthernetPauseTimeMetricTag() + data, err := proto.Marshal(obj.Msg()) + if err != nil { + return nil, err } - return obj + pbErr := proto.Unmarshal(data, newObj.Msg()) + if pbErr != nil { + return nil, pbErr + } + return newObj, nil } -func (obj *bgpSrteV6PolicyBgpSrteV6TunnelTlvIter) appendHolderSlice(item BgpSrteV6TunnelTlv) BgpSrteV6PolicyBgpSrteV6TunnelTlvIter { - obj.bgpSrteV6TunnelTlvSlice = append(obj.bgpSrteV6TunnelTlvSlice, item) - return obj + +// PatternFlowEthernetPauseTimeMetricTag is metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. +type PatternFlowEthernetPauseTimeMetricTag interface { + Validation + // Msg marshals PatternFlowEthernetPauseTimeMetricTag to protobuf object *otg.PatternFlowEthernetPauseTimeMetricTag + // and doesn't set defaults + Msg() *otg.PatternFlowEthernetPauseTimeMetricTag + // SetMsg unmarshals PatternFlowEthernetPauseTimeMetricTag from protobuf object *otg.PatternFlowEthernetPauseTimeMetricTag + // and doesn't set defaults + SetMsg(*otg.PatternFlowEthernetPauseTimeMetricTag) PatternFlowEthernetPauseTimeMetricTag + // ToProto marshals PatternFlowEthernetPauseTimeMetricTag to protobuf object *otg.PatternFlowEthernetPauseTimeMetricTag + ToProto() (*otg.PatternFlowEthernetPauseTimeMetricTag, error) + // ToPbText marshals PatternFlowEthernetPauseTimeMetricTag to protobuf text + ToPbText() (string, error) + // ToYaml marshals PatternFlowEthernetPauseTimeMetricTag to YAML text + ToYaml() (string, error) + // ToJson marshals PatternFlowEthernetPauseTimeMetricTag to JSON text + ToJson() (string, error) + // FromProto unmarshals PatternFlowEthernetPauseTimeMetricTag from protobuf object *otg.PatternFlowEthernetPauseTimeMetricTag + FromProto(msg *otg.PatternFlowEthernetPauseTimeMetricTag) (PatternFlowEthernetPauseTimeMetricTag, error) + // FromPbText unmarshals PatternFlowEthernetPauseTimeMetricTag from protobuf text + FromPbText(value string) error + // FromYaml unmarshals PatternFlowEthernetPauseTimeMetricTag from YAML text + FromYaml(value string) error + // FromJson unmarshals PatternFlowEthernetPauseTimeMetricTag from JSON text + FromJson(value string) error + // Validate validates PatternFlowEthernetPauseTimeMetricTag + Validate() error + // A stringer function + String() string + // Clones the object + Clone() (PatternFlowEthernetPauseTimeMetricTag, error) + validateToAndFrom() error + validateObj(vObj *validation, set_default bool) + setDefault() + // Name returns string, set in PatternFlowEthernetPauseTimeMetricTag. + Name() string + // SetName assigns string provided by user to PatternFlowEthernetPauseTimeMetricTag + SetName(value string) PatternFlowEthernetPauseTimeMetricTag + // Offset returns uint32, set in PatternFlowEthernetPauseTimeMetricTag. + Offset() uint32 + // SetOffset assigns uint32 provided by user to PatternFlowEthernetPauseTimeMetricTag + SetOffset(value uint32) PatternFlowEthernetPauseTimeMetricTag + // HasOffset checks if Offset has been set in PatternFlowEthernetPauseTimeMetricTag + HasOffset() bool + // Length returns uint32, set in PatternFlowEthernetPauseTimeMetricTag. + Length() uint32 + // SetLength assigns uint32 provided by user to PatternFlowEthernetPauseTimeMetricTag + SetLength(value uint32) PatternFlowEthernetPauseTimeMetricTag + // HasLength checks if Length has been set in PatternFlowEthernetPauseTimeMetricTag + HasLength() bool } -// Globally unique name of an object. It also serves as the primary key for arrays of objects. +// Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field // Name returns a string -func (obj *bgpSrteV6Policy) Name() string { +func (obj *patternFlowEthernetPauseTimeMetricTag) Name() string { return *obj.obj.Name } -// Globally unique name of an object. It also serves as the primary key for arrays of objects. -// SetName sets the string value in the BgpSrteV6Policy object -func (obj *bgpSrteV6Policy) SetName(value string) BgpSrteV6Policy { +// Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field +// SetName sets the string value in the PatternFlowEthernetPauseTimeMetricTag object +func (obj *patternFlowEthernetPauseTimeMetricTag) SetName(value string) PatternFlowEthernetPauseTimeMetricTag { obj.obj.Name = &value return obj } -// If enabled means that this part of the configuration including any active 'children' nodes will be advertised to peer. If disabled, this means that though config is present, it is not taking any part of the test but can be activated at run-time to advertise just this part of the configuration to the peer. -// Active returns a bool -func (obj *bgpSrteV6Policy) Active() bool { +// Offset in bits relative to start of corresponding header field +// Offset returns a uint32 +func (obj *patternFlowEthernetPauseTimeMetricTag) Offset() uint32 { - return *obj.obj.Active + return *obj.obj.Offset } -// If enabled means that this part of the configuration including any active 'children' nodes will be advertised to peer. If disabled, this means that though config is present, it is not taking any part of the test but can be activated at run-time to advertise just this part of the configuration to the peer. -// Active returns a bool -func (obj *bgpSrteV6Policy) HasActive() bool { - return obj.obj.Active != nil +// Offset in bits relative to start of corresponding header field +// Offset returns a uint32 +func (obj *patternFlowEthernetPauseTimeMetricTag) HasOffset() bool { + return obj.obj.Offset != nil } -// If enabled means that this part of the configuration including any active 'children' nodes will be advertised to peer. If disabled, this means that though config is present, it is not taking any part of the test but can be activated at run-time to advertise just this part of the configuration to the peer. -// SetActive sets the bool value in the BgpSrteV6Policy object -func (obj *bgpSrteV6Policy) SetActive(value bool) BgpSrteV6Policy { +// Offset in bits relative to start of corresponding header field +// SetOffset sets the uint32 value in the PatternFlowEthernetPauseTimeMetricTag object +func (obj *patternFlowEthernetPauseTimeMetricTag) SetOffset(value uint32) PatternFlowEthernetPauseTimeMetricTag { - obj.obj.Active = &value + obj.obj.Offset = &value return obj } -func (obj *bgpSrteV6Policy) validateObj(vObj *validation, set_default bool) { - if set_default { - obj.setDefault() - } - - // Ipv6Endpoint is required - if obj.obj.Ipv6Endpoint == nil { - vObj.validationErrors = append(vObj.validationErrors, "Ipv6Endpoint is required field on interface BgpSrteV6Policy") - } - if obj.obj.Ipv6Endpoint != nil { - - err := obj.validateIpv6(obj.Ipv6Endpoint()) - if err != nil { - vObj.validationErrors = append(vObj.validationErrors, fmt.Sprintf("%s %s", err.Error(), "on BgpSrteV6Policy.Ipv6Endpoint")) - } - - } - - if obj.obj.NextHopIpv4Address != nil { - - err := obj.validateIpv4(obj.NextHopIpv4Address()) - if err != nil { - vObj.validationErrors = append(vObj.validationErrors, fmt.Sprintf("%s %s", err.Error(), "on BgpSrteV6Policy.NextHopIpv4Address")) - } - - } - - if obj.obj.NextHopIpv6Address != nil { - - err := obj.validateIpv6(obj.NextHopIpv6Address()) - if err != nil { - vObj.validationErrors = append(vObj.validationErrors, fmt.Sprintf("%s %s", err.Error(), "on BgpSrteV6Policy.NextHopIpv6Address")) - } - - } +// Number of bits to track for metrics starting from configured offset of corresponding header field +// Length returns a uint32 +func (obj *patternFlowEthernetPauseTimeMetricTag) Length() uint32 { - if obj.obj.Advanced != nil { + return *obj.obj.Length - obj.Advanced().validateObj(vObj, set_default) - } +} - if obj.obj.AddPath != nil { +// Number of bits to track for metrics starting from configured offset of corresponding header field +// Length returns a uint32 +func (obj *patternFlowEthernetPauseTimeMetricTag) HasLength() bool { + return obj.obj.Length != nil +} - obj.AddPath().validateObj(vObj, set_default) - } +// Number of bits to track for metrics starting from configured offset of corresponding header field +// SetLength sets the uint32 value in the PatternFlowEthernetPauseTimeMetricTag object +func (obj *patternFlowEthernetPauseTimeMetricTag) SetLength(value uint32) PatternFlowEthernetPauseTimeMetricTag { - if obj.obj.AsPath != nil { + obj.obj.Length = &value + return obj +} - obj.AsPath().validateObj(vObj, set_default) +func (obj *patternFlowEthernetPauseTimeMetricTag) validateObj(vObj *validation, set_default bool) { + if set_default { + obj.setDefault() } - if len(obj.obj.Communities) != 0 { - - if set_default { - obj.Communities().clearHolderSlice() - for _, item := range obj.obj.Communities { - obj.Communities().appendHolderSlice(&bgpCommunity{obj: item}) - } - } - for _, item := range obj.Communities().Items() { - item.validateObj(vObj, set_default) - } - + // Name is required + if obj.obj.Name == nil { + vObj.validationErrors = append(vObj.validationErrors, "Name is required field on interface PatternFlowEthernetPauseTimeMetricTag") } - if len(obj.obj.Extcommunities) != 0 { + if obj.obj.Offset != nil { - if set_default { - obj.Extcommunities().clearHolderSlice() - for _, item := range obj.obj.Extcommunities { - obj.Extcommunities().appendHolderSlice(&bgpExtCommunity{obj: item}) - } - } - for _, item := range obj.Extcommunities().Items() { - item.validateObj(vObj, set_default) + if *obj.obj.Offset > 15 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("0 <= PatternFlowEthernetPauseTimeMetricTag.Offset <= 15 but Got %d", *obj.obj.Offset)) } } - if len(obj.obj.TunnelTlvs) != 0 { + if obj.obj.Length != nil { - if set_default { - obj.TunnelTlvs().clearHolderSlice() - for _, item := range obj.obj.TunnelTlvs { - obj.TunnelTlvs().appendHolderSlice(&bgpSrteV6TunnelTlv{obj: item}) - } - } - for _, item := range obj.TunnelTlvs().Items() { - item.validateObj(vObj, set_default) + if *obj.obj.Length < 1 || *obj.obj.Length > 16 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("1 <= PatternFlowEthernetPauseTimeMetricTag.Length <= 16 but Got %d", *obj.obj.Length)) } } - // Name is required - if obj.obj.Name == nil { - vObj.validationErrors = append(vObj.validationErrors, "Name is required field on interface BgpSrteV6Policy") - } } -func (obj *bgpSrteV6Policy) setDefault() { - if obj.obj.Distinguisher == nil { - obj.SetDistinguisher(1) - } - if obj.obj.Color == nil { - obj.SetColor(100) - } - if obj.obj.NextHopMode == nil { - obj.SetNextHopMode(BgpSrteV6PolicyNextHopMode.LOCAL_IP) - - } - if obj.obj.NextHopAddressType == nil { - obj.SetNextHopAddressType(BgpSrteV6PolicyNextHopAddressType.IPV6) - - } - if obj.obj.NextHopIpv4Address == nil { - obj.SetNextHopIpv4Address("0.0.0.0") - } - if obj.obj.NextHopIpv6Address == nil { - obj.SetNextHopIpv6Address("::0") +func (obj *patternFlowEthernetPauseTimeMetricTag) setDefault() { + if obj.obj.Offset == nil { + obj.SetOffset(0) } - if obj.obj.Active == nil { - obj.SetActive(true) + if obj.obj.Length == nil { + obj.SetLength(16) } } -// ***** BgpGracefulRestart ***** -type bgpGracefulRestart struct { +// ***** PatternFlowTcpSrcPortCounter ***** +type patternFlowTcpSrcPortCounter struct { validation - obj *otg.BgpGracefulRestart + obj *otg.PatternFlowTcpSrcPortCounter } - -func NewBgpGracefulRestart() BgpGracefulRestart { - obj := bgpGracefulRestart{obj: &otg.BgpGracefulRestart{}} + +func NewPatternFlowTcpSrcPortCounter() PatternFlowTcpSrcPortCounter { + obj := patternFlowTcpSrcPortCounter{obj: &otg.PatternFlowTcpSrcPortCounter{}} obj.setDefault() return &obj } -func (obj *bgpGracefulRestart) Msg() *otg.BgpGracefulRestart { +func (obj *patternFlowTcpSrcPortCounter) Msg() *otg.PatternFlowTcpSrcPortCounter { return obj.obj } -func (obj *bgpGracefulRestart) SetMsg(msg *otg.BgpGracefulRestart) BgpGracefulRestart { +func (obj *patternFlowTcpSrcPortCounter) SetMsg(msg *otg.PatternFlowTcpSrcPortCounter) PatternFlowTcpSrcPortCounter { proto.Merge(obj.obj, msg) return obj } -func (obj *bgpGracefulRestart) ToProto() (*otg.BgpGracefulRestart, error) { +func (obj *patternFlowTcpSrcPortCounter) ToProto() (*otg.PatternFlowTcpSrcPortCounter, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -179617,7 +223577,7 @@ func (obj *bgpGracefulRestart) ToProto() (*otg.BgpGracefulRestart, error) { return obj.Msg(), nil } -func (obj *bgpGracefulRestart) FromProto(msg *otg.BgpGracefulRestart) (BgpGracefulRestart, error) { +func (obj *patternFlowTcpSrcPortCounter) FromProto(msg *otg.PatternFlowTcpSrcPortCounter) (PatternFlowTcpSrcPortCounter, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -179626,7 +223586,7 @@ func (obj *bgpGracefulRestart) FromProto(msg *otg.BgpGracefulRestart) (BgpGracef return newObj, nil } -func (obj *bgpGracefulRestart) ToPbText() (string, error) { +func (obj *patternFlowTcpSrcPortCounter) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -179638,7 +223598,7 @@ func (obj *bgpGracefulRestart) ToPbText() (string, error) { return string(protoMarshal), nil } -func (obj *bgpGracefulRestart) FromPbText(value string) error { +func (obj *patternFlowTcpSrcPortCounter) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj @@ -179651,7 +223611,7 @@ func (obj *bgpGracefulRestart) FromPbText(value string) error { return retObj } -func (obj *bgpGracefulRestart) ToYaml() (string, error) { +func (obj *patternFlowTcpSrcPortCounter) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -179672,7 +223632,7 @@ func (obj *bgpGracefulRestart) ToYaml() (string, error) { return string(data), nil } -func (obj *bgpGracefulRestart) FromYaml(value string) error { +func (obj *patternFlowTcpSrcPortCounter) FromYaml(value string) error { if value == "" { value = "{}" } @@ -179697,7 +223657,7 @@ func (obj *bgpGracefulRestart) FromYaml(value string) error { return nil } -func (obj *bgpGracefulRestart) ToJson() (string, error) { +func (obj *patternFlowTcpSrcPortCounter) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -179715,7 +223675,7 @@ func (obj *bgpGracefulRestart) ToJson() (string, error) { return string(data), nil } -func (obj *bgpGracefulRestart) FromJson(value string) error { +func (obj *patternFlowTcpSrcPortCounter) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -179736,19 +223696,19 @@ func (obj *bgpGracefulRestart) FromJson(value string) error { return nil } -func (obj *bgpGracefulRestart) validateToAndFrom() error { +func (obj *patternFlowTcpSrcPortCounter) validateToAndFrom() error { // emptyVars() obj.validateObj(&obj.validation, true) return obj.validationResult() } -func (obj *bgpGracefulRestart) Validate() error { +func (obj *patternFlowTcpSrcPortCounter) Validate() error { // emptyVars() obj.validateObj(&obj.validation, false) return obj.validationResult() } -func (obj *bgpGracefulRestart) String() string { +func (obj *patternFlowTcpSrcPortCounter) String() string { str, err := obj.ToYaml() if err != nil { return err.Error() @@ -179756,12 +223716,12 @@ func (obj *bgpGracefulRestart) String() string { return str } -func (obj *bgpGracefulRestart) Clone() (BgpGracefulRestart, error) { +func (obj *patternFlowTcpSrcPortCounter) Clone() (PatternFlowTcpSrcPortCounter, error) { vErr := obj.Validate() if vErr != nil { return nil, vErr } - newObj := NewBgpGracefulRestart() + newObj := NewPatternFlowTcpSrcPortCounter() data, err := proto.Marshal(obj.Msg()) if err != nil { return nil, err @@ -179773,235 +223733,199 @@ func (obj *bgpGracefulRestart) Clone() (BgpGracefulRestart, error) { return newObj, nil } -// BgpGracefulRestart is the Graceful Restart Capability (RFC 4724) is a BGP capability that can be used by a BGP speaker to indicate its ability to preserve its forwarding state during BGP restart. The Graceful Restart (GR) capability is advertised in OPEN messages sent between BGP peers. After a BGP session has been established, and the initial routing update has been completed, an End-of-RIB (Routing Information Base) marker is sent in an UPDATE message to convey information about routing convergence. -type BgpGracefulRestart interface { +// PatternFlowTcpSrcPortCounter is integer counter pattern +type PatternFlowTcpSrcPortCounter interface { Validation - // Msg marshals BgpGracefulRestart to protobuf object *otg.BgpGracefulRestart + // Msg marshals PatternFlowTcpSrcPortCounter to protobuf object *otg.PatternFlowTcpSrcPortCounter // and doesn't set defaults - Msg() *otg.BgpGracefulRestart - // SetMsg unmarshals BgpGracefulRestart from protobuf object *otg.BgpGracefulRestart + Msg() *otg.PatternFlowTcpSrcPortCounter + // SetMsg unmarshals PatternFlowTcpSrcPortCounter from protobuf object *otg.PatternFlowTcpSrcPortCounter // and doesn't set defaults - SetMsg(*otg.BgpGracefulRestart) BgpGracefulRestart - // ToProto marshals BgpGracefulRestart to protobuf object *otg.BgpGracefulRestart - ToProto() (*otg.BgpGracefulRestart, error) - // ToPbText marshals BgpGracefulRestart to protobuf text + SetMsg(*otg.PatternFlowTcpSrcPortCounter) PatternFlowTcpSrcPortCounter + // ToProto marshals PatternFlowTcpSrcPortCounter to protobuf object *otg.PatternFlowTcpSrcPortCounter + ToProto() (*otg.PatternFlowTcpSrcPortCounter, error) + // ToPbText marshals PatternFlowTcpSrcPortCounter to protobuf text ToPbText() (string, error) - // ToYaml marshals BgpGracefulRestart to YAML text + // ToYaml marshals PatternFlowTcpSrcPortCounter to YAML text ToYaml() (string, error) - // ToJson marshals BgpGracefulRestart to JSON text + // ToJson marshals PatternFlowTcpSrcPortCounter to JSON text ToJson() (string, error) - // FromProto unmarshals BgpGracefulRestart from protobuf object *otg.BgpGracefulRestart - FromProto(msg *otg.BgpGracefulRestart) (BgpGracefulRestart, error) - // FromPbText unmarshals BgpGracefulRestart from protobuf text + // FromProto unmarshals PatternFlowTcpSrcPortCounter from protobuf object *otg.PatternFlowTcpSrcPortCounter + FromProto(msg *otg.PatternFlowTcpSrcPortCounter) (PatternFlowTcpSrcPortCounter, error) + // FromPbText unmarshals PatternFlowTcpSrcPortCounter from protobuf text FromPbText(value string) error - // FromYaml unmarshals BgpGracefulRestart from YAML text + // FromYaml unmarshals PatternFlowTcpSrcPortCounter from YAML text FromYaml(value string) error - // FromJson unmarshals BgpGracefulRestart from JSON text + // FromJson unmarshals PatternFlowTcpSrcPortCounter from JSON text FromJson(value string) error - // Validate validates BgpGracefulRestart + // Validate validates PatternFlowTcpSrcPortCounter Validate() error // A stringer function String() string // Clones the object - Clone() (BgpGracefulRestart, error) + Clone() (PatternFlowTcpSrcPortCounter, error) validateToAndFrom() error validateObj(vObj *validation, set_default bool) setDefault() - // EnableGr returns bool, set in BgpGracefulRestart. - EnableGr() bool - // SetEnableGr assigns bool provided by user to BgpGracefulRestart - SetEnableGr(value bool) BgpGracefulRestart - // HasEnableGr checks if EnableGr has been set in BgpGracefulRestart - HasEnableGr() bool - // RestartTime returns uint32, set in BgpGracefulRestart. - RestartTime() uint32 - // SetRestartTime assigns uint32 provided by user to BgpGracefulRestart - SetRestartTime(value uint32) BgpGracefulRestart - // HasRestartTime checks if RestartTime has been set in BgpGracefulRestart - HasRestartTime() bool - // EnableLlgr returns bool, set in BgpGracefulRestart. - EnableLlgr() bool - // SetEnableLlgr assigns bool provided by user to BgpGracefulRestart - SetEnableLlgr(value bool) BgpGracefulRestart - // HasEnableLlgr checks if EnableLlgr has been set in BgpGracefulRestart - HasEnableLlgr() bool - // StaleTime returns uint32, set in BgpGracefulRestart. - StaleTime() uint32 - // SetStaleTime assigns uint32 provided by user to BgpGracefulRestart - SetStaleTime(value uint32) BgpGracefulRestart - // HasStaleTime checks if StaleTime has been set in BgpGracefulRestart - HasStaleTime() bool + // Start returns uint32, set in PatternFlowTcpSrcPortCounter. + Start() uint32 + // SetStart assigns uint32 provided by user to PatternFlowTcpSrcPortCounter + SetStart(value uint32) PatternFlowTcpSrcPortCounter + // HasStart checks if Start has been set in PatternFlowTcpSrcPortCounter + HasStart() bool + // Step returns uint32, set in PatternFlowTcpSrcPortCounter. + Step() uint32 + // SetStep assigns uint32 provided by user to PatternFlowTcpSrcPortCounter + SetStep(value uint32) PatternFlowTcpSrcPortCounter + // HasStep checks if Step has been set in PatternFlowTcpSrcPortCounter + HasStep() bool + // Count returns uint32, set in PatternFlowTcpSrcPortCounter. + Count() uint32 + // SetCount assigns uint32 provided by user to PatternFlowTcpSrcPortCounter + SetCount(value uint32) PatternFlowTcpSrcPortCounter + // HasCount checks if Count has been set in PatternFlowTcpSrcPortCounter + HasCount() bool } -// If enabled, Graceful Restart capability is advertised in BGP OPEN messages. -// EnableGr returns a bool -func (obj *bgpGracefulRestart) EnableGr() bool { +// description is TBD +// Start returns a uint32 +func (obj *patternFlowTcpSrcPortCounter) Start() uint32 { - return *obj.obj.EnableGr + return *obj.obj.Start } -// If enabled, Graceful Restart capability is advertised in BGP OPEN messages. -// EnableGr returns a bool -func (obj *bgpGracefulRestart) HasEnableGr() bool { - return obj.obj.EnableGr != nil +// description is TBD +// Start returns a uint32 +func (obj *patternFlowTcpSrcPortCounter) HasStart() bool { + return obj.obj.Start != nil } -// If enabled, Graceful Restart capability is advertised in BGP OPEN messages. -// SetEnableGr sets the bool value in the BgpGracefulRestart object -func (obj *bgpGracefulRestart) SetEnableGr(value bool) BgpGracefulRestart { +// description is TBD +// SetStart sets the uint32 value in the PatternFlowTcpSrcPortCounter object +func (obj *patternFlowTcpSrcPortCounter) SetStart(value uint32) PatternFlowTcpSrcPortCounter { - obj.obj.EnableGr = &value + obj.obj.Start = &value return obj } -// This is the estimated duration (in seconds) it will take for the BGP session to be re-established after a restart. This can be used to speed up routing convergence by its peer in case the BGP speaker does not come back after a restart. -// RestartTime returns a uint32 -func (obj *bgpGracefulRestart) RestartTime() uint32 { +// description is TBD +// Step returns a uint32 +func (obj *patternFlowTcpSrcPortCounter) Step() uint32 { - return *obj.obj.RestartTime + return *obj.obj.Step } -// This is the estimated duration (in seconds) it will take for the BGP session to be re-established after a restart. This can be used to speed up routing convergence by its peer in case the BGP speaker does not come back after a restart. -// RestartTime returns a uint32 -func (obj *bgpGracefulRestart) HasRestartTime() bool { - return obj.obj.RestartTime != nil +// description is TBD +// Step returns a uint32 +func (obj *patternFlowTcpSrcPortCounter) HasStep() bool { + return obj.obj.Step != nil } -// This is the estimated duration (in seconds) it will take for the BGP session to be re-established after a restart. This can be used to speed up routing convergence by its peer in case the BGP speaker does not come back after a restart. -// SetRestartTime sets the uint32 value in the BgpGracefulRestart object -func (obj *bgpGracefulRestart) SetRestartTime(value uint32) BgpGracefulRestart { +// description is TBD +// SetStep sets the uint32 value in the PatternFlowTcpSrcPortCounter object +func (obj *patternFlowTcpSrcPortCounter) SetStep(value uint32) PatternFlowTcpSrcPortCounter { - obj.obj.RestartTime = &value + obj.obj.Step = &value return obj } -// If enabled, the "Long-lived Graceful Restart Capability", or "LLGR Capability" -// will be advertised. -// This capability MUST be advertised in conjunction with the Graceful Restart -// capability. -// EnableLlgr returns a bool -func (obj *bgpGracefulRestart) EnableLlgr() bool { +// description is TBD +// Count returns a uint32 +func (obj *patternFlowTcpSrcPortCounter) Count() uint32 { - return *obj.obj.EnableLlgr + return *obj.obj.Count } -// If enabled, the "Long-lived Graceful Restart Capability", or "LLGR Capability" -// will be advertised. -// This capability MUST be advertised in conjunction with the Graceful Restart -// capability. -// EnableLlgr returns a bool -func (obj *bgpGracefulRestart) HasEnableLlgr() bool { - return obj.obj.EnableLlgr != nil +// description is TBD +// Count returns a uint32 +func (obj *patternFlowTcpSrcPortCounter) HasCount() bool { + return obj.obj.Count != nil } -// If enabled, the "Long-lived Graceful Restart Capability", or "LLGR Capability" -// will be advertised. -// This capability MUST be advertised in conjunction with the Graceful Restart -// capability. -// SetEnableLlgr sets the bool value in the BgpGracefulRestart object -func (obj *bgpGracefulRestart) SetEnableLlgr(value bool) BgpGracefulRestart { +// description is TBD +// SetCount sets the uint32 value in the PatternFlowTcpSrcPortCounter object +func (obj *patternFlowTcpSrcPortCounter) SetCount(value uint32) PatternFlowTcpSrcPortCounter { - obj.obj.EnableLlgr = &value + obj.obj.Count = &value return obj } -// Duration (in seconds) specifying how long stale information (for the AFI/SAFI) -// may be retained. This is a three byte field and is applicable -// only if 'enable_llgr' is set to 'true'. -// StaleTime returns a uint32 -func (obj *bgpGracefulRestart) StaleTime() uint32 { - - return *obj.obj.StaleTime - -} - -// Duration (in seconds) specifying how long stale information (for the AFI/SAFI) -// may be retained. This is a three byte field and is applicable -// only if 'enable_llgr' is set to 'true'. -// StaleTime returns a uint32 -func (obj *bgpGracefulRestart) HasStaleTime() bool { - return obj.obj.StaleTime != nil -} +func (obj *patternFlowTcpSrcPortCounter) validateObj(vObj *validation, set_default bool) { + if set_default { + obj.setDefault() + } -// Duration (in seconds) specifying how long stale information (for the AFI/SAFI) -// may be retained. This is a three byte field and is applicable -// only if 'enable_llgr' is set to 'true'. -// SetStaleTime sets the uint32 value in the BgpGracefulRestart object -func (obj *bgpGracefulRestart) SetStaleTime(value uint32) BgpGracefulRestart { + if obj.obj.Start != nil { - obj.obj.StaleTime = &value - return obj -} + if *obj.obj.Start > 65535 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("0 <= PatternFlowTcpSrcPortCounter.Start <= 65535 but Got %d", *obj.obj.Start)) + } -func (obj *bgpGracefulRestart) validateObj(vObj *validation, set_default bool) { - if set_default { - obj.setDefault() } - if obj.obj.RestartTime != nil { + if obj.obj.Step != nil { - if *obj.obj.RestartTime > 4096 { + if *obj.obj.Step > 65535 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("0 <= BgpGracefulRestart.RestartTime <= 4096 but Got %d", *obj.obj.RestartTime)) + fmt.Sprintf("0 <= PatternFlowTcpSrcPortCounter.Step <= 65535 but Got %d", *obj.obj.Step)) } } - if obj.obj.StaleTime != nil { + if obj.obj.Count != nil { - if *obj.obj.StaleTime > 16777215 { + if *obj.obj.Count > 65535 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("0 <= BgpGracefulRestart.StaleTime <= 16777215 but Got %d", *obj.obj.StaleTime)) + fmt.Sprintf("0 <= PatternFlowTcpSrcPortCounter.Count <= 65535 but Got %d", *obj.obj.Count)) } } } -func (obj *bgpGracefulRestart) setDefault() { - if obj.obj.EnableGr == nil { - obj.SetEnableGr(false) - } - if obj.obj.RestartTime == nil { - obj.SetRestartTime(45) +func (obj *patternFlowTcpSrcPortCounter) setDefault() { + if obj.obj.Start == nil { + obj.SetStart(0) } - if obj.obj.EnableLlgr == nil { - obj.SetEnableLlgr(false) + if obj.obj.Step == nil { + obj.SetStep(1) } - if obj.obj.StaleTime == nil { - obj.SetStaleTime(10) + if obj.obj.Count == nil { + obj.SetCount(1) } } -// ***** BgpV6SegmentRouting ***** -type bgpV6SegmentRouting struct { +// ***** PatternFlowTcpSrcPortMetricTag ***** +type patternFlowTcpSrcPortMetricTag struct { validation - obj *otg.BgpV6SegmentRouting + obj *otg.PatternFlowTcpSrcPortMetricTag } -func NewBgpV6SegmentRouting() BgpV6SegmentRouting { - obj := bgpV6SegmentRouting{obj: &otg.BgpV6SegmentRouting{}} +func NewPatternFlowTcpSrcPortMetricTag() PatternFlowTcpSrcPortMetricTag { + obj := patternFlowTcpSrcPortMetricTag{obj: &otg.PatternFlowTcpSrcPortMetricTag{}} obj.setDefault() return &obj } -func (obj *bgpV6SegmentRouting) Msg() *otg.BgpV6SegmentRouting { +func (obj *patternFlowTcpSrcPortMetricTag) Msg() *otg.PatternFlowTcpSrcPortMetricTag { return obj.obj } -func (obj *bgpV6SegmentRouting) SetMsg(msg *otg.BgpV6SegmentRouting) BgpV6SegmentRouting { +func (obj *patternFlowTcpSrcPortMetricTag) SetMsg(msg *otg.PatternFlowTcpSrcPortMetricTag) PatternFlowTcpSrcPortMetricTag { proto.Merge(obj.obj, msg) return obj } -func (obj *bgpV6SegmentRouting) ToProto() (*otg.BgpV6SegmentRouting, error) { +func (obj *patternFlowTcpSrcPortMetricTag) ToProto() (*otg.PatternFlowTcpSrcPortMetricTag, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -180009,7 +223933,7 @@ func (obj *bgpV6SegmentRouting) ToProto() (*otg.BgpV6SegmentRouting, error) { return obj.Msg(), nil } -func (obj *bgpV6SegmentRouting) FromProto(msg *otg.BgpV6SegmentRouting) (BgpV6SegmentRouting, error) { +func (obj *patternFlowTcpSrcPortMetricTag) FromProto(msg *otg.PatternFlowTcpSrcPortMetricTag) (PatternFlowTcpSrcPortMetricTag, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -180018,7 +223942,7 @@ func (obj *bgpV6SegmentRouting) FromProto(msg *otg.BgpV6SegmentRouting) (BgpV6Se return newObj, nil } -func (obj *bgpV6SegmentRouting) ToPbText() (string, error) { +func (obj *patternFlowTcpSrcPortMetricTag) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -180030,7 +223954,7 @@ func (obj *bgpV6SegmentRouting) ToPbText() (string, error) { return string(protoMarshal), nil } -func (obj *bgpV6SegmentRouting) FromPbText(value string) error { +func (obj *patternFlowTcpSrcPortMetricTag) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj @@ -180043,7 +223967,7 @@ func (obj *bgpV6SegmentRouting) FromPbText(value string) error { return retObj } -func (obj *bgpV6SegmentRouting) ToYaml() (string, error) { +func (obj *patternFlowTcpSrcPortMetricTag) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -180064,7 +223988,7 @@ func (obj *bgpV6SegmentRouting) ToYaml() (string, error) { return string(data), nil } -func (obj *bgpV6SegmentRouting) FromYaml(value string) error { +func (obj *patternFlowTcpSrcPortMetricTag) FromYaml(value string) error { if value == "" { value = "{}" } @@ -180089,7 +224013,7 @@ func (obj *bgpV6SegmentRouting) FromYaml(value string) error { return nil } -func (obj *bgpV6SegmentRouting) ToJson() (string, error) { +func (obj *patternFlowTcpSrcPortMetricTag) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -180107,7 +224031,7 @@ func (obj *bgpV6SegmentRouting) ToJson() (string, error) { return string(data), nil } -func (obj *bgpV6SegmentRouting) FromJson(value string) error { +func (obj *patternFlowTcpSrcPortMetricTag) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -180128,19 +224052,19 @@ func (obj *bgpV6SegmentRouting) FromJson(value string) error { return nil } -func (obj *bgpV6SegmentRouting) validateToAndFrom() error { +func (obj *patternFlowTcpSrcPortMetricTag) validateToAndFrom() error { // emptyVars() obj.validateObj(&obj.validation, true) return obj.validationResult() } -func (obj *bgpV6SegmentRouting) Validate() error { +func (obj *patternFlowTcpSrcPortMetricTag) Validate() error { // emptyVars() obj.validateObj(&obj.validation, false) return obj.validationResult() } -func (obj *bgpV6SegmentRouting) String() string { +func (obj *patternFlowTcpSrcPortMetricTag) String() string { str, err := obj.ToYaml() if err != nil { return err.Error() @@ -180148,12 +224072,12 @@ func (obj *bgpV6SegmentRouting) String() string { return str } -func (obj *bgpV6SegmentRouting) Clone() (BgpV6SegmentRouting, error) { +func (obj *patternFlowTcpSrcPortMetricTag) Clone() (PatternFlowTcpSrcPortMetricTag, error) { vErr := obj.Validate() if vErr != nil { return nil, vErr } - newObj := NewBgpV6SegmentRouting() + newObj := NewPatternFlowTcpSrcPortMetricTag() data, err := proto.Marshal(obj.Msg()) if err != nil { return nil, err @@ -180165,340 +224089,183 @@ func (obj *bgpV6SegmentRouting) Clone() (BgpV6SegmentRouting, error) { return newObj, nil } -// BgpV6SegmentRouting is configuration for BGPv6 segment routing settings. -type BgpV6SegmentRouting interface { +// PatternFlowTcpSrcPortMetricTag is metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. +type PatternFlowTcpSrcPortMetricTag interface { Validation - // Msg marshals BgpV6SegmentRouting to protobuf object *otg.BgpV6SegmentRouting + // Msg marshals PatternFlowTcpSrcPortMetricTag to protobuf object *otg.PatternFlowTcpSrcPortMetricTag // and doesn't set defaults - Msg() *otg.BgpV6SegmentRouting - // SetMsg unmarshals BgpV6SegmentRouting from protobuf object *otg.BgpV6SegmentRouting + Msg() *otg.PatternFlowTcpSrcPortMetricTag + // SetMsg unmarshals PatternFlowTcpSrcPortMetricTag from protobuf object *otg.PatternFlowTcpSrcPortMetricTag // and doesn't set defaults - SetMsg(*otg.BgpV6SegmentRouting) BgpV6SegmentRouting - // ToProto marshals BgpV6SegmentRouting to protobuf object *otg.BgpV6SegmentRouting - ToProto() (*otg.BgpV6SegmentRouting, error) - // ToPbText marshals BgpV6SegmentRouting to protobuf text + SetMsg(*otg.PatternFlowTcpSrcPortMetricTag) PatternFlowTcpSrcPortMetricTag + // ToProto marshals PatternFlowTcpSrcPortMetricTag to protobuf object *otg.PatternFlowTcpSrcPortMetricTag + ToProto() (*otg.PatternFlowTcpSrcPortMetricTag, error) + // ToPbText marshals PatternFlowTcpSrcPortMetricTag to protobuf text ToPbText() (string, error) - // ToYaml marshals BgpV6SegmentRouting to YAML text + // ToYaml marshals PatternFlowTcpSrcPortMetricTag to YAML text ToYaml() (string, error) - // ToJson marshals BgpV6SegmentRouting to JSON text + // ToJson marshals PatternFlowTcpSrcPortMetricTag to JSON text ToJson() (string, error) - // FromProto unmarshals BgpV6SegmentRouting from protobuf object *otg.BgpV6SegmentRouting - FromProto(msg *otg.BgpV6SegmentRouting) (BgpV6SegmentRouting, error) - // FromPbText unmarshals BgpV6SegmentRouting from protobuf text + // FromProto unmarshals PatternFlowTcpSrcPortMetricTag from protobuf object *otg.PatternFlowTcpSrcPortMetricTag + FromProto(msg *otg.PatternFlowTcpSrcPortMetricTag) (PatternFlowTcpSrcPortMetricTag, error) + // FromPbText unmarshals PatternFlowTcpSrcPortMetricTag from protobuf text FromPbText(value string) error - // FromYaml unmarshals BgpV6SegmentRouting from YAML text + // FromYaml unmarshals PatternFlowTcpSrcPortMetricTag from YAML text FromYaml(value string) error - // FromJson unmarshals BgpV6SegmentRouting from JSON text + // FromJson unmarshals PatternFlowTcpSrcPortMetricTag from JSON text FromJson(value string) error - // Validate validates BgpV6SegmentRouting + // Validate validates PatternFlowTcpSrcPortMetricTag Validate() error // A stringer function String() string // Clones the object - Clone() (BgpV6SegmentRouting, error) + Clone() (PatternFlowTcpSrcPortMetricTag, error) validateToAndFrom() error validateObj(vObj *validation, set_default bool) setDefault() - // IngressSupportsVpn returns bool, set in BgpV6SegmentRouting. - IngressSupportsVpn() bool - // SetIngressSupportsVpn assigns bool provided by user to BgpV6SegmentRouting - SetIngressSupportsVpn(value bool) BgpV6SegmentRouting - // HasIngressSupportsVpn checks if IngressSupportsVpn has been set in BgpV6SegmentRouting - HasIngressSupportsVpn() bool - // ReducedEncapsulation returns bool, set in BgpV6SegmentRouting. - ReducedEncapsulation() bool - // SetReducedEncapsulation assigns bool provided by user to BgpV6SegmentRouting - SetReducedEncapsulation(value bool) BgpV6SegmentRouting - // HasReducedEncapsulation checks if ReducedEncapsulation has been set in BgpV6SegmentRouting - HasReducedEncapsulation() bool - // CopyTimeToLive returns bool, set in BgpV6SegmentRouting. - CopyTimeToLive() bool - // SetCopyTimeToLive assigns bool provided by user to BgpV6SegmentRouting - SetCopyTimeToLive(value bool) BgpV6SegmentRouting - // HasCopyTimeToLive checks if CopyTimeToLive has been set in BgpV6SegmentRouting - HasCopyTimeToLive() bool - // TimeToLive returns uint32, set in BgpV6SegmentRouting. - TimeToLive() uint32 - // SetTimeToLive assigns uint32 provided by user to BgpV6SegmentRouting - SetTimeToLive(value uint32) BgpV6SegmentRouting - // HasTimeToLive checks if TimeToLive has been set in BgpV6SegmentRouting - HasTimeToLive() bool - // MaxSidsPerSrh returns uint32, set in BgpV6SegmentRouting. - MaxSidsPerSrh() uint32 - // SetMaxSidsPerSrh assigns uint32 provided by user to BgpV6SegmentRouting - SetMaxSidsPerSrh(value uint32) BgpV6SegmentRouting - // HasMaxSidsPerSrh checks if MaxSidsPerSrh has been set in BgpV6SegmentRouting - HasMaxSidsPerSrh() bool - // AutoGenerateSegmentLeftValue returns bool, set in BgpV6SegmentRouting. - AutoGenerateSegmentLeftValue() bool - // SetAutoGenerateSegmentLeftValue assigns bool provided by user to BgpV6SegmentRouting - SetAutoGenerateSegmentLeftValue(value bool) BgpV6SegmentRouting - // HasAutoGenerateSegmentLeftValue checks if AutoGenerateSegmentLeftValue has been set in BgpV6SegmentRouting - HasAutoGenerateSegmentLeftValue() bool - // SegmentLeftValue returns uint32, set in BgpV6SegmentRouting. - SegmentLeftValue() uint32 - // SetSegmentLeftValue assigns uint32 provided by user to BgpV6SegmentRouting - SetSegmentLeftValue(value uint32) BgpV6SegmentRouting - // HasSegmentLeftValue checks if SegmentLeftValue has been set in BgpV6SegmentRouting - HasSegmentLeftValue() bool - // AdvertiseSrTePolicy returns bool, set in BgpV6SegmentRouting. - AdvertiseSrTePolicy() bool - // SetAdvertiseSrTePolicy assigns bool provided by user to BgpV6SegmentRouting - SetAdvertiseSrTePolicy(value bool) BgpV6SegmentRouting - // HasAdvertiseSrTePolicy checks if AdvertiseSrTePolicy has been set in BgpV6SegmentRouting - HasAdvertiseSrTePolicy() bool -} - -// TBD -// IngressSupportsVpn returns a bool -func (obj *bgpV6SegmentRouting) IngressSupportsVpn() bool { - - return *obj.obj.IngressSupportsVpn - -} - -// TBD -// IngressSupportsVpn returns a bool -func (obj *bgpV6SegmentRouting) HasIngressSupportsVpn() bool { - return obj.obj.IngressSupportsVpn != nil -} - -// TBD -// SetIngressSupportsVpn sets the bool value in the BgpV6SegmentRouting object -func (obj *bgpV6SegmentRouting) SetIngressSupportsVpn(value bool) BgpV6SegmentRouting { - - obj.obj.IngressSupportsVpn = &value - return obj -} - -// TBD -// ReducedEncapsulation returns a bool -func (obj *bgpV6SegmentRouting) ReducedEncapsulation() bool { - - return *obj.obj.ReducedEncapsulation - -} - -// TBD -// ReducedEncapsulation returns a bool -func (obj *bgpV6SegmentRouting) HasReducedEncapsulation() bool { - return obj.obj.ReducedEncapsulation != nil -} - -// TBD -// SetReducedEncapsulation sets the bool value in the BgpV6SegmentRouting object -func (obj *bgpV6SegmentRouting) SetReducedEncapsulation(value bool) BgpV6SegmentRouting { - - obj.obj.ReducedEncapsulation = &value - return obj -} - -// TBD -// CopyTimeToLive returns a bool -func (obj *bgpV6SegmentRouting) CopyTimeToLive() bool { - - return *obj.obj.CopyTimeToLive - -} - -// TBD -// CopyTimeToLive returns a bool -func (obj *bgpV6SegmentRouting) HasCopyTimeToLive() bool { - return obj.obj.CopyTimeToLive != nil -} - -// TBD -// SetCopyTimeToLive sets the bool value in the BgpV6SegmentRouting object -func (obj *bgpV6SegmentRouting) SetCopyTimeToLive(value bool) BgpV6SegmentRouting { - - obj.obj.CopyTimeToLive = &value - return obj -} - -// TBD -// TimeToLive returns a uint32 -func (obj *bgpV6SegmentRouting) TimeToLive() uint32 { - - return *obj.obj.TimeToLive - -} - -// TBD -// TimeToLive returns a uint32 -func (obj *bgpV6SegmentRouting) HasTimeToLive() bool { - return obj.obj.TimeToLive != nil -} - -// TBD -// SetTimeToLive sets the uint32 value in the BgpV6SegmentRouting object -func (obj *bgpV6SegmentRouting) SetTimeToLive(value uint32) BgpV6SegmentRouting { - - obj.obj.TimeToLive = &value - return obj + // Name returns string, set in PatternFlowTcpSrcPortMetricTag. + Name() string + // SetName assigns string provided by user to PatternFlowTcpSrcPortMetricTag + SetName(value string) PatternFlowTcpSrcPortMetricTag + // Offset returns uint32, set in PatternFlowTcpSrcPortMetricTag. + Offset() uint32 + // SetOffset assigns uint32 provided by user to PatternFlowTcpSrcPortMetricTag + SetOffset(value uint32) PatternFlowTcpSrcPortMetricTag + // HasOffset checks if Offset has been set in PatternFlowTcpSrcPortMetricTag + HasOffset() bool + // Length returns uint32, set in PatternFlowTcpSrcPortMetricTag. + Length() uint32 + // SetLength assigns uint32 provided by user to PatternFlowTcpSrcPortMetricTag + SetLength(value uint32) PatternFlowTcpSrcPortMetricTag + // HasLength checks if Length has been set in PatternFlowTcpSrcPortMetricTag + HasLength() bool } -// TBD -// MaxSidsPerSrh returns a uint32 -func (obj *bgpV6SegmentRouting) MaxSidsPerSrh() uint32 { - - return *obj.obj.MaxSidsPerSrh +// Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field +// Name returns a string +func (obj *patternFlowTcpSrcPortMetricTag) Name() string { -} + return *obj.obj.Name -// TBD -// MaxSidsPerSrh returns a uint32 -func (obj *bgpV6SegmentRouting) HasMaxSidsPerSrh() bool { - return obj.obj.MaxSidsPerSrh != nil } -// TBD -// SetMaxSidsPerSrh sets the uint32 value in the BgpV6SegmentRouting object -func (obj *bgpV6SegmentRouting) SetMaxSidsPerSrh(value uint32) BgpV6SegmentRouting { +// Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field +// SetName sets the string value in the PatternFlowTcpSrcPortMetricTag object +func (obj *patternFlowTcpSrcPortMetricTag) SetName(value string) PatternFlowTcpSrcPortMetricTag { - obj.obj.MaxSidsPerSrh = &value + obj.obj.Name = &value return obj } -// TBD -// AutoGenerateSegmentLeftValue returns a bool -func (obj *bgpV6SegmentRouting) AutoGenerateSegmentLeftValue() bool { +// Offset in bits relative to start of corresponding header field +// Offset returns a uint32 +func (obj *patternFlowTcpSrcPortMetricTag) Offset() uint32 { - return *obj.obj.AutoGenerateSegmentLeftValue + return *obj.obj.Offset } -// TBD -// AutoGenerateSegmentLeftValue returns a bool -func (obj *bgpV6SegmentRouting) HasAutoGenerateSegmentLeftValue() bool { - return obj.obj.AutoGenerateSegmentLeftValue != nil +// Offset in bits relative to start of corresponding header field +// Offset returns a uint32 +func (obj *patternFlowTcpSrcPortMetricTag) HasOffset() bool { + return obj.obj.Offset != nil } -// TBD -// SetAutoGenerateSegmentLeftValue sets the bool value in the BgpV6SegmentRouting object -func (obj *bgpV6SegmentRouting) SetAutoGenerateSegmentLeftValue(value bool) BgpV6SegmentRouting { +// Offset in bits relative to start of corresponding header field +// SetOffset sets the uint32 value in the PatternFlowTcpSrcPortMetricTag object +func (obj *patternFlowTcpSrcPortMetricTag) SetOffset(value uint32) PatternFlowTcpSrcPortMetricTag { - obj.obj.AutoGenerateSegmentLeftValue = &value + obj.obj.Offset = &value return obj } -// TBD -// SegmentLeftValue returns a uint32 -func (obj *bgpV6SegmentRouting) SegmentLeftValue() uint32 { +// Number of bits to track for metrics starting from configured offset of corresponding header field +// Length returns a uint32 +func (obj *patternFlowTcpSrcPortMetricTag) Length() uint32 { - return *obj.obj.SegmentLeftValue + return *obj.obj.Length } -// TBD -// SegmentLeftValue returns a uint32 -func (obj *bgpV6SegmentRouting) HasSegmentLeftValue() bool { - return obj.obj.SegmentLeftValue != nil +// Number of bits to track for metrics starting from configured offset of corresponding header field +// Length returns a uint32 +func (obj *patternFlowTcpSrcPortMetricTag) HasLength() bool { + return obj.obj.Length != nil } -// TBD -// SetSegmentLeftValue sets the uint32 value in the BgpV6SegmentRouting object -func (obj *bgpV6SegmentRouting) SetSegmentLeftValue(value uint32) BgpV6SegmentRouting { +// Number of bits to track for metrics starting from configured offset of corresponding header field +// SetLength sets the uint32 value in the PatternFlowTcpSrcPortMetricTag object +func (obj *patternFlowTcpSrcPortMetricTag) SetLength(value uint32) PatternFlowTcpSrcPortMetricTag { - obj.obj.SegmentLeftValue = &value + obj.obj.Length = &value return obj } -// TBD -// AdvertiseSrTePolicy returns a bool -func (obj *bgpV6SegmentRouting) AdvertiseSrTePolicy() bool { - - return *obj.obj.AdvertiseSrTePolicy - -} +func (obj *patternFlowTcpSrcPortMetricTag) validateObj(vObj *validation, set_default bool) { + if set_default { + obj.setDefault() + } -// TBD -// AdvertiseSrTePolicy returns a bool -func (obj *bgpV6SegmentRouting) HasAdvertiseSrTePolicy() bool { - return obj.obj.AdvertiseSrTePolicy != nil -} + // Name is required + if obj.obj.Name == nil { + vObj.validationErrors = append(vObj.validationErrors, "Name is required field on interface PatternFlowTcpSrcPortMetricTag") + } -// TBD -// SetAdvertiseSrTePolicy sets the bool value in the BgpV6SegmentRouting object -func (obj *bgpV6SegmentRouting) SetAdvertiseSrTePolicy(value bool) BgpV6SegmentRouting { + if obj.obj.Offset != nil { - obj.obj.AdvertiseSrTePolicy = &value - return obj -} + if *obj.obj.Offset > 15 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("0 <= PatternFlowTcpSrcPortMetricTag.Offset <= 15 but Got %d", *obj.obj.Offset)) + } -func (obj *bgpV6SegmentRouting) validateObj(vObj *validation, set_default bool) { - if set_default { - obj.setDefault() } - if obj.obj.MaxSidsPerSrh != nil { + if obj.obj.Length != nil { - if *obj.obj.MaxSidsPerSrh > 255 { + if *obj.obj.Length < 1 || *obj.obj.Length > 16 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("0 <= BgpV6SegmentRouting.MaxSidsPerSrh <= 255 but Got %d", *obj.obj.MaxSidsPerSrh)) + fmt.Sprintf("1 <= PatternFlowTcpSrcPortMetricTag.Length <= 16 but Got %d", *obj.obj.Length)) } } } -func (obj *bgpV6SegmentRouting) setDefault() { - if obj.obj.IngressSupportsVpn == nil { - obj.SetIngressSupportsVpn(false) - } - if obj.obj.ReducedEncapsulation == nil { - obj.SetReducedEncapsulation(false) - } - if obj.obj.CopyTimeToLive == nil { - obj.SetCopyTimeToLive(false) - } - if obj.obj.TimeToLive == nil { - obj.SetTimeToLive(0) - } - if obj.obj.MaxSidsPerSrh == nil { - obj.SetMaxSidsPerSrh(0) - } - if obj.obj.AutoGenerateSegmentLeftValue == nil { - obj.SetAutoGenerateSegmentLeftValue(false) - } - if obj.obj.SegmentLeftValue == nil { - obj.SetSegmentLeftValue(0) +func (obj *patternFlowTcpSrcPortMetricTag) setDefault() { + if obj.obj.Offset == nil { + obj.SetOffset(0) } - if obj.obj.AdvertiseSrTePolicy == nil { - obj.SetAdvertiseSrTePolicy(false) + if obj.obj.Length == nil { + obj.SetLength(16) } } -// ***** BgpV6EthernetSegment ***** -type bgpV6EthernetSegment struct { +// ***** PatternFlowTcpDstPortCounter ***** +type patternFlowTcpDstPortCounter struct { validation - obj *otg.BgpV6EthernetSegment - dfElectionHolder BgpEthernetSegmentDfElection - evisHolder BgpV6EthernetSegmentBgpV6EvpnEvisIter - advancedHolder BgpRouteAdvanced - communitiesHolder BgpV6EthernetSegmentBgpCommunityIter - extCommunitiesHolder BgpV6EthernetSegmentBgpExtCommunityIter - asPathHolder BgpAsPath + obj *otg.PatternFlowTcpDstPortCounter } -func NewBgpV6EthernetSegment() BgpV6EthernetSegment { - obj := bgpV6EthernetSegment{obj: &otg.BgpV6EthernetSegment{}} +func NewPatternFlowTcpDstPortCounter() PatternFlowTcpDstPortCounter { + obj := patternFlowTcpDstPortCounter{obj: &otg.PatternFlowTcpDstPortCounter{}} obj.setDefault() return &obj } -func (obj *bgpV6EthernetSegment) Msg() *otg.BgpV6EthernetSegment { +func (obj *patternFlowTcpDstPortCounter) Msg() *otg.PatternFlowTcpDstPortCounter { return obj.obj } -func (obj *bgpV6EthernetSegment) SetMsg(msg *otg.BgpV6EthernetSegment) BgpV6EthernetSegment { - obj.setNil() +func (obj *patternFlowTcpDstPortCounter) SetMsg(msg *otg.PatternFlowTcpDstPortCounter) PatternFlowTcpDstPortCounter { + proto.Merge(obj.obj, msg) return obj } -func (obj *bgpV6EthernetSegment) ToProto() (*otg.BgpV6EthernetSegment, error) { +func (obj *patternFlowTcpDstPortCounter) ToProto() (*otg.PatternFlowTcpDstPortCounter, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -180506,7 +224273,7 @@ func (obj *bgpV6EthernetSegment) ToProto() (*otg.BgpV6EthernetSegment, error) { return obj.Msg(), nil } -func (obj *bgpV6EthernetSegment) FromProto(msg *otg.BgpV6EthernetSegment) (BgpV6EthernetSegment, error) { +func (obj *patternFlowTcpDstPortCounter) FromProto(msg *otg.PatternFlowTcpDstPortCounter) (PatternFlowTcpDstPortCounter, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -180515,7 +224282,7 @@ func (obj *bgpV6EthernetSegment) FromProto(msg *otg.BgpV6EthernetSegment) (BgpV6 return newObj, nil } -func (obj *bgpV6EthernetSegment) ToPbText() (string, error) { +func (obj *patternFlowTcpDstPortCounter) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -180527,12 +224294,12 @@ func (obj *bgpV6EthernetSegment) ToPbText() (string, error) { return string(protoMarshal), nil } -func (obj *bgpV6EthernetSegment) FromPbText(value string) error { +func (obj *patternFlowTcpDstPortCounter) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj } - obj.setNil() + vErr := obj.validateToAndFrom() if vErr != nil { return vErr @@ -180540,7 +224307,7 @@ func (obj *bgpV6EthernetSegment) FromPbText(value string) error { return retObj } -func (obj *bgpV6EthernetSegment) ToYaml() (string, error) { +func (obj *patternFlowTcpDstPortCounter) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -180561,7 +224328,7 @@ func (obj *bgpV6EthernetSegment) ToYaml() (string, error) { return string(data), nil } -func (obj *bgpV6EthernetSegment) FromYaml(value string) error { +func (obj *patternFlowTcpDstPortCounter) FromYaml(value string) error { if value == "" { value = "{}" } @@ -180578,7 +224345,7 @@ func (obj *bgpV6EthernetSegment) FromYaml(value string) error { return fmt.Errorf("unmarshal error %s", strings.Replace( uError.Error(), "\u00a0", " ", -1)[7:]) } - obj.setNil() + vErr := obj.validateToAndFrom() if vErr != nil { return vErr @@ -180586,7 +224353,7 @@ func (obj *bgpV6EthernetSegment) FromYaml(value string) error { return nil } -func (obj *bgpV6EthernetSegment) ToJson() (string, error) { +func (obj *patternFlowTcpDstPortCounter) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -180604,7 +224371,7 @@ func (obj *bgpV6EthernetSegment) ToJson() (string, error) { return string(data), nil } -func (obj *bgpV6EthernetSegment) FromJson(value string) error { +func (obj *patternFlowTcpDstPortCounter) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -180617,7 +224384,7 @@ func (obj *bgpV6EthernetSegment) FromJson(value string) error { return fmt.Errorf("unmarshal error %s", strings.Replace( uError.Error(), "\u00a0", " ", -1)[7:]) } - obj.setNil() + err := obj.validateToAndFrom() if err != nil { return err @@ -180625,19 +224392,19 @@ func (obj *bgpV6EthernetSegment) FromJson(value string) error { return nil } -func (obj *bgpV6EthernetSegment) validateToAndFrom() error { +func (obj *patternFlowTcpDstPortCounter) validateToAndFrom() error { // emptyVars() obj.validateObj(&obj.validation, true) return obj.validationResult() } -func (obj *bgpV6EthernetSegment) Validate() error { +func (obj *patternFlowTcpDstPortCounter) Validate() error { // emptyVars() obj.validateObj(&obj.validation, false) return obj.validationResult() } -func (obj *bgpV6EthernetSegment) String() string { +func (obj *patternFlowTcpDstPortCounter) String() string { str, err := obj.ToYaml() if err != nil { return err.Error() @@ -180645,12 +224412,12 @@ func (obj *bgpV6EthernetSegment) String() string { return str } -func (obj *bgpV6EthernetSegment) Clone() (BgpV6EthernetSegment, error) { +func (obj *patternFlowTcpDstPortCounter) Clone() (PatternFlowTcpDstPortCounter, error) { vErr := obj.Validate() if vErr != nil { return nil, vErr } - newObj := NewBgpV6EthernetSegment() + newObj := NewPatternFlowTcpDstPortCounter() data, err := proto.Marshal(obj.Msg()) if err != nil { return nil, err @@ -180662,649 +224429,539 @@ func (obj *bgpV6EthernetSegment) Clone() (BgpV6EthernetSegment, error) { return newObj, nil } -func (obj *bgpV6EthernetSegment) setNil() { - obj.dfElectionHolder = nil - obj.evisHolder = nil - obj.advancedHolder = nil - obj.communitiesHolder = nil - obj.extCommunitiesHolder = nil - obj.asPathHolder = nil - obj.validationErrors = nil - obj.warnings = nil - obj.constraints = make(map[string]map[string]Constraints) -} - -// BgpV6EthernetSegment is configuration for BGP Ethernet Segment ranges. Advertises following routes - -// -// Type 4 - Ethernet Segment Route -type BgpV6EthernetSegment interface { +// PatternFlowTcpDstPortCounter is integer counter pattern +type PatternFlowTcpDstPortCounter interface { Validation - // Msg marshals BgpV6EthernetSegment to protobuf object *otg.BgpV6EthernetSegment + // Msg marshals PatternFlowTcpDstPortCounter to protobuf object *otg.PatternFlowTcpDstPortCounter // and doesn't set defaults - Msg() *otg.BgpV6EthernetSegment - // SetMsg unmarshals BgpV6EthernetSegment from protobuf object *otg.BgpV6EthernetSegment + Msg() *otg.PatternFlowTcpDstPortCounter + // SetMsg unmarshals PatternFlowTcpDstPortCounter from protobuf object *otg.PatternFlowTcpDstPortCounter // and doesn't set defaults - SetMsg(*otg.BgpV6EthernetSegment) BgpV6EthernetSegment - // ToProto marshals BgpV6EthernetSegment to protobuf object *otg.BgpV6EthernetSegment - ToProto() (*otg.BgpV6EthernetSegment, error) - // ToPbText marshals BgpV6EthernetSegment to protobuf text + SetMsg(*otg.PatternFlowTcpDstPortCounter) PatternFlowTcpDstPortCounter + // ToProto marshals PatternFlowTcpDstPortCounter to protobuf object *otg.PatternFlowTcpDstPortCounter + ToProto() (*otg.PatternFlowTcpDstPortCounter, error) + // ToPbText marshals PatternFlowTcpDstPortCounter to protobuf text ToPbText() (string, error) - // ToYaml marshals BgpV6EthernetSegment to YAML text + // ToYaml marshals PatternFlowTcpDstPortCounter to YAML text ToYaml() (string, error) - // ToJson marshals BgpV6EthernetSegment to JSON text + // ToJson marshals PatternFlowTcpDstPortCounter to JSON text ToJson() (string, error) - // FromProto unmarshals BgpV6EthernetSegment from protobuf object *otg.BgpV6EthernetSegment - FromProto(msg *otg.BgpV6EthernetSegment) (BgpV6EthernetSegment, error) - // FromPbText unmarshals BgpV6EthernetSegment from protobuf text + // FromProto unmarshals PatternFlowTcpDstPortCounter from protobuf object *otg.PatternFlowTcpDstPortCounter + FromProto(msg *otg.PatternFlowTcpDstPortCounter) (PatternFlowTcpDstPortCounter, error) + // FromPbText unmarshals PatternFlowTcpDstPortCounter from protobuf text FromPbText(value string) error - // FromYaml unmarshals BgpV6EthernetSegment from YAML text + // FromYaml unmarshals PatternFlowTcpDstPortCounter from YAML text FromYaml(value string) error - // FromJson unmarshals BgpV6EthernetSegment from JSON text + // FromJson unmarshals PatternFlowTcpDstPortCounter from JSON text FromJson(value string) error - // Validate validates BgpV6EthernetSegment + // Validate validates PatternFlowTcpDstPortCounter Validate() error // A stringer function String() string // Clones the object - Clone() (BgpV6EthernetSegment, error) + Clone() (PatternFlowTcpDstPortCounter, error) validateToAndFrom() error validateObj(vObj *validation, set_default bool) setDefault() - // DfElection returns BgpEthernetSegmentDfElection, set in BgpV6EthernetSegment. - // BgpEthernetSegmentDfElection is configuration for Designated Forwarder (DF) election among the Provider Edge (PE) routers on the same Ethernet Segment. - DfElection() BgpEthernetSegmentDfElection - // SetDfElection assigns BgpEthernetSegmentDfElection provided by user to BgpV6EthernetSegment. - // BgpEthernetSegmentDfElection is configuration for Designated Forwarder (DF) election among the Provider Edge (PE) routers on the same Ethernet Segment. - SetDfElection(value BgpEthernetSegmentDfElection) BgpV6EthernetSegment - // HasDfElection checks if DfElection has been set in BgpV6EthernetSegment - HasDfElection() bool - // Evis returns BgpV6EthernetSegmentBgpV6EvpnEvisIterIter, set in BgpV6EthernetSegment - Evis() BgpV6EthernetSegmentBgpV6EvpnEvisIter - // Esi returns string, set in BgpV6EthernetSegment. - Esi() string - // SetEsi assigns string provided by user to BgpV6EthernetSegment - SetEsi(value string) BgpV6EthernetSegment - // HasEsi checks if Esi has been set in BgpV6EthernetSegment - HasEsi() bool - // ActiveMode returns BgpV6EthernetSegmentActiveModeEnum, set in BgpV6EthernetSegment - ActiveMode() BgpV6EthernetSegmentActiveModeEnum - // SetActiveMode assigns BgpV6EthernetSegmentActiveModeEnum provided by user to BgpV6EthernetSegment - SetActiveMode(value BgpV6EthernetSegmentActiveModeEnum) BgpV6EthernetSegment - // HasActiveMode checks if ActiveMode has been set in BgpV6EthernetSegment - HasActiveMode() bool - // EsiLabel returns uint32, set in BgpV6EthernetSegment. - EsiLabel() uint32 - // SetEsiLabel assigns uint32 provided by user to BgpV6EthernetSegment - SetEsiLabel(value uint32) BgpV6EthernetSegment - // HasEsiLabel checks if EsiLabel has been set in BgpV6EthernetSegment - HasEsiLabel() bool - // Advanced returns BgpRouteAdvanced, set in BgpV6EthernetSegment. - // BgpRouteAdvanced is configuration for advanced BGP route range settings. - Advanced() BgpRouteAdvanced - // SetAdvanced assigns BgpRouteAdvanced provided by user to BgpV6EthernetSegment. - // BgpRouteAdvanced is configuration for advanced BGP route range settings. - SetAdvanced(value BgpRouteAdvanced) BgpV6EthernetSegment - // HasAdvanced checks if Advanced has been set in BgpV6EthernetSegment - HasAdvanced() bool - // Communities returns BgpV6EthernetSegmentBgpCommunityIterIter, set in BgpV6EthernetSegment - Communities() BgpV6EthernetSegmentBgpCommunityIter - // ExtCommunities returns BgpV6EthernetSegmentBgpExtCommunityIterIter, set in BgpV6EthernetSegment - ExtCommunities() BgpV6EthernetSegmentBgpExtCommunityIter - // AsPath returns BgpAsPath, set in BgpV6EthernetSegment. - // BgpAsPath is this attribute identifies the autonomous systems through which routing information carried in this UPDATE message has passed. This contains the configuration of how to include the Local AS in the AS path attribute of the MP REACH NLRI. It also contains optional configuration of additional AS Path Segments that can be included in the AS Path attribute. The AS Path consists of a Set or Sequence of Autonomous Systems (AS) numbers that a routing information passes through to reach the destination. - AsPath() BgpAsPath - // SetAsPath assigns BgpAsPath provided by user to BgpV6EthernetSegment. - // BgpAsPath is this attribute identifies the autonomous systems through which routing information carried in this UPDATE message has passed. This contains the configuration of how to include the Local AS in the AS path attribute of the MP REACH NLRI. It also contains optional configuration of additional AS Path Segments that can be included in the AS Path attribute. The AS Path consists of a Set or Sequence of Autonomous Systems (AS) numbers that a routing information passes through to reach the destination. - SetAsPath(value BgpAsPath) BgpV6EthernetSegment - // HasAsPath checks if AsPath has been set in BgpV6EthernetSegment - HasAsPath() bool - setNil() -} - -// Designated Forwarder (DF) election configuration. -// DfElection returns a BgpEthernetSegmentDfElection -func (obj *bgpV6EthernetSegment) DfElection() BgpEthernetSegmentDfElection { - if obj.obj.DfElection == nil { - obj.obj.DfElection = NewBgpEthernetSegmentDfElection().Msg() - } - if obj.dfElectionHolder == nil { - obj.dfElectionHolder = &bgpEthernetSegmentDfElection{obj: obj.obj.DfElection} - } - return obj.dfElectionHolder -} - -// Designated Forwarder (DF) election configuration. -// DfElection returns a BgpEthernetSegmentDfElection -func (obj *bgpV6EthernetSegment) HasDfElection() bool { - return obj.obj.DfElection != nil -} - -// Designated Forwarder (DF) election configuration. -// SetDfElection sets the BgpEthernetSegmentDfElection value in the BgpV6EthernetSegment object -func (obj *bgpV6EthernetSegment) SetDfElection(value BgpEthernetSegmentDfElection) BgpV6EthernetSegment { - - obj.dfElectionHolder = nil - obj.obj.DfElection = value.Msg() - - return obj -} - -// This contains the list of EVIs. -// Evis returns a []BgpV6EvpnEvis -func (obj *bgpV6EthernetSegment) Evis() BgpV6EthernetSegmentBgpV6EvpnEvisIter { - if len(obj.obj.Evis) == 0 { - obj.obj.Evis = []*otg.BgpV6EvpnEvis{} - } - if obj.evisHolder == nil { - obj.evisHolder = newBgpV6EthernetSegmentBgpV6EvpnEvisIter(&obj.obj.Evis).setMsg(obj) - } - return obj.evisHolder -} - -type bgpV6EthernetSegmentBgpV6EvpnEvisIter struct { - obj *bgpV6EthernetSegment - bgpV6EvpnEvisSlice []BgpV6EvpnEvis - fieldPtr *[]*otg.BgpV6EvpnEvis -} - -func newBgpV6EthernetSegmentBgpV6EvpnEvisIter(ptr *[]*otg.BgpV6EvpnEvis) BgpV6EthernetSegmentBgpV6EvpnEvisIter { - return &bgpV6EthernetSegmentBgpV6EvpnEvisIter{fieldPtr: ptr} + // Start returns uint32, set in PatternFlowTcpDstPortCounter. + Start() uint32 + // SetStart assigns uint32 provided by user to PatternFlowTcpDstPortCounter + SetStart(value uint32) PatternFlowTcpDstPortCounter + // HasStart checks if Start has been set in PatternFlowTcpDstPortCounter + HasStart() bool + // Step returns uint32, set in PatternFlowTcpDstPortCounter. + Step() uint32 + // SetStep assigns uint32 provided by user to PatternFlowTcpDstPortCounter + SetStep(value uint32) PatternFlowTcpDstPortCounter + // HasStep checks if Step has been set in PatternFlowTcpDstPortCounter + HasStep() bool + // Count returns uint32, set in PatternFlowTcpDstPortCounter. + Count() uint32 + // SetCount assigns uint32 provided by user to PatternFlowTcpDstPortCounter + SetCount(value uint32) PatternFlowTcpDstPortCounter + // HasCount checks if Count has been set in PatternFlowTcpDstPortCounter + HasCount() bool } -type BgpV6EthernetSegmentBgpV6EvpnEvisIter interface { - setMsg(*bgpV6EthernetSegment) BgpV6EthernetSegmentBgpV6EvpnEvisIter - Items() []BgpV6EvpnEvis - Add() BgpV6EvpnEvis - Append(items ...BgpV6EvpnEvis) BgpV6EthernetSegmentBgpV6EvpnEvisIter - Set(index int, newObj BgpV6EvpnEvis) BgpV6EthernetSegmentBgpV6EvpnEvisIter - Clear() BgpV6EthernetSegmentBgpV6EvpnEvisIter - clearHolderSlice() BgpV6EthernetSegmentBgpV6EvpnEvisIter - appendHolderSlice(item BgpV6EvpnEvis) BgpV6EthernetSegmentBgpV6EvpnEvisIter -} +// description is TBD +// Start returns a uint32 +func (obj *patternFlowTcpDstPortCounter) Start() uint32 { -func (obj *bgpV6EthernetSegmentBgpV6EvpnEvisIter) setMsg(msg *bgpV6EthernetSegment) BgpV6EthernetSegmentBgpV6EvpnEvisIter { - obj.clearHolderSlice() - for _, val := range *obj.fieldPtr { - obj.appendHolderSlice(&bgpV6EvpnEvis{obj: val}) - } - obj.obj = msg - return obj -} + return *obj.obj.Start -func (obj *bgpV6EthernetSegmentBgpV6EvpnEvisIter) Items() []BgpV6EvpnEvis { - return obj.bgpV6EvpnEvisSlice } -func (obj *bgpV6EthernetSegmentBgpV6EvpnEvisIter) Add() BgpV6EvpnEvis { - newObj := &otg.BgpV6EvpnEvis{} - *obj.fieldPtr = append(*obj.fieldPtr, newObj) - newLibObj := &bgpV6EvpnEvis{obj: newObj} - newLibObj.setDefault() - obj.bgpV6EvpnEvisSlice = append(obj.bgpV6EvpnEvisSlice, newLibObj) - return newLibObj +// description is TBD +// Start returns a uint32 +func (obj *patternFlowTcpDstPortCounter) HasStart() bool { + return obj.obj.Start != nil } -func (obj *bgpV6EthernetSegmentBgpV6EvpnEvisIter) Append(items ...BgpV6EvpnEvis) BgpV6EthernetSegmentBgpV6EvpnEvisIter { - for _, item := range items { - newObj := item.Msg() - *obj.fieldPtr = append(*obj.fieldPtr, newObj) - obj.bgpV6EvpnEvisSlice = append(obj.bgpV6EvpnEvisSlice, item) - } - return obj -} +// description is TBD +// SetStart sets the uint32 value in the PatternFlowTcpDstPortCounter object +func (obj *patternFlowTcpDstPortCounter) SetStart(value uint32) PatternFlowTcpDstPortCounter { -func (obj *bgpV6EthernetSegmentBgpV6EvpnEvisIter) Set(index int, newObj BgpV6EvpnEvis) BgpV6EthernetSegmentBgpV6EvpnEvisIter { - (*obj.fieldPtr)[index] = newObj.Msg() - obj.bgpV6EvpnEvisSlice[index] = newObj - return obj -} -func (obj *bgpV6EthernetSegmentBgpV6EvpnEvisIter) Clear() BgpV6EthernetSegmentBgpV6EvpnEvisIter { - if len(*obj.fieldPtr) > 0 { - *obj.fieldPtr = []*otg.BgpV6EvpnEvis{} - obj.bgpV6EvpnEvisSlice = []BgpV6EvpnEvis{} - } - return obj -} -func (obj *bgpV6EthernetSegmentBgpV6EvpnEvisIter) clearHolderSlice() BgpV6EthernetSegmentBgpV6EvpnEvisIter { - if len(obj.bgpV6EvpnEvisSlice) > 0 { - obj.bgpV6EvpnEvisSlice = []BgpV6EvpnEvis{} - } - return obj -} -func (obj *bgpV6EthernetSegmentBgpV6EvpnEvisIter) appendHolderSlice(item BgpV6EvpnEvis) BgpV6EthernetSegmentBgpV6EvpnEvisIter { - obj.bgpV6EvpnEvisSlice = append(obj.bgpV6EvpnEvisSlice, item) + obj.obj.Start = &value return obj } -// 10-octet Ethernet Segment Identifier (ESI) Example - For multi-home scenario nonZero ESI is '10000000000000000000' . -// Esi returns a string -func (obj *bgpV6EthernetSegment) Esi() string { +// description is TBD +// Step returns a uint32 +func (obj *patternFlowTcpDstPortCounter) Step() uint32 { - return *obj.obj.Esi + return *obj.obj.Step } -// 10-octet Ethernet Segment Identifier (ESI) Example - For multi-home scenario nonZero ESI is '10000000000000000000' . -// Esi returns a string -func (obj *bgpV6EthernetSegment) HasEsi() bool { - return obj.obj.Esi != nil +// description is TBD +// Step returns a uint32 +func (obj *patternFlowTcpDstPortCounter) HasStep() bool { + return obj.obj.Step != nil } -// 10-octet Ethernet Segment Identifier (ESI) Example - For multi-home scenario nonZero ESI is '10000000000000000000' . -// SetEsi sets the string value in the BgpV6EthernetSegment object -func (obj *bgpV6EthernetSegment) SetEsi(value string) BgpV6EthernetSegment { +// description is TBD +// SetStep sets the uint32 value in the PatternFlowTcpDstPortCounter object +func (obj *patternFlowTcpDstPortCounter) SetStep(value uint32) PatternFlowTcpDstPortCounter { - obj.obj.Esi = &value + obj.obj.Step = &value return obj } -type BgpV6EthernetSegmentActiveModeEnum string +// description is TBD +// Count returns a uint32 +func (obj *patternFlowTcpDstPortCounter) Count() uint32 { -// Enum of ActiveMode on BgpV6EthernetSegment -var BgpV6EthernetSegmentActiveMode = struct { - SINGLE_ACTIVE BgpV6EthernetSegmentActiveModeEnum - ALL_ACTIVE BgpV6EthernetSegmentActiveModeEnum -}{ - SINGLE_ACTIVE: BgpV6EthernetSegmentActiveModeEnum("single_active"), - ALL_ACTIVE: BgpV6EthernetSegmentActiveModeEnum("all_active"), -} + return *obj.obj.Count -func (obj *bgpV6EthernetSegment) ActiveMode() BgpV6EthernetSegmentActiveModeEnum { - return BgpV6EthernetSegmentActiveModeEnum(obj.obj.ActiveMode.Enum().String()) } -// Single Active or All Active mode Redundancy mode selection for Multi-home. -// ActiveMode returns a string -func (obj *bgpV6EthernetSegment) HasActiveMode() bool { - return obj.obj.ActiveMode != nil +// description is TBD +// Count returns a uint32 +func (obj *patternFlowTcpDstPortCounter) HasCount() bool { + return obj.obj.Count != nil } -func (obj *bgpV6EthernetSegment) SetActiveMode(value BgpV6EthernetSegmentActiveModeEnum) BgpV6EthernetSegment { - intValue, ok := otg.BgpV6EthernetSegment_ActiveMode_Enum_value[string(value)] - if !ok { - obj.validationErrors = append(obj.validationErrors, fmt.Sprintf( - "%s is not a valid choice on BgpV6EthernetSegmentActiveModeEnum", string(value))) - return obj - } - enumValue := otg.BgpV6EthernetSegment_ActiveMode_Enum(intValue) - obj.obj.ActiveMode = &enumValue +// description is TBD +// SetCount sets the uint32 value in the PatternFlowTcpDstPortCounter object +func (obj *patternFlowTcpDstPortCounter) SetCount(value uint32) PatternFlowTcpDstPortCounter { + obj.obj.Count = &value return obj } -// The label value to be advertised as ESI Label in ESI Label Extended Community. This is included in Ethernet Auto-discovery per ES Routes advertised by a router. -// EsiLabel returns a uint32 -func (obj *bgpV6EthernetSegment) EsiLabel() uint32 { - - return *obj.obj.EsiLabel +func (obj *patternFlowTcpDstPortCounter) validateObj(vObj *validation, set_default bool) { + if set_default { + obj.setDefault() + } -} + if obj.obj.Start != nil { -// The label value to be advertised as ESI Label in ESI Label Extended Community. This is included in Ethernet Auto-discovery per ES Routes advertised by a router. -// EsiLabel returns a uint32 -func (obj *bgpV6EthernetSegment) HasEsiLabel() bool { - return obj.obj.EsiLabel != nil -} + if *obj.obj.Start > 65535 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("0 <= PatternFlowTcpDstPortCounter.Start <= 65535 but Got %d", *obj.obj.Start)) + } -// The label value to be advertised as ESI Label in ESI Label Extended Community. This is included in Ethernet Auto-discovery per ES Routes advertised by a router. -// SetEsiLabel sets the uint32 value in the BgpV6EthernetSegment object -func (obj *bgpV6EthernetSegment) SetEsiLabel(value uint32) BgpV6EthernetSegment { + } - obj.obj.EsiLabel = &value - return obj -} + if obj.obj.Step != nil { -// description is TBD -// Advanced returns a BgpRouteAdvanced -func (obj *bgpV6EthernetSegment) Advanced() BgpRouteAdvanced { - if obj.obj.Advanced == nil { - obj.obj.Advanced = NewBgpRouteAdvanced().Msg() - } - if obj.advancedHolder == nil { - obj.advancedHolder = &bgpRouteAdvanced{obj: obj.obj.Advanced} - } - return obj.advancedHolder -} + if *obj.obj.Step > 65535 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("0 <= PatternFlowTcpDstPortCounter.Step <= 65535 but Got %d", *obj.obj.Step)) + } -// description is TBD -// Advanced returns a BgpRouteAdvanced -func (obj *bgpV6EthernetSegment) HasAdvanced() bool { - return obj.obj.Advanced != nil -} + } -// description is TBD -// SetAdvanced sets the BgpRouteAdvanced value in the BgpV6EthernetSegment object -func (obj *bgpV6EthernetSegment) SetAdvanced(value BgpRouteAdvanced) BgpV6EthernetSegment { + if obj.obj.Count != nil { - obj.advancedHolder = nil - obj.obj.Advanced = value.Msg() + if *obj.obj.Count > 65535 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("0 <= PatternFlowTcpDstPortCounter.Count <= 65535 but Got %d", *obj.obj.Count)) + } + + } - return obj } -// Optional community settings. -// Communities returns a []BgpCommunity -func (obj *bgpV6EthernetSegment) Communities() BgpV6EthernetSegmentBgpCommunityIter { - if len(obj.obj.Communities) == 0 { - obj.obj.Communities = []*otg.BgpCommunity{} +func (obj *patternFlowTcpDstPortCounter) setDefault() { + if obj.obj.Start == nil { + obj.SetStart(0) } - if obj.communitiesHolder == nil { - obj.communitiesHolder = newBgpV6EthernetSegmentBgpCommunityIter(&obj.obj.Communities).setMsg(obj) + if obj.obj.Step == nil { + obj.SetStep(1) } - return obj.communitiesHolder + if obj.obj.Count == nil { + obj.SetCount(1) + } + } -type bgpV6EthernetSegmentBgpCommunityIter struct { - obj *bgpV6EthernetSegment - bgpCommunitySlice []BgpCommunity - fieldPtr *[]*otg.BgpCommunity +// ***** PatternFlowTcpDstPortMetricTag ***** +type patternFlowTcpDstPortMetricTag struct { + validation + obj *otg.PatternFlowTcpDstPortMetricTag } -func newBgpV6EthernetSegmentBgpCommunityIter(ptr *[]*otg.BgpCommunity) BgpV6EthernetSegmentBgpCommunityIter { - return &bgpV6EthernetSegmentBgpCommunityIter{fieldPtr: ptr} +func NewPatternFlowTcpDstPortMetricTag() PatternFlowTcpDstPortMetricTag { + obj := patternFlowTcpDstPortMetricTag{obj: &otg.PatternFlowTcpDstPortMetricTag{}} + obj.setDefault() + return &obj } -type BgpV6EthernetSegmentBgpCommunityIter interface { - setMsg(*bgpV6EthernetSegment) BgpV6EthernetSegmentBgpCommunityIter - Items() []BgpCommunity - Add() BgpCommunity - Append(items ...BgpCommunity) BgpV6EthernetSegmentBgpCommunityIter - Set(index int, newObj BgpCommunity) BgpV6EthernetSegmentBgpCommunityIter - Clear() BgpV6EthernetSegmentBgpCommunityIter - clearHolderSlice() BgpV6EthernetSegmentBgpCommunityIter - appendHolderSlice(item BgpCommunity) BgpV6EthernetSegmentBgpCommunityIter +func (obj *patternFlowTcpDstPortMetricTag) Msg() *otg.PatternFlowTcpDstPortMetricTag { + return obj.obj } -func (obj *bgpV6EthernetSegmentBgpCommunityIter) setMsg(msg *bgpV6EthernetSegment) BgpV6EthernetSegmentBgpCommunityIter { - obj.clearHolderSlice() - for _, val := range *obj.fieldPtr { - obj.appendHolderSlice(&bgpCommunity{obj: val}) - } - obj.obj = msg +func (obj *patternFlowTcpDstPortMetricTag) SetMsg(msg *otg.PatternFlowTcpDstPortMetricTag) PatternFlowTcpDstPortMetricTag { + + proto.Merge(obj.obj, msg) return obj } -func (obj *bgpV6EthernetSegmentBgpCommunityIter) Items() []BgpCommunity { - return obj.bgpCommunitySlice +func (obj *patternFlowTcpDstPortMetricTag) ToProto() (*otg.PatternFlowTcpDstPortMetricTag, error) { + err := obj.validateToAndFrom() + if err != nil { + return nil, err + } + return obj.Msg(), nil } -func (obj *bgpV6EthernetSegmentBgpCommunityIter) Add() BgpCommunity { - newObj := &otg.BgpCommunity{} - *obj.fieldPtr = append(*obj.fieldPtr, newObj) - newLibObj := &bgpCommunity{obj: newObj} - newLibObj.setDefault() - obj.bgpCommunitySlice = append(obj.bgpCommunitySlice, newLibObj) - return newLibObj +func (obj *patternFlowTcpDstPortMetricTag) FromProto(msg *otg.PatternFlowTcpDstPortMetricTag) (PatternFlowTcpDstPortMetricTag, error) { + newObj := obj.SetMsg(msg) + err := newObj.validateToAndFrom() + if err != nil { + return nil, err + } + return newObj, nil } -func (obj *bgpV6EthernetSegmentBgpCommunityIter) Append(items ...BgpCommunity) BgpV6EthernetSegmentBgpCommunityIter { - for _, item := range items { - newObj := item.Msg() - *obj.fieldPtr = append(*obj.fieldPtr, newObj) - obj.bgpCommunitySlice = append(obj.bgpCommunitySlice, item) +func (obj *patternFlowTcpDstPortMetricTag) ToPbText() (string, error) { + vErr := obj.validateToAndFrom() + if vErr != nil { + return "", vErr } - return obj + protoMarshal, err := proto.Marshal(obj.Msg()) + if err != nil { + return "", err + } + return string(protoMarshal), nil } -func (obj *bgpV6EthernetSegmentBgpCommunityIter) Set(index int, newObj BgpCommunity) BgpV6EthernetSegmentBgpCommunityIter { - (*obj.fieldPtr)[index] = newObj.Msg() - obj.bgpCommunitySlice[index] = newObj - return obj -} -func (obj *bgpV6EthernetSegmentBgpCommunityIter) Clear() BgpV6EthernetSegmentBgpCommunityIter { - if len(*obj.fieldPtr) > 0 { - *obj.fieldPtr = []*otg.BgpCommunity{} - obj.bgpCommunitySlice = []BgpCommunity{} +func (obj *patternFlowTcpDstPortMetricTag) FromPbText(value string) error { + retObj := proto.Unmarshal([]byte(value), obj.Msg()) + if retObj != nil { + return retObj } - return obj -} -func (obj *bgpV6EthernetSegmentBgpCommunityIter) clearHolderSlice() BgpV6EthernetSegmentBgpCommunityIter { - if len(obj.bgpCommunitySlice) > 0 { - obj.bgpCommunitySlice = []BgpCommunity{} + + vErr := obj.validateToAndFrom() + if vErr != nil { + return vErr } - return obj -} -func (obj *bgpV6EthernetSegmentBgpCommunityIter) appendHolderSlice(item BgpCommunity) BgpV6EthernetSegmentBgpCommunityIter { - obj.bgpCommunitySlice = append(obj.bgpCommunitySlice, item) - return obj + return retObj } -// Optional Extended Community settings. The Extended Communities Attribute is a transitive optional BGP attribute, with the Type Code 16. Community and Extended Communities attributes are utilized to trigger routing decisions, such as acceptance, rejection, preference, or redistribution. An extended community is an 8-Bytes value. It is divided into two main parts. The first 2 Bytes of the community encode a type and sub-type fields and the last 6 Bytes carry a unique set of data in a format defined by the type and sub-type field. Extended communities provide a larger range for grouping or categorizing communities. When type is administrator_as_2octet or administrator_as_4octet, the valid sub types are route target and origin. The valid value for administrator_as_2octet and administrator_as_4octet type is either two byte AS followed by four byte local administrator id or four byte AS followed by two byte local administrator id. When type is administrator_ipv4_address the valid sub types are route target and origin. The valid value for administrator_ipv4_address is a four byte IPv4 address followed by a two byte local administrator id. When type is opaque, valid sub types are color and encapsulation. When sub type is color, first two bytes of the value field contain flags and last four bytes contains the value of the color. When sub type is encapsulation the first four bytes of value field are reserved and last two bytes carries the tunnel type from IANA's "ETHER TYPES" registry e.g IPv4 (protocol type = 0x0800), IPv6 (protocol type = 0x86dd), and MPLS (protocol type = 0x8847). When type is administrator_as_2octet_link_bandwidth the valid sub type is extended_bandwidth. The first two bytes of the value field contains the AS number and the last four bytes contains the bandwidth in IEEE floating point format. When type is evpn the valid subtype is mac_address. In the value field the low-order bit of the first byte(Flags) is defined as the "Sticky/static" flag and may be set to 1, indicating the MAC address is static and cannot move. The second byte is reserved and the last four bytes contain the sequence number which is used to ensure that PEs retain the correct MAC/IP Advertisement route when multiple updates occur for the same MAC address. -// ExtCommunities returns a []BgpExtCommunity -func (obj *bgpV6EthernetSegment) ExtCommunities() BgpV6EthernetSegmentBgpExtCommunityIter { - if len(obj.obj.ExtCommunities) == 0 { - obj.obj.ExtCommunities = []*otg.BgpExtCommunity{} +func (obj *patternFlowTcpDstPortMetricTag) ToYaml() (string, error) { + vErr := obj.validateToAndFrom() + if vErr != nil { + return "", vErr } - if obj.extCommunitiesHolder == nil { - obj.extCommunitiesHolder = newBgpV6EthernetSegmentBgpExtCommunityIter(&obj.obj.ExtCommunities).setMsg(obj) + opts := protojson.MarshalOptions{ + UseProtoNames: true, + AllowPartial: true, + EmitUnpopulated: false, } - return obj.extCommunitiesHolder + data, err := opts.Marshal(obj.Msg()) + if err != nil { + return "", err + } + data, err = yaml.JSONToYAML(data) + if err != nil { + return "", err + } + return string(data), nil } -type bgpV6EthernetSegmentBgpExtCommunityIter struct { - obj *bgpV6EthernetSegment - bgpExtCommunitySlice []BgpExtCommunity - fieldPtr *[]*otg.BgpExtCommunity -} +func (obj *patternFlowTcpDstPortMetricTag) FromYaml(value string) error { + if value == "" { + value = "{}" + } + data, err := yaml.YAMLToJSON([]byte(value)) + if err != nil { + return err + } + opts := protojson.UnmarshalOptions{ + AllowPartial: true, + DiscardUnknown: false, + } + uError := opts.Unmarshal([]byte(data), obj.Msg()) + if uError != nil { + return fmt.Errorf("unmarshal error %s", strings.Replace( + uError.Error(), "\u00a0", " ", -1)[7:]) + } -func newBgpV6EthernetSegmentBgpExtCommunityIter(ptr *[]*otg.BgpExtCommunity) BgpV6EthernetSegmentBgpExtCommunityIter { - return &bgpV6EthernetSegmentBgpExtCommunityIter{fieldPtr: ptr} + vErr := obj.validateToAndFrom() + if vErr != nil { + return vErr + } + return nil } -type BgpV6EthernetSegmentBgpExtCommunityIter interface { - setMsg(*bgpV6EthernetSegment) BgpV6EthernetSegmentBgpExtCommunityIter - Items() []BgpExtCommunity - Add() BgpExtCommunity - Append(items ...BgpExtCommunity) BgpV6EthernetSegmentBgpExtCommunityIter - Set(index int, newObj BgpExtCommunity) BgpV6EthernetSegmentBgpExtCommunityIter - Clear() BgpV6EthernetSegmentBgpExtCommunityIter - clearHolderSlice() BgpV6EthernetSegmentBgpExtCommunityIter - appendHolderSlice(item BgpExtCommunity) BgpV6EthernetSegmentBgpExtCommunityIter +func (obj *patternFlowTcpDstPortMetricTag) ToJson() (string, error) { + vErr := obj.validateToAndFrom() + if vErr != nil { + return "", vErr + } + opts := protojson.MarshalOptions{ + UseProtoNames: true, + AllowPartial: true, + EmitUnpopulated: false, + Indent: " ", + } + data, err := opts.Marshal(obj.Msg()) + if err != nil { + return "", err + } + return string(data), nil } -func (obj *bgpV6EthernetSegmentBgpExtCommunityIter) setMsg(msg *bgpV6EthernetSegment) BgpV6EthernetSegmentBgpExtCommunityIter { - obj.clearHolderSlice() - for _, val := range *obj.fieldPtr { - obj.appendHolderSlice(&bgpExtCommunity{obj: val}) +func (obj *patternFlowTcpDstPortMetricTag) FromJson(value string) error { + opts := protojson.UnmarshalOptions{ + AllowPartial: true, + DiscardUnknown: false, + } + if value == "" { + value = "{}" + } + uError := opts.Unmarshal([]byte(value), obj.Msg()) + if uError != nil { + return fmt.Errorf("unmarshal error %s", strings.Replace( + uError.Error(), "\u00a0", " ", -1)[7:]) } - obj.obj = msg - return obj -} -func (obj *bgpV6EthernetSegmentBgpExtCommunityIter) Items() []BgpExtCommunity { - return obj.bgpExtCommunitySlice + err := obj.validateToAndFrom() + if err != nil { + return err + } + return nil } -func (obj *bgpV6EthernetSegmentBgpExtCommunityIter) Add() BgpExtCommunity { - newObj := &otg.BgpExtCommunity{} - *obj.fieldPtr = append(*obj.fieldPtr, newObj) - newLibObj := &bgpExtCommunity{obj: newObj} - newLibObj.setDefault() - obj.bgpExtCommunitySlice = append(obj.bgpExtCommunitySlice, newLibObj) - return newLibObj +func (obj *patternFlowTcpDstPortMetricTag) validateToAndFrom() error { + // emptyVars() + obj.validateObj(&obj.validation, true) + return obj.validationResult() } -func (obj *bgpV6EthernetSegmentBgpExtCommunityIter) Append(items ...BgpExtCommunity) BgpV6EthernetSegmentBgpExtCommunityIter { - for _, item := range items { - newObj := item.Msg() - *obj.fieldPtr = append(*obj.fieldPtr, newObj) - obj.bgpExtCommunitySlice = append(obj.bgpExtCommunitySlice, item) - } - return obj +func (obj *patternFlowTcpDstPortMetricTag) Validate() error { + // emptyVars() + obj.validateObj(&obj.validation, false) + return obj.validationResult() } -func (obj *bgpV6EthernetSegmentBgpExtCommunityIter) Set(index int, newObj BgpExtCommunity) BgpV6EthernetSegmentBgpExtCommunityIter { - (*obj.fieldPtr)[index] = newObj.Msg() - obj.bgpExtCommunitySlice[index] = newObj - return obj -} -func (obj *bgpV6EthernetSegmentBgpExtCommunityIter) Clear() BgpV6EthernetSegmentBgpExtCommunityIter { - if len(*obj.fieldPtr) > 0 { - *obj.fieldPtr = []*otg.BgpExtCommunity{} - obj.bgpExtCommunitySlice = []BgpExtCommunity{} - } - return obj -} -func (obj *bgpV6EthernetSegmentBgpExtCommunityIter) clearHolderSlice() BgpV6EthernetSegmentBgpExtCommunityIter { - if len(obj.bgpExtCommunitySlice) > 0 { - obj.bgpExtCommunitySlice = []BgpExtCommunity{} +func (obj *patternFlowTcpDstPortMetricTag) String() string { + str, err := obj.ToYaml() + if err != nil { + return err.Error() } - return obj -} -func (obj *bgpV6EthernetSegmentBgpExtCommunityIter) appendHolderSlice(item BgpExtCommunity) BgpV6EthernetSegmentBgpExtCommunityIter { - obj.bgpExtCommunitySlice = append(obj.bgpExtCommunitySlice, item) - return obj + return str } -// Optional AS PATH settings. -// AsPath returns a BgpAsPath -func (obj *bgpV6EthernetSegment) AsPath() BgpAsPath { - if obj.obj.AsPath == nil { - obj.obj.AsPath = NewBgpAsPath().Msg() +func (obj *patternFlowTcpDstPortMetricTag) Clone() (PatternFlowTcpDstPortMetricTag, error) { + vErr := obj.Validate() + if vErr != nil { + return nil, vErr } - if obj.asPathHolder == nil { - obj.asPathHolder = &bgpAsPath{obj: obj.obj.AsPath} + newObj := NewPatternFlowTcpDstPortMetricTag() + data, err := proto.Marshal(obj.Msg()) + if err != nil { + return nil, err } - return obj.asPathHolder + pbErr := proto.Unmarshal(data, newObj.Msg()) + if pbErr != nil { + return nil, pbErr + } + return newObj, nil } -// Optional AS PATH settings. -// AsPath returns a BgpAsPath -func (obj *bgpV6EthernetSegment) HasAsPath() bool { - return obj.obj.AsPath != nil +// PatternFlowTcpDstPortMetricTag is metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. +type PatternFlowTcpDstPortMetricTag interface { + Validation + // Msg marshals PatternFlowTcpDstPortMetricTag to protobuf object *otg.PatternFlowTcpDstPortMetricTag + // and doesn't set defaults + Msg() *otg.PatternFlowTcpDstPortMetricTag + // SetMsg unmarshals PatternFlowTcpDstPortMetricTag from protobuf object *otg.PatternFlowTcpDstPortMetricTag + // and doesn't set defaults + SetMsg(*otg.PatternFlowTcpDstPortMetricTag) PatternFlowTcpDstPortMetricTag + // ToProto marshals PatternFlowTcpDstPortMetricTag to protobuf object *otg.PatternFlowTcpDstPortMetricTag + ToProto() (*otg.PatternFlowTcpDstPortMetricTag, error) + // ToPbText marshals PatternFlowTcpDstPortMetricTag to protobuf text + ToPbText() (string, error) + // ToYaml marshals PatternFlowTcpDstPortMetricTag to YAML text + ToYaml() (string, error) + // ToJson marshals PatternFlowTcpDstPortMetricTag to JSON text + ToJson() (string, error) + // FromProto unmarshals PatternFlowTcpDstPortMetricTag from protobuf object *otg.PatternFlowTcpDstPortMetricTag + FromProto(msg *otg.PatternFlowTcpDstPortMetricTag) (PatternFlowTcpDstPortMetricTag, error) + // FromPbText unmarshals PatternFlowTcpDstPortMetricTag from protobuf text + FromPbText(value string) error + // FromYaml unmarshals PatternFlowTcpDstPortMetricTag from YAML text + FromYaml(value string) error + // FromJson unmarshals PatternFlowTcpDstPortMetricTag from JSON text + FromJson(value string) error + // Validate validates PatternFlowTcpDstPortMetricTag + Validate() error + // A stringer function + String() string + // Clones the object + Clone() (PatternFlowTcpDstPortMetricTag, error) + validateToAndFrom() error + validateObj(vObj *validation, set_default bool) + setDefault() + // Name returns string, set in PatternFlowTcpDstPortMetricTag. + Name() string + // SetName assigns string provided by user to PatternFlowTcpDstPortMetricTag + SetName(value string) PatternFlowTcpDstPortMetricTag + // Offset returns uint32, set in PatternFlowTcpDstPortMetricTag. + Offset() uint32 + // SetOffset assigns uint32 provided by user to PatternFlowTcpDstPortMetricTag + SetOffset(value uint32) PatternFlowTcpDstPortMetricTag + // HasOffset checks if Offset has been set in PatternFlowTcpDstPortMetricTag + HasOffset() bool + // Length returns uint32, set in PatternFlowTcpDstPortMetricTag. + Length() uint32 + // SetLength assigns uint32 provided by user to PatternFlowTcpDstPortMetricTag + SetLength(value uint32) PatternFlowTcpDstPortMetricTag + // HasLength checks if Length has been set in PatternFlowTcpDstPortMetricTag + HasLength() bool } -// Optional AS PATH settings. -// SetAsPath sets the BgpAsPath value in the BgpV6EthernetSegment object -func (obj *bgpV6EthernetSegment) SetAsPath(value BgpAsPath) BgpV6EthernetSegment { +// Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field +// Name returns a string +func (obj *patternFlowTcpDstPortMetricTag) Name() string { - obj.asPathHolder = nil - obj.obj.AsPath = value.Msg() + return *obj.obj.Name + +} + +// Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field +// SetName sets the string value in the PatternFlowTcpDstPortMetricTag object +func (obj *patternFlowTcpDstPortMetricTag) SetName(value string) PatternFlowTcpDstPortMetricTag { + obj.obj.Name = &value return obj } -func (obj *bgpV6EthernetSegment) validateObj(vObj *validation, set_default bool) { - if set_default { - obj.setDefault() - } +// Offset in bits relative to start of corresponding header field +// Offset returns a uint32 +func (obj *patternFlowTcpDstPortMetricTag) Offset() uint32 { - if obj.obj.DfElection != nil { + return *obj.obj.Offset - obj.DfElection().validateObj(vObj, set_default) - } +} - if len(obj.obj.Evis) != 0 { +// Offset in bits relative to start of corresponding header field +// Offset returns a uint32 +func (obj *patternFlowTcpDstPortMetricTag) HasOffset() bool { + return obj.obj.Offset != nil +} - if set_default { - obj.Evis().clearHolderSlice() - for _, item := range obj.obj.Evis { - obj.Evis().appendHolderSlice(&bgpV6EvpnEvis{obj: item}) - } - } - for _, item := range obj.Evis().Items() { - item.validateObj(vObj, set_default) - } +// Offset in bits relative to start of corresponding header field +// SetOffset sets the uint32 value in the PatternFlowTcpDstPortMetricTag object +func (obj *patternFlowTcpDstPortMetricTag) SetOffset(value uint32) PatternFlowTcpDstPortMetricTag { - } + obj.obj.Offset = &value + return obj +} - if obj.obj.Esi != nil { +// Number of bits to track for metrics starting from configured offset of corresponding header field +// Length returns a uint32 +func (obj *patternFlowTcpDstPortMetricTag) Length() uint32 { - err := obj.validateHex(obj.Esi()) - if err != nil { - vObj.validationErrors = append(vObj.validationErrors, fmt.Sprintf("%s %s", err.Error(), "on BgpV6EthernetSegment.Esi")) - } + return *obj.obj.Length - } +} - if obj.obj.EsiLabel != nil { +// Number of bits to track for metrics starting from configured offset of corresponding header field +// Length returns a uint32 +func (obj *patternFlowTcpDstPortMetricTag) HasLength() bool { + return obj.obj.Length != nil +} - if *obj.obj.EsiLabel > 16777215 { - vObj.validationErrors = append( - vObj.validationErrors, - fmt.Sprintf("0 <= BgpV6EthernetSegment.EsiLabel <= 16777215 but Got %d", *obj.obj.EsiLabel)) - } +// Number of bits to track for metrics starting from configured offset of corresponding header field +// SetLength sets the uint32 value in the PatternFlowTcpDstPortMetricTag object +func (obj *patternFlowTcpDstPortMetricTag) SetLength(value uint32) PatternFlowTcpDstPortMetricTag { - } + obj.obj.Length = &value + return obj +} - if obj.obj.Advanced != nil { +func (obj *patternFlowTcpDstPortMetricTag) validateObj(vObj *validation, set_default bool) { + if set_default { + obj.setDefault() + } - obj.Advanced().validateObj(vObj, set_default) + // Name is required + if obj.obj.Name == nil { + vObj.validationErrors = append(vObj.validationErrors, "Name is required field on interface PatternFlowTcpDstPortMetricTag") } - if len(obj.obj.Communities) != 0 { + if obj.obj.Offset != nil { - if set_default { - obj.Communities().clearHolderSlice() - for _, item := range obj.obj.Communities { - obj.Communities().appendHolderSlice(&bgpCommunity{obj: item}) - } - } - for _, item := range obj.Communities().Items() { - item.validateObj(vObj, set_default) + if *obj.obj.Offset > 15 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("0 <= PatternFlowTcpDstPortMetricTag.Offset <= 15 but Got %d", *obj.obj.Offset)) } } - if len(obj.obj.ExtCommunities) != 0 { + if obj.obj.Length != nil { - if set_default { - obj.ExtCommunities().clearHolderSlice() - for _, item := range obj.obj.ExtCommunities { - obj.ExtCommunities().appendHolderSlice(&bgpExtCommunity{obj: item}) - } - } - for _, item := range obj.ExtCommunities().Items() { - item.validateObj(vObj, set_default) + if *obj.obj.Length < 1 || *obj.obj.Length > 16 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("1 <= PatternFlowTcpDstPortMetricTag.Length <= 16 but Got %d", *obj.obj.Length)) } } - if obj.obj.AsPath != nil { - - obj.AsPath().validateObj(vObj, set_default) - } - } -func (obj *bgpV6EthernetSegment) setDefault() { - if obj.obj.Esi == nil { - obj.SetEsi("00000000000000000000") - } - if obj.obj.ActiveMode == nil { - obj.SetActiveMode(BgpV6EthernetSegmentActiveMode.ALL_ACTIVE) - +func (obj *patternFlowTcpDstPortMetricTag) setDefault() { + if obj.obj.Offset == nil { + obj.SetOffset(0) } - if obj.obj.EsiLabel == nil { - obj.SetEsiLabel(0) + if obj.obj.Length == nil { + obj.SetLength(16) } } -// ***** VxlanV4TunnelDestinationIPModeUnicast ***** -type vxlanV4TunnelDestinationIPModeUnicast struct { +// ***** PatternFlowTcpSeqNumCounter ***** +type patternFlowTcpSeqNumCounter struct { validation - obj *otg.VxlanV4TunnelDestinationIPModeUnicast - vtepsHolder VxlanV4TunnelDestinationIPModeUnicastVxlanV4TunnelDestinationIPModeUnicastVtepIter + obj *otg.PatternFlowTcpSeqNumCounter } -func NewVxlanV4TunnelDestinationIPModeUnicast() VxlanV4TunnelDestinationIPModeUnicast { - obj := vxlanV4TunnelDestinationIPModeUnicast{obj: &otg.VxlanV4TunnelDestinationIPModeUnicast{}} +func NewPatternFlowTcpSeqNumCounter() PatternFlowTcpSeqNumCounter { + obj := patternFlowTcpSeqNumCounter{obj: &otg.PatternFlowTcpSeqNumCounter{}} obj.setDefault() return &obj } -func (obj *vxlanV4TunnelDestinationIPModeUnicast) Msg() *otg.VxlanV4TunnelDestinationIPModeUnicast { +func (obj *patternFlowTcpSeqNumCounter) Msg() *otg.PatternFlowTcpSeqNumCounter { return obj.obj } -func (obj *vxlanV4TunnelDestinationIPModeUnicast) SetMsg(msg *otg.VxlanV4TunnelDestinationIPModeUnicast) VxlanV4TunnelDestinationIPModeUnicast { - obj.setNil() +func (obj *patternFlowTcpSeqNumCounter) SetMsg(msg *otg.PatternFlowTcpSeqNumCounter) PatternFlowTcpSeqNumCounter { + proto.Merge(obj.obj, msg) return obj } -func (obj *vxlanV4TunnelDestinationIPModeUnicast) ToProto() (*otg.VxlanV4TunnelDestinationIPModeUnicast, error) { +func (obj *patternFlowTcpSeqNumCounter) ToProto() (*otg.PatternFlowTcpSeqNumCounter, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -181312,7 +224969,7 @@ func (obj *vxlanV4TunnelDestinationIPModeUnicast) ToProto() (*otg.VxlanV4TunnelD return obj.Msg(), nil } -func (obj *vxlanV4TunnelDestinationIPModeUnicast) FromProto(msg *otg.VxlanV4TunnelDestinationIPModeUnicast) (VxlanV4TunnelDestinationIPModeUnicast, error) { +func (obj *patternFlowTcpSeqNumCounter) FromProto(msg *otg.PatternFlowTcpSeqNumCounter) (PatternFlowTcpSeqNumCounter, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -181321,7 +224978,7 @@ func (obj *vxlanV4TunnelDestinationIPModeUnicast) FromProto(msg *otg.VxlanV4Tunn return newObj, nil } -func (obj *vxlanV4TunnelDestinationIPModeUnicast) ToPbText() (string, error) { +func (obj *patternFlowTcpSeqNumCounter) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -181333,12 +224990,12 @@ func (obj *vxlanV4TunnelDestinationIPModeUnicast) ToPbText() (string, error) { return string(protoMarshal), nil } -func (obj *vxlanV4TunnelDestinationIPModeUnicast) FromPbText(value string) error { +func (obj *patternFlowTcpSeqNumCounter) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj } - obj.setNil() + vErr := obj.validateToAndFrom() if vErr != nil { return vErr @@ -181346,7 +225003,7 @@ func (obj *vxlanV4TunnelDestinationIPModeUnicast) FromPbText(value string) error return retObj } -func (obj *vxlanV4TunnelDestinationIPModeUnicast) ToYaml() (string, error) { +func (obj *patternFlowTcpSeqNumCounter) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -181367,7 +225024,7 @@ func (obj *vxlanV4TunnelDestinationIPModeUnicast) ToYaml() (string, error) { return string(data), nil } -func (obj *vxlanV4TunnelDestinationIPModeUnicast) FromYaml(value string) error { +func (obj *patternFlowTcpSeqNumCounter) FromYaml(value string) error { if value == "" { value = "{}" } @@ -181384,7 +225041,7 @@ func (obj *vxlanV4TunnelDestinationIPModeUnicast) FromYaml(value string) error { return fmt.Errorf("unmarshal error %s", strings.Replace( uError.Error(), "\u00a0", " ", -1)[7:]) } - obj.setNil() + vErr := obj.validateToAndFrom() if vErr != nil { return vErr @@ -181392,7 +225049,7 @@ func (obj *vxlanV4TunnelDestinationIPModeUnicast) FromYaml(value string) error { return nil } -func (obj *vxlanV4TunnelDestinationIPModeUnicast) ToJson() (string, error) { +func (obj *patternFlowTcpSeqNumCounter) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -181410,7 +225067,7 @@ func (obj *vxlanV4TunnelDestinationIPModeUnicast) ToJson() (string, error) { return string(data), nil } -func (obj *vxlanV4TunnelDestinationIPModeUnicast) FromJson(value string) error { +func (obj *patternFlowTcpSeqNumCounter) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -181423,7 +225080,7 @@ func (obj *vxlanV4TunnelDestinationIPModeUnicast) FromJson(value string) error { return fmt.Errorf("unmarshal error %s", strings.Replace( uError.Error(), "\u00a0", " ", -1)[7:]) } - obj.setNil() + err := obj.validateToAndFrom() if err != nil { return err @@ -181431,19 +225088,19 @@ func (obj *vxlanV4TunnelDestinationIPModeUnicast) FromJson(value string) error { return nil } -func (obj *vxlanV4TunnelDestinationIPModeUnicast) validateToAndFrom() error { +func (obj *patternFlowTcpSeqNumCounter) validateToAndFrom() error { // emptyVars() obj.validateObj(&obj.validation, true) return obj.validationResult() } -func (obj *vxlanV4TunnelDestinationIPModeUnicast) Validate() error { +func (obj *patternFlowTcpSeqNumCounter) Validate() error { // emptyVars() obj.validateObj(&obj.validation, false) return obj.validationResult() } -func (obj *vxlanV4TunnelDestinationIPModeUnicast) String() string { +func (obj *patternFlowTcpSeqNumCounter) String() string { str, err := obj.ToYaml() if err != nil { return err.Error() @@ -181451,12 +225108,12 @@ func (obj *vxlanV4TunnelDestinationIPModeUnicast) String() string { return str } -func (obj *vxlanV4TunnelDestinationIPModeUnicast) Clone() (VxlanV4TunnelDestinationIPModeUnicast, error) { +func (obj *patternFlowTcpSeqNumCounter) Clone() (PatternFlowTcpSeqNumCounter, error) { vErr := obj.Validate() if vErr != nil { return nil, vErr } - newObj := NewVxlanV4TunnelDestinationIPModeUnicast() + newObj := NewPatternFlowTcpSeqNumCounter() data, err := proto.Marshal(obj.Msg()) if err != nil { return nil, err @@ -181468,187 +225125,169 @@ func (obj *vxlanV4TunnelDestinationIPModeUnicast) Clone() (VxlanV4TunnelDestinat return newObj, nil } -func (obj *vxlanV4TunnelDestinationIPModeUnicast) setNil() { - obj.vtepsHolder = nil - obj.validationErrors = nil - obj.warnings = nil - obj.constraints = make(map[string]map[string]Constraints) -} - -// VxlanV4TunnelDestinationIPModeUnicast is description is TBD -type VxlanV4TunnelDestinationIPModeUnicast interface { +// PatternFlowTcpSeqNumCounter is integer counter pattern +type PatternFlowTcpSeqNumCounter interface { Validation - // Msg marshals VxlanV4TunnelDestinationIPModeUnicast to protobuf object *otg.VxlanV4TunnelDestinationIPModeUnicast + // Msg marshals PatternFlowTcpSeqNumCounter to protobuf object *otg.PatternFlowTcpSeqNumCounter // and doesn't set defaults - Msg() *otg.VxlanV4TunnelDestinationIPModeUnicast - // SetMsg unmarshals VxlanV4TunnelDestinationIPModeUnicast from protobuf object *otg.VxlanV4TunnelDestinationIPModeUnicast + Msg() *otg.PatternFlowTcpSeqNumCounter + // SetMsg unmarshals PatternFlowTcpSeqNumCounter from protobuf object *otg.PatternFlowTcpSeqNumCounter // and doesn't set defaults - SetMsg(*otg.VxlanV4TunnelDestinationIPModeUnicast) VxlanV4TunnelDestinationIPModeUnicast - // ToProto marshals VxlanV4TunnelDestinationIPModeUnicast to protobuf object *otg.VxlanV4TunnelDestinationIPModeUnicast - ToProto() (*otg.VxlanV4TunnelDestinationIPModeUnicast, error) - // ToPbText marshals VxlanV4TunnelDestinationIPModeUnicast to protobuf text + SetMsg(*otg.PatternFlowTcpSeqNumCounter) PatternFlowTcpSeqNumCounter + // ToProto marshals PatternFlowTcpSeqNumCounter to protobuf object *otg.PatternFlowTcpSeqNumCounter + ToProto() (*otg.PatternFlowTcpSeqNumCounter, error) + // ToPbText marshals PatternFlowTcpSeqNumCounter to protobuf text ToPbText() (string, error) - // ToYaml marshals VxlanV4TunnelDestinationIPModeUnicast to YAML text + // ToYaml marshals PatternFlowTcpSeqNumCounter to YAML text ToYaml() (string, error) - // ToJson marshals VxlanV4TunnelDestinationIPModeUnicast to JSON text + // ToJson marshals PatternFlowTcpSeqNumCounter to JSON text ToJson() (string, error) - // FromProto unmarshals VxlanV4TunnelDestinationIPModeUnicast from protobuf object *otg.VxlanV4TunnelDestinationIPModeUnicast - FromProto(msg *otg.VxlanV4TunnelDestinationIPModeUnicast) (VxlanV4TunnelDestinationIPModeUnicast, error) - // FromPbText unmarshals VxlanV4TunnelDestinationIPModeUnicast from protobuf text + // FromProto unmarshals PatternFlowTcpSeqNumCounter from protobuf object *otg.PatternFlowTcpSeqNumCounter + FromProto(msg *otg.PatternFlowTcpSeqNumCounter) (PatternFlowTcpSeqNumCounter, error) + // FromPbText unmarshals PatternFlowTcpSeqNumCounter from protobuf text FromPbText(value string) error - // FromYaml unmarshals VxlanV4TunnelDestinationIPModeUnicast from YAML text + // FromYaml unmarshals PatternFlowTcpSeqNumCounter from YAML text FromYaml(value string) error - // FromJson unmarshals VxlanV4TunnelDestinationIPModeUnicast from JSON text + // FromJson unmarshals PatternFlowTcpSeqNumCounter from JSON text FromJson(value string) error - // Validate validates VxlanV4TunnelDestinationIPModeUnicast + // Validate validates PatternFlowTcpSeqNumCounter Validate() error // A stringer function String() string // Clones the object - Clone() (VxlanV4TunnelDestinationIPModeUnicast, error) + Clone() (PatternFlowTcpSeqNumCounter, error) validateToAndFrom() error validateObj(vObj *validation, set_default bool) setDefault() - // Vteps returns VxlanV4TunnelDestinationIPModeUnicastVxlanV4TunnelDestinationIPModeUnicastVtepIterIter, set in VxlanV4TunnelDestinationIPModeUnicast - Vteps() VxlanV4TunnelDestinationIPModeUnicastVxlanV4TunnelDestinationIPModeUnicastVtepIter - setNil() + // Start returns uint32, set in PatternFlowTcpSeqNumCounter. + Start() uint32 + // SetStart assigns uint32 provided by user to PatternFlowTcpSeqNumCounter + SetStart(value uint32) PatternFlowTcpSeqNumCounter + // HasStart checks if Start has been set in PatternFlowTcpSeqNumCounter + HasStart() bool + // Step returns uint32, set in PatternFlowTcpSeqNumCounter. + Step() uint32 + // SetStep assigns uint32 provided by user to PatternFlowTcpSeqNumCounter + SetStep(value uint32) PatternFlowTcpSeqNumCounter + // HasStep checks if Step has been set in PatternFlowTcpSeqNumCounter + HasStep() bool + // Count returns uint32, set in PatternFlowTcpSeqNumCounter. + Count() uint32 + // SetCount assigns uint32 provided by user to PatternFlowTcpSeqNumCounter + SetCount(value uint32) PatternFlowTcpSeqNumCounter + // HasCount checks if Count has been set in PatternFlowTcpSeqNumCounter + HasCount() bool } -// List of VTEPs for member VNI(VXLAN Network Identifier) -// Vteps returns a []VxlanV4TunnelDestinationIPModeUnicastVtep -func (obj *vxlanV4TunnelDestinationIPModeUnicast) Vteps() VxlanV4TunnelDestinationIPModeUnicastVxlanV4TunnelDestinationIPModeUnicastVtepIter { - if len(obj.obj.Vteps) == 0 { - obj.obj.Vteps = []*otg.VxlanV4TunnelDestinationIPModeUnicastVtep{} - } - if obj.vtepsHolder == nil { - obj.vtepsHolder = newVxlanV4TunnelDestinationIPModeUnicastVxlanV4TunnelDestinationIPModeUnicastVtepIter(&obj.obj.Vteps).setMsg(obj) - } - return obj.vtepsHolder -} +// description is TBD +// Start returns a uint32 +func (obj *patternFlowTcpSeqNumCounter) Start() uint32 { -type vxlanV4TunnelDestinationIPModeUnicastVxlanV4TunnelDestinationIPModeUnicastVtepIter struct { - obj *vxlanV4TunnelDestinationIPModeUnicast - vxlanV4TunnelDestinationIPModeUnicastVtepSlice []VxlanV4TunnelDestinationIPModeUnicastVtep - fieldPtr *[]*otg.VxlanV4TunnelDestinationIPModeUnicastVtep -} + return *obj.obj.Start -func newVxlanV4TunnelDestinationIPModeUnicastVxlanV4TunnelDestinationIPModeUnicastVtepIter(ptr *[]*otg.VxlanV4TunnelDestinationIPModeUnicastVtep) VxlanV4TunnelDestinationIPModeUnicastVxlanV4TunnelDestinationIPModeUnicastVtepIter { - return &vxlanV4TunnelDestinationIPModeUnicastVxlanV4TunnelDestinationIPModeUnicastVtepIter{fieldPtr: ptr} } -type VxlanV4TunnelDestinationIPModeUnicastVxlanV4TunnelDestinationIPModeUnicastVtepIter interface { - setMsg(*vxlanV4TunnelDestinationIPModeUnicast) VxlanV4TunnelDestinationIPModeUnicastVxlanV4TunnelDestinationIPModeUnicastVtepIter - Items() []VxlanV4TunnelDestinationIPModeUnicastVtep - Add() VxlanV4TunnelDestinationIPModeUnicastVtep - Append(items ...VxlanV4TunnelDestinationIPModeUnicastVtep) VxlanV4TunnelDestinationIPModeUnicastVxlanV4TunnelDestinationIPModeUnicastVtepIter - Set(index int, newObj VxlanV4TunnelDestinationIPModeUnicastVtep) VxlanV4TunnelDestinationIPModeUnicastVxlanV4TunnelDestinationIPModeUnicastVtepIter - Clear() VxlanV4TunnelDestinationIPModeUnicastVxlanV4TunnelDestinationIPModeUnicastVtepIter - clearHolderSlice() VxlanV4TunnelDestinationIPModeUnicastVxlanV4TunnelDestinationIPModeUnicastVtepIter - appendHolderSlice(item VxlanV4TunnelDestinationIPModeUnicastVtep) VxlanV4TunnelDestinationIPModeUnicastVxlanV4TunnelDestinationIPModeUnicastVtepIter +// description is TBD +// Start returns a uint32 +func (obj *patternFlowTcpSeqNumCounter) HasStart() bool { + return obj.obj.Start != nil } -func (obj *vxlanV4TunnelDestinationIPModeUnicastVxlanV4TunnelDestinationIPModeUnicastVtepIter) setMsg(msg *vxlanV4TunnelDestinationIPModeUnicast) VxlanV4TunnelDestinationIPModeUnicastVxlanV4TunnelDestinationIPModeUnicastVtepIter { - obj.clearHolderSlice() - for _, val := range *obj.fieldPtr { - obj.appendHolderSlice(&vxlanV4TunnelDestinationIPModeUnicastVtep{obj: val}) - } - obj.obj = msg +// description is TBD +// SetStart sets the uint32 value in the PatternFlowTcpSeqNumCounter object +func (obj *patternFlowTcpSeqNumCounter) SetStart(value uint32) PatternFlowTcpSeqNumCounter { + + obj.obj.Start = &value return obj } -func (obj *vxlanV4TunnelDestinationIPModeUnicastVxlanV4TunnelDestinationIPModeUnicastVtepIter) Items() []VxlanV4TunnelDestinationIPModeUnicastVtep { - return obj.vxlanV4TunnelDestinationIPModeUnicastVtepSlice -} +// description is TBD +// Step returns a uint32 +func (obj *patternFlowTcpSeqNumCounter) Step() uint32 { + + return *obj.obj.Step -func (obj *vxlanV4TunnelDestinationIPModeUnicastVxlanV4TunnelDestinationIPModeUnicastVtepIter) Add() VxlanV4TunnelDestinationIPModeUnicastVtep { - newObj := &otg.VxlanV4TunnelDestinationIPModeUnicastVtep{} - *obj.fieldPtr = append(*obj.fieldPtr, newObj) - newLibObj := &vxlanV4TunnelDestinationIPModeUnicastVtep{obj: newObj} - newLibObj.setDefault() - obj.vxlanV4TunnelDestinationIPModeUnicastVtepSlice = append(obj.vxlanV4TunnelDestinationIPModeUnicastVtepSlice, newLibObj) - return newLibObj } -func (obj *vxlanV4TunnelDestinationIPModeUnicastVxlanV4TunnelDestinationIPModeUnicastVtepIter) Append(items ...VxlanV4TunnelDestinationIPModeUnicastVtep) VxlanV4TunnelDestinationIPModeUnicastVxlanV4TunnelDestinationIPModeUnicastVtepIter { - for _, item := range items { - newObj := item.Msg() - *obj.fieldPtr = append(*obj.fieldPtr, newObj) - obj.vxlanV4TunnelDestinationIPModeUnicastVtepSlice = append(obj.vxlanV4TunnelDestinationIPModeUnicastVtepSlice, item) - } - return obj +// description is TBD +// Step returns a uint32 +func (obj *patternFlowTcpSeqNumCounter) HasStep() bool { + return obj.obj.Step != nil } -func (obj *vxlanV4TunnelDestinationIPModeUnicastVxlanV4TunnelDestinationIPModeUnicastVtepIter) Set(index int, newObj VxlanV4TunnelDestinationIPModeUnicastVtep) VxlanV4TunnelDestinationIPModeUnicastVxlanV4TunnelDestinationIPModeUnicastVtepIter { - (*obj.fieldPtr)[index] = newObj.Msg() - obj.vxlanV4TunnelDestinationIPModeUnicastVtepSlice[index] = newObj +// description is TBD +// SetStep sets the uint32 value in the PatternFlowTcpSeqNumCounter object +func (obj *patternFlowTcpSeqNumCounter) SetStep(value uint32) PatternFlowTcpSeqNumCounter { + + obj.obj.Step = &value return obj } -func (obj *vxlanV4TunnelDestinationIPModeUnicastVxlanV4TunnelDestinationIPModeUnicastVtepIter) Clear() VxlanV4TunnelDestinationIPModeUnicastVxlanV4TunnelDestinationIPModeUnicastVtepIter { - if len(*obj.fieldPtr) > 0 { - *obj.fieldPtr = []*otg.VxlanV4TunnelDestinationIPModeUnicastVtep{} - obj.vxlanV4TunnelDestinationIPModeUnicastVtepSlice = []VxlanV4TunnelDestinationIPModeUnicastVtep{} - } - return obj + +// description is TBD +// Count returns a uint32 +func (obj *patternFlowTcpSeqNumCounter) Count() uint32 { + + return *obj.obj.Count + } -func (obj *vxlanV4TunnelDestinationIPModeUnicastVxlanV4TunnelDestinationIPModeUnicastVtepIter) clearHolderSlice() VxlanV4TunnelDestinationIPModeUnicastVxlanV4TunnelDestinationIPModeUnicastVtepIter { - if len(obj.vxlanV4TunnelDestinationIPModeUnicastVtepSlice) > 0 { - obj.vxlanV4TunnelDestinationIPModeUnicastVtepSlice = []VxlanV4TunnelDestinationIPModeUnicastVtep{} - } - return obj + +// description is TBD +// Count returns a uint32 +func (obj *patternFlowTcpSeqNumCounter) HasCount() bool { + return obj.obj.Count != nil } -func (obj *vxlanV4TunnelDestinationIPModeUnicastVxlanV4TunnelDestinationIPModeUnicastVtepIter) appendHolderSlice(item VxlanV4TunnelDestinationIPModeUnicastVtep) VxlanV4TunnelDestinationIPModeUnicastVxlanV4TunnelDestinationIPModeUnicastVtepIter { - obj.vxlanV4TunnelDestinationIPModeUnicastVtepSlice = append(obj.vxlanV4TunnelDestinationIPModeUnicastVtepSlice, item) + +// description is TBD +// SetCount sets the uint32 value in the PatternFlowTcpSeqNumCounter object +func (obj *patternFlowTcpSeqNumCounter) SetCount(value uint32) PatternFlowTcpSeqNumCounter { + + obj.obj.Count = &value return obj } -func (obj *vxlanV4TunnelDestinationIPModeUnicast) validateObj(vObj *validation, set_default bool) { +func (obj *patternFlowTcpSeqNumCounter) validateObj(vObj *validation, set_default bool) { if set_default { obj.setDefault() } - if len(obj.obj.Vteps) != 0 { - - if set_default { - obj.Vteps().clearHolderSlice() - for _, item := range obj.obj.Vteps { - obj.Vteps().appendHolderSlice(&vxlanV4TunnelDestinationIPModeUnicastVtep{obj: item}) - } - } - for _, item := range obj.Vteps().Items() { - item.validateObj(vObj, set_default) - } - - } - } -func (obj *vxlanV4TunnelDestinationIPModeUnicast) setDefault() { +func (obj *patternFlowTcpSeqNumCounter) setDefault() { + if obj.obj.Start == nil { + obj.SetStart(0) + } + if obj.obj.Step == nil { + obj.SetStep(1) + } + if obj.obj.Count == nil { + obj.SetCount(1) + } } -// ***** VxlanV4TunnelDestinationIPModeMulticast ***** -type vxlanV4TunnelDestinationIPModeMulticast struct { +// ***** PatternFlowTcpSeqNumMetricTag ***** +type patternFlowTcpSeqNumMetricTag struct { validation - obj *otg.VxlanV4TunnelDestinationIPModeMulticast + obj *otg.PatternFlowTcpSeqNumMetricTag } -func NewVxlanV4TunnelDestinationIPModeMulticast() VxlanV4TunnelDestinationIPModeMulticast { - obj := vxlanV4TunnelDestinationIPModeMulticast{obj: &otg.VxlanV4TunnelDestinationIPModeMulticast{}} +func NewPatternFlowTcpSeqNumMetricTag() PatternFlowTcpSeqNumMetricTag { + obj := patternFlowTcpSeqNumMetricTag{obj: &otg.PatternFlowTcpSeqNumMetricTag{}} obj.setDefault() return &obj } -func (obj *vxlanV4TunnelDestinationIPModeMulticast) Msg() *otg.VxlanV4TunnelDestinationIPModeMulticast { +func (obj *patternFlowTcpSeqNumMetricTag) Msg() *otg.PatternFlowTcpSeqNumMetricTag { return obj.obj } -func (obj *vxlanV4TunnelDestinationIPModeMulticast) SetMsg(msg *otg.VxlanV4TunnelDestinationIPModeMulticast) VxlanV4TunnelDestinationIPModeMulticast { +func (obj *patternFlowTcpSeqNumMetricTag) SetMsg(msg *otg.PatternFlowTcpSeqNumMetricTag) PatternFlowTcpSeqNumMetricTag { proto.Merge(obj.obj, msg) return obj } -func (obj *vxlanV4TunnelDestinationIPModeMulticast) ToProto() (*otg.VxlanV4TunnelDestinationIPModeMulticast, error) { +func (obj *patternFlowTcpSeqNumMetricTag) ToProto() (*otg.PatternFlowTcpSeqNumMetricTag, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -181656,7 +225295,7 @@ func (obj *vxlanV4TunnelDestinationIPModeMulticast) ToProto() (*otg.VxlanV4Tunne return obj.Msg(), nil } -func (obj *vxlanV4TunnelDestinationIPModeMulticast) FromProto(msg *otg.VxlanV4TunnelDestinationIPModeMulticast) (VxlanV4TunnelDestinationIPModeMulticast, error) { +func (obj *patternFlowTcpSeqNumMetricTag) FromProto(msg *otg.PatternFlowTcpSeqNumMetricTag) (PatternFlowTcpSeqNumMetricTag, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -181665,7 +225304,7 @@ func (obj *vxlanV4TunnelDestinationIPModeMulticast) FromProto(msg *otg.VxlanV4Tu return newObj, nil } -func (obj *vxlanV4TunnelDestinationIPModeMulticast) ToPbText() (string, error) { +func (obj *patternFlowTcpSeqNumMetricTag) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -181677,7 +225316,7 @@ func (obj *vxlanV4TunnelDestinationIPModeMulticast) ToPbText() (string, error) { return string(protoMarshal), nil } -func (obj *vxlanV4TunnelDestinationIPModeMulticast) FromPbText(value string) error { +func (obj *patternFlowTcpSeqNumMetricTag) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj @@ -181690,7 +225329,7 @@ func (obj *vxlanV4TunnelDestinationIPModeMulticast) FromPbText(value string) err return retObj } -func (obj *vxlanV4TunnelDestinationIPModeMulticast) ToYaml() (string, error) { +func (obj *patternFlowTcpSeqNumMetricTag) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -181711,7 +225350,7 @@ func (obj *vxlanV4TunnelDestinationIPModeMulticast) ToYaml() (string, error) { return string(data), nil } -func (obj *vxlanV4TunnelDestinationIPModeMulticast) FromYaml(value string) error { +func (obj *patternFlowTcpSeqNumMetricTag) FromYaml(value string) error { if value == "" { value = "{}" } @@ -181736,7 +225375,7 @@ func (obj *vxlanV4TunnelDestinationIPModeMulticast) FromYaml(value string) error return nil } -func (obj *vxlanV4TunnelDestinationIPModeMulticast) ToJson() (string, error) { +func (obj *patternFlowTcpSeqNumMetricTag) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -181754,7 +225393,7 @@ func (obj *vxlanV4TunnelDestinationIPModeMulticast) ToJson() (string, error) { return string(data), nil } -func (obj *vxlanV4TunnelDestinationIPModeMulticast) FromJson(value string) error { +func (obj *patternFlowTcpSeqNumMetricTag) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -181775,19 +225414,19 @@ func (obj *vxlanV4TunnelDestinationIPModeMulticast) FromJson(value string) error return nil } -func (obj *vxlanV4TunnelDestinationIPModeMulticast) validateToAndFrom() error { +func (obj *patternFlowTcpSeqNumMetricTag) validateToAndFrom() error { // emptyVars() obj.validateObj(&obj.validation, true) return obj.validationResult() } -func (obj *vxlanV4TunnelDestinationIPModeMulticast) Validate() error { +func (obj *patternFlowTcpSeqNumMetricTag) Validate() error { // emptyVars() obj.validateObj(&obj.validation, false) return obj.validationResult() } -func (obj *vxlanV4TunnelDestinationIPModeMulticast) String() string { +func (obj *patternFlowTcpSeqNumMetricTag) String() string { str, err := obj.ToYaml() if err != nil { return err.Error() @@ -181795,12 +225434,12 @@ func (obj *vxlanV4TunnelDestinationIPModeMulticast) String() string { return str } -func (obj *vxlanV4TunnelDestinationIPModeMulticast) Clone() (VxlanV4TunnelDestinationIPModeMulticast, error) { +func (obj *patternFlowTcpSeqNumMetricTag) Clone() (PatternFlowTcpSeqNumMetricTag, error) { vErr := obj.Validate() if vErr != nil { return nil, vErr } - newObj := NewVxlanV4TunnelDestinationIPModeMulticast() + newObj := NewPatternFlowTcpSeqNumMetricTag() data, err := proto.Marshal(obj.Msg()) if err != nil { return nil, err @@ -181812,114 +225451,183 @@ func (obj *vxlanV4TunnelDestinationIPModeMulticast) Clone() (VxlanV4TunnelDestin return newObj, nil } -// VxlanV4TunnelDestinationIPModeMulticast is multicast Group address for member VNI(VXLAN Network Identifier) -type VxlanV4TunnelDestinationIPModeMulticast interface { +// PatternFlowTcpSeqNumMetricTag is metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. +type PatternFlowTcpSeqNumMetricTag interface { Validation - // Msg marshals VxlanV4TunnelDestinationIPModeMulticast to protobuf object *otg.VxlanV4TunnelDestinationIPModeMulticast + // Msg marshals PatternFlowTcpSeqNumMetricTag to protobuf object *otg.PatternFlowTcpSeqNumMetricTag // and doesn't set defaults - Msg() *otg.VxlanV4TunnelDestinationIPModeMulticast - // SetMsg unmarshals VxlanV4TunnelDestinationIPModeMulticast from protobuf object *otg.VxlanV4TunnelDestinationIPModeMulticast + Msg() *otg.PatternFlowTcpSeqNumMetricTag + // SetMsg unmarshals PatternFlowTcpSeqNumMetricTag from protobuf object *otg.PatternFlowTcpSeqNumMetricTag // and doesn't set defaults - SetMsg(*otg.VxlanV4TunnelDestinationIPModeMulticast) VxlanV4TunnelDestinationIPModeMulticast - // ToProto marshals VxlanV4TunnelDestinationIPModeMulticast to protobuf object *otg.VxlanV4TunnelDestinationIPModeMulticast - ToProto() (*otg.VxlanV4TunnelDestinationIPModeMulticast, error) - // ToPbText marshals VxlanV4TunnelDestinationIPModeMulticast to protobuf text + SetMsg(*otg.PatternFlowTcpSeqNumMetricTag) PatternFlowTcpSeqNumMetricTag + // ToProto marshals PatternFlowTcpSeqNumMetricTag to protobuf object *otg.PatternFlowTcpSeqNumMetricTag + ToProto() (*otg.PatternFlowTcpSeqNumMetricTag, error) + // ToPbText marshals PatternFlowTcpSeqNumMetricTag to protobuf text ToPbText() (string, error) - // ToYaml marshals VxlanV4TunnelDestinationIPModeMulticast to YAML text + // ToYaml marshals PatternFlowTcpSeqNumMetricTag to YAML text ToYaml() (string, error) - // ToJson marshals VxlanV4TunnelDestinationIPModeMulticast to JSON text + // ToJson marshals PatternFlowTcpSeqNumMetricTag to JSON text ToJson() (string, error) - // FromProto unmarshals VxlanV4TunnelDestinationIPModeMulticast from protobuf object *otg.VxlanV4TunnelDestinationIPModeMulticast - FromProto(msg *otg.VxlanV4TunnelDestinationIPModeMulticast) (VxlanV4TunnelDestinationIPModeMulticast, error) - // FromPbText unmarshals VxlanV4TunnelDestinationIPModeMulticast from protobuf text + // FromProto unmarshals PatternFlowTcpSeqNumMetricTag from protobuf object *otg.PatternFlowTcpSeqNumMetricTag + FromProto(msg *otg.PatternFlowTcpSeqNumMetricTag) (PatternFlowTcpSeqNumMetricTag, error) + // FromPbText unmarshals PatternFlowTcpSeqNumMetricTag from protobuf text FromPbText(value string) error - // FromYaml unmarshals VxlanV4TunnelDestinationIPModeMulticast from YAML text + // FromYaml unmarshals PatternFlowTcpSeqNumMetricTag from YAML text FromYaml(value string) error - // FromJson unmarshals VxlanV4TunnelDestinationIPModeMulticast from JSON text + // FromJson unmarshals PatternFlowTcpSeqNumMetricTag from JSON text FromJson(value string) error - // Validate validates VxlanV4TunnelDestinationIPModeMulticast + // Validate validates PatternFlowTcpSeqNumMetricTag Validate() error // A stringer function String() string // Clones the object - Clone() (VxlanV4TunnelDestinationIPModeMulticast, error) + Clone() (PatternFlowTcpSeqNumMetricTag, error) validateToAndFrom() error validateObj(vObj *validation, set_default bool) setDefault() - // Address returns string, set in VxlanV4TunnelDestinationIPModeMulticast. - Address() string - // SetAddress assigns string provided by user to VxlanV4TunnelDestinationIPModeMulticast - SetAddress(value string) VxlanV4TunnelDestinationIPModeMulticast - // HasAddress checks if Address has been set in VxlanV4TunnelDestinationIPModeMulticast - HasAddress() bool + // Name returns string, set in PatternFlowTcpSeqNumMetricTag. + Name() string + // SetName assigns string provided by user to PatternFlowTcpSeqNumMetricTag + SetName(value string) PatternFlowTcpSeqNumMetricTag + // Offset returns uint32, set in PatternFlowTcpSeqNumMetricTag. + Offset() uint32 + // SetOffset assigns uint32 provided by user to PatternFlowTcpSeqNumMetricTag + SetOffset(value uint32) PatternFlowTcpSeqNumMetricTag + // HasOffset checks if Offset has been set in PatternFlowTcpSeqNumMetricTag + HasOffset() bool + // Length returns uint32, set in PatternFlowTcpSeqNumMetricTag. + Length() uint32 + // SetLength assigns uint32 provided by user to PatternFlowTcpSeqNumMetricTag + SetLength(value uint32) PatternFlowTcpSeqNumMetricTag + // HasLength checks if Length has been set in PatternFlowTcpSeqNumMetricTag + HasLength() bool } -// IPv4 Multicast address -// Address returns a string -func (obj *vxlanV4TunnelDestinationIPModeMulticast) Address() string { +// Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field +// Name returns a string +func (obj *patternFlowTcpSeqNumMetricTag) Name() string { - return *obj.obj.Address + return *obj.obj.Name } -// IPv4 Multicast address -// Address returns a string -func (obj *vxlanV4TunnelDestinationIPModeMulticast) HasAddress() bool { - return obj.obj.Address != nil +// Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field +// SetName sets the string value in the PatternFlowTcpSeqNumMetricTag object +func (obj *patternFlowTcpSeqNumMetricTag) SetName(value string) PatternFlowTcpSeqNumMetricTag { + + obj.obj.Name = &value + return obj } -// IPv4 Multicast address -// SetAddress sets the string value in the VxlanV4TunnelDestinationIPModeMulticast object -func (obj *vxlanV4TunnelDestinationIPModeMulticast) SetAddress(value string) VxlanV4TunnelDestinationIPModeMulticast { +// Offset in bits relative to start of corresponding header field +// Offset returns a uint32 +func (obj *patternFlowTcpSeqNumMetricTag) Offset() uint32 { - obj.obj.Address = &value + return *obj.obj.Offset + +} + +// Offset in bits relative to start of corresponding header field +// Offset returns a uint32 +func (obj *patternFlowTcpSeqNumMetricTag) HasOffset() bool { + return obj.obj.Offset != nil +} + +// Offset in bits relative to start of corresponding header field +// SetOffset sets the uint32 value in the PatternFlowTcpSeqNumMetricTag object +func (obj *patternFlowTcpSeqNumMetricTag) SetOffset(value uint32) PatternFlowTcpSeqNumMetricTag { + + obj.obj.Offset = &value return obj } -func (obj *vxlanV4TunnelDestinationIPModeMulticast) validateObj(vObj *validation, set_default bool) { +// Number of bits to track for metrics starting from configured offset of corresponding header field +// Length returns a uint32 +func (obj *patternFlowTcpSeqNumMetricTag) Length() uint32 { + + return *obj.obj.Length + +} + +// Number of bits to track for metrics starting from configured offset of corresponding header field +// Length returns a uint32 +func (obj *patternFlowTcpSeqNumMetricTag) HasLength() bool { + return obj.obj.Length != nil +} + +// Number of bits to track for metrics starting from configured offset of corresponding header field +// SetLength sets the uint32 value in the PatternFlowTcpSeqNumMetricTag object +func (obj *patternFlowTcpSeqNumMetricTag) SetLength(value uint32) PatternFlowTcpSeqNumMetricTag { + + obj.obj.Length = &value + return obj +} + +func (obj *patternFlowTcpSeqNumMetricTag) validateObj(vObj *validation, set_default bool) { if set_default { obj.setDefault() } - if obj.obj.Address != nil { + // Name is required + if obj.obj.Name == nil { + vObj.validationErrors = append(vObj.validationErrors, "Name is required field on interface PatternFlowTcpSeqNumMetricTag") + } - err := obj.validateIpv4(obj.Address()) - if err != nil { - vObj.validationErrors = append(vObj.validationErrors, fmt.Sprintf("%s %s", err.Error(), "on VxlanV4TunnelDestinationIPModeMulticast.Address")) + if obj.obj.Offset != nil { + + if *obj.obj.Offset > 31 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("0 <= PatternFlowTcpSeqNumMetricTag.Offset <= 31 but Got %d", *obj.obj.Offset)) + } + + } + + if obj.obj.Length != nil { + + if *obj.obj.Length < 1 || *obj.obj.Length > 32 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("1 <= PatternFlowTcpSeqNumMetricTag.Length <= 32 but Got %d", *obj.obj.Length)) } } } -func (obj *vxlanV4TunnelDestinationIPModeMulticast) setDefault() { +func (obj *patternFlowTcpSeqNumMetricTag) setDefault() { + if obj.obj.Offset == nil { + obj.SetOffset(0) + } + if obj.obj.Length == nil { + obj.SetLength(32) + } } -// ***** VxlanV6TunnelDestinationIPModeUnicast ***** -type vxlanV6TunnelDestinationIPModeUnicast struct { +// ***** PatternFlowTcpAckNumCounter ***** +type patternFlowTcpAckNumCounter struct { validation - obj *otg.VxlanV6TunnelDestinationIPModeUnicast - vtepsHolder VxlanV6TunnelDestinationIPModeUnicastVxlanV6TunnelDestinationIPModeUnicastVtepIter + obj *otg.PatternFlowTcpAckNumCounter } -func NewVxlanV6TunnelDestinationIPModeUnicast() VxlanV6TunnelDestinationIPModeUnicast { - obj := vxlanV6TunnelDestinationIPModeUnicast{obj: &otg.VxlanV6TunnelDestinationIPModeUnicast{}} +func NewPatternFlowTcpAckNumCounter() PatternFlowTcpAckNumCounter { + obj := patternFlowTcpAckNumCounter{obj: &otg.PatternFlowTcpAckNumCounter{}} obj.setDefault() return &obj } -func (obj *vxlanV6TunnelDestinationIPModeUnicast) Msg() *otg.VxlanV6TunnelDestinationIPModeUnicast { +func (obj *patternFlowTcpAckNumCounter) Msg() *otg.PatternFlowTcpAckNumCounter { return obj.obj } -func (obj *vxlanV6TunnelDestinationIPModeUnicast) SetMsg(msg *otg.VxlanV6TunnelDestinationIPModeUnicast) VxlanV6TunnelDestinationIPModeUnicast { - obj.setNil() +func (obj *patternFlowTcpAckNumCounter) SetMsg(msg *otg.PatternFlowTcpAckNumCounter) PatternFlowTcpAckNumCounter { + proto.Merge(obj.obj, msg) return obj } -func (obj *vxlanV6TunnelDestinationIPModeUnicast) ToProto() (*otg.VxlanV6TunnelDestinationIPModeUnicast, error) { +func (obj *patternFlowTcpAckNumCounter) ToProto() (*otg.PatternFlowTcpAckNumCounter, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -181927,7 +225635,7 @@ func (obj *vxlanV6TunnelDestinationIPModeUnicast) ToProto() (*otg.VxlanV6TunnelD return obj.Msg(), nil } -func (obj *vxlanV6TunnelDestinationIPModeUnicast) FromProto(msg *otg.VxlanV6TunnelDestinationIPModeUnicast) (VxlanV6TunnelDestinationIPModeUnicast, error) { +func (obj *patternFlowTcpAckNumCounter) FromProto(msg *otg.PatternFlowTcpAckNumCounter) (PatternFlowTcpAckNumCounter, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -181936,7 +225644,7 @@ func (obj *vxlanV6TunnelDestinationIPModeUnicast) FromProto(msg *otg.VxlanV6Tunn return newObj, nil } -func (obj *vxlanV6TunnelDestinationIPModeUnicast) ToPbText() (string, error) { +func (obj *patternFlowTcpAckNumCounter) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -181948,12 +225656,12 @@ func (obj *vxlanV6TunnelDestinationIPModeUnicast) ToPbText() (string, error) { return string(protoMarshal), nil } -func (obj *vxlanV6TunnelDestinationIPModeUnicast) FromPbText(value string) error { +func (obj *patternFlowTcpAckNumCounter) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj } - obj.setNil() + vErr := obj.validateToAndFrom() if vErr != nil { return vErr @@ -181961,7 +225669,7 @@ func (obj *vxlanV6TunnelDestinationIPModeUnicast) FromPbText(value string) error return retObj } -func (obj *vxlanV6TunnelDestinationIPModeUnicast) ToYaml() (string, error) { +func (obj *patternFlowTcpAckNumCounter) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -181982,7 +225690,7 @@ func (obj *vxlanV6TunnelDestinationIPModeUnicast) ToYaml() (string, error) { return string(data), nil } -func (obj *vxlanV6TunnelDestinationIPModeUnicast) FromYaml(value string) error { +func (obj *patternFlowTcpAckNumCounter) FromYaml(value string) error { if value == "" { value = "{}" } @@ -181999,7 +225707,7 @@ func (obj *vxlanV6TunnelDestinationIPModeUnicast) FromYaml(value string) error { return fmt.Errorf("unmarshal error %s", strings.Replace( uError.Error(), "\u00a0", " ", -1)[7:]) } - obj.setNil() + vErr := obj.validateToAndFrom() if vErr != nil { return vErr @@ -182007,7 +225715,7 @@ func (obj *vxlanV6TunnelDestinationIPModeUnicast) FromYaml(value string) error { return nil } -func (obj *vxlanV6TunnelDestinationIPModeUnicast) ToJson() (string, error) { +func (obj *patternFlowTcpAckNumCounter) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -182025,7 +225733,7 @@ func (obj *vxlanV6TunnelDestinationIPModeUnicast) ToJson() (string, error) { return string(data), nil } -func (obj *vxlanV6TunnelDestinationIPModeUnicast) FromJson(value string) error { +func (obj *patternFlowTcpAckNumCounter) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -182038,7 +225746,7 @@ func (obj *vxlanV6TunnelDestinationIPModeUnicast) FromJson(value string) error { return fmt.Errorf("unmarshal error %s", strings.Replace( uError.Error(), "\u00a0", " ", -1)[7:]) } - obj.setNil() + err := obj.validateToAndFrom() if err != nil { return err @@ -182046,19 +225754,19 @@ func (obj *vxlanV6TunnelDestinationIPModeUnicast) FromJson(value string) error { return nil } -func (obj *vxlanV6TunnelDestinationIPModeUnicast) validateToAndFrom() error { +func (obj *patternFlowTcpAckNumCounter) validateToAndFrom() error { // emptyVars() obj.validateObj(&obj.validation, true) return obj.validationResult() } -func (obj *vxlanV6TunnelDestinationIPModeUnicast) Validate() error { +func (obj *patternFlowTcpAckNumCounter) Validate() error { // emptyVars() obj.validateObj(&obj.validation, false) return obj.validationResult() } -func (obj *vxlanV6TunnelDestinationIPModeUnicast) String() string { +func (obj *patternFlowTcpAckNumCounter) String() string { str, err := obj.ToYaml() if err != nil { return err.Error() @@ -182066,12 +225774,12 @@ func (obj *vxlanV6TunnelDestinationIPModeUnicast) String() string { return str } -func (obj *vxlanV6TunnelDestinationIPModeUnicast) Clone() (VxlanV6TunnelDestinationIPModeUnicast, error) { +func (obj *patternFlowTcpAckNumCounter) Clone() (PatternFlowTcpAckNumCounter, error) { vErr := obj.Validate() if vErr != nil { return nil, vErr } - newObj := NewVxlanV6TunnelDestinationIPModeUnicast() + newObj := NewPatternFlowTcpAckNumCounter() data, err := proto.Marshal(obj.Msg()) if err != nil { return nil, err @@ -182083,187 +225791,169 @@ func (obj *vxlanV6TunnelDestinationIPModeUnicast) Clone() (VxlanV6TunnelDestinat return newObj, nil } -func (obj *vxlanV6TunnelDestinationIPModeUnicast) setNil() { - obj.vtepsHolder = nil - obj.validationErrors = nil - obj.warnings = nil - obj.constraints = make(map[string]map[string]Constraints) -} - -// VxlanV6TunnelDestinationIPModeUnicast is description is TBD -type VxlanV6TunnelDestinationIPModeUnicast interface { +// PatternFlowTcpAckNumCounter is integer counter pattern +type PatternFlowTcpAckNumCounter interface { Validation - // Msg marshals VxlanV6TunnelDestinationIPModeUnicast to protobuf object *otg.VxlanV6TunnelDestinationIPModeUnicast + // Msg marshals PatternFlowTcpAckNumCounter to protobuf object *otg.PatternFlowTcpAckNumCounter // and doesn't set defaults - Msg() *otg.VxlanV6TunnelDestinationIPModeUnicast - // SetMsg unmarshals VxlanV6TunnelDestinationIPModeUnicast from protobuf object *otg.VxlanV6TunnelDestinationIPModeUnicast + Msg() *otg.PatternFlowTcpAckNumCounter + // SetMsg unmarshals PatternFlowTcpAckNumCounter from protobuf object *otg.PatternFlowTcpAckNumCounter // and doesn't set defaults - SetMsg(*otg.VxlanV6TunnelDestinationIPModeUnicast) VxlanV6TunnelDestinationIPModeUnicast - // ToProto marshals VxlanV6TunnelDestinationIPModeUnicast to protobuf object *otg.VxlanV6TunnelDestinationIPModeUnicast - ToProto() (*otg.VxlanV6TunnelDestinationIPModeUnicast, error) - // ToPbText marshals VxlanV6TunnelDestinationIPModeUnicast to protobuf text + SetMsg(*otg.PatternFlowTcpAckNumCounter) PatternFlowTcpAckNumCounter + // ToProto marshals PatternFlowTcpAckNumCounter to protobuf object *otg.PatternFlowTcpAckNumCounter + ToProto() (*otg.PatternFlowTcpAckNumCounter, error) + // ToPbText marshals PatternFlowTcpAckNumCounter to protobuf text ToPbText() (string, error) - // ToYaml marshals VxlanV6TunnelDestinationIPModeUnicast to YAML text + // ToYaml marshals PatternFlowTcpAckNumCounter to YAML text ToYaml() (string, error) - // ToJson marshals VxlanV6TunnelDestinationIPModeUnicast to JSON text + // ToJson marshals PatternFlowTcpAckNumCounter to JSON text ToJson() (string, error) - // FromProto unmarshals VxlanV6TunnelDestinationIPModeUnicast from protobuf object *otg.VxlanV6TunnelDestinationIPModeUnicast - FromProto(msg *otg.VxlanV6TunnelDestinationIPModeUnicast) (VxlanV6TunnelDestinationIPModeUnicast, error) - // FromPbText unmarshals VxlanV6TunnelDestinationIPModeUnicast from protobuf text + // FromProto unmarshals PatternFlowTcpAckNumCounter from protobuf object *otg.PatternFlowTcpAckNumCounter + FromProto(msg *otg.PatternFlowTcpAckNumCounter) (PatternFlowTcpAckNumCounter, error) + // FromPbText unmarshals PatternFlowTcpAckNumCounter from protobuf text FromPbText(value string) error - // FromYaml unmarshals VxlanV6TunnelDestinationIPModeUnicast from YAML text + // FromYaml unmarshals PatternFlowTcpAckNumCounter from YAML text FromYaml(value string) error - // FromJson unmarshals VxlanV6TunnelDestinationIPModeUnicast from JSON text + // FromJson unmarshals PatternFlowTcpAckNumCounter from JSON text FromJson(value string) error - // Validate validates VxlanV6TunnelDestinationIPModeUnicast + // Validate validates PatternFlowTcpAckNumCounter Validate() error // A stringer function String() string // Clones the object - Clone() (VxlanV6TunnelDestinationIPModeUnicast, error) + Clone() (PatternFlowTcpAckNumCounter, error) validateToAndFrom() error validateObj(vObj *validation, set_default bool) setDefault() - // Vteps returns VxlanV6TunnelDestinationIPModeUnicastVxlanV6TunnelDestinationIPModeUnicastVtepIterIter, set in VxlanV6TunnelDestinationIPModeUnicast - Vteps() VxlanV6TunnelDestinationIPModeUnicastVxlanV6TunnelDestinationIPModeUnicastVtepIter - setNil() + // Start returns uint32, set in PatternFlowTcpAckNumCounter. + Start() uint32 + // SetStart assigns uint32 provided by user to PatternFlowTcpAckNumCounter + SetStart(value uint32) PatternFlowTcpAckNumCounter + // HasStart checks if Start has been set in PatternFlowTcpAckNumCounter + HasStart() bool + // Step returns uint32, set in PatternFlowTcpAckNumCounter. + Step() uint32 + // SetStep assigns uint32 provided by user to PatternFlowTcpAckNumCounter + SetStep(value uint32) PatternFlowTcpAckNumCounter + // HasStep checks if Step has been set in PatternFlowTcpAckNumCounter + HasStep() bool + // Count returns uint32, set in PatternFlowTcpAckNumCounter. + Count() uint32 + // SetCount assigns uint32 provided by user to PatternFlowTcpAckNumCounter + SetCount(value uint32) PatternFlowTcpAckNumCounter + // HasCount checks if Count has been set in PatternFlowTcpAckNumCounter + HasCount() bool } -// List of VTEPs for member VNI(VXLAN Network Identifier) -// Vteps returns a []VxlanV6TunnelDestinationIPModeUnicastVtep -func (obj *vxlanV6TunnelDestinationIPModeUnicast) Vteps() VxlanV6TunnelDestinationIPModeUnicastVxlanV6TunnelDestinationIPModeUnicastVtepIter { - if len(obj.obj.Vteps) == 0 { - obj.obj.Vteps = []*otg.VxlanV6TunnelDestinationIPModeUnicastVtep{} - } - if obj.vtepsHolder == nil { - obj.vtepsHolder = newVxlanV6TunnelDestinationIPModeUnicastVxlanV6TunnelDestinationIPModeUnicastVtepIter(&obj.obj.Vteps).setMsg(obj) - } - return obj.vtepsHolder -} +// description is TBD +// Start returns a uint32 +func (obj *patternFlowTcpAckNumCounter) Start() uint32 { -type vxlanV6TunnelDestinationIPModeUnicastVxlanV6TunnelDestinationIPModeUnicastVtepIter struct { - obj *vxlanV6TunnelDestinationIPModeUnicast - vxlanV6TunnelDestinationIPModeUnicastVtepSlice []VxlanV6TunnelDestinationIPModeUnicastVtep - fieldPtr *[]*otg.VxlanV6TunnelDestinationIPModeUnicastVtep -} + return *obj.obj.Start -func newVxlanV6TunnelDestinationIPModeUnicastVxlanV6TunnelDestinationIPModeUnicastVtepIter(ptr *[]*otg.VxlanV6TunnelDestinationIPModeUnicastVtep) VxlanV6TunnelDestinationIPModeUnicastVxlanV6TunnelDestinationIPModeUnicastVtepIter { - return &vxlanV6TunnelDestinationIPModeUnicastVxlanV6TunnelDestinationIPModeUnicastVtepIter{fieldPtr: ptr} } -type VxlanV6TunnelDestinationIPModeUnicastVxlanV6TunnelDestinationIPModeUnicastVtepIter interface { - setMsg(*vxlanV6TunnelDestinationIPModeUnicast) VxlanV6TunnelDestinationIPModeUnicastVxlanV6TunnelDestinationIPModeUnicastVtepIter - Items() []VxlanV6TunnelDestinationIPModeUnicastVtep - Add() VxlanV6TunnelDestinationIPModeUnicastVtep - Append(items ...VxlanV6TunnelDestinationIPModeUnicastVtep) VxlanV6TunnelDestinationIPModeUnicastVxlanV6TunnelDestinationIPModeUnicastVtepIter - Set(index int, newObj VxlanV6TunnelDestinationIPModeUnicastVtep) VxlanV6TunnelDestinationIPModeUnicastVxlanV6TunnelDestinationIPModeUnicastVtepIter - Clear() VxlanV6TunnelDestinationIPModeUnicastVxlanV6TunnelDestinationIPModeUnicastVtepIter - clearHolderSlice() VxlanV6TunnelDestinationIPModeUnicastVxlanV6TunnelDestinationIPModeUnicastVtepIter - appendHolderSlice(item VxlanV6TunnelDestinationIPModeUnicastVtep) VxlanV6TunnelDestinationIPModeUnicastVxlanV6TunnelDestinationIPModeUnicastVtepIter +// description is TBD +// Start returns a uint32 +func (obj *patternFlowTcpAckNumCounter) HasStart() bool { + return obj.obj.Start != nil } -func (obj *vxlanV6TunnelDestinationIPModeUnicastVxlanV6TunnelDestinationIPModeUnicastVtepIter) setMsg(msg *vxlanV6TunnelDestinationIPModeUnicast) VxlanV6TunnelDestinationIPModeUnicastVxlanV6TunnelDestinationIPModeUnicastVtepIter { - obj.clearHolderSlice() - for _, val := range *obj.fieldPtr { - obj.appendHolderSlice(&vxlanV6TunnelDestinationIPModeUnicastVtep{obj: val}) - } - obj.obj = msg +// description is TBD +// SetStart sets the uint32 value in the PatternFlowTcpAckNumCounter object +func (obj *patternFlowTcpAckNumCounter) SetStart(value uint32) PatternFlowTcpAckNumCounter { + + obj.obj.Start = &value return obj } -func (obj *vxlanV6TunnelDestinationIPModeUnicastVxlanV6TunnelDestinationIPModeUnicastVtepIter) Items() []VxlanV6TunnelDestinationIPModeUnicastVtep { - return obj.vxlanV6TunnelDestinationIPModeUnicastVtepSlice -} +// description is TBD +// Step returns a uint32 +func (obj *patternFlowTcpAckNumCounter) Step() uint32 { + + return *obj.obj.Step -func (obj *vxlanV6TunnelDestinationIPModeUnicastVxlanV6TunnelDestinationIPModeUnicastVtepIter) Add() VxlanV6TunnelDestinationIPModeUnicastVtep { - newObj := &otg.VxlanV6TunnelDestinationIPModeUnicastVtep{} - *obj.fieldPtr = append(*obj.fieldPtr, newObj) - newLibObj := &vxlanV6TunnelDestinationIPModeUnicastVtep{obj: newObj} - newLibObj.setDefault() - obj.vxlanV6TunnelDestinationIPModeUnicastVtepSlice = append(obj.vxlanV6TunnelDestinationIPModeUnicastVtepSlice, newLibObj) - return newLibObj } -func (obj *vxlanV6TunnelDestinationIPModeUnicastVxlanV6TunnelDestinationIPModeUnicastVtepIter) Append(items ...VxlanV6TunnelDestinationIPModeUnicastVtep) VxlanV6TunnelDestinationIPModeUnicastVxlanV6TunnelDestinationIPModeUnicastVtepIter { - for _, item := range items { - newObj := item.Msg() - *obj.fieldPtr = append(*obj.fieldPtr, newObj) - obj.vxlanV6TunnelDestinationIPModeUnicastVtepSlice = append(obj.vxlanV6TunnelDestinationIPModeUnicastVtepSlice, item) - } - return obj +// description is TBD +// Step returns a uint32 +func (obj *patternFlowTcpAckNumCounter) HasStep() bool { + return obj.obj.Step != nil } -func (obj *vxlanV6TunnelDestinationIPModeUnicastVxlanV6TunnelDestinationIPModeUnicastVtepIter) Set(index int, newObj VxlanV6TunnelDestinationIPModeUnicastVtep) VxlanV6TunnelDestinationIPModeUnicastVxlanV6TunnelDestinationIPModeUnicastVtepIter { - (*obj.fieldPtr)[index] = newObj.Msg() - obj.vxlanV6TunnelDestinationIPModeUnicastVtepSlice[index] = newObj +// description is TBD +// SetStep sets the uint32 value in the PatternFlowTcpAckNumCounter object +func (obj *patternFlowTcpAckNumCounter) SetStep(value uint32) PatternFlowTcpAckNumCounter { + + obj.obj.Step = &value return obj } -func (obj *vxlanV6TunnelDestinationIPModeUnicastVxlanV6TunnelDestinationIPModeUnicastVtepIter) Clear() VxlanV6TunnelDestinationIPModeUnicastVxlanV6TunnelDestinationIPModeUnicastVtepIter { - if len(*obj.fieldPtr) > 0 { - *obj.fieldPtr = []*otg.VxlanV6TunnelDestinationIPModeUnicastVtep{} - obj.vxlanV6TunnelDestinationIPModeUnicastVtepSlice = []VxlanV6TunnelDestinationIPModeUnicastVtep{} - } - return obj + +// description is TBD +// Count returns a uint32 +func (obj *patternFlowTcpAckNumCounter) Count() uint32 { + + return *obj.obj.Count + } -func (obj *vxlanV6TunnelDestinationIPModeUnicastVxlanV6TunnelDestinationIPModeUnicastVtepIter) clearHolderSlice() VxlanV6TunnelDestinationIPModeUnicastVxlanV6TunnelDestinationIPModeUnicastVtepIter { - if len(obj.vxlanV6TunnelDestinationIPModeUnicastVtepSlice) > 0 { - obj.vxlanV6TunnelDestinationIPModeUnicastVtepSlice = []VxlanV6TunnelDestinationIPModeUnicastVtep{} - } - return obj + +// description is TBD +// Count returns a uint32 +func (obj *patternFlowTcpAckNumCounter) HasCount() bool { + return obj.obj.Count != nil } -func (obj *vxlanV6TunnelDestinationIPModeUnicastVxlanV6TunnelDestinationIPModeUnicastVtepIter) appendHolderSlice(item VxlanV6TunnelDestinationIPModeUnicastVtep) VxlanV6TunnelDestinationIPModeUnicastVxlanV6TunnelDestinationIPModeUnicastVtepIter { - obj.vxlanV6TunnelDestinationIPModeUnicastVtepSlice = append(obj.vxlanV6TunnelDestinationIPModeUnicastVtepSlice, item) + +// description is TBD +// SetCount sets the uint32 value in the PatternFlowTcpAckNumCounter object +func (obj *patternFlowTcpAckNumCounter) SetCount(value uint32) PatternFlowTcpAckNumCounter { + + obj.obj.Count = &value return obj } -func (obj *vxlanV6TunnelDestinationIPModeUnicast) validateObj(vObj *validation, set_default bool) { +func (obj *patternFlowTcpAckNumCounter) validateObj(vObj *validation, set_default bool) { if set_default { obj.setDefault() } - if len(obj.obj.Vteps) != 0 { - - if set_default { - obj.Vteps().clearHolderSlice() - for _, item := range obj.obj.Vteps { - obj.Vteps().appendHolderSlice(&vxlanV6TunnelDestinationIPModeUnicastVtep{obj: item}) - } - } - for _, item := range obj.Vteps().Items() { - item.validateObj(vObj, set_default) - } - - } - } -func (obj *vxlanV6TunnelDestinationIPModeUnicast) setDefault() { +func (obj *patternFlowTcpAckNumCounter) setDefault() { + if obj.obj.Start == nil { + obj.SetStart(0) + } + if obj.obj.Step == nil { + obj.SetStep(1) + } + if obj.obj.Count == nil { + obj.SetCount(1) + } } -// ***** VxlanV6TunnelDestinationIPModeMulticast ***** -type vxlanV6TunnelDestinationIPModeMulticast struct { +// ***** PatternFlowTcpAckNumMetricTag ***** +type patternFlowTcpAckNumMetricTag struct { validation - obj *otg.VxlanV6TunnelDestinationIPModeMulticast + obj *otg.PatternFlowTcpAckNumMetricTag } -func NewVxlanV6TunnelDestinationIPModeMulticast() VxlanV6TunnelDestinationIPModeMulticast { - obj := vxlanV6TunnelDestinationIPModeMulticast{obj: &otg.VxlanV6TunnelDestinationIPModeMulticast{}} +func NewPatternFlowTcpAckNumMetricTag() PatternFlowTcpAckNumMetricTag { + obj := patternFlowTcpAckNumMetricTag{obj: &otg.PatternFlowTcpAckNumMetricTag{}} obj.setDefault() return &obj } -func (obj *vxlanV6TunnelDestinationIPModeMulticast) Msg() *otg.VxlanV6TunnelDestinationIPModeMulticast { +func (obj *patternFlowTcpAckNumMetricTag) Msg() *otg.PatternFlowTcpAckNumMetricTag { return obj.obj } -func (obj *vxlanV6TunnelDestinationIPModeMulticast) SetMsg(msg *otg.VxlanV6TunnelDestinationIPModeMulticast) VxlanV6TunnelDestinationIPModeMulticast { +func (obj *patternFlowTcpAckNumMetricTag) SetMsg(msg *otg.PatternFlowTcpAckNumMetricTag) PatternFlowTcpAckNumMetricTag { proto.Merge(obj.obj, msg) return obj } -func (obj *vxlanV6TunnelDestinationIPModeMulticast) ToProto() (*otg.VxlanV6TunnelDestinationIPModeMulticast, error) { +func (obj *patternFlowTcpAckNumMetricTag) ToProto() (*otg.PatternFlowTcpAckNumMetricTag, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -182271,7 +225961,7 @@ func (obj *vxlanV6TunnelDestinationIPModeMulticast) ToProto() (*otg.VxlanV6Tunne return obj.Msg(), nil } -func (obj *vxlanV6TunnelDestinationIPModeMulticast) FromProto(msg *otg.VxlanV6TunnelDestinationIPModeMulticast) (VxlanV6TunnelDestinationIPModeMulticast, error) { +func (obj *patternFlowTcpAckNumMetricTag) FromProto(msg *otg.PatternFlowTcpAckNumMetricTag) (PatternFlowTcpAckNumMetricTag, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -182280,7 +225970,7 @@ func (obj *vxlanV6TunnelDestinationIPModeMulticast) FromProto(msg *otg.VxlanV6Tu return newObj, nil } -func (obj *vxlanV6TunnelDestinationIPModeMulticast) ToPbText() (string, error) { +func (obj *patternFlowTcpAckNumMetricTag) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -182292,7 +225982,7 @@ func (obj *vxlanV6TunnelDestinationIPModeMulticast) ToPbText() (string, error) { return string(protoMarshal), nil } -func (obj *vxlanV6TunnelDestinationIPModeMulticast) FromPbText(value string) error { +func (obj *patternFlowTcpAckNumMetricTag) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj @@ -182305,7 +225995,7 @@ func (obj *vxlanV6TunnelDestinationIPModeMulticast) FromPbText(value string) err return retObj } -func (obj *vxlanV6TunnelDestinationIPModeMulticast) ToYaml() (string, error) { +func (obj *patternFlowTcpAckNumMetricTag) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -182326,7 +226016,7 @@ func (obj *vxlanV6TunnelDestinationIPModeMulticast) ToYaml() (string, error) { return string(data), nil } -func (obj *vxlanV6TunnelDestinationIPModeMulticast) FromYaml(value string) error { +func (obj *patternFlowTcpAckNumMetricTag) FromYaml(value string) error { if value == "" { value = "{}" } @@ -182351,7 +226041,7 @@ func (obj *vxlanV6TunnelDestinationIPModeMulticast) FromYaml(value string) error return nil } -func (obj *vxlanV6TunnelDestinationIPModeMulticast) ToJson() (string, error) { +func (obj *patternFlowTcpAckNumMetricTag) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -182369,7 +226059,7 @@ func (obj *vxlanV6TunnelDestinationIPModeMulticast) ToJson() (string, error) { return string(data), nil } -func (obj *vxlanV6TunnelDestinationIPModeMulticast) FromJson(value string) error { +func (obj *patternFlowTcpAckNumMetricTag) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -182390,19 +226080,19 @@ func (obj *vxlanV6TunnelDestinationIPModeMulticast) FromJson(value string) error return nil } -func (obj *vxlanV6TunnelDestinationIPModeMulticast) validateToAndFrom() error { +func (obj *patternFlowTcpAckNumMetricTag) validateToAndFrom() error { // emptyVars() obj.validateObj(&obj.validation, true) return obj.validationResult() } -func (obj *vxlanV6TunnelDestinationIPModeMulticast) Validate() error { +func (obj *patternFlowTcpAckNumMetricTag) Validate() error { // emptyVars() obj.validateObj(&obj.validation, false) return obj.validationResult() } -func (obj *vxlanV6TunnelDestinationIPModeMulticast) String() string { +func (obj *patternFlowTcpAckNumMetricTag) String() string { str, err := obj.ToYaml() if err != nil { return err.Error() @@ -182410,12 +226100,12 @@ func (obj *vxlanV6TunnelDestinationIPModeMulticast) String() string { return str } -func (obj *vxlanV6TunnelDestinationIPModeMulticast) Clone() (VxlanV6TunnelDestinationIPModeMulticast, error) { +func (obj *patternFlowTcpAckNumMetricTag) Clone() (PatternFlowTcpAckNumMetricTag, error) { vErr := obj.Validate() if vErr != nil { return nil, vErr } - newObj := NewVxlanV6TunnelDestinationIPModeMulticast() + newObj := NewPatternFlowTcpAckNumMetricTag() data, err := proto.Marshal(obj.Msg()) if err != nil { return nil, err @@ -182427,114 +226117,183 @@ func (obj *vxlanV6TunnelDestinationIPModeMulticast) Clone() (VxlanV6TunnelDestin return newObj, nil } -// VxlanV6TunnelDestinationIPModeMulticast is multicast Group address for member VNI(VXLAN Network Identifier) -type VxlanV6TunnelDestinationIPModeMulticast interface { +// PatternFlowTcpAckNumMetricTag is metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. +type PatternFlowTcpAckNumMetricTag interface { Validation - // Msg marshals VxlanV6TunnelDestinationIPModeMulticast to protobuf object *otg.VxlanV6TunnelDestinationIPModeMulticast + // Msg marshals PatternFlowTcpAckNumMetricTag to protobuf object *otg.PatternFlowTcpAckNumMetricTag // and doesn't set defaults - Msg() *otg.VxlanV6TunnelDestinationIPModeMulticast - // SetMsg unmarshals VxlanV6TunnelDestinationIPModeMulticast from protobuf object *otg.VxlanV6TunnelDestinationIPModeMulticast + Msg() *otg.PatternFlowTcpAckNumMetricTag + // SetMsg unmarshals PatternFlowTcpAckNumMetricTag from protobuf object *otg.PatternFlowTcpAckNumMetricTag // and doesn't set defaults - SetMsg(*otg.VxlanV6TunnelDestinationIPModeMulticast) VxlanV6TunnelDestinationIPModeMulticast - // ToProto marshals VxlanV6TunnelDestinationIPModeMulticast to protobuf object *otg.VxlanV6TunnelDestinationIPModeMulticast - ToProto() (*otg.VxlanV6TunnelDestinationIPModeMulticast, error) - // ToPbText marshals VxlanV6TunnelDestinationIPModeMulticast to protobuf text + SetMsg(*otg.PatternFlowTcpAckNumMetricTag) PatternFlowTcpAckNumMetricTag + // ToProto marshals PatternFlowTcpAckNumMetricTag to protobuf object *otg.PatternFlowTcpAckNumMetricTag + ToProto() (*otg.PatternFlowTcpAckNumMetricTag, error) + // ToPbText marshals PatternFlowTcpAckNumMetricTag to protobuf text ToPbText() (string, error) - // ToYaml marshals VxlanV6TunnelDestinationIPModeMulticast to YAML text + // ToYaml marshals PatternFlowTcpAckNumMetricTag to YAML text ToYaml() (string, error) - // ToJson marshals VxlanV6TunnelDestinationIPModeMulticast to JSON text + // ToJson marshals PatternFlowTcpAckNumMetricTag to JSON text ToJson() (string, error) - // FromProto unmarshals VxlanV6TunnelDestinationIPModeMulticast from protobuf object *otg.VxlanV6TunnelDestinationIPModeMulticast - FromProto(msg *otg.VxlanV6TunnelDestinationIPModeMulticast) (VxlanV6TunnelDestinationIPModeMulticast, error) - // FromPbText unmarshals VxlanV6TunnelDestinationIPModeMulticast from protobuf text + // FromProto unmarshals PatternFlowTcpAckNumMetricTag from protobuf object *otg.PatternFlowTcpAckNumMetricTag + FromProto(msg *otg.PatternFlowTcpAckNumMetricTag) (PatternFlowTcpAckNumMetricTag, error) + // FromPbText unmarshals PatternFlowTcpAckNumMetricTag from protobuf text FromPbText(value string) error - // FromYaml unmarshals VxlanV6TunnelDestinationIPModeMulticast from YAML text + // FromYaml unmarshals PatternFlowTcpAckNumMetricTag from YAML text FromYaml(value string) error - // FromJson unmarshals VxlanV6TunnelDestinationIPModeMulticast from JSON text + // FromJson unmarshals PatternFlowTcpAckNumMetricTag from JSON text FromJson(value string) error - // Validate validates VxlanV6TunnelDestinationIPModeMulticast + // Validate validates PatternFlowTcpAckNumMetricTag Validate() error // A stringer function String() string // Clones the object - Clone() (VxlanV6TunnelDestinationIPModeMulticast, error) + Clone() (PatternFlowTcpAckNumMetricTag, error) validateToAndFrom() error validateObj(vObj *validation, set_default bool) setDefault() - // Address returns string, set in VxlanV6TunnelDestinationIPModeMulticast. - Address() string - // SetAddress assigns string provided by user to VxlanV6TunnelDestinationIPModeMulticast - SetAddress(value string) VxlanV6TunnelDestinationIPModeMulticast - // HasAddress checks if Address has been set in VxlanV6TunnelDestinationIPModeMulticast - HasAddress() bool + // Name returns string, set in PatternFlowTcpAckNumMetricTag. + Name() string + // SetName assigns string provided by user to PatternFlowTcpAckNumMetricTag + SetName(value string) PatternFlowTcpAckNumMetricTag + // Offset returns uint32, set in PatternFlowTcpAckNumMetricTag. + Offset() uint32 + // SetOffset assigns uint32 provided by user to PatternFlowTcpAckNumMetricTag + SetOffset(value uint32) PatternFlowTcpAckNumMetricTag + // HasOffset checks if Offset has been set in PatternFlowTcpAckNumMetricTag + HasOffset() bool + // Length returns uint32, set in PatternFlowTcpAckNumMetricTag. + Length() uint32 + // SetLength assigns uint32 provided by user to PatternFlowTcpAckNumMetricTag + SetLength(value uint32) PatternFlowTcpAckNumMetricTag + // HasLength checks if Length has been set in PatternFlowTcpAckNumMetricTag + HasLength() bool } -// IPv6 Multicast address -// Address returns a string -func (obj *vxlanV6TunnelDestinationIPModeMulticast) Address() string { +// Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field +// Name returns a string +func (obj *patternFlowTcpAckNumMetricTag) Name() string { - return *obj.obj.Address + return *obj.obj.Name } -// IPv6 Multicast address -// Address returns a string -func (obj *vxlanV6TunnelDestinationIPModeMulticast) HasAddress() bool { - return obj.obj.Address != nil +// Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field +// SetName sets the string value in the PatternFlowTcpAckNumMetricTag object +func (obj *patternFlowTcpAckNumMetricTag) SetName(value string) PatternFlowTcpAckNumMetricTag { + + obj.obj.Name = &value + return obj } -// IPv6 Multicast address -// SetAddress sets the string value in the VxlanV6TunnelDestinationIPModeMulticast object -func (obj *vxlanV6TunnelDestinationIPModeMulticast) SetAddress(value string) VxlanV6TunnelDestinationIPModeMulticast { +// Offset in bits relative to start of corresponding header field +// Offset returns a uint32 +func (obj *patternFlowTcpAckNumMetricTag) Offset() uint32 { - obj.obj.Address = &value + return *obj.obj.Offset + +} + +// Offset in bits relative to start of corresponding header field +// Offset returns a uint32 +func (obj *patternFlowTcpAckNumMetricTag) HasOffset() bool { + return obj.obj.Offset != nil +} + +// Offset in bits relative to start of corresponding header field +// SetOffset sets the uint32 value in the PatternFlowTcpAckNumMetricTag object +func (obj *patternFlowTcpAckNumMetricTag) SetOffset(value uint32) PatternFlowTcpAckNumMetricTag { + + obj.obj.Offset = &value return obj } -func (obj *vxlanV6TunnelDestinationIPModeMulticast) validateObj(vObj *validation, set_default bool) { +// Number of bits to track for metrics starting from configured offset of corresponding header field +// Length returns a uint32 +func (obj *patternFlowTcpAckNumMetricTag) Length() uint32 { + + return *obj.obj.Length + +} + +// Number of bits to track for metrics starting from configured offset of corresponding header field +// Length returns a uint32 +func (obj *patternFlowTcpAckNumMetricTag) HasLength() bool { + return obj.obj.Length != nil +} + +// Number of bits to track for metrics starting from configured offset of corresponding header field +// SetLength sets the uint32 value in the PatternFlowTcpAckNumMetricTag object +func (obj *patternFlowTcpAckNumMetricTag) SetLength(value uint32) PatternFlowTcpAckNumMetricTag { + + obj.obj.Length = &value + return obj +} + +func (obj *patternFlowTcpAckNumMetricTag) validateObj(vObj *validation, set_default bool) { if set_default { obj.setDefault() } - if obj.obj.Address != nil { + // Name is required + if obj.obj.Name == nil { + vObj.validationErrors = append(vObj.validationErrors, "Name is required field on interface PatternFlowTcpAckNumMetricTag") + } - err := obj.validateIpv6(obj.Address()) - if err != nil { - vObj.validationErrors = append(vObj.validationErrors, fmt.Sprintf("%s %s", err.Error(), "on VxlanV6TunnelDestinationIPModeMulticast.Address")) + if obj.obj.Offset != nil { + + if *obj.obj.Offset > 31 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("0 <= PatternFlowTcpAckNumMetricTag.Offset <= 31 but Got %d", *obj.obj.Offset)) + } + + } + + if obj.obj.Length != nil { + + if *obj.obj.Length < 1 || *obj.obj.Length > 32 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("1 <= PatternFlowTcpAckNumMetricTag.Length <= 32 but Got %d", *obj.obj.Length)) } } } -func (obj *vxlanV6TunnelDestinationIPModeMulticast) setDefault() { +func (obj *patternFlowTcpAckNumMetricTag) setDefault() { + if obj.obj.Offset == nil { + obj.SetOffset(0) + } + if obj.obj.Length == nil { + obj.SetLength(32) + } } -// ***** RsvpSessionAttribute ***** -type rsvpSessionAttribute struct { +// ***** PatternFlowTcpDataOffsetCounter ***** +type patternFlowTcpDataOffsetCounter struct { validation - obj *otg.RsvpSessionAttribute - resourceAffinitiesHolder RsvpResourceAffinities + obj *otg.PatternFlowTcpDataOffsetCounter } -func NewRsvpSessionAttribute() RsvpSessionAttribute { - obj := rsvpSessionAttribute{obj: &otg.RsvpSessionAttribute{}} +func NewPatternFlowTcpDataOffsetCounter() PatternFlowTcpDataOffsetCounter { + obj := patternFlowTcpDataOffsetCounter{obj: &otg.PatternFlowTcpDataOffsetCounter{}} obj.setDefault() return &obj } -func (obj *rsvpSessionAttribute) Msg() *otg.RsvpSessionAttribute { +func (obj *patternFlowTcpDataOffsetCounter) Msg() *otg.PatternFlowTcpDataOffsetCounter { return obj.obj } -func (obj *rsvpSessionAttribute) SetMsg(msg *otg.RsvpSessionAttribute) RsvpSessionAttribute { - obj.setNil() +func (obj *patternFlowTcpDataOffsetCounter) SetMsg(msg *otg.PatternFlowTcpDataOffsetCounter) PatternFlowTcpDataOffsetCounter { + proto.Merge(obj.obj, msg) return obj } -func (obj *rsvpSessionAttribute) ToProto() (*otg.RsvpSessionAttribute, error) { +func (obj *patternFlowTcpDataOffsetCounter) ToProto() (*otg.PatternFlowTcpDataOffsetCounter, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -182542,7 +226301,7 @@ func (obj *rsvpSessionAttribute) ToProto() (*otg.RsvpSessionAttribute, error) { return obj.Msg(), nil } -func (obj *rsvpSessionAttribute) FromProto(msg *otg.RsvpSessionAttribute) (RsvpSessionAttribute, error) { +func (obj *patternFlowTcpDataOffsetCounter) FromProto(msg *otg.PatternFlowTcpDataOffsetCounter) (PatternFlowTcpDataOffsetCounter, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -182551,7 +226310,7 @@ func (obj *rsvpSessionAttribute) FromProto(msg *otg.RsvpSessionAttribute) (RsvpS return newObj, nil } -func (obj *rsvpSessionAttribute) ToPbText() (string, error) { +func (obj *patternFlowTcpDataOffsetCounter) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -182563,12 +226322,12 @@ func (obj *rsvpSessionAttribute) ToPbText() (string, error) { return string(protoMarshal), nil } -func (obj *rsvpSessionAttribute) FromPbText(value string) error { +func (obj *patternFlowTcpDataOffsetCounter) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj } - obj.setNil() + vErr := obj.validateToAndFrom() if vErr != nil { return vErr @@ -182576,7 +226335,7 @@ func (obj *rsvpSessionAttribute) FromPbText(value string) error { return retObj } -func (obj *rsvpSessionAttribute) ToYaml() (string, error) { +func (obj *patternFlowTcpDataOffsetCounter) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -182597,7 +226356,7 @@ func (obj *rsvpSessionAttribute) ToYaml() (string, error) { return string(data), nil } -func (obj *rsvpSessionAttribute) FromYaml(value string) error { +func (obj *patternFlowTcpDataOffsetCounter) FromYaml(value string) error { if value == "" { value = "{}" } @@ -182614,7 +226373,7 @@ func (obj *rsvpSessionAttribute) FromYaml(value string) error { return fmt.Errorf("unmarshal error %s", strings.Replace( uError.Error(), "\u00a0", " ", -1)[7:]) } - obj.setNil() + vErr := obj.validateToAndFrom() if vErr != nil { return vErr @@ -182622,7 +226381,7 @@ func (obj *rsvpSessionAttribute) FromYaml(value string) error { return nil } -func (obj *rsvpSessionAttribute) ToJson() (string, error) { +func (obj *patternFlowTcpDataOffsetCounter) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -182640,7 +226399,7 @@ func (obj *rsvpSessionAttribute) ToJson() (string, error) { return string(data), nil } -func (obj *rsvpSessionAttribute) FromJson(value string) error { +func (obj *patternFlowTcpDataOffsetCounter) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -182653,7 +226412,7 @@ func (obj *rsvpSessionAttribute) FromJson(value string) error { return fmt.Errorf("unmarshal error %s", strings.Replace( uError.Error(), "\u00a0", " ", -1)[7:]) } - obj.setNil() + err := obj.validateToAndFrom() if err != nil { return err @@ -182661,19 +226420,19 @@ func (obj *rsvpSessionAttribute) FromJson(value string) error { return nil } -func (obj *rsvpSessionAttribute) validateToAndFrom() error { +func (obj *patternFlowTcpDataOffsetCounter) validateToAndFrom() error { // emptyVars() obj.validateObj(&obj.validation, true) return obj.validationResult() } -func (obj *rsvpSessionAttribute) Validate() error { +func (obj *patternFlowTcpDataOffsetCounter) Validate() error { // emptyVars() obj.validateObj(&obj.validation, false) return obj.validationResult() } -func (obj *rsvpSessionAttribute) String() string { +func (obj *patternFlowTcpDataOffsetCounter) String() string { str, err := obj.ToYaml() if err != nil { return err.Error() @@ -182681,12 +226440,12 @@ func (obj *rsvpSessionAttribute) String() string { return str } -func (obj *rsvpSessionAttribute) Clone() (RsvpSessionAttribute, error) { +func (obj *patternFlowTcpDataOffsetCounter) Clone() (PatternFlowTcpDataOffsetCounter, error) { vErr := obj.Validate() if vErr != nil { return nil, vErr } - newObj := NewRsvpSessionAttribute() + newObj := NewPatternFlowTcpDataOffsetCounter() data, err := proto.Marshal(obj.Msg()) if err != nil { return nil, err @@ -182698,443 +226457,199 @@ func (obj *rsvpSessionAttribute) Clone() (RsvpSessionAttribute, error) { return newObj, nil } -func (obj *rsvpSessionAttribute) setNil() { - obj.resourceAffinitiesHolder = nil - obj.validationErrors = nil - obj.warnings = nil - obj.constraints = make(map[string]map[string]Constraints) -} - -// RsvpSessionAttribute is configuration for RSVP-TE SESSION_ATTRIBUTE object included in Path Messages as defined in RFC3209. The bandwidth_protection_desired and node_protection_desired flags are defined in RFC4090 (Fast Reroute). -type RsvpSessionAttribute interface { +// PatternFlowTcpDataOffsetCounter is integer counter pattern +type PatternFlowTcpDataOffsetCounter interface { Validation - // Msg marshals RsvpSessionAttribute to protobuf object *otg.RsvpSessionAttribute + // Msg marshals PatternFlowTcpDataOffsetCounter to protobuf object *otg.PatternFlowTcpDataOffsetCounter // and doesn't set defaults - Msg() *otg.RsvpSessionAttribute - // SetMsg unmarshals RsvpSessionAttribute from protobuf object *otg.RsvpSessionAttribute + Msg() *otg.PatternFlowTcpDataOffsetCounter + // SetMsg unmarshals PatternFlowTcpDataOffsetCounter from protobuf object *otg.PatternFlowTcpDataOffsetCounter // and doesn't set defaults - SetMsg(*otg.RsvpSessionAttribute) RsvpSessionAttribute - // ToProto marshals RsvpSessionAttribute to protobuf object *otg.RsvpSessionAttribute - ToProto() (*otg.RsvpSessionAttribute, error) - // ToPbText marshals RsvpSessionAttribute to protobuf text + SetMsg(*otg.PatternFlowTcpDataOffsetCounter) PatternFlowTcpDataOffsetCounter + // ToProto marshals PatternFlowTcpDataOffsetCounter to protobuf object *otg.PatternFlowTcpDataOffsetCounter + ToProto() (*otg.PatternFlowTcpDataOffsetCounter, error) + // ToPbText marshals PatternFlowTcpDataOffsetCounter to protobuf text ToPbText() (string, error) - // ToYaml marshals RsvpSessionAttribute to YAML text + // ToYaml marshals PatternFlowTcpDataOffsetCounter to YAML text ToYaml() (string, error) - // ToJson marshals RsvpSessionAttribute to JSON text + // ToJson marshals PatternFlowTcpDataOffsetCounter to JSON text ToJson() (string, error) - // FromProto unmarshals RsvpSessionAttribute from protobuf object *otg.RsvpSessionAttribute - FromProto(msg *otg.RsvpSessionAttribute) (RsvpSessionAttribute, error) - // FromPbText unmarshals RsvpSessionAttribute from protobuf text + // FromProto unmarshals PatternFlowTcpDataOffsetCounter from protobuf object *otg.PatternFlowTcpDataOffsetCounter + FromProto(msg *otg.PatternFlowTcpDataOffsetCounter) (PatternFlowTcpDataOffsetCounter, error) + // FromPbText unmarshals PatternFlowTcpDataOffsetCounter from protobuf text FromPbText(value string) error - // FromYaml unmarshals RsvpSessionAttribute from YAML text + // FromYaml unmarshals PatternFlowTcpDataOffsetCounter from YAML text FromYaml(value string) error - // FromJson unmarshals RsvpSessionAttribute from JSON text + // FromJson unmarshals PatternFlowTcpDataOffsetCounter from JSON text FromJson(value string) error - // Validate validates RsvpSessionAttribute + // Validate validates PatternFlowTcpDataOffsetCounter Validate() error // A stringer function String() string // Clones the object - Clone() (RsvpSessionAttribute, error) + Clone() (PatternFlowTcpDataOffsetCounter, error) validateToAndFrom() error validateObj(vObj *validation, set_default bool) setDefault() - // AutoGenerateSessionName returns bool, set in RsvpSessionAttribute. - AutoGenerateSessionName() bool - // SetAutoGenerateSessionName assigns bool provided by user to RsvpSessionAttribute - SetAutoGenerateSessionName(value bool) RsvpSessionAttribute - // HasAutoGenerateSessionName checks if AutoGenerateSessionName has been set in RsvpSessionAttribute - HasAutoGenerateSessionName() bool - // SessionName returns string, set in RsvpSessionAttribute. - SessionName() string - // SetSessionName assigns string provided by user to RsvpSessionAttribute - SetSessionName(value string) RsvpSessionAttribute - // HasSessionName checks if SessionName has been set in RsvpSessionAttribute - HasSessionName() bool - // SetupPriority returns uint32, set in RsvpSessionAttribute. - SetupPriority() uint32 - // SetSetupPriority assigns uint32 provided by user to RsvpSessionAttribute - SetSetupPriority(value uint32) RsvpSessionAttribute - // HasSetupPriority checks if SetupPriority has been set in RsvpSessionAttribute - HasSetupPriority() bool - // HoldingPriority returns uint32, set in RsvpSessionAttribute. - HoldingPriority() uint32 - // SetHoldingPriority assigns uint32 provided by user to RsvpSessionAttribute - SetHoldingPriority(value uint32) RsvpSessionAttribute - // HasHoldingPriority checks if HoldingPriority has been set in RsvpSessionAttribute - HasHoldingPriority() bool - // LocalProtectionDesired returns bool, set in RsvpSessionAttribute. - LocalProtectionDesired() bool - // SetLocalProtectionDesired assigns bool provided by user to RsvpSessionAttribute - SetLocalProtectionDesired(value bool) RsvpSessionAttribute - // HasLocalProtectionDesired checks if LocalProtectionDesired has been set in RsvpSessionAttribute - HasLocalProtectionDesired() bool - // LabelRecordingDesired returns bool, set in RsvpSessionAttribute. - LabelRecordingDesired() bool - // SetLabelRecordingDesired assigns bool provided by user to RsvpSessionAttribute - SetLabelRecordingDesired(value bool) RsvpSessionAttribute - // HasLabelRecordingDesired checks if LabelRecordingDesired has been set in RsvpSessionAttribute - HasLabelRecordingDesired() bool - // SeStyleDesired returns bool, set in RsvpSessionAttribute. - SeStyleDesired() bool - // SetSeStyleDesired assigns bool provided by user to RsvpSessionAttribute - SetSeStyleDesired(value bool) RsvpSessionAttribute - // HasSeStyleDesired checks if SeStyleDesired has been set in RsvpSessionAttribute - HasSeStyleDesired() bool - // BandwidthProtectionDesired returns bool, set in RsvpSessionAttribute. - BandwidthProtectionDesired() bool - // SetBandwidthProtectionDesired assigns bool provided by user to RsvpSessionAttribute - SetBandwidthProtectionDesired(value bool) RsvpSessionAttribute - // HasBandwidthProtectionDesired checks if BandwidthProtectionDesired has been set in RsvpSessionAttribute - HasBandwidthProtectionDesired() bool - // NodeProtectionDesired returns bool, set in RsvpSessionAttribute. - NodeProtectionDesired() bool - // SetNodeProtectionDesired assigns bool provided by user to RsvpSessionAttribute - SetNodeProtectionDesired(value bool) RsvpSessionAttribute - // HasNodeProtectionDesired checks if NodeProtectionDesired has been set in RsvpSessionAttribute - HasNodeProtectionDesired() bool - // ResourceAffinities returns RsvpResourceAffinities, set in RsvpSessionAttribute. - // RsvpResourceAffinities is this is an optional object. If included, the extended SESSION_ATTRIBUTE object is sent in the Path message containing - // the additional fields included in this object. This contains a set of three bitmaps using which further constraints can be - // set on the path calculated for the LSP based on the Admin Group settings in the IGP (e.g ISIS or OSPF interface). - ResourceAffinities() RsvpResourceAffinities - // SetResourceAffinities assigns RsvpResourceAffinities provided by user to RsvpSessionAttribute. - // RsvpResourceAffinities is this is an optional object. If included, the extended SESSION_ATTRIBUTE object is sent in the Path message containing - // the additional fields included in this object. This contains a set of three bitmaps using which further constraints can be - // set on the path calculated for the LSP based on the Admin Group settings in the IGP (e.g ISIS or OSPF interface). - SetResourceAffinities(value RsvpResourceAffinities) RsvpSessionAttribute - // HasResourceAffinities checks if ResourceAffinities has been set in RsvpSessionAttribute - HasResourceAffinities() bool - setNil() -} - -// If this is enabled, an auto-generated Session Name is included in the SESSION_ATTRIBUTE object in the Path Message for this LSP. -// AutoGenerateSessionName returns a bool -func (obj *rsvpSessionAttribute) AutoGenerateSessionName() bool { - - return *obj.obj.AutoGenerateSessionName - -} - -// If this is enabled, an auto-generated Session Name is included in the SESSION_ATTRIBUTE object in the Path Message for this LSP. -// AutoGenerateSessionName returns a bool -func (obj *rsvpSessionAttribute) HasAutoGenerateSessionName() bool { - return obj.obj.AutoGenerateSessionName != nil -} - -// If this is enabled, an auto-generated Session Name is included in the SESSION_ATTRIBUTE object in the Path Message for this LSP. -// SetAutoGenerateSessionName sets the bool value in the RsvpSessionAttribute object -func (obj *rsvpSessionAttribute) SetAutoGenerateSessionName(value bool) RsvpSessionAttribute { - - obj.obj.AutoGenerateSessionName = &value - return obj -} - -// If auto_generate_session_name is set to 'false', then the value of this field is used to fill the Session Name field of the SESSION_ATTRIBUTE object in the Path Message for this LSP. It is suggested to include the Local IP, Remote IP, Tunnel ID and LSP ID in the auto-generated Session Name to ensure uniqueness of the name in the test. The maximum length of session name is 254 bytes. -// SessionName returns a string -func (obj *rsvpSessionAttribute) SessionName() string { - - return *obj.obj.SessionName - -} - -// If auto_generate_session_name is set to 'false', then the value of this field is used to fill the Session Name field of the SESSION_ATTRIBUTE object in the Path Message for this LSP. It is suggested to include the Local IP, Remote IP, Tunnel ID and LSP ID in the auto-generated Session Name to ensure uniqueness of the name in the test. The maximum length of session name is 254 bytes. -// SessionName returns a string -func (obj *rsvpSessionAttribute) HasSessionName() bool { - return obj.obj.SessionName != nil -} - -// If auto_generate_session_name is set to 'false', then the value of this field is used to fill the Session Name field of the SESSION_ATTRIBUTE object in the Path Message for this LSP. It is suggested to include the Local IP, Remote IP, Tunnel ID and LSP ID in the auto-generated Session Name to ensure uniqueness of the name in the test. The maximum length of session name is 254 bytes. -// SetSessionName sets the string value in the RsvpSessionAttribute object -func (obj *rsvpSessionAttribute) SetSessionName(value string) RsvpSessionAttribute { - - obj.obj.SessionName = &value - return obj -} - -// Specifies the value of the Setup Priority field. This controls whether the LSP should pre-empt existing LSP setup with certain Holding Priority if resource limitation is encountered when setting up the LSP. (e.g. bandwidth availability). The value 0 is the highest priority while 7 is the lowest. -// SetupPriority returns a uint32 -func (obj *rsvpSessionAttribute) SetupPriority() uint32 { - - return *obj.obj.SetupPriority - -} - -// Specifies the value of the Setup Priority field. This controls whether the LSP should pre-empt existing LSP setup with certain Holding Priority if resource limitation is encountered when setting up the LSP. (e.g. bandwidth availability). The value 0 is the highest priority while 7 is the lowest. -// SetupPriority returns a uint32 -func (obj *rsvpSessionAttribute) HasSetupPriority() bool { - return obj.obj.SetupPriority != nil -} - -// Specifies the value of the Setup Priority field. This controls whether the LSP should pre-empt existing LSP setup with certain Holding Priority if resource limitation is encountered when setting up the LSP. (e.g. bandwidth availability). The value 0 is the highest priority while 7 is the lowest. -// SetSetupPriority sets the uint32 value in the RsvpSessionAttribute object -func (obj *rsvpSessionAttribute) SetSetupPriority(value uint32) RsvpSessionAttribute { - - obj.obj.SetupPriority = &value - return obj -} - -// Specifies the value of the Holding Priority field. This controls whether a new LSP being created with certain Setup Priority should pre-empt this LSP if resource limitation is encountered when setting up the LSP. (e.g. bandwidth availability). The value 0 is the highest priority while 7 is the lowest. -// HoldingPriority returns a uint32 -func (obj *rsvpSessionAttribute) HoldingPriority() uint32 { - - return *obj.obj.HoldingPriority - -} - -// Specifies the value of the Holding Priority field. This controls whether a new LSP being created with certain Setup Priority should pre-empt this LSP if resource limitation is encountered when setting up the LSP. (e.g. bandwidth availability). The value 0 is the highest priority while 7 is the lowest. -// HoldingPriority returns a uint32 -func (obj *rsvpSessionAttribute) HasHoldingPriority() bool { - return obj.obj.HoldingPriority != nil -} - -// Specifies the value of the Holding Priority field. This controls whether a new LSP being created with certain Setup Priority should pre-empt this LSP if resource limitation is encountered when setting up the LSP. (e.g. bandwidth availability). The value 0 is the highest priority while 7 is the lowest. -// SetHoldingPriority sets the uint32 value in the RsvpSessionAttribute object -func (obj *rsvpSessionAttribute) SetHoldingPriority(value uint32) RsvpSessionAttribute { - - obj.obj.HoldingPriority = &value - return obj -} - -// This flag permits transit routers to use a local repair mechanism which may result in violation of the explicit route object. When a fault is detected on an adjacent downstream link or node, a transit router can reroute traffic for fast service restoration. -// LocalProtectionDesired returns a bool -func (obj *rsvpSessionAttribute) LocalProtectionDesired() bool { - - return *obj.obj.LocalProtectionDesired - -} - -// This flag permits transit routers to use a local repair mechanism which may result in violation of the explicit route object. When a fault is detected on an adjacent downstream link or node, a transit router can reroute traffic for fast service restoration. -// LocalProtectionDesired returns a bool -func (obj *rsvpSessionAttribute) HasLocalProtectionDesired() bool { - return obj.obj.LocalProtectionDesired != nil -} - -// This flag permits transit routers to use a local repair mechanism which may result in violation of the explicit route object. When a fault is detected on an adjacent downstream link or node, a transit router can reroute traffic for fast service restoration. -// SetLocalProtectionDesired sets the bool value in the RsvpSessionAttribute object -func (obj *rsvpSessionAttribute) SetLocalProtectionDesired(value bool) RsvpSessionAttribute { - - obj.obj.LocalProtectionDesired = &value - return obj -} - -// This flag indicates that label information should be included when doing a route record. -// LabelRecordingDesired returns a bool -func (obj *rsvpSessionAttribute) LabelRecordingDesired() bool { - - return *obj.obj.LabelRecordingDesired - -} - -// This flag indicates that label information should be included when doing a route record. -// LabelRecordingDesired returns a bool -func (obj *rsvpSessionAttribute) HasLabelRecordingDesired() bool { - return obj.obj.LabelRecordingDesired != nil -} - -// This flag indicates that label information should be included when doing a route record. -// SetLabelRecordingDesired sets the bool value in the RsvpSessionAttribute object -func (obj *rsvpSessionAttribute) SetLabelRecordingDesired(value bool) RsvpSessionAttribute { - - obj.obj.LabelRecordingDesired = &value - return obj + // Start returns uint32, set in PatternFlowTcpDataOffsetCounter. + Start() uint32 + // SetStart assigns uint32 provided by user to PatternFlowTcpDataOffsetCounter + SetStart(value uint32) PatternFlowTcpDataOffsetCounter + // HasStart checks if Start has been set in PatternFlowTcpDataOffsetCounter + HasStart() bool + // Step returns uint32, set in PatternFlowTcpDataOffsetCounter. + Step() uint32 + // SetStep assigns uint32 provided by user to PatternFlowTcpDataOffsetCounter + SetStep(value uint32) PatternFlowTcpDataOffsetCounter + // HasStep checks if Step has been set in PatternFlowTcpDataOffsetCounter + HasStep() bool + // Count returns uint32, set in PatternFlowTcpDataOffsetCounter. + Count() uint32 + // SetCount assigns uint32 provided by user to PatternFlowTcpDataOffsetCounter + SetCount(value uint32) PatternFlowTcpDataOffsetCounter + // HasCount checks if Count has been set in PatternFlowTcpDataOffsetCounter + HasCount() bool } -// This flag indicates that the tunnel ingress node may choose to reroute this tunnel without tearing it down. A tunnel egress node SHOULD use the Shared Explicit(SE) Style when responding with a Resv message. -// SeStyleDesired returns a bool -func (obj *rsvpSessionAttribute) SeStyleDesired() bool { +// description is TBD +// Start returns a uint32 +func (obj *patternFlowTcpDataOffsetCounter) Start() uint32 { - return *obj.obj.SeStyleDesired + return *obj.obj.Start } -// This flag indicates that the tunnel ingress node may choose to reroute this tunnel without tearing it down. A tunnel egress node SHOULD use the Shared Explicit(SE) Style when responding with a Resv message. -// SeStyleDesired returns a bool -func (obj *rsvpSessionAttribute) HasSeStyleDesired() bool { - return obj.obj.SeStyleDesired != nil +// description is TBD +// Start returns a uint32 +func (obj *patternFlowTcpDataOffsetCounter) HasStart() bool { + return obj.obj.Start != nil } -// This flag indicates that the tunnel ingress node may choose to reroute this tunnel without tearing it down. A tunnel egress node SHOULD use the Shared Explicit(SE) Style when responding with a Resv message. -// SetSeStyleDesired sets the bool value in the RsvpSessionAttribute object -func (obj *rsvpSessionAttribute) SetSeStyleDesired(value bool) RsvpSessionAttribute { +// description is TBD +// SetStart sets the uint32 value in the PatternFlowTcpDataOffsetCounter object +func (obj *patternFlowTcpDataOffsetCounter) SetStart(value uint32) PatternFlowTcpDataOffsetCounter { - obj.obj.SeStyleDesired = &value + obj.obj.Start = &value return obj } -// This flag in the SESSION_ATTRIBUTE object in the Path Message indicates to the PLRs along the protected LSP path that a backup path with a bandwidth guarantee is desired. This bandwidth has to be guaranteed for the protected LSP, if no FAST_REROUTE object is included in the PATH message. If a FAST_REROUTE object is present in the Path message, then the bandwidth specified therein is to be guaranteed. -// BandwidthProtectionDesired returns a bool -func (obj *rsvpSessionAttribute) BandwidthProtectionDesired() bool { +// description is TBD +// Step returns a uint32 +func (obj *patternFlowTcpDataOffsetCounter) Step() uint32 { - return *obj.obj.BandwidthProtectionDesired + return *obj.obj.Step } -// This flag in the SESSION_ATTRIBUTE object in the Path Message indicates to the PLRs along the protected LSP path that a backup path with a bandwidth guarantee is desired. This bandwidth has to be guaranteed for the protected LSP, if no FAST_REROUTE object is included in the PATH message. If a FAST_REROUTE object is present in the Path message, then the bandwidth specified therein is to be guaranteed. -// BandwidthProtectionDesired returns a bool -func (obj *rsvpSessionAttribute) HasBandwidthProtectionDesired() bool { - return obj.obj.BandwidthProtectionDesired != nil +// description is TBD +// Step returns a uint32 +func (obj *patternFlowTcpDataOffsetCounter) HasStep() bool { + return obj.obj.Step != nil } -// This flag in the SESSION_ATTRIBUTE object in the Path Message indicates to the PLRs along the protected LSP path that a backup path with a bandwidth guarantee is desired. This bandwidth has to be guaranteed for the protected LSP, if no FAST_REROUTE object is included in the PATH message. If a FAST_REROUTE object is present in the Path message, then the bandwidth specified therein is to be guaranteed. -// SetBandwidthProtectionDesired sets the bool value in the RsvpSessionAttribute object -func (obj *rsvpSessionAttribute) SetBandwidthProtectionDesired(value bool) RsvpSessionAttribute { +// description is TBD +// SetStep sets the uint32 value in the PatternFlowTcpDataOffsetCounter object +func (obj *patternFlowTcpDataOffsetCounter) SetStep(value uint32) PatternFlowTcpDataOffsetCounter { - obj.obj.BandwidthProtectionDesired = &value + obj.obj.Step = &value return obj } -// This flag in the SESSION_ATTRIBUTE object in the Path Message indicates to the PLRs along a protected LSP path that it is desired to have a backup path that bypasses at least the next node of the protected LSP. -// NodeProtectionDesired returns a bool -func (obj *rsvpSessionAttribute) NodeProtectionDesired() bool { - - return *obj.obj.NodeProtectionDesired - -} - -// This flag in the SESSION_ATTRIBUTE object in the Path Message indicates to the PLRs along a protected LSP path that it is desired to have a backup path that bypasses at least the next node of the protected LSP. -// NodeProtectionDesired returns a bool -func (obj *rsvpSessionAttribute) HasNodeProtectionDesired() bool { - return obj.obj.NodeProtectionDesired != nil -} - -// This flag in the SESSION_ATTRIBUTE object in the Path Message indicates to the PLRs along a protected LSP path that it is desired to have a backup path that bypasses at least the next node of the protected LSP. -// SetNodeProtectionDesired sets the bool value in the RsvpSessionAttribute object -func (obj *rsvpSessionAttribute) SetNodeProtectionDesired(value bool) RsvpSessionAttribute { +// description is TBD +// Count returns a uint32 +func (obj *patternFlowTcpDataOffsetCounter) Count() uint32 { - obj.obj.NodeProtectionDesired = &value - return obj -} + return *obj.obj.Count -// This is an optional object. If included the extended SESSION_ATTRIBUTE object is sent in the Path message containing -// the additional fields included in this object. This contains a set of three bitmaps using which further constraints can be -// set on the path calculated for the LSP based on the Admin Group settings in the IGP (e.g ISIS or OSPF interface). -// ResourceAffinities returns a RsvpResourceAffinities -func (obj *rsvpSessionAttribute) ResourceAffinities() RsvpResourceAffinities { - if obj.obj.ResourceAffinities == nil { - obj.obj.ResourceAffinities = NewRsvpResourceAffinities().Msg() - } - if obj.resourceAffinitiesHolder == nil { - obj.resourceAffinitiesHolder = &rsvpResourceAffinities{obj: obj.obj.ResourceAffinities} - } - return obj.resourceAffinitiesHolder } -// This is an optional object. If included the extended SESSION_ATTRIBUTE object is sent in the Path message containing -// the additional fields included in this object. This contains a set of three bitmaps using which further constraints can be -// set on the path calculated for the LSP based on the Admin Group settings in the IGP (e.g ISIS or OSPF interface). -// ResourceAffinities returns a RsvpResourceAffinities -func (obj *rsvpSessionAttribute) HasResourceAffinities() bool { - return obj.obj.ResourceAffinities != nil +// description is TBD +// Count returns a uint32 +func (obj *patternFlowTcpDataOffsetCounter) HasCount() bool { + return obj.obj.Count != nil } -// This is an optional object. If included the extended SESSION_ATTRIBUTE object is sent in the Path message containing -// the additional fields included in this object. This contains a set of three bitmaps using which further constraints can be -// set on the path calculated for the LSP based on the Admin Group settings in the IGP (e.g ISIS or OSPF interface). -// SetResourceAffinities sets the RsvpResourceAffinities value in the RsvpSessionAttribute object -func (obj *rsvpSessionAttribute) SetResourceAffinities(value RsvpResourceAffinities) RsvpSessionAttribute { - - obj.resourceAffinitiesHolder = nil - obj.obj.ResourceAffinities = value.Msg() +// description is TBD +// SetCount sets the uint32 value in the PatternFlowTcpDataOffsetCounter object +func (obj *patternFlowTcpDataOffsetCounter) SetCount(value uint32) PatternFlowTcpDataOffsetCounter { + obj.obj.Count = &value return obj } -func (obj *rsvpSessionAttribute) validateObj(vObj *validation, set_default bool) { +func (obj *patternFlowTcpDataOffsetCounter) validateObj(vObj *validation, set_default bool) { if set_default { obj.setDefault() } - if obj.obj.SessionName != nil { + if obj.obj.Start != nil { - if len(*obj.obj.SessionName) < 0 || len(*obj.obj.SessionName) > 254 { + if *obj.obj.Start > 15 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf( - "0 <= length of RsvpSessionAttribute.SessionName <= 254 but Got %d", - len(*obj.obj.SessionName))) + fmt.Sprintf("0 <= PatternFlowTcpDataOffsetCounter.Start <= 15 but Got %d", *obj.obj.Start)) } } - if obj.obj.SetupPriority != nil { + if obj.obj.Step != nil { - if *obj.obj.SetupPriority > 7 { + if *obj.obj.Step > 15 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("0 <= RsvpSessionAttribute.SetupPriority <= 7 but Got %d", *obj.obj.SetupPriority)) + fmt.Sprintf("0 <= PatternFlowTcpDataOffsetCounter.Step <= 15 but Got %d", *obj.obj.Step)) } } - if obj.obj.HoldingPriority != nil { + if obj.obj.Count != nil { - if *obj.obj.HoldingPriority > 7 { + if *obj.obj.Count > 15 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("0 <= RsvpSessionAttribute.HoldingPriority <= 7 but Got %d", *obj.obj.HoldingPriority)) + fmt.Sprintf("0 <= PatternFlowTcpDataOffsetCounter.Count <= 15 but Got %d", *obj.obj.Count)) } } - if obj.obj.ResourceAffinities != nil { - - obj.ResourceAffinities().validateObj(vObj, set_default) - } - } -func (obj *rsvpSessionAttribute) setDefault() { - if obj.obj.AutoGenerateSessionName == nil { - obj.SetAutoGenerateSessionName(true) - } - if obj.obj.SetupPriority == nil { - obj.SetSetupPriority(7) - } - if obj.obj.HoldingPriority == nil { - obj.SetHoldingPriority(7) - } - if obj.obj.LocalProtectionDesired == nil { - obj.SetLocalProtectionDesired(false) - } - if obj.obj.LabelRecordingDesired == nil { - obj.SetLabelRecordingDesired(false) - } - if obj.obj.SeStyleDesired == nil { - obj.SetSeStyleDesired(false) +func (obj *patternFlowTcpDataOffsetCounter) setDefault() { + if obj.obj.Start == nil { + obj.SetStart(0) } - if obj.obj.BandwidthProtectionDesired == nil { - obj.SetBandwidthProtectionDesired(false) + if obj.obj.Step == nil { + obj.SetStep(1) } - if obj.obj.NodeProtectionDesired == nil { - obj.SetNodeProtectionDesired(false) + if obj.obj.Count == nil { + obj.SetCount(1) } } -// ***** RsvpTspec ***** -type rsvpTspec struct { +// ***** PatternFlowTcpDataOffsetMetricTag ***** +type patternFlowTcpDataOffsetMetricTag struct { validation - obj *otg.RsvpTspec + obj *otg.PatternFlowTcpDataOffsetMetricTag } -func NewRsvpTspec() RsvpTspec { - obj := rsvpTspec{obj: &otg.RsvpTspec{}} +func NewPatternFlowTcpDataOffsetMetricTag() PatternFlowTcpDataOffsetMetricTag { + obj := patternFlowTcpDataOffsetMetricTag{obj: &otg.PatternFlowTcpDataOffsetMetricTag{}} obj.setDefault() return &obj } -func (obj *rsvpTspec) Msg() *otg.RsvpTspec { +func (obj *patternFlowTcpDataOffsetMetricTag) Msg() *otg.PatternFlowTcpDataOffsetMetricTag { return obj.obj } -func (obj *rsvpTspec) SetMsg(msg *otg.RsvpTspec) RsvpTspec { +func (obj *patternFlowTcpDataOffsetMetricTag) SetMsg(msg *otg.PatternFlowTcpDataOffsetMetricTag) PatternFlowTcpDataOffsetMetricTag { proto.Merge(obj.obj, msg) return obj } -func (obj *rsvpTspec) ToProto() (*otg.RsvpTspec, error) { +func (obj *patternFlowTcpDataOffsetMetricTag) ToProto() (*otg.PatternFlowTcpDataOffsetMetricTag, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -183142,7 +226657,7 @@ func (obj *rsvpTspec) ToProto() (*otg.RsvpTspec, error) { return obj.Msg(), nil } -func (obj *rsvpTspec) FromProto(msg *otg.RsvpTspec) (RsvpTspec, error) { +func (obj *patternFlowTcpDataOffsetMetricTag) FromProto(msg *otg.PatternFlowTcpDataOffsetMetricTag) (PatternFlowTcpDataOffsetMetricTag, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -183151,7 +226666,7 @@ func (obj *rsvpTspec) FromProto(msg *otg.RsvpTspec) (RsvpTspec, error) { return newObj, nil } -func (obj *rsvpTspec) ToPbText() (string, error) { +func (obj *patternFlowTcpDataOffsetMetricTag) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -183163,7 +226678,7 @@ func (obj *rsvpTspec) ToPbText() (string, error) { return string(protoMarshal), nil } -func (obj *rsvpTspec) FromPbText(value string) error { +func (obj *patternFlowTcpDataOffsetMetricTag) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj @@ -183176,7 +226691,7 @@ func (obj *rsvpTspec) FromPbText(value string) error { return retObj } -func (obj *rsvpTspec) ToYaml() (string, error) { +func (obj *patternFlowTcpDataOffsetMetricTag) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -183197,7 +226712,7 @@ func (obj *rsvpTspec) ToYaml() (string, error) { return string(data), nil } -func (obj *rsvpTspec) FromYaml(value string) error { +func (obj *patternFlowTcpDataOffsetMetricTag) FromYaml(value string) error { if value == "" { value = "{}" } @@ -183222,7 +226737,7 @@ func (obj *rsvpTspec) FromYaml(value string) error { return nil } -func (obj *rsvpTspec) ToJson() (string, error) { +func (obj *patternFlowTcpDataOffsetMetricTag) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -183240,7 +226755,7 @@ func (obj *rsvpTspec) ToJson() (string, error) { return string(data), nil } -func (obj *rsvpTspec) FromJson(value string) error { +func (obj *patternFlowTcpDataOffsetMetricTag) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -183261,19 +226776,19 @@ func (obj *rsvpTspec) FromJson(value string) error { return nil } -func (obj *rsvpTspec) validateToAndFrom() error { +func (obj *patternFlowTcpDataOffsetMetricTag) validateToAndFrom() error { // emptyVars() obj.validateObj(&obj.validation, true) return obj.validationResult() } -func (obj *rsvpTspec) Validate() error { +func (obj *patternFlowTcpDataOffsetMetricTag) Validate() error { // emptyVars() obj.validateObj(&obj.validation, false) return obj.validationResult() } -func (obj *rsvpTspec) String() string { +func (obj *patternFlowTcpDataOffsetMetricTag) String() string { str, err := obj.ToYaml() if err != nil { return err.Error() @@ -183281,12 +226796,12 @@ func (obj *rsvpTspec) String() string { return str } -func (obj *rsvpTspec) Clone() (RsvpTspec, error) { +func (obj *patternFlowTcpDataOffsetMetricTag) Clone() (PatternFlowTcpDataOffsetMetricTag, error) { vErr := obj.Validate() if vErr != nil { return nil, vErr } - newObj := NewRsvpTspec() + newObj := NewPatternFlowTcpDataOffsetMetricTag() data, err := proto.Marshal(obj.Msg()) if err != nil { return nil, err @@ -183298,251 +226813,183 @@ func (obj *rsvpTspec) Clone() (RsvpTspec, error) { return newObj, nil } -// RsvpTspec is configuration for RSVP-TE TSPEC object included in Path Messages. The usage of these parameters is defined in RFC2215. -type RsvpTspec interface { +// PatternFlowTcpDataOffsetMetricTag is metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. +type PatternFlowTcpDataOffsetMetricTag interface { Validation - // Msg marshals RsvpTspec to protobuf object *otg.RsvpTspec + // Msg marshals PatternFlowTcpDataOffsetMetricTag to protobuf object *otg.PatternFlowTcpDataOffsetMetricTag // and doesn't set defaults - Msg() *otg.RsvpTspec - // SetMsg unmarshals RsvpTspec from protobuf object *otg.RsvpTspec + Msg() *otg.PatternFlowTcpDataOffsetMetricTag + // SetMsg unmarshals PatternFlowTcpDataOffsetMetricTag from protobuf object *otg.PatternFlowTcpDataOffsetMetricTag // and doesn't set defaults - SetMsg(*otg.RsvpTspec) RsvpTspec - // ToProto marshals RsvpTspec to protobuf object *otg.RsvpTspec - ToProto() (*otg.RsvpTspec, error) - // ToPbText marshals RsvpTspec to protobuf text + SetMsg(*otg.PatternFlowTcpDataOffsetMetricTag) PatternFlowTcpDataOffsetMetricTag + // ToProto marshals PatternFlowTcpDataOffsetMetricTag to protobuf object *otg.PatternFlowTcpDataOffsetMetricTag + ToProto() (*otg.PatternFlowTcpDataOffsetMetricTag, error) + // ToPbText marshals PatternFlowTcpDataOffsetMetricTag to protobuf text ToPbText() (string, error) - // ToYaml marshals RsvpTspec to YAML text + // ToYaml marshals PatternFlowTcpDataOffsetMetricTag to YAML text ToYaml() (string, error) - // ToJson marshals RsvpTspec to JSON text + // ToJson marshals PatternFlowTcpDataOffsetMetricTag to JSON text ToJson() (string, error) - // FromProto unmarshals RsvpTspec from protobuf object *otg.RsvpTspec - FromProto(msg *otg.RsvpTspec) (RsvpTspec, error) - // FromPbText unmarshals RsvpTspec from protobuf text + // FromProto unmarshals PatternFlowTcpDataOffsetMetricTag from protobuf object *otg.PatternFlowTcpDataOffsetMetricTag + FromProto(msg *otg.PatternFlowTcpDataOffsetMetricTag) (PatternFlowTcpDataOffsetMetricTag, error) + // FromPbText unmarshals PatternFlowTcpDataOffsetMetricTag from protobuf text FromPbText(value string) error - // FromYaml unmarshals RsvpTspec from YAML text + // FromYaml unmarshals PatternFlowTcpDataOffsetMetricTag from YAML text FromYaml(value string) error - // FromJson unmarshals RsvpTspec from JSON text + // FromJson unmarshals PatternFlowTcpDataOffsetMetricTag from JSON text FromJson(value string) error - // Validate validates RsvpTspec + // Validate validates PatternFlowTcpDataOffsetMetricTag Validate() error // A stringer function String() string // Clones the object - Clone() (RsvpTspec, error) + Clone() (PatternFlowTcpDataOffsetMetricTag, error) validateToAndFrom() error validateObj(vObj *validation, set_default bool) setDefault() - // TokenBucketRate returns float32, set in RsvpTspec. - TokenBucketRate() float32 - // SetTokenBucketRate assigns float32 provided by user to RsvpTspec - SetTokenBucketRate(value float32) RsvpTspec - // HasTokenBucketRate checks if TokenBucketRate has been set in RsvpTspec - HasTokenBucketRate() bool - // TokenBucketSize returns float32, set in RsvpTspec. - TokenBucketSize() float32 - // SetTokenBucketSize assigns float32 provided by user to RsvpTspec - SetTokenBucketSize(value float32) RsvpTspec - // HasTokenBucketSize checks if TokenBucketSize has been set in RsvpTspec - HasTokenBucketSize() bool - // PeakDataRate returns float32, set in RsvpTspec. - PeakDataRate() float32 - // SetPeakDataRate assigns float32 provided by user to RsvpTspec - SetPeakDataRate(value float32) RsvpTspec - // HasPeakDataRate checks if PeakDataRate has been set in RsvpTspec - HasPeakDataRate() bool - // MinimumPolicedUnit returns uint32, set in RsvpTspec. - MinimumPolicedUnit() uint32 - // SetMinimumPolicedUnit assigns uint32 provided by user to RsvpTspec - SetMinimumPolicedUnit(value uint32) RsvpTspec - // HasMinimumPolicedUnit checks if MinimumPolicedUnit has been set in RsvpTspec - HasMinimumPolicedUnit() bool - // MaximumPolicedUnit returns uint32, set in RsvpTspec. - MaximumPolicedUnit() uint32 - // SetMaximumPolicedUnit assigns uint32 provided by user to RsvpTspec - SetMaximumPolicedUnit(value uint32) RsvpTspec - // HasMaximumPolicedUnit checks if MaximumPolicedUnit has been set in RsvpTspec - HasMaximumPolicedUnit() bool -} - -// The rate of the traffic to be carried in this LSP in bytes per second. This is part of the Token Bucket specification defined for a traffic flow defined in RFC2215. -// TokenBucketRate returns a float32 -func (obj *rsvpTspec) TokenBucketRate() float32 { - - return *obj.obj.TokenBucketRate - -} - -// The rate of the traffic to be carried in this LSP in bytes per second. This is part of the Token Bucket specification defined for a traffic flow defined in RFC2215. -// TokenBucketRate returns a float32 -func (obj *rsvpTspec) HasTokenBucketRate() bool { - return obj.obj.TokenBucketRate != nil -} - -// The rate of the traffic to be carried in this LSP in bytes per second. This is part of the Token Bucket specification defined for a traffic flow defined in RFC2215. -// SetTokenBucketRate sets the float32 value in the RsvpTspec object -func (obj *rsvpTspec) SetTokenBucketRate(value float32) RsvpTspec { - - obj.obj.TokenBucketRate = &value - return obj -} - -// The depth of the token bucket in bytes used to specify the Token Bucket characteristics of the traffic to be carried in the LSP. This is part of the Token Bucket specification defined for a traffic flow defined in RFC2215. -// TokenBucketSize returns a float32 -func (obj *rsvpTspec) TokenBucketSize() float32 { - - return *obj.obj.TokenBucketSize - -} - -// The depth of the token bucket in bytes used to specify the Token Bucket characteristics of the traffic to be carried in the LSP. This is part of the Token Bucket specification defined for a traffic flow defined in RFC2215. -// TokenBucketSize returns a float32 -func (obj *rsvpTspec) HasTokenBucketSize() bool { - return obj.obj.TokenBucketSize != nil -} - -// The depth of the token bucket in bytes used to specify the Token Bucket characteristics of the traffic to be carried in the LSP. This is part of the Token Bucket specification defined for a traffic flow defined in RFC2215. -// SetTokenBucketSize sets the float32 value in the RsvpTspec object -func (obj *rsvpTspec) SetTokenBucketSize(value float32) RsvpTspec { - - obj.obj.TokenBucketSize = &value - return obj + // Name returns string, set in PatternFlowTcpDataOffsetMetricTag. + Name() string + // SetName assigns string provided by user to PatternFlowTcpDataOffsetMetricTag + SetName(value string) PatternFlowTcpDataOffsetMetricTag + // Offset returns uint32, set in PatternFlowTcpDataOffsetMetricTag. + Offset() uint32 + // SetOffset assigns uint32 provided by user to PatternFlowTcpDataOffsetMetricTag + SetOffset(value uint32) PatternFlowTcpDataOffsetMetricTag + // HasOffset checks if Offset has been set in PatternFlowTcpDataOffsetMetricTag + HasOffset() bool + // Length returns uint32, set in PatternFlowTcpDataOffsetMetricTag. + Length() uint32 + // SetLength assigns uint32 provided by user to PatternFlowTcpDataOffsetMetricTag + SetLength(value uint32) PatternFlowTcpDataOffsetMetricTag + // HasLength checks if Length has been set in PatternFlowTcpDataOffsetMetricTag + HasLength() bool } -// The peak data rate of the traffic in bytes per second used to specify the Token Bucket characteristics of the traffic to be carried in the LSP. This is part of the Token Bucket specification defined for a traffic flow defined in RFC2215. -// PeakDataRate returns a float32 -func (obj *rsvpTspec) PeakDataRate() float32 { - - return *obj.obj.PeakDataRate +// Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field +// Name returns a string +func (obj *patternFlowTcpDataOffsetMetricTag) Name() string { -} + return *obj.obj.Name -// The peak data rate of the traffic in bytes per second used to specify the Token Bucket characteristics of the traffic to be carried in the LSP. This is part of the Token Bucket specification defined for a traffic flow defined in RFC2215. -// PeakDataRate returns a float32 -func (obj *rsvpTspec) HasPeakDataRate() bool { - return obj.obj.PeakDataRate != nil } -// The peak data rate of the traffic in bytes per second used to specify the Token Bucket characteristics of the traffic to be carried in the LSP. This is part of the Token Bucket specification defined for a traffic flow defined in RFC2215. -// SetPeakDataRate sets the float32 value in the RsvpTspec object -func (obj *rsvpTspec) SetPeakDataRate(value float32) RsvpTspec { +// Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field +// SetName sets the string value in the PatternFlowTcpDataOffsetMetricTag object +func (obj *patternFlowTcpDataOffsetMetricTag) SetName(value string) PatternFlowTcpDataOffsetMetricTag { - obj.obj.PeakDataRate = &value + obj.obj.Name = &value return obj } -// Specifies the minium length of packet frames that will be policed. -// MinimumPolicedUnit returns a uint32 -func (obj *rsvpTspec) MinimumPolicedUnit() uint32 { +// Offset in bits relative to start of corresponding header field +// Offset returns a uint32 +func (obj *patternFlowTcpDataOffsetMetricTag) Offset() uint32 { - return *obj.obj.MinimumPolicedUnit + return *obj.obj.Offset } -// Specifies the minium length of packet frames that will be policed. -// MinimumPolicedUnit returns a uint32 -func (obj *rsvpTspec) HasMinimumPolicedUnit() bool { - return obj.obj.MinimumPolicedUnit != nil +// Offset in bits relative to start of corresponding header field +// Offset returns a uint32 +func (obj *patternFlowTcpDataOffsetMetricTag) HasOffset() bool { + return obj.obj.Offset != nil } -// Specifies the minium length of packet frames that will be policed. -// SetMinimumPolicedUnit sets the uint32 value in the RsvpTspec object -func (obj *rsvpTspec) SetMinimumPolicedUnit(value uint32) RsvpTspec { +// Offset in bits relative to start of corresponding header field +// SetOffset sets the uint32 value in the PatternFlowTcpDataOffsetMetricTag object +func (obj *patternFlowTcpDataOffsetMetricTag) SetOffset(value uint32) PatternFlowTcpDataOffsetMetricTag { - obj.obj.MinimumPolicedUnit = &value + obj.obj.Offset = &value return obj } -// Specifies the maximum length of packet frames that will be policed. -// MaximumPolicedUnit returns a uint32 -func (obj *rsvpTspec) MaximumPolicedUnit() uint32 { +// Number of bits to track for metrics starting from configured offset of corresponding header field +// Length returns a uint32 +func (obj *patternFlowTcpDataOffsetMetricTag) Length() uint32 { - return *obj.obj.MaximumPolicedUnit + return *obj.obj.Length } -// Specifies the maximum length of packet frames that will be policed. -// MaximumPolicedUnit returns a uint32 -func (obj *rsvpTspec) HasMaximumPolicedUnit() bool { - return obj.obj.MaximumPolicedUnit != nil +// Number of bits to track for metrics starting from configured offset of corresponding header field +// Length returns a uint32 +func (obj *patternFlowTcpDataOffsetMetricTag) HasLength() bool { + return obj.obj.Length != nil } -// Specifies the maximum length of packet frames that will be policed. -// SetMaximumPolicedUnit sets the uint32 value in the RsvpTspec object -func (obj *rsvpTspec) SetMaximumPolicedUnit(value uint32) RsvpTspec { +// Number of bits to track for metrics starting from configured offset of corresponding header field +// SetLength sets the uint32 value in the PatternFlowTcpDataOffsetMetricTag object +func (obj *patternFlowTcpDataOffsetMetricTag) SetLength(value uint32) PatternFlowTcpDataOffsetMetricTag { - obj.obj.MaximumPolicedUnit = &value + obj.obj.Length = &value return obj } -func (obj *rsvpTspec) validateObj(vObj *validation, set_default bool) { +func (obj *patternFlowTcpDataOffsetMetricTag) validateObj(vObj *validation, set_default bool) { if set_default { obj.setDefault() } - if obj.obj.MinimumPolicedUnit != nil { + // Name is required + if obj.obj.Name == nil { + vObj.validationErrors = append(vObj.validationErrors, "Name is required field on interface PatternFlowTcpDataOffsetMetricTag") + } - if *obj.obj.MinimumPolicedUnit > 65535 { + if obj.obj.Offset != nil { + + if *obj.obj.Offset > 3 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("0 <= RsvpTspec.MinimumPolicedUnit <= 65535 but Got %d", *obj.obj.MinimumPolicedUnit)) + fmt.Sprintf("0 <= PatternFlowTcpDataOffsetMetricTag.Offset <= 3 but Got %d", *obj.obj.Offset)) } } - if obj.obj.MaximumPolicedUnit != nil { + if obj.obj.Length != nil { - if *obj.obj.MaximumPolicedUnit > 65535 { + if *obj.obj.Length < 1 || *obj.obj.Length > 4 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("0 <= RsvpTspec.MaximumPolicedUnit <= 65535 but Got %d", *obj.obj.MaximumPolicedUnit)) + fmt.Sprintf("1 <= PatternFlowTcpDataOffsetMetricTag.Length <= 4 but Got %d", *obj.obj.Length)) } } } -func (obj *rsvpTspec) setDefault() { - if obj.obj.TokenBucketRate == nil { - obj.SetTokenBucketRate(0) - } - if obj.obj.TokenBucketSize == nil { - obj.SetTokenBucketSize(0) - } - if obj.obj.PeakDataRate == nil { - obj.SetPeakDataRate(0) - } - if obj.obj.MinimumPolicedUnit == nil { - obj.SetMinimumPolicedUnit(0) +func (obj *patternFlowTcpDataOffsetMetricTag) setDefault() { + if obj.obj.Offset == nil { + obj.SetOffset(0) } - if obj.obj.MaximumPolicedUnit == nil { - obj.SetMaximumPolicedUnit(0) + if obj.obj.Length == nil { + obj.SetLength(4) } } -// ***** RsvpFastReroute ***** -type rsvpFastReroute struct { +// ***** PatternFlowTcpEcnNsCounter ***** +type patternFlowTcpEcnNsCounter struct { validation - obj *otg.RsvpFastReroute + obj *otg.PatternFlowTcpEcnNsCounter } -func NewRsvpFastReroute() RsvpFastReroute { - obj := rsvpFastReroute{obj: &otg.RsvpFastReroute{}} +func NewPatternFlowTcpEcnNsCounter() PatternFlowTcpEcnNsCounter { + obj := patternFlowTcpEcnNsCounter{obj: &otg.PatternFlowTcpEcnNsCounter{}} obj.setDefault() return &obj } -func (obj *rsvpFastReroute) Msg() *otg.RsvpFastReroute { +func (obj *patternFlowTcpEcnNsCounter) Msg() *otg.PatternFlowTcpEcnNsCounter { return obj.obj } -func (obj *rsvpFastReroute) SetMsg(msg *otg.RsvpFastReroute) RsvpFastReroute { +func (obj *patternFlowTcpEcnNsCounter) SetMsg(msg *otg.PatternFlowTcpEcnNsCounter) PatternFlowTcpEcnNsCounter { proto.Merge(obj.obj, msg) return obj } -func (obj *rsvpFastReroute) ToProto() (*otg.RsvpFastReroute, error) { +func (obj *patternFlowTcpEcnNsCounter) ToProto() (*otg.PatternFlowTcpEcnNsCounter, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -183550,7 +226997,7 @@ func (obj *rsvpFastReroute) ToProto() (*otg.RsvpFastReroute, error) { return obj.Msg(), nil } -func (obj *rsvpFastReroute) FromProto(msg *otg.RsvpFastReroute) (RsvpFastReroute, error) { +func (obj *patternFlowTcpEcnNsCounter) FromProto(msg *otg.PatternFlowTcpEcnNsCounter) (PatternFlowTcpEcnNsCounter, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -183559,7 +227006,7 @@ func (obj *rsvpFastReroute) FromProto(msg *otg.RsvpFastReroute) (RsvpFastReroute return newObj, nil } -func (obj *rsvpFastReroute) ToPbText() (string, error) { +func (obj *patternFlowTcpEcnNsCounter) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -183571,7 +227018,7 @@ func (obj *rsvpFastReroute) ToPbText() (string, error) { return string(protoMarshal), nil } -func (obj *rsvpFastReroute) FromPbText(value string) error { +func (obj *patternFlowTcpEcnNsCounter) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj @@ -183584,7 +227031,7 @@ func (obj *rsvpFastReroute) FromPbText(value string) error { return retObj } -func (obj *rsvpFastReroute) ToYaml() (string, error) { +func (obj *patternFlowTcpEcnNsCounter) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -183605,7 +227052,7 @@ func (obj *rsvpFastReroute) ToYaml() (string, error) { return string(data), nil } -func (obj *rsvpFastReroute) FromYaml(value string) error { +func (obj *patternFlowTcpEcnNsCounter) FromYaml(value string) error { if value == "" { value = "{}" } @@ -183630,7 +227077,7 @@ func (obj *rsvpFastReroute) FromYaml(value string) error { return nil } -func (obj *rsvpFastReroute) ToJson() (string, error) { +func (obj *patternFlowTcpEcnNsCounter) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -183648,7 +227095,7 @@ func (obj *rsvpFastReroute) ToJson() (string, error) { return string(data), nil } -func (obj *rsvpFastReroute) FromJson(value string) error { +func (obj *patternFlowTcpEcnNsCounter) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -183669,19 +227116,19 @@ func (obj *rsvpFastReroute) FromJson(value string) error { return nil } -func (obj *rsvpFastReroute) validateToAndFrom() error { +func (obj *patternFlowTcpEcnNsCounter) validateToAndFrom() error { // emptyVars() obj.validateObj(&obj.validation, true) return obj.validationResult() } -func (obj *rsvpFastReroute) Validate() error { +func (obj *patternFlowTcpEcnNsCounter) Validate() error { // emptyVars() obj.validateObj(&obj.validation, false) return obj.validationResult() } -func (obj *rsvpFastReroute) String() string { +func (obj *patternFlowTcpEcnNsCounter) String() string { str, err := obj.ToYaml() if err != nil { return err.Error() @@ -183689,12 +227136,12 @@ func (obj *rsvpFastReroute) String() string { return str } -func (obj *rsvpFastReroute) Clone() (RsvpFastReroute, error) { +func (obj *patternFlowTcpEcnNsCounter) Clone() (PatternFlowTcpEcnNsCounter, error) { vErr := obj.Validate() if vErr != nil { return nil, vErr } - newObj := NewRsvpFastReroute() + newObj := NewPatternFlowTcpEcnNsCounter() data, err := proto.Marshal(obj.Msg()) if err != nil { return nil, err @@ -183706,422 +227153,199 @@ func (obj *rsvpFastReroute) Clone() (RsvpFastReroute, error) { return newObj, nil } -// RsvpFastReroute is configuration for the optional RSVP-TE FAST_REROUTE object included in Path Messages as defined in RFC4090. -type RsvpFastReroute interface { +// PatternFlowTcpEcnNsCounter is integer counter pattern +type PatternFlowTcpEcnNsCounter interface { Validation - // Msg marshals RsvpFastReroute to protobuf object *otg.RsvpFastReroute + // Msg marshals PatternFlowTcpEcnNsCounter to protobuf object *otg.PatternFlowTcpEcnNsCounter // and doesn't set defaults - Msg() *otg.RsvpFastReroute - // SetMsg unmarshals RsvpFastReroute from protobuf object *otg.RsvpFastReroute + Msg() *otg.PatternFlowTcpEcnNsCounter + // SetMsg unmarshals PatternFlowTcpEcnNsCounter from protobuf object *otg.PatternFlowTcpEcnNsCounter // and doesn't set defaults - SetMsg(*otg.RsvpFastReroute) RsvpFastReroute - // ToProto marshals RsvpFastReroute to protobuf object *otg.RsvpFastReroute - ToProto() (*otg.RsvpFastReroute, error) - // ToPbText marshals RsvpFastReroute to protobuf text + SetMsg(*otg.PatternFlowTcpEcnNsCounter) PatternFlowTcpEcnNsCounter + // ToProto marshals PatternFlowTcpEcnNsCounter to protobuf object *otg.PatternFlowTcpEcnNsCounter + ToProto() (*otg.PatternFlowTcpEcnNsCounter, error) + // ToPbText marshals PatternFlowTcpEcnNsCounter to protobuf text ToPbText() (string, error) - // ToYaml marshals RsvpFastReroute to YAML text + // ToYaml marshals PatternFlowTcpEcnNsCounter to YAML text ToYaml() (string, error) - // ToJson marshals RsvpFastReroute to JSON text + // ToJson marshals PatternFlowTcpEcnNsCounter to JSON text ToJson() (string, error) - // FromProto unmarshals RsvpFastReroute from protobuf object *otg.RsvpFastReroute - FromProto(msg *otg.RsvpFastReroute) (RsvpFastReroute, error) - // FromPbText unmarshals RsvpFastReroute from protobuf text + // FromProto unmarshals PatternFlowTcpEcnNsCounter from protobuf object *otg.PatternFlowTcpEcnNsCounter + FromProto(msg *otg.PatternFlowTcpEcnNsCounter) (PatternFlowTcpEcnNsCounter, error) + // FromPbText unmarshals PatternFlowTcpEcnNsCounter from protobuf text FromPbText(value string) error - // FromYaml unmarshals RsvpFastReroute from YAML text + // FromYaml unmarshals PatternFlowTcpEcnNsCounter from YAML text FromYaml(value string) error - // FromJson unmarshals RsvpFastReroute from JSON text + // FromJson unmarshals PatternFlowTcpEcnNsCounter from JSON text FromJson(value string) error - // Validate validates RsvpFastReroute + // Validate validates PatternFlowTcpEcnNsCounter Validate() error // A stringer function String() string // Clones the object - Clone() (RsvpFastReroute, error) + Clone() (PatternFlowTcpEcnNsCounter, error) validateToAndFrom() error validateObj(vObj *validation, set_default bool) setDefault() - // SetupPriority returns uint32, set in RsvpFastReroute. - SetupPriority() uint32 - // SetSetupPriority assigns uint32 provided by user to RsvpFastReroute - SetSetupPriority(value uint32) RsvpFastReroute - // HasSetupPriority checks if SetupPriority has been set in RsvpFastReroute - HasSetupPriority() bool - // HoldingPriority returns uint32, set in RsvpFastReroute. - HoldingPriority() uint32 - // SetHoldingPriority assigns uint32 provided by user to RsvpFastReroute - SetHoldingPriority(value uint32) RsvpFastReroute - // HasHoldingPriority checks if HoldingPriority has been set in RsvpFastReroute - HasHoldingPriority() bool - // HopLimit returns uint32, set in RsvpFastReroute. - HopLimit() uint32 - // SetHopLimit assigns uint32 provided by user to RsvpFastReroute - SetHopLimit(value uint32) RsvpFastReroute - // HasHopLimit checks if HopLimit has been set in RsvpFastReroute - HasHopLimit() bool - // Bandwidth returns float32, set in RsvpFastReroute. - Bandwidth() float32 - // SetBandwidth assigns float32 provided by user to RsvpFastReroute - SetBandwidth(value float32) RsvpFastReroute - // HasBandwidth checks if Bandwidth has been set in RsvpFastReroute - HasBandwidth() bool - // ExcludeAny returns string, set in RsvpFastReroute. - ExcludeAny() string - // SetExcludeAny assigns string provided by user to RsvpFastReroute - SetExcludeAny(value string) RsvpFastReroute - // HasExcludeAny checks if ExcludeAny has been set in RsvpFastReroute - HasExcludeAny() bool - // IncludeAny returns string, set in RsvpFastReroute. - IncludeAny() string - // SetIncludeAny assigns string provided by user to RsvpFastReroute - SetIncludeAny(value string) RsvpFastReroute - // HasIncludeAny checks if IncludeAny has been set in RsvpFastReroute - HasIncludeAny() bool - // IncludeAll returns string, set in RsvpFastReroute. - IncludeAll() string - // SetIncludeAll assigns string provided by user to RsvpFastReroute - SetIncludeAll(value string) RsvpFastReroute - // HasIncludeAll checks if IncludeAll has been set in RsvpFastReroute - HasIncludeAll() bool - // OneToOneBackupDesired returns bool, set in RsvpFastReroute. - OneToOneBackupDesired() bool - // SetOneToOneBackupDesired assigns bool provided by user to RsvpFastReroute - SetOneToOneBackupDesired(value bool) RsvpFastReroute - // HasOneToOneBackupDesired checks if OneToOneBackupDesired has been set in RsvpFastReroute - HasOneToOneBackupDesired() bool - // FacilityBackupDesired returns bool, set in RsvpFastReroute. - FacilityBackupDesired() bool - // SetFacilityBackupDesired assigns bool provided by user to RsvpFastReroute - SetFacilityBackupDesired(value bool) RsvpFastReroute - // HasFacilityBackupDesired checks if FacilityBackupDesired has been set in RsvpFastReroute - HasFacilityBackupDesired() bool -} - -// Specifies the value of the Setup Priority field. This controls whether the backup LSP should pre-empt existing LSP that is setup with certain Holding Priority. While setting up a backup LSP, preemption of existing LSP can happen if resource limitation is encountered (e.g bandwidth availability). -// SetupPriority returns a uint32 -func (obj *rsvpFastReroute) SetupPriority() uint32 { - - return *obj.obj.SetupPriority - -} - -// Specifies the value of the Setup Priority field. This controls whether the backup LSP should pre-empt existing LSP that is setup with certain Holding Priority. While setting up a backup LSP, preemption of existing LSP can happen if resource limitation is encountered (e.g bandwidth availability). -// SetupPriority returns a uint32 -func (obj *rsvpFastReroute) HasSetupPriority() bool { - return obj.obj.SetupPriority != nil -} - -// Specifies the value of the Setup Priority field. This controls whether the backup LSP should pre-empt existing LSP that is setup with certain Holding Priority. While setting up a backup LSP, preemption of existing LSP can happen if resource limitation is encountered (e.g bandwidth availability). -// SetSetupPriority sets the uint32 value in the RsvpFastReroute object -func (obj *rsvpFastReroute) SetSetupPriority(value uint32) RsvpFastReroute { - - obj.obj.SetupPriority = &value - return obj -} - -// Specifies the value of the Holding Priority field. This controls whether a new LSP being created with certain Setup Priority should pre-empt this LSP set up with this Holding Priority. While setting up a new LSP, preemption of existing LSP can happen if resource limitation is encountered (e.g bandwidth availability). -// HoldingPriority returns a uint32 -func (obj *rsvpFastReroute) HoldingPriority() uint32 { - - return *obj.obj.HoldingPriority - -} - -// Specifies the value of the Holding Priority field. This controls whether a new LSP being created with certain Setup Priority should pre-empt this LSP set up with this Holding Priority. While setting up a new LSP, preemption of existing LSP can happen if resource limitation is encountered (e.g bandwidth availability). -// HoldingPriority returns a uint32 -func (obj *rsvpFastReroute) HasHoldingPriority() bool { - return obj.obj.HoldingPriority != nil -} - -// Specifies the value of the Holding Priority field. This controls whether a new LSP being created with certain Setup Priority should pre-empt this LSP set up with this Holding Priority. While setting up a new LSP, preemption of existing LSP can happen if resource limitation is encountered (e.g bandwidth availability). -// SetHoldingPriority sets the uint32 value in the RsvpFastReroute object -func (obj *rsvpFastReroute) SetHoldingPriority(value uint32) RsvpFastReroute { - - obj.obj.HoldingPriority = &value - return obj -} - -// Specifies the value of the Hop Limit field. This controls the maximum number of hops the LSP should traverse to reach the LSP end-point. -// HopLimit returns a uint32 -func (obj *rsvpFastReroute) HopLimit() uint32 { - - return *obj.obj.HopLimit - -} - -// Specifies the value of the Hop Limit field. This controls the maximum number of hops the LSP should traverse to reach the LSP end-point. -// HopLimit returns a uint32 -func (obj *rsvpFastReroute) HasHopLimit() bool { - return obj.obj.HopLimit != nil -} - -// Specifies the value of the Hop Limit field. This controls the maximum number of hops the LSP should traverse to reach the LSP end-point. -// SetHopLimit sets the uint32 value in the RsvpFastReroute object -func (obj *rsvpFastReroute) SetHopLimit(value uint32) RsvpFastReroute { - - obj.obj.HopLimit = &value - return obj -} - -// Specifies the value of the Bandwidth field as a 32-bit IEEE floating point integer, in bytes per second, as desired for the LSP. -// Bandwidth returns a float32 -func (obj *rsvpFastReroute) Bandwidth() float32 { - - return *obj.obj.Bandwidth - -} - -// Specifies the value of the Bandwidth field as a 32-bit IEEE floating point integer, in bytes per second, as desired for the LSP. -// Bandwidth returns a float32 -func (obj *rsvpFastReroute) HasBandwidth() bool { - return obj.obj.Bandwidth != nil -} - -// Specifies the value of the Bandwidth field as a 32-bit IEEE floating point integer, in bytes per second, as desired for the LSP. -// SetBandwidth sets the float32 value in the RsvpFastReroute object -func (obj *rsvpFastReroute) SetBandwidth(value float32) RsvpFastReroute { - - obj.obj.Bandwidth = &value - return obj -} - -// A 32-bit vector representing a set of attribute filters associated with a tunnel any of which renders a link unacceptable. A null set (all bits set to zero) doesn't render the link unacceptable. The most significant byte in the hex-string is the farthest to the left in the byte sequence. Leading zero bytes in the configured value may be omitted for brevity. -// ExcludeAny returns a string -func (obj *rsvpFastReroute) ExcludeAny() string { - - return *obj.obj.ExcludeAny - -} - -// A 32-bit vector representing a set of attribute filters associated with a tunnel any of which renders a link unacceptable. A null set (all bits set to zero) doesn't render the link unacceptable. The most significant byte in the hex-string is the farthest to the left in the byte sequence. Leading zero bytes in the configured value may be omitted for brevity. -// ExcludeAny returns a string -func (obj *rsvpFastReroute) HasExcludeAny() bool { - return obj.obj.ExcludeAny != nil -} - -// A 32-bit vector representing a set of attribute filters associated with a tunnel any of which renders a link unacceptable. A null set (all bits set to zero) doesn't render the link unacceptable. The most significant byte in the hex-string is the farthest to the left in the byte sequence. Leading zero bytes in the configured value may be omitted for brevity. -// SetExcludeAny sets the string value in the RsvpFastReroute object -func (obj *rsvpFastReroute) SetExcludeAny(value string) RsvpFastReroute { - - obj.obj.ExcludeAny = &value - return obj -} - -// A 32-bit vector representing a set of attribute filters associated with a tunnel any of which renders a link acceptable. A null set (all bits set to zero) automatically passes. The most significant byte in the hex-string is the farthest to the left in the byte sequence. Leading zero bytes in the configured value may be omitted for brevity. -// IncludeAny returns a string -func (obj *rsvpFastReroute) IncludeAny() string { - - return *obj.obj.IncludeAny - -} - -// A 32-bit vector representing a set of attribute filters associated with a tunnel any of which renders a link acceptable. A null set (all bits set to zero) automatically passes. The most significant byte in the hex-string is the farthest to the left in the byte sequence. Leading zero bytes in the configured value may be omitted for brevity. -// IncludeAny returns a string -func (obj *rsvpFastReroute) HasIncludeAny() bool { - return obj.obj.IncludeAny != nil -} - -// A 32-bit vector representing a set of attribute filters associated with a tunnel any of which renders a link acceptable. A null set (all bits set to zero) automatically passes. The most significant byte in the hex-string is the farthest to the left in the byte sequence. Leading zero bytes in the configured value may be omitted for brevity. -// SetIncludeAny sets the string value in the RsvpFastReroute object -func (obj *rsvpFastReroute) SetIncludeAny(value string) RsvpFastReroute { - - obj.obj.IncludeAny = &value - return obj + // Start returns uint32, set in PatternFlowTcpEcnNsCounter. + Start() uint32 + // SetStart assigns uint32 provided by user to PatternFlowTcpEcnNsCounter + SetStart(value uint32) PatternFlowTcpEcnNsCounter + // HasStart checks if Start has been set in PatternFlowTcpEcnNsCounter + HasStart() bool + // Step returns uint32, set in PatternFlowTcpEcnNsCounter. + Step() uint32 + // SetStep assigns uint32 provided by user to PatternFlowTcpEcnNsCounter + SetStep(value uint32) PatternFlowTcpEcnNsCounter + // HasStep checks if Step has been set in PatternFlowTcpEcnNsCounter + HasStep() bool + // Count returns uint32, set in PatternFlowTcpEcnNsCounter. + Count() uint32 + // SetCount assigns uint32 provided by user to PatternFlowTcpEcnNsCounter + SetCount(value uint32) PatternFlowTcpEcnNsCounter + // HasCount checks if Count has been set in PatternFlowTcpEcnNsCounter + HasCount() bool } -// A 32-bit vector representing a set of attribute filters associated with a tunnel all of which must be present for a link to be acceptable. A null set (all bits set to zero) automatically passes. The most significant byte in the hex-string is the farthest to the left in the byte sequence. Leading zero bytes in the configured value may be omitted for brevity. -// IncludeAll returns a string -func (obj *rsvpFastReroute) IncludeAll() string { +// description is TBD +// Start returns a uint32 +func (obj *patternFlowTcpEcnNsCounter) Start() uint32 { - return *obj.obj.IncludeAll + return *obj.obj.Start } -// A 32-bit vector representing a set of attribute filters associated with a tunnel all of which must be present for a link to be acceptable. A null set (all bits set to zero) automatically passes. The most significant byte in the hex-string is the farthest to the left in the byte sequence. Leading zero bytes in the configured value may be omitted for brevity. -// IncludeAll returns a string -func (obj *rsvpFastReroute) HasIncludeAll() bool { - return obj.obj.IncludeAll != nil +// description is TBD +// Start returns a uint32 +func (obj *patternFlowTcpEcnNsCounter) HasStart() bool { + return obj.obj.Start != nil } -// A 32-bit vector representing a set of attribute filters associated with a tunnel all of which must be present for a link to be acceptable. A null set (all bits set to zero) automatically passes. The most significant byte in the hex-string is the farthest to the left in the byte sequence. Leading zero bytes in the configured value may be omitted for brevity. -// SetIncludeAll sets the string value in the RsvpFastReroute object -func (obj *rsvpFastReroute) SetIncludeAll(value string) RsvpFastReroute { +// description is TBD +// SetStart sets the uint32 value in the PatternFlowTcpEcnNsCounter object +func (obj *patternFlowTcpEcnNsCounter) SetStart(value uint32) PatternFlowTcpEcnNsCounter { - obj.obj.IncludeAll = &value + obj.obj.Start = &value return obj } -// Requests protection via the one-to-one backup method. -// OneToOneBackupDesired returns a bool -func (obj *rsvpFastReroute) OneToOneBackupDesired() bool { +// description is TBD +// Step returns a uint32 +func (obj *patternFlowTcpEcnNsCounter) Step() uint32 { - return *obj.obj.OneToOneBackupDesired + return *obj.obj.Step } -// Requests protection via the one-to-one backup method. -// OneToOneBackupDesired returns a bool -func (obj *rsvpFastReroute) HasOneToOneBackupDesired() bool { - return obj.obj.OneToOneBackupDesired != nil +// description is TBD +// Step returns a uint32 +func (obj *patternFlowTcpEcnNsCounter) HasStep() bool { + return obj.obj.Step != nil } -// Requests protection via the one-to-one backup method. -// SetOneToOneBackupDesired sets the bool value in the RsvpFastReroute object -func (obj *rsvpFastReroute) SetOneToOneBackupDesired(value bool) RsvpFastReroute { +// description is TBD +// SetStep sets the uint32 value in the PatternFlowTcpEcnNsCounter object +func (obj *patternFlowTcpEcnNsCounter) SetStep(value uint32) PatternFlowTcpEcnNsCounter { - obj.obj.OneToOneBackupDesired = &value + obj.obj.Step = &value return obj } -// Requests protection via the facility backup method. -// FacilityBackupDesired returns a bool -func (obj *rsvpFastReroute) FacilityBackupDesired() bool { +// description is TBD +// Count returns a uint32 +func (obj *patternFlowTcpEcnNsCounter) Count() uint32 { - return *obj.obj.FacilityBackupDesired + return *obj.obj.Count } -// Requests protection via the facility backup method. -// FacilityBackupDesired returns a bool -func (obj *rsvpFastReroute) HasFacilityBackupDesired() bool { - return obj.obj.FacilityBackupDesired != nil +// description is TBD +// Count returns a uint32 +func (obj *patternFlowTcpEcnNsCounter) HasCount() bool { + return obj.obj.Count != nil } -// Requests protection via the facility backup method. -// SetFacilityBackupDesired sets the bool value in the RsvpFastReroute object -func (obj *rsvpFastReroute) SetFacilityBackupDesired(value bool) RsvpFastReroute { +// description is TBD +// SetCount sets the uint32 value in the PatternFlowTcpEcnNsCounter object +func (obj *patternFlowTcpEcnNsCounter) SetCount(value uint32) PatternFlowTcpEcnNsCounter { - obj.obj.FacilityBackupDesired = &value + obj.obj.Count = &value return obj } -func (obj *rsvpFastReroute) validateObj(vObj *validation, set_default bool) { +func (obj *patternFlowTcpEcnNsCounter) validateObj(vObj *validation, set_default bool) { if set_default { obj.setDefault() } - if obj.obj.SetupPriority != nil { - - if *obj.obj.SetupPriority > 7 { - vObj.validationErrors = append( - vObj.validationErrors, - fmt.Sprintf("0 <= RsvpFastReroute.SetupPriority <= 7 but Got %d", *obj.obj.SetupPriority)) - } - - } - - if obj.obj.HoldingPriority != nil { - - if *obj.obj.HoldingPriority > 7 { - vObj.validationErrors = append( - vObj.validationErrors, - fmt.Sprintf("0 <= RsvpFastReroute.HoldingPriority <= 7 but Got %d", *obj.obj.HoldingPriority)) - } - - } - - if obj.obj.HopLimit != nil { - - if *obj.obj.HopLimit > 255 { - vObj.validationErrors = append( - vObj.validationErrors, - fmt.Sprintf("0 <= RsvpFastReroute.HopLimit <= 255 but Got %d", *obj.obj.HopLimit)) - } - - } - - if obj.obj.ExcludeAny != nil { + if obj.obj.Start != nil { - if len(*obj.obj.ExcludeAny) < 0 || len(*obj.obj.ExcludeAny) > 8 { + if *obj.obj.Start > 1 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf( - "0 <= length of RsvpFastReroute.ExcludeAny <= 8 but Got %d", - len(*obj.obj.ExcludeAny))) + fmt.Sprintf("0 <= PatternFlowTcpEcnNsCounter.Start <= 1 but Got %d", *obj.obj.Start)) } } - if obj.obj.IncludeAny != nil { + if obj.obj.Step != nil { - if len(*obj.obj.IncludeAny) < 0 || len(*obj.obj.IncludeAny) > 8 { + if *obj.obj.Step > 1 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf( - "0 <= length of RsvpFastReroute.IncludeAny <= 8 but Got %d", - len(*obj.obj.IncludeAny))) + fmt.Sprintf("0 <= PatternFlowTcpEcnNsCounter.Step <= 1 but Got %d", *obj.obj.Step)) } } - if obj.obj.IncludeAll != nil { + if obj.obj.Count != nil { - if len(*obj.obj.IncludeAll) < 0 || len(*obj.obj.IncludeAll) > 8 { + if *obj.obj.Count > 1 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf( - "0 <= length of RsvpFastReroute.IncludeAll <= 8 but Got %d", - len(*obj.obj.IncludeAll))) + fmt.Sprintf("0 <= PatternFlowTcpEcnNsCounter.Count <= 1 but Got %d", *obj.obj.Count)) } } } -func (obj *rsvpFastReroute) setDefault() { - if obj.obj.SetupPriority == nil { - obj.SetSetupPriority(7) - } - if obj.obj.HoldingPriority == nil { - obj.SetHoldingPriority(7) - } - if obj.obj.HopLimit == nil { - obj.SetHopLimit(3) - } - if obj.obj.Bandwidth == nil { - obj.SetBandwidth(0) - } - if obj.obj.ExcludeAny == nil { - obj.SetExcludeAny("0") - } - if obj.obj.IncludeAny == nil { - obj.SetIncludeAny("0") - } - if obj.obj.IncludeAll == nil { - obj.SetIncludeAll("0") +func (obj *patternFlowTcpEcnNsCounter) setDefault() { + if obj.obj.Start == nil { + obj.SetStart(0) } - if obj.obj.OneToOneBackupDesired == nil { - obj.SetOneToOneBackupDesired(false) + if obj.obj.Step == nil { + obj.SetStep(1) } - if obj.obj.FacilityBackupDesired == nil { - obj.SetFacilityBackupDesired(false) + if obj.obj.Count == nil { + obj.SetCount(1) } } -// ***** RsvpEro ***** -type rsvpEro struct { +// ***** PatternFlowTcpEcnNsMetricTag ***** +type patternFlowTcpEcnNsMetricTag struct { validation - obj *otg.RsvpEro - subobjectsHolder RsvpEroRsvpEroSubobjectIter + obj *otg.PatternFlowTcpEcnNsMetricTag } -func NewRsvpEro() RsvpEro { - obj := rsvpEro{obj: &otg.RsvpEro{}} +func NewPatternFlowTcpEcnNsMetricTag() PatternFlowTcpEcnNsMetricTag { + obj := patternFlowTcpEcnNsMetricTag{obj: &otg.PatternFlowTcpEcnNsMetricTag{}} obj.setDefault() return &obj } -func (obj *rsvpEro) Msg() *otg.RsvpEro { +func (obj *patternFlowTcpEcnNsMetricTag) Msg() *otg.PatternFlowTcpEcnNsMetricTag { return obj.obj } -func (obj *rsvpEro) SetMsg(msg *otg.RsvpEro) RsvpEro { - obj.setNil() +func (obj *patternFlowTcpEcnNsMetricTag) SetMsg(msg *otg.PatternFlowTcpEcnNsMetricTag) PatternFlowTcpEcnNsMetricTag { + proto.Merge(obj.obj, msg) return obj } -func (obj *rsvpEro) ToProto() (*otg.RsvpEro, error) { +func (obj *patternFlowTcpEcnNsMetricTag) ToProto() (*otg.PatternFlowTcpEcnNsMetricTag, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -184129,7 +227353,7 @@ func (obj *rsvpEro) ToProto() (*otg.RsvpEro, error) { return obj.Msg(), nil } -func (obj *rsvpEro) FromProto(msg *otg.RsvpEro) (RsvpEro, error) { +func (obj *patternFlowTcpEcnNsMetricTag) FromProto(msg *otg.PatternFlowTcpEcnNsMetricTag) (PatternFlowTcpEcnNsMetricTag, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -184138,7 +227362,7 @@ func (obj *rsvpEro) FromProto(msg *otg.RsvpEro) (RsvpEro, error) { return newObj, nil } -func (obj *rsvpEro) ToPbText() (string, error) { +func (obj *patternFlowTcpEcnNsMetricTag) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -184150,12 +227374,12 @@ func (obj *rsvpEro) ToPbText() (string, error) { return string(protoMarshal), nil } -func (obj *rsvpEro) FromPbText(value string) error { +func (obj *patternFlowTcpEcnNsMetricTag) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj } - obj.setNil() + vErr := obj.validateToAndFrom() if vErr != nil { return vErr @@ -184163,7 +227387,7 @@ func (obj *rsvpEro) FromPbText(value string) error { return retObj } -func (obj *rsvpEro) ToYaml() (string, error) { +func (obj *patternFlowTcpEcnNsMetricTag) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -184184,7 +227408,7 @@ func (obj *rsvpEro) ToYaml() (string, error) { return string(data), nil } -func (obj *rsvpEro) FromYaml(value string) error { +func (obj *patternFlowTcpEcnNsMetricTag) FromYaml(value string) error { if value == "" { value = "{}" } @@ -184201,7 +227425,7 @@ func (obj *rsvpEro) FromYaml(value string) error { return fmt.Errorf("unmarshal error %s", strings.Replace( uError.Error(), "\u00a0", " ", -1)[7:]) } - obj.setNil() + vErr := obj.validateToAndFrom() if vErr != nil { return vErr @@ -184209,7 +227433,7 @@ func (obj *rsvpEro) FromYaml(value string) error { return nil } -func (obj *rsvpEro) ToJson() (string, error) { +func (obj *patternFlowTcpEcnNsMetricTag) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -184227,7 +227451,7 @@ func (obj *rsvpEro) ToJson() (string, error) { return string(data), nil } -func (obj *rsvpEro) FromJson(value string) error { +func (obj *patternFlowTcpEcnNsMetricTag) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -184240,7 +227464,7 @@ func (obj *rsvpEro) FromJson(value string) error { return fmt.Errorf("unmarshal error %s", strings.Replace( uError.Error(), "\u00a0", " ", -1)[7:]) } - obj.setNil() + err := obj.validateToAndFrom() if err != nil { return err @@ -184248,19 +227472,19 @@ func (obj *rsvpEro) FromJson(value string) error { return nil } -func (obj *rsvpEro) validateToAndFrom() error { +func (obj *patternFlowTcpEcnNsMetricTag) validateToAndFrom() error { // emptyVars() obj.validateObj(&obj.validation, true) return obj.validationResult() } -func (obj *rsvpEro) Validate() error { +func (obj *patternFlowTcpEcnNsMetricTag) Validate() error { // emptyVars() obj.validateObj(&obj.validation, false) return obj.validationResult() } -func (obj *rsvpEro) String() string { +func (obj *patternFlowTcpEcnNsMetricTag) String() string { str, err := obj.ToYaml() if err != nil { return err.Error() @@ -184268,12 +227492,12 @@ func (obj *rsvpEro) String() string { return str } -func (obj *rsvpEro) Clone() (RsvpEro, error) { +func (obj *patternFlowTcpEcnNsMetricTag) Clone() (PatternFlowTcpEcnNsMetricTag, error) { vErr := obj.Validate() if vErr != nil { return nil, vErr } - newObj := NewRsvpEro() + newObj := NewPatternFlowTcpEcnNsMetricTag() data, err := proto.Marshal(obj.Msg()) if err != nil { return nil, err @@ -184285,274 +227509,183 @@ func (obj *rsvpEro) Clone() (RsvpEro, error) { return newObj, nil } -func (obj *rsvpEro) setNil() { - obj.subobjectsHolder = nil - obj.validationErrors = nil - obj.warnings = nil - obj.constraints = make(map[string]map[string]Constraints) -} - -// RsvpEro is configuration for the optional RSVP-TE explicit route object(ERO) object included in Path Messages. -type RsvpEro interface { +// PatternFlowTcpEcnNsMetricTag is metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. +type PatternFlowTcpEcnNsMetricTag interface { Validation - // Msg marshals RsvpEro to protobuf object *otg.RsvpEro + // Msg marshals PatternFlowTcpEcnNsMetricTag to protobuf object *otg.PatternFlowTcpEcnNsMetricTag // and doesn't set defaults - Msg() *otg.RsvpEro - // SetMsg unmarshals RsvpEro from protobuf object *otg.RsvpEro + Msg() *otg.PatternFlowTcpEcnNsMetricTag + // SetMsg unmarshals PatternFlowTcpEcnNsMetricTag from protobuf object *otg.PatternFlowTcpEcnNsMetricTag // and doesn't set defaults - SetMsg(*otg.RsvpEro) RsvpEro - // ToProto marshals RsvpEro to protobuf object *otg.RsvpEro - ToProto() (*otg.RsvpEro, error) - // ToPbText marshals RsvpEro to protobuf text + SetMsg(*otg.PatternFlowTcpEcnNsMetricTag) PatternFlowTcpEcnNsMetricTag + // ToProto marshals PatternFlowTcpEcnNsMetricTag to protobuf object *otg.PatternFlowTcpEcnNsMetricTag + ToProto() (*otg.PatternFlowTcpEcnNsMetricTag, error) + // ToPbText marshals PatternFlowTcpEcnNsMetricTag to protobuf text ToPbText() (string, error) - // ToYaml marshals RsvpEro to YAML text + // ToYaml marshals PatternFlowTcpEcnNsMetricTag to YAML text ToYaml() (string, error) - // ToJson marshals RsvpEro to JSON text + // ToJson marshals PatternFlowTcpEcnNsMetricTag to JSON text ToJson() (string, error) - // FromProto unmarshals RsvpEro from protobuf object *otg.RsvpEro - FromProto(msg *otg.RsvpEro) (RsvpEro, error) - // FromPbText unmarshals RsvpEro from protobuf text + // FromProto unmarshals PatternFlowTcpEcnNsMetricTag from protobuf object *otg.PatternFlowTcpEcnNsMetricTag + FromProto(msg *otg.PatternFlowTcpEcnNsMetricTag) (PatternFlowTcpEcnNsMetricTag, error) + // FromPbText unmarshals PatternFlowTcpEcnNsMetricTag from protobuf text FromPbText(value string) error - // FromYaml unmarshals RsvpEro from YAML text + // FromYaml unmarshals PatternFlowTcpEcnNsMetricTag from YAML text FromYaml(value string) error - // FromJson unmarshals RsvpEro from JSON text + // FromJson unmarshals PatternFlowTcpEcnNsMetricTag from JSON text FromJson(value string) error - // Validate validates RsvpEro + // Validate validates PatternFlowTcpEcnNsMetricTag Validate() error // A stringer function String() string // Clones the object - Clone() (RsvpEro, error) + Clone() (PatternFlowTcpEcnNsMetricTag, error) validateToAndFrom() error validateObj(vObj *validation, set_default bool) setDefault() - // PrependNeighborIp returns RsvpEroPrependNeighborIpEnum, set in RsvpEro - PrependNeighborIp() RsvpEroPrependNeighborIpEnum - // SetPrependNeighborIp assigns RsvpEroPrependNeighborIpEnum provided by user to RsvpEro - SetPrependNeighborIp(value RsvpEroPrependNeighborIpEnum) RsvpEro - // HasPrependNeighborIp checks if PrependNeighborIp has been set in RsvpEro - HasPrependNeighborIp() bool - // PrefixLength returns uint32, set in RsvpEro. - PrefixLength() uint32 - // SetPrefixLength assigns uint32 provided by user to RsvpEro - SetPrefixLength(value uint32) RsvpEro - // HasPrefixLength checks if PrefixLength has been set in RsvpEro - HasPrefixLength() bool - // Subobjects returns RsvpEroRsvpEroSubobjectIterIter, set in RsvpEro - Subobjects() RsvpEroRsvpEroSubobjectIter - setNil() + // Name returns string, set in PatternFlowTcpEcnNsMetricTag. + Name() string + // SetName assigns string provided by user to PatternFlowTcpEcnNsMetricTag + SetName(value string) PatternFlowTcpEcnNsMetricTag + // Offset returns uint32, set in PatternFlowTcpEcnNsMetricTag. + Offset() uint32 + // SetOffset assigns uint32 provided by user to PatternFlowTcpEcnNsMetricTag + SetOffset(value uint32) PatternFlowTcpEcnNsMetricTag + // HasOffset checks if Offset has been set in PatternFlowTcpEcnNsMetricTag + HasOffset() bool + // Length returns uint32, set in PatternFlowTcpEcnNsMetricTag. + Length() uint32 + // SetLength assigns uint32 provided by user to PatternFlowTcpEcnNsMetricTag + SetLength(value uint32) PatternFlowTcpEcnNsMetricTag + // HasLength checks if Length has been set in PatternFlowTcpEcnNsMetricTag + HasLength() bool } -type RsvpEroPrependNeighborIpEnum string - -// Enum of PrependNeighborIp on RsvpEro -var RsvpEroPrependNeighborIp = struct { - DONT_PREPEND RsvpEroPrependNeighborIpEnum - PREPEND_LOOSE RsvpEroPrependNeighborIpEnum - PREPEND_STRICT RsvpEroPrependNeighborIpEnum -}{ - DONT_PREPEND: RsvpEroPrependNeighborIpEnum("dont_prepend"), - PREPEND_LOOSE: RsvpEroPrependNeighborIpEnum("prepend_loose"), - PREPEND_STRICT: RsvpEroPrependNeighborIpEnum("prepend_strict"), -} +// Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field +// Name returns a string +func (obj *patternFlowTcpEcnNsMetricTag) Name() string { -func (obj *rsvpEro) PrependNeighborIp() RsvpEroPrependNeighborIpEnum { - return RsvpEroPrependNeighborIpEnum(obj.obj.PrependNeighborIp.Enum().String()) -} + return *obj.obj.Name -// Determines whether the IP address of the RSVP neighbor should be added as an ERO sub-object. If it is to be included, it can be included as a Loose hop or as a Strict hop. -// PrependNeighborIp returns a string -func (obj *rsvpEro) HasPrependNeighborIp() bool { - return obj.obj.PrependNeighborIp != nil } -func (obj *rsvpEro) SetPrependNeighborIp(value RsvpEroPrependNeighborIpEnum) RsvpEro { - intValue, ok := otg.RsvpEro_PrependNeighborIp_Enum_value[string(value)] - if !ok { - obj.validationErrors = append(obj.validationErrors, fmt.Sprintf( - "%s is not a valid choice on RsvpEroPrependNeighborIpEnum", string(value))) - return obj - } - enumValue := otg.RsvpEro_PrependNeighborIp_Enum(intValue) - obj.obj.PrependNeighborIp = &enumValue +// Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field +// SetName sets the string value in the PatternFlowTcpEcnNsMetricTag object +func (obj *patternFlowTcpEcnNsMetricTag) SetName(value string) PatternFlowTcpEcnNsMetricTag { + obj.obj.Name = &value return obj } -// If prepend_egress_ip is set to one of 'prepend_loose' or 'prepend_strict', then set this value as the prefix length of the ERO sub-object containing egress IP address. -// PrefixLength returns a uint32 -func (obj *rsvpEro) PrefixLength() uint32 { +// Offset in bits relative to start of corresponding header field +// Offset returns a uint32 +func (obj *patternFlowTcpEcnNsMetricTag) Offset() uint32 { - return *obj.obj.PrefixLength + return *obj.obj.Offset } -// If prepend_egress_ip is set to one of 'prepend_loose' or 'prepend_strict', then set this value as the prefix length of the ERO sub-object containing egress IP address. -// PrefixLength returns a uint32 -func (obj *rsvpEro) HasPrefixLength() bool { - return obj.obj.PrefixLength != nil +// Offset in bits relative to start of corresponding header field +// Offset returns a uint32 +func (obj *patternFlowTcpEcnNsMetricTag) HasOffset() bool { + return obj.obj.Offset != nil } -// If prepend_egress_ip is set to one of 'prepend_loose' or 'prepend_strict', then set this value as the prefix length of the ERO sub-object containing egress IP address. -// SetPrefixLength sets the uint32 value in the RsvpEro object -func (obj *rsvpEro) SetPrefixLength(value uint32) RsvpEro { +// Offset in bits relative to start of corresponding header field +// SetOffset sets the uint32 value in the PatternFlowTcpEcnNsMetricTag object +func (obj *patternFlowTcpEcnNsMetricTag) SetOffset(value uint32) PatternFlowTcpEcnNsMetricTag { - obj.obj.PrefixLength = &value + obj.obj.Offset = &value return obj } -// Array of sub-objects to be included in the ERO. These sub-objects contain the intermediate hops to be traversed by the LSP while being forwarded towards the egress endpoint. These sub-objects are included after the optional sub-object containing IP address of egress endpoint of the LSP (when present). -// Subobjects returns a []RsvpEroSubobject -func (obj *rsvpEro) Subobjects() RsvpEroRsvpEroSubobjectIter { - if len(obj.obj.Subobjects) == 0 { - obj.obj.Subobjects = []*otg.RsvpEroSubobject{} - } - if obj.subobjectsHolder == nil { - obj.subobjectsHolder = newRsvpEroRsvpEroSubobjectIter(&obj.obj.Subobjects).setMsg(obj) - } - return obj.subobjectsHolder -} - -type rsvpEroRsvpEroSubobjectIter struct { - obj *rsvpEro - rsvpEroSubobjectSlice []RsvpEroSubobject - fieldPtr *[]*otg.RsvpEroSubobject -} - -func newRsvpEroRsvpEroSubobjectIter(ptr *[]*otg.RsvpEroSubobject) RsvpEroRsvpEroSubobjectIter { - return &rsvpEroRsvpEroSubobjectIter{fieldPtr: ptr} -} - -type RsvpEroRsvpEroSubobjectIter interface { - setMsg(*rsvpEro) RsvpEroRsvpEroSubobjectIter - Items() []RsvpEroSubobject - Add() RsvpEroSubobject - Append(items ...RsvpEroSubobject) RsvpEroRsvpEroSubobjectIter - Set(index int, newObj RsvpEroSubobject) RsvpEroRsvpEroSubobjectIter - Clear() RsvpEroRsvpEroSubobjectIter - clearHolderSlice() RsvpEroRsvpEroSubobjectIter - appendHolderSlice(item RsvpEroSubobject) RsvpEroRsvpEroSubobjectIter -} +// Number of bits to track for metrics starting from configured offset of corresponding header field +// Length returns a uint32 +func (obj *patternFlowTcpEcnNsMetricTag) Length() uint32 { -func (obj *rsvpEroRsvpEroSubobjectIter) setMsg(msg *rsvpEro) RsvpEroRsvpEroSubobjectIter { - obj.clearHolderSlice() - for _, val := range *obj.fieldPtr { - obj.appendHolderSlice(&rsvpEroSubobject{obj: val}) - } - obj.obj = msg - return obj -} + return *obj.obj.Length -func (obj *rsvpEroRsvpEroSubobjectIter) Items() []RsvpEroSubobject { - return obj.rsvpEroSubobjectSlice } -func (obj *rsvpEroRsvpEroSubobjectIter) Add() RsvpEroSubobject { - newObj := &otg.RsvpEroSubobject{} - *obj.fieldPtr = append(*obj.fieldPtr, newObj) - newLibObj := &rsvpEroSubobject{obj: newObj} - newLibObj.setDefault() - obj.rsvpEroSubobjectSlice = append(obj.rsvpEroSubobjectSlice, newLibObj) - return newLibObj +// Number of bits to track for metrics starting from configured offset of corresponding header field +// Length returns a uint32 +func (obj *patternFlowTcpEcnNsMetricTag) HasLength() bool { + return obj.obj.Length != nil } -func (obj *rsvpEroRsvpEroSubobjectIter) Append(items ...RsvpEroSubobject) RsvpEroRsvpEroSubobjectIter { - for _, item := range items { - newObj := item.Msg() - *obj.fieldPtr = append(*obj.fieldPtr, newObj) - obj.rsvpEroSubobjectSlice = append(obj.rsvpEroSubobjectSlice, item) - } - return obj -} +// Number of bits to track for metrics starting from configured offset of corresponding header field +// SetLength sets the uint32 value in the PatternFlowTcpEcnNsMetricTag object +func (obj *patternFlowTcpEcnNsMetricTag) SetLength(value uint32) PatternFlowTcpEcnNsMetricTag { -func (obj *rsvpEroRsvpEroSubobjectIter) Set(index int, newObj RsvpEroSubobject) RsvpEroRsvpEroSubobjectIter { - (*obj.fieldPtr)[index] = newObj.Msg() - obj.rsvpEroSubobjectSlice[index] = newObj - return obj -} -func (obj *rsvpEroRsvpEroSubobjectIter) Clear() RsvpEroRsvpEroSubobjectIter { - if len(*obj.fieldPtr) > 0 { - *obj.fieldPtr = []*otg.RsvpEroSubobject{} - obj.rsvpEroSubobjectSlice = []RsvpEroSubobject{} - } - return obj -} -func (obj *rsvpEroRsvpEroSubobjectIter) clearHolderSlice() RsvpEroRsvpEroSubobjectIter { - if len(obj.rsvpEroSubobjectSlice) > 0 { - obj.rsvpEroSubobjectSlice = []RsvpEroSubobject{} - } - return obj -} -func (obj *rsvpEroRsvpEroSubobjectIter) appendHolderSlice(item RsvpEroSubobject) RsvpEroRsvpEroSubobjectIter { - obj.rsvpEroSubobjectSlice = append(obj.rsvpEroSubobjectSlice, item) + obj.obj.Length = &value return obj } -func (obj *rsvpEro) validateObj(vObj *validation, set_default bool) { +func (obj *patternFlowTcpEcnNsMetricTag) validateObj(vObj *validation, set_default bool) { if set_default { obj.setDefault() } - if obj.obj.PrefixLength != nil { + // Name is required + if obj.obj.Name == nil { + vObj.validationErrors = append(vObj.validationErrors, "Name is required field on interface PatternFlowTcpEcnNsMetricTag") + } - if *obj.obj.PrefixLength > 32 { + if obj.obj.Offset != nil { + + if *obj.obj.Offset > 0 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("0 <= RsvpEro.PrefixLength <= 32 but Got %d", *obj.obj.PrefixLength)) + fmt.Sprintf("0 <= PatternFlowTcpEcnNsMetricTag.Offset <= 0 but Got %d", *obj.obj.Offset)) } } - if len(obj.obj.Subobjects) != 0 { + if obj.obj.Length != nil { - if set_default { - obj.Subobjects().clearHolderSlice() - for _, item := range obj.obj.Subobjects { - obj.Subobjects().appendHolderSlice(&rsvpEroSubobject{obj: item}) - } - } - for _, item := range obj.Subobjects().Items() { - item.validateObj(vObj, set_default) + if *obj.obj.Length < 1 || *obj.obj.Length > 1 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("1 <= PatternFlowTcpEcnNsMetricTag.Length <= 1 but Got %d", *obj.obj.Length)) } } } -func (obj *rsvpEro) setDefault() { - if obj.obj.PrependNeighborIp == nil { - obj.SetPrependNeighborIp(RsvpEroPrependNeighborIp.PREPEND_LOOSE) - +func (obj *patternFlowTcpEcnNsMetricTag) setDefault() { + if obj.obj.Offset == nil { + obj.SetOffset(0) } - if obj.obj.PrefixLength == nil { - obj.SetPrefixLength(32) + if obj.obj.Length == nil { + obj.SetLength(1) } } -// ***** PatternFlowEthernetDstCounter ***** -type patternFlowEthernetDstCounter struct { +// ***** PatternFlowTcpEcnCwrCounter ***** +type patternFlowTcpEcnCwrCounter struct { validation - obj *otg.PatternFlowEthernetDstCounter + obj *otg.PatternFlowTcpEcnCwrCounter } -func NewPatternFlowEthernetDstCounter() PatternFlowEthernetDstCounter { - obj := patternFlowEthernetDstCounter{obj: &otg.PatternFlowEthernetDstCounter{}} +func NewPatternFlowTcpEcnCwrCounter() PatternFlowTcpEcnCwrCounter { + obj := patternFlowTcpEcnCwrCounter{obj: &otg.PatternFlowTcpEcnCwrCounter{}} obj.setDefault() return &obj } -func (obj *patternFlowEthernetDstCounter) Msg() *otg.PatternFlowEthernetDstCounter { +func (obj *patternFlowTcpEcnCwrCounter) Msg() *otg.PatternFlowTcpEcnCwrCounter { return obj.obj } -func (obj *patternFlowEthernetDstCounter) SetMsg(msg *otg.PatternFlowEthernetDstCounter) PatternFlowEthernetDstCounter { +func (obj *patternFlowTcpEcnCwrCounter) SetMsg(msg *otg.PatternFlowTcpEcnCwrCounter) PatternFlowTcpEcnCwrCounter { proto.Merge(obj.obj, msg) return obj } -func (obj *patternFlowEthernetDstCounter) ToProto() (*otg.PatternFlowEthernetDstCounter, error) { +func (obj *patternFlowTcpEcnCwrCounter) ToProto() (*otg.PatternFlowTcpEcnCwrCounter, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -184560,7 +227693,7 @@ func (obj *patternFlowEthernetDstCounter) ToProto() (*otg.PatternFlowEthernetDst return obj.Msg(), nil } -func (obj *patternFlowEthernetDstCounter) FromProto(msg *otg.PatternFlowEthernetDstCounter) (PatternFlowEthernetDstCounter, error) { +func (obj *patternFlowTcpEcnCwrCounter) FromProto(msg *otg.PatternFlowTcpEcnCwrCounter) (PatternFlowTcpEcnCwrCounter, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -184569,7 +227702,7 @@ func (obj *patternFlowEthernetDstCounter) FromProto(msg *otg.PatternFlowEthernet return newObj, nil } -func (obj *patternFlowEthernetDstCounter) ToPbText() (string, error) { +func (obj *patternFlowTcpEcnCwrCounter) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -184581,7 +227714,7 @@ func (obj *patternFlowEthernetDstCounter) ToPbText() (string, error) { return string(protoMarshal), nil } -func (obj *patternFlowEthernetDstCounter) FromPbText(value string) error { +func (obj *patternFlowTcpEcnCwrCounter) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj @@ -184594,7 +227727,7 @@ func (obj *patternFlowEthernetDstCounter) FromPbText(value string) error { return retObj } -func (obj *patternFlowEthernetDstCounter) ToYaml() (string, error) { +func (obj *patternFlowTcpEcnCwrCounter) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -184615,7 +227748,7 @@ func (obj *patternFlowEthernetDstCounter) ToYaml() (string, error) { return string(data), nil } -func (obj *patternFlowEthernetDstCounter) FromYaml(value string) error { +func (obj *patternFlowTcpEcnCwrCounter) FromYaml(value string) error { if value == "" { value = "{}" } @@ -184640,7 +227773,7 @@ func (obj *patternFlowEthernetDstCounter) FromYaml(value string) error { return nil } -func (obj *patternFlowEthernetDstCounter) ToJson() (string, error) { +func (obj *patternFlowTcpEcnCwrCounter) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -184658,7 +227791,7 @@ func (obj *patternFlowEthernetDstCounter) ToJson() (string, error) { return string(data), nil } -func (obj *patternFlowEthernetDstCounter) FromJson(value string) error { +func (obj *patternFlowTcpEcnCwrCounter) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -184679,19 +227812,19 @@ func (obj *patternFlowEthernetDstCounter) FromJson(value string) error { return nil } -func (obj *patternFlowEthernetDstCounter) validateToAndFrom() error { +func (obj *patternFlowTcpEcnCwrCounter) validateToAndFrom() error { // emptyVars() obj.validateObj(&obj.validation, true) return obj.validationResult() } -func (obj *patternFlowEthernetDstCounter) Validate() error { +func (obj *patternFlowTcpEcnCwrCounter) Validate() error { // emptyVars() obj.validateObj(&obj.validation, false) return obj.validationResult() } -func (obj *patternFlowEthernetDstCounter) String() string { +func (obj *patternFlowTcpEcnCwrCounter) String() string { str, err := obj.ToYaml() if err != nil { return err.Error() @@ -184699,12 +227832,12 @@ func (obj *patternFlowEthernetDstCounter) String() string { return str } -func (obj *patternFlowEthernetDstCounter) Clone() (PatternFlowEthernetDstCounter, error) { +func (obj *patternFlowTcpEcnCwrCounter) Clone() (PatternFlowTcpEcnCwrCounter, error) { vErr := obj.Validate() if vErr != nil { return nil, vErr } - newObj := NewPatternFlowEthernetDstCounter() + newObj := NewPatternFlowTcpEcnCwrCounter() data, err := proto.Marshal(obj.Msg()) if err != nil { return nil, err @@ -184716,99 +227849,99 @@ func (obj *patternFlowEthernetDstCounter) Clone() (PatternFlowEthernetDstCounter return newObj, nil } -// PatternFlowEthernetDstCounter is mac counter pattern -type PatternFlowEthernetDstCounter interface { +// PatternFlowTcpEcnCwrCounter is integer counter pattern +type PatternFlowTcpEcnCwrCounter interface { Validation - // Msg marshals PatternFlowEthernetDstCounter to protobuf object *otg.PatternFlowEthernetDstCounter + // Msg marshals PatternFlowTcpEcnCwrCounter to protobuf object *otg.PatternFlowTcpEcnCwrCounter // and doesn't set defaults - Msg() *otg.PatternFlowEthernetDstCounter - // SetMsg unmarshals PatternFlowEthernetDstCounter from protobuf object *otg.PatternFlowEthernetDstCounter + Msg() *otg.PatternFlowTcpEcnCwrCounter + // SetMsg unmarshals PatternFlowTcpEcnCwrCounter from protobuf object *otg.PatternFlowTcpEcnCwrCounter // and doesn't set defaults - SetMsg(*otg.PatternFlowEthernetDstCounter) PatternFlowEthernetDstCounter - // ToProto marshals PatternFlowEthernetDstCounter to protobuf object *otg.PatternFlowEthernetDstCounter - ToProto() (*otg.PatternFlowEthernetDstCounter, error) - // ToPbText marshals PatternFlowEthernetDstCounter to protobuf text + SetMsg(*otg.PatternFlowTcpEcnCwrCounter) PatternFlowTcpEcnCwrCounter + // ToProto marshals PatternFlowTcpEcnCwrCounter to protobuf object *otg.PatternFlowTcpEcnCwrCounter + ToProto() (*otg.PatternFlowTcpEcnCwrCounter, error) + // ToPbText marshals PatternFlowTcpEcnCwrCounter to protobuf text ToPbText() (string, error) - // ToYaml marshals PatternFlowEthernetDstCounter to YAML text + // ToYaml marshals PatternFlowTcpEcnCwrCounter to YAML text ToYaml() (string, error) - // ToJson marshals PatternFlowEthernetDstCounter to JSON text + // ToJson marshals PatternFlowTcpEcnCwrCounter to JSON text ToJson() (string, error) - // FromProto unmarshals PatternFlowEthernetDstCounter from protobuf object *otg.PatternFlowEthernetDstCounter - FromProto(msg *otg.PatternFlowEthernetDstCounter) (PatternFlowEthernetDstCounter, error) - // FromPbText unmarshals PatternFlowEthernetDstCounter from protobuf text + // FromProto unmarshals PatternFlowTcpEcnCwrCounter from protobuf object *otg.PatternFlowTcpEcnCwrCounter + FromProto(msg *otg.PatternFlowTcpEcnCwrCounter) (PatternFlowTcpEcnCwrCounter, error) + // FromPbText unmarshals PatternFlowTcpEcnCwrCounter from protobuf text FromPbText(value string) error - // FromYaml unmarshals PatternFlowEthernetDstCounter from YAML text + // FromYaml unmarshals PatternFlowTcpEcnCwrCounter from YAML text FromYaml(value string) error - // FromJson unmarshals PatternFlowEthernetDstCounter from JSON text + // FromJson unmarshals PatternFlowTcpEcnCwrCounter from JSON text FromJson(value string) error - // Validate validates PatternFlowEthernetDstCounter + // Validate validates PatternFlowTcpEcnCwrCounter Validate() error // A stringer function String() string // Clones the object - Clone() (PatternFlowEthernetDstCounter, error) + Clone() (PatternFlowTcpEcnCwrCounter, error) validateToAndFrom() error validateObj(vObj *validation, set_default bool) setDefault() - // Start returns string, set in PatternFlowEthernetDstCounter. - Start() string - // SetStart assigns string provided by user to PatternFlowEthernetDstCounter - SetStart(value string) PatternFlowEthernetDstCounter - // HasStart checks if Start has been set in PatternFlowEthernetDstCounter + // Start returns uint32, set in PatternFlowTcpEcnCwrCounter. + Start() uint32 + // SetStart assigns uint32 provided by user to PatternFlowTcpEcnCwrCounter + SetStart(value uint32) PatternFlowTcpEcnCwrCounter + // HasStart checks if Start has been set in PatternFlowTcpEcnCwrCounter HasStart() bool - // Step returns string, set in PatternFlowEthernetDstCounter. - Step() string - // SetStep assigns string provided by user to PatternFlowEthernetDstCounter - SetStep(value string) PatternFlowEthernetDstCounter - // HasStep checks if Step has been set in PatternFlowEthernetDstCounter + // Step returns uint32, set in PatternFlowTcpEcnCwrCounter. + Step() uint32 + // SetStep assigns uint32 provided by user to PatternFlowTcpEcnCwrCounter + SetStep(value uint32) PatternFlowTcpEcnCwrCounter + // HasStep checks if Step has been set in PatternFlowTcpEcnCwrCounter HasStep() bool - // Count returns uint32, set in PatternFlowEthernetDstCounter. + // Count returns uint32, set in PatternFlowTcpEcnCwrCounter. Count() uint32 - // SetCount assigns uint32 provided by user to PatternFlowEthernetDstCounter - SetCount(value uint32) PatternFlowEthernetDstCounter - // HasCount checks if Count has been set in PatternFlowEthernetDstCounter + // SetCount assigns uint32 provided by user to PatternFlowTcpEcnCwrCounter + SetCount(value uint32) PatternFlowTcpEcnCwrCounter + // HasCount checks if Count has been set in PatternFlowTcpEcnCwrCounter HasCount() bool } // description is TBD -// Start returns a string -func (obj *patternFlowEthernetDstCounter) Start() string { +// Start returns a uint32 +func (obj *patternFlowTcpEcnCwrCounter) Start() uint32 { return *obj.obj.Start } // description is TBD -// Start returns a string -func (obj *patternFlowEthernetDstCounter) HasStart() bool { +// Start returns a uint32 +func (obj *patternFlowTcpEcnCwrCounter) HasStart() bool { return obj.obj.Start != nil } // description is TBD -// SetStart sets the string value in the PatternFlowEthernetDstCounter object -func (obj *patternFlowEthernetDstCounter) SetStart(value string) PatternFlowEthernetDstCounter { +// SetStart sets the uint32 value in the PatternFlowTcpEcnCwrCounter object +func (obj *patternFlowTcpEcnCwrCounter) SetStart(value uint32) PatternFlowTcpEcnCwrCounter { obj.obj.Start = &value return obj } // description is TBD -// Step returns a string -func (obj *patternFlowEthernetDstCounter) Step() string { +// Step returns a uint32 +func (obj *patternFlowTcpEcnCwrCounter) Step() uint32 { return *obj.obj.Step } // description is TBD -// Step returns a string -func (obj *patternFlowEthernetDstCounter) HasStep() bool { +// Step returns a uint32 +func (obj *patternFlowTcpEcnCwrCounter) HasStep() bool { return obj.obj.Step != nil } // description is TBD -// SetStep sets the string value in the PatternFlowEthernetDstCounter object -func (obj *patternFlowEthernetDstCounter) SetStep(value string) PatternFlowEthernetDstCounter { +// SetStep sets the uint32 value in the PatternFlowTcpEcnCwrCounter object +func (obj *patternFlowTcpEcnCwrCounter) SetStep(value uint32) PatternFlowTcpEcnCwrCounter { obj.obj.Step = &value return obj @@ -184816,7 +227949,7 @@ func (obj *patternFlowEthernetDstCounter) SetStep(value string) PatternFlowEther // description is TBD // Count returns a uint32 -func (obj *patternFlowEthernetDstCounter) Count() uint32 { +func (obj *patternFlowTcpEcnCwrCounter) Count() uint32 { return *obj.obj.Count @@ -184824,49 +227957,61 @@ func (obj *patternFlowEthernetDstCounter) Count() uint32 { // description is TBD // Count returns a uint32 -func (obj *patternFlowEthernetDstCounter) HasCount() bool { +func (obj *patternFlowTcpEcnCwrCounter) HasCount() bool { return obj.obj.Count != nil } // description is TBD -// SetCount sets the uint32 value in the PatternFlowEthernetDstCounter object -func (obj *patternFlowEthernetDstCounter) SetCount(value uint32) PatternFlowEthernetDstCounter { +// SetCount sets the uint32 value in the PatternFlowTcpEcnCwrCounter object +func (obj *patternFlowTcpEcnCwrCounter) SetCount(value uint32) PatternFlowTcpEcnCwrCounter { obj.obj.Count = &value return obj } -func (obj *patternFlowEthernetDstCounter) validateObj(vObj *validation, set_default bool) { +func (obj *patternFlowTcpEcnCwrCounter) validateObj(vObj *validation, set_default bool) { if set_default { obj.setDefault() } if obj.obj.Start != nil { - err := obj.validateMac(obj.Start()) - if err != nil { - vObj.validationErrors = append(vObj.validationErrors, fmt.Sprintf("%s %s", err.Error(), "on PatternFlowEthernetDstCounter.Start")) + if *obj.obj.Start > 1 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("0 <= PatternFlowTcpEcnCwrCounter.Start <= 1 but Got %d", *obj.obj.Start)) } } if obj.obj.Step != nil { - err := obj.validateMac(obj.Step()) - if err != nil { - vObj.validationErrors = append(vObj.validationErrors, fmt.Sprintf("%s %s", err.Error(), "on PatternFlowEthernetDstCounter.Step")) + if *obj.obj.Step > 1 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("0 <= PatternFlowTcpEcnCwrCounter.Step <= 1 but Got %d", *obj.obj.Step)) + } + + } + + if obj.obj.Count != nil { + + if *obj.obj.Count > 1 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("0 <= PatternFlowTcpEcnCwrCounter.Count <= 1 but Got %d", *obj.obj.Count)) } } } -func (obj *patternFlowEthernetDstCounter) setDefault() { +func (obj *patternFlowTcpEcnCwrCounter) setDefault() { if obj.obj.Start == nil { - obj.SetStart("00:00:00:00:00:00") + obj.SetStart(0) } if obj.obj.Step == nil { - obj.SetStep("00:00:00:00:00:01") + obj.SetStep(1) } if obj.obj.Count == nil { obj.SetCount(1) @@ -184874,29 +228019,29 @@ func (obj *patternFlowEthernetDstCounter) setDefault() { } -// ***** PatternFlowEthernetDstMetricTag ***** -type patternFlowEthernetDstMetricTag struct { +// ***** PatternFlowTcpEcnCwrMetricTag ***** +type patternFlowTcpEcnCwrMetricTag struct { validation - obj *otg.PatternFlowEthernetDstMetricTag + obj *otg.PatternFlowTcpEcnCwrMetricTag } -func NewPatternFlowEthernetDstMetricTag() PatternFlowEthernetDstMetricTag { - obj := patternFlowEthernetDstMetricTag{obj: &otg.PatternFlowEthernetDstMetricTag{}} +func NewPatternFlowTcpEcnCwrMetricTag() PatternFlowTcpEcnCwrMetricTag { + obj := patternFlowTcpEcnCwrMetricTag{obj: &otg.PatternFlowTcpEcnCwrMetricTag{}} obj.setDefault() return &obj } -func (obj *patternFlowEthernetDstMetricTag) Msg() *otg.PatternFlowEthernetDstMetricTag { +func (obj *patternFlowTcpEcnCwrMetricTag) Msg() *otg.PatternFlowTcpEcnCwrMetricTag { return obj.obj } -func (obj *patternFlowEthernetDstMetricTag) SetMsg(msg *otg.PatternFlowEthernetDstMetricTag) PatternFlowEthernetDstMetricTag { +func (obj *patternFlowTcpEcnCwrMetricTag) SetMsg(msg *otg.PatternFlowTcpEcnCwrMetricTag) PatternFlowTcpEcnCwrMetricTag { proto.Merge(obj.obj, msg) return obj } -func (obj *patternFlowEthernetDstMetricTag) ToProto() (*otg.PatternFlowEthernetDstMetricTag, error) { +func (obj *patternFlowTcpEcnCwrMetricTag) ToProto() (*otg.PatternFlowTcpEcnCwrMetricTag, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -184904,7 +228049,7 @@ func (obj *patternFlowEthernetDstMetricTag) ToProto() (*otg.PatternFlowEthernetD return obj.Msg(), nil } -func (obj *patternFlowEthernetDstMetricTag) FromProto(msg *otg.PatternFlowEthernetDstMetricTag) (PatternFlowEthernetDstMetricTag, error) { +func (obj *patternFlowTcpEcnCwrMetricTag) FromProto(msg *otg.PatternFlowTcpEcnCwrMetricTag) (PatternFlowTcpEcnCwrMetricTag, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -184913,7 +228058,7 @@ func (obj *patternFlowEthernetDstMetricTag) FromProto(msg *otg.PatternFlowEthern return newObj, nil } -func (obj *patternFlowEthernetDstMetricTag) ToPbText() (string, error) { +func (obj *patternFlowTcpEcnCwrMetricTag) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -184925,7 +228070,7 @@ func (obj *patternFlowEthernetDstMetricTag) ToPbText() (string, error) { return string(protoMarshal), nil } -func (obj *patternFlowEthernetDstMetricTag) FromPbText(value string) error { +func (obj *patternFlowTcpEcnCwrMetricTag) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj @@ -184938,7 +228083,7 @@ func (obj *patternFlowEthernetDstMetricTag) FromPbText(value string) error { return retObj } -func (obj *patternFlowEthernetDstMetricTag) ToYaml() (string, error) { +func (obj *patternFlowTcpEcnCwrMetricTag) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -184959,7 +228104,7 @@ func (obj *patternFlowEthernetDstMetricTag) ToYaml() (string, error) { return string(data), nil } -func (obj *patternFlowEthernetDstMetricTag) FromYaml(value string) error { +func (obj *patternFlowTcpEcnCwrMetricTag) FromYaml(value string) error { if value == "" { value = "{}" } @@ -184984,7 +228129,7 @@ func (obj *patternFlowEthernetDstMetricTag) FromYaml(value string) error { return nil } -func (obj *patternFlowEthernetDstMetricTag) ToJson() (string, error) { +func (obj *patternFlowTcpEcnCwrMetricTag) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -185002,7 +228147,7 @@ func (obj *patternFlowEthernetDstMetricTag) ToJson() (string, error) { return string(data), nil } -func (obj *patternFlowEthernetDstMetricTag) FromJson(value string) error { +func (obj *patternFlowTcpEcnCwrMetricTag) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -185023,19 +228168,19 @@ func (obj *patternFlowEthernetDstMetricTag) FromJson(value string) error { return nil } -func (obj *patternFlowEthernetDstMetricTag) validateToAndFrom() error { +func (obj *patternFlowTcpEcnCwrMetricTag) validateToAndFrom() error { // emptyVars() obj.validateObj(&obj.validation, true) return obj.validationResult() } -func (obj *patternFlowEthernetDstMetricTag) Validate() error { +func (obj *patternFlowTcpEcnCwrMetricTag) Validate() error { // emptyVars() obj.validateObj(&obj.validation, false) return obj.validationResult() } -func (obj *patternFlowEthernetDstMetricTag) String() string { +func (obj *patternFlowTcpEcnCwrMetricTag) String() string { str, err := obj.ToYaml() if err != nil { return err.Error() @@ -185043,12 +228188,12 @@ func (obj *patternFlowEthernetDstMetricTag) String() string { return str } -func (obj *patternFlowEthernetDstMetricTag) Clone() (PatternFlowEthernetDstMetricTag, error) { +func (obj *patternFlowTcpEcnCwrMetricTag) Clone() (PatternFlowTcpEcnCwrMetricTag, error) { vErr := obj.Validate() if vErr != nil { return nil, vErr } - newObj := NewPatternFlowEthernetDstMetricTag() + newObj := NewPatternFlowTcpEcnCwrMetricTag() data, err := proto.Marshal(obj.Msg()) if err != nil { return nil, err @@ -185060,69 +228205,69 @@ func (obj *patternFlowEthernetDstMetricTag) Clone() (PatternFlowEthernetDstMetri return newObj, nil } -// PatternFlowEthernetDstMetricTag is metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. -type PatternFlowEthernetDstMetricTag interface { +// PatternFlowTcpEcnCwrMetricTag is metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. +type PatternFlowTcpEcnCwrMetricTag interface { Validation - // Msg marshals PatternFlowEthernetDstMetricTag to protobuf object *otg.PatternFlowEthernetDstMetricTag + // Msg marshals PatternFlowTcpEcnCwrMetricTag to protobuf object *otg.PatternFlowTcpEcnCwrMetricTag // and doesn't set defaults - Msg() *otg.PatternFlowEthernetDstMetricTag - // SetMsg unmarshals PatternFlowEthernetDstMetricTag from protobuf object *otg.PatternFlowEthernetDstMetricTag + Msg() *otg.PatternFlowTcpEcnCwrMetricTag + // SetMsg unmarshals PatternFlowTcpEcnCwrMetricTag from protobuf object *otg.PatternFlowTcpEcnCwrMetricTag // and doesn't set defaults - SetMsg(*otg.PatternFlowEthernetDstMetricTag) PatternFlowEthernetDstMetricTag - // ToProto marshals PatternFlowEthernetDstMetricTag to protobuf object *otg.PatternFlowEthernetDstMetricTag - ToProto() (*otg.PatternFlowEthernetDstMetricTag, error) - // ToPbText marshals PatternFlowEthernetDstMetricTag to protobuf text + SetMsg(*otg.PatternFlowTcpEcnCwrMetricTag) PatternFlowTcpEcnCwrMetricTag + // ToProto marshals PatternFlowTcpEcnCwrMetricTag to protobuf object *otg.PatternFlowTcpEcnCwrMetricTag + ToProto() (*otg.PatternFlowTcpEcnCwrMetricTag, error) + // ToPbText marshals PatternFlowTcpEcnCwrMetricTag to protobuf text ToPbText() (string, error) - // ToYaml marshals PatternFlowEthernetDstMetricTag to YAML text + // ToYaml marshals PatternFlowTcpEcnCwrMetricTag to YAML text ToYaml() (string, error) - // ToJson marshals PatternFlowEthernetDstMetricTag to JSON text + // ToJson marshals PatternFlowTcpEcnCwrMetricTag to JSON text ToJson() (string, error) - // FromProto unmarshals PatternFlowEthernetDstMetricTag from protobuf object *otg.PatternFlowEthernetDstMetricTag - FromProto(msg *otg.PatternFlowEthernetDstMetricTag) (PatternFlowEthernetDstMetricTag, error) - // FromPbText unmarshals PatternFlowEthernetDstMetricTag from protobuf text + // FromProto unmarshals PatternFlowTcpEcnCwrMetricTag from protobuf object *otg.PatternFlowTcpEcnCwrMetricTag + FromProto(msg *otg.PatternFlowTcpEcnCwrMetricTag) (PatternFlowTcpEcnCwrMetricTag, error) + // FromPbText unmarshals PatternFlowTcpEcnCwrMetricTag from protobuf text FromPbText(value string) error - // FromYaml unmarshals PatternFlowEthernetDstMetricTag from YAML text + // FromYaml unmarshals PatternFlowTcpEcnCwrMetricTag from YAML text FromYaml(value string) error - // FromJson unmarshals PatternFlowEthernetDstMetricTag from JSON text + // FromJson unmarshals PatternFlowTcpEcnCwrMetricTag from JSON text FromJson(value string) error - // Validate validates PatternFlowEthernetDstMetricTag + // Validate validates PatternFlowTcpEcnCwrMetricTag Validate() error // A stringer function String() string // Clones the object - Clone() (PatternFlowEthernetDstMetricTag, error) + Clone() (PatternFlowTcpEcnCwrMetricTag, error) validateToAndFrom() error validateObj(vObj *validation, set_default bool) setDefault() - // Name returns string, set in PatternFlowEthernetDstMetricTag. + // Name returns string, set in PatternFlowTcpEcnCwrMetricTag. Name() string - // SetName assigns string provided by user to PatternFlowEthernetDstMetricTag - SetName(value string) PatternFlowEthernetDstMetricTag - // Offset returns uint32, set in PatternFlowEthernetDstMetricTag. + // SetName assigns string provided by user to PatternFlowTcpEcnCwrMetricTag + SetName(value string) PatternFlowTcpEcnCwrMetricTag + // Offset returns uint32, set in PatternFlowTcpEcnCwrMetricTag. Offset() uint32 - // SetOffset assigns uint32 provided by user to PatternFlowEthernetDstMetricTag - SetOffset(value uint32) PatternFlowEthernetDstMetricTag - // HasOffset checks if Offset has been set in PatternFlowEthernetDstMetricTag + // SetOffset assigns uint32 provided by user to PatternFlowTcpEcnCwrMetricTag + SetOffset(value uint32) PatternFlowTcpEcnCwrMetricTag + // HasOffset checks if Offset has been set in PatternFlowTcpEcnCwrMetricTag HasOffset() bool - // Length returns uint32, set in PatternFlowEthernetDstMetricTag. + // Length returns uint32, set in PatternFlowTcpEcnCwrMetricTag. Length() uint32 - // SetLength assigns uint32 provided by user to PatternFlowEthernetDstMetricTag - SetLength(value uint32) PatternFlowEthernetDstMetricTag - // HasLength checks if Length has been set in PatternFlowEthernetDstMetricTag + // SetLength assigns uint32 provided by user to PatternFlowTcpEcnCwrMetricTag + SetLength(value uint32) PatternFlowTcpEcnCwrMetricTag + // HasLength checks if Length has been set in PatternFlowTcpEcnCwrMetricTag HasLength() bool } // Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field // Name returns a string -func (obj *patternFlowEthernetDstMetricTag) Name() string { +func (obj *patternFlowTcpEcnCwrMetricTag) Name() string { return *obj.obj.Name } // Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field -// SetName sets the string value in the PatternFlowEthernetDstMetricTag object -func (obj *patternFlowEthernetDstMetricTag) SetName(value string) PatternFlowEthernetDstMetricTag { +// SetName sets the string value in the PatternFlowTcpEcnCwrMetricTag object +func (obj *patternFlowTcpEcnCwrMetricTag) SetName(value string) PatternFlowTcpEcnCwrMetricTag { obj.obj.Name = &value return obj @@ -185130,7 +228275,7 @@ func (obj *patternFlowEthernetDstMetricTag) SetName(value string) PatternFlowEth // Offset in bits relative to start of corresponding header field // Offset returns a uint32 -func (obj *patternFlowEthernetDstMetricTag) Offset() uint32 { +func (obj *patternFlowTcpEcnCwrMetricTag) Offset() uint32 { return *obj.obj.Offset @@ -185138,13 +228283,13 @@ func (obj *patternFlowEthernetDstMetricTag) Offset() uint32 { // Offset in bits relative to start of corresponding header field // Offset returns a uint32 -func (obj *patternFlowEthernetDstMetricTag) HasOffset() bool { +func (obj *patternFlowTcpEcnCwrMetricTag) HasOffset() bool { return obj.obj.Offset != nil } // Offset in bits relative to start of corresponding header field -// SetOffset sets the uint32 value in the PatternFlowEthernetDstMetricTag object -func (obj *patternFlowEthernetDstMetricTag) SetOffset(value uint32) PatternFlowEthernetDstMetricTag { +// SetOffset sets the uint32 value in the PatternFlowTcpEcnCwrMetricTag object +func (obj *patternFlowTcpEcnCwrMetricTag) SetOffset(value uint32) PatternFlowTcpEcnCwrMetricTag { obj.obj.Offset = &value return obj @@ -185152,7 +228297,7 @@ func (obj *patternFlowEthernetDstMetricTag) SetOffset(value uint32) PatternFlowE // Number of bits to track for metrics starting from configured offset of corresponding header field // Length returns a uint32 -func (obj *patternFlowEthernetDstMetricTag) Length() uint32 { +func (obj *patternFlowTcpEcnCwrMetricTag) Length() uint32 { return *obj.obj.Length @@ -185160,83 +228305,83 @@ func (obj *patternFlowEthernetDstMetricTag) Length() uint32 { // Number of bits to track for metrics starting from configured offset of corresponding header field // Length returns a uint32 -func (obj *patternFlowEthernetDstMetricTag) HasLength() bool { +func (obj *patternFlowTcpEcnCwrMetricTag) HasLength() bool { return obj.obj.Length != nil } // Number of bits to track for metrics starting from configured offset of corresponding header field -// SetLength sets the uint32 value in the PatternFlowEthernetDstMetricTag object -func (obj *patternFlowEthernetDstMetricTag) SetLength(value uint32) PatternFlowEthernetDstMetricTag { +// SetLength sets the uint32 value in the PatternFlowTcpEcnCwrMetricTag object +func (obj *patternFlowTcpEcnCwrMetricTag) SetLength(value uint32) PatternFlowTcpEcnCwrMetricTag { obj.obj.Length = &value return obj } -func (obj *patternFlowEthernetDstMetricTag) validateObj(vObj *validation, set_default bool) { +func (obj *patternFlowTcpEcnCwrMetricTag) validateObj(vObj *validation, set_default bool) { if set_default { obj.setDefault() } // Name is required if obj.obj.Name == nil { - vObj.validationErrors = append(vObj.validationErrors, "Name is required field on interface PatternFlowEthernetDstMetricTag") + vObj.validationErrors = append(vObj.validationErrors, "Name is required field on interface PatternFlowTcpEcnCwrMetricTag") } if obj.obj.Offset != nil { - if *obj.obj.Offset > 47 { + if *obj.obj.Offset > 0 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowEthernetDstMetricTag.Offset <= 47 but Got %d", *obj.obj.Offset)) + fmt.Sprintf("0 <= PatternFlowTcpEcnCwrMetricTag.Offset <= 0 but Got %d", *obj.obj.Offset)) } } if obj.obj.Length != nil { - if *obj.obj.Length < 1 || *obj.obj.Length > 48 { + if *obj.obj.Length < 1 || *obj.obj.Length > 1 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("1 <= PatternFlowEthernetDstMetricTag.Length <= 48 but Got %d", *obj.obj.Length)) + fmt.Sprintf("1 <= PatternFlowTcpEcnCwrMetricTag.Length <= 1 but Got %d", *obj.obj.Length)) } } } -func (obj *patternFlowEthernetDstMetricTag) setDefault() { +func (obj *patternFlowTcpEcnCwrMetricTag) setDefault() { if obj.obj.Offset == nil { obj.SetOffset(0) } if obj.obj.Length == nil { - obj.SetLength(48) + obj.SetLength(1) } } -// ***** PatternFlowEthernetSrcCounter ***** -type patternFlowEthernetSrcCounter struct { +// ***** PatternFlowTcpEcnEchoCounter ***** +type patternFlowTcpEcnEchoCounter struct { validation - obj *otg.PatternFlowEthernetSrcCounter + obj *otg.PatternFlowTcpEcnEchoCounter } -func NewPatternFlowEthernetSrcCounter() PatternFlowEthernetSrcCounter { - obj := patternFlowEthernetSrcCounter{obj: &otg.PatternFlowEthernetSrcCounter{}} +func NewPatternFlowTcpEcnEchoCounter() PatternFlowTcpEcnEchoCounter { + obj := patternFlowTcpEcnEchoCounter{obj: &otg.PatternFlowTcpEcnEchoCounter{}} obj.setDefault() return &obj } -func (obj *patternFlowEthernetSrcCounter) Msg() *otg.PatternFlowEthernetSrcCounter { +func (obj *patternFlowTcpEcnEchoCounter) Msg() *otg.PatternFlowTcpEcnEchoCounter { return obj.obj } -func (obj *patternFlowEthernetSrcCounter) SetMsg(msg *otg.PatternFlowEthernetSrcCounter) PatternFlowEthernetSrcCounter { +func (obj *patternFlowTcpEcnEchoCounter) SetMsg(msg *otg.PatternFlowTcpEcnEchoCounter) PatternFlowTcpEcnEchoCounter { proto.Merge(obj.obj, msg) return obj } -func (obj *patternFlowEthernetSrcCounter) ToProto() (*otg.PatternFlowEthernetSrcCounter, error) { +func (obj *patternFlowTcpEcnEchoCounter) ToProto() (*otg.PatternFlowTcpEcnEchoCounter, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -185244,7 +228389,7 @@ func (obj *patternFlowEthernetSrcCounter) ToProto() (*otg.PatternFlowEthernetSrc return obj.Msg(), nil } -func (obj *patternFlowEthernetSrcCounter) FromProto(msg *otg.PatternFlowEthernetSrcCounter) (PatternFlowEthernetSrcCounter, error) { +func (obj *patternFlowTcpEcnEchoCounter) FromProto(msg *otg.PatternFlowTcpEcnEchoCounter) (PatternFlowTcpEcnEchoCounter, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -185253,7 +228398,7 @@ func (obj *patternFlowEthernetSrcCounter) FromProto(msg *otg.PatternFlowEthernet return newObj, nil } -func (obj *patternFlowEthernetSrcCounter) ToPbText() (string, error) { +func (obj *patternFlowTcpEcnEchoCounter) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -185265,7 +228410,7 @@ func (obj *patternFlowEthernetSrcCounter) ToPbText() (string, error) { return string(protoMarshal), nil } -func (obj *patternFlowEthernetSrcCounter) FromPbText(value string) error { +func (obj *patternFlowTcpEcnEchoCounter) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj @@ -185278,7 +228423,7 @@ func (obj *patternFlowEthernetSrcCounter) FromPbText(value string) error { return retObj } -func (obj *patternFlowEthernetSrcCounter) ToYaml() (string, error) { +func (obj *patternFlowTcpEcnEchoCounter) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -185299,7 +228444,7 @@ func (obj *patternFlowEthernetSrcCounter) ToYaml() (string, error) { return string(data), nil } -func (obj *patternFlowEthernetSrcCounter) FromYaml(value string) error { +func (obj *patternFlowTcpEcnEchoCounter) FromYaml(value string) error { if value == "" { value = "{}" } @@ -185324,7 +228469,7 @@ func (obj *patternFlowEthernetSrcCounter) FromYaml(value string) error { return nil } -func (obj *patternFlowEthernetSrcCounter) ToJson() (string, error) { +func (obj *patternFlowTcpEcnEchoCounter) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -185342,7 +228487,7 @@ func (obj *patternFlowEthernetSrcCounter) ToJson() (string, error) { return string(data), nil } -func (obj *patternFlowEthernetSrcCounter) FromJson(value string) error { +func (obj *patternFlowTcpEcnEchoCounter) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -185363,19 +228508,19 @@ func (obj *patternFlowEthernetSrcCounter) FromJson(value string) error { return nil } -func (obj *patternFlowEthernetSrcCounter) validateToAndFrom() error { +func (obj *patternFlowTcpEcnEchoCounter) validateToAndFrom() error { // emptyVars() obj.validateObj(&obj.validation, true) return obj.validationResult() } -func (obj *patternFlowEthernetSrcCounter) Validate() error { +func (obj *patternFlowTcpEcnEchoCounter) Validate() error { // emptyVars() obj.validateObj(&obj.validation, false) return obj.validationResult() } -func (obj *patternFlowEthernetSrcCounter) String() string { +func (obj *patternFlowTcpEcnEchoCounter) String() string { str, err := obj.ToYaml() if err != nil { return err.Error() @@ -185383,12 +228528,12 @@ func (obj *patternFlowEthernetSrcCounter) String() string { return str } -func (obj *patternFlowEthernetSrcCounter) Clone() (PatternFlowEthernetSrcCounter, error) { +func (obj *patternFlowTcpEcnEchoCounter) Clone() (PatternFlowTcpEcnEchoCounter, error) { vErr := obj.Validate() if vErr != nil { return nil, vErr } - newObj := NewPatternFlowEthernetSrcCounter() + newObj := NewPatternFlowTcpEcnEchoCounter() data, err := proto.Marshal(obj.Msg()) if err != nil { return nil, err @@ -185400,99 +228545,99 @@ func (obj *patternFlowEthernetSrcCounter) Clone() (PatternFlowEthernetSrcCounter return newObj, nil } -// PatternFlowEthernetSrcCounter is mac counter pattern -type PatternFlowEthernetSrcCounter interface { +// PatternFlowTcpEcnEchoCounter is integer counter pattern +type PatternFlowTcpEcnEchoCounter interface { Validation - // Msg marshals PatternFlowEthernetSrcCounter to protobuf object *otg.PatternFlowEthernetSrcCounter + // Msg marshals PatternFlowTcpEcnEchoCounter to protobuf object *otg.PatternFlowTcpEcnEchoCounter // and doesn't set defaults - Msg() *otg.PatternFlowEthernetSrcCounter - // SetMsg unmarshals PatternFlowEthernetSrcCounter from protobuf object *otg.PatternFlowEthernetSrcCounter + Msg() *otg.PatternFlowTcpEcnEchoCounter + // SetMsg unmarshals PatternFlowTcpEcnEchoCounter from protobuf object *otg.PatternFlowTcpEcnEchoCounter // and doesn't set defaults - SetMsg(*otg.PatternFlowEthernetSrcCounter) PatternFlowEthernetSrcCounter - // ToProto marshals PatternFlowEthernetSrcCounter to protobuf object *otg.PatternFlowEthernetSrcCounter - ToProto() (*otg.PatternFlowEthernetSrcCounter, error) - // ToPbText marshals PatternFlowEthernetSrcCounter to protobuf text + SetMsg(*otg.PatternFlowTcpEcnEchoCounter) PatternFlowTcpEcnEchoCounter + // ToProto marshals PatternFlowTcpEcnEchoCounter to protobuf object *otg.PatternFlowTcpEcnEchoCounter + ToProto() (*otg.PatternFlowTcpEcnEchoCounter, error) + // ToPbText marshals PatternFlowTcpEcnEchoCounter to protobuf text ToPbText() (string, error) - // ToYaml marshals PatternFlowEthernetSrcCounter to YAML text + // ToYaml marshals PatternFlowTcpEcnEchoCounter to YAML text ToYaml() (string, error) - // ToJson marshals PatternFlowEthernetSrcCounter to JSON text + // ToJson marshals PatternFlowTcpEcnEchoCounter to JSON text ToJson() (string, error) - // FromProto unmarshals PatternFlowEthernetSrcCounter from protobuf object *otg.PatternFlowEthernetSrcCounter - FromProto(msg *otg.PatternFlowEthernetSrcCounter) (PatternFlowEthernetSrcCounter, error) - // FromPbText unmarshals PatternFlowEthernetSrcCounter from protobuf text + // FromProto unmarshals PatternFlowTcpEcnEchoCounter from protobuf object *otg.PatternFlowTcpEcnEchoCounter + FromProto(msg *otg.PatternFlowTcpEcnEchoCounter) (PatternFlowTcpEcnEchoCounter, error) + // FromPbText unmarshals PatternFlowTcpEcnEchoCounter from protobuf text FromPbText(value string) error - // FromYaml unmarshals PatternFlowEthernetSrcCounter from YAML text + // FromYaml unmarshals PatternFlowTcpEcnEchoCounter from YAML text FromYaml(value string) error - // FromJson unmarshals PatternFlowEthernetSrcCounter from JSON text + // FromJson unmarshals PatternFlowTcpEcnEchoCounter from JSON text FromJson(value string) error - // Validate validates PatternFlowEthernetSrcCounter + // Validate validates PatternFlowTcpEcnEchoCounter Validate() error // A stringer function String() string // Clones the object - Clone() (PatternFlowEthernetSrcCounter, error) + Clone() (PatternFlowTcpEcnEchoCounter, error) validateToAndFrom() error validateObj(vObj *validation, set_default bool) setDefault() - // Start returns string, set in PatternFlowEthernetSrcCounter. - Start() string - // SetStart assigns string provided by user to PatternFlowEthernetSrcCounter - SetStart(value string) PatternFlowEthernetSrcCounter - // HasStart checks if Start has been set in PatternFlowEthernetSrcCounter + // Start returns uint32, set in PatternFlowTcpEcnEchoCounter. + Start() uint32 + // SetStart assigns uint32 provided by user to PatternFlowTcpEcnEchoCounter + SetStart(value uint32) PatternFlowTcpEcnEchoCounter + // HasStart checks if Start has been set in PatternFlowTcpEcnEchoCounter HasStart() bool - // Step returns string, set in PatternFlowEthernetSrcCounter. - Step() string - // SetStep assigns string provided by user to PatternFlowEthernetSrcCounter - SetStep(value string) PatternFlowEthernetSrcCounter - // HasStep checks if Step has been set in PatternFlowEthernetSrcCounter + // Step returns uint32, set in PatternFlowTcpEcnEchoCounter. + Step() uint32 + // SetStep assigns uint32 provided by user to PatternFlowTcpEcnEchoCounter + SetStep(value uint32) PatternFlowTcpEcnEchoCounter + // HasStep checks if Step has been set in PatternFlowTcpEcnEchoCounter HasStep() bool - // Count returns uint32, set in PatternFlowEthernetSrcCounter. + // Count returns uint32, set in PatternFlowTcpEcnEchoCounter. Count() uint32 - // SetCount assigns uint32 provided by user to PatternFlowEthernetSrcCounter - SetCount(value uint32) PatternFlowEthernetSrcCounter - // HasCount checks if Count has been set in PatternFlowEthernetSrcCounter + // SetCount assigns uint32 provided by user to PatternFlowTcpEcnEchoCounter + SetCount(value uint32) PatternFlowTcpEcnEchoCounter + // HasCount checks if Count has been set in PatternFlowTcpEcnEchoCounter HasCount() bool } // description is TBD -// Start returns a string -func (obj *patternFlowEthernetSrcCounter) Start() string { +// Start returns a uint32 +func (obj *patternFlowTcpEcnEchoCounter) Start() uint32 { return *obj.obj.Start } // description is TBD -// Start returns a string -func (obj *patternFlowEthernetSrcCounter) HasStart() bool { +// Start returns a uint32 +func (obj *patternFlowTcpEcnEchoCounter) HasStart() bool { return obj.obj.Start != nil } // description is TBD -// SetStart sets the string value in the PatternFlowEthernetSrcCounter object -func (obj *patternFlowEthernetSrcCounter) SetStart(value string) PatternFlowEthernetSrcCounter { +// SetStart sets the uint32 value in the PatternFlowTcpEcnEchoCounter object +func (obj *patternFlowTcpEcnEchoCounter) SetStart(value uint32) PatternFlowTcpEcnEchoCounter { obj.obj.Start = &value return obj } // description is TBD -// Step returns a string -func (obj *patternFlowEthernetSrcCounter) Step() string { +// Step returns a uint32 +func (obj *patternFlowTcpEcnEchoCounter) Step() uint32 { return *obj.obj.Step } // description is TBD -// Step returns a string -func (obj *patternFlowEthernetSrcCounter) HasStep() bool { +// Step returns a uint32 +func (obj *patternFlowTcpEcnEchoCounter) HasStep() bool { return obj.obj.Step != nil } // description is TBD -// SetStep sets the string value in the PatternFlowEthernetSrcCounter object -func (obj *patternFlowEthernetSrcCounter) SetStep(value string) PatternFlowEthernetSrcCounter { +// SetStep sets the uint32 value in the PatternFlowTcpEcnEchoCounter object +func (obj *patternFlowTcpEcnEchoCounter) SetStep(value uint32) PatternFlowTcpEcnEchoCounter { obj.obj.Step = &value return obj @@ -185500,7 +228645,7 @@ func (obj *patternFlowEthernetSrcCounter) SetStep(value string) PatternFlowEther // description is TBD // Count returns a uint32 -func (obj *patternFlowEthernetSrcCounter) Count() uint32 { +func (obj *patternFlowTcpEcnEchoCounter) Count() uint32 { return *obj.obj.Count @@ -185508,49 +228653,61 @@ func (obj *patternFlowEthernetSrcCounter) Count() uint32 { // description is TBD // Count returns a uint32 -func (obj *patternFlowEthernetSrcCounter) HasCount() bool { +func (obj *patternFlowTcpEcnEchoCounter) HasCount() bool { return obj.obj.Count != nil } // description is TBD -// SetCount sets the uint32 value in the PatternFlowEthernetSrcCounter object -func (obj *patternFlowEthernetSrcCounter) SetCount(value uint32) PatternFlowEthernetSrcCounter { +// SetCount sets the uint32 value in the PatternFlowTcpEcnEchoCounter object +func (obj *patternFlowTcpEcnEchoCounter) SetCount(value uint32) PatternFlowTcpEcnEchoCounter { obj.obj.Count = &value return obj } -func (obj *patternFlowEthernetSrcCounter) validateObj(vObj *validation, set_default bool) { +func (obj *patternFlowTcpEcnEchoCounter) validateObj(vObj *validation, set_default bool) { if set_default { obj.setDefault() } if obj.obj.Start != nil { - err := obj.validateMac(obj.Start()) - if err != nil { - vObj.validationErrors = append(vObj.validationErrors, fmt.Sprintf("%s %s", err.Error(), "on PatternFlowEthernetSrcCounter.Start")) + if *obj.obj.Start > 1 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("0 <= PatternFlowTcpEcnEchoCounter.Start <= 1 but Got %d", *obj.obj.Start)) } } if obj.obj.Step != nil { - err := obj.validateMac(obj.Step()) - if err != nil { - vObj.validationErrors = append(vObj.validationErrors, fmt.Sprintf("%s %s", err.Error(), "on PatternFlowEthernetSrcCounter.Step")) + if *obj.obj.Step > 1 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("0 <= PatternFlowTcpEcnEchoCounter.Step <= 1 but Got %d", *obj.obj.Step)) + } + + } + + if obj.obj.Count != nil { + + if *obj.obj.Count > 1 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("0 <= PatternFlowTcpEcnEchoCounter.Count <= 1 but Got %d", *obj.obj.Count)) } } } -func (obj *patternFlowEthernetSrcCounter) setDefault() { +func (obj *patternFlowTcpEcnEchoCounter) setDefault() { if obj.obj.Start == nil { - obj.SetStart("00:00:00:00:00:00") + obj.SetStart(0) } if obj.obj.Step == nil { - obj.SetStep("00:00:00:00:00:01") + obj.SetStep(1) } if obj.obj.Count == nil { obj.SetCount(1) @@ -185558,29 +228715,29 @@ func (obj *patternFlowEthernetSrcCounter) setDefault() { } -// ***** PatternFlowEthernetSrcMetricTag ***** -type patternFlowEthernetSrcMetricTag struct { +// ***** PatternFlowTcpEcnEchoMetricTag ***** +type patternFlowTcpEcnEchoMetricTag struct { validation - obj *otg.PatternFlowEthernetSrcMetricTag + obj *otg.PatternFlowTcpEcnEchoMetricTag } -func NewPatternFlowEthernetSrcMetricTag() PatternFlowEthernetSrcMetricTag { - obj := patternFlowEthernetSrcMetricTag{obj: &otg.PatternFlowEthernetSrcMetricTag{}} +func NewPatternFlowTcpEcnEchoMetricTag() PatternFlowTcpEcnEchoMetricTag { + obj := patternFlowTcpEcnEchoMetricTag{obj: &otg.PatternFlowTcpEcnEchoMetricTag{}} obj.setDefault() return &obj } -func (obj *patternFlowEthernetSrcMetricTag) Msg() *otg.PatternFlowEthernetSrcMetricTag { +func (obj *patternFlowTcpEcnEchoMetricTag) Msg() *otg.PatternFlowTcpEcnEchoMetricTag { return obj.obj } -func (obj *patternFlowEthernetSrcMetricTag) SetMsg(msg *otg.PatternFlowEthernetSrcMetricTag) PatternFlowEthernetSrcMetricTag { +func (obj *patternFlowTcpEcnEchoMetricTag) SetMsg(msg *otg.PatternFlowTcpEcnEchoMetricTag) PatternFlowTcpEcnEchoMetricTag { proto.Merge(obj.obj, msg) return obj } -func (obj *patternFlowEthernetSrcMetricTag) ToProto() (*otg.PatternFlowEthernetSrcMetricTag, error) { +func (obj *patternFlowTcpEcnEchoMetricTag) ToProto() (*otg.PatternFlowTcpEcnEchoMetricTag, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -185588,7 +228745,7 @@ func (obj *patternFlowEthernetSrcMetricTag) ToProto() (*otg.PatternFlowEthernetS return obj.Msg(), nil } -func (obj *patternFlowEthernetSrcMetricTag) FromProto(msg *otg.PatternFlowEthernetSrcMetricTag) (PatternFlowEthernetSrcMetricTag, error) { +func (obj *patternFlowTcpEcnEchoMetricTag) FromProto(msg *otg.PatternFlowTcpEcnEchoMetricTag) (PatternFlowTcpEcnEchoMetricTag, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -185597,7 +228754,7 @@ func (obj *patternFlowEthernetSrcMetricTag) FromProto(msg *otg.PatternFlowEthern return newObj, nil } -func (obj *patternFlowEthernetSrcMetricTag) ToPbText() (string, error) { +func (obj *patternFlowTcpEcnEchoMetricTag) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -185609,7 +228766,7 @@ func (obj *patternFlowEthernetSrcMetricTag) ToPbText() (string, error) { return string(protoMarshal), nil } -func (obj *patternFlowEthernetSrcMetricTag) FromPbText(value string) error { +func (obj *patternFlowTcpEcnEchoMetricTag) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj @@ -185622,7 +228779,7 @@ func (obj *patternFlowEthernetSrcMetricTag) FromPbText(value string) error { return retObj } -func (obj *patternFlowEthernetSrcMetricTag) ToYaml() (string, error) { +func (obj *patternFlowTcpEcnEchoMetricTag) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -185643,7 +228800,7 @@ func (obj *patternFlowEthernetSrcMetricTag) ToYaml() (string, error) { return string(data), nil } -func (obj *patternFlowEthernetSrcMetricTag) FromYaml(value string) error { +func (obj *patternFlowTcpEcnEchoMetricTag) FromYaml(value string) error { if value == "" { value = "{}" } @@ -185668,7 +228825,7 @@ func (obj *patternFlowEthernetSrcMetricTag) FromYaml(value string) error { return nil } -func (obj *patternFlowEthernetSrcMetricTag) ToJson() (string, error) { +func (obj *patternFlowTcpEcnEchoMetricTag) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -185686,7 +228843,7 @@ func (obj *patternFlowEthernetSrcMetricTag) ToJson() (string, error) { return string(data), nil } -func (obj *patternFlowEthernetSrcMetricTag) FromJson(value string) error { +func (obj *patternFlowTcpEcnEchoMetricTag) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -185707,19 +228864,19 @@ func (obj *patternFlowEthernetSrcMetricTag) FromJson(value string) error { return nil } -func (obj *patternFlowEthernetSrcMetricTag) validateToAndFrom() error { +func (obj *patternFlowTcpEcnEchoMetricTag) validateToAndFrom() error { // emptyVars() obj.validateObj(&obj.validation, true) return obj.validationResult() } -func (obj *patternFlowEthernetSrcMetricTag) Validate() error { +func (obj *patternFlowTcpEcnEchoMetricTag) Validate() error { // emptyVars() obj.validateObj(&obj.validation, false) return obj.validationResult() } -func (obj *patternFlowEthernetSrcMetricTag) String() string { +func (obj *patternFlowTcpEcnEchoMetricTag) String() string { str, err := obj.ToYaml() if err != nil { return err.Error() @@ -185727,12 +228884,12 @@ func (obj *patternFlowEthernetSrcMetricTag) String() string { return str } -func (obj *patternFlowEthernetSrcMetricTag) Clone() (PatternFlowEthernetSrcMetricTag, error) { +func (obj *patternFlowTcpEcnEchoMetricTag) Clone() (PatternFlowTcpEcnEchoMetricTag, error) { vErr := obj.Validate() if vErr != nil { return nil, vErr } - newObj := NewPatternFlowEthernetSrcMetricTag() + newObj := NewPatternFlowTcpEcnEchoMetricTag() data, err := proto.Marshal(obj.Msg()) if err != nil { return nil, err @@ -185744,69 +228901,69 @@ func (obj *patternFlowEthernetSrcMetricTag) Clone() (PatternFlowEthernetSrcMetri return newObj, nil } -// PatternFlowEthernetSrcMetricTag is metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. -type PatternFlowEthernetSrcMetricTag interface { +// PatternFlowTcpEcnEchoMetricTag is metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. +type PatternFlowTcpEcnEchoMetricTag interface { Validation - // Msg marshals PatternFlowEthernetSrcMetricTag to protobuf object *otg.PatternFlowEthernetSrcMetricTag + // Msg marshals PatternFlowTcpEcnEchoMetricTag to protobuf object *otg.PatternFlowTcpEcnEchoMetricTag // and doesn't set defaults - Msg() *otg.PatternFlowEthernetSrcMetricTag - // SetMsg unmarshals PatternFlowEthernetSrcMetricTag from protobuf object *otg.PatternFlowEthernetSrcMetricTag + Msg() *otg.PatternFlowTcpEcnEchoMetricTag + // SetMsg unmarshals PatternFlowTcpEcnEchoMetricTag from protobuf object *otg.PatternFlowTcpEcnEchoMetricTag // and doesn't set defaults - SetMsg(*otg.PatternFlowEthernetSrcMetricTag) PatternFlowEthernetSrcMetricTag - // ToProto marshals PatternFlowEthernetSrcMetricTag to protobuf object *otg.PatternFlowEthernetSrcMetricTag - ToProto() (*otg.PatternFlowEthernetSrcMetricTag, error) - // ToPbText marshals PatternFlowEthernetSrcMetricTag to protobuf text + SetMsg(*otg.PatternFlowTcpEcnEchoMetricTag) PatternFlowTcpEcnEchoMetricTag + // ToProto marshals PatternFlowTcpEcnEchoMetricTag to protobuf object *otg.PatternFlowTcpEcnEchoMetricTag + ToProto() (*otg.PatternFlowTcpEcnEchoMetricTag, error) + // ToPbText marshals PatternFlowTcpEcnEchoMetricTag to protobuf text ToPbText() (string, error) - // ToYaml marshals PatternFlowEthernetSrcMetricTag to YAML text + // ToYaml marshals PatternFlowTcpEcnEchoMetricTag to YAML text ToYaml() (string, error) - // ToJson marshals PatternFlowEthernetSrcMetricTag to JSON text + // ToJson marshals PatternFlowTcpEcnEchoMetricTag to JSON text ToJson() (string, error) - // FromProto unmarshals PatternFlowEthernetSrcMetricTag from protobuf object *otg.PatternFlowEthernetSrcMetricTag - FromProto(msg *otg.PatternFlowEthernetSrcMetricTag) (PatternFlowEthernetSrcMetricTag, error) - // FromPbText unmarshals PatternFlowEthernetSrcMetricTag from protobuf text + // FromProto unmarshals PatternFlowTcpEcnEchoMetricTag from protobuf object *otg.PatternFlowTcpEcnEchoMetricTag + FromProto(msg *otg.PatternFlowTcpEcnEchoMetricTag) (PatternFlowTcpEcnEchoMetricTag, error) + // FromPbText unmarshals PatternFlowTcpEcnEchoMetricTag from protobuf text FromPbText(value string) error - // FromYaml unmarshals PatternFlowEthernetSrcMetricTag from YAML text + // FromYaml unmarshals PatternFlowTcpEcnEchoMetricTag from YAML text FromYaml(value string) error - // FromJson unmarshals PatternFlowEthernetSrcMetricTag from JSON text + // FromJson unmarshals PatternFlowTcpEcnEchoMetricTag from JSON text FromJson(value string) error - // Validate validates PatternFlowEthernetSrcMetricTag + // Validate validates PatternFlowTcpEcnEchoMetricTag Validate() error // A stringer function String() string // Clones the object - Clone() (PatternFlowEthernetSrcMetricTag, error) + Clone() (PatternFlowTcpEcnEchoMetricTag, error) validateToAndFrom() error validateObj(vObj *validation, set_default bool) setDefault() - // Name returns string, set in PatternFlowEthernetSrcMetricTag. + // Name returns string, set in PatternFlowTcpEcnEchoMetricTag. Name() string - // SetName assigns string provided by user to PatternFlowEthernetSrcMetricTag - SetName(value string) PatternFlowEthernetSrcMetricTag - // Offset returns uint32, set in PatternFlowEthernetSrcMetricTag. + // SetName assigns string provided by user to PatternFlowTcpEcnEchoMetricTag + SetName(value string) PatternFlowTcpEcnEchoMetricTag + // Offset returns uint32, set in PatternFlowTcpEcnEchoMetricTag. Offset() uint32 - // SetOffset assigns uint32 provided by user to PatternFlowEthernetSrcMetricTag - SetOffset(value uint32) PatternFlowEthernetSrcMetricTag - // HasOffset checks if Offset has been set in PatternFlowEthernetSrcMetricTag + // SetOffset assigns uint32 provided by user to PatternFlowTcpEcnEchoMetricTag + SetOffset(value uint32) PatternFlowTcpEcnEchoMetricTag + // HasOffset checks if Offset has been set in PatternFlowTcpEcnEchoMetricTag HasOffset() bool - // Length returns uint32, set in PatternFlowEthernetSrcMetricTag. + // Length returns uint32, set in PatternFlowTcpEcnEchoMetricTag. Length() uint32 - // SetLength assigns uint32 provided by user to PatternFlowEthernetSrcMetricTag - SetLength(value uint32) PatternFlowEthernetSrcMetricTag - // HasLength checks if Length has been set in PatternFlowEthernetSrcMetricTag + // SetLength assigns uint32 provided by user to PatternFlowTcpEcnEchoMetricTag + SetLength(value uint32) PatternFlowTcpEcnEchoMetricTag + // HasLength checks if Length has been set in PatternFlowTcpEcnEchoMetricTag HasLength() bool } // Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field // Name returns a string -func (obj *patternFlowEthernetSrcMetricTag) Name() string { +func (obj *patternFlowTcpEcnEchoMetricTag) Name() string { return *obj.obj.Name } // Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field -// SetName sets the string value in the PatternFlowEthernetSrcMetricTag object -func (obj *patternFlowEthernetSrcMetricTag) SetName(value string) PatternFlowEthernetSrcMetricTag { +// SetName sets the string value in the PatternFlowTcpEcnEchoMetricTag object +func (obj *patternFlowTcpEcnEchoMetricTag) SetName(value string) PatternFlowTcpEcnEchoMetricTag { obj.obj.Name = &value return obj @@ -185814,7 +228971,7 @@ func (obj *patternFlowEthernetSrcMetricTag) SetName(value string) PatternFlowEth // Offset in bits relative to start of corresponding header field // Offset returns a uint32 -func (obj *patternFlowEthernetSrcMetricTag) Offset() uint32 { +func (obj *patternFlowTcpEcnEchoMetricTag) Offset() uint32 { return *obj.obj.Offset @@ -185822,13 +228979,13 @@ func (obj *patternFlowEthernetSrcMetricTag) Offset() uint32 { // Offset in bits relative to start of corresponding header field // Offset returns a uint32 -func (obj *patternFlowEthernetSrcMetricTag) HasOffset() bool { +func (obj *patternFlowTcpEcnEchoMetricTag) HasOffset() bool { return obj.obj.Offset != nil } // Offset in bits relative to start of corresponding header field -// SetOffset sets the uint32 value in the PatternFlowEthernetSrcMetricTag object -func (obj *patternFlowEthernetSrcMetricTag) SetOffset(value uint32) PatternFlowEthernetSrcMetricTag { +// SetOffset sets the uint32 value in the PatternFlowTcpEcnEchoMetricTag object +func (obj *patternFlowTcpEcnEchoMetricTag) SetOffset(value uint32) PatternFlowTcpEcnEchoMetricTag { obj.obj.Offset = &value return obj @@ -185836,7 +228993,7 @@ func (obj *patternFlowEthernetSrcMetricTag) SetOffset(value uint32) PatternFlowE // Number of bits to track for metrics starting from configured offset of corresponding header field // Length returns a uint32 -func (obj *patternFlowEthernetSrcMetricTag) Length() uint32 { +func (obj *patternFlowTcpEcnEchoMetricTag) Length() uint32 { return *obj.obj.Length @@ -185844,83 +229001,83 @@ func (obj *patternFlowEthernetSrcMetricTag) Length() uint32 { // Number of bits to track for metrics starting from configured offset of corresponding header field // Length returns a uint32 -func (obj *patternFlowEthernetSrcMetricTag) HasLength() bool { +func (obj *patternFlowTcpEcnEchoMetricTag) HasLength() bool { return obj.obj.Length != nil } // Number of bits to track for metrics starting from configured offset of corresponding header field -// SetLength sets the uint32 value in the PatternFlowEthernetSrcMetricTag object -func (obj *patternFlowEthernetSrcMetricTag) SetLength(value uint32) PatternFlowEthernetSrcMetricTag { +// SetLength sets the uint32 value in the PatternFlowTcpEcnEchoMetricTag object +func (obj *patternFlowTcpEcnEchoMetricTag) SetLength(value uint32) PatternFlowTcpEcnEchoMetricTag { obj.obj.Length = &value return obj } -func (obj *patternFlowEthernetSrcMetricTag) validateObj(vObj *validation, set_default bool) { +func (obj *patternFlowTcpEcnEchoMetricTag) validateObj(vObj *validation, set_default bool) { if set_default { obj.setDefault() } // Name is required if obj.obj.Name == nil { - vObj.validationErrors = append(vObj.validationErrors, "Name is required field on interface PatternFlowEthernetSrcMetricTag") + vObj.validationErrors = append(vObj.validationErrors, "Name is required field on interface PatternFlowTcpEcnEchoMetricTag") } if obj.obj.Offset != nil { - if *obj.obj.Offset > 47 { + if *obj.obj.Offset > 0 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowEthernetSrcMetricTag.Offset <= 47 but Got %d", *obj.obj.Offset)) + fmt.Sprintf("0 <= PatternFlowTcpEcnEchoMetricTag.Offset <= 0 but Got %d", *obj.obj.Offset)) } } if obj.obj.Length != nil { - if *obj.obj.Length < 1 || *obj.obj.Length > 48 { + if *obj.obj.Length < 1 || *obj.obj.Length > 1 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("1 <= PatternFlowEthernetSrcMetricTag.Length <= 48 but Got %d", *obj.obj.Length)) + fmt.Sprintf("1 <= PatternFlowTcpEcnEchoMetricTag.Length <= 1 but Got %d", *obj.obj.Length)) } } } -func (obj *patternFlowEthernetSrcMetricTag) setDefault() { +func (obj *patternFlowTcpEcnEchoMetricTag) setDefault() { if obj.obj.Offset == nil { obj.SetOffset(0) } if obj.obj.Length == nil { - obj.SetLength(48) + obj.SetLength(1) } } -// ***** PatternFlowEthernetEtherTypeCounter ***** -type patternFlowEthernetEtherTypeCounter struct { +// ***** PatternFlowTcpCtlUrgCounter ***** +type patternFlowTcpCtlUrgCounter struct { validation - obj *otg.PatternFlowEthernetEtherTypeCounter + obj *otg.PatternFlowTcpCtlUrgCounter } -func NewPatternFlowEthernetEtherTypeCounter() PatternFlowEthernetEtherTypeCounter { - obj := patternFlowEthernetEtherTypeCounter{obj: &otg.PatternFlowEthernetEtherTypeCounter{}} +func NewPatternFlowTcpCtlUrgCounter() PatternFlowTcpCtlUrgCounter { + obj := patternFlowTcpCtlUrgCounter{obj: &otg.PatternFlowTcpCtlUrgCounter{}} obj.setDefault() return &obj } -func (obj *patternFlowEthernetEtherTypeCounter) Msg() *otg.PatternFlowEthernetEtherTypeCounter { +func (obj *patternFlowTcpCtlUrgCounter) Msg() *otg.PatternFlowTcpCtlUrgCounter { return obj.obj } -func (obj *patternFlowEthernetEtherTypeCounter) SetMsg(msg *otg.PatternFlowEthernetEtherTypeCounter) PatternFlowEthernetEtherTypeCounter { +func (obj *patternFlowTcpCtlUrgCounter) SetMsg(msg *otg.PatternFlowTcpCtlUrgCounter) PatternFlowTcpCtlUrgCounter { proto.Merge(obj.obj, msg) return obj } -func (obj *patternFlowEthernetEtherTypeCounter) ToProto() (*otg.PatternFlowEthernetEtherTypeCounter, error) { +func (obj *patternFlowTcpCtlUrgCounter) ToProto() (*otg.PatternFlowTcpCtlUrgCounter, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -185928,7 +229085,7 @@ func (obj *patternFlowEthernetEtherTypeCounter) ToProto() (*otg.PatternFlowEther return obj.Msg(), nil } -func (obj *patternFlowEthernetEtherTypeCounter) FromProto(msg *otg.PatternFlowEthernetEtherTypeCounter) (PatternFlowEthernetEtherTypeCounter, error) { +func (obj *patternFlowTcpCtlUrgCounter) FromProto(msg *otg.PatternFlowTcpCtlUrgCounter) (PatternFlowTcpCtlUrgCounter, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -185937,7 +229094,7 @@ func (obj *patternFlowEthernetEtherTypeCounter) FromProto(msg *otg.PatternFlowEt return newObj, nil } -func (obj *patternFlowEthernetEtherTypeCounter) ToPbText() (string, error) { +func (obj *patternFlowTcpCtlUrgCounter) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -185949,7 +229106,7 @@ func (obj *patternFlowEthernetEtherTypeCounter) ToPbText() (string, error) { return string(protoMarshal), nil } -func (obj *patternFlowEthernetEtherTypeCounter) FromPbText(value string) error { +func (obj *patternFlowTcpCtlUrgCounter) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj @@ -185962,7 +229119,7 @@ func (obj *patternFlowEthernetEtherTypeCounter) FromPbText(value string) error { return retObj } -func (obj *patternFlowEthernetEtherTypeCounter) ToYaml() (string, error) { +func (obj *patternFlowTcpCtlUrgCounter) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -185983,7 +229140,7 @@ func (obj *patternFlowEthernetEtherTypeCounter) ToYaml() (string, error) { return string(data), nil } -func (obj *patternFlowEthernetEtherTypeCounter) FromYaml(value string) error { +func (obj *patternFlowTcpCtlUrgCounter) FromYaml(value string) error { if value == "" { value = "{}" } @@ -186008,7 +229165,7 @@ func (obj *patternFlowEthernetEtherTypeCounter) FromYaml(value string) error { return nil } -func (obj *patternFlowEthernetEtherTypeCounter) ToJson() (string, error) { +func (obj *patternFlowTcpCtlUrgCounter) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -186026,7 +229183,7 @@ func (obj *patternFlowEthernetEtherTypeCounter) ToJson() (string, error) { return string(data), nil } -func (obj *patternFlowEthernetEtherTypeCounter) FromJson(value string) error { +func (obj *patternFlowTcpCtlUrgCounter) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -186047,19 +229204,19 @@ func (obj *patternFlowEthernetEtherTypeCounter) FromJson(value string) error { return nil } -func (obj *patternFlowEthernetEtherTypeCounter) validateToAndFrom() error { +func (obj *patternFlowTcpCtlUrgCounter) validateToAndFrom() error { // emptyVars() obj.validateObj(&obj.validation, true) return obj.validationResult() } -func (obj *patternFlowEthernetEtherTypeCounter) Validate() error { +func (obj *patternFlowTcpCtlUrgCounter) Validate() error { // emptyVars() obj.validateObj(&obj.validation, false) return obj.validationResult() } -func (obj *patternFlowEthernetEtherTypeCounter) String() string { +func (obj *patternFlowTcpCtlUrgCounter) String() string { str, err := obj.ToYaml() if err != nil { return err.Error() @@ -186067,12 +229224,12 @@ func (obj *patternFlowEthernetEtherTypeCounter) String() string { return str } -func (obj *patternFlowEthernetEtherTypeCounter) Clone() (PatternFlowEthernetEtherTypeCounter, error) { +func (obj *patternFlowTcpCtlUrgCounter) Clone() (PatternFlowTcpCtlUrgCounter, error) { vErr := obj.Validate() if vErr != nil { return nil, vErr } - newObj := NewPatternFlowEthernetEtherTypeCounter() + newObj := NewPatternFlowTcpCtlUrgCounter() data, err := proto.Marshal(obj.Msg()) if err != nil { return nil, err @@ -186084,63 +229241,63 @@ func (obj *patternFlowEthernetEtherTypeCounter) Clone() (PatternFlowEthernetEthe return newObj, nil } -// PatternFlowEthernetEtherTypeCounter is integer counter pattern -type PatternFlowEthernetEtherTypeCounter interface { +// PatternFlowTcpCtlUrgCounter is integer counter pattern +type PatternFlowTcpCtlUrgCounter interface { Validation - // Msg marshals PatternFlowEthernetEtherTypeCounter to protobuf object *otg.PatternFlowEthernetEtherTypeCounter + // Msg marshals PatternFlowTcpCtlUrgCounter to protobuf object *otg.PatternFlowTcpCtlUrgCounter // and doesn't set defaults - Msg() *otg.PatternFlowEthernetEtherTypeCounter - // SetMsg unmarshals PatternFlowEthernetEtherTypeCounter from protobuf object *otg.PatternFlowEthernetEtherTypeCounter + Msg() *otg.PatternFlowTcpCtlUrgCounter + // SetMsg unmarshals PatternFlowTcpCtlUrgCounter from protobuf object *otg.PatternFlowTcpCtlUrgCounter // and doesn't set defaults - SetMsg(*otg.PatternFlowEthernetEtherTypeCounter) PatternFlowEthernetEtherTypeCounter - // ToProto marshals PatternFlowEthernetEtherTypeCounter to protobuf object *otg.PatternFlowEthernetEtherTypeCounter - ToProto() (*otg.PatternFlowEthernetEtherTypeCounter, error) - // ToPbText marshals PatternFlowEthernetEtherTypeCounter to protobuf text + SetMsg(*otg.PatternFlowTcpCtlUrgCounter) PatternFlowTcpCtlUrgCounter + // ToProto marshals PatternFlowTcpCtlUrgCounter to protobuf object *otg.PatternFlowTcpCtlUrgCounter + ToProto() (*otg.PatternFlowTcpCtlUrgCounter, error) + // ToPbText marshals PatternFlowTcpCtlUrgCounter to protobuf text ToPbText() (string, error) - // ToYaml marshals PatternFlowEthernetEtherTypeCounter to YAML text + // ToYaml marshals PatternFlowTcpCtlUrgCounter to YAML text ToYaml() (string, error) - // ToJson marshals PatternFlowEthernetEtherTypeCounter to JSON text + // ToJson marshals PatternFlowTcpCtlUrgCounter to JSON text ToJson() (string, error) - // FromProto unmarshals PatternFlowEthernetEtherTypeCounter from protobuf object *otg.PatternFlowEthernetEtherTypeCounter - FromProto(msg *otg.PatternFlowEthernetEtherTypeCounter) (PatternFlowEthernetEtherTypeCounter, error) - // FromPbText unmarshals PatternFlowEthernetEtherTypeCounter from protobuf text + // FromProto unmarshals PatternFlowTcpCtlUrgCounter from protobuf object *otg.PatternFlowTcpCtlUrgCounter + FromProto(msg *otg.PatternFlowTcpCtlUrgCounter) (PatternFlowTcpCtlUrgCounter, error) + // FromPbText unmarshals PatternFlowTcpCtlUrgCounter from protobuf text FromPbText(value string) error - // FromYaml unmarshals PatternFlowEthernetEtherTypeCounter from YAML text + // FromYaml unmarshals PatternFlowTcpCtlUrgCounter from YAML text FromYaml(value string) error - // FromJson unmarshals PatternFlowEthernetEtherTypeCounter from JSON text + // FromJson unmarshals PatternFlowTcpCtlUrgCounter from JSON text FromJson(value string) error - // Validate validates PatternFlowEthernetEtherTypeCounter + // Validate validates PatternFlowTcpCtlUrgCounter Validate() error // A stringer function String() string // Clones the object - Clone() (PatternFlowEthernetEtherTypeCounter, error) + Clone() (PatternFlowTcpCtlUrgCounter, error) validateToAndFrom() error validateObj(vObj *validation, set_default bool) setDefault() - // Start returns uint32, set in PatternFlowEthernetEtherTypeCounter. + // Start returns uint32, set in PatternFlowTcpCtlUrgCounter. Start() uint32 - // SetStart assigns uint32 provided by user to PatternFlowEthernetEtherTypeCounter - SetStart(value uint32) PatternFlowEthernetEtherTypeCounter - // HasStart checks if Start has been set in PatternFlowEthernetEtherTypeCounter + // SetStart assigns uint32 provided by user to PatternFlowTcpCtlUrgCounter + SetStart(value uint32) PatternFlowTcpCtlUrgCounter + // HasStart checks if Start has been set in PatternFlowTcpCtlUrgCounter HasStart() bool - // Step returns uint32, set in PatternFlowEthernetEtherTypeCounter. + // Step returns uint32, set in PatternFlowTcpCtlUrgCounter. Step() uint32 - // SetStep assigns uint32 provided by user to PatternFlowEthernetEtherTypeCounter - SetStep(value uint32) PatternFlowEthernetEtherTypeCounter - // HasStep checks if Step has been set in PatternFlowEthernetEtherTypeCounter + // SetStep assigns uint32 provided by user to PatternFlowTcpCtlUrgCounter + SetStep(value uint32) PatternFlowTcpCtlUrgCounter + // HasStep checks if Step has been set in PatternFlowTcpCtlUrgCounter HasStep() bool - // Count returns uint32, set in PatternFlowEthernetEtherTypeCounter. + // Count returns uint32, set in PatternFlowTcpCtlUrgCounter. Count() uint32 - // SetCount assigns uint32 provided by user to PatternFlowEthernetEtherTypeCounter - SetCount(value uint32) PatternFlowEthernetEtherTypeCounter - // HasCount checks if Count has been set in PatternFlowEthernetEtherTypeCounter + // SetCount assigns uint32 provided by user to PatternFlowTcpCtlUrgCounter + SetCount(value uint32) PatternFlowTcpCtlUrgCounter + // HasCount checks if Count has been set in PatternFlowTcpCtlUrgCounter HasCount() bool } // description is TBD // Start returns a uint32 -func (obj *patternFlowEthernetEtherTypeCounter) Start() uint32 { +func (obj *patternFlowTcpCtlUrgCounter) Start() uint32 { return *obj.obj.Start @@ -186148,13 +229305,13 @@ func (obj *patternFlowEthernetEtherTypeCounter) Start() uint32 { // description is TBD // Start returns a uint32 -func (obj *patternFlowEthernetEtherTypeCounter) HasStart() bool { +func (obj *patternFlowTcpCtlUrgCounter) HasStart() bool { return obj.obj.Start != nil } // description is TBD -// SetStart sets the uint32 value in the PatternFlowEthernetEtherTypeCounter object -func (obj *patternFlowEthernetEtherTypeCounter) SetStart(value uint32) PatternFlowEthernetEtherTypeCounter { +// SetStart sets the uint32 value in the PatternFlowTcpCtlUrgCounter object +func (obj *patternFlowTcpCtlUrgCounter) SetStart(value uint32) PatternFlowTcpCtlUrgCounter { obj.obj.Start = &value return obj @@ -186162,7 +229319,7 @@ func (obj *patternFlowEthernetEtherTypeCounter) SetStart(value uint32) PatternFl // description is TBD // Step returns a uint32 -func (obj *patternFlowEthernetEtherTypeCounter) Step() uint32 { +func (obj *patternFlowTcpCtlUrgCounter) Step() uint32 { return *obj.obj.Step @@ -186170,13 +229327,13 @@ func (obj *patternFlowEthernetEtherTypeCounter) Step() uint32 { // description is TBD // Step returns a uint32 -func (obj *patternFlowEthernetEtherTypeCounter) HasStep() bool { +func (obj *patternFlowTcpCtlUrgCounter) HasStep() bool { return obj.obj.Step != nil } // description is TBD -// SetStep sets the uint32 value in the PatternFlowEthernetEtherTypeCounter object -func (obj *patternFlowEthernetEtherTypeCounter) SetStep(value uint32) PatternFlowEthernetEtherTypeCounter { +// SetStep sets the uint32 value in the PatternFlowTcpCtlUrgCounter object +func (obj *patternFlowTcpCtlUrgCounter) SetStep(value uint32) PatternFlowTcpCtlUrgCounter { obj.obj.Step = &value return obj @@ -186184,7 +229341,7 @@ func (obj *patternFlowEthernetEtherTypeCounter) SetStep(value uint32) PatternFlo // description is TBD // Count returns a uint32 -func (obj *patternFlowEthernetEtherTypeCounter) Count() uint32 { +func (obj *patternFlowTcpCtlUrgCounter) Count() uint32 { return *obj.obj.Count @@ -186192,58 +229349,58 @@ func (obj *patternFlowEthernetEtherTypeCounter) Count() uint32 { // description is TBD // Count returns a uint32 -func (obj *patternFlowEthernetEtherTypeCounter) HasCount() bool { +func (obj *patternFlowTcpCtlUrgCounter) HasCount() bool { return obj.obj.Count != nil } // description is TBD -// SetCount sets the uint32 value in the PatternFlowEthernetEtherTypeCounter object -func (obj *patternFlowEthernetEtherTypeCounter) SetCount(value uint32) PatternFlowEthernetEtherTypeCounter { +// SetCount sets the uint32 value in the PatternFlowTcpCtlUrgCounter object +func (obj *patternFlowTcpCtlUrgCounter) SetCount(value uint32) PatternFlowTcpCtlUrgCounter { obj.obj.Count = &value return obj } -func (obj *patternFlowEthernetEtherTypeCounter) validateObj(vObj *validation, set_default bool) { +func (obj *patternFlowTcpCtlUrgCounter) validateObj(vObj *validation, set_default bool) { if set_default { obj.setDefault() } if obj.obj.Start != nil { - if *obj.obj.Start > 65535 { + if *obj.obj.Start > 1 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowEthernetEtherTypeCounter.Start <= 65535 but Got %d", *obj.obj.Start)) + fmt.Sprintf("0 <= PatternFlowTcpCtlUrgCounter.Start <= 1 but Got %d", *obj.obj.Start)) } } if obj.obj.Step != nil { - if *obj.obj.Step > 65535 { + if *obj.obj.Step > 1 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowEthernetEtherTypeCounter.Step <= 65535 but Got %d", *obj.obj.Step)) + fmt.Sprintf("0 <= PatternFlowTcpCtlUrgCounter.Step <= 1 but Got %d", *obj.obj.Step)) } } if obj.obj.Count != nil { - if *obj.obj.Count > 65535 { + if *obj.obj.Count > 1 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowEthernetEtherTypeCounter.Count <= 65535 but Got %d", *obj.obj.Count)) + fmt.Sprintf("0 <= PatternFlowTcpCtlUrgCounter.Count <= 1 but Got %d", *obj.obj.Count)) } } } -func (obj *patternFlowEthernetEtherTypeCounter) setDefault() { +func (obj *patternFlowTcpCtlUrgCounter) setDefault() { if obj.obj.Start == nil { - obj.SetStart(65535) + obj.SetStart(0) } if obj.obj.Step == nil { obj.SetStep(1) @@ -186254,29 +229411,29 @@ func (obj *patternFlowEthernetEtherTypeCounter) setDefault() { } -// ***** PatternFlowEthernetEtherTypeMetricTag ***** -type patternFlowEthernetEtherTypeMetricTag struct { +// ***** PatternFlowTcpCtlUrgMetricTag ***** +type patternFlowTcpCtlUrgMetricTag struct { validation - obj *otg.PatternFlowEthernetEtherTypeMetricTag + obj *otg.PatternFlowTcpCtlUrgMetricTag } -func NewPatternFlowEthernetEtherTypeMetricTag() PatternFlowEthernetEtherTypeMetricTag { - obj := patternFlowEthernetEtherTypeMetricTag{obj: &otg.PatternFlowEthernetEtherTypeMetricTag{}} +func NewPatternFlowTcpCtlUrgMetricTag() PatternFlowTcpCtlUrgMetricTag { + obj := patternFlowTcpCtlUrgMetricTag{obj: &otg.PatternFlowTcpCtlUrgMetricTag{}} obj.setDefault() return &obj } -func (obj *patternFlowEthernetEtherTypeMetricTag) Msg() *otg.PatternFlowEthernetEtherTypeMetricTag { +func (obj *patternFlowTcpCtlUrgMetricTag) Msg() *otg.PatternFlowTcpCtlUrgMetricTag { return obj.obj } -func (obj *patternFlowEthernetEtherTypeMetricTag) SetMsg(msg *otg.PatternFlowEthernetEtherTypeMetricTag) PatternFlowEthernetEtherTypeMetricTag { +func (obj *patternFlowTcpCtlUrgMetricTag) SetMsg(msg *otg.PatternFlowTcpCtlUrgMetricTag) PatternFlowTcpCtlUrgMetricTag { proto.Merge(obj.obj, msg) return obj } -func (obj *patternFlowEthernetEtherTypeMetricTag) ToProto() (*otg.PatternFlowEthernetEtherTypeMetricTag, error) { +func (obj *patternFlowTcpCtlUrgMetricTag) ToProto() (*otg.PatternFlowTcpCtlUrgMetricTag, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -186284,7 +229441,7 @@ func (obj *patternFlowEthernetEtherTypeMetricTag) ToProto() (*otg.PatternFlowEth return obj.Msg(), nil } -func (obj *patternFlowEthernetEtherTypeMetricTag) FromProto(msg *otg.PatternFlowEthernetEtherTypeMetricTag) (PatternFlowEthernetEtherTypeMetricTag, error) { +func (obj *patternFlowTcpCtlUrgMetricTag) FromProto(msg *otg.PatternFlowTcpCtlUrgMetricTag) (PatternFlowTcpCtlUrgMetricTag, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -186293,7 +229450,7 @@ func (obj *patternFlowEthernetEtherTypeMetricTag) FromProto(msg *otg.PatternFlow return newObj, nil } -func (obj *patternFlowEthernetEtherTypeMetricTag) ToPbText() (string, error) { +func (obj *patternFlowTcpCtlUrgMetricTag) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -186305,7 +229462,7 @@ func (obj *patternFlowEthernetEtherTypeMetricTag) ToPbText() (string, error) { return string(protoMarshal), nil } -func (obj *patternFlowEthernetEtherTypeMetricTag) FromPbText(value string) error { +func (obj *patternFlowTcpCtlUrgMetricTag) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj @@ -186318,7 +229475,7 @@ func (obj *patternFlowEthernetEtherTypeMetricTag) FromPbText(value string) error return retObj } -func (obj *patternFlowEthernetEtherTypeMetricTag) ToYaml() (string, error) { +func (obj *patternFlowTcpCtlUrgMetricTag) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -186339,7 +229496,7 @@ func (obj *patternFlowEthernetEtherTypeMetricTag) ToYaml() (string, error) { return string(data), nil } -func (obj *patternFlowEthernetEtherTypeMetricTag) FromYaml(value string) error { +func (obj *patternFlowTcpCtlUrgMetricTag) FromYaml(value string) error { if value == "" { value = "{}" } @@ -186364,7 +229521,7 @@ func (obj *patternFlowEthernetEtherTypeMetricTag) FromYaml(value string) error { return nil } -func (obj *patternFlowEthernetEtherTypeMetricTag) ToJson() (string, error) { +func (obj *patternFlowTcpCtlUrgMetricTag) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -186382,7 +229539,7 @@ func (obj *patternFlowEthernetEtherTypeMetricTag) ToJson() (string, error) { return string(data), nil } -func (obj *patternFlowEthernetEtherTypeMetricTag) FromJson(value string) error { +func (obj *patternFlowTcpCtlUrgMetricTag) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -186403,19 +229560,19 @@ func (obj *patternFlowEthernetEtherTypeMetricTag) FromJson(value string) error { return nil } -func (obj *patternFlowEthernetEtherTypeMetricTag) validateToAndFrom() error { +func (obj *patternFlowTcpCtlUrgMetricTag) validateToAndFrom() error { // emptyVars() obj.validateObj(&obj.validation, true) return obj.validationResult() } -func (obj *patternFlowEthernetEtherTypeMetricTag) Validate() error { +func (obj *patternFlowTcpCtlUrgMetricTag) Validate() error { // emptyVars() obj.validateObj(&obj.validation, false) return obj.validationResult() } -func (obj *patternFlowEthernetEtherTypeMetricTag) String() string { +func (obj *patternFlowTcpCtlUrgMetricTag) String() string { str, err := obj.ToYaml() if err != nil { return err.Error() @@ -186423,12 +229580,12 @@ func (obj *patternFlowEthernetEtherTypeMetricTag) String() string { return str } -func (obj *patternFlowEthernetEtherTypeMetricTag) Clone() (PatternFlowEthernetEtherTypeMetricTag, error) { +func (obj *patternFlowTcpCtlUrgMetricTag) Clone() (PatternFlowTcpCtlUrgMetricTag, error) { vErr := obj.Validate() if vErr != nil { return nil, vErr } - newObj := NewPatternFlowEthernetEtherTypeMetricTag() + newObj := NewPatternFlowTcpCtlUrgMetricTag() data, err := proto.Marshal(obj.Msg()) if err != nil { return nil, err @@ -186440,69 +229597,69 @@ func (obj *patternFlowEthernetEtherTypeMetricTag) Clone() (PatternFlowEthernetEt return newObj, nil } -// PatternFlowEthernetEtherTypeMetricTag is metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. -type PatternFlowEthernetEtherTypeMetricTag interface { +// PatternFlowTcpCtlUrgMetricTag is metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. +type PatternFlowTcpCtlUrgMetricTag interface { Validation - // Msg marshals PatternFlowEthernetEtherTypeMetricTag to protobuf object *otg.PatternFlowEthernetEtherTypeMetricTag + // Msg marshals PatternFlowTcpCtlUrgMetricTag to protobuf object *otg.PatternFlowTcpCtlUrgMetricTag // and doesn't set defaults - Msg() *otg.PatternFlowEthernetEtherTypeMetricTag - // SetMsg unmarshals PatternFlowEthernetEtherTypeMetricTag from protobuf object *otg.PatternFlowEthernetEtherTypeMetricTag + Msg() *otg.PatternFlowTcpCtlUrgMetricTag + // SetMsg unmarshals PatternFlowTcpCtlUrgMetricTag from protobuf object *otg.PatternFlowTcpCtlUrgMetricTag // and doesn't set defaults - SetMsg(*otg.PatternFlowEthernetEtherTypeMetricTag) PatternFlowEthernetEtherTypeMetricTag - // ToProto marshals PatternFlowEthernetEtherTypeMetricTag to protobuf object *otg.PatternFlowEthernetEtherTypeMetricTag - ToProto() (*otg.PatternFlowEthernetEtherTypeMetricTag, error) - // ToPbText marshals PatternFlowEthernetEtherTypeMetricTag to protobuf text + SetMsg(*otg.PatternFlowTcpCtlUrgMetricTag) PatternFlowTcpCtlUrgMetricTag + // ToProto marshals PatternFlowTcpCtlUrgMetricTag to protobuf object *otg.PatternFlowTcpCtlUrgMetricTag + ToProto() (*otg.PatternFlowTcpCtlUrgMetricTag, error) + // ToPbText marshals PatternFlowTcpCtlUrgMetricTag to protobuf text ToPbText() (string, error) - // ToYaml marshals PatternFlowEthernetEtherTypeMetricTag to YAML text + // ToYaml marshals PatternFlowTcpCtlUrgMetricTag to YAML text ToYaml() (string, error) - // ToJson marshals PatternFlowEthernetEtherTypeMetricTag to JSON text + // ToJson marshals PatternFlowTcpCtlUrgMetricTag to JSON text ToJson() (string, error) - // FromProto unmarshals PatternFlowEthernetEtherTypeMetricTag from protobuf object *otg.PatternFlowEthernetEtherTypeMetricTag - FromProto(msg *otg.PatternFlowEthernetEtherTypeMetricTag) (PatternFlowEthernetEtherTypeMetricTag, error) - // FromPbText unmarshals PatternFlowEthernetEtherTypeMetricTag from protobuf text + // FromProto unmarshals PatternFlowTcpCtlUrgMetricTag from protobuf object *otg.PatternFlowTcpCtlUrgMetricTag + FromProto(msg *otg.PatternFlowTcpCtlUrgMetricTag) (PatternFlowTcpCtlUrgMetricTag, error) + // FromPbText unmarshals PatternFlowTcpCtlUrgMetricTag from protobuf text FromPbText(value string) error - // FromYaml unmarshals PatternFlowEthernetEtherTypeMetricTag from YAML text + // FromYaml unmarshals PatternFlowTcpCtlUrgMetricTag from YAML text FromYaml(value string) error - // FromJson unmarshals PatternFlowEthernetEtherTypeMetricTag from JSON text + // FromJson unmarshals PatternFlowTcpCtlUrgMetricTag from JSON text FromJson(value string) error - // Validate validates PatternFlowEthernetEtherTypeMetricTag + // Validate validates PatternFlowTcpCtlUrgMetricTag Validate() error // A stringer function String() string // Clones the object - Clone() (PatternFlowEthernetEtherTypeMetricTag, error) + Clone() (PatternFlowTcpCtlUrgMetricTag, error) validateToAndFrom() error validateObj(vObj *validation, set_default bool) setDefault() - // Name returns string, set in PatternFlowEthernetEtherTypeMetricTag. + // Name returns string, set in PatternFlowTcpCtlUrgMetricTag. Name() string - // SetName assigns string provided by user to PatternFlowEthernetEtherTypeMetricTag - SetName(value string) PatternFlowEthernetEtherTypeMetricTag - // Offset returns uint32, set in PatternFlowEthernetEtherTypeMetricTag. + // SetName assigns string provided by user to PatternFlowTcpCtlUrgMetricTag + SetName(value string) PatternFlowTcpCtlUrgMetricTag + // Offset returns uint32, set in PatternFlowTcpCtlUrgMetricTag. Offset() uint32 - // SetOffset assigns uint32 provided by user to PatternFlowEthernetEtherTypeMetricTag - SetOffset(value uint32) PatternFlowEthernetEtherTypeMetricTag - // HasOffset checks if Offset has been set in PatternFlowEthernetEtherTypeMetricTag + // SetOffset assigns uint32 provided by user to PatternFlowTcpCtlUrgMetricTag + SetOffset(value uint32) PatternFlowTcpCtlUrgMetricTag + // HasOffset checks if Offset has been set in PatternFlowTcpCtlUrgMetricTag HasOffset() bool - // Length returns uint32, set in PatternFlowEthernetEtherTypeMetricTag. + // Length returns uint32, set in PatternFlowTcpCtlUrgMetricTag. Length() uint32 - // SetLength assigns uint32 provided by user to PatternFlowEthernetEtherTypeMetricTag - SetLength(value uint32) PatternFlowEthernetEtherTypeMetricTag - // HasLength checks if Length has been set in PatternFlowEthernetEtherTypeMetricTag + // SetLength assigns uint32 provided by user to PatternFlowTcpCtlUrgMetricTag + SetLength(value uint32) PatternFlowTcpCtlUrgMetricTag + // HasLength checks if Length has been set in PatternFlowTcpCtlUrgMetricTag HasLength() bool } // Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field // Name returns a string -func (obj *patternFlowEthernetEtherTypeMetricTag) Name() string { +func (obj *patternFlowTcpCtlUrgMetricTag) Name() string { return *obj.obj.Name } // Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field -// SetName sets the string value in the PatternFlowEthernetEtherTypeMetricTag object -func (obj *patternFlowEthernetEtherTypeMetricTag) SetName(value string) PatternFlowEthernetEtherTypeMetricTag { +// SetName sets the string value in the PatternFlowTcpCtlUrgMetricTag object +func (obj *patternFlowTcpCtlUrgMetricTag) SetName(value string) PatternFlowTcpCtlUrgMetricTag { obj.obj.Name = &value return obj @@ -186510,7 +229667,7 @@ func (obj *patternFlowEthernetEtherTypeMetricTag) SetName(value string) PatternF // Offset in bits relative to start of corresponding header field // Offset returns a uint32 -func (obj *patternFlowEthernetEtherTypeMetricTag) Offset() uint32 { +func (obj *patternFlowTcpCtlUrgMetricTag) Offset() uint32 { return *obj.obj.Offset @@ -186518,13 +229675,13 @@ func (obj *patternFlowEthernetEtherTypeMetricTag) Offset() uint32 { // Offset in bits relative to start of corresponding header field // Offset returns a uint32 -func (obj *patternFlowEthernetEtherTypeMetricTag) HasOffset() bool { +func (obj *patternFlowTcpCtlUrgMetricTag) HasOffset() bool { return obj.obj.Offset != nil } // Offset in bits relative to start of corresponding header field -// SetOffset sets the uint32 value in the PatternFlowEthernetEtherTypeMetricTag object -func (obj *patternFlowEthernetEtherTypeMetricTag) SetOffset(value uint32) PatternFlowEthernetEtherTypeMetricTag { +// SetOffset sets the uint32 value in the PatternFlowTcpCtlUrgMetricTag object +func (obj *patternFlowTcpCtlUrgMetricTag) SetOffset(value uint32) PatternFlowTcpCtlUrgMetricTag { obj.obj.Offset = &value return obj @@ -186532,7 +229689,7 @@ func (obj *patternFlowEthernetEtherTypeMetricTag) SetOffset(value uint32) Patter // Number of bits to track for metrics starting from configured offset of corresponding header field // Length returns a uint32 -func (obj *patternFlowEthernetEtherTypeMetricTag) Length() uint32 { +func (obj *patternFlowTcpCtlUrgMetricTag) Length() uint32 { return *obj.obj.Length @@ -186540,83 +229697,83 @@ func (obj *patternFlowEthernetEtherTypeMetricTag) Length() uint32 { // Number of bits to track for metrics starting from configured offset of corresponding header field // Length returns a uint32 -func (obj *patternFlowEthernetEtherTypeMetricTag) HasLength() bool { +func (obj *patternFlowTcpCtlUrgMetricTag) HasLength() bool { return obj.obj.Length != nil } // Number of bits to track for metrics starting from configured offset of corresponding header field -// SetLength sets the uint32 value in the PatternFlowEthernetEtherTypeMetricTag object -func (obj *patternFlowEthernetEtherTypeMetricTag) SetLength(value uint32) PatternFlowEthernetEtherTypeMetricTag { +// SetLength sets the uint32 value in the PatternFlowTcpCtlUrgMetricTag object +func (obj *patternFlowTcpCtlUrgMetricTag) SetLength(value uint32) PatternFlowTcpCtlUrgMetricTag { obj.obj.Length = &value return obj } -func (obj *patternFlowEthernetEtherTypeMetricTag) validateObj(vObj *validation, set_default bool) { +func (obj *patternFlowTcpCtlUrgMetricTag) validateObj(vObj *validation, set_default bool) { if set_default { obj.setDefault() } // Name is required if obj.obj.Name == nil { - vObj.validationErrors = append(vObj.validationErrors, "Name is required field on interface PatternFlowEthernetEtherTypeMetricTag") + vObj.validationErrors = append(vObj.validationErrors, "Name is required field on interface PatternFlowTcpCtlUrgMetricTag") } if obj.obj.Offset != nil { - if *obj.obj.Offset > 15 { + if *obj.obj.Offset > 0 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowEthernetEtherTypeMetricTag.Offset <= 15 but Got %d", *obj.obj.Offset)) + fmt.Sprintf("0 <= PatternFlowTcpCtlUrgMetricTag.Offset <= 0 but Got %d", *obj.obj.Offset)) } } if obj.obj.Length != nil { - if *obj.obj.Length < 1 || *obj.obj.Length > 16 { + if *obj.obj.Length < 1 || *obj.obj.Length > 1 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("1 <= PatternFlowEthernetEtherTypeMetricTag.Length <= 16 but Got %d", *obj.obj.Length)) + fmt.Sprintf("1 <= PatternFlowTcpCtlUrgMetricTag.Length <= 1 but Got %d", *obj.obj.Length)) } } } -func (obj *patternFlowEthernetEtherTypeMetricTag) setDefault() { +func (obj *patternFlowTcpCtlUrgMetricTag) setDefault() { if obj.obj.Offset == nil { obj.SetOffset(0) } if obj.obj.Length == nil { - obj.SetLength(16) + obj.SetLength(1) } } -// ***** PatternFlowEthernetPfcQueueCounter ***** -type patternFlowEthernetPfcQueueCounter struct { +// ***** PatternFlowTcpCtlAckCounter ***** +type patternFlowTcpCtlAckCounter struct { validation - obj *otg.PatternFlowEthernetPfcQueueCounter + obj *otg.PatternFlowTcpCtlAckCounter } -func NewPatternFlowEthernetPfcQueueCounter() PatternFlowEthernetPfcQueueCounter { - obj := patternFlowEthernetPfcQueueCounter{obj: &otg.PatternFlowEthernetPfcQueueCounter{}} +func NewPatternFlowTcpCtlAckCounter() PatternFlowTcpCtlAckCounter { + obj := patternFlowTcpCtlAckCounter{obj: &otg.PatternFlowTcpCtlAckCounter{}} obj.setDefault() return &obj } -func (obj *patternFlowEthernetPfcQueueCounter) Msg() *otg.PatternFlowEthernetPfcQueueCounter { +func (obj *patternFlowTcpCtlAckCounter) Msg() *otg.PatternFlowTcpCtlAckCounter { return obj.obj } -func (obj *patternFlowEthernetPfcQueueCounter) SetMsg(msg *otg.PatternFlowEthernetPfcQueueCounter) PatternFlowEthernetPfcQueueCounter { +func (obj *patternFlowTcpCtlAckCounter) SetMsg(msg *otg.PatternFlowTcpCtlAckCounter) PatternFlowTcpCtlAckCounter { proto.Merge(obj.obj, msg) return obj } -func (obj *patternFlowEthernetPfcQueueCounter) ToProto() (*otg.PatternFlowEthernetPfcQueueCounter, error) { +func (obj *patternFlowTcpCtlAckCounter) ToProto() (*otg.PatternFlowTcpCtlAckCounter, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -186624,7 +229781,7 @@ func (obj *patternFlowEthernetPfcQueueCounter) ToProto() (*otg.PatternFlowEthern return obj.Msg(), nil } -func (obj *patternFlowEthernetPfcQueueCounter) FromProto(msg *otg.PatternFlowEthernetPfcQueueCounter) (PatternFlowEthernetPfcQueueCounter, error) { +func (obj *patternFlowTcpCtlAckCounter) FromProto(msg *otg.PatternFlowTcpCtlAckCounter) (PatternFlowTcpCtlAckCounter, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -186633,7 +229790,7 @@ func (obj *patternFlowEthernetPfcQueueCounter) FromProto(msg *otg.PatternFlowEth return newObj, nil } -func (obj *patternFlowEthernetPfcQueueCounter) ToPbText() (string, error) { +func (obj *patternFlowTcpCtlAckCounter) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -186645,7 +229802,7 @@ func (obj *patternFlowEthernetPfcQueueCounter) ToPbText() (string, error) { return string(protoMarshal), nil } -func (obj *patternFlowEthernetPfcQueueCounter) FromPbText(value string) error { +func (obj *patternFlowTcpCtlAckCounter) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj @@ -186658,7 +229815,7 @@ func (obj *patternFlowEthernetPfcQueueCounter) FromPbText(value string) error { return retObj } -func (obj *patternFlowEthernetPfcQueueCounter) ToYaml() (string, error) { +func (obj *patternFlowTcpCtlAckCounter) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -186679,7 +229836,7 @@ func (obj *patternFlowEthernetPfcQueueCounter) ToYaml() (string, error) { return string(data), nil } -func (obj *patternFlowEthernetPfcQueueCounter) FromYaml(value string) error { +func (obj *patternFlowTcpCtlAckCounter) FromYaml(value string) error { if value == "" { value = "{}" } @@ -186704,7 +229861,7 @@ func (obj *patternFlowEthernetPfcQueueCounter) FromYaml(value string) error { return nil } -func (obj *patternFlowEthernetPfcQueueCounter) ToJson() (string, error) { +func (obj *patternFlowTcpCtlAckCounter) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -186722,7 +229879,7 @@ func (obj *patternFlowEthernetPfcQueueCounter) ToJson() (string, error) { return string(data), nil } -func (obj *patternFlowEthernetPfcQueueCounter) FromJson(value string) error { +func (obj *patternFlowTcpCtlAckCounter) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -186743,19 +229900,19 @@ func (obj *patternFlowEthernetPfcQueueCounter) FromJson(value string) error { return nil } -func (obj *patternFlowEthernetPfcQueueCounter) validateToAndFrom() error { +func (obj *patternFlowTcpCtlAckCounter) validateToAndFrom() error { // emptyVars() obj.validateObj(&obj.validation, true) return obj.validationResult() } -func (obj *patternFlowEthernetPfcQueueCounter) Validate() error { +func (obj *patternFlowTcpCtlAckCounter) Validate() error { // emptyVars() obj.validateObj(&obj.validation, false) return obj.validationResult() } -func (obj *patternFlowEthernetPfcQueueCounter) String() string { +func (obj *patternFlowTcpCtlAckCounter) String() string { str, err := obj.ToYaml() if err != nil { return err.Error() @@ -186763,12 +229920,12 @@ func (obj *patternFlowEthernetPfcQueueCounter) String() string { return str } -func (obj *patternFlowEthernetPfcQueueCounter) Clone() (PatternFlowEthernetPfcQueueCounter, error) { +func (obj *patternFlowTcpCtlAckCounter) Clone() (PatternFlowTcpCtlAckCounter, error) { vErr := obj.Validate() if vErr != nil { return nil, vErr } - newObj := NewPatternFlowEthernetPfcQueueCounter() + newObj := NewPatternFlowTcpCtlAckCounter() data, err := proto.Marshal(obj.Msg()) if err != nil { return nil, err @@ -186780,63 +229937,63 @@ func (obj *patternFlowEthernetPfcQueueCounter) Clone() (PatternFlowEthernetPfcQu return newObj, nil } -// PatternFlowEthernetPfcQueueCounter is integer counter pattern -type PatternFlowEthernetPfcQueueCounter interface { +// PatternFlowTcpCtlAckCounter is integer counter pattern +type PatternFlowTcpCtlAckCounter interface { Validation - // Msg marshals PatternFlowEthernetPfcQueueCounter to protobuf object *otg.PatternFlowEthernetPfcQueueCounter + // Msg marshals PatternFlowTcpCtlAckCounter to protobuf object *otg.PatternFlowTcpCtlAckCounter // and doesn't set defaults - Msg() *otg.PatternFlowEthernetPfcQueueCounter - // SetMsg unmarshals PatternFlowEthernetPfcQueueCounter from protobuf object *otg.PatternFlowEthernetPfcQueueCounter + Msg() *otg.PatternFlowTcpCtlAckCounter + // SetMsg unmarshals PatternFlowTcpCtlAckCounter from protobuf object *otg.PatternFlowTcpCtlAckCounter // and doesn't set defaults - SetMsg(*otg.PatternFlowEthernetPfcQueueCounter) PatternFlowEthernetPfcQueueCounter - // ToProto marshals PatternFlowEthernetPfcQueueCounter to protobuf object *otg.PatternFlowEthernetPfcQueueCounter - ToProto() (*otg.PatternFlowEthernetPfcQueueCounter, error) - // ToPbText marshals PatternFlowEthernetPfcQueueCounter to protobuf text + SetMsg(*otg.PatternFlowTcpCtlAckCounter) PatternFlowTcpCtlAckCounter + // ToProto marshals PatternFlowTcpCtlAckCounter to protobuf object *otg.PatternFlowTcpCtlAckCounter + ToProto() (*otg.PatternFlowTcpCtlAckCounter, error) + // ToPbText marshals PatternFlowTcpCtlAckCounter to protobuf text ToPbText() (string, error) - // ToYaml marshals PatternFlowEthernetPfcQueueCounter to YAML text + // ToYaml marshals PatternFlowTcpCtlAckCounter to YAML text ToYaml() (string, error) - // ToJson marshals PatternFlowEthernetPfcQueueCounter to JSON text + // ToJson marshals PatternFlowTcpCtlAckCounter to JSON text ToJson() (string, error) - // FromProto unmarshals PatternFlowEthernetPfcQueueCounter from protobuf object *otg.PatternFlowEthernetPfcQueueCounter - FromProto(msg *otg.PatternFlowEthernetPfcQueueCounter) (PatternFlowEthernetPfcQueueCounter, error) - // FromPbText unmarshals PatternFlowEthernetPfcQueueCounter from protobuf text + // FromProto unmarshals PatternFlowTcpCtlAckCounter from protobuf object *otg.PatternFlowTcpCtlAckCounter + FromProto(msg *otg.PatternFlowTcpCtlAckCounter) (PatternFlowTcpCtlAckCounter, error) + // FromPbText unmarshals PatternFlowTcpCtlAckCounter from protobuf text FromPbText(value string) error - // FromYaml unmarshals PatternFlowEthernetPfcQueueCounter from YAML text + // FromYaml unmarshals PatternFlowTcpCtlAckCounter from YAML text FromYaml(value string) error - // FromJson unmarshals PatternFlowEthernetPfcQueueCounter from JSON text + // FromJson unmarshals PatternFlowTcpCtlAckCounter from JSON text FromJson(value string) error - // Validate validates PatternFlowEthernetPfcQueueCounter + // Validate validates PatternFlowTcpCtlAckCounter Validate() error // A stringer function String() string // Clones the object - Clone() (PatternFlowEthernetPfcQueueCounter, error) + Clone() (PatternFlowTcpCtlAckCounter, error) validateToAndFrom() error validateObj(vObj *validation, set_default bool) setDefault() - // Start returns uint32, set in PatternFlowEthernetPfcQueueCounter. + // Start returns uint32, set in PatternFlowTcpCtlAckCounter. Start() uint32 - // SetStart assigns uint32 provided by user to PatternFlowEthernetPfcQueueCounter - SetStart(value uint32) PatternFlowEthernetPfcQueueCounter - // HasStart checks if Start has been set in PatternFlowEthernetPfcQueueCounter + // SetStart assigns uint32 provided by user to PatternFlowTcpCtlAckCounter + SetStart(value uint32) PatternFlowTcpCtlAckCounter + // HasStart checks if Start has been set in PatternFlowTcpCtlAckCounter HasStart() bool - // Step returns uint32, set in PatternFlowEthernetPfcQueueCounter. + // Step returns uint32, set in PatternFlowTcpCtlAckCounter. Step() uint32 - // SetStep assigns uint32 provided by user to PatternFlowEthernetPfcQueueCounter - SetStep(value uint32) PatternFlowEthernetPfcQueueCounter - // HasStep checks if Step has been set in PatternFlowEthernetPfcQueueCounter + // SetStep assigns uint32 provided by user to PatternFlowTcpCtlAckCounter + SetStep(value uint32) PatternFlowTcpCtlAckCounter + // HasStep checks if Step has been set in PatternFlowTcpCtlAckCounter HasStep() bool - // Count returns uint32, set in PatternFlowEthernetPfcQueueCounter. + // Count returns uint32, set in PatternFlowTcpCtlAckCounter. Count() uint32 - // SetCount assigns uint32 provided by user to PatternFlowEthernetPfcQueueCounter - SetCount(value uint32) PatternFlowEthernetPfcQueueCounter - // HasCount checks if Count has been set in PatternFlowEthernetPfcQueueCounter + // SetCount assigns uint32 provided by user to PatternFlowTcpCtlAckCounter + SetCount(value uint32) PatternFlowTcpCtlAckCounter + // HasCount checks if Count has been set in PatternFlowTcpCtlAckCounter HasCount() bool } // description is TBD // Start returns a uint32 -func (obj *patternFlowEthernetPfcQueueCounter) Start() uint32 { +func (obj *patternFlowTcpCtlAckCounter) Start() uint32 { return *obj.obj.Start @@ -186844,13 +230001,13 @@ func (obj *patternFlowEthernetPfcQueueCounter) Start() uint32 { // description is TBD // Start returns a uint32 -func (obj *patternFlowEthernetPfcQueueCounter) HasStart() bool { +func (obj *patternFlowTcpCtlAckCounter) HasStart() bool { return obj.obj.Start != nil } // description is TBD -// SetStart sets the uint32 value in the PatternFlowEthernetPfcQueueCounter object -func (obj *patternFlowEthernetPfcQueueCounter) SetStart(value uint32) PatternFlowEthernetPfcQueueCounter { +// SetStart sets the uint32 value in the PatternFlowTcpCtlAckCounter object +func (obj *patternFlowTcpCtlAckCounter) SetStart(value uint32) PatternFlowTcpCtlAckCounter { obj.obj.Start = &value return obj @@ -186858,7 +230015,7 @@ func (obj *patternFlowEthernetPfcQueueCounter) SetStart(value uint32) PatternFlo // description is TBD // Step returns a uint32 -func (obj *patternFlowEthernetPfcQueueCounter) Step() uint32 { +func (obj *patternFlowTcpCtlAckCounter) Step() uint32 { return *obj.obj.Step @@ -186866,13 +230023,13 @@ func (obj *patternFlowEthernetPfcQueueCounter) Step() uint32 { // description is TBD // Step returns a uint32 -func (obj *patternFlowEthernetPfcQueueCounter) HasStep() bool { +func (obj *patternFlowTcpCtlAckCounter) HasStep() bool { return obj.obj.Step != nil } // description is TBD -// SetStep sets the uint32 value in the PatternFlowEthernetPfcQueueCounter object -func (obj *patternFlowEthernetPfcQueueCounter) SetStep(value uint32) PatternFlowEthernetPfcQueueCounter { +// SetStep sets the uint32 value in the PatternFlowTcpCtlAckCounter object +func (obj *patternFlowTcpCtlAckCounter) SetStep(value uint32) PatternFlowTcpCtlAckCounter { obj.obj.Step = &value return obj @@ -186880,7 +230037,7 @@ func (obj *patternFlowEthernetPfcQueueCounter) SetStep(value uint32) PatternFlow // description is TBD // Count returns a uint32 -func (obj *patternFlowEthernetPfcQueueCounter) Count() uint32 { +func (obj *patternFlowTcpCtlAckCounter) Count() uint32 { return *obj.obj.Count @@ -186888,56 +230045,56 @@ func (obj *patternFlowEthernetPfcQueueCounter) Count() uint32 { // description is TBD // Count returns a uint32 -func (obj *patternFlowEthernetPfcQueueCounter) HasCount() bool { +func (obj *patternFlowTcpCtlAckCounter) HasCount() bool { return obj.obj.Count != nil } // description is TBD -// SetCount sets the uint32 value in the PatternFlowEthernetPfcQueueCounter object -func (obj *patternFlowEthernetPfcQueueCounter) SetCount(value uint32) PatternFlowEthernetPfcQueueCounter { +// SetCount sets the uint32 value in the PatternFlowTcpCtlAckCounter object +func (obj *patternFlowTcpCtlAckCounter) SetCount(value uint32) PatternFlowTcpCtlAckCounter { obj.obj.Count = &value return obj } -func (obj *patternFlowEthernetPfcQueueCounter) validateObj(vObj *validation, set_default bool) { +func (obj *patternFlowTcpCtlAckCounter) validateObj(vObj *validation, set_default bool) { if set_default { obj.setDefault() } if obj.obj.Start != nil { - if *obj.obj.Start > 7 { + if *obj.obj.Start > 1 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowEthernetPfcQueueCounter.Start <= 7 but Got %d", *obj.obj.Start)) + fmt.Sprintf("0 <= PatternFlowTcpCtlAckCounter.Start <= 1 but Got %d", *obj.obj.Start)) } } if obj.obj.Step != nil { - if *obj.obj.Step > 7 { + if *obj.obj.Step > 1 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowEthernetPfcQueueCounter.Step <= 7 but Got %d", *obj.obj.Step)) + fmt.Sprintf("0 <= PatternFlowTcpCtlAckCounter.Step <= 1 but Got %d", *obj.obj.Step)) } } if obj.obj.Count != nil { - if *obj.obj.Count > 7 { + if *obj.obj.Count > 1 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowEthernetPfcQueueCounter.Count <= 7 but Got %d", *obj.obj.Count)) + fmt.Sprintf("0 <= PatternFlowTcpCtlAckCounter.Count <= 1 but Got %d", *obj.obj.Count)) } } } -func (obj *patternFlowEthernetPfcQueueCounter) setDefault() { +func (obj *patternFlowTcpCtlAckCounter) setDefault() { if obj.obj.Start == nil { obj.SetStart(0) } @@ -186950,29 +230107,29 @@ func (obj *patternFlowEthernetPfcQueueCounter) setDefault() { } -// ***** PatternFlowEthernetPfcQueueMetricTag ***** -type patternFlowEthernetPfcQueueMetricTag struct { +// ***** PatternFlowTcpCtlAckMetricTag ***** +type patternFlowTcpCtlAckMetricTag struct { validation - obj *otg.PatternFlowEthernetPfcQueueMetricTag + obj *otg.PatternFlowTcpCtlAckMetricTag } -func NewPatternFlowEthernetPfcQueueMetricTag() PatternFlowEthernetPfcQueueMetricTag { - obj := patternFlowEthernetPfcQueueMetricTag{obj: &otg.PatternFlowEthernetPfcQueueMetricTag{}} +func NewPatternFlowTcpCtlAckMetricTag() PatternFlowTcpCtlAckMetricTag { + obj := patternFlowTcpCtlAckMetricTag{obj: &otg.PatternFlowTcpCtlAckMetricTag{}} obj.setDefault() return &obj } -func (obj *patternFlowEthernetPfcQueueMetricTag) Msg() *otg.PatternFlowEthernetPfcQueueMetricTag { +func (obj *patternFlowTcpCtlAckMetricTag) Msg() *otg.PatternFlowTcpCtlAckMetricTag { return obj.obj } -func (obj *patternFlowEthernetPfcQueueMetricTag) SetMsg(msg *otg.PatternFlowEthernetPfcQueueMetricTag) PatternFlowEthernetPfcQueueMetricTag { +func (obj *patternFlowTcpCtlAckMetricTag) SetMsg(msg *otg.PatternFlowTcpCtlAckMetricTag) PatternFlowTcpCtlAckMetricTag { proto.Merge(obj.obj, msg) return obj } -func (obj *patternFlowEthernetPfcQueueMetricTag) ToProto() (*otg.PatternFlowEthernetPfcQueueMetricTag, error) { +func (obj *patternFlowTcpCtlAckMetricTag) ToProto() (*otg.PatternFlowTcpCtlAckMetricTag, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -186980,7 +230137,7 @@ func (obj *patternFlowEthernetPfcQueueMetricTag) ToProto() (*otg.PatternFlowEthe return obj.Msg(), nil } -func (obj *patternFlowEthernetPfcQueueMetricTag) FromProto(msg *otg.PatternFlowEthernetPfcQueueMetricTag) (PatternFlowEthernetPfcQueueMetricTag, error) { +func (obj *patternFlowTcpCtlAckMetricTag) FromProto(msg *otg.PatternFlowTcpCtlAckMetricTag) (PatternFlowTcpCtlAckMetricTag, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -186989,7 +230146,7 @@ func (obj *patternFlowEthernetPfcQueueMetricTag) FromProto(msg *otg.PatternFlowE return newObj, nil } -func (obj *patternFlowEthernetPfcQueueMetricTag) ToPbText() (string, error) { +func (obj *patternFlowTcpCtlAckMetricTag) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -187001,7 +230158,7 @@ func (obj *patternFlowEthernetPfcQueueMetricTag) ToPbText() (string, error) { return string(protoMarshal), nil } -func (obj *patternFlowEthernetPfcQueueMetricTag) FromPbText(value string) error { +func (obj *patternFlowTcpCtlAckMetricTag) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj @@ -187014,7 +230171,7 @@ func (obj *patternFlowEthernetPfcQueueMetricTag) FromPbText(value string) error return retObj } -func (obj *patternFlowEthernetPfcQueueMetricTag) ToYaml() (string, error) { +func (obj *patternFlowTcpCtlAckMetricTag) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -187035,7 +230192,7 @@ func (obj *patternFlowEthernetPfcQueueMetricTag) ToYaml() (string, error) { return string(data), nil } -func (obj *patternFlowEthernetPfcQueueMetricTag) FromYaml(value string) error { +func (obj *patternFlowTcpCtlAckMetricTag) FromYaml(value string) error { if value == "" { value = "{}" } @@ -187060,7 +230217,7 @@ func (obj *patternFlowEthernetPfcQueueMetricTag) FromYaml(value string) error { return nil } -func (obj *patternFlowEthernetPfcQueueMetricTag) ToJson() (string, error) { +func (obj *patternFlowTcpCtlAckMetricTag) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -187078,7 +230235,7 @@ func (obj *patternFlowEthernetPfcQueueMetricTag) ToJson() (string, error) { return string(data), nil } -func (obj *patternFlowEthernetPfcQueueMetricTag) FromJson(value string) error { +func (obj *patternFlowTcpCtlAckMetricTag) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -187099,19 +230256,19 @@ func (obj *patternFlowEthernetPfcQueueMetricTag) FromJson(value string) error { return nil } -func (obj *patternFlowEthernetPfcQueueMetricTag) validateToAndFrom() error { +func (obj *patternFlowTcpCtlAckMetricTag) validateToAndFrom() error { // emptyVars() obj.validateObj(&obj.validation, true) return obj.validationResult() } -func (obj *patternFlowEthernetPfcQueueMetricTag) Validate() error { +func (obj *patternFlowTcpCtlAckMetricTag) Validate() error { // emptyVars() obj.validateObj(&obj.validation, false) return obj.validationResult() } -func (obj *patternFlowEthernetPfcQueueMetricTag) String() string { +func (obj *patternFlowTcpCtlAckMetricTag) String() string { str, err := obj.ToYaml() if err != nil { return err.Error() @@ -187119,12 +230276,12 @@ func (obj *patternFlowEthernetPfcQueueMetricTag) String() string { return str } -func (obj *patternFlowEthernetPfcQueueMetricTag) Clone() (PatternFlowEthernetPfcQueueMetricTag, error) { +func (obj *patternFlowTcpCtlAckMetricTag) Clone() (PatternFlowTcpCtlAckMetricTag, error) { vErr := obj.Validate() if vErr != nil { return nil, vErr } - newObj := NewPatternFlowEthernetPfcQueueMetricTag() + newObj := NewPatternFlowTcpCtlAckMetricTag() data, err := proto.Marshal(obj.Msg()) if err != nil { return nil, err @@ -187136,69 +230293,69 @@ func (obj *patternFlowEthernetPfcQueueMetricTag) Clone() (PatternFlowEthernetPfc return newObj, nil } -// PatternFlowEthernetPfcQueueMetricTag is metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. -type PatternFlowEthernetPfcQueueMetricTag interface { +// PatternFlowTcpCtlAckMetricTag is metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. +type PatternFlowTcpCtlAckMetricTag interface { Validation - // Msg marshals PatternFlowEthernetPfcQueueMetricTag to protobuf object *otg.PatternFlowEthernetPfcQueueMetricTag + // Msg marshals PatternFlowTcpCtlAckMetricTag to protobuf object *otg.PatternFlowTcpCtlAckMetricTag // and doesn't set defaults - Msg() *otg.PatternFlowEthernetPfcQueueMetricTag - // SetMsg unmarshals PatternFlowEthernetPfcQueueMetricTag from protobuf object *otg.PatternFlowEthernetPfcQueueMetricTag + Msg() *otg.PatternFlowTcpCtlAckMetricTag + // SetMsg unmarshals PatternFlowTcpCtlAckMetricTag from protobuf object *otg.PatternFlowTcpCtlAckMetricTag // and doesn't set defaults - SetMsg(*otg.PatternFlowEthernetPfcQueueMetricTag) PatternFlowEthernetPfcQueueMetricTag - // ToProto marshals PatternFlowEthernetPfcQueueMetricTag to protobuf object *otg.PatternFlowEthernetPfcQueueMetricTag - ToProto() (*otg.PatternFlowEthernetPfcQueueMetricTag, error) - // ToPbText marshals PatternFlowEthernetPfcQueueMetricTag to protobuf text + SetMsg(*otg.PatternFlowTcpCtlAckMetricTag) PatternFlowTcpCtlAckMetricTag + // ToProto marshals PatternFlowTcpCtlAckMetricTag to protobuf object *otg.PatternFlowTcpCtlAckMetricTag + ToProto() (*otg.PatternFlowTcpCtlAckMetricTag, error) + // ToPbText marshals PatternFlowTcpCtlAckMetricTag to protobuf text ToPbText() (string, error) - // ToYaml marshals PatternFlowEthernetPfcQueueMetricTag to YAML text + // ToYaml marshals PatternFlowTcpCtlAckMetricTag to YAML text ToYaml() (string, error) - // ToJson marshals PatternFlowEthernetPfcQueueMetricTag to JSON text + // ToJson marshals PatternFlowTcpCtlAckMetricTag to JSON text ToJson() (string, error) - // FromProto unmarshals PatternFlowEthernetPfcQueueMetricTag from protobuf object *otg.PatternFlowEthernetPfcQueueMetricTag - FromProto(msg *otg.PatternFlowEthernetPfcQueueMetricTag) (PatternFlowEthernetPfcQueueMetricTag, error) - // FromPbText unmarshals PatternFlowEthernetPfcQueueMetricTag from protobuf text + // FromProto unmarshals PatternFlowTcpCtlAckMetricTag from protobuf object *otg.PatternFlowTcpCtlAckMetricTag + FromProto(msg *otg.PatternFlowTcpCtlAckMetricTag) (PatternFlowTcpCtlAckMetricTag, error) + // FromPbText unmarshals PatternFlowTcpCtlAckMetricTag from protobuf text FromPbText(value string) error - // FromYaml unmarshals PatternFlowEthernetPfcQueueMetricTag from YAML text + // FromYaml unmarshals PatternFlowTcpCtlAckMetricTag from YAML text FromYaml(value string) error - // FromJson unmarshals PatternFlowEthernetPfcQueueMetricTag from JSON text + // FromJson unmarshals PatternFlowTcpCtlAckMetricTag from JSON text FromJson(value string) error - // Validate validates PatternFlowEthernetPfcQueueMetricTag + // Validate validates PatternFlowTcpCtlAckMetricTag Validate() error // A stringer function String() string // Clones the object - Clone() (PatternFlowEthernetPfcQueueMetricTag, error) + Clone() (PatternFlowTcpCtlAckMetricTag, error) validateToAndFrom() error validateObj(vObj *validation, set_default bool) setDefault() - // Name returns string, set in PatternFlowEthernetPfcQueueMetricTag. + // Name returns string, set in PatternFlowTcpCtlAckMetricTag. Name() string - // SetName assigns string provided by user to PatternFlowEthernetPfcQueueMetricTag - SetName(value string) PatternFlowEthernetPfcQueueMetricTag - // Offset returns uint32, set in PatternFlowEthernetPfcQueueMetricTag. + // SetName assigns string provided by user to PatternFlowTcpCtlAckMetricTag + SetName(value string) PatternFlowTcpCtlAckMetricTag + // Offset returns uint32, set in PatternFlowTcpCtlAckMetricTag. Offset() uint32 - // SetOffset assigns uint32 provided by user to PatternFlowEthernetPfcQueueMetricTag - SetOffset(value uint32) PatternFlowEthernetPfcQueueMetricTag - // HasOffset checks if Offset has been set in PatternFlowEthernetPfcQueueMetricTag + // SetOffset assigns uint32 provided by user to PatternFlowTcpCtlAckMetricTag + SetOffset(value uint32) PatternFlowTcpCtlAckMetricTag + // HasOffset checks if Offset has been set in PatternFlowTcpCtlAckMetricTag HasOffset() bool - // Length returns uint32, set in PatternFlowEthernetPfcQueueMetricTag. + // Length returns uint32, set in PatternFlowTcpCtlAckMetricTag. Length() uint32 - // SetLength assigns uint32 provided by user to PatternFlowEthernetPfcQueueMetricTag - SetLength(value uint32) PatternFlowEthernetPfcQueueMetricTag - // HasLength checks if Length has been set in PatternFlowEthernetPfcQueueMetricTag + // SetLength assigns uint32 provided by user to PatternFlowTcpCtlAckMetricTag + SetLength(value uint32) PatternFlowTcpCtlAckMetricTag + // HasLength checks if Length has been set in PatternFlowTcpCtlAckMetricTag HasLength() bool } // Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field // Name returns a string -func (obj *patternFlowEthernetPfcQueueMetricTag) Name() string { +func (obj *patternFlowTcpCtlAckMetricTag) Name() string { return *obj.obj.Name } // Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field -// SetName sets the string value in the PatternFlowEthernetPfcQueueMetricTag object -func (obj *patternFlowEthernetPfcQueueMetricTag) SetName(value string) PatternFlowEthernetPfcQueueMetricTag { +// SetName sets the string value in the PatternFlowTcpCtlAckMetricTag object +func (obj *patternFlowTcpCtlAckMetricTag) SetName(value string) PatternFlowTcpCtlAckMetricTag { obj.obj.Name = &value return obj @@ -187206,7 +230363,7 @@ func (obj *patternFlowEthernetPfcQueueMetricTag) SetName(value string) PatternFl // Offset in bits relative to start of corresponding header field // Offset returns a uint32 -func (obj *patternFlowEthernetPfcQueueMetricTag) Offset() uint32 { +func (obj *patternFlowTcpCtlAckMetricTag) Offset() uint32 { return *obj.obj.Offset @@ -187214,13 +230371,13 @@ func (obj *patternFlowEthernetPfcQueueMetricTag) Offset() uint32 { // Offset in bits relative to start of corresponding header field // Offset returns a uint32 -func (obj *patternFlowEthernetPfcQueueMetricTag) HasOffset() bool { +func (obj *patternFlowTcpCtlAckMetricTag) HasOffset() bool { return obj.obj.Offset != nil } // Offset in bits relative to start of corresponding header field -// SetOffset sets the uint32 value in the PatternFlowEthernetPfcQueueMetricTag object -func (obj *patternFlowEthernetPfcQueueMetricTag) SetOffset(value uint32) PatternFlowEthernetPfcQueueMetricTag { +// SetOffset sets the uint32 value in the PatternFlowTcpCtlAckMetricTag object +func (obj *patternFlowTcpCtlAckMetricTag) SetOffset(value uint32) PatternFlowTcpCtlAckMetricTag { obj.obj.Offset = &value return obj @@ -187228,7 +230385,7 @@ func (obj *patternFlowEthernetPfcQueueMetricTag) SetOffset(value uint32) Pattern // Number of bits to track for metrics starting from configured offset of corresponding header field // Length returns a uint32 -func (obj *patternFlowEthernetPfcQueueMetricTag) Length() uint32 { +func (obj *patternFlowTcpCtlAckMetricTag) Length() uint32 { return *obj.obj.Length @@ -187236,83 +230393,83 @@ func (obj *patternFlowEthernetPfcQueueMetricTag) Length() uint32 { // Number of bits to track for metrics starting from configured offset of corresponding header field // Length returns a uint32 -func (obj *patternFlowEthernetPfcQueueMetricTag) HasLength() bool { +func (obj *patternFlowTcpCtlAckMetricTag) HasLength() bool { return obj.obj.Length != nil } // Number of bits to track for metrics starting from configured offset of corresponding header field -// SetLength sets the uint32 value in the PatternFlowEthernetPfcQueueMetricTag object -func (obj *patternFlowEthernetPfcQueueMetricTag) SetLength(value uint32) PatternFlowEthernetPfcQueueMetricTag { +// SetLength sets the uint32 value in the PatternFlowTcpCtlAckMetricTag object +func (obj *patternFlowTcpCtlAckMetricTag) SetLength(value uint32) PatternFlowTcpCtlAckMetricTag { obj.obj.Length = &value return obj } -func (obj *patternFlowEthernetPfcQueueMetricTag) validateObj(vObj *validation, set_default bool) { +func (obj *patternFlowTcpCtlAckMetricTag) validateObj(vObj *validation, set_default bool) { if set_default { obj.setDefault() } // Name is required if obj.obj.Name == nil { - vObj.validationErrors = append(vObj.validationErrors, "Name is required field on interface PatternFlowEthernetPfcQueueMetricTag") + vObj.validationErrors = append(vObj.validationErrors, "Name is required field on interface PatternFlowTcpCtlAckMetricTag") } if obj.obj.Offset != nil { - if *obj.obj.Offset > 2 { + if *obj.obj.Offset > 0 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowEthernetPfcQueueMetricTag.Offset <= 2 but Got %d", *obj.obj.Offset)) + fmt.Sprintf("0 <= PatternFlowTcpCtlAckMetricTag.Offset <= 0 but Got %d", *obj.obj.Offset)) } } if obj.obj.Length != nil { - if *obj.obj.Length < 1 || *obj.obj.Length > 3 { + if *obj.obj.Length < 1 || *obj.obj.Length > 1 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("1 <= PatternFlowEthernetPfcQueueMetricTag.Length <= 3 but Got %d", *obj.obj.Length)) + fmt.Sprintf("1 <= PatternFlowTcpCtlAckMetricTag.Length <= 1 but Got %d", *obj.obj.Length)) } } } -func (obj *patternFlowEthernetPfcQueueMetricTag) setDefault() { +func (obj *patternFlowTcpCtlAckMetricTag) setDefault() { if obj.obj.Offset == nil { obj.SetOffset(0) } if obj.obj.Length == nil { - obj.SetLength(3) + obj.SetLength(1) } } -// ***** PatternFlowVlanPriorityCounter ***** -type patternFlowVlanPriorityCounter struct { +// ***** PatternFlowTcpCtlPshCounter ***** +type patternFlowTcpCtlPshCounter struct { validation - obj *otg.PatternFlowVlanPriorityCounter + obj *otg.PatternFlowTcpCtlPshCounter } -func NewPatternFlowVlanPriorityCounter() PatternFlowVlanPriorityCounter { - obj := patternFlowVlanPriorityCounter{obj: &otg.PatternFlowVlanPriorityCounter{}} +func NewPatternFlowTcpCtlPshCounter() PatternFlowTcpCtlPshCounter { + obj := patternFlowTcpCtlPshCounter{obj: &otg.PatternFlowTcpCtlPshCounter{}} obj.setDefault() return &obj } -func (obj *patternFlowVlanPriorityCounter) Msg() *otg.PatternFlowVlanPriorityCounter { +func (obj *patternFlowTcpCtlPshCounter) Msg() *otg.PatternFlowTcpCtlPshCounter { return obj.obj } -func (obj *patternFlowVlanPriorityCounter) SetMsg(msg *otg.PatternFlowVlanPriorityCounter) PatternFlowVlanPriorityCounter { +func (obj *patternFlowTcpCtlPshCounter) SetMsg(msg *otg.PatternFlowTcpCtlPshCounter) PatternFlowTcpCtlPshCounter { proto.Merge(obj.obj, msg) return obj } -func (obj *patternFlowVlanPriorityCounter) ToProto() (*otg.PatternFlowVlanPriorityCounter, error) { +func (obj *patternFlowTcpCtlPshCounter) ToProto() (*otg.PatternFlowTcpCtlPshCounter, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -187320,7 +230477,7 @@ func (obj *patternFlowVlanPriorityCounter) ToProto() (*otg.PatternFlowVlanPriori return obj.Msg(), nil } -func (obj *patternFlowVlanPriorityCounter) FromProto(msg *otg.PatternFlowVlanPriorityCounter) (PatternFlowVlanPriorityCounter, error) { +func (obj *patternFlowTcpCtlPshCounter) FromProto(msg *otg.PatternFlowTcpCtlPshCounter) (PatternFlowTcpCtlPshCounter, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -187329,7 +230486,7 @@ func (obj *patternFlowVlanPriorityCounter) FromProto(msg *otg.PatternFlowVlanPri return newObj, nil } -func (obj *patternFlowVlanPriorityCounter) ToPbText() (string, error) { +func (obj *patternFlowTcpCtlPshCounter) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -187341,7 +230498,7 @@ func (obj *patternFlowVlanPriorityCounter) ToPbText() (string, error) { return string(protoMarshal), nil } -func (obj *patternFlowVlanPriorityCounter) FromPbText(value string) error { +func (obj *patternFlowTcpCtlPshCounter) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj @@ -187354,7 +230511,7 @@ func (obj *patternFlowVlanPriorityCounter) FromPbText(value string) error { return retObj } -func (obj *patternFlowVlanPriorityCounter) ToYaml() (string, error) { +func (obj *patternFlowTcpCtlPshCounter) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -187375,7 +230532,7 @@ func (obj *patternFlowVlanPriorityCounter) ToYaml() (string, error) { return string(data), nil } -func (obj *patternFlowVlanPriorityCounter) FromYaml(value string) error { +func (obj *patternFlowTcpCtlPshCounter) FromYaml(value string) error { if value == "" { value = "{}" } @@ -187400,7 +230557,7 @@ func (obj *patternFlowVlanPriorityCounter) FromYaml(value string) error { return nil } -func (obj *patternFlowVlanPriorityCounter) ToJson() (string, error) { +func (obj *patternFlowTcpCtlPshCounter) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -187418,7 +230575,7 @@ func (obj *patternFlowVlanPriorityCounter) ToJson() (string, error) { return string(data), nil } -func (obj *patternFlowVlanPriorityCounter) FromJson(value string) error { +func (obj *patternFlowTcpCtlPshCounter) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -187439,19 +230596,19 @@ func (obj *patternFlowVlanPriorityCounter) FromJson(value string) error { return nil } -func (obj *patternFlowVlanPriorityCounter) validateToAndFrom() error { +func (obj *patternFlowTcpCtlPshCounter) validateToAndFrom() error { // emptyVars() obj.validateObj(&obj.validation, true) return obj.validationResult() } -func (obj *patternFlowVlanPriorityCounter) Validate() error { +func (obj *patternFlowTcpCtlPshCounter) Validate() error { // emptyVars() obj.validateObj(&obj.validation, false) return obj.validationResult() } -func (obj *patternFlowVlanPriorityCounter) String() string { +func (obj *patternFlowTcpCtlPshCounter) String() string { str, err := obj.ToYaml() if err != nil { return err.Error() @@ -187459,12 +230616,12 @@ func (obj *patternFlowVlanPriorityCounter) String() string { return str } -func (obj *patternFlowVlanPriorityCounter) Clone() (PatternFlowVlanPriorityCounter, error) { +func (obj *patternFlowTcpCtlPshCounter) Clone() (PatternFlowTcpCtlPshCounter, error) { vErr := obj.Validate() if vErr != nil { return nil, vErr } - newObj := NewPatternFlowVlanPriorityCounter() + newObj := NewPatternFlowTcpCtlPshCounter() data, err := proto.Marshal(obj.Msg()) if err != nil { return nil, err @@ -187476,63 +230633,63 @@ func (obj *patternFlowVlanPriorityCounter) Clone() (PatternFlowVlanPriorityCount return newObj, nil } -// PatternFlowVlanPriorityCounter is integer counter pattern -type PatternFlowVlanPriorityCounter interface { +// PatternFlowTcpCtlPshCounter is integer counter pattern +type PatternFlowTcpCtlPshCounter interface { Validation - // Msg marshals PatternFlowVlanPriorityCounter to protobuf object *otg.PatternFlowVlanPriorityCounter + // Msg marshals PatternFlowTcpCtlPshCounter to protobuf object *otg.PatternFlowTcpCtlPshCounter // and doesn't set defaults - Msg() *otg.PatternFlowVlanPriorityCounter - // SetMsg unmarshals PatternFlowVlanPriorityCounter from protobuf object *otg.PatternFlowVlanPriorityCounter + Msg() *otg.PatternFlowTcpCtlPshCounter + // SetMsg unmarshals PatternFlowTcpCtlPshCounter from protobuf object *otg.PatternFlowTcpCtlPshCounter // and doesn't set defaults - SetMsg(*otg.PatternFlowVlanPriorityCounter) PatternFlowVlanPriorityCounter - // ToProto marshals PatternFlowVlanPriorityCounter to protobuf object *otg.PatternFlowVlanPriorityCounter - ToProto() (*otg.PatternFlowVlanPriorityCounter, error) - // ToPbText marshals PatternFlowVlanPriorityCounter to protobuf text + SetMsg(*otg.PatternFlowTcpCtlPshCounter) PatternFlowTcpCtlPshCounter + // ToProto marshals PatternFlowTcpCtlPshCounter to protobuf object *otg.PatternFlowTcpCtlPshCounter + ToProto() (*otg.PatternFlowTcpCtlPshCounter, error) + // ToPbText marshals PatternFlowTcpCtlPshCounter to protobuf text ToPbText() (string, error) - // ToYaml marshals PatternFlowVlanPriorityCounter to YAML text + // ToYaml marshals PatternFlowTcpCtlPshCounter to YAML text ToYaml() (string, error) - // ToJson marshals PatternFlowVlanPriorityCounter to JSON text + // ToJson marshals PatternFlowTcpCtlPshCounter to JSON text ToJson() (string, error) - // FromProto unmarshals PatternFlowVlanPriorityCounter from protobuf object *otg.PatternFlowVlanPriorityCounter - FromProto(msg *otg.PatternFlowVlanPriorityCounter) (PatternFlowVlanPriorityCounter, error) - // FromPbText unmarshals PatternFlowVlanPriorityCounter from protobuf text + // FromProto unmarshals PatternFlowTcpCtlPshCounter from protobuf object *otg.PatternFlowTcpCtlPshCounter + FromProto(msg *otg.PatternFlowTcpCtlPshCounter) (PatternFlowTcpCtlPshCounter, error) + // FromPbText unmarshals PatternFlowTcpCtlPshCounter from protobuf text FromPbText(value string) error - // FromYaml unmarshals PatternFlowVlanPriorityCounter from YAML text + // FromYaml unmarshals PatternFlowTcpCtlPshCounter from YAML text FromYaml(value string) error - // FromJson unmarshals PatternFlowVlanPriorityCounter from JSON text + // FromJson unmarshals PatternFlowTcpCtlPshCounter from JSON text FromJson(value string) error - // Validate validates PatternFlowVlanPriorityCounter + // Validate validates PatternFlowTcpCtlPshCounter Validate() error // A stringer function String() string // Clones the object - Clone() (PatternFlowVlanPriorityCounter, error) + Clone() (PatternFlowTcpCtlPshCounter, error) validateToAndFrom() error validateObj(vObj *validation, set_default bool) setDefault() - // Start returns uint32, set in PatternFlowVlanPriorityCounter. + // Start returns uint32, set in PatternFlowTcpCtlPshCounter. Start() uint32 - // SetStart assigns uint32 provided by user to PatternFlowVlanPriorityCounter - SetStart(value uint32) PatternFlowVlanPriorityCounter - // HasStart checks if Start has been set in PatternFlowVlanPriorityCounter + // SetStart assigns uint32 provided by user to PatternFlowTcpCtlPshCounter + SetStart(value uint32) PatternFlowTcpCtlPshCounter + // HasStart checks if Start has been set in PatternFlowTcpCtlPshCounter HasStart() bool - // Step returns uint32, set in PatternFlowVlanPriorityCounter. + // Step returns uint32, set in PatternFlowTcpCtlPshCounter. Step() uint32 - // SetStep assigns uint32 provided by user to PatternFlowVlanPriorityCounter - SetStep(value uint32) PatternFlowVlanPriorityCounter - // HasStep checks if Step has been set in PatternFlowVlanPriorityCounter + // SetStep assigns uint32 provided by user to PatternFlowTcpCtlPshCounter + SetStep(value uint32) PatternFlowTcpCtlPshCounter + // HasStep checks if Step has been set in PatternFlowTcpCtlPshCounter HasStep() bool - // Count returns uint32, set in PatternFlowVlanPriorityCounter. + // Count returns uint32, set in PatternFlowTcpCtlPshCounter. Count() uint32 - // SetCount assigns uint32 provided by user to PatternFlowVlanPriorityCounter - SetCount(value uint32) PatternFlowVlanPriorityCounter - // HasCount checks if Count has been set in PatternFlowVlanPriorityCounter + // SetCount assigns uint32 provided by user to PatternFlowTcpCtlPshCounter + SetCount(value uint32) PatternFlowTcpCtlPshCounter + // HasCount checks if Count has been set in PatternFlowTcpCtlPshCounter HasCount() bool } // description is TBD // Start returns a uint32 -func (obj *patternFlowVlanPriorityCounter) Start() uint32 { +func (obj *patternFlowTcpCtlPshCounter) Start() uint32 { return *obj.obj.Start @@ -187540,13 +230697,13 @@ func (obj *patternFlowVlanPriorityCounter) Start() uint32 { // description is TBD // Start returns a uint32 -func (obj *patternFlowVlanPriorityCounter) HasStart() bool { +func (obj *patternFlowTcpCtlPshCounter) HasStart() bool { return obj.obj.Start != nil } // description is TBD -// SetStart sets the uint32 value in the PatternFlowVlanPriorityCounter object -func (obj *patternFlowVlanPriorityCounter) SetStart(value uint32) PatternFlowVlanPriorityCounter { +// SetStart sets the uint32 value in the PatternFlowTcpCtlPshCounter object +func (obj *patternFlowTcpCtlPshCounter) SetStart(value uint32) PatternFlowTcpCtlPshCounter { obj.obj.Start = &value return obj @@ -187554,7 +230711,7 @@ func (obj *patternFlowVlanPriorityCounter) SetStart(value uint32) PatternFlowVla // description is TBD // Step returns a uint32 -func (obj *patternFlowVlanPriorityCounter) Step() uint32 { +func (obj *patternFlowTcpCtlPshCounter) Step() uint32 { return *obj.obj.Step @@ -187562,13 +230719,13 @@ func (obj *patternFlowVlanPriorityCounter) Step() uint32 { // description is TBD // Step returns a uint32 -func (obj *patternFlowVlanPriorityCounter) HasStep() bool { +func (obj *patternFlowTcpCtlPshCounter) HasStep() bool { return obj.obj.Step != nil } // description is TBD -// SetStep sets the uint32 value in the PatternFlowVlanPriorityCounter object -func (obj *patternFlowVlanPriorityCounter) SetStep(value uint32) PatternFlowVlanPriorityCounter { +// SetStep sets the uint32 value in the PatternFlowTcpCtlPshCounter object +func (obj *patternFlowTcpCtlPshCounter) SetStep(value uint32) PatternFlowTcpCtlPshCounter { obj.obj.Step = &value return obj @@ -187576,7 +230733,7 @@ func (obj *patternFlowVlanPriorityCounter) SetStep(value uint32) PatternFlowVlan // description is TBD // Count returns a uint32 -func (obj *patternFlowVlanPriorityCounter) Count() uint32 { +func (obj *patternFlowTcpCtlPshCounter) Count() uint32 { return *obj.obj.Count @@ -187584,56 +230741,56 @@ func (obj *patternFlowVlanPriorityCounter) Count() uint32 { // description is TBD // Count returns a uint32 -func (obj *patternFlowVlanPriorityCounter) HasCount() bool { +func (obj *patternFlowTcpCtlPshCounter) HasCount() bool { return obj.obj.Count != nil } // description is TBD -// SetCount sets the uint32 value in the PatternFlowVlanPriorityCounter object -func (obj *patternFlowVlanPriorityCounter) SetCount(value uint32) PatternFlowVlanPriorityCounter { +// SetCount sets the uint32 value in the PatternFlowTcpCtlPshCounter object +func (obj *patternFlowTcpCtlPshCounter) SetCount(value uint32) PatternFlowTcpCtlPshCounter { obj.obj.Count = &value return obj } -func (obj *patternFlowVlanPriorityCounter) validateObj(vObj *validation, set_default bool) { +func (obj *patternFlowTcpCtlPshCounter) validateObj(vObj *validation, set_default bool) { if set_default { obj.setDefault() } if obj.obj.Start != nil { - if *obj.obj.Start > 7 { + if *obj.obj.Start > 1 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowVlanPriorityCounter.Start <= 7 but Got %d", *obj.obj.Start)) + fmt.Sprintf("0 <= PatternFlowTcpCtlPshCounter.Start <= 1 but Got %d", *obj.obj.Start)) } } if obj.obj.Step != nil { - if *obj.obj.Step > 7 { + if *obj.obj.Step > 1 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowVlanPriorityCounter.Step <= 7 but Got %d", *obj.obj.Step)) + fmt.Sprintf("0 <= PatternFlowTcpCtlPshCounter.Step <= 1 but Got %d", *obj.obj.Step)) } } if obj.obj.Count != nil { - if *obj.obj.Count > 7 { + if *obj.obj.Count > 1 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowVlanPriorityCounter.Count <= 7 but Got %d", *obj.obj.Count)) + fmt.Sprintf("0 <= PatternFlowTcpCtlPshCounter.Count <= 1 but Got %d", *obj.obj.Count)) } } } -func (obj *patternFlowVlanPriorityCounter) setDefault() { +func (obj *patternFlowTcpCtlPshCounter) setDefault() { if obj.obj.Start == nil { obj.SetStart(0) } @@ -187646,29 +230803,29 @@ func (obj *patternFlowVlanPriorityCounter) setDefault() { } -// ***** PatternFlowVlanPriorityMetricTag ***** -type patternFlowVlanPriorityMetricTag struct { +// ***** PatternFlowTcpCtlPshMetricTag ***** +type patternFlowTcpCtlPshMetricTag struct { validation - obj *otg.PatternFlowVlanPriorityMetricTag + obj *otg.PatternFlowTcpCtlPshMetricTag } -func NewPatternFlowVlanPriorityMetricTag() PatternFlowVlanPriorityMetricTag { - obj := patternFlowVlanPriorityMetricTag{obj: &otg.PatternFlowVlanPriorityMetricTag{}} +func NewPatternFlowTcpCtlPshMetricTag() PatternFlowTcpCtlPshMetricTag { + obj := patternFlowTcpCtlPshMetricTag{obj: &otg.PatternFlowTcpCtlPshMetricTag{}} obj.setDefault() return &obj } -func (obj *patternFlowVlanPriorityMetricTag) Msg() *otg.PatternFlowVlanPriorityMetricTag { +func (obj *patternFlowTcpCtlPshMetricTag) Msg() *otg.PatternFlowTcpCtlPshMetricTag { return obj.obj } -func (obj *patternFlowVlanPriorityMetricTag) SetMsg(msg *otg.PatternFlowVlanPriorityMetricTag) PatternFlowVlanPriorityMetricTag { +func (obj *patternFlowTcpCtlPshMetricTag) SetMsg(msg *otg.PatternFlowTcpCtlPshMetricTag) PatternFlowTcpCtlPshMetricTag { proto.Merge(obj.obj, msg) return obj } -func (obj *patternFlowVlanPriorityMetricTag) ToProto() (*otg.PatternFlowVlanPriorityMetricTag, error) { +func (obj *patternFlowTcpCtlPshMetricTag) ToProto() (*otg.PatternFlowTcpCtlPshMetricTag, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -187676,7 +230833,7 @@ func (obj *patternFlowVlanPriorityMetricTag) ToProto() (*otg.PatternFlowVlanPrio return obj.Msg(), nil } -func (obj *patternFlowVlanPriorityMetricTag) FromProto(msg *otg.PatternFlowVlanPriorityMetricTag) (PatternFlowVlanPriorityMetricTag, error) { +func (obj *patternFlowTcpCtlPshMetricTag) FromProto(msg *otg.PatternFlowTcpCtlPshMetricTag) (PatternFlowTcpCtlPshMetricTag, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -187685,7 +230842,7 @@ func (obj *patternFlowVlanPriorityMetricTag) FromProto(msg *otg.PatternFlowVlanP return newObj, nil } -func (obj *patternFlowVlanPriorityMetricTag) ToPbText() (string, error) { +func (obj *patternFlowTcpCtlPshMetricTag) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -187697,7 +230854,7 @@ func (obj *patternFlowVlanPriorityMetricTag) ToPbText() (string, error) { return string(protoMarshal), nil } -func (obj *patternFlowVlanPriorityMetricTag) FromPbText(value string) error { +func (obj *patternFlowTcpCtlPshMetricTag) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj @@ -187710,7 +230867,7 @@ func (obj *patternFlowVlanPriorityMetricTag) FromPbText(value string) error { return retObj } -func (obj *patternFlowVlanPriorityMetricTag) ToYaml() (string, error) { +func (obj *patternFlowTcpCtlPshMetricTag) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -187731,7 +230888,7 @@ func (obj *patternFlowVlanPriorityMetricTag) ToYaml() (string, error) { return string(data), nil } -func (obj *patternFlowVlanPriorityMetricTag) FromYaml(value string) error { +func (obj *patternFlowTcpCtlPshMetricTag) FromYaml(value string) error { if value == "" { value = "{}" } @@ -187756,7 +230913,7 @@ func (obj *patternFlowVlanPriorityMetricTag) FromYaml(value string) error { return nil } -func (obj *patternFlowVlanPriorityMetricTag) ToJson() (string, error) { +func (obj *patternFlowTcpCtlPshMetricTag) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -187774,7 +230931,7 @@ func (obj *patternFlowVlanPriorityMetricTag) ToJson() (string, error) { return string(data), nil } -func (obj *patternFlowVlanPriorityMetricTag) FromJson(value string) error { +func (obj *patternFlowTcpCtlPshMetricTag) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -187795,19 +230952,19 @@ func (obj *patternFlowVlanPriorityMetricTag) FromJson(value string) error { return nil } -func (obj *patternFlowVlanPriorityMetricTag) validateToAndFrom() error { +func (obj *patternFlowTcpCtlPshMetricTag) validateToAndFrom() error { // emptyVars() obj.validateObj(&obj.validation, true) return obj.validationResult() } -func (obj *patternFlowVlanPriorityMetricTag) Validate() error { +func (obj *patternFlowTcpCtlPshMetricTag) Validate() error { // emptyVars() obj.validateObj(&obj.validation, false) return obj.validationResult() } -func (obj *patternFlowVlanPriorityMetricTag) String() string { +func (obj *patternFlowTcpCtlPshMetricTag) String() string { str, err := obj.ToYaml() if err != nil { return err.Error() @@ -187815,12 +230972,12 @@ func (obj *patternFlowVlanPriorityMetricTag) String() string { return str } -func (obj *patternFlowVlanPriorityMetricTag) Clone() (PatternFlowVlanPriorityMetricTag, error) { +func (obj *patternFlowTcpCtlPshMetricTag) Clone() (PatternFlowTcpCtlPshMetricTag, error) { vErr := obj.Validate() if vErr != nil { return nil, vErr } - newObj := NewPatternFlowVlanPriorityMetricTag() + newObj := NewPatternFlowTcpCtlPshMetricTag() data, err := proto.Marshal(obj.Msg()) if err != nil { return nil, err @@ -187832,69 +230989,69 @@ func (obj *patternFlowVlanPriorityMetricTag) Clone() (PatternFlowVlanPriorityMet return newObj, nil } -// PatternFlowVlanPriorityMetricTag is metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. -type PatternFlowVlanPriorityMetricTag interface { +// PatternFlowTcpCtlPshMetricTag is metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. +type PatternFlowTcpCtlPshMetricTag interface { Validation - // Msg marshals PatternFlowVlanPriorityMetricTag to protobuf object *otg.PatternFlowVlanPriorityMetricTag + // Msg marshals PatternFlowTcpCtlPshMetricTag to protobuf object *otg.PatternFlowTcpCtlPshMetricTag // and doesn't set defaults - Msg() *otg.PatternFlowVlanPriorityMetricTag - // SetMsg unmarshals PatternFlowVlanPriorityMetricTag from protobuf object *otg.PatternFlowVlanPriorityMetricTag + Msg() *otg.PatternFlowTcpCtlPshMetricTag + // SetMsg unmarshals PatternFlowTcpCtlPshMetricTag from protobuf object *otg.PatternFlowTcpCtlPshMetricTag // and doesn't set defaults - SetMsg(*otg.PatternFlowVlanPriorityMetricTag) PatternFlowVlanPriorityMetricTag - // ToProto marshals PatternFlowVlanPriorityMetricTag to protobuf object *otg.PatternFlowVlanPriorityMetricTag - ToProto() (*otg.PatternFlowVlanPriorityMetricTag, error) - // ToPbText marshals PatternFlowVlanPriorityMetricTag to protobuf text + SetMsg(*otg.PatternFlowTcpCtlPshMetricTag) PatternFlowTcpCtlPshMetricTag + // ToProto marshals PatternFlowTcpCtlPshMetricTag to protobuf object *otg.PatternFlowTcpCtlPshMetricTag + ToProto() (*otg.PatternFlowTcpCtlPshMetricTag, error) + // ToPbText marshals PatternFlowTcpCtlPshMetricTag to protobuf text ToPbText() (string, error) - // ToYaml marshals PatternFlowVlanPriorityMetricTag to YAML text + // ToYaml marshals PatternFlowTcpCtlPshMetricTag to YAML text ToYaml() (string, error) - // ToJson marshals PatternFlowVlanPriorityMetricTag to JSON text + // ToJson marshals PatternFlowTcpCtlPshMetricTag to JSON text ToJson() (string, error) - // FromProto unmarshals PatternFlowVlanPriorityMetricTag from protobuf object *otg.PatternFlowVlanPriorityMetricTag - FromProto(msg *otg.PatternFlowVlanPriorityMetricTag) (PatternFlowVlanPriorityMetricTag, error) - // FromPbText unmarshals PatternFlowVlanPriorityMetricTag from protobuf text + // FromProto unmarshals PatternFlowTcpCtlPshMetricTag from protobuf object *otg.PatternFlowTcpCtlPshMetricTag + FromProto(msg *otg.PatternFlowTcpCtlPshMetricTag) (PatternFlowTcpCtlPshMetricTag, error) + // FromPbText unmarshals PatternFlowTcpCtlPshMetricTag from protobuf text FromPbText(value string) error - // FromYaml unmarshals PatternFlowVlanPriorityMetricTag from YAML text + // FromYaml unmarshals PatternFlowTcpCtlPshMetricTag from YAML text FromYaml(value string) error - // FromJson unmarshals PatternFlowVlanPriorityMetricTag from JSON text + // FromJson unmarshals PatternFlowTcpCtlPshMetricTag from JSON text FromJson(value string) error - // Validate validates PatternFlowVlanPriorityMetricTag + // Validate validates PatternFlowTcpCtlPshMetricTag Validate() error // A stringer function String() string // Clones the object - Clone() (PatternFlowVlanPriorityMetricTag, error) + Clone() (PatternFlowTcpCtlPshMetricTag, error) validateToAndFrom() error validateObj(vObj *validation, set_default bool) setDefault() - // Name returns string, set in PatternFlowVlanPriorityMetricTag. + // Name returns string, set in PatternFlowTcpCtlPshMetricTag. Name() string - // SetName assigns string provided by user to PatternFlowVlanPriorityMetricTag - SetName(value string) PatternFlowVlanPriorityMetricTag - // Offset returns uint32, set in PatternFlowVlanPriorityMetricTag. + // SetName assigns string provided by user to PatternFlowTcpCtlPshMetricTag + SetName(value string) PatternFlowTcpCtlPshMetricTag + // Offset returns uint32, set in PatternFlowTcpCtlPshMetricTag. Offset() uint32 - // SetOffset assigns uint32 provided by user to PatternFlowVlanPriorityMetricTag - SetOffset(value uint32) PatternFlowVlanPriorityMetricTag - // HasOffset checks if Offset has been set in PatternFlowVlanPriorityMetricTag + // SetOffset assigns uint32 provided by user to PatternFlowTcpCtlPshMetricTag + SetOffset(value uint32) PatternFlowTcpCtlPshMetricTag + // HasOffset checks if Offset has been set in PatternFlowTcpCtlPshMetricTag HasOffset() bool - // Length returns uint32, set in PatternFlowVlanPriorityMetricTag. + // Length returns uint32, set in PatternFlowTcpCtlPshMetricTag. Length() uint32 - // SetLength assigns uint32 provided by user to PatternFlowVlanPriorityMetricTag - SetLength(value uint32) PatternFlowVlanPriorityMetricTag - // HasLength checks if Length has been set in PatternFlowVlanPriorityMetricTag + // SetLength assigns uint32 provided by user to PatternFlowTcpCtlPshMetricTag + SetLength(value uint32) PatternFlowTcpCtlPshMetricTag + // HasLength checks if Length has been set in PatternFlowTcpCtlPshMetricTag HasLength() bool } // Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field // Name returns a string -func (obj *patternFlowVlanPriorityMetricTag) Name() string { +func (obj *patternFlowTcpCtlPshMetricTag) Name() string { return *obj.obj.Name } // Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field -// SetName sets the string value in the PatternFlowVlanPriorityMetricTag object -func (obj *patternFlowVlanPriorityMetricTag) SetName(value string) PatternFlowVlanPriorityMetricTag { +// SetName sets the string value in the PatternFlowTcpCtlPshMetricTag object +func (obj *patternFlowTcpCtlPshMetricTag) SetName(value string) PatternFlowTcpCtlPshMetricTag { obj.obj.Name = &value return obj @@ -187902,7 +231059,7 @@ func (obj *patternFlowVlanPriorityMetricTag) SetName(value string) PatternFlowVl // Offset in bits relative to start of corresponding header field // Offset returns a uint32 -func (obj *patternFlowVlanPriorityMetricTag) Offset() uint32 { +func (obj *patternFlowTcpCtlPshMetricTag) Offset() uint32 { return *obj.obj.Offset @@ -187910,13 +231067,13 @@ func (obj *patternFlowVlanPriorityMetricTag) Offset() uint32 { // Offset in bits relative to start of corresponding header field // Offset returns a uint32 -func (obj *patternFlowVlanPriorityMetricTag) HasOffset() bool { +func (obj *patternFlowTcpCtlPshMetricTag) HasOffset() bool { return obj.obj.Offset != nil } // Offset in bits relative to start of corresponding header field -// SetOffset sets the uint32 value in the PatternFlowVlanPriorityMetricTag object -func (obj *patternFlowVlanPriorityMetricTag) SetOffset(value uint32) PatternFlowVlanPriorityMetricTag { +// SetOffset sets the uint32 value in the PatternFlowTcpCtlPshMetricTag object +func (obj *patternFlowTcpCtlPshMetricTag) SetOffset(value uint32) PatternFlowTcpCtlPshMetricTag { obj.obj.Offset = &value return obj @@ -187924,7 +231081,7 @@ func (obj *patternFlowVlanPriorityMetricTag) SetOffset(value uint32) PatternFlow // Number of bits to track for metrics starting from configured offset of corresponding header field // Length returns a uint32 -func (obj *patternFlowVlanPriorityMetricTag) Length() uint32 { +func (obj *patternFlowTcpCtlPshMetricTag) Length() uint32 { return *obj.obj.Length @@ -187932,83 +231089,83 @@ func (obj *patternFlowVlanPriorityMetricTag) Length() uint32 { // Number of bits to track for metrics starting from configured offset of corresponding header field // Length returns a uint32 -func (obj *patternFlowVlanPriorityMetricTag) HasLength() bool { +func (obj *patternFlowTcpCtlPshMetricTag) HasLength() bool { return obj.obj.Length != nil } // Number of bits to track for metrics starting from configured offset of corresponding header field -// SetLength sets the uint32 value in the PatternFlowVlanPriorityMetricTag object -func (obj *patternFlowVlanPriorityMetricTag) SetLength(value uint32) PatternFlowVlanPriorityMetricTag { +// SetLength sets the uint32 value in the PatternFlowTcpCtlPshMetricTag object +func (obj *patternFlowTcpCtlPshMetricTag) SetLength(value uint32) PatternFlowTcpCtlPshMetricTag { obj.obj.Length = &value return obj } -func (obj *patternFlowVlanPriorityMetricTag) validateObj(vObj *validation, set_default bool) { +func (obj *patternFlowTcpCtlPshMetricTag) validateObj(vObj *validation, set_default bool) { if set_default { obj.setDefault() } // Name is required if obj.obj.Name == nil { - vObj.validationErrors = append(vObj.validationErrors, "Name is required field on interface PatternFlowVlanPriorityMetricTag") + vObj.validationErrors = append(vObj.validationErrors, "Name is required field on interface PatternFlowTcpCtlPshMetricTag") } if obj.obj.Offset != nil { - if *obj.obj.Offset > 2 { + if *obj.obj.Offset > 0 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowVlanPriorityMetricTag.Offset <= 2 but Got %d", *obj.obj.Offset)) + fmt.Sprintf("0 <= PatternFlowTcpCtlPshMetricTag.Offset <= 0 but Got %d", *obj.obj.Offset)) } } if obj.obj.Length != nil { - if *obj.obj.Length < 1 || *obj.obj.Length > 3 { + if *obj.obj.Length < 1 || *obj.obj.Length > 1 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("1 <= PatternFlowVlanPriorityMetricTag.Length <= 3 but Got %d", *obj.obj.Length)) + fmt.Sprintf("1 <= PatternFlowTcpCtlPshMetricTag.Length <= 1 but Got %d", *obj.obj.Length)) } } } -func (obj *patternFlowVlanPriorityMetricTag) setDefault() { +func (obj *patternFlowTcpCtlPshMetricTag) setDefault() { if obj.obj.Offset == nil { obj.SetOffset(0) } if obj.obj.Length == nil { - obj.SetLength(3) + obj.SetLength(1) } } -// ***** PatternFlowVlanCfiCounter ***** -type patternFlowVlanCfiCounter struct { +// ***** PatternFlowTcpCtlRstCounter ***** +type patternFlowTcpCtlRstCounter struct { validation - obj *otg.PatternFlowVlanCfiCounter + obj *otg.PatternFlowTcpCtlRstCounter } -func NewPatternFlowVlanCfiCounter() PatternFlowVlanCfiCounter { - obj := patternFlowVlanCfiCounter{obj: &otg.PatternFlowVlanCfiCounter{}} +func NewPatternFlowTcpCtlRstCounter() PatternFlowTcpCtlRstCounter { + obj := patternFlowTcpCtlRstCounter{obj: &otg.PatternFlowTcpCtlRstCounter{}} obj.setDefault() return &obj } -func (obj *patternFlowVlanCfiCounter) Msg() *otg.PatternFlowVlanCfiCounter { +func (obj *patternFlowTcpCtlRstCounter) Msg() *otg.PatternFlowTcpCtlRstCounter { return obj.obj } -func (obj *patternFlowVlanCfiCounter) SetMsg(msg *otg.PatternFlowVlanCfiCounter) PatternFlowVlanCfiCounter { +func (obj *patternFlowTcpCtlRstCounter) SetMsg(msg *otg.PatternFlowTcpCtlRstCounter) PatternFlowTcpCtlRstCounter { proto.Merge(obj.obj, msg) return obj } -func (obj *patternFlowVlanCfiCounter) ToProto() (*otg.PatternFlowVlanCfiCounter, error) { +func (obj *patternFlowTcpCtlRstCounter) ToProto() (*otg.PatternFlowTcpCtlRstCounter, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -188016,7 +231173,7 @@ func (obj *patternFlowVlanCfiCounter) ToProto() (*otg.PatternFlowVlanCfiCounter, return obj.Msg(), nil } -func (obj *patternFlowVlanCfiCounter) FromProto(msg *otg.PatternFlowVlanCfiCounter) (PatternFlowVlanCfiCounter, error) { +func (obj *patternFlowTcpCtlRstCounter) FromProto(msg *otg.PatternFlowTcpCtlRstCounter) (PatternFlowTcpCtlRstCounter, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -188025,7 +231182,7 @@ func (obj *patternFlowVlanCfiCounter) FromProto(msg *otg.PatternFlowVlanCfiCount return newObj, nil } -func (obj *patternFlowVlanCfiCounter) ToPbText() (string, error) { +func (obj *patternFlowTcpCtlRstCounter) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -188037,7 +231194,7 @@ func (obj *patternFlowVlanCfiCounter) ToPbText() (string, error) { return string(protoMarshal), nil } -func (obj *patternFlowVlanCfiCounter) FromPbText(value string) error { +func (obj *patternFlowTcpCtlRstCounter) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj @@ -188050,7 +231207,7 @@ func (obj *patternFlowVlanCfiCounter) FromPbText(value string) error { return retObj } -func (obj *patternFlowVlanCfiCounter) ToYaml() (string, error) { +func (obj *patternFlowTcpCtlRstCounter) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -188071,7 +231228,7 @@ func (obj *patternFlowVlanCfiCounter) ToYaml() (string, error) { return string(data), nil } -func (obj *patternFlowVlanCfiCounter) FromYaml(value string) error { +func (obj *patternFlowTcpCtlRstCounter) FromYaml(value string) error { if value == "" { value = "{}" } @@ -188096,7 +231253,7 @@ func (obj *patternFlowVlanCfiCounter) FromYaml(value string) error { return nil } -func (obj *patternFlowVlanCfiCounter) ToJson() (string, error) { +func (obj *patternFlowTcpCtlRstCounter) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -188114,7 +231271,7 @@ func (obj *patternFlowVlanCfiCounter) ToJson() (string, error) { return string(data), nil } -func (obj *patternFlowVlanCfiCounter) FromJson(value string) error { +func (obj *patternFlowTcpCtlRstCounter) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -188135,19 +231292,19 @@ func (obj *patternFlowVlanCfiCounter) FromJson(value string) error { return nil } -func (obj *patternFlowVlanCfiCounter) validateToAndFrom() error { +func (obj *patternFlowTcpCtlRstCounter) validateToAndFrom() error { // emptyVars() obj.validateObj(&obj.validation, true) return obj.validationResult() } -func (obj *patternFlowVlanCfiCounter) Validate() error { +func (obj *patternFlowTcpCtlRstCounter) Validate() error { // emptyVars() obj.validateObj(&obj.validation, false) return obj.validationResult() } -func (obj *patternFlowVlanCfiCounter) String() string { +func (obj *patternFlowTcpCtlRstCounter) String() string { str, err := obj.ToYaml() if err != nil { return err.Error() @@ -188155,12 +231312,12 @@ func (obj *patternFlowVlanCfiCounter) String() string { return str } -func (obj *patternFlowVlanCfiCounter) Clone() (PatternFlowVlanCfiCounter, error) { +func (obj *patternFlowTcpCtlRstCounter) Clone() (PatternFlowTcpCtlRstCounter, error) { vErr := obj.Validate() if vErr != nil { return nil, vErr } - newObj := NewPatternFlowVlanCfiCounter() + newObj := NewPatternFlowTcpCtlRstCounter() data, err := proto.Marshal(obj.Msg()) if err != nil { return nil, err @@ -188172,63 +231329,63 @@ func (obj *patternFlowVlanCfiCounter) Clone() (PatternFlowVlanCfiCounter, error) return newObj, nil } -// PatternFlowVlanCfiCounter is integer counter pattern -type PatternFlowVlanCfiCounter interface { +// PatternFlowTcpCtlRstCounter is integer counter pattern +type PatternFlowTcpCtlRstCounter interface { Validation - // Msg marshals PatternFlowVlanCfiCounter to protobuf object *otg.PatternFlowVlanCfiCounter + // Msg marshals PatternFlowTcpCtlRstCounter to protobuf object *otg.PatternFlowTcpCtlRstCounter // and doesn't set defaults - Msg() *otg.PatternFlowVlanCfiCounter - // SetMsg unmarshals PatternFlowVlanCfiCounter from protobuf object *otg.PatternFlowVlanCfiCounter + Msg() *otg.PatternFlowTcpCtlRstCounter + // SetMsg unmarshals PatternFlowTcpCtlRstCounter from protobuf object *otg.PatternFlowTcpCtlRstCounter // and doesn't set defaults - SetMsg(*otg.PatternFlowVlanCfiCounter) PatternFlowVlanCfiCounter - // ToProto marshals PatternFlowVlanCfiCounter to protobuf object *otg.PatternFlowVlanCfiCounter - ToProto() (*otg.PatternFlowVlanCfiCounter, error) - // ToPbText marshals PatternFlowVlanCfiCounter to protobuf text + SetMsg(*otg.PatternFlowTcpCtlRstCounter) PatternFlowTcpCtlRstCounter + // ToProto marshals PatternFlowTcpCtlRstCounter to protobuf object *otg.PatternFlowTcpCtlRstCounter + ToProto() (*otg.PatternFlowTcpCtlRstCounter, error) + // ToPbText marshals PatternFlowTcpCtlRstCounter to protobuf text ToPbText() (string, error) - // ToYaml marshals PatternFlowVlanCfiCounter to YAML text + // ToYaml marshals PatternFlowTcpCtlRstCounter to YAML text ToYaml() (string, error) - // ToJson marshals PatternFlowVlanCfiCounter to JSON text + // ToJson marshals PatternFlowTcpCtlRstCounter to JSON text ToJson() (string, error) - // FromProto unmarshals PatternFlowVlanCfiCounter from protobuf object *otg.PatternFlowVlanCfiCounter - FromProto(msg *otg.PatternFlowVlanCfiCounter) (PatternFlowVlanCfiCounter, error) - // FromPbText unmarshals PatternFlowVlanCfiCounter from protobuf text + // FromProto unmarshals PatternFlowTcpCtlRstCounter from protobuf object *otg.PatternFlowTcpCtlRstCounter + FromProto(msg *otg.PatternFlowTcpCtlRstCounter) (PatternFlowTcpCtlRstCounter, error) + // FromPbText unmarshals PatternFlowTcpCtlRstCounter from protobuf text FromPbText(value string) error - // FromYaml unmarshals PatternFlowVlanCfiCounter from YAML text + // FromYaml unmarshals PatternFlowTcpCtlRstCounter from YAML text FromYaml(value string) error - // FromJson unmarshals PatternFlowVlanCfiCounter from JSON text + // FromJson unmarshals PatternFlowTcpCtlRstCounter from JSON text FromJson(value string) error - // Validate validates PatternFlowVlanCfiCounter + // Validate validates PatternFlowTcpCtlRstCounter Validate() error // A stringer function String() string // Clones the object - Clone() (PatternFlowVlanCfiCounter, error) + Clone() (PatternFlowTcpCtlRstCounter, error) validateToAndFrom() error validateObj(vObj *validation, set_default bool) setDefault() - // Start returns uint32, set in PatternFlowVlanCfiCounter. + // Start returns uint32, set in PatternFlowTcpCtlRstCounter. Start() uint32 - // SetStart assigns uint32 provided by user to PatternFlowVlanCfiCounter - SetStart(value uint32) PatternFlowVlanCfiCounter - // HasStart checks if Start has been set in PatternFlowVlanCfiCounter + // SetStart assigns uint32 provided by user to PatternFlowTcpCtlRstCounter + SetStart(value uint32) PatternFlowTcpCtlRstCounter + // HasStart checks if Start has been set in PatternFlowTcpCtlRstCounter HasStart() bool - // Step returns uint32, set in PatternFlowVlanCfiCounter. + // Step returns uint32, set in PatternFlowTcpCtlRstCounter. Step() uint32 - // SetStep assigns uint32 provided by user to PatternFlowVlanCfiCounter - SetStep(value uint32) PatternFlowVlanCfiCounter - // HasStep checks if Step has been set in PatternFlowVlanCfiCounter + // SetStep assigns uint32 provided by user to PatternFlowTcpCtlRstCounter + SetStep(value uint32) PatternFlowTcpCtlRstCounter + // HasStep checks if Step has been set in PatternFlowTcpCtlRstCounter HasStep() bool - // Count returns uint32, set in PatternFlowVlanCfiCounter. + // Count returns uint32, set in PatternFlowTcpCtlRstCounter. Count() uint32 - // SetCount assigns uint32 provided by user to PatternFlowVlanCfiCounter - SetCount(value uint32) PatternFlowVlanCfiCounter - // HasCount checks if Count has been set in PatternFlowVlanCfiCounter + // SetCount assigns uint32 provided by user to PatternFlowTcpCtlRstCounter + SetCount(value uint32) PatternFlowTcpCtlRstCounter + // HasCount checks if Count has been set in PatternFlowTcpCtlRstCounter HasCount() bool } // description is TBD // Start returns a uint32 -func (obj *patternFlowVlanCfiCounter) Start() uint32 { +func (obj *patternFlowTcpCtlRstCounter) Start() uint32 { return *obj.obj.Start @@ -188236,13 +231393,13 @@ func (obj *patternFlowVlanCfiCounter) Start() uint32 { // description is TBD // Start returns a uint32 -func (obj *patternFlowVlanCfiCounter) HasStart() bool { +func (obj *patternFlowTcpCtlRstCounter) HasStart() bool { return obj.obj.Start != nil } // description is TBD -// SetStart sets the uint32 value in the PatternFlowVlanCfiCounter object -func (obj *patternFlowVlanCfiCounter) SetStart(value uint32) PatternFlowVlanCfiCounter { +// SetStart sets the uint32 value in the PatternFlowTcpCtlRstCounter object +func (obj *patternFlowTcpCtlRstCounter) SetStart(value uint32) PatternFlowTcpCtlRstCounter { obj.obj.Start = &value return obj @@ -188250,7 +231407,7 @@ func (obj *patternFlowVlanCfiCounter) SetStart(value uint32) PatternFlowVlanCfiC // description is TBD // Step returns a uint32 -func (obj *patternFlowVlanCfiCounter) Step() uint32 { +func (obj *patternFlowTcpCtlRstCounter) Step() uint32 { return *obj.obj.Step @@ -188258,13 +231415,13 @@ func (obj *patternFlowVlanCfiCounter) Step() uint32 { // description is TBD // Step returns a uint32 -func (obj *patternFlowVlanCfiCounter) HasStep() bool { +func (obj *patternFlowTcpCtlRstCounter) HasStep() bool { return obj.obj.Step != nil } // description is TBD -// SetStep sets the uint32 value in the PatternFlowVlanCfiCounter object -func (obj *patternFlowVlanCfiCounter) SetStep(value uint32) PatternFlowVlanCfiCounter { +// SetStep sets the uint32 value in the PatternFlowTcpCtlRstCounter object +func (obj *patternFlowTcpCtlRstCounter) SetStep(value uint32) PatternFlowTcpCtlRstCounter { obj.obj.Step = &value return obj @@ -188272,7 +231429,7 @@ func (obj *patternFlowVlanCfiCounter) SetStep(value uint32) PatternFlowVlanCfiCo // description is TBD // Count returns a uint32 -func (obj *patternFlowVlanCfiCounter) Count() uint32 { +func (obj *patternFlowTcpCtlRstCounter) Count() uint32 { return *obj.obj.Count @@ -188280,19 +231437,19 @@ func (obj *patternFlowVlanCfiCounter) Count() uint32 { // description is TBD // Count returns a uint32 -func (obj *patternFlowVlanCfiCounter) HasCount() bool { +func (obj *patternFlowTcpCtlRstCounter) HasCount() bool { return obj.obj.Count != nil } // description is TBD -// SetCount sets the uint32 value in the PatternFlowVlanCfiCounter object -func (obj *patternFlowVlanCfiCounter) SetCount(value uint32) PatternFlowVlanCfiCounter { +// SetCount sets the uint32 value in the PatternFlowTcpCtlRstCounter object +func (obj *patternFlowTcpCtlRstCounter) SetCount(value uint32) PatternFlowTcpCtlRstCounter { obj.obj.Count = &value return obj } -func (obj *patternFlowVlanCfiCounter) validateObj(vObj *validation, set_default bool) { +func (obj *patternFlowTcpCtlRstCounter) validateObj(vObj *validation, set_default bool) { if set_default { obj.setDefault() } @@ -188302,7 +231459,7 @@ func (obj *patternFlowVlanCfiCounter) validateObj(vObj *validation, set_default if *obj.obj.Start > 1 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowVlanCfiCounter.Start <= 1 but Got %d", *obj.obj.Start)) + fmt.Sprintf("0 <= PatternFlowTcpCtlRstCounter.Start <= 1 but Got %d", *obj.obj.Start)) } } @@ -188312,7 +231469,7 @@ func (obj *patternFlowVlanCfiCounter) validateObj(vObj *validation, set_default if *obj.obj.Step > 1 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowVlanCfiCounter.Step <= 1 but Got %d", *obj.obj.Step)) + fmt.Sprintf("0 <= PatternFlowTcpCtlRstCounter.Step <= 1 but Got %d", *obj.obj.Step)) } } @@ -188322,14 +231479,14 @@ func (obj *patternFlowVlanCfiCounter) validateObj(vObj *validation, set_default if *obj.obj.Count > 1 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowVlanCfiCounter.Count <= 1 but Got %d", *obj.obj.Count)) + fmt.Sprintf("0 <= PatternFlowTcpCtlRstCounter.Count <= 1 but Got %d", *obj.obj.Count)) } } } -func (obj *patternFlowVlanCfiCounter) setDefault() { +func (obj *patternFlowTcpCtlRstCounter) setDefault() { if obj.obj.Start == nil { obj.SetStart(0) } @@ -188342,29 +231499,29 @@ func (obj *patternFlowVlanCfiCounter) setDefault() { } -// ***** PatternFlowVlanCfiMetricTag ***** -type patternFlowVlanCfiMetricTag struct { +// ***** PatternFlowTcpCtlRstMetricTag ***** +type patternFlowTcpCtlRstMetricTag struct { validation - obj *otg.PatternFlowVlanCfiMetricTag + obj *otg.PatternFlowTcpCtlRstMetricTag } -func NewPatternFlowVlanCfiMetricTag() PatternFlowVlanCfiMetricTag { - obj := patternFlowVlanCfiMetricTag{obj: &otg.PatternFlowVlanCfiMetricTag{}} +func NewPatternFlowTcpCtlRstMetricTag() PatternFlowTcpCtlRstMetricTag { + obj := patternFlowTcpCtlRstMetricTag{obj: &otg.PatternFlowTcpCtlRstMetricTag{}} obj.setDefault() return &obj } -func (obj *patternFlowVlanCfiMetricTag) Msg() *otg.PatternFlowVlanCfiMetricTag { +func (obj *patternFlowTcpCtlRstMetricTag) Msg() *otg.PatternFlowTcpCtlRstMetricTag { return obj.obj } -func (obj *patternFlowVlanCfiMetricTag) SetMsg(msg *otg.PatternFlowVlanCfiMetricTag) PatternFlowVlanCfiMetricTag { +func (obj *patternFlowTcpCtlRstMetricTag) SetMsg(msg *otg.PatternFlowTcpCtlRstMetricTag) PatternFlowTcpCtlRstMetricTag { proto.Merge(obj.obj, msg) return obj } -func (obj *patternFlowVlanCfiMetricTag) ToProto() (*otg.PatternFlowVlanCfiMetricTag, error) { +func (obj *patternFlowTcpCtlRstMetricTag) ToProto() (*otg.PatternFlowTcpCtlRstMetricTag, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -188372,7 +231529,7 @@ func (obj *patternFlowVlanCfiMetricTag) ToProto() (*otg.PatternFlowVlanCfiMetric return obj.Msg(), nil } -func (obj *patternFlowVlanCfiMetricTag) FromProto(msg *otg.PatternFlowVlanCfiMetricTag) (PatternFlowVlanCfiMetricTag, error) { +func (obj *patternFlowTcpCtlRstMetricTag) FromProto(msg *otg.PatternFlowTcpCtlRstMetricTag) (PatternFlowTcpCtlRstMetricTag, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -188381,7 +231538,7 @@ func (obj *patternFlowVlanCfiMetricTag) FromProto(msg *otg.PatternFlowVlanCfiMet return newObj, nil } -func (obj *patternFlowVlanCfiMetricTag) ToPbText() (string, error) { +func (obj *patternFlowTcpCtlRstMetricTag) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -188393,7 +231550,7 @@ func (obj *patternFlowVlanCfiMetricTag) ToPbText() (string, error) { return string(protoMarshal), nil } -func (obj *patternFlowVlanCfiMetricTag) FromPbText(value string) error { +func (obj *patternFlowTcpCtlRstMetricTag) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj @@ -188406,7 +231563,7 @@ func (obj *patternFlowVlanCfiMetricTag) FromPbText(value string) error { return retObj } -func (obj *patternFlowVlanCfiMetricTag) ToYaml() (string, error) { +func (obj *patternFlowTcpCtlRstMetricTag) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -188427,7 +231584,7 @@ func (obj *patternFlowVlanCfiMetricTag) ToYaml() (string, error) { return string(data), nil } -func (obj *patternFlowVlanCfiMetricTag) FromYaml(value string) error { +func (obj *patternFlowTcpCtlRstMetricTag) FromYaml(value string) error { if value == "" { value = "{}" } @@ -188452,7 +231609,7 @@ func (obj *patternFlowVlanCfiMetricTag) FromYaml(value string) error { return nil } -func (obj *patternFlowVlanCfiMetricTag) ToJson() (string, error) { +func (obj *patternFlowTcpCtlRstMetricTag) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -188470,7 +231627,7 @@ func (obj *patternFlowVlanCfiMetricTag) ToJson() (string, error) { return string(data), nil } -func (obj *patternFlowVlanCfiMetricTag) FromJson(value string) error { +func (obj *patternFlowTcpCtlRstMetricTag) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -188491,19 +231648,19 @@ func (obj *patternFlowVlanCfiMetricTag) FromJson(value string) error { return nil } -func (obj *patternFlowVlanCfiMetricTag) validateToAndFrom() error { +func (obj *patternFlowTcpCtlRstMetricTag) validateToAndFrom() error { // emptyVars() obj.validateObj(&obj.validation, true) return obj.validationResult() } -func (obj *patternFlowVlanCfiMetricTag) Validate() error { +func (obj *patternFlowTcpCtlRstMetricTag) Validate() error { // emptyVars() obj.validateObj(&obj.validation, false) return obj.validationResult() } -func (obj *patternFlowVlanCfiMetricTag) String() string { +func (obj *patternFlowTcpCtlRstMetricTag) String() string { str, err := obj.ToYaml() if err != nil { return err.Error() @@ -188511,12 +231668,12 @@ func (obj *patternFlowVlanCfiMetricTag) String() string { return str } -func (obj *patternFlowVlanCfiMetricTag) Clone() (PatternFlowVlanCfiMetricTag, error) { +func (obj *patternFlowTcpCtlRstMetricTag) Clone() (PatternFlowTcpCtlRstMetricTag, error) { vErr := obj.Validate() if vErr != nil { return nil, vErr } - newObj := NewPatternFlowVlanCfiMetricTag() + newObj := NewPatternFlowTcpCtlRstMetricTag() data, err := proto.Marshal(obj.Msg()) if err != nil { return nil, err @@ -188528,69 +231685,69 @@ func (obj *patternFlowVlanCfiMetricTag) Clone() (PatternFlowVlanCfiMetricTag, er return newObj, nil } -// PatternFlowVlanCfiMetricTag is metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. -type PatternFlowVlanCfiMetricTag interface { +// PatternFlowTcpCtlRstMetricTag is metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. +type PatternFlowTcpCtlRstMetricTag interface { Validation - // Msg marshals PatternFlowVlanCfiMetricTag to protobuf object *otg.PatternFlowVlanCfiMetricTag + // Msg marshals PatternFlowTcpCtlRstMetricTag to protobuf object *otg.PatternFlowTcpCtlRstMetricTag // and doesn't set defaults - Msg() *otg.PatternFlowVlanCfiMetricTag - // SetMsg unmarshals PatternFlowVlanCfiMetricTag from protobuf object *otg.PatternFlowVlanCfiMetricTag + Msg() *otg.PatternFlowTcpCtlRstMetricTag + // SetMsg unmarshals PatternFlowTcpCtlRstMetricTag from protobuf object *otg.PatternFlowTcpCtlRstMetricTag // and doesn't set defaults - SetMsg(*otg.PatternFlowVlanCfiMetricTag) PatternFlowVlanCfiMetricTag - // ToProto marshals PatternFlowVlanCfiMetricTag to protobuf object *otg.PatternFlowVlanCfiMetricTag - ToProto() (*otg.PatternFlowVlanCfiMetricTag, error) - // ToPbText marshals PatternFlowVlanCfiMetricTag to protobuf text + SetMsg(*otg.PatternFlowTcpCtlRstMetricTag) PatternFlowTcpCtlRstMetricTag + // ToProto marshals PatternFlowTcpCtlRstMetricTag to protobuf object *otg.PatternFlowTcpCtlRstMetricTag + ToProto() (*otg.PatternFlowTcpCtlRstMetricTag, error) + // ToPbText marshals PatternFlowTcpCtlRstMetricTag to protobuf text ToPbText() (string, error) - // ToYaml marshals PatternFlowVlanCfiMetricTag to YAML text + // ToYaml marshals PatternFlowTcpCtlRstMetricTag to YAML text ToYaml() (string, error) - // ToJson marshals PatternFlowVlanCfiMetricTag to JSON text + // ToJson marshals PatternFlowTcpCtlRstMetricTag to JSON text ToJson() (string, error) - // FromProto unmarshals PatternFlowVlanCfiMetricTag from protobuf object *otg.PatternFlowVlanCfiMetricTag - FromProto(msg *otg.PatternFlowVlanCfiMetricTag) (PatternFlowVlanCfiMetricTag, error) - // FromPbText unmarshals PatternFlowVlanCfiMetricTag from protobuf text + // FromProto unmarshals PatternFlowTcpCtlRstMetricTag from protobuf object *otg.PatternFlowTcpCtlRstMetricTag + FromProto(msg *otg.PatternFlowTcpCtlRstMetricTag) (PatternFlowTcpCtlRstMetricTag, error) + // FromPbText unmarshals PatternFlowTcpCtlRstMetricTag from protobuf text FromPbText(value string) error - // FromYaml unmarshals PatternFlowVlanCfiMetricTag from YAML text + // FromYaml unmarshals PatternFlowTcpCtlRstMetricTag from YAML text FromYaml(value string) error - // FromJson unmarshals PatternFlowVlanCfiMetricTag from JSON text + // FromJson unmarshals PatternFlowTcpCtlRstMetricTag from JSON text FromJson(value string) error - // Validate validates PatternFlowVlanCfiMetricTag + // Validate validates PatternFlowTcpCtlRstMetricTag Validate() error // A stringer function String() string // Clones the object - Clone() (PatternFlowVlanCfiMetricTag, error) + Clone() (PatternFlowTcpCtlRstMetricTag, error) validateToAndFrom() error validateObj(vObj *validation, set_default bool) setDefault() - // Name returns string, set in PatternFlowVlanCfiMetricTag. + // Name returns string, set in PatternFlowTcpCtlRstMetricTag. Name() string - // SetName assigns string provided by user to PatternFlowVlanCfiMetricTag - SetName(value string) PatternFlowVlanCfiMetricTag - // Offset returns uint32, set in PatternFlowVlanCfiMetricTag. + // SetName assigns string provided by user to PatternFlowTcpCtlRstMetricTag + SetName(value string) PatternFlowTcpCtlRstMetricTag + // Offset returns uint32, set in PatternFlowTcpCtlRstMetricTag. Offset() uint32 - // SetOffset assigns uint32 provided by user to PatternFlowVlanCfiMetricTag - SetOffset(value uint32) PatternFlowVlanCfiMetricTag - // HasOffset checks if Offset has been set in PatternFlowVlanCfiMetricTag + // SetOffset assigns uint32 provided by user to PatternFlowTcpCtlRstMetricTag + SetOffset(value uint32) PatternFlowTcpCtlRstMetricTag + // HasOffset checks if Offset has been set in PatternFlowTcpCtlRstMetricTag HasOffset() bool - // Length returns uint32, set in PatternFlowVlanCfiMetricTag. + // Length returns uint32, set in PatternFlowTcpCtlRstMetricTag. Length() uint32 - // SetLength assigns uint32 provided by user to PatternFlowVlanCfiMetricTag - SetLength(value uint32) PatternFlowVlanCfiMetricTag - // HasLength checks if Length has been set in PatternFlowVlanCfiMetricTag + // SetLength assigns uint32 provided by user to PatternFlowTcpCtlRstMetricTag + SetLength(value uint32) PatternFlowTcpCtlRstMetricTag + // HasLength checks if Length has been set in PatternFlowTcpCtlRstMetricTag HasLength() bool } // Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field // Name returns a string -func (obj *patternFlowVlanCfiMetricTag) Name() string { +func (obj *patternFlowTcpCtlRstMetricTag) Name() string { return *obj.obj.Name } // Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field -// SetName sets the string value in the PatternFlowVlanCfiMetricTag object -func (obj *patternFlowVlanCfiMetricTag) SetName(value string) PatternFlowVlanCfiMetricTag { +// SetName sets the string value in the PatternFlowTcpCtlRstMetricTag object +func (obj *patternFlowTcpCtlRstMetricTag) SetName(value string) PatternFlowTcpCtlRstMetricTag { obj.obj.Name = &value return obj @@ -188598,7 +231755,7 @@ func (obj *patternFlowVlanCfiMetricTag) SetName(value string) PatternFlowVlanCfi // Offset in bits relative to start of corresponding header field // Offset returns a uint32 -func (obj *patternFlowVlanCfiMetricTag) Offset() uint32 { +func (obj *patternFlowTcpCtlRstMetricTag) Offset() uint32 { return *obj.obj.Offset @@ -188606,13 +231763,13 @@ func (obj *patternFlowVlanCfiMetricTag) Offset() uint32 { // Offset in bits relative to start of corresponding header field // Offset returns a uint32 -func (obj *patternFlowVlanCfiMetricTag) HasOffset() bool { +func (obj *patternFlowTcpCtlRstMetricTag) HasOffset() bool { return obj.obj.Offset != nil } // Offset in bits relative to start of corresponding header field -// SetOffset sets the uint32 value in the PatternFlowVlanCfiMetricTag object -func (obj *patternFlowVlanCfiMetricTag) SetOffset(value uint32) PatternFlowVlanCfiMetricTag { +// SetOffset sets the uint32 value in the PatternFlowTcpCtlRstMetricTag object +func (obj *patternFlowTcpCtlRstMetricTag) SetOffset(value uint32) PatternFlowTcpCtlRstMetricTag { obj.obj.Offset = &value return obj @@ -188620,7 +231777,7 @@ func (obj *patternFlowVlanCfiMetricTag) SetOffset(value uint32) PatternFlowVlanC // Number of bits to track for metrics starting from configured offset of corresponding header field // Length returns a uint32 -func (obj *patternFlowVlanCfiMetricTag) Length() uint32 { +func (obj *patternFlowTcpCtlRstMetricTag) Length() uint32 { return *obj.obj.Length @@ -188628,26 +231785,26 @@ func (obj *patternFlowVlanCfiMetricTag) Length() uint32 { // Number of bits to track for metrics starting from configured offset of corresponding header field // Length returns a uint32 -func (obj *patternFlowVlanCfiMetricTag) HasLength() bool { +func (obj *patternFlowTcpCtlRstMetricTag) HasLength() bool { return obj.obj.Length != nil } // Number of bits to track for metrics starting from configured offset of corresponding header field -// SetLength sets the uint32 value in the PatternFlowVlanCfiMetricTag object -func (obj *patternFlowVlanCfiMetricTag) SetLength(value uint32) PatternFlowVlanCfiMetricTag { +// SetLength sets the uint32 value in the PatternFlowTcpCtlRstMetricTag object +func (obj *patternFlowTcpCtlRstMetricTag) SetLength(value uint32) PatternFlowTcpCtlRstMetricTag { obj.obj.Length = &value return obj } -func (obj *patternFlowVlanCfiMetricTag) validateObj(vObj *validation, set_default bool) { +func (obj *patternFlowTcpCtlRstMetricTag) validateObj(vObj *validation, set_default bool) { if set_default { obj.setDefault() } // Name is required if obj.obj.Name == nil { - vObj.validationErrors = append(vObj.validationErrors, "Name is required field on interface PatternFlowVlanCfiMetricTag") + vObj.validationErrors = append(vObj.validationErrors, "Name is required field on interface PatternFlowTcpCtlRstMetricTag") } if obj.obj.Offset != nil { @@ -188655,7 +231812,7 @@ func (obj *patternFlowVlanCfiMetricTag) validateObj(vObj *validation, set_defaul if *obj.obj.Offset > 0 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowVlanCfiMetricTag.Offset <= 0 but Got %d", *obj.obj.Offset)) + fmt.Sprintf("0 <= PatternFlowTcpCtlRstMetricTag.Offset <= 0 but Got %d", *obj.obj.Offset)) } } @@ -188665,14 +231822,14 @@ func (obj *patternFlowVlanCfiMetricTag) validateObj(vObj *validation, set_defaul if *obj.obj.Length < 1 || *obj.obj.Length > 1 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("1 <= PatternFlowVlanCfiMetricTag.Length <= 1 but Got %d", *obj.obj.Length)) + fmt.Sprintf("1 <= PatternFlowTcpCtlRstMetricTag.Length <= 1 but Got %d", *obj.obj.Length)) } } } -func (obj *patternFlowVlanCfiMetricTag) setDefault() { +func (obj *patternFlowTcpCtlRstMetricTag) setDefault() { if obj.obj.Offset == nil { obj.SetOffset(0) } @@ -188682,29 +231839,29 @@ func (obj *patternFlowVlanCfiMetricTag) setDefault() { } -// ***** PatternFlowVlanIdCounter ***** -type patternFlowVlanIdCounter struct { +// ***** PatternFlowTcpCtlSynCounter ***** +type patternFlowTcpCtlSynCounter struct { validation - obj *otg.PatternFlowVlanIdCounter + obj *otg.PatternFlowTcpCtlSynCounter } -func NewPatternFlowVlanIdCounter() PatternFlowVlanIdCounter { - obj := patternFlowVlanIdCounter{obj: &otg.PatternFlowVlanIdCounter{}} +func NewPatternFlowTcpCtlSynCounter() PatternFlowTcpCtlSynCounter { + obj := patternFlowTcpCtlSynCounter{obj: &otg.PatternFlowTcpCtlSynCounter{}} obj.setDefault() return &obj } -func (obj *patternFlowVlanIdCounter) Msg() *otg.PatternFlowVlanIdCounter { +func (obj *patternFlowTcpCtlSynCounter) Msg() *otg.PatternFlowTcpCtlSynCounter { return obj.obj } -func (obj *patternFlowVlanIdCounter) SetMsg(msg *otg.PatternFlowVlanIdCounter) PatternFlowVlanIdCounter { +func (obj *patternFlowTcpCtlSynCounter) SetMsg(msg *otg.PatternFlowTcpCtlSynCounter) PatternFlowTcpCtlSynCounter { proto.Merge(obj.obj, msg) return obj } -func (obj *patternFlowVlanIdCounter) ToProto() (*otg.PatternFlowVlanIdCounter, error) { +func (obj *patternFlowTcpCtlSynCounter) ToProto() (*otg.PatternFlowTcpCtlSynCounter, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -188712,7 +231869,7 @@ func (obj *patternFlowVlanIdCounter) ToProto() (*otg.PatternFlowVlanIdCounter, e return obj.Msg(), nil } -func (obj *patternFlowVlanIdCounter) FromProto(msg *otg.PatternFlowVlanIdCounter) (PatternFlowVlanIdCounter, error) { +func (obj *patternFlowTcpCtlSynCounter) FromProto(msg *otg.PatternFlowTcpCtlSynCounter) (PatternFlowTcpCtlSynCounter, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -188721,7 +231878,7 @@ func (obj *patternFlowVlanIdCounter) FromProto(msg *otg.PatternFlowVlanIdCounter return newObj, nil } -func (obj *patternFlowVlanIdCounter) ToPbText() (string, error) { +func (obj *patternFlowTcpCtlSynCounter) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -188733,7 +231890,7 @@ func (obj *patternFlowVlanIdCounter) ToPbText() (string, error) { return string(protoMarshal), nil } -func (obj *patternFlowVlanIdCounter) FromPbText(value string) error { +func (obj *patternFlowTcpCtlSynCounter) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj @@ -188746,7 +231903,7 @@ func (obj *patternFlowVlanIdCounter) FromPbText(value string) error { return retObj } -func (obj *patternFlowVlanIdCounter) ToYaml() (string, error) { +func (obj *patternFlowTcpCtlSynCounter) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -188767,7 +231924,7 @@ func (obj *patternFlowVlanIdCounter) ToYaml() (string, error) { return string(data), nil } -func (obj *patternFlowVlanIdCounter) FromYaml(value string) error { +func (obj *patternFlowTcpCtlSynCounter) FromYaml(value string) error { if value == "" { value = "{}" } @@ -188792,7 +231949,7 @@ func (obj *patternFlowVlanIdCounter) FromYaml(value string) error { return nil } -func (obj *patternFlowVlanIdCounter) ToJson() (string, error) { +func (obj *patternFlowTcpCtlSynCounter) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -188810,7 +231967,7 @@ func (obj *patternFlowVlanIdCounter) ToJson() (string, error) { return string(data), nil } -func (obj *patternFlowVlanIdCounter) FromJson(value string) error { +func (obj *patternFlowTcpCtlSynCounter) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -188831,19 +231988,19 @@ func (obj *patternFlowVlanIdCounter) FromJson(value string) error { return nil } -func (obj *patternFlowVlanIdCounter) validateToAndFrom() error { +func (obj *patternFlowTcpCtlSynCounter) validateToAndFrom() error { // emptyVars() obj.validateObj(&obj.validation, true) return obj.validationResult() } -func (obj *patternFlowVlanIdCounter) Validate() error { +func (obj *patternFlowTcpCtlSynCounter) Validate() error { // emptyVars() obj.validateObj(&obj.validation, false) return obj.validationResult() } -func (obj *patternFlowVlanIdCounter) String() string { +func (obj *patternFlowTcpCtlSynCounter) String() string { str, err := obj.ToYaml() if err != nil { return err.Error() @@ -188851,12 +232008,12 @@ func (obj *patternFlowVlanIdCounter) String() string { return str } -func (obj *patternFlowVlanIdCounter) Clone() (PatternFlowVlanIdCounter, error) { +func (obj *patternFlowTcpCtlSynCounter) Clone() (PatternFlowTcpCtlSynCounter, error) { vErr := obj.Validate() if vErr != nil { return nil, vErr } - newObj := NewPatternFlowVlanIdCounter() + newObj := NewPatternFlowTcpCtlSynCounter() data, err := proto.Marshal(obj.Msg()) if err != nil { return nil, err @@ -188868,63 +232025,63 @@ func (obj *patternFlowVlanIdCounter) Clone() (PatternFlowVlanIdCounter, error) { return newObj, nil } -// PatternFlowVlanIdCounter is integer counter pattern -type PatternFlowVlanIdCounter interface { +// PatternFlowTcpCtlSynCounter is integer counter pattern +type PatternFlowTcpCtlSynCounter interface { Validation - // Msg marshals PatternFlowVlanIdCounter to protobuf object *otg.PatternFlowVlanIdCounter + // Msg marshals PatternFlowTcpCtlSynCounter to protobuf object *otg.PatternFlowTcpCtlSynCounter // and doesn't set defaults - Msg() *otg.PatternFlowVlanIdCounter - // SetMsg unmarshals PatternFlowVlanIdCounter from protobuf object *otg.PatternFlowVlanIdCounter + Msg() *otg.PatternFlowTcpCtlSynCounter + // SetMsg unmarshals PatternFlowTcpCtlSynCounter from protobuf object *otg.PatternFlowTcpCtlSynCounter // and doesn't set defaults - SetMsg(*otg.PatternFlowVlanIdCounter) PatternFlowVlanIdCounter - // ToProto marshals PatternFlowVlanIdCounter to protobuf object *otg.PatternFlowVlanIdCounter - ToProto() (*otg.PatternFlowVlanIdCounter, error) - // ToPbText marshals PatternFlowVlanIdCounter to protobuf text + SetMsg(*otg.PatternFlowTcpCtlSynCounter) PatternFlowTcpCtlSynCounter + // ToProto marshals PatternFlowTcpCtlSynCounter to protobuf object *otg.PatternFlowTcpCtlSynCounter + ToProto() (*otg.PatternFlowTcpCtlSynCounter, error) + // ToPbText marshals PatternFlowTcpCtlSynCounter to protobuf text ToPbText() (string, error) - // ToYaml marshals PatternFlowVlanIdCounter to YAML text + // ToYaml marshals PatternFlowTcpCtlSynCounter to YAML text ToYaml() (string, error) - // ToJson marshals PatternFlowVlanIdCounter to JSON text + // ToJson marshals PatternFlowTcpCtlSynCounter to JSON text ToJson() (string, error) - // FromProto unmarshals PatternFlowVlanIdCounter from protobuf object *otg.PatternFlowVlanIdCounter - FromProto(msg *otg.PatternFlowVlanIdCounter) (PatternFlowVlanIdCounter, error) - // FromPbText unmarshals PatternFlowVlanIdCounter from protobuf text + // FromProto unmarshals PatternFlowTcpCtlSynCounter from protobuf object *otg.PatternFlowTcpCtlSynCounter + FromProto(msg *otg.PatternFlowTcpCtlSynCounter) (PatternFlowTcpCtlSynCounter, error) + // FromPbText unmarshals PatternFlowTcpCtlSynCounter from protobuf text FromPbText(value string) error - // FromYaml unmarshals PatternFlowVlanIdCounter from YAML text + // FromYaml unmarshals PatternFlowTcpCtlSynCounter from YAML text FromYaml(value string) error - // FromJson unmarshals PatternFlowVlanIdCounter from JSON text + // FromJson unmarshals PatternFlowTcpCtlSynCounter from JSON text FromJson(value string) error - // Validate validates PatternFlowVlanIdCounter + // Validate validates PatternFlowTcpCtlSynCounter Validate() error // A stringer function String() string // Clones the object - Clone() (PatternFlowVlanIdCounter, error) + Clone() (PatternFlowTcpCtlSynCounter, error) validateToAndFrom() error validateObj(vObj *validation, set_default bool) setDefault() - // Start returns uint32, set in PatternFlowVlanIdCounter. + // Start returns uint32, set in PatternFlowTcpCtlSynCounter. Start() uint32 - // SetStart assigns uint32 provided by user to PatternFlowVlanIdCounter - SetStart(value uint32) PatternFlowVlanIdCounter - // HasStart checks if Start has been set in PatternFlowVlanIdCounter + // SetStart assigns uint32 provided by user to PatternFlowTcpCtlSynCounter + SetStart(value uint32) PatternFlowTcpCtlSynCounter + // HasStart checks if Start has been set in PatternFlowTcpCtlSynCounter HasStart() bool - // Step returns uint32, set in PatternFlowVlanIdCounter. + // Step returns uint32, set in PatternFlowTcpCtlSynCounter. Step() uint32 - // SetStep assigns uint32 provided by user to PatternFlowVlanIdCounter - SetStep(value uint32) PatternFlowVlanIdCounter - // HasStep checks if Step has been set in PatternFlowVlanIdCounter + // SetStep assigns uint32 provided by user to PatternFlowTcpCtlSynCounter + SetStep(value uint32) PatternFlowTcpCtlSynCounter + // HasStep checks if Step has been set in PatternFlowTcpCtlSynCounter HasStep() bool - // Count returns uint32, set in PatternFlowVlanIdCounter. + // Count returns uint32, set in PatternFlowTcpCtlSynCounter. Count() uint32 - // SetCount assigns uint32 provided by user to PatternFlowVlanIdCounter - SetCount(value uint32) PatternFlowVlanIdCounter - // HasCount checks if Count has been set in PatternFlowVlanIdCounter + // SetCount assigns uint32 provided by user to PatternFlowTcpCtlSynCounter + SetCount(value uint32) PatternFlowTcpCtlSynCounter + // HasCount checks if Count has been set in PatternFlowTcpCtlSynCounter HasCount() bool } // description is TBD // Start returns a uint32 -func (obj *patternFlowVlanIdCounter) Start() uint32 { +func (obj *patternFlowTcpCtlSynCounter) Start() uint32 { return *obj.obj.Start @@ -188932,13 +232089,13 @@ func (obj *patternFlowVlanIdCounter) Start() uint32 { // description is TBD // Start returns a uint32 -func (obj *patternFlowVlanIdCounter) HasStart() bool { +func (obj *patternFlowTcpCtlSynCounter) HasStart() bool { return obj.obj.Start != nil } // description is TBD -// SetStart sets the uint32 value in the PatternFlowVlanIdCounter object -func (obj *patternFlowVlanIdCounter) SetStart(value uint32) PatternFlowVlanIdCounter { +// SetStart sets the uint32 value in the PatternFlowTcpCtlSynCounter object +func (obj *patternFlowTcpCtlSynCounter) SetStart(value uint32) PatternFlowTcpCtlSynCounter { obj.obj.Start = &value return obj @@ -188946,7 +232103,7 @@ func (obj *patternFlowVlanIdCounter) SetStart(value uint32) PatternFlowVlanIdCou // description is TBD // Step returns a uint32 -func (obj *patternFlowVlanIdCounter) Step() uint32 { +func (obj *patternFlowTcpCtlSynCounter) Step() uint32 { return *obj.obj.Step @@ -188954,13 +232111,13 @@ func (obj *patternFlowVlanIdCounter) Step() uint32 { // description is TBD // Step returns a uint32 -func (obj *patternFlowVlanIdCounter) HasStep() bool { +func (obj *patternFlowTcpCtlSynCounter) HasStep() bool { return obj.obj.Step != nil } // description is TBD -// SetStep sets the uint32 value in the PatternFlowVlanIdCounter object -func (obj *patternFlowVlanIdCounter) SetStep(value uint32) PatternFlowVlanIdCounter { +// SetStep sets the uint32 value in the PatternFlowTcpCtlSynCounter object +func (obj *patternFlowTcpCtlSynCounter) SetStep(value uint32) PatternFlowTcpCtlSynCounter { obj.obj.Step = &value return obj @@ -188968,7 +232125,7 @@ func (obj *patternFlowVlanIdCounter) SetStep(value uint32) PatternFlowVlanIdCoun // description is TBD // Count returns a uint32 -func (obj *patternFlowVlanIdCounter) Count() uint32 { +func (obj *patternFlowTcpCtlSynCounter) Count() uint32 { return *obj.obj.Count @@ -188976,56 +232133,56 @@ func (obj *patternFlowVlanIdCounter) Count() uint32 { // description is TBD // Count returns a uint32 -func (obj *patternFlowVlanIdCounter) HasCount() bool { +func (obj *patternFlowTcpCtlSynCounter) HasCount() bool { return obj.obj.Count != nil } // description is TBD -// SetCount sets the uint32 value in the PatternFlowVlanIdCounter object -func (obj *patternFlowVlanIdCounter) SetCount(value uint32) PatternFlowVlanIdCounter { +// SetCount sets the uint32 value in the PatternFlowTcpCtlSynCounter object +func (obj *patternFlowTcpCtlSynCounter) SetCount(value uint32) PatternFlowTcpCtlSynCounter { obj.obj.Count = &value return obj } -func (obj *patternFlowVlanIdCounter) validateObj(vObj *validation, set_default bool) { +func (obj *patternFlowTcpCtlSynCounter) validateObj(vObj *validation, set_default bool) { if set_default { obj.setDefault() } if obj.obj.Start != nil { - if *obj.obj.Start > 4095 { + if *obj.obj.Start > 1 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowVlanIdCounter.Start <= 4095 but Got %d", *obj.obj.Start)) + fmt.Sprintf("0 <= PatternFlowTcpCtlSynCounter.Start <= 1 but Got %d", *obj.obj.Start)) } } if obj.obj.Step != nil { - if *obj.obj.Step > 4095 { + if *obj.obj.Step > 1 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowVlanIdCounter.Step <= 4095 but Got %d", *obj.obj.Step)) + fmt.Sprintf("0 <= PatternFlowTcpCtlSynCounter.Step <= 1 but Got %d", *obj.obj.Step)) } } if obj.obj.Count != nil { - if *obj.obj.Count > 4095 { + if *obj.obj.Count > 1 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowVlanIdCounter.Count <= 4095 but Got %d", *obj.obj.Count)) + fmt.Sprintf("0 <= PatternFlowTcpCtlSynCounter.Count <= 1 but Got %d", *obj.obj.Count)) } } } -func (obj *patternFlowVlanIdCounter) setDefault() { +func (obj *patternFlowTcpCtlSynCounter) setDefault() { if obj.obj.Start == nil { obj.SetStart(0) } @@ -189038,29 +232195,29 @@ func (obj *patternFlowVlanIdCounter) setDefault() { } -// ***** PatternFlowVlanIdMetricTag ***** -type patternFlowVlanIdMetricTag struct { +// ***** PatternFlowTcpCtlSynMetricTag ***** +type patternFlowTcpCtlSynMetricTag struct { validation - obj *otg.PatternFlowVlanIdMetricTag + obj *otg.PatternFlowTcpCtlSynMetricTag } -func NewPatternFlowVlanIdMetricTag() PatternFlowVlanIdMetricTag { - obj := patternFlowVlanIdMetricTag{obj: &otg.PatternFlowVlanIdMetricTag{}} +func NewPatternFlowTcpCtlSynMetricTag() PatternFlowTcpCtlSynMetricTag { + obj := patternFlowTcpCtlSynMetricTag{obj: &otg.PatternFlowTcpCtlSynMetricTag{}} obj.setDefault() return &obj } -func (obj *patternFlowVlanIdMetricTag) Msg() *otg.PatternFlowVlanIdMetricTag { +func (obj *patternFlowTcpCtlSynMetricTag) Msg() *otg.PatternFlowTcpCtlSynMetricTag { return obj.obj } -func (obj *patternFlowVlanIdMetricTag) SetMsg(msg *otg.PatternFlowVlanIdMetricTag) PatternFlowVlanIdMetricTag { +func (obj *patternFlowTcpCtlSynMetricTag) SetMsg(msg *otg.PatternFlowTcpCtlSynMetricTag) PatternFlowTcpCtlSynMetricTag { proto.Merge(obj.obj, msg) return obj } -func (obj *patternFlowVlanIdMetricTag) ToProto() (*otg.PatternFlowVlanIdMetricTag, error) { +func (obj *patternFlowTcpCtlSynMetricTag) ToProto() (*otg.PatternFlowTcpCtlSynMetricTag, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -189068,7 +232225,7 @@ func (obj *patternFlowVlanIdMetricTag) ToProto() (*otg.PatternFlowVlanIdMetricTa return obj.Msg(), nil } -func (obj *patternFlowVlanIdMetricTag) FromProto(msg *otg.PatternFlowVlanIdMetricTag) (PatternFlowVlanIdMetricTag, error) { +func (obj *patternFlowTcpCtlSynMetricTag) FromProto(msg *otg.PatternFlowTcpCtlSynMetricTag) (PatternFlowTcpCtlSynMetricTag, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -189077,7 +232234,7 @@ func (obj *patternFlowVlanIdMetricTag) FromProto(msg *otg.PatternFlowVlanIdMetri return newObj, nil } -func (obj *patternFlowVlanIdMetricTag) ToPbText() (string, error) { +func (obj *patternFlowTcpCtlSynMetricTag) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -189089,7 +232246,7 @@ func (obj *patternFlowVlanIdMetricTag) ToPbText() (string, error) { return string(protoMarshal), nil } -func (obj *patternFlowVlanIdMetricTag) FromPbText(value string) error { +func (obj *patternFlowTcpCtlSynMetricTag) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj @@ -189102,7 +232259,7 @@ func (obj *patternFlowVlanIdMetricTag) FromPbText(value string) error { return retObj } -func (obj *patternFlowVlanIdMetricTag) ToYaml() (string, error) { +func (obj *patternFlowTcpCtlSynMetricTag) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -189123,7 +232280,7 @@ func (obj *patternFlowVlanIdMetricTag) ToYaml() (string, error) { return string(data), nil } -func (obj *patternFlowVlanIdMetricTag) FromYaml(value string) error { +func (obj *patternFlowTcpCtlSynMetricTag) FromYaml(value string) error { if value == "" { value = "{}" } @@ -189148,7 +232305,7 @@ func (obj *patternFlowVlanIdMetricTag) FromYaml(value string) error { return nil } -func (obj *patternFlowVlanIdMetricTag) ToJson() (string, error) { +func (obj *patternFlowTcpCtlSynMetricTag) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -189166,7 +232323,7 @@ func (obj *patternFlowVlanIdMetricTag) ToJson() (string, error) { return string(data), nil } -func (obj *patternFlowVlanIdMetricTag) FromJson(value string) error { +func (obj *patternFlowTcpCtlSynMetricTag) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -189187,19 +232344,19 @@ func (obj *patternFlowVlanIdMetricTag) FromJson(value string) error { return nil } -func (obj *patternFlowVlanIdMetricTag) validateToAndFrom() error { +func (obj *patternFlowTcpCtlSynMetricTag) validateToAndFrom() error { // emptyVars() obj.validateObj(&obj.validation, true) return obj.validationResult() } -func (obj *patternFlowVlanIdMetricTag) Validate() error { +func (obj *patternFlowTcpCtlSynMetricTag) Validate() error { // emptyVars() obj.validateObj(&obj.validation, false) return obj.validationResult() } -func (obj *patternFlowVlanIdMetricTag) String() string { +func (obj *patternFlowTcpCtlSynMetricTag) String() string { str, err := obj.ToYaml() if err != nil { return err.Error() @@ -189207,12 +232364,12 @@ func (obj *patternFlowVlanIdMetricTag) String() string { return str } -func (obj *patternFlowVlanIdMetricTag) Clone() (PatternFlowVlanIdMetricTag, error) { +func (obj *patternFlowTcpCtlSynMetricTag) Clone() (PatternFlowTcpCtlSynMetricTag, error) { vErr := obj.Validate() if vErr != nil { return nil, vErr } - newObj := NewPatternFlowVlanIdMetricTag() + newObj := NewPatternFlowTcpCtlSynMetricTag() data, err := proto.Marshal(obj.Msg()) if err != nil { return nil, err @@ -189224,69 +232381,69 @@ func (obj *patternFlowVlanIdMetricTag) Clone() (PatternFlowVlanIdMetricTag, erro return newObj, nil } -// PatternFlowVlanIdMetricTag is metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. -type PatternFlowVlanIdMetricTag interface { +// PatternFlowTcpCtlSynMetricTag is metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. +type PatternFlowTcpCtlSynMetricTag interface { Validation - // Msg marshals PatternFlowVlanIdMetricTag to protobuf object *otg.PatternFlowVlanIdMetricTag + // Msg marshals PatternFlowTcpCtlSynMetricTag to protobuf object *otg.PatternFlowTcpCtlSynMetricTag // and doesn't set defaults - Msg() *otg.PatternFlowVlanIdMetricTag - // SetMsg unmarshals PatternFlowVlanIdMetricTag from protobuf object *otg.PatternFlowVlanIdMetricTag + Msg() *otg.PatternFlowTcpCtlSynMetricTag + // SetMsg unmarshals PatternFlowTcpCtlSynMetricTag from protobuf object *otg.PatternFlowTcpCtlSynMetricTag // and doesn't set defaults - SetMsg(*otg.PatternFlowVlanIdMetricTag) PatternFlowVlanIdMetricTag - // ToProto marshals PatternFlowVlanIdMetricTag to protobuf object *otg.PatternFlowVlanIdMetricTag - ToProto() (*otg.PatternFlowVlanIdMetricTag, error) - // ToPbText marshals PatternFlowVlanIdMetricTag to protobuf text + SetMsg(*otg.PatternFlowTcpCtlSynMetricTag) PatternFlowTcpCtlSynMetricTag + // ToProto marshals PatternFlowTcpCtlSynMetricTag to protobuf object *otg.PatternFlowTcpCtlSynMetricTag + ToProto() (*otg.PatternFlowTcpCtlSynMetricTag, error) + // ToPbText marshals PatternFlowTcpCtlSynMetricTag to protobuf text ToPbText() (string, error) - // ToYaml marshals PatternFlowVlanIdMetricTag to YAML text + // ToYaml marshals PatternFlowTcpCtlSynMetricTag to YAML text ToYaml() (string, error) - // ToJson marshals PatternFlowVlanIdMetricTag to JSON text + // ToJson marshals PatternFlowTcpCtlSynMetricTag to JSON text ToJson() (string, error) - // FromProto unmarshals PatternFlowVlanIdMetricTag from protobuf object *otg.PatternFlowVlanIdMetricTag - FromProto(msg *otg.PatternFlowVlanIdMetricTag) (PatternFlowVlanIdMetricTag, error) - // FromPbText unmarshals PatternFlowVlanIdMetricTag from protobuf text + // FromProto unmarshals PatternFlowTcpCtlSynMetricTag from protobuf object *otg.PatternFlowTcpCtlSynMetricTag + FromProto(msg *otg.PatternFlowTcpCtlSynMetricTag) (PatternFlowTcpCtlSynMetricTag, error) + // FromPbText unmarshals PatternFlowTcpCtlSynMetricTag from protobuf text FromPbText(value string) error - // FromYaml unmarshals PatternFlowVlanIdMetricTag from YAML text + // FromYaml unmarshals PatternFlowTcpCtlSynMetricTag from YAML text FromYaml(value string) error - // FromJson unmarshals PatternFlowVlanIdMetricTag from JSON text + // FromJson unmarshals PatternFlowTcpCtlSynMetricTag from JSON text FromJson(value string) error - // Validate validates PatternFlowVlanIdMetricTag + // Validate validates PatternFlowTcpCtlSynMetricTag Validate() error // A stringer function String() string // Clones the object - Clone() (PatternFlowVlanIdMetricTag, error) + Clone() (PatternFlowTcpCtlSynMetricTag, error) validateToAndFrom() error validateObj(vObj *validation, set_default bool) setDefault() - // Name returns string, set in PatternFlowVlanIdMetricTag. + // Name returns string, set in PatternFlowTcpCtlSynMetricTag. Name() string - // SetName assigns string provided by user to PatternFlowVlanIdMetricTag - SetName(value string) PatternFlowVlanIdMetricTag - // Offset returns uint32, set in PatternFlowVlanIdMetricTag. + // SetName assigns string provided by user to PatternFlowTcpCtlSynMetricTag + SetName(value string) PatternFlowTcpCtlSynMetricTag + // Offset returns uint32, set in PatternFlowTcpCtlSynMetricTag. Offset() uint32 - // SetOffset assigns uint32 provided by user to PatternFlowVlanIdMetricTag - SetOffset(value uint32) PatternFlowVlanIdMetricTag - // HasOffset checks if Offset has been set in PatternFlowVlanIdMetricTag + // SetOffset assigns uint32 provided by user to PatternFlowTcpCtlSynMetricTag + SetOffset(value uint32) PatternFlowTcpCtlSynMetricTag + // HasOffset checks if Offset has been set in PatternFlowTcpCtlSynMetricTag HasOffset() bool - // Length returns uint32, set in PatternFlowVlanIdMetricTag. + // Length returns uint32, set in PatternFlowTcpCtlSynMetricTag. Length() uint32 - // SetLength assigns uint32 provided by user to PatternFlowVlanIdMetricTag - SetLength(value uint32) PatternFlowVlanIdMetricTag - // HasLength checks if Length has been set in PatternFlowVlanIdMetricTag + // SetLength assigns uint32 provided by user to PatternFlowTcpCtlSynMetricTag + SetLength(value uint32) PatternFlowTcpCtlSynMetricTag + // HasLength checks if Length has been set in PatternFlowTcpCtlSynMetricTag HasLength() bool } // Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field // Name returns a string -func (obj *patternFlowVlanIdMetricTag) Name() string { +func (obj *patternFlowTcpCtlSynMetricTag) Name() string { return *obj.obj.Name } // Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field -// SetName sets the string value in the PatternFlowVlanIdMetricTag object -func (obj *patternFlowVlanIdMetricTag) SetName(value string) PatternFlowVlanIdMetricTag { +// SetName sets the string value in the PatternFlowTcpCtlSynMetricTag object +func (obj *patternFlowTcpCtlSynMetricTag) SetName(value string) PatternFlowTcpCtlSynMetricTag { obj.obj.Name = &value return obj @@ -189294,7 +232451,7 @@ func (obj *patternFlowVlanIdMetricTag) SetName(value string) PatternFlowVlanIdMe // Offset in bits relative to start of corresponding header field // Offset returns a uint32 -func (obj *patternFlowVlanIdMetricTag) Offset() uint32 { +func (obj *patternFlowTcpCtlSynMetricTag) Offset() uint32 { return *obj.obj.Offset @@ -189302,13 +232459,13 @@ func (obj *patternFlowVlanIdMetricTag) Offset() uint32 { // Offset in bits relative to start of corresponding header field // Offset returns a uint32 -func (obj *patternFlowVlanIdMetricTag) HasOffset() bool { +func (obj *patternFlowTcpCtlSynMetricTag) HasOffset() bool { return obj.obj.Offset != nil } // Offset in bits relative to start of corresponding header field -// SetOffset sets the uint32 value in the PatternFlowVlanIdMetricTag object -func (obj *patternFlowVlanIdMetricTag) SetOffset(value uint32) PatternFlowVlanIdMetricTag { +// SetOffset sets the uint32 value in the PatternFlowTcpCtlSynMetricTag object +func (obj *patternFlowTcpCtlSynMetricTag) SetOffset(value uint32) PatternFlowTcpCtlSynMetricTag { obj.obj.Offset = &value return obj @@ -189316,7 +232473,7 @@ func (obj *patternFlowVlanIdMetricTag) SetOffset(value uint32) PatternFlowVlanId // Number of bits to track for metrics starting from configured offset of corresponding header field // Length returns a uint32 -func (obj *patternFlowVlanIdMetricTag) Length() uint32 { +func (obj *patternFlowTcpCtlSynMetricTag) Length() uint32 { return *obj.obj.Length @@ -189324,83 +232481,83 @@ func (obj *patternFlowVlanIdMetricTag) Length() uint32 { // Number of bits to track for metrics starting from configured offset of corresponding header field // Length returns a uint32 -func (obj *patternFlowVlanIdMetricTag) HasLength() bool { +func (obj *patternFlowTcpCtlSynMetricTag) HasLength() bool { return obj.obj.Length != nil } // Number of bits to track for metrics starting from configured offset of corresponding header field -// SetLength sets the uint32 value in the PatternFlowVlanIdMetricTag object -func (obj *patternFlowVlanIdMetricTag) SetLength(value uint32) PatternFlowVlanIdMetricTag { +// SetLength sets the uint32 value in the PatternFlowTcpCtlSynMetricTag object +func (obj *patternFlowTcpCtlSynMetricTag) SetLength(value uint32) PatternFlowTcpCtlSynMetricTag { obj.obj.Length = &value return obj } -func (obj *patternFlowVlanIdMetricTag) validateObj(vObj *validation, set_default bool) { +func (obj *patternFlowTcpCtlSynMetricTag) validateObj(vObj *validation, set_default bool) { if set_default { obj.setDefault() } // Name is required if obj.obj.Name == nil { - vObj.validationErrors = append(vObj.validationErrors, "Name is required field on interface PatternFlowVlanIdMetricTag") + vObj.validationErrors = append(vObj.validationErrors, "Name is required field on interface PatternFlowTcpCtlSynMetricTag") } if obj.obj.Offset != nil { - if *obj.obj.Offset > 11 { + if *obj.obj.Offset > 0 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowVlanIdMetricTag.Offset <= 11 but Got %d", *obj.obj.Offset)) + fmt.Sprintf("0 <= PatternFlowTcpCtlSynMetricTag.Offset <= 0 but Got %d", *obj.obj.Offset)) } } if obj.obj.Length != nil { - if *obj.obj.Length < 1 || *obj.obj.Length > 12 { + if *obj.obj.Length < 1 || *obj.obj.Length > 1 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("1 <= PatternFlowVlanIdMetricTag.Length <= 12 but Got %d", *obj.obj.Length)) + fmt.Sprintf("1 <= PatternFlowTcpCtlSynMetricTag.Length <= 1 but Got %d", *obj.obj.Length)) } } } -func (obj *patternFlowVlanIdMetricTag) setDefault() { +func (obj *patternFlowTcpCtlSynMetricTag) setDefault() { if obj.obj.Offset == nil { obj.SetOffset(0) } if obj.obj.Length == nil { - obj.SetLength(12) + obj.SetLength(1) } } -// ***** PatternFlowVlanTpidCounter ***** -type patternFlowVlanTpidCounter struct { +// ***** PatternFlowTcpCtlFinCounter ***** +type patternFlowTcpCtlFinCounter struct { validation - obj *otg.PatternFlowVlanTpidCounter + obj *otg.PatternFlowTcpCtlFinCounter } -func NewPatternFlowVlanTpidCounter() PatternFlowVlanTpidCounter { - obj := patternFlowVlanTpidCounter{obj: &otg.PatternFlowVlanTpidCounter{}} +func NewPatternFlowTcpCtlFinCounter() PatternFlowTcpCtlFinCounter { + obj := patternFlowTcpCtlFinCounter{obj: &otg.PatternFlowTcpCtlFinCounter{}} obj.setDefault() return &obj } -func (obj *patternFlowVlanTpidCounter) Msg() *otg.PatternFlowVlanTpidCounter { +func (obj *patternFlowTcpCtlFinCounter) Msg() *otg.PatternFlowTcpCtlFinCounter { return obj.obj } -func (obj *patternFlowVlanTpidCounter) SetMsg(msg *otg.PatternFlowVlanTpidCounter) PatternFlowVlanTpidCounter { +func (obj *patternFlowTcpCtlFinCounter) SetMsg(msg *otg.PatternFlowTcpCtlFinCounter) PatternFlowTcpCtlFinCounter { proto.Merge(obj.obj, msg) return obj } -func (obj *patternFlowVlanTpidCounter) ToProto() (*otg.PatternFlowVlanTpidCounter, error) { +func (obj *patternFlowTcpCtlFinCounter) ToProto() (*otg.PatternFlowTcpCtlFinCounter, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -189408,7 +232565,7 @@ func (obj *patternFlowVlanTpidCounter) ToProto() (*otg.PatternFlowVlanTpidCounte return obj.Msg(), nil } -func (obj *patternFlowVlanTpidCounter) FromProto(msg *otg.PatternFlowVlanTpidCounter) (PatternFlowVlanTpidCounter, error) { +func (obj *patternFlowTcpCtlFinCounter) FromProto(msg *otg.PatternFlowTcpCtlFinCounter) (PatternFlowTcpCtlFinCounter, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -189417,7 +232574,7 @@ func (obj *patternFlowVlanTpidCounter) FromProto(msg *otg.PatternFlowVlanTpidCou return newObj, nil } -func (obj *patternFlowVlanTpidCounter) ToPbText() (string, error) { +func (obj *patternFlowTcpCtlFinCounter) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -189429,7 +232586,7 @@ func (obj *patternFlowVlanTpidCounter) ToPbText() (string, error) { return string(protoMarshal), nil } -func (obj *patternFlowVlanTpidCounter) FromPbText(value string) error { +func (obj *patternFlowTcpCtlFinCounter) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj @@ -189442,7 +232599,7 @@ func (obj *patternFlowVlanTpidCounter) FromPbText(value string) error { return retObj } -func (obj *patternFlowVlanTpidCounter) ToYaml() (string, error) { +func (obj *patternFlowTcpCtlFinCounter) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -189463,7 +232620,7 @@ func (obj *patternFlowVlanTpidCounter) ToYaml() (string, error) { return string(data), nil } -func (obj *patternFlowVlanTpidCounter) FromYaml(value string) error { +func (obj *patternFlowTcpCtlFinCounter) FromYaml(value string) error { if value == "" { value = "{}" } @@ -189488,7 +232645,7 @@ func (obj *patternFlowVlanTpidCounter) FromYaml(value string) error { return nil } -func (obj *patternFlowVlanTpidCounter) ToJson() (string, error) { +func (obj *patternFlowTcpCtlFinCounter) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -189506,7 +232663,7 @@ func (obj *patternFlowVlanTpidCounter) ToJson() (string, error) { return string(data), nil } -func (obj *patternFlowVlanTpidCounter) FromJson(value string) error { +func (obj *patternFlowTcpCtlFinCounter) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -189527,19 +232684,19 @@ func (obj *patternFlowVlanTpidCounter) FromJson(value string) error { return nil } -func (obj *patternFlowVlanTpidCounter) validateToAndFrom() error { +func (obj *patternFlowTcpCtlFinCounter) validateToAndFrom() error { // emptyVars() obj.validateObj(&obj.validation, true) return obj.validationResult() } -func (obj *patternFlowVlanTpidCounter) Validate() error { +func (obj *patternFlowTcpCtlFinCounter) Validate() error { // emptyVars() obj.validateObj(&obj.validation, false) return obj.validationResult() } -func (obj *patternFlowVlanTpidCounter) String() string { +func (obj *patternFlowTcpCtlFinCounter) String() string { str, err := obj.ToYaml() if err != nil { return err.Error() @@ -189547,12 +232704,12 @@ func (obj *patternFlowVlanTpidCounter) String() string { return str } -func (obj *patternFlowVlanTpidCounter) Clone() (PatternFlowVlanTpidCounter, error) { +func (obj *patternFlowTcpCtlFinCounter) Clone() (PatternFlowTcpCtlFinCounter, error) { vErr := obj.Validate() if vErr != nil { return nil, vErr } - newObj := NewPatternFlowVlanTpidCounter() + newObj := NewPatternFlowTcpCtlFinCounter() data, err := proto.Marshal(obj.Msg()) if err != nil { return nil, err @@ -189564,63 +232721,63 @@ func (obj *patternFlowVlanTpidCounter) Clone() (PatternFlowVlanTpidCounter, erro return newObj, nil } -// PatternFlowVlanTpidCounter is integer counter pattern -type PatternFlowVlanTpidCounter interface { +// PatternFlowTcpCtlFinCounter is integer counter pattern +type PatternFlowTcpCtlFinCounter interface { Validation - // Msg marshals PatternFlowVlanTpidCounter to protobuf object *otg.PatternFlowVlanTpidCounter + // Msg marshals PatternFlowTcpCtlFinCounter to protobuf object *otg.PatternFlowTcpCtlFinCounter // and doesn't set defaults - Msg() *otg.PatternFlowVlanTpidCounter - // SetMsg unmarshals PatternFlowVlanTpidCounter from protobuf object *otg.PatternFlowVlanTpidCounter + Msg() *otg.PatternFlowTcpCtlFinCounter + // SetMsg unmarshals PatternFlowTcpCtlFinCounter from protobuf object *otg.PatternFlowTcpCtlFinCounter // and doesn't set defaults - SetMsg(*otg.PatternFlowVlanTpidCounter) PatternFlowVlanTpidCounter - // ToProto marshals PatternFlowVlanTpidCounter to protobuf object *otg.PatternFlowVlanTpidCounter - ToProto() (*otg.PatternFlowVlanTpidCounter, error) - // ToPbText marshals PatternFlowVlanTpidCounter to protobuf text + SetMsg(*otg.PatternFlowTcpCtlFinCounter) PatternFlowTcpCtlFinCounter + // ToProto marshals PatternFlowTcpCtlFinCounter to protobuf object *otg.PatternFlowTcpCtlFinCounter + ToProto() (*otg.PatternFlowTcpCtlFinCounter, error) + // ToPbText marshals PatternFlowTcpCtlFinCounter to protobuf text ToPbText() (string, error) - // ToYaml marshals PatternFlowVlanTpidCounter to YAML text + // ToYaml marshals PatternFlowTcpCtlFinCounter to YAML text ToYaml() (string, error) - // ToJson marshals PatternFlowVlanTpidCounter to JSON text + // ToJson marshals PatternFlowTcpCtlFinCounter to JSON text ToJson() (string, error) - // FromProto unmarshals PatternFlowVlanTpidCounter from protobuf object *otg.PatternFlowVlanTpidCounter - FromProto(msg *otg.PatternFlowVlanTpidCounter) (PatternFlowVlanTpidCounter, error) - // FromPbText unmarshals PatternFlowVlanTpidCounter from protobuf text + // FromProto unmarshals PatternFlowTcpCtlFinCounter from protobuf object *otg.PatternFlowTcpCtlFinCounter + FromProto(msg *otg.PatternFlowTcpCtlFinCounter) (PatternFlowTcpCtlFinCounter, error) + // FromPbText unmarshals PatternFlowTcpCtlFinCounter from protobuf text FromPbText(value string) error - // FromYaml unmarshals PatternFlowVlanTpidCounter from YAML text + // FromYaml unmarshals PatternFlowTcpCtlFinCounter from YAML text FromYaml(value string) error - // FromJson unmarshals PatternFlowVlanTpidCounter from JSON text + // FromJson unmarshals PatternFlowTcpCtlFinCounter from JSON text FromJson(value string) error - // Validate validates PatternFlowVlanTpidCounter + // Validate validates PatternFlowTcpCtlFinCounter Validate() error // A stringer function String() string // Clones the object - Clone() (PatternFlowVlanTpidCounter, error) + Clone() (PatternFlowTcpCtlFinCounter, error) validateToAndFrom() error validateObj(vObj *validation, set_default bool) setDefault() - // Start returns uint32, set in PatternFlowVlanTpidCounter. + // Start returns uint32, set in PatternFlowTcpCtlFinCounter. Start() uint32 - // SetStart assigns uint32 provided by user to PatternFlowVlanTpidCounter - SetStart(value uint32) PatternFlowVlanTpidCounter - // HasStart checks if Start has been set in PatternFlowVlanTpidCounter + // SetStart assigns uint32 provided by user to PatternFlowTcpCtlFinCounter + SetStart(value uint32) PatternFlowTcpCtlFinCounter + // HasStart checks if Start has been set in PatternFlowTcpCtlFinCounter HasStart() bool - // Step returns uint32, set in PatternFlowVlanTpidCounter. + // Step returns uint32, set in PatternFlowTcpCtlFinCounter. Step() uint32 - // SetStep assigns uint32 provided by user to PatternFlowVlanTpidCounter - SetStep(value uint32) PatternFlowVlanTpidCounter - // HasStep checks if Step has been set in PatternFlowVlanTpidCounter + // SetStep assigns uint32 provided by user to PatternFlowTcpCtlFinCounter + SetStep(value uint32) PatternFlowTcpCtlFinCounter + // HasStep checks if Step has been set in PatternFlowTcpCtlFinCounter HasStep() bool - // Count returns uint32, set in PatternFlowVlanTpidCounter. + // Count returns uint32, set in PatternFlowTcpCtlFinCounter. Count() uint32 - // SetCount assigns uint32 provided by user to PatternFlowVlanTpidCounter - SetCount(value uint32) PatternFlowVlanTpidCounter - // HasCount checks if Count has been set in PatternFlowVlanTpidCounter + // SetCount assigns uint32 provided by user to PatternFlowTcpCtlFinCounter + SetCount(value uint32) PatternFlowTcpCtlFinCounter + // HasCount checks if Count has been set in PatternFlowTcpCtlFinCounter HasCount() bool } // description is TBD // Start returns a uint32 -func (obj *patternFlowVlanTpidCounter) Start() uint32 { +func (obj *patternFlowTcpCtlFinCounter) Start() uint32 { return *obj.obj.Start @@ -189628,13 +232785,13 @@ func (obj *patternFlowVlanTpidCounter) Start() uint32 { // description is TBD // Start returns a uint32 -func (obj *patternFlowVlanTpidCounter) HasStart() bool { +func (obj *patternFlowTcpCtlFinCounter) HasStart() bool { return obj.obj.Start != nil } // description is TBD -// SetStart sets the uint32 value in the PatternFlowVlanTpidCounter object -func (obj *patternFlowVlanTpidCounter) SetStart(value uint32) PatternFlowVlanTpidCounter { +// SetStart sets the uint32 value in the PatternFlowTcpCtlFinCounter object +func (obj *patternFlowTcpCtlFinCounter) SetStart(value uint32) PatternFlowTcpCtlFinCounter { obj.obj.Start = &value return obj @@ -189642,7 +232799,7 @@ func (obj *patternFlowVlanTpidCounter) SetStart(value uint32) PatternFlowVlanTpi // description is TBD // Step returns a uint32 -func (obj *patternFlowVlanTpidCounter) Step() uint32 { +func (obj *patternFlowTcpCtlFinCounter) Step() uint32 { return *obj.obj.Step @@ -189650,13 +232807,13 @@ func (obj *patternFlowVlanTpidCounter) Step() uint32 { // description is TBD // Step returns a uint32 -func (obj *patternFlowVlanTpidCounter) HasStep() bool { +func (obj *patternFlowTcpCtlFinCounter) HasStep() bool { return obj.obj.Step != nil } // description is TBD -// SetStep sets the uint32 value in the PatternFlowVlanTpidCounter object -func (obj *patternFlowVlanTpidCounter) SetStep(value uint32) PatternFlowVlanTpidCounter { +// SetStep sets the uint32 value in the PatternFlowTcpCtlFinCounter object +func (obj *patternFlowTcpCtlFinCounter) SetStep(value uint32) PatternFlowTcpCtlFinCounter { obj.obj.Step = &value return obj @@ -189664,7 +232821,7 @@ func (obj *patternFlowVlanTpidCounter) SetStep(value uint32) PatternFlowVlanTpid // description is TBD // Count returns a uint32 -func (obj *patternFlowVlanTpidCounter) Count() uint32 { +func (obj *patternFlowTcpCtlFinCounter) Count() uint32 { return *obj.obj.Count @@ -189672,58 +232829,58 @@ func (obj *patternFlowVlanTpidCounter) Count() uint32 { // description is TBD // Count returns a uint32 -func (obj *patternFlowVlanTpidCounter) HasCount() bool { +func (obj *patternFlowTcpCtlFinCounter) HasCount() bool { return obj.obj.Count != nil } // description is TBD -// SetCount sets the uint32 value in the PatternFlowVlanTpidCounter object -func (obj *patternFlowVlanTpidCounter) SetCount(value uint32) PatternFlowVlanTpidCounter { +// SetCount sets the uint32 value in the PatternFlowTcpCtlFinCounter object +func (obj *patternFlowTcpCtlFinCounter) SetCount(value uint32) PatternFlowTcpCtlFinCounter { obj.obj.Count = &value return obj } -func (obj *patternFlowVlanTpidCounter) validateObj(vObj *validation, set_default bool) { +func (obj *patternFlowTcpCtlFinCounter) validateObj(vObj *validation, set_default bool) { if set_default { obj.setDefault() } if obj.obj.Start != nil { - if *obj.obj.Start > 65535 { + if *obj.obj.Start > 1 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowVlanTpidCounter.Start <= 65535 but Got %d", *obj.obj.Start)) + fmt.Sprintf("0 <= PatternFlowTcpCtlFinCounter.Start <= 1 but Got %d", *obj.obj.Start)) } } if obj.obj.Step != nil { - if *obj.obj.Step > 65535 { + if *obj.obj.Step > 1 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowVlanTpidCounter.Step <= 65535 but Got %d", *obj.obj.Step)) + fmt.Sprintf("0 <= PatternFlowTcpCtlFinCounter.Step <= 1 but Got %d", *obj.obj.Step)) } } if obj.obj.Count != nil { - if *obj.obj.Count > 65535 { + if *obj.obj.Count > 1 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowVlanTpidCounter.Count <= 65535 but Got %d", *obj.obj.Count)) + fmt.Sprintf("0 <= PatternFlowTcpCtlFinCounter.Count <= 1 but Got %d", *obj.obj.Count)) } } } -func (obj *patternFlowVlanTpidCounter) setDefault() { +func (obj *patternFlowTcpCtlFinCounter) setDefault() { if obj.obj.Start == nil { - obj.SetStart(65535) + obj.SetStart(0) } if obj.obj.Step == nil { obj.SetStep(1) @@ -189734,29 +232891,29 @@ func (obj *patternFlowVlanTpidCounter) setDefault() { } -// ***** PatternFlowVlanTpidMetricTag ***** -type patternFlowVlanTpidMetricTag struct { +// ***** PatternFlowTcpCtlFinMetricTag ***** +type patternFlowTcpCtlFinMetricTag struct { validation - obj *otg.PatternFlowVlanTpidMetricTag + obj *otg.PatternFlowTcpCtlFinMetricTag } -func NewPatternFlowVlanTpidMetricTag() PatternFlowVlanTpidMetricTag { - obj := patternFlowVlanTpidMetricTag{obj: &otg.PatternFlowVlanTpidMetricTag{}} +func NewPatternFlowTcpCtlFinMetricTag() PatternFlowTcpCtlFinMetricTag { + obj := patternFlowTcpCtlFinMetricTag{obj: &otg.PatternFlowTcpCtlFinMetricTag{}} obj.setDefault() return &obj } -func (obj *patternFlowVlanTpidMetricTag) Msg() *otg.PatternFlowVlanTpidMetricTag { +func (obj *patternFlowTcpCtlFinMetricTag) Msg() *otg.PatternFlowTcpCtlFinMetricTag { return obj.obj } -func (obj *patternFlowVlanTpidMetricTag) SetMsg(msg *otg.PatternFlowVlanTpidMetricTag) PatternFlowVlanTpidMetricTag { +func (obj *patternFlowTcpCtlFinMetricTag) SetMsg(msg *otg.PatternFlowTcpCtlFinMetricTag) PatternFlowTcpCtlFinMetricTag { proto.Merge(obj.obj, msg) return obj } -func (obj *patternFlowVlanTpidMetricTag) ToProto() (*otg.PatternFlowVlanTpidMetricTag, error) { +func (obj *patternFlowTcpCtlFinMetricTag) ToProto() (*otg.PatternFlowTcpCtlFinMetricTag, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -189764,7 +232921,7 @@ func (obj *patternFlowVlanTpidMetricTag) ToProto() (*otg.PatternFlowVlanTpidMetr return obj.Msg(), nil } -func (obj *patternFlowVlanTpidMetricTag) FromProto(msg *otg.PatternFlowVlanTpidMetricTag) (PatternFlowVlanTpidMetricTag, error) { +func (obj *patternFlowTcpCtlFinMetricTag) FromProto(msg *otg.PatternFlowTcpCtlFinMetricTag) (PatternFlowTcpCtlFinMetricTag, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -189773,7 +232930,7 @@ func (obj *patternFlowVlanTpidMetricTag) FromProto(msg *otg.PatternFlowVlanTpidM return newObj, nil } -func (obj *patternFlowVlanTpidMetricTag) ToPbText() (string, error) { +func (obj *patternFlowTcpCtlFinMetricTag) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -189785,7 +232942,7 @@ func (obj *patternFlowVlanTpidMetricTag) ToPbText() (string, error) { return string(protoMarshal), nil } -func (obj *patternFlowVlanTpidMetricTag) FromPbText(value string) error { +func (obj *patternFlowTcpCtlFinMetricTag) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj @@ -189798,7 +232955,7 @@ func (obj *patternFlowVlanTpidMetricTag) FromPbText(value string) error { return retObj } -func (obj *patternFlowVlanTpidMetricTag) ToYaml() (string, error) { +func (obj *patternFlowTcpCtlFinMetricTag) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -189819,7 +232976,7 @@ func (obj *patternFlowVlanTpidMetricTag) ToYaml() (string, error) { return string(data), nil } -func (obj *patternFlowVlanTpidMetricTag) FromYaml(value string) error { +func (obj *patternFlowTcpCtlFinMetricTag) FromYaml(value string) error { if value == "" { value = "{}" } @@ -189844,7 +233001,7 @@ func (obj *patternFlowVlanTpidMetricTag) FromYaml(value string) error { return nil } -func (obj *patternFlowVlanTpidMetricTag) ToJson() (string, error) { +func (obj *patternFlowTcpCtlFinMetricTag) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -189862,7 +233019,7 @@ func (obj *patternFlowVlanTpidMetricTag) ToJson() (string, error) { return string(data), nil } -func (obj *patternFlowVlanTpidMetricTag) FromJson(value string) error { +func (obj *patternFlowTcpCtlFinMetricTag) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -189883,19 +233040,19 @@ func (obj *patternFlowVlanTpidMetricTag) FromJson(value string) error { return nil } -func (obj *patternFlowVlanTpidMetricTag) validateToAndFrom() error { +func (obj *patternFlowTcpCtlFinMetricTag) validateToAndFrom() error { // emptyVars() obj.validateObj(&obj.validation, true) return obj.validationResult() } -func (obj *patternFlowVlanTpidMetricTag) Validate() error { +func (obj *patternFlowTcpCtlFinMetricTag) Validate() error { // emptyVars() obj.validateObj(&obj.validation, false) return obj.validationResult() } -func (obj *patternFlowVlanTpidMetricTag) String() string { +func (obj *patternFlowTcpCtlFinMetricTag) String() string { str, err := obj.ToYaml() if err != nil { return err.Error() @@ -189903,12 +233060,12 @@ func (obj *patternFlowVlanTpidMetricTag) String() string { return str } -func (obj *patternFlowVlanTpidMetricTag) Clone() (PatternFlowVlanTpidMetricTag, error) { +func (obj *patternFlowTcpCtlFinMetricTag) Clone() (PatternFlowTcpCtlFinMetricTag, error) { vErr := obj.Validate() if vErr != nil { return nil, vErr } - newObj := NewPatternFlowVlanTpidMetricTag() + newObj := NewPatternFlowTcpCtlFinMetricTag() data, err := proto.Marshal(obj.Msg()) if err != nil { return nil, err @@ -189920,69 +233077,69 @@ func (obj *patternFlowVlanTpidMetricTag) Clone() (PatternFlowVlanTpidMetricTag, return newObj, nil } -// PatternFlowVlanTpidMetricTag is metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. -type PatternFlowVlanTpidMetricTag interface { +// PatternFlowTcpCtlFinMetricTag is metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. +type PatternFlowTcpCtlFinMetricTag interface { Validation - // Msg marshals PatternFlowVlanTpidMetricTag to protobuf object *otg.PatternFlowVlanTpidMetricTag + // Msg marshals PatternFlowTcpCtlFinMetricTag to protobuf object *otg.PatternFlowTcpCtlFinMetricTag // and doesn't set defaults - Msg() *otg.PatternFlowVlanTpidMetricTag - // SetMsg unmarshals PatternFlowVlanTpidMetricTag from protobuf object *otg.PatternFlowVlanTpidMetricTag + Msg() *otg.PatternFlowTcpCtlFinMetricTag + // SetMsg unmarshals PatternFlowTcpCtlFinMetricTag from protobuf object *otg.PatternFlowTcpCtlFinMetricTag // and doesn't set defaults - SetMsg(*otg.PatternFlowVlanTpidMetricTag) PatternFlowVlanTpidMetricTag - // ToProto marshals PatternFlowVlanTpidMetricTag to protobuf object *otg.PatternFlowVlanTpidMetricTag - ToProto() (*otg.PatternFlowVlanTpidMetricTag, error) - // ToPbText marshals PatternFlowVlanTpidMetricTag to protobuf text + SetMsg(*otg.PatternFlowTcpCtlFinMetricTag) PatternFlowTcpCtlFinMetricTag + // ToProto marshals PatternFlowTcpCtlFinMetricTag to protobuf object *otg.PatternFlowTcpCtlFinMetricTag + ToProto() (*otg.PatternFlowTcpCtlFinMetricTag, error) + // ToPbText marshals PatternFlowTcpCtlFinMetricTag to protobuf text ToPbText() (string, error) - // ToYaml marshals PatternFlowVlanTpidMetricTag to YAML text + // ToYaml marshals PatternFlowTcpCtlFinMetricTag to YAML text ToYaml() (string, error) - // ToJson marshals PatternFlowVlanTpidMetricTag to JSON text + // ToJson marshals PatternFlowTcpCtlFinMetricTag to JSON text ToJson() (string, error) - // FromProto unmarshals PatternFlowVlanTpidMetricTag from protobuf object *otg.PatternFlowVlanTpidMetricTag - FromProto(msg *otg.PatternFlowVlanTpidMetricTag) (PatternFlowVlanTpidMetricTag, error) - // FromPbText unmarshals PatternFlowVlanTpidMetricTag from protobuf text + // FromProto unmarshals PatternFlowTcpCtlFinMetricTag from protobuf object *otg.PatternFlowTcpCtlFinMetricTag + FromProto(msg *otg.PatternFlowTcpCtlFinMetricTag) (PatternFlowTcpCtlFinMetricTag, error) + // FromPbText unmarshals PatternFlowTcpCtlFinMetricTag from protobuf text FromPbText(value string) error - // FromYaml unmarshals PatternFlowVlanTpidMetricTag from YAML text + // FromYaml unmarshals PatternFlowTcpCtlFinMetricTag from YAML text FromYaml(value string) error - // FromJson unmarshals PatternFlowVlanTpidMetricTag from JSON text + // FromJson unmarshals PatternFlowTcpCtlFinMetricTag from JSON text FromJson(value string) error - // Validate validates PatternFlowVlanTpidMetricTag + // Validate validates PatternFlowTcpCtlFinMetricTag Validate() error // A stringer function String() string // Clones the object - Clone() (PatternFlowVlanTpidMetricTag, error) + Clone() (PatternFlowTcpCtlFinMetricTag, error) validateToAndFrom() error validateObj(vObj *validation, set_default bool) setDefault() - // Name returns string, set in PatternFlowVlanTpidMetricTag. + // Name returns string, set in PatternFlowTcpCtlFinMetricTag. Name() string - // SetName assigns string provided by user to PatternFlowVlanTpidMetricTag - SetName(value string) PatternFlowVlanTpidMetricTag - // Offset returns uint32, set in PatternFlowVlanTpidMetricTag. + // SetName assigns string provided by user to PatternFlowTcpCtlFinMetricTag + SetName(value string) PatternFlowTcpCtlFinMetricTag + // Offset returns uint32, set in PatternFlowTcpCtlFinMetricTag. Offset() uint32 - // SetOffset assigns uint32 provided by user to PatternFlowVlanTpidMetricTag - SetOffset(value uint32) PatternFlowVlanTpidMetricTag - // HasOffset checks if Offset has been set in PatternFlowVlanTpidMetricTag + // SetOffset assigns uint32 provided by user to PatternFlowTcpCtlFinMetricTag + SetOffset(value uint32) PatternFlowTcpCtlFinMetricTag + // HasOffset checks if Offset has been set in PatternFlowTcpCtlFinMetricTag HasOffset() bool - // Length returns uint32, set in PatternFlowVlanTpidMetricTag. + // Length returns uint32, set in PatternFlowTcpCtlFinMetricTag. Length() uint32 - // SetLength assigns uint32 provided by user to PatternFlowVlanTpidMetricTag - SetLength(value uint32) PatternFlowVlanTpidMetricTag - // HasLength checks if Length has been set in PatternFlowVlanTpidMetricTag + // SetLength assigns uint32 provided by user to PatternFlowTcpCtlFinMetricTag + SetLength(value uint32) PatternFlowTcpCtlFinMetricTag + // HasLength checks if Length has been set in PatternFlowTcpCtlFinMetricTag HasLength() bool } // Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field // Name returns a string -func (obj *patternFlowVlanTpidMetricTag) Name() string { +func (obj *patternFlowTcpCtlFinMetricTag) Name() string { return *obj.obj.Name } // Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field -// SetName sets the string value in the PatternFlowVlanTpidMetricTag object -func (obj *patternFlowVlanTpidMetricTag) SetName(value string) PatternFlowVlanTpidMetricTag { +// SetName sets the string value in the PatternFlowTcpCtlFinMetricTag object +func (obj *patternFlowTcpCtlFinMetricTag) SetName(value string) PatternFlowTcpCtlFinMetricTag { obj.obj.Name = &value return obj @@ -189990,7 +233147,7 @@ func (obj *patternFlowVlanTpidMetricTag) SetName(value string) PatternFlowVlanTp // Offset in bits relative to start of corresponding header field // Offset returns a uint32 -func (obj *patternFlowVlanTpidMetricTag) Offset() uint32 { +func (obj *patternFlowTcpCtlFinMetricTag) Offset() uint32 { return *obj.obj.Offset @@ -189998,13 +233155,13 @@ func (obj *patternFlowVlanTpidMetricTag) Offset() uint32 { // Offset in bits relative to start of corresponding header field // Offset returns a uint32 -func (obj *patternFlowVlanTpidMetricTag) HasOffset() bool { +func (obj *patternFlowTcpCtlFinMetricTag) HasOffset() bool { return obj.obj.Offset != nil } // Offset in bits relative to start of corresponding header field -// SetOffset sets the uint32 value in the PatternFlowVlanTpidMetricTag object -func (obj *patternFlowVlanTpidMetricTag) SetOffset(value uint32) PatternFlowVlanTpidMetricTag { +// SetOffset sets the uint32 value in the PatternFlowTcpCtlFinMetricTag object +func (obj *patternFlowTcpCtlFinMetricTag) SetOffset(value uint32) PatternFlowTcpCtlFinMetricTag { obj.obj.Offset = &value return obj @@ -190012,7 +233169,7 @@ func (obj *patternFlowVlanTpidMetricTag) SetOffset(value uint32) PatternFlowVlan // Number of bits to track for metrics starting from configured offset of corresponding header field // Length returns a uint32 -func (obj *patternFlowVlanTpidMetricTag) Length() uint32 { +func (obj *patternFlowTcpCtlFinMetricTag) Length() uint32 { return *obj.obj.Length @@ -190020,83 +233177,83 @@ func (obj *patternFlowVlanTpidMetricTag) Length() uint32 { // Number of bits to track for metrics starting from configured offset of corresponding header field // Length returns a uint32 -func (obj *patternFlowVlanTpidMetricTag) HasLength() bool { +func (obj *patternFlowTcpCtlFinMetricTag) HasLength() bool { return obj.obj.Length != nil } // Number of bits to track for metrics starting from configured offset of corresponding header field -// SetLength sets the uint32 value in the PatternFlowVlanTpidMetricTag object -func (obj *patternFlowVlanTpidMetricTag) SetLength(value uint32) PatternFlowVlanTpidMetricTag { +// SetLength sets the uint32 value in the PatternFlowTcpCtlFinMetricTag object +func (obj *patternFlowTcpCtlFinMetricTag) SetLength(value uint32) PatternFlowTcpCtlFinMetricTag { obj.obj.Length = &value return obj } -func (obj *patternFlowVlanTpidMetricTag) validateObj(vObj *validation, set_default bool) { +func (obj *patternFlowTcpCtlFinMetricTag) validateObj(vObj *validation, set_default bool) { if set_default { obj.setDefault() } // Name is required if obj.obj.Name == nil { - vObj.validationErrors = append(vObj.validationErrors, "Name is required field on interface PatternFlowVlanTpidMetricTag") + vObj.validationErrors = append(vObj.validationErrors, "Name is required field on interface PatternFlowTcpCtlFinMetricTag") } if obj.obj.Offset != nil { - if *obj.obj.Offset > 15 { + if *obj.obj.Offset > 0 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowVlanTpidMetricTag.Offset <= 15 but Got %d", *obj.obj.Offset)) + fmt.Sprintf("0 <= PatternFlowTcpCtlFinMetricTag.Offset <= 0 but Got %d", *obj.obj.Offset)) } } if obj.obj.Length != nil { - if *obj.obj.Length < 1 || *obj.obj.Length > 16 { + if *obj.obj.Length < 1 || *obj.obj.Length > 1 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("1 <= PatternFlowVlanTpidMetricTag.Length <= 16 but Got %d", *obj.obj.Length)) + fmt.Sprintf("1 <= PatternFlowTcpCtlFinMetricTag.Length <= 1 but Got %d", *obj.obj.Length)) } } } -func (obj *patternFlowVlanTpidMetricTag) setDefault() { +func (obj *patternFlowTcpCtlFinMetricTag) setDefault() { if obj.obj.Offset == nil { obj.SetOffset(0) } if obj.obj.Length == nil { - obj.SetLength(16) + obj.SetLength(1) } } -// ***** PatternFlowVxlanFlagsCounter ***** -type patternFlowVxlanFlagsCounter struct { +// ***** PatternFlowTcpWindowCounter ***** +type patternFlowTcpWindowCounter struct { validation - obj *otg.PatternFlowVxlanFlagsCounter + obj *otg.PatternFlowTcpWindowCounter } -func NewPatternFlowVxlanFlagsCounter() PatternFlowVxlanFlagsCounter { - obj := patternFlowVxlanFlagsCounter{obj: &otg.PatternFlowVxlanFlagsCounter{}} +func NewPatternFlowTcpWindowCounter() PatternFlowTcpWindowCounter { + obj := patternFlowTcpWindowCounter{obj: &otg.PatternFlowTcpWindowCounter{}} obj.setDefault() return &obj } -func (obj *patternFlowVxlanFlagsCounter) Msg() *otg.PatternFlowVxlanFlagsCounter { +func (obj *patternFlowTcpWindowCounter) Msg() *otg.PatternFlowTcpWindowCounter { return obj.obj } -func (obj *patternFlowVxlanFlagsCounter) SetMsg(msg *otg.PatternFlowVxlanFlagsCounter) PatternFlowVxlanFlagsCounter { +func (obj *patternFlowTcpWindowCounter) SetMsg(msg *otg.PatternFlowTcpWindowCounter) PatternFlowTcpWindowCounter { proto.Merge(obj.obj, msg) return obj } -func (obj *patternFlowVxlanFlagsCounter) ToProto() (*otg.PatternFlowVxlanFlagsCounter, error) { +func (obj *patternFlowTcpWindowCounter) ToProto() (*otg.PatternFlowTcpWindowCounter, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -190104,7 +233261,7 @@ func (obj *patternFlowVxlanFlagsCounter) ToProto() (*otg.PatternFlowVxlanFlagsCo return obj.Msg(), nil } -func (obj *patternFlowVxlanFlagsCounter) FromProto(msg *otg.PatternFlowVxlanFlagsCounter) (PatternFlowVxlanFlagsCounter, error) { +func (obj *patternFlowTcpWindowCounter) FromProto(msg *otg.PatternFlowTcpWindowCounter) (PatternFlowTcpWindowCounter, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -190113,7 +233270,7 @@ func (obj *patternFlowVxlanFlagsCounter) FromProto(msg *otg.PatternFlowVxlanFlag return newObj, nil } -func (obj *patternFlowVxlanFlagsCounter) ToPbText() (string, error) { +func (obj *patternFlowTcpWindowCounter) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -190125,7 +233282,7 @@ func (obj *patternFlowVxlanFlagsCounter) ToPbText() (string, error) { return string(protoMarshal), nil } -func (obj *patternFlowVxlanFlagsCounter) FromPbText(value string) error { +func (obj *patternFlowTcpWindowCounter) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj @@ -190138,7 +233295,7 @@ func (obj *patternFlowVxlanFlagsCounter) FromPbText(value string) error { return retObj } -func (obj *patternFlowVxlanFlagsCounter) ToYaml() (string, error) { +func (obj *patternFlowTcpWindowCounter) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -190159,7 +233316,7 @@ func (obj *patternFlowVxlanFlagsCounter) ToYaml() (string, error) { return string(data), nil } -func (obj *patternFlowVxlanFlagsCounter) FromYaml(value string) error { +func (obj *patternFlowTcpWindowCounter) FromYaml(value string) error { if value == "" { value = "{}" } @@ -190184,7 +233341,7 @@ func (obj *patternFlowVxlanFlagsCounter) FromYaml(value string) error { return nil } -func (obj *patternFlowVxlanFlagsCounter) ToJson() (string, error) { +func (obj *patternFlowTcpWindowCounter) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -190202,7 +233359,7 @@ func (obj *patternFlowVxlanFlagsCounter) ToJson() (string, error) { return string(data), nil } -func (obj *patternFlowVxlanFlagsCounter) FromJson(value string) error { +func (obj *patternFlowTcpWindowCounter) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -190223,19 +233380,19 @@ func (obj *patternFlowVxlanFlagsCounter) FromJson(value string) error { return nil } -func (obj *patternFlowVxlanFlagsCounter) validateToAndFrom() error { +func (obj *patternFlowTcpWindowCounter) validateToAndFrom() error { // emptyVars() obj.validateObj(&obj.validation, true) return obj.validationResult() } -func (obj *patternFlowVxlanFlagsCounter) Validate() error { +func (obj *patternFlowTcpWindowCounter) Validate() error { // emptyVars() obj.validateObj(&obj.validation, false) return obj.validationResult() } -func (obj *patternFlowVxlanFlagsCounter) String() string { +func (obj *patternFlowTcpWindowCounter) String() string { str, err := obj.ToYaml() if err != nil { return err.Error() @@ -190243,12 +233400,12 @@ func (obj *patternFlowVxlanFlagsCounter) String() string { return str } -func (obj *patternFlowVxlanFlagsCounter) Clone() (PatternFlowVxlanFlagsCounter, error) { +func (obj *patternFlowTcpWindowCounter) Clone() (PatternFlowTcpWindowCounter, error) { vErr := obj.Validate() if vErr != nil { return nil, vErr } - newObj := NewPatternFlowVxlanFlagsCounter() + newObj := NewPatternFlowTcpWindowCounter() data, err := proto.Marshal(obj.Msg()) if err != nil { return nil, err @@ -190260,63 +233417,63 @@ func (obj *patternFlowVxlanFlagsCounter) Clone() (PatternFlowVxlanFlagsCounter, return newObj, nil } -// PatternFlowVxlanFlagsCounter is integer counter pattern -type PatternFlowVxlanFlagsCounter interface { +// PatternFlowTcpWindowCounter is integer counter pattern +type PatternFlowTcpWindowCounter interface { Validation - // Msg marshals PatternFlowVxlanFlagsCounter to protobuf object *otg.PatternFlowVxlanFlagsCounter + // Msg marshals PatternFlowTcpWindowCounter to protobuf object *otg.PatternFlowTcpWindowCounter // and doesn't set defaults - Msg() *otg.PatternFlowVxlanFlagsCounter - // SetMsg unmarshals PatternFlowVxlanFlagsCounter from protobuf object *otg.PatternFlowVxlanFlagsCounter + Msg() *otg.PatternFlowTcpWindowCounter + // SetMsg unmarshals PatternFlowTcpWindowCounter from protobuf object *otg.PatternFlowTcpWindowCounter // and doesn't set defaults - SetMsg(*otg.PatternFlowVxlanFlagsCounter) PatternFlowVxlanFlagsCounter - // ToProto marshals PatternFlowVxlanFlagsCounter to protobuf object *otg.PatternFlowVxlanFlagsCounter - ToProto() (*otg.PatternFlowVxlanFlagsCounter, error) - // ToPbText marshals PatternFlowVxlanFlagsCounter to protobuf text + SetMsg(*otg.PatternFlowTcpWindowCounter) PatternFlowTcpWindowCounter + // ToProto marshals PatternFlowTcpWindowCounter to protobuf object *otg.PatternFlowTcpWindowCounter + ToProto() (*otg.PatternFlowTcpWindowCounter, error) + // ToPbText marshals PatternFlowTcpWindowCounter to protobuf text ToPbText() (string, error) - // ToYaml marshals PatternFlowVxlanFlagsCounter to YAML text + // ToYaml marshals PatternFlowTcpWindowCounter to YAML text ToYaml() (string, error) - // ToJson marshals PatternFlowVxlanFlagsCounter to JSON text + // ToJson marshals PatternFlowTcpWindowCounter to JSON text ToJson() (string, error) - // FromProto unmarshals PatternFlowVxlanFlagsCounter from protobuf object *otg.PatternFlowVxlanFlagsCounter - FromProto(msg *otg.PatternFlowVxlanFlagsCounter) (PatternFlowVxlanFlagsCounter, error) - // FromPbText unmarshals PatternFlowVxlanFlagsCounter from protobuf text + // FromProto unmarshals PatternFlowTcpWindowCounter from protobuf object *otg.PatternFlowTcpWindowCounter + FromProto(msg *otg.PatternFlowTcpWindowCounter) (PatternFlowTcpWindowCounter, error) + // FromPbText unmarshals PatternFlowTcpWindowCounter from protobuf text FromPbText(value string) error - // FromYaml unmarshals PatternFlowVxlanFlagsCounter from YAML text + // FromYaml unmarshals PatternFlowTcpWindowCounter from YAML text FromYaml(value string) error - // FromJson unmarshals PatternFlowVxlanFlagsCounter from JSON text + // FromJson unmarshals PatternFlowTcpWindowCounter from JSON text FromJson(value string) error - // Validate validates PatternFlowVxlanFlagsCounter + // Validate validates PatternFlowTcpWindowCounter Validate() error // A stringer function String() string // Clones the object - Clone() (PatternFlowVxlanFlagsCounter, error) + Clone() (PatternFlowTcpWindowCounter, error) validateToAndFrom() error validateObj(vObj *validation, set_default bool) setDefault() - // Start returns uint32, set in PatternFlowVxlanFlagsCounter. + // Start returns uint32, set in PatternFlowTcpWindowCounter. Start() uint32 - // SetStart assigns uint32 provided by user to PatternFlowVxlanFlagsCounter - SetStart(value uint32) PatternFlowVxlanFlagsCounter - // HasStart checks if Start has been set in PatternFlowVxlanFlagsCounter + // SetStart assigns uint32 provided by user to PatternFlowTcpWindowCounter + SetStart(value uint32) PatternFlowTcpWindowCounter + // HasStart checks if Start has been set in PatternFlowTcpWindowCounter HasStart() bool - // Step returns uint32, set in PatternFlowVxlanFlagsCounter. + // Step returns uint32, set in PatternFlowTcpWindowCounter. Step() uint32 - // SetStep assigns uint32 provided by user to PatternFlowVxlanFlagsCounter - SetStep(value uint32) PatternFlowVxlanFlagsCounter - // HasStep checks if Step has been set in PatternFlowVxlanFlagsCounter + // SetStep assigns uint32 provided by user to PatternFlowTcpWindowCounter + SetStep(value uint32) PatternFlowTcpWindowCounter + // HasStep checks if Step has been set in PatternFlowTcpWindowCounter HasStep() bool - // Count returns uint32, set in PatternFlowVxlanFlagsCounter. + // Count returns uint32, set in PatternFlowTcpWindowCounter. Count() uint32 - // SetCount assigns uint32 provided by user to PatternFlowVxlanFlagsCounter - SetCount(value uint32) PatternFlowVxlanFlagsCounter - // HasCount checks if Count has been set in PatternFlowVxlanFlagsCounter + // SetCount assigns uint32 provided by user to PatternFlowTcpWindowCounter + SetCount(value uint32) PatternFlowTcpWindowCounter + // HasCount checks if Count has been set in PatternFlowTcpWindowCounter HasCount() bool } // description is TBD // Start returns a uint32 -func (obj *patternFlowVxlanFlagsCounter) Start() uint32 { +func (obj *patternFlowTcpWindowCounter) Start() uint32 { return *obj.obj.Start @@ -190324,13 +233481,13 @@ func (obj *patternFlowVxlanFlagsCounter) Start() uint32 { // description is TBD // Start returns a uint32 -func (obj *patternFlowVxlanFlagsCounter) HasStart() bool { +func (obj *patternFlowTcpWindowCounter) HasStart() bool { return obj.obj.Start != nil } // description is TBD -// SetStart sets the uint32 value in the PatternFlowVxlanFlagsCounter object -func (obj *patternFlowVxlanFlagsCounter) SetStart(value uint32) PatternFlowVxlanFlagsCounter { +// SetStart sets the uint32 value in the PatternFlowTcpWindowCounter object +func (obj *patternFlowTcpWindowCounter) SetStart(value uint32) PatternFlowTcpWindowCounter { obj.obj.Start = &value return obj @@ -190338,7 +233495,7 @@ func (obj *patternFlowVxlanFlagsCounter) SetStart(value uint32) PatternFlowVxlan // description is TBD // Step returns a uint32 -func (obj *patternFlowVxlanFlagsCounter) Step() uint32 { +func (obj *patternFlowTcpWindowCounter) Step() uint32 { return *obj.obj.Step @@ -190346,13 +233503,13 @@ func (obj *patternFlowVxlanFlagsCounter) Step() uint32 { // description is TBD // Step returns a uint32 -func (obj *patternFlowVxlanFlagsCounter) HasStep() bool { +func (obj *patternFlowTcpWindowCounter) HasStep() bool { return obj.obj.Step != nil } // description is TBD -// SetStep sets the uint32 value in the PatternFlowVxlanFlagsCounter object -func (obj *patternFlowVxlanFlagsCounter) SetStep(value uint32) PatternFlowVxlanFlagsCounter { +// SetStep sets the uint32 value in the PatternFlowTcpWindowCounter object +func (obj *patternFlowTcpWindowCounter) SetStep(value uint32) PatternFlowTcpWindowCounter { obj.obj.Step = &value return obj @@ -190360,7 +233517,7 @@ func (obj *patternFlowVxlanFlagsCounter) SetStep(value uint32) PatternFlowVxlanF // description is TBD // Count returns a uint32 -func (obj *patternFlowVxlanFlagsCounter) Count() uint32 { +func (obj *patternFlowTcpWindowCounter) Count() uint32 { return *obj.obj.Count @@ -190368,58 +233525,58 @@ func (obj *patternFlowVxlanFlagsCounter) Count() uint32 { // description is TBD // Count returns a uint32 -func (obj *patternFlowVxlanFlagsCounter) HasCount() bool { +func (obj *patternFlowTcpWindowCounter) HasCount() bool { return obj.obj.Count != nil } // description is TBD -// SetCount sets the uint32 value in the PatternFlowVxlanFlagsCounter object -func (obj *patternFlowVxlanFlagsCounter) SetCount(value uint32) PatternFlowVxlanFlagsCounter { +// SetCount sets the uint32 value in the PatternFlowTcpWindowCounter object +func (obj *patternFlowTcpWindowCounter) SetCount(value uint32) PatternFlowTcpWindowCounter { obj.obj.Count = &value return obj } -func (obj *patternFlowVxlanFlagsCounter) validateObj(vObj *validation, set_default bool) { +func (obj *patternFlowTcpWindowCounter) validateObj(vObj *validation, set_default bool) { if set_default { obj.setDefault() } if obj.obj.Start != nil { - if *obj.obj.Start > 255 { + if *obj.obj.Start > 65535 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowVxlanFlagsCounter.Start <= 255 but Got %d", *obj.obj.Start)) + fmt.Sprintf("0 <= PatternFlowTcpWindowCounter.Start <= 65535 but Got %d", *obj.obj.Start)) } } if obj.obj.Step != nil { - if *obj.obj.Step > 255 { + if *obj.obj.Step > 65535 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowVxlanFlagsCounter.Step <= 255 but Got %d", *obj.obj.Step)) + fmt.Sprintf("0 <= PatternFlowTcpWindowCounter.Step <= 65535 but Got %d", *obj.obj.Step)) } } if obj.obj.Count != nil { - if *obj.obj.Count > 255 { + if *obj.obj.Count > 65535 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowVxlanFlagsCounter.Count <= 255 but Got %d", *obj.obj.Count)) + fmt.Sprintf("0 <= PatternFlowTcpWindowCounter.Count <= 65535 but Got %d", *obj.obj.Count)) } } } -func (obj *patternFlowVxlanFlagsCounter) setDefault() { +func (obj *patternFlowTcpWindowCounter) setDefault() { if obj.obj.Start == nil { - obj.SetStart(8) + obj.SetStart(0) } if obj.obj.Step == nil { obj.SetStep(1) @@ -190430,29 +233587,29 @@ func (obj *patternFlowVxlanFlagsCounter) setDefault() { } -// ***** PatternFlowVxlanFlagsMetricTag ***** -type patternFlowVxlanFlagsMetricTag struct { +// ***** PatternFlowTcpWindowMetricTag ***** +type patternFlowTcpWindowMetricTag struct { validation - obj *otg.PatternFlowVxlanFlagsMetricTag + obj *otg.PatternFlowTcpWindowMetricTag } -func NewPatternFlowVxlanFlagsMetricTag() PatternFlowVxlanFlagsMetricTag { - obj := patternFlowVxlanFlagsMetricTag{obj: &otg.PatternFlowVxlanFlagsMetricTag{}} +func NewPatternFlowTcpWindowMetricTag() PatternFlowTcpWindowMetricTag { + obj := patternFlowTcpWindowMetricTag{obj: &otg.PatternFlowTcpWindowMetricTag{}} obj.setDefault() return &obj } -func (obj *patternFlowVxlanFlagsMetricTag) Msg() *otg.PatternFlowVxlanFlagsMetricTag { +func (obj *patternFlowTcpWindowMetricTag) Msg() *otg.PatternFlowTcpWindowMetricTag { return obj.obj } -func (obj *patternFlowVxlanFlagsMetricTag) SetMsg(msg *otg.PatternFlowVxlanFlagsMetricTag) PatternFlowVxlanFlagsMetricTag { +func (obj *patternFlowTcpWindowMetricTag) SetMsg(msg *otg.PatternFlowTcpWindowMetricTag) PatternFlowTcpWindowMetricTag { proto.Merge(obj.obj, msg) return obj } -func (obj *patternFlowVxlanFlagsMetricTag) ToProto() (*otg.PatternFlowVxlanFlagsMetricTag, error) { +func (obj *patternFlowTcpWindowMetricTag) ToProto() (*otg.PatternFlowTcpWindowMetricTag, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -190460,7 +233617,7 @@ func (obj *patternFlowVxlanFlagsMetricTag) ToProto() (*otg.PatternFlowVxlanFlags return obj.Msg(), nil } -func (obj *patternFlowVxlanFlagsMetricTag) FromProto(msg *otg.PatternFlowVxlanFlagsMetricTag) (PatternFlowVxlanFlagsMetricTag, error) { +func (obj *patternFlowTcpWindowMetricTag) FromProto(msg *otg.PatternFlowTcpWindowMetricTag) (PatternFlowTcpWindowMetricTag, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -190469,7 +233626,7 @@ func (obj *patternFlowVxlanFlagsMetricTag) FromProto(msg *otg.PatternFlowVxlanFl return newObj, nil } -func (obj *patternFlowVxlanFlagsMetricTag) ToPbText() (string, error) { +func (obj *patternFlowTcpWindowMetricTag) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -190481,7 +233638,7 @@ func (obj *patternFlowVxlanFlagsMetricTag) ToPbText() (string, error) { return string(protoMarshal), nil } -func (obj *patternFlowVxlanFlagsMetricTag) FromPbText(value string) error { +func (obj *patternFlowTcpWindowMetricTag) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj @@ -190494,7 +233651,7 @@ func (obj *patternFlowVxlanFlagsMetricTag) FromPbText(value string) error { return retObj } -func (obj *patternFlowVxlanFlagsMetricTag) ToYaml() (string, error) { +func (obj *patternFlowTcpWindowMetricTag) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -190515,7 +233672,7 @@ func (obj *patternFlowVxlanFlagsMetricTag) ToYaml() (string, error) { return string(data), nil } -func (obj *patternFlowVxlanFlagsMetricTag) FromYaml(value string) error { +func (obj *patternFlowTcpWindowMetricTag) FromYaml(value string) error { if value == "" { value = "{}" } @@ -190540,7 +233697,7 @@ func (obj *patternFlowVxlanFlagsMetricTag) FromYaml(value string) error { return nil } -func (obj *patternFlowVxlanFlagsMetricTag) ToJson() (string, error) { +func (obj *patternFlowTcpWindowMetricTag) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -190558,7 +233715,7 @@ func (obj *patternFlowVxlanFlagsMetricTag) ToJson() (string, error) { return string(data), nil } -func (obj *patternFlowVxlanFlagsMetricTag) FromJson(value string) error { +func (obj *patternFlowTcpWindowMetricTag) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -190579,19 +233736,19 @@ func (obj *patternFlowVxlanFlagsMetricTag) FromJson(value string) error { return nil } -func (obj *patternFlowVxlanFlagsMetricTag) validateToAndFrom() error { +func (obj *patternFlowTcpWindowMetricTag) validateToAndFrom() error { // emptyVars() obj.validateObj(&obj.validation, true) return obj.validationResult() } -func (obj *patternFlowVxlanFlagsMetricTag) Validate() error { +func (obj *patternFlowTcpWindowMetricTag) Validate() error { // emptyVars() obj.validateObj(&obj.validation, false) return obj.validationResult() } -func (obj *patternFlowVxlanFlagsMetricTag) String() string { +func (obj *patternFlowTcpWindowMetricTag) String() string { str, err := obj.ToYaml() if err != nil { return err.Error() @@ -190599,12 +233756,12 @@ func (obj *patternFlowVxlanFlagsMetricTag) String() string { return str } -func (obj *patternFlowVxlanFlagsMetricTag) Clone() (PatternFlowVxlanFlagsMetricTag, error) { +func (obj *patternFlowTcpWindowMetricTag) Clone() (PatternFlowTcpWindowMetricTag, error) { vErr := obj.Validate() if vErr != nil { return nil, vErr } - newObj := NewPatternFlowVxlanFlagsMetricTag() + newObj := NewPatternFlowTcpWindowMetricTag() data, err := proto.Marshal(obj.Msg()) if err != nil { return nil, err @@ -190616,69 +233773,69 @@ func (obj *patternFlowVxlanFlagsMetricTag) Clone() (PatternFlowVxlanFlagsMetricT return newObj, nil } -// PatternFlowVxlanFlagsMetricTag is metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. -type PatternFlowVxlanFlagsMetricTag interface { +// PatternFlowTcpWindowMetricTag is metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. +type PatternFlowTcpWindowMetricTag interface { Validation - // Msg marshals PatternFlowVxlanFlagsMetricTag to protobuf object *otg.PatternFlowVxlanFlagsMetricTag + // Msg marshals PatternFlowTcpWindowMetricTag to protobuf object *otg.PatternFlowTcpWindowMetricTag // and doesn't set defaults - Msg() *otg.PatternFlowVxlanFlagsMetricTag - // SetMsg unmarshals PatternFlowVxlanFlagsMetricTag from protobuf object *otg.PatternFlowVxlanFlagsMetricTag + Msg() *otg.PatternFlowTcpWindowMetricTag + // SetMsg unmarshals PatternFlowTcpWindowMetricTag from protobuf object *otg.PatternFlowTcpWindowMetricTag // and doesn't set defaults - SetMsg(*otg.PatternFlowVxlanFlagsMetricTag) PatternFlowVxlanFlagsMetricTag - // ToProto marshals PatternFlowVxlanFlagsMetricTag to protobuf object *otg.PatternFlowVxlanFlagsMetricTag - ToProto() (*otg.PatternFlowVxlanFlagsMetricTag, error) - // ToPbText marshals PatternFlowVxlanFlagsMetricTag to protobuf text + SetMsg(*otg.PatternFlowTcpWindowMetricTag) PatternFlowTcpWindowMetricTag + // ToProto marshals PatternFlowTcpWindowMetricTag to protobuf object *otg.PatternFlowTcpWindowMetricTag + ToProto() (*otg.PatternFlowTcpWindowMetricTag, error) + // ToPbText marshals PatternFlowTcpWindowMetricTag to protobuf text ToPbText() (string, error) - // ToYaml marshals PatternFlowVxlanFlagsMetricTag to YAML text + // ToYaml marshals PatternFlowTcpWindowMetricTag to YAML text ToYaml() (string, error) - // ToJson marshals PatternFlowVxlanFlagsMetricTag to JSON text + // ToJson marshals PatternFlowTcpWindowMetricTag to JSON text ToJson() (string, error) - // FromProto unmarshals PatternFlowVxlanFlagsMetricTag from protobuf object *otg.PatternFlowVxlanFlagsMetricTag - FromProto(msg *otg.PatternFlowVxlanFlagsMetricTag) (PatternFlowVxlanFlagsMetricTag, error) - // FromPbText unmarshals PatternFlowVxlanFlagsMetricTag from protobuf text + // FromProto unmarshals PatternFlowTcpWindowMetricTag from protobuf object *otg.PatternFlowTcpWindowMetricTag + FromProto(msg *otg.PatternFlowTcpWindowMetricTag) (PatternFlowTcpWindowMetricTag, error) + // FromPbText unmarshals PatternFlowTcpWindowMetricTag from protobuf text FromPbText(value string) error - // FromYaml unmarshals PatternFlowVxlanFlagsMetricTag from YAML text + // FromYaml unmarshals PatternFlowTcpWindowMetricTag from YAML text FromYaml(value string) error - // FromJson unmarshals PatternFlowVxlanFlagsMetricTag from JSON text + // FromJson unmarshals PatternFlowTcpWindowMetricTag from JSON text FromJson(value string) error - // Validate validates PatternFlowVxlanFlagsMetricTag + // Validate validates PatternFlowTcpWindowMetricTag Validate() error // A stringer function String() string // Clones the object - Clone() (PatternFlowVxlanFlagsMetricTag, error) + Clone() (PatternFlowTcpWindowMetricTag, error) validateToAndFrom() error validateObj(vObj *validation, set_default bool) setDefault() - // Name returns string, set in PatternFlowVxlanFlagsMetricTag. + // Name returns string, set in PatternFlowTcpWindowMetricTag. Name() string - // SetName assigns string provided by user to PatternFlowVxlanFlagsMetricTag - SetName(value string) PatternFlowVxlanFlagsMetricTag - // Offset returns uint32, set in PatternFlowVxlanFlagsMetricTag. + // SetName assigns string provided by user to PatternFlowTcpWindowMetricTag + SetName(value string) PatternFlowTcpWindowMetricTag + // Offset returns uint32, set in PatternFlowTcpWindowMetricTag. Offset() uint32 - // SetOffset assigns uint32 provided by user to PatternFlowVxlanFlagsMetricTag - SetOffset(value uint32) PatternFlowVxlanFlagsMetricTag - // HasOffset checks if Offset has been set in PatternFlowVxlanFlagsMetricTag + // SetOffset assigns uint32 provided by user to PatternFlowTcpWindowMetricTag + SetOffset(value uint32) PatternFlowTcpWindowMetricTag + // HasOffset checks if Offset has been set in PatternFlowTcpWindowMetricTag HasOffset() bool - // Length returns uint32, set in PatternFlowVxlanFlagsMetricTag. + // Length returns uint32, set in PatternFlowTcpWindowMetricTag. Length() uint32 - // SetLength assigns uint32 provided by user to PatternFlowVxlanFlagsMetricTag - SetLength(value uint32) PatternFlowVxlanFlagsMetricTag - // HasLength checks if Length has been set in PatternFlowVxlanFlagsMetricTag + // SetLength assigns uint32 provided by user to PatternFlowTcpWindowMetricTag + SetLength(value uint32) PatternFlowTcpWindowMetricTag + // HasLength checks if Length has been set in PatternFlowTcpWindowMetricTag HasLength() bool } // Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field // Name returns a string -func (obj *patternFlowVxlanFlagsMetricTag) Name() string { +func (obj *patternFlowTcpWindowMetricTag) Name() string { return *obj.obj.Name } // Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field -// SetName sets the string value in the PatternFlowVxlanFlagsMetricTag object -func (obj *patternFlowVxlanFlagsMetricTag) SetName(value string) PatternFlowVxlanFlagsMetricTag { +// SetName sets the string value in the PatternFlowTcpWindowMetricTag object +func (obj *patternFlowTcpWindowMetricTag) SetName(value string) PatternFlowTcpWindowMetricTag { obj.obj.Name = &value return obj @@ -190686,7 +233843,7 @@ func (obj *patternFlowVxlanFlagsMetricTag) SetName(value string) PatternFlowVxla // Offset in bits relative to start of corresponding header field // Offset returns a uint32 -func (obj *patternFlowVxlanFlagsMetricTag) Offset() uint32 { +func (obj *patternFlowTcpWindowMetricTag) Offset() uint32 { return *obj.obj.Offset @@ -190694,13 +233851,13 @@ func (obj *patternFlowVxlanFlagsMetricTag) Offset() uint32 { // Offset in bits relative to start of corresponding header field // Offset returns a uint32 -func (obj *patternFlowVxlanFlagsMetricTag) HasOffset() bool { +func (obj *patternFlowTcpWindowMetricTag) HasOffset() bool { return obj.obj.Offset != nil } // Offset in bits relative to start of corresponding header field -// SetOffset sets the uint32 value in the PatternFlowVxlanFlagsMetricTag object -func (obj *patternFlowVxlanFlagsMetricTag) SetOffset(value uint32) PatternFlowVxlanFlagsMetricTag { +// SetOffset sets the uint32 value in the PatternFlowTcpWindowMetricTag object +func (obj *patternFlowTcpWindowMetricTag) SetOffset(value uint32) PatternFlowTcpWindowMetricTag { obj.obj.Offset = &value return obj @@ -190708,7 +233865,7 @@ func (obj *patternFlowVxlanFlagsMetricTag) SetOffset(value uint32) PatternFlowVx // Number of bits to track for metrics starting from configured offset of corresponding header field // Length returns a uint32 -func (obj *patternFlowVxlanFlagsMetricTag) Length() uint32 { +func (obj *patternFlowTcpWindowMetricTag) Length() uint32 { return *obj.obj.Length @@ -190716,83 +233873,83 @@ func (obj *patternFlowVxlanFlagsMetricTag) Length() uint32 { // Number of bits to track for metrics starting from configured offset of corresponding header field // Length returns a uint32 -func (obj *patternFlowVxlanFlagsMetricTag) HasLength() bool { +func (obj *patternFlowTcpWindowMetricTag) HasLength() bool { return obj.obj.Length != nil } // Number of bits to track for metrics starting from configured offset of corresponding header field -// SetLength sets the uint32 value in the PatternFlowVxlanFlagsMetricTag object -func (obj *patternFlowVxlanFlagsMetricTag) SetLength(value uint32) PatternFlowVxlanFlagsMetricTag { +// SetLength sets the uint32 value in the PatternFlowTcpWindowMetricTag object +func (obj *patternFlowTcpWindowMetricTag) SetLength(value uint32) PatternFlowTcpWindowMetricTag { obj.obj.Length = &value return obj } -func (obj *patternFlowVxlanFlagsMetricTag) validateObj(vObj *validation, set_default bool) { +func (obj *patternFlowTcpWindowMetricTag) validateObj(vObj *validation, set_default bool) { if set_default { obj.setDefault() } // Name is required if obj.obj.Name == nil { - vObj.validationErrors = append(vObj.validationErrors, "Name is required field on interface PatternFlowVxlanFlagsMetricTag") + vObj.validationErrors = append(vObj.validationErrors, "Name is required field on interface PatternFlowTcpWindowMetricTag") } if obj.obj.Offset != nil { - if *obj.obj.Offset > 7 { + if *obj.obj.Offset > 15 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowVxlanFlagsMetricTag.Offset <= 7 but Got %d", *obj.obj.Offset)) + fmt.Sprintf("0 <= PatternFlowTcpWindowMetricTag.Offset <= 15 but Got %d", *obj.obj.Offset)) } } if obj.obj.Length != nil { - if *obj.obj.Length < 1 || *obj.obj.Length > 8 { + if *obj.obj.Length < 1 || *obj.obj.Length > 16 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("1 <= PatternFlowVxlanFlagsMetricTag.Length <= 8 but Got %d", *obj.obj.Length)) + fmt.Sprintf("1 <= PatternFlowTcpWindowMetricTag.Length <= 16 but Got %d", *obj.obj.Length)) } } } -func (obj *patternFlowVxlanFlagsMetricTag) setDefault() { +func (obj *patternFlowTcpWindowMetricTag) setDefault() { if obj.obj.Offset == nil { obj.SetOffset(0) } if obj.obj.Length == nil { - obj.SetLength(8) + obj.SetLength(16) } } -// ***** PatternFlowVxlanReserved0Counter ***** -type patternFlowVxlanReserved0Counter struct { +// ***** PatternFlowUdpSrcPortCounter ***** +type patternFlowUdpSrcPortCounter struct { validation - obj *otg.PatternFlowVxlanReserved0Counter + obj *otg.PatternFlowUdpSrcPortCounter } -func NewPatternFlowVxlanReserved0Counter() PatternFlowVxlanReserved0Counter { - obj := patternFlowVxlanReserved0Counter{obj: &otg.PatternFlowVxlanReserved0Counter{}} +func NewPatternFlowUdpSrcPortCounter() PatternFlowUdpSrcPortCounter { + obj := patternFlowUdpSrcPortCounter{obj: &otg.PatternFlowUdpSrcPortCounter{}} obj.setDefault() return &obj } -func (obj *patternFlowVxlanReserved0Counter) Msg() *otg.PatternFlowVxlanReserved0Counter { +func (obj *patternFlowUdpSrcPortCounter) Msg() *otg.PatternFlowUdpSrcPortCounter { return obj.obj } -func (obj *patternFlowVxlanReserved0Counter) SetMsg(msg *otg.PatternFlowVxlanReserved0Counter) PatternFlowVxlanReserved0Counter { +func (obj *patternFlowUdpSrcPortCounter) SetMsg(msg *otg.PatternFlowUdpSrcPortCounter) PatternFlowUdpSrcPortCounter { proto.Merge(obj.obj, msg) return obj } -func (obj *patternFlowVxlanReserved0Counter) ToProto() (*otg.PatternFlowVxlanReserved0Counter, error) { +func (obj *patternFlowUdpSrcPortCounter) ToProto() (*otg.PatternFlowUdpSrcPortCounter, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -190800,7 +233957,7 @@ func (obj *patternFlowVxlanReserved0Counter) ToProto() (*otg.PatternFlowVxlanRes return obj.Msg(), nil } -func (obj *patternFlowVxlanReserved0Counter) FromProto(msg *otg.PatternFlowVxlanReserved0Counter) (PatternFlowVxlanReserved0Counter, error) { +func (obj *patternFlowUdpSrcPortCounter) FromProto(msg *otg.PatternFlowUdpSrcPortCounter) (PatternFlowUdpSrcPortCounter, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -190809,7 +233966,7 @@ func (obj *patternFlowVxlanReserved0Counter) FromProto(msg *otg.PatternFlowVxlan return newObj, nil } -func (obj *patternFlowVxlanReserved0Counter) ToPbText() (string, error) { +func (obj *patternFlowUdpSrcPortCounter) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -190821,7 +233978,7 @@ func (obj *patternFlowVxlanReserved0Counter) ToPbText() (string, error) { return string(protoMarshal), nil } -func (obj *patternFlowVxlanReserved0Counter) FromPbText(value string) error { +func (obj *patternFlowUdpSrcPortCounter) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj @@ -190834,7 +233991,7 @@ func (obj *patternFlowVxlanReserved0Counter) FromPbText(value string) error { return retObj } -func (obj *patternFlowVxlanReserved0Counter) ToYaml() (string, error) { +func (obj *patternFlowUdpSrcPortCounter) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -190855,7 +234012,7 @@ func (obj *patternFlowVxlanReserved0Counter) ToYaml() (string, error) { return string(data), nil } -func (obj *patternFlowVxlanReserved0Counter) FromYaml(value string) error { +func (obj *patternFlowUdpSrcPortCounter) FromYaml(value string) error { if value == "" { value = "{}" } @@ -190880,7 +234037,7 @@ func (obj *patternFlowVxlanReserved0Counter) FromYaml(value string) error { return nil } -func (obj *patternFlowVxlanReserved0Counter) ToJson() (string, error) { +func (obj *patternFlowUdpSrcPortCounter) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -190898,7 +234055,7 @@ func (obj *patternFlowVxlanReserved0Counter) ToJson() (string, error) { return string(data), nil } -func (obj *patternFlowVxlanReserved0Counter) FromJson(value string) error { +func (obj *patternFlowUdpSrcPortCounter) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -190919,19 +234076,19 @@ func (obj *patternFlowVxlanReserved0Counter) FromJson(value string) error { return nil } -func (obj *patternFlowVxlanReserved0Counter) validateToAndFrom() error { +func (obj *patternFlowUdpSrcPortCounter) validateToAndFrom() error { // emptyVars() obj.validateObj(&obj.validation, true) return obj.validationResult() } -func (obj *patternFlowVxlanReserved0Counter) Validate() error { +func (obj *patternFlowUdpSrcPortCounter) Validate() error { // emptyVars() obj.validateObj(&obj.validation, false) return obj.validationResult() } -func (obj *patternFlowVxlanReserved0Counter) String() string { +func (obj *patternFlowUdpSrcPortCounter) String() string { str, err := obj.ToYaml() if err != nil { return err.Error() @@ -190939,12 +234096,12 @@ func (obj *patternFlowVxlanReserved0Counter) String() string { return str } -func (obj *patternFlowVxlanReserved0Counter) Clone() (PatternFlowVxlanReserved0Counter, error) { +func (obj *patternFlowUdpSrcPortCounter) Clone() (PatternFlowUdpSrcPortCounter, error) { vErr := obj.Validate() if vErr != nil { return nil, vErr } - newObj := NewPatternFlowVxlanReserved0Counter() + newObj := NewPatternFlowUdpSrcPortCounter() data, err := proto.Marshal(obj.Msg()) if err != nil { return nil, err @@ -190956,63 +234113,63 @@ func (obj *patternFlowVxlanReserved0Counter) Clone() (PatternFlowVxlanReserved0C return newObj, nil } -// PatternFlowVxlanReserved0Counter is integer counter pattern -type PatternFlowVxlanReserved0Counter interface { +// PatternFlowUdpSrcPortCounter is integer counter pattern +type PatternFlowUdpSrcPortCounter interface { Validation - // Msg marshals PatternFlowVxlanReserved0Counter to protobuf object *otg.PatternFlowVxlanReserved0Counter + // Msg marshals PatternFlowUdpSrcPortCounter to protobuf object *otg.PatternFlowUdpSrcPortCounter // and doesn't set defaults - Msg() *otg.PatternFlowVxlanReserved0Counter - // SetMsg unmarshals PatternFlowVxlanReserved0Counter from protobuf object *otg.PatternFlowVxlanReserved0Counter + Msg() *otg.PatternFlowUdpSrcPortCounter + // SetMsg unmarshals PatternFlowUdpSrcPortCounter from protobuf object *otg.PatternFlowUdpSrcPortCounter // and doesn't set defaults - SetMsg(*otg.PatternFlowVxlanReserved0Counter) PatternFlowVxlanReserved0Counter - // ToProto marshals PatternFlowVxlanReserved0Counter to protobuf object *otg.PatternFlowVxlanReserved0Counter - ToProto() (*otg.PatternFlowVxlanReserved0Counter, error) - // ToPbText marshals PatternFlowVxlanReserved0Counter to protobuf text + SetMsg(*otg.PatternFlowUdpSrcPortCounter) PatternFlowUdpSrcPortCounter + // ToProto marshals PatternFlowUdpSrcPortCounter to protobuf object *otg.PatternFlowUdpSrcPortCounter + ToProto() (*otg.PatternFlowUdpSrcPortCounter, error) + // ToPbText marshals PatternFlowUdpSrcPortCounter to protobuf text ToPbText() (string, error) - // ToYaml marshals PatternFlowVxlanReserved0Counter to YAML text + // ToYaml marshals PatternFlowUdpSrcPortCounter to YAML text ToYaml() (string, error) - // ToJson marshals PatternFlowVxlanReserved0Counter to JSON text + // ToJson marshals PatternFlowUdpSrcPortCounter to JSON text ToJson() (string, error) - // FromProto unmarshals PatternFlowVxlanReserved0Counter from protobuf object *otg.PatternFlowVxlanReserved0Counter - FromProto(msg *otg.PatternFlowVxlanReserved0Counter) (PatternFlowVxlanReserved0Counter, error) - // FromPbText unmarshals PatternFlowVxlanReserved0Counter from protobuf text + // FromProto unmarshals PatternFlowUdpSrcPortCounter from protobuf object *otg.PatternFlowUdpSrcPortCounter + FromProto(msg *otg.PatternFlowUdpSrcPortCounter) (PatternFlowUdpSrcPortCounter, error) + // FromPbText unmarshals PatternFlowUdpSrcPortCounter from protobuf text FromPbText(value string) error - // FromYaml unmarshals PatternFlowVxlanReserved0Counter from YAML text + // FromYaml unmarshals PatternFlowUdpSrcPortCounter from YAML text FromYaml(value string) error - // FromJson unmarshals PatternFlowVxlanReserved0Counter from JSON text + // FromJson unmarshals PatternFlowUdpSrcPortCounter from JSON text FromJson(value string) error - // Validate validates PatternFlowVxlanReserved0Counter + // Validate validates PatternFlowUdpSrcPortCounter Validate() error // A stringer function String() string // Clones the object - Clone() (PatternFlowVxlanReserved0Counter, error) + Clone() (PatternFlowUdpSrcPortCounter, error) validateToAndFrom() error validateObj(vObj *validation, set_default bool) setDefault() - // Start returns uint32, set in PatternFlowVxlanReserved0Counter. + // Start returns uint32, set in PatternFlowUdpSrcPortCounter. Start() uint32 - // SetStart assigns uint32 provided by user to PatternFlowVxlanReserved0Counter - SetStart(value uint32) PatternFlowVxlanReserved0Counter - // HasStart checks if Start has been set in PatternFlowVxlanReserved0Counter + // SetStart assigns uint32 provided by user to PatternFlowUdpSrcPortCounter + SetStart(value uint32) PatternFlowUdpSrcPortCounter + // HasStart checks if Start has been set in PatternFlowUdpSrcPortCounter HasStart() bool - // Step returns uint32, set in PatternFlowVxlanReserved0Counter. + // Step returns uint32, set in PatternFlowUdpSrcPortCounter. Step() uint32 - // SetStep assigns uint32 provided by user to PatternFlowVxlanReserved0Counter - SetStep(value uint32) PatternFlowVxlanReserved0Counter - // HasStep checks if Step has been set in PatternFlowVxlanReserved0Counter + // SetStep assigns uint32 provided by user to PatternFlowUdpSrcPortCounter + SetStep(value uint32) PatternFlowUdpSrcPortCounter + // HasStep checks if Step has been set in PatternFlowUdpSrcPortCounter HasStep() bool - // Count returns uint32, set in PatternFlowVxlanReserved0Counter. + // Count returns uint32, set in PatternFlowUdpSrcPortCounter. Count() uint32 - // SetCount assigns uint32 provided by user to PatternFlowVxlanReserved0Counter - SetCount(value uint32) PatternFlowVxlanReserved0Counter - // HasCount checks if Count has been set in PatternFlowVxlanReserved0Counter + // SetCount assigns uint32 provided by user to PatternFlowUdpSrcPortCounter + SetCount(value uint32) PatternFlowUdpSrcPortCounter + // HasCount checks if Count has been set in PatternFlowUdpSrcPortCounter HasCount() bool } // description is TBD // Start returns a uint32 -func (obj *patternFlowVxlanReserved0Counter) Start() uint32 { +func (obj *patternFlowUdpSrcPortCounter) Start() uint32 { return *obj.obj.Start @@ -191020,13 +234177,13 @@ func (obj *patternFlowVxlanReserved0Counter) Start() uint32 { // description is TBD // Start returns a uint32 -func (obj *patternFlowVxlanReserved0Counter) HasStart() bool { +func (obj *patternFlowUdpSrcPortCounter) HasStart() bool { return obj.obj.Start != nil } // description is TBD -// SetStart sets the uint32 value in the PatternFlowVxlanReserved0Counter object -func (obj *patternFlowVxlanReserved0Counter) SetStart(value uint32) PatternFlowVxlanReserved0Counter { +// SetStart sets the uint32 value in the PatternFlowUdpSrcPortCounter object +func (obj *patternFlowUdpSrcPortCounter) SetStart(value uint32) PatternFlowUdpSrcPortCounter { obj.obj.Start = &value return obj @@ -191034,7 +234191,7 @@ func (obj *patternFlowVxlanReserved0Counter) SetStart(value uint32) PatternFlowV // description is TBD // Step returns a uint32 -func (obj *patternFlowVxlanReserved0Counter) Step() uint32 { +func (obj *patternFlowUdpSrcPortCounter) Step() uint32 { return *obj.obj.Step @@ -191042,13 +234199,13 @@ func (obj *patternFlowVxlanReserved0Counter) Step() uint32 { // description is TBD // Step returns a uint32 -func (obj *patternFlowVxlanReserved0Counter) HasStep() bool { +func (obj *patternFlowUdpSrcPortCounter) HasStep() bool { return obj.obj.Step != nil } // description is TBD -// SetStep sets the uint32 value in the PatternFlowVxlanReserved0Counter object -func (obj *patternFlowVxlanReserved0Counter) SetStep(value uint32) PatternFlowVxlanReserved0Counter { +// SetStep sets the uint32 value in the PatternFlowUdpSrcPortCounter object +func (obj *patternFlowUdpSrcPortCounter) SetStep(value uint32) PatternFlowUdpSrcPortCounter { obj.obj.Step = &value return obj @@ -191056,7 +234213,7 @@ func (obj *patternFlowVxlanReserved0Counter) SetStep(value uint32) PatternFlowVx // description is TBD // Count returns a uint32 -func (obj *patternFlowVxlanReserved0Counter) Count() uint32 { +func (obj *patternFlowUdpSrcPortCounter) Count() uint32 { return *obj.obj.Count @@ -191064,56 +234221,56 @@ func (obj *patternFlowVxlanReserved0Counter) Count() uint32 { // description is TBD // Count returns a uint32 -func (obj *patternFlowVxlanReserved0Counter) HasCount() bool { +func (obj *patternFlowUdpSrcPortCounter) HasCount() bool { return obj.obj.Count != nil } // description is TBD -// SetCount sets the uint32 value in the PatternFlowVxlanReserved0Counter object -func (obj *patternFlowVxlanReserved0Counter) SetCount(value uint32) PatternFlowVxlanReserved0Counter { +// SetCount sets the uint32 value in the PatternFlowUdpSrcPortCounter object +func (obj *patternFlowUdpSrcPortCounter) SetCount(value uint32) PatternFlowUdpSrcPortCounter { obj.obj.Count = &value return obj } -func (obj *patternFlowVxlanReserved0Counter) validateObj(vObj *validation, set_default bool) { +func (obj *patternFlowUdpSrcPortCounter) validateObj(vObj *validation, set_default bool) { if set_default { obj.setDefault() } if obj.obj.Start != nil { - if *obj.obj.Start > 16777215 { + if *obj.obj.Start > 65535 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowVxlanReserved0Counter.Start <= 16777215 but Got %d", *obj.obj.Start)) + fmt.Sprintf("0 <= PatternFlowUdpSrcPortCounter.Start <= 65535 but Got %d", *obj.obj.Start)) } } if obj.obj.Step != nil { - if *obj.obj.Step > 16777215 { + if *obj.obj.Step > 65535 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowVxlanReserved0Counter.Step <= 16777215 but Got %d", *obj.obj.Step)) + fmt.Sprintf("0 <= PatternFlowUdpSrcPortCounter.Step <= 65535 but Got %d", *obj.obj.Step)) } } if obj.obj.Count != nil { - if *obj.obj.Count > 16777215 { + if *obj.obj.Count > 65535 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowVxlanReserved0Counter.Count <= 16777215 but Got %d", *obj.obj.Count)) + fmt.Sprintf("0 <= PatternFlowUdpSrcPortCounter.Count <= 65535 but Got %d", *obj.obj.Count)) } } } -func (obj *patternFlowVxlanReserved0Counter) setDefault() { +func (obj *patternFlowUdpSrcPortCounter) setDefault() { if obj.obj.Start == nil { obj.SetStart(0) } @@ -191126,29 +234283,29 @@ func (obj *patternFlowVxlanReserved0Counter) setDefault() { } -// ***** PatternFlowVxlanReserved0MetricTag ***** -type patternFlowVxlanReserved0MetricTag struct { +// ***** PatternFlowUdpSrcPortMetricTag ***** +type patternFlowUdpSrcPortMetricTag struct { validation - obj *otg.PatternFlowVxlanReserved0MetricTag + obj *otg.PatternFlowUdpSrcPortMetricTag } -func NewPatternFlowVxlanReserved0MetricTag() PatternFlowVxlanReserved0MetricTag { - obj := patternFlowVxlanReserved0MetricTag{obj: &otg.PatternFlowVxlanReserved0MetricTag{}} +func NewPatternFlowUdpSrcPortMetricTag() PatternFlowUdpSrcPortMetricTag { + obj := patternFlowUdpSrcPortMetricTag{obj: &otg.PatternFlowUdpSrcPortMetricTag{}} obj.setDefault() return &obj } -func (obj *patternFlowVxlanReserved0MetricTag) Msg() *otg.PatternFlowVxlanReserved0MetricTag { +func (obj *patternFlowUdpSrcPortMetricTag) Msg() *otg.PatternFlowUdpSrcPortMetricTag { return obj.obj } -func (obj *patternFlowVxlanReserved0MetricTag) SetMsg(msg *otg.PatternFlowVxlanReserved0MetricTag) PatternFlowVxlanReserved0MetricTag { +func (obj *patternFlowUdpSrcPortMetricTag) SetMsg(msg *otg.PatternFlowUdpSrcPortMetricTag) PatternFlowUdpSrcPortMetricTag { proto.Merge(obj.obj, msg) return obj } -func (obj *patternFlowVxlanReserved0MetricTag) ToProto() (*otg.PatternFlowVxlanReserved0MetricTag, error) { +func (obj *patternFlowUdpSrcPortMetricTag) ToProto() (*otg.PatternFlowUdpSrcPortMetricTag, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -191156,7 +234313,7 @@ func (obj *patternFlowVxlanReserved0MetricTag) ToProto() (*otg.PatternFlowVxlanR return obj.Msg(), nil } -func (obj *patternFlowVxlanReserved0MetricTag) FromProto(msg *otg.PatternFlowVxlanReserved0MetricTag) (PatternFlowVxlanReserved0MetricTag, error) { +func (obj *patternFlowUdpSrcPortMetricTag) FromProto(msg *otg.PatternFlowUdpSrcPortMetricTag) (PatternFlowUdpSrcPortMetricTag, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -191165,7 +234322,7 @@ func (obj *patternFlowVxlanReserved0MetricTag) FromProto(msg *otg.PatternFlowVxl return newObj, nil } -func (obj *patternFlowVxlanReserved0MetricTag) ToPbText() (string, error) { +func (obj *patternFlowUdpSrcPortMetricTag) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -191177,7 +234334,7 @@ func (obj *patternFlowVxlanReserved0MetricTag) ToPbText() (string, error) { return string(protoMarshal), nil } -func (obj *patternFlowVxlanReserved0MetricTag) FromPbText(value string) error { +func (obj *patternFlowUdpSrcPortMetricTag) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj @@ -191190,7 +234347,7 @@ func (obj *patternFlowVxlanReserved0MetricTag) FromPbText(value string) error { return retObj } -func (obj *patternFlowVxlanReserved0MetricTag) ToYaml() (string, error) { +func (obj *patternFlowUdpSrcPortMetricTag) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -191211,7 +234368,7 @@ func (obj *patternFlowVxlanReserved0MetricTag) ToYaml() (string, error) { return string(data), nil } -func (obj *patternFlowVxlanReserved0MetricTag) FromYaml(value string) error { +func (obj *patternFlowUdpSrcPortMetricTag) FromYaml(value string) error { if value == "" { value = "{}" } @@ -191236,7 +234393,7 @@ func (obj *patternFlowVxlanReserved0MetricTag) FromYaml(value string) error { return nil } -func (obj *patternFlowVxlanReserved0MetricTag) ToJson() (string, error) { +func (obj *patternFlowUdpSrcPortMetricTag) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -191254,7 +234411,7 @@ func (obj *patternFlowVxlanReserved0MetricTag) ToJson() (string, error) { return string(data), nil } -func (obj *patternFlowVxlanReserved0MetricTag) FromJson(value string) error { +func (obj *patternFlowUdpSrcPortMetricTag) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -191275,19 +234432,19 @@ func (obj *patternFlowVxlanReserved0MetricTag) FromJson(value string) error { return nil } -func (obj *patternFlowVxlanReserved0MetricTag) validateToAndFrom() error { +func (obj *patternFlowUdpSrcPortMetricTag) validateToAndFrom() error { // emptyVars() obj.validateObj(&obj.validation, true) return obj.validationResult() } -func (obj *patternFlowVxlanReserved0MetricTag) Validate() error { +func (obj *patternFlowUdpSrcPortMetricTag) Validate() error { // emptyVars() obj.validateObj(&obj.validation, false) return obj.validationResult() } -func (obj *patternFlowVxlanReserved0MetricTag) String() string { +func (obj *patternFlowUdpSrcPortMetricTag) String() string { str, err := obj.ToYaml() if err != nil { return err.Error() @@ -191295,12 +234452,12 @@ func (obj *patternFlowVxlanReserved0MetricTag) String() string { return str } -func (obj *patternFlowVxlanReserved0MetricTag) Clone() (PatternFlowVxlanReserved0MetricTag, error) { +func (obj *patternFlowUdpSrcPortMetricTag) Clone() (PatternFlowUdpSrcPortMetricTag, error) { vErr := obj.Validate() if vErr != nil { return nil, vErr } - newObj := NewPatternFlowVxlanReserved0MetricTag() + newObj := NewPatternFlowUdpSrcPortMetricTag() data, err := proto.Marshal(obj.Msg()) if err != nil { return nil, err @@ -191312,69 +234469,69 @@ func (obj *patternFlowVxlanReserved0MetricTag) Clone() (PatternFlowVxlanReserved return newObj, nil } -// PatternFlowVxlanReserved0MetricTag is metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. -type PatternFlowVxlanReserved0MetricTag interface { +// PatternFlowUdpSrcPortMetricTag is metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. +type PatternFlowUdpSrcPortMetricTag interface { Validation - // Msg marshals PatternFlowVxlanReserved0MetricTag to protobuf object *otg.PatternFlowVxlanReserved0MetricTag + // Msg marshals PatternFlowUdpSrcPortMetricTag to protobuf object *otg.PatternFlowUdpSrcPortMetricTag // and doesn't set defaults - Msg() *otg.PatternFlowVxlanReserved0MetricTag - // SetMsg unmarshals PatternFlowVxlanReserved0MetricTag from protobuf object *otg.PatternFlowVxlanReserved0MetricTag + Msg() *otg.PatternFlowUdpSrcPortMetricTag + // SetMsg unmarshals PatternFlowUdpSrcPortMetricTag from protobuf object *otg.PatternFlowUdpSrcPortMetricTag // and doesn't set defaults - SetMsg(*otg.PatternFlowVxlanReserved0MetricTag) PatternFlowVxlanReserved0MetricTag - // ToProto marshals PatternFlowVxlanReserved0MetricTag to protobuf object *otg.PatternFlowVxlanReserved0MetricTag - ToProto() (*otg.PatternFlowVxlanReserved0MetricTag, error) - // ToPbText marshals PatternFlowVxlanReserved0MetricTag to protobuf text + SetMsg(*otg.PatternFlowUdpSrcPortMetricTag) PatternFlowUdpSrcPortMetricTag + // ToProto marshals PatternFlowUdpSrcPortMetricTag to protobuf object *otg.PatternFlowUdpSrcPortMetricTag + ToProto() (*otg.PatternFlowUdpSrcPortMetricTag, error) + // ToPbText marshals PatternFlowUdpSrcPortMetricTag to protobuf text ToPbText() (string, error) - // ToYaml marshals PatternFlowVxlanReserved0MetricTag to YAML text + // ToYaml marshals PatternFlowUdpSrcPortMetricTag to YAML text ToYaml() (string, error) - // ToJson marshals PatternFlowVxlanReserved0MetricTag to JSON text + // ToJson marshals PatternFlowUdpSrcPortMetricTag to JSON text ToJson() (string, error) - // FromProto unmarshals PatternFlowVxlanReserved0MetricTag from protobuf object *otg.PatternFlowVxlanReserved0MetricTag - FromProto(msg *otg.PatternFlowVxlanReserved0MetricTag) (PatternFlowVxlanReserved0MetricTag, error) - // FromPbText unmarshals PatternFlowVxlanReserved0MetricTag from protobuf text + // FromProto unmarshals PatternFlowUdpSrcPortMetricTag from protobuf object *otg.PatternFlowUdpSrcPortMetricTag + FromProto(msg *otg.PatternFlowUdpSrcPortMetricTag) (PatternFlowUdpSrcPortMetricTag, error) + // FromPbText unmarshals PatternFlowUdpSrcPortMetricTag from protobuf text FromPbText(value string) error - // FromYaml unmarshals PatternFlowVxlanReserved0MetricTag from YAML text + // FromYaml unmarshals PatternFlowUdpSrcPortMetricTag from YAML text FromYaml(value string) error - // FromJson unmarshals PatternFlowVxlanReserved0MetricTag from JSON text + // FromJson unmarshals PatternFlowUdpSrcPortMetricTag from JSON text FromJson(value string) error - // Validate validates PatternFlowVxlanReserved0MetricTag + // Validate validates PatternFlowUdpSrcPortMetricTag Validate() error // A stringer function String() string // Clones the object - Clone() (PatternFlowVxlanReserved0MetricTag, error) + Clone() (PatternFlowUdpSrcPortMetricTag, error) validateToAndFrom() error validateObj(vObj *validation, set_default bool) setDefault() - // Name returns string, set in PatternFlowVxlanReserved0MetricTag. + // Name returns string, set in PatternFlowUdpSrcPortMetricTag. Name() string - // SetName assigns string provided by user to PatternFlowVxlanReserved0MetricTag - SetName(value string) PatternFlowVxlanReserved0MetricTag - // Offset returns uint32, set in PatternFlowVxlanReserved0MetricTag. + // SetName assigns string provided by user to PatternFlowUdpSrcPortMetricTag + SetName(value string) PatternFlowUdpSrcPortMetricTag + // Offset returns uint32, set in PatternFlowUdpSrcPortMetricTag. Offset() uint32 - // SetOffset assigns uint32 provided by user to PatternFlowVxlanReserved0MetricTag - SetOffset(value uint32) PatternFlowVxlanReserved0MetricTag - // HasOffset checks if Offset has been set in PatternFlowVxlanReserved0MetricTag + // SetOffset assigns uint32 provided by user to PatternFlowUdpSrcPortMetricTag + SetOffset(value uint32) PatternFlowUdpSrcPortMetricTag + // HasOffset checks if Offset has been set in PatternFlowUdpSrcPortMetricTag HasOffset() bool - // Length returns uint32, set in PatternFlowVxlanReserved0MetricTag. + // Length returns uint32, set in PatternFlowUdpSrcPortMetricTag. Length() uint32 - // SetLength assigns uint32 provided by user to PatternFlowVxlanReserved0MetricTag - SetLength(value uint32) PatternFlowVxlanReserved0MetricTag - // HasLength checks if Length has been set in PatternFlowVxlanReserved0MetricTag + // SetLength assigns uint32 provided by user to PatternFlowUdpSrcPortMetricTag + SetLength(value uint32) PatternFlowUdpSrcPortMetricTag + // HasLength checks if Length has been set in PatternFlowUdpSrcPortMetricTag HasLength() bool } // Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field // Name returns a string -func (obj *patternFlowVxlanReserved0MetricTag) Name() string { +func (obj *patternFlowUdpSrcPortMetricTag) Name() string { return *obj.obj.Name } // Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field -// SetName sets the string value in the PatternFlowVxlanReserved0MetricTag object -func (obj *patternFlowVxlanReserved0MetricTag) SetName(value string) PatternFlowVxlanReserved0MetricTag { +// SetName sets the string value in the PatternFlowUdpSrcPortMetricTag object +func (obj *patternFlowUdpSrcPortMetricTag) SetName(value string) PatternFlowUdpSrcPortMetricTag { obj.obj.Name = &value return obj @@ -191382,7 +234539,7 @@ func (obj *patternFlowVxlanReserved0MetricTag) SetName(value string) PatternFlow // Offset in bits relative to start of corresponding header field // Offset returns a uint32 -func (obj *patternFlowVxlanReserved0MetricTag) Offset() uint32 { +func (obj *patternFlowUdpSrcPortMetricTag) Offset() uint32 { return *obj.obj.Offset @@ -191390,13 +234547,13 @@ func (obj *patternFlowVxlanReserved0MetricTag) Offset() uint32 { // Offset in bits relative to start of corresponding header field // Offset returns a uint32 -func (obj *patternFlowVxlanReserved0MetricTag) HasOffset() bool { +func (obj *patternFlowUdpSrcPortMetricTag) HasOffset() bool { return obj.obj.Offset != nil } // Offset in bits relative to start of corresponding header field -// SetOffset sets the uint32 value in the PatternFlowVxlanReserved0MetricTag object -func (obj *patternFlowVxlanReserved0MetricTag) SetOffset(value uint32) PatternFlowVxlanReserved0MetricTag { +// SetOffset sets the uint32 value in the PatternFlowUdpSrcPortMetricTag object +func (obj *patternFlowUdpSrcPortMetricTag) SetOffset(value uint32) PatternFlowUdpSrcPortMetricTag { obj.obj.Offset = &value return obj @@ -191404,7 +234561,7 @@ func (obj *patternFlowVxlanReserved0MetricTag) SetOffset(value uint32) PatternFl // Number of bits to track for metrics starting from configured offset of corresponding header field // Length returns a uint32 -func (obj *patternFlowVxlanReserved0MetricTag) Length() uint32 { +func (obj *patternFlowUdpSrcPortMetricTag) Length() uint32 { return *obj.obj.Length @@ -191412,83 +234569,83 @@ func (obj *patternFlowVxlanReserved0MetricTag) Length() uint32 { // Number of bits to track for metrics starting from configured offset of corresponding header field // Length returns a uint32 -func (obj *patternFlowVxlanReserved0MetricTag) HasLength() bool { +func (obj *patternFlowUdpSrcPortMetricTag) HasLength() bool { return obj.obj.Length != nil } // Number of bits to track for metrics starting from configured offset of corresponding header field -// SetLength sets the uint32 value in the PatternFlowVxlanReserved0MetricTag object -func (obj *patternFlowVxlanReserved0MetricTag) SetLength(value uint32) PatternFlowVxlanReserved0MetricTag { +// SetLength sets the uint32 value in the PatternFlowUdpSrcPortMetricTag object +func (obj *patternFlowUdpSrcPortMetricTag) SetLength(value uint32) PatternFlowUdpSrcPortMetricTag { obj.obj.Length = &value return obj } -func (obj *patternFlowVxlanReserved0MetricTag) validateObj(vObj *validation, set_default bool) { +func (obj *patternFlowUdpSrcPortMetricTag) validateObj(vObj *validation, set_default bool) { if set_default { obj.setDefault() } // Name is required if obj.obj.Name == nil { - vObj.validationErrors = append(vObj.validationErrors, "Name is required field on interface PatternFlowVxlanReserved0MetricTag") + vObj.validationErrors = append(vObj.validationErrors, "Name is required field on interface PatternFlowUdpSrcPortMetricTag") } if obj.obj.Offset != nil { - if *obj.obj.Offset > 23 { + if *obj.obj.Offset > 15 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowVxlanReserved0MetricTag.Offset <= 23 but Got %d", *obj.obj.Offset)) + fmt.Sprintf("0 <= PatternFlowUdpSrcPortMetricTag.Offset <= 15 but Got %d", *obj.obj.Offset)) } } if obj.obj.Length != nil { - if *obj.obj.Length < 1 || *obj.obj.Length > 24 { + if *obj.obj.Length < 1 || *obj.obj.Length > 16 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("1 <= PatternFlowVxlanReserved0MetricTag.Length <= 24 but Got %d", *obj.obj.Length)) + fmt.Sprintf("1 <= PatternFlowUdpSrcPortMetricTag.Length <= 16 but Got %d", *obj.obj.Length)) } } } -func (obj *patternFlowVxlanReserved0MetricTag) setDefault() { +func (obj *patternFlowUdpSrcPortMetricTag) setDefault() { if obj.obj.Offset == nil { obj.SetOffset(0) } if obj.obj.Length == nil { - obj.SetLength(24) + obj.SetLength(16) } } -// ***** PatternFlowVxlanVniCounter ***** -type patternFlowVxlanVniCounter struct { +// ***** PatternFlowUdpDstPortCounter ***** +type patternFlowUdpDstPortCounter struct { validation - obj *otg.PatternFlowVxlanVniCounter + obj *otg.PatternFlowUdpDstPortCounter } -func NewPatternFlowVxlanVniCounter() PatternFlowVxlanVniCounter { - obj := patternFlowVxlanVniCounter{obj: &otg.PatternFlowVxlanVniCounter{}} +func NewPatternFlowUdpDstPortCounter() PatternFlowUdpDstPortCounter { + obj := patternFlowUdpDstPortCounter{obj: &otg.PatternFlowUdpDstPortCounter{}} obj.setDefault() return &obj } -func (obj *patternFlowVxlanVniCounter) Msg() *otg.PatternFlowVxlanVniCounter { +func (obj *patternFlowUdpDstPortCounter) Msg() *otg.PatternFlowUdpDstPortCounter { return obj.obj } -func (obj *patternFlowVxlanVniCounter) SetMsg(msg *otg.PatternFlowVxlanVniCounter) PatternFlowVxlanVniCounter { +func (obj *patternFlowUdpDstPortCounter) SetMsg(msg *otg.PatternFlowUdpDstPortCounter) PatternFlowUdpDstPortCounter { proto.Merge(obj.obj, msg) return obj } -func (obj *patternFlowVxlanVniCounter) ToProto() (*otg.PatternFlowVxlanVniCounter, error) { +func (obj *patternFlowUdpDstPortCounter) ToProto() (*otg.PatternFlowUdpDstPortCounter, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -191496,7 +234653,7 @@ func (obj *patternFlowVxlanVniCounter) ToProto() (*otg.PatternFlowVxlanVniCounte return obj.Msg(), nil } -func (obj *patternFlowVxlanVniCounter) FromProto(msg *otg.PatternFlowVxlanVniCounter) (PatternFlowVxlanVniCounter, error) { +func (obj *patternFlowUdpDstPortCounter) FromProto(msg *otg.PatternFlowUdpDstPortCounter) (PatternFlowUdpDstPortCounter, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -191505,7 +234662,7 @@ func (obj *patternFlowVxlanVniCounter) FromProto(msg *otg.PatternFlowVxlanVniCou return newObj, nil } -func (obj *patternFlowVxlanVniCounter) ToPbText() (string, error) { +func (obj *patternFlowUdpDstPortCounter) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -191517,7 +234674,7 @@ func (obj *patternFlowVxlanVniCounter) ToPbText() (string, error) { return string(protoMarshal), nil } -func (obj *patternFlowVxlanVniCounter) FromPbText(value string) error { +func (obj *patternFlowUdpDstPortCounter) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj @@ -191530,7 +234687,7 @@ func (obj *patternFlowVxlanVniCounter) FromPbText(value string) error { return retObj } -func (obj *patternFlowVxlanVniCounter) ToYaml() (string, error) { +func (obj *patternFlowUdpDstPortCounter) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -191551,7 +234708,7 @@ func (obj *patternFlowVxlanVniCounter) ToYaml() (string, error) { return string(data), nil } -func (obj *patternFlowVxlanVniCounter) FromYaml(value string) error { +func (obj *patternFlowUdpDstPortCounter) FromYaml(value string) error { if value == "" { value = "{}" } @@ -191576,7 +234733,7 @@ func (obj *patternFlowVxlanVniCounter) FromYaml(value string) error { return nil } -func (obj *patternFlowVxlanVniCounter) ToJson() (string, error) { +func (obj *patternFlowUdpDstPortCounter) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -191594,7 +234751,7 @@ func (obj *patternFlowVxlanVniCounter) ToJson() (string, error) { return string(data), nil } -func (obj *patternFlowVxlanVniCounter) FromJson(value string) error { +func (obj *patternFlowUdpDstPortCounter) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -191615,19 +234772,19 @@ func (obj *patternFlowVxlanVniCounter) FromJson(value string) error { return nil } -func (obj *patternFlowVxlanVniCounter) validateToAndFrom() error { +func (obj *patternFlowUdpDstPortCounter) validateToAndFrom() error { // emptyVars() obj.validateObj(&obj.validation, true) return obj.validationResult() } -func (obj *patternFlowVxlanVniCounter) Validate() error { +func (obj *patternFlowUdpDstPortCounter) Validate() error { // emptyVars() obj.validateObj(&obj.validation, false) return obj.validationResult() } -func (obj *patternFlowVxlanVniCounter) String() string { +func (obj *patternFlowUdpDstPortCounter) String() string { str, err := obj.ToYaml() if err != nil { return err.Error() @@ -191635,12 +234792,12 @@ func (obj *patternFlowVxlanVniCounter) String() string { return str } -func (obj *patternFlowVxlanVniCounter) Clone() (PatternFlowVxlanVniCounter, error) { +func (obj *patternFlowUdpDstPortCounter) Clone() (PatternFlowUdpDstPortCounter, error) { vErr := obj.Validate() if vErr != nil { return nil, vErr } - newObj := NewPatternFlowVxlanVniCounter() + newObj := NewPatternFlowUdpDstPortCounter() data, err := proto.Marshal(obj.Msg()) if err != nil { return nil, err @@ -191652,63 +234809,63 @@ func (obj *patternFlowVxlanVniCounter) Clone() (PatternFlowVxlanVniCounter, erro return newObj, nil } -// PatternFlowVxlanVniCounter is integer counter pattern -type PatternFlowVxlanVniCounter interface { +// PatternFlowUdpDstPortCounter is integer counter pattern +type PatternFlowUdpDstPortCounter interface { Validation - // Msg marshals PatternFlowVxlanVniCounter to protobuf object *otg.PatternFlowVxlanVniCounter + // Msg marshals PatternFlowUdpDstPortCounter to protobuf object *otg.PatternFlowUdpDstPortCounter // and doesn't set defaults - Msg() *otg.PatternFlowVxlanVniCounter - // SetMsg unmarshals PatternFlowVxlanVniCounter from protobuf object *otg.PatternFlowVxlanVniCounter + Msg() *otg.PatternFlowUdpDstPortCounter + // SetMsg unmarshals PatternFlowUdpDstPortCounter from protobuf object *otg.PatternFlowUdpDstPortCounter // and doesn't set defaults - SetMsg(*otg.PatternFlowVxlanVniCounter) PatternFlowVxlanVniCounter - // ToProto marshals PatternFlowVxlanVniCounter to protobuf object *otg.PatternFlowVxlanVniCounter - ToProto() (*otg.PatternFlowVxlanVniCounter, error) - // ToPbText marshals PatternFlowVxlanVniCounter to protobuf text + SetMsg(*otg.PatternFlowUdpDstPortCounter) PatternFlowUdpDstPortCounter + // ToProto marshals PatternFlowUdpDstPortCounter to protobuf object *otg.PatternFlowUdpDstPortCounter + ToProto() (*otg.PatternFlowUdpDstPortCounter, error) + // ToPbText marshals PatternFlowUdpDstPortCounter to protobuf text ToPbText() (string, error) - // ToYaml marshals PatternFlowVxlanVniCounter to YAML text + // ToYaml marshals PatternFlowUdpDstPortCounter to YAML text ToYaml() (string, error) - // ToJson marshals PatternFlowVxlanVniCounter to JSON text + // ToJson marshals PatternFlowUdpDstPortCounter to JSON text ToJson() (string, error) - // FromProto unmarshals PatternFlowVxlanVniCounter from protobuf object *otg.PatternFlowVxlanVniCounter - FromProto(msg *otg.PatternFlowVxlanVniCounter) (PatternFlowVxlanVniCounter, error) - // FromPbText unmarshals PatternFlowVxlanVniCounter from protobuf text + // FromProto unmarshals PatternFlowUdpDstPortCounter from protobuf object *otg.PatternFlowUdpDstPortCounter + FromProto(msg *otg.PatternFlowUdpDstPortCounter) (PatternFlowUdpDstPortCounter, error) + // FromPbText unmarshals PatternFlowUdpDstPortCounter from protobuf text FromPbText(value string) error - // FromYaml unmarshals PatternFlowVxlanVniCounter from YAML text + // FromYaml unmarshals PatternFlowUdpDstPortCounter from YAML text FromYaml(value string) error - // FromJson unmarshals PatternFlowVxlanVniCounter from JSON text + // FromJson unmarshals PatternFlowUdpDstPortCounter from JSON text FromJson(value string) error - // Validate validates PatternFlowVxlanVniCounter + // Validate validates PatternFlowUdpDstPortCounter Validate() error // A stringer function String() string // Clones the object - Clone() (PatternFlowVxlanVniCounter, error) + Clone() (PatternFlowUdpDstPortCounter, error) validateToAndFrom() error validateObj(vObj *validation, set_default bool) setDefault() - // Start returns uint32, set in PatternFlowVxlanVniCounter. + // Start returns uint32, set in PatternFlowUdpDstPortCounter. Start() uint32 - // SetStart assigns uint32 provided by user to PatternFlowVxlanVniCounter - SetStart(value uint32) PatternFlowVxlanVniCounter - // HasStart checks if Start has been set in PatternFlowVxlanVniCounter + // SetStart assigns uint32 provided by user to PatternFlowUdpDstPortCounter + SetStart(value uint32) PatternFlowUdpDstPortCounter + // HasStart checks if Start has been set in PatternFlowUdpDstPortCounter HasStart() bool - // Step returns uint32, set in PatternFlowVxlanVniCounter. + // Step returns uint32, set in PatternFlowUdpDstPortCounter. Step() uint32 - // SetStep assigns uint32 provided by user to PatternFlowVxlanVniCounter - SetStep(value uint32) PatternFlowVxlanVniCounter - // HasStep checks if Step has been set in PatternFlowVxlanVniCounter + // SetStep assigns uint32 provided by user to PatternFlowUdpDstPortCounter + SetStep(value uint32) PatternFlowUdpDstPortCounter + // HasStep checks if Step has been set in PatternFlowUdpDstPortCounter HasStep() bool - // Count returns uint32, set in PatternFlowVxlanVniCounter. + // Count returns uint32, set in PatternFlowUdpDstPortCounter. Count() uint32 - // SetCount assigns uint32 provided by user to PatternFlowVxlanVniCounter - SetCount(value uint32) PatternFlowVxlanVniCounter - // HasCount checks if Count has been set in PatternFlowVxlanVniCounter + // SetCount assigns uint32 provided by user to PatternFlowUdpDstPortCounter + SetCount(value uint32) PatternFlowUdpDstPortCounter + // HasCount checks if Count has been set in PatternFlowUdpDstPortCounter HasCount() bool } // description is TBD // Start returns a uint32 -func (obj *patternFlowVxlanVniCounter) Start() uint32 { +func (obj *patternFlowUdpDstPortCounter) Start() uint32 { return *obj.obj.Start @@ -191716,13 +234873,13 @@ func (obj *patternFlowVxlanVniCounter) Start() uint32 { // description is TBD // Start returns a uint32 -func (obj *patternFlowVxlanVniCounter) HasStart() bool { +func (obj *patternFlowUdpDstPortCounter) HasStart() bool { return obj.obj.Start != nil } // description is TBD -// SetStart sets the uint32 value in the PatternFlowVxlanVniCounter object -func (obj *patternFlowVxlanVniCounter) SetStart(value uint32) PatternFlowVxlanVniCounter { +// SetStart sets the uint32 value in the PatternFlowUdpDstPortCounter object +func (obj *patternFlowUdpDstPortCounter) SetStart(value uint32) PatternFlowUdpDstPortCounter { obj.obj.Start = &value return obj @@ -191730,7 +234887,7 @@ func (obj *patternFlowVxlanVniCounter) SetStart(value uint32) PatternFlowVxlanVn // description is TBD // Step returns a uint32 -func (obj *patternFlowVxlanVniCounter) Step() uint32 { +func (obj *patternFlowUdpDstPortCounter) Step() uint32 { return *obj.obj.Step @@ -191738,13 +234895,13 @@ func (obj *patternFlowVxlanVniCounter) Step() uint32 { // description is TBD // Step returns a uint32 -func (obj *patternFlowVxlanVniCounter) HasStep() bool { +func (obj *patternFlowUdpDstPortCounter) HasStep() bool { return obj.obj.Step != nil } // description is TBD -// SetStep sets the uint32 value in the PatternFlowVxlanVniCounter object -func (obj *patternFlowVxlanVniCounter) SetStep(value uint32) PatternFlowVxlanVniCounter { +// SetStep sets the uint32 value in the PatternFlowUdpDstPortCounter object +func (obj *patternFlowUdpDstPortCounter) SetStep(value uint32) PatternFlowUdpDstPortCounter { obj.obj.Step = &value return obj @@ -191752,7 +234909,7 @@ func (obj *patternFlowVxlanVniCounter) SetStep(value uint32) PatternFlowVxlanVni // description is TBD // Count returns a uint32 -func (obj *patternFlowVxlanVniCounter) Count() uint32 { +func (obj *patternFlowUdpDstPortCounter) Count() uint32 { return *obj.obj.Count @@ -191760,56 +234917,56 @@ func (obj *patternFlowVxlanVniCounter) Count() uint32 { // description is TBD // Count returns a uint32 -func (obj *patternFlowVxlanVniCounter) HasCount() bool { +func (obj *patternFlowUdpDstPortCounter) HasCount() bool { return obj.obj.Count != nil } // description is TBD -// SetCount sets the uint32 value in the PatternFlowVxlanVniCounter object -func (obj *patternFlowVxlanVniCounter) SetCount(value uint32) PatternFlowVxlanVniCounter { +// SetCount sets the uint32 value in the PatternFlowUdpDstPortCounter object +func (obj *patternFlowUdpDstPortCounter) SetCount(value uint32) PatternFlowUdpDstPortCounter { obj.obj.Count = &value return obj } -func (obj *patternFlowVxlanVniCounter) validateObj(vObj *validation, set_default bool) { +func (obj *patternFlowUdpDstPortCounter) validateObj(vObj *validation, set_default bool) { if set_default { obj.setDefault() } if obj.obj.Start != nil { - if *obj.obj.Start > 16777215 { + if *obj.obj.Start > 65535 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowVxlanVniCounter.Start <= 16777215 but Got %d", *obj.obj.Start)) + fmt.Sprintf("0 <= PatternFlowUdpDstPortCounter.Start <= 65535 but Got %d", *obj.obj.Start)) } } if obj.obj.Step != nil { - if *obj.obj.Step > 16777215 { + if *obj.obj.Step > 65535 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowVxlanVniCounter.Step <= 16777215 but Got %d", *obj.obj.Step)) + fmt.Sprintf("0 <= PatternFlowUdpDstPortCounter.Step <= 65535 but Got %d", *obj.obj.Step)) } } if obj.obj.Count != nil { - if *obj.obj.Count > 16777215 { + if *obj.obj.Count > 65535 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowVxlanVniCounter.Count <= 16777215 but Got %d", *obj.obj.Count)) + fmt.Sprintf("0 <= PatternFlowUdpDstPortCounter.Count <= 65535 but Got %d", *obj.obj.Count)) } } } -func (obj *patternFlowVxlanVniCounter) setDefault() { +func (obj *patternFlowUdpDstPortCounter) setDefault() { if obj.obj.Start == nil { obj.SetStart(0) } @@ -191822,29 +234979,29 @@ func (obj *patternFlowVxlanVniCounter) setDefault() { } -// ***** PatternFlowVxlanVniMetricTag ***** -type patternFlowVxlanVniMetricTag struct { +// ***** PatternFlowUdpDstPortMetricTag ***** +type patternFlowUdpDstPortMetricTag struct { validation - obj *otg.PatternFlowVxlanVniMetricTag + obj *otg.PatternFlowUdpDstPortMetricTag } -func NewPatternFlowVxlanVniMetricTag() PatternFlowVxlanVniMetricTag { - obj := patternFlowVxlanVniMetricTag{obj: &otg.PatternFlowVxlanVniMetricTag{}} +func NewPatternFlowUdpDstPortMetricTag() PatternFlowUdpDstPortMetricTag { + obj := patternFlowUdpDstPortMetricTag{obj: &otg.PatternFlowUdpDstPortMetricTag{}} obj.setDefault() return &obj } -func (obj *patternFlowVxlanVniMetricTag) Msg() *otg.PatternFlowVxlanVniMetricTag { +func (obj *patternFlowUdpDstPortMetricTag) Msg() *otg.PatternFlowUdpDstPortMetricTag { return obj.obj } -func (obj *patternFlowVxlanVniMetricTag) SetMsg(msg *otg.PatternFlowVxlanVniMetricTag) PatternFlowVxlanVniMetricTag { +func (obj *patternFlowUdpDstPortMetricTag) SetMsg(msg *otg.PatternFlowUdpDstPortMetricTag) PatternFlowUdpDstPortMetricTag { proto.Merge(obj.obj, msg) return obj } -func (obj *patternFlowVxlanVniMetricTag) ToProto() (*otg.PatternFlowVxlanVniMetricTag, error) { +func (obj *patternFlowUdpDstPortMetricTag) ToProto() (*otg.PatternFlowUdpDstPortMetricTag, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -191852,7 +235009,7 @@ func (obj *patternFlowVxlanVniMetricTag) ToProto() (*otg.PatternFlowVxlanVniMetr return obj.Msg(), nil } -func (obj *patternFlowVxlanVniMetricTag) FromProto(msg *otg.PatternFlowVxlanVniMetricTag) (PatternFlowVxlanVniMetricTag, error) { +func (obj *patternFlowUdpDstPortMetricTag) FromProto(msg *otg.PatternFlowUdpDstPortMetricTag) (PatternFlowUdpDstPortMetricTag, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -191861,7 +235018,7 @@ func (obj *patternFlowVxlanVniMetricTag) FromProto(msg *otg.PatternFlowVxlanVniM return newObj, nil } -func (obj *patternFlowVxlanVniMetricTag) ToPbText() (string, error) { +func (obj *patternFlowUdpDstPortMetricTag) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -191873,7 +235030,7 @@ func (obj *patternFlowVxlanVniMetricTag) ToPbText() (string, error) { return string(protoMarshal), nil } -func (obj *patternFlowVxlanVniMetricTag) FromPbText(value string) error { +func (obj *patternFlowUdpDstPortMetricTag) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj @@ -191886,7 +235043,7 @@ func (obj *patternFlowVxlanVniMetricTag) FromPbText(value string) error { return retObj } -func (obj *patternFlowVxlanVniMetricTag) ToYaml() (string, error) { +func (obj *patternFlowUdpDstPortMetricTag) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -191907,7 +235064,7 @@ func (obj *patternFlowVxlanVniMetricTag) ToYaml() (string, error) { return string(data), nil } -func (obj *patternFlowVxlanVniMetricTag) FromYaml(value string) error { +func (obj *patternFlowUdpDstPortMetricTag) FromYaml(value string) error { if value == "" { value = "{}" } @@ -191932,7 +235089,7 @@ func (obj *patternFlowVxlanVniMetricTag) FromYaml(value string) error { return nil } -func (obj *patternFlowVxlanVniMetricTag) ToJson() (string, error) { +func (obj *patternFlowUdpDstPortMetricTag) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -191950,7 +235107,7 @@ func (obj *patternFlowVxlanVniMetricTag) ToJson() (string, error) { return string(data), nil } -func (obj *patternFlowVxlanVniMetricTag) FromJson(value string) error { +func (obj *patternFlowUdpDstPortMetricTag) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -191971,19 +235128,19 @@ func (obj *patternFlowVxlanVniMetricTag) FromJson(value string) error { return nil } -func (obj *patternFlowVxlanVniMetricTag) validateToAndFrom() error { +func (obj *patternFlowUdpDstPortMetricTag) validateToAndFrom() error { // emptyVars() obj.validateObj(&obj.validation, true) return obj.validationResult() } -func (obj *patternFlowVxlanVniMetricTag) Validate() error { +func (obj *patternFlowUdpDstPortMetricTag) Validate() error { // emptyVars() obj.validateObj(&obj.validation, false) return obj.validationResult() } -func (obj *patternFlowVxlanVniMetricTag) String() string { +func (obj *patternFlowUdpDstPortMetricTag) String() string { str, err := obj.ToYaml() if err != nil { return err.Error() @@ -191991,12 +235148,12 @@ func (obj *patternFlowVxlanVniMetricTag) String() string { return str } -func (obj *patternFlowVxlanVniMetricTag) Clone() (PatternFlowVxlanVniMetricTag, error) { +func (obj *patternFlowUdpDstPortMetricTag) Clone() (PatternFlowUdpDstPortMetricTag, error) { vErr := obj.Validate() if vErr != nil { return nil, vErr } - newObj := NewPatternFlowVxlanVniMetricTag() + newObj := NewPatternFlowUdpDstPortMetricTag() data, err := proto.Marshal(obj.Msg()) if err != nil { return nil, err @@ -192008,69 +235165,69 @@ func (obj *patternFlowVxlanVniMetricTag) Clone() (PatternFlowVxlanVniMetricTag, return newObj, nil } -// PatternFlowVxlanVniMetricTag is metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. -type PatternFlowVxlanVniMetricTag interface { +// PatternFlowUdpDstPortMetricTag is metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. +type PatternFlowUdpDstPortMetricTag interface { Validation - // Msg marshals PatternFlowVxlanVniMetricTag to protobuf object *otg.PatternFlowVxlanVniMetricTag + // Msg marshals PatternFlowUdpDstPortMetricTag to protobuf object *otg.PatternFlowUdpDstPortMetricTag // and doesn't set defaults - Msg() *otg.PatternFlowVxlanVniMetricTag - // SetMsg unmarshals PatternFlowVxlanVniMetricTag from protobuf object *otg.PatternFlowVxlanVniMetricTag + Msg() *otg.PatternFlowUdpDstPortMetricTag + // SetMsg unmarshals PatternFlowUdpDstPortMetricTag from protobuf object *otg.PatternFlowUdpDstPortMetricTag // and doesn't set defaults - SetMsg(*otg.PatternFlowVxlanVniMetricTag) PatternFlowVxlanVniMetricTag - // ToProto marshals PatternFlowVxlanVniMetricTag to protobuf object *otg.PatternFlowVxlanVniMetricTag - ToProto() (*otg.PatternFlowVxlanVniMetricTag, error) - // ToPbText marshals PatternFlowVxlanVniMetricTag to protobuf text + SetMsg(*otg.PatternFlowUdpDstPortMetricTag) PatternFlowUdpDstPortMetricTag + // ToProto marshals PatternFlowUdpDstPortMetricTag to protobuf object *otg.PatternFlowUdpDstPortMetricTag + ToProto() (*otg.PatternFlowUdpDstPortMetricTag, error) + // ToPbText marshals PatternFlowUdpDstPortMetricTag to protobuf text ToPbText() (string, error) - // ToYaml marshals PatternFlowVxlanVniMetricTag to YAML text + // ToYaml marshals PatternFlowUdpDstPortMetricTag to YAML text ToYaml() (string, error) - // ToJson marshals PatternFlowVxlanVniMetricTag to JSON text + // ToJson marshals PatternFlowUdpDstPortMetricTag to JSON text ToJson() (string, error) - // FromProto unmarshals PatternFlowVxlanVniMetricTag from protobuf object *otg.PatternFlowVxlanVniMetricTag - FromProto(msg *otg.PatternFlowVxlanVniMetricTag) (PatternFlowVxlanVniMetricTag, error) - // FromPbText unmarshals PatternFlowVxlanVniMetricTag from protobuf text + // FromProto unmarshals PatternFlowUdpDstPortMetricTag from protobuf object *otg.PatternFlowUdpDstPortMetricTag + FromProto(msg *otg.PatternFlowUdpDstPortMetricTag) (PatternFlowUdpDstPortMetricTag, error) + // FromPbText unmarshals PatternFlowUdpDstPortMetricTag from protobuf text FromPbText(value string) error - // FromYaml unmarshals PatternFlowVxlanVniMetricTag from YAML text + // FromYaml unmarshals PatternFlowUdpDstPortMetricTag from YAML text FromYaml(value string) error - // FromJson unmarshals PatternFlowVxlanVniMetricTag from JSON text + // FromJson unmarshals PatternFlowUdpDstPortMetricTag from JSON text FromJson(value string) error - // Validate validates PatternFlowVxlanVniMetricTag + // Validate validates PatternFlowUdpDstPortMetricTag Validate() error // A stringer function String() string // Clones the object - Clone() (PatternFlowVxlanVniMetricTag, error) + Clone() (PatternFlowUdpDstPortMetricTag, error) validateToAndFrom() error validateObj(vObj *validation, set_default bool) setDefault() - // Name returns string, set in PatternFlowVxlanVniMetricTag. + // Name returns string, set in PatternFlowUdpDstPortMetricTag. Name() string - // SetName assigns string provided by user to PatternFlowVxlanVniMetricTag - SetName(value string) PatternFlowVxlanVniMetricTag - // Offset returns uint32, set in PatternFlowVxlanVniMetricTag. + // SetName assigns string provided by user to PatternFlowUdpDstPortMetricTag + SetName(value string) PatternFlowUdpDstPortMetricTag + // Offset returns uint32, set in PatternFlowUdpDstPortMetricTag. Offset() uint32 - // SetOffset assigns uint32 provided by user to PatternFlowVxlanVniMetricTag - SetOffset(value uint32) PatternFlowVxlanVniMetricTag - // HasOffset checks if Offset has been set in PatternFlowVxlanVniMetricTag + // SetOffset assigns uint32 provided by user to PatternFlowUdpDstPortMetricTag + SetOffset(value uint32) PatternFlowUdpDstPortMetricTag + // HasOffset checks if Offset has been set in PatternFlowUdpDstPortMetricTag HasOffset() bool - // Length returns uint32, set in PatternFlowVxlanVniMetricTag. + // Length returns uint32, set in PatternFlowUdpDstPortMetricTag. Length() uint32 - // SetLength assigns uint32 provided by user to PatternFlowVxlanVniMetricTag - SetLength(value uint32) PatternFlowVxlanVniMetricTag - // HasLength checks if Length has been set in PatternFlowVxlanVniMetricTag + // SetLength assigns uint32 provided by user to PatternFlowUdpDstPortMetricTag + SetLength(value uint32) PatternFlowUdpDstPortMetricTag + // HasLength checks if Length has been set in PatternFlowUdpDstPortMetricTag HasLength() bool } // Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field // Name returns a string -func (obj *patternFlowVxlanVniMetricTag) Name() string { +func (obj *patternFlowUdpDstPortMetricTag) Name() string { return *obj.obj.Name } // Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field -// SetName sets the string value in the PatternFlowVxlanVniMetricTag object -func (obj *patternFlowVxlanVniMetricTag) SetName(value string) PatternFlowVxlanVniMetricTag { +// SetName sets the string value in the PatternFlowUdpDstPortMetricTag object +func (obj *patternFlowUdpDstPortMetricTag) SetName(value string) PatternFlowUdpDstPortMetricTag { obj.obj.Name = &value return obj @@ -192078,7 +235235,7 @@ func (obj *patternFlowVxlanVniMetricTag) SetName(value string) PatternFlowVxlanV // Offset in bits relative to start of corresponding header field // Offset returns a uint32 -func (obj *patternFlowVxlanVniMetricTag) Offset() uint32 { +func (obj *patternFlowUdpDstPortMetricTag) Offset() uint32 { return *obj.obj.Offset @@ -192086,13 +235243,13 @@ func (obj *patternFlowVxlanVniMetricTag) Offset() uint32 { // Offset in bits relative to start of corresponding header field // Offset returns a uint32 -func (obj *patternFlowVxlanVniMetricTag) HasOffset() bool { +func (obj *patternFlowUdpDstPortMetricTag) HasOffset() bool { return obj.obj.Offset != nil } // Offset in bits relative to start of corresponding header field -// SetOffset sets the uint32 value in the PatternFlowVxlanVniMetricTag object -func (obj *patternFlowVxlanVniMetricTag) SetOffset(value uint32) PatternFlowVxlanVniMetricTag { +// SetOffset sets the uint32 value in the PatternFlowUdpDstPortMetricTag object +func (obj *patternFlowUdpDstPortMetricTag) SetOffset(value uint32) PatternFlowUdpDstPortMetricTag { obj.obj.Offset = &value return obj @@ -192100,7 +235257,7 @@ func (obj *patternFlowVxlanVniMetricTag) SetOffset(value uint32) PatternFlowVxla // Number of bits to track for metrics starting from configured offset of corresponding header field // Length returns a uint32 -func (obj *patternFlowVxlanVniMetricTag) Length() uint32 { +func (obj *patternFlowUdpDstPortMetricTag) Length() uint32 { return *obj.obj.Length @@ -192108,83 +235265,83 @@ func (obj *patternFlowVxlanVniMetricTag) Length() uint32 { // Number of bits to track for metrics starting from configured offset of corresponding header field // Length returns a uint32 -func (obj *patternFlowVxlanVniMetricTag) HasLength() bool { +func (obj *patternFlowUdpDstPortMetricTag) HasLength() bool { return obj.obj.Length != nil } // Number of bits to track for metrics starting from configured offset of corresponding header field -// SetLength sets the uint32 value in the PatternFlowVxlanVniMetricTag object -func (obj *patternFlowVxlanVniMetricTag) SetLength(value uint32) PatternFlowVxlanVniMetricTag { +// SetLength sets the uint32 value in the PatternFlowUdpDstPortMetricTag object +func (obj *patternFlowUdpDstPortMetricTag) SetLength(value uint32) PatternFlowUdpDstPortMetricTag { obj.obj.Length = &value return obj } -func (obj *patternFlowVxlanVniMetricTag) validateObj(vObj *validation, set_default bool) { +func (obj *patternFlowUdpDstPortMetricTag) validateObj(vObj *validation, set_default bool) { if set_default { obj.setDefault() } // Name is required if obj.obj.Name == nil { - vObj.validationErrors = append(vObj.validationErrors, "Name is required field on interface PatternFlowVxlanVniMetricTag") + vObj.validationErrors = append(vObj.validationErrors, "Name is required field on interface PatternFlowUdpDstPortMetricTag") } if obj.obj.Offset != nil { - if *obj.obj.Offset > 23 { + if *obj.obj.Offset > 15 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowVxlanVniMetricTag.Offset <= 23 but Got %d", *obj.obj.Offset)) + fmt.Sprintf("0 <= PatternFlowUdpDstPortMetricTag.Offset <= 15 but Got %d", *obj.obj.Offset)) } } if obj.obj.Length != nil { - if *obj.obj.Length < 1 || *obj.obj.Length > 24 { + if *obj.obj.Length < 1 || *obj.obj.Length > 16 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("1 <= PatternFlowVxlanVniMetricTag.Length <= 24 but Got %d", *obj.obj.Length)) + fmt.Sprintf("1 <= PatternFlowUdpDstPortMetricTag.Length <= 16 but Got %d", *obj.obj.Length)) } } } -func (obj *patternFlowVxlanVniMetricTag) setDefault() { +func (obj *patternFlowUdpDstPortMetricTag) setDefault() { if obj.obj.Offset == nil { obj.SetOffset(0) } if obj.obj.Length == nil { - obj.SetLength(24) + obj.SetLength(16) } } -// ***** PatternFlowVxlanReserved1Counter ***** -type patternFlowVxlanReserved1Counter struct { +// ***** PatternFlowUdpLengthCounter ***** +type patternFlowUdpLengthCounter struct { validation - obj *otg.PatternFlowVxlanReserved1Counter + obj *otg.PatternFlowUdpLengthCounter } -func NewPatternFlowVxlanReserved1Counter() PatternFlowVxlanReserved1Counter { - obj := patternFlowVxlanReserved1Counter{obj: &otg.PatternFlowVxlanReserved1Counter{}} +func NewPatternFlowUdpLengthCounter() PatternFlowUdpLengthCounter { + obj := patternFlowUdpLengthCounter{obj: &otg.PatternFlowUdpLengthCounter{}} obj.setDefault() return &obj } -func (obj *patternFlowVxlanReserved1Counter) Msg() *otg.PatternFlowVxlanReserved1Counter { +func (obj *patternFlowUdpLengthCounter) Msg() *otg.PatternFlowUdpLengthCounter { return obj.obj } -func (obj *patternFlowVxlanReserved1Counter) SetMsg(msg *otg.PatternFlowVxlanReserved1Counter) PatternFlowVxlanReserved1Counter { +func (obj *patternFlowUdpLengthCounter) SetMsg(msg *otg.PatternFlowUdpLengthCounter) PatternFlowUdpLengthCounter { proto.Merge(obj.obj, msg) return obj } -func (obj *patternFlowVxlanReserved1Counter) ToProto() (*otg.PatternFlowVxlanReserved1Counter, error) { +func (obj *patternFlowUdpLengthCounter) ToProto() (*otg.PatternFlowUdpLengthCounter, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -192192,7 +235349,7 @@ func (obj *patternFlowVxlanReserved1Counter) ToProto() (*otg.PatternFlowVxlanRes return obj.Msg(), nil } -func (obj *patternFlowVxlanReserved1Counter) FromProto(msg *otg.PatternFlowVxlanReserved1Counter) (PatternFlowVxlanReserved1Counter, error) { +func (obj *patternFlowUdpLengthCounter) FromProto(msg *otg.PatternFlowUdpLengthCounter) (PatternFlowUdpLengthCounter, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -192201,7 +235358,7 @@ func (obj *patternFlowVxlanReserved1Counter) FromProto(msg *otg.PatternFlowVxlan return newObj, nil } -func (obj *patternFlowVxlanReserved1Counter) ToPbText() (string, error) { +func (obj *patternFlowUdpLengthCounter) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -192213,7 +235370,7 @@ func (obj *patternFlowVxlanReserved1Counter) ToPbText() (string, error) { return string(protoMarshal), nil } -func (obj *patternFlowVxlanReserved1Counter) FromPbText(value string) error { +func (obj *patternFlowUdpLengthCounter) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj @@ -192226,7 +235383,7 @@ func (obj *patternFlowVxlanReserved1Counter) FromPbText(value string) error { return retObj } -func (obj *patternFlowVxlanReserved1Counter) ToYaml() (string, error) { +func (obj *patternFlowUdpLengthCounter) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -192247,7 +235404,7 @@ func (obj *patternFlowVxlanReserved1Counter) ToYaml() (string, error) { return string(data), nil } -func (obj *patternFlowVxlanReserved1Counter) FromYaml(value string) error { +func (obj *patternFlowUdpLengthCounter) FromYaml(value string) error { if value == "" { value = "{}" } @@ -192272,7 +235429,7 @@ func (obj *patternFlowVxlanReserved1Counter) FromYaml(value string) error { return nil } -func (obj *patternFlowVxlanReserved1Counter) ToJson() (string, error) { +func (obj *patternFlowUdpLengthCounter) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -192290,7 +235447,7 @@ func (obj *patternFlowVxlanReserved1Counter) ToJson() (string, error) { return string(data), nil } -func (obj *patternFlowVxlanReserved1Counter) FromJson(value string) error { +func (obj *patternFlowUdpLengthCounter) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -192311,19 +235468,19 @@ func (obj *patternFlowVxlanReserved1Counter) FromJson(value string) error { return nil } -func (obj *patternFlowVxlanReserved1Counter) validateToAndFrom() error { +func (obj *patternFlowUdpLengthCounter) validateToAndFrom() error { // emptyVars() obj.validateObj(&obj.validation, true) return obj.validationResult() } -func (obj *patternFlowVxlanReserved1Counter) Validate() error { +func (obj *patternFlowUdpLengthCounter) Validate() error { // emptyVars() obj.validateObj(&obj.validation, false) return obj.validationResult() } -func (obj *patternFlowVxlanReserved1Counter) String() string { +func (obj *patternFlowUdpLengthCounter) String() string { str, err := obj.ToYaml() if err != nil { return err.Error() @@ -192331,12 +235488,12 @@ func (obj *patternFlowVxlanReserved1Counter) String() string { return str } -func (obj *patternFlowVxlanReserved1Counter) Clone() (PatternFlowVxlanReserved1Counter, error) { +func (obj *patternFlowUdpLengthCounter) Clone() (PatternFlowUdpLengthCounter, error) { vErr := obj.Validate() if vErr != nil { return nil, vErr } - newObj := NewPatternFlowVxlanReserved1Counter() + newObj := NewPatternFlowUdpLengthCounter() data, err := proto.Marshal(obj.Msg()) if err != nil { return nil, err @@ -192348,63 +235505,63 @@ func (obj *patternFlowVxlanReserved1Counter) Clone() (PatternFlowVxlanReserved1C return newObj, nil } -// PatternFlowVxlanReserved1Counter is integer counter pattern -type PatternFlowVxlanReserved1Counter interface { +// PatternFlowUdpLengthCounter is integer counter pattern +type PatternFlowUdpLengthCounter interface { Validation - // Msg marshals PatternFlowVxlanReserved1Counter to protobuf object *otg.PatternFlowVxlanReserved1Counter + // Msg marshals PatternFlowUdpLengthCounter to protobuf object *otg.PatternFlowUdpLengthCounter // and doesn't set defaults - Msg() *otg.PatternFlowVxlanReserved1Counter - // SetMsg unmarshals PatternFlowVxlanReserved1Counter from protobuf object *otg.PatternFlowVxlanReserved1Counter + Msg() *otg.PatternFlowUdpLengthCounter + // SetMsg unmarshals PatternFlowUdpLengthCounter from protobuf object *otg.PatternFlowUdpLengthCounter // and doesn't set defaults - SetMsg(*otg.PatternFlowVxlanReserved1Counter) PatternFlowVxlanReserved1Counter - // ToProto marshals PatternFlowVxlanReserved1Counter to protobuf object *otg.PatternFlowVxlanReserved1Counter - ToProto() (*otg.PatternFlowVxlanReserved1Counter, error) - // ToPbText marshals PatternFlowVxlanReserved1Counter to protobuf text + SetMsg(*otg.PatternFlowUdpLengthCounter) PatternFlowUdpLengthCounter + // ToProto marshals PatternFlowUdpLengthCounter to protobuf object *otg.PatternFlowUdpLengthCounter + ToProto() (*otg.PatternFlowUdpLengthCounter, error) + // ToPbText marshals PatternFlowUdpLengthCounter to protobuf text ToPbText() (string, error) - // ToYaml marshals PatternFlowVxlanReserved1Counter to YAML text + // ToYaml marshals PatternFlowUdpLengthCounter to YAML text ToYaml() (string, error) - // ToJson marshals PatternFlowVxlanReserved1Counter to JSON text + // ToJson marshals PatternFlowUdpLengthCounter to JSON text ToJson() (string, error) - // FromProto unmarshals PatternFlowVxlanReserved1Counter from protobuf object *otg.PatternFlowVxlanReserved1Counter - FromProto(msg *otg.PatternFlowVxlanReserved1Counter) (PatternFlowVxlanReserved1Counter, error) - // FromPbText unmarshals PatternFlowVxlanReserved1Counter from protobuf text + // FromProto unmarshals PatternFlowUdpLengthCounter from protobuf object *otg.PatternFlowUdpLengthCounter + FromProto(msg *otg.PatternFlowUdpLengthCounter) (PatternFlowUdpLengthCounter, error) + // FromPbText unmarshals PatternFlowUdpLengthCounter from protobuf text FromPbText(value string) error - // FromYaml unmarshals PatternFlowVxlanReserved1Counter from YAML text + // FromYaml unmarshals PatternFlowUdpLengthCounter from YAML text FromYaml(value string) error - // FromJson unmarshals PatternFlowVxlanReserved1Counter from JSON text + // FromJson unmarshals PatternFlowUdpLengthCounter from JSON text FromJson(value string) error - // Validate validates PatternFlowVxlanReserved1Counter + // Validate validates PatternFlowUdpLengthCounter Validate() error // A stringer function String() string // Clones the object - Clone() (PatternFlowVxlanReserved1Counter, error) + Clone() (PatternFlowUdpLengthCounter, error) validateToAndFrom() error validateObj(vObj *validation, set_default bool) setDefault() - // Start returns uint32, set in PatternFlowVxlanReserved1Counter. + // Start returns uint32, set in PatternFlowUdpLengthCounter. Start() uint32 - // SetStart assigns uint32 provided by user to PatternFlowVxlanReserved1Counter - SetStart(value uint32) PatternFlowVxlanReserved1Counter - // HasStart checks if Start has been set in PatternFlowVxlanReserved1Counter + // SetStart assigns uint32 provided by user to PatternFlowUdpLengthCounter + SetStart(value uint32) PatternFlowUdpLengthCounter + // HasStart checks if Start has been set in PatternFlowUdpLengthCounter HasStart() bool - // Step returns uint32, set in PatternFlowVxlanReserved1Counter. + // Step returns uint32, set in PatternFlowUdpLengthCounter. Step() uint32 - // SetStep assigns uint32 provided by user to PatternFlowVxlanReserved1Counter - SetStep(value uint32) PatternFlowVxlanReserved1Counter - // HasStep checks if Step has been set in PatternFlowVxlanReserved1Counter + // SetStep assigns uint32 provided by user to PatternFlowUdpLengthCounter + SetStep(value uint32) PatternFlowUdpLengthCounter + // HasStep checks if Step has been set in PatternFlowUdpLengthCounter HasStep() bool - // Count returns uint32, set in PatternFlowVxlanReserved1Counter. + // Count returns uint32, set in PatternFlowUdpLengthCounter. Count() uint32 - // SetCount assigns uint32 provided by user to PatternFlowVxlanReserved1Counter - SetCount(value uint32) PatternFlowVxlanReserved1Counter - // HasCount checks if Count has been set in PatternFlowVxlanReserved1Counter + // SetCount assigns uint32 provided by user to PatternFlowUdpLengthCounter + SetCount(value uint32) PatternFlowUdpLengthCounter + // HasCount checks if Count has been set in PatternFlowUdpLengthCounter HasCount() bool } // description is TBD // Start returns a uint32 -func (obj *patternFlowVxlanReserved1Counter) Start() uint32 { +func (obj *patternFlowUdpLengthCounter) Start() uint32 { return *obj.obj.Start @@ -192412,13 +235569,13 @@ func (obj *patternFlowVxlanReserved1Counter) Start() uint32 { // description is TBD // Start returns a uint32 -func (obj *patternFlowVxlanReserved1Counter) HasStart() bool { +func (obj *patternFlowUdpLengthCounter) HasStart() bool { return obj.obj.Start != nil } // description is TBD -// SetStart sets the uint32 value in the PatternFlowVxlanReserved1Counter object -func (obj *patternFlowVxlanReserved1Counter) SetStart(value uint32) PatternFlowVxlanReserved1Counter { +// SetStart sets the uint32 value in the PatternFlowUdpLengthCounter object +func (obj *patternFlowUdpLengthCounter) SetStart(value uint32) PatternFlowUdpLengthCounter { obj.obj.Start = &value return obj @@ -192426,7 +235583,7 @@ func (obj *patternFlowVxlanReserved1Counter) SetStart(value uint32) PatternFlowV // description is TBD // Step returns a uint32 -func (obj *patternFlowVxlanReserved1Counter) Step() uint32 { +func (obj *patternFlowUdpLengthCounter) Step() uint32 { return *obj.obj.Step @@ -192434,13 +235591,13 @@ func (obj *patternFlowVxlanReserved1Counter) Step() uint32 { // description is TBD // Step returns a uint32 -func (obj *patternFlowVxlanReserved1Counter) HasStep() bool { +func (obj *patternFlowUdpLengthCounter) HasStep() bool { return obj.obj.Step != nil } // description is TBD -// SetStep sets the uint32 value in the PatternFlowVxlanReserved1Counter object -func (obj *patternFlowVxlanReserved1Counter) SetStep(value uint32) PatternFlowVxlanReserved1Counter { +// SetStep sets the uint32 value in the PatternFlowUdpLengthCounter object +func (obj *patternFlowUdpLengthCounter) SetStep(value uint32) PatternFlowUdpLengthCounter { obj.obj.Step = &value return obj @@ -192448,7 +235605,7 @@ func (obj *patternFlowVxlanReserved1Counter) SetStep(value uint32) PatternFlowVx // description is TBD // Count returns a uint32 -func (obj *patternFlowVxlanReserved1Counter) Count() uint32 { +func (obj *patternFlowUdpLengthCounter) Count() uint32 { return *obj.obj.Count @@ -192456,56 +235613,56 @@ func (obj *patternFlowVxlanReserved1Counter) Count() uint32 { // description is TBD // Count returns a uint32 -func (obj *patternFlowVxlanReserved1Counter) HasCount() bool { +func (obj *patternFlowUdpLengthCounter) HasCount() bool { return obj.obj.Count != nil } // description is TBD -// SetCount sets the uint32 value in the PatternFlowVxlanReserved1Counter object -func (obj *patternFlowVxlanReserved1Counter) SetCount(value uint32) PatternFlowVxlanReserved1Counter { +// SetCount sets the uint32 value in the PatternFlowUdpLengthCounter object +func (obj *patternFlowUdpLengthCounter) SetCount(value uint32) PatternFlowUdpLengthCounter { obj.obj.Count = &value return obj } -func (obj *patternFlowVxlanReserved1Counter) validateObj(vObj *validation, set_default bool) { +func (obj *patternFlowUdpLengthCounter) validateObj(vObj *validation, set_default bool) { if set_default { obj.setDefault() } if obj.obj.Start != nil { - if *obj.obj.Start > 255 { + if *obj.obj.Start > 65535 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowVxlanReserved1Counter.Start <= 255 but Got %d", *obj.obj.Start)) + fmt.Sprintf("0 <= PatternFlowUdpLengthCounter.Start <= 65535 but Got %d", *obj.obj.Start)) } } if obj.obj.Step != nil { - if *obj.obj.Step > 255 { + if *obj.obj.Step > 65535 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowVxlanReserved1Counter.Step <= 255 but Got %d", *obj.obj.Step)) + fmt.Sprintf("0 <= PatternFlowUdpLengthCounter.Step <= 65535 but Got %d", *obj.obj.Step)) } } if obj.obj.Count != nil { - if *obj.obj.Count > 255 { + if *obj.obj.Count > 65535 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowVxlanReserved1Counter.Count <= 255 but Got %d", *obj.obj.Count)) + fmt.Sprintf("0 <= PatternFlowUdpLengthCounter.Count <= 65535 but Got %d", *obj.obj.Count)) } } } -func (obj *patternFlowVxlanReserved1Counter) setDefault() { +func (obj *patternFlowUdpLengthCounter) setDefault() { if obj.obj.Start == nil { obj.SetStart(0) } @@ -192518,29 +235675,29 @@ func (obj *patternFlowVxlanReserved1Counter) setDefault() { } -// ***** PatternFlowVxlanReserved1MetricTag ***** -type patternFlowVxlanReserved1MetricTag struct { +// ***** PatternFlowUdpLengthMetricTag ***** +type patternFlowUdpLengthMetricTag struct { validation - obj *otg.PatternFlowVxlanReserved1MetricTag + obj *otg.PatternFlowUdpLengthMetricTag } -func NewPatternFlowVxlanReserved1MetricTag() PatternFlowVxlanReserved1MetricTag { - obj := patternFlowVxlanReserved1MetricTag{obj: &otg.PatternFlowVxlanReserved1MetricTag{}} +func NewPatternFlowUdpLengthMetricTag() PatternFlowUdpLengthMetricTag { + obj := patternFlowUdpLengthMetricTag{obj: &otg.PatternFlowUdpLengthMetricTag{}} obj.setDefault() return &obj } -func (obj *patternFlowVxlanReserved1MetricTag) Msg() *otg.PatternFlowVxlanReserved1MetricTag { +func (obj *patternFlowUdpLengthMetricTag) Msg() *otg.PatternFlowUdpLengthMetricTag { return obj.obj } -func (obj *patternFlowVxlanReserved1MetricTag) SetMsg(msg *otg.PatternFlowVxlanReserved1MetricTag) PatternFlowVxlanReserved1MetricTag { +func (obj *patternFlowUdpLengthMetricTag) SetMsg(msg *otg.PatternFlowUdpLengthMetricTag) PatternFlowUdpLengthMetricTag { proto.Merge(obj.obj, msg) return obj } -func (obj *patternFlowVxlanReserved1MetricTag) ToProto() (*otg.PatternFlowVxlanReserved1MetricTag, error) { +func (obj *patternFlowUdpLengthMetricTag) ToProto() (*otg.PatternFlowUdpLengthMetricTag, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -192548,7 +235705,7 @@ func (obj *patternFlowVxlanReserved1MetricTag) ToProto() (*otg.PatternFlowVxlanR return obj.Msg(), nil } -func (obj *patternFlowVxlanReserved1MetricTag) FromProto(msg *otg.PatternFlowVxlanReserved1MetricTag) (PatternFlowVxlanReserved1MetricTag, error) { +func (obj *patternFlowUdpLengthMetricTag) FromProto(msg *otg.PatternFlowUdpLengthMetricTag) (PatternFlowUdpLengthMetricTag, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -192557,7 +235714,7 @@ func (obj *patternFlowVxlanReserved1MetricTag) FromProto(msg *otg.PatternFlowVxl return newObj, nil } -func (obj *patternFlowVxlanReserved1MetricTag) ToPbText() (string, error) { +func (obj *patternFlowUdpLengthMetricTag) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -192569,7 +235726,7 @@ func (obj *patternFlowVxlanReserved1MetricTag) ToPbText() (string, error) { return string(protoMarshal), nil } -func (obj *patternFlowVxlanReserved1MetricTag) FromPbText(value string) error { +func (obj *patternFlowUdpLengthMetricTag) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj @@ -192582,7 +235739,7 @@ func (obj *patternFlowVxlanReserved1MetricTag) FromPbText(value string) error { return retObj } -func (obj *patternFlowVxlanReserved1MetricTag) ToYaml() (string, error) { +func (obj *patternFlowUdpLengthMetricTag) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -192603,7 +235760,7 @@ func (obj *patternFlowVxlanReserved1MetricTag) ToYaml() (string, error) { return string(data), nil } -func (obj *patternFlowVxlanReserved1MetricTag) FromYaml(value string) error { +func (obj *patternFlowUdpLengthMetricTag) FromYaml(value string) error { if value == "" { value = "{}" } @@ -192628,7 +235785,7 @@ func (obj *patternFlowVxlanReserved1MetricTag) FromYaml(value string) error { return nil } -func (obj *patternFlowVxlanReserved1MetricTag) ToJson() (string, error) { +func (obj *patternFlowUdpLengthMetricTag) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -192646,7 +235803,7 @@ func (obj *patternFlowVxlanReserved1MetricTag) ToJson() (string, error) { return string(data), nil } -func (obj *patternFlowVxlanReserved1MetricTag) FromJson(value string) error { +func (obj *patternFlowUdpLengthMetricTag) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -192667,19 +235824,19 @@ func (obj *patternFlowVxlanReserved1MetricTag) FromJson(value string) error { return nil } -func (obj *patternFlowVxlanReserved1MetricTag) validateToAndFrom() error { +func (obj *patternFlowUdpLengthMetricTag) validateToAndFrom() error { // emptyVars() obj.validateObj(&obj.validation, true) return obj.validationResult() } -func (obj *patternFlowVxlanReserved1MetricTag) Validate() error { +func (obj *patternFlowUdpLengthMetricTag) Validate() error { // emptyVars() obj.validateObj(&obj.validation, false) return obj.validationResult() } -func (obj *patternFlowVxlanReserved1MetricTag) String() string { +func (obj *patternFlowUdpLengthMetricTag) String() string { str, err := obj.ToYaml() if err != nil { return err.Error() @@ -192687,12 +235844,12 @@ func (obj *patternFlowVxlanReserved1MetricTag) String() string { return str } -func (obj *patternFlowVxlanReserved1MetricTag) Clone() (PatternFlowVxlanReserved1MetricTag, error) { +func (obj *patternFlowUdpLengthMetricTag) Clone() (PatternFlowUdpLengthMetricTag, error) { vErr := obj.Validate() if vErr != nil { return nil, vErr } - newObj := NewPatternFlowVxlanReserved1MetricTag() + newObj := NewPatternFlowUdpLengthMetricTag() data, err := proto.Marshal(obj.Msg()) if err != nil { return nil, err @@ -192704,69 +235861,69 @@ func (obj *patternFlowVxlanReserved1MetricTag) Clone() (PatternFlowVxlanReserved return newObj, nil } -// PatternFlowVxlanReserved1MetricTag is metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. -type PatternFlowVxlanReserved1MetricTag interface { +// PatternFlowUdpLengthMetricTag is metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. +type PatternFlowUdpLengthMetricTag interface { Validation - // Msg marshals PatternFlowVxlanReserved1MetricTag to protobuf object *otg.PatternFlowVxlanReserved1MetricTag + // Msg marshals PatternFlowUdpLengthMetricTag to protobuf object *otg.PatternFlowUdpLengthMetricTag // and doesn't set defaults - Msg() *otg.PatternFlowVxlanReserved1MetricTag - // SetMsg unmarshals PatternFlowVxlanReserved1MetricTag from protobuf object *otg.PatternFlowVxlanReserved1MetricTag + Msg() *otg.PatternFlowUdpLengthMetricTag + // SetMsg unmarshals PatternFlowUdpLengthMetricTag from protobuf object *otg.PatternFlowUdpLengthMetricTag // and doesn't set defaults - SetMsg(*otg.PatternFlowVxlanReserved1MetricTag) PatternFlowVxlanReserved1MetricTag - // ToProto marshals PatternFlowVxlanReserved1MetricTag to protobuf object *otg.PatternFlowVxlanReserved1MetricTag - ToProto() (*otg.PatternFlowVxlanReserved1MetricTag, error) - // ToPbText marshals PatternFlowVxlanReserved1MetricTag to protobuf text + SetMsg(*otg.PatternFlowUdpLengthMetricTag) PatternFlowUdpLengthMetricTag + // ToProto marshals PatternFlowUdpLengthMetricTag to protobuf object *otg.PatternFlowUdpLengthMetricTag + ToProto() (*otg.PatternFlowUdpLengthMetricTag, error) + // ToPbText marshals PatternFlowUdpLengthMetricTag to protobuf text ToPbText() (string, error) - // ToYaml marshals PatternFlowVxlanReserved1MetricTag to YAML text + // ToYaml marshals PatternFlowUdpLengthMetricTag to YAML text ToYaml() (string, error) - // ToJson marshals PatternFlowVxlanReserved1MetricTag to JSON text + // ToJson marshals PatternFlowUdpLengthMetricTag to JSON text ToJson() (string, error) - // FromProto unmarshals PatternFlowVxlanReserved1MetricTag from protobuf object *otg.PatternFlowVxlanReserved1MetricTag - FromProto(msg *otg.PatternFlowVxlanReserved1MetricTag) (PatternFlowVxlanReserved1MetricTag, error) - // FromPbText unmarshals PatternFlowVxlanReserved1MetricTag from protobuf text + // FromProto unmarshals PatternFlowUdpLengthMetricTag from protobuf object *otg.PatternFlowUdpLengthMetricTag + FromProto(msg *otg.PatternFlowUdpLengthMetricTag) (PatternFlowUdpLengthMetricTag, error) + // FromPbText unmarshals PatternFlowUdpLengthMetricTag from protobuf text FromPbText(value string) error - // FromYaml unmarshals PatternFlowVxlanReserved1MetricTag from YAML text + // FromYaml unmarshals PatternFlowUdpLengthMetricTag from YAML text FromYaml(value string) error - // FromJson unmarshals PatternFlowVxlanReserved1MetricTag from JSON text + // FromJson unmarshals PatternFlowUdpLengthMetricTag from JSON text FromJson(value string) error - // Validate validates PatternFlowVxlanReserved1MetricTag + // Validate validates PatternFlowUdpLengthMetricTag Validate() error // A stringer function String() string // Clones the object - Clone() (PatternFlowVxlanReserved1MetricTag, error) + Clone() (PatternFlowUdpLengthMetricTag, error) validateToAndFrom() error validateObj(vObj *validation, set_default bool) setDefault() - // Name returns string, set in PatternFlowVxlanReserved1MetricTag. + // Name returns string, set in PatternFlowUdpLengthMetricTag. Name() string - // SetName assigns string provided by user to PatternFlowVxlanReserved1MetricTag - SetName(value string) PatternFlowVxlanReserved1MetricTag - // Offset returns uint32, set in PatternFlowVxlanReserved1MetricTag. + // SetName assigns string provided by user to PatternFlowUdpLengthMetricTag + SetName(value string) PatternFlowUdpLengthMetricTag + // Offset returns uint32, set in PatternFlowUdpLengthMetricTag. Offset() uint32 - // SetOffset assigns uint32 provided by user to PatternFlowVxlanReserved1MetricTag - SetOffset(value uint32) PatternFlowVxlanReserved1MetricTag - // HasOffset checks if Offset has been set in PatternFlowVxlanReserved1MetricTag + // SetOffset assigns uint32 provided by user to PatternFlowUdpLengthMetricTag + SetOffset(value uint32) PatternFlowUdpLengthMetricTag + // HasOffset checks if Offset has been set in PatternFlowUdpLengthMetricTag HasOffset() bool - // Length returns uint32, set in PatternFlowVxlanReserved1MetricTag. + // Length returns uint32, set in PatternFlowUdpLengthMetricTag. Length() uint32 - // SetLength assigns uint32 provided by user to PatternFlowVxlanReserved1MetricTag - SetLength(value uint32) PatternFlowVxlanReserved1MetricTag - // HasLength checks if Length has been set in PatternFlowVxlanReserved1MetricTag + // SetLength assigns uint32 provided by user to PatternFlowUdpLengthMetricTag + SetLength(value uint32) PatternFlowUdpLengthMetricTag + // HasLength checks if Length has been set in PatternFlowUdpLengthMetricTag HasLength() bool } // Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field // Name returns a string -func (obj *patternFlowVxlanReserved1MetricTag) Name() string { +func (obj *patternFlowUdpLengthMetricTag) Name() string { return *obj.obj.Name } // Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field -// SetName sets the string value in the PatternFlowVxlanReserved1MetricTag object -func (obj *patternFlowVxlanReserved1MetricTag) SetName(value string) PatternFlowVxlanReserved1MetricTag { +// SetName sets the string value in the PatternFlowUdpLengthMetricTag object +func (obj *patternFlowUdpLengthMetricTag) SetName(value string) PatternFlowUdpLengthMetricTag { obj.obj.Name = &value return obj @@ -192774,7 +235931,7 @@ func (obj *patternFlowVxlanReserved1MetricTag) SetName(value string) PatternFlow // Offset in bits relative to start of corresponding header field // Offset returns a uint32 -func (obj *patternFlowVxlanReserved1MetricTag) Offset() uint32 { +func (obj *patternFlowUdpLengthMetricTag) Offset() uint32 { return *obj.obj.Offset @@ -192782,13 +235939,13 @@ func (obj *patternFlowVxlanReserved1MetricTag) Offset() uint32 { // Offset in bits relative to start of corresponding header field // Offset returns a uint32 -func (obj *patternFlowVxlanReserved1MetricTag) HasOffset() bool { +func (obj *patternFlowUdpLengthMetricTag) HasOffset() bool { return obj.obj.Offset != nil } // Offset in bits relative to start of corresponding header field -// SetOffset sets the uint32 value in the PatternFlowVxlanReserved1MetricTag object -func (obj *patternFlowVxlanReserved1MetricTag) SetOffset(value uint32) PatternFlowVxlanReserved1MetricTag { +// SetOffset sets the uint32 value in the PatternFlowUdpLengthMetricTag object +func (obj *patternFlowUdpLengthMetricTag) SetOffset(value uint32) PatternFlowUdpLengthMetricTag { obj.obj.Offset = &value return obj @@ -192796,7 +235953,7 @@ func (obj *patternFlowVxlanReserved1MetricTag) SetOffset(value uint32) PatternFl // Number of bits to track for metrics starting from configured offset of corresponding header field // Length returns a uint32 -func (obj *patternFlowVxlanReserved1MetricTag) Length() uint32 { +func (obj *patternFlowUdpLengthMetricTag) Length() uint32 { return *obj.obj.Length @@ -192804,83 +235961,83 @@ func (obj *patternFlowVxlanReserved1MetricTag) Length() uint32 { // Number of bits to track for metrics starting from configured offset of corresponding header field // Length returns a uint32 -func (obj *patternFlowVxlanReserved1MetricTag) HasLength() bool { +func (obj *patternFlowUdpLengthMetricTag) HasLength() bool { return obj.obj.Length != nil } // Number of bits to track for metrics starting from configured offset of corresponding header field -// SetLength sets the uint32 value in the PatternFlowVxlanReserved1MetricTag object -func (obj *patternFlowVxlanReserved1MetricTag) SetLength(value uint32) PatternFlowVxlanReserved1MetricTag { +// SetLength sets the uint32 value in the PatternFlowUdpLengthMetricTag object +func (obj *patternFlowUdpLengthMetricTag) SetLength(value uint32) PatternFlowUdpLengthMetricTag { obj.obj.Length = &value return obj } -func (obj *patternFlowVxlanReserved1MetricTag) validateObj(vObj *validation, set_default bool) { +func (obj *patternFlowUdpLengthMetricTag) validateObj(vObj *validation, set_default bool) { if set_default { obj.setDefault() } // Name is required if obj.obj.Name == nil { - vObj.validationErrors = append(vObj.validationErrors, "Name is required field on interface PatternFlowVxlanReserved1MetricTag") + vObj.validationErrors = append(vObj.validationErrors, "Name is required field on interface PatternFlowUdpLengthMetricTag") } if obj.obj.Offset != nil { - if *obj.obj.Offset > 7 { + if *obj.obj.Offset > 15 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowVxlanReserved1MetricTag.Offset <= 7 but Got %d", *obj.obj.Offset)) + fmt.Sprintf("0 <= PatternFlowUdpLengthMetricTag.Offset <= 15 but Got %d", *obj.obj.Offset)) } } if obj.obj.Length != nil { - if *obj.obj.Length < 1 || *obj.obj.Length > 8 { + if *obj.obj.Length < 1 || *obj.obj.Length > 16 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("1 <= PatternFlowVxlanReserved1MetricTag.Length <= 8 but Got %d", *obj.obj.Length)) + fmt.Sprintf("1 <= PatternFlowUdpLengthMetricTag.Length <= 16 but Got %d", *obj.obj.Length)) } } } -func (obj *patternFlowVxlanReserved1MetricTag) setDefault() { +func (obj *patternFlowUdpLengthMetricTag) setDefault() { if obj.obj.Offset == nil { obj.SetOffset(0) } if obj.obj.Length == nil { - obj.SetLength(8) + obj.SetLength(16) } } -// ***** PatternFlowIpv4VersionCounter ***** -type patternFlowIpv4VersionCounter struct { +// ***** PatternFlowGreChecksumPresentCounter ***** +type patternFlowGreChecksumPresentCounter struct { validation - obj *otg.PatternFlowIpv4VersionCounter + obj *otg.PatternFlowGreChecksumPresentCounter } -func NewPatternFlowIpv4VersionCounter() PatternFlowIpv4VersionCounter { - obj := patternFlowIpv4VersionCounter{obj: &otg.PatternFlowIpv4VersionCounter{}} +func NewPatternFlowGreChecksumPresentCounter() PatternFlowGreChecksumPresentCounter { + obj := patternFlowGreChecksumPresentCounter{obj: &otg.PatternFlowGreChecksumPresentCounter{}} obj.setDefault() return &obj } -func (obj *patternFlowIpv4VersionCounter) Msg() *otg.PatternFlowIpv4VersionCounter { +func (obj *patternFlowGreChecksumPresentCounter) Msg() *otg.PatternFlowGreChecksumPresentCounter { return obj.obj } -func (obj *patternFlowIpv4VersionCounter) SetMsg(msg *otg.PatternFlowIpv4VersionCounter) PatternFlowIpv4VersionCounter { +func (obj *patternFlowGreChecksumPresentCounter) SetMsg(msg *otg.PatternFlowGreChecksumPresentCounter) PatternFlowGreChecksumPresentCounter { proto.Merge(obj.obj, msg) return obj } -func (obj *patternFlowIpv4VersionCounter) ToProto() (*otg.PatternFlowIpv4VersionCounter, error) { +func (obj *patternFlowGreChecksumPresentCounter) ToProto() (*otg.PatternFlowGreChecksumPresentCounter, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -192888,7 +236045,7 @@ func (obj *patternFlowIpv4VersionCounter) ToProto() (*otg.PatternFlowIpv4Version return obj.Msg(), nil } -func (obj *patternFlowIpv4VersionCounter) FromProto(msg *otg.PatternFlowIpv4VersionCounter) (PatternFlowIpv4VersionCounter, error) { +func (obj *patternFlowGreChecksumPresentCounter) FromProto(msg *otg.PatternFlowGreChecksumPresentCounter) (PatternFlowGreChecksumPresentCounter, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -192897,7 +236054,7 @@ func (obj *patternFlowIpv4VersionCounter) FromProto(msg *otg.PatternFlowIpv4Vers return newObj, nil } -func (obj *patternFlowIpv4VersionCounter) ToPbText() (string, error) { +func (obj *patternFlowGreChecksumPresentCounter) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -192909,7 +236066,7 @@ func (obj *patternFlowIpv4VersionCounter) ToPbText() (string, error) { return string(protoMarshal), nil } -func (obj *patternFlowIpv4VersionCounter) FromPbText(value string) error { +func (obj *patternFlowGreChecksumPresentCounter) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj @@ -192922,7 +236079,7 @@ func (obj *patternFlowIpv4VersionCounter) FromPbText(value string) error { return retObj } -func (obj *patternFlowIpv4VersionCounter) ToYaml() (string, error) { +func (obj *patternFlowGreChecksumPresentCounter) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -192943,7 +236100,7 @@ func (obj *patternFlowIpv4VersionCounter) ToYaml() (string, error) { return string(data), nil } -func (obj *patternFlowIpv4VersionCounter) FromYaml(value string) error { +func (obj *patternFlowGreChecksumPresentCounter) FromYaml(value string) error { if value == "" { value = "{}" } @@ -192968,7 +236125,7 @@ func (obj *patternFlowIpv4VersionCounter) FromYaml(value string) error { return nil } -func (obj *patternFlowIpv4VersionCounter) ToJson() (string, error) { +func (obj *patternFlowGreChecksumPresentCounter) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -192986,7 +236143,7 @@ func (obj *patternFlowIpv4VersionCounter) ToJson() (string, error) { return string(data), nil } -func (obj *patternFlowIpv4VersionCounter) FromJson(value string) error { +func (obj *patternFlowGreChecksumPresentCounter) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -193007,19 +236164,19 @@ func (obj *patternFlowIpv4VersionCounter) FromJson(value string) error { return nil } -func (obj *patternFlowIpv4VersionCounter) validateToAndFrom() error { +func (obj *patternFlowGreChecksumPresentCounter) validateToAndFrom() error { // emptyVars() obj.validateObj(&obj.validation, true) return obj.validationResult() } -func (obj *patternFlowIpv4VersionCounter) Validate() error { +func (obj *patternFlowGreChecksumPresentCounter) Validate() error { // emptyVars() obj.validateObj(&obj.validation, false) return obj.validationResult() } -func (obj *patternFlowIpv4VersionCounter) String() string { +func (obj *patternFlowGreChecksumPresentCounter) String() string { str, err := obj.ToYaml() if err != nil { return err.Error() @@ -193027,12 +236184,12 @@ func (obj *patternFlowIpv4VersionCounter) String() string { return str } -func (obj *patternFlowIpv4VersionCounter) Clone() (PatternFlowIpv4VersionCounter, error) { +func (obj *patternFlowGreChecksumPresentCounter) Clone() (PatternFlowGreChecksumPresentCounter, error) { vErr := obj.Validate() if vErr != nil { return nil, vErr } - newObj := NewPatternFlowIpv4VersionCounter() + newObj := NewPatternFlowGreChecksumPresentCounter() data, err := proto.Marshal(obj.Msg()) if err != nil { return nil, err @@ -193044,63 +236201,63 @@ func (obj *patternFlowIpv4VersionCounter) Clone() (PatternFlowIpv4VersionCounter return newObj, nil } -// PatternFlowIpv4VersionCounter is integer counter pattern -type PatternFlowIpv4VersionCounter interface { +// PatternFlowGreChecksumPresentCounter is integer counter pattern +type PatternFlowGreChecksumPresentCounter interface { Validation - // Msg marshals PatternFlowIpv4VersionCounter to protobuf object *otg.PatternFlowIpv4VersionCounter + // Msg marshals PatternFlowGreChecksumPresentCounter to protobuf object *otg.PatternFlowGreChecksumPresentCounter // and doesn't set defaults - Msg() *otg.PatternFlowIpv4VersionCounter - // SetMsg unmarshals PatternFlowIpv4VersionCounter from protobuf object *otg.PatternFlowIpv4VersionCounter + Msg() *otg.PatternFlowGreChecksumPresentCounter + // SetMsg unmarshals PatternFlowGreChecksumPresentCounter from protobuf object *otg.PatternFlowGreChecksumPresentCounter // and doesn't set defaults - SetMsg(*otg.PatternFlowIpv4VersionCounter) PatternFlowIpv4VersionCounter - // ToProto marshals PatternFlowIpv4VersionCounter to protobuf object *otg.PatternFlowIpv4VersionCounter - ToProto() (*otg.PatternFlowIpv4VersionCounter, error) - // ToPbText marshals PatternFlowIpv4VersionCounter to protobuf text + SetMsg(*otg.PatternFlowGreChecksumPresentCounter) PatternFlowGreChecksumPresentCounter + // ToProto marshals PatternFlowGreChecksumPresentCounter to protobuf object *otg.PatternFlowGreChecksumPresentCounter + ToProto() (*otg.PatternFlowGreChecksumPresentCounter, error) + // ToPbText marshals PatternFlowGreChecksumPresentCounter to protobuf text ToPbText() (string, error) - // ToYaml marshals PatternFlowIpv4VersionCounter to YAML text + // ToYaml marshals PatternFlowGreChecksumPresentCounter to YAML text ToYaml() (string, error) - // ToJson marshals PatternFlowIpv4VersionCounter to JSON text + // ToJson marshals PatternFlowGreChecksumPresentCounter to JSON text ToJson() (string, error) - // FromProto unmarshals PatternFlowIpv4VersionCounter from protobuf object *otg.PatternFlowIpv4VersionCounter - FromProto(msg *otg.PatternFlowIpv4VersionCounter) (PatternFlowIpv4VersionCounter, error) - // FromPbText unmarshals PatternFlowIpv4VersionCounter from protobuf text + // FromProto unmarshals PatternFlowGreChecksumPresentCounter from protobuf object *otg.PatternFlowGreChecksumPresentCounter + FromProto(msg *otg.PatternFlowGreChecksumPresentCounter) (PatternFlowGreChecksumPresentCounter, error) + // FromPbText unmarshals PatternFlowGreChecksumPresentCounter from protobuf text FromPbText(value string) error - // FromYaml unmarshals PatternFlowIpv4VersionCounter from YAML text + // FromYaml unmarshals PatternFlowGreChecksumPresentCounter from YAML text FromYaml(value string) error - // FromJson unmarshals PatternFlowIpv4VersionCounter from JSON text + // FromJson unmarshals PatternFlowGreChecksumPresentCounter from JSON text FromJson(value string) error - // Validate validates PatternFlowIpv4VersionCounter + // Validate validates PatternFlowGreChecksumPresentCounter Validate() error // A stringer function String() string // Clones the object - Clone() (PatternFlowIpv4VersionCounter, error) + Clone() (PatternFlowGreChecksumPresentCounter, error) validateToAndFrom() error validateObj(vObj *validation, set_default bool) setDefault() - // Start returns uint32, set in PatternFlowIpv4VersionCounter. + // Start returns uint32, set in PatternFlowGreChecksumPresentCounter. Start() uint32 - // SetStart assigns uint32 provided by user to PatternFlowIpv4VersionCounter - SetStart(value uint32) PatternFlowIpv4VersionCounter - // HasStart checks if Start has been set in PatternFlowIpv4VersionCounter + // SetStart assigns uint32 provided by user to PatternFlowGreChecksumPresentCounter + SetStart(value uint32) PatternFlowGreChecksumPresentCounter + // HasStart checks if Start has been set in PatternFlowGreChecksumPresentCounter HasStart() bool - // Step returns uint32, set in PatternFlowIpv4VersionCounter. + // Step returns uint32, set in PatternFlowGreChecksumPresentCounter. Step() uint32 - // SetStep assigns uint32 provided by user to PatternFlowIpv4VersionCounter - SetStep(value uint32) PatternFlowIpv4VersionCounter - // HasStep checks if Step has been set in PatternFlowIpv4VersionCounter + // SetStep assigns uint32 provided by user to PatternFlowGreChecksumPresentCounter + SetStep(value uint32) PatternFlowGreChecksumPresentCounter + // HasStep checks if Step has been set in PatternFlowGreChecksumPresentCounter HasStep() bool - // Count returns uint32, set in PatternFlowIpv4VersionCounter. + // Count returns uint32, set in PatternFlowGreChecksumPresentCounter. Count() uint32 - // SetCount assigns uint32 provided by user to PatternFlowIpv4VersionCounter - SetCount(value uint32) PatternFlowIpv4VersionCounter - // HasCount checks if Count has been set in PatternFlowIpv4VersionCounter + // SetCount assigns uint32 provided by user to PatternFlowGreChecksumPresentCounter + SetCount(value uint32) PatternFlowGreChecksumPresentCounter + // HasCount checks if Count has been set in PatternFlowGreChecksumPresentCounter HasCount() bool } // description is TBD // Start returns a uint32 -func (obj *patternFlowIpv4VersionCounter) Start() uint32 { +func (obj *patternFlowGreChecksumPresentCounter) Start() uint32 { return *obj.obj.Start @@ -193108,13 +236265,13 @@ func (obj *patternFlowIpv4VersionCounter) Start() uint32 { // description is TBD // Start returns a uint32 -func (obj *patternFlowIpv4VersionCounter) HasStart() bool { +func (obj *patternFlowGreChecksumPresentCounter) HasStart() bool { return obj.obj.Start != nil } // description is TBD -// SetStart sets the uint32 value in the PatternFlowIpv4VersionCounter object -func (obj *patternFlowIpv4VersionCounter) SetStart(value uint32) PatternFlowIpv4VersionCounter { +// SetStart sets the uint32 value in the PatternFlowGreChecksumPresentCounter object +func (obj *patternFlowGreChecksumPresentCounter) SetStart(value uint32) PatternFlowGreChecksumPresentCounter { obj.obj.Start = &value return obj @@ -193122,7 +236279,7 @@ func (obj *patternFlowIpv4VersionCounter) SetStart(value uint32) PatternFlowIpv4 // description is TBD // Step returns a uint32 -func (obj *patternFlowIpv4VersionCounter) Step() uint32 { +func (obj *patternFlowGreChecksumPresentCounter) Step() uint32 { return *obj.obj.Step @@ -193130,13 +236287,13 @@ func (obj *patternFlowIpv4VersionCounter) Step() uint32 { // description is TBD // Step returns a uint32 -func (obj *patternFlowIpv4VersionCounter) HasStep() bool { +func (obj *patternFlowGreChecksumPresentCounter) HasStep() bool { return obj.obj.Step != nil } // description is TBD -// SetStep sets the uint32 value in the PatternFlowIpv4VersionCounter object -func (obj *patternFlowIpv4VersionCounter) SetStep(value uint32) PatternFlowIpv4VersionCounter { +// SetStep sets the uint32 value in the PatternFlowGreChecksumPresentCounter object +func (obj *patternFlowGreChecksumPresentCounter) SetStep(value uint32) PatternFlowGreChecksumPresentCounter { obj.obj.Step = &value return obj @@ -193144,7 +236301,7 @@ func (obj *patternFlowIpv4VersionCounter) SetStep(value uint32) PatternFlowIpv4V // description is TBD // Count returns a uint32 -func (obj *patternFlowIpv4VersionCounter) Count() uint32 { +func (obj *patternFlowGreChecksumPresentCounter) Count() uint32 { return *obj.obj.Count @@ -193152,58 +236309,58 @@ func (obj *patternFlowIpv4VersionCounter) Count() uint32 { // description is TBD // Count returns a uint32 -func (obj *patternFlowIpv4VersionCounter) HasCount() bool { +func (obj *patternFlowGreChecksumPresentCounter) HasCount() bool { return obj.obj.Count != nil } // description is TBD -// SetCount sets the uint32 value in the PatternFlowIpv4VersionCounter object -func (obj *patternFlowIpv4VersionCounter) SetCount(value uint32) PatternFlowIpv4VersionCounter { +// SetCount sets the uint32 value in the PatternFlowGreChecksumPresentCounter object +func (obj *patternFlowGreChecksumPresentCounter) SetCount(value uint32) PatternFlowGreChecksumPresentCounter { obj.obj.Count = &value return obj } -func (obj *patternFlowIpv4VersionCounter) validateObj(vObj *validation, set_default bool) { +func (obj *patternFlowGreChecksumPresentCounter) validateObj(vObj *validation, set_default bool) { if set_default { obj.setDefault() } if obj.obj.Start != nil { - if *obj.obj.Start > 15 { + if *obj.obj.Start > 1 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowIpv4VersionCounter.Start <= 15 but Got %d", *obj.obj.Start)) + fmt.Sprintf("0 <= PatternFlowGreChecksumPresentCounter.Start <= 1 but Got %d", *obj.obj.Start)) } } if obj.obj.Step != nil { - if *obj.obj.Step > 15 { + if *obj.obj.Step > 1 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowIpv4VersionCounter.Step <= 15 but Got %d", *obj.obj.Step)) + fmt.Sprintf("0 <= PatternFlowGreChecksumPresentCounter.Step <= 1 but Got %d", *obj.obj.Step)) } } if obj.obj.Count != nil { - if *obj.obj.Count > 15 { + if *obj.obj.Count > 1 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowIpv4VersionCounter.Count <= 15 but Got %d", *obj.obj.Count)) + fmt.Sprintf("0 <= PatternFlowGreChecksumPresentCounter.Count <= 1 but Got %d", *obj.obj.Count)) } } } -func (obj *patternFlowIpv4VersionCounter) setDefault() { +func (obj *patternFlowGreChecksumPresentCounter) setDefault() { if obj.obj.Start == nil { - obj.SetStart(4) + obj.SetStart(0) } if obj.obj.Step == nil { obj.SetStep(1) @@ -193214,29 +236371,29 @@ func (obj *patternFlowIpv4VersionCounter) setDefault() { } -// ***** PatternFlowIpv4VersionMetricTag ***** -type patternFlowIpv4VersionMetricTag struct { +// ***** PatternFlowGreChecksumPresentMetricTag ***** +type patternFlowGreChecksumPresentMetricTag struct { validation - obj *otg.PatternFlowIpv4VersionMetricTag + obj *otg.PatternFlowGreChecksumPresentMetricTag } -func NewPatternFlowIpv4VersionMetricTag() PatternFlowIpv4VersionMetricTag { - obj := patternFlowIpv4VersionMetricTag{obj: &otg.PatternFlowIpv4VersionMetricTag{}} +func NewPatternFlowGreChecksumPresentMetricTag() PatternFlowGreChecksumPresentMetricTag { + obj := patternFlowGreChecksumPresentMetricTag{obj: &otg.PatternFlowGreChecksumPresentMetricTag{}} obj.setDefault() return &obj } -func (obj *patternFlowIpv4VersionMetricTag) Msg() *otg.PatternFlowIpv4VersionMetricTag { +func (obj *patternFlowGreChecksumPresentMetricTag) Msg() *otg.PatternFlowGreChecksumPresentMetricTag { return obj.obj } -func (obj *patternFlowIpv4VersionMetricTag) SetMsg(msg *otg.PatternFlowIpv4VersionMetricTag) PatternFlowIpv4VersionMetricTag { +func (obj *patternFlowGreChecksumPresentMetricTag) SetMsg(msg *otg.PatternFlowGreChecksumPresentMetricTag) PatternFlowGreChecksumPresentMetricTag { proto.Merge(obj.obj, msg) return obj } -func (obj *patternFlowIpv4VersionMetricTag) ToProto() (*otg.PatternFlowIpv4VersionMetricTag, error) { +func (obj *patternFlowGreChecksumPresentMetricTag) ToProto() (*otg.PatternFlowGreChecksumPresentMetricTag, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -193244,7 +236401,7 @@ func (obj *patternFlowIpv4VersionMetricTag) ToProto() (*otg.PatternFlowIpv4Versi return obj.Msg(), nil } -func (obj *patternFlowIpv4VersionMetricTag) FromProto(msg *otg.PatternFlowIpv4VersionMetricTag) (PatternFlowIpv4VersionMetricTag, error) { +func (obj *patternFlowGreChecksumPresentMetricTag) FromProto(msg *otg.PatternFlowGreChecksumPresentMetricTag) (PatternFlowGreChecksumPresentMetricTag, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -193253,7 +236410,7 @@ func (obj *patternFlowIpv4VersionMetricTag) FromProto(msg *otg.PatternFlowIpv4Ve return newObj, nil } -func (obj *patternFlowIpv4VersionMetricTag) ToPbText() (string, error) { +func (obj *patternFlowGreChecksumPresentMetricTag) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -193265,7 +236422,7 @@ func (obj *patternFlowIpv4VersionMetricTag) ToPbText() (string, error) { return string(protoMarshal), nil } -func (obj *patternFlowIpv4VersionMetricTag) FromPbText(value string) error { +func (obj *patternFlowGreChecksumPresentMetricTag) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj @@ -193278,7 +236435,7 @@ func (obj *patternFlowIpv4VersionMetricTag) FromPbText(value string) error { return retObj } -func (obj *patternFlowIpv4VersionMetricTag) ToYaml() (string, error) { +func (obj *patternFlowGreChecksumPresentMetricTag) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -193299,7 +236456,7 @@ func (obj *patternFlowIpv4VersionMetricTag) ToYaml() (string, error) { return string(data), nil } -func (obj *patternFlowIpv4VersionMetricTag) FromYaml(value string) error { +func (obj *patternFlowGreChecksumPresentMetricTag) FromYaml(value string) error { if value == "" { value = "{}" } @@ -193324,7 +236481,7 @@ func (obj *patternFlowIpv4VersionMetricTag) FromYaml(value string) error { return nil } -func (obj *patternFlowIpv4VersionMetricTag) ToJson() (string, error) { +func (obj *patternFlowGreChecksumPresentMetricTag) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -193342,7 +236499,7 @@ func (obj *patternFlowIpv4VersionMetricTag) ToJson() (string, error) { return string(data), nil } -func (obj *patternFlowIpv4VersionMetricTag) FromJson(value string) error { +func (obj *patternFlowGreChecksumPresentMetricTag) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -193363,19 +236520,19 @@ func (obj *patternFlowIpv4VersionMetricTag) FromJson(value string) error { return nil } -func (obj *patternFlowIpv4VersionMetricTag) validateToAndFrom() error { +func (obj *patternFlowGreChecksumPresentMetricTag) validateToAndFrom() error { // emptyVars() obj.validateObj(&obj.validation, true) return obj.validationResult() } -func (obj *patternFlowIpv4VersionMetricTag) Validate() error { +func (obj *patternFlowGreChecksumPresentMetricTag) Validate() error { // emptyVars() obj.validateObj(&obj.validation, false) return obj.validationResult() } -func (obj *patternFlowIpv4VersionMetricTag) String() string { +func (obj *patternFlowGreChecksumPresentMetricTag) String() string { str, err := obj.ToYaml() if err != nil { return err.Error() @@ -193383,12 +236540,12 @@ func (obj *patternFlowIpv4VersionMetricTag) String() string { return str } -func (obj *patternFlowIpv4VersionMetricTag) Clone() (PatternFlowIpv4VersionMetricTag, error) { +func (obj *patternFlowGreChecksumPresentMetricTag) Clone() (PatternFlowGreChecksumPresentMetricTag, error) { vErr := obj.Validate() if vErr != nil { return nil, vErr } - newObj := NewPatternFlowIpv4VersionMetricTag() + newObj := NewPatternFlowGreChecksumPresentMetricTag() data, err := proto.Marshal(obj.Msg()) if err != nil { return nil, err @@ -193400,69 +236557,69 @@ func (obj *patternFlowIpv4VersionMetricTag) Clone() (PatternFlowIpv4VersionMetri return newObj, nil } -// PatternFlowIpv4VersionMetricTag is metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. -type PatternFlowIpv4VersionMetricTag interface { +// PatternFlowGreChecksumPresentMetricTag is metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. +type PatternFlowGreChecksumPresentMetricTag interface { Validation - // Msg marshals PatternFlowIpv4VersionMetricTag to protobuf object *otg.PatternFlowIpv4VersionMetricTag + // Msg marshals PatternFlowGreChecksumPresentMetricTag to protobuf object *otg.PatternFlowGreChecksumPresentMetricTag // and doesn't set defaults - Msg() *otg.PatternFlowIpv4VersionMetricTag - // SetMsg unmarshals PatternFlowIpv4VersionMetricTag from protobuf object *otg.PatternFlowIpv4VersionMetricTag + Msg() *otg.PatternFlowGreChecksumPresentMetricTag + // SetMsg unmarshals PatternFlowGreChecksumPresentMetricTag from protobuf object *otg.PatternFlowGreChecksumPresentMetricTag // and doesn't set defaults - SetMsg(*otg.PatternFlowIpv4VersionMetricTag) PatternFlowIpv4VersionMetricTag - // ToProto marshals PatternFlowIpv4VersionMetricTag to protobuf object *otg.PatternFlowIpv4VersionMetricTag - ToProto() (*otg.PatternFlowIpv4VersionMetricTag, error) - // ToPbText marshals PatternFlowIpv4VersionMetricTag to protobuf text + SetMsg(*otg.PatternFlowGreChecksumPresentMetricTag) PatternFlowGreChecksumPresentMetricTag + // ToProto marshals PatternFlowGreChecksumPresentMetricTag to protobuf object *otg.PatternFlowGreChecksumPresentMetricTag + ToProto() (*otg.PatternFlowGreChecksumPresentMetricTag, error) + // ToPbText marshals PatternFlowGreChecksumPresentMetricTag to protobuf text ToPbText() (string, error) - // ToYaml marshals PatternFlowIpv4VersionMetricTag to YAML text + // ToYaml marshals PatternFlowGreChecksumPresentMetricTag to YAML text ToYaml() (string, error) - // ToJson marshals PatternFlowIpv4VersionMetricTag to JSON text + // ToJson marshals PatternFlowGreChecksumPresentMetricTag to JSON text ToJson() (string, error) - // FromProto unmarshals PatternFlowIpv4VersionMetricTag from protobuf object *otg.PatternFlowIpv4VersionMetricTag - FromProto(msg *otg.PatternFlowIpv4VersionMetricTag) (PatternFlowIpv4VersionMetricTag, error) - // FromPbText unmarshals PatternFlowIpv4VersionMetricTag from protobuf text + // FromProto unmarshals PatternFlowGreChecksumPresentMetricTag from protobuf object *otg.PatternFlowGreChecksumPresentMetricTag + FromProto(msg *otg.PatternFlowGreChecksumPresentMetricTag) (PatternFlowGreChecksumPresentMetricTag, error) + // FromPbText unmarshals PatternFlowGreChecksumPresentMetricTag from protobuf text FromPbText(value string) error - // FromYaml unmarshals PatternFlowIpv4VersionMetricTag from YAML text + // FromYaml unmarshals PatternFlowGreChecksumPresentMetricTag from YAML text FromYaml(value string) error - // FromJson unmarshals PatternFlowIpv4VersionMetricTag from JSON text + // FromJson unmarshals PatternFlowGreChecksumPresentMetricTag from JSON text FromJson(value string) error - // Validate validates PatternFlowIpv4VersionMetricTag + // Validate validates PatternFlowGreChecksumPresentMetricTag Validate() error // A stringer function String() string // Clones the object - Clone() (PatternFlowIpv4VersionMetricTag, error) + Clone() (PatternFlowGreChecksumPresentMetricTag, error) validateToAndFrom() error validateObj(vObj *validation, set_default bool) setDefault() - // Name returns string, set in PatternFlowIpv4VersionMetricTag. + // Name returns string, set in PatternFlowGreChecksumPresentMetricTag. Name() string - // SetName assigns string provided by user to PatternFlowIpv4VersionMetricTag - SetName(value string) PatternFlowIpv4VersionMetricTag - // Offset returns uint32, set in PatternFlowIpv4VersionMetricTag. + // SetName assigns string provided by user to PatternFlowGreChecksumPresentMetricTag + SetName(value string) PatternFlowGreChecksumPresentMetricTag + // Offset returns uint32, set in PatternFlowGreChecksumPresentMetricTag. Offset() uint32 - // SetOffset assigns uint32 provided by user to PatternFlowIpv4VersionMetricTag - SetOffset(value uint32) PatternFlowIpv4VersionMetricTag - // HasOffset checks if Offset has been set in PatternFlowIpv4VersionMetricTag + // SetOffset assigns uint32 provided by user to PatternFlowGreChecksumPresentMetricTag + SetOffset(value uint32) PatternFlowGreChecksumPresentMetricTag + // HasOffset checks if Offset has been set in PatternFlowGreChecksumPresentMetricTag HasOffset() bool - // Length returns uint32, set in PatternFlowIpv4VersionMetricTag. + // Length returns uint32, set in PatternFlowGreChecksumPresentMetricTag. Length() uint32 - // SetLength assigns uint32 provided by user to PatternFlowIpv4VersionMetricTag - SetLength(value uint32) PatternFlowIpv4VersionMetricTag - // HasLength checks if Length has been set in PatternFlowIpv4VersionMetricTag + // SetLength assigns uint32 provided by user to PatternFlowGreChecksumPresentMetricTag + SetLength(value uint32) PatternFlowGreChecksumPresentMetricTag + // HasLength checks if Length has been set in PatternFlowGreChecksumPresentMetricTag HasLength() bool } // Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field // Name returns a string -func (obj *patternFlowIpv4VersionMetricTag) Name() string { +func (obj *patternFlowGreChecksumPresentMetricTag) Name() string { return *obj.obj.Name } // Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field -// SetName sets the string value in the PatternFlowIpv4VersionMetricTag object -func (obj *patternFlowIpv4VersionMetricTag) SetName(value string) PatternFlowIpv4VersionMetricTag { +// SetName sets the string value in the PatternFlowGreChecksumPresentMetricTag object +func (obj *patternFlowGreChecksumPresentMetricTag) SetName(value string) PatternFlowGreChecksumPresentMetricTag { obj.obj.Name = &value return obj @@ -193470,7 +236627,7 @@ func (obj *patternFlowIpv4VersionMetricTag) SetName(value string) PatternFlowIpv // Offset in bits relative to start of corresponding header field // Offset returns a uint32 -func (obj *patternFlowIpv4VersionMetricTag) Offset() uint32 { +func (obj *patternFlowGreChecksumPresentMetricTag) Offset() uint32 { return *obj.obj.Offset @@ -193478,13 +236635,13 @@ func (obj *patternFlowIpv4VersionMetricTag) Offset() uint32 { // Offset in bits relative to start of corresponding header field // Offset returns a uint32 -func (obj *patternFlowIpv4VersionMetricTag) HasOffset() bool { +func (obj *patternFlowGreChecksumPresentMetricTag) HasOffset() bool { return obj.obj.Offset != nil } // Offset in bits relative to start of corresponding header field -// SetOffset sets the uint32 value in the PatternFlowIpv4VersionMetricTag object -func (obj *patternFlowIpv4VersionMetricTag) SetOffset(value uint32) PatternFlowIpv4VersionMetricTag { +// SetOffset sets the uint32 value in the PatternFlowGreChecksumPresentMetricTag object +func (obj *patternFlowGreChecksumPresentMetricTag) SetOffset(value uint32) PatternFlowGreChecksumPresentMetricTag { obj.obj.Offset = &value return obj @@ -193492,7 +236649,7 @@ func (obj *patternFlowIpv4VersionMetricTag) SetOffset(value uint32) PatternFlowI // Number of bits to track for metrics starting from configured offset of corresponding header field // Length returns a uint32 -func (obj *patternFlowIpv4VersionMetricTag) Length() uint32 { +func (obj *patternFlowGreChecksumPresentMetricTag) Length() uint32 { return *obj.obj.Length @@ -193500,83 +236657,83 @@ func (obj *patternFlowIpv4VersionMetricTag) Length() uint32 { // Number of bits to track for metrics starting from configured offset of corresponding header field // Length returns a uint32 -func (obj *patternFlowIpv4VersionMetricTag) HasLength() bool { +func (obj *patternFlowGreChecksumPresentMetricTag) HasLength() bool { return obj.obj.Length != nil } // Number of bits to track for metrics starting from configured offset of corresponding header field -// SetLength sets the uint32 value in the PatternFlowIpv4VersionMetricTag object -func (obj *patternFlowIpv4VersionMetricTag) SetLength(value uint32) PatternFlowIpv4VersionMetricTag { +// SetLength sets the uint32 value in the PatternFlowGreChecksumPresentMetricTag object +func (obj *patternFlowGreChecksumPresentMetricTag) SetLength(value uint32) PatternFlowGreChecksumPresentMetricTag { obj.obj.Length = &value return obj } -func (obj *patternFlowIpv4VersionMetricTag) validateObj(vObj *validation, set_default bool) { +func (obj *patternFlowGreChecksumPresentMetricTag) validateObj(vObj *validation, set_default bool) { if set_default { obj.setDefault() } // Name is required if obj.obj.Name == nil { - vObj.validationErrors = append(vObj.validationErrors, "Name is required field on interface PatternFlowIpv4VersionMetricTag") + vObj.validationErrors = append(vObj.validationErrors, "Name is required field on interface PatternFlowGreChecksumPresentMetricTag") } if obj.obj.Offset != nil { - if *obj.obj.Offset > 3 { + if *obj.obj.Offset > 0 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowIpv4VersionMetricTag.Offset <= 3 but Got %d", *obj.obj.Offset)) + fmt.Sprintf("0 <= PatternFlowGreChecksumPresentMetricTag.Offset <= 0 but Got %d", *obj.obj.Offset)) } } if obj.obj.Length != nil { - if *obj.obj.Length < 1 || *obj.obj.Length > 4 { + if *obj.obj.Length < 1 || *obj.obj.Length > 1 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("1 <= PatternFlowIpv4VersionMetricTag.Length <= 4 but Got %d", *obj.obj.Length)) + fmt.Sprintf("1 <= PatternFlowGreChecksumPresentMetricTag.Length <= 1 but Got %d", *obj.obj.Length)) } } } -func (obj *patternFlowIpv4VersionMetricTag) setDefault() { +func (obj *patternFlowGreChecksumPresentMetricTag) setDefault() { if obj.obj.Offset == nil { obj.SetOffset(0) } if obj.obj.Length == nil { - obj.SetLength(4) + obj.SetLength(1) } } -// ***** PatternFlowIpv4HeaderLengthCounter ***** -type patternFlowIpv4HeaderLengthCounter struct { +// ***** PatternFlowGreReserved0Counter ***** +type patternFlowGreReserved0Counter struct { validation - obj *otg.PatternFlowIpv4HeaderLengthCounter + obj *otg.PatternFlowGreReserved0Counter } -func NewPatternFlowIpv4HeaderLengthCounter() PatternFlowIpv4HeaderLengthCounter { - obj := patternFlowIpv4HeaderLengthCounter{obj: &otg.PatternFlowIpv4HeaderLengthCounter{}} +func NewPatternFlowGreReserved0Counter() PatternFlowGreReserved0Counter { + obj := patternFlowGreReserved0Counter{obj: &otg.PatternFlowGreReserved0Counter{}} obj.setDefault() return &obj } -func (obj *patternFlowIpv4HeaderLengthCounter) Msg() *otg.PatternFlowIpv4HeaderLengthCounter { +func (obj *patternFlowGreReserved0Counter) Msg() *otg.PatternFlowGreReserved0Counter { return obj.obj } -func (obj *patternFlowIpv4HeaderLengthCounter) SetMsg(msg *otg.PatternFlowIpv4HeaderLengthCounter) PatternFlowIpv4HeaderLengthCounter { +func (obj *patternFlowGreReserved0Counter) SetMsg(msg *otg.PatternFlowGreReserved0Counter) PatternFlowGreReserved0Counter { proto.Merge(obj.obj, msg) return obj } -func (obj *patternFlowIpv4HeaderLengthCounter) ToProto() (*otg.PatternFlowIpv4HeaderLengthCounter, error) { +func (obj *patternFlowGreReserved0Counter) ToProto() (*otg.PatternFlowGreReserved0Counter, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -193584,7 +236741,7 @@ func (obj *patternFlowIpv4HeaderLengthCounter) ToProto() (*otg.PatternFlowIpv4He return obj.Msg(), nil } -func (obj *patternFlowIpv4HeaderLengthCounter) FromProto(msg *otg.PatternFlowIpv4HeaderLengthCounter) (PatternFlowIpv4HeaderLengthCounter, error) { +func (obj *patternFlowGreReserved0Counter) FromProto(msg *otg.PatternFlowGreReserved0Counter) (PatternFlowGreReserved0Counter, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -193593,7 +236750,7 @@ func (obj *patternFlowIpv4HeaderLengthCounter) FromProto(msg *otg.PatternFlowIpv return newObj, nil } -func (obj *patternFlowIpv4HeaderLengthCounter) ToPbText() (string, error) { +func (obj *patternFlowGreReserved0Counter) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -193605,7 +236762,7 @@ func (obj *patternFlowIpv4HeaderLengthCounter) ToPbText() (string, error) { return string(protoMarshal), nil } -func (obj *patternFlowIpv4HeaderLengthCounter) FromPbText(value string) error { +func (obj *patternFlowGreReserved0Counter) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj @@ -193618,7 +236775,7 @@ func (obj *patternFlowIpv4HeaderLengthCounter) FromPbText(value string) error { return retObj } -func (obj *patternFlowIpv4HeaderLengthCounter) ToYaml() (string, error) { +func (obj *patternFlowGreReserved0Counter) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -193639,7 +236796,7 @@ func (obj *patternFlowIpv4HeaderLengthCounter) ToYaml() (string, error) { return string(data), nil } -func (obj *patternFlowIpv4HeaderLengthCounter) FromYaml(value string) error { +func (obj *patternFlowGreReserved0Counter) FromYaml(value string) error { if value == "" { value = "{}" } @@ -193664,7 +236821,7 @@ func (obj *patternFlowIpv4HeaderLengthCounter) FromYaml(value string) error { return nil } -func (obj *patternFlowIpv4HeaderLengthCounter) ToJson() (string, error) { +func (obj *patternFlowGreReserved0Counter) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -193682,7 +236839,7 @@ func (obj *patternFlowIpv4HeaderLengthCounter) ToJson() (string, error) { return string(data), nil } -func (obj *patternFlowIpv4HeaderLengthCounter) FromJson(value string) error { +func (obj *patternFlowGreReserved0Counter) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -193703,19 +236860,19 @@ func (obj *patternFlowIpv4HeaderLengthCounter) FromJson(value string) error { return nil } -func (obj *patternFlowIpv4HeaderLengthCounter) validateToAndFrom() error { +func (obj *patternFlowGreReserved0Counter) validateToAndFrom() error { // emptyVars() obj.validateObj(&obj.validation, true) return obj.validationResult() } -func (obj *patternFlowIpv4HeaderLengthCounter) Validate() error { +func (obj *patternFlowGreReserved0Counter) Validate() error { // emptyVars() obj.validateObj(&obj.validation, false) return obj.validationResult() } -func (obj *patternFlowIpv4HeaderLengthCounter) String() string { +func (obj *patternFlowGreReserved0Counter) String() string { str, err := obj.ToYaml() if err != nil { return err.Error() @@ -193723,12 +236880,12 @@ func (obj *patternFlowIpv4HeaderLengthCounter) String() string { return str } -func (obj *patternFlowIpv4HeaderLengthCounter) Clone() (PatternFlowIpv4HeaderLengthCounter, error) { +func (obj *patternFlowGreReserved0Counter) Clone() (PatternFlowGreReserved0Counter, error) { vErr := obj.Validate() if vErr != nil { return nil, vErr } - newObj := NewPatternFlowIpv4HeaderLengthCounter() + newObj := NewPatternFlowGreReserved0Counter() data, err := proto.Marshal(obj.Msg()) if err != nil { return nil, err @@ -193740,63 +236897,63 @@ func (obj *patternFlowIpv4HeaderLengthCounter) Clone() (PatternFlowIpv4HeaderLen return newObj, nil } -// PatternFlowIpv4HeaderLengthCounter is integer counter pattern -type PatternFlowIpv4HeaderLengthCounter interface { +// PatternFlowGreReserved0Counter is integer counter pattern +type PatternFlowGreReserved0Counter interface { Validation - // Msg marshals PatternFlowIpv4HeaderLengthCounter to protobuf object *otg.PatternFlowIpv4HeaderLengthCounter + // Msg marshals PatternFlowGreReserved0Counter to protobuf object *otg.PatternFlowGreReserved0Counter // and doesn't set defaults - Msg() *otg.PatternFlowIpv4HeaderLengthCounter - // SetMsg unmarshals PatternFlowIpv4HeaderLengthCounter from protobuf object *otg.PatternFlowIpv4HeaderLengthCounter + Msg() *otg.PatternFlowGreReserved0Counter + // SetMsg unmarshals PatternFlowGreReserved0Counter from protobuf object *otg.PatternFlowGreReserved0Counter // and doesn't set defaults - SetMsg(*otg.PatternFlowIpv4HeaderLengthCounter) PatternFlowIpv4HeaderLengthCounter - // ToProto marshals PatternFlowIpv4HeaderLengthCounter to protobuf object *otg.PatternFlowIpv4HeaderLengthCounter - ToProto() (*otg.PatternFlowIpv4HeaderLengthCounter, error) - // ToPbText marshals PatternFlowIpv4HeaderLengthCounter to protobuf text + SetMsg(*otg.PatternFlowGreReserved0Counter) PatternFlowGreReserved0Counter + // ToProto marshals PatternFlowGreReserved0Counter to protobuf object *otg.PatternFlowGreReserved0Counter + ToProto() (*otg.PatternFlowGreReserved0Counter, error) + // ToPbText marshals PatternFlowGreReserved0Counter to protobuf text ToPbText() (string, error) - // ToYaml marshals PatternFlowIpv4HeaderLengthCounter to YAML text + // ToYaml marshals PatternFlowGreReserved0Counter to YAML text ToYaml() (string, error) - // ToJson marshals PatternFlowIpv4HeaderLengthCounter to JSON text + // ToJson marshals PatternFlowGreReserved0Counter to JSON text ToJson() (string, error) - // FromProto unmarshals PatternFlowIpv4HeaderLengthCounter from protobuf object *otg.PatternFlowIpv4HeaderLengthCounter - FromProto(msg *otg.PatternFlowIpv4HeaderLengthCounter) (PatternFlowIpv4HeaderLengthCounter, error) - // FromPbText unmarshals PatternFlowIpv4HeaderLengthCounter from protobuf text + // FromProto unmarshals PatternFlowGreReserved0Counter from protobuf object *otg.PatternFlowGreReserved0Counter + FromProto(msg *otg.PatternFlowGreReserved0Counter) (PatternFlowGreReserved0Counter, error) + // FromPbText unmarshals PatternFlowGreReserved0Counter from protobuf text FromPbText(value string) error - // FromYaml unmarshals PatternFlowIpv4HeaderLengthCounter from YAML text + // FromYaml unmarshals PatternFlowGreReserved0Counter from YAML text FromYaml(value string) error - // FromJson unmarshals PatternFlowIpv4HeaderLengthCounter from JSON text + // FromJson unmarshals PatternFlowGreReserved0Counter from JSON text FromJson(value string) error - // Validate validates PatternFlowIpv4HeaderLengthCounter + // Validate validates PatternFlowGreReserved0Counter Validate() error // A stringer function String() string // Clones the object - Clone() (PatternFlowIpv4HeaderLengthCounter, error) + Clone() (PatternFlowGreReserved0Counter, error) validateToAndFrom() error validateObj(vObj *validation, set_default bool) setDefault() - // Start returns uint32, set in PatternFlowIpv4HeaderLengthCounter. + // Start returns uint32, set in PatternFlowGreReserved0Counter. Start() uint32 - // SetStart assigns uint32 provided by user to PatternFlowIpv4HeaderLengthCounter - SetStart(value uint32) PatternFlowIpv4HeaderLengthCounter - // HasStart checks if Start has been set in PatternFlowIpv4HeaderLengthCounter + // SetStart assigns uint32 provided by user to PatternFlowGreReserved0Counter + SetStart(value uint32) PatternFlowGreReserved0Counter + // HasStart checks if Start has been set in PatternFlowGreReserved0Counter HasStart() bool - // Step returns uint32, set in PatternFlowIpv4HeaderLengthCounter. + // Step returns uint32, set in PatternFlowGreReserved0Counter. Step() uint32 - // SetStep assigns uint32 provided by user to PatternFlowIpv4HeaderLengthCounter - SetStep(value uint32) PatternFlowIpv4HeaderLengthCounter - // HasStep checks if Step has been set in PatternFlowIpv4HeaderLengthCounter + // SetStep assigns uint32 provided by user to PatternFlowGreReserved0Counter + SetStep(value uint32) PatternFlowGreReserved0Counter + // HasStep checks if Step has been set in PatternFlowGreReserved0Counter HasStep() bool - // Count returns uint32, set in PatternFlowIpv4HeaderLengthCounter. + // Count returns uint32, set in PatternFlowGreReserved0Counter. Count() uint32 - // SetCount assigns uint32 provided by user to PatternFlowIpv4HeaderLengthCounter - SetCount(value uint32) PatternFlowIpv4HeaderLengthCounter - // HasCount checks if Count has been set in PatternFlowIpv4HeaderLengthCounter + // SetCount assigns uint32 provided by user to PatternFlowGreReserved0Counter + SetCount(value uint32) PatternFlowGreReserved0Counter + // HasCount checks if Count has been set in PatternFlowGreReserved0Counter HasCount() bool } // description is TBD // Start returns a uint32 -func (obj *patternFlowIpv4HeaderLengthCounter) Start() uint32 { +func (obj *patternFlowGreReserved0Counter) Start() uint32 { return *obj.obj.Start @@ -193804,13 +236961,13 @@ func (obj *patternFlowIpv4HeaderLengthCounter) Start() uint32 { // description is TBD // Start returns a uint32 -func (obj *patternFlowIpv4HeaderLengthCounter) HasStart() bool { +func (obj *patternFlowGreReserved0Counter) HasStart() bool { return obj.obj.Start != nil } // description is TBD -// SetStart sets the uint32 value in the PatternFlowIpv4HeaderLengthCounter object -func (obj *patternFlowIpv4HeaderLengthCounter) SetStart(value uint32) PatternFlowIpv4HeaderLengthCounter { +// SetStart sets the uint32 value in the PatternFlowGreReserved0Counter object +func (obj *patternFlowGreReserved0Counter) SetStart(value uint32) PatternFlowGreReserved0Counter { obj.obj.Start = &value return obj @@ -193818,7 +236975,7 @@ func (obj *patternFlowIpv4HeaderLengthCounter) SetStart(value uint32) PatternFlo // description is TBD // Step returns a uint32 -func (obj *patternFlowIpv4HeaderLengthCounter) Step() uint32 { +func (obj *patternFlowGreReserved0Counter) Step() uint32 { return *obj.obj.Step @@ -193826,13 +236983,13 @@ func (obj *patternFlowIpv4HeaderLengthCounter) Step() uint32 { // description is TBD // Step returns a uint32 -func (obj *patternFlowIpv4HeaderLengthCounter) HasStep() bool { +func (obj *patternFlowGreReserved0Counter) HasStep() bool { return obj.obj.Step != nil } // description is TBD -// SetStep sets the uint32 value in the PatternFlowIpv4HeaderLengthCounter object -func (obj *patternFlowIpv4HeaderLengthCounter) SetStep(value uint32) PatternFlowIpv4HeaderLengthCounter { +// SetStep sets the uint32 value in the PatternFlowGreReserved0Counter object +func (obj *patternFlowGreReserved0Counter) SetStep(value uint32) PatternFlowGreReserved0Counter { obj.obj.Step = &value return obj @@ -193840,7 +236997,7 @@ func (obj *patternFlowIpv4HeaderLengthCounter) SetStep(value uint32) PatternFlow // description is TBD // Count returns a uint32 -func (obj *patternFlowIpv4HeaderLengthCounter) Count() uint32 { +func (obj *patternFlowGreReserved0Counter) Count() uint32 { return *obj.obj.Count @@ -193848,58 +237005,58 @@ func (obj *patternFlowIpv4HeaderLengthCounter) Count() uint32 { // description is TBD // Count returns a uint32 -func (obj *patternFlowIpv4HeaderLengthCounter) HasCount() bool { +func (obj *patternFlowGreReserved0Counter) HasCount() bool { return obj.obj.Count != nil } // description is TBD -// SetCount sets the uint32 value in the PatternFlowIpv4HeaderLengthCounter object -func (obj *patternFlowIpv4HeaderLengthCounter) SetCount(value uint32) PatternFlowIpv4HeaderLengthCounter { +// SetCount sets the uint32 value in the PatternFlowGreReserved0Counter object +func (obj *patternFlowGreReserved0Counter) SetCount(value uint32) PatternFlowGreReserved0Counter { obj.obj.Count = &value return obj } -func (obj *patternFlowIpv4HeaderLengthCounter) validateObj(vObj *validation, set_default bool) { +func (obj *patternFlowGreReserved0Counter) validateObj(vObj *validation, set_default bool) { if set_default { obj.setDefault() } if obj.obj.Start != nil { - if *obj.obj.Start > 15 { + if *obj.obj.Start > 4095 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowIpv4HeaderLengthCounter.Start <= 15 but Got %d", *obj.obj.Start)) + fmt.Sprintf("0 <= PatternFlowGreReserved0Counter.Start <= 4095 but Got %d", *obj.obj.Start)) } } if obj.obj.Step != nil { - if *obj.obj.Step > 15 { + if *obj.obj.Step > 4095 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowIpv4HeaderLengthCounter.Step <= 15 but Got %d", *obj.obj.Step)) + fmt.Sprintf("0 <= PatternFlowGreReserved0Counter.Step <= 4095 but Got %d", *obj.obj.Step)) } } if obj.obj.Count != nil { - if *obj.obj.Count > 15 { + if *obj.obj.Count > 4095 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowIpv4HeaderLengthCounter.Count <= 15 but Got %d", *obj.obj.Count)) + fmt.Sprintf("0 <= PatternFlowGreReserved0Counter.Count <= 4095 but Got %d", *obj.obj.Count)) } } } -func (obj *patternFlowIpv4HeaderLengthCounter) setDefault() { +func (obj *patternFlowGreReserved0Counter) setDefault() { if obj.obj.Start == nil { - obj.SetStart(5) + obj.SetStart(0) } if obj.obj.Step == nil { obj.SetStep(1) @@ -193910,29 +237067,29 @@ func (obj *patternFlowIpv4HeaderLengthCounter) setDefault() { } -// ***** PatternFlowIpv4HeaderLengthMetricTag ***** -type patternFlowIpv4HeaderLengthMetricTag struct { +// ***** PatternFlowGreReserved0MetricTag ***** +type patternFlowGreReserved0MetricTag struct { validation - obj *otg.PatternFlowIpv4HeaderLengthMetricTag + obj *otg.PatternFlowGreReserved0MetricTag } -func NewPatternFlowIpv4HeaderLengthMetricTag() PatternFlowIpv4HeaderLengthMetricTag { - obj := patternFlowIpv4HeaderLengthMetricTag{obj: &otg.PatternFlowIpv4HeaderLengthMetricTag{}} +func NewPatternFlowGreReserved0MetricTag() PatternFlowGreReserved0MetricTag { + obj := patternFlowGreReserved0MetricTag{obj: &otg.PatternFlowGreReserved0MetricTag{}} obj.setDefault() return &obj } -func (obj *patternFlowIpv4HeaderLengthMetricTag) Msg() *otg.PatternFlowIpv4HeaderLengthMetricTag { +func (obj *patternFlowGreReserved0MetricTag) Msg() *otg.PatternFlowGreReserved0MetricTag { return obj.obj } -func (obj *patternFlowIpv4HeaderLengthMetricTag) SetMsg(msg *otg.PatternFlowIpv4HeaderLengthMetricTag) PatternFlowIpv4HeaderLengthMetricTag { +func (obj *patternFlowGreReserved0MetricTag) SetMsg(msg *otg.PatternFlowGreReserved0MetricTag) PatternFlowGreReserved0MetricTag { proto.Merge(obj.obj, msg) return obj } -func (obj *patternFlowIpv4HeaderLengthMetricTag) ToProto() (*otg.PatternFlowIpv4HeaderLengthMetricTag, error) { +func (obj *patternFlowGreReserved0MetricTag) ToProto() (*otg.PatternFlowGreReserved0MetricTag, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -193940,7 +237097,7 @@ func (obj *patternFlowIpv4HeaderLengthMetricTag) ToProto() (*otg.PatternFlowIpv4 return obj.Msg(), nil } -func (obj *patternFlowIpv4HeaderLengthMetricTag) FromProto(msg *otg.PatternFlowIpv4HeaderLengthMetricTag) (PatternFlowIpv4HeaderLengthMetricTag, error) { +func (obj *patternFlowGreReserved0MetricTag) FromProto(msg *otg.PatternFlowGreReserved0MetricTag) (PatternFlowGreReserved0MetricTag, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -193949,7 +237106,7 @@ func (obj *patternFlowIpv4HeaderLengthMetricTag) FromProto(msg *otg.PatternFlowI return newObj, nil } -func (obj *patternFlowIpv4HeaderLengthMetricTag) ToPbText() (string, error) { +func (obj *patternFlowGreReserved0MetricTag) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -193961,7 +237118,7 @@ func (obj *patternFlowIpv4HeaderLengthMetricTag) ToPbText() (string, error) { return string(protoMarshal), nil } -func (obj *patternFlowIpv4HeaderLengthMetricTag) FromPbText(value string) error { +func (obj *patternFlowGreReserved0MetricTag) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj @@ -193974,7 +237131,7 @@ func (obj *patternFlowIpv4HeaderLengthMetricTag) FromPbText(value string) error return retObj } -func (obj *patternFlowIpv4HeaderLengthMetricTag) ToYaml() (string, error) { +func (obj *patternFlowGreReserved0MetricTag) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -193995,7 +237152,7 @@ func (obj *patternFlowIpv4HeaderLengthMetricTag) ToYaml() (string, error) { return string(data), nil } -func (obj *patternFlowIpv4HeaderLengthMetricTag) FromYaml(value string) error { +func (obj *patternFlowGreReserved0MetricTag) FromYaml(value string) error { if value == "" { value = "{}" } @@ -194020,7 +237177,7 @@ func (obj *patternFlowIpv4HeaderLengthMetricTag) FromYaml(value string) error { return nil } -func (obj *patternFlowIpv4HeaderLengthMetricTag) ToJson() (string, error) { +func (obj *patternFlowGreReserved0MetricTag) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -194038,7 +237195,7 @@ func (obj *patternFlowIpv4HeaderLengthMetricTag) ToJson() (string, error) { return string(data), nil } -func (obj *patternFlowIpv4HeaderLengthMetricTag) FromJson(value string) error { +func (obj *patternFlowGreReserved0MetricTag) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -194059,19 +237216,19 @@ func (obj *patternFlowIpv4HeaderLengthMetricTag) FromJson(value string) error { return nil } -func (obj *patternFlowIpv4HeaderLengthMetricTag) validateToAndFrom() error { +func (obj *patternFlowGreReserved0MetricTag) validateToAndFrom() error { // emptyVars() obj.validateObj(&obj.validation, true) return obj.validationResult() } -func (obj *patternFlowIpv4HeaderLengthMetricTag) Validate() error { +func (obj *patternFlowGreReserved0MetricTag) Validate() error { // emptyVars() obj.validateObj(&obj.validation, false) return obj.validationResult() } -func (obj *patternFlowIpv4HeaderLengthMetricTag) String() string { +func (obj *patternFlowGreReserved0MetricTag) String() string { str, err := obj.ToYaml() if err != nil { return err.Error() @@ -194079,12 +237236,12 @@ func (obj *patternFlowIpv4HeaderLengthMetricTag) String() string { return str } -func (obj *patternFlowIpv4HeaderLengthMetricTag) Clone() (PatternFlowIpv4HeaderLengthMetricTag, error) { +func (obj *patternFlowGreReserved0MetricTag) Clone() (PatternFlowGreReserved0MetricTag, error) { vErr := obj.Validate() if vErr != nil { return nil, vErr } - newObj := NewPatternFlowIpv4HeaderLengthMetricTag() + newObj := NewPatternFlowGreReserved0MetricTag() data, err := proto.Marshal(obj.Msg()) if err != nil { return nil, err @@ -194096,69 +237253,69 @@ func (obj *patternFlowIpv4HeaderLengthMetricTag) Clone() (PatternFlowIpv4HeaderL return newObj, nil } -// PatternFlowIpv4HeaderLengthMetricTag is metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. -type PatternFlowIpv4HeaderLengthMetricTag interface { +// PatternFlowGreReserved0MetricTag is metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. +type PatternFlowGreReserved0MetricTag interface { Validation - // Msg marshals PatternFlowIpv4HeaderLengthMetricTag to protobuf object *otg.PatternFlowIpv4HeaderLengthMetricTag + // Msg marshals PatternFlowGreReserved0MetricTag to protobuf object *otg.PatternFlowGreReserved0MetricTag // and doesn't set defaults - Msg() *otg.PatternFlowIpv4HeaderLengthMetricTag - // SetMsg unmarshals PatternFlowIpv4HeaderLengthMetricTag from protobuf object *otg.PatternFlowIpv4HeaderLengthMetricTag + Msg() *otg.PatternFlowGreReserved0MetricTag + // SetMsg unmarshals PatternFlowGreReserved0MetricTag from protobuf object *otg.PatternFlowGreReserved0MetricTag // and doesn't set defaults - SetMsg(*otg.PatternFlowIpv4HeaderLengthMetricTag) PatternFlowIpv4HeaderLengthMetricTag - // ToProto marshals PatternFlowIpv4HeaderLengthMetricTag to protobuf object *otg.PatternFlowIpv4HeaderLengthMetricTag - ToProto() (*otg.PatternFlowIpv4HeaderLengthMetricTag, error) - // ToPbText marshals PatternFlowIpv4HeaderLengthMetricTag to protobuf text + SetMsg(*otg.PatternFlowGreReserved0MetricTag) PatternFlowGreReserved0MetricTag + // ToProto marshals PatternFlowGreReserved0MetricTag to protobuf object *otg.PatternFlowGreReserved0MetricTag + ToProto() (*otg.PatternFlowGreReserved0MetricTag, error) + // ToPbText marshals PatternFlowGreReserved0MetricTag to protobuf text ToPbText() (string, error) - // ToYaml marshals PatternFlowIpv4HeaderLengthMetricTag to YAML text + // ToYaml marshals PatternFlowGreReserved0MetricTag to YAML text ToYaml() (string, error) - // ToJson marshals PatternFlowIpv4HeaderLengthMetricTag to JSON text + // ToJson marshals PatternFlowGreReserved0MetricTag to JSON text ToJson() (string, error) - // FromProto unmarshals PatternFlowIpv4HeaderLengthMetricTag from protobuf object *otg.PatternFlowIpv4HeaderLengthMetricTag - FromProto(msg *otg.PatternFlowIpv4HeaderLengthMetricTag) (PatternFlowIpv4HeaderLengthMetricTag, error) - // FromPbText unmarshals PatternFlowIpv4HeaderLengthMetricTag from protobuf text + // FromProto unmarshals PatternFlowGreReserved0MetricTag from protobuf object *otg.PatternFlowGreReserved0MetricTag + FromProto(msg *otg.PatternFlowGreReserved0MetricTag) (PatternFlowGreReserved0MetricTag, error) + // FromPbText unmarshals PatternFlowGreReserved0MetricTag from protobuf text FromPbText(value string) error - // FromYaml unmarshals PatternFlowIpv4HeaderLengthMetricTag from YAML text + // FromYaml unmarshals PatternFlowGreReserved0MetricTag from YAML text FromYaml(value string) error - // FromJson unmarshals PatternFlowIpv4HeaderLengthMetricTag from JSON text + // FromJson unmarshals PatternFlowGreReserved0MetricTag from JSON text FromJson(value string) error - // Validate validates PatternFlowIpv4HeaderLengthMetricTag + // Validate validates PatternFlowGreReserved0MetricTag Validate() error // A stringer function String() string // Clones the object - Clone() (PatternFlowIpv4HeaderLengthMetricTag, error) + Clone() (PatternFlowGreReserved0MetricTag, error) validateToAndFrom() error validateObj(vObj *validation, set_default bool) setDefault() - // Name returns string, set in PatternFlowIpv4HeaderLengthMetricTag. + // Name returns string, set in PatternFlowGreReserved0MetricTag. Name() string - // SetName assigns string provided by user to PatternFlowIpv4HeaderLengthMetricTag - SetName(value string) PatternFlowIpv4HeaderLengthMetricTag - // Offset returns uint32, set in PatternFlowIpv4HeaderLengthMetricTag. + // SetName assigns string provided by user to PatternFlowGreReserved0MetricTag + SetName(value string) PatternFlowGreReserved0MetricTag + // Offset returns uint32, set in PatternFlowGreReserved0MetricTag. Offset() uint32 - // SetOffset assigns uint32 provided by user to PatternFlowIpv4HeaderLengthMetricTag - SetOffset(value uint32) PatternFlowIpv4HeaderLengthMetricTag - // HasOffset checks if Offset has been set in PatternFlowIpv4HeaderLengthMetricTag + // SetOffset assigns uint32 provided by user to PatternFlowGreReserved0MetricTag + SetOffset(value uint32) PatternFlowGreReserved0MetricTag + // HasOffset checks if Offset has been set in PatternFlowGreReserved0MetricTag HasOffset() bool - // Length returns uint32, set in PatternFlowIpv4HeaderLengthMetricTag. + // Length returns uint32, set in PatternFlowGreReserved0MetricTag. Length() uint32 - // SetLength assigns uint32 provided by user to PatternFlowIpv4HeaderLengthMetricTag - SetLength(value uint32) PatternFlowIpv4HeaderLengthMetricTag - // HasLength checks if Length has been set in PatternFlowIpv4HeaderLengthMetricTag + // SetLength assigns uint32 provided by user to PatternFlowGreReserved0MetricTag + SetLength(value uint32) PatternFlowGreReserved0MetricTag + // HasLength checks if Length has been set in PatternFlowGreReserved0MetricTag HasLength() bool } // Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field // Name returns a string -func (obj *patternFlowIpv4HeaderLengthMetricTag) Name() string { +func (obj *patternFlowGreReserved0MetricTag) Name() string { return *obj.obj.Name } // Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field -// SetName sets the string value in the PatternFlowIpv4HeaderLengthMetricTag object -func (obj *patternFlowIpv4HeaderLengthMetricTag) SetName(value string) PatternFlowIpv4HeaderLengthMetricTag { +// SetName sets the string value in the PatternFlowGreReserved0MetricTag object +func (obj *patternFlowGreReserved0MetricTag) SetName(value string) PatternFlowGreReserved0MetricTag { obj.obj.Name = &value return obj @@ -194166,7 +237323,7 @@ func (obj *patternFlowIpv4HeaderLengthMetricTag) SetName(value string) PatternFl // Offset in bits relative to start of corresponding header field // Offset returns a uint32 -func (obj *patternFlowIpv4HeaderLengthMetricTag) Offset() uint32 { +func (obj *patternFlowGreReserved0MetricTag) Offset() uint32 { return *obj.obj.Offset @@ -194174,13 +237331,13 @@ func (obj *patternFlowIpv4HeaderLengthMetricTag) Offset() uint32 { // Offset in bits relative to start of corresponding header field // Offset returns a uint32 -func (obj *patternFlowIpv4HeaderLengthMetricTag) HasOffset() bool { +func (obj *patternFlowGreReserved0MetricTag) HasOffset() bool { return obj.obj.Offset != nil } // Offset in bits relative to start of corresponding header field -// SetOffset sets the uint32 value in the PatternFlowIpv4HeaderLengthMetricTag object -func (obj *patternFlowIpv4HeaderLengthMetricTag) SetOffset(value uint32) PatternFlowIpv4HeaderLengthMetricTag { +// SetOffset sets the uint32 value in the PatternFlowGreReserved0MetricTag object +func (obj *patternFlowGreReserved0MetricTag) SetOffset(value uint32) PatternFlowGreReserved0MetricTag { obj.obj.Offset = &value return obj @@ -194188,7 +237345,7 @@ func (obj *patternFlowIpv4HeaderLengthMetricTag) SetOffset(value uint32) Pattern // Number of bits to track for metrics starting from configured offset of corresponding header field // Length returns a uint32 -func (obj *patternFlowIpv4HeaderLengthMetricTag) Length() uint32 { +func (obj *patternFlowGreReserved0MetricTag) Length() uint32 { return *obj.obj.Length @@ -194196,86 +237353,83 @@ func (obj *patternFlowIpv4HeaderLengthMetricTag) Length() uint32 { // Number of bits to track for metrics starting from configured offset of corresponding header field // Length returns a uint32 -func (obj *patternFlowIpv4HeaderLengthMetricTag) HasLength() bool { +func (obj *patternFlowGreReserved0MetricTag) HasLength() bool { return obj.obj.Length != nil } // Number of bits to track for metrics starting from configured offset of corresponding header field -// SetLength sets the uint32 value in the PatternFlowIpv4HeaderLengthMetricTag object -func (obj *patternFlowIpv4HeaderLengthMetricTag) SetLength(value uint32) PatternFlowIpv4HeaderLengthMetricTag { +// SetLength sets the uint32 value in the PatternFlowGreReserved0MetricTag object +func (obj *patternFlowGreReserved0MetricTag) SetLength(value uint32) PatternFlowGreReserved0MetricTag { obj.obj.Length = &value return obj } -func (obj *patternFlowIpv4HeaderLengthMetricTag) validateObj(vObj *validation, set_default bool) { +func (obj *patternFlowGreReserved0MetricTag) validateObj(vObj *validation, set_default bool) { if set_default { obj.setDefault() } // Name is required if obj.obj.Name == nil { - vObj.validationErrors = append(vObj.validationErrors, "Name is required field on interface PatternFlowIpv4HeaderLengthMetricTag") + vObj.validationErrors = append(vObj.validationErrors, "Name is required field on interface PatternFlowGreReserved0MetricTag") } if obj.obj.Offset != nil { - if *obj.obj.Offset > 3 { + if *obj.obj.Offset > 11 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowIpv4HeaderLengthMetricTag.Offset <= 3 but Got %d", *obj.obj.Offset)) + fmt.Sprintf("0 <= PatternFlowGreReserved0MetricTag.Offset <= 11 but Got %d", *obj.obj.Offset)) } } if obj.obj.Length != nil { - if *obj.obj.Length < 1 || *obj.obj.Length > 4 { + if *obj.obj.Length < 1 || *obj.obj.Length > 12 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("1 <= PatternFlowIpv4HeaderLengthMetricTag.Length <= 4 but Got %d", *obj.obj.Length)) + fmt.Sprintf("1 <= PatternFlowGreReserved0MetricTag.Length <= 12 but Got %d", *obj.obj.Length)) } } } -func (obj *patternFlowIpv4HeaderLengthMetricTag) setDefault() { +func (obj *patternFlowGreReserved0MetricTag) setDefault() { if obj.obj.Offset == nil { obj.SetOffset(0) } if obj.obj.Length == nil { - obj.SetLength(4) + obj.SetLength(12) } } -// ***** PatternFlowIpv4PriorityRaw ***** -type patternFlowIpv4PriorityRaw struct { +// ***** PatternFlowGreVersionCounter ***** +type patternFlowGreVersionCounter struct { validation - obj *otg.PatternFlowIpv4PriorityRaw - incrementHolder PatternFlowIpv4PriorityRawCounter - decrementHolder PatternFlowIpv4PriorityRawCounter - metricTagsHolder PatternFlowIpv4PriorityRawPatternFlowIpv4PriorityRawMetricTagIter + obj *otg.PatternFlowGreVersionCounter } -func NewPatternFlowIpv4PriorityRaw() PatternFlowIpv4PriorityRaw { - obj := patternFlowIpv4PriorityRaw{obj: &otg.PatternFlowIpv4PriorityRaw{}} +func NewPatternFlowGreVersionCounter() PatternFlowGreVersionCounter { + obj := patternFlowGreVersionCounter{obj: &otg.PatternFlowGreVersionCounter{}} obj.setDefault() return &obj } -func (obj *patternFlowIpv4PriorityRaw) Msg() *otg.PatternFlowIpv4PriorityRaw { +func (obj *patternFlowGreVersionCounter) Msg() *otg.PatternFlowGreVersionCounter { return obj.obj } -func (obj *patternFlowIpv4PriorityRaw) SetMsg(msg *otg.PatternFlowIpv4PriorityRaw) PatternFlowIpv4PriorityRaw { - obj.setNil() +func (obj *patternFlowGreVersionCounter) SetMsg(msg *otg.PatternFlowGreVersionCounter) PatternFlowGreVersionCounter { + proto.Merge(obj.obj, msg) return obj } -func (obj *patternFlowIpv4PriorityRaw) ToProto() (*otg.PatternFlowIpv4PriorityRaw, error) { +func (obj *patternFlowGreVersionCounter) ToProto() (*otg.PatternFlowGreVersionCounter, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -194283,7 +237437,7 @@ func (obj *patternFlowIpv4PriorityRaw) ToProto() (*otg.PatternFlowIpv4PriorityRa return obj.Msg(), nil } -func (obj *patternFlowIpv4PriorityRaw) FromProto(msg *otg.PatternFlowIpv4PriorityRaw) (PatternFlowIpv4PriorityRaw, error) { +func (obj *patternFlowGreVersionCounter) FromProto(msg *otg.PatternFlowGreVersionCounter) (PatternFlowGreVersionCounter, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -194292,7 +237446,7 @@ func (obj *patternFlowIpv4PriorityRaw) FromProto(msg *otg.PatternFlowIpv4Priorit return newObj, nil } -func (obj *patternFlowIpv4PriorityRaw) ToPbText() (string, error) { +func (obj *patternFlowGreVersionCounter) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -194304,12 +237458,12 @@ func (obj *patternFlowIpv4PriorityRaw) ToPbText() (string, error) { return string(protoMarshal), nil } -func (obj *patternFlowIpv4PriorityRaw) FromPbText(value string) error { +func (obj *patternFlowGreVersionCounter) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj } - obj.setNil() + vErr := obj.validateToAndFrom() if vErr != nil { return vErr @@ -194317,7 +237471,7 @@ func (obj *patternFlowIpv4PriorityRaw) FromPbText(value string) error { return retObj } -func (obj *patternFlowIpv4PriorityRaw) ToYaml() (string, error) { +func (obj *patternFlowGreVersionCounter) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -194338,7 +237492,7 @@ func (obj *patternFlowIpv4PriorityRaw) ToYaml() (string, error) { return string(data), nil } -func (obj *patternFlowIpv4PriorityRaw) FromYaml(value string) error { +func (obj *patternFlowGreVersionCounter) FromYaml(value string) error { if value == "" { value = "{}" } @@ -194355,7 +237509,7 @@ func (obj *patternFlowIpv4PriorityRaw) FromYaml(value string) error { return fmt.Errorf("unmarshal error %s", strings.Replace( uError.Error(), "\u00a0", " ", -1)[7:]) } - obj.setNil() + vErr := obj.validateToAndFrom() if vErr != nil { return vErr @@ -194363,7 +237517,7 @@ func (obj *patternFlowIpv4PriorityRaw) FromYaml(value string) error { return nil } -func (obj *patternFlowIpv4PriorityRaw) ToJson() (string, error) { +func (obj *patternFlowGreVersionCounter) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -194381,7 +237535,7 @@ func (obj *patternFlowIpv4PriorityRaw) ToJson() (string, error) { return string(data), nil } -func (obj *patternFlowIpv4PriorityRaw) FromJson(value string) error { +func (obj *patternFlowGreVersionCounter) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -194394,7 +237548,7 @@ func (obj *patternFlowIpv4PriorityRaw) FromJson(value string) error { return fmt.Errorf("unmarshal error %s", strings.Replace( uError.Error(), "\u00a0", " ", -1)[7:]) } - obj.setNil() + err := obj.validateToAndFrom() if err != nil { return err @@ -194402,19 +237556,19 @@ func (obj *patternFlowIpv4PriorityRaw) FromJson(value string) error { return nil } -func (obj *patternFlowIpv4PriorityRaw) validateToAndFrom() error { +func (obj *patternFlowGreVersionCounter) validateToAndFrom() error { // emptyVars() obj.validateObj(&obj.validation, true) return obj.validationResult() } -func (obj *patternFlowIpv4PriorityRaw) Validate() error { +func (obj *patternFlowGreVersionCounter) Validate() error { // emptyVars() obj.validateObj(&obj.validation, false) return obj.validationResult() } -func (obj *patternFlowIpv4PriorityRaw) String() string { +func (obj *patternFlowGreVersionCounter) String() string { str, err := obj.ToYaml() if err != nil { return err.Error() @@ -194422,12 +237576,12 @@ func (obj *patternFlowIpv4PriorityRaw) String() string { return str } -func (obj *patternFlowIpv4PriorityRaw) Clone() (PatternFlowIpv4PriorityRaw, error) { +func (obj *patternFlowGreVersionCounter) Clone() (PatternFlowGreVersionCounter, error) { vErr := obj.Validate() if vErr != nil { return nil, vErr } - newObj := NewPatternFlowIpv4PriorityRaw() + newObj := NewPatternFlowGreVersionCounter() data, err := proto.Marshal(obj.Msg()) if err != nil { return nil, err @@ -194439,429 +237593,539 @@ func (obj *patternFlowIpv4PriorityRaw) Clone() (PatternFlowIpv4PriorityRaw, erro return newObj, nil } -func (obj *patternFlowIpv4PriorityRaw) setNil() { - obj.incrementHolder = nil - obj.decrementHolder = nil - obj.metricTagsHolder = nil - obj.validationErrors = nil - obj.warnings = nil - obj.constraints = make(map[string]map[string]Constraints) -} - -// PatternFlowIpv4PriorityRaw is raw priority -type PatternFlowIpv4PriorityRaw interface { +// PatternFlowGreVersionCounter is integer counter pattern +type PatternFlowGreVersionCounter interface { Validation - // Msg marshals PatternFlowIpv4PriorityRaw to protobuf object *otg.PatternFlowIpv4PriorityRaw + // Msg marshals PatternFlowGreVersionCounter to protobuf object *otg.PatternFlowGreVersionCounter // and doesn't set defaults - Msg() *otg.PatternFlowIpv4PriorityRaw - // SetMsg unmarshals PatternFlowIpv4PriorityRaw from protobuf object *otg.PatternFlowIpv4PriorityRaw + Msg() *otg.PatternFlowGreVersionCounter + // SetMsg unmarshals PatternFlowGreVersionCounter from protobuf object *otg.PatternFlowGreVersionCounter // and doesn't set defaults - SetMsg(*otg.PatternFlowIpv4PriorityRaw) PatternFlowIpv4PriorityRaw - // ToProto marshals PatternFlowIpv4PriorityRaw to protobuf object *otg.PatternFlowIpv4PriorityRaw - ToProto() (*otg.PatternFlowIpv4PriorityRaw, error) - // ToPbText marshals PatternFlowIpv4PriorityRaw to protobuf text + SetMsg(*otg.PatternFlowGreVersionCounter) PatternFlowGreVersionCounter + // ToProto marshals PatternFlowGreVersionCounter to protobuf object *otg.PatternFlowGreVersionCounter + ToProto() (*otg.PatternFlowGreVersionCounter, error) + // ToPbText marshals PatternFlowGreVersionCounter to protobuf text ToPbText() (string, error) - // ToYaml marshals PatternFlowIpv4PriorityRaw to YAML text + // ToYaml marshals PatternFlowGreVersionCounter to YAML text ToYaml() (string, error) - // ToJson marshals PatternFlowIpv4PriorityRaw to JSON text + // ToJson marshals PatternFlowGreVersionCounter to JSON text ToJson() (string, error) - // FromProto unmarshals PatternFlowIpv4PriorityRaw from protobuf object *otg.PatternFlowIpv4PriorityRaw - FromProto(msg *otg.PatternFlowIpv4PriorityRaw) (PatternFlowIpv4PriorityRaw, error) - // FromPbText unmarshals PatternFlowIpv4PriorityRaw from protobuf text + // FromProto unmarshals PatternFlowGreVersionCounter from protobuf object *otg.PatternFlowGreVersionCounter + FromProto(msg *otg.PatternFlowGreVersionCounter) (PatternFlowGreVersionCounter, error) + // FromPbText unmarshals PatternFlowGreVersionCounter from protobuf text FromPbText(value string) error - // FromYaml unmarshals PatternFlowIpv4PriorityRaw from YAML text + // FromYaml unmarshals PatternFlowGreVersionCounter from YAML text FromYaml(value string) error - // FromJson unmarshals PatternFlowIpv4PriorityRaw from JSON text + // FromJson unmarshals PatternFlowGreVersionCounter from JSON text FromJson(value string) error - // Validate validates PatternFlowIpv4PriorityRaw + // Validate validates PatternFlowGreVersionCounter Validate() error // A stringer function String() string // Clones the object - Clone() (PatternFlowIpv4PriorityRaw, error) + Clone() (PatternFlowGreVersionCounter, error) validateToAndFrom() error validateObj(vObj *validation, set_default bool) setDefault() - // Choice returns PatternFlowIpv4PriorityRawChoiceEnum, set in PatternFlowIpv4PriorityRaw - Choice() PatternFlowIpv4PriorityRawChoiceEnum - // SetChoice assigns PatternFlowIpv4PriorityRawChoiceEnum provided by user to PatternFlowIpv4PriorityRaw - SetChoice(value PatternFlowIpv4PriorityRawChoiceEnum) PatternFlowIpv4PriorityRaw - // HasChoice checks if Choice has been set in PatternFlowIpv4PriorityRaw - HasChoice() bool - // Value returns uint32, set in PatternFlowIpv4PriorityRaw. - Value() uint32 - // SetValue assigns uint32 provided by user to PatternFlowIpv4PriorityRaw - SetValue(value uint32) PatternFlowIpv4PriorityRaw - // HasValue checks if Value has been set in PatternFlowIpv4PriorityRaw - HasValue() bool - // Values returns []uint32, set in PatternFlowIpv4PriorityRaw. - Values() []uint32 - // SetValues assigns []uint32 provided by user to PatternFlowIpv4PriorityRaw - SetValues(value []uint32) PatternFlowIpv4PriorityRaw - // Increment returns PatternFlowIpv4PriorityRawCounter, set in PatternFlowIpv4PriorityRaw. - // PatternFlowIpv4PriorityRawCounter is integer counter pattern - Increment() PatternFlowIpv4PriorityRawCounter - // SetIncrement assigns PatternFlowIpv4PriorityRawCounter provided by user to PatternFlowIpv4PriorityRaw. - // PatternFlowIpv4PriorityRawCounter is integer counter pattern - SetIncrement(value PatternFlowIpv4PriorityRawCounter) PatternFlowIpv4PriorityRaw - // HasIncrement checks if Increment has been set in PatternFlowIpv4PriorityRaw - HasIncrement() bool - // Decrement returns PatternFlowIpv4PriorityRawCounter, set in PatternFlowIpv4PriorityRaw. - // PatternFlowIpv4PriorityRawCounter is integer counter pattern - Decrement() PatternFlowIpv4PriorityRawCounter - // SetDecrement assigns PatternFlowIpv4PriorityRawCounter provided by user to PatternFlowIpv4PriorityRaw. - // PatternFlowIpv4PriorityRawCounter is integer counter pattern - SetDecrement(value PatternFlowIpv4PriorityRawCounter) PatternFlowIpv4PriorityRaw - // HasDecrement checks if Decrement has been set in PatternFlowIpv4PriorityRaw - HasDecrement() bool - // MetricTags returns PatternFlowIpv4PriorityRawPatternFlowIpv4PriorityRawMetricTagIterIter, set in PatternFlowIpv4PriorityRaw - MetricTags() PatternFlowIpv4PriorityRawPatternFlowIpv4PriorityRawMetricTagIter - setNil() + // Start returns uint32, set in PatternFlowGreVersionCounter. + Start() uint32 + // SetStart assigns uint32 provided by user to PatternFlowGreVersionCounter + SetStart(value uint32) PatternFlowGreVersionCounter + // HasStart checks if Start has been set in PatternFlowGreVersionCounter + HasStart() bool + // Step returns uint32, set in PatternFlowGreVersionCounter. + Step() uint32 + // SetStep assigns uint32 provided by user to PatternFlowGreVersionCounter + SetStep(value uint32) PatternFlowGreVersionCounter + // HasStep checks if Step has been set in PatternFlowGreVersionCounter + HasStep() bool + // Count returns uint32, set in PatternFlowGreVersionCounter. + Count() uint32 + // SetCount assigns uint32 provided by user to PatternFlowGreVersionCounter + SetCount(value uint32) PatternFlowGreVersionCounter + // HasCount checks if Count has been set in PatternFlowGreVersionCounter + HasCount() bool } -type PatternFlowIpv4PriorityRawChoiceEnum string +// description is TBD +// Start returns a uint32 +func (obj *patternFlowGreVersionCounter) Start() uint32 { + + return *obj.obj.Start -// Enum of Choice on PatternFlowIpv4PriorityRaw -var PatternFlowIpv4PriorityRawChoice = struct { - VALUE PatternFlowIpv4PriorityRawChoiceEnum - VALUES PatternFlowIpv4PriorityRawChoiceEnum - INCREMENT PatternFlowIpv4PriorityRawChoiceEnum - DECREMENT PatternFlowIpv4PriorityRawChoiceEnum -}{ - VALUE: PatternFlowIpv4PriorityRawChoiceEnum("value"), - VALUES: PatternFlowIpv4PriorityRawChoiceEnum("values"), - INCREMENT: PatternFlowIpv4PriorityRawChoiceEnum("increment"), - DECREMENT: PatternFlowIpv4PriorityRawChoiceEnum("decrement"), } -func (obj *patternFlowIpv4PriorityRaw) Choice() PatternFlowIpv4PriorityRawChoiceEnum { - return PatternFlowIpv4PriorityRawChoiceEnum(obj.obj.Choice.Enum().String()) +// description is TBD +// Start returns a uint32 +func (obj *patternFlowGreVersionCounter) HasStart() bool { + return obj.obj.Start != nil } // description is TBD -// Choice returns a string -func (obj *patternFlowIpv4PriorityRaw) HasChoice() bool { - return obj.obj.Choice != nil +// SetStart sets the uint32 value in the PatternFlowGreVersionCounter object +func (obj *patternFlowGreVersionCounter) SetStart(value uint32) PatternFlowGreVersionCounter { + + obj.obj.Start = &value + return obj } -func (obj *patternFlowIpv4PriorityRaw) SetChoice(value PatternFlowIpv4PriorityRawChoiceEnum) PatternFlowIpv4PriorityRaw { - intValue, ok := otg.PatternFlowIpv4PriorityRaw_Choice_Enum_value[string(value)] - if !ok { - obj.validationErrors = append(obj.validationErrors, fmt.Sprintf( - "%s is not a valid choice on PatternFlowIpv4PriorityRawChoiceEnum", string(value))) - return obj +// description is TBD +// Step returns a uint32 +func (obj *patternFlowGreVersionCounter) Step() uint32 { + + return *obj.obj.Step + +} + +// description is TBD +// Step returns a uint32 +func (obj *patternFlowGreVersionCounter) HasStep() bool { + return obj.obj.Step != nil +} + +// description is TBD +// SetStep sets the uint32 value in the PatternFlowGreVersionCounter object +func (obj *patternFlowGreVersionCounter) SetStep(value uint32) PatternFlowGreVersionCounter { + + obj.obj.Step = &value + return obj +} + +// description is TBD +// Count returns a uint32 +func (obj *patternFlowGreVersionCounter) Count() uint32 { + + return *obj.obj.Count + +} + +// description is TBD +// Count returns a uint32 +func (obj *patternFlowGreVersionCounter) HasCount() bool { + return obj.obj.Count != nil +} + +// description is TBD +// SetCount sets the uint32 value in the PatternFlowGreVersionCounter object +func (obj *patternFlowGreVersionCounter) SetCount(value uint32) PatternFlowGreVersionCounter { + + obj.obj.Count = &value + return obj +} + +func (obj *patternFlowGreVersionCounter) validateObj(vObj *validation, set_default bool) { + if set_default { + obj.setDefault() } - enumValue := otg.PatternFlowIpv4PriorityRaw_Choice_Enum(intValue) - obj.obj.Choice = &enumValue - obj.obj.Decrement = nil - obj.decrementHolder = nil - obj.obj.Increment = nil - obj.incrementHolder = nil - obj.obj.Values = nil - obj.obj.Value = nil - if value == PatternFlowIpv4PriorityRawChoice.VALUE { - defaultValue := uint32(0) - obj.obj.Value = &defaultValue + if obj.obj.Start != nil { + + if *obj.obj.Start > 7 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("0 <= PatternFlowGreVersionCounter.Start <= 7 but Got %d", *obj.obj.Start)) + } + + } + + if obj.obj.Step != nil { + + if *obj.obj.Step > 7 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("0 <= PatternFlowGreVersionCounter.Step <= 7 but Got %d", *obj.obj.Step)) + } + + } + + if obj.obj.Count != nil { + + if *obj.obj.Count > 7 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("0 <= PatternFlowGreVersionCounter.Count <= 7 but Got %d", *obj.obj.Count)) + } + + } + +} + +func (obj *patternFlowGreVersionCounter) setDefault() { + if obj.obj.Start == nil { + obj.SetStart(0) + } + if obj.obj.Step == nil { + obj.SetStep(1) + } + if obj.obj.Count == nil { + obj.SetCount(1) + } + +} + +// ***** PatternFlowGreVersionMetricTag ***** +type patternFlowGreVersionMetricTag struct { + validation + obj *otg.PatternFlowGreVersionMetricTag +} + +func NewPatternFlowGreVersionMetricTag() PatternFlowGreVersionMetricTag { + obj := patternFlowGreVersionMetricTag{obj: &otg.PatternFlowGreVersionMetricTag{}} + obj.setDefault() + return &obj +} + +func (obj *patternFlowGreVersionMetricTag) Msg() *otg.PatternFlowGreVersionMetricTag { + return obj.obj +} + +func (obj *patternFlowGreVersionMetricTag) SetMsg(msg *otg.PatternFlowGreVersionMetricTag) PatternFlowGreVersionMetricTag { + + proto.Merge(obj.obj, msg) + return obj +} + +func (obj *patternFlowGreVersionMetricTag) ToProto() (*otg.PatternFlowGreVersionMetricTag, error) { + err := obj.validateToAndFrom() + if err != nil { + return nil, err + } + return obj.Msg(), nil +} + +func (obj *patternFlowGreVersionMetricTag) FromProto(msg *otg.PatternFlowGreVersionMetricTag) (PatternFlowGreVersionMetricTag, error) { + newObj := obj.SetMsg(msg) + err := newObj.validateToAndFrom() + if err != nil { + return nil, err + } + return newObj, nil +} + +func (obj *patternFlowGreVersionMetricTag) ToPbText() (string, error) { + vErr := obj.validateToAndFrom() + if vErr != nil { + return "", vErr + } + protoMarshal, err := proto.Marshal(obj.Msg()) + if err != nil { + return "", err + } + return string(protoMarshal), nil +} + +func (obj *patternFlowGreVersionMetricTag) FromPbText(value string) error { + retObj := proto.Unmarshal([]byte(value), obj.Msg()) + if retObj != nil { + return retObj + } + + vErr := obj.validateToAndFrom() + if vErr != nil { + return vErr + } + return retObj +} + +func (obj *patternFlowGreVersionMetricTag) ToYaml() (string, error) { + vErr := obj.validateToAndFrom() + if vErr != nil { + return "", vErr + } + opts := protojson.MarshalOptions{ + UseProtoNames: true, + AllowPartial: true, + EmitUnpopulated: false, + } + data, err := opts.Marshal(obj.Msg()) + if err != nil { + return "", err + } + data, err = yaml.JSONToYAML(data) + if err != nil { + return "", err } + return string(data), nil +} - if value == PatternFlowIpv4PriorityRawChoice.VALUES { - defaultValue := []uint32{0} - obj.obj.Values = defaultValue +func (obj *patternFlowGreVersionMetricTag) FromYaml(value string) error { + if value == "" { + value = "{}" } - - if value == PatternFlowIpv4PriorityRawChoice.INCREMENT { - obj.obj.Increment = NewPatternFlowIpv4PriorityRawCounter().Msg() + data, err := yaml.YAMLToJSON([]byte(value)) + if err != nil { + return err } - - if value == PatternFlowIpv4PriorityRawChoice.DECREMENT { - obj.obj.Decrement = NewPatternFlowIpv4PriorityRawCounter().Msg() + opts := protojson.UnmarshalOptions{ + AllowPartial: true, + DiscardUnknown: false, + } + uError := opts.Unmarshal([]byte(data), obj.Msg()) + if uError != nil { + return fmt.Errorf("unmarshal error %s", strings.Replace( + uError.Error(), "\u00a0", " ", -1)[7:]) } - return obj + vErr := obj.validateToAndFrom() + if vErr != nil { + return vErr + } + return nil } -// description is TBD -// Value returns a uint32 -func (obj *patternFlowIpv4PriorityRaw) Value() uint32 { - - if obj.obj.Value == nil { - obj.SetChoice(PatternFlowIpv4PriorityRawChoice.VALUE) +func (obj *patternFlowGreVersionMetricTag) ToJson() (string, error) { + vErr := obj.validateToAndFrom() + if vErr != nil { + return "", vErr + } + opts := protojson.MarshalOptions{ + UseProtoNames: true, + AllowPartial: true, + EmitUnpopulated: false, + Indent: " ", } + data, err := opts.Marshal(obj.Msg()) + if err != nil { + return "", err + } + return string(data), nil +} - return *obj.obj.Value +func (obj *patternFlowGreVersionMetricTag) FromJson(value string) error { + opts := protojson.UnmarshalOptions{ + AllowPartial: true, + DiscardUnknown: false, + } + if value == "" { + value = "{}" + } + uError := opts.Unmarshal([]byte(value), obj.Msg()) + if uError != nil { + return fmt.Errorf("unmarshal error %s", strings.Replace( + uError.Error(), "\u00a0", " ", -1)[7:]) + } + err := obj.validateToAndFrom() + if err != nil { + return err + } + return nil } -// description is TBD -// Value returns a uint32 -func (obj *patternFlowIpv4PriorityRaw) HasValue() bool { - return obj.obj.Value != nil +func (obj *patternFlowGreVersionMetricTag) validateToAndFrom() error { + // emptyVars() + obj.validateObj(&obj.validation, true) + return obj.validationResult() } -// description is TBD -// SetValue sets the uint32 value in the PatternFlowIpv4PriorityRaw object -func (obj *patternFlowIpv4PriorityRaw) SetValue(value uint32) PatternFlowIpv4PriorityRaw { - obj.SetChoice(PatternFlowIpv4PriorityRawChoice.VALUE) - obj.obj.Value = &value - return obj +func (obj *patternFlowGreVersionMetricTag) Validate() error { + // emptyVars() + obj.validateObj(&obj.validation, false) + return obj.validationResult() } -// description is TBD -// Values returns a []uint32 -func (obj *patternFlowIpv4PriorityRaw) Values() []uint32 { - if obj.obj.Values == nil { - obj.SetValues([]uint32{0}) +func (obj *patternFlowGreVersionMetricTag) String() string { + str, err := obj.ToYaml() + if err != nil { + return err.Error() } - return obj.obj.Values + return str } -// description is TBD -// SetValues sets the []uint32 value in the PatternFlowIpv4PriorityRaw object -func (obj *patternFlowIpv4PriorityRaw) SetValues(value []uint32) PatternFlowIpv4PriorityRaw { - obj.SetChoice(PatternFlowIpv4PriorityRawChoice.VALUES) - if obj.obj.Values == nil { - obj.obj.Values = make([]uint32, 0) +func (obj *patternFlowGreVersionMetricTag) Clone() (PatternFlowGreVersionMetricTag, error) { + vErr := obj.Validate() + if vErr != nil { + return nil, vErr } - obj.obj.Values = value - - return obj -} - -// description is TBD -// Increment returns a PatternFlowIpv4PriorityRawCounter -func (obj *patternFlowIpv4PriorityRaw) Increment() PatternFlowIpv4PriorityRawCounter { - if obj.obj.Increment == nil { - obj.SetChoice(PatternFlowIpv4PriorityRawChoice.INCREMENT) + newObj := NewPatternFlowGreVersionMetricTag() + data, err := proto.Marshal(obj.Msg()) + if err != nil { + return nil, err } - if obj.incrementHolder == nil { - obj.incrementHolder = &patternFlowIpv4PriorityRawCounter{obj: obj.obj.Increment} + pbErr := proto.Unmarshal(data, newObj.Msg()) + if pbErr != nil { + return nil, pbErr } - return obj.incrementHolder + return newObj, nil } -// description is TBD -// Increment returns a PatternFlowIpv4PriorityRawCounter -func (obj *patternFlowIpv4PriorityRaw) HasIncrement() bool { - return obj.obj.Increment != nil +// PatternFlowGreVersionMetricTag is metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. +type PatternFlowGreVersionMetricTag interface { + Validation + // Msg marshals PatternFlowGreVersionMetricTag to protobuf object *otg.PatternFlowGreVersionMetricTag + // and doesn't set defaults + Msg() *otg.PatternFlowGreVersionMetricTag + // SetMsg unmarshals PatternFlowGreVersionMetricTag from protobuf object *otg.PatternFlowGreVersionMetricTag + // and doesn't set defaults + SetMsg(*otg.PatternFlowGreVersionMetricTag) PatternFlowGreVersionMetricTag + // ToProto marshals PatternFlowGreVersionMetricTag to protobuf object *otg.PatternFlowGreVersionMetricTag + ToProto() (*otg.PatternFlowGreVersionMetricTag, error) + // ToPbText marshals PatternFlowGreVersionMetricTag to protobuf text + ToPbText() (string, error) + // ToYaml marshals PatternFlowGreVersionMetricTag to YAML text + ToYaml() (string, error) + // ToJson marshals PatternFlowGreVersionMetricTag to JSON text + ToJson() (string, error) + // FromProto unmarshals PatternFlowGreVersionMetricTag from protobuf object *otg.PatternFlowGreVersionMetricTag + FromProto(msg *otg.PatternFlowGreVersionMetricTag) (PatternFlowGreVersionMetricTag, error) + // FromPbText unmarshals PatternFlowGreVersionMetricTag from protobuf text + FromPbText(value string) error + // FromYaml unmarshals PatternFlowGreVersionMetricTag from YAML text + FromYaml(value string) error + // FromJson unmarshals PatternFlowGreVersionMetricTag from JSON text + FromJson(value string) error + // Validate validates PatternFlowGreVersionMetricTag + Validate() error + // A stringer function + String() string + // Clones the object + Clone() (PatternFlowGreVersionMetricTag, error) + validateToAndFrom() error + validateObj(vObj *validation, set_default bool) + setDefault() + // Name returns string, set in PatternFlowGreVersionMetricTag. + Name() string + // SetName assigns string provided by user to PatternFlowGreVersionMetricTag + SetName(value string) PatternFlowGreVersionMetricTag + // Offset returns uint32, set in PatternFlowGreVersionMetricTag. + Offset() uint32 + // SetOffset assigns uint32 provided by user to PatternFlowGreVersionMetricTag + SetOffset(value uint32) PatternFlowGreVersionMetricTag + // HasOffset checks if Offset has been set in PatternFlowGreVersionMetricTag + HasOffset() bool + // Length returns uint32, set in PatternFlowGreVersionMetricTag. + Length() uint32 + // SetLength assigns uint32 provided by user to PatternFlowGreVersionMetricTag + SetLength(value uint32) PatternFlowGreVersionMetricTag + // HasLength checks if Length has been set in PatternFlowGreVersionMetricTag + HasLength() bool } -// description is TBD -// SetIncrement sets the PatternFlowIpv4PriorityRawCounter value in the PatternFlowIpv4PriorityRaw object -func (obj *patternFlowIpv4PriorityRaw) SetIncrement(value PatternFlowIpv4PriorityRawCounter) PatternFlowIpv4PriorityRaw { - obj.SetChoice(PatternFlowIpv4PriorityRawChoice.INCREMENT) - obj.incrementHolder = nil - obj.obj.Increment = value.Msg() - - return obj -} +// Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field +// Name returns a string +func (obj *patternFlowGreVersionMetricTag) Name() string { -// description is TBD -// Decrement returns a PatternFlowIpv4PriorityRawCounter -func (obj *patternFlowIpv4PriorityRaw) Decrement() PatternFlowIpv4PriorityRawCounter { - if obj.obj.Decrement == nil { - obj.SetChoice(PatternFlowIpv4PriorityRawChoice.DECREMENT) - } - if obj.decrementHolder == nil { - obj.decrementHolder = &patternFlowIpv4PriorityRawCounter{obj: obj.obj.Decrement} - } - return obj.decrementHolder -} + return *obj.obj.Name -// description is TBD -// Decrement returns a PatternFlowIpv4PriorityRawCounter -func (obj *patternFlowIpv4PriorityRaw) HasDecrement() bool { - return obj.obj.Decrement != nil } -// description is TBD -// SetDecrement sets the PatternFlowIpv4PriorityRawCounter value in the PatternFlowIpv4PriorityRaw object -func (obj *patternFlowIpv4PriorityRaw) SetDecrement(value PatternFlowIpv4PriorityRawCounter) PatternFlowIpv4PriorityRaw { - obj.SetChoice(PatternFlowIpv4PriorityRawChoice.DECREMENT) - obj.decrementHolder = nil - obj.obj.Decrement = value.Msg() +// Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field +// SetName sets the string value in the PatternFlowGreVersionMetricTag object +func (obj *patternFlowGreVersionMetricTag) SetName(value string) PatternFlowGreVersionMetricTag { + obj.obj.Name = &value return obj } -// One or more metric tags can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. -// MetricTags returns a []PatternFlowIpv4PriorityRawMetricTag -func (obj *patternFlowIpv4PriorityRaw) MetricTags() PatternFlowIpv4PriorityRawPatternFlowIpv4PriorityRawMetricTagIter { - if len(obj.obj.MetricTags) == 0 { - obj.obj.MetricTags = []*otg.PatternFlowIpv4PriorityRawMetricTag{} - } - if obj.metricTagsHolder == nil { - obj.metricTagsHolder = newPatternFlowIpv4PriorityRawPatternFlowIpv4PriorityRawMetricTagIter(&obj.obj.MetricTags).setMsg(obj) - } - return obj.metricTagsHolder -} +// Offset in bits relative to start of corresponding header field +// Offset returns a uint32 +func (obj *patternFlowGreVersionMetricTag) Offset() uint32 { -type patternFlowIpv4PriorityRawPatternFlowIpv4PriorityRawMetricTagIter struct { - obj *patternFlowIpv4PriorityRaw - patternFlowIpv4PriorityRawMetricTagSlice []PatternFlowIpv4PriorityRawMetricTag - fieldPtr *[]*otg.PatternFlowIpv4PriorityRawMetricTag -} + return *obj.obj.Offset -func newPatternFlowIpv4PriorityRawPatternFlowIpv4PriorityRawMetricTagIter(ptr *[]*otg.PatternFlowIpv4PriorityRawMetricTag) PatternFlowIpv4PriorityRawPatternFlowIpv4PriorityRawMetricTagIter { - return &patternFlowIpv4PriorityRawPatternFlowIpv4PriorityRawMetricTagIter{fieldPtr: ptr} } -type PatternFlowIpv4PriorityRawPatternFlowIpv4PriorityRawMetricTagIter interface { - setMsg(*patternFlowIpv4PriorityRaw) PatternFlowIpv4PriorityRawPatternFlowIpv4PriorityRawMetricTagIter - Items() []PatternFlowIpv4PriorityRawMetricTag - Add() PatternFlowIpv4PriorityRawMetricTag - Append(items ...PatternFlowIpv4PriorityRawMetricTag) PatternFlowIpv4PriorityRawPatternFlowIpv4PriorityRawMetricTagIter - Set(index int, newObj PatternFlowIpv4PriorityRawMetricTag) PatternFlowIpv4PriorityRawPatternFlowIpv4PriorityRawMetricTagIter - Clear() PatternFlowIpv4PriorityRawPatternFlowIpv4PriorityRawMetricTagIter - clearHolderSlice() PatternFlowIpv4PriorityRawPatternFlowIpv4PriorityRawMetricTagIter - appendHolderSlice(item PatternFlowIpv4PriorityRawMetricTag) PatternFlowIpv4PriorityRawPatternFlowIpv4PriorityRawMetricTagIter +// Offset in bits relative to start of corresponding header field +// Offset returns a uint32 +func (obj *patternFlowGreVersionMetricTag) HasOffset() bool { + return obj.obj.Offset != nil } -func (obj *patternFlowIpv4PriorityRawPatternFlowIpv4PriorityRawMetricTagIter) setMsg(msg *patternFlowIpv4PriorityRaw) PatternFlowIpv4PriorityRawPatternFlowIpv4PriorityRawMetricTagIter { - obj.clearHolderSlice() - for _, val := range *obj.fieldPtr { - obj.appendHolderSlice(&patternFlowIpv4PriorityRawMetricTag{obj: val}) - } - obj.obj = msg +// Offset in bits relative to start of corresponding header field +// SetOffset sets the uint32 value in the PatternFlowGreVersionMetricTag object +func (obj *patternFlowGreVersionMetricTag) SetOffset(value uint32) PatternFlowGreVersionMetricTag { + + obj.obj.Offset = &value return obj } -func (obj *patternFlowIpv4PriorityRawPatternFlowIpv4PriorityRawMetricTagIter) Items() []PatternFlowIpv4PriorityRawMetricTag { - return obj.patternFlowIpv4PriorityRawMetricTagSlice -} +// Number of bits to track for metrics starting from configured offset of corresponding header field +// Length returns a uint32 +func (obj *patternFlowGreVersionMetricTag) Length() uint32 { -func (obj *patternFlowIpv4PriorityRawPatternFlowIpv4PriorityRawMetricTagIter) Add() PatternFlowIpv4PriorityRawMetricTag { - newObj := &otg.PatternFlowIpv4PriorityRawMetricTag{} - *obj.fieldPtr = append(*obj.fieldPtr, newObj) - newLibObj := &patternFlowIpv4PriorityRawMetricTag{obj: newObj} - newLibObj.setDefault() - obj.patternFlowIpv4PriorityRawMetricTagSlice = append(obj.patternFlowIpv4PriorityRawMetricTagSlice, newLibObj) - return newLibObj -} + return *obj.obj.Length -func (obj *patternFlowIpv4PriorityRawPatternFlowIpv4PriorityRawMetricTagIter) Append(items ...PatternFlowIpv4PriorityRawMetricTag) PatternFlowIpv4PriorityRawPatternFlowIpv4PriorityRawMetricTagIter { - for _, item := range items { - newObj := item.Msg() - *obj.fieldPtr = append(*obj.fieldPtr, newObj) - obj.patternFlowIpv4PriorityRawMetricTagSlice = append(obj.patternFlowIpv4PriorityRawMetricTagSlice, item) - } - return obj } -func (obj *patternFlowIpv4PriorityRawPatternFlowIpv4PriorityRawMetricTagIter) Set(index int, newObj PatternFlowIpv4PriorityRawMetricTag) PatternFlowIpv4PriorityRawPatternFlowIpv4PriorityRawMetricTagIter { - (*obj.fieldPtr)[index] = newObj.Msg() - obj.patternFlowIpv4PriorityRawMetricTagSlice[index] = newObj - return obj -} -func (obj *patternFlowIpv4PriorityRawPatternFlowIpv4PriorityRawMetricTagIter) Clear() PatternFlowIpv4PriorityRawPatternFlowIpv4PriorityRawMetricTagIter { - if len(*obj.fieldPtr) > 0 { - *obj.fieldPtr = []*otg.PatternFlowIpv4PriorityRawMetricTag{} - obj.patternFlowIpv4PriorityRawMetricTagSlice = []PatternFlowIpv4PriorityRawMetricTag{} - } - return obj -} -func (obj *patternFlowIpv4PriorityRawPatternFlowIpv4PriorityRawMetricTagIter) clearHolderSlice() PatternFlowIpv4PriorityRawPatternFlowIpv4PriorityRawMetricTagIter { - if len(obj.patternFlowIpv4PriorityRawMetricTagSlice) > 0 { - obj.patternFlowIpv4PriorityRawMetricTagSlice = []PatternFlowIpv4PriorityRawMetricTag{} - } - return obj +// Number of bits to track for metrics starting from configured offset of corresponding header field +// Length returns a uint32 +func (obj *patternFlowGreVersionMetricTag) HasLength() bool { + return obj.obj.Length != nil } -func (obj *patternFlowIpv4PriorityRawPatternFlowIpv4PriorityRawMetricTagIter) appendHolderSlice(item PatternFlowIpv4PriorityRawMetricTag) PatternFlowIpv4PriorityRawPatternFlowIpv4PriorityRawMetricTagIter { - obj.patternFlowIpv4PriorityRawMetricTagSlice = append(obj.patternFlowIpv4PriorityRawMetricTagSlice, item) + +// Number of bits to track for metrics starting from configured offset of corresponding header field +// SetLength sets the uint32 value in the PatternFlowGreVersionMetricTag object +func (obj *patternFlowGreVersionMetricTag) SetLength(value uint32) PatternFlowGreVersionMetricTag { + + obj.obj.Length = &value return obj } -func (obj *patternFlowIpv4PriorityRaw) validateObj(vObj *validation, set_default bool) { +func (obj *patternFlowGreVersionMetricTag) validateObj(vObj *validation, set_default bool) { if set_default { obj.setDefault() } - if obj.obj.Value != nil { - - if *obj.obj.Value > 255 { - vObj.validationErrors = append( - vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowIpv4PriorityRaw.Value <= 255 but Got %d", *obj.obj.Value)) - } - + // Name is required + if obj.obj.Name == nil { + vObj.validationErrors = append(vObj.validationErrors, "Name is required field on interface PatternFlowGreVersionMetricTag") } - if obj.obj.Values != nil { - - for _, item := range obj.obj.Values { - if item > 255 { - vObj.validationErrors = append( - vObj.validationErrors, - fmt.Sprintf("min(uint32) <= PatternFlowIpv4PriorityRaw.Values <= 255 but Got %d", item)) - } + if obj.obj.Offset != nil { + if *obj.obj.Offset > 2 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("0 <= PatternFlowGreVersionMetricTag.Offset <= 2 but Got %d", *obj.obj.Offset)) } } - if obj.obj.Increment != nil { - - obj.Increment().validateObj(vObj, set_default) - } - - if obj.obj.Decrement != nil { - - obj.Decrement().validateObj(vObj, set_default) - } - - if len(obj.obj.MetricTags) != 0 { + if obj.obj.Length != nil { - if set_default { - obj.MetricTags().clearHolderSlice() - for _, item := range obj.obj.MetricTags { - obj.MetricTags().appendHolderSlice(&patternFlowIpv4PriorityRawMetricTag{obj: item}) - } - } - for _, item := range obj.MetricTags().Items() { - item.validateObj(vObj, set_default) + if *obj.obj.Length < 1 || *obj.obj.Length > 3 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("1 <= PatternFlowGreVersionMetricTag.Length <= 3 but Got %d", *obj.obj.Length)) } } } -func (obj *patternFlowIpv4PriorityRaw) setDefault() { - if obj.obj.Choice == nil { - obj.SetChoice(PatternFlowIpv4PriorityRawChoice.VALUE) - +func (obj *patternFlowGreVersionMetricTag) setDefault() { + if obj.obj.Offset == nil { + obj.SetOffset(0) + } + if obj.obj.Length == nil { + obj.SetLength(3) } } -// ***** FlowIpv4Tos ***** -type flowIpv4Tos struct { +// ***** PatternFlowGreProtocolCounter ***** +type patternFlowGreProtocolCounter struct { validation - obj *otg.FlowIpv4Tos - precedenceHolder PatternFlowIpv4TosPrecedence - delayHolder PatternFlowIpv4TosDelay - throughputHolder PatternFlowIpv4TosThroughput - reliabilityHolder PatternFlowIpv4TosReliability - monetaryHolder PatternFlowIpv4TosMonetary - unusedHolder PatternFlowIpv4TosUnused + obj *otg.PatternFlowGreProtocolCounter } -func NewFlowIpv4Tos() FlowIpv4Tos { - obj := flowIpv4Tos{obj: &otg.FlowIpv4Tos{}} +func NewPatternFlowGreProtocolCounter() PatternFlowGreProtocolCounter { + obj := patternFlowGreProtocolCounter{obj: &otg.PatternFlowGreProtocolCounter{}} obj.setDefault() return &obj } -func (obj *flowIpv4Tos) Msg() *otg.FlowIpv4Tos { +func (obj *patternFlowGreProtocolCounter) Msg() *otg.PatternFlowGreProtocolCounter { return obj.obj } -func (obj *flowIpv4Tos) SetMsg(msg *otg.FlowIpv4Tos) FlowIpv4Tos { - obj.setNil() +func (obj *patternFlowGreProtocolCounter) SetMsg(msg *otg.PatternFlowGreProtocolCounter) PatternFlowGreProtocolCounter { + proto.Merge(obj.obj, msg) return obj } -func (obj *flowIpv4Tos) ToProto() (*otg.FlowIpv4Tos, error) { +func (obj *patternFlowGreProtocolCounter) ToProto() (*otg.PatternFlowGreProtocolCounter, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -194869,7 +238133,7 @@ func (obj *flowIpv4Tos) ToProto() (*otg.FlowIpv4Tos, error) { return obj.Msg(), nil } -func (obj *flowIpv4Tos) FromProto(msg *otg.FlowIpv4Tos) (FlowIpv4Tos, error) { +func (obj *patternFlowGreProtocolCounter) FromProto(msg *otg.PatternFlowGreProtocolCounter) (PatternFlowGreProtocolCounter, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -194878,7 +238142,7 @@ func (obj *flowIpv4Tos) FromProto(msg *otg.FlowIpv4Tos) (FlowIpv4Tos, error) { return newObj, nil } -func (obj *flowIpv4Tos) ToPbText() (string, error) { +func (obj *patternFlowGreProtocolCounter) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -194890,12 +238154,12 @@ func (obj *flowIpv4Tos) ToPbText() (string, error) { return string(protoMarshal), nil } -func (obj *flowIpv4Tos) FromPbText(value string) error { +func (obj *patternFlowGreProtocolCounter) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj } - obj.setNil() + vErr := obj.validateToAndFrom() if vErr != nil { return vErr @@ -194903,7 +238167,7 @@ func (obj *flowIpv4Tos) FromPbText(value string) error { return retObj } -func (obj *flowIpv4Tos) ToYaml() (string, error) { +func (obj *patternFlowGreProtocolCounter) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -194924,7 +238188,7 @@ func (obj *flowIpv4Tos) ToYaml() (string, error) { return string(data), nil } -func (obj *flowIpv4Tos) FromYaml(value string) error { +func (obj *patternFlowGreProtocolCounter) FromYaml(value string) error { if value == "" { value = "{}" } @@ -194941,7 +238205,7 @@ func (obj *flowIpv4Tos) FromYaml(value string) error { return fmt.Errorf("unmarshal error %s", strings.Replace( uError.Error(), "\u00a0", " ", -1)[7:]) } - obj.setNil() + vErr := obj.validateToAndFrom() if vErr != nil { return vErr @@ -194949,7 +238213,7 @@ func (obj *flowIpv4Tos) FromYaml(value string) error { return nil } -func (obj *flowIpv4Tos) ToJson() (string, error) { +func (obj *patternFlowGreProtocolCounter) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -194967,7 +238231,7 @@ func (obj *flowIpv4Tos) ToJson() (string, error) { return string(data), nil } -func (obj *flowIpv4Tos) FromJson(value string) error { +func (obj *patternFlowGreProtocolCounter) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -194980,7 +238244,7 @@ func (obj *flowIpv4Tos) FromJson(value string) error { return fmt.Errorf("unmarshal error %s", strings.Replace( uError.Error(), "\u00a0", " ", -1)[7:]) } - obj.setNil() + err := obj.validateToAndFrom() if err != nil { return err @@ -194988,19 +238252,19 @@ func (obj *flowIpv4Tos) FromJson(value string) error { return nil } -func (obj *flowIpv4Tos) validateToAndFrom() error { +func (obj *patternFlowGreProtocolCounter) validateToAndFrom() error { // emptyVars() obj.validateObj(&obj.validation, true) return obj.validationResult() } -func (obj *flowIpv4Tos) Validate() error { +func (obj *patternFlowGreProtocolCounter) Validate() error { // emptyVars() obj.validateObj(&obj.validation, false) return obj.validationResult() } -func (obj *flowIpv4Tos) String() string { +func (obj *patternFlowGreProtocolCounter) String() string { str, err := obj.ToYaml() if err != nil { return err.Error() @@ -195008,12 +238272,12 @@ func (obj *flowIpv4Tos) String() string { return str } -func (obj *flowIpv4Tos) Clone() (FlowIpv4Tos, error) { +func (obj *patternFlowGreProtocolCounter) Clone() (PatternFlowGreProtocolCounter, error) { vErr := obj.Validate() if vErr != nil { return nil, vErr } - newObj := NewFlowIpv4Tos() + newObj := NewPatternFlowGreProtocolCounter() data, err := proto.Marshal(obj.Msg()) if err != nil { return nil, err @@ -195025,337 +238289,199 @@ func (obj *flowIpv4Tos) Clone() (FlowIpv4Tos, error) { return newObj, nil } -func (obj *flowIpv4Tos) setNil() { - obj.precedenceHolder = nil - obj.delayHolder = nil - obj.throughputHolder = nil - obj.reliabilityHolder = nil - obj.monetaryHolder = nil - obj.unusedHolder = nil - obj.validationErrors = nil - obj.warnings = nil - obj.constraints = make(map[string]map[string]Constraints) -} - -// FlowIpv4Tos is type of service (TOS) packet field. -type FlowIpv4Tos interface { +// PatternFlowGreProtocolCounter is integer counter pattern +type PatternFlowGreProtocolCounter interface { Validation - // Msg marshals FlowIpv4Tos to protobuf object *otg.FlowIpv4Tos + // Msg marshals PatternFlowGreProtocolCounter to protobuf object *otg.PatternFlowGreProtocolCounter // and doesn't set defaults - Msg() *otg.FlowIpv4Tos - // SetMsg unmarshals FlowIpv4Tos from protobuf object *otg.FlowIpv4Tos + Msg() *otg.PatternFlowGreProtocolCounter + // SetMsg unmarshals PatternFlowGreProtocolCounter from protobuf object *otg.PatternFlowGreProtocolCounter // and doesn't set defaults - SetMsg(*otg.FlowIpv4Tos) FlowIpv4Tos - // ToProto marshals FlowIpv4Tos to protobuf object *otg.FlowIpv4Tos - ToProto() (*otg.FlowIpv4Tos, error) - // ToPbText marshals FlowIpv4Tos to protobuf text + SetMsg(*otg.PatternFlowGreProtocolCounter) PatternFlowGreProtocolCounter + // ToProto marshals PatternFlowGreProtocolCounter to protobuf object *otg.PatternFlowGreProtocolCounter + ToProto() (*otg.PatternFlowGreProtocolCounter, error) + // ToPbText marshals PatternFlowGreProtocolCounter to protobuf text ToPbText() (string, error) - // ToYaml marshals FlowIpv4Tos to YAML text + // ToYaml marshals PatternFlowGreProtocolCounter to YAML text ToYaml() (string, error) - // ToJson marshals FlowIpv4Tos to JSON text + // ToJson marshals PatternFlowGreProtocolCounter to JSON text ToJson() (string, error) - // FromProto unmarshals FlowIpv4Tos from protobuf object *otg.FlowIpv4Tos - FromProto(msg *otg.FlowIpv4Tos) (FlowIpv4Tos, error) - // FromPbText unmarshals FlowIpv4Tos from protobuf text + // FromProto unmarshals PatternFlowGreProtocolCounter from protobuf object *otg.PatternFlowGreProtocolCounter + FromProto(msg *otg.PatternFlowGreProtocolCounter) (PatternFlowGreProtocolCounter, error) + // FromPbText unmarshals PatternFlowGreProtocolCounter from protobuf text FromPbText(value string) error - // FromYaml unmarshals FlowIpv4Tos from YAML text + // FromYaml unmarshals PatternFlowGreProtocolCounter from YAML text FromYaml(value string) error - // FromJson unmarshals FlowIpv4Tos from JSON text + // FromJson unmarshals PatternFlowGreProtocolCounter from JSON text FromJson(value string) error - // Validate validates FlowIpv4Tos + // Validate validates PatternFlowGreProtocolCounter Validate() error // A stringer function String() string // Clones the object - Clone() (FlowIpv4Tos, error) + Clone() (PatternFlowGreProtocolCounter, error) validateToAndFrom() error validateObj(vObj *validation, set_default bool) setDefault() - // Precedence returns PatternFlowIpv4TosPrecedence, set in FlowIpv4Tos. - // PatternFlowIpv4TosPrecedence is precedence - Precedence() PatternFlowIpv4TosPrecedence - // SetPrecedence assigns PatternFlowIpv4TosPrecedence provided by user to FlowIpv4Tos. - // PatternFlowIpv4TosPrecedence is precedence - SetPrecedence(value PatternFlowIpv4TosPrecedence) FlowIpv4Tos - // HasPrecedence checks if Precedence has been set in FlowIpv4Tos - HasPrecedence() bool - // Delay returns PatternFlowIpv4TosDelay, set in FlowIpv4Tos. - // PatternFlowIpv4TosDelay is delay - Delay() PatternFlowIpv4TosDelay - // SetDelay assigns PatternFlowIpv4TosDelay provided by user to FlowIpv4Tos. - // PatternFlowIpv4TosDelay is delay - SetDelay(value PatternFlowIpv4TosDelay) FlowIpv4Tos - // HasDelay checks if Delay has been set in FlowIpv4Tos - HasDelay() bool - // Throughput returns PatternFlowIpv4TosThroughput, set in FlowIpv4Tos. - // PatternFlowIpv4TosThroughput is throughput - Throughput() PatternFlowIpv4TosThroughput - // SetThroughput assigns PatternFlowIpv4TosThroughput provided by user to FlowIpv4Tos. - // PatternFlowIpv4TosThroughput is throughput - SetThroughput(value PatternFlowIpv4TosThroughput) FlowIpv4Tos - // HasThroughput checks if Throughput has been set in FlowIpv4Tos - HasThroughput() bool - // Reliability returns PatternFlowIpv4TosReliability, set in FlowIpv4Tos. - // PatternFlowIpv4TosReliability is reliability - Reliability() PatternFlowIpv4TosReliability - // SetReliability assigns PatternFlowIpv4TosReliability provided by user to FlowIpv4Tos. - // PatternFlowIpv4TosReliability is reliability - SetReliability(value PatternFlowIpv4TosReliability) FlowIpv4Tos - // HasReliability checks if Reliability has been set in FlowIpv4Tos - HasReliability() bool - // Monetary returns PatternFlowIpv4TosMonetary, set in FlowIpv4Tos. - // PatternFlowIpv4TosMonetary is monetary - Monetary() PatternFlowIpv4TosMonetary - // SetMonetary assigns PatternFlowIpv4TosMonetary provided by user to FlowIpv4Tos. - // PatternFlowIpv4TosMonetary is monetary - SetMonetary(value PatternFlowIpv4TosMonetary) FlowIpv4Tos - // HasMonetary checks if Monetary has been set in FlowIpv4Tos - HasMonetary() bool - // Unused returns PatternFlowIpv4TosUnused, set in FlowIpv4Tos. - // PatternFlowIpv4TosUnused is unused - Unused() PatternFlowIpv4TosUnused - // SetUnused assigns PatternFlowIpv4TosUnused provided by user to FlowIpv4Tos. - // PatternFlowIpv4TosUnused is unused - SetUnused(value PatternFlowIpv4TosUnused) FlowIpv4Tos - // HasUnused checks if Unused has been set in FlowIpv4Tos - HasUnused() bool - setNil() -} - -// description is TBD -// Precedence returns a PatternFlowIpv4TosPrecedence -func (obj *flowIpv4Tos) Precedence() PatternFlowIpv4TosPrecedence { - if obj.obj.Precedence == nil { - obj.obj.Precedence = NewPatternFlowIpv4TosPrecedence().Msg() - } - if obj.precedenceHolder == nil { - obj.precedenceHolder = &patternFlowIpv4TosPrecedence{obj: obj.obj.Precedence} - } - return obj.precedenceHolder -} - -// description is TBD -// Precedence returns a PatternFlowIpv4TosPrecedence -func (obj *flowIpv4Tos) HasPrecedence() bool { - return obj.obj.Precedence != nil + // Start returns uint32, set in PatternFlowGreProtocolCounter. + Start() uint32 + // SetStart assigns uint32 provided by user to PatternFlowGreProtocolCounter + SetStart(value uint32) PatternFlowGreProtocolCounter + // HasStart checks if Start has been set in PatternFlowGreProtocolCounter + HasStart() bool + // Step returns uint32, set in PatternFlowGreProtocolCounter. + Step() uint32 + // SetStep assigns uint32 provided by user to PatternFlowGreProtocolCounter + SetStep(value uint32) PatternFlowGreProtocolCounter + // HasStep checks if Step has been set in PatternFlowGreProtocolCounter + HasStep() bool + // Count returns uint32, set in PatternFlowGreProtocolCounter. + Count() uint32 + // SetCount assigns uint32 provided by user to PatternFlowGreProtocolCounter + SetCount(value uint32) PatternFlowGreProtocolCounter + // HasCount checks if Count has been set in PatternFlowGreProtocolCounter + HasCount() bool } // description is TBD -// SetPrecedence sets the PatternFlowIpv4TosPrecedence value in the FlowIpv4Tos object -func (obj *flowIpv4Tos) SetPrecedence(value PatternFlowIpv4TosPrecedence) FlowIpv4Tos { - - obj.precedenceHolder = nil - obj.obj.Precedence = value.Msg() +// Start returns a uint32 +func (obj *patternFlowGreProtocolCounter) Start() uint32 { - return obj -} + return *obj.obj.Start -// description is TBD -// Delay returns a PatternFlowIpv4TosDelay -func (obj *flowIpv4Tos) Delay() PatternFlowIpv4TosDelay { - if obj.obj.Delay == nil { - obj.obj.Delay = NewPatternFlowIpv4TosDelay().Msg() - } - if obj.delayHolder == nil { - obj.delayHolder = &patternFlowIpv4TosDelay{obj: obj.obj.Delay} - } - return obj.delayHolder } // description is TBD -// Delay returns a PatternFlowIpv4TosDelay -func (obj *flowIpv4Tos) HasDelay() bool { - return obj.obj.Delay != nil +// Start returns a uint32 +func (obj *patternFlowGreProtocolCounter) HasStart() bool { + return obj.obj.Start != nil } // description is TBD -// SetDelay sets the PatternFlowIpv4TosDelay value in the FlowIpv4Tos object -func (obj *flowIpv4Tos) SetDelay(value PatternFlowIpv4TosDelay) FlowIpv4Tos { - - obj.delayHolder = nil - obj.obj.Delay = value.Msg() +// SetStart sets the uint32 value in the PatternFlowGreProtocolCounter object +func (obj *patternFlowGreProtocolCounter) SetStart(value uint32) PatternFlowGreProtocolCounter { + obj.obj.Start = &value return obj } // description is TBD -// Throughput returns a PatternFlowIpv4TosThroughput -func (obj *flowIpv4Tos) Throughput() PatternFlowIpv4TosThroughput { - if obj.obj.Throughput == nil { - obj.obj.Throughput = NewPatternFlowIpv4TosThroughput().Msg() - } - if obj.throughputHolder == nil { - obj.throughputHolder = &patternFlowIpv4TosThroughput{obj: obj.obj.Throughput} - } - return obj.throughputHolder -} - -// description is TBD -// Throughput returns a PatternFlowIpv4TosThroughput -func (obj *flowIpv4Tos) HasThroughput() bool { - return obj.obj.Throughput != nil -} - -// description is TBD -// SetThroughput sets the PatternFlowIpv4TosThroughput value in the FlowIpv4Tos object -func (obj *flowIpv4Tos) SetThroughput(value PatternFlowIpv4TosThroughput) FlowIpv4Tos { - - obj.throughputHolder = nil - obj.obj.Throughput = value.Msg() +// Step returns a uint32 +func (obj *patternFlowGreProtocolCounter) Step() uint32 { - return obj -} + return *obj.obj.Step -// description is TBD -// Reliability returns a PatternFlowIpv4TosReliability -func (obj *flowIpv4Tos) Reliability() PatternFlowIpv4TosReliability { - if obj.obj.Reliability == nil { - obj.obj.Reliability = NewPatternFlowIpv4TosReliability().Msg() - } - if obj.reliabilityHolder == nil { - obj.reliabilityHolder = &patternFlowIpv4TosReliability{obj: obj.obj.Reliability} - } - return obj.reliabilityHolder } // description is TBD -// Reliability returns a PatternFlowIpv4TosReliability -func (obj *flowIpv4Tos) HasReliability() bool { - return obj.obj.Reliability != nil +// Step returns a uint32 +func (obj *patternFlowGreProtocolCounter) HasStep() bool { + return obj.obj.Step != nil } // description is TBD -// SetReliability sets the PatternFlowIpv4TosReliability value in the FlowIpv4Tos object -func (obj *flowIpv4Tos) SetReliability(value PatternFlowIpv4TosReliability) FlowIpv4Tos { - - obj.reliabilityHolder = nil - obj.obj.Reliability = value.Msg() +// SetStep sets the uint32 value in the PatternFlowGreProtocolCounter object +func (obj *patternFlowGreProtocolCounter) SetStep(value uint32) PatternFlowGreProtocolCounter { + obj.obj.Step = &value return obj } // description is TBD -// Monetary returns a PatternFlowIpv4TosMonetary -func (obj *flowIpv4Tos) Monetary() PatternFlowIpv4TosMonetary { - if obj.obj.Monetary == nil { - obj.obj.Monetary = NewPatternFlowIpv4TosMonetary().Msg() - } - if obj.monetaryHolder == nil { - obj.monetaryHolder = &patternFlowIpv4TosMonetary{obj: obj.obj.Monetary} - } - return obj.monetaryHolder -} - -// description is TBD -// Monetary returns a PatternFlowIpv4TosMonetary -func (obj *flowIpv4Tos) HasMonetary() bool { - return obj.obj.Monetary != nil -} - -// description is TBD -// SetMonetary sets the PatternFlowIpv4TosMonetary value in the FlowIpv4Tos object -func (obj *flowIpv4Tos) SetMonetary(value PatternFlowIpv4TosMonetary) FlowIpv4Tos { - - obj.monetaryHolder = nil - obj.obj.Monetary = value.Msg() +// Count returns a uint32 +func (obj *patternFlowGreProtocolCounter) Count() uint32 { - return obj -} + return *obj.obj.Count -// description is TBD -// Unused returns a PatternFlowIpv4TosUnused -func (obj *flowIpv4Tos) Unused() PatternFlowIpv4TosUnused { - if obj.obj.Unused == nil { - obj.obj.Unused = NewPatternFlowIpv4TosUnused().Msg() - } - if obj.unusedHolder == nil { - obj.unusedHolder = &patternFlowIpv4TosUnused{obj: obj.obj.Unused} - } - return obj.unusedHolder } // description is TBD -// Unused returns a PatternFlowIpv4TosUnused -func (obj *flowIpv4Tos) HasUnused() bool { - return obj.obj.Unused != nil +// Count returns a uint32 +func (obj *patternFlowGreProtocolCounter) HasCount() bool { + return obj.obj.Count != nil } // description is TBD -// SetUnused sets the PatternFlowIpv4TosUnused value in the FlowIpv4Tos object -func (obj *flowIpv4Tos) SetUnused(value PatternFlowIpv4TosUnused) FlowIpv4Tos { - - obj.unusedHolder = nil - obj.obj.Unused = value.Msg() +// SetCount sets the uint32 value in the PatternFlowGreProtocolCounter object +func (obj *patternFlowGreProtocolCounter) SetCount(value uint32) PatternFlowGreProtocolCounter { + obj.obj.Count = &value return obj } -func (obj *flowIpv4Tos) validateObj(vObj *validation, set_default bool) { +func (obj *patternFlowGreProtocolCounter) validateObj(vObj *validation, set_default bool) { if set_default { obj.setDefault() } - if obj.obj.Precedence != nil { - - obj.Precedence().validateObj(vObj, set_default) - } + if obj.obj.Start != nil { - if obj.obj.Delay != nil { + if *obj.obj.Start > 65535 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("0 <= PatternFlowGreProtocolCounter.Start <= 65535 but Got %d", *obj.obj.Start)) + } - obj.Delay().validateObj(vObj, set_default) } - if obj.obj.Throughput != nil { - - obj.Throughput().validateObj(vObj, set_default) - } + if obj.obj.Step != nil { - if obj.obj.Reliability != nil { + if *obj.obj.Step > 65535 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("0 <= PatternFlowGreProtocolCounter.Step <= 65535 but Got %d", *obj.obj.Step)) + } - obj.Reliability().validateObj(vObj, set_default) } - if obj.obj.Monetary != nil { - - obj.Monetary().validateObj(vObj, set_default) - } + if obj.obj.Count != nil { - if obj.obj.Unused != nil { + if *obj.obj.Count > 65535 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("0 <= PatternFlowGreProtocolCounter.Count <= 65535 but Got %d", *obj.obj.Count)) + } - obj.Unused().validateObj(vObj, set_default) } } -func (obj *flowIpv4Tos) setDefault() { +func (obj *patternFlowGreProtocolCounter) setDefault() { + if obj.obj.Start == nil { + obj.SetStart(2048) + } + if obj.obj.Step == nil { + obj.SetStep(1) + } + if obj.obj.Count == nil { + obj.SetCount(1) + } } -// ***** FlowIpv4Dscp ***** -type flowIpv4Dscp struct { +// ***** PatternFlowGreProtocolMetricTag ***** +type patternFlowGreProtocolMetricTag struct { validation - obj *otg.FlowIpv4Dscp - phbHolder PatternFlowIpv4DscpPhb - ecnHolder PatternFlowIpv4DscpEcn + obj *otg.PatternFlowGreProtocolMetricTag } -func NewFlowIpv4Dscp() FlowIpv4Dscp { - obj := flowIpv4Dscp{obj: &otg.FlowIpv4Dscp{}} +func NewPatternFlowGreProtocolMetricTag() PatternFlowGreProtocolMetricTag { + obj := patternFlowGreProtocolMetricTag{obj: &otg.PatternFlowGreProtocolMetricTag{}} obj.setDefault() return &obj } -func (obj *flowIpv4Dscp) Msg() *otg.FlowIpv4Dscp { +func (obj *patternFlowGreProtocolMetricTag) Msg() *otg.PatternFlowGreProtocolMetricTag { return obj.obj } -func (obj *flowIpv4Dscp) SetMsg(msg *otg.FlowIpv4Dscp) FlowIpv4Dscp { - obj.setNil() +func (obj *patternFlowGreProtocolMetricTag) SetMsg(msg *otg.PatternFlowGreProtocolMetricTag) PatternFlowGreProtocolMetricTag { + proto.Merge(obj.obj, msg) return obj } -func (obj *flowIpv4Dscp) ToProto() (*otg.FlowIpv4Dscp, error) { +func (obj *patternFlowGreProtocolMetricTag) ToProto() (*otg.PatternFlowGreProtocolMetricTag, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -195363,7 +238489,7 @@ func (obj *flowIpv4Dscp) ToProto() (*otg.FlowIpv4Dscp, error) { return obj.Msg(), nil } -func (obj *flowIpv4Dscp) FromProto(msg *otg.FlowIpv4Dscp) (FlowIpv4Dscp, error) { +func (obj *patternFlowGreProtocolMetricTag) FromProto(msg *otg.PatternFlowGreProtocolMetricTag) (PatternFlowGreProtocolMetricTag, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -195372,7 +238498,7 @@ func (obj *flowIpv4Dscp) FromProto(msg *otg.FlowIpv4Dscp) (FlowIpv4Dscp, error) return newObj, nil } -func (obj *flowIpv4Dscp) ToPbText() (string, error) { +func (obj *patternFlowGreProtocolMetricTag) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -195384,12 +238510,12 @@ func (obj *flowIpv4Dscp) ToPbText() (string, error) { return string(protoMarshal), nil } -func (obj *flowIpv4Dscp) FromPbText(value string) error { +func (obj *patternFlowGreProtocolMetricTag) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj } - obj.setNil() + vErr := obj.validateToAndFrom() if vErr != nil { return vErr @@ -195397,7 +238523,7 @@ func (obj *flowIpv4Dscp) FromPbText(value string) error { return retObj } -func (obj *flowIpv4Dscp) ToYaml() (string, error) { +func (obj *patternFlowGreProtocolMetricTag) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -195418,7 +238544,7 @@ func (obj *flowIpv4Dscp) ToYaml() (string, error) { return string(data), nil } -func (obj *flowIpv4Dscp) FromYaml(value string) error { +func (obj *patternFlowGreProtocolMetricTag) FromYaml(value string) error { if value == "" { value = "{}" } @@ -195435,7 +238561,7 @@ func (obj *flowIpv4Dscp) FromYaml(value string) error { return fmt.Errorf("unmarshal error %s", strings.Replace( uError.Error(), "\u00a0", " ", -1)[7:]) } - obj.setNil() + vErr := obj.validateToAndFrom() if vErr != nil { return vErr @@ -195443,7 +238569,7 @@ func (obj *flowIpv4Dscp) FromYaml(value string) error { return nil } -func (obj *flowIpv4Dscp) ToJson() (string, error) { +func (obj *patternFlowGreProtocolMetricTag) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -195461,7 +238587,7 @@ func (obj *flowIpv4Dscp) ToJson() (string, error) { return string(data), nil } -func (obj *flowIpv4Dscp) FromJson(value string) error { +func (obj *patternFlowGreProtocolMetricTag) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -195474,7 +238600,7 @@ func (obj *flowIpv4Dscp) FromJson(value string) error { return fmt.Errorf("unmarshal error %s", strings.Replace( uError.Error(), "\u00a0", " ", -1)[7:]) } - obj.setNil() + err := obj.validateToAndFrom() if err != nil { return err @@ -195482,19 +238608,19 @@ func (obj *flowIpv4Dscp) FromJson(value string) error { return nil } -func (obj *flowIpv4Dscp) validateToAndFrom() error { +func (obj *patternFlowGreProtocolMetricTag) validateToAndFrom() error { // emptyVars() obj.validateObj(&obj.validation, true) return obj.validationResult() } -func (obj *flowIpv4Dscp) Validate() error { +func (obj *patternFlowGreProtocolMetricTag) Validate() error { // emptyVars() obj.validateObj(&obj.validation, false) return obj.validationResult() } -func (obj *flowIpv4Dscp) String() string { +func (obj *patternFlowGreProtocolMetricTag) String() string { str, err := obj.ToYaml() if err != nil { return err.Error() @@ -195502,12 +238628,12 @@ func (obj *flowIpv4Dscp) String() string { return str } -func (obj *flowIpv4Dscp) Clone() (FlowIpv4Dscp, error) { +func (obj *patternFlowGreProtocolMetricTag) Clone() (PatternFlowGreProtocolMetricTag, error) { vErr := obj.Validate() if vErr != nil { return nil, vErr } - newObj := NewFlowIpv4Dscp() + newObj := NewPatternFlowGreProtocolMetricTag() data, err := proto.Marshal(obj.Msg()) if err != nil { return nil, err @@ -195519,167 +238645,183 @@ func (obj *flowIpv4Dscp) Clone() (FlowIpv4Dscp, error) { return newObj, nil } -func (obj *flowIpv4Dscp) setNil() { - obj.phbHolder = nil - obj.ecnHolder = nil - obj.validationErrors = nil - obj.warnings = nil - obj.constraints = make(map[string]map[string]Constraints) -} - -// FlowIpv4Dscp is differentiated services code point (DSCP) packet field. -type FlowIpv4Dscp interface { +// PatternFlowGreProtocolMetricTag is metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. +type PatternFlowGreProtocolMetricTag interface { Validation - // Msg marshals FlowIpv4Dscp to protobuf object *otg.FlowIpv4Dscp + // Msg marshals PatternFlowGreProtocolMetricTag to protobuf object *otg.PatternFlowGreProtocolMetricTag // and doesn't set defaults - Msg() *otg.FlowIpv4Dscp - // SetMsg unmarshals FlowIpv4Dscp from protobuf object *otg.FlowIpv4Dscp + Msg() *otg.PatternFlowGreProtocolMetricTag + // SetMsg unmarshals PatternFlowGreProtocolMetricTag from protobuf object *otg.PatternFlowGreProtocolMetricTag // and doesn't set defaults - SetMsg(*otg.FlowIpv4Dscp) FlowIpv4Dscp - // ToProto marshals FlowIpv4Dscp to protobuf object *otg.FlowIpv4Dscp - ToProto() (*otg.FlowIpv4Dscp, error) - // ToPbText marshals FlowIpv4Dscp to protobuf text + SetMsg(*otg.PatternFlowGreProtocolMetricTag) PatternFlowGreProtocolMetricTag + // ToProto marshals PatternFlowGreProtocolMetricTag to protobuf object *otg.PatternFlowGreProtocolMetricTag + ToProto() (*otg.PatternFlowGreProtocolMetricTag, error) + // ToPbText marshals PatternFlowGreProtocolMetricTag to protobuf text ToPbText() (string, error) - // ToYaml marshals FlowIpv4Dscp to YAML text + // ToYaml marshals PatternFlowGreProtocolMetricTag to YAML text ToYaml() (string, error) - // ToJson marshals FlowIpv4Dscp to JSON text + // ToJson marshals PatternFlowGreProtocolMetricTag to JSON text ToJson() (string, error) - // FromProto unmarshals FlowIpv4Dscp from protobuf object *otg.FlowIpv4Dscp - FromProto(msg *otg.FlowIpv4Dscp) (FlowIpv4Dscp, error) - // FromPbText unmarshals FlowIpv4Dscp from protobuf text + // FromProto unmarshals PatternFlowGreProtocolMetricTag from protobuf object *otg.PatternFlowGreProtocolMetricTag + FromProto(msg *otg.PatternFlowGreProtocolMetricTag) (PatternFlowGreProtocolMetricTag, error) + // FromPbText unmarshals PatternFlowGreProtocolMetricTag from protobuf text FromPbText(value string) error - // FromYaml unmarshals FlowIpv4Dscp from YAML text + // FromYaml unmarshals PatternFlowGreProtocolMetricTag from YAML text FromYaml(value string) error - // FromJson unmarshals FlowIpv4Dscp from JSON text + // FromJson unmarshals PatternFlowGreProtocolMetricTag from JSON text FromJson(value string) error - // Validate validates FlowIpv4Dscp + // Validate validates PatternFlowGreProtocolMetricTag Validate() error // A stringer function String() string // Clones the object - Clone() (FlowIpv4Dscp, error) + Clone() (PatternFlowGreProtocolMetricTag, error) validateToAndFrom() error validateObj(vObj *validation, set_default bool) setDefault() - // Phb returns PatternFlowIpv4DscpPhb, set in FlowIpv4Dscp. - // PatternFlowIpv4DscpPhb is per hop behavior - Phb() PatternFlowIpv4DscpPhb - // SetPhb assigns PatternFlowIpv4DscpPhb provided by user to FlowIpv4Dscp. - // PatternFlowIpv4DscpPhb is per hop behavior - SetPhb(value PatternFlowIpv4DscpPhb) FlowIpv4Dscp - // HasPhb checks if Phb has been set in FlowIpv4Dscp - HasPhb() bool - // Ecn returns PatternFlowIpv4DscpEcn, set in FlowIpv4Dscp. - // PatternFlowIpv4DscpEcn is explicit congestion notification - Ecn() PatternFlowIpv4DscpEcn - // SetEcn assigns PatternFlowIpv4DscpEcn provided by user to FlowIpv4Dscp. - // PatternFlowIpv4DscpEcn is explicit congestion notification - SetEcn(value PatternFlowIpv4DscpEcn) FlowIpv4Dscp - // HasEcn checks if Ecn has been set in FlowIpv4Dscp - HasEcn() bool - setNil() + // Name returns string, set in PatternFlowGreProtocolMetricTag. + Name() string + // SetName assigns string provided by user to PatternFlowGreProtocolMetricTag + SetName(value string) PatternFlowGreProtocolMetricTag + // Offset returns uint32, set in PatternFlowGreProtocolMetricTag. + Offset() uint32 + // SetOffset assigns uint32 provided by user to PatternFlowGreProtocolMetricTag + SetOffset(value uint32) PatternFlowGreProtocolMetricTag + // HasOffset checks if Offset has been set in PatternFlowGreProtocolMetricTag + HasOffset() bool + // Length returns uint32, set in PatternFlowGreProtocolMetricTag. + Length() uint32 + // SetLength assigns uint32 provided by user to PatternFlowGreProtocolMetricTag + SetLength(value uint32) PatternFlowGreProtocolMetricTag + // HasLength checks if Length has been set in PatternFlowGreProtocolMetricTag + HasLength() bool } -// description is TBD -// Phb returns a PatternFlowIpv4DscpPhb -func (obj *flowIpv4Dscp) Phb() PatternFlowIpv4DscpPhb { - if obj.obj.Phb == nil { - obj.obj.Phb = NewPatternFlowIpv4DscpPhb().Msg() - } - if obj.phbHolder == nil { - obj.phbHolder = &patternFlowIpv4DscpPhb{obj: obj.obj.Phb} - } - return obj.phbHolder +// Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field +// Name returns a string +func (obj *patternFlowGreProtocolMetricTag) Name() string { + + return *obj.obj.Name + } -// description is TBD -// Phb returns a PatternFlowIpv4DscpPhb -func (obj *flowIpv4Dscp) HasPhb() bool { - return obj.obj.Phb != nil +// Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field +// SetName sets the string value in the PatternFlowGreProtocolMetricTag object +func (obj *patternFlowGreProtocolMetricTag) SetName(value string) PatternFlowGreProtocolMetricTag { + + obj.obj.Name = &value + return obj } -// description is TBD -// SetPhb sets the PatternFlowIpv4DscpPhb value in the FlowIpv4Dscp object -func (obj *flowIpv4Dscp) SetPhb(value PatternFlowIpv4DscpPhb) FlowIpv4Dscp { +// Offset in bits relative to start of corresponding header field +// Offset returns a uint32 +func (obj *patternFlowGreProtocolMetricTag) Offset() uint32 { - obj.phbHolder = nil - obj.obj.Phb = value.Msg() + return *obj.obj.Offset - return obj } -// description is TBD -// Ecn returns a PatternFlowIpv4DscpEcn -func (obj *flowIpv4Dscp) Ecn() PatternFlowIpv4DscpEcn { - if obj.obj.Ecn == nil { - obj.obj.Ecn = NewPatternFlowIpv4DscpEcn().Msg() - } - if obj.ecnHolder == nil { - obj.ecnHolder = &patternFlowIpv4DscpEcn{obj: obj.obj.Ecn} - } - return obj.ecnHolder +// Offset in bits relative to start of corresponding header field +// Offset returns a uint32 +func (obj *patternFlowGreProtocolMetricTag) HasOffset() bool { + return obj.obj.Offset != nil } -// description is TBD -// Ecn returns a PatternFlowIpv4DscpEcn -func (obj *flowIpv4Dscp) HasEcn() bool { - return obj.obj.Ecn != nil +// Offset in bits relative to start of corresponding header field +// SetOffset sets the uint32 value in the PatternFlowGreProtocolMetricTag object +func (obj *patternFlowGreProtocolMetricTag) SetOffset(value uint32) PatternFlowGreProtocolMetricTag { + + obj.obj.Offset = &value + return obj } -// description is TBD -// SetEcn sets the PatternFlowIpv4DscpEcn value in the FlowIpv4Dscp object -func (obj *flowIpv4Dscp) SetEcn(value PatternFlowIpv4DscpEcn) FlowIpv4Dscp { +// Number of bits to track for metrics starting from configured offset of corresponding header field +// Length returns a uint32 +func (obj *patternFlowGreProtocolMetricTag) Length() uint32 { - obj.ecnHolder = nil - obj.obj.Ecn = value.Msg() + return *obj.obj.Length + +} + +// Number of bits to track for metrics starting from configured offset of corresponding header field +// Length returns a uint32 +func (obj *patternFlowGreProtocolMetricTag) HasLength() bool { + return obj.obj.Length != nil +} +// Number of bits to track for metrics starting from configured offset of corresponding header field +// SetLength sets the uint32 value in the PatternFlowGreProtocolMetricTag object +func (obj *patternFlowGreProtocolMetricTag) SetLength(value uint32) PatternFlowGreProtocolMetricTag { + + obj.obj.Length = &value return obj } -func (obj *flowIpv4Dscp) validateObj(vObj *validation, set_default bool) { +func (obj *patternFlowGreProtocolMetricTag) validateObj(vObj *validation, set_default bool) { if set_default { obj.setDefault() } - if obj.obj.Phb != nil { + // Name is required + if obj.obj.Name == nil { + vObj.validationErrors = append(vObj.validationErrors, "Name is required field on interface PatternFlowGreProtocolMetricTag") + } + + if obj.obj.Offset != nil { + + if *obj.obj.Offset > 15 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("0 <= PatternFlowGreProtocolMetricTag.Offset <= 15 but Got %d", *obj.obj.Offset)) + } - obj.Phb().validateObj(vObj, set_default) } - if obj.obj.Ecn != nil { + if obj.obj.Length != nil { + + if *obj.obj.Length < 1 || *obj.obj.Length > 16 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("1 <= PatternFlowGreProtocolMetricTag.Length <= 16 but Got %d", *obj.obj.Length)) + } - obj.Ecn().validateObj(vObj, set_default) } } -func (obj *flowIpv4Dscp) setDefault() { +func (obj *patternFlowGreProtocolMetricTag) setDefault() { + if obj.obj.Offset == nil { + obj.SetOffset(0) + } + if obj.obj.Length == nil { + obj.SetLength(16) + } } -// ***** PatternFlowIpv4TotalLengthCounter ***** -type patternFlowIpv4TotalLengthCounter struct { +// ***** PatternFlowGreReserved1Counter ***** +type patternFlowGreReserved1Counter struct { validation - obj *otg.PatternFlowIpv4TotalLengthCounter + obj *otg.PatternFlowGreReserved1Counter } -func NewPatternFlowIpv4TotalLengthCounter() PatternFlowIpv4TotalLengthCounter { - obj := patternFlowIpv4TotalLengthCounter{obj: &otg.PatternFlowIpv4TotalLengthCounter{}} +func NewPatternFlowGreReserved1Counter() PatternFlowGreReserved1Counter { + obj := patternFlowGreReserved1Counter{obj: &otg.PatternFlowGreReserved1Counter{}} obj.setDefault() return &obj } -func (obj *patternFlowIpv4TotalLengthCounter) Msg() *otg.PatternFlowIpv4TotalLengthCounter { +func (obj *patternFlowGreReserved1Counter) Msg() *otg.PatternFlowGreReserved1Counter { return obj.obj } -func (obj *patternFlowIpv4TotalLengthCounter) SetMsg(msg *otg.PatternFlowIpv4TotalLengthCounter) PatternFlowIpv4TotalLengthCounter { +func (obj *patternFlowGreReserved1Counter) SetMsg(msg *otg.PatternFlowGreReserved1Counter) PatternFlowGreReserved1Counter { proto.Merge(obj.obj, msg) return obj } -func (obj *patternFlowIpv4TotalLengthCounter) ToProto() (*otg.PatternFlowIpv4TotalLengthCounter, error) { +func (obj *patternFlowGreReserved1Counter) ToProto() (*otg.PatternFlowGreReserved1Counter, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -195687,7 +238829,7 @@ func (obj *patternFlowIpv4TotalLengthCounter) ToProto() (*otg.PatternFlowIpv4Tot return obj.Msg(), nil } -func (obj *patternFlowIpv4TotalLengthCounter) FromProto(msg *otg.PatternFlowIpv4TotalLengthCounter) (PatternFlowIpv4TotalLengthCounter, error) { +func (obj *patternFlowGreReserved1Counter) FromProto(msg *otg.PatternFlowGreReserved1Counter) (PatternFlowGreReserved1Counter, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -195696,7 +238838,7 @@ func (obj *patternFlowIpv4TotalLengthCounter) FromProto(msg *otg.PatternFlowIpv4 return newObj, nil } -func (obj *patternFlowIpv4TotalLengthCounter) ToPbText() (string, error) { +func (obj *patternFlowGreReserved1Counter) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -195708,7 +238850,7 @@ func (obj *patternFlowIpv4TotalLengthCounter) ToPbText() (string, error) { return string(protoMarshal), nil } -func (obj *patternFlowIpv4TotalLengthCounter) FromPbText(value string) error { +func (obj *patternFlowGreReserved1Counter) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj @@ -195721,7 +238863,7 @@ func (obj *patternFlowIpv4TotalLengthCounter) FromPbText(value string) error { return retObj } -func (obj *patternFlowIpv4TotalLengthCounter) ToYaml() (string, error) { +func (obj *patternFlowGreReserved1Counter) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -195742,7 +238884,7 @@ func (obj *patternFlowIpv4TotalLengthCounter) ToYaml() (string, error) { return string(data), nil } -func (obj *patternFlowIpv4TotalLengthCounter) FromYaml(value string) error { +func (obj *patternFlowGreReserved1Counter) FromYaml(value string) error { if value == "" { value = "{}" } @@ -195767,7 +238909,7 @@ func (obj *patternFlowIpv4TotalLengthCounter) FromYaml(value string) error { return nil } -func (obj *patternFlowIpv4TotalLengthCounter) ToJson() (string, error) { +func (obj *patternFlowGreReserved1Counter) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -195785,7 +238927,7 @@ func (obj *patternFlowIpv4TotalLengthCounter) ToJson() (string, error) { return string(data), nil } -func (obj *patternFlowIpv4TotalLengthCounter) FromJson(value string) error { +func (obj *patternFlowGreReserved1Counter) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -195806,19 +238948,19 @@ func (obj *patternFlowIpv4TotalLengthCounter) FromJson(value string) error { return nil } -func (obj *patternFlowIpv4TotalLengthCounter) validateToAndFrom() error { +func (obj *patternFlowGreReserved1Counter) validateToAndFrom() error { // emptyVars() obj.validateObj(&obj.validation, true) return obj.validationResult() } -func (obj *patternFlowIpv4TotalLengthCounter) Validate() error { +func (obj *patternFlowGreReserved1Counter) Validate() error { // emptyVars() obj.validateObj(&obj.validation, false) return obj.validationResult() } -func (obj *patternFlowIpv4TotalLengthCounter) String() string { +func (obj *patternFlowGreReserved1Counter) String() string { str, err := obj.ToYaml() if err != nil { return err.Error() @@ -195826,12 +238968,12 @@ func (obj *patternFlowIpv4TotalLengthCounter) String() string { return str } -func (obj *patternFlowIpv4TotalLengthCounter) Clone() (PatternFlowIpv4TotalLengthCounter, error) { +func (obj *patternFlowGreReserved1Counter) Clone() (PatternFlowGreReserved1Counter, error) { vErr := obj.Validate() if vErr != nil { return nil, vErr } - newObj := NewPatternFlowIpv4TotalLengthCounter() + newObj := NewPatternFlowGreReserved1Counter() data, err := proto.Marshal(obj.Msg()) if err != nil { return nil, err @@ -195843,63 +238985,63 @@ func (obj *patternFlowIpv4TotalLengthCounter) Clone() (PatternFlowIpv4TotalLengt return newObj, nil } -// PatternFlowIpv4TotalLengthCounter is integer counter pattern -type PatternFlowIpv4TotalLengthCounter interface { +// PatternFlowGreReserved1Counter is integer counter pattern +type PatternFlowGreReserved1Counter interface { Validation - // Msg marshals PatternFlowIpv4TotalLengthCounter to protobuf object *otg.PatternFlowIpv4TotalLengthCounter + // Msg marshals PatternFlowGreReserved1Counter to protobuf object *otg.PatternFlowGreReserved1Counter // and doesn't set defaults - Msg() *otg.PatternFlowIpv4TotalLengthCounter - // SetMsg unmarshals PatternFlowIpv4TotalLengthCounter from protobuf object *otg.PatternFlowIpv4TotalLengthCounter + Msg() *otg.PatternFlowGreReserved1Counter + // SetMsg unmarshals PatternFlowGreReserved1Counter from protobuf object *otg.PatternFlowGreReserved1Counter // and doesn't set defaults - SetMsg(*otg.PatternFlowIpv4TotalLengthCounter) PatternFlowIpv4TotalLengthCounter - // ToProto marshals PatternFlowIpv4TotalLengthCounter to protobuf object *otg.PatternFlowIpv4TotalLengthCounter - ToProto() (*otg.PatternFlowIpv4TotalLengthCounter, error) - // ToPbText marshals PatternFlowIpv4TotalLengthCounter to protobuf text + SetMsg(*otg.PatternFlowGreReserved1Counter) PatternFlowGreReserved1Counter + // ToProto marshals PatternFlowGreReserved1Counter to protobuf object *otg.PatternFlowGreReserved1Counter + ToProto() (*otg.PatternFlowGreReserved1Counter, error) + // ToPbText marshals PatternFlowGreReserved1Counter to protobuf text ToPbText() (string, error) - // ToYaml marshals PatternFlowIpv4TotalLengthCounter to YAML text + // ToYaml marshals PatternFlowGreReserved1Counter to YAML text ToYaml() (string, error) - // ToJson marshals PatternFlowIpv4TotalLengthCounter to JSON text + // ToJson marshals PatternFlowGreReserved1Counter to JSON text ToJson() (string, error) - // FromProto unmarshals PatternFlowIpv4TotalLengthCounter from protobuf object *otg.PatternFlowIpv4TotalLengthCounter - FromProto(msg *otg.PatternFlowIpv4TotalLengthCounter) (PatternFlowIpv4TotalLengthCounter, error) - // FromPbText unmarshals PatternFlowIpv4TotalLengthCounter from protobuf text + // FromProto unmarshals PatternFlowGreReserved1Counter from protobuf object *otg.PatternFlowGreReserved1Counter + FromProto(msg *otg.PatternFlowGreReserved1Counter) (PatternFlowGreReserved1Counter, error) + // FromPbText unmarshals PatternFlowGreReserved1Counter from protobuf text FromPbText(value string) error - // FromYaml unmarshals PatternFlowIpv4TotalLengthCounter from YAML text + // FromYaml unmarshals PatternFlowGreReserved1Counter from YAML text FromYaml(value string) error - // FromJson unmarshals PatternFlowIpv4TotalLengthCounter from JSON text + // FromJson unmarshals PatternFlowGreReserved1Counter from JSON text FromJson(value string) error - // Validate validates PatternFlowIpv4TotalLengthCounter + // Validate validates PatternFlowGreReserved1Counter Validate() error // A stringer function String() string // Clones the object - Clone() (PatternFlowIpv4TotalLengthCounter, error) + Clone() (PatternFlowGreReserved1Counter, error) validateToAndFrom() error validateObj(vObj *validation, set_default bool) setDefault() - // Start returns uint32, set in PatternFlowIpv4TotalLengthCounter. + // Start returns uint32, set in PatternFlowGreReserved1Counter. Start() uint32 - // SetStart assigns uint32 provided by user to PatternFlowIpv4TotalLengthCounter - SetStart(value uint32) PatternFlowIpv4TotalLengthCounter - // HasStart checks if Start has been set in PatternFlowIpv4TotalLengthCounter + // SetStart assigns uint32 provided by user to PatternFlowGreReserved1Counter + SetStart(value uint32) PatternFlowGreReserved1Counter + // HasStart checks if Start has been set in PatternFlowGreReserved1Counter HasStart() bool - // Step returns uint32, set in PatternFlowIpv4TotalLengthCounter. + // Step returns uint32, set in PatternFlowGreReserved1Counter. Step() uint32 - // SetStep assigns uint32 provided by user to PatternFlowIpv4TotalLengthCounter - SetStep(value uint32) PatternFlowIpv4TotalLengthCounter - // HasStep checks if Step has been set in PatternFlowIpv4TotalLengthCounter + // SetStep assigns uint32 provided by user to PatternFlowGreReserved1Counter + SetStep(value uint32) PatternFlowGreReserved1Counter + // HasStep checks if Step has been set in PatternFlowGreReserved1Counter HasStep() bool - // Count returns uint32, set in PatternFlowIpv4TotalLengthCounter. + // Count returns uint32, set in PatternFlowGreReserved1Counter. Count() uint32 - // SetCount assigns uint32 provided by user to PatternFlowIpv4TotalLengthCounter - SetCount(value uint32) PatternFlowIpv4TotalLengthCounter - // HasCount checks if Count has been set in PatternFlowIpv4TotalLengthCounter + // SetCount assigns uint32 provided by user to PatternFlowGreReserved1Counter + SetCount(value uint32) PatternFlowGreReserved1Counter + // HasCount checks if Count has been set in PatternFlowGreReserved1Counter HasCount() bool } // description is TBD // Start returns a uint32 -func (obj *patternFlowIpv4TotalLengthCounter) Start() uint32 { +func (obj *patternFlowGreReserved1Counter) Start() uint32 { return *obj.obj.Start @@ -195907,13 +239049,13 @@ func (obj *patternFlowIpv4TotalLengthCounter) Start() uint32 { // description is TBD // Start returns a uint32 -func (obj *patternFlowIpv4TotalLengthCounter) HasStart() bool { +func (obj *patternFlowGreReserved1Counter) HasStart() bool { return obj.obj.Start != nil } // description is TBD -// SetStart sets the uint32 value in the PatternFlowIpv4TotalLengthCounter object -func (obj *patternFlowIpv4TotalLengthCounter) SetStart(value uint32) PatternFlowIpv4TotalLengthCounter { +// SetStart sets the uint32 value in the PatternFlowGreReserved1Counter object +func (obj *patternFlowGreReserved1Counter) SetStart(value uint32) PatternFlowGreReserved1Counter { obj.obj.Start = &value return obj @@ -195921,7 +239063,7 @@ func (obj *patternFlowIpv4TotalLengthCounter) SetStart(value uint32) PatternFlow // description is TBD // Step returns a uint32 -func (obj *patternFlowIpv4TotalLengthCounter) Step() uint32 { +func (obj *patternFlowGreReserved1Counter) Step() uint32 { return *obj.obj.Step @@ -195929,13 +239071,13 @@ func (obj *patternFlowIpv4TotalLengthCounter) Step() uint32 { // description is TBD // Step returns a uint32 -func (obj *patternFlowIpv4TotalLengthCounter) HasStep() bool { +func (obj *patternFlowGreReserved1Counter) HasStep() bool { return obj.obj.Step != nil } // description is TBD -// SetStep sets the uint32 value in the PatternFlowIpv4TotalLengthCounter object -func (obj *patternFlowIpv4TotalLengthCounter) SetStep(value uint32) PatternFlowIpv4TotalLengthCounter { +// SetStep sets the uint32 value in the PatternFlowGreReserved1Counter object +func (obj *patternFlowGreReserved1Counter) SetStep(value uint32) PatternFlowGreReserved1Counter { obj.obj.Step = &value return obj @@ -195943,7 +239085,7 @@ func (obj *patternFlowIpv4TotalLengthCounter) SetStep(value uint32) PatternFlowI // description is TBD // Count returns a uint32 -func (obj *patternFlowIpv4TotalLengthCounter) Count() uint32 { +func (obj *patternFlowGreReserved1Counter) Count() uint32 { return *obj.obj.Count @@ -195951,19 +239093,19 @@ func (obj *patternFlowIpv4TotalLengthCounter) Count() uint32 { // description is TBD // Count returns a uint32 -func (obj *patternFlowIpv4TotalLengthCounter) HasCount() bool { +func (obj *patternFlowGreReserved1Counter) HasCount() bool { return obj.obj.Count != nil } // description is TBD -// SetCount sets the uint32 value in the PatternFlowIpv4TotalLengthCounter object -func (obj *patternFlowIpv4TotalLengthCounter) SetCount(value uint32) PatternFlowIpv4TotalLengthCounter { +// SetCount sets the uint32 value in the PatternFlowGreReserved1Counter object +func (obj *patternFlowGreReserved1Counter) SetCount(value uint32) PatternFlowGreReserved1Counter { obj.obj.Count = &value return obj } -func (obj *patternFlowIpv4TotalLengthCounter) validateObj(vObj *validation, set_default bool) { +func (obj *patternFlowGreReserved1Counter) validateObj(vObj *validation, set_default bool) { if set_default { obj.setDefault() } @@ -195973,7 +239115,7 @@ func (obj *patternFlowIpv4TotalLengthCounter) validateObj(vObj *validation, set_ if *obj.obj.Start > 65535 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowIpv4TotalLengthCounter.Start <= 65535 but Got %d", *obj.obj.Start)) + fmt.Sprintf("0 <= PatternFlowGreReserved1Counter.Start <= 65535 but Got %d", *obj.obj.Start)) } } @@ -195983,7 +239125,7 @@ func (obj *patternFlowIpv4TotalLengthCounter) validateObj(vObj *validation, set_ if *obj.obj.Step > 65535 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowIpv4TotalLengthCounter.Step <= 65535 but Got %d", *obj.obj.Step)) + fmt.Sprintf("0 <= PatternFlowGreReserved1Counter.Step <= 65535 but Got %d", *obj.obj.Step)) } } @@ -195993,16 +239135,16 @@ func (obj *patternFlowIpv4TotalLengthCounter) validateObj(vObj *validation, set_ if *obj.obj.Count > 65535 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowIpv4TotalLengthCounter.Count <= 65535 but Got %d", *obj.obj.Count)) + fmt.Sprintf("0 <= PatternFlowGreReserved1Counter.Count <= 65535 but Got %d", *obj.obj.Count)) } } } -func (obj *patternFlowIpv4TotalLengthCounter) setDefault() { +func (obj *patternFlowGreReserved1Counter) setDefault() { if obj.obj.Start == nil { - obj.SetStart(46) + obj.SetStart(0) } if obj.obj.Step == nil { obj.SetStep(1) @@ -196013,29 +239155,29 @@ func (obj *patternFlowIpv4TotalLengthCounter) setDefault() { } -// ***** PatternFlowIpv4TotalLengthMetricTag ***** -type patternFlowIpv4TotalLengthMetricTag struct { +// ***** PatternFlowGreReserved1MetricTag ***** +type patternFlowGreReserved1MetricTag struct { validation - obj *otg.PatternFlowIpv4TotalLengthMetricTag + obj *otg.PatternFlowGreReserved1MetricTag } -func NewPatternFlowIpv4TotalLengthMetricTag() PatternFlowIpv4TotalLengthMetricTag { - obj := patternFlowIpv4TotalLengthMetricTag{obj: &otg.PatternFlowIpv4TotalLengthMetricTag{}} +func NewPatternFlowGreReserved1MetricTag() PatternFlowGreReserved1MetricTag { + obj := patternFlowGreReserved1MetricTag{obj: &otg.PatternFlowGreReserved1MetricTag{}} obj.setDefault() return &obj } -func (obj *patternFlowIpv4TotalLengthMetricTag) Msg() *otg.PatternFlowIpv4TotalLengthMetricTag { +func (obj *patternFlowGreReserved1MetricTag) Msg() *otg.PatternFlowGreReserved1MetricTag { return obj.obj } -func (obj *patternFlowIpv4TotalLengthMetricTag) SetMsg(msg *otg.PatternFlowIpv4TotalLengthMetricTag) PatternFlowIpv4TotalLengthMetricTag { +func (obj *patternFlowGreReserved1MetricTag) SetMsg(msg *otg.PatternFlowGreReserved1MetricTag) PatternFlowGreReserved1MetricTag { proto.Merge(obj.obj, msg) return obj } -func (obj *patternFlowIpv4TotalLengthMetricTag) ToProto() (*otg.PatternFlowIpv4TotalLengthMetricTag, error) { +func (obj *patternFlowGreReserved1MetricTag) ToProto() (*otg.PatternFlowGreReserved1MetricTag, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -196043,7 +239185,7 @@ func (obj *patternFlowIpv4TotalLengthMetricTag) ToProto() (*otg.PatternFlowIpv4T return obj.Msg(), nil } -func (obj *patternFlowIpv4TotalLengthMetricTag) FromProto(msg *otg.PatternFlowIpv4TotalLengthMetricTag) (PatternFlowIpv4TotalLengthMetricTag, error) { +func (obj *patternFlowGreReserved1MetricTag) FromProto(msg *otg.PatternFlowGreReserved1MetricTag) (PatternFlowGreReserved1MetricTag, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -196052,7 +239194,7 @@ func (obj *patternFlowIpv4TotalLengthMetricTag) FromProto(msg *otg.PatternFlowIp return newObj, nil } -func (obj *patternFlowIpv4TotalLengthMetricTag) ToPbText() (string, error) { +func (obj *patternFlowGreReserved1MetricTag) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -196064,7 +239206,7 @@ func (obj *patternFlowIpv4TotalLengthMetricTag) ToPbText() (string, error) { return string(protoMarshal), nil } -func (obj *patternFlowIpv4TotalLengthMetricTag) FromPbText(value string) error { +func (obj *patternFlowGreReserved1MetricTag) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj @@ -196077,7 +239219,7 @@ func (obj *patternFlowIpv4TotalLengthMetricTag) FromPbText(value string) error { return retObj } -func (obj *patternFlowIpv4TotalLengthMetricTag) ToYaml() (string, error) { +func (obj *patternFlowGreReserved1MetricTag) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -196098,7 +239240,7 @@ func (obj *patternFlowIpv4TotalLengthMetricTag) ToYaml() (string, error) { return string(data), nil } -func (obj *patternFlowIpv4TotalLengthMetricTag) FromYaml(value string) error { +func (obj *patternFlowGreReserved1MetricTag) FromYaml(value string) error { if value == "" { value = "{}" } @@ -196123,7 +239265,7 @@ func (obj *patternFlowIpv4TotalLengthMetricTag) FromYaml(value string) error { return nil } -func (obj *patternFlowIpv4TotalLengthMetricTag) ToJson() (string, error) { +func (obj *patternFlowGreReserved1MetricTag) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -196141,7 +239283,7 @@ func (obj *patternFlowIpv4TotalLengthMetricTag) ToJson() (string, error) { return string(data), nil } -func (obj *patternFlowIpv4TotalLengthMetricTag) FromJson(value string) error { +func (obj *patternFlowGreReserved1MetricTag) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -196162,19 +239304,19 @@ func (obj *patternFlowIpv4TotalLengthMetricTag) FromJson(value string) error { return nil } -func (obj *patternFlowIpv4TotalLengthMetricTag) validateToAndFrom() error { +func (obj *patternFlowGreReserved1MetricTag) validateToAndFrom() error { // emptyVars() obj.validateObj(&obj.validation, true) return obj.validationResult() } -func (obj *patternFlowIpv4TotalLengthMetricTag) Validate() error { +func (obj *patternFlowGreReserved1MetricTag) Validate() error { // emptyVars() obj.validateObj(&obj.validation, false) return obj.validationResult() } -func (obj *patternFlowIpv4TotalLengthMetricTag) String() string { +func (obj *patternFlowGreReserved1MetricTag) String() string { str, err := obj.ToYaml() if err != nil { return err.Error() @@ -196182,12 +239324,12 @@ func (obj *patternFlowIpv4TotalLengthMetricTag) String() string { return str } -func (obj *patternFlowIpv4TotalLengthMetricTag) Clone() (PatternFlowIpv4TotalLengthMetricTag, error) { +func (obj *patternFlowGreReserved1MetricTag) Clone() (PatternFlowGreReserved1MetricTag, error) { vErr := obj.Validate() if vErr != nil { return nil, vErr } - newObj := NewPatternFlowIpv4TotalLengthMetricTag() + newObj := NewPatternFlowGreReserved1MetricTag() data, err := proto.Marshal(obj.Msg()) if err != nil { return nil, err @@ -196199,69 +239341,69 @@ func (obj *patternFlowIpv4TotalLengthMetricTag) Clone() (PatternFlowIpv4TotalLen return newObj, nil } -// PatternFlowIpv4TotalLengthMetricTag is metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. -type PatternFlowIpv4TotalLengthMetricTag interface { +// PatternFlowGreReserved1MetricTag is metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. +type PatternFlowGreReserved1MetricTag interface { Validation - // Msg marshals PatternFlowIpv4TotalLengthMetricTag to protobuf object *otg.PatternFlowIpv4TotalLengthMetricTag + // Msg marshals PatternFlowGreReserved1MetricTag to protobuf object *otg.PatternFlowGreReserved1MetricTag // and doesn't set defaults - Msg() *otg.PatternFlowIpv4TotalLengthMetricTag - // SetMsg unmarshals PatternFlowIpv4TotalLengthMetricTag from protobuf object *otg.PatternFlowIpv4TotalLengthMetricTag + Msg() *otg.PatternFlowGreReserved1MetricTag + // SetMsg unmarshals PatternFlowGreReserved1MetricTag from protobuf object *otg.PatternFlowGreReserved1MetricTag // and doesn't set defaults - SetMsg(*otg.PatternFlowIpv4TotalLengthMetricTag) PatternFlowIpv4TotalLengthMetricTag - // ToProto marshals PatternFlowIpv4TotalLengthMetricTag to protobuf object *otg.PatternFlowIpv4TotalLengthMetricTag - ToProto() (*otg.PatternFlowIpv4TotalLengthMetricTag, error) - // ToPbText marshals PatternFlowIpv4TotalLengthMetricTag to protobuf text + SetMsg(*otg.PatternFlowGreReserved1MetricTag) PatternFlowGreReserved1MetricTag + // ToProto marshals PatternFlowGreReserved1MetricTag to protobuf object *otg.PatternFlowGreReserved1MetricTag + ToProto() (*otg.PatternFlowGreReserved1MetricTag, error) + // ToPbText marshals PatternFlowGreReserved1MetricTag to protobuf text ToPbText() (string, error) - // ToYaml marshals PatternFlowIpv4TotalLengthMetricTag to YAML text + // ToYaml marshals PatternFlowGreReserved1MetricTag to YAML text ToYaml() (string, error) - // ToJson marshals PatternFlowIpv4TotalLengthMetricTag to JSON text + // ToJson marshals PatternFlowGreReserved1MetricTag to JSON text ToJson() (string, error) - // FromProto unmarshals PatternFlowIpv4TotalLengthMetricTag from protobuf object *otg.PatternFlowIpv4TotalLengthMetricTag - FromProto(msg *otg.PatternFlowIpv4TotalLengthMetricTag) (PatternFlowIpv4TotalLengthMetricTag, error) - // FromPbText unmarshals PatternFlowIpv4TotalLengthMetricTag from protobuf text + // FromProto unmarshals PatternFlowGreReserved1MetricTag from protobuf object *otg.PatternFlowGreReserved1MetricTag + FromProto(msg *otg.PatternFlowGreReserved1MetricTag) (PatternFlowGreReserved1MetricTag, error) + // FromPbText unmarshals PatternFlowGreReserved1MetricTag from protobuf text FromPbText(value string) error - // FromYaml unmarshals PatternFlowIpv4TotalLengthMetricTag from YAML text + // FromYaml unmarshals PatternFlowGreReserved1MetricTag from YAML text FromYaml(value string) error - // FromJson unmarshals PatternFlowIpv4TotalLengthMetricTag from JSON text + // FromJson unmarshals PatternFlowGreReserved1MetricTag from JSON text FromJson(value string) error - // Validate validates PatternFlowIpv4TotalLengthMetricTag + // Validate validates PatternFlowGreReserved1MetricTag Validate() error // A stringer function String() string // Clones the object - Clone() (PatternFlowIpv4TotalLengthMetricTag, error) + Clone() (PatternFlowGreReserved1MetricTag, error) validateToAndFrom() error validateObj(vObj *validation, set_default bool) setDefault() - // Name returns string, set in PatternFlowIpv4TotalLengthMetricTag. + // Name returns string, set in PatternFlowGreReserved1MetricTag. Name() string - // SetName assigns string provided by user to PatternFlowIpv4TotalLengthMetricTag - SetName(value string) PatternFlowIpv4TotalLengthMetricTag - // Offset returns uint32, set in PatternFlowIpv4TotalLengthMetricTag. + // SetName assigns string provided by user to PatternFlowGreReserved1MetricTag + SetName(value string) PatternFlowGreReserved1MetricTag + // Offset returns uint32, set in PatternFlowGreReserved1MetricTag. Offset() uint32 - // SetOffset assigns uint32 provided by user to PatternFlowIpv4TotalLengthMetricTag - SetOffset(value uint32) PatternFlowIpv4TotalLengthMetricTag - // HasOffset checks if Offset has been set in PatternFlowIpv4TotalLengthMetricTag + // SetOffset assigns uint32 provided by user to PatternFlowGreReserved1MetricTag + SetOffset(value uint32) PatternFlowGreReserved1MetricTag + // HasOffset checks if Offset has been set in PatternFlowGreReserved1MetricTag HasOffset() bool - // Length returns uint32, set in PatternFlowIpv4TotalLengthMetricTag. + // Length returns uint32, set in PatternFlowGreReserved1MetricTag. Length() uint32 - // SetLength assigns uint32 provided by user to PatternFlowIpv4TotalLengthMetricTag - SetLength(value uint32) PatternFlowIpv4TotalLengthMetricTag - // HasLength checks if Length has been set in PatternFlowIpv4TotalLengthMetricTag + // SetLength assigns uint32 provided by user to PatternFlowGreReserved1MetricTag + SetLength(value uint32) PatternFlowGreReserved1MetricTag + // HasLength checks if Length has been set in PatternFlowGreReserved1MetricTag HasLength() bool } // Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field // Name returns a string -func (obj *patternFlowIpv4TotalLengthMetricTag) Name() string { +func (obj *patternFlowGreReserved1MetricTag) Name() string { return *obj.obj.Name } // Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field -// SetName sets the string value in the PatternFlowIpv4TotalLengthMetricTag object -func (obj *patternFlowIpv4TotalLengthMetricTag) SetName(value string) PatternFlowIpv4TotalLengthMetricTag { +// SetName sets the string value in the PatternFlowGreReserved1MetricTag object +func (obj *patternFlowGreReserved1MetricTag) SetName(value string) PatternFlowGreReserved1MetricTag { obj.obj.Name = &value return obj @@ -196269,7 +239411,7 @@ func (obj *patternFlowIpv4TotalLengthMetricTag) SetName(value string) PatternFlo // Offset in bits relative to start of corresponding header field // Offset returns a uint32 -func (obj *patternFlowIpv4TotalLengthMetricTag) Offset() uint32 { +func (obj *patternFlowGreReserved1MetricTag) Offset() uint32 { return *obj.obj.Offset @@ -196277,13 +239419,13 @@ func (obj *patternFlowIpv4TotalLengthMetricTag) Offset() uint32 { // Offset in bits relative to start of corresponding header field // Offset returns a uint32 -func (obj *patternFlowIpv4TotalLengthMetricTag) HasOffset() bool { +func (obj *patternFlowGreReserved1MetricTag) HasOffset() bool { return obj.obj.Offset != nil } // Offset in bits relative to start of corresponding header field -// SetOffset sets the uint32 value in the PatternFlowIpv4TotalLengthMetricTag object -func (obj *patternFlowIpv4TotalLengthMetricTag) SetOffset(value uint32) PatternFlowIpv4TotalLengthMetricTag { +// SetOffset sets the uint32 value in the PatternFlowGreReserved1MetricTag object +func (obj *patternFlowGreReserved1MetricTag) SetOffset(value uint32) PatternFlowGreReserved1MetricTag { obj.obj.Offset = &value return obj @@ -196291,7 +239433,7 @@ func (obj *patternFlowIpv4TotalLengthMetricTag) SetOffset(value uint32) PatternF // Number of bits to track for metrics starting from configured offset of corresponding header field // Length returns a uint32 -func (obj *patternFlowIpv4TotalLengthMetricTag) Length() uint32 { +func (obj *patternFlowGreReserved1MetricTag) Length() uint32 { return *obj.obj.Length @@ -196299,26 +239441,26 @@ func (obj *patternFlowIpv4TotalLengthMetricTag) Length() uint32 { // Number of bits to track for metrics starting from configured offset of corresponding header field // Length returns a uint32 -func (obj *patternFlowIpv4TotalLengthMetricTag) HasLength() bool { +func (obj *patternFlowGreReserved1MetricTag) HasLength() bool { return obj.obj.Length != nil } // Number of bits to track for metrics starting from configured offset of corresponding header field -// SetLength sets the uint32 value in the PatternFlowIpv4TotalLengthMetricTag object -func (obj *patternFlowIpv4TotalLengthMetricTag) SetLength(value uint32) PatternFlowIpv4TotalLengthMetricTag { +// SetLength sets the uint32 value in the PatternFlowGreReserved1MetricTag object +func (obj *patternFlowGreReserved1MetricTag) SetLength(value uint32) PatternFlowGreReserved1MetricTag { obj.obj.Length = &value return obj } -func (obj *patternFlowIpv4TotalLengthMetricTag) validateObj(vObj *validation, set_default bool) { +func (obj *patternFlowGreReserved1MetricTag) validateObj(vObj *validation, set_default bool) { if set_default { obj.setDefault() } // Name is required if obj.obj.Name == nil { - vObj.validationErrors = append(vObj.validationErrors, "Name is required field on interface PatternFlowIpv4TotalLengthMetricTag") + vObj.validationErrors = append(vObj.validationErrors, "Name is required field on interface PatternFlowGreReserved1MetricTag") } if obj.obj.Offset != nil { @@ -196326,7 +239468,7 @@ func (obj *patternFlowIpv4TotalLengthMetricTag) validateObj(vObj *validation, se if *obj.obj.Offset > 15 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowIpv4TotalLengthMetricTag.Offset <= 15 but Got %d", *obj.obj.Offset)) + fmt.Sprintf("0 <= PatternFlowGreReserved1MetricTag.Offset <= 15 but Got %d", *obj.obj.Offset)) } } @@ -196336,14 +239478,14 @@ func (obj *patternFlowIpv4TotalLengthMetricTag) validateObj(vObj *validation, se if *obj.obj.Length < 1 || *obj.obj.Length > 16 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("1 <= PatternFlowIpv4TotalLengthMetricTag.Length <= 16 but Got %d", *obj.obj.Length)) + fmt.Sprintf("1 <= PatternFlowGreReserved1MetricTag.Length <= 16 but Got %d", *obj.obj.Length)) } } } -func (obj *patternFlowIpv4TotalLengthMetricTag) setDefault() { +func (obj *patternFlowGreReserved1MetricTag) setDefault() { if obj.obj.Offset == nil { obj.SetOffset(0) } @@ -196353,29 +239495,29 @@ func (obj *patternFlowIpv4TotalLengthMetricTag) setDefault() { } -// ***** PatternFlowIpv4IdentificationCounter ***** -type patternFlowIpv4IdentificationCounter struct { +// ***** PatternFlowGtpv1VersionCounter ***** +type patternFlowGtpv1VersionCounter struct { validation - obj *otg.PatternFlowIpv4IdentificationCounter + obj *otg.PatternFlowGtpv1VersionCounter } -func NewPatternFlowIpv4IdentificationCounter() PatternFlowIpv4IdentificationCounter { - obj := patternFlowIpv4IdentificationCounter{obj: &otg.PatternFlowIpv4IdentificationCounter{}} +func NewPatternFlowGtpv1VersionCounter() PatternFlowGtpv1VersionCounter { + obj := patternFlowGtpv1VersionCounter{obj: &otg.PatternFlowGtpv1VersionCounter{}} obj.setDefault() return &obj } -func (obj *patternFlowIpv4IdentificationCounter) Msg() *otg.PatternFlowIpv4IdentificationCounter { +func (obj *patternFlowGtpv1VersionCounter) Msg() *otg.PatternFlowGtpv1VersionCounter { return obj.obj } -func (obj *patternFlowIpv4IdentificationCounter) SetMsg(msg *otg.PatternFlowIpv4IdentificationCounter) PatternFlowIpv4IdentificationCounter { +func (obj *patternFlowGtpv1VersionCounter) SetMsg(msg *otg.PatternFlowGtpv1VersionCounter) PatternFlowGtpv1VersionCounter { proto.Merge(obj.obj, msg) return obj } -func (obj *patternFlowIpv4IdentificationCounter) ToProto() (*otg.PatternFlowIpv4IdentificationCounter, error) { +func (obj *patternFlowGtpv1VersionCounter) ToProto() (*otg.PatternFlowGtpv1VersionCounter, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -196383,7 +239525,7 @@ func (obj *patternFlowIpv4IdentificationCounter) ToProto() (*otg.PatternFlowIpv4 return obj.Msg(), nil } -func (obj *patternFlowIpv4IdentificationCounter) FromProto(msg *otg.PatternFlowIpv4IdentificationCounter) (PatternFlowIpv4IdentificationCounter, error) { +func (obj *patternFlowGtpv1VersionCounter) FromProto(msg *otg.PatternFlowGtpv1VersionCounter) (PatternFlowGtpv1VersionCounter, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -196392,7 +239534,7 @@ func (obj *patternFlowIpv4IdentificationCounter) FromProto(msg *otg.PatternFlowI return newObj, nil } -func (obj *patternFlowIpv4IdentificationCounter) ToPbText() (string, error) { +func (obj *patternFlowGtpv1VersionCounter) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -196404,7 +239546,7 @@ func (obj *patternFlowIpv4IdentificationCounter) ToPbText() (string, error) { return string(protoMarshal), nil } -func (obj *patternFlowIpv4IdentificationCounter) FromPbText(value string) error { +func (obj *patternFlowGtpv1VersionCounter) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj @@ -196417,7 +239559,7 @@ func (obj *patternFlowIpv4IdentificationCounter) FromPbText(value string) error return retObj } -func (obj *patternFlowIpv4IdentificationCounter) ToYaml() (string, error) { +func (obj *patternFlowGtpv1VersionCounter) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -196438,7 +239580,7 @@ func (obj *patternFlowIpv4IdentificationCounter) ToYaml() (string, error) { return string(data), nil } -func (obj *patternFlowIpv4IdentificationCounter) FromYaml(value string) error { +func (obj *patternFlowGtpv1VersionCounter) FromYaml(value string) error { if value == "" { value = "{}" } @@ -196463,7 +239605,7 @@ func (obj *patternFlowIpv4IdentificationCounter) FromYaml(value string) error { return nil } -func (obj *patternFlowIpv4IdentificationCounter) ToJson() (string, error) { +func (obj *patternFlowGtpv1VersionCounter) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -196481,7 +239623,7 @@ func (obj *patternFlowIpv4IdentificationCounter) ToJson() (string, error) { return string(data), nil } -func (obj *patternFlowIpv4IdentificationCounter) FromJson(value string) error { +func (obj *patternFlowGtpv1VersionCounter) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -196502,19 +239644,19 @@ func (obj *patternFlowIpv4IdentificationCounter) FromJson(value string) error { return nil } -func (obj *patternFlowIpv4IdentificationCounter) validateToAndFrom() error { +func (obj *patternFlowGtpv1VersionCounter) validateToAndFrom() error { // emptyVars() obj.validateObj(&obj.validation, true) return obj.validationResult() } -func (obj *patternFlowIpv4IdentificationCounter) Validate() error { +func (obj *patternFlowGtpv1VersionCounter) Validate() error { // emptyVars() obj.validateObj(&obj.validation, false) return obj.validationResult() } -func (obj *patternFlowIpv4IdentificationCounter) String() string { +func (obj *patternFlowGtpv1VersionCounter) String() string { str, err := obj.ToYaml() if err != nil { return err.Error() @@ -196522,12 +239664,12 @@ func (obj *patternFlowIpv4IdentificationCounter) String() string { return str } -func (obj *patternFlowIpv4IdentificationCounter) Clone() (PatternFlowIpv4IdentificationCounter, error) { +func (obj *patternFlowGtpv1VersionCounter) Clone() (PatternFlowGtpv1VersionCounter, error) { vErr := obj.Validate() if vErr != nil { return nil, vErr } - newObj := NewPatternFlowIpv4IdentificationCounter() + newObj := NewPatternFlowGtpv1VersionCounter() data, err := proto.Marshal(obj.Msg()) if err != nil { return nil, err @@ -196539,63 +239681,63 @@ func (obj *patternFlowIpv4IdentificationCounter) Clone() (PatternFlowIpv4Identif return newObj, nil } -// PatternFlowIpv4IdentificationCounter is integer counter pattern -type PatternFlowIpv4IdentificationCounter interface { +// PatternFlowGtpv1VersionCounter is integer counter pattern +type PatternFlowGtpv1VersionCounter interface { Validation - // Msg marshals PatternFlowIpv4IdentificationCounter to protobuf object *otg.PatternFlowIpv4IdentificationCounter + // Msg marshals PatternFlowGtpv1VersionCounter to protobuf object *otg.PatternFlowGtpv1VersionCounter // and doesn't set defaults - Msg() *otg.PatternFlowIpv4IdentificationCounter - // SetMsg unmarshals PatternFlowIpv4IdentificationCounter from protobuf object *otg.PatternFlowIpv4IdentificationCounter + Msg() *otg.PatternFlowGtpv1VersionCounter + // SetMsg unmarshals PatternFlowGtpv1VersionCounter from protobuf object *otg.PatternFlowGtpv1VersionCounter // and doesn't set defaults - SetMsg(*otg.PatternFlowIpv4IdentificationCounter) PatternFlowIpv4IdentificationCounter - // ToProto marshals PatternFlowIpv4IdentificationCounter to protobuf object *otg.PatternFlowIpv4IdentificationCounter - ToProto() (*otg.PatternFlowIpv4IdentificationCounter, error) - // ToPbText marshals PatternFlowIpv4IdentificationCounter to protobuf text + SetMsg(*otg.PatternFlowGtpv1VersionCounter) PatternFlowGtpv1VersionCounter + // ToProto marshals PatternFlowGtpv1VersionCounter to protobuf object *otg.PatternFlowGtpv1VersionCounter + ToProto() (*otg.PatternFlowGtpv1VersionCounter, error) + // ToPbText marshals PatternFlowGtpv1VersionCounter to protobuf text ToPbText() (string, error) - // ToYaml marshals PatternFlowIpv4IdentificationCounter to YAML text + // ToYaml marshals PatternFlowGtpv1VersionCounter to YAML text ToYaml() (string, error) - // ToJson marshals PatternFlowIpv4IdentificationCounter to JSON text + // ToJson marshals PatternFlowGtpv1VersionCounter to JSON text ToJson() (string, error) - // FromProto unmarshals PatternFlowIpv4IdentificationCounter from protobuf object *otg.PatternFlowIpv4IdentificationCounter - FromProto(msg *otg.PatternFlowIpv4IdentificationCounter) (PatternFlowIpv4IdentificationCounter, error) - // FromPbText unmarshals PatternFlowIpv4IdentificationCounter from protobuf text + // FromProto unmarshals PatternFlowGtpv1VersionCounter from protobuf object *otg.PatternFlowGtpv1VersionCounter + FromProto(msg *otg.PatternFlowGtpv1VersionCounter) (PatternFlowGtpv1VersionCounter, error) + // FromPbText unmarshals PatternFlowGtpv1VersionCounter from protobuf text FromPbText(value string) error - // FromYaml unmarshals PatternFlowIpv4IdentificationCounter from YAML text + // FromYaml unmarshals PatternFlowGtpv1VersionCounter from YAML text FromYaml(value string) error - // FromJson unmarshals PatternFlowIpv4IdentificationCounter from JSON text + // FromJson unmarshals PatternFlowGtpv1VersionCounter from JSON text FromJson(value string) error - // Validate validates PatternFlowIpv4IdentificationCounter + // Validate validates PatternFlowGtpv1VersionCounter Validate() error // A stringer function String() string // Clones the object - Clone() (PatternFlowIpv4IdentificationCounter, error) + Clone() (PatternFlowGtpv1VersionCounter, error) validateToAndFrom() error validateObj(vObj *validation, set_default bool) setDefault() - // Start returns uint32, set in PatternFlowIpv4IdentificationCounter. + // Start returns uint32, set in PatternFlowGtpv1VersionCounter. Start() uint32 - // SetStart assigns uint32 provided by user to PatternFlowIpv4IdentificationCounter - SetStart(value uint32) PatternFlowIpv4IdentificationCounter - // HasStart checks if Start has been set in PatternFlowIpv4IdentificationCounter + // SetStart assigns uint32 provided by user to PatternFlowGtpv1VersionCounter + SetStart(value uint32) PatternFlowGtpv1VersionCounter + // HasStart checks if Start has been set in PatternFlowGtpv1VersionCounter HasStart() bool - // Step returns uint32, set in PatternFlowIpv4IdentificationCounter. + // Step returns uint32, set in PatternFlowGtpv1VersionCounter. Step() uint32 - // SetStep assigns uint32 provided by user to PatternFlowIpv4IdentificationCounter - SetStep(value uint32) PatternFlowIpv4IdentificationCounter - // HasStep checks if Step has been set in PatternFlowIpv4IdentificationCounter + // SetStep assigns uint32 provided by user to PatternFlowGtpv1VersionCounter + SetStep(value uint32) PatternFlowGtpv1VersionCounter + // HasStep checks if Step has been set in PatternFlowGtpv1VersionCounter HasStep() bool - // Count returns uint32, set in PatternFlowIpv4IdentificationCounter. + // Count returns uint32, set in PatternFlowGtpv1VersionCounter. Count() uint32 - // SetCount assigns uint32 provided by user to PatternFlowIpv4IdentificationCounter - SetCount(value uint32) PatternFlowIpv4IdentificationCounter - // HasCount checks if Count has been set in PatternFlowIpv4IdentificationCounter + // SetCount assigns uint32 provided by user to PatternFlowGtpv1VersionCounter + SetCount(value uint32) PatternFlowGtpv1VersionCounter + // HasCount checks if Count has been set in PatternFlowGtpv1VersionCounter HasCount() bool } // description is TBD // Start returns a uint32 -func (obj *patternFlowIpv4IdentificationCounter) Start() uint32 { +func (obj *patternFlowGtpv1VersionCounter) Start() uint32 { return *obj.obj.Start @@ -196603,13 +239745,13 @@ func (obj *patternFlowIpv4IdentificationCounter) Start() uint32 { // description is TBD // Start returns a uint32 -func (obj *patternFlowIpv4IdentificationCounter) HasStart() bool { +func (obj *patternFlowGtpv1VersionCounter) HasStart() bool { return obj.obj.Start != nil } // description is TBD -// SetStart sets the uint32 value in the PatternFlowIpv4IdentificationCounter object -func (obj *patternFlowIpv4IdentificationCounter) SetStart(value uint32) PatternFlowIpv4IdentificationCounter { +// SetStart sets the uint32 value in the PatternFlowGtpv1VersionCounter object +func (obj *patternFlowGtpv1VersionCounter) SetStart(value uint32) PatternFlowGtpv1VersionCounter { obj.obj.Start = &value return obj @@ -196617,7 +239759,7 @@ func (obj *patternFlowIpv4IdentificationCounter) SetStart(value uint32) PatternF // description is TBD // Step returns a uint32 -func (obj *patternFlowIpv4IdentificationCounter) Step() uint32 { +func (obj *patternFlowGtpv1VersionCounter) Step() uint32 { return *obj.obj.Step @@ -196625,13 +239767,13 @@ func (obj *patternFlowIpv4IdentificationCounter) Step() uint32 { // description is TBD // Step returns a uint32 -func (obj *patternFlowIpv4IdentificationCounter) HasStep() bool { +func (obj *patternFlowGtpv1VersionCounter) HasStep() bool { return obj.obj.Step != nil } // description is TBD -// SetStep sets the uint32 value in the PatternFlowIpv4IdentificationCounter object -func (obj *patternFlowIpv4IdentificationCounter) SetStep(value uint32) PatternFlowIpv4IdentificationCounter { +// SetStep sets the uint32 value in the PatternFlowGtpv1VersionCounter object +func (obj *patternFlowGtpv1VersionCounter) SetStep(value uint32) PatternFlowGtpv1VersionCounter { obj.obj.Step = &value return obj @@ -196639,7 +239781,7 @@ func (obj *patternFlowIpv4IdentificationCounter) SetStep(value uint32) PatternFl // description is TBD // Count returns a uint32 -func (obj *patternFlowIpv4IdentificationCounter) Count() uint32 { +func (obj *patternFlowGtpv1VersionCounter) Count() uint32 { return *obj.obj.Count @@ -196647,58 +239789,58 @@ func (obj *patternFlowIpv4IdentificationCounter) Count() uint32 { // description is TBD // Count returns a uint32 -func (obj *patternFlowIpv4IdentificationCounter) HasCount() bool { +func (obj *patternFlowGtpv1VersionCounter) HasCount() bool { return obj.obj.Count != nil } // description is TBD -// SetCount sets the uint32 value in the PatternFlowIpv4IdentificationCounter object -func (obj *patternFlowIpv4IdentificationCounter) SetCount(value uint32) PatternFlowIpv4IdentificationCounter { +// SetCount sets the uint32 value in the PatternFlowGtpv1VersionCounter object +func (obj *patternFlowGtpv1VersionCounter) SetCount(value uint32) PatternFlowGtpv1VersionCounter { obj.obj.Count = &value return obj } -func (obj *patternFlowIpv4IdentificationCounter) validateObj(vObj *validation, set_default bool) { +func (obj *patternFlowGtpv1VersionCounter) validateObj(vObj *validation, set_default bool) { if set_default { obj.setDefault() } if obj.obj.Start != nil { - if *obj.obj.Start > 65535 { + if *obj.obj.Start > 7 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowIpv4IdentificationCounter.Start <= 65535 but Got %d", *obj.obj.Start)) + fmt.Sprintf("0 <= PatternFlowGtpv1VersionCounter.Start <= 7 but Got %d", *obj.obj.Start)) } } if obj.obj.Step != nil { - if *obj.obj.Step > 65535 { + if *obj.obj.Step > 7 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowIpv4IdentificationCounter.Step <= 65535 but Got %d", *obj.obj.Step)) + fmt.Sprintf("0 <= PatternFlowGtpv1VersionCounter.Step <= 7 but Got %d", *obj.obj.Step)) } } if obj.obj.Count != nil { - if *obj.obj.Count > 65535 { + if *obj.obj.Count > 7 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowIpv4IdentificationCounter.Count <= 65535 but Got %d", *obj.obj.Count)) + fmt.Sprintf("0 <= PatternFlowGtpv1VersionCounter.Count <= 7 but Got %d", *obj.obj.Count)) } } } -func (obj *patternFlowIpv4IdentificationCounter) setDefault() { +func (obj *patternFlowGtpv1VersionCounter) setDefault() { if obj.obj.Start == nil { - obj.SetStart(0) + obj.SetStart(1) } if obj.obj.Step == nil { obj.SetStep(1) @@ -196709,29 +239851,29 @@ func (obj *patternFlowIpv4IdentificationCounter) setDefault() { } -// ***** PatternFlowIpv4IdentificationMetricTag ***** -type patternFlowIpv4IdentificationMetricTag struct { +// ***** PatternFlowGtpv1VersionMetricTag ***** +type patternFlowGtpv1VersionMetricTag struct { validation - obj *otg.PatternFlowIpv4IdentificationMetricTag + obj *otg.PatternFlowGtpv1VersionMetricTag } -func NewPatternFlowIpv4IdentificationMetricTag() PatternFlowIpv4IdentificationMetricTag { - obj := patternFlowIpv4IdentificationMetricTag{obj: &otg.PatternFlowIpv4IdentificationMetricTag{}} +func NewPatternFlowGtpv1VersionMetricTag() PatternFlowGtpv1VersionMetricTag { + obj := patternFlowGtpv1VersionMetricTag{obj: &otg.PatternFlowGtpv1VersionMetricTag{}} obj.setDefault() return &obj } -func (obj *patternFlowIpv4IdentificationMetricTag) Msg() *otg.PatternFlowIpv4IdentificationMetricTag { +func (obj *patternFlowGtpv1VersionMetricTag) Msg() *otg.PatternFlowGtpv1VersionMetricTag { return obj.obj } -func (obj *patternFlowIpv4IdentificationMetricTag) SetMsg(msg *otg.PatternFlowIpv4IdentificationMetricTag) PatternFlowIpv4IdentificationMetricTag { +func (obj *patternFlowGtpv1VersionMetricTag) SetMsg(msg *otg.PatternFlowGtpv1VersionMetricTag) PatternFlowGtpv1VersionMetricTag { proto.Merge(obj.obj, msg) return obj } -func (obj *patternFlowIpv4IdentificationMetricTag) ToProto() (*otg.PatternFlowIpv4IdentificationMetricTag, error) { +func (obj *patternFlowGtpv1VersionMetricTag) ToProto() (*otg.PatternFlowGtpv1VersionMetricTag, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -196739,7 +239881,7 @@ func (obj *patternFlowIpv4IdentificationMetricTag) ToProto() (*otg.PatternFlowIp return obj.Msg(), nil } -func (obj *patternFlowIpv4IdentificationMetricTag) FromProto(msg *otg.PatternFlowIpv4IdentificationMetricTag) (PatternFlowIpv4IdentificationMetricTag, error) { +func (obj *patternFlowGtpv1VersionMetricTag) FromProto(msg *otg.PatternFlowGtpv1VersionMetricTag) (PatternFlowGtpv1VersionMetricTag, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -196748,7 +239890,7 @@ func (obj *patternFlowIpv4IdentificationMetricTag) FromProto(msg *otg.PatternFlo return newObj, nil } -func (obj *patternFlowIpv4IdentificationMetricTag) ToPbText() (string, error) { +func (obj *patternFlowGtpv1VersionMetricTag) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -196760,7 +239902,7 @@ func (obj *patternFlowIpv4IdentificationMetricTag) ToPbText() (string, error) { return string(protoMarshal), nil } -func (obj *patternFlowIpv4IdentificationMetricTag) FromPbText(value string) error { +func (obj *patternFlowGtpv1VersionMetricTag) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj @@ -196773,7 +239915,7 @@ func (obj *patternFlowIpv4IdentificationMetricTag) FromPbText(value string) erro return retObj } -func (obj *patternFlowIpv4IdentificationMetricTag) ToYaml() (string, error) { +func (obj *patternFlowGtpv1VersionMetricTag) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -196794,7 +239936,7 @@ func (obj *patternFlowIpv4IdentificationMetricTag) ToYaml() (string, error) { return string(data), nil } -func (obj *patternFlowIpv4IdentificationMetricTag) FromYaml(value string) error { +func (obj *patternFlowGtpv1VersionMetricTag) FromYaml(value string) error { if value == "" { value = "{}" } @@ -196819,7 +239961,7 @@ func (obj *patternFlowIpv4IdentificationMetricTag) FromYaml(value string) error return nil } -func (obj *patternFlowIpv4IdentificationMetricTag) ToJson() (string, error) { +func (obj *patternFlowGtpv1VersionMetricTag) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -196837,7 +239979,7 @@ func (obj *patternFlowIpv4IdentificationMetricTag) ToJson() (string, error) { return string(data), nil } -func (obj *patternFlowIpv4IdentificationMetricTag) FromJson(value string) error { +func (obj *patternFlowGtpv1VersionMetricTag) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -196858,19 +240000,19 @@ func (obj *patternFlowIpv4IdentificationMetricTag) FromJson(value string) error return nil } -func (obj *patternFlowIpv4IdentificationMetricTag) validateToAndFrom() error { +func (obj *patternFlowGtpv1VersionMetricTag) validateToAndFrom() error { // emptyVars() obj.validateObj(&obj.validation, true) return obj.validationResult() } -func (obj *patternFlowIpv4IdentificationMetricTag) Validate() error { +func (obj *patternFlowGtpv1VersionMetricTag) Validate() error { // emptyVars() obj.validateObj(&obj.validation, false) return obj.validationResult() } -func (obj *patternFlowIpv4IdentificationMetricTag) String() string { +func (obj *patternFlowGtpv1VersionMetricTag) String() string { str, err := obj.ToYaml() if err != nil { return err.Error() @@ -196878,12 +240020,12 @@ func (obj *patternFlowIpv4IdentificationMetricTag) String() string { return str } -func (obj *patternFlowIpv4IdentificationMetricTag) Clone() (PatternFlowIpv4IdentificationMetricTag, error) { +func (obj *patternFlowGtpv1VersionMetricTag) Clone() (PatternFlowGtpv1VersionMetricTag, error) { vErr := obj.Validate() if vErr != nil { return nil, vErr } - newObj := NewPatternFlowIpv4IdentificationMetricTag() + newObj := NewPatternFlowGtpv1VersionMetricTag() data, err := proto.Marshal(obj.Msg()) if err != nil { return nil, err @@ -196895,69 +240037,69 @@ func (obj *patternFlowIpv4IdentificationMetricTag) Clone() (PatternFlowIpv4Ident return newObj, nil } -// PatternFlowIpv4IdentificationMetricTag is metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. -type PatternFlowIpv4IdentificationMetricTag interface { +// PatternFlowGtpv1VersionMetricTag is metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. +type PatternFlowGtpv1VersionMetricTag interface { Validation - // Msg marshals PatternFlowIpv4IdentificationMetricTag to protobuf object *otg.PatternFlowIpv4IdentificationMetricTag + // Msg marshals PatternFlowGtpv1VersionMetricTag to protobuf object *otg.PatternFlowGtpv1VersionMetricTag // and doesn't set defaults - Msg() *otg.PatternFlowIpv4IdentificationMetricTag - // SetMsg unmarshals PatternFlowIpv4IdentificationMetricTag from protobuf object *otg.PatternFlowIpv4IdentificationMetricTag + Msg() *otg.PatternFlowGtpv1VersionMetricTag + // SetMsg unmarshals PatternFlowGtpv1VersionMetricTag from protobuf object *otg.PatternFlowGtpv1VersionMetricTag // and doesn't set defaults - SetMsg(*otg.PatternFlowIpv4IdentificationMetricTag) PatternFlowIpv4IdentificationMetricTag - // ToProto marshals PatternFlowIpv4IdentificationMetricTag to protobuf object *otg.PatternFlowIpv4IdentificationMetricTag - ToProto() (*otg.PatternFlowIpv4IdentificationMetricTag, error) - // ToPbText marshals PatternFlowIpv4IdentificationMetricTag to protobuf text + SetMsg(*otg.PatternFlowGtpv1VersionMetricTag) PatternFlowGtpv1VersionMetricTag + // ToProto marshals PatternFlowGtpv1VersionMetricTag to protobuf object *otg.PatternFlowGtpv1VersionMetricTag + ToProto() (*otg.PatternFlowGtpv1VersionMetricTag, error) + // ToPbText marshals PatternFlowGtpv1VersionMetricTag to protobuf text ToPbText() (string, error) - // ToYaml marshals PatternFlowIpv4IdentificationMetricTag to YAML text + // ToYaml marshals PatternFlowGtpv1VersionMetricTag to YAML text ToYaml() (string, error) - // ToJson marshals PatternFlowIpv4IdentificationMetricTag to JSON text + // ToJson marshals PatternFlowGtpv1VersionMetricTag to JSON text ToJson() (string, error) - // FromProto unmarshals PatternFlowIpv4IdentificationMetricTag from protobuf object *otg.PatternFlowIpv4IdentificationMetricTag - FromProto(msg *otg.PatternFlowIpv4IdentificationMetricTag) (PatternFlowIpv4IdentificationMetricTag, error) - // FromPbText unmarshals PatternFlowIpv4IdentificationMetricTag from protobuf text + // FromProto unmarshals PatternFlowGtpv1VersionMetricTag from protobuf object *otg.PatternFlowGtpv1VersionMetricTag + FromProto(msg *otg.PatternFlowGtpv1VersionMetricTag) (PatternFlowGtpv1VersionMetricTag, error) + // FromPbText unmarshals PatternFlowGtpv1VersionMetricTag from protobuf text FromPbText(value string) error - // FromYaml unmarshals PatternFlowIpv4IdentificationMetricTag from YAML text + // FromYaml unmarshals PatternFlowGtpv1VersionMetricTag from YAML text FromYaml(value string) error - // FromJson unmarshals PatternFlowIpv4IdentificationMetricTag from JSON text + // FromJson unmarshals PatternFlowGtpv1VersionMetricTag from JSON text FromJson(value string) error - // Validate validates PatternFlowIpv4IdentificationMetricTag + // Validate validates PatternFlowGtpv1VersionMetricTag Validate() error // A stringer function String() string // Clones the object - Clone() (PatternFlowIpv4IdentificationMetricTag, error) + Clone() (PatternFlowGtpv1VersionMetricTag, error) validateToAndFrom() error validateObj(vObj *validation, set_default bool) setDefault() - // Name returns string, set in PatternFlowIpv4IdentificationMetricTag. + // Name returns string, set in PatternFlowGtpv1VersionMetricTag. Name() string - // SetName assigns string provided by user to PatternFlowIpv4IdentificationMetricTag - SetName(value string) PatternFlowIpv4IdentificationMetricTag - // Offset returns uint32, set in PatternFlowIpv4IdentificationMetricTag. + // SetName assigns string provided by user to PatternFlowGtpv1VersionMetricTag + SetName(value string) PatternFlowGtpv1VersionMetricTag + // Offset returns uint32, set in PatternFlowGtpv1VersionMetricTag. Offset() uint32 - // SetOffset assigns uint32 provided by user to PatternFlowIpv4IdentificationMetricTag - SetOffset(value uint32) PatternFlowIpv4IdentificationMetricTag - // HasOffset checks if Offset has been set in PatternFlowIpv4IdentificationMetricTag + // SetOffset assigns uint32 provided by user to PatternFlowGtpv1VersionMetricTag + SetOffset(value uint32) PatternFlowGtpv1VersionMetricTag + // HasOffset checks if Offset has been set in PatternFlowGtpv1VersionMetricTag HasOffset() bool - // Length returns uint32, set in PatternFlowIpv4IdentificationMetricTag. + // Length returns uint32, set in PatternFlowGtpv1VersionMetricTag. Length() uint32 - // SetLength assigns uint32 provided by user to PatternFlowIpv4IdentificationMetricTag - SetLength(value uint32) PatternFlowIpv4IdentificationMetricTag - // HasLength checks if Length has been set in PatternFlowIpv4IdentificationMetricTag + // SetLength assigns uint32 provided by user to PatternFlowGtpv1VersionMetricTag + SetLength(value uint32) PatternFlowGtpv1VersionMetricTag + // HasLength checks if Length has been set in PatternFlowGtpv1VersionMetricTag HasLength() bool } // Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field // Name returns a string -func (obj *patternFlowIpv4IdentificationMetricTag) Name() string { +func (obj *patternFlowGtpv1VersionMetricTag) Name() string { return *obj.obj.Name } // Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field -// SetName sets the string value in the PatternFlowIpv4IdentificationMetricTag object -func (obj *patternFlowIpv4IdentificationMetricTag) SetName(value string) PatternFlowIpv4IdentificationMetricTag { +// SetName sets the string value in the PatternFlowGtpv1VersionMetricTag object +func (obj *patternFlowGtpv1VersionMetricTag) SetName(value string) PatternFlowGtpv1VersionMetricTag { obj.obj.Name = &value return obj @@ -196965,7 +240107,7 @@ func (obj *patternFlowIpv4IdentificationMetricTag) SetName(value string) Pattern // Offset in bits relative to start of corresponding header field // Offset returns a uint32 -func (obj *patternFlowIpv4IdentificationMetricTag) Offset() uint32 { +func (obj *patternFlowGtpv1VersionMetricTag) Offset() uint32 { return *obj.obj.Offset @@ -196973,13 +240115,13 @@ func (obj *patternFlowIpv4IdentificationMetricTag) Offset() uint32 { // Offset in bits relative to start of corresponding header field // Offset returns a uint32 -func (obj *patternFlowIpv4IdentificationMetricTag) HasOffset() bool { +func (obj *patternFlowGtpv1VersionMetricTag) HasOffset() bool { return obj.obj.Offset != nil } // Offset in bits relative to start of corresponding header field -// SetOffset sets the uint32 value in the PatternFlowIpv4IdentificationMetricTag object -func (obj *patternFlowIpv4IdentificationMetricTag) SetOffset(value uint32) PatternFlowIpv4IdentificationMetricTag { +// SetOffset sets the uint32 value in the PatternFlowGtpv1VersionMetricTag object +func (obj *patternFlowGtpv1VersionMetricTag) SetOffset(value uint32) PatternFlowGtpv1VersionMetricTag { obj.obj.Offset = &value return obj @@ -196987,7 +240129,7 @@ func (obj *patternFlowIpv4IdentificationMetricTag) SetOffset(value uint32) Patte // Number of bits to track for metrics starting from configured offset of corresponding header field // Length returns a uint32 -func (obj *patternFlowIpv4IdentificationMetricTag) Length() uint32 { +func (obj *patternFlowGtpv1VersionMetricTag) Length() uint32 { return *obj.obj.Length @@ -196995,83 +240137,83 @@ func (obj *patternFlowIpv4IdentificationMetricTag) Length() uint32 { // Number of bits to track for metrics starting from configured offset of corresponding header field // Length returns a uint32 -func (obj *patternFlowIpv4IdentificationMetricTag) HasLength() bool { +func (obj *patternFlowGtpv1VersionMetricTag) HasLength() bool { return obj.obj.Length != nil } // Number of bits to track for metrics starting from configured offset of corresponding header field -// SetLength sets the uint32 value in the PatternFlowIpv4IdentificationMetricTag object -func (obj *patternFlowIpv4IdentificationMetricTag) SetLength(value uint32) PatternFlowIpv4IdentificationMetricTag { +// SetLength sets the uint32 value in the PatternFlowGtpv1VersionMetricTag object +func (obj *patternFlowGtpv1VersionMetricTag) SetLength(value uint32) PatternFlowGtpv1VersionMetricTag { obj.obj.Length = &value return obj } -func (obj *patternFlowIpv4IdentificationMetricTag) validateObj(vObj *validation, set_default bool) { +func (obj *patternFlowGtpv1VersionMetricTag) validateObj(vObj *validation, set_default bool) { if set_default { obj.setDefault() } // Name is required if obj.obj.Name == nil { - vObj.validationErrors = append(vObj.validationErrors, "Name is required field on interface PatternFlowIpv4IdentificationMetricTag") + vObj.validationErrors = append(vObj.validationErrors, "Name is required field on interface PatternFlowGtpv1VersionMetricTag") } if obj.obj.Offset != nil { - if *obj.obj.Offset > 15 { + if *obj.obj.Offset > 2 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowIpv4IdentificationMetricTag.Offset <= 15 but Got %d", *obj.obj.Offset)) + fmt.Sprintf("0 <= PatternFlowGtpv1VersionMetricTag.Offset <= 2 but Got %d", *obj.obj.Offset)) } } if obj.obj.Length != nil { - if *obj.obj.Length < 1 || *obj.obj.Length > 16 { + if *obj.obj.Length < 1 || *obj.obj.Length > 3 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("1 <= PatternFlowIpv4IdentificationMetricTag.Length <= 16 but Got %d", *obj.obj.Length)) + fmt.Sprintf("1 <= PatternFlowGtpv1VersionMetricTag.Length <= 3 but Got %d", *obj.obj.Length)) } } } -func (obj *patternFlowIpv4IdentificationMetricTag) setDefault() { +func (obj *patternFlowGtpv1VersionMetricTag) setDefault() { if obj.obj.Offset == nil { obj.SetOffset(0) } if obj.obj.Length == nil { - obj.SetLength(16) + obj.SetLength(3) } } -// ***** PatternFlowIpv4ReservedCounter ***** -type patternFlowIpv4ReservedCounter struct { +// ***** PatternFlowGtpv1ProtocolTypeCounter ***** +type patternFlowGtpv1ProtocolTypeCounter struct { validation - obj *otg.PatternFlowIpv4ReservedCounter + obj *otg.PatternFlowGtpv1ProtocolTypeCounter } -func NewPatternFlowIpv4ReservedCounter() PatternFlowIpv4ReservedCounter { - obj := patternFlowIpv4ReservedCounter{obj: &otg.PatternFlowIpv4ReservedCounter{}} +func NewPatternFlowGtpv1ProtocolTypeCounter() PatternFlowGtpv1ProtocolTypeCounter { + obj := patternFlowGtpv1ProtocolTypeCounter{obj: &otg.PatternFlowGtpv1ProtocolTypeCounter{}} obj.setDefault() return &obj } -func (obj *patternFlowIpv4ReservedCounter) Msg() *otg.PatternFlowIpv4ReservedCounter { +func (obj *patternFlowGtpv1ProtocolTypeCounter) Msg() *otg.PatternFlowGtpv1ProtocolTypeCounter { return obj.obj } -func (obj *patternFlowIpv4ReservedCounter) SetMsg(msg *otg.PatternFlowIpv4ReservedCounter) PatternFlowIpv4ReservedCounter { +func (obj *patternFlowGtpv1ProtocolTypeCounter) SetMsg(msg *otg.PatternFlowGtpv1ProtocolTypeCounter) PatternFlowGtpv1ProtocolTypeCounter { proto.Merge(obj.obj, msg) return obj } -func (obj *patternFlowIpv4ReservedCounter) ToProto() (*otg.PatternFlowIpv4ReservedCounter, error) { +func (obj *patternFlowGtpv1ProtocolTypeCounter) ToProto() (*otg.PatternFlowGtpv1ProtocolTypeCounter, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -197079,7 +240221,7 @@ func (obj *patternFlowIpv4ReservedCounter) ToProto() (*otg.PatternFlowIpv4Reserv return obj.Msg(), nil } -func (obj *patternFlowIpv4ReservedCounter) FromProto(msg *otg.PatternFlowIpv4ReservedCounter) (PatternFlowIpv4ReservedCounter, error) { +func (obj *patternFlowGtpv1ProtocolTypeCounter) FromProto(msg *otg.PatternFlowGtpv1ProtocolTypeCounter) (PatternFlowGtpv1ProtocolTypeCounter, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -197088,7 +240230,7 @@ func (obj *patternFlowIpv4ReservedCounter) FromProto(msg *otg.PatternFlowIpv4Res return newObj, nil } -func (obj *patternFlowIpv4ReservedCounter) ToPbText() (string, error) { +func (obj *patternFlowGtpv1ProtocolTypeCounter) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -197100,7 +240242,7 @@ func (obj *patternFlowIpv4ReservedCounter) ToPbText() (string, error) { return string(protoMarshal), nil } -func (obj *patternFlowIpv4ReservedCounter) FromPbText(value string) error { +func (obj *patternFlowGtpv1ProtocolTypeCounter) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj @@ -197113,7 +240255,7 @@ func (obj *patternFlowIpv4ReservedCounter) FromPbText(value string) error { return retObj } -func (obj *patternFlowIpv4ReservedCounter) ToYaml() (string, error) { +func (obj *patternFlowGtpv1ProtocolTypeCounter) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -197134,7 +240276,7 @@ func (obj *patternFlowIpv4ReservedCounter) ToYaml() (string, error) { return string(data), nil } -func (obj *patternFlowIpv4ReservedCounter) FromYaml(value string) error { +func (obj *patternFlowGtpv1ProtocolTypeCounter) FromYaml(value string) error { if value == "" { value = "{}" } @@ -197159,7 +240301,7 @@ func (obj *patternFlowIpv4ReservedCounter) FromYaml(value string) error { return nil } -func (obj *patternFlowIpv4ReservedCounter) ToJson() (string, error) { +func (obj *patternFlowGtpv1ProtocolTypeCounter) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -197177,7 +240319,7 @@ func (obj *patternFlowIpv4ReservedCounter) ToJson() (string, error) { return string(data), nil } -func (obj *patternFlowIpv4ReservedCounter) FromJson(value string) error { +func (obj *patternFlowGtpv1ProtocolTypeCounter) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -197198,19 +240340,19 @@ func (obj *patternFlowIpv4ReservedCounter) FromJson(value string) error { return nil } -func (obj *patternFlowIpv4ReservedCounter) validateToAndFrom() error { +func (obj *patternFlowGtpv1ProtocolTypeCounter) validateToAndFrom() error { // emptyVars() obj.validateObj(&obj.validation, true) return obj.validationResult() } -func (obj *patternFlowIpv4ReservedCounter) Validate() error { +func (obj *patternFlowGtpv1ProtocolTypeCounter) Validate() error { // emptyVars() obj.validateObj(&obj.validation, false) return obj.validationResult() } -func (obj *patternFlowIpv4ReservedCounter) String() string { +func (obj *patternFlowGtpv1ProtocolTypeCounter) String() string { str, err := obj.ToYaml() if err != nil { return err.Error() @@ -197218,12 +240360,12 @@ func (obj *patternFlowIpv4ReservedCounter) String() string { return str } -func (obj *patternFlowIpv4ReservedCounter) Clone() (PatternFlowIpv4ReservedCounter, error) { +func (obj *patternFlowGtpv1ProtocolTypeCounter) Clone() (PatternFlowGtpv1ProtocolTypeCounter, error) { vErr := obj.Validate() if vErr != nil { return nil, vErr } - newObj := NewPatternFlowIpv4ReservedCounter() + newObj := NewPatternFlowGtpv1ProtocolTypeCounter() data, err := proto.Marshal(obj.Msg()) if err != nil { return nil, err @@ -197235,63 +240377,63 @@ func (obj *patternFlowIpv4ReservedCounter) Clone() (PatternFlowIpv4ReservedCount return newObj, nil } -// PatternFlowIpv4ReservedCounter is integer counter pattern -type PatternFlowIpv4ReservedCounter interface { +// PatternFlowGtpv1ProtocolTypeCounter is integer counter pattern +type PatternFlowGtpv1ProtocolTypeCounter interface { Validation - // Msg marshals PatternFlowIpv4ReservedCounter to protobuf object *otg.PatternFlowIpv4ReservedCounter + // Msg marshals PatternFlowGtpv1ProtocolTypeCounter to protobuf object *otg.PatternFlowGtpv1ProtocolTypeCounter // and doesn't set defaults - Msg() *otg.PatternFlowIpv4ReservedCounter - // SetMsg unmarshals PatternFlowIpv4ReservedCounter from protobuf object *otg.PatternFlowIpv4ReservedCounter + Msg() *otg.PatternFlowGtpv1ProtocolTypeCounter + // SetMsg unmarshals PatternFlowGtpv1ProtocolTypeCounter from protobuf object *otg.PatternFlowGtpv1ProtocolTypeCounter // and doesn't set defaults - SetMsg(*otg.PatternFlowIpv4ReservedCounter) PatternFlowIpv4ReservedCounter - // ToProto marshals PatternFlowIpv4ReservedCounter to protobuf object *otg.PatternFlowIpv4ReservedCounter - ToProto() (*otg.PatternFlowIpv4ReservedCounter, error) - // ToPbText marshals PatternFlowIpv4ReservedCounter to protobuf text + SetMsg(*otg.PatternFlowGtpv1ProtocolTypeCounter) PatternFlowGtpv1ProtocolTypeCounter + // ToProto marshals PatternFlowGtpv1ProtocolTypeCounter to protobuf object *otg.PatternFlowGtpv1ProtocolTypeCounter + ToProto() (*otg.PatternFlowGtpv1ProtocolTypeCounter, error) + // ToPbText marshals PatternFlowGtpv1ProtocolTypeCounter to protobuf text ToPbText() (string, error) - // ToYaml marshals PatternFlowIpv4ReservedCounter to YAML text + // ToYaml marshals PatternFlowGtpv1ProtocolTypeCounter to YAML text ToYaml() (string, error) - // ToJson marshals PatternFlowIpv4ReservedCounter to JSON text + // ToJson marshals PatternFlowGtpv1ProtocolTypeCounter to JSON text ToJson() (string, error) - // FromProto unmarshals PatternFlowIpv4ReservedCounter from protobuf object *otg.PatternFlowIpv4ReservedCounter - FromProto(msg *otg.PatternFlowIpv4ReservedCounter) (PatternFlowIpv4ReservedCounter, error) - // FromPbText unmarshals PatternFlowIpv4ReservedCounter from protobuf text + // FromProto unmarshals PatternFlowGtpv1ProtocolTypeCounter from protobuf object *otg.PatternFlowGtpv1ProtocolTypeCounter + FromProto(msg *otg.PatternFlowGtpv1ProtocolTypeCounter) (PatternFlowGtpv1ProtocolTypeCounter, error) + // FromPbText unmarshals PatternFlowGtpv1ProtocolTypeCounter from protobuf text FromPbText(value string) error - // FromYaml unmarshals PatternFlowIpv4ReservedCounter from YAML text + // FromYaml unmarshals PatternFlowGtpv1ProtocolTypeCounter from YAML text FromYaml(value string) error - // FromJson unmarshals PatternFlowIpv4ReservedCounter from JSON text + // FromJson unmarshals PatternFlowGtpv1ProtocolTypeCounter from JSON text FromJson(value string) error - // Validate validates PatternFlowIpv4ReservedCounter + // Validate validates PatternFlowGtpv1ProtocolTypeCounter Validate() error // A stringer function String() string // Clones the object - Clone() (PatternFlowIpv4ReservedCounter, error) + Clone() (PatternFlowGtpv1ProtocolTypeCounter, error) validateToAndFrom() error validateObj(vObj *validation, set_default bool) setDefault() - // Start returns uint32, set in PatternFlowIpv4ReservedCounter. + // Start returns uint32, set in PatternFlowGtpv1ProtocolTypeCounter. Start() uint32 - // SetStart assigns uint32 provided by user to PatternFlowIpv4ReservedCounter - SetStart(value uint32) PatternFlowIpv4ReservedCounter - // HasStart checks if Start has been set in PatternFlowIpv4ReservedCounter + // SetStart assigns uint32 provided by user to PatternFlowGtpv1ProtocolTypeCounter + SetStart(value uint32) PatternFlowGtpv1ProtocolTypeCounter + // HasStart checks if Start has been set in PatternFlowGtpv1ProtocolTypeCounter HasStart() bool - // Step returns uint32, set in PatternFlowIpv4ReservedCounter. + // Step returns uint32, set in PatternFlowGtpv1ProtocolTypeCounter. Step() uint32 - // SetStep assigns uint32 provided by user to PatternFlowIpv4ReservedCounter - SetStep(value uint32) PatternFlowIpv4ReservedCounter - // HasStep checks if Step has been set in PatternFlowIpv4ReservedCounter + // SetStep assigns uint32 provided by user to PatternFlowGtpv1ProtocolTypeCounter + SetStep(value uint32) PatternFlowGtpv1ProtocolTypeCounter + // HasStep checks if Step has been set in PatternFlowGtpv1ProtocolTypeCounter HasStep() bool - // Count returns uint32, set in PatternFlowIpv4ReservedCounter. + // Count returns uint32, set in PatternFlowGtpv1ProtocolTypeCounter. Count() uint32 - // SetCount assigns uint32 provided by user to PatternFlowIpv4ReservedCounter - SetCount(value uint32) PatternFlowIpv4ReservedCounter - // HasCount checks if Count has been set in PatternFlowIpv4ReservedCounter + // SetCount assigns uint32 provided by user to PatternFlowGtpv1ProtocolTypeCounter + SetCount(value uint32) PatternFlowGtpv1ProtocolTypeCounter + // HasCount checks if Count has been set in PatternFlowGtpv1ProtocolTypeCounter HasCount() bool } // description is TBD // Start returns a uint32 -func (obj *patternFlowIpv4ReservedCounter) Start() uint32 { +func (obj *patternFlowGtpv1ProtocolTypeCounter) Start() uint32 { return *obj.obj.Start @@ -197299,13 +240441,13 @@ func (obj *patternFlowIpv4ReservedCounter) Start() uint32 { // description is TBD // Start returns a uint32 -func (obj *patternFlowIpv4ReservedCounter) HasStart() bool { +func (obj *patternFlowGtpv1ProtocolTypeCounter) HasStart() bool { return obj.obj.Start != nil } // description is TBD -// SetStart sets the uint32 value in the PatternFlowIpv4ReservedCounter object -func (obj *patternFlowIpv4ReservedCounter) SetStart(value uint32) PatternFlowIpv4ReservedCounter { +// SetStart sets the uint32 value in the PatternFlowGtpv1ProtocolTypeCounter object +func (obj *patternFlowGtpv1ProtocolTypeCounter) SetStart(value uint32) PatternFlowGtpv1ProtocolTypeCounter { obj.obj.Start = &value return obj @@ -197313,7 +240455,7 @@ func (obj *patternFlowIpv4ReservedCounter) SetStart(value uint32) PatternFlowIpv // description is TBD // Step returns a uint32 -func (obj *patternFlowIpv4ReservedCounter) Step() uint32 { +func (obj *patternFlowGtpv1ProtocolTypeCounter) Step() uint32 { return *obj.obj.Step @@ -197321,13 +240463,13 @@ func (obj *patternFlowIpv4ReservedCounter) Step() uint32 { // description is TBD // Step returns a uint32 -func (obj *patternFlowIpv4ReservedCounter) HasStep() bool { +func (obj *patternFlowGtpv1ProtocolTypeCounter) HasStep() bool { return obj.obj.Step != nil } // description is TBD -// SetStep sets the uint32 value in the PatternFlowIpv4ReservedCounter object -func (obj *patternFlowIpv4ReservedCounter) SetStep(value uint32) PatternFlowIpv4ReservedCounter { +// SetStep sets the uint32 value in the PatternFlowGtpv1ProtocolTypeCounter object +func (obj *patternFlowGtpv1ProtocolTypeCounter) SetStep(value uint32) PatternFlowGtpv1ProtocolTypeCounter { obj.obj.Step = &value return obj @@ -197335,7 +240477,7 @@ func (obj *patternFlowIpv4ReservedCounter) SetStep(value uint32) PatternFlowIpv4 // description is TBD // Count returns a uint32 -func (obj *patternFlowIpv4ReservedCounter) Count() uint32 { +func (obj *patternFlowGtpv1ProtocolTypeCounter) Count() uint32 { return *obj.obj.Count @@ -197343,19 +240485,19 @@ func (obj *patternFlowIpv4ReservedCounter) Count() uint32 { // description is TBD // Count returns a uint32 -func (obj *patternFlowIpv4ReservedCounter) HasCount() bool { +func (obj *patternFlowGtpv1ProtocolTypeCounter) HasCount() bool { return obj.obj.Count != nil } // description is TBD -// SetCount sets the uint32 value in the PatternFlowIpv4ReservedCounter object -func (obj *patternFlowIpv4ReservedCounter) SetCount(value uint32) PatternFlowIpv4ReservedCounter { +// SetCount sets the uint32 value in the PatternFlowGtpv1ProtocolTypeCounter object +func (obj *patternFlowGtpv1ProtocolTypeCounter) SetCount(value uint32) PatternFlowGtpv1ProtocolTypeCounter { obj.obj.Count = &value return obj } -func (obj *patternFlowIpv4ReservedCounter) validateObj(vObj *validation, set_default bool) { +func (obj *patternFlowGtpv1ProtocolTypeCounter) validateObj(vObj *validation, set_default bool) { if set_default { obj.setDefault() } @@ -197365,7 +240507,7 @@ func (obj *patternFlowIpv4ReservedCounter) validateObj(vObj *validation, set_def if *obj.obj.Start > 1 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowIpv4ReservedCounter.Start <= 1 but Got %d", *obj.obj.Start)) + fmt.Sprintf("0 <= PatternFlowGtpv1ProtocolTypeCounter.Start <= 1 but Got %d", *obj.obj.Start)) } } @@ -197375,7 +240517,7 @@ func (obj *patternFlowIpv4ReservedCounter) validateObj(vObj *validation, set_def if *obj.obj.Step > 1 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowIpv4ReservedCounter.Step <= 1 but Got %d", *obj.obj.Step)) + fmt.Sprintf("0 <= PatternFlowGtpv1ProtocolTypeCounter.Step <= 1 but Got %d", *obj.obj.Step)) } } @@ -197385,16 +240527,16 @@ func (obj *patternFlowIpv4ReservedCounter) validateObj(vObj *validation, set_def if *obj.obj.Count > 1 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowIpv4ReservedCounter.Count <= 1 but Got %d", *obj.obj.Count)) + fmt.Sprintf("0 <= PatternFlowGtpv1ProtocolTypeCounter.Count <= 1 but Got %d", *obj.obj.Count)) } } } -func (obj *patternFlowIpv4ReservedCounter) setDefault() { +func (obj *patternFlowGtpv1ProtocolTypeCounter) setDefault() { if obj.obj.Start == nil { - obj.SetStart(0) + obj.SetStart(1) } if obj.obj.Step == nil { obj.SetStep(1) @@ -197405,29 +240547,29 @@ func (obj *patternFlowIpv4ReservedCounter) setDefault() { } -// ***** PatternFlowIpv4ReservedMetricTag ***** -type patternFlowIpv4ReservedMetricTag struct { +// ***** PatternFlowGtpv1ProtocolTypeMetricTag ***** +type patternFlowGtpv1ProtocolTypeMetricTag struct { validation - obj *otg.PatternFlowIpv4ReservedMetricTag + obj *otg.PatternFlowGtpv1ProtocolTypeMetricTag } -func NewPatternFlowIpv4ReservedMetricTag() PatternFlowIpv4ReservedMetricTag { - obj := patternFlowIpv4ReservedMetricTag{obj: &otg.PatternFlowIpv4ReservedMetricTag{}} +func NewPatternFlowGtpv1ProtocolTypeMetricTag() PatternFlowGtpv1ProtocolTypeMetricTag { + obj := patternFlowGtpv1ProtocolTypeMetricTag{obj: &otg.PatternFlowGtpv1ProtocolTypeMetricTag{}} obj.setDefault() return &obj } -func (obj *patternFlowIpv4ReservedMetricTag) Msg() *otg.PatternFlowIpv4ReservedMetricTag { +func (obj *patternFlowGtpv1ProtocolTypeMetricTag) Msg() *otg.PatternFlowGtpv1ProtocolTypeMetricTag { return obj.obj } -func (obj *patternFlowIpv4ReservedMetricTag) SetMsg(msg *otg.PatternFlowIpv4ReservedMetricTag) PatternFlowIpv4ReservedMetricTag { +func (obj *patternFlowGtpv1ProtocolTypeMetricTag) SetMsg(msg *otg.PatternFlowGtpv1ProtocolTypeMetricTag) PatternFlowGtpv1ProtocolTypeMetricTag { proto.Merge(obj.obj, msg) return obj } -func (obj *patternFlowIpv4ReservedMetricTag) ToProto() (*otg.PatternFlowIpv4ReservedMetricTag, error) { +func (obj *patternFlowGtpv1ProtocolTypeMetricTag) ToProto() (*otg.PatternFlowGtpv1ProtocolTypeMetricTag, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -197435,7 +240577,7 @@ func (obj *patternFlowIpv4ReservedMetricTag) ToProto() (*otg.PatternFlowIpv4Rese return obj.Msg(), nil } -func (obj *patternFlowIpv4ReservedMetricTag) FromProto(msg *otg.PatternFlowIpv4ReservedMetricTag) (PatternFlowIpv4ReservedMetricTag, error) { +func (obj *patternFlowGtpv1ProtocolTypeMetricTag) FromProto(msg *otg.PatternFlowGtpv1ProtocolTypeMetricTag) (PatternFlowGtpv1ProtocolTypeMetricTag, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -197444,7 +240586,7 @@ func (obj *patternFlowIpv4ReservedMetricTag) FromProto(msg *otg.PatternFlowIpv4R return newObj, nil } -func (obj *patternFlowIpv4ReservedMetricTag) ToPbText() (string, error) { +func (obj *patternFlowGtpv1ProtocolTypeMetricTag) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -197456,7 +240598,7 @@ func (obj *patternFlowIpv4ReservedMetricTag) ToPbText() (string, error) { return string(protoMarshal), nil } -func (obj *patternFlowIpv4ReservedMetricTag) FromPbText(value string) error { +func (obj *patternFlowGtpv1ProtocolTypeMetricTag) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj @@ -197469,7 +240611,7 @@ func (obj *patternFlowIpv4ReservedMetricTag) FromPbText(value string) error { return retObj } -func (obj *patternFlowIpv4ReservedMetricTag) ToYaml() (string, error) { +func (obj *patternFlowGtpv1ProtocolTypeMetricTag) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -197490,7 +240632,7 @@ func (obj *patternFlowIpv4ReservedMetricTag) ToYaml() (string, error) { return string(data), nil } -func (obj *patternFlowIpv4ReservedMetricTag) FromYaml(value string) error { +func (obj *patternFlowGtpv1ProtocolTypeMetricTag) FromYaml(value string) error { if value == "" { value = "{}" } @@ -197515,7 +240657,7 @@ func (obj *patternFlowIpv4ReservedMetricTag) FromYaml(value string) error { return nil } -func (obj *patternFlowIpv4ReservedMetricTag) ToJson() (string, error) { +func (obj *patternFlowGtpv1ProtocolTypeMetricTag) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -197533,7 +240675,7 @@ func (obj *patternFlowIpv4ReservedMetricTag) ToJson() (string, error) { return string(data), nil } -func (obj *patternFlowIpv4ReservedMetricTag) FromJson(value string) error { +func (obj *patternFlowGtpv1ProtocolTypeMetricTag) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -197554,19 +240696,19 @@ func (obj *patternFlowIpv4ReservedMetricTag) FromJson(value string) error { return nil } -func (obj *patternFlowIpv4ReservedMetricTag) validateToAndFrom() error { +func (obj *patternFlowGtpv1ProtocolTypeMetricTag) validateToAndFrom() error { // emptyVars() obj.validateObj(&obj.validation, true) return obj.validationResult() } -func (obj *patternFlowIpv4ReservedMetricTag) Validate() error { +func (obj *patternFlowGtpv1ProtocolTypeMetricTag) Validate() error { // emptyVars() obj.validateObj(&obj.validation, false) return obj.validationResult() } -func (obj *patternFlowIpv4ReservedMetricTag) String() string { +func (obj *patternFlowGtpv1ProtocolTypeMetricTag) String() string { str, err := obj.ToYaml() if err != nil { return err.Error() @@ -197574,12 +240716,12 @@ func (obj *patternFlowIpv4ReservedMetricTag) String() string { return str } -func (obj *patternFlowIpv4ReservedMetricTag) Clone() (PatternFlowIpv4ReservedMetricTag, error) { +func (obj *patternFlowGtpv1ProtocolTypeMetricTag) Clone() (PatternFlowGtpv1ProtocolTypeMetricTag, error) { vErr := obj.Validate() if vErr != nil { return nil, vErr } - newObj := NewPatternFlowIpv4ReservedMetricTag() + newObj := NewPatternFlowGtpv1ProtocolTypeMetricTag() data, err := proto.Marshal(obj.Msg()) if err != nil { return nil, err @@ -197591,69 +240733,69 @@ func (obj *patternFlowIpv4ReservedMetricTag) Clone() (PatternFlowIpv4ReservedMet return newObj, nil } -// PatternFlowIpv4ReservedMetricTag is metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. -type PatternFlowIpv4ReservedMetricTag interface { +// PatternFlowGtpv1ProtocolTypeMetricTag is metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. +type PatternFlowGtpv1ProtocolTypeMetricTag interface { Validation - // Msg marshals PatternFlowIpv4ReservedMetricTag to protobuf object *otg.PatternFlowIpv4ReservedMetricTag + // Msg marshals PatternFlowGtpv1ProtocolTypeMetricTag to protobuf object *otg.PatternFlowGtpv1ProtocolTypeMetricTag // and doesn't set defaults - Msg() *otg.PatternFlowIpv4ReservedMetricTag - // SetMsg unmarshals PatternFlowIpv4ReservedMetricTag from protobuf object *otg.PatternFlowIpv4ReservedMetricTag + Msg() *otg.PatternFlowGtpv1ProtocolTypeMetricTag + // SetMsg unmarshals PatternFlowGtpv1ProtocolTypeMetricTag from protobuf object *otg.PatternFlowGtpv1ProtocolTypeMetricTag // and doesn't set defaults - SetMsg(*otg.PatternFlowIpv4ReservedMetricTag) PatternFlowIpv4ReservedMetricTag - // ToProto marshals PatternFlowIpv4ReservedMetricTag to protobuf object *otg.PatternFlowIpv4ReservedMetricTag - ToProto() (*otg.PatternFlowIpv4ReservedMetricTag, error) - // ToPbText marshals PatternFlowIpv4ReservedMetricTag to protobuf text + SetMsg(*otg.PatternFlowGtpv1ProtocolTypeMetricTag) PatternFlowGtpv1ProtocolTypeMetricTag + // ToProto marshals PatternFlowGtpv1ProtocolTypeMetricTag to protobuf object *otg.PatternFlowGtpv1ProtocolTypeMetricTag + ToProto() (*otg.PatternFlowGtpv1ProtocolTypeMetricTag, error) + // ToPbText marshals PatternFlowGtpv1ProtocolTypeMetricTag to protobuf text ToPbText() (string, error) - // ToYaml marshals PatternFlowIpv4ReservedMetricTag to YAML text + // ToYaml marshals PatternFlowGtpv1ProtocolTypeMetricTag to YAML text ToYaml() (string, error) - // ToJson marshals PatternFlowIpv4ReservedMetricTag to JSON text + // ToJson marshals PatternFlowGtpv1ProtocolTypeMetricTag to JSON text ToJson() (string, error) - // FromProto unmarshals PatternFlowIpv4ReservedMetricTag from protobuf object *otg.PatternFlowIpv4ReservedMetricTag - FromProto(msg *otg.PatternFlowIpv4ReservedMetricTag) (PatternFlowIpv4ReservedMetricTag, error) - // FromPbText unmarshals PatternFlowIpv4ReservedMetricTag from protobuf text + // FromProto unmarshals PatternFlowGtpv1ProtocolTypeMetricTag from protobuf object *otg.PatternFlowGtpv1ProtocolTypeMetricTag + FromProto(msg *otg.PatternFlowGtpv1ProtocolTypeMetricTag) (PatternFlowGtpv1ProtocolTypeMetricTag, error) + // FromPbText unmarshals PatternFlowGtpv1ProtocolTypeMetricTag from protobuf text FromPbText(value string) error - // FromYaml unmarshals PatternFlowIpv4ReservedMetricTag from YAML text + // FromYaml unmarshals PatternFlowGtpv1ProtocolTypeMetricTag from YAML text FromYaml(value string) error - // FromJson unmarshals PatternFlowIpv4ReservedMetricTag from JSON text + // FromJson unmarshals PatternFlowGtpv1ProtocolTypeMetricTag from JSON text FromJson(value string) error - // Validate validates PatternFlowIpv4ReservedMetricTag + // Validate validates PatternFlowGtpv1ProtocolTypeMetricTag Validate() error // A stringer function String() string // Clones the object - Clone() (PatternFlowIpv4ReservedMetricTag, error) + Clone() (PatternFlowGtpv1ProtocolTypeMetricTag, error) validateToAndFrom() error validateObj(vObj *validation, set_default bool) setDefault() - // Name returns string, set in PatternFlowIpv4ReservedMetricTag. + // Name returns string, set in PatternFlowGtpv1ProtocolTypeMetricTag. Name() string - // SetName assigns string provided by user to PatternFlowIpv4ReservedMetricTag - SetName(value string) PatternFlowIpv4ReservedMetricTag - // Offset returns uint32, set in PatternFlowIpv4ReservedMetricTag. + // SetName assigns string provided by user to PatternFlowGtpv1ProtocolTypeMetricTag + SetName(value string) PatternFlowGtpv1ProtocolTypeMetricTag + // Offset returns uint32, set in PatternFlowGtpv1ProtocolTypeMetricTag. Offset() uint32 - // SetOffset assigns uint32 provided by user to PatternFlowIpv4ReservedMetricTag - SetOffset(value uint32) PatternFlowIpv4ReservedMetricTag - // HasOffset checks if Offset has been set in PatternFlowIpv4ReservedMetricTag + // SetOffset assigns uint32 provided by user to PatternFlowGtpv1ProtocolTypeMetricTag + SetOffset(value uint32) PatternFlowGtpv1ProtocolTypeMetricTag + // HasOffset checks if Offset has been set in PatternFlowGtpv1ProtocolTypeMetricTag HasOffset() bool - // Length returns uint32, set in PatternFlowIpv4ReservedMetricTag. + // Length returns uint32, set in PatternFlowGtpv1ProtocolTypeMetricTag. Length() uint32 - // SetLength assigns uint32 provided by user to PatternFlowIpv4ReservedMetricTag - SetLength(value uint32) PatternFlowIpv4ReservedMetricTag - // HasLength checks if Length has been set in PatternFlowIpv4ReservedMetricTag + // SetLength assigns uint32 provided by user to PatternFlowGtpv1ProtocolTypeMetricTag + SetLength(value uint32) PatternFlowGtpv1ProtocolTypeMetricTag + // HasLength checks if Length has been set in PatternFlowGtpv1ProtocolTypeMetricTag HasLength() bool } // Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field // Name returns a string -func (obj *patternFlowIpv4ReservedMetricTag) Name() string { +func (obj *patternFlowGtpv1ProtocolTypeMetricTag) Name() string { return *obj.obj.Name } // Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field -// SetName sets the string value in the PatternFlowIpv4ReservedMetricTag object -func (obj *patternFlowIpv4ReservedMetricTag) SetName(value string) PatternFlowIpv4ReservedMetricTag { +// SetName sets the string value in the PatternFlowGtpv1ProtocolTypeMetricTag object +func (obj *patternFlowGtpv1ProtocolTypeMetricTag) SetName(value string) PatternFlowGtpv1ProtocolTypeMetricTag { obj.obj.Name = &value return obj @@ -197661,7 +240803,7 @@ func (obj *patternFlowIpv4ReservedMetricTag) SetName(value string) PatternFlowIp // Offset in bits relative to start of corresponding header field // Offset returns a uint32 -func (obj *patternFlowIpv4ReservedMetricTag) Offset() uint32 { +func (obj *patternFlowGtpv1ProtocolTypeMetricTag) Offset() uint32 { return *obj.obj.Offset @@ -197669,13 +240811,13 @@ func (obj *patternFlowIpv4ReservedMetricTag) Offset() uint32 { // Offset in bits relative to start of corresponding header field // Offset returns a uint32 -func (obj *patternFlowIpv4ReservedMetricTag) HasOffset() bool { +func (obj *patternFlowGtpv1ProtocolTypeMetricTag) HasOffset() bool { return obj.obj.Offset != nil } // Offset in bits relative to start of corresponding header field -// SetOffset sets the uint32 value in the PatternFlowIpv4ReservedMetricTag object -func (obj *patternFlowIpv4ReservedMetricTag) SetOffset(value uint32) PatternFlowIpv4ReservedMetricTag { +// SetOffset sets the uint32 value in the PatternFlowGtpv1ProtocolTypeMetricTag object +func (obj *patternFlowGtpv1ProtocolTypeMetricTag) SetOffset(value uint32) PatternFlowGtpv1ProtocolTypeMetricTag { obj.obj.Offset = &value return obj @@ -197683,7 +240825,7 @@ func (obj *patternFlowIpv4ReservedMetricTag) SetOffset(value uint32) PatternFlow // Number of bits to track for metrics starting from configured offset of corresponding header field // Length returns a uint32 -func (obj *patternFlowIpv4ReservedMetricTag) Length() uint32 { +func (obj *patternFlowGtpv1ProtocolTypeMetricTag) Length() uint32 { return *obj.obj.Length @@ -197691,26 +240833,26 @@ func (obj *patternFlowIpv4ReservedMetricTag) Length() uint32 { // Number of bits to track for metrics starting from configured offset of corresponding header field // Length returns a uint32 -func (obj *patternFlowIpv4ReservedMetricTag) HasLength() bool { +func (obj *patternFlowGtpv1ProtocolTypeMetricTag) HasLength() bool { return obj.obj.Length != nil } // Number of bits to track for metrics starting from configured offset of corresponding header field -// SetLength sets the uint32 value in the PatternFlowIpv4ReservedMetricTag object -func (obj *patternFlowIpv4ReservedMetricTag) SetLength(value uint32) PatternFlowIpv4ReservedMetricTag { +// SetLength sets the uint32 value in the PatternFlowGtpv1ProtocolTypeMetricTag object +func (obj *patternFlowGtpv1ProtocolTypeMetricTag) SetLength(value uint32) PatternFlowGtpv1ProtocolTypeMetricTag { obj.obj.Length = &value return obj } -func (obj *patternFlowIpv4ReservedMetricTag) validateObj(vObj *validation, set_default bool) { +func (obj *patternFlowGtpv1ProtocolTypeMetricTag) validateObj(vObj *validation, set_default bool) { if set_default { obj.setDefault() } // Name is required if obj.obj.Name == nil { - vObj.validationErrors = append(vObj.validationErrors, "Name is required field on interface PatternFlowIpv4ReservedMetricTag") + vObj.validationErrors = append(vObj.validationErrors, "Name is required field on interface PatternFlowGtpv1ProtocolTypeMetricTag") } if obj.obj.Offset != nil { @@ -197718,7 +240860,7 @@ func (obj *patternFlowIpv4ReservedMetricTag) validateObj(vObj *validation, set_d if *obj.obj.Offset > 0 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowIpv4ReservedMetricTag.Offset <= 0 but Got %d", *obj.obj.Offset)) + fmt.Sprintf("0 <= PatternFlowGtpv1ProtocolTypeMetricTag.Offset <= 0 but Got %d", *obj.obj.Offset)) } } @@ -197728,14 +240870,14 @@ func (obj *patternFlowIpv4ReservedMetricTag) validateObj(vObj *validation, set_d if *obj.obj.Length < 1 || *obj.obj.Length > 1 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("1 <= PatternFlowIpv4ReservedMetricTag.Length <= 1 but Got %d", *obj.obj.Length)) + fmt.Sprintf("1 <= PatternFlowGtpv1ProtocolTypeMetricTag.Length <= 1 but Got %d", *obj.obj.Length)) } } } -func (obj *patternFlowIpv4ReservedMetricTag) setDefault() { +func (obj *patternFlowGtpv1ProtocolTypeMetricTag) setDefault() { if obj.obj.Offset == nil { obj.SetOffset(0) } @@ -197745,29 +240887,29 @@ func (obj *patternFlowIpv4ReservedMetricTag) setDefault() { } -// ***** PatternFlowIpv4DontFragmentCounter ***** -type patternFlowIpv4DontFragmentCounter struct { +// ***** PatternFlowGtpv1ReservedCounter ***** +type patternFlowGtpv1ReservedCounter struct { validation - obj *otg.PatternFlowIpv4DontFragmentCounter + obj *otg.PatternFlowGtpv1ReservedCounter } -func NewPatternFlowIpv4DontFragmentCounter() PatternFlowIpv4DontFragmentCounter { - obj := patternFlowIpv4DontFragmentCounter{obj: &otg.PatternFlowIpv4DontFragmentCounter{}} +func NewPatternFlowGtpv1ReservedCounter() PatternFlowGtpv1ReservedCounter { + obj := patternFlowGtpv1ReservedCounter{obj: &otg.PatternFlowGtpv1ReservedCounter{}} obj.setDefault() return &obj } -func (obj *patternFlowIpv4DontFragmentCounter) Msg() *otg.PatternFlowIpv4DontFragmentCounter { +func (obj *patternFlowGtpv1ReservedCounter) Msg() *otg.PatternFlowGtpv1ReservedCounter { return obj.obj } -func (obj *patternFlowIpv4DontFragmentCounter) SetMsg(msg *otg.PatternFlowIpv4DontFragmentCounter) PatternFlowIpv4DontFragmentCounter { +func (obj *patternFlowGtpv1ReservedCounter) SetMsg(msg *otg.PatternFlowGtpv1ReservedCounter) PatternFlowGtpv1ReservedCounter { proto.Merge(obj.obj, msg) return obj } -func (obj *patternFlowIpv4DontFragmentCounter) ToProto() (*otg.PatternFlowIpv4DontFragmentCounter, error) { +func (obj *patternFlowGtpv1ReservedCounter) ToProto() (*otg.PatternFlowGtpv1ReservedCounter, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -197775,7 +240917,7 @@ func (obj *patternFlowIpv4DontFragmentCounter) ToProto() (*otg.PatternFlowIpv4Do return obj.Msg(), nil } -func (obj *patternFlowIpv4DontFragmentCounter) FromProto(msg *otg.PatternFlowIpv4DontFragmentCounter) (PatternFlowIpv4DontFragmentCounter, error) { +func (obj *patternFlowGtpv1ReservedCounter) FromProto(msg *otg.PatternFlowGtpv1ReservedCounter) (PatternFlowGtpv1ReservedCounter, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -197784,7 +240926,7 @@ func (obj *patternFlowIpv4DontFragmentCounter) FromProto(msg *otg.PatternFlowIpv return newObj, nil } -func (obj *patternFlowIpv4DontFragmentCounter) ToPbText() (string, error) { +func (obj *patternFlowGtpv1ReservedCounter) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -197796,7 +240938,7 @@ func (obj *patternFlowIpv4DontFragmentCounter) ToPbText() (string, error) { return string(protoMarshal), nil } -func (obj *patternFlowIpv4DontFragmentCounter) FromPbText(value string) error { +func (obj *patternFlowGtpv1ReservedCounter) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj @@ -197809,7 +240951,7 @@ func (obj *patternFlowIpv4DontFragmentCounter) FromPbText(value string) error { return retObj } -func (obj *patternFlowIpv4DontFragmentCounter) ToYaml() (string, error) { +func (obj *patternFlowGtpv1ReservedCounter) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -197830,7 +240972,7 @@ func (obj *patternFlowIpv4DontFragmentCounter) ToYaml() (string, error) { return string(data), nil } -func (obj *patternFlowIpv4DontFragmentCounter) FromYaml(value string) error { +func (obj *patternFlowGtpv1ReservedCounter) FromYaml(value string) error { if value == "" { value = "{}" } @@ -197855,7 +240997,7 @@ func (obj *patternFlowIpv4DontFragmentCounter) FromYaml(value string) error { return nil } -func (obj *patternFlowIpv4DontFragmentCounter) ToJson() (string, error) { +func (obj *patternFlowGtpv1ReservedCounter) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -197873,7 +241015,7 @@ func (obj *patternFlowIpv4DontFragmentCounter) ToJson() (string, error) { return string(data), nil } -func (obj *patternFlowIpv4DontFragmentCounter) FromJson(value string) error { +func (obj *patternFlowGtpv1ReservedCounter) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -197894,19 +241036,19 @@ func (obj *patternFlowIpv4DontFragmentCounter) FromJson(value string) error { return nil } -func (obj *patternFlowIpv4DontFragmentCounter) validateToAndFrom() error { +func (obj *patternFlowGtpv1ReservedCounter) validateToAndFrom() error { // emptyVars() obj.validateObj(&obj.validation, true) return obj.validationResult() } -func (obj *patternFlowIpv4DontFragmentCounter) Validate() error { +func (obj *patternFlowGtpv1ReservedCounter) Validate() error { // emptyVars() obj.validateObj(&obj.validation, false) return obj.validationResult() } -func (obj *patternFlowIpv4DontFragmentCounter) String() string { +func (obj *patternFlowGtpv1ReservedCounter) String() string { str, err := obj.ToYaml() if err != nil { return err.Error() @@ -197914,12 +241056,12 @@ func (obj *patternFlowIpv4DontFragmentCounter) String() string { return str } -func (obj *patternFlowIpv4DontFragmentCounter) Clone() (PatternFlowIpv4DontFragmentCounter, error) { +func (obj *patternFlowGtpv1ReservedCounter) Clone() (PatternFlowGtpv1ReservedCounter, error) { vErr := obj.Validate() if vErr != nil { return nil, vErr } - newObj := NewPatternFlowIpv4DontFragmentCounter() + newObj := NewPatternFlowGtpv1ReservedCounter() data, err := proto.Marshal(obj.Msg()) if err != nil { return nil, err @@ -197931,63 +241073,63 @@ func (obj *patternFlowIpv4DontFragmentCounter) Clone() (PatternFlowIpv4DontFragm return newObj, nil } -// PatternFlowIpv4DontFragmentCounter is integer counter pattern -type PatternFlowIpv4DontFragmentCounter interface { +// PatternFlowGtpv1ReservedCounter is integer counter pattern +type PatternFlowGtpv1ReservedCounter interface { Validation - // Msg marshals PatternFlowIpv4DontFragmentCounter to protobuf object *otg.PatternFlowIpv4DontFragmentCounter + // Msg marshals PatternFlowGtpv1ReservedCounter to protobuf object *otg.PatternFlowGtpv1ReservedCounter // and doesn't set defaults - Msg() *otg.PatternFlowIpv4DontFragmentCounter - // SetMsg unmarshals PatternFlowIpv4DontFragmentCounter from protobuf object *otg.PatternFlowIpv4DontFragmentCounter + Msg() *otg.PatternFlowGtpv1ReservedCounter + // SetMsg unmarshals PatternFlowGtpv1ReservedCounter from protobuf object *otg.PatternFlowGtpv1ReservedCounter // and doesn't set defaults - SetMsg(*otg.PatternFlowIpv4DontFragmentCounter) PatternFlowIpv4DontFragmentCounter - // ToProto marshals PatternFlowIpv4DontFragmentCounter to protobuf object *otg.PatternFlowIpv4DontFragmentCounter - ToProto() (*otg.PatternFlowIpv4DontFragmentCounter, error) - // ToPbText marshals PatternFlowIpv4DontFragmentCounter to protobuf text + SetMsg(*otg.PatternFlowGtpv1ReservedCounter) PatternFlowGtpv1ReservedCounter + // ToProto marshals PatternFlowGtpv1ReservedCounter to protobuf object *otg.PatternFlowGtpv1ReservedCounter + ToProto() (*otg.PatternFlowGtpv1ReservedCounter, error) + // ToPbText marshals PatternFlowGtpv1ReservedCounter to protobuf text ToPbText() (string, error) - // ToYaml marshals PatternFlowIpv4DontFragmentCounter to YAML text + // ToYaml marshals PatternFlowGtpv1ReservedCounter to YAML text ToYaml() (string, error) - // ToJson marshals PatternFlowIpv4DontFragmentCounter to JSON text + // ToJson marshals PatternFlowGtpv1ReservedCounter to JSON text ToJson() (string, error) - // FromProto unmarshals PatternFlowIpv4DontFragmentCounter from protobuf object *otg.PatternFlowIpv4DontFragmentCounter - FromProto(msg *otg.PatternFlowIpv4DontFragmentCounter) (PatternFlowIpv4DontFragmentCounter, error) - // FromPbText unmarshals PatternFlowIpv4DontFragmentCounter from protobuf text + // FromProto unmarshals PatternFlowGtpv1ReservedCounter from protobuf object *otg.PatternFlowGtpv1ReservedCounter + FromProto(msg *otg.PatternFlowGtpv1ReservedCounter) (PatternFlowGtpv1ReservedCounter, error) + // FromPbText unmarshals PatternFlowGtpv1ReservedCounter from protobuf text FromPbText(value string) error - // FromYaml unmarshals PatternFlowIpv4DontFragmentCounter from YAML text + // FromYaml unmarshals PatternFlowGtpv1ReservedCounter from YAML text FromYaml(value string) error - // FromJson unmarshals PatternFlowIpv4DontFragmentCounter from JSON text + // FromJson unmarshals PatternFlowGtpv1ReservedCounter from JSON text FromJson(value string) error - // Validate validates PatternFlowIpv4DontFragmentCounter + // Validate validates PatternFlowGtpv1ReservedCounter Validate() error // A stringer function String() string // Clones the object - Clone() (PatternFlowIpv4DontFragmentCounter, error) + Clone() (PatternFlowGtpv1ReservedCounter, error) validateToAndFrom() error validateObj(vObj *validation, set_default bool) setDefault() - // Start returns uint32, set in PatternFlowIpv4DontFragmentCounter. + // Start returns uint32, set in PatternFlowGtpv1ReservedCounter. Start() uint32 - // SetStart assigns uint32 provided by user to PatternFlowIpv4DontFragmentCounter - SetStart(value uint32) PatternFlowIpv4DontFragmentCounter - // HasStart checks if Start has been set in PatternFlowIpv4DontFragmentCounter + // SetStart assigns uint32 provided by user to PatternFlowGtpv1ReservedCounter + SetStart(value uint32) PatternFlowGtpv1ReservedCounter + // HasStart checks if Start has been set in PatternFlowGtpv1ReservedCounter HasStart() bool - // Step returns uint32, set in PatternFlowIpv4DontFragmentCounter. + // Step returns uint32, set in PatternFlowGtpv1ReservedCounter. Step() uint32 - // SetStep assigns uint32 provided by user to PatternFlowIpv4DontFragmentCounter - SetStep(value uint32) PatternFlowIpv4DontFragmentCounter - // HasStep checks if Step has been set in PatternFlowIpv4DontFragmentCounter + // SetStep assigns uint32 provided by user to PatternFlowGtpv1ReservedCounter + SetStep(value uint32) PatternFlowGtpv1ReservedCounter + // HasStep checks if Step has been set in PatternFlowGtpv1ReservedCounter HasStep() bool - // Count returns uint32, set in PatternFlowIpv4DontFragmentCounter. + // Count returns uint32, set in PatternFlowGtpv1ReservedCounter. Count() uint32 - // SetCount assigns uint32 provided by user to PatternFlowIpv4DontFragmentCounter - SetCount(value uint32) PatternFlowIpv4DontFragmentCounter - // HasCount checks if Count has been set in PatternFlowIpv4DontFragmentCounter + // SetCount assigns uint32 provided by user to PatternFlowGtpv1ReservedCounter + SetCount(value uint32) PatternFlowGtpv1ReservedCounter + // HasCount checks if Count has been set in PatternFlowGtpv1ReservedCounter HasCount() bool } // description is TBD // Start returns a uint32 -func (obj *patternFlowIpv4DontFragmentCounter) Start() uint32 { +func (obj *patternFlowGtpv1ReservedCounter) Start() uint32 { return *obj.obj.Start @@ -197995,13 +241137,13 @@ func (obj *patternFlowIpv4DontFragmentCounter) Start() uint32 { // description is TBD // Start returns a uint32 -func (obj *patternFlowIpv4DontFragmentCounter) HasStart() bool { +func (obj *patternFlowGtpv1ReservedCounter) HasStart() bool { return obj.obj.Start != nil } // description is TBD -// SetStart sets the uint32 value in the PatternFlowIpv4DontFragmentCounter object -func (obj *patternFlowIpv4DontFragmentCounter) SetStart(value uint32) PatternFlowIpv4DontFragmentCounter { +// SetStart sets the uint32 value in the PatternFlowGtpv1ReservedCounter object +func (obj *patternFlowGtpv1ReservedCounter) SetStart(value uint32) PatternFlowGtpv1ReservedCounter { obj.obj.Start = &value return obj @@ -198009,7 +241151,7 @@ func (obj *patternFlowIpv4DontFragmentCounter) SetStart(value uint32) PatternFlo // description is TBD // Step returns a uint32 -func (obj *patternFlowIpv4DontFragmentCounter) Step() uint32 { +func (obj *patternFlowGtpv1ReservedCounter) Step() uint32 { return *obj.obj.Step @@ -198017,13 +241159,13 @@ func (obj *patternFlowIpv4DontFragmentCounter) Step() uint32 { // description is TBD // Step returns a uint32 -func (obj *patternFlowIpv4DontFragmentCounter) HasStep() bool { +func (obj *patternFlowGtpv1ReservedCounter) HasStep() bool { return obj.obj.Step != nil } // description is TBD -// SetStep sets the uint32 value in the PatternFlowIpv4DontFragmentCounter object -func (obj *patternFlowIpv4DontFragmentCounter) SetStep(value uint32) PatternFlowIpv4DontFragmentCounter { +// SetStep sets the uint32 value in the PatternFlowGtpv1ReservedCounter object +func (obj *patternFlowGtpv1ReservedCounter) SetStep(value uint32) PatternFlowGtpv1ReservedCounter { obj.obj.Step = &value return obj @@ -198031,7 +241173,7 @@ func (obj *patternFlowIpv4DontFragmentCounter) SetStep(value uint32) PatternFlow // description is TBD // Count returns a uint32 -func (obj *patternFlowIpv4DontFragmentCounter) Count() uint32 { +func (obj *patternFlowGtpv1ReservedCounter) Count() uint32 { return *obj.obj.Count @@ -198039,19 +241181,19 @@ func (obj *patternFlowIpv4DontFragmentCounter) Count() uint32 { // description is TBD // Count returns a uint32 -func (obj *patternFlowIpv4DontFragmentCounter) HasCount() bool { +func (obj *patternFlowGtpv1ReservedCounter) HasCount() bool { return obj.obj.Count != nil } // description is TBD -// SetCount sets the uint32 value in the PatternFlowIpv4DontFragmentCounter object -func (obj *patternFlowIpv4DontFragmentCounter) SetCount(value uint32) PatternFlowIpv4DontFragmentCounter { +// SetCount sets the uint32 value in the PatternFlowGtpv1ReservedCounter object +func (obj *patternFlowGtpv1ReservedCounter) SetCount(value uint32) PatternFlowGtpv1ReservedCounter { obj.obj.Count = &value return obj } -func (obj *patternFlowIpv4DontFragmentCounter) validateObj(vObj *validation, set_default bool) { +func (obj *patternFlowGtpv1ReservedCounter) validateObj(vObj *validation, set_default bool) { if set_default { obj.setDefault() } @@ -198061,7 +241203,7 @@ func (obj *patternFlowIpv4DontFragmentCounter) validateObj(vObj *validation, set if *obj.obj.Start > 1 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowIpv4DontFragmentCounter.Start <= 1 but Got %d", *obj.obj.Start)) + fmt.Sprintf("0 <= PatternFlowGtpv1ReservedCounter.Start <= 1 but Got %d", *obj.obj.Start)) } } @@ -198071,7 +241213,7 @@ func (obj *patternFlowIpv4DontFragmentCounter) validateObj(vObj *validation, set if *obj.obj.Step > 1 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowIpv4DontFragmentCounter.Step <= 1 but Got %d", *obj.obj.Step)) + fmt.Sprintf("0 <= PatternFlowGtpv1ReservedCounter.Step <= 1 but Got %d", *obj.obj.Step)) } } @@ -198081,14 +241223,14 @@ func (obj *patternFlowIpv4DontFragmentCounter) validateObj(vObj *validation, set if *obj.obj.Count > 1 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowIpv4DontFragmentCounter.Count <= 1 but Got %d", *obj.obj.Count)) + fmt.Sprintf("0 <= PatternFlowGtpv1ReservedCounter.Count <= 1 but Got %d", *obj.obj.Count)) } } } -func (obj *patternFlowIpv4DontFragmentCounter) setDefault() { +func (obj *patternFlowGtpv1ReservedCounter) setDefault() { if obj.obj.Start == nil { obj.SetStart(0) } @@ -198101,29 +241243,29 @@ func (obj *patternFlowIpv4DontFragmentCounter) setDefault() { } -// ***** PatternFlowIpv4DontFragmentMetricTag ***** -type patternFlowIpv4DontFragmentMetricTag struct { +// ***** PatternFlowGtpv1ReservedMetricTag ***** +type patternFlowGtpv1ReservedMetricTag struct { validation - obj *otg.PatternFlowIpv4DontFragmentMetricTag + obj *otg.PatternFlowGtpv1ReservedMetricTag } -func NewPatternFlowIpv4DontFragmentMetricTag() PatternFlowIpv4DontFragmentMetricTag { - obj := patternFlowIpv4DontFragmentMetricTag{obj: &otg.PatternFlowIpv4DontFragmentMetricTag{}} +func NewPatternFlowGtpv1ReservedMetricTag() PatternFlowGtpv1ReservedMetricTag { + obj := patternFlowGtpv1ReservedMetricTag{obj: &otg.PatternFlowGtpv1ReservedMetricTag{}} obj.setDefault() return &obj } -func (obj *patternFlowIpv4DontFragmentMetricTag) Msg() *otg.PatternFlowIpv4DontFragmentMetricTag { +func (obj *patternFlowGtpv1ReservedMetricTag) Msg() *otg.PatternFlowGtpv1ReservedMetricTag { return obj.obj } -func (obj *patternFlowIpv4DontFragmentMetricTag) SetMsg(msg *otg.PatternFlowIpv4DontFragmentMetricTag) PatternFlowIpv4DontFragmentMetricTag { +func (obj *patternFlowGtpv1ReservedMetricTag) SetMsg(msg *otg.PatternFlowGtpv1ReservedMetricTag) PatternFlowGtpv1ReservedMetricTag { proto.Merge(obj.obj, msg) return obj } -func (obj *patternFlowIpv4DontFragmentMetricTag) ToProto() (*otg.PatternFlowIpv4DontFragmentMetricTag, error) { +func (obj *patternFlowGtpv1ReservedMetricTag) ToProto() (*otg.PatternFlowGtpv1ReservedMetricTag, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -198131,7 +241273,7 @@ func (obj *patternFlowIpv4DontFragmentMetricTag) ToProto() (*otg.PatternFlowIpv4 return obj.Msg(), nil } -func (obj *patternFlowIpv4DontFragmentMetricTag) FromProto(msg *otg.PatternFlowIpv4DontFragmentMetricTag) (PatternFlowIpv4DontFragmentMetricTag, error) { +func (obj *patternFlowGtpv1ReservedMetricTag) FromProto(msg *otg.PatternFlowGtpv1ReservedMetricTag) (PatternFlowGtpv1ReservedMetricTag, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -198140,7 +241282,7 @@ func (obj *patternFlowIpv4DontFragmentMetricTag) FromProto(msg *otg.PatternFlowI return newObj, nil } -func (obj *patternFlowIpv4DontFragmentMetricTag) ToPbText() (string, error) { +func (obj *patternFlowGtpv1ReservedMetricTag) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -198152,7 +241294,7 @@ func (obj *patternFlowIpv4DontFragmentMetricTag) ToPbText() (string, error) { return string(protoMarshal), nil } -func (obj *patternFlowIpv4DontFragmentMetricTag) FromPbText(value string) error { +func (obj *patternFlowGtpv1ReservedMetricTag) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj @@ -198165,7 +241307,7 @@ func (obj *patternFlowIpv4DontFragmentMetricTag) FromPbText(value string) error return retObj } -func (obj *patternFlowIpv4DontFragmentMetricTag) ToYaml() (string, error) { +func (obj *patternFlowGtpv1ReservedMetricTag) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -198186,7 +241328,7 @@ func (obj *patternFlowIpv4DontFragmentMetricTag) ToYaml() (string, error) { return string(data), nil } -func (obj *patternFlowIpv4DontFragmentMetricTag) FromYaml(value string) error { +func (obj *patternFlowGtpv1ReservedMetricTag) FromYaml(value string) error { if value == "" { value = "{}" } @@ -198211,7 +241353,7 @@ func (obj *patternFlowIpv4DontFragmentMetricTag) FromYaml(value string) error { return nil } -func (obj *patternFlowIpv4DontFragmentMetricTag) ToJson() (string, error) { +func (obj *patternFlowGtpv1ReservedMetricTag) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -198229,7 +241371,7 @@ func (obj *patternFlowIpv4DontFragmentMetricTag) ToJson() (string, error) { return string(data), nil } -func (obj *patternFlowIpv4DontFragmentMetricTag) FromJson(value string) error { +func (obj *patternFlowGtpv1ReservedMetricTag) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -198250,19 +241392,19 @@ func (obj *patternFlowIpv4DontFragmentMetricTag) FromJson(value string) error { return nil } -func (obj *patternFlowIpv4DontFragmentMetricTag) validateToAndFrom() error { +func (obj *patternFlowGtpv1ReservedMetricTag) validateToAndFrom() error { // emptyVars() obj.validateObj(&obj.validation, true) return obj.validationResult() } -func (obj *patternFlowIpv4DontFragmentMetricTag) Validate() error { +func (obj *patternFlowGtpv1ReservedMetricTag) Validate() error { // emptyVars() obj.validateObj(&obj.validation, false) return obj.validationResult() } -func (obj *patternFlowIpv4DontFragmentMetricTag) String() string { +func (obj *patternFlowGtpv1ReservedMetricTag) String() string { str, err := obj.ToYaml() if err != nil { return err.Error() @@ -198270,12 +241412,12 @@ func (obj *patternFlowIpv4DontFragmentMetricTag) String() string { return str } -func (obj *patternFlowIpv4DontFragmentMetricTag) Clone() (PatternFlowIpv4DontFragmentMetricTag, error) { +func (obj *patternFlowGtpv1ReservedMetricTag) Clone() (PatternFlowGtpv1ReservedMetricTag, error) { vErr := obj.Validate() if vErr != nil { return nil, vErr } - newObj := NewPatternFlowIpv4DontFragmentMetricTag() + newObj := NewPatternFlowGtpv1ReservedMetricTag() data, err := proto.Marshal(obj.Msg()) if err != nil { return nil, err @@ -198287,69 +241429,69 @@ func (obj *patternFlowIpv4DontFragmentMetricTag) Clone() (PatternFlowIpv4DontFra return newObj, nil } -// PatternFlowIpv4DontFragmentMetricTag is metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. -type PatternFlowIpv4DontFragmentMetricTag interface { +// PatternFlowGtpv1ReservedMetricTag is metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. +type PatternFlowGtpv1ReservedMetricTag interface { Validation - // Msg marshals PatternFlowIpv4DontFragmentMetricTag to protobuf object *otg.PatternFlowIpv4DontFragmentMetricTag + // Msg marshals PatternFlowGtpv1ReservedMetricTag to protobuf object *otg.PatternFlowGtpv1ReservedMetricTag // and doesn't set defaults - Msg() *otg.PatternFlowIpv4DontFragmentMetricTag - // SetMsg unmarshals PatternFlowIpv4DontFragmentMetricTag from protobuf object *otg.PatternFlowIpv4DontFragmentMetricTag + Msg() *otg.PatternFlowGtpv1ReservedMetricTag + // SetMsg unmarshals PatternFlowGtpv1ReservedMetricTag from protobuf object *otg.PatternFlowGtpv1ReservedMetricTag // and doesn't set defaults - SetMsg(*otg.PatternFlowIpv4DontFragmentMetricTag) PatternFlowIpv4DontFragmentMetricTag - // ToProto marshals PatternFlowIpv4DontFragmentMetricTag to protobuf object *otg.PatternFlowIpv4DontFragmentMetricTag - ToProto() (*otg.PatternFlowIpv4DontFragmentMetricTag, error) - // ToPbText marshals PatternFlowIpv4DontFragmentMetricTag to protobuf text + SetMsg(*otg.PatternFlowGtpv1ReservedMetricTag) PatternFlowGtpv1ReservedMetricTag + // ToProto marshals PatternFlowGtpv1ReservedMetricTag to protobuf object *otg.PatternFlowGtpv1ReservedMetricTag + ToProto() (*otg.PatternFlowGtpv1ReservedMetricTag, error) + // ToPbText marshals PatternFlowGtpv1ReservedMetricTag to protobuf text ToPbText() (string, error) - // ToYaml marshals PatternFlowIpv4DontFragmentMetricTag to YAML text + // ToYaml marshals PatternFlowGtpv1ReservedMetricTag to YAML text ToYaml() (string, error) - // ToJson marshals PatternFlowIpv4DontFragmentMetricTag to JSON text + // ToJson marshals PatternFlowGtpv1ReservedMetricTag to JSON text ToJson() (string, error) - // FromProto unmarshals PatternFlowIpv4DontFragmentMetricTag from protobuf object *otg.PatternFlowIpv4DontFragmentMetricTag - FromProto(msg *otg.PatternFlowIpv4DontFragmentMetricTag) (PatternFlowIpv4DontFragmentMetricTag, error) - // FromPbText unmarshals PatternFlowIpv4DontFragmentMetricTag from protobuf text + // FromProto unmarshals PatternFlowGtpv1ReservedMetricTag from protobuf object *otg.PatternFlowGtpv1ReservedMetricTag + FromProto(msg *otg.PatternFlowGtpv1ReservedMetricTag) (PatternFlowGtpv1ReservedMetricTag, error) + // FromPbText unmarshals PatternFlowGtpv1ReservedMetricTag from protobuf text FromPbText(value string) error - // FromYaml unmarshals PatternFlowIpv4DontFragmentMetricTag from YAML text + // FromYaml unmarshals PatternFlowGtpv1ReservedMetricTag from YAML text FromYaml(value string) error - // FromJson unmarshals PatternFlowIpv4DontFragmentMetricTag from JSON text + // FromJson unmarshals PatternFlowGtpv1ReservedMetricTag from JSON text FromJson(value string) error - // Validate validates PatternFlowIpv4DontFragmentMetricTag + // Validate validates PatternFlowGtpv1ReservedMetricTag Validate() error // A stringer function String() string // Clones the object - Clone() (PatternFlowIpv4DontFragmentMetricTag, error) + Clone() (PatternFlowGtpv1ReservedMetricTag, error) validateToAndFrom() error validateObj(vObj *validation, set_default bool) setDefault() - // Name returns string, set in PatternFlowIpv4DontFragmentMetricTag. + // Name returns string, set in PatternFlowGtpv1ReservedMetricTag. Name() string - // SetName assigns string provided by user to PatternFlowIpv4DontFragmentMetricTag - SetName(value string) PatternFlowIpv4DontFragmentMetricTag - // Offset returns uint32, set in PatternFlowIpv4DontFragmentMetricTag. + // SetName assigns string provided by user to PatternFlowGtpv1ReservedMetricTag + SetName(value string) PatternFlowGtpv1ReservedMetricTag + // Offset returns uint32, set in PatternFlowGtpv1ReservedMetricTag. Offset() uint32 - // SetOffset assigns uint32 provided by user to PatternFlowIpv4DontFragmentMetricTag - SetOffset(value uint32) PatternFlowIpv4DontFragmentMetricTag - // HasOffset checks if Offset has been set in PatternFlowIpv4DontFragmentMetricTag + // SetOffset assigns uint32 provided by user to PatternFlowGtpv1ReservedMetricTag + SetOffset(value uint32) PatternFlowGtpv1ReservedMetricTag + // HasOffset checks if Offset has been set in PatternFlowGtpv1ReservedMetricTag HasOffset() bool - // Length returns uint32, set in PatternFlowIpv4DontFragmentMetricTag. + // Length returns uint32, set in PatternFlowGtpv1ReservedMetricTag. Length() uint32 - // SetLength assigns uint32 provided by user to PatternFlowIpv4DontFragmentMetricTag - SetLength(value uint32) PatternFlowIpv4DontFragmentMetricTag - // HasLength checks if Length has been set in PatternFlowIpv4DontFragmentMetricTag + // SetLength assigns uint32 provided by user to PatternFlowGtpv1ReservedMetricTag + SetLength(value uint32) PatternFlowGtpv1ReservedMetricTag + // HasLength checks if Length has been set in PatternFlowGtpv1ReservedMetricTag HasLength() bool } // Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field // Name returns a string -func (obj *patternFlowIpv4DontFragmentMetricTag) Name() string { +func (obj *patternFlowGtpv1ReservedMetricTag) Name() string { return *obj.obj.Name } // Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field -// SetName sets the string value in the PatternFlowIpv4DontFragmentMetricTag object -func (obj *patternFlowIpv4DontFragmentMetricTag) SetName(value string) PatternFlowIpv4DontFragmentMetricTag { +// SetName sets the string value in the PatternFlowGtpv1ReservedMetricTag object +func (obj *patternFlowGtpv1ReservedMetricTag) SetName(value string) PatternFlowGtpv1ReservedMetricTag { obj.obj.Name = &value return obj @@ -198357,7 +241499,7 @@ func (obj *patternFlowIpv4DontFragmentMetricTag) SetName(value string) PatternFl // Offset in bits relative to start of corresponding header field // Offset returns a uint32 -func (obj *patternFlowIpv4DontFragmentMetricTag) Offset() uint32 { +func (obj *patternFlowGtpv1ReservedMetricTag) Offset() uint32 { return *obj.obj.Offset @@ -198365,13 +241507,13 @@ func (obj *patternFlowIpv4DontFragmentMetricTag) Offset() uint32 { // Offset in bits relative to start of corresponding header field // Offset returns a uint32 -func (obj *patternFlowIpv4DontFragmentMetricTag) HasOffset() bool { +func (obj *patternFlowGtpv1ReservedMetricTag) HasOffset() bool { return obj.obj.Offset != nil } // Offset in bits relative to start of corresponding header field -// SetOffset sets the uint32 value in the PatternFlowIpv4DontFragmentMetricTag object -func (obj *patternFlowIpv4DontFragmentMetricTag) SetOffset(value uint32) PatternFlowIpv4DontFragmentMetricTag { +// SetOffset sets the uint32 value in the PatternFlowGtpv1ReservedMetricTag object +func (obj *patternFlowGtpv1ReservedMetricTag) SetOffset(value uint32) PatternFlowGtpv1ReservedMetricTag { obj.obj.Offset = &value return obj @@ -198379,7 +241521,7 @@ func (obj *patternFlowIpv4DontFragmentMetricTag) SetOffset(value uint32) Pattern // Number of bits to track for metrics starting from configured offset of corresponding header field // Length returns a uint32 -func (obj *patternFlowIpv4DontFragmentMetricTag) Length() uint32 { +func (obj *patternFlowGtpv1ReservedMetricTag) Length() uint32 { return *obj.obj.Length @@ -198387,26 +241529,26 @@ func (obj *patternFlowIpv4DontFragmentMetricTag) Length() uint32 { // Number of bits to track for metrics starting from configured offset of corresponding header field // Length returns a uint32 -func (obj *patternFlowIpv4DontFragmentMetricTag) HasLength() bool { +func (obj *patternFlowGtpv1ReservedMetricTag) HasLength() bool { return obj.obj.Length != nil } // Number of bits to track for metrics starting from configured offset of corresponding header field -// SetLength sets the uint32 value in the PatternFlowIpv4DontFragmentMetricTag object -func (obj *patternFlowIpv4DontFragmentMetricTag) SetLength(value uint32) PatternFlowIpv4DontFragmentMetricTag { +// SetLength sets the uint32 value in the PatternFlowGtpv1ReservedMetricTag object +func (obj *patternFlowGtpv1ReservedMetricTag) SetLength(value uint32) PatternFlowGtpv1ReservedMetricTag { obj.obj.Length = &value return obj } -func (obj *patternFlowIpv4DontFragmentMetricTag) validateObj(vObj *validation, set_default bool) { +func (obj *patternFlowGtpv1ReservedMetricTag) validateObj(vObj *validation, set_default bool) { if set_default { obj.setDefault() } // Name is required if obj.obj.Name == nil { - vObj.validationErrors = append(vObj.validationErrors, "Name is required field on interface PatternFlowIpv4DontFragmentMetricTag") + vObj.validationErrors = append(vObj.validationErrors, "Name is required field on interface PatternFlowGtpv1ReservedMetricTag") } if obj.obj.Offset != nil { @@ -198414,7 +241556,7 @@ func (obj *patternFlowIpv4DontFragmentMetricTag) validateObj(vObj *validation, s if *obj.obj.Offset > 0 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowIpv4DontFragmentMetricTag.Offset <= 0 but Got %d", *obj.obj.Offset)) + fmt.Sprintf("0 <= PatternFlowGtpv1ReservedMetricTag.Offset <= 0 but Got %d", *obj.obj.Offset)) } } @@ -198424,14 +241566,14 @@ func (obj *patternFlowIpv4DontFragmentMetricTag) validateObj(vObj *validation, s if *obj.obj.Length < 1 || *obj.obj.Length > 1 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("1 <= PatternFlowIpv4DontFragmentMetricTag.Length <= 1 but Got %d", *obj.obj.Length)) + fmt.Sprintf("1 <= PatternFlowGtpv1ReservedMetricTag.Length <= 1 but Got %d", *obj.obj.Length)) } } } -func (obj *patternFlowIpv4DontFragmentMetricTag) setDefault() { +func (obj *patternFlowGtpv1ReservedMetricTag) setDefault() { if obj.obj.Offset == nil { obj.SetOffset(0) } @@ -198441,29 +241583,29 @@ func (obj *patternFlowIpv4DontFragmentMetricTag) setDefault() { } -// ***** PatternFlowIpv4MoreFragmentsCounter ***** -type patternFlowIpv4MoreFragmentsCounter struct { +// ***** PatternFlowGtpv1EFlagCounter ***** +type patternFlowGtpv1EFlagCounter struct { validation - obj *otg.PatternFlowIpv4MoreFragmentsCounter + obj *otg.PatternFlowGtpv1EFlagCounter } -func NewPatternFlowIpv4MoreFragmentsCounter() PatternFlowIpv4MoreFragmentsCounter { - obj := patternFlowIpv4MoreFragmentsCounter{obj: &otg.PatternFlowIpv4MoreFragmentsCounter{}} +func NewPatternFlowGtpv1EFlagCounter() PatternFlowGtpv1EFlagCounter { + obj := patternFlowGtpv1EFlagCounter{obj: &otg.PatternFlowGtpv1EFlagCounter{}} obj.setDefault() return &obj } -func (obj *patternFlowIpv4MoreFragmentsCounter) Msg() *otg.PatternFlowIpv4MoreFragmentsCounter { +func (obj *patternFlowGtpv1EFlagCounter) Msg() *otg.PatternFlowGtpv1EFlagCounter { return obj.obj } -func (obj *patternFlowIpv4MoreFragmentsCounter) SetMsg(msg *otg.PatternFlowIpv4MoreFragmentsCounter) PatternFlowIpv4MoreFragmentsCounter { +func (obj *patternFlowGtpv1EFlagCounter) SetMsg(msg *otg.PatternFlowGtpv1EFlagCounter) PatternFlowGtpv1EFlagCounter { proto.Merge(obj.obj, msg) return obj } -func (obj *patternFlowIpv4MoreFragmentsCounter) ToProto() (*otg.PatternFlowIpv4MoreFragmentsCounter, error) { +func (obj *patternFlowGtpv1EFlagCounter) ToProto() (*otg.PatternFlowGtpv1EFlagCounter, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -198471,7 +241613,7 @@ func (obj *patternFlowIpv4MoreFragmentsCounter) ToProto() (*otg.PatternFlowIpv4M return obj.Msg(), nil } -func (obj *patternFlowIpv4MoreFragmentsCounter) FromProto(msg *otg.PatternFlowIpv4MoreFragmentsCounter) (PatternFlowIpv4MoreFragmentsCounter, error) { +func (obj *patternFlowGtpv1EFlagCounter) FromProto(msg *otg.PatternFlowGtpv1EFlagCounter) (PatternFlowGtpv1EFlagCounter, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -198480,7 +241622,7 @@ func (obj *patternFlowIpv4MoreFragmentsCounter) FromProto(msg *otg.PatternFlowIp return newObj, nil } -func (obj *patternFlowIpv4MoreFragmentsCounter) ToPbText() (string, error) { +func (obj *patternFlowGtpv1EFlagCounter) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -198492,7 +241634,7 @@ func (obj *patternFlowIpv4MoreFragmentsCounter) ToPbText() (string, error) { return string(protoMarshal), nil } -func (obj *patternFlowIpv4MoreFragmentsCounter) FromPbText(value string) error { +func (obj *patternFlowGtpv1EFlagCounter) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj @@ -198505,7 +241647,7 @@ func (obj *patternFlowIpv4MoreFragmentsCounter) FromPbText(value string) error { return retObj } -func (obj *patternFlowIpv4MoreFragmentsCounter) ToYaml() (string, error) { +func (obj *patternFlowGtpv1EFlagCounter) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -198526,7 +241668,7 @@ func (obj *patternFlowIpv4MoreFragmentsCounter) ToYaml() (string, error) { return string(data), nil } -func (obj *patternFlowIpv4MoreFragmentsCounter) FromYaml(value string) error { +func (obj *patternFlowGtpv1EFlagCounter) FromYaml(value string) error { if value == "" { value = "{}" } @@ -198551,7 +241693,7 @@ func (obj *patternFlowIpv4MoreFragmentsCounter) FromYaml(value string) error { return nil } -func (obj *patternFlowIpv4MoreFragmentsCounter) ToJson() (string, error) { +func (obj *patternFlowGtpv1EFlagCounter) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -198569,7 +241711,7 @@ func (obj *patternFlowIpv4MoreFragmentsCounter) ToJson() (string, error) { return string(data), nil } -func (obj *patternFlowIpv4MoreFragmentsCounter) FromJson(value string) error { +func (obj *patternFlowGtpv1EFlagCounter) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -198590,19 +241732,19 @@ func (obj *patternFlowIpv4MoreFragmentsCounter) FromJson(value string) error { return nil } -func (obj *patternFlowIpv4MoreFragmentsCounter) validateToAndFrom() error { +func (obj *patternFlowGtpv1EFlagCounter) validateToAndFrom() error { // emptyVars() obj.validateObj(&obj.validation, true) return obj.validationResult() } -func (obj *patternFlowIpv4MoreFragmentsCounter) Validate() error { +func (obj *patternFlowGtpv1EFlagCounter) Validate() error { // emptyVars() obj.validateObj(&obj.validation, false) return obj.validationResult() } -func (obj *patternFlowIpv4MoreFragmentsCounter) String() string { +func (obj *patternFlowGtpv1EFlagCounter) String() string { str, err := obj.ToYaml() if err != nil { return err.Error() @@ -198610,12 +241752,12 @@ func (obj *patternFlowIpv4MoreFragmentsCounter) String() string { return str } -func (obj *patternFlowIpv4MoreFragmentsCounter) Clone() (PatternFlowIpv4MoreFragmentsCounter, error) { +func (obj *patternFlowGtpv1EFlagCounter) Clone() (PatternFlowGtpv1EFlagCounter, error) { vErr := obj.Validate() if vErr != nil { return nil, vErr } - newObj := NewPatternFlowIpv4MoreFragmentsCounter() + newObj := NewPatternFlowGtpv1EFlagCounter() data, err := proto.Marshal(obj.Msg()) if err != nil { return nil, err @@ -198627,63 +241769,63 @@ func (obj *patternFlowIpv4MoreFragmentsCounter) Clone() (PatternFlowIpv4MoreFrag return newObj, nil } -// PatternFlowIpv4MoreFragmentsCounter is integer counter pattern -type PatternFlowIpv4MoreFragmentsCounter interface { +// PatternFlowGtpv1EFlagCounter is integer counter pattern +type PatternFlowGtpv1EFlagCounter interface { Validation - // Msg marshals PatternFlowIpv4MoreFragmentsCounter to protobuf object *otg.PatternFlowIpv4MoreFragmentsCounter + // Msg marshals PatternFlowGtpv1EFlagCounter to protobuf object *otg.PatternFlowGtpv1EFlagCounter // and doesn't set defaults - Msg() *otg.PatternFlowIpv4MoreFragmentsCounter - // SetMsg unmarshals PatternFlowIpv4MoreFragmentsCounter from protobuf object *otg.PatternFlowIpv4MoreFragmentsCounter + Msg() *otg.PatternFlowGtpv1EFlagCounter + // SetMsg unmarshals PatternFlowGtpv1EFlagCounter from protobuf object *otg.PatternFlowGtpv1EFlagCounter // and doesn't set defaults - SetMsg(*otg.PatternFlowIpv4MoreFragmentsCounter) PatternFlowIpv4MoreFragmentsCounter - // ToProto marshals PatternFlowIpv4MoreFragmentsCounter to protobuf object *otg.PatternFlowIpv4MoreFragmentsCounter - ToProto() (*otg.PatternFlowIpv4MoreFragmentsCounter, error) - // ToPbText marshals PatternFlowIpv4MoreFragmentsCounter to protobuf text + SetMsg(*otg.PatternFlowGtpv1EFlagCounter) PatternFlowGtpv1EFlagCounter + // ToProto marshals PatternFlowGtpv1EFlagCounter to protobuf object *otg.PatternFlowGtpv1EFlagCounter + ToProto() (*otg.PatternFlowGtpv1EFlagCounter, error) + // ToPbText marshals PatternFlowGtpv1EFlagCounter to protobuf text ToPbText() (string, error) - // ToYaml marshals PatternFlowIpv4MoreFragmentsCounter to YAML text + // ToYaml marshals PatternFlowGtpv1EFlagCounter to YAML text ToYaml() (string, error) - // ToJson marshals PatternFlowIpv4MoreFragmentsCounter to JSON text + // ToJson marshals PatternFlowGtpv1EFlagCounter to JSON text ToJson() (string, error) - // FromProto unmarshals PatternFlowIpv4MoreFragmentsCounter from protobuf object *otg.PatternFlowIpv4MoreFragmentsCounter - FromProto(msg *otg.PatternFlowIpv4MoreFragmentsCounter) (PatternFlowIpv4MoreFragmentsCounter, error) - // FromPbText unmarshals PatternFlowIpv4MoreFragmentsCounter from protobuf text + // FromProto unmarshals PatternFlowGtpv1EFlagCounter from protobuf object *otg.PatternFlowGtpv1EFlagCounter + FromProto(msg *otg.PatternFlowGtpv1EFlagCounter) (PatternFlowGtpv1EFlagCounter, error) + // FromPbText unmarshals PatternFlowGtpv1EFlagCounter from protobuf text FromPbText(value string) error - // FromYaml unmarshals PatternFlowIpv4MoreFragmentsCounter from YAML text + // FromYaml unmarshals PatternFlowGtpv1EFlagCounter from YAML text FromYaml(value string) error - // FromJson unmarshals PatternFlowIpv4MoreFragmentsCounter from JSON text + // FromJson unmarshals PatternFlowGtpv1EFlagCounter from JSON text FromJson(value string) error - // Validate validates PatternFlowIpv4MoreFragmentsCounter + // Validate validates PatternFlowGtpv1EFlagCounter Validate() error // A stringer function String() string // Clones the object - Clone() (PatternFlowIpv4MoreFragmentsCounter, error) + Clone() (PatternFlowGtpv1EFlagCounter, error) validateToAndFrom() error validateObj(vObj *validation, set_default bool) setDefault() - // Start returns uint32, set in PatternFlowIpv4MoreFragmentsCounter. + // Start returns uint32, set in PatternFlowGtpv1EFlagCounter. Start() uint32 - // SetStart assigns uint32 provided by user to PatternFlowIpv4MoreFragmentsCounter - SetStart(value uint32) PatternFlowIpv4MoreFragmentsCounter - // HasStart checks if Start has been set in PatternFlowIpv4MoreFragmentsCounter + // SetStart assigns uint32 provided by user to PatternFlowGtpv1EFlagCounter + SetStart(value uint32) PatternFlowGtpv1EFlagCounter + // HasStart checks if Start has been set in PatternFlowGtpv1EFlagCounter HasStart() bool - // Step returns uint32, set in PatternFlowIpv4MoreFragmentsCounter. + // Step returns uint32, set in PatternFlowGtpv1EFlagCounter. Step() uint32 - // SetStep assigns uint32 provided by user to PatternFlowIpv4MoreFragmentsCounter - SetStep(value uint32) PatternFlowIpv4MoreFragmentsCounter - // HasStep checks if Step has been set in PatternFlowIpv4MoreFragmentsCounter + // SetStep assigns uint32 provided by user to PatternFlowGtpv1EFlagCounter + SetStep(value uint32) PatternFlowGtpv1EFlagCounter + // HasStep checks if Step has been set in PatternFlowGtpv1EFlagCounter HasStep() bool - // Count returns uint32, set in PatternFlowIpv4MoreFragmentsCounter. + // Count returns uint32, set in PatternFlowGtpv1EFlagCounter. Count() uint32 - // SetCount assigns uint32 provided by user to PatternFlowIpv4MoreFragmentsCounter - SetCount(value uint32) PatternFlowIpv4MoreFragmentsCounter - // HasCount checks if Count has been set in PatternFlowIpv4MoreFragmentsCounter + // SetCount assigns uint32 provided by user to PatternFlowGtpv1EFlagCounter + SetCount(value uint32) PatternFlowGtpv1EFlagCounter + // HasCount checks if Count has been set in PatternFlowGtpv1EFlagCounter HasCount() bool } // description is TBD // Start returns a uint32 -func (obj *patternFlowIpv4MoreFragmentsCounter) Start() uint32 { +func (obj *patternFlowGtpv1EFlagCounter) Start() uint32 { return *obj.obj.Start @@ -198691,13 +241833,13 @@ func (obj *patternFlowIpv4MoreFragmentsCounter) Start() uint32 { // description is TBD // Start returns a uint32 -func (obj *patternFlowIpv4MoreFragmentsCounter) HasStart() bool { +func (obj *patternFlowGtpv1EFlagCounter) HasStart() bool { return obj.obj.Start != nil } // description is TBD -// SetStart sets the uint32 value in the PatternFlowIpv4MoreFragmentsCounter object -func (obj *patternFlowIpv4MoreFragmentsCounter) SetStart(value uint32) PatternFlowIpv4MoreFragmentsCounter { +// SetStart sets the uint32 value in the PatternFlowGtpv1EFlagCounter object +func (obj *patternFlowGtpv1EFlagCounter) SetStart(value uint32) PatternFlowGtpv1EFlagCounter { obj.obj.Start = &value return obj @@ -198705,7 +241847,7 @@ func (obj *patternFlowIpv4MoreFragmentsCounter) SetStart(value uint32) PatternFl // description is TBD // Step returns a uint32 -func (obj *patternFlowIpv4MoreFragmentsCounter) Step() uint32 { +func (obj *patternFlowGtpv1EFlagCounter) Step() uint32 { return *obj.obj.Step @@ -198713,13 +241855,13 @@ func (obj *patternFlowIpv4MoreFragmentsCounter) Step() uint32 { // description is TBD // Step returns a uint32 -func (obj *patternFlowIpv4MoreFragmentsCounter) HasStep() bool { +func (obj *patternFlowGtpv1EFlagCounter) HasStep() bool { return obj.obj.Step != nil } // description is TBD -// SetStep sets the uint32 value in the PatternFlowIpv4MoreFragmentsCounter object -func (obj *patternFlowIpv4MoreFragmentsCounter) SetStep(value uint32) PatternFlowIpv4MoreFragmentsCounter { +// SetStep sets the uint32 value in the PatternFlowGtpv1EFlagCounter object +func (obj *patternFlowGtpv1EFlagCounter) SetStep(value uint32) PatternFlowGtpv1EFlagCounter { obj.obj.Step = &value return obj @@ -198727,7 +241869,7 @@ func (obj *patternFlowIpv4MoreFragmentsCounter) SetStep(value uint32) PatternFlo // description is TBD // Count returns a uint32 -func (obj *patternFlowIpv4MoreFragmentsCounter) Count() uint32 { +func (obj *patternFlowGtpv1EFlagCounter) Count() uint32 { return *obj.obj.Count @@ -198735,19 +241877,19 @@ func (obj *patternFlowIpv4MoreFragmentsCounter) Count() uint32 { // description is TBD // Count returns a uint32 -func (obj *patternFlowIpv4MoreFragmentsCounter) HasCount() bool { +func (obj *patternFlowGtpv1EFlagCounter) HasCount() bool { return obj.obj.Count != nil } // description is TBD -// SetCount sets the uint32 value in the PatternFlowIpv4MoreFragmentsCounter object -func (obj *patternFlowIpv4MoreFragmentsCounter) SetCount(value uint32) PatternFlowIpv4MoreFragmentsCounter { +// SetCount sets the uint32 value in the PatternFlowGtpv1EFlagCounter object +func (obj *patternFlowGtpv1EFlagCounter) SetCount(value uint32) PatternFlowGtpv1EFlagCounter { obj.obj.Count = &value return obj } -func (obj *patternFlowIpv4MoreFragmentsCounter) validateObj(vObj *validation, set_default bool) { +func (obj *patternFlowGtpv1EFlagCounter) validateObj(vObj *validation, set_default bool) { if set_default { obj.setDefault() } @@ -198757,7 +241899,7 @@ func (obj *patternFlowIpv4MoreFragmentsCounter) validateObj(vObj *validation, se if *obj.obj.Start > 1 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowIpv4MoreFragmentsCounter.Start <= 1 but Got %d", *obj.obj.Start)) + fmt.Sprintf("0 <= PatternFlowGtpv1EFlagCounter.Start <= 1 but Got %d", *obj.obj.Start)) } } @@ -198767,7 +241909,7 @@ func (obj *patternFlowIpv4MoreFragmentsCounter) validateObj(vObj *validation, se if *obj.obj.Step > 1 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowIpv4MoreFragmentsCounter.Step <= 1 but Got %d", *obj.obj.Step)) + fmt.Sprintf("0 <= PatternFlowGtpv1EFlagCounter.Step <= 1 but Got %d", *obj.obj.Step)) } } @@ -198777,14 +241919,14 @@ func (obj *patternFlowIpv4MoreFragmentsCounter) validateObj(vObj *validation, se if *obj.obj.Count > 1 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowIpv4MoreFragmentsCounter.Count <= 1 but Got %d", *obj.obj.Count)) + fmt.Sprintf("0 <= PatternFlowGtpv1EFlagCounter.Count <= 1 but Got %d", *obj.obj.Count)) } } } -func (obj *patternFlowIpv4MoreFragmentsCounter) setDefault() { +func (obj *patternFlowGtpv1EFlagCounter) setDefault() { if obj.obj.Start == nil { obj.SetStart(0) } @@ -198797,29 +241939,29 @@ func (obj *patternFlowIpv4MoreFragmentsCounter) setDefault() { } -// ***** PatternFlowIpv4MoreFragmentsMetricTag ***** -type patternFlowIpv4MoreFragmentsMetricTag struct { +// ***** PatternFlowGtpv1EFlagMetricTag ***** +type patternFlowGtpv1EFlagMetricTag struct { validation - obj *otg.PatternFlowIpv4MoreFragmentsMetricTag + obj *otg.PatternFlowGtpv1EFlagMetricTag } -func NewPatternFlowIpv4MoreFragmentsMetricTag() PatternFlowIpv4MoreFragmentsMetricTag { - obj := patternFlowIpv4MoreFragmentsMetricTag{obj: &otg.PatternFlowIpv4MoreFragmentsMetricTag{}} +func NewPatternFlowGtpv1EFlagMetricTag() PatternFlowGtpv1EFlagMetricTag { + obj := patternFlowGtpv1EFlagMetricTag{obj: &otg.PatternFlowGtpv1EFlagMetricTag{}} obj.setDefault() return &obj } -func (obj *patternFlowIpv4MoreFragmentsMetricTag) Msg() *otg.PatternFlowIpv4MoreFragmentsMetricTag { +func (obj *patternFlowGtpv1EFlagMetricTag) Msg() *otg.PatternFlowGtpv1EFlagMetricTag { return obj.obj } -func (obj *patternFlowIpv4MoreFragmentsMetricTag) SetMsg(msg *otg.PatternFlowIpv4MoreFragmentsMetricTag) PatternFlowIpv4MoreFragmentsMetricTag { +func (obj *patternFlowGtpv1EFlagMetricTag) SetMsg(msg *otg.PatternFlowGtpv1EFlagMetricTag) PatternFlowGtpv1EFlagMetricTag { proto.Merge(obj.obj, msg) return obj } -func (obj *patternFlowIpv4MoreFragmentsMetricTag) ToProto() (*otg.PatternFlowIpv4MoreFragmentsMetricTag, error) { +func (obj *patternFlowGtpv1EFlagMetricTag) ToProto() (*otg.PatternFlowGtpv1EFlagMetricTag, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -198827,7 +241969,7 @@ func (obj *patternFlowIpv4MoreFragmentsMetricTag) ToProto() (*otg.PatternFlowIpv return obj.Msg(), nil } -func (obj *patternFlowIpv4MoreFragmentsMetricTag) FromProto(msg *otg.PatternFlowIpv4MoreFragmentsMetricTag) (PatternFlowIpv4MoreFragmentsMetricTag, error) { +func (obj *patternFlowGtpv1EFlagMetricTag) FromProto(msg *otg.PatternFlowGtpv1EFlagMetricTag) (PatternFlowGtpv1EFlagMetricTag, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -198836,7 +241978,7 @@ func (obj *patternFlowIpv4MoreFragmentsMetricTag) FromProto(msg *otg.PatternFlow return newObj, nil } -func (obj *patternFlowIpv4MoreFragmentsMetricTag) ToPbText() (string, error) { +func (obj *patternFlowGtpv1EFlagMetricTag) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -198848,7 +241990,7 @@ func (obj *patternFlowIpv4MoreFragmentsMetricTag) ToPbText() (string, error) { return string(protoMarshal), nil } -func (obj *patternFlowIpv4MoreFragmentsMetricTag) FromPbText(value string) error { +func (obj *patternFlowGtpv1EFlagMetricTag) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj @@ -198861,7 +242003,7 @@ func (obj *patternFlowIpv4MoreFragmentsMetricTag) FromPbText(value string) error return retObj } -func (obj *patternFlowIpv4MoreFragmentsMetricTag) ToYaml() (string, error) { +func (obj *patternFlowGtpv1EFlagMetricTag) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -198882,7 +242024,7 @@ func (obj *patternFlowIpv4MoreFragmentsMetricTag) ToYaml() (string, error) { return string(data), nil } -func (obj *patternFlowIpv4MoreFragmentsMetricTag) FromYaml(value string) error { +func (obj *patternFlowGtpv1EFlagMetricTag) FromYaml(value string) error { if value == "" { value = "{}" } @@ -198907,7 +242049,7 @@ func (obj *patternFlowIpv4MoreFragmentsMetricTag) FromYaml(value string) error { return nil } -func (obj *patternFlowIpv4MoreFragmentsMetricTag) ToJson() (string, error) { +func (obj *patternFlowGtpv1EFlagMetricTag) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -198925,7 +242067,7 @@ func (obj *patternFlowIpv4MoreFragmentsMetricTag) ToJson() (string, error) { return string(data), nil } -func (obj *patternFlowIpv4MoreFragmentsMetricTag) FromJson(value string) error { +func (obj *patternFlowGtpv1EFlagMetricTag) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -198946,19 +242088,19 @@ func (obj *patternFlowIpv4MoreFragmentsMetricTag) FromJson(value string) error { return nil } -func (obj *patternFlowIpv4MoreFragmentsMetricTag) validateToAndFrom() error { +func (obj *patternFlowGtpv1EFlagMetricTag) validateToAndFrom() error { // emptyVars() obj.validateObj(&obj.validation, true) return obj.validationResult() } -func (obj *patternFlowIpv4MoreFragmentsMetricTag) Validate() error { +func (obj *patternFlowGtpv1EFlagMetricTag) Validate() error { // emptyVars() obj.validateObj(&obj.validation, false) return obj.validationResult() } -func (obj *patternFlowIpv4MoreFragmentsMetricTag) String() string { +func (obj *patternFlowGtpv1EFlagMetricTag) String() string { str, err := obj.ToYaml() if err != nil { return err.Error() @@ -198966,12 +242108,12 @@ func (obj *patternFlowIpv4MoreFragmentsMetricTag) String() string { return str } -func (obj *patternFlowIpv4MoreFragmentsMetricTag) Clone() (PatternFlowIpv4MoreFragmentsMetricTag, error) { +func (obj *patternFlowGtpv1EFlagMetricTag) Clone() (PatternFlowGtpv1EFlagMetricTag, error) { vErr := obj.Validate() if vErr != nil { return nil, vErr } - newObj := NewPatternFlowIpv4MoreFragmentsMetricTag() + newObj := NewPatternFlowGtpv1EFlagMetricTag() data, err := proto.Marshal(obj.Msg()) if err != nil { return nil, err @@ -198983,69 +242125,69 @@ func (obj *patternFlowIpv4MoreFragmentsMetricTag) Clone() (PatternFlowIpv4MoreFr return newObj, nil } -// PatternFlowIpv4MoreFragmentsMetricTag is metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. -type PatternFlowIpv4MoreFragmentsMetricTag interface { +// PatternFlowGtpv1EFlagMetricTag is metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. +type PatternFlowGtpv1EFlagMetricTag interface { Validation - // Msg marshals PatternFlowIpv4MoreFragmentsMetricTag to protobuf object *otg.PatternFlowIpv4MoreFragmentsMetricTag + // Msg marshals PatternFlowGtpv1EFlagMetricTag to protobuf object *otg.PatternFlowGtpv1EFlagMetricTag // and doesn't set defaults - Msg() *otg.PatternFlowIpv4MoreFragmentsMetricTag - // SetMsg unmarshals PatternFlowIpv4MoreFragmentsMetricTag from protobuf object *otg.PatternFlowIpv4MoreFragmentsMetricTag + Msg() *otg.PatternFlowGtpv1EFlagMetricTag + // SetMsg unmarshals PatternFlowGtpv1EFlagMetricTag from protobuf object *otg.PatternFlowGtpv1EFlagMetricTag // and doesn't set defaults - SetMsg(*otg.PatternFlowIpv4MoreFragmentsMetricTag) PatternFlowIpv4MoreFragmentsMetricTag - // ToProto marshals PatternFlowIpv4MoreFragmentsMetricTag to protobuf object *otg.PatternFlowIpv4MoreFragmentsMetricTag - ToProto() (*otg.PatternFlowIpv4MoreFragmentsMetricTag, error) - // ToPbText marshals PatternFlowIpv4MoreFragmentsMetricTag to protobuf text + SetMsg(*otg.PatternFlowGtpv1EFlagMetricTag) PatternFlowGtpv1EFlagMetricTag + // ToProto marshals PatternFlowGtpv1EFlagMetricTag to protobuf object *otg.PatternFlowGtpv1EFlagMetricTag + ToProto() (*otg.PatternFlowGtpv1EFlagMetricTag, error) + // ToPbText marshals PatternFlowGtpv1EFlagMetricTag to protobuf text ToPbText() (string, error) - // ToYaml marshals PatternFlowIpv4MoreFragmentsMetricTag to YAML text + // ToYaml marshals PatternFlowGtpv1EFlagMetricTag to YAML text ToYaml() (string, error) - // ToJson marshals PatternFlowIpv4MoreFragmentsMetricTag to JSON text + // ToJson marshals PatternFlowGtpv1EFlagMetricTag to JSON text ToJson() (string, error) - // FromProto unmarshals PatternFlowIpv4MoreFragmentsMetricTag from protobuf object *otg.PatternFlowIpv4MoreFragmentsMetricTag - FromProto(msg *otg.PatternFlowIpv4MoreFragmentsMetricTag) (PatternFlowIpv4MoreFragmentsMetricTag, error) - // FromPbText unmarshals PatternFlowIpv4MoreFragmentsMetricTag from protobuf text + // FromProto unmarshals PatternFlowGtpv1EFlagMetricTag from protobuf object *otg.PatternFlowGtpv1EFlagMetricTag + FromProto(msg *otg.PatternFlowGtpv1EFlagMetricTag) (PatternFlowGtpv1EFlagMetricTag, error) + // FromPbText unmarshals PatternFlowGtpv1EFlagMetricTag from protobuf text FromPbText(value string) error - // FromYaml unmarshals PatternFlowIpv4MoreFragmentsMetricTag from YAML text + // FromYaml unmarshals PatternFlowGtpv1EFlagMetricTag from YAML text FromYaml(value string) error - // FromJson unmarshals PatternFlowIpv4MoreFragmentsMetricTag from JSON text + // FromJson unmarshals PatternFlowGtpv1EFlagMetricTag from JSON text FromJson(value string) error - // Validate validates PatternFlowIpv4MoreFragmentsMetricTag + // Validate validates PatternFlowGtpv1EFlagMetricTag Validate() error // A stringer function String() string // Clones the object - Clone() (PatternFlowIpv4MoreFragmentsMetricTag, error) + Clone() (PatternFlowGtpv1EFlagMetricTag, error) validateToAndFrom() error validateObj(vObj *validation, set_default bool) setDefault() - // Name returns string, set in PatternFlowIpv4MoreFragmentsMetricTag. + // Name returns string, set in PatternFlowGtpv1EFlagMetricTag. Name() string - // SetName assigns string provided by user to PatternFlowIpv4MoreFragmentsMetricTag - SetName(value string) PatternFlowIpv4MoreFragmentsMetricTag - // Offset returns uint32, set in PatternFlowIpv4MoreFragmentsMetricTag. + // SetName assigns string provided by user to PatternFlowGtpv1EFlagMetricTag + SetName(value string) PatternFlowGtpv1EFlagMetricTag + // Offset returns uint32, set in PatternFlowGtpv1EFlagMetricTag. Offset() uint32 - // SetOffset assigns uint32 provided by user to PatternFlowIpv4MoreFragmentsMetricTag - SetOffset(value uint32) PatternFlowIpv4MoreFragmentsMetricTag - // HasOffset checks if Offset has been set in PatternFlowIpv4MoreFragmentsMetricTag + // SetOffset assigns uint32 provided by user to PatternFlowGtpv1EFlagMetricTag + SetOffset(value uint32) PatternFlowGtpv1EFlagMetricTag + // HasOffset checks if Offset has been set in PatternFlowGtpv1EFlagMetricTag HasOffset() bool - // Length returns uint32, set in PatternFlowIpv4MoreFragmentsMetricTag. + // Length returns uint32, set in PatternFlowGtpv1EFlagMetricTag. Length() uint32 - // SetLength assigns uint32 provided by user to PatternFlowIpv4MoreFragmentsMetricTag - SetLength(value uint32) PatternFlowIpv4MoreFragmentsMetricTag - // HasLength checks if Length has been set in PatternFlowIpv4MoreFragmentsMetricTag + // SetLength assigns uint32 provided by user to PatternFlowGtpv1EFlagMetricTag + SetLength(value uint32) PatternFlowGtpv1EFlagMetricTag + // HasLength checks if Length has been set in PatternFlowGtpv1EFlagMetricTag HasLength() bool } // Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field // Name returns a string -func (obj *patternFlowIpv4MoreFragmentsMetricTag) Name() string { +func (obj *patternFlowGtpv1EFlagMetricTag) Name() string { return *obj.obj.Name } // Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field -// SetName sets the string value in the PatternFlowIpv4MoreFragmentsMetricTag object -func (obj *patternFlowIpv4MoreFragmentsMetricTag) SetName(value string) PatternFlowIpv4MoreFragmentsMetricTag { +// SetName sets the string value in the PatternFlowGtpv1EFlagMetricTag object +func (obj *patternFlowGtpv1EFlagMetricTag) SetName(value string) PatternFlowGtpv1EFlagMetricTag { obj.obj.Name = &value return obj @@ -199053,7 +242195,7 @@ func (obj *patternFlowIpv4MoreFragmentsMetricTag) SetName(value string) PatternF // Offset in bits relative to start of corresponding header field // Offset returns a uint32 -func (obj *patternFlowIpv4MoreFragmentsMetricTag) Offset() uint32 { +func (obj *patternFlowGtpv1EFlagMetricTag) Offset() uint32 { return *obj.obj.Offset @@ -199061,13 +242203,13 @@ func (obj *patternFlowIpv4MoreFragmentsMetricTag) Offset() uint32 { // Offset in bits relative to start of corresponding header field // Offset returns a uint32 -func (obj *patternFlowIpv4MoreFragmentsMetricTag) HasOffset() bool { +func (obj *patternFlowGtpv1EFlagMetricTag) HasOffset() bool { return obj.obj.Offset != nil } // Offset in bits relative to start of corresponding header field -// SetOffset sets the uint32 value in the PatternFlowIpv4MoreFragmentsMetricTag object -func (obj *patternFlowIpv4MoreFragmentsMetricTag) SetOffset(value uint32) PatternFlowIpv4MoreFragmentsMetricTag { +// SetOffset sets the uint32 value in the PatternFlowGtpv1EFlagMetricTag object +func (obj *patternFlowGtpv1EFlagMetricTag) SetOffset(value uint32) PatternFlowGtpv1EFlagMetricTag { obj.obj.Offset = &value return obj @@ -199075,7 +242217,7 @@ func (obj *patternFlowIpv4MoreFragmentsMetricTag) SetOffset(value uint32) Patter // Number of bits to track for metrics starting from configured offset of corresponding header field // Length returns a uint32 -func (obj *patternFlowIpv4MoreFragmentsMetricTag) Length() uint32 { +func (obj *patternFlowGtpv1EFlagMetricTag) Length() uint32 { return *obj.obj.Length @@ -199083,26 +242225,26 @@ func (obj *patternFlowIpv4MoreFragmentsMetricTag) Length() uint32 { // Number of bits to track for metrics starting from configured offset of corresponding header field // Length returns a uint32 -func (obj *patternFlowIpv4MoreFragmentsMetricTag) HasLength() bool { +func (obj *patternFlowGtpv1EFlagMetricTag) HasLength() bool { return obj.obj.Length != nil } // Number of bits to track for metrics starting from configured offset of corresponding header field -// SetLength sets the uint32 value in the PatternFlowIpv4MoreFragmentsMetricTag object -func (obj *patternFlowIpv4MoreFragmentsMetricTag) SetLength(value uint32) PatternFlowIpv4MoreFragmentsMetricTag { +// SetLength sets the uint32 value in the PatternFlowGtpv1EFlagMetricTag object +func (obj *patternFlowGtpv1EFlagMetricTag) SetLength(value uint32) PatternFlowGtpv1EFlagMetricTag { obj.obj.Length = &value return obj } -func (obj *patternFlowIpv4MoreFragmentsMetricTag) validateObj(vObj *validation, set_default bool) { +func (obj *patternFlowGtpv1EFlagMetricTag) validateObj(vObj *validation, set_default bool) { if set_default { obj.setDefault() } // Name is required if obj.obj.Name == nil { - vObj.validationErrors = append(vObj.validationErrors, "Name is required field on interface PatternFlowIpv4MoreFragmentsMetricTag") + vObj.validationErrors = append(vObj.validationErrors, "Name is required field on interface PatternFlowGtpv1EFlagMetricTag") } if obj.obj.Offset != nil { @@ -199110,7 +242252,7 @@ func (obj *patternFlowIpv4MoreFragmentsMetricTag) validateObj(vObj *validation, if *obj.obj.Offset > 0 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowIpv4MoreFragmentsMetricTag.Offset <= 0 but Got %d", *obj.obj.Offset)) + fmt.Sprintf("0 <= PatternFlowGtpv1EFlagMetricTag.Offset <= 0 but Got %d", *obj.obj.Offset)) } } @@ -199120,14 +242262,14 @@ func (obj *patternFlowIpv4MoreFragmentsMetricTag) validateObj(vObj *validation, if *obj.obj.Length < 1 || *obj.obj.Length > 1 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("1 <= PatternFlowIpv4MoreFragmentsMetricTag.Length <= 1 but Got %d", *obj.obj.Length)) + fmt.Sprintf("1 <= PatternFlowGtpv1EFlagMetricTag.Length <= 1 but Got %d", *obj.obj.Length)) } } } -func (obj *patternFlowIpv4MoreFragmentsMetricTag) setDefault() { +func (obj *patternFlowGtpv1EFlagMetricTag) setDefault() { if obj.obj.Offset == nil { obj.SetOffset(0) } @@ -199137,29 +242279,29 @@ func (obj *patternFlowIpv4MoreFragmentsMetricTag) setDefault() { } -// ***** PatternFlowIpv4FragmentOffsetCounter ***** -type patternFlowIpv4FragmentOffsetCounter struct { +// ***** PatternFlowGtpv1SFlagCounter ***** +type patternFlowGtpv1SFlagCounter struct { validation - obj *otg.PatternFlowIpv4FragmentOffsetCounter + obj *otg.PatternFlowGtpv1SFlagCounter } -func NewPatternFlowIpv4FragmentOffsetCounter() PatternFlowIpv4FragmentOffsetCounter { - obj := patternFlowIpv4FragmentOffsetCounter{obj: &otg.PatternFlowIpv4FragmentOffsetCounter{}} +func NewPatternFlowGtpv1SFlagCounter() PatternFlowGtpv1SFlagCounter { + obj := patternFlowGtpv1SFlagCounter{obj: &otg.PatternFlowGtpv1SFlagCounter{}} obj.setDefault() return &obj } -func (obj *patternFlowIpv4FragmentOffsetCounter) Msg() *otg.PatternFlowIpv4FragmentOffsetCounter { +func (obj *patternFlowGtpv1SFlagCounter) Msg() *otg.PatternFlowGtpv1SFlagCounter { return obj.obj } -func (obj *patternFlowIpv4FragmentOffsetCounter) SetMsg(msg *otg.PatternFlowIpv4FragmentOffsetCounter) PatternFlowIpv4FragmentOffsetCounter { +func (obj *patternFlowGtpv1SFlagCounter) SetMsg(msg *otg.PatternFlowGtpv1SFlagCounter) PatternFlowGtpv1SFlagCounter { proto.Merge(obj.obj, msg) return obj } -func (obj *patternFlowIpv4FragmentOffsetCounter) ToProto() (*otg.PatternFlowIpv4FragmentOffsetCounter, error) { +func (obj *patternFlowGtpv1SFlagCounter) ToProto() (*otg.PatternFlowGtpv1SFlagCounter, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -199167,7 +242309,7 @@ func (obj *patternFlowIpv4FragmentOffsetCounter) ToProto() (*otg.PatternFlowIpv4 return obj.Msg(), nil } -func (obj *patternFlowIpv4FragmentOffsetCounter) FromProto(msg *otg.PatternFlowIpv4FragmentOffsetCounter) (PatternFlowIpv4FragmentOffsetCounter, error) { +func (obj *patternFlowGtpv1SFlagCounter) FromProto(msg *otg.PatternFlowGtpv1SFlagCounter) (PatternFlowGtpv1SFlagCounter, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -199176,7 +242318,7 @@ func (obj *patternFlowIpv4FragmentOffsetCounter) FromProto(msg *otg.PatternFlowI return newObj, nil } -func (obj *patternFlowIpv4FragmentOffsetCounter) ToPbText() (string, error) { +func (obj *patternFlowGtpv1SFlagCounter) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -199188,7 +242330,7 @@ func (obj *patternFlowIpv4FragmentOffsetCounter) ToPbText() (string, error) { return string(protoMarshal), nil } -func (obj *patternFlowIpv4FragmentOffsetCounter) FromPbText(value string) error { +func (obj *patternFlowGtpv1SFlagCounter) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj @@ -199201,7 +242343,7 @@ func (obj *patternFlowIpv4FragmentOffsetCounter) FromPbText(value string) error return retObj } -func (obj *patternFlowIpv4FragmentOffsetCounter) ToYaml() (string, error) { +func (obj *patternFlowGtpv1SFlagCounter) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -199222,7 +242364,7 @@ func (obj *patternFlowIpv4FragmentOffsetCounter) ToYaml() (string, error) { return string(data), nil } -func (obj *patternFlowIpv4FragmentOffsetCounter) FromYaml(value string) error { +func (obj *patternFlowGtpv1SFlagCounter) FromYaml(value string) error { if value == "" { value = "{}" } @@ -199247,7 +242389,7 @@ func (obj *patternFlowIpv4FragmentOffsetCounter) FromYaml(value string) error { return nil } -func (obj *patternFlowIpv4FragmentOffsetCounter) ToJson() (string, error) { +func (obj *patternFlowGtpv1SFlagCounter) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -199265,7 +242407,7 @@ func (obj *patternFlowIpv4FragmentOffsetCounter) ToJson() (string, error) { return string(data), nil } -func (obj *patternFlowIpv4FragmentOffsetCounter) FromJson(value string) error { +func (obj *patternFlowGtpv1SFlagCounter) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -199286,19 +242428,19 @@ func (obj *patternFlowIpv4FragmentOffsetCounter) FromJson(value string) error { return nil } -func (obj *patternFlowIpv4FragmentOffsetCounter) validateToAndFrom() error { +func (obj *patternFlowGtpv1SFlagCounter) validateToAndFrom() error { // emptyVars() obj.validateObj(&obj.validation, true) return obj.validationResult() } -func (obj *patternFlowIpv4FragmentOffsetCounter) Validate() error { +func (obj *patternFlowGtpv1SFlagCounter) Validate() error { // emptyVars() obj.validateObj(&obj.validation, false) return obj.validationResult() } -func (obj *patternFlowIpv4FragmentOffsetCounter) String() string { +func (obj *patternFlowGtpv1SFlagCounter) String() string { str, err := obj.ToYaml() if err != nil { return err.Error() @@ -199306,12 +242448,12 @@ func (obj *patternFlowIpv4FragmentOffsetCounter) String() string { return str } -func (obj *patternFlowIpv4FragmentOffsetCounter) Clone() (PatternFlowIpv4FragmentOffsetCounter, error) { +func (obj *patternFlowGtpv1SFlagCounter) Clone() (PatternFlowGtpv1SFlagCounter, error) { vErr := obj.Validate() if vErr != nil { return nil, vErr } - newObj := NewPatternFlowIpv4FragmentOffsetCounter() + newObj := NewPatternFlowGtpv1SFlagCounter() data, err := proto.Marshal(obj.Msg()) if err != nil { return nil, err @@ -199323,63 +242465,63 @@ func (obj *patternFlowIpv4FragmentOffsetCounter) Clone() (PatternFlowIpv4Fragmen return newObj, nil } -// PatternFlowIpv4FragmentOffsetCounter is integer counter pattern -type PatternFlowIpv4FragmentOffsetCounter interface { +// PatternFlowGtpv1SFlagCounter is integer counter pattern +type PatternFlowGtpv1SFlagCounter interface { Validation - // Msg marshals PatternFlowIpv4FragmentOffsetCounter to protobuf object *otg.PatternFlowIpv4FragmentOffsetCounter + // Msg marshals PatternFlowGtpv1SFlagCounter to protobuf object *otg.PatternFlowGtpv1SFlagCounter // and doesn't set defaults - Msg() *otg.PatternFlowIpv4FragmentOffsetCounter - // SetMsg unmarshals PatternFlowIpv4FragmentOffsetCounter from protobuf object *otg.PatternFlowIpv4FragmentOffsetCounter + Msg() *otg.PatternFlowGtpv1SFlagCounter + // SetMsg unmarshals PatternFlowGtpv1SFlagCounter from protobuf object *otg.PatternFlowGtpv1SFlagCounter // and doesn't set defaults - SetMsg(*otg.PatternFlowIpv4FragmentOffsetCounter) PatternFlowIpv4FragmentOffsetCounter - // ToProto marshals PatternFlowIpv4FragmentOffsetCounter to protobuf object *otg.PatternFlowIpv4FragmentOffsetCounter - ToProto() (*otg.PatternFlowIpv4FragmentOffsetCounter, error) - // ToPbText marshals PatternFlowIpv4FragmentOffsetCounter to protobuf text + SetMsg(*otg.PatternFlowGtpv1SFlagCounter) PatternFlowGtpv1SFlagCounter + // ToProto marshals PatternFlowGtpv1SFlagCounter to protobuf object *otg.PatternFlowGtpv1SFlagCounter + ToProto() (*otg.PatternFlowGtpv1SFlagCounter, error) + // ToPbText marshals PatternFlowGtpv1SFlagCounter to protobuf text ToPbText() (string, error) - // ToYaml marshals PatternFlowIpv4FragmentOffsetCounter to YAML text + // ToYaml marshals PatternFlowGtpv1SFlagCounter to YAML text ToYaml() (string, error) - // ToJson marshals PatternFlowIpv4FragmentOffsetCounter to JSON text + // ToJson marshals PatternFlowGtpv1SFlagCounter to JSON text ToJson() (string, error) - // FromProto unmarshals PatternFlowIpv4FragmentOffsetCounter from protobuf object *otg.PatternFlowIpv4FragmentOffsetCounter - FromProto(msg *otg.PatternFlowIpv4FragmentOffsetCounter) (PatternFlowIpv4FragmentOffsetCounter, error) - // FromPbText unmarshals PatternFlowIpv4FragmentOffsetCounter from protobuf text + // FromProto unmarshals PatternFlowGtpv1SFlagCounter from protobuf object *otg.PatternFlowGtpv1SFlagCounter + FromProto(msg *otg.PatternFlowGtpv1SFlagCounter) (PatternFlowGtpv1SFlagCounter, error) + // FromPbText unmarshals PatternFlowGtpv1SFlagCounter from protobuf text FromPbText(value string) error - // FromYaml unmarshals PatternFlowIpv4FragmentOffsetCounter from YAML text + // FromYaml unmarshals PatternFlowGtpv1SFlagCounter from YAML text FromYaml(value string) error - // FromJson unmarshals PatternFlowIpv4FragmentOffsetCounter from JSON text + // FromJson unmarshals PatternFlowGtpv1SFlagCounter from JSON text FromJson(value string) error - // Validate validates PatternFlowIpv4FragmentOffsetCounter + // Validate validates PatternFlowGtpv1SFlagCounter Validate() error // A stringer function String() string // Clones the object - Clone() (PatternFlowIpv4FragmentOffsetCounter, error) + Clone() (PatternFlowGtpv1SFlagCounter, error) validateToAndFrom() error validateObj(vObj *validation, set_default bool) setDefault() - // Start returns uint32, set in PatternFlowIpv4FragmentOffsetCounter. + // Start returns uint32, set in PatternFlowGtpv1SFlagCounter. Start() uint32 - // SetStart assigns uint32 provided by user to PatternFlowIpv4FragmentOffsetCounter - SetStart(value uint32) PatternFlowIpv4FragmentOffsetCounter - // HasStart checks if Start has been set in PatternFlowIpv4FragmentOffsetCounter + // SetStart assigns uint32 provided by user to PatternFlowGtpv1SFlagCounter + SetStart(value uint32) PatternFlowGtpv1SFlagCounter + // HasStart checks if Start has been set in PatternFlowGtpv1SFlagCounter HasStart() bool - // Step returns uint32, set in PatternFlowIpv4FragmentOffsetCounter. + // Step returns uint32, set in PatternFlowGtpv1SFlagCounter. Step() uint32 - // SetStep assigns uint32 provided by user to PatternFlowIpv4FragmentOffsetCounter - SetStep(value uint32) PatternFlowIpv4FragmentOffsetCounter - // HasStep checks if Step has been set in PatternFlowIpv4FragmentOffsetCounter + // SetStep assigns uint32 provided by user to PatternFlowGtpv1SFlagCounter + SetStep(value uint32) PatternFlowGtpv1SFlagCounter + // HasStep checks if Step has been set in PatternFlowGtpv1SFlagCounter HasStep() bool - // Count returns uint32, set in PatternFlowIpv4FragmentOffsetCounter. + // Count returns uint32, set in PatternFlowGtpv1SFlagCounter. Count() uint32 - // SetCount assigns uint32 provided by user to PatternFlowIpv4FragmentOffsetCounter - SetCount(value uint32) PatternFlowIpv4FragmentOffsetCounter - // HasCount checks if Count has been set in PatternFlowIpv4FragmentOffsetCounter + // SetCount assigns uint32 provided by user to PatternFlowGtpv1SFlagCounter + SetCount(value uint32) PatternFlowGtpv1SFlagCounter + // HasCount checks if Count has been set in PatternFlowGtpv1SFlagCounter HasCount() bool } // description is TBD // Start returns a uint32 -func (obj *patternFlowIpv4FragmentOffsetCounter) Start() uint32 { +func (obj *patternFlowGtpv1SFlagCounter) Start() uint32 { return *obj.obj.Start @@ -199387,13 +242529,13 @@ func (obj *patternFlowIpv4FragmentOffsetCounter) Start() uint32 { // description is TBD // Start returns a uint32 -func (obj *patternFlowIpv4FragmentOffsetCounter) HasStart() bool { +func (obj *patternFlowGtpv1SFlagCounter) HasStart() bool { return obj.obj.Start != nil } // description is TBD -// SetStart sets the uint32 value in the PatternFlowIpv4FragmentOffsetCounter object -func (obj *patternFlowIpv4FragmentOffsetCounter) SetStart(value uint32) PatternFlowIpv4FragmentOffsetCounter { +// SetStart sets the uint32 value in the PatternFlowGtpv1SFlagCounter object +func (obj *patternFlowGtpv1SFlagCounter) SetStart(value uint32) PatternFlowGtpv1SFlagCounter { obj.obj.Start = &value return obj @@ -199401,7 +242543,7 @@ func (obj *patternFlowIpv4FragmentOffsetCounter) SetStart(value uint32) PatternF // description is TBD // Step returns a uint32 -func (obj *patternFlowIpv4FragmentOffsetCounter) Step() uint32 { +func (obj *patternFlowGtpv1SFlagCounter) Step() uint32 { return *obj.obj.Step @@ -199409,13 +242551,13 @@ func (obj *patternFlowIpv4FragmentOffsetCounter) Step() uint32 { // description is TBD // Step returns a uint32 -func (obj *patternFlowIpv4FragmentOffsetCounter) HasStep() bool { +func (obj *patternFlowGtpv1SFlagCounter) HasStep() bool { return obj.obj.Step != nil } // description is TBD -// SetStep sets the uint32 value in the PatternFlowIpv4FragmentOffsetCounter object -func (obj *patternFlowIpv4FragmentOffsetCounter) SetStep(value uint32) PatternFlowIpv4FragmentOffsetCounter { +// SetStep sets the uint32 value in the PatternFlowGtpv1SFlagCounter object +func (obj *patternFlowGtpv1SFlagCounter) SetStep(value uint32) PatternFlowGtpv1SFlagCounter { obj.obj.Step = &value return obj @@ -199423,7 +242565,7 @@ func (obj *patternFlowIpv4FragmentOffsetCounter) SetStep(value uint32) PatternFl // description is TBD // Count returns a uint32 -func (obj *patternFlowIpv4FragmentOffsetCounter) Count() uint32 { +func (obj *patternFlowGtpv1SFlagCounter) Count() uint32 { return *obj.obj.Count @@ -199431,56 +242573,56 @@ func (obj *patternFlowIpv4FragmentOffsetCounter) Count() uint32 { // description is TBD // Count returns a uint32 -func (obj *patternFlowIpv4FragmentOffsetCounter) HasCount() bool { +func (obj *patternFlowGtpv1SFlagCounter) HasCount() bool { return obj.obj.Count != nil } // description is TBD -// SetCount sets the uint32 value in the PatternFlowIpv4FragmentOffsetCounter object -func (obj *patternFlowIpv4FragmentOffsetCounter) SetCount(value uint32) PatternFlowIpv4FragmentOffsetCounter { +// SetCount sets the uint32 value in the PatternFlowGtpv1SFlagCounter object +func (obj *patternFlowGtpv1SFlagCounter) SetCount(value uint32) PatternFlowGtpv1SFlagCounter { obj.obj.Count = &value return obj } -func (obj *patternFlowIpv4FragmentOffsetCounter) validateObj(vObj *validation, set_default bool) { +func (obj *patternFlowGtpv1SFlagCounter) validateObj(vObj *validation, set_default bool) { if set_default { obj.setDefault() } if obj.obj.Start != nil { - if *obj.obj.Start > 31 { + if *obj.obj.Start > 1 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowIpv4FragmentOffsetCounter.Start <= 31 but Got %d", *obj.obj.Start)) + fmt.Sprintf("0 <= PatternFlowGtpv1SFlagCounter.Start <= 1 but Got %d", *obj.obj.Start)) } } if obj.obj.Step != nil { - if *obj.obj.Step > 31 { + if *obj.obj.Step > 1 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowIpv4FragmentOffsetCounter.Step <= 31 but Got %d", *obj.obj.Step)) + fmt.Sprintf("0 <= PatternFlowGtpv1SFlagCounter.Step <= 1 but Got %d", *obj.obj.Step)) } } if obj.obj.Count != nil { - if *obj.obj.Count > 31 { + if *obj.obj.Count > 1 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowIpv4FragmentOffsetCounter.Count <= 31 but Got %d", *obj.obj.Count)) + fmt.Sprintf("0 <= PatternFlowGtpv1SFlagCounter.Count <= 1 but Got %d", *obj.obj.Count)) } } } -func (obj *patternFlowIpv4FragmentOffsetCounter) setDefault() { +func (obj *patternFlowGtpv1SFlagCounter) setDefault() { if obj.obj.Start == nil { obj.SetStart(0) } @@ -199493,29 +242635,29 @@ func (obj *patternFlowIpv4FragmentOffsetCounter) setDefault() { } -// ***** PatternFlowIpv4FragmentOffsetMetricTag ***** -type patternFlowIpv4FragmentOffsetMetricTag struct { +// ***** PatternFlowGtpv1SFlagMetricTag ***** +type patternFlowGtpv1SFlagMetricTag struct { validation - obj *otg.PatternFlowIpv4FragmentOffsetMetricTag + obj *otg.PatternFlowGtpv1SFlagMetricTag } -func NewPatternFlowIpv4FragmentOffsetMetricTag() PatternFlowIpv4FragmentOffsetMetricTag { - obj := patternFlowIpv4FragmentOffsetMetricTag{obj: &otg.PatternFlowIpv4FragmentOffsetMetricTag{}} +func NewPatternFlowGtpv1SFlagMetricTag() PatternFlowGtpv1SFlagMetricTag { + obj := patternFlowGtpv1SFlagMetricTag{obj: &otg.PatternFlowGtpv1SFlagMetricTag{}} obj.setDefault() return &obj } -func (obj *patternFlowIpv4FragmentOffsetMetricTag) Msg() *otg.PatternFlowIpv4FragmentOffsetMetricTag { +func (obj *patternFlowGtpv1SFlagMetricTag) Msg() *otg.PatternFlowGtpv1SFlagMetricTag { return obj.obj } -func (obj *patternFlowIpv4FragmentOffsetMetricTag) SetMsg(msg *otg.PatternFlowIpv4FragmentOffsetMetricTag) PatternFlowIpv4FragmentOffsetMetricTag { +func (obj *patternFlowGtpv1SFlagMetricTag) SetMsg(msg *otg.PatternFlowGtpv1SFlagMetricTag) PatternFlowGtpv1SFlagMetricTag { proto.Merge(obj.obj, msg) return obj } -func (obj *patternFlowIpv4FragmentOffsetMetricTag) ToProto() (*otg.PatternFlowIpv4FragmentOffsetMetricTag, error) { +func (obj *patternFlowGtpv1SFlagMetricTag) ToProto() (*otg.PatternFlowGtpv1SFlagMetricTag, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -199523,7 +242665,7 @@ func (obj *patternFlowIpv4FragmentOffsetMetricTag) ToProto() (*otg.PatternFlowIp return obj.Msg(), nil } -func (obj *patternFlowIpv4FragmentOffsetMetricTag) FromProto(msg *otg.PatternFlowIpv4FragmentOffsetMetricTag) (PatternFlowIpv4FragmentOffsetMetricTag, error) { +func (obj *patternFlowGtpv1SFlagMetricTag) FromProto(msg *otg.PatternFlowGtpv1SFlagMetricTag) (PatternFlowGtpv1SFlagMetricTag, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -199532,7 +242674,7 @@ func (obj *patternFlowIpv4FragmentOffsetMetricTag) FromProto(msg *otg.PatternFlo return newObj, nil } -func (obj *patternFlowIpv4FragmentOffsetMetricTag) ToPbText() (string, error) { +func (obj *patternFlowGtpv1SFlagMetricTag) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -199544,7 +242686,7 @@ func (obj *patternFlowIpv4FragmentOffsetMetricTag) ToPbText() (string, error) { return string(protoMarshal), nil } -func (obj *patternFlowIpv4FragmentOffsetMetricTag) FromPbText(value string) error { +func (obj *patternFlowGtpv1SFlagMetricTag) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj @@ -199557,7 +242699,7 @@ func (obj *patternFlowIpv4FragmentOffsetMetricTag) FromPbText(value string) erro return retObj } -func (obj *patternFlowIpv4FragmentOffsetMetricTag) ToYaml() (string, error) { +func (obj *patternFlowGtpv1SFlagMetricTag) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -199578,7 +242720,7 @@ func (obj *patternFlowIpv4FragmentOffsetMetricTag) ToYaml() (string, error) { return string(data), nil } -func (obj *patternFlowIpv4FragmentOffsetMetricTag) FromYaml(value string) error { +func (obj *patternFlowGtpv1SFlagMetricTag) FromYaml(value string) error { if value == "" { value = "{}" } @@ -199603,7 +242745,7 @@ func (obj *patternFlowIpv4FragmentOffsetMetricTag) FromYaml(value string) error return nil } -func (obj *patternFlowIpv4FragmentOffsetMetricTag) ToJson() (string, error) { +func (obj *patternFlowGtpv1SFlagMetricTag) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -199621,7 +242763,7 @@ func (obj *patternFlowIpv4FragmentOffsetMetricTag) ToJson() (string, error) { return string(data), nil } -func (obj *patternFlowIpv4FragmentOffsetMetricTag) FromJson(value string) error { +func (obj *patternFlowGtpv1SFlagMetricTag) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -199642,19 +242784,19 @@ func (obj *patternFlowIpv4FragmentOffsetMetricTag) FromJson(value string) error return nil } -func (obj *patternFlowIpv4FragmentOffsetMetricTag) validateToAndFrom() error { +func (obj *patternFlowGtpv1SFlagMetricTag) validateToAndFrom() error { // emptyVars() obj.validateObj(&obj.validation, true) return obj.validationResult() } -func (obj *patternFlowIpv4FragmentOffsetMetricTag) Validate() error { +func (obj *patternFlowGtpv1SFlagMetricTag) Validate() error { // emptyVars() obj.validateObj(&obj.validation, false) return obj.validationResult() } -func (obj *patternFlowIpv4FragmentOffsetMetricTag) String() string { +func (obj *patternFlowGtpv1SFlagMetricTag) String() string { str, err := obj.ToYaml() if err != nil { return err.Error() @@ -199662,12 +242804,12 @@ func (obj *patternFlowIpv4FragmentOffsetMetricTag) String() string { return str } -func (obj *patternFlowIpv4FragmentOffsetMetricTag) Clone() (PatternFlowIpv4FragmentOffsetMetricTag, error) { +func (obj *patternFlowGtpv1SFlagMetricTag) Clone() (PatternFlowGtpv1SFlagMetricTag, error) { vErr := obj.Validate() if vErr != nil { return nil, vErr } - newObj := NewPatternFlowIpv4FragmentOffsetMetricTag() + newObj := NewPatternFlowGtpv1SFlagMetricTag() data, err := proto.Marshal(obj.Msg()) if err != nil { return nil, err @@ -199679,69 +242821,69 @@ func (obj *patternFlowIpv4FragmentOffsetMetricTag) Clone() (PatternFlowIpv4Fragm return newObj, nil } -// PatternFlowIpv4FragmentOffsetMetricTag is metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. -type PatternFlowIpv4FragmentOffsetMetricTag interface { +// PatternFlowGtpv1SFlagMetricTag is metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. +type PatternFlowGtpv1SFlagMetricTag interface { Validation - // Msg marshals PatternFlowIpv4FragmentOffsetMetricTag to protobuf object *otg.PatternFlowIpv4FragmentOffsetMetricTag + // Msg marshals PatternFlowGtpv1SFlagMetricTag to protobuf object *otg.PatternFlowGtpv1SFlagMetricTag // and doesn't set defaults - Msg() *otg.PatternFlowIpv4FragmentOffsetMetricTag - // SetMsg unmarshals PatternFlowIpv4FragmentOffsetMetricTag from protobuf object *otg.PatternFlowIpv4FragmentOffsetMetricTag + Msg() *otg.PatternFlowGtpv1SFlagMetricTag + // SetMsg unmarshals PatternFlowGtpv1SFlagMetricTag from protobuf object *otg.PatternFlowGtpv1SFlagMetricTag // and doesn't set defaults - SetMsg(*otg.PatternFlowIpv4FragmentOffsetMetricTag) PatternFlowIpv4FragmentOffsetMetricTag - // ToProto marshals PatternFlowIpv4FragmentOffsetMetricTag to protobuf object *otg.PatternFlowIpv4FragmentOffsetMetricTag - ToProto() (*otg.PatternFlowIpv4FragmentOffsetMetricTag, error) - // ToPbText marshals PatternFlowIpv4FragmentOffsetMetricTag to protobuf text + SetMsg(*otg.PatternFlowGtpv1SFlagMetricTag) PatternFlowGtpv1SFlagMetricTag + // ToProto marshals PatternFlowGtpv1SFlagMetricTag to protobuf object *otg.PatternFlowGtpv1SFlagMetricTag + ToProto() (*otg.PatternFlowGtpv1SFlagMetricTag, error) + // ToPbText marshals PatternFlowGtpv1SFlagMetricTag to protobuf text ToPbText() (string, error) - // ToYaml marshals PatternFlowIpv4FragmentOffsetMetricTag to YAML text + // ToYaml marshals PatternFlowGtpv1SFlagMetricTag to YAML text ToYaml() (string, error) - // ToJson marshals PatternFlowIpv4FragmentOffsetMetricTag to JSON text + // ToJson marshals PatternFlowGtpv1SFlagMetricTag to JSON text ToJson() (string, error) - // FromProto unmarshals PatternFlowIpv4FragmentOffsetMetricTag from protobuf object *otg.PatternFlowIpv4FragmentOffsetMetricTag - FromProto(msg *otg.PatternFlowIpv4FragmentOffsetMetricTag) (PatternFlowIpv4FragmentOffsetMetricTag, error) - // FromPbText unmarshals PatternFlowIpv4FragmentOffsetMetricTag from protobuf text + // FromProto unmarshals PatternFlowGtpv1SFlagMetricTag from protobuf object *otg.PatternFlowGtpv1SFlagMetricTag + FromProto(msg *otg.PatternFlowGtpv1SFlagMetricTag) (PatternFlowGtpv1SFlagMetricTag, error) + // FromPbText unmarshals PatternFlowGtpv1SFlagMetricTag from protobuf text FromPbText(value string) error - // FromYaml unmarshals PatternFlowIpv4FragmentOffsetMetricTag from YAML text + // FromYaml unmarshals PatternFlowGtpv1SFlagMetricTag from YAML text FromYaml(value string) error - // FromJson unmarshals PatternFlowIpv4FragmentOffsetMetricTag from JSON text + // FromJson unmarshals PatternFlowGtpv1SFlagMetricTag from JSON text FromJson(value string) error - // Validate validates PatternFlowIpv4FragmentOffsetMetricTag + // Validate validates PatternFlowGtpv1SFlagMetricTag Validate() error // A stringer function String() string // Clones the object - Clone() (PatternFlowIpv4FragmentOffsetMetricTag, error) + Clone() (PatternFlowGtpv1SFlagMetricTag, error) validateToAndFrom() error validateObj(vObj *validation, set_default bool) setDefault() - // Name returns string, set in PatternFlowIpv4FragmentOffsetMetricTag. + // Name returns string, set in PatternFlowGtpv1SFlagMetricTag. Name() string - // SetName assigns string provided by user to PatternFlowIpv4FragmentOffsetMetricTag - SetName(value string) PatternFlowIpv4FragmentOffsetMetricTag - // Offset returns uint32, set in PatternFlowIpv4FragmentOffsetMetricTag. + // SetName assigns string provided by user to PatternFlowGtpv1SFlagMetricTag + SetName(value string) PatternFlowGtpv1SFlagMetricTag + // Offset returns uint32, set in PatternFlowGtpv1SFlagMetricTag. Offset() uint32 - // SetOffset assigns uint32 provided by user to PatternFlowIpv4FragmentOffsetMetricTag - SetOffset(value uint32) PatternFlowIpv4FragmentOffsetMetricTag - // HasOffset checks if Offset has been set in PatternFlowIpv4FragmentOffsetMetricTag + // SetOffset assigns uint32 provided by user to PatternFlowGtpv1SFlagMetricTag + SetOffset(value uint32) PatternFlowGtpv1SFlagMetricTag + // HasOffset checks if Offset has been set in PatternFlowGtpv1SFlagMetricTag HasOffset() bool - // Length returns uint32, set in PatternFlowIpv4FragmentOffsetMetricTag. + // Length returns uint32, set in PatternFlowGtpv1SFlagMetricTag. Length() uint32 - // SetLength assigns uint32 provided by user to PatternFlowIpv4FragmentOffsetMetricTag - SetLength(value uint32) PatternFlowIpv4FragmentOffsetMetricTag - // HasLength checks if Length has been set in PatternFlowIpv4FragmentOffsetMetricTag + // SetLength assigns uint32 provided by user to PatternFlowGtpv1SFlagMetricTag + SetLength(value uint32) PatternFlowGtpv1SFlagMetricTag + // HasLength checks if Length has been set in PatternFlowGtpv1SFlagMetricTag HasLength() bool } // Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field // Name returns a string -func (obj *patternFlowIpv4FragmentOffsetMetricTag) Name() string { +func (obj *patternFlowGtpv1SFlagMetricTag) Name() string { return *obj.obj.Name } // Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field -// SetName sets the string value in the PatternFlowIpv4FragmentOffsetMetricTag object -func (obj *patternFlowIpv4FragmentOffsetMetricTag) SetName(value string) PatternFlowIpv4FragmentOffsetMetricTag { +// SetName sets the string value in the PatternFlowGtpv1SFlagMetricTag object +func (obj *patternFlowGtpv1SFlagMetricTag) SetName(value string) PatternFlowGtpv1SFlagMetricTag { obj.obj.Name = &value return obj @@ -199749,7 +242891,7 @@ func (obj *patternFlowIpv4FragmentOffsetMetricTag) SetName(value string) Pattern // Offset in bits relative to start of corresponding header field // Offset returns a uint32 -func (obj *patternFlowIpv4FragmentOffsetMetricTag) Offset() uint32 { +func (obj *patternFlowGtpv1SFlagMetricTag) Offset() uint32 { return *obj.obj.Offset @@ -199757,13 +242899,13 @@ func (obj *patternFlowIpv4FragmentOffsetMetricTag) Offset() uint32 { // Offset in bits relative to start of corresponding header field // Offset returns a uint32 -func (obj *patternFlowIpv4FragmentOffsetMetricTag) HasOffset() bool { +func (obj *patternFlowGtpv1SFlagMetricTag) HasOffset() bool { return obj.obj.Offset != nil } // Offset in bits relative to start of corresponding header field -// SetOffset sets the uint32 value in the PatternFlowIpv4FragmentOffsetMetricTag object -func (obj *patternFlowIpv4FragmentOffsetMetricTag) SetOffset(value uint32) PatternFlowIpv4FragmentOffsetMetricTag { +// SetOffset sets the uint32 value in the PatternFlowGtpv1SFlagMetricTag object +func (obj *patternFlowGtpv1SFlagMetricTag) SetOffset(value uint32) PatternFlowGtpv1SFlagMetricTag { obj.obj.Offset = &value return obj @@ -199771,7 +242913,7 @@ func (obj *patternFlowIpv4FragmentOffsetMetricTag) SetOffset(value uint32) Patte // Number of bits to track for metrics starting from configured offset of corresponding header field // Length returns a uint32 -func (obj *patternFlowIpv4FragmentOffsetMetricTag) Length() uint32 { +func (obj *patternFlowGtpv1SFlagMetricTag) Length() uint32 { return *obj.obj.Length @@ -199779,83 +242921,83 @@ func (obj *patternFlowIpv4FragmentOffsetMetricTag) Length() uint32 { // Number of bits to track for metrics starting from configured offset of corresponding header field // Length returns a uint32 -func (obj *patternFlowIpv4FragmentOffsetMetricTag) HasLength() bool { +func (obj *patternFlowGtpv1SFlagMetricTag) HasLength() bool { return obj.obj.Length != nil } // Number of bits to track for metrics starting from configured offset of corresponding header field -// SetLength sets the uint32 value in the PatternFlowIpv4FragmentOffsetMetricTag object -func (obj *patternFlowIpv4FragmentOffsetMetricTag) SetLength(value uint32) PatternFlowIpv4FragmentOffsetMetricTag { +// SetLength sets the uint32 value in the PatternFlowGtpv1SFlagMetricTag object +func (obj *patternFlowGtpv1SFlagMetricTag) SetLength(value uint32) PatternFlowGtpv1SFlagMetricTag { obj.obj.Length = &value return obj } -func (obj *patternFlowIpv4FragmentOffsetMetricTag) validateObj(vObj *validation, set_default bool) { +func (obj *patternFlowGtpv1SFlagMetricTag) validateObj(vObj *validation, set_default bool) { if set_default { obj.setDefault() } // Name is required if obj.obj.Name == nil { - vObj.validationErrors = append(vObj.validationErrors, "Name is required field on interface PatternFlowIpv4FragmentOffsetMetricTag") + vObj.validationErrors = append(vObj.validationErrors, "Name is required field on interface PatternFlowGtpv1SFlagMetricTag") } if obj.obj.Offset != nil { - if *obj.obj.Offset > 4 { + if *obj.obj.Offset > 0 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowIpv4FragmentOffsetMetricTag.Offset <= 4 but Got %d", *obj.obj.Offset)) + fmt.Sprintf("0 <= PatternFlowGtpv1SFlagMetricTag.Offset <= 0 but Got %d", *obj.obj.Offset)) } } if obj.obj.Length != nil { - if *obj.obj.Length < 1 || *obj.obj.Length > 5 { + if *obj.obj.Length < 1 || *obj.obj.Length > 1 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("1 <= PatternFlowIpv4FragmentOffsetMetricTag.Length <= 5 but Got %d", *obj.obj.Length)) + fmt.Sprintf("1 <= PatternFlowGtpv1SFlagMetricTag.Length <= 1 but Got %d", *obj.obj.Length)) } } } -func (obj *patternFlowIpv4FragmentOffsetMetricTag) setDefault() { +func (obj *patternFlowGtpv1SFlagMetricTag) setDefault() { if obj.obj.Offset == nil { obj.SetOffset(0) } if obj.obj.Length == nil { - obj.SetLength(5) + obj.SetLength(1) } } -// ***** PatternFlowIpv4TimeToLiveCounter ***** -type patternFlowIpv4TimeToLiveCounter struct { +// ***** PatternFlowGtpv1PnFlagCounter ***** +type patternFlowGtpv1PnFlagCounter struct { validation - obj *otg.PatternFlowIpv4TimeToLiveCounter + obj *otg.PatternFlowGtpv1PnFlagCounter } -func NewPatternFlowIpv4TimeToLiveCounter() PatternFlowIpv4TimeToLiveCounter { - obj := patternFlowIpv4TimeToLiveCounter{obj: &otg.PatternFlowIpv4TimeToLiveCounter{}} +func NewPatternFlowGtpv1PnFlagCounter() PatternFlowGtpv1PnFlagCounter { + obj := patternFlowGtpv1PnFlagCounter{obj: &otg.PatternFlowGtpv1PnFlagCounter{}} obj.setDefault() return &obj } -func (obj *patternFlowIpv4TimeToLiveCounter) Msg() *otg.PatternFlowIpv4TimeToLiveCounter { +func (obj *patternFlowGtpv1PnFlagCounter) Msg() *otg.PatternFlowGtpv1PnFlagCounter { return obj.obj } -func (obj *patternFlowIpv4TimeToLiveCounter) SetMsg(msg *otg.PatternFlowIpv4TimeToLiveCounter) PatternFlowIpv4TimeToLiveCounter { +func (obj *patternFlowGtpv1PnFlagCounter) SetMsg(msg *otg.PatternFlowGtpv1PnFlagCounter) PatternFlowGtpv1PnFlagCounter { proto.Merge(obj.obj, msg) return obj } -func (obj *patternFlowIpv4TimeToLiveCounter) ToProto() (*otg.PatternFlowIpv4TimeToLiveCounter, error) { +func (obj *patternFlowGtpv1PnFlagCounter) ToProto() (*otg.PatternFlowGtpv1PnFlagCounter, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -199863,7 +243005,7 @@ func (obj *patternFlowIpv4TimeToLiveCounter) ToProto() (*otg.PatternFlowIpv4Time return obj.Msg(), nil } -func (obj *patternFlowIpv4TimeToLiveCounter) FromProto(msg *otg.PatternFlowIpv4TimeToLiveCounter) (PatternFlowIpv4TimeToLiveCounter, error) { +func (obj *patternFlowGtpv1PnFlagCounter) FromProto(msg *otg.PatternFlowGtpv1PnFlagCounter) (PatternFlowGtpv1PnFlagCounter, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -199872,7 +243014,7 @@ func (obj *patternFlowIpv4TimeToLiveCounter) FromProto(msg *otg.PatternFlowIpv4T return newObj, nil } -func (obj *patternFlowIpv4TimeToLiveCounter) ToPbText() (string, error) { +func (obj *patternFlowGtpv1PnFlagCounter) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -199884,7 +243026,7 @@ func (obj *patternFlowIpv4TimeToLiveCounter) ToPbText() (string, error) { return string(protoMarshal), nil } -func (obj *patternFlowIpv4TimeToLiveCounter) FromPbText(value string) error { +func (obj *patternFlowGtpv1PnFlagCounter) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj @@ -199897,7 +243039,7 @@ func (obj *patternFlowIpv4TimeToLiveCounter) FromPbText(value string) error { return retObj } -func (obj *patternFlowIpv4TimeToLiveCounter) ToYaml() (string, error) { +func (obj *patternFlowGtpv1PnFlagCounter) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -199918,7 +243060,7 @@ func (obj *patternFlowIpv4TimeToLiveCounter) ToYaml() (string, error) { return string(data), nil } -func (obj *patternFlowIpv4TimeToLiveCounter) FromYaml(value string) error { +func (obj *patternFlowGtpv1PnFlagCounter) FromYaml(value string) error { if value == "" { value = "{}" } @@ -199943,7 +243085,7 @@ func (obj *patternFlowIpv4TimeToLiveCounter) FromYaml(value string) error { return nil } -func (obj *patternFlowIpv4TimeToLiveCounter) ToJson() (string, error) { +func (obj *patternFlowGtpv1PnFlagCounter) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -199961,7 +243103,7 @@ func (obj *patternFlowIpv4TimeToLiveCounter) ToJson() (string, error) { return string(data), nil } -func (obj *patternFlowIpv4TimeToLiveCounter) FromJson(value string) error { +func (obj *patternFlowGtpv1PnFlagCounter) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -199982,19 +243124,19 @@ func (obj *patternFlowIpv4TimeToLiveCounter) FromJson(value string) error { return nil } -func (obj *patternFlowIpv4TimeToLiveCounter) validateToAndFrom() error { +func (obj *patternFlowGtpv1PnFlagCounter) validateToAndFrom() error { // emptyVars() obj.validateObj(&obj.validation, true) return obj.validationResult() } -func (obj *patternFlowIpv4TimeToLiveCounter) Validate() error { +func (obj *patternFlowGtpv1PnFlagCounter) Validate() error { // emptyVars() obj.validateObj(&obj.validation, false) return obj.validationResult() } -func (obj *patternFlowIpv4TimeToLiveCounter) String() string { +func (obj *patternFlowGtpv1PnFlagCounter) String() string { str, err := obj.ToYaml() if err != nil { return err.Error() @@ -200002,12 +243144,12 @@ func (obj *patternFlowIpv4TimeToLiveCounter) String() string { return str } -func (obj *patternFlowIpv4TimeToLiveCounter) Clone() (PatternFlowIpv4TimeToLiveCounter, error) { +func (obj *patternFlowGtpv1PnFlagCounter) Clone() (PatternFlowGtpv1PnFlagCounter, error) { vErr := obj.Validate() if vErr != nil { return nil, vErr } - newObj := NewPatternFlowIpv4TimeToLiveCounter() + newObj := NewPatternFlowGtpv1PnFlagCounter() data, err := proto.Marshal(obj.Msg()) if err != nil { return nil, err @@ -200019,63 +243161,63 @@ func (obj *patternFlowIpv4TimeToLiveCounter) Clone() (PatternFlowIpv4TimeToLiveC return newObj, nil } -// PatternFlowIpv4TimeToLiveCounter is integer counter pattern -type PatternFlowIpv4TimeToLiveCounter interface { +// PatternFlowGtpv1PnFlagCounter is integer counter pattern +type PatternFlowGtpv1PnFlagCounter interface { Validation - // Msg marshals PatternFlowIpv4TimeToLiveCounter to protobuf object *otg.PatternFlowIpv4TimeToLiveCounter + // Msg marshals PatternFlowGtpv1PnFlagCounter to protobuf object *otg.PatternFlowGtpv1PnFlagCounter // and doesn't set defaults - Msg() *otg.PatternFlowIpv4TimeToLiveCounter - // SetMsg unmarshals PatternFlowIpv4TimeToLiveCounter from protobuf object *otg.PatternFlowIpv4TimeToLiveCounter + Msg() *otg.PatternFlowGtpv1PnFlagCounter + // SetMsg unmarshals PatternFlowGtpv1PnFlagCounter from protobuf object *otg.PatternFlowGtpv1PnFlagCounter // and doesn't set defaults - SetMsg(*otg.PatternFlowIpv4TimeToLiveCounter) PatternFlowIpv4TimeToLiveCounter - // ToProto marshals PatternFlowIpv4TimeToLiveCounter to protobuf object *otg.PatternFlowIpv4TimeToLiveCounter - ToProto() (*otg.PatternFlowIpv4TimeToLiveCounter, error) - // ToPbText marshals PatternFlowIpv4TimeToLiveCounter to protobuf text + SetMsg(*otg.PatternFlowGtpv1PnFlagCounter) PatternFlowGtpv1PnFlagCounter + // ToProto marshals PatternFlowGtpv1PnFlagCounter to protobuf object *otg.PatternFlowGtpv1PnFlagCounter + ToProto() (*otg.PatternFlowGtpv1PnFlagCounter, error) + // ToPbText marshals PatternFlowGtpv1PnFlagCounter to protobuf text ToPbText() (string, error) - // ToYaml marshals PatternFlowIpv4TimeToLiveCounter to YAML text + // ToYaml marshals PatternFlowGtpv1PnFlagCounter to YAML text ToYaml() (string, error) - // ToJson marshals PatternFlowIpv4TimeToLiveCounter to JSON text + // ToJson marshals PatternFlowGtpv1PnFlagCounter to JSON text ToJson() (string, error) - // FromProto unmarshals PatternFlowIpv4TimeToLiveCounter from protobuf object *otg.PatternFlowIpv4TimeToLiveCounter - FromProto(msg *otg.PatternFlowIpv4TimeToLiveCounter) (PatternFlowIpv4TimeToLiveCounter, error) - // FromPbText unmarshals PatternFlowIpv4TimeToLiveCounter from protobuf text + // FromProto unmarshals PatternFlowGtpv1PnFlagCounter from protobuf object *otg.PatternFlowGtpv1PnFlagCounter + FromProto(msg *otg.PatternFlowGtpv1PnFlagCounter) (PatternFlowGtpv1PnFlagCounter, error) + // FromPbText unmarshals PatternFlowGtpv1PnFlagCounter from protobuf text FromPbText(value string) error - // FromYaml unmarshals PatternFlowIpv4TimeToLiveCounter from YAML text + // FromYaml unmarshals PatternFlowGtpv1PnFlagCounter from YAML text FromYaml(value string) error - // FromJson unmarshals PatternFlowIpv4TimeToLiveCounter from JSON text + // FromJson unmarshals PatternFlowGtpv1PnFlagCounter from JSON text FromJson(value string) error - // Validate validates PatternFlowIpv4TimeToLiveCounter + // Validate validates PatternFlowGtpv1PnFlagCounter Validate() error // A stringer function String() string // Clones the object - Clone() (PatternFlowIpv4TimeToLiveCounter, error) + Clone() (PatternFlowGtpv1PnFlagCounter, error) validateToAndFrom() error validateObj(vObj *validation, set_default bool) setDefault() - // Start returns uint32, set in PatternFlowIpv4TimeToLiveCounter. + // Start returns uint32, set in PatternFlowGtpv1PnFlagCounter. Start() uint32 - // SetStart assigns uint32 provided by user to PatternFlowIpv4TimeToLiveCounter - SetStart(value uint32) PatternFlowIpv4TimeToLiveCounter - // HasStart checks if Start has been set in PatternFlowIpv4TimeToLiveCounter + // SetStart assigns uint32 provided by user to PatternFlowGtpv1PnFlagCounter + SetStart(value uint32) PatternFlowGtpv1PnFlagCounter + // HasStart checks if Start has been set in PatternFlowGtpv1PnFlagCounter HasStart() bool - // Step returns uint32, set in PatternFlowIpv4TimeToLiveCounter. + // Step returns uint32, set in PatternFlowGtpv1PnFlagCounter. Step() uint32 - // SetStep assigns uint32 provided by user to PatternFlowIpv4TimeToLiveCounter - SetStep(value uint32) PatternFlowIpv4TimeToLiveCounter - // HasStep checks if Step has been set in PatternFlowIpv4TimeToLiveCounter + // SetStep assigns uint32 provided by user to PatternFlowGtpv1PnFlagCounter + SetStep(value uint32) PatternFlowGtpv1PnFlagCounter + // HasStep checks if Step has been set in PatternFlowGtpv1PnFlagCounter HasStep() bool - // Count returns uint32, set in PatternFlowIpv4TimeToLiveCounter. + // Count returns uint32, set in PatternFlowGtpv1PnFlagCounter. Count() uint32 - // SetCount assigns uint32 provided by user to PatternFlowIpv4TimeToLiveCounter - SetCount(value uint32) PatternFlowIpv4TimeToLiveCounter - // HasCount checks if Count has been set in PatternFlowIpv4TimeToLiveCounter + // SetCount assigns uint32 provided by user to PatternFlowGtpv1PnFlagCounter + SetCount(value uint32) PatternFlowGtpv1PnFlagCounter + // HasCount checks if Count has been set in PatternFlowGtpv1PnFlagCounter HasCount() bool } // description is TBD // Start returns a uint32 -func (obj *patternFlowIpv4TimeToLiveCounter) Start() uint32 { +func (obj *patternFlowGtpv1PnFlagCounter) Start() uint32 { return *obj.obj.Start @@ -200083,13 +243225,13 @@ func (obj *patternFlowIpv4TimeToLiveCounter) Start() uint32 { // description is TBD // Start returns a uint32 -func (obj *patternFlowIpv4TimeToLiveCounter) HasStart() bool { +func (obj *patternFlowGtpv1PnFlagCounter) HasStart() bool { return obj.obj.Start != nil } // description is TBD -// SetStart sets the uint32 value in the PatternFlowIpv4TimeToLiveCounter object -func (obj *patternFlowIpv4TimeToLiveCounter) SetStart(value uint32) PatternFlowIpv4TimeToLiveCounter { +// SetStart sets the uint32 value in the PatternFlowGtpv1PnFlagCounter object +func (obj *patternFlowGtpv1PnFlagCounter) SetStart(value uint32) PatternFlowGtpv1PnFlagCounter { obj.obj.Start = &value return obj @@ -200097,7 +243239,7 @@ func (obj *patternFlowIpv4TimeToLiveCounter) SetStart(value uint32) PatternFlowI // description is TBD // Step returns a uint32 -func (obj *patternFlowIpv4TimeToLiveCounter) Step() uint32 { +func (obj *patternFlowGtpv1PnFlagCounter) Step() uint32 { return *obj.obj.Step @@ -200105,13 +243247,13 @@ func (obj *patternFlowIpv4TimeToLiveCounter) Step() uint32 { // description is TBD // Step returns a uint32 -func (obj *patternFlowIpv4TimeToLiveCounter) HasStep() bool { +func (obj *patternFlowGtpv1PnFlagCounter) HasStep() bool { return obj.obj.Step != nil } // description is TBD -// SetStep sets the uint32 value in the PatternFlowIpv4TimeToLiveCounter object -func (obj *patternFlowIpv4TimeToLiveCounter) SetStep(value uint32) PatternFlowIpv4TimeToLiveCounter { +// SetStep sets the uint32 value in the PatternFlowGtpv1PnFlagCounter object +func (obj *patternFlowGtpv1PnFlagCounter) SetStep(value uint32) PatternFlowGtpv1PnFlagCounter { obj.obj.Step = &value return obj @@ -200119,7 +243261,7 @@ func (obj *patternFlowIpv4TimeToLiveCounter) SetStep(value uint32) PatternFlowIp // description is TBD // Count returns a uint32 -func (obj *patternFlowIpv4TimeToLiveCounter) Count() uint32 { +func (obj *patternFlowGtpv1PnFlagCounter) Count() uint32 { return *obj.obj.Count @@ -200127,58 +243269,58 @@ func (obj *patternFlowIpv4TimeToLiveCounter) Count() uint32 { // description is TBD // Count returns a uint32 -func (obj *patternFlowIpv4TimeToLiveCounter) HasCount() bool { +func (obj *patternFlowGtpv1PnFlagCounter) HasCount() bool { return obj.obj.Count != nil } // description is TBD -// SetCount sets the uint32 value in the PatternFlowIpv4TimeToLiveCounter object -func (obj *patternFlowIpv4TimeToLiveCounter) SetCount(value uint32) PatternFlowIpv4TimeToLiveCounter { +// SetCount sets the uint32 value in the PatternFlowGtpv1PnFlagCounter object +func (obj *patternFlowGtpv1PnFlagCounter) SetCount(value uint32) PatternFlowGtpv1PnFlagCounter { obj.obj.Count = &value return obj } -func (obj *patternFlowIpv4TimeToLiveCounter) validateObj(vObj *validation, set_default bool) { +func (obj *patternFlowGtpv1PnFlagCounter) validateObj(vObj *validation, set_default bool) { if set_default { obj.setDefault() } if obj.obj.Start != nil { - if *obj.obj.Start > 255 { + if *obj.obj.Start > 1 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowIpv4TimeToLiveCounter.Start <= 255 but Got %d", *obj.obj.Start)) + fmt.Sprintf("0 <= PatternFlowGtpv1PnFlagCounter.Start <= 1 but Got %d", *obj.obj.Start)) } } if obj.obj.Step != nil { - if *obj.obj.Step > 255 { + if *obj.obj.Step > 1 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowIpv4TimeToLiveCounter.Step <= 255 but Got %d", *obj.obj.Step)) + fmt.Sprintf("0 <= PatternFlowGtpv1PnFlagCounter.Step <= 1 but Got %d", *obj.obj.Step)) } } if obj.obj.Count != nil { - if *obj.obj.Count > 255 { + if *obj.obj.Count > 1 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowIpv4TimeToLiveCounter.Count <= 255 but Got %d", *obj.obj.Count)) + fmt.Sprintf("0 <= PatternFlowGtpv1PnFlagCounter.Count <= 1 but Got %d", *obj.obj.Count)) } } } -func (obj *patternFlowIpv4TimeToLiveCounter) setDefault() { +func (obj *patternFlowGtpv1PnFlagCounter) setDefault() { if obj.obj.Start == nil { - obj.SetStart(64) + obj.SetStart(0) } if obj.obj.Step == nil { obj.SetStep(1) @@ -200189,29 +243331,29 @@ func (obj *patternFlowIpv4TimeToLiveCounter) setDefault() { } -// ***** PatternFlowIpv4TimeToLiveMetricTag ***** -type patternFlowIpv4TimeToLiveMetricTag struct { +// ***** PatternFlowGtpv1PnFlagMetricTag ***** +type patternFlowGtpv1PnFlagMetricTag struct { validation - obj *otg.PatternFlowIpv4TimeToLiveMetricTag + obj *otg.PatternFlowGtpv1PnFlagMetricTag } -func NewPatternFlowIpv4TimeToLiveMetricTag() PatternFlowIpv4TimeToLiveMetricTag { - obj := patternFlowIpv4TimeToLiveMetricTag{obj: &otg.PatternFlowIpv4TimeToLiveMetricTag{}} +func NewPatternFlowGtpv1PnFlagMetricTag() PatternFlowGtpv1PnFlagMetricTag { + obj := patternFlowGtpv1PnFlagMetricTag{obj: &otg.PatternFlowGtpv1PnFlagMetricTag{}} obj.setDefault() return &obj } -func (obj *patternFlowIpv4TimeToLiveMetricTag) Msg() *otg.PatternFlowIpv4TimeToLiveMetricTag { +func (obj *patternFlowGtpv1PnFlagMetricTag) Msg() *otg.PatternFlowGtpv1PnFlagMetricTag { return obj.obj } -func (obj *patternFlowIpv4TimeToLiveMetricTag) SetMsg(msg *otg.PatternFlowIpv4TimeToLiveMetricTag) PatternFlowIpv4TimeToLiveMetricTag { +func (obj *patternFlowGtpv1PnFlagMetricTag) SetMsg(msg *otg.PatternFlowGtpv1PnFlagMetricTag) PatternFlowGtpv1PnFlagMetricTag { proto.Merge(obj.obj, msg) return obj } -func (obj *patternFlowIpv4TimeToLiveMetricTag) ToProto() (*otg.PatternFlowIpv4TimeToLiveMetricTag, error) { +func (obj *patternFlowGtpv1PnFlagMetricTag) ToProto() (*otg.PatternFlowGtpv1PnFlagMetricTag, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -200219,7 +243361,7 @@ func (obj *patternFlowIpv4TimeToLiveMetricTag) ToProto() (*otg.PatternFlowIpv4Ti return obj.Msg(), nil } -func (obj *patternFlowIpv4TimeToLiveMetricTag) FromProto(msg *otg.PatternFlowIpv4TimeToLiveMetricTag) (PatternFlowIpv4TimeToLiveMetricTag, error) { +func (obj *patternFlowGtpv1PnFlagMetricTag) FromProto(msg *otg.PatternFlowGtpv1PnFlagMetricTag) (PatternFlowGtpv1PnFlagMetricTag, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -200228,7 +243370,7 @@ func (obj *patternFlowIpv4TimeToLiveMetricTag) FromProto(msg *otg.PatternFlowIpv return newObj, nil } -func (obj *patternFlowIpv4TimeToLiveMetricTag) ToPbText() (string, error) { +func (obj *patternFlowGtpv1PnFlagMetricTag) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -200240,7 +243382,7 @@ func (obj *patternFlowIpv4TimeToLiveMetricTag) ToPbText() (string, error) { return string(protoMarshal), nil } -func (obj *patternFlowIpv4TimeToLiveMetricTag) FromPbText(value string) error { +func (obj *patternFlowGtpv1PnFlagMetricTag) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj @@ -200253,7 +243395,7 @@ func (obj *patternFlowIpv4TimeToLiveMetricTag) FromPbText(value string) error { return retObj } -func (obj *patternFlowIpv4TimeToLiveMetricTag) ToYaml() (string, error) { +func (obj *patternFlowGtpv1PnFlagMetricTag) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -200274,7 +243416,7 @@ func (obj *patternFlowIpv4TimeToLiveMetricTag) ToYaml() (string, error) { return string(data), nil } -func (obj *patternFlowIpv4TimeToLiveMetricTag) FromYaml(value string) error { +func (obj *patternFlowGtpv1PnFlagMetricTag) FromYaml(value string) error { if value == "" { value = "{}" } @@ -200299,7 +243441,7 @@ func (obj *patternFlowIpv4TimeToLiveMetricTag) FromYaml(value string) error { return nil } -func (obj *patternFlowIpv4TimeToLiveMetricTag) ToJson() (string, error) { +func (obj *patternFlowGtpv1PnFlagMetricTag) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -200317,7 +243459,7 @@ func (obj *patternFlowIpv4TimeToLiveMetricTag) ToJson() (string, error) { return string(data), nil } -func (obj *patternFlowIpv4TimeToLiveMetricTag) FromJson(value string) error { +func (obj *patternFlowGtpv1PnFlagMetricTag) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -200338,19 +243480,19 @@ func (obj *patternFlowIpv4TimeToLiveMetricTag) FromJson(value string) error { return nil } -func (obj *patternFlowIpv4TimeToLiveMetricTag) validateToAndFrom() error { +func (obj *patternFlowGtpv1PnFlagMetricTag) validateToAndFrom() error { // emptyVars() obj.validateObj(&obj.validation, true) return obj.validationResult() } -func (obj *patternFlowIpv4TimeToLiveMetricTag) Validate() error { +func (obj *patternFlowGtpv1PnFlagMetricTag) Validate() error { // emptyVars() obj.validateObj(&obj.validation, false) return obj.validationResult() } -func (obj *patternFlowIpv4TimeToLiveMetricTag) String() string { +func (obj *patternFlowGtpv1PnFlagMetricTag) String() string { str, err := obj.ToYaml() if err != nil { return err.Error() @@ -200358,12 +243500,12 @@ func (obj *patternFlowIpv4TimeToLiveMetricTag) String() string { return str } -func (obj *patternFlowIpv4TimeToLiveMetricTag) Clone() (PatternFlowIpv4TimeToLiveMetricTag, error) { +func (obj *patternFlowGtpv1PnFlagMetricTag) Clone() (PatternFlowGtpv1PnFlagMetricTag, error) { vErr := obj.Validate() if vErr != nil { return nil, vErr } - newObj := NewPatternFlowIpv4TimeToLiveMetricTag() + newObj := NewPatternFlowGtpv1PnFlagMetricTag() data, err := proto.Marshal(obj.Msg()) if err != nil { return nil, err @@ -200375,69 +243517,69 @@ func (obj *patternFlowIpv4TimeToLiveMetricTag) Clone() (PatternFlowIpv4TimeToLiv return newObj, nil } -// PatternFlowIpv4TimeToLiveMetricTag is metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. -type PatternFlowIpv4TimeToLiveMetricTag interface { +// PatternFlowGtpv1PnFlagMetricTag is metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. +type PatternFlowGtpv1PnFlagMetricTag interface { Validation - // Msg marshals PatternFlowIpv4TimeToLiveMetricTag to protobuf object *otg.PatternFlowIpv4TimeToLiveMetricTag + // Msg marshals PatternFlowGtpv1PnFlagMetricTag to protobuf object *otg.PatternFlowGtpv1PnFlagMetricTag // and doesn't set defaults - Msg() *otg.PatternFlowIpv4TimeToLiveMetricTag - // SetMsg unmarshals PatternFlowIpv4TimeToLiveMetricTag from protobuf object *otg.PatternFlowIpv4TimeToLiveMetricTag + Msg() *otg.PatternFlowGtpv1PnFlagMetricTag + // SetMsg unmarshals PatternFlowGtpv1PnFlagMetricTag from protobuf object *otg.PatternFlowGtpv1PnFlagMetricTag // and doesn't set defaults - SetMsg(*otg.PatternFlowIpv4TimeToLiveMetricTag) PatternFlowIpv4TimeToLiveMetricTag - // ToProto marshals PatternFlowIpv4TimeToLiveMetricTag to protobuf object *otg.PatternFlowIpv4TimeToLiveMetricTag - ToProto() (*otg.PatternFlowIpv4TimeToLiveMetricTag, error) - // ToPbText marshals PatternFlowIpv4TimeToLiveMetricTag to protobuf text + SetMsg(*otg.PatternFlowGtpv1PnFlagMetricTag) PatternFlowGtpv1PnFlagMetricTag + // ToProto marshals PatternFlowGtpv1PnFlagMetricTag to protobuf object *otg.PatternFlowGtpv1PnFlagMetricTag + ToProto() (*otg.PatternFlowGtpv1PnFlagMetricTag, error) + // ToPbText marshals PatternFlowGtpv1PnFlagMetricTag to protobuf text ToPbText() (string, error) - // ToYaml marshals PatternFlowIpv4TimeToLiveMetricTag to YAML text + // ToYaml marshals PatternFlowGtpv1PnFlagMetricTag to YAML text ToYaml() (string, error) - // ToJson marshals PatternFlowIpv4TimeToLiveMetricTag to JSON text + // ToJson marshals PatternFlowGtpv1PnFlagMetricTag to JSON text ToJson() (string, error) - // FromProto unmarshals PatternFlowIpv4TimeToLiveMetricTag from protobuf object *otg.PatternFlowIpv4TimeToLiveMetricTag - FromProto(msg *otg.PatternFlowIpv4TimeToLiveMetricTag) (PatternFlowIpv4TimeToLiveMetricTag, error) - // FromPbText unmarshals PatternFlowIpv4TimeToLiveMetricTag from protobuf text + // FromProto unmarshals PatternFlowGtpv1PnFlagMetricTag from protobuf object *otg.PatternFlowGtpv1PnFlagMetricTag + FromProto(msg *otg.PatternFlowGtpv1PnFlagMetricTag) (PatternFlowGtpv1PnFlagMetricTag, error) + // FromPbText unmarshals PatternFlowGtpv1PnFlagMetricTag from protobuf text FromPbText(value string) error - // FromYaml unmarshals PatternFlowIpv4TimeToLiveMetricTag from YAML text + // FromYaml unmarshals PatternFlowGtpv1PnFlagMetricTag from YAML text FromYaml(value string) error - // FromJson unmarshals PatternFlowIpv4TimeToLiveMetricTag from JSON text + // FromJson unmarshals PatternFlowGtpv1PnFlagMetricTag from JSON text FromJson(value string) error - // Validate validates PatternFlowIpv4TimeToLiveMetricTag + // Validate validates PatternFlowGtpv1PnFlagMetricTag Validate() error // A stringer function String() string // Clones the object - Clone() (PatternFlowIpv4TimeToLiveMetricTag, error) + Clone() (PatternFlowGtpv1PnFlagMetricTag, error) validateToAndFrom() error validateObj(vObj *validation, set_default bool) setDefault() - // Name returns string, set in PatternFlowIpv4TimeToLiveMetricTag. + // Name returns string, set in PatternFlowGtpv1PnFlagMetricTag. Name() string - // SetName assigns string provided by user to PatternFlowIpv4TimeToLiveMetricTag - SetName(value string) PatternFlowIpv4TimeToLiveMetricTag - // Offset returns uint32, set in PatternFlowIpv4TimeToLiveMetricTag. + // SetName assigns string provided by user to PatternFlowGtpv1PnFlagMetricTag + SetName(value string) PatternFlowGtpv1PnFlagMetricTag + // Offset returns uint32, set in PatternFlowGtpv1PnFlagMetricTag. Offset() uint32 - // SetOffset assigns uint32 provided by user to PatternFlowIpv4TimeToLiveMetricTag - SetOffset(value uint32) PatternFlowIpv4TimeToLiveMetricTag - // HasOffset checks if Offset has been set in PatternFlowIpv4TimeToLiveMetricTag + // SetOffset assigns uint32 provided by user to PatternFlowGtpv1PnFlagMetricTag + SetOffset(value uint32) PatternFlowGtpv1PnFlagMetricTag + // HasOffset checks if Offset has been set in PatternFlowGtpv1PnFlagMetricTag HasOffset() bool - // Length returns uint32, set in PatternFlowIpv4TimeToLiveMetricTag. + // Length returns uint32, set in PatternFlowGtpv1PnFlagMetricTag. Length() uint32 - // SetLength assigns uint32 provided by user to PatternFlowIpv4TimeToLiveMetricTag - SetLength(value uint32) PatternFlowIpv4TimeToLiveMetricTag - // HasLength checks if Length has been set in PatternFlowIpv4TimeToLiveMetricTag + // SetLength assigns uint32 provided by user to PatternFlowGtpv1PnFlagMetricTag + SetLength(value uint32) PatternFlowGtpv1PnFlagMetricTag + // HasLength checks if Length has been set in PatternFlowGtpv1PnFlagMetricTag HasLength() bool } // Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field // Name returns a string -func (obj *patternFlowIpv4TimeToLiveMetricTag) Name() string { +func (obj *patternFlowGtpv1PnFlagMetricTag) Name() string { return *obj.obj.Name } // Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field -// SetName sets the string value in the PatternFlowIpv4TimeToLiveMetricTag object -func (obj *patternFlowIpv4TimeToLiveMetricTag) SetName(value string) PatternFlowIpv4TimeToLiveMetricTag { +// SetName sets the string value in the PatternFlowGtpv1PnFlagMetricTag object +func (obj *patternFlowGtpv1PnFlagMetricTag) SetName(value string) PatternFlowGtpv1PnFlagMetricTag { obj.obj.Name = &value return obj @@ -200445,7 +243587,7 @@ func (obj *patternFlowIpv4TimeToLiveMetricTag) SetName(value string) PatternFlow // Offset in bits relative to start of corresponding header field // Offset returns a uint32 -func (obj *patternFlowIpv4TimeToLiveMetricTag) Offset() uint32 { +func (obj *patternFlowGtpv1PnFlagMetricTag) Offset() uint32 { return *obj.obj.Offset @@ -200453,13 +243595,13 @@ func (obj *patternFlowIpv4TimeToLiveMetricTag) Offset() uint32 { // Offset in bits relative to start of corresponding header field // Offset returns a uint32 -func (obj *patternFlowIpv4TimeToLiveMetricTag) HasOffset() bool { +func (obj *patternFlowGtpv1PnFlagMetricTag) HasOffset() bool { return obj.obj.Offset != nil } // Offset in bits relative to start of corresponding header field -// SetOffset sets the uint32 value in the PatternFlowIpv4TimeToLiveMetricTag object -func (obj *patternFlowIpv4TimeToLiveMetricTag) SetOffset(value uint32) PatternFlowIpv4TimeToLiveMetricTag { +// SetOffset sets the uint32 value in the PatternFlowGtpv1PnFlagMetricTag object +func (obj *patternFlowGtpv1PnFlagMetricTag) SetOffset(value uint32) PatternFlowGtpv1PnFlagMetricTag { obj.obj.Offset = &value return obj @@ -200467,7 +243609,7 @@ func (obj *patternFlowIpv4TimeToLiveMetricTag) SetOffset(value uint32) PatternFl // Number of bits to track for metrics starting from configured offset of corresponding header field // Length returns a uint32 -func (obj *patternFlowIpv4TimeToLiveMetricTag) Length() uint32 { +func (obj *patternFlowGtpv1PnFlagMetricTag) Length() uint32 { return *obj.obj.Length @@ -200475,83 +243617,83 @@ func (obj *patternFlowIpv4TimeToLiveMetricTag) Length() uint32 { // Number of bits to track for metrics starting from configured offset of corresponding header field // Length returns a uint32 -func (obj *patternFlowIpv4TimeToLiveMetricTag) HasLength() bool { +func (obj *patternFlowGtpv1PnFlagMetricTag) HasLength() bool { return obj.obj.Length != nil } // Number of bits to track for metrics starting from configured offset of corresponding header field -// SetLength sets the uint32 value in the PatternFlowIpv4TimeToLiveMetricTag object -func (obj *patternFlowIpv4TimeToLiveMetricTag) SetLength(value uint32) PatternFlowIpv4TimeToLiveMetricTag { +// SetLength sets the uint32 value in the PatternFlowGtpv1PnFlagMetricTag object +func (obj *patternFlowGtpv1PnFlagMetricTag) SetLength(value uint32) PatternFlowGtpv1PnFlagMetricTag { obj.obj.Length = &value return obj } -func (obj *patternFlowIpv4TimeToLiveMetricTag) validateObj(vObj *validation, set_default bool) { +func (obj *patternFlowGtpv1PnFlagMetricTag) validateObj(vObj *validation, set_default bool) { if set_default { obj.setDefault() } // Name is required if obj.obj.Name == nil { - vObj.validationErrors = append(vObj.validationErrors, "Name is required field on interface PatternFlowIpv4TimeToLiveMetricTag") + vObj.validationErrors = append(vObj.validationErrors, "Name is required field on interface PatternFlowGtpv1PnFlagMetricTag") } if obj.obj.Offset != nil { - if *obj.obj.Offset > 7 { + if *obj.obj.Offset > 0 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowIpv4TimeToLiveMetricTag.Offset <= 7 but Got %d", *obj.obj.Offset)) + fmt.Sprintf("0 <= PatternFlowGtpv1PnFlagMetricTag.Offset <= 0 but Got %d", *obj.obj.Offset)) } } if obj.obj.Length != nil { - if *obj.obj.Length < 1 || *obj.obj.Length > 8 { + if *obj.obj.Length < 1 || *obj.obj.Length > 1 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("1 <= PatternFlowIpv4TimeToLiveMetricTag.Length <= 8 but Got %d", *obj.obj.Length)) + fmt.Sprintf("1 <= PatternFlowGtpv1PnFlagMetricTag.Length <= 1 but Got %d", *obj.obj.Length)) } } } -func (obj *patternFlowIpv4TimeToLiveMetricTag) setDefault() { +func (obj *patternFlowGtpv1PnFlagMetricTag) setDefault() { if obj.obj.Offset == nil { obj.SetOffset(0) } if obj.obj.Length == nil { - obj.SetLength(8) + obj.SetLength(1) } } -// ***** PatternFlowIpv4ProtocolCounter ***** -type patternFlowIpv4ProtocolCounter struct { +// ***** PatternFlowGtpv1MessageTypeCounter ***** +type patternFlowGtpv1MessageTypeCounter struct { validation - obj *otg.PatternFlowIpv4ProtocolCounter + obj *otg.PatternFlowGtpv1MessageTypeCounter } -func NewPatternFlowIpv4ProtocolCounter() PatternFlowIpv4ProtocolCounter { - obj := patternFlowIpv4ProtocolCounter{obj: &otg.PatternFlowIpv4ProtocolCounter{}} +func NewPatternFlowGtpv1MessageTypeCounter() PatternFlowGtpv1MessageTypeCounter { + obj := patternFlowGtpv1MessageTypeCounter{obj: &otg.PatternFlowGtpv1MessageTypeCounter{}} obj.setDefault() return &obj } -func (obj *patternFlowIpv4ProtocolCounter) Msg() *otg.PatternFlowIpv4ProtocolCounter { +func (obj *patternFlowGtpv1MessageTypeCounter) Msg() *otg.PatternFlowGtpv1MessageTypeCounter { return obj.obj } -func (obj *patternFlowIpv4ProtocolCounter) SetMsg(msg *otg.PatternFlowIpv4ProtocolCounter) PatternFlowIpv4ProtocolCounter { +func (obj *patternFlowGtpv1MessageTypeCounter) SetMsg(msg *otg.PatternFlowGtpv1MessageTypeCounter) PatternFlowGtpv1MessageTypeCounter { proto.Merge(obj.obj, msg) return obj } -func (obj *patternFlowIpv4ProtocolCounter) ToProto() (*otg.PatternFlowIpv4ProtocolCounter, error) { +func (obj *patternFlowGtpv1MessageTypeCounter) ToProto() (*otg.PatternFlowGtpv1MessageTypeCounter, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -200559,7 +243701,7 @@ func (obj *patternFlowIpv4ProtocolCounter) ToProto() (*otg.PatternFlowIpv4Protoc return obj.Msg(), nil } -func (obj *patternFlowIpv4ProtocolCounter) FromProto(msg *otg.PatternFlowIpv4ProtocolCounter) (PatternFlowIpv4ProtocolCounter, error) { +func (obj *patternFlowGtpv1MessageTypeCounter) FromProto(msg *otg.PatternFlowGtpv1MessageTypeCounter) (PatternFlowGtpv1MessageTypeCounter, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -200568,7 +243710,7 @@ func (obj *patternFlowIpv4ProtocolCounter) FromProto(msg *otg.PatternFlowIpv4Pro return newObj, nil } -func (obj *patternFlowIpv4ProtocolCounter) ToPbText() (string, error) { +func (obj *patternFlowGtpv1MessageTypeCounter) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -200580,7 +243722,7 @@ func (obj *patternFlowIpv4ProtocolCounter) ToPbText() (string, error) { return string(protoMarshal), nil } -func (obj *patternFlowIpv4ProtocolCounter) FromPbText(value string) error { +func (obj *patternFlowGtpv1MessageTypeCounter) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj @@ -200593,7 +243735,7 @@ func (obj *patternFlowIpv4ProtocolCounter) FromPbText(value string) error { return retObj } -func (obj *patternFlowIpv4ProtocolCounter) ToYaml() (string, error) { +func (obj *patternFlowGtpv1MessageTypeCounter) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -200614,7 +243756,7 @@ func (obj *patternFlowIpv4ProtocolCounter) ToYaml() (string, error) { return string(data), nil } -func (obj *patternFlowIpv4ProtocolCounter) FromYaml(value string) error { +func (obj *patternFlowGtpv1MessageTypeCounter) FromYaml(value string) error { if value == "" { value = "{}" } @@ -200639,7 +243781,7 @@ func (obj *patternFlowIpv4ProtocolCounter) FromYaml(value string) error { return nil } -func (obj *patternFlowIpv4ProtocolCounter) ToJson() (string, error) { +func (obj *patternFlowGtpv1MessageTypeCounter) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -200657,7 +243799,7 @@ func (obj *patternFlowIpv4ProtocolCounter) ToJson() (string, error) { return string(data), nil } -func (obj *patternFlowIpv4ProtocolCounter) FromJson(value string) error { +func (obj *patternFlowGtpv1MessageTypeCounter) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -200678,19 +243820,19 @@ func (obj *patternFlowIpv4ProtocolCounter) FromJson(value string) error { return nil } -func (obj *patternFlowIpv4ProtocolCounter) validateToAndFrom() error { +func (obj *patternFlowGtpv1MessageTypeCounter) validateToAndFrom() error { // emptyVars() obj.validateObj(&obj.validation, true) return obj.validationResult() } -func (obj *patternFlowIpv4ProtocolCounter) Validate() error { +func (obj *patternFlowGtpv1MessageTypeCounter) Validate() error { // emptyVars() obj.validateObj(&obj.validation, false) return obj.validationResult() } -func (obj *patternFlowIpv4ProtocolCounter) String() string { +func (obj *patternFlowGtpv1MessageTypeCounter) String() string { str, err := obj.ToYaml() if err != nil { return err.Error() @@ -200698,12 +243840,12 @@ func (obj *patternFlowIpv4ProtocolCounter) String() string { return str } -func (obj *patternFlowIpv4ProtocolCounter) Clone() (PatternFlowIpv4ProtocolCounter, error) { +func (obj *patternFlowGtpv1MessageTypeCounter) Clone() (PatternFlowGtpv1MessageTypeCounter, error) { vErr := obj.Validate() if vErr != nil { return nil, vErr } - newObj := NewPatternFlowIpv4ProtocolCounter() + newObj := NewPatternFlowGtpv1MessageTypeCounter() data, err := proto.Marshal(obj.Msg()) if err != nil { return nil, err @@ -200715,63 +243857,63 @@ func (obj *patternFlowIpv4ProtocolCounter) Clone() (PatternFlowIpv4ProtocolCount return newObj, nil } -// PatternFlowIpv4ProtocolCounter is integer counter pattern -type PatternFlowIpv4ProtocolCounter interface { +// PatternFlowGtpv1MessageTypeCounter is integer counter pattern +type PatternFlowGtpv1MessageTypeCounter interface { Validation - // Msg marshals PatternFlowIpv4ProtocolCounter to protobuf object *otg.PatternFlowIpv4ProtocolCounter + // Msg marshals PatternFlowGtpv1MessageTypeCounter to protobuf object *otg.PatternFlowGtpv1MessageTypeCounter // and doesn't set defaults - Msg() *otg.PatternFlowIpv4ProtocolCounter - // SetMsg unmarshals PatternFlowIpv4ProtocolCounter from protobuf object *otg.PatternFlowIpv4ProtocolCounter + Msg() *otg.PatternFlowGtpv1MessageTypeCounter + // SetMsg unmarshals PatternFlowGtpv1MessageTypeCounter from protobuf object *otg.PatternFlowGtpv1MessageTypeCounter // and doesn't set defaults - SetMsg(*otg.PatternFlowIpv4ProtocolCounter) PatternFlowIpv4ProtocolCounter - // ToProto marshals PatternFlowIpv4ProtocolCounter to protobuf object *otg.PatternFlowIpv4ProtocolCounter - ToProto() (*otg.PatternFlowIpv4ProtocolCounter, error) - // ToPbText marshals PatternFlowIpv4ProtocolCounter to protobuf text + SetMsg(*otg.PatternFlowGtpv1MessageTypeCounter) PatternFlowGtpv1MessageTypeCounter + // ToProto marshals PatternFlowGtpv1MessageTypeCounter to protobuf object *otg.PatternFlowGtpv1MessageTypeCounter + ToProto() (*otg.PatternFlowGtpv1MessageTypeCounter, error) + // ToPbText marshals PatternFlowGtpv1MessageTypeCounter to protobuf text ToPbText() (string, error) - // ToYaml marshals PatternFlowIpv4ProtocolCounter to YAML text + // ToYaml marshals PatternFlowGtpv1MessageTypeCounter to YAML text ToYaml() (string, error) - // ToJson marshals PatternFlowIpv4ProtocolCounter to JSON text + // ToJson marshals PatternFlowGtpv1MessageTypeCounter to JSON text ToJson() (string, error) - // FromProto unmarshals PatternFlowIpv4ProtocolCounter from protobuf object *otg.PatternFlowIpv4ProtocolCounter - FromProto(msg *otg.PatternFlowIpv4ProtocolCounter) (PatternFlowIpv4ProtocolCounter, error) - // FromPbText unmarshals PatternFlowIpv4ProtocolCounter from protobuf text + // FromProto unmarshals PatternFlowGtpv1MessageTypeCounter from protobuf object *otg.PatternFlowGtpv1MessageTypeCounter + FromProto(msg *otg.PatternFlowGtpv1MessageTypeCounter) (PatternFlowGtpv1MessageTypeCounter, error) + // FromPbText unmarshals PatternFlowGtpv1MessageTypeCounter from protobuf text FromPbText(value string) error - // FromYaml unmarshals PatternFlowIpv4ProtocolCounter from YAML text + // FromYaml unmarshals PatternFlowGtpv1MessageTypeCounter from YAML text FromYaml(value string) error - // FromJson unmarshals PatternFlowIpv4ProtocolCounter from JSON text + // FromJson unmarshals PatternFlowGtpv1MessageTypeCounter from JSON text FromJson(value string) error - // Validate validates PatternFlowIpv4ProtocolCounter + // Validate validates PatternFlowGtpv1MessageTypeCounter Validate() error // A stringer function String() string // Clones the object - Clone() (PatternFlowIpv4ProtocolCounter, error) + Clone() (PatternFlowGtpv1MessageTypeCounter, error) validateToAndFrom() error validateObj(vObj *validation, set_default bool) setDefault() - // Start returns uint32, set in PatternFlowIpv4ProtocolCounter. + // Start returns uint32, set in PatternFlowGtpv1MessageTypeCounter. Start() uint32 - // SetStart assigns uint32 provided by user to PatternFlowIpv4ProtocolCounter - SetStart(value uint32) PatternFlowIpv4ProtocolCounter - // HasStart checks if Start has been set in PatternFlowIpv4ProtocolCounter + // SetStart assigns uint32 provided by user to PatternFlowGtpv1MessageTypeCounter + SetStart(value uint32) PatternFlowGtpv1MessageTypeCounter + // HasStart checks if Start has been set in PatternFlowGtpv1MessageTypeCounter HasStart() bool - // Step returns uint32, set in PatternFlowIpv4ProtocolCounter. + // Step returns uint32, set in PatternFlowGtpv1MessageTypeCounter. Step() uint32 - // SetStep assigns uint32 provided by user to PatternFlowIpv4ProtocolCounter - SetStep(value uint32) PatternFlowIpv4ProtocolCounter - // HasStep checks if Step has been set in PatternFlowIpv4ProtocolCounter + // SetStep assigns uint32 provided by user to PatternFlowGtpv1MessageTypeCounter + SetStep(value uint32) PatternFlowGtpv1MessageTypeCounter + // HasStep checks if Step has been set in PatternFlowGtpv1MessageTypeCounter HasStep() bool - // Count returns uint32, set in PatternFlowIpv4ProtocolCounter. + // Count returns uint32, set in PatternFlowGtpv1MessageTypeCounter. Count() uint32 - // SetCount assigns uint32 provided by user to PatternFlowIpv4ProtocolCounter - SetCount(value uint32) PatternFlowIpv4ProtocolCounter - // HasCount checks if Count has been set in PatternFlowIpv4ProtocolCounter + // SetCount assigns uint32 provided by user to PatternFlowGtpv1MessageTypeCounter + SetCount(value uint32) PatternFlowGtpv1MessageTypeCounter + // HasCount checks if Count has been set in PatternFlowGtpv1MessageTypeCounter HasCount() bool } // description is TBD // Start returns a uint32 -func (obj *patternFlowIpv4ProtocolCounter) Start() uint32 { +func (obj *patternFlowGtpv1MessageTypeCounter) Start() uint32 { return *obj.obj.Start @@ -200779,13 +243921,13 @@ func (obj *patternFlowIpv4ProtocolCounter) Start() uint32 { // description is TBD // Start returns a uint32 -func (obj *patternFlowIpv4ProtocolCounter) HasStart() bool { +func (obj *patternFlowGtpv1MessageTypeCounter) HasStart() bool { return obj.obj.Start != nil } // description is TBD -// SetStart sets the uint32 value in the PatternFlowIpv4ProtocolCounter object -func (obj *patternFlowIpv4ProtocolCounter) SetStart(value uint32) PatternFlowIpv4ProtocolCounter { +// SetStart sets the uint32 value in the PatternFlowGtpv1MessageTypeCounter object +func (obj *patternFlowGtpv1MessageTypeCounter) SetStart(value uint32) PatternFlowGtpv1MessageTypeCounter { obj.obj.Start = &value return obj @@ -200793,7 +243935,7 @@ func (obj *patternFlowIpv4ProtocolCounter) SetStart(value uint32) PatternFlowIpv // description is TBD // Step returns a uint32 -func (obj *patternFlowIpv4ProtocolCounter) Step() uint32 { +func (obj *patternFlowGtpv1MessageTypeCounter) Step() uint32 { return *obj.obj.Step @@ -200801,13 +243943,13 @@ func (obj *patternFlowIpv4ProtocolCounter) Step() uint32 { // description is TBD // Step returns a uint32 -func (obj *patternFlowIpv4ProtocolCounter) HasStep() bool { +func (obj *patternFlowGtpv1MessageTypeCounter) HasStep() bool { return obj.obj.Step != nil } // description is TBD -// SetStep sets the uint32 value in the PatternFlowIpv4ProtocolCounter object -func (obj *patternFlowIpv4ProtocolCounter) SetStep(value uint32) PatternFlowIpv4ProtocolCounter { +// SetStep sets the uint32 value in the PatternFlowGtpv1MessageTypeCounter object +func (obj *patternFlowGtpv1MessageTypeCounter) SetStep(value uint32) PatternFlowGtpv1MessageTypeCounter { obj.obj.Step = &value return obj @@ -200815,7 +243957,7 @@ func (obj *patternFlowIpv4ProtocolCounter) SetStep(value uint32) PatternFlowIpv4 // description is TBD // Count returns a uint32 -func (obj *patternFlowIpv4ProtocolCounter) Count() uint32 { +func (obj *patternFlowGtpv1MessageTypeCounter) Count() uint32 { return *obj.obj.Count @@ -200823,19 +243965,19 @@ func (obj *patternFlowIpv4ProtocolCounter) Count() uint32 { // description is TBD // Count returns a uint32 -func (obj *patternFlowIpv4ProtocolCounter) HasCount() bool { +func (obj *patternFlowGtpv1MessageTypeCounter) HasCount() bool { return obj.obj.Count != nil } // description is TBD -// SetCount sets the uint32 value in the PatternFlowIpv4ProtocolCounter object -func (obj *patternFlowIpv4ProtocolCounter) SetCount(value uint32) PatternFlowIpv4ProtocolCounter { +// SetCount sets the uint32 value in the PatternFlowGtpv1MessageTypeCounter object +func (obj *patternFlowGtpv1MessageTypeCounter) SetCount(value uint32) PatternFlowGtpv1MessageTypeCounter { obj.obj.Count = &value return obj } -func (obj *patternFlowIpv4ProtocolCounter) validateObj(vObj *validation, set_default bool) { +func (obj *patternFlowGtpv1MessageTypeCounter) validateObj(vObj *validation, set_default bool) { if set_default { obj.setDefault() } @@ -200845,7 +243987,7 @@ func (obj *patternFlowIpv4ProtocolCounter) validateObj(vObj *validation, set_def if *obj.obj.Start > 255 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowIpv4ProtocolCounter.Start <= 255 but Got %d", *obj.obj.Start)) + fmt.Sprintf("0 <= PatternFlowGtpv1MessageTypeCounter.Start <= 255 but Got %d", *obj.obj.Start)) } } @@ -200855,7 +243997,7 @@ func (obj *patternFlowIpv4ProtocolCounter) validateObj(vObj *validation, set_def if *obj.obj.Step > 255 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowIpv4ProtocolCounter.Step <= 255 but Got %d", *obj.obj.Step)) + fmt.Sprintf("0 <= PatternFlowGtpv1MessageTypeCounter.Step <= 255 but Got %d", *obj.obj.Step)) } } @@ -200865,16 +244007,16 @@ func (obj *patternFlowIpv4ProtocolCounter) validateObj(vObj *validation, set_def if *obj.obj.Count > 255 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowIpv4ProtocolCounter.Count <= 255 but Got %d", *obj.obj.Count)) + fmt.Sprintf("0 <= PatternFlowGtpv1MessageTypeCounter.Count <= 255 but Got %d", *obj.obj.Count)) } } } -func (obj *patternFlowIpv4ProtocolCounter) setDefault() { +func (obj *patternFlowGtpv1MessageTypeCounter) setDefault() { if obj.obj.Start == nil { - obj.SetStart(61) + obj.SetStart(0) } if obj.obj.Step == nil { obj.SetStep(1) @@ -200885,29 +244027,29 @@ func (obj *patternFlowIpv4ProtocolCounter) setDefault() { } -// ***** PatternFlowIpv4ProtocolMetricTag ***** -type patternFlowIpv4ProtocolMetricTag struct { +// ***** PatternFlowGtpv1MessageTypeMetricTag ***** +type patternFlowGtpv1MessageTypeMetricTag struct { validation - obj *otg.PatternFlowIpv4ProtocolMetricTag + obj *otg.PatternFlowGtpv1MessageTypeMetricTag } -func NewPatternFlowIpv4ProtocolMetricTag() PatternFlowIpv4ProtocolMetricTag { - obj := patternFlowIpv4ProtocolMetricTag{obj: &otg.PatternFlowIpv4ProtocolMetricTag{}} +func NewPatternFlowGtpv1MessageTypeMetricTag() PatternFlowGtpv1MessageTypeMetricTag { + obj := patternFlowGtpv1MessageTypeMetricTag{obj: &otg.PatternFlowGtpv1MessageTypeMetricTag{}} obj.setDefault() return &obj } -func (obj *patternFlowIpv4ProtocolMetricTag) Msg() *otg.PatternFlowIpv4ProtocolMetricTag { +func (obj *patternFlowGtpv1MessageTypeMetricTag) Msg() *otg.PatternFlowGtpv1MessageTypeMetricTag { return obj.obj } -func (obj *patternFlowIpv4ProtocolMetricTag) SetMsg(msg *otg.PatternFlowIpv4ProtocolMetricTag) PatternFlowIpv4ProtocolMetricTag { +func (obj *patternFlowGtpv1MessageTypeMetricTag) SetMsg(msg *otg.PatternFlowGtpv1MessageTypeMetricTag) PatternFlowGtpv1MessageTypeMetricTag { proto.Merge(obj.obj, msg) return obj } -func (obj *patternFlowIpv4ProtocolMetricTag) ToProto() (*otg.PatternFlowIpv4ProtocolMetricTag, error) { +func (obj *patternFlowGtpv1MessageTypeMetricTag) ToProto() (*otg.PatternFlowGtpv1MessageTypeMetricTag, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -200915,7 +244057,7 @@ func (obj *patternFlowIpv4ProtocolMetricTag) ToProto() (*otg.PatternFlowIpv4Prot return obj.Msg(), nil } -func (obj *patternFlowIpv4ProtocolMetricTag) FromProto(msg *otg.PatternFlowIpv4ProtocolMetricTag) (PatternFlowIpv4ProtocolMetricTag, error) { +func (obj *patternFlowGtpv1MessageTypeMetricTag) FromProto(msg *otg.PatternFlowGtpv1MessageTypeMetricTag) (PatternFlowGtpv1MessageTypeMetricTag, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -200924,7 +244066,7 @@ func (obj *patternFlowIpv4ProtocolMetricTag) FromProto(msg *otg.PatternFlowIpv4P return newObj, nil } -func (obj *patternFlowIpv4ProtocolMetricTag) ToPbText() (string, error) { +func (obj *patternFlowGtpv1MessageTypeMetricTag) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -200936,7 +244078,7 @@ func (obj *patternFlowIpv4ProtocolMetricTag) ToPbText() (string, error) { return string(protoMarshal), nil } -func (obj *patternFlowIpv4ProtocolMetricTag) FromPbText(value string) error { +func (obj *patternFlowGtpv1MessageTypeMetricTag) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj @@ -200949,7 +244091,7 @@ func (obj *patternFlowIpv4ProtocolMetricTag) FromPbText(value string) error { return retObj } -func (obj *patternFlowIpv4ProtocolMetricTag) ToYaml() (string, error) { +func (obj *patternFlowGtpv1MessageTypeMetricTag) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -200970,7 +244112,7 @@ func (obj *patternFlowIpv4ProtocolMetricTag) ToYaml() (string, error) { return string(data), nil } -func (obj *patternFlowIpv4ProtocolMetricTag) FromYaml(value string) error { +func (obj *patternFlowGtpv1MessageTypeMetricTag) FromYaml(value string) error { if value == "" { value = "{}" } @@ -200995,7 +244137,7 @@ func (obj *patternFlowIpv4ProtocolMetricTag) FromYaml(value string) error { return nil } -func (obj *patternFlowIpv4ProtocolMetricTag) ToJson() (string, error) { +func (obj *patternFlowGtpv1MessageTypeMetricTag) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -201013,7 +244155,7 @@ func (obj *patternFlowIpv4ProtocolMetricTag) ToJson() (string, error) { return string(data), nil } -func (obj *patternFlowIpv4ProtocolMetricTag) FromJson(value string) error { +func (obj *patternFlowGtpv1MessageTypeMetricTag) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -201034,19 +244176,19 @@ func (obj *patternFlowIpv4ProtocolMetricTag) FromJson(value string) error { return nil } -func (obj *patternFlowIpv4ProtocolMetricTag) validateToAndFrom() error { +func (obj *patternFlowGtpv1MessageTypeMetricTag) validateToAndFrom() error { // emptyVars() obj.validateObj(&obj.validation, true) return obj.validationResult() } -func (obj *patternFlowIpv4ProtocolMetricTag) Validate() error { +func (obj *patternFlowGtpv1MessageTypeMetricTag) Validate() error { // emptyVars() obj.validateObj(&obj.validation, false) return obj.validationResult() } -func (obj *patternFlowIpv4ProtocolMetricTag) String() string { +func (obj *patternFlowGtpv1MessageTypeMetricTag) String() string { str, err := obj.ToYaml() if err != nil { return err.Error() @@ -201054,12 +244196,12 @@ func (obj *patternFlowIpv4ProtocolMetricTag) String() string { return str } -func (obj *patternFlowIpv4ProtocolMetricTag) Clone() (PatternFlowIpv4ProtocolMetricTag, error) { +func (obj *patternFlowGtpv1MessageTypeMetricTag) Clone() (PatternFlowGtpv1MessageTypeMetricTag, error) { vErr := obj.Validate() if vErr != nil { return nil, vErr } - newObj := NewPatternFlowIpv4ProtocolMetricTag() + newObj := NewPatternFlowGtpv1MessageTypeMetricTag() data, err := proto.Marshal(obj.Msg()) if err != nil { return nil, err @@ -201071,69 +244213,69 @@ func (obj *patternFlowIpv4ProtocolMetricTag) Clone() (PatternFlowIpv4ProtocolMet return newObj, nil } -// PatternFlowIpv4ProtocolMetricTag is metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. -type PatternFlowIpv4ProtocolMetricTag interface { +// PatternFlowGtpv1MessageTypeMetricTag is metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. +type PatternFlowGtpv1MessageTypeMetricTag interface { Validation - // Msg marshals PatternFlowIpv4ProtocolMetricTag to protobuf object *otg.PatternFlowIpv4ProtocolMetricTag + // Msg marshals PatternFlowGtpv1MessageTypeMetricTag to protobuf object *otg.PatternFlowGtpv1MessageTypeMetricTag // and doesn't set defaults - Msg() *otg.PatternFlowIpv4ProtocolMetricTag - // SetMsg unmarshals PatternFlowIpv4ProtocolMetricTag from protobuf object *otg.PatternFlowIpv4ProtocolMetricTag + Msg() *otg.PatternFlowGtpv1MessageTypeMetricTag + // SetMsg unmarshals PatternFlowGtpv1MessageTypeMetricTag from protobuf object *otg.PatternFlowGtpv1MessageTypeMetricTag // and doesn't set defaults - SetMsg(*otg.PatternFlowIpv4ProtocolMetricTag) PatternFlowIpv4ProtocolMetricTag - // ToProto marshals PatternFlowIpv4ProtocolMetricTag to protobuf object *otg.PatternFlowIpv4ProtocolMetricTag - ToProto() (*otg.PatternFlowIpv4ProtocolMetricTag, error) - // ToPbText marshals PatternFlowIpv4ProtocolMetricTag to protobuf text + SetMsg(*otg.PatternFlowGtpv1MessageTypeMetricTag) PatternFlowGtpv1MessageTypeMetricTag + // ToProto marshals PatternFlowGtpv1MessageTypeMetricTag to protobuf object *otg.PatternFlowGtpv1MessageTypeMetricTag + ToProto() (*otg.PatternFlowGtpv1MessageTypeMetricTag, error) + // ToPbText marshals PatternFlowGtpv1MessageTypeMetricTag to protobuf text ToPbText() (string, error) - // ToYaml marshals PatternFlowIpv4ProtocolMetricTag to YAML text + // ToYaml marshals PatternFlowGtpv1MessageTypeMetricTag to YAML text ToYaml() (string, error) - // ToJson marshals PatternFlowIpv4ProtocolMetricTag to JSON text + // ToJson marshals PatternFlowGtpv1MessageTypeMetricTag to JSON text ToJson() (string, error) - // FromProto unmarshals PatternFlowIpv4ProtocolMetricTag from protobuf object *otg.PatternFlowIpv4ProtocolMetricTag - FromProto(msg *otg.PatternFlowIpv4ProtocolMetricTag) (PatternFlowIpv4ProtocolMetricTag, error) - // FromPbText unmarshals PatternFlowIpv4ProtocolMetricTag from protobuf text + // FromProto unmarshals PatternFlowGtpv1MessageTypeMetricTag from protobuf object *otg.PatternFlowGtpv1MessageTypeMetricTag + FromProto(msg *otg.PatternFlowGtpv1MessageTypeMetricTag) (PatternFlowGtpv1MessageTypeMetricTag, error) + // FromPbText unmarshals PatternFlowGtpv1MessageTypeMetricTag from protobuf text FromPbText(value string) error - // FromYaml unmarshals PatternFlowIpv4ProtocolMetricTag from YAML text + // FromYaml unmarshals PatternFlowGtpv1MessageTypeMetricTag from YAML text FromYaml(value string) error - // FromJson unmarshals PatternFlowIpv4ProtocolMetricTag from JSON text + // FromJson unmarshals PatternFlowGtpv1MessageTypeMetricTag from JSON text FromJson(value string) error - // Validate validates PatternFlowIpv4ProtocolMetricTag + // Validate validates PatternFlowGtpv1MessageTypeMetricTag Validate() error // A stringer function String() string // Clones the object - Clone() (PatternFlowIpv4ProtocolMetricTag, error) + Clone() (PatternFlowGtpv1MessageTypeMetricTag, error) validateToAndFrom() error validateObj(vObj *validation, set_default bool) setDefault() - // Name returns string, set in PatternFlowIpv4ProtocolMetricTag. + // Name returns string, set in PatternFlowGtpv1MessageTypeMetricTag. Name() string - // SetName assigns string provided by user to PatternFlowIpv4ProtocolMetricTag - SetName(value string) PatternFlowIpv4ProtocolMetricTag - // Offset returns uint32, set in PatternFlowIpv4ProtocolMetricTag. + // SetName assigns string provided by user to PatternFlowGtpv1MessageTypeMetricTag + SetName(value string) PatternFlowGtpv1MessageTypeMetricTag + // Offset returns uint32, set in PatternFlowGtpv1MessageTypeMetricTag. Offset() uint32 - // SetOffset assigns uint32 provided by user to PatternFlowIpv4ProtocolMetricTag - SetOffset(value uint32) PatternFlowIpv4ProtocolMetricTag - // HasOffset checks if Offset has been set in PatternFlowIpv4ProtocolMetricTag + // SetOffset assigns uint32 provided by user to PatternFlowGtpv1MessageTypeMetricTag + SetOffset(value uint32) PatternFlowGtpv1MessageTypeMetricTag + // HasOffset checks if Offset has been set in PatternFlowGtpv1MessageTypeMetricTag HasOffset() bool - // Length returns uint32, set in PatternFlowIpv4ProtocolMetricTag. + // Length returns uint32, set in PatternFlowGtpv1MessageTypeMetricTag. Length() uint32 - // SetLength assigns uint32 provided by user to PatternFlowIpv4ProtocolMetricTag - SetLength(value uint32) PatternFlowIpv4ProtocolMetricTag - // HasLength checks if Length has been set in PatternFlowIpv4ProtocolMetricTag + // SetLength assigns uint32 provided by user to PatternFlowGtpv1MessageTypeMetricTag + SetLength(value uint32) PatternFlowGtpv1MessageTypeMetricTag + // HasLength checks if Length has been set in PatternFlowGtpv1MessageTypeMetricTag HasLength() bool } // Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field // Name returns a string -func (obj *patternFlowIpv4ProtocolMetricTag) Name() string { +func (obj *patternFlowGtpv1MessageTypeMetricTag) Name() string { return *obj.obj.Name } // Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field -// SetName sets the string value in the PatternFlowIpv4ProtocolMetricTag object -func (obj *patternFlowIpv4ProtocolMetricTag) SetName(value string) PatternFlowIpv4ProtocolMetricTag { +// SetName sets the string value in the PatternFlowGtpv1MessageTypeMetricTag object +func (obj *patternFlowGtpv1MessageTypeMetricTag) SetName(value string) PatternFlowGtpv1MessageTypeMetricTag { obj.obj.Name = &value return obj @@ -201141,7 +244283,7 @@ func (obj *patternFlowIpv4ProtocolMetricTag) SetName(value string) PatternFlowIp // Offset in bits relative to start of corresponding header field // Offset returns a uint32 -func (obj *patternFlowIpv4ProtocolMetricTag) Offset() uint32 { +func (obj *patternFlowGtpv1MessageTypeMetricTag) Offset() uint32 { return *obj.obj.Offset @@ -201149,13 +244291,13 @@ func (obj *patternFlowIpv4ProtocolMetricTag) Offset() uint32 { // Offset in bits relative to start of corresponding header field // Offset returns a uint32 -func (obj *patternFlowIpv4ProtocolMetricTag) HasOffset() bool { +func (obj *patternFlowGtpv1MessageTypeMetricTag) HasOffset() bool { return obj.obj.Offset != nil } // Offset in bits relative to start of corresponding header field -// SetOffset sets the uint32 value in the PatternFlowIpv4ProtocolMetricTag object -func (obj *patternFlowIpv4ProtocolMetricTag) SetOffset(value uint32) PatternFlowIpv4ProtocolMetricTag { +// SetOffset sets the uint32 value in the PatternFlowGtpv1MessageTypeMetricTag object +func (obj *patternFlowGtpv1MessageTypeMetricTag) SetOffset(value uint32) PatternFlowGtpv1MessageTypeMetricTag { obj.obj.Offset = &value return obj @@ -201163,7 +244305,7 @@ func (obj *patternFlowIpv4ProtocolMetricTag) SetOffset(value uint32) PatternFlow // Number of bits to track for metrics starting from configured offset of corresponding header field // Length returns a uint32 -func (obj *patternFlowIpv4ProtocolMetricTag) Length() uint32 { +func (obj *patternFlowGtpv1MessageTypeMetricTag) Length() uint32 { return *obj.obj.Length @@ -201171,26 +244313,26 @@ func (obj *patternFlowIpv4ProtocolMetricTag) Length() uint32 { // Number of bits to track for metrics starting from configured offset of corresponding header field // Length returns a uint32 -func (obj *patternFlowIpv4ProtocolMetricTag) HasLength() bool { +func (obj *patternFlowGtpv1MessageTypeMetricTag) HasLength() bool { return obj.obj.Length != nil } // Number of bits to track for metrics starting from configured offset of corresponding header field -// SetLength sets the uint32 value in the PatternFlowIpv4ProtocolMetricTag object -func (obj *patternFlowIpv4ProtocolMetricTag) SetLength(value uint32) PatternFlowIpv4ProtocolMetricTag { +// SetLength sets the uint32 value in the PatternFlowGtpv1MessageTypeMetricTag object +func (obj *patternFlowGtpv1MessageTypeMetricTag) SetLength(value uint32) PatternFlowGtpv1MessageTypeMetricTag { obj.obj.Length = &value return obj } -func (obj *patternFlowIpv4ProtocolMetricTag) validateObj(vObj *validation, set_default bool) { +func (obj *patternFlowGtpv1MessageTypeMetricTag) validateObj(vObj *validation, set_default bool) { if set_default { obj.setDefault() } // Name is required if obj.obj.Name == nil { - vObj.validationErrors = append(vObj.validationErrors, "Name is required field on interface PatternFlowIpv4ProtocolMetricTag") + vObj.validationErrors = append(vObj.validationErrors, "Name is required field on interface PatternFlowGtpv1MessageTypeMetricTag") } if obj.obj.Offset != nil { @@ -201198,7 +244340,7 @@ func (obj *patternFlowIpv4ProtocolMetricTag) validateObj(vObj *validation, set_d if *obj.obj.Offset > 7 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowIpv4ProtocolMetricTag.Offset <= 7 but Got %d", *obj.obj.Offset)) + fmt.Sprintf("0 <= PatternFlowGtpv1MessageTypeMetricTag.Offset <= 7 but Got %d", *obj.obj.Offset)) } } @@ -201208,14 +244350,14 @@ func (obj *patternFlowIpv4ProtocolMetricTag) validateObj(vObj *validation, set_d if *obj.obj.Length < 1 || *obj.obj.Length > 8 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("1 <= PatternFlowIpv4ProtocolMetricTag.Length <= 8 but Got %d", *obj.obj.Length)) + fmt.Sprintf("1 <= PatternFlowGtpv1MessageTypeMetricTag.Length <= 8 but Got %d", *obj.obj.Length)) } } } -func (obj *patternFlowIpv4ProtocolMetricTag) setDefault() { +func (obj *patternFlowGtpv1MessageTypeMetricTag) setDefault() { if obj.obj.Offset == nil { obj.SetOffset(0) } @@ -201225,29 +244367,29 @@ func (obj *patternFlowIpv4ProtocolMetricTag) setDefault() { } -// ***** PatternFlowIpv4SrcCounter ***** -type patternFlowIpv4SrcCounter struct { +// ***** PatternFlowGtpv1MessageLengthCounter ***** +type patternFlowGtpv1MessageLengthCounter struct { validation - obj *otg.PatternFlowIpv4SrcCounter + obj *otg.PatternFlowGtpv1MessageLengthCounter } -func NewPatternFlowIpv4SrcCounter() PatternFlowIpv4SrcCounter { - obj := patternFlowIpv4SrcCounter{obj: &otg.PatternFlowIpv4SrcCounter{}} +func NewPatternFlowGtpv1MessageLengthCounter() PatternFlowGtpv1MessageLengthCounter { + obj := patternFlowGtpv1MessageLengthCounter{obj: &otg.PatternFlowGtpv1MessageLengthCounter{}} obj.setDefault() return &obj } -func (obj *patternFlowIpv4SrcCounter) Msg() *otg.PatternFlowIpv4SrcCounter { +func (obj *patternFlowGtpv1MessageLengthCounter) Msg() *otg.PatternFlowGtpv1MessageLengthCounter { return obj.obj } -func (obj *patternFlowIpv4SrcCounter) SetMsg(msg *otg.PatternFlowIpv4SrcCounter) PatternFlowIpv4SrcCounter { +func (obj *patternFlowGtpv1MessageLengthCounter) SetMsg(msg *otg.PatternFlowGtpv1MessageLengthCounter) PatternFlowGtpv1MessageLengthCounter { proto.Merge(obj.obj, msg) return obj } -func (obj *patternFlowIpv4SrcCounter) ToProto() (*otg.PatternFlowIpv4SrcCounter, error) { +func (obj *patternFlowGtpv1MessageLengthCounter) ToProto() (*otg.PatternFlowGtpv1MessageLengthCounter, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -201255,7 +244397,7 @@ func (obj *patternFlowIpv4SrcCounter) ToProto() (*otg.PatternFlowIpv4SrcCounter, return obj.Msg(), nil } -func (obj *patternFlowIpv4SrcCounter) FromProto(msg *otg.PatternFlowIpv4SrcCounter) (PatternFlowIpv4SrcCounter, error) { +func (obj *patternFlowGtpv1MessageLengthCounter) FromProto(msg *otg.PatternFlowGtpv1MessageLengthCounter) (PatternFlowGtpv1MessageLengthCounter, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -201264,7 +244406,7 @@ func (obj *patternFlowIpv4SrcCounter) FromProto(msg *otg.PatternFlowIpv4SrcCount return newObj, nil } -func (obj *patternFlowIpv4SrcCounter) ToPbText() (string, error) { +func (obj *patternFlowGtpv1MessageLengthCounter) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -201276,7 +244418,7 @@ func (obj *patternFlowIpv4SrcCounter) ToPbText() (string, error) { return string(protoMarshal), nil } -func (obj *patternFlowIpv4SrcCounter) FromPbText(value string) error { +func (obj *patternFlowGtpv1MessageLengthCounter) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj @@ -201289,7 +244431,7 @@ func (obj *patternFlowIpv4SrcCounter) FromPbText(value string) error { return retObj } -func (obj *patternFlowIpv4SrcCounter) ToYaml() (string, error) { +func (obj *patternFlowGtpv1MessageLengthCounter) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -201310,7 +244452,7 @@ func (obj *patternFlowIpv4SrcCounter) ToYaml() (string, error) { return string(data), nil } -func (obj *patternFlowIpv4SrcCounter) FromYaml(value string) error { +func (obj *patternFlowGtpv1MessageLengthCounter) FromYaml(value string) error { if value == "" { value = "{}" } @@ -201335,7 +244477,7 @@ func (obj *patternFlowIpv4SrcCounter) FromYaml(value string) error { return nil } -func (obj *patternFlowIpv4SrcCounter) ToJson() (string, error) { +func (obj *patternFlowGtpv1MessageLengthCounter) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -201353,7 +244495,7 @@ func (obj *patternFlowIpv4SrcCounter) ToJson() (string, error) { return string(data), nil } -func (obj *patternFlowIpv4SrcCounter) FromJson(value string) error { +func (obj *patternFlowGtpv1MessageLengthCounter) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -201374,19 +244516,19 @@ func (obj *patternFlowIpv4SrcCounter) FromJson(value string) error { return nil } -func (obj *patternFlowIpv4SrcCounter) validateToAndFrom() error { +func (obj *patternFlowGtpv1MessageLengthCounter) validateToAndFrom() error { // emptyVars() obj.validateObj(&obj.validation, true) return obj.validationResult() } -func (obj *patternFlowIpv4SrcCounter) Validate() error { +func (obj *patternFlowGtpv1MessageLengthCounter) Validate() error { // emptyVars() obj.validateObj(&obj.validation, false) return obj.validationResult() } -func (obj *patternFlowIpv4SrcCounter) String() string { +func (obj *patternFlowGtpv1MessageLengthCounter) String() string { str, err := obj.ToYaml() if err != nil { return err.Error() @@ -201394,12 +244536,12 @@ func (obj *patternFlowIpv4SrcCounter) String() string { return str } -func (obj *patternFlowIpv4SrcCounter) Clone() (PatternFlowIpv4SrcCounter, error) { +func (obj *patternFlowGtpv1MessageLengthCounter) Clone() (PatternFlowGtpv1MessageLengthCounter, error) { vErr := obj.Validate() if vErr != nil { return nil, vErr } - newObj := NewPatternFlowIpv4SrcCounter() + newObj := NewPatternFlowGtpv1MessageLengthCounter() data, err := proto.Marshal(obj.Msg()) if err != nil { return nil, err @@ -201411,99 +244553,99 @@ func (obj *patternFlowIpv4SrcCounter) Clone() (PatternFlowIpv4SrcCounter, error) return newObj, nil } -// PatternFlowIpv4SrcCounter is ipv4 counter pattern -type PatternFlowIpv4SrcCounter interface { +// PatternFlowGtpv1MessageLengthCounter is integer counter pattern +type PatternFlowGtpv1MessageLengthCounter interface { Validation - // Msg marshals PatternFlowIpv4SrcCounter to protobuf object *otg.PatternFlowIpv4SrcCounter + // Msg marshals PatternFlowGtpv1MessageLengthCounter to protobuf object *otg.PatternFlowGtpv1MessageLengthCounter // and doesn't set defaults - Msg() *otg.PatternFlowIpv4SrcCounter - // SetMsg unmarshals PatternFlowIpv4SrcCounter from protobuf object *otg.PatternFlowIpv4SrcCounter + Msg() *otg.PatternFlowGtpv1MessageLengthCounter + // SetMsg unmarshals PatternFlowGtpv1MessageLengthCounter from protobuf object *otg.PatternFlowGtpv1MessageLengthCounter // and doesn't set defaults - SetMsg(*otg.PatternFlowIpv4SrcCounter) PatternFlowIpv4SrcCounter - // ToProto marshals PatternFlowIpv4SrcCounter to protobuf object *otg.PatternFlowIpv4SrcCounter - ToProto() (*otg.PatternFlowIpv4SrcCounter, error) - // ToPbText marshals PatternFlowIpv4SrcCounter to protobuf text + SetMsg(*otg.PatternFlowGtpv1MessageLengthCounter) PatternFlowGtpv1MessageLengthCounter + // ToProto marshals PatternFlowGtpv1MessageLengthCounter to protobuf object *otg.PatternFlowGtpv1MessageLengthCounter + ToProto() (*otg.PatternFlowGtpv1MessageLengthCounter, error) + // ToPbText marshals PatternFlowGtpv1MessageLengthCounter to protobuf text ToPbText() (string, error) - // ToYaml marshals PatternFlowIpv4SrcCounter to YAML text + // ToYaml marshals PatternFlowGtpv1MessageLengthCounter to YAML text ToYaml() (string, error) - // ToJson marshals PatternFlowIpv4SrcCounter to JSON text + // ToJson marshals PatternFlowGtpv1MessageLengthCounter to JSON text ToJson() (string, error) - // FromProto unmarshals PatternFlowIpv4SrcCounter from protobuf object *otg.PatternFlowIpv4SrcCounter - FromProto(msg *otg.PatternFlowIpv4SrcCounter) (PatternFlowIpv4SrcCounter, error) - // FromPbText unmarshals PatternFlowIpv4SrcCounter from protobuf text + // FromProto unmarshals PatternFlowGtpv1MessageLengthCounter from protobuf object *otg.PatternFlowGtpv1MessageLengthCounter + FromProto(msg *otg.PatternFlowGtpv1MessageLengthCounter) (PatternFlowGtpv1MessageLengthCounter, error) + // FromPbText unmarshals PatternFlowGtpv1MessageLengthCounter from protobuf text FromPbText(value string) error - // FromYaml unmarshals PatternFlowIpv4SrcCounter from YAML text + // FromYaml unmarshals PatternFlowGtpv1MessageLengthCounter from YAML text FromYaml(value string) error - // FromJson unmarshals PatternFlowIpv4SrcCounter from JSON text + // FromJson unmarshals PatternFlowGtpv1MessageLengthCounter from JSON text FromJson(value string) error - // Validate validates PatternFlowIpv4SrcCounter + // Validate validates PatternFlowGtpv1MessageLengthCounter Validate() error // A stringer function String() string // Clones the object - Clone() (PatternFlowIpv4SrcCounter, error) + Clone() (PatternFlowGtpv1MessageLengthCounter, error) validateToAndFrom() error validateObj(vObj *validation, set_default bool) setDefault() - // Start returns string, set in PatternFlowIpv4SrcCounter. - Start() string - // SetStart assigns string provided by user to PatternFlowIpv4SrcCounter - SetStart(value string) PatternFlowIpv4SrcCounter - // HasStart checks if Start has been set in PatternFlowIpv4SrcCounter + // Start returns uint32, set in PatternFlowGtpv1MessageLengthCounter. + Start() uint32 + // SetStart assigns uint32 provided by user to PatternFlowGtpv1MessageLengthCounter + SetStart(value uint32) PatternFlowGtpv1MessageLengthCounter + // HasStart checks if Start has been set in PatternFlowGtpv1MessageLengthCounter HasStart() bool - // Step returns string, set in PatternFlowIpv4SrcCounter. - Step() string - // SetStep assigns string provided by user to PatternFlowIpv4SrcCounter - SetStep(value string) PatternFlowIpv4SrcCounter - // HasStep checks if Step has been set in PatternFlowIpv4SrcCounter + // Step returns uint32, set in PatternFlowGtpv1MessageLengthCounter. + Step() uint32 + // SetStep assigns uint32 provided by user to PatternFlowGtpv1MessageLengthCounter + SetStep(value uint32) PatternFlowGtpv1MessageLengthCounter + // HasStep checks if Step has been set in PatternFlowGtpv1MessageLengthCounter HasStep() bool - // Count returns uint32, set in PatternFlowIpv4SrcCounter. + // Count returns uint32, set in PatternFlowGtpv1MessageLengthCounter. Count() uint32 - // SetCount assigns uint32 provided by user to PatternFlowIpv4SrcCounter - SetCount(value uint32) PatternFlowIpv4SrcCounter - // HasCount checks if Count has been set in PatternFlowIpv4SrcCounter + // SetCount assigns uint32 provided by user to PatternFlowGtpv1MessageLengthCounter + SetCount(value uint32) PatternFlowGtpv1MessageLengthCounter + // HasCount checks if Count has been set in PatternFlowGtpv1MessageLengthCounter HasCount() bool } // description is TBD -// Start returns a string -func (obj *patternFlowIpv4SrcCounter) Start() string { +// Start returns a uint32 +func (obj *patternFlowGtpv1MessageLengthCounter) Start() uint32 { return *obj.obj.Start } // description is TBD -// Start returns a string -func (obj *patternFlowIpv4SrcCounter) HasStart() bool { +// Start returns a uint32 +func (obj *patternFlowGtpv1MessageLengthCounter) HasStart() bool { return obj.obj.Start != nil } // description is TBD -// SetStart sets the string value in the PatternFlowIpv4SrcCounter object -func (obj *patternFlowIpv4SrcCounter) SetStart(value string) PatternFlowIpv4SrcCounter { +// SetStart sets the uint32 value in the PatternFlowGtpv1MessageLengthCounter object +func (obj *patternFlowGtpv1MessageLengthCounter) SetStart(value uint32) PatternFlowGtpv1MessageLengthCounter { obj.obj.Start = &value return obj } // description is TBD -// Step returns a string -func (obj *patternFlowIpv4SrcCounter) Step() string { +// Step returns a uint32 +func (obj *patternFlowGtpv1MessageLengthCounter) Step() uint32 { return *obj.obj.Step } // description is TBD -// Step returns a string -func (obj *patternFlowIpv4SrcCounter) HasStep() bool { +// Step returns a uint32 +func (obj *patternFlowGtpv1MessageLengthCounter) HasStep() bool { return obj.obj.Step != nil } // description is TBD -// SetStep sets the string value in the PatternFlowIpv4SrcCounter object -func (obj *patternFlowIpv4SrcCounter) SetStep(value string) PatternFlowIpv4SrcCounter { +// SetStep sets the uint32 value in the PatternFlowGtpv1MessageLengthCounter object +func (obj *patternFlowGtpv1MessageLengthCounter) SetStep(value uint32) PatternFlowGtpv1MessageLengthCounter { obj.obj.Step = &value return obj @@ -201511,7 +244653,7 @@ func (obj *patternFlowIpv4SrcCounter) SetStep(value string) PatternFlowIpv4SrcCo // description is TBD // Count returns a uint32 -func (obj *patternFlowIpv4SrcCounter) Count() uint32 { +func (obj *patternFlowGtpv1MessageLengthCounter) Count() uint32 { return *obj.obj.Count @@ -201519,49 +244661,61 @@ func (obj *patternFlowIpv4SrcCounter) Count() uint32 { // description is TBD // Count returns a uint32 -func (obj *patternFlowIpv4SrcCounter) HasCount() bool { +func (obj *patternFlowGtpv1MessageLengthCounter) HasCount() bool { return obj.obj.Count != nil } // description is TBD -// SetCount sets the uint32 value in the PatternFlowIpv4SrcCounter object -func (obj *patternFlowIpv4SrcCounter) SetCount(value uint32) PatternFlowIpv4SrcCounter { +// SetCount sets the uint32 value in the PatternFlowGtpv1MessageLengthCounter object +func (obj *patternFlowGtpv1MessageLengthCounter) SetCount(value uint32) PatternFlowGtpv1MessageLengthCounter { obj.obj.Count = &value return obj } -func (obj *patternFlowIpv4SrcCounter) validateObj(vObj *validation, set_default bool) { +func (obj *patternFlowGtpv1MessageLengthCounter) validateObj(vObj *validation, set_default bool) { if set_default { obj.setDefault() } if obj.obj.Start != nil { - err := obj.validateIpv4(obj.Start()) - if err != nil { - vObj.validationErrors = append(vObj.validationErrors, fmt.Sprintf("%s %s", err.Error(), "on PatternFlowIpv4SrcCounter.Start")) + if *obj.obj.Start > 65535 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("0 <= PatternFlowGtpv1MessageLengthCounter.Start <= 65535 but Got %d", *obj.obj.Start)) } } if obj.obj.Step != nil { - err := obj.validateIpv4(obj.Step()) - if err != nil { - vObj.validationErrors = append(vObj.validationErrors, fmt.Sprintf("%s %s", err.Error(), "on PatternFlowIpv4SrcCounter.Step")) + if *obj.obj.Step > 65535 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("0 <= PatternFlowGtpv1MessageLengthCounter.Step <= 65535 but Got %d", *obj.obj.Step)) + } + + } + + if obj.obj.Count != nil { + + if *obj.obj.Count > 65535 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("0 <= PatternFlowGtpv1MessageLengthCounter.Count <= 65535 but Got %d", *obj.obj.Count)) } } } -func (obj *patternFlowIpv4SrcCounter) setDefault() { +func (obj *patternFlowGtpv1MessageLengthCounter) setDefault() { if obj.obj.Start == nil { - obj.SetStart("0.0.0.0") + obj.SetStart(0) } if obj.obj.Step == nil { - obj.SetStep("0.0.0.1") + obj.SetStep(1) } if obj.obj.Count == nil { obj.SetCount(1) @@ -201569,29 +244723,29 @@ func (obj *patternFlowIpv4SrcCounter) setDefault() { } -// ***** PatternFlowIpv4SrcMetricTag ***** -type patternFlowIpv4SrcMetricTag struct { +// ***** PatternFlowGtpv1MessageLengthMetricTag ***** +type patternFlowGtpv1MessageLengthMetricTag struct { validation - obj *otg.PatternFlowIpv4SrcMetricTag + obj *otg.PatternFlowGtpv1MessageLengthMetricTag } -func NewPatternFlowIpv4SrcMetricTag() PatternFlowIpv4SrcMetricTag { - obj := patternFlowIpv4SrcMetricTag{obj: &otg.PatternFlowIpv4SrcMetricTag{}} +func NewPatternFlowGtpv1MessageLengthMetricTag() PatternFlowGtpv1MessageLengthMetricTag { + obj := patternFlowGtpv1MessageLengthMetricTag{obj: &otg.PatternFlowGtpv1MessageLengthMetricTag{}} obj.setDefault() return &obj } -func (obj *patternFlowIpv4SrcMetricTag) Msg() *otg.PatternFlowIpv4SrcMetricTag { +func (obj *patternFlowGtpv1MessageLengthMetricTag) Msg() *otg.PatternFlowGtpv1MessageLengthMetricTag { return obj.obj } -func (obj *patternFlowIpv4SrcMetricTag) SetMsg(msg *otg.PatternFlowIpv4SrcMetricTag) PatternFlowIpv4SrcMetricTag { +func (obj *patternFlowGtpv1MessageLengthMetricTag) SetMsg(msg *otg.PatternFlowGtpv1MessageLengthMetricTag) PatternFlowGtpv1MessageLengthMetricTag { proto.Merge(obj.obj, msg) return obj } -func (obj *patternFlowIpv4SrcMetricTag) ToProto() (*otg.PatternFlowIpv4SrcMetricTag, error) { +func (obj *patternFlowGtpv1MessageLengthMetricTag) ToProto() (*otg.PatternFlowGtpv1MessageLengthMetricTag, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -201599,7 +244753,7 @@ func (obj *patternFlowIpv4SrcMetricTag) ToProto() (*otg.PatternFlowIpv4SrcMetric return obj.Msg(), nil } -func (obj *patternFlowIpv4SrcMetricTag) FromProto(msg *otg.PatternFlowIpv4SrcMetricTag) (PatternFlowIpv4SrcMetricTag, error) { +func (obj *patternFlowGtpv1MessageLengthMetricTag) FromProto(msg *otg.PatternFlowGtpv1MessageLengthMetricTag) (PatternFlowGtpv1MessageLengthMetricTag, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -201608,7 +244762,7 @@ func (obj *patternFlowIpv4SrcMetricTag) FromProto(msg *otg.PatternFlowIpv4SrcMet return newObj, nil } -func (obj *patternFlowIpv4SrcMetricTag) ToPbText() (string, error) { +func (obj *patternFlowGtpv1MessageLengthMetricTag) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -201620,7 +244774,7 @@ func (obj *patternFlowIpv4SrcMetricTag) ToPbText() (string, error) { return string(protoMarshal), nil } -func (obj *patternFlowIpv4SrcMetricTag) FromPbText(value string) error { +func (obj *patternFlowGtpv1MessageLengthMetricTag) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj @@ -201633,7 +244787,7 @@ func (obj *patternFlowIpv4SrcMetricTag) FromPbText(value string) error { return retObj } -func (obj *patternFlowIpv4SrcMetricTag) ToYaml() (string, error) { +func (obj *patternFlowGtpv1MessageLengthMetricTag) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -201654,7 +244808,7 @@ func (obj *patternFlowIpv4SrcMetricTag) ToYaml() (string, error) { return string(data), nil } -func (obj *patternFlowIpv4SrcMetricTag) FromYaml(value string) error { +func (obj *patternFlowGtpv1MessageLengthMetricTag) FromYaml(value string) error { if value == "" { value = "{}" } @@ -201679,7 +244833,7 @@ func (obj *patternFlowIpv4SrcMetricTag) FromYaml(value string) error { return nil } -func (obj *patternFlowIpv4SrcMetricTag) ToJson() (string, error) { +func (obj *patternFlowGtpv1MessageLengthMetricTag) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -201697,7 +244851,7 @@ func (obj *patternFlowIpv4SrcMetricTag) ToJson() (string, error) { return string(data), nil } -func (obj *patternFlowIpv4SrcMetricTag) FromJson(value string) error { +func (obj *patternFlowGtpv1MessageLengthMetricTag) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -201718,19 +244872,19 @@ func (obj *patternFlowIpv4SrcMetricTag) FromJson(value string) error { return nil } -func (obj *patternFlowIpv4SrcMetricTag) validateToAndFrom() error { +func (obj *patternFlowGtpv1MessageLengthMetricTag) validateToAndFrom() error { // emptyVars() obj.validateObj(&obj.validation, true) return obj.validationResult() } -func (obj *patternFlowIpv4SrcMetricTag) Validate() error { +func (obj *patternFlowGtpv1MessageLengthMetricTag) Validate() error { // emptyVars() obj.validateObj(&obj.validation, false) return obj.validationResult() } -func (obj *patternFlowIpv4SrcMetricTag) String() string { +func (obj *patternFlowGtpv1MessageLengthMetricTag) String() string { str, err := obj.ToYaml() if err != nil { return err.Error() @@ -201738,12 +244892,12 @@ func (obj *patternFlowIpv4SrcMetricTag) String() string { return str } -func (obj *patternFlowIpv4SrcMetricTag) Clone() (PatternFlowIpv4SrcMetricTag, error) { +func (obj *patternFlowGtpv1MessageLengthMetricTag) Clone() (PatternFlowGtpv1MessageLengthMetricTag, error) { vErr := obj.Validate() if vErr != nil { return nil, vErr } - newObj := NewPatternFlowIpv4SrcMetricTag() + newObj := NewPatternFlowGtpv1MessageLengthMetricTag() data, err := proto.Marshal(obj.Msg()) if err != nil { return nil, err @@ -201755,69 +244909,69 @@ func (obj *patternFlowIpv4SrcMetricTag) Clone() (PatternFlowIpv4SrcMetricTag, er return newObj, nil } -// PatternFlowIpv4SrcMetricTag is metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. -type PatternFlowIpv4SrcMetricTag interface { +// PatternFlowGtpv1MessageLengthMetricTag is metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. +type PatternFlowGtpv1MessageLengthMetricTag interface { Validation - // Msg marshals PatternFlowIpv4SrcMetricTag to protobuf object *otg.PatternFlowIpv4SrcMetricTag + // Msg marshals PatternFlowGtpv1MessageLengthMetricTag to protobuf object *otg.PatternFlowGtpv1MessageLengthMetricTag // and doesn't set defaults - Msg() *otg.PatternFlowIpv4SrcMetricTag - // SetMsg unmarshals PatternFlowIpv4SrcMetricTag from protobuf object *otg.PatternFlowIpv4SrcMetricTag + Msg() *otg.PatternFlowGtpv1MessageLengthMetricTag + // SetMsg unmarshals PatternFlowGtpv1MessageLengthMetricTag from protobuf object *otg.PatternFlowGtpv1MessageLengthMetricTag // and doesn't set defaults - SetMsg(*otg.PatternFlowIpv4SrcMetricTag) PatternFlowIpv4SrcMetricTag - // ToProto marshals PatternFlowIpv4SrcMetricTag to protobuf object *otg.PatternFlowIpv4SrcMetricTag - ToProto() (*otg.PatternFlowIpv4SrcMetricTag, error) - // ToPbText marshals PatternFlowIpv4SrcMetricTag to protobuf text + SetMsg(*otg.PatternFlowGtpv1MessageLengthMetricTag) PatternFlowGtpv1MessageLengthMetricTag + // ToProto marshals PatternFlowGtpv1MessageLengthMetricTag to protobuf object *otg.PatternFlowGtpv1MessageLengthMetricTag + ToProto() (*otg.PatternFlowGtpv1MessageLengthMetricTag, error) + // ToPbText marshals PatternFlowGtpv1MessageLengthMetricTag to protobuf text ToPbText() (string, error) - // ToYaml marshals PatternFlowIpv4SrcMetricTag to YAML text + // ToYaml marshals PatternFlowGtpv1MessageLengthMetricTag to YAML text ToYaml() (string, error) - // ToJson marshals PatternFlowIpv4SrcMetricTag to JSON text + // ToJson marshals PatternFlowGtpv1MessageLengthMetricTag to JSON text ToJson() (string, error) - // FromProto unmarshals PatternFlowIpv4SrcMetricTag from protobuf object *otg.PatternFlowIpv4SrcMetricTag - FromProto(msg *otg.PatternFlowIpv4SrcMetricTag) (PatternFlowIpv4SrcMetricTag, error) - // FromPbText unmarshals PatternFlowIpv4SrcMetricTag from protobuf text + // FromProto unmarshals PatternFlowGtpv1MessageLengthMetricTag from protobuf object *otg.PatternFlowGtpv1MessageLengthMetricTag + FromProto(msg *otg.PatternFlowGtpv1MessageLengthMetricTag) (PatternFlowGtpv1MessageLengthMetricTag, error) + // FromPbText unmarshals PatternFlowGtpv1MessageLengthMetricTag from protobuf text FromPbText(value string) error - // FromYaml unmarshals PatternFlowIpv4SrcMetricTag from YAML text + // FromYaml unmarshals PatternFlowGtpv1MessageLengthMetricTag from YAML text FromYaml(value string) error - // FromJson unmarshals PatternFlowIpv4SrcMetricTag from JSON text + // FromJson unmarshals PatternFlowGtpv1MessageLengthMetricTag from JSON text FromJson(value string) error - // Validate validates PatternFlowIpv4SrcMetricTag + // Validate validates PatternFlowGtpv1MessageLengthMetricTag Validate() error // A stringer function String() string // Clones the object - Clone() (PatternFlowIpv4SrcMetricTag, error) + Clone() (PatternFlowGtpv1MessageLengthMetricTag, error) validateToAndFrom() error validateObj(vObj *validation, set_default bool) setDefault() - // Name returns string, set in PatternFlowIpv4SrcMetricTag. + // Name returns string, set in PatternFlowGtpv1MessageLengthMetricTag. Name() string - // SetName assigns string provided by user to PatternFlowIpv4SrcMetricTag - SetName(value string) PatternFlowIpv4SrcMetricTag - // Offset returns uint32, set in PatternFlowIpv4SrcMetricTag. + // SetName assigns string provided by user to PatternFlowGtpv1MessageLengthMetricTag + SetName(value string) PatternFlowGtpv1MessageLengthMetricTag + // Offset returns uint32, set in PatternFlowGtpv1MessageLengthMetricTag. Offset() uint32 - // SetOffset assigns uint32 provided by user to PatternFlowIpv4SrcMetricTag - SetOffset(value uint32) PatternFlowIpv4SrcMetricTag - // HasOffset checks if Offset has been set in PatternFlowIpv4SrcMetricTag + // SetOffset assigns uint32 provided by user to PatternFlowGtpv1MessageLengthMetricTag + SetOffset(value uint32) PatternFlowGtpv1MessageLengthMetricTag + // HasOffset checks if Offset has been set in PatternFlowGtpv1MessageLengthMetricTag HasOffset() bool - // Length returns uint32, set in PatternFlowIpv4SrcMetricTag. + // Length returns uint32, set in PatternFlowGtpv1MessageLengthMetricTag. Length() uint32 - // SetLength assigns uint32 provided by user to PatternFlowIpv4SrcMetricTag - SetLength(value uint32) PatternFlowIpv4SrcMetricTag - // HasLength checks if Length has been set in PatternFlowIpv4SrcMetricTag + // SetLength assigns uint32 provided by user to PatternFlowGtpv1MessageLengthMetricTag + SetLength(value uint32) PatternFlowGtpv1MessageLengthMetricTag + // HasLength checks if Length has been set in PatternFlowGtpv1MessageLengthMetricTag HasLength() bool } // Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field // Name returns a string -func (obj *patternFlowIpv4SrcMetricTag) Name() string { +func (obj *patternFlowGtpv1MessageLengthMetricTag) Name() string { return *obj.obj.Name } // Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field -// SetName sets the string value in the PatternFlowIpv4SrcMetricTag object -func (obj *patternFlowIpv4SrcMetricTag) SetName(value string) PatternFlowIpv4SrcMetricTag { +// SetName sets the string value in the PatternFlowGtpv1MessageLengthMetricTag object +func (obj *patternFlowGtpv1MessageLengthMetricTag) SetName(value string) PatternFlowGtpv1MessageLengthMetricTag { obj.obj.Name = &value return obj @@ -201825,7 +244979,7 @@ func (obj *patternFlowIpv4SrcMetricTag) SetName(value string) PatternFlowIpv4Src // Offset in bits relative to start of corresponding header field // Offset returns a uint32 -func (obj *patternFlowIpv4SrcMetricTag) Offset() uint32 { +func (obj *patternFlowGtpv1MessageLengthMetricTag) Offset() uint32 { return *obj.obj.Offset @@ -201833,13 +244987,13 @@ func (obj *patternFlowIpv4SrcMetricTag) Offset() uint32 { // Offset in bits relative to start of corresponding header field // Offset returns a uint32 -func (obj *patternFlowIpv4SrcMetricTag) HasOffset() bool { +func (obj *patternFlowGtpv1MessageLengthMetricTag) HasOffset() bool { return obj.obj.Offset != nil } // Offset in bits relative to start of corresponding header field -// SetOffset sets the uint32 value in the PatternFlowIpv4SrcMetricTag object -func (obj *patternFlowIpv4SrcMetricTag) SetOffset(value uint32) PatternFlowIpv4SrcMetricTag { +// SetOffset sets the uint32 value in the PatternFlowGtpv1MessageLengthMetricTag object +func (obj *patternFlowGtpv1MessageLengthMetricTag) SetOffset(value uint32) PatternFlowGtpv1MessageLengthMetricTag { obj.obj.Offset = &value return obj @@ -201847,7 +245001,7 @@ func (obj *patternFlowIpv4SrcMetricTag) SetOffset(value uint32) PatternFlowIpv4S // Number of bits to track for metrics starting from configured offset of corresponding header field // Length returns a uint32 -func (obj *patternFlowIpv4SrcMetricTag) Length() uint32 { +func (obj *patternFlowGtpv1MessageLengthMetricTag) Length() uint32 { return *obj.obj.Length @@ -201855,83 +245009,83 @@ func (obj *patternFlowIpv4SrcMetricTag) Length() uint32 { // Number of bits to track for metrics starting from configured offset of corresponding header field // Length returns a uint32 -func (obj *patternFlowIpv4SrcMetricTag) HasLength() bool { +func (obj *patternFlowGtpv1MessageLengthMetricTag) HasLength() bool { return obj.obj.Length != nil } // Number of bits to track for metrics starting from configured offset of corresponding header field -// SetLength sets the uint32 value in the PatternFlowIpv4SrcMetricTag object -func (obj *patternFlowIpv4SrcMetricTag) SetLength(value uint32) PatternFlowIpv4SrcMetricTag { +// SetLength sets the uint32 value in the PatternFlowGtpv1MessageLengthMetricTag object +func (obj *patternFlowGtpv1MessageLengthMetricTag) SetLength(value uint32) PatternFlowGtpv1MessageLengthMetricTag { obj.obj.Length = &value return obj } -func (obj *patternFlowIpv4SrcMetricTag) validateObj(vObj *validation, set_default bool) { +func (obj *patternFlowGtpv1MessageLengthMetricTag) validateObj(vObj *validation, set_default bool) { if set_default { obj.setDefault() } // Name is required if obj.obj.Name == nil { - vObj.validationErrors = append(vObj.validationErrors, "Name is required field on interface PatternFlowIpv4SrcMetricTag") + vObj.validationErrors = append(vObj.validationErrors, "Name is required field on interface PatternFlowGtpv1MessageLengthMetricTag") } if obj.obj.Offset != nil { - if *obj.obj.Offset > 31 { + if *obj.obj.Offset > 15 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowIpv4SrcMetricTag.Offset <= 31 but Got %d", *obj.obj.Offset)) + fmt.Sprintf("0 <= PatternFlowGtpv1MessageLengthMetricTag.Offset <= 15 but Got %d", *obj.obj.Offset)) } } if obj.obj.Length != nil { - if *obj.obj.Length < 1 || *obj.obj.Length > 32 { + if *obj.obj.Length < 1 || *obj.obj.Length > 16 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("1 <= PatternFlowIpv4SrcMetricTag.Length <= 32 but Got %d", *obj.obj.Length)) + fmt.Sprintf("1 <= PatternFlowGtpv1MessageLengthMetricTag.Length <= 16 but Got %d", *obj.obj.Length)) } } } -func (obj *patternFlowIpv4SrcMetricTag) setDefault() { +func (obj *patternFlowGtpv1MessageLengthMetricTag) setDefault() { if obj.obj.Offset == nil { obj.SetOffset(0) } if obj.obj.Length == nil { - obj.SetLength(32) + obj.SetLength(16) } } -// ***** PatternFlowIpv4DstCounter ***** -type patternFlowIpv4DstCounter struct { +// ***** PatternFlowGtpv1TeidCounter ***** +type patternFlowGtpv1TeidCounter struct { validation - obj *otg.PatternFlowIpv4DstCounter + obj *otg.PatternFlowGtpv1TeidCounter } -func NewPatternFlowIpv4DstCounter() PatternFlowIpv4DstCounter { - obj := patternFlowIpv4DstCounter{obj: &otg.PatternFlowIpv4DstCounter{}} +func NewPatternFlowGtpv1TeidCounter() PatternFlowGtpv1TeidCounter { + obj := patternFlowGtpv1TeidCounter{obj: &otg.PatternFlowGtpv1TeidCounter{}} obj.setDefault() return &obj } -func (obj *patternFlowIpv4DstCounter) Msg() *otg.PatternFlowIpv4DstCounter { +func (obj *patternFlowGtpv1TeidCounter) Msg() *otg.PatternFlowGtpv1TeidCounter { return obj.obj } -func (obj *patternFlowIpv4DstCounter) SetMsg(msg *otg.PatternFlowIpv4DstCounter) PatternFlowIpv4DstCounter { +func (obj *patternFlowGtpv1TeidCounter) SetMsg(msg *otg.PatternFlowGtpv1TeidCounter) PatternFlowGtpv1TeidCounter { proto.Merge(obj.obj, msg) return obj } -func (obj *patternFlowIpv4DstCounter) ToProto() (*otg.PatternFlowIpv4DstCounter, error) { +func (obj *patternFlowGtpv1TeidCounter) ToProto() (*otg.PatternFlowGtpv1TeidCounter, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -201939,7 +245093,7 @@ func (obj *patternFlowIpv4DstCounter) ToProto() (*otg.PatternFlowIpv4DstCounter, return obj.Msg(), nil } -func (obj *patternFlowIpv4DstCounter) FromProto(msg *otg.PatternFlowIpv4DstCounter) (PatternFlowIpv4DstCounter, error) { +func (obj *patternFlowGtpv1TeidCounter) FromProto(msg *otg.PatternFlowGtpv1TeidCounter) (PatternFlowGtpv1TeidCounter, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -201948,7 +245102,7 @@ func (obj *patternFlowIpv4DstCounter) FromProto(msg *otg.PatternFlowIpv4DstCount return newObj, nil } -func (obj *patternFlowIpv4DstCounter) ToPbText() (string, error) { +func (obj *patternFlowGtpv1TeidCounter) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -201960,7 +245114,7 @@ func (obj *patternFlowIpv4DstCounter) ToPbText() (string, error) { return string(protoMarshal), nil } -func (obj *patternFlowIpv4DstCounter) FromPbText(value string) error { +func (obj *patternFlowGtpv1TeidCounter) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj @@ -201973,7 +245127,7 @@ func (obj *patternFlowIpv4DstCounter) FromPbText(value string) error { return retObj } -func (obj *patternFlowIpv4DstCounter) ToYaml() (string, error) { +func (obj *patternFlowGtpv1TeidCounter) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -201994,7 +245148,7 @@ func (obj *patternFlowIpv4DstCounter) ToYaml() (string, error) { return string(data), nil } -func (obj *patternFlowIpv4DstCounter) FromYaml(value string) error { +func (obj *patternFlowGtpv1TeidCounter) FromYaml(value string) error { if value == "" { value = "{}" } @@ -202019,7 +245173,7 @@ func (obj *patternFlowIpv4DstCounter) FromYaml(value string) error { return nil } -func (obj *patternFlowIpv4DstCounter) ToJson() (string, error) { +func (obj *patternFlowGtpv1TeidCounter) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -202037,7 +245191,7 @@ func (obj *patternFlowIpv4DstCounter) ToJson() (string, error) { return string(data), nil } -func (obj *patternFlowIpv4DstCounter) FromJson(value string) error { +func (obj *patternFlowGtpv1TeidCounter) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -202058,19 +245212,19 @@ func (obj *patternFlowIpv4DstCounter) FromJson(value string) error { return nil } -func (obj *patternFlowIpv4DstCounter) validateToAndFrom() error { +func (obj *patternFlowGtpv1TeidCounter) validateToAndFrom() error { // emptyVars() obj.validateObj(&obj.validation, true) return obj.validationResult() } -func (obj *patternFlowIpv4DstCounter) Validate() error { +func (obj *patternFlowGtpv1TeidCounter) Validate() error { // emptyVars() obj.validateObj(&obj.validation, false) return obj.validationResult() } -func (obj *patternFlowIpv4DstCounter) String() string { +func (obj *patternFlowGtpv1TeidCounter) String() string { str, err := obj.ToYaml() if err != nil { return err.Error() @@ -202078,12 +245232,12 @@ func (obj *patternFlowIpv4DstCounter) String() string { return str } -func (obj *patternFlowIpv4DstCounter) Clone() (PatternFlowIpv4DstCounter, error) { +func (obj *patternFlowGtpv1TeidCounter) Clone() (PatternFlowGtpv1TeidCounter, error) { vErr := obj.Validate() if vErr != nil { return nil, vErr } - newObj := NewPatternFlowIpv4DstCounter() + newObj := NewPatternFlowGtpv1TeidCounter() data, err := proto.Marshal(obj.Msg()) if err != nil { return nil, err @@ -202095,99 +245249,99 @@ func (obj *patternFlowIpv4DstCounter) Clone() (PatternFlowIpv4DstCounter, error) return newObj, nil } -// PatternFlowIpv4DstCounter is ipv4 counter pattern -type PatternFlowIpv4DstCounter interface { +// PatternFlowGtpv1TeidCounter is integer counter pattern +type PatternFlowGtpv1TeidCounter interface { Validation - // Msg marshals PatternFlowIpv4DstCounter to protobuf object *otg.PatternFlowIpv4DstCounter + // Msg marshals PatternFlowGtpv1TeidCounter to protobuf object *otg.PatternFlowGtpv1TeidCounter // and doesn't set defaults - Msg() *otg.PatternFlowIpv4DstCounter - // SetMsg unmarshals PatternFlowIpv4DstCounter from protobuf object *otg.PatternFlowIpv4DstCounter + Msg() *otg.PatternFlowGtpv1TeidCounter + // SetMsg unmarshals PatternFlowGtpv1TeidCounter from protobuf object *otg.PatternFlowGtpv1TeidCounter // and doesn't set defaults - SetMsg(*otg.PatternFlowIpv4DstCounter) PatternFlowIpv4DstCounter - // ToProto marshals PatternFlowIpv4DstCounter to protobuf object *otg.PatternFlowIpv4DstCounter - ToProto() (*otg.PatternFlowIpv4DstCounter, error) - // ToPbText marshals PatternFlowIpv4DstCounter to protobuf text + SetMsg(*otg.PatternFlowGtpv1TeidCounter) PatternFlowGtpv1TeidCounter + // ToProto marshals PatternFlowGtpv1TeidCounter to protobuf object *otg.PatternFlowGtpv1TeidCounter + ToProto() (*otg.PatternFlowGtpv1TeidCounter, error) + // ToPbText marshals PatternFlowGtpv1TeidCounter to protobuf text ToPbText() (string, error) - // ToYaml marshals PatternFlowIpv4DstCounter to YAML text + // ToYaml marshals PatternFlowGtpv1TeidCounter to YAML text ToYaml() (string, error) - // ToJson marshals PatternFlowIpv4DstCounter to JSON text + // ToJson marshals PatternFlowGtpv1TeidCounter to JSON text ToJson() (string, error) - // FromProto unmarshals PatternFlowIpv4DstCounter from protobuf object *otg.PatternFlowIpv4DstCounter - FromProto(msg *otg.PatternFlowIpv4DstCounter) (PatternFlowIpv4DstCounter, error) - // FromPbText unmarshals PatternFlowIpv4DstCounter from protobuf text + // FromProto unmarshals PatternFlowGtpv1TeidCounter from protobuf object *otg.PatternFlowGtpv1TeidCounter + FromProto(msg *otg.PatternFlowGtpv1TeidCounter) (PatternFlowGtpv1TeidCounter, error) + // FromPbText unmarshals PatternFlowGtpv1TeidCounter from protobuf text FromPbText(value string) error - // FromYaml unmarshals PatternFlowIpv4DstCounter from YAML text + // FromYaml unmarshals PatternFlowGtpv1TeidCounter from YAML text FromYaml(value string) error - // FromJson unmarshals PatternFlowIpv4DstCounter from JSON text + // FromJson unmarshals PatternFlowGtpv1TeidCounter from JSON text FromJson(value string) error - // Validate validates PatternFlowIpv4DstCounter + // Validate validates PatternFlowGtpv1TeidCounter Validate() error // A stringer function String() string // Clones the object - Clone() (PatternFlowIpv4DstCounter, error) + Clone() (PatternFlowGtpv1TeidCounter, error) validateToAndFrom() error validateObj(vObj *validation, set_default bool) setDefault() - // Start returns string, set in PatternFlowIpv4DstCounter. - Start() string - // SetStart assigns string provided by user to PatternFlowIpv4DstCounter - SetStart(value string) PatternFlowIpv4DstCounter - // HasStart checks if Start has been set in PatternFlowIpv4DstCounter + // Start returns uint32, set in PatternFlowGtpv1TeidCounter. + Start() uint32 + // SetStart assigns uint32 provided by user to PatternFlowGtpv1TeidCounter + SetStart(value uint32) PatternFlowGtpv1TeidCounter + // HasStart checks if Start has been set in PatternFlowGtpv1TeidCounter HasStart() bool - // Step returns string, set in PatternFlowIpv4DstCounter. - Step() string - // SetStep assigns string provided by user to PatternFlowIpv4DstCounter - SetStep(value string) PatternFlowIpv4DstCounter - // HasStep checks if Step has been set in PatternFlowIpv4DstCounter + // Step returns uint32, set in PatternFlowGtpv1TeidCounter. + Step() uint32 + // SetStep assigns uint32 provided by user to PatternFlowGtpv1TeidCounter + SetStep(value uint32) PatternFlowGtpv1TeidCounter + // HasStep checks if Step has been set in PatternFlowGtpv1TeidCounter HasStep() bool - // Count returns uint32, set in PatternFlowIpv4DstCounter. + // Count returns uint32, set in PatternFlowGtpv1TeidCounter. Count() uint32 - // SetCount assigns uint32 provided by user to PatternFlowIpv4DstCounter - SetCount(value uint32) PatternFlowIpv4DstCounter - // HasCount checks if Count has been set in PatternFlowIpv4DstCounter + // SetCount assigns uint32 provided by user to PatternFlowGtpv1TeidCounter + SetCount(value uint32) PatternFlowGtpv1TeidCounter + // HasCount checks if Count has been set in PatternFlowGtpv1TeidCounter HasCount() bool } // description is TBD -// Start returns a string -func (obj *patternFlowIpv4DstCounter) Start() string { +// Start returns a uint32 +func (obj *patternFlowGtpv1TeidCounter) Start() uint32 { return *obj.obj.Start } // description is TBD -// Start returns a string -func (obj *patternFlowIpv4DstCounter) HasStart() bool { +// Start returns a uint32 +func (obj *patternFlowGtpv1TeidCounter) HasStart() bool { return obj.obj.Start != nil } // description is TBD -// SetStart sets the string value in the PatternFlowIpv4DstCounter object -func (obj *patternFlowIpv4DstCounter) SetStart(value string) PatternFlowIpv4DstCounter { +// SetStart sets the uint32 value in the PatternFlowGtpv1TeidCounter object +func (obj *patternFlowGtpv1TeidCounter) SetStart(value uint32) PatternFlowGtpv1TeidCounter { obj.obj.Start = &value return obj } // description is TBD -// Step returns a string -func (obj *patternFlowIpv4DstCounter) Step() string { +// Step returns a uint32 +func (obj *patternFlowGtpv1TeidCounter) Step() uint32 { return *obj.obj.Step } // description is TBD -// Step returns a string -func (obj *patternFlowIpv4DstCounter) HasStep() bool { +// Step returns a uint32 +func (obj *patternFlowGtpv1TeidCounter) HasStep() bool { return obj.obj.Step != nil } // description is TBD -// SetStep sets the string value in the PatternFlowIpv4DstCounter object -func (obj *patternFlowIpv4DstCounter) SetStep(value string) PatternFlowIpv4DstCounter { +// SetStep sets the uint32 value in the PatternFlowGtpv1TeidCounter object +func (obj *patternFlowGtpv1TeidCounter) SetStep(value uint32) PatternFlowGtpv1TeidCounter { obj.obj.Step = &value return obj @@ -202195,7 +245349,7 @@ func (obj *patternFlowIpv4DstCounter) SetStep(value string) PatternFlowIpv4DstCo // description is TBD // Count returns a uint32 -func (obj *patternFlowIpv4DstCounter) Count() uint32 { +func (obj *patternFlowGtpv1TeidCounter) Count() uint32 { return *obj.obj.Count @@ -202203,49 +245357,31 @@ func (obj *patternFlowIpv4DstCounter) Count() uint32 { // description is TBD // Count returns a uint32 -func (obj *patternFlowIpv4DstCounter) HasCount() bool { +func (obj *patternFlowGtpv1TeidCounter) HasCount() bool { return obj.obj.Count != nil } // description is TBD -// SetCount sets the uint32 value in the PatternFlowIpv4DstCounter object -func (obj *patternFlowIpv4DstCounter) SetCount(value uint32) PatternFlowIpv4DstCounter { +// SetCount sets the uint32 value in the PatternFlowGtpv1TeidCounter object +func (obj *patternFlowGtpv1TeidCounter) SetCount(value uint32) PatternFlowGtpv1TeidCounter { obj.obj.Count = &value return obj } -func (obj *patternFlowIpv4DstCounter) validateObj(vObj *validation, set_default bool) { +func (obj *patternFlowGtpv1TeidCounter) validateObj(vObj *validation, set_default bool) { if set_default { obj.setDefault() } - if obj.obj.Start != nil { - - err := obj.validateIpv4(obj.Start()) - if err != nil { - vObj.validationErrors = append(vObj.validationErrors, fmt.Sprintf("%s %s", err.Error(), "on PatternFlowIpv4DstCounter.Start")) - } - - } - - if obj.obj.Step != nil { - - err := obj.validateIpv4(obj.Step()) - if err != nil { - vObj.validationErrors = append(vObj.validationErrors, fmt.Sprintf("%s %s", err.Error(), "on PatternFlowIpv4DstCounter.Step")) - } - - } - } -func (obj *patternFlowIpv4DstCounter) setDefault() { +func (obj *patternFlowGtpv1TeidCounter) setDefault() { if obj.obj.Start == nil { - obj.SetStart("0.0.0.0") + obj.SetStart(0) } if obj.obj.Step == nil { - obj.SetStep("0.0.0.1") + obj.SetStep(1) } if obj.obj.Count == nil { obj.SetCount(1) @@ -202253,29 +245389,29 @@ func (obj *patternFlowIpv4DstCounter) setDefault() { } -// ***** PatternFlowIpv4DstMetricTag ***** -type patternFlowIpv4DstMetricTag struct { +// ***** PatternFlowGtpv1TeidMetricTag ***** +type patternFlowGtpv1TeidMetricTag struct { validation - obj *otg.PatternFlowIpv4DstMetricTag + obj *otg.PatternFlowGtpv1TeidMetricTag } -func NewPatternFlowIpv4DstMetricTag() PatternFlowIpv4DstMetricTag { - obj := patternFlowIpv4DstMetricTag{obj: &otg.PatternFlowIpv4DstMetricTag{}} +func NewPatternFlowGtpv1TeidMetricTag() PatternFlowGtpv1TeidMetricTag { + obj := patternFlowGtpv1TeidMetricTag{obj: &otg.PatternFlowGtpv1TeidMetricTag{}} obj.setDefault() return &obj } -func (obj *patternFlowIpv4DstMetricTag) Msg() *otg.PatternFlowIpv4DstMetricTag { +func (obj *patternFlowGtpv1TeidMetricTag) Msg() *otg.PatternFlowGtpv1TeidMetricTag { return obj.obj } -func (obj *patternFlowIpv4DstMetricTag) SetMsg(msg *otg.PatternFlowIpv4DstMetricTag) PatternFlowIpv4DstMetricTag { +func (obj *patternFlowGtpv1TeidMetricTag) SetMsg(msg *otg.PatternFlowGtpv1TeidMetricTag) PatternFlowGtpv1TeidMetricTag { proto.Merge(obj.obj, msg) return obj } -func (obj *patternFlowIpv4DstMetricTag) ToProto() (*otg.PatternFlowIpv4DstMetricTag, error) { +func (obj *patternFlowGtpv1TeidMetricTag) ToProto() (*otg.PatternFlowGtpv1TeidMetricTag, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -202283,7 +245419,7 @@ func (obj *patternFlowIpv4DstMetricTag) ToProto() (*otg.PatternFlowIpv4DstMetric return obj.Msg(), nil } -func (obj *patternFlowIpv4DstMetricTag) FromProto(msg *otg.PatternFlowIpv4DstMetricTag) (PatternFlowIpv4DstMetricTag, error) { +func (obj *patternFlowGtpv1TeidMetricTag) FromProto(msg *otg.PatternFlowGtpv1TeidMetricTag) (PatternFlowGtpv1TeidMetricTag, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -202292,7 +245428,7 @@ func (obj *patternFlowIpv4DstMetricTag) FromProto(msg *otg.PatternFlowIpv4DstMet return newObj, nil } -func (obj *patternFlowIpv4DstMetricTag) ToPbText() (string, error) { +func (obj *patternFlowGtpv1TeidMetricTag) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -202304,7 +245440,7 @@ func (obj *patternFlowIpv4DstMetricTag) ToPbText() (string, error) { return string(protoMarshal), nil } -func (obj *patternFlowIpv4DstMetricTag) FromPbText(value string) error { +func (obj *patternFlowGtpv1TeidMetricTag) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj @@ -202317,7 +245453,7 @@ func (obj *patternFlowIpv4DstMetricTag) FromPbText(value string) error { return retObj } -func (obj *patternFlowIpv4DstMetricTag) ToYaml() (string, error) { +func (obj *patternFlowGtpv1TeidMetricTag) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -202338,7 +245474,7 @@ func (obj *patternFlowIpv4DstMetricTag) ToYaml() (string, error) { return string(data), nil } -func (obj *patternFlowIpv4DstMetricTag) FromYaml(value string) error { +func (obj *patternFlowGtpv1TeidMetricTag) FromYaml(value string) error { if value == "" { value = "{}" } @@ -202363,7 +245499,7 @@ func (obj *patternFlowIpv4DstMetricTag) FromYaml(value string) error { return nil } -func (obj *patternFlowIpv4DstMetricTag) ToJson() (string, error) { +func (obj *patternFlowGtpv1TeidMetricTag) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -202381,7 +245517,7 @@ func (obj *patternFlowIpv4DstMetricTag) ToJson() (string, error) { return string(data), nil } -func (obj *patternFlowIpv4DstMetricTag) FromJson(value string) error { +func (obj *patternFlowGtpv1TeidMetricTag) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -202402,19 +245538,19 @@ func (obj *patternFlowIpv4DstMetricTag) FromJson(value string) error { return nil } -func (obj *patternFlowIpv4DstMetricTag) validateToAndFrom() error { +func (obj *patternFlowGtpv1TeidMetricTag) validateToAndFrom() error { // emptyVars() obj.validateObj(&obj.validation, true) return obj.validationResult() } -func (obj *patternFlowIpv4DstMetricTag) Validate() error { +func (obj *patternFlowGtpv1TeidMetricTag) Validate() error { // emptyVars() obj.validateObj(&obj.validation, false) return obj.validationResult() } -func (obj *patternFlowIpv4DstMetricTag) String() string { +func (obj *patternFlowGtpv1TeidMetricTag) String() string { str, err := obj.ToYaml() if err != nil { return err.Error() @@ -202422,12 +245558,12 @@ func (obj *patternFlowIpv4DstMetricTag) String() string { return str } -func (obj *patternFlowIpv4DstMetricTag) Clone() (PatternFlowIpv4DstMetricTag, error) { +func (obj *patternFlowGtpv1TeidMetricTag) Clone() (PatternFlowGtpv1TeidMetricTag, error) { vErr := obj.Validate() if vErr != nil { return nil, vErr } - newObj := NewPatternFlowIpv4DstMetricTag() + newObj := NewPatternFlowGtpv1TeidMetricTag() data, err := proto.Marshal(obj.Msg()) if err != nil { return nil, err @@ -202439,69 +245575,69 @@ func (obj *patternFlowIpv4DstMetricTag) Clone() (PatternFlowIpv4DstMetricTag, er return newObj, nil } -// PatternFlowIpv4DstMetricTag is metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. -type PatternFlowIpv4DstMetricTag interface { +// PatternFlowGtpv1TeidMetricTag is metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. +type PatternFlowGtpv1TeidMetricTag interface { Validation - // Msg marshals PatternFlowIpv4DstMetricTag to protobuf object *otg.PatternFlowIpv4DstMetricTag + // Msg marshals PatternFlowGtpv1TeidMetricTag to protobuf object *otg.PatternFlowGtpv1TeidMetricTag // and doesn't set defaults - Msg() *otg.PatternFlowIpv4DstMetricTag - // SetMsg unmarshals PatternFlowIpv4DstMetricTag from protobuf object *otg.PatternFlowIpv4DstMetricTag + Msg() *otg.PatternFlowGtpv1TeidMetricTag + // SetMsg unmarshals PatternFlowGtpv1TeidMetricTag from protobuf object *otg.PatternFlowGtpv1TeidMetricTag // and doesn't set defaults - SetMsg(*otg.PatternFlowIpv4DstMetricTag) PatternFlowIpv4DstMetricTag - // ToProto marshals PatternFlowIpv4DstMetricTag to protobuf object *otg.PatternFlowIpv4DstMetricTag - ToProto() (*otg.PatternFlowIpv4DstMetricTag, error) - // ToPbText marshals PatternFlowIpv4DstMetricTag to protobuf text + SetMsg(*otg.PatternFlowGtpv1TeidMetricTag) PatternFlowGtpv1TeidMetricTag + // ToProto marshals PatternFlowGtpv1TeidMetricTag to protobuf object *otg.PatternFlowGtpv1TeidMetricTag + ToProto() (*otg.PatternFlowGtpv1TeidMetricTag, error) + // ToPbText marshals PatternFlowGtpv1TeidMetricTag to protobuf text ToPbText() (string, error) - // ToYaml marshals PatternFlowIpv4DstMetricTag to YAML text + // ToYaml marshals PatternFlowGtpv1TeidMetricTag to YAML text ToYaml() (string, error) - // ToJson marshals PatternFlowIpv4DstMetricTag to JSON text + // ToJson marshals PatternFlowGtpv1TeidMetricTag to JSON text ToJson() (string, error) - // FromProto unmarshals PatternFlowIpv4DstMetricTag from protobuf object *otg.PatternFlowIpv4DstMetricTag - FromProto(msg *otg.PatternFlowIpv4DstMetricTag) (PatternFlowIpv4DstMetricTag, error) - // FromPbText unmarshals PatternFlowIpv4DstMetricTag from protobuf text + // FromProto unmarshals PatternFlowGtpv1TeidMetricTag from protobuf object *otg.PatternFlowGtpv1TeidMetricTag + FromProto(msg *otg.PatternFlowGtpv1TeidMetricTag) (PatternFlowGtpv1TeidMetricTag, error) + // FromPbText unmarshals PatternFlowGtpv1TeidMetricTag from protobuf text FromPbText(value string) error - // FromYaml unmarshals PatternFlowIpv4DstMetricTag from YAML text + // FromYaml unmarshals PatternFlowGtpv1TeidMetricTag from YAML text FromYaml(value string) error - // FromJson unmarshals PatternFlowIpv4DstMetricTag from JSON text + // FromJson unmarshals PatternFlowGtpv1TeidMetricTag from JSON text FromJson(value string) error - // Validate validates PatternFlowIpv4DstMetricTag + // Validate validates PatternFlowGtpv1TeidMetricTag Validate() error // A stringer function String() string // Clones the object - Clone() (PatternFlowIpv4DstMetricTag, error) + Clone() (PatternFlowGtpv1TeidMetricTag, error) validateToAndFrom() error validateObj(vObj *validation, set_default bool) setDefault() - // Name returns string, set in PatternFlowIpv4DstMetricTag. + // Name returns string, set in PatternFlowGtpv1TeidMetricTag. Name() string - // SetName assigns string provided by user to PatternFlowIpv4DstMetricTag - SetName(value string) PatternFlowIpv4DstMetricTag - // Offset returns uint32, set in PatternFlowIpv4DstMetricTag. + // SetName assigns string provided by user to PatternFlowGtpv1TeidMetricTag + SetName(value string) PatternFlowGtpv1TeidMetricTag + // Offset returns uint32, set in PatternFlowGtpv1TeidMetricTag. Offset() uint32 - // SetOffset assigns uint32 provided by user to PatternFlowIpv4DstMetricTag - SetOffset(value uint32) PatternFlowIpv4DstMetricTag - // HasOffset checks if Offset has been set in PatternFlowIpv4DstMetricTag + // SetOffset assigns uint32 provided by user to PatternFlowGtpv1TeidMetricTag + SetOffset(value uint32) PatternFlowGtpv1TeidMetricTag + // HasOffset checks if Offset has been set in PatternFlowGtpv1TeidMetricTag HasOffset() bool - // Length returns uint32, set in PatternFlowIpv4DstMetricTag. + // Length returns uint32, set in PatternFlowGtpv1TeidMetricTag. Length() uint32 - // SetLength assigns uint32 provided by user to PatternFlowIpv4DstMetricTag - SetLength(value uint32) PatternFlowIpv4DstMetricTag - // HasLength checks if Length has been set in PatternFlowIpv4DstMetricTag + // SetLength assigns uint32 provided by user to PatternFlowGtpv1TeidMetricTag + SetLength(value uint32) PatternFlowGtpv1TeidMetricTag + // HasLength checks if Length has been set in PatternFlowGtpv1TeidMetricTag HasLength() bool } // Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field // Name returns a string -func (obj *patternFlowIpv4DstMetricTag) Name() string { +func (obj *patternFlowGtpv1TeidMetricTag) Name() string { return *obj.obj.Name } // Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field -// SetName sets the string value in the PatternFlowIpv4DstMetricTag object -func (obj *patternFlowIpv4DstMetricTag) SetName(value string) PatternFlowIpv4DstMetricTag { +// SetName sets the string value in the PatternFlowGtpv1TeidMetricTag object +func (obj *patternFlowGtpv1TeidMetricTag) SetName(value string) PatternFlowGtpv1TeidMetricTag { obj.obj.Name = &value return obj @@ -202509,7 +245645,7 @@ func (obj *patternFlowIpv4DstMetricTag) SetName(value string) PatternFlowIpv4Dst // Offset in bits relative to start of corresponding header field // Offset returns a uint32 -func (obj *patternFlowIpv4DstMetricTag) Offset() uint32 { +func (obj *patternFlowGtpv1TeidMetricTag) Offset() uint32 { return *obj.obj.Offset @@ -202517,13 +245653,13 @@ func (obj *patternFlowIpv4DstMetricTag) Offset() uint32 { // Offset in bits relative to start of corresponding header field // Offset returns a uint32 -func (obj *patternFlowIpv4DstMetricTag) HasOffset() bool { +func (obj *patternFlowGtpv1TeidMetricTag) HasOffset() bool { return obj.obj.Offset != nil } // Offset in bits relative to start of corresponding header field -// SetOffset sets the uint32 value in the PatternFlowIpv4DstMetricTag object -func (obj *patternFlowIpv4DstMetricTag) SetOffset(value uint32) PatternFlowIpv4DstMetricTag { +// SetOffset sets the uint32 value in the PatternFlowGtpv1TeidMetricTag object +func (obj *patternFlowGtpv1TeidMetricTag) SetOffset(value uint32) PatternFlowGtpv1TeidMetricTag { obj.obj.Offset = &value return obj @@ -202531,7 +245667,7 @@ func (obj *patternFlowIpv4DstMetricTag) SetOffset(value uint32) PatternFlowIpv4D // Number of bits to track for metrics starting from configured offset of corresponding header field // Length returns a uint32 -func (obj *patternFlowIpv4DstMetricTag) Length() uint32 { +func (obj *patternFlowGtpv1TeidMetricTag) Length() uint32 { return *obj.obj.Length @@ -202539,26 +245675,26 @@ func (obj *patternFlowIpv4DstMetricTag) Length() uint32 { // Number of bits to track for metrics starting from configured offset of corresponding header field // Length returns a uint32 -func (obj *patternFlowIpv4DstMetricTag) HasLength() bool { +func (obj *patternFlowGtpv1TeidMetricTag) HasLength() bool { return obj.obj.Length != nil } // Number of bits to track for metrics starting from configured offset of corresponding header field -// SetLength sets the uint32 value in the PatternFlowIpv4DstMetricTag object -func (obj *patternFlowIpv4DstMetricTag) SetLength(value uint32) PatternFlowIpv4DstMetricTag { +// SetLength sets the uint32 value in the PatternFlowGtpv1TeidMetricTag object +func (obj *patternFlowGtpv1TeidMetricTag) SetLength(value uint32) PatternFlowGtpv1TeidMetricTag { obj.obj.Length = &value return obj } -func (obj *patternFlowIpv4DstMetricTag) validateObj(vObj *validation, set_default bool) { +func (obj *patternFlowGtpv1TeidMetricTag) validateObj(vObj *validation, set_default bool) { if set_default { obj.setDefault() } // Name is required if obj.obj.Name == nil { - vObj.validationErrors = append(vObj.validationErrors, "Name is required field on interface PatternFlowIpv4DstMetricTag") + vObj.validationErrors = append(vObj.validationErrors, "Name is required field on interface PatternFlowGtpv1TeidMetricTag") } if obj.obj.Offset != nil { @@ -202566,7 +245702,7 @@ func (obj *patternFlowIpv4DstMetricTag) validateObj(vObj *validation, set_defaul if *obj.obj.Offset > 31 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowIpv4DstMetricTag.Offset <= 31 but Got %d", *obj.obj.Offset)) + fmt.Sprintf("0 <= PatternFlowGtpv1TeidMetricTag.Offset <= 31 but Got %d", *obj.obj.Offset)) } } @@ -202576,14 +245712,14 @@ func (obj *patternFlowIpv4DstMetricTag) validateObj(vObj *validation, set_defaul if *obj.obj.Length < 1 || *obj.obj.Length > 32 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("1 <= PatternFlowIpv4DstMetricTag.Length <= 32 but Got %d", *obj.obj.Length)) + fmt.Sprintf("1 <= PatternFlowGtpv1TeidMetricTag.Length <= 32 but Got %d", *obj.obj.Length)) } } } -func (obj *patternFlowIpv4DstMetricTag) setDefault() { +func (obj *patternFlowGtpv1TeidMetricTag) setDefault() { if obj.obj.Offset == nil { obj.SetOffset(0) } @@ -202593,29 +245729,29 @@ func (obj *patternFlowIpv4DstMetricTag) setDefault() { } -// ***** PatternFlowIpv6VersionCounter ***** -type patternFlowIpv6VersionCounter struct { +// ***** PatternFlowGtpv1SquenceNumberCounter ***** +type patternFlowGtpv1SquenceNumberCounter struct { validation - obj *otg.PatternFlowIpv6VersionCounter + obj *otg.PatternFlowGtpv1SquenceNumberCounter } -func NewPatternFlowIpv6VersionCounter() PatternFlowIpv6VersionCounter { - obj := patternFlowIpv6VersionCounter{obj: &otg.PatternFlowIpv6VersionCounter{}} +func NewPatternFlowGtpv1SquenceNumberCounter() PatternFlowGtpv1SquenceNumberCounter { + obj := patternFlowGtpv1SquenceNumberCounter{obj: &otg.PatternFlowGtpv1SquenceNumberCounter{}} obj.setDefault() return &obj } -func (obj *patternFlowIpv6VersionCounter) Msg() *otg.PatternFlowIpv6VersionCounter { +func (obj *patternFlowGtpv1SquenceNumberCounter) Msg() *otg.PatternFlowGtpv1SquenceNumberCounter { return obj.obj } -func (obj *patternFlowIpv6VersionCounter) SetMsg(msg *otg.PatternFlowIpv6VersionCounter) PatternFlowIpv6VersionCounter { +func (obj *patternFlowGtpv1SquenceNumberCounter) SetMsg(msg *otg.PatternFlowGtpv1SquenceNumberCounter) PatternFlowGtpv1SquenceNumberCounter { proto.Merge(obj.obj, msg) return obj } -func (obj *patternFlowIpv6VersionCounter) ToProto() (*otg.PatternFlowIpv6VersionCounter, error) { +func (obj *patternFlowGtpv1SquenceNumberCounter) ToProto() (*otg.PatternFlowGtpv1SquenceNumberCounter, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -202623,7 +245759,7 @@ func (obj *patternFlowIpv6VersionCounter) ToProto() (*otg.PatternFlowIpv6Version return obj.Msg(), nil } -func (obj *patternFlowIpv6VersionCounter) FromProto(msg *otg.PatternFlowIpv6VersionCounter) (PatternFlowIpv6VersionCounter, error) { +func (obj *patternFlowGtpv1SquenceNumberCounter) FromProto(msg *otg.PatternFlowGtpv1SquenceNumberCounter) (PatternFlowGtpv1SquenceNumberCounter, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -202632,7 +245768,7 @@ func (obj *patternFlowIpv6VersionCounter) FromProto(msg *otg.PatternFlowIpv6Vers return newObj, nil } -func (obj *patternFlowIpv6VersionCounter) ToPbText() (string, error) { +func (obj *patternFlowGtpv1SquenceNumberCounter) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -202644,7 +245780,7 @@ func (obj *patternFlowIpv6VersionCounter) ToPbText() (string, error) { return string(protoMarshal), nil } -func (obj *patternFlowIpv6VersionCounter) FromPbText(value string) error { +func (obj *patternFlowGtpv1SquenceNumberCounter) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj @@ -202657,7 +245793,7 @@ func (obj *patternFlowIpv6VersionCounter) FromPbText(value string) error { return retObj } -func (obj *patternFlowIpv6VersionCounter) ToYaml() (string, error) { +func (obj *patternFlowGtpv1SquenceNumberCounter) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -202678,7 +245814,7 @@ func (obj *patternFlowIpv6VersionCounter) ToYaml() (string, error) { return string(data), nil } -func (obj *patternFlowIpv6VersionCounter) FromYaml(value string) error { +func (obj *patternFlowGtpv1SquenceNumberCounter) FromYaml(value string) error { if value == "" { value = "{}" } @@ -202703,7 +245839,7 @@ func (obj *patternFlowIpv6VersionCounter) FromYaml(value string) error { return nil } -func (obj *patternFlowIpv6VersionCounter) ToJson() (string, error) { +func (obj *patternFlowGtpv1SquenceNumberCounter) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -202721,7 +245857,7 @@ func (obj *patternFlowIpv6VersionCounter) ToJson() (string, error) { return string(data), nil } -func (obj *patternFlowIpv6VersionCounter) FromJson(value string) error { +func (obj *patternFlowGtpv1SquenceNumberCounter) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -202742,19 +245878,19 @@ func (obj *patternFlowIpv6VersionCounter) FromJson(value string) error { return nil } -func (obj *patternFlowIpv6VersionCounter) validateToAndFrom() error { +func (obj *patternFlowGtpv1SquenceNumberCounter) validateToAndFrom() error { // emptyVars() obj.validateObj(&obj.validation, true) return obj.validationResult() } -func (obj *patternFlowIpv6VersionCounter) Validate() error { +func (obj *patternFlowGtpv1SquenceNumberCounter) Validate() error { // emptyVars() obj.validateObj(&obj.validation, false) return obj.validationResult() } -func (obj *patternFlowIpv6VersionCounter) String() string { +func (obj *patternFlowGtpv1SquenceNumberCounter) String() string { str, err := obj.ToYaml() if err != nil { return err.Error() @@ -202762,12 +245898,12 @@ func (obj *patternFlowIpv6VersionCounter) String() string { return str } -func (obj *patternFlowIpv6VersionCounter) Clone() (PatternFlowIpv6VersionCounter, error) { +func (obj *patternFlowGtpv1SquenceNumberCounter) Clone() (PatternFlowGtpv1SquenceNumberCounter, error) { vErr := obj.Validate() if vErr != nil { return nil, vErr } - newObj := NewPatternFlowIpv6VersionCounter() + newObj := NewPatternFlowGtpv1SquenceNumberCounter() data, err := proto.Marshal(obj.Msg()) if err != nil { return nil, err @@ -202779,63 +245915,63 @@ func (obj *patternFlowIpv6VersionCounter) Clone() (PatternFlowIpv6VersionCounter return newObj, nil } -// PatternFlowIpv6VersionCounter is integer counter pattern -type PatternFlowIpv6VersionCounter interface { +// PatternFlowGtpv1SquenceNumberCounter is integer counter pattern +type PatternFlowGtpv1SquenceNumberCounter interface { Validation - // Msg marshals PatternFlowIpv6VersionCounter to protobuf object *otg.PatternFlowIpv6VersionCounter + // Msg marshals PatternFlowGtpv1SquenceNumberCounter to protobuf object *otg.PatternFlowGtpv1SquenceNumberCounter // and doesn't set defaults - Msg() *otg.PatternFlowIpv6VersionCounter - // SetMsg unmarshals PatternFlowIpv6VersionCounter from protobuf object *otg.PatternFlowIpv6VersionCounter + Msg() *otg.PatternFlowGtpv1SquenceNumberCounter + // SetMsg unmarshals PatternFlowGtpv1SquenceNumberCounter from protobuf object *otg.PatternFlowGtpv1SquenceNumberCounter // and doesn't set defaults - SetMsg(*otg.PatternFlowIpv6VersionCounter) PatternFlowIpv6VersionCounter - // ToProto marshals PatternFlowIpv6VersionCounter to protobuf object *otg.PatternFlowIpv6VersionCounter - ToProto() (*otg.PatternFlowIpv6VersionCounter, error) - // ToPbText marshals PatternFlowIpv6VersionCounter to protobuf text + SetMsg(*otg.PatternFlowGtpv1SquenceNumberCounter) PatternFlowGtpv1SquenceNumberCounter + // ToProto marshals PatternFlowGtpv1SquenceNumberCounter to protobuf object *otg.PatternFlowGtpv1SquenceNumberCounter + ToProto() (*otg.PatternFlowGtpv1SquenceNumberCounter, error) + // ToPbText marshals PatternFlowGtpv1SquenceNumberCounter to protobuf text ToPbText() (string, error) - // ToYaml marshals PatternFlowIpv6VersionCounter to YAML text + // ToYaml marshals PatternFlowGtpv1SquenceNumberCounter to YAML text ToYaml() (string, error) - // ToJson marshals PatternFlowIpv6VersionCounter to JSON text + // ToJson marshals PatternFlowGtpv1SquenceNumberCounter to JSON text ToJson() (string, error) - // FromProto unmarshals PatternFlowIpv6VersionCounter from protobuf object *otg.PatternFlowIpv6VersionCounter - FromProto(msg *otg.PatternFlowIpv6VersionCounter) (PatternFlowIpv6VersionCounter, error) - // FromPbText unmarshals PatternFlowIpv6VersionCounter from protobuf text + // FromProto unmarshals PatternFlowGtpv1SquenceNumberCounter from protobuf object *otg.PatternFlowGtpv1SquenceNumberCounter + FromProto(msg *otg.PatternFlowGtpv1SquenceNumberCounter) (PatternFlowGtpv1SquenceNumberCounter, error) + // FromPbText unmarshals PatternFlowGtpv1SquenceNumberCounter from protobuf text FromPbText(value string) error - // FromYaml unmarshals PatternFlowIpv6VersionCounter from YAML text + // FromYaml unmarshals PatternFlowGtpv1SquenceNumberCounter from YAML text FromYaml(value string) error - // FromJson unmarshals PatternFlowIpv6VersionCounter from JSON text + // FromJson unmarshals PatternFlowGtpv1SquenceNumberCounter from JSON text FromJson(value string) error - // Validate validates PatternFlowIpv6VersionCounter + // Validate validates PatternFlowGtpv1SquenceNumberCounter Validate() error // A stringer function String() string // Clones the object - Clone() (PatternFlowIpv6VersionCounter, error) + Clone() (PatternFlowGtpv1SquenceNumberCounter, error) validateToAndFrom() error validateObj(vObj *validation, set_default bool) setDefault() - // Start returns uint32, set in PatternFlowIpv6VersionCounter. + // Start returns uint32, set in PatternFlowGtpv1SquenceNumberCounter. Start() uint32 - // SetStart assigns uint32 provided by user to PatternFlowIpv6VersionCounter - SetStart(value uint32) PatternFlowIpv6VersionCounter - // HasStart checks if Start has been set in PatternFlowIpv6VersionCounter + // SetStart assigns uint32 provided by user to PatternFlowGtpv1SquenceNumberCounter + SetStart(value uint32) PatternFlowGtpv1SquenceNumberCounter + // HasStart checks if Start has been set in PatternFlowGtpv1SquenceNumberCounter HasStart() bool - // Step returns uint32, set in PatternFlowIpv6VersionCounter. + // Step returns uint32, set in PatternFlowGtpv1SquenceNumberCounter. Step() uint32 - // SetStep assigns uint32 provided by user to PatternFlowIpv6VersionCounter - SetStep(value uint32) PatternFlowIpv6VersionCounter - // HasStep checks if Step has been set in PatternFlowIpv6VersionCounter + // SetStep assigns uint32 provided by user to PatternFlowGtpv1SquenceNumberCounter + SetStep(value uint32) PatternFlowGtpv1SquenceNumberCounter + // HasStep checks if Step has been set in PatternFlowGtpv1SquenceNumberCounter HasStep() bool - // Count returns uint32, set in PatternFlowIpv6VersionCounter. + // Count returns uint32, set in PatternFlowGtpv1SquenceNumberCounter. Count() uint32 - // SetCount assigns uint32 provided by user to PatternFlowIpv6VersionCounter - SetCount(value uint32) PatternFlowIpv6VersionCounter - // HasCount checks if Count has been set in PatternFlowIpv6VersionCounter + // SetCount assigns uint32 provided by user to PatternFlowGtpv1SquenceNumberCounter + SetCount(value uint32) PatternFlowGtpv1SquenceNumberCounter + // HasCount checks if Count has been set in PatternFlowGtpv1SquenceNumberCounter HasCount() bool } // description is TBD // Start returns a uint32 -func (obj *patternFlowIpv6VersionCounter) Start() uint32 { +func (obj *patternFlowGtpv1SquenceNumberCounter) Start() uint32 { return *obj.obj.Start @@ -202843,13 +245979,13 @@ func (obj *patternFlowIpv6VersionCounter) Start() uint32 { // description is TBD // Start returns a uint32 -func (obj *patternFlowIpv6VersionCounter) HasStart() bool { +func (obj *patternFlowGtpv1SquenceNumberCounter) HasStart() bool { return obj.obj.Start != nil } // description is TBD -// SetStart sets the uint32 value in the PatternFlowIpv6VersionCounter object -func (obj *patternFlowIpv6VersionCounter) SetStart(value uint32) PatternFlowIpv6VersionCounter { +// SetStart sets the uint32 value in the PatternFlowGtpv1SquenceNumberCounter object +func (obj *patternFlowGtpv1SquenceNumberCounter) SetStart(value uint32) PatternFlowGtpv1SquenceNumberCounter { obj.obj.Start = &value return obj @@ -202857,7 +245993,7 @@ func (obj *patternFlowIpv6VersionCounter) SetStart(value uint32) PatternFlowIpv6 // description is TBD // Step returns a uint32 -func (obj *patternFlowIpv6VersionCounter) Step() uint32 { +func (obj *patternFlowGtpv1SquenceNumberCounter) Step() uint32 { return *obj.obj.Step @@ -202865,13 +246001,13 @@ func (obj *patternFlowIpv6VersionCounter) Step() uint32 { // description is TBD // Step returns a uint32 -func (obj *patternFlowIpv6VersionCounter) HasStep() bool { +func (obj *patternFlowGtpv1SquenceNumberCounter) HasStep() bool { return obj.obj.Step != nil } // description is TBD -// SetStep sets the uint32 value in the PatternFlowIpv6VersionCounter object -func (obj *patternFlowIpv6VersionCounter) SetStep(value uint32) PatternFlowIpv6VersionCounter { +// SetStep sets the uint32 value in the PatternFlowGtpv1SquenceNumberCounter object +func (obj *patternFlowGtpv1SquenceNumberCounter) SetStep(value uint32) PatternFlowGtpv1SquenceNumberCounter { obj.obj.Step = &value return obj @@ -202879,7 +246015,7 @@ func (obj *patternFlowIpv6VersionCounter) SetStep(value uint32) PatternFlowIpv6V // description is TBD // Count returns a uint32 -func (obj *patternFlowIpv6VersionCounter) Count() uint32 { +func (obj *patternFlowGtpv1SquenceNumberCounter) Count() uint32 { return *obj.obj.Count @@ -202887,58 +246023,58 @@ func (obj *patternFlowIpv6VersionCounter) Count() uint32 { // description is TBD // Count returns a uint32 -func (obj *patternFlowIpv6VersionCounter) HasCount() bool { +func (obj *patternFlowGtpv1SquenceNumberCounter) HasCount() bool { return obj.obj.Count != nil } // description is TBD -// SetCount sets the uint32 value in the PatternFlowIpv6VersionCounter object -func (obj *patternFlowIpv6VersionCounter) SetCount(value uint32) PatternFlowIpv6VersionCounter { +// SetCount sets the uint32 value in the PatternFlowGtpv1SquenceNumberCounter object +func (obj *patternFlowGtpv1SquenceNumberCounter) SetCount(value uint32) PatternFlowGtpv1SquenceNumberCounter { obj.obj.Count = &value return obj } -func (obj *patternFlowIpv6VersionCounter) validateObj(vObj *validation, set_default bool) { +func (obj *patternFlowGtpv1SquenceNumberCounter) validateObj(vObj *validation, set_default bool) { if set_default { obj.setDefault() } if obj.obj.Start != nil { - if *obj.obj.Start > 15 { + if *obj.obj.Start > 65535 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowIpv6VersionCounter.Start <= 15 but Got %d", *obj.obj.Start)) + fmt.Sprintf("0 <= PatternFlowGtpv1SquenceNumberCounter.Start <= 65535 but Got %d", *obj.obj.Start)) } } if obj.obj.Step != nil { - if *obj.obj.Step > 15 { + if *obj.obj.Step > 65535 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowIpv6VersionCounter.Step <= 15 but Got %d", *obj.obj.Step)) + fmt.Sprintf("0 <= PatternFlowGtpv1SquenceNumberCounter.Step <= 65535 but Got %d", *obj.obj.Step)) } } if obj.obj.Count != nil { - if *obj.obj.Count > 15 { + if *obj.obj.Count > 65535 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowIpv6VersionCounter.Count <= 15 but Got %d", *obj.obj.Count)) + fmt.Sprintf("0 <= PatternFlowGtpv1SquenceNumberCounter.Count <= 65535 but Got %d", *obj.obj.Count)) } } } -func (obj *patternFlowIpv6VersionCounter) setDefault() { +func (obj *patternFlowGtpv1SquenceNumberCounter) setDefault() { if obj.obj.Start == nil { - obj.SetStart(6) + obj.SetStart(0) } if obj.obj.Step == nil { obj.SetStep(1) @@ -202949,29 +246085,29 @@ func (obj *patternFlowIpv6VersionCounter) setDefault() { } -// ***** PatternFlowIpv6VersionMetricTag ***** -type patternFlowIpv6VersionMetricTag struct { +// ***** PatternFlowGtpv1SquenceNumberMetricTag ***** +type patternFlowGtpv1SquenceNumberMetricTag struct { validation - obj *otg.PatternFlowIpv6VersionMetricTag + obj *otg.PatternFlowGtpv1SquenceNumberMetricTag } -func NewPatternFlowIpv6VersionMetricTag() PatternFlowIpv6VersionMetricTag { - obj := patternFlowIpv6VersionMetricTag{obj: &otg.PatternFlowIpv6VersionMetricTag{}} +func NewPatternFlowGtpv1SquenceNumberMetricTag() PatternFlowGtpv1SquenceNumberMetricTag { + obj := patternFlowGtpv1SquenceNumberMetricTag{obj: &otg.PatternFlowGtpv1SquenceNumberMetricTag{}} obj.setDefault() return &obj } -func (obj *patternFlowIpv6VersionMetricTag) Msg() *otg.PatternFlowIpv6VersionMetricTag { +func (obj *patternFlowGtpv1SquenceNumberMetricTag) Msg() *otg.PatternFlowGtpv1SquenceNumberMetricTag { return obj.obj } -func (obj *patternFlowIpv6VersionMetricTag) SetMsg(msg *otg.PatternFlowIpv6VersionMetricTag) PatternFlowIpv6VersionMetricTag { +func (obj *patternFlowGtpv1SquenceNumberMetricTag) SetMsg(msg *otg.PatternFlowGtpv1SquenceNumberMetricTag) PatternFlowGtpv1SquenceNumberMetricTag { proto.Merge(obj.obj, msg) return obj } -func (obj *patternFlowIpv6VersionMetricTag) ToProto() (*otg.PatternFlowIpv6VersionMetricTag, error) { +func (obj *patternFlowGtpv1SquenceNumberMetricTag) ToProto() (*otg.PatternFlowGtpv1SquenceNumberMetricTag, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -202979,7 +246115,7 @@ func (obj *patternFlowIpv6VersionMetricTag) ToProto() (*otg.PatternFlowIpv6Versi return obj.Msg(), nil } -func (obj *patternFlowIpv6VersionMetricTag) FromProto(msg *otg.PatternFlowIpv6VersionMetricTag) (PatternFlowIpv6VersionMetricTag, error) { +func (obj *patternFlowGtpv1SquenceNumberMetricTag) FromProto(msg *otg.PatternFlowGtpv1SquenceNumberMetricTag) (PatternFlowGtpv1SquenceNumberMetricTag, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -202988,7 +246124,7 @@ func (obj *patternFlowIpv6VersionMetricTag) FromProto(msg *otg.PatternFlowIpv6Ve return newObj, nil } -func (obj *patternFlowIpv6VersionMetricTag) ToPbText() (string, error) { +func (obj *patternFlowGtpv1SquenceNumberMetricTag) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -203000,7 +246136,7 @@ func (obj *patternFlowIpv6VersionMetricTag) ToPbText() (string, error) { return string(protoMarshal), nil } -func (obj *patternFlowIpv6VersionMetricTag) FromPbText(value string) error { +func (obj *patternFlowGtpv1SquenceNumberMetricTag) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj @@ -203013,7 +246149,7 @@ func (obj *patternFlowIpv6VersionMetricTag) FromPbText(value string) error { return retObj } -func (obj *patternFlowIpv6VersionMetricTag) ToYaml() (string, error) { +func (obj *patternFlowGtpv1SquenceNumberMetricTag) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -203034,7 +246170,7 @@ func (obj *patternFlowIpv6VersionMetricTag) ToYaml() (string, error) { return string(data), nil } -func (obj *patternFlowIpv6VersionMetricTag) FromYaml(value string) error { +func (obj *patternFlowGtpv1SquenceNumberMetricTag) FromYaml(value string) error { if value == "" { value = "{}" } @@ -203059,7 +246195,7 @@ func (obj *patternFlowIpv6VersionMetricTag) FromYaml(value string) error { return nil } -func (obj *patternFlowIpv6VersionMetricTag) ToJson() (string, error) { +func (obj *patternFlowGtpv1SquenceNumberMetricTag) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -203077,7 +246213,7 @@ func (obj *patternFlowIpv6VersionMetricTag) ToJson() (string, error) { return string(data), nil } -func (obj *patternFlowIpv6VersionMetricTag) FromJson(value string) error { +func (obj *patternFlowGtpv1SquenceNumberMetricTag) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -203098,19 +246234,19 @@ func (obj *patternFlowIpv6VersionMetricTag) FromJson(value string) error { return nil } -func (obj *patternFlowIpv6VersionMetricTag) validateToAndFrom() error { +func (obj *patternFlowGtpv1SquenceNumberMetricTag) validateToAndFrom() error { // emptyVars() obj.validateObj(&obj.validation, true) return obj.validationResult() } -func (obj *patternFlowIpv6VersionMetricTag) Validate() error { +func (obj *patternFlowGtpv1SquenceNumberMetricTag) Validate() error { // emptyVars() obj.validateObj(&obj.validation, false) return obj.validationResult() } -func (obj *patternFlowIpv6VersionMetricTag) String() string { +func (obj *patternFlowGtpv1SquenceNumberMetricTag) String() string { str, err := obj.ToYaml() if err != nil { return err.Error() @@ -203118,12 +246254,12 @@ func (obj *patternFlowIpv6VersionMetricTag) String() string { return str } -func (obj *patternFlowIpv6VersionMetricTag) Clone() (PatternFlowIpv6VersionMetricTag, error) { +func (obj *patternFlowGtpv1SquenceNumberMetricTag) Clone() (PatternFlowGtpv1SquenceNumberMetricTag, error) { vErr := obj.Validate() if vErr != nil { return nil, vErr } - newObj := NewPatternFlowIpv6VersionMetricTag() + newObj := NewPatternFlowGtpv1SquenceNumberMetricTag() data, err := proto.Marshal(obj.Msg()) if err != nil { return nil, err @@ -203135,69 +246271,69 @@ func (obj *patternFlowIpv6VersionMetricTag) Clone() (PatternFlowIpv6VersionMetri return newObj, nil } -// PatternFlowIpv6VersionMetricTag is metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. -type PatternFlowIpv6VersionMetricTag interface { +// PatternFlowGtpv1SquenceNumberMetricTag is metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. +type PatternFlowGtpv1SquenceNumberMetricTag interface { Validation - // Msg marshals PatternFlowIpv6VersionMetricTag to protobuf object *otg.PatternFlowIpv6VersionMetricTag + // Msg marshals PatternFlowGtpv1SquenceNumberMetricTag to protobuf object *otg.PatternFlowGtpv1SquenceNumberMetricTag // and doesn't set defaults - Msg() *otg.PatternFlowIpv6VersionMetricTag - // SetMsg unmarshals PatternFlowIpv6VersionMetricTag from protobuf object *otg.PatternFlowIpv6VersionMetricTag + Msg() *otg.PatternFlowGtpv1SquenceNumberMetricTag + // SetMsg unmarshals PatternFlowGtpv1SquenceNumberMetricTag from protobuf object *otg.PatternFlowGtpv1SquenceNumberMetricTag // and doesn't set defaults - SetMsg(*otg.PatternFlowIpv6VersionMetricTag) PatternFlowIpv6VersionMetricTag - // ToProto marshals PatternFlowIpv6VersionMetricTag to protobuf object *otg.PatternFlowIpv6VersionMetricTag - ToProto() (*otg.PatternFlowIpv6VersionMetricTag, error) - // ToPbText marshals PatternFlowIpv6VersionMetricTag to protobuf text + SetMsg(*otg.PatternFlowGtpv1SquenceNumberMetricTag) PatternFlowGtpv1SquenceNumberMetricTag + // ToProto marshals PatternFlowGtpv1SquenceNumberMetricTag to protobuf object *otg.PatternFlowGtpv1SquenceNumberMetricTag + ToProto() (*otg.PatternFlowGtpv1SquenceNumberMetricTag, error) + // ToPbText marshals PatternFlowGtpv1SquenceNumberMetricTag to protobuf text ToPbText() (string, error) - // ToYaml marshals PatternFlowIpv6VersionMetricTag to YAML text + // ToYaml marshals PatternFlowGtpv1SquenceNumberMetricTag to YAML text ToYaml() (string, error) - // ToJson marshals PatternFlowIpv6VersionMetricTag to JSON text + // ToJson marshals PatternFlowGtpv1SquenceNumberMetricTag to JSON text ToJson() (string, error) - // FromProto unmarshals PatternFlowIpv6VersionMetricTag from protobuf object *otg.PatternFlowIpv6VersionMetricTag - FromProto(msg *otg.PatternFlowIpv6VersionMetricTag) (PatternFlowIpv6VersionMetricTag, error) - // FromPbText unmarshals PatternFlowIpv6VersionMetricTag from protobuf text + // FromProto unmarshals PatternFlowGtpv1SquenceNumberMetricTag from protobuf object *otg.PatternFlowGtpv1SquenceNumberMetricTag + FromProto(msg *otg.PatternFlowGtpv1SquenceNumberMetricTag) (PatternFlowGtpv1SquenceNumberMetricTag, error) + // FromPbText unmarshals PatternFlowGtpv1SquenceNumberMetricTag from protobuf text FromPbText(value string) error - // FromYaml unmarshals PatternFlowIpv6VersionMetricTag from YAML text + // FromYaml unmarshals PatternFlowGtpv1SquenceNumberMetricTag from YAML text FromYaml(value string) error - // FromJson unmarshals PatternFlowIpv6VersionMetricTag from JSON text + // FromJson unmarshals PatternFlowGtpv1SquenceNumberMetricTag from JSON text FromJson(value string) error - // Validate validates PatternFlowIpv6VersionMetricTag + // Validate validates PatternFlowGtpv1SquenceNumberMetricTag Validate() error // A stringer function String() string // Clones the object - Clone() (PatternFlowIpv6VersionMetricTag, error) + Clone() (PatternFlowGtpv1SquenceNumberMetricTag, error) validateToAndFrom() error validateObj(vObj *validation, set_default bool) setDefault() - // Name returns string, set in PatternFlowIpv6VersionMetricTag. + // Name returns string, set in PatternFlowGtpv1SquenceNumberMetricTag. Name() string - // SetName assigns string provided by user to PatternFlowIpv6VersionMetricTag - SetName(value string) PatternFlowIpv6VersionMetricTag - // Offset returns uint32, set in PatternFlowIpv6VersionMetricTag. + // SetName assigns string provided by user to PatternFlowGtpv1SquenceNumberMetricTag + SetName(value string) PatternFlowGtpv1SquenceNumberMetricTag + // Offset returns uint32, set in PatternFlowGtpv1SquenceNumberMetricTag. Offset() uint32 - // SetOffset assigns uint32 provided by user to PatternFlowIpv6VersionMetricTag - SetOffset(value uint32) PatternFlowIpv6VersionMetricTag - // HasOffset checks if Offset has been set in PatternFlowIpv6VersionMetricTag + // SetOffset assigns uint32 provided by user to PatternFlowGtpv1SquenceNumberMetricTag + SetOffset(value uint32) PatternFlowGtpv1SquenceNumberMetricTag + // HasOffset checks if Offset has been set in PatternFlowGtpv1SquenceNumberMetricTag HasOffset() bool - // Length returns uint32, set in PatternFlowIpv6VersionMetricTag. + // Length returns uint32, set in PatternFlowGtpv1SquenceNumberMetricTag. Length() uint32 - // SetLength assigns uint32 provided by user to PatternFlowIpv6VersionMetricTag - SetLength(value uint32) PatternFlowIpv6VersionMetricTag - // HasLength checks if Length has been set in PatternFlowIpv6VersionMetricTag + // SetLength assigns uint32 provided by user to PatternFlowGtpv1SquenceNumberMetricTag + SetLength(value uint32) PatternFlowGtpv1SquenceNumberMetricTag + // HasLength checks if Length has been set in PatternFlowGtpv1SquenceNumberMetricTag HasLength() bool } // Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field // Name returns a string -func (obj *patternFlowIpv6VersionMetricTag) Name() string { +func (obj *patternFlowGtpv1SquenceNumberMetricTag) Name() string { return *obj.obj.Name } // Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field -// SetName sets the string value in the PatternFlowIpv6VersionMetricTag object -func (obj *patternFlowIpv6VersionMetricTag) SetName(value string) PatternFlowIpv6VersionMetricTag { +// SetName sets the string value in the PatternFlowGtpv1SquenceNumberMetricTag object +func (obj *patternFlowGtpv1SquenceNumberMetricTag) SetName(value string) PatternFlowGtpv1SquenceNumberMetricTag { obj.obj.Name = &value return obj @@ -203205,7 +246341,7 @@ func (obj *patternFlowIpv6VersionMetricTag) SetName(value string) PatternFlowIpv // Offset in bits relative to start of corresponding header field // Offset returns a uint32 -func (obj *patternFlowIpv6VersionMetricTag) Offset() uint32 { +func (obj *patternFlowGtpv1SquenceNumberMetricTag) Offset() uint32 { return *obj.obj.Offset @@ -203213,13 +246349,13 @@ func (obj *patternFlowIpv6VersionMetricTag) Offset() uint32 { // Offset in bits relative to start of corresponding header field // Offset returns a uint32 -func (obj *patternFlowIpv6VersionMetricTag) HasOffset() bool { +func (obj *patternFlowGtpv1SquenceNumberMetricTag) HasOffset() bool { return obj.obj.Offset != nil } // Offset in bits relative to start of corresponding header field -// SetOffset sets the uint32 value in the PatternFlowIpv6VersionMetricTag object -func (obj *patternFlowIpv6VersionMetricTag) SetOffset(value uint32) PatternFlowIpv6VersionMetricTag { +// SetOffset sets the uint32 value in the PatternFlowGtpv1SquenceNumberMetricTag object +func (obj *patternFlowGtpv1SquenceNumberMetricTag) SetOffset(value uint32) PatternFlowGtpv1SquenceNumberMetricTag { obj.obj.Offset = &value return obj @@ -203227,7 +246363,7 @@ func (obj *patternFlowIpv6VersionMetricTag) SetOffset(value uint32) PatternFlowI // Number of bits to track for metrics starting from configured offset of corresponding header field // Length returns a uint32 -func (obj *patternFlowIpv6VersionMetricTag) Length() uint32 { +func (obj *patternFlowGtpv1SquenceNumberMetricTag) Length() uint32 { return *obj.obj.Length @@ -203235,83 +246371,83 @@ func (obj *patternFlowIpv6VersionMetricTag) Length() uint32 { // Number of bits to track for metrics starting from configured offset of corresponding header field // Length returns a uint32 -func (obj *patternFlowIpv6VersionMetricTag) HasLength() bool { +func (obj *patternFlowGtpv1SquenceNumberMetricTag) HasLength() bool { return obj.obj.Length != nil } // Number of bits to track for metrics starting from configured offset of corresponding header field -// SetLength sets the uint32 value in the PatternFlowIpv6VersionMetricTag object -func (obj *patternFlowIpv6VersionMetricTag) SetLength(value uint32) PatternFlowIpv6VersionMetricTag { +// SetLength sets the uint32 value in the PatternFlowGtpv1SquenceNumberMetricTag object +func (obj *patternFlowGtpv1SquenceNumberMetricTag) SetLength(value uint32) PatternFlowGtpv1SquenceNumberMetricTag { obj.obj.Length = &value return obj } -func (obj *patternFlowIpv6VersionMetricTag) validateObj(vObj *validation, set_default bool) { +func (obj *patternFlowGtpv1SquenceNumberMetricTag) validateObj(vObj *validation, set_default bool) { if set_default { obj.setDefault() } // Name is required if obj.obj.Name == nil { - vObj.validationErrors = append(vObj.validationErrors, "Name is required field on interface PatternFlowIpv6VersionMetricTag") + vObj.validationErrors = append(vObj.validationErrors, "Name is required field on interface PatternFlowGtpv1SquenceNumberMetricTag") } if obj.obj.Offset != nil { - if *obj.obj.Offset > 3 { + if *obj.obj.Offset > 15 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowIpv6VersionMetricTag.Offset <= 3 but Got %d", *obj.obj.Offset)) + fmt.Sprintf("0 <= PatternFlowGtpv1SquenceNumberMetricTag.Offset <= 15 but Got %d", *obj.obj.Offset)) } } if obj.obj.Length != nil { - if *obj.obj.Length < 1 || *obj.obj.Length > 4 { + if *obj.obj.Length < 1 || *obj.obj.Length > 16 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("1 <= PatternFlowIpv6VersionMetricTag.Length <= 4 but Got %d", *obj.obj.Length)) + fmt.Sprintf("1 <= PatternFlowGtpv1SquenceNumberMetricTag.Length <= 16 but Got %d", *obj.obj.Length)) } } } -func (obj *patternFlowIpv6VersionMetricTag) setDefault() { +func (obj *patternFlowGtpv1SquenceNumberMetricTag) setDefault() { if obj.obj.Offset == nil { obj.SetOffset(0) } if obj.obj.Length == nil { - obj.SetLength(4) + obj.SetLength(16) } } -// ***** PatternFlowIpv6TrafficClassCounter ***** -type patternFlowIpv6TrafficClassCounter struct { +// ***** PatternFlowGtpv1NPduNumberCounter ***** +type patternFlowGtpv1NPduNumberCounter struct { validation - obj *otg.PatternFlowIpv6TrafficClassCounter + obj *otg.PatternFlowGtpv1NPduNumberCounter } -func NewPatternFlowIpv6TrafficClassCounter() PatternFlowIpv6TrafficClassCounter { - obj := patternFlowIpv6TrafficClassCounter{obj: &otg.PatternFlowIpv6TrafficClassCounter{}} +func NewPatternFlowGtpv1NPduNumberCounter() PatternFlowGtpv1NPduNumberCounter { + obj := patternFlowGtpv1NPduNumberCounter{obj: &otg.PatternFlowGtpv1NPduNumberCounter{}} obj.setDefault() return &obj } -func (obj *patternFlowIpv6TrafficClassCounter) Msg() *otg.PatternFlowIpv6TrafficClassCounter { +func (obj *patternFlowGtpv1NPduNumberCounter) Msg() *otg.PatternFlowGtpv1NPduNumberCounter { return obj.obj } -func (obj *patternFlowIpv6TrafficClassCounter) SetMsg(msg *otg.PatternFlowIpv6TrafficClassCounter) PatternFlowIpv6TrafficClassCounter { +func (obj *patternFlowGtpv1NPduNumberCounter) SetMsg(msg *otg.PatternFlowGtpv1NPduNumberCounter) PatternFlowGtpv1NPduNumberCounter { proto.Merge(obj.obj, msg) return obj } -func (obj *patternFlowIpv6TrafficClassCounter) ToProto() (*otg.PatternFlowIpv6TrafficClassCounter, error) { +func (obj *patternFlowGtpv1NPduNumberCounter) ToProto() (*otg.PatternFlowGtpv1NPduNumberCounter, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -203319,7 +246455,7 @@ func (obj *patternFlowIpv6TrafficClassCounter) ToProto() (*otg.PatternFlowIpv6Tr return obj.Msg(), nil } -func (obj *patternFlowIpv6TrafficClassCounter) FromProto(msg *otg.PatternFlowIpv6TrafficClassCounter) (PatternFlowIpv6TrafficClassCounter, error) { +func (obj *patternFlowGtpv1NPduNumberCounter) FromProto(msg *otg.PatternFlowGtpv1NPduNumberCounter) (PatternFlowGtpv1NPduNumberCounter, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -203328,7 +246464,7 @@ func (obj *patternFlowIpv6TrafficClassCounter) FromProto(msg *otg.PatternFlowIpv return newObj, nil } -func (obj *patternFlowIpv6TrafficClassCounter) ToPbText() (string, error) { +func (obj *patternFlowGtpv1NPduNumberCounter) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -203340,7 +246476,7 @@ func (obj *patternFlowIpv6TrafficClassCounter) ToPbText() (string, error) { return string(protoMarshal), nil } -func (obj *patternFlowIpv6TrafficClassCounter) FromPbText(value string) error { +func (obj *patternFlowGtpv1NPduNumberCounter) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj @@ -203353,7 +246489,7 @@ func (obj *patternFlowIpv6TrafficClassCounter) FromPbText(value string) error { return retObj } -func (obj *patternFlowIpv6TrafficClassCounter) ToYaml() (string, error) { +func (obj *patternFlowGtpv1NPduNumberCounter) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -203374,7 +246510,7 @@ func (obj *patternFlowIpv6TrafficClassCounter) ToYaml() (string, error) { return string(data), nil } -func (obj *patternFlowIpv6TrafficClassCounter) FromYaml(value string) error { +func (obj *patternFlowGtpv1NPduNumberCounter) FromYaml(value string) error { if value == "" { value = "{}" } @@ -203399,7 +246535,7 @@ func (obj *patternFlowIpv6TrafficClassCounter) FromYaml(value string) error { return nil } -func (obj *patternFlowIpv6TrafficClassCounter) ToJson() (string, error) { +func (obj *patternFlowGtpv1NPduNumberCounter) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -203417,7 +246553,7 @@ func (obj *patternFlowIpv6TrafficClassCounter) ToJson() (string, error) { return string(data), nil } -func (obj *patternFlowIpv6TrafficClassCounter) FromJson(value string) error { +func (obj *patternFlowGtpv1NPduNumberCounter) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -203438,19 +246574,19 @@ func (obj *patternFlowIpv6TrafficClassCounter) FromJson(value string) error { return nil } -func (obj *patternFlowIpv6TrafficClassCounter) validateToAndFrom() error { +func (obj *patternFlowGtpv1NPduNumberCounter) validateToAndFrom() error { // emptyVars() obj.validateObj(&obj.validation, true) return obj.validationResult() } -func (obj *patternFlowIpv6TrafficClassCounter) Validate() error { +func (obj *patternFlowGtpv1NPduNumberCounter) Validate() error { // emptyVars() obj.validateObj(&obj.validation, false) return obj.validationResult() } -func (obj *patternFlowIpv6TrafficClassCounter) String() string { +func (obj *patternFlowGtpv1NPduNumberCounter) String() string { str, err := obj.ToYaml() if err != nil { return err.Error() @@ -203458,12 +246594,12 @@ func (obj *patternFlowIpv6TrafficClassCounter) String() string { return str } -func (obj *patternFlowIpv6TrafficClassCounter) Clone() (PatternFlowIpv6TrafficClassCounter, error) { +func (obj *patternFlowGtpv1NPduNumberCounter) Clone() (PatternFlowGtpv1NPduNumberCounter, error) { vErr := obj.Validate() if vErr != nil { return nil, vErr } - newObj := NewPatternFlowIpv6TrafficClassCounter() + newObj := NewPatternFlowGtpv1NPduNumberCounter() data, err := proto.Marshal(obj.Msg()) if err != nil { return nil, err @@ -203475,63 +246611,63 @@ func (obj *patternFlowIpv6TrafficClassCounter) Clone() (PatternFlowIpv6TrafficCl return newObj, nil } -// PatternFlowIpv6TrafficClassCounter is integer counter pattern -type PatternFlowIpv6TrafficClassCounter interface { +// PatternFlowGtpv1NPduNumberCounter is integer counter pattern +type PatternFlowGtpv1NPduNumberCounter interface { Validation - // Msg marshals PatternFlowIpv6TrafficClassCounter to protobuf object *otg.PatternFlowIpv6TrafficClassCounter + // Msg marshals PatternFlowGtpv1NPduNumberCounter to protobuf object *otg.PatternFlowGtpv1NPduNumberCounter // and doesn't set defaults - Msg() *otg.PatternFlowIpv6TrafficClassCounter - // SetMsg unmarshals PatternFlowIpv6TrafficClassCounter from protobuf object *otg.PatternFlowIpv6TrafficClassCounter + Msg() *otg.PatternFlowGtpv1NPduNumberCounter + // SetMsg unmarshals PatternFlowGtpv1NPduNumberCounter from protobuf object *otg.PatternFlowGtpv1NPduNumberCounter // and doesn't set defaults - SetMsg(*otg.PatternFlowIpv6TrafficClassCounter) PatternFlowIpv6TrafficClassCounter - // ToProto marshals PatternFlowIpv6TrafficClassCounter to protobuf object *otg.PatternFlowIpv6TrafficClassCounter - ToProto() (*otg.PatternFlowIpv6TrafficClassCounter, error) - // ToPbText marshals PatternFlowIpv6TrafficClassCounter to protobuf text + SetMsg(*otg.PatternFlowGtpv1NPduNumberCounter) PatternFlowGtpv1NPduNumberCounter + // ToProto marshals PatternFlowGtpv1NPduNumberCounter to protobuf object *otg.PatternFlowGtpv1NPduNumberCounter + ToProto() (*otg.PatternFlowGtpv1NPduNumberCounter, error) + // ToPbText marshals PatternFlowGtpv1NPduNumberCounter to protobuf text ToPbText() (string, error) - // ToYaml marshals PatternFlowIpv6TrafficClassCounter to YAML text + // ToYaml marshals PatternFlowGtpv1NPduNumberCounter to YAML text ToYaml() (string, error) - // ToJson marshals PatternFlowIpv6TrafficClassCounter to JSON text + // ToJson marshals PatternFlowGtpv1NPduNumberCounter to JSON text ToJson() (string, error) - // FromProto unmarshals PatternFlowIpv6TrafficClassCounter from protobuf object *otg.PatternFlowIpv6TrafficClassCounter - FromProto(msg *otg.PatternFlowIpv6TrafficClassCounter) (PatternFlowIpv6TrafficClassCounter, error) - // FromPbText unmarshals PatternFlowIpv6TrafficClassCounter from protobuf text + // FromProto unmarshals PatternFlowGtpv1NPduNumberCounter from protobuf object *otg.PatternFlowGtpv1NPduNumberCounter + FromProto(msg *otg.PatternFlowGtpv1NPduNumberCounter) (PatternFlowGtpv1NPduNumberCounter, error) + // FromPbText unmarshals PatternFlowGtpv1NPduNumberCounter from protobuf text FromPbText(value string) error - // FromYaml unmarshals PatternFlowIpv6TrafficClassCounter from YAML text + // FromYaml unmarshals PatternFlowGtpv1NPduNumberCounter from YAML text FromYaml(value string) error - // FromJson unmarshals PatternFlowIpv6TrafficClassCounter from JSON text + // FromJson unmarshals PatternFlowGtpv1NPduNumberCounter from JSON text FromJson(value string) error - // Validate validates PatternFlowIpv6TrafficClassCounter + // Validate validates PatternFlowGtpv1NPduNumberCounter Validate() error // A stringer function String() string // Clones the object - Clone() (PatternFlowIpv6TrafficClassCounter, error) + Clone() (PatternFlowGtpv1NPduNumberCounter, error) validateToAndFrom() error validateObj(vObj *validation, set_default bool) setDefault() - // Start returns uint32, set in PatternFlowIpv6TrafficClassCounter. + // Start returns uint32, set in PatternFlowGtpv1NPduNumberCounter. Start() uint32 - // SetStart assigns uint32 provided by user to PatternFlowIpv6TrafficClassCounter - SetStart(value uint32) PatternFlowIpv6TrafficClassCounter - // HasStart checks if Start has been set in PatternFlowIpv6TrafficClassCounter + // SetStart assigns uint32 provided by user to PatternFlowGtpv1NPduNumberCounter + SetStart(value uint32) PatternFlowGtpv1NPduNumberCounter + // HasStart checks if Start has been set in PatternFlowGtpv1NPduNumberCounter HasStart() bool - // Step returns uint32, set in PatternFlowIpv6TrafficClassCounter. + // Step returns uint32, set in PatternFlowGtpv1NPduNumberCounter. Step() uint32 - // SetStep assigns uint32 provided by user to PatternFlowIpv6TrafficClassCounter - SetStep(value uint32) PatternFlowIpv6TrafficClassCounter - // HasStep checks if Step has been set in PatternFlowIpv6TrafficClassCounter + // SetStep assigns uint32 provided by user to PatternFlowGtpv1NPduNumberCounter + SetStep(value uint32) PatternFlowGtpv1NPduNumberCounter + // HasStep checks if Step has been set in PatternFlowGtpv1NPduNumberCounter HasStep() bool - // Count returns uint32, set in PatternFlowIpv6TrafficClassCounter. + // Count returns uint32, set in PatternFlowGtpv1NPduNumberCounter. Count() uint32 - // SetCount assigns uint32 provided by user to PatternFlowIpv6TrafficClassCounter - SetCount(value uint32) PatternFlowIpv6TrafficClassCounter - // HasCount checks if Count has been set in PatternFlowIpv6TrafficClassCounter + // SetCount assigns uint32 provided by user to PatternFlowGtpv1NPduNumberCounter + SetCount(value uint32) PatternFlowGtpv1NPduNumberCounter + // HasCount checks if Count has been set in PatternFlowGtpv1NPduNumberCounter HasCount() bool } // description is TBD // Start returns a uint32 -func (obj *patternFlowIpv6TrafficClassCounter) Start() uint32 { +func (obj *patternFlowGtpv1NPduNumberCounter) Start() uint32 { return *obj.obj.Start @@ -203539,13 +246675,13 @@ func (obj *patternFlowIpv6TrafficClassCounter) Start() uint32 { // description is TBD // Start returns a uint32 -func (obj *patternFlowIpv6TrafficClassCounter) HasStart() bool { +func (obj *patternFlowGtpv1NPduNumberCounter) HasStart() bool { return obj.obj.Start != nil } // description is TBD -// SetStart sets the uint32 value in the PatternFlowIpv6TrafficClassCounter object -func (obj *patternFlowIpv6TrafficClassCounter) SetStart(value uint32) PatternFlowIpv6TrafficClassCounter { +// SetStart sets the uint32 value in the PatternFlowGtpv1NPduNumberCounter object +func (obj *patternFlowGtpv1NPduNumberCounter) SetStart(value uint32) PatternFlowGtpv1NPduNumberCounter { obj.obj.Start = &value return obj @@ -203553,7 +246689,7 @@ func (obj *patternFlowIpv6TrafficClassCounter) SetStart(value uint32) PatternFlo // description is TBD // Step returns a uint32 -func (obj *patternFlowIpv6TrafficClassCounter) Step() uint32 { +func (obj *patternFlowGtpv1NPduNumberCounter) Step() uint32 { return *obj.obj.Step @@ -203561,13 +246697,13 @@ func (obj *patternFlowIpv6TrafficClassCounter) Step() uint32 { // description is TBD // Step returns a uint32 -func (obj *patternFlowIpv6TrafficClassCounter) HasStep() bool { +func (obj *patternFlowGtpv1NPduNumberCounter) HasStep() bool { return obj.obj.Step != nil } // description is TBD -// SetStep sets the uint32 value in the PatternFlowIpv6TrafficClassCounter object -func (obj *patternFlowIpv6TrafficClassCounter) SetStep(value uint32) PatternFlowIpv6TrafficClassCounter { +// SetStep sets the uint32 value in the PatternFlowGtpv1NPduNumberCounter object +func (obj *patternFlowGtpv1NPduNumberCounter) SetStep(value uint32) PatternFlowGtpv1NPduNumberCounter { obj.obj.Step = &value return obj @@ -203575,7 +246711,7 @@ func (obj *patternFlowIpv6TrafficClassCounter) SetStep(value uint32) PatternFlow // description is TBD // Count returns a uint32 -func (obj *patternFlowIpv6TrafficClassCounter) Count() uint32 { +func (obj *patternFlowGtpv1NPduNumberCounter) Count() uint32 { return *obj.obj.Count @@ -203583,19 +246719,19 @@ func (obj *patternFlowIpv6TrafficClassCounter) Count() uint32 { // description is TBD // Count returns a uint32 -func (obj *patternFlowIpv6TrafficClassCounter) HasCount() bool { +func (obj *patternFlowGtpv1NPduNumberCounter) HasCount() bool { return obj.obj.Count != nil } // description is TBD -// SetCount sets the uint32 value in the PatternFlowIpv6TrafficClassCounter object -func (obj *patternFlowIpv6TrafficClassCounter) SetCount(value uint32) PatternFlowIpv6TrafficClassCounter { +// SetCount sets the uint32 value in the PatternFlowGtpv1NPduNumberCounter object +func (obj *patternFlowGtpv1NPduNumberCounter) SetCount(value uint32) PatternFlowGtpv1NPduNumberCounter { obj.obj.Count = &value return obj } -func (obj *patternFlowIpv6TrafficClassCounter) validateObj(vObj *validation, set_default bool) { +func (obj *patternFlowGtpv1NPduNumberCounter) validateObj(vObj *validation, set_default bool) { if set_default { obj.setDefault() } @@ -203605,7 +246741,7 @@ func (obj *patternFlowIpv6TrafficClassCounter) validateObj(vObj *validation, set if *obj.obj.Start > 255 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowIpv6TrafficClassCounter.Start <= 255 but Got %d", *obj.obj.Start)) + fmt.Sprintf("0 <= PatternFlowGtpv1NPduNumberCounter.Start <= 255 but Got %d", *obj.obj.Start)) } } @@ -203615,7 +246751,7 @@ func (obj *patternFlowIpv6TrafficClassCounter) validateObj(vObj *validation, set if *obj.obj.Step > 255 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowIpv6TrafficClassCounter.Step <= 255 but Got %d", *obj.obj.Step)) + fmt.Sprintf("0 <= PatternFlowGtpv1NPduNumberCounter.Step <= 255 but Got %d", *obj.obj.Step)) } } @@ -203625,14 +246761,14 @@ func (obj *patternFlowIpv6TrafficClassCounter) validateObj(vObj *validation, set if *obj.obj.Count > 255 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowIpv6TrafficClassCounter.Count <= 255 but Got %d", *obj.obj.Count)) + fmt.Sprintf("0 <= PatternFlowGtpv1NPduNumberCounter.Count <= 255 but Got %d", *obj.obj.Count)) } } } -func (obj *patternFlowIpv6TrafficClassCounter) setDefault() { +func (obj *patternFlowGtpv1NPduNumberCounter) setDefault() { if obj.obj.Start == nil { obj.SetStart(0) } @@ -203645,29 +246781,29 @@ func (obj *patternFlowIpv6TrafficClassCounter) setDefault() { } -// ***** PatternFlowIpv6TrafficClassMetricTag ***** -type patternFlowIpv6TrafficClassMetricTag struct { +// ***** PatternFlowGtpv1NPduNumberMetricTag ***** +type patternFlowGtpv1NPduNumberMetricTag struct { validation - obj *otg.PatternFlowIpv6TrafficClassMetricTag + obj *otg.PatternFlowGtpv1NPduNumberMetricTag } -func NewPatternFlowIpv6TrafficClassMetricTag() PatternFlowIpv6TrafficClassMetricTag { - obj := patternFlowIpv6TrafficClassMetricTag{obj: &otg.PatternFlowIpv6TrafficClassMetricTag{}} +func NewPatternFlowGtpv1NPduNumberMetricTag() PatternFlowGtpv1NPduNumberMetricTag { + obj := patternFlowGtpv1NPduNumberMetricTag{obj: &otg.PatternFlowGtpv1NPduNumberMetricTag{}} obj.setDefault() return &obj } -func (obj *patternFlowIpv6TrafficClassMetricTag) Msg() *otg.PatternFlowIpv6TrafficClassMetricTag { +func (obj *patternFlowGtpv1NPduNumberMetricTag) Msg() *otg.PatternFlowGtpv1NPduNumberMetricTag { return obj.obj } -func (obj *patternFlowIpv6TrafficClassMetricTag) SetMsg(msg *otg.PatternFlowIpv6TrafficClassMetricTag) PatternFlowIpv6TrafficClassMetricTag { +func (obj *patternFlowGtpv1NPduNumberMetricTag) SetMsg(msg *otg.PatternFlowGtpv1NPduNumberMetricTag) PatternFlowGtpv1NPduNumberMetricTag { proto.Merge(obj.obj, msg) return obj } -func (obj *patternFlowIpv6TrafficClassMetricTag) ToProto() (*otg.PatternFlowIpv6TrafficClassMetricTag, error) { +func (obj *patternFlowGtpv1NPduNumberMetricTag) ToProto() (*otg.PatternFlowGtpv1NPduNumberMetricTag, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -203675,7 +246811,7 @@ func (obj *patternFlowIpv6TrafficClassMetricTag) ToProto() (*otg.PatternFlowIpv6 return obj.Msg(), nil } -func (obj *patternFlowIpv6TrafficClassMetricTag) FromProto(msg *otg.PatternFlowIpv6TrafficClassMetricTag) (PatternFlowIpv6TrafficClassMetricTag, error) { +func (obj *patternFlowGtpv1NPduNumberMetricTag) FromProto(msg *otg.PatternFlowGtpv1NPduNumberMetricTag) (PatternFlowGtpv1NPduNumberMetricTag, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -203684,7 +246820,7 @@ func (obj *patternFlowIpv6TrafficClassMetricTag) FromProto(msg *otg.PatternFlowI return newObj, nil } -func (obj *patternFlowIpv6TrafficClassMetricTag) ToPbText() (string, error) { +func (obj *patternFlowGtpv1NPduNumberMetricTag) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -203696,7 +246832,7 @@ func (obj *patternFlowIpv6TrafficClassMetricTag) ToPbText() (string, error) { return string(protoMarshal), nil } -func (obj *patternFlowIpv6TrafficClassMetricTag) FromPbText(value string) error { +func (obj *patternFlowGtpv1NPduNumberMetricTag) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj @@ -203709,7 +246845,7 @@ func (obj *patternFlowIpv6TrafficClassMetricTag) FromPbText(value string) error return retObj } -func (obj *patternFlowIpv6TrafficClassMetricTag) ToYaml() (string, error) { +func (obj *patternFlowGtpv1NPduNumberMetricTag) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -203730,7 +246866,7 @@ func (obj *patternFlowIpv6TrafficClassMetricTag) ToYaml() (string, error) { return string(data), nil } -func (obj *patternFlowIpv6TrafficClassMetricTag) FromYaml(value string) error { +func (obj *patternFlowGtpv1NPduNumberMetricTag) FromYaml(value string) error { if value == "" { value = "{}" } @@ -203755,7 +246891,7 @@ func (obj *patternFlowIpv6TrafficClassMetricTag) FromYaml(value string) error { return nil } -func (obj *patternFlowIpv6TrafficClassMetricTag) ToJson() (string, error) { +func (obj *patternFlowGtpv1NPduNumberMetricTag) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -203773,7 +246909,7 @@ func (obj *patternFlowIpv6TrafficClassMetricTag) ToJson() (string, error) { return string(data), nil } -func (obj *patternFlowIpv6TrafficClassMetricTag) FromJson(value string) error { +func (obj *patternFlowGtpv1NPduNumberMetricTag) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -203794,19 +246930,19 @@ func (obj *patternFlowIpv6TrafficClassMetricTag) FromJson(value string) error { return nil } -func (obj *patternFlowIpv6TrafficClassMetricTag) validateToAndFrom() error { +func (obj *patternFlowGtpv1NPduNumberMetricTag) validateToAndFrom() error { // emptyVars() obj.validateObj(&obj.validation, true) return obj.validationResult() } -func (obj *patternFlowIpv6TrafficClassMetricTag) Validate() error { +func (obj *patternFlowGtpv1NPduNumberMetricTag) Validate() error { // emptyVars() obj.validateObj(&obj.validation, false) return obj.validationResult() } -func (obj *patternFlowIpv6TrafficClassMetricTag) String() string { +func (obj *patternFlowGtpv1NPduNumberMetricTag) String() string { str, err := obj.ToYaml() if err != nil { return err.Error() @@ -203814,12 +246950,12 @@ func (obj *patternFlowIpv6TrafficClassMetricTag) String() string { return str } -func (obj *patternFlowIpv6TrafficClassMetricTag) Clone() (PatternFlowIpv6TrafficClassMetricTag, error) { +func (obj *patternFlowGtpv1NPduNumberMetricTag) Clone() (PatternFlowGtpv1NPduNumberMetricTag, error) { vErr := obj.Validate() if vErr != nil { return nil, vErr } - newObj := NewPatternFlowIpv6TrafficClassMetricTag() + newObj := NewPatternFlowGtpv1NPduNumberMetricTag() data, err := proto.Marshal(obj.Msg()) if err != nil { return nil, err @@ -203831,69 +246967,69 @@ func (obj *patternFlowIpv6TrafficClassMetricTag) Clone() (PatternFlowIpv6Traffic return newObj, nil } -// PatternFlowIpv6TrafficClassMetricTag is metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. -type PatternFlowIpv6TrafficClassMetricTag interface { +// PatternFlowGtpv1NPduNumberMetricTag is metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. +type PatternFlowGtpv1NPduNumberMetricTag interface { Validation - // Msg marshals PatternFlowIpv6TrafficClassMetricTag to protobuf object *otg.PatternFlowIpv6TrafficClassMetricTag + // Msg marshals PatternFlowGtpv1NPduNumberMetricTag to protobuf object *otg.PatternFlowGtpv1NPduNumberMetricTag // and doesn't set defaults - Msg() *otg.PatternFlowIpv6TrafficClassMetricTag - // SetMsg unmarshals PatternFlowIpv6TrafficClassMetricTag from protobuf object *otg.PatternFlowIpv6TrafficClassMetricTag + Msg() *otg.PatternFlowGtpv1NPduNumberMetricTag + // SetMsg unmarshals PatternFlowGtpv1NPduNumberMetricTag from protobuf object *otg.PatternFlowGtpv1NPduNumberMetricTag // and doesn't set defaults - SetMsg(*otg.PatternFlowIpv6TrafficClassMetricTag) PatternFlowIpv6TrafficClassMetricTag - // ToProto marshals PatternFlowIpv6TrafficClassMetricTag to protobuf object *otg.PatternFlowIpv6TrafficClassMetricTag - ToProto() (*otg.PatternFlowIpv6TrafficClassMetricTag, error) - // ToPbText marshals PatternFlowIpv6TrafficClassMetricTag to protobuf text + SetMsg(*otg.PatternFlowGtpv1NPduNumberMetricTag) PatternFlowGtpv1NPduNumberMetricTag + // ToProto marshals PatternFlowGtpv1NPduNumberMetricTag to protobuf object *otg.PatternFlowGtpv1NPduNumberMetricTag + ToProto() (*otg.PatternFlowGtpv1NPduNumberMetricTag, error) + // ToPbText marshals PatternFlowGtpv1NPduNumberMetricTag to protobuf text ToPbText() (string, error) - // ToYaml marshals PatternFlowIpv6TrafficClassMetricTag to YAML text + // ToYaml marshals PatternFlowGtpv1NPduNumberMetricTag to YAML text ToYaml() (string, error) - // ToJson marshals PatternFlowIpv6TrafficClassMetricTag to JSON text + // ToJson marshals PatternFlowGtpv1NPduNumberMetricTag to JSON text ToJson() (string, error) - // FromProto unmarshals PatternFlowIpv6TrafficClassMetricTag from protobuf object *otg.PatternFlowIpv6TrafficClassMetricTag - FromProto(msg *otg.PatternFlowIpv6TrafficClassMetricTag) (PatternFlowIpv6TrafficClassMetricTag, error) - // FromPbText unmarshals PatternFlowIpv6TrafficClassMetricTag from protobuf text + // FromProto unmarshals PatternFlowGtpv1NPduNumberMetricTag from protobuf object *otg.PatternFlowGtpv1NPduNumberMetricTag + FromProto(msg *otg.PatternFlowGtpv1NPduNumberMetricTag) (PatternFlowGtpv1NPduNumberMetricTag, error) + // FromPbText unmarshals PatternFlowGtpv1NPduNumberMetricTag from protobuf text FromPbText(value string) error - // FromYaml unmarshals PatternFlowIpv6TrafficClassMetricTag from YAML text + // FromYaml unmarshals PatternFlowGtpv1NPduNumberMetricTag from YAML text FromYaml(value string) error - // FromJson unmarshals PatternFlowIpv6TrafficClassMetricTag from JSON text + // FromJson unmarshals PatternFlowGtpv1NPduNumberMetricTag from JSON text FromJson(value string) error - // Validate validates PatternFlowIpv6TrafficClassMetricTag + // Validate validates PatternFlowGtpv1NPduNumberMetricTag Validate() error // A stringer function String() string // Clones the object - Clone() (PatternFlowIpv6TrafficClassMetricTag, error) + Clone() (PatternFlowGtpv1NPduNumberMetricTag, error) validateToAndFrom() error validateObj(vObj *validation, set_default bool) setDefault() - // Name returns string, set in PatternFlowIpv6TrafficClassMetricTag. + // Name returns string, set in PatternFlowGtpv1NPduNumberMetricTag. Name() string - // SetName assigns string provided by user to PatternFlowIpv6TrafficClassMetricTag - SetName(value string) PatternFlowIpv6TrafficClassMetricTag - // Offset returns uint32, set in PatternFlowIpv6TrafficClassMetricTag. + // SetName assigns string provided by user to PatternFlowGtpv1NPduNumberMetricTag + SetName(value string) PatternFlowGtpv1NPduNumberMetricTag + // Offset returns uint32, set in PatternFlowGtpv1NPduNumberMetricTag. Offset() uint32 - // SetOffset assigns uint32 provided by user to PatternFlowIpv6TrafficClassMetricTag - SetOffset(value uint32) PatternFlowIpv6TrafficClassMetricTag - // HasOffset checks if Offset has been set in PatternFlowIpv6TrafficClassMetricTag + // SetOffset assigns uint32 provided by user to PatternFlowGtpv1NPduNumberMetricTag + SetOffset(value uint32) PatternFlowGtpv1NPduNumberMetricTag + // HasOffset checks if Offset has been set in PatternFlowGtpv1NPduNumberMetricTag HasOffset() bool - // Length returns uint32, set in PatternFlowIpv6TrafficClassMetricTag. + // Length returns uint32, set in PatternFlowGtpv1NPduNumberMetricTag. Length() uint32 - // SetLength assigns uint32 provided by user to PatternFlowIpv6TrafficClassMetricTag - SetLength(value uint32) PatternFlowIpv6TrafficClassMetricTag - // HasLength checks if Length has been set in PatternFlowIpv6TrafficClassMetricTag + // SetLength assigns uint32 provided by user to PatternFlowGtpv1NPduNumberMetricTag + SetLength(value uint32) PatternFlowGtpv1NPduNumberMetricTag + // HasLength checks if Length has been set in PatternFlowGtpv1NPduNumberMetricTag HasLength() bool } // Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field // Name returns a string -func (obj *patternFlowIpv6TrafficClassMetricTag) Name() string { +func (obj *patternFlowGtpv1NPduNumberMetricTag) Name() string { return *obj.obj.Name } // Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field -// SetName sets the string value in the PatternFlowIpv6TrafficClassMetricTag object -func (obj *patternFlowIpv6TrafficClassMetricTag) SetName(value string) PatternFlowIpv6TrafficClassMetricTag { +// SetName sets the string value in the PatternFlowGtpv1NPduNumberMetricTag object +func (obj *patternFlowGtpv1NPduNumberMetricTag) SetName(value string) PatternFlowGtpv1NPduNumberMetricTag { obj.obj.Name = &value return obj @@ -203901,7 +247037,7 @@ func (obj *patternFlowIpv6TrafficClassMetricTag) SetName(value string) PatternFl // Offset in bits relative to start of corresponding header field // Offset returns a uint32 -func (obj *patternFlowIpv6TrafficClassMetricTag) Offset() uint32 { +func (obj *patternFlowGtpv1NPduNumberMetricTag) Offset() uint32 { return *obj.obj.Offset @@ -203909,13 +247045,13 @@ func (obj *patternFlowIpv6TrafficClassMetricTag) Offset() uint32 { // Offset in bits relative to start of corresponding header field // Offset returns a uint32 -func (obj *patternFlowIpv6TrafficClassMetricTag) HasOffset() bool { +func (obj *patternFlowGtpv1NPduNumberMetricTag) HasOffset() bool { return obj.obj.Offset != nil } // Offset in bits relative to start of corresponding header field -// SetOffset sets the uint32 value in the PatternFlowIpv6TrafficClassMetricTag object -func (obj *patternFlowIpv6TrafficClassMetricTag) SetOffset(value uint32) PatternFlowIpv6TrafficClassMetricTag { +// SetOffset sets the uint32 value in the PatternFlowGtpv1NPduNumberMetricTag object +func (obj *patternFlowGtpv1NPduNumberMetricTag) SetOffset(value uint32) PatternFlowGtpv1NPduNumberMetricTag { obj.obj.Offset = &value return obj @@ -203923,7 +247059,7 @@ func (obj *patternFlowIpv6TrafficClassMetricTag) SetOffset(value uint32) Pattern // Number of bits to track for metrics starting from configured offset of corresponding header field // Length returns a uint32 -func (obj *patternFlowIpv6TrafficClassMetricTag) Length() uint32 { +func (obj *patternFlowGtpv1NPduNumberMetricTag) Length() uint32 { return *obj.obj.Length @@ -203931,26 +247067,26 @@ func (obj *patternFlowIpv6TrafficClassMetricTag) Length() uint32 { // Number of bits to track for metrics starting from configured offset of corresponding header field // Length returns a uint32 -func (obj *patternFlowIpv6TrafficClassMetricTag) HasLength() bool { +func (obj *patternFlowGtpv1NPduNumberMetricTag) HasLength() bool { return obj.obj.Length != nil } // Number of bits to track for metrics starting from configured offset of corresponding header field -// SetLength sets the uint32 value in the PatternFlowIpv6TrafficClassMetricTag object -func (obj *patternFlowIpv6TrafficClassMetricTag) SetLength(value uint32) PatternFlowIpv6TrafficClassMetricTag { +// SetLength sets the uint32 value in the PatternFlowGtpv1NPduNumberMetricTag object +func (obj *patternFlowGtpv1NPduNumberMetricTag) SetLength(value uint32) PatternFlowGtpv1NPduNumberMetricTag { obj.obj.Length = &value return obj } -func (obj *patternFlowIpv6TrafficClassMetricTag) validateObj(vObj *validation, set_default bool) { +func (obj *patternFlowGtpv1NPduNumberMetricTag) validateObj(vObj *validation, set_default bool) { if set_default { obj.setDefault() } // Name is required if obj.obj.Name == nil { - vObj.validationErrors = append(vObj.validationErrors, "Name is required field on interface PatternFlowIpv6TrafficClassMetricTag") + vObj.validationErrors = append(vObj.validationErrors, "Name is required field on interface PatternFlowGtpv1NPduNumberMetricTag") } if obj.obj.Offset != nil { @@ -203958,7 +247094,7 @@ func (obj *patternFlowIpv6TrafficClassMetricTag) validateObj(vObj *validation, s if *obj.obj.Offset > 7 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowIpv6TrafficClassMetricTag.Offset <= 7 but Got %d", *obj.obj.Offset)) + fmt.Sprintf("0 <= PatternFlowGtpv1NPduNumberMetricTag.Offset <= 7 but Got %d", *obj.obj.Offset)) } } @@ -203968,14 +247104,14 @@ func (obj *patternFlowIpv6TrafficClassMetricTag) validateObj(vObj *validation, s if *obj.obj.Length < 1 || *obj.obj.Length > 8 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("1 <= PatternFlowIpv6TrafficClassMetricTag.Length <= 8 but Got %d", *obj.obj.Length)) + fmt.Sprintf("1 <= PatternFlowGtpv1NPduNumberMetricTag.Length <= 8 but Got %d", *obj.obj.Length)) } } } -func (obj *patternFlowIpv6TrafficClassMetricTag) setDefault() { +func (obj *patternFlowGtpv1NPduNumberMetricTag) setDefault() { if obj.obj.Offset == nil { obj.SetOffset(0) } @@ -203985,29 +247121,29 @@ func (obj *patternFlowIpv6TrafficClassMetricTag) setDefault() { } -// ***** PatternFlowIpv6FlowLabelCounter ***** -type patternFlowIpv6FlowLabelCounter struct { +// ***** PatternFlowGtpv1NextExtensionHeaderTypeCounter ***** +type patternFlowGtpv1NextExtensionHeaderTypeCounter struct { validation - obj *otg.PatternFlowIpv6FlowLabelCounter + obj *otg.PatternFlowGtpv1NextExtensionHeaderTypeCounter } -func NewPatternFlowIpv6FlowLabelCounter() PatternFlowIpv6FlowLabelCounter { - obj := patternFlowIpv6FlowLabelCounter{obj: &otg.PatternFlowIpv6FlowLabelCounter{}} +func NewPatternFlowGtpv1NextExtensionHeaderTypeCounter() PatternFlowGtpv1NextExtensionHeaderTypeCounter { + obj := patternFlowGtpv1NextExtensionHeaderTypeCounter{obj: &otg.PatternFlowGtpv1NextExtensionHeaderTypeCounter{}} obj.setDefault() return &obj } -func (obj *patternFlowIpv6FlowLabelCounter) Msg() *otg.PatternFlowIpv6FlowLabelCounter { +func (obj *patternFlowGtpv1NextExtensionHeaderTypeCounter) Msg() *otg.PatternFlowGtpv1NextExtensionHeaderTypeCounter { return obj.obj } -func (obj *patternFlowIpv6FlowLabelCounter) SetMsg(msg *otg.PatternFlowIpv6FlowLabelCounter) PatternFlowIpv6FlowLabelCounter { +func (obj *patternFlowGtpv1NextExtensionHeaderTypeCounter) SetMsg(msg *otg.PatternFlowGtpv1NextExtensionHeaderTypeCounter) PatternFlowGtpv1NextExtensionHeaderTypeCounter { proto.Merge(obj.obj, msg) return obj } -func (obj *patternFlowIpv6FlowLabelCounter) ToProto() (*otg.PatternFlowIpv6FlowLabelCounter, error) { +func (obj *patternFlowGtpv1NextExtensionHeaderTypeCounter) ToProto() (*otg.PatternFlowGtpv1NextExtensionHeaderTypeCounter, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -204015,7 +247151,7 @@ func (obj *patternFlowIpv6FlowLabelCounter) ToProto() (*otg.PatternFlowIpv6FlowL return obj.Msg(), nil } -func (obj *patternFlowIpv6FlowLabelCounter) FromProto(msg *otg.PatternFlowIpv6FlowLabelCounter) (PatternFlowIpv6FlowLabelCounter, error) { +func (obj *patternFlowGtpv1NextExtensionHeaderTypeCounter) FromProto(msg *otg.PatternFlowGtpv1NextExtensionHeaderTypeCounter) (PatternFlowGtpv1NextExtensionHeaderTypeCounter, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -204024,7 +247160,7 @@ func (obj *patternFlowIpv6FlowLabelCounter) FromProto(msg *otg.PatternFlowIpv6Fl return newObj, nil } -func (obj *patternFlowIpv6FlowLabelCounter) ToPbText() (string, error) { +func (obj *patternFlowGtpv1NextExtensionHeaderTypeCounter) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -204036,7 +247172,7 @@ func (obj *patternFlowIpv6FlowLabelCounter) ToPbText() (string, error) { return string(protoMarshal), nil } -func (obj *patternFlowIpv6FlowLabelCounter) FromPbText(value string) error { +func (obj *patternFlowGtpv1NextExtensionHeaderTypeCounter) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj @@ -204049,7 +247185,7 @@ func (obj *patternFlowIpv6FlowLabelCounter) FromPbText(value string) error { return retObj } -func (obj *patternFlowIpv6FlowLabelCounter) ToYaml() (string, error) { +func (obj *patternFlowGtpv1NextExtensionHeaderTypeCounter) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -204070,7 +247206,7 @@ func (obj *patternFlowIpv6FlowLabelCounter) ToYaml() (string, error) { return string(data), nil } -func (obj *patternFlowIpv6FlowLabelCounter) FromYaml(value string) error { +func (obj *patternFlowGtpv1NextExtensionHeaderTypeCounter) FromYaml(value string) error { if value == "" { value = "{}" } @@ -204095,7 +247231,7 @@ func (obj *patternFlowIpv6FlowLabelCounter) FromYaml(value string) error { return nil } -func (obj *patternFlowIpv6FlowLabelCounter) ToJson() (string, error) { +func (obj *patternFlowGtpv1NextExtensionHeaderTypeCounter) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -204113,7 +247249,7 @@ func (obj *patternFlowIpv6FlowLabelCounter) ToJson() (string, error) { return string(data), nil } -func (obj *patternFlowIpv6FlowLabelCounter) FromJson(value string) error { +func (obj *patternFlowGtpv1NextExtensionHeaderTypeCounter) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -204134,19 +247270,19 @@ func (obj *patternFlowIpv6FlowLabelCounter) FromJson(value string) error { return nil } -func (obj *patternFlowIpv6FlowLabelCounter) validateToAndFrom() error { +func (obj *patternFlowGtpv1NextExtensionHeaderTypeCounter) validateToAndFrom() error { // emptyVars() obj.validateObj(&obj.validation, true) return obj.validationResult() } -func (obj *patternFlowIpv6FlowLabelCounter) Validate() error { +func (obj *patternFlowGtpv1NextExtensionHeaderTypeCounter) Validate() error { // emptyVars() obj.validateObj(&obj.validation, false) return obj.validationResult() } -func (obj *patternFlowIpv6FlowLabelCounter) String() string { +func (obj *patternFlowGtpv1NextExtensionHeaderTypeCounter) String() string { str, err := obj.ToYaml() if err != nil { return err.Error() @@ -204154,12 +247290,12 @@ func (obj *patternFlowIpv6FlowLabelCounter) String() string { return str } -func (obj *patternFlowIpv6FlowLabelCounter) Clone() (PatternFlowIpv6FlowLabelCounter, error) { +func (obj *patternFlowGtpv1NextExtensionHeaderTypeCounter) Clone() (PatternFlowGtpv1NextExtensionHeaderTypeCounter, error) { vErr := obj.Validate() if vErr != nil { return nil, vErr } - newObj := NewPatternFlowIpv6FlowLabelCounter() + newObj := NewPatternFlowGtpv1NextExtensionHeaderTypeCounter() data, err := proto.Marshal(obj.Msg()) if err != nil { return nil, err @@ -204171,63 +247307,63 @@ func (obj *patternFlowIpv6FlowLabelCounter) Clone() (PatternFlowIpv6FlowLabelCou return newObj, nil } -// PatternFlowIpv6FlowLabelCounter is integer counter pattern -type PatternFlowIpv6FlowLabelCounter interface { +// PatternFlowGtpv1NextExtensionHeaderTypeCounter is integer counter pattern +type PatternFlowGtpv1NextExtensionHeaderTypeCounter interface { Validation - // Msg marshals PatternFlowIpv6FlowLabelCounter to protobuf object *otg.PatternFlowIpv6FlowLabelCounter + // Msg marshals PatternFlowGtpv1NextExtensionHeaderTypeCounter to protobuf object *otg.PatternFlowGtpv1NextExtensionHeaderTypeCounter // and doesn't set defaults - Msg() *otg.PatternFlowIpv6FlowLabelCounter - // SetMsg unmarshals PatternFlowIpv6FlowLabelCounter from protobuf object *otg.PatternFlowIpv6FlowLabelCounter + Msg() *otg.PatternFlowGtpv1NextExtensionHeaderTypeCounter + // SetMsg unmarshals PatternFlowGtpv1NextExtensionHeaderTypeCounter from protobuf object *otg.PatternFlowGtpv1NextExtensionHeaderTypeCounter // and doesn't set defaults - SetMsg(*otg.PatternFlowIpv6FlowLabelCounter) PatternFlowIpv6FlowLabelCounter - // ToProto marshals PatternFlowIpv6FlowLabelCounter to protobuf object *otg.PatternFlowIpv6FlowLabelCounter - ToProto() (*otg.PatternFlowIpv6FlowLabelCounter, error) - // ToPbText marshals PatternFlowIpv6FlowLabelCounter to protobuf text + SetMsg(*otg.PatternFlowGtpv1NextExtensionHeaderTypeCounter) PatternFlowGtpv1NextExtensionHeaderTypeCounter + // ToProto marshals PatternFlowGtpv1NextExtensionHeaderTypeCounter to protobuf object *otg.PatternFlowGtpv1NextExtensionHeaderTypeCounter + ToProto() (*otg.PatternFlowGtpv1NextExtensionHeaderTypeCounter, error) + // ToPbText marshals PatternFlowGtpv1NextExtensionHeaderTypeCounter to protobuf text ToPbText() (string, error) - // ToYaml marshals PatternFlowIpv6FlowLabelCounter to YAML text + // ToYaml marshals PatternFlowGtpv1NextExtensionHeaderTypeCounter to YAML text ToYaml() (string, error) - // ToJson marshals PatternFlowIpv6FlowLabelCounter to JSON text + // ToJson marshals PatternFlowGtpv1NextExtensionHeaderTypeCounter to JSON text ToJson() (string, error) - // FromProto unmarshals PatternFlowIpv6FlowLabelCounter from protobuf object *otg.PatternFlowIpv6FlowLabelCounter - FromProto(msg *otg.PatternFlowIpv6FlowLabelCounter) (PatternFlowIpv6FlowLabelCounter, error) - // FromPbText unmarshals PatternFlowIpv6FlowLabelCounter from protobuf text + // FromProto unmarshals PatternFlowGtpv1NextExtensionHeaderTypeCounter from protobuf object *otg.PatternFlowGtpv1NextExtensionHeaderTypeCounter + FromProto(msg *otg.PatternFlowGtpv1NextExtensionHeaderTypeCounter) (PatternFlowGtpv1NextExtensionHeaderTypeCounter, error) + // FromPbText unmarshals PatternFlowGtpv1NextExtensionHeaderTypeCounter from protobuf text FromPbText(value string) error - // FromYaml unmarshals PatternFlowIpv6FlowLabelCounter from YAML text + // FromYaml unmarshals PatternFlowGtpv1NextExtensionHeaderTypeCounter from YAML text FromYaml(value string) error - // FromJson unmarshals PatternFlowIpv6FlowLabelCounter from JSON text + // FromJson unmarshals PatternFlowGtpv1NextExtensionHeaderTypeCounter from JSON text FromJson(value string) error - // Validate validates PatternFlowIpv6FlowLabelCounter + // Validate validates PatternFlowGtpv1NextExtensionHeaderTypeCounter Validate() error // A stringer function String() string // Clones the object - Clone() (PatternFlowIpv6FlowLabelCounter, error) + Clone() (PatternFlowGtpv1NextExtensionHeaderTypeCounter, error) validateToAndFrom() error validateObj(vObj *validation, set_default bool) setDefault() - // Start returns uint32, set in PatternFlowIpv6FlowLabelCounter. + // Start returns uint32, set in PatternFlowGtpv1NextExtensionHeaderTypeCounter. Start() uint32 - // SetStart assigns uint32 provided by user to PatternFlowIpv6FlowLabelCounter - SetStart(value uint32) PatternFlowIpv6FlowLabelCounter - // HasStart checks if Start has been set in PatternFlowIpv6FlowLabelCounter + // SetStart assigns uint32 provided by user to PatternFlowGtpv1NextExtensionHeaderTypeCounter + SetStart(value uint32) PatternFlowGtpv1NextExtensionHeaderTypeCounter + // HasStart checks if Start has been set in PatternFlowGtpv1NextExtensionHeaderTypeCounter HasStart() bool - // Step returns uint32, set in PatternFlowIpv6FlowLabelCounter. + // Step returns uint32, set in PatternFlowGtpv1NextExtensionHeaderTypeCounter. Step() uint32 - // SetStep assigns uint32 provided by user to PatternFlowIpv6FlowLabelCounter - SetStep(value uint32) PatternFlowIpv6FlowLabelCounter - // HasStep checks if Step has been set in PatternFlowIpv6FlowLabelCounter + // SetStep assigns uint32 provided by user to PatternFlowGtpv1NextExtensionHeaderTypeCounter + SetStep(value uint32) PatternFlowGtpv1NextExtensionHeaderTypeCounter + // HasStep checks if Step has been set in PatternFlowGtpv1NextExtensionHeaderTypeCounter HasStep() bool - // Count returns uint32, set in PatternFlowIpv6FlowLabelCounter. + // Count returns uint32, set in PatternFlowGtpv1NextExtensionHeaderTypeCounter. Count() uint32 - // SetCount assigns uint32 provided by user to PatternFlowIpv6FlowLabelCounter - SetCount(value uint32) PatternFlowIpv6FlowLabelCounter - // HasCount checks if Count has been set in PatternFlowIpv6FlowLabelCounter + // SetCount assigns uint32 provided by user to PatternFlowGtpv1NextExtensionHeaderTypeCounter + SetCount(value uint32) PatternFlowGtpv1NextExtensionHeaderTypeCounter + // HasCount checks if Count has been set in PatternFlowGtpv1NextExtensionHeaderTypeCounter HasCount() bool } // description is TBD // Start returns a uint32 -func (obj *patternFlowIpv6FlowLabelCounter) Start() uint32 { +func (obj *patternFlowGtpv1NextExtensionHeaderTypeCounter) Start() uint32 { return *obj.obj.Start @@ -204235,13 +247371,13 @@ func (obj *patternFlowIpv6FlowLabelCounter) Start() uint32 { // description is TBD // Start returns a uint32 -func (obj *patternFlowIpv6FlowLabelCounter) HasStart() bool { +func (obj *patternFlowGtpv1NextExtensionHeaderTypeCounter) HasStart() bool { return obj.obj.Start != nil } // description is TBD -// SetStart sets the uint32 value in the PatternFlowIpv6FlowLabelCounter object -func (obj *patternFlowIpv6FlowLabelCounter) SetStart(value uint32) PatternFlowIpv6FlowLabelCounter { +// SetStart sets the uint32 value in the PatternFlowGtpv1NextExtensionHeaderTypeCounter object +func (obj *patternFlowGtpv1NextExtensionHeaderTypeCounter) SetStart(value uint32) PatternFlowGtpv1NextExtensionHeaderTypeCounter { obj.obj.Start = &value return obj @@ -204249,7 +247385,7 @@ func (obj *patternFlowIpv6FlowLabelCounter) SetStart(value uint32) PatternFlowIp // description is TBD // Step returns a uint32 -func (obj *patternFlowIpv6FlowLabelCounter) Step() uint32 { +func (obj *patternFlowGtpv1NextExtensionHeaderTypeCounter) Step() uint32 { return *obj.obj.Step @@ -204257,13 +247393,13 @@ func (obj *patternFlowIpv6FlowLabelCounter) Step() uint32 { // description is TBD // Step returns a uint32 -func (obj *patternFlowIpv6FlowLabelCounter) HasStep() bool { +func (obj *patternFlowGtpv1NextExtensionHeaderTypeCounter) HasStep() bool { return obj.obj.Step != nil } // description is TBD -// SetStep sets the uint32 value in the PatternFlowIpv6FlowLabelCounter object -func (obj *patternFlowIpv6FlowLabelCounter) SetStep(value uint32) PatternFlowIpv6FlowLabelCounter { +// SetStep sets the uint32 value in the PatternFlowGtpv1NextExtensionHeaderTypeCounter object +func (obj *patternFlowGtpv1NextExtensionHeaderTypeCounter) SetStep(value uint32) PatternFlowGtpv1NextExtensionHeaderTypeCounter { obj.obj.Step = &value return obj @@ -204271,7 +247407,7 @@ func (obj *patternFlowIpv6FlowLabelCounter) SetStep(value uint32) PatternFlowIpv // description is TBD // Count returns a uint32 -func (obj *patternFlowIpv6FlowLabelCounter) Count() uint32 { +func (obj *patternFlowGtpv1NextExtensionHeaderTypeCounter) Count() uint32 { return *obj.obj.Count @@ -204279,56 +247415,56 @@ func (obj *patternFlowIpv6FlowLabelCounter) Count() uint32 { // description is TBD // Count returns a uint32 -func (obj *patternFlowIpv6FlowLabelCounter) HasCount() bool { +func (obj *patternFlowGtpv1NextExtensionHeaderTypeCounter) HasCount() bool { return obj.obj.Count != nil } // description is TBD -// SetCount sets the uint32 value in the PatternFlowIpv6FlowLabelCounter object -func (obj *patternFlowIpv6FlowLabelCounter) SetCount(value uint32) PatternFlowIpv6FlowLabelCounter { +// SetCount sets the uint32 value in the PatternFlowGtpv1NextExtensionHeaderTypeCounter object +func (obj *patternFlowGtpv1NextExtensionHeaderTypeCounter) SetCount(value uint32) PatternFlowGtpv1NextExtensionHeaderTypeCounter { obj.obj.Count = &value return obj } -func (obj *patternFlowIpv6FlowLabelCounter) validateObj(vObj *validation, set_default bool) { +func (obj *patternFlowGtpv1NextExtensionHeaderTypeCounter) validateObj(vObj *validation, set_default bool) { if set_default { obj.setDefault() } if obj.obj.Start != nil { - if *obj.obj.Start > 1048575 { + if *obj.obj.Start > 255 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowIpv6FlowLabelCounter.Start <= 1048575 but Got %d", *obj.obj.Start)) + fmt.Sprintf("0 <= PatternFlowGtpv1NextExtensionHeaderTypeCounter.Start <= 255 but Got %d", *obj.obj.Start)) } } if obj.obj.Step != nil { - if *obj.obj.Step > 1048575 { + if *obj.obj.Step > 255 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowIpv6FlowLabelCounter.Step <= 1048575 but Got %d", *obj.obj.Step)) + fmt.Sprintf("0 <= PatternFlowGtpv1NextExtensionHeaderTypeCounter.Step <= 255 but Got %d", *obj.obj.Step)) } } if obj.obj.Count != nil { - if *obj.obj.Count > 1048575 { + if *obj.obj.Count > 255 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowIpv6FlowLabelCounter.Count <= 1048575 but Got %d", *obj.obj.Count)) + fmt.Sprintf("0 <= PatternFlowGtpv1NextExtensionHeaderTypeCounter.Count <= 255 but Got %d", *obj.obj.Count)) } } } -func (obj *patternFlowIpv6FlowLabelCounter) setDefault() { +func (obj *patternFlowGtpv1NextExtensionHeaderTypeCounter) setDefault() { if obj.obj.Start == nil { obj.SetStart(0) } @@ -204341,29 +247477,29 @@ func (obj *patternFlowIpv6FlowLabelCounter) setDefault() { } -// ***** PatternFlowIpv6FlowLabelMetricTag ***** -type patternFlowIpv6FlowLabelMetricTag struct { +// ***** PatternFlowGtpv1NextExtensionHeaderTypeMetricTag ***** +type patternFlowGtpv1NextExtensionHeaderTypeMetricTag struct { validation - obj *otg.PatternFlowIpv6FlowLabelMetricTag + obj *otg.PatternFlowGtpv1NextExtensionHeaderTypeMetricTag } -func NewPatternFlowIpv6FlowLabelMetricTag() PatternFlowIpv6FlowLabelMetricTag { - obj := patternFlowIpv6FlowLabelMetricTag{obj: &otg.PatternFlowIpv6FlowLabelMetricTag{}} +func NewPatternFlowGtpv1NextExtensionHeaderTypeMetricTag() PatternFlowGtpv1NextExtensionHeaderTypeMetricTag { + obj := patternFlowGtpv1NextExtensionHeaderTypeMetricTag{obj: &otg.PatternFlowGtpv1NextExtensionHeaderTypeMetricTag{}} obj.setDefault() return &obj } -func (obj *patternFlowIpv6FlowLabelMetricTag) Msg() *otg.PatternFlowIpv6FlowLabelMetricTag { +func (obj *patternFlowGtpv1NextExtensionHeaderTypeMetricTag) Msg() *otg.PatternFlowGtpv1NextExtensionHeaderTypeMetricTag { return obj.obj } -func (obj *patternFlowIpv6FlowLabelMetricTag) SetMsg(msg *otg.PatternFlowIpv6FlowLabelMetricTag) PatternFlowIpv6FlowLabelMetricTag { +func (obj *patternFlowGtpv1NextExtensionHeaderTypeMetricTag) SetMsg(msg *otg.PatternFlowGtpv1NextExtensionHeaderTypeMetricTag) PatternFlowGtpv1NextExtensionHeaderTypeMetricTag { proto.Merge(obj.obj, msg) return obj } -func (obj *patternFlowIpv6FlowLabelMetricTag) ToProto() (*otg.PatternFlowIpv6FlowLabelMetricTag, error) { +func (obj *patternFlowGtpv1NextExtensionHeaderTypeMetricTag) ToProto() (*otg.PatternFlowGtpv1NextExtensionHeaderTypeMetricTag, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -204371,7 +247507,7 @@ func (obj *patternFlowIpv6FlowLabelMetricTag) ToProto() (*otg.PatternFlowIpv6Flo return obj.Msg(), nil } -func (obj *patternFlowIpv6FlowLabelMetricTag) FromProto(msg *otg.PatternFlowIpv6FlowLabelMetricTag) (PatternFlowIpv6FlowLabelMetricTag, error) { +func (obj *patternFlowGtpv1NextExtensionHeaderTypeMetricTag) FromProto(msg *otg.PatternFlowGtpv1NextExtensionHeaderTypeMetricTag) (PatternFlowGtpv1NextExtensionHeaderTypeMetricTag, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -204380,7 +247516,7 @@ func (obj *patternFlowIpv6FlowLabelMetricTag) FromProto(msg *otg.PatternFlowIpv6 return newObj, nil } -func (obj *patternFlowIpv6FlowLabelMetricTag) ToPbText() (string, error) { +func (obj *patternFlowGtpv1NextExtensionHeaderTypeMetricTag) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -204392,7 +247528,7 @@ func (obj *patternFlowIpv6FlowLabelMetricTag) ToPbText() (string, error) { return string(protoMarshal), nil } -func (obj *patternFlowIpv6FlowLabelMetricTag) FromPbText(value string) error { +func (obj *patternFlowGtpv1NextExtensionHeaderTypeMetricTag) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj @@ -204405,7 +247541,7 @@ func (obj *patternFlowIpv6FlowLabelMetricTag) FromPbText(value string) error { return retObj } -func (obj *patternFlowIpv6FlowLabelMetricTag) ToYaml() (string, error) { +func (obj *patternFlowGtpv1NextExtensionHeaderTypeMetricTag) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -204426,7 +247562,7 @@ func (obj *patternFlowIpv6FlowLabelMetricTag) ToYaml() (string, error) { return string(data), nil } -func (obj *patternFlowIpv6FlowLabelMetricTag) FromYaml(value string) error { +func (obj *patternFlowGtpv1NextExtensionHeaderTypeMetricTag) FromYaml(value string) error { if value == "" { value = "{}" } @@ -204451,7 +247587,7 @@ func (obj *patternFlowIpv6FlowLabelMetricTag) FromYaml(value string) error { return nil } -func (obj *patternFlowIpv6FlowLabelMetricTag) ToJson() (string, error) { +func (obj *patternFlowGtpv1NextExtensionHeaderTypeMetricTag) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -204469,7 +247605,7 @@ func (obj *patternFlowIpv6FlowLabelMetricTag) ToJson() (string, error) { return string(data), nil } -func (obj *patternFlowIpv6FlowLabelMetricTag) FromJson(value string) error { +func (obj *patternFlowGtpv1NextExtensionHeaderTypeMetricTag) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -204490,19 +247626,19 @@ func (obj *patternFlowIpv6FlowLabelMetricTag) FromJson(value string) error { return nil } -func (obj *patternFlowIpv6FlowLabelMetricTag) validateToAndFrom() error { +func (obj *patternFlowGtpv1NextExtensionHeaderTypeMetricTag) validateToAndFrom() error { // emptyVars() obj.validateObj(&obj.validation, true) return obj.validationResult() } -func (obj *patternFlowIpv6FlowLabelMetricTag) Validate() error { +func (obj *patternFlowGtpv1NextExtensionHeaderTypeMetricTag) Validate() error { // emptyVars() obj.validateObj(&obj.validation, false) return obj.validationResult() } -func (obj *patternFlowIpv6FlowLabelMetricTag) String() string { +func (obj *patternFlowGtpv1NextExtensionHeaderTypeMetricTag) String() string { str, err := obj.ToYaml() if err != nil { return err.Error() @@ -204510,12 +247646,12 @@ func (obj *patternFlowIpv6FlowLabelMetricTag) String() string { return str } -func (obj *patternFlowIpv6FlowLabelMetricTag) Clone() (PatternFlowIpv6FlowLabelMetricTag, error) { +func (obj *patternFlowGtpv1NextExtensionHeaderTypeMetricTag) Clone() (PatternFlowGtpv1NextExtensionHeaderTypeMetricTag, error) { vErr := obj.Validate() if vErr != nil { return nil, vErr } - newObj := NewPatternFlowIpv6FlowLabelMetricTag() + newObj := NewPatternFlowGtpv1NextExtensionHeaderTypeMetricTag() data, err := proto.Marshal(obj.Msg()) if err != nil { return nil, err @@ -204527,69 +247663,69 @@ func (obj *patternFlowIpv6FlowLabelMetricTag) Clone() (PatternFlowIpv6FlowLabelM return newObj, nil } -// PatternFlowIpv6FlowLabelMetricTag is metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. -type PatternFlowIpv6FlowLabelMetricTag interface { +// PatternFlowGtpv1NextExtensionHeaderTypeMetricTag is metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. +type PatternFlowGtpv1NextExtensionHeaderTypeMetricTag interface { Validation - // Msg marshals PatternFlowIpv6FlowLabelMetricTag to protobuf object *otg.PatternFlowIpv6FlowLabelMetricTag + // Msg marshals PatternFlowGtpv1NextExtensionHeaderTypeMetricTag to protobuf object *otg.PatternFlowGtpv1NextExtensionHeaderTypeMetricTag // and doesn't set defaults - Msg() *otg.PatternFlowIpv6FlowLabelMetricTag - // SetMsg unmarshals PatternFlowIpv6FlowLabelMetricTag from protobuf object *otg.PatternFlowIpv6FlowLabelMetricTag + Msg() *otg.PatternFlowGtpv1NextExtensionHeaderTypeMetricTag + // SetMsg unmarshals PatternFlowGtpv1NextExtensionHeaderTypeMetricTag from protobuf object *otg.PatternFlowGtpv1NextExtensionHeaderTypeMetricTag // and doesn't set defaults - SetMsg(*otg.PatternFlowIpv6FlowLabelMetricTag) PatternFlowIpv6FlowLabelMetricTag - // ToProto marshals PatternFlowIpv6FlowLabelMetricTag to protobuf object *otg.PatternFlowIpv6FlowLabelMetricTag - ToProto() (*otg.PatternFlowIpv6FlowLabelMetricTag, error) - // ToPbText marshals PatternFlowIpv6FlowLabelMetricTag to protobuf text + SetMsg(*otg.PatternFlowGtpv1NextExtensionHeaderTypeMetricTag) PatternFlowGtpv1NextExtensionHeaderTypeMetricTag + // ToProto marshals PatternFlowGtpv1NextExtensionHeaderTypeMetricTag to protobuf object *otg.PatternFlowGtpv1NextExtensionHeaderTypeMetricTag + ToProto() (*otg.PatternFlowGtpv1NextExtensionHeaderTypeMetricTag, error) + // ToPbText marshals PatternFlowGtpv1NextExtensionHeaderTypeMetricTag to protobuf text ToPbText() (string, error) - // ToYaml marshals PatternFlowIpv6FlowLabelMetricTag to YAML text + // ToYaml marshals PatternFlowGtpv1NextExtensionHeaderTypeMetricTag to YAML text ToYaml() (string, error) - // ToJson marshals PatternFlowIpv6FlowLabelMetricTag to JSON text + // ToJson marshals PatternFlowGtpv1NextExtensionHeaderTypeMetricTag to JSON text ToJson() (string, error) - // FromProto unmarshals PatternFlowIpv6FlowLabelMetricTag from protobuf object *otg.PatternFlowIpv6FlowLabelMetricTag - FromProto(msg *otg.PatternFlowIpv6FlowLabelMetricTag) (PatternFlowIpv6FlowLabelMetricTag, error) - // FromPbText unmarshals PatternFlowIpv6FlowLabelMetricTag from protobuf text + // FromProto unmarshals PatternFlowGtpv1NextExtensionHeaderTypeMetricTag from protobuf object *otg.PatternFlowGtpv1NextExtensionHeaderTypeMetricTag + FromProto(msg *otg.PatternFlowGtpv1NextExtensionHeaderTypeMetricTag) (PatternFlowGtpv1NextExtensionHeaderTypeMetricTag, error) + // FromPbText unmarshals PatternFlowGtpv1NextExtensionHeaderTypeMetricTag from protobuf text FromPbText(value string) error - // FromYaml unmarshals PatternFlowIpv6FlowLabelMetricTag from YAML text + // FromYaml unmarshals PatternFlowGtpv1NextExtensionHeaderTypeMetricTag from YAML text FromYaml(value string) error - // FromJson unmarshals PatternFlowIpv6FlowLabelMetricTag from JSON text + // FromJson unmarshals PatternFlowGtpv1NextExtensionHeaderTypeMetricTag from JSON text FromJson(value string) error - // Validate validates PatternFlowIpv6FlowLabelMetricTag + // Validate validates PatternFlowGtpv1NextExtensionHeaderTypeMetricTag Validate() error // A stringer function String() string // Clones the object - Clone() (PatternFlowIpv6FlowLabelMetricTag, error) + Clone() (PatternFlowGtpv1NextExtensionHeaderTypeMetricTag, error) validateToAndFrom() error validateObj(vObj *validation, set_default bool) setDefault() - // Name returns string, set in PatternFlowIpv6FlowLabelMetricTag. + // Name returns string, set in PatternFlowGtpv1NextExtensionHeaderTypeMetricTag. Name() string - // SetName assigns string provided by user to PatternFlowIpv6FlowLabelMetricTag - SetName(value string) PatternFlowIpv6FlowLabelMetricTag - // Offset returns uint32, set in PatternFlowIpv6FlowLabelMetricTag. + // SetName assigns string provided by user to PatternFlowGtpv1NextExtensionHeaderTypeMetricTag + SetName(value string) PatternFlowGtpv1NextExtensionHeaderTypeMetricTag + // Offset returns uint32, set in PatternFlowGtpv1NextExtensionHeaderTypeMetricTag. Offset() uint32 - // SetOffset assigns uint32 provided by user to PatternFlowIpv6FlowLabelMetricTag - SetOffset(value uint32) PatternFlowIpv6FlowLabelMetricTag - // HasOffset checks if Offset has been set in PatternFlowIpv6FlowLabelMetricTag + // SetOffset assigns uint32 provided by user to PatternFlowGtpv1NextExtensionHeaderTypeMetricTag + SetOffset(value uint32) PatternFlowGtpv1NextExtensionHeaderTypeMetricTag + // HasOffset checks if Offset has been set in PatternFlowGtpv1NextExtensionHeaderTypeMetricTag HasOffset() bool - // Length returns uint32, set in PatternFlowIpv6FlowLabelMetricTag. + // Length returns uint32, set in PatternFlowGtpv1NextExtensionHeaderTypeMetricTag. Length() uint32 - // SetLength assigns uint32 provided by user to PatternFlowIpv6FlowLabelMetricTag - SetLength(value uint32) PatternFlowIpv6FlowLabelMetricTag - // HasLength checks if Length has been set in PatternFlowIpv6FlowLabelMetricTag + // SetLength assigns uint32 provided by user to PatternFlowGtpv1NextExtensionHeaderTypeMetricTag + SetLength(value uint32) PatternFlowGtpv1NextExtensionHeaderTypeMetricTag + // HasLength checks if Length has been set in PatternFlowGtpv1NextExtensionHeaderTypeMetricTag HasLength() bool } // Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field // Name returns a string -func (obj *patternFlowIpv6FlowLabelMetricTag) Name() string { +func (obj *patternFlowGtpv1NextExtensionHeaderTypeMetricTag) Name() string { return *obj.obj.Name } // Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field -// SetName sets the string value in the PatternFlowIpv6FlowLabelMetricTag object -func (obj *patternFlowIpv6FlowLabelMetricTag) SetName(value string) PatternFlowIpv6FlowLabelMetricTag { +// SetName sets the string value in the PatternFlowGtpv1NextExtensionHeaderTypeMetricTag object +func (obj *patternFlowGtpv1NextExtensionHeaderTypeMetricTag) SetName(value string) PatternFlowGtpv1NextExtensionHeaderTypeMetricTag { obj.obj.Name = &value return obj @@ -204597,7 +247733,7 @@ func (obj *patternFlowIpv6FlowLabelMetricTag) SetName(value string) PatternFlowI // Offset in bits relative to start of corresponding header field // Offset returns a uint32 -func (obj *patternFlowIpv6FlowLabelMetricTag) Offset() uint32 { +func (obj *patternFlowGtpv1NextExtensionHeaderTypeMetricTag) Offset() uint32 { return *obj.obj.Offset @@ -204605,13 +247741,13 @@ func (obj *patternFlowIpv6FlowLabelMetricTag) Offset() uint32 { // Offset in bits relative to start of corresponding header field // Offset returns a uint32 -func (obj *patternFlowIpv6FlowLabelMetricTag) HasOffset() bool { +func (obj *patternFlowGtpv1NextExtensionHeaderTypeMetricTag) HasOffset() bool { return obj.obj.Offset != nil } // Offset in bits relative to start of corresponding header field -// SetOffset sets the uint32 value in the PatternFlowIpv6FlowLabelMetricTag object -func (obj *patternFlowIpv6FlowLabelMetricTag) SetOffset(value uint32) PatternFlowIpv6FlowLabelMetricTag { +// SetOffset sets the uint32 value in the PatternFlowGtpv1NextExtensionHeaderTypeMetricTag object +func (obj *patternFlowGtpv1NextExtensionHeaderTypeMetricTag) SetOffset(value uint32) PatternFlowGtpv1NextExtensionHeaderTypeMetricTag { obj.obj.Offset = &value return obj @@ -204619,7 +247755,7 @@ func (obj *patternFlowIpv6FlowLabelMetricTag) SetOffset(value uint32) PatternFlo // Number of bits to track for metrics starting from configured offset of corresponding header field // Length returns a uint32 -func (obj *patternFlowIpv6FlowLabelMetricTag) Length() uint32 { +func (obj *patternFlowGtpv1NextExtensionHeaderTypeMetricTag) Length() uint32 { return *obj.obj.Length @@ -204627,83 +247763,86 @@ func (obj *patternFlowIpv6FlowLabelMetricTag) Length() uint32 { // Number of bits to track for metrics starting from configured offset of corresponding header field // Length returns a uint32 -func (obj *patternFlowIpv6FlowLabelMetricTag) HasLength() bool { +func (obj *patternFlowGtpv1NextExtensionHeaderTypeMetricTag) HasLength() bool { return obj.obj.Length != nil } // Number of bits to track for metrics starting from configured offset of corresponding header field -// SetLength sets the uint32 value in the PatternFlowIpv6FlowLabelMetricTag object -func (obj *patternFlowIpv6FlowLabelMetricTag) SetLength(value uint32) PatternFlowIpv6FlowLabelMetricTag { +// SetLength sets the uint32 value in the PatternFlowGtpv1NextExtensionHeaderTypeMetricTag object +func (obj *patternFlowGtpv1NextExtensionHeaderTypeMetricTag) SetLength(value uint32) PatternFlowGtpv1NextExtensionHeaderTypeMetricTag { obj.obj.Length = &value return obj } -func (obj *patternFlowIpv6FlowLabelMetricTag) validateObj(vObj *validation, set_default bool) { +func (obj *patternFlowGtpv1NextExtensionHeaderTypeMetricTag) validateObj(vObj *validation, set_default bool) { if set_default { obj.setDefault() } // Name is required if obj.obj.Name == nil { - vObj.validationErrors = append(vObj.validationErrors, "Name is required field on interface PatternFlowIpv6FlowLabelMetricTag") + vObj.validationErrors = append(vObj.validationErrors, "Name is required field on interface PatternFlowGtpv1NextExtensionHeaderTypeMetricTag") } if obj.obj.Offset != nil { - if *obj.obj.Offset > 19 { + if *obj.obj.Offset > 7 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowIpv6FlowLabelMetricTag.Offset <= 19 but Got %d", *obj.obj.Offset)) + fmt.Sprintf("0 <= PatternFlowGtpv1NextExtensionHeaderTypeMetricTag.Offset <= 7 but Got %d", *obj.obj.Offset)) } } if obj.obj.Length != nil { - if *obj.obj.Length < 1 || *obj.obj.Length > 20 { + if *obj.obj.Length < 1 || *obj.obj.Length > 8 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("1 <= PatternFlowIpv6FlowLabelMetricTag.Length <= 20 but Got %d", *obj.obj.Length)) + fmt.Sprintf("1 <= PatternFlowGtpv1NextExtensionHeaderTypeMetricTag.Length <= 8 but Got %d", *obj.obj.Length)) } } } -func (obj *patternFlowIpv6FlowLabelMetricTag) setDefault() { +func (obj *patternFlowGtpv1NextExtensionHeaderTypeMetricTag) setDefault() { if obj.obj.Offset == nil { obj.SetOffset(0) } if obj.obj.Length == nil { - obj.SetLength(20) + obj.SetLength(8) } } -// ***** PatternFlowIpv6PayloadLengthCounter ***** -type patternFlowIpv6PayloadLengthCounter struct { +// ***** PatternFlowGtpExtensionExtensionLength ***** +type patternFlowGtpExtensionExtensionLength struct { validation - obj *otg.PatternFlowIpv6PayloadLengthCounter + obj *otg.PatternFlowGtpExtensionExtensionLength + incrementHolder PatternFlowGtpExtensionExtensionLengthCounter + decrementHolder PatternFlowGtpExtensionExtensionLengthCounter + metricTagsHolder PatternFlowGtpExtensionExtensionLengthPatternFlowGtpExtensionExtensionLengthMetricTagIter } -func NewPatternFlowIpv6PayloadLengthCounter() PatternFlowIpv6PayloadLengthCounter { - obj := patternFlowIpv6PayloadLengthCounter{obj: &otg.PatternFlowIpv6PayloadLengthCounter{}} +func NewPatternFlowGtpExtensionExtensionLength() PatternFlowGtpExtensionExtensionLength { + obj := patternFlowGtpExtensionExtensionLength{obj: &otg.PatternFlowGtpExtensionExtensionLength{}} obj.setDefault() return &obj } -func (obj *patternFlowIpv6PayloadLengthCounter) Msg() *otg.PatternFlowIpv6PayloadLengthCounter { +func (obj *patternFlowGtpExtensionExtensionLength) Msg() *otg.PatternFlowGtpExtensionExtensionLength { return obj.obj } -func (obj *patternFlowIpv6PayloadLengthCounter) SetMsg(msg *otg.PatternFlowIpv6PayloadLengthCounter) PatternFlowIpv6PayloadLengthCounter { - +func (obj *patternFlowGtpExtensionExtensionLength) SetMsg(msg *otg.PatternFlowGtpExtensionExtensionLength) PatternFlowGtpExtensionExtensionLength { + obj.setNil() proto.Merge(obj.obj, msg) return obj } -func (obj *patternFlowIpv6PayloadLengthCounter) ToProto() (*otg.PatternFlowIpv6PayloadLengthCounter, error) { +func (obj *patternFlowGtpExtensionExtensionLength) ToProto() (*otg.PatternFlowGtpExtensionExtensionLength, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -204711,7 +247850,7 @@ func (obj *patternFlowIpv6PayloadLengthCounter) ToProto() (*otg.PatternFlowIpv6P return obj.Msg(), nil } -func (obj *patternFlowIpv6PayloadLengthCounter) FromProto(msg *otg.PatternFlowIpv6PayloadLengthCounter) (PatternFlowIpv6PayloadLengthCounter, error) { +func (obj *patternFlowGtpExtensionExtensionLength) FromProto(msg *otg.PatternFlowGtpExtensionExtensionLength) (PatternFlowGtpExtensionExtensionLength, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -204720,7 +247859,7 @@ func (obj *patternFlowIpv6PayloadLengthCounter) FromProto(msg *otg.PatternFlowIp return newObj, nil } -func (obj *patternFlowIpv6PayloadLengthCounter) ToPbText() (string, error) { +func (obj *patternFlowGtpExtensionExtensionLength) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -204732,12 +247871,12 @@ func (obj *patternFlowIpv6PayloadLengthCounter) ToPbText() (string, error) { return string(protoMarshal), nil } -func (obj *patternFlowIpv6PayloadLengthCounter) FromPbText(value string) error { +func (obj *patternFlowGtpExtensionExtensionLength) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj } - + obj.setNil() vErr := obj.validateToAndFrom() if vErr != nil { return vErr @@ -204745,7 +247884,7 @@ func (obj *patternFlowIpv6PayloadLengthCounter) FromPbText(value string) error { return retObj } -func (obj *patternFlowIpv6PayloadLengthCounter) ToYaml() (string, error) { +func (obj *patternFlowGtpExtensionExtensionLength) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -204766,7 +247905,7 @@ func (obj *patternFlowIpv6PayloadLengthCounter) ToYaml() (string, error) { return string(data), nil } -func (obj *patternFlowIpv6PayloadLengthCounter) FromYaml(value string) error { +func (obj *patternFlowGtpExtensionExtensionLength) FromYaml(value string) error { if value == "" { value = "{}" } @@ -204783,7 +247922,7 @@ func (obj *patternFlowIpv6PayloadLengthCounter) FromYaml(value string) error { return fmt.Errorf("unmarshal error %s", strings.Replace( uError.Error(), "\u00a0", " ", -1)[7:]) } - + obj.setNil() vErr := obj.validateToAndFrom() if vErr != nil { return vErr @@ -204791,7 +247930,7 @@ func (obj *patternFlowIpv6PayloadLengthCounter) FromYaml(value string) error { return nil } -func (obj *patternFlowIpv6PayloadLengthCounter) ToJson() (string, error) { +func (obj *patternFlowGtpExtensionExtensionLength) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -204809,7 +247948,7 @@ func (obj *patternFlowIpv6PayloadLengthCounter) ToJson() (string, error) { return string(data), nil } -func (obj *patternFlowIpv6PayloadLengthCounter) FromJson(value string) error { +func (obj *patternFlowGtpExtensionExtensionLength) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -204822,7 +247961,7 @@ func (obj *patternFlowIpv6PayloadLengthCounter) FromJson(value string) error { return fmt.Errorf("unmarshal error %s", strings.Replace( uError.Error(), "\u00a0", " ", -1)[7:]) } - + obj.setNil() err := obj.validateToAndFrom() if err != nil { return err @@ -204830,19 +247969,19 @@ func (obj *patternFlowIpv6PayloadLengthCounter) FromJson(value string) error { return nil } -func (obj *patternFlowIpv6PayloadLengthCounter) validateToAndFrom() error { +func (obj *patternFlowGtpExtensionExtensionLength) validateToAndFrom() error { // emptyVars() obj.validateObj(&obj.validation, true) return obj.validationResult() } -func (obj *patternFlowIpv6PayloadLengthCounter) Validate() error { +func (obj *patternFlowGtpExtensionExtensionLength) Validate() error { // emptyVars() obj.validateObj(&obj.validation, false) return obj.validationResult() } -func (obj *patternFlowIpv6PayloadLengthCounter) String() string { +func (obj *patternFlowGtpExtensionExtensionLength) String() string { str, err := obj.ToYaml() if err != nil { return err.Error() @@ -204850,12 +247989,12 @@ func (obj *patternFlowIpv6PayloadLengthCounter) String() string { return str } -func (obj *patternFlowIpv6PayloadLengthCounter) Clone() (PatternFlowIpv6PayloadLengthCounter, error) { +func (obj *patternFlowGtpExtensionExtensionLength) Clone() (PatternFlowGtpExtensionExtensionLength, error) { vErr := obj.Validate() if vErr != nil { return nil, vErr } - newObj := NewPatternFlowIpv6PayloadLengthCounter() + newObj := NewPatternFlowGtpExtensionExtensionLength() data, err := proto.Marshal(obj.Msg()) if err != nil { return nil, err @@ -204867,199 +248006,426 @@ func (obj *patternFlowIpv6PayloadLengthCounter) Clone() (PatternFlowIpv6PayloadL return newObj, nil } -// PatternFlowIpv6PayloadLengthCounter is integer counter pattern -type PatternFlowIpv6PayloadLengthCounter interface { +func (obj *patternFlowGtpExtensionExtensionLength) setNil() { + obj.incrementHolder = nil + obj.decrementHolder = nil + obj.metricTagsHolder = nil + obj.validationErrors = nil + obj.warnings = nil + obj.constraints = make(map[string]map[string]Constraints) +} + +// PatternFlowGtpExtensionExtensionLength is this field states the length of this extension header, including the length, the contents, and the next extension header field, in 4-octet units, so the length of the extension must always be a multiple of 4. +type PatternFlowGtpExtensionExtensionLength interface { Validation - // Msg marshals PatternFlowIpv6PayloadLengthCounter to protobuf object *otg.PatternFlowIpv6PayloadLengthCounter + // Msg marshals PatternFlowGtpExtensionExtensionLength to protobuf object *otg.PatternFlowGtpExtensionExtensionLength // and doesn't set defaults - Msg() *otg.PatternFlowIpv6PayloadLengthCounter - // SetMsg unmarshals PatternFlowIpv6PayloadLengthCounter from protobuf object *otg.PatternFlowIpv6PayloadLengthCounter + Msg() *otg.PatternFlowGtpExtensionExtensionLength + // SetMsg unmarshals PatternFlowGtpExtensionExtensionLength from protobuf object *otg.PatternFlowGtpExtensionExtensionLength // and doesn't set defaults - SetMsg(*otg.PatternFlowIpv6PayloadLengthCounter) PatternFlowIpv6PayloadLengthCounter - // ToProto marshals PatternFlowIpv6PayloadLengthCounter to protobuf object *otg.PatternFlowIpv6PayloadLengthCounter - ToProto() (*otg.PatternFlowIpv6PayloadLengthCounter, error) - // ToPbText marshals PatternFlowIpv6PayloadLengthCounter to protobuf text + SetMsg(*otg.PatternFlowGtpExtensionExtensionLength) PatternFlowGtpExtensionExtensionLength + // ToProto marshals PatternFlowGtpExtensionExtensionLength to protobuf object *otg.PatternFlowGtpExtensionExtensionLength + ToProto() (*otg.PatternFlowGtpExtensionExtensionLength, error) + // ToPbText marshals PatternFlowGtpExtensionExtensionLength to protobuf text ToPbText() (string, error) - // ToYaml marshals PatternFlowIpv6PayloadLengthCounter to YAML text + // ToYaml marshals PatternFlowGtpExtensionExtensionLength to YAML text ToYaml() (string, error) - // ToJson marshals PatternFlowIpv6PayloadLengthCounter to JSON text + // ToJson marshals PatternFlowGtpExtensionExtensionLength to JSON text ToJson() (string, error) - // FromProto unmarshals PatternFlowIpv6PayloadLengthCounter from protobuf object *otg.PatternFlowIpv6PayloadLengthCounter - FromProto(msg *otg.PatternFlowIpv6PayloadLengthCounter) (PatternFlowIpv6PayloadLengthCounter, error) - // FromPbText unmarshals PatternFlowIpv6PayloadLengthCounter from protobuf text + // FromProto unmarshals PatternFlowGtpExtensionExtensionLength from protobuf object *otg.PatternFlowGtpExtensionExtensionLength + FromProto(msg *otg.PatternFlowGtpExtensionExtensionLength) (PatternFlowGtpExtensionExtensionLength, error) + // FromPbText unmarshals PatternFlowGtpExtensionExtensionLength from protobuf text FromPbText(value string) error - // FromYaml unmarshals PatternFlowIpv6PayloadLengthCounter from YAML text + // FromYaml unmarshals PatternFlowGtpExtensionExtensionLength from YAML text FromYaml(value string) error - // FromJson unmarshals PatternFlowIpv6PayloadLengthCounter from JSON text + // FromJson unmarshals PatternFlowGtpExtensionExtensionLength from JSON text FromJson(value string) error - // Validate validates PatternFlowIpv6PayloadLengthCounter + // Validate validates PatternFlowGtpExtensionExtensionLength Validate() error // A stringer function String() string // Clones the object - Clone() (PatternFlowIpv6PayloadLengthCounter, error) + Clone() (PatternFlowGtpExtensionExtensionLength, error) validateToAndFrom() error validateObj(vObj *validation, set_default bool) setDefault() - // Start returns uint32, set in PatternFlowIpv6PayloadLengthCounter. - Start() uint32 - // SetStart assigns uint32 provided by user to PatternFlowIpv6PayloadLengthCounter - SetStart(value uint32) PatternFlowIpv6PayloadLengthCounter - // HasStart checks if Start has been set in PatternFlowIpv6PayloadLengthCounter - HasStart() bool - // Step returns uint32, set in PatternFlowIpv6PayloadLengthCounter. - Step() uint32 - // SetStep assigns uint32 provided by user to PatternFlowIpv6PayloadLengthCounter - SetStep(value uint32) PatternFlowIpv6PayloadLengthCounter - // HasStep checks if Step has been set in PatternFlowIpv6PayloadLengthCounter - HasStep() bool - // Count returns uint32, set in PatternFlowIpv6PayloadLengthCounter. - Count() uint32 - // SetCount assigns uint32 provided by user to PatternFlowIpv6PayloadLengthCounter - SetCount(value uint32) PatternFlowIpv6PayloadLengthCounter - // HasCount checks if Count has been set in PatternFlowIpv6PayloadLengthCounter - HasCount() bool + // Choice returns PatternFlowGtpExtensionExtensionLengthChoiceEnum, set in PatternFlowGtpExtensionExtensionLength + Choice() PatternFlowGtpExtensionExtensionLengthChoiceEnum + // SetChoice assigns PatternFlowGtpExtensionExtensionLengthChoiceEnum provided by user to PatternFlowGtpExtensionExtensionLength + SetChoice(value PatternFlowGtpExtensionExtensionLengthChoiceEnum) PatternFlowGtpExtensionExtensionLength + // HasChoice checks if Choice has been set in PatternFlowGtpExtensionExtensionLength + HasChoice() bool + // Value returns uint32, set in PatternFlowGtpExtensionExtensionLength. + Value() uint32 + // SetValue assigns uint32 provided by user to PatternFlowGtpExtensionExtensionLength + SetValue(value uint32) PatternFlowGtpExtensionExtensionLength + // HasValue checks if Value has been set in PatternFlowGtpExtensionExtensionLength + HasValue() bool + // Values returns []uint32, set in PatternFlowGtpExtensionExtensionLength. + Values() []uint32 + // SetValues assigns []uint32 provided by user to PatternFlowGtpExtensionExtensionLength + SetValues(value []uint32) PatternFlowGtpExtensionExtensionLength + // Increment returns PatternFlowGtpExtensionExtensionLengthCounter, set in PatternFlowGtpExtensionExtensionLength. + // PatternFlowGtpExtensionExtensionLengthCounter is integer counter pattern + Increment() PatternFlowGtpExtensionExtensionLengthCounter + // SetIncrement assigns PatternFlowGtpExtensionExtensionLengthCounter provided by user to PatternFlowGtpExtensionExtensionLength. + // PatternFlowGtpExtensionExtensionLengthCounter is integer counter pattern + SetIncrement(value PatternFlowGtpExtensionExtensionLengthCounter) PatternFlowGtpExtensionExtensionLength + // HasIncrement checks if Increment has been set in PatternFlowGtpExtensionExtensionLength + HasIncrement() bool + // Decrement returns PatternFlowGtpExtensionExtensionLengthCounter, set in PatternFlowGtpExtensionExtensionLength. + // PatternFlowGtpExtensionExtensionLengthCounter is integer counter pattern + Decrement() PatternFlowGtpExtensionExtensionLengthCounter + // SetDecrement assigns PatternFlowGtpExtensionExtensionLengthCounter provided by user to PatternFlowGtpExtensionExtensionLength. + // PatternFlowGtpExtensionExtensionLengthCounter is integer counter pattern + SetDecrement(value PatternFlowGtpExtensionExtensionLengthCounter) PatternFlowGtpExtensionExtensionLength + // HasDecrement checks if Decrement has been set in PatternFlowGtpExtensionExtensionLength + HasDecrement() bool + // MetricTags returns PatternFlowGtpExtensionExtensionLengthPatternFlowGtpExtensionExtensionLengthMetricTagIterIter, set in PatternFlowGtpExtensionExtensionLength + MetricTags() PatternFlowGtpExtensionExtensionLengthPatternFlowGtpExtensionExtensionLengthMetricTagIter + setNil() } -// description is TBD -// Start returns a uint32 -func (obj *patternFlowIpv6PayloadLengthCounter) Start() uint32 { +type PatternFlowGtpExtensionExtensionLengthChoiceEnum string - return *obj.obj.Start +// Enum of Choice on PatternFlowGtpExtensionExtensionLength +var PatternFlowGtpExtensionExtensionLengthChoice = struct { + VALUE PatternFlowGtpExtensionExtensionLengthChoiceEnum + VALUES PatternFlowGtpExtensionExtensionLengthChoiceEnum + INCREMENT PatternFlowGtpExtensionExtensionLengthChoiceEnum + DECREMENT PatternFlowGtpExtensionExtensionLengthChoiceEnum +}{ + VALUE: PatternFlowGtpExtensionExtensionLengthChoiceEnum("value"), + VALUES: PatternFlowGtpExtensionExtensionLengthChoiceEnum("values"), + INCREMENT: PatternFlowGtpExtensionExtensionLengthChoiceEnum("increment"), + DECREMENT: PatternFlowGtpExtensionExtensionLengthChoiceEnum("decrement"), +} +func (obj *patternFlowGtpExtensionExtensionLength) Choice() PatternFlowGtpExtensionExtensionLengthChoiceEnum { + return PatternFlowGtpExtensionExtensionLengthChoiceEnum(obj.obj.Choice.Enum().String()) } // description is TBD -// Start returns a uint32 -func (obj *patternFlowIpv6PayloadLengthCounter) HasStart() bool { - return obj.obj.Start != nil +// Choice returns a string +func (obj *patternFlowGtpExtensionExtensionLength) HasChoice() bool { + return obj.obj.Choice != nil } -// description is TBD -// SetStart sets the uint32 value in the PatternFlowIpv6PayloadLengthCounter object -func (obj *patternFlowIpv6PayloadLengthCounter) SetStart(value uint32) PatternFlowIpv6PayloadLengthCounter { +func (obj *patternFlowGtpExtensionExtensionLength) SetChoice(value PatternFlowGtpExtensionExtensionLengthChoiceEnum) PatternFlowGtpExtensionExtensionLength { + intValue, ok := otg.PatternFlowGtpExtensionExtensionLength_Choice_Enum_value[string(value)] + if !ok { + obj.validationErrors = append(obj.validationErrors, fmt.Sprintf( + "%s is not a valid choice on PatternFlowGtpExtensionExtensionLengthChoiceEnum", string(value))) + return obj + } + enumValue := otg.PatternFlowGtpExtensionExtensionLength_Choice_Enum(intValue) + obj.obj.Choice = &enumValue + obj.obj.Decrement = nil + obj.decrementHolder = nil + obj.obj.Increment = nil + obj.incrementHolder = nil + obj.obj.Values = nil + obj.obj.Value = nil + + if value == PatternFlowGtpExtensionExtensionLengthChoice.VALUE { + defaultValue := uint32(0) + obj.obj.Value = &defaultValue + } + + if value == PatternFlowGtpExtensionExtensionLengthChoice.VALUES { + defaultValue := []uint32{0} + obj.obj.Values = defaultValue + } + + if value == PatternFlowGtpExtensionExtensionLengthChoice.INCREMENT { + obj.obj.Increment = NewPatternFlowGtpExtensionExtensionLengthCounter().Msg() + } + + if value == PatternFlowGtpExtensionExtensionLengthChoice.DECREMENT { + obj.obj.Decrement = NewPatternFlowGtpExtensionExtensionLengthCounter().Msg() + } - obj.obj.Start = &value return obj } // description is TBD -// Step returns a uint32 -func (obj *patternFlowIpv6PayloadLengthCounter) Step() uint32 { +// Value returns a uint32 +func (obj *patternFlowGtpExtensionExtensionLength) Value() uint32 { - return *obj.obj.Step + if obj.obj.Value == nil { + obj.SetChoice(PatternFlowGtpExtensionExtensionLengthChoice.VALUE) + } + + return *obj.obj.Value } // description is TBD -// Step returns a uint32 -func (obj *patternFlowIpv6PayloadLengthCounter) HasStep() bool { - return obj.obj.Step != nil +// Value returns a uint32 +func (obj *patternFlowGtpExtensionExtensionLength) HasValue() bool { + return obj.obj.Value != nil } // description is TBD -// SetStep sets the uint32 value in the PatternFlowIpv6PayloadLengthCounter object -func (obj *patternFlowIpv6PayloadLengthCounter) SetStep(value uint32) PatternFlowIpv6PayloadLengthCounter { +// SetValue sets the uint32 value in the PatternFlowGtpExtensionExtensionLength object +func (obj *patternFlowGtpExtensionExtensionLength) SetValue(value uint32) PatternFlowGtpExtensionExtensionLength { + obj.SetChoice(PatternFlowGtpExtensionExtensionLengthChoice.VALUE) + obj.obj.Value = &value + return obj +} + +// description is TBD +// Values returns a []uint32 +func (obj *patternFlowGtpExtensionExtensionLength) Values() []uint32 { + if obj.obj.Values == nil { + obj.SetValues([]uint32{0}) + } + return obj.obj.Values +} + +// description is TBD +// SetValues sets the []uint32 value in the PatternFlowGtpExtensionExtensionLength object +func (obj *patternFlowGtpExtensionExtensionLength) SetValues(value []uint32) PatternFlowGtpExtensionExtensionLength { + obj.SetChoice(PatternFlowGtpExtensionExtensionLengthChoice.VALUES) + if obj.obj.Values == nil { + obj.obj.Values = make([]uint32, 0) + } + obj.obj.Values = value - obj.obj.Step = &value return obj } // description is TBD -// Count returns a uint32 -func (obj *patternFlowIpv6PayloadLengthCounter) Count() uint32 { +// Increment returns a PatternFlowGtpExtensionExtensionLengthCounter +func (obj *patternFlowGtpExtensionExtensionLength) Increment() PatternFlowGtpExtensionExtensionLengthCounter { + if obj.obj.Increment == nil { + obj.SetChoice(PatternFlowGtpExtensionExtensionLengthChoice.INCREMENT) + } + if obj.incrementHolder == nil { + obj.incrementHolder = &patternFlowGtpExtensionExtensionLengthCounter{obj: obj.obj.Increment} + } + return obj.incrementHolder +} - return *obj.obj.Count +// description is TBD +// Increment returns a PatternFlowGtpExtensionExtensionLengthCounter +func (obj *patternFlowGtpExtensionExtensionLength) HasIncrement() bool { + return obj.obj.Increment != nil +} + +// description is TBD +// SetIncrement sets the PatternFlowGtpExtensionExtensionLengthCounter value in the PatternFlowGtpExtensionExtensionLength object +func (obj *patternFlowGtpExtensionExtensionLength) SetIncrement(value PatternFlowGtpExtensionExtensionLengthCounter) PatternFlowGtpExtensionExtensionLength { + obj.SetChoice(PatternFlowGtpExtensionExtensionLengthChoice.INCREMENT) + obj.incrementHolder = nil + obj.obj.Increment = value.Msg() + return obj } // description is TBD -// Count returns a uint32 -func (obj *patternFlowIpv6PayloadLengthCounter) HasCount() bool { - return obj.obj.Count != nil +// Decrement returns a PatternFlowGtpExtensionExtensionLengthCounter +func (obj *patternFlowGtpExtensionExtensionLength) Decrement() PatternFlowGtpExtensionExtensionLengthCounter { + if obj.obj.Decrement == nil { + obj.SetChoice(PatternFlowGtpExtensionExtensionLengthChoice.DECREMENT) + } + if obj.decrementHolder == nil { + obj.decrementHolder = &patternFlowGtpExtensionExtensionLengthCounter{obj: obj.obj.Decrement} + } + return obj.decrementHolder } // description is TBD -// SetCount sets the uint32 value in the PatternFlowIpv6PayloadLengthCounter object -func (obj *patternFlowIpv6PayloadLengthCounter) SetCount(value uint32) PatternFlowIpv6PayloadLengthCounter { +// Decrement returns a PatternFlowGtpExtensionExtensionLengthCounter +func (obj *patternFlowGtpExtensionExtensionLength) HasDecrement() bool { + return obj.obj.Decrement != nil +} + +// description is TBD +// SetDecrement sets the PatternFlowGtpExtensionExtensionLengthCounter value in the PatternFlowGtpExtensionExtensionLength object +func (obj *patternFlowGtpExtensionExtensionLength) SetDecrement(value PatternFlowGtpExtensionExtensionLengthCounter) PatternFlowGtpExtensionExtensionLength { + obj.SetChoice(PatternFlowGtpExtensionExtensionLengthChoice.DECREMENT) + obj.decrementHolder = nil + obj.obj.Decrement = value.Msg() - obj.obj.Count = &value return obj } -func (obj *patternFlowIpv6PayloadLengthCounter) validateObj(vObj *validation, set_default bool) { +// One or more metric tags can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. +// MetricTags returns a []PatternFlowGtpExtensionExtensionLengthMetricTag +func (obj *patternFlowGtpExtensionExtensionLength) MetricTags() PatternFlowGtpExtensionExtensionLengthPatternFlowGtpExtensionExtensionLengthMetricTagIter { + if len(obj.obj.MetricTags) == 0 { + obj.obj.MetricTags = []*otg.PatternFlowGtpExtensionExtensionLengthMetricTag{} + } + if obj.metricTagsHolder == nil { + obj.metricTagsHolder = newPatternFlowGtpExtensionExtensionLengthPatternFlowGtpExtensionExtensionLengthMetricTagIter(&obj.obj.MetricTags).setMsg(obj) + } + return obj.metricTagsHolder +} + +type patternFlowGtpExtensionExtensionLengthPatternFlowGtpExtensionExtensionLengthMetricTagIter struct { + obj *patternFlowGtpExtensionExtensionLength + patternFlowGtpExtensionExtensionLengthMetricTagSlice []PatternFlowGtpExtensionExtensionLengthMetricTag + fieldPtr *[]*otg.PatternFlowGtpExtensionExtensionLengthMetricTag +} + +func newPatternFlowGtpExtensionExtensionLengthPatternFlowGtpExtensionExtensionLengthMetricTagIter(ptr *[]*otg.PatternFlowGtpExtensionExtensionLengthMetricTag) PatternFlowGtpExtensionExtensionLengthPatternFlowGtpExtensionExtensionLengthMetricTagIter { + return &patternFlowGtpExtensionExtensionLengthPatternFlowGtpExtensionExtensionLengthMetricTagIter{fieldPtr: ptr} +} + +type PatternFlowGtpExtensionExtensionLengthPatternFlowGtpExtensionExtensionLengthMetricTagIter interface { + setMsg(*patternFlowGtpExtensionExtensionLength) PatternFlowGtpExtensionExtensionLengthPatternFlowGtpExtensionExtensionLengthMetricTagIter + Items() []PatternFlowGtpExtensionExtensionLengthMetricTag + Add() PatternFlowGtpExtensionExtensionLengthMetricTag + Append(items ...PatternFlowGtpExtensionExtensionLengthMetricTag) PatternFlowGtpExtensionExtensionLengthPatternFlowGtpExtensionExtensionLengthMetricTagIter + Set(index int, newObj PatternFlowGtpExtensionExtensionLengthMetricTag) PatternFlowGtpExtensionExtensionLengthPatternFlowGtpExtensionExtensionLengthMetricTagIter + Clear() PatternFlowGtpExtensionExtensionLengthPatternFlowGtpExtensionExtensionLengthMetricTagIter + clearHolderSlice() PatternFlowGtpExtensionExtensionLengthPatternFlowGtpExtensionExtensionLengthMetricTagIter + appendHolderSlice(item PatternFlowGtpExtensionExtensionLengthMetricTag) PatternFlowGtpExtensionExtensionLengthPatternFlowGtpExtensionExtensionLengthMetricTagIter +} + +func (obj *patternFlowGtpExtensionExtensionLengthPatternFlowGtpExtensionExtensionLengthMetricTagIter) setMsg(msg *patternFlowGtpExtensionExtensionLength) PatternFlowGtpExtensionExtensionLengthPatternFlowGtpExtensionExtensionLengthMetricTagIter { + obj.clearHolderSlice() + for _, val := range *obj.fieldPtr { + obj.appendHolderSlice(&patternFlowGtpExtensionExtensionLengthMetricTag{obj: val}) + } + obj.obj = msg + return obj +} + +func (obj *patternFlowGtpExtensionExtensionLengthPatternFlowGtpExtensionExtensionLengthMetricTagIter) Items() []PatternFlowGtpExtensionExtensionLengthMetricTag { + return obj.patternFlowGtpExtensionExtensionLengthMetricTagSlice +} + +func (obj *patternFlowGtpExtensionExtensionLengthPatternFlowGtpExtensionExtensionLengthMetricTagIter) Add() PatternFlowGtpExtensionExtensionLengthMetricTag { + newObj := &otg.PatternFlowGtpExtensionExtensionLengthMetricTag{} + *obj.fieldPtr = append(*obj.fieldPtr, newObj) + newLibObj := &patternFlowGtpExtensionExtensionLengthMetricTag{obj: newObj} + newLibObj.setDefault() + obj.patternFlowGtpExtensionExtensionLengthMetricTagSlice = append(obj.patternFlowGtpExtensionExtensionLengthMetricTagSlice, newLibObj) + return newLibObj +} + +func (obj *patternFlowGtpExtensionExtensionLengthPatternFlowGtpExtensionExtensionLengthMetricTagIter) Append(items ...PatternFlowGtpExtensionExtensionLengthMetricTag) PatternFlowGtpExtensionExtensionLengthPatternFlowGtpExtensionExtensionLengthMetricTagIter { + for _, item := range items { + newObj := item.Msg() + *obj.fieldPtr = append(*obj.fieldPtr, newObj) + obj.patternFlowGtpExtensionExtensionLengthMetricTagSlice = append(obj.patternFlowGtpExtensionExtensionLengthMetricTagSlice, item) + } + return obj +} + +func (obj *patternFlowGtpExtensionExtensionLengthPatternFlowGtpExtensionExtensionLengthMetricTagIter) Set(index int, newObj PatternFlowGtpExtensionExtensionLengthMetricTag) PatternFlowGtpExtensionExtensionLengthPatternFlowGtpExtensionExtensionLengthMetricTagIter { + (*obj.fieldPtr)[index] = newObj.Msg() + obj.patternFlowGtpExtensionExtensionLengthMetricTagSlice[index] = newObj + return obj +} +func (obj *patternFlowGtpExtensionExtensionLengthPatternFlowGtpExtensionExtensionLengthMetricTagIter) Clear() PatternFlowGtpExtensionExtensionLengthPatternFlowGtpExtensionExtensionLengthMetricTagIter { + if len(*obj.fieldPtr) > 0 { + *obj.fieldPtr = []*otg.PatternFlowGtpExtensionExtensionLengthMetricTag{} + obj.patternFlowGtpExtensionExtensionLengthMetricTagSlice = []PatternFlowGtpExtensionExtensionLengthMetricTag{} + } + return obj +} +func (obj *patternFlowGtpExtensionExtensionLengthPatternFlowGtpExtensionExtensionLengthMetricTagIter) clearHolderSlice() PatternFlowGtpExtensionExtensionLengthPatternFlowGtpExtensionExtensionLengthMetricTagIter { + if len(obj.patternFlowGtpExtensionExtensionLengthMetricTagSlice) > 0 { + obj.patternFlowGtpExtensionExtensionLengthMetricTagSlice = []PatternFlowGtpExtensionExtensionLengthMetricTag{} + } + return obj +} +func (obj *patternFlowGtpExtensionExtensionLengthPatternFlowGtpExtensionExtensionLengthMetricTagIter) appendHolderSlice(item PatternFlowGtpExtensionExtensionLengthMetricTag) PatternFlowGtpExtensionExtensionLengthPatternFlowGtpExtensionExtensionLengthMetricTagIter { + obj.patternFlowGtpExtensionExtensionLengthMetricTagSlice = append(obj.patternFlowGtpExtensionExtensionLengthMetricTagSlice, item) + return obj +} + +func (obj *patternFlowGtpExtensionExtensionLength) validateObj(vObj *validation, set_default bool) { if set_default { obj.setDefault() } - if obj.obj.Start != nil { + if obj.obj.Value != nil { - if *obj.obj.Start > 65535 { + if *obj.obj.Value > 255 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowIpv6PayloadLengthCounter.Start <= 65535 but Got %d", *obj.obj.Start)) + fmt.Sprintf("0 <= PatternFlowGtpExtensionExtensionLength.Value <= 255 but Got %d", *obj.obj.Value)) } } - if obj.obj.Step != nil { + if obj.obj.Values != nil { + + for _, item := range obj.obj.Values { + if item > 255 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("min(uint32) <= PatternFlowGtpExtensionExtensionLength.Values <= 255 but Got %d", item)) + } - if *obj.obj.Step > 65535 { - vObj.validationErrors = append( - vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowIpv6PayloadLengthCounter.Step <= 65535 but Got %d", *obj.obj.Step)) } } - if obj.obj.Count != nil { + if obj.obj.Increment != nil { - if *obj.obj.Count > 65535 { - vObj.validationErrors = append( - vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowIpv6PayloadLengthCounter.Count <= 65535 but Got %d", *obj.obj.Count)) + obj.Increment().validateObj(vObj, set_default) + } + + if obj.obj.Decrement != nil { + + obj.Decrement().validateObj(vObj, set_default) + } + + if len(obj.obj.MetricTags) != 0 { + + if set_default { + obj.MetricTags().clearHolderSlice() + for _, item := range obj.obj.MetricTags { + obj.MetricTags().appendHolderSlice(&patternFlowGtpExtensionExtensionLengthMetricTag{obj: item}) + } + } + for _, item := range obj.MetricTags().Items() { + item.validateObj(vObj, set_default) } } } -func (obj *patternFlowIpv6PayloadLengthCounter) setDefault() { - if obj.obj.Start == nil { - obj.SetStart(0) - } - if obj.obj.Step == nil { - obj.SetStep(1) - } - if obj.obj.Count == nil { - obj.SetCount(1) +func (obj *patternFlowGtpExtensionExtensionLength) setDefault() { + if obj.obj.Choice == nil { + obj.SetChoice(PatternFlowGtpExtensionExtensionLengthChoice.VALUE) + } } -// ***** PatternFlowIpv6PayloadLengthMetricTag ***** -type patternFlowIpv6PayloadLengthMetricTag struct { +// ***** PatternFlowGtpExtensionContents ***** +type patternFlowGtpExtensionContents struct { validation - obj *otg.PatternFlowIpv6PayloadLengthMetricTag + obj *otg.PatternFlowGtpExtensionContents + incrementHolder PatternFlowGtpExtensionContentsCounter + decrementHolder PatternFlowGtpExtensionContentsCounter + metricTagsHolder PatternFlowGtpExtensionContentsPatternFlowGtpExtensionContentsMetricTagIter } -func NewPatternFlowIpv6PayloadLengthMetricTag() PatternFlowIpv6PayloadLengthMetricTag { - obj := patternFlowIpv6PayloadLengthMetricTag{obj: &otg.PatternFlowIpv6PayloadLengthMetricTag{}} +func NewPatternFlowGtpExtensionContents() PatternFlowGtpExtensionContents { + obj := patternFlowGtpExtensionContents{obj: &otg.PatternFlowGtpExtensionContents{}} obj.setDefault() return &obj } -func (obj *patternFlowIpv6PayloadLengthMetricTag) Msg() *otg.PatternFlowIpv6PayloadLengthMetricTag { +func (obj *patternFlowGtpExtensionContents) Msg() *otg.PatternFlowGtpExtensionContents { return obj.obj } -func (obj *patternFlowIpv6PayloadLengthMetricTag) SetMsg(msg *otg.PatternFlowIpv6PayloadLengthMetricTag) PatternFlowIpv6PayloadLengthMetricTag { - +func (obj *patternFlowGtpExtensionContents) SetMsg(msg *otg.PatternFlowGtpExtensionContents) PatternFlowGtpExtensionContents { + obj.setNil() proto.Merge(obj.obj, msg) return obj } -func (obj *patternFlowIpv6PayloadLengthMetricTag) ToProto() (*otg.PatternFlowIpv6PayloadLengthMetricTag, error) { +func (obj *patternFlowGtpExtensionContents) ToProto() (*otg.PatternFlowGtpExtensionContents, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -205067,7 +248433,7 @@ func (obj *patternFlowIpv6PayloadLengthMetricTag) ToProto() (*otg.PatternFlowIpv return obj.Msg(), nil } -func (obj *patternFlowIpv6PayloadLengthMetricTag) FromProto(msg *otg.PatternFlowIpv6PayloadLengthMetricTag) (PatternFlowIpv6PayloadLengthMetricTag, error) { +func (obj *patternFlowGtpExtensionContents) FromProto(msg *otg.PatternFlowGtpExtensionContents) (PatternFlowGtpExtensionContents, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -205076,7 +248442,7 @@ func (obj *patternFlowIpv6PayloadLengthMetricTag) FromProto(msg *otg.PatternFlow return newObj, nil } -func (obj *patternFlowIpv6PayloadLengthMetricTag) ToPbText() (string, error) { +func (obj *patternFlowGtpExtensionContents) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -205088,12 +248454,12 @@ func (obj *patternFlowIpv6PayloadLengthMetricTag) ToPbText() (string, error) { return string(protoMarshal), nil } -func (obj *patternFlowIpv6PayloadLengthMetricTag) FromPbText(value string) error { +func (obj *patternFlowGtpExtensionContents) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj } - + obj.setNil() vErr := obj.validateToAndFrom() if vErr != nil { return vErr @@ -205101,7 +248467,7 @@ func (obj *patternFlowIpv6PayloadLengthMetricTag) FromPbText(value string) error return retObj } -func (obj *patternFlowIpv6PayloadLengthMetricTag) ToYaml() (string, error) { +func (obj *patternFlowGtpExtensionContents) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -205122,7 +248488,7 @@ func (obj *patternFlowIpv6PayloadLengthMetricTag) ToYaml() (string, error) { return string(data), nil } -func (obj *patternFlowIpv6PayloadLengthMetricTag) FromYaml(value string) error { +func (obj *patternFlowGtpExtensionContents) FromYaml(value string) error { if value == "" { value = "{}" } @@ -205139,7 +248505,7 @@ func (obj *patternFlowIpv6PayloadLengthMetricTag) FromYaml(value string) error { return fmt.Errorf("unmarshal error %s", strings.Replace( uError.Error(), "\u00a0", " ", -1)[7:]) } - + obj.setNil() vErr := obj.validateToAndFrom() if vErr != nil { return vErr @@ -205147,7 +248513,7 @@ func (obj *patternFlowIpv6PayloadLengthMetricTag) FromYaml(value string) error { return nil } -func (obj *patternFlowIpv6PayloadLengthMetricTag) ToJson() (string, error) { +func (obj *patternFlowGtpExtensionContents) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -205165,7 +248531,7 @@ func (obj *patternFlowIpv6PayloadLengthMetricTag) ToJson() (string, error) { return string(data), nil } -func (obj *patternFlowIpv6PayloadLengthMetricTag) FromJson(value string) error { +func (obj *patternFlowGtpExtensionContents) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -205178,7 +248544,7 @@ func (obj *patternFlowIpv6PayloadLengthMetricTag) FromJson(value string) error { return fmt.Errorf("unmarshal error %s", strings.Replace( uError.Error(), "\u00a0", " ", -1)[7:]) } - + obj.setNil() err := obj.validateToAndFrom() if err != nil { return err @@ -205186,19 +248552,19 @@ func (obj *patternFlowIpv6PayloadLengthMetricTag) FromJson(value string) error { return nil } -func (obj *patternFlowIpv6PayloadLengthMetricTag) validateToAndFrom() error { +func (obj *patternFlowGtpExtensionContents) validateToAndFrom() error { // emptyVars() obj.validateObj(&obj.validation, true) return obj.validationResult() } -func (obj *patternFlowIpv6PayloadLengthMetricTag) Validate() error { +func (obj *patternFlowGtpExtensionContents) Validate() error { // emptyVars() obj.validateObj(&obj.validation, false) return obj.validationResult() } -func (obj *patternFlowIpv6PayloadLengthMetricTag) String() string { +func (obj *patternFlowGtpExtensionContents) String() string { str, err := obj.ToYaml() if err != nil { return err.Error() @@ -205206,12 +248572,12 @@ func (obj *patternFlowIpv6PayloadLengthMetricTag) String() string { return str } -func (obj *patternFlowIpv6PayloadLengthMetricTag) Clone() (PatternFlowIpv6PayloadLengthMetricTag, error) { +func (obj *patternFlowGtpExtensionContents) Clone() (PatternFlowGtpExtensionContents, error) { vErr := obj.Validate() if vErr != nil { return nil, vErr } - newObj := NewPatternFlowIpv6PayloadLengthMetricTag() + newObj := NewPatternFlowGtpExtensionContents() data, err := proto.Marshal(obj.Msg()) if err != nil { return nil, err @@ -205223,183 +248589,426 @@ func (obj *patternFlowIpv6PayloadLengthMetricTag) Clone() (PatternFlowIpv6Payloa return newObj, nil } -// PatternFlowIpv6PayloadLengthMetricTag is metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. -type PatternFlowIpv6PayloadLengthMetricTag interface { +func (obj *patternFlowGtpExtensionContents) setNil() { + obj.incrementHolder = nil + obj.decrementHolder = nil + obj.metricTagsHolder = nil + obj.validationErrors = nil + obj.warnings = nil + obj.constraints = make(map[string]map[string]Constraints) +} + +// PatternFlowGtpExtensionContents is the extension header contents +type PatternFlowGtpExtensionContents interface { Validation - // Msg marshals PatternFlowIpv6PayloadLengthMetricTag to protobuf object *otg.PatternFlowIpv6PayloadLengthMetricTag + // Msg marshals PatternFlowGtpExtensionContents to protobuf object *otg.PatternFlowGtpExtensionContents // and doesn't set defaults - Msg() *otg.PatternFlowIpv6PayloadLengthMetricTag - // SetMsg unmarshals PatternFlowIpv6PayloadLengthMetricTag from protobuf object *otg.PatternFlowIpv6PayloadLengthMetricTag + Msg() *otg.PatternFlowGtpExtensionContents + // SetMsg unmarshals PatternFlowGtpExtensionContents from protobuf object *otg.PatternFlowGtpExtensionContents // and doesn't set defaults - SetMsg(*otg.PatternFlowIpv6PayloadLengthMetricTag) PatternFlowIpv6PayloadLengthMetricTag - // ToProto marshals PatternFlowIpv6PayloadLengthMetricTag to protobuf object *otg.PatternFlowIpv6PayloadLengthMetricTag - ToProto() (*otg.PatternFlowIpv6PayloadLengthMetricTag, error) - // ToPbText marshals PatternFlowIpv6PayloadLengthMetricTag to protobuf text + SetMsg(*otg.PatternFlowGtpExtensionContents) PatternFlowGtpExtensionContents + // ToProto marshals PatternFlowGtpExtensionContents to protobuf object *otg.PatternFlowGtpExtensionContents + ToProto() (*otg.PatternFlowGtpExtensionContents, error) + // ToPbText marshals PatternFlowGtpExtensionContents to protobuf text ToPbText() (string, error) - // ToYaml marshals PatternFlowIpv6PayloadLengthMetricTag to YAML text + // ToYaml marshals PatternFlowGtpExtensionContents to YAML text ToYaml() (string, error) - // ToJson marshals PatternFlowIpv6PayloadLengthMetricTag to JSON text + // ToJson marshals PatternFlowGtpExtensionContents to JSON text ToJson() (string, error) - // FromProto unmarshals PatternFlowIpv6PayloadLengthMetricTag from protobuf object *otg.PatternFlowIpv6PayloadLengthMetricTag - FromProto(msg *otg.PatternFlowIpv6PayloadLengthMetricTag) (PatternFlowIpv6PayloadLengthMetricTag, error) - // FromPbText unmarshals PatternFlowIpv6PayloadLengthMetricTag from protobuf text + // FromProto unmarshals PatternFlowGtpExtensionContents from protobuf object *otg.PatternFlowGtpExtensionContents + FromProto(msg *otg.PatternFlowGtpExtensionContents) (PatternFlowGtpExtensionContents, error) + // FromPbText unmarshals PatternFlowGtpExtensionContents from protobuf text FromPbText(value string) error - // FromYaml unmarshals PatternFlowIpv6PayloadLengthMetricTag from YAML text + // FromYaml unmarshals PatternFlowGtpExtensionContents from YAML text FromYaml(value string) error - // FromJson unmarshals PatternFlowIpv6PayloadLengthMetricTag from JSON text + // FromJson unmarshals PatternFlowGtpExtensionContents from JSON text FromJson(value string) error - // Validate validates PatternFlowIpv6PayloadLengthMetricTag + // Validate validates PatternFlowGtpExtensionContents Validate() error // A stringer function String() string // Clones the object - Clone() (PatternFlowIpv6PayloadLengthMetricTag, error) + Clone() (PatternFlowGtpExtensionContents, error) validateToAndFrom() error validateObj(vObj *validation, set_default bool) setDefault() - // Name returns string, set in PatternFlowIpv6PayloadLengthMetricTag. - Name() string - // SetName assigns string provided by user to PatternFlowIpv6PayloadLengthMetricTag - SetName(value string) PatternFlowIpv6PayloadLengthMetricTag - // Offset returns uint32, set in PatternFlowIpv6PayloadLengthMetricTag. - Offset() uint32 - // SetOffset assigns uint32 provided by user to PatternFlowIpv6PayloadLengthMetricTag - SetOffset(value uint32) PatternFlowIpv6PayloadLengthMetricTag - // HasOffset checks if Offset has been set in PatternFlowIpv6PayloadLengthMetricTag - HasOffset() bool - // Length returns uint32, set in PatternFlowIpv6PayloadLengthMetricTag. - Length() uint32 - // SetLength assigns uint32 provided by user to PatternFlowIpv6PayloadLengthMetricTag - SetLength(value uint32) PatternFlowIpv6PayloadLengthMetricTag - // HasLength checks if Length has been set in PatternFlowIpv6PayloadLengthMetricTag - HasLength() bool + // Choice returns PatternFlowGtpExtensionContentsChoiceEnum, set in PatternFlowGtpExtensionContents + Choice() PatternFlowGtpExtensionContentsChoiceEnum + // SetChoice assigns PatternFlowGtpExtensionContentsChoiceEnum provided by user to PatternFlowGtpExtensionContents + SetChoice(value PatternFlowGtpExtensionContentsChoiceEnum) PatternFlowGtpExtensionContents + // HasChoice checks if Choice has been set in PatternFlowGtpExtensionContents + HasChoice() bool + // Value returns uint64, set in PatternFlowGtpExtensionContents. + Value() uint64 + // SetValue assigns uint64 provided by user to PatternFlowGtpExtensionContents + SetValue(value uint64) PatternFlowGtpExtensionContents + // HasValue checks if Value has been set in PatternFlowGtpExtensionContents + HasValue() bool + // Values returns []uint64, set in PatternFlowGtpExtensionContents. + Values() []uint64 + // SetValues assigns []uint64 provided by user to PatternFlowGtpExtensionContents + SetValues(value []uint64) PatternFlowGtpExtensionContents + // Increment returns PatternFlowGtpExtensionContentsCounter, set in PatternFlowGtpExtensionContents. + // PatternFlowGtpExtensionContentsCounter is integer counter pattern + Increment() PatternFlowGtpExtensionContentsCounter + // SetIncrement assigns PatternFlowGtpExtensionContentsCounter provided by user to PatternFlowGtpExtensionContents. + // PatternFlowGtpExtensionContentsCounter is integer counter pattern + SetIncrement(value PatternFlowGtpExtensionContentsCounter) PatternFlowGtpExtensionContents + // HasIncrement checks if Increment has been set in PatternFlowGtpExtensionContents + HasIncrement() bool + // Decrement returns PatternFlowGtpExtensionContentsCounter, set in PatternFlowGtpExtensionContents. + // PatternFlowGtpExtensionContentsCounter is integer counter pattern + Decrement() PatternFlowGtpExtensionContentsCounter + // SetDecrement assigns PatternFlowGtpExtensionContentsCounter provided by user to PatternFlowGtpExtensionContents. + // PatternFlowGtpExtensionContentsCounter is integer counter pattern + SetDecrement(value PatternFlowGtpExtensionContentsCounter) PatternFlowGtpExtensionContents + // HasDecrement checks if Decrement has been set in PatternFlowGtpExtensionContents + HasDecrement() bool + // MetricTags returns PatternFlowGtpExtensionContentsPatternFlowGtpExtensionContentsMetricTagIterIter, set in PatternFlowGtpExtensionContents + MetricTags() PatternFlowGtpExtensionContentsPatternFlowGtpExtensionContentsMetricTagIter + setNil() } -// Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field -// Name returns a string -func (obj *patternFlowIpv6PayloadLengthMetricTag) Name() string { +type PatternFlowGtpExtensionContentsChoiceEnum string - return *obj.obj.Name +// Enum of Choice on PatternFlowGtpExtensionContents +var PatternFlowGtpExtensionContentsChoice = struct { + VALUE PatternFlowGtpExtensionContentsChoiceEnum + VALUES PatternFlowGtpExtensionContentsChoiceEnum + INCREMENT PatternFlowGtpExtensionContentsChoiceEnum + DECREMENT PatternFlowGtpExtensionContentsChoiceEnum +}{ + VALUE: PatternFlowGtpExtensionContentsChoiceEnum("value"), + VALUES: PatternFlowGtpExtensionContentsChoiceEnum("values"), + INCREMENT: PatternFlowGtpExtensionContentsChoiceEnum("increment"), + DECREMENT: PatternFlowGtpExtensionContentsChoiceEnum("decrement"), +} +func (obj *patternFlowGtpExtensionContents) Choice() PatternFlowGtpExtensionContentsChoiceEnum { + return PatternFlowGtpExtensionContentsChoiceEnum(obj.obj.Choice.Enum().String()) } -// Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field -// SetName sets the string value in the PatternFlowIpv6PayloadLengthMetricTag object -func (obj *patternFlowIpv6PayloadLengthMetricTag) SetName(value string) PatternFlowIpv6PayloadLengthMetricTag { +// description is TBD +// Choice returns a string +func (obj *patternFlowGtpExtensionContents) HasChoice() bool { + return obj.obj.Choice != nil +} + +func (obj *patternFlowGtpExtensionContents) SetChoice(value PatternFlowGtpExtensionContentsChoiceEnum) PatternFlowGtpExtensionContents { + intValue, ok := otg.PatternFlowGtpExtensionContents_Choice_Enum_value[string(value)] + if !ok { + obj.validationErrors = append(obj.validationErrors, fmt.Sprintf( + "%s is not a valid choice on PatternFlowGtpExtensionContentsChoiceEnum", string(value))) + return obj + } + enumValue := otg.PatternFlowGtpExtensionContents_Choice_Enum(intValue) + obj.obj.Choice = &enumValue + obj.obj.Decrement = nil + obj.decrementHolder = nil + obj.obj.Increment = nil + obj.incrementHolder = nil + obj.obj.Values = nil + obj.obj.Value = nil + + if value == PatternFlowGtpExtensionContentsChoice.VALUE { + defaultValue := uint64(0) + obj.obj.Value = &defaultValue + } + + if value == PatternFlowGtpExtensionContentsChoice.VALUES { + defaultValue := []uint64{0} + obj.obj.Values = defaultValue + } + + if value == PatternFlowGtpExtensionContentsChoice.INCREMENT { + obj.obj.Increment = NewPatternFlowGtpExtensionContentsCounter().Msg() + } + + if value == PatternFlowGtpExtensionContentsChoice.DECREMENT { + obj.obj.Decrement = NewPatternFlowGtpExtensionContentsCounter().Msg() + } - obj.obj.Name = &value return obj } -// Offset in bits relative to start of corresponding header field -// Offset returns a uint32 -func (obj *patternFlowIpv6PayloadLengthMetricTag) Offset() uint32 { +// description is TBD +// Value returns a uint64 +func (obj *patternFlowGtpExtensionContents) Value() uint64 { - return *obj.obj.Offset + if obj.obj.Value == nil { + obj.SetChoice(PatternFlowGtpExtensionContentsChoice.VALUE) + } + + return *obj.obj.Value + +} + +// description is TBD +// Value returns a uint64 +func (obj *patternFlowGtpExtensionContents) HasValue() bool { + return obj.obj.Value != nil +} + +// description is TBD +// SetValue sets the uint64 value in the PatternFlowGtpExtensionContents object +func (obj *patternFlowGtpExtensionContents) SetValue(value uint64) PatternFlowGtpExtensionContents { + obj.SetChoice(PatternFlowGtpExtensionContentsChoice.VALUE) + obj.obj.Value = &value + return obj +} + +// description is TBD +// Values returns a []uint64 +func (obj *patternFlowGtpExtensionContents) Values() []uint64 { + if obj.obj.Values == nil { + obj.SetValues([]uint64{0}) + } + return obj.obj.Values +} + +// description is TBD +// SetValues sets the []uint64 value in the PatternFlowGtpExtensionContents object +func (obj *patternFlowGtpExtensionContents) SetValues(value []uint64) PatternFlowGtpExtensionContents { + obj.SetChoice(PatternFlowGtpExtensionContentsChoice.VALUES) + if obj.obj.Values == nil { + obj.obj.Values = make([]uint64, 0) + } + obj.obj.Values = value + + return obj +} + +// description is TBD +// Increment returns a PatternFlowGtpExtensionContentsCounter +func (obj *patternFlowGtpExtensionContents) Increment() PatternFlowGtpExtensionContentsCounter { + if obj.obj.Increment == nil { + obj.SetChoice(PatternFlowGtpExtensionContentsChoice.INCREMENT) + } + if obj.incrementHolder == nil { + obj.incrementHolder = &patternFlowGtpExtensionContentsCounter{obj: obj.obj.Increment} + } + return obj.incrementHolder +} + +// description is TBD +// Increment returns a PatternFlowGtpExtensionContentsCounter +func (obj *patternFlowGtpExtensionContents) HasIncrement() bool { + return obj.obj.Increment != nil +} + +// description is TBD +// SetIncrement sets the PatternFlowGtpExtensionContentsCounter value in the PatternFlowGtpExtensionContents object +func (obj *patternFlowGtpExtensionContents) SetIncrement(value PatternFlowGtpExtensionContentsCounter) PatternFlowGtpExtensionContents { + obj.SetChoice(PatternFlowGtpExtensionContentsChoice.INCREMENT) + obj.incrementHolder = nil + obj.obj.Increment = value.Msg() + + return obj +} + +// description is TBD +// Decrement returns a PatternFlowGtpExtensionContentsCounter +func (obj *patternFlowGtpExtensionContents) Decrement() PatternFlowGtpExtensionContentsCounter { + if obj.obj.Decrement == nil { + obj.SetChoice(PatternFlowGtpExtensionContentsChoice.DECREMENT) + } + if obj.decrementHolder == nil { + obj.decrementHolder = &patternFlowGtpExtensionContentsCounter{obj: obj.obj.Decrement} + } + return obj.decrementHolder +} + +// description is TBD +// Decrement returns a PatternFlowGtpExtensionContentsCounter +func (obj *patternFlowGtpExtensionContents) HasDecrement() bool { + return obj.obj.Decrement != nil +} + +// description is TBD +// SetDecrement sets the PatternFlowGtpExtensionContentsCounter value in the PatternFlowGtpExtensionContents object +func (obj *patternFlowGtpExtensionContents) SetDecrement(value PatternFlowGtpExtensionContentsCounter) PatternFlowGtpExtensionContents { + obj.SetChoice(PatternFlowGtpExtensionContentsChoice.DECREMENT) + obj.decrementHolder = nil + obj.obj.Decrement = value.Msg() + + return obj +} + +// One or more metric tags can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. +// MetricTags returns a []PatternFlowGtpExtensionContentsMetricTag +func (obj *patternFlowGtpExtensionContents) MetricTags() PatternFlowGtpExtensionContentsPatternFlowGtpExtensionContentsMetricTagIter { + if len(obj.obj.MetricTags) == 0 { + obj.obj.MetricTags = []*otg.PatternFlowGtpExtensionContentsMetricTag{} + } + if obj.metricTagsHolder == nil { + obj.metricTagsHolder = newPatternFlowGtpExtensionContentsPatternFlowGtpExtensionContentsMetricTagIter(&obj.obj.MetricTags).setMsg(obj) + } + return obj.metricTagsHolder +} +type patternFlowGtpExtensionContentsPatternFlowGtpExtensionContentsMetricTagIter struct { + obj *patternFlowGtpExtensionContents + patternFlowGtpExtensionContentsMetricTagSlice []PatternFlowGtpExtensionContentsMetricTag + fieldPtr *[]*otg.PatternFlowGtpExtensionContentsMetricTag } -// Offset in bits relative to start of corresponding header field -// Offset returns a uint32 -func (obj *patternFlowIpv6PayloadLengthMetricTag) HasOffset() bool { - return obj.obj.Offset != nil +func newPatternFlowGtpExtensionContentsPatternFlowGtpExtensionContentsMetricTagIter(ptr *[]*otg.PatternFlowGtpExtensionContentsMetricTag) PatternFlowGtpExtensionContentsPatternFlowGtpExtensionContentsMetricTagIter { + return &patternFlowGtpExtensionContentsPatternFlowGtpExtensionContentsMetricTagIter{fieldPtr: ptr} } -// Offset in bits relative to start of corresponding header field -// SetOffset sets the uint32 value in the PatternFlowIpv6PayloadLengthMetricTag object -func (obj *patternFlowIpv6PayloadLengthMetricTag) SetOffset(value uint32) PatternFlowIpv6PayloadLengthMetricTag { +type PatternFlowGtpExtensionContentsPatternFlowGtpExtensionContentsMetricTagIter interface { + setMsg(*patternFlowGtpExtensionContents) PatternFlowGtpExtensionContentsPatternFlowGtpExtensionContentsMetricTagIter + Items() []PatternFlowGtpExtensionContentsMetricTag + Add() PatternFlowGtpExtensionContentsMetricTag + Append(items ...PatternFlowGtpExtensionContentsMetricTag) PatternFlowGtpExtensionContentsPatternFlowGtpExtensionContentsMetricTagIter + Set(index int, newObj PatternFlowGtpExtensionContentsMetricTag) PatternFlowGtpExtensionContentsPatternFlowGtpExtensionContentsMetricTagIter + Clear() PatternFlowGtpExtensionContentsPatternFlowGtpExtensionContentsMetricTagIter + clearHolderSlice() PatternFlowGtpExtensionContentsPatternFlowGtpExtensionContentsMetricTagIter + appendHolderSlice(item PatternFlowGtpExtensionContentsMetricTag) PatternFlowGtpExtensionContentsPatternFlowGtpExtensionContentsMetricTagIter +} - obj.obj.Offset = &value +func (obj *patternFlowGtpExtensionContentsPatternFlowGtpExtensionContentsMetricTagIter) setMsg(msg *patternFlowGtpExtensionContents) PatternFlowGtpExtensionContentsPatternFlowGtpExtensionContentsMetricTagIter { + obj.clearHolderSlice() + for _, val := range *obj.fieldPtr { + obj.appendHolderSlice(&patternFlowGtpExtensionContentsMetricTag{obj: val}) + } + obj.obj = msg return obj } -// Number of bits to track for metrics starting from configured offset of corresponding header field -// Length returns a uint32 -func (obj *patternFlowIpv6PayloadLengthMetricTag) Length() uint32 { - - return *obj.obj.Length - +func (obj *patternFlowGtpExtensionContentsPatternFlowGtpExtensionContentsMetricTagIter) Items() []PatternFlowGtpExtensionContentsMetricTag { + return obj.patternFlowGtpExtensionContentsMetricTagSlice } -// Number of bits to track for metrics starting from configured offset of corresponding header field -// Length returns a uint32 -func (obj *patternFlowIpv6PayloadLengthMetricTag) HasLength() bool { - return obj.obj.Length != nil +func (obj *patternFlowGtpExtensionContentsPatternFlowGtpExtensionContentsMetricTagIter) Add() PatternFlowGtpExtensionContentsMetricTag { + newObj := &otg.PatternFlowGtpExtensionContentsMetricTag{} + *obj.fieldPtr = append(*obj.fieldPtr, newObj) + newLibObj := &patternFlowGtpExtensionContentsMetricTag{obj: newObj} + newLibObj.setDefault() + obj.patternFlowGtpExtensionContentsMetricTagSlice = append(obj.patternFlowGtpExtensionContentsMetricTagSlice, newLibObj) + return newLibObj } -// Number of bits to track for metrics starting from configured offset of corresponding header field -// SetLength sets the uint32 value in the PatternFlowIpv6PayloadLengthMetricTag object -func (obj *patternFlowIpv6PayloadLengthMetricTag) SetLength(value uint32) PatternFlowIpv6PayloadLengthMetricTag { +func (obj *patternFlowGtpExtensionContentsPatternFlowGtpExtensionContentsMetricTagIter) Append(items ...PatternFlowGtpExtensionContentsMetricTag) PatternFlowGtpExtensionContentsPatternFlowGtpExtensionContentsMetricTagIter { + for _, item := range items { + newObj := item.Msg() + *obj.fieldPtr = append(*obj.fieldPtr, newObj) + obj.patternFlowGtpExtensionContentsMetricTagSlice = append(obj.patternFlowGtpExtensionContentsMetricTagSlice, item) + } + return obj +} - obj.obj.Length = &value +func (obj *patternFlowGtpExtensionContentsPatternFlowGtpExtensionContentsMetricTagIter) Set(index int, newObj PatternFlowGtpExtensionContentsMetricTag) PatternFlowGtpExtensionContentsPatternFlowGtpExtensionContentsMetricTagIter { + (*obj.fieldPtr)[index] = newObj.Msg() + obj.patternFlowGtpExtensionContentsMetricTagSlice[index] = newObj + return obj +} +func (obj *patternFlowGtpExtensionContentsPatternFlowGtpExtensionContentsMetricTagIter) Clear() PatternFlowGtpExtensionContentsPatternFlowGtpExtensionContentsMetricTagIter { + if len(*obj.fieldPtr) > 0 { + *obj.fieldPtr = []*otg.PatternFlowGtpExtensionContentsMetricTag{} + obj.patternFlowGtpExtensionContentsMetricTagSlice = []PatternFlowGtpExtensionContentsMetricTag{} + } + return obj +} +func (obj *patternFlowGtpExtensionContentsPatternFlowGtpExtensionContentsMetricTagIter) clearHolderSlice() PatternFlowGtpExtensionContentsPatternFlowGtpExtensionContentsMetricTagIter { + if len(obj.patternFlowGtpExtensionContentsMetricTagSlice) > 0 { + obj.patternFlowGtpExtensionContentsMetricTagSlice = []PatternFlowGtpExtensionContentsMetricTag{} + } + return obj +} +func (obj *patternFlowGtpExtensionContentsPatternFlowGtpExtensionContentsMetricTagIter) appendHolderSlice(item PatternFlowGtpExtensionContentsMetricTag) PatternFlowGtpExtensionContentsPatternFlowGtpExtensionContentsMetricTagIter { + obj.patternFlowGtpExtensionContentsMetricTagSlice = append(obj.patternFlowGtpExtensionContentsMetricTagSlice, item) return obj } -func (obj *patternFlowIpv6PayloadLengthMetricTag) validateObj(vObj *validation, set_default bool) { +func (obj *patternFlowGtpExtensionContents) validateObj(vObj *validation, set_default bool) { if set_default { obj.setDefault() } - // Name is required - if obj.obj.Name == nil { - vObj.validationErrors = append(vObj.validationErrors, "Name is required field on interface PatternFlowIpv6PayloadLengthMetricTag") - } - - if obj.obj.Offset != nil { + if obj.obj.Value != nil { - if *obj.obj.Offset > 15 { + if *obj.obj.Value > 281474976710655 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowIpv6PayloadLengthMetricTag.Offset <= 15 but Got %d", *obj.obj.Offset)) + fmt.Sprintf("0 <= PatternFlowGtpExtensionContents.Value <= 281474976710655 but Got %d", *obj.obj.Value)) } } - if obj.obj.Length != nil { + if obj.obj.Values != nil { + + for _, item := range obj.obj.Values { + if item > 281474976710655 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("min(uint64) <= PatternFlowGtpExtensionContents.Values <= 281474976710655 but Got %d", item)) + } - if *obj.obj.Length < 1 || *obj.obj.Length > 16 { - vObj.validationErrors = append( - vObj.validationErrors, - fmt.Sprintf("1 <= PatternFlowIpv6PayloadLengthMetricTag.Length <= 16 but Got %d", *obj.obj.Length)) } } -} + if obj.obj.Increment != nil { -func (obj *patternFlowIpv6PayloadLengthMetricTag) setDefault() { - if obj.obj.Offset == nil { - obj.SetOffset(0) + obj.Increment().validateObj(vObj, set_default) } - if obj.obj.Length == nil { - obj.SetLength(16) + + if obj.obj.Decrement != nil { + + obj.Decrement().validateObj(vObj, set_default) + } + + if len(obj.obj.MetricTags) != 0 { + + if set_default { + obj.MetricTags().clearHolderSlice() + for _, item := range obj.obj.MetricTags { + obj.MetricTags().appendHolderSlice(&patternFlowGtpExtensionContentsMetricTag{obj: item}) + } + } + for _, item := range obj.MetricTags().Items() { + item.validateObj(vObj, set_default) + } + } } -// ***** PatternFlowIpv6NextHeaderCounter ***** -type patternFlowIpv6NextHeaderCounter struct { +func (obj *patternFlowGtpExtensionContents) setDefault() { + if obj.obj.Choice == nil { + obj.SetChoice(PatternFlowGtpExtensionContentsChoice.VALUE) + + } + +} + +// ***** PatternFlowGtpExtensionNextExtensionHeader ***** +type patternFlowGtpExtensionNextExtensionHeader struct { validation - obj *otg.PatternFlowIpv6NextHeaderCounter + obj *otg.PatternFlowGtpExtensionNextExtensionHeader + incrementHolder PatternFlowGtpExtensionNextExtensionHeaderCounter + decrementHolder PatternFlowGtpExtensionNextExtensionHeaderCounter + metricTagsHolder PatternFlowGtpExtensionNextExtensionHeaderPatternFlowGtpExtensionNextExtensionHeaderMetricTagIter } -func NewPatternFlowIpv6NextHeaderCounter() PatternFlowIpv6NextHeaderCounter { - obj := patternFlowIpv6NextHeaderCounter{obj: &otg.PatternFlowIpv6NextHeaderCounter{}} +func NewPatternFlowGtpExtensionNextExtensionHeader() PatternFlowGtpExtensionNextExtensionHeader { + obj := patternFlowGtpExtensionNextExtensionHeader{obj: &otg.PatternFlowGtpExtensionNextExtensionHeader{}} obj.setDefault() return &obj } -func (obj *patternFlowIpv6NextHeaderCounter) Msg() *otg.PatternFlowIpv6NextHeaderCounter { +func (obj *patternFlowGtpExtensionNextExtensionHeader) Msg() *otg.PatternFlowGtpExtensionNextExtensionHeader { return obj.obj } -func (obj *patternFlowIpv6NextHeaderCounter) SetMsg(msg *otg.PatternFlowIpv6NextHeaderCounter) PatternFlowIpv6NextHeaderCounter { - +func (obj *patternFlowGtpExtensionNextExtensionHeader) SetMsg(msg *otg.PatternFlowGtpExtensionNextExtensionHeader) PatternFlowGtpExtensionNextExtensionHeader { + obj.setNil() proto.Merge(obj.obj, msg) return obj } -func (obj *patternFlowIpv6NextHeaderCounter) ToProto() (*otg.PatternFlowIpv6NextHeaderCounter, error) { +func (obj *patternFlowGtpExtensionNextExtensionHeader) ToProto() (*otg.PatternFlowGtpExtensionNextExtensionHeader, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -205407,7 +249016,7 @@ func (obj *patternFlowIpv6NextHeaderCounter) ToProto() (*otg.PatternFlowIpv6Next return obj.Msg(), nil } -func (obj *patternFlowIpv6NextHeaderCounter) FromProto(msg *otg.PatternFlowIpv6NextHeaderCounter) (PatternFlowIpv6NextHeaderCounter, error) { +func (obj *patternFlowGtpExtensionNextExtensionHeader) FromProto(msg *otg.PatternFlowGtpExtensionNextExtensionHeader) (PatternFlowGtpExtensionNextExtensionHeader, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -205416,7 +249025,7 @@ func (obj *patternFlowIpv6NextHeaderCounter) FromProto(msg *otg.PatternFlowIpv6N return newObj, nil } -func (obj *patternFlowIpv6NextHeaderCounter) ToPbText() (string, error) { +func (obj *patternFlowGtpExtensionNextExtensionHeader) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -205428,12 +249037,12 @@ func (obj *patternFlowIpv6NextHeaderCounter) ToPbText() (string, error) { return string(protoMarshal), nil } -func (obj *patternFlowIpv6NextHeaderCounter) FromPbText(value string) error { +func (obj *patternFlowGtpExtensionNextExtensionHeader) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj } - + obj.setNil() vErr := obj.validateToAndFrom() if vErr != nil { return vErr @@ -205441,7 +249050,7 @@ func (obj *patternFlowIpv6NextHeaderCounter) FromPbText(value string) error { return retObj } -func (obj *patternFlowIpv6NextHeaderCounter) ToYaml() (string, error) { +func (obj *patternFlowGtpExtensionNextExtensionHeader) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -205462,7 +249071,7 @@ func (obj *patternFlowIpv6NextHeaderCounter) ToYaml() (string, error) { return string(data), nil } -func (obj *patternFlowIpv6NextHeaderCounter) FromYaml(value string) error { +func (obj *patternFlowGtpExtensionNextExtensionHeader) FromYaml(value string) error { if value == "" { value = "{}" } @@ -205479,7 +249088,7 @@ func (obj *patternFlowIpv6NextHeaderCounter) FromYaml(value string) error { return fmt.Errorf("unmarshal error %s", strings.Replace( uError.Error(), "\u00a0", " ", -1)[7:]) } - + obj.setNil() vErr := obj.validateToAndFrom() if vErr != nil { return vErr @@ -205487,7 +249096,7 @@ func (obj *patternFlowIpv6NextHeaderCounter) FromYaml(value string) error { return nil } -func (obj *patternFlowIpv6NextHeaderCounter) ToJson() (string, error) { +func (obj *patternFlowGtpExtensionNextExtensionHeader) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -205505,7 +249114,7 @@ func (obj *patternFlowIpv6NextHeaderCounter) ToJson() (string, error) { return string(data), nil } -func (obj *patternFlowIpv6NextHeaderCounter) FromJson(value string) error { +func (obj *patternFlowGtpExtensionNextExtensionHeader) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -205518,7 +249127,7 @@ func (obj *patternFlowIpv6NextHeaderCounter) FromJson(value string) error { return fmt.Errorf("unmarshal error %s", strings.Replace( uError.Error(), "\u00a0", " ", -1)[7:]) } - + obj.setNil() err := obj.validateToAndFrom() if err != nil { return err @@ -205526,19 +249135,19 @@ func (obj *patternFlowIpv6NextHeaderCounter) FromJson(value string) error { return nil } -func (obj *patternFlowIpv6NextHeaderCounter) validateToAndFrom() error { +func (obj *patternFlowGtpExtensionNextExtensionHeader) validateToAndFrom() error { // emptyVars() obj.validateObj(&obj.validation, true) return obj.validationResult() } -func (obj *patternFlowIpv6NextHeaderCounter) Validate() error { +func (obj *patternFlowGtpExtensionNextExtensionHeader) Validate() error { // emptyVars() obj.validateObj(&obj.validation, false) return obj.validationResult() } -func (obj *patternFlowIpv6NextHeaderCounter) String() string { +func (obj *patternFlowGtpExtensionNextExtensionHeader) String() string { str, err := obj.ToYaml() if err != nil { return err.Error() @@ -205546,12 +249155,12 @@ func (obj *patternFlowIpv6NextHeaderCounter) String() string { return str } -func (obj *patternFlowIpv6NextHeaderCounter) Clone() (PatternFlowIpv6NextHeaderCounter, error) { +func (obj *patternFlowGtpExtensionNextExtensionHeader) Clone() (PatternFlowGtpExtensionNextExtensionHeader, error) { vErr := obj.Validate() if vErr != nil { return nil, vErr } - newObj := NewPatternFlowIpv6NextHeaderCounter() + newObj := NewPatternFlowGtpExtensionNextExtensionHeader() data, err := proto.Marshal(obj.Msg()) if err != nil { return nil, err @@ -205563,539 +249172,423 @@ func (obj *patternFlowIpv6NextHeaderCounter) Clone() (PatternFlowIpv6NextHeaderC return newObj, nil } -// PatternFlowIpv6NextHeaderCounter is integer counter pattern -type PatternFlowIpv6NextHeaderCounter interface { +func (obj *patternFlowGtpExtensionNextExtensionHeader) setNil() { + obj.incrementHolder = nil + obj.decrementHolder = nil + obj.metricTagsHolder = nil + obj.validationErrors = nil + obj.warnings = nil + obj.constraints = make(map[string]map[string]Constraints) +} + +// PatternFlowGtpExtensionNextExtensionHeader is it states the type of the next extension, or 0 if no next extension exists. This permits chaining several next extension headers. +type PatternFlowGtpExtensionNextExtensionHeader interface { Validation - // Msg marshals PatternFlowIpv6NextHeaderCounter to protobuf object *otg.PatternFlowIpv6NextHeaderCounter + // Msg marshals PatternFlowGtpExtensionNextExtensionHeader to protobuf object *otg.PatternFlowGtpExtensionNextExtensionHeader // and doesn't set defaults - Msg() *otg.PatternFlowIpv6NextHeaderCounter - // SetMsg unmarshals PatternFlowIpv6NextHeaderCounter from protobuf object *otg.PatternFlowIpv6NextHeaderCounter + Msg() *otg.PatternFlowGtpExtensionNextExtensionHeader + // SetMsg unmarshals PatternFlowGtpExtensionNextExtensionHeader from protobuf object *otg.PatternFlowGtpExtensionNextExtensionHeader // and doesn't set defaults - SetMsg(*otg.PatternFlowIpv6NextHeaderCounter) PatternFlowIpv6NextHeaderCounter - // ToProto marshals PatternFlowIpv6NextHeaderCounter to protobuf object *otg.PatternFlowIpv6NextHeaderCounter - ToProto() (*otg.PatternFlowIpv6NextHeaderCounter, error) - // ToPbText marshals PatternFlowIpv6NextHeaderCounter to protobuf text + SetMsg(*otg.PatternFlowGtpExtensionNextExtensionHeader) PatternFlowGtpExtensionNextExtensionHeader + // ToProto marshals PatternFlowGtpExtensionNextExtensionHeader to protobuf object *otg.PatternFlowGtpExtensionNextExtensionHeader + ToProto() (*otg.PatternFlowGtpExtensionNextExtensionHeader, error) + // ToPbText marshals PatternFlowGtpExtensionNextExtensionHeader to protobuf text ToPbText() (string, error) - // ToYaml marshals PatternFlowIpv6NextHeaderCounter to YAML text + // ToYaml marshals PatternFlowGtpExtensionNextExtensionHeader to YAML text ToYaml() (string, error) - // ToJson marshals PatternFlowIpv6NextHeaderCounter to JSON text + // ToJson marshals PatternFlowGtpExtensionNextExtensionHeader to JSON text ToJson() (string, error) - // FromProto unmarshals PatternFlowIpv6NextHeaderCounter from protobuf object *otg.PatternFlowIpv6NextHeaderCounter - FromProto(msg *otg.PatternFlowIpv6NextHeaderCounter) (PatternFlowIpv6NextHeaderCounter, error) - // FromPbText unmarshals PatternFlowIpv6NextHeaderCounter from protobuf text + // FromProto unmarshals PatternFlowGtpExtensionNextExtensionHeader from protobuf object *otg.PatternFlowGtpExtensionNextExtensionHeader + FromProto(msg *otg.PatternFlowGtpExtensionNextExtensionHeader) (PatternFlowGtpExtensionNextExtensionHeader, error) + // FromPbText unmarshals PatternFlowGtpExtensionNextExtensionHeader from protobuf text FromPbText(value string) error - // FromYaml unmarshals PatternFlowIpv6NextHeaderCounter from YAML text + // FromYaml unmarshals PatternFlowGtpExtensionNextExtensionHeader from YAML text FromYaml(value string) error - // FromJson unmarshals PatternFlowIpv6NextHeaderCounter from JSON text + // FromJson unmarshals PatternFlowGtpExtensionNextExtensionHeader from JSON text FromJson(value string) error - // Validate validates PatternFlowIpv6NextHeaderCounter + // Validate validates PatternFlowGtpExtensionNextExtensionHeader Validate() error // A stringer function String() string // Clones the object - Clone() (PatternFlowIpv6NextHeaderCounter, error) + Clone() (PatternFlowGtpExtensionNextExtensionHeader, error) validateToAndFrom() error validateObj(vObj *validation, set_default bool) setDefault() - // Start returns uint32, set in PatternFlowIpv6NextHeaderCounter. - Start() uint32 - // SetStart assigns uint32 provided by user to PatternFlowIpv6NextHeaderCounter - SetStart(value uint32) PatternFlowIpv6NextHeaderCounter - // HasStart checks if Start has been set in PatternFlowIpv6NextHeaderCounter - HasStart() bool - // Step returns uint32, set in PatternFlowIpv6NextHeaderCounter. - Step() uint32 - // SetStep assigns uint32 provided by user to PatternFlowIpv6NextHeaderCounter - SetStep(value uint32) PatternFlowIpv6NextHeaderCounter - // HasStep checks if Step has been set in PatternFlowIpv6NextHeaderCounter - HasStep() bool - // Count returns uint32, set in PatternFlowIpv6NextHeaderCounter. - Count() uint32 - // SetCount assigns uint32 provided by user to PatternFlowIpv6NextHeaderCounter - SetCount(value uint32) PatternFlowIpv6NextHeaderCounter - // HasCount checks if Count has been set in PatternFlowIpv6NextHeaderCounter - HasCount() bool + // Choice returns PatternFlowGtpExtensionNextExtensionHeaderChoiceEnum, set in PatternFlowGtpExtensionNextExtensionHeader + Choice() PatternFlowGtpExtensionNextExtensionHeaderChoiceEnum + // SetChoice assigns PatternFlowGtpExtensionNextExtensionHeaderChoiceEnum provided by user to PatternFlowGtpExtensionNextExtensionHeader + SetChoice(value PatternFlowGtpExtensionNextExtensionHeaderChoiceEnum) PatternFlowGtpExtensionNextExtensionHeader + // HasChoice checks if Choice has been set in PatternFlowGtpExtensionNextExtensionHeader + HasChoice() bool + // Value returns uint32, set in PatternFlowGtpExtensionNextExtensionHeader. + Value() uint32 + // SetValue assigns uint32 provided by user to PatternFlowGtpExtensionNextExtensionHeader + SetValue(value uint32) PatternFlowGtpExtensionNextExtensionHeader + // HasValue checks if Value has been set in PatternFlowGtpExtensionNextExtensionHeader + HasValue() bool + // Values returns []uint32, set in PatternFlowGtpExtensionNextExtensionHeader. + Values() []uint32 + // SetValues assigns []uint32 provided by user to PatternFlowGtpExtensionNextExtensionHeader + SetValues(value []uint32) PatternFlowGtpExtensionNextExtensionHeader + // Increment returns PatternFlowGtpExtensionNextExtensionHeaderCounter, set in PatternFlowGtpExtensionNextExtensionHeader. + // PatternFlowGtpExtensionNextExtensionHeaderCounter is integer counter pattern + Increment() PatternFlowGtpExtensionNextExtensionHeaderCounter + // SetIncrement assigns PatternFlowGtpExtensionNextExtensionHeaderCounter provided by user to PatternFlowGtpExtensionNextExtensionHeader. + // PatternFlowGtpExtensionNextExtensionHeaderCounter is integer counter pattern + SetIncrement(value PatternFlowGtpExtensionNextExtensionHeaderCounter) PatternFlowGtpExtensionNextExtensionHeader + // HasIncrement checks if Increment has been set in PatternFlowGtpExtensionNextExtensionHeader + HasIncrement() bool + // Decrement returns PatternFlowGtpExtensionNextExtensionHeaderCounter, set in PatternFlowGtpExtensionNextExtensionHeader. + // PatternFlowGtpExtensionNextExtensionHeaderCounter is integer counter pattern + Decrement() PatternFlowGtpExtensionNextExtensionHeaderCounter + // SetDecrement assigns PatternFlowGtpExtensionNextExtensionHeaderCounter provided by user to PatternFlowGtpExtensionNextExtensionHeader. + // PatternFlowGtpExtensionNextExtensionHeaderCounter is integer counter pattern + SetDecrement(value PatternFlowGtpExtensionNextExtensionHeaderCounter) PatternFlowGtpExtensionNextExtensionHeader + // HasDecrement checks if Decrement has been set in PatternFlowGtpExtensionNextExtensionHeader + HasDecrement() bool + // MetricTags returns PatternFlowGtpExtensionNextExtensionHeaderPatternFlowGtpExtensionNextExtensionHeaderMetricTagIterIter, set in PatternFlowGtpExtensionNextExtensionHeader + MetricTags() PatternFlowGtpExtensionNextExtensionHeaderPatternFlowGtpExtensionNextExtensionHeaderMetricTagIter + setNil() } -// description is TBD -// Start returns a uint32 -func (obj *patternFlowIpv6NextHeaderCounter) Start() uint32 { - - return *obj.obj.Start +type PatternFlowGtpExtensionNextExtensionHeaderChoiceEnum string +// Enum of Choice on PatternFlowGtpExtensionNextExtensionHeader +var PatternFlowGtpExtensionNextExtensionHeaderChoice = struct { + VALUE PatternFlowGtpExtensionNextExtensionHeaderChoiceEnum + VALUES PatternFlowGtpExtensionNextExtensionHeaderChoiceEnum + INCREMENT PatternFlowGtpExtensionNextExtensionHeaderChoiceEnum + DECREMENT PatternFlowGtpExtensionNextExtensionHeaderChoiceEnum +}{ + VALUE: PatternFlowGtpExtensionNextExtensionHeaderChoiceEnum("value"), + VALUES: PatternFlowGtpExtensionNextExtensionHeaderChoiceEnum("values"), + INCREMENT: PatternFlowGtpExtensionNextExtensionHeaderChoiceEnum("increment"), + DECREMENT: PatternFlowGtpExtensionNextExtensionHeaderChoiceEnum("decrement"), } -// description is TBD -// Start returns a uint32 -func (obj *patternFlowIpv6NextHeaderCounter) HasStart() bool { - return obj.obj.Start != nil +func (obj *patternFlowGtpExtensionNextExtensionHeader) Choice() PatternFlowGtpExtensionNextExtensionHeaderChoiceEnum { + return PatternFlowGtpExtensionNextExtensionHeaderChoiceEnum(obj.obj.Choice.Enum().String()) } // description is TBD -// SetStart sets the uint32 value in the PatternFlowIpv6NextHeaderCounter object -func (obj *patternFlowIpv6NextHeaderCounter) SetStart(value uint32) PatternFlowIpv6NextHeaderCounter { - - obj.obj.Start = &value - return obj +// Choice returns a string +func (obj *patternFlowGtpExtensionNextExtensionHeader) HasChoice() bool { + return obj.obj.Choice != nil } -// description is TBD -// Step returns a uint32 -func (obj *patternFlowIpv6NextHeaderCounter) Step() uint32 { +func (obj *patternFlowGtpExtensionNextExtensionHeader) SetChoice(value PatternFlowGtpExtensionNextExtensionHeaderChoiceEnum) PatternFlowGtpExtensionNextExtensionHeader { + intValue, ok := otg.PatternFlowGtpExtensionNextExtensionHeader_Choice_Enum_value[string(value)] + if !ok { + obj.validationErrors = append(obj.validationErrors, fmt.Sprintf( + "%s is not a valid choice on PatternFlowGtpExtensionNextExtensionHeaderChoiceEnum", string(value))) + return obj + } + enumValue := otg.PatternFlowGtpExtensionNextExtensionHeader_Choice_Enum(intValue) + obj.obj.Choice = &enumValue + obj.obj.Decrement = nil + obj.decrementHolder = nil + obj.obj.Increment = nil + obj.incrementHolder = nil + obj.obj.Values = nil + obj.obj.Value = nil - return *obj.obj.Step + if value == PatternFlowGtpExtensionNextExtensionHeaderChoice.VALUE { + defaultValue := uint32(0) + obj.obj.Value = &defaultValue + } -} + if value == PatternFlowGtpExtensionNextExtensionHeaderChoice.VALUES { + defaultValue := []uint32{0} + obj.obj.Values = defaultValue + } -// description is TBD -// Step returns a uint32 -func (obj *patternFlowIpv6NextHeaderCounter) HasStep() bool { - return obj.obj.Step != nil -} + if value == PatternFlowGtpExtensionNextExtensionHeaderChoice.INCREMENT { + obj.obj.Increment = NewPatternFlowGtpExtensionNextExtensionHeaderCounter().Msg() + } -// description is TBD -// SetStep sets the uint32 value in the PatternFlowIpv6NextHeaderCounter object -func (obj *patternFlowIpv6NextHeaderCounter) SetStep(value uint32) PatternFlowIpv6NextHeaderCounter { + if value == PatternFlowGtpExtensionNextExtensionHeaderChoice.DECREMENT { + obj.obj.Decrement = NewPatternFlowGtpExtensionNextExtensionHeaderCounter().Msg() + } - obj.obj.Step = &value return obj } // description is TBD -// Count returns a uint32 -func (obj *patternFlowIpv6NextHeaderCounter) Count() uint32 { +// Value returns a uint32 +func (obj *patternFlowGtpExtensionNextExtensionHeader) Value() uint32 { - return *obj.obj.Count + if obj.obj.Value == nil { + obj.SetChoice(PatternFlowGtpExtensionNextExtensionHeaderChoice.VALUE) + } + + return *obj.obj.Value } // description is TBD -// Count returns a uint32 -func (obj *patternFlowIpv6NextHeaderCounter) HasCount() bool { - return obj.obj.Count != nil +// Value returns a uint32 +func (obj *patternFlowGtpExtensionNextExtensionHeader) HasValue() bool { + return obj.obj.Value != nil } // description is TBD -// SetCount sets the uint32 value in the PatternFlowIpv6NextHeaderCounter object -func (obj *patternFlowIpv6NextHeaderCounter) SetCount(value uint32) PatternFlowIpv6NextHeaderCounter { - - obj.obj.Count = &value +// SetValue sets the uint32 value in the PatternFlowGtpExtensionNextExtensionHeader object +func (obj *patternFlowGtpExtensionNextExtensionHeader) SetValue(value uint32) PatternFlowGtpExtensionNextExtensionHeader { + obj.SetChoice(PatternFlowGtpExtensionNextExtensionHeaderChoice.VALUE) + obj.obj.Value = &value return obj } -func (obj *patternFlowIpv6NextHeaderCounter) validateObj(vObj *validation, set_default bool) { - if set_default { - obj.setDefault() - } - - if obj.obj.Start != nil { - - if *obj.obj.Start > 255 { - vObj.validationErrors = append( - vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowIpv6NextHeaderCounter.Start <= 255 but Got %d", *obj.obj.Start)) - } - - } - - if obj.obj.Step != nil { - - if *obj.obj.Step > 255 { - vObj.validationErrors = append( - vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowIpv6NextHeaderCounter.Step <= 255 but Got %d", *obj.obj.Step)) - } - +// description is TBD +// Values returns a []uint32 +func (obj *patternFlowGtpExtensionNextExtensionHeader) Values() []uint32 { + if obj.obj.Values == nil { + obj.SetValues([]uint32{0}) } + return obj.obj.Values +} - if obj.obj.Count != nil { - - if *obj.obj.Count > 255 { - vObj.validationErrors = append( - vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowIpv6NextHeaderCounter.Count <= 255 but Got %d", *obj.obj.Count)) - } - +// description is TBD +// SetValues sets the []uint32 value in the PatternFlowGtpExtensionNextExtensionHeader object +func (obj *patternFlowGtpExtensionNextExtensionHeader) SetValues(value []uint32) PatternFlowGtpExtensionNextExtensionHeader { + obj.SetChoice(PatternFlowGtpExtensionNextExtensionHeaderChoice.VALUES) + if obj.obj.Values == nil { + obj.obj.Values = make([]uint32, 0) } + obj.obj.Values = value + return obj } -func (obj *patternFlowIpv6NextHeaderCounter) setDefault() { - if obj.obj.Start == nil { - obj.SetStart(59) - } - if obj.obj.Step == nil { - obj.SetStep(1) +// description is TBD +// Increment returns a PatternFlowGtpExtensionNextExtensionHeaderCounter +func (obj *patternFlowGtpExtensionNextExtensionHeader) Increment() PatternFlowGtpExtensionNextExtensionHeaderCounter { + if obj.obj.Increment == nil { + obj.SetChoice(PatternFlowGtpExtensionNextExtensionHeaderChoice.INCREMENT) } - if obj.obj.Count == nil { - obj.SetCount(1) + if obj.incrementHolder == nil { + obj.incrementHolder = &patternFlowGtpExtensionNextExtensionHeaderCounter{obj: obj.obj.Increment} } - -} - -// ***** PatternFlowIpv6NextHeaderMetricTag ***** -type patternFlowIpv6NextHeaderMetricTag struct { - validation - obj *otg.PatternFlowIpv6NextHeaderMetricTag -} - -func NewPatternFlowIpv6NextHeaderMetricTag() PatternFlowIpv6NextHeaderMetricTag { - obj := patternFlowIpv6NextHeaderMetricTag{obj: &otg.PatternFlowIpv6NextHeaderMetricTag{}} - obj.setDefault() - return &obj + return obj.incrementHolder } -func (obj *patternFlowIpv6NextHeaderMetricTag) Msg() *otg.PatternFlowIpv6NextHeaderMetricTag { - return obj.obj +// description is TBD +// Increment returns a PatternFlowGtpExtensionNextExtensionHeaderCounter +func (obj *patternFlowGtpExtensionNextExtensionHeader) HasIncrement() bool { + return obj.obj.Increment != nil } -func (obj *patternFlowIpv6NextHeaderMetricTag) SetMsg(msg *otg.PatternFlowIpv6NextHeaderMetricTag) PatternFlowIpv6NextHeaderMetricTag { +// description is TBD +// SetIncrement sets the PatternFlowGtpExtensionNextExtensionHeaderCounter value in the PatternFlowGtpExtensionNextExtensionHeader object +func (obj *patternFlowGtpExtensionNextExtensionHeader) SetIncrement(value PatternFlowGtpExtensionNextExtensionHeaderCounter) PatternFlowGtpExtensionNextExtensionHeader { + obj.SetChoice(PatternFlowGtpExtensionNextExtensionHeaderChoice.INCREMENT) + obj.incrementHolder = nil + obj.obj.Increment = value.Msg() - proto.Merge(obj.obj, msg) return obj } -func (obj *patternFlowIpv6NextHeaderMetricTag) ToProto() (*otg.PatternFlowIpv6NextHeaderMetricTag, error) { - err := obj.validateToAndFrom() - if err != nil { - return nil, err - } - return obj.Msg(), nil -} - -func (obj *patternFlowIpv6NextHeaderMetricTag) FromProto(msg *otg.PatternFlowIpv6NextHeaderMetricTag) (PatternFlowIpv6NextHeaderMetricTag, error) { - newObj := obj.SetMsg(msg) - err := newObj.validateToAndFrom() - if err != nil { - return nil, err - } - return newObj, nil -} - -func (obj *patternFlowIpv6NextHeaderMetricTag) ToPbText() (string, error) { - vErr := obj.validateToAndFrom() - if vErr != nil { - return "", vErr - } - protoMarshal, err := proto.Marshal(obj.Msg()) - if err != nil { - return "", err - } - return string(protoMarshal), nil -} - -func (obj *patternFlowIpv6NextHeaderMetricTag) FromPbText(value string) error { - retObj := proto.Unmarshal([]byte(value), obj.Msg()) - if retObj != nil { - return retObj +// description is TBD +// Decrement returns a PatternFlowGtpExtensionNextExtensionHeaderCounter +func (obj *patternFlowGtpExtensionNextExtensionHeader) Decrement() PatternFlowGtpExtensionNextExtensionHeaderCounter { + if obj.obj.Decrement == nil { + obj.SetChoice(PatternFlowGtpExtensionNextExtensionHeaderChoice.DECREMENT) } - - vErr := obj.validateToAndFrom() - if vErr != nil { - return vErr + if obj.decrementHolder == nil { + obj.decrementHolder = &patternFlowGtpExtensionNextExtensionHeaderCounter{obj: obj.obj.Decrement} } - return retObj + return obj.decrementHolder } -func (obj *patternFlowIpv6NextHeaderMetricTag) ToYaml() (string, error) { - vErr := obj.validateToAndFrom() - if vErr != nil { - return "", vErr - } - opts := protojson.MarshalOptions{ - UseProtoNames: true, - AllowPartial: true, - EmitUnpopulated: false, - } - data, err := opts.Marshal(obj.Msg()) - if err != nil { - return "", err - } - data, err = yaml.JSONToYAML(data) - if err != nil { - return "", err - } - return string(data), nil +// description is TBD +// Decrement returns a PatternFlowGtpExtensionNextExtensionHeaderCounter +func (obj *patternFlowGtpExtensionNextExtensionHeader) HasDecrement() bool { + return obj.obj.Decrement != nil } -func (obj *patternFlowIpv6NextHeaderMetricTag) FromYaml(value string) error { - if value == "" { - value = "{}" - } - data, err := yaml.YAMLToJSON([]byte(value)) - if err != nil { - return err - } - opts := protojson.UnmarshalOptions{ - AllowPartial: true, - DiscardUnknown: false, - } - uError := opts.Unmarshal([]byte(data), obj.Msg()) - if uError != nil { - return fmt.Errorf("unmarshal error %s", strings.Replace( - uError.Error(), "\u00a0", " ", -1)[7:]) - } +// description is TBD +// SetDecrement sets the PatternFlowGtpExtensionNextExtensionHeaderCounter value in the PatternFlowGtpExtensionNextExtensionHeader object +func (obj *patternFlowGtpExtensionNextExtensionHeader) SetDecrement(value PatternFlowGtpExtensionNextExtensionHeaderCounter) PatternFlowGtpExtensionNextExtensionHeader { + obj.SetChoice(PatternFlowGtpExtensionNextExtensionHeaderChoice.DECREMENT) + obj.decrementHolder = nil + obj.obj.Decrement = value.Msg() - vErr := obj.validateToAndFrom() - if vErr != nil { - return vErr - } - return nil + return obj } -func (obj *patternFlowIpv6NextHeaderMetricTag) ToJson() (string, error) { - vErr := obj.validateToAndFrom() - if vErr != nil { - return "", vErr - } - opts := protojson.MarshalOptions{ - UseProtoNames: true, - AllowPartial: true, - EmitUnpopulated: false, - Indent: " ", +// One or more metric tags can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. +// MetricTags returns a []PatternFlowGtpExtensionNextExtensionHeaderMetricTag +func (obj *patternFlowGtpExtensionNextExtensionHeader) MetricTags() PatternFlowGtpExtensionNextExtensionHeaderPatternFlowGtpExtensionNextExtensionHeaderMetricTagIter { + if len(obj.obj.MetricTags) == 0 { + obj.obj.MetricTags = []*otg.PatternFlowGtpExtensionNextExtensionHeaderMetricTag{} } - data, err := opts.Marshal(obj.Msg()) - if err != nil { - return "", err + if obj.metricTagsHolder == nil { + obj.metricTagsHolder = newPatternFlowGtpExtensionNextExtensionHeaderPatternFlowGtpExtensionNextExtensionHeaderMetricTagIter(&obj.obj.MetricTags).setMsg(obj) } - return string(data), nil + return obj.metricTagsHolder } -func (obj *patternFlowIpv6NextHeaderMetricTag) FromJson(value string) error { - opts := protojson.UnmarshalOptions{ - AllowPartial: true, - DiscardUnknown: false, - } - if value == "" { - value = "{}" - } - uError := opts.Unmarshal([]byte(value), obj.Msg()) - if uError != nil { - return fmt.Errorf("unmarshal error %s", strings.Replace( - uError.Error(), "\u00a0", " ", -1)[7:]) - } - - err := obj.validateToAndFrom() - if err != nil { - return err - } - return nil +type patternFlowGtpExtensionNextExtensionHeaderPatternFlowGtpExtensionNextExtensionHeaderMetricTagIter struct { + obj *patternFlowGtpExtensionNextExtensionHeader + patternFlowGtpExtensionNextExtensionHeaderMetricTagSlice []PatternFlowGtpExtensionNextExtensionHeaderMetricTag + fieldPtr *[]*otg.PatternFlowGtpExtensionNextExtensionHeaderMetricTag } -func (obj *patternFlowIpv6NextHeaderMetricTag) validateToAndFrom() error { - // emptyVars() - obj.validateObj(&obj.validation, true) - return obj.validationResult() +func newPatternFlowGtpExtensionNextExtensionHeaderPatternFlowGtpExtensionNextExtensionHeaderMetricTagIter(ptr *[]*otg.PatternFlowGtpExtensionNextExtensionHeaderMetricTag) PatternFlowGtpExtensionNextExtensionHeaderPatternFlowGtpExtensionNextExtensionHeaderMetricTagIter { + return &patternFlowGtpExtensionNextExtensionHeaderPatternFlowGtpExtensionNextExtensionHeaderMetricTagIter{fieldPtr: ptr} } -func (obj *patternFlowIpv6NextHeaderMetricTag) Validate() error { - // emptyVars() - obj.validateObj(&obj.validation, false) - return obj.validationResult() +type PatternFlowGtpExtensionNextExtensionHeaderPatternFlowGtpExtensionNextExtensionHeaderMetricTagIter interface { + setMsg(*patternFlowGtpExtensionNextExtensionHeader) PatternFlowGtpExtensionNextExtensionHeaderPatternFlowGtpExtensionNextExtensionHeaderMetricTagIter + Items() []PatternFlowGtpExtensionNextExtensionHeaderMetricTag + Add() PatternFlowGtpExtensionNextExtensionHeaderMetricTag + Append(items ...PatternFlowGtpExtensionNextExtensionHeaderMetricTag) PatternFlowGtpExtensionNextExtensionHeaderPatternFlowGtpExtensionNextExtensionHeaderMetricTagIter + Set(index int, newObj PatternFlowGtpExtensionNextExtensionHeaderMetricTag) PatternFlowGtpExtensionNextExtensionHeaderPatternFlowGtpExtensionNextExtensionHeaderMetricTagIter + Clear() PatternFlowGtpExtensionNextExtensionHeaderPatternFlowGtpExtensionNextExtensionHeaderMetricTagIter + clearHolderSlice() PatternFlowGtpExtensionNextExtensionHeaderPatternFlowGtpExtensionNextExtensionHeaderMetricTagIter + appendHolderSlice(item PatternFlowGtpExtensionNextExtensionHeaderMetricTag) PatternFlowGtpExtensionNextExtensionHeaderPatternFlowGtpExtensionNextExtensionHeaderMetricTagIter } -func (obj *patternFlowIpv6NextHeaderMetricTag) String() string { - str, err := obj.ToYaml() - if err != nil { - return err.Error() +func (obj *patternFlowGtpExtensionNextExtensionHeaderPatternFlowGtpExtensionNextExtensionHeaderMetricTagIter) setMsg(msg *patternFlowGtpExtensionNextExtensionHeader) PatternFlowGtpExtensionNextExtensionHeaderPatternFlowGtpExtensionNextExtensionHeaderMetricTagIter { + obj.clearHolderSlice() + for _, val := range *obj.fieldPtr { + obj.appendHolderSlice(&patternFlowGtpExtensionNextExtensionHeaderMetricTag{obj: val}) } - return str + obj.obj = msg + return obj } -func (obj *patternFlowIpv6NextHeaderMetricTag) Clone() (PatternFlowIpv6NextHeaderMetricTag, error) { - vErr := obj.Validate() - if vErr != nil { - return nil, vErr - } - newObj := NewPatternFlowIpv6NextHeaderMetricTag() - data, err := proto.Marshal(obj.Msg()) - if err != nil { - return nil, err - } - pbErr := proto.Unmarshal(data, newObj.Msg()) - if pbErr != nil { - return nil, pbErr - } - return newObj, nil +func (obj *patternFlowGtpExtensionNextExtensionHeaderPatternFlowGtpExtensionNextExtensionHeaderMetricTagIter) Items() []PatternFlowGtpExtensionNextExtensionHeaderMetricTag { + return obj.patternFlowGtpExtensionNextExtensionHeaderMetricTagSlice } -// PatternFlowIpv6NextHeaderMetricTag is metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. -type PatternFlowIpv6NextHeaderMetricTag interface { - Validation - // Msg marshals PatternFlowIpv6NextHeaderMetricTag to protobuf object *otg.PatternFlowIpv6NextHeaderMetricTag - // and doesn't set defaults - Msg() *otg.PatternFlowIpv6NextHeaderMetricTag - // SetMsg unmarshals PatternFlowIpv6NextHeaderMetricTag from protobuf object *otg.PatternFlowIpv6NextHeaderMetricTag - // and doesn't set defaults - SetMsg(*otg.PatternFlowIpv6NextHeaderMetricTag) PatternFlowIpv6NextHeaderMetricTag - // ToProto marshals PatternFlowIpv6NextHeaderMetricTag to protobuf object *otg.PatternFlowIpv6NextHeaderMetricTag - ToProto() (*otg.PatternFlowIpv6NextHeaderMetricTag, error) - // ToPbText marshals PatternFlowIpv6NextHeaderMetricTag to protobuf text - ToPbText() (string, error) - // ToYaml marshals PatternFlowIpv6NextHeaderMetricTag to YAML text - ToYaml() (string, error) - // ToJson marshals PatternFlowIpv6NextHeaderMetricTag to JSON text - ToJson() (string, error) - // FromProto unmarshals PatternFlowIpv6NextHeaderMetricTag from protobuf object *otg.PatternFlowIpv6NextHeaderMetricTag - FromProto(msg *otg.PatternFlowIpv6NextHeaderMetricTag) (PatternFlowIpv6NextHeaderMetricTag, error) - // FromPbText unmarshals PatternFlowIpv6NextHeaderMetricTag from protobuf text - FromPbText(value string) error - // FromYaml unmarshals PatternFlowIpv6NextHeaderMetricTag from YAML text - FromYaml(value string) error - // FromJson unmarshals PatternFlowIpv6NextHeaderMetricTag from JSON text - FromJson(value string) error - // Validate validates PatternFlowIpv6NextHeaderMetricTag - Validate() error - // A stringer function - String() string - // Clones the object - Clone() (PatternFlowIpv6NextHeaderMetricTag, error) - validateToAndFrom() error - validateObj(vObj *validation, set_default bool) - setDefault() - // Name returns string, set in PatternFlowIpv6NextHeaderMetricTag. - Name() string - // SetName assigns string provided by user to PatternFlowIpv6NextHeaderMetricTag - SetName(value string) PatternFlowIpv6NextHeaderMetricTag - // Offset returns uint32, set in PatternFlowIpv6NextHeaderMetricTag. - Offset() uint32 - // SetOffset assigns uint32 provided by user to PatternFlowIpv6NextHeaderMetricTag - SetOffset(value uint32) PatternFlowIpv6NextHeaderMetricTag - // HasOffset checks if Offset has been set in PatternFlowIpv6NextHeaderMetricTag - HasOffset() bool - // Length returns uint32, set in PatternFlowIpv6NextHeaderMetricTag. - Length() uint32 - // SetLength assigns uint32 provided by user to PatternFlowIpv6NextHeaderMetricTag - SetLength(value uint32) PatternFlowIpv6NextHeaderMetricTag - // HasLength checks if Length has been set in PatternFlowIpv6NextHeaderMetricTag - HasLength() bool +func (obj *patternFlowGtpExtensionNextExtensionHeaderPatternFlowGtpExtensionNextExtensionHeaderMetricTagIter) Add() PatternFlowGtpExtensionNextExtensionHeaderMetricTag { + newObj := &otg.PatternFlowGtpExtensionNextExtensionHeaderMetricTag{} + *obj.fieldPtr = append(*obj.fieldPtr, newObj) + newLibObj := &patternFlowGtpExtensionNextExtensionHeaderMetricTag{obj: newObj} + newLibObj.setDefault() + obj.patternFlowGtpExtensionNextExtensionHeaderMetricTagSlice = append(obj.patternFlowGtpExtensionNextExtensionHeaderMetricTagSlice, newLibObj) + return newLibObj } -// Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field -// Name returns a string -func (obj *patternFlowIpv6NextHeaderMetricTag) Name() string { - - return *obj.obj.Name - +func (obj *patternFlowGtpExtensionNextExtensionHeaderPatternFlowGtpExtensionNextExtensionHeaderMetricTagIter) Append(items ...PatternFlowGtpExtensionNextExtensionHeaderMetricTag) PatternFlowGtpExtensionNextExtensionHeaderPatternFlowGtpExtensionNextExtensionHeaderMetricTagIter { + for _, item := range items { + newObj := item.Msg() + *obj.fieldPtr = append(*obj.fieldPtr, newObj) + obj.patternFlowGtpExtensionNextExtensionHeaderMetricTagSlice = append(obj.patternFlowGtpExtensionNextExtensionHeaderMetricTagSlice, item) + } + return obj } -// Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field -// SetName sets the string value in the PatternFlowIpv6NextHeaderMetricTag object -func (obj *patternFlowIpv6NextHeaderMetricTag) SetName(value string) PatternFlowIpv6NextHeaderMetricTag { - - obj.obj.Name = &value +func (obj *patternFlowGtpExtensionNextExtensionHeaderPatternFlowGtpExtensionNextExtensionHeaderMetricTagIter) Set(index int, newObj PatternFlowGtpExtensionNextExtensionHeaderMetricTag) PatternFlowGtpExtensionNextExtensionHeaderPatternFlowGtpExtensionNextExtensionHeaderMetricTagIter { + (*obj.fieldPtr)[index] = newObj.Msg() + obj.patternFlowGtpExtensionNextExtensionHeaderMetricTagSlice[index] = newObj return obj } - -// Offset in bits relative to start of corresponding header field -// Offset returns a uint32 -func (obj *patternFlowIpv6NextHeaderMetricTag) Offset() uint32 { - - return *obj.obj.Offset - +func (obj *patternFlowGtpExtensionNextExtensionHeaderPatternFlowGtpExtensionNextExtensionHeaderMetricTagIter) Clear() PatternFlowGtpExtensionNextExtensionHeaderPatternFlowGtpExtensionNextExtensionHeaderMetricTagIter { + if len(*obj.fieldPtr) > 0 { + *obj.fieldPtr = []*otg.PatternFlowGtpExtensionNextExtensionHeaderMetricTag{} + obj.patternFlowGtpExtensionNextExtensionHeaderMetricTagSlice = []PatternFlowGtpExtensionNextExtensionHeaderMetricTag{} + } + return obj } - -// Offset in bits relative to start of corresponding header field -// Offset returns a uint32 -func (obj *patternFlowIpv6NextHeaderMetricTag) HasOffset() bool { - return obj.obj.Offset != nil +func (obj *patternFlowGtpExtensionNextExtensionHeaderPatternFlowGtpExtensionNextExtensionHeaderMetricTagIter) clearHolderSlice() PatternFlowGtpExtensionNextExtensionHeaderPatternFlowGtpExtensionNextExtensionHeaderMetricTagIter { + if len(obj.patternFlowGtpExtensionNextExtensionHeaderMetricTagSlice) > 0 { + obj.patternFlowGtpExtensionNextExtensionHeaderMetricTagSlice = []PatternFlowGtpExtensionNextExtensionHeaderMetricTag{} + } + return obj } - -// Offset in bits relative to start of corresponding header field -// SetOffset sets the uint32 value in the PatternFlowIpv6NextHeaderMetricTag object -func (obj *patternFlowIpv6NextHeaderMetricTag) SetOffset(value uint32) PatternFlowIpv6NextHeaderMetricTag { - - obj.obj.Offset = &value +func (obj *patternFlowGtpExtensionNextExtensionHeaderPatternFlowGtpExtensionNextExtensionHeaderMetricTagIter) appendHolderSlice(item PatternFlowGtpExtensionNextExtensionHeaderMetricTag) PatternFlowGtpExtensionNextExtensionHeaderPatternFlowGtpExtensionNextExtensionHeaderMetricTagIter { + obj.patternFlowGtpExtensionNextExtensionHeaderMetricTagSlice = append(obj.patternFlowGtpExtensionNextExtensionHeaderMetricTagSlice, item) return obj } -// Number of bits to track for metrics starting from configured offset of corresponding header field -// Length returns a uint32 -func (obj *patternFlowIpv6NextHeaderMetricTag) Length() uint32 { +func (obj *patternFlowGtpExtensionNextExtensionHeader) validateObj(vObj *validation, set_default bool) { + if set_default { + obj.setDefault() + } - return *obj.obj.Length + if obj.obj.Value != nil { -} + if *obj.obj.Value > 255 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("0 <= PatternFlowGtpExtensionNextExtensionHeader.Value <= 255 but Got %d", *obj.obj.Value)) + } -// Number of bits to track for metrics starting from configured offset of corresponding header field -// Length returns a uint32 -func (obj *patternFlowIpv6NextHeaderMetricTag) HasLength() bool { - return obj.obj.Length != nil -} + } -// Number of bits to track for metrics starting from configured offset of corresponding header field -// SetLength sets the uint32 value in the PatternFlowIpv6NextHeaderMetricTag object -func (obj *patternFlowIpv6NextHeaderMetricTag) SetLength(value uint32) PatternFlowIpv6NextHeaderMetricTag { + if obj.obj.Values != nil { - obj.obj.Length = &value - return obj -} + for _, item := range obj.obj.Values { + if item > 255 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("min(uint32) <= PatternFlowGtpExtensionNextExtensionHeader.Values <= 255 but Got %d", item)) + } -func (obj *patternFlowIpv6NextHeaderMetricTag) validateObj(vObj *validation, set_default bool) { - if set_default { - obj.setDefault() - } + } - // Name is required - if obj.obj.Name == nil { - vObj.validationErrors = append(vObj.validationErrors, "Name is required field on interface PatternFlowIpv6NextHeaderMetricTag") } - if obj.obj.Offset != nil { + if obj.obj.Increment != nil { - if *obj.obj.Offset > 7 { - vObj.validationErrors = append( - vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowIpv6NextHeaderMetricTag.Offset <= 7 but Got %d", *obj.obj.Offset)) - } + obj.Increment().validateObj(vObj, set_default) + } + + if obj.obj.Decrement != nil { + obj.Decrement().validateObj(vObj, set_default) } - if obj.obj.Length != nil { + if len(obj.obj.MetricTags) != 0 { - if *obj.obj.Length < 1 || *obj.obj.Length > 8 { - vObj.validationErrors = append( - vObj.validationErrors, - fmt.Sprintf("1 <= PatternFlowIpv6NextHeaderMetricTag.Length <= 8 but Got %d", *obj.obj.Length)) + if set_default { + obj.MetricTags().clearHolderSlice() + for _, item := range obj.obj.MetricTags { + obj.MetricTags().appendHolderSlice(&patternFlowGtpExtensionNextExtensionHeaderMetricTag{obj: item}) + } + } + for _, item := range obj.MetricTags().Items() { + item.validateObj(vObj, set_default) } } } -func (obj *patternFlowIpv6NextHeaderMetricTag) setDefault() { - if obj.obj.Offset == nil { - obj.SetOffset(0) - } - if obj.obj.Length == nil { - obj.SetLength(8) +func (obj *patternFlowGtpExtensionNextExtensionHeader) setDefault() { + if obj.obj.Choice == nil { + obj.SetChoice(PatternFlowGtpExtensionNextExtensionHeaderChoice.VALUE) + } } -// ***** PatternFlowIpv6HopLimitCounter ***** -type patternFlowIpv6HopLimitCounter struct { +// ***** PatternFlowGtpv2VersionCounter ***** +type patternFlowGtpv2VersionCounter struct { validation - obj *otg.PatternFlowIpv6HopLimitCounter + obj *otg.PatternFlowGtpv2VersionCounter } -func NewPatternFlowIpv6HopLimitCounter() PatternFlowIpv6HopLimitCounter { - obj := patternFlowIpv6HopLimitCounter{obj: &otg.PatternFlowIpv6HopLimitCounter{}} +func NewPatternFlowGtpv2VersionCounter() PatternFlowGtpv2VersionCounter { + obj := patternFlowGtpv2VersionCounter{obj: &otg.PatternFlowGtpv2VersionCounter{}} obj.setDefault() return &obj } -func (obj *patternFlowIpv6HopLimitCounter) Msg() *otg.PatternFlowIpv6HopLimitCounter { +func (obj *patternFlowGtpv2VersionCounter) Msg() *otg.PatternFlowGtpv2VersionCounter { return obj.obj } -func (obj *patternFlowIpv6HopLimitCounter) SetMsg(msg *otg.PatternFlowIpv6HopLimitCounter) PatternFlowIpv6HopLimitCounter { +func (obj *patternFlowGtpv2VersionCounter) SetMsg(msg *otg.PatternFlowGtpv2VersionCounter) PatternFlowGtpv2VersionCounter { proto.Merge(obj.obj, msg) return obj } -func (obj *patternFlowIpv6HopLimitCounter) ToProto() (*otg.PatternFlowIpv6HopLimitCounter, error) { +func (obj *patternFlowGtpv2VersionCounter) ToProto() (*otg.PatternFlowGtpv2VersionCounter, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -206103,7 +249596,7 @@ func (obj *patternFlowIpv6HopLimitCounter) ToProto() (*otg.PatternFlowIpv6HopLim return obj.Msg(), nil } -func (obj *patternFlowIpv6HopLimitCounter) FromProto(msg *otg.PatternFlowIpv6HopLimitCounter) (PatternFlowIpv6HopLimitCounter, error) { +func (obj *patternFlowGtpv2VersionCounter) FromProto(msg *otg.PatternFlowGtpv2VersionCounter) (PatternFlowGtpv2VersionCounter, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -206112,7 +249605,7 @@ func (obj *patternFlowIpv6HopLimitCounter) FromProto(msg *otg.PatternFlowIpv6Hop return newObj, nil } -func (obj *patternFlowIpv6HopLimitCounter) ToPbText() (string, error) { +func (obj *patternFlowGtpv2VersionCounter) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -206124,7 +249617,7 @@ func (obj *patternFlowIpv6HopLimitCounter) ToPbText() (string, error) { return string(protoMarshal), nil } -func (obj *patternFlowIpv6HopLimitCounter) FromPbText(value string) error { +func (obj *patternFlowGtpv2VersionCounter) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj @@ -206137,7 +249630,7 @@ func (obj *patternFlowIpv6HopLimitCounter) FromPbText(value string) error { return retObj } -func (obj *patternFlowIpv6HopLimitCounter) ToYaml() (string, error) { +func (obj *patternFlowGtpv2VersionCounter) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -206158,7 +249651,7 @@ func (obj *patternFlowIpv6HopLimitCounter) ToYaml() (string, error) { return string(data), nil } -func (obj *patternFlowIpv6HopLimitCounter) FromYaml(value string) error { +func (obj *patternFlowGtpv2VersionCounter) FromYaml(value string) error { if value == "" { value = "{}" } @@ -206183,7 +249676,7 @@ func (obj *patternFlowIpv6HopLimitCounter) FromYaml(value string) error { return nil } -func (obj *patternFlowIpv6HopLimitCounter) ToJson() (string, error) { +func (obj *patternFlowGtpv2VersionCounter) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -206201,7 +249694,7 @@ func (obj *patternFlowIpv6HopLimitCounter) ToJson() (string, error) { return string(data), nil } -func (obj *patternFlowIpv6HopLimitCounter) FromJson(value string) error { +func (obj *patternFlowGtpv2VersionCounter) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -206222,19 +249715,19 @@ func (obj *patternFlowIpv6HopLimitCounter) FromJson(value string) error { return nil } -func (obj *patternFlowIpv6HopLimitCounter) validateToAndFrom() error { +func (obj *patternFlowGtpv2VersionCounter) validateToAndFrom() error { // emptyVars() obj.validateObj(&obj.validation, true) return obj.validationResult() } -func (obj *patternFlowIpv6HopLimitCounter) Validate() error { +func (obj *patternFlowGtpv2VersionCounter) Validate() error { // emptyVars() obj.validateObj(&obj.validation, false) return obj.validationResult() } -func (obj *patternFlowIpv6HopLimitCounter) String() string { +func (obj *patternFlowGtpv2VersionCounter) String() string { str, err := obj.ToYaml() if err != nil { return err.Error() @@ -206242,12 +249735,12 @@ func (obj *patternFlowIpv6HopLimitCounter) String() string { return str } -func (obj *patternFlowIpv6HopLimitCounter) Clone() (PatternFlowIpv6HopLimitCounter, error) { +func (obj *patternFlowGtpv2VersionCounter) Clone() (PatternFlowGtpv2VersionCounter, error) { vErr := obj.Validate() if vErr != nil { return nil, vErr } - newObj := NewPatternFlowIpv6HopLimitCounter() + newObj := NewPatternFlowGtpv2VersionCounter() data, err := proto.Marshal(obj.Msg()) if err != nil { return nil, err @@ -206259,63 +249752,63 @@ func (obj *patternFlowIpv6HopLimitCounter) Clone() (PatternFlowIpv6HopLimitCount return newObj, nil } -// PatternFlowIpv6HopLimitCounter is integer counter pattern -type PatternFlowIpv6HopLimitCounter interface { +// PatternFlowGtpv2VersionCounter is integer counter pattern +type PatternFlowGtpv2VersionCounter interface { Validation - // Msg marshals PatternFlowIpv6HopLimitCounter to protobuf object *otg.PatternFlowIpv6HopLimitCounter + // Msg marshals PatternFlowGtpv2VersionCounter to protobuf object *otg.PatternFlowGtpv2VersionCounter // and doesn't set defaults - Msg() *otg.PatternFlowIpv6HopLimitCounter - // SetMsg unmarshals PatternFlowIpv6HopLimitCounter from protobuf object *otg.PatternFlowIpv6HopLimitCounter + Msg() *otg.PatternFlowGtpv2VersionCounter + // SetMsg unmarshals PatternFlowGtpv2VersionCounter from protobuf object *otg.PatternFlowGtpv2VersionCounter // and doesn't set defaults - SetMsg(*otg.PatternFlowIpv6HopLimitCounter) PatternFlowIpv6HopLimitCounter - // ToProto marshals PatternFlowIpv6HopLimitCounter to protobuf object *otg.PatternFlowIpv6HopLimitCounter - ToProto() (*otg.PatternFlowIpv6HopLimitCounter, error) - // ToPbText marshals PatternFlowIpv6HopLimitCounter to protobuf text + SetMsg(*otg.PatternFlowGtpv2VersionCounter) PatternFlowGtpv2VersionCounter + // ToProto marshals PatternFlowGtpv2VersionCounter to protobuf object *otg.PatternFlowGtpv2VersionCounter + ToProto() (*otg.PatternFlowGtpv2VersionCounter, error) + // ToPbText marshals PatternFlowGtpv2VersionCounter to protobuf text ToPbText() (string, error) - // ToYaml marshals PatternFlowIpv6HopLimitCounter to YAML text + // ToYaml marshals PatternFlowGtpv2VersionCounter to YAML text ToYaml() (string, error) - // ToJson marshals PatternFlowIpv6HopLimitCounter to JSON text + // ToJson marshals PatternFlowGtpv2VersionCounter to JSON text ToJson() (string, error) - // FromProto unmarshals PatternFlowIpv6HopLimitCounter from protobuf object *otg.PatternFlowIpv6HopLimitCounter - FromProto(msg *otg.PatternFlowIpv6HopLimitCounter) (PatternFlowIpv6HopLimitCounter, error) - // FromPbText unmarshals PatternFlowIpv6HopLimitCounter from protobuf text + // FromProto unmarshals PatternFlowGtpv2VersionCounter from protobuf object *otg.PatternFlowGtpv2VersionCounter + FromProto(msg *otg.PatternFlowGtpv2VersionCounter) (PatternFlowGtpv2VersionCounter, error) + // FromPbText unmarshals PatternFlowGtpv2VersionCounter from protobuf text FromPbText(value string) error - // FromYaml unmarshals PatternFlowIpv6HopLimitCounter from YAML text + // FromYaml unmarshals PatternFlowGtpv2VersionCounter from YAML text FromYaml(value string) error - // FromJson unmarshals PatternFlowIpv6HopLimitCounter from JSON text + // FromJson unmarshals PatternFlowGtpv2VersionCounter from JSON text FromJson(value string) error - // Validate validates PatternFlowIpv6HopLimitCounter + // Validate validates PatternFlowGtpv2VersionCounter Validate() error // A stringer function String() string // Clones the object - Clone() (PatternFlowIpv6HopLimitCounter, error) + Clone() (PatternFlowGtpv2VersionCounter, error) validateToAndFrom() error validateObj(vObj *validation, set_default bool) setDefault() - // Start returns uint32, set in PatternFlowIpv6HopLimitCounter. + // Start returns uint32, set in PatternFlowGtpv2VersionCounter. Start() uint32 - // SetStart assigns uint32 provided by user to PatternFlowIpv6HopLimitCounter - SetStart(value uint32) PatternFlowIpv6HopLimitCounter - // HasStart checks if Start has been set in PatternFlowIpv6HopLimitCounter + // SetStart assigns uint32 provided by user to PatternFlowGtpv2VersionCounter + SetStart(value uint32) PatternFlowGtpv2VersionCounter + // HasStart checks if Start has been set in PatternFlowGtpv2VersionCounter HasStart() bool - // Step returns uint32, set in PatternFlowIpv6HopLimitCounter. + // Step returns uint32, set in PatternFlowGtpv2VersionCounter. Step() uint32 - // SetStep assigns uint32 provided by user to PatternFlowIpv6HopLimitCounter - SetStep(value uint32) PatternFlowIpv6HopLimitCounter - // HasStep checks if Step has been set in PatternFlowIpv6HopLimitCounter + // SetStep assigns uint32 provided by user to PatternFlowGtpv2VersionCounter + SetStep(value uint32) PatternFlowGtpv2VersionCounter + // HasStep checks if Step has been set in PatternFlowGtpv2VersionCounter HasStep() bool - // Count returns uint32, set in PatternFlowIpv6HopLimitCounter. + // Count returns uint32, set in PatternFlowGtpv2VersionCounter. Count() uint32 - // SetCount assigns uint32 provided by user to PatternFlowIpv6HopLimitCounter - SetCount(value uint32) PatternFlowIpv6HopLimitCounter - // HasCount checks if Count has been set in PatternFlowIpv6HopLimitCounter + // SetCount assigns uint32 provided by user to PatternFlowGtpv2VersionCounter + SetCount(value uint32) PatternFlowGtpv2VersionCounter + // HasCount checks if Count has been set in PatternFlowGtpv2VersionCounter HasCount() bool } // description is TBD // Start returns a uint32 -func (obj *patternFlowIpv6HopLimitCounter) Start() uint32 { +func (obj *patternFlowGtpv2VersionCounter) Start() uint32 { return *obj.obj.Start @@ -206323,13 +249816,13 @@ func (obj *patternFlowIpv6HopLimitCounter) Start() uint32 { // description is TBD // Start returns a uint32 -func (obj *patternFlowIpv6HopLimitCounter) HasStart() bool { +func (obj *patternFlowGtpv2VersionCounter) HasStart() bool { return obj.obj.Start != nil } // description is TBD -// SetStart sets the uint32 value in the PatternFlowIpv6HopLimitCounter object -func (obj *patternFlowIpv6HopLimitCounter) SetStart(value uint32) PatternFlowIpv6HopLimitCounter { +// SetStart sets the uint32 value in the PatternFlowGtpv2VersionCounter object +func (obj *patternFlowGtpv2VersionCounter) SetStart(value uint32) PatternFlowGtpv2VersionCounter { obj.obj.Start = &value return obj @@ -206337,7 +249830,7 @@ func (obj *patternFlowIpv6HopLimitCounter) SetStart(value uint32) PatternFlowIpv // description is TBD // Step returns a uint32 -func (obj *patternFlowIpv6HopLimitCounter) Step() uint32 { +func (obj *patternFlowGtpv2VersionCounter) Step() uint32 { return *obj.obj.Step @@ -206345,13 +249838,13 @@ func (obj *patternFlowIpv6HopLimitCounter) Step() uint32 { // description is TBD // Step returns a uint32 -func (obj *patternFlowIpv6HopLimitCounter) HasStep() bool { +func (obj *patternFlowGtpv2VersionCounter) HasStep() bool { return obj.obj.Step != nil } // description is TBD -// SetStep sets the uint32 value in the PatternFlowIpv6HopLimitCounter object -func (obj *patternFlowIpv6HopLimitCounter) SetStep(value uint32) PatternFlowIpv6HopLimitCounter { +// SetStep sets the uint32 value in the PatternFlowGtpv2VersionCounter object +func (obj *patternFlowGtpv2VersionCounter) SetStep(value uint32) PatternFlowGtpv2VersionCounter { obj.obj.Step = &value return obj @@ -206359,7 +249852,7 @@ func (obj *patternFlowIpv6HopLimitCounter) SetStep(value uint32) PatternFlowIpv6 // description is TBD // Count returns a uint32 -func (obj *patternFlowIpv6HopLimitCounter) Count() uint32 { +func (obj *patternFlowGtpv2VersionCounter) Count() uint32 { return *obj.obj.Count @@ -206367,58 +249860,58 @@ func (obj *patternFlowIpv6HopLimitCounter) Count() uint32 { // description is TBD // Count returns a uint32 -func (obj *patternFlowIpv6HopLimitCounter) HasCount() bool { +func (obj *patternFlowGtpv2VersionCounter) HasCount() bool { return obj.obj.Count != nil } // description is TBD -// SetCount sets the uint32 value in the PatternFlowIpv6HopLimitCounter object -func (obj *patternFlowIpv6HopLimitCounter) SetCount(value uint32) PatternFlowIpv6HopLimitCounter { +// SetCount sets the uint32 value in the PatternFlowGtpv2VersionCounter object +func (obj *patternFlowGtpv2VersionCounter) SetCount(value uint32) PatternFlowGtpv2VersionCounter { obj.obj.Count = &value return obj } -func (obj *patternFlowIpv6HopLimitCounter) validateObj(vObj *validation, set_default bool) { +func (obj *patternFlowGtpv2VersionCounter) validateObj(vObj *validation, set_default bool) { if set_default { obj.setDefault() } if obj.obj.Start != nil { - if *obj.obj.Start > 255 { + if *obj.obj.Start > 7 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowIpv6HopLimitCounter.Start <= 255 but Got %d", *obj.obj.Start)) + fmt.Sprintf("0 <= PatternFlowGtpv2VersionCounter.Start <= 7 but Got %d", *obj.obj.Start)) } } if obj.obj.Step != nil { - if *obj.obj.Step > 255 { + if *obj.obj.Step > 7 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowIpv6HopLimitCounter.Step <= 255 but Got %d", *obj.obj.Step)) + fmt.Sprintf("0 <= PatternFlowGtpv2VersionCounter.Step <= 7 but Got %d", *obj.obj.Step)) } } if obj.obj.Count != nil { - if *obj.obj.Count > 255 { + if *obj.obj.Count > 7 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowIpv6HopLimitCounter.Count <= 255 but Got %d", *obj.obj.Count)) + fmt.Sprintf("0 <= PatternFlowGtpv2VersionCounter.Count <= 7 but Got %d", *obj.obj.Count)) } } } -func (obj *patternFlowIpv6HopLimitCounter) setDefault() { +func (obj *patternFlowGtpv2VersionCounter) setDefault() { if obj.obj.Start == nil { - obj.SetStart(64) + obj.SetStart(2) } if obj.obj.Step == nil { obj.SetStep(1) @@ -206429,29 +249922,29 @@ func (obj *patternFlowIpv6HopLimitCounter) setDefault() { } -// ***** PatternFlowIpv6HopLimitMetricTag ***** -type patternFlowIpv6HopLimitMetricTag struct { +// ***** PatternFlowGtpv2VersionMetricTag ***** +type patternFlowGtpv2VersionMetricTag struct { validation - obj *otg.PatternFlowIpv6HopLimitMetricTag + obj *otg.PatternFlowGtpv2VersionMetricTag } -func NewPatternFlowIpv6HopLimitMetricTag() PatternFlowIpv6HopLimitMetricTag { - obj := patternFlowIpv6HopLimitMetricTag{obj: &otg.PatternFlowIpv6HopLimitMetricTag{}} +func NewPatternFlowGtpv2VersionMetricTag() PatternFlowGtpv2VersionMetricTag { + obj := patternFlowGtpv2VersionMetricTag{obj: &otg.PatternFlowGtpv2VersionMetricTag{}} obj.setDefault() return &obj } -func (obj *patternFlowIpv6HopLimitMetricTag) Msg() *otg.PatternFlowIpv6HopLimitMetricTag { +func (obj *patternFlowGtpv2VersionMetricTag) Msg() *otg.PatternFlowGtpv2VersionMetricTag { return obj.obj } -func (obj *patternFlowIpv6HopLimitMetricTag) SetMsg(msg *otg.PatternFlowIpv6HopLimitMetricTag) PatternFlowIpv6HopLimitMetricTag { +func (obj *patternFlowGtpv2VersionMetricTag) SetMsg(msg *otg.PatternFlowGtpv2VersionMetricTag) PatternFlowGtpv2VersionMetricTag { proto.Merge(obj.obj, msg) return obj } -func (obj *patternFlowIpv6HopLimitMetricTag) ToProto() (*otg.PatternFlowIpv6HopLimitMetricTag, error) { +func (obj *patternFlowGtpv2VersionMetricTag) ToProto() (*otg.PatternFlowGtpv2VersionMetricTag, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -206459,7 +249952,7 @@ func (obj *patternFlowIpv6HopLimitMetricTag) ToProto() (*otg.PatternFlowIpv6HopL return obj.Msg(), nil } -func (obj *patternFlowIpv6HopLimitMetricTag) FromProto(msg *otg.PatternFlowIpv6HopLimitMetricTag) (PatternFlowIpv6HopLimitMetricTag, error) { +func (obj *patternFlowGtpv2VersionMetricTag) FromProto(msg *otg.PatternFlowGtpv2VersionMetricTag) (PatternFlowGtpv2VersionMetricTag, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -206468,7 +249961,7 @@ func (obj *patternFlowIpv6HopLimitMetricTag) FromProto(msg *otg.PatternFlowIpv6H return newObj, nil } -func (obj *patternFlowIpv6HopLimitMetricTag) ToPbText() (string, error) { +func (obj *patternFlowGtpv2VersionMetricTag) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -206480,7 +249973,7 @@ func (obj *patternFlowIpv6HopLimitMetricTag) ToPbText() (string, error) { return string(protoMarshal), nil } -func (obj *patternFlowIpv6HopLimitMetricTag) FromPbText(value string) error { +func (obj *patternFlowGtpv2VersionMetricTag) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj @@ -206493,7 +249986,7 @@ func (obj *patternFlowIpv6HopLimitMetricTag) FromPbText(value string) error { return retObj } -func (obj *patternFlowIpv6HopLimitMetricTag) ToYaml() (string, error) { +func (obj *patternFlowGtpv2VersionMetricTag) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -206514,7 +250007,7 @@ func (obj *patternFlowIpv6HopLimitMetricTag) ToYaml() (string, error) { return string(data), nil } -func (obj *patternFlowIpv6HopLimitMetricTag) FromYaml(value string) error { +func (obj *patternFlowGtpv2VersionMetricTag) FromYaml(value string) error { if value == "" { value = "{}" } @@ -206539,7 +250032,7 @@ func (obj *patternFlowIpv6HopLimitMetricTag) FromYaml(value string) error { return nil } -func (obj *patternFlowIpv6HopLimitMetricTag) ToJson() (string, error) { +func (obj *patternFlowGtpv2VersionMetricTag) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -206557,7 +250050,7 @@ func (obj *patternFlowIpv6HopLimitMetricTag) ToJson() (string, error) { return string(data), nil } -func (obj *patternFlowIpv6HopLimitMetricTag) FromJson(value string) error { +func (obj *patternFlowGtpv2VersionMetricTag) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -206578,19 +250071,19 @@ func (obj *patternFlowIpv6HopLimitMetricTag) FromJson(value string) error { return nil } -func (obj *patternFlowIpv6HopLimitMetricTag) validateToAndFrom() error { +func (obj *patternFlowGtpv2VersionMetricTag) validateToAndFrom() error { // emptyVars() obj.validateObj(&obj.validation, true) return obj.validationResult() } -func (obj *patternFlowIpv6HopLimitMetricTag) Validate() error { +func (obj *patternFlowGtpv2VersionMetricTag) Validate() error { // emptyVars() obj.validateObj(&obj.validation, false) return obj.validationResult() } -func (obj *patternFlowIpv6HopLimitMetricTag) String() string { +func (obj *patternFlowGtpv2VersionMetricTag) String() string { str, err := obj.ToYaml() if err != nil { return err.Error() @@ -206598,12 +250091,12 @@ func (obj *patternFlowIpv6HopLimitMetricTag) String() string { return str } -func (obj *patternFlowIpv6HopLimitMetricTag) Clone() (PatternFlowIpv6HopLimitMetricTag, error) { +func (obj *patternFlowGtpv2VersionMetricTag) Clone() (PatternFlowGtpv2VersionMetricTag, error) { vErr := obj.Validate() if vErr != nil { return nil, vErr } - newObj := NewPatternFlowIpv6HopLimitMetricTag() + newObj := NewPatternFlowGtpv2VersionMetricTag() data, err := proto.Marshal(obj.Msg()) if err != nil { return nil, err @@ -206615,69 +250108,69 @@ func (obj *patternFlowIpv6HopLimitMetricTag) Clone() (PatternFlowIpv6HopLimitMet return newObj, nil } -// PatternFlowIpv6HopLimitMetricTag is metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. -type PatternFlowIpv6HopLimitMetricTag interface { +// PatternFlowGtpv2VersionMetricTag is metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. +type PatternFlowGtpv2VersionMetricTag interface { Validation - // Msg marshals PatternFlowIpv6HopLimitMetricTag to protobuf object *otg.PatternFlowIpv6HopLimitMetricTag + // Msg marshals PatternFlowGtpv2VersionMetricTag to protobuf object *otg.PatternFlowGtpv2VersionMetricTag // and doesn't set defaults - Msg() *otg.PatternFlowIpv6HopLimitMetricTag - // SetMsg unmarshals PatternFlowIpv6HopLimitMetricTag from protobuf object *otg.PatternFlowIpv6HopLimitMetricTag + Msg() *otg.PatternFlowGtpv2VersionMetricTag + // SetMsg unmarshals PatternFlowGtpv2VersionMetricTag from protobuf object *otg.PatternFlowGtpv2VersionMetricTag // and doesn't set defaults - SetMsg(*otg.PatternFlowIpv6HopLimitMetricTag) PatternFlowIpv6HopLimitMetricTag - // ToProto marshals PatternFlowIpv6HopLimitMetricTag to protobuf object *otg.PatternFlowIpv6HopLimitMetricTag - ToProto() (*otg.PatternFlowIpv6HopLimitMetricTag, error) - // ToPbText marshals PatternFlowIpv6HopLimitMetricTag to protobuf text + SetMsg(*otg.PatternFlowGtpv2VersionMetricTag) PatternFlowGtpv2VersionMetricTag + // ToProto marshals PatternFlowGtpv2VersionMetricTag to protobuf object *otg.PatternFlowGtpv2VersionMetricTag + ToProto() (*otg.PatternFlowGtpv2VersionMetricTag, error) + // ToPbText marshals PatternFlowGtpv2VersionMetricTag to protobuf text ToPbText() (string, error) - // ToYaml marshals PatternFlowIpv6HopLimitMetricTag to YAML text + // ToYaml marshals PatternFlowGtpv2VersionMetricTag to YAML text ToYaml() (string, error) - // ToJson marshals PatternFlowIpv6HopLimitMetricTag to JSON text + // ToJson marshals PatternFlowGtpv2VersionMetricTag to JSON text ToJson() (string, error) - // FromProto unmarshals PatternFlowIpv6HopLimitMetricTag from protobuf object *otg.PatternFlowIpv6HopLimitMetricTag - FromProto(msg *otg.PatternFlowIpv6HopLimitMetricTag) (PatternFlowIpv6HopLimitMetricTag, error) - // FromPbText unmarshals PatternFlowIpv6HopLimitMetricTag from protobuf text + // FromProto unmarshals PatternFlowGtpv2VersionMetricTag from protobuf object *otg.PatternFlowGtpv2VersionMetricTag + FromProto(msg *otg.PatternFlowGtpv2VersionMetricTag) (PatternFlowGtpv2VersionMetricTag, error) + // FromPbText unmarshals PatternFlowGtpv2VersionMetricTag from protobuf text FromPbText(value string) error - // FromYaml unmarshals PatternFlowIpv6HopLimitMetricTag from YAML text + // FromYaml unmarshals PatternFlowGtpv2VersionMetricTag from YAML text FromYaml(value string) error - // FromJson unmarshals PatternFlowIpv6HopLimitMetricTag from JSON text + // FromJson unmarshals PatternFlowGtpv2VersionMetricTag from JSON text FromJson(value string) error - // Validate validates PatternFlowIpv6HopLimitMetricTag + // Validate validates PatternFlowGtpv2VersionMetricTag Validate() error // A stringer function String() string // Clones the object - Clone() (PatternFlowIpv6HopLimitMetricTag, error) + Clone() (PatternFlowGtpv2VersionMetricTag, error) validateToAndFrom() error validateObj(vObj *validation, set_default bool) setDefault() - // Name returns string, set in PatternFlowIpv6HopLimitMetricTag. + // Name returns string, set in PatternFlowGtpv2VersionMetricTag. Name() string - // SetName assigns string provided by user to PatternFlowIpv6HopLimitMetricTag - SetName(value string) PatternFlowIpv6HopLimitMetricTag - // Offset returns uint32, set in PatternFlowIpv6HopLimitMetricTag. + // SetName assigns string provided by user to PatternFlowGtpv2VersionMetricTag + SetName(value string) PatternFlowGtpv2VersionMetricTag + // Offset returns uint32, set in PatternFlowGtpv2VersionMetricTag. Offset() uint32 - // SetOffset assigns uint32 provided by user to PatternFlowIpv6HopLimitMetricTag - SetOffset(value uint32) PatternFlowIpv6HopLimitMetricTag - // HasOffset checks if Offset has been set in PatternFlowIpv6HopLimitMetricTag + // SetOffset assigns uint32 provided by user to PatternFlowGtpv2VersionMetricTag + SetOffset(value uint32) PatternFlowGtpv2VersionMetricTag + // HasOffset checks if Offset has been set in PatternFlowGtpv2VersionMetricTag HasOffset() bool - // Length returns uint32, set in PatternFlowIpv6HopLimitMetricTag. + // Length returns uint32, set in PatternFlowGtpv2VersionMetricTag. Length() uint32 - // SetLength assigns uint32 provided by user to PatternFlowIpv6HopLimitMetricTag - SetLength(value uint32) PatternFlowIpv6HopLimitMetricTag - // HasLength checks if Length has been set in PatternFlowIpv6HopLimitMetricTag + // SetLength assigns uint32 provided by user to PatternFlowGtpv2VersionMetricTag + SetLength(value uint32) PatternFlowGtpv2VersionMetricTag + // HasLength checks if Length has been set in PatternFlowGtpv2VersionMetricTag HasLength() bool } // Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field // Name returns a string -func (obj *patternFlowIpv6HopLimitMetricTag) Name() string { +func (obj *patternFlowGtpv2VersionMetricTag) Name() string { return *obj.obj.Name } // Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field -// SetName sets the string value in the PatternFlowIpv6HopLimitMetricTag object -func (obj *patternFlowIpv6HopLimitMetricTag) SetName(value string) PatternFlowIpv6HopLimitMetricTag { +// SetName sets the string value in the PatternFlowGtpv2VersionMetricTag object +func (obj *patternFlowGtpv2VersionMetricTag) SetName(value string) PatternFlowGtpv2VersionMetricTag { obj.obj.Name = &value return obj @@ -206685,7 +250178,7 @@ func (obj *patternFlowIpv6HopLimitMetricTag) SetName(value string) PatternFlowIp // Offset in bits relative to start of corresponding header field // Offset returns a uint32 -func (obj *patternFlowIpv6HopLimitMetricTag) Offset() uint32 { +func (obj *patternFlowGtpv2VersionMetricTag) Offset() uint32 { return *obj.obj.Offset @@ -206693,13 +250186,13 @@ func (obj *patternFlowIpv6HopLimitMetricTag) Offset() uint32 { // Offset in bits relative to start of corresponding header field // Offset returns a uint32 -func (obj *patternFlowIpv6HopLimitMetricTag) HasOffset() bool { +func (obj *patternFlowGtpv2VersionMetricTag) HasOffset() bool { return obj.obj.Offset != nil } // Offset in bits relative to start of corresponding header field -// SetOffset sets the uint32 value in the PatternFlowIpv6HopLimitMetricTag object -func (obj *patternFlowIpv6HopLimitMetricTag) SetOffset(value uint32) PatternFlowIpv6HopLimitMetricTag { +// SetOffset sets the uint32 value in the PatternFlowGtpv2VersionMetricTag object +func (obj *patternFlowGtpv2VersionMetricTag) SetOffset(value uint32) PatternFlowGtpv2VersionMetricTag { obj.obj.Offset = &value return obj @@ -206707,7 +250200,7 @@ func (obj *patternFlowIpv6HopLimitMetricTag) SetOffset(value uint32) PatternFlow // Number of bits to track for metrics starting from configured offset of corresponding header field // Length returns a uint32 -func (obj *patternFlowIpv6HopLimitMetricTag) Length() uint32 { +func (obj *patternFlowGtpv2VersionMetricTag) Length() uint32 { return *obj.obj.Length @@ -206715,83 +250208,83 @@ func (obj *patternFlowIpv6HopLimitMetricTag) Length() uint32 { // Number of bits to track for metrics starting from configured offset of corresponding header field // Length returns a uint32 -func (obj *patternFlowIpv6HopLimitMetricTag) HasLength() bool { +func (obj *patternFlowGtpv2VersionMetricTag) HasLength() bool { return obj.obj.Length != nil } // Number of bits to track for metrics starting from configured offset of corresponding header field -// SetLength sets the uint32 value in the PatternFlowIpv6HopLimitMetricTag object -func (obj *patternFlowIpv6HopLimitMetricTag) SetLength(value uint32) PatternFlowIpv6HopLimitMetricTag { +// SetLength sets the uint32 value in the PatternFlowGtpv2VersionMetricTag object +func (obj *patternFlowGtpv2VersionMetricTag) SetLength(value uint32) PatternFlowGtpv2VersionMetricTag { obj.obj.Length = &value return obj } -func (obj *patternFlowIpv6HopLimitMetricTag) validateObj(vObj *validation, set_default bool) { +func (obj *patternFlowGtpv2VersionMetricTag) validateObj(vObj *validation, set_default bool) { if set_default { obj.setDefault() } // Name is required if obj.obj.Name == nil { - vObj.validationErrors = append(vObj.validationErrors, "Name is required field on interface PatternFlowIpv6HopLimitMetricTag") + vObj.validationErrors = append(vObj.validationErrors, "Name is required field on interface PatternFlowGtpv2VersionMetricTag") } if obj.obj.Offset != nil { - if *obj.obj.Offset > 7 { + if *obj.obj.Offset > 2 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowIpv6HopLimitMetricTag.Offset <= 7 but Got %d", *obj.obj.Offset)) + fmt.Sprintf("0 <= PatternFlowGtpv2VersionMetricTag.Offset <= 2 but Got %d", *obj.obj.Offset)) } } if obj.obj.Length != nil { - if *obj.obj.Length < 1 || *obj.obj.Length > 8 { + if *obj.obj.Length < 1 || *obj.obj.Length > 3 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("1 <= PatternFlowIpv6HopLimitMetricTag.Length <= 8 but Got %d", *obj.obj.Length)) + fmt.Sprintf("1 <= PatternFlowGtpv2VersionMetricTag.Length <= 3 but Got %d", *obj.obj.Length)) } } } -func (obj *patternFlowIpv6HopLimitMetricTag) setDefault() { +func (obj *patternFlowGtpv2VersionMetricTag) setDefault() { if obj.obj.Offset == nil { obj.SetOffset(0) } if obj.obj.Length == nil { - obj.SetLength(8) + obj.SetLength(3) } } -// ***** PatternFlowIpv6SrcCounter ***** -type patternFlowIpv6SrcCounter struct { +// ***** PatternFlowGtpv2PiggybackingFlagCounter ***** +type patternFlowGtpv2PiggybackingFlagCounter struct { validation - obj *otg.PatternFlowIpv6SrcCounter + obj *otg.PatternFlowGtpv2PiggybackingFlagCounter } -func NewPatternFlowIpv6SrcCounter() PatternFlowIpv6SrcCounter { - obj := patternFlowIpv6SrcCounter{obj: &otg.PatternFlowIpv6SrcCounter{}} +func NewPatternFlowGtpv2PiggybackingFlagCounter() PatternFlowGtpv2PiggybackingFlagCounter { + obj := patternFlowGtpv2PiggybackingFlagCounter{obj: &otg.PatternFlowGtpv2PiggybackingFlagCounter{}} obj.setDefault() return &obj } -func (obj *patternFlowIpv6SrcCounter) Msg() *otg.PatternFlowIpv6SrcCounter { +func (obj *patternFlowGtpv2PiggybackingFlagCounter) Msg() *otg.PatternFlowGtpv2PiggybackingFlagCounter { return obj.obj } -func (obj *patternFlowIpv6SrcCounter) SetMsg(msg *otg.PatternFlowIpv6SrcCounter) PatternFlowIpv6SrcCounter { +func (obj *patternFlowGtpv2PiggybackingFlagCounter) SetMsg(msg *otg.PatternFlowGtpv2PiggybackingFlagCounter) PatternFlowGtpv2PiggybackingFlagCounter { proto.Merge(obj.obj, msg) return obj } -func (obj *patternFlowIpv6SrcCounter) ToProto() (*otg.PatternFlowIpv6SrcCounter, error) { +func (obj *patternFlowGtpv2PiggybackingFlagCounter) ToProto() (*otg.PatternFlowGtpv2PiggybackingFlagCounter, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -206799,7 +250292,7 @@ func (obj *patternFlowIpv6SrcCounter) ToProto() (*otg.PatternFlowIpv6SrcCounter, return obj.Msg(), nil } -func (obj *patternFlowIpv6SrcCounter) FromProto(msg *otg.PatternFlowIpv6SrcCounter) (PatternFlowIpv6SrcCounter, error) { +func (obj *patternFlowGtpv2PiggybackingFlagCounter) FromProto(msg *otg.PatternFlowGtpv2PiggybackingFlagCounter) (PatternFlowGtpv2PiggybackingFlagCounter, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -206808,7 +250301,7 @@ func (obj *patternFlowIpv6SrcCounter) FromProto(msg *otg.PatternFlowIpv6SrcCount return newObj, nil } -func (obj *patternFlowIpv6SrcCounter) ToPbText() (string, error) { +func (obj *patternFlowGtpv2PiggybackingFlagCounter) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -206820,7 +250313,7 @@ func (obj *patternFlowIpv6SrcCounter) ToPbText() (string, error) { return string(protoMarshal), nil } -func (obj *patternFlowIpv6SrcCounter) FromPbText(value string) error { +func (obj *patternFlowGtpv2PiggybackingFlagCounter) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj @@ -206833,7 +250326,7 @@ func (obj *patternFlowIpv6SrcCounter) FromPbText(value string) error { return retObj } -func (obj *patternFlowIpv6SrcCounter) ToYaml() (string, error) { +func (obj *patternFlowGtpv2PiggybackingFlagCounter) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -206854,7 +250347,7 @@ func (obj *patternFlowIpv6SrcCounter) ToYaml() (string, error) { return string(data), nil } -func (obj *patternFlowIpv6SrcCounter) FromYaml(value string) error { +func (obj *patternFlowGtpv2PiggybackingFlagCounter) FromYaml(value string) error { if value == "" { value = "{}" } @@ -206879,7 +250372,7 @@ func (obj *patternFlowIpv6SrcCounter) FromYaml(value string) error { return nil } -func (obj *patternFlowIpv6SrcCounter) ToJson() (string, error) { +func (obj *patternFlowGtpv2PiggybackingFlagCounter) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -206897,7 +250390,7 @@ func (obj *patternFlowIpv6SrcCounter) ToJson() (string, error) { return string(data), nil } -func (obj *patternFlowIpv6SrcCounter) FromJson(value string) error { +func (obj *patternFlowGtpv2PiggybackingFlagCounter) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -206918,19 +250411,19 @@ func (obj *patternFlowIpv6SrcCounter) FromJson(value string) error { return nil } -func (obj *patternFlowIpv6SrcCounter) validateToAndFrom() error { +func (obj *patternFlowGtpv2PiggybackingFlagCounter) validateToAndFrom() error { // emptyVars() obj.validateObj(&obj.validation, true) return obj.validationResult() } -func (obj *patternFlowIpv6SrcCounter) Validate() error { +func (obj *patternFlowGtpv2PiggybackingFlagCounter) Validate() error { // emptyVars() obj.validateObj(&obj.validation, false) return obj.validationResult() } -func (obj *patternFlowIpv6SrcCounter) String() string { +func (obj *patternFlowGtpv2PiggybackingFlagCounter) String() string { str, err := obj.ToYaml() if err != nil { return err.Error() @@ -206938,12 +250431,12 @@ func (obj *patternFlowIpv6SrcCounter) String() string { return str } -func (obj *patternFlowIpv6SrcCounter) Clone() (PatternFlowIpv6SrcCounter, error) { +func (obj *patternFlowGtpv2PiggybackingFlagCounter) Clone() (PatternFlowGtpv2PiggybackingFlagCounter, error) { vErr := obj.Validate() if vErr != nil { return nil, vErr } - newObj := NewPatternFlowIpv6SrcCounter() + newObj := NewPatternFlowGtpv2PiggybackingFlagCounter() data, err := proto.Marshal(obj.Msg()) if err != nil { return nil, err @@ -206955,99 +250448,99 @@ func (obj *patternFlowIpv6SrcCounter) Clone() (PatternFlowIpv6SrcCounter, error) return newObj, nil } -// PatternFlowIpv6SrcCounter is ipv6 counter pattern -type PatternFlowIpv6SrcCounter interface { +// PatternFlowGtpv2PiggybackingFlagCounter is integer counter pattern +type PatternFlowGtpv2PiggybackingFlagCounter interface { Validation - // Msg marshals PatternFlowIpv6SrcCounter to protobuf object *otg.PatternFlowIpv6SrcCounter + // Msg marshals PatternFlowGtpv2PiggybackingFlagCounter to protobuf object *otg.PatternFlowGtpv2PiggybackingFlagCounter // and doesn't set defaults - Msg() *otg.PatternFlowIpv6SrcCounter - // SetMsg unmarshals PatternFlowIpv6SrcCounter from protobuf object *otg.PatternFlowIpv6SrcCounter + Msg() *otg.PatternFlowGtpv2PiggybackingFlagCounter + // SetMsg unmarshals PatternFlowGtpv2PiggybackingFlagCounter from protobuf object *otg.PatternFlowGtpv2PiggybackingFlagCounter // and doesn't set defaults - SetMsg(*otg.PatternFlowIpv6SrcCounter) PatternFlowIpv6SrcCounter - // ToProto marshals PatternFlowIpv6SrcCounter to protobuf object *otg.PatternFlowIpv6SrcCounter - ToProto() (*otg.PatternFlowIpv6SrcCounter, error) - // ToPbText marshals PatternFlowIpv6SrcCounter to protobuf text + SetMsg(*otg.PatternFlowGtpv2PiggybackingFlagCounter) PatternFlowGtpv2PiggybackingFlagCounter + // ToProto marshals PatternFlowGtpv2PiggybackingFlagCounter to protobuf object *otg.PatternFlowGtpv2PiggybackingFlagCounter + ToProto() (*otg.PatternFlowGtpv2PiggybackingFlagCounter, error) + // ToPbText marshals PatternFlowGtpv2PiggybackingFlagCounter to protobuf text ToPbText() (string, error) - // ToYaml marshals PatternFlowIpv6SrcCounter to YAML text + // ToYaml marshals PatternFlowGtpv2PiggybackingFlagCounter to YAML text ToYaml() (string, error) - // ToJson marshals PatternFlowIpv6SrcCounter to JSON text + // ToJson marshals PatternFlowGtpv2PiggybackingFlagCounter to JSON text ToJson() (string, error) - // FromProto unmarshals PatternFlowIpv6SrcCounter from protobuf object *otg.PatternFlowIpv6SrcCounter - FromProto(msg *otg.PatternFlowIpv6SrcCounter) (PatternFlowIpv6SrcCounter, error) - // FromPbText unmarshals PatternFlowIpv6SrcCounter from protobuf text + // FromProto unmarshals PatternFlowGtpv2PiggybackingFlagCounter from protobuf object *otg.PatternFlowGtpv2PiggybackingFlagCounter + FromProto(msg *otg.PatternFlowGtpv2PiggybackingFlagCounter) (PatternFlowGtpv2PiggybackingFlagCounter, error) + // FromPbText unmarshals PatternFlowGtpv2PiggybackingFlagCounter from protobuf text FromPbText(value string) error - // FromYaml unmarshals PatternFlowIpv6SrcCounter from YAML text + // FromYaml unmarshals PatternFlowGtpv2PiggybackingFlagCounter from YAML text FromYaml(value string) error - // FromJson unmarshals PatternFlowIpv6SrcCounter from JSON text + // FromJson unmarshals PatternFlowGtpv2PiggybackingFlagCounter from JSON text FromJson(value string) error - // Validate validates PatternFlowIpv6SrcCounter + // Validate validates PatternFlowGtpv2PiggybackingFlagCounter Validate() error // A stringer function String() string // Clones the object - Clone() (PatternFlowIpv6SrcCounter, error) + Clone() (PatternFlowGtpv2PiggybackingFlagCounter, error) validateToAndFrom() error validateObj(vObj *validation, set_default bool) setDefault() - // Start returns string, set in PatternFlowIpv6SrcCounter. - Start() string - // SetStart assigns string provided by user to PatternFlowIpv6SrcCounter - SetStart(value string) PatternFlowIpv6SrcCounter - // HasStart checks if Start has been set in PatternFlowIpv6SrcCounter + // Start returns uint32, set in PatternFlowGtpv2PiggybackingFlagCounter. + Start() uint32 + // SetStart assigns uint32 provided by user to PatternFlowGtpv2PiggybackingFlagCounter + SetStart(value uint32) PatternFlowGtpv2PiggybackingFlagCounter + // HasStart checks if Start has been set in PatternFlowGtpv2PiggybackingFlagCounter HasStart() bool - // Step returns string, set in PatternFlowIpv6SrcCounter. - Step() string - // SetStep assigns string provided by user to PatternFlowIpv6SrcCounter - SetStep(value string) PatternFlowIpv6SrcCounter - // HasStep checks if Step has been set in PatternFlowIpv6SrcCounter + // Step returns uint32, set in PatternFlowGtpv2PiggybackingFlagCounter. + Step() uint32 + // SetStep assigns uint32 provided by user to PatternFlowGtpv2PiggybackingFlagCounter + SetStep(value uint32) PatternFlowGtpv2PiggybackingFlagCounter + // HasStep checks if Step has been set in PatternFlowGtpv2PiggybackingFlagCounter HasStep() bool - // Count returns uint32, set in PatternFlowIpv6SrcCounter. + // Count returns uint32, set in PatternFlowGtpv2PiggybackingFlagCounter. Count() uint32 - // SetCount assigns uint32 provided by user to PatternFlowIpv6SrcCounter - SetCount(value uint32) PatternFlowIpv6SrcCounter - // HasCount checks if Count has been set in PatternFlowIpv6SrcCounter + // SetCount assigns uint32 provided by user to PatternFlowGtpv2PiggybackingFlagCounter + SetCount(value uint32) PatternFlowGtpv2PiggybackingFlagCounter + // HasCount checks if Count has been set in PatternFlowGtpv2PiggybackingFlagCounter HasCount() bool } // description is TBD -// Start returns a string -func (obj *patternFlowIpv6SrcCounter) Start() string { +// Start returns a uint32 +func (obj *patternFlowGtpv2PiggybackingFlagCounter) Start() uint32 { return *obj.obj.Start } // description is TBD -// Start returns a string -func (obj *patternFlowIpv6SrcCounter) HasStart() bool { +// Start returns a uint32 +func (obj *patternFlowGtpv2PiggybackingFlagCounter) HasStart() bool { return obj.obj.Start != nil } // description is TBD -// SetStart sets the string value in the PatternFlowIpv6SrcCounter object -func (obj *patternFlowIpv6SrcCounter) SetStart(value string) PatternFlowIpv6SrcCounter { +// SetStart sets the uint32 value in the PatternFlowGtpv2PiggybackingFlagCounter object +func (obj *patternFlowGtpv2PiggybackingFlagCounter) SetStart(value uint32) PatternFlowGtpv2PiggybackingFlagCounter { obj.obj.Start = &value return obj } // description is TBD -// Step returns a string -func (obj *patternFlowIpv6SrcCounter) Step() string { +// Step returns a uint32 +func (obj *patternFlowGtpv2PiggybackingFlagCounter) Step() uint32 { return *obj.obj.Step } // description is TBD -// Step returns a string -func (obj *patternFlowIpv6SrcCounter) HasStep() bool { +// Step returns a uint32 +func (obj *patternFlowGtpv2PiggybackingFlagCounter) HasStep() bool { return obj.obj.Step != nil } // description is TBD -// SetStep sets the string value in the PatternFlowIpv6SrcCounter object -func (obj *patternFlowIpv6SrcCounter) SetStep(value string) PatternFlowIpv6SrcCounter { +// SetStep sets the uint32 value in the PatternFlowGtpv2PiggybackingFlagCounter object +func (obj *patternFlowGtpv2PiggybackingFlagCounter) SetStep(value uint32) PatternFlowGtpv2PiggybackingFlagCounter { obj.obj.Step = &value return obj @@ -207055,7 +250548,7 @@ func (obj *patternFlowIpv6SrcCounter) SetStep(value string) PatternFlowIpv6SrcCo // description is TBD // Count returns a uint32 -func (obj *patternFlowIpv6SrcCounter) Count() uint32 { +func (obj *patternFlowGtpv2PiggybackingFlagCounter) Count() uint32 { return *obj.obj.Count @@ -207063,49 +250556,61 @@ func (obj *patternFlowIpv6SrcCounter) Count() uint32 { // description is TBD // Count returns a uint32 -func (obj *patternFlowIpv6SrcCounter) HasCount() bool { +func (obj *patternFlowGtpv2PiggybackingFlagCounter) HasCount() bool { return obj.obj.Count != nil } // description is TBD -// SetCount sets the uint32 value in the PatternFlowIpv6SrcCounter object -func (obj *patternFlowIpv6SrcCounter) SetCount(value uint32) PatternFlowIpv6SrcCounter { +// SetCount sets the uint32 value in the PatternFlowGtpv2PiggybackingFlagCounter object +func (obj *patternFlowGtpv2PiggybackingFlagCounter) SetCount(value uint32) PatternFlowGtpv2PiggybackingFlagCounter { obj.obj.Count = &value return obj } -func (obj *patternFlowIpv6SrcCounter) validateObj(vObj *validation, set_default bool) { +func (obj *patternFlowGtpv2PiggybackingFlagCounter) validateObj(vObj *validation, set_default bool) { if set_default { obj.setDefault() } if obj.obj.Start != nil { - err := obj.validateIpv6(obj.Start()) - if err != nil { - vObj.validationErrors = append(vObj.validationErrors, fmt.Sprintf("%s %s", err.Error(), "on PatternFlowIpv6SrcCounter.Start")) + if *obj.obj.Start > 1 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("0 <= PatternFlowGtpv2PiggybackingFlagCounter.Start <= 1 but Got %d", *obj.obj.Start)) } } if obj.obj.Step != nil { - err := obj.validateIpv6(obj.Step()) - if err != nil { - vObj.validationErrors = append(vObj.validationErrors, fmt.Sprintf("%s %s", err.Error(), "on PatternFlowIpv6SrcCounter.Step")) + if *obj.obj.Step > 1 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("0 <= PatternFlowGtpv2PiggybackingFlagCounter.Step <= 1 but Got %d", *obj.obj.Step)) + } + + } + + if obj.obj.Count != nil { + + if *obj.obj.Count > 1 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("0 <= PatternFlowGtpv2PiggybackingFlagCounter.Count <= 1 but Got %d", *obj.obj.Count)) } } } -func (obj *patternFlowIpv6SrcCounter) setDefault() { +func (obj *patternFlowGtpv2PiggybackingFlagCounter) setDefault() { if obj.obj.Start == nil { - obj.SetStart("::0") + obj.SetStart(0) } if obj.obj.Step == nil { - obj.SetStep("::1") + obj.SetStep(1) } if obj.obj.Count == nil { obj.SetCount(1) @@ -207113,29 +250618,29 @@ func (obj *patternFlowIpv6SrcCounter) setDefault() { } -// ***** PatternFlowIpv6SrcMetricTag ***** -type patternFlowIpv6SrcMetricTag struct { +// ***** PatternFlowGtpv2PiggybackingFlagMetricTag ***** +type patternFlowGtpv2PiggybackingFlagMetricTag struct { validation - obj *otg.PatternFlowIpv6SrcMetricTag + obj *otg.PatternFlowGtpv2PiggybackingFlagMetricTag } -func NewPatternFlowIpv6SrcMetricTag() PatternFlowIpv6SrcMetricTag { - obj := patternFlowIpv6SrcMetricTag{obj: &otg.PatternFlowIpv6SrcMetricTag{}} +func NewPatternFlowGtpv2PiggybackingFlagMetricTag() PatternFlowGtpv2PiggybackingFlagMetricTag { + obj := patternFlowGtpv2PiggybackingFlagMetricTag{obj: &otg.PatternFlowGtpv2PiggybackingFlagMetricTag{}} obj.setDefault() return &obj } -func (obj *patternFlowIpv6SrcMetricTag) Msg() *otg.PatternFlowIpv6SrcMetricTag { +func (obj *patternFlowGtpv2PiggybackingFlagMetricTag) Msg() *otg.PatternFlowGtpv2PiggybackingFlagMetricTag { return obj.obj } -func (obj *patternFlowIpv6SrcMetricTag) SetMsg(msg *otg.PatternFlowIpv6SrcMetricTag) PatternFlowIpv6SrcMetricTag { +func (obj *patternFlowGtpv2PiggybackingFlagMetricTag) SetMsg(msg *otg.PatternFlowGtpv2PiggybackingFlagMetricTag) PatternFlowGtpv2PiggybackingFlagMetricTag { proto.Merge(obj.obj, msg) return obj } -func (obj *patternFlowIpv6SrcMetricTag) ToProto() (*otg.PatternFlowIpv6SrcMetricTag, error) { +func (obj *patternFlowGtpv2PiggybackingFlagMetricTag) ToProto() (*otg.PatternFlowGtpv2PiggybackingFlagMetricTag, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -207143,7 +250648,7 @@ func (obj *patternFlowIpv6SrcMetricTag) ToProto() (*otg.PatternFlowIpv6SrcMetric return obj.Msg(), nil } -func (obj *patternFlowIpv6SrcMetricTag) FromProto(msg *otg.PatternFlowIpv6SrcMetricTag) (PatternFlowIpv6SrcMetricTag, error) { +func (obj *patternFlowGtpv2PiggybackingFlagMetricTag) FromProto(msg *otg.PatternFlowGtpv2PiggybackingFlagMetricTag) (PatternFlowGtpv2PiggybackingFlagMetricTag, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -207152,7 +250657,7 @@ func (obj *patternFlowIpv6SrcMetricTag) FromProto(msg *otg.PatternFlowIpv6SrcMet return newObj, nil } -func (obj *patternFlowIpv6SrcMetricTag) ToPbText() (string, error) { +func (obj *patternFlowGtpv2PiggybackingFlagMetricTag) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -207164,7 +250669,7 @@ func (obj *patternFlowIpv6SrcMetricTag) ToPbText() (string, error) { return string(protoMarshal), nil } -func (obj *patternFlowIpv6SrcMetricTag) FromPbText(value string) error { +func (obj *patternFlowGtpv2PiggybackingFlagMetricTag) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj @@ -207177,7 +250682,7 @@ func (obj *patternFlowIpv6SrcMetricTag) FromPbText(value string) error { return retObj } -func (obj *patternFlowIpv6SrcMetricTag) ToYaml() (string, error) { +func (obj *patternFlowGtpv2PiggybackingFlagMetricTag) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -207198,7 +250703,7 @@ func (obj *patternFlowIpv6SrcMetricTag) ToYaml() (string, error) { return string(data), nil } -func (obj *patternFlowIpv6SrcMetricTag) FromYaml(value string) error { +func (obj *patternFlowGtpv2PiggybackingFlagMetricTag) FromYaml(value string) error { if value == "" { value = "{}" } @@ -207223,7 +250728,7 @@ func (obj *patternFlowIpv6SrcMetricTag) FromYaml(value string) error { return nil } -func (obj *patternFlowIpv6SrcMetricTag) ToJson() (string, error) { +func (obj *patternFlowGtpv2PiggybackingFlagMetricTag) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -207241,7 +250746,7 @@ func (obj *patternFlowIpv6SrcMetricTag) ToJson() (string, error) { return string(data), nil } -func (obj *patternFlowIpv6SrcMetricTag) FromJson(value string) error { +func (obj *patternFlowGtpv2PiggybackingFlagMetricTag) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -207262,19 +250767,19 @@ func (obj *patternFlowIpv6SrcMetricTag) FromJson(value string) error { return nil } -func (obj *patternFlowIpv6SrcMetricTag) validateToAndFrom() error { +func (obj *patternFlowGtpv2PiggybackingFlagMetricTag) validateToAndFrom() error { // emptyVars() obj.validateObj(&obj.validation, true) return obj.validationResult() } -func (obj *patternFlowIpv6SrcMetricTag) Validate() error { +func (obj *patternFlowGtpv2PiggybackingFlagMetricTag) Validate() error { // emptyVars() obj.validateObj(&obj.validation, false) return obj.validationResult() } -func (obj *patternFlowIpv6SrcMetricTag) String() string { +func (obj *patternFlowGtpv2PiggybackingFlagMetricTag) String() string { str, err := obj.ToYaml() if err != nil { return err.Error() @@ -207282,12 +250787,12 @@ func (obj *patternFlowIpv6SrcMetricTag) String() string { return str } -func (obj *patternFlowIpv6SrcMetricTag) Clone() (PatternFlowIpv6SrcMetricTag, error) { +func (obj *patternFlowGtpv2PiggybackingFlagMetricTag) Clone() (PatternFlowGtpv2PiggybackingFlagMetricTag, error) { vErr := obj.Validate() if vErr != nil { return nil, vErr } - newObj := NewPatternFlowIpv6SrcMetricTag() + newObj := NewPatternFlowGtpv2PiggybackingFlagMetricTag() data, err := proto.Marshal(obj.Msg()) if err != nil { return nil, err @@ -207299,69 +250804,69 @@ func (obj *patternFlowIpv6SrcMetricTag) Clone() (PatternFlowIpv6SrcMetricTag, er return newObj, nil } -// PatternFlowIpv6SrcMetricTag is metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. -type PatternFlowIpv6SrcMetricTag interface { +// PatternFlowGtpv2PiggybackingFlagMetricTag is metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. +type PatternFlowGtpv2PiggybackingFlagMetricTag interface { Validation - // Msg marshals PatternFlowIpv6SrcMetricTag to protobuf object *otg.PatternFlowIpv6SrcMetricTag + // Msg marshals PatternFlowGtpv2PiggybackingFlagMetricTag to protobuf object *otg.PatternFlowGtpv2PiggybackingFlagMetricTag // and doesn't set defaults - Msg() *otg.PatternFlowIpv6SrcMetricTag - // SetMsg unmarshals PatternFlowIpv6SrcMetricTag from protobuf object *otg.PatternFlowIpv6SrcMetricTag + Msg() *otg.PatternFlowGtpv2PiggybackingFlagMetricTag + // SetMsg unmarshals PatternFlowGtpv2PiggybackingFlagMetricTag from protobuf object *otg.PatternFlowGtpv2PiggybackingFlagMetricTag // and doesn't set defaults - SetMsg(*otg.PatternFlowIpv6SrcMetricTag) PatternFlowIpv6SrcMetricTag - // ToProto marshals PatternFlowIpv6SrcMetricTag to protobuf object *otg.PatternFlowIpv6SrcMetricTag - ToProto() (*otg.PatternFlowIpv6SrcMetricTag, error) - // ToPbText marshals PatternFlowIpv6SrcMetricTag to protobuf text + SetMsg(*otg.PatternFlowGtpv2PiggybackingFlagMetricTag) PatternFlowGtpv2PiggybackingFlagMetricTag + // ToProto marshals PatternFlowGtpv2PiggybackingFlagMetricTag to protobuf object *otg.PatternFlowGtpv2PiggybackingFlagMetricTag + ToProto() (*otg.PatternFlowGtpv2PiggybackingFlagMetricTag, error) + // ToPbText marshals PatternFlowGtpv2PiggybackingFlagMetricTag to protobuf text ToPbText() (string, error) - // ToYaml marshals PatternFlowIpv6SrcMetricTag to YAML text + // ToYaml marshals PatternFlowGtpv2PiggybackingFlagMetricTag to YAML text ToYaml() (string, error) - // ToJson marshals PatternFlowIpv6SrcMetricTag to JSON text + // ToJson marshals PatternFlowGtpv2PiggybackingFlagMetricTag to JSON text ToJson() (string, error) - // FromProto unmarshals PatternFlowIpv6SrcMetricTag from protobuf object *otg.PatternFlowIpv6SrcMetricTag - FromProto(msg *otg.PatternFlowIpv6SrcMetricTag) (PatternFlowIpv6SrcMetricTag, error) - // FromPbText unmarshals PatternFlowIpv6SrcMetricTag from protobuf text + // FromProto unmarshals PatternFlowGtpv2PiggybackingFlagMetricTag from protobuf object *otg.PatternFlowGtpv2PiggybackingFlagMetricTag + FromProto(msg *otg.PatternFlowGtpv2PiggybackingFlagMetricTag) (PatternFlowGtpv2PiggybackingFlagMetricTag, error) + // FromPbText unmarshals PatternFlowGtpv2PiggybackingFlagMetricTag from protobuf text FromPbText(value string) error - // FromYaml unmarshals PatternFlowIpv6SrcMetricTag from YAML text + // FromYaml unmarshals PatternFlowGtpv2PiggybackingFlagMetricTag from YAML text FromYaml(value string) error - // FromJson unmarshals PatternFlowIpv6SrcMetricTag from JSON text + // FromJson unmarshals PatternFlowGtpv2PiggybackingFlagMetricTag from JSON text FromJson(value string) error - // Validate validates PatternFlowIpv6SrcMetricTag + // Validate validates PatternFlowGtpv2PiggybackingFlagMetricTag Validate() error // A stringer function String() string // Clones the object - Clone() (PatternFlowIpv6SrcMetricTag, error) + Clone() (PatternFlowGtpv2PiggybackingFlagMetricTag, error) validateToAndFrom() error validateObj(vObj *validation, set_default bool) setDefault() - // Name returns string, set in PatternFlowIpv6SrcMetricTag. + // Name returns string, set in PatternFlowGtpv2PiggybackingFlagMetricTag. Name() string - // SetName assigns string provided by user to PatternFlowIpv6SrcMetricTag - SetName(value string) PatternFlowIpv6SrcMetricTag - // Offset returns uint32, set in PatternFlowIpv6SrcMetricTag. + // SetName assigns string provided by user to PatternFlowGtpv2PiggybackingFlagMetricTag + SetName(value string) PatternFlowGtpv2PiggybackingFlagMetricTag + // Offset returns uint32, set in PatternFlowGtpv2PiggybackingFlagMetricTag. Offset() uint32 - // SetOffset assigns uint32 provided by user to PatternFlowIpv6SrcMetricTag - SetOffset(value uint32) PatternFlowIpv6SrcMetricTag - // HasOffset checks if Offset has been set in PatternFlowIpv6SrcMetricTag + // SetOffset assigns uint32 provided by user to PatternFlowGtpv2PiggybackingFlagMetricTag + SetOffset(value uint32) PatternFlowGtpv2PiggybackingFlagMetricTag + // HasOffset checks if Offset has been set in PatternFlowGtpv2PiggybackingFlagMetricTag HasOffset() bool - // Length returns uint32, set in PatternFlowIpv6SrcMetricTag. + // Length returns uint32, set in PatternFlowGtpv2PiggybackingFlagMetricTag. Length() uint32 - // SetLength assigns uint32 provided by user to PatternFlowIpv6SrcMetricTag - SetLength(value uint32) PatternFlowIpv6SrcMetricTag - // HasLength checks if Length has been set in PatternFlowIpv6SrcMetricTag + // SetLength assigns uint32 provided by user to PatternFlowGtpv2PiggybackingFlagMetricTag + SetLength(value uint32) PatternFlowGtpv2PiggybackingFlagMetricTag + // HasLength checks if Length has been set in PatternFlowGtpv2PiggybackingFlagMetricTag HasLength() bool } // Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field // Name returns a string -func (obj *patternFlowIpv6SrcMetricTag) Name() string { +func (obj *patternFlowGtpv2PiggybackingFlagMetricTag) Name() string { return *obj.obj.Name } // Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field -// SetName sets the string value in the PatternFlowIpv6SrcMetricTag object -func (obj *patternFlowIpv6SrcMetricTag) SetName(value string) PatternFlowIpv6SrcMetricTag { +// SetName sets the string value in the PatternFlowGtpv2PiggybackingFlagMetricTag object +func (obj *patternFlowGtpv2PiggybackingFlagMetricTag) SetName(value string) PatternFlowGtpv2PiggybackingFlagMetricTag { obj.obj.Name = &value return obj @@ -207369,7 +250874,7 @@ func (obj *patternFlowIpv6SrcMetricTag) SetName(value string) PatternFlowIpv6Src // Offset in bits relative to start of corresponding header field // Offset returns a uint32 -func (obj *patternFlowIpv6SrcMetricTag) Offset() uint32 { +func (obj *patternFlowGtpv2PiggybackingFlagMetricTag) Offset() uint32 { return *obj.obj.Offset @@ -207377,13 +250882,13 @@ func (obj *patternFlowIpv6SrcMetricTag) Offset() uint32 { // Offset in bits relative to start of corresponding header field // Offset returns a uint32 -func (obj *patternFlowIpv6SrcMetricTag) HasOffset() bool { +func (obj *patternFlowGtpv2PiggybackingFlagMetricTag) HasOffset() bool { return obj.obj.Offset != nil } // Offset in bits relative to start of corresponding header field -// SetOffset sets the uint32 value in the PatternFlowIpv6SrcMetricTag object -func (obj *patternFlowIpv6SrcMetricTag) SetOffset(value uint32) PatternFlowIpv6SrcMetricTag { +// SetOffset sets the uint32 value in the PatternFlowGtpv2PiggybackingFlagMetricTag object +func (obj *patternFlowGtpv2PiggybackingFlagMetricTag) SetOffset(value uint32) PatternFlowGtpv2PiggybackingFlagMetricTag { obj.obj.Offset = &value return obj @@ -207391,7 +250896,7 @@ func (obj *patternFlowIpv6SrcMetricTag) SetOffset(value uint32) PatternFlowIpv6S // Number of bits to track for metrics starting from configured offset of corresponding header field // Length returns a uint32 -func (obj *patternFlowIpv6SrcMetricTag) Length() uint32 { +func (obj *patternFlowGtpv2PiggybackingFlagMetricTag) Length() uint32 { return *obj.obj.Length @@ -207399,83 +250904,83 @@ func (obj *patternFlowIpv6SrcMetricTag) Length() uint32 { // Number of bits to track for metrics starting from configured offset of corresponding header field // Length returns a uint32 -func (obj *patternFlowIpv6SrcMetricTag) HasLength() bool { +func (obj *patternFlowGtpv2PiggybackingFlagMetricTag) HasLength() bool { return obj.obj.Length != nil } // Number of bits to track for metrics starting from configured offset of corresponding header field -// SetLength sets the uint32 value in the PatternFlowIpv6SrcMetricTag object -func (obj *patternFlowIpv6SrcMetricTag) SetLength(value uint32) PatternFlowIpv6SrcMetricTag { +// SetLength sets the uint32 value in the PatternFlowGtpv2PiggybackingFlagMetricTag object +func (obj *patternFlowGtpv2PiggybackingFlagMetricTag) SetLength(value uint32) PatternFlowGtpv2PiggybackingFlagMetricTag { obj.obj.Length = &value return obj } -func (obj *patternFlowIpv6SrcMetricTag) validateObj(vObj *validation, set_default bool) { +func (obj *patternFlowGtpv2PiggybackingFlagMetricTag) validateObj(vObj *validation, set_default bool) { if set_default { obj.setDefault() } // Name is required if obj.obj.Name == nil { - vObj.validationErrors = append(vObj.validationErrors, "Name is required field on interface PatternFlowIpv6SrcMetricTag") + vObj.validationErrors = append(vObj.validationErrors, "Name is required field on interface PatternFlowGtpv2PiggybackingFlagMetricTag") } if obj.obj.Offset != nil { - if *obj.obj.Offset > 127 { + if *obj.obj.Offset > 0 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowIpv6SrcMetricTag.Offset <= 127 but Got %d", *obj.obj.Offset)) + fmt.Sprintf("0 <= PatternFlowGtpv2PiggybackingFlagMetricTag.Offset <= 0 but Got %d", *obj.obj.Offset)) } } if obj.obj.Length != nil { - if *obj.obj.Length < 1 || *obj.obj.Length > 128 { + if *obj.obj.Length < 1 || *obj.obj.Length > 1 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("1 <= PatternFlowIpv6SrcMetricTag.Length <= 128 but Got %d", *obj.obj.Length)) + fmt.Sprintf("1 <= PatternFlowGtpv2PiggybackingFlagMetricTag.Length <= 1 but Got %d", *obj.obj.Length)) } } } -func (obj *patternFlowIpv6SrcMetricTag) setDefault() { +func (obj *patternFlowGtpv2PiggybackingFlagMetricTag) setDefault() { if obj.obj.Offset == nil { obj.SetOffset(0) } if obj.obj.Length == nil { - obj.SetLength(128) + obj.SetLength(1) } } -// ***** PatternFlowIpv6DstCounter ***** -type patternFlowIpv6DstCounter struct { +// ***** PatternFlowGtpv2TeidFlagCounter ***** +type patternFlowGtpv2TeidFlagCounter struct { validation - obj *otg.PatternFlowIpv6DstCounter + obj *otg.PatternFlowGtpv2TeidFlagCounter } -func NewPatternFlowIpv6DstCounter() PatternFlowIpv6DstCounter { - obj := patternFlowIpv6DstCounter{obj: &otg.PatternFlowIpv6DstCounter{}} +func NewPatternFlowGtpv2TeidFlagCounter() PatternFlowGtpv2TeidFlagCounter { + obj := patternFlowGtpv2TeidFlagCounter{obj: &otg.PatternFlowGtpv2TeidFlagCounter{}} obj.setDefault() return &obj } -func (obj *patternFlowIpv6DstCounter) Msg() *otg.PatternFlowIpv6DstCounter { +func (obj *patternFlowGtpv2TeidFlagCounter) Msg() *otg.PatternFlowGtpv2TeidFlagCounter { return obj.obj } -func (obj *patternFlowIpv6DstCounter) SetMsg(msg *otg.PatternFlowIpv6DstCounter) PatternFlowIpv6DstCounter { +func (obj *patternFlowGtpv2TeidFlagCounter) SetMsg(msg *otg.PatternFlowGtpv2TeidFlagCounter) PatternFlowGtpv2TeidFlagCounter { proto.Merge(obj.obj, msg) return obj } -func (obj *patternFlowIpv6DstCounter) ToProto() (*otg.PatternFlowIpv6DstCounter, error) { +func (obj *patternFlowGtpv2TeidFlagCounter) ToProto() (*otg.PatternFlowGtpv2TeidFlagCounter, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -207483,7 +250988,7 @@ func (obj *patternFlowIpv6DstCounter) ToProto() (*otg.PatternFlowIpv6DstCounter, return obj.Msg(), nil } -func (obj *patternFlowIpv6DstCounter) FromProto(msg *otg.PatternFlowIpv6DstCounter) (PatternFlowIpv6DstCounter, error) { +func (obj *patternFlowGtpv2TeidFlagCounter) FromProto(msg *otg.PatternFlowGtpv2TeidFlagCounter) (PatternFlowGtpv2TeidFlagCounter, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -207492,7 +250997,7 @@ func (obj *patternFlowIpv6DstCounter) FromProto(msg *otg.PatternFlowIpv6DstCount return newObj, nil } -func (obj *patternFlowIpv6DstCounter) ToPbText() (string, error) { +func (obj *patternFlowGtpv2TeidFlagCounter) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -207504,7 +251009,7 @@ func (obj *patternFlowIpv6DstCounter) ToPbText() (string, error) { return string(protoMarshal), nil } -func (obj *patternFlowIpv6DstCounter) FromPbText(value string) error { +func (obj *patternFlowGtpv2TeidFlagCounter) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj @@ -207517,7 +251022,7 @@ func (obj *patternFlowIpv6DstCounter) FromPbText(value string) error { return retObj } -func (obj *patternFlowIpv6DstCounter) ToYaml() (string, error) { +func (obj *patternFlowGtpv2TeidFlagCounter) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -207538,7 +251043,7 @@ func (obj *patternFlowIpv6DstCounter) ToYaml() (string, error) { return string(data), nil } -func (obj *patternFlowIpv6DstCounter) FromYaml(value string) error { +func (obj *patternFlowGtpv2TeidFlagCounter) FromYaml(value string) error { if value == "" { value = "{}" } @@ -207563,7 +251068,7 @@ func (obj *patternFlowIpv6DstCounter) FromYaml(value string) error { return nil } -func (obj *patternFlowIpv6DstCounter) ToJson() (string, error) { +func (obj *patternFlowGtpv2TeidFlagCounter) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -207581,7 +251086,7 @@ func (obj *patternFlowIpv6DstCounter) ToJson() (string, error) { return string(data), nil } -func (obj *patternFlowIpv6DstCounter) FromJson(value string) error { +func (obj *patternFlowGtpv2TeidFlagCounter) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -207602,19 +251107,19 @@ func (obj *patternFlowIpv6DstCounter) FromJson(value string) error { return nil } -func (obj *patternFlowIpv6DstCounter) validateToAndFrom() error { +func (obj *patternFlowGtpv2TeidFlagCounter) validateToAndFrom() error { // emptyVars() obj.validateObj(&obj.validation, true) return obj.validationResult() } -func (obj *patternFlowIpv6DstCounter) Validate() error { +func (obj *patternFlowGtpv2TeidFlagCounter) Validate() error { // emptyVars() obj.validateObj(&obj.validation, false) return obj.validationResult() } -func (obj *patternFlowIpv6DstCounter) String() string { +func (obj *patternFlowGtpv2TeidFlagCounter) String() string { str, err := obj.ToYaml() if err != nil { return err.Error() @@ -207622,12 +251127,12 @@ func (obj *patternFlowIpv6DstCounter) String() string { return str } -func (obj *patternFlowIpv6DstCounter) Clone() (PatternFlowIpv6DstCounter, error) { +func (obj *patternFlowGtpv2TeidFlagCounter) Clone() (PatternFlowGtpv2TeidFlagCounter, error) { vErr := obj.Validate() if vErr != nil { return nil, vErr } - newObj := NewPatternFlowIpv6DstCounter() + newObj := NewPatternFlowGtpv2TeidFlagCounter() data, err := proto.Marshal(obj.Msg()) if err != nil { return nil, err @@ -207639,99 +251144,99 @@ func (obj *patternFlowIpv6DstCounter) Clone() (PatternFlowIpv6DstCounter, error) return newObj, nil } -// PatternFlowIpv6DstCounter is ipv6 counter pattern -type PatternFlowIpv6DstCounter interface { +// PatternFlowGtpv2TeidFlagCounter is integer counter pattern +type PatternFlowGtpv2TeidFlagCounter interface { Validation - // Msg marshals PatternFlowIpv6DstCounter to protobuf object *otg.PatternFlowIpv6DstCounter + // Msg marshals PatternFlowGtpv2TeidFlagCounter to protobuf object *otg.PatternFlowGtpv2TeidFlagCounter // and doesn't set defaults - Msg() *otg.PatternFlowIpv6DstCounter - // SetMsg unmarshals PatternFlowIpv6DstCounter from protobuf object *otg.PatternFlowIpv6DstCounter + Msg() *otg.PatternFlowGtpv2TeidFlagCounter + // SetMsg unmarshals PatternFlowGtpv2TeidFlagCounter from protobuf object *otg.PatternFlowGtpv2TeidFlagCounter // and doesn't set defaults - SetMsg(*otg.PatternFlowIpv6DstCounter) PatternFlowIpv6DstCounter - // ToProto marshals PatternFlowIpv6DstCounter to protobuf object *otg.PatternFlowIpv6DstCounter - ToProto() (*otg.PatternFlowIpv6DstCounter, error) - // ToPbText marshals PatternFlowIpv6DstCounter to protobuf text + SetMsg(*otg.PatternFlowGtpv2TeidFlagCounter) PatternFlowGtpv2TeidFlagCounter + // ToProto marshals PatternFlowGtpv2TeidFlagCounter to protobuf object *otg.PatternFlowGtpv2TeidFlagCounter + ToProto() (*otg.PatternFlowGtpv2TeidFlagCounter, error) + // ToPbText marshals PatternFlowGtpv2TeidFlagCounter to protobuf text ToPbText() (string, error) - // ToYaml marshals PatternFlowIpv6DstCounter to YAML text + // ToYaml marshals PatternFlowGtpv2TeidFlagCounter to YAML text ToYaml() (string, error) - // ToJson marshals PatternFlowIpv6DstCounter to JSON text + // ToJson marshals PatternFlowGtpv2TeidFlagCounter to JSON text ToJson() (string, error) - // FromProto unmarshals PatternFlowIpv6DstCounter from protobuf object *otg.PatternFlowIpv6DstCounter - FromProto(msg *otg.PatternFlowIpv6DstCounter) (PatternFlowIpv6DstCounter, error) - // FromPbText unmarshals PatternFlowIpv6DstCounter from protobuf text + // FromProto unmarshals PatternFlowGtpv2TeidFlagCounter from protobuf object *otg.PatternFlowGtpv2TeidFlagCounter + FromProto(msg *otg.PatternFlowGtpv2TeidFlagCounter) (PatternFlowGtpv2TeidFlagCounter, error) + // FromPbText unmarshals PatternFlowGtpv2TeidFlagCounter from protobuf text FromPbText(value string) error - // FromYaml unmarshals PatternFlowIpv6DstCounter from YAML text + // FromYaml unmarshals PatternFlowGtpv2TeidFlagCounter from YAML text FromYaml(value string) error - // FromJson unmarshals PatternFlowIpv6DstCounter from JSON text + // FromJson unmarshals PatternFlowGtpv2TeidFlagCounter from JSON text FromJson(value string) error - // Validate validates PatternFlowIpv6DstCounter + // Validate validates PatternFlowGtpv2TeidFlagCounter Validate() error // A stringer function String() string // Clones the object - Clone() (PatternFlowIpv6DstCounter, error) + Clone() (PatternFlowGtpv2TeidFlagCounter, error) validateToAndFrom() error validateObj(vObj *validation, set_default bool) setDefault() - // Start returns string, set in PatternFlowIpv6DstCounter. - Start() string - // SetStart assigns string provided by user to PatternFlowIpv6DstCounter - SetStart(value string) PatternFlowIpv6DstCounter - // HasStart checks if Start has been set in PatternFlowIpv6DstCounter + // Start returns uint32, set in PatternFlowGtpv2TeidFlagCounter. + Start() uint32 + // SetStart assigns uint32 provided by user to PatternFlowGtpv2TeidFlagCounter + SetStart(value uint32) PatternFlowGtpv2TeidFlagCounter + // HasStart checks if Start has been set in PatternFlowGtpv2TeidFlagCounter HasStart() bool - // Step returns string, set in PatternFlowIpv6DstCounter. - Step() string - // SetStep assigns string provided by user to PatternFlowIpv6DstCounter - SetStep(value string) PatternFlowIpv6DstCounter - // HasStep checks if Step has been set in PatternFlowIpv6DstCounter + // Step returns uint32, set in PatternFlowGtpv2TeidFlagCounter. + Step() uint32 + // SetStep assigns uint32 provided by user to PatternFlowGtpv2TeidFlagCounter + SetStep(value uint32) PatternFlowGtpv2TeidFlagCounter + // HasStep checks if Step has been set in PatternFlowGtpv2TeidFlagCounter HasStep() bool - // Count returns uint32, set in PatternFlowIpv6DstCounter. + // Count returns uint32, set in PatternFlowGtpv2TeidFlagCounter. Count() uint32 - // SetCount assigns uint32 provided by user to PatternFlowIpv6DstCounter - SetCount(value uint32) PatternFlowIpv6DstCounter - // HasCount checks if Count has been set in PatternFlowIpv6DstCounter + // SetCount assigns uint32 provided by user to PatternFlowGtpv2TeidFlagCounter + SetCount(value uint32) PatternFlowGtpv2TeidFlagCounter + // HasCount checks if Count has been set in PatternFlowGtpv2TeidFlagCounter HasCount() bool } // description is TBD -// Start returns a string -func (obj *patternFlowIpv6DstCounter) Start() string { +// Start returns a uint32 +func (obj *patternFlowGtpv2TeidFlagCounter) Start() uint32 { return *obj.obj.Start } // description is TBD -// Start returns a string -func (obj *patternFlowIpv6DstCounter) HasStart() bool { +// Start returns a uint32 +func (obj *patternFlowGtpv2TeidFlagCounter) HasStart() bool { return obj.obj.Start != nil } // description is TBD -// SetStart sets the string value in the PatternFlowIpv6DstCounter object -func (obj *patternFlowIpv6DstCounter) SetStart(value string) PatternFlowIpv6DstCounter { +// SetStart sets the uint32 value in the PatternFlowGtpv2TeidFlagCounter object +func (obj *patternFlowGtpv2TeidFlagCounter) SetStart(value uint32) PatternFlowGtpv2TeidFlagCounter { obj.obj.Start = &value return obj } // description is TBD -// Step returns a string -func (obj *patternFlowIpv6DstCounter) Step() string { +// Step returns a uint32 +func (obj *patternFlowGtpv2TeidFlagCounter) Step() uint32 { return *obj.obj.Step } // description is TBD -// Step returns a string -func (obj *patternFlowIpv6DstCounter) HasStep() bool { +// Step returns a uint32 +func (obj *patternFlowGtpv2TeidFlagCounter) HasStep() bool { return obj.obj.Step != nil } // description is TBD -// SetStep sets the string value in the PatternFlowIpv6DstCounter object -func (obj *patternFlowIpv6DstCounter) SetStep(value string) PatternFlowIpv6DstCounter { +// SetStep sets the uint32 value in the PatternFlowGtpv2TeidFlagCounter object +func (obj *patternFlowGtpv2TeidFlagCounter) SetStep(value uint32) PatternFlowGtpv2TeidFlagCounter { obj.obj.Step = &value return obj @@ -207739,7 +251244,7 @@ func (obj *patternFlowIpv6DstCounter) SetStep(value string) PatternFlowIpv6DstCo // description is TBD // Count returns a uint32 -func (obj *patternFlowIpv6DstCounter) Count() uint32 { +func (obj *patternFlowGtpv2TeidFlagCounter) Count() uint32 { return *obj.obj.Count @@ -207747,49 +251252,61 @@ func (obj *patternFlowIpv6DstCounter) Count() uint32 { // description is TBD // Count returns a uint32 -func (obj *patternFlowIpv6DstCounter) HasCount() bool { +func (obj *patternFlowGtpv2TeidFlagCounter) HasCount() bool { return obj.obj.Count != nil } // description is TBD -// SetCount sets the uint32 value in the PatternFlowIpv6DstCounter object -func (obj *patternFlowIpv6DstCounter) SetCount(value uint32) PatternFlowIpv6DstCounter { +// SetCount sets the uint32 value in the PatternFlowGtpv2TeidFlagCounter object +func (obj *patternFlowGtpv2TeidFlagCounter) SetCount(value uint32) PatternFlowGtpv2TeidFlagCounter { obj.obj.Count = &value return obj } -func (obj *patternFlowIpv6DstCounter) validateObj(vObj *validation, set_default bool) { +func (obj *patternFlowGtpv2TeidFlagCounter) validateObj(vObj *validation, set_default bool) { if set_default { obj.setDefault() } if obj.obj.Start != nil { - err := obj.validateIpv6(obj.Start()) - if err != nil { - vObj.validationErrors = append(vObj.validationErrors, fmt.Sprintf("%s %s", err.Error(), "on PatternFlowIpv6DstCounter.Start")) + if *obj.obj.Start > 1 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("0 <= PatternFlowGtpv2TeidFlagCounter.Start <= 1 but Got %d", *obj.obj.Start)) } } if obj.obj.Step != nil { - err := obj.validateIpv6(obj.Step()) - if err != nil { - vObj.validationErrors = append(vObj.validationErrors, fmt.Sprintf("%s %s", err.Error(), "on PatternFlowIpv6DstCounter.Step")) + if *obj.obj.Step > 1 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("0 <= PatternFlowGtpv2TeidFlagCounter.Step <= 1 but Got %d", *obj.obj.Step)) + } + + } + + if obj.obj.Count != nil { + + if *obj.obj.Count > 1 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("0 <= PatternFlowGtpv2TeidFlagCounter.Count <= 1 but Got %d", *obj.obj.Count)) } } } -func (obj *patternFlowIpv6DstCounter) setDefault() { +func (obj *patternFlowGtpv2TeidFlagCounter) setDefault() { if obj.obj.Start == nil { - obj.SetStart("::0") + obj.SetStart(0) } if obj.obj.Step == nil { - obj.SetStep("::1") + obj.SetStep(1) } if obj.obj.Count == nil { obj.SetCount(1) @@ -207797,29 +251314,29 @@ func (obj *patternFlowIpv6DstCounter) setDefault() { } -// ***** PatternFlowIpv6DstMetricTag ***** -type patternFlowIpv6DstMetricTag struct { +// ***** PatternFlowGtpv2TeidFlagMetricTag ***** +type patternFlowGtpv2TeidFlagMetricTag struct { validation - obj *otg.PatternFlowIpv6DstMetricTag + obj *otg.PatternFlowGtpv2TeidFlagMetricTag } -func NewPatternFlowIpv6DstMetricTag() PatternFlowIpv6DstMetricTag { - obj := patternFlowIpv6DstMetricTag{obj: &otg.PatternFlowIpv6DstMetricTag{}} +func NewPatternFlowGtpv2TeidFlagMetricTag() PatternFlowGtpv2TeidFlagMetricTag { + obj := patternFlowGtpv2TeidFlagMetricTag{obj: &otg.PatternFlowGtpv2TeidFlagMetricTag{}} obj.setDefault() return &obj } -func (obj *patternFlowIpv6DstMetricTag) Msg() *otg.PatternFlowIpv6DstMetricTag { +func (obj *patternFlowGtpv2TeidFlagMetricTag) Msg() *otg.PatternFlowGtpv2TeidFlagMetricTag { return obj.obj } -func (obj *patternFlowIpv6DstMetricTag) SetMsg(msg *otg.PatternFlowIpv6DstMetricTag) PatternFlowIpv6DstMetricTag { +func (obj *patternFlowGtpv2TeidFlagMetricTag) SetMsg(msg *otg.PatternFlowGtpv2TeidFlagMetricTag) PatternFlowGtpv2TeidFlagMetricTag { proto.Merge(obj.obj, msg) return obj } -func (obj *patternFlowIpv6DstMetricTag) ToProto() (*otg.PatternFlowIpv6DstMetricTag, error) { +func (obj *patternFlowGtpv2TeidFlagMetricTag) ToProto() (*otg.PatternFlowGtpv2TeidFlagMetricTag, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -207827,7 +251344,7 @@ func (obj *patternFlowIpv6DstMetricTag) ToProto() (*otg.PatternFlowIpv6DstMetric return obj.Msg(), nil } -func (obj *patternFlowIpv6DstMetricTag) FromProto(msg *otg.PatternFlowIpv6DstMetricTag) (PatternFlowIpv6DstMetricTag, error) { +func (obj *patternFlowGtpv2TeidFlagMetricTag) FromProto(msg *otg.PatternFlowGtpv2TeidFlagMetricTag) (PatternFlowGtpv2TeidFlagMetricTag, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -207836,7 +251353,7 @@ func (obj *patternFlowIpv6DstMetricTag) FromProto(msg *otg.PatternFlowIpv6DstMet return newObj, nil } -func (obj *patternFlowIpv6DstMetricTag) ToPbText() (string, error) { +func (obj *patternFlowGtpv2TeidFlagMetricTag) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -207848,7 +251365,7 @@ func (obj *patternFlowIpv6DstMetricTag) ToPbText() (string, error) { return string(protoMarshal), nil } -func (obj *patternFlowIpv6DstMetricTag) FromPbText(value string) error { +func (obj *patternFlowGtpv2TeidFlagMetricTag) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj @@ -207861,7 +251378,7 @@ func (obj *patternFlowIpv6DstMetricTag) FromPbText(value string) error { return retObj } -func (obj *patternFlowIpv6DstMetricTag) ToYaml() (string, error) { +func (obj *patternFlowGtpv2TeidFlagMetricTag) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -207882,7 +251399,7 @@ func (obj *patternFlowIpv6DstMetricTag) ToYaml() (string, error) { return string(data), nil } -func (obj *patternFlowIpv6DstMetricTag) FromYaml(value string) error { +func (obj *patternFlowGtpv2TeidFlagMetricTag) FromYaml(value string) error { if value == "" { value = "{}" } @@ -207907,7 +251424,7 @@ func (obj *patternFlowIpv6DstMetricTag) FromYaml(value string) error { return nil } -func (obj *patternFlowIpv6DstMetricTag) ToJson() (string, error) { +func (obj *patternFlowGtpv2TeidFlagMetricTag) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -207925,7 +251442,7 @@ func (obj *patternFlowIpv6DstMetricTag) ToJson() (string, error) { return string(data), nil } -func (obj *patternFlowIpv6DstMetricTag) FromJson(value string) error { +func (obj *patternFlowGtpv2TeidFlagMetricTag) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -207946,19 +251463,19 @@ func (obj *patternFlowIpv6DstMetricTag) FromJson(value string) error { return nil } -func (obj *patternFlowIpv6DstMetricTag) validateToAndFrom() error { +func (obj *patternFlowGtpv2TeidFlagMetricTag) validateToAndFrom() error { // emptyVars() obj.validateObj(&obj.validation, true) return obj.validationResult() } -func (obj *patternFlowIpv6DstMetricTag) Validate() error { +func (obj *patternFlowGtpv2TeidFlagMetricTag) Validate() error { // emptyVars() obj.validateObj(&obj.validation, false) return obj.validationResult() } -func (obj *patternFlowIpv6DstMetricTag) String() string { +func (obj *patternFlowGtpv2TeidFlagMetricTag) String() string { str, err := obj.ToYaml() if err != nil { return err.Error() @@ -207966,12 +251483,12 @@ func (obj *patternFlowIpv6DstMetricTag) String() string { return str } -func (obj *patternFlowIpv6DstMetricTag) Clone() (PatternFlowIpv6DstMetricTag, error) { +func (obj *patternFlowGtpv2TeidFlagMetricTag) Clone() (PatternFlowGtpv2TeidFlagMetricTag, error) { vErr := obj.Validate() if vErr != nil { return nil, vErr } - newObj := NewPatternFlowIpv6DstMetricTag() + newObj := NewPatternFlowGtpv2TeidFlagMetricTag() data, err := proto.Marshal(obj.Msg()) if err != nil { return nil, err @@ -207983,69 +251500,69 @@ func (obj *patternFlowIpv6DstMetricTag) Clone() (PatternFlowIpv6DstMetricTag, er return newObj, nil } -// PatternFlowIpv6DstMetricTag is metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. -type PatternFlowIpv6DstMetricTag interface { +// PatternFlowGtpv2TeidFlagMetricTag is metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. +type PatternFlowGtpv2TeidFlagMetricTag interface { Validation - // Msg marshals PatternFlowIpv6DstMetricTag to protobuf object *otg.PatternFlowIpv6DstMetricTag + // Msg marshals PatternFlowGtpv2TeidFlagMetricTag to protobuf object *otg.PatternFlowGtpv2TeidFlagMetricTag // and doesn't set defaults - Msg() *otg.PatternFlowIpv6DstMetricTag - // SetMsg unmarshals PatternFlowIpv6DstMetricTag from protobuf object *otg.PatternFlowIpv6DstMetricTag + Msg() *otg.PatternFlowGtpv2TeidFlagMetricTag + // SetMsg unmarshals PatternFlowGtpv2TeidFlagMetricTag from protobuf object *otg.PatternFlowGtpv2TeidFlagMetricTag // and doesn't set defaults - SetMsg(*otg.PatternFlowIpv6DstMetricTag) PatternFlowIpv6DstMetricTag - // ToProto marshals PatternFlowIpv6DstMetricTag to protobuf object *otg.PatternFlowIpv6DstMetricTag - ToProto() (*otg.PatternFlowIpv6DstMetricTag, error) - // ToPbText marshals PatternFlowIpv6DstMetricTag to protobuf text + SetMsg(*otg.PatternFlowGtpv2TeidFlagMetricTag) PatternFlowGtpv2TeidFlagMetricTag + // ToProto marshals PatternFlowGtpv2TeidFlagMetricTag to protobuf object *otg.PatternFlowGtpv2TeidFlagMetricTag + ToProto() (*otg.PatternFlowGtpv2TeidFlagMetricTag, error) + // ToPbText marshals PatternFlowGtpv2TeidFlagMetricTag to protobuf text ToPbText() (string, error) - // ToYaml marshals PatternFlowIpv6DstMetricTag to YAML text + // ToYaml marshals PatternFlowGtpv2TeidFlagMetricTag to YAML text ToYaml() (string, error) - // ToJson marshals PatternFlowIpv6DstMetricTag to JSON text + // ToJson marshals PatternFlowGtpv2TeidFlagMetricTag to JSON text ToJson() (string, error) - // FromProto unmarshals PatternFlowIpv6DstMetricTag from protobuf object *otg.PatternFlowIpv6DstMetricTag - FromProto(msg *otg.PatternFlowIpv6DstMetricTag) (PatternFlowIpv6DstMetricTag, error) - // FromPbText unmarshals PatternFlowIpv6DstMetricTag from protobuf text + // FromProto unmarshals PatternFlowGtpv2TeidFlagMetricTag from protobuf object *otg.PatternFlowGtpv2TeidFlagMetricTag + FromProto(msg *otg.PatternFlowGtpv2TeidFlagMetricTag) (PatternFlowGtpv2TeidFlagMetricTag, error) + // FromPbText unmarshals PatternFlowGtpv2TeidFlagMetricTag from protobuf text FromPbText(value string) error - // FromYaml unmarshals PatternFlowIpv6DstMetricTag from YAML text + // FromYaml unmarshals PatternFlowGtpv2TeidFlagMetricTag from YAML text FromYaml(value string) error - // FromJson unmarshals PatternFlowIpv6DstMetricTag from JSON text + // FromJson unmarshals PatternFlowGtpv2TeidFlagMetricTag from JSON text FromJson(value string) error - // Validate validates PatternFlowIpv6DstMetricTag + // Validate validates PatternFlowGtpv2TeidFlagMetricTag Validate() error // A stringer function String() string // Clones the object - Clone() (PatternFlowIpv6DstMetricTag, error) + Clone() (PatternFlowGtpv2TeidFlagMetricTag, error) validateToAndFrom() error validateObj(vObj *validation, set_default bool) setDefault() - // Name returns string, set in PatternFlowIpv6DstMetricTag. + // Name returns string, set in PatternFlowGtpv2TeidFlagMetricTag. Name() string - // SetName assigns string provided by user to PatternFlowIpv6DstMetricTag - SetName(value string) PatternFlowIpv6DstMetricTag - // Offset returns uint32, set in PatternFlowIpv6DstMetricTag. + // SetName assigns string provided by user to PatternFlowGtpv2TeidFlagMetricTag + SetName(value string) PatternFlowGtpv2TeidFlagMetricTag + // Offset returns uint32, set in PatternFlowGtpv2TeidFlagMetricTag. Offset() uint32 - // SetOffset assigns uint32 provided by user to PatternFlowIpv6DstMetricTag - SetOffset(value uint32) PatternFlowIpv6DstMetricTag - // HasOffset checks if Offset has been set in PatternFlowIpv6DstMetricTag + // SetOffset assigns uint32 provided by user to PatternFlowGtpv2TeidFlagMetricTag + SetOffset(value uint32) PatternFlowGtpv2TeidFlagMetricTag + // HasOffset checks if Offset has been set in PatternFlowGtpv2TeidFlagMetricTag HasOffset() bool - // Length returns uint32, set in PatternFlowIpv6DstMetricTag. + // Length returns uint32, set in PatternFlowGtpv2TeidFlagMetricTag. Length() uint32 - // SetLength assigns uint32 provided by user to PatternFlowIpv6DstMetricTag - SetLength(value uint32) PatternFlowIpv6DstMetricTag - // HasLength checks if Length has been set in PatternFlowIpv6DstMetricTag + // SetLength assigns uint32 provided by user to PatternFlowGtpv2TeidFlagMetricTag + SetLength(value uint32) PatternFlowGtpv2TeidFlagMetricTag + // HasLength checks if Length has been set in PatternFlowGtpv2TeidFlagMetricTag HasLength() bool } // Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field // Name returns a string -func (obj *patternFlowIpv6DstMetricTag) Name() string { +func (obj *patternFlowGtpv2TeidFlagMetricTag) Name() string { return *obj.obj.Name } // Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field -// SetName sets the string value in the PatternFlowIpv6DstMetricTag object -func (obj *patternFlowIpv6DstMetricTag) SetName(value string) PatternFlowIpv6DstMetricTag { +// SetName sets the string value in the PatternFlowGtpv2TeidFlagMetricTag object +func (obj *patternFlowGtpv2TeidFlagMetricTag) SetName(value string) PatternFlowGtpv2TeidFlagMetricTag { obj.obj.Name = &value return obj @@ -208053,7 +251570,7 @@ func (obj *patternFlowIpv6DstMetricTag) SetName(value string) PatternFlowIpv6Dst // Offset in bits relative to start of corresponding header field // Offset returns a uint32 -func (obj *patternFlowIpv6DstMetricTag) Offset() uint32 { +func (obj *patternFlowGtpv2TeidFlagMetricTag) Offset() uint32 { return *obj.obj.Offset @@ -208061,13 +251578,13 @@ func (obj *patternFlowIpv6DstMetricTag) Offset() uint32 { // Offset in bits relative to start of corresponding header field // Offset returns a uint32 -func (obj *patternFlowIpv6DstMetricTag) HasOffset() bool { +func (obj *patternFlowGtpv2TeidFlagMetricTag) HasOffset() bool { return obj.obj.Offset != nil } // Offset in bits relative to start of corresponding header field -// SetOffset sets the uint32 value in the PatternFlowIpv6DstMetricTag object -func (obj *patternFlowIpv6DstMetricTag) SetOffset(value uint32) PatternFlowIpv6DstMetricTag { +// SetOffset sets the uint32 value in the PatternFlowGtpv2TeidFlagMetricTag object +func (obj *patternFlowGtpv2TeidFlagMetricTag) SetOffset(value uint32) PatternFlowGtpv2TeidFlagMetricTag { obj.obj.Offset = &value return obj @@ -208075,7 +251592,7 @@ func (obj *patternFlowIpv6DstMetricTag) SetOffset(value uint32) PatternFlowIpv6D // Number of bits to track for metrics starting from configured offset of corresponding header field // Length returns a uint32 -func (obj *patternFlowIpv6DstMetricTag) Length() uint32 { +func (obj *patternFlowGtpv2TeidFlagMetricTag) Length() uint32 { return *obj.obj.Length @@ -208083,83 +251600,83 @@ func (obj *patternFlowIpv6DstMetricTag) Length() uint32 { // Number of bits to track for metrics starting from configured offset of corresponding header field // Length returns a uint32 -func (obj *patternFlowIpv6DstMetricTag) HasLength() bool { +func (obj *patternFlowGtpv2TeidFlagMetricTag) HasLength() bool { return obj.obj.Length != nil } // Number of bits to track for metrics starting from configured offset of corresponding header field -// SetLength sets the uint32 value in the PatternFlowIpv6DstMetricTag object -func (obj *patternFlowIpv6DstMetricTag) SetLength(value uint32) PatternFlowIpv6DstMetricTag { +// SetLength sets the uint32 value in the PatternFlowGtpv2TeidFlagMetricTag object +func (obj *patternFlowGtpv2TeidFlagMetricTag) SetLength(value uint32) PatternFlowGtpv2TeidFlagMetricTag { obj.obj.Length = &value return obj } -func (obj *patternFlowIpv6DstMetricTag) validateObj(vObj *validation, set_default bool) { +func (obj *patternFlowGtpv2TeidFlagMetricTag) validateObj(vObj *validation, set_default bool) { if set_default { obj.setDefault() } // Name is required if obj.obj.Name == nil { - vObj.validationErrors = append(vObj.validationErrors, "Name is required field on interface PatternFlowIpv6DstMetricTag") + vObj.validationErrors = append(vObj.validationErrors, "Name is required field on interface PatternFlowGtpv2TeidFlagMetricTag") } if obj.obj.Offset != nil { - if *obj.obj.Offset > 127 { + if *obj.obj.Offset > 0 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowIpv6DstMetricTag.Offset <= 127 but Got %d", *obj.obj.Offset)) + fmt.Sprintf("0 <= PatternFlowGtpv2TeidFlagMetricTag.Offset <= 0 but Got %d", *obj.obj.Offset)) } } if obj.obj.Length != nil { - if *obj.obj.Length < 1 || *obj.obj.Length > 128 { + if *obj.obj.Length < 1 || *obj.obj.Length > 1 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("1 <= PatternFlowIpv6DstMetricTag.Length <= 128 but Got %d", *obj.obj.Length)) + fmt.Sprintf("1 <= PatternFlowGtpv2TeidFlagMetricTag.Length <= 1 but Got %d", *obj.obj.Length)) } } } -func (obj *patternFlowIpv6DstMetricTag) setDefault() { +func (obj *patternFlowGtpv2TeidFlagMetricTag) setDefault() { if obj.obj.Offset == nil { obj.SetOffset(0) } if obj.obj.Length == nil { - obj.SetLength(128) + obj.SetLength(1) } } -// ***** PatternFlowPfcPauseDstCounter ***** -type patternFlowPfcPauseDstCounter struct { +// ***** PatternFlowGtpv2Spare1Counter ***** +type patternFlowGtpv2Spare1Counter struct { validation - obj *otg.PatternFlowPfcPauseDstCounter + obj *otg.PatternFlowGtpv2Spare1Counter } -func NewPatternFlowPfcPauseDstCounter() PatternFlowPfcPauseDstCounter { - obj := patternFlowPfcPauseDstCounter{obj: &otg.PatternFlowPfcPauseDstCounter{}} +func NewPatternFlowGtpv2Spare1Counter() PatternFlowGtpv2Spare1Counter { + obj := patternFlowGtpv2Spare1Counter{obj: &otg.PatternFlowGtpv2Spare1Counter{}} obj.setDefault() return &obj } -func (obj *patternFlowPfcPauseDstCounter) Msg() *otg.PatternFlowPfcPauseDstCounter { +func (obj *patternFlowGtpv2Spare1Counter) Msg() *otg.PatternFlowGtpv2Spare1Counter { return obj.obj } -func (obj *patternFlowPfcPauseDstCounter) SetMsg(msg *otg.PatternFlowPfcPauseDstCounter) PatternFlowPfcPauseDstCounter { +func (obj *patternFlowGtpv2Spare1Counter) SetMsg(msg *otg.PatternFlowGtpv2Spare1Counter) PatternFlowGtpv2Spare1Counter { proto.Merge(obj.obj, msg) return obj } -func (obj *patternFlowPfcPauseDstCounter) ToProto() (*otg.PatternFlowPfcPauseDstCounter, error) { +func (obj *patternFlowGtpv2Spare1Counter) ToProto() (*otg.PatternFlowGtpv2Spare1Counter, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -208167,7 +251684,7 @@ func (obj *patternFlowPfcPauseDstCounter) ToProto() (*otg.PatternFlowPfcPauseDst return obj.Msg(), nil } -func (obj *patternFlowPfcPauseDstCounter) FromProto(msg *otg.PatternFlowPfcPauseDstCounter) (PatternFlowPfcPauseDstCounter, error) { +func (obj *patternFlowGtpv2Spare1Counter) FromProto(msg *otg.PatternFlowGtpv2Spare1Counter) (PatternFlowGtpv2Spare1Counter, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -208176,7 +251693,7 @@ func (obj *patternFlowPfcPauseDstCounter) FromProto(msg *otg.PatternFlowPfcPause return newObj, nil } -func (obj *patternFlowPfcPauseDstCounter) ToPbText() (string, error) { +func (obj *patternFlowGtpv2Spare1Counter) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -208188,7 +251705,7 @@ func (obj *patternFlowPfcPauseDstCounter) ToPbText() (string, error) { return string(protoMarshal), nil } -func (obj *patternFlowPfcPauseDstCounter) FromPbText(value string) error { +func (obj *patternFlowGtpv2Spare1Counter) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj @@ -208201,7 +251718,7 @@ func (obj *patternFlowPfcPauseDstCounter) FromPbText(value string) error { return retObj } -func (obj *patternFlowPfcPauseDstCounter) ToYaml() (string, error) { +func (obj *patternFlowGtpv2Spare1Counter) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -208222,7 +251739,7 @@ func (obj *patternFlowPfcPauseDstCounter) ToYaml() (string, error) { return string(data), nil } -func (obj *patternFlowPfcPauseDstCounter) FromYaml(value string) error { +func (obj *patternFlowGtpv2Spare1Counter) FromYaml(value string) error { if value == "" { value = "{}" } @@ -208247,7 +251764,7 @@ func (obj *patternFlowPfcPauseDstCounter) FromYaml(value string) error { return nil } -func (obj *patternFlowPfcPauseDstCounter) ToJson() (string, error) { +func (obj *patternFlowGtpv2Spare1Counter) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -208265,7 +251782,7 @@ func (obj *patternFlowPfcPauseDstCounter) ToJson() (string, error) { return string(data), nil } -func (obj *patternFlowPfcPauseDstCounter) FromJson(value string) error { +func (obj *patternFlowGtpv2Spare1Counter) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -208286,19 +251803,19 @@ func (obj *patternFlowPfcPauseDstCounter) FromJson(value string) error { return nil } -func (obj *patternFlowPfcPauseDstCounter) validateToAndFrom() error { +func (obj *patternFlowGtpv2Spare1Counter) validateToAndFrom() error { // emptyVars() obj.validateObj(&obj.validation, true) return obj.validationResult() } -func (obj *patternFlowPfcPauseDstCounter) Validate() error { +func (obj *patternFlowGtpv2Spare1Counter) Validate() error { // emptyVars() obj.validateObj(&obj.validation, false) return obj.validationResult() } -func (obj *patternFlowPfcPauseDstCounter) String() string { +func (obj *patternFlowGtpv2Spare1Counter) String() string { str, err := obj.ToYaml() if err != nil { return err.Error() @@ -208306,12 +251823,12 @@ func (obj *patternFlowPfcPauseDstCounter) String() string { return str } -func (obj *patternFlowPfcPauseDstCounter) Clone() (PatternFlowPfcPauseDstCounter, error) { +func (obj *patternFlowGtpv2Spare1Counter) Clone() (PatternFlowGtpv2Spare1Counter, error) { vErr := obj.Validate() if vErr != nil { return nil, vErr } - newObj := NewPatternFlowPfcPauseDstCounter() + newObj := NewPatternFlowGtpv2Spare1Counter() data, err := proto.Marshal(obj.Msg()) if err != nil { return nil, err @@ -208323,99 +251840,99 @@ func (obj *patternFlowPfcPauseDstCounter) Clone() (PatternFlowPfcPauseDstCounter return newObj, nil } -// PatternFlowPfcPauseDstCounter is mac counter pattern -type PatternFlowPfcPauseDstCounter interface { +// PatternFlowGtpv2Spare1Counter is integer counter pattern +type PatternFlowGtpv2Spare1Counter interface { Validation - // Msg marshals PatternFlowPfcPauseDstCounter to protobuf object *otg.PatternFlowPfcPauseDstCounter + // Msg marshals PatternFlowGtpv2Spare1Counter to protobuf object *otg.PatternFlowGtpv2Spare1Counter // and doesn't set defaults - Msg() *otg.PatternFlowPfcPauseDstCounter - // SetMsg unmarshals PatternFlowPfcPauseDstCounter from protobuf object *otg.PatternFlowPfcPauseDstCounter + Msg() *otg.PatternFlowGtpv2Spare1Counter + // SetMsg unmarshals PatternFlowGtpv2Spare1Counter from protobuf object *otg.PatternFlowGtpv2Spare1Counter // and doesn't set defaults - SetMsg(*otg.PatternFlowPfcPauseDstCounter) PatternFlowPfcPauseDstCounter - // ToProto marshals PatternFlowPfcPauseDstCounter to protobuf object *otg.PatternFlowPfcPauseDstCounter - ToProto() (*otg.PatternFlowPfcPauseDstCounter, error) - // ToPbText marshals PatternFlowPfcPauseDstCounter to protobuf text + SetMsg(*otg.PatternFlowGtpv2Spare1Counter) PatternFlowGtpv2Spare1Counter + // ToProto marshals PatternFlowGtpv2Spare1Counter to protobuf object *otg.PatternFlowGtpv2Spare1Counter + ToProto() (*otg.PatternFlowGtpv2Spare1Counter, error) + // ToPbText marshals PatternFlowGtpv2Spare1Counter to protobuf text ToPbText() (string, error) - // ToYaml marshals PatternFlowPfcPauseDstCounter to YAML text + // ToYaml marshals PatternFlowGtpv2Spare1Counter to YAML text ToYaml() (string, error) - // ToJson marshals PatternFlowPfcPauseDstCounter to JSON text + // ToJson marshals PatternFlowGtpv2Spare1Counter to JSON text ToJson() (string, error) - // FromProto unmarshals PatternFlowPfcPauseDstCounter from protobuf object *otg.PatternFlowPfcPauseDstCounter - FromProto(msg *otg.PatternFlowPfcPauseDstCounter) (PatternFlowPfcPauseDstCounter, error) - // FromPbText unmarshals PatternFlowPfcPauseDstCounter from protobuf text + // FromProto unmarshals PatternFlowGtpv2Spare1Counter from protobuf object *otg.PatternFlowGtpv2Spare1Counter + FromProto(msg *otg.PatternFlowGtpv2Spare1Counter) (PatternFlowGtpv2Spare1Counter, error) + // FromPbText unmarshals PatternFlowGtpv2Spare1Counter from protobuf text FromPbText(value string) error - // FromYaml unmarshals PatternFlowPfcPauseDstCounter from YAML text + // FromYaml unmarshals PatternFlowGtpv2Spare1Counter from YAML text FromYaml(value string) error - // FromJson unmarshals PatternFlowPfcPauseDstCounter from JSON text + // FromJson unmarshals PatternFlowGtpv2Spare1Counter from JSON text FromJson(value string) error - // Validate validates PatternFlowPfcPauseDstCounter + // Validate validates PatternFlowGtpv2Spare1Counter Validate() error // A stringer function String() string // Clones the object - Clone() (PatternFlowPfcPauseDstCounter, error) + Clone() (PatternFlowGtpv2Spare1Counter, error) validateToAndFrom() error validateObj(vObj *validation, set_default bool) setDefault() - // Start returns string, set in PatternFlowPfcPauseDstCounter. - Start() string - // SetStart assigns string provided by user to PatternFlowPfcPauseDstCounter - SetStart(value string) PatternFlowPfcPauseDstCounter - // HasStart checks if Start has been set in PatternFlowPfcPauseDstCounter + // Start returns uint32, set in PatternFlowGtpv2Spare1Counter. + Start() uint32 + // SetStart assigns uint32 provided by user to PatternFlowGtpv2Spare1Counter + SetStart(value uint32) PatternFlowGtpv2Spare1Counter + // HasStart checks if Start has been set in PatternFlowGtpv2Spare1Counter HasStart() bool - // Step returns string, set in PatternFlowPfcPauseDstCounter. - Step() string - // SetStep assigns string provided by user to PatternFlowPfcPauseDstCounter - SetStep(value string) PatternFlowPfcPauseDstCounter - // HasStep checks if Step has been set in PatternFlowPfcPauseDstCounter + // Step returns uint32, set in PatternFlowGtpv2Spare1Counter. + Step() uint32 + // SetStep assigns uint32 provided by user to PatternFlowGtpv2Spare1Counter + SetStep(value uint32) PatternFlowGtpv2Spare1Counter + // HasStep checks if Step has been set in PatternFlowGtpv2Spare1Counter HasStep() bool - // Count returns uint32, set in PatternFlowPfcPauseDstCounter. + // Count returns uint32, set in PatternFlowGtpv2Spare1Counter. Count() uint32 - // SetCount assigns uint32 provided by user to PatternFlowPfcPauseDstCounter - SetCount(value uint32) PatternFlowPfcPauseDstCounter - // HasCount checks if Count has been set in PatternFlowPfcPauseDstCounter + // SetCount assigns uint32 provided by user to PatternFlowGtpv2Spare1Counter + SetCount(value uint32) PatternFlowGtpv2Spare1Counter + // HasCount checks if Count has been set in PatternFlowGtpv2Spare1Counter HasCount() bool } // description is TBD -// Start returns a string -func (obj *patternFlowPfcPauseDstCounter) Start() string { +// Start returns a uint32 +func (obj *patternFlowGtpv2Spare1Counter) Start() uint32 { return *obj.obj.Start } // description is TBD -// Start returns a string -func (obj *patternFlowPfcPauseDstCounter) HasStart() bool { +// Start returns a uint32 +func (obj *patternFlowGtpv2Spare1Counter) HasStart() bool { return obj.obj.Start != nil } // description is TBD -// SetStart sets the string value in the PatternFlowPfcPauseDstCounter object -func (obj *patternFlowPfcPauseDstCounter) SetStart(value string) PatternFlowPfcPauseDstCounter { +// SetStart sets the uint32 value in the PatternFlowGtpv2Spare1Counter object +func (obj *patternFlowGtpv2Spare1Counter) SetStart(value uint32) PatternFlowGtpv2Spare1Counter { obj.obj.Start = &value return obj } // description is TBD -// Step returns a string -func (obj *patternFlowPfcPauseDstCounter) Step() string { +// Step returns a uint32 +func (obj *patternFlowGtpv2Spare1Counter) Step() uint32 { return *obj.obj.Step } // description is TBD -// Step returns a string -func (obj *patternFlowPfcPauseDstCounter) HasStep() bool { +// Step returns a uint32 +func (obj *patternFlowGtpv2Spare1Counter) HasStep() bool { return obj.obj.Step != nil } // description is TBD -// SetStep sets the string value in the PatternFlowPfcPauseDstCounter object -func (obj *patternFlowPfcPauseDstCounter) SetStep(value string) PatternFlowPfcPauseDstCounter { +// SetStep sets the uint32 value in the PatternFlowGtpv2Spare1Counter object +func (obj *patternFlowGtpv2Spare1Counter) SetStep(value uint32) PatternFlowGtpv2Spare1Counter { obj.obj.Step = &value return obj @@ -208423,7 +251940,7 @@ func (obj *patternFlowPfcPauseDstCounter) SetStep(value string) PatternFlowPfcPa // description is TBD // Count returns a uint32 -func (obj *patternFlowPfcPauseDstCounter) Count() uint32 { +func (obj *patternFlowGtpv2Spare1Counter) Count() uint32 { return *obj.obj.Count @@ -208431,49 +251948,61 @@ func (obj *patternFlowPfcPauseDstCounter) Count() uint32 { // description is TBD // Count returns a uint32 -func (obj *patternFlowPfcPauseDstCounter) HasCount() bool { +func (obj *patternFlowGtpv2Spare1Counter) HasCount() bool { return obj.obj.Count != nil } // description is TBD -// SetCount sets the uint32 value in the PatternFlowPfcPauseDstCounter object -func (obj *patternFlowPfcPauseDstCounter) SetCount(value uint32) PatternFlowPfcPauseDstCounter { +// SetCount sets the uint32 value in the PatternFlowGtpv2Spare1Counter object +func (obj *patternFlowGtpv2Spare1Counter) SetCount(value uint32) PatternFlowGtpv2Spare1Counter { obj.obj.Count = &value return obj } -func (obj *patternFlowPfcPauseDstCounter) validateObj(vObj *validation, set_default bool) { +func (obj *patternFlowGtpv2Spare1Counter) validateObj(vObj *validation, set_default bool) { if set_default { obj.setDefault() } if obj.obj.Start != nil { - err := obj.validateMac(obj.Start()) - if err != nil { - vObj.validationErrors = append(vObj.validationErrors, fmt.Sprintf("%s %s", err.Error(), "on PatternFlowPfcPauseDstCounter.Start")) + if *obj.obj.Start > 7 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("0 <= PatternFlowGtpv2Spare1Counter.Start <= 7 but Got %d", *obj.obj.Start)) } } if obj.obj.Step != nil { - err := obj.validateMac(obj.Step()) - if err != nil { - vObj.validationErrors = append(vObj.validationErrors, fmt.Sprintf("%s %s", err.Error(), "on PatternFlowPfcPauseDstCounter.Step")) + if *obj.obj.Step > 7 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("0 <= PatternFlowGtpv2Spare1Counter.Step <= 7 but Got %d", *obj.obj.Step)) + } + + } + + if obj.obj.Count != nil { + + if *obj.obj.Count > 7 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("0 <= PatternFlowGtpv2Spare1Counter.Count <= 7 but Got %d", *obj.obj.Count)) } } } -func (obj *patternFlowPfcPauseDstCounter) setDefault() { +func (obj *patternFlowGtpv2Spare1Counter) setDefault() { if obj.obj.Start == nil { - obj.SetStart("01:80:c2:00:00:01") + obj.SetStart(0) } if obj.obj.Step == nil { - obj.SetStep("00:00:00:00:00:01") + obj.SetStep(1) } if obj.obj.Count == nil { obj.SetCount(1) @@ -208481,29 +252010,29 @@ func (obj *patternFlowPfcPauseDstCounter) setDefault() { } -// ***** PatternFlowPfcPauseDstMetricTag ***** -type patternFlowPfcPauseDstMetricTag struct { +// ***** PatternFlowGtpv2Spare1MetricTag ***** +type patternFlowGtpv2Spare1MetricTag struct { validation - obj *otg.PatternFlowPfcPauseDstMetricTag + obj *otg.PatternFlowGtpv2Spare1MetricTag } -func NewPatternFlowPfcPauseDstMetricTag() PatternFlowPfcPauseDstMetricTag { - obj := patternFlowPfcPauseDstMetricTag{obj: &otg.PatternFlowPfcPauseDstMetricTag{}} +func NewPatternFlowGtpv2Spare1MetricTag() PatternFlowGtpv2Spare1MetricTag { + obj := patternFlowGtpv2Spare1MetricTag{obj: &otg.PatternFlowGtpv2Spare1MetricTag{}} obj.setDefault() return &obj } -func (obj *patternFlowPfcPauseDstMetricTag) Msg() *otg.PatternFlowPfcPauseDstMetricTag { +func (obj *patternFlowGtpv2Spare1MetricTag) Msg() *otg.PatternFlowGtpv2Spare1MetricTag { return obj.obj } -func (obj *patternFlowPfcPauseDstMetricTag) SetMsg(msg *otg.PatternFlowPfcPauseDstMetricTag) PatternFlowPfcPauseDstMetricTag { +func (obj *patternFlowGtpv2Spare1MetricTag) SetMsg(msg *otg.PatternFlowGtpv2Spare1MetricTag) PatternFlowGtpv2Spare1MetricTag { proto.Merge(obj.obj, msg) return obj } -func (obj *patternFlowPfcPauseDstMetricTag) ToProto() (*otg.PatternFlowPfcPauseDstMetricTag, error) { +func (obj *patternFlowGtpv2Spare1MetricTag) ToProto() (*otg.PatternFlowGtpv2Spare1MetricTag, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -208511,7 +252040,7 @@ func (obj *patternFlowPfcPauseDstMetricTag) ToProto() (*otg.PatternFlowPfcPauseD return obj.Msg(), nil } -func (obj *patternFlowPfcPauseDstMetricTag) FromProto(msg *otg.PatternFlowPfcPauseDstMetricTag) (PatternFlowPfcPauseDstMetricTag, error) { +func (obj *patternFlowGtpv2Spare1MetricTag) FromProto(msg *otg.PatternFlowGtpv2Spare1MetricTag) (PatternFlowGtpv2Spare1MetricTag, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -208520,7 +252049,7 @@ func (obj *patternFlowPfcPauseDstMetricTag) FromProto(msg *otg.PatternFlowPfcPau return newObj, nil } -func (obj *patternFlowPfcPauseDstMetricTag) ToPbText() (string, error) { +func (obj *patternFlowGtpv2Spare1MetricTag) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -208532,7 +252061,7 @@ func (obj *patternFlowPfcPauseDstMetricTag) ToPbText() (string, error) { return string(protoMarshal), nil } -func (obj *patternFlowPfcPauseDstMetricTag) FromPbText(value string) error { +func (obj *patternFlowGtpv2Spare1MetricTag) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj @@ -208545,7 +252074,7 @@ func (obj *patternFlowPfcPauseDstMetricTag) FromPbText(value string) error { return retObj } -func (obj *patternFlowPfcPauseDstMetricTag) ToYaml() (string, error) { +func (obj *patternFlowGtpv2Spare1MetricTag) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -208566,7 +252095,7 @@ func (obj *patternFlowPfcPauseDstMetricTag) ToYaml() (string, error) { return string(data), nil } -func (obj *patternFlowPfcPauseDstMetricTag) FromYaml(value string) error { +func (obj *patternFlowGtpv2Spare1MetricTag) FromYaml(value string) error { if value == "" { value = "{}" } @@ -208591,7 +252120,7 @@ func (obj *patternFlowPfcPauseDstMetricTag) FromYaml(value string) error { return nil } -func (obj *patternFlowPfcPauseDstMetricTag) ToJson() (string, error) { +func (obj *patternFlowGtpv2Spare1MetricTag) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -208609,7 +252138,7 @@ func (obj *patternFlowPfcPauseDstMetricTag) ToJson() (string, error) { return string(data), nil } -func (obj *patternFlowPfcPauseDstMetricTag) FromJson(value string) error { +func (obj *patternFlowGtpv2Spare1MetricTag) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -208630,19 +252159,19 @@ func (obj *patternFlowPfcPauseDstMetricTag) FromJson(value string) error { return nil } -func (obj *patternFlowPfcPauseDstMetricTag) validateToAndFrom() error { +func (obj *patternFlowGtpv2Spare1MetricTag) validateToAndFrom() error { // emptyVars() obj.validateObj(&obj.validation, true) return obj.validationResult() } -func (obj *patternFlowPfcPauseDstMetricTag) Validate() error { +func (obj *patternFlowGtpv2Spare1MetricTag) Validate() error { // emptyVars() obj.validateObj(&obj.validation, false) return obj.validationResult() } -func (obj *patternFlowPfcPauseDstMetricTag) String() string { +func (obj *patternFlowGtpv2Spare1MetricTag) String() string { str, err := obj.ToYaml() if err != nil { return err.Error() @@ -208650,12 +252179,12 @@ func (obj *patternFlowPfcPauseDstMetricTag) String() string { return str } -func (obj *patternFlowPfcPauseDstMetricTag) Clone() (PatternFlowPfcPauseDstMetricTag, error) { +func (obj *patternFlowGtpv2Spare1MetricTag) Clone() (PatternFlowGtpv2Spare1MetricTag, error) { vErr := obj.Validate() if vErr != nil { return nil, vErr } - newObj := NewPatternFlowPfcPauseDstMetricTag() + newObj := NewPatternFlowGtpv2Spare1MetricTag() data, err := proto.Marshal(obj.Msg()) if err != nil { return nil, err @@ -208667,69 +252196,69 @@ func (obj *patternFlowPfcPauseDstMetricTag) Clone() (PatternFlowPfcPauseDstMetri return newObj, nil } -// PatternFlowPfcPauseDstMetricTag is metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. -type PatternFlowPfcPauseDstMetricTag interface { +// PatternFlowGtpv2Spare1MetricTag is metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. +type PatternFlowGtpv2Spare1MetricTag interface { Validation - // Msg marshals PatternFlowPfcPauseDstMetricTag to protobuf object *otg.PatternFlowPfcPauseDstMetricTag + // Msg marshals PatternFlowGtpv2Spare1MetricTag to protobuf object *otg.PatternFlowGtpv2Spare1MetricTag // and doesn't set defaults - Msg() *otg.PatternFlowPfcPauseDstMetricTag - // SetMsg unmarshals PatternFlowPfcPauseDstMetricTag from protobuf object *otg.PatternFlowPfcPauseDstMetricTag + Msg() *otg.PatternFlowGtpv2Spare1MetricTag + // SetMsg unmarshals PatternFlowGtpv2Spare1MetricTag from protobuf object *otg.PatternFlowGtpv2Spare1MetricTag // and doesn't set defaults - SetMsg(*otg.PatternFlowPfcPauseDstMetricTag) PatternFlowPfcPauseDstMetricTag - // ToProto marshals PatternFlowPfcPauseDstMetricTag to protobuf object *otg.PatternFlowPfcPauseDstMetricTag - ToProto() (*otg.PatternFlowPfcPauseDstMetricTag, error) - // ToPbText marshals PatternFlowPfcPauseDstMetricTag to protobuf text + SetMsg(*otg.PatternFlowGtpv2Spare1MetricTag) PatternFlowGtpv2Spare1MetricTag + // ToProto marshals PatternFlowGtpv2Spare1MetricTag to protobuf object *otg.PatternFlowGtpv2Spare1MetricTag + ToProto() (*otg.PatternFlowGtpv2Spare1MetricTag, error) + // ToPbText marshals PatternFlowGtpv2Spare1MetricTag to protobuf text ToPbText() (string, error) - // ToYaml marshals PatternFlowPfcPauseDstMetricTag to YAML text + // ToYaml marshals PatternFlowGtpv2Spare1MetricTag to YAML text ToYaml() (string, error) - // ToJson marshals PatternFlowPfcPauseDstMetricTag to JSON text + // ToJson marshals PatternFlowGtpv2Spare1MetricTag to JSON text ToJson() (string, error) - // FromProto unmarshals PatternFlowPfcPauseDstMetricTag from protobuf object *otg.PatternFlowPfcPauseDstMetricTag - FromProto(msg *otg.PatternFlowPfcPauseDstMetricTag) (PatternFlowPfcPauseDstMetricTag, error) - // FromPbText unmarshals PatternFlowPfcPauseDstMetricTag from protobuf text + // FromProto unmarshals PatternFlowGtpv2Spare1MetricTag from protobuf object *otg.PatternFlowGtpv2Spare1MetricTag + FromProto(msg *otg.PatternFlowGtpv2Spare1MetricTag) (PatternFlowGtpv2Spare1MetricTag, error) + // FromPbText unmarshals PatternFlowGtpv2Spare1MetricTag from protobuf text FromPbText(value string) error - // FromYaml unmarshals PatternFlowPfcPauseDstMetricTag from YAML text + // FromYaml unmarshals PatternFlowGtpv2Spare1MetricTag from YAML text FromYaml(value string) error - // FromJson unmarshals PatternFlowPfcPauseDstMetricTag from JSON text + // FromJson unmarshals PatternFlowGtpv2Spare1MetricTag from JSON text FromJson(value string) error - // Validate validates PatternFlowPfcPauseDstMetricTag + // Validate validates PatternFlowGtpv2Spare1MetricTag Validate() error // A stringer function String() string // Clones the object - Clone() (PatternFlowPfcPauseDstMetricTag, error) + Clone() (PatternFlowGtpv2Spare1MetricTag, error) validateToAndFrom() error validateObj(vObj *validation, set_default bool) setDefault() - // Name returns string, set in PatternFlowPfcPauseDstMetricTag. + // Name returns string, set in PatternFlowGtpv2Spare1MetricTag. Name() string - // SetName assigns string provided by user to PatternFlowPfcPauseDstMetricTag - SetName(value string) PatternFlowPfcPauseDstMetricTag - // Offset returns uint32, set in PatternFlowPfcPauseDstMetricTag. + // SetName assigns string provided by user to PatternFlowGtpv2Spare1MetricTag + SetName(value string) PatternFlowGtpv2Spare1MetricTag + // Offset returns uint32, set in PatternFlowGtpv2Spare1MetricTag. Offset() uint32 - // SetOffset assigns uint32 provided by user to PatternFlowPfcPauseDstMetricTag - SetOffset(value uint32) PatternFlowPfcPauseDstMetricTag - // HasOffset checks if Offset has been set in PatternFlowPfcPauseDstMetricTag + // SetOffset assigns uint32 provided by user to PatternFlowGtpv2Spare1MetricTag + SetOffset(value uint32) PatternFlowGtpv2Spare1MetricTag + // HasOffset checks if Offset has been set in PatternFlowGtpv2Spare1MetricTag HasOffset() bool - // Length returns uint32, set in PatternFlowPfcPauseDstMetricTag. + // Length returns uint32, set in PatternFlowGtpv2Spare1MetricTag. Length() uint32 - // SetLength assigns uint32 provided by user to PatternFlowPfcPauseDstMetricTag - SetLength(value uint32) PatternFlowPfcPauseDstMetricTag - // HasLength checks if Length has been set in PatternFlowPfcPauseDstMetricTag + // SetLength assigns uint32 provided by user to PatternFlowGtpv2Spare1MetricTag + SetLength(value uint32) PatternFlowGtpv2Spare1MetricTag + // HasLength checks if Length has been set in PatternFlowGtpv2Spare1MetricTag HasLength() bool } // Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field // Name returns a string -func (obj *patternFlowPfcPauseDstMetricTag) Name() string { +func (obj *patternFlowGtpv2Spare1MetricTag) Name() string { return *obj.obj.Name } // Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field -// SetName sets the string value in the PatternFlowPfcPauseDstMetricTag object -func (obj *patternFlowPfcPauseDstMetricTag) SetName(value string) PatternFlowPfcPauseDstMetricTag { +// SetName sets the string value in the PatternFlowGtpv2Spare1MetricTag object +func (obj *patternFlowGtpv2Spare1MetricTag) SetName(value string) PatternFlowGtpv2Spare1MetricTag { obj.obj.Name = &value return obj @@ -208737,7 +252266,7 @@ func (obj *patternFlowPfcPauseDstMetricTag) SetName(value string) PatternFlowPfc // Offset in bits relative to start of corresponding header field // Offset returns a uint32 -func (obj *patternFlowPfcPauseDstMetricTag) Offset() uint32 { +func (obj *patternFlowGtpv2Spare1MetricTag) Offset() uint32 { return *obj.obj.Offset @@ -208745,13 +252274,13 @@ func (obj *patternFlowPfcPauseDstMetricTag) Offset() uint32 { // Offset in bits relative to start of corresponding header field // Offset returns a uint32 -func (obj *patternFlowPfcPauseDstMetricTag) HasOffset() bool { +func (obj *patternFlowGtpv2Spare1MetricTag) HasOffset() bool { return obj.obj.Offset != nil } // Offset in bits relative to start of corresponding header field -// SetOffset sets the uint32 value in the PatternFlowPfcPauseDstMetricTag object -func (obj *patternFlowPfcPauseDstMetricTag) SetOffset(value uint32) PatternFlowPfcPauseDstMetricTag { +// SetOffset sets the uint32 value in the PatternFlowGtpv2Spare1MetricTag object +func (obj *patternFlowGtpv2Spare1MetricTag) SetOffset(value uint32) PatternFlowGtpv2Spare1MetricTag { obj.obj.Offset = &value return obj @@ -208759,7 +252288,7 @@ func (obj *patternFlowPfcPauseDstMetricTag) SetOffset(value uint32) PatternFlowP // Number of bits to track for metrics starting from configured offset of corresponding header field // Length returns a uint32 -func (obj *patternFlowPfcPauseDstMetricTag) Length() uint32 { +func (obj *patternFlowGtpv2Spare1MetricTag) Length() uint32 { return *obj.obj.Length @@ -208767,83 +252296,83 @@ func (obj *patternFlowPfcPauseDstMetricTag) Length() uint32 { // Number of bits to track for metrics starting from configured offset of corresponding header field // Length returns a uint32 -func (obj *patternFlowPfcPauseDstMetricTag) HasLength() bool { +func (obj *patternFlowGtpv2Spare1MetricTag) HasLength() bool { return obj.obj.Length != nil } // Number of bits to track for metrics starting from configured offset of corresponding header field -// SetLength sets the uint32 value in the PatternFlowPfcPauseDstMetricTag object -func (obj *patternFlowPfcPauseDstMetricTag) SetLength(value uint32) PatternFlowPfcPauseDstMetricTag { +// SetLength sets the uint32 value in the PatternFlowGtpv2Spare1MetricTag object +func (obj *patternFlowGtpv2Spare1MetricTag) SetLength(value uint32) PatternFlowGtpv2Spare1MetricTag { obj.obj.Length = &value return obj } -func (obj *patternFlowPfcPauseDstMetricTag) validateObj(vObj *validation, set_default bool) { +func (obj *patternFlowGtpv2Spare1MetricTag) validateObj(vObj *validation, set_default bool) { if set_default { obj.setDefault() } // Name is required if obj.obj.Name == nil { - vObj.validationErrors = append(vObj.validationErrors, "Name is required field on interface PatternFlowPfcPauseDstMetricTag") + vObj.validationErrors = append(vObj.validationErrors, "Name is required field on interface PatternFlowGtpv2Spare1MetricTag") } if obj.obj.Offset != nil { - if *obj.obj.Offset > 47 { + if *obj.obj.Offset > 2 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowPfcPauseDstMetricTag.Offset <= 47 but Got %d", *obj.obj.Offset)) + fmt.Sprintf("0 <= PatternFlowGtpv2Spare1MetricTag.Offset <= 2 but Got %d", *obj.obj.Offset)) } } if obj.obj.Length != nil { - if *obj.obj.Length < 1 || *obj.obj.Length > 48 { + if *obj.obj.Length < 1 || *obj.obj.Length > 3 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("1 <= PatternFlowPfcPauseDstMetricTag.Length <= 48 but Got %d", *obj.obj.Length)) + fmt.Sprintf("1 <= PatternFlowGtpv2Spare1MetricTag.Length <= 3 but Got %d", *obj.obj.Length)) } } } -func (obj *patternFlowPfcPauseDstMetricTag) setDefault() { +func (obj *patternFlowGtpv2Spare1MetricTag) setDefault() { if obj.obj.Offset == nil { obj.SetOffset(0) } if obj.obj.Length == nil { - obj.SetLength(48) + obj.SetLength(3) } } -// ***** PatternFlowPfcPauseSrcCounter ***** -type patternFlowPfcPauseSrcCounter struct { +// ***** PatternFlowGtpv2MessageTypeCounter ***** +type patternFlowGtpv2MessageTypeCounter struct { validation - obj *otg.PatternFlowPfcPauseSrcCounter + obj *otg.PatternFlowGtpv2MessageTypeCounter } -func NewPatternFlowPfcPauseSrcCounter() PatternFlowPfcPauseSrcCounter { - obj := patternFlowPfcPauseSrcCounter{obj: &otg.PatternFlowPfcPauseSrcCounter{}} +func NewPatternFlowGtpv2MessageTypeCounter() PatternFlowGtpv2MessageTypeCounter { + obj := patternFlowGtpv2MessageTypeCounter{obj: &otg.PatternFlowGtpv2MessageTypeCounter{}} obj.setDefault() return &obj } -func (obj *patternFlowPfcPauseSrcCounter) Msg() *otg.PatternFlowPfcPauseSrcCounter { +func (obj *patternFlowGtpv2MessageTypeCounter) Msg() *otg.PatternFlowGtpv2MessageTypeCounter { return obj.obj } -func (obj *patternFlowPfcPauseSrcCounter) SetMsg(msg *otg.PatternFlowPfcPauseSrcCounter) PatternFlowPfcPauseSrcCounter { +func (obj *patternFlowGtpv2MessageTypeCounter) SetMsg(msg *otg.PatternFlowGtpv2MessageTypeCounter) PatternFlowGtpv2MessageTypeCounter { proto.Merge(obj.obj, msg) return obj } -func (obj *patternFlowPfcPauseSrcCounter) ToProto() (*otg.PatternFlowPfcPauseSrcCounter, error) { +func (obj *patternFlowGtpv2MessageTypeCounter) ToProto() (*otg.PatternFlowGtpv2MessageTypeCounter, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -208851,7 +252380,7 @@ func (obj *patternFlowPfcPauseSrcCounter) ToProto() (*otg.PatternFlowPfcPauseSrc return obj.Msg(), nil } -func (obj *patternFlowPfcPauseSrcCounter) FromProto(msg *otg.PatternFlowPfcPauseSrcCounter) (PatternFlowPfcPauseSrcCounter, error) { +func (obj *patternFlowGtpv2MessageTypeCounter) FromProto(msg *otg.PatternFlowGtpv2MessageTypeCounter) (PatternFlowGtpv2MessageTypeCounter, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -208860,7 +252389,7 @@ func (obj *patternFlowPfcPauseSrcCounter) FromProto(msg *otg.PatternFlowPfcPause return newObj, nil } -func (obj *patternFlowPfcPauseSrcCounter) ToPbText() (string, error) { +func (obj *patternFlowGtpv2MessageTypeCounter) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -208872,7 +252401,7 @@ func (obj *patternFlowPfcPauseSrcCounter) ToPbText() (string, error) { return string(protoMarshal), nil } -func (obj *patternFlowPfcPauseSrcCounter) FromPbText(value string) error { +func (obj *patternFlowGtpv2MessageTypeCounter) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj @@ -208885,7 +252414,7 @@ func (obj *patternFlowPfcPauseSrcCounter) FromPbText(value string) error { return retObj } -func (obj *patternFlowPfcPauseSrcCounter) ToYaml() (string, error) { +func (obj *patternFlowGtpv2MessageTypeCounter) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -208906,7 +252435,7 @@ func (obj *patternFlowPfcPauseSrcCounter) ToYaml() (string, error) { return string(data), nil } -func (obj *patternFlowPfcPauseSrcCounter) FromYaml(value string) error { +func (obj *patternFlowGtpv2MessageTypeCounter) FromYaml(value string) error { if value == "" { value = "{}" } @@ -208931,7 +252460,7 @@ func (obj *patternFlowPfcPauseSrcCounter) FromYaml(value string) error { return nil } -func (obj *patternFlowPfcPauseSrcCounter) ToJson() (string, error) { +func (obj *patternFlowGtpv2MessageTypeCounter) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -208949,7 +252478,7 @@ func (obj *patternFlowPfcPauseSrcCounter) ToJson() (string, error) { return string(data), nil } -func (obj *patternFlowPfcPauseSrcCounter) FromJson(value string) error { +func (obj *patternFlowGtpv2MessageTypeCounter) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -208970,19 +252499,19 @@ func (obj *patternFlowPfcPauseSrcCounter) FromJson(value string) error { return nil } -func (obj *patternFlowPfcPauseSrcCounter) validateToAndFrom() error { +func (obj *patternFlowGtpv2MessageTypeCounter) validateToAndFrom() error { // emptyVars() obj.validateObj(&obj.validation, true) return obj.validationResult() } -func (obj *patternFlowPfcPauseSrcCounter) Validate() error { +func (obj *patternFlowGtpv2MessageTypeCounter) Validate() error { // emptyVars() obj.validateObj(&obj.validation, false) return obj.validationResult() } -func (obj *patternFlowPfcPauseSrcCounter) String() string { +func (obj *patternFlowGtpv2MessageTypeCounter) String() string { str, err := obj.ToYaml() if err != nil { return err.Error() @@ -208990,12 +252519,12 @@ func (obj *patternFlowPfcPauseSrcCounter) String() string { return str } -func (obj *patternFlowPfcPauseSrcCounter) Clone() (PatternFlowPfcPauseSrcCounter, error) { +func (obj *patternFlowGtpv2MessageTypeCounter) Clone() (PatternFlowGtpv2MessageTypeCounter, error) { vErr := obj.Validate() if vErr != nil { return nil, vErr } - newObj := NewPatternFlowPfcPauseSrcCounter() + newObj := NewPatternFlowGtpv2MessageTypeCounter() data, err := proto.Marshal(obj.Msg()) if err != nil { return nil, err @@ -209007,99 +252536,99 @@ func (obj *patternFlowPfcPauseSrcCounter) Clone() (PatternFlowPfcPauseSrcCounter return newObj, nil } -// PatternFlowPfcPauseSrcCounter is mac counter pattern -type PatternFlowPfcPauseSrcCounter interface { +// PatternFlowGtpv2MessageTypeCounter is integer counter pattern +type PatternFlowGtpv2MessageTypeCounter interface { Validation - // Msg marshals PatternFlowPfcPauseSrcCounter to protobuf object *otg.PatternFlowPfcPauseSrcCounter + // Msg marshals PatternFlowGtpv2MessageTypeCounter to protobuf object *otg.PatternFlowGtpv2MessageTypeCounter // and doesn't set defaults - Msg() *otg.PatternFlowPfcPauseSrcCounter - // SetMsg unmarshals PatternFlowPfcPauseSrcCounter from protobuf object *otg.PatternFlowPfcPauseSrcCounter + Msg() *otg.PatternFlowGtpv2MessageTypeCounter + // SetMsg unmarshals PatternFlowGtpv2MessageTypeCounter from protobuf object *otg.PatternFlowGtpv2MessageTypeCounter // and doesn't set defaults - SetMsg(*otg.PatternFlowPfcPauseSrcCounter) PatternFlowPfcPauseSrcCounter - // ToProto marshals PatternFlowPfcPauseSrcCounter to protobuf object *otg.PatternFlowPfcPauseSrcCounter - ToProto() (*otg.PatternFlowPfcPauseSrcCounter, error) - // ToPbText marshals PatternFlowPfcPauseSrcCounter to protobuf text + SetMsg(*otg.PatternFlowGtpv2MessageTypeCounter) PatternFlowGtpv2MessageTypeCounter + // ToProto marshals PatternFlowGtpv2MessageTypeCounter to protobuf object *otg.PatternFlowGtpv2MessageTypeCounter + ToProto() (*otg.PatternFlowGtpv2MessageTypeCounter, error) + // ToPbText marshals PatternFlowGtpv2MessageTypeCounter to protobuf text ToPbText() (string, error) - // ToYaml marshals PatternFlowPfcPauseSrcCounter to YAML text + // ToYaml marshals PatternFlowGtpv2MessageTypeCounter to YAML text ToYaml() (string, error) - // ToJson marshals PatternFlowPfcPauseSrcCounter to JSON text + // ToJson marshals PatternFlowGtpv2MessageTypeCounter to JSON text ToJson() (string, error) - // FromProto unmarshals PatternFlowPfcPauseSrcCounter from protobuf object *otg.PatternFlowPfcPauseSrcCounter - FromProto(msg *otg.PatternFlowPfcPauseSrcCounter) (PatternFlowPfcPauseSrcCounter, error) - // FromPbText unmarshals PatternFlowPfcPauseSrcCounter from protobuf text + // FromProto unmarshals PatternFlowGtpv2MessageTypeCounter from protobuf object *otg.PatternFlowGtpv2MessageTypeCounter + FromProto(msg *otg.PatternFlowGtpv2MessageTypeCounter) (PatternFlowGtpv2MessageTypeCounter, error) + // FromPbText unmarshals PatternFlowGtpv2MessageTypeCounter from protobuf text FromPbText(value string) error - // FromYaml unmarshals PatternFlowPfcPauseSrcCounter from YAML text + // FromYaml unmarshals PatternFlowGtpv2MessageTypeCounter from YAML text FromYaml(value string) error - // FromJson unmarshals PatternFlowPfcPauseSrcCounter from JSON text + // FromJson unmarshals PatternFlowGtpv2MessageTypeCounter from JSON text FromJson(value string) error - // Validate validates PatternFlowPfcPauseSrcCounter + // Validate validates PatternFlowGtpv2MessageTypeCounter Validate() error // A stringer function String() string // Clones the object - Clone() (PatternFlowPfcPauseSrcCounter, error) + Clone() (PatternFlowGtpv2MessageTypeCounter, error) validateToAndFrom() error validateObj(vObj *validation, set_default bool) setDefault() - // Start returns string, set in PatternFlowPfcPauseSrcCounter. - Start() string - // SetStart assigns string provided by user to PatternFlowPfcPauseSrcCounter - SetStart(value string) PatternFlowPfcPauseSrcCounter - // HasStart checks if Start has been set in PatternFlowPfcPauseSrcCounter + // Start returns uint32, set in PatternFlowGtpv2MessageTypeCounter. + Start() uint32 + // SetStart assigns uint32 provided by user to PatternFlowGtpv2MessageTypeCounter + SetStart(value uint32) PatternFlowGtpv2MessageTypeCounter + // HasStart checks if Start has been set in PatternFlowGtpv2MessageTypeCounter HasStart() bool - // Step returns string, set in PatternFlowPfcPauseSrcCounter. - Step() string - // SetStep assigns string provided by user to PatternFlowPfcPauseSrcCounter - SetStep(value string) PatternFlowPfcPauseSrcCounter - // HasStep checks if Step has been set in PatternFlowPfcPauseSrcCounter + // Step returns uint32, set in PatternFlowGtpv2MessageTypeCounter. + Step() uint32 + // SetStep assigns uint32 provided by user to PatternFlowGtpv2MessageTypeCounter + SetStep(value uint32) PatternFlowGtpv2MessageTypeCounter + // HasStep checks if Step has been set in PatternFlowGtpv2MessageTypeCounter HasStep() bool - // Count returns uint32, set in PatternFlowPfcPauseSrcCounter. + // Count returns uint32, set in PatternFlowGtpv2MessageTypeCounter. Count() uint32 - // SetCount assigns uint32 provided by user to PatternFlowPfcPauseSrcCounter - SetCount(value uint32) PatternFlowPfcPauseSrcCounter - // HasCount checks if Count has been set in PatternFlowPfcPauseSrcCounter + // SetCount assigns uint32 provided by user to PatternFlowGtpv2MessageTypeCounter + SetCount(value uint32) PatternFlowGtpv2MessageTypeCounter + // HasCount checks if Count has been set in PatternFlowGtpv2MessageTypeCounter HasCount() bool } // description is TBD -// Start returns a string -func (obj *patternFlowPfcPauseSrcCounter) Start() string { +// Start returns a uint32 +func (obj *patternFlowGtpv2MessageTypeCounter) Start() uint32 { return *obj.obj.Start } // description is TBD -// Start returns a string -func (obj *patternFlowPfcPauseSrcCounter) HasStart() bool { +// Start returns a uint32 +func (obj *patternFlowGtpv2MessageTypeCounter) HasStart() bool { return obj.obj.Start != nil } // description is TBD -// SetStart sets the string value in the PatternFlowPfcPauseSrcCounter object -func (obj *patternFlowPfcPauseSrcCounter) SetStart(value string) PatternFlowPfcPauseSrcCounter { +// SetStart sets the uint32 value in the PatternFlowGtpv2MessageTypeCounter object +func (obj *patternFlowGtpv2MessageTypeCounter) SetStart(value uint32) PatternFlowGtpv2MessageTypeCounter { obj.obj.Start = &value return obj } // description is TBD -// Step returns a string -func (obj *patternFlowPfcPauseSrcCounter) Step() string { +// Step returns a uint32 +func (obj *patternFlowGtpv2MessageTypeCounter) Step() uint32 { return *obj.obj.Step } // description is TBD -// Step returns a string -func (obj *patternFlowPfcPauseSrcCounter) HasStep() bool { +// Step returns a uint32 +func (obj *patternFlowGtpv2MessageTypeCounter) HasStep() bool { return obj.obj.Step != nil } // description is TBD -// SetStep sets the string value in the PatternFlowPfcPauseSrcCounter object -func (obj *patternFlowPfcPauseSrcCounter) SetStep(value string) PatternFlowPfcPauseSrcCounter { +// SetStep sets the uint32 value in the PatternFlowGtpv2MessageTypeCounter object +func (obj *patternFlowGtpv2MessageTypeCounter) SetStep(value uint32) PatternFlowGtpv2MessageTypeCounter { obj.obj.Step = &value return obj @@ -209107,7 +252636,7 @@ func (obj *patternFlowPfcPauseSrcCounter) SetStep(value string) PatternFlowPfcPa // description is TBD // Count returns a uint32 -func (obj *patternFlowPfcPauseSrcCounter) Count() uint32 { +func (obj *patternFlowGtpv2MessageTypeCounter) Count() uint32 { return *obj.obj.Count @@ -209115,49 +252644,61 @@ func (obj *patternFlowPfcPauseSrcCounter) Count() uint32 { // description is TBD // Count returns a uint32 -func (obj *patternFlowPfcPauseSrcCounter) HasCount() bool { +func (obj *patternFlowGtpv2MessageTypeCounter) HasCount() bool { return obj.obj.Count != nil } // description is TBD -// SetCount sets the uint32 value in the PatternFlowPfcPauseSrcCounter object -func (obj *patternFlowPfcPauseSrcCounter) SetCount(value uint32) PatternFlowPfcPauseSrcCounter { +// SetCount sets the uint32 value in the PatternFlowGtpv2MessageTypeCounter object +func (obj *patternFlowGtpv2MessageTypeCounter) SetCount(value uint32) PatternFlowGtpv2MessageTypeCounter { obj.obj.Count = &value return obj } -func (obj *patternFlowPfcPauseSrcCounter) validateObj(vObj *validation, set_default bool) { +func (obj *patternFlowGtpv2MessageTypeCounter) validateObj(vObj *validation, set_default bool) { if set_default { obj.setDefault() } if obj.obj.Start != nil { - err := obj.validateMac(obj.Start()) - if err != nil { - vObj.validationErrors = append(vObj.validationErrors, fmt.Sprintf("%s %s", err.Error(), "on PatternFlowPfcPauseSrcCounter.Start")) + if *obj.obj.Start > 255 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("0 <= PatternFlowGtpv2MessageTypeCounter.Start <= 255 but Got %d", *obj.obj.Start)) } } if obj.obj.Step != nil { - err := obj.validateMac(obj.Step()) - if err != nil { - vObj.validationErrors = append(vObj.validationErrors, fmt.Sprintf("%s %s", err.Error(), "on PatternFlowPfcPauseSrcCounter.Step")) + if *obj.obj.Step > 255 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("0 <= PatternFlowGtpv2MessageTypeCounter.Step <= 255 but Got %d", *obj.obj.Step)) + } + + } + + if obj.obj.Count != nil { + + if *obj.obj.Count > 255 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("0 <= PatternFlowGtpv2MessageTypeCounter.Count <= 255 but Got %d", *obj.obj.Count)) } } } -func (obj *patternFlowPfcPauseSrcCounter) setDefault() { +func (obj *patternFlowGtpv2MessageTypeCounter) setDefault() { if obj.obj.Start == nil { - obj.SetStart("00:00:00:00:00:00") + obj.SetStart(0) } if obj.obj.Step == nil { - obj.SetStep("00:00:00:00:00:01") + obj.SetStep(1) } if obj.obj.Count == nil { obj.SetCount(1) @@ -209165,29 +252706,29 @@ func (obj *patternFlowPfcPauseSrcCounter) setDefault() { } -// ***** PatternFlowPfcPauseSrcMetricTag ***** -type patternFlowPfcPauseSrcMetricTag struct { +// ***** PatternFlowGtpv2MessageTypeMetricTag ***** +type patternFlowGtpv2MessageTypeMetricTag struct { validation - obj *otg.PatternFlowPfcPauseSrcMetricTag + obj *otg.PatternFlowGtpv2MessageTypeMetricTag } -func NewPatternFlowPfcPauseSrcMetricTag() PatternFlowPfcPauseSrcMetricTag { - obj := patternFlowPfcPauseSrcMetricTag{obj: &otg.PatternFlowPfcPauseSrcMetricTag{}} +func NewPatternFlowGtpv2MessageTypeMetricTag() PatternFlowGtpv2MessageTypeMetricTag { + obj := patternFlowGtpv2MessageTypeMetricTag{obj: &otg.PatternFlowGtpv2MessageTypeMetricTag{}} obj.setDefault() return &obj } -func (obj *patternFlowPfcPauseSrcMetricTag) Msg() *otg.PatternFlowPfcPauseSrcMetricTag { +func (obj *patternFlowGtpv2MessageTypeMetricTag) Msg() *otg.PatternFlowGtpv2MessageTypeMetricTag { return obj.obj } -func (obj *patternFlowPfcPauseSrcMetricTag) SetMsg(msg *otg.PatternFlowPfcPauseSrcMetricTag) PatternFlowPfcPauseSrcMetricTag { +func (obj *patternFlowGtpv2MessageTypeMetricTag) SetMsg(msg *otg.PatternFlowGtpv2MessageTypeMetricTag) PatternFlowGtpv2MessageTypeMetricTag { proto.Merge(obj.obj, msg) return obj } -func (obj *patternFlowPfcPauseSrcMetricTag) ToProto() (*otg.PatternFlowPfcPauseSrcMetricTag, error) { +func (obj *patternFlowGtpv2MessageTypeMetricTag) ToProto() (*otg.PatternFlowGtpv2MessageTypeMetricTag, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -209195,7 +252736,7 @@ func (obj *patternFlowPfcPauseSrcMetricTag) ToProto() (*otg.PatternFlowPfcPauseS return obj.Msg(), nil } -func (obj *patternFlowPfcPauseSrcMetricTag) FromProto(msg *otg.PatternFlowPfcPauseSrcMetricTag) (PatternFlowPfcPauseSrcMetricTag, error) { +func (obj *patternFlowGtpv2MessageTypeMetricTag) FromProto(msg *otg.PatternFlowGtpv2MessageTypeMetricTag) (PatternFlowGtpv2MessageTypeMetricTag, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -209204,7 +252745,7 @@ func (obj *patternFlowPfcPauseSrcMetricTag) FromProto(msg *otg.PatternFlowPfcPau return newObj, nil } -func (obj *patternFlowPfcPauseSrcMetricTag) ToPbText() (string, error) { +func (obj *patternFlowGtpv2MessageTypeMetricTag) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -209216,7 +252757,7 @@ func (obj *patternFlowPfcPauseSrcMetricTag) ToPbText() (string, error) { return string(protoMarshal), nil } -func (obj *patternFlowPfcPauseSrcMetricTag) FromPbText(value string) error { +func (obj *patternFlowGtpv2MessageTypeMetricTag) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj @@ -209229,7 +252770,7 @@ func (obj *patternFlowPfcPauseSrcMetricTag) FromPbText(value string) error { return retObj } -func (obj *patternFlowPfcPauseSrcMetricTag) ToYaml() (string, error) { +func (obj *patternFlowGtpv2MessageTypeMetricTag) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -209250,7 +252791,7 @@ func (obj *patternFlowPfcPauseSrcMetricTag) ToYaml() (string, error) { return string(data), nil } -func (obj *patternFlowPfcPauseSrcMetricTag) FromYaml(value string) error { +func (obj *patternFlowGtpv2MessageTypeMetricTag) FromYaml(value string) error { if value == "" { value = "{}" } @@ -209275,7 +252816,7 @@ func (obj *patternFlowPfcPauseSrcMetricTag) FromYaml(value string) error { return nil } -func (obj *patternFlowPfcPauseSrcMetricTag) ToJson() (string, error) { +func (obj *patternFlowGtpv2MessageTypeMetricTag) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -209293,7 +252834,7 @@ func (obj *patternFlowPfcPauseSrcMetricTag) ToJson() (string, error) { return string(data), nil } -func (obj *patternFlowPfcPauseSrcMetricTag) FromJson(value string) error { +func (obj *patternFlowGtpv2MessageTypeMetricTag) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -209314,19 +252855,19 @@ func (obj *patternFlowPfcPauseSrcMetricTag) FromJson(value string) error { return nil } -func (obj *patternFlowPfcPauseSrcMetricTag) validateToAndFrom() error { +func (obj *patternFlowGtpv2MessageTypeMetricTag) validateToAndFrom() error { // emptyVars() obj.validateObj(&obj.validation, true) return obj.validationResult() } -func (obj *patternFlowPfcPauseSrcMetricTag) Validate() error { +func (obj *patternFlowGtpv2MessageTypeMetricTag) Validate() error { // emptyVars() obj.validateObj(&obj.validation, false) return obj.validationResult() } -func (obj *patternFlowPfcPauseSrcMetricTag) String() string { +func (obj *patternFlowGtpv2MessageTypeMetricTag) String() string { str, err := obj.ToYaml() if err != nil { return err.Error() @@ -209334,12 +252875,12 @@ func (obj *patternFlowPfcPauseSrcMetricTag) String() string { return str } -func (obj *patternFlowPfcPauseSrcMetricTag) Clone() (PatternFlowPfcPauseSrcMetricTag, error) { +func (obj *patternFlowGtpv2MessageTypeMetricTag) Clone() (PatternFlowGtpv2MessageTypeMetricTag, error) { vErr := obj.Validate() if vErr != nil { return nil, vErr } - newObj := NewPatternFlowPfcPauseSrcMetricTag() + newObj := NewPatternFlowGtpv2MessageTypeMetricTag() data, err := proto.Marshal(obj.Msg()) if err != nil { return nil, err @@ -209351,69 +252892,69 @@ func (obj *patternFlowPfcPauseSrcMetricTag) Clone() (PatternFlowPfcPauseSrcMetri return newObj, nil } -// PatternFlowPfcPauseSrcMetricTag is metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. -type PatternFlowPfcPauseSrcMetricTag interface { +// PatternFlowGtpv2MessageTypeMetricTag is metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. +type PatternFlowGtpv2MessageTypeMetricTag interface { Validation - // Msg marshals PatternFlowPfcPauseSrcMetricTag to protobuf object *otg.PatternFlowPfcPauseSrcMetricTag + // Msg marshals PatternFlowGtpv2MessageTypeMetricTag to protobuf object *otg.PatternFlowGtpv2MessageTypeMetricTag // and doesn't set defaults - Msg() *otg.PatternFlowPfcPauseSrcMetricTag - // SetMsg unmarshals PatternFlowPfcPauseSrcMetricTag from protobuf object *otg.PatternFlowPfcPauseSrcMetricTag + Msg() *otg.PatternFlowGtpv2MessageTypeMetricTag + // SetMsg unmarshals PatternFlowGtpv2MessageTypeMetricTag from protobuf object *otg.PatternFlowGtpv2MessageTypeMetricTag // and doesn't set defaults - SetMsg(*otg.PatternFlowPfcPauseSrcMetricTag) PatternFlowPfcPauseSrcMetricTag - // ToProto marshals PatternFlowPfcPauseSrcMetricTag to protobuf object *otg.PatternFlowPfcPauseSrcMetricTag - ToProto() (*otg.PatternFlowPfcPauseSrcMetricTag, error) - // ToPbText marshals PatternFlowPfcPauseSrcMetricTag to protobuf text + SetMsg(*otg.PatternFlowGtpv2MessageTypeMetricTag) PatternFlowGtpv2MessageTypeMetricTag + // ToProto marshals PatternFlowGtpv2MessageTypeMetricTag to protobuf object *otg.PatternFlowGtpv2MessageTypeMetricTag + ToProto() (*otg.PatternFlowGtpv2MessageTypeMetricTag, error) + // ToPbText marshals PatternFlowGtpv2MessageTypeMetricTag to protobuf text ToPbText() (string, error) - // ToYaml marshals PatternFlowPfcPauseSrcMetricTag to YAML text + // ToYaml marshals PatternFlowGtpv2MessageTypeMetricTag to YAML text ToYaml() (string, error) - // ToJson marshals PatternFlowPfcPauseSrcMetricTag to JSON text + // ToJson marshals PatternFlowGtpv2MessageTypeMetricTag to JSON text ToJson() (string, error) - // FromProto unmarshals PatternFlowPfcPauseSrcMetricTag from protobuf object *otg.PatternFlowPfcPauseSrcMetricTag - FromProto(msg *otg.PatternFlowPfcPauseSrcMetricTag) (PatternFlowPfcPauseSrcMetricTag, error) - // FromPbText unmarshals PatternFlowPfcPauseSrcMetricTag from protobuf text + // FromProto unmarshals PatternFlowGtpv2MessageTypeMetricTag from protobuf object *otg.PatternFlowGtpv2MessageTypeMetricTag + FromProto(msg *otg.PatternFlowGtpv2MessageTypeMetricTag) (PatternFlowGtpv2MessageTypeMetricTag, error) + // FromPbText unmarshals PatternFlowGtpv2MessageTypeMetricTag from protobuf text FromPbText(value string) error - // FromYaml unmarshals PatternFlowPfcPauseSrcMetricTag from YAML text + // FromYaml unmarshals PatternFlowGtpv2MessageTypeMetricTag from YAML text FromYaml(value string) error - // FromJson unmarshals PatternFlowPfcPauseSrcMetricTag from JSON text + // FromJson unmarshals PatternFlowGtpv2MessageTypeMetricTag from JSON text FromJson(value string) error - // Validate validates PatternFlowPfcPauseSrcMetricTag + // Validate validates PatternFlowGtpv2MessageTypeMetricTag Validate() error // A stringer function String() string // Clones the object - Clone() (PatternFlowPfcPauseSrcMetricTag, error) + Clone() (PatternFlowGtpv2MessageTypeMetricTag, error) validateToAndFrom() error validateObj(vObj *validation, set_default bool) setDefault() - // Name returns string, set in PatternFlowPfcPauseSrcMetricTag. + // Name returns string, set in PatternFlowGtpv2MessageTypeMetricTag. Name() string - // SetName assigns string provided by user to PatternFlowPfcPauseSrcMetricTag - SetName(value string) PatternFlowPfcPauseSrcMetricTag - // Offset returns uint32, set in PatternFlowPfcPauseSrcMetricTag. + // SetName assigns string provided by user to PatternFlowGtpv2MessageTypeMetricTag + SetName(value string) PatternFlowGtpv2MessageTypeMetricTag + // Offset returns uint32, set in PatternFlowGtpv2MessageTypeMetricTag. Offset() uint32 - // SetOffset assigns uint32 provided by user to PatternFlowPfcPauseSrcMetricTag - SetOffset(value uint32) PatternFlowPfcPauseSrcMetricTag - // HasOffset checks if Offset has been set in PatternFlowPfcPauseSrcMetricTag + // SetOffset assigns uint32 provided by user to PatternFlowGtpv2MessageTypeMetricTag + SetOffset(value uint32) PatternFlowGtpv2MessageTypeMetricTag + // HasOffset checks if Offset has been set in PatternFlowGtpv2MessageTypeMetricTag HasOffset() bool - // Length returns uint32, set in PatternFlowPfcPauseSrcMetricTag. + // Length returns uint32, set in PatternFlowGtpv2MessageTypeMetricTag. Length() uint32 - // SetLength assigns uint32 provided by user to PatternFlowPfcPauseSrcMetricTag - SetLength(value uint32) PatternFlowPfcPauseSrcMetricTag - // HasLength checks if Length has been set in PatternFlowPfcPauseSrcMetricTag + // SetLength assigns uint32 provided by user to PatternFlowGtpv2MessageTypeMetricTag + SetLength(value uint32) PatternFlowGtpv2MessageTypeMetricTag + // HasLength checks if Length has been set in PatternFlowGtpv2MessageTypeMetricTag HasLength() bool } // Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field // Name returns a string -func (obj *patternFlowPfcPauseSrcMetricTag) Name() string { +func (obj *patternFlowGtpv2MessageTypeMetricTag) Name() string { return *obj.obj.Name } // Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field -// SetName sets the string value in the PatternFlowPfcPauseSrcMetricTag object -func (obj *patternFlowPfcPauseSrcMetricTag) SetName(value string) PatternFlowPfcPauseSrcMetricTag { +// SetName sets the string value in the PatternFlowGtpv2MessageTypeMetricTag object +func (obj *patternFlowGtpv2MessageTypeMetricTag) SetName(value string) PatternFlowGtpv2MessageTypeMetricTag { obj.obj.Name = &value return obj @@ -209421,7 +252962,7 @@ func (obj *patternFlowPfcPauseSrcMetricTag) SetName(value string) PatternFlowPfc // Offset in bits relative to start of corresponding header field // Offset returns a uint32 -func (obj *patternFlowPfcPauseSrcMetricTag) Offset() uint32 { +func (obj *patternFlowGtpv2MessageTypeMetricTag) Offset() uint32 { return *obj.obj.Offset @@ -209429,13 +252970,13 @@ func (obj *patternFlowPfcPauseSrcMetricTag) Offset() uint32 { // Offset in bits relative to start of corresponding header field // Offset returns a uint32 -func (obj *patternFlowPfcPauseSrcMetricTag) HasOffset() bool { +func (obj *patternFlowGtpv2MessageTypeMetricTag) HasOffset() bool { return obj.obj.Offset != nil } // Offset in bits relative to start of corresponding header field -// SetOffset sets the uint32 value in the PatternFlowPfcPauseSrcMetricTag object -func (obj *patternFlowPfcPauseSrcMetricTag) SetOffset(value uint32) PatternFlowPfcPauseSrcMetricTag { +// SetOffset sets the uint32 value in the PatternFlowGtpv2MessageTypeMetricTag object +func (obj *patternFlowGtpv2MessageTypeMetricTag) SetOffset(value uint32) PatternFlowGtpv2MessageTypeMetricTag { obj.obj.Offset = &value return obj @@ -209443,7 +252984,7 @@ func (obj *patternFlowPfcPauseSrcMetricTag) SetOffset(value uint32) PatternFlowP // Number of bits to track for metrics starting from configured offset of corresponding header field // Length returns a uint32 -func (obj *patternFlowPfcPauseSrcMetricTag) Length() uint32 { +func (obj *patternFlowGtpv2MessageTypeMetricTag) Length() uint32 { return *obj.obj.Length @@ -209451,83 +252992,83 @@ func (obj *patternFlowPfcPauseSrcMetricTag) Length() uint32 { // Number of bits to track for metrics starting from configured offset of corresponding header field // Length returns a uint32 -func (obj *patternFlowPfcPauseSrcMetricTag) HasLength() bool { +func (obj *patternFlowGtpv2MessageTypeMetricTag) HasLength() bool { return obj.obj.Length != nil } // Number of bits to track for metrics starting from configured offset of corresponding header field -// SetLength sets the uint32 value in the PatternFlowPfcPauseSrcMetricTag object -func (obj *patternFlowPfcPauseSrcMetricTag) SetLength(value uint32) PatternFlowPfcPauseSrcMetricTag { +// SetLength sets the uint32 value in the PatternFlowGtpv2MessageTypeMetricTag object +func (obj *patternFlowGtpv2MessageTypeMetricTag) SetLength(value uint32) PatternFlowGtpv2MessageTypeMetricTag { obj.obj.Length = &value return obj } -func (obj *patternFlowPfcPauseSrcMetricTag) validateObj(vObj *validation, set_default bool) { +func (obj *patternFlowGtpv2MessageTypeMetricTag) validateObj(vObj *validation, set_default bool) { if set_default { obj.setDefault() } // Name is required if obj.obj.Name == nil { - vObj.validationErrors = append(vObj.validationErrors, "Name is required field on interface PatternFlowPfcPauseSrcMetricTag") + vObj.validationErrors = append(vObj.validationErrors, "Name is required field on interface PatternFlowGtpv2MessageTypeMetricTag") } if obj.obj.Offset != nil { - if *obj.obj.Offset > 47 { + if *obj.obj.Offset > 7 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowPfcPauseSrcMetricTag.Offset <= 47 but Got %d", *obj.obj.Offset)) + fmt.Sprintf("0 <= PatternFlowGtpv2MessageTypeMetricTag.Offset <= 7 but Got %d", *obj.obj.Offset)) } } if obj.obj.Length != nil { - if *obj.obj.Length < 1 || *obj.obj.Length > 48 { + if *obj.obj.Length < 1 || *obj.obj.Length > 8 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("1 <= PatternFlowPfcPauseSrcMetricTag.Length <= 48 but Got %d", *obj.obj.Length)) + fmt.Sprintf("1 <= PatternFlowGtpv2MessageTypeMetricTag.Length <= 8 but Got %d", *obj.obj.Length)) } } } -func (obj *patternFlowPfcPauseSrcMetricTag) setDefault() { +func (obj *patternFlowGtpv2MessageTypeMetricTag) setDefault() { if obj.obj.Offset == nil { obj.SetOffset(0) } if obj.obj.Length == nil { - obj.SetLength(48) + obj.SetLength(8) } } -// ***** PatternFlowPfcPauseEtherTypeCounter ***** -type patternFlowPfcPauseEtherTypeCounter struct { +// ***** PatternFlowGtpv2MessageLengthCounter ***** +type patternFlowGtpv2MessageLengthCounter struct { validation - obj *otg.PatternFlowPfcPauseEtherTypeCounter + obj *otg.PatternFlowGtpv2MessageLengthCounter } -func NewPatternFlowPfcPauseEtherTypeCounter() PatternFlowPfcPauseEtherTypeCounter { - obj := patternFlowPfcPauseEtherTypeCounter{obj: &otg.PatternFlowPfcPauseEtherTypeCounter{}} +func NewPatternFlowGtpv2MessageLengthCounter() PatternFlowGtpv2MessageLengthCounter { + obj := patternFlowGtpv2MessageLengthCounter{obj: &otg.PatternFlowGtpv2MessageLengthCounter{}} obj.setDefault() return &obj } -func (obj *patternFlowPfcPauseEtherTypeCounter) Msg() *otg.PatternFlowPfcPauseEtherTypeCounter { +func (obj *patternFlowGtpv2MessageLengthCounter) Msg() *otg.PatternFlowGtpv2MessageLengthCounter { return obj.obj } -func (obj *patternFlowPfcPauseEtherTypeCounter) SetMsg(msg *otg.PatternFlowPfcPauseEtherTypeCounter) PatternFlowPfcPauseEtherTypeCounter { +func (obj *patternFlowGtpv2MessageLengthCounter) SetMsg(msg *otg.PatternFlowGtpv2MessageLengthCounter) PatternFlowGtpv2MessageLengthCounter { proto.Merge(obj.obj, msg) return obj } -func (obj *patternFlowPfcPauseEtherTypeCounter) ToProto() (*otg.PatternFlowPfcPauseEtherTypeCounter, error) { +func (obj *patternFlowGtpv2MessageLengthCounter) ToProto() (*otg.PatternFlowGtpv2MessageLengthCounter, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -209535,7 +253076,7 @@ func (obj *patternFlowPfcPauseEtherTypeCounter) ToProto() (*otg.PatternFlowPfcPa return obj.Msg(), nil } -func (obj *patternFlowPfcPauseEtherTypeCounter) FromProto(msg *otg.PatternFlowPfcPauseEtherTypeCounter) (PatternFlowPfcPauseEtherTypeCounter, error) { +func (obj *patternFlowGtpv2MessageLengthCounter) FromProto(msg *otg.PatternFlowGtpv2MessageLengthCounter) (PatternFlowGtpv2MessageLengthCounter, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -209544,7 +253085,7 @@ func (obj *patternFlowPfcPauseEtherTypeCounter) FromProto(msg *otg.PatternFlowPf return newObj, nil } -func (obj *patternFlowPfcPauseEtherTypeCounter) ToPbText() (string, error) { +func (obj *patternFlowGtpv2MessageLengthCounter) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -209556,7 +253097,7 @@ func (obj *patternFlowPfcPauseEtherTypeCounter) ToPbText() (string, error) { return string(protoMarshal), nil } -func (obj *patternFlowPfcPauseEtherTypeCounter) FromPbText(value string) error { +func (obj *patternFlowGtpv2MessageLengthCounter) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj @@ -209569,7 +253110,7 @@ func (obj *patternFlowPfcPauseEtherTypeCounter) FromPbText(value string) error { return retObj } -func (obj *patternFlowPfcPauseEtherTypeCounter) ToYaml() (string, error) { +func (obj *patternFlowGtpv2MessageLengthCounter) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -209590,7 +253131,7 @@ func (obj *patternFlowPfcPauseEtherTypeCounter) ToYaml() (string, error) { return string(data), nil } -func (obj *patternFlowPfcPauseEtherTypeCounter) FromYaml(value string) error { +func (obj *patternFlowGtpv2MessageLengthCounter) FromYaml(value string) error { if value == "" { value = "{}" } @@ -209615,7 +253156,7 @@ func (obj *patternFlowPfcPauseEtherTypeCounter) FromYaml(value string) error { return nil } -func (obj *patternFlowPfcPauseEtherTypeCounter) ToJson() (string, error) { +func (obj *patternFlowGtpv2MessageLengthCounter) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -209633,7 +253174,7 @@ func (obj *patternFlowPfcPauseEtherTypeCounter) ToJson() (string, error) { return string(data), nil } -func (obj *patternFlowPfcPauseEtherTypeCounter) FromJson(value string) error { +func (obj *patternFlowGtpv2MessageLengthCounter) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -209654,19 +253195,19 @@ func (obj *patternFlowPfcPauseEtherTypeCounter) FromJson(value string) error { return nil } -func (obj *patternFlowPfcPauseEtherTypeCounter) validateToAndFrom() error { +func (obj *patternFlowGtpv2MessageLengthCounter) validateToAndFrom() error { // emptyVars() obj.validateObj(&obj.validation, true) return obj.validationResult() } -func (obj *patternFlowPfcPauseEtherTypeCounter) Validate() error { +func (obj *patternFlowGtpv2MessageLengthCounter) Validate() error { // emptyVars() obj.validateObj(&obj.validation, false) return obj.validationResult() } -func (obj *patternFlowPfcPauseEtherTypeCounter) String() string { +func (obj *patternFlowGtpv2MessageLengthCounter) String() string { str, err := obj.ToYaml() if err != nil { return err.Error() @@ -209674,12 +253215,12 @@ func (obj *patternFlowPfcPauseEtherTypeCounter) String() string { return str } -func (obj *patternFlowPfcPauseEtherTypeCounter) Clone() (PatternFlowPfcPauseEtherTypeCounter, error) { +func (obj *patternFlowGtpv2MessageLengthCounter) Clone() (PatternFlowGtpv2MessageLengthCounter, error) { vErr := obj.Validate() if vErr != nil { return nil, vErr } - newObj := NewPatternFlowPfcPauseEtherTypeCounter() + newObj := NewPatternFlowGtpv2MessageLengthCounter() data, err := proto.Marshal(obj.Msg()) if err != nil { return nil, err @@ -209691,63 +253232,63 @@ func (obj *patternFlowPfcPauseEtherTypeCounter) Clone() (PatternFlowPfcPauseEthe return newObj, nil } -// PatternFlowPfcPauseEtherTypeCounter is integer counter pattern -type PatternFlowPfcPauseEtherTypeCounter interface { +// PatternFlowGtpv2MessageLengthCounter is integer counter pattern +type PatternFlowGtpv2MessageLengthCounter interface { Validation - // Msg marshals PatternFlowPfcPauseEtherTypeCounter to protobuf object *otg.PatternFlowPfcPauseEtherTypeCounter + // Msg marshals PatternFlowGtpv2MessageLengthCounter to protobuf object *otg.PatternFlowGtpv2MessageLengthCounter // and doesn't set defaults - Msg() *otg.PatternFlowPfcPauseEtherTypeCounter - // SetMsg unmarshals PatternFlowPfcPauseEtherTypeCounter from protobuf object *otg.PatternFlowPfcPauseEtherTypeCounter + Msg() *otg.PatternFlowGtpv2MessageLengthCounter + // SetMsg unmarshals PatternFlowGtpv2MessageLengthCounter from protobuf object *otg.PatternFlowGtpv2MessageLengthCounter // and doesn't set defaults - SetMsg(*otg.PatternFlowPfcPauseEtherTypeCounter) PatternFlowPfcPauseEtherTypeCounter - // ToProto marshals PatternFlowPfcPauseEtherTypeCounter to protobuf object *otg.PatternFlowPfcPauseEtherTypeCounter - ToProto() (*otg.PatternFlowPfcPauseEtherTypeCounter, error) - // ToPbText marshals PatternFlowPfcPauseEtherTypeCounter to protobuf text + SetMsg(*otg.PatternFlowGtpv2MessageLengthCounter) PatternFlowGtpv2MessageLengthCounter + // ToProto marshals PatternFlowGtpv2MessageLengthCounter to protobuf object *otg.PatternFlowGtpv2MessageLengthCounter + ToProto() (*otg.PatternFlowGtpv2MessageLengthCounter, error) + // ToPbText marshals PatternFlowGtpv2MessageLengthCounter to protobuf text ToPbText() (string, error) - // ToYaml marshals PatternFlowPfcPauseEtherTypeCounter to YAML text + // ToYaml marshals PatternFlowGtpv2MessageLengthCounter to YAML text ToYaml() (string, error) - // ToJson marshals PatternFlowPfcPauseEtherTypeCounter to JSON text + // ToJson marshals PatternFlowGtpv2MessageLengthCounter to JSON text ToJson() (string, error) - // FromProto unmarshals PatternFlowPfcPauseEtherTypeCounter from protobuf object *otg.PatternFlowPfcPauseEtherTypeCounter - FromProto(msg *otg.PatternFlowPfcPauseEtherTypeCounter) (PatternFlowPfcPauseEtherTypeCounter, error) - // FromPbText unmarshals PatternFlowPfcPauseEtherTypeCounter from protobuf text + // FromProto unmarshals PatternFlowGtpv2MessageLengthCounter from protobuf object *otg.PatternFlowGtpv2MessageLengthCounter + FromProto(msg *otg.PatternFlowGtpv2MessageLengthCounter) (PatternFlowGtpv2MessageLengthCounter, error) + // FromPbText unmarshals PatternFlowGtpv2MessageLengthCounter from protobuf text FromPbText(value string) error - // FromYaml unmarshals PatternFlowPfcPauseEtherTypeCounter from YAML text + // FromYaml unmarshals PatternFlowGtpv2MessageLengthCounter from YAML text FromYaml(value string) error - // FromJson unmarshals PatternFlowPfcPauseEtherTypeCounter from JSON text + // FromJson unmarshals PatternFlowGtpv2MessageLengthCounter from JSON text FromJson(value string) error - // Validate validates PatternFlowPfcPauseEtherTypeCounter + // Validate validates PatternFlowGtpv2MessageLengthCounter Validate() error // A stringer function String() string // Clones the object - Clone() (PatternFlowPfcPauseEtherTypeCounter, error) + Clone() (PatternFlowGtpv2MessageLengthCounter, error) validateToAndFrom() error validateObj(vObj *validation, set_default bool) setDefault() - // Start returns uint32, set in PatternFlowPfcPauseEtherTypeCounter. + // Start returns uint32, set in PatternFlowGtpv2MessageLengthCounter. Start() uint32 - // SetStart assigns uint32 provided by user to PatternFlowPfcPauseEtherTypeCounter - SetStart(value uint32) PatternFlowPfcPauseEtherTypeCounter - // HasStart checks if Start has been set in PatternFlowPfcPauseEtherTypeCounter + // SetStart assigns uint32 provided by user to PatternFlowGtpv2MessageLengthCounter + SetStart(value uint32) PatternFlowGtpv2MessageLengthCounter + // HasStart checks if Start has been set in PatternFlowGtpv2MessageLengthCounter HasStart() bool - // Step returns uint32, set in PatternFlowPfcPauseEtherTypeCounter. + // Step returns uint32, set in PatternFlowGtpv2MessageLengthCounter. Step() uint32 - // SetStep assigns uint32 provided by user to PatternFlowPfcPauseEtherTypeCounter - SetStep(value uint32) PatternFlowPfcPauseEtherTypeCounter - // HasStep checks if Step has been set in PatternFlowPfcPauseEtherTypeCounter + // SetStep assigns uint32 provided by user to PatternFlowGtpv2MessageLengthCounter + SetStep(value uint32) PatternFlowGtpv2MessageLengthCounter + // HasStep checks if Step has been set in PatternFlowGtpv2MessageLengthCounter HasStep() bool - // Count returns uint32, set in PatternFlowPfcPauseEtherTypeCounter. + // Count returns uint32, set in PatternFlowGtpv2MessageLengthCounter. Count() uint32 - // SetCount assigns uint32 provided by user to PatternFlowPfcPauseEtherTypeCounter - SetCount(value uint32) PatternFlowPfcPauseEtherTypeCounter - // HasCount checks if Count has been set in PatternFlowPfcPauseEtherTypeCounter + // SetCount assigns uint32 provided by user to PatternFlowGtpv2MessageLengthCounter + SetCount(value uint32) PatternFlowGtpv2MessageLengthCounter + // HasCount checks if Count has been set in PatternFlowGtpv2MessageLengthCounter HasCount() bool } // description is TBD // Start returns a uint32 -func (obj *patternFlowPfcPauseEtherTypeCounter) Start() uint32 { +func (obj *patternFlowGtpv2MessageLengthCounter) Start() uint32 { return *obj.obj.Start @@ -209755,13 +253296,13 @@ func (obj *patternFlowPfcPauseEtherTypeCounter) Start() uint32 { // description is TBD // Start returns a uint32 -func (obj *patternFlowPfcPauseEtherTypeCounter) HasStart() bool { +func (obj *patternFlowGtpv2MessageLengthCounter) HasStart() bool { return obj.obj.Start != nil } // description is TBD -// SetStart sets the uint32 value in the PatternFlowPfcPauseEtherTypeCounter object -func (obj *patternFlowPfcPauseEtherTypeCounter) SetStart(value uint32) PatternFlowPfcPauseEtherTypeCounter { +// SetStart sets the uint32 value in the PatternFlowGtpv2MessageLengthCounter object +func (obj *patternFlowGtpv2MessageLengthCounter) SetStart(value uint32) PatternFlowGtpv2MessageLengthCounter { obj.obj.Start = &value return obj @@ -209769,7 +253310,7 @@ func (obj *patternFlowPfcPauseEtherTypeCounter) SetStart(value uint32) PatternFl // description is TBD // Step returns a uint32 -func (obj *patternFlowPfcPauseEtherTypeCounter) Step() uint32 { +func (obj *patternFlowGtpv2MessageLengthCounter) Step() uint32 { return *obj.obj.Step @@ -209777,13 +253318,13 @@ func (obj *patternFlowPfcPauseEtherTypeCounter) Step() uint32 { // description is TBD // Step returns a uint32 -func (obj *patternFlowPfcPauseEtherTypeCounter) HasStep() bool { +func (obj *patternFlowGtpv2MessageLengthCounter) HasStep() bool { return obj.obj.Step != nil } // description is TBD -// SetStep sets the uint32 value in the PatternFlowPfcPauseEtherTypeCounter object -func (obj *patternFlowPfcPauseEtherTypeCounter) SetStep(value uint32) PatternFlowPfcPauseEtherTypeCounter { +// SetStep sets the uint32 value in the PatternFlowGtpv2MessageLengthCounter object +func (obj *patternFlowGtpv2MessageLengthCounter) SetStep(value uint32) PatternFlowGtpv2MessageLengthCounter { obj.obj.Step = &value return obj @@ -209791,7 +253332,7 @@ func (obj *patternFlowPfcPauseEtherTypeCounter) SetStep(value uint32) PatternFlo // description is TBD // Count returns a uint32 -func (obj *patternFlowPfcPauseEtherTypeCounter) Count() uint32 { +func (obj *patternFlowGtpv2MessageLengthCounter) Count() uint32 { return *obj.obj.Count @@ -209799,19 +253340,19 @@ func (obj *patternFlowPfcPauseEtherTypeCounter) Count() uint32 { // description is TBD // Count returns a uint32 -func (obj *patternFlowPfcPauseEtherTypeCounter) HasCount() bool { +func (obj *patternFlowGtpv2MessageLengthCounter) HasCount() bool { return obj.obj.Count != nil } // description is TBD -// SetCount sets the uint32 value in the PatternFlowPfcPauseEtherTypeCounter object -func (obj *patternFlowPfcPauseEtherTypeCounter) SetCount(value uint32) PatternFlowPfcPauseEtherTypeCounter { +// SetCount sets the uint32 value in the PatternFlowGtpv2MessageLengthCounter object +func (obj *patternFlowGtpv2MessageLengthCounter) SetCount(value uint32) PatternFlowGtpv2MessageLengthCounter { obj.obj.Count = &value return obj } -func (obj *patternFlowPfcPauseEtherTypeCounter) validateObj(vObj *validation, set_default bool) { +func (obj *patternFlowGtpv2MessageLengthCounter) validateObj(vObj *validation, set_default bool) { if set_default { obj.setDefault() } @@ -209821,7 +253362,7 @@ func (obj *patternFlowPfcPauseEtherTypeCounter) validateObj(vObj *validation, se if *obj.obj.Start > 65535 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowPfcPauseEtherTypeCounter.Start <= 65535 but Got %d", *obj.obj.Start)) + fmt.Sprintf("0 <= PatternFlowGtpv2MessageLengthCounter.Start <= 65535 but Got %d", *obj.obj.Start)) } } @@ -209831,7 +253372,7 @@ func (obj *patternFlowPfcPauseEtherTypeCounter) validateObj(vObj *validation, se if *obj.obj.Step > 65535 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowPfcPauseEtherTypeCounter.Step <= 65535 but Got %d", *obj.obj.Step)) + fmt.Sprintf("0 <= PatternFlowGtpv2MessageLengthCounter.Step <= 65535 but Got %d", *obj.obj.Step)) } } @@ -209841,16 +253382,16 @@ func (obj *patternFlowPfcPauseEtherTypeCounter) validateObj(vObj *validation, se if *obj.obj.Count > 65535 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowPfcPauseEtherTypeCounter.Count <= 65535 but Got %d", *obj.obj.Count)) + fmt.Sprintf("0 <= PatternFlowGtpv2MessageLengthCounter.Count <= 65535 but Got %d", *obj.obj.Count)) } } } -func (obj *patternFlowPfcPauseEtherTypeCounter) setDefault() { +func (obj *patternFlowGtpv2MessageLengthCounter) setDefault() { if obj.obj.Start == nil { - obj.SetStart(34824) + obj.SetStart(0) } if obj.obj.Step == nil { obj.SetStep(1) @@ -209861,29 +253402,29 @@ func (obj *patternFlowPfcPauseEtherTypeCounter) setDefault() { } -// ***** PatternFlowPfcPauseEtherTypeMetricTag ***** -type patternFlowPfcPauseEtherTypeMetricTag struct { +// ***** PatternFlowGtpv2MessageLengthMetricTag ***** +type patternFlowGtpv2MessageLengthMetricTag struct { validation - obj *otg.PatternFlowPfcPauseEtherTypeMetricTag + obj *otg.PatternFlowGtpv2MessageLengthMetricTag } -func NewPatternFlowPfcPauseEtherTypeMetricTag() PatternFlowPfcPauseEtherTypeMetricTag { - obj := patternFlowPfcPauseEtherTypeMetricTag{obj: &otg.PatternFlowPfcPauseEtherTypeMetricTag{}} +func NewPatternFlowGtpv2MessageLengthMetricTag() PatternFlowGtpv2MessageLengthMetricTag { + obj := patternFlowGtpv2MessageLengthMetricTag{obj: &otg.PatternFlowGtpv2MessageLengthMetricTag{}} obj.setDefault() return &obj } -func (obj *patternFlowPfcPauseEtherTypeMetricTag) Msg() *otg.PatternFlowPfcPauseEtherTypeMetricTag { +func (obj *patternFlowGtpv2MessageLengthMetricTag) Msg() *otg.PatternFlowGtpv2MessageLengthMetricTag { return obj.obj } -func (obj *patternFlowPfcPauseEtherTypeMetricTag) SetMsg(msg *otg.PatternFlowPfcPauseEtherTypeMetricTag) PatternFlowPfcPauseEtherTypeMetricTag { +func (obj *patternFlowGtpv2MessageLengthMetricTag) SetMsg(msg *otg.PatternFlowGtpv2MessageLengthMetricTag) PatternFlowGtpv2MessageLengthMetricTag { proto.Merge(obj.obj, msg) return obj } -func (obj *patternFlowPfcPauseEtherTypeMetricTag) ToProto() (*otg.PatternFlowPfcPauseEtherTypeMetricTag, error) { +func (obj *patternFlowGtpv2MessageLengthMetricTag) ToProto() (*otg.PatternFlowGtpv2MessageLengthMetricTag, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -209891,7 +253432,7 @@ func (obj *patternFlowPfcPauseEtherTypeMetricTag) ToProto() (*otg.PatternFlowPfc return obj.Msg(), nil } -func (obj *patternFlowPfcPauseEtherTypeMetricTag) FromProto(msg *otg.PatternFlowPfcPauseEtherTypeMetricTag) (PatternFlowPfcPauseEtherTypeMetricTag, error) { +func (obj *patternFlowGtpv2MessageLengthMetricTag) FromProto(msg *otg.PatternFlowGtpv2MessageLengthMetricTag) (PatternFlowGtpv2MessageLengthMetricTag, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -209900,7 +253441,7 @@ func (obj *patternFlowPfcPauseEtherTypeMetricTag) FromProto(msg *otg.PatternFlow return newObj, nil } -func (obj *patternFlowPfcPauseEtherTypeMetricTag) ToPbText() (string, error) { +func (obj *patternFlowGtpv2MessageLengthMetricTag) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -209912,7 +253453,7 @@ func (obj *patternFlowPfcPauseEtherTypeMetricTag) ToPbText() (string, error) { return string(protoMarshal), nil } -func (obj *patternFlowPfcPauseEtherTypeMetricTag) FromPbText(value string) error { +func (obj *patternFlowGtpv2MessageLengthMetricTag) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj @@ -209925,7 +253466,7 @@ func (obj *patternFlowPfcPauseEtherTypeMetricTag) FromPbText(value string) error return retObj } -func (obj *patternFlowPfcPauseEtherTypeMetricTag) ToYaml() (string, error) { +func (obj *patternFlowGtpv2MessageLengthMetricTag) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -209946,7 +253487,7 @@ func (obj *patternFlowPfcPauseEtherTypeMetricTag) ToYaml() (string, error) { return string(data), nil } -func (obj *patternFlowPfcPauseEtherTypeMetricTag) FromYaml(value string) error { +func (obj *patternFlowGtpv2MessageLengthMetricTag) FromYaml(value string) error { if value == "" { value = "{}" } @@ -209971,7 +253512,7 @@ func (obj *patternFlowPfcPauseEtherTypeMetricTag) FromYaml(value string) error { return nil } -func (obj *patternFlowPfcPauseEtherTypeMetricTag) ToJson() (string, error) { +func (obj *patternFlowGtpv2MessageLengthMetricTag) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -209989,7 +253530,7 @@ func (obj *patternFlowPfcPauseEtherTypeMetricTag) ToJson() (string, error) { return string(data), nil } -func (obj *patternFlowPfcPauseEtherTypeMetricTag) FromJson(value string) error { +func (obj *patternFlowGtpv2MessageLengthMetricTag) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -210010,19 +253551,19 @@ func (obj *patternFlowPfcPauseEtherTypeMetricTag) FromJson(value string) error { return nil } -func (obj *patternFlowPfcPauseEtherTypeMetricTag) validateToAndFrom() error { +func (obj *patternFlowGtpv2MessageLengthMetricTag) validateToAndFrom() error { // emptyVars() obj.validateObj(&obj.validation, true) return obj.validationResult() } -func (obj *patternFlowPfcPauseEtherTypeMetricTag) Validate() error { +func (obj *patternFlowGtpv2MessageLengthMetricTag) Validate() error { // emptyVars() obj.validateObj(&obj.validation, false) return obj.validationResult() } -func (obj *patternFlowPfcPauseEtherTypeMetricTag) String() string { +func (obj *patternFlowGtpv2MessageLengthMetricTag) String() string { str, err := obj.ToYaml() if err != nil { return err.Error() @@ -210030,12 +253571,12 @@ func (obj *patternFlowPfcPauseEtherTypeMetricTag) String() string { return str } -func (obj *patternFlowPfcPauseEtherTypeMetricTag) Clone() (PatternFlowPfcPauseEtherTypeMetricTag, error) { +func (obj *patternFlowGtpv2MessageLengthMetricTag) Clone() (PatternFlowGtpv2MessageLengthMetricTag, error) { vErr := obj.Validate() if vErr != nil { return nil, vErr } - newObj := NewPatternFlowPfcPauseEtherTypeMetricTag() + newObj := NewPatternFlowGtpv2MessageLengthMetricTag() data, err := proto.Marshal(obj.Msg()) if err != nil { return nil, err @@ -210047,69 +253588,69 @@ func (obj *patternFlowPfcPauseEtherTypeMetricTag) Clone() (PatternFlowPfcPauseEt return newObj, nil } -// PatternFlowPfcPauseEtherTypeMetricTag is metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. -type PatternFlowPfcPauseEtherTypeMetricTag interface { +// PatternFlowGtpv2MessageLengthMetricTag is metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. +type PatternFlowGtpv2MessageLengthMetricTag interface { Validation - // Msg marshals PatternFlowPfcPauseEtherTypeMetricTag to protobuf object *otg.PatternFlowPfcPauseEtherTypeMetricTag + // Msg marshals PatternFlowGtpv2MessageLengthMetricTag to protobuf object *otg.PatternFlowGtpv2MessageLengthMetricTag // and doesn't set defaults - Msg() *otg.PatternFlowPfcPauseEtherTypeMetricTag - // SetMsg unmarshals PatternFlowPfcPauseEtherTypeMetricTag from protobuf object *otg.PatternFlowPfcPauseEtherTypeMetricTag + Msg() *otg.PatternFlowGtpv2MessageLengthMetricTag + // SetMsg unmarshals PatternFlowGtpv2MessageLengthMetricTag from protobuf object *otg.PatternFlowGtpv2MessageLengthMetricTag // and doesn't set defaults - SetMsg(*otg.PatternFlowPfcPauseEtherTypeMetricTag) PatternFlowPfcPauseEtherTypeMetricTag - // ToProto marshals PatternFlowPfcPauseEtherTypeMetricTag to protobuf object *otg.PatternFlowPfcPauseEtherTypeMetricTag - ToProto() (*otg.PatternFlowPfcPauseEtherTypeMetricTag, error) - // ToPbText marshals PatternFlowPfcPauseEtherTypeMetricTag to protobuf text + SetMsg(*otg.PatternFlowGtpv2MessageLengthMetricTag) PatternFlowGtpv2MessageLengthMetricTag + // ToProto marshals PatternFlowGtpv2MessageLengthMetricTag to protobuf object *otg.PatternFlowGtpv2MessageLengthMetricTag + ToProto() (*otg.PatternFlowGtpv2MessageLengthMetricTag, error) + // ToPbText marshals PatternFlowGtpv2MessageLengthMetricTag to protobuf text ToPbText() (string, error) - // ToYaml marshals PatternFlowPfcPauseEtherTypeMetricTag to YAML text + // ToYaml marshals PatternFlowGtpv2MessageLengthMetricTag to YAML text ToYaml() (string, error) - // ToJson marshals PatternFlowPfcPauseEtherTypeMetricTag to JSON text + // ToJson marshals PatternFlowGtpv2MessageLengthMetricTag to JSON text ToJson() (string, error) - // FromProto unmarshals PatternFlowPfcPauseEtherTypeMetricTag from protobuf object *otg.PatternFlowPfcPauseEtherTypeMetricTag - FromProto(msg *otg.PatternFlowPfcPauseEtherTypeMetricTag) (PatternFlowPfcPauseEtherTypeMetricTag, error) - // FromPbText unmarshals PatternFlowPfcPauseEtherTypeMetricTag from protobuf text + // FromProto unmarshals PatternFlowGtpv2MessageLengthMetricTag from protobuf object *otg.PatternFlowGtpv2MessageLengthMetricTag + FromProto(msg *otg.PatternFlowGtpv2MessageLengthMetricTag) (PatternFlowGtpv2MessageLengthMetricTag, error) + // FromPbText unmarshals PatternFlowGtpv2MessageLengthMetricTag from protobuf text FromPbText(value string) error - // FromYaml unmarshals PatternFlowPfcPauseEtherTypeMetricTag from YAML text + // FromYaml unmarshals PatternFlowGtpv2MessageLengthMetricTag from YAML text FromYaml(value string) error - // FromJson unmarshals PatternFlowPfcPauseEtherTypeMetricTag from JSON text + // FromJson unmarshals PatternFlowGtpv2MessageLengthMetricTag from JSON text FromJson(value string) error - // Validate validates PatternFlowPfcPauseEtherTypeMetricTag + // Validate validates PatternFlowGtpv2MessageLengthMetricTag Validate() error // A stringer function String() string // Clones the object - Clone() (PatternFlowPfcPauseEtherTypeMetricTag, error) + Clone() (PatternFlowGtpv2MessageLengthMetricTag, error) validateToAndFrom() error validateObj(vObj *validation, set_default bool) setDefault() - // Name returns string, set in PatternFlowPfcPauseEtherTypeMetricTag. + // Name returns string, set in PatternFlowGtpv2MessageLengthMetricTag. Name() string - // SetName assigns string provided by user to PatternFlowPfcPauseEtherTypeMetricTag - SetName(value string) PatternFlowPfcPauseEtherTypeMetricTag - // Offset returns uint32, set in PatternFlowPfcPauseEtherTypeMetricTag. + // SetName assigns string provided by user to PatternFlowGtpv2MessageLengthMetricTag + SetName(value string) PatternFlowGtpv2MessageLengthMetricTag + // Offset returns uint32, set in PatternFlowGtpv2MessageLengthMetricTag. Offset() uint32 - // SetOffset assigns uint32 provided by user to PatternFlowPfcPauseEtherTypeMetricTag - SetOffset(value uint32) PatternFlowPfcPauseEtherTypeMetricTag - // HasOffset checks if Offset has been set in PatternFlowPfcPauseEtherTypeMetricTag + // SetOffset assigns uint32 provided by user to PatternFlowGtpv2MessageLengthMetricTag + SetOffset(value uint32) PatternFlowGtpv2MessageLengthMetricTag + // HasOffset checks if Offset has been set in PatternFlowGtpv2MessageLengthMetricTag HasOffset() bool - // Length returns uint32, set in PatternFlowPfcPauseEtherTypeMetricTag. + // Length returns uint32, set in PatternFlowGtpv2MessageLengthMetricTag. Length() uint32 - // SetLength assigns uint32 provided by user to PatternFlowPfcPauseEtherTypeMetricTag - SetLength(value uint32) PatternFlowPfcPauseEtherTypeMetricTag - // HasLength checks if Length has been set in PatternFlowPfcPauseEtherTypeMetricTag + // SetLength assigns uint32 provided by user to PatternFlowGtpv2MessageLengthMetricTag + SetLength(value uint32) PatternFlowGtpv2MessageLengthMetricTag + // HasLength checks if Length has been set in PatternFlowGtpv2MessageLengthMetricTag HasLength() bool } // Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field // Name returns a string -func (obj *patternFlowPfcPauseEtherTypeMetricTag) Name() string { +func (obj *patternFlowGtpv2MessageLengthMetricTag) Name() string { return *obj.obj.Name } // Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field -// SetName sets the string value in the PatternFlowPfcPauseEtherTypeMetricTag object -func (obj *patternFlowPfcPauseEtherTypeMetricTag) SetName(value string) PatternFlowPfcPauseEtherTypeMetricTag { +// SetName sets the string value in the PatternFlowGtpv2MessageLengthMetricTag object +func (obj *patternFlowGtpv2MessageLengthMetricTag) SetName(value string) PatternFlowGtpv2MessageLengthMetricTag { obj.obj.Name = &value return obj @@ -210117,7 +253658,7 @@ func (obj *patternFlowPfcPauseEtherTypeMetricTag) SetName(value string) PatternF // Offset in bits relative to start of corresponding header field // Offset returns a uint32 -func (obj *patternFlowPfcPauseEtherTypeMetricTag) Offset() uint32 { +func (obj *patternFlowGtpv2MessageLengthMetricTag) Offset() uint32 { return *obj.obj.Offset @@ -210125,13 +253666,13 @@ func (obj *patternFlowPfcPauseEtherTypeMetricTag) Offset() uint32 { // Offset in bits relative to start of corresponding header field // Offset returns a uint32 -func (obj *patternFlowPfcPauseEtherTypeMetricTag) HasOffset() bool { +func (obj *patternFlowGtpv2MessageLengthMetricTag) HasOffset() bool { return obj.obj.Offset != nil } // Offset in bits relative to start of corresponding header field -// SetOffset sets the uint32 value in the PatternFlowPfcPauseEtherTypeMetricTag object -func (obj *patternFlowPfcPauseEtherTypeMetricTag) SetOffset(value uint32) PatternFlowPfcPauseEtherTypeMetricTag { +// SetOffset sets the uint32 value in the PatternFlowGtpv2MessageLengthMetricTag object +func (obj *patternFlowGtpv2MessageLengthMetricTag) SetOffset(value uint32) PatternFlowGtpv2MessageLengthMetricTag { obj.obj.Offset = &value return obj @@ -210139,7 +253680,7 @@ func (obj *patternFlowPfcPauseEtherTypeMetricTag) SetOffset(value uint32) Patter // Number of bits to track for metrics starting from configured offset of corresponding header field // Length returns a uint32 -func (obj *patternFlowPfcPauseEtherTypeMetricTag) Length() uint32 { +func (obj *patternFlowGtpv2MessageLengthMetricTag) Length() uint32 { return *obj.obj.Length @@ -210147,26 +253688,26 @@ func (obj *patternFlowPfcPauseEtherTypeMetricTag) Length() uint32 { // Number of bits to track for metrics starting from configured offset of corresponding header field // Length returns a uint32 -func (obj *patternFlowPfcPauseEtherTypeMetricTag) HasLength() bool { +func (obj *patternFlowGtpv2MessageLengthMetricTag) HasLength() bool { return obj.obj.Length != nil } // Number of bits to track for metrics starting from configured offset of corresponding header field -// SetLength sets the uint32 value in the PatternFlowPfcPauseEtherTypeMetricTag object -func (obj *patternFlowPfcPauseEtherTypeMetricTag) SetLength(value uint32) PatternFlowPfcPauseEtherTypeMetricTag { +// SetLength sets the uint32 value in the PatternFlowGtpv2MessageLengthMetricTag object +func (obj *patternFlowGtpv2MessageLengthMetricTag) SetLength(value uint32) PatternFlowGtpv2MessageLengthMetricTag { obj.obj.Length = &value return obj } -func (obj *patternFlowPfcPauseEtherTypeMetricTag) validateObj(vObj *validation, set_default bool) { +func (obj *patternFlowGtpv2MessageLengthMetricTag) validateObj(vObj *validation, set_default bool) { if set_default { obj.setDefault() } // Name is required if obj.obj.Name == nil { - vObj.validationErrors = append(vObj.validationErrors, "Name is required field on interface PatternFlowPfcPauseEtherTypeMetricTag") + vObj.validationErrors = append(vObj.validationErrors, "Name is required field on interface PatternFlowGtpv2MessageLengthMetricTag") } if obj.obj.Offset != nil { @@ -210174,7 +253715,7 @@ func (obj *patternFlowPfcPauseEtherTypeMetricTag) validateObj(vObj *validation, if *obj.obj.Offset > 15 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowPfcPauseEtherTypeMetricTag.Offset <= 15 but Got %d", *obj.obj.Offset)) + fmt.Sprintf("0 <= PatternFlowGtpv2MessageLengthMetricTag.Offset <= 15 but Got %d", *obj.obj.Offset)) } } @@ -210184,14 +253725,14 @@ func (obj *patternFlowPfcPauseEtherTypeMetricTag) validateObj(vObj *validation, if *obj.obj.Length < 1 || *obj.obj.Length > 16 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("1 <= PatternFlowPfcPauseEtherTypeMetricTag.Length <= 16 but Got %d", *obj.obj.Length)) + fmt.Sprintf("1 <= PatternFlowGtpv2MessageLengthMetricTag.Length <= 16 but Got %d", *obj.obj.Length)) } } } -func (obj *patternFlowPfcPauseEtherTypeMetricTag) setDefault() { +func (obj *patternFlowGtpv2MessageLengthMetricTag) setDefault() { if obj.obj.Offset == nil { obj.SetOffset(0) } @@ -210201,29 +253742,29 @@ func (obj *patternFlowPfcPauseEtherTypeMetricTag) setDefault() { } -// ***** PatternFlowPfcPauseControlOpCodeCounter ***** -type patternFlowPfcPauseControlOpCodeCounter struct { +// ***** PatternFlowGtpv2TeidCounter ***** +type patternFlowGtpv2TeidCounter struct { validation - obj *otg.PatternFlowPfcPauseControlOpCodeCounter + obj *otg.PatternFlowGtpv2TeidCounter } -func NewPatternFlowPfcPauseControlOpCodeCounter() PatternFlowPfcPauseControlOpCodeCounter { - obj := patternFlowPfcPauseControlOpCodeCounter{obj: &otg.PatternFlowPfcPauseControlOpCodeCounter{}} +func NewPatternFlowGtpv2TeidCounter() PatternFlowGtpv2TeidCounter { + obj := patternFlowGtpv2TeidCounter{obj: &otg.PatternFlowGtpv2TeidCounter{}} obj.setDefault() return &obj } -func (obj *patternFlowPfcPauseControlOpCodeCounter) Msg() *otg.PatternFlowPfcPauseControlOpCodeCounter { +func (obj *patternFlowGtpv2TeidCounter) Msg() *otg.PatternFlowGtpv2TeidCounter { return obj.obj } -func (obj *patternFlowPfcPauseControlOpCodeCounter) SetMsg(msg *otg.PatternFlowPfcPauseControlOpCodeCounter) PatternFlowPfcPauseControlOpCodeCounter { +func (obj *patternFlowGtpv2TeidCounter) SetMsg(msg *otg.PatternFlowGtpv2TeidCounter) PatternFlowGtpv2TeidCounter { proto.Merge(obj.obj, msg) return obj } -func (obj *patternFlowPfcPauseControlOpCodeCounter) ToProto() (*otg.PatternFlowPfcPauseControlOpCodeCounter, error) { +func (obj *patternFlowGtpv2TeidCounter) ToProto() (*otg.PatternFlowGtpv2TeidCounter, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -210231,7 +253772,7 @@ func (obj *patternFlowPfcPauseControlOpCodeCounter) ToProto() (*otg.PatternFlowP return obj.Msg(), nil } -func (obj *patternFlowPfcPauseControlOpCodeCounter) FromProto(msg *otg.PatternFlowPfcPauseControlOpCodeCounter) (PatternFlowPfcPauseControlOpCodeCounter, error) { +func (obj *patternFlowGtpv2TeidCounter) FromProto(msg *otg.PatternFlowGtpv2TeidCounter) (PatternFlowGtpv2TeidCounter, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -210240,7 +253781,7 @@ func (obj *patternFlowPfcPauseControlOpCodeCounter) FromProto(msg *otg.PatternFl return newObj, nil } -func (obj *patternFlowPfcPauseControlOpCodeCounter) ToPbText() (string, error) { +func (obj *patternFlowGtpv2TeidCounter) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -210252,7 +253793,7 @@ func (obj *patternFlowPfcPauseControlOpCodeCounter) ToPbText() (string, error) { return string(protoMarshal), nil } -func (obj *patternFlowPfcPauseControlOpCodeCounter) FromPbText(value string) error { +func (obj *patternFlowGtpv2TeidCounter) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj @@ -210265,7 +253806,7 @@ func (obj *patternFlowPfcPauseControlOpCodeCounter) FromPbText(value string) err return retObj } -func (obj *patternFlowPfcPauseControlOpCodeCounter) ToYaml() (string, error) { +func (obj *patternFlowGtpv2TeidCounter) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -210286,7 +253827,7 @@ func (obj *patternFlowPfcPauseControlOpCodeCounter) ToYaml() (string, error) { return string(data), nil } -func (obj *patternFlowPfcPauseControlOpCodeCounter) FromYaml(value string) error { +func (obj *patternFlowGtpv2TeidCounter) FromYaml(value string) error { if value == "" { value = "{}" } @@ -210311,7 +253852,7 @@ func (obj *patternFlowPfcPauseControlOpCodeCounter) FromYaml(value string) error return nil } -func (obj *patternFlowPfcPauseControlOpCodeCounter) ToJson() (string, error) { +func (obj *patternFlowGtpv2TeidCounter) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -210329,7 +253870,7 @@ func (obj *patternFlowPfcPauseControlOpCodeCounter) ToJson() (string, error) { return string(data), nil } -func (obj *patternFlowPfcPauseControlOpCodeCounter) FromJson(value string) error { +func (obj *patternFlowGtpv2TeidCounter) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -210350,19 +253891,19 @@ func (obj *patternFlowPfcPauseControlOpCodeCounter) FromJson(value string) error return nil } -func (obj *patternFlowPfcPauseControlOpCodeCounter) validateToAndFrom() error { +func (obj *patternFlowGtpv2TeidCounter) validateToAndFrom() error { // emptyVars() obj.validateObj(&obj.validation, true) return obj.validationResult() } -func (obj *patternFlowPfcPauseControlOpCodeCounter) Validate() error { +func (obj *patternFlowGtpv2TeidCounter) Validate() error { // emptyVars() obj.validateObj(&obj.validation, false) return obj.validationResult() } -func (obj *patternFlowPfcPauseControlOpCodeCounter) String() string { +func (obj *patternFlowGtpv2TeidCounter) String() string { str, err := obj.ToYaml() if err != nil { return err.Error() @@ -210370,12 +253911,12 @@ func (obj *patternFlowPfcPauseControlOpCodeCounter) String() string { return str } -func (obj *patternFlowPfcPauseControlOpCodeCounter) Clone() (PatternFlowPfcPauseControlOpCodeCounter, error) { +func (obj *patternFlowGtpv2TeidCounter) Clone() (PatternFlowGtpv2TeidCounter, error) { vErr := obj.Validate() if vErr != nil { return nil, vErr } - newObj := NewPatternFlowPfcPauseControlOpCodeCounter() + newObj := NewPatternFlowGtpv2TeidCounter() data, err := proto.Marshal(obj.Msg()) if err != nil { return nil, err @@ -210387,63 +253928,63 @@ func (obj *patternFlowPfcPauseControlOpCodeCounter) Clone() (PatternFlowPfcPause return newObj, nil } -// PatternFlowPfcPauseControlOpCodeCounter is integer counter pattern -type PatternFlowPfcPauseControlOpCodeCounter interface { +// PatternFlowGtpv2TeidCounter is integer counter pattern +type PatternFlowGtpv2TeidCounter interface { Validation - // Msg marshals PatternFlowPfcPauseControlOpCodeCounter to protobuf object *otg.PatternFlowPfcPauseControlOpCodeCounter + // Msg marshals PatternFlowGtpv2TeidCounter to protobuf object *otg.PatternFlowGtpv2TeidCounter // and doesn't set defaults - Msg() *otg.PatternFlowPfcPauseControlOpCodeCounter - // SetMsg unmarshals PatternFlowPfcPauseControlOpCodeCounter from protobuf object *otg.PatternFlowPfcPauseControlOpCodeCounter + Msg() *otg.PatternFlowGtpv2TeidCounter + // SetMsg unmarshals PatternFlowGtpv2TeidCounter from protobuf object *otg.PatternFlowGtpv2TeidCounter // and doesn't set defaults - SetMsg(*otg.PatternFlowPfcPauseControlOpCodeCounter) PatternFlowPfcPauseControlOpCodeCounter - // ToProto marshals PatternFlowPfcPauseControlOpCodeCounter to protobuf object *otg.PatternFlowPfcPauseControlOpCodeCounter - ToProto() (*otg.PatternFlowPfcPauseControlOpCodeCounter, error) - // ToPbText marshals PatternFlowPfcPauseControlOpCodeCounter to protobuf text + SetMsg(*otg.PatternFlowGtpv2TeidCounter) PatternFlowGtpv2TeidCounter + // ToProto marshals PatternFlowGtpv2TeidCounter to protobuf object *otg.PatternFlowGtpv2TeidCounter + ToProto() (*otg.PatternFlowGtpv2TeidCounter, error) + // ToPbText marshals PatternFlowGtpv2TeidCounter to protobuf text ToPbText() (string, error) - // ToYaml marshals PatternFlowPfcPauseControlOpCodeCounter to YAML text + // ToYaml marshals PatternFlowGtpv2TeidCounter to YAML text ToYaml() (string, error) - // ToJson marshals PatternFlowPfcPauseControlOpCodeCounter to JSON text + // ToJson marshals PatternFlowGtpv2TeidCounter to JSON text ToJson() (string, error) - // FromProto unmarshals PatternFlowPfcPauseControlOpCodeCounter from protobuf object *otg.PatternFlowPfcPauseControlOpCodeCounter - FromProto(msg *otg.PatternFlowPfcPauseControlOpCodeCounter) (PatternFlowPfcPauseControlOpCodeCounter, error) - // FromPbText unmarshals PatternFlowPfcPauseControlOpCodeCounter from protobuf text + // FromProto unmarshals PatternFlowGtpv2TeidCounter from protobuf object *otg.PatternFlowGtpv2TeidCounter + FromProto(msg *otg.PatternFlowGtpv2TeidCounter) (PatternFlowGtpv2TeidCounter, error) + // FromPbText unmarshals PatternFlowGtpv2TeidCounter from protobuf text FromPbText(value string) error - // FromYaml unmarshals PatternFlowPfcPauseControlOpCodeCounter from YAML text + // FromYaml unmarshals PatternFlowGtpv2TeidCounter from YAML text FromYaml(value string) error - // FromJson unmarshals PatternFlowPfcPauseControlOpCodeCounter from JSON text + // FromJson unmarshals PatternFlowGtpv2TeidCounter from JSON text FromJson(value string) error - // Validate validates PatternFlowPfcPauseControlOpCodeCounter + // Validate validates PatternFlowGtpv2TeidCounter Validate() error // A stringer function String() string // Clones the object - Clone() (PatternFlowPfcPauseControlOpCodeCounter, error) + Clone() (PatternFlowGtpv2TeidCounter, error) validateToAndFrom() error validateObj(vObj *validation, set_default bool) setDefault() - // Start returns uint32, set in PatternFlowPfcPauseControlOpCodeCounter. + // Start returns uint32, set in PatternFlowGtpv2TeidCounter. Start() uint32 - // SetStart assigns uint32 provided by user to PatternFlowPfcPauseControlOpCodeCounter - SetStart(value uint32) PatternFlowPfcPauseControlOpCodeCounter - // HasStart checks if Start has been set in PatternFlowPfcPauseControlOpCodeCounter + // SetStart assigns uint32 provided by user to PatternFlowGtpv2TeidCounter + SetStart(value uint32) PatternFlowGtpv2TeidCounter + // HasStart checks if Start has been set in PatternFlowGtpv2TeidCounter HasStart() bool - // Step returns uint32, set in PatternFlowPfcPauseControlOpCodeCounter. + // Step returns uint32, set in PatternFlowGtpv2TeidCounter. Step() uint32 - // SetStep assigns uint32 provided by user to PatternFlowPfcPauseControlOpCodeCounter - SetStep(value uint32) PatternFlowPfcPauseControlOpCodeCounter - // HasStep checks if Step has been set in PatternFlowPfcPauseControlOpCodeCounter + // SetStep assigns uint32 provided by user to PatternFlowGtpv2TeidCounter + SetStep(value uint32) PatternFlowGtpv2TeidCounter + // HasStep checks if Step has been set in PatternFlowGtpv2TeidCounter HasStep() bool - // Count returns uint32, set in PatternFlowPfcPauseControlOpCodeCounter. + // Count returns uint32, set in PatternFlowGtpv2TeidCounter. Count() uint32 - // SetCount assigns uint32 provided by user to PatternFlowPfcPauseControlOpCodeCounter - SetCount(value uint32) PatternFlowPfcPauseControlOpCodeCounter - // HasCount checks if Count has been set in PatternFlowPfcPauseControlOpCodeCounter + // SetCount assigns uint32 provided by user to PatternFlowGtpv2TeidCounter + SetCount(value uint32) PatternFlowGtpv2TeidCounter + // HasCount checks if Count has been set in PatternFlowGtpv2TeidCounter HasCount() bool } // description is TBD // Start returns a uint32 -func (obj *patternFlowPfcPauseControlOpCodeCounter) Start() uint32 { +func (obj *patternFlowGtpv2TeidCounter) Start() uint32 { return *obj.obj.Start @@ -210451,13 +253992,13 @@ func (obj *patternFlowPfcPauseControlOpCodeCounter) Start() uint32 { // description is TBD // Start returns a uint32 -func (obj *patternFlowPfcPauseControlOpCodeCounter) HasStart() bool { +func (obj *patternFlowGtpv2TeidCounter) HasStart() bool { return obj.obj.Start != nil } // description is TBD -// SetStart sets the uint32 value in the PatternFlowPfcPauseControlOpCodeCounter object -func (obj *patternFlowPfcPauseControlOpCodeCounter) SetStart(value uint32) PatternFlowPfcPauseControlOpCodeCounter { +// SetStart sets the uint32 value in the PatternFlowGtpv2TeidCounter object +func (obj *patternFlowGtpv2TeidCounter) SetStart(value uint32) PatternFlowGtpv2TeidCounter { obj.obj.Start = &value return obj @@ -210465,7 +254006,7 @@ func (obj *patternFlowPfcPauseControlOpCodeCounter) SetStart(value uint32) Patte // description is TBD // Step returns a uint32 -func (obj *patternFlowPfcPauseControlOpCodeCounter) Step() uint32 { +func (obj *patternFlowGtpv2TeidCounter) Step() uint32 { return *obj.obj.Step @@ -210473,13 +254014,13 @@ func (obj *patternFlowPfcPauseControlOpCodeCounter) Step() uint32 { // description is TBD // Step returns a uint32 -func (obj *patternFlowPfcPauseControlOpCodeCounter) HasStep() bool { +func (obj *patternFlowGtpv2TeidCounter) HasStep() bool { return obj.obj.Step != nil } // description is TBD -// SetStep sets the uint32 value in the PatternFlowPfcPauseControlOpCodeCounter object -func (obj *patternFlowPfcPauseControlOpCodeCounter) SetStep(value uint32) PatternFlowPfcPauseControlOpCodeCounter { +// SetStep sets the uint32 value in the PatternFlowGtpv2TeidCounter object +func (obj *patternFlowGtpv2TeidCounter) SetStep(value uint32) PatternFlowGtpv2TeidCounter { obj.obj.Step = &value return obj @@ -210487,7 +254028,7 @@ func (obj *patternFlowPfcPauseControlOpCodeCounter) SetStep(value uint32) Patter // description is TBD // Count returns a uint32 -func (obj *patternFlowPfcPauseControlOpCodeCounter) Count() uint32 { +func (obj *patternFlowGtpv2TeidCounter) Count() uint32 { return *obj.obj.Count @@ -210495,58 +254036,28 @@ func (obj *patternFlowPfcPauseControlOpCodeCounter) Count() uint32 { // description is TBD // Count returns a uint32 -func (obj *patternFlowPfcPauseControlOpCodeCounter) HasCount() bool { +func (obj *patternFlowGtpv2TeidCounter) HasCount() bool { return obj.obj.Count != nil } // description is TBD -// SetCount sets the uint32 value in the PatternFlowPfcPauseControlOpCodeCounter object -func (obj *patternFlowPfcPauseControlOpCodeCounter) SetCount(value uint32) PatternFlowPfcPauseControlOpCodeCounter { +// SetCount sets the uint32 value in the PatternFlowGtpv2TeidCounter object +func (obj *patternFlowGtpv2TeidCounter) SetCount(value uint32) PatternFlowGtpv2TeidCounter { obj.obj.Count = &value return obj } -func (obj *patternFlowPfcPauseControlOpCodeCounter) validateObj(vObj *validation, set_default bool) { +func (obj *patternFlowGtpv2TeidCounter) validateObj(vObj *validation, set_default bool) { if set_default { obj.setDefault() } - if obj.obj.Start != nil { - - if *obj.obj.Start > 65535 { - vObj.validationErrors = append( - vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowPfcPauseControlOpCodeCounter.Start <= 65535 but Got %d", *obj.obj.Start)) - } - - } - - if obj.obj.Step != nil { - - if *obj.obj.Step > 65535 { - vObj.validationErrors = append( - vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowPfcPauseControlOpCodeCounter.Step <= 65535 but Got %d", *obj.obj.Step)) - } - - } - - if obj.obj.Count != nil { - - if *obj.obj.Count > 65535 { - vObj.validationErrors = append( - vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowPfcPauseControlOpCodeCounter.Count <= 65535 but Got %d", *obj.obj.Count)) - } - - } - } -func (obj *patternFlowPfcPauseControlOpCodeCounter) setDefault() { +func (obj *patternFlowGtpv2TeidCounter) setDefault() { if obj.obj.Start == nil { - obj.SetStart(257) + obj.SetStart(0) } if obj.obj.Step == nil { obj.SetStep(1) @@ -210557,29 +254068,29 @@ func (obj *patternFlowPfcPauseControlOpCodeCounter) setDefault() { } -// ***** PatternFlowPfcPauseControlOpCodeMetricTag ***** -type patternFlowPfcPauseControlOpCodeMetricTag struct { +// ***** PatternFlowGtpv2TeidMetricTag ***** +type patternFlowGtpv2TeidMetricTag struct { validation - obj *otg.PatternFlowPfcPauseControlOpCodeMetricTag + obj *otg.PatternFlowGtpv2TeidMetricTag } -func NewPatternFlowPfcPauseControlOpCodeMetricTag() PatternFlowPfcPauseControlOpCodeMetricTag { - obj := patternFlowPfcPauseControlOpCodeMetricTag{obj: &otg.PatternFlowPfcPauseControlOpCodeMetricTag{}} +func NewPatternFlowGtpv2TeidMetricTag() PatternFlowGtpv2TeidMetricTag { + obj := patternFlowGtpv2TeidMetricTag{obj: &otg.PatternFlowGtpv2TeidMetricTag{}} obj.setDefault() return &obj } -func (obj *patternFlowPfcPauseControlOpCodeMetricTag) Msg() *otg.PatternFlowPfcPauseControlOpCodeMetricTag { +func (obj *patternFlowGtpv2TeidMetricTag) Msg() *otg.PatternFlowGtpv2TeidMetricTag { return obj.obj } -func (obj *patternFlowPfcPauseControlOpCodeMetricTag) SetMsg(msg *otg.PatternFlowPfcPauseControlOpCodeMetricTag) PatternFlowPfcPauseControlOpCodeMetricTag { +func (obj *patternFlowGtpv2TeidMetricTag) SetMsg(msg *otg.PatternFlowGtpv2TeidMetricTag) PatternFlowGtpv2TeidMetricTag { proto.Merge(obj.obj, msg) return obj } -func (obj *patternFlowPfcPauseControlOpCodeMetricTag) ToProto() (*otg.PatternFlowPfcPauseControlOpCodeMetricTag, error) { +func (obj *patternFlowGtpv2TeidMetricTag) ToProto() (*otg.PatternFlowGtpv2TeidMetricTag, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -210587,7 +254098,7 @@ func (obj *patternFlowPfcPauseControlOpCodeMetricTag) ToProto() (*otg.PatternFlo return obj.Msg(), nil } -func (obj *patternFlowPfcPauseControlOpCodeMetricTag) FromProto(msg *otg.PatternFlowPfcPauseControlOpCodeMetricTag) (PatternFlowPfcPauseControlOpCodeMetricTag, error) { +func (obj *patternFlowGtpv2TeidMetricTag) FromProto(msg *otg.PatternFlowGtpv2TeidMetricTag) (PatternFlowGtpv2TeidMetricTag, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -210596,7 +254107,7 @@ func (obj *patternFlowPfcPauseControlOpCodeMetricTag) FromProto(msg *otg.Pattern return newObj, nil } -func (obj *patternFlowPfcPauseControlOpCodeMetricTag) ToPbText() (string, error) { +func (obj *patternFlowGtpv2TeidMetricTag) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -210608,7 +254119,7 @@ func (obj *patternFlowPfcPauseControlOpCodeMetricTag) ToPbText() (string, error) return string(protoMarshal), nil } -func (obj *patternFlowPfcPauseControlOpCodeMetricTag) FromPbText(value string) error { +func (obj *patternFlowGtpv2TeidMetricTag) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj @@ -210621,7 +254132,7 @@ func (obj *patternFlowPfcPauseControlOpCodeMetricTag) FromPbText(value string) e return retObj } -func (obj *patternFlowPfcPauseControlOpCodeMetricTag) ToYaml() (string, error) { +func (obj *patternFlowGtpv2TeidMetricTag) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -210642,7 +254153,7 @@ func (obj *patternFlowPfcPauseControlOpCodeMetricTag) ToYaml() (string, error) { return string(data), nil } -func (obj *patternFlowPfcPauseControlOpCodeMetricTag) FromYaml(value string) error { +func (obj *patternFlowGtpv2TeidMetricTag) FromYaml(value string) error { if value == "" { value = "{}" } @@ -210667,7 +254178,7 @@ func (obj *patternFlowPfcPauseControlOpCodeMetricTag) FromYaml(value string) err return nil } -func (obj *patternFlowPfcPauseControlOpCodeMetricTag) ToJson() (string, error) { +func (obj *patternFlowGtpv2TeidMetricTag) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -210685,7 +254196,7 @@ func (obj *patternFlowPfcPauseControlOpCodeMetricTag) ToJson() (string, error) { return string(data), nil } -func (obj *patternFlowPfcPauseControlOpCodeMetricTag) FromJson(value string) error { +func (obj *patternFlowGtpv2TeidMetricTag) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -210706,19 +254217,19 @@ func (obj *patternFlowPfcPauseControlOpCodeMetricTag) FromJson(value string) err return nil } -func (obj *patternFlowPfcPauseControlOpCodeMetricTag) validateToAndFrom() error { +func (obj *patternFlowGtpv2TeidMetricTag) validateToAndFrom() error { // emptyVars() obj.validateObj(&obj.validation, true) return obj.validationResult() } -func (obj *patternFlowPfcPauseControlOpCodeMetricTag) Validate() error { +func (obj *patternFlowGtpv2TeidMetricTag) Validate() error { // emptyVars() obj.validateObj(&obj.validation, false) return obj.validationResult() } -func (obj *patternFlowPfcPauseControlOpCodeMetricTag) String() string { +func (obj *patternFlowGtpv2TeidMetricTag) String() string { str, err := obj.ToYaml() if err != nil { return err.Error() @@ -210726,12 +254237,12 @@ func (obj *patternFlowPfcPauseControlOpCodeMetricTag) String() string { return str } -func (obj *patternFlowPfcPauseControlOpCodeMetricTag) Clone() (PatternFlowPfcPauseControlOpCodeMetricTag, error) { +func (obj *patternFlowGtpv2TeidMetricTag) Clone() (PatternFlowGtpv2TeidMetricTag, error) { vErr := obj.Validate() if vErr != nil { return nil, vErr } - newObj := NewPatternFlowPfcPauseControlOpCodeMetricTag() + newObj := NewPatternFlowGtpv2TeidMetricTag() data, err := proto.Marshal(obj.Msg()) if err != nil { return nil, err @@ -210743,69 +254254,69 @@ func (obj *patternFlowPfcPauseControlOpCodeMetricTag) Clone() (PatternFlowPfcPau return newObj, nil } -// PatternFlowPfcPauseControlOpCodeMetricTag is metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. -type PatternFlowPfcPauseControlOpCodeMetricTag interface { +// PatternFlowGtpv2TeidMetricTag is metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. +type PatternFlowGtpv2TeidMetricTag interface { Validation - // Msg marshals PatternFlowPfcPauseControlOpCodeMetricTag to protobuf object *otg.PatternFlowPfcPauseControlOpCodeMetricTag + // Msg marshals PatternFlowGtpv2TeidMetricTag to protobuf object *otg.PatternFlowGtpv2TeidMetricTag // and doesn't set defaults - Msg() *otg.PatternFlowPfcPauseControlOpCodeMetricTag - // SetMsg unmarshals PatternFlowPfcPauseControlOpCodeMetricTag from protobuf object *otg.PatternFlowPfcPauseControlOpCodeMetricTag + Msg() *otg.PatternFlowGtpv2TeidMetricTag + // SetMsg unmarshals PatternFlowGtpv2TeidMetricTag from protobuf object *otg.PatternFlowGtpv2TeidMetricTag // and doesn't set defaults - SetMsg(*otg.PatternFlowPfcPauseControlOpCodeMetricTag) PatternFlowPfcPauseControlOpCodeMetricTag - // ToProto marshals PatternFlowPfcPauseControlOpCodeMetricTag to protobuf object *otg.PatternFlowPfcPauseControlOpCodeMetricTag - ToProto() (*otg.PatternFlowPfcPauseControlOpCodeMetricTag, error) - // ToPbText marshals PatternFlowPfcPauseControlOpCodeMetricTag to protobuf text + SetMsg(*otg.PatternFlowGtpv2TeidMetricTag) PatternFlowGtpv2TeidMetricTag + // ToProto marshals PatternFlowGtpv2TeidMetricTag to protobuf object *otg.PatternFlowGtpv2TeidMetricTag + ToProto() (*otg.PatternFlowGtpv2TeidMetricTag, error) + // ToPbText marshals PatternFlowGtpv2TeidMetricTag to protobuf text ToPbText() (string, error) - // ToYaml marshals PatternFlowPfcPauseControlOpCodeMetricTag to YAML text + // ToYaml marshals PatternFlowGtpv2TeidMetricTag to YAML text ToYaml() (string, error) - // ToJson marshals PatternFlowPfcPauseControlOpCodeMetricTag to JSON text + // ToJson marshals PatternFlowGtpv2TeidMetricTag to JSON text ToJson() (string, error) - // FromProto unmarshals PatternFlowPfcPauseControlOpCodeMetricTag from protobuf object *otg.PatternFlowPfcPauseControlOpCodeMetricTag - FromProto(msg *otg.PatternFlowPfcPauseControlOpCodeMetricTag) (PatternFlowPfcPauseControlOpCodeMetricTag, error) - // FromPbText unmarshals PatternFlowPfcPauseControlOpCodeMetricTag from protobuf text + // FromProto unmarshals PatternFlowGtpv2TeidMetricTag from protobuf object *otg.PatternFlowGtpv2TeidMetricTag + FromProto(msg *otg.PatternFlowGtpv2TeidMetricTag) (PatternFlowGtpv2TeidMetricTag, error) + // FromPbText unmarshals PatternFlowGtpv2TeidMetricTag from protobuf text FromPbText(value string) error - // FromYaml unmarshals PatternFlowPfcPauseControlOpCodeMetricTag from YAML text + // FromYaml unmarshals PatternFlowGtpv2TeidMetricTag from YAML text FromYaml(value string) error - // FromJson unmarshals PatternFlowPfcPauseControlOpCodeMetricTag from JSON text + // FromJson unmarshals PatternFlowGtpv2TeidMetricTag from JSON text FromJson(value string) error - // Validate validates PatternFlowPfcPauseControlOpCodeMetricTag + // Validate validates PatternFlowGtpv2TeidMetricTag Validate() error // A stringer function String() string // Clones the object - Clone() (PatternFlowPfcPauseControlOpCodeMetricTag, error) + Clone() (PatternFlowGtpv2TeidMetricTag, error) validateToAndFrom() error validateObj(vObj *validation, set_default bool) setDefault() - // Name returns string, set in PatternFlowPfcPauseControlOpCodeMetricTag. + // Name returns string, set in PatternFlowGtpv2TeidMetricTag. Name() string - // SetName assigns string provided by user to PatternFlowPfcPauseControlOpCodeMetricTag - SetName(value string) PatternFlowPfcPauseControlOpCodeMetricTag - // Offset returns uint32, set in PatternFlowPfcPauseControlOpCodeMetricTag. + // SetName assigns string provided by user to PatternFlowGtpv2TeidMetricTag + SetName(value string) PatternFlowGtpv2TeidMetricTag + // Offset returns uint32, set in PatternFlowGtpv2TeidMetricTag. Offset() uint32 - // SetOffset assigns uint32 provided by user to PatternFlowPfcPauseControlOpCodeMetricTag - SetOffset(value uint32) PatternFlowPfcPauseControlOpCodeMetricTag - // HasOffset checks if Offset has been set in PatternFlowPfcPauseControlOpCodeMetricTag + // SetOffset assigns uint32 provided by user to PatternFlowGtpv2TeidMetricTag + SetOffset(value uint32) PatternFlowGtpv2TeidMetricTag + // HasOffset checks if Offset has been set in PatternFlowGtpv2TeidMetricTag HasOffset() bool - // Length returns uint32, set in PatternFlowPfcPauseControlOpCodeMetricTag. + // Length returns uint32, set in PatternFlowGtpv2TeidMetricTag. Length() uint32 - // SetLength assigns uint32 provided by user to PatternFlowPfcPauseControlOpCodeMetricTag - SetLength(value uint32) PatternFlowPfcPauseControlOpCodeMetricTag - // HasLength checks if Length has been set in PatternFlowPfcPauseControlOpCodeMetricTag + // SetLength assigns uint32 provided by user to PatternFlowGtpv2TeidMetricTag + SetLength(value uint32) PatternFlowGtpv2TeidMetricTag + // HasLength checks if Length has been set in PatternFlowGtpv2TeidMetricTag HasLength() bool } // Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field // Name returns a string -func (obj *patternFlowPfcPauseControlOpCodeMetricTag) Name() string { +func (obj *patternFlowGtpv2TeidMetricTag) Name() string { return *obj.obj.Name } // Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field -// SetName sets the string value in the PatternFlowPfcPauseControlOpCodeMetricTag object -func (obj *patternFlowPfcPauseControlOpCodeMetricTag) SetName(value string) PatternFlowPfcPauseControlOpCodeMetricTag { +// SetName sets the string value in the PatternFlowGtpv2TeidMetricTag object +func (obj *patternFlowGtpv2TeidMetricTag) SetName(value string) PatternFlowGtpv2TeidMetricTag { obj.obj.Name = &value return obj @@ -210813,7 +254324,7 @@ func (obj *patternFlowPfcPauseControlOpCodeMetricTag) SetName(value string) Patt // Offset in bits relative to start of corresponding header field // Offset returns a uint32 -func (obj *patternFlowPfcPauseControlOpCodeMetricTag) Offset() uint32 { +func (obj *patternFlowGtpv2TeidMetricTag) Offset() uint32 { return *obj.obj.Offset @@ -210821,13 +254332,13 @@ func (obj *patternFlowPfcPauseControlOpCodeMetricTag) Offset() uint32 { // Offset in bits relative to start of corresponding header field // Offset returns a uint32 -func (obj *patternFlowPfcPauseControlOpCodeMetricTag) HasOffset() bool { +func (obj *patternFlowGtpv2TeidMetricTag) HasOffset() bool { return obj.obj.Offset != nil } // Offset in bits relative to start of corresponding header field -// SetOffset sets the uint32 value in the PatternFlowPfcPauseControlOpCodeMetricTag object -func (obj *patternFlowPfcPauseControlOpCodeMetricTag) SetOffset(value uint32) PatternFlowPfcPauseControlOpCodeMetricTag { +// SetOffset sets the uint32 value in the PatternFlowGtpv2TeidMetricTag object +func (obj *patternFlowGtpv2TeidMetricTag) SetOffset(value uint32) PatternFlowGtpv2TeidMetricTag { obj.obj.Offset = &value return obj @@ -210835,7 +254346,7 @@ func (obj *patternFlowPfcPauseControlOpCodeMetricTag) SetOffset(value uint32) Pa // Number of bits to track for metrics starting from configured offset of corresponding header field // Length returns a uint32 -func (obj *patternFlowPfcPauseControlOpCodeMetricTag) Length() uint32 { +func (obj *patternFlowGtpv2TeidMetricTag) Length() uint32 { return *obj.obj.Length @@ -210843,83 +254354,83 @@ func (obj *patternFlowPfcPauseControlOpCodeMetricTag) Length() uint32 { // Number of bits to track for metrics starting from configured offset of corresponding header field // Length returns a uint32 -func (obj *patternFlowPfcPauseControlOpCodeMetricTag) HasLength() bool { +func (obj *patternFlowGtpv2TeidMetricTag) HasLength() bool { return obj.obj.Length != nil } // Number of bits to track for metrics starting from configured offset of corresponding header field -// SetLength sets the uint32 value in the PatternFlowPfcPauseControlOpCodeMetricTag object -func (obj *patternFlowPfcPauseControlOpCodeMetricTag) SetLength(value uint32) PatternFlowPfcPauseControlOpCodeMetricTag { +// SetLength sets the uint32 value in the PatternFlowGtpv2TeidMetricTag object +func (obj *patternFlowGtpv2TeidMetricTag) SetLength(value uint32) PatternFlowGtpv2TeidMetricTag { obj.obj.Length = &value return obj } -func (obj *patternFlowPfcPauseControlOpCodeMetricTag) validateObj(vObj *validation, set_default bool) { +func (obj *patternFlowGtpv2TeidMetricTag) validateObj(vObj *validation, set_default bool) { if set_default { obj.setDefault() } // Name is required if obj.obj.Name == nil { - vObj.validationErrors = append(vObj.validationErrors, "Name is required field on interface PatternFlowPfcPauseControlOpCodeMetricTag") + vObj.validationErrors = append(vObj.validationErrors, "Name is required field on interface PatternFlowGtpv2TeidMetricTag") } if obj.obj.Offset != nil { - if *obj.obj.Offset > 15 { + if *obj.obj.Offset > 31 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowPfcPauseControlOpCodeMetricTag.Offset <= 15 but Got %d", *obj.obj.Offset)) + fmt.Sprintf("0 <= PatternFlowGtpv2TeidMetricTag.Offset <= 31 but Got %d", *obj.obj.Offset)) } } if obj.obj.Length != nil { - if *obj.obj.Length < 1 || *obj.obj.Length > 16 { + if *obj.obj.Length < 1 || *obj.obj.Length > 32 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("1 <= PatternFlowPfcPauseControlOpCodeMetricTag.Length <= 16 but Got %d", *obj.obj.Length)) + fmt.Sprintf("1 <= PatternFlowGtpv2TeidMetricTag.Length <= 32 but Got %d", *obj.obj.Length)) } } } -func (obj *patternFlowPfcPauseControlOpCodeMetricTag) setDefault() { +func (obj *patternFlowGtpv2TeidMetricTag) setDefault() { if obj.obj.Offset == nil { obj.SetOffset(0) } if obj.obj.Length == nil { - obj.SetLength(16) + obj.SetLength(32) } } -// ***** PatternFlowPfcPauseClassEnableVectorCounter ***** -type patternFlowPfcPauseClassEnableVectorCounter struct { +// ***** PatternFlowGtpv2SequenceNumberCounter ***** +type patternFlowGtpv2SequenceNumberCounter struct { validation - obj *otg.PatternFlowPfcPauseClassEnableVectorCounter + obj *otg.PatternFlowGtpv2SequenceNumberCounter } -func NewPatternFlowPfcPauseClassEnableVectorCounter() PatternFlowPfcPauseClassEnableVectorCounter { - obj := patternFlowPfcPauseClassEnableVectorCounter{obj: &otg.PatternFlowPfcPauseClassEnableVectorCounter{}} +func NewPatternFlowGtpv2SequenceNumberCounter() PatternFlowGtpv2SequenceNumberCounter { + obj := patternFlowGtpv2SequenceNumberCounter{obj: &otg.PatternFlowGtpv2SequenceNumberCounter{}} obj.setDefault() return &obj } -func (obj *patternFlowPfcPauseClassEnableVectorCounter) Msg() *otg.PatternFlowPfcPauseClassEnableVectorCounter { +func (obj *patternFlowGtpv2SequenceNumberCounter) Msg() *otg.PatternFlowGtpv2SequenceNumberCounter { return obj.obj } -func (obj *patternFlowPfcPauseClassEnableVectorCounter) SetMsg(msg *otg.PatternFlowPfcPauseClassEnableVectorCounter) PatternFlowPfcPauseClassEnableVectorCounter { +func (obj *patternFlowGtpv2SequenceNumberCounter) SetMsg(msg *otg.PatternFlowGtpv2SequenceNumberCounter) PatternFlowGtpv2SequenceNumberCounter { proto.Merge(obj.obj, msg) return obj } -func (obj *patternFlowPfcPauseClassEnableVectorCounter) ToProto() (*otg.PatternFlowPfcPauseClassEnableVectorCounter, error) { +func (obj *patternFlowGtpv2SequenceNumberCounter) ToProto() (*otg.PatternFlowGtpv2SequenceNumberCounter, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -210927,7 +254438,7 @@ func (obj *patternFlowPfcPauseClassEnableVectorCounter) ToProto() (*otg.PatternF return obj.Msg(), nil } -func (obj *patternFlowPfcPauseClassEnableVectorCounter) FromProto(msg *otg.PatternFlowPfcPauseClassEnableVectorCounter) (PatternFlowPfcPauseClassEnableVectorCounter, error) { +func (obj *patternFlowGtpv2SequenceNumberCounter) FromProto(msg *otg.PatternFlowGtpv2SequenceNumberCounter) (PatternFlowGtpv2SequenceNumberCounter, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -210936,7 +254447,7 @@ func (obj *patternFlowPfcPauseClassEnableVectorCounter) FromProto(msg *otg.Patte return newObj, nil } -func (obj *patternFlowPfcPauseClassEnableVectorCounter) ToPbText() (string, error) { +func (obj *patternFlowGtpv2SequenceNumberCounter) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -210948,7 +254459,7 @@ func (obj *patternFlowPfcPauseClassEnableVectorCounter) ToPbText() (string, erro return string(protoMarshal), nil } -func (obj *patternFlowPfcPauseClassEnableVectorCounter) FromPbText(value string) error { +func (obj *patternFlowGtpv2SequenceNumberCounter) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj @@ -210961,7 +254472,7 @@ func (obj *patternFlowPfcPauseClassEnableVectorCounter) FromPbText(value string) return retObj } -func (obj *patternFlowPfcPauseClassEnableVectorCounter) ToYaml() (string, error) { +func (obj *patternFlowGtpv2SequenceNumberCounter) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -210982,7 +254493,7 @@ func (obj *patternFlowPfcPauseClassEnableVectorCounter) ToYaml() (string, error) return string(data), nil } -func (obj *patternFlowPfcPauseClassEnableVectorCounter) FromYaml(value string) error { +func (obj *patternFlowGtpv2SequenceNumberCounter) FromYaml(value string) error { if value == "" { value = "{}" } @@ -211007,7 +254518,7 @@ func (obj *patternFlowPfcPauseClassEnableVectorCounter) FromYaml(value string) e return nil } -func (obj *patternFlowPfcPauseClassEnableVectorCounter) ToJson() (string, error) { +func (obj *patternFlowGtpv2SequenceNumberCounter) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -211025,7 +254536,7 @@ func (obj *patternFlowPfcPauseClassEnableVectorCounter) ToJson() (string, error) return string(data), nil } -func (obj *patternFlowPfcPauseClassEnableVectorCounter) FromJson(value string) error { +func (obj *patternFlowGtpv2SequenceNumberCounter) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -211046,19 +254557,19 @@ func (obj *patternFlowPfcPauseClassEnableVectorCounter) FromJson(value string) e return nil } -func (obj *patternFlowPfcPauseClassEnableVectorCounter) validateToAndFrom() error { +func (obj *patternFlowGtpv2SequenceNumberCounter) validateToAndFrom() error { // emptyVars() obj.validateObj(&obj.validation, true) return obj.validationResult() } -func (obj *patternFlowPfcPauseClassEnableVectorCounter) Validate() error { +func (obj *patternFlowGtpv2SequenceNumberCounter) Validate() error { // emptyVars() obj.validateObj(&obj.validation, false) return obj.validationResult() } -func (obj *patternFlowPfcPauseClassEnableVectorCounter) String() string { +func (obj *patternFlowGtpv2SequenceNumberCounter) String() string { str, err := obj.ToYaml() if err != nil { return err.Error() @@ -211066,12 +254577,12 @@ func (obj *patternFlowPfcPauseClassEnableVectorCounter) String() string { return str } -func (obj *patternFlowPfcPauseClassEnableVectorCounter) Clone() (PatternFlowPfcPauseClassEnableVectorCounter, error) { +func (obj *patternFlowGtpv2SequenceNumberCounter) Clone() (PatternFlowGtpv2SequenceNumberCounter, error) { vErr := obj.Validate() if vErr != nil { return nil, vErr } - newObj := NewPatternFlowPfcPauseClassEnableVectorCounter() + newObj := NewPatternFlowGtpv2SequenceNumberCounter() data, err := proto.Marshal(obj.Msg()) if err != nil { return nil, err @@ -211083,63 +254594,63 @@ func (obj *patternFlowPfcPauseClassEnableVectorCounter) Clone() (PatternFlowPfcP return newObj, nil } -// PatternFlowPfcPauseClassEnableVectorCounter is integer counter pattern -type PatternFlowPfcPauseClassEnableVectorCounter interface { +// PatternFlowGtpv2SequenceNumberCounter is integer counter pattern +type PatternFlowGtpv2SequenceNumberCounter interface { Validation - // Msg marshals PatternFlowPfcPauseClassEnableVectorCounter to protobuf object *otg.PatternFlowPfcPauseClassEnableVectorCounter + // Msg marshals PatternFlowGtpv2SequenceNumberCounter to protobuf object *otg.PatternFlowGtpv2SequenceNumberCounter // and doesn't set defaults - Msg() *otg.PatternFlowPfcPauseClassEnableVectorCounter - // SetMsg unmarshals PatternFlowPfcPauseClassEnableVectorCounter from protobuf object *otg.PatternFlowPfcPauseClassEnableVectorCounter + Msg() *otg.PatternFlowGtpv2SequenceNumberCounter + // SetMsg unmarshals PatternFlowGtpv2SequenceNumberCounter from protobuf object *otg.PatternFlowGtpv2SequenceNumberCounter // and doesn't set defaults - SetMsg(*otg.PatternFlowPfcPauseClassEnableVectorCounter) PatternFlowPfcPauseClassEnableVectorCounter - // ToProto marshals PatternFlowPfcPauseClassEnableVectorCounter to protobuf object *otg.PatternFlowPfcPauseClassEnableVectorCounter - ToProto() (*otg.PatternFlowPfcPauseClassEnableVectorCounter, error) - // ToPbText marshals PatternFlowPfcPauseClassEnableVectorCounter to protobuf text + SetMsg(*otg.PatternFlowGtpv2SequenceNumberCounter) PatternFlowGtpv2SequenceNumberCounter + // ToProto marshals PatternFlowGtpv2SequenceNumberCounter to protobuf object *otg.PatternFlowGtpv2SequenceNumberCounter + ToProto() (*otg.PatternFlowGtpv2SequenceNumberCounter, error) + // ToPbText marshals PatternFlowGtpv2SequenceNumberCounter to protobuf text ToPbText() (string, error) - // ToYaml marshals PatternFlowPfcPauseClassEnableVectorCounter to YAML text + // ToYaml marshals PatternFlowGtpv2SequenceNumberCounter to YAML text ToYaml() (string, error) - // ToJson marshals PatternFlowPfcPauseClassEnableVectorCounter to JSON text + // ToJson marshals PatternFlowGtpv2SequenceNumberCounter to JSON text ToJson() (string, error) - // FromProto unmarshals PatternFlowPfcPauseClassEnableVectorCounter from protobuf object *otg.PatternFlowPfcPauseClassEnableVectorCounter - FromProto(msg *otg.PatternFlowPfcPauseClassEnableVectorCounter) (PatternFlowPfcPauseClassEnableVectorCounter, error) - // FromPbText unmarshals PatternFlowPfcPauseClassEnableVectorCounter from protobuf text + // FromProto unmarshals PatternFlowGtpv2SequenceNumberCounter from protobuf object *otg.PatternFlowGtpv2SequenceNumberCounter + FromProto(msg *otg.PatternFlowGtpv2SequenceNumberCounter) (PatternFlowGtpv2SequenceNumberCounter, error) + // FromPbText unmarshals PatternFlowGtpv2SequenceNumberCounter from protobuf text FromPbText(value string) error - // FromYaml unmarshals PatternFlowPfcPauseClassEnableVectorCounter from YAML text + // FromYaml unmarshals PatternFlowGtpv2SequenceNumberCounter from YAML text FromYaml(value string) error - // FromJson unmarshals PatternFlowPfcPauseClassEnableVectorCounter from JSON text + // FromJson unmarshals PatternFlowGtpv2SequenceNumberCounter from JSON text FromJson(value string) error - // Validate validates PatternFlowPfcPauseClassEnableVectorCounter + // Validate validates PatternFlowGtpv2SequenceNumberCounter Validate() error // A stringer function String() string // Clones the object - Clone() (PatternFlowPfcPauseClassEnableVectorCounter, error) + Clone() (PatternFlowGtpv2SequenceNumberCounter, error) validateToAndFrom() error validateObj(vObj *validation, set_default bool) setDefault() - // Start returns uint32, set in PatternFlowPfcPauseClassEnableVectorCounter. + // Start returns uint32, set in PatternFlowGtpv2SequenceNumberCounter. Start() uint32 - // SetStart assigns uint32 provided by user to PatternFlowPfcPauseClassEnableVectorCounter - SetStart(value uint32) PatternFlowPfcPauseClassEnableVectorCounter - // HasStart checks if Start has been set in PatternFlowPfcPauseClassEnableVectorCounter + // SetStart assigns uint32 provided by user to PatternFlowGtpv2SequenceNumberCounter + SetStart(value uint32) PatternFlowGtpv2SequenceNumberCounter + // HasStart checks if Start has been set in PatternFlowGtpv2SequenceNumberCounter HasStart() bool - // Step returns uint32, set in PatternFlowPfcPauseClassEnableVectorCounter. + // Step returns uint32, set in PatternFlowGtpv2SequenceNumberCounter. Step() uint32 - // SetStep assigns uint32 provided by user to PatternFlowPfcPauseClassEnableVectorCounter - SetStep(value uint32) PatternFlowPfcPauseClassEnableVectorCounter - // HasStep checks if Step has been set in PatternFlowPfcPauseClassEnableVectorCounter + // SetStep assigns uint32 provided by user to PatternFlowGtpv2SequenceNumberCounter + SetStep(value uint32) PatternFlowGtpv2SequenceNumberCounter + // HasStep checks if Step has been set in PatternFlowGtpv2SequenceNumberCounter HasStep() bool - // Count returns uint32, set in PatternFlowPfcPauseClassEnableVectorCounter. + // Count returns uint32, set in PatternFlowGtpv2SequenceNumberCounter. Count() uint32 - // SetCount assigns uint32 provided by user to PatternFlowPfcPauseClassEnableVectorCounter - SetCount(value uint32) PatternFlowPfcPauseClassEnableVectorCounter - // HasCount checks if Count has been set in PatternFlowPfcPauseClassEnableVectorCounter + // SetCount assigns uint32 provided by user to PatternFlowGtpv2SequenceNumberCounter + SetCount(value uint32) PatternFlowGtpv2SequenceNumberCounter + // HasCount checks if Count has been set in PatternFlowGtpv2SequenceNumberCounter HasCount() bool } // description is TBD // Start returns a uint32 -func (obj *patternFlowPfcPauseClassEnableVectorCounter) Start() uint32 { +func (obj *patternFlowGtpv2SequenceNumberCounter) Start() uint32 { return *obj.obj.Start @@ -211147,13 +254658,13 @@ func (obj *patternFlowPfcPauseClassEnableVectorCounter) Start() uint32 { // description is TBD // Start returns a uint32 -func (obj *patternFlowPfcPauseClassEnableVectorCounter) HasStart() bool { +func (obj *patternFlowGtpv2SequenceNumberCounter) HasStart() bool { return obj.obj.Start != nil } // description is TBD -// SetStart sets the uint32 value in the PatternFlowPfcPauseClassEnableVectorCounter object -func (obj *patternFlowPfcPauseClassEnableVectorCounter) SetStart(value uint32) PatternFlowPfcPauseClassEnableVectorCounter { +// SetStart sets the uint32 value in the PatternFlowGtpv2SequenceNumberCounter object +func (obj *patternFlowGtpv2SequenceNumberCounter) SetStart(value uint32) PatternFlowGtpv2SequenceNumberCounter { obj.obj.Start = &value return obj @@ -211161,7 +254672,7 @@ func (obj *patternFlowPfcPauseClassEnableVectorCounter) SetStart(value uint32) P // description is TBD // Step returns a uint32 -func (obj *patternFlowPfcPauseClassEnableVectorCounter) Step() uint32 { +func (obj *patternFlowGtpv2SequenceNumberCounter) Step() uint32 { return *obj.obj.Step @@ -211169,13 +254680,13 @@ func (obj *patternFlowPfcPauseClassEnableVectorCounter) Step() uint32 { // description is TBD // Step returns a uint32 -func (obj *patternFlowPfcPauseClassEnableVectorCounter) HasStep() bool { +func (obj *patternFlowGtpv2SequenceNumberCounter) HasStep() bool { return obj.obj.Step != nil } // description is TBD -// SetStep sets the uint32 value in the PatternFlowPfcPauseClassEnableVectorCounter object -func (obj *patternFlowPfcPauseClassEnableVectorCounter) SetStep(value uint32) PatternFlowPfcPauseClassEnableVectorCounter { +// SetStep sets the uint32 value in the PatternFlowGtpv2SequenceNumberCounter object +func (obj *patternFlowGtpv2SequenceNumberCounter) SetStep(value uint32) PatternFlowGtpv2SequenceNumberCounter { obj.obj.Step = &value return obj @@ -211183,7 +254694,7 @@ func (obj *patternFlowPfcPauseClassEnableVectorCounter) SetStep(value uint32) Pa // description is TBD // Count returns a uint32 -func (obj *patternFlowPfcPauseClassEnableVectorCounter) Count() uint32 { +func (obj *patternFlowGtpv2SequenceNumberCounter) Count() uint32 { return *obj.obj.Count @@ -211191,56 +254702,56 @@ func (obj *patternFlowPfcPauseClassEnableVectorCounter) Count() uint32 { // description is TBD // Count returns a uint32 -func (obj *patternFlowPfcPauseClassEnableVectorCounter) HasCount() bool { +func (obj *patternFlowGtpv2SequenceNumberCounter) HasCount() bool { return obj.obj.Count != nil } // description is TBD -// SetCount sets the uint32 value in the PatternFlowPfcPauseClassEnableVectorCounter object -func (obj *patternFlowPfcPauseClassEnableVectorCounter) SetCount(value uint32) PatternFlowPfcPauseClassEnableVectorCounter { +// SetCount sets the uint32 value in the PatternFlowGtpv2SequenceNumberCounter object +func (obj *patternFlowGtpv2SequenceNumberCounter) SetCount(value uint32) PatternFlowGtpv2SequenceNumberCounter { obj.obj.Count = &value return obj } -func (obj *patternFlowPfcPauseClassEnableVectorCounter) validateObj(vObj *validation, set_default bool) { +func (obj *patternFlowGtpv2SequenceNumberCounter) validateObj(vObj *validation, set_default bool) { if set_default { obj.setDefault() } if obj.obj.Start != nil { - if *obj.obj.Start > 65535 { + if *obj.obj.Start > 16777215 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowPfcPauseClassEnableVectorCounter.Start <= 65535 but Got %d", *obj.obj.Start)) + fmt.Sprintf("0 <= PatternFlowGtpv2SequenceNumberCounter.Start <= 16777215 but Got %d", *obj.obj.Start)) } } if obj.obj.Step != nil { - if *obj.obj.Step > 65535 { + if *obj.obj.Step > 16777215 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowPfcPauseClassEnableVectorCounter.Step <= 65535 but Got %d", *obj.obj.Step)) + fmt.Sprintf("0 <= PatternFlowGtpv2SequenceNumberCounter.Step <= 16777215 but Got %d", *obj.obj.Step)) } } if obj.obj.Count != nil { - if *obj.obj.Count > 65535 { + if *obj.obj.Count > 16777215 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowPfcPauseClassEnableVectorCounter.Count <= 65535 but Got %d", *obj.obj.Count)) + fmt.Sprintf("0 <= PatternFlowGtpv2SequenceNumberCounter.Count <= 16777215 but Got %d", *obj.obj.Count)) } } } -func (obj *patternFlowPfcPauseClassEnableVectorCounter) setDefault() { +func (obj *patternFlowGtpv2SequenceNumberCounter) setDefault() { if obj.obj.Start == nil { obj.SetStart(0) } @@ -211253,29 +254764,29 @@ func (obj *patternFlowPfcPauseClassEnableVectorCounter) setDefault() { } -// ***** PatternFlowPfcPauseClassEnableVectorMetricTag ***** -type patternFlowPfcPauseClassEnableVectorMetricTag struct { +// ***** PatternFlowGtpv2SequenceNumberMetricTag ***** +type patternFlowGtpv2SequenceNumberMetricTag struct { validation - obj *otg.PatternFlowPfcPauseClassEnableVectorMetricTag + obj *otg.PatternFlowGtpv2SequenceNumberMetricTag } -func NewPatternFlowPfcPauseClassEnableVectorMetricTag() PatternFlowPfcPauseClassEnableVectorMetricTag { - obj := patternFlowPfcPauseClassEnableVectorMetricTag{obj: &otg.PatternFlowPfcPauseClassEnableVectorMetricTag{}} +func NewPatternFlowGtpv2SequenceNumberMetricTag() PatternFlowGtpv2SequenceNumberMetricTag { + obj := patternFlowGtpv2SequenceNumberMetricTag{obj: &otg.PatternFlowGtpv2SequenceNumberMetricTag{}} obj.setDefault() return &obj } -func (obj *patternFlowPfcPauseClassEnableVectorMetricTag) Msg() *otg.PatternFlowPfcPauseClassEnableVectorMetricTag { +func (obj *patternFlowGtpv2SequenceNumberMetricTag) Msg() *otg.PatternFlowGtpv2SequenceNumberMetricTag { return obj.obj } -func (obj *patternFlowPfcPauseClassEnableVectorMetricTag) SetMsg(msg *otg.PatternFlowPfcPauseClassEnableVectorMetricTag) PatternFlowPfcPauseClassEnableVectorMetricTag { +func (obj *patternFlowGtpv2SequenceNumberMetricTag) SetMsg(msg *otg.PatternFlowGtpv2SequenceNumberMetricTag) PatternFlowGtpv2SequenceNumberMetricTag { proto.Merge(obj.obj, msg) return obj } -func (obj *patternFlowPfcPauseClassEnableVectorMetricTag) ToProto() (*otg.PatternFlowPfcPauseClassEnableVectorMetricTag, error) { +func (obj *patternFlowGtpv2SequenceNumberMetricTag) ToProto() (*otg.PatternFlowGtpv2SequenceNumberMetricTag, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -211283,7 +254794,7 @@ func (obj *patternFlowPfcPauseClassEnableVectorMetricTag) ToProto() (*otg.Patter return obj.Msg(), nil } -func (obj *patternFlowPfcPauseClassEnableVectorMetricTag) FromProto(msg *otg.PatternFlowPfcPauseClassEnableVectorMetricTag) (PatternFlowPfcPauseClassEnableVectorMetricTag, error) { +func (obj *patternFlowGtpv2SequenceNumberMetricTag) FromProto(msg *otg.PatternFlowGtpv2SequenceNumberMetricTag) (PatternFlowGtpv2SequenceNumberMetricTag, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -211292,7 +254803,7 @@ func (obj *patternFlowPfcPauseClassEnableVectorMetricTag) FromProto(msg *otg.Pat return newObj, nil } -func (obj *patternFlowPfcPauseClassEnableVectorMetricTag) ToPbText() (string, error) { +func (obj *patternFlowGtpv2SequenceNumberMetricTag) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -211304,7 +254815,7 @@ func (obj *patternFlowPfcPauseClassEnableVectorMetricTag) ToPbText() (string, er return string(protoMarshal), nil } -func (obj *patternFlowPfcPauseClassEnableVectorMetricTag) FromPbText(value string) error { +func (obj *patternFlowGtpv2SequenceNumberMetricTag) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj @@ -211317,7 +254828,7 @@ func (obj *patternFlowPfcPauseClassEnableVectorMetricTag) FromPbText(value strin return retObj } -func (obj *patternFlowPfcPauseClassEnableVectorMetricTag) ToYaml() (string, error) { +func (obj *patternFlowGtpv2SequenceNumberMetricTag) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -211338,7 +254849,7 @@ func (obj *patternFlowPfcPauseClassEnableVectorMetricTag) ToYaml() (string, erro return string(data), nil } -func (obj *patternFlowPfcPauseClassEnableVectorMetricTag) FromYaml(value string) error { +func (obj *patternFlowGtpv2SequenceNumberMetricTag) FromYaml(value string) error { if value == "" { value = "{}" } @@ -211363,7 +254874,7 @@ func (obj *patternFlowPfcPauseClassEnableVectorMetricTag) FromYaml(value string) return nil } -func (obj *patternFlowPfcPauseClassEnableVectorMetricTag) ToJson() (string, error) { +func (obj *patternFlowGtpv2SequenceNumberMetricTag) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -211381,7 +254892,7 @@ func (obj *patternFlowPfcPauseClassEnableVectorMetricTag) ToJson() (string, erro return string(data), nil } -func (obj *patternFlowPfcPauseClassEnableVectorMetricTag) FromJson(value string) error { +func (obj *patternFlowGtpv2SequenceNumberMetricTag) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -211402,19 +254913,19 @@ func (obj *patternFlowPfcPauseClassEnableVectorMetricTag) FromJson(value string) return nil } -func (obj *patternFlowPfcPauseClassEnableVectorMetricTag) validateToAndFrom() error { +func (obj *patternFlowGtpv2SequenceNumberMetricTag) validateToAndFrom() error { // emptyVars() obj.validateObj(&obj.validation, true) return obj.validationResult() } -func (obj *patternFlowPfcPauseClassEnableVectorMetricTag) Validate() error { +func (obj *patternFlowGtpv2SequenceNumberMetricTag) Validate() error { // emptyVars() obj.validateObj(&obj.validation, false) return obj.validationResult() } -func (obj *patternFlowPfcPauseClassEnableVectorMetricTag) String() string { +func (obj *patternFlowGtpv2SequenceNumberMetricTag) String() string { str, err := obj.ToYaml() if err != nil { return err.Error() @@ -211422,12 +254933,12 @@ func (obj *patternFlowPfcPauseClassEnableVectorMetricTag) String() string { return str } -func (obj *patternFlowPfcPauseClassEnableVectorMetricTag) Clone() (PatternFlowPfcPauseClassEnableVectorMetricTag, error) { +func (obj *patternFlowGtpv2SequenceNumberMetricTag) Clone() (PatternFlowGtpv2SequenceNumberMetricTag, error) { vErr := obj.Validate() if vErr != nil { return nil, vErr } - newObj := NewPatternFlowPfcPauseClassEnableVectorMetricTag() + newObj := NewPatternFlowGtpv2SequenceNumberMetricTag() data, err := proto.Marshal(obj.Msg()) if err != nil { return nil, err @@ -211439,69 +254950,69 @@ func (obj *patternFlowPfcPauseClassEnableVectorMetricTag) Clone() (PatternFlowPf return newObj, nil } -// PatternFlowPfcPauseClassEnableVectorMetricTag is metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. -type PatternFlowPfcPauseClassEnableVectorMetricTag interface { +// PatternFlowGtpv2SequenceNumberMetricTag is metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. +type PatternFlowGtpv2SequenceNumberMetricTag interface { Validation - // Msg marshals PatternFlowPfcPauseClassEnableVectorMetricTag to protobuf object *otg.PatternFlowPfcPauseClassEnableVectorMetricTag + // Msg marshals PatternFlowGtpv2SequenceNumberMetricTag to protobuf object *otg.PatternFlowGtpv2SequenceNumberMetricTag // and doesn't set defaults - Msg() *otg.PatternFlowPfcPauseClassEnableVectorMetricTag - // SetMsg unmarshals PatternFlowPfcPauseClassEnableVectorMetricTag from protobuf object *otg.PatternFlowPfcPauseClassEnableVectorMetricTag + Msg() *otg.PatternFlowGtpv2SequenceNumberMetricTag + // SetMsg unmarshals PatternFlowGtpv2SequenceNumberMetricTag from protobuf object *otg.PatternFlowGtpv2SequenceNumberMetricTag // and doesn't set defaults - SetMsg(*otg.PatternFlowPfcPauseClassEnableVectorMetricTag) PatternFlowPfcPauseClassEnableVectorMetricTag - // ToProto marshals PatternFlowPfcPauseClassEnableVectorMetricTag to protobuf object *otg.PatternFlowPfcPauseClassEnableVectorMetricTag - ToProto() (*otg.PatternFlowPfcPauseClassEnableVectorMetricTag, error) - // ToPbText marshals PatternFlowPfcPauseClassEnableVectorMetricTag to protobuf text + SetMsg(*otg.PatternFlowGtpv2SequenceNumberMetricTag) PatternFlowGtpv2SequenceNumberMetricTag + // ToProto marshals PatternFlowGtpv2SequenceNumberMetricTag to protobuf object *otg.PatternFlowGtpv2SequenceNumberMetricTag + ToProto() (*otg.PatternFlowGtpv2SequenceNumberMetricTag, error) + // ToPbText marshals PatternFlowGtpv2SequenceNumberMetricTag to protobuf text ToPbText() (string, error) - // ToYaml marshals PatternFlowPfcPauseClassEnableVectorMetricTag to YAML text + // ToYaml marshals PatternFlowGtpv2SequenceNumberMetricTag to YAML text ToYaml() (string, error) - // ToJson marshals PatternFlowPfcPauseClassEnableVectorMetricTag to JSON text + // ToJson marshals PatternFlowGtpv2SequenceNumberMetricTag to JSON text ToJson() (string, error) - // FromProto unmarshals PatternFlowPfcPauseClassEnableVectorMetricTag from protobuf object *otg.PatternFlowPfcPauseClassEnableVectorMetricTag - FromProto(msg *otg.PatternFlowPfcPauseClassEnableVectorMetricTag) (PatternFlowPfcPauseClassEnableVectorMetricTag, error) - // FromPbText unmarshals PatternFlowPfcPauseClassEnableVectorMetricTag from protobuf text + // FromProto unmarshals PatternFlowGtpv2SequenceNumberMetricTag from protobuf object *otg.PatternFlowGtpv2SequenceNumberMetricTag + FromProto(msg *otg.PatternFlowGtpv2SequenceNumberMetricTag) (PatternFlowGtpv2SequenceNumberMetricTag, error) + // FromPbText unmarshals PatternFlowGtpv2SequenceNumberMetricTag from protobuf text FromPbText(value string) error - // FromYaml unmarshals PatternFlowPfcPauseClassEnableVectorMetricTag from YAML text + // FromYaml unmarshals PatternFlowGtpv2SequenceNumberMetricTag from YAML text FromYaml(value string) error - // FromJson unmarshals PatternFlowPfcPauseClassEnableVectorMetricTag from JSON text + // FromJson unmarshals PatternFlowGtpv2SequenceNumberMetricTag from JSON text FromJson(value string) error - // Validate validates PatternFlowPfcPauseClassEnableVectorMetricTag + // Validate validates PatternFlowGtpv2SequenceNumberMetricTag Validate() error // A stringer function String() string // Clones the object - Clone() (PatternFlowPfcPauseClassEnableVectorMetricTag, error) + Clone() (PatternFlowGtpv2SequenceNumberMetricTag, error) validateToAndFrom() error validateObj(vObj *validation, set_default bool) setDefault() - // Name returns string, set in PatternFlowPfcPauseClassEnableVectorMetricTag. + // Name returns string, set in PatternFlowGtpv2SequenceNumberMetricTag. Name() string - // SetName assigns string provided by user to PatternFlowPfcPauseClassEnableVectorMetricTag - SetName(value string) PatternFlowPfcPauseClassEnableVectorMetricTag - // Offset returns uint32, set in PatternFlowPfcPauseClassEnableVectorMetricTag. + // SetName assigns string provided by user to PatternFlowGtpv2SequenceNumberMetricTag + SetName(value string) PatternFlowGtpv2SequenceNumberMetricTag + // Offset returns uint32, set in PatternFlowGtpv2SequenceNumberMetricTag. Offset() uint32 - // SetOffset assigns uint32 provided by user to PatternFlowPfcPauseClassEnableVectorMetricTag - SetOffset(value uint32) PatternFlowPfcPauseClassEnableVectorMetricTag - // HasOffset checks if Offset has been set in PatternFlowPfcPauseClassEnableVectorMetricTag + // SetOffset assigns uint32 provided by user to PatternFlowGtpv2SequenceNumberMetricTag + SetOffset(value uint32) PatternFlowGtpv2SequenceNumberMetricTag + // HasOffset checks if Offset has been set in PatternFlowGtpv2SequenceNumberMetricTag HasOffset() bool - // Length returns uint32, set in PatternFlowPfcPauseClassEnableVectorMetricTag. + // Length returns uint32, set in PatternFlowGtpv2SequenceNumberMetricTag. Length() uint32 - // SetLength assigns uint32 provided by user to PatternFlowPfcPauseClassEnableVectorMetricTag - SetLength(value uint32) PatternFlowPfcPauseClassEnableVectorMetricTag - // HasLength checks if Length has been set in PatternFlowPfcPauseClassEnableVectorMetricTag + // SetLength assigns uint32 provided by user to PatternFlowGtpv2SequenceNumberMetricTag + SetLength(value uint32) PatternFlowGtpv2SequenceNumberMetricTag + // HasLength checks if Length has been set in PatternFlowGtpv2SequenceNumberMetricTag HasLength() bool } // Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field // Name returns a string -func (obj *patternFlowPfcPauseClassEnableVectorMetricTag) Name() string { +func (obj *patternFlowGtpv2SequenceNumberMetricTag) Name() string { return *obj.obj.Name } // Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field -// SetName sets the string value in the PatternFlowPfcPauseClassEnableVectorMetricTag object -func (obj *patternFlowPfcPauseClassEnableVectorMetricTag) SetName(value string) PatternFlowPfcPauseClassEnableVectorMetricTag { +// SetName sets the string value in the PatternFlowGtpv2SequenceNumberMetricTag object +func (obj *patternFlowGtpv2SequenceNumberMetricTag) SetName(value string) PatternFlowGtpv2SequenceNumberMetricTag { obj.obj.Name = &value return obj @@ -211509,7 +255020,7 @@ func (obj *patternFlowPfcPauseClassEnableVectorMetricTag) SetName(value string) // Offset in bits relative to start of corresponding header field // Offset returns a uint32 -func (obj *patternFlowPfcPauseClassEnableVectorMetricTag) Offset() uint32 { +func (obj *patternFlowGtpv2SequenceNumberMetricTag) Offset() uint32 { return *obj.obj.Offset @@ -211517,13 +255028,13 @@ func (obj *patternFlowPfcPauseClassEnableVectorMetricTag) Offset() uint32 { // Offset in bits relative to start of corresponding header field // Offset returns a uint32 -func (obj *patternFlowPfcPauseClassEnableVectorMetricTag) HasOffset() bool { +func (obj *patternFlowGtpv2SequenceNumberMetricTag) HasOffset() bool { return obj.obj.Offset != nil } // Offset in bits relative to start of corresponding header field -// SetOffset sets the uint32 value in the PatternFlowPfcPauseClassEnableVectorMetricTag object -func (obj *patternFlowPfcPauseClassEnableVectorMetricTag) SetOffset(value uint32) PatternFlowPfcPauseClassEnableVectorMetricTag { +// SetOffset sets the uint32 value in the PatternFlowGtpv2SequenceNumberMetricTag object +func (obj *patternFlowGtpv2SequenceNumberMetricTag) SetOffset(value uint32) PatternFlowGtpv2SequenceNumberMetricTag { obj.obj.Offset = &value return obj @@ -211531,7 +255042,7 @@ func (obj *patternFlowPfcPauseClassEnableVectorMetricTag) SetOffset(value uint32 // Number of bits to track for metrics starting from configured offset of corresponding header field // Length returns a uint32 -func (obj *patternFlowPfcPauseClassEnableVectorMetricTag) Length() uint32 { +func (obj *patternFlowGtpv2SequenceNumberMetricTag) Length() uint32 { return *obj.obj.Length @@ -211539,83 +255050,83 @@ func (obj *patternFlowPfcPauseClassEnableVectorMetricTag) Length() uint32 { // Number of bits to track for metrics starting from configured offset of corresponding header field // Length returns a uint32 -func (obj *patternFlowPfcPauseClassEnableVectorMetricTag) HasLength() bool { +func (obj *patternFlowGtpv2SequenceNumberMetricTag) HasLength() bool { return obj.obj.Length != nil } // Number of bits to track for metrics starting from configured offset of corresponding header field -// SetLength sets the uint32 value in the PatternFlowPfcPauseClassEnableVectorMetricTag object -func (obj *patternFlowPfcPauseClassEnableVectorMetricTag) SetLength(value uint32) PatternFlowPfcPauseClassEnableVectorMetricTag { +// SetLength sets the uint32 value in the PatternFlowGtpv2SequenceNumberMetricTag object +func (obj *patternFlowGtpv2SequenceNumberMetricTag) SetLength(value uint32) PatternFlowGtpv2SequenceNumberMetricTag { obj.obj.Length = &value return obj } -func (obj *patternFlowPfcPauseClassEnableVectorMetricTag) validateObj(vObj *validation, set_default bool) { +func (obj *patternFlowGtpv2SequenceNumberMetricTag) validateObj(vObj *validation, set_default bool) { if set_default { obj.setDefault() } // Name is required if obj.obj.Name == nil { - vObj.validationErrors = append(vObj.validationErrors, "Name is required field on interface PatternFlowPfcPauseClassEnableVectorMetricTag") + vObj.validationErrors = append(vObj.validationErrors, "Name is required field on interface PatternFlowGtpv2SequenceNumberMetricTag") } if obj.obj.Offset != nil { - if *obj.obj.Offset > 15 { + if *obj.obj.Offset > 23 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowPfcPauseClassEnableVectorMetricTag.Offset <= 15 but Got %d", *obj.obj.Offset)) + fmt.Sprintf("0 <= PatternFlowGtpv2SequenceNumberMetricTag.Offset <= 23 but Got %d", *obj.obj.Offset)) } } if obj.obj.Length != nil { - if *obj.obj.Length < 1 || *obj.obj.Length > 16 { + if *obj.obj.Length < 1 || *obj.obj.Length > 24 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("1 <= PatternFlowPfcPauseClassEnableVectorMetricTag.Length <= 16 but Got %d", *obj.obj.Length)) + fmt.Sprintf("1 <= PatternFlowGtpv2SequenceNumberMetricTag.Length <= 24 but Got %d", *obj.obj.Length)) } } } -func (obj *patternFlowPfcPauseClassEnableVectorMetricTag) setDefault() { +func (obj *patternFlowGtpv2SequenceNumberMetricTag) setDefault() { if obj.obj.Offset == nil { obj.SetOffset(0) } if obj.obj.Length == nil { - obj.SetLength(16) + obj.SetLength(24) } } -// ***** PatternFlowPfcPausePauseClass0Counter ***** -type patternFlowPfcPausePauseClass0Counter struct { +// ***** PatternFlowGtpv2Spare2Counter ***** +type patternFlowGtpv2Spare2Counter struct { validation - obj *otg.PatternFlowPfcPausePauseClass0Counter + obj *otg.PatternFlowGtpv2Spare2Counter } -func NewPatternFlowPfcPausePauseClass0Counter() PatternFlowPfcPausePauseClass0Counter { - obj := patternFlowPfcPausePauseClass0Counter{obj: &otg.PatternFlowPfcPausePauseClass0Counter{}} +func NewPatternFlowGtpv2Spare2Counter() PatternFlowGtpv2Spare2Counter { + obj := patternFlowGtpv2Spare2Counter{obj: &otg.PatternFlowGtpv2Spare2Counter{}} obj.setDefault() return &obj } -func (obj *patternFlowPfcPausePauseClass0Counter) Msg() *otg.PatternFlowPfcPausePauseClass0Counter { +func (obj *patternFlowGtpv2Spare2Counter) Msg() *otg.PatternFlowGtpv2Spare2Counter { return obj.obj } -func (obj *patternFlowPfcPausePauseClass0Counter) SetMsg(msg *otg.PatternFlowPfcPausePauseClass0Counter) PatternFlowPfcPausePauseClass0Counter { +func (obj *patternFlowGtpv2Spare2Counter) SetMsg(msg *otg.PatternFlowGtpv2Spare2Counter) PatternFlowGtpv2Spare2Counter { proto.Merge(obj.obj, msg) return obj } -func (obj *patternFlowPfcPausePauseClass0Counter) ToProto() (*otg.PatternFlowPfcPausePauseClass0Counter, error) { +func (obj *patternFlowGtpv2Spare2Counter) ToProto() (*otg.PatternFlowGtpv2Spare2Counter, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -211623,7 +255134,7 @@ func (obj *patternFlowPfcPausePauseClass0Counter) ToProto() (*otg.PatternFlowPfc return obj.Msg(), nil } -func (obj *patternFlowPfcPausePauseClass0Counter) FromProto(msg *otg.PatternFlowPfcPausePauseClass0Counter) (PatternFlowPfcPausePauseClass0Counter, error) { +func (obj *patternFlowGtpv2Spare2Counter) FromProto(msg *otg.PatternFlowGtpv2Spare2Counter) (PatternFlowGtpv2Spare2Counter, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -211632,7 +255143,7 @@ func (obj *patternFlowPfcPausePauseClass0Counter) FromProto(msg *otg.PatternFlow return newObj, nil } -func (obj *patternFlowPfcPausePauseClass0Counter) ToPbText() (string, error) { +func (obj *patternFlowGtpv2Spare2Counter) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -211644,7 +255155,7 @@ func (obj *patternFlowPfcPausePauseClass0Counter) ToPbText() (string, error) { return string(protoMarshal), nil } -func (obj *patternFlowPfcPausePauseClass0Counter) FromPbText(value string) error { +func (obj *patternFlowGtpv2Spare2Counter) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj @@ -211657,7 +255168,7 @@ func (obj *patternFlowPfcPausePauseClass0Counter) FromPbText(value string) error return retObj } -func (obj *patternFlowPfcPausePauseClass0Counter) ToYaml() (string, error) { +func (obj *patternFlowGtpv2Spare2Counter) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -211678,7 +255189,7 @@ func (obj *patternFlowPfcPausePauseClass0Counter) ToYaml() (string, error) { return string(data), nil } -func (obj *patternFlowPfcPausePauseClass0Counter) FromYaml(value string) error { +func (obj *patternFlowGtpv2Spare2Counter) FromYaml(value string) error { if value == "" { value = "{}" } @@ -211703,7 +255214,7 @@ func (obj *patternFlowPfcPausePauseClass0Counter) FromYaml(value string) error { return nil } -func (obj *patternFlowPfcPausePauseClass0Counter) ToJson() (string, error) { +func (obj *patternFlowGtpv2Spare2Counter) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -211721,7 +255232,7 @@ func (obj *patternFlowPfcPausePauseClass0Counter) ToJson() (string, error) { return string(data), nil } -func (obj *patternFlowPfcPausePauseClass0Counter) FromJson(value string) error { +func (obj *patternFlowGtpv2Spare2Counter) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -211742,19 +255253,19 @@ func (obj *patternFlowPfcPausePauseClass0Counter) FromJson(value string) error { return nil } -func (obj *patternFlowPfcPausePauseClass0Counter) validateToAndFrom() error { +func (obj *patternFlowGtpv2Spare2Counter) validateToAndFrom() error { // emptyVars() obj.validateObj(&obj.validation, true) return obj.validationResult() } -func (obj *patternFlowPfcPausePauseClass0Counter) Validate() error { +func (obj *patternFlowGtpv2Spare2Counter) Validate() error { // emptyVars() obj.validateObj(&obj.validation, false) return obj.validationResult() } -func (obj *patternFlowPfcPausePauseClass0Counter) String() string { +func (obj *patternFlowGtpv2Spare2Counter) String() string { str, err := obj.ToYaml() if err != nil { return err.Error() @@ -211762,12 +255273,12 @@ func (obj *patternFlowPfcPausePauseClass0Counter) String() string { return str } -func (obj *patternFlowPfcPausePauseClass0Counter) Clone() (PatternFlowPfcPausePauseClass0Counter, error) { +func (obj *patternFlowGtpv2Spare2Counter) Clone() (PatternFlowGtpv2Spare2Counter, error) { vErr := obj.Validate() if vErr != nil { return nil, vErr } - newObj := NewPatternFlowPfcPausePauseClass0Counter() + newObj := NewPatternFlowGtpv2Spare2Counter() data, err := proto.Marshal(obj.Msg()) if err != nil { return nil, err @@ -211779,63 +255290,63 @@ func (obj *patternFlowPfcPausePauseClass0Counter) Clone() (PatternFlowPfcPausePa return newObj, nil } -// PatternFlowPfcPausePauseClass0Counter is integer counter pattern -type PatternFlowPfcPausePauseClass0Counter interface { +// PatternFlowGtpv2Spare2Counter is integer counter pattern +type PatternFlowGtpv2Spare2Counter interface { Validation - // Msg marshals PatternFlowPfcPausePauseClass0Counter to protobuf object *otg.PatternFlowPfcPausePauseClass0Counter + // Msg marshals PatternFlowGtpv2Spare2Counter to protobuf object *otg.PatternFlowGtpv2Spare2Counter // and doesn't set defaults - Msg() *otg.PatternFlowPfcPausePauseClass0Counter - // SetMsg unmarshals PatternFlowPfcPausePauseClass0Counter from protobuf object *otg.PatternFlowPfcPausePauseClass0Counter + Msg() *otg.PatternFlowGtpv2Spare2Counter + // SetMsg unmarshals PatternFlowGtpv2Spare2Counter from protobuf object *otg.PatternFlowGtpv2Spare2Counter // and doesn't set defaults - SetMsg(*otg.PatternFlowPfcPausePauseClass0Counter) PatternFlowPfcPausePauseClass0Counter - // ToProto marshals PatternFlowPfcPausePauseClass0Counter to protobuf object *otg.PatternFlowPfcPausePauseClass0Counter - ToProto() (*otg.PatternFlowPfcPausePauseClass0Counter, error) - // ToPbText marshals PatternFlowPfcPausePauseClass0Counter to protobuf text + SetMsg(*otg.PatternFlowGtpv2Spare2Counter) PatternFlowGtpv2Spare2Counter + // ToProto marshals PatternFlowGtpv2Spare2Counter to protobuf object *otg.PatternFlowGtpv2Spare2Counter + ToProto() (*otg.PatternFlowGtpv2Spare2Counter, error) + // ToPbText marshals PatternFlowGtpv2Spare2Counter to protobuf text ToPbText() (string, error) - // ToYaml marshals PatternFlowPfcPausePauseClass0Counter to YAML text + // ToYaml marshals PatternFlowGtpv2Spare2Counter to YAML text ToYaml() (string, error) - // ToJson marshals PatternFlowPfcPausePauseClass0Counter to JSON text + // ToJson marshals PatternFlowGtpv2Spare2Counter to JSON text ToJson() (string, error) - // FromProto unmarshals PatternFlowPfcPausePauseClass0Counter from protobuf object *otg.PatternFlowPfcPausePauseClass0Counter - FromProto(msg *otg.PatternFlowPfcPausePauseClass0Counter) (PatternFlowPfcPausePauseClass0Counter, error) - // FromPbText unmarshals PatternFlowPfcPausePauseClass0Counter from protobuf text + // FromProto unmarshals PatternFlowGtpv2Spare2Counter from protobuf object *otg.PatternFlowGtpv2Spare2Counter + FromProto(msg *otg.PatternFlowGtpv2Spare2Counter) (PatternFlowGtpv2Spare2Counter, error) + // FromPbText unmarshals PatternFlowGtpv2Spare2Counter from protobuf text FromPbText(value string) error - // FromYaml unmarshals PatternFlowPfcPausePauseClass0Counter from YAML text + // FromYaml unmarshals PatternFlowGtpv2Spare2Counter from YAML text FromYaml(value string) error - // FromJson unmarshals PatternFlowPfcPausePauseClass0Counter from JSON text + // FromJson unmarshals PatternFlowGtpv2Spare2Counter from JSON text FromJson(value string) error - // Validate validates PatternFlowPfcPausePauseClass0Counter + // Validate validates PatternFlowGtpv2Spare2Counter Validate() error // A stringer function String() string // Clones the object - Clone() (PatternFlowPfcPausePauseClass0Counter, error) + Clone() (PatternFlowGtpv2Spare2Counter, error) validateToAndFrom() error validateObj(vObj *validation, set_default bool) setDefault() - // Start returns uint32, set in PatternFlowPfcPausePauseClass0Counter. + // Start returns uint32, set in PatternFlowGtpv2Spare2Counter. Start() uint32 - // SetStart assigns uint32 provided by user to PatternFlowPfcPausePauseClass0Counter - SetStart(value uint32) PatternFlowPfcPausePauseClass0Counter - // HasStart checks if Start has been set in PatternFlowPfcPausePauseClass0Counter + // SetStart assigns uint32 provided by user to PatternFlowGtpv2Spare2Counter + SetStart(value uint32) PatternFlowGtpv2Spare2Counter + // HasStart checks if Start has been set in PatternFlowGtpv2Spare2Counter HasStart() bool - // Step returns uint32, set in PatternFlowPfcPausePauseClass0Counter. + // Step returns uint32, set in PatternFlowGtpv2Spare2Counter. Step() uint32 - // SetStep assigns uint32 provided by user to PatternFlowPfcPausePauseClass0Counter - SetStep(value uint32) PatternFlowPfcPausePauseClass0Counter - // HasStep checks if Step has been set in PatternFlowPfcPausePauseClass0Counter + // SetStep assigns uint32 provided by user to PatternFlowGtpv2Spare2Counter + SetStep(value uint32) PatternFlowGtpv2Spare2Counter + // HasStep checks if Step has been set in PatternFlowGtpv2Spare2Counter HasStep() bool - // Count returns uint32, set in PatternFlowPfcPausePauseClass0Counter. + // Count returns uint32, set in PatternFlowGtpv2Spare2Counter. Count() uint32 - // SetCount assigns uint32 provided by user to PatternFlowPfcPausePauseClass0Counter - SetCount(value uint32) PatternFlowPfcPausePauseClass0Counter - // HasCount checks if Count has been set in PatternFlowPfcPausePauseClass0Counter + // SetCount assigns uint32 provided by user to PatternFlowGtpv2Spare2Counter + SetCount(value uint32) PatternFlowGtpv2Spare2Counter + // HasCount checks if Count has been set in PatternFlowGtpv2Spare2Counter HasCount() bool } // description is TBD // Start returns a uint32 -func (obj *patternFlowPfcPausePauseClass0Counter) Start() uint32 { +func (obj *patternFlowGtpv2Spare2Counter) Start() uint32 { return *obj.obj.Start @@ -211843,13 +255354,13 @@ func (obj *patternFlowPfcPausePauseClass0Counter) Start() uint32 { // description is TBD // Start returns a uint32 -func (obj *patternFlowPfcPausePauseClass0Counter) HasStart() bool { +func (obj *patternFlowGtpv2Spare2Counter) HasStart() bool { return obj.obj.Start != nil } // description is TBD -// SetStart sets the uint32 value in the PatternFlowPfcPausePauseClass0Counter object -func (obj *patternFlowPfcPausePauseClass0Counter) SetStart(value uint32) PatternFlowPfcPausePauseClass0Counter { +// SetStart sets the uint32 value in the PatternFlowGtpv2Spare2Counter object +func (obj *patternFlowGtpv2Spare2Counter) SetStart(value uint32) PatternFlowGtpv2Spare2Counter { obj.obj.Start = &value return obj @@ -211857,7 +255368,7 @@ func (obj *patternFlowPfcPausePauseClass0Counter) SetStart(value uint32) Pattern // description is TBD // Step returns a uint32 -func (obj *patternFlowPfcPausePauseClass0Counter) Step() uint32 { +func (obj *patternFlowGtpv2Spare2Counter) Step() uint32 { return *obj.obj.Step @@ -211865,13 +255376,13 @@ func (obj *patternFlowPfcPausePauseClass0Counter) Step() uint32 { // description is TBD // Step returns a uint32 -func (obj *patternFlowPfcPausePauseClass0Counter) HasStep() bool { +func (obj *patternFlowGtpv2Spare2Counter) HasStep() bool { return obj.obj.Step != nil } // description is TBD -// SetStep sets the uint32 value in the PatternFlowPfcPausePauseClass0Counter object -func (obj *patternFlowPfcPausePauseClass0Counter) SetStep(value uint32) PatternFlowPfcPausePauseClass0Counter { +// SetStep sets the uint32 value in the PatternFlowGtpv2Spare2Counter object +func (obj *patternFlowGtpv2Spare2Counter) SetStep(value uint32) PatternFlowGtpv2Spare2Counter { obj.obj.Step = &value return obj @@ -211879,7 +255390,7 @@ func (obj *patternFlowPfcPausePauseClass0Counter) SetStep(value uint32) PatternF // description is TBD // Count returns a uint32 -func (obj *patternFlowPfcPausePauseClass0Counter) Count() uint32 { +func (obj *patternFlowGtpv2Spare2Counter) Count() uint32 { return *obj.obj.Count @@ -211887,56 +255398,56 @@ func (obj *patternFlowPfcPausePauseClass0Counter) Count() uint32 { // description is TBD // Count returns a uint32 -func (obj *patternFlowPfcPausePauseClass0Counter) HasCount() bool { +func (obj *patternFlowGtpv2Spare2Counter) HasCount() bool { return obj.obj.Count != nil } // description is TBD -// SetCount sets the uint32 value in the PatternFlowPfcPausePauseClass0Counter object -func (obj *patternFlowPfcPausePauseClass0Counter) SetCount(value uint32) PatternFlowPfcPausePauseClass0Counter { +// SetCount sets the uint32 value in the PatternFlowGtpv2Spare2Counter object +func (obj *patternFlowGtpv2Spare2Counter) SetCount(value uint32) PatternFlowGtpv2Spare2Counter { obj.obj.Count = &value return obj } -func (obj *patternFlowPfcPausePauseClass0Counter) validateObj(vObj *validation, set_default bool) { +func (obj *patternFlowGtpv2Spare2Counter) validateObj(vObj *validation, set_default bool) { if set_default { obj.setDefault() } if obj.obj.Start != nil { - if *obj.obj.Start > 65535 { + if *obj.obj.Start > 255 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowPfcPausePauseClass0Counter.Start <= 65535 but Got %d", *obj.obj.Start)) + fmt.Sprintf("0 <= PatternFlowGtpv2Spare2Counter.Start <= 255 but Got %d", *obj.obj.Start)) } } if obj.obj.Step != nil { - if *obj.obj.Step > 65535 { + if *obj.obj.Step > 255 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowPfcPausePauseClass0Counter.Step <= 65535 but Got %d", *obj.obj.Step)) + fmt.Sprintf("0 <= PatternFlowGtpv2Spare2Counter.Step <= 255 but Got %d", *obj.obj.Step)) } } if obj.obj.Count != nil { - if *obj.obj.Count > 65535 { + if *obj.obj.Count > 255 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowPfcPausePauseClass0Counter.Count <= 65535 but Got %d", *obj.obj.Count)) + fmt.Sprintf("0 <= PatternFlowGtpv2Spare2Counter.Count <= 255 but Got %d", *obj.obj.Count)) } } } -func (obj *patternFlowPfcPausePauseClass0Counter) setDefault() { +func (obj *patternFlowGtpv2Spare2Counter) setDefault() { if obj.obj.Start == nil { obj.SetStart(0) } @@ -211949,29 +255460,29 @@ func (obj *patternFlowPfcPausePauseClass0Counter) setDefault() { } -// ***** PatternFlowPfcPausePauseClass0MetricTag ***** -type patternFlowPfcPausePauseClass0MetricTag struct { +// ***** PatternFlowGtpv2Spare2MetricTag ***** +type patternFlowGtpv2Spare2MetricTag struct { validation - obj *otg.PatternFlowPfcPausePauseClass0MetricTag + obj *otg.PatternFlowGtpv2Spare2MetricTag } -func NewPatternFlowPfcPausePauseClass0MetricTag() PatternFlowPfcPausePauseClass0MetricTag { - obj := patternFlowPfcPausePauseClass0MetricTag{obj: &otg.PatternFlowPfcPausePauseClass0MetricTag{}} +func NewPatternFlowGtpv2Spare2MetricTag() PatternFlowGtpv2Spare2MetricTag { + obj := patternFlowGtpv2Spare2MetricTag{obj: &otg.PatternFlowGtpv2Spare2MetricTag{}} obj.setDefault() return &obj } -func (obj *patternFlowPfcPausePauseClass0MetricTag) Msg() *otg.PatternFlowPfcPausePauseClass0MetricTag { +func (obj *patternFlowGtpv2Spare2MetricTag) Msg() *otg.PatternFlowGtpv2Spare2MetricTag { return obj.obj } -func (obj *patternFlowPfcPausePauseClass0MetricTag) SetMsg(msg *otg.PatternFlowPfcPausePauseClass0MetricTag) PatternFlowPfcPausePauseClass0MetricTag { +func (obj *patternFlowGtpv2Spare2MetricTag) SetMsg(msg *otg.PatternFlowGtpv2Spare2MetricTag) PatternFlowGtpv2Spare2MetricTag { proto.Merge(obj.obj, msg) return obj } -func (obj *patternFlowPfcPausePauseClass0MetricTag) ToProto() (*otg.PatternFlowPfcPausePauseClass0MetricTag, error) { +func (obj *patternFlowGtpv2Spare2MetricTag) ToProto() (*otg.PatternFlowGtpv2Spare2MetricTag, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -211979,7 +255490,7 @@ func (obj *patternFlowPfcPausePauseClass0MetricTag) ToProto() (*otg.PatternFlowP return obj.Msg(), nil } -func (obj *patternFlowPfcPausePauseClass0MetricTag) FromProto(msg *otg.PatternFlowPfcPausePauseClass0MetricTag) (PatternFlowPfcPausePauseClass0MetricTag, error) { +func (obj *patternFlowGtpv2Spare2MetricTag) FromProto(msg *otg.PatternFlowGtpv2Spare2MetricTag) (PatternFlowGtpv2Spare2MetricTag, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -211988,7 +255499,7 @@ func (obj *patternFlowPfcPausePauseClass0MetricTag) FromProto(msg *otg.PatternFl return newObj, nil } -func (obj *patternFlowPfcPausePauseClass0MetricTag) ToPbText() (string, error) { +func (obj *patternFlowGtpv2Spare2MetricTag) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -212000,7 +255511,7 @@ func (obj *patternFlowPfcPausePauseClass0MetricTag) ToPbText() (string, error) { return string(protoMarshal), nil } -func (obj *patternFlowPfcPausePauseClass0MetricTag) FromPbText(value string) error { +func (obj *patternFlowGtpv2Spare2MetricTag) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj @@ -212013,7 +255524,7 @@ func (obj *patternFlowPfcPausePauseClass0MetricTag) FromPbText(value string) err return retObj } -func (obj *patternFlowPfcPausePauseClass0MetricTag) ToYaml() (string, error) { +func (obj *patternFlowGtpv2Spare2MetricTag) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -212034,7 +255545,7 @@ func (obj *patternFlowPfcPausePauseClass0MetricTag) ToYaml() (string, error) { return string(data), nil } -func (obj *patternFlowPfcPausePauseClass0MetricTag) FromYaml(value string) error { +func (obj *patternFlowGtpv2Spare2MetricTag) FromYaml(value string) error { if value == "" { value = "{}" } @@ -212059,7 +255570,7 @@ func (obj *patternFlowPfcPausePauseClass0MetricTag) FromYaml(value string) error return nil } -func (obj *patternFlowPfcPausePauseClass0MetricTag) ToJson() (string, error) { +func (obj *patternFlowGtpv2Spare2MetricTag) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -212077,7 +255588,7 @@ func (obj *patternFlowPfcPausePauseClass0MetricTag) ToJson() (string, error) { return string(data), nil } -func (obj *patternFlowPfcPausePauseClass0MetricTag) FromJson(value string) error { +func (obj *patternFlowGtpv2Spare2MetricTag) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -212098,19 +255609,19 @@ func (obj *patternFlowPfcPausePauseClass0MetricTag) FromJson(value string) error return nil } -func (obj *patternFlowPfcPausePauseClass0MetricTag) validateToAndFrom() error { +func (obj *patternFlowGtpv2Spare2MetricTag) validateToAndFrom() error { // emptyVars() obj.validateObj(&obj.validation, true) return obj.validationResult() } -func (obj *patternFlowPfcPausePauseClass0MetricTag) Validate() error { +func (obj *patternFlowGtpv2Spare2MetricTag) Validate() error { // emptyVars() obj.validateObj(&obj.validation, false) return obj.validationResult() } -func (obj *patternFlowPfcPausePauseClass0MetricTag) String() string { +func (obj *patternFlowGtpv2Spare2MetricTag) String() string { str, err := obj.ToYaml() if err != nil { return err.Error() @@ -212118,12 +255629,12 @@ func (obj *patternFlowPfcPausePauseClass0MetricTag) String() string { return str } -func (obj *patternFlowPfcPausePauseClass0MetricTag) Clone() (PatternFlowPfcPausePauseClass0MetricTag, error) { +func (obj *patternFlowGtpv2Spare2MetricTag) Clone() (PatternFlowGtpv2Spare2MetricTag, error) { vErr := obj.Validate() if vErr != nil { return nil, vErr } - newObj := NewPatternFlowPfcPausePauseClass0MetricTag() + newObj := NewPatternFlowGtpv2Spare2MetricTag() data, err := proto.Marshal(obj.Msg()) if err != nil { return nil, err @@ -212135,69 +255646,69 @@ func (obj *patternFlowPfcPausePauseClass0MetricTag) Clone() (PatternFlowPfcPause return newObj, nil } -// PatternFlowPfcPausePauseClass0MetricTag is metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. -type PatternFlowPfcPausePauseClass0MetricTag interface { +// PatternFlowGtpv2Spare2MetricTag is metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. +type PatternFlowGtpv2Spare2MetricTag interface { Validation - // Msg marshals PatternFlowPfcPausePauseClass0MetricTag to protobuf object *otg.PatternFlowPfcPausePauseClass0MetricTag + // Msg marshals PatternFlowGtpv2Spare2MetricTag to protobuf object *otg.PatternFlowGtpv2Spare2MetricTag // and doesn't set defaults - Msg() *otg.PatternFlowPfcPausePauseClass0MetricTag - // SetMsg unmarshals PatternFlowPfcPausePauseClass0MetricTag from protobuf object *otg.PatternFlowPfcPausePauseClass0MetricTag + Msg() *otg.PatternFlowGtpv2Spare2MetricTag + // SetMsg unmarshals PatternFlowGtpv2Spare2MetricTag from protobuf object *otg.PatternFlowGtpv2Spare2MetricTag // and doesn't set defaults - SetMsg(*otg.PatternFlowPfcPausePauseClass0MetricTag) PatternFlowPfcPausePauseClass0MetricTag - // ToProto marshals PatternFlowPfcPausePauseClass0MetricTag to protobuf object *otg.PatternFlowPfcPausePauseClass0MetricTag - ToProto() (*otg.PatternFlowPfcPausePauseClass0MetricTag, error) - // ToPbText marshals PatternFlowPfcPausePauseClass0MetricTag to protobuf text + SetMsg(*otg.PatternFlowGtpv2Spare2MetricTag) PatternFlowGtpv2Spare2MetricTag + // ToProto marshals PatternFlowGtpv2Spare2MetricTag to protobuf object *otg.PatternFlowGtpv2Spare2MetricTag + ToProto() (*otg.PatternFlowGtpv2Spare2MetricTag, error) + // ToPbText marshals PatternFlowGtpv2Spare2MetricTag to protobuf text ToPbText() (string, error) - // ToYaml marshals PatternFlowPfcPausePauseClass0MetricTag to YAML text + // ToYaml marshals PatternFlowGtpv2Spare2MetricTag to YAML text ToYaml() (string, error) - // ToJson marshals PatternFlowPfcPausePauseClass0MetricTag to JSON text + // ToJson marshals PatternFlowGtpv2Spare2MetricTag to JSON text ToJson() (string, error) - // FromProto unmarshals PatternFlowPfcPausePauseClass0MetricTag from protobuf object *otg.PatternFlowPfcPausePauseClass0MetricTag - FromProto(msg *otg.PatternFlowPfcPausePauseClass0MetricTag) (PatternFlowPfcPausePauseClass0MetricTag, error) - // FromPbText unmarshals PatternFlowPfcPausePauseClass0MetricTag from protobuf text + // FromProto unmarshals PatternFlowGtpv2Spare2MetricTag from protobuf object *otg.PatternFlowGtpv2Spare2MetricTag + FromProto(msg *otg.PatternFlowGtpv2Spare2MetricTag) (PatternFlowGtpv2Spare2MetricTag, error) + // FromPbText unmarshals PatternFlowGtpv2Spare2MetricTag from protobuf text FromPbText(value string) error - // FromYaml unmarshals PatternFlowPfcPausePauseClass0MetricTag from YAML text + // FromYaml unmarshals PatternFlowGtpv2Spare2MetricTag from YAML text FromYaml(value string) error - // FromJson unmarshals PatternFlowPfcPausePauseClass0MetricTag from JSON text + // FromJson unmarshals PatternFlowGtpv2Spare2MetricTag from JSON text FromJson(value string) error - // Validate validates PatternFlowPfcPausePauseClass0MetricTag + // Validate validates PatternFlowGtpv2Spare2MetricTag Validate() error // A stringer function String() string // Clones the object - Clone() (PatternFlowPfcPausePauseClass0MetricTag, error) + Clone() (PatternFlowGtpv2Spare2MetricTag, error) validateToAndFrom() error validateObj(vObj *validation, set_default bool) setDefault() - // Name returns string, set in PatternFlowPfcPausePauseClass0MetricTag. + // Name returns string, set in PatternFlowGtpv2Spare2MetricTag. Name() string - // SetName assigns string provided by user to PatternFlowPfcPausePauseClass0MetricTag - SetName(value string) PatternFlowPfcPausePauseClass0MetricTag - // Offset returns uint32, set in PatternFlowPfcPausePauseClass0MetricTag. + // SetName assigns string provided by user to PatternFlowGtpv2Spare2MetricTag + SetName(value string) PatternFlowGtpv2Spare2MetricTag + // Offset returns uint32, set in PatternFlowGtpv2Spare2MetricTag. Offset() uint32 - // SetOffset assigns uint32 provided by user to PatternFlowPfcPausePauseClass0MetricTag - SetOffset(value uint32) PatternFlowPfcPausePauseClass0MetricTag - // HasOffset checks if Offset has been set in PatternFlowPfcPausePauseClass0MetricTag + // SetOffset assigns uint32 provided by user to PatternFlowGtpv2Spare2MetricTag + SetOffset(value uint32) PatternFlowGtpv2Spare2MetricTag + // HasOffset checks if Offset has been set in PatternFlowGtpv2Spare2MetricTag HasOffset() bool - // Length returns uint32, set in PatternFlowPfcPausePauseClass0MetricTag. + // Length returns uint32, set in PatternFlowGtpv2Spare2MetricTag. Length() uint32 - // SetLength assigns uint32 provided by user to PatternFlowPfcPausePauseClass0MetricTag - SetLength(value uint32) PatternFlowPfcPausePauseClass0MetricTag - // HasLength checks if Length has been set in PatternFlowPfcPausePauseClass0MetricTag + // SetLength assigns uint32 provided by user to PatternFlowGtpv2Spare2MetricTag + SetLength(value uint32) PatternFlowGtpv2Spare2MetricTag + // HasLength checks if Length has been set in PatternFlowGtpv2Spare2MetricTag HasLength() bool } // Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field // Name returns a string -func (obj *patternFlowPfcPausePauseClass0MetricTag) Name() string { +func (obj *patternFlowGtpv2Spare2MetricTag) Name() string { return *obj.obj.Name } // Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field -// SetName sets the string value in the PatternFlowPfcPausePauseClass0MetricTag object -func (obj *patternFlowPfcPausePauseClass0MetricTag) SetName(value string) PatternFlowPfcPausePauseClass0MetricTag { +// SetName sets the string value in the PatternFlowGtpv2Spare2MetricTag object +func (obj *patternFlowGtpv2Spare2MetricTag) SetName(value string) PatternFlowGtpv2Spare2MetricTag { obj.obj.Name = &value return obj @@ -212205,7 +255716,7 @@ func (obj *patternFlowPfcPausePauseClass0MetricTag) SetName(value string) Patter // Offset in bits relative to start of corresponding header field // Offset returns a uint32 -func (obj *patternFlowPfcPausePauseClass0MetricTag) Offset() uint32 { +func (obj *patternFlowGtpv2Spare2MetricTag) Offset() uint32 { return *obj.obj.Offset @@ -212213,13 +255724,13 @@ func (obj *patternFlowPfcPausePauseClass0MetricTag) Offset() uint32 { // Offset in bits relative to start of corresponding header field // Offset returns a uint32 -func (obj *patternFlowPfcPausePauseClass0MetricTag) HasOffset() bool { +func (obj *patternFlowGtpv2Spare2MetricTag) HasOffset() bool { return obj.obj.Offset != nil } // Offset in bits relative to start of corresponding header field -// SetOffset sets the uint32 value in the PatternFlowPfcPausePauseClass0MetricTag object -func (obj *patternFlowPfcPausePauseClass0MetricTag) SetOffset(value uint32) PatternFlowPfcPausePauseClass0MetricTag { +// SetOffset sets the uint32 value in the PatternFlowGtpv2Spare2MetricTag object +func (obj *patternFlowGtpv2Spare2MetricTag) SetOffset(value uint32) PatternFlowGtpv2Spare2MetricTag { obj.obj.Offset = &value return obj @@ -212227,7 +255738,7 @@ func (obj *patternFlowPfcPausePauseClass0MetricTag) SetOffset(value uint32) Patt // Number of bits to track for metrics starting from configured offset of corresponding header field // Length returns a uint32 -func (obj *patternFlowPfcPausePauseClass0MetricTag) Length() uint32 { +func (obj *patternFlowGtpv2Spare2MetricTag) Length() uint32 { return *obj.obj.Length @@ -212235,83 +255746,83 @@ func (obj *patternFlowPfcPausePauseClass0MetricTag) Length() uint32 { // Number of bits to track for metrics starting from configured offset of corresponding header field // Length returns a uint32 -func (obj *patternFlowPfcPausePauseClass0MetricTag) HasLength() bool { +func (obj *patternFlowGtpv2Spare2MetricTag) HasLength() bool { return obj.obj.Length != nil } // Number of bits to track for metrics starting from configured offset of corresponding header field -// SetLength sets the uint32 value in the PatternFlowPfcPausePauseClass0MetricTag object -func (obj *patternFlowPfcPausePauseClass0MetricTag) SetLength(value uint32) PatternFlowPfcPausePauseClass0MetricTag { +// SetLength sets the uint32 value in the PatternFlowGtpv2Spare2MetricTag object +func (obj *patternFlowGtpv2Spare2MetricTag) SetLength(value uint32) PatternFlowGtpv2Spare2MetricTag { obj.obj.Length = &value return obj } -func (obj *patternFlowPfcPausePauseClass0MetricTag) validateObj(vObj *validation, set_default bool) { +func (obj *patternFlowGtpv2Spare2MetricTag) validateObj(vObj *validation, set_default bool) { if set_default { obj.setDefault() } // Name is required if obj.obj.Name == nil { - vObj.validationErrors = append(vObj.validationErrors, "Name is required field on interface PatternFlowPfcPausePauseClass0MetricTag") + vObj.validationErrors = append(vObj.validationErrors, "Name is required field on interface PatternFlowGtpv2Spare2MetricTag") } if obj.obj.Offset != nil { - if *obj.obj.Offset > 15 { + if *obj.obj.Offset > 7 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowPfcPausePauseClass0MetricTag.Offset <= 15 but Got %d", *obj.obj.Offset)) + fmt.Sprintf("0 <= PatternFlowGtpv2Spare2MetricTag.Offset <= 7 but Got %d", *obj.obj.Offset)) } } if obj.obj.Length != nil { - if *obj.obj.Length < 1 || *obj.obj.Length > 16 { + if *obj.obj.Length < 1 || *obj.obj.Length > 8 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("1 <= PatternFlowPfcPausePauseClass0MetricTag.Length <= 16 but Got %d", *obj.obj.Length)) + fmt.Sprintf("1 <= PatternFlowGtpv2Spare2MetricTag.Length <= 8 but Got %d", *obj.obj.Length)) } } } -func (obj *patternFlowPfcPausePauseClass0MetricTag) setDefault() { +func (obj *patternFlowGtpv2Spare2MetricTag) setDefault() { if obj.obj.Offset == nil { obj.SetOffset(0) } if obj.obj.Length == nil { - obj.SetLength(16) + obj.SetLength(8) } } -// ***** PatternFlowPfcPausePauseClass1Counter ***** -type patternFlowPfcPausePauseClass1Counter struct { +// ***** PatternFlowArpHardwareTypeCounter ***** +type patternFlowArpHardwareTypeCounter struct { validation - obj *otg.PatternFlowPfcPausePauseClass1Counter + obj *otg.PatternFlowArpHardwareTypeCounter } -func NewPatternFlowPfcPausePauseClass1Counter() PatternFlowPfcPausePauseClass1Counter { - obj := patternFlowPfcPausePauseClass1Counter{obj: &otg.PatternFlowPfcPausePauseClass1Counter{}} +func NewPatternFlowArpHardwareTypeCounter() PatternFlowArpHardwareTypeCounter { + obj := patternFlowArpHardwareTypeCounter{obj: &otg.PatternFlowArpHardwareTypeCounter{}} obj.setDefault() return &obj } -func (obj *patternFlowPfcPausePauseClass1Counter) Msg() *otg.PatternFlowPfcPausePauseClass1Counter { +func (obj *patternFlowArpHardwareTypeCounter) Msg() *otg.PatternFlowArpHardwareTypeCounter { return obj.obj } -func (obj *patternFlowPfcPausePauseClass1Counter) SetMsg(msg *otg.PatternFlowPfcPausePauseClass1Counter) PatternFlowPfcPausePauseClass1Counter { +func (obj *patternFlowArpHardwareTypeCounter) SetMsg(msg *otg.PatternFlowArpHardwareTypeCounter) PatternFlowArpHardwareTypeCounter { proto.Merge(obj.obj, msg) return obj } -func (obj *patternFlowPfcPausePauseClass1Counter) ToProto() (*otg.PatternFlowPfcPausePauseClass1Counter, error) { +func (obj *patternFlowArpHardwareTypeCounter) ToProto() (*otg.PatternFlowArpHardwareTypeCounter, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -212319,7 +255830,7 @@ func (obj *patternFlowPfcPausePauseClass1Counter) ToProto() (*otg.PatternFlowPfc return obj.Msg(), nil } -func (obj *patternFlowPfcPausePauseClass1Counter) FromProto(msg *otg.PatternFlowPfcPausePauseClass1Counter) (PatternFlowPfcPausePauseClass1Counter, error) { +func (obj *patternFlowArpHardwareTypeCounter) FromProto(msg *otg.PatternFlowArpHardwareTypeCounter) (PatternFlowArpHardwareTypeCounter, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -212328,7 +255839,7 @@ func (obj *patternFlowPfcPausePauseClass1Counter) FromProto(msg *otg.PatternFlow return newObj, nil } -func (obj *patternFlowPfcPausePauseClass1Counter) ToPbText() (string, error) { +func (obj *patternFlowArpHardwareTypeCounter) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -212340,7 +255851,7 @@ func (obj *patternFlowPfcPausePauseClass1Counter) ToPbText() (string, error) { return string(protoMarshal), nil } -func (obj *patternFlowPfcPausePauseClass1Counter) FromPbText(value string) error { +func (obj *patternFlowArpHardwareTypeCounter) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj @@ -212353,7 +255864,7 @@ func (obj *patternFlowPfcPausePauseClass1Counter) FromPbText(value string) error return retObj } -func (obj *patternFlowPfcPausePauseClass1Counter) ToYaml() (string, error) { +func (obj *patternFlowArpHardwareTypeCounter) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -212374,7 +255885,7 @@ func (obj *patternFlowPfcPausePauseClass1Counter) ToYaml() (string, error) { return string(data), nil } -func (obj *patternFlowPfcPausePauseClass1Counter) FromYaml(value string) error { +func (obj *patternFlowArpHardwareTypeCounter) FromYaml(value string) error { if value == "" { value = "{}" } @@ -212399,7 +255910,7 @@ func (obj *patternFlowPfcPausePauseClass1Counter) FromYaml(value string) error { return nil } -func (obj *patternFlowPfcPausePauseClass1Counter) ToJson() (string, error) { +func (obj *patternFlowArpHardwareTypeCounter) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -212417,7 +255928,7 @@ func (obj *patternFlowPfcPausePauseClass1Counter) ToJson() (string, error) { return string(data), nil } -func (obj *patternFlowPfcPausePauseClass1Counter) FromJson(value string) error { +func (obj *patternFlowArpHardwareTypeCounter) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -212438,19 +255949,19 @@ func (obj *patternFlowPfcPausePauseClass1Counter) FromJson(value string) error { return nil } -func (obj *patternFlowPfcPausePauseClass1Counter) validateToAndFrom() error { +func (obj *patternFlowArpHardwareTypeCounter) validateToAndFrom() error { // emptyVars() obj.validateObj(&obj.validation, true) return obj.validationResult() } -func (obj *patternFlowPfcPausePauseClass1Counter) Validate() error { +func (obj *patternFlowArpHardwareTypeCounter) Validate() error { // emptyVars() obj.validateObj(&obj.validation, false) return obj.validationResult() } -func (obj *patternFlowPfcPausePauseClass1Counter) String() string { +func (obj *patternFlowArpHardwareTypeCounter) String() string { str, err := obj.ToYaml() if err != nil { return err.Error() @@ -212458,12 +255969,12 @@ func (obj *patternFlowPfcPausePauseClass1Counter) String() string { return str } -func (obj *patternFlowPfcPausePauseClass1Counter) Clone() (PatternFlowPfcPausePauseClass1Counter, error) { +func (obj *patternFlowArpHardwareTypeCounter) Clone() (PatternFlowArpHardwareTypeCounter, error) { vErr := obj.Validate() if vErr != nil { return nil, vErr } - newObj := NewPatternFlowPfcPausePauseClass1Counter() + newObj := NewPatternFlowArpHardwareTypeCounter() data, err := proto.Marshal(obj.Msg()) if err != nil { return nil, err @@ -212475,63 +255986,63 @@ func (obj *patternFlowPfcPausePauseClass1Counter) Clone() (PatternFlowPfcPausePa return newObj, nil } -// PatternFlowPfcPausePauseClass1Counter is integer counter pattern -type PatternFlowPfcPausePauseClass1Counter interface { +// PatternFlowArpHardwareTypeCounter is integer counter pattern +type PatternFlowArpHardwareTypeCounter interface { Validation - // Msg marshals PatternFlowPfcPausePauseClass1Counter to protobuf object *otg.PatternFlowPfcPausePauseClass1Counter + // Msg marshals PatternFlowArpHardwareTypeCounter to protobuf object *otg.PatternFlowArpHardwareTypeCounter // and doesn't set defaults - Msg() *otg.PatternFlowPfcPausePauseClass1Counter - // SetMsg unmarshals PatternFlowPfcPausePauseClass1Counter from protobuf object *otg.PatternFlowPfcPausePauseClass1Counter + Msg() *otg.PatternFlowArpHardwareTypeCounter + // SetMsg unmarshals PatternFlowArpHardwareTypeCounter from protobuf object *otg.PatternFlowArpHardwareTypeCounter // and doesn't set defaults - SetMsg(*otg.PatternFlowPfcPausePauseClass1Counter) PatternFlowPfcPausePauseClass1Counter - // ToProto marshals PatternFlowPfcPausePauseClass1Counter to protobuf object *otg.PatternFlowPfcPausePauseClass1Counter - ToProto() (*otg.PatternFlowPfcPausePauseClass1Counter, error) - // ToPbText marshals PatternFlowPfcPausePauseClass1Counter to protobuf text + SetMsg(*otg.PatternFlowArpHardwareTypeCounter) PatternFlowArpHardwareTypeCounter + // ToProto marshals PatternFlowArpHardwareTypeCounter to protobuf object *otg.PatternFlowArpHardwareTypeCounter + ToProto() (*otg.PatternFlowArpHardwareTypeCounter, error) + // ToPbText marshals PatternFlowArpHardwareTypeCounter to protobuf text ToPbText() (string, error) - // ToYaml marshals PatternFlowPfcPausePauseClass1Counter to YAML text + // ToYaml marshals PatternFlowArpHardwareTypeCounter to YAML text ToYaml() (string, error) - // ToJson marshals PatternFlowPfcPausePauseClass1Counter to JSON text + // ToJson marshals PatternFlowArpHardwareTypeCounter to JSON text ToJson() (string, error) - // FromProto unmarshals PatternFlowPfcPausePauseClass1Counter from protobuf object *otg.PatternFlowPfcPausePauseClass1Counter - FromProto(msg *otg.PatternFlowPfcPausePauseClass1Counter) (PatternFlowPfcPausePauseClass1Counter, error) - // FromPbText unmarshals PatternFlowPfcPausePauseClass1Counter from protobuf text + // FromProto unmarshals PatternFlowArpHardwareTypeCounter from protobuf object *otg.PatternFlowArpHardwareTypeCounter + FromProto(msg *otg.PatternFlowArpHardwareTypeCounter) (PatternFlowArpHardwareTypeCounter, error) + // FromPbText unmarshals PatternFlowArpHardwareTypeCounter from protobuf text FromPbText(value string) error - // FromYaml unmarshals PatternFlowPfcPausePauseClass1Counter from YAML text + // FromYaml unmarshals PatternFlowArpHardwareTypeCounter from YAML text FromYaml(value string) error - // FromJson unmarshals PatternFlowPfcPausePauseClass1Counter from JSON text + // FromJson unmarshals PatternFlowArpHardwareTypeCounter from JSON text FromJson(value string) error - // Validate validates PatternFlowPfcPausePauseClass1Counter + // Validate validates PatternFlowArpHardwareTypeCounter Validate() error // A stringer function String() string // Clones the object - Clone() (PatternFlowPfcPausePauseClass1Counter, error) + Clone() (PatternFlowArpHardwareTypeCounter, error) validateToAndFrom() error validateObj(vObj *validation, set_default bool) setDefault() - // Start returns uint32, set in PatternFlowPfcPausePauseClass1Counter. + // Start returns uint32, set in PatternFlowArpHardwareTypeCounter. Start() uint32 - // SetStart assigns uint32 provided by user to PatternFlowPfcPausePauseClass1Counter - SetStart(value uint32) PatternFlowPfcPausePauseClass1Counter - // HasStart checks if Start has been set in PatternFlowPfcPausePauseClass1Counter + // SetStart assigns uint32 provided by user to PatternFlowArpHardwareTypeCounter + SetStart(value uint32) PatternFlowArpHardwareTypeCounter + // HasStart checks if Start has been set in PatternFlowArpHardwareTypeCounter HasStart() bool - // Step returns uint32, set in PatternFlowPfcPausePauseClass1Counter. + // Step returns uint32, set in PatternFlowArpHardwareTypeCounter. Step() uint32 - // SetStep assigns uint32 provided by user to PatternFlowPfcPausePauseClass1Counter - SetStep(value uint32) PatternFlowPfcPausePauseClass1Counter - // HasStep checks if Step has been set in PatternFlowPfcPausePauseClass1Counter + // SetStep assigns uint32 provided by user to PatternFlowArpHardwareTypeCounter + SetStep(value uint32) PatternFlowArpHardwareTypeCounter + // HasStep checks if Step has been set in PatternFlowArpHardwareTypeCounter HasStep() bool - // Count returns uint32, set in PatternFlowPfcPausePauseClass1Counter. + // Count returns uint32, set in PatternFlowArpHardwareTypeCounter. Count() uint32 - // SetCount assigns uint32 provided by user to PatternFlowPfcPausePauseClass1Counter - SetCount(value uint32) PatternFlowPfcPausePauseClass1Counter - // HasCount checks if Count has been set in PatternFlowPfcPausePauseClass1Counter + // SetCount assigns uint32 provided by user to PatternFlowArpHardwareTypeCounter + SetCount(value uint32) PatternFlowArpHardwareTypeCounter + // HasCount checks if Count has been set in PatternFlowArpHardwareTypeCounter HasCount() bool } // description is TBD // Start returns a uint32 -func (obj *patternFlowPfcPausePauseClass1Counter) Start() uint32 { +func (obj *patternFlowArpHardwareTypeCounter) Start() uint32 { return *obj.obj.Start @@ -212539,13 +256050,13 @@ func (obj *patternFlowPfcPausePauseClass1Counter) Start() uint32 { // description is TBD // Start returns a uint32 -func (obj *patternFlowPfcPausePauseClass1Counter) HasStart() bool { +func (obj *patternFlowArpHardwareTypeCounter) HasStart() bool { return obj.obj.Start != nil } // description is TBD -// SetStart sets the uint32 value in the PatternFlowPfcPausePauseClass1Counter object -func (obj *patternFlowPfcPausePauseClass1Counter) SetStart(value uint32) PatternFlowPfcPausePauseClass1Counter { +// SetStart sets the uint32 value in the PatternFlowArpHardwareTypeCounter object +func (obj *patternFlowArpHardwareTypeCounter) SetStart(value uint32) PatternFlowArpHardwareTypeCounter { obj.obj.Start = &value return obj @@ -212553,7 +256064,7 @@ func (obj *patternFlowPfcPausePauseClass1Counter) SetStart(value uint32) Pattern // description is TBD // Step returns a uint32 -func (obj *patternFlowPfcPausePauseClass1Counter) Step() uint32 { +func (obj *patternFlowArpHardwareTypeCounter) Step() uint32 { return *obj.obj.Step @@ -212561,13 +256072,13 @@ func (obj *patternFlowPfcPausePauseClass1Counter) Step() uint32 { // description is TBD // Step returns a uint32 -func (obj *patternFlowPfcPausePauseClass1Counter) HasStep() bool { +func (obj *patternFlowArpHardwareTypeCounter) HasStep() bool { return obj.obj.Step != nil } // description is TBD -// SetStep sets the uint32 value in the PatternFlowPfcPausePauseClass1Counter object -func (obj *patternFlowPfcPausePauseClass1Counter) SetStep(value uint32) PatternFlowPfcPausePauseClass1Counter { +// SetStep sets the uint32 value in the PatternFlowArpHardwareTypeCounter object +func (obj *patternFlowArpHardwareTypeCounter) SetStep(value uint32) PatternFlowArpHardwareTypeCounter { obj.obj.Step = &value return obj @@ -212575,7 +256086,7 @@ func (obj *patternFlowPfcPausePauseClass1Counter) SetStep(value uint32) PatternF // description is TBD // Count returns a uint32 -func (obj *patternFlowPfcPausePauseClass1Counter) Count() uint32 { +func (obj *patternFlowArpHardwareTypeCounter) Count() uint32 { return *obj.obj.Count @@ -212583,19 +256094,19 @@ func (obj *patternFlowPfcPausePauseClass1Counter) Count() uint32 { // description is TBD // Count returns a uint32 -func (obj *patternFlowPfcPausePauseClass1Counter) HasCount() bool { +func (obj *patternFlowArpHardwareTypeCounter) HasCount() bool { return obj.obj.Count != nil } // description is TBD -// SetCount sets the uint32 value in the PatternFlowPfcPausePauseClass1Counter object -func (obj *patternFlowPfcPausePauseClass1Counter) SetCount(value uint32) PatternFlowPfcPausePauseClass1Counter { +// SetCount sets the uint32 value in the PatternFlowArpHardwareTypeCounter object +func (obj *patternFlowArpHardwareTypeCounter) SetCount(value uint32) PatternFlowArpHardwareTypeCounter { obj.obj.Count = &value return obj } -func (obj *patternFlowPfcPausePauseClass1Counter) validateObj(vObj *validation, set_default bool) { +func (obj *patternFlowArpHardwareTypeCounter) validateObj(vObj *validation, set_default bool) { if set_default { obj.setDefault() } @@ -212605,7 +256116,7 @@ func (obj *patternFlowPfcPausePauseClass1Counter) validateObj(vObj *validation, if *obj.obj.Start > 65535 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowPfcPausePauseClass1Counter.Start <= 65535 but Got %d", *obj.obj.Start)) + fmt.Sprintf("0 <= PatternFlowArpHardwareTypeCounter.Start <= 65535 but Got %d", *obj.obj.Start)) } } @@ -212615,7 +256126,7 @@ func (obj *patternFlowPfcPausePauseClass1Counter) validateObj(vObj *validation, if *obj.obj.Step > 65535 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowPfcPausePauseClass1Counter.Step <= 65535 but Got %d", *obj.obj.Step)) + fmt.Sprintf("0 <= PatternFlowArpHardwareTypeCounter.Step <= 65535 but Got %d", *obj.obj.Step)) } } @@ -212625,16 +256136,16 @@ func (obj *patternFlowPfcPausePauseClass1Counter) validateObj(vObj *validation, if *obj.obj.Count > 65535 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowPfcPausePauseClass1Counter.Count <= 65535 but Got %d", *obj.obj.Count)) + fmt.Sprintf("0 <= PatternFlowArpHardwareTypeCounter.Count <= 65535 but Got %d", *obj.obj.Count)) } } } -func (obj *patternFlowPfcPausePauseClass1Counter) setDefault() { +func (obj *patternFlowArpHardwareTypeCounter) setDefault() { if obj.obj.Start == nil { - obj.SetStart(0) + obj.SetStart(1) } if obj.obj.Step == nil { obj.SetStep(1) @@ -212645,29 +256156,29 @@ func (obj *patternFlowPfcPausePauseClass1Counter) setDefault() { } -// ***** PatternFlowPfcPausePauseClass1MetricTag ***** -type patternFlowPfcPausePauseClass1MetricTag struct { +// ***** PatternFlowArpHardwareTypeMetricTag ***** +type patternFlowArpHardwareTypeMetricTag struct { validation - obj *otg.PatternFlowPfcPausePauseClass1MetricTag + obj *otg.PatternFlowArpHardwareTypeMetricTag } -func NewPatternFlowPfcPausePauseClass1MetricTag() PatternFlowPfcPausePauseClass1MetricTag { - obj := patternFlowPfcPausePauseClass1MetricTag{obj: &otg.PatternFlowPfcPausePauseClass1MetricTag{}} +func NewPatternFlowArpHardwareTypeMetricTag() PatternFlowArpHardwareTypeMetricTag { + obj := patternFlowArpHardwareTypeMetricTag{obj: &otg.PatternFlowArpHardwareTypeMetricTag{}} obj.setDefault() return &obj } -func (obj *patternFlowPfcPausePauseClass1MetricTag) Msg() *otg.PatternFlowPfcPausePauseClass1MetricTag { +func (obj *patternFlowArpHardwareTypeMetricTag) Msg() *otg.PatternFlowArpHardwareTypeMetricTag { return obj.obj } -func (obj *patternFlowPfcPausePauseClass1MetricTag) SetMsg(msg *otg.PatternFlowPfcPausePauseClass1MetricTag) PatternFlowPfcPausePauseClass1MetricTag { +func (obj *patternFlowArpHardwareTypeMetricTag) SetMsg(msg *otg.PatternFlowArpHardwareTypeMetricTag) PatternFlowArpHardwareTypeMetricTag { proto.Merge(obj.obj, msg) return obj } -func (obj *patternFlowPfcPausePauseClass1MetricTag) ToProto() (*otg.PatternFlowPfcPausePauseClass1MetricTag, error) { +func (obj *patternFlowArpHardwareTypeMetricTag) ToProto() (*otg.PatternFlowArpHardwareTypeMetricTag, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -212675,7 +256186,7 @@ func (obj *patternFlowPfcPausePauseClass1MetricTag) ToProto() (*otg.PatternFlowP return obj.Msg(), nil } -func (obj *patternFlowPfcPausePauseClass1MetricTag) FromProto(msg *otg.PatternFlowPfcPausePauseClass1MetricTag) (PatternFlowPfcPausePauseClass1MetricTag, error) { +func (obj *patternFlowArpHardwareTypeMetricTag) FromProto(msg *otg.PatternFlowArpHardwareTypeMetricTag) (PatternFlowArpHardwareTypeMetricTag, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -212684,7 +256195,7 @@ func (obj *patternFlowPfcPausePauseClass1MetricTag) FromProto(msg *otg.PatternFl return newObj, nil } -func (obj *patternFlowPfcPausePauseClass1MetricTag) ToPbText() (string, error) { +func (obj *patternFlowArpHardwareTypeMetricTag) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -212696,7 +256207,7 @@ func (obj *patternFlowPfcPausePauseClass1MetricTag) ToPbText() (string, error) { return string(protoMarshal), nil } -func (obj *patternFlowPfcPausePauseClass1MetricTag) FromPbText(value string) error { +func (obj *patternFlowArpHardwareTypeMetricTag) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj @@ -212709,7 +256220,7 @@ func (obj *patternFlowPfcPausePauseClass1MetricTag) FromPbText(value string) err return retObj } -func (obj *patternFlowPfcPausePauseClass1MetricTag) ToYaml() (string, error) { +func (obj *patternFlowArpHardwareTypeMetricTag) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -212730,7 +256241,7 @@ func (obj *patternFlowPfcPausePauseClass1MetricTag) ToYaml() (string, error) { return string(data), nil } -func (obj *patternFlowPfcPausePauseClass1MetricTag) FromYaml(value string) error { +func (obj *patternFlowArpHardwareTypeMetricTag) FromYaml(value string) error { if value == "" { value = "{}" } @@ -212755,7 +256266,7 @@ func (obj *patternFlowPfcPausePauseClass1MetricTag) FromYaml(value string) error return nil } -func (obj *patternFlowPfcPausePauseClass1MetricTag) ToJson() (string, error) { +func (obj *patternFlowArpHardwareTypeMetricTag) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -212773,7 +256284,7 @@ func (obj *patternFlowPfcPausePauseClass1MetricTag) ToJson() (string, error) { return string(data), nil } -func (obj *patternFlowPfcPausePauseClass1MetricTag) FromJson(value string) error { +func (obj *patternFlowArpHardwareTypeMetricTag) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -212794,19 +256305,19 @@ func (obj *patternFlowPfcPausePauseClass1MetricTag) FromJson(value string) error return nil } -func (obj *patternFlowPfcPausePauseClass1MetricTag) validateToAndFrom() error { +func (obj *patternFlowArpHardwareTypeMetricTag) validateToAndFrom() error { // emptyVars() obj.validateObj(&obj.validation, true) return obj.validationResult() } -func (obj *patternFlowPfcPausePauseClass1MetricTag) Validate() error { +func (obj *patternFlowArpHardwareTypeMetricTag) Validate() error { // emptyVars() obj.validateObj(&obj.validation, false) return obj.validationResult() } -func (obj *patternFlowPfcPausePauseClass1MetricTag) String() string { +func (obj *patternFlowArpHardwareTypeMetricTag) String() string { str, err := obj.ToYaml() if err != nil { return err.Error() @@ -212814,12 +256325,12 @@ func (obj *patternFlowPfcPausePauseClass1MetricTag) String() string { return str } -func (obj *patternFlowPfcPausePauseClass1MetricTag) Clone() (PatternFlowPfcPausePauseClass1MetricTag, error) { +func (obj *patternFlowArpHardwareTypeMetricTag) Clone() (PatternFlowArpHardwareTypeMetricTag, error) { vErr := obj.Validate() if vErr != nil { return nil, vErr } - newObj := NewPatternFlowPfcPausePauseClass1MetricTag() + newObj := NewPatternFlowArpHardwareTypeMetricTag() data, err := proto.Marshal(obj.Msg()) if err != nil { return nil, err @@ -212831,69 +256342,69 @@ func (obj *patternFlowPfcPausePauseClass1MetricTag) Clone() (PatternFlowPfcPause return newObj, nil } -// PatternFlowPfcPausePauseClass1MetricTag is metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. -type PatternFlowPfcPausePauseClass1MetricTag interface { +// PatternFlowArpHardwareTypeMetricTag is metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. +type PatternFlowArpHardwareTypeMetricTag interface { Validation - // Msg marshals PatternFlowPfcPausePauseClass1MetricTag to protobuf object *otg.PatternFlowPfcPausePauseClass1MetricTag + // Msg marshals PatternFlowArpHardwareTypeMetricTag to protobuf object *otg.PatternFlowArpHardwareTypeMetricTag // and doesn't set defaults - Msg() *otg.PatternFlowPfcPausePauseClass1MetricTag - // SetMsg unmarshals PatternFlowPfcPausePauseClass1MetricTag from protobuf object *otg.PatternFlowPfcPausePauseClass1MetricTag + Msg() *otg.PatternFlowArpHardwareTypeMetricTag + // SetMsg unmarshals PatternFlowArpHardwareTypeMetricTag from protobuf object *otg.PatternFlowArpHardwareTypeMetricTag // and doesn't set defaults - SetMsg(*otg.PatternFlowPfcPausePauseClass1MetricTag) PatternFlowPfcPausePauseClass1MetricTag - // ToProto marshals PatternFlowPfcPausePauseClass1MetricTag to protobuf object *otg.PatternFlowPfcPausePauseClass1MetricTag - ToProto() (*otg.PatternFlowPfcPausePauseClass1MetricTag, error) - // ToPbText marshals PatternFlowPfcPausePauseClass1MetricTag to protobuf text + SetMsg(*otg.PatternFlowArpHardwareTypeMetricTag) PatternFlowArpHardwareTypeMetricTag + // ToProto marshals PatternFlowArpHardwareTypeMetricTag to protobuf object *otg.PatternFlowArpHardwareTypeMetricTag + ToProto() (*otg.PatternFlowArpHardwareTypeMetricTag, error) + // ToPbText marshals PatternFlowArpHardwareTypeMetricTag to protobuf text ToPbText() (string, error) - // ToYaml marshals PatternFlowPfcPausePauseClass1MetricTag to YAML text + // ToYaml marshals PatternFlowArpHardwareTypeMetricTag to YAML text ToYaml() (string, error) - // ToJson marshals PatternFlowPfcPausePauseClass1MetricTag to JSON text + // ToJson marshals PatternFlowArpHardwareTypeMetricTag to JSON text ToJson() (string, error) - // FromProto unmarshals PatternFlowPfcPausePauseClass1MetricTag from protobuf object *otg.PatternFlowPfcPausePauseClass1MetricTag - FromProto(msg *otg.PatternFlowPfcPausePauseClass1MetricTag) (PatternFlowPfcPausePauseClass1MetricTag, error) - // FromPbText unmarshals PatternFlowPfcPausePauseClass1MetricTag from protobuf text + // FromProto unmarshals PatternFlowArpHardwareTypeMetricTag from protobuf object *otg.PatternFlowArpHardwareTypeMetricTag + FromProto(msg *otg.PatternFlowArpHardwareTypeMetricTag) (PatternFlowArpHardwareTypeMetricTag, error) + // FromPbText unmarshals PatternFlowArpHardwareTypeMetricTag from protobuf text FromPbText(value string) error - // FromYaml unmarshals PatternFlowPfcPausePauseClass1MetricTag from YAML text + // FromYaml unmarshals PatternFlowArpHardwareTypeMetricTag from YAML text FromYaml(value string) error - // FromJson unmarshals PatternFlowPfcPausePauseClass1MetricTag from JSON text + // FromJson unmarshals PatternFlowArpHardwareTypeMetricTag from JSON text FromJson(value string) error - // Validate validates PatternFlowPfcPausePauseClass1MetricTag + // Validate validates PatternFlowArpHardwareTypeMetricTag Validate() error // A stringer function String() string // Clones the object - Clone() (PatternFlowPfcPausePauseClass1MetricTag, error) + Clone() (PatternFlowArpHardwareTypeMetricTag, error) validateToAndFrom() error validateObj(vObj *validation, set_default bool) setDefault() - // Name returns string, set in PatternFlowPfcPausePauseClass1MetricTag. + // Name returns string, set in PatternFlowArpHardwareTypeMetricTag. Name() string - // SetName assigns string provided by user to PatternFlowPfcPausePauseClass1MetricTag - SetName(value string) PatternFlowPfcPausePauseClass1MetricTag - // Offset returns uint32, set in PatternFlowPfcPausePauseClass1MetricTag. + // SetName assigns string provided by user to PatternFlowArpHardwareTypeMetricTag + SetName(value string) PatternFlowArpHardwareTypeMetricTag + // Offset returns uint32, set in PatternFlowArpHardwareTypeMetricTag. Offset() uint32 - // SetOffset assigns uint32 provided by user to PatternFlowPfcPausePauseClass1MetricTag - SetOffset(value uint32) PatternFlowPfcPausePauseClass1MetricTag - // HasOffset checks if Offset has been set in PatternFlowPfcPausePauseClass1MetricTag + // SetOffset assigns uint32 provided by user to PatternFlowArpHardwareTypeMetricTag + SetOffset(value uint32) PatternFlowArpHardwareTypeMetricTag + // HasOffset checks if Offset has been set in PatternFlowArpHardwareTypeMetricTag HasOffset() bool - // Length returns uint32, set in PatternFlowPfcPausePauseClass1MetricTag. + // Length returns uint32, set in PatternFlowArpHardwareTypeMetricTag. Length() uint32 - // SetLength assigns uint32 provided by user to PatternFlowPfcPausePauseClass1MetricTag - SetLength(value uint32) PatternFlowPfcPausePauseClass1MetricTag - // HasLength checks if Length has been set in PatternFlowPfcPausePauseClass1MetricTag + // SetLength assigns uint32 provided by user to PatternFlowArpHardwareTypeMetricTag + SetLength(value uint32) PatternFlowArpHardwareTypeMetricTag + // HasLength checks if Length has been set in PatternFlowArpHardwareTypeMetricTag HasLength() bool } // Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field // Name returns a string -func (obj *patternFlowPfcPausePauseClass1MetricTag) Name() string { +func (obj *patternFlowArpHardwareTypeMetricTag) Name() string { return *obj.obj.Name } // Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field -// SetName sets the string value in the PatternFlowPfcPausePauseClass1MetricTag object -func (obj *patternFlowPfcPausePauseClass1MetricTag) SetName(value string) PatternFlowPfcPausePauseClass1MetricTag { +// SetName sets the string value in the PatternFlowArpHardwareTypeMetricTag object +func (obj *patternFlowArpHardwareTypeMetricTag) SetName(value string) PatternFlowArpHardwareTypeMetricTag { obj.obj.Name = &value return obj @@ -212901,7 +256412,7 @@ func (obj *patternFlowPfcPausePauseClass1MetricTag) SetName(value string) Patter // Offset in bits relative to start of corresponding header field // Offset returns a uint32 -func (obj *patternFlowPfcPausePauseClass1MetricTag) Offset() uint32 { +func (obj *patternFlowArpHardwareTypeMetricTag) Offset() uint32 { return *obj.obj.Offset @@ -212909,13 +256420,13 @@ func (obj *patternFlowPfcPausePauseClass1MetricTag) Offset() uint32 { // Offset in bits relative to start of corresponding header field // Offset returns a uint32 -func (obj *patternFlowPfcPausePauseClass1MetricTag) HasOffset() bool { +func (obj *patternFlowArpHardwareTypeMetricTag) HasOffset() bool { return obj.obj.Offset != nil } // Offset in bits relative to start of corresponding header field -// SetOffset sets the uint32 value in the PatternFlowPfcPausePauseClass1MetricTag object -func (obj *patternFlowPfcPausePauseClass1MetricTag) SetOffset(value uint32) PatternFlowPfcPausePauseClass1MetricTag { +// SetOffset sets the uint32 value in the PatternFlowArpHardwareTypeMetricTag object +func (obj *patternFlowArpHardwareTypeMetricTag) SetOffset(value uint32) PatternFlowArpHardwareTypeMetricTag { obj.obj.Offset = &value return obj @@ -212923,7 +256434,7 @@ func (obj *patternFlowPfcPausePauseClass1MetricTag) SetOffset(value uint32) Patt // Number of bits to track for metrics starting from configured offset of corresponding header field // Length returns a uint32 -func (obj *patternFlowPfcPausePauseClass1MetricTag) Length() uint32 { +func (obj *patternFlowArpHardwareTypeMetricTag) Length() uint32 { return *obj.obj.Length @@ -212931,26 +256442,26 @@ func (obj *patternFlowPfcPausePauseClass1MetricTag) Length() uint32 { // Number of bits to track for metrics starting from configured offset of corresponding header field // Length returns a uint32 -func (obj *patternFlowPfcPausePauseClass1MetricTag) HasLength() bool { +func (obj *patternFlowArpHardwareTypeMetricTag) HasLength() bool { return obj.obj.Length != nil } // Number of bits to track for metrics starting from configured offset of corresponding header field -// SetLength sets the uint32 value in the PatternFlowPfcPausePauseClass1MetricTag object -func (obj *patternFlowPfcPausePauseClass1MetricTag) SetLength(value uint32) PatternFlowPfcPausePauseClass1MetricTag { +// SetLength sets the uint32 value in the PatternFlowArpHardwareTypeMetricTag object +func (obj *patternFlowArpHardwareTypeMetricTag) SetLength(value uint32) PatternFlowArpHardwareTypeMetricTag { obj.obj.Length = &value return obj } -func (obj *patternFlowPfcPausePauseClass1MetricTag) validateObj(vObj *validation, set_default bool) { +func (obj *patternFlowArpHardwareTypeMetricTag) validateObj(vObj *validation, set_default bool) { if set_default { obj.setDefault() } // Name is required if obj.obj.Name == nil { - vObj.validationErrors = append(vObj.validationErrors, "Name is required field on interface PatternFlowPfcPausePauseClass1MetricTag") + vObj.validationErrors = append(vObj.validationErrors, "Name is required field on interface PatternFlowArpHardwareTypeMetricTag") } if obj.obj.Offset != nil { @@ -212958,7 +256469,7 @@ func (obj *patternFlowPfcPausePauseClass1MetricTag) validateObj(vObj *validation if *obj.obj.Offset > 15 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowPfcPausePauseClass1MetricTag.Offset <= 15 but Got %d", *obj.obj.Offset)) + fmt.Sprintf("0 <= PatternFlowArpHardwareTypeMetricTag.Offset <= 15 but Got %d", *obj.obj.Offset)) } } @@ -212968,14 +256479,14 @@ func (obj *patternFlowPfcPausePauseClass1MetricTag) validateObj(vObj *validation if *obj.obj.Length < 1 || *obj.obj.Length > 16 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("1 <= PatternFlowPfcPausePauseClass1MetricTag.Length <= 16 but Got %d", *obj.obj.Length)) + fmt.Sprintf("1 <= PatternFlowArpHardwareTypeMetricTag.Length <= 16 but Got %d", *obj.obj.Length)) } } } -func (obj *patternFlowPfcPausePauseClass1MetricTag) setDefault() { +func (obj *patternFlowArpHardwareTypeMetricTag) setDefault() { if obj.obj.Offset == nil { obj.SetOffset(0) } @@ -212985,29 +256496,29 @@ func (obj *patternFlowPfcPausePauseClass1MetricTag) setDefault() { } -// ***** PatternFlowPfcPausePauseClass2Counter ***** -type patternFlowPfcPausePauseClass2Counter struct { +// ***** PatternFlowArpProtocolTypeCounter ***** +type patternFlowArpProtocolTypeCounter struct { validation - obj *otg.PatternFlowPfcPausePauseClass2Counter + obj *otg.PatternFlowArpProtocolTypeCounter } -func NewPatternFlowPfcPausePauseClass2Counter() PatternFlowPfcPausePauseClass2Counter { - obj := patternFlowPfcPausePauseClass2Counter{obj: &otg.PatternFlowPfcPausePauseClass2Counter{}} +func NewPatternFlowArpProtocolTypeCounter() PatternFlowArpProtocolTypeCounter { + obj := patternFlowArpProtocolTypeCounter{obj: &otg.PatternFlowArpProtocolTypeCounter{}} obj.setDefault() return &obj } -func (obj *patternFlowPfcPausePauseClass2Counter) Msg() *otg.PatternFlowPfcPausePauseClass2Counter { +func (obj *patternFlowArpProtocolTypeCounter) Msg() *otg.PatternFlowArpProtocolTypeCounter { return obj.obj } -func (obj *patternFlowPfcPausePauseClass2Counter) SetMsg(msg *otg.PatternFlowPfcPausePauseClass2Counter) PatternFlowPfcPausePauseClass2Counter { +func (obj *patternFlowArpProtocolTypeCounter) SetMsg(msg *otg.PatternFlowArpProtocolTypeCounter) PatternFlowArpProtocolTypeCounter { proto.Merge(obj.obj, msg) return obj } -func (obj *patternFlowPfcPausePauseClass2Counter) ToProto() (*otg.PatternFlowPfcPausePauseClass2Counter, error) { +func (obj *patternFlowArpProtocolTypeCounter) ToProto() (*otg.PatternFlowArpProtocolTypeCounter, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -213015,7 +256526,7 @@ func (obj *patternFlowPfcPausePauseClass2Counter) ToProto() (*otg.PatternFlowPfc return obj.Msg(), nil } -func (obj *patternFlowPfcPausePauseClass2Counter) FromProto(msg *otg.PatternFlowPfcPausePauseClass2Counter) (PatternFlowPfcPausePauseClass2Counter, error) { +func (obj *patternFlowArpProtocolTypeCounter) FromProto(msg *otg.PatternFlowArpProtocolTypeCounter) (PatternFlowArpProtocolTypeCounter, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -213024,7 +256535,7 @@ func (obj *patternFlowPfcPausePauseClass2Counter) FromProto(msg *otg.PatternFlow return newObj, nil } -func (obj *patternFlowPfcPausePauseClass2Counter) ToPbText() (string, error) { +func (obj *patternFlowArpProtocolTypeCounter) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -213036,7 +256547,7 @@ func (obj *patternFlowPfcPausePauseClass2Counter) ToPbText() (string, error) { return string(protoMarshal), nil } -func (obj *patternFlowPfcPausePauseClass2Counter) FromPbText(value string) error { +func (obj *patternFlowArpProtocolTypeCounter) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj @@ -213049,7 +256560,7 @@ func (obj *patternFlowPfcPausePauseClass2Counter) FromPbText(value string) error return retObj } -func (obj *patternFlowPfcPausePauseClass2Counter) ToYaml() (string, error) { +func (obj *patternFlowArpProtocolTypeCounter) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -213070,7 +256581,7 @@ func (obj *patternFlowPfcPausePauseClass2Counter) ToYaml() (string, error) { return string(data), nil } -func (obj *patternFlowPfcPausePauseClass2Counter) FromYaml(value string) error { +func (obj *patternFlowArpProtocolTypeCounter) FromYaml(value string) error { if value == "" { value = "{}" } @@ -213095,7 +256606,7 @@ func (obj *patternFlowPfcPausePauseClass2Counter) FromYaml(value string) error { return nil } -func (obj *patternFlowPfcPausePauseClass2Counter) ToJson() (string, error) { +func (obj *patternFlowArpProtocolTypeCounter) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -213113,7 +256624,7 @@ func (obj *patternFlowPfcPausePauseClass2Counter) ToJson() (string, error) { return string(data), nil } -func (obj *patternFlowPfcPausePauseClass2Counter) FromJson(value string) error { +func (obj *patternFlowArpProtocolTypeCounter) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -213134,19 +256645,19 @@ func (obj *patternFlowPfcPausePauseClass2Counter) FromJson(value string) error { return nil } -func (obj *patternFlowPfcPausePauseClass2Counter) validateToAndFrom() error { +func (obj *patternFlowArpProtocolTypeCounter) validateToAndFrom() error { // emptyVars() obj.validateObj(&obj.validation, true) return obj.validationResult() } -func (obj *patternFlowPfcPausePauseClass2Counter) Validate() error { +func (obj *patternFlowArpProtocolTypeCounter) Validate() error { // emptyVars() obj.validateObj(&obj.validation, false) return obj.validationResult() } -func (obj *patternFlowPfcPausePauseClass2Counter) String() string { +func (obj *patternFlowArpProtocolTypeCounter) String() string { str, err := obj.ToYaml() if err != nil { return err.Error() @@ -213154,12 +256665,12 @@ func (obj *patternFlowPfcPausePauseClass2Counter) String() string { return str } -func (obj *patternFlowPfcPausePauseClass2Counter) Clone() (PatternFlowPfcPausePauseClass2Counter, error) { +func (obj *patternFlowArpProtocolTypeCounter) Clone() (PatternFlowArpProtocolTypeCounter, error) { vErr := obj.Validate() if vErr != nil { return nil, vErr } - newObj := NewPatternFlowPfcPausePauseClass2Counter() + newObj := NewPatternFlowArpProtocolTypeCounter() data, err := proto.Marshal(obj.Msg()) if err != nil { return nil, err @@ -213171,63 +256682,63 @@ func (obj *patternFlowPfcPausePauseClass2Counter) Clone() (PatternFlowPfcPausePa return newObj, nil } -// PatternFlowPfcPausePauseClass2Counter is integer counter pattern -type PatternFlowPfcPausePauseClass2Counter interface { +// PatternFlowArpProtocolTypeCounter is integer counter pattern +type PatternFlowArpProtocolTypeCounter interface { Validation - // Msg marshals PatternFlowPfcPausePauseClass2Counter to protobuf object *otg.PatternFlowPfcPausePauseClass2Counter + // Msg marshals PatternFlowArpProtocolTypeCounter to protobuf object *otg.PatternFlowArpProtocolTypeCounter // and doesn't set defaults - Msg() *otg.PatternFlowPfcPausePauseClass2Counter - // SetMsg unmarshals PatternFlowPfcPausePauseClass2Counter from protobuf object *otg.PatternFlowPfcPausePauseClass2Counter + Msg() *otg.PatternFlowArpProtocolTypeCounter + // SetMsg unmarshals PatternFlowArpProtocolTypeCounter from protobuf object *otg.PatternFlowArpProtocolTypeCounter // and doesn't set defaults - SetMsg(*otg.PatternFlowPfcPausePauseClass2Counter) PatternFlowPfcPausePauseClass2Counter - // ToProto marshals PatternFlowPfcPausePauseClass2Counter to protobuf object *otg.PatternFlowPfcPausePauseClass2Counter - ToProto() (*otg.PatternFlowPfcPausePauseClass2Counter, error) - // ToPbText marshals PatternFlowPfcPausePauseClass2Counter to protobuf text + SetMsg(*otg.PatternFlowArpProtocolTypeCounter) PatternFlowArpProtocolTypeCounter + // ToProto marshals PatternFlowArpProtocolTypeCounter to protobuf object *otg.PatternFlowArpProtocolTypeCounter + ToProto() (*otg.PatternFlowArpProtocolTypeCounter, error) + // ToPbText marshals PatternFlowArpProtocolTypeCounter to protobuf text ToPbText() (string, error) - // ToYaml marshals PatternFlowPfcPausePauseClass2Counter to YAML text + // ToYaml marshals PatternFlowArpProtocolTypeCounter to YAML text ToYaml() (string, error) - // ToJson marshals PatternFlowPfcPausePauseClass2Counter to JSON text + // ToJson marshals PatternFlowArpProtocolTypeCounter to JSON text ToJson() (string, error) - // FromProto unmarshals PatternFlowPfcPausePauseClass2Counter from protobuf object *otg.PatternFlowPfcPausePauseClass2Counter - FromProto(msg *otg.PatternFlowPfcPausePauseClass2Counter) (PatternFlowPfcPausePauseClass2Counter, error) - // FromPbText unmarshals PatternFlowPfcPausePauseClass2Counter from protobuf text + // FromProto unmarshals PatternFlowArpProtocolTypeCounter from protobuf object *otg.PatternFlowArpProtocolTypeCounter + FromProto(msg *otg.PatternFlowArpProtocolTypeCounter) (PatternFlowArpProtocolTypeCounter, error) + // FromPbText unmarshals PatternFlowArpProtocolTypeCounter from protobuf text FromPbText(value string) error - // FromYaml unmarshals PatternFlowPfcPausePauseClass2Counter from YAML text + // FromYaml unmarshals PatternFlowArpProtocolTypeCounter from YAML text FromYaml(value string) error - // FromJson unmarshals PatternFlowPfcPausePauseClass2Counter from JSON text + // FromJson unmarshals PatternFlowArpProtocolTypeCounter from JSON text FromJson(value string) error - // Validate validates PatternFlowPfcPausePauseClass2Counter + // Validate validates PatternFlowArpProtocolTypeCounter Validate() error // A stringer function String() string // Clones the object - Clone() (PatternFlowPfcPausePauseClass2Counter, error) + Clone() (PatternFlowArpProtocolTypeCounter, error) validateToAndFrom() error validateObj(vObj *validation, set_default bool) setDefault() - // Start returns uint32, set in PatternFlowPfcPausePauseClass2Counter. + // Start returns uint32, set in PatternFlowArpProtocolTypeCounter. Start() uint32 - // SetStart assigns uint32 provided by user to PatternFlowPfcPausePauseClass2Counter - SetStart(value uint32) PatternFlowPfcPausePauseClass2Counter - // HasStart checks if Start has been set in PatternFlowPfcPausePauseClass2Counter + // SetStart assigns uint32 provided by user to PatternFlowArpProtocolTypeCounter + SetStart(value uint32) PatternFlowArpProtocolTypeCounter + // HasStart checks if Start has been set in PatternFlowArpProtocolTypeCounter HasStart() bool - // Step returns uint32, set in PatternFlowPfcPausePauseClass2Counter. + // Step returns uint32, set in PatternFlowArpProtocolTypeCounter. Step() uint32 - // SetStep assigns uint32 provided by user to PatternFlowPfcPausePauseClass2Counter - SetStep(value uint32) PatternFlowPfcPausePauseClass2Counter - // HasStep checks if Step has been set in PatternFlowPfcPausePauseClass2Counter + // SetStep assigns uint32 provided by user to PatternFlowArpProtocolTypeCounter + SetStep(value uint32) PatternFlowArpProtocolTypeCounter + // HasStep checks if Step has been set in PatternFlowArpProtocolTypeCounter HasStep() bool - // Count returns uint32, set in PatternFlowPfcPausePauseClass2Counter. + // Count returns uint32, set in PatternFlowArpProtocolTypeCounter. Count() uint32 - // SetCount assigns uint32 provided by user to PatternFlowPfcPausePauseClass2Counter - SetCount(value uint32) PatternFlowPfcPausePauseClass2Counter - // HasCount checks if Count has been set in PatternFlowPfcPausePauseClass2Counter + // SetCount assigns uint32 provided by user to PatternFlowArpProtocolTypeCounter + SetCount(value uint32) PatternFlowArpProtocolTypeCounter + // HasCount checks if Count has been set in PatternFlowArpProtocolTypeCounter HasCount() bool } // description is TBD // Start returns a uint32 -func (obj *patternFlowPfcPausePauseClass2Counter) Start() uint32 { +func (obj *patternFlowArpProtocolTypeCounter) Start() uint32 { return *obj.obj.Start @@ -213235,13 +256746,13 @@ func (obj *patternFlowPfcPausePauseClass2Counter) Start() uint32 { // description is TBD // Start returns a uint32 -func (obj *patternFlowPfcPausePauseClass2Counter) HasStart() bool { +func (obj *patternFlowArpProtocolTypeCounter) HasStart() bool { return obj.obj.Start != nil } // description is TBD -// SetStart sets the uint32 value in the PatternFlowPfcPausePauseClass2Counter object -func (obj *patternFlowPfcPausePauseClass2Counter) SetStart(value uint32) PatternFlowPfcPausePauseClass2Counter { +// SetStart sets the uint32 value in the PatternFlowArpProtocolTypeCounter object +func (obj *patternFlowArpProtocolTypeCounter) SetStart(value uint32) PatternFlowArpProtocolTypeCounter { obj.obj.Start = &value return obj @@ -213249,7 +256760,7 @@ func (obj *patternFlowPfcPausePauseClass2Counter) SetStart(value uint32) Pattern // description is TBD // Step returns a uint32 -func (obj *patternFlowPfcPausePauseClass2Counter) Step() uint32 { +func (obj *patternFlowArpProtocolTypeCounter) Step() uint32 { return *obj.obj.Step @@ -213257,13 +256768,13 @@ func (obj *patternFlowPfcPausePauseClass2Counter) Step() uint32 { // description is TBD // Step returns a uint32 -func (obj *patternFlowPfcPausePauseClass2Counter) HasStep() bool { +func (obj *patternFlowArpProtocolTypeCounter) HasStep() bool { return obj.obj.Step != nil } // description is TBD -// SetStep sets the uint32 value in the PatternFlowPfcPausePauseClass2Counter object -func (obj *patternFlowPfcPausePauseClass2Counter) SetStep(value uint32) PatternFlowPfcPausePauseClass2Counter { +// SetStep sets the uint32 value in the PatternFlowArpProtocolTypeCounter object +func (obj *patternFlowArpProtocolTypeCounter) SetStep(value uint32) PatternFlowArpProtocolTypeCounter { obj.obj.Step = &value return obj @@ -213271,7 +256782,7 @@ func (obj *patternFlowPfcPausePauseClass2Counter) SetStep(value uint32) PatternF // description is TBD // Count returns a uint32 -func (obj *patternFlowPfcPausePauseClass2Counter) Count() uint32 { +func (obj *patternFlowArpProtocolTypeCounter) Count() uint32 { return *obj.obj.Count @@ -213279,19 +256790,19 @@ func (obj *patternFlowPfcPausePauseClass2Counter) Count() uint32 { // description is TBD // Count returns a uint32 -func (obj *patternFlowPfcPausePauseClass2Counter) HasCount() bool { +func (obj *patternFlowArpProtocolTypeCounter) HasCount() bool { return obj.obj.Count != nil } // description is TBD -// SetCount sets the uint32 value in the PatternFlowPfcPausePauseClass2Counter object -func (obj *patternFlowPfcPausePauseClass2Counter) SetCount(value uint32) PatternFlowPfcPausePauseClass2Counter { +// SetCount sets the uint32 value in the PatternFlowArpProtocolTypeCounter object +func (obj *patternFlowArpProtocolTypeCounter) SetCount(value uint32) PatternFlowArpProtocolTypeCounter { obj.obj.Count = &value return obj } -func (obj *patternFlowPfcPausePauseClass2Counter) validateObj(vObj *validation, set_default bool) { +func (obj *patternFlowArpProtocolTypeCounter) validateObj(vObj *validation, set_default bool) { if set_default { obj.setDefault() } @@ -213301,7 +256812,7 @@ func (obj *patternFlowPfcPausePauseClass2Counter) validateObj(vObj *validation, if *obj.obj.Start > 65535 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowPfcPausePauseClass2Counter.Start <= 65535 but Got %d", *obj.obj.Start)) + fmt.Sprintf("0 <= PatternFlowArpProtocolTypeCounter.Start <= 65535 but Got %d", *obj.obj.Start)) } } @@ -213311,7 +256822,7 @@ func (obj *patternFlowPfcPausePauseClass2Counter) validateObj(vObj *validation, if *obj.obj.Step > 65535 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowPfcPausePauseClass2Counter.Step <= 65535 but Got %d", *obj.obj.Step)) + fmt.Sprintf("0 <= PatternFlowArpProtocolTypeCounter.Step <= 65535 but Got %d", *obj.obj.Step)) } } @@ -213321,16 +256832,16 @@ func (obj *patternFlowPfcPausePauseClass2Counter) validateObj(vObj *validation, if *obj.obj.Count > 65535 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowPfcPausePauseClass2Counter.Count <= 65535 but Got %d", *obj.obj.Count)) + fmt.Sprintf("0 <= PatternFlowArpProtocolTypeCounter.Count <= 65535 but Got %d", *obj.obj.Count)) } } } -func (obj *patternFlowPfcPausePauseClass2Counter) setDefault() { +func (obj *patternFlowArpProtocolTypeCounter) setDefault() { if obj.obj.Start == nil { - obj.SetStart(0) + obj.SetStart(2048) } if obj.obj.Step == nil { obj.SetStep(1) @@ -213341,29 +256852,29 @@ func (obj *patternFlowPfcPausePauseClass2Counter) setDefault() { } -// ***** PatternFlowPfcPausePauseClass2MetricTag ***** -type patternFlowPfcPausePauseClass2MetricTag struct { +// ***** PatternFlowArpProtocolTypeMetricTag ***** +type patternFlowArpProtocolTypeMetricTag struct { validation - obj *otg.PatternFlowPfcPausePauseClass2MetricTag + obj *otg.PatternFlowArpProtocolTypeMetricTag } -func NewPatternFlowPfcPausePauseClass2MetricTag() PatternFlowPfcPausePauseClass2MetricTag { - obj := patternFlowPfcPausePauseClass2MetricTag{obj: &otg.PatternFlowPfcPausePauseClass2MetricTag{}} +func NewPatternFlowArpProtocolTypeMetricTag() PatternFlowArpProtocolTypeMetricTag { + obj := patternFlowArpProtocolTypeMetricTag{obj: &otg.PatternFlowArpProtocolTypeMetricTag{}} obj.setDefault() return &obj } -func (obj *patternFlowPfcPausePauseClass2MetricTag) Msg() *otg.PatternFlowPfcPausePauseClass2MetricTag { +func (obj *patternFlowArpProtocolTypeMetricTag) Msg() *otg.PatternFlowArpProtocolTypeMetricTag { return obj.obj } -func (obj *patternFlowPfcPausePauseClass2MetricTag) SetMsg(msg *otg.PatternFlowPfcPausePauseClass2MetricTag) PatternFlowPfcPausePauseClass2MetricTag { +func (obj *patternFlowArpProtocolTypeMetricTag) SetMsg(msg *otg.PatternFlowArpProtocolTypeMetricTag) PatternFlowArpProtocolTypeMetricTag { proto.Merge(obj.obj, msg) return obj } -func (obj *patternFlowPfcPausePauseClass2MetricTag) ToProto() (*otg.PatternFlowPfcPausePauseClass2MetricTag, error) { +func (obj *patternFlowArpProtocolTypeMetricTag) ToProto() (*otg.PatternFlowArpProtocolTypeMetricTag, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -213371,7 +256882,7 @@ func (obj *patternFlowPfcPausePauseClass2MetricTag) ToProto() (*otg.PatternFlowP return obj.Msg(), nil } -func (obj *patternFlowPfcPausePauseClass2MetricTag) FromProto(msg *otg.PatternFlowPfcPausePauseClass2MetricTag) (PatternFlowPfcPausePauseClass2MetricTag, error) { +func (obj *patternFlowArpProtocolTypeMetricTag) FromProto(msg *otg.PatternFlowArpProtocolTypeMetricTag) (PatternFlowArpProtocolTypeMetricTag, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -213380,7 +256891,7 @@ func (obj *patternFlowPfcPausePauseClass2MetricTag) FromProto(msg *otg.PatternFl return newObj, nil } -func (obj *patternFlowPfcPausePauseClass2MetricTag) ToPbText() (string, error) { +func (obj *patternFlowArpProtocolTypeMetricTag) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -213392,7 +256903,7 @@ func (obj *patternFlowPfcPausePauseClass2MetricTag) ToPbText() (string, error) { return string(protoMarshal), nil } -func (obj *patternFlowPfcPausePauseClass2MetricTag) FromPbText(value string) error { +func (obj *patternFlowArpProtocolTypeMetricTag) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj @@ -213405,7 +256916,7 @@ func (obj *patternFlowPfcPausePauseClass2MetricTag) FromPbText(value string) err return retObj } -func (obj *patternFlowPfcPausePauseClass2MetricTag) ToYaml() (string, error) { +func (obj *patternFlowArpProtocolTypeMetricTag) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -213426,7 +256937,7 @@ func (obj *patternFlowPfcPausePauseClass2MetricTag) ToYaml() (string, error) { return string(data), nil } -func (obj *patternFlowPfcPausePauseClass2MetricTag) FromYaml(value string) error { +func (obj *patternFlowArpProtocolTypeMetricTag) FromYaml(value string) error { if value == "" { value = "{}" } @@ -213451,7 +256962,7 @@ func (obj *patternFlowPfcPausePauseClass2MetricTag) FromYaml(value string) error return nil } -func (obj *patternFlowPfcPausePauseClass2MetricTag) ToJson() (string, error) { +func (obj *patternFlowArpProtocolTypeMetricTag) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -213469,7 +256980,7 @@ func (obj *patternFlowPfcPausePauseClass2MetricTag) ToJson() (string, error) { return string(data), nil } -func (obj *patternFlowPfcPausePauseClass2MetricTag) FromJson(value string) error { +func (obj *patternFlowArpProtocolTypeMetricTag) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -213490,19 +257001,19 @@ func (obj *patternFlowPfcPausePauseClass2MetricTag) FromJson(value string) error return nil } -func (obj *patternFlowPfcPausePauseClass2MetricTag) validateToAndFrom() error { +func (obj *patternFlowArpProtocolTypeMetricTag) validateToAndFrom() error { // emptyVars() obj.validateObj(&obj.validation, true) return obj.validationResult() } -func (obj *patternFlowPfcPausePauseClass2MetricTag) Validate() error { +func (obj *patternFlowArpProtocolTypeMetricTag) Validate() error { // emptyVars() obj.validateObj(&obj.validation, false) return obj.validationResult() } -func (obj *patternFlowPfcPausePauseClass2MetricTag) String() string { +func (obj *patternFlowArpProtocolTypeMetricTag) String() string { str, err := obj.ToYaml() if err != nil { return err.Error() @@ -213510,12 +257021,12 @@ func (obj *patternFlowPfcPausePauseClass2MetricTag) String() string { return str } -func (obj *patternFlowPfcPausePauseClass2MetricTag) Clone() (PatternFlowPfcPausePauseClass2MetricTag, error) { +func (obj *patternFlowArpProtocolTypeMetricTag) Clone() (PatternFlowArpProtocolTypeMetricTag, error) { vErr := obj.Validate() if vErr != nil { return nil, vErr } - newObj := NewPatternFlowPfcPausePauseClass2MetricTag() + newObj := NewPatternFlowArpProtocolTypeMetricTag() data, err := proto.Marshal(obj.Msg()) if err != nil { return nil, err @@ -213527,69 +257038,69 @@ func (obj *patternFlowPfcPausePauseClass2MetricTag) Clone() (PatternFlowPfcPause return newObj, nil } -// PatternFlowPfcPausePauseClass2MetricTag is metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. -type PatternFlowPfcPausePauseClass2MetricTag interface { +// PatternFlowArpProtocolTypeMetricTag is metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. +type PatternFlowArpProtocolTypeMetricTag interface { Validation - // Msg marshals PatternFlowPfcPausePauseClass2MetricTag to protobuf object *otg.PatternFlowPfcPausePauseClass2MetricTag + // Msg marshals PatternFlowArpProtocolTypeMetricTag to protobuf object *otg.PatternFlowArpProtocolTypeMetricTag // and doesn't set defaults - Msg() *otg.PatternFlowPfcPausePauseClass2MetricTag - // SetMsg unmarshals PatternFlowPfcPausePauseClass2MetricTag from protobuf object *otg.PatternFlowPfcPausePauseClass2MetricTag + Msg() *otg.PatternFlowArpProtocolTypeMetricTag + // SetMsg unmarshals PatternFlowArpProtocolTypeMetricTag from protobuf object *otg.PatternFlowArpProtocolTypeMetricTag // and doesn't set defaults - SetMsg(*otg.PatternFlowPfcPausePauseClass2MetricTag) PatternFlowPfcPausePauseClass2MetricTag - // ToProto marshals PatternFlowPfcPausePauseClass2MetricTag to protobuf object *otg.PatternFlowPfcPausePauseClass2MetricTag - ToProto() (*otg.PatternFlowPfcPausePauseClass2MetricTag, error) - // ToPbText marshals PatternFlowPfcPausePauseClass2MetricTag to protobuf text + SetMsg(*otg.PatternFlowArpProtocolTypeMetricTag) PatternFlowArpProtocolTypeMetricTag + // ToProto marshals PatternFlowArpProtocolTypeMetricTag to protobuf object *otg.PatternFlowArpProtocolTypeMetricTag + ToProto() (*otg.PatternFlowArpProtocolTypeMetricTag, error) + // ToPbText marshals PatternFlowArpProtocolTypeMetricTag to protobuf text ToPbText() (string, error) - // ToYaml marshals PatternFlowPfcPausePauseClass2MetricTag to YAML text + // ToYaml marshals PatternFlowArpProtocolTypeMetricTag to YAML text ToYaml() (string, error) - // ToJson marshals PatternFlowPfcPausePauseClass2MetricTag to JSON text + // ToJson marshals PatternFlowArpProtocolTypeMetricTag to JSON text ToJson() (string, error) - // FromProto unmarshals PatternFlowPfcPausePauseClass2MetricTag from protobuf object *otg.PatternFlowPfcPausePauseClass2MetricTag - FromProto(msg *otg.PatternFlowPfcPausePauseClass2MetricTag) (PatternFlowPfcPausePauseClass2MetricTag, error) - // FromPbText unmarshals PatternFlowPfcPausePauseClass2MetricTag from protobuf text + // FromProto unmarshals PatternFlowArpProtocolTypeMetricTag from protobuf object *otg.PatternFlowArpProtocolTypeMetricTag + FromProto(msg *otg.PatternFlowArpProtocolTypeMetricTag) (PatternFlowArpProtocolTypeMetricTag, error) + // FromPbText unmarshals PatternFlowArpProtocolTypeMetricTag from protobuf text FromPbText(value string) error - // FromYaml unmarshals PatternFlowPfcPausePauseClass2MetricTag from YAML text + // FromYaml unmarshals PatternFlowArpProtocolTypeMetricTag from YAML text FromYaml(value string) error - // FromJson unmarshals PatternFlowPfcPausePauseClass2MetricTag from JSON text + // FromJson unmarshals PatternFlowArpProtocolTypeMetricTag from JSON text FromJson(value string) error - // Validate validates PatternFlowPfcPausePauseClass2MetricTag + // Validate validates PatternFlowArpProtocolTypeMetricTag Validate() error // A stringer function String() string // Clones the object - Clone() (PatternFlowPfcPausePauseClass2MetricTag, error) + Clone() (PatternFlowArpProtocolTypeMetricTag, error) validateToAndFrom() error validateObj(vObj *validation, set_default bool) setDefault() - // Name returns string, set in PatternFlowPfcPausePauseClass2MetricTag. + // Name returns string, set in PatternFlowArpProtocolTypeMetricTag. Name() string - // SetName assigns string provided by user to PatternFlowPfcPausePauseClass2MetricTag - SetName(value string) PatternFlowPfcPausePauseClass2MetricTag - // Offset returns uint32, set in PatternFlowPfcPausePauseClass2MetricTag. + // SetName assigns string provided by user to PatternFlowArpProtocolTypeMetricTag + SetName(value string) PatternFlowArpProtocolTypeMetricTag + // Offset returns uint32, set in PatternFlowArpProtocolTypeMetricTag. Offset() uint32 - // SetOffset assigns uint32 provided by user to PatternFlowPfcPausePauseClass2MetricTag - SetOffset(value uint32) PatternFlowPfcPausePauseClass2MetricTag - // HasOffset checks if Offset has been set in PatternFlowPfcPausePauseClass2MetricTag + // SetOffset assigns uint32 provided by user to PatternFlowArpProtocolTypeMetricTag + SetOffset(value uint32) PatternFlowArpProtocolTypeMetricTag + // HasOffset checks if Offset has been set in PatternFlowArpProtocolTypeMetricTag HasOffset() bool - // Length returns uint32, set in PatternFlowPfcPausePauseClass2MetricTag. + // Length returns uint32, set in PatternFlowArpProtocolTypeMetricTag. Length() uint32 - // SetLength assigns uint32 provided by user to PatternFlowPfcPausePauseClass2MetricTag - SetLength(value uint32) PatternFlowPfcPausePauseClass2MetricTag - // HasLength checks if Length has been set in PatternFlowPfcPausePauseClass2MetricTag + // SetLength assigns uint32 provided by user to PatternFlowArpProtocolTypeMetricTag + SetLength(value uint32) PatternFlowArpProtocolTypeMetricTag + // HasLength checks if Length has been set in PatternFlowArpProtocolTypeMetricTag HasLength() bool } // Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field // Name returns a string -func (obj *patternFlowPfcPausePauseClass2MetricTag) Name() string { +func (obj *patternFlowArpProtocolTypeMetricTag) Name() string { return *obj.obj.Name } // Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field -// SetName sets the string value in the PatternFlowPfcPausePauseClass2MetricTag object -func (obj *patternFlowPfcPausePauseClass2MetricTag) SetName(value string) PatternFlowPfcPausePauseClass2MetricTag { +// SetName sets the string value in the PatternFlowArpProtocolTypeMetricTag object +func (obj *patternFlowArpProtocolTypeMetricTag) SetName(value string) PatternFlowArpProtocolTypeMetricTag { obj.obj.Name = &value return obj @@ -213597,7 +257108,7 @@ func (obj *patternFlowPfcPausePauseClass2MetricTag) SetName(value string) Patter // Offset in bits relative to start of corresponding header field // Offset returns a uint32 -func (obj *patternFlowPfcPausePauseClass2MetricTag) Offset() uint32 { +func (obj *patternFlowArpProtocolTypeMetricTag) Offset() uint32 { return *obj.obj.Offset @@ -213605,13 +257116,13 @@ func (obj *patternFlowPfcPausePauseClass2MetricTag) Offset() uint32 { // Offset in bits relative to start of corresponding header field // Offset returns a uint32 -func (obj *patternFlowPfcPausePauseClass2MetricTag) HasOffset() bool { +func (obj *patternFlowArpProtocolTypeMetricTag) HasOffset() bool { return obj.obj.Offset != nil } // Offset in bits relative to start of corresponding header field -// SetOffset sets the uint32 value in the PatternFlowPfcPausePauseClass2MetricTag object -func (obj *patternFlowPfcPausePauseClass2MetricTag) SetOffset(value uint32) PatternFlowPfcPausePauseClass2MetricTag { +// SetOffset sets the uint32 value in the PatternFlowArpProtocolTypeMetricTag object +func (obj *patternFlowArpProtocolTypeMetricTag) SetOffset(value uint32) PatternFlowArpProtocolTypeMetricTag { obj.obj.Offset = &value return obj @@ -213619,7 +257130,7 @@ func (obj *patternFlowPfcPausePauseClass2MetricTag) SetOffset(value uint32) Patt // Number of bits to track for metrics starting from configured offset of corresponding header field // Length returns a uint32 -func (obj *patternFlowPfcPausePauseClass2MetricTag) Length() uint32 { +func (obj *patternFlowArpProtocolTypeMetricTag) Length() uint32 { return *obj.obj.Length @@ -213627,26 +257138,26 @@ func (obj *patternFlowPfcPausePauseClass2MetricTag) Length() uint32 { // Number of bits to track for metrics starting from configured offset of corresponding header field // Length returns a uint32 -func (obj *patternFlowPfcPausePauseClass2MetricTag) HasLength() bool { +func (obj *patternFlowArpProtocolTypeMetricTag) HasLength() bool { return obj.obj.Length != nil } // Number of bits to track for metrics starting from configured offset of corresponding header field -// SetLength sets the uint32 value in the PatternFlowPfcPausePauseClass2MetricTag object -func (obj *patternFlowPfcPausePauseClass2MetricTag) SetLength(value uint32) PatternFlowPfcPausePauseClass2MetricTag { +// SetLength sets the uint32 value in the PatternFlowArpProtocolTypeMetricTag object +func (obj *patternFlowArpProtocolTypeMetricTag) SetLength(value uint32) PatternFlowArpProtocolTypeMetricTag { obj.obj.Length = &value return obj } -func (obj *patternFlowPfcPausePauseClass2MetricTag) validateObj(vObj *validation, set_default bool) { +func (obj *patternFlowArpProtocolTypeMetricTag) validateObj(vObj *validation, set_default bool) { if set_default { obj.setDefault() } // Name is required if obj.obj.Name == nil { - vObj.validationErrors = append(vObj.validationErrors, "Name is required field on interface PatternFlowPfcPausePauseClass2MetricTag") + vObj.validationErrors = append(vObj.validationErrors, "Name is required field on interface PatternFlowArpProtocolTypeMetricTag") } if obj.obj.Offset != nil { @@ -213654,7 +257165,7 @@ func (obj *patternFlowPfcPausePauseClass2MetricTag) validateObj(vObj *validation if *obj.obj.Offset > 15 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowPfcPausePauseClass2MetricTag.Offset <= 15 but Got %d", *obj.obj.Offset)) + fmt.Sprintf("0 <= PatternFlowArpProtocolTypeMetricTag.Offset <= 15 but Got %d", *obj.obj.Offset)) } } @@ -213664,14 +257175,14 @@ func (obj *patternFlowPfcPausePauseClass2MetricTag) validateObj(vObj *validation if *obj.obj.Length < 1 || *obj.obj.Length > 16 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("1 <= PatternFlowPfcPausePauseClass2MetricTag.Length <= 16 but Got %d", *obj.obj.Length)) + fmt.Sprintf("1 <= PatternFlowArpProtocolTypeMetricTag.Length <= 16 but Got %d", *obj.obj.Length)) } } } -func (obj *patternFlowPfcPausePauseClass2MetricTag) setDefault() { +func (obj *patternFlowArpProtocolTypeMetricTag) setDefault() { if obj.obj.Offset == nil { obj.SetOffset(0) } @@ -213681,29 +257192,29 @@ func (obj *patternFlowPfcPausePauseClass2MetricTag) setDefault() { } -// ***** PatternFlowPfcPausePauseClass3Counter ***** -type patternFlowPfcPausePauseClass3Counter struct { +// ***** PatternFlowArpHardwareLengthCounter ***** +type patternFlowArpHardwareLengthCounter struct { validation - obj *otg.PatternFlowPfcPausePauseClass3Counter + obj *otg.PatternFlowArpHardwareLengthCounter } -func NewPatternFlowPfcPausePauseClass3Counter() PatternFlowPfcPausePauseClass3Counter { - obj := patternFlowPfcPausePauseClass3Counter{obj: &otg.PatternFlowPfcPausePauseClass3Counter{}} +func NewPatternFlowArpHardwareLengthCounter() PatternFlowArpHardwareLengthCounter { + obj := patternFlowArpHardwareLengthCounter{obj: &otg.PatternFlowArpHardwareLengthCounter{}} obj.setDefault() return &obj } -func (obj *patternFlowPfcPausePauseClass3Counter) Msg() *otg.PatternFlowPfcPausePauseClass3Counter { +func (obj *patternFlowArpHardwareLengthCounter) Msg() *otg.PatternFlowArpHardwareLengthCounter { return obj.obj } -func (obj *patternFlowPfcPausePauseClass3Counter) SetMsg(msg *otg.PatternFlowPfcPausePauseClass3Counter) PatternFlowPfcPausePauseClass3Counter { +func (obj *patternFlowArpHardwareLengthCounter) SetMsg(msg *otg.PatternFlowArpHardwareLengthCounter) PatternFlowArpHardwareLengthCounter { proto.Merge(obj.obj, msg) return obj } -func (obj *patternFlowPfcPausePauseClass3Counter) ToProto() (*otg.PatternFlowPfcPausePauseClass3Counter, error) { +func (obj *patternFlowArpHardwareLengthCounter) ToProto() (*otg.PatternFlowArpHardwareLengthCounter, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -213711,7 +257222,7 @@ func (obj *patternFlowPfcPausePauseClass3Counter) ToProto() (*otg.PatternFlowPfc return obj.Msg(), nil } -func (obj *patternFlowPfcPausePauseClass3Counter) FromProto(msg *otg.PatternFlowPfcPausePauseClass3Counter) (PatternFlowPfcPausePauseClass3Counter, error) { +func (obj *patternFlowArpHardwareLengthCounter) FromProto(msg *otg.PatternFlowArpHardwareLengthCounter) (PatternFlowArpHardwareLengthCounter, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -213720,7 +257231,7 @@ func (obj *patternFlowPfcPausePauseClass3Counter) FromProto(msg *otg.PatternFlow return newObj, nil } -func (obj *patternFlowPfcPausePauseClass3Counter) ToPbText() (string, error) { +func (obj *patternFlowArpHardwareLengthCounter) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -213732,7 +257243,7 @@ func (obj *patternFlowPfcPausePauseClass3Counter) ToPbText() (string, error) { return string(protoMarshal), nil } -func (obj *patternFlowPfcPausePauseClass3Counter) FromPbText(value string) error { +func (obj *patternFlowArpHardwareLengthCounter) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj @@ -213745,7 +257256,7 @@ func (obj *patternFlowPfcPausePauseClass3Counter) FromPbText(value string) error return retObj } -func (obj *patternFlowPfcPausePauseClass3Counter) ToYaml() (string, error) { +func (obj *patternFlowArpHardwareLengthCounter) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -213766,7 +257277,7 @@ func (obj *patternFlowPfcPausePauseClass3Counter) ToYaml() (string, error) { return string(data), nil } -func (obj *patternFlowPfcPausePauseClass3Counter) FromYaml(value string) error { +func (obj *patternFlowArpHardwareLengthCounter) FromYaml(value string) error { if value == "" { value = "{}" } @@ -213791,7 +257302,7 @@ func (obj *patternFlowPfcPausePauseClass3Counter) FromYaml(value string) error { return nil } -func (obj *patternFlowPfcPausePauseClass3Counter) ToJson() (string, error) { +func (obj *patternFlowArpHardwareLengthCounter) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -213809,7 +257320,7 @@ func (obj *patternFlowPfcPausePauseClass3Counter) ToJson() (string, error) { return string(data), nil } -func (obj *patternFlowPfcPausePauseClass3Counter) FromJson(value string) error { +func (obj *patternFlowArpHardwareLengthCounter) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -213830,19 +257341,19 @@ func (obj *patternFlowPfcPausePauseClass3Counter) FromJson(value string) error { return nil } -func (obj *patternFlowPfcPausePauseClass3Counter) validateToAndFrom() error { +func (obj *patternFlowArpHardwareLengthCounter) validateToAndFrom() error { // emptyVars() obj.validateObj(&obj.validation, true) return obj.validationResult() } -func (obj *patternFlowPfcPausePauseClass3Counter) Validate() error { +func (obj *patternFlowArpHardwareLengthCounter) Validate() error { // emptyVars() obj.validateObj(&obj.validation, false) return obj.validationResult() } -func (obj *patternFlowPfcPausePauseClass3Counter) String() string { +func (obj *patternFlowArpHardwareLengthCounter) String() string { str, err := obj.ToYaml() if err != nil { return err.Error() @@ -213850,12 +257361,12 @@ func (obj *patternFlowPfcPausePauseClass3Counter) String() string { return str } -func (obj *patternFlowPfcPausePauseClass3Counter) Clone() (PatternFlowPfcPausePauseClass3Counter, error) { +func (obj *patternFlowArpHardwareLengthCounter) Clone() (PatternFlowArpHardwareLengthCounter, error) { vErr := obj.Validate() if vErr != nil { return nil, vErr } - newObj := NewPatternFlowPfcPausePauseClass3Counter() + newObj := NewPatternFlowArpHardwareLengthCounter() data, err := proto.Marshal(obj.Msg()) if err != nil { return nil, err @@ -213867,63 +257378,63 @@ func (obj *patternFlowPfcPausePauseClass3Counter) Clone() (PatternFlowPfcPausePa return newObj, nil } -// PatternFlowPfcPausePauseClass3Counter is integer counter pattern -type PatternFlowPfcPausePauseClass3Counter interface { +// PatternFlowArpHardwareLengthCounter is integer counter pattern +type PatternFlowArpHardwareLengthCounter interface { Validation - // Msg marshals PatternFlowPfcPausePauseClass3Counter to protobuf object *otg.PatternFlowPfcPausePauseClass3Counter + // Msg marshals PatternFlowArpHardwareLengthCounter to protobuf object *otg.PatternFlowArpHardwareLengthCounter // and doesn't set defaults - Msg() *otg.PatternFlowPfcPausePauseClass3Counter - // SetMsg unmarshals PatternFlowPfcPausePauseClass3Counter from protobuf object *otg.PatternFlowPfcPausePauseClass3Counter + Msg() *otg.PatternFlowArpHardwareLengthCounter + // SetMsg unmarshals PatternFlowArpHardwareLengthCounter from protobuf object *otg.PatternFlowArpHardwareLengthCounter // and doesn't set defaults - SetMsg(*otg.PatternFlowPfcPausePauseClass3Counter) PatternFlowPfcPausePauseClass3Counter - // ToProto marshals PatternFlowPfcPausePauseClass3Counter to protobuf object *otg.PatternFlowPfcPausePauseClass3Counter - ToProto() (*otg.PatternFlowPfcPausePauseClass3Counter, error) - // ToPbText marshals PatternFlowPfcPausePauseClass3Counter to protobuf text + SetMsg(*otg.PatternFlowArpHardwareLengthCounter) PatternFlowArpHardwareLengthCounter + // ToProto marshals PatternFlowArpHardwareLengthCounter to protobuf object *otg.PatternFlowArpHardwareLengthCounter + ToProto() (*otg.PatternFlowArpHardwareLengthCounter, error) + // ToPbText marshals PatternFlowArpHardwareLengthCounter to protobuf text ToPbText() (string, error) - // ToYaml marshals PatternFlowPfcPausePauseClass3Counter to YAML text + // ToYaml marshals PatternFlowArpHardwareLengthCounter to YAML text ToYaml() (string, error) - // ToJson marshals PatternFlowPfcPausePauseClass3Counter to JSON text + // ToJson marshals PatternFlowArpHardwareLengthCounter to JSON text ToJson() (string, error) - // FromProto unmarshals PatternFlowPfcPausePauseClass3Counter from protobuf object *otg.PatternFlowPfcPausePauseClass3Counter - FromProto(msg *otg.PatternFlowPfcPausePauseClass3Counter) (PatternFlowPfcPausePauseClass3Counter, error) - // FromPbText unmarshals PatternFlowPfcPausePauseClass3Counter from protobuf text + // FromProto unmarshals PatternFlowArpHardwareLengthCounter from protobuf object *otg.PatternFlowArpHardwareLengthCounter + FromProto(msg *otg.PatternFlowArpHardwareLengthCounter) (PatternFlowArpHardwareLengthCounter, error) + // FromPbText unmarshals PatternFlowArpHardwareLengthCounter from protobuf text FromPbText(value string) error - // FromYaml unmarshals PatternFlowPfcPausePauseClass3Counter from YAML text + // FromYaml unmarshals PatternFlowArpHardwareLengthCounter from YAML text FromYaml(value string) error - // FromJson unmarshals PatternFlowPfcPausePauseClass3Counter from JSON text + // FromJson unmarshals PatternFlowArpHardwareLengthCounter from JSON text FromJson(value string) error - // Validate validates PatternFlowPfcPausePauseClass3Counter + // Validate validates PatternFlowArpHardwareLengthCounter Validate() error // A stringer function String() string // Clones the object - Clone() (PatternFlowPfcPausePauseClass3Counter, error) + Clone() (PatternFlowArpHardwareLengthCounter, error) validateToAndFrom() error validateObj(vObj *validation, set_default bool) setDefault() - // Start returns uint32, set in PatternFlowPfcPausePauseClass3Counter. + // Start returns uint32, set in PatternFlowArpHardwareLengthCounter. Start() uint32 - // SetStart assigns uint32 provided by user to PatternFlowPfcPausePauseClass3Counter - SetStart(value uint32) PatternFlowPfcPausePauseClass3Counter - // HasStart checks if Start has been set in PatternFlowPfcPausePauseClass3Counter + // SetStart assigns uint32 provided by user to PatternFlowArpHardwareLengthCounter + SetStart(value uint32) PatternFlowArpHardwareLengthCounter + // HasStart checks if Start has been set in PatternFlowArpHardwareLengthCounter HasStart() bool - // Step returns uint32, set in PatternFlowPfcPausePauseClass3Counter. + // Step returns uint32, set in PatternFlowArpHardwareLengthCounter. Step() uint32 - // SetStep assigns uint32 provided by user to PatternFlowPfcPausePauseClass3Counter - SetStep(value uint32) PatternFlowPfcPausePauseClass3Counter - // HasStep checks if Step has been set in PatternFlowPfcPausePauseClass3Counter + // SetStep assigns uint32 provided by user to PatternFlowArpHardwareLengthCounter + SetStep(value uint32) PatternFlowArpHardwareLengthCounter + // HasStep checks if Step has been set in PatternFlowArpHardwareLengthCounter HasStep() bool - // Count returns uint32, set in PatternFlowPfcPausePauseClass3Counter. + // Count returns uint32, set in PatternFlowArpHardwareLengthCounter. Count() uint32 - // SetCount assigns uint32 provided by user to PatternFlowPfcPausePauseClass3Counter - SetCount(value uint32) PatternFlowPfcPausePauseClass3Counter - // HasCount checks if Count has been set in PatternFlowPfcPausePauseClass3Counter + // SetCount assigns uint32 provided by user to PatternFlowArpHardwareLengthCounter + SetCount(value uint32) PatternFlowArpHardwareLengthCounter + // HasCount checks if Count has been set in PatternFlowArpHardwareLengthCounter HasCount() bool } // description is TBD // Start returns a uint32 -func (obj *patternFlowPfcPausePauseClass3Counter) Start() uint32 { +func (obj *patternFlowArpHardwareLengthCounter) Start() uint32 { return *obj.obj.Start @@ -213931,13 +257442,13 @@ func (obj *patternFlowPfcPausePauseClass3Counter) Start() uint32 { // description is TBD // Start returns a uint32 -func (obj *patternFlowPfcPausePauseClass3Counter) HasStart() bool { +func (obj *patternFlowArpHardwareLengthCounter) HasStart() bool { return obj.obj.Start != nil } // description is TBD -// SetStart sets the uint32 value in the PatternFlowPfcPausePauseClass3Counter object -func (obj *patternFlowPfcPausePauseClass3Counter) SetStart(value uint32) PatternFlowPfcPausePauseClass3Counter { +// SetStart sets the uint32 value in the PatternFlowArpHardwareLengthCounter object +func (obj *patternFlowArpHardwareLengthCounter) SetStart(value uint32) PatternFlowArpHardwareLengthCounter { obj.obj.Start = &value return obj @@ -213945,7 +257456,7 @@ func (obj *patternFlowPfcPausePauseClass3Counter) SetStart(value uint32) Pattern // description is TBD // Step returns a uint32 -func (obj *patternFlowPfcPausePauseClass3Counter) Step() uint32 { +func (obj *patternFlowArpHardwareLengthCounter) Step() uint32 { return *obj.obj.Step @@ -213953,13 +257464,13 @@ func (obj *patternFlowPfcPausePauseClass3Counter) Step() uint32 { // description is TBD // Step returns a uint32 -func (obj *patternFlowPfcPausePauseClass3Counter) HasStep() bool { +func (obj *patternFlowArpHardwareLengthCounter) HasStep() bool { return obj.obj.Step != nil } // description is TBD -// SetStep sets the uint32 value in the PatternFlowPfcPausePauseClass3Counter object -func (obj *patternFlowPfcPausePauseClass3Counter) SetStep(value uint32) PatternFlowPfcPausePauseClass3Counter { +// SetStep sets the uint32 value in the PatternFlowArpHardwareLengthCounter object +func (obj *patternFlowArpHardwareLengthCounter) SetStep(value uint32) PatternFlowArpHardwareLengthCounter { obj.obj.Step = &value return obj @@ -213967,7 +257478,7 @@ func (obj *patternFlowPfcPausePauseClass3Counter) SetStep(value uint32) PatternF // description is TBD // Count returns a uint32 -func (obj *patternFlowPfcPausePauseClass3Counter) Count() uint32 { +func (obj *patternFlowArpHardwareLengthCounter) Count() uint32 { return *obj.obj.Count @@ -213975,58 +257486,58 @@ func (obj *patternFlowPfcPausePauseClass3Counter) Count() uint32 { // description is TBD // Count returns a uint32 -func (obj *patternFlowPfcPausePauseClass3Counter) HasCount() bool { +func (obj *patternFlowArpHardwareLengthCounter) HasCount() bool { return obj.obj.Count != nil } // description is TBD -// SetCount sets the uint32 value in the PatternFlowPfcPausePauseClass3Counter object -func (obj *patternFlowPfcPausePauseClass3Counter) SetCount(value uint32) PatternFlowPfcPausePauseClass3Counter { +// SetCount sets the uint32 value in the PatternFlowArpHardwareLengthCounter object +func (obj *patternFlowArpHardwareLengthCounter) SetCount(value uint32) PatternFlowArpHardwareLengthCounter { obj.obj.Count = &value return obj } -func (obj *patternFlowPfcPausePauseClass3Counter) validateObj(vObj *validation, set_default bool) { +func (obj *patternFlowArpHardwareLengthCounter) validateObj(vObj *validation, set_default bool) { if set_default { obj.setDefault() } if obj.obj.Start != nil { - if *obj.obj.Start > 65535 { + if *obj.obj.Start > 255 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowPfcPausePauseClass3Counter.Start <= 65535 but Got %d", *obj.obj.Start)) + fmt.Sprintf("0 <= PatternFlowArpHardwareLengthCounter.Start <= 255 but Got %d", *obj.obj.Start)) } } if obj.obj.Step != nil { - if *obj.obj.Step > 65535 { + if *obj.obj.Step > 255 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowPfcPausePauseClass3Counter.Step <= 65535 but Got %d", *obj.obj.Step)) + fmt.Sprintf("0 <= PatternFlowArpHardwareLengthCounter.Step <= 255 but Got %d", *obj.obj.Step)) } } if obj.obj.Count != nil { - if *obj.obj.Count > 65535 { + if *obj.obj.Count > 255 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowPfcPausePauseClass3Counter.Count <= 65535 but Got %d", *obj.obj.Count)) + fmt.Sprintf("0 <= PatternFlowArpHardwareLengthCounter.Count <= 255 but Got %d", *obj.obj.Count)) } } } -func (obj *patternFlowPfcPausePauseClass3Counter) setDefault() { +func (obj *patternFlowArpHardwareLengthCounter) setDefault() { if obj.obj.Start == nil { - obj.SetStart(0) + obj.SetStart(6) } if obj.obj.Step == nil { obj.SetStep(1) @@ -214037,29 +257548,29 @@ func (obj *patternFlowPfcPausePauseClass3Counter) setDefault() { } -// ***** PatternFlowPfcPausePauseClass3MetricTag ***** -type patternFlowPfcPausePauseClass3MetricTag struct { +// ***** PatternFlowArpHardwareLengthMetricTag ***** +type patternFlowArpHardwareLengthMetricTag struct { validation - obj *otg.PatternFlowPfcPausePauseClass3MetricTag + obj *otg.PatternFlowArpHardwareLengthMetricTag } -func NewPatternFlowPfcPausePauseClass3MetricTag() PatternFlowPfcPausePauseClass3MetricTag { - obj := patternFlowPfcPausePauseClass3MetricTag{obj: &otg.PatternFlowPfcPausePauseClass3MetricTag{}} +func NewPatternFlowArpHardwareLengthMetricTag() PatternFlowArpHardwareLengthMetricTag { + obj := patternFlowArpHardwareLengthMetricTag{obj: &otg.PatternFlowArpHardwareLengthMetricTag{}} obj.setDefault() return &obj } -func (obj *patternFlowPfcPausePauseClass3MetricTag) Msg() *otg.PatternFlowPfcPausePauseClass3MetricTag { +func (obj *patternFlowArpHardwareLengthMetricTag) Msg() *otg.PatternFlowArpHardwareLengthMetricTag { return obj.obj } -func (obj *patternFlowPfcPausePauseClass3MetricTag) SetMsg(msg *otg.PatternFlowPfcPausePauseClass3MetricTag) PatternFlowPfcPausePauseClass3MetricTag { +func (obj *patternFlowArpHardwareLengthMetricTag) SetMsg(msg *otg.PatternFlowArpHardwareLengthMetricTag) PatternFlowArpHardwareLengthMetricTag { proto.Merge(obj.obj, msg) return obj } -func (obj *patternFlowPfcPausePauseClass3MetricTag) ToProto() (*otg.PatternFlowPfcPausePauseClass3MetricTag, error) { +func (obj *patternFlowArpHardwareLengthMetricTag) ToProto() (*otg.PatternFlowArpHardwareLengthMetricTag, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -214067,7 +257578,7 @@ func (obj *patternFlowPfcPausePauseClass3MetricTag) ToProto() (*otg.PatternFlowP return obj.Msg(), nil } -func (obj *patternFlowPfcPausePauseClass3MetricTag) FromProto(msg *otg.PatternFlowPfcPausePauseClass3MetricTag) (PatternFlowPfcPausePauseClass3MetricTag, error) { +func (obj *patternFlowArpHardwareLengthMetricTag) FromProto(msg *otg.PatternFlowArpHardwareLengthMetricTag) (PatternFlowArpHardwareLengthMetricTag, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -214076,7 +257587,7 @@ func (obj *patternFlowPfcPausePauseClass3MetricTag) FromProto(msg *otg.PatternFl return newObj, nil } -func (obj *patternFlowPfcPausePauseClass3MetricTag) ToPbText() (string, error) { +func (obj *patternFlowArpHardwareLengthMetricTag) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -214088,7 +257599,7 @@ func (obj *patternFlowPfcPausePauseClass3MetricTag) ToPbText() (string, error) { return string(protoMarshal), nil } -func (obj *patternFlowPfcPausePauseClass3MetricTag) FromPbText(value string) error { +func (obj *patternFlowArpHardwareLengthMetricTag) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj @@ -214101,7 +257612,7 @@ func (obj *patternFlowPfcPausePauseClass3MetricTag) FromPbText(value string) err return retObj } -func (obj *patternFlowPfcPausePauseClass3MetricTag) ToYaml() (string, error) { +func (obj *patternFlowArpHardwareLengthMetricTag) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -214122,7 +257633,7 @@ func (obj *patternFlowPfcPausePauseClass3MetricTag) ToYaml() (string, error) { return string(data), nil } -func (obj *patternFlowPfcPausePauseClass3MetricTag) FromYaml(value string) error { +func (obj *patternFlowArpHardwareLengthMetricTag) FromYaml(value string) error { if value == "" { value = "{}" } @@ -214147,7 +257658,7 @@ func (obj *patternFlowPfcPausePauseClass3MetricTag) FromYaml(value string) error return nil } -func (obj *patternFlowPfcPausePauseClass3MetricTag) ToJson() (string, error) { +func (obj *patternFlowArpHardwareLengthMetricTag) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -214165,7 +257676,7 @@ func (obj *patternFlowPfcPausePauseClass3MetricTag) ToJson() (string, error) { return string(data), nil } -func (obj *patternFlowPfcPausePauseClass3MetricTag) FromJson(value string) error { +func (obj *patternFlowArpHardwareLengthMetricTag) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -214186,19 +257697,19 @@ func (obj *patternFlowPfcPausePauseClass3MetricTag) FromJson(value string) error return nil } -func (obj *patternFlowPfcPausePauseClass3MetricTag) validateToAndFrom() error { +func (obj *patternFlowArpHardwareLengthMetricTag) validateToAndFrom() error { // emptyVars() obj.validateObj(&obj.validation, true) return obj.validationResult() } -func (obj *patternFlowPfcPausePauseClass3MetricTag) Validate() error { +func (obj *patternFlowArpHardwareLengthMetricTag) Validate() error { // emptyVars() obj.validateObj(&obj.validation, false) return obj.validationResult() } -func (obj *patternFlowPfcPausePauseClass3MetricTag) String() string { +func (obj *patternFlowArpHardwareLengthMetricTag) String() string { str, err := obj.ToYaml() if err != nil { return err.Error() @@ -214206,12 +257717,12 @@ func (obj *patternFlowPfcPausePauseClass3MetricTag) String() string { return str } -func (obj *patternFlowPfcPausePauseClass3MetricTag) Clone() (PatternFlowPfcPausePauseClass3MetricTag, error) { +func (obj *patternFlowArpHardwareLengthMetricTag) Clone() (PatternFlowArpHardwareLengthMetricTag, error) { vErr := obj.Validate() if vErr != nil { return nil, vErr } - newObj := NewPatternFlowPfcPausePauseClass3MetricTag() + newObj := NewPatternFlowArpHardwareLengthMetricTag() data, err := proto.Marshal(obj.Msg()) if err != nil { return nil, err @@ -214223,69 +257734,69 @@ func (obj *patternFlowPfcPausePauseClass3MetricTag) Clone() (PatternFlowPfcPause return newObj, nil } -// PatternFlowPfcPausePauseClass3MetricTag is metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. -type PatternFlowPfcPausePauseClass3MetricTag interface { +// PatternFlowArpHardwareLengthMetricTag is metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. +type PatternFlowArpHardwareLengthMetricTag interface { Validation - // Msg marshals PatternFlowPfcPausePauseClass3MetricTag to protobuf object *otg.PatternFlowPfcPausePauseClass3MetricTag + // Msg marshals PatternFlowArpHardwareLengthMetricTag to protobuf object *otg.PatternFlowArpHardwareLengthMetricTag // and doesn't set defaults - Msg() *otg.PatternFlowPfcPausePauseClass3MetricTag - // SetMsg unmarshals PatternFlowPfcPausePauseClass3MetricTag from protobuf object *otg.PatternFlowPfcPausePauseClass3MetricTag + Msg() *otg.PatternFlowArpHardwareLengthMetricTag + // SetMsg unmarshals PatternFlowArpHardwareLengthMetricTag from protobuf object *otg.PatternFlowArpHardwareLengthMetricTag // and doesn't set defaults - SetMsg(*otg.PatternFlowPfcPausePauseClass3MetricTag) PatternFlowPfcPausePauseClass3MetricTag - // ToProto marshals PatternFlowPfcPausePauseClass3MetricTag to protobuf object *otg.PatternFlowPfcPausePauseClass3MetricTag - ToProto() (*otg.PatternFlowPfcPausePauseClass3MetricTag, error) - // ToPbText marshals PatternFlowPfcPausePauseClass3MetricTag to protobuf text + SetMsg(*otg.PatternFlowArpHardwareLengthMetricTag) PatternFlowArpHardwareLengthMetricTag + // ToProto marshals PatternFlowArpHardwareLengthMetricTag to protobuf object *otg.PatternFlowArpHardwareLengthMetricTag + ToProto() (*otg.PatternFlowArpHardwareLengthMetricTag, error) + // ToPbText marshals PatternFlowArpHardwareLengthMetricTag to protobuf text ToPbText() (string, error) - // ToYaml marshals PatternFlowPfcPausePauseClass3MetricTag to YAML text + // ToYaml marshals PatternFlowArpHardwareLengthMetricTag to YAML text ToYaml() (string, error) - // ToJson marshals PatternFlowPfcPausePauseClass3MetricTag to JSON text + // ToJson marshals PatternFlowArpHardwareLengthMetricTag to JSON text ToJson() (string, error) - // FromProto unmarshals PatternFlowPfcPausePauseClass3MetricTag from protobuf object *otg.PatternFlowPfcPausePauseClass3MetricTag - FromProto(msg *otg.PatternFlowPfcPausePauseClass3MetricTag) (PatternFlowPfcPausePauseClass3MetricTag, error) - // FromPbText unmarshals PatternFlowPfcPausePauseClass3MetricTag from protobuf text + // FromProto unmarshals PatternFlowArpHardwareLengthMetricTag from protobuf object *otg.PatternFlowArpHardwareLengthMetricTag + FromProto(msg *otg.PatternFlowArpHardwareLengthMetricTag) (PatternFlowArpHardwareLengthMetricTag, error) + // FromPbText unmarshals PatternFlowArpHardwareLengthMetricTag from protobuf text FromPbText(value string) error - // FromYaml unmarshals PatternFlowPfcPausePauseClass3MetricTag from YAML text + // FromYaml unmarshals PatternFlowArpHardwareLengthMetricTag from YAML text FromYaml(value string) error - // FromJson unmarshals PatternFlowPfcPausePauseClass3MetricTag from JSON text + // FromJson unmarshals PatternFlowArpHardwareLengthMetricTag from JSON text FromJson(value string) error - // Validate validates PatternFlowPfcPausePauseClass3MetricTag + // Validate validates PatternFlowArpHardwareLengthMetricTag Validate() error // A stringer function String() string // Clones the object - Clone() (PatternFlowPfcPausePauseClass3MetricTag, error) + Clone() (PatternFlowArpHardwareLengthMetricTag, error) validateToAndFrom() error validateObj(vObj *validation, set_default bool) setDefault() - // Name returns string, set in PatternFlowPfcPausePauseClass3MetricTag. + // Name returns string, set in PatternFlowArpHardwareLengthMetricTag. Name() string - // SetName assigns string provided by user to PatternFlowPfcPausePauseClass3MetricTag - SetName(value string) PatternFlowPfcPausePauseClass3MetricTag - // Offset returns uint32, set in PatternFlowPfcPausePauseClass3MetricTag. + // SetName assigns string provided by user to PatternFlowArpHardwareLengthMetricTag + SetName(value string) PatternFlowArpHardwareLengthMetricTag + // Offset returns uint32, set in PatternFlowArpHardwareLengthMetricTag. Offset() uint32 - // SetOffset assigns uint32 provided by user to PatternFlowPfcPausePauseClass3MetricTag - SetOffset(value uint32) PatternFlowPfcPausePauseClass3MetricTag - // HasOffset checks if Offset has been set in PatternFlowPfcPausePauseClass3MetricTag + // SetOffset assigns uint32 provided by user to PatternFlowArpHardwareLengthMetricTag + SetOffset(value uint32) PatternFlowArpHardwareLengthMetricTag + // HasOffset checks if Offset has been set in PatternFlowArpHardwareLengthMetricTag HasOffset() bool - // Length returns uint32, set in PatternFlowPfcPausePauseClass3MetricTag. + // Length returns uint32, set in PatternFlowArpHardwareLengthMetricTag. Length() uint32 - // SetLength assigns uint32 provided by user to PatternFlowPfcPausePauseClass3MetricTag - SetLength(value uint32) PatternFlowPfcPausePauseClass3MetricTag - // HasLength checks if Length has been set in PatternFlowPfcPausePauseClass3MetricTag + // SetLength assigns uint32 provided by user to PatternFlowArpHardwareLengthMetricTag + SetLength(value uint32) PatternFlowArpHardwareLengthMetricTag + // HasLength checks if Length has been set in PatternFlowArpHardwareLengthMetricTag HasLength() bool } // Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field // Name returns a string -func (obj *patternFlowPfcPausePauseClass3MetricTag) Name() string { +func (obj *patternFlowArpHardwareLengthMetricTag) Name() string { return *obj.obj.Name } // Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field -// SetName sets the string value in the PatternFlowPfcPausePauseClass3MetricTag object -func (obj *patternFlowPfcPausePauseClass3MetricTag) SetName(value string) PatternFlowPfcPausePauseClass3MetricTag { +// SetName sets the string value in the PatternFlowArpHardwareLengthMetricTag object +func (obj *patternFlowArpHardwareLengthMetricTag) SetName(value string) PatternFlowArpHardwareLengthMetricTag { obj.obj.Name = &value return obj @@ -214293,7 +257804,7 @@ func (obj *patternFlowPfcPausePauseClass3MetricTag) SetName(value string) Patter // Offset in bits relative to start of corresponding header field // Offset returns a uint32 -func (obj *patternFlowPfcPausePauseClass3MetricTag) Offset() uint32 { +func (obj *patternFlowArpHardwareLengthMetricTag) Offset() uint32 { return *obj.obj.Offset @@ -214301,13 +257812,13 @@ func (obj *patternFlowPfcPausePauseClass3MetricTag) Offset() uint32 { // Offset in bits relative to start of corresponding header field // Offset returns a uint32 -func (obj *patternFlowPfcPausePauseClass3MetricTag) HasOffset() bool { +func (obj *patternFlowArpHardwareLengthMetricTag) HasOffset() bool { return obj.obj.Offset != nil } // Offset in bits relative to start of corresponding header field -// SetOffset sets the uint32 value in the PatternFlowPfcPausePauseClass3MetricTag object -func (obj *patternFlowPfcPausePauseClass3MetricTag) SetOffset(value uint32) PatternFlowPfcPausePauseClass3MetricTag { +// SetOffset sets the uint32 value in the PatternFlowArpHardwareLengthMetricTag object +func (obj *patternFlowArpHardwareLengthMetricTag) SetOffset(value uint32) PatternFlowArpHardwareLengthMetricTag { obj.obj.Offset = &value return obj @@ -214315,7 +257826,7 @@ func (obj *patternFlowPfcPausePauseClass3MetricTag) SetOffset(value uint32) Patt // Number of bits to track for metrics starting from configured offset of corresponding header field // Length returns a uint32 -func (obj *patternFlowPfcPausePauseClass3MetricTag) Length() uint32 { +func (obj *patternFlowArpHardwareLengthMetricTag) Length() uint32 { return *obj.obj.Length @@ -214323,83 +257834,83 @@ func (obj *patternFlowPfcPausePauseClass3MetricTag) Length() uint32 { // Number of bits to track for metrics starting from configured offset of corresponding header field // Length returns a uint32 -func (obj *patternFlowPfcPausePauseClass3MetricTag) HasLength() bool { +func (obj *patternFlowArpHardwareLengthMetricTag) HasLength() bool { return obj.obj.Length != nil } // Number of bits to track for metrics starting from configured offset of corresponding header field -// SetLength sets the uint32 value in the PatternFlowPfcPausePauseClass3MetricTag object -func (obj *patternFlowPfcPausePauseClass3MetricTag) SetLength(value uint32) PatternFlowPfcPausePauseClass3MetricTag { +// SetLength sets the uint32 value in the PatternFlowArpHardwareLengthMetricTag object +func (obj *patternFlowArpHardwareLengthMetricTag) SetLength(value uint32) PatternFlowArpHardwareLengthMetricTag { obj.obj.Length = &value return obj } -func (obj *patternFlowPfcPausePauseClass3MetricTag) validateObj(vObj *validation, set_default bool) { +func (obj *patternFlowArpHardwareLengthMetricTag) validateObj(vObj *validation, set_default bool) { if set_default { obj.setDefault() } // Name is required if obj.obj.Name == nil { - vObj.validationErrors = append(vObj.validationErrors, "Name is required field on interface PatternFlowPfcPausePauseClass3MetricTag") + vObj.validationErrors = append(vObj.validationErrors, "Name is required field on interface PatternFlowArpHardwareLengthMetricTag") } if obj.obj.Offset != nil { - if *obj.obj.Offset > 15 { + if *obj.obj.Offset > 7 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowPfcPausePauseClass3MetricTag.Offset <= 15 but Got %d", *obj.obj.Offset)) + fmt.Sprintf("0 <= PatternFlowArpHardwareLengthMetricTag.Offset <= 7 but Got %d", *obj.obj.Offset)) } } if obj.obj.Length != nil { - if *obj.obj.Length < 1 || *obj.obj.Length > 16 { + if *obj.obj.Length < 1 || *obj.obj.Length > 8 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("1 <= PatternFlowPfcPausePauseClass3MetricTag.Length <= 16 but Got %d", *obj.obj.Length)) + fmt.Sprintf("1 <= PatternFlowArpHardwareLengthMetricTag.Length <= 8 but Got %d", *obj.obj.Length)) } } } -func (obj *patternFlowPfcPausePauseClass3MetricTag) setDefault() { +func (obj *patternFlowArpHardwareLengthMetricTag) setDefault() { if obj.obj.Offset == nil { obj.SetOffset(0) } if obj.obj.Length == nil { - obj.SetLength(16) + obj.SetLength(8) } } -// ***** PatternFlowPfcPausePauseClass4Counter ***** -type patternFlowPfcPausePauseClass4Counter struct { +// ***** PatternFlowArpProtocolLengthCounter ***** +type patternFlowArpProtocolLengthCounter struct { validation - obj *otg.PatternFlowPfcPausePauseClass4Counter + obj *otg.PatternFlowArpProtocolLengthCounter } -func NewPatternFlowPfcPausePauseClass4Counter() PatternFlowPfcPausePauseClass4Counter { - obj := patternFlowPfcPausePauseClass4Counter{obj: &otg.PatternFlowPfcPausePauseClass4Counter{}} +func NewPatternFlowArpProtocolLengthCounter() PatternFlowArpProtocolLengthCounter { + obj := patternFlowArpProtocolLengthCounter{obj: &otg.PatternFlowArpProtocolLengthCounter{}} obj.setDefault() return &obj } -func (obj *patternFlowPfcPausePauseClass4Counter) Msg() *otg.PatternFlowPfcPausePauseClass4Counter { +func (obj *patternFlowArpProtocolLengthCounter) Msg() *otg.PatternFlowArpProtocolLengthCounter { return obj.obj } -func (obj *patternFlowPfcPausePauseClass4Counter) SetMsg(msg *otg.PatternFlowPfcPausePauseClass4Counter) PatternFlowPfcPausePauseClass4Counter { +func (obj *patternFlowArpProtocolLengthCounter) SetMsg(msg *otg.PatternFlowArpProtocolLengthCounter) PatternFlowArpProtocolLengthCounter { proto.Merge(obj.obj, msg) return obj } -func (obj *patternFlowPfcPausePauseClass4Counter) ToProto() (*otg.PatternFlowPfcPausePauseClass4Counter, error) { +func (obj *patternFlowArpProtocolLengthCounter) ToProto() (*otg.PatternFlowArpProtocolLengthCounter, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -214407,7 +257918,7 @@ func (obj *patternFlowPfcPausePauseClass4Counter) ToProto() (*otg.PatternFlowPfc return obj.Msg(), nil } -func (obj *patternFlowPfcPausePauseClass4Counter) FromProto(msg *otg.PatternFlowPfcPausePauseClass4Counter) (PatternFlowPfcPausePauseClass4Counter, error) { +func (obj *patternFlowArpProtocolLengthCounter) FromProto(msg *otg.PatternFlowArpProtocolLengthCounter) (PatternFlowArpProtocolLengthCounter, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -214416,7 +257927,7 @@ func (obj *patternFlowPfcPausePauseClass4Counter) FromProto(msg *otg.PatternFlow return newObj, nil } -func (obj *patternFlowPfcPausePauseClass4Counter) ToPbText() (string, error) { +func (obj *patternFlowArpProtocolLengthCounter) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -214428,7 +257939,7 @@ func (obj *patternFlowPfcPausePauseClass4Counter) ToPbText() (string, error) { return string(protoMarshal), nil } -func (obj *patternFlowPfcPausePauseClass4Counter) FromPbText(value string) error { +func (obj *patternFlowArpProtocolLengthCounter) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj @@ -214441,7 +257952,7 @@ func (obj *patternFlowPfcPausePauseClass4Counter) FromPbText(value string) error return retObj } -func (obj *patternFlowPfcPausePauseClass4Counter) ToYaml() (string, error) { +func (obj *patternFlowArpProtocolLengthCounter) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -214462,7 +257973,7 @@ func (obj *patternFlowPfcPausePauseClass4Counter) ToYaml() (string, error) { return string(data), nil } -func (obj *patternFlowPfcPausePauseClass4Counter) FromYaml(value string) error { +func (obj *patternFlowArpProtocolLengthCounter) FromYaml(value string) error { if value == "" { value = "{}" } @@ -214487,7 +257998,7 @@ func (obj *patternFlowPfcPausePauseClass4Counter) FromYaml(value string) error { return nil } -func (obj *patternFlowPfcPausePauseClass4Counter) ToJson() (string, error) { +func (obj *patternFlowArpProtocolLengthCounter) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -214505,7 +258016,7 @@ func (obj *patternFlowPfcPausePauseClass4Counter) ToJson() (string, error) { return string(data), nil } -func (obj *patternFlowPfcPausePauseClass4Counter) FromJson(value string) error { +func (obj *patternFlowArpProtocolLengthCounter) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -214526,19 +258037,19 @@ func (obj *patternFlowPfcPausePauseClass4Counter) FromJson(value string) error { return nil } -func (obj *patternFlowPfcPausePauseClass4Counter) validateToAndFrom() error { +func (obj *patternFlowArpProtocolLengthCounter) validateToAndFrom() error { // emptyVars() obj.validateObj(&obj.validation, true) return obj.validationResult() } -func (obj *patternFlowPfcPausePauseClass4Counter) Validate() error { +func (obj *patternFlowArpProtocolLengthCounter) Validate() error { // emptyVars() obj.validateObj(&obj.validation, false) return obj.validationResult() } -func (obj *patternFlowPfcPausePauseClass4Counter) String() string { +func (obj *patternFlowArpProtocolLengthCounter) String() string { str, err := obj.ToYaml() if err != nil { return err.Error() @@ -214546,12 +258057,12 @@ func (obj *patternFlowPfcPausePauseClass4Counter) String() string { return str } -func (obj *patternFlowPfcPausePauseClass4Counter) Clone() (PatternFlowPfcPausePauseClass4Counter, error) { +func (obj *patternFlowArpProtocolLengthCounter) Clone() (PatternFlowArpProtocolLengthCounter, error) { vErr := obj.Validate() if vErr != nil { return nil, vErr } - newObj := NewPatternFlowPfcPausePauseClass4Counter() + newObj := NewPatternFlowArpProtocolLengthCounter() data, err := proto.Marshal(obj.Msg()) if err != nil { return nil, err @@ -214563,63 +258074,63 @@ func (obj *patternFlowPfcPausePauseClass4Counter) Clone() (PatternFlowPfcPausePa return newObj, nil } -// PatternFlowPfcPausePauseClass4Counter is integer counter pattern -type PatternFlowPfcPausePauseClass4Counter interface { +// PatternFlowArpProtocolLengthCounter is integer counter pattern +type PatternFlowArpProtocolLengthCounter interface { Validation - // Msg marshals PatternFlowPfcPausePauseClass4Counter to protobuf object *otg.PatternFlowPfcPausePauseClass4Counter + // Msg marshals PatternFlowArpProtocolLengthCounter to protobuf object *otg.PatternFlowArpProtocolLengthCounter // and doesn't set defaults - Msg() *otg.PatternFlowPfcPausePauseClass4Counter - // SetMsg unmarshals PatternFlowPfcPausePauseClass4Counter from protobuf object *otg.PatternFlowPfcPausePauseClass4Counter + Msg() *otg.PatternFlowArpProtocolLengthCounter + // SetMsg unmarshals PatternFlowArpProtocolLengthCounter from protobuf object *otg.PatternFlowArpProtocolLengthCounter // and doesn't set defaults - SetMsg(*otg.PatternFlowPfcPausePauseClass4Counter) PatternFlowPfcPausePauseClass4Counter - // ToProto marshals PatternFlowPfcPausePauseClass4Counter to protobuf object *otg.PatternFlowPfcPausePauseClass4Counter - ToProto() (*otg.PatternFlowPfcPausePauseClass4Counter, error) - // ToPbText marshals PatternFlowPfcPausePauseClass4Counter to protobuf text + SetMsg(*otg.PatternFlowArpProtocolLengthCounter) PatternFlowArpProtocolLengthCounter + // ToProto marshals PatternFlowArpProtocolLengthCounter to protobuf object *otg.PatternFlowArpProtocolLengthCounter + ToProto() (*otg.PatternFlowArpProtocolLengthCounter, error) + // ToPbText marshals PatternFlowArpProtocolLengthCounter to protobuf text ToPbText() (string, error) - // ToYaml marshals PatternFlowPfcPausePauseClass4Counter to YAML text + // ToYaml marshals PatternFlowArpProtocolLengthCounter to YAML text ToYaml() (string, error) - // ToJson marshals PatternFlowPfcPausePauseClass4Counter to JSON text + // ToJson marshals PatternFlowArpProtocolLengthCounter to JSON text ToJson() (string, error) - // FromProto unmarshals PatternFlowPfcPausePauseClass4Counter from protobuf object *otg.PatternFlowPfcPausePauseClass4Counter - FromProto(msg *otg.PatternFlowPfcPausePauseClass4Counter) (PatternFlowPfcPausePauseClass4Counter, error) - // FromPbText unmarshals PatternFlowPfcPausePauseClass4Counter from protobuf text + // FromProto unmarshals PatternFlowArpProtocolLengthCounter from protobuf object *otg.PatternFlowArpProtocolLengthCounter + FromProto(msg *otg.PatternFlowArpProtocolLengthCounter) (PatternFlowArpProtocolLengthCounter, error) + // FromPbText unmarshals PatternFlowArpProtocolLengthCounter from protobuf text FromPbText(value string) error - // FromYaml unmarshals PatternFlowPfcPausePauseClass4Counter from YAML text + // FromYaml unmarshals PatternFlowArpProtocolLengthCounter from YAML text FromYaml(value string) error - // FromJson unmarshals PatternFlowPfcPausePauseClass4Counter from JSON text + // FromJson unmarshals PatternFlowArpProtocolLengthCounter from JSON text FromJson(value string) error - // Validate validates PatternFlowPfcPausePauseClass4Counter + // Validate validates PatternFlowArpProtocolLengthCounter Validate() error // A stringer function String() string // Clones the object - Clone() (PatternFlowPfcPausePauseClass4Counter, error) + Clone() (PatternFlowArpProtocolLengthCounter, error) validateToAndFrom() error validateObj(vObj *validation, set_default bool) setDefault() - // Start returns uint32, set in PatternFlowPfcPausePauseClass4Counter. + // Start returns uint32, set in PatternFlowArpProtocolLengthCounter. Start() uint32 - // SetStart assigns uint32 provided by user to PatternFlowPfcPausePauseClass4Counter - SetStart(value uint32) PatternFlowPfcPausePauseClass4Counter - // HasStart checks if Start has been set in PatternFlowPfcPausePauseClass4Counter + // SetStart assigns uint32 provided by user to PatternFlowArpProtocolLengthCounter + SetStart(value uint32) PatternFlowArpProtocolLengthCounter + // HasStart checks if Start has been set in PatternFlowArpProtocolLengthCounter HasStart() bool - // Step returns uint32, set in PatternFlowPfcPausePauseClass4Counter. + // Step returns uint32, set in PatternFlowArpProtocolLengthCounter. Step() uint32 - // SetStep assigns uint32 provided by user to PatternFlowPfcPausePauseClass4Counter - SetStep(value uint32) PatternFlowPfcPausePauseClass4Counter - // HasStep checks if Step has been set in PatternFlowPfcPausePauseClass4Counter + // SetStep assigns uint32 provided by user to PatternFlowArpProtocolLengthCounter + SetStep(value uint32) PatternFlowArpProtocolLengthCounter + // HasStep checks if Step has been set in PatternFlowArpProtocolLengthCounter HasStep() bool - // Count returns uint32, set in PatternFlowPfcPausePauseClass4Counter. + // Count returns uint32, set in PatternFlowArpProtocolLengthCounter. Count() uint32 - // SetCount assigns uint32 provided by user to PatternFlowPfcPausePauseClass4Counter - SetCount(value uint32) PatternFlowPfcPausePauseClass4Counter - // HasCount checks if Count has been set in PatternFlowPfcPausePauseClass4Counter + // SetCount assigns uint32 provided by user to PatternFlowArpProtocolLengthCounter + SetCount(value uint32) PatternFlowArpProtocolLengthCounter + // HasCount checks if Count has been set in PatternFlowArpProtocolLengthCounter HasCount() bool } // description is TBD // Start returns a uint32 -func (obj *patternFlowPfcPausePauseClass4Counter) Start() uint32 { +func (obj *patternFlowArpProtocolLengthCounter) Start() uint32 { return *obj.obj.Start @@ -214627,13 +258138,13 @@ func (obj *patternFlowPfcPausePauseClass4Counter) Start() uint32 { // description is TBD // Start returns a uint32 -func (obj *patternFlowPfcPausePauseClass4Counter) HasStart() bool { +func (obj *patternFlowArpProtocolLengthCounter) HasStart() bool { return obj.obj.Start != nil } // description is TBD -// SetStart sets the uint32 value in the PatternFlowPfcPausePauseClass4Counter object -func (obj *patternFlowPfcPausePauseClass4Counter) SetStart(value uint32) PatternFlowPfcPausePauseClass4Counter { +// SetStart sets the uint32 value in the PatternFlowArpProtocolLengthCounter object +func (obj *patternFlowArpProtocolLengthCounter) SetStart(value uint32) PatternFlowArpProtocolLengthCounter { obj.obj.Start = &value return obj @@ -214641,7 +258152,7 @@ func (obj *patternFlowPfcPausePauseClass4Counter) SetStart(value uint32) Pattern // description is TBD // Step returns a uint32 -func (obj *patternFlowPfcPausePauseClass4Counter) Step() uint32 { +func (obj *patternFlowArpProtocolLengthCounter) Step() uint32 { return *obj.obj.Step @@ -214649,13 +258160,13 @@ func (obj *patternFlowPfcPausePauseClass4Counter) Step() uint32 { // description is TBD // Step returns a uint32 -func (obj *patternFlowPfcPausePauseClass4Counter) HasStep() bool { +func (obj *patternFlowArpProtocolLengthCounter) HasStep() bool { return obj.obj.Step != nil } // description is TBD -// SetStep sets the uint32 value in the PatternFlowPfcPausePauseClass4Counter object -func (obj *patternFlowPfcPausePauseClass4Counter) SetStep(value uint32) PatternFlowPfcPausePauseClass4Counter { +// SetStep sets the uint32 value in the PatternFlowArpProtocolLengthCounter object +func (obj *patternFlowArpProtocolLengthCounter) SetStep(value uint32) PatternFlowArpProtocolLengthCounter { obj.obj.Step = &value return obj @@ -214663,7 +258174,7 @@ func (obj *patternFlowPfcPausePauseClass4Counter) SetStep(value uint32) PatternF // description is TBD // Count returns a uint32 -func (obj *patternFlowPfcPausePauseClass4Counter) Count() uint32 { +func (obj *patternFlowArpProtocolLengthCounter) Count() uint32 { return *obj.obj.Count @@ -214671,58 +258182,58 @@ func (obj *patternFlowPfcPausePauseClass4Counter) Count() uint32 { // description is TBD // Count returns a uint32 -func (obj *patternFlowPfcPausePauseClass4Counter) HasCount() bool { +func (obj *patternFlowArpProtocolLengthCounter) HasCount() bool { return obj.obj.Count != nil } // description is TBD -// SetCount sets the uint32 value in the PatternFlowPfcPausePauseClass4Counter object -func (obj *patternFlowPfcPausePauseClass4Counter) SetCount(value uint32) PatternFlowPfcPausePauseClass4Counter { +// SetCount sets the uint32 value in the PatternFlowArpProtocolLengthCounter object +func (obj *patternFlowArpProtocolLengthCounter) SetCount(value uint32) PatternFlowArpProtocolLengthCounter { obj.obj.Count = &value return obj } -func (obj *patternFlowPfcPausePauseClass4Counter) validateObj(vObj *validation, set_default bool) { +func (obj *patternFlowArpProtocolLengthCounter) validateObj(vObj *validation, set_default bool) { if set_default { obj.setDefault() } if obj.obj.Start != nil { - if *obj.obj.Start > 65535 { + if *obj.obj.Start > 255 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowPfcPausePauseClass4Counter.Start <= 65535 but Got %d", *obj.obj.Start)) + fmt.Sprintf("0 <= PatternFlowArpProtocolLengthCounter.Start <= 255 but Got %d", *obj.obj.Start)) } } if obj.obj.Step != nil { - if *obj.obj.Step > 65535 { + if *obj.obj.Step > 255 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowPfcPausePauseClass4Counter.Step <= 65535 but Got %d", *obj.obj.Step)) + fmt.Sprintf("0 <= PatternFlowArpProtocolLengthCounter.Step <= 255 but Got %d", *obj.obj.Step)) } } if obj.obj.Count != nil { - if *obj.obj.Count > 65535 { + if *obj.obj.Count > 255 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowPfcPausePauseClass4Counter.Count <= 65535 but Got %d", *obj.obj.Count)) + fmt.Sprintf("0 <= PatternFlowArpProtocolLengthCounter.Count <= 255 but Got %d", *obj.obj.Count)) } } } -func (obj *patternFlowPfcPausePauseClass4Counter) setDefault() { +func (obj *patternFlowArpProtocolLengthCounter) setDefault() { if obj.obj.Start == nil { - obj.SetStart(0) + obj.SetStart(4) } if obj.obj.Step == nil { obj.SetStep(1) @@ -214733,29 +258244,29 @@ func (obj *patternFlowPfcPausePauseClass4Counter) setDefault() { } -// ***** PatternFlowPfcPausePauseClass4MetricTag ***** -type patternFlowPfcPausePauseClass4MetricTag struct { +// ***** PatternFlowArpProtocolLengthMetricTag ***** +type patternFlowArpProtocolLengthMetricTag struct { validation - obj *otg.PatternFlowPfcPausePauseClass4MetricTag + obj *otg.PatternFlowArpProtocolLengthMetricTag } -func NewPatternFlowPfcPausePauseClass4MetricTag() PatternFlowPfcPausePauseClass4MetricTag { - obj := patternFlowPfcPausePauseClass4MetricTag{obj: &otg.PatternFlowPfcPausePauseClass4MetricTag{}} +func NewPatternFlowArpProtocolLengthMetricTag() PatternFlowArpProtocolLengthMetricTag { + obj := patternFlowArpProtocolLengthMetricTag{obj: &otg.PatternFlowArpProtocolLengthMetricTag{}} obj.setDefault() return &obj } -func (obj *patternFlowPfcPausePauseClass4MetricTag) Msg() *otg.PatternFlowPfcPausePauseClass4MetricTag { +func (obj *patternFlowArpProtocolLengthMetricTag) Msg() *otg.PatternFlowArpProtocolLengthMetricTag { return obj.obj } -func (obj *patternFlowPfcPausePauseClass4MetricTag) SetMsg(msg *otg.PatternFlowPfcPausePauseClass4MetricTag) PatternFlowPfcPausePauseClass4MetricTag { +func (obj *patternFlowArpProtocolLengthMetricTag) SetMsg(msg *otg.PatternFlowArpProtocolLengthMetricTag) PatternFlowArpProtocolLengthMetricTag { proto.Merge(obj.obj, msg) return obj } -func (obj *patternFlowPfcPausePauseClass4MetricTag) ToProto() (*otg.PatternFlowPfcPausePauseClass4MetricTag, error) { +func (obj *patternFlowArpProtocolLengthMetricTag) ToProto() (*otg.PatternFlowArpProtocolLengthMetricTag, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -214763,7 +258274,7 @@ func (obj *patternFlowPfcPausePauseClass4MetricTag) ToProto() (*otg.PatternFlowP return obj.Msg(), nil } -func (obj *patternFlowPfcPausePauseClass4MetricTag) FromProto(msg *otg.PatternFlowPfcPausePauseClass4MetricTag) (PatternFlowPfcPausePauseClass4MetricTag, error) { +func (obj *patternFlowArpProtocolLengthMetricTag) FromProto(msg *otg.PatternFlowArpProtocolLengthMetricTag) (PatternFlowArpProtocolLengthMetricTag, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -214772,7 +258283,7 @@ func (obj *patternFlowPfcPausePauseClass4MetricTag) FromProto(msg *otg.PatternFl return newObj, nil } -func (obj *patternFlowPfcPausePauseClass4MetricTag) ToPbText() (string, error) { +func (obj *patternFlowArpProtocolLengthMetricTag) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -214784,7 +258295,7 @@ func (obj *patternFlowPfcPausePauseClass4MetricTag) ToPbText() (string, error) { return string(protoMarshal), nil } -func (obj *patternFlowPfcPausePauseClass4MetricTag) FromPbText(value string) error { +func (obj *patternFlowArpProtocolLengthMetricTag) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj @@ -214797,7 +258308,7 @@ func (obj *patternFlowPfcPausePauseClass4MetricTag) FromPbText(value string) err return retObj } -func (obj *patternFlowPfcPausePauseClass4MetricTag) ToYaml() (string, error) { +func (obj *patternFlowArpProtocolLengthMetricTag) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -214818,7 +258329,7 @@ func (obj *patternFlowPfcPausePauseClass4MetricTag) ToYaml() (string, error) { return string(data), nil } -func (obj *patternFlowPfcPausePauseClass4MetricTag) FromYaml(value string) error { +func (obj *patternFlowArpProtocolLengthMetricTag) FromYaml(value string) error { if value == "" { value = "{}" } @@ -214843,7 +258354,7 @@ func (obj *patternFlowPfcPausePauseClass4MetricTag) FromYaml(value string) error return nil } -func (obj *patternFlowPfcPausePauseClass4MetricTag) ToJson() (string, error) { +func (obj *patternFlowArpProtocolLengthMetricTag) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -214861,7 +258372,7 @@ func (obj *patternFlowPfcPausePauseClass4MetricTag) ToJson() (string, error) { return string(data), nil } -func (obj *patternFlowPfcPausePauseClass4MetricTag) FromJson(value string) error { +func (obj *patternFlowArpProtocolLengthMetricTag) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -214882,19 +258393,19 @@ func (obj *patternFlowPfcPausePauseClass4MetricTag) FromJson(value string) error return nil } -func (obj *patternFlowPfcPausePauseClass4MetricTag) validateToAndFrom() error { +func (obj *patternFlowArpProtocolLengthMetricTag) validateToAndFrom() error { // emptyVars() obj.validateObj(&obj.validation, true) return obj.validationResult() } -func (obj *patternFlowPfcPausePauseClass4MetricTag) Validate() error { +func (obj *patternFlowArpProtocolLengthMetricTag) Validate() error { // emptyVars() obj.validateObj(&obj.validation, false) return obj.validationResult() } -func (obj *patternFlowPfcPausePauseClass4MetricTag) String() string { +func (obj *patternFlowArpProtocolLengthMetricTag) String() string { str, err := obj.ToYaml() if err != nil { return err.Error() @@ -214902,12 +258413,12 @@ func (obj *patternFlowPfcPausePauseClass4MetricTag) String() string { return str } -func (obj *patternFlowPfcPausePauseClass4MetricTag) Clone() (PatternFlowPfcPausePauseClass4MetricTag, error) { +func (obj *patternFlowArpProtocolLengthMetricTag) Clone() (PatternFlowArpProtocolLengthMetricTag, error) { vErr := obj.Validate() if vErr != nil { return nil, vErr } - newObj := NewPatternFlowPfcPausePauseClass4MetricTag() + newObj := NewPatternFlowArpProtocolLengthMetricTag() data, err := proto.Marshal(obj.Msg()) if err != nil { return nil, err @@ -214919,69 +258430,69 @@ func (obj *patternFlowPfcPausePauseClass4MetricTag) Clone() (PatternFlowPfcPause return newObj, nil } -// PatternFlowPfcPausePauseClass4MetricTag is metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. -type PatternFlowPfcPausePauseClass4MetricTag interface { +// PatternFlowArpProtocolLengthMetricTag is metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. +type PatternFlowArpProtocolLengthMetricTag interface { Validation - // Msg marshals PatternFlowPfcPausePauseClass4MetricTag to protobuf object *otg.PatternFlowPfcPausePauseClass4MetricTag + // Msg marshals PatternFlowArpProtocolLengthMetricTag to protobuf object *otg.PatternFlowArpProtocolLengthMetricTag // and doesn't set defaults - Msg() *otg.PatternFlowPfcPausePauseClass4MetricTag - // SetMsg unmarshals PatternFlowPfcPausePauseClass4MetricTag from protobuf object *otg.PatternFlowPfcPausePauseClass4MetricTag + Msg() *otg.PatternFlowArpProtocolLengthMetricTag + // SetMsg unmarshals PatternFlowArpProtocolLengthMetricTag from protobuf object *otg.PatternFlowArpProtocolLengthMetricTag // and doesn't set defaults - SetMsg(*otg.PatternFlowPfcPausePauseClass4MetricTag) PatternFlowPfcPausePauseClass4MetricTag - // ToProto marshals PatternFlowPfcPausePauseClass4MetricTag to protobuf object *otg.PatternFlowPfcPausePauseClass4MetricTag - ToProto() (*otg.PatternFlowPfcPausePauseClass4MetricTag, error) - // ToPbText marshals PatternFlowPfcPausePauseClass4MetricTag to protobuf text + SetMsg(*otg.PatternFlowArpProtocolLengthMetricTag) PatternFlowArpProtocolLengthMetricTag + // ToProto marshals PatternFlowArpProtocolLengthMetricTag to protobuf object *otg.PatternFlowArpProtocolLengthMetricTag + ToProto() (*otg.PatternFlowArpProtocolLengthMetricTag, error) + // ToPbText marshals PatternFlowArpProtocolLengthMetricTag to protobuf text ToPbText() (string, error) - // ToYaml marshals PatternFlowPfcPausePauseClass4MetricTag to YAML text + // ToYaml marshals PatternFlowArpProtocolLengthMetricTag to YAML text ToYaml() (string, error) - // ToJson marshals PatternFlowPfcPausePauseClass4MetricTag to JSON text + // ToJson marshals PatternFlowArpProtocolLengthMetricTag to JSON text ToJson() (string, error) - // FromProto unmarshals PatternFlowPfcPausePauseClass4MetricTag from protobuf object *otg.PatternFlowPfcPausePauseClass4MetricTag - FromProto(msg *otg.PatternFlowPfcPausePauseClass4MetricTag) (PatternFlowPfcPausePauseClass4MetricTag, error) - // FromPbText unmarshals PatternFlowPfcPausePauseClass4MetricTag from protobuf text + // FromProto unmarshals PatternFlowArpProtocolLengthMetricTag from protobuf object *otg.PatternFlowArpProtocolLengthMetricTag + FromProto(msg *otg.PatternFlowArpProtocolLengthMetricTag) (PatternFlowArpProtocolLengthMetricTag, error) + // FromPbText unmarshals PatternFlowArpProtocolLengthMetricTag from protobuf text FromPbText(value string) error - // FromYaml unmarshals PatternFlowPfcPausePauseClass4MetricTag from YAML text + // FromYaml unmarshals PatternFlowArpProtocolLengthMetricTag from YAML text FromYaml(value string) error - // FromJson unmarshals PatternFlowPfcPausePauseClass4MetricTag from JSON text + // FromJson unmarshals PatternFlowArpProtocolLengthMetricTag from JSON text FromJson(value string) error - // Validate validates PatternFlowPfcPausePauseClass4MetricTag + // Validate validates PatternFlowArpProtocolLengthMetricTag Validate() error // A stringer function String() string // Clones the object - Clone() (PatternFlowPfcPausePauseClass4MetricTag, error) + Clone() (PatternFlowArpProtocolLengthMetricTag, error) validateToAndFrom() error validateObj(vObj *validation, set_default bool) setDefault() - // Name returns string, set in PatternFlowPfcPausePauseClass4MetricTag. + // Name returns string, set in PatternFlowArpProtocolLengthMetricTag. Name() string - // SetName assigns string provided by user to PatternFlowPfcPausePauseClass4MetricTag - SetName(value string) PatternFlowPfcPausePauseClass4MetricTag - // Offset returns uint32, set in PatternFlowPfcPausePauseClass4MetricTag. + // SetName assigns string provided by user to PatternFlowArpProtocolLengthMetricTag + SetName(value string) PatternFlowArpProtocolLengthMetricTag + // Offset returns uint32, set in PatternFlowArpProtocolLengthMetricTag. Offset() uint32 - // SetOffset assigns uint32 provided by user to PatternFlowPfcPausePauseClass4MetricTag - SetOffset(value uint32) PatternFlowPfcPausePauseClass4MetricTag - // HasOffset checks if Offset has been set in PatternFlowPfcPausePauseClass4MetricTag + // SetOffset assigns uint32 provided by user to PatternFlowArpProtocolLengthMetricTag + SetOffset(value uint32) PatternFlowArpProtocolLengthMetricTag + // HasOffset checks if Offset has been set in PatternFlowArpProtocolLengthMetricTag HasOffset() bool - // Length returns uint32, set in PatternFlowPfcPausePauseClass4MetricTag. + // Length returns uint32, set in PatternFlowArpProtocolLengthMetricTag. Length() uint32 - // SetLength assigns uint32 provided by user to PatternFlowPfcPausePauseClass4MetricTag - SetLength(value uint32) PatternFlowPfcPausePauseClass4MetricTag - // HasLength checks if Length has been set in PatternFlowPfcPausePauseClass4MetricTag + // SetLength assigns uint32 provided by user to PatternFlowArpProtocolLengthMetricTag + SetLength(value uint32) PatternFlowArpProtocolLengthMetricTag + // HasLength checks if Length has been set in PatternFlowArpProtocolLengthMetricTag HasLength() bool } // Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field // Name returns a string -func (obj *patternFlowPfcPausePauseClass4MetricTag) Name() string { +func (obj *patternFlowArpProtocolLengthMetricTag) Name() string { return *obj.obj.Name } // Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field -// SetName sets the string value in the PatternFlowPfcPausePauseClass4MetricTag object -func (obj *patternFlowPfcPausePauseClass4MetricTag) SetName(value string) PatternFlowPfcPausePauseClass4MetricTag { +// SetName sets the string value in the PatternFlowArpProtocolLengthMetricTag object +func (obj *patternFlowArpProtocolLengthMetricTag) SetName(value string) PatternFlowArpProtocolLengthMetricTag { obj.obj.Name = &value return obj @@ -214989,7 +258500,7 @@ func (obj *patternFlowPfcPausePauseClass4MetricTag) SetName(value string) Patter // Offset in bits relative to start of corresponding header field // Offset returns a uint32 -func (obj *patternFlowPfcPausePauseClass4MetricTag) Offset() uint32 { +func (obj *patternFlowArpProtocolLengthMetricTag) Offset() uint32 { return *obj.obj.Offset @@ -214997,13 +258508,13 @@ func (obj *patternFlowPfcPausePauseClass4MetricTag) Offset() uint32 { // Offset in bits relative to start of corresponding header field // Offset returns a uint32 -func (obj *patternFlowPfcPausePauseClass4MetricTag) HasOffset() bool { +func (obj *patternFlowArpProtocolLengthMetricTag) HasOffset() bool { return obj.obj.Offset != nil } // Offset in bits relative to start of corresponding header field -// SetOffset sets the uint32 value in the PatternFlowPfcPausePauseClass4MetricTag object -func (obj *patternFlowPfcPausePauseClass4MetricTag) SetOffset(value uint32) PatternFlowPfcPausePauseClass4MetricTag { +// SetOffset sets the uint32 value in the PatternFlowArpProtocolLengthMetricTag object +func (obj *patternFlowArpProtocolLengthMetricTag) SetOffset(value uint32) PatternFlowArpProtocolLengthMetricTag { obj.obj.Offset = &value return obj @@ -215011,7 +258522,7 @@ func (obj *patternFlowPfcPausePauseClass4MetricTag) SetOffset(value uint32) Patt // Number of bits to track for metrics starting from configured offset of corresponding header field // Length returns a uint32 -func (obj *patternFlowPfcPausePauseClass4MetricTag) Length() uint32 { +func (obj *patternFlowArpProtocolLengthMetricTag) Length() uint32 { return *obj.obj.Length @@ -215019,83 +258530,83 @@ func (obj *patternFlowPfcPausePauseClass4MetricTag) Length() uint32 { // Number of bits to track for metrics starting from configured offset of corresponding header field // Length returns a uint32 -func (obj *patternFlowPfcPausePauseClass4MetricTag) HasLength() bool { +func (obj *patternFlowArpProtocolLengthMetricTag) HasLength() bool { return obj.obj.Length != nil } // Number of bits to track for metrics starting from configured offset of corresponding header field -// SetLength sets the uint32 value in the PatternFlowPfcPausePauseClass4MetricTag object -func (obj *patternFlowPfcPausePauseClass4MetricTag) SetLength(value uint32) PatternFlowPfcPausePauseClass4MetricTag { +// SetLength sets the uint32 value in the PatternFlowArpProtocolLengthMetricTag object +func (obj *patternFlowArpProtocolLengthMetricTag) SetLength(value uint32) PatternFlowArpProtocolLengthMetricTag { obj.obj.Length = &value return obj } -func (obj *patternFlowPfcPausePauseClass4MetricTag) validateObj(vObj *validation, set_default bool) { +func (obj *patternFlowArpProtocolLengthMetricTag) validateObj(vObj *validation, set_default bool) { if set_default { obj.setDefault() } // Name is required if obj.obj.Name == nil { - vObj.validationErrors = append(vObj.validationErrors, "Name is required field on interface PatternFlowPfcPausePauseClass4MetricTag") + vObj.validationErrors = append(vObj.validationErrors, "Name is required field on interface PatternFlowArpProtocolLengthMetricTag") } if obj.obj.Offset != nil { - if *obj.obj.Offset > 15 { + if *obj.obj.Offset > 7 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowPfcPausePauseClass4MetricTag.Offset <= 15 but Got %d", *obj.obj.Offset)) + fmt.Sprintf("0 <= PatternFlowArpProtocolLengthMetricTag.Offset <= 7 but Got %d", *obj.obj.Offset)) } } if obj.obj.Length != nil { - if *obj.obj.Length < 1 || *obj.obj.Length > 16 { + if *obj.obj.Length < 1 || *obj.obj.Length > 8 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("1 <= PatternFlowPfcPausePauseClass4MetricTag.Length <= 16 but Got %d", *obj.obj.Length)) + fmt.Sprintf("1 <= PatternFlowArpProtocolLengthMetricTag.Length <= 8 but Got %d", *obj.obj.Length)) } } } -func (obj *patternFlowPfcPausePauseClass4MetricTag) setDefault() { +func (obj *patternFlowArpProtocolLengthMetricTag) setDefault() { if obj.obj.Offset == nil { obj.SetOffset(0) } if obj.obj.Length == nil { - obj.SetLength(16) + obj.SetLength(8) } } -// ***** PatternFlowPfcPausePauseClass5Counter ***** -type patternFlowPfcPausePauseClass5Counter struct { +// ***** PatternFlowArpOperationCounter ***** +type patternFlowArpOperationCounter struct { validation - obj *otg.PatternFlowPfcPausePauseClass5Counter + obj *otg.PatternFlowArpOperationCounter } -func NewPatternFlowPfcPausePauseClass5Counter() PatternFlowPfcPausePauseClass5Counter { - obj := patternFlowPfcPausePauseClass5Counter{obj: &otg.PatternFlowPfcPausePauseClass5Counter{}} +func NewPatternFlowArpOperationCounter() PatternFlowArpOperationCounter { + obj := patternFlowArpOperationCounter{obj: &otg.PatternFlowArpOperationCounter{}} obj.setDefault() return &obj } -func (obj *patternFlowPfcPausePauseClass5Counter) Msg() *otg.PatternFlowPfcPausePauseClass5Counter { +func (obj *patternFlowArpOperationCounter) Msg() *otg.PatternFlowArpOperationCounter { return obj.obj } -func (obj *patternFlowPfcPausePauseClass5Counter) SetMsg(msg *otg.PatternFlowPfcPausePauseClass5Counter) PatternFlowPfcPausePauseClass5Counter { +func (obj *patternFlowArpOperationCounter) SetMsg(msg *otg.PatternFlowArpOperationCounter) PatternFlowArpOperationCounter { proto.Merge(obj.obj, msg) return obj } -func (obj *patternFlowPfcPausePauseClass5Counter) ToProto() (*otg.PatternFlowPfcPausePauseClass5Counter, error) { +func (obj *patternFlowArpOperationCounter) ToProto() (*otg.PatternFlowArpOperationCounter, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -215103,7 +258614,7 @@ func (obj *patternFlowPfcPausePauseClass5Counter) ToProto() (*otg.PatternFlowPfc return obj.Msg(), nil } -func (obj *patternFlowPfcPausePauseClass5Counter) FromProto(msg *otg.PatternFlowPfcPausePauseClass5Counter) (PatternFlowPfcPausePauseClass5Counter, error) { +func (obj *patternFlowArpOperationCounter) FromProto(msg *otg.PatternFlowArpOperationCounter) (PatternFlowArpOperationCounter, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -215112,7 +258623,7 @@ func (obj *patternFlowPfcPausePauseClass5Counter) FromProto(msg *otg.PatternFlow return newObj, nil } -func (obj *patternFlowPfcPausePauseClass5Counter) ToPbText() (string, error) { +func (obj *patternFlowArpOperationCounter) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -215124,7 +258635,7 @@ func (obj *patternFlowPfcPausePauseClass5Counter) ToPbText() (string, error) { return string(protoMarshal), nil } -func (obj *patternFlowPfcPausePauseClass5Counter) FromPbText(value string) error { +func (obj *patternFlowArpOperationCounter) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj @@ -215137,7 +258648,7 @@ func (obj *patternFlowPfcPausePauseClass5Counter) FromPbText(value string) error return retObj } -func (obj *patternFlowPfcPausePauseClass5Counter) ToYaml() (string, error) { +func (obj *patternFlowArpOperationCounter) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -215158,7 +258669,7 @@ func (obj *patternFlowPfcPausePauseClass5Counter) ToYaml() (string, error) { return string(data), nil } -func (obj *patternFlowPfcPausePauseClass5Counter) FromYaml(value string) error { +func (obj *patternFlowArpOperationCounter) FromYaml(value string) error { if value == "" { value = "{}" } @@ -215183,7 +258694,7 @@ func (obj *patternFlowPfcPausePauseClass5Counter) FromYaml(value string) error { return nil } -func (obj *patternFlowPfcPausePauseClass5Counter) ToJson() (string, error) { +func (obj *patternFlowArpOperationCounter) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -215201,7 +258712,7 @@ func (obj *patternFlowPfcPausePauseClass5Counter) ToJson() (string, error) { return string(data), nil } -func (obj *patternFlowPfcPausePauseClass5Counter) FromJson(value string) error { +func (obj *patternFlowArpOperationCounter) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -215222,19 +258733,19 @@ func (obj *patternFlowPfcPausePauseClass5Counter) FromJson(value string) error { return nil } -func (obj *patternFlowPfcPausePauseClass5Counter) validateToAndFrom() error { +func (obj *patternFlowArpOperationCounter) validateToAndFrom() error { // emptyVars() obj.validateObj(&obj.validation, true) return obj.validationResult() } -func (obj *patternFlowPfcPausePauseClass5Counter) Validate() error { +func (obj *patternFlowArpOperationCounter) Validate() error { // emptyVars() obj.validateObj(&obj.validation, false) return obj.validationResult() } -func (obj *patternFlowPfcPausePauseClass5Counter) String() string { +func (obj *patternFlowArpOperationCounter) String() string { str, err := obj.ToYaml() if err != nil { return err.Error() @@ -215242,12 +258753,12 @@ func (obj *patternFlowPfcPausePauseClass5Counter) String() string { return str } -func (obj *patternFlowPfcPausePauseClass5Counter) Clone() (PatternFlowPfcPausePauseClass5Counter, error) { +func (obj *patternFlowArpOperationCounter) Clone() (PatternFlowArpOperationCounter, error) { vErr := obj.Validate() if vErr != nil { return nil, vErr } - newObj := NewPatternFlowPfcPausePauseClass5Counter() + newObj := NewPatternFlowArpOperationCounter() data, err := proto.Marshal(obj.Msg()) if err != nil { return nil, err @@ -215259,63 +258770,63 @@ func (obj *patternFlowPfcPausePauseClass5Counter) Clone() (PatternFlowPfcPausePa return newObj, nil } -// PatternFlowPfcPausePauseClass5Counter is integer counter pattern -type PatternFlowPfcPausePauseClass5Counter interface { +// PatternFlowArpOperationCounter is integer counter pattern +type PatternFlowArpOperationCounter interface { Validation - // Msg marshals PatternFlowPfcPausePauseClass5Counter to protobuf object *otg.PatternFlowPfcPausePauseClass5Counter + // Msg marshals PatternFlowArpOperationCounter to protobuf object *otg.PatternFlowArpOperationCounter // and doesn't set defaults - Msg() *otg.PatternFlowPfcPausePauseClass5Counter - // SetMsg unmarshals PatternFlowPfcPausePauseClass5Counter from protobuf object *otg.PatternFlowPfcPausePauseClass5Counter + Msg() *otg.PatternFlowArpOperationCounter + // SetMsg unmarshals PatternFlowArpOperationCounter from protobuf object *otg.PatternFlowArpOperationCounter // and doesn't set defaults - SetMsg(*otg.PatternFlowPfcPausePauseClass5Counter) PatternFlowPfcPausePauseClass5Counter - // ToProto marshals PatternFlowPfcPausePauseClass5Counter to protobuf object *otg.PatternFlowPfcPausePauseClass5Counter - ToProto() (*otg.PatternFlowPfcPausePauseClass5Counter, error) - // ToPbText marshals PatternFlowPfcPausePauseClass5Counter to protobuf text + SetMsg(*otg.PatternFlowArpOperationCounter) PatternFlowArpOperationCounter + // ToProto marshals PatternFlowArpOperationCounter to protobuf object *otg.PatternFlowArpOperationCounter + ToProto() (*otg.PatternFlowArpOperationCounter, error) + // ToPbText marshals PatternFlowArpOperationCounter to protobuf text ToPbText() (string, error) - // ToYaml marshals PatternFlowPfcPausePauseClass5Counter to YAML text + // ToYaml marshals PatternFlowArpOperationCounter to YAML text ToYaml() (string, error) - // ToJson marshals PatternFlowPfcPausePauseClass5Counter to JSON text + // ToJson marshals PatternFlowArpOperationCounter to JSON text ToJson() (string, error) - // FromProto unmarshals PatternFlowPfcPausePauseClass5Counter from protobuf object *otg.PatternFlowPfcPausePauseClass5Counter - FromProto(msg *otg.PatternFlowPfcPausePauseClass5Counter) (PatternFlowPfcPausePauseClass5Counter, error) - // FromPbText unmarshals PatternFlowPfcPausePauseClass5Counter from protobuf text + // FromProto unmarshals PatternFlowArpOperationCounter from protobuf object *otg.PatternFlowArpOperationCounter + FromProto(msg *otg.PatternFlowArpOperationCounter) (PatternFlowArpOperationCounter, error) + // FromPbText unmarshals PatternFlowArpOperationCounter from protobuf text FromPbText(value string) error - // FromYaml unmarshals PatternFlowPfcPausePauseClass5Counter from YAML text + // FromYaml unmarshals PatternFlowArpOperationCounter from YAML text FromYaml(value string) error - // FromJson unmarshals PatternFlowPfcPausePauseClass5Counter from JSON text + // FromJson unmarshals PatternFlowArpOperationCounter from JSON text FromJson(value string) error - // Validate validates PatternFlowPfcPausePauseClass5Counter + // Validate validates PatternFlowArpOperationCounter Validate() error // A stringer function String() string // Clones the object - Clone() (PatternFlowPfcPausePauseClass5Counter, error) + Clone() (PatternFlowArpOperationCounter, error) validateToAndFrom() error validateObj(vObj *validation, set_default bool) setDefault() - // Start returns uint32, set in PatternFlowPfcPausePauseClass5Counter. + // Start returns uint32, set in PatternFlowArpOperationCounter. Start() uint32 - // SetStart assigns uint32 provided by user to PatternFlowPfcPausePauseClass5Counter - SetStart(value uint32) PatternFlowPfcPausePauseClass5Counter - // HasStart checks if Start has been set in PatternFlowPfcPausePauseClass5Counter + // SetStart assigns uint32 provided by user to PatternFlowArpOperationCounter + SetStart(value uint32) PatternFlowArpOperationCounter + // HasStart checks if Start has been set in PatternFlowArpOperationCounter HasStart() bool - // Step returns uint32, set in PatternFlowPfcPausePauseClass5Counter. + // Step returns uint32, set in PatternFlowArpOperationCounter. Step() uint32 - // SetStep assigns uint32 provided by user to PatternFlowPfcPausePauseClass5Counter - SetStep(value uint32) PatternFlowPfcPausePauseClass5Counter - // HasStep checks if Step has been set in PatternFlowPfcPausePauseClass5Counter + // SetStep assigns uint32 provided by user to PatternFlowArpOperationCounter + SetStep(value uint32) PatternFlowArpOperationCounter + // HasStep checks if Step has been set in PatternFlowArpOperationCounter HasStep() bool - // Count returns uint32, set in PatternFlowPfcPausePauseClass5Counter. + // Count returns uint32, set in PatternFlowArpOperationCounter. Count() uint32 - // SetCount assigns uint32 provided by user to PatternFlowPfcPausePauseClass5Counter - SetCount(value uint32) PatternFlowPfcPausePauseClass5Counter - // HasCount checks if Count has been set in PatternFlowPfcPausePauseClass5Counter + // SetCount assigns uint32 provided by user to PatternFlowArpOperationCounter + SetCount(value uint32) PatternFlowArpOperationCounter + // HasCount checks if Count has been set in PatternFlowArpOperationCounter HasCount() bool } // description is TBD // Start returns a uint32 -func (obj *patternFlowPfcPausePauseClass5Counter) Start() uint32 { +func (obj *patternFlowArpOperationCounter) Start() uint32 { return *obj.obj.Start @@ -215323,13 +258834,13 @@ func (obj *patternFlowPfcPausePauseClass5Counter) Start() uint32 { // description is TBD // Start returns a uint32 -func (obj *patternFlowPfcPausePauseClass5Counter) HasStart() bool { +func (obj *patternFlowArpOperationCounter) HasStart() bool { return obj.obj.Start != nil } // description is TBD -// SetStart sets the uint32 value in the PatternFlowPfcPausePauseClass5Counter object -func (obj *patternFlowPfcPausePauseClass5Counter) SetStart(value uint32) PatternFlowPfcPausePauseClass5Counter { +// SetStart sets the uint32 value in the PatternFlowArpOperationCounter object +func (obj *patternFlowArpOperationCounter) SetStart(value uint32) PatternFlowArpOperationCounter { obj.obj.Start = &value return obj @@ -215337,7 +258848,7 @@ func (obj *patternFlowPfcPausePauseClass5Counter) SetStart(value uint32) Pattern // description is TBD // Step returns a uint32 -func (obj *patternFlowPfcPausePauseClass5Counter) Step() uint32 { +func (obj *patternFlowArpOperationCounter) Step() uint32 { return *obj.obj.Step @@ -215345,13 +258856,13 @@ func (obj *patternFlowPfcPausePauseClass5Counter) Step() uint32 { // description is TBD // Step returns a uint32 -func (obj *patternFlowPfcPausePauseClass5Counter) HasStep() bool { +func (obj *patternFlowArpOperationCounter) HasStep() bool { return obj.obj.Step != nil } // description is TBD -// SetStep sets the uint32 value in the PatternFlowPfcPausePauseClass5Counter object -func (obj *patternFlowPfcPausePauseClass5Counter) SetStep(value uint32) PatternFlowPfcPausePauseClass5Counter { +// SetStep sets the uint32 value in the PatternFlowArpOperationCounter object +func (obj *patternFlowArpOperationCounter) SetStep(value uint32) PatternFlowArpOperationCounter { obj.obj.Step = &value return obj @@ -215359,7 +258870,7 @@ func (obj *patternFlowPfcPausePauseClass5Counter) SetStep(value uint32) PatternF // description is TBD // Count returns a uint32 -func (obj *patternFlowPfcPausePauseClass5Counter) Count() uint32 { +func (obj *patternFlowArpOperationCounter) Count() uint32 { return *obj.obj.Count @@ -215367,19 +258878,19 @@ func (obj *patternFlowPfcPausePauseClass5Counter) Count() uint32 { // description is TBD // Count returns a uint32 -func (obj *patternFlowPfcPausePauseClass5Counter) HasCount() bool { +func (obj *patternFlowArpOperationCounter) HasCount() bool { return obj.obj.Count != nil } // description is TBD -// SetCount sets the uint32 value in the PatternFlowPfcPausePauseClass5Counter object -func (obj *patternFlowPfcPausePauseClass5Counter) SetCount(value uint32) PatternFlowPfcPausePauseClass5Counter { +// SetCount sets the uint32 value in the PatternFlowArpOperationCounter object +func (obj *patternFlowArpOperationCounter) SetCount(value uint32) PatternFlowArpOperationCounter { obj.obj.Count = &value return obj } -func (obj *patternFlowPfcPausePauseClass5Counter) validateObj(vObj *validation, set_default bool) { +func (obj *patternFlowArpOperationCounter) validateObj(vObj *validation, set_default bool) { if set_default { obj.setDefault() } @@ -215389,7 +258900,7 @@ func (obj *patternFlowPfcPausePauseClass5Counter) validateObj(vObj *validation, if *obj.obj.Start > 65535 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowPfcPausePauseClass5Counter.Start <= 65535 but Got %d", *obj.obj.Start)) + fmt.Sprintf("0 <= PatternFlowArpOperationCounter.Start <= 65535 but Got %d", *obj.obj.Start)) } } @@ -215399,7 +258910,7 @@ func (obj *patternFlowPfcPausePauseClass5Counter) validateObj(vObj *validation, if *obj.obj.Step > 65535 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowPfcPausePauseClass5Counter.Step <= 65535 but Got %d", *obj.obj.Step)) + fmt.Sprintf("0 <= PatternFlowArpOperationCounter.Step <= 65535 but Got %d", *obj.obj.Step)) } } @@ -215409,16 +258920,16 @@ func (obj *patternFlowPfcPausePauseClass5Counter) validateObj(vObj *validation, if *obj.obj.Count > 65535 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowPfcPausePauseClass5Counter.Count <= 65535 but Got %d", *obj.obj.Count)) + fmt.Sprintf("0 <= PatternFlowArpOperationCounter.Count <= 65535 but Got %d", *obj.obj.Count)) } } } -func (obj *patternFlowPfcPausePauseClass5Counter) setDefault() { +func (obj *patternFlowArpOperationCounter) setDefault() { if obj.obj.Start == nil { - obj.SetStart(0) + obj.SetStart(1) } if obj.obj.Step == nil { obj.SetStep(1) @@ -215429,29 +258940,29 @@ func (obj *patternFlowPfcPausePauseClass5Counter) setDefault() { } -// ***** PatternFlowPfcPausePauseClass5MetricTag ***** -type patternFlowPfcPausePauseClass5MetricTag struct { +// ***** PatternFlowArpOperationMetricTag ***** +type patternFlowArpOperationMetricTag struct { validation - obj *otg.PatternFlowPfcPausePauseClass5MetricTag + obj *otg.PatternFlowArpOperationMetricTag } -func NewPatternFlowPfcPausePauseClass5MetricTag() PatternFlowPfcPausePauseClass5MetricTag { - obj := patternFlowPfcPausePauseClass5MetricTag{obj: &otg.PatternFlowPfcPausePauseClass5MetricTag{}} +func NewPatternFlowArpOperationMetricTag() PatternFlowArpOperationMetricTag { + obj := patternFlowArpOperationMetricTag{obj: &otg.PatternFlowArpOperationMetricTag{}} obj.setDefault() return &obj } -func (obj *patternFlowPfcPausePauseClass5MetricTag) Msg() *otg.PatternFlowPfcPausePauseClass5MetricTag { +func (obj *patternFlowArpOperationMetricTag) Msg() *otg.PatternFlowArpOperationMetricTag { return obj.obj } -func (obj *patternFlowPfcPausePauseClass5MetricTag) SetMsg(msg *otg.PatternFlowPfcPausePauseClass5MetricTag) PatternFlowPfcPausePauseClass5MetricTag { +func (obj *patternFlowArpOperationMetricTag) SetMsg(msg *otg.PatternFlowArpOperationMetricTag) PatternFlowArpOperationMetricTag { proto.Merge(obj.obj, msg) return obj } -func (obj *patternFlowPfcPausePauseClass5MetricTag) ToProto() (*otg.PatternFlowPfcPausePauseClass5MetricTag, error) { +func (obj *patternFlowArpOperationMetricTag) ToProto() (*otg.PatternFlowArpOperationMetricTag, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -215459,7 +258970,7 @@ func (obj *patternFlowPfcPausePauseClass5MetricTag) ToProto() (*otg.PatternFlowP return obj.Msg(), nil } -func (obj *patternFlowPfcPausePauseClass5MetricTag) FromProto(msg *otg.PatternFlowPfcPausePauseClass5MetricTag) (PatternFlowPfcPausePauseClass5MetricTag, error) { +func (obj *patternFlowArpOperationMetricTag) FromProto(msg *otg.PatternFlowArpOperationMetricTag) (PatternFlowArpOperationMetricTag, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -215468,7 +258979,7 @@ func (obj *patternFlowPfcPausePauseClass5MetricTag) FromProto(msg *otg.PatternFl return newObj, nil } -func (obj *patternFlowPfcPausePauseClass5MetricTag) ToPbText() (string, error) { +func (obj *patternFlowArpOperationMetricTag) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -215480,7 +258991,7 @@ func (obj *patternFlowPfcPausePauseClass5MetricTag) ToPbText() (string, error) { return string(protoMarshal), nil } -func (obj *patternFlowPfcPausePauseClass5MetricTag) FromPbText(value string) error { +func (obj *patternFlowArpOperationMetricTag) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj @@ -215493,7 +259004,7 @@ func (obj *patternFlowPfcPausePauseClass5MetricTag) FromPbText(value string) err return retObj } -func (obj *patternFlowPfcPausePauseClass5MetricTag) ToYaml() (string, error) { +func (obj *patternFlowArpOperationMetricTag) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -215514,7 +259025,7 @@ func (obj *patternFlowPfcPausePauseClass5MetricTag) ToYaml() (string, error) { return string(data), nil } -func (obj *patternFlowPfcPausePauseClass5MetricTag) FromYaml(value string) error { +func (obj *patternFlowArpOperationMetricTag) FromYaml(value string) error { if value == "" { value = "{}" } @@ -215539,7 +259050,7 @@ func (obj *patternFlowPfcPausePauseClass5MetricTag) FromYaml(value string) error return nil } -func (obj *patternFlowPfcPausePauseClass5MetricTag) ToJson() (string, error) { +func (obj *patternFlowArpOperationMetricTag) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -215557,7 +259068,7 @@ func (obj *patternFlowPfcPausePauseClass5MetricTag) ToJson() (string, error) { return string(data), nil } -func (obj *patternFlowPfcPausePauseClass5MetricTag) FromJson(value string) error { +func (obj *patternFlowArpOperationMetricTag) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -215578,19 +259089,19 @@ func (obj *patternFlowPfcPausePauseClass5MetricTag) FromJson(value string) error return nil } -func (obj *patternFlowPfcPausePauseClass5MetricTag) validateToAndFrom() error { +func (obj *patternFlowArpOperationMetricTag) validateToAndFrom() error { // emptyVars() obj.validateObj(&obj.validation, true) return obj.validationResult() } -func (obj *patternFlowPfcPausePauseClass5MetricTag) Validate() error { +func (obj *patternFlowArpOperationMetricTag) Validate() error { // emptyVars() obj.validateObj(&obj.validation, false) return obj.validationResult() } -func (obj *patternFlowPfcPausePauseClass5MetricTag) String() string { +func (obj *patternFlowArpOperationMetricTag) String() string { str, err := obj.ToYaml() if err != nil { return err.Error() @@ -215598,12 +259109,12 @@ func (obj *patternFlowPfcPausePauseClass5MetricTag) String() string { return str } -func (obj *patternFlowPfcPausePauseClass5MetricTag) Clone() (PatternFlowPfcPausePauseClass5MetricTag, error) { +func (obj *patternFlowArpOperationMetricTag) Clone() (PatternFlowArpOperationMetricTag, error) { vErr := obj.Validate() if vErr != nil { return nil, vErr } - newObj := NewPatternFlowPfcPausePauseClass5MetricTag() + newObj := NewPatternFlowArpOperationMetricTag() data, err := proto.Marshal(obj.Msg()) if err != nil { return nil, err @@ -215615,69 +259126,69 @@ func (obj *patternFlowPfcPausePauseClass5MetricTag) Clone() (PatternFlowPfcPause return newObj, nil } -// PatternFlowPfcPausePauseClass5MetricTag is metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. -type PatternFlowPfcPausePauseClass5MetricTag interface { +// PatternFlowArpOperationMetricTag is metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. +type PatternFlowArpOperationMetricTag interface { Validation - // Msg marshals PatternFlowPfcPausePauseClass5MetricTag to protobuf object *otg.PatternFlowPfcPausePauseClass5MetricTag + // Msg marshals PatternFlowArpOperationMetricTag to protobuf object *otg.PatternFlowArpOperationMetricTag // and doesn't set defaults - Msg() *otg.PatternFlowPfcPausePauseClass5MetricTag - // SetMsg unmarshals PatternFlowPfcPausePauseClass5MetricTag from protobuf object *otg.PatternFlowPfcPausePauseClass5MetricTag + Msg() *otg.PatternFlowArpOperationMetricTag + // SetMsg unmarshals PatternFlowArpOperationMetricTag from protobuf object *otg.PatternFlowArpOperationMetricTag // and doesn't set defaults - SetMsg(*otg.PatternFlowPfcPausePauseClass5MetricTag) PatternFlowPfcPausePauseClass5MetricTag - // ToProto marshals PatternFlowPfcPausePauseClass5MetricTag to protobuf object *otg.PatternFlowPfcPausePauseClass5MetricTag - ToProto() (*otg.PatternFlowPfcPausePauseClass5MetricTag, error) - // ToPbText marshals PatternFlowPfcPausePauseClass5MetricTag to protobuf text + SetMsg(*otg.PatternFlowArpOperationMetricTag) PatternFlowArpOperationMetricTag + // ToProto marshals PatternFlowArpOperationMetricTag to protobuf object *otg.PatternFlowArpOperationMetricTag + ToProto() (*otg.PatternFlowArpOperationMetricTag, error) + // ToPbText marshals PatternFlowArpOperationMetricTag to protobuf text ToPbText() (string, error) - // ToYaml marshals PatternFlowPfcPausePauseClass5MetricTag to YAML text + // ToYaml marshals PatternFlowArpOperationMetricTag to YAML text ToYaml() (string, error) - // ToJson marshals PatternFlowPfcPausePauseClass5MetricTag to JSON text + // ToJson marshals PatternFlowArpOperationMetricTag to JSON text ToJson() (string, error) - // FromProto unmarshals PatternFlowPfcPausePauseClass5MetricTag from protobuf object *otg.PatternFlowPfcPausePauseClass5MetricTag - FromProto(msg *otg.PatternFlowPfcPausePauseClass5MetricTag) (PatternFlowPfcPausePauseClass5MetricTag, error) - // FromPbText unmarshals PatternFlowPfcPausePauseClass5MetricTag from protobuf text + // FromProto unmarshals PatternFlowArpOperationMetricTag from protobuf object *otg.PatternFlowArpOperationMetricTag + FromProto(msg *otg.PatternFlowArpOperationMetricTag) (PatternFlowArpOperationMetricTag, error) + // FromPbText unmarshals PatternFlowArpOperationMetricTag from protobuf text FromPbText(value string) error - // FromYaml unmarshals PatternFlowPfcPausePauseClass5MetricTag from YAML text + // FromYaml unmarshals PatternFlowArpOperationMetricTag from YAML text FromYaml(value string) error - // FromJson unmarshals PatternFlowPfcPausePauseClass5MetricTag from JSON text + // FromJson unmarshals PatternFlowArpOperationMetricTag from JSON text FromJson(value string) error - // Validate validates PatternFlowPfcPausePauseClass5MetricTag + // Validate validates PatternFlowArpOperationMetricTag Validate() error // A stringer function String() string // Clones the object - Clone() (PatternFlowPfcPausePauseClass5MetricTag, error) + Clone() (PatternFlowArpOperationMetricTag, error) validateToAndFrom() error validateObj(vObj *validation, set_default bool) setDefault() - // Name returns string, set in PatternFlowPfcPausePauseClass5MetricTag. + // Name returns string, set in PatternFlowArpOperationMetricTag. Name() string - // SetName assigns string provided by user to PatternFlowPfcPausePauseClass5MetricTag - SetName(value string) PatternFlowPfcPausePauseClass5MetricTag - // Offset returns uint32, set in PatternFlowPfcPausePauseClass5MetricTag. + // SetName assigns string provided by user to PatternFlowArpOperationMetricTag + SetName(value string) PatternFlowArpOperationMetricTag + // Offset returns uint32, set in PatternFlowArpOperationMetricTag. Offset() uint32 - // SetOffset assigns uint32 provided by user to PatternFlowPfcPausePauseClass5MetricTag - SetOffset(value uint32) PatternFlowPfcPausePauseClass5MetricTag - // HasOffset checks if Offset has been set in PatternFlowPfcPausePauseClass5MetricTag + // SetOffset assigns uint32 provided by user to PatternFlowArpOperationMetricTag + SetOffset(value uint32) PatternFlowArpOperationMetricTag + // HasOffset checks if Offset has been set in PatternFlowArpOperationMetricTag HasOffset() bool - // Length returns uint32, set in PatternFlowPfcPausePauseClass5MetricTag. + // Length returns uint32, set in PatternFlowArpOperationMetricTag. Length() uint32 - // SetLength assigns uint32 provided by user to PatternFlowPfcPausePauseClass5MetricTag - SetLength(value uint32) PatternFlowPfcPausePauseClass5MetricTag - // HasLength checks if Length has been set in PatternFlowPfcPausePauseClass5MetricTag + // SetLength assigns uint32 provided by user to PatternFlowArpOperationMetricTag + SetLength(value uint32) PatternFlowArpOperationMetricTag + // HasLength checks if Length has been set in PatternFlowArpOperationMetricTag HasLength() bool } // Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field // Name returns a string -func (obj *patternFlowPfcPausePauseClass5MetricTag) Name() string { +func (obj *patternFlowArpOperationMetricTag) Name() string { return *obj.obj.Name } // Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field -// SetName sets the string value in the PatternFlowPfcPausePauseClass5MetricTag object -func (obj *patternFlowPfcPausePauseClass5MetricTag) SetName(value string) PatternFlowPfcPausePauseClass5MetricTag { +// SetName sets the string value in the PatternFlowArpOperationMetricTag object +func (obj *patternFlowArpOperationMetricTag) SetName(value string) PatternFlowArpOperationMetricTag { obj.obj.Name = &value return obj @@ -215685,7 +259196,7 @@ func (obj *patternFlowPfcPausePauseClass5MetricTag) SetName(value string) Patter // Offset in bits relative to start of corresponding header field // Offset returns a uint32 -func (obj *patternFlowPfcPausePauseClass5MetricTag) Offset() uint32 { +func (obj *patternFlowArpOperationMetricTag) Offset() uint32 { return *obj.obj.Offset @@ -215693,13 +259204,13 @@ func (obj *patternFlowPfcPausePauseClass5MetricTag) Offset() uint32 { // Offset in bits relative to start of corresponding header field // Offset returns a uint32 -func (obj *patternFlowPfcPausePauseClass5MetricTag) HasOffset() bool { +func (obj *patternFlowArpOperationMetricTag) HasOffset() bool { return obj.obj.Offset != nil } // Offset in bits relative to start of corresponding header field -// SetOffset sets the uint32 value in the PatternFlowPfcPausePauseClass5MetricTag object -func (obj *patternFlowPfcPausePauseClass5MetricTag) SetOffset(value uint32) PatternFlowPfcPausePauseClass5MetricTag { +// SetOffset sets the uint32 value in the PatternFlowArpOperationMetricTag object +func (obj *patternFlowArpOperationMetricTag) SetOffset(value uint32) PatternFlowArpOperationMetricTag { obj.obj.Offset = &value return obj @@ -215707,7 +259218,7 @@ func (obj *patternFlowPfcPausePauseClass5MetricTag) SetOffset(value uint32) Patt // Number of bits to track for metrics starting from configured offset of corresponding header field // Length returns a uint32 -func (obj *patternFlowPfcPausePauseClass5MetricTag) Length() uint32 { +func (obj *patternFlowArpOperationMetricTag) Length() uint32 { return *obj.obj.Length @@ -215715,26 +259226,26 @@ func (obj *patternFlowPfcPausePauseClass5MetricTag) Length() uint32 { // Number of bits to track for metrics starting from configured offset of corresponding header field // Length returns a uint32 -func (obj *patternFlowPfcPausePauseClass5MetricTag) HasLength() bool { +func (obj *patternFlowArpOperationMetricTag) HasLength() bool { return obj.obj.Length != nil } // Number of bits to track for metrics starting from configured offset of corresponding header field -// SetLength sets the uint32 value in the PatternFlowPfcPausePauseClass5MetricTag object -func (obj *patternFlowPfcPausePauseClass5MetricTag) SetLength(value uint32) PatternFlowPfcPausePauseClass5MetricTag { +// SetLength sets the uint32 value in the PatternFlowArpOperationMetricTag object +func (obj *patternFlowArpOperationMetricTag) SetLength(value uint32) PatternFlowArpOperationMetricTag { obj.obj.Length = &value return obj } -func (obj *patternFlowPfcPausePauseClass5MetricTag) validateObj(vObj *validation, set_default bool) { +func (obj *patternFlowArpOperationMetricTag) validateObj(vObj *validation, set_default bool) { if set_default { obj.setDefault() } // Name is required if obj.obj.Name == nil { - vObj.validationErrors = append(vObj.validationErrors, "Name is required field on interface PatternFlowPfcPausePauseClass5MetricTag") + vObj.validationErrors = append(vObj.validationErrors, "Name is required field on interface PatternFlowArpOperationMetricTag") } if obj.obj.Offset != nil { @@ -215742,7 +259253,7 @@ func (obj *patternFlowPfcPausePauseClass5MetricTag) validateObj(vObj *validation if *obj.obj.Offset > 15 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowPfcPausePauseClass5MetricTag.Offset <= 15 but Got %d", *obj.obj.Offset)) + fmt.Sprintf("0 <= PatternFlowArpOperationMetricTag.Offset <= 15 but Got %d", *obj.obj.Offset)) } } @@ -215752,14 +259263,14 @@ func (obj *patternFlowPfcPausePauseClass5MetricTag) validateObj(vObj *validation if *obj.obj.Length < 1 || *obj.obj.Length > 16 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("1 <= PatternFlowPfcPausePauseClass5MetricTag.Length <= 16 but Got %d", *obj.obj.Length)) + fmt.Sprintf("1 <= PatternFlowArpOperationMetricTag.Length <= 16 but Got %d", *obj.obj.Length)) } } } -func (obj *patternFlowPfcPausePauseClass5MetricTag) setDefault() { +func (obj *patternFlowArpOperationMetricTag) setDefault() { if obj.obj.Offset == nil { obj.SetOffset(0) } @@ -215769,29 +259280,29 @@ func (obj *patternFlowPfcPausePauseClass5MetricTag) setDefault() { } -// ***** PatternFlowPfcPausePauseClass6Counter ***** -type patternFlowPfcPausePauseClass6Counter struct { +// ***** PatternFlowArpSenderHardwareAddrCounter ***** +type patternFlowArpSenderHardwareAddrCounter struct { validation - obj *otg.PatternFlowPfcPausePauseClass6Counter + obj *otg.PatternFlowArpSenderHardwareAddrCounter } -func NewPatternFlowPfcPausePauseClass6Counter() PatternFlowPfcPausePauseClass6Counter { - obj := patternFlowPfcPausePauseClass6Counter{obj: &otg.PatternFlowPfcPausePauseClass6Counter{}} +func NewPatternFlowArpSenderHardwareAddrCounter() PatternFlowArpSenderHardwareAddrCounter { + obj := patternFlowArpSenderHardwareAddrCounter{obj: &otg.PatternFlowArpSenderHardwareAddrCounter{}} obj.setDefault() return &obj } -func (obj *patternFlowPfcPausePauseClass6Counter) Msg() *otg.PatternFlowPfcPausePauseClass6Counter { +func (obj *patternFlowArpSenderHardwareAddrCounter) Msg() *otg.PatternFlowArpSenderHardwareAddrCounter { return obj.obj } -func (obj *patternFlowPfcPausePauseClass6Counter) SetMsg(msg *otg.PatternFlowPfcPausePauseClass6Counter) PatternFlowPfcPausePauseClass6Counter { +func (obj *patternFlowArpSenderHardwareAddrCounter) SetMsg(msg *otg.PatternFlowArpSenderHardwareAddrCounter) PatternFlowArpSenderHardwareAddrCounter { proto.Merge(obj.obj, msg) return obj } -func (obj *patternFlowPfcPausePauseClass6Counter) ToProto() (*otg.PatternFlowPfcPausePauseClass6Counter, error) { +func (obj *patternFlowArpSenderHardwareAddrCounter) ToProto() (*otg.PatternFlowArpSenderHardwareAddrCounter, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -215799,7 +259310,7 @@ func (obj *patternFlowPfcPausePauseClass6Counter) ToProto() (*otg.PatternFlowPfc return obj.Msg(), nil } -func (obj *patternFlowPfcPausePauseClass6Counter) FromProto(msg *otg.PatternFlowPfcPausePauseClass6Counter) (PatternFlowPfcPausePauseClass6Counter, error) { +func (obj *patternFlowArpSenderHardwareAddrCounter) FromProto(msg *otg.PatternFlowArpSenderHardwareAddrCounter) (PatternFlowArpSenderHardwareAddrCounter, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -215808,7 +259319,7 @@ func (obj *patternFlowPfcPausePauseClass6Counter) FromProto(msg *otg.PatternFlow return newObj, nil } -func (obj *patternFlowPfcPausePauseClass6Counter) ToPbText() (string, error) { +func (obj *patternFlowArpSenderHardwareAddrCounter) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -215820,7 +259331,7 @@ func (obj *patternFlowPfcPausePauseClass6Counter) ToPbText() (string, error) { return string(protoMarshal), nil } -func (obj *patternFlowPfcPausePauseClass6Counter) FromPbText(value string) error { +func (obj *patternFlowArpSenderHardwareAddrCounter) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj @@ -215833,7 +259344,7 @@ func (obj *patternFlowPfcPausePauseClass6Counter) FromPbText(value string) error return retObj } -func (obj *patternFlowPfcPausePauseClass6Counter) ToYaml() (string, error) { +func (obj *patternFlowArpSenderHardwareAddrCounter) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -215854,7 +259365,7 @@ func (obj *patternFlowPfcPausePauseClass6Counter) ToYaml() (string, error) { return string(data), nil } -func (obj *patternFlowPfcPausePauseClass6Counter) FromYaml(value string) error { +func (obj *patternFlowArpSenderHardwareAddrCounter) FromYaml(value string) error { if value == "" { value = "{}" } @@ -215879,7 +259390,7 @@ func (obj *patternFlowPfcPausePauseClass6Counter) FromYaml(value string) error { return nil } -func (obj *patternFlowPfcPausePauseClass6Counter) ToJson() (string, error) { +func (obj *patternFlowArpSenderHardwareAddrCounter) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -215897,7 +259408,7 @@ func (obj *patternFlowPfcPausePauseClass6Counter) ToJson() (string, error) { return string(data), nil } -func (obj *patternFlowPfcPausePauseClass6Counter) FromJson(value string) error { +func (obj *patternFlowArpSenderHardwareAddrCounter) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -215918,19 +259429,19 @@ func (obj *patternFlowPfcPausePauseClass6Counter) FromJson(value string) error { return nil } -func (obj *patternFlowPfcPausePauseClass6Counter) validateToAndFrom() error { +func (obj *patternFlowArpSenderHardwareAddrCounter) validateToAndFrom() error { // emptyVars() obj.validateObj(&obj.validation, true) return obj.validationResult() } -func (obj *patternFlowPfcPausePauseClass6Counter) Validate() error { +func (obj *patternFlowArpSenderHardwareAddrCounter) Validate() error { // emptyVars() obj.validateObj(&obj.validation, false) return obj.validationResult() } -func (obj *patternFlowPfcPausePauseClass6Counter) String() string { +func (obj *patternFlowArpSenderHardwareAddrCounter) String() string { str, err := obj.ToYaml() if err != nil { return err.Error() @@ -215938,12 +259449,12 @@ func (obj *patternFlowPfcPausePauseClass6Counter) String() string { return str } -func (obj *patternFlowPfcPausePauseClass6Counter) Clone() (PatternFlowPfcPausePauseClass6Counter, error) { +func (obj *patternFlowArpSenderHardwareAddrCounter) Clone() (PatternFlowArpSenderHardwareAddrCounter, error) { vErr := obj.Validate() if vErr != nil { return nil, vErr } - newObj := NewPatternFlowPfcPausePauseClass6Counter() + newObj := NewPatternFlowArpSenderHardwareAddrCounter() data, err := proto.Marshal(obj.Msg()) if err != nil { return nil, err @@ -215955,99 +259466,99 @@ func (obj *patternFlowPfcPausePauseClass6Counter) Clone() (PatternFlowPfcPausePa return newObj, nil } -// PatternFlowPfcPausePauseClass6Counter is integer counter pattern -type PatternFlowPfcPausePauseClass6Counter interface { +// PatternFlowArpSenderHardwareAddrCounter is mac counter pattern +type PatternFlowArpSenderHardwareAddrCounter interface { Validation - // Msg marshals PatternFlowPfcPausePauseClass6Counter to protobuf object *otg.PatternFlowPfcPausePauseClass6Counter + // Msg marshals PatternFlowArpSenderHardwareAddrCounter to protobuf object *otg.PatternFlowArpSenderHardwareAddrCounter // and doesn't set defaults - Msg() *otg.PatternFlowPfcPausePauseClass6Counter - // SetMsg unmarshals PatternFlowPfcPausePauseClass6Counter from protobuf object *otg.PatternFlowPfcPausePauseClass6Counter + Msg() *otg.PatternFlowArpSenderHardwareAddrCounter + // SetMsg unmarshals PatternFlowArpSenderHardwareAddrCounter from protobuf object *otg.PatternFlowArpSenderHardwareAddrCounter // and doesn't set defaults - SetMsg(*otg.PatternFlowPfcPausePauseClass6Counter) PatternFlowPfcPausePauseClass6Counter - // ToProto marshals PatternFlowPfcPausePauseClass6Counter to protobuf object *otg.PatternFlowPfcPausePauseClass6Counter - ToProto() (*otg.PatternFlowPfcPausePauseClass6Counter, error) - // ToPbText marshals PatternFlowPfcPausePauseClass6Counter to protobuf text + SetMsg(*otg.PatternFlowArpSenderHardwareAddrCounter) PatternFlowArpSenderHardwareAddrCounter + // ToProto marshals PatternFlowArpSenderHardwareAddrCounter to protobuf object *otg.PatternFlowArpSenderHardwareAddrCounter + ToProto() (*otg.PatternFlowArpSenderHardwareAddrCounter, error) + // ToPbText marshals PatternFlowArpSenderHardwareAddrCounter to protobuf text ToPbText() (string, error) - // ToYaml marshals PatternFlowPfcPausePauseClass6Counter to YAML text + // ToYaml marshals PatternFlowArpSenderHardwareAddrCounter to YAML text ToYaml() (string, error) - // ToJson marshals PatternFlowPfcPausePauseClass6Counter to JSON text + // ToJson marshals PatternFlowArpSenderHardwareAddrCounter to JSON text ToJson() (string, error) - // FromProto unmarshals PatternFlowPfcPausePauseClass6Counter from protobuf object *otg.PatternFlowPfcPausePauseClass6Counter - FromProto(msg *otg.PatternFlowPfcPausePauseClass6Counter) (PatternFlowPfcPausePauseClass6Counter, error) - // FromPbText unmarshals PatternFlowPfcPausePauseClass6Counter from protobuf text + // FromProto unmarshals PatternFlowArpSenderHardwareAddrCounter from protobuf object *otg.PatternFlowArpSenderHardwareAddrCounter + FromProto(msg *otg.PatternFlowArpSenderHardwareAddrCounter) (PatternFlowArpSenderHardwareAddrCounter, error) + // FromPbText unmarshals PatternFlowArpSenderHardwareAddrCounter from protobuf text FromPbText(value string) error - // FromYaml unmarshals PatternFlowPfcPausePauseClass6Counter from YAML text + // FromYaml unmarshals PatternFlowArpSenderHardwareAddrCounter from YAML text FromYaml(value string) error - // FromJson unmarshals PatternFlowPfcPausePauseClass6Counter from JSON text + // FromJson unmarshals PatternFlowArpSenderHardwareAddrCounter from JSON text FromJson(value string) error - // Validate validates PatternFlowPfcPausePauseClass6Counter + // Validate validates PatternFlowArpSenderHardwareAddrCounter Validate() error // A stringer function String() string // Clones the object - Clone() (PatternFlowPfcPausePauseClass6Counter, error) + Clone() (PatternFlowArpSenderHardwareAddrCounter, error) validateToAndFrom() error validateObj(vObj *validation, set_default bool) setDefault() - // Start returns uint32, set in PatternFlowPfcPausePauseClass6Counter. - Start() uint32 - // SetStart assigns uint32 provided by user to PatternFlowPfcPausePauseClass6Counter - SetStart(value uint32) PatternFlowPfcPausePauseClass6Counter - // HasStart checks if Start has been set in PatternFlowPfcPausePauseClass6Counter + // Start returns string, set in PatternFlowArpSenderHardwareAddrCounter. + Start() string + // SetStart assigns string provided by user to PatternFlowArpSenderHardwareAddrCounter + SetStart(value string) PatternFlowArpSenderHardwareAddrCounter + // HasStart checks if Start has been set in PatternFlowArpSenderHardwareAddrCounter HasStart() bool - // Step returns uint32, set in PatternFlowPfcPausePauseClass6Counter. - Step() uint32 - // SetStep assigns uint32 provided by user to PatternFlowPfcPausePauseClass6Counter - SetStep(value uint32) PatternFlowPfcPausePauseClass6Counter - // HasStep checks if Step has been set in PatternFlowPfcPausePauseClass6Counter + // Step returns string, set in PatternFlowArpSenderHardwareAddrCounter. + Step() string + // SetStep assigns string provided by user to PatternFlowArpSenderHardwareAddrCounter + SetStep(value string) PatternFlowArpSenderHardwareAddrCounter + // HasStep checks if Step has been set in PatternFlowArpSenderHardwareAddrCounter HasStep() bool - // Count returns uint32, set in PatternFlowPfcPausePauseClass6Counter. + // Count returns uint32, set in PatternFlowArpSenderHardwareAddrCounter. Count() uint32 - // SetCount assigns uint32 provided by user to PatternFlowPfcPausePauseClass6Counter - SetCount(value uint32) PatternFlowPfcPausePauseClass6Counter - // HasCount checks if Count has been set in PatternFlowPfcPausePauseClass6Counter + // SetCount assigns uint32 provided by user to PatternFlowArpSenderHardwareAddrCounter + SetCount(value uint32) PatternFlowArpSenderHardwareAddrCounter + // HasCount checks if Count has been set in PatternFlowArpSenderHardwareAddrCounter HasCount() bool } // description is TBD -// Start returns a uint32 -func (obj *patternFlowPfcPausePauseClass6Counter) Start() uint32 { +// Start returns a string +func (obj *patternFlowArpSenderHardwareAddrCounter) Start() string { return *obj.obj.Start } // description is TBD -// Start returns a uint32 -func (obj *patternFlowPfcPausePauseClass6Counter) HasStart() bool { +// Start returns a string +func (obj *patternFlowArpSenderHardwareAddrCounter) HasStart() bool { return obj.obj.Start != nil } // description is TBD -// SetStart sets the uint32 value in the PatternFlowPfcPausePauseClass6Counter object -func (obj *patternFlowPfcPausePauseClass6Counter) SetStart(value uint32) PatternFlowPfcPausePauseClass6Counter { +// SetStart sets the string value in the PatternFlowArpSenderHardwareAddrCounter object +func (obj *patternFlowArpSenderHardwareAddrCounter) SetStart(value string) PatternFlowArpSenderHardwareAddrCounter { obj.obj.Start = &value return obj } // description is TBD -// Step returns a uint32 -func (obj *patternFlowPfcPausePauseClass6Counter) Step() uint32 { +// Step returns a string +func (obj *patternFlowArpSenderHardwareAddrCounter) Step() string { return *obj.obj.Step } // description is TBD -// Step returns a uint32 -func (obj *patternFlowPfcPausePauseClass6Counter) HasStep() bool { +// Step returns a string +func (obj *patternFlowArpSenderHardwareAddrCounter) HasStep() bool { return obj.obj.Step != nil } // description is TBD -// SetStep sets the uint32 value in the PatternFlowPfcPausePauseClass6Counter object -func (obj *patternFlowPfcPausePauseClass6Counter) SetStep(value uint32) PatternFlowPfcPausePauseClass6Counter { +// SetStep sets the string value in the PatternFlowArpSenderHardwareAddrCounter object +func (obj *patternFlowArpSenderHardwareAddrCounter) SetStep(value string) PatternFlowArpSenderHardwareAddrCounter { obj.obj.Step = &value return obj @@ -216055,7 +259566,7 @@ func (obj *patternFlowPfcPausePauseClass6Counter) SetStep(value uint32) PatternF // description is TBD // Count returns a uint32 -func (obj *patternFlowPfcPausePauseClass6Counter) Count() uint32 { +func (obj *patternFlowArpSenderHardwareAddrCounter) Count() uint32 { return *obj.obj.Count @@ -216063,61 +259574,49 @@ func (obj *patternFlowPfcPausePauseClass6Counter) Count() uint32 { // description is TBD // Count returns a uint32 -func (obj *patternFlowPfcPausePauseClass6Counter) HasCount() bool { +func (obj *patternFlowArpSenderHardwareAddrCounter) HasCount() bool { return obj.obj.Count != nil } // description is TBD -// SetCount sets the uint32 value in the PatternFlowPfcPausePauseClass6Counter object -func (obj *patternFlowPfcPausePauseClass6Counter) SetCount(value uint32) PatternFlowPfcPausePauseClass6Counter { +// SetCount sets the uint32 value in the PatternFlowArpSenderHardwareAddrCounter object +func (obj *patternFlowArpSenderHardwareAddrCounter) SetCount(value uint32) PatternFlowArpSenderHardwareAddrCounter { obj.obj.Count = &value return obj } -func (obj *patternFlowPfcPausePauseClass6Counter) validateObj(vObj *validation, set_default bool) { +func (obj *patternFlowArpSenderHardwareAddrCounter) validateObj(vObj *validation, set_default bool) { if set_default { obj.setDefault() } if obj.obj.Start != nil { - if *obj.obj.Start > 65535 { - vObj.validationErrors = append( - vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowPfcPausePauseClass6Counter.Start <= 65535 but Got %d", *obj.obj.Start)) + err := obj.validateMac(obj.Start()) + if err != nil { + vObj.validationErrors = append(vObj.validationErrors, fmt.Sprintf("%s %s", err.Error(), "on PatternFlowArpSenderHardwareAddrCounter.Start")) } } if obj.obj.Step != nil { - if *obj.obj.Step > 65535 { - vObj.validationErrors = append( - vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowPfcPausePauseClass6Counter.Step <= 65535 but Got %d", *obj.obj.Step)) - } - - } - - if obj.obj.Count != nil { - - if *obj.obj.Count > 65535 { - vObj.validationErrors = append( - vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowPfcPausePauseClass6Counter.Count <= 65535 but Got %d", *obj.obj.Count)) + err := obj.validateMac(obj.Step()) + if err != nil { + vObj.validationErrors = append(vObj.validationErrors, fmt.Sprintf("%s %s", err.Error(), "on PatternFlowArpSenderHardwareAddrCounter.Step")) } } } -func (obj *patternFlowPfcPausePauseClass6Counter) setDefault() { +func (obj *patternFlowArpSenderHardwareAddrCounter) setDefault() { if obj.obj.Start == nil { - obj.SetStart(0) + obj.SetStart("00:00:00:00:00:00") } if obj.obj.Step == nil { - obj.SetStep(1) + obj.SetStep("00:00:00:00:00:01") } if obj.obj.Count == nil { obj.SetCount(1) @@ -216125,29 +259624,29 @@ func (obj *patternFlowPfcPausePauseClass6Counter) setDefault() { } -// ***** PatternFlowPfcPausePauseClass6MetricTag ***** -type patternFlowPfcPausePauseClass6MetricTag struct { +// ***** PatternFlowArpSenderHardwareAddrMetricTag ***** +type patternFlowArpSenderHardwareAddrMetricTag struct { validation - obj *otg.PatternFlowPfcPausePauseClass6MetricTag + obj *otg.PatternFlowArpSenderHardwareAddrMetricTag } -func NewPatternFlowPfcPausePauseClass6MetricTag() PatternFlowPfcPausePauseClass6MetricTag { - obj := patternFlowPfcPausePauseClass6MetricTag{obj: &otg.PatternFlowPfcPausePauseClass6MetricTag{}} +func NewPatternFlowArpSenderHardwareAddrMetricTag() PatternFlowArpSenderHardwareAddrMetricTag { + obj := patternFlowArpSenderHardwareAddrMetricTag{obj: &otg.PatternFlowArpSenderHardwareAddrMetricTag{}} obj.setDefault() return &obj } -func (obj *patternFlowPfcPausePauseClass6MetricTag) Msg() *otg.PatternFlowPfcPausePauseClass6MetricTag { +func (obj *patternFlowArpSenderHardwareAddrMetricTag) Msg() *otg.PatternFlowArpSenderHardwareAddrMetricTag { return obj.obj } -func (obj *patternFlowPfcPausePauseClass6MetricTag) SetMsg(msg *otg.PatternFlowPfcPausePauseClass6MetricTag) PatternFlowPfcPausePauseClass6MetricTag { +func (obj *patternFlowArpSenderHardwareAddrMetricTag) SetMsg(msg *otg.PatternFlowArpSenderHardwareAddrMetricTag) PatternFlowArpSenderHardwareAddrMetricTag { proto.Merge(obj.obj, msg) return obj } -func (obj *patternFlowPfcPausePauseClass6MetricTag) ToProto() (*otg.PatternFlowPfcPausePauseClass6MetricTag, error) { +func (obj *patternFlowArpSenderHardwareAddrMetricTag) ToProto() (*otg.PatternFlowArpSenderHardwareAddrMetricTag, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -216155,7 +259654,7 @@ func (obj *patternFlowPfcPausePauseClass6MetricTag) ToProto() (*otg.PatternFlowP return obj.Msg(), nil } -func (obj *patternFlowPfcPausePauseClass6MetricTag) FromProto(msg *otg.PatternFlowPfcPausePauseClass6MetricTag) (PatternFlowPfcPausePauseClass6MetricTag, error) { +func (obj *patternFlowArpSenderHardwareAddrMetricTag) FromProto(msg *otg.PatternFlowArpSenderHardwareAddrMetricTag) (PatternFlowArpSenderHardwareAddrMetricTag, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -216164,7 +259663,7 @@ func (obj *patternFlowPfcPausePauseClass6MetricTag) FromProto(msg *otg.PatternFl return newObj, nil } -func (obj *patternFlowPfcPausePauseClass6MetricTag) ToPbText() (string, error) { +func (obj *patternFlowArpSenderHardwareAddrMetricTag) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -216176,7 +259675,7 @@ func (obj *patternFlowPfcPausePauseClass6MetricTag) ToPbText() (string, error) { return string(protoMarshal), nil } -func (obj *patternFlowPfcPausePauseClass6MetricTag) FromPbText(value string) error { +func (obj *patternFlowArpSenderHardwareAddrMetricTag) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj @@ -216189,7 +259688,7 @@ func (obj *patternFlowPfcPausePauseClass6MetricTag) FromPbText(value string) err return retObj } -func (obj *patternFlowPfcPausePauseClass6MetricTag) ToYaml() (string, error) { +func (obj *patternFlowArpSenderHardwareAddrMetricTag) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -216210,7 +259709,7 @@ func (obj *patternFlowPfcPausePauseClass6MetricTag) ToYaml() (string, error) { return string(data), nil } -func (obj *patternFlowPfcPausePauseClass6MetricTag) FromYaml(value string) error { +func (obj *patternFlowArpSenderHardwareAddrMetricTag) FromYaml(value string) error { if value == "" { value = "{}" } @@ -216235,7 +259734,7 @@ func (obj *patternFlowPfcPausePauseClass6MetricTag) FromYaml(value string) error return nil } -func (obj *patternFlowPfcPausePauseClass6MetricTag) ToJson() (string, error) { +func (obj *patternFlowArpSenderHardwareAddrMetricTag) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -216253,7 +259752,7 @@ func (obj *patternFlowPfcPausePauseClass6MetricTag) ToJson() (string, error) { return string(data), nil } -func (obj *patternFlowPfcPausePauseClass6MetricTag) FromJson(value string) error { +func (obj *patternFlowArpSenderHardwareAddrMetricTag) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -216274,19 +259773,19 @@ func (obj *patternFlowPfcPausePauseClass6MetricTag) FromJson(value string) error return nil } -func (obj *patternFlowPfcPausePauseClass6MetricTag) validateToAndFrom() error { +func (obj *patternFlowArpSenderHardwareAddrMetricTag) validateToAndFrom() error { // emptyVars() obj.validateObj(&obj.validation, true) return obj.validationResult() } -func (obj *patternFlowPfcPausePauseClass6MetricTag) Validate() error { +func (obj *patternFlowArpSenderHardwareAddrMetricTag) Validate() error { // emptyVars() obj.validateObj(&obj.validation, false) return obj.validationResult() } -func (obj *patternFlowPfcPausePauseClass6MetricTag) String() string { +func (obj *patternFlowArpSenderHardwareAddrMetricTag) String() string { str, err := obj.ToYaml() if err != nil { return err.Error() @@ -216294,12 +259793,12 @@ func (obj *patternFlowPfcPausePauseClass6MetricTag) String() string { return str } -func (obj *patternFlowPfcPausePauseClass6MetricTag) Clone() (PatternFlowPfcPausePauseClass6MetricTag, error) { +func (obj *patternFlowArpSenderHardwareAddrMetricTag) Clone() (PatternFlowArpSenderHardwareAddrMetricTag, error) { vErr := obj.Validate() if vErr != nil { return nil, vErr } - newObj := NewPatternFlowPfcPausePauseClass6MetricTag() + newObj := NewPatternFlowArpSenderHardwareAddrMetricTag() data, err := proto.Marshal(obj.Msg()) if err != nil { return nil, err @@ -216311,69 +259810,69 @@ func (obj *patternFlowPfcPausePauseClass6MetricTag) Clone() (PatternFlowPfcPause return newObj, nil } -// PatternFlowPfcPausePauseClass6MetricTag is metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. -type PatternFlowPfcPausePauseClass6MetricTag interface { +// PatternFlowArpSenderHardwareAddrMetricTag is metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. +type PatternFlowArpSenderHardwareAddrMetricTag interface { Validation - // Msg marshals PatternFlowPfcPausePauseClass6MetricTag to protobuf object *otg.PatternFlowPfcPausePauseClass6MetricTag + // Msg marshals PatternFlowArpSenderHardwareAddrMetricTag to protobuf object *otg.PatternFlowArpSenderHardwareAddrMetricTag // and doesn't set defaults - Msg() *otg.PatternFlowPfcPausePauseClass6MetricTag - // SetMsg unmarshals PatternFlowPfcPausePauseClass6MetricTag from protobuf object *otg.PatternFlowPfcPausePauseClass6MetricTag + Msg() *otg.PatternFlowArpSenderHardwareAddrMetricTag + // SetMsg unmarshals PatternFlowArpSenderHardwareAddrMetricTag from protobuf object *otg.PatternFlowArpSenderHardwareAddrMetricTag // and doesn't set defaults - SetMsg(*otg.PatternFlowPfcPausePauseClass6MetricTag) PatternFlowPfcPausePauseClass6MetricTag - // ToProto marshals PatternFlowPfcPausePauseClass6MetricTag to protobuf object *otg.PatternFlowPfcPausePauseClass6MetricTag - ToProto() (*otg.PatternFlowPfcPausePauseClass6MetricTag, error) - // ToPbText marshals PatternFlowPfcPausePauseClass6MetricTag to protobuf text + SetMsg(*otg.PatternFlowArpSenderHardwareAddrMetricTag) PatternFlowArpSenderHardwareAddrMetricTag + // ToProto marshals PatternFlowArpSenderHardwareAddrMetricTag to protobuf object *otg.PatternFlowArpSenderHardwareAddrMetricTag + ToProto() (*otg.PatternFlowArpSenderHardwareAddrMetricTag, error) + // ToPbText marshals PatternFlowArpSenderHardwareAddrMetricTag to protobuf text ToPbText() (string, error) - // ToYaml marshals PatternFlowPfcPausePauseClass6MetricTag to YAML text + // ToYaml marshals PatternFlowArpSenderHardwareAddrMetricTag to YAML text ToYaml() (string, error) - // ToJson marshals PatternFlowPfcPausePauseClass6MetricTag to JSON text + // ToJson marshals PatternFlowArpSenderHardwareAddrMetricTag to JSON text ToJson() (string, error) - // FromProto unmarshals PatternFlowPfcPausePauseClass6MetricTag from protobuf object *otg.PatternFlowPfcPausePauseClass6MetricTag - FromProto(msg *otg.PatternFlowPfcPausePauseClass6MetricTag) (PatternFlowPfcPausePauseClass6MetricTag, error) - // FromPbText unmarshals PatternFlowPfcPausePauseClass6MetricTag from protobuf text + // FromProto unmarshals PatternFlowArpSenderHardwareAddrMetricTag from protobuf object *otg.PatternFlowArpSenderHardwareAddrMetricTag + FromProto(msg *otg.PatternFlowArpSenderHardwareAddrMetricTag) (PatternFlowArpSenderHardwareAddrMetricTag, error) + // FromPbText unmarshals PatternFlowArpSenderHardwareAddrMetricTag from protobuf text FromPbText(value string) error - // FromYaml unmarshals PatternFlowPfcPausePauseClass6MetricTag from YAML text + // FromYaml unmarshals PatternFlowArpSenderHardwareAddrMetricTag from YAML text FromYaml(value string) error - // FromJson unmarshals PatternFlowPfcPausePauseClass6MetricTag from JSON text + // FromJson unmarshals PatternFlowArpSenderHardwareAddrMetricTag from JSON text FromJson(value string) error - // Validate validates PatternFlowPfcPausePauseClass6MetricTag + // Validate validates PatternFlowArpSenderHardwareAddrMetricTag Validate() error // A stringer function String() string // Clones the object - Clone() (PatternFlowPfcPausePauseClass6MetricTag, error) + Clone() (PatternFlowArpSenderHardwareAddrMetricTag, error) validateToAndFrom() error validateObj(vObj *validation, set_default bool) setDefault() - // Name returns string, set in PatternFlowPfcPausePauseClass6MetricTag. + // Name returns string, set in PatternFlowArpSenderHardwareAddrMetricTag. Name() string - // SetName assigns string provided by user to PatternFlowPfcPausePauseClass6MetricTag - SetName(value string) PatternFlowPfcPausePauseClass6MetricTag - // Offset returns uint32, set in PatternFlowPfcPausePauseClass6MetricTag. + // SetName assigns string provided by user to PatternFlowArpSenderHardwareAddrMetricTag + SetName(value string) PatternFlowArpSenderHardwareAddrMetricTag + // Offset returns uint32, set in PatternFlowArpSenderHardwareAddrMetricTag. Offset() uint32 - // SetOffset assigns uint32 provided by user to PatternFlowPfcPausePauseClass6MetricTag - SetOffset(value uint32) PatternFlowPfcPausePauseClass6MetricTag - // HasOffset checks if Offset has been set in PatternFlowPfcPausePauseClass6MetricTag + // SetOffset assigns uint32 provided by user to PatternFlowArpSenderHardwareAddrMetricTag + SetOffset(value uint32) PatternFlowArpSenderHardwareAddrMetricTag + // HasOffset checks if Offset has been set in PatternFlowArpSenderHardwareAddrMetricTag HasOffset() bool - // Length returns uint32, set in PatternFlowPfcPausePauseClass6MetricTag. + // Length returns uint32, set in PatternFlowArpSenderHardwareAddrMetricTag. Length() uint32 - // SetLength assigns uint32 provided by user to PatternFlowPfcPausePauseClass6MetricTag - SetLength(value uint32) PatternFlowPfcPausePauseClass6MetricTag - // HasLength checks if Length has been set in PatternFlowPfcPausePauseClass6MetricTag + // SetLength assigns uint32 provided by user to PatternFlowArpSenderHardwareAddrMetricTag + SetLength(value uint32) PatternFlowArpSenderHardwareAddrMetricTag + // HasLength checks if Length has been set in PatternFlowArpSenderHardwareAddrMetricTag HasLength() bool } // Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field // Name returns a string -func (obj *patternFlowPfcPausePauseClass6MetricTag) Name() string { +func (obj *patternFlowArpSenderHardwareAddrMetricTag) Name() string { return *obj.obj.Name } // Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field -// SetName sets the string value in the PatternFlowPfcPausePauseClass6MetricTag object -func (obj *patternFlowPfcPausePauseClass6MetricTag) SetName(value string) PatternFlowPfcPausePauseClass6MetricTag { +// SetName sets the string value in the PatternFlowArpSenderHardwareAddrMetricTag object +func (obj *patternFlowArpSenderHardwareAddrMetricTag) SetName(value string) PatternFlowArpSenderHardwareAddrMetricTag { obj.obj.Name = &value return obj @@ -216381,7 +259880,7 @@ func (obj *patternFlowPfcPausePauseClass6MetricTag) SetName(value string) Patter // Offset in bits relative to start of corresponding header field // Offset returns a uint32 -func (obj *patternFlowPfcPausePauseClass6MetricTag) Offset() uint32 { +func (obj *patternFlowArpSenderHardwareAddrMetricTag) Offset() uint32 { return *obj.obj.Offset @@ -216389,13 +259888,13 @@ func (obj *patternFlowPfcPausePauseClass6MetricTag) Offset() uint32 { // Offset in bits relative to start of corresponding header field // Offset returns a uint32 -func (obj *patternFlowPfcPausePauseClass6MetricTag) HasOffset() bool { +func (obj *patternFlowArpSenderHardwareAddrMetricTag) HasOffset() bool { return obj.obj.Offset != nil } // Offset in bits relative to start of corresponding header field -// SetOffset sets the uint32 value in the PatternFlowPfcPausePauseClass6MetricTag object -func (obj *patternFlowPfcPausePauseClass6MetricTag) SetOffset(value uint32) PatternFlowPfcPausePauseClass6MetricTag { +// SetOffset sets the uint32 value in the PatternFlowArpSenderHardwareAddrMetricTag object +func (obj *patternFlowArpSenderHardwareAddrMetricTag) SetOffset(value uint32) PatternFlowArpSenderHardwareAddrMetricTag { obj.obj.Offset = &value return obj @@ -216403,7 +259902,7 @@ func (obj *patternFlowPfcPausePauseClass6MetricTag) SetOffset(value uint32) Patt // Number of bits to track for metrics starting from configured offset of corresponding header field // Length returns a uint32 -func (obj *patternFlowPfcPausePauseClass6MetricTag) Length() uint32 { +func (obj *patternFlowArpSenderHardwareAddrMetricTag) Length() uint32 { return *obj.obj.Length @@ -216411,83 +259910,83 @@ func (obj *patternFlowPfcPausePauseClass6MetricTag) Length() uint32 { // Number of bits to track for metrics starting from configured offset of corresponding header field // Length returns a uint32 -func (obj *patternFlowPfcPausePauseClass6MetricTag) HasLength() bool { +func (obj *patternFlowArpSenderHardwareAddrMetricTag) HasLength() bool { return obj.obj.Length != nil } // Number of bits to track for metrics starting from configured offset of corresponding header field -// SetLength sets the uint32 value in the PatternFlowPfcPausePauseClass6MetricTag object -func (obj *patternFlowPfcPausePauseClass6MetricTag) SetLength(value uint32) PatternFlowPfcPausePauseClass6MetricTag { +// SetLength sets the uint32 value in the PatternFlowArpSenderHardwareAddrMetricTag object +func (obj *patternFlowArpSenderHardwareAddrMetricTag) SetLength(value uint32) PatternFlowArpSenderHardwareAddrMetricTag { obj.obj.Length = &value return obj } -func (obj *patternFlowPfcPausePauseClass6MetricTag) validateObj(vObj *validation, set_default bool) { +func (obj *patternFlowArpSenderHardwareAddrMetricTag) validateObj(vObj *validation, set_default bool) { if set_default { obj.setDefault() } // Name is required if obj.obj.Name == nil { - vObj.validationErrors = append(vObj.validationErrors, "Name is required field on interface PatternFlowPfcPausePauseClass6MetricTag") + vObj.validationErrors = append(vObj.validationErrors, "Name is required field on interface PatternFlowArpSenderHardwareAddrMetricTag") } if obj.obj.Offset != nil { - if *obj.obj.Offset > 15 { + if *obj.obj.Offset > 47 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowPfcPausePauseClass6MetricTag.Offset <= 15 but Got %d", *obj.obj.Offset)) + fmt.Sprintf("0 <= PatternFlowArpSenderHardwareAddrMetricTag.Offset <= 47 but Got %d", *obj.obj.Offset)) } } if obj.obj.Length != nil { - if *obj.obj.Length < 1 || *obj.obj.Length > 16 { + if *obj.obj.Length < 1 || *obj.obj.Length > 48 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("1 <= PatternFlowPfcPausePauseClass6MetricTag.Length <= 16 but Got %d", *obj.obj.Length)) + fmt.Sprintf("1 <= PatternFlowArpSenderHardwareAddrMetricTag.Length <= 48 but Got %d", *obj.obj.Length)) } } } -func (obj *patternFlowPfcPausePauseClass6MetricTag) setDefault() { +func (obj *patternFlowArpSenderHardwareAddrMetricTag) setDefault() { if obj.obj.Offset == nil { obj.SetOffset(0) } if obj.obj.Length == nil { - obj.SetLength(16) + obj.SetLength(48) } } -// ***** PatternFlowPfcPausePauseClass7Counter ***** -type patternFlowPfcPausePauseClass7Counter struct { +// ***** PatternFlowArpSenderProtocolAddrCounter ***** +type patternFlowArpSenderProtocolAddrCounter struct { validation - obj *otg.PatternFlowPfcPausePauseClass7Counter + obj *otg.PatternFlowArpSenderProtocolAddrCounter } -func NewPatternFlowPfcPausePauseClass7Counter() PatternFlowPfcPausePauseClass7Counter { - obj := patternFlowPfcPausePauseClass7Counter{obj: &otg.PatternFlowPfcPausePauseClass7Counter{}} +func NewPatternFlowArpSenderProtocolAddrCounter() PatternFlowArpSenderProtocolAddrCounter { + obj := patternFlowArpSenderProtocolAddrCounter{obj: &otg.PatternFlowArpSenderProtocolAddrCounter{}} obj.setDefault() return &obj } -func (obj *patternFlowPfcPausePauseClass7Counter) Msg() *otg.PatternFlowPfcPausePauseClass7Counter { +func (obj *patternFlowArpSenderProtocolAddrCounter) Msg() *otg.PatternFlowArpSenderProtocolAddrCounter { return obj.obj } -func (obj *patternFlowPfcPausePauseClass7Counter) SetMsg(msg *otg.PatternFlowPfcPausePauseClass7Counter) PatternFlowPfcPausePauseClass7Counter { +func (obj *patternFlowArpSenderProtocolAddrCounter) SetMsg(msg *otg.PatternFlowArpSenderProtocolAddrCounter) PatternFlowArpSenderProtocolAddrCounter { proto.Merge(obj.obj, msg) return obj } -func (obj *patternFlowPfcPausePauseClass7Counter) ToProto() (*otg.PatternFlowPfcPausePauseClass7Counter, error) { +func (obj *patternFlowArpSenderProtocolAddrCounter) ToProto() (*otg.PatternFlowArpSenderProtocolAddrCounter, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -216495,7 +259994,7 @@ func (obj *patternFlowPfcPausePauseClass7Counter) ToProto() (*otg.PatternFlowPfc return obj.Msg(), nil } -func (obj *patternFlowPfcPausePauseClass7Counter) FromProto(msg *otg.PatternFlowPfcPausePauseClass7Counter) (PatternFlowPfcPausePauseClass7Counter, error) { +func (obj *patternFlowArpSenderProtocolAddrCounter) FromProto(msg *otg.PatternFlowArpSenderProtocolAddrCounter) (PatternFlowArpSenderProtocolAddrCounter, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -216504,7 +260003,7 @@ func (obj *patternFlowPfcPausePauseClass7Counter) FromProto(msg *otg.PatternFlow return newObj, nil } -func (obj *patternFlowPfcPausePauseClass7Counter) ToPbText() (string, error) { +func (obj *patternFlowArpSenderProtocolAddrCounter) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -216516,7 +260015,7 @@ func (obj *patternFlowPfcPausePauseClass7Counter) ToPbText() (string, error) { return string(protoMarshal), nil } -func (obj *patternFlowPfcPausePauseClass7Counter) FromPbText(value string) error { +func (obj *patternFlowArpSenderProtocolAddrCounter) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj @@ -216529,7 +260028,7 @@ func (obj *patternFlowPfcPausePauseClass7Counter) FromPbText(value string) error return retObj } -func (obj *patternFlowPfcPausePauseClass7Counter) ToYaml() (string, error) { +func (obj *patternFlowArpSenderProtocolAddrCounter) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -216550,7 +260049,7 @@ func (obj *patternFlowPfcPausePauseClass7Counter) ToYaml() (string, error) { return string(data), nil } -func (obj *patternFlowPfcPausePauseClass7Counter) FromYaml(value string) error { +func (obj *patternFlowArpSenderProtocolAddrCounter) FromYaml(value string) error { if value == "" { value = "{}" } @@ -216575,7 +260074,7 @@ func (obj *patternFlowPfcPausePauseClass7Counter) FromYaml(value string) error { return nil } -func (obj *patternFlowPfcPausePauseClass7Counter) ToJson() (string, error) { +func (obj *patternFlowArpSenderProtocolAddrCounter) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -216593,7 +260092,7 @@ func (obj *patternFlowPfcPausePauseClass7Counter) ToJson() (string, error) { return string(data), nil } -func (obj *patternFlowPfcPausePauseClass7Counter) FromJson(value string) error { +func (obj *patternFlowArpSenderProtocolAddrCounter) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -216614,19 +260113,19 @@ func (obj *patternFlowPfcPausePauseClass7Counter) FromJson(value string) error { return nil } -func (obj *patternFlowPfcPausePauseClass7Counter) validateToAndFrom() error { +func (obj *patternFlowArpSenderProtocolAddrCounter) validateToAndFrom() error { // emptyVars() obj.validateObj(&obj.validation, true) return obj.validationResult() } -func (obj *patternFlowPfcPausePauseClass7Counter) Validate() error { +func (obj *patternFlowArpSenderProtocolAddrCounter) Validate() error { // emptyVars() obj.validateObj(&obj.validation, false) return obj.validationResult() } -func (obj *patternFlowPfcPausePauseClass7Counter) String() string { +func (obj *patternFlowArpSenderProtocolAddrCounter) String() string { str, err := obj.ToYaml() if err != nil { return err.Error() @@ -216634,12 +260133,12 @@ func (obj *patternFlowPfcPausePauseClass7Counter) String() string { return str } -func (obj *patternFlowPfcPausePauseClass7Counter) Clone() (PatternFlowPfcPausePauseClass7Counter, error) { +func (obj *patternFlowArpSenderProtocolAddrCounter) Clone() (PatternFlowArpSenderProtocolAddrCounter, error) { vErr := obj.Validate() if vErr != nil { return nil, vErr } - newObj := NewPatternFlowPfcPausePauseClass7Counter() + newObj := NewPatternFlowArpSenderProtocolAddrCounter() data, err := proto.Marshal(obj.Msg()) if err != nil { return nil, err @@ -216651,99 +260150,99 @@ func (obj *patternFlowPfcPausePauseClass7Counter) Clone() (PatternFlowPfcPausePa return newObj, nil } -// PatternFlowPfcPausePauseClass7Counter is integer counter pattern -type PatternFlowPfcPausePauseClass7Counter interface { +// PatternFlowArpSenderProtocolAddrCounter is ipv4 counter pattern +type PatternFlowArpSenderProtocolAddrCounter interface { Validation - // Msg marshals PatternFlowPfcPausePauseClass7Counter to protobuf object *otg.PatternFlowPfcPausePauseClass7Counter + // Msg marshals PatternFlowArpSenderProtocolAddrCounter to protobuf object *otg.PatternFlowArpSenderProtocolAddrCounter // and doesn't set defaults - Msg() *otg.PatternFlowPfcPausePauseClass7Counter - // SetMsg unmarshals PatternFlowPfcPausePauseClass7Counter from protobuf object *otg.PatternFlowPfcPausePauseClass7Counter + Msg() *otg.PatternFlowArpSenderProtocolAddrCounter + // SetMsg unmarshals PatternFlowArpSenderProtocolAddrCounter from protobuf object *otg.PatternFlowArpSenderProtocolAddrCounter // and doesn't set defaults - SetMsg(*otg.PatternFlowPfcPausePauseClass7Counter) PatternFlowPfcPausePauseClass7Counter - // ToProto marshals PatternFlowPfcPausePauseClass7Counter to protobuf object *otg.PatternFlowPfcPausePauseClass7Counter - ToProto() (*otg.PatternFlowPfcPausePauseClass7Counter, error) - // ToPbText marshals PatternFlowPfcPausePauseClass7Counter to protobuf text + SetMsg(*otg.PatternFlowArpSenderProtocolAddrCounter) PatternFlowArpSenderProtocolAddrCounter + // ToProto marshals PatternFlowArpSenderProtocolAddrCounter to protobuf object *otg.PatternFlowArpSenderProtocolAddrCounter + ToProto() (*otg.PatternFlowArpSenderProtocolAddrCounter, error) + // ToPbText marshals PatternFlowArpSenderProtocolAddrCounter to protobuf text ToPbText() (string, error) - // ToYaml marshals PatternFlowPfcPausePauseClass7Counter to YAML text + // ToYaml marshals PatternFlowArpSenderProtocolAddrCounter to YAML text ToYaml() (string, error) - // ToJson marshals PatternFlowPfcPausePauseClass7Counter to JSON text + // ToJson marshals PatternFlowArpSenderProtocolAddrCounter to JSON text ToJson() (string, error) - // FromProto unmarshals PatternFlowPfcPausePauseClass7Counter from protobuf object *otg.PatternFlowPfcPausePauseClass7Counter - FromProto(msg *otg.PatternFlowPfcPausePauseClass7Counter) (PatternFlowPfcPausePauseClass7Counter, error) - // FromPbText unmarshals PatternFlowPfcPausePauseClass7Counter from protobuf text + // FromProto unmarshals PatternFlowArpSenderProtocolAddrCounter from protobuf object *otg.PatternFlowArpSenderProtocolAddrCounter + FromProto(msg *otg.PatternFlowArpSenderProtocolAddrCounter) (PatternFlowArpSenderProtocolAddrCounter, error) + // FromPbText unmarshals PatternFlowArpSenderProtocolAddrCounter from protobuf text FromPbText(value string) error - // FromYaml unmarshals PatternFlowPfcPausePauseClass7Counter from YAML text + // FromYaml unmarshals PatternFlowArpSenderProtocolAddrCounter from YAML text FromYaml(value string) error - // FromJson unmarshals PatternFlowPfcPausePauseClass7Counter from JSON text + // FromJson unmarshals PatternFlowArpSenderProtocolAddrCounter from JSON text FromJson(value string) error - // Validate validates PatternFlowPfcPausePauseClass7Counter + // Validate validates PatternFlowArpSenderProtocolAddrCounter Validate() error // A stringer function String() string // Clones the object - Clone() (PatternFlowPfcPausePauseClass7Counter, error) + Clone() (PatternFlowArpSenderProtocolAddrCounter, error) validateToAndFrom() error validateObj(vObj *validation, set_default bool) setDefault() - // Start returns uint32, set in PatternFlowPfcPausePauseClass7Counter. - Start() uint32 - // SetStart assigns uint32 provided by user to PatternFlowPfcPausePauseClass7Counter - SetStart(value uint32) PatternFlowPfcPausePauseClass7Counter - // HasStart checks if Start has been set in PatternFlowPfcPausePauseClass7Counter + // Start returns string, set in PatternFlowArpSenderProtocolAddrCounter. + Start() string + // SetStart assigns string provided by user to PatternFlowArpSenderProtocolAddrCounter + SetStart(value string) PatternFlowArpSenderProtocolAddrCounter + // HasStart checks if Start has been set in PatternFlowArpSenderProtocolAddrCounter HasStart() bool - // Step returns uint32, set in PatternFlowPfcPausePauseClass7Counter. - Step() uint32 - // SetStep assigns uint32 provided by user to PatternFlowPfcPausePauseClass7Counter - SetStep(value uint32) PatternFlowPfcPausePauseClass7Counter - // HasStep checks if Step has been set in PatternFlowPfcPausePauseClass7Counter + // Step returns string, set in PatternFlowArpSenderProtocolAddrCounter. + Step() string + // SetStep assigns string provided by user to PatternFlowArpSenderProtocolAddrCounter + SetStep(value string) PatternFlowArpSenderProtocolAddrCounter + // HasStep checks if Step has been set in PatternFlowArpSenderProtocolAddrCounter HasStep() bool - // Count returns uint32, set in PatternFlowPfcPausePauseClass7Counter. + // Count returns uint32, set in PatternFlowArpSenderProtocolAddrCounter. Count() uint32 - // SetCount assigns uint32 provided by user to PatternFlowPfcPausePauseClass7Counter - SetCount(value uint32) PatternFlowPfcPausePauseClass7Counter - // HasCount checks if Count has been set in PatternFlowPfcPausePauseClass7Counter + // SetCount assigns uint32 provided by user to PatternFlowArpSenderProtocolAddrCounter + SetCount(value uint32) PatternFlowArpSenderProtocolAddrCounter + // HasCount checks if Count has been set in PatternFlowArpSenderProtocolAddrCounter HasCount() bool } // description is TBD -// Start returns a uint32 -func (obj *patternFlowPfcPausePauseClass7Counter) Start() uint32 { +// Start returns a string +func (obj *patternFlowArpSenderProtocolAddrCounter) Start() string { return *obj.obj.Start } // description is TBD -// Start returns a uint32 -func (obj *patternFlowPfcPausePauseClass7Counter) HasStart() bool { +// Start returns a string +func (obj *patternFlowArpSenderProtocolAddrCounter) HasStart() bool { return obj.obj.Start != nil } // description is TBD -// SetStart sets the uint32 value in the PatternFlowPfcPausePauseClass7Counter object -func (obj *patternFlowPfcPausePauseClass7Counter) SetStart(value uint32) PatternFlowPfcPausePauseClass7Counter { +// SetStart sets the string value in the PatternFlowArpSenderProtocolAddrCounter object +func (obj *patternFlowArpSenderProtocolAddrCounter) SetStart(value string) PatternFlowArpSenderProtocolAddrCounter { obj.obj.Start = &value return obj } // description is TBD -// Step returns a uint32 -func (obj *patternFlowPfcPausePauseClass7Counter) Step() uint32 { +// Step returns a string +func (obj *patternFlowArpSenderProtocolAddrCounter) Step() string { return *obj.obj.Step } // description is TBD -// Step returns a uint32 -func (obj *patternFlowPfcPausePauseClass7Counter) HasStep() bool { +// Step returns a string +func (obj *patternFlowArpSenderProtocolAddrCounter) HasStep() bool { return obj.obj.Step != nil } // description is TBD -// SetStep sets the uint32 value in the PatternFlowPfcPausePauseClass7Counter object -func (obj *patternFlowPfcPausePauseClass7Counter) SetStep(value uint32) PatternFlowPfcPausePauseClass7Counter { +// SetStep sets the string value in the PatternFlowArpSenderProtocolAddrCounter object +func (obj *patternFlowArpSenderProtocolAddrCounter) SetStep(value string) PatternFlowArpSenderProtocolAddrCounter { obj.obj.Step = &value return obj @@ -216751,7 +260250,7 @@ func (obj *patternFlowPfcPausePauseClass7Counter) SetStep(value uint32) PatternF // description is TBD // Count returns a uint32 -func (obj *patternFlowPfcPausePauseClass7Counter) Count() uint32 { +func (obj *patternFlowArpSenderProtocolAddrCounter) Count() uint32 { return *obj.obj.Count @@ -216759,61 +260258,49 @@ func (obj *patternFlowPfcPausePauseClass7Counter) Count() uint32 { // description is TBD // Count returns a uint32 -func (obj *patternFlowPfcPausePauseClass7Counter) HasCount() bool { +func (obj *patternFlowArpSenderProtocolAddrCounter) HasCount() bool { return obj.obj.Count != nil } // description is TBD -// SetCount sets the uint32 value in the PatternFlowPfcPausePauseClass7Counter object -func (obj *patternFlowPfcPausePauseClass7Counter) SetCount(value uint32) PatternFlowPfcPausePauseClass7Counter { +// SetCount sets the uint32 value in the PatternFlowArpSenderProtocolAddrCounter object +func (obj *patternFlowArpSenderProtocolAddrCounter) SetCount(value uint32) PatternFlowArpSenderProtocolAddrCounter { obj.obj.Count = &value return obj } -func (obj *patternFlowPfcPausePauseClass7Counter) validateObj(vObj *validation, set_default bool) { +func (obj *patternFlowArpSenderProtocolAddrCounter) validateObj(vObj *validation, set_default bool) { if set_default { obj.setDefault() } if obj.obj.Start != nil { - if *obj.obj.Start > 65535 { - vObj.validationErrors = append( - vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowPfcPausePauseClass7Counter.Start <= 65535 but Got %d", *obj.obj.Start)) + err := obj.validateIpv4(obj.Start()) + if err != nil { + vObj.validationErrors = append(vObj.validationErrors, fmt.Sprintf("%s %s", err.Error(), "on PatternFlowArpSenderProtocolAddrCounter.Start")) } } if obj.obj.Step != nil { - if *obj.obj.Step > 65535 { - vObj.validationErrors = append( - vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowPfcPausePauseClass7Counter.Step <= 65535 but Got %d", *obj.obj.Step)) - } - - } - - if obj.obj.Count != nil { - - if *obj.obj.Count > 65535 { - vObj.validationErrors = append( - vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowPfcPausePauseClass7Counter.Count <= 65535 but Got %d", *obj.obj.Count)) + err := obj.validateIpv4(obj.Step()) + if err != nil { + vObj.validationErrors = append(vObj.validationErrors, fmt.Sprintf("%s %s", err.Error(), "on PatternFlowArpSenderProtocolAddrCounter.Step")) } } } -func (obj *patternFlowPfcPausePauseClass7Counter) setDefault() { +func (obj *patternFlowArpSenderProtocolAddrCounter) setDefault() { if obj.obj.Start == nil { - obj.SetStart(0) + obj.SetStart("0.0.0.0") } if obj.obj.Step == nil { - obj.SetStep(1) + obj.SetStep("0.0.0.1") } if obj.obj.Count == nil { obj.SetCount(1) @@ -216821,29 +260308,29 @@ func (obj *patternFlowPfcPausePauseClass7Counter) setDefault() { } -// ***** PatternFlowPfcPausePauseClass7MetricTag ***** -type patternFlowPfcPausePauseClass7MetricTag struct { +// ***** PatternFlowArpSenderProtocolAddrMetricTag ***** +type patternFlowArpSenderProtocolAddrMetricTag struct { validation - obj *otg.PatternFlowPfcPausePauseClass7MetricTag + obj *otg.PatternFlowArpSenderProtocolAddrMetricTag } -func NewPatternFlowPfcPausePauseClass7MetricTag() PatternFlowPfcPausePauseClass7MetricTag { - obj := patternFlowPfcPausePauseClass7MetricTag{obj: &otg.PatternFlowPfcPausePauseClass7MetricTag{}} +func NewPatternFlowArpSenderProtocolAddrMetricTag() PatternFlowArpSenderProtocolAddrMetricTag { + obj := patternFlowArpSenderProtocolAddrMetricTag{obj: &otg.PatternFlowArpSenderProtocolAddrMetricTag{}} obj.setDefault() return &obj } -func (obj *patternFlowPfcPausePauseClass7MetricTag) Msg() *otg.PatternFlowPfcPausePauseClass7MetricTag { +func (obj *patternFlowArpSenderProtocolAddrMetricTag) Msg() *otg.PatternFlowArpSenderProtocolAddrMetricTag { return obj.obj } -func (obj *patternFlowPfcPausePauseClass7MetricTag) SetMsg(msg *otg.PatternFlowPfcPausePauseClass7MetricTag) PatternFlowPfcPausePauseClass7MetricTag { +func (obj *patternFlowArpSenderProtocolAddrMetricTag) SetMsg(msg *otg.PatternFlowArpSenderProtocolAddrMetricTag) PatternFlowArpSenderProtocolAddrMetricTag { proto.Merge(obj.obj, msg) return obj } -func (obj *patternFlowPfcPausePauseClass7MetricTag) ToProto() (*otg.PatternFlowPfcPausePauseClass7MetricTag, error) { +func (obj *patternFlowArpSenderProtocolAddrMetricTag) ToProto() (*otg.PatternFlowArpSenderProtocolAddrMetricTag, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -216851,7 +260338,7 @@ func (obj *patternFlowPfcPausePauseClass7MetricTag) ToProto() (*otg.PatternFlowP return obj.Msg(), nil } -func (obj *patternFlowPfcPausePauseClass7MetricTag) FromProto(msg *otg.PatternFlowPfcPausePauseClass7MetricTag) (PatternFlowPfcPausePauseClass7MetricTag, error) { +func (obj *patternFlowArpSenderProtocolAddrMetricTag) FromProto(msg *otg.PatternFlowArpSenderProtocolAddrMetricTag) (PatternFlowArpSenderProtocolAddrMetricTag, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -216860,7 +260347,7 @@ func (obj *patternFlowPfcPausePauseClass7MetricTag) FromProto(msg *otg.PatternFl return newObj, nil } -func (obj *patternFlowPfcPausePauseClass7MetricTag) ToPbText() (string, error) { +func (obj *patternFlowArpSenderProtocolAddrMetricTag) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -216872,7 +260359,7 @@ func (obj *patternFlowPfcPausePauseClass7MetricTag) ToPbText() (string, error) { return string(protoMarshal), nil } -func (obj *patternFlowPfcPausePauseClass7MetricTag) FromPbText(value string) error { +func (obj *patternFlowArpSenderProtocolAddrMetricTag) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj @@ -216885,7 +260372,7 @@ func (obj *patternFlowPfcPausePauseClass7MetricTag) FromPbText(value string) err return retObj } -func (obj *patternFlowPfcPausePauseClass7MetricTag) ToYaml() (string, error) { +func (obj *patternFlowArpSenderProtocolAddrMetricTag) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -216906,7 +260393,7 @@ func (obj *patternFlowPfcPausePauseClass7MetricTag) ToYaml() (string, error) { return string(data), nil } -func (obj *patternFlowPfcPausePauseClass7MetricTag) FromYaml(value string) error { +func (obj *patternFlowArpSenderProtocolAddrMetricTag) FromYaml(value string) error { if value == "" { value = "{}" } @@ -216931,7 +260418,7 @@ func (obj *patternFlowPfcPausePauseClass7MetricTag) FromYaml(value string) error return nil } -func (obj *patternFlowPfcPausePauseClass7MetricTag) ToJson() (string, error) { +func (obj *patternFlowArpSenderProtocolAddrMetricTag) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -216949,7 +260436,7 @@ func (obj *patternFlowPfcPausePauseClass7MetricTag) ToJson() (string, error) { return string(data), nil } -func (obj *patternFlowPfcPausePauseClass7MetricTag) FromJson(value string) error { +func (obj *patternFlowArpSenderProtocolAddrMetricTag) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -216970,19 +260457,19 @@ func (obj *patternFlowPfcPausePauseClass7MetricTag) FromJson(value string) error return nil } -func (obj *patternFlowPfcPausePauseClass7MetricTag) validateToAndFrom() error { +func (obj *patternFlowArpSenderProtocolAddrMetricTag) validateToAndFrom() error { // emptyVars() obj.validateObj(&obj.validation, true) return obj.validationResult() } -func (obj *patternFlowPfcPausePauseClass7MetricTag) Validate() error { +func (obj *patternFlowArpSenderProtocolAddrMetricTag) Validate() error { // emptyVars() obj.validateObj(&obj.validation, false) return obj.validationResult() } -func (obj *patternFlowPfcPausePauseClass7MetricTag) String() string { +func (obj *patternFlowArpSenderProtocolAddrMetricTag) String() string { str, err := obj.ToYaml() if err != nil { return err.Error() @@ -216990,12 +260477,12 @@ func (obj *patternFlowPfcPausePauseClass7MetricTag) String() string { return str } -func (obj *patternFlowPfcPausePauseClass7MetricTag) Clone() (PatternFlowPfcPausePauseClass7MetricTag, error) { +func (obj *patternFlowArpSenderProtocolAddrMetricTag) Clone() (PatternFlowArpSenderProtocolAddrMetricTag, error) { vErr := obj.Validate() if vErr != nil { return nil, vErr } - newObj := NewPatternFlowPfcPausePauseClass7MetricTag() + newObj := NewPatternFlowArpSenderProtocolAddrMetricTag() data, err := proto.Marshal(obj.Msg()) if err != nil { return nil, err @@ -217007,69 +260494,69 @@ func (obj *patternFlowPfcPausePauseClass7MetricTag) Clone() (PatternFlowPfcPause return newObj, nil } -// PatternFlowPfcPausePauseClass7MetricTag is metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. -type PatternFlowPfcPausePauseClass7MetricTag interface { +// PatternFlowArpSenderProtocolAddrMetricTag is metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. +type PatternFlowArpSenderProtocolAddrMetricTag interface { Validation - // Msg marshals PatternFlowPfcPausePauseClass7MetricTag to protobuf object *otg.PatternFlowPfcPausePauseClass7MetricTag + // Msg marshals PatternFlowArpSenderProtocolAddrMetricTag to protobuf object *otg.PatternFlowArpSenderProtocolAddrMetricTag // and doesn't set defaults - Msg() *otg.PatternFlowPfcPausePauseClass7MetricTag - // SetMsg unmarshals PatternFlowPfcPausePauseClass7MetricTag from protobuf object *otg.PatternFlowPfcPausePauseClass7MetricTag + Msg() *otg.PatternFlowArpSenderProtocolAddrMetricTag + // SetMsg unmarshals PatternFlowArpSenderProtocolAddrMetricTag from protobuf object *otg.PatternFlowArpSenderProtocolAddrMetricTag // and doesn't set defaults - SetMsg(*otg.PatternFlowPfcPausePauseClass7MetricTag) PatternFlowPfcPausePauseClass7MetricTag - // ToProto marshals PatternFlowPfcPausePauseClass7MetricTag to protobuf object *otg.PatternFlowPfcPausePauseClass7MetricTag - ToProto() (*otg.PatternFlowPfcPausePauseClass7MetricTag, error) - // ToPbText marshals PatternFlowPfcPausePauseClass7MetricTag to protobuf text + SetMsg(*otg.PatternFlowArpSenderProtocolAddrMetricTag) PatternFlowArpSenderProtocolAddrMetricTag + // ToProto marshals PatternFlowArpSenderProtocolAddrMetricTag to protobuf object *otg.PatternFlowArpSenderProtocolAddrMetricTag + ToProto() (*otg.PatternFlowArpSenderProtocolAddrMetricTag, error) + // ToPbText marshals PatternFlowArpSenderProtocolAddrMetricTag to protobuf text ToPbText() (string, error) - // ToYaml marshals PatternFlowPfcPausePauseClass7MetricTag to YAML text + // ToYaml marshals PatternFlowArpSenderProtocolAddrMetricTag to YAML text ToYaml() (string, error) - // ToJson marshals PatternFlowPfcPausePauseClass7MetricTag to JSON text + // ToJson marshals PatternFlowArpSenderProtocolAddrMetricTag to JSON text ToJson() (string, error) - // FromProto unmarshals PatternFlowPfcPausePauseClass7MetricTag from protobuf object *otg.PatternFlowPfcPausePauseClass7MetricTag - FromProto(msg *otg.PatternFlowPfcPausePauseClass7MetricTag) (PatternFlowPfcPausePauseClass7MetricTag, error) - // FromPbText unmarshals PatternFlowPfcPausePauseClass7MetricTag from protobuf text + // FromProto unmarshals PatternFlowArpSenderProtocolAddrMetricTag from protobuf object *otg.PatternFlowArpSenderProtocolAddrMetricTag + FromProto(msg *otg.PatternFlowArpSenderProtocolAddrMetricTag) (PatternFlowArpSenderProtocolAddrMetricTag, error) + // FromPbText unmarshals PatternFlowArpSenderProtocolAddrMetricTag from protobuf text FromPbText(value string) error - // FromYaml unmarshals PatternFlowPfcPausePauseClass7MetricTag from YAML text + // FromYaml unmarshals PatternFlowArpSenderProtocolAddrMetricTag from YAML text FromYaml(value string) error - // FromJson unmarshals PatternFlowPfcPausePauseClass7MetricTag from JSON text + // FromJson unmarshals PatternFlowArpSenderProtocolAddrMetricTag from JSON text FromJson(value string) error - // Validate validates PatternFlowPfcPausePauseClass7MetricTag + // Validate validates PatternFlowArpSenderProtocolAddrMetricTag Validate() error // A stringer function String() string // Clones the object - Clone() (PatternFlowPfcPausePauseClass7MetricTag, error) + Clone() (PatternFlowArpSenderProtocolAddrMetricTag, error) validateToAndFrom() error validateObj(vObj *validation, set_default bool) setDefault() - // Name returns string, set in PatternFlowPfcPausePauseClass7MetricTag. + // Name returns string, set in PatternFlowArpSenderProtocolAddrMetricTag. Name() string - // SetName assigns string provided by user to PatternFlowPfcPausePauseClass7MetricTag - SetName(value string) PatternFlowPfcPausePauseClass7MetricTag - // Offset returns uint32, set in PatternFlowPfcPausePauseClass7MetricTag. + // SetName assigns string provided by user to PatternFlowArpSenderProtocolAddrMetricTag + SetName(value string) PatternFlowArpSenderProtocolAddrMetricTag + // Offset returns uint32, set in PatternFlowArpSenderProtocolAddrMetricTag. Offset() uint32 - // SetOffset assigns uint32 provided by user to PatternFlowPfcPausePauseClass7MetricTag - SetOffset(value uint32) PatternFlowPfcPausePauseClass7MetricTag - // HasOffset checks if Offset has been set in PatternFlowPfcPausePauseClass7MetricTag + // SetOffset assigns uint32 provided by user to PatternFlowArpSenderProtocolAddrMetricTag + SetOffset(value uint32) PatternFlowArpSenderProtocolAddrMetricTag + // HasOffset checks if Offset has been set in PatternFlowArpSenderProtocolAddrMetricTag HasOffset() bool - // Length returns uint32, set in PatternFlowPfcPausePauseClass7MetricTag. + // Length returns uint32, set in PatternFlowArpSenderProtocolAddrMetricTag. Length() uint32 - // SetLength assigns uint32 provided by user to PatternFlowPfcPausePauseClass7MetricTag - SetLength(value uint32) PatternFlowPfcPausePauseClass7MetricTag - // HasLength checks if Length has been set in PatternFlowPfcPausePauseClass7MetricTag + // SetLength assigns uint32 provided by user to PatternFlowArpSenderProtocolAddrMetricTag + SetLength(value uint32) PatternFlowArpSenderProtocolAddrMetricTag + // HasLength checks if Length has been set in PatternFlowArpSenderProtocolAddrMetricTag HasLength() bool } // Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field // Name returns a string -func (obj *patternFlowPfcPausePauseClass7MetricTag) Name() string { +func (obj *patternFlowArpSenderProtocolAddrMetricTag) Name() string { return *obj.obj.Name } // Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field -// SetName sets the string value in the PatternFlowPfcPausePauseClass7MetricTag object -func (obj *patternFlowPfcPausePauseClass7MetricTag) SetName(value string) PatternFlowPfcPausePauseClass7MetricTag { +// SetName sets the string value in the PatternFlowArpSenderProtocolAddrMetricTag object +func (obj *patternFlowArpSenderProtocolAddrMetricTag) SetName(value string) PatternFlowArpSenderProtocolAddrMetricTag { obj.obj.Name = &value return obj @@ -217077,7 +260564,7 @@ func (obj *patternFlowPfcPausePauseClass7MetricTag) SetName(value string) Patter // Offset in bits relative to start of corresponding header field // Offset returns a uint32 -func (obj *patternFlowPfcPausePauseClass7MetricTag) Offset() uint32 { +func (obj *patternFlowArpSenderProtocolAddrMetricTag) Offset() uint32 { return *obj.obj.Offset @@ -217085,13 +260572,13 @@ func (obj *patternFlowPfcPausePauseClass7MetricTag) Offset() uint32 { // Offset in bits relative to start of corresponding header field // Offset returns a uint32 -func (obj *patternFlowPfcPausePauseClass7MetricTag) HasOffset() bool { +func (obj *patternFlowArpSenderProtocolAddrMetricTag) HasOffset() bool { return obj.obj.Offset != nil } // Offset in bits relative to start of corresponding header field -// SetOffset sets the uint32 value in the PatternFlowPfcPausePauseClass7MetricTag object -func (obj *patternFlowPfcPausePauseClass7MetricTag) SetOffset(value uint32) PatternFlowPfcPausePauseClass7MetricTag { +// SetOffset sets the uint32 value in the PatternFlowArpSenderProtocolAddrMetricTag object +func (obj *patternFlowArpSenderProtocolAddrMetricTag) SetOffset(value uint32) PatternFlowArpSenderProtocolAddrMetricTag { obj.obj.Offset = &value return obj @@ -217099,7 +260586,7 @@ func (obj *patternFlowPfcPausePauseClass7MetricTag) SetOffset(value uint32) Patt // Number of bits to track for metrics starting from configured offset of corresponding header field // Length returns a uint32 -func (obj *patternFlowPfcPausePauseClass7MetricTag) Length() uint32 { +func (obj *patternFlowArpSenderProtocolAddrMetricTag) Length() uint32 { return *obj.obj.Length @@ -217107,83 +260594,83 @@ func (obj *patternFlowPfcPausePauseClass7MetricTag) Length() uint32 { // Number of bits to track for metrics starting from configured offset of corresponding header field // Length returns a uint32 -func (obj *patternFlowPfcPausePauseClass7MetricTag) HasLength() bool { +func (obj *patternFlowArpSenderProtocolAddrMetricTag) HasLength() bool { return obj.obj.Length != nil } // Number of bits to track for metrics starting from configured offset of corresponding header field -// SetLength sets the uint32 value in the PatternFlowPfcPausePauseClass7MetricTag object -func (obj *patternFlowPfcPausePauseClass7MetricTag) SetLength(value uint32) PatternFlowPfcPausePauseClass7MetricTag { +// SetLength sets the uint32 value in the PatternFlowArpSenderProtocolAddrMetricTag object +func (obj *patternFlowArpSenderProtocolAddrMetricTag) SetLength(value uint32) PatternFlowArpSenderProtocolAddrMetricTag { obj.obj.Length = &value return obj } -func (obj *patternFlowPfcPausePauseClass7MetricTag) validateObj(vObj *validation, set_default bool) { +func (obj *patternFlowArpSenderProtocolAddrMetricTag) validateObj(vObj *validation, set_default bool) { if set_default { obj.setDefault() } // Name is required if obj.obj.Name == nil { - vObj.validationErrors = append(vObj.validationErrors, "Name is required field on interface PatternFlowPfcPausePauseClass7MetricTag") + vObj.validationErrors = append(vObj.validationErrors, "Name is required field on interface PatternFlowArpSenderProtocolAddrMetricTag") } if obj.obj.Offset != nil { - if *obj.obj.Offset > 15 { + if *obj.obj.Offset > 31 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowPfcPausePauseClass7MetricTag.Offset <= 15 but Got %d", *obj.obj.Offset)) + fmt.Sprintf("0 <= PatternFlowArpSenderProtocolAddrMetricTag.Offset <= 31 but Got %d", *obj.obj.Offset)) } } if obj.obj.Length != nil { - if *obj.obj.Length < 1 || *obj.obj.Length > 16 { + if *obj.obj.Length < 1 || *obj.obj.Length > 32 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("1 <= PatternFlowPfcPausePauseClass7MetricTag.Length <= 16 but Got %d", *obj.obj.Length)) + fmt.Sprintf("1 <= PatternFlowArpSenderProtocolAddrMetricTag.Length <= 32 but Got %d", *obj.obj.Length)) } } } -func (obj *patternFlowPfcPausePauseClass7MetricTag) setDefault() { +func (obj *patternFlowArpSenderProtocolAddrMetricTag) setDefault() { if obj.obj.Offset == nil { obj.SetOffset(0) } if obj.obj.Length == nil { - obj.SetLength(16) + obj.SetLength(32) } } -// ***** PatternFlowEthernetPauseDstCounter ***** -type patternFlowEthernetPauseDstCounter struct { +// ***** PatternFlowArpTargetHardwareAddrCounter ***** +type patternFlowArpTargetHardwareAddrCounter struct { validation - obj *otg.PatternFlowEthernetPauseDstCounter + obj *otg.PatternFlowArpTargetHardwareAddrCounter } -func NewPatternFlowEthernetPauseDstCounter() PatternFlowEthernetPauseDstCounter { - obj := patternFlowEthernetPauseDstCounter{obj: &otg.PatternFlowEthernetPauseDstCounter{}} +func NewPatternFlowArpTargetHardwareAddrCounter() PatternFlowArpTargetHardwareAddrCounter { + obj := patternFlowArpTargetHardwareAddrCounter{obj: &otg.PatternFlowArpTargetHardwareAddrCounter{}} obj.setDefault() return &obj } -func (obj *patternFlowEthernetPauseDstCounter) Msg() *otg.PatternFlowEthernetPauseDstCounter { +func (obj *patternFlowArpTargetHardwareAddrCounter) Msg() *otg.PatternFlowArpTargetHardwareAddrCounter { return obj.obj } -func (obj *patternFlowEthernetPauseDstCounter) SetMsg(msg *otg.PatternFlowEthernetPauseDstCounter) PatternFlowEthernetPauseDstCounter { +func (obj *patternFlowArpTargetHardwareAddrCounter) SetMsg(msg *otg.PatternFlowArpTargetHardwareAddrCounter) PatternFlowArpTargetHardwareAddrCounter { proto.Merge(obj.obj, msg) return obj } -func (obj *patternFlowEthernetPauseDstCounter) ToProto() (*otg.PatternFlowEthernetPauseDstCounter, error) { +func (obj *patternFlowArpTargetHardwareAddrCounter) ToProto() (*otg.PatternFlowArpTargetHardwareAddrCounter, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -217191,7 +260678,7 @@ func (obj *patternFlowEthernetPauseDstCounter) ToProto() (*otg.PatternFlowEthern return obj.Msg(), nil } -func (obj *patternFlowEthernetPauseDstCounter) FromProto(msg *otg.PatternFlowEthernetPauseDstCounter) (PatternFlowEthernetPauseDstCounter, error) { +func (obj *patternFlowArpTargetHardwareAddrCounter) FromProto(msg *otg.PatternFlowArpTargetHardwareAddrCounter) (PatternFlowArpTargetHardwareAddrCounter, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -217200,7 +260687,7 @@ func (obj *patternFlowEthernetPauseDstCounter) FromProto(msg *otg.PatternFlowEth return newObj, nil } -func (obj *patternFlowEthernetPauseDstCounter) ToPbText() (string, error) { +func (obj *patternFlowArpTargetHardwareAddrCounter) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -217212,7 +260699,7 @@ func (obj *patternFlowEthernetPauseDstCounter) ToPbText() (string, error) { return string(protoMarshal), nil } -func (obj *patternFlowEthernetPauseDstCounter) FromPbText(value string) error { +func (obj *patternFlowArpTargetHardwareAddrCounter) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj @@ -217225,7 +260712,7 @@ func (obj *patternFlowEthernetPauseDstCounter) FromPbText(value string) error { return retObj } -func (obj *patternFlowEthernetPauseDstCounter) ToYaml() (string, error) { +func (obj *patternFlowArpTargetHardwareAddrCounter) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -217246,7 +260733,7 @@ func (obj *patternFlowEthernetPauseDstCounter) ToYaml() (string, error) { return string(data), nil } -func (obj *patternFlowEthernetPauseDstCounter) FromYaml(value string) error { +func (obj *patternFlowArpTargetHardwareAddrCounter) FromYaml(value string) error { if value == "" { value = "{}" } @@ -217271,7 +260758,7 @@ func (obj *patternFlowEthernetPauseDstCounter) FromYaml(value string) error { return nil } -func (obj *patternFlowEthernetPauseDstCounter) ToJson() (string, error) { +func (obj *patternFlowArpTargetHardwareAddrCounter) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -217289,7 +260776,7 @@ func (obj *patternFlowEthernetPauseDstCounter) ToJson() (string, error) { return string(data), nil } -func (obj *patternFlowEthernetPauseDstCounter) FromJson(value string) error { +func (obj *patternFlowArpTargetHardwareAddrCounter) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -217310,19 +260797,19 @@ func (obj *patternFlowEthernetPauseDstCounter) FromJson(value string) error { return nil } -func (obj *patternFlowEthernetPauseDstCounter) validateToAndFrom() error { +func (obj *patternFlowArpTargetHardwareAddrCounter) validateToAndFrom() error { // emptyVars() obj.validateObj(&obj.validation, true) return obj.validationResult() } -func (obj *patternFlowEthernetPauseDstCounter) Validate() error { +func (obj *patternFlowArpTargetHardwareAddrCounter) Validate() error { // emptyVars() obj.validateObj(&obj.validation, false) return obj.validationResult() } -func (obj *patternFlowEthernetPauseDstCounter) String() string { +func (obj *patternFlowArpTargetHardwareAddrCounter) String() string { str, err := obj.ToYaml() if err != nil { return err.Error() @@ -217330,12 +260817,12 @@ func (obj *patternFlowEthernetPauseDstCounter) String() string { return str } -func (obj *patternFlowEthernetPauseDstCounter) Clone() (PatternFlowEthernetPauseDstCounter, error) { +func (obj *patternFlowArpTargetHardwareAddrCounter) Clone() (PatternFlowArpTargetHardwareAddrCounter, error) { vErr := obj.Validate() if vErr != nil { return nil, vErr } - newObj := NewPatternFlowEthernetPauseDstCounter() + newObj := NewPatternFlowArpTargetHardwareAddrCounter() data, err := proto.Marshal(obj.Msg()) if err != nil { return nil, err @@ -217347,63 +260834,63 @@ func (obj *patternFlowEthernetPauseDstCounter) Clone() (PatternFlowEthernetPause return newObj, nil } -// PatternFlowEthernetPauseDstCounter is mac counter pattern -type PatternFlowEthernetPauseDstCounter interface { +// PatternFlowArpTargetHardwareAddrCounter is mac counter pattern +type PatternFlowArpTargetHardwareAddrCounter interface { Validation - // Msg marshals PatternFlowEthernetPauseDstCounter to protobuf object *otg.PatternFlowEthernetPauseDstCounter + // Msg marshals PatternFlowArpTargetHardwareAddrCounter to protobuf object *otg.PatternFlowArpTargetHardwareAddrCounter // and doesn't set defaults - Msg() *otg.PatternFlowEthernetPauseDstCounter - // SetMsg unmarshals PatternFlowEthernetPauseDstCounter from protobuf object *otg.PatternFlowEthernetPauseDstCounter + Msg() *otg.PatternFlowArpTargetHardwareAddrCounter + // SetMsg unmarshals PatternFlowArpTargetHardwareAddrCounter from protobuf object *otg.PatternFlowArpTargetHardwareAddrCounter // and doesn't set defaults - SetMsg(*otg.PatternFlowEthernetPauseDstCounter) PatternFlowEthernetPauseDstCounter - // ToProto marshals PatternFlowEthernetPauseDstCounter to protobuf object *otg.PatternFlowEthernetPauseDstCounter - ToProto() (*otg.PatternFlowEthernetPauseDstCounter, error) - // ToPbText marshals PatternFlowEthernetPauseDstCounter to protobuf text + SetMsg(*otg.PatternFlowArpTargetHardwareAddrCounter) PatternFlowArpTargetHardwareAddrCounter + // ToProto marshals PatternFlowArpTargetHardwareAddrCounter to protobuf object *otg.PatternFlowArpTargetHardwareAddrCounter + ToProto() (*otg.PatternFlowArpTargetHardwareAddrCounter, error) + // ToPbText marshals PatternFlowArpTargetHardwareAddrCounter to protobuf text ToPbText() (string, error) - // ToYaml marshals PatternFlowEthernetPauseDstCounter to YAML text + // ToYaml marshals PatternFlowArpTargetHardwareAddrCounter to YAML text ToYaml() (string, error) - // ToJson marshals PatternFlowEthernetPauseDstCounter to JSON text + // ToJson marshals PatternFlowArpTargetHardwareAddrCounter to JSON text ToJson() (string, error) - // FromProto unmarshals PatternFlowEthernetPauseDstCounter from protobuf object *otg.PatternFlowEthernetPauseDstCounter - FromProto(msg *otg.PatternFlowEthernetPauseDstCounter) (PatternFlowEthernetPauseDstCounter, error) - // FromPbText unmarshals PatternFlowEthernetPauseDstCounter from protobuf text + // FromProto unmarshals PatternFlowArpTargetHardwareAddrCounter from protobuf object *otg.PatternFlowArpTargetHardwareAddrCounter + FromProto(msg *otg.PatternFlowArpTargetHardwareAddrCounter) (PatternFlowArpTargetHardwareAddrCounter, error) + // FromPbText unmarshals PatternFlowArpTargetHardwareAddrCounter from protobuf text FromPbText(value string) error - // FromYaml unmarshals PatternFlowEthernetPauseDstCounter from YAML text + // FromYaml unmarshals PatternFlowArpTargetHardwareAddrCounter from YAML text FromYaml(value string) error - // FromJson unmarshals PatternFlowEthernetPauseDstCounter from JSON text + // FromJson unmarshals PatternFlowArpTargetHardwareAddrCounter from JSON text FromJson(value string) error - // Validate validates PatternFlowEthernetPauseDstCounter + // Validate validates PatternFlowArpTargetHardwareAddrCounter Validate() error // A stringer function String() string // Clones the object - Clone() (PatternFlowEthernetPauseDstCounter, error) + Clone() (PatternFlowArpTargetHardwareAddrCounter, error) validateToAndFrom() error validateObj(vObj *validation, set_default bool) setDefault() - // Start returns string, set in PatternFlowEthernetPauseDstCounter. + // Start returns string, set in PatternFlowArpTargetHardwareAddrCounter. Start() string - // SetStart assigns string provided by user to PatternFlowEthernetPauseDstCounter - SetStart(value string) PatternFlowEthernetPauseDstCounter - // HasStart checks if Start has been set in PatternFlowEthernetPauseDstCounter + // SetStart assigns string provided by user to PatternFlowArpTargetHardwareAddrCounter + SetStart(value string) PatternFlowArpTargetHardwareAddrCounter + // HasStart checks if Start has been set in PatternFlowArpTargetHardwareAddrCounter HasStart() bool - // Step returns string, set in PatternFlowEthernetPauseDstCounter. + // Step returns string, set in PatternFlowArpTargetHardwareAddrCounter. Step() string - // SetStep assigns string provided by user to PatternFlowEthernetPauseDstCounter - SetStep(value string) PatternFlowEthernetPauseDstCounter - // HasStep checks if Step has been set in PatternFlowEthernetPauseDstCounter + // SetStep assigns string provided by user to PatternFlowArpTargetHardwareAddrCounter + SetStep(value string) PatternFlowArpTargetHardwareAddrCounter + // HasStep checks if Step has been set in PatternFlowArpTargetHardwareAddrCounter HasStep() bool - // Count returns uint32, set in PatternFlowEthernetPauseDstCounter. + // Count returns uint32, set in PatternFlowArpTargetHardwareAddrCounter. Count() uint32 - // SetCount assigns uint32 provided by user to PatternFlowEthernetPauseDstCounter - SetCount(value uint32) PatternFlowEthernetPauseDstCounter - // HasCount checks if Count has been set in PatternFlowEthernetPauseDstCounter + // SetCount assigns uint32 provided by user to PatternFlowArpTargetHardwareAddrCounter + SetCount(value uint32) PatternFlowArpTargetHardwareAddrCounter + // HasCount checks if Count has been set in PatternFlowArpTargetHardwareAddrCounter HasCount() bool } // description is TBD // Start returns a string -func (obj *patternFlowEthernetPauseDstCounter) Start() string { +func (obj *patternFlowArpTargetHardwareAddrCounter) Start() string { return *obj.obj.Start @@ -217411,13 +260898,13 @@ func (obj *patternFlowEthernetPauseDstCounter) Start() string { // description is TBD // Start returns a string -func (obj *patternFlowEthernetPauseDstCounter) HasStart() bool { +func (obj *patternFlowArpTargetHardwareAddrCounter) HasStart() bool { return obj.obj.Start != nil } // description is TBD -// SetStart sets the string value in the PatternFlowEthernetPauseDstCounter object -func (obj *patternFlowEthernetPauseDstCounter) SetStart(value string) PatternFlowEthernetPauseDstCounter { +// SetStart sets the string value in the PatternFlowArpTargetHardwareAddrCounter object +func (obj *patternFlowArpTargetHardwareAddrCounter) SetStart(value string) PatternFlowArpTargetHardwareAddrCounter { obj.obj.Start = &value return obj @@ -217425,7 +260912,7 @@ func (obj *patternFlowEthernetPauseDstCounter) SetStart(value string) PatternFlo // description is TBD // Step returns a string -func (obj *patternFlowEthernetPauseDstCounter) Step() string { +func (obj *patternFlowArpTargetHardwareAddrCounter) Step() string { return *obj.obj.Step @@ -217433,13 +260920,13 @@ func (obj *patternFlowEthernetPauseDstCounter) Step() string { // description is TBD // Step returns a string -func (obj *patternFlowEthernetPauseDstCounter) HasStep() bool { +func (obj *patternFlowArpTargetHardwareAddrCounter) HasStep() bool { return obj.obj.Step != nil } // description is TBD -// SetStep sets the string value in the PatternFlowEthernetPauseDstCounter object -func (obj *patternFlowEthernetPauseDstCounter) SetStep(value string) PatternFlowEthernetPauseDstCounter { +// SetStep sets the string value in the PatternFlowArpTargetHardwareAddrCounter object +func (obj *patternFlowArpTargetHardwareAddrCounter) SetStep(value string) PatternFlowArpTargetHardwareAddrCounter { obj.obj.Step = &value return obj @@ -217447,7 +260934,7 @@ func (obj *patternFlowEthernetPauseDstCounter) SetStep(value string) PatternFlow // description is TBD // Count returns a uint32 -func (obj *patternFlowEthernetPauseDstCounter) Count() uint32 { +func (obj *patternFlowArpTargetHardwareAddrCounter) Count() uint32 { return *obj.obj.Count @@ -217455,19 +260942,19 @@ func (obj *patternFlowEthernetPauseDstCounter) Count() uint32 { // description is TBD // Count returns a uint32 -func (obj *patternFlowEthernetPauseDstCounter) HasCount() bool { +func (obj *patternFlowArpTargetHardwareAddrCounter) HasCount() bool { return obj.obj.Count != nil } // description is TBD -// SetCount sets the uint32 value in the PatternFlowEthernetPauseDstCounter object -func (obj *patternFlowEthernetPauseDstCounter) SetCount(value uint32) PatternFlowEthernetPauseDstCounter { +// SetCount sets the uint32 value in the PatternFlowArpTargetHardwareAddrCounter object +func (obj *patternFlowArpTargetHardwareAddrCounter) SetCount(value uint32) PatternFlowArpTargetHardwareAddrCounter { obj.obj.Count = &value return obj } -func (obj *patternFlowEthernetPauseDstCounter) validateObj(vObj *validation, set_default bool) { +func (obj *patternFlowArpTargetHardwareAddrCounter) validateObj(vObj *validation, set_default bool) { if set_default { obj.setDefault() } @@ -217476,7 +260963,7 @@ func (obj *patternFlowEthernetPauseDstCounter) validateObj(vObj *validation, set err := obj.validateMac(obj.Start()) if err != nil { - vObj.validationErrors = append(vObj.validationErrors, fmt.Sprintf("%s %s", err.Error(), "on PatternFlowEthernetPauseDstCounter.Start")) + vObj.validationErrors = append(vObj.validationErrors, fmt.Sprintf("%s %s", err.Error(), "on PatternFlowArpTargetHardwareAddrCounter.Start")) } } @@ -217485,16 +260972,16 @@ func (obj *patternFlowEthernetPauseDstCounter) validateObj(vObj *validation, set err := obj.validateMac(obj.Step()) if err != nil { - vObj.validationErrors = append(vObj.validationErrors, fmt.Sprintf("%s %s", err.Error(), "on PatternFlowEthernetPauseDstCounter.Step")) + vObj.validationErrors = append(vObj.validationErrors, fmt.Sprintf("%s %s", err.Error(), "on PatternFlowArpTargetHardwareAddrCounter.Step")) } } } -func (obj *patternFlowEthernetPauseDstCounter) setDefault() { +func (obj *patternFlowArpTargetHardwareAddrCounter) setDefault() { if obj.obj.Start == nil { - obj.SetStart("01:80:c2:00:00:01") + obj.SetStart("00:00:00:00:00:00") } if obj.obj.Step == nil { obj.SetStep("00:00:00:00:00:01") @@ -217505,29 +260992,29 @@ func (obj *patternFlowEthernetPauseDstCounter) setDefault() { } -// ***** PatternFlowEthernetPauseDstMetricTag ***** -type patternFlowEthernetPauseDstMetricTag struct { +// ***** PatternFlowArpTargetHardwareAddrMetricTag ***** +type patternFlowArpTargetHardwareAddrMetricTag struct { validation - obj *otg.PatternFlowEthernetPauseDstMetricTag + obj *otg.PatternFlowArpTargetHardwareAddrMetricTag } -func NewPatternFlowEthernetPauseDstMetricTag() PatternFlowEthernetPauseDstMetricTag { - obj := patternFlowEthernetPauseDstMetricTag{obj: &otg.PatternFlowEthernetPauseDstMetricTag{}} +func NewPatternFlowArpTargetHardwareAddrMetricTag() PatternFlowArpTargetHardwareAddrMetricTag { + obj := patternFlowArpTargetHardwareAddrMetricTag{obj: &otg.PatternFlowArpTargetHardwareAddrMetricTag{}} obj.setDefault() return &obj } -func (obj *patternFlowEthernetPauseDstMetricTag) Msg() *otg.PatternFlowEthernetPauseDstMetricTag { +func (obj *patternFlowArpTargetHardwareAddrMetricTag) Msg() *otg.PatternFlowArpTargetHardwareAddrMetricTag { return obj.obj } -func (obj *patternFlowEthernetPauseDstMetricTag) SetMsg(msg *otg.PatternFlowEthernetPauseDstMetricTag) PatternFlowEthernetPauseDstMetricTag { +func (obj *patternFlowArpTargetHardwareAddrMetricTag) SetMsg(msg *otg.PatternFlowArpTargetHardwareAddrMetricTag) PatternFlowArpTargetHardwareAddrMetricTag { proto.Merge(obj.obj, msg) return obj } -func (obj *patternFlowEthernetPauseDstMetricTag) ToProto() (*otg.PatternFlowEthernetPauseDstMetricTag, error) { +func (obj *patternFlowArpTargetHardwareAddrMetricTag) ToProto() (*otg.PatternFlowArpTargetHardwareAddrMetricTag, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -217535,7 +261022,7 @@ func (obj *patternFlowEthernetPauseDstMetricTag) ToProto() (*otg.PatternFlowEthe return obj.Msg(), nil } -func (obj *patternFlowEthernetPauseDstMetricTag) FromProto(msg *otg.PatternFlowEthernetPauseDstMetricTag) (PatternFlowEthernetPauseDstMetricTag, error) { +func (obj *patternFlowArpTargetHardwareAddrMetricTag) FromProto(msg *otg.PatternFlowArpTargetHardwareAddrMetricTag) (PatternFlowArpTargetHardwareAddrMetricTag, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -217544,7 +261031,7 @@ func (obj *patternFlowEthernetPauseDstMetricTag) FromProto(msg *otg.PatternFlowE return newObj, nil } -func (obj *patternFlowEthernetPauseDstMetricTag) ToPbText() (string, error) { +func (obj *patternFlowArpTargetHardwareAddrMetricTag) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -217556,7 +261043,7 @@ func (obj *patternFlowEthernetPauseDstMetricTag) ToPbText() (string, error) { return string(protoMarshal), nil } -func (obj *patternFlowEthernetPauseDstMetricTag) FromPbText(value string) error { +func (obj *patternFlowArpTargetHardwareAddrMetricTag) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj @@ -217569,7 +261056,7 @@ func (obj *patternFlowEthernetPauseDstMetricTag) FromPbText(value string) error return retObj } -func (obj *patternFlowEthernetPauseDstMetricTag) ToYaml() (string, error) { +func (obj *patternFlowArpTargetHardwareAddrMetricTag) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -217590,7 +261077,7 @@ func (obj *patternFlowEthernetPauseDstMetricTag) ToYaml() (string, error) { return string(data), nil } -func (obj *patternFlowEthernetPauseDstMetricTag) FromYaml(value string) error { +func (obj *patternFlowArpTargetHardwareAddrMetricTag) FromYaml(value string) error { if value == "" { value = "{}" } @@ -217615,7 +261102,7 @@ func (obj *patternFlowEthernetPauseDstMetricTag) FromYaml(value string) error { return nil } -func (obj *patternFlowEthernetPauseDstMetricTag) ToJson() (string, error) { +func (obj *patternFlowArpTargetHardwareAddrMetricTag) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -217633,7 +261120,7 @@ func (obj *patternFlowEthernetPauseDstMetricTag) ToJson() (string, error) { return string(data), nil } -func (obj *patternFlowEthernetPauseDstMetricTag) FromJson(value string) error { +func (obj *patternFlowArpTargetHardwareAddrMetricTag) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -217654,19 +261141,19 @@ func (obj *patternFlowEthernetPauseDstMetricTag) FromJson(value string) error { return nil } -func (obj *patternFlowEthernetPauseDstMetricTag) validateToAndFrom() error { +func (obj *patternFlowArpTargetHardwareAddrMetricTag) validateToAndFrom() error { // emptyVars() obj.validateObj(&obj.validation, true) return obj.validationResult() } -func (obj *patternFlowEthernetPauseDstMetricTag) Validate() error { +func (obj *patternFlowArpTargetHardwareAddrMetricTag) Validate() error { // emptyVars() obj.validateObj(&obj.validation, false) return obj.validationResult() } -func (obj *patternFlowEthernetPauseDstMetricTag) String() string { +func (obj *patternFlowArpTargetHardwareAddrMetricTag) String() string { str, err := obj.ToYaml() if err != nil { return err.Error() @@ -217674,12 +261161,12 @@ func (obj *patternFlowEthernetPauseDstMetricTag) String() string { return str } -func (obj *patternFlowEthernetPauseDstMetricTag) Clone() (PatternFlowEthernetPauseDstMetricTag, error) { +func (obj *patternFlowArpTargetHardwareAddrMetricTag) Clone() (PatternFlowArpTargetHardwareAddrMetricTag, error) { vErr := obj.Validate() if vErr != nil { return nil, vErr } - newObj := NewPatternFlowEthernetPauseDstMetricTag() + newObj := NewPatternFlowArpTargetHardwareAddrMetricTag() data, err := proto.Marshal(obj.Msg()) if err != nil { return nil, err @@ -217691,69 +261178,69 @@ func (obj *patternFlowEthernetPauseDstMetricTag) Clone() (PatternFlowEthernetPau return newObj, nil } -// PatternFlowEthernetPauseDstMetricTag is metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. -type PatternFlowEthernetPauseDstMetricTag interface { +// PatternFlowArpTargetHardwareAddrMetricTag is metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. +type PatternFlowArpTargetHardwareAddrMetricTag interface { Validation - // Msg marshals PatternFlowEthernetPauseDstMetricTag to protobuf object *otg.PatternFlowEthernetPauseDstMetricTag + // Msg marshals PatternFlowArpTargetHardwareAddrMetricTag to protobuf object *otg.PatternFlowArpTargetHardwareAddrMetricTag // and doesn't set defaults - Msg() *otg.PatternFlowEthernetPauseDstMetricTag - // SetMsg unmarshals PatternFlowEthernetPauseDstMetricTag from protobuf object *otg.PatternFlowEthernetPauseDstMetricTag + Msg() *otg.PatternFlowArpTargetHardwareAddrMetricTag + // SetMsg unmarshals PatternFlowArpTargetHardwareAddrMetricTag from protobuf object *otg.PatternFlowArpTargetHardwareAddrMetricTag // and doesn't set defaults - SetMsg(*otg.PatternFlowEthernetPauseDstMetricTag) PatternFlowEthernetPauseDstMetricTag - // ToProto marshals PatternFlowEthernetPauseDstMetricTag to protobuf object *otg.PatternFlowEthernetPauseDstMetricTag - ToProto() (*otg.PatternFlowEthernetPauseDstMetricTag, error) - // ToPbText marshals PatternFlowEthernetPauseDstMetricTag to protobuf text + SetMsg(*otg.PatternFlowArpTargetHardwareAddrMetricTag) PatternFlowArpTargetHardwareAddrMetricTag + // ToProto marshals PatternFlowArpTargetHardwareAddrMetricTag to protobuf object *otg.PatternFlowArpTargetHardwareAddrMetricTag + ToProto() (*otg.PatternFlowArpTargetHardwareAddrMetricTag, error) + // ToPbText marshals PatternFlowArpTargetHardwareAddrMetricTag to protobuf text ToPbText() (string, error) - // ToYaml marshals PatternFlowEthernetPauseDstMetricTag to YAML text + // ToYaml marshals PatternFlowArpTargetHardwareAddrMetricTag to YAML text ToYaml() (string, error) - // ToJson marshals PatternFlowEthernetPauseDstMetricTag to JSON text + // ToJson marshals PatternFlowArpTargetHardwareAddrMetricTag to JSON text ToJson() (string, error) - // FromProto unmarshals PatternFlowEthernetPauseDstMetricTag from protobuf object *otg.PatternFlowEthernetPauseDstMetricTag - FromProto(msg *otg.PatternFlowEthernetPauseDstMetricTag) (PatternFlowEthernetPauseDstMetricTag, error) - // FromPbText unmarshals PatternFlowEthernetPauseDstMetricTag from protobuf text + // FromProto unmarshals PatternFlowArpTargetHardwareAddrMetricTag from protobuf object *otg.PatternFlowArpTargetHardwareAddrMetricTag + FromProto(msg *otg.PatternFlowArpTargetHardwareAddrMetricTag) (PatternFlowArpTargetHardwareAddrMetricTag, error) + // FromPbText unmarshals PatternFlowArpTargetHardwareAddrMetricTag from protobuf text FromPbText(value string) error - // FromYaml unmarshals PatternFlowEthernetPauseDstMetricTag from YAML text + // FromYaml unmarshals PatternFlowArpTargetHardwareAddrMetricTag from YAML text FromYaml(value string) error - // FromJson unmarshals PatternFlowEthernetPauseDstMetricTag from JSON text + // FromJson unmarshals PatternFlowArpTargetHardwareAddrMetricTag from JSON text FromJson(value string) error - // Validate validates PatternFlowEthernetPauseDstMetricTag + // Validate validates PatternFlowArpTargetHardwareAddrMetricTag Validate() error // A stringer function String() string // Clones the object - Clone() (PatternFlowEthernetPauseDstMetricTag, error) + Clone() (PatternFlowArpTargetHardwareAddrMetricTag, error) validateToAndFrom() error validateObj(vObj *validation, set_default bool) setDefault() - // Name returns string, set in PatternFlowEthernetPauseDstMetricTag. + // Name returns string, set in PatternFlowArpTargetHardwareAddrMetricTag. Name() string - // SetName assigns string provided by user to PatternFlowEthernetPauseDstMetricTag - SetName(value string) PatternFlowEthernetPauseDstMetricTag - // Offset returns uint32, set in PatternFlowEthernetPauseDstMetricTag. + // SetName assigns string provided by user to PatternFlowArpTargetHardwareAddrMetricTag + SetName(value string) PatternFlowArpTargetHardwareAddrMetricTag + // Offset returns uint32, set in PatternFlowArpTargetHardwareAddrMetricTag. Offset() uint32 - // SetOffset assigns uint32 provided by user to PatternFlowEthernetPauseDstMetricTag - SetOffset(value uint32) PatternFlowEthernetPauseDstMetricTag - // HasOffset checks if Offset has been set in PatternFlowEthernetPauseDstMetricTag + // SetOffset assigns uint32 provided by user to PatternFlowArpTargetHardwareAddrMetricTag + SetOffset(value uint32) PatternFlowArpTargetHardwareAddrMetricTag + // HasOffset checks if Offset has been set in PatternFlowArpTargetHardwareAddrMetricTag HasOffset() bool - // Length returns uint32, set in PatternFlowEthernetPauseDstMetricTag. + // Length returns uint32, set in PatternFlowArpTargetHardwareAddrMetricTag. Length() uint32 - // SetLength assigns uint32 provided by user to PatternFlowEthernetPauseDstMetricTag - SetLength(value uint32) PatternFlowEthernetPauseDstMetricTag - // HasLength checks if Length has been set in PatternFlowEthernetPauseDstMetricTag + // SetLength assigns uint32 provided by user to PatternFlowArpTargetHardwareAddrMetricTag + SetLength(value uint32) PatternFlowArpTargetHardwareAddrMetricTag + // HasLength checks if Length has been set in PatternFlowArpTargetHardwareAddrMetricTag HasLength() bool } // Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field // Name returns a string -func (obj *patternFlowEthernetPauseDstMetricTag) Name() string { +func (obj *patternFlowArpTargetHardwareAddrMetricTag) Name() string { return *obj.obj.Name } // Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field -// SetName sets the string value in the PatternFlowEthernetPauseDstMetricTag object -func (obj *patternFlowEthernetPauseDstMetricTag) SetName(value string) PatternFlowEthernetPauseDstMetricTag { +// SetName sets the string value in the PatternFlowArpTargetHardwareAddrMetricTag object +func (obj *patternFlowArpTargetHardwareAddrMetricTag) SetName(value string) PatternFlowArpTargetHardwareAddrMetricTag { obj.obj.Name = &value return obj @@ -217761,7 +261248,7 @@ func (obj *patternFlowEthernetPauseDstMetricTag) SetName(value string) PatternFl // Offset in bits relative to start of corresponding header field // Offset returns a uint32 -func (obj *patternFlowEthernetPauseDstMetricTag) Offset() uint32 { +func (obj *patternFlowArpTargetHardwareAddrMetricTag) Offset() uint32 { return *obj.obj.Offset @@ -217769,13 +261256,13 @@ func (obj *patternFlowEthernetPauseDstMetricTag) Offset() uint32 { // Offset in bits relative to start of corresponding header field // Offset returns a uint32 -func (obj *patternFlowEthernetPauseDstMetricTag) HasOffset() bool { +func (obj *patternFlowArpTargetHardwareAddrMetricTag) HasOffset() bool { return obj.obj.Offset != nil } // Offset in bits relative to start of corresponding header field -// SetOffset sets the uint32 value in the PatternFlowEthernetPauseDstMetricTag object -func (obj *patternFlowEthernetPauseDstMetricTag) SetOffset(value uint32) PatternFlowEthernetPauseDstMetricTag { +// SetOffset sets the uint32 value in the PatternFlowArpTargetHardwareAddrMetricTag object +func (obj *patternFlowArpTargetHardwareAddrMetricTag) SetOffset(value uint32) PatternFlowArpTargetHardwareAddrMetricTag { obj.obj.Offset = &value return obj @@ -217783,7 +261270,7 @@ func (obj *patternFlowEthernetPauseDstMetricTag) SetOffset(value uint32) Pattern // Number of bits to track for metrics starting from configured offset of corresponding header field // Length returns a uint32 -func (obj *patternFlowEthernetPauseDstMetricTag) Length() uint32 { +func (obj *patternFlowArpTargetHardwareAddrMetricTag) Length() uint32 { return *obj.obj.Length @@ -217791,26 +261278,26 @@ func (obj *patternFlowEthernetPauseDstMetricTag) Length() uint32 { // Number of bits to track for metrics starting from configured offset of corresponding header field // Length returns a uint32 -func (obj *patternFlowEthernetPauseDstMetricTag) HasLength() bool { +func (obj *patternFlowArpTargetHardwareAddrMetricTag) HasLength() bool { return obj.obj.Length != nil } // Number of bits to track for metrics starting from configured offset of corresponding header field -// SetLength sets the uint32 value in the PatternFlowEthernetPauseDstMetricTag object -func (obj *patternFlowEthernetPauseDstMetricTag) SetLength(value uint32) PatternFlowEthernetPauseDstMetricTag { +// SetLength sets the uint32 value in the PatternFlowArpTargetHardwareAddrMetricTag object +func (obj *patternFlowArpTargetHardwareAddrMetricTag) SetLength(value uint32) PatternFlowArpTargetHardwareAddrMetricTag { obj.obj.Length = &value return obj } -func (obj *patternFlowEthernetPauseDstMetricTag) validateObj(vObj *validation, set_default bool) { +func (obj *patternFlowArpTargetHardwareAddrMetricTag) validateObj(vObj *validation, set_default bool) { if set_default { obj.setDefault() } // Name is required if obj.obj.Name == nil { - vObj.validationErrors = append(vObj.validationErrors, "Name is required field on interface PatternFlowEthernetPauseDstMetricTag") + vObj.validationErrors = append(vObj.validationErrors, "Name is required field on interface PatternFlowArpTargetHardwareAddrMetricTag") } if obj.obj.Offset != nil { @@ -217818,7 +261305,7 @@ func (obj *patternFlowEthernetPauseDstMetricTag) validateObj(vObj *validation, s if *obj.obj.Offset > 47 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowEthernetPauseDstMetricTag.Offset <= 47 but Got %d", *obj.obj.Offset)) + fmt.Sprintf("0 <= PatternFlowArpTargetHardwareAddrMetricTag.Offset <= 47 but Got %d", *obj.obj.Offset)) } } @@ -217828,14 +261315,14 @@ func (obj *patternFlowEthernetPauseDstMetricTag) validateObj(vObj *validation, s if *obj.obj.Length < 1 || *obj.obj.Length > 48 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("1 <= PatternFlowEthernetPauseDstMetricTag.Length <= 48 but Got %d", *obj.obj.Length)) + fmt.Sprintf("1 <= PatternFlowArpTargetHardwareAddrMetricTag.Length <= 48 but Got %d", *obj.obj.Length)) } } } -func (obj *patternFlowEthernetPauseDstMetricTag) setDefault() { +func (obj *patternFlowArpTargetHardwareAddrMetricTag) setDefault() { if obj.obj.Offset == nil { obj.SetOffset(0) } @@ -217845,29 +261332,29 @@ func (obj *patternFlowEthernetPauseDstMetricTag) setDefault() { } -// ***** PatternFlowEthernetPauseSrcCounter ***** -type patternFlowEthernetPauseSrcCounter struct { +// ***** PatternFlowArpTargetProtocolAddrCounter ***** +type patternFlowArpTargetProtocolAddrCounter struct { validation - obj *otg.PatternFlowEthernetPauseSrcCounter + obj *otg.PatternFlowArpTargetProtocolAddrCounter } -func NewPatternFlowEthernetPauseSrcCounter() PatternFlowEthernetPauseSrcCounter { - obj := patternFlowEthernetPauseSrcCounter{obj: &otg.PatternFlowEthernetPauseSrcCounter{}} +func NewPatternFlowArpTargetProtocolAddrCounter() PatternFlowArpTargetProtocolAddrCounter { + obj := patternFlowArpTargetProtocolAddrCounter{obj: &otg.PatternFlowArpTargetProtocolAddrCounter{}} obj.setDefault() return &obj } -func (obj *patternFlowEthernetPauseSrcCounter) Msg() *otg.PatternFlowEthernetPauseSrcCounter { +func (obj *patternFlowArpTargetProtocolAddrCounter) Msg() *otg.PatternFlowArpTargetProtocolAddrCounter { return obj.obj } -func (obj *patternFlowEthernetPauseSrcCounter) SetMsg(msg *otg.PatternFlowEthernetPauseSrcCounter) PatternFlowEthernetPauseSrcCounter { +func (obj *patternFlowArpTargetProtocolAddrCounter) SetMsg(msg *otg.PatternFlowArpTargetProtocolAddrCounter) PatternFlowArpTargetProtocolAddrCounter { proto.Merge(obj.obj, msg) return obj } -func (obj *patternFlowEthernetPauseSrcCounter) ToProto() (*otg.PatternFlowEthernetPauseSrcCounter, error) { +func (obj *patternFlowArpTargetProtocolAddrCounter) ToProto() (*otg.PatternFlowArpTargetProtocolAddrCounter, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -217875,7 +261362,7 @@ func (obj *patternFlowEthernetPauseSrcCounter) ToProto() (*otg.PatternFlowEthern return obj.Msg(), nil } -func (obj *patternFlowEthernetPauseSrcCounter) FromProto(msg *otg.PatternFlowEthernetPauseSrcCounter) (PatternFlowEthernetPauseSrcCounter, error) { +func (obj *patternFlowArpTargetProtocolAddrCounter) FromProto(msg *otg.PatternFlowArpTargetProtocolAddrCounter) (PatternFlowArpTargetProtocolAddrCounter, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -217884,7 +261371,7 @@ func (obj *patternFlowEthernetPauseSrcCounter) FromProto(msg *otg.PatternFlowEth return newObj, nil } -func (obj *patternFlowEthernetPauseSrcCounter) ToPbText() (string, error) { +func (obj *patternFlowArpTargetProtocolAddrCounter) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -217896,7 +261383,7 @@ func (obj *patternFlowEthernetPauseSrcCounter) ToPbText() (string, error) { return string(protoMarshal), nil } -func (obj *patternFlowEthernetPauseSrcCounter) FromPbText(value string) error { +func (obj *patternFlowArpTargetProtocolAddrCounter) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj @@ -217909,7 +261396,7 @@ func (obj *patternFlowEthernetPauseSrcCounter) FromPbText(value string) error { return retObj } -func (obj *patternFlowEthernetPauseSrcCounter) ToYaml() (string, error) { +func (obj *patternFlowArpTargetProtocolAddrCounter) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -217930,7 +261417,7 @@ func (obj *patternFlowEthernetPauseSrcCounter) ToYaml() (string, error) { return string(data), nil } -func (obj *patternFlowEthernetPauseSrcCounter) FromYaml(value string) error { +func (obj *patternFlowArpTargetProtocolAddrCounter) FromYaml(value string) error { if value == "" { value = "{}" } @@ -217955,7 +261442,7 @@ func (obj *patternFlowEthernetPauseSrcCounter) FromYaml(value string) error { return nil } -func (obj *patternFlowEthernetPauseSrcCounter) ToJson() (string, error) { +func (obj *patternFlowArpTargetProtocolAddrCounter) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -217973,7 +261460,7 @@ func (obj *patternFlowEthernetPauseSrcCounter) ToJson() (string, error) { return string(data), nil } -func (obj *patternFlowEthernetPauseSrcCounter) FromJson(value string) error { +func (obj *patternFlowArpTargetProtocolAddrCounter) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -217994,19 +261481,19 @@ func (obj *patternFlowEthernetPauseSrcCounter) FromJson(value string) error { return nil } -func (obj *patternFlowEthernetPauseSrcCounter) validateToAndFrom() error { +func (obj *patternFlowArpTargetProtocolAddrCounter) validateToAndFrom() error { // emptyVars() obj.validateObj(&obj.validation, true) return obj.validationResult() } -func (obj *patternFlowEthernetPauseSrcCounter) Validate() error { +func (obj *patternFlowArpTargetProtocolAddrCounter) Validate() error { // emptyVars() obj.validateObj(&obj.validation, false) return obj.validationResult() } -func (obj *patternFlowEthernetPauseSrcCounter) String() string { +func (obj *patternFlowArpTargetProtocolAddrCounter) String() string { str, err := obj.ToYaml() if err != nil { return err.Error() @@ -218014,12 +261501,12 @@ func (obj *patternFlowEthernetPauseSrcCounter) String() string { return str } -func (obj *patternFlowEthernetPauseSrcCounter) Clone() (PatternFlowEthernetPauseSrcCounter, error) { +func (obj *patternFlowArpTargetProtocolAddrCounter) Clone() (PatternFlowArpTargetProtocolAddrCounter, error) { vErr := obj.Validate() if vErr != nil { return nil, vErr } - newObj := NewPatternFlowEthernetPauseSrcCounter() + newObj := NewPatternFlowArpTargetProtocolAddrCounter() data, err := proto.Marshal(obj.Msg()) if err != nil { return nil, err @@ -218031,63 +261518,63 @@ func (obj *patternFlowEthernetPauseSrcCounter) Clone() (PatternFlowEthernetPause return newObj, nil } -// PatternFlowEthernetPauseSrcCounter is mac counter pattern -type PatternFlowEthernetPauseSrcCounter interface { +// PatternFlowArpTargetProtocolAddrCounter is ipv4 counter pattern +type PatternFlowArpTargetProtocolAddrCounter interface { Validation - // Msg marshals PatternFlowEthernetPauseSrcCounter to protobuf object *otg.PatternFlowEthernetPauseSrcCounter + // Msg marshals PatternFlowArpTargetProtocolAddrCounter to protobuf object *otg.PatternFlowArpTargetProtocolAddrCounter // and doesn't set defaults - Msg() *otg.PatternFlowEthernetPauseSrcCounter - // SetMsg unmarshals PatternFlowEthernetPauseSrcCounter from protobuf object *otg.PatternFlowEthernetPauseSrcCounter + Msg() *otg.PatternFlowArpTargetProtocolAddrCounter + // SetMsg unmarshals PatternFlowArpTargetProtocolAddrCounter from protobuf object *otg.PatternFlowArpTargetProtocolAddrCounter // and doesn't set defaults - SetMsg(*otg.PatternFlowEthernetPauseSrcCounter) PatternFlowEthernetPauseSrcCounter - // ToProto marshals PatternFlowEthernetPauseSrcCounter to protobuf object *otg.PatternFlowEthernetPauseSrcCounter - ToProto() (*otg.PatternFlowEthernetPauseSrcCounter, error) - // ToPbText marshals PatternFlowEthernetPauseSrcCounter to protobuf text + SetMsg(*otg.PatternFlowArpTargetProtocolAddrCounter) PatternFlowArpTargetProtocolAddrCounter + // ToProto marshals PatternFlowArpTargetProtocolAddrCounter to protobuf object *otg.PatternFlowArpTargetProtocolAddrCounter + ToProto() (*otg.PatternFlowArpTargetProtocolAddrCounter, error) + // ToPbText marshals PatternFlowArpTargetProtocolAddrCounter to protobuf text ToPbText() (string, error) - // ToYaml marshals PatternFlowEthernetPauseSrcCounter to YAML text + // ToYaml marshals PatternFlowArpTargetProtocolAddrCounter to YAML text ToYaml() (string, error) - // ToJson marshals PatternFlowEthernetPauseSrcCounter to JSON text + // ToJson marshals PatternFlowArpTargetProtocolAddrCounter to JSON text ToJson() (string, error) - // FromProto unmarshals PatternFlowEthernetPauseSrcCounter from protobuf object *otg.PatternFlowEthernetPauseSrcCounter - FromProto(msg *otg.PatternFlowEthernetPauseSrcCounter) (PatternFlowEthernetPauseSrcCounter, error) - // FromPbText unmarshals PatternFlowEthernetPauseSrcCounter from protobuf text + // FromProto unmarshals PatternFlowArpTargetProtocolAddrCounter from protobuf object *otg.PatternFlowArpTargetProtocolAddrCounter + FromProto(msg *otg.PatternFlowArpTargetProtocolAddrCounter) (PatternFlowArpTargetProtocolAddrCounter, error) + // FromPbText unmarshals PatternFlowArpTargetProtocolAddrCounter from protobuf text FromPbText(value string) error - // FromYaml unmarshals PatternFlowEthernetPauseSrcCounter from YAML text + // FromYaml unmarshals PatternFlowArpTargetProtocolAddrCounter from YAML text FromYaml(value string) error - // FromJson unmarshals PatternFlowEthernetPauseSrcCounter from JSON text + // FromJson unmarshals PatternFlowArpTargetProtocolAddrCounter from JSON text FromJson(value string) error - // Validate validates PatternFlowEthernetPauseSrcCounter + // Validate validates PatternFlowArpTargetProtocolAddrCounter Validate() error // A stringer function String() string // Clones the object - Clone() (PatternFlowEthernetPauseSrcCounter, error) + Clone() (PatternFlowArpTargetProtocolAddrCounter, error) validateToAndFrom() error validateObj(vObj *validation, set_default bool) setDefault() - // Start returns string, set in PatternFlowEthernetPauseSrcCounter. + // Start returns string, set in PatternFlowArpTargetProtocolAddrCounter. Start() string - // SetStart assigns string provided by user to PatternFlowEthernetPauseSrcCounter - SetStart(value string) PatternFlowEthernetPauseSrcCounter - // HasStart checks if Start has been set in PatternFlowEthernetPauseSrcCounter + // SetStart assigns string provided by user to PatternFlowArpTargetProtocolAddrCounter + SetStart(value string) PatternFlowArpTargetProtocolAddrCounter + // HasStart checks if Start has been set in PatternFlowArpTargetProtocolAddrCounter HasStart() bool - // Step returns string, set in PatternFlowEthernetPauseSrcCounter. + // Step returns string, set in PatternFlowArpTargetProtocolAddrCounter. Step() string - // SetStep assigns string provided by user to PatternFlowEthernetPauseSrcCounter - SetStep(value string) PatternFlowEthernetPauseSrcCounter - // HasStep checks if Step has been set in PatternFlowEthernetPauseSrcCounter + // SetStep assigns string provided by user to PatternFlowArpTargetProtocolAddrCounter + SetStep(value string) PatternFlowArpTargetProtocolAddrCounter + // HasStep checks if Step has been set in PatternFlowArpTargetProtocolAddrCounter HasStep() bool - // Count returns uint32, set in PatternFlowEthernetPauseSrcCounter. + // Count returns uint32, set in PatternFlowArpTargetProtocolAddrCounter. Count() uint32 - // SetCount assigns uint32 provided by user to PatternFlowEthernetPauseSrcCounter - SetCount(value uint32) PatternFlowEthernetPauseSrcCounter - // HasCount checks if Count has been set in PatternFlowEthernetPauseSrcCounter + // SetCount assigns uint32 provided by user to PatternFlowArpTargetProtocolAddrCounter + SetCount(value uint32) PatternFlowArpTargetProtocolAddrCounter + // HasCount checks if Count has been set in PatternFlowArpTargetProtocolAddrCounter HasCount() bool } // description is TBD // Start returns a string -func (obj *patternFlowEthernetPauseSrcCounter) Start() string { +func (obj *patternFlowArpTargetProtocolAddrCounter) Start() string { return *obj.obj.Start @@ -218095,13 +261582,13 @@ func (obj *patternFlowEthernetPauseSrcCounter) Start() string { // description is TBD // Start returns a string -func (obj *patternFlowEthernetPauseSrcCounter) HasStart() bool { +func (obj *patternFlowArpTargetProtocolAddrCounter) HasStart() bool { return obj.obj.Start != nil } // description is TBD -// SetStart sets the string value in the PatternFlowEthernetPauseSrcCounter object -func (obj *patternFlowEthernetPauseSrcCounter) SetStart(value string) PatternFlowEthernetPauseSrcCounter { +// SetStart sets the string value in the PatternFlowArpTargetProtocolAddrCounter object +func (obj *patternFlowArpTargetProtocolAddrCounter) SetStart(value string) PatternFlowArpTargetProtocolAddrCounter { obj.obj.Start = &value return obj @@ -218109,7 +261596,7 @@ func (obj *patternFlowEthernetPauseSrcCounter) SetStart(value string) PatternFlo // description is TBD // Step returns a string -func (obj *patternFlowEthernetPauseSrcCounter) Step() string { +func (obj *patternFlowArpTargetProtocolAddrCounter) Step() string { return *obj.obj.Step @@ -218117,13 +261604,13 @@ func (obj *patternFlowEthernetPauseSrcCounter) Step() string { // description is TBD // Step returns a string -func (obj *patternFlowEthernetPauseSrcCounter) HasStep() bool { +func (obj *patternFlowArpTargetProtocolAddrCounter) HasStep() bool { return obj.obj.Step != nil } // description is TBD -// SetStep sets the string value in the PatternFlowEthernetPauseSrcCounter object -func (obj *patternFlowEthernetPauseSrcCounter) SetStep(value string) PatternFlowEthernetPauseSrcCounter { +// SetStep sets the string value in the PatternFlowArpTargetProtocolAddrCounter object +func (obj *patternFlowArpTargetProtocolAddrCounter) SetStep(value string) PatternFlowArpTargetProtocolAddrCounter { obj.obj.Step = &value return obj @@ -218131,7 +261618,7 @@ func (obj *patternFlowEthernetPauseSrcCounter) SetStep(value string) PatternFlow // description is TBD // Count returns a uint32 -func (obj *patternFlowEthernetPauseSrcCounter) Count() uint32 { +func (obj *patternFlowArpTargetProtocolAddrCounter) Count() uint32 { return *obj.obj.Count @@ -218139,49 +261626,49 @@ func (obj *patternFlowEthernetPauseSrcCounter) Count() uint32 { // description is TBD // Count returns a uint32 -func (obj *patternFlowEthernetPauseSrcCounter) HasCount() bool { +func (obj *patternFlowArpTargetProtocolAddrCounter) HasCount() bool { return obj.obj.Count != nil } // description is TBD -// SetCount sets the uint32 value in the PatternFlowEthernetPauseSrcCounter object -func (obj *patternFlowEthernetPauseSrcCounter) SetCount(value uint32) PatternFlowEthernetPauseSrcCounter { +// SetCount sets the uint32 value in the PatternFlowArpTargetProtocolAddrCounter object +func (obj *patternFlowArpTargetProtocolAddrCounter) SetCount(value uint32) PatternFlowArpTargetProtocolAddrCounter { obj.obj.Count = &value return obj } -func (obj *patternFlowEthernetPauseSrcCounter) validateObj(vObj *validation, set_default bool) { +func (obj *patternFlowArpTargetProtocolAddrCounter) validateObj(vObj *validation, set_default bool) { if set_default { obj.setDefault() } if obj.obj.Start != nil { - err := obj.validateMac(obj.Start()) + err := obj.validateIpv4(obj.Start()) if err != nil { - vObj.validationErrors = append(vObj.validationErrors, fmt.Sprintf("%s %s", err.Error(), "on PatternFlowEthernetPauseSrcCounter.Start")) + vObj.validationErrors = append(vObj.validationErrors, fmt.Sprintf("%s %s", err.Error(), "on PatternFlowArpTargetProtocolAddrCounter.Start")) } } if obj.obj.Step != nil { - err := obj.validateMac(obj.Step()) + err := obj.validateIpv4(obj.Step()) if err != nil { - vObj.validationErrors = append(vObj.validationErrors, fmt.Sprintf("%s %s", err.Error(), "on PatternFlowEthernetPauseSrcCounter.Step")) + vObj.validationErrors = append(vObj.validationErrors, fmt.Sprintf("%s %s", err.Error(), "on PatternFlowArpTargetProtocolAddrCounter.Step")) } } } -func (obj *patternFlowEthernetPauseSrcCounter) setDefault() { +func (obj *patternFlowArpTargetProtocolAddrCounter) setDefault() { if obj.obj.Start == nil { - obj.SetStart("00:00:00:00:00:00") + obj.SetStart("0.0.0.0") } if obj.obj.Step == nil { - obj.SetStep("00:00:00:00:00:01") + obj.SetStep("0.0.0.1") } if obj.obj.Count == nil { obj.SetCount(1) @@ -218189,29 +261676,29 @@ func (obj *patternFlowEthernetPauseSrcCounter) setDefault() { } -// ***** PatternFlowEthernetPauseSrcMetricTag ***** -type patternFlowEthernetPauseSrcMetricTag struct { +// ***** PatternFlowArpTargetProtocolAddrMetricTag ***** +type patternFlowArpTargetProtocolAddrMetricTag struct { validation - obj *otg.PatternFlowEthernetPauseSrcMetricTag + obj *otg.PatternFlowArpTargetProtocolAddrMetricTag } -func NewPatternFlowEthernetPauseSrcMetricTag() PatternFlowEthernetPauseSrcMetricTag { - obj := patternFlowEthernetPauseSrcMetricTag{obj: &otg.PatternFlowEthernetPauseSrcMetricTag{}} +func NewPatternFlowArpTargetProtocolAddrMetricTag() PatternFlowArpTargetProtocolAddrMetricTag { + obj := patternFlowArpTargetProtocolAddrMetricTag{obj: &otg.PatternFlowArpTargetProtocolAddrMetricTag{}} obj.setDefault() return &obj } -func (obj *patternFlowEthernetPauseSrcMetricTag) Msg() *otg.PatternFlowEthernetPauseSrcMetricTag { +func (obj *patternFlowArpTargetProtocolAddrMetricTag) Msg() *otg.PatternFlowArpTargetProtocolAddrMetricTag { return obj.obj } -func (obj *patternFlowEthernetPauseSrcMetricTag) SetMsg(msg *otg.PatternFlowEthernetPauseSrcMetricTag) PatternFlowEthernetPauseSrcMetricTag { +func (obj *patternFlowArpTargetProtocolAddrMetricTag) SetMsg(msg *otg.PatternFlowArpTargetProtocolAddrMetricTag) PatternFlowArpTargetProtocolAddrMetricTag { proto.Merge(obj.obj, msg) return obj } -func (obj *patternFlowEthernetPauseSrcMetricTag) ToProto() (*otg.PatternFlowEthernetPauseSrcMetricTag, error) { +func (obj *patternFlowArpTargetProtocolAddrMetricTag) ToProto() (*otg.PatternFlowArpTargetProtocolAddrMetricTag, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -218219,7 +261706,7 @@ func (obj *patternFlowEthernetPauseSrcMetricTag) ToProto() (*otg.PatternFlowEthe return obj.Msg(), nil } -func (obj *patternFlowEthernetPauseSrcMetricTag) FromProto(msg *otg.PatternFlowEthernetPauseSrcMetricTag) (PatternFlowEthernetPauseSrcMetricTag, error) { +func (obj *patternFlowArpTargetProtocolAddrMetricTag) FromProto(msg *otg.PatternFlowArpTargetProtocolAddrMetricTag) (PatternFlowArpTargetProtocolAddrMetricTag, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -218228,7 +261715,7 @@ func (obj *patternFlowEthernetPauseSrcMetricTag) FromProto(msg *otg.PatternFlowE return newObj, nil } -func (obj *patternFlowEthernetPauseSrcMetricTag) ToPbText() (string, error) { +func (obj *patternFlowArpTargetProtocolAddrMetricTag) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -218240,7 +261727,7 @@ func (obj *patternFlowEthernetPauseSrcMetricTag) ToPbText() (string, error) { return string(protoMarshal), nil } -func (obj *patternFlowEthernetPauseSrcMetricTag) FromPbText(value string) error { +func (obj *patternFlowArpTargetProtocolAddrMetricTag) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj @@ -218253,7 +261740,7 @@ func (obj *patternFlowEthernetPauseSrcMetricTag) FromPbText(value string) error return retObj } -func (obj *patternFlowEthernetPauseSrcMetricTag) ToYaml() (string, error) { +func (obj *patternFlowArpTargetProtocolAddrMetricTag) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -218274,7 +261761,7 @@ func (obj *patternFlowEthernetPauseSrcMetricTag) ToYaml() (string, error) { return string(data), nil } -func (obj *patternFlowEthernetPauseSrcMetricTag) FromYaml(value string) error { +func (obj *patternFlowArpTargetProtocolAddrMetricTag) FromYaml(value string) error { if value == "" { value = "{}" } @@ -218299,7 +261786,7 @@ func (obj *patternFlowEthernetPauseSrcMetricTag) FromYaml(value string) error { return nil } -func (obj *patternFlowEthernetPauseSrcMetricTag) ToJson() (string, error) { +func (obj *patternFlowArpTargetProtocolAddrMetricTag) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -218317,7 +261804,7 @@ func (obj *patternFlowEthernetPauseSrcMetricTag) ToJson() (string, error) { return string(data), nil } -func (obj *patternFlowEthernetPauseSrcMetricTag) FromJson(value string) error { +func (obj *patternFlowArpTargetProtocolAddrMetricTag) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -218338,19 +261825,19 @@ func (obj *patternFlowEthernetPauseSrcMetricTag) FromJson(value string) error { return nil } -func (obj *patternFlowEthernetPauseSrcMetricTag) validateToAndFrom() error { +func (obj *patternFlowArpTargetProtocolAddrMetricTag) validateToAndFrom() error { // emptyVars() obj.validateObj(&obj.validation, true) return obj.validationResult() } -func (obj *patternFlowEthernetPauseSrcMetricTag) Validate() error { +func (obj *patternFlowArpTargetProtocolAddrMetricTag) Validate() error { // emptyVars() obj.validateObj(&obj.validation, false) return obj.validationResult() } -func (obj *patternFlowEthernetPauseSrcMetricTag) String() string { +func (obj *patternFlowArpTargetProtocolAddrMetricTag) String() string { str, err := obj.ToYaml() if err != nil { return err.Error() @@ -218358,12 +261845,12 @@ func (obj *patternFlowEthernetPauseSrcMetricTag) String() string { return str } -func (obj *patternFlowEthernetPauseSrcMetricTag) Clone() (PatternFlowEthernetPauseSrcMetricTag, error) { +func (obj *patternFlowArpTargetProtocolAddrMetricTag) Clone() (PatternFlowArpTargetProtocolAddrMetricTag, error) { vErr := obj.Validate() if vErr != nil { return nil, vErr } - newObj := NewPatternFlowEthernetPauseSrcMetricTag() + newObj := NewPatternFlowArpTargetProtocolAddrMetricTag() data, err := proto.Marshal(obj.Msg()) if err != nil { return nil, err @@ -218375,69 +261862,69 @@ func (obj *patternFlowEthernetPauseSrcMetricTag) Clone() (PatternFlowEthernetPau return newObj, nil } -// PatternFlowEthernetPauseSrcMetricTag is metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. -type PatternFlowEthernetPauseSrcMetricTag interface { +// PatternFlowArpTargetProtocolAddrMetricTag is metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. +type PatternFlowArpTargetProtocolAddrMetricTag interface { Validation - // Msg marshals PatternFlowEthernetPauseSrcMetricTag to protobuf object *otg.PatternFlowEthernetPauseSrcMetricTag + // Msg marshals PatternFlowArpTargetProtocolAddrMetricTag to protobuf object *otg.PatternFlowArpTargetProtocolAddrMetricTag // and doesn't set defaults - Msg() *otg.PatternFlowEthernetPauseSrcMetricTag - // SetMsg unmarshals PatternFlowEthernetPauseSrcMetricTag from protobuf object *otg.PatternFlowEthernetPauseSrcMetricTag + Msg() *otg.PatternFlowArpTargetProtocolAddrMetricTag + // SetMsg unmarshals PatternFlowArpTargetProtocolAddrMetricTag from protobuf object *otg.PatternFlowArpTargetProtocolAddrMetricTag // and doesn't set defaults - SetMsg(*otg.PatternFlowEthernetPauseSrcMetricTag) PatternFlowEthernetPauseSrcMetricTag - // ToProto marshals PatternFlowEthernetPauseSrcMetricTag to protobuf object *otg.PatternFlowEthernetPauseSrcMetricTag - ToProto() (*otg.PatternFlowEthernetPauseSrcMetricTag, error) - // ToPbText marshals PatternFlowEthernetPauseSrcMetricTag to protobuf text + SetMsg(*otg.PatternFlowArpTargetProtocolAddrMetricTag) PatternFlowArpTargetProtocolAddrMetricTag + // ToProto marshals PatternFlowArpTargetProtocolAddrMetricTag to protobuf object *otg.PatternFlowArpTargetProtocolAddrMetricTag + ToProto() (*otg.PatternFlowArpTargetProtocolAddrMetricTag, error) + // ToPbText marshals PatternFlowArpTargetProtocolAddrMetricTag to protobuf text ToPbText() (string, error) - // ToYaml marshals PatternFlowEthernetPauseSrcMetricTag to YAML text + // ToYaml marshals PatternFlowArpTargetProtocolAddrMetricTag to YAML text ToYaml() (string, error) - // ToJson marshals PatternFlowEthernetPauseSrcMetricTag to JSON text + // ToJson marshals PatternFlowArpTargetProtocolAddrMetricTag to JSON text ToJson() (string, error) - // FromProto unmarshals PatternFlowEthernetPauseSrcMetricTag from protobuf object *otg.PatternFlowEthernetPauseSrcMetricTag - FromProto(msg *otg.PatternFlowEthernetPauseSrcMetricTag) (PatternFlowEthernetPauseSrcMetricTag, error) - // FromPbText unmarshals PatternFlowEthernetPauseSrcMetricTag from protobuf text + // FromProto unmarshals PatternFlowArpTargetProtocolAddrMetricTag from protobuf object *otg.PatternFlowArpTargetProtocolAddrMetricTag + FromProto(msg *otg.PatternFlowArpTargetProtocolAddrMetricTag) (PatternFlowArpTargetProtocolAddrMetricTag, error) + // FromPbText unmarshals PatternFlowArpTargetProtocolAddrMetricTag from protobuf text FromPbText(value string) error - // FromYaml unmarshals PatternFlowEthernetPauseSrcMetricTag from YAML text + // FromYaml unmarshals PatternFlowArpTargetProtocolAddrMetricTag from YAML text FromYaml(value string) error - // FromJson unmarshals PatternFlowEthernetPauseSrcMetricTag from JSON text + // FromJson unmarshals PatternFlowArpTargetProtocolAddrMetricTag from JSON text FromJson(value string) error - // Validate validates PatternFlowEthernetPauseSrcMetricTag + // Validate validates PatternFlowArpTargetProtocolAddrMetricTag Validate() error // A stringer function String() string // Clones the object - Clone() (PatternFlowEthernetPauseSrcMetricTag, error) + Clone() (PatternFlowArpTargetProtocolAddrMetricTag, error) validateToAndFrom() error validateObj(vObj *validation, set_default bool) setDefault() - // Name returns string, set in PatternFlowEthernetPauseSrcMetricTag. + // Name returns string, set in PatternFlowArpTargetProtocolAddrMetricTag. Name() string - // SetName assigns string provided by user to PatternFlowEthernetPauseSrcMetricTag - SetName(value string) PatternFlowEthernetPauseSrcMetricTag - // Offset returns uint32, set in PatternFlowEthernetPauseSrcMetricTag. + // SetName assigns string provided by user to PatternFlowArpTargetProtocolAddrMetricTag + SetName(value string) PatternFlowArpTargetProtocolAddrMetricTag + // Offset returns uint32, set in PatternFlowArpTargetProtocolAddrMetricTag. Offset() uint32 - // SetOffset assigns uint32 provided by user to PatternFlowEthernetPauseSrcMetricTag - SetOffset(value uint32) PatternFlowEthernetPauseSrcMetricTag - // HasOffset checks if Offset has been set in PatternFlowEthernetPauseSrcMetricTag + // SetOffset assigns uint32 provided by user to PatternFlowArpTargetProtocolAddrMetricTag + SetOffset(value uint32) PatternFlowArpTargetProtocolAddrMetricTag + // HasOffset checks if Offset has been set in PatternFlowArpTargetProtocolAddrMetricTag HasOffset() bool - // Length returns uint32, set in PatternFlowEthernetPauseSrcMetricTag. + // Length returns uint32, set in PatternFlowArpTargetProtocolAddrMetricTag. Length() uint32 - // SetLength assigns uint32 provided by user to PatternFlowEthernetPauseSrcMetricTag - SetLength(value uint32) PatternFlowEthernetPauseSrcMetricTag - // HasLength checks if Length has been set in PatternFlowEthernetPauseSrcMetricTag + // SetLength assigns uint32 provided by user to PatternFlowArpTargetProtocolAddrMetricTag + SetLength(value uint32) PatternFlowArpTargetProtocolAddrMetricTag + // HasLength checks if Length has been set in PatternFlowArpTargetProtocolAddrMetricTag HasLength() bool } // Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field // Name returns a string -func (obj *patternFlowEthernetPauseSrcMetricTag) Name() string { +func (obj *patternFlowArpTargetProtocolAddrMetricTag) Name() string { return *obj.obj.Name } // Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field -// SetName sets the string value in the PatternFlowEthernetPauseSrcMetricTag object -func (obj *patternFlowEthernetPauseSrcMetricTag) SetName(value string) PatternFlowEthernetPauseSrcMetricTag { +// SetName sets the string value in the PatternFlowArpTargetProtocolAddrMetricTag object +func (obj *patternFlowArpTargetProtocolAddrMetricTag) SetName(value string) PatternFlowArpTargetProtocolAddrMetricTag { obj.obj.Name = &value return obj @@ -218445,7 +261932,7 @@ func (obj *patternFlowEthernetPauseSrcMetricTag) SetName(value string) PatternFl // Offset in bits relative to start of corresponding header field // Offset returns a uint32 -func (obj *patternFlowEthernetPauseSrcMetricTag) Offset() uint32 { +func (obj *patternFlowArpTargetProtocolAddrMetricTag) Offset() uint32 { return *obj.obj.Offset @@ -218453,13 +261940,13 @@ func (obj *patternFlowEthernetPauseSrcMetricTag) Offset() uint32 { // Offset in bits relative to start of corresponding header field // Offset returns a uint32 -func (obj *patternFlowEthernetPauseSrcMetricTag) HasOffset() bool { +func (obj *patternFlowArpTargetProtocolAddrMetricTag) HasOffset() bool { return obj.obj.Offset != nil } // Offset in bits relative to start of corresponding header field -// SetOffset sets the uint32 value in the PatternFlowEthernetPauseSrcMetricTag object -func (obj *patternFlowEthernetPauseSrcMetricTag) SetOffset(value uint32) PatternFlowEthernetPauseSrcMetricTag { +// SetOffset sets the uint32 value in the PatternFlowArpTargetProtocolAddrMetricTag object +func (obj *patternFlowArpTargetProtocolAddrMetricTag) SetOffset(value uint32) PatternFlowArpTargetProtocolAddrMetricTag { obj.obj.Offset = &value return obj @@ -218467,7 +261954,7 @@ func (obj *patternFlowEthernetPauseSrcMetricTag) SetOffset(value uint32) Pattern // Number of bits to track for metrics starting from configured offset of corresponding header field // Length returns a uint32 -func (obj *patternFlowEthernetPauseSrcMetricTag) Length() uint32 { +func (obj *patternFlowArpTargetProtocolAddrMetricTag) Length() uint32 { return *obj.obj.Length @@ -218475,83 +261962,86 @@ func (obj *patternFlowEthernetPauseSrcMetricTag) Length() uint32 { // Number of bits to track for metrics starting from configured offset of corresponding header field // Length returns a uint32 -func (obj *patternFlowEthernetPauseSrcMetricTag) HasLength() bool { +func (obj *patternFlowArpTargetProtocolAddrMetricTag) HasLength() bool { return obj.obj.Length != nil } // Number of bits to track for metrics starting from configured offset of corresponding header field -// SetLength sets the uint32 value in the PatternFlowEthernetPauseSrcMetricTag object -func (obj *patternFlowEthernetPauseSrcMetricTag) SetLength(value uint32) PatternFlowEthernetPauseSrcMetricTag { +// SetLength sets the uint32 value in the PatternFlowArpTargetProtocolAddrMetricTag object +func (obj *patternFlowArpTargetProtocolAddrMetricTag) SetLength(value uint32) PatternFlowArpTargetProtocolAddrMetricTag { obj.obj.Length = &value return obj } -func (obj *patternFlowEthernetPauseSrcMetricTag) validateObj(vObj *validation, set_default bool) { +func (obj *patternFlowArpTargetProtocolAddrMetricTag) validateObj(vObj *validation, set_default bool) { if set_default { obj.setDefault() } // Name is required if obj.obj.Name == nil { - vObj.validationErrors = append(vObj.validationErrors, "Name is required field on interface PatternFlowEthernetPauseSrcMetricTag") + vObj.validationErrors = append(vObj.validationErrors, "Name is required field on interface PatternFlowArpTargetProtocolAddrMetricTag") } if obj.obj.Offset != nil { - if *obj.obj.Offset > 47 { + if *obj.obj.Offset > 31 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowEthernetPauseSrcMetricTag.Offset <= 47 but Got %d", *obj.obj.Offset)) + fmt.Sprintf("0 <= PatternFlowArpTargetProtocolAddrMetricTag.Offset <= 31 but Got %d", *obj.obj.Offset)) } } if obj.obj.Length != nil { - if *obj.obj.Length < 1 || *obj.obj.Length > 48 { + if *obj.obj.Length < 1 || *obj.obj.Length > 32 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("1 <= PatternFlowEthernetPauseSrcMetricTag.Length <= 48 but Got %d", *obj.obj.Length)) + fmt.Sprintf("1 <= PatternFlowArpTargetProtocolAddrMetricTag.Length <= 32 but Got %d", *obj.obj.Length)) } } } -func (obj *patternFlowEthernetPauseSrcMetricTag) setDefault() { +func (obj *patternFlowArpTargetProtocolAddrMetricTag) setDefault() { if obj.obj.Offset == nil { obj.SetOffset(0) } if obj.obj.Length == nil { - obj.SetLength(48) + obj.SetLength(32) } } -// ***** PatternFlowEthernetPauseEtherTypeCounter ***** -type patternFlowEthernetPauseEtherTypeCounter struct { +// ***** PatternFlowIcmpEchoType ***** +type patternFlowIcmpEchoType struct { validation - obj *otg.PatternFlowEthernetPauseEtherTypeCounter + obj *otg.PatternFlowIcmpEchoType + incrementHolder PatternFlowIcmpEchoTypeCounter + decrementHolder PatternFlowIcmpEchoTypeCounter + metricTagsHolder PatternFlowIcmpEchoTypePatternFlowIcmpEchoTypeMetricTagIter } -func NewPatternFlowEthernetPauseEtherTypeCounter() PatternFlowEthernetPauseEtherTypeCounter { - obj := patternFlowEthernetPauseEtherTypeCounter{obj: &otg.PatternFlowEthernetPauseEtherTypeCounter{}} +func NewPatternFlowIcmpEchoType() PatternFlowIcmpEchoType { + obj := patternFlowIcmpEchoType{obj: &otg.PatternFlowIcmpEchoType{}} obj.setDefault() return &obj } -func (obj *patternFlowEthernetPauseEtherTypeCounter) Msg() *otg.PatternFlowEthernetPauseEtherTypeCounter { +func (obj *patternFlowIcmpEchoType) Msg() *otg.PatternFlowIcmpEchoType { return obj.obj } -func (obj *patternFlowEthernetPauseEtherTypeCounter) SetMsg(msg *otg.PatternFlowEthernetPauseEtherTypeCounter) PatternFlowEthernetPauseEtherTypeCounter { - +func (obj *patternFlowIcmpEchoType) SetMsg(msg *otg.PatternFlowIcmpEchoType) PatternFlowIcmpEchoType { + obj.setNil() proto.Merge(obj.obj, msg) return obj } -func (obj *patternFlowEthernetPauseEtherTypeCounter) ToProto() (*otg.PatternFlowEthernetPauseEtherTypeCounter, error) { +func (obj *patternFlowIcmpEchoType) ToProto() (*otg.PatternFlowIcmpEchoType, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -218559,7 +262049,7 @@ func (obj *patternFlowEthernetPauseEtherTypeCounter) ToProto() (*otg.PatternFlow return obj.Msg(), nil } -func (obj *patternFlowEthernetPauseEtherTypeCounter) FromProto(msg *otg.PatternFlowEthernetPauseEtherTypeCounter) (PatternFlowEthernetPauseEtherTypeCounter, error) { +func (obj *patternFlowIcmpEchoType) FromProto(msg *otg.PatternFlowIcmpEchoType) (PatternFlowIcmpEchoType, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -218568,7 +262058,7 @@ func (obj *patternFlowEthernetPauseEtherTypeCounter) FromProto(msg *otg.PatternF return newObj, nil } -func (obj *patternFlowEthernetPauseEtherTypeCounter) ToPbText() (string, error) { +func (obj *patternFlowIcmpEchoType) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -218580,12 +262070,12 @@ func (obj *patternFlowEthernetPauseEtherTypeCounter) ToPbText() (string, error) return string(protoMarshal), nil } -func (obj *patternFlowEthernetPauseEtherTypeCounter) FromPbText(value string) error { +func (obj *patternFlowIcmpEchoType) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj } - + obj.setNil() vErr := obj.validateToAndFrom() if vErr != nil { return vErr @@ -218593,7 +262083,7 @@ func (obj *patternFlowEthernetPauseEtherTypeCounter) FromPbText(value string) er return retObj } -func (obj *patternFlowEthernetPauseEtherTypeCounter) ToYaml() (string, error) { +func (obj *patternFlowIcmpEchoType) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -218614,7 +262104,7 @@ func (obj *patternFlowEthernetPauseEtherTypeCounter) ToYaml() (string, error) { return string(data), nil } -func (obj *patternFlowEthernetPauseEtherTypeCounter) FromYaml(value string) error { +func (obj *patternFlowIcmpEchoType) FromYaml(value string) error { if value == "" { value = "{}" } @@ -218631,7 +262121,7 @@ func (obj *patternFlowEthernetPauseEtherTypeCounter) FromYaml(value string) erro return fmt.Errorf("unmarshal error %s", strings.Replace( uError.Error(), "\u00a0", " ", -1)[7:]) } - + obj.setNil() vErr := obj.validateToAndFrom() if vErr != nil { return vErr @@ -218639,7 +262129,7 @@ func (obj *patternFlowEthernetPauseEtherTypeCounter) FromYaml(value string) erro return nil } -func (obj *patternFlowEthernetPauseEtherTypeCounter) ToJson() (string, error) { +func (obj *patternFlowIcmpEchoType) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -218657,7 +262147,7 @@ func (obj *patternFlowEthernetPauseEtherTypeCounter) ToJson() (string, error) { return string(data), nil } -func (obj *patternFlowEthernetPauseEtherTypeCounter) FromJson(value string) error { +func (obj *patternFlowIcmpEchoType) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -218670,7 +262160,7 @@ func (obj *patternFlowEthernetPauseEtherTypeCounter) FromJson(value string) erro return fmt.Errorf("unmarshal error %s", strings.Replace( uError.Error(), "\u00a0", " ", -1)[7:]) } - + obj.setNil() err := obj.validateToAndFrom() if err != nil { return err @@ -218678,19 +262168,19 @@ func (obj *patternFlowEthernetPauseEtherTypeCounter) FromJson(value string) erro return nil } -func (obj *patternFlowEthernetPauseEtherTypeCounter) validateToAndFrom() error { +func (obj *patternFlowIcmpEchoType) validateToAndFrom() error { // emptyVars() obj.validateObj(&obj.validation, true) return obj.validationResult() } -func (obj *patternFlowEthernetPauseEtherTypeCounter) Validate() error { +func (obj *patternFlowIcmpEchoType) Validate() error { // emptyVars() obj.validateObj(&obj.validation, false) return obj.validationResult() } -func (obj *patternFlowEthernetPauseEtherTypeCounter) String() string { +func (obj *patternFlowIcmpEchoType) String() string { str, err := obj.ToYaml() if err != nil { return err.Error() @@ -218698,12 +262188,12 @@ func (obj *patternFlowEthernetPauseEtherTypeCounter) String() string { return str } -func (obj *patternFlowEthernetPauseEtherTypeCounter) Clone() (PatternFlowEthernetPauseEtherTypeCounter, error) { +func (obj *patternFlowIcmpEchoType) Clone() (PatternFlowIcmpEchoType, error) { vErr := obj.Validate() if vErr != nil { return nil, vErr } - newObj := NewPatternFlowEthernetPauseEtherTypeCounter() + newObj := NewPatternFlowIcmpEchoType() data, err := proto.Marshal(obj.Msg()) if err != nil { return nil, err @@ -218715,539 +262205,426 @@ func (obj *patternFlowEthernetPauseEtherTypeCounter) Clone() (PatternFlowEtherne return newObj, nil } -// PatternFlowEthernetPauseEtherTypeCounter is integer counter pattern -type PatternFlowEthernetPauseEtherTypeCounter interface { +func (obj *patternFlowIcmpEchoType) setNil() { + obj.incrementHolder = nil + obj.decrementHolder = nil + obj.metricTagsHolder = nil + obj.validationErrors = nil + obj.warnings = nil + obj.constraints = make(map[string]map[string]Constraints) +} + +// PatternFlowIcmpEchoType is the type of ICMP echo packet +type PatternFlowIcmpEchoType interface { Validation - // Msg marshals PatternFlowEthernetPauseEtherTypeCounter to protobuf object *otg.PatternFlowEthernetPauseEtherTypeCounter + // Msg marshals PatternFlowIcmpEchoType to protobuf object *otg.PatternFlowIcmpEchoType // and doesn't set defaults - Msg() *otg.PatternFlowEthernetPauseEtherTypeCounter - // SetMsg unmarshals PatternFlowEthernetPauseEtherTypeCounter from protobuf object *otg.PatternFlowEthernetPauseEtherTypeCounter + Msg() *otg.PatternFlowIcmpEchoType + // SetMsg unmarshals PatternFlowIcmpEchoType from protobuf object *otg.PatternFlowIcmpEchoType // and doesn't set defaults - SetMsg(*otg.PatternFlowEthernetPauseEtherTypeCounter) PatternFlowEthernetPauseEtherTypeCounter - // ToProto marshals PatternFlowEthernetPauseEtherTypeCounter to protobuf object *otg.PatternFlowEthernetPauseEtherTypeCounter - ToProto() (*otg.PatternFlowEthernetPauseEtherTypeCounter, error) - // ToPbText marshals PatternFlowEthernetPauseEtherTypeCounter to protobuf text + SetMsg(*otg.PatternFlowIcmpEchoType) PatternFlowIcmpEchoType + // ToProto marshals PatternFlowIcmpEchoType to protobuf object *otg.PatternFlowIcmpEchoType + ToProto() (*otg.PatternFlowIcmpEchoType, error) + // ToPbText marshals PatternFlowIcmpEchoType to protobuf text ToPbText() (string, error) - // ToYaml marshals PatternFlowEthernetPauseEtherTypeCounter to YAML text + // ToYaml marshals PatternFlowIcmpEchoType to YAML text ToYaml() (string, error) - // ToJson marshals PatternFlowEthernetPauseEtherTypeCounter to JSON text + // ToJson marshals PatternFlowIcmpEchoType to JSON text ToJson() (string, error) - // FromProto unmarshals PatternFlowEthernetPauseEtherTypeCounter from protobuf object *otg.PatternFlowEthernetPauseEtherTypeCounter - FromProto(msg *otg.PatternFlowEthernetPauseEtherTypeCounter) (PatternFlowEthernetPauseEtherTypeCounter, error) - // FromPbText unmarshals PatternFlowEthernetPauseEtherTypeCounter from protobuf text + // FromProto unmarshals PatternFlowIcmpEchoType from protobuf object *otg.PatternFlowIcmpEchoType + FromProto(msg *otg.PatternFlowIcmpEchoType) (PatternFlowIcmpEchoType, error) + // FromPbText unmarshals PatternFlowIcmpEchoType from protobuf text FromPbText(value string) error - // FromYaml unmarshals PatternFlowEthernetPauseEtherTypeCounter from YAML text + // FromYaml unmarshals PatternFlowIcmpEchoType from YAML text FromYaml(value string) error - // FromJson unmarshals PatternFlowEthernetPauseEtherTypeCounter from JSON text + // FromJson unmarshals PatternFlowIcmpEchoType from JSON text FromJson(value string) error - // Validate validates PatternFlowEthernetPauseEtherTypeCounter + // Validate validates PatternFlowIcmpEchoType Validate() error // A stringer function String() string // Clones the object - Clone() (PatternFlowEthernetPauseEtherTypeCounter, error) + Clone() (PatternFlowIcmpEchoType, error) validateToAndFrom() error validateObj(vObj *validation, set_default bool) setDefault() - // Start returns uint32, set in PatternFlowEthernetPauseEtherTypeCounter. - Start() uint32 - // SetStart assigns uint32 provided by user to PatternFlowEthernetPauseEtherTypeCounter - SetStart(value uint32) PatternFlowEthernetPauseEtherTypeCounter - // HasStart checks if Start has been set in PatternFlowEthernetPauseEtherTypeCounter - HasStart() bool - // Step returns uint32, set in PatternFlowEthernetPauseEtherTypeCounter. - Step() uint32 - // SetStep assigns uint32 provided by user to PatternFlowEthernetPauseEtherTypeCounter - SetStep(value uint32) PatternFlowEthernetPauseEtherTypeCounter - // HasStep checks if Step has been set in PatternFlowEthernetPauseEtherTypeCounter - HasStep() bool - // Count returns uint32, set in PatternFlowEthernetPauseEtherTypeCounter. - Count() uint32 - // SetCount assigns uint32 provided by user to PatternFlowEthernetPauseEtherTypeCounter - SetCount(value uint32) PatternFlowEthernetPauseEtherTypeCounter - // HasCount checks if Count has been set in PatternFlowEthernetPauseEtherTypeCounter - HasCount() bool + // Choice returns PatternFlowIcmpEchoTypeChoiceEnum, set in PatternFlowIcmpEchoType + Choice() PatternFlowIcmpEchoTypeChoiceEnum + // SetChoice assigns PatternFlowIcmpEchoTypeChoiceEnum provided by user to PatternFlowIcmpEchoType + SetChoice(value PatternFlowIcmpEchoTypeChoiceEnum) PatternFlowIcmpEchoType + // HasChoice checks if Choice has been set in PatternFlowIcmpEchoType + HasChoice() bool + // Value returns uint32, set in PatternFlowIcmpEchoType. + Value() uint32 + // SetValue assigns uint32 provided by user to PatternFlowIcmpEchoType + SetValue(value uint32) PatternFlowIcmpEchoType + // HasValue checks if Value has been set in PatternFlowIcmpEchoType + HasValue() bool + // Values returns []uint32, set in PatternFlowIcmpEchoType. + Values() []uint32 + // SetValues assigns []uint32 provided by user to PatternFlowIcmpEchoType + SetValues(value []uint32) PatternFlowIcmpEchoType + // Increment returns PatternFlowIcmpEchoTypeCounter, set in PatternFlowIcmpEchoType. + // PatternFlowIcmpEchoTypeCounter is integer counter pattern + Increment() PatternFlowIcmpEchoTypeCounter + // SetIncrement assigns PatternFlowIcmpEchoTypeCounter provided by user to PatternFlowIcmpEchoType. + // PatternFlowIcmpEchoTypeCounter is integer counter pattern + SetIncrement(value PatternFlowIcmpEchoTypeCounter) PatternFlowIcmpEchoType + // HasIncrement checks if Increment has been set in PatternFlowIcmpEchoType + HasIncrement() bool + // Decrement returns PatternFlowIcmpEchoTypeCounter, set in PatternFlowIcmpEchoType. + // PatternFlowIcmpEchoTypeCounter is integer counter pattern + Decrement() PatternFlowIcmpEchoTypeCounter + // SetDecrement assigns PatternFlowIcmpEchoTypeCounter provided by user to PatternFlowIcmpEchoType. + // PatternFlowIcmpEchoTypeCounter is integer counter pattern + SetDecrement(value PatternFlowIcmpEchoTypeCounter) PatternFlowIcmpEchoType + // HasDecrement checks if Decrement has been set in PatternFlowIcmpEchoType + HasDecrement() bool + // MetricTags returns PatternFlowIcmpEchoTypePatternFlowIcmpEchoTypeMetricTagIterIter, set in PatternFlowIcmpEchoType + MetricTags() PatternFlowIcmpEchoTypePatternFlowIcmpEchoTypeMetricTagIter + setNil() } -// description is TBD -// Start returns a uint32 -func (obj *patternFlowEthernetPauseEtherTypeCounter) Start() uint32 { - - return *obj.obj.Start +type PatternFlowIcmpEchoTypeChoiceEnum string +// Enum of Choice on PatternFlowIcmpEchoType +var PatternFlowIcmpEchoTypeChoice = struct { + VALUE PatternFlowIcmpEchoTypeChoiceEnum + VALUES PatternFlowIcmpEchoTypeChoiceEnum + INCREMENT PatternFlowIcmpEchoTypeChoiceEnum + DECREMENT PatternFlowIcmpEchoTypeChoiceEnum +}{ + VALUE: PatternFlowIcmpEchoTypeChoiceEnum("value"), + VALUES: PatternFlowIcmpEchoTypeChoiceEnum("values"), + INCREMENT: PatternFlowIcmpEchoTypeChoiceEnum("increment"), + DECREMENT: PatternFlowIcmpEchoTypeChoiceEnum("decrement"), } -// description is TBD -// Start returns a uint32 -func (obj *patternFlowEthernetPauseEtherTypeCounter) HasStart() bool { - return obj.obj.Start != nil +func (obj *patternFlowIcmpEchoType) Choice() PatternFlowIcmpEchoTypeChoiceEnum { + return PatternFlowIcmpEchoTypeChoiceEnum(obj.obj.Choice.Enum().String()) } // description is TBD -// SetStart sets the uint32 value in the PatternFlowEthernetPauseEtherTypeCounter object -func (obj *patternFlowEthernetPauseEtherTypeCounter) SetStart(value uint32) PatternFlowEthernetPauseEtherTypeCounter { - - obj.obj.Start = &value - return obj +// Choice returns a string +func (obj *patternFlowIcmpEchoType) HasChoice() bool { + return obj.obj.Choice != nil } -// description is TBD -// Step returns a uint32 -func (obj *patternFlowEthernetPauseEtherTypeCounter) Step() uint32 { +func (obj *patternFlowIcmpEchoType) SetChoice(value PatternFlowIcmpEchoTypeChoiceEnum) PatternFlowIcmpEchoType { + intValue, ok := otg.PatternFlowIcmpEchoType_Choice_Enum_value[string(value)] + if !ok { + obj.validationErrors = append(obj.validationErrors, fmt.Sprintf( + "%s is not a valid choice on PatternFlowIcmpEchoTypeChoiceEnum", string(value))) + return obj + } + enumValue := otg.PatternFlowIcmpEchoType_Choice_Enum(intValue) + obj.obj.Choice = &enumValue + obj.obj.Decrement = nil + obj.decrementHolder = nil + obj.obj.Increment = nil + obj.incrementHolder = nil + obj.obj.Values = nil + obj.obj.Value = nil - return *obj.obj.Step + if value == PatternFlowIcmpEchoTypeChoice.VALUE { + defaultValue := uint32(8) + obj.obj.Value = &defaultValue + } -} + if value == PatternFlowIcmpEchoTypeChoice.VALUES { + defaultValue := []uint32{8} + obj.obj.Values = defaultValue + } -// description is TBD -// Step returns a uint32 -func (obj *patternFlowEthernetPauseEtherTypeCounter) HasStep() bool { - return obj.obj.Step != nil -} + if value == PatternFlowIcmpEchoTypeChoice.INCREMENT { + obj.obj.Increment = NewPatternFlowIcmpEchoTypeCounter().Msg() + } -// description is TBD -// SetStep sets the uint32 value in the PatternFlowEthernetPauseEtherTypeCounter object -func (obj *patternFlowEthernetPauseEtherTypeCounter) SetStep(value uint32) PatternFlowEthernetPauseEtherTypeCounter { + if value == PatternFlowIcmpEchoTypeChoice.DECREMENT { + obj.obj.Decrement = NewPatternFlowIcmpEchoTypeCounter().Msg() + } - obj.obj.Step = &value return obj } // description is TBD -// Count returns a uint32 -func (obj *patternFlowEthernetPauseEtherTypeCounter) Count() uint32 { +// Value returns a uint32 +func (obj *patternFlowIcmpEchoType) Value() uint32 { - return *obj.obj.Count + if obj.obj.Value == nil { + obj.SetChoice(PatternFlowIcmpEchoTypeChoice.VALUE) + } + + return *obj.obj.Value } // description is TBD -// Count returns a uint32 -func (obj *patternFlowEthernetPauseEtherTypeCounter) HasCount() bool { - return obj.obj.Count != nil +// Value returns a uint32 +func (obj *patternFlowIcmpEchoType) HasValue() bool { + return obj.obj.Value != nil } // description is TBD -// SetCount sets the uint32 value in the PatternFlowEthernetPauseEtherTypeCounter object -func (obj *patternFlowEthernetPauseEtherTypeCounter) SetCount(value uint32) PatternFlowEthernetPauseEtherTypeCounter { - - obj.obj.Count = &value +// SetValue sets the uint32 value in the PatternFlowIcmpEchoType object +func (obj *patternFlowIcmpEchoType) SetValue(value uint32) PatternFlowIcmpEchoType { + obj.SetChoice(PatternFlowIcmpEchoTypeChoice.VALUE) + obj.obj.Value = &value return obj } -func (obj *patternFlowEthernetPauseEtherTypeCounter) validateObj(vObj *validation, set_default bool) { - if set_default { - obj.setDefault() - } - - if obj.obj.Start != nil { - - if *obj.obj.Start > 65535 { - vObj.validationErrors = append( - vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowEthernetPauseEtherTypeCounter.Start <= 65535 but Got %d", *obj.obj.Start)) - } - - } - - if obj.obj.Step != nil { - - if *obj.obj.Step > 65535 { - vObj.validationErrors = append( - vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowEthernetPauseEtherTypeCounter.Step <= 65535 but Got %d", *obj.obj.Step)) - } - +// description is TBD +// Values returns a []uint32 +func (obj *patternFlowIcmpEchoType) Values() []uint32 { + if obj.obj.Values == nil { + obj.SetValues([]uint32{8}) } + return obj.obj.Values +} - if obj.obj.Count != nil { - - if *obj.obj.Count > 65535 { - vObj.validationErrors = append( - vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowEthernetPauseEtherTypeCounter.Count <= 65535 but Got %d", *obj.obj.Count)) - } - +// description is TBD +// SetValues sets the []uint32 value in the PatternFlowIcmpEchoType object +func (obj *patternFlowIcmpEchoType) SetValues(value []uint32) PatternFlowIcmpEchoType { + obj.SetChoice(PatternFlowIcmpEchoTypeChoice.VALUES) + if obj.obj.Values == nil { + obj.obj.Values = make([]uint32, 0) } + obj.obj.Values = value + return obj } -func (obj *patternFlowEthernetPauseEtherTypeCounter) setDefault() { - if obj.obj.Start == nil { - obj.SetStart(34824) - } - if obj.obj.Step == nil { - obj.SetStep(1) +// description is TBD +// Increment returns a PatternFlowIcmpEchoTypeCounter +func (obj *patternFlowIcmpEchoType) Increment() PatternFlowIcmpEchoTypeCounter { + if obj.obj.Increment == nil { + obj.SetChoice(PatternFlowIcmpEchoTypeChoice.INCREMENT) } - if obj.obj.Count == nil { - obj.SetCount(1) + if obj.incrementHolder == nil { + obj.incrementHolder = &patternFlowIcmpEchoTypeCounter{obj: obj.obj.Increment} } - -} - -// ***** PatternFlowEthernetPauseEtherTypeMetricTag ***** -type patternFlowEthernetPauseEtherTypeMetricTag struct { - validation - obj *otg.PatternFlowEthernetPauseEtherTypeMetricTag -} - -func NewPatternFlowEthernetPauseEtherTypeMetricTag() PatternFlowEthernetPauseEtherTypeMetricTag { - obj := patternFlowEthernetPauseEtherTypeMetricTag{obj: &otg.PatternFlowEthernetPauseEtherTypeMetricTag{}} - obj.setDefault() - return &obj + return obj.incrementHolder } -func (obj *patternFlowEthernetPauseEtherTypeMetricTag) Msg() *otg.PatternFlowEthernetPauseEtherTypeMetricTag { - return obj.obj +// description is TBD +// Increment returns a PatternFlowIcmpEchoTypeCounter +func (obj *patternFlowIcmpEchoType) HasIncrement() bool { + return obj.obj.Increment != nil } -func (obj *patternFlowEthernetPauseEtherTypeMetricTag) SetMsg(msg *otg.PatternFlowEthernetPauseEtherTypeMetricTag) PatternFlowEthernetPauseEtherTypeMetricTag { +// description is TBD +// SetIncrement sets the PatternFlowIcmpEchoTypeCounter value in the PatternFlowIcmpEchoType object +func (obj *patternFlowIcmpEchoType) SetIncrement(value PatternFlowIcmpEchoTypeCounter) PatternFlowIcmpEchoType { + obj.SetChoice(PatternFlowIcmpEchoTypeChoice.INCREMENT) + obj.incrementHolder = nil + obj.obj.Increment = value.Msg() - proto.Merge(obj.obj, msg) return obj } -func (obj *patternFlowEthernetPauseEtherTypeMetricTag) ToProto() (*otg.PatternFlowEthernetPauseEtherTypeMetricTag, error) { - err := obj.validateToAndFrom() - if err != nil { - return nil, err - } - return obj.Msg(), nil -} - -func (obj *patternFlowEthernetPauseEtherTypeMetricTag) FromProto(msg *otg.PatternFlowEthernetPauseEtherTypeMetricTag) (PatternFlowEthernetPauseEtherTypeMetricTag, error) { - newObj := obj.SetMsg(msg) - err := newObj.validateToAndFrom() - if err != nil { - return nil, err - } - return newObj, nil -} - -func (obj *patternFlowEthernetPauseEtherTypeMetricTag) ToPbText() (string, error) { - vErr := obj.validateToAndFrom() - if vErr != nil { - return "", vErr - } - protoMarshal, err := proto.Marshal(obj.Msg()) - if err != nil { - return "", err - } - return string(protoMarshal), nil -} - -func (obj *patternFlowEthernetPauseEtherTypeMetricTag) FromPbText(value string) error { - retObj := proto.Unmarshal([]byte(value), obj.Msg()) - if retObj != nil { - return retObj +// description is TBD +// Decrement returns a PatternFlowIcmpEchoTypeCounter +func (obj *patternFlowIcmpEchoType) Decrement() PatternFlowIcmpEchoTypeCounter { + if obj.obj.Decrement == nil { + obj.SetChoice(PatternFlowIcmpEchoTypeChoice.DECREMENT) } - - vErr := obj.validateToAndFrom() - if vErr != nil { - return vErr + if obj.decrementHolder == nil { + obj.decrementHolder = &patternFlowIcmpEchoTypeCounter{obj: obj.obj.Decrement} } - return retObj + return obj.decrementHolder } -func (obj *patternFlowEthernetPauseEtherTypeMetricTag) ToYaml() (string, error) { - vErr := obj.validateToAndFrom() - if vErr != nil { - return "", vErr - } - opts := protojson.MarshalOptions{ - UseProtoNames: true, - AllowPartial: true, - EmitUnpopulated: false, - } - data, err := opts.Marshal(obj.Msg()) - if err != nil { - return "", err - } - data, err = yaml.JSONToYAML(data) - if err != nil { - return "", err - } - return string(data), nil +// description is TBD +// Decrement returns a PatternFlowIcmpEchoTypeCounter +func (obj *patternFlowIcmpEchoType) HasDecrement() bool { + return obj.obj.Decrement != nil } -func (obj *patternFlowEthernetPauseEtherTypeMetricTag) FromYaml(value string) error { - if value == "" { - value = "{}" - } - data, err := yaml.YAMLToJSON([]byte(value)) - if err != nil { - return err - } - opts := protojson.UnmarshalOptions{ - AllowPartial: true, - DiscardUnknown: false, - } - uError := opts.Unmarshal([]byte(data), obj.Msg()) - if uError != nil { - return fmt.Errorf("unmarshal error %s", strings.Replace( - uError.Error(), "\u00a0", " ", -1)[7:]) - } +// description is TBD +// SetDecrement sets the PatternFlowIcmpEchoTypeCounter value in the PatternFlowIcmpEchoType object +func (obj *patternFlowIcmpEchoType) SetDecrement(value PatternFlowIcmpEchoTypeCounter) PatternFlowIcmpEchoType { + obj.SetChoice(PatternFlowIcmpEchoTypeChoice.DECREMENT) + obj.decrementHolder = nil + obj.obj.Decrement = value.Msg() - vErr := obj.validateToAndFrom() - if vErr != nil { - return vErr - } - return nil + return obj } -func (obj *patternFlowEthernetPauseEtherTypeMetricTag) ToJson() (string, error) { - vErr := obj.validateToAndFrom() - if vErr != nil { - return "", vErr - } - opts := protojson.MarshalOptions{ - UseProtoNames: true, - AllowPartial: true, - EmitUnpopulated: false, - Indent: " ", +// One or more metric tags can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. +// MetricTags returns a []PatternFlowIcmpEchoTypeMetricTag +func (obj *patternFlowIcmpEchoType) MetricTags() PatternFlowIcmpEchoTypePatternFlowIcmpEchoTypeMetricTagIter { + if len(obj.obj.MetricTags) == 0 { + obj.obj.MetricTags = []*otg.PatternFlowIcmpEchoTypeMetricTag{} } - data, err := opts.Marshal(obj.Msg()) - if err != nil { - return "", err + if obj.metricTagsHolder == nil { + obj.metricTagsHolder = newPatternFlowIcmpEchoTypePatternFlowIcmpEchoTypeMetricTagIter(&obj.obj.MetricTags).setMsg(obj) } - return string(data), nil + return obj.metricTagsHolder } -func (obj *patternFlowEthernetPauseEtherTypeMetricTag) FromJson(value string) error { - opts := protojson.UnmarshalOptions{ - AllowPartial: true, - DiscardUnknown: false, - } - if value == "" { - value = "{}" - } - uError := opts.Unmarshal([]byte(value), obj.Msg()) - if uError != nil { - return fmt.Errorf("unmarshal error %s", strings.Replace( - uError.Error(), "\u00a0", " ", -1)[7:]) - } - - err := obj.validateToAndFrom() - if err != nil { - return err - } - return nil +type patternFlowIcmpEchoTypePatternFlowIcmpEchoTypeMetricTagIter struct { + obj *patternFlowIcmpEchoType + patternFlowIcmpEchoTypeMetricTagSlice []PatternFlowIcmpEchoTypeMetricTag + fieldPtr *[]*otg.PatternFlowIcmpEchoTypeMetricTag } -func (obj *patternFlowEthernetPauseEtherTypeMetricTag) validateToAndFrom() error { - // emptyVars() - obj.validateObj(&obj.validation, true) - return obj.validationResult() +func newPatternFlowIcmpEchoTypePatternFlowIcmpEchoTypeMetricTagIter(ptr *[]*otg.PatternFlowIcmpEchoTypeMetricTag) PatternFlowIcmpEchoTypePatternFlowIcmpEchoTypeMetricTagIter { + return &patternFlowIcmpEchoTypePatternFlowIcmpEchoTypeMetricTagIter{fieldPtr: ptr} } -func (obj *patternFlowEthernetPauseEtherTypeMetricTag) Validate() error { - // emptyVars() - obj.validateObj(&obj.validation, false) - return obj.validationResult() +type PatternFlowIcmpEchoTypePatternFlowIcmpEchoTypeMetricTagIter interface { + setMsg(*patternFlowIcmpEchoType) PatternFlowIcmpEchoTypePatternFlowIcmpEchoTypeMetricTagIter + Items() []PatternFlowIcmpEchoTypeMetricTag + Add() PatternFlowIcmpEchoTypeMetricTag + Append(items ...PatternFlowIcmpEchoTypeMetricTag) PatternFlowIcmpEchoTypePatternFlowIcmpEchoTypeMetricTagIter + Set(index int, newObj PatternFlowIcmpEchoTypeMetricTag) PatternFlowIcmpEchoTypePatternFlowIcmpEchoTypeMetricTagIter + Clear() PatternFlowIcmpEchoTypePatternFlowIcmpEchoTypeMetricTagIter + clearHolderSlice() PatternFlowIcmpEchoTypePatternFlowIcmpEchoTypeMetricTagIter + appendHolderSlice(item PatternFlowIcmpEchoTypeMetricTag) PatternFlowIcmpEchoTypePatternFlowIcmpEchoTypeMetricTagIter } -func (obj *patternFlowEthernetPauseEtherTypeMetricTag) String() string { - str, err := obj.ToYaml() - if err != nil { - return err.Error() +func (obj *patternFlowIcmpEchoTypePatternFlowIcmpEchoTypeMetricTagIter) setMsg(msg *patternFlowIcmpEchoType) PatternFlowIcmpEchoTypePatternFlowIcmpEchoTypeMetricTagIter { + obj.clearHolderSlice() + for _, val := range *obj.fieldPtr { + obj.appendHolderSlice(&patternFlowIcmpEchoTypeMetricTag{obj: val}) } - return str + obj.obj = msg + return obj } -func (obj *patternFlowEthernetPauseEtherTypeMetricTag) Clone() (PatternFlowEthernetPauseEtherTypeMetricTag, error) { - vErr := obj.Validate() - if vErr != nil { - return nil, vErr - } - newObj := NewPatternFlowEthernetPauseEtherTypeMetricTag() - data, err := proto.Marshal(obj.Msg()) - if err != nil { - return nil, err - } - pbErr := proto.Unmarshal(data, newObj.Msg()) - if pbErr != nil { - return nil, pbErr - } - return newObj, nil +func (obj *patternFlowIcmpEchoTypePatternFlowIcmpEchoTypeMetricTagIter) Items() []PatternFlowIcmpEchoTypeMetricTag { + return obj.patternFlowIcmpEchoTypeMetricTagSlice } -// PatternFlowEthernetPauseEtherTypeMetricTag is metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. -type PatternFlowEthernetPauseEtherTypeMetricTag interface { - Validation - // Msg marshals PatternFlowEthernetPauseEtherTypeMetricTag to protobuf object *otg.PatternFlowEthernetPauseEtherTypeMetricTag - // and doesn't set defaults - Msg() *otg.PatternFlowEthernetPauseEtherTypeMetricTag - // SetMsg unmarshals PatternFlowEthernetPauseEtherTypeMetricTag from protobuf object *otg.PatternFlowEthernetPauseEtherTypeMetricTag - // and doesn't set defaults - SetMsg(*otg.PatternFlowEthernetPauseEtherTypeMetricTag) PatternFlowEthernetPauseEtherTypeMetricTag - // ToProto marshals PatternFlowEthernetPauseEtherTypeMetricTag to protobuf object *otg.PatternFlowEthernetPauseEtherTypeMetricTag - ToProto() (*otg.PatternFlowEthernetPauseEtherTypeMetricTag, error) - // ToPbText marshals PatternFlowEthernetPauseEtherTypeMetricTag to protobuf text - ToPbText() (string, error) - // ToYaml marshals PatternFlowEthernetPauseEtherTypeMetricTag to YAML text - ToYaml() (string, error) - // ToJson marshals PatternFlowEthernetPauseEtherTypeMetricTag to JSON text - ToJson() (string, error) - // FromProto unmarshals PatternFlowEthernetPauseEtherTypeMetricTag from protobuf object *otg.PatternFlowEthernetPauseEtherTypeMetricTag - FromProto(msg *otg.PatternFlowEthernetPauseEtherTypeMetricTag) (PatternFlowEthernetPauseEtherTypeMetricTag, error) - // FromPbText unmarshals PatternFlowEthernetPauseEtherTypeMetricTag from protobuf text - FromPbText(value string) error - // FromYaml unmarshals PatternFlowEthernetPauseEtherTypeMetricTag from YAML text - FromYaml(value string) error - // FromJson unmarshals PatternFlowEthernetPauseEtherTypeMetricTag from JSON text - FromJson(value string) error - // Validate validates PatternFlowEthernetPauseEtherTypeMetricTag - Validate() error - // A stringer function - String() string - // Clones the object - Clone() (PatternFlowEthernetPauseEtherTypeMetricTag, error) - validateToAndFrom() error - validateObj(vObj *validation, set_default bool) - setDefault() - // Name returns string, set in PatternFlowEthernetPauseEtherTypeMetricTag. - Name() string - // SetName assigns string provided by user to PatternFlowEthernetPauseEtherTypeMetricTag - SetName(value string) PatternFlowEthernetPauseEtherTypeMetricTag - // Offset returns uint32, set in PatternFlowEthernetPauseEtherTypeMetricTag. - Offset() uint32 - // SetOffset assigns uint32 provided by user to PatternFlowEthernetPauseEtherTypeMetricTag - SetOffset(value uint32) PatternFlowEthernetPauseEtherTypeMetricTag - // HasOffset checks if Offset has been set in PatternFlowEthernetPauseEtherTypeMetricTag - HasOffset() bool - // Length returns uint32, set in PatternFlowEthernetPauseEtherTypeMetricTag. - Length() uint32 - // SetLength assigns uint32 provided by user to PatternFlowEthernetPauseEtherTypeMetricTag - SetLength(value uint32) PatternFlowEthernetPauseEtherTypeMetricTag - // HasLength checks if Length has been set in PatternFlowEthernetPauseEtherTypeMetricTag - HasLength() bool +func (obj *patternFlowIcmpEchoTypePatternFlowIcmpEchoTypeMetricTagIter) Add() PatternFlowIcmpEchoTypeMetricTag { + newObj := &otg.PatternFlowIcmpEchoTypeMetricTag{} + *obj.fieldPtr = append(*obj.fieldPtr, newObj) + newLibObj := &patternFlowIcmpEchoTypeMetricTag{obj: newObj} + newLibObj.setDefault() + obj.patternFlowIcmpEchoTypeMetricTagSlice = append(obj.patternFlowIcmpEchoTypeMetricTagSlice, newLibObj) + return newLibObj } -// Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field -// Name returns a string -func (obj *patternFlowEthernetPauseEtherTypeMetricTag) Name() string { - - return *obj.obj.Name - +func (obj *patternFlowIcmpEchoTypePatternFlowIcmpEchoTypeMetricTagIter) Append(items ...PatternFlowIcmpEchoTypeMetricTag) PatternFlowIcmpEchoTypePatternFlowIcmpEchoTypeMetricTagIter { + for _, item := range items { + newObj := item.Msg() + *obj.fieldPtr = append(*obj.fieldPtr, newObj) + obj.patternFlowIcmpEchoTypeMetricTagSlice = append(obj.patternFlowIcmpEchoTypeMetricTagSlice, item) + } + return obj } -// Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field -// SetName sets the string value in the PatternFlowEthernetPauseEtherTypeMetricTag object -func (obj *patternFlowEthernetPauseEtherTypeMetricTag) SetName(value string) PatternFlowEthernetPauseEtherTypeMetricTag { - - obj.obj.Name = &value +func (obj *patternFlowIcmpEchoTypePatternFlowIcmpEchoTypeMetricTagIter) Set(index int, newObj PatternFlowIcmpEchoTypeMetricTag) PatternFlowIcmpEchoTypePatternFlowIcmpEchoTypeMetricTagIter { + (*obj.fieldPtr)[index] = newObj.Msg() + obj.patternFlowIcmpEchoTypeMetricTagSlice[index] = newObj return obj } - -// Offset in bits relative to start of corresponding header field -// Offset returns a uint32 -func (obj *patternFlowEthernetPauseEtherTypeMetricTag) Offset() uint32 { - - return *obj.obj.Offset - +func (obj *patternFlowIcmpEchoTypePatternFlowIcmpEchoTypeMetricTagIter) Clear() PatternFlowIcmpEchoTypePatternFlowIcmpEchoTypeMetricTagIter { + if len(*obj.fieldPtr) > 0 { + *obj.fieldPtr = []*otg.PatternFlowIcmpEchoTypeMetricTag{} + obj.patternFlowIcmpEchoTypeMetricTagSlice = []PatternFlowIcmpEchoTypeMetricTag{} + } + return obj } - -// Offset in bits relative to start of corresponding header field -// Offset returns a uint32 -func (obj *patternFlowEthernetPauseEtherTypeMetricTag) HasOffset() bool { - return obj.obj.Offset != nil +func (obj *patternFlowIcmpEchoTypePatternFlowIcmpEchoTypeMetricTagIter) clearHolderSlice() PatternFlowIcmpEchoTypePatternFlowIcmpEchoTypeMetricTagIter { + if len(obj.patternFlowIcmpEchoTypeMetricTagSlice) > 0 { + obj.patternFlowIcmpEchoTypeMetricTagSlice = []PatternFlowIcmpEchoTypeMetricTag{} + } + return obj } - -// Offset in bits relative to start of corresponding header field -// SetOffset sets the uint32 value in the PatternFlowEthernetPauseEtherTypeMetricTag object -func (obj *patternFlowEthernetPauseEtherTypeMetricTag) SetOffset(value uint32) PatternFlowEthernetPauseEtherTypeMetricTag { - - obj.obj.Offset = &value +func (obj *patternFlowIcmpEchoTypePatternFlowIcmpEchoTypeMetricTagIter) appendHolderSlice(item PatternFlowIcmpEchoTypeMetricTag) PatternFlowIcmpEchoTypePatternFlowIcmpEchoTypeMetricTagIter { + obj.patternFlowIcmpEchoTypeMetricTagSlice = append(obj.patternFlowIcmpEchoTypeMetricTagSlice, item) return obj } -// Number of bits to track for metrics starting from configured offset of corresponding header field -// Length returns a uint32 -func (obj *patternFlowEthernetPauseEtherTypeMetricTag) Length() uint32 { +func (obj *patternFlowIcmpEchoType) validateObj(vObj *validation, set_default bool) { + if set_default { + obj.setDefault() + } - return *obj.obj.Length + if obj.obj.Value != nil { -} + if *obj.obj.Value > 255 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("0 <= PatternFlowIcmpEchoType.Value <= 255 but Got %d", *obj.obj.Value)) + } -// Number of bits to track for metrics starting from configured offset of corresponding header field -// Length returns a uint32 -func (obj *patternFlowEthernetPauseEtherTypeMetricTag) HasLength() bool { - return obj.obj.Length != nil -} + } -// Number of bits to track for metrics starting from configured offset of corresponding header field -// SetLength sets the uint32 value in the PatternFlowEthernetPauseEtherTypeMetricTag object -func (obj *patternFlowEthernetPauseEtherTypeMetricTag) SetLength(value uint32) PatternFlowEthernetPauseEtherTypeMetricTag { + if obj.obj.Values != nil { - obj.obj.Length = &value - return obj -} + for _, item := range obj.obj.Values { + if item > 255 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("min(uint32) <= PatternFlowIcmpEchoType.Values <= 255 but Got %d", item)) + } -func (obj *patternFlowEthernetPauseEtherTypeMetricTag) validateObj(vObj *validation, set_default bool) { - if set_default { - obj.setDefault() - } + } - // Name is required - if obj.obj.Name == nil { - vObj.validationErrors = append(vObj.validationErrors, "Name is required field on interface PatternFlowEthernetPauseEtherTypeMetricTag") } - if obj.obj.Offset != nil { + if obj.obj.Increment != nil { - if *obj.obj.Offset > 15 { - vObj.validationErrors = append( - vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowEthernetPauseEtherTypeMetricTag.Offset <= 15 but Got %d", *obj.obj.Offset)) - } + obj.Increment().validateObj(vObj, set_default) + } + if obj.obj.Decrement != nil { + + obj.Decrement().validateObj(vObj, set_default) } - if obj.obj.Length != nil { + if len(obj.obj.MetricTags) != 0 { - if *obj.obj.Length < 1 || *obj.obj.Length > 16 { - vObj.validationErrors = append( - vObj.validationErrors, - fmt.Sprintf("1 <= PatternFlowEthernetPauseEtherTypeMetricTag.Length <= 16 but Got %d", *obj.obj.Length)) + if set_default { + obj.MetricTags().clearHolderSlice() + for _, item := range obj.obj.MetricTags { + obj.MetricTags().appendHolderSlice(&patternFlowIcmpEchoTypeMetricTag{obj: item}) + } + } + for _, item := range obj.MetricTags().Items() { + item.validateObj(vObj, set_default) } } } -func (obj *patternFlowEthernetPauseEtherTypeMetricTag) setDefault() { - if obj.obj.Offset == nil { - obj.SetOffset(0) - } - if obj.obj.Length == nil { - obj.SetLength(16) +func (obj *patternFlowIcmpEchoType) setDefault() { + if obj.obj.Choice == nil { + obj.SetChoice(PatternFlowIcmpEchoTypeChoice.VALUE) + } } -// ***** PatternFlowEthernetPauseControlOpCodeCounter ***** -type patternFlowEthernetPauseControlOpCodeCounter struct { +// ***** PatternFlowIcmpEchoCode ***** +type patternFlowIcmpEchoCode struct { validation - obj *otg.PatternFlowEthernetPauseControlOpCodeCounter + obj *otg.PatternFlowIcmpEchoCode + incrementHolder PatternFlowIcmpEchoCodeCounter + decrementHolder PatternFlowIcmpEchoCodeCounter + metricTagsHolder PatternFlowIcmpEchoCodePatternFlowIcmpEchoCodeMetricTagIter } -func NewPatternFlowEthernetPauseControlOpCodeCounter() PatternFlowEthernetPauseControlOpCodeCounter { - obj := patternFlowEthernetPauseControlOpCodeCounter{obj: &otg.PatternFlowEthernetPauseControlOpCodeCounter{}} +func NewPatternFlowIcmpEchoCode() PatternFlowIcmpEchoCode { + obj := patternFlowIcmpEchoCode{obj: &otg.PatternFlowIcmpEchoCode{}} obj.setDefault() return &obj } -func (obj *patternFlowEthernetPauseControlOpCodeCounter) Msg() *otg.PatternFlowEthernetPauseControlOpCodeCounter { +func (obj *patternFlowIcmpEchoCode) Msg() *otg.PatternFlowIcmpEchoCode { return obj.obj } -func (obj *patternFlowEthernetPauseControlOpCodeCounter) SetMsg(msg *otg.PatternFlowEthernetPauseControlOpCodeCounter) PatternFlowEthernetPauseControlOpCodeCounter { - +func (obj *patternFlowIcmpEchoCode) SetMsg(msg *otg.PatternFlowIcmpEchoCode) PatternFlowIcmpEchoCode { + obj.setNil() proto.Merge(obj.obj, msg) return obj } -func (obj *patternFlowEthernetPauseControlOpCodeCounter) ToProto() (*otg.PatternFlowEthernetPauseControlOpCodeCounter, error) { +func (obj *patternFlowIcmpEchoCode) ToProto() (*otg.PatternFlowIcmpEchoCode, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -219255,7 +262632,7 @@ func (obj *patternFlowEthernetPauseControlOpCodeCounter) ToProto() (*otg.Pattern return obj.Msg(), nil } -func (obj *patternFlowEthernetPauseControlOpCodeCounter) FromProto(msg *otg.PatternFlowEthernetPauseControlOpCodeCounter) (PatternFlowEthernetPauseControlOpCodeCounter, error) { +func (obj *patternFlowIcmpEchoCode) FromProto(msg *otg.PatternFlowIcmpEchoCode) (PatternFlowIcmpEchoCode, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -219264,7 +262641,7 @@ func (obj *patternFlowEthernetPauseControlOpCodeCounter) FromProto(msg *otg.Patt return newObj, nil } -func (obj *patternFlowEthernetPauseControlOpCodeCounter) ToPbText() (string, error) { +func (obj *patternFlowIcmpEchoCode) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -219276,12 +262653,12 @@ func (obj *patternFlowEthernetPauseControlOpCodeCounter) ToPbText() (string, err return string(protoMarshal), nil } -func (obj *patternFlowEthernetPauseControlOpCodeCounter) FromPbText(value string) error { +func (obj *patternFlowIcmpEchoCode) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj } - + obj.setNil() vErr := obj.validateToAndFrom() if vErr != nil { return vErr @@ -219289,7 +262666,7 @@ func (obj *patternFlowEthernetPauseControlOpCodeCounter) FromPbText(value string return retObj } -func (obj *patternFlowEthernetPauseControlOpCodeCounter) ToYaml() (string, error) { +func (obj *patternFlowIcmpEchoCode) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -219310,7 +262687,7 @@ func (obj *patternFlowEthernetPauseControlOpCodeCounter) ToYaml() (string, error return string(data), nil } -func (obj *patternFlowEthernetPauseControlOpCodeCounter) FromYaml(value string) error { +func (obj *patternFlowIcmpEchoCode) FromYaml(value string) error { if value == "" { value = "{}" } @@ -219327,7 +262704,7 @@ func (obj *patternFlowEthernetPauseControlOpCodeCounter) FromYaml(value string) return fmt.Errorf("unmarshal error %s", strings.Replace( uError.Error(), "\u00a0", " ", -1)[7:]) } - + obj.setNil() vErr := obj.validateToAndFrom() if vErr != nil { return vErr @@ -219335,7 +262712,7 @@ func (obj *patternFlowEthernetPauseControlOpCodeCounter) FromYaml(value string) return nil } -func (obj *patternFlowEthernetPauseControlOpCodeCounter) ToJson() (string, error) { +func (obj *patternFlowIcmpEchoCode) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -219353,7 +262730,7 @@ func (obj *patternFlowEthernetPauseControlOpCodeCounter) ToJson() (string, error return string(data), nil } -func (obj *patternFlowEthernetPauseControlOpCodeCounter) FromJson(value string) error { +func (obj *patternFlowIcmpEchoCode) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -219366,7 +262743,7 @@ func (obj *patternFlowEthernetPauseControlOpCodeCounter) FromJson(value string) return fmt.Errorf("unmarshal error %s", strings.Replace( uError.Error(), "\u00a0", " ", -1)[7:]) } - + obj.setNil() err := obj.validateToAndFrom() if err != nil { return err @@ -219374,19 +262751,19 @@ func (obj *patternFlowEthernetPauseControlOpCodeCounter) FromJson(value string) return nil } -func (obj *patternFlowEthernetPauseControlOpCodeCounter) validateToAndFrom() error { +func (obj *patternFlowIcmpEchoCode) validateToAndFrom() error { // emptyVars() obj.validateObj(&obj.validation, true) return obj.validationResult() } -func (obj *patternFlowEthernetPauseControlOpCodeCounter) Validate() error { +func (obj *patternFlowIcmpEchoCode) Validate() error { // emptyVars() obj.validateObj(&obj.validation, false) return obj.validationResult() } -func (obj *patternFlowEthernetPauseControlOpCodeCounter) String() string { +func (obj *patternFlowIcmpEchoCode) String() string { str, err := obj.ToYaml() if err != nil { return err.Error() @@ -219394,12 +262771,12 @@ func (obj *patternFlowEthernetPauseControlOpCodeCounter) String() string { return str } -func (obj *patternFlowEthernetPauseControlOpCodeCounter) Clone() (PatternFlowEthernetPauseControlOpCodeCounter, error) { +func (obj *patternFlowIcmpEchoCode) Clone() (PatternFlowIcmpEchoCode, error) { vErr := obj.Validate() if vErr != nil { return nil, vErr } - newObj := NewPatternFlowEthernetPauseControlOpCodeCounter() + newObj := NewPatternFlowIcmpEchoCode() data, err := proto.Marshal(obj.Msg()) if err != nil { return nil, err @@ -219411,199 +262788,423 @@ func (obj *patternFlowEthernetPauseControlOpCodeCounter) Clone() (PatternFlowEth return newObj, nil } -// PatternFlowEthernetPauseControlOpCodeCounter is integer counter pattern -type PatternFlowEthernetPauseControlOpCodeCounter interface { +func (obj *patternFlowIcmpEchoCode) setNil() { + obj.incrementHolder = nil + obj.decrementHolder = nil + obj.metricTagsHolder = nil + obj.validationErrors = nil + obj.warnings = nil + obj.constraints = make(map[string]map[string]Constraints) +} + +// PatternFlowIcmpEchoCode is the ICMP subtype. The default code for ICMP echo request and reply is 0. +type PatternFlowIcmpEchoCode interface { Validation - // Msg marshals PatternFlowEthernetPauseControlOpCodeCounter to protobuf object *otg.PatternFlowEthernetPauseControlOpCodeCounter + // Msg marshals PatternFlowIcmpEchoCode to protobuf object *otg.PatternFlowIcmpEchoCode // and doesn't set defaults - Msg() *otg.PatternFlowEthernetPauseControlOpCodeCounter - // SetMsg unmarshals PatternFlowEthernetPauseControlOpCodeCounter from protobuf object *otg.PatternFlowEthernetPauseControlOpCodeCounter + Msg() *otg.PatternFlowIcmpEchoCode + // SetMsg unmarshals PatternFlowIcmpEchoCode from protobuf object *otg.PatternFlowIcmpEchoCode // and doesn't set defaults - SetMsg(*otg.PatternFlowEthernetPauseControlOpCodeCounter) PatternFlowEthernetPauseControlOpCodeCounter - // ToProto marshals PatternFlowEthernetPauseControlOpCodeCounter to protobuf object *otg.PatternFlowEthernetPauseControlOpCodeCounter - ToProto() (*otg.PatternFlowEthernetPauseControlOpCodeCounter, error) - // ToPbText marshals PatternFlowEthernetPauseControlOpCodeCounter to protobuf text + SetMsg(*otg.PatternFlowIcmpEchoCode) PatternFlowIcmpEchoCode + // ToProto marshals PatternFlowIcmpEchoCode to protobuf object *otg.PatternFlowIcmpEchoCode + ToProto() (*otg.PatternFlowIcmpEchoCode, error) + // ToPbText marshals PatternFlowIcmpEchoCode to protobuf text ToPbText() (string, error) - // ToYaml marshals PatternFlowEthernetPauseControlOpCodeCounter to YAML text + // ToYaml marshals PatternFlowIcmpEchoCode to YAML text ToYaml() (string, error) - // ToJson marshals PatternFlowEthernetPauseControlOpCodeCounter to JSON text + // ToJson marshals PatternFlowIcmpEchoCode to JSON text ToJson() (string, error) - // FromProto unmarshals PatternFlowEthernetPauseControlOpCodeCounter from protobuf object *otg.PatternFlowEthernetPauseControlOpCodeCounter - FromProto(msg *otg.PatternFlowEthernetPauseControlOpCodeCounter) (PatternFlowEthernetPauseControlOpCodeCounter, error) - // FromPbText unmarshals PatternFlowEthernetPauseControlOpCodeCounter from protobuf text + // FromProto unmarshals PatternFlowIcmpEchoCode from protobuf object *otg.PatternFlowIcmpEchoCode + FromProto(msg *otg.PatternFlowIcmpEchoCode) (PatternFlowIcmpEchoCode, error) + // FromPbText unmarshals PatternFlowIcmpEchoCode from protobuf text FromPbText(value string) error - // FromYaml unmarshals PatternFlowEthernetPauseControlOpCodeCounter from YAML text + // FromYaml unmarshals PatternFlowIcmpEchoCode from YAML text FromYaml(value string) error - // FromJson unmarshals PatternFlowEthernetPauseControlOpCodeCounter from JSON text + // FromJson unmarshals PatternFlowIcmpEchoCode from JSON text FromJson(value string) error - // Validate validates PatternFlowEthernetPauseControlOpCodeCounter + // Validate validates PatternFlowIcmpEchoCode Validate() error // A stringer function String() string // Clones the object - Clone() (PatternFlowEthernetPauseControlOpCodeCounter, error) + Clone() (PatternFlowIcmpEchoCode, error) validateToAndFrom() error validateObj(vObj *validation, set_default bool) setDefault() - // Start returns uint32, set in PatternFlowEthernetPauseControlOpCodeCounter. - Start() uint32 - // SetStart assigns uint32 provided by user to PatternFlowEthernetPauseControlOpCodeCounter - SetStart(value uint32) PatternFlowEthernetPauseControlOpCodeCounter - // HasStart checks if Start has been set in PatternFlowEthernetPauseControlOpCodeCounter - HasStart() bool - // Step returns uint32, set in PatternFlowEthernetPauseControlOpCodeCounter. - Step() uint32 - // SetStep assigns uint32 provided by user to PatternFlowEthernetPauseControlOpCodeCounter - SetStep(value uint32) PatternFlowEthernetPauseControlOpCodeCounter - // HasStep checks if Step has been set in PatternFlowEthernetPauseControlOpCodeCounter - HasStep() bool - // Count returns uint32, set in PatternFlowEthernetPauseControlOpCodeCounter. - Count() uint32 - // SetCount assigns uint32 provided by user to PatternFlowEthernetPauseControlOpCodeCounter - SetCount(value uint32) PatternFlowEthernetPauseControlOpCodeCounter - // HasCount checks if Count has been set in PatternFlowEthernetPauseControlOpCodeCounter - HasCount() bool + // Choice returns PatternFlowIcmpEchoCodeChoiceEnum, set in PatternFlowIcmpEchoCode + Choice() PatternFlowIcmpEchoCodeChoiceEnum + // SetChoice assigns PatternFlowIcmpEchoCodeChoiceEnum provided by user to PatternFlowIcmpEchoCode + SetChoice(value PatternFlowIcmpEchoCodeChoiceEnum) PatternFlowIcmpEchoCode + // HasChoice checks if Choice has been set in PatternFlowIcmpEchoCode + HasChoice() bool + // Value returns uint32, set in PatternFlowIcmpEchoCode. + Value() uint32 + // SetValue assigns uint32 provided by user to PatternFlowIcmpEchoCode + SetValue(value uint32) PatternFlowIcmpEchoCode + // HasValue checks if Value has been set in PatternFlowIcmpEchoCode + HasValue() bool + // Values returns []uint32, set in PatternFlowIcmpEchoCode. + Values() []uint32 + // SetValues assigns []uint32 provided by user to PatternFlowIcmpEchoCode + SetValues(value []uint32) PatternFlowIcmpEchoCode + // Increment returns PatternFlowIcmpEchoCodeCounter, set in PatternFlowIcmpEchoCode. + // PatternFlowIcmpEchoCodeCounter is integer counter pattern + Increment() PatternFlowIcmpEchoCodeCounter + // SetIncrement assigns PatternFlowIcmpEchoCodeCounter provided by user to PatternFlowIcmpEchoCode. + // PatternFlowIcmpEchoCodeCounter is integer counter pattern + SetIncrement(value PatternFlowIcmpEchoCodeCounter) PatternFlowIcmpEchoCode + // HasIncrement checks if Increment has been set in PatternFlowIcmpEchoCode + HasIncrement() bool + // Decrement returns PatternFlowIcmpEchoCodeCounter, set in PatternFlowIcmpEchoCode. + // PatternFlowIcmpEchoCodeCounter is integer counter pattern + Decrement() PatternFlowIcmpEchoCodeCounter + // SetDecrement assigns PatternFlowIcmpEchoCodeCounter provided by user to PatternFlowIcmpEchoCode. + // PatternFlowIcmpEchoCodeCounter is integer counter pattern + SetDecrement(value PatternFlowIcmpEchoCodeCounter) PatternFlowIcmpEchoCode + // HasDecrement checks if Decrement has been set in PatternFlowIcmpEchoCode + HasDecrement() bool + // MetricTags returns PatternFlowIcmpEchoCodePatternFlowIcmpEchoCodeMetricTagIterIter, set in PatternFlowIcmpEchoCode + MetricTags() PatternFlowIcmpEchoCodePatternFlowIcmpEchoCodeMetricTagIter + setNil() } -// description is TBD -// Start returns a uint32 -func (obj *patternFlowEthernetPauseControlOpCodeCounter) Start() uint32 { +type PatternFlowIcmpEchoCodeChoiceEnum string - return *obj.obj.Start +// Enum of Choice on PatternFlowIcmpEchoCode +var PatternFlowIcmpEchoCodeChoice = struct { + VALUE PatternFlowIcmpEchoCodeChoiceEnum + VALUES PatternFlowIcmpEchoCodeChoiceEnum + INCREMENT PatternFlowIcmpEchoCodeChoiceEnum + DECREMENT PatternFlowIcmpEchoCodeChoiceEnum +}{ + VALUE: PatternFlowIcmpEchoCodeChoiceEnum("value"), + VALUES: PatternFlowIcmpEchoCodeChoiceEnum("values"), + INCREMENT: PatternFlowIcmpEchoCodeChoiceEnum("increment"), + DECREMENT: PatternFlowIcmpEchoCodeChoiceEnum("decrement"), +} +func (obj *patternFlowIcmpEchoCode) Choice() PatternFlowIcmpEchoCodeChoiceEnum { + return PatternFlowIcmpEchoCodeChoiceEnum(obj.obj.Choice.Enum().String()) } // description is TBD -// Start returns a uint32 -func (obj *patternFlowEthernetPauseControlOpCodeCounter) HasStart() bool { - return obj.obj.Start != nil +// Choice returns a string +func (obj *patternFlowIcmpEchoCode) HasChoice() bool { + return obj.obj.Choice != nil } -// description is TBD -// SetStart sets the uint32 value in the PatternFlowEthernetPauseControlOpCodeCounter object -func (obj *patternFlowEthernetPauseControlOpCodeCounter) SetStart(value uint32) PatternFlowEthernetPauseControlOpCodeCounter { +func (obj *patternFlowIcmpEchoCode) SetChoice(value PatternFlowIcmpEchoCodeChoiceEnum) PatternFlowIcmpEchoCode { + intValue, ok := otg.PatternFlowIcmpEchoCode_Choice_Enum_value[string(value)] + if !ok { + obj.validationErrors = append(obj.validationErrors, fmt.Sprintf( + "%s is not a valid choice on PatternFlowIcmpEchoCodeChoiceEnum", string(value))) + return obj + } + enumValue := otg.PatternFlowIcmpEchoCode_Choice_Enum(intValue) + obj.obj.Choice = &enumValue + obj.obj.Decrement = nil + obj.decrementHolder = nil + obj.obj.Increment = nil + obj.incrementHolder = nil + obj.obj.Values = nil + obj.obj.Value = nil + + if value == PatternFlowIcmpEchoCodeChoice.VALUE { + defaultValue := uint32(0) + obj.obj.Value = &defaultValue + } + + if value == PatternFlowIcmpEchoCodeChoice.VALUES { + defaultValue := []uint32{0} + obj.obj.Values = defaultValue + } + + if value == PatternFlowIcmpEchoCodeChoice.INCREMENT { + obj.obj.Increment = NewPatternFlowIcmpEchoCodeCounter().Msg() + } + + if value == PatternFlowIcmpEchoCodeChoice.DECREMENT { + obj.obj.Decrement = NewPatternFlowIcmpEchoCodeCounter().Msg() + } - obj.obj.Start = &value return obj } // description is TBD -// Step returns a uint32 -func (obj *patternFlowEthernetPauseControlOpCodeCounter) Step() uint32 { +// Value returns a uint32 +func (obj *patternFlowIcmpEchoCode) Value() uint32 { - return *obj.obj.Step + if obj.obj.Value == nil { + obj.SetChoice(PatternFlowIcmpEchoCodeChoice.VALUE) + } + + return *obj.obj.Value } // description is TBD -// Step returns a uint32 -func (obj *patternFlowEthernetPauseControlOpCodeCounter) HasStep() bool { - return obj.obj.Step != nil +// Value returns a uint32 +func (obj *patternFlowIcmpEchoCode) HasValue() bool { + return obj.obj.Value != nil } // description is TBD -// SetStep sets the uint32 value in the PatternFlowEthernetPauseControlOpCodeCounter object -func (obj *patternFlowEthernetPauseControlOpCodeCounter) SetStep(value uint32) PatternFlowEthernetPauseControlOpCodeCounter { +// SetValue sets the uint32 value in the PatternFlowIcmpEchoCode object +func (obj *patternFlowIcmpEchoCode) SetValue(value uint32) PatternFlowIcmpEchoCode { + obj.SetChoice(PatternFlowIcmpEchoCodeChoice.VALUE) + obj.obj.Value = &value + return obj +} + +// description is TBD +// Values returns a []uint32 +func (obj *patternFlowIcmpEchoCode) Values() []uint32 { + if obj.obj.Values == nil { + obj.SetValues([]uint32{0}) + } + return obj.obj.Values +} + +// description is TBD +// SetValues sets the []uint32 value in the PatternFlowIcmpEchoCode object +func (obj *patternFlowIcmpEchoCode) SetValues(value []uint32) PatternFlowIcmpEchoCode { + obj.SetChoice(PatternFlowIcmpEchoCodeChoice.VALUES) + if obj.obj.Values == nil { + obj.obj.Values = make([]uint32, 0) + } + obj.obj.Values = value - obj.obj.Step = &value return obj } // description is TBD -// Count returns a uint32 -func (obj *patternFlowEthernetPauseControlOpCodeCounter) Count() uint32 { +// Increment returns a PatternFlowIcmpEchoCodeCounter +func (obj *patternFlowIcmpEchoCode) Increment() PatternFlowIcmpEchoCodeCounter { + if obj.obj.Increment == nil { + obj.SetChoice(PatternFlowIcmpEchoCodeChoice.INCREMENT) + } + if obj.incrementHolder == nil { + obj.incrementHolder = &patternFlowIcmpEchoCodeCounter{obj: obj.obj.Increment} + } + return obj.incrementHolder +} - return *obj.obj.Count +// description is TBD +// Increment returns a PatternFlowIcmpEchoCodeCounter +func (obj *patternFlowIcmpEchoCode) HasIncrement() bool { + return obj.obj.Increment != nil +} + +// description is TBD +// SetIncrement sets the PatternFlowIcmpEchoCodeCounter value in the PatternFlowIcmpEchoCode object +func (obj *patternFlowIcmpEchoCode) SetIncrement(value PatternFlowIcmpEchoCodeCounter) PatternFlowIcmpEchoCode { + obj.SetChoice(PatternFlowIcmpEchoCodeChoice.INCREMENT) + obj.incrementHolder = nil + obj.obj.Increment = value.Msg() + return obj } // description is TBD -// Count returns a uint32 -func (obj *patternFlowEthernetPauseControlOpCodeCounter) HasCount() bool { - return obj.obj.Count != nil +// Decrement returns a PatternFlowIcmpEchoCodeCounter +func (obj *patternFlowIcmpEchoCode) Decrement() PatternFlowIcmpEchoCodeCounter { + if obj.obj.Decrement == nil { + obj.SetChoice(PatternFlowIcmpEchoCodeChoice.DECREMENT) + } + if obj.decrementHolder == nil { + obj.decrementHolder = &patternFlowIcmpEchoCodeCounter{obj: obj.obj.Decrement} + } + return obj.decrementHolder } // description is TBD -// SetCount sets the uint32 value in the PatternFlowEthernetPauseControlOpCodeCounter object -func (obj *patternFlowEthernetPauseControlOpCodeCounter) SetCount(value uint32) PatternFlowEthernetPauseControlOpCodeCounter { +// Decrement returns a PatternFlowIcmpEchoCodeCounter +func (obj *patternFlowIcmpEchoCode) HasDecrement() bool { + return obj.obj.Decrement != nil +} + +// description is TBD +// SetDecrement sets the PatternFlowIcmpEchoCodeCounter value in the PatternFlowIcmpEchoCode object +func (obj *patternFlowIcmpEchoCode) SetDecrement(value PatternFlowIcmpEchoCodeCounter) PatternFlowIcmpEchoCode { + obj.SetChoice(PatternFlowIcmpEchoCodeChoice.DECREMENT) + obj.decrementHolder = nil + obj.obj.Decrement = value.Msg() - obj.obj.Count = &value return obj } -func (obj *patternFlowEthernetPauseControlOpCodeCounter) validateObj(vObj *validation, set_default bool) { +// One or more metric tags can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. +// MetricTags returns a []PatternFlowIcmpEchoCodeMetricTag +func (obj *patternFlowIcmpEchoCode) MetricTags() PatternFlowIcmpEchoCodePatternFlowIcmpEchoCodeMetricTagIter { + if len(obj.obj.MetricTags) == 0 { + obj.obj.MetricTags = []*otg.PatternFlowIcmpEchoCodeMetricTag{} + } + if obj.metricTagsHolder == nil { + obj.metricTagsHolder = newPatternFlowIcmpEchoCodePatternFlowIcmpEchoCodeMetricTagIter(&obj.obj.MetricTags).setMsg(obj) + } + return obj.metricTagsHolder +} + +type patternFlowIcmpEchoCodePatternFlowIcmpEchoCodeMetricTagIter struct { + obj *patternFlowIcmpEchoCode + patternFlowIcmpEchoCodeMetricTagSlice []PatternFlowIcmpEchoCodeMetricTag + fieldPtr *[]*otg.PatternFlowIcmpEchoCodeMetricTag +} + +func newPatternFlowIcmpEchoCodePatternFlowIcmpEchoCodeMetricTagIter(ptr *[]*otg.PatternFlowIcmpEchoCodeMetricTag) PatternFlowIcmpEchoCodePatternFlowIcmpEchoCodeMetricTagIter { + return &patternFlowIcmpEchoCodePatternFlowIcmpEchoCodeMetricTagIter{fieldPtr: ptr} +} + +type PatternFlowIcmpEchoCodePatternFlowIcmpEchoCodeMetricTagIter interface { + setMsg(*patternFlowIcmpEchoCode) PatternFlowIcmpEchoCodePatternFlowIcmpEchoCodeMetricTagIter + Items() []PatternFlowIcmpEchoCodeMetricTag + Add() PatternFlowIcmpEchoCodeMetricTag + Append(items ...PatternFlowIcmpEchoCodeMetricTag) PatternFlowIcmpEchoCodePatternFlowIcmpEchoCodeMetricTagIter + Set(index int, newObj PatternFlowIcmpEchoCodeMetricTag) PatternFlowIcmpEchoCodePatternFlowIcmpEchoCodeMetricTagIter + Clear() PatternFlowIcmpEchoCodePatternFlowIcmpEchoCodeMetricTagIter + clearHolderSlice() PatternFlowIcmpEchoCodePatternFlowIcmpEchoCodeMetricTagIter + appendHolderSlice(item PatternFlowIcmpEchoCodeMetricTag) PatternFlowIcmpEchoCodePatternFlowIcmpEchoCodeMetricTagIter +} + +func (obj *patternFlowIcmpEchoCodePatternFlowIcmpEchoCodeMetricTagIter) setMsg(msg *patternFlowIcmpEchoCode) PatternFlowIcmpEchoCodePatternFlowIcmpEchoCodeMetricTagIter { + obj.clearHolderSlice() + for _, val := range *obj.fieldPtr { + obj.appendHolderSlice(&patternFlowIcmpEchoCodeMetricTag{obj: val}) + } + obj.obj = msg + return obj +} + +func (obj *patternFlowIcmpEchoCodePatternFlowIcmpEchoCodeMetricTagIter) Items() []PatternFlowIcmpEchoCodeMetricTag { + return obj.patternFlowIcmpEchoCodeMetricTagSlice +} + +func (obj *patternFlowIcmpEchoCodePatternFlowIcmpEchoCodeMetricTagIter) Add() PatternFlowIcmpEchoCodeMetricTag { + newObj := &otg.PatternFlowIcmpEchoCodeMetricTag{} + *obj.fieldPtr = append(*obj.fieldPtr, newObj) + newLibObj := &patternFlowIcmpEchoCodeMetricTag{obj: newObj} + newLibObj.setDefault() + obj.patternFlowIcmpEchoCodeMetricTagSlice = append(obj.patternFlowIcmpEchoCodeMetricTagSlice, newLibObj) + return newLibObj +} + +func (obj *patternFlowIcmpEchoCodePatternFlowIcmpEchoCodeMetricTagIter) Append(items ...PatternFlowIcmpEchoCodeMetricTag) PatternFlowIcmpEchoCodePatternFlowIcmpEchoCodeMetricTagIter { + for _, item := range items { + newObj := item.Msg() + *obj.fieldPtr = append(*obj.fieldPtr, newObj) + obj.patternFlowIcmpEchoCodeMetricTagSlice = append(obj.patternFlowIcmpEchoCodeMetricTagSlice, item) + } + return obj +} + +func (obj *patternFlowIcmpEchoCodePatternFlowIcmpEchoCodeMetricTagIter) Set(index int, newObj PatternFlowIcmpEchoCodeMetricTag) PatternFlowIcmpEchoCodePatternFlowIcmpEchoCodeMetricTagIter { + (*obj.fieldPtr)[index] = newObj.Msg() + obj.patternFlowIcmpEchoCodeMetricTagSlice[index] = newObj + return obj +} +func (obj *patternFlowIcmpEchoCodePatternFlowIcmpEchoCodeMetricTagIter) Clear() PatternFlowIcmpEchoCodePatternFlowIcmpEchoCodeMetricTagIter { + if len(*obj.fieldPtr) > 0 { + *obj.fieldPtr = []*otg.PatternFlowIcmpEchoCodeMetricTag{} + obj.patternFlowIcmpEchoCodeMetricTagSlice = []PatternFlowIcmpEchoCodeMetricTag{} + } + return obj +} +func (obj *patternFlowIcmpEchoCodePatternFlowIcmpEchoCodeMetricTagIter) clearHolderSlice() PatternFlowIcmpEchoCodePatternFlowIcmpEchoCodeMetricTagIter { + if len(obj.patternFlowIcmpEchoCodeMetricTagSlice) > 0 { + obj.patternFlowIcmpEchoCodeMetricTagSlice = []PatternFlowIcmpEchoCodeMetricTag{} + } + return obj +} +func (obj *patternFlowIcmpEchoCodePatternFlowIcmpEchoCodeMetricTagIter) appendHolderSlice(item PatternFlowIcmpEchoCodeMetricTag) PatternFlowIcmpEchoCodePatternFlowIcmpEchoCodeMetricTagIter { + obj.patternFlowIcmpEchoCodeMetricTagSlice = append(obj.patternFlowIcmpEchoCodeMetricTagSlice, item) + return obj +} + +func (obj *patternFlowIcmpEchoCode) validateObj(vObj *validation, set_default bool) { if set_default { obj.setDefault() } - if obj.obj.Start != nil { + if obj.obj.Value != nil { - if *obj.obj.Start > 65535 { + if *obj.obj.Value > 255 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowEthernetPauseControlOpCodeCounter.Start <= 65535 but Got %d", *obj.obj.Start)) + fmt.Sprintf("0 <= PatternFlowIcmpEchoCode.Value <= 255 but Got %d", *obj.obj.Value)) } } - if obj.obj.Step != nil { + if obj.obj.Values != nil { + + for _, item := range obj.obj.Values { + if item > 255 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("min(uint32) <= PatternFlowIcmpEchoCode.Values <= 255 but Got %d", item)) + } - if *obj.obj.Step > 65535 { - vObj.validationErrors = append( - vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowEthernetPauseControlOpCodeCounter.Step <= 65535 but Got %d", *obj.obj.Step)) } } - if obj.obj.Count != nil { + if obj.obj.Increment != nil { - if *obj.obj.Count > 65535 { - vObj.validationErrors = append( - vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowEthernetPauseControlOpCodeCounter.Count <= 65535 but Got %d", *obj.obj.Count)) + obj.Increment().validateObj(vObj, set_default) + } + + if obj.obj.Decrement != nil { + + obj.Decrement().validateObj(vObj, set_default) + } + + if len(obj.obj.MetricTags) != 0 { + + if set_default { + obj.MetricTags().clearHolderSlice() + for _, item := range obj.obj.MetricTags { + obj.MetricTags().appendHolderSlice(&patternFlowIcmpEchoCodeMetricTag{obj: item}) + } + } + for _, item := range obj.MetricTags().Items() { + item.validateObj(vObj, set_default) } } } -func (obj *patternFlowEthernetPauseControlOpCodeCounter) setDefault() { - if obj.obj.Start == nil { - obj.SetStart(1) - } - if obj.obj.Step == nil { - obj.SetStep(1) - } - if obj.obj.Count == nil { - obj.SetCount(1) +func (obj *patternFlowIcmpEchoCode) setDefault() { + if obj.obj.Choice == nil { + obj.SetChoice(PatternFlowIcmpEchoCodeChoice.VALUE) + } } -// ***** PatternFlowEthernetPauseControlOpCodeMetricTag ***** -type patternFlowEthernetPauseControlOpCodeMetricTag struct { +// ***** PatternFlowIcmpEchoChecksum ***** +type patternFlowIcmpEchoChecksum struct { validation - obj *otg.PatternFlowEthernetPauseControlOpCodeMetricTag + obj *otg.PatternFlowIcmpEchoChecksum } -func NewPatternFlowEthernetPauseControlOpCodeMetricTag() PatternFlowEthernetPauseControlOpCodeMetricTag { - obj := patternFlowEthernetPauseControlOpCodeMetricTag{obj: &otg.PatternFlowEthernetPauseControlOpCodeMetricTag{}} +func NewPatternFlowIcmpEchoChecksum() PatternFlowIcmpEchoChecksum { + obj := patternFlowIcmpEchoChecksum{obj: &otg.PatternFlowIcmpEchoChecksum{}} obj.setDefault() return &obj } -func (obj *patternFlowEthernetPauseControlOpCodeMetricTag) Msg() *otg.PatternFlowEthernetPauseControlOpCodeMetricTag { +func (obj *patternFlowIcmpEchoChecksum) Msg() *otg.PatternFlowIcmpEchoChecksum { return obj.obj } -func (obj *patternFlowEthernetPauseControlOpCodeMetricTag) SetMsg(msg *otg.PatternFlowEthernetPauseControlOpCodeMetricTag) PatternFlowEthernetPauseControlOpCodeMetricTag { +func (obj *patternFlowIcmpEchoChecksum) SetMsg(msg *otg.PatternFlowIcmpEchoChecksum) PatternFlowIcmpEchoChecksum { proto.Merge(obj.obj, msg) return obj } -func (obj *patternFlowEthernetPauseControlOpCodeMetricTag) ToProto() (*otg.PatternFlowEthernetPauseControlOpCodeMetricTag, error) { +func (obj *patternFlowIcmpEchoChecksum) ToProto() (*otg.PatternFlowIcmpEchoChecksum, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -219611,7 +263212,7 @@ func (obj *patternFlowEthernetPauseControlOpCodeMetricTag) ToProto() (*otg.Patte return obj.Msg(), nil } -func (obj *patternFlowEthernetPauseControlOpCodeMetricTag) FromProto(msg *otg.PatternFlowEthernetPauseControlOpCodeMetricTag) (PatternFlowEthernetPauseControlOpCodeMetricTag, error) { +func (obj *patternFlowIcmpEchoChecksum) FromProto(msg *otg.PatternFlowIcmpEchoChecksum) (PatternFlowIcmpEchoChecksum, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -219620,7 +263221,7 @@ func (obj *patternFlowEthernetPauseControlOpCodeMetricTag) FromProto(msg *otg.Pa return newObj, nil } -func (obj *patternFlowEthernetPauseControlOpCodeMetricTag) ToPbText() (string, error) { +func (obj *patternFlowIcmpEchoChecksum) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -219632,7 +263233,7 @@ func (obj *patternFlowEthernetPauseControlOpCodeMetricTag) ToPbText() (string, e return string(protoMarshal), nil } -func (obj *patternFlowEthernetPauseControlOpCodeMetricTag) FromPbText(value string) error { +func (obj *patternFlowIcmpEchoChecksum) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj @@ -219645,7 +263246,7 @@ func (obj *patternFlowEthernetPauseControlOpCodeMetricTag) FromPbText(value stri return retObj } -func (obj *patternFlowEthernetPauseControlOpCodeMetricTag) ToYaml() (string, error) { +func (obj *patternFlowIcmpEchoChecksum) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -219666,7 +263267,7 @@ func (obj *patternFlowEthernetPauseControlOpCodeMetricTag) ToYaml() (string, err return string(data), nil } -func (obj *patternFlowEthernetPauseControlOpCodeMetricTag) FromYaml(value string) error { +func (obj *patternFlowIcmpEchoChecksum) FromYaml(value string) error { if value == "" { value = "{}" } @@ -219691,7 +263292,7 @@ func (obj *patternFlowEthernetPauseControlOpCodeMetricTag) FromYaml(value string return nil } -func (obj *patternFlowEthernetPauseControlOpCodeMetricTag) ToJson() (string, error) { +func (obj *patternFlowIcmpEchoChecksum) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -219709,7 +263310,7 @@ func (obj *patternFlowEthernetPauseControlOpCodeMetricTag) ToJson() (string, err return string(data), nil } -func (obj *patternFlowEthernetPauseControlOpCodeMetricTag) FromJson(value string) error { +func (obj *patternFlowIcmpEchoChecksum) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -219730,19 +263331,19 @@ func (obj *patternFlowEthernetPauseControlOpCodeMetricTag) FromJson(value string return nil } -func (obj *patternFlowEthernetPauseControlOpCodeMetricTag) validateToAndFrom() error { +func (obj *patternFlowIcmpEchoChecksum) validateToAndFrom() error { // emptyVars() obj.validateObj(&obj.validation, true) return obj.validationResult() } -func (obj *patternFlowEthernetPauseControlOpCodeMetricTag) Validate() error { +func (obj *patternFlowIcmpEchoChecksum) Validate() error { // emptyVars() obj.validateObj(&obj.validation, false) return obj.validationResult() } -func (obj *patternFlowEthernetPauseControlOpCodeMetricTag) String() string { +func (obj *patternFlowIcmpEchoChecksum) String() string { str, err := obj.ToYaml() if err != nil { return err.Error() @@ -219750,12 +263351,12 @@ func (obj *patternFlowEthernetPauseControlOpCodeMetricTag) String() string { return str } -func (obj *patternFlowEthernetPauseControlOpCodeMetricTag) Clone() (PatternFlowEthernetPauseControlOpCodeMetricTag, error) { +func (obj *patternFlowIcmpEchoChecksum) Clone() (PatternFlowIcmpEchoChecksum, error) { vErr := obj.Validate() if vErr != nil { return nil, vErr } - newObj := NewPatternFlowEthernetPauseControlOpCodeMetricTag() + newObj := NewPatternFlowIcmpEchoChecksum() data, err := proto.Marshal(obj.Msg()) if err != nil { return nil, err @@ -219767,183 +263368,210 @@ func (obj *patternFlowEthernetPauseControlOpCodeMetricTag) Clone() (PatternFlowE return newObj, nil } -// PatternFlowEthernetPauseControlOpCodeMetricTag is metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. -type PatternFlowEthernetPauseControlOpCodeMetricTag interface { +// PatternFlowIcmpEchoChecksum is iCMP checksum +type PatternFlowIcmpEchoChecksum interface { Validation - // Msg marshals PatternFlowEthernetPauseControlOpCodeMetricTag to protobuf object *otg.PatternFlowEthernetPauseControlOpCodeMetricTag + // Msg marshals PatternFlowIcmpEchoChecksum to protobuf object *otg.PatternFlowIcmpEchoChecksum // and doesn't set defaults - Msg() *otg.PatternFlowEthernetPauseControlOpCodeMetricTag - // SetMsg unmarshals PatternFlowEthernetPauseControlOpCodeMetricTag from protobuf object *otg.PatternFlowEthernetPauseControlOpCodeMetricTag + Msg() *otg.PatternFlowIcmpEchoChecksum + // SetMsg unmarshals PatternFlowIcmpEchoChecksum from protobuf object *otg.PatternFlowIcmpEchoChecksum // and doesn't set defaults - SetMsg(*otg.PatternFlowEthernetPauseControlOpCodeMetricTag) PatternFlowEthernetPauseControlOpCodeMetricTag - // ToProto marshals PatternFlowEthernetPauseControlOpCodeMetricTag to protobuf object *otg.PatternFlowEthernetPauseControlOpCodeMetricTag - ToProto() (*otg.PatternFlowEthernetPauseControlOpCodeMetricTag, error) - // ToPbText marshals PatternFlowEthernetPauseControlOpCodeMetricTag to protobuf text + SetMsg(*otg.PatternFlowIcmpEchoChecksum) PatternFlowIcmpEchoChecksum + // ToProto marshals PatternFlowIcmpEchoChecksum to protobuf object *otg.PatternFlowIcmpEchoChecksum + ToProto() (*otg.PatternFlowIcmpEchoChecksum, error) + // ToPbText marshals PatternFlowIcmpEchoChecksum to protobuf text ToPbText() (string, error) - // ToYaml marshals PatternFlowEthernetPauseControlOpCodeMetricTag to YAML text + // ToYaml marshals PatternFlowIcmpEchoChecksum to YAML text ToYaml() (string, error) - // ToJson marshals PatternFlowEthernetPauseControlOpCodeMetricTag to JSON text + // ToJson marshals PatternFlowIcmpEchoChecksum to JSON text ToJson() (string, error) - // FromProto unmarshals PatternFlowEthernetPauseControlOpCodeMetricTag from protobuf object *otg.PatternFlowEthernetPauseControlOpCodeMetricTag - FromProto(msg *otg.PatternFlowEthernetPauseControlOpCodeMetricTag) (PatternFlowEthernetPauseControlOpCodeMetricTag, error) - // FromPbText unmarshals PatternFlowEthernetPauseControlOpCodeMetricTag from protobuf text + // FromProto unmarshals PatternFlowIcmpEchoChecksum from protobuf object *otg.PatternFlowIcmpEchoChecksum + FromProto(msg *otg.PatternFlowIcmpEchoChecksum) (PatternFlowIcmpEchoChecksum, error) + // FromPbText unmarshals PatternFlowIcmpEchoChecksum from protobuf text FromPbText(value string) error - // FromYaml unmarshals PatternFlowEthernetPauseControlOpCodeMetricTag from YAML text + // FromYaml unmarshals PatternFlowIcmpEchoChecksum from YAML text FromYaml(value string) error - // FromJson unmarshals PatternFlowEthernetPauseControlOpCodeMetricTag from JSON text + // FromJson unmarshals PatternFlowIcmpEchoChecksum from JSON text FromJson(value string) error - // Validate validates PatternFlowEthernetPauseControlOpCodeMetricTag + // Validate validates PatternFlowIcmpEchoChecksum Validate() error // A stringer function String() string // Clones the object - Clone() (PatternFlowEthernetPauseControlOpCodeMetricTag, error) + Clone() (PatternFlowIcmpEchoChecksum, error) validateToAndFrom() error validateObj(vObj *validation, set_default bool) setDefault() - // Name returns string, set in PatternFlowEthernetPauseControlOpCodeMetricTag. - Name() string - // SetName assigns string provided by user to PatternFlowEthernetPauseControlOpCodeMetricTag - SetName(value string) PatternFlowEthernetPauseControlOpCodeMetricTag - // Offset returns uint32, set in PatternFlowEthernetPauseControlOpCodeMetricTag. - Offset() uint32 - // SetOffset assigns uint32 provided by user to PatternFlowEthernetPauseControlOpCodeMetricTag - SetOffset(value uint32) PatternFlowEthernetPauseControlOpCodeMetricTag - // HasOffset checks if Offset has been set in PatternFlowEthernetPauseControlOpCodeMetricTag - HasOffset() bool - // Length returns uint32, set in PatternFlowEthernetPauseControlOpCodeMetricTag. - Length() uint32 - // SetLength assigns uint32 provided by user to PatternFlowEthernetPauseControlOpCodeMetricTag - SetLength(value uint32) PatternFlowEthernetPauseControlOpCodeMetricTag - // HasLength checks if Length has been set in PatternFlowEthernetPauseControlOpCodeMetricTag - HasLength() bool + // Choice returns PatternFlowIcmpEchoChecksumChoiceEnum, set in PatternFlowIcmpEchoChecksum + Choice() PatternFlowIcmpEchoChecksumChoiceEnum + // SetChoice assigns PatternFlowIcmpEchoChecksumChoiceEnum provided by user to PatternFlowIcmpEchoChecksum + SetChoice(value PatternFlowIcmpEchoChecksumChoiceEnum) PatternFlowIcmpEchoChecksum + // HasChoice checks if Choice has been set in PatternFlowIcmpEchoChecksum + HasChoice() bool + // Generated returns PatternFlowIcmpEchoChecksumGeneratedEnum, set in PatternFlowIcmpEchoChecksum + Generated() PatternFlowIcmpEchoChecksumGeneratedEnum + // SetGenerated assigns PatternFlowIcmpEchoChecksumGeneratedEnum provided by user to PatternFlowIcmpEchoChecksum + SetGenerated(value PatternFlowIcmpEchoChecksumGeneratedEnum) PatternFlowIcmpEchoChecksum + // HasGenerated checks if Generated has been set in PatternFlowIcmpEchoChecksum + HasGenerated() bool + // Custom returns uint32, set in PatternFlowIcmpEchoChecksum. + Custom() uint32 + // SetCustom assigns uint32 provided by user to PatternFlowIcmpEchoChecksum + SetCustom(value uint32) PatternFlowIcmpEchoChecksum + // HasCustom checks if Custom has been set in PatternFlowIcmpEchoChecksum + HasCustom() bool } -// Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field -// Name returns a string -func (obj *patternFlowEthernetPauseControlOpCodeMetricTag) Name() string { +type PatternFlowIcmpEchoChecksumChoiceEnum string - return *obj.obj.Name +// Enum of Choice on PatternFlowIcmpEchoChecksum +var PatternFlowIcmpEchoChecksumChoice = struct { + GENERATED PatternFlowIcmpEchoChecksumChoiceEnum + CUSTOM PatternFlowIcmpEchoChecksumChoiceEnum +}{ + GENERATED: PatternFlowIcmpEchoChecksumChoiceEnum("generated"), + CUSTOM: PatternFlowIcmpEchoChecksumChoiceEnum("custom"), +} +func (obj *patternFlowIcmpEchoChecksum) Choice() PatternFlowIcmpEchoChecksumChoiceEnum { + return PatternFlowIcmpEchoChecksumChoiceEnum(obj.obj.Choice.Enum().String()) } -// Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field -// SetName sets the string value in the PatternFlowEthernetPauseControlOpCodeMetricTag object -func (obj *patternFlowEthernetPauseControlOpCodeMetricTag) SetName(value string) PatternFlowEthernetPauseControlOpCodeMetricTag { +// The type of checksum +// Choice returns a string +func (obj *patternFlowIcmpEchoChecksum) HasChoice() bool { + return obj.obj.Choice != nil +} - obj.obj.Name = &value +func (obj *patternFlowIcmpEchoChecksum) SetChoice(value PatternFlowIcmpEchoChecksumChoiceEnum) PatternFlowIcmpEchoChecksum { + intValue, ok := otg.PatternFlowIcmpEchoChecksum_Choice_Enum_value[string(value)] + if !ok { + obj.validationErrors = append(obj.validationErrors, fmt.Sprintf( + "%s is not a valid choice on PatternFlowIcmpEchoChecksumChoiceEnum", string(value))) + return obj + } + enumValue := otg.PatternFlowIcmpEchoChecksum_Choice_Enum(intValue) + obj.obj.Choice = &enumValue + obj.obj.Custom = nil + obj.obj.Generated = otg.PatternFlowIcmpEchoChecksum_Generated_unspecified.Enum() return obj } -// Offset in bits relative to start of corresponding header field -// Offset returns a uint32 -func (obj *patternFlowEthernetPauseControlOpCodeMetricTag) Offset() uint32 { +type PatternFlowIcmpEchoChecksumGeneratedEnum string - return *obj.obj.Offset +// Enum of Generated on PatternFlowIcmpEchoChecksum +var PatternFlowIcmpEchoChecksumGenerated = struct { + GOOD PatternFlowIcmpEchoChecksumGeneratedEnum + BAD PatternFlowIcmpEchoChecksumGeneratedEnum +}{ + GOOD: PatternFlowIcmpEchoChecksumGeneratedEnum("good"), + BAD: PatternFlowIcmpEchoChecksumGeneratedEnum("bad"), +} +func (obj *patternFlowIcmpEchoChecksum) Generated() PatternFlowIcmpEchoChecksumGeneratedEnum { + return PatternFlowIcmpEchoChecksumGeneratedEnum(obj.obj.Generated.Enum().String()) } -// Offset in bits relative to start of corresponding header field -// Offset returns a uint32 -func (obj *patternFlowEthernetPauseControlOpCodeMetricTag) HasOffset() bool { - return obj.obj.Offset != nil +// A system generated checksum value +// Generated returns a string +func (obj *patternFlowIcmpEchoChecksum) HasGenerated() bool { + return obj.obj.Generated != nil } -// Offset in bits relative to start of corresponding header field -// SetOffset sets the uint32 value in the PatternFlowEthernetPauseControlOpCodeMetricTag object -func (obj *patternFlowEthernetPauseControlOpCodeMetricTag) SetOffset(value uint32) PatternFlowEthernetPauseControlOpCodeMetricTag { +func (obj *patternFlowIcmpEchoChecksum) SetGenerated(value PatternFlowIcmpEchoChecksumGeneratedEnum) PatternFlowIcmpEchoChecksum { + intValue, ok := otg.PatternFlowIcmpEchoChecksum_Generated_Enum_value[string(value)] + if !ok { + obj.validationErrors = append(obj.validationErrors, fmt.Sprintf( + "%s is not a valid choice on PatternFlowIcmpEchoChecksumGeneratedEnum", string(value))) + return obj + } + enumValue := otg.PatternFlowIcmpEchoChecksum_Generated_Enum(intValue) + obj.obj.Generated = &enumValue - obj.obj.Offset = &value return obj } -// Number of bits to track for metrics starting from configured offset of corresponding header field -// Length returns a uint32 -func (obj *patternFlowEthernetPauseControlOpCodeMetricTag) Length() uint32 { +// A custom checksum value +// Custom returns a uint32 +func (obj *patternFlowIcmpEchoChecksum) Custom() uint32 { - return *obj.obj.Length + if obj.obj.Custom == nil { + obj.SetChoice(PatternFlowIcmpEchoChecksumChoice.CUSTOM) + } -} + return *obj.obj.Custom -// Number of bits to track for metrics starting from configured offset of corresponding header field -// Length returns a uint32 -func (obj *patternFlowEthernetPauseControlOpCodeMetricTag) HasLength() bool { - return obj.obj.Length != nil } -// Number of bits to track for metrics starting from configured offset of corresponding header field -// SetLength sets the uint32 value in the PatternFlowEthernetPauseControlOpCodeMetricTag object -func (obj *patternFlowEthernetPauseControlOpCodeMetricTag) SetLength(value uint32) PatternFlowEthernetPauseControlOpCodeMetricTag { +// A custom checksum value +// Custom returns a uint32 +func (obj *patternFlowIcmpEchoChecksum) HasCustom() bool { + return obj.obj.Custom != nil +} - obj.obj.Length = &value +// A custom checksum value +// SetCustom sets the uint32 value in the PatternFlowIcmpEchoChecksum object +func (obj *patternFlowIcmpEchoChecksum) SetCustom(value uint32) PatternFlowIcmpEchoChecksum { + obj.SetChoice(PatternFlowIcmpEchoChecksumChoice.CUSTOM) + obj.obj.Custom = &value return obj } -func (obj *patternFlowEthernetPauseControlOpCodeMetricTag) validateObj(vObj *validation, set_default bool) { +func (obj *patternFlowIcmpEchoChecksum) validateObj(vObj *validation, set_default bool) { if set_default { obj.setDefault() } - // Name is required - if obj.obj.Name == nil { - vObj.validationErrors = append(vObj.validationErrors, "Name is required field on interface PatternFlowEthernetPauseControlOpCodeMetricTag") - } - - if obj.obj.Offset != nil { + if obj.obj.Custom != nil { - if *obj.obj.Offset > 15 { + if *obj.obj.Custom > 65535 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowEthernetPauseControlOpCodeMetricTag.Offset <= 15 but Got %d", *obj.obj.Offset)) + fmt.Sprintf("0 <= PatternFlowIcmpEchoChecksum.Custom <= 65535 but Got %d", *obj.obj.Custom)) } } - if obj.obj.Length != nil { - - if *obj.obj.Length < 1 || *obj.obj.Length > 16 { - vObj.validationErrors = append( - vObj.validationErrors, - fmt.Sprintf("1 <= PatternFlowEthernetPauseControlOpCodeMetricTag.Length <= 16 but Got %d", *obj.obj.Length)) - } +} - } +func (obj *patternFlowIcmpEchoChecksum) setDefault() { + if obj.obj.Choice == nil { + obj.SetChoice(PatternFlowIcmpEchoChecksumChoice.GENERATED) + if obj.obj.Generated.Number() == 0 { + obj.SetGenerated(PatternFlowIcmpEchoChecksumGenerated.GOOD) -} + } -func (obj *patternFlowEthernetPauseControlOpCodeMetricTag) setDefault() { - if obj.obj.Offset == nil { - obj.SetOffset(0) - } - if obj.obj.Length == nil { - obj.SetLength(16) } } -// ***** PatternFlowEthernetPauseTimeCounter ***** -type patternFlowEthernetPauseTimeCounter struct { +// ***** PatternFlowIcmpEchoIdentifier ***** +type patternFlowIcmpEchoIdentifier struct { validation - obj *otg.PatternFlowEthernetPauseTimeCounter + obj *otg.PatternFlowIcmpEchoIdentifier + incrementHolder PatternFlowIcmpEchoIdentifierCounter + decrementHolder PatternFlowIcmpEchoIdentifierCounter + metricTagsHolder PatternFlowIcmpEchoIdentifierPatternFlowIcmpEchoIdentifierMetricTagIter } -func NewPatternFlowEthernetPauseTimeCounter() PatternFlowEthernetPauseTimeCounter { - obj := patternFlowEthernetPauseTimeCounter{obj: &otg.PatternFlowEthernetPauseTimeCounter{}} +func NewPatternFlowIcmpEchoIdentifier() PatternFlowIcmpEchoIdentifier { + obj := patternFlowIcmpEchoIdentifier{obj: &otg.PatternFlowIcmpEchoIdentifier{}} obj.setDefault() return &obj } -func (obj *patternFlowEthernetPauseTimeCounter) Msg() *otg.PatternFlowEthernetPauseTimeCounter { +func (obj *patternFlowIcmpEchoIdentifier) Msg() *otg.PatternFlowIcmpEchoIdentifier { return obj.obj } -func (obj *patternFlowEthernetPauseTimeCounter) SetMsg(msg *otg.PatternFlowEthernetPauseTimeCounter) PatternFlowEthernetPauseTimeCounter { - +func (obj *patternFlowIcmpEchoIdentifier) SetMsg(msg *otg.PatternFlowIcmpEchoIdentifier) PatternFlowIcmpEchoIdentifier { + obj.setNil() proto.Merge(obj.obj, msg) return obj } -func (obj *patternFlowEthernetPauseTimeCounter) ToProto() (*otg.PatternFlowEthernetPauseTimeCounter, error) { +func (obj *patternFlowIcmpEchoIdentifier) ToProto() (*otg.PatternFlowIcmpEchoIdentifier, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -219951,7 +263579,7 @@ func (obj *patternFlowEthernetPauseTimeCounter) ToProto() (*otg.PatternFlowEther return obj.Msg(), nil } -func (obj *patternFlowEthernetPauseTimeCounter) FromProto(msg *otg.PatternFlowEthernetPauseTimeCounter) (PatternFlowEthernetPauseTimeCounter, error) { +func (obj *patternFlowIcmpEchoIdentifier) FromProto(msg *otg.PatternFlowIcmpEchoIdentifier) (PatternFlowIcmpEchoIdentifier, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -219960,7 +263588,7 @@ func (obj *patternFlowEthernetPauseTimeCounter) FromProto(msg *otg.PatternFlowEt return newObj, nil } -func (obj *patternFlowEthernetPauseTimeCounter) ToPbText() (string, error) { +func (obj *patternFlowIcmpEchoIdentifier) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -219972,12 +263600,12 @@ func (obj *patternFlowEthernetPauseTimeCounter) ToPbText() (string, error) { return string(protoMarshal), nil } -func (obj *patternFlowEthernetPauseTimeCounter) FromPbText(value string) error { +func (obj *patternFlowIcmpEchoIdentifier) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj } - + obj.setNil() vErr := obj.validateToAndFrom() if vErr != nil { return vErr @@ -219985,7 +263613,7 @@ func (obj *patternFlowEthernetPauseTimeCounter) FromPbText(value string) error { return retObj } -func (obj *patternFlowEthernetPauseTimeCounter) ToYaml() (string, error) { +func (obj *patternFlowIcmpEchoIdentifier) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -220006,7 +263634,7 @@ func (obj *patternFlowEthernetPauseTimeCounter) ToYaml() (string, error) { return string(data), nil } -func (obj *patternFlowEthernetPauseTimeCounter) FromYaml(value string) error { +func (obj *patternFlowIcmpEchoIdentifier) FromYaml(value string) error { if value == "" { value = "{}" } @@ -220023,7 +263651,7 @@ func (obj *patternFlowEthernetPauseTimeCounter) FromYaml(value string) error { return fmt.Errorf("unmarshal error %s", strings.Replace( uError.Error(), "\u00a0", " ", -1)[7:]) } - + obj.setNil() vErr := obj.validateToAndFrom() if vErr != nil { return vErr @@ -220031,7 +263659,7 @@ func (obj *patternFlowEthernetPauseTimeCounter) FromYaml(value string) error { return nil } -func (obj *patternFlowEthernetPauseTimeCounter) ToJson() (string, error) { +func (obj *patternFlowIcmpEchoIdentifier) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -220049,7 +263677,7 @@ func (obj *patternFlowEthernetPauseTimeCounter) ToJson() (string, error) { return string(data), nil } -func (obj *patternFlowEthernetPauseTimeCounter) FromJson(value string) error { +func (obj *patternFlowIcmpEchoIdentifier) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -220062,7 +263690,7 @@ func (obj *patternFlowEthernetPauseTimeCounter) FromJson(value string) error { return fmt.Errorf("unmarshal error %s", strings.Replace( uError.Error(), "\u00a0", " ", -1)[7:]) } - + obj.setNil() err := obj.validateToAndFrom() if err != nil { return err @@ -220070,19 +263698,19 @@ func (obj *patternFlowEthernetPauseTimeCounter) FromJson(value string) error { return nil } -func (obj *patternFlowEthernetPauseTimeCounter) validateToAndFrom() error { +func (obj *patternFlowIcmpEchoIdentifier) validateToAndFrom() error { // emptyVars() obj.validateObj(&obj.validation, true) return obj.validationResult() } -func (obj *patternFlowEthernetPauseTimeCounter) Validate() error { +func (obj *patternFlowIcmpEchoIdentifier) Validate() error { // emptyVars() obj.validateObj(&obj.validation, false) return obj.validationResult() } -func (obj *patternFlowEthernetPauseTimeCounter) String() string { +func (obj *patternFlowIcmpEchoIdentifier) String() string { str, err := obj.ToYaml() if err != nil { return err.Error() @@ -220090,12 +263718,12 @@ func (obj *patternFlowEthernetPauseTimeCounter) String() string { return str } -func (obj *patternFlowEthernetPauseTimeCounter) Clone() (PatternFlowEthernetPauseTimeCounter, error) { +func (obj *patternFlowIcmpEchoIdentifier) Clone() (PatternFlowIcmpEchoIdentifier, error) { vErr := obj.Validate() if vErr != nil { return nil, vErr } - newObj := NewPatternFlowEthernetPauseTimeCounter() + newObj := NewPatternFlowIcmpEchoIdentifier() data, err := proto.Marshal(obj.Msg()) if err != nil { return nil, err @@ -220107,199 +263735,426 @@ func (obj *patternFlowEthernetPauseTimeCounter) Clone() (PatternFlowEthernetPaus return newObj, nil } -// PatternFlowEthernetPauseTimeCounter is integer counter pattern -type PatternFlowEthernetPauseTimeCounter interface { +func (obj *patternFlowIcmpEchoIdentifier) setNil() { + obj.incrementHolder = nil + obj.decrementHolder = nil + obj.metricTagsHolder = nil + obj.validationErrors = nil + obj.warnings = nil + obj.constraints = make(map[string]map[string]Constraints) +} + +// PatternFlowIcmpEchoIdentifier is iCMP identifier +type PatternFlowIcmpEchoIdentifier interface { Validation - // Msg marshals PatternFlowEthernetPauseTimeCounter to protobuf object *otg.PatternFlowEthernetPauseTimeCounter + // Msg marshals PatternFlowIcmpEchoIdentifier to protobuf object *otg.PatternFlowIcmpEchoIdentifier // and doesn't set defaults - Msg() *otg.PatternFlowEthernetPauseTimeCounter - // SetMsg unmarshals PatternFlowEthernetPauseTimeCounter from protobuf object *otg.PatternFlowEthernetPauseTimeCounter + Msg() *otg.PatternFlowIcmpEchoIdentifier + // SetMsg unmarshals PatternFlowIcmpEchoIdentifier from protobuf object *otg.PatternFlowIcmpEchoIdentifier // and doesn't set defaults - SetMsg(*otg.PatternFlowEthernetPauseTimeCounter) PatternFlowEthernetPauseTimeCounter - // ToProto marshals PatternFlowEthernetPauseTimeCounter to protobuf object *otg.PatternFlowEthernetPauseTimeCounter - ToProto() (*otg.PatternFlowEthernetPauseTimeCounter, error) - // ToPbText marshals PatternFlowEthernetPauseTimeCounter to protobuf text + SetMsg(*otg.PatternFlowIcmpEchoIdentifier) PatternFlowIcmpEchoIdentifier + // ToProto marshals PatternFlowIcmpEchoIdentifier to protobuf object *otg.PatternFlowIcmpEchoIdentifier + ToProto() (*otg.PatternFlowIcmpEchoIdentifier, error) + // ToPbText marshals PatternFlowIcmpEchoIdentifier to protobuf text ToPbText() (string, error) - // ToYaml marshals PatternFlowEthernetPauseTimeCounter to YAML text + // ToYaml marshals PatternFlowIcmpEchoIdentifier to YAML text ToYaml() (string, error) - // ToJson marshals PatternFlowEthernetPauseTimeCounter to JSON text + // ToJson marshals PatternFlowIcmpEchoIdentifier to JSON text ToJson() (string, error) - // FromProto unmarshals PatternFlowEthernetPauseTimeCounter from protobuf object *otg.PatternFlowEthernetPauseTimeCounter - FromProto(msg *otg.PatternFlowEthernetPauseTimeCounter) (PatternFlowEthernetPauseTimeCounter, error) - // FromPbText unmarshals PatternFlowEthernetPauseTimeCounter from protobuf text + // FromProto unmarshals PatternFlowIcmpEchoIdentifier from protobuf object *otg.PatternFlowIcmpEchoIdentifier + FromProto(msg *otg.PatternFlowIcmpEchoIdentifier) (PatternFlowIcmpEchoIdentifier, error) + // FromPbText unmarshals PatternFlowIcmpEchoIdentifier from protobuf text FromPbText(value string) error - // FromYaml unmarshals PatternFlowEthernetPauseTimeCounter from YAML text + // FromYaml unmarshals PatternFlowIcmpEchoIdentifier from YAML text FromYaml(value string) error - // FromJson unmarshals PatternFlowEthernetPauseTimeCounter from JSON text + // FromJson unmarshals PatternFlowIcmpEchoIdentifier from JSON text FromJson(value string) error - // Validate validates PatternFlowEthernetPauseTimeCounter + // Validate validates PatternFlowIcmpEchoIdentifier Validate() error // A stringer function String() string // Clones the object - Clone() (PatternFlowEthernetPauseTimeCounter, error) + Clone() (PatternFlowIcmpEchoIdentifier, error) validateToAndFrom() error validateObj(vObj *validation, set_default bool) setDefault() - // Start returns uint32, set in PatternFlowEthernetPauseTimeCounter. - Start() uint32 - // SetStart assigns uint32 provided by user to PatternFlowEthernetPauseTimeCounter - SetStart(value uint32) PatternFlowEthernetPauseTimeCounter - // HasStart checks if Start has been set in PatternFlowEthernetPauseTimeCounter - HasStart() bool - // Step returns uint32, set in PatternFlowEthernetPauseTimeCounter. - Step() uint32 - // SetStep assigns uint32 provided by user to PatternFlowEthernetPauseTimeCounter - SetStep(value uint32) PatternFlowEthernetPauseTimeCounter - // HasStep checks if Step has been set in PatternFlowEthernetPauseTimeCounter - HasStep() bool - // Count returns uint32, set in PatternFlowEthernetPauseTimeCounter. - Count() uint32 - // SetCount assigns uint32 provided by user to PatternFlowEthernetPauseTimeCounter - SetCount(value uint32) PatternFlowEthernetPauseTimeCounter - // HasCount checks if Count has been set in PatternFlowEthernetPauseTimeCounter - HasCount() bool + // Choice returns PatternFlowIcmpEchoIdentifierChoiceEnum, set in PatternFlowIcmpEchoIdentifier + Choice() PatternFlowIcmpEchoIdentifierChoiceEnum + // SetChoice assigns PatternFlowIcmpEchoIdentifierChoiceEnum provided by user to PatternFlowIcmpEchoIdentifier + SetChoice(value PatternFlowIcmpEchoIdentifierChoiceEnum) PatternFlowIcmpEchoIdentifier + // HasChoice checks if Choice has been set in PatternFlowIcmpEchoIdentifier + HasChoice() bool + // Value returns uint32, set in PatternFlowIcmpEchoIdentifier. + Value() uint32 + // SetValue assigns uint32 provided by user to PatternFlowIcmpEchoIdentifier + SetValue(value uint32) PatternFlowIcmpEchoIdentifier + // HasValue checks if Value has been set in PatternFlowIcmpEchoIdentifier + HasValue() bool + // Values returns []uint32, set in PatternFlowIcmpEchoIdentifier. + Values() []uint32 + // SetValues assigns []uint32 provided by user to PatternFlowIcmpEchoIdentifier + SetValues(value []uint32) PatternFlowIcmpEchoIdentifier + // Increment returns PatternFlowIcmpEchoIdentifierCounter, set in PatternFlowIcmpEchoIdentifier. + // PatternFlowIcmpEchoIdentifierCounter is integer counter pattern + Increment() PatternFlowIcmpEchoIdentifierCounter + // SetIncrement assigns PatternFlowIcmpEchoIdentifierCounter provided by user to PatternFlowIcmpEchoIdentifier. + // PatternFlowIcmpEchoIdentifierCounter is integer counter pattern + SetIncrement(value PatternFlowIcmpEchoIdentifierCounter) PatternFlowIcmpEchoIdentifier + // HasIncrement checks if Increment has been set in PatternFlowIcmpEchoIdentifier + HasIncrement() bool + // Decrement returns PatternFlowIcmpEchoIdentifierCounter, set in PatternFlowIcmpEchoIdentifier. + // PatternFlowIcmpEchoIdentifierCounter is integer counter pattern + Decrement() PatternFlowIcmpEchoIdentifierCounter + // SetDecrement assigns PatternFlowIcmpEchoIdentifierCounter provided by user to PatternFlowIcmpEchoIdentifier. + // PatternFlowIcmpEchoIdentifierCounter is integer counter pattern + SetDecrement(value PatternFlowIcmpEchoIdentifierCounter) PatternFlowIcmpEchoIdentifier + // HasDecrement checks if Decrement has been set in PatternFlowIcmpEchoIdentifier + HasDecrement() bool + // MetricTags returns PatternFlowIcmpEchoIdentifierPatternFlowIcmpEchoIdentifierMetricTagIterIter, set in PatternFlowIcmpEchoIdentifier + MetricTags() PatternFlowIcmpEchoIdentifierPatternFlowIcmpEchoIdentifierMetricTagIter + setNil() +} + +type PatternFlowIcmpEchoIdentifierChoiceEnum string + +// Enum of Choice on PatternFlowIcmpEchoIdentifier +var PatternFlowIcmpEchoIdentifierChoice = struct { + VALUE PatternFlowIcmpEchoIdentifierChoiceEnum + VALUES PatternFlowIcmpEchoIdentifierChoiceEnum + INCREMENT PatternFlowIcmpEchoIdentifierChoiceEnum + DECREMENT PatternFlowIcmpEchoIdentifierChoiceEnum +}{ + VALUE: PatternFlowIcmpEchoIdentifierChoiceEnum("value"), + VALUES: PatternFlowIcmpEchoIdentifierChoiceEnum("values"), + INCREMENT: PatternFlowIcmpEchoIdentifierChoiceEnum("increment"), + DECREMENT: PatternFlowIcmpEchoIdentifierChoiceEnum("decrement"), +} + +func (obj *patternFlowIcmpEchoIdentifier) Choice() PatternFlowIcmpEchoIdentifierChoiceEnum { + return PatternFlowIcmpEchoIdentifierChoiceEnum(obj.obj.Choice.Enum().String()) } // description is TBD -// Start returns a uint32 -func (obj *patternFlowEthernetPauseTimeCounter) Start() uint32 { +// Choice returns a string +func (obj *patternFlowIcmpEchoIdentifier) HasChoice() bool { + return obj.obj.Choice != nil +} - return *obj.obj.Start +func (obj *patternFlowIcmpEchoIdentifier) SetChoice(value PatternFlowIcmpEchoIdentifierChoiceEnum) PatternFlowIcmpEchoIdentifier { + intValue, ok := otg.PatternFlowIcmpEchoIdentifier_Choice_Enum_value[string(value)] + if !ok { + obj.validationErrors = append(obj.validationErrors, fmt.Sprintf( + "%s is not a valid choice on PatternFlowIcmpEchoIdentifierChoiceEnum", string(value))) + return obj + } + enumValue := otg.PatternFlowIcmpEchoIdentifier_Choice_Enum(intValue) + obj.obj.Choice = &enumValue + obj.obj.Decrement = nil + obj.decrementHolder = nil + obj.obj.Increment = nil + obj.incrementHolder = nil + obj.obj.Values = nil + obj.obj.Value = nil + + if value == PatternFlowIcmpEchoIdentifierChoice.VALUE { + defaultValue := uint32(0) + obj.obj.Value = &defaultValue + } + + if value == PatternFlowIcmpEchoIdentifierChoice.VALUES { + defaultValue := []uint32{0} + obj.obj.Values = defaultValue + } + if value == PatternFlowIcmpEchoIdentifierChoice.INCREMENT { + obj.obj.Increment = NewPatternFlowIcmpEchoIdentifierCounter().Msg() + } + + if value == PatternFlowIcmpEchoIdentifierChoice.DECREMENT { + obj.obj.Decrement = NewPatternFlowIcmpEchoIdentifierCounter().Msg() + } + + return obj } // description is TBD -// Start returns a uint32 -func (obj *patternFlowEthernetPauseTimeCounter) HasStart() bool { - return obj.obj.Start != nil +// Value returns a uint32 +func (obj *patternFlowIcmpEchoIdentifier) Value() uint32 { + + if obj.obj.Value == nil { + obj.SetChoice(PatternFlowIcmpEchoIdentifierChoice.VALUE) + } + + return *obj.obj.Value + } // description is TBD -// SetStart sets the uint32 value in the PatternFlowEthernetPauseTimeCounter object -func (obj *patternFlowEthernetPauseTimeCounter) SetStart(value uint32) PatternFlowEthernetPauseTimeCounter { +// Value returns a uint32 +func (obj *patternFlowIcmpEchoIdentifier) HasValue() bool { + return obj.obj.Value != nil +} - obj.obj.Start = &value +// description is TBD +// SetValue sets the uint32 value in the PatternFlowIcmpEchoIdentifier object +func (obj *patternFlowIcmpEchoIdentifier) SetValue(value uint32) PatternFlowIcmpEchoIdentifier { + obj.SetChoice(PatternFlowIcmpEchoIdentifierChoice.VALUE) + obj.obj.Value = &value return obj } // description is TBD -// Step returns a uint32 -func (obj *patternFlowEthernetPauseTimeCounter) Step() uint32 { +// Values returns a []uint32 +func (obj *patternFlowIcmpEchoIdentifier) Values() []uint32 { + if obj.obj.Values == nil { + obj.SetValues([]uint32{0}) + } + return obj.obj.Values +} - return *obj.obj.Step +// description is TBD +// SetValues sets the []uint32 value in the PatternFlowIcmpEchoIdentifier object +func (obj *patternFlowIcmpEchoIdentifier) SetValues(value []uint32) PatternFlowIcmpEchoIdentifier { + obj.SetChoice(PatternFlowIcmpEchoIdentifierChoice.VALUES) + if obj.obj.Values == nil { + obj.obj.Values = make([]uint32, 0) + } + obj.obj.Values = value + return obj } // description is TBD -// Step returns a uint32 -func (obj *patternFlowEthernetPauseTimeCounter) HasStep() bool { - return obj.obj.Step != nil +// Increment returns a PatternFlowIcmpEchoIdentifierCounter +func (obj *patternFlowIcmpEchoIdentifier) Increment() PatternFlowIcmpEchoIdentifierCounter { + if obj.obj.Increment == nil { + obj.SetChoice(PatternFlowIcmpEchoIdentifierChoice.INCREMENT) + } + if obj.incrementHolder == nil { + obj.incrementHolder = &patternFlowIcmpEchoIdentifierCounter{obj: obj.obj.Increment} + } + return obj.incrementHolder } // description is TBD -// SetStep sets the uint32 value in the PatternFlowEthernetPauseTimeCounter object -func (obj *patternFlowEthernetPauseTimeCounter) SetStep(value uint32) PatternFlowEthernetPauseTimeCounter { +// Increment returns a PatternFlowIcmpEchoIdentifierCounter +func (obj *patternFlowIcmpEchoIdentifier) HasIncrement() bool { + return obj.obj.Increment != nil +} + +// description is TBD +// SetIncrement sets the PatternFlowIcmpEchoIdentifierCounter value in the PatternFlowIcmpEchoIdentifier object +func (obj *patternFlowIcmpEchoIdentifier) SetIncrement(value PatternFlowIcmpEchoIdentifierCounter) PatternFlowIcmpEchoIdentifier { + obj.SetChoice(PatternFlowIcmpEchoIdentifierChoice.INCREMENT) + obj.incrementHolder = nil + obj.obj.Increment = value.Msg() - obj.obj.Step = &value return obj } // description is TBD -// Count returns a uint32 -func (obj *patternFlowEthernetPauseTimeCounter) Count() uint32 { +// Decrement returns a PatternFlowIcmpEchoIdentifierCounter +func (obj *patternFlowIcmpEchoIdentifier) Decrement() PatternFlowIcmpEchoIdentifierCounter { + if obj.obj.Decrement == nil { + obj.SetChoice(PatternFlowIcmpEchoIdentifierChoice.DECREMENT) + } + if obj.decrementHolder == nil { + obj.decrementHolder = &patternFlowIcmpEchoIdentifierCounter{obj: obj.obj.Decrement} + } + return obj.decrementHolder +} - return *obj.obj.Count +// description is TBD +// Decrement returns a PatternFlowIcmpEchoIdentifierCounter +func (obj *patternFlowIcmpEchoIdentifier) HasDecrement() bool { + return obj.obj.Decrement != nil +} + +// description is TBD +// SetDecrement sets the PatternFlowIcmpEchoIdentifierCounter value in the PatternFlowIcmpEchoIdentifier object +func (obj *patternFlowIcmpEchoIdentifier) SetDecrement(value PatternFlowIcmpEchoIdentifierCounter) PatternFlowIcmpEchoIdentifier { + obj.SetChoice(PatternFlowIcmpEchoIdentifierChoice.DECREMENT) + obj.decrementHolder = nil + obj.obj.Decrement = value.Msg() + + return obj +} + +// One or more metric tags can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. +// MetricTags returns a []PatternFlowIcmpEchoIdentifierMetricTag +func (obj *patternFlowIcmpEchoIdentifier) MetricTags() PatternFlowIcmpEchoIdentifierPatternFlowIcmpEchoIdentifierMetricTagIter { + if len(obj.obj.MetricTags) == 0 { + obj.obj.MetricTags = []*otg.PatternFlowIcmpEchoIdentifierMetricTag{} + } + if obj.metricTagsHolder == nil { + obj.metricTagsHolder = newPatternFlowIcmpEchoIdentifierPatternFlowIcmpEchoIdentifierMetricTagIter(&obj.obj.MetricTags).setMsg(obj) + } + return obj.metricTagsHolder +} + +type patternFlowIcmpEchoIdentifierPatternFlowIcmpEchoIdentifierMetricTagIter struct { + obj *patternFlowIcmpEchoIdentifier + patternFlowIcmpEchoIdentifierMetricTagSlice []PatternFlowIcmpEchoIdentifierMetricTag + fieldPtr *[]*otg.PatternFlowIcmpEchoIdentifierMetricTag +} + +func newPatternFlowIcmpEchoIdentifierPatternFlowIcmpEchoIdentifierMetricTagIter(ptr *[]*otg.PatternFlowIcmpEchoIdentifierMetricTag) PatternFlowIcmpEchoIdentifierPatternFlowIcmpEchoIdentifierMetricTagIter { + return &patternFlowIcmpEchoIdentifierPatternFlowIcmpEchoIdentifierMetricTagIter{fieldPtr: ptr} +} + +type PatternFlowIcmpEchoIdentifierPatternFlowIcmpEchoIdentifierMetricTagIter interface { + setMsg(*patternFlowIcmpEchoIdentifier) PatternFlowIcmpEchoIdentifierPatternFlowIcmpEchoIdentifierMetricTagIter + Items() []PatternFlowIcmpEchoIdentifierMetricTag + Add() PatternFlowIcmpEchoIdentifierMetricTag + Append(items ...PatternFlowIcmpEchoIdentifierMetricTag) PatternFlowIcmpEchoIdentifierPatternFlowIcmpEchoIdentifierMetricTagIter + Set(index int, newObj PatternFlowIcmpEchoIdentifierMetricTag) PatternFlowIcmpEchoIdentifierPatternFlowIcmpEchoIdentifierMetricTagIter + Clear() PatternFlowIcmpEchoIdentifierPatternFlowIcmpEchoIdentifierMetricTagIter + clearHolderSlice() PatternFlowIcmpEchoIdentifierPatternFlowIcmpEchoIdentifierMetricTagIter + appendHolderSlice(item PatternFlowIcmpEchoIdentifierMetricTag) PatternFlowIcmpEchoIdentifierPatternFlowIcmpEchoIdentifierMetricTagIter +} + +func (obj *patternFlowIcmpEchoIdentifierPatternFlowIcmpEchoIdentifierMetricTagIter) setMsg(msg *patternFlowIcmpEchoIdentifier) PatternFlowIcmpEchoIdentifierPatternFlowIcmpEchoIdentifierMetricTagIter { + obj.clearHolderSlice() + for _, val := range *obj.fieldPtr { + obj.appendHolderSlice(&patternFlowIcmpEchoIdentifierMetricTag{obj: val}) + } + obj.obj = msg + return obj +} + +func (obj *patternFlowIcmpEchoIdentifierPatternFlowIcmpEchoIdentifierMetricTagIter) Items() []PatternFlowIcmpEchoIdentifierMetricTag { + return obj.patternFlowIcmpEchoIdentifierMetricTagSlice +} + +func (obj *patternFlowIcmpEchoIdentifierPatternFlowIcmpEchoIdentifierMetricTagIter) Add() PatternFlowIcmpEchoIdentifierMetricTag { + newObj := &otg.PatternFlowIcmpEchoIdentifierMetricTag{} + *obj.fieldPtr = append(*obj.fieldPtr, newObj) + newLibObj := &patternFlowIcmpEchoIdentifierMetricTag{obj: newObj} + newLibObj.setDefault() + obj.patternFlowIcmpEchoIdentifierMetricTagSlice = append(obj.patternFlowIcmpEchoIdentifierMetricTagSlice, newLibObj) + return newLibObj +} + +func (obj *patternFlowIcmpEchoIdentifierPatternFlowIcmpEchoIdentifierMetricTagIter) Append(items ...PatternFlowIcmpEchoIdentifierMetricTag) PatternFlowIcmpEchoIdentifierPatternFlowIcmpEchoIdentifierMetricTagIter { + for _, item := range items { + newObj := item.Msg() + *obj.fieldPtr = append(*obj.fieldPtr, newObj) + obj.patternFlowIcmpEchoIdentifierMetricTagSlice = append(obj.patternFlowIcmpEchoIdentifierMetricTagSlice, item) + } + return obj +} +func (obj *patternFlowIcmpEchoIdentifierPatternFlowIcmpEchoIdentifierMetricTagIter) Set(index int, newObj PatternFlowIcmpEchoIdentifierMetricTag) PatternFlowIcmpEchoIdentifierPatternFlowIcmpEchoIdentifierMetricTagIter { + (*obj.fieldPtr)[index] = newObj.Msg() + obj.patternFlowIcmpEchoIdentifierMetricTagSlice[index] = newObj + return obj +} +func (obj *patternFlowIcmpEchoIdentifierPatternFlowIcmpEchoIdentifierMetricTagIter) Clear() PatternFlowIcmpEchoIdentifierPatternFlowIcmpEchoIdentifierMetricTagIter { + if len(*obj.fieldPtr) > 0 { + *obj.fieldPtr = []*otg.PatternFlowIcmpEchoIdentifierMetricTag{} + obj.patternFlowIcmpEchoIdentifierMetricTagSlice = []PatternFlowIcmpEchoIdentifierMetricTag{} + } + return obj } - -// description is TBD -// Count returns a uint32 -func (obj *patternFlowEthernetPauseTimeCounter) HasCount() bool { - return obj.obj.Count != nil +func (obj *patternFlowIcmpEchoIdentifierPatternFlowIcmpEchoIdentifierMetricTagIter) clearHolderSlice() PatternFlowIcmpEchoIdentifierPatternFlowIcmpEchoIdentifierMetricTagIter { + if len(obj.patternFlowIcmpEchoIdentifierMetricTagSlice) > 0 { + obj.patternFlowIcmpEchoIdentifierMetricTagSlice = []PatternFlowIcmpEchoIdentifierMetricTag{} + } + return obj } - -// description is TBD -// SetCount sets the uint32 value in the PatternFlowEthernetPauseTimeCounter object -func (obj *patternFlowEthernetPauseTimeCounter) SetCount(value uint32) PatternFlowEthernetPauseTimeCounter { - - obj.obj.Count = &value +func (obj *patternFlowIcmpEchoIdentifierPatternFlowIcmpEchoIdentifierMetricTagIter) appendHolderSlice(item PatternFlowIcmpEchoIdentifierMetricTag) PatternFlowIcmpEchoIdentifierPatternFlowIcmpEchoIdentifierMetricTagIter { + obj.patternFlowIcmpEchoIdentifierMetricTagSlice = append(obj.patternFlowIcmpEchoIdentifierMetricTagSlice, item) return obj } -func (obj *patternFlowEthernetPauseTimeCounter) validateObj(vObj *validation, set_default bool) { +func (obj *patternFlowIcmpEchoIdentifier) validateObj(vObj *validation, set_default bool) { if set_default { obj.setDefault() } - if obj.obj.Start != nil { + if obj.obj.Value != nil { - if *obj.obj.Start > 65535 { + if *obj.obj.Value > 65535 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowEthernetPauseTimeCounter.Start <= 65535 but Got %d", *obj.obj.Start)) + fmt.Sprintf("0 <= PatternFlowIcmpEchoIdentifier.Value <= 65535 but Got %d", *obj.obj.Value)) } } - if obj.obj.Step != nil { + if obj.obj.Values != nil { + + for _, item := range obj.obj.Values { + if item > 65535 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("min(uint32) <= PatternFlowIcmpEchoIdentifier.Values <= 65535 but Got %d", item)) + } - if *obj.obj.Step > 65535 { - vObj.validationErrors = append( - vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowEthernetPauseTimeCounter.Step <= 65535 but Got %d", *obj.obj.Step)) } } - if obj.obj.Count != nil { + if obj.obj.Increment != nil { - if *obj.obj.Count > 65535 { - vObj.validationErrors = append( - vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowEthernetPauseTimeCounter.Count <= 65535 but Got %d", *obj.obj.Count)) + obj.Increment().validateObj(vObj, set_default) + } + + if obj.obj.Decrement != nil { + + obj.Decrement().validateObj(vObj, set_default) + } + + if len(obj.obj.MetricTags) != 0 { + + if set_default { + obj.MetricTags().clearHolderSlice() + for _, item := range obj.obj.MetricTags { + obj.MetricTags().appendHolderSlice(&patternFlowIcmpEchoIdentifierMetricTag{obj: item}) + } + } + for _, item := range obj.MetricTags().Items() { + item.validateObj(vObj, set_default) } } } -func (obj *patternFlowEthernetPauseTimeCounter) setDefault() { - if obj.obj.Start == nil { - obj.SetStart(0) - } - if obj.obj.Step == nil { - obj.SetStep(1) - } - if obj.obj.Count == nil { - obj.SetCount(1) +func (obj *patternFlowIcmpEchoIdentifier) setDefault() { + if obj.obj.Choice == nil { + obj.SetChoice(PatternFlowIcmpEchoIdentifierChoice.VALUE) + } } -// ***** PatternFlowEthernetPauseTimeMetricTag ***** -type patternFlowEthernetPauseTimeMetricTag struct { +// ***** PatternFlowIcmpEchoSequenceNumber ***** +type patternFlowIcmpEchoSequenceNumber struct { validation - obj *otg.PatternFlowEthernetPauseTimeMetricTag + obj *otg.PatternFlowIcmpEchoSequenceNumber + incrementHolder PatternFlowIcmpEchoSequenceNumberCounter + decrementHolder PatternFlowIcmpEchoSequenceNumberCounter + metricTagsHolder PatternFlowIcmpEchoSequenceNumberPatternFlowIcmpEchoSequenceNumberMetricTagIter } -func NewPatternFlowEthernetPauseTimeMetricTag() PatternFlowEthernetPauseTimeMetricTag { - obj := patternFlowEthernetPauseTimeMetricTag{obj: &otg.PatternFlowEthernetPauseTimeMetricTag{}} +func NewPatternFlowIcmpEchoSequenceNumber() PatternFlowIcmpEchoSequenceNumber { + obj := patternFlowIcmpEchoSequenceNumber{obj: &otg.PatternFlowIcmpEchoSequenceNumber{}} obj.setDefault() return &obj } -func (obj *patternFlowEthernetPauseTimeMetricTag) Msg() *otg.PatternFlowEthernetPauseTimeMetricTag { +func (obj *patternFlowIcmpEchoSequenceNumber) Msg() *otg.PatternFlowIcmpEchoSequenceNumber { return obj.obj } -func (obj *patternFlowEthernetPauseTimeMetricTag) SetMsg(msg *otg.PatternFlowEthernetPauseTimeMetricTag) PatternFlowEthernetPauseTimeMetricTag { - +func (obj *patternFlowIcmpEchoSequenceNumber) SetMsg(msg *otg.PatternFlowIcmpEchoSequenceNumber) PatternFlowIcmpEchoSequenceNumber { + obj.setNil() proto.Merge(obj.obj, msg) return obj } -func (obj *patternFlowEthernetPauseTimeMetricTag) ToProto() (*otg.PatternFlowEthernetPauseTimeMetricTag, error) { +func (obj *patternFlowIcmpEchoSequenceNumber) ToProto() (*otg.PatternFlowIcmpEchoSequenceNumber, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -220307,7 +264162,7 @@ func (obj *patternFlowEthernetPauseTimeMetricTag) ToProto() (*otg.PatternFlowEth return obj.Msg(), nil } -func (obj *patternFlowEthernetPauseTimeMetricTag) FromProto(msg *otg.PatternFlowEthernetPauseTimeMetricTag) (PatternFlowEthernetPauseTimeMetricTag, error) { +func (obj *patternFlowIcmpEchoSequenceNumber) FromProto(msg *otg.PatternFlowIcmpEchoSequenceNumber) (PatternFlowIcmpEchoSequenceNumber, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -220316,7 +264171,7 @@ func (obj *patternFlowEthernetPauseTimeMetricTag) FromProto(msg *otg.PatternFlow return newObj, nil } -func (obj *patternFlowEthernetPauseTimeMetricTag) ToPbText() (string, error) { +func (obj *patternFlowIcmpEchoSequenceNumber) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -220328,12 +264183,12 @@ func (obj *patternFlowEthernetPauseTimeMetricTag) ToPbText() (string, error) { return string(protoMarshal), nil } -func (obj *patternFlowEthernetPauseTimeMetricTag) FromPbText(value string) error { +func (obj *patternFlowIcmpEchoSequenceNumber) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj } - + obj.setNil() vErr := obj.validateToAndFrom() if vErr != nil { return vErr @@ -220341,7 +264196,7 @@ func (obj *patternFlowEthernetPauseTimeMetricTag) FromPbText(value string) error return retObj } -func (obj *patternFlowEthernetPauseTimeMetricTag) ToYaml() (string, error) { +func (obj *patternFlowIcmpEchoSequenceNumber) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -220362,7 +264217,7 @@ func (obj *patternFlowEthernetPauseTimeMetricTag) ToYaml() (string, error) { return string(data), nil } -func (obj *patternFlowEthernetPauseTimeMetricTag) FromYaml(value string) error { +func (obj *patternFlowIcmpEchoSequenceNumber) FromYaml(value string) error { if value == "" { value = "{}" } @@ -220379,7 +264234,7 @@ func (obj *patternFlowEthernetPauseTimeMetricTag) FromYaml(value string) error { return fmt.Errorf("unmarshal error %s", strings.Replace( uError.Error(), "\u00a0", " ", -1)[7:]) } - + obj.setNil() vErr := obj.validateToAndFrom() if vErr != nil { return vErr @@ -220387,7 +264242,7 @@ func (obj *patternFlowEthernetPauseTimeMetricTag) FromYaml(value string) error { return nil } -func (obj *patternFlowEthernetPauseTimeMetricTag) ToJson() (string, error) { +func (obj *patternFlowIcmpEchoSequenceNumber) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -220405,7 +264260,7 @@ func (obj *patternFlowEthernetPauseTimeMetricTag) ToJson() (string, error) { return string(data), nil } -func (obj *patternFlowEthernetPauseTimeMetricTag) FromJson(value string) error { +func (obj *patternFlowIcmpEchoSequenceNumber) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -220418,7 +264273,7 @@ func (obj *patternFlowEthernetPauseTimeMetricTag) FromJson(value string) error { return fmt.Errorf("unmarshal error %s", strings.Replace( uError.Error(), "\u00a0", " ", -1)[7:]) } - + obj.setNil() err := obj.validateToAndFrom() if err != nil { return err @@ -220426,19 +264281,19 @@ func (obj *patternFlowEthernetPauseTimeMetricTag) FromJson(value string) error { return nil } -func (obj *patternFlowEthernetPauseTimeMetricTag) validateToAndFrom() error { +func (obj *patternFlowIcmpEchoSequenceNumber) validateToAndFrom() error { // emptyVars() obj.validateObj(&obj.validation, true) return obj.validationResult() } -func (obj *patternFlowEthernetPauseTimeMetricTag) Validate() error { +func (obj *patternFlowIcmpEchoSequenceNumber) Validate() error { // emptyVars() obj.validateObj(&obj.validation, false) return obj.validationResult() } -func (obj *patternFlowEthernetPauseTimeMetricTag) String() string { +func (obj *patternFlowIcmpEchoSequenceNumber) String() string { str, err := obj.ToYaml() if err != nil { return err.Error() @@ -220446,12 +264301,12 @@ func (obj *patternFlowEthernetPauseTimeMetricTag) String() string { return str } -func (obj *patternFlowEthernetPauseTimeMetricTag) Clone() (PatternFlowEthernetPauseTimeMetricTag, error) { +func (obj *patternFlowIcmpEchoSequenceNumber) Clone() (PatternFlowIcmpEchoSequenceNumber, error) { vErr := obj.Validate() if vErr != nil { return nil, vErr } - newObj := NewPatternFlowEthernetPauseTimeMetricTag() + newObj := NewPatternFlowIcmpEchoSequenceNumber() data, err := proto.Marshal(obj.Msg()) if err != nil { return nil, err @@ -220463,539 +264318,426 @@ func (obj *patternFlowEthernetPauseTimeMetricTag) Clone() (PatternFlowEthernetPa return newObj, nil } -// PatternFlowEthernetPauseTimeMetricTag is metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. -type PatternFlowEthernetPauseTimeMetricTag interface { +func (obj *patternFlowIcmpEchoSequenceNumber) setNil() { + obj.incrementHolder = nil + obj.decrementHolder = nil + obj.metricTagsHolder = nil + obj.validationErrors = nil + obj.warnings = nil + obj.constraints = make(map[string]map[string]Constraints) +} + +// PatternFlowIcmpEchoSequenceNumber is iCMP sequence number +type PatternFlowIcmpEchoSequenceNumber interface { Validation - // Msg marshals PatternFlowEthernetPauseTimeMetricTag to protobuf object *otg.PatternFlowEthernetPauseTimeMetricTag + // Msg marshals PatternFlowIcmpEchoSequenceNumber to protobuf object *otg.PatternFlowIcmpEchoSequenceNumber // and doesn't set defaults - Msg() *otg.PatternFlowEthernetPauseTimeMetricTag - // SetMsg unmarshals PatternFlowEthernetPauseTimeMetricTag from protobuf object *otg.PatternFlowEthernetPauseTimeMetricTag + Msg() *otg.PatternFlowIcmpEchoSequenceNumber + // SetMsg unmarshals PatternFlowIcmpEchoSequenceNumber from protobuf object *otg.PatternFlowIcmpEchoSequenceNumber // and doesn't set defaults - SetMsg(*otg.PatternFlowEthernetPauseTimeMetricTag) PatternFlowEthernetPauseTimeMetricTag - // ToProto marshals PatternFlowEthernetPauseTimeMetricTag to protobuf object *otg.PatternFlowEthernetPauseTimeMetricTag - ToProto() (*otg.PatternFlowEthernetPauseTimeMetricTag, error) - // ToPbText marshals PatternFlowEthernetPauseTimeMetricTag to protobuf text + SetMsg(*otg.PatternFlowIcmpEchoSequenceNumber) PatternFlowIcmpEchoSequenceNumber + // ToProto marshals PatternFlowIcmpEchoSequenceNumber to protobuf object *otg.PatternFlowIcmpEchoSequenceNumber + ToProto() (*otg.PatternFlowIcmpEchoSequenceNumber, error) + // ToPbText marshals PatternFlowIcmpEchoSequenceNumber to protobuf text ToPbText() (string, error) - // ToYaml marshals PatternFlowEthernetPauseTimeMetricTag to YAML text + // ToYaml marshals PatternFlowIcmpEchoSequenceNumber to YAML text ToYaml() (string, error) - // ToJson marshals PatternFlowEthernetPauseTimeMetricTag to JSON text + // ToJson marshals PatternFlowIcmpEchoSequenceNumber to JSON text ToJson() (string, error) - // FromProto unmarshals PatternFlowEthernetPauseTimeMetricTag from protobuf object *otg.PatternFlowEthernetPauseTimeMetricTag - FromProto(msg *otg.PatternFlowEthernetPauseTimeMetricTag) (PatternFlowEthernetPauseTimeMetricTag, error) - // FromPbText unmarshals PatternFlowEthernetPauseTimeMetricTag from protobuf text + // FromProto unmarshals PatternFlowIcmpEchoSequenceNumber from protobuf object *otg.PatternFlowIcmpEchoSequenceNumber + FromProto(msg *otg.PatternFlowIcmpEchoSequenceNumber) (PatternFlowIcmpEchoSequenceNumber, error) + // FromPbText unmarshals PatternFlowIcmpEchoSequenceNumber from protobuf text FromPbText(value string) error - // FromYaml unmarshals PatternFlowEthernetPauseTimeMetricTag from YAML text + // FromYaml unmarshals PatternFlowIcmpEchoSequenceNumber from YAML text FromYaml(value string) error - // FromJson unmarshals PatternFlowEthernetPauseTimeMetricTag from JSON text + // FromJson unmarshals PatternFlowIcmpEchoSequenceNumber from JSON text FromJson(value string) error - // Validate validates PatternFlowEthernetPauseTimeMetricTag + // Validate validates PatternFlowIcmpEchoSequenceNumber Validate() error // A stringer function String() string // Clones the object - Clone() (PatternFlowEthernetPauseTimeMetricTag, error) + Clone() (PatternFlowIcmpEchoSequenceNumber, error) validateToAndFrom() error validateObj(vObj *validation, set_default bool) setDefault() - // Name returns string, set in PatternFlowEthernetPauseTimeMetricTag. - Name() string - // SetName assigns string provided by user to PatternFlowEthernetPauseTimeMetricTag - SetName(value string) PatternFlowEthernetPauseTimeMetricTag - // Offset returns uint32, set in PatternFlowEthernetPauseTimeMetricTag. - Offset() uint32 - // SetOffset assigns uint32 provided by user to PatternFlowEthernetPauseTimeMetricTag - SetOffset(value uint32) PatternFlowEthernetPauseTimeMetricTag - // HasOffset checks if Offset has been set in PatternFlowEthernetPauseTimeMetricTag - HasOffset() bool - // Length returns uint32, set in PatternFlowEthernetPauseTimeMetricTag. - Length() uint32 - // SetLength assigns uint32 provided by user to PatternFlowEthernetPauseTimeMetricTag - SetLength(value uint32) PatternFlowEthernetPauseTimeMetricTag - // HasLength checks if Length has been set in PatternFlowEthernetPauseTimeMetricTag - HasLength() bool -} - -// Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field -// Name returns a string -func (obj *patternFlowEthernetPauseTimeMetricTag) Name() string { - - return *obj.obj.Name - -} - -// Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field -// SetName sets the string value in the PatternFlowEthernetPauseTimeMetricTag object -func (obj *patternFlowEthernetPauseTimeMetricTag) SetName(value string) PatternFlowEthernetPauseTimeMetricTag { - - obj.obj.Name = &value - return obj -} - -// Offset in bits relative to start of corresponding header field -// Offset returns a uint32 -func (obj *patternFlowEthernetPauseTimeMetricTag) Offset() uint32 { - - return *obj.obj.Offset - -} - -// Offset in bits relative to start of corresponding header field -// Offset returns a uint32 -func (obj *patternFlowEthernetPauseTimeMetricTag) HasOffset() bool { - return obj.obj.Offset != nil -} - -// Offset in bits relative to start of corresponding header field -// SetOffset sets the uint32 value in the PatternFlowEthernetPauseTimeMetricTag object -func (obj *patternFlowEthernetPauseTimeMetricTag) SetOffset(value uint32) PatternFlowEthernetPauseTimeMetricTag { - - obj.obj.Offset = &value - return obj + // Choice returns PatternFlowIcmpEchoSequenceNumberChoiceEnum, set in PatternFlowIcmpEchoSequenceNumber + Choice() PatternFlowIcmpEchoSequenceNumberChoiceEnum + // SetChoice assigns PatternFlowIcmpEchoSequenceNumberChoiceEnum provided by user to PatternFlowIcmpEchoSequenceNumber + SetChoice(value PatternFlowIcmpEchoSequenceNumberChoiceEnum) PatternFlowIcmpEchoSequenceNumber + // HasChoice checks if Choice has been set in PatternFlowIcmpEchoSequenceNumber + HasChoice() bool + // Value returns uint32, set in PatternFlowIcmpEchoSequenceNumber. + Value() uint32 + // SetValue assigns uint32 provided by user to PatternFlowIcmpEchoSequenceNumber + SetValue(value uint32) PatternFlowIcmpEchoSequenceNumber + // HasValue checks if Value has been set in PatternFlowIcmpEchoSequenceNumber + HasValue() bool + // Values returns []uint32, set in PatternFlowIcmpEchoSequenceNumber. + Values() []uint32 + // SetValues assigns []uint32 provided by user to PatternFlowIcmpEchoSequenceNumber + SetValues(value []uint32) PatternFlowIcmpEchoSequenceNumber + // Increment returns PatternFlowIcmpEchoSequenceNumberCounter, set in PatternFlowIcmpEchoSequenceNumber. + // PatternFlowIcmpEchoSequenceNumberCounter is integer counter pattern + Increment() PatternFlowIcmpEchoSequenceNumberCounter + // SetIncrement assigns PatternFlowIcmpEchoSequenceNumberCounter provided by user to PatternFlowIcmpEchoSequenceNumber. + // PatternFlowIcmpEchoSequenceNumberCounter is integer counter pattern + SetIncrement(value PatternFlowIcmpEchoSequenceNumberCounter) PatternFlowIcmpEchoSequenceNumber + // HasIncrement checks if Increment has been set in PatternFlowIcmpEchoSequenceNumber + HasIncrement() bool + // Decrement returns PatternFlowIcmpEchoSequenceNumberCounter, set in PatternFlowIcmpEchoSequenceNumber. + // PatternFlowIcmpEchoSequenceNumberCounter is integer counter pattern + Decrement() PatternFlowIcmpEchoSequenceNumberCounter + // SetDecrement assigns PatternFlowIcmpEchoSequenceNumberCounter provided by user to PatternFlowIcmpEchoSequenceNumber. + // PatternFlowIcmpEchoSequenceNumberCounter is integer counter pattern + SetDecrement(value PatternFlowIcmpEchoSequenceNumberCounter) PatternFlowIcmpEchoSequenceNumber + // HasDecrement checks if Decrement has been set in PatternFlowIcmpEchoSequenceNumber + HasDecrement() bool + // MetricTags returns PatternFlowIcmpEchoSequenceNumberPatternFlowIcmpEchoSequenceNumberMetricTagIterIter, set in PatternFlowIcmpEchoSequenceNumber + MetricTags() PatternFlowIcmpEchoSequenceNumberPatternFlowIcmpEchoSequenceNumberMetricTagIter + setNil() } -// Number of bits to track for metrics starting from configured offset of corresponding header field -// Length returns a uint32 -func (obj *patternFlowEthernetPauseTimeMetricTag) Length() uint32 { - - return *obj.obj.Length +type PatternFlowIcmpEchoSequenceNumberChoiceEnum string +// Enum of Choice on PatternFlowIcmpEchoSequenceNumber +var PatternFlowIcmpEchoSequenceNumberChoice = struct { + VALUE PatternFlowIcmpEchoSequenceNumberChoiceEnum + VALUES PatternFlowIcmpEchoSequenceNumberChoiceEnum + INCREMENT PatternFlowIcmpEchoSequenceNumberChoiceEnum + DECREMENT PatternFlowIcmpEchoSequenceNumberChoiceEnum +}{ + VALUE: PatternFlowIcmpEchoSequenceNumberChoiceEnum("value"), + VALUES: PatternFlowIcmpEchoSequenceNumberChoiceEnum("values"), + INCREMENT: PatternFlowIcmpEchoSequenceNumberChoiceEnum("increment"), + DECREMENT: PatternFlowIcmpEchoSequenceNumberChoiceEnum("decrement"), } -// Number of bits to track for metrics starting from configured offset of corresponding header field -// Length returns a uint32 -func (obj *patternFlowEthernetPauseTimeMetricTag) HasLength() bool { - return obj.obj.Length != nil +func (obj *patternFlowIcmpEchoSequenceNumber) Choice() PatternFlowIcmpEchoSequenceNumberChoiceEnum { + return PatternFlowIcmpEchoSequenceNumberChoiceEnum(obj.obj.Choice.Enum().String()) } -// Number of bits to track for metrics starting from configured offset of corresponding header field -// SetLength sets the uint32 value in the PatternFlowEthernetPauseTimeMetricTag object -func (obj *patternFlowEthernetPauseTimeMetricTag) SetLength(value uint32) PatternFlowEthernetPauseTimeMetricTag { - - obj.obj.Length = &value - return obj +// description is TBD +// Choice returns a string +func (obj *patternFlowIcmpEchoSequenceNumber) HasChoice() bool { + return obj.obj.Choice != nil } -func (obj *patternFlowEthernetPauseTimeMetricTag) validateObj(vObj *validation, set_default bool) { - if set_default { - obj.setDefault() +func (obj *patternFlowIcmpEchoSequenceNumber) SetChoice(value PatternFlowIcmpEchoSequenceNumberChoiceEnum) PatternFlowIcmpEchoSequenceNumber { + intValue, ok := otg.PatternFlowIcmpEchoSequenceNumber_Choice_Enum_value[string(value)] + if !ok { + obj.validationErrors = append(obj.validationErrors, fmt.Sprintf( + "%s is not a valid choice on PatternFlowIcmpEchoSequenceNumberChoiceEnum", string(value))) + return obj } + enumValue := otg.PatternFlowIcmpEchoSequenceNumber_Choice_Enum(intValue) + obj.obj.Choice = &enumValue + obj.obj.Decrement = nil + obj.decrementHolder = nil + obj.obj.Increment = nil + obj.incrementHolder = nil + obj.obj.Values = nil + obj.obj.Value = nil - // Name is required - if obj.obj.Name == nil { - vObj.validationErrors = append(vObj.validationErrors, "Name is required field on interface PatternFlowEthernetPauseTimeMetricTag") + if value == PatternFlowIcmpEchoSequenceNumberChoice.VALUE { + defaultValue := uint32(0) + obj.obj.Value = &defaultValue } - if obj.obj.Offset != nil { - - if *obj.obj.Offset > 15 { - vObj.validationErrors = append( - vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowEthernetPauseTimeMetricTag.Offset <= 15 but Got %d", *obj.obj.Offset)) - } - + if value == PatternFlowIcmpEchoSequenceNumberChoice.VALUES { + defaultValue := []uint32{0} + obj.obj.Values = defaultValue } - if obj.obj.Length != nil { - - if *obj.obj.Length < 1 || *obj.obj.Length > 16 { - vObj.validationErrors = append( - vObj.validationErrors, - fmt.Sprintf("1 <= PatternFlowEthernetPauseTimeMetricTag.Length <= 16 but Got %d", *obj.obj.Length)) - } + if value == PatternFlowIcmpEchoSequenceNumberChoice.INCREMENT { + obj.obj.Increment = NewPatternFlowIcmpEchoSequenceNumberCounter().Msg() + } + if value == PatternFlowIcmpEchoSequenceNumberChoice.DECREMENT { + obj.obj.Decrement = NewPatternFlowIcmpEchoSequenceNumberCounter().Msg() } + return obj } -func (obj *patternFlowEthernetPauseTimeMetricTag) setDefault() { - if obj.obj.Offset == nil { - obj.SetOffset(0) - } - if obj.obj.Length == nil { - obj.SetLength(16) - } +// description is TBD +// Value returns a uint32 +func (obj *patternFlowIcmpEchoSequenceNumber) Value() uint32 { -} + if obj.obj.Value == nil { + obj.SetChoice(PatternFlowIcmpEchoSequenceNumberChoice.VALUE) + } -// ***** PatternFlowTcpSrcPortCounter ***** -type patternFlowTcpSrcPortCounter struct { - validation - obj *otg.PatternFlowTcpSrcPortCounter -} + return *obj.obj.Value -func NewPatternFlowTcpSrcPortCounter() PatternFlowTcpSrcPortCounter { - obj := patternFlowTcpSrcPortCounter{obj: &otg.PatternFlowTcpSrcPortCounter{}} - obj.setDefault() - return &obj } -func (obj *patternFlowTcpSrcPortCounter) Msg() *otg.PatternFlowTcpSrcPortCounter { - return obj.obj +// description is TBD +// Value returns a uint32 +func (obj *patternFlowIcmpEchoSequenceNumber) HasValue() bool { + return obj.obj.Value != nil } -func (obj *patternFlowTcpSrcPortCounter) SetMsg(msg *otg.PatternFlowTcpSrcPortCounter) PatternFlowTcpSrcPortCounter { - - proto.Merge(obj.obj, msg) +// description is TBD +// SetValue sets the uint32 value in the PatternFlowIcmpEchoSequenceNumber object +func (obj *patternFlowIcmpEchoSequenceNumber) SetValue(value uint32) PatternFlowIcmpEchoSequenceNumber { + obj.SetChoice(PatternFlowIcmpEchoSequenceNumberChoice.VALUE) + obj.obj.Value = &value return obj } -func (obj *patternFlowTcpSrcPortCounter) ToProto() (*otg.PatternFlowTcpSrcPortCounter, error) { - err := obj.validateToAndFrom() - if err != nil { - return nil, err +// description is TBD +// Values returns a []uint32 +func (obj *patternFlowIcmpEchoSequenceNumber) Values() []uint32 { + if obj.obj.Values == nil { + obj.SetValues([]uint32{0}) } - return obj.Msg(), nil + return obj.obj.Values } -func (obj *patternFlowTcpSrcPortCounter) FromProto(msg *otg.PatternFlowTcpSrcPortCounter) (PatternFlowTcpSrcPortCounter, error) { - newObj := obj.SetMsg(msg) - err := newObj.validateToAndFrom() - if err != nil { - return nil, err +// description is TBD +// SetValues sets the []uint32 value in the PatternFlowIcmpEchoSequenceNumber object +func (obj *patternFlowIcmpEchoSequenceNumber) SetValues(value []uint32) PatternFlowIcmpEchoSequenceNumber { + obj.SetChoice(PatternFlowIcmpEchoSequenceNumberChoice.VALUES) + if obj.obj.Values == nil { + obj.obj.Values = make([]uint32, 0) } - return newObj, nil -} + obj.obj.Values = value -func (obj *patternFlowTcpSrcPortCounter) ToPbText() (string, error) { - vErr := obj.validateToAndFrom() - if vErr != nil { - return "", vErr - } - protoMarshal, err := proto.Marshal(obj.Msg()) - if err != nil { - return "", err - } - return string(protoMarshal), nil + return obj } -func (obj *patternFlowTcpSrcPortCounter) FromPbText(value string) error { - retObj := proto.Unmarshal([]byte(value), obj.Msg()) - if retObj != nil { - return retObj +// description is TBD +// Increment returns a PatternFlowIcmpEchoSequenceNumberCounter +func (obj *patternFlowIcmpEchoSequenceNumber) Increment() PatternFlowIcmpEchoSequenceNumberCounter { + if obj.obj.Increment == nil { + obj.SetChoice(PatternFlowIcmpEchoSequenceNumberChoice.INCREMENT) } - - vErr := obj.validateToAndFrom() - if vErr != nil { - return vErr + if obj.incrementHolder == nil { + obj.incrementHolder = &patternFlowIcmpEchoSequenceNumberCounter{obj: obj.obj.Increment} } - return retObj + return obj.incrementHolder } -func (obj *patternFlowTcpSrcPortCounter) ToYaml() (string, error) { - vErr := obj.validateToAndFrom() - if vErr != nil { - return "", vErr - } - opts := protojson.MarshalOptions{ - UseProtoNames: true, - AllowPartial: true, - EmitUnpopulated: false, - } - data, err := opts.Marshal(obj.Msg()) - if err != nil { - return "", err - } - data, err = yaml.JSONToYAML(data) - if err != nil { - return "", err - } - return string(data), nil +// description is TBD +// Increment returns a PatternFlowIcmpEchoSequenceNumberCounter +func (obj *patternFlowIcmpEchoSequenceNumber) HasIncrement() bool { + return obj.obj.Increment != nil } -func (obj *patternFlowTcpSrcPortCounter) FromYaml(value string) error { - if value == "" { - value = "{}" - } - data, err := yaml.YAMLToJSON([]byte(value)) - if err != nil { - return err - } - opts := protojson.UnmarshalOptions{ - AllowPartial: true, - DiscardUnknown: false, - } - uError := opts.Unmarshal([]byte(data), obj.Msg()) - if uError != nil { - return fmt.Errorf("unmarshal error %s", strings.Replace( - uError.Error(), "\u00a0", " ", -1)[7:]) - } - - vErr := obj.validateToAndFrom() - if vErr != nil { - return vErr - } - return nil -} +// description is TBD +// SetIncrement sets the PatternFlowIcmpEchoSequenceNumberCounter value in the PatternFlowIcmpEchoSequenceNumber object +func (obj *patternFlowIcmpEchoSequenceNumber) SetIncrement(value PatternFlowIcmpEchoSequenceNumberCounter) PatternFlowIcmpEchoSequenceNumber { + obj.SetChoice(PatternFlowIcmpEchoSequenceNumberChoice.INCREMENT) + obj.incrementHolder = nil + obj.obj.Increment = value.Msg() -func (obj *patternFlowTcpSrcPortCounter) ToJson() (string, error) { - vErr := obj.validateToAndFrom() - if vErr != nil { - return "", vErr - } - opts := protojson.MarshalOptions{ - UseProtoNames: true, - AllowPartial: true, - EmitUnpopulated: false, - Indent: " ", - } - data, err := opts.Marshal(obj.Msg()) - if err != nil { - return "", err - } - return string(data), nil + return obj } -func (obj *patternFlowTcpSrcPortCounter) FromJson(value string) error { - opts := protojson.UnmarshalOptions{ - AllowPartial: true, - DiscardUnknown: false, - } - if value == "" { - value = "{}" - } - uError := opts.Unmarshal([]byte(value), obj.Msg()) - if uError != nil { - return fmt.Errorf("unmarshal error %s", strings.Replace( - uError.Error(), "\u00a0", " ", -1)[7:]) +// description is TBD +// Decrement returns a PatternFlowIcmpEchoSequenceNumberCounter +func (obj *patternFlowIcmpEchoSequenceNumber) Decrement() PatternFlowIcmpEchoSequenceNumberCounter { + if obj.obj.Decrement == nil { + obj.SetChoice(PatternFlowIcmpEchoSequenceNumberChoice.DECREMENT) } - - err := obj.validateToAndFrom() - if err != nil { - return err + if obj.decrementHolder == nil { + obj.decrementHolder = &patternFlowIcmpEchoSequenceNumberCounter{obj: obj.obj.Decrement} } - return nil + return obj.decrementHolder } -func (obj *patternFlowTcpSrcPortCounter) validateToAndFrom() error { - // emptyVars() - obj.validateObj(&obj.validation, true) - return obj.validationResult() +// description is TBD +// Decrement returns a PatternFlowIcmpEchoSequenceNumberCounter +func (obj *patternFlowIcmpEchoSequenceNumber) HasDecrement() bool { + return obj.obj.Decrement != nil } -func (obj *patternFlowTcpSrcPortCounter) Validate() error { - // emptyVars() - obj.validateObj(&obj.validation, false) - return obj.validationResult() -} +// description is TBD +// SetDecrement sets the PatternFlowIcmpEchoSequenceNumberCounter value in the PatternFlowIcmpEchoSequenceNumber object +func (obj *patternFlowIcmpEchoSequenceNumber) SetDecrement(value PatternFlowIcmpEchoSequenceNumberCounter) PatternFlowIcmpEchoSequenceNumber { + obj.SetChoice(PatternFlowIcmpEchoSequenceNumberChoice.DECREMENT) + obj.decrementHolder = nil + obj.obj.Decrement = value.Msg() -func (obj *patternFlowTcpSrcPortCounter) String() string { - str, err := obj.ToYaml() - if err != nil { - return err.Error() - } - return str + return obj } -func (obj *patternFlowTcpSrcPortCounter) Clone() (PatternFlowTcpSrcPortCounter, error) { - vErr := obj.Validate() - if vErr != nil { - return nil, vErr - } - newObj := NewPatternFlowTcpSrcPortCounter() - data, err := proto.Marshal(obj.Msg()) - if err != nil { - return nil, err +// One or more metric tags can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. +// MetricTags returns a []PatternFlowIcmpEchoSequenceNumberMetricTag +func (obj *patternFlowIcmpEchoSequenceNumber) MetricTags() PatternFlowIcmpEchoSequenceNumberPatternFlowIcmpEchoSequenceNumberMetricTagIter { + if len(obj.obj.MetricTags) == 0 { + obj.obj.MetricTags = []*otg.PatternFlowIcmpEchoSequenceNumberMetricTag{} } - pbErr := proto.Unmarshal(data, newObj.Msg()) - if pbErr != nil { - return nil, pbErr + if obj.metricTagsHolder == nil { + obj.metricTagsHolder = newPatternFlowIcmpEchoSequenceNumberPatternFlowIcmpEchoSequenceNumberMetricTagIter(&obj.obj.MetricTags).setMsg(obj) } - return newObj, nil + return obj.metricTagsHolder } -// PatternFlowTcpSrcPortCounter is integer counter pattern -type PatternFlowTcpSrcPortCounter interface { - Validation - // Msg marshals PatternFlowTcpSrcPortCounter to protobuf object *otg.PatternFlowTcpSrcPortCounter - // and doesn't set defaults - Msg() *otg.PatternFlowTcpSrcPortCounter - // SetMsg unmarshals PatternFlowTcpSrcPortCounter from protobuf object *otg.PatternFlowTcpSrcPortCounter - // and doesn't set defaults - SetMsg(*otg.PatternFlowTcpSrcPortCounter) PatternFlowTcpSrcPortCounter - // ToProto marshals PatternFlowTcpSrcPortCounter to protobuf object *otg.PatternFlowTcpSrcPortCounter - ToProto() (*otg.PatternFlowTcpSrcPortCounter, error) - // ToPbText marshals PatternFlowTcpSrcPortCounter to protobuf text - ToPbText() (string, error) - // ToYaml marshals PatternFlowTcpSrcPortCounter to YAML text - ToYaml() (string, error) - // ToJson marshals PatternFlowTcpSrcPortCounter to JSON text - ToJson() (string, error) - // FromProto unmarshals PatternFlowTcpSrcPortCounter from protobuf object *otg.PatternFlowTcpSrcPortCounter - FromProto(msg *otg.PatternFlowTcpSrcPortCounter) (PatternFlowTcpSrcPortCounter, error) - // FromPbText unmarshals PatternFlowTcpSrcPortCounter from protobuf text - FromPbText(value string) error - // FromYaml unmarshals PatternFlowTcpSrcPortCounter from YAML text - FromYaml(value string) error - // FromJson unmarshals PatternFlowTcpSrcPortCounter from JSON text - FromJson(value string) error - // Validate validates PatternFlowTcpSrcPortCounter - Validate() error - // A stringer function - String() string - // Clones the object - Clone() (PatternFlowTcpSrcPortCounter, error) - validateToAndFrom() error - validateObj(vObj *validation, set_default bool) - setDefault() - // Start returns uint32, set in PatternFlowTcpSrcPortCounter. - Start() uint32 - // SetStart assigns uint32 provided by user to PatternFlowTcpSrcPortCounter - SetStart(value uint32) PatternFlowTcpSrcPortCounter - // HasStart checks if Start has been set in PatternFlowTcpSrcPortCounter - HasStart() bool - // Step returns uint32, set in PatternFlowTcpSrcPortCounter. - Step() uint32 - // SetStep assigns uint32 provided by user to PatternFlowTcpSrcPortCounter - SetStep(value uint32) PatternFlowTcpSrcPortCounter - // HasStep checks if Step has been set in PatternFlowTcpSrcPortCounter - HasStep() bool - // Count returns uint32, set in PatternFlowTcpSrcPortCounter. - Count() uint32 - // SetCount assigns uint32 provided by user to PatternFlowTcpSrcPortCounter - SetCount(value uint32) PatternFlowTcpSrcPortCounter - // HasCount checks if Count has been set in PatternFlowTcpSrcPortCounter - HasCount() bool +type patternFlowIcmpEchoSequenceNumberPatternFlowIcmpEchoSequenceNumberMetricTagIter struct { + obj *patternFlowIcmpEchoSequenceNumber + patternFlowIcmpEchoSequenceNumberMetricTagSlice []PatternFlowIcmpEchoSequenceNumberMetricTag + fieldPtr *[]*otg.PatternFlowIcmpEchoSequenceNumberMetricTag } -// description is TBD -// Start returns a uint32 -func (obj *patternFlowTcpSrcPortCounter) Start() uint32 { - - return *obj.obj.Start - +func newPatternFlowIcmpEchoSequenceNumberPatternFlowIcmpEchoSequenceNumberMetricTagIter(ptr *[]*otg.PatternFlowIcmpEchoSequenceNumberMetricTag) PatternFlowIcmpEchoSequenceNumberPatternFlowIcmpEchoSequenceNumberMetricTagIter { + return &patternFlowIcmpEchoSequenceNumberPatternFlowIcmpEchoSequenceNumberMetricTagIter{fieldPtr: ptr} } -// description is TBD -// Start returns a uint32 -func (obj *patternFlowTcpSrcPortCounter) HasStart() bool { - return obj.obj.Start != nil +type PatternFlowIcmpEchoSequenceNumberPatternFlowIcmpEchoSequenceNumberMetricTagIter interface { + setMsg(*patternFlowIcmpEchoSequenceNumber) PatternFlowIcmpEchoSequenceNumberPatternFlowIcmpEchoSequenceNumberMetricTagIter + Items() []PatternFlowIcmpEchoSequenceNumberMetricTag + Add() PatternFlowIcmpEchoSequenceNumberMetricTag + Append(items ...PatternFlowIcmpEchoSequenceNumberMetricTag) PatternFlowIcmpEchoSequenceNumberPatternFlowIcmpEchoSequenceNumberMetricTagIter + Set(index int, newObj PatternFlowIcmpEchoSequenceNumberMetricTag) PatternFlowIcmpEchoSequenceNumberPatternFlowIcmpEchoSequenceNumberMetricTagIter + Clear() PatternFlowIcmpEchoSequenceNumberPatternFlowIcmpEchoSequenceNumberMetricTagIter + clearHolderSlice() PatternFlowIcmpEchoSequenceNumberPatternFlowIcmpEchoSequenceNumberMetricTagIter + appendHolderSlice(item PatternFlowIcmpEchoSequenceNumberMetricTag) PatternFlowIcmpEchoSequenceNumberPatternFlowIcmpEchoSequenceNumberMetricTagIter } -// description is TBD -// SetStart sets the uint32 value in the PatternFlowTcpSrcPortCounter object -func (obj *patternFlowTcpSrcPortCounter) SetStart(value uint32) PatternFlowTcpSrcPortCounter { - - obj.obj.Start = &value +func (obj *patternFlowIcmpEchoSequenceNumberPatternFlowIcmpEchoSequenceNumberMetricTagIter) setMsg(msg *patternFlowIcmpEchoSequenceNumber) PatternFlowIcmpEchoSequenceNumberPatternFlowIcmpEchoSequenceNumberMetricTagIter { + obj.clearHolderSlice() + for _, val := range *obj.fieldPtr { + obj.appendHolderSlice(&patternFlowIcmpEchoSequenceNumberMetricTag{obj: val}) + } + obj.obj = msg return obj } -// description is TBD -// Step returns a uint32 -func (obj *patternFlowTcpSrcPortCounter) Step() uint32 { - - return *obj.obj.Step - +func (obj *patternFlowIcmpEchoSequenceNumberPatternFlowIcmpEchoSequenceNumberMetricTagIter) Items() []PatternFlowIcmpEchoSequenceNumberMetricTag { + return obj.patternFlowIcmpEchoSequenceNumberMetricTagSlice } -// description is TBD -// Step returns a uint32 -func (obj *patternFlowTcpSrcPortCounter) HasStep() bool { - return obj.obj.Step != nil +func (obj *patternFlowIcmpEchoSequenceNumberPatternFlowIcmpEchoSequenceNumberMetricTagIter) Add() PatternFlowIcmpEchoSequenceNumberMetricTag { + newObj := &otg.PatternFlowIcmpEchoSequenceNumberMetricTag{} + *obj.fieldPtr = append(*obj.fieldPtr, newObj) + newLibObj := &patternFlowIcmpEchoSequenceNumberMetricTag{obj: newObj} + newLibObj.setDefault() + obj.patternFlowIcmpEchoSequenceNumberMetricTagSlice = append(obj.patternFlowIcmpEchoSequenceNumberMetricTagSlice, newLibObj) + return newLibObj } -// description is TBD -// SetStep sets the uint32 value in the PatternFlowTcpSrcPortCounter object -func (obj *patternFlowTcpSrcPortCounter) SetStep(value uint32) PatternFlowTcpSrcPortCounter { - - obj.obj.Step = &value +func (obj *patternFlowIcmpEchoSequenceNumberPatternFlowIcmpEchoSequenceNumberMetricTagIter) Append(items ...PatternFlowIcmpEchoSequenceNumberMetricTag) PatternFlowIcmpEchoSequenceNumberPatternFlowIcmpEchoSequenceNumberMetricTagIter { + for _, item := range items { + newObj := item.Msg() + *obj.fieldPtr = append(*obj.fieldPtr, newObj) + obj.patternFlowIcmpEchoSequenceNumberMetricTagSlice = append(obj.patternFlowIcmpEchoSequenceNumberMetricTagSlice, item) + } return obj } -// description is TBD -// Count returns a uint32 -func (obj *patternFlowTcpSrcPortCounter) Count() uint32 { - - return *obj.obj.Count - +func (obj *patternFlowIcmpEchoSequenceNumberPatternFlowIcmpEchoSequenceNumberMetricTagIter) Set(index int, newObj PatternFlowIcmpEchoSequenceNumberMetricTag) PatternFlowIcmpEchoSequenceNumberPatternFlowIcmpEchoSequenceNumberMetricTagIter { + (*obj.fieldPtr)[index] = newObj.Msg() + obj.patternFlowIcmpEchoSequenceNumberMetricTagSlice[index] = newObj + return obj } - -// description is TBD -// Count returns a uint32 -func (obj *patternFlowTcpSrcPortCounter) HasCount() bool { - return obj.obj.Count != nil +func (obj *patternFlowIcmpEchoSequenceNumberPatternFlowIcmpEchoSequenceNumberMetricTagIter) Clear() PatternFlowIcmpEchoSequenceNumberPatternFlowIcmpEchoSequenceNumberMetricTagIter { + if len(*obj.fieldPtr) > 0 { + *obj.fieldPtr = []*otg.PatternFlowIcmpEchoSequenceNumberMetricTag{} + obj.patternFlowIcmpEchoSequenceNumberMetricTagSlice = []PatternFlowIcmpEchoSequenceNumberMetricTag{} + } + return obj } - -// description is TBD -// SetCount sets the uint32 value in the PatternFlowTcpSrcPortCounter object -func (obj *patternFlowTcpSrcPortCounter) SetCount(value uint32) PatternFlowTcpSrcPortCounter { - - obj.obj.Count = &value +func (obj *patternFlowIcmpEchoSequenceNumberPatternFlowIcmpEchoSequenceNumberMetricTagIter) clearHolderSlice() PatternFlowIcmpEchoSequenceNumberPatternFlowIcmpEchoSequenceNumberMetricTagIter { + if len(obj.patternFlowIcmpEchoSequenceNumberMetricTagSlice) > 0 { + obj.patternFlowIcmpEchoSequenceNumberMetricTagSlice = []PatternFlowIcmpEchoSequenceNumberMetricTag{} + } + return obj +} +func (obj *patternFlowIcmpEchoSequenceNumberPatternFlowIcmpEchoSequenceNumberMetricTagIter) appendHolderSlice(item PatternFlowIcmpEchoSequenceNumberMetricTag) PatternFlowIcmpEchoSequenceNumberPatternFlowIcmpEchoSequenceNumberMetricTagIter { + obj.patternFlowIcmpEchoSequenceNumberMetricTagSlice = append(obj.patternFlowIcmpEchoSequenceNumberMetricTagSlice, item) return obj } -func (obj *patternFlowTcpSrcPortCounter) validateObj(vObj *validation, set_default bool) { +func (obj *patternFlowIcmpEchoSequenceNumber) validateObj(vObj *validation, set_default bool) { if set_default { obj.setDefault() } - if obj.obj.Start != nil { + if obj.obj.Value != nil { - if *obj.obj.Start > 65535 { + if *obj.obj.Value > 65535 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowTcpSrcPortCounter.Start <= 65535 but Got %d", *obj.obj.Start)) + fmt.Sprintf("0 <= PatternFlowIcmpEchoSequenceNumber.Value <= 65535 but Got %d", *obj.obj.Value)) } } - if obj.obj.Step != nil { + if obj.obj.Values != nil { + + for _, item := range obj.obj.Values { + if item > 65535 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("min(uint32) <= PatternFlowIcmpEchoSequenceNumber.Values <= 65535 but Got %d", item)) + } - if *obj.obj.Step > 65535 { - vObj.validationErrors = append( - vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowTcpSrcPortCounter.Step <= 65535 but Got %d", *obj.obj.Step)) } } - if obj.obj.Count != nil { + if obj.obj.Increment != nil { - if *obj.obj.Count > 65535 { - vObj.validationErrors = append( - vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowTcpSrcPortCounter.Count <= 65535 but Got %d", *obj.obj.Count)) + obj.Increment().validateObj(vObj, set_default) + } + + if obj.obj.Decrement != nil { + + obj.Decrement().validateObj(vObj, set_default) + } + + if len(obj.obj.MetricTags) != 0 { + + if set_default { + obj.MetricTags().clearHolderSlice() + for _, item := range obj.obj.MetricTags { + obj.MetricTags().appendHolderSlice(&patternFlowIcmpEchoSequenceNumberMetricTag{obj: item}) + } + } + for _, item := range obj.MetricTags().Items() { + item.validateObj(vObj, set_default) } } } -func (obj *patternFlowTcpSrcPortCounter) setDefault() { - if obj.obj.Start == nil { - obj.SetStart(0) - } - if obj.obj.Step == nil { - obj.SetStep(1) - } - if obj.obj.Count == nil { - obj.SetCount(1) +func (obj *patternFlowIcmpEchoSequenceNumber) setDefault() { + if obj.obj.Choice == nil { + obj.SetChoice(PatternFlowIcmpEchoSequenceNumberChoice.VALUE) + } } -// ***** PatternFlowTcpSrcPortMetricTag ***** -type patternFlowTcpSrcPortMetricTag struct { +// ***** PatternFlowIcmpv6EchoType ***** +type patternFlowIcmpv6EchoType struct { validation - obj *otg.PatternFlowTcpSrcPortMetricTag + obj *otg.PatternFlowIcmpv6EchoType + incrementHolder PatternFlowIcmpv6EchoTypeCounter + decrementHolder PatternFlowIcmpv6EchoTypeCounter + metricTagsHolder PatternFlowIcmpv6EchoTypePatternFlowIcmpv6EchoTypeMetricTagIter } -func NewPatternFlowTcpSrcPortMetricTag() PatternFlowTcpSrcPortMetricTag { - obj := patternFlowTcpSrcPortMetricTag{obj: &otg.PatternFlowTcpSrcPortMetricTag{}} +func NewPatternFlowIcmpv6EchoType() PatternFlowIcmpv6EchoType { + obj := patternFlowIcmpv6EchoType{obj: &otg.PatternFlowIcmpv6EchoType{}} obj.setDefault() return &obj } -func (obj *patternFlowTcpSrcPortMetricTag) Msg() *otg.PatternFlowTcpSrcPortMetricTag { +func (obj *patternFlowIcmpv6EchoType) Msg() *otg.PatternFlowIcmpv6EchoType { return obj.obj } -func (obj *patternFlowTcpSrcPortMetricTag) SetMsg(msg *otg.PatternFlowTcpSrcPortMetricTag) PatternFlowTcpSrcPortMetricTag { - +func (obj *patternFlowIcmpv6EchoType) SetMsg(msg *otg.PatternFlowIcmpv6EchoType) PatternFlowIcmpv6EchoType { + obj.setNil() proto.Merge(obj.obj, msg) return obj } -func (obj *patternFlowTcpSrcPortMetricTag) ToProto() (*otg.PatternFlowTcpSrcPortMetricTag, error) { +func (obj *patternFlowIcmpv6EchoType) ToProto() (*otg.PatternFlowIcmpv6EchoType, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -221003,7 +264745,7 @@ func (obj *patternFlowTcpSrcPortMetricTag) ToProto() (*otg.PatternFlowTcpSrcPort return obj.Msg(), nil } -func (obj *patternFlowTcpSrcPortMetricTag) FromProto(msg *otg.PatternFlowTcpSrcPortMetricTag) (PatternFlowTcpSrcPortMetricTag, error) { +func (obj *patternFlowIcmpv6EchoType) FromProto(msg *otg.PatternFlowIcmpv6EchoType) (PatternFlowIcmpv6EchoType, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -221012,7 +264754,7 @@ func (obj *patternFlowTcpSrcPortMetricTag) FromProto(msg *otg.PatternFlowTcpSrcP return newObj, nil } -func (obj *patternFlowTcpSrcPortMetricTag) ToPbText() (string, error) { +func (obj *patternFlowIcmpv6EchoType) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -221024,12 +264766,12 @@ func (obj *patternFlowTcpSrcPortMetricTag) ToPbText() (string, error) { return string(protoMarshal), nil } -func (obj *patternFlowTcpSrcPortMetricTag) FromPbText(value string) error { +func (obj *patternFlowIcmpv6EchoType) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj } - + obj.setNil() vErr := obj.validateToAndFrom() if vErr != nil { return vErr @@ -221037,7 +264779,7 @@ func (obj *patternFlowTcpSrcPortMetricTag) FromPbText(value string) error { return retObj } -func (obj *patternFlowTcpSrcPortMetricTag) ToYaml() (string, error) { +func (obj *patternFlowIcmpv6EchoType) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -221058,7 +264800,7 @@ func (obj *patternFlowTcpSrcPortMetricTag) ToYaml() (string, error) { return string(data), nil } -func (obj *patternFlowTcpSrcPortMetricTag) FromYaml(value string) error { +func (obj *patternFlowIcmpv6EchoType) FromYaml(value string) error { if value == "" { value = "{}" } @@ -221075,7 +264817,7 @@ func (obj *patternFlowTcpSrcPortMetricTag) FromYaml(value string) error { return fmt.Errorf("unmarshal error %s", strings.Replace( uError.Error(), "\u00a0", " ", -1)[7:]) } - + obj.setNil() vErr := obj.validateToAndFrom() if vErr != nil { return vErr @@ -221083,7 +264825,7 @@ func (obj *patternFlowTcpSrcPortMetricTag) FromYaml(value string) error { return nil } -func (obj *patternFlowTcpSrcPortMetricTag) ToJson() (string, error) { +func (obj *patternFlowIcmpv6EchoType) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -221101,7 +264843,7 @@ func (obj *patternFlowTcpSrcPortMetricTag) ToJson() (string, error) { return string(data), nil } -func (obj *patternFlowTcpSrcPortMetricTag) FromJson(value string) error { +func (obj *patternFlowIcmpv6EchoType) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -221114,7 +264856,7 @@ func (obj *patternFlowTcpSrcPortMetricTag) FromJson(value string) error { return fmt.Errorf("unmarshal error %s", strings.Replace( uError.Error(), "\u00a0", " ", -1)[7:]) } - + obj.setNil() err := obj.validateToAndFrom() if err != nil { return err @@ -221122,19 +264864,19 @@ func (obj *patternFlowTcpSrcPortMetricTag) FromJson(value string) error { return nil } -func (obj *patternFlowTcpSrcPortMetricTag) validateToAndFrom() error { +func (obj *patternFlowIcmpv6EchoType) validateToAndFrom() error { // emptyVars() obj.validateObj(&obj.validation, true) return obj.validationResult() } -func (obj *patternFlowTcpSrcPortMetricTag) Validate() error { +func (obj *patternFlowIcmpv6EchoType) Validate() error { // emptyVars() obj.validateObj(&obj.validation, false) return obj.validationResult() } -func (obj *patternFlowTcpSrcPortMetricTag) String() string { +func (obj *patternFlowIcmpv6EchoType) String() string { str, err := obj.ToYaml() if err != nil { return err.Error() @@ -221142,12 +264884,12 @@ func (obj *patternFlowTcpSrcPortMetricTag) String() string { return str } -func (obj *patternFlowTcpSrcPortMetricTag) Clone() (PatternFlowTcpSrcPortMetricTag, error) { +func (obj *patternFlowIcmpv6EchoType) Clone() (PatternFlowIcmpv6EchoType, error) { vErr := obj.Validate() if vErr != nil { return nil, vErr } - newObj := NewPatternFlowTcpSrcPortMetricTag() + newObj := NewPatternFlowIcmpv6EchoType() data, err := proto.Marshal(obj.Msg()) if err != nil { return nil, err @@ -221159,183 +264901,426 @@ func (obj *patternFlowTcpSrcPortMetricTag) Clone() (PatternFlowTcpSrcPortMetricT return newObj, nil } -// PatternFlowTcpSrcPortMetricTag is metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. -type PatternFlowTcpSrcPortMetricTag interface { +func (obj *patternFlowIcmpv6EchoType) setNil() { + obj.incrementHolder = nil + obj.decrementHolder = nil + obj.metricTagsHolder = nil + obj.validationErrors = nil + obj.warnings = nil + obj.constraints = make(map[string]map[string]Constraints) +} + +// PatternFlowIcmpv6EchoType is iCMPv6 echo type +type PatternFlowIcmpv6EchoType interface { Validation - // Msg marshals PatternFlowTcpSrcPortMetricTag to protobuf object *otg.PatternFlowTcpSrcPortMetricTag + // Msg marshals PatternFlowIcmpv6EchoType to protobuf object *otg.PatternFlowIcmpv6EchoType // and doesn't set defaults - Msg() *otg.PatternFlowTcpSrcPortMetricTag - // SetMsg unmarshals PatternFlowTcpSrcPortMetricTag from protobuf object *otg.PatternFlowTcpSrcPortMetricTag + Msg() *otg.PatternFlowIcmpv6EchoType + // SetMsg unmarshals PatternFlowIcmpv6EchoType from protobuf object *otg.PatternFlowIcmpv6EchoType // and doesn't set defaults - SetMsg(*otg.PatternFlowTcpSrcPortMetricTag) PatternFlowTcpSrcPortMetricTag - // ToProto marshals PatternFlowTcpSrcPortMetricTag to protobuf object *otg.PatternFlowTcpSrcPortMetricTag - ToProto() (*otg.PatternFlowTcpSrcPortMetricTag, error) - // ToPbText marshals PatternFlowTcpSrcPortMetricTag to protobuf text + SetMsg(*otg.PatternFlowIcmpv6EchoType) PatternFlowIcmpv6EchoType + // ToProto marshals PatternFlowIcmpv6EchoType to protobuf object *otg.PatternFlowIcmpv6EchoType + ToProto() (*otg.PatternFlowIcmpv6EchoType, error) + // ToPbText marshals PatternFlowIcmpv6EchoType to protobuf text ToPbText() (string, error) - // ToYaml marshals PatternFlowTcpSrcPortMetricTag to YAML text + // ToYaml marshals PatternFlowIcmpv6EchoType to YAML text ToYaml() (string, error) - // ToJson marshals PatternFlowTcpSrcPortMetricTag to JSON text + // ToJson marshals PatternFlowIcmpv6EchoType to JSON text ToJson() (string, error) - // FromProto unmarshals PatternFlowTcpSrcPortMetricTag from protobuf object *otg.PatternFlowTcpSrcPortMetricTag - FromProto(msg *otg.PatternFlowTcpSrcPortMetricTag) (PatternFlowTcpSrcPortMetricTag, error) - // FromPbText unmarshals PatternFlowTcpSrcPortMetricTag from protobuf text + // FromProto unmarshals PatternFlowIcmpv6EchoType from protobuf object *otg.PatternFlowIcmpv6EchoType + FromProto(msg *otg.PatternFlowIcmpv6EchoType) (PatternFlowIcmpv6EchoType, error) + // FromPbText unmarshals PatternFlowIcmpv6EchoType from protobuf text FromPbText(value string) error - // FromYaml unmarshals PatternFlowTcpSrcPortMetricTag from YAML text + // FromYaml unmarshals PatternFlowIcmpv6EchoType from YAML text FromYaml(value string) error - // FromJson unmarshals PatternFlowTcpSrcPortMetricTag from JSON text + // FromJson unmarshals PatternFlowIcmpv6EchoType from JSON text FromJson(value string) error - // Validate validates PatternFlowTcpSrcPortMetricTag + // Validate validates PatternFlowIcmpv6EchoType Validate() error // A stringer function String() string // Clones the object - Clone() (PatternFlowTcpSrcPortMetricTag, error) + Clone() (PatternFlowIcmpv6EchoType, error) validateToAndFrom() error validateObj(vObj *validation, set_default bool) setDefault() - // Name returns string, set in PatternFlowTcpSrcPortMetricTag. - Name() string - // SetName assigns string provided by user to PatternFlowTcpSrcPortMetricTag - SetName(value string) PatternFlowTcpSrcPortMetricTag - // Offset returns uint32, set in PatternFlowTcpSrcPortMetricTag. - Offset() uint32 - // SetOffset assigns uint32 provided by user to PatternFlowTcpSrcPortMetricTag - SetOffset(value uint32) PatternFlowTcpSrcPortMetricTag - // HasOffset checks if Offset has been set in PatternFlowTcpSrcPortMetricTag - HasOffset() bool - // Length returns uint32, set in PatternFlowTcpSrcPortMetricTag. - Length() uint32 - // SetLength assigns uint32 provided by user to PatternFlowTcpSrcPortMetricTag - SetLength(value uint32) PatternFlowTcpSrcPortMetricTag - // HasLength checks if Length has been set in PatternFlowTcpSrcPortMetricTag - HasLength() bool + // Choice returns PatternFlowIcmpv6EchoTypeChoiceEnum, set in PatternFlowIcmpv6EchoType + Choice() PatternFlowIcmpv6EchoTypeChoiceEnum + // SetChoice assigns PatternFlowIcmpv6EchoTypeChoiceEnum provided by user to PatternFlowIcmpv6EchoType + SetChoice(value PatternFlowIcmpv6EchoTypeChoiceEnum) PatternFlowIcmpv6EchoType + // HasChoice checks if Choice has been set in PatternFlowIcmpv6EchoType + HasChoice() bool + // Value returns uint32, set in PatternFlowIcmpv6EchoType. + Value() uint32 + // SetValue assigns uint32 provided by user to PatternFlowIcmpv6EchoType + SetValue(value uint32) PatternFlowIcmpv6EchoType + // HasValue checks if Value has been set in PatternFlowIcmpv6EchoType + HasValue() bool + // Values returns []uint32, set in PatternFlowIcmpv6EchoType. + Values() []uint32 + // SetValues assigns []uint32 provided by user to PatternFlowIcmpv6EchoType + SetValues(value []uint32) PatternFlowIcmpv6EchoType + // Increment returns PatternFlowIcmpv6EchoTypeCounter, set in PatternFlowIcmpv6EchoType. + // PatternFlowIcmpv6EchoTypeCounter is integer counter pattern + Increment() PatternFlowIcmpv6EchoTypeCounter + // SetIncrement assigns PatternFlowIcmpv6EchoTypeCounter provided by user to PatternFlowIcmpv6EchoType. + // PatternFlowIcmpv6EchoTypeCounter is integer counter pattern + SetIncrement(value PatternFlowIcmpv6EchoTypeCounter) PatternFlowIcmpv6EchoType + // HasIncrement checks if Increment has been set in PatternFlowIcmpv6EchoType + HasIncrement() bool + // Decrement returns PatternFlowIcmpv6EchoTypeCounter, set in PatternFlowIcmpv6EchoType. + // PatternFlowIcmpv6EchoTypeCounter is integer counter pattern + Decrement() PatternFlowIcmpv6EchoTypeCounter + // SetDecrement assigns PatternFlowIcmpv6EchoTypeCounter provided by user to PatternFlowIcmpv6EchoType. + // PatternFlowIcmpv6EchoTypeCounter is integer counter pattern + SetDecrement(value PatternFlowIcmpv6EchoTypeCounter) PatternFlowIcmpv6EchoType + // HasDecrement checks if Decrement has been set in PatternFlowIcmpv6EchoType + HasDecrement() bool + // MetricTags returns PatternFlowIcmpv6EchoTypePatternFlowIcmpv6EchoTypeMetricTagIterIter, set in PatternFlowIcmpv6EchoType + MetricTags() PatternFlowIcmpv6EchoTypePatternFlowIcmpv6EchoTypeMetricTagIter + setNil() +} + +type PatternFlowIcmpv6EchoTypeChoiceEnum string + +// Enum of Choice on PatternFlowIcmpv6EchoType +var PatternFlowIcmpv6EchoTypeChoice = struct { + VALUE PatternFlowIcmpv6EchoTypeChoiceEnum + VALUES PatternFlowIcmpv6EchoTypeChoiceEnum + INCREMENT PatternFlowIcmpv6EchoTypeChoiceEnum + DECREMENT PatternFlowIcmpv6EchoTypeChoiceEnum +}{ + VALUE: PatternFlowIcmpv6EchoTypeChoiceEnum("value"), + VALUES: PatternFlowIcmpv6EchoTypeChoiceEnum("values"), + INCREMENT: PatternFlowIcmpv6EchoTypeChoiceEnum("increment"), + DECREMENT: PatternFlowIcmpv6EchoTypeChoiceEnum("decrement"), +} + +func (obj *patternFlowIcmpv6EchoType) Choice() PatternFlowIcmpv6EchoTypeChoiceEnum { + return PatternFlowIcmpv6EchoTypeChoiceEnum(obj.obj.Choice.Enum().String()) +} + +// description is TBD +// Choice returns a string +func (obj *patternFlowIcmpv6EchoType) HasChoice() bool { + return obj.obj.Choice != nil +} + +func (obj *patternFlowIcmpv6EchoType) SetChoice(value PatternFlowIcmpv6EchoTypeChoiceEnum) PatternFlowIcmpv6EchoType { + intValue, ok := otg.PatternFlowIcmpv6EchoType_Choice_Enum_value[string(value)] + if !ok { + obj.validationErrors = append(obj.validationErrors, fmt.Sprintf( + "%s is not a valid choice on PatternFlowIcmpv6EchoTypeChoiceEnum", string(value))) + return obj + } + enumValue := otg.PatternFlowIcmpv6EchoType_Choice_Enum(intValue) + obj.obj.Choice = &enumValue + obj.obj.Decrement = nil + obj.decrementHolder = nil + obj.obj.Increment = nil + obj.incrementHolder = nil + obj.obj.Values = nil + obj.obj.Value = nil + + if value == PatternFlowIcmpv6EchoTypeChoice.VALUE { + defaultValue := uint32(128) + obj.obj.Value = &defaultValue + } + + if value == PatternFlowIcmpv6EchoTypeChoice.VALUES { + defaultValue := []uint32{128} + obj.obj.Values = defaultValue + } + + if value == PatternFlowIcmpv6EchoTypeChoice.INCREMENT { + obj.obj.Increment = NewPatternFlowIcmpv6EchoTypeCounter().Msg() + } + + if value == PatternFlowIcmpv6EchoTypeChoice.DECREMENT { + obj.obj.Decrement = NewPatternFlowIcmpv6EchoTypeCounter().Msg() + } + + return obj +} + +// description is TBD +// Value returns a uint32 +func (obj *patternFlowIcmpv6EchoType) Value() uint32 { + + if obj.obj.Value == nil { + obj.SetChoice(PatternFlowIcmpv6EchoTypeChoice.VALUE) + } + + return *obj.obj.Value + +} + +// description is TBD +// Value returns a uint32 +func (obj *patternFlowIcmpv6EchoType) HasValue() bool { + return obj.obj.Value != nil +} + +// description is TBD +// SetValue sets the uint32 value in the PatternFlowIcmpv6EchoType object +func (obj *patternFlowIcmpv6EchoType) SetValue(value uint32) PatternFlowIcmpv6EchoType { + obj.SetChoice(PatternFlowIcmpv6EchoTypeChoice.VALUE) + obj.obj.Value = &value + return obj } -// Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field -// Name returns a string -func (obj *patternFlowTcpSrcPortMetricTag) Name() string { +// description is TBD +// Values returns a []uint32 +func (obj *patternFlowIcmpv6EchoType) Values() []uint32 { + if obj.obj.Values == nil { + obj.SetValues([]uint32{128}) + } + return obj.obj.Values +} - return *obj.obj.Name +// description is TBD +// SetValues sets the []uint32 value in the PatternFlowIcmpv6EchoType object +func (obj *patternFlowIcmpv6EchoType) SetValues(value []uint32) PatternFlowIcmpv6EchoType { + obj.SetChoice(PatternFlowIcmpv6EchoTypeChoice.VALUES) + if obj.obj.Values == nil { + obj.obj.Values = make([]uint32, 0) + } + obj.obj.Values = value + return obj } -// Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field -// SetName sets the string value in the PatternFlowTcpSrcPortMetricTag object -func (obj *patternFlowTcpSrcPortMetricTag) SetName(value string) PatternFlowTcpSrcPortMetricTag { +// description is TBD +// Increment returns a PatternFlowIcmpv6EchoTypeCounter +func (obj *patternFlowIcmpv6EchoType) Increment() PatternFlowIcmpv6EchoTypeCounter { + if obj.obj.Increment == nil { + obj.SetChoice(PatternFlowIcmpv6EchoTypeChoice.INCREMENT) + } + if obj.incrementHolder == nil { + obj.incrementHolder = &patternFlowIcmpv6EchoTypeCounter{obj: obj.obj.Increment} + } + return obj.incrementHolder +} - obj.obj.Name = &value - return obj +// description is TBD +// Increment returns a PatternFlowIcmpv6EchoTypeCounter +func (obj *patternFlowIcmpv6EchoType) HasIncrement() bool { + return obj.obj.Increment != nil } -// Offset in bits relative to start of corresponding header field -// Offset returns a uint32 -func (obj *patternFlowTcpSrcPortMetricTag) Offset() uint32 { +// description is TBD +// SetIncrement sets the PatternFlowIcmpv6EchoTypeCounter value in the PatternFlowIcmpv6EchoType object +func (obj *patternFlowIcmpv6EchoType) SetIncrement(value PatternFlowIcmpv6EchoTypeCounter) PatternFlowIcmpv6EchoType { + obj.SetChoice(PatternFlowIcmpv6EchoTypeChoice.INCREMENT) + obj.incrementHolder = nil + obj.obj.Increment = value.Msg() - return *obj.obj.Offset + return obj +} +// description is TBD +// Decrement returns a PatternFlowIcmpv6EchoTypeCounter +func (obj *patternFlowIcmpv6EchoType) Decrement() PatternFlowIcmpv6EchoTypeCounter { + if obj.obj.Decrement == nil { + obj.SetChoice(PatternFlowIcmpv6EchoTypeChoice.DECREMENT) + } + if obj.decrementHolder == nil { + obj.decrementHolder = &patternFlowIcmpv6EchoTypeCounter{obj: obj.obj.Decrement} + } + return obj.decrementHolder } -// Offset in bits relative to start of corresponding header field -// Offset returns a uint32 -func (obj *patternFlowTcpSrcPortMetricTag) HasOffset() bool { - return obj.obj.Offset != nil +// description is TBD +// Decrement returns a PatternFlowIcmpv6EchoTypeCounter +func (obj *patternFlowIcmpv6EchoType) HasDecrement() bool { + return obj.obj.Decrement != nil } -// Offset in bits relative to start of corresponding header field -// SetOffset sets the uint32 value in the PatternFlowTcpSrcPortMetricTag object -func (obj *patternFlowTcpSrcPortMetricTag) SetOffset(value uint32) PatternFlowTcpSrcPortMetricTag { +// description is TBD +// SetDecrement sets the PatternFlowIcmpv6EchoTypeCounter value in the PatternFlowIcmpv6EchoType object +func (obj *patternFlowIcmpv6EchoType) SetDecrement(value PatternFlowIcmpv6EchoTypeCounter) PatternFlowIcmpv6EchoType { + obj.SetChoice(PatternFlowIcmpv6EchoTypeChoice.DECREMENT) + obj.decrementHolder = nil + obj.obj.Decrement = value.Msg() - obj.obj.Offset = &value return obj } -// Number of bits to track for metrics starting from configured offset of corresponding header field -// Length returns a uint32 -func (obj *patternFlowTcpSrcPortMetricTag) Length() uint32 { +// One or more metric tags can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. +// MetricTags returns a []PatternFlowIcmpv6EchoTypeMetricTag +func (obj *patternFlowIcmpv6EchoType) MetricTags() PatternFlowIcmpv6EchoTypePatternFlowIcmpv6EchoTypeMetricTagIter { + if len(obj.obj.MetricTags) == 0 { + obj.obj.MetricTags = []*otg.PatternFlowIcmpv6EchoTypeMetricTag{} + } + if obj.metricTagsHolder == nil { + obj.metricTagsHolder = newPatternFlowIcmpv6EchoTypePatternFlowIcmpv6EchoTypeMetricTagIter(&obj.obj.MetricTags).setMsg(obj) + } + return obj.metricTagsHolder +} - return *obj.obj.Length +type patternFlowIcmpv6EchoTypePatternFlowIcmpv6EchoTypeMetricTagIter struct { + obj *patternFlowIcmpv6EchoType + patternFlowIcmpv6EchoTypeMetricTagSlice []PatternFlowIcmpv6EchoTypeMetricTag + fieldPtr *[]*otg.PatternFlowIcmpv6EchoTypeMetricTag +} +func newPatternFlowIcmpv6EchoTypePatternFlowIcmpv6EchoTypeMetricTagIter(ptr *[]*otg.PatternFlowIcmpv6EchoTypeMetricTag) PatternFlowIcmpv6EchoTypePatternFlowIcmpv6EchoTypeMetricTagIter { + return &patternFlowIcmpv6EchoTypePatternFlowIcmpv6EchoTypeMetricTagIter{fieldPtr: ptr} } -// Number of bits to track for metrics starting from configured offset of corresponding header field -// Length returns a uint32 -func (obj *patternFlowTcpSrcPortMetricTag) HasLength() bool { - return obj.obj.Length != nil +type PatternFlowIcmpv6EchoTypePatternFlowIcmpv6EchoTypeMetricTagIter interface { + setMsg(*patternFlowIcmpv6EchoType) PatternFlowIcmpv6EchoTypePatternFlowIcmpv6EchoTypeMetricTagIter + Items() []PatternFlowIcmpv6EchoTypeMetricTag + Add() PatternFlowIcmpv6EchoTypeMetricTag + Append(items ...PatternFlowIcmpv6EchoTypeMetricTag) PatternFlowIcmpv6EchoTypePatternFlowIcmpv6EchoTypeMetricTagIter + Set(index int, newObj PatternFlowIcmpv6EchoTypeMetricTag) PatternFlowIcmpv6EchoTypePatternFlowIcmpv6EchoTypeMetricTagIter + Clear() PatternFlowIcmpv6EchoTypePatternFlowIcmpv6EchoTypeMetricTagIter + clearHolderSlice() PatternFlowIcmpv6EchoTypePatternFlowIcmpv6EchoTypeMetricTagIter + appendHolderSlice(item PatternFlowIcmpv6EchoTypeMetricTag) PatternFlowIcmpv6EchoTypePatternFlowIcmpv6EchoTypeMetricTagIter } -// Number of bits to track for metrics starting from configured offset of corresponding header field -// SetLength sets the uint32 value in the PatternFlowTcpSrcPortMetricTag object -func (obj *patternFlowTcpSrcPortMetricTag) SetLength(value uint32) PatternFlowTcpSrcPortMetricTag { +func (obj *patternFlowIcmpv6EchoTypePatternFlowIcmpv6EchoTypeMetricTagIter) setMsg(msg *patternFlowIcmpv6EchoType) PatternFlowIcmpv6EchoTypePatternFlowIcmpv6EchoTypeMetricTagIter { + obj.clearHolderSlice() + for _, val := range *obj.fieldPtr { + obj.appendHolderSlice(&patternFlowIcmpv6EchoTypeMetricTag{obj: val}) + } + obj.obj = msg + return obj +} - obj.obj.Length = &value +func (obj *patternFlowIcmpv6EchoTypePatternFlowIcmpv6EchoTypeMetricTagIter) Items() []PatternFlowIcmpv6EchoTypeMetricTag { + return obj.patternFlowIcmpv6EchoTypeMetricTagSlice +} + +func (obj *patternFlowIcmpv6EchoTypePatternFlowIcmpv6EchoTypeMetricTagIter) Add() PatternFlowIcmpv6EchoTypeMetricTag { + newObj := &otg.PatternFlowIcmpv6EchoTypeMetricTag{} + *obj.fieldPtr = append(*obj.fieldPtr, newObj) + newLibObj := &patternFlowIcmpv6EchoTypeMetricTag{obj: newObj} + newLibObj.setDefault() + obj.patternFlowIcmpv6EchoTypeMetricTagSlice = append(obj.patternFlowIcmpv6EchoTypeMetricTagSlice, newLibObj) + return newLibObj +} + +func (obj *patternFlowIcmpv6EchoTypePatternFlowIcmpv6EchoTypeMetricTagIter) Append(items ...PatternFlowIcmpv6EchoTypeMetricTag) PatternFlowIcmpv6EchoTypePatternFlowIcmpv6EchoTypeMetricTagIter { + for _, item := range items { + newObj := item.Msg() + *obj.fieldPtr = append(*obj.fieldPtr, newObj) + obj.patternFlowIcmpv6EchoTypeMetricTagSlice = append(obj.patternFlowIcmpv6EchoTypeMetricTagSlice, item) + } return obj } -func (obj *patternFlowTcpSrcPortMetricTag) validateObj(vObj *validation, set_default bool) { - if set_default { - obj.setDefault() +func (obj *patternFlowIcmpv6EchoTypePatternFlowIcmpv6EchoTypeMetricTagIter) Set(index int, newObj PatternFlowIcmpv6EchoTypeMetricTag) PatternFlowIcmpv6EchoTypePatternFlowIcmpv6EchoTypeMetricTagIter { + (*obj.fieldPtr)[index] = newObj.Msg() + obj.patternFlowIcmpv6EchoTypeMetricTagSlice[index] = newObj + return obj +} +func (obj *patternFlowIcmpv6EchoTypePatternFlowIcmpv6EchoTypeMetricTagIter) Clear() PatternFlowIcmpv6EchoTypePatternFlowIcmpv6EchoTypeMetricTagIter { + if len(*obj.fieldPtr) > 0 { + *obj.fieldPtr = []*otg.PatternFlowIcmpv6EchoTypeMetricTag{} + obj.patternFlowIcmpv6EchoTypeMetricTagSlice = []PatternFlowIcmpv6EchoTypeMetricTag{} } + return obj +} +func (obj *patternFlowIcmpv6EchoTypePatternFlowIcmpv6EchoTypeMetricTagIter) clearHolderSlice() PatternFlowIcmpv6EchoTypePatternFlowIcmpv6EchoTypeMetricTagIter { + if len(obj.patternFlowIcmpv6EchoTypeMetricTagSlice) > 0 { + obj.patternFlowIcmpv6EchoTypeMetricTagSlice = []PatternFlowIcmpv6EchoTypeMetricTag{} + } + return obj +} +func (obj *patternFlowIcmpv6EchoTypePatternFlowIcmpv6EchoTypeMetricTagIter) appendHolderSlice(item PatternFlowIcmpv6EchoTypeMetricTag) PatternFlowIcmpv6EchoTypePatternFlowIcmpv6EchoTypeMetricTagIter { + obj.patternFlowIcmpv6EchoTypeMetricTagSlice = append(obj.patternFlowIcmpv6EchoTypeMetricTagSlice, item) + return obj +} - // Name is required - if obj.obj.Name == nil { - vObj.validationErrors = append(vObj.validationErrors, "Name is required field on interface PatternFlowTcpSrcPortMetricTag") +func (obj *patternFlowIcmpv6EchoType) validateObj(vObj *validation, set_default bool) { + if set_default { + obj.setDefault() } - if obj.obj.Offset != nil { + if obj.obj.Value != nil { - if *obj.obj.Offset > 15 { + if *obj.obj.Value > 255 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowTcpSrcPortMetricTag.Offset <= 15 but Got %d", *obj.obj.Offset)) + fmt.Sprintf("0 <= PatternFlowIcmpv6EchoType.Value <= 255 but Got %d", *obj.obj.Value)) } } - if obj.obj.Length != nil { + if obj.obj.Values != nil { + + for _, item := range obj.obj.Values { + if item > 255 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("min(uint32) <= PatternFlowIcmpv6EchoType.Values <= 255 but Got %d", item)) + } - if *obj.obj.Length < 1 || *obj.obj.Length > 16 { - vObj.validationErrors = append( - vObj.validationErrors, - fmt.Sprintf("1 <= PatternFlowTcpSrcPortMetricTag.Length <= 16 but Got %d", *obj.obj.Length)) } } -} + if obj.obj.Increment != nil { -func (obj *patternFlowTcpSrcPortMetricTag) setDefault() { - if obj.obj.Offset == nil { - obj.SetOffset(0) + obj.Increment().validateObj(vObj, set_default) } - if obj.obj.Length == nil { - obj.SetLength(16) + + if obj.obj.Decrement != nil { + + obj.Decrement().validateObj(vObj, set_default) + } + + if len(obj.obj.MetricTags) != 0 { + + if set_default { + obj.MetricTags().clearHolderSlice() + for _, item := range obj.obj.MetricTags { + obj.MetricTags().appendHolderSlice(&patternFlowIcmpv6EchoTypeMetricTag{obj: item}) + } + } + for _, item := range obj.MetricTags().Items() { + item.validateObj(vObj, set_default) + } + } } -// ***** PatternFlowTcpDstPortCounter ***** -type patternFlowTcpDstPortCounter struct { +func (obj *patternFlowIcmpv6EchoType) setDefault() { + if obj.obj.Choice == nil { + obj.SetChoice(PatternFlowIcmpv6EchoTypeChoice.VALUE) + + } + +} + +// ***** PatternFlowIcmpv6EchoCode ***** +type patternFlowIcmpv6EchoCode struct { validation - obj *otg.PatternFlowTcpDstPortCounter + obj *otg.PatternFlowIcmpv6EchoCode + incrementHolder PatternFlowIcmpv6EchoCodeCounter + decrementHolder PatternFlowIcmpv6EchoCodeCounter + metricTagsHolder PatternFlowIcmpv6EchoCodePatternFlowIcmpv6EchoCodeMetricTagIter } -func NewPatternFlowTcpDstPortCounter() PatternFlowTcpDstPortCounter { - obj := patternFlowTcpDstPortCounter{obj: &otg.PatternFlowTcpDstPortCounter{}} +func NewPatternFlowIcmpv6EchoCode() PatternFlowIcmpv6EchoCode { + obj := patternFlowIcmpv6EchoCode{obj: &otg.PatternFlowIcmpv6EchoCode{}} obj.setDefault() return &obj } -func (obj *patternFlowTcpDstPortCounter) Msg() *otg.PatternFlowTcpDstPortCounter { +func (obj *patternFlowIcmpv6EchoCode) Msg() *otg.PatternFlowIcmpv6EchoCode { return obj.obj } -func (obj *patternFlowTcpDstPortCounter) SetMsg(msg *otg.PatternFlowTcpDstPortCounter) PatternFlowTcpDstPortCounter { - +func (obj *patternFlowIcmpv6EchoCode) SetMsg(msg *otg.PatternFlowIcmpv6EchoCode) PatternFlowIcmpv6EchoCode { + obj.setNil() proto.Merge(obj.obj, msg) return obj } -func (obj *patternFlowTcpDstPortCounter) ToProto() (*otg.PatternFlowTcpDstPortCounter, error) { +func (obj *patternFlowIcmpv6EchoCode) ToProto() (*otg.PatternFlowIcmpv6EchoCode, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -221343,7 +265328,7 @@ func (obj *patternFlowTcpDstPortCounter) ToProto() (*otg.PatternFlowTcpDstPortCo return obj.Msg(), nil } -func (obj *patternFlowTcpDstPortCounter) FromProto(msg *otg.PatternFlowTcpDstPortCounter) (PatternFlowTcpDstPortCounter, error) { +func (obj *patternFlowIcmpv6EchoCode) FromProto(msg *otg.PatternFlowIcmpv6EchoCode) (PatternFlowIcmpv6EchoCode, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -221352,7 +265337,7 @@ func (obj *patternFlowTcpDstPortCounter) FromProto(msg *otg.PatternFlowTcpDstPor return newObj, nil } -func (obj *patternFlowTcpDstPortCounter) ToPbText() (string, error) { +func (obj *patternFlowIcmpv6EchoCode) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -221364,12 +265349,12 @@ func (obj *patternFlowTcpDstPortCounter) ToPbText() (string, error) { return string(protoMarshal), nil } -func (obj *patternFlowTcpDstPortCounter) FromPbText(value string) error { +func (obj *patternFlowIcmpv6EchoCode) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj } - + obj.setNil() vErr := obj.validateToAndFrom() if vErr != nil { return vErr @@ -221377,7 +265362,7 @@ func (obj *patternFlowTcpDstPortCounter) FromPbText(value string) error { return retObj } -func (obj *patternFlowTcpDstPortCounter) ToYaml() (string, error) { +func (obj *patternFlowIcmpv6EchoCode) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -221398,7 +265383,7 @@ func (obj *patternFlowTcpDstPortCounter) ToYaml() (string, error) { return string(data), nil } -func (obj *patternFlowTcpDstPortCounter) FromYaml(value string) error { +func (obj *patternFlowIcmpv6EchoCode) FromYaml(value string) error { if value == "" { value = "{}" } @@ -221415,7 +265400,7 @@ func (obj *patternFlowTcpDstPortCounter) FromYaml(value string) error { return fmt.Errorf("unmarshal error %s", strings.Replace( uError.Error(), "\u00a0", " ", -1)[7:]) } - + obj.setNil() vErr := obj.validateToAndFrom() if vErr != nil { return vErr @@ -221423,7 +265408,7 @@ func (obj *patternFlowTcpDstPortCounter) FromYaml(value string) error { return nil } -func (obj *patternFlowTcpDstPortCounter) ToJson() (string, error) { +func (obj *patternFlowIcmpv6EchoCode) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -221441,7 +265426,7 @@ func (obj *patternFlowTcpDstPortCounter) ToJson() (string, error) { return string(data), nil } -func (obj *patternFlowTcpDstPortCounter) FromJson(value string) error { +func (obj *patternFlowIcmpv6EchoCode) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -221454,7 +265439,7 @@ func (obj *patternFlowTcpDstPortCounter) FromJson(value string) error { return fmt.Errorf("unmarshal error %s", strings.Replace( uError.Error(), "\u00a0", " ", -1)[7:]) } - + obj.setNil() err := obj.validateToAndFrom() if err != nil { return err @@ -221462,19 +265447,19 @@ func (obj *patternFlowTcpDstPortCounter) FromJson(value string) error { return nil } -func (obj *patternFlowTcpDstPortCounter) validateToAndFrom() error { +func (obj *patternFlowIcmpv6EchoCode) validateToAndFrom() error { // emptyVars() obj.validateObj(&obj.validation, true) return obj.validationResult() } -func (obj *patternFlowTcpDstPortCounter) Validate() error { +func (obj *patternFlowIcmpv6EchoCode) Validate() error { // emptyVars() obj.validateObj(&obj.validation, false) return obj.validationResult() } -func (obj *patternFlowTcpDstPortCounter) String() string { +func (obj *patternFlowIcmpv6EchoCode) String() string { str, err := obj.ToYaml() if err != nil { return err.Error() @@ -221482,12 +265467,12 @@ func (obj *patternFlowTcpDstPortCounter) String() string { return str } -func (obj *patternFlowTcpDstPortCounter) Clone() (PatternFlowTcpDstPortCounter, error) { +func (obj *patternFlowIcmpv6EchoCode) Clone() (PatternFlowIcmpv6EchoCode, error) { vErr := obj.Validate() if vErr != nil { return nil, vErr } - newObj := NewPatternFlowTcpDstPortCounter() + newObj := NewPatternFlowIcmpv6EchoCode() data, err := proto.Marshal(obj.Msg()) if err != nil { return nil, err @@ -221499,199 +265484,426 @@ func (obj *patternFlowTcpDstPortCounter) Clone() (PatternFlowTcpDstPortCounter, return newObj, nil } -// PatternFlowTcpDstPortCounter is integer counter pattern -type PatternFlowTcpDstPortCounter interface { +func (obj *patternFlowIcmpv6EchoCode) setNil() { + obj.incrementHolder = nil + obj.decrementHolder = nil + obj.metricTagsHolder = nil + obj.validationErrors = nil + obj.warnings = nil + obj.constraints = make(map[string]map[string]Constraints) +} + +// PatternFlowIcmpv6EchoCode is iCMPv6 echo sub type +type PatternFlowIcmpv6EchoCode interface { Validation - // Msg marshals PatternFlowTcpDstPortCounter to protobuf object *otg.PatternFlowTcpDstPortCounter + // Msg marshals PatternFlowIcmpv6EchoCode to protobuf object *otg.PatternFlowIcmpv6EchoCode // and doesn't set defaults - Msg() *otg.PatternFlowTcpDstPortCounter - // SetMsg unmarshals PatternFlowTcpDstPortCounter from protobuf object *otg.PatternFlowTcpDstPortCounter + Msg() *otg.PatternFlowIcmpv6EchoCode + // SetMsg unmarshals PatternFlowIcmpv6EchoCode from protobuf object *otg.PatternFlowIcmpv6EchoCode // and doesn't set defaults - SetMsg(*otg.PatternFlowTcpDstPortCounter) PatternFlowTcpDstPortCounter - // ToProto marshals PatternFlowTcpDstPortCounter to protobuf object *otg.PatternFlowTcpDstPortCounter - ToProto() (*otg.PatternFlowTcpDstPortCounter, error) - // ToPbText marshals PatternFlowTcpDstPortCounter to protobuf text + SetMsg(*otg.PatternFlowIcmpv6EchoCode) PatternFlowIcmpv6EchoCode + // ToProto marshals PatternFlowIcmpv6EchoCode to protobuf object *otg.PatternFlowIcmpv6EchoCode + ToProto() (*otg.PatternFlowIcmpv6EchoCode, error) + // ToPbText marshals PatternFlowIcmpv6EchoCode to protobuf text ToPbText() (string, error) - // ToYaml marshals PatternFlowTcpDstPortCounter to YAML text + // ToYaml marshals PatternFlowIcmpv6EchoCode to YAML text ToYaml() (string, error) - // ToJson marshals PatternFlowTcpDstPortCounter to JSON text + // ToJson marshals PatternFlowIcmpv6EchoCode to JSON text ToJson() (string, error) - // FromProto unmarshals PatternFlowTcpDstPortCounter from protobuf object *otg.PatternFlowTcpDstPortCounter - FromProto(msg *otg.PatternFlowTcpDstPortCounter) (PatternFlowTcpDstPortCounter, error) - // FromPbText unmarshals PatternFlowTcpDstPortCounter from protobuf text + // FromProto unmarshals PatternFlowIcmpv6EchoCode from protobuf object *otg.PatternFlowIcmpv6EchoCode + FromProto(msg *otg.PatternFlowIcmpv6EchoCode) (PatternFlowIcmpv6EchoCode, error) + // FromPbText unmarshals PatternFlowIcmpv6EchoCode from protobuf text FromPbText(value string) error - // FromYaml unmarshals PatternFlowTcpDstPortCounter from YAML text + // FromYaml unmarshals PatternFlowIcmpv6EchoCode from YAML text FromYaml(value string) error - // FromJson unmarshals PatternFlowTcpDstPortCounter from JSON text + // FromJson unmarshals PatternFlowIcmpv6EchoCode from JSON text FromJson(value string) error - // Validate validates PatternFlowTcpDstPortCounter + // Validate validates PatternFlowIcmpv6EchoCode Validate() error // A stringer function String() string // Clones the object - Clone() (PatternFlowTcpDstPortCounter, error) + Clone() (PatternFlowIcmpv6EchoCode, error) validateToAndFrom() error validateObj(vObj *validation, set_default bool) setDefault() - // Start returns uint32, set in PatternFlowTcpDstPortCounter. - Start() uint32 - // SetStart assigns uint32 provided by user to PatternFlowTcpDstPortCounter - SetStart(value uint32) PatternFlowTcpDstPortCounter - // HasStart checks if Start has been set in PatternFlowTcpDstPortCounter - HasStart() bool - // Step returns uint32, set in PatternFlowTcpDstPortCounter. - Step() uint32 - // SetStep assigns uint32 provided by user to PatternFlowTcpDstPortCounter - SetStep(value uint32) PatternFlowTcpDstPortCounter - // HasStep checks if Step has been set in PatternFlowTcpDstPortCounter - HasStep() bool - // Count returns uint32, set in PatternFlowTcpDstPortCounter. - Count() uint32 - // SetCount assigns uint32 provided by user to PatternFlowTcpDstPortCounter - SetCount(value uint32) PatternFlowTcpDstPortCounter - // HasCount checks if Count has been set in PatternFlowTcpDstPortCounter - HasCount() bool + // Choice returns PatternFlowIcmpv6EchoCodeChoiceEnum, set in PatternFlowIcmpv6EchoCode + Choice() PatternFlowIcmpv6EchoCodeChoiceEnum + // SetChoice assigns PatternFlowIcmpv6EchoCodeChoiceEnum provided by user to PatternFlowIcmpv6EchoCode + SetChoice(value PatternFlowIcmpv6EchoCodeChoiceEnum) PatternFlowIcmpv6EchoCode + // HasChoice checks if Choice has been set in PatternFlowIcmpv6EchoCode + HasChoice() bool + // Value returns uint32, set in PatternFlowIcmpv6EchoCode. + Value() uint32 + // SetValue assigns uint32 provided by user to PatternFlowIcmpv6EchoCode + SetValue(value uint32) PatternFlowIcmpv6EchoCode + // HasValue checks if Value has been set in PatternFlowIcmpv6EchoCode + HasValue() bool + // Values returns []uint32, set in PatternFlowIcmpv6EchoCode. + Values() []uint32 + // SetValues assigns []uint32 provided by user to PatternFlowIcmpv6EchoCode + SetValues(value []uint32) PatternFlowIcmpv6EchoCode + // Increment returns PatternFlowIcmpv6EchoCodeCounter, set in PatternFlowIcmpv6EchoCode. + // PatternFlowIcmpv6EchoCodeCounter is integer counter pattern + Increment() PatternFlowIcmpv6EchoCodeCounter + // SetIncrement assigns PatternFlowIcmpv6EchoCodeCounter provided by user to PatternFlowIcmpv6EchoCode. + // PatternFlowIcmpv6EchoCodeCounter is integer counter pattern + SetIncrement(value PatternFlowIcmpv6EchoCodeCounter) PatternFlowIcmpv6EchoCode + // HasIncrement checks if Increment has been set in PatternFlowIcmpv6EchoCode + HasIncrement() bool + // Decrement returns PatternFlowIcmpv6EchoCodeCounter, set in PatternFlowIcmpv6EchoCode. + // PatternFlowIcmpv6EchoCodeCounter is integer counter pattern + Decrement() PatternFlowIcmpv6EchoCodeCounter + // SetDecrement assigns PatternFlowIcmpv6EchoCodeCounter provided by user to PatternFlowIcmpv6EchoCode. + // PatternFlowIcmpv6EchoCodeCounter is integer counter pattern + SetDecrement(value PatternFlowIcmpv6EchoCodeCounter) PatternFlowIcmpv6EchoCode + // HasDecrement checks if Decrement has been set in PatternFlowIcmpv6EchoCode + HasDecrement() bool + // MetricTags returns PatternFlowIcmpv6EchoCodePatternFlowIcmpv6EchoCodeMetricTagIterIter, set in PatternFlowIcmpv6EchoCode + MetricTags() PatternFlowIcmpv6EchoCodePatternFlowIcmpv6EchoCodeMetricTagIter + setNil() } -// description is TBD -// Start returns a uint32 -func (obj *patternFlowTcpDstPortCounter) Start() uint32 { +type PatternFlowIcmpv6EchoCodeChoiceEnum string - return *obj.obj.Start +// Enum of Choice on PatternFlowIcmpv6EchoCode +var PatternFlowIcmpv6EchoCodeChoice = struct { + VALUE PatternFlowIcmpv6EchoCodeChoiceEnum + VALUES PatternFlowIcmpv6EchoCodeChoiceEnum + INCREMENT PatternFlowIcmpv6EchoCodeChoiceEnum + DECREMENT PatternFlowIcmpv6EchoCodeChoiceEnum +}{ + VALUE: PatternFlowIcmpv6EchoCodeChoiceEnum("value"), + VALUES: PatternFlowIcmpv6EchoCodeChoiceEnum("values"), + INCREMENT: PatternFlowIcmpv6EchoCodeChoiceEnum("increment"), + DECREMENT: PatternFlowIcmpv6EchoCodeChoiceEnum("decrement"), +} +func (obj *patternFlowIcmpv6EchoCode) Choice() PatternFlowIcmpv6EchoCodeChoiceEnum { + return PatternFlowIcmpv6EchoCodeChoiceEnum(obj.obj.Choice.Enum().String()) } // description is TBD -// Start returns a uint32 -func (obj *patternFlowTcpDstPortCounter) HasStart() bool { - return obj.obj.Start != nil +// Choice returns a string +func (obj *patternFlowIcmpv6EchoCode) HasChoice() bool { + return obj.obj.Choice != nil } -// description is TBD -// SetStart sets the uint32 value in the PatternFlowTcpDstPortCounter object -func (obj *patternFlowTcpDstPortCounter) SetStart(value uint32) PatternFlowTcpDstPortCounter { +func (obj *patternFlowIcmpv6EchoCode) SetChoice(value PatternFlowIcmpv6EchoCodeChoiceEnum) PatternFlowIcmpv6EchoCode { + intValue, ok := otg.PatternFlowIcmpv6EchoCode_Choice_Enum_value[string(value)] + if !ok { + obj.validationErrors = append(obj.validationErrors, fmt.Sprintf( + "%s is not a valid choice on PatternFlowIcmpv6EchoCodeChoiceEnum", string(value))) + return obj + } + enumValue := otg.PatternFlowIcmpv6EchoCode_Choice_Enum(intValue) + obj.obj.Choice = &enumValue + obj.obj.Decrement = nil + obj.decrementHolder = nil + obj.obj.Increment = nil + obj.incrementHolder = nil + obj.obj.Values = nil + obj.obj.Value = nil + + if value == PatternFlowIcmpv6EchoCodeChoice.VALUE { + defaultValue := uint32(0) + obj.obj.Value = &defaultValue + } + + if value == PatternFlowIcmpv6EchoCodeChoice.VALUES { + defaultValue := []uint32{0} + obj.obj.Values = defaultValue + } + + if value == PatternFlowIcmpv6EchoCodeChoice.INCREMENT { + obj.obj.Increment = NewPatternFlowIcmpv6EchoCodeCounter().Msg() + } + + if value == PatternFlowIcmpv6EchoCodeChoice.DECREMENT { + obj.obj.Decrement = NewPatternFlowIcmpv6EchoCodeCounter().Msg() + } - obj.obj.Start = &value return obj } // description is TBD -// Step returns a uint32 -func (obj *patternFlowTcpDstPortCounter) Step() uint32 { +// Value returns a uint32 +func (obj *patternFlowIcmpv6EchoCode) Value() uint32 { - return *obj.obj.Step + if obj.obj.Value == nil { + obj.SetChoice(PatternFlowIcmpv6EchoCodeChoice.VALUE) + } + + return *obj.obj.Value } // description is TBD -// Step returns a uint32 -func (obj *patternFlowTcpDstPortCounter) HasStep() bool { - return obj.obj.Step != nil +// Value returns a uint32 +func (obj *patternFlowIcmpv6EchoCode) HasValue() bool { + return obj.obj.Value != nil } // description is TBD -// SetStep sets the uint32 value in the PatternFlowTcpDstPortCounter object -func (obj *patternFlowTcpDstPortCounter) SetStep(value uint32) PatternFlowTcpDstPortCounter { +// SetValue sets the uint32 value in the PatternFlowIcmpv6EchoCode object +func (obj *patternFlowIcmpv6EchoCode) SetValue(value uint32) PatternFlowIcmpv6EchoCode { + obj.SetChoice(PatternFlowIcmpv6EchoCodeChoice.VALUE) + obj.obj.Value = &value + return obj +} + +// description is TBD +// Values returns a []uint32 +func (obj *patternFlowIcmpv6EchoCode) Values() []uint32 { + if obj.obj.Values == nil { + obj.SetValues([]uint32{0}) + } + return obj.obj.Values +} + +// description is TBD +// SetValues sets the []uint32 value in the PatternFlowIcmpv6EchoCode object +func (obj *patternFlowIcmpv6EchoCode) SetValues(value []uint32) PatternFlowIcmpv6EchoCode { + obj.SetChoice(PatternFlowIcmpv6EchoCodeChoice.VALUES) + if obj.obj.Values == nil { + obj.obj.Values = make([]uint32, 0) + } + obj.obj.Values = value - obj.obj.Step = &value return obj } // description is TBD -// Count returns a uint32 -func (obj *patternFlowTcpDstPortCounter) Count() uint32 { +// Increment returns a PatternFlowIcmpv6EchoCodeCounter +func (obj *patternFlowIcmpv6EchoCode) Increment() PatternFlowIcmpv6EchoCodeCounter { + if obj.obj.Increment == nil { + obj.SetChoice(PatternFlowIcmpv6EchoCodeChoice.INCREMENT) + } + if obj.incrementHolder == nil { + obj.incrementHolder = &patternFlowIcmpv6EchoCodeCounter{obj: obj.obj.Increment} + } + return obj.incrementHolder +} - return *obj.obj.Count +// description is TBD +// Increment returns a PatternFlowIcmpv6EchoCodeCounter +func (obj *patternFlowIcmpv6EchoCode) HasIncrement() bool { + return obj.obj.Increment != nil +} + +// description is TBD +// SetIncrement sets the PatternFlowIcmpv6EchoCodeCounter value in the PatternFlowIcmpv6EchoCode object +func (obj *patternFlowIcmpv6EchoCode) SetIncrement(value PatternFlowIcmpv6EchoCodeCounter) PatternFlowIcmpv6EchoCode { + obj.SetChoice(PatternFlowIcmpv6EchoCodeChoice.INCREMENT) + obj.incrementHolder = nil + obj.obj.Increment = value.Msg() + return obj } // description is TBD -// Count returns a uint32 -func (obj *patternFlowTcpDstPortCounter) HasCount() bool { - return obj.obj.Count != nil +// Decrement returns a PatternFlowIcmpv6EchoCodeCounter +func (obj *patternFlowIcmpv6EchoCode) Decrement() PatternFlowIcmpv6EchoCodeCounter { + if obj.obj.Decrement == nil { + obj.SetChoice(PatternFlowIcmpv6EchoCodeChoice.DECREMENT) + } + if obj.decrementHolder == nil { + obj.decrementHolder = &patternFlowIcmpv6EchoCodeCounter{obj: obj.obj.Decrement} + } + return obj.decrementHolder } // description is TBD -// SetCount sets the uint32 value in the PatternFlowTcpDstPortCounter object -func (obj *patternFlowTcpDstPortCounter) SetCount(value uint32) PatternFlowTcpDstPortCounter { +// Decrement returns a PatternFlowIcmpv6EchoCodeCounter +func (obj *patternFlowIcmpv6EchoCode) HasDecrement() bool { + return obj.obj.Decrement != nil +} + +// description is TBD +// SetDecrement sets the PatternFlowIcmpv6EchoCodeCounter value in the PatternFlowIcmpv6EchoCode object +func (obj *patternFlowIcmpv6EchoCode) SetDecrement(value PatternFlowIcmpv6EchoCodeCounter) PatternFlowIcmpv6EchoCode { + obj.SetChoice(PatternFlowIcmpv6EchoCodeChoice.DECREMENT) + obj.decrementHolder = nil + obj.obj.Decrement = value.Msg() - obj.obj.Count = &value return obj } -func (obj *patternFlowTcpDstPortCounter) validateObj(vObj *validation, set_default bool) { +// One or more metric tags can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. +// MetricTags returns a []PatternFlowIcmpv6EchoCodeMetricTag +func (obj *patternFlowIcmpv6EchoCode) MetricTags() PatternFlowIcmpv6EchoCodePatternFlowIcmpv6EchoCodeMetricTagIter { + if len(obj.obj.MetricTags) == 0 { + obj.obj.MetricTags = []*otg.PatternFlowIcmpv6EchoCodeMetricTag{} + } + if obj.metricTagsHolder == nil { + obj.metricTagsHolder = newPatternFlowIcmpv6EchoCodePatternFlowIcmpv6EchoCodeMetricTagIter(&obj.obj.MetricTags).setMsg(obj) + } + return obj.metricTagsHolder +} + +type patternFlowIcmpv6EchoCodePatternFlowIcmpv6EchoCodeMetricTagIter struct { + obj *patternFlowIcmpv6EchoCode + patternFlowIcmpv6EchoCodeMetricTagSlice []PatternFlowIcmpv6EchoCodeMetricTag + fieldPtr *[]*otg.PatternFlowIcmpv6EchoCodeMetricTag +} + +func newPatternFlowIcmpv6EchoCodePatternFlowIcmpv6EchoCodeMetricTagIter(ptr *[]*otg.PatternFlowIcmpv6EchoCodeMetricTag) PatternFlowIcmpv6EchoCodePatternFlowIcmpv6EchoCodeMetricTagIter { + return &patternFlowIcmpv6EchoCodePatternFlowIcmpv6EchoCodeMetricTagIter{fieldPtr: ptr} +} + +type PatternFlowIcmpv6EchoCodePatternFlowIcmpv6EchoCodeMetricTagIter interface { + setMsg(*patternFlowIcmpv6EchoCode) PatternFlowIcmpv6EchoCodePatternFlowIcmpv6EchoCodeMetricTagIter + Items() []PatternFlowIcmpv6EchoCodeMetricTag + Add() PatternFlowIcmpv6EchoCodeMetricTag + Append(items ...PatternFlowIcmpv6EchoCodeMetricTag) PatternFlowIcmpv6EchoCodePatternFlowIcmpv6EchoCodeMetricTagIter + Set(index int, newObj PatternFlowIcmpv6EchoCodeMetricTag) PatternFlowIcmpv6EchoCodePatternFlowIcmpv6EchoCodeMetricTagIter + Clear() PatternFlowIcmpv6EchoCodePatternFlowIcmpv6EchoCodeMetricTagIter + clearHolderSlice() PatternFlowIcmpv6EchoCodePatternFlowIcmpv6EchoCodeMetricTagIter + appendHolderSlice(item PatternFlowIcmpv6EchoCodeMetricTag) PatternFlowIcmpv6EchoCodePatternFlowIcmpv6EchoCodeMetricTagIter +} + +func (obj *patternFlowIcmpv6EchoCodePatternFlowIcmpv6EchoCodeMetricTagIter) setMsg(msg *patternFlowIcmpv6EchoCode) PatternFlowIcmpv6EchoCodePatternFlowIcmpv6EchoCodeMetricTagIter { + obj.clearHolderSlice() + for _, val := range *obj.fieldPtr { + obj.appendHolderSlice(&patternFlowIcmpv6EchoCodeMetricTag{obj: val}) + } + obj.obj = msg + return obj +} + +func (obj *patternFlowIcmpv6EchoCodePatternFlowIcmpv6EchoCodeMetricTagIter) Items() []PatternFlowIcmpv6EchoCodeMetricTag { + return obj.patternFlowIcmpv6EchoCodeMetricTagSlice +} + +func (obj *patternFlowIcmpv6EchoCodePatternFlowIcmpv6EchoCodeMetricTagIter) Add() PatternFlowIcmpv6EchoCodeMetricTag { + newObj := &otg.PatternFlowIcmpv6EchoCodeMetricTag{} + *obj.fieldPtr = append(*obj.fieldPtr, newObj) + newLibObj := &patternFlowIcmpv6EchoCodeMetricTag{obj: newObj} + newLibObj.setDefault() + obj.patternFlowIcmpv6EchoCodeMetricTagSlice = append(obj.patternFlowIcmpv6EchoCodeMetricTagSlice, newLibObj) + return newLibObj +} + +func (obj *patternFlowIcmpv6EchoCodePatternFlowIcmpv6EchoCodeMetricTagIter) Append(items ...PatternFlowIcmpv6EchoCodeMetricTag) PatternFlowIcmpv6EchoCodePatternFlowIcmpv6EchoCodeMetricTagIter { + for _, item := range items { + newObj := item.Msg() + *obj.fieldPtr = append(*obj.fieldPtr, newObj) + obj.patternFlowIcmpv6EchoCodeMetricTagSlice = append(obj.patternFlowIcmpv6EchoCodeMetricTagSlice, item) + } + return obj +} + +func (obj *patternFlowIcmpv6EchoCodePatternFlowIcmpv6EchoCodeMetricTagIter) Set(index int, newObj PatternFlowIcmpv6EchoCodeMetricTag) PatternFlowIcmpv6EchoCodePatternFlowIcmpv6EchoCodeMetricTagIter { + (*obj.fieldPtr)[index] = newObj.Msg() + obj.patternFlowIcmpv6EchoCodeMetricTagSlice[index] = newObj + return obj +} +func (obj *patternFlowIcmpv6EchoCodePatternFlowIcmpv6EchoCodeMetricTagIter) Clear() PatternFlowIcmpv6EchoCodePatternFlowIcmpv6EchoCodeMetricTagIter { + if len(*obj.fieldPtr) > 0 { + *obj.fieldPtr = []*otg.PatternFlowIcmpv6EchoCodeMetricTag{} + obj.patternFlowIcmpv6EchoCodeMetricTagSlice = []PatternFlowIcmpv6EchoCodeMetricTag{} + } + return obj +} +func (obj *patternFlowIcmpv6EchoCodePatternFlowIcmpv6EchoCodeMetricTagIter) clearHolderSlice() PatternFlowIcmpv6EchoCodePatternFlowIcmpv6EchoCodeMetricTagIter { + if len(obj.patternFlowIcmpv6EchoCodeMetricTagSlice) > 0 { + obj.patternFlowIcmpv6EchoCodeMetricTagSlice = []PatternFlowIcmpv6EchoCodeMetricTag{} + } + return obj +} +func (obj *patternFlowIcmpv6EchoCodePatternFlowIcmpv6EchoCodeMetricTagIter) appendHolderSlice(item PatternFlowIcmpv6EchoCodeMetricTag) PatternFlowIcmpv6EchoCodePatternFlowIcmpv6EchoCodeMetricTagIter { + obj.patternFlowIcmpv6EchoCodeMetricTagSlice = append(obj.patternFlowIcmpv6EchoCodeMetricTagSlice, item) + return obj +} + +func (obj *patternFlowIcmpv6EchoCode) validateObj(vObj *validation, set_default bool) { if set_default { obj.setDefault() } - if obj.obj.Start != nil { + if obj.obj.Value != nil { - if *obj.obj.Start > 65535 { + if *obj.obj.Value > 255 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowTcpDstPortCounter.Start <= 65535 but Got %d", *obj.obj.Start)) + fmt.Sprintf("0 <= PatternFlowIcmpv6EchoCode.Value <= 255 but Got %d", *obj.obj.Value)) } } - if obj.obj.Step != nil { + if obj.obj.Values != nil { + + for _, item := range obj.obj.Values { + if item > 255 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("min(uint32) <= PatternFlowIcmpv6EchoCode.Values <= 255 but Got %d", item)) + } - if *obj.obj.Step > 65535 { - vObj.validationErrors = append( - vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowTcpDstPortCounter.Step <= 65535 but Got %d", *obj.obj.Step)) } } - if obj.obj.Count != nil { + if obj.obj.Increment != nil { - if *obj.obj.Count > 65535 { - vObj.validationErrors = append( - vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowTcpDstPortCounter.Count <= 65535 but Got %d", *obj.obj.Count)) + obj.Increment().validateObj(vObj, set_default) + } + + if obj.obj.Decrement != nil { + + obj.Decrement().validateObj(vObj, set_default) + } + + if len(obj.obj.MetricTags) != 0 { + + if set_default { + obj.MetricTags().clearHolderSlice() + for _, item := range obj.obj.MetricTags { + obj.MetricTags().appendHolderSlice(&patternFlowIcmpv6EchoCodeMetricTag{obj: item}) + } + } + for _, item := range obj.MetricTags().Items() { + item.validateObj(vObj, set_default) } } } -func (obj *patternFlowTcpDstPortCounter) setDefault() { - if obj.obj.Start == nil { - obj.SetStart(0) - } - if obj.obj.Step == nil { - obj.SetStep(1) - } - if obj.obj.Count == nil { - obj.SetCount(1) +func (obj *patternFlowIcmpv6EchoCode) setDefault() { + if obj.obj.Choice == nil { + obj.SetChoice(PatternFlowIcmpv6EchoCodeChoice.VALUE) + } } -// ***** PatternFlowTcpDstPortMetricTag ***** -type patternFlowTcpDstPortMetricTag struct { +// ***** PatternFlowIcmpv6EchoIdentifier ***** +type patternFlowIcmpv6EchoIdentifier struct { validation - obj *otg.PatternFlowTcpDstPortMetricTag + obj *otg.PatternFlowIcmpv6EchoIdentifier + incrementHolder PatternFlowIcmpv6EchoIdentifierCounter + decrementHolder PatternFlowIcmpv6EchoIdentifierCounter + metricTagsHolder PatternFlowIcmpv6EchoIdentifierPatternFlowIcmpv6EchoIdentifierMetricTagIter } -func NewPatternFlowTcpDstPortMetricTag() PatternFlowTcpDstPortMetricTag { - obj := patternFlowTcpDstPortMetricTag{obj: &otg.PatternFlowTcpDstPortMetricTag{}} +func NewPatternFlowIcmpv6EchoIdentifier() PatternFlowIcmpv6EchoIdentifier { + obj := patternFlowIcmpv6EchoIdentifier{obj: &otg.PatternFlowIcmpv6EchoIdentifier{}} obj.setDefault() return &obj } -func (obj *patternFlowTcpDstPortMetricTag) Msg() *otg.PatternFlowTcpDstPortMetricTag { +func (obj *patternFlowIcmpv6EchoIdentifier) Msg() *otg.PatternFlowIcmpv6EchoIdentifier { return obj.obj } -func (obj *patternFlowTcpDstPortMetricTag) SetMsg(msg *otg.PatternFlowTcpDstPortMetricTag) PatternFlowTcpDstPortMetricTag { - +func (obj *patternFlowIcmpv6EchoIdentifier) SetMsg(msg *otg.PatternFlowIcmpv6EchoIdentifier) PatternFlowIcmpv6EchoIdentifier { + obj.setNil() proto.Merge(obj.obj, msg) return obj } -func (obj *patternFlowTcpDstPortMetricTag) ToProto() (*otg.PatternFlowTcpDstPortMetricTag, error) { +func (obj *patternFlowIcmpv6EchoIdentifier) ToProto() (*otg.PatternFlowIcmpv6EchoIdentifier, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -221699,7 +265911,7 @@ func (obj *patternFlowTcpDstPortMetricTag) ToProto() (*otg.PatternFlowTcpDstPort return obj.Msg(), nil } -func (obj *patternFlowTcpDstPortMetricTag) FromProto(msg *otg.PatternFlowTcpDstPortMetricTag) (PatternFlowTcpDstPortMetricTag, error) { +func (obj *patternFlowIcmpv6EchoIdentifier) FromProto(msg *otg.PatternFlowIcmpv6EchoIdentifier) (PatternFlowIcmpv6EchoIdentifier, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -221708,7 +265920,7 @@ func (obj *patternFlowTcpDstPortMetricTag) FromProto(msg *otg.PatternFlowTcpDstP return newObj, nil } -func (obj *patternFlowTcpDstPortMetricTag) ToPbText() (string, error) { +func (obj *patternFlowIcmpv6EchoIdentifier) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -221720,12 +265932,12 @@ func (obj *patternFlowTcpDstPortMetricTag) ToPbText() (string, error) { return string(protoMarshal), nil } -func (obj *patternFlowTcpDstPortMetricTag) FromPbText(value string) error { +func (obj *patternFlowIcmpv6EchoIdentifier) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj } - + obj.setNil() vErr := obj.validateToAndFrom() if vErr != nil { return vErr @@ -221733,7 +265945,7 @@ func (obj *patternFlowTcpDstPortMetricTag) FromPbText(value string) error { return retObj } -func (obj *patternFlowTcpDstPortMetricTag) ToYaml() (string, error) { +func (obj *patternFlowIcmpv6EchoIdentifier) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -221754,7 +265966,7 @@ func (obj *patternFlowTcpDstPortMetricTag) ToYaml() (string, error) { return string(data), nil } -func (obj *patternFlowTcpDstPortMetricTag) FromYaml(value string) error { +func (obj *patternFlowIcmpv6EchoIdentifier) FromYaml(value string) error { if value == "" { value = "{}" } @@ -221771,7 +265983,7 @@ func (obj *patternFlowTcpDstPortMetricTag) FromYaml(value string) error { return fmt.Errorf("unmarshal error %s", strings.Replace( uError.Error(), "\u00a0", " ", -1)[7:]) } - + obj.setNil() vErr := obj.validateToAndFrom() if vErr != nil { return vErr @@ -221779,7 +265991,7 @@ func (obj *patternFlowTcpDstPortMetricTag) FromYaml(value string) error { return nil } -func (obj *patternFlowTcpDstPortMetricTag) ToJson() (string, error) { +func (obj *patternFlowIcmpv6EchoIdentifier) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -221797,7 +266009,7 @@ func (obj *patternFlowTcpDstPortMetricTag) ToJson() (string, error) { return string(data), nil } -func (obj *patternFlowTcpDstPortMetricTag) FromJson(value string) error { +func (obj *patternFlowIcmpv6EchoIdentifier) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -221810,7 +266022,7 @@ func (obj *patternFlowTcpDstPortMetricTag) FromJson(value string) error { return fmt.Errorf("unmarshal error %s", strings.Replace( uError.Error(), "\u00a0", " ", -1)[7:]) } - + obj.setNil() err := obj.validateToAndFrom() if err != nil { return err @@ -221818,19 +266030,19 @@ func (obj *patternFlowTcpDstPortMetricTag) FromJson(value string) error { return nil } -func (obj *patternFlowTcpDstPortMetricTag) validateToAndFrom() error { +func (obj *patternFlowIcmpv6EchoIdentifier) validateToAndFrom() error { // emptyVars() obj.validateObj(&obj.validation, true) return obj.validationResult() } -func (obj *patternFlowTcpDstPortMetricTag) Validate() error { +func (obj *patternFlowIcmpv6EchoIdentifier) Validate() error { // emptyVars() obj.validateObj(&obj.validation, false) return obj.validationResult() } -func (obj *patternFlowTcpDstPortMetricTag) String() string { +func (obj *patternFlowIcmpv6EchoIdentifier) String() string { str, err := obj.ToYaml() if err != nil { return err.Error() @@ -221838,12 +266050,12 @@ func (obj *patternFlowTcpDstPortMetricTag) String() string { return str } -func (obj *patternFlowTcpDstPortMetricTag) Clone() (PatternFlowTcpDstPortMetricTag, error) { +func (obj *patternFlowIcmpv6EchoIdentifier) Clone() (PatternFlowIcmpv6EchoIdentifier, error) { vErr := obj.Validate() if vErr != nil { return nil, vErr } - newObj := NewPatternFlowTcpDstPortMetricTag() + newObj := NewPatternFlowIcmpv6EchoIdentifier() data, err := proto.Marshal(obj.Msg()) if err != nil { return nil, err @@ -221855,183 +266067,426 @@ func (obj *patternFlowTcpDstPortMetricTag) Clone() (PatternFlowTcpDstPortMetricT return newObj, nil } -// PatternFlowTcpDstPortMetricTag is metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. -type PatternFlowTcpDstPortMetricTag interface { +func (obj *patternFlowIcmpv6EchoIdentifier) setNil() { + obj.incrementHolder = nil + obj.decrementHolder = nil + obj.metricTagsHolder = nil + obj.validationErrors = nil + obj.warnings = nil + obj.constraints = make(map[string]map[string]Constraints) +} + +// PatternFlowIcmpv6EchoIdentifier is iCMPv6 echo identifier +type PatternFlowIcmpv6EchoIdentifier interface { Validation - // Msg marshals PatternFlowTcpDstPortMetricTag to protobuf object *otg.PatternFlowTcpDstPortMetricTag + // Msg marshals PatternFlowIcmpv6EchoIdentifier to protobuf object *otg.PatternFlowIcmpv6EchoIdentifier // and doesn't set defaults - Msg() *otg.PatternFlowTcpDstPortMetricTag - // SetMsg unmarshals PatternFlowTcpDstPortMetricTag from protobuf object *otg.PatternFlowTcpDstPortMetricTag + Msg() *otg.PatternFlowIcmpv6EchoIdentifier + // SetMsg unmarshals PatternFlowIcmpv6EchoIdentifier from protobuf object *otg.PatternFlowIcmpv6EchoIdentifier // and doesn't set defaults - SetMsg(*otg.PatternFlowTcpDstPortMetricTag) PatternFlowTcpDstPortMetricTag - // ToProto marshals PatternFlowTcpDstPortMetricTag to protobuf object *otg.PatternFlowTcpDstPortMetricTag - ToProto() (*otg.PatternFlowTcpDstPortMetricTag, error) - // ToPbText marshals PatternFlowTcpDstPortMetricTag to protobuf text + SetMsg(*otg.PatternFlowIcmpv6EchoIdentifier) PatternFlowIcmpv6EchoIdentifier + // ToProto marshals PatternFlowIcmpv6EchoIdentifier to protobuf object *otg.PatternFlowIcmpv6EchoIdentifier + ToProto() (*otg.PatternFlowIcmpv6EchoIdentifier, error) + // ToPbText marshals PatternFlowIcmpv6EchoIdentifier to protobuf text ToPbText() (string, error) - // ToYaml marshals PatternFlowTcpDstPortMetricTag to YAML text + // ToYaml marshals PatternFlowIcmpv6EchoIdentifier to YAML text ToYaml() (string, error) - // ToJson marshals PatternFlowTcpDstPortMetricTag to JSON text + // ToJson marshals PatternFlowIcmpv6EchoIdentifier to JSON text ToJson() (string, error) - // FromProto unmarshals PatternFlowTcpDstPortMetricTag from protobuf object *otg.PatternFlowTcpDstPortMetricTag - FromProto(msg *otg.PatternFlowTcpDstPortMetricTag) (PatternFlowTcpDstPortMetricTag, error) - // FromPbText unmarshals PatternFlowTcpDstPortMetricTag from protobuf text + // FromProto unmarshals PatternFlowIcmpv6EchoIdentifier from protobuf object *otg.PatternFlowIcmpv6EchoIdentifier + FromProto(msg *otg.PatternFlowIcmpv6EchoIdentifier) (PatternFlowIcmpv6EchoIdentifier, error) + // FromPbText unmarshals PatternFlowIcmpv6EchoIdentifier from protobuf text FromPbText(value string) error - // FromYaml unmarshals PatternFlowTcpDstPortMetricTag from YAML text + // FromYaml unmarshals PatternFlowIcmpv6EchoIdentifier from YAML text FromYaml(value string) error - // FromJson unmarshals PatternFlowTcpDstPortMetricTag from JSON text + // FromJson unmarshals PatternFlowIcmpv6EchoIdentifier from JSON text FromJson(value string) error - // Validate validates PatternFlowTcpDstPortMetricTag + // Validate validates PatternFlowIcmpv6EchoIdentifier Validate() error // A stringer function String() string // Clones the object - Clone() (PatternFlowTcpDstPortMetricTag, error) + Clone() (PatternFlowIcmpv6EchoIdentifier, error) validateToAndFrom() error validateObj(vObj *validation, set_default bool) setDefault() - // Name returns string, set in PatternFlowTcpDstPortMetricTag. - Name() string - // SetName assigns string provided by user to PatternFlowTcpDstPortMetricTag - SetName(value string) PatternFlowTcpDstPortMetricTag - // Offset returns uint32, set in PatternFlowTcpDstPortMetricTag. - Offset() uint32 - // SetOffset assigns uint32 provided by user to PatternFlowTcpDstPortMetricTag - SetOffset(value uint32) PatternFlowTcpDstPortMetricTag - // HasOffset checks if Offset has been set in PatternFlowTcpDstPortMetricTag - HasOffset() bool - // Length returns uint32, set in PatternFlowTcpDstPortMetricTag. - Length() uint32 - // SetLength assigns uint32 provided by user to PatternFlowTcpDstPortMetricTag - SetLength(value uint32) PatternFlowTcpDstPortMetricTag - // HasLength checks if Length has been set in PatternFlowTcpDstPortMetricTag - HasLength() bool + // Choice returns PatternFlowIcmpv6EchoIdentifierChoiceEnum, set in PatternFlowIcmpv6EchoIdentifier + Choice() PatternFlowIcmpv6EchoIdentifierChoiceEnum + // SetChoice assigns PatternFlowIcmpv6EchoIdentifierChoiceEnum provided by user to PatternFlowIcmpv6EchoIdentifier + SetChoice(value PatternFlowIcmpv6EchoIdentifierChoiceEnum) PatternFlowIcmpv6EchoIdentifier + // HasChoice checks if Choice has been set in PatternFlowIcmpv6EchoIdentifier + HasChoice() bool + // Value returns uint32, set in PatternFlowIcmpv6EchoIdentifier. + Value() uint32 + // SetValue assigns uint32 provided by user to PatternFlowIcmpv6EchoIdentifier + SetValue(value uint32) PatternFlowIcmpv6EchoIdentifier + // HasValue checks if Value has been set in PatternFlowIcmpv6EchoIdentifier + HasValue() bool + // Values returns []uint32, set in PatternFlowIcmpv6EchoIdentifier. + Values() []uint32 + // SetValues assigns []uint32 provided by user to PatternFlowIcmpv6EchoIdentifier + SetValues(value []uint32) PatternFlowIcmpv6EchoIdentifier + // Increment returns PatternFlowIcmpv6EchoIdentifierCounter, set in PatternFlowIcmpv6EchoIdentifier. + // PatternFlowIcmpv6EchoIdentifierCounter is integer counter pattern + Increment() PatternFlowIcmpv6EchoIdentifierCounter + // SetIncrement assigns PatternFlowIcmpv6EchoIdentifierCounter provided by user to PatternFlowIcmpv6EchoIdentifier. + // PatternFlowIcmpv6EchoIdentifierCounter is integer counter pattern + SetIncrement(value PatternFlowIcmpv6EchoIdentifierCounter) PatternFlowIcmpv6EchoIdentifier + // HasIncrement checks if Increment has been set in PatternFlowIcmpv6EchoIdentifier + HasIncrement() bool + // Decrement returns PatternFlowIcmpv6EchoIdentifierCounter, set in PatternFlowIcmpv6EchoIdentifier. + // PatternFlowIcmpv6EchoIdentifierCounter is integer counter pattern + Decrement() PatternFlowIcmpv6EchoIdentifierCounter + // SetDecrement assigns PatternFlowIcmpv6EchoIdentifierCounter provided by user to PatternFlowIcmpv6EchoIdentifier. + // PatternFlowIcmpv6EchoIdentifierCounter is integer counter pattern + SetDecrement(value PatternFlowIcmpv6EchoIdentifierCounter) PatternFlowIcmpv6EchoIdentifier + // HasDecrement checks if Decrement has been set in PatternFlowIcmpv6EchoIdentifier + HasDecrement() bool + // MetricTags returns PatternFlowIcmpv6EchoIdentifierPatternFlowIcmpv6EchoIdentifierMetricTagIterIter, set in PatternFlowIcmpv6EchoIdentifier + MetricTags() PatternFlowIcmpv6EchoIdentifierPatternFlowIcmpv6EchoIdentifierMetricTagIter + setNil() } -// Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field -// Name returns a string -func (obj *patternFlowTcpDstPortMetricTag) Name() string { +type PatternFlowIcmpv6EchoIdentifierChoiceEnum string - return *obj.obj.Name +// Enum of Choice on PatternFlowIcmpv6EchoIdentifier +var PatternFlowIcmpv6EchoIdentifierChoice = struct { + VALUE PatternFlowIcmpv6EchoIdentifierChoiceEnum + VALUES PatternFlowIcmpv6EchoIdentifierChoiceEnum + INCREMENT PatternFlowIcmpv6EchoIdentifierChoiceEnum + DECREMENT PatternFlowIcmpv6EchoIdentifierChoiceEnum +}{ + VALUE: PatternFlowIcmpv6EchoIdentifierChoiceEnum("value"), + VALUES: PatternFlowIcmpv6EchoIdentifierChoiceEnum("values"), + INCREMENT: PatternFlowIcmpv6EchoIdentifierChoiceEnum("increment"), + DECREMENT: PatternFlowIcmpv6EchoIdentifierChoiceEnum("decrement"), +} + +func (obj *patternFlowIcmpv6EchoIdentifier) Choice() PatternFlowIcmpv6EchoIdentifierChoiceEnum { + return PatternFlowIcmpv6EchoIdentifierChoiceEnum(obj.obj.Choice.Enum().String()) +} + +// description is TBD +// Choice returns a string +func (obj *patternFlowIcmpv6EchoIdentifier) HasChoice() bool { + return obj.obj.Choice != nil +} + +func (obj *patternFlowIcmpv6EchoIdentifier) SetChoice(value PatternFlowIcmpv6EchoIdentifierChoiceEnum) PatternFlowIcmpv6EchoIdentifier { + intValue, ok := otg.PatternFlowIcmpv6EchoIdentifier_Choice_Enum_value[string(value)] + if !ok { + obj.validationErrors = append(obj.validationErrors, fmt.Sprintf( + "%s is not a valid choice on PatternFlowIcmpv6EchoIdentifierChoiceEnum", string(value))) + return obj + } + enumValue := otg.PatternFlowIcmpv6EchoIdentifier_Choice_Enum(intValue) + obj.obj.Choice = &enumValue + obj.obj.Decrement = nil + obj.decrementHolder = nil + obj.obj.Increment = nil + obj.incrementHolder = nil + obj.obj.Values = nil + obj.obj.Value = nil + + if value == PatternFlowIcmpv6EchoIdentifierChoice.VALUE { + defaultValue := uint32(0) + obj.obj.Value = &defaultValue + } + + if value == PatternFlowIcmpv6EchoIdentifierChoice.VALUES { + defaultValue := []uint32{0} + obj.obj.Values = defaultValue + } + + if value == PatternFlowIcmpv6EchoIdentifierChoice.INCREMENT { + obj.obj.Increment = NewPatternFlowIcmpv6EchoIdentifierCounter().Msg() + } + + if value == PatternFlowIcmpv6EchoIdentifierChoice.DECREMENT { + obj.obj.Decrement = NewPatternFlowIcmpv6EchoIdentifierCounter().Msg() + } + + return obj +} + +// description is TBD +// Value returns a uint32 +func (obj *patternFlowIcmpv6EchoIdentifier) Value() uint32 { + + if obj.obj.Value == nil { + obj.SetChoice(PatternFlowIcmpv6EchoIdentifierChoice.VALUE) + } + + return *obj.obj.Value + +} + +// description is TBD +// Value returns a uint32 +func (obj *patternFlowIcmpv6EchoIdentifier) HasValue() bool { + return obj.obj.Value != nil +} + +// description is TBD +// SetValue sets the uint32 value in the PatternFlowIcmpv6EchoIdentifier object +func (obj *patternFlowIcmpv6EchoIdentifier) SetValue(value uint32) PatternFlowIcmpv6EchoIdentifier { + obj.SetChoice(PatternFlowIcmpv6EchoIdentifierChoice.VALUE) + obj.obj.Value = &value + return obj +} + +// description is TBD +// Values returns a []uint32 +func (obj *patternFlowIcmpv6EchoIdentifier) Values() []uint32 { + if obj.obj.Values == nil { + obj.SetValues([]uint32{0}) + } + return obj.obj.Values +} + +// description is TBD +// SetValues sets the []uint32 value in the PatternFlowIcmpv6EchoIdentifier object +func (obj *patternFlowIcmpv6EchoIdentifier) SetValues(value []uint32) PatternFlowIcmpv6EchoIdentifier { + obj.SetChoice(PatternFlowIcmpv6EchoIdentifierChoice.VALUES) + if obj.obj.Values == nil { + obj.obj.Values = make([]uint32, 0) + } + obj.obj.Values = value + + return obj +} + +// description is TBD +// Increment returns a PatternFlowIcmpv6EchoIdentifierCounter +func (obj *patternFlowIcmpv6EchoIdentifier) Increment() PatternFlowIcmpv6EchoIdentifierCounter { + if obj.obj.Increment == nil { + obj.SetChoice(PatternFlowIcmpv6EchoIdentifierChoice.INCREMENT) + } + if obj.incrementHolder == nil { + obj.incrementHolder = &patternFlowIcmpv6EchoIdentifierCounter{obj: obj.obj.Increment} + } + return obj.incrementHolder +} + +// description is TBD +// Increment returns a PatternFlowIcmpv6EchoIdentifierCounter +func (obj *patternFlowIcmpv6EchoIdentifier) HasIncrement() bool { + return obj.obj.Increment != nil +} + +// description is TBD +// SetIncrement sets the PatternFlowIcmpv6EchoIdentifierCounter value in the PatternFlowIcmpv6EchoIdentifier object +func (obj *patternFlowIcmpv6EchoIdentifier) SetIncrement(value PatternFlowIcmpv6EchoIdentifierCounter) PatternFlowIcmpv6EchoIdentifier { + obj.SetChoice(PatternFlowIcmpv6EchoIdentifierChoice.INCREMENT) + obj.incrementHolder = nil + obj.obj.Increment = value.Msg() + + return obj +} + +// description is TBD +// Decrement returns a PatternFlowIcmpv6EchoIdentifierCounter +func (obj *patternFlowIcmpv6EchoIdentifier) Decrement() PatternFlowIcmpv6EchoIdentifierCounter { + if obj.obj.Decrement == nil { + obj.SetChoice(PatternFlowIcmpv6EchoIdentifierChoice.DECREMENT) + } + if obj.decrementHolder == nil { + obj.decrementHolder = &patternFlowIcmpv6EchoIdentifierCounter{obj: obj.obj.Decrement} + } + return obj.decrementHolder +} + +// description is TBD +// Decrement returns a PatternFlowIcmpv6EchoIdentifierCounter +func (obj *patternFlowIcmpv6EchoIdentifier) HasDecrement() bool { + return obj.obj.Decrement != nil +} + +// description is TBD +// SetDecrement sets the PatternFlowIcmpv6EchoIdentifierCounter value in the PatternFlowIcmpv6EchoIdentifier object +func (obj *patternFlowIcmpv6EchoIdentifier) SetDecrement(value PatternFlowIcmpv6EchoIdentifierCounter) PatternFlowIcmpv6EchoIdentifier { + obj.SetChoice(PatternFlowIcmpv6EchoIdentifierChoice.DECREMENT) + obj.decrementHolder = nil + obj.obj.Decrement = value.Msg() + + return obj +} + +// One or more metric tags can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. +// MetricTags returns a []PatternFlowIcmpv6EchoIdentifierMetricTag +func (obj *patternFlowIcmpv6EchoIdentifier) MetricTags() PatternFlowIcmpv6EchoIdentifierPatternFlowIcmpv6EchoIdentifierMetricTagIter { + if len(obj.obj.MetricTags) == 0 { + obj.obj.MetricTags = []*otg.PatternFlowIcmpv6EchoIdentifierMetricTag{} + } + if obj.metricTagsHolder == nil { + obj.metricTagsHolder = newPatternFlowIcmpv6EchoIdentifierPatternFlowIcmpv6EchoIdentifierMetricTagIter(&obj.obj.MetricTags).setMsg(obj) + } + return obj.metricTagsHolder +} +type patternFlowIcmpv6EchoIdentifierPatternFlowIcmpv6EchoIdentifierMetricTagIter struct { + obj *patternFlowIcmpv6EchoIdentifier + patternFlowIcmpv6EchoIdentifierMetricTagSlice []PatternFlowIcmpv6EchoIdentifierMetricTag + fieldPtr *[]*otg.PatternFlowIcmpv6EchoIdentifierMetricTag +} + +func newPatternFlowIcmpv6EchoIdentifierPatternFlowIcmpv6EchoIdentifierMetricTagIter(ptr *[]*otg.PatternFlowIcmpv6EchoIdentifierMetricTag) PatternFlowIcmpv6EchoIdentifierPatternFlowIcmpv6EchoIdentifierMetricTagIter { + return &patternFlowIcmpv6EchoIdentifierPatternFlowIcmpv6EchoIdentifierMetricTagIter{fieldPtr: ptr} +} + +type PatternFlowIcmpv6EchoIdentifierPatternFlowIcmpv6EchoIdentifierMetricTagIter interface { + setMsg(*patternFlowIcmpv6EchoIdentifier) PatternFlowIcmpv6EchoIdentifierPatternFlowIcmpv6EchoIdentifierMetricTagIter + Items() []PatternFlowIcmpv6EchoIdentifierMetricTag + Add() PatternFlowIcmpv6EchoIdentifierMetricTag + Append(items ...PatternFlowIcmpv6EchoIdentifierMetricTag) PatternFlowIcmpv6EchoIdentifierPatternFlowIcmpv6EchoIdentifierMetricTagIter + Set(index int, newObj PatternFlowIcmpv6EchoIdentifierMetricTag) PatternFlowIcmpv6EchoIdentifierPatternFlowIcmpv6EchoIdentifierMetricTagIter + Clear() PatternFlowIcmpv6EchoIdentifierPatternFlowIcmpv6EchoIdentifierMetricTagIter + clearHolderSlice() PatternFlowIcmpv6EchoIdentifierPatternFlowIcmpv6EchoIdentifierMetricTagIter + appendHolderSlice(item PatternFlowIcmpv6EchoIdentifierMetricTag) PatternFlowIcmpv6EchoIdentifierPatternFlowIcmpv6EchoIdentifierMetricTagIter } -// Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field -// SetName sets the string value in the PatternFlowTcpDstPortMetricTag object -func (obj *patternFlowTcpDstPortMetricTag) SetName(value string) PatternFlowTcpDstPortMetricTag { - - obj.obj.Name = &value +func (obj *patternFlowIcmpv6EchoIdentifierPatternFlowIcmpv6EchoIdentifierMetricTagIter) setMsg(msg *patternFlowIcmpv6EchoIdentifier) PatternFlowIcmpv6EchoIdentifierPatternFlowIcmpv6EchoIdentifierMetricTagIter { + obj.clearHolderSlice() + for _, val := range *obj.fieldPtr { + obj.appendHolderSlice(&patternFlowIcmpv6EchoIdentifierMetricTag{obj: val}) + } + obj.obj = msg return obj } -// Offset in bits relative to start of corresponding header field -// Offset returns a uint32 -func (obj *patternFlowTcpDstPortMetricTag) Offset() uint32 { - - return *obj.obj.Offset - +func (obj *patternFlowIcmpv6EchoIdentifierPatternFlowIcmpv6EchoIdentifierMetricTagIter) Items() []PatternFlowIcmpv6EchoIdentifierMetricTag { + return obj.patternFlowIcmpv6EchoIdentifierMetricTagSlice } -// Offset in bits relative to start of corresponding header field -// Offset returns a uint32 -func (obj *patternFlowTcpDstPortMetricTag) HasOffset() bool { - return obj.obj.Offset != nil +func (obj *patternFlowIcmpv6EchoIdentifierPatternFlowIcmpv6EchoIdentifierMetricTagIter) Add() PatternFlowIcmpv6EchoIdentifierMetricTag { + newObj := &otg.PatternFlowIcmpv6EchoIdentifierMetricTag{} + *obj.fieldPtr = append(*obj.fieldPtr, newObj) + newLibObj := &patternFlowIcmpv6EchoIdentifierMetricTag{obj: newObj} + newLibObj.setDefault() + obj.patternFlowIcmpv6EchoIdentifierMetricTagSlice = append(obj.patternFlowIcmpv6EchoIdentifierMetricTagSlice, newLibObj) + return newLibObj } -// Offset in bits relative to start of corresponding header field -// SetOffset sets the uint32 value in the PatternFlowTcpDstPortMetricTag object -func (obj *patternFlowTcpDstPortMetricTag) SetOffset(value uint32) PatternFlowTcpDstPortMetricTag { - - obj.obj.Offset = &value +func (obj *patternFlowIcmpv6EchoIdentifierPatternFlowIcmpv6EchoIdentifierMetricTagIter) Append(items ...PatternFlowIcmpv6EchoIdentifierMetricTag) PatternFlowIcmpv6EchoIdentifierPatternFlowIcmpv6EchoIdentifierMetricTagIter { + for _, item := range items { + newObj := item.Msg() + *obj.fieldPtr = append(*obj.fieldPtr, newObj) + obj.patternFlowIcmpv6EchoIdentifierMetricTagSlice = append(obj.patternFlowIcmpv6EchoIdentifierMetricTagSlice, item) + } return obj } -// Number of bits to track for metrics starting from configured offset of corresponding header field -// Length returns a uint32 -func (obj *patternFlowTcpDstPortMetricTag) Length() uint32 { - - return *obj.obj.Length - +func (obj *patternFlowIcmpv6EchoIdentifierPatternFlowIcmpv6EchoIdentifierMetricTagIter) Set(index int, newObj PatternFlowIcmpv6EchoIdentifierMetricTag) PatternFlowIcmpv6EchoIdentifierPatternFlowIcmpv6EchoIdentifierMetricTagIter { + (*obj.fieldPtr)[index] = newObj.Msg() + obj.patternFlowIcmpv6EchoIdentifierMetricTagSlice[index] = newObj + return obj } - -// Number of bits to track for metrics starting from configured offset of corresponding header field -// Length returns a uint32 -func (obj *patternFlowTcpDstPortMetricTag) HasLength() bool { - return obj.obj.Length != nil +func (obj *patternFlowIcmpv6EchoIdentifierPatternFlowIcmpv6EchoIdentifierMetricTagIter) Clear() PatternFlowIcmpv6EchoIdentifierPatternFlowIcmpv6EchoIdentifierMetricTagIter { + if len(*obj.fieldPtr) > 0 { + *obj.fieldPtr = []*otg.PatternFlowIcmpv6EchoIdentifierMetricTag{} + obj.patternFlowIcmpv6EchoIdentifierMetricTagSlice = []PatternFlowIcmpv6EchoIdentifierMetricTag{} + } + return obj } - -// Number of bits to track for metrics starting from configured offset of corresponding header field -// SetLength sets the uint32 value in the PatternFlowTcpDstPortMetricTag object -func (obj *patternFlowTcpDstPortMetricTag) SetLength(value uint32) PatternFlowTcpDstPortMetricTag { - - obj.obj.Length = &value +func (obj *patternFlowIcmpv6EchoIdentifierPatternFlowIcmpv6EchoIdentifierMetricTagIter) clearHolderSlice() PatternFlowIcmpv6EchoIdentifierPatternFlowIcmpv6EchoIdentifierMetricTagIter { + if len(obj.patternFlowIcmpv6EchoIdentifierMetricTagSlice) > 0 { + obj.patternFlowIcmpv6EchoIdentifierMetricTagSlice = []PatternFlowIcmpv6EchoIdentifierMetricTag{} + } + return obj +} +func (obj *patternFlowIcmpv6EchoIdentifierPatternFlowIcmpv6EchoIdentifierMetricTagIter) appendHolderSlice(item PatternFlowIcmpv6EchoIdentifierMetricTag) PatternFlowIcmpv6EchoIdentifierPatternFlowIcmpv6EchoIdentifierMetricTagIter { + obj.patternFlowIcmpv6EchoIdentifierMetricTagSlice = append(obj.patternFlowIcmpv6EchoIdentifierMetricTagSlice, item) return obj } -func (obj *patternFlowTcpDstPortMetricTag) validateObj(vObj *validation, set_default bool) { +func (obj *patternFlowIcmpv6EchoIdentifier) validateObj(vObj *validation, set_default bool) { if set_default { obj.setDefault() } - // Name is required - if obj.obj.Name == nil { - vObj.validationErrors = append(vObj.validationErrors, "Name is required field on interface PatternFlowTcpDstPortMetricTag") - } - - if obj.obj.Offset != nil { + if obj.obj.Value != nil { - if *obj.obj.Offset > 15 { + if *obj.obj.Value > 65535 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowTcpDstPortMetricTag.Offset <= 15 but Got %d", *obj.obj.Offset)) + fmt.Sprintf("0 <= PatternFlowIcmpv6EchoIdentifier.Value <= 65535 but Got %d", *obj.obj.Value)) } } - if obj.obj.Length != nil { + if obj.obj.Values != nil { + + for _, item := range obj.obj.Values { + if item > 65535 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("min(uint32) <= PatternFlowIcmpv6EchoIdentifier.Values <= 65535 but Got %d", item)) + } - if *obj.obj.Length < 1 || *obj.obj.Length > 16 { - vObj.validationErrors = append( - vObj.validationErrors, - fmt.Sprintf("1 <= PatternFlowTcpDstPortMetricTag.Length <= 16 but Got %d", *obj.obj.Length)) } } -} + if obj.obj.Increment != nil { -func (obj *patternFlowTcpDstPortMetricTag) setDefault() { - if obj.obj.Offset == nil { - obj.SetOffset(0) + obj.Increment().validateObj(vObj, set_default) } - if obj.obj.Length == nil { - obj.SetLength(16) + + if obj.obj.Decrement != nil { + + obj.Decrement().validateObj(vObj, set_default) + } + + if len(obj.obj.MetricTags) != 0 { + + if set_default { + obj.MetricTags().clearHolderSlice() + for _, item := range obj.obj.MetricTags { + obj.MetricTags().appendHolderSlice(&patternFlowIcmpv6EchoIdentifierMetricTag{obj: item}) + } + } + for _, item := range obj.MetricTags().Items() { + item.validateObj(vObj, set_default) + } + } } -// ***** PatternFlowTcpSeqNumCounter ***** -type patternFlowTcpSeqNumCounter struct { +func (obj *patternFlowIcmpv6EchoIdentifier) setDefault() { + if obj.obj.Choice == nil { + obj.SetChoice(PatternFlowIcmpv6EchoIdentifierChoice.VALUE) + + } + +} + +// ***** PatternFlowIcmpv6EchoSequenceNumber ***** +type patternFlowIcmpv6EchoSequenceNumber struct { validation - obj *otg.PatternFlowTcpSeqNumCounter + obj *otg.PatternFlowIcmpv6EchoSequenceNumber + incrementHolder PatternFlowIcmpv6EchoSequenceNumberCounter + decrementHolder PatternFlowIcmpv6EchoSequenceNumberCounter + metricTagsHolder PatternFlowIcmpv6EchoSequenceNumberPatternFlowIcmpv6EchoSequenceNumberMetricTagIter } -func NewPatternFlowTcpSeqNumCounter() PatternFlowTcpSeqNumCounter { - obj := patternFlowTcpSeqNumCounter{obj: &otg.PatternFlowTcpSeqNumCounter{}} +func NewPatternFlowIcmpv6EchoSequenceNumber() PatternFlowIcmpv6EchoSequenceNumber { + obj := patternFlowIcmpv6EchoSequenceNumber{obj: &otg.PatternFlowIcmpv6EchoSequenceNumber{}} obj.setDefault() return &obj } -func (obj *patternFlowTcpSeqNumCounter) Msg() *otg.PatternFlowTcpSeqNumCounter { +func (obj *patternFlowIcmpv6EchoSequenceNumber) Msg() *otg.PatternFlowIcmpv6EchoSequenceNumber { return obj.obj } -func (obj *patternFlowTcpSeqNumCounter) SetMsg(msg *otg.PatternFlowTcpSeqNumCounter) PatternFlowTcpSeqNumCounter { - +func (obj *patternFlowIcmpv6EchoSequenceNumber) SetMsg(msg *otg.PatternFlowIcmpv6EchoSequenceNumber) PatternFlowIcmpv6EchoSequenceNumber { + obj.setNil() proto.Merge(obj.obj, msg) return obj } -func (obj *patternFlowTcpSeqNumCounter) ToProto() (*otg.PatternFlowTcpSeqNumCounter, error) { +func (obj *patternFlowIcmpv6EchoSequenceNumber) ToProto() (*otg.PatternFlowIcmpv6EchoSequenceNumber, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -222039,7 +266494,7 @@ func (obj *patternFlowTcpSeqNumCounter) ToProto() (*otg.PatternFlowTcpSeqNumCoun return obj.Msg(), nil } -func (obj *patternFlowTcpSeqNumCounter) FromProto(msg *otg.PatternFlowTcpSeqNumCounter) (PatternFlowTcpSeqNumCounter, error) { +func (obj *patternFlowIcmpv6EchoSequenceNumber) FromProto(msg *otg.PatternFlowIcmpv6EchoSequenceNumber) (PatternFlowIcmpv6EchoSequenceNumber, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -222048,7 +266503,7 @@ func (obj *patternFlowTcpSeqNumCounter) FromProto(msg *otg.PatternFlowTcpSeqNumC return newObj, nil } -func (obj *patternFlowTcpSeqNumCounter) ToPbText() (string, error) { +func (obj *patternFlowIcmpv6EchoSequenceNumber) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -222060,12 +266515,12 @@ func (obj *patternFlowTcpSeqNumCounter) ToPbText() (string, error) { return string(protoMarshal), nil } -func (obj *patternFlowTcpSeqNumCounter) FromPbText(value string) error { +func (obj *patternFlowIcmpv6EchoSequenceNumber) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj } - + obj.setNil() vErr := obj.validateToAndFrom() if vErr != nil { return vErr @@ -222073,7 +266528,7 @@ func (obj *patternFlowTcpSeqNumCounter) FromPbText(value string) error { return retObj } -func (obj *patternFlowTcpSeqNumCounter) ToYaml() (string, error) { +func (obj *patternFlowIcmpv6EchoSequenceNumber) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -222094,7 +266549,7 @@ func (obj *patternFlowTcpSeqNumCounter) ToYaml() (string, error) { return string(data), nil } -func (obj *patternFlowTcpSeqNumCounter) FromYaml(value string) error { +func (obj *patternFlowIcmpv6EchoSequenceNumber) FromYaml(value string) error { if value == "" { value = "{}" } @@ -222111,7 +266566,7 @@ func (obj *patternFlowTcpSeqNumCounter) FromYaml(value string) error { return fmt.Errorf("unmarshal error %s", strings.Replace( uError.Error(), "\u00a0", " ", -1)[7:]) } - + obj.setNil() vErr := obj.validateToAndFrom() if vErr != nil { return vErr @@ -222119,7 +266574,7 @@ func (obj *patternFlowTcpSeqNumCounter) FromYaml(value string) error { return nil } -func (obj *patternFlowTcpSeqNumCounter) ToJson() (string, error) { +func (obj *patternFlowIcmpv6EchoSequenceNumber) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -222137,7 +266592,7 @@ func (obj *patternFlowTcpSeqNumCounter) ToJson() (string, error) { return string(data), nil } -func (obj *patternFlowTcpSeqNumCounter) FromJson(value string) error { +func (obj *patternFlowIcmpv6EchoSequenceNumber) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -222150,7 +266605,7 @@ func (obj *patternFlowTcpSeqNumCounter) FromJson(value string) error { return fmt.Errorf("unmarshal error %s", strings.Replace( uError.Error(), "\u00a0", " ", -1)[7:]) } - + obj.setNil() err := obj.validateToAndFrom() if err != nil { return err @@ -222158,19 +266613,19 @@ func (obj *patternFlowTcpSeqNumCounter) FromJson(value string) error { return nil } -func (obj *patternFlowTcpSeqNumCounter) validateToAndFrom() error { +func (obj *patternFlowIcmpv6EchoSequenceNumber) validateToAndFrom() error { // emptyVars() obj.validateObj(&obj.validation, true) return obj.validationResult() } -func (obj *patternFlowTcpSeqNumCounter) Validate() error { +func (obj *patternFlowIcmpv6EchoSequenceNumber) Validate() error { // emptyVars() obj.validateObj(&obj.validation, false) return obj.validationResult() } -func (obj *patternFlowTcpSeqNumCounter) String() string { +func (obj *patternFlowIcmpv6EchoSequenceNumber) String() string { str, err := obj.ToYaml() if err != nil { return err.Error() @@ -222178,12 +266633,12 @@ func (obj *patternFlowTcpSeqNumCounter) String() string { return str } -func (obj *patternFlowTcpSeqNumCounter) Clone() (PatternFlowTcpSeqNumCounter, error) { +func (obj *patternFlowIcmpv6EchoSequenceNumber) Clone() (PatternFlowIcmpv6EchoSequenceNumber, error) { vErr := obj.Validate() if vErr != nil { return nil, vErr } - newObj := NewPatternFlowTcpSeqNumCounter() + newObj := NewPatternFlowIcmpv6EchoSequenceNumber() data, err := proto.Marshal(obj.Msg()) if err != nil { return nil, err @@ -222195,169 +266650,423 @@ func (obj *patternFlowTcpSeqNumCounter) Clone() (PatternFlowTcpSeqNumCounter, er return newObj, nil } -// PatternFlowTcpSeqNumCounter is integer counter pattern -type PatternFlowTcpSeqNumCounter interface { +func (obj *patternFlowIcmpv6EchoSequenceNumber) setNil() { + obj.incrementHolder = nil + obj.decrementHolder = nil + obj.metricTagsHolder = nil + obj.validationErrors = nil + obj.warnings = nil + obj.constraints = make(map[string]map[string]Constraints) +} + +// PatternFlowIcmpv6EchoSequenceNumber is iCMPv6 echo sequence number +type PatternFlowIcmpv6EchoSequenceNumber interface { Validation - // Msg marshals PatternFlowTcpSeqNumCounter to protobuf object *otg.PatternFlowTcpSeqNumCounter + // Msg marshals PatternFlowIcmpv6EchoSequenceNumber to protobuf object *otg.PatternFlowIcmpv6EchoSequenceNumber // and doesn't set defaults - Msg() *otg.PatternFlowTcpSeqNumCounter - // SetMsg unmarshals PatternFlowTcpSeqNumCounter from protobuf object *otg.PatternFlowTcpSeqNumCounter + Msg() *otg.PatternFlowIcmpv6EchoSequenceNumber + // SetMsg unmarshals PatternFlowIcmpv6EchoSequenceNumber from protobuf object *otg.PatternFlowIcmpv6EchoSequenceNumber // and doesn't set defaults - SetMsg(*otg.PatternFlowTcpSeqNumCounter) PatternFlowTcpSeqNumCounter - // ToProto marshals PatternFlowTcpSeqNumCounter to protobuf object *otg.PatternFlowTcpSeqNumCounter - ToProto() (*otg.PatternFlowTcpSeqNumCounter, error) - // ToPbText marshals PatternFlowTcpSeqNumCounter to protobuf text + SetMsg(*otg.PatternFlowIcmpv6EchoSequenceNumber) PatternFlowIcmpv6EchoSequenceNumber + // ToProto marshals PatternFlowIcmpv6EchoSequenceNumber to protobuf object *otg.PatternFlowIcmpv6EchoSequenceNumber + ToProto() (*otg.PatternFlowIcmpv6EchoSequenceNumber, error) + // ToPbText marshals PatternFlowIcmpv6EchoSequenceNumber to protobuf text ToPbText() (string, error) - // ToYaml marshals PatternFlowTcpSeqNumCounter to YAML text + // ToYaml marshals PatternFlowIcmpv6EchoSequenceNumber to YAML text ToYaml() (string, error) - // ToJson marshals PatternFlowTcpSeqNumCounter to JSON text + // ToJson marshals PatternFlowIcmpv6EchoSequenceNumber to JSON text ToJson() (string, error) - // FromProto unmarshals PatternFlowTcpSeqNumCounter from protobuf object *otg.PatternFlowTcpSeqNumCounter - FromProto(msg *otg.PatternFlowTcpSeqNumCounter) (PatternFlowTcpSeqNumCounter, error) - // FromPbText unmarshals PatternFlowTcpSeqNumCounter from protobuf text + // FromProto unmarshals PatternFlowIcmpv6EchoSequenceNumber from protobuf object *otg.PatternFlowIcmpv6EchoSequenceNumber + FromProto(msg *otg.PatternFlowIcmpv6EchoSequenceNumber) (PatternFlowIcmpv6EchoSequenceNumber, error) + // FromPbText unmarshals PatternFlowIcmpv6EchoSequenceNumber from protobuf text FromPbText(value string) error - // FromYaml unmarshals PatternFlowTcpSeqNumCounter from YAML text + // FromYaml unmarshals PatternFlowIcmpv6EchoSequenceNumber from YAML text FromYaml(value string) error - // FromJson unmarshals PatternFlowTcpSeqNumCounter from JSON text + // FromJson unmarshals PatternFlowIcmpv6EchoSequenceNumber from JSON text FromJson(value string) error - // Validate validates PatternFlowTcpSeqNumCounter + // Validate validates PatternFlowIcmpv6EchoSequenceNumber Validate() error // A stringer function String() string // Clones the object - Clone() (PatternFlowTcpSeqNumCounter, error) + Clone() (PatternFlowIcmpv6EchoSequenceNumber, error) validateToAndFrom() error validateObj(vObj *validation, set_default bool) setDefault() - // Start returns uint32, set in PatternFlowTcpSeqNumCounter. - Start() uint32 - // SetStart assigns uint32 provided by user to PatternFlowTcpSeqNumCounter - SetStart(value uint32) PatternFlowTcpSeqNumCounter - // HasStart checks if Start has been set in PatternFlowTcpSeqNumCounter - HasStart() bool - // Step returns uint32, set in PatternFlowTcpSeqNumCounter. - Step() uint32 - // SetStep assigns uint32 provided by user to PatternFlowTcpSeqNumCounter - SetStep(value uint32) PatternFlowTcpSeqNumCounter - // HasStep checks if Step has been set in PatternFlowTcpSeqNumCounter - HasStep() bool - // Count returns uint32, set in PatternFlowTcpSeqNumCounter. - Count() uint32 - // SetCount assigns uint32 provided by user to PatternFlowTcpSeqNumCounter - SetCount(value uint32) PatternFlowTcpSeqNumCounter - // HasCount checks if Count has been set in PatternFlowTcpSeqNumCounter - HasCount() bool + // Choice returns PatternFlowIcmpv6EchoSequenceNumberChoiceEnum, set in PatternFlowIcmpv6EchoSequenceNumber + Choice() PatternFlowIcmpv6EchoSequenceNumberChoiceEnum + // SetChoice assigns PatternFlowIcmpv6EchoSequenceNumberChoiceEnum provided by user to PatternFlowIcmpv6EchoSequenceNumber + SetChoice(value PatternFlowIcmpv6EchoSequenceNumberChoiceEnum) PatternFlowIcmpv6EchoSequenceNumber + // HasChoice checks if Choice has been set in PatternFlowIcmpv6EchoSequenceNumber + HasChoice() bool + // Value returns uint32, set in PatternFlowIcmpv6EchoSequenceNumber. + Value() uint32 + // SetValue assigns uint32 provided by user to PatternFlowIcmpv6EchoSequenceNumber + SetValue(value uint32) PatternFlowIcmpv6EchoSequenceNumber + // HasValue checks if Value has been set in PatternFlowIcmpv6EchoSequenceNumber + HasValue() bool + // Values returns []uint32, set in PatternFlowIcmpv6EchoSequenceNumber. + Values() []uint32 + // SetValues assigns []uint32 provided by user to PatternFlowIcmpv6EchoSequenceNumber + SetValues(value []uint32) PatternFlowIcmpv6EchoSequenceNumber + // Increment returns PatternFlowIcmpv6EchoSequenceNumberCounter, set in PatternFlowIcmpv6EchoSequenceNumber. + // PatternFlowIcmpv6EchoSequenceNumberCounter is integer counter pattern + Increment() PatternFlowIcmpv6EchoSequenceNumberCounter + // SetIncrement assigns PatternFlowIcmpv6EchoSequenceNumberCounter provided by user to PatternFlowIcmpv6EchoSequenceNumber. + // PatternFlowIcmpv6EchoSequenceNumberCounter is integer counter pattern + SetIncrement(value PatternFlowIcmpv6EchoSequenceNumberCounter) PatternFlowIcmpv6EchoSequenceNumber + // HasIncrement checks if Increment has been set in PatternFlowIcmpv6EchoSequenceNumber + HasIncrement() bool + // Decrement returns PatternFlowIcmpv6EchoSequenceNumberCounter, set in PatternFlowIcmpv6EchoSequenceNumber. + // PatternFlowIcmpv6EchoSequenceNumberCounter is integer counter pattern + Decrement() PatternFlowIcmpv6EchoSequenceNumberCounter + // SetDecrement assigns PatternFlowIcmpv6EchoSequenceNumberCounter provided by user to PatternFlowIcmpv6EchoSequenceNumber. + // PatternFlowIcmpv6EchoSequenceNumberCounter is integer counter pattern + SetDecrement(value PatternFlowIcmpv6EchoSequenceNumberCounter) PatternFlowIcmpv6EchoSequenceNumber + // HasDecrement checks if Decrement has been set in PatternFlowIcmpv6EchoSequenceNumber + HasDecrement() bool + // MetricTags returns PatternFlowIcmpv6EchoSequenceNumberPatternFlowIcmpv6EchoSequenceNumberMetricTagIterIter, set in PatternFlowIcmpv6EchoSequenceNumber + MetricTags() PatternFlowIcmpv6EchoSequenceNumberPatternFlowIcmpv6EchoSequenceNumberMetricTagIter + setNil() } -// description is TBD -// Start returns a uint32 -func (obj *patternFlowTcpSeqNumCounter) Start() uint32 { +type PatternFlowIcmpv6EchoSequenceNumberChoiceEnum string - return *obj.obj.Start +// Enum of Choice on PatternFlowIcmpv6EchoSequenceNumber +var PatternFlowIcmpv6EchoSequenceNumberChoice = struct { + VALUE PatternFlowIcmpv6EchoSequenceNumberChoiceEnum + VALUES PatternFlowIcmpv6EchoSequenceNumberChoiceEnum + INCREMENT PatternFlowIcmpv6EchoSequenceNumberChoiceEnum + DECREMENT PatternFlowIcmpv6EchoSequenceNumberChoiceEnum +}{ + VALUE: PatternFlowIcmpv6EchoSequenceNumberChoiceEnum("value"), + VALUES: PatternFlowIcmpv6EchoSequenceNumberChoiceEnum("values"), + INCREMENT: PatternFlowIcmpv6EchoSequenceNumberChoiceEnum("increment"), + DECREMENT: PatternFlowIcmpv6EchoSequenceNumberChoiceEnum("decrement"), +} +func (obj *patternFlowIcmpv6EchoSequenceNumber) Choice() PatternFlowIcmpv6EchoSequenceNumberChoiceEnum { + return PatternFlowIcmpv6EchoSequenceNumberChoiceEnum(obj.obj.Choice.Enum().String()) } // description is TBD -// Start returns a uint32 -func (obj *patternFlowTcpSeqNumCounter) HasStart() bool { - return obj.obj.Start != nil +// Choice returns a string +func (obj *patternFlowIcmpv6EchoSequenceNumber) HasChoice() bool { + return obj.obj.Choice != nil } -// description is TBD -// SetStart sets the uint32 value in the PatternFlowTcpSeqNumCounter object -func (obj *patternFlowTcpSeqNumCounter) SetStart(value uint32) PatternFlowTcpSeqNumCounter { +func (obj *patternFlowIcmpv6EchoSequenceNumber) SetChoice(value PatternFlowIcmpv6EchoSequenceNumberChoiceEnum) PatternFlowIcmpv6EchoSequenceNumber { + intValue, ok := otg.PatternFlowIcmpv6EchoSequenceNumber_Choice_Enum_value[string(value)] + if !ok { + obj.validationErrors = append(obj.validationErrors, fmt.Sprintf( + "%s is not a valid choice on PatternFlowIcmpv6EchoSequenceNumberChoiceEnum", string(value))) + return obj + } + enumValue := otg.PatternFlowIcmpv6EchoSequenceNumber_Choice_Enum(intValue) + obj.obj.Choice = &enumValue + obj.obj.Decrement = nil + obj.decrementHolder = nil + obj.obj.Increment = nil + obj.incrementHolder = nil + obj.obj.Values = nil + obj.obj.Value = nil + + if value == PatternFlowIcmpv6EchoSequenceNumberChoice.VALUE { + defaultValue := uint32(0) + obj.obj.Value = &defaultValue + } + + if value == PatternFlowIcmpv6EchoSequenceNumberChoice.VALUES { + defaultValue := []uint32{0} + obj.obj.Values = defaultValue + } + + if value == PatternFlowIcmpv6EchoSequenceNumberChoice.INCREMENT { + obj.obj.Increment = NewPatternFlowIcmpv6EchoSequenceNumberCounter().Msg() + } + + if value == PatternFlowIcmpv6EchoSequenceNumberChoice.DECREMENT { + obj.obj.Decrement = NewPatternFlowIcmpv6EchoSequenceNumberCounter().Msg() + } - obj.obj.Start = &value return obj } // description is TBD -// Step returns a uint32 -func (obj *patternFlowTcpSeqNumCounter) Step() uint32 { +// Value returns a uint32 +func (obj *patternFlowIcmpv6EchoSequenceNumber) Value() uint32 { - return *obj.obj.Step + if obj.obj.Value == nil { + obj.SetChoice(PatternFlowIcmpv6EchoSequenceNumberChoice.VALUE) + } + + return *obj.obj.Value } // description is TBD -// Step returns a uint32 -func (obj *patternFlowTcpSeqNumCounter) HasStep() bool { - return obj.obj.Step != nil +// Value returns a uint32 +func (obj *patternFlowIcmpv6EchoSequenceNumber) HasValue() bool { + return obj.obj.Value != nil } // description is TBD -// SetStep sets the uint32 value in the PatternFlowTcpSeqNumCounter object -func (obj *patternFlowTcpSeqNumCounter) SetStep(value uint32) PatternFlowTcpSeqNumCounter { +// SetValue sets the uint32 value in the PatternFlowIcmpv6EchoSequenceNumber object +func (obj *patternFlowIcmpv6EchoSequenceNumber) SetValue(value uint32) PatternFlowIcmpv6EchoSequenceNumber { + obj.SetChoice(PatternFlowIcmpv6EchoSequenceNumberChoice.VALUE) + obj.obj.Value = &value + return obj +} + +// description is TBD +// Values returns a []uint32 +func (obj *patternFlowIcmpv6EchoSequenceNumber) Values() []uint32 { + if obj.obj.Values == nil { + obj.SetValues([]uint32{0}) + } + return obj.obj.Values +} + +// description is TBD +// SetValues sets the []uint32 value in the PatternFlowIcmpv6EchoSequenceNumber object +func (obj *patternFlowIcmpv6EchoSequenceNumber) SetValues(value []uint32) PatternFlowIcmpv6EchoSequenceNumber { + obj.SetChoice(PatternFlowIcmpv6EchoSequenceNumberChoice.VALUES) + if obj.obj.Values == nil { + obj.obj.Values = make([]uint32, 0) + } + obj.obj.Values = value - obj.obj.Step = &value return obj } // description is TBD -// Count returns a uint32 -func (obj *patternFlowTcpSeqNumCounter) Count() uint32 { +// Increment returns a PatternFlowIcmpv6EchoSequenceNumberCounter +func (obj *patternFlowIcmpv6EchoSequenceNumber) Increment() PatternFlowIcmpv6EchoSequenceNumberCounter { + if obj.obj.Increment == nil { + obj.SetChoice(PatternFlowIcmpv6EchoSequenceNumberChoice.INCREMENT) + } + if obj.incrementHolder == nil { + obj.incrementHolder = &patternFlowIcmpv6EchoSequenceNumberCounter{obj: obj.obj.Increment} + } + return obj.incrementHolder +} - return *obj.obj.Count +// description is TBD +// Increment returns a PatternFlowIcmpv6EchoSequenceNumberCounter +func (obj *patternFlowIcmpv6EchoSequenceNumber) HasIncrement() bool { + return obj.obj.Increment != nil +} + +// description is TBD +// SetIncrement sets the PatternFlowIcmpv6EchoSequenceNumberCounter value in the PatternFlowIcmpv6EchoSequenceNumber object +func (obj *patternFlowIcmpv6EchoSequenceNumber) SetIncrement(value PatternFlowIcmpv6EchoSequenceNumberCounter) PatternFlowIcmpv6EchoSequenceNumber { + obj.SetChoice(PatternFlowIcmpv6EchoSequenceNumberChoice.INCREMENT) + obj.incrementHolder = nil + obj.obj.Increment = value.Msg() + return obj } // description is TBD -// Count returns a uint32 -func (obj *patternFlowTcpSeqNumCounter) HasCount() bool { - return obj.obj.Count != nil +// Decrement returns a PatternFlowIcmpv6EchoSequenceNumberCounter +func (obj *patternFlowIcmpv6EchoSequenceNumber) Decrement() PatternFlowIcmpv6EchoSequenceNumberCounter { + if obj.obj.Decrement == nil { + obj.SetChoice(PatternFlowIcmpv6EchoSequenceNumberChoice.DECREMENT) + } + if obj.decrementHolder == nil { + obj.decrementHolder = &patternFlowIcmpv6EchoSequenceNumberCounter{obj: obj.obj.Decrement} + } + return obj.decrementHolder } // description is TBD -// SetCount sets the uint32 value in the PatternFlowTcpSeqNumCounter object -func (obj *patternFlowTcpSeqNumCounter) SetCount(value uint32) PatternFlowTcpSeqNumCounter { +// Decrement returns a PatternFlowIcmpv6EchoSequenceNumberCounter +func (obj *patternFlowIcmpv6EchoSequenceNumber) HasDecrement() bool { + return obj.obj.Decrement != nil +} + +// description is TBD +// SetDecrement sets the PatternFlowIcmpv6EchoSequenceNumberCounter value in the PatternFlowIcmpv6EchoSequenceNumber object +func (obj *patternFlowIcmpv6EchoSequenceNumber) SetDecrement(value PatternFlowIcmpv6EchoSequenceNumberCounter) PatternFlowIcmpv6EchoSequenceNumber { + obj.SetChoice(PatternFlowIcmpv6EchoSequenceNumberChoice.DECREMENT) + obj.decrementHolder = nil + obj.obj.Decrement = value.Msg() - obj.obj.Count = &value return obj } -func (obj *patternFlowTcpSeqNumCounter) validateObj(vObj *validation, set_default bool) { +// One or more metric tags can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. +// MetricTags returns a []PatternFlowIcmpv6EchoSequenceNumberMetricTag +func (obj *patternFlowIcmpv6EchoSequenceNumber) MetricTags() PatternFlowIcmpv6EchoSequenceNumberPatternFlowIcmpv6EchoSequenceNumberMetricTagIter { + if len(obj.obj.MetricTags) == 0 { + obj.obj.MetricTags = []*otg.PatternFlowIcmpv6EchoSequenceNumberMetricTag{} + } + if obj.metricTagsHolder == nil { + obj.metricTagsHolder = newPatternFlowIcmpv6EchoSequenceNumberPatternFlowIcmpv6EchoSequenceNumberMetricTagIter(&obj.obj.MetricTags).setMsg(obj) + } + return obj.metricTagsHolder +} + +type patternFlowIcmpv6EchoSequenceNumberPatternFlowIcmpv6EchoSequenceNumberMetricTagIter struct { + obj *patternFlowIcmpv6EchoSequenceNumber + patternFlowIcmpv6EchoSequenceNumberMetricTagSlice []PatternFlowIcmpv6EchoSequenceNumberMetricTag + fieldPtr *[]*otg.PatternFlowIcmpv6EchoSequenceNumberMetricTag +} + +func newPatternFlowIcmpv6EchoSequenceNumberPatternFlowIcmpv6EchoSequenceNumberMetricTagIter(ptr *[]*otg.PatternFlowIcmpv6EchoSequenceNumberMetricTag) PatternFlowIcmpv6EchoSequenceNumberPatternFlowIcmpv6EchoSequenceNumberMetricTagIter { + return &patternFlowIcmpv6EchoSequenceNumberPatternFlowIcmpv6EchoSequenceNumberMetricTagIter{fieldPtr: ptr} +} + +type PatternFlowIcmpv6EchoSequenceNumberPatternFlowIcmpv6EchoSequenceNumberMetricTagIter interface { + setMsg(*patternFlowIcmpv6EchoSequenceNumber) PatternFlowIcmpv6EchoSequenceNumberPatternFlowIcmpv6EchoSequenceNumberMetricTagIter + Items() []PatternFlowIcmpv6EchoSequenceNumberMetricTag + Add() PatternFlowIcmpv6EchoSequenceNumberMetricTag + Append(items ...PatternFlowIcmpv6EchoSequenceNumberMetricTag) PatternFlowIcmpv6EchoSequenceNumberPatternFlowIcmpv6EchoSequenceNumberMetricTagIter + Set(index int, newObj PatternFlowIcmpv6EchoSequenceNumberMetricTag) PatternFlowIcmpv6EchoSequenceNumberPatternFlowIcmpv6EchoSequenceNumberMetricTagIter + Clear() PatternFlowIcmpv6EchoSequenceNumberPatternFlowIcmpv6EchoSequenceNumberMetricTagIter + clearHolderSlice() PatternFlowIcmpv6EchoSequenceNumberPatternFlowIcmpv6EchoSequenceNumberMetricTagIter + appendHolderSlice(item PatternFlowIcmpv6EchoSequenceNumberMetricTag) PatternFlowIcmpv6EchoSequenceNumberPatternFlowIcmpv6EchoSequenceNumberMetricTagIter +} + +func (obj *patternFlowIcmpv6EchoSequenceNumberPatternFlowIcmpv6EchoSequenceNumberMetricTagIter) setMsg(msg *patternFlowIcmpv6EchoSequenceNumber) PatternFlowIcmpv6EchoSequenceNumberPatternFlowIcmpv6EchoSequenceNumberMetricTagIter { + obj.clearHolderSlice() + for _, val := range *obj.fieldPtr { + obj.appendHolderSlice(&patternFlowIcmpv6EchoSequenceNumberMetricTag{obj: val}) + } + obj.obj = msg + return obj +} + +func (obj *patternFlowIcmpv6EchoSequenceNumberPatternFlowIcmpv6EchoSequenceNumberMetricTagIter) Items() []PatternFlowIcmpv6EchoSequenceNumberMetricTag { + return obj.patternFlowIcmpv6EchoSequenceNumberMetricTagSlice +} + +func (obj *patternFlowIcmpv6EchoSequenceNumberPatternFlowIcmpv6EchoSequenceNumberMetricTagIter) Add() PatternFlowIcmpv6EchoSequenceNumberMetricTag { + newObj := &otg.PatternFlowIcmpv6EchoSequenceNumberMetricTag{} + *obj.fieldPtr = append(*obj.fieldPtr, newObj) + newLibObj := &patternFlowIcmpv6EchoSequenceNumberMetricTag{obj: newObj} + newLibObj.setDefault() + obj.patternFlowIcmpv6EchoSequenceNumberMetricTagSlice = append(obj.patternFlowIcmpv6EchoSequenceNumberMetricTagSlice, newLibObj) + return newLibObj +} + +func (obj *patternFlowIcmpv6EchoSequenceNumberPatternFlowIcmpv6EchoSequenceNumberMetricTagIter) Append(items ...PatternFlowIcmpv6EchoSequenceNumberMetricTag) PatternFlowIcmpv6EchoSequenceNumberPatternFlowIcmpv6EchoSequenceNumberMetricTagIter { + for _, item := range items { + newObj := item.Msg() + *obj.fieldPtr = append(*obj.fieldPtr, newObj) + obj.patternFlowIcmpv6EchoSequenceNumberMetricTagSlice = append(obj.patternFlowIcmpv6EchoSequenceNumberMetricTagSlice, item) + } + return obj +} + +func (obj *patternFlowIcmpv6EchoSequenceNumberPatternFlowIcmpv6EchoSequenceNumberMetricTagIter) Set(index int, newObj PatternFlowIcmpv6EchoSequenceNumberMetricTag) PatternFlowIcmpv6EchoSequenceNumberPatternFlowIcmpv6EchoSequenceNumberMetricTagIter { + (*obj.fieldPtr)[index] = newObj.Msg() + obj.patternFlowIcmpv6EchoSequenceNumberMetricTagSlice[index] = newObj + return obj +} +func (obj *patternFlowIcmpv6EchoSequenceNumberPatternFlowIcmpv6EchoSequenceNumberMetricTagIter) Clear() PatternFlowIcmpv6EchoSequenceNumberPatternFlowIcmpv6EchoSequenceNumberMetricTagIter { + if len(*obj.fieldPtr) > 0 { + *obj.fieldPtr = []*otg.PatternFlowIcmpv6EchoSequenceNumberMetricTag{} + obj.patternFlowIcmpv6EchoSequenceNumberMetricTagSlice = []PatternFlowIcmpv6EchoSequenceNumberMetricTag{} + } + return obj +} +func (obj *patternFlowIcmpv6EchoSequenceNumberPatternFlowIcmpv6EchoSequenceNumberMetricTagIter) clearHolderSlice() PatternFlowIcmpv6EchoSequenceNumberPatternFlowIcmpv6EchoSequenceNumberMetricTagIter { + if len(obj.patternFlowIcmpv6EchoSequenceNumberMetricTagSlice) > 0 { + obj.patternFlowIcmpv6EchoSequenceNumberMetricTagSlice = []PatternFlowIcmpv6EchoSequenceNumberMetricTag{} + } + return obj +} +func (obj *patternFlowIcmpv6EchoSequenceNumberPatternFlowIcmpv6EchoSequenceNumberMetricTagIter) appendHolderSlice(item PatternFlowIcmpv6EchoSequenceNumberMetricTag) PatternFlowIcmpv6EchoSequenceNumberPatternFlowIcmpv6EchoSequenceNumberMetricTagIter { + obj.patternFlowIcmpv6EchoSequenceNumberMetricTagSlice = append(obj.patternFlowIcmpv6EchoSequenceNumberMetricTagSlice, item) + return obj +} + +func (obj *patternFlowIcmpv6EchoSequenceNumber) validateObj(vObj *validation, set_default bool) { if set_default { obj.setDefault() } -} + if obj.obj.Value != nil { + + if *obj.obj.Value > 65535 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("0 <= PatternFlowIcmpv6EchoSequenceNumber.Value <= 65535 but Got %d", *obj.obj.Value)) + } -func (obj *patternFlowTcpSeqNumCounter) setDefault() { - if obj.obj.Start == nil { - obj.SetStart(0) } - if obj.obj.Step == nil { - obj.SetStep(1) + + if obj.obj.Values != nil { + + for _, item := range obj.obj.Values { + if item > 65535 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("min(uint32) <= PatternFlowIcmpv6EchoSequenceNumber.Values <= 65535 but Got %d", item)) + } + + } + } - if obj.obj.Count == nil { - obj.SetCount(1) + + if obj.obj.Increment != nil { + + obj.Increment().validateObj(vObj, set_default) + } + + if obj.obj.Decrement != nil { + + obj.Decrement().validateObj(vObj, set_default) + } + + if len(obj.obj.MetricTags) != 0 { + + if set_default { + obj.MetricTags().clearHolderSlice() + for _, item := range obj.obj.MetricTags { + obj.MetricTags().appendHolderSlice(&patternFlowIcmpv6EchoSequenceNumberMetricTag{obj: item}) + } + } + for _, item := range obj.MetricTags().Items() { + item.validateObj(vObj, set_default) + } + } } -// ***** PatternFlowTcpSeqNumMetricTag ***** -type patternFlowTcpSeqNumMetricTag struct { +func (obj *patternFlowIcmpv6EchoSequenceNumber) setDefault() { + if obj.obj.Choice == nil { + obj.SetChoice(PatternFlowIcmpv6EchoSequenceNumberChoice.VALUE) + + } + +} + +// ***** PatternFlowIcmpv6EchoChecksum ***** +type patternFlowIcmpv6EchoChecksum struct { validation - obj *otg.PatternFlowTcpSeqNumMetricTag + obj *otg.PatternFlowIcmpv6EchoChecksum } -func NewPatternFlowTcpSeqNumMetricTag() PatternFlowTcpSeqNumMetricTag { - obj := patternFlowTcpSeqNumMetricTag{obj: &otg.PatternFlowTcpSeqNumMetricTag{}} +func NewPatternFlowIcmpv6EchoChecksum() PatternFlowIcmpv6EchoChecksum { + obj := patternFlowIcmpv6EchoChecksum{obj: &otg.PatternFlowIcmpv6EchoChecksum{}} obj.setDefault() return &obj } -func (obj *patternFlowTcpSeqNumMetricTag) Msg() *otg.PatternFlowTcpSeqNumMetricTag { +func (obj *patternFlowIcmpv6EchoChecksum) Msg() *otg.PatternFlowIcmpv6EchoChecksum { return obj.obj } -func (obj *patternFlowTcpSeqNumMetricTag) SetMsg(msg *otg.PatternFlowTcpSeqNumMetricTag) PatternFlowTcpSeqNumMetricTag { +func (obj *patternFlowIcmpv6EchoChecksum) SetMsg(msg *otg.PatternFlowIcmpv6EchoChecksum) PatternFlowIcmpv6EchoChecksum { proto.Merge(obj.obj, msg) return obj } -func (obj *patternFlowTcpSeqNumMetricTag) ToProto() (*otg.PatternFlowTcpSeqNumMetricTag, error) { +func (obj *patternFlowIcmpv6EchoChecksum) ToProto() (*otg.PatternFlowIcmpv6EchoChecksum, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -222365,7 +267074,7 @@ func (obj *patternFlowTcpSeqNumMetricTag) ToProto() (*otg.PatternFlowTcpSeqNumMe return obj.Msg(), nil } -func (obj *patternFlowTcpSeqNumMetricTag) FromProto(msg *otg.PatternFlowTcpSeqNumMetricTag) (PatternFlowTcpSeqNumMetricTag, error) { +func (obj *patternFlowIcmpv6EchoChecksum) FromProto(msg *otg.PatternFlowIcmpv6EchoChecksum) (PatternFlowIcmpv6EchoChecksum, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -222374,7 +267083,7 @@ func (obj *patternFlowTcpSeqNumMetricTag) FromProto(msg *otg.PatternFlowTcpSeqNu return newObj, nil } -func (obj *patternFlowTcpSeqNumMetricTag) ToPbText() (string, error) { +func (obj *patternFlowIcmpv6EchoChecksum) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -222386,7 +267095,7 @@ func (obj *patternFlowTcpSeqNumMetricTag) ToPbText() (string, error) { return string(protoMarshal), nil } -func (obj *patternFlowTcpSeqNumMetricTag) FromPbText(value string) error { +func (obj *patternFlowIcmpv6EchoChecksum) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj @@ -222399,7 +267108,7 @@ func (obj *patternFlowTcpSeqNumMetricTag) FromPbText(value string) error { return retObj } -func (obj *patternFlowTcpSeqNumMetricTag) ToYaml() (string, error) { +func (obj *patternFlowIcmpv6EchoChecksum) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -222420,7 +267129,7 @@ func (obj *patternFlowTcpSeqNumMetricTag) ToYaml() (string, error) { return string(data), nil } -func (obj *patternFlowTcpSeqNumMetricTag) FromYaml(value string) error { +func (obj *patternFlowIcmpv6EchoChecksum) FromYaml(value string) error { if value == "" { value = "{}" } @@ -222445,7 +267154,7 @@ func (obj *patternFlowTcpSeqNumMetricTag) FromYaml(value string) error { return nil } -func (obj *patternFlowTcpSeqNumMetricTag) ToJson() (string, error) { +func (obj *patternFlowIcmpv6EchoChecksum) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -222463,7 +267172,7 @@ func (obj *patternFlowTcpSeqNumMetricTag) ToJson() (string, error) { return string(data), nil } -func (obj *patternFlowTcpSeqNumMetricTag) FromJson(value string) error { +func (obj *patternFlowIcmpv6EchoChecksum) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -222484,19 +267193,19 @@ func (obj *patternFlowTcpSeqNumMetricTag) FromJson(value string) error { return nil } -func (obj *patternFlowTcpSeqNumMetricTag) validateToAndFrom() error { +func (obj *patternFlowIcmpv6EchoChecksum) validateToAndFrom() error { // emptyVars() obj.validateObj(&obj.validation, true) return obj.validationResult() } -func (obj *patternFlowTcpSeqNumMetricTag) Validate() error { +func (obj *patternFlowIcmpv6EchoChecksum) Validate() error { // emptyVars() obj.validateObj(&obj.validation, false) return obj.validationResult() } -func (obj *patternFlowTcpSeqNumMetricTag) String() string { +func (obj *patternFlowIcmpv6EchoChecksum) String() string { str, err := obj.ToYaml() if err != nil { return err.Error() @@ -222504,12 +267213,12 @@ func (obj *patternFlowTcpSeqNumMetricTag) String() string { return str } -func (obj *patternFlowTcpSeqNumMetricTag) Clone() (PatternFlowTcpSeqNumMetricTag, error) { +func (obj *patternFlowIcmpv6EchoChecksum) Clone() (PatternFlowIcmpv6EchoChecksum, error) { vErr := obj.Validate() if vErr != nil { return nil, vErr } - newObj := NewPatternFlowTcpSeqNumMetricTag() + newObj := NewPatternFlowIcmpv6EchoChecksum() data, err := proto.Marshal(obj.Msg()) if err != nil { return nil, err @@ -222521,183 +267230,207 @@ func (obj *patternFlowTcpSeqNumMetricTag) Clone() (PatternFlowTcpSeqNumMetricTag return newObj, nil } -// PatternFlowTcpSeqNumMetricTag is metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. -type PatternFlowTcpSeqNumMetricTag interface { +// PatternFlowIcmpv6EchoChecksum is iCMPv6 checksum +type PatternFlowIcmpv6EchoChecksum interface { Validation - // Msg marshals PatternFlowTcpSeqNumMetricTag to protobuf object *otg.PatternFlowTcpSeqNumMetricTag + // Msg marshals PatternFlowIcmpv6EchoChecksum to protobuf object *otg.PatternFlowIcmpv6EchoChecksum // and doesn't set defaults - Msg() *otg.PatternFlowTcpSeqNumMetricTag - // SetMsg unmarshals PatternFlowTcpSeqNumMetricTag from protobuf object *otg.PatternFlowTcpSeqNumMetricTag + Msg() *otg.PatternFlowIcmpv6EchoChecksum + // SetMsg unmarshals PatternFlowIcmpv6EchoChecksum from protobuf object *otg.PatternFlowIcmpv6EchoChecksum // and doesn't set defaults - SetMsg(*otg.PatternFlowTcpSeqNumMetricTag) PatternFlowTcpSeqNumMetricTag - // ToProto marshals PatternFlowTcpSeqNumMetricTag to protobuf object *otg.PatternFlowTcpSeqNumMetricTag - ToProto() (*otg.PatternFlowTcpSeqNumMetricTag, error) - // ToPbText marshals PatternFlowTcpSeqNumMetricTag to protobuf text + SetMsg(*otg.PatternFlowIcmpv6EchoChecksum) PatternFlowIcmpv6EchoChecksum + // ToProto marshals PatternFlowIcmpv6EchoChecksum to protobuf object *otg.PatternFlowIcmpv6EchoChecksum + ToProto() (*otg.PatternFlowIcmpv6EchoChecksum, error) + // ToPbText marshals PatternFlowIcmpv6EchoChecksum to protobuf text ToPbText() (string, error) - // ToYaml marshals PatternFlowTcpSeqNumMetricTag to YAML text + // ToYaml marshals PatternFlowIcmpv6EchoChecksum to YAML text ToYaml() (string, error) - // ToJson marshals PatternFlowTcpSeqNumMetricTag to JSON text + // ToJson marshals PatternFlowIcmpv6EchoChecksum to JSON text ToJson() (string, error) - // FromProto unmarshals PatternFlowTcpSeqNumMetricTag from protobuf object *otg.PatternFlowTcpSeqNumMetricTag - FromProto(msg *otg.PatternFlowTcpSeqNumMetricTag) (PatternFlowTcpSeqNumMetricTag, error) - // FromPbText unmarshals PatternFlowTcpSeqNumMetricTag from protobuf text + // FromProto unmarshals PatternFlowIcmpv6EchoChecksum from protobuf object *otg.PatternFlowIcmpv6EchoChecksum + FromProto(msg *otg.PatternFlowIcmpv6EchoChecksum) (PatternFlowIcmpv6EchoChecksum, error) + // FromPbText unmarshals PatternFlowIcmpv6EchoChecksum from protobuf text FromPbText(value string) error - // FromYaml unmarshals PatternFlowTcpSeqNumMetricTag from YAML text + // FromYaml unmarshals PatternFlowIcmpv6EchoChecksum from YAML text FromYaml(value string) error - // FromJson unmarshals PatternFlowTcpSeqNumMetricTag from JSON text + // FromJson unmarshals PatternFlowIcmpv6EchoChecksum from JSON text FromJson(value string) error - // Validate validates PatternFlowTcpSeqNumMetricTag + // Validate validates PatternFlowIcmpv6EchoChecksum Validate() error // A stringer function String() string // Clones the object - Clone() (PatternFlowTcpSeqNumMetricTag, error) + Clone() (PatternFlowIcmpv6EchoChecksum, error) validateToAndFrom() error validateObj(vObj *validation, set_default bool) setDefault() - // Name returns string, set in PatternFlowTcpSeqNumMetricTag. - Name() string - // SetName assigns string provided by user to PatternFlowTcpSeqNumMetricTag - SetName(value string) PatternFlowTcpSeqNumMetricTag - // Offset returns uint32, set in PatternFlowTcpSeqNumMetricTag. - Offset() uint32 - // SetOffset assigns uint32 provided by user to PatternFlowTcpSeqNumMetricTag - SetOffset(value uint32) PatternFlowTcpSeqNumMetricTag - // HasOffset checks if Offset has been set in PatternFlowTcpSeqNumMetricTag - HasOffset() bool - // Length returns uint32, set in PatternFlowTcpSeqNumMetricTag. - Length() uint32 - // SetLength assigns uint32 provided by user to PatternFlowTcpSeqNumMetricTag - SetLength(value uint32) PatternFlowTcpSeqNumMetricTag - // HasLength checks if Length has been set in PatternFlowTcpSeqNumMetricTag - HasLength() bool + // Choice returns PatternFlowIcmpv6EchoChecksumChoiceEnum, set in PatternFlowIcmpv6EchoChecksum + Choice() PatternFlowIcmpv6EchoChecksumChoiceEnum + // SetChoice assigns PatternFlowIcmpv6EchoChecksumChoiceEnum provided by user to PatternFlowIcmpv6EchoChecksum + SetChoice(value PatternFlowIcmpv6EchoChecksumChoiceEnum) PatternFlowIcmpv6EchoChecksum + // HasChoice checks if Choice has been set in PatternFlowIcmpv6EchoChecksum + HasChoice() bool + // Generated returns PatternFlowIcmpv6EchoChecksumGeneratedEnum, set in PatternFlowIcmpv6EchoChecksum + Generated() PatternFlowIcmpv6EchoChecksumGeneratedEnum + // SetGenerated assigns PatternFlowIcmpv6EchoChecksumGeneratedEnum provided by user to PatternFlowIcmpv6EchoChecksum + SetGenerated(value PatternFlowIcmpv6EchoChecksumGeneratedEnum) PatternFlowIcmpv6EchoChecksum + // HasGenerated checks if Generated has been set in PatternFlowIcmpv6EchoChecksum + HasGenerated() bool + // Custom returns uint32, set in PatternFlowIcmpv6EchoChecksum. + Custom() uint32 + // SetCustom assigns uint32 provided by user to PatternFlowIcmpv6EchoChecksum + SetCustom(value uint32) PatternFlowIcmpv6EchoChecksum + // HasCustom checks if Custom has been set in PatternFlowIcmpv6EchoChecksum + HasCustom() bool } -// Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field -// Name returns a string -func (obj *patternFlowTcpSeqNumMetricTag) Name() string { +type PatternFlowIcmpv6EchoChecksumChoiceEnum string - return *obj.obj.Name +// Enum of Choice on PatternFlowIcmpv6EchoChecksum +var PatternFlowIcmpv6EchoChecksumChoice = struct { + GENERATED PatternFlowIcmpv6EchoChecksumChoiceEnum + CUSTOM PatternFlowIcmpv6EchoChecksumChoiceEnum +}{ + GENERATED: PatternFlowIcmpv6EchoChecksumChoiceEnum("generated"), + CUSTOM: PatternFlowIcmpv6EchoChecksumChoiceEnum("custom"), +} +func (obj *patternFlowIcmpv6EchoChecksum) Choice() PatternFlowIcmpv6EchoChecksumChoiceEnum { + return PatternFlowIcmpv6EchoChecksumChoiceEnum(obj.obj.Choice.Enum().String()) } -// Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field -// SetName sets the string value in the PatternFlowTcpSeqNumMetricTag object -func (obj *patternFlowTcpSeqNumMetricTag) SetName(value string) PatternFlowTcpSeqNumMetricTag { +// The type of checksum +// Choice returns a string +func (obj *patternFlowIcmpv6EchoChecksum) HasChoice() bool { + return obj.obj.Choice != nil +} - obj.obj.Name = &value +func (obj *patternFlowIcmpv6EchoChecksum) SetChoice(value PatternFlowIcmpv6EchoChecksumChoiceEnum) PatternFlowIcmpv6EchoChecksum { + intValue, ok := otg.PatternFlowIcmpv6EchoChecksum_Choice_Enum_value[string(value)] + if !ok { + obj.validationErrors = append(obj.validationErrors, fmt.Sprintf( + "%s is not a valid choice on PatternFlowIcmpv6EchoChecksumChoiceEnum", string(value))) + return obj + } + enumValue := otg.PatternFlowIcmpv6EchoChecksum_Choice_Enum(intValue) + obj.obj.Choice = &enumValue + obj.obj.Custom = nil + obj.obj.Generated = otg.PatternFlowIcmpv6EchoChecksum_Generated_unspecified.Enum() return obj } -// Offset in bits relative to start of corresponding header field -// Offset returns a uint32 -func (obj *patternFlowTcpSeqNumMetricTag) Offset() uint32 { +type PatternFlowIcmpv6EchoChecksumGeneratedEnum string - return *obj.obj.Offset +// Enum of Generated on PatternFlowIcmpv6EchoChecksum +var PatternFlowIcmpv6EchoChecksumGenerated = struct { + GOOD PatternFlowIcmpv6EchoChecksumGeneratedEnum + BAD PatternFlowIcmpv6EchoChecksumGeneratedEnum +}{ + GOOD: PatternFlowIcmpv6EchoChecksumGeneratedEnum("good"), + BAD: PatternFlowIcmpv6EchoChecksumGeneratedEnum("bad"), +} +func (obj *patternFlowIcmpv6EchoChecksum) Generated() PatternFlowIcmpv6EchoChecksumGeneratedEnum { + return PatternFlowIcmpv6EchoChecksumGeneratedEnum(obj.obj.Generated.Enum().String()) } -// Offset in bits relative to start of corresponding header field -// Offset returns a uint32 -func (obj *patternFlowTcpSeqNumMetricTag) HasOffset() bool { - return obj.obj.Offset != nil +// A system generated checksum value +// Generated returns a string +func (obj *patternFlowIcmpv6EchoChecksum) HasGenerated() bool { + return obj.obj.Generated != nil } -// Offset in bits relative to start of corresponding header field -// SetOffset sets the uint32 value in the PatternFlowTcpSeqNumMetricTag object -func (obj *patternFlowTcpSeqNumMetricTag) SetOffset(value uint32) PatternFlowTcpSeqNumMetricTag { +func (obj *patternFlowIcmpv6EchoChecksum) SetGenerated(value PatternFlowIcmpv6EchoChecksumGeneratedEnum) PatternFlowIcmpv6EchoChecksum { + intValue, ok := otg.PatternFlowIcmpv6EchoChecksum_Generated_Enum_value[string(value)] + if !ok { + obj.validationErrors = append(obj.validationErrors, fmt.Sprintf( + "%s is not a valid choice on PatternFlowIcmpv6EchoChecksumGeneratedEnum", string(value))) + return obj + } + enumValue := otg.PatternFlowIcmpv6EchoChecksum_Generated_Enum(intValue) + obj.obj.Generated = &enumValue - obj.obj.Offset = &value return obj } -// Number of bits to track for metrics starting from configured offset of corresponding header field -// Length returns a uint32 -func (obj *patternFlowTcpSeqNumMetricTag) Length() uint32 { +// A custom checksum value +// Custom returns a uint32 +func (obj *patternFlowIcmpv6EchoChecksum) Custom() uint32 { - return *obj.obj.Length + if obj.obj.Custom == nil { + obj.SetChoice(PatternFlowIcmpv6EchoChecksumChoice.CUSTOM) + } -} + return *obj.obj.Custom -// Number of bits to track for metrics starting from configured offset of corresponding header field -// Length returns a uint32 -func (obj *patternFlowTcpSeqNumMetricTag) HasLength() bool { - return obj.obj.Length != nil } -// Number of bits to track for metrics starting from configured offset of corresponding header field -// SetLength sets the uint32 value in the PatternFlowTcpSeqNumMetricTag object -func (obj *patternFlowTcpSeqNumMetricTag) SetLength(value uint32) PatternFlowTcpSeqNumMetricTag { +// A custom checksum value +// Custom returns a uint32 +func (obj *patternFlowIcmpv6EchoChecksum) HasCustom() bool { + return obj.obj.Custom != nil +} - obj.obj.Length = &value +// A custom checksum value +// SetCustom sets the uint32 value in the PatternFlowIcmpv6EchoChecksum object +func (obj *patternFlowIcmpv6EchoChecksum) SetCustom(value uint32) PatternFlowIcmpv6EchoChecksum { + obj.SetChoice(PatternFlowIcmpv6EchoChecksumChoice.CUSTOM) + obj.obj.Custom = &value return obj } -func (obj *patternFlowTcpSeqNumMetricTag) validateObj(vObj *validation, set_default bool) { +func (obj *patternFlowIcmpv6EchoChecksum) validateObj(vObj *validation, set_default bool) { if set_default { obj.setDefault() } - // Name is required - if obj.obj.Name == nil { - vObj.validationErrors = append(vObj.validationErrors, "Name is required field on interface PatternFlowTcpSeqNumMetricTag") - } - - if obj.obj.Offset != nil { + if obj.obj.Custom != nil { - if *obj.obj.Offset > 31 { + if *obj.obj.Custom > 65535 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowTcpSeqNumMetricTag.Offset <= 31 but Got %d", *obj.obj.Offset)) + fmt.Sprintf("0 <= PatternFlowIcmpv6EchoChecksum.Custom <= 65535 but Got %d", *obj.obj.Custom)) } } - if obj.obj.Length != nil { - - if *obj.obj.Length < 1 || *obj.obj.Length > 32 { - vObj.validationErrors = append( - vObj.validationErrors, - fmt.Sprintf("1 <= PatternFlowTcpSeqNumMetricTag.Length <= 32 but Got %d", *obj.obj.Length)) - } +} - } +func (obj *patternFlowIcmpv6EchoChecksum) setDefault() { + if obj.obj.Choice == nil { + obj.SetChoice(PatternFlowIcmpv6EchoChecksumChoice.GENERATED) + if obj.obj.Generated.Number() == 0 { + obj.SetGenerated(PatternFlowIcmpv6EchoChecksumGenerated.GOOD) -} + } -func (obj *patternFlowTcpSeqNumMetricTag) setDefault() { - if obj.obj.Offset == nil { - obj.SetOffset(0) - } - if obj.obj.Length == nil { - obj.SetLength(32) } } -// ***** PatternFlowTcpAckNumCounter ***** -type patternFlowTcpAckNumCounter struct { +// ***** PatternFlowPppAddressCounter ***** +type patternFlowPppAddressCounter struct { validation - obj *otg.PatternFlowTcpAckNumCounter + obj *otg.PatternFlowPppAddressCounter } -func NewPatternFlowTcpAckNumCounter() PatternFlowTcpAckNumCounter { - obj := patternFlowTcpAckNumCounter{obj: &otg.PatternFlowTcpAckNumCounter{}} +func NewPatternFlowPppAddressCounter() PatternFlowPppAddressCounter { + obj := patternFlowPppAddressCounter{obj: &otg.PatternFlowPppAddressCounter{}} obj.setDefault() return &obj } -func (obj *patternFlowTcpAckNumCounter) Msg() *otg.PatternFlowTcpAckNumCounter { +func (obj *patternFlowPppAddressCounter) Msg() *otg.PatternFlowPppAddressCounter { return obj.obj } -func (obj *patternFlowTcpAckNumCounter) SetMsg(msg *otg.PatternFlowTcpAckNumCounter) PatternFlowTcpAckNumCounter { +func (obj *patternFlowPppAddressCounter) SetMsg(msg *otg.PatternFlowPppAddressCounter) PatternFlowPppAddressCounter { proto.Merge(obj.obj, msg) return obj } -func (obj *patternFlowTcpAckNumCounter) ToProto() (*otg.PatternFlowTcpAckNumCounter, error) { +func (obj *patternFlowPppAddressCounter) ToProto() (*otg.PatternFlowPppAddressCounter, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -222705,7 +267438,7 @@ func (obj *patternFlowTcpAckNumCounter) ToProto() (*otg.PatternFlowTcpAckNumCoun return obj.Msg(), nil } -func (obj *patternFlowTcpAckNumCounter) FromProto(msg *otg.PatternFlowTcpAckNumCounter) (PatternFlowTcpAckNumCounter, error) { +func (obj *patternFlowPppAddressCounter) FromProto(msg *otg.PatternFlowPppAddressCounter) (PatternFlowPppAddressCounter, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -222714,7 +267447,7 @@ func (obj *patternFlowTcpAckNumCounter) FromProto(msg *otg.PatternFlowTcpAckNumC return newObj, nil } -func (obj *patternFlowTcpAckNumCounter) ToPbText() (string, error) { +func (obj *patternFlowPppAddressCounter) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -222726,7 +267459,7 @@ func (obj *patternFlowTcpAckNumCounter) ToPbText() (string, error) { return string(protoMarshal), nil } -func (obj *patternFlowTcpAckNumCounter) FromPbText(value string) error { +func (obj *patternFlowPppAddressCounter) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj @@ -222739,7 +267472,7 @@ func (obj *patternFlowTcpAckNumCounter) FromPbText(value string) error { return retObj } -func (obj *patternFlowTcpAckNumCounter) ToYaml() (string, error) { +func (obj *patternFlowPppAddressCounter) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -222760,7 +267493,7 @@ func (obj *patternFlowTcpAckNumCounter) ToYaml() (string, error) { return string(data), nil } -func (obj *patternFlowTcpAckNumCounter) FromYaml(value string) error { +func (obj *patternFlowPppAddressCounter) FromYaml(value string) error { if value == "" { value = "{}" } @@ -222785,7 +267518,7 @@ func (obj *patternFlowTcpAckNumCounter) FromYaml(value string) error { return nil } -func (obj *patternFlowTcpAckNumCounter) ToJson() (string, error) { +func (obj *patternFlowPppAddressCounter) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -222803,7 +267536,7 @@ func (obj *patternFlowTcpAckNumCounter) ToJson() (string, error) { return string(data), nil } -func (obj *patternFlowTcpAckNumCounter) FromJson(value string) error { +func (obj *patternFlowPppAddressCounter) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -222824,19 +267557,19 @@ func (obj *patternFlowTcpAckNumCounter) FromJson(value string) error { return nil } -func (obj *patternFlowTcpAckNumCounter) validateToAndFrom() error { +func (obj *patternFlowPppAddressCounter) validateToAndFrom() error { // emptyVars() obj.validateObj(&obj.validation, true) return obj.validationResult() } -func (obj *patternFlowTcpAckNumCounter) Validate() error { +func (obj *patternFlowPppAddressCounter) Validate() error { // emptyVars() obj.validateObj(&obj.validation, false) return obj.validationResult() } -func (obj *patternFlowTcpAckNumCounter) String() string { +func (obj *patternFlowPppAddressCounter) String() string { str, err := obj.ToYaml() if err != nil { return err.Error() @@ -222844,12 +267577,12 @@ func (obj *patternFlowTcpAckNumCounter) String() string { return str } -func (obj *patternFlowTcpAckNumCounter) Clone() (PatternFlowTcpAckNumCounter, error) { +func (obj *patternFlowPppAddressCounter) Clone() (PatternFlowPppAddressCounter, error) { vErr := obj.Validate() if vErr != nil { return nil, vErr } - newObj := NewPatternFlowTcpAckNumCounter() + newObj := NewPatternFlowPppAddressCounter() data, err := proto.Marshal(obj.Msg()) if err != nil { return nil, err @@ -222861,63 +267594,63 @@ func (obj *patternFlowTcpAckNumCounter) Clone() (PatternFlowTcpAckNumCounter, er return newObj, nil } -// PatternFlowTcpAckNumCounter is integer counter pattern -type PatternFlowTcpAckNumCounter interface { +// PatternFlowPppAddressCounter is integer counter pattern +type PatternFlowPppAddressCounter interface { Validation - // Msg marshals PatternFlowTcpAckNumCounter to protobuf object *otg.PatternFlowTcpAckNumCounter + // Msg marshals PatternFlowPppAddressCounter to protobuf object *otg.PatternFlowPppAddressCounter // and doesn't set defaults - Msg() *otg.PatternFlowTcpAckNumCounter - // SetMsg unmarshals PatternFlowTcpAckNumCounter from protobuf object *otg.PatternFlowTcpAckNumCounter + Msg() *otg.PatternFlowPppAddressCounter + // SetMsg unmarshals PatternFlowPppAddressCounter from protobuf object *otg.PatternFlowPppAddressCounter // and doesn't set defaults - SetMsg(*otg.PatternFlowTcpAckNumCounter) PatternFlowTcpAckNumCounter - // ToProto marshals PatternFlowTcpAckNumCounter to protobuf object *otg.PatternFlowTcpAckNumCounter - ToProto() (*otg.PatternFlowTcpAckNumCounter, error) - // ToPbText marshals PatternFlowTcpAckNumCounter to protobuf text + SetMsg(*otg.PatternFlowPppAddressCounter) PatternFlowPppAddressCounter + // ToProto marshals PatternFlowPppAddressCounter to protobuf object *otg.PatternFlowPppAddressCounter + ToProto() (*otg.PatternFlowPppAddressCounter, error) + // ToPbText marshals PatternFlowPppAddressCounter to protobuf text ToPbText() (string, error) - // ToYaml marshals PatternFlowTcpAckNumCounter to YAML text + // ToYaml marshals PatternFlowPppAddressCounter to YAML text ToYaml() (string, error) - // ToJson marshals PatternFlowTcpAckNumCounter to JSON text + // ToJson marshals PatternFlowPppAddressCounter to JSON text ToJson() (string, error) - // FromProto unmarshals PatternFlowTcpAckNumCounter from protobuf object *otg.PatternFlowTcpAckNumCounter - FromProto(msg *otg.PatternFlowTcpAckNumCounter) (PatternFlowTcpAckNumCounter, error) - // FromPbText unmarshals PatternFlowTcpAckNumCounter from protobuf text + // FromProto unmarshals PatternFlowPppAddressCounter from protobuf object *otg.PatternFlowPppAddressCounter + FromProto(msg *otg.PatternFlowPppAddressCounter) (PatternFlowPppAddressCounter, error) + // FromPbText unmarshals PatternFlowPppAddressCounter from protobuf text FromPbText(value string) error - // FromYaml unmarshals PatternFlowTcpAckNumCounter from YAML text + // FromYaml unmarshals PatternFlowPppAddressCounter from YAML text FromYaml(value string) error - // FromJson unmarshals PatternFlowTcpAckNumCounter from JSON text + // FromJson unmarshals PatternFlowPppAddressCounter from JSON text FromJson(value string) error - // Validate validates PatternFlowTcpAckNumCounter + // Validate validates PatternFlowPppAddressCounter Validate() error // A stringer function String() string // Clones the object - Clone() (PatternFlowTcpAckNumCounter, error) + Clone() (PatternFlowPppAddressCounter, error) validateToAndFrom() error validateObj(vObj *validation, set_default bool) setDefault() - // Start returns uint32, set in PatternFlowTcpAckNumCounter. + // Start returns uint32, set in PatternFlowPppAddressCounter. Start() uint32 - // SetStart assigns uint32 provided by user to PatternFlowTcpAckNumCounter - SetStart(value uint32) PatternFlowTcpAckNumCounter - // HasStart checks if Start has been set in PatternFlowTcpAckNumCounter + // SetStart assigns uint32 provided by user to PatternFlowPppAddressCounter + SetStart(value uint32) PatternFlowPppAddressCounter + // HasStart checks if Start has been set in PatternFlowPppAddressCounter HasStart() bool - // Step returns uint32, set in PatternFlowTcpAckNumCounter. + // Step returns uint32, set in PatternFlowPppAddressCounter. Step() uint32 - // SetStep assigns uint32 provided by user to PatternFlowTcpAckNumCounter - SetStep(value uint32) PatternFlowTcpAckNumCounter - // HasStep checks if Step has been set in PatternFlowTcpAckNumCounter + // SetStep assigns uint32 provided by user to PatternFlowPppAddressCounter + SetStep(value uint32) PatternFlowPppAddressCounter + // HasStep checks if Step has been set in PatternFlowPppAddressCounter HasStep() bool - // Count returns uint32, set in PatternFlowTcpAckNumCounter. + // Count returns uint32, set in PatternFlowPppAddressCounter. Count() uint32 - // SetCount assigns uint32 provided by user to PatternFlowTcpAckNumCounter - SetCount(value uint32) PatternFlowTcpAckNumCounter - // HasCount checks if Count has been set in PatternFlowTcpAckNumCounter + // SetCount assigns uint32 provided by user to PatternFlowPppAddressCounter + SetCount(value uint32) PatternFlowPppAddressCounter + // HasCount checks if Count has been set in PatternFlowPppAddressCounter HasCount() bool } // description is TBD // Start returns a uint32 -func (obj *patternFlowTcpAckNumCounter) Start() uint32 { +func (obj *patternFlowPppAddressCounter) Start() uint32 { return *obj.obj.Start @@ -222925,13 +267658,13 @@ func (obj *patternFlowTcpAckNumCounter) Start() uint32 { // description is TBD // Start returns a uint32 -func (obj *patternFlowTcpAckNumCounter) HasStart() bool { +func (obj *patternFlowPppAddressCounter) HasStart() bool { return obj.obj.Start != nil } // description is TBD -// SetStart sets the uint32 value in the PatternFlowTcpAckNumCounter object -func (obj *patternFlowTcpAckNumCounter) SetStart(value uint32) PatternFlowTcpAckNumCounter { +// SetStart sets the uint32 value in the PatternFlowPppAddressCounter object +func (obj *patternFlowPppAddressCounter) SetStart(value uint32) PatternFlowPppAddressCounter { obj.obj.Start = &value return obj @@ -222939,7 +267672,7 @@ func (obj *patternFlowTcpAckNumCounter) SetStart(value uint32) PatternFlowTcpAck // description is TBD // Step returns a uint32 -func (obj *patternFlowTcpAckNumCounter) Step() uint32 { +func (obj *patternFlowPppAddressCounter) Step() uint32 { return *obj.obj.Step @@ -222947,13 +267680,13 @@ func (obj *patternFlowTcpAckNumCounter) Step() uint32 { // description is TBD // Step returns a uint32 -func (obj *patternFlowTcpAckNumCounter) HasStep() bool { +func (obj *patternFlowPppAddressCounter) HasStep() bool { return obj.obj.Step != nil } // description is TBD -// SetStep sets the uint32 value in the PatternFlowTcpAckNumCounter object -func (obj *patternFlowTcpAckNumCounter) SetStep(value uint32) PatternFlowTcpAckNumCounter { +// SetStep sets the uint32 value in the PatternFlowPppAddressCounter object +func (obj *patternFlowPppAddressCounter) SetStep(value uint32) PatternFlowPppAddressCounter { obj.obj.Step = &value return obj @@ -222961,7 +267694,7 @@ func (obj *patternFlowTcpAckNumCounter) SetStep(value uint32) PatternFlowTcpAckN // description is TBD // Count returns a uint32 -func (obj *patternFlowTcpAckNumCounter) Count() uint32 { +func (obj *patternFlowPppAddressCounter) Count() uint32 { return *obj.obj.Count @@ -222969,28 +267702,58 @@ func (obj *patternFlowTcpAckNumCounter) Count() uint32 { // description is TBD // Count returns a uint32 -func (obj *patternFlowTcpAckNumCounter) HasCount() bool { +func (obj *patternFlowPppAddressCounter) HasCount() bool { return obj.obj.Count != nil } // description is TBD -// SetCount sets the uint32 value in the PatternFlowTcpAckNumCounter object -func (obj *patternFlowTcpAckNumCounter) SetCount(value uint32) PatternFlowTcpAckNumCounter { +// SetCount sets the uint32 value in the PatternFlowPppAddressCounter object +func (obj *patternFlowPppAddressCounter) SetCount(value uint32) PatternFlowPppAddressCounter { obj.obj.Count = &value return obj } -func (obj *patternFlowTcpAckNumCounter) validateObj(vObj *validation, set_default bool) { +func (obj *patternFlowPppAddressCounter) validateObj(vObj *validation, set_default bool) { if set_default { obj.setDefault() } + if obj.obj.Start != nil { + + if *obj.obj.Start > 255 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("0 <= PatternFlowPppAddressCounter.Start <= 255 but Got %d", *obj.obj.Start)) + } + + } + + if obj.obj.Step != nil { + + if *obj.obj.Step > 255 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("0 <= PatternFlowPppAddressCounter.Step <= 255 but Got %d", *obj.obj.Step)) + } + + } + + if obj.obj.Count != nil { + + if *obj.obj.Count > 255 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("0 <= PatternFlowPppAddressCounter.Count <= 255 but Got %d", *obj.obj.Count)) + } + + } + } -func (obj *patternFlowTcpAckNumCounter) setDefault() { +func (obj *patternFlowPppAddressCounter) setDefault() { if obj.obj.Start == nil { - obj.SetStart(0) + obj.SetStart(255) } if obj.obj.Step == nil { obj.SetStep(1) @@ -223001,29 +267764,29 @@ func (obj *patternFlowTcpAckNumCounter) setDefault() { } -// ***** PatternFlowTcpAckNumMetricTag ***** -type patternFlowTcpAckNumMetricTag struct { +// ***** PatternFlowPppAddressMetricTag ***** +type patternFlowPppAddressMetricTag struct { validation - obj *otg.PatternFlowTcpAckNumMetricTag + obj *otg.PatternFlowPppAddressMetricTag } -func NewPatternFlowTcpAckNumMetricTag() PatternFlowTcpAckNumMetricTag { - obj := patternFlowTcpAckNumMetricTag{obj: &otg.PatternFlowTcpAckNumMetricTag{}} +func NewPatternFlowPppAddressMetricTag() PatternFlowPppAddressMetricTag { + obj := patternFlowPppAddressMetricTag{obj: &otg.PatternFlowPppAddressMetricTag{}} obj.setDefault() return &obj } -func (obj *patternFlowTcpAckNumMetricTag) Msg() *otg.PatternFlowTcpAckNumMetricTag { +func (obj *patternFlowPppAddressMetricTag) Msg() *otg.PatternFlowPppAddressMetricTag { return obj.obj } -func (obj *patternFlowTcpAckNumMetricTag) SetMsg(msg *otg.PatternFlowTcpAckNumMetricTag) PatternFlowTcpAckNumMetricTag { +func (obj *patternFlowPppAddressMetricTag) SetMsg(msg *otg.PatternFlowPppAddressMetricTag) PatternFlowPppAddressMetricTag { proto.Merge(obj.obj, msg) return obj } -func (obj *patternFlowTcpAckNumMetricTag) ToProto() (*otg.PatternFlowTcpAckNumMetricTag, error) { +func (obj *patternFlowPppAddressMetricTag) ToProto() (*otg.PatternFlowPppAddressMetricTag, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -223031,7 +267794,7 @@ func (obj *patternFlowTcpAckNumMetricTag) ToProto() (*otg.PatternFlowTcpAckNumMe return obj.Msg(), nil } -func (obj *patternFlowTcpAckNumMetricTag) FromProto(msg *otg.PatternFlowTcpAckNumMetricTag) (PatternFlowTcpAckNumMetricTag, error) { +func (obj *patternFlowPppAddressMetricTag) FromProto(msg *otg.PatternFlowPppAddressMetricTag) (PatternFlowPppAddressMetricTag, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -223040,7 +267803,7 @@ func (obj *patternFlowTcpAckNumMetricTag) FromProto(msg *otg.PatternFlowTcpAckNu return newObj, nil } -func (obj *patternFlowTcpAckNumMetricTag) ToPbText() (string, error) { +func (obj *patternFlowPppAddressMetricTag) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -223052,7 +267815,7 @@ func (obj *patternFlowTcpAckNumMetricTag) ToPbText() (string, error) { return string(protoMarshal), nil } -func (obj *patternFlowTcpAckNumMetricTag) FromPbText(value string) error { +func (obj *patternFlowPppAddressMetricTag) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj @@ -223065,7 +267828,7 @@ func (obj *patternFlowTcpAckNumMetricTag) FromPbText(value string) error { return retObj } -func (obj *patternFlowTcpAckNumMetricTag) ToYaml() (string, error) { +func (obj *patternFlowPppAddressMetricTag) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -223086,7 +267849,7 @@ func (obj *patternFlowTcpAckNumMetricTag) ToYaml() (string, error) { return string(data), nil } -func (obj *patternFlowTcpAckNumMetricTag) FromYaml(value string) error { +func (obj *patternFlowPppAddressMetricTag) FromYaml(value string) error { if value == "" { value = "{}" } @@ -223111,7 +267874,7 @@ func (obj *patternFlowTcpAckNumMetricTag) FromYaml(value string) error { return nil } -func (obj *patternFlowTcpAckNumMetricTag) ToJson() (string, error) { +func (obj *patternFlowPppAddressMetricTag) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -223129,7 +267892,7 @@ func (obj *patternFlowTcpAckNumMetricTag) ToJson() (string, error) { return string(data), nil } -func (obj *patternFlowTcpAckNumMetricTag) FromJson(value string) error { +func (obj *patternFlowPppAddressMetricTag) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -223150,19 +267913,19 @@ func (obj *patternFlowTcpAckNumMetricTag) FromJson(value string) error { return nil } -func (obj *patternFlowTcpAckNumMetricTag) validateToAndFrom() error { +func (obj *patternFlowPppAddressMetricTag) validateToAndFrom() error { // emptyVars() obj.validateObj(&obj.validation, true) return obj.validationResult() } -func (obj *patternFlowTcpAckNumMetricTag) Validate() error { +func (obj *patternFlowPppAddressMetricTag) Validate() error { // emptyVars() obj.validateObj(&obj.validation, false) return obj.validationResult() } -func (obj *patternFlowTcpAckNumMetricTag) String() string { +func (obj *patternFlowPppAddressMetricTag) String() string { str, err := obj.ToYaml() if err != nil { return err.Error() @@ -223170,12 +267933,12 @@ func (obj *patternFlowTcpAckNumMetricTag) String() string { return str } -func (obj *patternFlowTcpAckNumMetricTag) Clone() (PatternFlowTcpAckNumMetricTag, error) { +func (obj *patternFlowPppAddressMetricTag) Clone() (PatternFlowPppAddressMetricTag, error) { vErr := obj.Validate() if vErr != nil { return nil, vErr } - newObj := NewPatternFlowTcpAckNumMetricTag() + newObj := NewPatternFlowPppAddressMetricTag() data, err := proto.Marshal(obj.Msg()) if err != nil { return nil, err @@ -223187,69 +267950,69 @@ func (obj *patternFlowTcpAckNumMetricTag) Clone() (PatternFlowTcpAckNumMetricTag return newObj, nil } -// PatternFlowTcpAckNumMetricTag is metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. -type PatternFlowTcpAckNumMetricTag interface { +// PatternFlowPppAddressMetricTag is metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. +type PatternFlowPppAddressMetricTag interface { Validation - // Msg marshals PatternFlowTcpAckNumMetricTag to protobuf object *otg.PatternFlowTcpAckNumMetricTag + // Msg marshals PatternFlowPppAddressMetricTag to protobuf object *otg.PatternFlowPppAddressMetricTag // and doesn't set defaults - Msg() *otg.PatternFlowTcpAckNumMetricTag - // SetMsg unmarshals PatternFlowTcpAckNumMetricTag from protobuf object *otg.PatternFlowTcpAckNumMetricTag + Msg() *otg.PatternFlowPppAddressMetricTag + // SetMsg unmarshals PatternFlowPppAddressMetricTag from protobuf object *otg.PatternFlowPppAddressMetricTag // and doesn't set defaults - SetMsg(*otg.PatternFlowTcpAckNumMetricTag) PatternFlowTcpAckNumMetricTag - // ToProto marshals PatternFlowTcpAckNumMetricTag to protobuf object *otg.PatternFlowTcpAckNumMetricTag - ToProto() (*otg.PatternFlowTcpAckNumMetricTag, error) - // ToPbText marshals PatternFlowTcpAckNumMetricTag to protobuf text + SetMsg(*otg.PatternFlowPppAddressMetricTag) PatternFlowPppAddressMetricTag + // ToProto marshals PatternFlowPppAddressMetricTag to protobuf object *otg.PatternFlowPppAddressMetricTag + ToProto() (*otg.PatternFlowPppAddressMetricTag, error) + // ToPbText marshals PatternFlowPppAddressMetricTag to protobuf text ToPbText() (string, error) - // ToYaml marshals PatternFlowTcpAckNumMetricTag to YAML text + // ToYaml marshals PatternFlowPppAddressMetricTag to YAML text ToYaml() (string, error) - // ToJson marshals PatternFlowTcpAckNumMetricTag to JSON text + // ToJson marshals PatternFlowPppAddressMetricTag to JSON text ToJson() (string, error) - // FromProto unmarshals PatternFlowTcpAckNumMetricTag from protobuf object *otg.PatternFlowTcpAckNumMetricTag - FromProto(msg *otg.PatternFlowTcpAckNumMetricTag) (PatternFlowTcpAckNumMetricTag, error) - // FromPbText unmarshals PatternFlowTcpAckNumMetricTag from protobuf text + // FromProto unmarshals PatternFlowPppAddressMetricTag from protobuf object *otg.PatternFlowPppAddressMetricTag + FromProto(msg *otg.PatternFlowPppAddressMetricTag) (PatternFlowPppAddressMetricTag, error) + // FromPbText unmarshals PatternFlowPppAddressMetricTag from protobuf text FromPbText(value string) error - // FromYaml unmarshals PatternFlowTcpAckNumMetricTag from YAML text + // FromYaml unmarshals PatternFlowPppAddressMetricTag from YAML text FromYaml(value string) error - // FromJson unmarshals PatternFlowTcpAckNumMetricTag from JSON text + // FromJson unmarshals PatternFlowPppAddressMetricTag from JSON text FromJson(value string) error - // Validate validates PatternFlowTcpAckNumMetricTag + // Validate validates PatternFlowPppAddressMetricTag Validate() error // A stringer function String() string // Clones the object - Clone() (PatternFlowTcpAckNumMetricTag, error) + Clone() (PatternFlowPppAddressMetricTag, error) validateToAndFrom() error validateObj(vObj *validation, set_default bool) setDefault() - // Name returns string, set in PatternFlowTcpAckNumMetricTag. + // Name returns string, set in PatternFlowPppAddressMetricTag. Name() string - // SetName assigns string provided by user to PatternFlowTcpAckNumMetricTag - SetName(value string) PatternFlowTcpAckNumMetricTag - // Offset returns uint32, set in PatternFlowTcpAckNumMetricTag. + // SetName assigns string provided by user to PatternFlowPppAddressMetricTag + SetName(value string) PatternFlowPppAddressMetricTag + // Offset returns uint32, set in PatternFlowPppAddressMetricTag. Offset() uint32 - // SetOffset assigns uint32 provided by user to PatternFlowTcpAckNumMetricTag - SetOffset(value uint32) PatternFlowTcpAckNumMetricTag - // HasOffset checks if Offset has been set in PatternFlowTcpAckNumMetricTag + // SetOffset assigns uint32 provided by user to PatternFlowPppAddressMetricTag + SetOffset(value uint32) PatternFlowPppAddressMetricTag + // HasOffset checks if Offset has been set in PatternFlowPppAddressMetricTag HasOffset() bool - // Length returns uint32, set in PatternFlowTcpAckNumMetricTag. + // Length returns uint32, set in PatternFlowPppAddressMetricTag. Length() uint32 - // SetLength assigns uint32 provided by user to PatternFlowTcpAckNumMetricTag - SetLength(value uint32) PatternFlowTcpAckNumMetricTag - // HasLength checks if Length has been set in PatternFlowTcpAckNumMetricTag + // SetLength assigns uint32 provided by user to PatternFlowPppAddressMetricTag + SetLength(value uint32) PatternFlowPppAddressMetricTag + // HasLength checks if Length has been set in PatternFlowPppAddressMetricTag HasLength() bool } // Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field // Name returns a string -func (obj *patternFlowTcpAckNumMetricTag) Name() string { +func (obj *patternFlowPppAddressMetricTag) Name() string { return *obj.obj.Name } // Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field -// SetName sets the string value in the PatternFlowTcpAckNumMetricTag object -func (obj *patternFlowTcpAckNumMetricTag) SetName(value string) PatternFlowTcpAckNumMetricTag { +// SetName sets the string value in the PatternFlowPppAddressMetricTag object +func (obj *patternFlowPppAddressMetricTag) SetName(value string) PatternFlowPppAddressMetricTag { obj.obj.Name = &value return obj @@ -223257,7 +268020,7 @@ func (obj *patternFlowTcpAckNumMetricTag) SetName(value string) PatternFlowTcpAc // Offset in bits relative to start of corresponding header field // Offset returns a uint32 -func (obj *patternFlowTcpAckNumMetricTag) Offset() uint32 { +func (obj *patternFlowPppAddressMetricTag) Offset() uint32 { return *obj.obj.Offset @@ -223265,13 +268028,13 @@ func (obj *patternFlowTcpAckNumMetricTag) Offset() uint32 { // Offset in bits relative to start of corresponding header field // Offset returns a uint32 -func (obj *patternFlowTcpAckNumMetricTag) HasOffset() bool { +func (obj *patternFlowPppAddressMetricTag) HasOffset() bool { return obj.obj.Offset != nil } // Offset in bits relative to start of corresponding header field -// SetOffset sets the uint32 value in the PatternFlowTcpAckNumMetricTag object -func (obj *patternFlowTcpAckNumMetricTag) SetOffset(value uint32) PatternFlowTcpAckNumMetricTag { +// SetOffset sets the uint32 value in the PatternFlowPppAddressMetricTag object +func (obj *patternFlowPppAddressMetricTag) SetOffset(value uint32) PatternFlowPppAddressMetricTag { obj.obj.Offset = &value return obj @@ -223279,7 +268042,7 @@ func (obj *patternFlowTcpAckNumMetricTag) SetOffset(value uint32) PatternFlowTcp // Number of bits to track for metrics starting from configured offset of corresponding header field // Length returns a uint32 -func (obj *patternFlowTcpAckNumMetricTag) Length() uint32 { +func (obj *patternFlowPppAddressMetricTag) Length() uint32 { return *obj.obj.Length @@ -223287,83 +268050,83 @@ func (obj *patternFlowTcpAckNumMetricTag) Length() uint32 { // Number of bits to track for metrics starting from configured offset of corresponding header field // Length returns a uint32 -func (obj *patternFlowTcpAckNumMetricTag) HasLength() bool { +func (obj *patternFlowPppAddressMetricTag) HasLength() bool { return obj.obj.Length != nil } // Number of bits to track for metrics starting from configured offset of corresponding header field -// SetLength sets the uint32 value in the PatternFlowTcpAckNumMetricTag object -func (obj *patternFlowTcpAckNumMetricTag) SetLength(value uint32) PatternFlowTcpAckNumMetricTag { +// SetLength sets the uint32 value in the PatternFlowPppAddressMetricTag object +func (obj *patternFlowPppAddressMetricTag) SetLength(value uint32) PatternFlowPppAddressMetricTag { obj.obj.Length = &value return obj } -func (obj *patternFlowTcpAckNumMetricTag) validateObj(vObj *validation, set_default bool) { +func (obj *patternFlowPppAddressMetricTag) validateObj(vObj *validation, set_default bool) { if set_default { obj.setDefault() } // Name is required if obj.obj.Name == nil { - vObj.validationErrors = append(vObj.validationErrors, "Name is required field on interface PatternFlowTcpAckNumMetricTag") + vObj.validationErrors = append(vObj.validationErrors, "Name is required field on interface PatternFlowPppAddressMetricTag") } if obj.obj.Offset != nil { - if *obj.obj.Offset > 31 { + if *obj.obj.Offset > 7 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowTcpAckNumMetricTag.Offset <= 31 but Got %d", *obj.obj.Offset)) + fmt.Sprintf("0 <= PatternFlowPppAddressMetricTag.Offset <= 7 but Got %d", *obj.obj.Offset)) } } if obj.obj.Length != nil { - if *obj.obj.Length < 1 || *obj.obj.Length > 32 { + if *obj.obj.Length < 1 || *obj.obj.Length > 8 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("1 <= PatternFlowTcpAckNumMetricTag.Length <= 32 but Got %d", *obj.obj.Length)) + fmt.Sprintf("1 <= PatternFlowPppAddressMetricTag.Length <= 8 but Got %d", *obj.obj.Length)) } } } -func (obj *patternFlowTcpAckNumMetricTag) setDefault() { +func (obj *patternFlowPppAddressMetricTag) setDefault() { if obj.obj.Offset == nil { obj.SetOffset(0) } if obj.obj.Length == nil { - obj.SetLength(32) + obj.SetLength(8) } } -// ***** PatternFlowTcpDataOffsetCounter ***** -type patternFlowTcpDataOffsetCounter struct { +// ***** PatternFlowPppControlCounter ***** +type patternFlowPppControlCounter struct { validation - obj *otg.PatternFlowTcpDataOffsetCounter + obj *otg.PatternFlowPppControlCounter } -func NewPatternFlowTcpDataOffsetCounter() PatternFlowTcpDataOffsetCounter { - obj := patternFlowTcpDataOffsetCounter{obj: &otg.PatternFlowTcpDataOffsetCounter{}} +func NewPatternFlowPppControlCounter() PatternFlowPppControlCounter { + obj := patternFlowPppControlCounter{obj: &otg.PatternFlowPppControlCounter{}} obj.setDefault() return &obj } -func (obj *patternFlowTcpDataOffsetCounter) Msg() *otg.PatternFlowTcpDataOffsetCounter { +func (obj *patternFlowPppControlCounter) Msg() *otg.PatternFlowPppControlCounter { return obj.obj } -func (obj *patternFlowTcpDataOffsetCounter) SetMsg(msg *otg.PatternFlowTcpDataOffsetCounter) PatternFlowTcpDataOffsetCounter { +func (obj *patternFlowPppControlCounter) SetMsg(msg *otg.PatternFlowPppControlCounter) PatternFlowPppControlCounter { proto.Merge(obj.obj, msg) return obj } -func (obj *patternFlowTcpDataOffsetCounter) ToProto() (*otg.PatternFlowTcpDataOffsetCounter, error) { +func (obj *patternFlowPppControlCounter) ToProto() (*otg.PatternFlowPppControlCounter, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -223371,7 +268134,7 @@ func (obj *patternFlowTcpDataOffsetCounter) ToProto() (*otg.PatternFlowTcpDataOf return obj.Msg(), nil } -func (obj *patternFlowTcpDataOffsetCounter) FromProto(msg *otg.PatternFlowTcpDataOffsetCounter) (PatternFlowTcpDataOffsetCounter, error) { +func (obj *patternFlowPppControlCounter) FromProto(msg *otg.PatternFlowPppControlCounter) (PatternFlowPppControlCounter, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -223380,7 +268143,7 @@ func (obj *patternFlowTcpDataOffsetCounter) FromProto(msg *otg.PatternFlowTcpDat return newObj, nil } -func (obj *patternFlowTcpDataOffsetCounter) ToPbText() (string, error) { +func (obj *patternFlowPppControlCounter) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -223392,7 +268155,7 @@ func (obj *patternFlowTcpDataOffsetCounter) ToPbText() (string, error) { return string(protoMarshal), nil } -func (obj *patternFlowTcpDataOffsetCounter) FromPbText(value string) error { +func (obj *patternFlowPppControlCounter) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj @@ -223405,7 +268168,7 @@ func (obj *patternFlowTcpDataOffsetCounter) FromPbText(value string) error { return retObj } -func (obj *patternFlowTcpDataOffsetCounter) ToYaml() (string, error) { +func (obj *patternFlowPppControlCounter) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -223426,7 +268189,7 @@ func (obj *patternFlowTcpDataOffsetCounter) ToYaml() (string, error) { return string(data), nil } -func (obj *patternFlowTcpDataOffsetCounter) FromYaml(value string) error { +func (obj *patternFlowPppControlCounter) FromYaml(value string) error { if value == "" { value = "{}" } @@ -223451,7 +268214,7 @@ func (obj *patternFlowTcpDataOffsetCounter) FromYaml(value string) error { return nil } -func (obj *patternFlowTcpDataOffsetCounter) ToJson() (string, error) { +func (obj *patternFlowPppControlCounter) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -223469,7 +268232,7 @@ func (obj *patternFlowTcpDataOffsetCounter) ToJson() (string, error) { return string(data), nil } -func (obj *patternFlowTcpDataOffsetCounter) FromJson(value string) error { +func (obj *patternFlowPppControlCounter) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -223490,19 +268253,19 @@ func (obj *patternFlowTcpDataOffsetCounter) FromJson(value string) error { return nil } -func (obj *patternFlowTcpDataOffsetCounter) validateToAndFrom() error { +func (obj *patternFlowPppControlCounter) validateToAndFrom() error { // emptyVars() obj.validateObj(&obj.validation, true) return obj.validationResult() } -func (obj *patternFlowTcpDataOffsetCounter) Validate() error { +func (obj *patternFlowPppControlCounter) Validate() error { // emptyVars() obj.validateObj(&obj.validation, false) return obj.validationResult() } -func (obj *patternFlowTcpDataOffsetCounter) String() string { +func (obj *patternFlowPppControlCounter) String() string { str, err := obj.ToYaml() if err != nil { return err.Error() @@ -223510,12 +268273,12 @@ func (obj *patternFlowTcpDataOffsetCounter) String() string { return str } -func (obj *patternFlowTcpDataOffsetCounter) Clone() (PatternFlowTcpDataOffsetCounter, error) { +func (obj *patternFlowPppControlCounter) Clone() (PatternFlowPppControlCounter, error) { vErr := obj.Validate() if vErr != nil { return nil, vErr } - newObj := NewPatternFlowTcpDataOffsetCounter() + newObj := NewPatternFlowPppControlCounter() data, err := proto.Marshal(obj.Msg()) if err != nil { return nil, err @@ -223527,63 +268290,63 @@ func (obj *patternFlowTcpDataOffsetCounter) Clone() (PatternFlowTcpDataOffsetCou return newObj, nil } -// PatternFlowTcpDataOffsetCounter is integer counter pattern -type PatternFlowTcpDataOffsetCounter interface { +// PatternFlowPppControlCounter is integer counter pattern +type PatternFlowPppControlCounter interface { Validation - // Msg marshals PatternFlowTcpDataOffsetCounter to protobuf object *otg.PatternFlowTcpDataOffsetCounter + // Msg marshals PatternFlowPppControlCounter to protobuf object *otg.PatternFlowPppControlCounter // and doesn't set defaults - Msg() *otg.PatternFlowTcpDataOffsetCounter - // SetMsg unmarshals PatternFlowTcpDataOffsetCounter from protobuf object *otg.PatternFlowTcpDataOffsetCounter + Msg() *otg.PatternFlowPppControlCounter + // SetMsg unmarshals PatternFlowPppControlCounter from protobuf object *otg.PatternFlowPppControlCounter // and doesn't set defaults - SetMsg(*otg.PatternFlowTcpDataOffsetCounter) PatternFlowTcpDataOffsetCounter - // ToProto marshals PatternFlowTcpDataOffsetCounter to protobuf object *otg.PatternFlowTcpDataOffsetCounter - ToProto() (*otg.PatternFlowTcpDataOffsetCounter, error) - // ToPbText marshals PatternFlowTcpDataOffsetCounter to protobuf text + SetMsg(*otg.PatternFlowPppControlCounter) PatternFlowPppControlCounter + // ToProto marshals PatternFlowPppControlCounter to protobuf object *otg.PatternFlowPppControlCounter + ToProto() (*otg.PatternFlowPppControlCounter, error) + // ToPbText marshals PatternFlowPppControlCounter to protobuf text ToPbText() (string, error) - // ToYaml marshals PatternFlowTcpDataOffsetCounter to YAML text + // ToYaml marshals PatternFlowPppControlCounter to YAML text ToYaml() (string, error) - // ToJson marshals PatternFlowTcpDataOffsetCounter to JSON text + // ToJson marshals PatternFlowPppControlCounter to JSON text ToJson() (string, error) - // FromProto unmarshals PatternFlowTcpDataOffsetCounter from protobuf object *otg.PatternFlowTcpDataOffsetCounter - FromProto(msg *otg.PatternFlowTcpDataOffsetCounter) (PatternFlowTcpDataOffsetCounter, error) - // FromPbText unmarshals PatternFlowTcpDataOffsetCounter from protobuf text + // FromProto unmarshals PatternFlowPppControlCounter from protobuf object *otg.PatternFlowPppControlCounter + FromProto(msg *otg.PatternFlowPppControlCounter) (PatternFlowPppControlCounter, error) + // FromPbText unmarshals PatternFlowPppControlCounter from protobuf text FromPbText(value string) error - // FromYaml unmarshals PatternFlowTcpDataOffsetCounter from YAML text + // FromYaml unmarshals PatternFlowPppControlCounter from YAML text FromYaml(value string) error - // FromJson unmarshals PatternFlowTcpDataOffsetCounter from JSON text + // FromJson unmarshals PatternFlowPppControlCounter from JSON text FromJson(value string) error - // Validate validates PatternFlowTcpDataOffsetCounter + // Validate validates PatternFlowPppControlCounter Validate() error // A stringer function String() string // Clones the object - Clone() (PatternFlowTcpDataOffsetCounter, error) + Clone() (PatternFlowPppControlCounter, error) validateToAndFrom() error validateObj(vObj *validation, set_default bool) setDefault() - // Start returns uint32, set in PatternFlowTcpDataOffsetCounter. + // Start returns uint32, set in PatternFlowPppControlCounter. Start() uint32 - // SetStart assigns uint32 provided by user to PatternFlowTcpDataOffsetCounter - SetStart(value uint32) PatternFlowTcpDataOffsetCounter - // HasStart checks if Start has been set in PatternFlowTcpDataOffsetCounter + // SetStart assigns uint32 provided by user to PatternFlowPppControlCounter + SetStart(value uint32) PatternFlowPppControlCounter + // HasStart checks if Start has been set in PatternFlowPppControlCounter HasStart() bool - // Step returns uint32, set in PatternFlowTcpDataOffsetCounter. + // Step returns uint32, set in PatternFlowPppControlCounter. Step() uint32 - // SetStep assigns uint32 provided by user to PatternFlowTcpDataOffsetCounter - SetStep(value uint32) PatternFlowTcpDataOffsetCounter - // HasStep checks if Step has been set in PatternFlowTcpDataOffsetCounter + // SetStep assigns uint32 provided by user to PatternFlowPppControlCounter + SetStep(value uint32) PatternFlowPppControlCounter + // HasStep checks if Step has been set in PatternFlowPppControlCounter HasStep() bool - // Count returns uint32, set in PatternFlowTcpDataOffsetCounter. + // Count returns uint32, set in PatternFlowPppControlCounter. Count() uint32 - // SetCount assigns uint32 provided by user to PatternFlowTcpDataOffsetCounter - SetCount(value uint32) PatternFlowTcpDataOffsetCounter - // HasCount checks if Count has been set in PatternFlowTcpDataOffsetCounter + // SetCount assigns uint32 provided by user to PatternFlowPppControlCounter + SetCount(value uint32) PatternFlowPppControlCounter + // HasCount checks if Count has been set in PatternFlowPppControlCounter HasCount() bool } // description is TBD // Start returns a uint32 -func (obj *patternFlowTcpDataOffsetCounter) Start() uint32 { +func (obj *patternFlowPppControlCounter) Start() uint32 { return *obj.obj.Start @@ -223591,13 +268354,13 @@ func (obj *patternFlowTcpDataOffsetCounter) Start() uint32 { // description is TBD // Start returns a uint32 -func (obj *patternFlowTcpDataOffsetCounter) HasStart() bool { +func (obj *patternFlowPppControlCounter) HasStart() bool { return obj.obj.Start != nil } // description is TBD -// SetStart sets the uint32 value in the PatternFlowTcpDataOffsetCounter object -func (obj *patternFlowTcpDataOffsetCounter) SetStart(value uint32) PatternFlowTcpDataOffsetCounter { +// SetStart sets the uint32 value in the PatternFlowPppControlCounter object +func (obj *patternFlowPppControlCounter) SetStart(value uint32) PatternFlowPppControlCounter { obj.obj.Start = &value return obj @@ -223605,7 +268368,7 @@ func (obj *patternFlowTcpDataOffsetCounter) SetStart(value uint32) PatternFlowTc // description is TBD // Step returns a uint32 -func (obj *patternFlowTcpDataOffsetCounter) Step() uint32 { +func (obj *patternFlowPppControlCounter) Step() uint32 { return *obj.obj.Step @@ -223613,13 +268376,13 @@ func (obj *patternFlowTcpDataOffsetCounter) Step() uint32 { // description is TBD // Step returns a uint32 -func (obj *patternFlowTcpDataOffsetCounter) HasStep() bool { +func (obj *patternFlowPppControlCounter) HasStep() bool { return obj.obj.Step != nil } // description is TBD -// SetStep sets the uint32 value in the PatternFlowTcpDataOffsetCounter object -func (obj *patternFlowTcpDataOffsetCounter) SetStep(value uint32) PatternFlowTcpDataOffsetCounter { +// SetStep sets the uint32 value in the PatternFlowPppControlCounter object +func (obj *patternFlowPppControlCounter) SetStep(value uint32) PatternFlowPppControlCounter { obj.obj.Step = &value return obj @@ -223627,7 +268390,7 @@ func (obj *patternFlowTcpDataOffsetCounter) SetStep(value uint32) PatternFlowTcp // description is TBD // Count returns a uint32 -func (obj *patternFlowTcpDataOffsetCounter) Count() uint32 { +func (obj *patternFlowPppControlCounter) Count() uint32 { return *obj.obj.Count @@ -223635,58 +268398,58 @@ func (obj *patternFlowTcpDataOffsetCounter) Count() uint32 { // description is TBD // Count returns a uint32 -func (obj *patternFlowTcpDataOffsetCounter) HasCount() bool { +func (obj *patternFlowPppControlCounter) HasCount() bool { return obj.obj.Count != nil } // description is TBD -// SetCount sets the uint32 value in the PatternFlowTcpDataOffsetCounter object -func (obj *patternFlowTcpDataOffsetCounter) SetCount(value uint32) PatternFlowTcpDataOffsetCounter { +// SetCount sets the uint32 value in the PatternFlowPppControlCounter object +func (obj *patternFlowPppControlCounter) SetCount(value uint32) PatternFlowPppControlCounter { obj.obj.Count = &value return obj } -func (obj *patternFlowTcpDataOffsetCounter) validateObj(vObj *validation, set_default bool) { +func (obj *patternFlowPppControlCounter) validateObj(vObj *validation, set_default bool) { if set_default { obj.setDefault() } if obj.obj.Start != nil { - if *obj.obj.Start > 15 { + if *obj.obj.Start > 255 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowTcpDataOffsetCounter.Start <= 15 but Got %d", *obj.obj.Start)) + fmt.Sprintf("0 <= PatternFlowPppControlCounter.Start <= 255 but Got %d", *obj.obj.Start)) } } if obj.obj.Step != nil { - if *obj.obj.Step > 15 { + if *obj.obj.Step > 255 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowTcpDataOffsetCounter.Step <= 15 but Got %d", *obj.obj.Step)) + fmt.Sprintf("0 <= PatternFlowPppControlCounter.Step <= 255 but Got %d", *obj.obj.Step)) } } if obj.obj.Count != nil { - if *obj.obj.Count > 15 { + if *obj.obj.Count > 255 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowTcpDataOffsetCounter.Count <= 15 but Got %d", *obj.obj.Count)) + fmt.Sprintf("0 <= PatternFlowPppControlCounter.Count <= 255 but Got %d", *obj.obj.Count)) } } } -func (obj *patternFlowTcpDataOffsetCounter) setDefault() { +func (obj *patternFlowPppControlCounter) setDefault() { if obj.obj.Start == nil { - obj.SetStart(0) + obj.SetStart(3) } if obj.obj.Step == nil { obj.SetStep(1) @@ -223697,29 +268460,29 @@ func (obj *patternFlowTcpDataOffsetCounter) setDefault() { } -// ***** PatternFlowTcpDataOffsetMetricTag ***** -type patternFlowTcpDataOffsetMetricTag struct { +// ***** PatternFlowPppControlMetricTag ***** +type patternFlowPppControlMetricTag struct { validation - obj *otg.PatternFlowTcpDataOffsetMetricTag + obj *otg.PatternFlowPppControlMetricTag } -func NewPatternFlowTcpDataOffsetMetricTag() PatternFlowTcpDataOffsetMetricTag { - obj := patternFlowTcpDataOffsetMetricTag{obj: &otg.PatternFlowTcpDataOffsetMetricTag{}} +func NewPatternFlowPppControlMetricTag() PatternFlowPppControlMetricTag { + obj := patternFlowPppControlMetricTag{obj: &otg.PatternFlowPppControlMetricTag{}} obj.setDefault() return &obj } -func (obj *patternFlowTcpDataOffsetMetricTag) Msg() *otg.PatternFlowTcpDataOffsetMetricTag { +func (obj *patternFlowPppControlMetricTag) Msg() *otg.PatternFlowPppControlMetricTag { return obj.obj } -func (obj *patternFlowTcpDataOffsetMetricTag) SetMsg(msg *otg.PatternFlowTcpDataOffsetMetricTag) PatternFlowTcpDataOffsetMetricTag { +func (obj *patternFlowPppControlMetricTag) SetMsg(msg *otg.PatternFlowPppControlMetricTag) PatternFlowPppControlMetricTag { proto.Merge(obj.obj, msg) return obj } -func (obj *patternFlowTcpDataOffsetMetricTag) ToProto() (*otg.PatternFlowTcpDataOffsetMetricTag, error) { +func (obj *patternFlowPppControlMetricTag) ToProto() (*otg.PatternFlowPppControlMetricTag, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -223727,7 +268490,7 @@ func (obj *patternFlowTcpDataOffsetMetricTag) ToProto() (*otg.PatternFlowTcpData return obj.Msg(), nil } -func (obj *patternFlowTcpDataOffsetMetricTag) FromProto(msg *otg.PatternFlowTcpDataOffsetMetricTag) (PatternFlowTcpDataOffsetMetricTag, error) { +func (obj *patternFlowPppControlMetricTag) FromProto(msg *otg.PatternFlowPppControlMetricTag) (PatternFlowPppControlMetricTag, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -223736,7 +268499,7 @@ func (obj *patternFlowTcpDataOffsetMetricTag) FromProto(msg *otg.PatternFlowTcpD return newObj, nil } -func (obj *patternFlowTcpDataOffsetMetricTag) ToPbText() (string, error) { +func (obj *patternFlowPppControlMetricTag) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -223748,7 +268511,7 @@ func (obj *patternFlowTcpDataOffsetMetricTag) ToPbText() (string, error) { return string(protoMarshal), nil } -func (obj *patternFlowTcpDataOffsetMetricTag) FromPbText(value string) error { +func (obj *patternFlowPppControlMetricTag) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj @@ -223761,7 +268524,7 @@ func (obj *patternFlowTcpDataOffsetMetricTag) FromPbText(value string) error { return retObj } -func (obj *patternFlowTcpDataOffsetMetricTag) ToYaml() (string, error) { +func (obj *patternFlowPppControlMetricTag) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -223782,7 +268545,7 @@ func (obj *patternFlowTcpDataOffsetMetricTag) ToYaml() (string, error) { return string(data), nil } -func (obj *patternFlowTcpDataOffsetMetricTag) FromYaml(value string) error { +func (obj *patternFlowPppControlMetricTag) FromYaml(value string) error { if value == "" { value = "{}" } @@ -223807,7 +268570,7 @@ func (obj *patternFlowTcpDataOffsetMetricTag) FromYaml(value string) error { return nil } -func (obj *patternFlowTcpDataOffsetMetricTag) ToJson() (string, error) { +func (obj *patternFlowPppControlMetricTag) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -223825,7 +268588,7 @@ func (obj *patternFlowTcpDataOffsetMetricTag) ToJson() (string, error) { return string(data), nil } -func (obj *patternFlowTcpDataOffsetMetricTag) FromJson(value string) error { +func (obj *patternFlowPppControlMetricTag) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -223846,19 +268609,19 @@ func (obj *patternFlowTcpDataOffsetMetricTag) FromJson(value string) error { return nil } -func (obj *patternFlowTcpDataOffsetMetricTag) validateToAndFrom() error { +func (obj *patternFlowPppControlMetricTag) validateToAndFrom() error { // emptyVars() obj.validateObj(&obj.validation, true) return obj.validationResult() } -func (obj *patternFlowTcpDataOffsetMetricTag) Validate() error { +func (obj *patternFlowPppControlMetricTag) Validate() error { // emptyVars() obj.validateObj(&obj.validation, false) return obj.validationResult() } -func (obj *patternFlowTcpDataOffsetMetricTag) String() string { +func (obj *patternFlowPppControlMetricTag) String() string { str, err := obj.ToYaml() if err != nil { return err.Error() @@ -223866,12 +268629,12 @@ func (obj *patternFlowTcpDataOffsetMetricTag) String() string { return str } -func (obj *patternFlowTcpDataOffsetMetricTag) Clone() (PatternFlowTcpDataOffsetMetricTag, error) { +func (obj *patternFlowPppControlMetricTag) Clone() (PatternFlowPppControlMetricTag, error) { vErr := obj.Validate() if vErr != nil { return nil, vErr } - newObj := NewPatternFlowTcpDataOffsetMetricTag() + newObj := NewPatternFlowPppControlMetricTag() data, err := proto.Marshal(obj.Msg()) if err != nil { return nil, err @@ -223883,69 +268646,69 @@ func (obj *patternFlowTcpDataOffsetMetricTag) Clone() (PatternFlowTcpDataOffsetM return newObj, nil } -// PatternFlowTcpDataOffsetMetricTag is metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. -type PatternFlowTcpDataOffsetMetricTag interface { +// PatternFlowPppControlMetricTag is metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. +type PatternFlowPppControlMetricTag interface { Validation - // Msg marshals PatternFlowTcpDataOffsetMetricTag to protobuf object *otg.PatternFlowTcpDataOffsetMetricTag + // Msg marshals PatternFlowPppControlMetricTag to protobuf object *otg.PatternFlowPppControlMetricTag // and doesn't set defaults - Msg() *otg.PatternFlowTcpDataOffsetMetricTag - // SetMsg unmarshals PatternFlowTcpDataOffsetMetricTag from protobuf object *otg.PatternFlowTcpDataOffsetMetricTag + Msg() *otg.PatternFlowPppControlMetricTag + // SetMsg unmarshals PatternFlowPppControlMetricTag from protobuf object *otg.PatternFlowPppControlMetricTag // and doesn't set defaults - SetMsg(*otg.PatternFlowTcpDataOffsetMetricTag) PatternFlowTcpDataOffsetMetricTag - // ToProto marshals PatternFlowTcpDataOffsetMetricTag to protobuf object *otg.PatternFlowTcpDataOffsetMetricTag - ToProto() (*otg.PatternFlowTcpDataOffsetMetricTag, error) - // ToPbText marshals PatternFlowTcpDataOffsetMetricTag to protobuf text + SetMsg(*otg.PatternFlowPppControlMetricTag) PatternFlowPppControlMetricTag + // ToProto marshals PatternFlowPppControlMetricTag to protobuf object *otg.PatternFlowPppControlMetricTag + ToProto() (*otg.PatternFlowPppControlMetricTag, error) + // ToPbText marshals PatternFlowPppControlMetricTag to protobuf text ToPbText() (string, error) - // ToYaml marshals PatternFlowTcpDataOffsetMetricTag to YAML text + // ToYaml marshals PatternFlowPppControlMetricTag to YAML text ToYaml() (string, error) - // ToJson marshals PatternFlowTcpDataOffsetMetricTag to JSON text + // ToJson marshals PatternFlowPppControlMetricTag to JSON text ToJson() (string, error) - // FromProto unmarshals PatternFlowTcpDataOffsetMetricTag from protobuf object *otg.PatternFlowTcpDataOffsetMetricTag - FromProto(msg *otg.PatternFlowTcpDataOffsetMetricTag) (PatternFlowTcpDataOffsetMetricTag, error) - // FromPbText unmarshals PatternFlowTcpDataOffsetMetricTag from protobuf text + // FromProto unmarshals PatternFlowPppControlMetricTag from protobuf object *otg.PatternFlowPppControlMetricTag + FromProto(msg *otg.PatternFlowPppControlMetricTag) (PatternFlowPppControlMetricTag, error) + // FromPbText unmarshals PatternFlowPppControlMetricTag from protobuf text FromPbText(value string) error - // FromYaml unmarshals PatternFlowTcpDataOffsetMetricTag from YAML text + // FromYaml unmarshals PatternFlowPppControlMetricTag from YAML text FromYaml(value string) error - // FromJson unmarshals PatternFlowTcpDataOffsetMetricTag from JSON text + // FromJson unmarshals PatternFlowPppControlMetricTag from JSON text FromJson(value string) error - // Validate validates PatternFlowTcpDataOffsetMetricTag + // Validate validates PatternFlowPppControlMetricTag Validate() error // A stringer function String() string // Clones the object - Clone() (PatternFlowTcpDataOffsetMetricTag, error) + Clone() (PatternFlowPppControlMetricTag, error) validateToAndFrom() error validateObj(vObj *validation, set_default bool) setDefault() - // Name returns string, set in PatternFlowTcpDataOffsetMetricTag. + // Name returns string, set in PatternFlowPppControlMetricTag. Name() string - // SetName assigns string provided by user to PatternFlowTcpDataOffsetMetricTag - SetName(value string) PatternFlowTcpDataOffsetMetricTag - // Offset returns uint32, set in PatternFlowTcpDataOffsetMetricTag. + // SetName assigns string provided by user to PatternFlowPppControlMetricTag + SetName(value string) PatternFlowPppControlMetricTag + // Offset returns uint32, set in PatternFlowPppControlMetricTag. Offset() uint32 - // SetOffset assigns uint32 provided by user to PatternFlowTcpDataOffsetMetricTag - SetOffset(value uint32) PatternFlowTcpDataOffsetMetricTag - // HasOffset checks if Offset has been set in PatternFlowTcpDataOffsetMetricTag + // SetOffset assigns uint32 provided by user to PatternFlowPppControlMetricTag + SetOffset(value uint32) PatternFlowPppControlMetricTag + // HasOffset checks if Offset has been set in PatternFlowPppControlMetricTag HasOffset() bool - // Length returns uint32, set in PatternFlowTcpDataOffsetMetricTag. + // Length returns uint32, set in PatternFlowPppControlMetricTag. Length() uint32 - // SetLength assigns uint32 provided by user to PatternFlowTcpDataOffsetMetricTag - SetLength(value uint32) PatternFlowTcpDataOffsetMetricTag - // HasLength checks if Length has been set in PatternFlowTcpDataOffsetMetricTag + // SetLength assigns uint32 provided by user to PatternFlowPppControlMetricTag + SetLength(value uint32) PatternFlowPppControlMetricTag + // HasLength checks if Length has been set in PatternFlowPppControlMetricTag HasLength() bool } // Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field // Name returns a string -func (obj *patternFlowTcpDataOffsetMetricTag) Name() string { +func (obj *patternFlowPppControlMetricTag) Name() string { return *obj.obj.Name } // Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field -// SetName sets the string value in the PatternFlowTcpDataOffsetMetricTag object -func (obj *patternFlowTcpDataOffsetMetricTag) SetName(value string) PatternFlowTcpDataOffsetMetricTag { +// SetName sets the string value in the PatternFlowPppControlMetricTag object +func (obj *patternFlowPppControlMetricTag) SetName(value string) PatternFlowPppControlMetricTag { obj.obj.Name = &value return obj @@ -223953,7 +268716,7 @@ func (obj *patternFlowTcpDataOffsetMetricTag) SetName(value string) PatternFlowT // Offset in bits relative to start of corresponding header field // Offset returns a uint32 -func (obj *patternFlowTcpDataOffsetMetricTag) Offset() uint32 { +func (obj *patternFlowPppControlMetricTag) Offset() uint32 { return *obj.obj.Offset @@ -223961,13 +268724,13 @@ func (obj *patternFlowTcpDataOffsetMetricTag) Offset() uint32 { // Offset in bits relative to start of corresponding header field // Offset returns a uint32 -func (obj *patternFlowTcpDataOffsetMetricTag) HasOffset() bool { +func (obj *patternFlowPppControlMetricTag) HasOffset() bool { return obj.obj.Offset != nil } // Offset in bits relative to start of corresponding header field -// SetOffset sets the uint32 value in the PatternFlowTcpDataOffsetMetricTag object -func (obj *patternFlowTcpDataOffsetMetricTag) SetOffset(value uint32) PatternFlowTcpDataOffsetMetricTag { +// SetOffset sets the uint32 value in the PatternFlowPppControlMetricTag object +func (obj *patternFlowPppControlMetricTag) SetOffset(value uint32) PatternFlowPppControlMetricTag { obj.obj.Offset = &value return obj @@ -223975,7 +268738,7 @@ func (obj *patternFlowTcpDataOffsetMetricTag) SetOffset(value uint32) PatternFlo // Number of bits to track for metrics starting from configured offset of corresponding header field // Length returns a uint32 -func (obj *patternFlowTcpDataOffsetMetricTag) Length() uint32 { +func (obj *patternFlowPppControlMetricTag) Length() uint32 { return *obj.obj.Length @@ -223983,83 +268746,83 @@ func (obj *patternFlowTcpDataOffsetMetricTag) Length() uint32 { // Number of bits to track for metrics starting from configured offset of corresponding header field // Length returns a uint32 -func (obj *patternFlowTcpDataOffsetMetricTag) HasLength() bool { +func (obj *patternFlowPppControlMetricTag) HasLength() bool { return obj.obj.Length != nil } // Number of bits to track for metrics starting from configured offset of corresponding header field -// SetLength sets the uint32 value in the PatternFlowTcpDataOffsetMetricTag object -func (obj *patternFlowTcpDataOffsetMetricTag) SetLength(value uint32) PatternFlowTcpDataOffsetMetricTag { +// SetLength sets the uint32 value in the PatternFlowPppControlMetricTag object +func (obj *patternFlowPppControlMetricTag) SetLength(value uint32) PatternFlowPppControlMetricTag { obj.obj.Length = &value return obj } -func (obj *patternFlowTcpDataOffsetMetricTag) validateObj(vObj *validation, set_default bool) { +func (obj *patternFlowPppControlMetricTag) validateObj(vObj *validation, set_default bool) { if set_default { obj.setDefault() } // Name is required if obj.obj.Name == nil { - vObj.validationErrors = append(vObj.validationErrors, "Name is required field on interface PatternFlowTcpDataOffsetMetricTag") + vObj.validationErrors = append(vObj.validationErrors, "Name is required field on interface PatternFlowPppControlMetricTag") } if obj.obj.Offset != nil { - if *obj.obj.Offset > 3 { + if *obj.obj.Offset > 7 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowTcpDataOffsetMetricTag.Offset <= 3 but Got %d", *obj.obj.Offset)) + fmt.Sprintf("0 <= PatternFlowPppControlMetricTag.Offset <= 7 but Got %d", *obj.obj.Offset)) } } if obj.obj.Length != nil { - if *obj.obj.Length < 1 || *obj.obj.Length > 4 { + if *obj.obj.Length < 1 || *obj.obj.Length > 8 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("1 <= PatternFlowTcpDataOffsetMetricTag.Length <= 4 but Got %d", *obj.obj.Length)) + fmt.Sprintf("1 <= PatternFlowPppControlMetricTag.Length <= 8 but Got %d", *obj.obj.Length)) } } } -func (obj *patternFlowTcpDataOffsetMetricTag) setDefault() { +func (obj *patternFlowPppControlMetricTag) setDefault() { if obj.obj.Offset == nil { obj.SetOffset(0) } if obj.obj.Length == nil { - obj.SetLength(4) + obj.SetLength(8) } } -// ***** PatternFlowTcpEcnNsCounter ***** -type patternFlowTcpEcnNsCounter struct { +// ***** PatternFlowPppProtocolTypeCounter ***** +type patternFlowPppProtocolTypeCounter struct { validation - obj *otg.PatternFlowTcpEcnNsCounter + obj *otg.PatternFlowPppProtocolTypeCounter } -func NewPatternFlowTcpEcnNsCounter() PatternFlowTcpEcnNsCounter { - obj := patternFlowTcpEcnNsCounter{obj: &otg.PatternFlowTcpEcnNsCounter{}} +func NewPatternFlowPppProtocolTypeCounter() PatternFlowPppProtocolTypeCounter { + obj := patternFlowPppProtocolTypeCounter{obj: &otg.PatternFlowPppProtocolTypeCounter{}} obj.setDefault() return &obj } -func (obj *patternFlowTcpEcnNsCounter) Msg() *otg.PatternFlowTcpEcnNsCounter { +func (obj *patternFlowPppProtocolTypeCounter) Msg() *otg.PatternFlowPppProtocolTypeCounter { return obj.obj } -func (obj *patternFlowTcpEcnNsCounter) SetMsg(msg *otg.PatternFlowTcpEcnNsCounter) PatternFlowTcpEcnNsCounter { +func (obj *patternFlowPppProtocolTypeCounter) SetMsg(msg *otg.PatternFlowPppProtocolTypeCounter) PatternFlowPppProtocolTypeCounter { proto.Merge(obj.obj, msg) return obj } -func (obj *patternFlowTcpEcnNsCounter) ToProto() (*otg.PatternFlowTcpEcnNsCounter, error) { +func (obj *patternFlowPppProtocolTypeCounter) ToProto() (*otg.PatternFlowPppProtocolTypeCounter, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -224067,7 +268830,7 @@ func (obj *patternFlowTcpEcnNsCounter) ToProto() (*otg.PatternFlowTcpEcnNsCounte return obj.Msg(), nil } -func (obj *patternFlowTcpEcnNsCounter) FromProto(msg *otg.PatternFlowTcpEcnNsCounter) (PatternFlowTcpEcnNsCounter, error) { +func (obj *patternFlowPppProtocolTypeCounter) FromProto(msg *otg.PatternFlowPppProtocolTypeCounter) (PatternFlowPppProtocolTypeCounter, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -224076,7 +268839,7 @@ func (obj *patternFlowTcpEcnNsCounter) FromProto(msg *otg.PatternFlowTcpEcnNsCou return newObj, nil } -func (obj *patternFlowTcpEcnNsCounter) ToPbText() (string, error) { +func (obj *patternFlowPppProtocolTypeCounter) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -224088,7 +268851,7 @@ func (obj *patternFlowTcpEcnNsCounter) ToPbText() (string, error) { return string(protoMarshal), nil } -func (obj *patternFlowTcpEcnNsCounter) FromPbText(value string) error { +func (obj *patternFlowPppProtocolTypeCounter) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj @@ -224101,7 +268864,7 @@ func (obj *patternFlowTcpEcnNsCounter) FromPbText(value string) error { return retObj } -func (obj *patternFlowTcpEcnNsCounter) ToYaml() (string, error) { +func (obj *patternFlowPppProtocolTypeCounter) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -224122,7 +268885,7 @@ func (obj *patternFlowTcpEcnNsCounter) ToYaml() (string, error) { return string(data), nil } -func (obj *patternFlowTcpEcnNsCounter) FromYaml(value string) error { +func (obj *patternFlowPppProtocolTypeCounter) FromYaml(value string) error { if value == "" { value = "{}" } @@ -224147,7 +268910,7 @@ func (obj *patternFlowTcpEcnNsCounter) FromYaml(value string) error { return nil } -func (obj *patternFlowTcpEcnNsCounter) ToJson() (string, error) { +func (obj *patternFlowPppProtocolTypeCounter) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -224165,7 +268928,7 @@ func (obj *patternFlowTcpEcnNsCounter) ToJson() (string, error) { return string(data), nil } -func (obj *patternFlowTcpEcnNsCounter) FromJson(value string) error { +func (obj *patternFlowPppProtocolTypeCounter) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -224186,19 +268949,19 @@ func (obj *patternFlowTcpEcnNsCounter) FromJson(value string) error { return nil } -func (obj *patternFlowTcpEcnNsCounter) validateToAndFrom() error { +func (obj *patternFlowPppProtocolTypeCounter) validateToAndFrom() error { // emptyVars() obj.validateObj(&obj.validation, true) return obj.validationResult() } -func (obj *patternFlowTcpEcnNsCounter) Validate() error { +func (obj *patternFlowPppProtocolTypeCounter) Validate() error { // emptyVars() obj.validateObj(&obj.validation, false) return obj.validationResult() } -func (obj *patternFlowTcpEcnNsCounter) String() string { +func (obj *patternFlowPppProtocolTypeCounter) String() string { str, err := obj.ToYaml() if err != nil { return err.Error() @@ -224206,12 +268969,12 @@ func (obj *patternFlowTcpEcnNsCounter) String() string { return str } -func (obj *patternFlowTcpEcnNsCounter) Clone() (PatternFlowTcpEcnNsCounter, error) { +func (obj *patternFlowPppProtocolTypeCounter) Clone() (PatternFlowPppProtocolTypeCounter, error) { vErr := obj.Validate() if vErr != nil { return nil, vErr } - newObj := NewPatternFlowTcpEcnNsCounter() + newObj := NewPatternFlowPppProtocolTypeCounter() data, err := proto.Marshal(obj.Msg()) if err != nil { return nil, err @@ -224223,63 +268986,63 @@ func (obj *patternFlowTcpEcnNsCounter) Clone() (PatternFlowTcpEcnNsCounter, erro return newObj, nil } -// PatternFlowTcpEcnNsCounter is integer counter pattern -type PatternFlowTcpEcnNsCounter interface { +// PatternFlowPppProtocolTypeCounter is integer counter pattern +type PatternFlowPppProtocolTypeCounter interface { Validation - // Msg marshals PatternFlowTcpEcnNsCounter to protobuf object *otg.PatternFlowTcpEcnNsCounter + // Msg marshals PatternFlowPppProtocolTypeCounter to protobuf object *otg.PatternFlowPppProtocolTypeCounter // and doesn't set defaults - Msg() *otg.PatternFlowTcpEcnNsCounter - // SetMsg unmarshals PatternFlowTcpEcnNsCounter from protobuf object *otg.PatternFlowTcpEcnNsCounter + Msg() *otg.PatternFlowPppProtocolTypeCounter + // SetMsg unmarshals PatternFlowPppProtocolTypeCounter from protobuf object *otg.PatternFlowPppProtocolTypeCounter // and doesn't set defaults - SetMsg(*otg.PatternFlowTcpEcnNsCounter) PatternFlowTcpEcnNsCounter - // ToProto marshals PatternFlowTcpEcnNsCounter to protobuf object *otg.PatternFlowTcpEcnNsCounter - ToProto() (*otg.PatternFlowTcpEcnNsCounter, error) - // ToPbText marshals PatternFlowTcpEcnNsCounter to protobuf text + SetMsg(*otg.PatternFlowPppProtocolTypeCounter) PatternFlowPppProtocolTypeCounter + // ToProto marshals PatternFlowPppProtocolTypeCounter to protobuf object *otg.PatternFlowPppProtocolTypeCounter + ToProto() (*otg.PatternFlowPppProtocolTypeCounter, error) + // ToPbText marshals PatternFlowPppProtocolTypeCounter to protobuf text ToPbText() (string, error) - // ToYaml marshals PatternFlowTcpEcnNsCounter to YAML text + // ToYaml marshals PatternFlowPppProtocolTypeCounter to YAML text ToYaml() (string, error) - // ToJson marshals PatternFlowTcpEcnNsCounter to JSON text + // ToJson marshals PatternFlowPppProtocolTypeCounter to JSON text ToJson() (string, error) - // FromProto unmarshals PatternFlowTcpEcnNsCounter from protobuf object *otg.PatternFlowTcpEcnNsCounter - FromProto(msg *otg.PatternFlowTcpEcnNsCounter) (PatternFlowTcpEcnNsCounter, error) - // FromPbText unmarshals PatternFlowTcpEcnNsCounter from protobuf text + // FromProto unmarshals PatternFlowPppProtocolTypeCounter from protobuf object *otg.PatternFlowPppProtocolTypeCounter + FromProto(msg *otg.PatternFlowPppProtocolTypeCounter) (PatternFlowPppProtocolTypeCounter, error) + // FromPbText unmarshals PatternFlowPppProtocolTypeCounter from protobuf text FromPbText(value string) error - // FromYaml unmarshals PatternFlowTcpEcnNsCounter from YAML text + // FromYaml unmarshals PatternFlowPppProtocolTypeCounter from YAML text FromYaml(value string) error - // FromJson unmarshals PatternFlowTcpEcnNsCounter from JSON text + // FromJson unmarshals PatternFlowPppProtocolTypeCounter from JSON text FromJson(value string) error - // Validate validates PatternFlowTcpEcnNsCounter + // Validate validates PatternFlowPppProtocolTypeCounter Validate() error // A stringer function String() string // Clones the object - Clone() (PatternFlowTcpEcnNsCounter, error) + Clone() (PatternFlowPppProtocolTypeCounter, error) validateToAndFrom() error validateObj(vObj *validation, set_default bool) setDefault() - // Start returns uint32, set in PatternFlowTcpEcnNsCounter. + // Start returns uint32, set in PatternFlowPppProtocolTypeCounter. Start() uint32 - // SetStart assigns uint32 provided by user to PatternFlowTcpEcnNsCounter - SetStart(value uint32) PatternFlowTcpEcnNsCounter - // HasStart checks if Start has been set in PatternFlowTcpEcnNsCounter + // SetStart assigns uint32 provided by user to PatternFlowPppProtocolTypeCounter + SetStart(value uint32) PatternFlowPppProtocolTypeCounter + // HasStart checks if Start has been set in PatternFlowPppProtocolTypeCounter HasStart() bool - // Step returns uint32, set in PatternFlowTcpEcnNsCounter. + // Step returns uint32, set in PatternFlowPppProtocolTypeCounter. Step() uint32 - // SetStep assigns uint32 provided by user to PatternFlowTcpEcnNsCounter - SetStep(value uint32) PatternFlowTcpEcnNsCounter - // HasStep checks if Step has been set in PatternFlowTcpEcnNsCounter + // SetStep assigns uint32 provided by user to PatternFlowPppProtocolTypeCounter + SetStep(value uint32) PatternFlowPppProtocolTypeCounter + // HasStep checks if Step has been set in PatternFlowPppProtocolTypeCounter HasStep() bool - // Count returns uint32, set in PatternFlowTcpEcnNsCounter. + // Count returns uint32, set in PatternFlowPppProtocolTypeCounter. Count() uint32 - // SetCount assigns uint32 provided by user to PatternFlowTcpEcnNsCounter - SetCount(value uint32) PatternFlowTcpEcnNsCounter - // HasCount checks if Count has been set in PatternFlowTcpEcnNsCounter + // SetCount assigns uint32 provided by user to PatternFlowPppProtocolTypeCounter + SetCount(value uint32) PatternFlowPppProtocolTypeCounter + // HasCount checks if Count has been set in PatternFlowPppProtocolTypeCounter HasCount() bool } // description is TBD // Start returns a uint32 -func (obj *patternFlowTcpEcnNsCounter) Start() uint32 { +func (obj *patternFlowPppProtocolTypeCounter) Start() uint32 { return *obj.obj.Start @@ -224287,13 +269050,13 @@ func (obj *patternFlowTcpEcnNsCounter) Start() uint32 { // description is TBD // Start returns a uint32 -func (obj *patternFlowTcpEcnNsCounter) HasStart() bool { +func (obj *patternFlowPppProtocolTypeCounter) HasStart() bool { return obj.obj.Start != nil } // description is TBD -// SetStart sets the uint32 value in the PatternFlowTcpEcnNsCounter object -func (obj *patternFlowTcpEcnNsCounter) SetStart(value uint32) PatternFlowTcpEcnNsCounter { +// SetStart sets the uint32 value in the PatternFlowPppProtocolTypeCounter object +func (obj *patternFlowPppProtocolTypeCounter) SetStart(value uint32) PatternFlowPppProtocolTypeCounter { obj.obj.Start = &value return obj @@ -224301,7 +269064,7 @@ func (obj *patternFlowTcpEcnNsCounter) SetStart(value uint32) PatternFlowTcpEcnN // description is TBD // Step returns a uint32 -func (obj *patternFlowTcpEcnNsCounter) Step() uint32 { +func (obj *patternFlowPppProtocolTypeCounter) Step() uint32 { return *obj.obj.Step @@ -224309,13 +269072,13 @@ func (obj *patternFlowTcpEcnNsCounter) Step() uint32 { // description is TBD // Step returns a uint32 -func (obj *patternFlowTcpEcnNsCounter) HasStep() bool { +func (obj *patternFlowPppProtocolTypeCounter) HasStep() bool { return obj.obj.Step != nil } // description is TBD -// SetStep sets the uint32 value in the PatternFlowTcpEcnNsCounter object -func (obj *patternFlowTcpEcnNsCounter) SetStep(value uint32) PatternFlowTcpEcnNsCounter { +// SetStep sets the uint32 value in the PatternFlowPppProtocolTypeCounter object +func (obj *patternFlowPppProtocolTypeCounter) SetStep(value uint32) PatternFlowPppProtocolTypeCounter { obj.obj.Step = &value return obj @@ -224323,7 +269086,7 @@ func (obj *patternFlowTcpEcnNsCounter) SetStep(value uint32) PatternFlowTcpEcnNs // description is TBD // Count returns a uint32 -func (obj *patternFlowTcpEcnNsCounter) Count() uint32 { +func (obj *patternFlowPppProtocolTypeCounter) Count() uint32 { return *obj.obj.Count @@ -224331,58 +269094,58 @@ func (obj *patternFlowTcpEcnNsCounter) Count() uint32 { // description is TBD // Count returns a uint32 -func (obj *patternFlowTcpEcnNsCounter) HasCount() bool { +func (obj *patternFlowPppProtocolTypeCounter) HasCount() bool { return obj.obj.Count != nil } // description is TBD -// SetCount sets the uint32 value in the PatternFlowTcpEcnNsCounter object -func (obj *patternFlowTcpEcnNsCounter) SetCount(value uint32) PatternFlowTcpEcnNsCounter { +// SetCount sets the uint32 value in the PatternFlowPppProtocolTypeCounter object +func (obj *patternFlowPppProtocolTypeCounter) SetCount(value uint32) PatternFlowPppProtocolTypeCounter { obj.obj.Count = &value return obj } -func (obj *patternFlowTcpEcnNsCounter) validateObj(vObj *validation, set_default bool) { +func (obj *patternFlowPppProtocolTypeCounter) validateObj(vObj *validation, set_default bool) { if set_default { obj.setDefault() } if obj.obj.Start != nil { - if *obj.obj.Start > 1 { + if *obj.obj.Start > 65535 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowTcpEcnNsCounter.Start <= 1 but Got %d", *obj.obj.Start)) + fmt.Sprintf("0 <= PatternFlowPppProtocolTypeCounter.Start <= 65535 but Got %d", *obj.obj.Start)) } } if obj.obj.Step != nil { - if *obj.obj.Step > 1 { + if *obj.obj.Step > 65535 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowTcpEcnNsCounter.Step <= 1 but Got %d", *obj.obj.Step)) + fmt.Sprintf("0 <= PatternFlowPppProtocolTypeCounter.Step <= 65535 but Got %d", *obj.obj.Step)) } } if obj.obj.Count != nil { - if *obj.obj.Count > 1 { + if *obj.obj.Count > 65535 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowTcpEcnNsCounter.Count <= 1 but Got %d", *obj.obj.Count)) + fmt.Sprintf("0 <= PatternFlowPppProtocolTypeCounter.Count <= 65535 but Got %d", *obj.obj.Count)) } } } -func (obj *patternFlowTcpEcnNsCounter) setDefault() { +func (obj *patternFlowPppProtocolTypeCounter) setDefault() { if obj.obj.Start == nil { - obj.SetStart(0) + obj.SetStart(33) } if obj.obj.Step == nil { obj.SetStep(1) @@ -224393,29 +269156,29 @@ func (obj *patternFlowTcpEcnNsCounter) setDefault() { } -// ***** PatternFlowTcpEcnNsMetricTag ***** -type patternFlowTcpEcnNsMetricTag struct { +// ***** PatternFlowPppProtocolTypeMetricTag ***** +type patternFlowPppProtocolTypeMetricTag struct { validation - obj *otg.PatternFlowTcpEcnNsMetricTag + obj *otg.PatternFlowPppProtocolTypeMetricTag } -func NewPatternFlowTcpEcnNsMetricTag() PatternFlowTcpEcnNsMetricTag { - obj := patternFlowTcpEcnNsMetricTag{obj: &otg.PatternFlowTcpEcnNsMetricTag{}} +func NewPatternFlowPppProtocolTypeMetricTag() PatternFlowPppProtocolTypeMetricTag { + obj := patternFlowPppProtocolTypeMetricTag{obj: &otg.PatternFlowPppProtocolTypeMetricTag{}} obj.setDefault() return &obj } -func (obj *patternFlowTcpEcnNsMetricTag) Msg() *otg.PatternFlowTcpEcnNsMetricTag { +func (obj *patternFlowPppProtocolTypeMetricTag) Msg() *otg.PatternFlowPppProtocolTypeMetricTag { return obj.obj } -func (obj *patternFlowTcpEcnNsMetricTag) SetMsg(msg *otg.PatternFlowTcpEcnNsMetricTag) PatternFlowTcpEcnNsMetricTag { +func (obj *patternFlowPppProtocolTypeMetricTag) SetMsg(msg *otg.PatternFlowPppProtocolTypeMetricTag) PatternFlowPppProtocolTypeMetricTag { proto.Merge(obj.obj, msg) return obj } -func (obj *patternFlowTcpEcnNsMetricTag) ToProto() (*otg.PatternFlowTcpEcnNsMetricTag, error) { +func (obj *patternFlowPppProtocolTypeMetricTag) ToProto() (*otg.PatternFlowPppProtocolTypeMetricTag, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -224423,7 +269186,7 @@ func (obj *patternFlowTcpEcnNsMetricTag) ToProto() (*otg.PatternFlowTcpEcnNsMetr return obj.Msg(), nil } -func (obj *patternFlowTcpEcnNsMetricTag) FromProto(msg *otg.PatternFlowTcpEcnNsMetricTag) (PatternFlowTcpEcnNsMetricTag, error) { +func (obj *patternFlowPppProtocolTypeMetricTag) FromProto(msg *otg.PatternFlowPppProtocolTypeMetricTag) (PatternFlowPppProtocolTypeMetricTag, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -224432,7 +269195,7 @@ func (obj *patternFlowTcpEcnNsMetricTag) FromProto(msg *otg.PatternFlowTcpEcnNsM return newObj, nil } -func (obj *patternFlowTcpEcnNsMetricTag) ToPbText() (string, error) { +func (obj *patternFlowPppProtocolTypeMetricTag) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -224444,7 +269207,7 @@ func (obj *patternFlowTcpEcnNsMetricTag) ToPbText() (string, error) { return string(protoMarshal), nil } -func (obj *patternFlowTcpEcnNsMetricTag) FromPbText(value string) error { +func (obj *patternFlowPppProtocolTypeMetricTag) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj @@ -224457,7 +269220,7 @@ func (obj *patternFlowTcpEcnNsMetricTag) FromPbText(value string) error { return retObj } -func (obj *patternFlowTcpEcnNsMetricTag) ToYaml() (string, error) { +func (obj *patternFlowPppProtocolTypeMetricTag) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -224478,7 +269241,7 @@ func (obj *patternFlowTcpEcnNsMetricTag) ToYaml() (string, error) { return string(data), nil } -func (obj *patternFlowTcpEcnNsMetricTag) FromYaml(value string) error { +func (obj *patternFlowPppProtocolTypeMetricTag) FromYaml(value string) error { if value == "" { value = "{}" } @@ -224503,7 +269266,7 @@ func (obj *patternFlowTcpEcnNsMetricTag) FromYaml(value string) error { return nil } -func (obj *patternFlowTcpEcnNsMetricTag) ToJson() (string, error) { +func (obj *patternFlowPppProtocolTypeMetricTag) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -224521,7 +269284,7 @@ func (obj *patternFlowTcpEcnNsMetricTag) ToJson() (string, error) { return string(data), nil } -func (obj *patternFlowTcpEcnNsMetricTag) FromJson(value string) error { +func (obj *patternFlowPppProtocolTypeMetricTag) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -224542,19 +269305,19 @@ func (obj *patternFlowTcpEcnNsMetricTag) FromJson(value string) error { return nil } -func (obj *patternFlowTcpEcnNsMetricTag) validateToAndFrom() error { +func (obj *patternFlowPppProtocolTypeMetricTag) validateToAndFrom() error { // emptyVars() obj.validateObj(&obj.validation, true) return obj.validationResult() } -func (obj *patternFlowTcpEcnNsMetricTag) Validate() error { +func (obj *patternFlowPppProtocolTypeMetricTag) Validate() error { // emptyVars() obj.validateObj(&obj.validation, false) return obj.validationResult() } -func (obj *patternFlowTcpEcnNsMetricTag) String() string { +func (obj *patternFlowPppProtocolTypeMetricTag) String() string { str, err := obj.ToYaml() if err != nil { return err.Error() @@ -224562,12 +269325,12 @@ func (obj *patternFlowTcpEcnNsMetricTag) String() string { return str } -func (obj *patternFlowTcpEcnNsMetricTag) Clone() (PatternFlowTcpEcnNsMetricTag, error) { +func (obj *patternFlowPppProtocolTypeMetricTag) Clone() (PatternFlowPppProtocolTypeMetricTag, error) { vErr := obj.Validate() if vErr != nil { return nil, vErr } - newObj := NewPatternFlowTcpEcnNsMetricTag() + newObj := NewPatternFlowPppProtocolTypeMetricTag() data, err := proto.Marshal(obj.Msg()) if err != nil { return nil, err @@ -224579,69 +269342,69 @@ func (obj *patternFlowTcpEcnNsMetricTag) Clone() (PatternFlowTcpEcnNsMetricTag, return newObj, nil } -// PatternFlowTcpEcnNsMetricTag is metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. -type PatternFlowTcpEcnNsMetricTag interface { +// PatternFlowPppProtocolTypeMetricTag is metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. +type PatternFlowPppProtocolTypeMetricTag interface { Validation - // Msg marshals PatternFlowTcpEcnNsMetricTag to protobuf object *otg.PatternFlowTcpEcnNsMetricTag + // Msg marshals PatternFlowPppProtocolTypeMetricTag to protobuf object *otg.PatternFlowPppProtocolTypeMetricTag // and doesn't set defaults - Msg() *otg.PatternFlowTcpEcnNsMetricTag - // SetMsg unmarshals PatternFlowTcpEcnNsMetricTag from protobuf object *otg.PatternFlowTcpEcnNsMetricTag + Msg() *otg.PatternFlowPppProtocolTypeMetricTag + // SetMsg unmarshals PatternFlowPppProtocolTypeMetricTag from protobuf object *otg.PatternFlowPppProtocolTypeMetricTag // and doesn't set defaults - SetMsg(*otg.PatternFlowTcpEcnNsMetricTag) PatternFlowTcpEcnNsMetricTag - // ToProto marshals PatternFlowTcpEcnNsMetricTag to protobuf object *otg.PatternFlowTcpEcnNsMetricTag - ToProto() (*otg.PatternFlowTcpEcnNsMetricTag, error) - // ToPbText marshals PatternFlowTcpEcnNsMetricTag to protobuf text + SetMsg(*otg.PatternFlowPppProtocolTypeMetricTag) PatternFlowPppProtocolTypeMetricTag + // ToProto marshals PatternFlowPppProtocolTypeMetricTag to protobuf object *otg.PatternFlowPppProtocolTypeMetricTag + ToProto() (*otg.PatternFlowPppProtocolTypeMetricTag, error) + // ToPbText marshals PatternFlowPppProtocolTypeMetricTag to protobuf text ToPbText() (string, error) - // ToYaml marshals PatternFlowTcpEcnNsMetricTag to YAML text + // ToYaml marshals PatternFlowPppProtocolTypeMetricTag to YAML text ToYaml() (string, error) - // ToJson marshals PatternFlowTcpEcnNsMetricTag to JSON text + // ToJson marshals PatternFlowPppProtocolTypeMetricTag to JSON text ToJson() (string, error) - // FromProto unmarshals PatternFlowTcpEcnNsMetricTag from protobuf object *otg.PatternFlowTcpEcnNsMetricTag - FromProto(msg *otg.PatternFlowTcpEcnNsMetricTag) (PatternFlowTcpEcnNsMetricTag, error) - // FromPbText unmarshals PatternFlowTcpEcnNsMetricTag from protobuf text + // FromProto unmarshals PatternFlowPppProtocolTypeMetricTag from protobuf object *otg.PatternFlowPppProtocolTypeMetricTag + FromProto(msg *otg.PatternFlowPppProtocolTypeMetricTag) (PatternFlowPppProtocolTypeMetricTag, error) + // FromPbText unmarshals PatternFlowPppProtocolTypeMetricTag from protobuf text FromPbText(value string) error - // FromYaml unmarshals PatternFlowTcpEcnNsMetricTag from YAML text + // FromYaml unmarshals PatternFlowPppProtocolTypeMetricTag from YAML text FromYaml(value string) error - // FromJson unmarshals PatternFlowTcpEcnNsMetricTag from JSON text + // FromJson unmarshals PatternFlowPppProtocolTypeMetricTag from JSON text FromJson(value string) error - // Validate validates PatternFlowTcpEcnNsMetricTag + // Validate validates PatternFlowPppProtocolTypeMetricTag Validate() error // A stringer function String() string // Clones the object - Clone() (PatternFlowTcpEcnNsMetricTag, error) + Clone() (PatternFlowPppProtocolTypeMetricTag, error) validateToAndFrom() error validateObj(vObj *validation, set_default bool) setDefault() - // Name returns string, set in PatternFlowTcpEcnNsMetricTag. + // Name returns string, set in PatternFlowPppProtocolTypeMetricTag. Name() string - // SetName assigns string provided by user to PatternFlowTcpEcnNsMetricTag - SetName(value string) PatternFlowTcpEcnNsMetricTag - // Offset returns uint32, set in PatternFlowTcpEcnNsMetricTag. + // SetName assigns string provided by user to PatternFlowPppProtocolTypeMetricTag + SetName(value string) PatternFlowPppProtocolTypeMetricTag + // Offset returns uint32, set in PatternFlowPppProtocolTypeMetricTag. Offset() uint32 - // SetOffset assigns uint32 provided by user to PatternFlowTcpEcnNsMetricTag - SetOffset(value uint32) PatternFlowTcpEcnNsMetricTag - // HasOffset checks if Offset has been set in PatternFlowTcpEcnNsMetricTag + // SetOffset assigns uint32 provided by user to PatternFlowPppProtocolTypeMetricTag + SetOffset(value uint32) PatternFlowPppProtocolTypeMetricTag + // HasOffset checks if Offset has been set in PatternFlowPppProtocolTypeMetricTag HasOffset() bool - // Length returns uint32, set in PatternFlowTcpEcnNsMetricTag. + // Length returns uint32, set in PatternFlowPppProtocolTypeMetricTag. Length() uint32 - // SetLength assigns uint32 provided by user to PatternFlowTcpEcnNsMetricTag - SetLength(value uint32) PatternFlowTcpEcnNsMetricTag - // HasLength checks if Length has been set in PatternFlowTcpEcnNsMetricTag + // SetLength assigns uint32 provided by user to PatternFlowPppProtocolTypeMetricTag + SetLength(value uint32) PatternFlowPppProtocolTypeMetricTag + // HasLength checks if Length has been set in PatternFlowPppProtocolTypeMetricTag HasLength() bool } // Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field // Name returns a string -func (obj *patternFlowTcpEcnNsMetricTag) Name() string { +func (obj *patternFlowPppProtocolTypeMetricTag) Name() string { return *obj.obj.Name } // Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field -// SetName sets the string value in the PatternFlowTcpEcnNsMetricTag object -func (obj *patternFlowTcpEcnNsMetricTag) SetName(value string) PatternFlowTcpEcnNsMetricTag { +// SetName sets the string value in the PatternFlowPppProtocolTypeMetricTag object +func (obj *patternFlowPppProtocolTypeMetricTag) SetName(value string) PatternFlowPppProtocolTypeMetricTag { obj.obj.Name = &value return obj @@ -224649,7 +269412,7 @@ func (obj *patternFlowTcpEcnNsMetricTag) SetName(value string) PatternFlowTcpEcn // Offset in bits relative to start of corresponding header field // Offset returns a uint32 -func (obj *patternFlowTcpEcnNsMetricTag) Offset() uint32 { +func (obj *patternFlowPppProtocolTypeMetricTag) Offset() uint32 { return *obj.obj.Offset @@ -224657,13 +269420,13 @@ func (obj *patternFlowTcpEcnNsMetricTag) Offset() uint32 { // Offset in bits relative to start of corresponding header field // Offset returns a uint32 -func (obj *patternFlowTcpEcnNsMetricTag) HasOffset() bool { +func (obj *patternFlowPppProtocolTypeMetricTag) HasOffset() bool { return obj.obj.Offset != nil } // Offset in bits relative to start of corresponding header field -// SetOffset sets the uint32 value in the PatternFlowTcpEcnNsMetricTag object -func (obj *patternFlowTcpEcnNsMetricTag) SetOffset(value uint32) PatternFlowTcpEcnNsMetricTag { +// SetOffset sets the uint32 value in the PatternFlowPppProtocolTypeMetricTag object +func (obj *patternFlowPppProtocolTypeMetricTag) SetOffset(value uint32) PatternFlowPppProtocolTypeMetricTag { obj.obj.Offset = &value return obj @@ -224671,7 +269434,7 @@ func (obj *patternFlowTcpEcnNsMetricTag) SetOffset(value uint32) PatternFlowTcpE // Number of bits to track for metrics starting from configured offset of corresponding header field // Length returns a uint32 -func (obj *patternFlowTcpEcnNsMetricTag) Length() uint32 { +func (obj *patternFlowPppProtocolTypeMetricTag) Length() uint32 { return *obj.obj.Length @@ -224679,83 +269442,83 @@ func (obj *patternFlowTcpEcnNsMetricTag) Length() uint32 { // Number of bits to track for metrics starting from configured offset of corresponding header field // Length returns a uint32 -func (obj *patternFlowTcpEcnNsMetricTag) HasLength() bool { +func (obj *patternFlowPppProtocolTypeMetricTag) HasLength() bool { return obj.obj.Length != nil } // Number of bits to track for metrics starting from configured offset of corresponding header field -// SetLength sets the uint32 value in the PatternFlowTcpEcnNsMetricTag object -func (obj *patternFlowTcpEcnNsMetricTag) SetLength(value uint32) PatternFlowTcpEcnNsMetricTag { +// SetLength sets the uint32 value in the PatternFlowPppProtocolTypeMetricTag object +func (obj *patternFlowPppProtocolTypeMetricTag) SetLength(value uint32) PatternFlowPppProtocolTypeMetricTag { obj.obj.Length = &value return obj } -func (obj *patternFlowTcpEcnNsMetricTag) validateObj(vObj *validation, set_default bool) { +func (obj *patternFlowPppProtocolTypeMetricTag) validateObj(vObj *validation, set_default bool) { if set_default { obj.setDefault() } // Name is required if obj.obj.Name == nil { - vObj.validationErrors = append(vObj.validationErrors, "Name is required field on interface PatternFlowTcpEcnNsMetricTag") + vObj.validationErrors = append(vObj.validationErrors, "Name is required field on interface PatternFlowPppProtocolTypeMetricTag") } if obj.obj.Offset != nil { - if *obj.obj.Offset > 0 { + if *obj.obj.Offset > 15 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowTcpEcnNsMetricTag.Offset <= 0 but Got %d", *obj.obj.Offset)) + fmt.Sprintf("0 <= PatternFlowPppProtocolTypeMetricTag.Offset <= 15 but Got %d", *obj.obj.Offset)) } } if obj.obj.Length != nil { - if *obj.obj.Length < 1 || *obj.obj.Length > 1 { + if *obj.obj.Length < 1 || *obj.obj.Length > 16 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("1 <= PatternFlowTcpEcnNsMetricTag.Length <= 1 but Got %d", *obj.obj.Length)) + fmt.Sprintf("1 <= PatternFlowPppProtocolTypeMetricTag.Length <= 16 but Got %d", *obj.obj.Length)) } } } -func (obj *patternFlowTcpEcnNsMetricTag) setDefault() { +func (obj *patternFlowPppProtocolTypeMetricTag) setDefault() { if obj.obj.Offset == nil { obj.SetOffset(0) } if obj.obj.Length == nil { - obj.SetLength(1) + obj.SetLength(16) } } -// ***** PatternFlowTcpEcnCwrCounter ***** -type patternFlowTcpEcnCwrCounter struct { +// ***** PatternFlowIgmpv1VersionCounter ***** +type patternFlowIgmpv1VersionCounter struct { validation - obj *otg.PatternFlowTcpEcnCwrCounter + obj *otg.PatternFlowIgmpv1VersionCounter } -func NewPatternFlowTcpEcnCwrCounter() PatternFlowTcpEcnCwrCounter { - obj := patternFlowTcpEcnCwrCounter{obj: &otg.PatternFlowTcpEcnCwrCounter{}} +func NewPatternFlowIgmpv1VersionCounter() PatternFlowIgmpv1VersionCounter { + obj := patternFlowIgmpv1VersionCounter{obj: &otg.PatternFlowIgmpv1VersionCounter{}} obj.setDefault() return &obj } -func (obj *patternFlowTcpEcnCwrCounter) Msg() *otg.PatternFlowTcpEcnCwrCounter { +func (obj *patternFlowIgmpv1VersionCounter) Msg() *otg.PatternFlowIgmpv1VersionCounter { return obj.obj } -func (obj *patternFlowTcpEcnCwrCounter) SetMsg(msg *otg.PatternFlowTcpEcnCwrCounter) PatternFlowTcpEcnCwrCounter { +func (obj *patternFlowIgmpv1VersionCounter) SetMsg(msg *otg.PatternFlowIgmpv1VersionCounter) PatternFlowIgmpv1VersionCounter { proto.Merge(obj.obj, msg) return obj } -func (obj *patternFlowTcpEcnCwrCounter) ToProto() (*otg.PatternFlowTcpEcnCwrCounter, error) { +func (obj *patternFlowIgmpv1VersionCounter) ToProto() (*otg.PatternFlowIgmpv1VersionCounter, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -224763,7 +269526,7 @@ func (obj *patternFlowTcpEcnCwrCounter) ToProto() (*otg.PatternFlowTcpEcnCwrCoun return obj.Msg(), nil } -func (obj *patternFlowTcpEcnCwrCounter) FromProto(msg *otg.PatternFlowTcpEcnCwrCounter) (PatternFlowTcpEcnCwrCounter, error) { +func (obj *patternFlowIgmpv1VersionCounter) FromProto(msg *otg.PatternFlowIgmpv1VersionCounter) (PatternFlowIgmpv1VersionCounter, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -224772,7 +269535,7 @@ func (obj *patternFlowTcpEcnCwrCounter) FromProto(msg *otg.PatternFlowTcpEcnCwrC return newObj, nil } -func (obj *patternFlowTcpEcnCwrCounter) ToPbText() (string, error) { +func (obj *patternFlowIgmpv1VersionCounter) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -224784,7 +269547,7 @@ func (obj *patternFlowTcpEcnCwrCounter) ToPbText() (string, error) { return string(protoMarshal), nil } -func (obj *patternFlowTcpEcnCwrCounter) FromPbText(value string) error { +func (obj *patternFlowIgmpv1VersionCounter) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj @@ -224797,7 +269560,7 @@ func (obj *patternFlowTcpEcnCwrCounter) FromPbText(value string) error { return retObj } -func (obj *patternFlowTcpEcnCwrCounter) ToYaml() (string, error) { +func (obj *patternFlowIgmpv1VersionCounter) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -224818,7 +269581,7 @@ func (obj *patternFlowTcpEcnCwrCounter) ToYaml() (string, error) { return string(data), nil } -func (obj *patternFlowTcpEcnCwrCounter) FromYaml(value string) error { +func (obj *patternFlowIgmpv1VersionCounter) FromYaml(value string) error { if value == "" { value = "{}" } @@ -224843,7 +269606,7 @@ func (obj *patternFlowTcpEcnCwrCounter) FromYaml(value string) error { return nil } -func (obj *patternFlowTcpEcnCwrCounter) ToJson() (string, error) { +func (obj *patternFlowIgmpv1VersionCounter) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -224861,7 +269624,7 @@ func (obj *patternFlowTcpEcnCwrCounter) ToJson() (string, error) { return string(data), nil } -func (obj *patternFlowTcpEcnCwrCounter) FromJson(value string) error { +func (obj *patternFlowIgmpv1VersionCounter) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -224882,19 +269645,19 @@ func (obj *patternFlowTcpEcnCwrCounter) FromJson(value string) error { return nil } -func (obj *patternFlowTcpEcnCwrCounter) validateToAndFrom() error { +func (obj *patternFlowIgmpv1VersionCounter) validateToAndFrom() error { // emptyVars() obj.validateObj(&obj.validation, true) return obj.validationResult() } -func (obj *patternFlowTcpEcnCwrCounter) Validate() error { +func (obj *patternFlowIgmpv1VersionCounter) Validate() error { // emptyVars() obj.validateObj(&obj.validation, false) return obj.validationResult() } -func (obj *patternFlowTcpEcnCwrCounter) String() string { +func (obj *patternFlowIgmpv1VersionCounter) String() string { str, err := obj.ToYaml() if err != nil { return err.Error() @@ -224902,12 +269665,12 @@ func (obj *patternFlowTcpEcnCwrCounter) String() string { return str } -func (obj *patternFlowTcpEcnCwrCounter) Clone() (PatternFlowTcpEcnCwrCounter, error) { +func (obj *patternFlowIgmpv1VersionCounter) Clone() (PatternFlowIgmpv1VersionCounter, error) { vErr := obj.Validate() if vErr != nil { return nil, vErr } - newObj := NewPatternFlowTcpEcnCwrCounter() + newObj := NewPatternFlowIgmpv1VersionCounter() data, err := proto.Marshal(obj.Msg()) if err != nil { return nil, err @@ -224919,63 +269682,63 @@ func (obj *patternFlowTcpEcnCwrCounter) Clone() (PatternFlowTcpEcnCwrCounter, er return newObj, nil } -// PatternFlowTcpEcnCwrCounter is integer counter pattern -type PatternFlowTcpEcnCwrCounter interface { +// PatternFlowIgmpv1VersionCounter is integer counter pattern +type PatternFlowIgmpv1VersionCounter interface { Validation - // Msg marshals PatternFlowTcpEcnCwrCounter to protobuf object *otg.PatternFlowTcpEcnCwrCounter + // Msg marshals PatternFlowIgmpv1VersionCounter to protobuf object *otg.PatternFlowIgmpv1VersionCounter // and doesn't set defaults - Msg() *otg.PatternFlowTcpEcnCwrCounter - // SetMsg unmarshals PatternFlowTcpEcnCwrCounter from protobuf object *otg.PatternFlowTcpEcnCwrCounter + Msg() *otg.PatternFlowIgmpv1VersionCounter + // SetMsg unmarshals PatternFlowIgmpv1VersionCounter from protobuf object *otg.PatternFlowIgmpv1VersionCounter // and doesn't set defaults - SetMsg(*otg.PatternFlowTcpEcnCwrCounter) PatternFlowTcpEcnCwrCounter - // ToProto marshals PatternFlowTcpEcnCwrCounter to protobuf object *otg.PatternFlowTcpEcnCwrCounter - ToProto() (*otg.PatternFlowTcpEcnCwrCounter, error) - // ToPbText marshals PatternFlowTcpEcnCwrCounter to protobuf text + SetMsg(*otg.PatternFlowIgmpv1VersionCounter) PatternFlowIgmpv1VersionCounter + // ToProto marshals PatternFlowIgmpv1VersionCounter to protobuf object *otg.PatternFlowIgmpv1VersionCounter + ToProto() (*otg.PatternFlowIgmpv1VersionCounter, error) + // ToPbText marshals PatternFlowIgmpv1VersionCounter to protobuf text ToPbText() (string, error) - // ToYaml marshals PatternFlowTcpEcnCwrCounter to YAML text + // ToYaml marshals PatternFlowIgmpv1VersionCounter to YAML text ToYaml() (string, error) - // ToJson marshals PatternFlowTcpEcnCwrCounter to JSON text + // ToJson marshals PatternFlowIgmpv1VersionCounter to JSON text ToJson() (string, error) - // FromProto unmarshals PatternFlowTcpEcnCwrCounter from protobuf object *otg.PatternFlowTcpEcnCwrCounter - FromProto(msg *otg.PatternFlowTcpEcnCwrCounter) (PatternFlowTcpEcnCwrCounter, error) - // FromPbText unmarshals PatternFlowTcpEcnCwrCounter from protobuf text + // FromProto unmarshals PatternFlowIgmpv1VersionCounter from protobuf object *otg.PatternFlowIgmpv1VersionCounter + FromProto(msg *otg.PatternFlowIgmpv1VersionCounter) (PatternFlowIgmpv1VersionCounter, error) + // FromPbText unmarshals PatternFlowIgmpv1VersionCounter from protobuf text FromPbText(value string) error - // FromYaml unmarshals PatternFlowTcpEcnCwrCounter from YAML text + // FromYaml unmarshals PatternFlowIgmpv1VersionCounter from YAML text FromYaml(value string) error - // FromJson unmarshals PatternFlowTcpEcnCwrCounter from JSON text + // FromJson unmarshals PatternFlowIgmpv1VersionCounter from JSON text FromJson(value string) error - // Validate validates PatternFlowTcpEcnCwrCounter + // Validate validates PatternFlowIgmpv1VersionCounter Validate() error // A stringer function String() string // Clones the object - Clone() (PatternFlowTcpEcnCwrCounter, error) + Clone() (PatternFlowIgmpv1VersionCounter, error) validateToAndFrom() error validateObj(vObj *validation, set_default bool) setDefault() - // Start returns uint32, set in PatternFlowTcpEcnCwrCounter. + // Start returns uint32, set in PatternFlowIgmpv1VersionCounter. Start() uint32 - // SetStart assigns uint32 provided by user to PatternFlowTcpEcnCwrCounter - SetStart(value uint32) PatternFlowTcpEcnCwrCounter - // HasStart checks if Start has been set in PatternFlowTcpEcnCwrCounter + // SetStart assigns uint32 provided by user to PatternFlowIgmpv1VersionCounter + SetStart(value uint32) PatternFlowIgmpv1VersionCounter + // HasStart checks if Start has been set in PatternFlowIgmpv1VersionCounter HasStart() bool - // Step returns uint32, set in PatternFlowTcpEcnCwrCounter. + // Step returns uint32, set in PatternFlowIgmpv1VersionCounter. Step() uint32 - // SetStep assigns uint32 provided by user to PatternFlowTcpEcnCwrCounter - SetStep(value uint32) PatternFlowTcpEcnCwrCounter - // HasStep checks if Step has been set in PatternFlowTcpEcnCwrCounter + // SetStep assigns uint32 provided by user to PatternFlowIgmpv1VersionCounter + SetStep(value uint32) PatternFlowIgmpv1VersionCounter + // HasStep checks if Step has been set in PatternFlowIgmpv1VersionCounter HasStep() bool - // Count returns uint32, set in PatternFlowTcpEcnCwrCounter. + // Count returns uint32, set in PatternFlowIgmpv1VersionCounter. Count() uint32 - // SetCount assigns uint32 provided by user to PatternFlowTcpEcnCwrCounter - SetCount(value uint32) PatternFlowTcpEcnCwrCounter - // HasCount checks if Count has been set in PatternFlowTcpEcnCwrCounter + // SetCount assigns uint32 provided by user to PatternFlowIgmpv1VersionCounter + SetCount(value uint32) PatternFlowIgmpv1VersionCounter + // HasCount checks if Count has been set in PatternFlowIgmpv1VersionCounter HasCount() bool } // description is TBD // Start returns a uint32 -func (obj *patternFlowTcpEcnCwrCounter) Start() uint32 { +func (obj *patternFlowIgmpv1VersionCounter) Start() uint32 { return *obj.obj.Start @@ -224983,13 +269746,13 @@ func (obj *patternFlowTcpEcnCwrCounter) Start() uint32 { // description is TBD // Start returns a uint32 -func (obj *patternFlowTcpEcnCwrCounter) HasStart() bool { +func (obj *patternFlowIgmpv1VersionCounter) HasStart() bool { return obj.obj.Start != nil } // description is TBD -// SetStart sets the uint32 value in the PatternFlowTcpEcnCwrCounter object -func (obj *patternFlowTcpEcnCwrCounter) SetStart(value uint32) PatternFlowTcpEcnCwrCounter { +// SetStart sets the uint32 value in the PatternFlowIgmpv1VersionCounter object +func (obj *patternFlowIgmpv1VersionCounter) SetStart(value uint32) PatternFlowIgmpv1VersionCounter { obj.obj.Start = &value return obj @@ -224997,7 +269760,7 @@ func (obj *patternFlowTcpEcnCwrCounter) SetStart(value uint32) PatternFlowTcpEcn // description is TBD // Step returns a uint32 -func (obj *patternFlowTcpEcnCwrCounter) Step() uint32 { +func (obj *patternFlowIgmpv1VersionCounter) Step() uint32 { return *obj.obj.Step @@ -225005,13 +269768,13 @@ func (obj *patternFlowTcpEcnCwrCounter) Step() uint32 { // description is TBD // Step returns a uint32 -func (obj *patternFlowTcpEcnCwrCounter) HasStep() bool { +func (obj *patternFlowIgmpv1VersionCounter) HasStep() bool { return obj.obj.Step != nil } // description is TBD -// SetStep sets the uint32 value in the PatternFlowTcpEcnCwrCounter object -func (obj *patternFlowTcpEcnCwrCounter) SetStep(value uint32) PatternFlowTcpEcnCwrCounter { +// SetStep sets the uint32 value in the PatternFlowIgmpv1VersionCounter object +func (obj *patternFlowIgmpv1VersionCounter) SetStep(value uint32) PatternFlowIgmpv1VersionCounter { obj.obj.Step = &value return obj @@ -225019,7 +269782,7 @@ func (obj *patternFlowTcpEcnCwrCounter) SetStep(value uint32) PatternFlowTcpEcnC // description is TBD // Count returns a uint32 -func (obj *patternFlowTcpEcnCwrCounter) Count() uint32 { +func (obj *patternFlowIgmpv1VersionCounter) Count() uint32 { return *obj.obj.Count @@ -225027,58 +269790,58 @@ func (obj *patternFlowTcpEcnCwrCounter) Count() uint32 { // description is TBD // Count returns a uint32 -func (obj *patternFlowTcpEcnCwrCounter) HasCount() bool { +func (obj *patternFlowIgmpv1VersionCounter) HasCount() bool { return obj.obj.Count != nil } // description is TBD -// SetCount sets the uint32 value in the PatternFlowTcpEcnCwrCounter object -func (obj *patternFlowTcpEcnCwrCounter) SetCount(value uint32) PatternFlowTcpEcnCwrCounter { +// SetCount sets the uint32 value in the PatternFlowIgmpv1VersionCounter object +func (obj *patternFlowIgmpv1VersionCounter) SetCount(value uint32) PatternFlowIgmpv1VersionCounter { obj.obj.Count = &value return obj } -func (obj *patternFlowTcpEcnCwrCounter) validateObj(vObj *validation, set_default bool) { +func (obj *patternFlowIgmpv1VersionCounter) validateObj(vObj *validation, set_default bool) { if set_default { obj.setDefault() } if obj.obj.Start != nil { - if *obj.obj.Start > 1 { + if *obj.obj.Start > 15 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowTcpEcnCwrCounter.Start <= 1 but Got %d", *obj.obj.Start)) + fmt.Sprintf("0 <= PatternFlowIgmpv1VersionCounter.Start <= 15 but Got %d", *obj.obj.Start)) } } if obj.obj.Step != nil { - if *obj.obj.Step > 1 { + if *obj.obj.Step > 15 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowTcpEcnCwrCounter.Step <= 1 but Got %d", *obj.obj.Step)) + fmt.Sprintf("0 <= PatternFlowIgmpv1VersionCounter.Step <= 15 but Got %d", *obj.obj.Step)) } } if obj.obj.Count != nil { - if *obj.obj.Count > 1 { + if *obj.obj.Count > 15 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowTcpEcnCwrCounter.Count <= 1 but Got %d", *obj.obj.Count)) + fmt.Sprintf("0 <= PatternFlowIgmpv1VersionCounter.Count <= 15 but Got %d", *obj.obj.Count)) } } } -func (obj *patternFlowTcpEcnCwrCounter) setDefault() { +func (obj *patternFlowIgmpv1VersionCounter) setDefault() { if obj.obj.Start == nil { - obj.SetStart(0) + obj.SetStart(1) } if obj.obj.Step == nil { obj.SetStep(1) @@ -225089,29 +269852,29 @@ func (obj *patternFlowTcpEcnCwrCounter) setDefault() { } -// ***** PatternFlowTcpEcnCwrMetricTag ***** -type patternFlowTcpEcnCwrMetricTag struct { +// ***** PatternFlowIgmpv1VersionMetricTag ***** +type patternFlowIgmpv1VersionMetricTag struct { validation - obj *otg.PatternFlowTcpEcnCwrMetricTag + obj *otg.PatternFlowIgmpv1VersionMetricTag } -func NewPatternFlowTcpEcnCwrMetricTag() PatternFlowTcpEcnCwrMetricTag { - obj := patternFlowTcpEcnCwrMetricTag{obj: &otg.PatternFlowTcpEcnCwrMetricTag{}} +func NewPatternFlowIgmpv1VersionMetricTag() PatternFlowIgmpv1VersionMetricTag { + obj := patternFlowIgmpv1VersionMetricTag{obj: &otg.PatternFlowIgmpv1VersionMetricTag{}} obj.setDefault() return &obj } -func (obj *patternFlowTcpEcnCwrMetricTag) Msg() *otg.PatternFlowTcpEcnCwrMetricTag { +func (obj *patternFlowIgmpv1VersionMetricTag) Msg() *otg.PatternFlowIgmpv1VersionMetricTag { return obj.obj } -func (obj *patternFlowTcpEcnCwrMetricTag) SetMsg(msg *otg.PatternFlowTcpEcnCwrMetricTag) PatternFlowTcpEcnCwrMetricTag { +func (obj *patternFlowIgmpv1VersionMetricTag) SetMsg(msg *otg.PatternFlowIgmpv1VersionMetricTag) PatternFlowIgmpv1VersionMetricTag { proto.Merge(obj.obj, msg) return obj } -func (obj *patternFlowTcpEcnCwrMetricTag) ToProto() (*otg.PatternFlowTcpEcnCwrMetricTag, error) { +func (obj *patternFlowIgmpv1VersionMetricTag) ToProto() (*otg.PatternFlowIgmpv1VersionMetricTag, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -225119,7 +269882,7 @@ func (obj *patternFlowTcpEcnCwrMetricTag) ToProto() (*otg.PatternFlowTcpEcnCwrMe return obj.Msg(), nil } -func (obj *patternFlowTcpEcnCwrMetricTag) FromProto(msg *otg.PatternFlowTcpEcnCwrMetricTag) (PatternFlowTcpEcnCwrMetricTag, error) { +func (obj *patternFlowIgmpv1VersionMetricTag) FromProto(msg *otg.PatternFlowIgmpv1VersionMetricTag) (PatternFlowIgmpv1VersionMetricTag, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -225128,7 +269891,7 @@ func (obj *patternFlowTcpEcnCwrMetricTag) FromProto(msg *otg.PatternFlowTcpEcnCw return newObj, nil } -func (obj *patternFlowTcpEcnCwrMetricTag) ToPbText() (string, error) { +func (obj *patternFlowIgmpv1VersionMetricTag) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -225140,7 +269903,7 @@ func (obj *patternFlowTcpEcnCwrMetricTag) ToPbText() (string, error) { return string(protoMarshal), nil } -func (obj *patternFlowTcpEcnCwrMetricTag) FromPbText(value string) error { +func (obj *patternFlowIgmpv1VersionMetricTag) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj @@ -225153,7 +269916,7 @@ func (obj *patternFlowTcpEcnCwrMetricTag) FromPbText(value string) error { return retObj } -func (obj *patternFlowTcpEcnCwrMetricTag) ToYaml() (string, error) { +func (obj *patternFlowIgmpv1VersionMetricTag) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -225174,7 +269937,7 @@ func (obj *patternFlowTcpEcnCwrMetricTag) ToYaml() (string, error) { return string(data), nil } -func (obj *patternFlowTcpEcnCwrMetricTag) FromYaml(value string) error { +func (obj *patternFlowIgmpv1VersionMetricTag) FromYaml(value string) error { if value == "" { value = "{}" } @@ -225199,7 +269962,7 @@ func (obj *patternFlowTcpEcnCwrMetricTag) FromYaml(value string) error { return nil } -func (obj *patternFlowTcpEcnCwrMetricTag) ToJson() (string, error) { +func (obj *patternFlowIgmpv1VersionMetricTag) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -225217,7 +269980,7 @@ func (obj *patternFlowTcpEcnCwrMetricTag) ToJson() (string, error) { return string(data), nil } -func (obj *patternFlowTcpEcnCwrMetricTag) FromJson(value string) error { +func (obj *patternFlowIgmpv1VersionMetricTag) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -225238,19 +270001,19 @@ func (obj *patternFlowTcpEcnCwrMetricTag) FromJson(value string) error { return nil } -func (obj *patternFlowTcpEcnCwrMetricTag) validateToAndFrom() error { +func (obj *patternFlowIgmpv1VersionMetricTag) validateToAndFrom() error { // emptyVars() obj.validateObj(&obj.validation, true) return obj.validationResult() } -func (obj *patternFlowTcpEcnCwrMetricTag) Validate() error { +func (obj *patternFlowIgmpv1VersionMetricTag) Validate() error { // emptyVars() obj.validateObj(&obj.validation, false) return obj.validationResult() } -func (obj *patternFlowTcpEcnCwrMetricTag) String() string { +func (obj *patternFlowIgmpv1VersionMetricTag) String() string { str, err := obj.ToYaml() if err != nil { return err.Error() @@ -225258,12 +270021,12 @@ func (obj *patternFlowTcpEcnCwrMetricTag) String() string { return str } -func (obj *patternFlowTcpEcnCwrMetricTag) Clone() (PatternFlowTcpEcnCwrMetricTag, error) { +func (obj *patternFlowIgmpv1VersionMetricTag) Clone() (PatternFlowIgmpv1VersionMetricTag, error) { vErr := obj.Validate() if vErr != nil { return nil, vErr } - newObj := NewPatternFlowTcpEcnCwrMetricTag() + newObj := NewPatternFlowIgmpv1VersionMetricTag() data, err := proto.Marshal(obj.Msg()) if err != nil { return nil, err @@ -225275,69 +270038,69 @@ func (obj *patternFlowTcpEcnCwrMetricTag) Clone() (PatternFlowTcpEcnCwrMetricTag return newObj, nil } -// PatternFlowTcpEcnCwrMetricTag is metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. -type PatternFlowTcpEcnCwrMetricTag interface { +// PatternFlowIgmpv1VersionMetricTag is metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. +type PatternFlowIgmpv1VersionMetricTag interface { Validation - // Msg marshals PatternFlowTcpEcnCwrMetricTag to protobuf object *otg.PatternFlowTcpEcnCwrMetricTag + // Msg marshals PatternFlowIgmpv1VersionMetricTag to protobuf object *otg.PatternFlowIgmpv1VersionMetricTag // and doesn't set defaults - Msg() *otg.PatternFlowTcpEcnCwrMetricTag - // SetMsg unmarshals PatternFlowTcpEcnCwrMetricTag from protobuf object *otg.PatternFlowTcpEcnCwrMetricTag + Msg() *otg.PatternFlowIgmpv1VersionMetricTag + // SetMsg unmarshals PatternFlowIgmpv1VersionMetricTag from protobuf object *otg.PatternFlowIgmpv1VersionMetricTag // and doesn't set defaults - SetMsg(*otg.PatternFlowTcpEcnCwrMetricTag) PatternFlowTcpEcnCwrMetricTag - // ToProto marshals PatternFlowTcpEcnCwrMetricTag to protobuf object *otg.PatternFlowTcpEcnCwrMetricTag - ToProto() (*otg.PatternFlowTcpEcnCwrMetricTag, error) - // ToPbText marshals PatternFlowTcpEcnCwrMetricTag to protobuf text + SetMsg(*otg.PatternFlowIgmpv1VersionMetricTag) PatternFlowIgmpv1VersionMetricTag + // ToProto marshals PatternFlowIgmpv1VersionMetricTag to protobuf object *otg.PatternFlowIgmpv1VersionMetricTag + ToProto() (*otg.PatternFlowIgmpv1VersionMetricTag, error) + // ToPbText marshals PatternFlowIgmpv1VersionMetricTag to protobuf text ToPbText() (string, error) - // ToYaml marshals PatternFlowTcpEcnCwrMetricTag to YAML text + // ToYaml marshals PatternFlowIgmpv1VersionMetricTag to YAML text ToYaml() (string, error) - // ToJson marshals PatternFlowTcpEcnCwrMetricTag to JSON text + // ToJson marshals PatternFlowIgmpv1VersionMetricTag to JSON text ToJson() (string, error) - // FromProto unmarshals PatternFlowTcpEcnCwrMetricTag from protobuf object *otg.PatternFlowTcpEcnCwrMetricTag - FromProto(msg *otg.PatternFlowTcpEcnCwrMetricTag) (PatternFlowTcpEcnCwrMetricTag, error) - // FromPbText unmarshals PatternFlowTcpEcnCwrMetricTag from protobuf text + // FromProto unmarshals PatternFlowIgmpv1VersionMetricTag from protobuf object *otg.PatternFlowIgmpv1VersionMetricTag + FromProto(msg *otg.PatternFlowIgmpv1VersionMetricTag) (PatternFlowIgmpv1VersionMetricTag, error) + // FromPbText unmarshals PatternFlowIgmpv1VersionMetricTag from protobuf text FromPbText(value string) error - // FromYaml unmarshals PatternFlowTcpEcnCwrMetricTag from YAML text + // FromYaml unmarshals PatternFlowIgmpv1VersionMetricTag from YAML text FromYaml(value string) error - // FromJson unmarshals PatternFlowTcpEcnCwrMetricTag from JSON text + // FromJson unmarshals PatternFlowIgmpv1VersionMetricTag from JSON text FromJson(value string) error - // Validate validates PatternFlowTcpEcnCwrMetricTag + // Validate validates PatternFlowIgmpv1VersionMetricTag Validate() error // A stringer function String() string // Clones the object - Clone() (PatternFlowTcpEcnCwrMetricTag, error) + Clone() (PatternFlowIgmpv1VersionMetricTag, error) validateToAndFrom() error validateObj(vObj *validation, set_default bool) setDefault() - // Name returns string, set in PatternFlowTcpEcnCwrMetricTag. + // Name returns string, set in PatternFlowIgmpv1VersionMetricTag. Name() string - // SetName assigns string provided by user to PatternFlowTcpEcnCwrMetricTag - SetName(value string) PatternFlowTcpEcnCwrMetricTag - // Offset returns uint32, set in PatternFlowTcpEcnCwrMetricTag. + // SetName assigns string provided by user to PatternFlowIgmpv1VersionMetricTag + SetName(value string) PatternFlowIgmpv1VersionMetricTag + // Offset returns uint32, set in PatternFlowIgmpv1VersionMetricTag. Offset() uint32 - // SetOffset assigns uint32 provided by user to PatternFlowTcpEcnCwrMetricTag - SetOffset(value uint32) PatternFlowTcpEcnCwrMetricTag - // HasOffset checks if Offset has been set in PatternFlowTcpEcnCwrMetricTag + // SetOffset assigns uint32 provided by user to PatternFlowIgmpv1VersionMetricTag + SetOffset(value uint32) PatternFlowIgmpv1VersionMetricTag + // HasOffset checks if Offset has been set in PatternFlowIgmpv1VersionMetricTag HasOffset() bool - // Length returns uint32, set in PatternFlowTcpEcnCwrMetricTag. + // Length returns uint32, set in PatternFlowIgmpv1VersionMetricTag. Length() uint32 - // SetLength assigns uint32 provided by user to PatternFlowTcpEcnCwrMetricTag - SetLength(value uint32) PatternFlowTcpEcnCwrMetricTag - // HasLength checks if Length has been set in PatternFlowTcpEcnCwrMetricTag + // SetLength assigns uint32 provided by user to PatternFlowIgmpv1VersionMetricTag + SetLength(value uint32) PatternFlowIgmpv1VersionMetricTag + // HasLength checks if Length has been set in PatternFlowIgmpv1VersionMetricTag HasLength() bool } // Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field // Name returns a string -func (obj *patternFlowTcpEcnCwrMetricTag) Name() string { +func (obj *patternFlowIgmpv1VersionMetricTag) Name() string { return *obj.obj.Name } // Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field -// SetName sets the string value in the PatternFlowTcpEcnCwrMetricTag object -func (obj *patternFlowTcpEcnCwrMetricTag) SetName(value string) PatternFlowTcpEcnCwrMetricTag { +// SetName sets the string value in the PatternFlowIgmpv1VersionMetricTag object +func (obj *patternFlowIgmpv1VersionMetricTag) SetName(value string) PatternFlowIgmpv1VersionMetricTag { obj.obj.Name = &value return obj @@ -225345,7 +270108,7 @@ func (obj *patternFlowTcpEcnCwrMetricTag) SetName(value string) PatternFlowTcpEc // Offset in bits relative to start of corresponding header field // Offset returns a uint32 -func (obj *patternFlowTcpEcnCwrMetricTag) Offset() uint32 { +func (obj *patternFlowIgmpv1VersionMetricTag) Offset() uint32 { return *obj.obj.Offset @@ -225353,13 +270116,13 @@ func (obj *patternFlowTcpEcnCwrMetricTag) Offset() uint32 { // Offset in bits relative to start of corresponding header field // Offset returns a uint32 -func (obj *patternFlowTcpEcnCwrMetricTag) HasOffset() bool { +func (obj *patternFlowIgmpv1VersionMetricTag) HasOffset() bool { return obj.obj.Offset != nil } // Offset in bits relative to start of corresponding header field -// SetOffset sets the uint32 value in the PatternFlowTcpEcnCwrMetricTag object -func (obj *patternFlowTcpEcnCwrMetricTag) SetOffset(value uint32) PatternFlowTcpEcnCwrMetricTag { +// SetOffset sets the uint32 value in the PatternFlowIgmpv1VersionMetricTag object +func (obj *patternFlowIgmpv1VersionMetricTag) SetOffset(value uint32) PatternFlowIgmpv1VersionMetricTag { obj.obj.Offset = &value return obj @@ -225367,7 +270130,7 @@ func (obj *patternFlowTcpEcnCwrMetricTag) SetOffset(value uint32) PatternFlowTcp // Number of bits to track for metrics starting from configured offset of corresponding header field // Length returns a uint32 -func (obj *patternFlowTcpEcnCwrMetricTag) Length() uint32 { +func (obj *patternFlowIgmpv1VersionMetricTag) Length() uint32 { return *obj.obj.Length @@ -225375,83 +270138,83 @@ func (obj *patternFlowTcpEcnCwrMetricTag) Length() uint32 { // Number of bits to track for metrics starting from configured offset of corresponding header field // Length returns a uint32 -func (obj *patternFlowTcpEcnCwrMetricTag) HasLength() bool { +func (obj *patternFlowIgmpv1VersionMetricTag) HasLength() bool { return obj.obj.Length != nil } // Number of bits to track for metrics starting from configured offset of corresponding header field -// SetLength sets the uint32 value in the PatternFlowTcpEcnCwrMetricTag object -func (obj *patternFlowTcpEcnCwrMetricTag) SetLength(value uint32) PatternFlowTcpEcnCwrMetricTag { +// SetLength sets the uint32 value in the PatternFlowIgmpv1VersionMetricTag object +func (obj *patternFlowIgmpv1VersionMetricTag) SetLength(value uint32) PatternFlowIgmpv1VersionMetricTag { obj.obj.Length = &value return obj } -func (obj *patternFlowTcpEcnCwrMetricTag) validateObj(vObj *validation, set_default bool) { +func (obj *patternFlowIgmpv1VersionMetricTag) validateObj(vObj *validation, set_default bool) { if set_default { obj.setDefault() } // Name is required if obj.obj.Name == nil { - vObj.validationErrors = append(vObj.validationErrors, "Name is required field on interface PatternFlowTcpEcnCwrMetricTag") + vObj.validationErrors = append(vObj.validationErrors, "Name is required field on interface PatternFlowIgmpv1VersionMetricTag") } if obj.obj.Offset != nil { - if *obj.obj.Offset > 0 { + if *obj.obj.Offset > 3 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowTcpEcnCwrMetricTag.Offset <= 0 but Got %d", *obj.obj.Offset)) + fmt.Sprintf("0 <= PatternFlowIgmpv1VersionMetricTag.Offset <= 3 but Got %d", *obj.obj.Offset)) } } if obj.obj.Length != nil { - if *obj.obj.Length < 1 || *obj.obj.Length > 1 { + if *obj.obj.Length < 1 || *obj.obj.Length > 4 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("1 <= PatternFlowTcpEcnCwrMetricTag.Length <= 1 but Got %d", *obj.obj.Length)) + fmt.Sprintf("1 <= PatternFlowIgmpv1VersionMetricTag.Length <= 4 but Got %d", *obj.obj.Length)) } } } -func (obj *patternFlowTcpEcnCwrMetricTag) setDefault() { +func (obj *patternFlowIgmpv1VersionMetricTag) setDefault() { if obj.obj.Offset == nil { obj.SetOffset(0) } if obj.obj.Length == nil { - obj.SetLength(1) + obj.SetLength(4) } } -// ***** PatternFlowTcpEcnEchoCounter ***** -type patternFlowTcpEcnEchoCounter struct { +// ***** PatternFlowIgmpv1TypeCounter ***** +type patternFlowIgmpv1TypeCounter struct { validation - obj *otg.PatternFlowTcpEcnEchoCounter + obj *otg.PatternFlowIgmpv1TypeCounter } -func NewPatternFlowTcpEcnEchoCounter() PatternFlowTcpEcnEchoCounter { - obj := patternFlowTcpEcnEchoCounter{obj: &otg.PatternFlowTcpEcnEchoCounter{}} +func NewPatternFlowIgmpv1TypeCounter() PatternFlowIgmpv1TypeCounter { + obj := patternFlowIgmpv1TypeCounter{obj: &otg.PatternFlowIgmpv1TypeCounter{}} obj.setDefault() return &obj } -func (obj *patternFlowTcpEcnEchoCounter) Msg() *otg.PatternFlowTcpEcnEchoCounter { +func (obj *patternFlowIgmpv1TypeCounter) Msg() *otg.PatternFlowIgmpv1TypeCounter { return obj.obj } -func (obj *patternFlowTcpEcnEchoCounter) SetMsg(msg *otg.PatternFlowTcpEcnEchoCounter) PatternFlowTcpEcnEchoCounter { +func (obj *patternFlowIgmpv1TypeCounter) SetMsg(msg *otg.PatternFlowIgmpv1TypeCounter) PatternFlowIgmpv1TypeCounter { proto.Merge(obj.obj, msg) return obj } -func (obj *patternFlowTcpEcnEchoCounter) ToProto() (*otg.PatternFlowTcpEcnEchoCounter, error) { +func (obj *patternFlowIgmpv1TypeCounter) ToProto() (*otg.PatternFlowIgmpv1TypeCounter, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -225459,7 +270222,7 @@ func (obj *patternFlowTcpEcnEchoCounter) ToProto() (*otg.PatternFlowTcpEcnEchoCo return obj.Msg(), nil } -func (obj *patternFlowTcpEcnEchoCounter) FromProto(msg *otg.PatternFlowTcpEcnEchoCounter) (PatternFlowTcpEcnEchoCounter, error) { +func (obj *patternFlowIgmpv1TypeCounter) FromProto(msg *otg.PatternFlowIgmpv1TypeCounter) (PatternFlowIgmpv1TypeCounter, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -225468,7 +270231,7 @@ func (obj *patternFlowTcpEcnEchoCounter) FromProto(msg *otg.PatternFlowTcpEcnEch return newObj, nil } -func (obj *patternFlowTcpEcnEchoCounter) ToPbText() (string, error) { +func (obj *patternFlowIgmpv1TypeCounter) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -225480,7 +270243,7 @@ func (obj *patternFlowTcpEcnEchoCounter) ToPbText() (string, error) { return string(protoMarshal), nil } -func (obj *patternFlowTcpEcnEchoCounter) FromPbText(value string) error { +func (obj *patternFlowIgmpv1TypeCounter) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj @@ -225493,7 +270256,7 @@ func (obj *patternFlowTcpEcnEchoCounter) FromPbText(value string) error { return retObj } -func (obj *patternFlowTcpEcnEchoCounter) ToYaml() (string, error) { +func (obj *patternFlowIgmpv1TypeCounter) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -225514,7 +270277,7 @@ func (obj *patternFlowTcpEcnEchoCounter) ToYaml() (string, error) { return string(data), nil } -func (obj *patternFlowTcpEcnEchoCounter) FromYaml(value string) error { +func (obj *patternFlowIgmpv1TypeCounter) FromYaml(value string) error { if value == "" { value = "{}" } @@ -225539,7 +270302,7 @@ func (obj *patternFlowTcpEcnEchoCounter) FromYaml(value string) error { return nil } -func (obj *patternFlowTcpEcnEchoCounter) ToJson() (string, error) { +func (obj *patternFlowIgmpv1TypeCounter) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -225557,7 +270320,7 @@ func (obj *patternFlowTcpEcnEchoCounter) ToJson() (string, error) { return string(data), nil } -func (obj *patternFlowTcpEcnEchoCounter) FromJson(value string) error { +func (obj *patternFlowIgmpv1TypeCounter) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -225578,19 +270341,19 @@ func (obj *patternFlowTcpEcnEchoCounter) FromJson(value string) error { return nil } -func (obj *patternFlowTcpEcnEchoCounter) validateToAndFrom() error { +func (obj *patternFlowIgmpv1TypeCounter) validateToAndFrom() error { // emptyVars() obj.validateObj(&obj.validation, true) return obj.validationResult() } -func (obj *patternFlowTcpEcnEchoCounter) Validate() error { +func (obj *patternFlowIgmpv1TypeCounter) Validate() error { // emptyVars() obj.validateObj(&obj.validation, false) return obj.validationResult() } -func (obj *patternFlowTcpEcnEchoCounter) String() string { +func (obj *patternFlowIgmpv1TypeCounter) String() string { str, err := obj.ToYaml() if err != nil { return err.Error() @@ -225598,12 +270361,12 @@ func (obj *patternFlowTcpEcnEchoCounter) String() string { return str } -func (obj *patternFlowTcpEcnEchoCounter) Clone() (PatternFlowTcpEcnEchoCounter, error) { +func (obj *patternFlowIgmpv1TypeCounter) Clone() (PatternFlowIgmpv1TypeCounter, error) { vErr := obj.Validate() if vErr != nil { return nil, vErr } - newObj := NewPatternFlowTcpEcnEchoCounter() + newObj := NewPatternFlowIgmpv1TypeCounter() data, err := proto.Marshal(obj.Msg()) if err != nil { return nil, err @@ -225615,63 +270378,63 @@ func (obj *patternFlowTcpEcnEchoCounter) Clone() (PatternFlowTcpEcnEchoCounter, return newObj, nil } -// PatternFlowTcpEcnEchoCounter is integer counter pattern -type PatternFlowTcpEcnEchoCounter interface { +// PatternFlowIgmpv1TypeCounter is integer counter pattern +type PatternFlowIgmpv1TypeCounter interface { Validation - // Msg marshals PatternFlowTcpEcnEchoCounter to protobuf object *otg.PatternFlowTcpEcnEchoCounter + // Msg marshals PatternFlowIgmpv1TypeCounter to protobuf object *otg.PatternFlowIgmpv1TypeCounter // and doesn't set defaults - Msg() *otg.PatternFlowTcpEcnEchoCounter - // SetMsg unmarshals PatternFlowTcpEcnEchoCounter from protobuf object *otg.PatternFlowTcpEcnEchoCounter + Msg() *otg.PatternFlowIgmpv1TypeCounter + // SetMsg unmarshals PatternFlowIgmpv1TypeCounter from protobuf object *otg.PatternFlowIgmpv1TypeCounter // and doesn't set defaults - SetMsg(*otg.PatternFlowTcpEcnEchoCounter) PatternFlowTcpEcnEchoCounter - // ToProto marshals PatternFlowTcpEcnEchoCounter to protobuf object *otg.PatternFlowTcpEcnEchoCounter - ToProto() (*otg.PatternFlowTcpEcnEchoCounter, error) - // ToPbText marshals PatternFlowTcpEcnEchoCounter to protobuf text + SetMsg(*otg.PatternFlowIgmpv1TypeCounter) PatternFlowIgmpv1TypeCounter + // ToProto marshals PatternFlowIgmpv1TypeCounter to protobuf object *otg.PatternFlowIgmpv1TypeCounter + ToProto() (*otg.PatternFlowIgmpv1TypeCounter, error) + // ToPbText marshals PatternFlowIgmpv1TypeCounter to protobuf text ToPbText() (string, error) - // ToYaml marshals PatternFlowTcpEcnEchoCounter to YAML text + // ToYaml marshals PatternFlowIgmpv1TypeCounter to YAML text ToYaml() (string, error) - // ToJson marshals PatternFlowTcpEcnEchoCounter to JSON text + // ToJson marshals PatternFlowIgmpv1TypeCounter to JSON text ToJson() (string, error) - // FromProto unmarshals PatternFlowTcpEcnEchoCounter from protobuf object *otg.PatternFlowTcpEcnEchoCounter - FromProto(msg *otg.PatternFlowTcpEcnEchoCounter) (PatternFlowTcpEcnEchoCounter, error) - // FromPbText unmarshals PatternFlowTcpEcnEchoCounter from protobuf text + // FromProto unmarshals PatternFlowIgmpv1TypeCounter from protobuf object *otg.PatternFlowIgmpv1TypeCounter + FromProto(msg *otg.PatternFlowIgmpv1TypeCounter) (PatternFlowIgmpv1TypeCounter, error) + // FromPbText unmarshals PatternFlowIgmpv1TypeCounter from protobuf text FromPbText(value string) error - // FromYaml unmarshals PatternFlowTcpEcnEchoCounter from YAML text + // FromYaml unmarshals PatternFlowIgmpv1TypeCounter from YAML text FromYaml(value string) error - // FromJson unmarshals PatternFlowTcpEcnEchoCounter from JSON text + // FromJson unmarshals PatternFlowIgmpv1TypeCounter from JSON text FromJson(value string) error - // Validate validates PatternFlowTcpEcnEchoCounter + // Validate validates PatternFlowIgmpv1TypeCounter Validate() error // A stringer function String() string // Clones the object - Clone() (PatternFlowTcpEcnEchoCounter, error) + Clone() (PatternFlowIgmpv1TypeCounter, error) validateToAndFrom() error validateObj(vObj *validation, set_default bool) setDefault() - // Start returns uint32, set in PatternFlowTcpEcnEchoCounter. + // Start returns uint32, set in PatternFlowIgmpv1TypeCounter. Start() uint32 - // SetStart assigns uint32 provided by user to PatternFlowTcpEcnEchoCounter - SetStart(value uint32) PatternFlowTcpEcnEchoCounter - // HasStart checks if Start has been set in PatternFlowTcpEcnEchoCounter + // SetStart assigns uint32 provided by user to PatternFlowIgmpv1TypeCounter + SetStart(value uint32) PatternFlowIgmpv1TypeCounter + // HasStart checks if Start has been set in PatternFlowIgmpv1TypeCounter HasStart() bool - // Step returns uint32, set in PatternFlowTcpEcnEchoCounter. + // Step returns uint32, set in PatternFlowIgmpv1TypeCounter. Step() uint32 - // SetStep assigns uint32 provided by user to PatternFlowTcpEcnEchoCounter - SetStep(value uint32) PatternFlowTcpEcnEchoCounter - // HasStep checks if Step has been set in PatternFlowTcpEcnEchoCounter + // SetStep assigns uint32 provided by user to PatternFlowIgmpv1TypeCounter + SetStep(value uint32) PatternFlowIgmpv1TypeCounter + // HasStep checks if Step has been set in PatternFlowIgmpv1TypeCounter HasStep() bool - // Count returns uint32, set in PatternFlowTcpEcnEchoCounter. + // Count returns uint32, set in PatternFlowIgmpv1TypeCounter. Count() uint32 - // SetCount assigns uint32 provided by user to PatternFlowTcpEcnEchoCounter - SetCount(value uint32) PatternFlowTcpEcnEchoCounter - // HasCount checks if Count has been set in PatternFlowTcpEcnEchoCounter + // SetCount assigns uint32 provided by user to PatternFlowIgmpv1TypeCounter + SetCount(value uint32) PatternFlowIgmpv1TypeCounter + // HasCount checks if Count has been set in PatternFlowIgmpv1TypeCounter HasCount() bool } // description is TBD // Start returns a uint32 -func (obj *patternFlowTcpEcnEchoCounter) Start() uint32 { +func (obj *patternFlowIgmpv1TypeCounter) Start() uint32 { return *obj.obj.Start @@ -225679,13 +270442,13 @@ func (obj *patternFlowTcpEcnEchoCounter) Start() uint32 { // description is TBD // Start returns a uint32 -func (obj *patternFlowTcpEcnEchoCounter) HasStart() bool { +func (obj *patternFlowIgmpv1TypeCounter) HasStart() bool { return obj.obj.Start != nil } // description is TBD -// SetStart sets the uint32 value in the PatternFlowTcpEcnEchoCounter object -func (obj *patternFlowTcpEcnEchoCounter) SetStart(value uint32) PatternFlowTcpEcnEchoCounter { +// SetStart sets the uint32 value in the PatternFlowIgmpv1TypeCounter object +func (obj *patternFlowIgmpv1TypeCounter) SetStart(value uint32) PatternFlowIgmpv1TypeCounter { obj.obj.Start = &value return obj @@ -225693,7 +270456,7 @@ func (obj *patternFlowTcpEcnEchoCounter) SetStart(value uint32) PatternFlowTcpEc // description is TBD // Step returns a uint32 -func (obj *patternFlowTcpEcnEchoCounter) Step() uint32 { +func (obj *patternFlowIgmpv1TypeCounter) Step() uint32 { return *obj.obj.Step @@ -225701,13 +270464,13 @@ func (obj *patternFlowTcpEcnEchoCounter) Step() uint32 { // description is TBD // Step returns a uint32 -func (obj *patternFlowTcpEcnEchoCounter) HasStep() bool { +func (obj *patternFlowIgmpv1TypeCounter) HasStep() bool { return obj.obj.Step != nil } // description is TBD -// SetStep sets the uint32 value in the PatternFlowTcpEcnEchoCounter object -func (obj *patternFlowTcpEcnEchoCounter) SetStep(value uint32) PatternFlowTcpEcnEchoCounter { +// SetStep sets the uint32 value in the PatternFlowIgmpv1TypeCounter object +func (obj *patternFlowIgmpv1TypeCounter) SetStep(value uint32) PatternFlowIgmpv1TypeCounter { obj.obj.Step = &value return obj @@ -225715,7 +270478,7 @@ func (obj *patternFlowTcpEcnEchoCounter) SetStep(value uint32) PatternFlowTcpEcn // description is TBD // Count returns a uint32 -func (obj *patternFlowTcpEcnEchoCounter) Count() uint32 { +func (obj *patternFlowIgmpv1TypeCounter) Count() uint32 { return *obj.obj.Count @@ -225723,58 +270486,58 @@ func (obj *patternFlowTcpEcnEchoCounter) Count() uint32 { // description is TBD // Count returns a uint32 -func (obj *patternFlowTcpEcnEchoCounter) HasCount() bool { +func (obj *patternFlowIgmpv1TypeCounter) HasCount() bool { return obj.obj.Count != nil } // description is TBD -// SetCount sets the uint32 value in the PatternFlowTcpEcnEchoCounter object -func (obj *patternFlowTcpEcnEchoCounter) SetCount(value uint32) PatternFlowTcpEcnEchoCounter { +// SetCount sets the uint32 value in the PatternFlowIgmpv1TypeCounter object +func (obj *patternFlowIgmpv1TypeCounter) SetCount(value uint32) PatternFlowIgmpv1TypeCounter { obj.obj.Count = &value return obj } -func (obj *patternFlowTcpEcnEchoCounter) validateObj(vObj *validation, set_default bool) { +func (obj *patternFlowIgmpv1TypeCounter) validateObj(vObj *validation, set_default bool) { if set_default { obj.setDefault() } if obj.obj.Start != nil { - if *obj.obj.Start > 1 { + if *obj.obj.Start > 15 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowTcpEcnEchoCounter.Start <= 1 but Got %d", *obj.obj.Start)) + fmt.Sprintf("0 <= PatternFlowIgmpv1TypeCounter.Start <= 15 but Got %d", *obj.obj.Start)) } } if obj.obj.Step != nil { - if *obj.obj.Step > 1 { + if *obj.obj.Step > 15 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowTcpEcnEchoCounter.Step <= 1 but Got %d", *obj.obj.Step)) + fmt.Sprintf("0 <= PatternFlowIgmpv1TypeCounter.Step <= 15 but Got %d", *obj.obj.Step)) } } if obj.obj.Count != nil { - if *obj.obj.Count > 1 { + if *obj.obj.Count > 15 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowTcpEcnEchoCounter.Count <= 1 but Got %d", *obj.obj.Count)) + fmt.Sprintf("0 <= PatternFlowIgmpv1TypeCounter.Count <= 15 but Got %d", *obj.obj.Count)) } } } -func (obj *patternFlowTcpEcnEchoCounter) setDefault() { +func (obj *patternFlowIgmpv1TypeCounter) setDefault() { if obj.obj.Start == nil { - obj.SetStart(0) + obj.SetStart(1) } if obj.obj.Step == nil { obj.SetStep(1) @@ -225785,29 +270548,29 @@ func (obj *patternFlowTcpEcnEchoCounter) setDefault() { } -// ***** PatternFlowTcpEcnEchoMetricTag ***** -type patternFlowTcpEcnEchoMetricTag struct { +// ***** PatternFlowIgmpv1TypeMetricTag ***** +type patternFlowIgmpv1TypeMetricTag struct { validation - obj *otg.PatternFlowTcpEcnEchoMetricTag + obj *otg.PatternFlowIgmpv1TypeMetricTag } -func NewPatternFlowTcpEcnEchoMetricTag() PatternFlowTcpEcnEchoMetricTag { - obj := patternFlowTcpEcnEchoMetricTag{obj: &otg.PatternFlowTcpEcnEchoMetricTag{}} +func NewPatternFlowIgmpv1TypeMetricTag() PatternFlowIgmpv1TypeMetricTag { + obj := patternFlowIgmpv1TypeMetricTag{obj: &otg.PatternFlowIgmpv1TypeMetricTag{}} obj.setDefault() return &obj } -func (obj *patternFlowTcpEcnEchoMetricTag) Msg() *otg.PatternFlowTcpEcnEchoMetricTag { +func (obj *patternFlowIgmpv1TypeMetricTag) Msg() *otg.PatternFlowIgmpv1TypeMetricTag { return obj.obj } -func (obj *patternFlowTcpEcnEchoMetricTag) SetMsg(msg *otg.PatternFlowTcpEcnEchoMetricTag) PatternFlowTcpEcnEchoMetricTag { +func (obj *patternFlowIgmpv1TypeMetricTag) SetMsg(msg *otg.PatternFlowIgmpv1TypeMetricTag) PatternFlowIgmpv1TypeMetricTag { proto.Merge(obj.obj, msg) return obj } -func (obj *patternFlowTcpEcnEchoMetricTag) ToProto() (*otg.PatternFlowTcpEcnEchoMetricTag, error) { +func (obj *patternFlowIgmpv1TypeMetricTag) ToProto() (*otg.PatternFlowIgmpv1TypeMetricTag, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -225815,7 +270578,7 @@ func (obj *patternFlowTcpEcnEchoMetricTag) ToProto() (*otg.PatternFlowTcpEcnEcho return obj.Msg(), nil } -func (obj *patternFlowTcpEcnEchoMetricTag) FromProto(msg *otg.PatternFlowTcpEcnEchoMetricTag) (PatternFlowTcpEcnEchoMetricTag, error) { +func (obj *patternFlowIgmpv1TypeMetricTag) FromProto(msg *otg.PatternFlowIgmpv1TypeMetricTag) (PatternFlowIgmpv1TypeMetricTag, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -225824,7 +270587,7 @@ func (obj *patternFlowTcpEcnEchoMetricTag) FromProto(msg *otg.PatternFlowTcpEcnE return newObj, nil } -func (obj *patternFlowTcpEcnEchoMetricTag) ToPbText() (string, error) { +func (obj *patternFlowIgmpv1TypeMetricTag) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -225836,7 +270599,7 @@ func (obj *patternFlowTcpEcnEchoMetricTag) ToPbText() (string, error) { return string(protoMarshal), nil } -func (obj *patternFlowTcpEcnEchoMetricTag) FromPbText(value string) error { +func (obj *patternFlowIgmpv1TypeMetricTag) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj @@ -225849,7 +270612,7 @@ func (obj *patternFlowTcpEcnEchoMetricTag) FromPbText(value string) error { return retObj } -func (obj *patternFlowTcpEcnEchoMetricTag) ToYaml() (string, error) { +func (obj *patternFlowIgmpv1TypeMetricTag) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -225870,7 +270633,7 @@ func (obj *patternFlowTcpEcnEchoMetricTag) ToYaml() (string, error) { return string(data), nil } -func (obj *patternFlowTcpEcnEchoMetricTag) FromYaml(value string) error { +func (obj *patternFlowIgmpv1TypeMetricTag) FromYaml(value string) error { if value == "" { value = "{}" } @@ -225895,7 +270658,7 @@ func (obj *patternFlowTcpEcnEchoMetricTag) FromYaml(value string) error { return nil } -func (obj *patternFlowTcpEcnEchoMetricTag) ToJson() (string, error) { +func (obj *patternFlowIgmpv1TypeMetricTag) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -225913,7 +270676,7 @@ func (obj *patternFlowTcpEcnEchoMetricTag) ToJson() (string, error) { return string(data), nil } -func (obj *patternFlowTcpEcnEchoMetricTag) FromJson(value string) error { +func (obj *patternFlowIgmpv1TypeMetricTag) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -225934,19 +270697,19 @@ func (obj *patternFlowTcpEcnEchoMetricTag) FromJson(value string) error { return nil } -func (obj *patternFlowTcpEcnEchoMetricTag) validateToAndFrom() error { +func (obj *patternFlowIgmpv1TypeMetricTag) validateToAndFrom() error { // emptyVars() obj.validateObj(&obj.validation, true) return obj.validationResult() } -func (obj *patternFlowTcpEcnEchoMetricTag) Validate() error { +func (obj *patternFlowIgmpv1TypeMetricTag) Validate() error { // emptyVars() obj.validateObj(&obj.validation, false) return obj.validationResult() } -func (obj *patternFlowTcpEcnEchoMetricTag) String() string { +func (obj *patternFlowIgmpv1TypeMetricTag) String() string { str, err := obj.ToYaml() if err != nil { return err.Error() @@ -225954,12 +270717,12 @@ func (obj *patternFlowTcpEcnEchoMetricTag) String() string { return str } -func (obj *patternFlowTcpEcnEchoMetricTag) Clone() (PatternFlowTcpEcnEchoMetricTag, error) { +func (obj *patternFlowIgmpv1TypeMetricTag) Clone() (PatternFlowIgmpv1TypeMetricTag, error) { vErr := obj.Validate() if vErr != nil { return nil, vErr } - newObj := NewPatternFlowTcpEcnEchoMetricTag() + newObj := NewPatternFlowIgmpv1TypeMetricTag() data, err := proto.Marshal(obj.Msg()) if err != nil { return nil, err @@ -225971,69 +270734,69 @@ func (obj *patternFlowTcpEcnEchoMetricTag) Clone() (PatternFlowTcpEcnEchoMetricT return newObj, nil } -// PatternFlowTcpEcnEchoMetricTag is metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. -type PatternFlowTcpEcnEchoMetricTag interface { +// PatternFlowIgmpv1TypeMetricTag is metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. +type PatternFlowIgmpv1TypeMetricTag interface { Validation - // Msg marshals PatternFlowTcpEcnEchoMetricTag to protobuf object *otg.PatternFlowTcpEcnEchoMetricTag + // Msg marshals PatternFlowIgmpv1TypeMetricTag to protobuf object *otg.PatternFlowIgmpv1TypeMetricTag // and doesn't set defaults - Msg() *otg.PatternFlowTcpEcnEchoMetricTag - // SetMsg unmarshals PatternFlowTcpEcnEchoMetricTag from protobuf object *otg.PatternFlowTcpEcnEchoMetricTag + Msg() *otg.PatternFlowIgmpv1TypeMetricTag + // SetMsg unmarshals PatternFlowIgmpv1TypeMetricTag from protobuf object *otg.PatternFlowIgmpv1TypeMetricTag // and doesn't set defaults - SetMsg(*otg.PatternFlowTcpEcnEchoMetricTag) PatternFlowTcpEcnEchoMetricTag - // ToProto marshals PatternFlowTcpEcnEchoMetricTag to protobuf object *otg.PatternFlowTcpEcnEchoMetricTag - ToProto() (*otg.PatternFlowTcpEcnEchoMetricTag, error) - // ToPbText marshals PatternFlowTcpEcnEchoMetricTag to protobuf text + SetMsg(*otg.PatternFlowIgmpv1TypeMetricTag) PatternFlowIgmpv1TypeMetricTag + // ToProto marshals PatternFlowIgmpv1TypeMetricTag to protobuf object *otg.PatternFlowIgmpv1TypeMetricTag + ToProto() (*otg.PatternFlowIgmpv1TypeMetricTag, error) + // ToPbText marshals PatternFlowIgmpv1TypeMetricTag to protobuf text ToPbText() (string, error) - // ToYaml marshals PatternFlowTcpEcnEchoMetricTag to YAML text + // ToYaml marshals PatternFlowIgmpv1TypeMetricTag to YAML text ToYaml() (string, error) - // ToJson marshals PatternFlowTcpEcnEchoMetricTag to JSON text + // ToJson marshals PatternFlowIgmpv1TypeMetricTag to JSON text ToJson() (string, error) - // FromProto unmarshals PatternFlowTcpEcnEchoMetricTag from protobuf object *otg.PatternFlowTcpEcnEchoMetricTag - FromProto(msg *otg.PatternFlowTcpEcnEchoMetricTag) (PatternFlowTcpEcnEchoMetricTag, error) - // FromPbText unmarshals PatternFlowTcpEcnEchoMetricTag from protobuf text + // FromProto unmarshals PatternFlowIgmpv1TypeMetricTag from protobuf object *otg.PatternFlowIgmpv1TypeMetricTag + FromProto(msg *otg.PatternFlowIgmpv1TypeMetricTag) (PatternFlowIgmpv1TypeMetricTag, error) + // FromPbText unmarshals PatternFlowIgmpv1TypeMetricTag from protobuf text FromPbText(value string) error - // FromYaml unmarshals PatternFlowTcpEcnEchoMetricTag from YAML text + // FromYaml unmarshals PatternFlowIgmpv1TypeMetricTag from YAML text FromYaml(value string) error - // FromJson unmarshals PatternFlowTcpEcnEchoMetricTag from JSON text + // FromJson unmarshals PatternFlowIgmpv1TypeMetricTag from JSON text FromJson(value string) error - // Validate validates PatternFlowTcpEcnEchoMetricTag + // Validate validates PatternFlowIgmpv1TypeMetricTag Validate() error // A stringer function String() string // Clones the object - Clone() (PatternFlowTcpEcnEchoMetricTag, error) + Clone() (PatternFlowIgmpv1TypeMetricTag, error) validateToAndFrom() error validateObj(vObj *validation, set_default bool) setDefault() - // Name returns string, set in PatternFlowTcpEcnEchoMetricTag. + // Name returns string, set in PatternFlowIgmpv1TypeMetricTag. Name() string - // SetName assigns string provided by user to PatternFlowTcpEcnEchoMetricTag - SetName(value string) PatternFlowTcpEcnEchoMetricTag - // Offset returns uint32, set in PatternFlowTcpEcnEchoMetricTag. + // SetName assigns string provided by user to PatternFlowIgmpv1TypeMetricTag + SetName(value string) PatternFlowIgmpv1TypeMetricTag + // Offset returns uint32, set in PatternFlowIgmpv1TypeMetricTag. Offset() uint32 - // SetOffset assigns uint32 provided by user to PatternFlowTcpEcnEchoMetricTag - SetOffset(value uint32) PatternFlowTcpEcnEchoMetricTag - // HasOffset checks if Offset has been set in PatternFlowTcpEcnEchoMetricTag + // SetOffset assigns uint32 provided by user to PatternFlowIgmpv1TypeMetricTag + SetOffset(value uint32) PatternFlowIgmpv1TypeMetricTag + // HasOffset checks if Offset has been set in PatternFlowIgmpv1TypeMetricTag HasOffset() bool - // Length returns uint32, set in PatternFlowTcpEcnEchoMetricTag. + // Length returns uint32, set in PatternFlowIgmpv1TypeMetricTag. Length() uint32 - // SetLength assigns uint32 provided by user to PatternFlowTcpEcnEchoMetricTag - SetLength(value uint32) PatternFlowTcpEcnEchoMetricTag - // HasLength checks if Length has been set in PatternFlowTcpEcnEchoMetricTag + // SetLength assigns uint32 provided by user to PatternFlowIgmpv1TypeMetricTag + SetLength(value uint32) PatternFlowIgmpv1TypeMetricTag + // HasLength checks if Length has been set in PatternFlowIgmpv1TypeMetricTag HasLength() bool } // Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field // Name returns a string -func (obj *patternFlowTcpEcnEchoMetricTag) Name() string { +func (obj *patternFlowIgmpv1TypeMetricTag) Name() string { return *obj.obj.Name } // Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field -// SetName sets the string value in the PatternFlowTcpEcnEchoMetricTag object -func (obj *patternFlowTcpEcnEchoMetricTag) SetName(value string) PatternFlowTcpEcnEchoMetricTag { +// SetName sets the string value in the PatternFlowIgmpv1TypeMetricTag object +func (obj *patternFlowIgmpv1TypeMetricTag) SetName(value string) PatternFlowIgmpv1TypeMetricTag { obj.obj.Name = &value return obj @@ -226041,7 +270804,7 @@ func (obj *patternFlowTcpEcnEchoMetricTag) SetName(value string) PatternFlowTcpE // Offset in bits relative to start of corresponding header field // Offset returns a uint32 -func (obj *patternFlowTcpEcnEchoMetricTag) Offset() uint32 { +func (obj *patternFlowIgmpv1TypeMetricTag) Offset() uint32 { return *obj.obj.Offset @@ -226049,13 +270812,13 @@ func (obj *patternFlowTcpEcnEchoMetricTag) Offset() uint32 { // Offset in bits relative to start of corresponding header field // Offset returns a uint32 -func (obj *patternFlowTcpEcnEchoMetricTag) HasOffset() bool { +func (obj *patternFlowIgmpv1TypeMetricTag) HasOffset() bool { return obj.obj.Offset != nil } // Offset in bits relative to start of corresponding header field -// SetOffset sets the uint32 value in the PatternFlowTcpEcnEchoMetricTag object -func (obj *patternFlowTcpEcnEchoMetricTag) SetOffset(value uint32) PatternFlowTcpEcnEchoMetricTag { +// SetOffset sets the uint32 value in the PatternFlowIgmpv1TypeMetricTag object +func (obj *patternFlowIgmpv1TypeMetricTag) SetOffset(value uint32) PatternFlowIgmpv1TypeMetricTag { obj.obj.Offset = &value return obj @@ -226063,7 +270826,7 @@ func (obj *patternFlowTcpEcnEchoMetricTag) SetOffset(value uint32) PatternFlowTc // Number of bits to track for metrics starting from configured offset of corresponding header field // Length returns a uint32 -func (obj *patternFlowTcpEcnEchoMetricTag) Length() uint32 { +func (obj *patternFlowIgmpv1TypeMetricTag) Length() uint32 { return *obj.obj.Length @@ -226071,83 +270834,83 @@ func (obj *patternFlowTcpEcnEchoMetricTag) Length() uint32 { // Number of bits to track for metrics starting from configured offset of corresponding header field // Length returns a uint32 -func (obj *patternFlowTcpEcnEchoMetricTag) HasLength() bool { +func (obj *patternFlowIgmpv1TypeMetricTag) HasLength() bool { return obj.obj.Length != nil } // Number of bits to track for metrics starting from configured offset of corresponding header field -// SetLength sets the uint32 value in the PatternFlowTcpEcnEchoMetricTag object -func (obj *patternFlowTcpEcnEchoMetricTag) SetLength(value uint32) PatternFlowTcpEcnEchoMetricTag { +// SetLength sets the uint32 value in the PatternFlowIgmpv1TypeMetricTag object +func (obj *patternFlowIgmpv1TypeMetricTag) SetLength(value uint32) PatternFlowIgmpv1TypeMetricTag { obj.obj.Length = &value return obj } -func (obj *patternFlowTcpEcnEchoMetricTag) validateObj(vObj *validation, set_default bool) { +func (obj *patternFlowIgmpv1TypeMetricTag) validateObj(vObj *validation, set_default bool) { if set_default { obj.setDefault() } // Name is required if obj.obj.Name == nil { - vObj.validationErrors = append(vObj.validationErrors, "Name is required field on interface PatternFlowTcpEcnEchoMetricTag") + vObj.validationErrors = append(vObj.validationErrors, "Name is required field on interface PatternFlowIgmpv1TypeMetricTag") } if obj.obj.Offset != nil { - if *obj.obj.Offset > 0 { + if *obj.obj.Offset > 3 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowTcpEcnEchoMetricTag.Offset <= 0 but Got %d", *obj.obj.Offset)) + fmt.Sprintf("0 <= PatternFlowIgmpv1TypeMetricTag.Offset <= 3 but Got %d", *obj.obj.Offset)) } } if obj.obj.Length != nil { - if *obj.obj.Length < 1 || *obj.obj.Length > 1 { + if *obj.obj.Length < 1 || *obj.obj.Length > 4 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("1 <= PatternFlowTcpEcnEchoMetricTag.Length <= 1 but Got %d", *obj.obj.Length)) + fmt.Sprintf("1 <= PatternFlowIgmpv1TypeMetricTag.Length <= 4 but Got %d", *obj.obj.Length)) } } } -func (obj *patternFlowTcpEcnEchoMetricTag) setDefault() { +func (obj *patternFlowIgmpv1TypeMetricTag) setDefault() { if obj.obj.Offset == nil { obj.SetOffset(0) } if obj.obj.Length == nil { - obj.SetLength(1) + obj.SetLength(4) } } -// ***** PatternFlowTcpCtlUrgCounter ***** -type patternFlowTcpCtlUrgCounter struct { +// ***** PatternFlowIgmpv1UnusedCounter ***** +type patternFlowIgmpv1UnusedCounter struct { validation - obj *otg.PatternFlowTcpCtlUrgCounter + obj *otg.PatternFlowIgmpv1UnusedCounter } -func NewPatternFlowTcpCtlUrgCounter() PatternFlowTcpCtlUrgCounter { - obj := patternFlowTcpCtlUrgCounter{obj: &otg.PatternFlowTcpCtlUrgCounter{}} +func NewPatternFlowIgmpv1UnusedCounter() PatternFlowIgmpv1UnusedCounter { + obj := patternFlowIgmpv1UnusedCounter{obj: &otg.PatternFlowIgmpv1UnusedCounter{}} obj.setDefault() return &obj } -func (obj *patternFlowTcpCtlUrgCounter) Msg() *otg.PatternFlowTcpCtlUrgCounter { +func (obj *patternFlowIgmpv1UnusedCounter) Msg() *otg.PatternFlowIgmpv1UnusedCounter { return obj.obj } -func (obj *patternFlowTcpCtlUrgCounter) SetMsg(msg *otg.PatternFlowTcpCtlUrgCounter) PatternFlowTcpCtlUrgCounter { +func (obj *patternFlowIgmpv1UnusedCounter) SetMsg(msg *otg.PatternFlowIgmpv1UnusedCounter) PatternFlowIgmpv1UnusedCounter { proto.Merge(obj.obj, msg) return obj } -func (obj *patternFlowTcpCtlUrgCounter) ToProto() (*otg.PatternFlowTcpCtlUrgCounter, error) { +func (obj *patternFlowIgmpv1UnusedCounter) ToProto() (*otg.PatternFlowIgmpv1UnusedCounter, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -226155,7 +270918,7 @@ func (obj *patternFlowTcpCtlUrgCounter) ToProto() (*otg.PatternFlowTcpCtlUrgCoun return obj.Msg(), nil } -func (obj *patternFlowTcpCtlUrgCounter) FromProto(msg *otg.PatternFlowTcpCtlUrgCounter) (PatternFlowTcpCtlUrgCounter, error) { +func (obj *patternFlowIgmpv1UnusedCounter) FromProto(msg *otg.PatternFlowIgmpv1UnusedCounter) (PatternFlowIgmpv1UnusedCounter, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -226164,7 +270927,7 @@ func (obj *patternFlowTcpCtlUrgCounter) FromProto(msg *otg.PatternFlowTcpCtlUrgC return newObj, nil } -func (obj *patternFlowTcpCtlUrgCounter) ToPbText() (string, error) { +func (obj *patternFlowIgmpv1UnusedCounter) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -226176,7 +270939,7 @@ func (obj *patternFlowTcpCtlUrgCounter) ToPbText() (string, error) { return string(protoMarshal), nil } -func (obj *patternFlowTcpCtlUrgCounter) FromPbText(value string) error { +func (obj *patternFlowIgmpv1UnusedCounter) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj @@ -226189,7 +270952,7 @@ func (obj *patternFlowTcpCtlUrgCounter) FromPbText(value string) error { return retObj } -func (obj *patternFlowTcpCtlUrgCounter) ToYaml() (string, error) { +func (obj *patternFlowIgmpv1UnusedCounter) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -226210,7 +270973,7 @@ func (obj *patternFlowTcpCtlUrgCounter) ToYaml() (string, error) { return string(data), nil } -func (obj *patternFlowTcpCtlUrgCounter) FromYaml(value string) error { +func (obj *patternFlowIgmpv1UnusedCounter) FromYaml(value string) error { if value == "" { value = "{}" } @@ -226235,7 +270998,7 @@ func (obj *patternFlowTcpCtlUrgCounter) FromYaml(value string) error { return nil } -func (obj *patternFlowTcpCtlUrgCounter) ToJson() (string, error) { +func (obj *patternFlowIgmpv1UnusedCounter) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -226253,7 +271016,7 @@ func (obj *patternFlowTcpCtlUrgCounter) ToJson() (string, error) { return string(data), nil } -func (obj *patternFlowTcpCtlUrgCounter) FromJson(value string) error { +func (obj *patternFlowIgmpv1UnusedCounter) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -226274,19 +271037,19 @@ func (obj *patternFlowTcpCtlUrgCounter) FromJson(value string) error { return nil } -func (obj *patternFlowTcpCtlUrgCounter) validateToAndFrom() error { +func (obj *patternFlowIgmpv1UnusedCounter) validateToAndFrom() error { // emptyVars() obj.validateObj(&obj.validation, true) return obj.validationResult() } -func (obj *patternFlowTcpCtlUrgCounter) Validate() error { +func (obj *patternFlowIgmpv1UnusedCounter) Validate() error { // emptyVars() obj.validateObj(&obj.validation, false) return obj.validationResult() } -func (obj *patternFlowTcpCtlUrgCounter) String() string { +func (obj *patternFlowIgmpv1UnusedCounter) String() string { str, err := obj.ToYaml() if err != nil { return err.Error() @@ -226294,12 +271057,12 @@ func (obj *patternFlowTcpCtlUrgCounter) String() string { return str } -func (obj *patternFlowTcpCtlUrgCounter) Clone() (PatternFlowTcpCtlUrgCounter, error) { +func (obj *patternFlowIgmpv1UnusedCounter) Clone() (PatternFlowIgmpv1UnusedCounter, error) { vErr := obj.Validate() if vErr != nil { return nil, vErr } - newObj := NewPatternFlowTcpCtlUrgCounter() + newObj := NewPatternFlowIgmpv1UnusedCounter() data, err := proto.Marshal(obj.Msg()) if err != nil { return nil, err @@ -226311,63 +271074,63 @@ func (obj *patternFlowTcpCtlUrgCounter) Clone() (PatternFlowTcpCtlUrgCounter, er return newObj, nil } -// PatternFlowTcpCtlUrgCounter is integer counter pattern -type PatternFlowTcpCtlUrgCounter interface { +// PatternFlowIgmpv1UnusedCounter is integer counter pattern +type PatternFlowIgmpv1UnusedCounter interface { Validation - // Msg marshals PatternFlowTcpCtlUrgCounter to protobuf object *otg.PatternFlowTcpCtlUrgCounter + // Msg marshals PatternFlowIgmpv1UnusedCounter to protobuf object *otg.PatternFlowIgmpv1UnusedCounter // and doesn't set defaults - Msg() *otg.PatternFlowTcpCtlUrgCounter - // SetMsg unmarshals PatternFlowTcpCtlUrgCounter from protobuf object *otg.PatternFlowTcpCtlUrgCounter + Msg() *otg.PatternFlowIgmpv1UnusedCounter + // SetMsg unmarshals PatternFlowIgmpv1UnusedCounter from protobuf object *otg.PatternFlowIgmpv1UnusedCounter // and doesn't set defaults - SetMsg(*otg.PatternFlowTcpCtlUrgCounter) PatternFlowTcpCtlUrgCounter - // ToProto marshals PatternFlowTcpCtlUrgCounter to protobuf object *otg.PatternFlowTcpCtlUrgCounter - ToProto() (*otg.PatternFlowTcpCtlUrgCounter, error) - // ToPbText marshals PatternFlowTcpCtlUrgCounter to protobuf text + SetMsg(*otg.PatternFlowIgmpv1UnusedCounter) PatternFlowIgmpv1UnusedCounter + // ToProto marshals PatternFlowIgmpv1UnusedCounter to protobuf object *otg.PatternFlowIgmpv1UnusedCounter + ToProto() (*otg.PatternFlowIgmpv1UnusedCounter, error) + // ToPbText marshals PatternFlowIgmpv1UnusedCounter to protobuf text ToPbText() (string, error) - // ToYaml marshals PatternFlowTcpCtlUrgCounter to YAML text + // ToYaml marshals PatternFlowIgmpv1UnusedCounter to YAML text ToYaml() (string, error) - // ToJson marshals PatternFlowTcpCtlUrgCounter to JSON text + // ToJson marshals PatternFlowIgmpv1UnusedCounter to JSON text ToJson() (string, error) - // FromProto unmarshals PatternFlowTcpCtlUrgCounter from protobuf object *otg.PatternFlowTcpCtlUrgCounter - FromProto(msg *otg.PatternFlowTcpCtlUrgCounter) (PatternFlowTcpCtlUrgCounter, error) - // FromPbText unmarshals PatternFlowTcpCtlUrgCounter from protobuf text + // FromProto unmarshals PatternFlowIgmpv1UnusedCounter from protobuf object *otg.PatternFlowIgmpv1UnusedCounter + FromProto(msg *otg.PatternFlowIgmpv1UnusedCounter) (PatternFlowIgmpv1UnusedCounter, error) + // FromPbText unmarshals PatternFlowIgmpv1UnusedCounter from protobuf text FromPbText(value string) error - // FromYaml unmarshals PatternFlowTcpCtlUrgCounter from YAML text + // FromYaml unmarshals PatternFlowIgmpv1UnusedCounter from YAML text FromYaml(value string) error - // FromJson unmarshals PatternFlowTcpCtlUrgCounter from JSON text + // FromJson unmarshals PatternFlowIgmpv1UnusedCounter from JSON text FromJson(value string) error - // Validate validates PatternFlowTcpCtlUrgCounter + // Validate validates PatternFlowIgmpv1UnusedCounter Validate() error // A stringer function String() string // Clones the object - Clone() (PatternFlowTcpCtlUrgCounter, error) + Clone() (PatternFlowIgmpv1UnusedCounter, error) validateToAndFrom() error validateObj(vObj *validation, set_default bool) setDefault() - // Start returns uint32, set in PatternFlowTcpCtlUrgCounter. + // Start returns uint32, set in PatternFlowIgmpv1UnusedCounter. Start() uint32 - // SetStart assigns uint32 provided by user to PatternFlowTcpCtlUrgCounter - SetStart(value uint32) PatternFlowTcpCtlUrgCounter - // HasStart checks if Start has been set in PatternFlowTcpCtlUrgCounter + // SetStart assigns uint32 provided by user to PatternFlowIgmpv1UnusedCounter + SetStart(value uint32) PatternFlowIgmpv1UnusedCounter + // HasStart checks if Start has been set in PatternFlowIgmpv1UnusedCounter HasStart() bool - // Step returns uint32, set in PatternFlowTcpCtlUrgCounter. + // Step returns uint32, set in PatternFlowIgmpv1UnusedCounter. Step() uint32 - // SetStep assigns uint32 provided by user to PatternFlowTcpCtlUrgCounter - SetStep(value uint32) PatternFlowTcpCtlUrgCounter - // HasStep checks if Step has been set in PatternFlowTcpCtlUrgCounter + // SetStep assigns uint32 provided by user to PatternFlowIgmpv1UnusedCounter + SetStep(value uint32) PatternFlowIgmpv1UnusedCounter + // HasStep checks if Step has been set in PatternFlowIgmpv1UnusedCounter HasStep() bool - // Count returns uint32, set in PatternFlowTcpCtlUrgCounter. + // Count returns uint32, set in PatternFlowIgmpv1UnusedCounter. Count() uint32 - // SetCount assigns uint32 provided by user to PatternFlowTcpCtlUrgCounter - SetCount(value uint32) PatternFlowTcpCtlUrgCounter - // HasCount checks if Count has been set in PatternFlowTcpCtlUrgCounter + // SetCount assigns uint32 provided by user to PatternFlowIgmpv1UnusedCounter + SetCount(value uint32) PatternFlowIgmpv1UnusedCounter + // HasCount checks if Count has been set in PatternFlowIgmpv1UnusedCounter HasCount() bool } // description is TBD // Start returns a uint32 -func (obj *patternFlowTcpCtlUrgCounter) Start() uint32 { +func (obj *patternFlowIgmpv1UnusedCounter) Start() uint32 { return *obj.obj.Start @@ -226375,13 +271138,13 @@ func (obj *patternFlowTcpCtlUrgCounter) Start() uint32 { // description is TBD // Start returns a uint32 -func (obj *patternFlowTcpCtlUrgCounter) HasStart() bool { +func (obj *patternFlowIgmpv1UnusedCounter) HasStart() bool { return obj.obj.Start != nil } // description is TBD -// SetStart sets the uint32 value in the PatternFlowTcpCtlUrgCounter object -func (obj *patternFlowTcpCtlUrgCounter) SetStart(value uint32) PatternFlowTcpCtlUrgCounter { +// SetStart sets the uint32 value in the PatternFlowIgmpv1UnusedCounter object +func (obj *patternFlowIgmpv1UnusedCounter) SetStart(value uint32) PatternFlowIgmpv1UnusedCounter { obj.obj.Start = &value return obj @@ -226389,7 +271152,7 @@ func (obj *patternFlowTcpCtlUrgCounter) SetStart(value uint32) PatternFlowTcpCtl // description is TBD // Step returns a uint32 -func (obj *patternFlowTcpCtlUrgCounter) Step() uint32 { +func (obj *patternFlowIgmpv1UnusedCounter) Step() uint32 { return *obj.obj.Step @@ -226397,13 +271160,13 @@ func (obj *patternFlowTcpCtlUrgCounter) Step() uint32 { // description is TBD // Step returns a uint32 -func (obj *patternFlowTcpCtlUrgCounter) HasStep() bool { +func (obj *patternFlowIgmpv1UnusedCounter) HasStep() bool { return obj.obj.Step != nil } // description is TBD -// SetStep sets the uint32 value in the PatternFlowTcpCtlUrgCounter object -func (obj *patternFlowTcpCtlUrgCounter) SetStep(value uint32) PatternFlowTcpCtlUrgCounter { +// SetStep sets the uint32 value in the PatternFlowIgmpv1UnusedCounter object +func (obj *patternFlowIgmpv1UnusedCounter) SetStep(value uint32) PatternFlowIgmpv1UnusedCounter { obj.obj.Step = &value return obj @@ -226411,7 +271174,7 @@ func (obj *patternFlowTcpCtlUrgCounter) SetStep(value uint32) PatternFlowTcpCtlU // description is TBD // Count returns a uint32 -func (obj *patternFlowTcpCtlUrgCounter) Count() uint32 { +func (obj *patternFlowIgmpv1UnusedCounter) Count() uint32 { return *obj.obj.Count @@ -226419,56 +271182,56 @@ func (obj *patternFlowTcpCtlUrgCounter) Count() uint32 { // description is TBD // Count returns a uint32 -func (obj *patternFlowTcpCtlUrgCounter) HasCount() bool { +func (obj *patternFlowIgmpv1UnusedCounter) HasCount() bool { return obj.obj.Count != nil } // description is TBD -// SetCount sets the uint32 value in the PatternFlowTcpCtlUrgCounter object -func (obj *patternFlowTcpCtlUrgCounter) SetCount(value uint32) PatternFlowTcpCtlUrgCounter { +// SetCount sets the uint32 value in the PatternFlowIgmpv1UnusedCounter object +func (obj *patternFlowIgmpv1UnusedCounter) SetCount(value uint32) PatternFlowIgmpv1UnusedCounter { obj.obj.Count = &value return obj } -func (obj *patternFlowTcpCtlUrgCounter) validateObj(vObj *validation, set_default bool) { +func (obj *patternFlowIgmpv1UnusedCounter) validateObj(vObj *validation, set_default bool) { if set_default { obj.setDefault() } if obj.obj.Start != nil { - if *obj.obj.Start > 1 { + if *obj.obj.Start > 255 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowTcpCtlUrgCounter.Start <= 1 but Got %d", *obj.obj.Start)) + fmt.Sprintf("0 <= PatternFlowIgmpv1UnusedCounter.Start <= 255 but Got %d", *obj.obj.Start)) } } if obj.obj.Step != nil { - if *obj.obj.Step > 1 { + if *obj.obj.Step > 255 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowTcpCtlUrgCounter.Step <= 1 but Got %d", *obj.obj.Step)) + fmt.Sprintf("0 <= PatternFlowIgmpv1UnusedCounter.Step <= 255 but Got %d", *obj.obj.Step)) } } if obj.obj.Count != nil { - if *obj.obj.Count > 1 { + if *obj.obj.Count > 255 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowTcpCtlUrgCounter.Count <= 1 but Got %d", *obj.obj.Count)) + fmt.Sprintf("0 <= PatternFlowIgmpv1UnusedCounter.Count <= 255 but Got %d", *obj.obj.Count)) } } } -func (obj *patternFlowTcpCtlUrgCounter) setDefault() { +func (obj *patternFlowIgmpv1UnusedCounter) setDefault() { if obj.obj.Start == nil { obj.SetStart(0) } @@ -226481,29 +271244,29 @@ func (obj *patternFlowTcpCtlUrgCounter) setDefault() { } -// ***** PatternFlowTcpCtlUrgMetricTag ***** -type patternFlowTcpCtlUrgMetricTag struct { +// ***** PatternFlowIgmpv1UnusedMetricTag ***** +type patternFlowIgmpv1UnusedMetricTag struct { validation - obj *otg.PatternFlowTcpCtlUrgMetricTag + obj *otg.PatternFlowIgmpv1UnusedMetricTag } -func NewPatternFlowTcpCtlUrgMetricTag() PatternFlowTcpCtlUrgMetricTag { - obj := patternFlowTcpCtlUrgMetricTag{obj: &otg.PatternFlowTcpCtlUrgMetricTag{}} +func NewPatternFlowIgmpv1UnusedMetricTag() PatternFlowIgmpv1UnusedMetricTag { + obj := patternFlowIgmpv1UnusedMetricTag{obj: &otg.PatternFlowIgmpv1UnusedMetricTag{}} obj.setDefault() return &obj } -func (obj *patternFlowTcpCtlUrgMetricTag) Msg() *otg.PatternFlowTcpCtlUrgMetricTag { +func (obj *patternFlowIgmpv1UnusedMetricTag) Msg() *otg.PatternFlowIgmpv1UnusedMetricTag { return obj.obj } -func (obj *patternFlowTcpCtlUrgMetricTag) SetMsg(msg *otg.PatternFlowTcpCtlUrgMetricTag) PatternFlowTcpCtlUrgMetricTag { +func (obj *patternFlowIgmpv1UnusedMetricTag) SetMsg(msg *otg.PatternFlowIgmpv1UnusedMetricTag) PatternFlowIgmpv1UnusedMetricTag { proto.Merge(obj.obj, msg) return obj } -func (obj *patternFlowTcpCtlUrgMetricTag) ToProto() (*otg.PatternFlowTcpCtlUrgMetricTag, error) { +func (obj *patternFlowIgmpv1UnusedMetricTag) ToProto() (*otg.PatternFlowIgmpv1UnusedMetricTag, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -226511,7 +271274,7 @@ func (obj *patternFlowTcpCtlUrgMetricTag) ToProto() (*otg.PatternFlowTcpCtlUrgMe return obj.Msg(), nil } -func (obj *patternFlowTcpCtlUrgMetricTag) FromProto(msg *otg.PatternFlowTcpCtlUrgMetricTag) (PatternFlowTcpCtlUrgMetricTag, error) { +func (obj *patternFlowIgmpv1UnusedMetricTag) FromProto(msg *otg.PatternFlowIgmpv1UnusedMetricTag) (PatternFlowIgmpv1UnusedMetricTag, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -226520,7 +271283,7 @@ func (obj *patternFlowTcpCtlUrgMetricTag) FromProto(msg *otg.PatternFlowTcpCtlUr return newObj, nil } -func (obj *patternFlowTcpCtlUrgMetricTag) ToPbText() (string, error) { +func (obj *patternFlowIgmpv1UnusedMetricTag) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -226532,7 +271295,7 @@ func (obj *patternFlowTcpCtlUrgMetricTag) ToPbText() (string, error) { return string(protoMarshal), nil } -func (obj *patternFlowTcpCtlUrgMetricTag) FromPbText(value string) error { +func (obj *patternFlowIgmpv1UnusedMetricTag) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj @@ -226545,7 +271308,7 @@ func (obj *patternFlowTcpCtlUrgMetricTag) FromPbText(value string) error { return retObj } -func (obj *patternFlowTcpCtlUrgMetricTag) ToYaml() (string, error) { +func (obj *patternFlowIgmpv1UnusedMetricTag) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -226566,7 +271329,7 @@ func (obj *patternFlowTcpCtlUrgMetricTag) ToYaml() (string, error) { return string(data), nil } -func (obj *patternFlowTcpCtlUrgMetricTag) FromYaml(value string) error { +func (obj *patternFlowIgmpv1UnusedMetricTag) FromYaml(value string) error { if value == "" { value = "{}" } @@ -226591,7 +271354,7 @@ func (obj *patternFlowTcpCtlUrgMetricTag) FromYaml(value string) error { return nil } -func (obj *patternFlowTcpCtlUrgMetricTag) ToJson() (string, error) { +func (obj *patternFlowIgmpv1UnusedMetricTag) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -226609,7 +271372,7 @@ func (obj *patternFlowTcpCtlUrgMetricTag) ToJson() (string, error) { return string(data), nil } -func (obj *patternFlowTcpCtlUrgMetricTag) FromJson(value string) error { +func (obj *patternFlowIgmpv1UnusedMetricTag) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -226630,19 +271393,19 @@ func (obj *patternFlowTcpCtlUrgMetricTag) FromJson(value string) error { return nil } -func (obj *patternFlowTcpCtlUrgMetricTag) validateToAndFrom() error { +func (obj *patternFlowIgmpv1UnusedMetricTag) validateToAndFrom() error { // emptyVars() obj.validateObj(&obj.validation, true) return obj.validationResult() } -func (obj *patternFlowTcpCtlUrgMetricTag) Validate() error { +func (obj *patternFlowIgmpv1UnusedMetricTag) Validate() error { // emptyVars() obj.validateObj(&obj.validation, false) return obj.validationResult() } -func (obj *patternFlowTcpCtlUrgMetricTag) String() string { +func (obj *patternFlowIgmpv1UnusedMetricTag) String() string { str, err := obj.ToYaml() if err != nil { return err.Error() @@ -226650,12 +271413,12 @@ func (obj *patternFlowTcpCtlUrgMetricTag) String() string { return str } -func (obj *patternFlowTcpCtlUrgMetricTag) Clone() (PatternFlowTcpCtlUrgMetricTag, error) { +func (obj *patternFlowIgmpv1UnusedMetricTag) Clone() (PatternFlowIgmpv1UnusedMetricTag, error) { vErr := obj.Validate() if vErr != nil { return nil, vErr } - newObj := NewPatternFlowTcpCtlUrgMetricTag() + newObj := NewPatternFlowIgmpv1UnusedMetricTag() data, err := proto.Marshal(obj.Msg()) if err != nil { return nil, err @@ -226667,69 +271430,69 @@ func (obj *patternFlowTcpCtlUrgMetricTag) Clone() (PatternFlowTcpCtlUrgMetricTag return newObj, nil } -// PatternFlowTcpCtlUrgMetricTag is metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. -type PatternFlowTcpCtlUrgMetricTag interface { +// PatternFlowIgmpv1UnusedMetricTag is metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. +type PatternFlowIgmpv1UnusedMetricTag interface { Validation - // Msg marshals PatternFlowTcpCtlUrgMetricTag to protobuf object *otg.PatternFlowTcpCtlUrgMetricTag + // Msg marshals PatternFlowIgmpv1UnusedMetricTag to protobuf object *otg.PatternFlowIgmpv1UnusedMetricTag // and doesn't set defaults - Msg() *otg.PatternFlowTcpCtlUrgMetricTag - // SetMsg unmarshals PatternFlowTcpCtlUrgMetricTag from protobuf object *otg.PatternFlowTcpCtlUrgMetricTag + Msg() *otg.PatternFlowIgmpv1UnusedMetricTag + // SetMsg unmarshals PatternFlowIgmpv1UnusedMetricTag from protobuf object *otg.PatternFlowIgmpv1UnusedMetricTag // and doesn't set defaults - SetMsg(*otg.PatternFlowTcpCtlUrgMetricTag) PatternFlowTcpCtlUrgMetricTag - // ToProto marshals PatternFlowTcpCtlUrgMetricTag to protobuf object *otg.PatternFlowTcpCtlUrgMetricTag - ToProto() (*otg.PatternFlowTcpCtlUrgMetricTag, error) - // ToPbText marshals PatternFlowTcpCtlUrgMetricTag to protobuf text + SetMsg(*otg.PatternFlowIgmpv1UnusedMetricTag) PatternFlowIgmpv1UnusedMetricTag + // ToProto marshals PatternFlowIgmpv1UnusedMetricTag to protobuf object *otg.PatternFlowIgmpv1UnusedMetricTag + ToProto() (*otg.PatternFlowIgmpv1UnusedMetricTag, error) + // ToPbText marshals PatternFlowIgmpv1UnusedMetricTag to protobuf text ToPbText() (string, error) - // ToYaml marshals PatternFlowTcpCtlUrgMetricTag to YAML text + // ToYaml marshals PatternFlowIgmpv1UnusedMetricTag to YAML text ToYaml() (string, error) - // ToJson marshals PatternFlowTcpCtlUrgMetricTag to JSON text + // ToJson marshals PatternFlowIgmpv1UnusedMetricTag to JSON text ToJson() (string, error) - // FromProto unmarshals PatternFlowTcpCtlUrgMetricTag from protobuf object *otg.PatternFlowTcpCtlUrgMetricTag - FromProto(msg *otg.PatternFlowTcpCtlUrgMetricTag) (PatternFlowTcpCtlUrgMetricTag, error) - // FromPbText unmarshals PatternFlowTcpCtlUrgMetricTag from protobuf text + // FromProto unmarshals PatternFlowIgmpv1UnusedMetricTag from protobuf object *otg.PatternFlowIgmpv1UnusedMetricTag + FromProto(msg *otg.PatternFlowIgmpv1UnusedMetricTag) (PatternFlowIgmpv1UnusedMetricTag, error) + // FromPbText unmarshals PatternFlowIgmpv1UnusedMetricTag from protobuf text FromPbText(value string) error - // FromYaml unmarshals PatternFlowTcpCtlUrgMetricTag from YAML text + // FromYaml unmarshals PatternFlowIgmpv1UnusedMetricTag from YAML text FromYaml(value string) error - // FromJson unmarshals PatternFlowTcpCtlUrgMetricTag from JSON text + // FromJson unmarshals PatternFlowIgmpv1UnusedMetricTag from JSON text FromJson(value string) error - // Validate validates PatternFlowTcpCtlUrgMetricTag + // Validate validates PatternFlowIgmpv1UnusedMetricTag Validate() error // A stringer function String() string // Clones the object - Clone() (PatternFlowTcpCtlUrgMetricTag, error) + Clone() (PatternFlowIgmpv1UnusedMetricTag, error) validateToAndFrom() error validateObj(vObj *validation, set_default bool) setDefault() - // Name returns string, set in PatternFlowTcpCtlUrgMetricTag. + // Name returns string, set in PatternFlowIgmpv1UnusedMetricTag. Name() string - // SetName assigns string provided by user to PatternFlowTcpCtlUrgMetricTag - SetName(value string) PatternFlowTcpCtlUrgMetricTag - // Offset returns uint32, set in PatternFlowTcpCtlUrgMetricTag. + // SetName assigns string provided by user to PatternFlowIgmpv1UnusedMetricTag + SetName(value string) PatternFlowIgmpv1UnusedMetricTag + // Offset returns uint32, set in PatternFlowIgmpv1UnusedMetricTag. Offset() uint32 - // SetOffset assigns uint32 provided by user to PatternFlowTcpCtlUrgMetricTag - SetOffset(value uint32) PatternFlowTcpCtlUrgMetricTag - // HasOffset checks if Offset has been set in PatternFlowTcpCtlUrgMetricTag + // SetOffset assigns uint32 provided by user to PatternFlowIgmpv1UnusedMetricTag + SetOffset(value uint32) PatternFlowIgmpv1UnusedMetricTag + // HasOffset checks if Offset has been set in PatternFlowIgmpv1UnusedMetricTag HasOffset() bool - // Length returns uint32, set in PatternFlowTcpCtlUrgMetricTag. + // Length returns uint32, set in PatternFlowIgmpv1UnusedMetricTag. Length() uint32 - // SetLength assigns uint32 provided by user to PatternFlowTcpCtlUrgMetricTag - SetLength(value uint32) PatternFlowTcpCtlUrgMetricTag - // HasLength checks if Length has been set in PatternFlowTcpCtlUrgMetricTag + // SetLength assigns uint32 provided by user to PatternFlowIgmpv1UnusedMetricTag + SetLength(value uint32) PatternFlowIgmpv1UnusedMetricTag + // HasLength checks if Length has been set in PatternFlowIgmpv1UnusedMetricTag HasLength() bool } // Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field // Name returns a string -func (obj *patternFlowTcpCtlUrgMetricTag) Name() string { +func (obj *patternFlowIgmpv1UnusedMetricTag) Name() string { return *obj.obj.Name } // Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field -// SetName sets the string value in the PatternFlowTcpCtlUrgMetricTag object -func (obj *patternFlowTcpCtlUrgMetricTag) SetName(value string) PatternFlowTcpCtlUrgMetricTag { +// SetName sets the string value in the PatternFlowIgmpv1UnusedMetricTag object +func (obj *patternFlowIgmpv1UnusedMetricTag) SetName(value string) PatternFlowIgmpv1UnusedMetricTag { obj.obj.Name = &value return obj @@ -226737,7 +271500,7 @@ func (obj *patternFlowTcpCtlUrgMetricTag) SetName(value string) PatternFlowTcpCt // Offset in bits relative to start of corresponding header field // Offset returns a uint32 -func (obj *patternFlowTcpCtlUrgMetricTag) Offset() uint32 { +func (obj *patternFlowIgmpv1UnusedMetricTag) Offset() uint32 { return *obj.obj.Offset @@ -226745,13 +271508,13 @@ func (obj *patternFlowTcpCtlUrgMetricTag) Offset() uint32 { // Offset in bits relative to start of corresponding header field // Offset returns a uint32 -func (obj *patternFlowTcpCtlUrgMetricTag) HasOffset() bool { +func (obj *patternFlowIgmpv1UnusedMetricTag) HasOffset() bool { return obj.obj.Offset != nil } // Offset in bits relative to start of corresponding header field -// SetOffset sets the uint32 value in the PatternFlowTcpCtlUrgMetricTag object -func (obj *patternFlowTcpCtlUrgMetricTag) SetOffset(value uint32) PatternFlowTcpCtlUrgMetricTag { +// SetOffset sets the uint32 value in the PatternFlowIgmpv1UnusedMetricTag object +func (obj *patternFlowIgmpv1UnusedMetricTag) SetOffset(value uint32) PatternFlowIgmpv1UnusedMetricTag { obj.obj.Offset = &value return obj @@ -226759,7 +271522,7 @@ func (obj *patternFlowTcpCtlUrgMetricTag) SetOffset(value uint32) PatternFlowTcp // Number of bits to track for metrics starting from configured offset of corresponding header field // Length returns a uint32 -func (obj *patternFlowTcpCtlUrgMetricTag) Length() uint32 { +func (obj *patternFlowIgmpv1UnusedMetricTag) Length() uint32 { return *obj.obj.Length @@ -226767,83 +271530,83 @@ func (obj *patternFlowTcpCtlUrgMetricTag) Length() uint32 { // Number of bits to track for metrics starting from configured offset of corresponding header field // Length returns a uint32 -func (obj *patternFlowTcpCtlUrgMetricTag) HasLength() bool { +func (obj *patternFlowIgmpv1UnusedMetricTag) HasLength() bool { return obj.obj.Length != nil } // Number of bits to track for metrics starting from configured offset of corresponding header field -// SetLength sets the uint32 value in the PatternFlowTcpCtlUrgMetricTag object -func (obj *patternFlowTcpCtlUrgMetricTag) SetLength(value uint32) PatternFlowTcpCtlUrgMetricTag { +// SetLength sets the uint32 value in the PatternFlowIgmpv1UnusedMetricTag object +func (obj *patternFlowIgmpv1UnusedMetricTag) SetLength(value uint32) PatternFlowIgmpv1UnusedMetricTag { obj.obj.Length = &value return obj } -func (obj *patternFlowTcpCtlUrgMetricTag) validateObj(vObj *validation, set_default bool) { +func (obj *patternFlowIgmpv1UnusedMetricTag) validateObj(vObj *validation, set_default bool) { if set_default { obj.setDefault() } // Name is required if obj.obj.Name == nil { - vObj.validationErrors = append(vObj.validationErrors, "Name is required field on interface PatternFlowTcpCtlUrgMetricTag") + vObj.validationErrors = append(vObj.validationErrors, "Name is required field on interface PatternFlowIgmpv1UnusedMetricTag") } if obj.obj.Offset != nil { - if *obj.obj.Offset > 0 { + if *obj.obj.Offset > 7 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowTcpCtlUrgMetricTag.Offset <= 0 but Got %d", *obj.obj.Offset)) + fmt.Sprintf("0 <= PatternFlowIgmpv1UnusedMetricTag.Offset <= 7 but Got %d", *obj.obj.Offset)) } } if obj.obj.Length != nil { - if *obj.obj.Length < 1 || *obj.obj.Length > 1 { + if *obj.obj.Length < 1 || *obj.obj.Length > 8 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("1 <= PatternFlowTcpCtlUrgMetricTag.Length <= 1 but Got %d", *obj.obj.Length)) + fmt.Sprintf("1 <= PatternFlowIgmpv1UnusedMetricTag.Length <= 8 but Got %d", *obj.obj.Length)) } } } -func (obj *patternFlowTcpCtlUrgMetricTag) setDefault() { +func (obj *patternFlowIgmpv1UnusedMetricTag) setDefault() { if obj.obj.Offset == nil { obj.SetOffset(0) } if obj.obj.Length == nil { - obj.SetLength(1) + obj.SetLength(8) } } -// ***** PatternFlowTcpCtlAckCounter ***** -type patternFlowTcpCtlAckCounter struct { +// ***** PatternFlowIgmpv1GroupAddressCounter ***** +type patternFlowIgmpv1GroupAddressCounter struct { validation - obj *otg.PatternFlowTcpCtlAckCounter + obj *otg.PatternFlowIgmpv1GroupAddressCounter } -func NewPatternFlowTcpCtlAckCounter() PatternFlowTcpCtlAckCounter { - obj := patternFlowTcpCtlAckCounter{obj: &otg.PatternFlowTcpCtlAckCounter{}} +func NewPatternFlowIgmpv1GroupAddressCounter() PatternFlowIgmpv1GroupAddressCounter { + obj := patternFlowIgmpv1GroupAddressCounter{obj: &otg.PatternFlowIgmpv1GroupAddressCounter{}} obj.setDefault() return &obj } -func (obj *patternFlowTcpCtlAckCounter) Msg() *otg.PatternFlowTcpCtlAckCounter { +func (obj *patternFlowIgmpv1GroupAddressCounter) Msg() *otg.PatternFlowIgmpv1GroupAddressCounter { return obj.obj } -func (obj *patternFlowTcpCtlAckCounter) SetMsg(msg *otg.PatternFlowTcpCtlAckCounter) PatternFlowTcpCtlAckCounter { +func (obj *patternFlowIgmpv1GroupAddressCounter) SetMsg(msg *otg.PatternFlowIgmpv1GroupAddressCounter) PatternFlowIgmpv1GroupAddressCounter { proto.Merge(obj.obj, msg) return obj } -func (obj *patternFlowTcpCtlAckCounter) ToProto() (*otg.PatternFlowTcpCtlAckCounter, error) { +func (obj *patternFlowIgmpv1GroupAddressCounter) ToProto() (*otg.PatternFlowIgmpv1GroupAddressCounter, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -226851,7 +271614,7 @@ func (obj *patternFlowTcpCtlAckCounter) ToProto() (*otg.PatternFlowTcpCtlAckCoun return obj.Msg(), nil } -func (obj *patternFlowTcpCtlAckCounter) FromProto(msg *otg.PatternFlowTcpCtlAckCounter) (PatternFlowTcpCtlAckCounter, error) { +func (obj *patternFlowIgmpv1GroupAddressCounter) FromProto(msg *otg.PatternFlowIgmpv1GroupAddressCounter) (PatternFlowIgmpv1GroupAddressCounter, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -226860,7 +271623,7 @@ func (obj *patternFlowTcpCtlAckCounter) FromProto(msg *otg.PatternFlowTcpCtlAckC return newObj, nil } -func (obj *patternFlowTcpCtlAckCounter) ToPbText() (string, error) { +func (obj *patternFlowIgmpv1GroupAddressCounter) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -226872,7 +271635,7 @@ func (obj *patternFlowTcpCtlAckCounter) ToPbText() (string, error) { return string(protoMarshal), nil } -func (obj *patternFlowTcpCtlAckCounter) FromPbText(value string) error { +func (obj *patternFlowIgmpv1GroupAddressCounter) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj @@ -226885,7 +271648,7 @@ func (obj *patternFlowTcpCtlAckCounter) FromPbText(value string) error { return retObj } -func (obj *patternFlowTcpCtlAckCounter) ToYaml() (string, error) { +func (obj *patternFlowIgmpv1GroupAddressCounter) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -226906,7 +271669,7 @@ func (obj *patternFlowTcpCtlAckCounter) ToYaml() (string, error) { return string(data), nil } -func (obj *patternFlowTcpCtlAckCounter) FromYaml(value string) error { +func (obj *patternFlowIgmpv1GroupAddressCounter) FromYaml(value string) error { if value == "" { value = "{}" } @@ -226931,7 +271694,7 @@ func (obj *patternFlowTcpCtlAckCounter) FromYaml(value string) error { return nil } -func (obj *patternFlowTcpCtlAckCounter) ToJson() (string, error) { +func (obj *patternFlowIgmpv1GroupAddressCounter) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -226949,7 +271712,7 @@ func (obj *patternFlowTcpCtlAckCounter) ToJson() (string, error) { return string(data), nil } -func (obj *patternFlowTcpCtlAckCounter) FromJson(value string) error { +func (obj *patternFlowIgmpv1GroupAddressCounter) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -226970,19 +271733,19 @@ func (obj *patternFlowTcpCtlAckCounter) FromJson(value string) error { return nil } -func (obj *patternFlowTcpCtlAckCounter) validateToAndFrom() error { +func (obj *patternFlowIgmpv1GroupAddressCounter) validateToAndFrom() error { // emptyVars() obj.validateObj(&obj.validation, true) return obj.validationResult() } -func (obj *patternFlowTcpCtlAckCounter) Validate() error { +func (obj *patternFlowIgmpv1GroupAddressCounter) Validate() error { // emptyVars() obj.validateObj(&obj.validation, false) return obj.validationResult() } -func (obj *patternFlowTcpCtlAckCounter) String() string { +func (obj *patternFlowIgmpv1GroupAddressCounter) String() string { str, err := obj.ToYaml() if err != nil { return err.Error() @@ -226990,12 +271753,12 @@ func (obj *patternFlowTcpCtlAckCounter) String() string { return str } -func (obj *patternFlowTcpCtlAckCounter) Clone() (PatternFlowTcpCtlAckCounter, error) { +func (obj *patternFlowIgmpv1GroupAddressCounter) Clone() (PatternFlowIgmpv1GroupAddressCounter, error) { vErr := obj.Validate() if vErr != nil { return nil, vErr } - newObj := NewPatternFlowTcpCtlAckCounter() + newObj := NewPatternFlowIgmpv1GroupAddressCounter() data, err := proto.Marshal(obj.Msg()) if err != nil { return nil, err @@ -227007,99 +271770,99 @@ func (obj *patternFlowTcpCtlAckCounter) Clone() (PatternFlowTcpCtlAckCounter, er return newObj, nil } -// PatternFlowTcpCtlAckCounter is integer counter pattern -type PatternFlowTcpCtlAckCounter interface { +// PatternFlowIgmpv1GroupAddressCounter is ipv4 counter pattern +type PatternFlowIgmpv1GroupAddressCounter interface { Validation - // Msg marshals PatternFlowTcpCtlAckCounter to protobuf object *otg.PatternFlowTcpCtlAckCounter + // Msg marshals PatternFlowIgmpv1GroupAddressCounter to protobuf object *otg.PatternFlowIgmpv1GroupAddressCounter // and doesn't set defaults - Msg() *otg.PatternFlowTcpCtlAckCounter - // SetMsg unmarshals PatternFlowTcpCtlAckCounter from protobuf object *otg.PatternFlowTcpCtlAckCounter + Msg() *otg.PatternFlowIgmpv1GroupAddressCounter + // SetMsg unmarshals PatternFlowIgmpv1GroupAddressCounter from protobuf object *otg.PatternFlowIgmpv1GroupAddressCounter // and doesn't set defaults - SetMsg(*otg.PatternFlowTcpCtlAckCounter) PatternFlowTcpCtlAckCounter - // ToProto marshals PatternFlowTcpCtlAckCounter to protobuf object *otg.PatternFlowTcpCtlAckCounter - ToProto() (*otg.PatternFlowTcpCtlAckCounter, error) - // ToPbText marshals PatternFlowTcpCtlAckCounter to protobuf text + SetMsg(*otg.PatternFlowIgmpv1GroupAddressCounter) PatternFlowIgmpv1GroupAddressCounter + // ToProto marshals PatternFlowIgmpv1GroupAddressCounter to protobuf object *otg.PatternFlowIgmpv1GroupAddressCounter + ToProto() (*otg.PatternFlowIgmpv1GroupAddressCounter, error) + // ToPbText marshals PatternFlowIgmpv1GroupAddressCounter to protobuf text ToPbText() (string, error) - // ToYaml marshals PatternFlowTcpCtlAckCounter to YAML text + // ToYaml marshals PatternFlowIgmpv1GroupAddressCounter to YAML text ToYaml() (string, error) - // ToJson marshals PatternFlowTcpCtlAckCounter to JSON text + // ToJson marshals PatternFlowIgmpv1GroupAddressCounter to JSON text ToJson() (string, error) - // FromProto unmarshals PatternFlowTcpCtlAckCounter from protobuf object *otg.PatternFlowTcpCtlAckCounter - FromProto(msg *otg.PatternFlowTcpCtlAckCounter) (PatternFlowTcpCtlAckCounter, error) - // FromPbText unmarshals PatternFlowTcpCtlAckCounter from protobuf text + // FromProto unmarshals PatternFlowIgmpv1GroupAddressCounter from protobuf object *otg.PatternFlowIgmpv1GroupAddressCounter + FromProto(msg *otg.PatternFlowIgmpv1GroupAddressCounter) (PatternFlowIgmpv1GroupAddressCounter, error) + // FromPbText unmarshals PatternFlowIgmpv1GroupAddressCounter from protobuf text FromPbText(value string) error - // FromYaml unmarshals PatternFlowTcpCtlAckCounter from YAML text + // FromYaml unmarshals PatternFlowIgmpv1GroupAddressCounter from YAML text FromYaml(value string) error - // FromJson unmarshals PatternFlowTcpCtlAckCounter from JSON text + // FromJson unmarshals PatternFlowIgmpv1GroupAddressCounter from JSON text FromJson(value string) error - // Validate validates PatternFlowTcpCtlAckCounter + // Validate validates PatternFlowIgmpv1GroupAddressCounter Validate() error // A stringer function String() string // Clones the object - Clone() (PatternFlowTcpCtlAckCounter, error) + Clone() (PatternFlowIgmpv1GroupAddressCounter, error) validateToAndFrom() error validateObj(vObj *validation, set_default bool) setDefault() - // Start returns uint32, set in PatternFlowTcpCtlAckCounter. - Start() uint32 - // SetStart assigns uint32 provided by user to PatternFlowTcpCtlAckCounter - SetStart(value uint32) PatternFlowTcpCtlAckCounter - // HasStart checks if Start has been set in PatternFlowTcpCtlAckCounter + // Start returns string, set in PatternFlowIgmpv1GroupAddressCounter. + Start() string + // SetStart assigns string provided by user to PatternFlowIgmpv1GroupAddressCounter + SetStart(value string) PatternFlowIgmpv1GroupAddressCounter + // HasStart checks if Start has been set in PatternFlowIgmpv1GroupAddressCounter HasStart() bool - // Step returns uint32, set in PatternFlowTcpCtlAckCounter. - Step() uint32 - // SetStep assigns uint32 provided by user to PatternFlowTcpCtlAckCounter - SetStep(value uint32) PatternFlowTcpCtlAckCounter - // HasStep checks if Step has been set in PatternFlowTcpCtlAckCounter + // Step returns string, set in PatternFlowIgmpv1GroupAddressCounter. + Step() string + // SetStep assigns string provided by user to PatternFlowIgmpv1GroupAddressCounter + SetStep(value string) PatternFlowIgmpv1GroupAddressCounter + // HasStep checks if Step has been set in PatternFlowIgmpv1GroupAddressCounter HasStep() bool - // Count returns uint32, set in PatternFlowTcpCtlAckCounter. + // Count returns uint32, set in PatternFlowIgmpv1GroupAddressCounter. Count() uint32 - // SetCount assigns uint32 provided by user to PatternFlowTcpCtlAckCounter - SetCount(value uint32) PatternFlowTcpCtlAckCounter - // HasCount checks if Count has been set in PatternFlowTcpCtlAckCounter + // SetCount assigns uint32 provided by user to PatternFlowIgmpv1GroupAddressCounter + SetCount(value uint32) PatternFlowIgmpv1GroupAddressCounter + // HasCount checks if Count has been set in PatternFlowIgmpv1GroupAddressCounter HasCount() bool } // description is TBD -// Start returns a uint32 -func (obj *patternFlowTcpCtlAckCounter) Start() uint32 { +// Start returns a string +func (obj *patternFlowIgmpv1GroupAddressCounter) Start() string { return *obj.obj.Start } // description is TBD -// Start returns a uint32 -func (obj *patternFlowTcpCtlAckCounter) HasStart() bool { +// Start returns a string +func (obj *patternFlowIgmpv1GroupAddressCounter) HasStart() bool { return obj.obj.Start != nil } // description is TBD -// SetStart sets the uint32 value in the PatternFlowTcpCtlAckCounter object -func (obj *patternFlowTcpCtlAckCounter) SetStart(value uint32) PatternFlowTcpCtlAckCounter { +// SetStart sets the string value in the PatternFlowIgmpv1GroupAddressCounter object +func (obj *patternFlowIgmpv1GroupAddressCounter) SetStart(value string) PatternFlowIgmpv1GroupAddressCounter { obj.obj.Start = &value return obj } // description is TBD -// Step returns a uint32 -func (obj *patternFlowTcpCtlAckCounter) Step() uint32 { +// Step returns a string +func (obj *patternFlowIgmpv1GroupAddressCounter) Step() string { return *obj.obj.Step } // description is TBD -// Step returns a uint32 -func (obj *patternFlowTcpCtlAckCounter) HasStep() bool { +// Step returns a string +func (obj *patternFlowIgmpv1GroupAddressCounter) HasStep() bool { return obj.obj.Step != nil } // description is TBD -// SetStep sets the uint32 value in the PatternFlowTcpCtlAckCounter object -func (obj *patternFlowTcpCtlAckCounter) SetStep(value uint32) PatternFlowTcpCtlAckCounter { +// SetStep sets the string value in the PatternFlowIgmpv1GroupAddressCounter object +func (obj *patternFlowIgmpv1GroupAddressCounter) SetStep(value string) PatternFlowIgmpv1GroupAddressCounter { obj.obj.Step = &value return obj @@ -227107,7 +271870,7 @@ func (obj *patternFlowTcpCtlAckCounter) SetStep(value uint32) PatternFlowTcpCtlA // description is TBD // Count returns a uint32 -func (obj *patternFlowTcpCtlAckCounter) Count() uint32 { +func (obj *patternFlowIgmpv1GroupAddressCounter) Count() uint32 { return *obj.obj.Count @@ -227115,61 +271878,49 @@ func (obj *patternFlowTcpCtlAckCounter) Count() uint32 { // description is TBD // Count returns a uint32 -func (obj *patternFlowTcpCtlAckCounter) HasCount() bool { +func (obj *patternFlowIgmpv1GroupAddressCounter) HasCount() bool { return obj.obj.Count != nil } // description is TBD -// SetCount sets the uint32 value in the PatternFlowTcpCtlAckCounter object -func (obj *patternFlowTcpCtlAckCounter) SetCount(value uint32) PatternFlowTcpCtlAckCounter { +// SetCount sets the uint32 value in the PatternFlowIgmpv1GroupAddressCounter object +func (obj *patternFlowIgmpv1GroupAddressCounter) SetCount(value uint32) PatternFlowIgmpv1GroupAddressCounter { obj.obj.Count = &value return obj } -func (obj *patternFlowTcpCtlAckCounter) validateObj(vObj *validation, set_default bool) { +func (obj *patternFlowIgmpv1GroupAddressCounter) validateObj(vObj *validation, set_default bool) { if set_default { obj.setDefault() } if obj.obj.Start != nil { - if *obj.obj.Start > 1 { - vObj.validationErrors = append( - vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowTcpCtlAckCounter.Start <= 1 but Got %d", *obj.obj.Start)) + err := obj.validateIpv4(obj.Start()) + if err != nil { + vObj.validationErrors = append(vObj.validationErrors, fmt.Sprintf("%s %s", err.Error(), "on PatternFlowIgmpv1GroupAddressCounter.Start")) } } if obj.obj.Step != nil { - if *obj.obj.Step > 1 { - vObj.validationErrors = append( - vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowTcpCtlAckCounter.Step <= 1 but Got %d", *obj.obj.Step)) - } - - } - - if obj.obj.Count != nil { - - if *obj.obj.Count > 1 { - vObj.validationErrors = append( - vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowTcpCtlAckCounter.Count <= 1 but Got %d", *obj.obj.Count)) + err := obj.validateIpv4(obj.Step()) + if err != nil { + vObj.validationErrors = append(vObj.validationErrors, fmt.Sprintf("%s %s", err.Error(), "on PatternFlowIgmpv1GroupAddressCounter.Step")) } } } -func (obj *patternFlowTcpCtlAckCounter) setDefault() { +func (obj *patternFlowIgmpv1GroupAddressCounter) setDefault() { if obj.obj.Start == nil { - obj.SetStart(0) + obj.SetStart("0.0.0.0") } if obj.obj.Step == nil { - obj.SetStep(1) + obj.SetStep("0.0.0.1") } if obj.obj.Count == nil { obj.SetCount(1) @@ -227177,29 +271928,29 @@ func (obj *patternFlowTcpCtlAckCounter) setDefault() { } -// ***** PatternFlowTcpCtlAckMetricTag ***** -type patternFlowTcpCtlAckMetricTag struct { +// ***** PatternFlowIgmpv1GroupAddressMetricTag ***** +type patternFlowIgmpv1GroupAddressMetricTag struct { validation - obj *otg.PatternFlowTcpCtlAckMetricTag + obj *otg.PatternFlowIgmpv1GroupAddressMetricTag } -func NewPatternFlowTcpCtlAckMetricTag() PatternFlowTcpCtlAckMetricTag { - obj := patternFlowTcpCtlAckMetricTag{obj: &otg.PatternFlowTcpCtlAckMetricTag{}} +func NewPatternFlowIgmpv1GroupAddressMetricTag() PatternFlowIgmpv1GroupAddressMetricTag { + obj := patternFlowIgmpv1GroupAddressMetricTag{obj: &otg.PatternFlowIgmpv1GroupAddressMetricTag{}} obj.setDefault() return &obj } -func (obj *patternFlowTcpCtlAckMetricTag) Msg() *otg.PatternFlowTcpCtlAckMetricTag { +func (obj *patternFlowIgmpv1GroupAddressMetricTag) Msg() *otg.PatternFlowIgmpv1GroupAddressMetricTag { return obj.obj } -func (obj *patternFlowTcpCtlAckMetricTag) SetMsg(msg *otg.PatternFlowTcpCtlAckMetricTag) PatternFlowTcpCtlAckMetricTag { +func (obj *patternFlowIgmpv1GroupAddressMetricTag) SetMsg(msg *otg.PatternFlowIgmpv1GroupAddressMetricTag) PatternFlowIgmpv1GroupAddressMetricTag { proto.Merge(obj.obj, msg) return obj } -func (obj *patternFlowTcpCtlAckMetricTag) ToProto() (*otg.PatternFlowTcpCtlAckMetricTag, error) { +func (obj *patternFlowIgmpv1GroupAddressMetricTag) ToProto() (*otg.PatternFlowIgmpv1GroupAddressMetricTag, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -227207,7 +271958,7 @@ func (obj *patternFlowTcpCtlAckMetricTag) ToProto() (*otg.PatternFlowTcpCtlAckMe return obj.Msg(), nil } -func (obj *patternFlowTcpCtlAckMetricTag) FromProto(msg *otg.PatternFlowTcpCtlAckMetricTag) (PatternFlowTcpCtlAckMetricTag, error) { +func (obj *patternFlowIgmpv1GroupAddressMetricTag) FromProto(msg *otg.PatternFlowIgmpv1GroupAddressMetricTag) (PatternFlowIgmpv1GroupAddressMetricTag, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -227216,7 +271967,7 @@ func (obj *patternFlowTcpCtlAckMetricTag) FromProto(msg *otg.PatternFlowTcpCtlAc return newObj, nil } -func (obj *patternFlowTcpCtlAckMetricTag) ToPbText() (string, error) { +func (obj *patternFlowIgmpv1GroupAddressMetricTag) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -227228,7 +271979,7 @@ func (obj *patternFlowTcpCtlAckMetricTag) ToPbText() (string, error) { return string(protoMarshal), nil } -func (obj *patternFlowTcpCtlAckMetricTag) FromPbText(value string) error { +func (obj *patternFlowIgmpv1GroupAddressMetricTag) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj @@ -227241,7 +271992,7 @@ func (obj *patternFlowTcpCtlAckMetricTag) FromPbText(value string) error { return retObj } -func (obj *patternFlowTcpCtlAckMetricTag) ToYaml() (string, error) { +func (obj *patternFlowIgmpv1GroupAddressMetricTag) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -227262,7 +272013,7 @@ func (obj *patternFlowTcpCtlAckMetricTag) ToYaml() (string, error) { return string(data), nil } -func (obj *patternFlowTcpCtlAckMetricTag) FromYaml(value string) error { +func (obj *patternFlowIgmpv1GroupAddressMetricTag) FromYaml(value string) error { if value == "" { value = "{}" } @@ -227287,7 +272038,7 @@ func (obj *patternFlowTcpCtlAckMetricTag) FromYaml(value string) error { return nil } -func (obj *patternFlowTcpCtlAckMetricTag) ToJson() (string, error) { +func (obj *patternFlowIgmpv1GroupAddressMetricTag) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -227305,7 +272056,7 @@ func (obj *patternFlowTcpCtlAckMetricTag) ToJson() (string, error) { return string(data), nil } -func (obj *patternFlowTcpCtlAckMetricTag) FromJson(value string) error { +func (obj *patternFlowIgmpv1GroupAddressMetricTag) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -227326,19 +272077,19 @@ func (obj *patternFlowTcpCtlAckMetricTag) FromJson(value string) error { return nil } -func (obj *patternFlowTcpCtlAckMetricTag) validateToAndFrom() error { +func (obj *patternFlowIgmpv1GroupAddressMetricTag) validateToAndFrom() error { // emptyVars() obj.validateObj(&obj.validation, true) return obj.validationResult() } -func (obj *patternFlowTcpCtlAckMetricTag) Validate() error { +func (obj *patternFlowIgmpv1GroupAddressMetricTag) Validate() error { // emptyVars() obj.validateObj(&obj.validation, false) return obj.validationResult() } -func (obj *patternFlowTcpCtlAckMetricTag) String() string { +func (obj *patternFlowIgmpv1GroupAddressMetricTag) String() string { str, err := obj.ToYaml() if err != nil { return err.Error() @@ -227346,12 +272097,12 @@ func (obj *patternFlowTcpCtlAckMetricTag) String() string { return str } -func (obj *patternFlowTcpCtlAckMetricTag) Clone() (PatternFlowTcpCtlAckMetricTag, error) { +func (obj *patternFlowIgmpv1GroupAddressMetricTag) Clone() (PatternFlowIgmpv1GroupAddressMetricTag, error) { vErr := obj.Validate() if vErr != nil { return nil, vErr } - newObj := NewPatternFlowTcpCtlAckMetricTag() + newObj := NewPatternFlowIgmpv1GroupAddressMetricTag() data, err := proto.Marshal(obj.Msg()) if err != nil { return nil, err @@ -227363,69 +272114,69 @@ func (obj *patternFlowTcpCtlAckMetricTag) Clone() (PatternFlowTcpCtlAckMetricTag return newObj, nil } -// PatternFlowTcpCtlAckMetricTag is metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. -type PatternFlowTcpCtlAckMetricTag interface { +// PatternFlowIgmpv1GroupAddressMetricTag is metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. +type PatternFlowIgmpv1GroupAddressMetricTag interface { Validation - // Msg marshals PatternFlowTcpCtlAckMetricTag to protobuf object *otg.PatternFlowTcpCtlAckMetricTag + // Msg marshals PatternFlowIgmpv1GroupAddressMetricTag to protobuf object *otg.PatternFlowIgmpv1GroupAddressMetricTag // and doesn't set defaults - Msg() *otg.PatternFlowTcpCtlAckMetricTag - // SetMsg unmarshals PatternFlowTcpCtlAckMetricTag from protobuf object *otg.PatternFlowTcpCtlAckMetricTag + Msg() *otg.PatternFlowIgmpv1GroupAddressMetricTag + // SetMsg unmarshals PatternFlowIgmpv1GroupAddressMetricTag from protobuf object *otg.PatternFlowIgmpv1GroupAddressMetricTag // and doesn't set defaults - SetMsg(*otg.PatternFlowTcpCtlAckMetricTag) PatternFlowTcpCtlAckMetricTag - // ToProto marshals PatternFlowTcpCtlAckMetricTag to protobuf object *otg.PatternFlowTcpCtlAckMetricTag - ToProto() (*otg.PatternFlowTcpCtlAckMetricTag, error) - // ToPbText marshals PatternFlowTcpCtlAckMetricTag to protobuf text + SetMsg(*otg.PatternFlowIgmpv1GroupAddressMetricTag) PatternFlowIgmpv1GroupAddressMetricTag + // ToProto marshals PatternFlowIgmpv1GroupAddressMetricTag to protobuf object *otg.PatternFlowIgmpv1GroupAddressMetricTag + ToProto() (*otg.PatternFlowIgmpv1GroupAddressMetricTag, error) + // ToPbText marshals PatternFlowIgmpv1GroupAddressMetricTag to protobuf text ToPbText() (string, error) - // ToYaml marshals PatternFlowTcpCtlAckMetricTag to YAML text + // ToYaml marshals PatternFlowIgmpv1GroupAddressMetricTag to YAML text ToYaml() (string, error) - // ToJson marshals PatternFlowTcpCtlAckMetricTag to JSON text + // ToJson marshals PatternFlowIgmpv1GroupAddressMetricTag to JSON text ToJson() (string, error) - // FromProto unmarshals PatternFlowTcpCtlAckMetricTag from protobuf object *otg.PatternFlowTcpCtlAckMetricTag - FromProto(msg *otg.PatternFlowTcpCtlAckMetricTag) (PatternFlowTcpCtlAckMetricTag, error) - // FromPbText unmarshals PatternFlowTcpCtlAckMetricTag from protobuf text + // FromProto unmarshals PatternFlowIgmpv1GroupAddressMetricTag from protobuf object *otg.PatternFlowIgmpv1GroupAddressMetricTag + FromProto(msg *otg.PatternFlowIgmpv1GroupAddressMetricTag) (PatternFlowIgmpv1GroupAddressMetricTag, error) + // FromPbText unmarshals PatternFlowIgmpv1GroupAddressMetricTag from protobuf text FromPbText(value string) error - // FromYaml unmarshals PatternFlowTcpCtlAckMetricTag from YAML text + // FromYaml unmarshals PatternFlowIgmpv1GroupAddressMetricTag from YAML text FromYaml(value string) error - // FromJson unmarshals PatternFlowTcpCtlAckMetricTag from JSON text + // FromJson unmarshals PatternFlowIgmpv1GroupAddressMetricTag from JSON text FromJson(value string) error - // Validate validates PatternFlowTcpCtlAckMetricTag + // Validate validates PatternFlowIgmpv1GroupAddressMetricTag Validate() error // A stringer function String() string // Clones the object - Clone() (PatternFlowTcpCtlAckMetricTag, error) + Clone() (PatternFlowIgmpv1GroupAddressMetricTag, error) validateToAndFrom() error validateObj(vObj *validation, set_default bool) setDefault() - // Name returns string, set in PatternFlowTcpCtlAckMetricTag. + // Name returns string, set in PatternFlowIgmpv1GroupAddressMetricTag. Name() string - // SetName assigns string provided by user to PatternFlowTcpCtlAckMetricTag - SetName(value string) PatternFlowTcpCtlAckMetricTag - // Offset returns uint32, set in PatternFlowTcpCtlAckMetricTag. + // SetName assigns string provided by user to PatternFlowIgmpv1GroupAddressMetricTag + SetName(value string) PatternFlowIgmpv1GroupAddressMetricTag + // Offset returns uint32, set in PatternFlowIgmpv1GroupAddressMetricTag. Offset() uint32 - // SetOffset assigns uint32 provided by user to PatternFlowTcpCtlAckMetricTag - SetOffset(value uint32) PatternFlowTcpCtlAckMetricTag - // HasOffset checks if Offset has been set in PatternFlowTcpCtlAckMetricTag + // SetOffset assigns uint32 provided by user to PatternFlowIgmpv1GroupAddressMetricTag + SetOffset(value uint32) PatternFlowIgmpv1GroupAddressMetricTag + // HasOffset checks if Offset has been set in PatternFlowIgmpv1GroupAddressMetricTag HasOffset() bool - // Length returns uint32, set in PatternFlowTcpCtlAckMetricTag. + // Length returns uint32, set in PatternFlowIgmpv1GroupAddressMetricTag. Length() uint32 - // SetLength assigns uint32 provided by user to PatternFlowTcpCtlAckMetricTag - SetLength(value uint32) PatternFlowTcpCtlAckMetricTag - // HasLength checks if Length has been set in PatternFlowTcpCtlAckMetricTag + // SetLength assigns uint32 provided by user to PatternFlowIgmpv1GroupAddressMetricTag + SetLength(value uint32) PatternFlowIgmpv1GroupAddressMetricTag + // HasLength checks if Length has been set in PatternFlowIgmpv1GroupAddressMetricTag HasLength() bool } // Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field // Name returns a string -func (obj *patternFlowTcpCtlAckMetricTag) Name() string { +func (obj *patternFlowIgmpv1GroupAddressMetricTag) Name() string { return *obj.obj.Name } // Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field -// SetName sets the string value in the PatternFlowTcpCtlAckMetricTag object -func (obj *patternFlowTcpCtlAckMetricTag) SetName(value string) PatternFlowTcpCtlAckMetricTag { +// SetName sets the string value in the PatternFlowIgmpv1GroupAddressMetricTag object +func (obj *patternFlowIgmpv1GroupAddressMetricTag) SetName(value string) PatternFlowIgmpv1GroupAddressMetricTag { obj.obj.Name = &value return obj @@ -227433,7 +272184,7 @@ func (obj *patternFlowTcpCtlAckMetricTag) SetName(value string) PatternFlowTcpCt // Offset in bits relative to start of corresponding header field // Offset returns a uint32 -func (obj *patternFlowTcpCtlAckMetricTag) Offset() uint32 { +func (obj *patternFlowIgmpv1GroupAddressMetricTag) Offset() uint32 { return *obj.obj.Offset @@ -227441,13 +272192,13 @@ func (obj *patternFlowTcpCtlAckMetricTag) Offset() uint32 { // Offset in bits relative to start of corresponding header field // Offset returns a uint32 -func (obj *patternFlowTcpCtlAckMetricTag) HasOffset() bool { +func (obj *patternFlowIgmpv1GroupAddressMetricTag) HasOffset() bool { return obj.obj.Offset != nil } // Offset in bits relative to start of corresponding header field -// SetOffset sets the uint32 value in the PatternFlowTcpCtlAckMetricTag object -func (obj *patternFlowTcpCtlAckMetricTag) SetOffset(value uint32) PatternFlowTcpCtlAckMetricTag { +// SetOffset sets the uint32 value in the PatternFlowIgmpv1GroupAddressMetricTag object +func (obj *patternFlowIgmpv1GroupAddressMetricTag) SetOffset(value uint32) PatternFlowIgmpv1GroupAddressMetricTag { obj.obj.Offset = &value return obj @@ -227455,7 +272206,7 @@ func (obj *patternFlowTcpCtlAckMetricTag) SetOffset(value uint32) PatternFlowTcp // Number of bits to track for metrics starting from configured offset of corresponding header field // Length returns a uint32 -func (obj *patternFlowTcpCtlAckMetricTag) Length() uint32 { +func (obj *patternFlowIgmpv1GroupAddressMetricTag) Length() uint32 { return *obj.obj.Length @@ -227463,83 +272214,83 @@ func (obj *patternFlowTcpCtlAckMetricTag) Length() uint32 { // Number of bits to track for metrics starting from configured offset of corresponding header field // Length returns a uint32 -func (obj *patternFlowTcpCtlAckMetricTag) HasLength() bool { +func (obj *patternFlowIgmpv1GroupAddressMetricTag) HasLength() bool { return obj.obj.Length != nil } // Number of bits to track for metrics starting from configured offset of corresponding header field -// SetLength sets the uint32 value in the PatternFlowTcpCtlAckMetricTag object -func (obj *patternFlowTcpCtlAckMetricTag) SetLength(value uint32) PatternFlowTcpCtlAckMetricTag { +// SetLength sets the uint32 value in the PatternFlowIgmpv1GroupAddressMetricTag object +func (obj *patternFlowIgmpv1GroupAddressMetricTag) SetLength(value uint32) PatternFlowIgmpv1GroupAddressMetricTag { obj.obj.Length = &value return obj } -func (obj *patternFlowTcpCtlAckMetricTag) validateObj(vObj *validation, set_default bool) { +func (obj *patternFlowIgmpv1GroupAddressMetricTag) validateObj(vObj *validation, set_default bool) { if set_default { obj.setDefault() } // Name is required if obj.obj.Name == nil { - vObj.validationErrors = append(vObj.validationErrors, "Name is required field on interface PatternFlowTcpCtlAckMetricTag") + vObj.validationErrors = append(vObj.validationErrors, "Name is required field on interface PatternFlowIgmpv1GroupAddressMetricTag") } if obj.obj.Offset != nil { - if *obj.obj.Offset > 0 { + if *obj.obj.Offset > 31 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowTcpCtlAckMetricTag.Offset <= 0 but Got %d", *obj.obj.Offset)) + fmt.Sprintf("0 <= PatternFlowIgmpv1GroupAddressMetricTag.Offset <= 31 but Got %d", *obj.obj.Offset)) } } if obj.obj.Length != nil { - if *obj.obj.Length < 1 || *obj.obj.Length > 1 { + if *obj.obj.Length < 1 || *obj.obj.Length > 32 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("1 <= PatternFlowTcpCtlAckMetricTag.Length <= 1 but Got %d", *obj.obj.Length)) + fmt.Sprintf("1 <= PatternFlowIgmpv1GroupAddressMetricTag.Length <= 32 but Got %d", *obj.obj.Length)) } } } -func (obj *patternFlowTcpCtlAckMetricTag) setDefault() { +func (obj *patternFlowIgmpv1GroupAddressMetricTag) setDefault() { if obj.obj.Offset == nil { obj.SetOffset(0) } if obj.obj.Length == nil { - obj.SetLength(1) + obj.SetLength(32) } } -// ***** PatternFlowTcpCtlPshCounter ***** -type patternFlowTcpCtlPshCounter struct { +// ***** PatternFlowMplsLabelCounter ***** +type patternFlowMplsLabelCounter struct { validation - obj *otg.PatternFlowTcpCtlPshCounter + obj *otg.PatternFlowMplsLabelCounter } -func NewPatternFlowTcpCtlPshCounter() PatternFlowTcpCtlPshCounter { - obj := patternFlowTcpCtlPshCounter{obj: &otg.PatternFlowTcpCtlPshCounter{}} +func NewPatternFlowMplsLabelCounter() PatternFlowMplsLabelCounter { + obj := patternFlowMplsLabelCounter{obj: &otg.PatternFlowMplsLabelCounter{}} obj.setDefault() return &obj } -func (obj *patternFlowTcpCtlPshCounter) Msg() *otg.PatternFlowTcpCtlPshCounter { +func (obj *patternFlowMplsLabelCounter) Msg() *otg.PatternFlowMplsLabelCounter { return obj.obj } -func (obj *patternFlowTcpCtlPshCounter) SetMsg(msg *otg.PatternFlowTcpCtlPshCounter) PatternFlowTcpCtlPshCounter { +func (obj *patternFlowMplsLabelCounter) SetMsg(msg *otg.PatternFlowMplsLabelCounter) PatternFlowMplsLabelCounter { proto.Merge(obj.obj, msg) return obj } -func (obj *patternFlowTcpCtlPshCounter) ToProto() (*otg.PatternFlowTcpCtlPshCounter, error) { +func (obj *patternFlowMplsLabelCounter) ToProto() (*otg.PatternFlowMplsLabelCounter, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -227547,7 +272298,7 @@ func (obj *patternFlowTcpCtlPshCounter) ToProto() (*otg.PatternFlowTcpCtlPshCoun return obj.Msg(), nil } -func (obj *patternFlowTcpCtlPshCounter) FromProto(msg *otg.PatternFlowTcpCtlPshCounter) (PatternFlowTcpCtlPshCounter, error) { +func (obj *patternFlowMplsLabelCounter) FromProto(msg *otg.PatternFlowMplsLabelCounter) (PatternFlowMplsLabelCounter, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -227556,7 +272307,7 @@ func (obj *patternFlowTcpCtlPshCounter) FromProto(msg *otg.PatternFlowTcpCtlPshC return newObj, nil } -func (obj *patternFlowTcpCtlPshCounter) ToPbText() (string, error) { +func (obj *patternFlowMplsLabelCounter) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -227568,7 +272319,7 @@ func (obj *patternFlowTcpCtlPshCounter) ToPbText() (string, error) { return string(protoMarshal), nil } -func (obj *patternFlowTcpCtlPshCounter) FromPbText(value string) error { +func (obj *patternFlowMplsLabelCounter) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj @@ -227581,7 +272332,7 @@ func (obj *patternFlowTcpCtlPshCounter) FromPbText(value string) error { return retObj } -func (obj *patternFlowTcpCtlPshCounter) ToYaml() (string, error) { +func (obj *patternFlowMplsLabelCounter) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -227602,7 +272353,7 @@ func (obj *patternFlowTcpCtlPshCounter) ToYaml() (string, error) { return string(data), nil } -func (obj *patternFlowTcpCtlPshCounter) FromYaml(value string) error { +func (obj *patternFlowMplsLabelCounter) FromYaml(value string) error { if value == "" { value = "{}" } @@ -227627,7 +272378,7 @@ func (obj *patternFlowTcpCtlPshCounter) FromYaml(value string) error { return nil } -func (obj *patternFlowTcpCtlPshCounter) ToJson() (string, error) { +func (obj *patternFlowMplsLabelCounter) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -227645,7 +272396,7 @@ func (obj *patternFlowTcpCtlPshCounter) ToJson() (string, error) { return string(data), nil } -func (obj *patternFlowTcpCtlPshCounter) FromJson(value string) error { +func (obj *patternFlowMplsLabelCounter) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -227666,19 +272417,19 @@ func (obj *patternFlowTcpCtlPshCounter) FromJson(value string) error { return nil } -func (obj *patternFlowTcpCtlPshCounter) validateToAndFrom() error { +func (obj *patternFlowMplsLabelCounter) validateToAndFrom() error { // emptyVars() obj.validateObj(&obj.validation, true) return obj.validationResult() } -func (obj *patternFlowTcpCtlPshCounter) Validate() error { +func (obj *patternFlowMplsLabelCounter) Validate() error { // emptyVars() obj.validateObj(&obj.validation, false) return obj.validationResult() } -func (obj *patternFlowTcpCtlPshCounter) String() string { +func (obj *patternFlowMplsLabelCounter) String() string { str, err := obj.ToYaml() if err != nil { return err.Error() @@ -227686,12 +272437,12 @@ func (obj *patternFlowTcpCtlPshCounter) String() string { return str } -func (obj *patternFlowTcpCtlPshCounter) Clone() (PatternFlowTcpCtlPshCounter, error) { +func (obj *patternFlowMplsLabelCounter) Clone() (PatternFlowMplsLabelCounter, error) { vErr := obj.Validate() if vErr != nil { return nil, vErr } - newObj := NewPatternFlowTcpCtlPshCounter() + newObj := NewPatternFlowMplsLabelCounter() data, err := proto.Marshal(obj.Msg()) if err != nil { return nil, err @@ -227703,63 +272454,63 @@ func (obj *patternFlowTcpCtlPshCounter) Clone() (PatternFlowTcpCtlPshCounter, er return newObj, nil } -// PatternFlowTcpCtlPshCounter is integer counter pattern -type PatternFlowTcpCtlPshCounter interface { +// PatternFlowMplsLabelCounter is integer counter pattern +type PatternFlowMplsLabelCounter interface { Validation - // Msg marshals PatternFlowTcpCtlPshCounter to protobuf object *otg.PatternFlowTcpCtlPshCounter + // Msg marshals PatternFlowMplsLabelCounter to protobuf object *otg.PatternFlowMplsLabelCounter // and doesn't set defaults - Msg() *otg.PatternFlowTcpCtlPshCounter - // SetMsg unmarshals PatternFlowTcpCtlPshCounter from protobuf object *otg.PatternFlowTcpCtlPshCounter + Msg() *otg.PatternFlowMplsLabelCounter + // SetMsg unmarshals PatternFlowMplsLabelCounter from protobuf object *otg.PatternFlowMplsLabelCounter // and doesn't set defaults - SetMsg(*otg.PatternFlowTcpCtlPshCounter) PatternFlowTcpCtlPshCounter - // ToProto marshals PatternFlowTcpCtlPshCounter to protobuf object *otg.PatternFlowTcpCtlPshCounter - ToProto() (*otg.PatternFlowTcpCtlPshCounter, error) - // ToPbText marshals PatternFlowTcpCtlPshCounter to protobuf text + SetMsg(*otg.PatternFlowMplsLabelCounter) PatternFlowMplsLabelCounter + // ToProto marshals PatternFlowMplsLabelCounter to protobuf object *otg.PatternFlowMplsLabelCounter + ToProto() (*otg.PatternFlowMplsLabelCounter, error) + // ToPbText marshals PatternFlowMplsLabelCounter to protobuf text ToPbText() (string, error) - // ToYaml marshals PatternFlowTcpCtlPshCounter to YAML text + // ToYaml marshals PatternFlowMplsLabelCounter to YAML text ToYaml() (string, error) - // ToJson marshals PatternFlowTcpCtlPshCounter to JSON text + // ToJson marshals PatternFlowMplsLabelCounter to JSON text ToJson() (string, error) - // FromProto unmarshals PatternFlowTcpCtlPshCounter from protobuf object *otg.PatternFlowTcpCtlPshCounter - FromProto(msg *otg.PatternFlowTcpCtlPshCounter) (PatternFlowTcpCtlPshCounter, error) - // FromPbText unmarshals PatternFlowTcpCtlPshCounter from protobuf text + // FromProto unmarshals PatternFlowMplsLabelCounter from protobuf object *otg.PatternFlowMplsLabelCounter + FromProto(msg *otg.PatternFlowMplsLabelCounter) (PatternFlowMplsLabelCounter, error) + // FromPbText unmarshals PatternFlowMplsLabelCounter from protobuf text FromPbText(value string) error - // FromYaml unmarshals PatternFlowTcpCtlPshCounter from YAML text + // FromYaml unmarshals PatternFlowMplsLabelCounter from YAML text FromYaml(value string) error - // FromJson unmarshals PatternFlowTcpCtlPshCounter from JSON text + // FromJson unmarshals PatternFlowMplsLabelCounter from JSON text FromJson(value string) error - // Validate validates PatternFlowTcpCtlPshCounter + // Validate validates PatternFlowMplsLabelCounter Validate() error // A stringer function String() string // Clones the object - Clone() (PatternFlowTcpCtlPshCounter, error) + Clone() (PatternFlowMplsLabelCounter, error) validateToAndFrom() error validateObj(vObj *validation, set_default bool) setDefault() - // Start returns uint32, set in PatternFlowTcpCtlPshCounter. + // Start returns uint32, set in PatternFlowMplsLabelCounter. Start() uint32 - // SetStart assigns uint32 provided by user to PatternFlowTcpCtlPshCounter - SetStart(value uint32) PatternFlowTcpCtlPshCounter - // HasStart checks if Start has been set in PatternFlowTcpCtlPshCounter + // SetStart assigns uint32 provided by user to PatternFlowMplsLabelCounter + SetStart(value uint32) PatternFlowMplsLabelCounter + // HasStart checks if Start has been set in PatternFlowMplsLabelCounter HasStart() bool - // Step returns uint32, set in PatternFlowTcpCtlPshCounter. + // Step returns uint32, set in PatternFlowMplsLabelCounter. Step() uint32 - // SetStep assigns uint32 provided by user to PatternFlowTcpCtlPshCounter - SetStep(value uint32) PatternFlowTcpCtlPshCounter - // HasStep checks if Step has been set in PatternFlowTcpCtlPshCounter + // SetStep assigns uint32 provided by user to PatternFlowMplsLabelCounter + SetStep(value uint32) PatternFlowMplsLabelCounter + // HasStep checks if Step has been set in PatternFlowMplsLabelCounter HasStep() bool - // Count returns uint32, set in PatternFlowTcpCtlPshCounter. + // Count returns uint32, set in PatternFlowMplsLabelCounter. Count() uint32 - // SetCount assigns uint32 provided by user to PatternFlowTcpCtlPshCounter - SetCount(value uint32) PatternFlowTcpCtlPshCounter - // HasCount checks if Count has been set in PatternFlowTcpCtlPshCounter + // SetCount assigns uint32 provided by user to PatternFlowMplsLabelCounter + SetCount(value uint32) PatternFlowMplsLabelCounter + // HasCount checks if Count has been set in PatternFlowMplsLabelCounter HasCount() bool } // description is TBD // Start returns a uint32 -func (obj *patternFlowTcpCtlPshCounter) Start() uint32 { +func (obj *patternFlowMplsLabelCounter) Start() uint32 { return *obj.obj.Start @@ -227767,13 +272518,13 @@ func (obj *patternFlowTcpCtlPshCounter) Start() uint32 { // description is TBD // Start returns a uint32 -func (obj *patternFlowTcpCtlPshCounter) HasStart() bool { +func (obj *patternFlowMplsLabelCounter) HasStart() bool { return obj.obj.Start != nil } // description is TBD -// SetStart sets the uint32 value in the PatternFlowTcpCtlPshCounter object -func (obj *patternFlowTcpCtlPshCounter) SetStart(value uint32) PatternFlowTcpCtlPshCounter { +// SetStart sets the uint32 value in the PatternFlowMplsLabelCounter object +func (obj *patternFlowMplsLabelCounter) SetStart(value uint32) PatternFlowMplsLabelCounter { obj.obj.Start = &value return obj @@ -227781,7 +272532,7 @@ func (obj *patternFlowTcpCtlPshCounter) SetStart(value uint32) PatternFlowTcpCtl // description is TBD // Step returns a uint32 -func (obj *patternFlowTcpCtlPshCounter) Step() uint32 { +func (obj *patternFlowMplsLabelCounter) Step() uint32 { return *obj.obj.Step @@ -227789,13 +272540,13 @@ func (obj *patternFlowTcpCtlPshCounter) Step() uint32 { // description is TBD // Step returns a uint32 -func (obj *patternFlowTcpCtlPshCounter) HasStep() bool { +func (obj *patternFlowMplsLabelCounter) HasStep() bool { return obj.obj.Step != nil } // description is TBD -// SetStep sets the uint32 value in the PatternFlowTcpCtlPshCounter object -func (obj *patternFlowTcpCtlPshCounter) SetStep(value uint32) PatternFlowTcpCtlPshCounter { +// SetStep sets the uint32 value in the PatternFlowMplsLabelCounter object +func (obj *patternFlowMplsLabelCounter) SetStep(value uint32) PatternFlowMplsLabelCounter { obj.obj.Step = &value return obj @@ -227803,7 +272554,7 @@ func (obj *patternFlowTcpCtlPshCounter) SetStep(value uint32) PatternFlowTcpCtlP // description is TBD // Count returns a uint32 -func (obj *patternFlowTcpCtlPshCounter) Count() uint32 { +func (obj *patternFlowMplsLabelCounter) Count() uint32 { return *obj.obj.Count @@ -227811,58 +272562,58 @@ func (obj *patternFlowTcpCtlPshCounter) Count() uint32 { // description is TBD // Count returns a uint32 -func (obj *patternFlowTcpCtlPshCounter) HasCount() bool { +func (obj *patternFlowMplsLabelCounter) HasCount() bool { return obj.obj.Count != nil } // description is TBD -// SetCount sets the uint32 value in the PatternFlowTcpCtlPshCounter object -func (obj *patternFlowTcpCtlPshCounter) SetCount(value uint32) PatternFlowTcpCtlPshCounter { +// SetCount sets the uint32 value in the PatternFlowMplsLabelCounter object +func (obj *patternFlowMplsLabelCounter) SetCount(value uint32) PatternFlowMplsLabelCounter { obj.obj.Count = &value return obj } -func (obj *patternFlowTcpCtlPshCounter) validateObj(vObj *validation, set_default bool) { +func (obj *patternFlowMplsLabelCounter) validateObj(vObj *validation, set_default bool) { if set_default { obj.setDefault() } if obj.obj.Start != nil { - if *obj.obj.Start > 1 { + if *obj.obj.Start > 1048575 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowTcpCtlPshCounter.Start <= 1 but Got %d", *obj.obj.Start)) + fmt.Sprintf("0 <= PatternFlowMplsLabelCounter.Start <= 1048575 but Got %d", *obj.obj.Start)) } } if obj.obj.Step != nil { - if *obj.obj.Step > 1 { + if *obj.obj.Step > 1048575 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowTcpCtlPshCounter.Step <= 1 but Got %d", *obj.obj.Step)) + fmt.Sprintf("0 <= PatternFlowMplsLabelCounter.Step <= 1048575 but Got %d", *obj.obj.Step)) } } if obj.obj.Count != nil { - if *obj.obj.Count > 1 { + if *obj.obj.Count > 1048575 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowTcpCtlPshCounter.Count <= 1 but Got %d", *obj.obj.Count)) + fmt.Sprintf("0 <= PatternFlowMplsLabelCounter.Count <= 1048575 but Got %d", *obj.obj.Count)) } } } -func (obj *patternFlowTcpCtlPshCounter) setDefault() { +func (obj *patternFlowMplsLabelCounter) setDefault() { if obj.obj.Start == nil { - obj.SetStart(0) + obj.SetStart(16) } if obj.obj.Step == nil { obj.SetStep(1) @@ -227873,29 +272624,29 @@ func (obj *patternFlowTcpCtlPshCounter) setDefault() { } -// ***** PatternFlowTcpCtlPshMetricTag ***** -type patternFlowTcpCtlPshMetricTag struct { +// ***** PatternFlowMplsLabelMetricTag ***** +type patternFlowMplsLabelMetricTag struct { validation - obj *otg.PatternFlowTcpCtlPshMetricTag + obj *otg.PatternFlowMplsLabelMetricTag } -func NewPatternFlowTcpCtlPshMetricTag() PatternFlowTcpCtlPshMetricTag { - obj := patternFlowTcpCtlPshMetricTag{obj: &otg.PatternFlowTcpCtlPshMetricTag{}} +func NewPatternFlowMplsLabelMetricTag() PatternFlowMplsLabelMetricTag { + obj := patternFlowMplsLabelMetricTag{obj: &otg.PatternFlowMplsLabelMetricTag{}} obj.setDefault() return &obj } -func (obj *patternFlowTcpCtlPshMetricTag) Msg() *otg.PatternFlowTcpCtlPshMetricTag { +func (obj *patternFlowMplsLabelMetricTag) Msg() *otg.PatternFlowMplsLabelMetricTag { return obj.obj } -func (obj *patternFlowTcpCtlPshMetricTag) SetMsg(msg *otg.PatternFlowTcpCtlPshMetricTag) PatternFlowTcpCtlPshMetricTag { +func (obj *patternFlowMplsLabelMetricTag) SetMsg(msg *otg.PatternFlowMplsLabelMetricTag) PatternFlowMplsLabelMetricTag { proto.Merge(obj.obj, msg) return obj } -func (obj *patternFlowTcpCtlPshMetricTag) ToProto() (*otg.PatternFlowTcpCtlPshMetricTag, error) { +func (obj *patternFlowMplsLabelMetricTag) ToProto() (*otg.PatternFlowMplsLabelMetricTag, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -227903,7 +272654,7 @@ func (obj *patternFlowTcpCtlPshMetricTag) ToProto() (*otg.PatternFlowTcpCtlPshMe return obj.Msg(), nil } -func (obj *patternFlowTcpCtlPshMetricTag) FromProto(msg *otg.PatternFlowTcpCtlPshMetricTag) (PatternFlowTcpCtlPshMetricTag, error) { +func (obj *patternFlowMplsLabelMetricTag) FromProto(msg *otg.PatternFlowMplsLabelMetricTag) (PatternFlowMplsLabelMetricTag, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -227912,7 +272663,7 @@ func (obj *patternFlowTcpCtlPshMetricTag) FromProto(msg *otg.PatternFlowTcpCtlPs return newObj, nil } -func (obj *patternFlowTcpCtlPshMetricTag) ToPbText() (string, error) { +func (obj *patternFlowMplsLabelMetricTag) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -227924,7 +272675,7 @@ func (obj *patternFlowTcpCtlPshMetricTag) ToPbText() (string, error) { return string(protoMarshal), nil } -func (obj *patternFlowTcpCtlPshMetricTag) FromPbText(value string) error { +func (obj *patternFlowMplsLabelMetricTag) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj @@ -227937,7 +272688,7 @@ func (obj *patternFlowTcpCtlPshMetricTag) FromPbText(value string) error { return retObj } -func (obj *patternFlowTcpCtlPshMetricTag) ToYaml() (string, error) { +func (obj *patternFlowMplsLabelMetricTag) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -227958,7 +272709,7 @@ func (obj *patternFlowTcpCtlPshMetricTag) ToYaml() (string, error) { return string(data), nil } -func (obj *patternFlowTcpCtlPshMetricTag) FromYaml(value string) error { +func (obj *patternFlowMplsLabelMetricTag) FromYaml(value string) error { if value == "" { value = "{}" } @@ -227983,7 +272734,7 @@ func (obj *patternFlowTcpCtlPshMetricTag) FromYaml(value string) error { return nil } -func (obj *patternFlowTcpCtlPshMetricTag) ToJson() (string, error) { +func (obj *patternFlowMplsLabelMetricTag) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -228001,7 +272752,7 @@ func (obj *patternFlowTcpCtlPshMetricTag) ToJson() (string, error) { return string(data), nil } -func (obj *patternFlowTcpCtlPshMetricTag) FromJson(value string) error { +func (obj *patternFlowMplsLabelMetricTag) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -228022,19 +272773,19 @@ func (obj *patternFlowTcpCtlPshMetricTag) FromJson(value string) error { return nil } -func (obj *patternFlowTcpCtlPshMetricTag) validateToAndFrom() error { +func (obj *patternFlowMplsLabelMetricTag) validateToAndFrom() error { // emptyVars() obj.validateObj(&obj.validation, true) return obj.validationResult() } -func (obj *patternFlowTcpCtlPshMetricTag) Validate() error { +func (obj *patternFlowMplsLabelMetricTag) Validate() error { // emptyVars() obj.validateObj(&obj.validation, false) return obj.validationResult() } -func (obj *patternFlowTcpCtlPshMetricTag) String() string { +func (obj *patternFlowMplsLabelMetricTag) String() string { str, err := obj.ToYaml() if err != nil { return err.Error() @@ -228042,12 +272793,12 @@ func (obj *patternFlowTcpCtlPshMetricTag) String() string { return str } -func (obj *patternFlowTcpCtlPshMetricTag) Clone() (PatternFlowTcpCtlPshMetricTag, error) { +func (obj *patternFlowMplsLabelMetricTag) Clone() (PatternFlowMplsLabelMetricTag, error) { vErr := obj.Validate() if vErr != nil { return nil, vErr } - newObj := NewPatternFlowTcpCtlPshMetricTag() + newObj := NewPatternFlowMplsLabelMetricTag() data, err := proto.Marshal(obj.Msg()) if err != nil { return nil, err @@ -228059,69 +272810,69 @@ func (obj *patternFlowTcpCtlPshMetricTag) Clone() (PatternFlowTcpCtlPshMetricTag return newObj, nil } -// PatternFlowTcpCtlPshMetricTag is metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. -type PatternFlowTcpCtlPshMetricTag interface { +// PatternFlowMplsLabelMetricTag is metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. +type PatternFlowMplsLabelMetricTag interface { Validation - // Msg marshals PatternFlowTcpCtlPshMetricTag to protobuf object *otg.PatternFlowTcpCtlPshMetricTag + // Msg marshals PatternFlowMplsLabelMetricTag to protobuf object *otg.PatternFlowMplsLabelMetricTag // and doesn't set defaults - Msg() *otg.PatternFlowTcpCtlPshMetricTag - // SetMsg unmarshals PatternFlowTcpCtlPshMetricTag from protobuf object *otg.PatternFlowTcpCtlPshMetricTag + Msg() *otg.PatternFlowMplsLabelMetricTag + // SetMsg unmarshals PatternFlowMplsLabelMetricTag from protobuf object *otg.PatternFlowMplsLabelMetricTag // and doesn't set defaults - SetMsg(*otg.PatternFlowTcpCtlPshMetricTag) PatternFlowTcpCtlPshMetricTag - // ToProto marshals PatternFlowTcpCtlPshMetricTag to protobuf object *otg.PatternFlowTcpCtlPshMetricTag - ToProto() (*otg.PatternFlowTcpCtlPshMetricTag, error) - // ToPbText marshals PatternFlowTcpCtlPshMetricTag to protobuf text + SetMsg(*otg.PatternFlowMplsLabelMetricTag) PatternFlowMplsLabelMetricTag + // ToProto marshals PatternFlowMplsLabelMetricTag to protobuf object *otg.PatternFlowMplsLabelMetricTag + ToProto() (*otg.PatternFlowMplsLabelMetricTag, error) + // ToPbText marshals PatternFlowMplsLabelMetricTag to protobuf text ToPbText() (string, error) - // ToYaml marshals PatternFlowTcpCtlPshMetricTag to YAML text + // ToYaml marshals PatternFlowMplsLabelMetricTag to YAML text ToYaml() (string, error) - // ToJson marshals PatternFlowTcpCtlPshMetricTag to JSON text + // ToJson marshals PatternFlowMplsLabelMetricTag to JSON text ToJson() (string, error) - // FromProto unmarshals PatternFlowTcpCtlPshMetricTag from protobuf object *otg.PatternFlowTcpCtlPshMetricTag - FromProto(msg *otg.PatternFlowTcpCtlPshMetricTag) (PatternFlowTcpCtlPshMetricTag, error) - // FromPbText unmarshals PatternFlowTcpCtlPshMetricTag from protobuf text + // FromProto unmarshals PatternFlowMplsLabelMetricTag from protobuf object *otg.PatternFlowMplsLabelMetricTag + FromProto(msg *otg.PatternFlowMplsLabelMetricTag) (PatternFlowMplsLabelMetricTag, error) + // FromPbText unmarshals PatternFlowMplsLabelMetricTag from protobuf text FromPbText(value string) error - // FromYaml unmarshals PatternFlowTcpCtlPshMetricTag from YAML text + // FromYaml unmarshals PatternFlowMplsLabelMetricTag from YAML text FromYaml(value string) error - // FromJson unmarshals PatternFlowTcpCtlPshMetricTag from JSON text + // FromJson unmarshals PatternFlowMplsLabelMetricTag from JSON text FromJson(value string) error - // Validate validates PatternFlowTcpCtlPshMetricTag + // Validate validates PatternFlowMplsLabelMetricTag Validate() error // A stringer function String() string // Clones the object - Clone() (PatternFlowTcpCtlPshMetricTag, error) + Clone() (PatternFlowMplsLabelMetricTag, error) validateToAndFrom() error validateObj(vObj *validation, set_default bool) setDefault() - // Name returns string, set in PatternFlowTcpCtlPshMetricTag. + // Name returns string, set in PatternFlowMplsLabelMetricTag. Name() string - // SetName assigns string provided by user to PatternFlowTcpCtlPshMetricTag - SetName(value string) PatternFlowTcpCtlPshMetricTag - // Offset returns uint32, set in PatternFlowTcpCtlPshMetricTag. + // SetName assigns string provided by user to PatternFlowMplsLabelMetricTag + SetName(value string) PatternFlowMplsLabelMetricTag + // Offset returns uint32, set in PatternFlowMplsLabelMetricTag. Offset() uint32 - // SetOffset assigns uint32 provided by user to PatternFlowTcpCtlPshMetricTag - SetOffset(value uint32) PatternFlowTcpCtlPshMetricTag - // HasOffset checks if Offset has been set in PatternFlowTcpCtlPshMetricTag + // SetOffset assigns uint32 provided by user to PatternFlowMplsLabelMetricTag + SetOffset(value uint32) PatternFlowMplsLabelMetricTag + // HasOffset checks if Offset has been set in PatternFlowMplsLabelMetricTag HasOffset() bool - // Length returns uint32, set in PatternFlowTcpCtlPshMetricTag. + // Length returns uint32, set in PatternFlowMplsLabelMetricTag. Length() uint32 - // SetLength assigns uint32 provided by user to PatternFlowTcpCtlPshMetricTag - SetLength(value uint32) PatternFlowTcpCtlPshMetricTag - // HasLength checks if Length has been set in PatternFlowTcpCtlPshMetricTag + // SetLength assigns uint32 provided by user to PatternFlowMplsLabelMetricTag + SetLength(value uint32) PatternFlowMplsLabelMetricTag + // HasLength checks if Length has been set in PatternFlowMplsLabelMetricTag HasLength() bool } // Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field // Name returns a string -func (obj *patternFlowTcpCtlPshMetricTag) Name() string { +func (obj *patternFlowMplsLabelMetricTag) Name() string { return *obj.obj.Name } // Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field -// SetName sets the string value in the PatternFlowTcpCtlPshMetricTag object -func (obj *patternFlowTcpCtlPshMetricTag) SetName(value string) PatternFlowTcpCtlPshMetricTag { +// SetName sets the string value in the PatternFlowMplsLabelMetricTag object +func (obj *patternFlowMplsLabelMetricTag) SetName(value string) PatternFlowMplsLabelMetricTag { obj.obj.Name = &value return obj @@ -228129,7 +272880,7 @@ func (obj *patternFlowTcpCtlPshMetricTag) SetName(value string) PatternFlowTcpCt // Offset in bits relative to start of corresponding header field // Offset returns a uint32 -func (obj *patternFlowTcpCtlPshMetricTag) Offset() uint32 { +func (obj *patternFlowMplsLabelMetricTag) Offset() uint32 { return *obj.obj.Offset @@ -228137,13 +272888,13 @@ func (obj *patternFlowTcpCtlPshMetricTag) Offset() uint32 { // Offset in bits relative to start of corresponding header field // Offset returns a uint32 -func (obj *patternFlowTcpCtlPshMetricTag) HasOffset() bool { +func (obj *patternFlowMplsLabelMetricTag) HasOffset() bool { return obj.obj.Offset != nil } // Offset in bits relative to start of corresponding header field -// SetOffset sets the uint32 value in the PatternFlowTcpCtlPshMetricTag object -func (obj *patternFlowTcpCtlPshMetricTag) SetOffset(value uint32) PatternFlowTcpCtlPshMetricTag { +// SetOffset sets the uint32 value in the PatternFlowMplsLabelMetricTag object +func (obj *patternFlowMplsLabelMetricTag) SetOffset(value uint32) PatternFlowMplsLabelMetricTag { obj.obj.Offset = &value return obj @@ -228151,7 +272902,7 @@ func (obj *patternFlowTcpCtlPshMetricTag) SetOffset(value uint32) PatternFlowTcp // Number of bits to track for metrics starting from configured offset of corresponding header field // Length returns a uint32 -func (obj *patternFlowTcpCtlPshMetricTag) Length() uint32 { +func (obj *patternFlowMplsLabelMetricTag) Length() uint32 { return *obj.obj.Length @@ -228159,83 +272910,83 @@ func (obj *patternFlowTcpCtlPshMetricTag) Length() uint32 { // Number of bits to track for metrics starting from configured offset of corresponding header field // Length returns a uint32 -func (obj *patternFlowTcpCtlPshMetricTag) HasLength() bool { +func (obj *patternFlowMplsLabelMetricTag) HasLength() bool { return obj.obj.Length != nil } // Number of bits to track for metrics starting from configured offset of corresponding header field -// SetLength sets the uint32 value in the PatternFlowTcpCtlPshMetricTag object -func (obj *patternFlowTcpCtlPshMetricTag) SetLength(value uint32) PatternFlowTcpCtlPshMetricTag { +// SetLength sets the uint32 value in the PatternFlowMplsLabelMetricTag object +func (obj *patternFlowMplsLabelMetricTag) SetLength(value uint32) PatternFlowMplsLabelMetricTag { obj.obj.Length = &value return obj } -func (obj *patternFlowTcpCtlPshMetricTag) validateObj(vObj *validation, set_default bool) { +func (obj *patternFlowMplsLabelMetricTag) validateObj(vObj *validation, set_default bool) { if set_default { obj.setDefault() } // Name is required if obj.obj.Name == nil { - vObj.validationErrors = append(vObj.validationErrors, "Name is required field on interface PatternFlowTcpCtlPshMetricTag") + vObj.validationErrors = append(vObj.validationErrors, "Name is required field on interface PatternFlowMplsLabelMetricTag") } if obj.obj.Offset != nil { - if *obj.obj.Offset > 0 { + if *obj.obj.Offset > 19 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowTcpCtlPshMetricTag.Offset <= 0 but Got %d", *obj.obj.Offset)) + fmt.Sprintf("0 <= PatternFlowMplsLabelMetricTag.Offset <= 19 but Got %d", *obj.obj.Offset)) } } if obj.obj.Length != nil { - if *obj.obj.Length < 1 || *obj.obj.Length > 1 { + if *obj.obj.Length < 1 || *obj.obj.Length > 20 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("1 <= PatternFlowTcpCtlPshMetricTag.Length <= 1 but Got %d", *obj.obj.Length)) + fmt.Sprintf("1 <= PatternFlowMplsLabelMetricTag.Length <= 20 but Got %d", *obj.obj.Length)) } } } -func (obj *patternFlowTcpCtlPshMetricTag) setDefault() { +func (obj *patternFlowMplsLabelMetricTag) setDefault() { if obj.obj.Offset == nil { obj.SetOffset(0) } if obj.obj.Length == nil { - obj.SetLength(1) + obj.SetLength(20) } } -// ***** PatternFlowTcpCtlRstCounter ***** -type patternFlowTcpCtlRstCounter struct { +// ***** PatternFlowMplsTrafficClassCounter ***** +type patternFlowMplsTrafficClassCounter struct { validation - obj *otg.PatternFlowTcpCtlRstCounter + obj *otg.PatternFlowMplsTrafficClassCounter } -func NewPatternFlowTcpCtlRstCounter() PatternFlowTcpCtlRstCounter { - obj := patternFlowTcpCtlRstCounter{obj: &otg.PatternFlowTcpCtlRstCounter{}} +func NewPatternFlowMplsTrafficClassCounter() PatternFlowMplsTrafficClassCounter { + obj := patternFlowMplsTrafficClassCounter{obj: &otg.PatternFlowMplsTrafficClassCounter{}} obj.setDefault() return &obj } -func (obj *patternFlowTcpCtlRstCounter) Msg() *otg.PatternFlowTcpCtlRstCounter { +func (obj *patternFlowMplsTrafficClassCounter) Msg() *otg.PatternFlowMplsTrafficClassCounter { return obj.obj } -func (obj *patternFlowTcpCtlRstCounter) SetMsg(msg *otg.PatternFlowTcpCtlRstCounter) PatternFlowTcpCtlRstCounter { +func (obj *patternFlowMplsTrafficClassCounter) SetMsg(msg *otg.PatternFlowMplsTrafficClassCounter) PatternFlowMplsTrafficClassCounter { proto.Merge(obj.obj, msg) return obj } -func (obj *patternFlowTcpCtlRstCounter) ToProto() (*otg.PatternFlowTcpCtlRstCounter, error) { +func (obj *patternFlowMplsTrafficClassCounter) ToProto() (*otg.PatternFlowMplsTrafficClassCounter, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -228243,7 +272994,7 @@ func (obj *patternFlowTcpCtlRstCounter) ToProto() (*otg.PatternFlowTcpCtlRstCoun return obj.Msg(), nil } -func (obj *patternFlowTcpCtlRstCounter) FromProto(msg *otg.PatternFlowTcpCtlRstCounter) (PatternFlowTcpCtlRstCounter, error) { +func (obj *patternFlowMplsTrafficClassCounter) FromProto(msg *otg.PatternFlowMplsTrafficClassCounter) (PatternFlowMplsTrafficClassCounter, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -228252,7 +273003,7 @@ func (obj *patternFlowTcpCtlRstCounter) FromProto(msg *otg.PatternFlowTcpCtlRstC return newObj, nil } -func (obj *patternFlowTcpCtlRstCounter) ToPbText() (string, error) { +func (obj *patternFlowMplsTrafficClassCounter) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -228264,7 +273015,7 @@ func (obj *patternFlowTcpCtlRstCounter) ToPbText() (string, error) { return string(protoMarshal), nil } -func (obj *patternFlowTcpCtlRstCounter) FromPbText(value string) error { +func (obj *patternFlowMplsTrafficClassCounter) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj @@ -228277,7 +273028,7 @@ func (obj *patternFlowTcpCtlRstCounter) FromPbText(value string) error { return retObj } -func (obj *patternFlowTcpCtlRstCounter) ToYaml() (string, error) { +func (obj *patternFlowMplsTrafficClassCounter) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -228298,7 +273049,7 @@ func (obj *patternFlowTcpCtlRstCounter) ToYaml() (string, error) { return string(data), nil } -func (obj *patternFlowTcpCtlRstCounter) FromYaml(value string) error { +func (obj *patternFlowMplsTrafficClassCounter) FromYaml(value string) error { if value == "" { value = "{}" } @@ -228323,7 +273074,7 @@ func (obj *patternFlowTcpCtlRstCounter) FromYaml(value string) error { return nil } -func (obj *patternFlowTcpCtlRstCounter) ToJson() (string, error) { +func (obj *patternFlowMplsTrafficClassCounter) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -228341,7 +273092,7 @@ func (obj *patternFlowTcpCtlRstCounter) ToJson() (string, error) { return string(data), nil } -func (obj *patternFlowTcpCtlRstCounter) FromJson(value string) error { +func (obj *patternFlowMplsTrafficClassCounter) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -228362,19 +273113,19 @@ func (obj *patternFlowTcpCtlRstCounter) FromJson(value string) error { return nil } -func (obj *patternFlowTcpCtlRstCounter) validateToAndFrom() error { +func (obj *patternFlowMplsTrafficClassCounter) validateToAndFrom() error { // emptyVars() obj.validateObj(&obj.validation, true) return obj.validationResult() } -func (obj *patternFlowTcpCtlRstCounter) Validate() error { +func (obj *patternFlowMplsTrafficClassCounter) Validate() error { // emptyVars() obj.validateObj(&obj.validation, false) return obj.validationResult() } -func (obj *patternFlowTcpCtlRstCounter) String() string { +func (obj *patternFlowMplsTrafficClassCounter) String() string { str, err := obj.ToYaml() if err != nil { return err.Error() @@ -228382,12 +273133,12 @@ func (obj *patternFlowTcpCtlRstCounter) String() string { return str } -func (obj *patternFlowTcpCtlRstCounter) Clone() (PatternFlowTcpCtlRstCounter, error) { +func (obj *patternFlowMplsTrafficClassCounter) Clone() (PatternFlowMplsTrafficClassCounter, error) { vErr := obj.Validate() if vErr != nil { return nil, vErr } - newObj := NewPatternFlowTcpCtlRstCounter() + newObj := NewPatternFlowMplsTrafficClassCounter() data, err := proto.Marshal(obj.Msg()) if err != nil { return nil, err @@ -228399,63 +273150,63 @@ func (obj *patternFlowTcpCtlRstCounter) Clone() (PatternFlowTcpCtlRstCounter, er return newObj, nil } -// PatternFlowTcpCtlRstCounter is integer counter pattern -type PatternFlowTcpCtlRstCounter interface { +// PatternFlowMplsTrafficClassCounter is integer counter pattern +type PatternFlowMplsTrafficClassCounter interface { Validation - // Msg marshals PatternFlowTcpCtlRstCounter to protobuf object *otg.PatternFlowTcpCtlRstCounter + // Msg marshals PatternFlowMplsTrafficClassCounter to protobuf object *otg.PatternFlowMplsTrafficClassCounter // and doesn't set defaults - Msg() *otg.PatternFlowTcpCtlRstCounter - // SetMsg unmarshals PatternFlowTcpCtlRstCounter from protobuf object *otg.PatternFlowTcpCtlRstCounter + Msg() *otg.PatternFlowMplsTrafficClassCounter + // SetMsg unmarshals PatternFlowMplsTrafficClassCounter from protobuf object *otg.PatternFlowMplsTrafficClassCounter // and doesn't set defaults - SetMsg(*otg.PatternFlowTcpCtlRstCounter) PatternFlowTcpCtlRstCounter - // ToProto marshals PatternFlowTcpCtlRstCounter to protobuf object *otg.PatternFlowTcpCtlRstCounter - ToProto() (*otg.PatternFlowTcpCtlRstCounter, error) - // ToPbText marshals PatternFlowTcpCtlRstCounter to protobuf text + SetMsg(*otg.PatternFlowMplsTrafficClassCounter) PatternFlowMplsTrafficClassCounter + // ToProto marshals PatternFlowMplsTrafficClassCounter to protobuf object *otg.PatternFlowMplsTrafficClassCounter + ToProto() (*otg.PatternFlowMplsTrafficClassCounter, error) + // ToPbText marshals PatternFlowMplsTrafficClassCounter to protobuf text ToPbText() (string, error) - // ToYaml marshals PatternFlowTcpCtlRstCounter to YAML text + // ToYaml marshals PatternFlowMplsTrafficClassCounter to YAML text ToYaml() (string, error) - // ToJson marshals PatternFlowTcpCtlRstCounter to JSON text + // ToJson marshals PatternFlowMplsTrafficClassCounter to JSON text ToJson() (string, error) - // FromProto unmarshals PatternFlowTcpCtlRstCounter from protobuf object *otg.PatternFlowTcpCtlRstCounter - FromProto(msg *otg.PatternFlowTcpCtlRstCounter) (PatternFlowTcpCtlRstCounter, error) - // FromPbText unmarshals PatternFlowTcpCtlRstCounter from protobuf text + // FromProto unmarshals PatternFlowMplsTrafficClassCounter from protobuf object *otg.PatternFlowMplsTrafficClassCounter + FromProto(msg *otg.PatternFlowMplsTrafficClassCounter) (PatternFlowMplsTrafficClassCounter, error) + // FromPbText unmarshals PatternFlowMplsTrafficClassCounter from protobuf text FromPbText(value string) error - // FromYaml unmarshals PatternFlowTcpCtlRstCounter from YAML text + // FromYaml unmarshals PatternFlowMplsTrafficClassCounter from YAML text FromYaml(value string) error - // FromJson unmarshals PatternFlowTcpCtlRstCounter from JSON text + // FromJson unmarshals PatternFlowMplsTrafficClassCounter from JSON text FromJson(value string) error - // Validate validates PatternFlowTcpCtlRstCounter + // Validate validates PatternFlowMplsTrafficClassCounter Validate() error // A stringer function String() string // Clones the object - Clone() (PatternFlowTcpCtlRstCounter, error) + Clone() (PatternFlowMplsTrafficClassCounter, error) validateToAndFrom() error validateObj(vObj *validation, set_default bool) setDefault() - // Start returns uint32, set in PatternFlowTcpCtlRstCounter. + // Start returns uint32, set in PatternFlowMplsTrafficClassCounter. Start() uint32 - // SetStart assigns uint32 provided by user to PatternFlowTcpCtlRstCounter - SetStart(value uint32) PatternFlowTcpCtlRstCounter - // HasStart checks if Start has been set in PatternFlowTcpCtlRstCounter + // SetStart assigns uint32 provided by user to PatternFlowMplsTrafficClassCounter + SetStart(value uint32) PatternFlowMplsTrafficClassCounter + // HasStart checks if Start has been set in PatternFlowMplsTrafficClassCounter HasStart() bool - // Step returns uint32, set in PatternFlowTcpCtlRstCounter. + // Step returns uint32, set in PatternFlowMplsTrafficClassCounter. Step() uint32 - // SetStep assigns uint32 provided by user to PatternFlowTcpCtlRstCounter - SetStep(value uint32) PatternFlowTcpCtlRstCounter - // HasStep checks if Step has been set in PatternFlowTcpCtlRstCounter + // SetStep assigns uint32 provided by user to PatternFlowMplsTrafficClassCounter + SetStep(value uint32) PatternFlowMplsTrafficClassCounter + // HasStep checks if Step has been set in PatternFlowMplsTrafficClassCounter HasStep() bool - // Count returns uint32, set in PatternFlowTcpCtlRstCounter. + // Count returns uint32, set in PatternFlowMplsTrafficClassCounter. Count() uint32 - // SetCount assigns uint32 provided by user to PatternFlowTcpCtlRstCounter - SetCount(value uint32) PatternFlowTcpCtlRstCounter - // HasCount checks if Count has been set in PatternFlowTcpCtlRstCounter + // SetCount assigns uint32 provided by user to PatternFlowMplsTrafficClassCounter + SetCount(value uint32) PatternFlowMplsTrafficClassCounter + // HasCount checks if Count has been set in PatternFlowMplsTrafficClassCounter HasCount() bool } // description is TBD // Start returns a uint32 -func (obj *patternFlowTcpCtlRstCounter) Start() uint32 { +func (obj *patternFlowMplsTrafficClassCounter) Start() uint32 { return *obj.obj.Start @@ -228463,13 +273214,13 @@ func (obj *patternFlowTcpCtlRstCounter) Start() uint32 { // description is TBD // Start returns a uint32 -func (obj *patternFlowTcpCtlRstCounter) HasStart() bool { +func (obj *patternFlowMplsTrafficClassCounter) HasStart() bool { return obj.obj.Start != nil } // description is TBD -// SetStart sets the uint32 value in the PatternFlowTcpCtlRstCounter object -func (obj *patternFlowTcpCtlRstCounter) SetStart(value uint32) PatternFlowTcpCtlRstCounter { +// SetStart sets the uint32 value in the PatternFlowMplsTrafficClassCounter object +func (obj *patternFlowMplsTrafficClassCounter) SetStart(value uint32) PatternFlowMplsTrafficClassCounter { obj.obj.Start = &value return obj @@ -228477,7 +273228,7 @@ func (obj *patternFlowTcpCtlRstCounter) SetStart(value uint32) PatternFlowTcpCtl // description is TBD // Step returns a uint32 -func (obj *patternFlowTcpCtlRstCounter) Step() uint32 { +func (obj *patternFlowMplsTrafficClassCounter) Step() uint32 { return *obj.obj.Step @@ -228485,13 +273236,13 @@ func (obj *patternFlowTcpCtlRstCounter) Step() uint32 { // description is TBD // Step returns a uint32 -func (obj *patternFlowTcpCtlRstCounter) HasStep() bool { +func (obj *patternFlowMplsTrafficClassCounter) HasStep() bool { return obj.obj.Step != nil } // description is TBD -// SetStep sets the uint32 value in the PatternFlowTcpCtlRstCounter object -func (obj *patternFlowTcpCtlRstCounter) SetStep(value uint32) PatternFlowTcpCtlRstCounter { +// SetStep sets the uint32 value in the PatternFlowMplsTrafficClassCounter object +func (obj *patternFlowMplsTrafficClassCounter) SetStep(value uint32) PatternFlowMplsTrafficClassCounter { obj.obj.Step = &value return obj @@ -228499,7 +273250,7 @@ func (obj *patternFlowTcpCtlRstCounter) SetStep(value uint32) PatternFlowTcpCtlR // description is TBD // Count returns a uint32 -func (obj *patternFlowTcpCtlRstCounter) Count() uint32 { +func (obj *patternFlowMplsTrafficClassCounter) Count() uint32 { return *obj.obj.Count @@ -228507,56 +273258,56 @@ func (obj *patternFlowTcpCtlRstCounter) Count() uint32 { // description is TBD // Count returns a uint32 -func (obj *patternFlowTcpCtlRstCounter) HasCount() bool { +func (obj *patternFlowMplsTrafficClassCounter) HasCount() bool { return obj.obj.Count != nil } // description is TBD -// SetCount sets the uint32 value in the PatternFlowTcpCtlRstCounter object -func (obj *patternFlowTcpCtlRstCounter) SetCount(value uint32) PatternFlowTcpCtlRstCounter { +// SetCount sets the uint32 value in the PatternFlowMplsTrafficClassCounter object +func (obj *patternFlowMplsTrafficClassCounter) SetCount(value uint32) PatternFlowMplsTrafficClassCounter { obj.obj.Count = &value return obj } -func (obj *patternFlowTcpCtlRstCounter) validateObj(vObj *validation, set_default bool) { +func (obj *patternFlowMplsTrafficClassCounter) validateObj(vObj *validation, set_default bool) { if set_default { obj.setDefault() } if obj.obj.Start != nil { - if *obj.obj.Start > 1 { + if *obj.obj.Start > 7 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowTcpCtlRstCounter.Start <= 1 but Got %d", *obj.obj.Start)) + fmt.Sprintf("0 <= PatternFlowMplsTrafficClassCounter.Start <= 7 but Got %d", *obj.obj.Start)) } } if obj.obj.Step != nil { - if *obj.obj.Step > 1 { + if *obj.obj.Step > 7 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowTcpCtlRstCounter.Step <= 1 but Got %d", *obj.obj.Step)) + fmt.Sprintf("0 <= PatternFlowMplsTrafficClassCounter.Step <= 7 but Got %d", *obj.obj.Step)) } } if obj.obj.Count != nil { - if *obj.obj.Count > 1 { + if *obj.obj.Count > 7 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowTcpCtlRstCounter.Count <= 1 but Got %d", *obj.obj.Count)) + fmt.Sprintf("0 <= PatternFlowMplsTrafficClassCounter.Count <= 7 but Got %d", *obj.obj.Count)) } } } -func (obj *patternFlowTcpCtlRstCounter) setDefault() { +func (obj *patternFlowMplsTrafficClassCounter) setDefault() { if obj.obj.Start == nil { obj.SetStart(0) } @@ -228569,29 +273320,29 @@ func (obj *patternFlowTcpCtlRstCounter) setDefault() { } -// ***** PatternFlowTcpCtlRstMetricTag ***** -type patternFlowTcpCtlRstMetricTag struct { +// ***** PatternFlowMplsTrafficClassMetricTag ***** +type patternFlowMplsTrafficClassMetricTag struct { validation - obj *otg.PatternFlowTcpCtlRstMetricTag + obj *otg.PatternFlowMplsTrafficClassMetricTag } -func NewPatternFlowTcpCtlRstMetricTag() PatternFlowTcpCtlRstMetricTag { - obj := patternFlowTcpCtlRstMetricTag{obj: &otg.PatternFlowTcpCtlRstMetricTag{}} +func NewPatternFlowMplsTrafficClassMetricTag() PatternFlowMplsTrafficClassMetricTag { + obj := patternFlowMplsTrafficClassMetricTag{obj: &otg.PatternFlowMplsTrafficClassMetricTag{}} obj.setDefault() return &obj } -func (obj *patternFlowTcpCtlRstMetricTag) Msg() *otg.PatternFlowTcpCtlRstMetricTag { +func (obj *patternFlowMplsTrafficClassMetricTag) Msg() *otg.PatternFlowMplsTrafficClassMetricTag { return obj.obj } -func (obj *patternFlowTcpCtlRstMetricTag) SetMsg(msg *otg.PatternFlowTcpCtlRstMetricTag) PatternFlowTcpCtlRstMetricTag { +func (obj *patternFlowMplsTrafficClassMetricTag) SetMsg(msg *otg.PatternFlowMplsTrafficClassMetricTag) PatternFlowMplsTrafficClassMetricTag { proto.Merge(obj.obj, msg) return obj } -func (obj *patternFlowTcpCtlRstMetricTag) ToProto() (*otg.PatternFlowTcpCtlRstMetricTag, error) { +func (obj *patternFlowMplsTrafficClassMetricTag) ToProto() (*otg.PatternFlowMplsTrafficClassMetricTag, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -228599,7 +273350,7 @@ func (obj *patternFlowTcpCtlRstMetricTag) ToProto() (*otg.PatternFlowTcpCtlRstMe return obj.Msg(), nil } -func (obj *patternFlowTcpCtlRstMetricTag) FromProto(msg *otg.PatternFlowTcpCtlRstMetricTag) (PatternFlowTcpCtlRstMetricTag, error) { +func (obj *patternFlowMplsTrafficClassMetricTag) FromProto(msg *otg.PatternFlowMplsTrafficClassMetricTag) (PatternFlowMplsTrafficClassMetricTag, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -228608,7 +273359,7 @@ func (obj *patternFlowTcpCtlRstMetricTag) FromProto(msg *otg.PatternFlowTcpCtlRs return newObj, nil } -func (obj *patternFlowTcpCtlRstMetricTag) ToPbText() (string, error) { +func (obj *patternFlowMplsTrafficClassMetricTag) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -228620,7 +273371,7 @@ func (obj *patternFlowTcpCtlRstMetricTag) ToPbText() (string, error) { return string(protoMarshal), nil } -func (obj *patternFlowTcpCtlRstMetricTag) FromPbText(value string) error { +func (obj *patternFlowMplsTrafficClassMetricTag) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj @@ -228633,7 +273384,7 @@ func (obj *patternFlowTcpCtlRstMetricTag) FromPbText(value string) error { return retObj } -func (obj *patternFlowTcpCtlRstMetricTag) ToYaml() (string, error) { +func (obj *patternFlowMplsTrafficClassMetricTag) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -228654,7 +273405,7 @@ func (obj *patternFlowTcpCtlRstMetricTag) ToYaml() (string, error) { return string(data), nil } -func (obj *patternFlowTcpCtlRstMetricTag) FromYaml(value string) error { +func (obj *patternFlowMplsTrafficClassMetricTag) FromYaml(value string) error { if value == "" { value = "{}" } @@ -228679,7 +273430,7 @@ func (obj *patternFlowTcpCtlRstMetricTag) FromYaml(value string) error { return nil } -func (obj *patternFlowTcpCtlRstMetricTag) ToJson() (string, error) { +func (obj *patternFlowMplsTrafficClassMetricTag) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -228697,7 +273448,7 @@ func (obj *patternFlowTcpCtlRstMetricTag) ToJson() (string, error) { return string(data), nil } -func (obj *patternFlowTcpCtlRstMetricTag) FromJson(value string) error { +func (obj *patternFlowMplsTrafficClassMetricTag) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -228718,19 +273469,19 @@ func (obj *patternFlowTcpCtlRstMetricTag) FromJson(value string) error { return nil } -func (obj *patternFlowTcpCtlRstMetricTag) validateToAndFrom() error { +func (obj *patternFlowMplsTrafficClassMetricTag) validateToAndFrom() error { // emptyVars() obj.validateObj(&obj.validation, true) return obj.validationResult() } -func (obj *patternFlowTcpCtlRstMetricTag) Validate() error { +func (obj *patternFlowMplsTrafficClassMetricTag) Validate() error { // emptyVars() obj.validateObj(&obj.validation, false) return obj.validationResult() } -func (obj *patternFlowTcpCtlRstMetricTag) String() string { +func (obj *patternFlowMplsTrafficClassMetricTag) String() string { str, err := obj.ToYaml() if err != nil { return err.Error() @@ -228738,12 +273489,12 @@ func (obj *patternFlowTcpCtlRstMetricTag) String() string { return str } -func (obj *patternFlowTcpCtlRstMetricTag) Clone() (PatternFlowTcpCtlRstMetricTag, error) { +func (obj *patternFlowMplsTrafficClassMetricTag) Clone() (PatternFlowMplsTrafficClassMetricTag, error) { vErr := obj.Validate() if vErr != nil { return nil, vErr } - newObj := NewPatternFlowTcpCtlRstMetricTag() + newObj := NewPatternFlowMplsTrafficClassMetricTag() data, err := proto.Marshal(obj.Msg()) if err != nil { return nil, err @@ -228755,69 +273506,69 @@ func (obj *patternFlowTcpCtlRstMetricTag) Clone() (PatternFlowTcpCtlRstMetricTag return newObj, nil } -// PatternFlowTcpCtlRstMetricTag is metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. -type PatternFlowTcpCtlRstMetricTag interface { +// PatternFlowMplsTrafficClassMetricTag is metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. +type PatternFlowMplsTrafficClassMetricTag interface { Validation - // Msg marshals PatternFlowTcpCtlRstMetricTag to protobuf object *otg.PatternFlowTcpCtlRstMetricTag + // Msg marshals PatternFlowMplsTrafficClassMetricTag to protobuf object *otg.PatternFlowMplsTrafficClassMetricTag // and doesn't set defaults - Msg() *otg.PatternFlowTcpCtlRstMetricTag - // SetMsg unmarshals PatternFlowTcpCtlRstMetricTag from protobuf object *otg.PatternFlowTcpCtlRstMetricTag + Msg() *otg.PatternFlowMplsTrafficClassMetricTag + // SetMsg unmarshals PatternFlowMplsTrafficClassMetricTag from protobuf object *otg.PatternFlowMplsTrafficClassMetricTag // and doesn't set defaults - SetMsg(*otg.PatternFlowTcpCtlRstMetricTag) PatternFlowTcpCtlRstMetricTag - // ToProto marshals PatternFlowTcpCtlRstMetricTag to protobuf object *otg.PatternFlowTcpCtlRstMetricTag - ToProto() (*otg.PatternFlowTcpCtlRstMetricTag, error) - // ToPbText marshals PatternFlowTcpCtlRstMetricTag to protobuf text + SetMsg(*otg.PatternFlowMplsTrafficClassMetricTag) PatternFlowMplsTrafficClassMetricTag + // ToProto marshals PatternFlowMplsTrafficClassMetricTag to protobuf object *otg.PatternFlowMplsTrafficClassMetricTag + ToProto() (*otg.PatternFlowMplsTrafficClassMetricTag, error) + // ToPbText marshals PatternFlowMplsTrafficClassMetricTag to protobuf text ToPbText() (string, error) - // ToYaml marshals PatternFlowTcpCtlRstMetricTag to YAML text + // ToYaml marshals PatternFlowMplsTrafficClassMetricTag to YAML text ToYaml() (string, error) - // ToJson marshals PatternFlowTcpCtlRstMetricTag to JSON text + // ToJson marshals PatternFlowMplsTrafficClassMetricTag to JSON text ToJson() (string, error) - // FromProto unmarshals PatternFlowTcpCtlRstMetricTag from protobuf object *otg.PatternFlowTcpCtlRstMetricTag - FromProto(msg *otg.PatternFlowTcpCtlRstMetricTag) (PatternFlowTcpCtlRstMetricTag, error) - // FromPbText unmarshals PatternFlowTcpCtlRstMetricTag from protobuf text + // FromProto unmarshals PatternFlowMplsTrafficClassMetricTag from protobuf object *otg.PatternFlowMplsTrafficClassMetricTag + FromProto(msg *otg.PatternFlowMplsTrafficClassMetricTag) (PatternFlowMplsTrafficClassMetricTag, error) + // FromPbText unmarshals PatternFlowMplsTrafficClassMetricTag from protobuf text FromPbText(value string) error - // FromYaml unmarshals PatternFlowTcpCtlRstMetricTag from YAML text + // FromYaml unmarshals PatternFlowMplsTrafficClassMetricTag from YAML text FromYaml(value string) error - // FromJson unmarshals PatternFlowTcpCtlRstMetricTag from JSON text + // FromJson unmarshals PatternFlowMplsTrafficClassMetricTag from JSON text FromJson(value string) error - // Validate validates PatternFlowTcpCtlRstMetricTag + // Validate validates PatternFlowMplsTrafficClassMetricTag Validate() error // A stringer function String() string // Clones the object - Clone() (PatternFlowTcpCtlRstMetricTag, error) + Clone() (PatternFlowMplsTrafficClassMetricTag, error) validateToAndFrom() error validateObj(vObj *validation, set_default bool) setDefault() - // Name returns string, set in PatternFlowTcpCtlRstMetricTag. + // Name returns string, set in PatternFlowMplsTrafficClassMetricTag. Name() string - // SetName assigns string provided by user to PatternFlowTcpCtlRstMetricTag - SetName(value string) PatternFlowTcpCtlRstMetricTag - // Offset returns uint32, set in PatternFlowTcpCtlRstMetricTag. + // SetName assigns string provided by user to PatternFlowMplsTrafficClassMetricTag + SetName(value string) PatternFlowMplsTrafficClassMetricTag + // Offset returns uint32, set in PatternFlowMplsTrafficClassMetricTag. Offset() uint32 - // SetOffset assigns uint32 provided by user to PatternFlowTcpCtlRstMetricTag - SetOffset(value uint32) PatternFlowTcpCtlRstMetricTag - // HasOffset checks if Offset has been set in PatternFlowTcpCtlRstMetricTag + // SetOffset assigns uint32 provided by user to PatternFlowMplsTrafficClassMetricTag + SetOffset(value uint32) PatternFlowMplsTrafficClassMetricTag + // HasOffset checks if Offset has been set in PatternFlowMplsTrafficClassMetricTag HasOffset() bool - // Length returns uint32, set in PatternFlowTcpCtlRstMetricTag. + // Length returns uint32, set in PatternFlowMplsTrafficClassMetricTag. Length() uint32 - // SetLength assigns uint32 provided by user to PatternFlowTcpCtlRstMetricTag - SetLength(value uint32) PatternFlowTcpCtlRstMetricTag - // HasLength checks if Length has been set in PatternFlowTcpCtlRstMetricTag + // SetLength assigns uint32 provided by user to PatternFlowMplsTrafficClassMetricTag + SetLength(value uint32) PatternFlowMplsTrafficClassMetricTag + // HasLength checks if Length has been set in PatternFlowMplsTrafficClassMetricTag HasLength() bool } // Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field // Name returns a string -func (obj *patternFlowTcpCtlRstMetricTag) Name() string { +func (obj *patternFlowMplsTrafficClassMetricTag) Name() string { return *obj.obj.Name } // Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field -// SetName sets the string value in the PatternFlowTcpCtlRstMetricTag object -func (obj *patternFlowTcpCtlRstMetricTag) SetName(value string) PatternFlowTcpCtlRstMetricTag { +// SetName sets the string value in the PatternFlowMplsTrafficClassMetricTag object +func (obj *patternFlowMplsTrafficClassMetricTag) SetName(value string) PatternFlowMplsTrafficClassMetricTag { obj.obj.Name = &value return obj @@ -228825,7 +273576,7 @@ func (obj *patternFlowTcpCtlRstMetricTag) SetName(value string) PatternFlowTcpCt // Offset in bits relative to start of corresponding header field // Offset returns a uint32 -func (obj *patternFlowTcpCtlRstMetricTag) Offset() uint32 { +func (obj *patternFlowMplsTrafficClassMetricTag) Offset() uint32 { return *obj.obj.Offset @@ -228833,13 +273584,13 @@ func (obj *patternFlowTcpCtlRstMetricTag) Offset() uint32 { // Offset in bits relative to start of corresponding header field // Offset returns a uint32 -func (obj *patternFlowTcpCtlRstMetricTag) HasOffset() bool { +func (obj *patternFlowMplsTrafficClassMetricTag) HasOffset() bool { return obj.obj.Offset != nil } // Offset in bits relative to start of corresponding header field -// SetOffset sets the uint32 value in the PatternFlowTcpCtlRstMetricTag object -func (obj *patternFlowTcpCtlRstMetricTag) SetOffset(value uint32) PatternFlowTcpCtlRstMetricTag { +// SetOffset sets the uint32 value in the PatternFlowMplsTrafficClassMetricTag object +func (obj *patternFlowMplsTrafficClassMetricTag) SetOffset(value uint32) PatternFlowMplsTrafficClassMetricTag { obj.obj.Offset = &value return obj @@ -228847,7 +273598,7 @@ func (obj *patternFlowTcpCtlRstMetricTag) SetOffset(value uint32) PatternFlowTcp // Number of bits to track for metrics starting from configured offset of corresponding header field // Length returns a uint32 -func (obj *patternFlowTcpCtlRstMetricTag) Length() uint32 { +func (obj *patternFlowMplsTrafficClassMetricTag) Length() uint32 { return *obj.obj.Length @@ -228855,83 +273606,83 @@ func (obj *patternFlowTcpCtlRstMetricTag) Length() uint32 { // Number of bits to track for metrics starting from configured offset of corresponding header field // Length returns a uint32 -func (obj *patternFlowTcpCtlRstMetricTag) HasLength() bool { +func (obj *patternFlowMplsTrafficClassMetricTag) HasLength() bool { return obj.obj.Length != nil } // Number of bits to track for metrics starting from configured offset of corresponding header field -// SetLength sets the uint32 value in the PatternFlowTcpCtlRstMetricTag object -func (obj *patternFlowTcpCtlRstMetricTag) SetLength(value uint32) PatternFlowTcpCtlRstMetricTag { +// SetLength sets the uint32 value in the PatternFlowMplsTrafficClassMetricTag object +func (obj *patternFlowMplsTrafficClassMetricTag) SetLength(value uint32) PatternFlowMplsTrafficClassMetricTag { obj.obj.Length = &value return obj } -func (obj *patternFlowTcpCtlRstMetricTag) validateObj(vObj *validation, set_default bool) { +func (obj *patternFlowMplsTrafficClassMetricTag) validateObj(vObj *validation, set_default bool) { if set_default { obj.setDefault() } // Name is required if obj.obj.Name == nil { - vObj.validationErrors = append(vObj.validationErrors, "Name is required field on interface PatternFlowTcpCtlRstMetricTag") + vObj.validationErrors = append(vObj.validationErrors, "Name is required field on interface PatternFlowMplsTrafficClassMetricTag") } if obj.obj.Offset != nil { - if *obj.obj.Offset > 0 { + if *obj.obj.Offset > 2 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowTcpCtlRstMetricTag.Offset <= 0 but Got %d", *obj.obj.Offset)) + fmt.Sprintf("0 <= PatternFlowMplsTrafficClassMetricTag.Offset <= 2 but Got %d", *obj.obj.Offset)) } } if obj.obj.Length != nil { - if *obj.obj.Length < 1 || *obj.obj.Length > 1 { + if *obj.obj.Length < 1 || *obj.obj.Length > 3 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("1 <= PatternFlowTcpCtlRstMetricTag.Length <= 1 but Got %d", *obj.obj.Length)) + fmt.Sprintf("1 <= PatternFlowMplsTrafficClassMetricTag.Length <= 3 but Got %d", *obj.obj.Length)) } } } -func (obj *patternFlowTcpCtlRstMetricTag) setDefault() { +func (obj *patternFlowMplsTrafficClassMetricTag) setDefault() { if obj.obj.Offset == nil { obj.SetOffset(0) } if obj.obj.Length == nil { - obj.SetLength(1) + obj.SetLength(3) } } -// ***** PatternFlowTcpCtlSynCounter ***** -type patternFlowTcpCtlSynCounter struct { +// ***** PatternFlowMplsBottomOfStackCounter ***** +type patternFlowMplsBottomOfStackCounter struct { validation - obj *otg.PatternFlowTcpCtlSynCounter + obj *otg.PatternFlowMplsBottomOfStackCounter } -func NewPatternFlowTcpCtlSynCounter() PatternFlowTcpCtlSynCounter { - obj := patternFlowTcpCtlSynCounter{obj: &otg.PatternFlowTcpCtlSynCounter{}} +func NewPatternFlowMplsBottomOfStackCounter() PatternFlowMplsBottomOfStackCounter { + obj := patternFlowMplsBottomOfStackCounter{obj: &otg.PatternFlowMplsBottomOfStackCounter{}} obj.setDefault() return &obj } -func (obj *patternFlowTcpCtlSynCounter) Msg() *otg.PatternFlowTcpCtlSynCounter { +func (obj *patternFlowMplsBottomOfStackCounter) Msg() *otg.PatternFlowMplsBottomOfStackCounter { return obj.obj } -func (obj *patternFlowTcpCtlSynCounter) SetMsg(msg *otg.PatternFlowTcpCtlSynCounter) PatternFlowTcpCtlSynCounter { +func (obj *patternFlowMplsBottomOfStackCounter) SetMsg(msg *otg.PatternFlowMplsBottomOfStackCounter) PatternFlowMplsBottomOfStackCounter { proto.Merge(obj.obj, msg) return obj } -func (obj *patternFlowTcpCtlSynCounter) ToProto() (*otg.PatternFlowTcpCtlSynCounter, error) { +func (obj *patternFlowMplsBottomOfStackCounter) ToProto() (*otg.PatternFlowMplsBottomOfStackCounter, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -228939,7 +273690,7 @@ func (obj *patternFlowTcpCtlSynCounter) ToProto() (*otg.PatternFlowTcpCtlSynCoun return obj.Msg(), nil } -func (obj *patternFlowTcpCtlSynCounter) FromProto(msg *otg.PatternFlowTcpCtlSynCounter) (PatternFlowTcpCtlSynCounter, error) { +func (obj *patternFlowMplsBottomOfStackCounter) FromProto(msg *otg.PatternFlowMplsBottomOfStackCounter) (PatternFlowMplsBottomOfStackCounter, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -228948,7 +273699,7 @@ func (obj *patternFlowTcpCtlSynCounter) FromProto(msg *otg.PatternFlowTcpCtlSynC return newObj, nil } -func (obj *patternFlowTcpCtlSynCounter) ToPbText() (string, error) { +func (obj *patternFlowMplsBottomOfStackCounter) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -228960,7 +273711,7 @@ func (obj *patternFlowTcpCtlSynCounter) ToPbText() (string, error) { return string(protoMarshal), nil } -func (obj *patternFlowTcpCtlSynCounter) FromPbText(value string) error { +func (obj *patternFlowMplsBottomOfStackCounter) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj @@ -228973,7 +273724,7 @@ func (obj *patternFlowTcpCtlSynCounter) FromPbText(value string) error { return retObj } -func (obj *patternFlowTcpCtlSynCounter) ToYaml() (string, error) { +func (obj *patternFlowMplsBottomOfStackCounter) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -228994,7 +273745,7 @@ func (obj *patternFlowTcpCtlSynCounter) ToYaml() (string, error) { return string(data), nil } -func (obj *patternFlowTcpCtlSynCounter) FromYaml(value string) error { +func (obj *patternFlowMplsBottomOfStackCounter) FromYaml(value string) error { if value == "" { value = "{}" } @@ -229019,7 +273770,7 @@ func (obj *patternFlowTcpCtlSynCounter) FromYaml(value string) error { return nil } -func (obj *patternFlowTcpCtlSynCounter) ToJson() (string, error) { +func (obj *patternFlowMplsBottomOfStackCounter) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -229037,7 +273788,7 @@ func (obj *patternFlowTcpCtlSynCounter) ToJson() (string, error) { return string(data), nil } -func (obj *patternFlowTcpCtlSynCounter) FromJson(value string) error { +func (obj *patternFlowMplsBottomOfStackCounter) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -229058,19 +273809,19 @@ func (obj *patternFlowTcpCtlSynCounter) FromJson(value string) error { return nil } -func (obj *patternFlowTcpCtlSynCounter) validateToAndFrom() error { +func (obj *patternFlowMplsBottomOfStackCounter) validateToAndFrom() error { // emptyVars() obj.validateObj(&obj.validation, true) return obj.validationResult() } -func (obj *patternFlowTcpCtlSynCounter) Validate() error { +func (obj *patternFlowMplsBottomOfStackCounter) Validate() error { // emptyVars() obj.validateObj(&obj.validation, false) return obj.validationResult() } -func (obj *patternFlowTcpCtlSynCounter) String() string { +func (obj *patternFlowMplsBottomOfStackCounter) String() string { str, err := obj.ToYaml() if err != nil { return err.Error() @@ -229078,12 +273829,12 @@ func (obj *patternFlowTcpCtlSynCounter) String() string { return str } -func (obj *patternFlowTcpCtlSynCounter) Clone() (PatternFlowTcpCtlSynCounter, error) { +func (obj *patternFlowMplsBottomOfStackCounter) Clone() (PatternFlowMplsBottomOfStackCounter, error) { vErr := obj.Validate() if vErr != nil { return nil, vErr } - newObj := NewPatternFlowTcpCtlSynCounter() + newObj := NewPatternFlowMplsBottomOfStackCounter() data, err := proto.Marshal(obj.Msg()) if err != nil { return nil, err @@ -229095,63 +273846,63 @@ func (obj *patternFlowTcpCtlSynCounter) Clone() (PatternFlowTcpCtlSynCounter, er return newObj, nil } -// PatternFlowTcpCtlSynCounter is integer counter pattern -type PatternFlowTcpCtlSynCounter interface { +// PatternFlowMplsBottomOfStackCounter is integer counter pattern +type PatternFlowMplsBottomOfStackCounter interface { Validation - // Msg marshals PatternFlowTcpCtlSynCounter to protobuf object *otg.PatternFlowTcpCtlSynCounter + // Msg marshals PatternFlowMplsBottomOfStackCounter to protobuf object *otg.PatternFlowMplsBottomOfStackCounter // and doesn't set defaults - Msg() *otg.PatternFlowTcpCtlSynCounter - // SetMsg unmarshals PatternFlowTcpCtlSynCounter from protobuf object *otg.PatternFlowTcpCtlSynCounter + Msg() *otg.PatternFlowMplsBottomOfStackCounter + // SetMsg unmarshals PatternFlowMplsBottomOfStackCounter from protobuf object *otg.PatternFlowMplsBottomOfStackCounter // and doesn't set defaults - SetMsg(*otg.PatternFlowTcpCtlSynCounter) PatternFlowTcpCtlSynCounter - // ToProto marshals PatternFlowTcpCtlSynCounter to protobuf object *otg.PatternFlowTcpCtlSynCounter - ToProto() (*otg.PatternFlowTcpCtlSynCounter, error) - // ToPbText marshals PatternFlowTcpCtlSynCounter to protobuf text + SetMsg(*otg.PatternFlowMplsBottomOfStackCounter) PatternFlowMplsBottomOfStackCounter + // ToProto marshals PatternFlowMplsBottomOfStackCounter to protobuf object *otg.PatternFlowMplsBottomOfStackCounter + ToProto() (*otg.PatternFlowMplsBottomOfStackCounter, error) + // ToPbText marshals PatternFlowMplsBottomOfStackCounter to protobuf text ToPbText() (string, error) - // ToYaml marshals PatternFlowTcpCtlSynCounter to YAML text + // ToYaml marshals PatternFlowMplsBottomOfStackCounter to YAML text ToYaml() (string, error) - // ToJson marshals PatternFlowTcpCtlSynCounter to JSON text + // ToJson marshals PatternFlowMplsBottomOfStackCounter to JSON text ToJson() (string, error) - // FromProto unmarshals PatternFlowTcpCtlSynCounter from protobuf object *otg.PatternFlowTcpCtlSynCounter - FromProto(msg *otg.PatternFlowTcpCtlSynCounter) (PatternFlowTcpCtlSynCounter, error) - // FromPbText unmarshals PatternFlowTcpCtlSynCounter from protobuf text + // FromProto unmarshals PatternFlowMplsBottomOfStackCounter from protobuf object *otg.PatternFlowMplsBottomOfStackCounter + FromProto(msg *otg.PatternFlowMplsBottomOfStackCounter) (PatternFlowMplsBottomOfStackCounter, error) + // FromPbText unmarshals PatternFlowMplsBottomOfStackCounter from protobuf text FromPbText(value string) error - // FromYaml unmarshals PatternFlowTcpCtlSynCounter from YAML text + // FromYaml unmarshals PatternFlowMplsBottomOfStackCounter from YAML text FromYaml(value string) error - // FromJson unmarshals PatternFlowTcpCtlSynCounter from JSON text + // FromJson unmarshals PatternFlowMplsBottomOfStackCounter from JSON text FromJson(value string) error - // Validate validates PatternFlowTcpCtlSynCounter + // Validate validates PatternFlowMplsBottomOfStackCounter Validate() error // A stringer function String() string // Clones the object - Clone() (PatternFlowTcpCtlSynCounter, error) + Clone() (PatternFlowMplsBottomOfStackCounter, error) validateToAndFrom() error validateObj(vObj *validation, set_default bool) setDefault() - // Start returns uint32, set in PatternFlowTcpCtlSynCounter. + // Start returns uint32, set in PatternFlowMplsBottomOfStackCounter. Start() uint32 - // SetStart assigns uint32 provided by user to PatternFlowTcpCtlSynCounter - SetStart(value uint32) PatternFlowTcpCtlSynCounter - // HasStart checks if Start has been set in PatternFlowTcpCtlSynCounter + // SetStart assigns uint32 provided by user to PatternFlowMplsBottomOfStackCounter + SetStart(value uint32) PatternFlowMplsBottomOfStackCounter + // HasStart checks if Start has been set in PatternFlowMplsBottomOfStackCounter HasStart() bool - // Step returns uint32, set in PatternFlowTcpCtlSynCounter. + // Step returns uint32, set in PatternFlowMplsBottomOfStackCounter. Step() uint32 - // SetStep assigns uint32 provided by user to PatternFlowTcpCtlSynCounter - SetStep(value uint32) PatternFlowTcpCtlSynCounter - // HasStep checks if Step has been set in PatternFlowTcpCtlSynCounter + // SetStep assigns uint32 provided by user to PatternFlowMplsBottomOfStackCounter + SetStep(value uint32) PatternFlowMplsBottomOfStackCounter + // HasStep checks if Step has been set in PatternFlowMplsBottomOfStackCounter HasStep() bool - // Count returns uint32, set in PatternFlowTcpCtlSynCounter. + // Count returns uint32, set in PatternFlowMplsBottomOfStackCounter. Count() uint32 - // SetCount assigns uint32 provided by user to PatternFlowTcpCtlSynCounter - SetCount(value uint32) PatternFlowTcpCtlSynCounter - // HasCount checks if Count has been set in PatternFlowTcpCtlSynCounter + // SetCount assigns uint32 provided by user to PatternFlowMplsBottomOfStackCounter + SetCount(value uint32) PatternFlowMplsBottomOfStackCounter + // HasCount checks if Count has been set in PatternFlowMplsBottomOfStackCounter HasCount() bool } // description is TBD // Start returns a uint32 -func (obj *patternFlowTcpCtlSynCounter) Start() uint32 { +func (obj *patternFlowMplsBottomOfStackCounter) Start() uint32 { return *obj.obj.Start @@ -229159,13 +273910,13 @@ func (obj *patternFlowTcpCtlSynCounter) Start() uint32 { // description is TBD // Start returns a uint32 -func (obj *patternFlowTcpCtlSynCounter) HasStart() bool { +func (obj *patternFlowMplsBottomOfStackCounter) HasStart() bool { return obj.obj.Start != nil } // description is TBD -// SetStart sets the uint32 value in the PatternFlowTcpCtlSynCounter object -func (obj *patternFlowTcpCtlSynCounter) SetStart(value uint32) PatternFlowTcpCtlSynCounter { +// SetStart sets the uint32 value in the PatternFlowMplsBottomOfStackCounter object +func (obj *patternFlowMplsBottomOfStackCounter) SetStart(value uint32) PatternFlowMplsBottomOfStackCounter { obj.obj.Start = &value return obj @@ -229173,7 +273924,7 @@ func (obj *patternFlowTcpCtlSynCounter) SetStart(value uint32) PatternFlowTcpCtl // description is TBD // Step returns a uint32 -func (obj *patternFlowTcpCtlSynCounter) Step() uint32 { +func (obj *patternFlowMplsBottomOfStackCounter) Step() uint32 { return *obj.obj.Step @@ -229181,13 +273932,13 @@ func (obj *patternFlowTcpCtlSynCounter) Step() uint32 { // description is TBD // Step returns a uint32 -func (obj *patternFlowTcpCtlSynCounter) HasStep() bool { +func (obj *patternFlowMplsBottomOfStackCounter) HasStep() bool { return obj.obj.Step != nil } // description is TBD -// SetStep sets the uint32 value in the PatternFlowTcpCtlSynCounter object -func (obj *patternFlowTcpCtlSynCounter) SetStep(value uint32) PatternFlowTcpCtlSynCounter { +// SetStep sets the uint32 value in the PatternFlowMplsBottomOfStackCounter object +func (obj *patternFlowMplsBottomOfStackCounter) SetStep(value uint32) PatternFlowMplsBottomOfStackCounter { obj.obj.Step = &value return obj @@ -229195,7 +273946,7 @@ func (obj *patternFlowTcpCtlSynCounter) SetStep(value uint32) PatternFlowTcpCtlS // description is TBD // Count returns a uint32 -func (obj *patternFlowTcpCtlSynCounter) Count() uint32 { +func (obj *patternFlowMplsBottomOfStackCounter) Count() uint32 { return *obj.obj.Count @@ -229203,19 +273954,19 @@ func (obj *patternFlowTcpCtlSynCounter) Count() uint32 { // description is TBD // Count returns a uint32 -func (obj *patternFlowTcpCtlSynCounter) HasCount() bool { +func (obj *patternFlowMplsBottomOfStackCounter) HasCount() bool { return obj.obj.Count != nil } // description is TBD -// SetCount sets the uint32 value in the PatternFlowTcpCtlSynCounter object -func (obj *patternFlowTcpCtlSynCounter) SetCount(value uint32) PatternFlowTcpCtlSynCounter { +// SetCount sets the uint32 value in the PatternFlowMplsBottomOfStackCounter object +func (obj *patternFlowMplsBottomOfStackCounter) SetCount(value uint32) PatternFlowMplsBottomOfStackCounter { obj.obj.Count = &value return obj } -func (obj *patternFlowTcpCtlSynCounter) validateObj(vObj *validation, set_default bool) { +func (obj *patternFlowMplsBottomOfStackCounter) validateObj(vObj *validation, set_default bool) { if set_default { obj.setDefault() } @@ -229225,7 +273976,7 @@ func (obj *patternFlowTcpCtlSynCounter) validateObj(vObj *validation, set_defaul if *obj.obj.Start > 1 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowTcpCtlSynCounter.Start <= 1 but Got %d", *obj.obj.Start)) + fmt.Sprintf("0 <= PatternFlowMplsBottomOfStackCounter.Start <= 1 but Got %d", *obj.obj.Start)) } } @@ -229235,7 +273986,7 @@ func (obj *patternFlowTcpCtlSynCounter) validateObj(vObj *validation, set_defaul if *obj.obj.Step > 1 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowTcpCtlSynCounter.Step <= 1 but Got %d", *obj.obj.Step)) + fmt.Sprintf("0 <= PatternFlowMplsBottomOfStackCounter.Step <= 1 but Got %d", *obj.obj.Step)) } } @@ -229245,16 +273996,16 @@ func (obj *patternFlowTcpCtlSynCounter) validateObj(vObj *validation, set_defaul if *obj.obj.Count > 1 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowTcpCtlSynCounter.Count <= 1 but Got %d", *obj.obj.Count)) + fmt.Sprintf("0 <= PatternFlowMplsBottomOfStackCounter.Count <= 1 but Got %d", *obj.obj.Count)) } } } -func (obj *patternFlowTcpCtlSynCounter) setDefault() { +func (obj *patternFlowMplsBottomOfStackCounter) setDefault() { if obj.obj.Start == nil { - obj.SetStart(0) + obj.SetStart(1) } if obj.obj.Step == nil { obj.SetStep(1) @@ -229265,29 +274016,29 @@ func (obj *patternFlowTcpCtlSynCounter) setDefault() { } -// ***** PatternFlowTcpCtlSynMetricTag ***** -type patternFlowTcpCtlSynMetricTag struct { +// ***** PatternFlowMplsBottomOfStackMetricTag ***** +type patternFlowMplsBottomOfStackMetricTag struct { validation - obj *otg.PatternFlowTcpCtlSynMetricTag + obj *otg.PatternFlowMplsBottomOfStackMetricTag } -func NewPatternFlowTcpCtlSynMetricTag() PatternFlowTcpCtlSynMetricTag { - obj := patternFlowTcpCtlSynMetricTag{obj: &otg.PatternFlowTcpCtlSynMetricTag{}} +func NewPatternFlowMplsBottomOfStackMetricTag() PatternFlowMplsBottomOfStackMetricTag { + obj := patternFlowMplsBottomOfStackMetricTag{obj: &otg.PatternFlowMplsBottomOfStackMetricTag{}} obj.setDefault() return &obj } -func (obj *patternFlowTcpCtlSynMetricTag) Msg() *otg.PatternFlowTcpCtlSynMetricTag { +func (obj *patternFlowMplsBottomOfStackMetricTag) Msg() *otg.PatternFlowMplsBottomOfStackMetricTag { return obj.obj } -func (obj *patternFlowTcpCtlSynMetricTag) SetMsg(msg *otg.PatternFlowTcpCtlSynMetricTag) PatternFlowTcpCtlSynMetricTag { +func (obj *patternFlowMplsBottomOfStackMetricTag) SetMsg(msg *otg.PatternFlowMplsBottomOfStackMetricTag) PatternFlowMplsBottomOfStackMetricTag { proto.Merge(obj.obj, msg) return obj } -func (obj *patternFlowTcpCtlSynMetricTag) ToProto() (*otg.PatternFlowTcpCtlSynMetricTag, error) { +func (obj *patternFlowMplsBottomOfStackMetricTag) ToProto() (*otg.PatternFlowMplsBottomOfStackMetricTag, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -229295,7 +274046,7 @@ func (obj *patternFlowTcpCtlSynMetricTag) ToProto() (*otg.PatternFlowTcpCtlSynMe return obj.Msg(), nil } -func (obj *patternFlowTcpCtlSynMetricTag) FromProto(msg *otg.PatternFlowTcpCtlSynMetricTag) (PatternFlowTcpCtlSynMetricTag, error) { +func (obj *patternFlowMplsBottomOfStackMetricTag) FromProto(msg *otg.PatternFlowMplsBottomOfStackMetricTag) (PatternFlowMplsBottomOfStackMetricTag, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -229304,7 +274055,7 @@ func (obj *patternFlowTcpCtlSynMetricTag) FromProto(msg *otg.PatternFlowTcpCtlSy return newObj, nil } -func (obj *patternFlowTcpCtlSynMetricTag) ToPbText() (string, error) { +func (obj *patternFlowMplsBottomOfStackMetricTag) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -229316,7 +274067,7 @@ func (obj *patternFlowTcpCtlSynMetricTag) ToPbText() (string, error) { return string(protoMarshal), nil } -func (obj *patternFlowTcpCtlSynMetricTag) FromPbText(value string) error { +func (obj *patternFlowMplsBottomOfStackMetricTag) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj @@ -229329,7 +274080,7 @@ func (obj *patternFlowTcpCtlSynMetricTag) FromPbText(value string) error { return retObj } -func (obj *patternFlowTcpCtlSynMetricTag) ToYaml() (string, error) { +func (obj *patternFlowMplsBottomOfStackMetricTag) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -229350,7 +274101,7 @@ func (obj *patternFlowTcpCtlSynMetricTag) ToYaml() (string, error) { return string(data), nil } -func (obj *patternFlowTcpCtlSynMetricTag) FromYaml(value string) error { +func (obj *patternFlowMplsBottomOfStackMetricTag) FromYaml(value string) error { if value == "" { value = "{}" } @@ -229375,7 +274126,7 @@ func (obj *patternFlowTcpCtlSynMetricTag) FromYaml(value string) error { return nil } -func (obj *patternFlowTcpCtlSynMetricTag) ToJson() (string, error) { +func (obj *patternFlowMplsBottomOfStackMetricTag) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -229393,7 +274144,7 @@ func (obj *patternFlowTcpCtlSynMetricTag) ToJson() (string, error) { return string(data), nil } -func (obj *patternFlowTcpCtlSynMetricTag) FromJson(value string) error { +func (obj *patternFlowMplsBottomOfStackMetricTag) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -229414,19 +274165,19 @@ func (obj *patternFlowTcpCtlSynMetricTag) FromJson(value string) error { return nil } -func (obj *patternFlowTcpCtlSynMetricTag) validateToAndFrom() error { +func (obj *patternFlowMplsBottomOfStackMetricTag) validateToAndFrom() error { // emptyVars() obj.validateObj(&obj.validation, true) return obj.validationResult() } -func (obj *patternFlowTcpCtlSynMetricTag) Validate() error { +func (obj *patternFlowMplsBottomOfStackMetricTag) Validate() error { // emptyVars() obj.validateObj(&obj.validation, false) return obj.validationResult() } -func (obj *patternFlowTcpCtlSynMetricTag) String() string { +func (obj *patternFlowMplsBottomOfStackMetricTag) String() string { str, err := obj.ToYaml() if err != nil { return err.Error() @@ -229434,12 +274185,12 @@ func (obj *patternFlowTcpCtlSynMetricTag) String() string { return str } -func (obj *patternFlowTcpCtlSynMetricTag) Clone() (PatternFlowTcpCtlSynMetricTag, error) { +func (obj *patternFlowMplsBottomOfStackMetricTag) Clone() (PatternFlowMplsBottomOfStackMetricTag, error) { vErr := obj.Validate() if vErr != nil { return nil, vErr } - newObj := NewPatternFlowTcpCtlSynMetricTag() + newObj := NewPatternFlowMplsBottomOfStackMetricTag() data, err := proto.Marshal(obj.Msg()) if err != nil { return nil, err @@ -229451,69 +274202,69 @@ func (obj *patternFlowTcpCtlSynMetricTag) Clone() (PatternFlowTcpCtlSynMetricTag return newObj, nil } -// PatternFlowTcpCtlSynMetricTag is metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. -type PatternFlowTcpCtlSynMetricTag interface { +// PatternFlowMplsBottomOfStackMetricTag is metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. +type PatternFlowMplsBottomOfStackMetricTag interface { Validation - // Msg marshals PatternFlowTcpCtlSynMetricTag to protobuf object *otg.PatternFlowTcpCtlSynMetricTag + // Msg marshals PatternFlowMplsBottomOfStackMetricTag to protobuf object *otg.PatternFlowMplsBottomOfStackMetricTag // and doesn't set defaults - Msg() *otg.PatternFlowTcpCtlSynMetricTag - // SetMsg unmarshals PatternFlowTcpCtlSynMetricTag from protobuf object *otg.PatternFlowTcpCtlSynMetricTag + Msg() *otg.PatternFlowMplsBottomOfStackMetricTag + // SetMsg unmarshals PatternFlowMplsBottomOfStackMetricTag from protobuf object *otg.PatternFlowMplsBottomOfStackMetricTag // and doesn't set defaults - SetMsg(*otg.PatternFlowTcpCtlSynMetricTag) PatternFlowTcpCtlSynMetricTag - // ToProto marshals PatternFlowTcpCtlSynMetricTag to protobuf object *otg.PatternFlowTcpCtlSynMetricTag - ToProto() (*otg.PatternFlowTcpCtlSynMetricTag, error) - // ToPbText marshals PatternFlowTcpCtlSynMetricTag to protobuf text + SetMsg(*otg.PatternFlowMplsBottomOfStackMetricTag) PatternFlowMplsBottomOfStackMetricTag + // ToProto marshals PatternFlowMplsBottomOfStackMetricTag to protobuf object *otg.PatternFlowMplsBottomOfStackMetricTag + ToProto() (*otg.PatternFlowMplsBottomOfStackMetricTag, error) + // ToPbText marshals PatternFlowMplsBottomOfStackMetricTag to protobuf text ToPbText() (string, error) - // ToYaml marshals PatternFlowTcpCtlSynMetricTag to YAML text + // ToYaml marshals PatternFlowMplsBottomOfStackMetricTag to YAML text ToYaml() (string, error) - // ToJson marshals PatternFlowTcpCtlSynMetricTag to JSON text + // ToJson marshals PatternFlowMplsBottomOfStackMetricTag to JSON text ToJson() (string, error) - // FromProto unmarshals PatternFlowTcpCtlSynMetricTag from protobuf object *otg.PatternFlowTcpCtlSynMetricTag - FromProto(msg *otg.PatternFlowTcpCtlSynMetricTag) (PatternFlowTcpCtlSynMetricTag, error) - // FromPbText unmarshals PatternFlowTcpCtlSynMetricTag from protobuf text + // FromProto unmarshals PatternFlowMplsBottomOfStackMetricTag from protobuf object *otg.PatternFlowMplsBottomOfStackMetricTag + FromProto(msg *otg.PatternFlowMplsBottomOfStackMetricTag) (PatternFlowMplsBottomOfStackMetricTag, error) + // FromPbText unmarshals PatternFlowMplsBottomOfStackMetricTag from protobuf text FromPbText(value string) error - // FromYaml unmarshals PatternFlowTcpCtlSynMetricTag from YAML text + // FromYaml unmarshals PatternFlowMplsBottomOfStackMetricTag from YAML text FromYaml(value string) error - // FromJson unmarshals PatternFlowTcpCtlSynMetricTag from JSON text + // FromJson unmarshals PatternFlowMplsBottomOfStackMetricTag from JSON text FromJson(value string) error - // Validate validates PatternFlowTcpCtlSynMetricTag + // Validate validates PatternFlowMplsBottomOfStackMetricTag Validate() error // A stringer function String() string // Clones the object - Clone() (PatternFlowTcpCtlSynMetricTag, error) + Clone() (PatternFlowMplsBottomOfStackMetricTag, error) validateToAndFrom() error validateObj(vObj *validation, set_default bool) setDefault() - // Name returns string, set in PatternFlowTcpCtlSynMetricTag. + // Name returns string, set in PatternFlowMplsBottomOfStackMetricTag. Name() string - // SetName assigns string provided by user to PatternFlowTcpCtlSynMetricTag - SetName(value string) PatternFlowTcpCtlSynMetricTag - // Offset returns uint32, set in PatternFlowTcpCtlSynMetricTag. + // SetName assigns string provided by user to PatternFlowMplsBottomOfStackMetricTag + SetName(value string) PatternFlowMplsBottomOfStackMetricTag + // Offset returns uint32, set in PatternFlowMplsBottomOfStackMetricTag. Offset() uint32 - // SetOffset assigns uint32 provided by user to PatternFlowTcpCtlSynMetricTag - SetOffset(value uint32) PatternFlowTcpCtlSynMetricTag - // HasOffset checks if Offset has been set in PatternFlowTcpCtlSynMetricTag + // SetOffset assigns uint32 provided by user to PatternFlowMplsBottomOfStackMetricTag + SetOffset(value uint32) PatternFlowMplsBottomOfStackMetricTag + // HasOffset checks if Offset has been set in PatternFlowMplsBottomOfStackMetricTag HasOffset() bool - // Length returns uint32, set in PatternFlowTcpCtlSynMetricTag. + // Length returns uint32, set in PatternFlowMplsBottomOfStackMetricTag. Length() uint32 - // SetLength assigns uint32 provided by user to PatternFlowTcpCtlSynMetricTag - SetLength(value uint32) PatternFlowTcpCtlSynMetricTag - // HasLength checks if Length has been set in PatternFlowTcpCtlSynMetricTag + // SetLength assigns uint32 provided by user to PatternFlowMplsBottomOfStackMetricTag + SetLength(value uint32) PatternFlowMplsBottomOfStackMetricTag + // HasLength checks if Length has been set in PatternFlowMplsBottomOfStackMetricTag HasLength() bool } // Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field // Name returns a string -func (obj *patternFlowTcpCtlSynMetricTag) Name() string { +func (obj *patternFlowMplsBottomOfStackMetricTag) Name() string { return *obj.obj.Name } // Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field -// SetName sets the string value in the PatternFlowTcpCtlSynMetricTag object -func (obj *patternFlowTcpCtlSynMetricTag) SetName(value string) PatternFlowTcpCtlSynMetricTag { +// SetName sets the string value in the PatternFlowMplsBottomOfStackMetricTag object +func (obj *patternFlowMplsBottomOfStackMetricTag) SetName(value string) PatternFlowMplsBottomOfStackMetricTag { obj.obj.Name = &value return obj @@ -229521,7 +274272,7 @@ func (obj *patternFlowTcpCtlSynMetricTag) SetName(value string) PatternFlowTcpCt // Offset in bits relative to start of corresponding header field // Offset returns a uint32 -func (obj *patternFlowTcpCtlSynMetricTag) Offset() uint32 { +func (obj *patternFlowMplsBottomOfStackMetricTag) Offset() uint32 { return *obj.obj.Offset @@ -229529,13 +274280,13 @@ func (obj *patternFlowTcpCtlSynMetricTag) Offset() uint32 { // Offset in bits relative to start of corresponding header field // Offset returns a uint32 -func (obj *patternFlowTcpCtlSynMetricTag) HasOffset() bool { +func (obj *patternFlowMplsBottomOfStackMetricTag) HasOffset() bool { return obj.obj.Offset != nil } // Offset in bits relative to start of corresponding header field -// SetOffset sets the uint32 value in the PatternFlowTcpCtlSynMetricTag object -func (obj *patternFlowTcpCtlSynMetricTag) SetOffset(value uint32) PatternFlowTcpCtlSynMetricTag { +// SetOffset sets the uint32 value in the PatternFlowMplsBottomOfStackMetricTag object +func (obj *patternFlowMplsBottomOfStackMetricTag) SetOffset(value uint32) PatternFlowMplsBottomOfStackMetricTag { obj.obj.Offset = &value return obj @@ -229543,7 +274294,7 @@ func (obj *patternFlowTcpCtlSynMetricTag) SetOffset(value uint32) PatternFlowTcp // Number of bits to track for metrics starting from configured offset of corresponding header field // Length returns a uint32 -func (obj *patternFlowTcpCtlSynMetricTag) Length() uint32 { +func (obj *patternFlowMplsBottomOfStackMetricTag) Length() uint32 { return *obj.obj.Length @@ -229551,26 +274302,26 @@ func (obj *patternFlowTcpCtlSynMetricTag) Length() uint32 { // Number of bits to track for metrics starting from configured offset of corresponding header field // Length returns a uint32 -func (obj *patternFlowTcpCtlSynMetricTag) HasLength() bool { +func (obj *patternFlowMplsBottomOfStackMetricTag) HasLength() bool { return obj.obj.Length != nil } // Number of bits to track for metrics starting from configured offset of corresponding header field -// SetLength sets the uint32 value in the PatternFlowTcpCtlSynMetricTag object -func (obj *patternFlowTcpCtlSynMetricTag) SetLength(value uint32) PatternFlowTcpCtlSynMetricTag { +// SetLength sets the uint32 value in the PatternFlowMplsBottomOfStackMetricTag object +func (obj *patternFlowMplsBottomOfStackMetricTag) SetLength(value uint32) PatternFlowMplsBottomOfStackMetricTag { obj.obj.Length = &value return obj } -func (obj *patternFlowTcpCtlSynMetricTag) validateObj(vObj *validation, set_default bool) { +func (obj *patternFlowMplsBottomOfStackMetricTag) validateObj(vObj *validation, set_default bool) { if set_default { obj.setDefault() } // Name is required if obj.obj.Name == nil { - vObj.validationErrors = append(vObj.validationErrors, "Name is required field on interface PatternFlowTcpCtlSynMetricTag") + vObj.validationErrors = append(vObj.validationErrors, "Name is required field on interface PatternFlowMplsBottomOfStackMetricTag") } if obj.obj.Offset != nil { @@ -229578,7 +274329,7 @@ func (obj *patternFlowTcpCtlSynMetricTag) validateObj(vObj *validation, set_defa if *obj.obj.Offset > 0 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowTcpCtlSynMetricTag.Offset <= 0 but Got %d", *obj.obj.Offset)) + fmt.Sprintf("0 <= PatternFlowMplsBottomOfStackMetricTag.Offset <= 0 but Got %d", *obj.obj.Offset)) } } @@ -229588,14 +274339,14 @@ func (obj *patternFlowTcpCtlSynMetricTag) validateObj(vObj *validation, set_defa if *obj.obj.Length < 1 || *obj.obj.Length > 1 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("1 <= PatternFlowTcpCtlSynMetricTag.Length <= 1 but Got %d", *obj.obj.Length)) + fmt.Sprintf("1 <= PatternFlowMplsBottomOfStackMetricTag.Length <= 1 but Got %d", *obj.obj.Length)) } } } -func (obj *patternFlowTcpCtlSynMetricTag) setDefault() { +func (obj *patternFlowMplsBottomOfStackMetricTag) setDefault() { if obj.obj.Offset == nil { obj.SetOffset(0) } @@ -229605,29 +274356,29 @@ func (obj *patternFlowTcpCtlSynMetricTag) setDefault() { } -// ***** PatternFlowTcpCtlFinCounter ***** -type patternFlowTcpCtlFinCounter struct { +// ***** PatternFlowMplsTimeToLiveCounter ***** +type patternFlowMplsTimeToLiveCounter struct { validation - obj *otg.PatternFlowTcpCtlFinCounter + obj *otg.PatternFlowMplsTimeToLiveCounter } -func NewPatternFlowTcpCtlFinCounter() PatternFlowTcpCtlFinCounter { - obj := patternFlowTcpCtlFinCounter{obj: &otg.PatternFlowTcpCtlFinCounter{}} +func NewPatternFlowMplsTimeToLiveCounter() PatternFlowMplsTimeToLiveCounter { + obj := patternFlowMplsTimeToLiveCounter{obj: &otg.PatternFlowMplsTimeToLiveCounter{}} obj.setDefault() return &obj } -func (obj *patternFlowTcpCtlFinCounter) Msg() *otg.PatternFlowTcpCtlFinCounter { +func (obj *patternFlowMplsTimeToLiveCounter) Msg() *otg.PatternFlowMplsTimeToLiveCounter { return obj.obj } -func (obj *patternFlowTcpCtlFinCounter) SetMsg(msg *otg.PatternFlowTcpCtlFinCounter) PatternFlowTcpCtlFinCounter { +func (obj *patternFlowMplsTimeToLiveCounter) SetMsg(msg *otg.PatternFlowMplsTimeToLiveCounter) PatternFlowMplsTimeToLiveCounter { proto.Merge(obj.obj, msg) return obj } -func (obj *patternFlowTcpCtlFinCounter) ToProto() (*otg.PatternFlowTcpCtlFinCounter, error) { +func (obj *patternFlowMplsTimeToLiveCounter) ToProto() (*otg.PatternFlowMplsTimeToLiveCounter, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -229635,7 +274386,7 @@ func (obj *patternFlowTcpCtlFinCounter) ToProto() (*otg.PatternFlowTcpCtlFinCoun return obj.Msg(), nil } -func (obj *patternFlowTcpCtlFinCounter) FromProto(msg *otg.PatternFlowTcpCtlFinCounter) (PatternFlowTcpCtlFinCounter, error) { +func (obj *patternFlowMplsTimeToLiveCounter) FromProto(msg *otg.PatternFlowMplsTimeToLiveCounter) (PatternFlowMplsTimeToLiveCounter, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -229644,7 +274395,7 @@ func (obj *patternFlowTcpCtlFinCounter) FromProto(msg *otg.PatternFlowTcpCtlFinC return newObj, nil } -func (obj *patternFlowTcpCtlFinCounter) ToPbText() (string, error) { +func (obj *patternFlowMplsTimeToLiveCounter) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -229656,7 +274407,7 @@ func (obj *patternFlowTcpCtlFinCounter) ToPbText() (string, error) { return string(protoMarshal), nil } -func (obj *patternFlowTcpCtlFinCounter) FromPbText(value string) error { +func (obj *patternFlowMplsTimeToLiveCounter) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj @@ -229669,7 +274420,7 @@ func (obj *patternFlowTcpCtlFinCounter) FromPbText(value string) error { return retObj } -func (obj *patternFlowTcpCtlFinCounter) ToYaml() (string, error) { +func (obj *patternFlowMplsTimeToLiveCounter) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -229690,7 +274441,7 @@ func (obj *patternFlowTcpCtlFinCounter) ToYaml() (string, error) { return string(data), nil } -func (obj *patternFlowTcpCtlFinCounter) FromYaml(value string) error { +func (obj *patternFlowMplsTimeToLiveCounter) FromYaml(value string) error { if value == "" { value = "{}" } @@ -229715,7 +274466,7 @@ func (obj *patternFlowTcpCtlFinCounter) FromYaml(value string) error { return nil } -func (obj *patternFlowTcpCtlFinCounter) ToJson() (string, error) { +func (obj *patternFlowMplsTimeToLiveCounter) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -229733,7 +274484,7 @@ func (obj *patternFlowTcpCtlFinCounter) ToJson() (string, error) { return string(data), nil } -func (obj *patternFlowTcpCtlFinCounter) FromJson(value string) error { +func (obj *patternFlowMplsTimeToLiveCounter) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -229754,19 +274505,19 @@ func (obj *patternFlowTcpCtlFinCounter) FromJson(value string) error { return nil } -func (obj *patternFlowTcpCtlFinCounter) validateToAndFrom() error { +func (obj *patternFlowMplsTimeToLiveCounter) validateToAndFrom() error { // emptyVars() obj.validateObj(&obj.validation, true) return obj.validationResult() } -func (obj *patternFlowTcpCtlFinCounter) Validate() error { +func (obj *patternFlowMplsTimeToLiveCounter) Validate() error { // emptyVars() obj.validateObj(&obj.validation, false) return obj.validationResult() } -func (obj *patternFlowTcpCtlFinCounter) String() string { +func (obj *patternFlowMplsTimeToLiveCounter) String() string { str, err := obj.ToYaml() if err != nil { return err.Error() @@ -229774,12 +274525,12 @@ func (obj *patternFlowTcpCtlFinCounter) String() string { return str } -func (obj *patternFlowTcpCtlFinCounter) Clone() (PatternFlowTcpCtlFinCounter, error) { +func (obj *patternFlowMplsTimeToLiveCounter) Clone() (PatternFlowMplsTimeToLiveCounter, error) { vErr := obj.Validate() if vErr != nil { return nil, vErr } - newObj := NewPatternFlowTcpCtlFinCounter() + newObj := NewPatternFlowMplsTimeToLiveCounter() data, err := proto.Marshal(obj.Msg()) if err != nil { return nil, err @@ -229791,63 +274542,63 @@ func (obj *patternFlowTcpCtlFinCounter) Clone() (PatternFlowTcpCtlFinCounter, er return newObj, nil } -// PatternFlowTcpCtlFinCounter is integer counter pattern -type PatternFlowTcpCtlFinCounter interface { +// PatternFlowMplsTimeToLiveCounter is integer counter pattern +type PatternFlowMplsTimeToLiveCounter interface { Validation - // Msg marshals PatternFlowTcpCtlFinCounter to protobuf object *otg.PatternFlowTcpCtlFinCounter + // Msg marshals PatternFlowMplsTimeToLiveCounter to protobuf object *otg.PatternFlowMplsTimeToLiveCounter // and doesn't set defaults - Msg() *otg.PatternFlowTcpCtlFinCounter - // SetMsg unmarshals PatternFlowTcpCtlFinCounter from protobuf object *otg.PatternFlowTcpCtlFinCounter + Msg() *otg.PatternFlowMplsTimeToLiveCounter + // SetMsg unmarshals PatternFlowMplsTimeToLiveCounter from protobuf object *otg.PatternFlowMplsTimeToLiveCounter // and doesn't set defaults - SetMsg(*otg.PatternFlowTcpCtlFinCounter) PatternFlowTcpCtlFinCounter - // ToProto marshals PatternFlowTcpCtlFinCounter to protobuf object *otg.PatternFlowTcpCtlFinCounter - ToProto() (*otg.PatternFlowTcpCtlFinCounter, error) - // ToPbText marshals PatternFlowTcpCtlFinCounter to protobuf text + SetMsg(*otg.PatternFlowMplsTimeToLiveCounter) PatternFlowMplsTimeToLiveCounter + // ToProto marshals PatternFlowMplsTimeToLiveCounter to protobuf object *otg.PatternFlowMplsTimeToLiveCounter + ToProto() (*otg.PatternFlowMplsTimeToLiveCounter, error) + // ToPbText marshals PatternFlowMplsTimeToLiveCounter to protobuf text ToPbText() (string, error) - // ToYaml marshals PatternFlowTcpCtlFinCounter to YAML text + // ToYaml marshals PatternFlowMplsTimeToLiveCounter to YAML text ToYaml() (string, error) - // ToJson marshals PatternFlowTcpCtlFinCounter to JSON text + // ToJson marshals PatternFlowMplsTimeToLiveCounter to JSON text ToJson() (string, error) - // FromProto unmarshals PatternFlowTcpCtlFinCounter from protobuf object *otg.PatternFlowTcpCtlFinCounter - FromProto(msg *otg.PatternFlowTcpCtlFinCounter) (PatternFlowTcpCtlFinCounter, error) - // FromPbText unmarshals PatternFlowTcpCtlFinCounter from protobuf text + // FromProto unmarshals PatternFlowMplsTimeToLiveCounter from protobuf object *otg.PatternFlowMplsTimeToLiveCounter + FromProto(msg *otg.PatternFlowMplsTimeToLiveCounter) (PatternFlowMplsTimeToLiveCounter, error) + // FromPbText unmarshals PatternFlowMplsTimeToLiveCounter from protobuf text FromPbText(value string) error - // FromYaml unmarshals PatternFlowTcpCtlFinCounter from YAML text + // FromYaml unmarshals PatternFlowMplsTimeToLiveCounter from YAML text FromYaml(value string) error - // FromJson unmarshals PatternFlowTcpCtlFinCounter from JSON text + // FromJson unmarshals PatternFlowMplsTimeToLiveCounter from JSON text FromJson(value string) error - // Validate validates PatternFlowTcpCtlFinCounter + // Validate validates PatternFlowMplsTimeToLiveCounter Validate() error // A stringer function String() string // Clones the object - Clone() (PatternFlowTcpCtlFinCounter, error) + Clone() (PatternFlowMplsTimeToLiveCounter, error) validateToAndFrom() error validateObj(vObj *validation, set_default bool) setDefault() - // Start returns uint32, set in PatternFlowTcpCtlFinCounter. + // Start returns uint32, set in PatternFlowMplsTimeToLiveCounter. Start() uint32 - // SetStart assigns uint32 provided by user to PatternFlowTcpCtlFinCounter - SetStart(value uint32) PatternFlowTcpCtlFinCounter - // HasStart checks if Start has been set in PatternFlowTcpCtlFinCounter + // SetStart assigns uint32 provided by user to PatternFlowMplsTimeToLiveCounter + SetStart(value uint32) PatternFlowMplsTimeToLiveCounter + // HasStart checks if Start has been set in PatternFlowMplsTimeToLiveCounter HasStart() bool - // Step returns uint32, set in PatternFlowTcpCtlFinCounter. + // Step returns uint32, set in PatternFlowMplsTimeToLiveCounter. Step() uint32 - // SetStep assigns uint32 provided by user to PatternFlowTcpCtlFinCounter - SetStep(value uint32) PatternFlowTcpCtlFinCounter - // HasStep checks if Step has been set in PatternFlowTcpCtlFinCounter + // SetStep assigns uint32 provided by user to PatternFlowMplsTimeToLiveCounter + SetStep(value uint32) PatternFlowMplsTimeToLiveCounter + // HasStep checks if Step has been set in PatternFlowMplsTimeToLiveCounter HasStep() bool - // Count returns uint32, set in PatternFlowTcpCtlFinCounter. + // Count returns uint32, set in PatternFlowMplsTimeToLiveCounter. Count() uint32 - // SetCount assigns uint32 provided by user to PatternFlowTcpCtlFinCounter - SetCount(value uint32) PatternFlowTcpCtlFinCounter - // HasCount checks if Count has been set in PatternFlowTcpCtlFinCounter + // SetCount assigns uint32 provided by user to PatternFlowMplsTimeToLiveCounter + SetCount(value uint32) PatternFlowMplsTimeToLiveCounter + // HasCount checks if Count has been set in PatternFlowMplsTimeToLiveCounter HasCount() bool } // description is TBD // Start returns a uint32 -func (obj *patternFlowTcpCtlFinCounter) Start() uint32 { +func (obj *patternFlowMplsTimeToLiveCounter) Start() uint32 { return *obj.obj.Start @@ -229855,13 +274606,13 @@ func (obj *patternFlowTcpCtlFinCounter) Start() uint32 { // description is TBD // Start returns a uint32 -func (obj *patternFlowTcpCtlFinCounter) HasStart() bool { +func (obj *patternFlowMplsTimeToLiveCounter) HasStart() bool { return obj.obj.Start != nil } // description is TBD -// SetStart sets the uint32 value in the PatternFlowTcpCtlFinCounter object -func (obj *patternFlowTcpCtlFinCounter) SetStart(value uint32) PatternFlowTcpCtlFinCounter { +// SetStart sets the uint32 value in the PatternFlowMplsTimeToLiveCounter object +func (obj *patternFlowMplsTimeToLiveCounter) SetStart(value uint32) PatternFlowMplsTimeToLiveCounter { obj.obj.Start = &value return obj @@ -229869,7 +274620,7 @@ func (obj *patternFlowTcpCtlFinCounter) SetStart(value uint32) PatternFlowTcpCtl // description is TBD // Step returns a uint32 -func (obj *patternFlowTcpCtlFinCounter) Step() uint32 { +func (obj *patternFlowMplsTimeToLiveCounter) Step() uint32 { return *obj.obj.Step @@ -229877,13 +274628,13 @@ func (obj *patternFlowTcpCtlFinCounter) Step() uint32 { // description is TBD // Step returns a uint32 -func (obj *patternFlowTcpCtlFinCounter) HasStep() bool { +func (obj *patternFlowMplsTimeToLiveCounter) HasStep() bool { return obj.obj.Step != nil } // description is TBD -// SetStep sets the uint32 value in the PatternFlowTcpCtlFinCounter object -func (obj *patternFlowTcpCtlFinCounter) SetStep(value uint32) PatternFlowTcpCtlFinCounter { +// SetStep sets the uint32 value in the PatternFlowMplsTimeToLiveCounter object +func (obj *patternFlowMplsTimeToLiveCounter) SetStep(value uint32) PatternFlowMplsTimeToLiveCounter { obj.obj.Step = &value return obj @@ -229891,7 +274642,7 @@ func (obj *patternFlowTcpCtlFinCounter) SetStep(value uint32) PatternFlowTcpCtlF // description is TBD // Count returns a uint32 -func (obj *patternFlowTcpCtlFinCounter) Count() uint32 { +func (obj *patternFlowMplsTimeToLiveCounter) Count() uint32 { return *obj.obj.Count @@ -229899,58 +274650,58 @@ func (obj *patternFlowTcpCtlFinCounter) Count() uint32 { // description is TBD // Count returns a uint32 -func (obj *patternFlowTcpCtlFinCounter) HasCount() bool { +func (obj *patternFlowMplsTimeToLiveCounter) HasCount() bool { return obj.obj.Count != nil } // description is TBD -// SetCount sets the uint32 value in the PatternFlowTcpCtlFinCounter object -func (obj *patternFlowTcpCtlFinCounter) SetCount(value uint32) PatternFlowTcpCtlFinCounter { +// SetCount sets the uint32 value in the PatternFlowMplsTimeToLiveCounter object +func (obj *patternFlowMplsTimeToLiveCounter) SetCount(value uint32) PatternFlowMplsTimeToLiveCounter { obj.obj.Count = &value return obj } -func (obj *patternFlowTcpCtlFinCounter) validateObj(vObj *validation, set_default bool) { +func (obj *patternFlowMplsTimeToLiveCounter) validateObj(vObj *validation, set_default bool) { if set_default { obj.setDefault() } if obj.obj.Start != nil { - if *obj.obj.Start > 1 { + if *obj.obj.Start > 255 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowTcpCtlFinCounter.Start <= 1 but Got %d", *obj.obj.Start)) + fmt.Sprintf("0 <= PatternFlowMplsTimeToLiveCounter.Start <= 255 but Got %d", *obj.obj.Start)) } } if obj.obj.Step != nil { - if *obj.obj.Step > 1 { + if *obj.obj.Step > 255 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowTcpCtlFinCounter.Step <= 1 but Got %d", *obj.obj.Step)) + fmt.Sprintf("0 <= PatternFlowMplsTimeToLiveCounter.Step <= 255 but Got %d", *obj.obj.Step)) } } if obj.obj.Count != nil { - if *obj.obj.Count > 1 { + if *obj.obj.Count > 255 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowTcpCtlFinCounter.Count <= 1 but Got %d", *obj.obj.Count)) + fmt.Sprintf("0 <= PatternFlowMplsTimeToLiveCounter.Count <= 255 but Got %d", *obj.obj.Count)) } } } -func (obj *patternFlowTcpCtlFinCounter) setDefault() { +func (obj *patternFlowMplsTimeToLiveCounter) setDefault() { if obj.obj.Start == nil { - obj.SetStart(0) + obj.SetStart(64) } if obj.obj.Step == nil { obj.SetStep(1) @@ -229961,29 +274712,29 @@ func (obj *patternFlowTcpCtlFinCounter) setDefault() { } -// ***** PatternFlowTcpCtlFinMetricTag ***** -type patternFlowTcpCtlFinMetricTag struct { +// ***** PatternFlowMplsTimeToLiveMetricTag ***** +type patternFlowMplsTimeToLiveMetricTag struct { validation - obj *otg.PatternFlowTcpCtlFinMetricTag + obj *otg.PatternFlowMplsTimeToLiveMetricTag } -func NewPatternFlowTcpCtlFinMetricTag() PatternFlowTcpCtlFinMetricTag { - obj := patternFlowTcpCtlFinMetricTag{obj: &otg.PatternFlowTcpCtlFinMetricTag{}} +func NewPatternFlowMplsTimeToLiveMetricTag() PatternFlowMplsTimeToLiveMetricTag { + obj := patternFlowMplsTimeToLiveMetricTag{obj: &otg.PatternFlowMplsTimeToLiveMetricTag{}} obj.setDefault() return &obj } -func (obj *patternFlowTcpCtlFinMetricTag) Msg() *otg.PatternFlowTcpCtlFinMetricTag { +func (obj *patternFlowMplsTimeToLiveMetricTag) Msg() *otg.PatternFlowMplsTimeToLiveMetricTag { return obj.obj } -func (obj *patternFlowTcpCtlFinMetricTag) SetMsg(msg *otg.PatternFlowTcpCtlFinMetricTag) PatternFlowTcpCtlFinMetricTag { +func (obj *patternFlowMplsTimeToLiveMetricTag) SetMsg(msg *otg.PatternFlowMplsTimeToLiveMetricTag) PatternFlowMplsTimeToLiveMetricTag { proto.Merge(obj.obj, msg) return obj } -func (obj *patternFlowTcpCtlFinMetricTag) ToProto() (*otg.PatternFlowTcpCtlFinMetricTag, error) { +func (obj *patternFlowMplsTimeToLiveMetricTag) ToProto() (*otg.PatternFlowMplsTimeToLiveMetricTag, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -229991,7 +274742,7 @@ func (obj *patternFlowTcpCtlFinMetricTag) ToProto() (*otg.PatternFlowTcpCtlFinMe return obj.Msg(), nil } -func (obj *patternFlowTcpCtlFinMetricTag) FromProto(msg *otg.PatternFlowTcpCtlFinMetricTag) (PatternFlowTcpCtlFinMetricTag, error) { +func (obj *patternFlowMplsTimeToLiveMetricTag) FromProto(msg *otg.PatternFlowMplsTimeToLiveMetricTag) (PatternFlowMplsTimeToLiveMetricTag, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -230000,7 +274751,7 @@ func (obj *patternFlowTcpCtlFinMetricTag) FromProto(msg *otg.PatternFlowTcpCtlFi return newObj, nil } -func (obj *patternFlowTcpCtlFinMetricTag) ToPbText() (string, error) { +func (obj *patternFlowMplsTimeToLiveMetricTag) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -230012,7 +274763,7 @@ func (obj *patternFlowTcpCtlFinMetricTag) ToPbText() (string, error) { return string(protoMarshal), nil } -func (obj *patternFlowTcpCtlFinMetricTag) FromPbText(value string) error { +func (obj *patternFlowMplsTimeToLiveMetricTag) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj @@ -230025,7 +274776,7 @@ func (obj *patternFlowTcpCtlFinMetricTag) FromPbText(value string) error { return retObj } -func (obj *patternFlowTcpCtlFinMetricTag) ToYaml() (string, error) { +func (obj *patternFlowMplsTimeToLiveMetricTag) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -230046,7 +274797,7 @@ func (obj *patternFlowTcpCtlFinMetricTag) ToYaml() (string, error) { return string(data), nil } -func (obj *patternFlowTcpCtlFinMetricTag) FromYaml(value string) error { +func (obj *patternFlowMplsTimeToLiveMetricTag) FromYaml(value string) error { if value == "" { value = "{}" } @@ -230071,7 +274822,7 @@ func (obj *patternFlowTcpCtlFinMetricTag) FromYaml(value string) error { return nil } -func (obj *patternFlowTcpCtlFinMetricTag) ToJson() (string, error) { +func (obj *patternFlowMplsTimeToLiveMetricTag) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -230089,7 +274840,7 @@ func (obj *patternFlowTcpCtlFinMetricTag) ToJson() (string, error) { return string(data), nil } -func (obj *patternFlowTcpCtlFinMetricTag) FromJson(value string) error { +func (obj *patternFlowMplsTimeToLiveMetricTag) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -230110,19 +274861,19 @@ func (obj *patternFlowTcpCtlFinMetricTag) FromJson(value string) error { return nil } -func (obj *patternFlowTcpCtlFinMetricTag) validateToAndFrom() error { +func (obj *patternFlowMplsTimeToLiveMetricTag) validateToAndFrom() error { // emptyVars() obj.validateObj(&obj.validation, true) return obj.validationResult() } -func (obj *patternFlowTcpCtlFinMetricTag) Validate() error { +func (obj *patternFlowMplsTimeToLiveMetricTag) Validate() error { // emptyVars() obj.validateObj(&obj.validation, false) return obj.validationResult() } -func (obj *patternFlowTcpCtlFinMetricTag) String() string { +func (obj *patternFlowMplsTimeToLiveMetricTag) String() string { str, err := obj.ToYaml() if err != nil { return err.Error() @@ -230130,12 +274881,12 @@ func (obj *patternFlowTcpCtlFinMetricTag) String() string { return str } -func (obj *patternFlowTcpCtlFinMetricTag) Clone() (PatternFlowTcpCtlFinMetricTag, error) { +func (obj *patternFlowMplsTimeToLiveMetricTag) Clone() (PatternFlowMplsTimeToLiveMetricTag, error) { vErr := obj.Validate() if vErr != nil { return nil, vErr } - newObj := NewPatternFlowTcpCtlFinMetricTag() + newObj := NewPatternFlowMplsTimeToLiveMetricTag() data, err := proto.Marshal(obj.Msg()) if err != nil { return nil, err @@ -230147,69 +274898,69 @@ func (obj *patternFlowTcpCtlFinMetricTag) Clone() (PatternFlowTcpCtlFinMetricTag return newObj, nil } -// PatternFlowTcpCtlFinMetricTag is metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. -type PatternFlowTcpCtlFinMetricTag interface { +// PatternFlowMplsTimeToLiveMetricTag is metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. +type PatternFlowMplsTimeToLiveMetricTag interface { Validation - // Msg marshals PatternFlowTcpCtlFinMetricTag to protobuf object *otg.PatternFlowTcpCtlFinMetricTag + // Msg marshals PatternFlowMplsTimeToLiveMetricTag to protobuf object *otg.PatternFlowMplsTimeToLiveMetricTag // and doesn't set defaults - Msg() *otg.PatternFlowTcpCtlFinMetricTag - // SetMsg unmarshals PatternFlowTcpCtlFinMetricTag from protobuf object *otg.PatternFlowTcpCtlFinMetricTag + Msg() *otg.PatternFlowMplsTimeToLiveMetricTag + // SetMsg unmarshals PatternFlowMplsTimeToLiveMetricTag from protobuf object *otg.PatternFlowMplsTimeToLiveMetricTag // and doesn't set defaults - SetMsg(*otg.PatternFlowTcpCtlFinMetricTag) PatternFlowTcpCtlFinMetricTag - // ToProto marshals PatternFlowTcpCtlFinMetricTag to protobuf object *otg.PatternFlowTcpCtlFinMetricTag - ToProto() (*otg.PatternFlowTcpCtlFinMetricTag, error) - // ToPbText marshals PatternFlowTcpCtlFinMetricTag to protobuf text + SetMsg(*otg.PatternFlowMplsTimeToLiveMetricTag) PatternFlowMplsTimeToLiveMetricTag + // ToProto marshals PatternFlowMplsTimeToLiveMetricTag to protobuf object *otg.PatternFlowMplsTimeToLiveMetricTag + ToProto() (*otg.PatternFlowMplsTimeToLiveMetricTag, error) + // ToPbText marshals PatternFlowMplsTimeToLiveMetricTag to protobuf text ToPbText() (string, error) - // ToYaml marshals PatternFlowTcpCtlFinMetricTag to YAML text + // ToYaml marshals PatternFlowMplsTimeToLiveMetricTag to YAML text ToYaml() (string, error) - // ToJson marshals PatternFlowTcpCtlFinMetricTag to JSON text + // ToJson marshals PatternFlowMplsTimeToLiveMetricTag to JSON text ToJson() (string, error) - // FromProto unmarshals PatternFlowTcpCtlFinMetricTag from protobuf object *otg.PatternFlowTcpCtlFinMetricTag - FromProto(msg *otg.PatternFlowTcpCtlFinMetricTag) (PatternFlowTcpCtlFinMetricTag, error) - // FromPbText unmarshals PatternFlowTcpCtlFinMetricTag from protobuf text + // FromProto unmarshals PatternFlowMplsTimeToLiveMetricTag from protobuf object *otg.PatternFlowMplsTimeToLiveMetricTag + FromProto(msg *otg.PatternFlowMplsTimeToLiveMetricTag) (PatternFlowMplsTimeToLiveMetricTag, error) + // FromPbText unmarshals PatternFlowMplsTimeToLiveMetricTag from protobuf text FromPbText(value string) error - // FromYaml unmarshals PatternFlowTcpCtlFinMetricTag from YAML text + // FromYaml unmarshals PatternFlowMplsTimeToLiveMetricTag from YAML text FromYaml(value string) error - // FromJson unmarshals PatternFlowTcpCtlFinMetricTag from JSON text + // FromJson unmarshals PatternFlowMplsTimeToLiveMetricTag from JSON text FromJson(value string) error - // Validate validates PatternFlowTcpCtlFinMetricTag + // Validate validates PatternFlowMplsTimeToLiveMetricTag Validate() error // A stringer function String() string // Clones the object - Clone() (PatternFlowTcpCtlFinMetricTag, error) + Clone() (PatternFlowMplsTimeToLiveMetricTag, error) validateToAndFrom() error validateObj(vObj *validation, set_default bool) setDefault() - // Name returns string, set in PatternFlowTcpCtlFinMetricTag. + // Name returns string, set in PatternFlowMplsTimeToLiveMetricTag. Name() string - // SetName assigns string provided by user to PatternFlowTcpCtlFinMetricTag - SetName(value string) PatternFlowTcpCtlFinMetricTag - // Offset returns uint32, set in PatternFlowTcpCtlFinMetricTag. + // SetName assigns string provided by user to PatternFlowMplsTimeToLiveMetricTag + SetName(value string) PatternFlowMplsTimeToLiveMetricTag + // Offset returns uint32, set in PatternFlowMplsTimeToLiveMetricTag. Offset() uint32 - // SetOffset assigns uint32 provided by user to PatternFlowTcpCtlFinMetricTag - SetOffset(value uint32) PatternFlowTcpCtlFinMetricTag - // HasOffset checks if Offset has been set in PatternFlowTcpCtlFinMetricTag + // SetOffset assigns uint32 provided by user to PatternFlowMplsTimeToLiveMetricTag + SetOffset(value uint32) PatternFlowMplsTimeToLiveMetricTag + // HasOffset checks if Offset has been set in PatternFlowMplsTimeToLiveMetricTag HasOffset() bool - // Length returns uint32, set in PatternFlowTcpCtlFinMetricTag. + // Length returns uint32, set in PatternFlowMplsTimeToLiveMetricTag. Length() uint32 - // SetLength assigns uint32 provided by user to PatternFlowTcpCtlFinMetricTag - SetLength(value uint32) PatternFlowTcpCtlFinMetricTag - // HasLength checks if Length has been set in PatternFlowTcpCtlFinMetricTag + // SetLength assigns uint32 provided by user to PatternFlowMplsTimeToLiveMetricTag + SetLength(value uint32) PatternFlowMplsTimeToLiveMetricTag + // HasLength checks if Length has been set in PatternFlowMplsTimeToLiveMetricTag HasLength() bool } // Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field // Name returns a string -func (obj *patternFlowTcpCtlFinMetricTag) Name() string { +func (obj *patternFlowMplsTimeToLiveMetricTag) Name() string { return *obj.obj.Name } // Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field -// SetName sets the string value in the PatternFlowTcpCtlFinMetricTag object -func (obj *patternFlowTcpCtlFinMetricTag) SetName(value string) PatternFlowTcpCtlFinMetricTag { +// SetName sets the string value in the PatternFlowMplsTimeToLiveMetricTag object +func (obj *patternFlowMplsTimeToLiveMetricTag) SetName(value string) PatternFlowMplsTimeToLiveMetricTag { obj.obj.Name = &value return obj @@ -230217,7 +274968,7 @@ func (obj *patternFlowTcpCtlFinMetricTag) SetName(value string) PatternFlowTcpCt // Offset in bits relative to start of corresponding header field // Offset returns a uint32 -func (obj *patternFlowTcpCtlFinMetricTag) Offset() uint32 { +func (obj *patternFlowMplsTimeToLiveMetricTag) Offset() uint32 { return *obj.obj.Offset @@ -230225,13 +274976,13 @@ func (obj *patternFlowTcpCtlFinMetricTag) Offset() uint32 { // Offset in bits relative to start of corresponding header field // Offset returns a uint32 -func (obj *patternFlowTcpCtlFinMetricTag) HasOffset() bool { +func (obj *patternFlowMplsTimeToLiveMetricTag) HasOffset() bool { return obj.obj.Offset != nil } // Offset in bits relative to start of corresponding header field -// SetOffset sets the uint32 value in the PatternFlowTcpCtlFinMetricTag object -func (obj *patternFlowTcpCtlFinMetricTag) SetOffset(value uint32) PatternFlowTcpCtlFinMetricTag { +// SetOffset sets the uint32 value in the PatternFlowMplsTimeToLiveMetricTag object +func (obj *patternFlowMplsTimeToLiveMetricTag) SetOffset(value uint32) PatternFlowMplsTimeToLiveMetricTag { obj.obj.Offset = &value return obj @@ -230239,7 +274990,7 @@ func (obj *patternFlowTcpCtlFinMetricTag) SetOffset(value uint32) PatternFlowTcp // Number of bits to track for metrics starting from configured offset of corresponding header field // Length returns a uint32 -func (obj *patternFlowTcpCtlFinMetricTag) Length() uint32 { +func (obj *patternFlowMplsTimeToLiveMetricTag) Length() uint32 { return *obj.obj.Length @@ -230247,83 +274998,83 @@ func (obj *patternFlowTcpCtlFinMetricTag) Length() uint32 { // Number of bits to track for metrics starting from configured offset of corresponding header field // Length returns a uint32 -func (obj *patternFlowTcpCtlFinMetricTag) HasLength() bool { +func (obj *patternFlowMplsTimeToLiveMetricTag) HasLength() bool { return obj.obj.Length != nil } // Number of bits to track for metrics starting from configured offset of corresponding header field -// SetLength sets the uint32 value in the PatternFlowTcpCtlFinMetricTag object -func (obj *patternFlowTcpCtlFinMetricTag) SetLength(value uint32) PatternFlowTcpCtlFinMetricTag { +// SetLength sets the uint32 value in the PatternFlowMplsTimeToLiveMetricTag object +func (obj *patternFlowMplsTimeToLiveMetricTag) SetLength(value uint32) PatternFlowMplsTimeToLiveMetricTag { obj.obj.Length = &value return obj } -func (obj *patternFlowTcpCtlFinMetricTag) validateObj(vObj *validation, set_default bool) { +func (obj *patternFlowMplsTimeToLiveMetricTag) validateObj(vObj *validation, set_default bool) { if set_default { obj.setDefault() } // Name is required if obj.obj.Name == nil { - vObj.validationErrors = append(vObj.validationErrors, "Name is required field on interface PatternFlowTcpCtlFinMetricTag") + vObj.validationErrors = append(vObj.validationErrors, "Name is required field on interface PatternFlowMplsTimeToLiveMetricTag") } if obj.obj.Offset != nil { - if *obj.obj.Offset > 0 { + if *obj.obj.Offset > 7 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowTcpCtlFinMetricTag.Offset <= 0 but Got %d", *obj.obj.Offset)) + fmt.Sprintf("0 <= PatternFlowMplsTimeToLiveMetricTag.Offset <= 7 but Got %d", *obj.obj.Offset)) } } if obj.obj.Length != nil { - if *obj.obj.Length < 1 || *obj.obj.Length > 1 { + if *obj.obj.Length < 1 || *obj.obj.Length > 8 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("1 <= PatternFlowTcpCtlFinMetricTag.Length <= 1 but Got %d", *obj.obj.Length)) + fmt.Sprintf("1 <= PatternFlowMplsTimeToLiveMetricTag.Length <= 8 but Got %d", *obj.obj.Length)) } } } -func (obj *patternFlowTcpCtlFinMetricTag) setDefault() { +func (obj *patternFlowMplsTimeToLiveMetricTag) setDefault() { if obj.obj.Offset == nil { obj.SetOffset(0) } if obj.obj.Length == nil { - obj.SetLength(1) + obj.SetLength(8) } } -// ***** PatternFlowTcpWindowCounter ***** -type patternFlowTcpWindowCounter struct { +// ***** PatternFlowRsvpVersionCounter ***** +type patternFlowRsvpVersionCounter struct { validation - obj *otg.PatternFlowTcpWindowCounter + obj *otg.PatternFlowRsvpVersionCounter } -func NewPatternFlowTcpWindowCounter() PatternFlowTcpWindowCounter { - obj := patternFlowTcpWindowCounter{obj: &otg.PatternFlowTcpWindowCounter{}} +func NewPatternFlowRsvpVersionCounter() PatternFlowRsvpVersionCounter { + obj := patternFlowRsvpVersionCounter{obj: &otg.PatternFlowRsvpVersionCounter{}} obj.setDefault() return &obj } -func (obj *patternFlowTcpWindowCounter) Msg() *otg.PatternFlowTcpWindowCounter { +func (obj *patternFlowRsvpVersionCounter) Msg() *otg.PatternFlowRsvpVersionCounter { return obj.obj } -func (obj *patternFlowTcpWindowCounter) SetMsg(msg *otg.PatternFlowTcpWindowCounter) PatternFlowTcpWindowCounter { +func (obj *patternFlowRsvpVersionCounter) SetMsg(msg *otg.PatternFlowRsvpVersionCounter) PatternFlowRsvpVersionCounter { proto.Merge(obj.obj, msg) return obj } -func (obj *patternFlowTcpWindowCounter) ToProto() (*otg.PatternFlowTcpWindowCounter, error) { +func (obj *patternFlowRsvpVersionCounter) ToProto() (*otg.PatternFlowRsvpVersionCounter, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -230331,7 +275082,7 @@ func (obj *patternFlowTcpWindowCounter) ToProto() (*otg.PatternFlowTcpWindowCoun return obj.Msg(), nil } -func (obj *patternFlowTcpWindowCounter) FromProto(msg *otg.PatternFlowTcpWindowCounter) (PatternFlowTcpWindowCounter, error) { +func (obj *patternFlowRsvpVersionCounter) FromProto(msg *otg.PatternFlowRsvpVersionCounter) (PatternFlowRsvpVersionCounter, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -230340,7 +275091,7 @@ func (obj *patternFlowTcpWindowCounter) FromProto(msg *otg.PatternFlowTcpWindowC return newObj, nil } -func (obj *patternFlowTcpWindowCounter) ToPbText() (string, error) { +func (obj *patternFlowRsvpVersionCounter) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -230352,7 +275103,7 @@ func (obj *patternFlowTcpWindowCounter) ToPbText() (string, error) { return string(protoMarshal), nil } -func (obj *patternFlowTcpWindowCounter) FromPbText(value string) error { +func (obj *patternFlowRsvpVersionCounter) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj @@ -230365,7 +275116,7 @@ func (obj *patternFlowTcpWindowCounter) FromPbText(value string) error { return retObj } -func (obj *patternFlowTcpWindowCounter) ToYaml() (string, error) { +func (obj *patternFlowRsvpVersionCounter) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -230386,7 +275137,7 @@ func (obj *patternFlowTcpWindowCounter) ToYaml() (string, error) { return string(data), nil } -func (obj *patternFlowTcpWindowCounter) FromYaml(value string) error { +func (obj *patternFlowRsvpVersionCounter) FromYaml(value string) error { if value == "" { value = "{}" } @@ -230411,7 +275162,7 @@ func (obj *patternFlowTcpWindowCounter) FromYaml(value string) error { return nil } -func (obj *patternFlowTcpWindowCounter) ToJson() (string, error) { +func (obj *patternFlowRsvpVersionCounter) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -230429,7 +275180,7 @@ func (obj *patternFlowTcpWindowCounter) ToJson() (string, error) { return string(data), nil } -func (obj *patternFlowTcpWindowCounter) FromJson(value string) error { +func (obj *patternFlowRsvpVersionCounter) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -230450,19 +275201,19 @@ func (obj *patternFlowTcpWindowCounter) FromJson(value string) error { return nil } -func (obj *patternFlowTcpWindowCounter) validateToAndFrom() error { +func (obj *patternFlowRsvpVersionCounter) validateToAndFrom() error { // emptyVars() obj.validateObj(&obj.validation, true) return obj.validationResult() } -func (obj *patternFlowTcpWindowCounter) Validate() error { +func (obj *patternFlowRsvpVersionCounter) Validate() error { // emptyVars() obj.validateObj(&obj.validation, false) return obj.validationResult() } -func (obj *patternFlowTcpWindowCounter) String() string { +func (obj *patternFlowRsvpVersionCounter) String() string { str, err := obj.ToYaml() if err != nil { return err.Error() @@ -230470,12 +275221,12 @@ func (obj *patternFlowTcpWindowCounter) String() string { return str } -func (obj *patternFlowTcpWindowCounter) Clone() (PatternFlowTcpWindowCounter, error) { +func (obj *patternFlowRsvpVersionCounter) Clone() (PatternFlowRsvpVersionCounter, error) { vErr := obj.Validate() if vErr != nil { return nil, vErr } - newObj := NewPatternFlowTcpWindowCounter() + newObj := NewPatternFlowRsvpVersionCounter() data, err := proto.Marshal(obj.Msg()) if err != nil { return nil, err @@ -230487,63 +275238,63 @@ func (obj *patternFlowTcpWindowCounter) Clone() (PatternFlowTcpWindowCounter, er return newObj, nil } -// PatternFlowTcpWindowCounter is integer counter pattern -type PatternFlowTcpWindowCounter interface { +// PatternFlowRsvpVersionCounter is integer counter pattern +type PatternFlowRsvpVersionCounter interface { Validation - // Msg marshals PatternFlowTcpWindowCounter to protobuf object *otg.PatternFlowTcpWindowCounter + // Msg marshals PatternFlowRsvpVersionCounter to protobuf object *otg.PatternFlowRsvpVersionCounter // and doesn't set defaults - Msg() *otg.PatternFlowTcpWindowCounter - // SetMsg unmarshals PatternFlowTcpWindowCounter from protobuf object *otg.PatternFlowTcpWindowCounter + Msg() *otg.PatternFlowRsvpVersionCounter + // SetMsg unmarshals PatternFlowRsvpVersionCounter from protobuf object *otg.PatternFlowRsvpVersionCounter // and doesn't set defaults - SetMsg(*otg.PatternFlowTcpWindowCounter) PatternFlowTcpWindowCounter - // ToProto marshals PatternFlowTcpWindowCounter to protobuf object *otg.PatternFlowTcpWindowCounter - ToProto() (*otg.PatternFlowTcpWindowCounter, error) - // ToPbText marshals PatternFlowTcpWindowCounter to protobuf text + SetMsg(*otg.PatternFlowRsvpVersionCounter) PatternFlowRsvpVersionCounter + // ToProto marshals PatternFlowRsvpVersionCounter to protobuf object *otg.PatternFlowRsvpVersionCounter + ToProto() (*otg.PatternFlowRsvpVersionCounter, error) + // ToPbText marshals PatternFlowRsvpVersionCounter to protobuf text ToPbText() (string, error) - // ToYaml marshals PatternFlowTcpWindowCounter to YAML text + // ToYaml marshals PatternFlowRsvpVersionCounter to YAML text ToYaml() (string, error) - // ToJson marshals PatternFlowTcpWindowCounter to JSON text + // ToJson marshals PatternFlowRsvpVersionCounter to JSON text ToJson() (string, error) - // FromProto unmarshals PatternFlowTcpWindowCounter from protobuf object *otg.PatternFlowTcpWindowCounter - FromProto(msg *otg.PatternFlowTcpWindowCounter) (PatternFlowTcpWindowCounter, error) - // FromPbText unmarshals PatternFlowTcpWindowCounter from protobuf text + // FromProto unmarshals PatternFlowRsvpVersionCounter from protobuf object *otg.PatternFlowRsvpVersionCounter + FromProto(msg *otg.PatternFlowRsvpVersionCounter) (PatternFlowRsvpVersionCounter, error) + // FromPbText unmarshals PatternFlowRsvpVersionCounter from protobuf text FromPbText(value string) error - // FromYaml unmarshals PatternFlowTcpWindowCounter from YAML text + // FromYaml unmarshals PatternFlowRsvpVersionCounter from YAML text FromYaml(value string) error - // FromJson unmarshals PatternFlowTcpWindowCounter from JSON text + // FromJson unmarshals PatternFlowRsvpVersionCounter from JSON text FromJson(value string) error - // Validate validates PatternFlowTcpWindowCounter + // Validate validates PatternFlowRsvpVersionCounter Validate() error // A stringer function String() string // Clones the object - Clone() (PatternFlowTcpWindowCounter, error) + Clone() (PatternFlowRsvpVersionCounter, error) validateToAndFrom() error validateObj(vObj *validation, set_default bool) setDefault() - // Start returns uint32, set in PatternFlowTcpWindowCounter. + // Start returns uint32, set in PatternFlowRsvpVersionCounter. Start() uint32 - // SetStart assigns uint32 provided by user to PatternFlowTcpWindowCounter - SetStart(value uint32) PatternFlowTcpWindowCounter - // HasStart checks if Start has been set in PatternFlowTcpWindowCounter + // SetStart assigns uint32 provided by user to PatternFlowRsvpVersionCounter + SetStart(value uint32) PatternFlowRsvpVersionCounter + // HasStart checks if Start has been set in PatternFlowRsvpVersionCounter HasStart() bool - // Step returns uint32, set in PatternFlowTcpWindowCounter. + // Step returns uint32, set in PatternFlowRsvpVersionCounter. Step() uint32 - // SetStep assigns uint32 provided by user to PatternFlowTcpWindowCounter - SetStep(value uint32) PatternFlowTcpWindowCounter - // HasStep checks if Step has been set in PatternFlowTcpWindowCounter + // SetStep assigns uint32 provided by user to PatternFlowRsvpVersionCounter + SetStep(value uint32) PatternFlowRsvpVersionCounter + // HasStep checks if Step has been set in PatternFlowRsvpVersionCounter HasStep() bool - // Count returns uint32, set in PatternFlowTcpWindowCounter. + // Count returns uint32, set in PatternFlowRsvpVersionCounter. Count() uint32 - // SetCount assigns uint32 provided by user to PatternFlowTcpWindowCounter - SetCount(value uint32) PatternFlowTcpWindowCounter - // HasCount checks if Count has been set in PatternFlowTcpWindowCounter + // SetCount assigns uint32 provided by user to PatternFlowRsvpVersionCounter + SetCount(value uint32) PatternFlowRsvpVersionCounter + // HasCount checks if Count has been set in PatternFlowRsvpVersionCounter HasCount() bool } // description is TBD // Start returns a uint32 -func (obj *patternFlowTcpWindowCounter) Start() uint32 { +func (obj *patternFlowRsvpVersionCounter) Start() uint32 { return *obj.obj.Start @@ -230551,13 +275302,13 @@ func (obj *patternFlowTcpWindowCounter) Start() uint32 { // description is TBD // Start returns a uint32 -func (obj *patternFlowTcpWindowCounter) HasStart() bool { +func (obj *patternFlowRsvpVersionCounter) HasStart() bool { return obj.obj.Start != nil } // description is TBD -// SetStart sets the uint32 value in the PatternFlowTcpWindowCounter object -func (obj *patternFlowTcpWindowCounter) SetStart(value uint32) PatternFlowTcpWindowCounter { +// SetStart sets the uint32 value in the PatternFlowRsvpVersionCounter object +func (obj *patternFlowRsvpVersionCounter) SetStart(value uint32) PatternFlowRsvpVersionCounter { obj.obj.Start = &value return obj @@ -230565,7 +275316,7 @@ func (obj *patternFlowTcpWindowCounter) SetStart(value uint32) PatternFlowTcpWin // description is TBD // Step returns a uint32 -func (obj *patternFlowTcpWindowCounter) Step() uint32 { +func (obj *patternFlowRsvpVersionCounter) Step() uint32 { return *obj.obj.Step @@ -230573,13 +275324,13 @@ func (obj *patternFlowTcpWindowCounter) Step() uint32 { // description is TBD // Step returns a uint32 -func (obj *patternFlowTcpWindowCounter) HasStep() bool { +func (obj *patternFlowRsvpVersionCounter) HasStep() bool { return obj.obj.Step != nil } // description is TBD -// SetStep sets the uint32 value in the PatternFlowTcpWindowCounter object -func (obj *patternFlowTcpWindowCounter) SetStep(value uint32) PatternFlowTcpWindowCounter { +// SetStep sets the uint32 value in the PatternFlowRsvpVersionCounter object +func (obj *patternFlowRsvpVersionCounter) SetStep(value uint32) PatternFlowRsvpVersionCounter { obj.obj.Step = &value return obj @@ -230587,7 +275338,7 @@ func (obj *patternFlowTcpWindowCounter) SetStep(value uint32) PatternFlowTcpWind // description is TBD // Count returns a uint32 -func (obj *patternFlowTcpWindowCounter) Count() uint32 { +func (obj *patternFlowRsvpVersionCounter) Count() uint32 { return *obj.obj.Count @@ -230595,58 +275346,58 @@ func (obj *patternFlowTcpWindowCounter) Count() uint32 { // description is TBD // Count returns a uint32 -func (obj *patternFlowTcpWindowCounter) HasCount() bool { +func (obj *patternFlowRsvpVersionCounter) HasCount() bool { return obj.obj.Count != nil } // description is TBD -// SetCount sets the uint32 value in the PatternFlowTcpWindowCounter object -func (obj *patternFlowTcpWindowCounter) SetCount(value uint32) PatternFlowTcpWindowCounter { +// SetCount sets the uint32 value in the PatternFlowRsvpVersionCounter object +func (obj *patternFlowRsvpVersionCounter) SetCount(value uint32) PatternFlowRsvpVersionCounter { obj.obj.Count = &value return obj } -func (obj *patternFlowTcpWindowCounter) validateObj(vObj *validation, set_default bool) { +func (obj *patternFlowRsvpVersionCounter) validateObj(vObj *validation, set_default bool) { if set_default { obj.setDefault() } if obj.obj.Start != nil { - if *obj.obj.Start > 65535 { + if *obj.obj.Start > 15 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowTcpWindowCounter.Start <= 65535 but Got %d", *obj.obj.Start)) + fmt.Sprintf("0 <= PatternFlowRsvpVersionCounter.Start <= 15 but Got %d", *obj.obj.Start)) } } if obj.obj.Step != nil { - if *obj.obj.Step > 65535 { + if *obj.obj.Step > 15 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowTcpWindowCounter.Step <= 65535 but Got %d", *obj.obj.Step)) + fmt.Sprintf("0 <= PatternFlowRsvpVersionCounter.Step <= 15 but Got %d", *obj.obj.Step)) } } if obj.obj.Count != nil { - if *obj.obj.Count > 65535 { + if *obj.obj.Count > 15 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowTcpWindowCounter.Count <= 65535 but Got %d", *obj.obj.Count)) + fmt.Sprintf("0 <= PatternFlowRsvpVersionCounter.Count <= 15 but Got %d", *obj.obj.Count)) } } } -func (obj *patternFlowTcpWindowCounter) setDefault() { +func (obj *patternFlowRsvpVersionCounter) setDefault() { if obj.obj.Start == nil { - obj.SetStart(0) + obj.SetStart(1) } if obj.obj.Step == nil { obj.SetStep(1) @@ -230657,29 +275408,29 @@ func (obj *patternFlowTcpWindowCounter) setDefault() { } -// ***** PatternFlowTcpWindowMetricTag ***** -type patternFlowTcpWindowMetricTag struct { +// ***** PatternFlowRsvpTimeToLiveCounter ***** +type patternFlowRsvpTimeToLiveCounter struct { validation - obj *otg.PatternFlowTcpWindowMetricTag + obj *otg.PatternFlowRsvpTimeToLiveCounter } -func NewPatternFlowTcpWindowMetricTag() PatternFlowTcpWindowMetricTag { - obj := patternFlowTcpWindowMetricTag{obj: &otg.PatternFlowTcpWindowMetricTag{}} +func NewPatternFlowRsvpTimeToLiveCounter() PatternFlowRsvpTimeToLiveCounter { + obj := patternFlowRsvpTimeToLiveCounter{obj: &otg.PatternFlowRsvpTimeToLiveCounter{}} obj.setDefault() return &obj } -func (obj *patternFlowTcpWindowMetricTag) Msg() *otg.PatternFlowTcpWindowMetricTag { +func (obj *patternFlowRsvpTimeToLiveCounter) Msg() *otg.PatternFlowRsvpTimeToLiveCounter { return obj.obj } -func (obj *patternFlowTcpWindowMetricTag) SetMsg(msg *otg.PatternFlowTcpWindowMetricTag) PatternFlowTcpWindowMetricTag { +func (obj *patternFlowRsvpTimeToLiveCounter) SetMsg(msg *otg.PatternFlowRsvpTimeToLiveCounter) PatternFlowRsvpTimeToLiveCounter { proto.Merge(obj.obj, msg) return obj } -func (obj *patternFlowTcpWindowMetricTag) ToProto() (*otg.PatternFlowTcpWindowMetricTag, error) { +func (obj *patternFlowRsvpTimeToLiveCounter) ToProto() (*otg.PatternFlowRsvpTimeToLiveCounter, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -230687,7 +275438,7 @@ func (obj *patternFlowTcpWindowMetricTag) ToProto() (*otg.PatternFlowTcpWindowMe return obj.Msg(), nil } -func (obj *patternFlowTcpWindowMetricTag) FromProto(msg *otg.PatternFlowTcpWindowMetricTag) (PatternFlowTcpWindowMetricTag, error) { +func (obj *patternFlowRsvpTimeToLiveCounter) FromProto(msg *otg.PatternFlowRsvpTimeToLiveCounter) (PatternFlowRsvpTimeToLiveCounter, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -230696,7 +275447,7 @@ func (obj *patternFlowTcpWindowMetricTag) FromProto(msg *otg.PatternFlowTcpWindo return newObj, nil } -func (obj *patternFlowTcpWindowMetricTag) ToPbText() (string, error) { +func (obj *patternFlowRsvpTimeToLiveCounter) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -230708,7 +275459,7 @@ func (obj *patternFlowTcpWindowMetricTag) ToPbText() (string, error) { return string(protoMarshal), nil } -func (obj *patternFlowTcpWindowMetricTag) FromPbText(value string) error { +func (obj *patternFlowRsvpTimeToLiveCounter) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj @@ -230721,7 +275472,7 @@ func (obj *patternFlowTcpWindowMetricTag) FromPbText(value string) error { return retObj } -func (obj *patternFlowTcpWindowMetricTag) ToYaml() (string, error) { +func (obj *patternFlowRsvpTimeToLiveCounter) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -230742,7 +275493,7 @@ func (obj *patternFlowTcpWindowMetricTag) ToYaml() (string, error) { return string(data), nil } -func (obj *patternFlowTcpWindowMetricTag) FromYaml(value string) error { +func (obj *patternFlowRsvpTimeToLiveCounter) FromYaml(value string) error { if value == "" { value = "{}" } @@ -230767,7 +275518,7 @@ func (obj *patternFlowTcpWindowMetricTag) FromYaml(value string) error { return nil } -func (obj *patternFlowTcpWindowMetricTag) ToJson() (string, error) { +func (obj *patternFlowRsvpTimeToLiveCounter) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -230785,7 +275536,7 @@ func (obj *patternFlowTcpWindowMetricTag) ToJson() (string, error) { return string(data), nil } -func (obj *patternFlowTcpWindowMetricTag) FromJson(value string) error { +func (obj *patternFlowRsvpTimeToLiveCounter) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -230806,19 +275557,19 @@ func (obj *patternFlowTcpWindowMetricTag) FromJson(value string) error { return nil } -func (obj *patternFlowTcpWindowMetricTag) validateToAndFrom() error { +func (obj *patternFlowRsvpTimeToLiveCounter) validateToAndFrom() error { // emptyVars() obj.validateObj(&obj.validation, true) return obj.validationResult() } -func (obj *patternFlowTcpWindowMetricTag) Validate() error { +func (obj *patternFlowRsvpTimeToLiveCounter) Validate() error { // emptyVars() obj.validateObj(&obj.validation, false) return obj.validationResult() } -func (obj *patternFlowTcpWindowMetricTag) String() string { +func (obj *patternFlowRsvpTimeToLiveCounter) String() string { str, err := obj.ToYaml() if err != nil { return err.Error() @@ -230826,12 +275577,12 @@ func (obj *patternFlowTcpWindowMetricTag) String() string { return str } -func (obj *patternFlowTcpWindowMetricTag) Clone() (PatternFlowTcpWindowMetricTag, error) { +func (obj *patternFlowRsvpTimeToLiveCounter) Clone() (PatternFlowRsvpTimeToLiveCounter, error) { vErr := obj.Validate() if vErr != nil { return nil, vErr } - newObj := NewPatternFlowTcpWindowMetricTag() + newObj := NewPatternFlowRsvpTimeToLiveCounter() data, err := proto.Marshal(obj.Msg()) if err != nil { return nil, err @@ -230843,183 +275594,199 @@ func (obj *patternFlowTcpWindowMetricTag) Clone() (PatternFlowTcpWindowMetricTag return newObj, nil } -// PatternFlowTcpWindowMetricTag is metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. -type PatternFlowTcpWindowMetricTag interface { +// PatternFlowRsvpTimeToLiveCounter is integer counter pattern +type PatternFlowRsvpTimeToLiveCounter interface { Validation - // Msg marshals PatternFlowTcpWindowMetricTag to protobuf object *otg.PatternFlowTcpWindowMetricTag + // Msg marshals PatternFlowRsvpTimeToLiveCounter to protobuf object *otg.PatternFlowRsvpTimeToLiveCounter // and doesn't set defaults - Msg() *otg.PatternFlowTcpWindowMetricTag - // SetMsg unmarshals PatternFlowTcpWindowMetricTag from protobuf object *otg.PatternFlowTcpWindowMetricTag + Msg() *otg.PatternFlowRsvpTimeToLiveCounter + // SetMsg unmarshals PatternFlowRsvpTimeToLiveCounter from protobuf object *otg.PatternFlowRsvpTimeToLiveCounter // and doesn't set defaults - SetMsg(*otg.PatternFlowTcpWindowMetricTag) PatternFlowTcpWindowMetricTag - // ToProto marshals PatternFlowTcpWindowMetricTag to protobuf object *otg.PatternFlowTcpWindowMetricTag - ToProto() (*otg.PatternFlowTcpWindowMetricTag, error) - // ToPbText marshals PatternFlowTcpWindowMetricTag to protobuf text + SetMsg(*otg.PatternFlowRsvpTimeToLiveCounter) PatternFlowRsvpTimeToLiveCounter + // ToProto marshals PatternFlowRsvpTimeToLiveCounter to protobuf object *otg.PatternFlowRsvpTimeToLiveCounter + ToProto() (*otg.PatternFlowRsvpTimeToLiveCounter, error) + // ToPbText marshals PatternFlowRsvpTimeToLiveCounter to protobuf text ToPbText() (string, error) - // ToYaml marshals PatternFlowTcpWindowMetricTag to YAML text + // ToYaml marshals PatternFlowRsvpTimeToLiveCounter to YAML text ToYaml() (string, error) - // ToJson marshals PatternFlowTcpWindowMetricTag to JSON text + // ToJson marshals PatternFlowRsvpTimeToLiveCounter to JSON text ToJson() (string, error) - // FromProto unmarshals PatternFlowTcpWindowMetricTag from protobuf object *otg.PatternFlowTcpWindowMetricTag - FromProto(msg *otg.PatternFlowTcpWindowMetricTag) (PatternFlowTcpWindowMetricTag, error) - // FromPbText unmarshals PatternFlowTcpWindowMetricTag from protobuf text + // FromProto unmarshals PatternFlowRsvpTimeToLiveCounter from protobuf object *otg.PatternFlowRsvpTimeToLiveCounter + FromProto(msg *otg.PatternFlowRsvpTimeToLiveCounter) (PatternFlowRsvpTimeToLiveCounter, error) + // FromPbText unmarshals PatternFlowRsvpTimeToLiveCounter from protobuf text FromPbText(value string) error - // FromYaml unmarshals PatternFlowTcpWindowMetricTag from YAML text + // FromYaml unmarshals PatternFlowRsvpTimeToLiveCounter from YAML text FromYaml(value string) error - // FromJson unmarshals PatternFlowTcpWindowMetricTag from JSON text + // FromJson unmarshals PatternFlowRsvpTimeToLiveCounter from JSON text FromJson(value string) error - // Validate validates PatternFlowTcpWindowMetricTag + // Validate validates PatternFlowRsvpTimeToLiveCounter Validate() error // A stringer function String() string // Clones the object - Clone() (PatternFlowTcpWindowMetricTag, error) + Clone() (PatternFlowRsvpTimeToLiveCounter, error) validateToAndFrom() error validateObj(vObj *validation, set_default bool) setDefault() - // Name returns string, set in PatternFlowTcpWindowMetricTag. - Name() string - // SetName assigns string provided by user to PatternFlowTcpWindowMetricTag - SetName(value string) PatternFlowTcpWindowMetricTag - // Offset returns uint32, set in PatternFlowTcpWindowMetricTag. - Offset() uint32 - // SetOffset assigns uint32 provided by user to PatternFlowTcpWindowMetricTag - SetOffset(value uint32) PatternFlowTcpWindowMetricTag - // HasOffset checks if Offset has been set in PatternFlowTcpWindowMetricTag - HasOffset() bool - // Length returns uint32, set in PatternFlowTcpWindowMetricTag. - Length() uint32 - // SetLength assigns uint32 provided by user to PatternFlowTcpWindowMetricTag - SetLength(value uint32) PatternFlowTcpWindowMetricTag - // HasLength checks if Length has been set in PatternFlowTcpWindowMetricTag - HasLength() bool + // Start returns uint32, set in PatternFlowRsvpTimeToLiveCounter. + Start() uint32 + // SetStart assigns uint32 provided by user to PatternFlowRsvpTimeToLiveCounter + SetStart(value uint32) PatternFlowRsvpTimeToLiveCounter + // HasStart checks if Start has been set in PatternFlowRsvpTimeToLiveCounter + HasStart() bool + // Step returns uint32, set in PatternFlowRsvpTimeToLiveCounter. + Step() uint32 + // SetStep assigns uint32 provided by user to PatternFlowRsvpTimeToLiveCounter + SetStep(value uint32) PatternFlowRsvpTimeToLiveCounter + // HasStep checks if Step has been set in PatternFlowRsvpTimeToLiveCounter + HasStep() bool + // Count returns uint32, set in PatternFlowRsvpTimeToLiveCounter. + Count() uint32 + // SetCount assigns uint32 provided by user to PatternFlowRsvpTimeToLiveCounter + SetCount(value uint32) PatternFlowRsvpTimeToLiveCounter + // HasCount checks if Count has been set in PatternFlowRsvpTimeToLiveCounter + HasCount() bool } -// Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field -// Name returns a string -func (obj *patternFlowTcpWindowMetricTag) Name() string { +// description is TBD +// Start returns a uint32 +func (obj *patternFlowRsvpTimeToLiveCounter) Start() uint32 { - return *obj.obj.Name + return *obj.obj.Start } -// Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field -// SetName sets the string value in the PatternFlowTcpWindowMetricTag object -func (obj *patternFlowTcpWindowMetricTag) SetName(value string) PatternFlowTcpWindowMetricTag { +// description is TBD +// Start returns a uint32 +func (obj *patternFlowRsvpTimeToLiveCounter) HasStart() bool { + return obj.obj.Start != nil +} - obj.obj.Name = &value +// description is TBD +// SetStart sets the uint32 value in the PatternFlowRsvpTimeToLiveCounter object +func (obj *patternFlowRsvpTimeToLiveCounter) SetStart(value uint32) PatternFlowRsvpTimeToLiveCounter { + + obj.obj.Start = &value return obj } -// Offset in bits relative to start of corresponding header field -// Offset returns a uint32 -func (obj *patternFlowTcpWindowMetricTag) Offset() uint32 { +// description is TBD +// Step returns a uint32 +func (obj *patternFlowRsvpTimeToLiveCounter) Step() uint32 { - return *obj.obj.Offset + return *obj.obj.Step } -// Offset in bits relative to start of corresponding header field -// Offset returns a uint32 -func (obj *patternFlowTcpWindowMetricTag) HasOffset() bool { - return obj.obj.Offset != nil +// description is TBD +// Step returns a uint32 +func (obj *patternFlowRsvpTimeToLiveCounter) HasStep() bool { + return obj.obj.Step != nil } -// Offset in bits relative to start of corresponding header field -// SetOffset sets the uint32 value in the PatternFlowTcpWindowMetricTag object -func (obj *patternFlowTcpWindowMetricTag) SetOffset(value uint32) PatternFlowTcpWindowMetricTag { +// description is TBD +// SetStep sets the uint32 value in the PatternFlowRsvpTimeToLiveCounter object +func (obj *patternFlowRsvpTimeToLiveCounter) SetStep(value uint32) PatternFlowRsvpTimeToLiveCounter { - obj.obj.Offset = &value + obj.obj.Step = &value return obj } -// Number of bits to track for metrics starting from configured offset of corresponding header field -// Length returns a uint32 -func (obj *patternFlowTcpWindowMetricTag) Length() uint32 { +// description is TBD +// Count returns a uint32 +func (obj *patternFlowRsvpTimeToLiveCounter) Count() uint32 { - return *obj.obj.Length + return *obj.obj.Count } -// Number of bits to track for metrics starting from configured offset of corresponding header field -// Length returns a uint32 -func (obj *patternFlowTcpWindowMetricTag) HasLength() bool { - return obj.obj.Length != nil +// description is TBD +// Count returns a uint32 +func (obj *patternFlowRsvpTimeToLiveCounter) HasCount() bool { + return obj.obj.Count != nil } -// Number of bits to track for metrics starting from configured offset of corresponding header field -// SetLength sets the uint32 value in the PatternFlowTcpWindowMetricTag object -func (obj *patternFlowTcpWindowMetricTag) SetLength(value uint32) PatternFlowTcpWindowMetricTag { +// description is TBD +// SetCount sets the uint32 value in the PatternFlowRsvpTimeToLiveCounter object +func (obj *patternFlowRsvpTimeToLiveCounter) SetCount(value uint32) PatternFlowRsvpTimeToLiveCounter { - obj.obj.Length = &value + obj.obj.Count = &value return obj } -func (obj *patternFlowTcpWindowMetricTag) validateObj(vObj *validation, set_default bool) { +func (obj *patternFlowRsvpTimeToLiveCounter) validateObj(vObj *validation, set_default bool) { if set_default { obj.setDefault() } - // Name is required - if obj.obj.Name == nil { - vObj.validationErrors = append(vObj.validationErrors, "Name is required field on interface PatternFlowTcpWindowMetricTag") + if obj.obj.Start != nil { + + if *obj.obj.Start > 255 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("0 <= PatternFlowRsvpTimeToLiveCounter.Start <= 255 but Got %d", *obj.obj.Start)) + } + } - if obj.obj.Offset != nil { + if obj.obj.Step != nil { - if *obj.obj.Offset > 15 { + if *obj.obj.Step > 255 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowTcpWindowMetricTag.Offset <= 15 but Got %d", *obj.obj.Offset)) + fmt.Sprintf("0 <= PatternFlowRsvpTimeToLiveCounter.Step <= 255 but Got %d", *obj.obj.Step)) } } - if obj.obj.Length != nil { + if obj.obj.Count != nil { - if *obj.obj.Length < 1 || *obj.obj.Length > 16 { + if *obj.obj.Count > 255 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("1 <= PatternFlowTcpWindowMetricTag.Length <= 16 but Got %d", *obj.obj.Length)) + fmt.Sprintf("0 <= PatternFlowRsvpTimeToLiveCounter.Count <= 255 but Got %d", *obj.obj.Count)) } } } -func (obj *patternFlowTcpWindowMetricTag) setDefault() { - if obj.obj.Offset == nil { - obj.SetOffset(0) +func (obj *patternFlowRsvpTimeToLiveCounter) setDefault() { + if obj.obj.Start == nil { + obj.SetStart(0) } - if obj.obj.Length == nil { - obj.SetLength(16) + if obj.obj.Step == nil { + obj.SetStep(1) + } + if obj.obj.Count == nil { + obj.SetCount(1) } } -// ***** PatternFlowUdpSrcPortCounter ***** -type patternFlowUdpSrcPortCounter struct { +// ***** PatternFlowRsvpReservedCounter ***** +type patternFlowRsvpReservedCounter struct { validation - obj *otg.PatternFlowUdpSrcPortCounter + obj *otg.PatternFlowRsvpReservedCounter } -func NewPatternFlowUdpSrcPortCounter() PatternFlowUdpSrcPortCounter { - obj := patternFlowUdpSrcPortCounter{obj: &otg.PatternFlowUdpSrcPortCounter{}} +func NewPatternFlowRsvpReservedCounter() PatternFlowRsvpReservedCounter { + obj := patternFlowRsvpReservedCounter{obj: &otg.PatternFlowRsvpReservedCounter{}} obj.setDefault() return &obj } -func (obj *patternFlowUdpSrcPortCounter) Msg() *otg.PatternFlowUdpSrcPortCounter { +func (obj *patternFlowRsvpReservedCounter) Msg() *otg.PatternFlowRsvpReservedCounter { return obj.obj } -func (obj *patternFlowUdpSrcPortCounter) SetMsg(msg *otg.PatternFlowUdpSrcPortCounter) PatternFlowUdpSrcPortCounter { +func (obj *patternFlowRsvpReservedCounter) SetMsg(msg *otg.PatternFlowRsvpReservedCounter) PatternFlowRsvpReservedCounter { proto.Merge(obj.obj, msg) return obj } -func (obj *patternFlowUdpSrcPortCounter) ToProto() (*otg.PatternFlowUdpSrcPortCounter, error) { +func (obj *patternFlowRsvpReservedCounter) ToProto() (*otg.PatternFlowRsvpReservedCounter, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -231027,7 +275794,7 @@ func (obj *patternFlowUdpSrcPortCounter) ToProto() (*otg.PatternFlowUdpSrcPortCo return obj.Msg(), nil } -func (obj *patternFlowUdpSrcPortCounter) FromProto(msg *otg.PatternFlowUdpSrcPortCounter) (PatternFlowUdpSrcPortCounter, error) { +func (obj *patternFlowRsvpReservedCounter) FromProto(msg *otg.PatternFlowRsvpReservedCounter) (PatternFlowRsvpReservedCounter, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -231036,7 +275803,7 @@ func (obj *patternFlowUdpSrcPortCounter) FromProto(msg *otg.PatternFlowUdpSrcPor return newObj, nil } -func (obj *patternFlowUdpSrcPortCounter) ToPbText() (string, error) { +func (obj *patternFlowRsvpReservedCounter) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -231048,7 +275815,7 @@ func (obj *patternFlowUdpSrcPortCounter) ToPbText() (string, error) { return string(protoMarshal), nil } -func (obj *patternFlowUdpSrcPortCounter) FromPbText(value string) error { +func (obj *patternFlowRsvpReservedCounter) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj @@ -231061,7 +275828,7 @@ func (obj *patternFlowUdpSrcPortCounter) FromPbText(value string) error { return retObj } -func (obj *patternFlowUdpSrcPortCounter) ToYaml() (string, error) { +func (obj *patternFlowRsvpReservedCounter) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -231082,7 +275849,7 @@ func (obj *patternFlowUdpSrcPortCounter) ToYaml() (string, error) { return string(data), nil } -func (obj *patternFlowUdpSrcPortCounter) FromYaml(value string) error { +func (obj *patternFlowRsvpReservedCounter) FromYaml(value string) error { if value == "" { value = "{}" } @@ -231107,7 +275874,7 @@ func (obj *patternFlowUdpSrcPortCounter) FromYaml(value string) error { return nil } -func (obj *patternFlowUdpSrcPortCounter) ToJson() (string, error) { +func (obj *patternFlowRsvpReservedCounter) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -231125,7 +275892,7 @@ func (obj *patternFlowUdpSrcPortCounter) ToJson() (string, error) { return string(data), nil } -func (obj *patternFlowUdpSrcPortCounter) FromJson(value string) error { +func (obj *patternFlowRsvpReservedCounter) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -231146,19 +275913,19 @@ func (obj *patternFlowUdpSrcPortCounter) FromJson(value string) error { return nil } -func (obj *patternFlowUdpSrcPortCounter) validateToAndFrom() error { +func (obj *patternFlowRsvpReservedCounter) validateToAndFrom() error { // emptyVars() obj.validateObj(&obj.validation, true) return obj.validationResult() } -func (obj *patternFlowUdpSrcPortCounter) Validate() error { +func (obj *patternFlowRsvpReservedCounter) Validate() error { // emptyVars() obj.validateObj(&obj.validation, false) return obj.validationResult() } -func (obj *patternFlowUdpSrcPortCounter) String() string { +func (obj *patternFlowRsvpReservedCounter) String() string { str, err := obj.ToYaml() if err != nil { return err.Error() @@ -231166,12 +275933,12 @@ func (obj *patternFlowUdpSrcPortCounter) String() string { return str } -func (obj *patternFlowUdpSrcPortCounter) Clone() (PatternFlowUdpSrcPortCounter, error) { +func (obj *patternFlowRsvpReservedCounter) Clone() (PatternFlowRsvpReservedCounter, error) { vErr := obj.Validate() if vErr != nil { return nil, vErr } - newObj := NewPatternFlowUdpSrcPortCounter() + newObj := NewPatternFlowRsvpReservedCounter() data, err := proto.Marshal(obj.Msg()) if err != nil { return nil, err @@ -231183,63 +275950,63 @@ func (obj *patternFlowUdpSrcPortCounter) Clone() (PatternFlowUdpSrcPortCounter, return newObj, nil } -// PatternFlowUdpSrcPortCounter is integer counter pattern -type PatternFlowUdpSrcPortCounter interface { +// PatternFlowRsvpReservedCounter is integer counter pattern +type PatternFlowRsvpReservedCounter interface { Validation - // Msg marshals PatternFlowUdpSrcPortCounter to protobuf object *otg.PatternFlowUdpSrcPortCounter + // Msg marshals PatternFlowRsvpReservedCounter to protobuf object *otg.PatternFlowRsvpReservedCounter // and doesn't set defaults - Msg() *otg.PatternFlowUdpSrcPortCounter - // SetMsg unmarshals PatternFlowUdpSrcPortCounter from protobuf object *otg.PatternFlowUdpSrcPortCounter + Msg() *otg.PatternFlowRsvpReservedCounter + // SetMsg unmarshals PatternFlowRsvpReservedCounter from protobuf object *otg.PatternFlowRsvpReservedCounter // and doesn't set defaults - SetMsg(*otg.PatternFlowUdpSrcPortCounter) PatternFlowUdpSrcPortCounter - // ToProto marshals PatternFlowUdpSrcPortCounter to protobuf object *otg.PatternFlowUdpSrcPortCounter - ToProto() (*otg.PatternFlowUdpSrcPortCounter, error) - // ToPbText marshals PatternFlowUdpSrcPortCounter to protobuf text + SetMsg(*otg.PatternFlowRsvpReservedCounter) PatternFlowRsvpReservedCounter + // ToProto marshals PatternFlowRsvpReservedCounter to protobuf object *otg.PatternFlowRsvpReservedCounter + ToProto() (*otg.PatternFlowRsvpReservedCounter, error) + // ToPbText marshals PatternFlowRsvpReservedCounter to protobuf text ToPbText() (string, error) - // ToYaml marshals PatternFlowUdpSrcPortCounter to YAML text + // ToYaml marshals PatternFlowRsvpReservedCounter to YAML text ToYaml() (string, error) - // ToJson marshals PatternFlowUdpSrcPortCounter to JSON text + // ToJson marshals PatternFlowRsvpReservedCounter to JSON text ToJson() (string, error) - // FromProto unmarshals PatternFlowUdpSrcPortCounter from protobuf object *otg.PatternFlowUdpSrcPortCounter - FromProto(msg *otg.PatternFlowUdpSrcPortCounter) (PatternFlowUdpSrcPortCounter, error) - // FromPbText unmarshals PatternFlowUdpSrcPortCounter from protobuf text + // FromProto unmarshals PatternFlowRsvpReservedCounter from protobuf object *otg.PatternFlowRsvpReservedCounter + FromProto(msg *otg.PatternFlowRsvpReservedCounter) (PatternFlowRsvpReservedCounter, error) + // FromPbText unmarshals PatternFlowRsvpReservedCounter from protobuf text FromPbText(value string) error - // FromYaml unmarshals PatternFlowUdpSrcPortCounter from YAML text + // FromYaml unmarshals PatternFlowRsvpReservedCounter from YAML text FromYaml(value string) error - // FromJson unmarshals PatternFlowUdpSrcPortCounter from JSON text + // FromJson unmarshals PatternFlowRsvpReservedCounter from JSON text FromJson(value string) error - // Validate validates PatternFlowUdpSrcPortCounter + // Validate validates PatternFlowRsvpReservedCounter Validate() error // A stringer function String() string // Clones the object - Clone() (PatternFlowUdpSrcPortCounter, error) + Clone() (PatternFlowRsvpReservedCounter, error) validateToAndFrom() error validateObj(vObj *validation, set_default bool) setDefault() - // Start returns uint32, set in PatternFlowUdpSrcPortCounter. + // Start returns uint32, set in PatternFlowRsvpReservedCounter. Start() uint32 - // SetStart assigns uint32 provided by user to PatternFlowUdpSrcPortCounter - SetStart(value uint32) PatternFlowUdpSrcPortCounter - // HasStart checks if Start has been set in PatternFlowUdpSrcPortCounter + // SetStart assigns uint32 provided by user to PatternFlowRsvpReservedCounter + SetStart(value uint32) PatternFlowRsvpReservedCounter + // HasStart checks if Start has been set in PatternFlowRsvpReservedCounter HasStart() bool - // Step returns uint32, set in PatternFlowUdpSrcPortCounter. + // Step returns uint32, set in PatternFlowRsvpReservedCounter. Step() uint32 - // SetStep assigns uint32 provided by user to PatternFlowUdpSrcPortCounter - SetStep(value uint32) PatternFlowUdpSrcPortCounter - // HasStep checks if Step has been set in PatternFlowUdpSrcPortCounter + // SetStep assigns uint32 provided by user to PatternFlowRsvpReservedCounter + SetStep(value uint32) PatternFlowRsvpReservedCounter + // HasStep checks if Step has been set in PatternFlowRsvpReservedCounter HasStep() bool - // Count returns uint32, set in PatternFlowUdpSrcPortCounter. + // Count returns uint32, set in PatternFlowRsvpReservedCounter. Count() uint32 - // SetCount assigns uint32 provided by user to PatternFlowUdpSrcPortCounter - SetCount(value uint32) PatternFlowUdpSrcPortCounter - // HasCount checks if Count has been set in PatternFlowUdpSrcPortCounter + // SetCount assigns uint32 provided by user to PatternFlowRsvpReservedCounter + SetCount(value uint32) PatternFlowRsvpReservedCounter + // HasCount checks if Count has been set in PatternFlowRsvpReservedCounter HasCount() bool } // description is TBD // Start returns a uint32 -func (obj *patternFlowUdpSrcPortCounter) Start() uint32 { +func (obj *patternFlowRsvpReservedCounter) Start() uint32 { return *obj.obj.Start @@ -231247,13 +276014,13 @@ func (obj *patternFlowUdpSrcPortCounter) Start() uint32 { // description is TBD // Start returns a uint32 -func (obj *patternFlowUdpSrcPortCounter) HasStart() bool { +func (obj *patternFlowRsvpReservedCounter) HasStart() bool { return obj.obj.Start != nil } // description is TBD -// SetStart sets the uint32 value in the PatternFlowUdpSrcPortCounter object -func (obj *patternFlowUdpSrcPortCounter) SetStart(value uint32) PatternFlowUdpSrcPortCounter { +// SetStart sets the uint32 value in the PatternFlowRsvpReservedCounter object +func (obj *patternFlowRsvpReservedCounter) SetStart(value uint32) PatternFlowRsvpReservedCounter { obj.obj.Start = &value return obj @@ -231261,7 +276028,7 @@ func (obj *patternFlowUdpSrcPortCounter) SetStart(value uint32) PatternFlowUdpSr // description is TBD // Step returns a uint32 -func (obj *patternFlowUdpSrcPortCounter) Step() uint32 { +func (obj *patternFlowRsvpReservedCounter) Step() uint32 { return *obj.obj.Step @@ -231269,13 +276036,13 @@ func (obj *patternFlowUdpSrcPortCounter) Step() uint32 { // description is TBD // Step returns a uint32 -func (obj *patternFlowUdpSrcPortCounter) HasStep() bool { +func (obj *patternFlowRsvpReservedCounter) HasStep() bool { return obj.obj.Step != nil } // description is TBD -// SetStep sets the uint32 value in the PatternFlowUdpSrcPortCounter object -func (obj *patternFlowUdpSrcPortCounter) SetStep(value uint32) PatternFlowUdpSrcPortCounter { +// SetStep sets the uint32 value in the PatternFlowRsvpReservedCounter object +func (obj *patternFlowRsvpReservedCounter) SetStep(value uint32) PatternFlowRsvpReservedCounter { obj.obj.Step = &value return obj @@ -231283,7 +276050,7 @@ func (obj *patternFlowUdpSrcPortCounter) SetStep(value uint32) PatternFlowUdpSrc // description is TBD // Count returns a uint32 -func (obj *patternFlowUdpSrcPortCounter) Count() uint32 { +func (obj *patternFlowRsvpReservedCounter) Count() uint32 { return *obj.obj.Count @@ -231291,56 +276058,56 @@ func (obj *patternFlowUdpSrcPortCounter) Count() uint32 { // description is TBD // Count returns a uint32 -func (obj *patternFlowUdpSrcPortCounter) HasCount() bool { +func (obj *patternFlowRsvpReservedCounter) HasCount() bool { return obj.obj.Count != nil } // description is TBD -// SetCount sets the uint32 value in the PatternFlowUdpSrcPortCounter object -func (obj *patternFlowUdpSrcPortCounter) SetCount(value uint32) PatternFlowUdpSrcPortCounter { +// SetCount sets the uint32 value in the PatternFlowRsvpReservedCounter object +func (obj *patternFlowRsvpReservedCounter) SetCount(value uint32) PatternFlowRsvpReservedCounter { obj.obj.Count = &value return obj } -func (obj *patternFlowUdpSrcPortCounter) validateObj(vObj *validation, set_default bool) { +func (obj *patternFlowRsvpReservedCounter) validateObj(vObj *validation, set_default bool) { if set_default { obj.setDefault() } if obj.obj.Start != nil { - if *obj.obj.Start > 65535 { + if *obj.obj.Start > 255 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowUdpSrcPortCounter.Start <= 65535 but Got %d", *obj.obj.Start)) + fmt.Sprintf("0 <= PatternFlowRsvpReservedCounter.Start <= 255 but Got %d", *obj.obj.Start)) } } if obj.obj.Step != nil { - if *obj.obj.Step > 65535 { + if *obj.obj.Step > 255 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowUdpSrcPortCounter.Step <= 65535 but Got %d", *obj.obj.Step)) + fmt.Sprintf("0 <= PatternFlowRsvpReservedCounter.Step <= 255 but Got %d", *obj.obj.Step)) } } if obj.obj.Count != nil { - if *obj.obj.Count > 65535 { + if *obj.obj.Count > 255 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowUdpSrcPortCounter.Count <= 65535 but Got %d", *obj.obj.Count)) + fmt.Sprintf("0 <= PatternFlowRsvpReservedCounter.Count <= 255 but Got %d", *obj.obj.Count)) } } } -func (obj *patternFlowUdpSrcPortCounter) setDefault() { +func (obj *patternFlowRsvpReservedCounter) setDefault() { if obj.obj.Start == nil { obj.SetStart(0) } @@ -231353,29 +276120,30 @@ func (obj *patternFlowUdpSrcPortCounter) setDefault() { } -// ***** PatternFlowUdpSrcPortMetricTag ***** -type patternFlowUdpSrcPortMetricTag struct { +// ***** FlowRSVPPathMessage ***** +type flowRSVPPathMessage struct { validation - obj *otg.PatternFlowUdpSrcPortMetricTag + obj *otg.FlowRSVPPathMessage + objectsHolder FlowRSVPPathMessageFlowRSVPPathObjectsIter } -func NewPatternFlowUdpSrcPortMetricTag() PatternFlowUdpSrcPortMetricTag { - obj := patternFlowUdpSrcPortMetricTag{obj: &otg.PatternFlowUdpSrcPortMetricTag{}} +func NewFlowRSVPPathMessage() FlowRSVPPathMessage { + obj := flowRSVPPathMessage{obj: &otg.FlowRSVPPathMessage{}} obj.setDefault() return &obj } -func (obj *patternFlowUdpSrcPortMetricTag) Msg() *otg.PatternFlowUdpSrcPortMetricTag { +func (obj *flowRSVPPathMessage) Msg() *otg.FlowRSVPPathMessage { return obj.obj } -func (obj *patternFlowUdpSrcPortMetricTag) SetMsg(msg *otg.PatternFlowUdpSrcPortMetricTag) PatternFlowUdpSrcPortMetricTag { - +func (obj *flowRSVPPathMessage) SetMsg(msg *otg.FlowRSVPPathMessage) FlowRSVPPathMessage { + obj.setNil() proto.Merge(obj.obj, msg) return obj } -func (obj *patternFlowUdpSrcPortMetricTag) ToProto() (*otg.PatternFlowUdpSrcPortMetricTag, error) { +func (obj *flowRSVPPathMessage) ToProto() (*otg.FlowRSVPPathMessage, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -231383,7 +276151,7 @@ func (obj *patternFlowUdpSrcPortMetricTag) ToProto() (*otg.PatternFlowUdpSrcPort return obj.Msg(), nil } -func (obj *patternFlowUdpSrcPortMetricTag) FromProto(msg *otg.PatternFlowUdpSrcPortMetricTag) (PatternFlowUdpSrcPortMetricTag, error) { +func (obj *flowRSVPPathMessage) FromProto(msg *otg.FlowRSVPPathMessage) (FlowRSVPPathMessage, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -231392,7 +276160,7 @@ func (obj *patternFlowUdpSrcPortMetricTag) FromProto(msg *otg.PatternFlowUdpSrcP return newObj, nil } -func (obj *patternFlowUdpSrcPortMetricTag) ToPbText() (string, error) { +func (obj *flowRSVPPathMessage) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -231404,12 +276172,12 @@ func (obj *patternFlowUdpSrcPortMetricTag) ToPbText() (string, error) { return string(protoMarshal), nil } -func (obj *patternFlowUdpSrcPortMetricTag) FromPbText(value string) error { +func (obj *flowRSVPPathMessage) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj } - + obj.setNil() vErr := obj.validateToAndFrom() if vErr != nil { return vErr @@ -231417,7 +276185,7 @@ func (obj *patternFlowUdpSrcPortMetricTag) FromPbText(value string) error { return retObj } -func (obj *patternFlowUdpSrcPortMetricTag) ToYaml() (string, error) { +func (obj *flowRSVPPathMessage) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -231438,7 +276206,7 @@ func (obj *patternFlowUdpSrcPortMetricTag) ToYaml() (string, error) { return string(data), nil } -func (obj *patternFlowUdpSrcPortMetricTag) FromYaml(value string) error { +func (obj *flowRSVPPathMessage) FromYaml(value string) error { if value == "" { value = "{}" } @@ -231455,7 +276223,7 @@ func (obj *patternFlowUdpSrcPortMetricTag) FromYaml(value string) error { return fmt.Errorf("unmarshal error %s", strings.Replace( uError.Error(), "\u00a0", " ", -1)[7:]) } - + obj.setNil() vErr := obj.validateToAndFrom() if vErr != nil { return vErr @@ -231463,7 +276231,7 @@ func (obj *patternFlowUdpSrcPortMetricTag) FromYaml(value string) error { return nil } -func (obj *patternFlowUdpSrcPortMetricTag) ToJson() (string, error) { +func (obj *flowRSVPPathMessage) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -231481,7 +276249,7 @@ func (obj *patternFlowUdpSrcPortMetricTag) ToJson() (string, error) { return string(data), nil } -func (obj *patternFlowUdpSrcPortMetricTag) FromJson(value string) error { +func (obj *flowRSVPPathMessage) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -231494,7 +276262,7 @@ func (obj *patternFlowUdpSrcPortMetricTag) FromJson(value string) error { return fmt.Errorf("unmarshal error %s", strings.Replace( uError.Error(), "\u00a0", " ", -1)[7:]) } - + obj.setNil() err := obj.validateToAndFrom() if err != nil { return err @@ -231502,19 +276270,19 @@ func (obj *patternFlowUdpSrcPortMetricTag) FromJson(value string) error { return nil } -func (obj *patternFlowUdpSrcPortMetricTag) validateToAndFrom() error { +func (obj *flowRSVPPathMessage) validateToAndFrom() error { // emptyVars() obj.validateObj(&obj.validation, true) return obj.validationResult() } -func (obj *patternFlowUdpSrcPortMetricTag) Validate() error { +func (obj *flowRSVPPathMessage) Validate() error { // emptyVars() obj.validateObj(&obj.validation, false) return obj.validationResult() } -func (obj *patternFlowUdpSrcPortMetricTag) String() string { +func (obj *flowRSVPPathMessage) String() string { str, err := obj.ToYaml() if err != nil { return err.Error() @@ -231522,12 +276290,12 @@ func (obj *patternFlowUdpSrcPortMetricTag) String() string { return str } -func (obj *patternFlowUdpSrcPortMetricTag) Clone() (PatternFlowUdpSrcPortMetricTag, error) { +func (obj *flowRSVPPathMessage) Clone() (FlowRSVPPathMessage, error) { vErr := obj.Validate() if vErr != nil { return nil, vErr } - newObj := NewPatternFlowUdpSrcPortMetricTag() + newObj := NewFlowRSVPPathMessage() data, err := proto.Marshal(obj.Msg()) if err != nil { return nil, err @@ -231539,183 +276307,188 @@ func (obj *patternFlowUdpSrcPortMetricTag) Clone() (PatternFlowUdpSrcPortMetricT return newObj, nil } -// PatternFlowUdpSrcPortMetricTag is metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. -type PatternFlowUdpSrcPortMetricTag interface { +func (obj *flowRSVPPathMessage) setNil() { + obj.objectsHolder = nil + obj.validationErrors = nil + obj.warnings = nil + obj.constraints = make(map[string]map[string]Constraints) +} + +// FlowRSVPPathMessage is "path" message required the follwoing list of objects in order as defined in https://www.rfc-editor.org/rfc/rfc3209.html#page-15: 1. SESSION 2. RSVP_HOP 3. TIME_VALUES 4. EXPLICIT_ROUTE [optional] 5. LABEL_REQUEST 6. SESSION_ATTRIBUTE [optional] 7. SENDER_TEMPLATE 8. SENDER_TSPEC 9. RECORD_ROUTE [optional] +type FlowRSVPPathMessage interface { Validation - // Msg marshals PatternFlowUdpSrcPortMetricTag to protobuf object *otg.PatternFlowUdpSrcPortMetricTag + // Msg marshals FlowRSVPPathMessage to protobuf object *otg.FlowRSVPPathMessage // and doesn't set defaults - Msg() *otg.PatternFlowUdpSrcPortMetricTag - // SetMsg unmarshals PatternFlowUdpSrcPortMetricTag from protobuf object *otg.PatternFlowUdpSrcPortMetricTag + Msg() *otg.FlowRSVPPathMessage + // SetMsg unmarshals FlowRSVPPathMessage from protobuf object *otg.FlowRSVPPathMessage // and doesn't set defaults - SetMsg(*otg.PatternFlowUdpSrcPortMetricTag) PatternFlowUdpSrcPortMetricTag - // ToProto marshals PatternFlowUdpSrcPortMetricTag to protobuf object *otg.PatternFlowUdpSrcPortMetricTag - ToProto() (*otg.PatternFlowUdpSrcPortMetricTag, error) - // ToPbText marshals PatternFlowUdpSrcPortMetricTag to protobuf text + SetMsg(*otg.FlowRSVPPathMessage) FlowRSVPPathMessage + // ToProto marshals FlowRSVPPathMessage to protobuf object *otg.FlowRSVPPathMessage + ToProto() (*otg.FlowRSVPPathMessage, error) + // ToPbText marshals FlowRSVPPathMessage to protobuf text ToPbText() (string, error) - // ToYaml marshals PatternFlowUdpSrcPortMetricTag to YAML text + // ToYaml marshals FlowRSVPPathMessage to YAML text ToYaml() (string, error) - // ToJson marshals PatternFlowUdpSrcPortMetricTag to JSON text + // ToJson marshals FlowRSVPPathMessage to JSON text ToJson() (string, error) - // FromProto unmarshals PatternFlowUdpSrcPortMetricTag from protobuf object *otg.PatternFlowUdpSrcPortMetricTag - FromProto(msg *otg.PatternFlowUdpSrcPortMetricTag) (PatternFlowUdpSrcPortMetricTag, error) - // FromPbText unmarshals PatternFlowUdpSrcPortMetricTag from protobuf text + // FromProto unmarshals FlowRSVPPathMessage from protobuf object *otg.FlowRSVPPathMessage + FromProto(msg *otg.FlowRSVPPathMessage) (FlowRSVPPathMessage, error) + // FromPbText unmarshals FlowRSVPPathMessage from protobuf text FromPbText(value string) error - // FromYaml unmarshals PatternFlowUdpSrcPortMetricTag from YAML text + // FromYaml unmarshals FlowRSVPPathMessage from YAML text FromYaml(value string) error - // FromJson unmarshals PatternFlowUdpSrcPortMetricTag from JSON text + // FromJson unmarshals FlowRSVPPathMessage from JSON text FromJson(value string) error - // Validate validates PatternFlowUdpSrcPortMetricTag + // Validate validates FlowRSVPPathMessage Validate() error // A stringer function String() string // Clones the object - Clone() (PatternFlowUdpSrcPortMetricTag, error) + Clone() (FlowRSVPPathMessage, error) validateToAndFrom() error validateObj(vObj *validation, set_default bool) setDefault() - // Name returns string, set in PatternFlowUdpSrcPortMetricTag. - Name() string - // SetName assigns string provided by user to PatternFlowUdpSrcPortMetricTag - SetName(value string) PatternFlowUdpSrcPortMetricTag - // Offset returns uint32, set in PatternFlowUdpSrcPortMetricTag. - Offset() uint32 - // SetOffset assigns uint32 provided by user to PatternFlowUdpSrcPortMetricTag - SetOffset(value uint32) PatternFlowUdpSrcPortMetricTag - // HasOffset checks if Offset has been set in PatternFlowUdpSrcPortMetricTag - HasOffset() bool - // Length returns uint32, set in PatternFlowUdpSrcPortMetricTag. - Length() uint32 - // SetLength assigns uint32 provided by user to PatternFlowUdpSrcPortMetricTag - SetLength(value uint32) PatternFlowUdpSrcPortMetricTag - // HasLength checks if Length has been set in PatternFlowUdpSrcPortMetricTag - HasLength() bool + // Objects returns FlowRSVPPathMessageFlowRSVPPathObjectsIterIter, set in FlowRSVPPathMessage + Objects() FlowRSVPPathMessageFlowRSVPPathObjectsIter + setNil() } -// Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field -// Name returns a string -func (obj *patternFlowUdpSrcPortMetricTag) Name() string { +// "path" message required atleast SESSION, RSVP_HOP, TIME_VALUES, LABEL_REQUEST, SENDER_TEMPLATE and SENDER_TSPEC objects in order. +// Objects returns a []FlowRSVPPathObjects +func (obj *flowRSVPPathMessage) Objects() FlowRSVPPathMessageFlowRSVPPathObjectsIter { + if len(obj.obj.Objects) == 0 { + obj.obj.Objects = []*otg.FlowRSVPPathObjects{} + } + if obj.objectsHolder == nil { + obj.objectsHolder = newFlowRSVPPathMessageFlowRSVPPathObjectsIter(&obj.obj.Objects).setMsg(obj) + } + return obj.objectsHolder +} - return *obj.obj.Name +type flowRSVPPathMessageFlowRSVPPathObjectsIter struct { + obj *flowRSVPPathMessage + flowRSVPPathObjectsSlice []FlowRSVPPathObjects + fieldPtr *[]*otg.FlowRSVPPathObjects +} +func newFlowRSVPPathMessageFlowRSVPPathObjectsIter(ptr *[]*otg.FlowRSVPPathObjects) FlowRSVPPathMessageFlowRSVPPathObjectsIter { + return &flowRSVPPathMessageFlowRSVPPathObjectsIter{fieldPtr: ptr} } -// Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field -// SetName sets the string value in the PatternFlowUdpSrcPortMetricTag object -func (obj *patternFlowUdpSrcPortMetricTag) SetName(value string) PatternFlowUdpSrcPortMetricTag { +type FlowRSVPPathMessageFlowRSVPPathObjectsIter interface { + setMsg(*flowRSVPPathMessage) FlowRSVPPathMessageFlowRSVPPathObjectsIter + Items() []FlowRSVPPathObjects + Add() FlowRSVPPathObjects + Append(items ...FlowRSVPPathObjects) FlowRSVPPathMessageFlowRSVPPathObjectsIter + Set(index int, newObj FlowRSVPPathObjects) FlowRSVPPathMessageFlowRSVPPathObjectsIter + Clear() FlowRSVPPathMessageFlowRSVPPathObjectsIter + clearHolderSlice() FlowRSVPPathMessageFlowRSVPPathObjectsIter + appendHolderSlice(item FlowRSVPPathObjects) FlowRSVPPathMessageFlowRSVPPathObjectsIter +} - obj.obj.Name = &value +func (obj *flowRSVPPathMessageFlowRSVPPathObjectsIter) setMsg(msg *flowRSVPPathMessage) FlowRSVPPathMessageFlowRSVPPathObjectsIter { + obj.clearHolderSlice() + for _, val := range *obj.fieldPtr { + obj.appendHolderSlice(&flowRSVPPathObjects{obj: val}) + } + obj.obj = msg return obj } -// Offset in bits relative to start of corresponding header field -// Offset returns a uint32 -func (obj *patternFlowUdpSrcPortMetricTag) Offset() uint32 { - - return *obj.obj.Offset - +func (obj *flowRSVPPathMessageFlowRSVPPathObjectsIter) Items() []FlowRSVPPathObjects { + return obj.flowRSVPPathObjectsSlice } -// Offset in bits relative to start of corresponding header field -// Offset returns a uint32 -func (obj *patternFlowUdpSrcPortMetricTag) HasOffset() bool { - return obj.obj.Offset != nil +func (obj *flowRSVPPathMessageFlowRSVPPathObjectsIter) Add() FlowRSVPPathObjects { + newObj := &otg.FlowRSVPPathObjects{} + *obj.fieldPtr = append(*obj.fieldPtr, newObj) + newLibObj := &flowRSVPPathObjects{obj: newObj} + newLibObj.setDefault() + obj.flowRSVPPathObjectsSlice = append(obj.flowRSVPPathObjectsSlice, newLibObj) + return newLibObj } -// Offset in bits relative to start of corresponding header field -// SetOffset sets the uint32 value in the PatternFlowUdpSrcPortMetricTag object -func (obj *patternFlowUdpSrcPortMetricTag) SetOffset(value uint32) PatternFlowUdpSrcPortMetricTag { - - obj.obj.Offset = &value +func (obj *flowRSVPPathMessageFlowRSVPPathObjectsIter) Append(items ...FlowRSVPPathObjects) FlowRSVPPathMessageFlowRSVPPathObjectsIter { + for _, item := range items { + newObj := item.Msg() + *obj.fieldPtr = append(*obj.fieldPtr, newObj) + obj.flowRSVPPathObjectsSlice = append(obj.flowRSVPPathObjectsSlice, item) + } return obj } -// Number of bits to track for metrics starting from configured offset of corresponding header field -// Length returns a uint32 -func (obj *patternFlowUdpSrcPortMetricTag) Length() uint32 { - - return *obj.obj.Length - +func (obj *flowRSVPPathMessageFlowRSVPPathObjectsIter) Set(index int, newObj FlowRSVPPathObjects) FlowRSVPPathMessageFlowRSVPPathObjectsIter { + (*obj.fieldPtr)[index] = newObj.Msg() + obj.flowRSVPPathObjectsSlice[index] = newObj + return obj } - -// Number of bits to track for metrics starting from configured offset of corresponding header field -// Length returns a uint32 -func (obj *patternFlowUdpSrcPortMetricTag) HasLength() bool { - return obj.obj.Length != nil +func (obj *flowRSVPPathMessageFlowRSVPPathObjectsIter) Clear() FlowRSVPPathMessageFlowRSVPPathObjectsIter { + if len(*obj.fieldPtr) > 0 { + *obj.fieldPtr = []*otg.FlowRSVPPathObjects{} + obj.flowRSVPPathObjectsSlice = []FlowRSVPPathObjects{} + } + return obj } - -// Number of bits to track for metrics starting from configured offset of corresponding header field -// SetLength sets the uint32 value in the PatternFlowUdpSrcPortMetricTag object -func (obj *patternFlowUdpSrcPortMetricTag) SetLength(value uint32) PatternFlowUdpSrcPortMetricTag { - - obj.obj.Length = &value +func (obj *flowRSVPPathMessageFlowRSVPPathObjectsIter) clearHolderSlice() FlowRSVPPathMessageFlowRSVPPathObjectsIter { + if len(obj.flowRSVPPathObjectsSlice) > 0 { + obj.flowRSVPPathObjectsSlice = []FlowRSVPPathObjects{} + } + return obj +} +func (obj *flowRSVPPathMessageFlowRSVPPathObjectsIter) appendHolderSlice(item FlowRSVPPathObjects) FlowRSVPPathMessageFlowRSVPPathObjectsIter { + obj.flowRSVPPathObjectsSlice = append(obj.flowRSVPPathObjectsSlice, item) return obj } -func (obj *patternFlowUdpSrcPortMetricTag) validateObj(vObj *validation, set_default bool) { +func (obj *flowRSVPPathMessage) validateObj(vObj *validation, set_default bool) { if set_default { obj.setDefault() } - // Name is required - if obj.obj.Name == nil { - vObj.validationErrors = append(vObj.validationErrors, "Name is required field on interface PatternFlowUdpSrcPortMetricTag") - } - - if obj.obj.Offset != nil { + if len(obj.obj.Objects) != 0 { - if *obj.obj.Offset > 15 { - vObj.validationErrors = append( - vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowUdpSrcPortMetricTag.Offset <= 15 but Got %d", *obj.obj.Offset)) + if set_default { + obj.Objects().clearHolderSlice() + for _, item := range obj.obj.Objects { + obj.Objects().appendHolderSlice(&flowRSVPPathObjects{obj: item}) + } } - - } - - if obj.obj.Length != nil { - - if *obj.obj.Length < 1 || *obj.obj.Length > 16 { - vObj.validationErrors = append( - vObj.validationErrors, - fmt.Sprintf("1 <= PatternFlowUdpSrcPortMetricTag.Length <= 16 but Got %d", *obj.obj.Length)) + for _, item := range obj.Objects().Items() { + item.validateObj(vObj, set_default) } } } -func (obj *patternFlowUdpSrcPortMetricTag) setDefault() { - if obj.obj.Offset == nil { - obj.SetOffset(0) - } - if obj.obj.Length == nil { - obj.SetLength(16) - } +func (obj *flowRSVPPathMessage) setDefault() { } -// ***** PatternFlowUdpDstPortCounter ***** -type patternFlowUdpDstPortCounter struct { +// ***** ActionResponseProtocolIpv4Ping ***** +type actionResponseProtocolIpv4Ping struct { validation - obj *otg.PatternFlowUdpDstPortCounter + obj *otg.ActionResponseProtocolIpv4Ping + responsesHolder ActionResponseProtocolIpv4PingActionResponseProtocolIpv4PingResponseIter } -func NewPatternFlowUdpDstPortCounter() PatternFlowUdpDstPortCounter { - obj := patternFlowUdpDstPortCounter{obj: &otg.PatternFlowUdpDstPortCounter{}} +func NewActionResponseProtocolIpv4Ping() ActionResponseProtocolIpv4Ping { + obj := actionResponseProtocolIpv4Ping{obj: &otg.ActionResponseProtocolIpv4Ping{}} obj.setDefault() return &obj } -func (obj *patternFlowUdpDstPortCounter) Msg() *otg.PatternFlowUdpDstPortCounter { +func (obj *actionResponseProtocolIpv4Ping) Msg() *otg.ActionResponseProtocolIpv4Ping { return obj.obj } -func (obj *patternFlowUdpDstPortCounter) SetMsg(msg *otg.PatternFlowUdpDstPortCounter) PatternFlowUdpDstPortCounter { - +func (obj *actionResponseProtocolIpv4Ping) SetMsg(msg *otg.ActionResponseProtocolIpv4Ping) ActionResponseProtocolIpv4Ping { + obj.setNil() proto.Merge(obj.obj, msg) return obj } -func (obj *patternFlowUdpDstPortCounter) ToProto() (*otg.PatternFlowUdpDstPortCounter, error) { +func (obj *actionResponseProtocolIpv4Ping) ToProto() (*otg.ActionResponseProtocolIpv4Ping, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -231723,7 +276496,7 @@ func (obj *patternFlowUdpDstPortCounter) ToProto() (*otg.PatternFlowUdpDstPortCo return obj.Msg(), nil } -func (obj *patternFlowUdpDstPortCounter) FromProto(msg *otg.PatternFlowUdpDstPortCounter) (PatternFlowUdpDstPortCounter, error) { +func (obj *actionResponseProtocolIpv4Ping) FromProto(msg *otg.ActionResponseProtocolIpv4Ping) (ActionResponseProtocolIpv4Ping, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -231732,7 +276505,7 @@ func (obj *patternFlowUdpDstPortCounter) FromProto(msg *otg.PatternFlowUdpDstPor return newObj, nil } -func (obj *patternFlowUdpDstPortCounter) ToPbText() (string, error) { +func (obj *actionResponseProtocolIpv4Ping) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -231744,12 +276517,12 @@ func (obj *patternFlowUdpDstPortCounter) ToPbText() (string, error) { return string(protoMarshal), nil } -func (obj *patternFlowUdpDstPortCounter) FromPbText(value string) error { +func (obj *actionResponseProtocolIpv4Ping) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj } - + obj.setNil() vErr := obj.validateToAndFrom() if vErr != nil { return vErr @@ -231757,7 +276530,7 @@ func (obj *patternFlowUdpDstPortCounter) FromPbText(value string) error { return retObj } -func (obj *patternFlowUdpDstPortCounter) ToYaml() (string, error) { +func (obj *actionResponseProtocolIpv4Ping) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -231778,7 +276551,7 @@ func (obj *patternFlowUdpDstPortCounter) ToYaml() (string, error) { return string(data), nil } -func (obj *patternFlowUdpDstPortCounter) FromYaml(value string) error { +func (obj *actionResponseProtocolIpv4Ping) FromYaml(value string) error { if value == "" { value = "{}" } @@ -231795,7 +276568,7 @@ func (obj *patternFlowUdpDstPortCounter) FromYaml(value string) error { return fmt.Errorf("unmarshal error %s", strings.Replace( uError.Error(), "\u00a0", " ", -1)[7:]) } - + obj.setNil() vErr := obj.validateToAndFrom() if vErr != nil { return vErr @@ -231803,7 +276576,7 @@ func (obj *patternFlowUdpDstPortCounter) FromYaml(value string) error { return nil } -func (obj *patternFlowUdpDstPortCounter) ToJson() (string, error) { +func (obj *actionResponseProtocolIpv4Ping) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -231821,7 +276594,7 @@ func (obj *patternFlowUdpDstPortCounter) ToJson() (string, error) { return string(data), nil } -func (obj *patternFlowUdpDstPortCounter) FromJson(value string) error { +func (obj *actionResponseProtocolIpv4Ping) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -231834,7 +276607,7 @@ func (obj *patternFlowUdpDstPortCounter) FromJson(value string) error { return fmt.Errorf("unmarshal error %s", strings.Replace( uError.Error(), "\u00a0", " ", -1)[7:]) } - + obj.setNil() err := obj.validateToAndFrom() if err != nil { return err @@ -231842,19 +276615,19 @@ func (obj *patternFlowUdpDstPortCounter) FromJson(value string) error { return nil } -func (obj *patternFlowUdpDstPortCounter) validateToAndFrom() error { +func (obj *actionResponseProtocolIpv4Ping) validateToAndFrom() error { // emptyVars() obj.validateObj(&obj.validation, true) return obj.validationResult() } -func (obj *patternFlowUdpDstPortCounter) Validate() error { +func (obj *actionResponseProtocolIpv4Ping) Validate() error { // emptyVars() obj.validateObj(&obj.validation, false) return obj.validationResult() } -func (obj *patternFlowUdpDstPortCounter) String() string { +func (obj *actionResponseProtocolIpv4Ping) String() string { str, err := obj.ToYaml() if err != nil { return err.Error() @@ -231862,12 +276635,12 @@ func (obj *patternFlowUdpDstPortCounter) String() string { return str } -func (obj *patternFlowUdpDstPortCounter) Clone() (PatternFlowUdpDstPortCounter, error) { +func (obj *actionResponseProtocolIpv4Ping) Clone() (ActionResponseProtocolIpv4Ping, error) { vErr := obj.Validate() if vErr != nil { return nil, vErr } - newObj := NewPatternFlowUdpDstPortCounter() + newObj := NewActionResponseProtocolIpv4Ping() data, err := proto.Marshal(obj.Msg()) if err != nil { return nil, err @@ -231879,199 +276652,188 @@ func (obj *patternFlowUdpDstPortCounter) Clone() (PatternFlowUdpDstPortCounter, return newObj, nil } -// PatternFlowUdpDstPortCounter is integer counter pattern -type PatternFlowUdpDstPortCounter interface { +func (obj *actionResponseProtocolIpv4Ping) setNil() { + obj.responsesHolder = nil + obj.validationErrors = nil + obj.warnings = nil + obj.constraints = make(map[string]map[string]Constraints) +} + +// ActionResponseProtocolIpv4Ping is response for ping initiated between multiple source and destination pairs. +type ActionResponseProtocolIpv4Ping interface { Validation - // Msg marshals PatternFlowUdpDstPortCounter to protobuf object *otg.PatternFlowUdpDstPortCounter + // Msg marshals ActionResponseProtocolIpv4Ping to protobuf object *otg.ActionResponseProtocolIpv4Ping // and doesn't set defaults - Msg() *otg.PatternFlowUdpDstPortCounter - // SetMsg unmarshals PatternFlowUdpDstPortCounter from protobuf object *otg.PatternFlowUdpDstPortCounter + Msg() *otg.ActionResponseProtocolIpv4Ping + // SetMsg unmarshals ActionResponseProtocolIpv4Ping from protobuf object *otg.ActionResponseProtocolIpv4Ping // and doesn't set defaults - SetMsg(*otg.PatternFlowUdpDstPortCounter) PatternFlowUdpDstPortCounter - // ToProto marshals PatternFlowUdpDstPortCounter to protobuf object *otg.PatternFlowUdpDstPortCounter - ToProto() (*otg.PatternFlowUdpDstPortCounter, error) - // ToPbText marshals PatternFlowUdpDstPortCounter to protobuf text + SetMsg(*otg.ActionResponseProtocolIpv4Ping) ActionResponseProtocolIpv4Ping + // ToProto marshals ActionResponseProtocolIpv4Ping to protobuf object *otg.ActionResponseProtocolIpv4Ping + ToProto() (*otg.ActionResponseProtocolIpv4Ping, error) + // ToPbText marshals ActionResponseProtocolIpv4Ping to protobuf text ToPbText() (string, error) - // ToYaml marshals PatternFlowUdpDstPortCounter to YAML text + // ToYaml marshals ActionResponseProtocolIpv4Ping to YAML text ToYaml() (string, error) - // ToJson marshals PatternFlowUdpDstPortCounter to JSON text + // ToJson marshals ActionResponseProtocolIpv4Ping to JSON text ToJson() (string, error) - // FromProto unmarshals PatternFlowUdpDstPortCounter from protobuf object *otg.PatternFlowUdpDstPortCounter - FromProto(msg *otg.PatternFlowUdpDstPortCounter) (PatternFlowUdpDstPortCounter, error) - // FromPbText unmarshals PatternFlowUdpDstPortCounter from protobuf text + // FromProto unmarshals ActionResponseProtocolIpv4Ping from protobuf object *otg.ActionResponseProtocolIpv4Ping + FromProto(msg *otg.ActionResponseProtocolIpv4Ping) (ActionResponseProtocolIpv4Ping, error) + // FromPbText unmarshals ActionResponseProtocolIpv4Ping from protobuf text FromPbText(value string) error - // FromYaml unmarshals PatternFlowUdpDstPortCounter from YAML text + // FromYaml unmarshals ActionResponseProtocolIpv4Ping from YAML text FromYaml(value string) error - // FromJson unmarshals PatternFlowUdpDstPortCounter from JSON text + // FromJson unmarshals ActionResponseProtocolIpv4Ping from JSON text FromJson(value string) error - // Validate validates PatternFlowUdpDstPortCounter + // Validate validates ActionResponseProtocolIpv4Ping Validate() error // A stringer function String() string // Clones the object - Clone() (PatternFlowUdpDstPortCounter, error) + Clone() (ActionResponseProtocolIpv4Ping, error) validateToAndFrom() error validateObj(vObj *validation, set_default bool) setDefault() - // Start returns uint32, set in PatternFlowUdpDstPortCounter. - Start() uint32 - // SetStart assigns uint32 provided by user to PatternFlowUdpDstPortCounter - SetStart(value uint32) PatternFlowUdpDstPortCounter - // HasStart checks if Start has been set in PatternFlowUdpDstPortCounter - HasStart() bool - // Step returns uint32, set in PatternFlowUdpDstPortCounter. - Step() uint32 - // SetStep assigns uint32 provided by user to PatternFlowUdpDstPortCounter - SetStep(value uint32) PatternFlowUdpDstPortCounter - // HasStep checks if Step has been set in PatternFlowUdpDstPortCounter - HasStep() bool - // Count returns uint32, set in PatternFlowUdpDstPortCounter. - Count() uint32 - // SetCount assigns uint32 provided by user to PatternFlowUdpDstPortCounter - SetCount(value uint32) PatternFlowUdpDstPortCounter - // HasCount checks if Count has been set in PatternFlowUdpDstPortCounter - HasCount() bool + // Responses returns ActionResponseProtocolIpv4PingActionResponseProtocolIpv4PingResponseIterIter, set in ActionResponseProtocolIpv4Ping + Responses() ActionResponseProtocolIpv4PingActionResponseProtocolIpv4PingResponseIter + setNil() } -// description is TBD -// Start returns a uint32 -func (obj *patternFlowUdpDstPortCounter) Start() uint32 { - - return *obj.obj.Start +// List of responses for IPv4 ping responses. +// Responses returns a []ActionResponseProtocolIpv4PingResponse +func (obj *actionResponseProtocolIpv4Ping) Responses() ActionResponseProtocolIpv4PingActionResponseProtocolIpv4PingResponseIter { + if len(obj.obj.Responses) == 0 { + obj.obj.Responses = []*otg.ActionResponseProtocolIpv4PingResponse{} + } + if obj.responsesHolder == nil { + obj.responsesHolder = newActionResponseProtocolIpv4PingActionResponseProtocolIpv4PingResponseIter(&obj.obj.Responses).setMsg(obj) + } + return obj.responsesHolder +} +type actionResponseProtocolIpv4PingActionResponseProtocolIpv4PingResponseIter struct { + obj *actionResponseProtocolIpv4Ping + actionResponseProtocolIpv4PingResponseSlice []ActionResponseProtocolIpv4PingResponse + fieldPtr *[]*otg.ActionResponseProtocolIpv4PingResponse } -// description is TBD -// Start returns a uint32 -func (obj *patternFlowUdpDstPortCounter) HasStart() bool { - return obj.obj.Start != nil +func newActionResponseProtocolIpv4PingActionResponseProtocolIpv4PingResponseIter(ptr *[]*otg.ActionResponseProtocolIpv4PingResponse) ActionResponseProtocolIpv4PingActionResponseProtocolIpv4PingResponseIter { + return &actionResponseProtocolIpv4PingActionResponseProtocolIpv4PingResponseIter{fieldPtr: ptr} } -// description is TBD -// SetStart sets the uint32 value in the PatternFlowUdpDstPortCounter object -func (obj *patternFlowUdpDstPortCounter) SetStart(value uint32) PatternFlowUdpDstPortCounter { +type ActionResponseProtocolIpv4PingActionResponseProtocolIpv4PingResponseIter interface { + setMsg(*actionResponseProtocolIpv4Ping) ActionResponseProtocolIpv4PingActionResponseProtocolIpv4PingResponseIter + Items() []ActionResponseProtocolIpv4PingResponse + Add() ActionResponseProtocolIpv4PingResponse + Append(items ...ActionResponseProtocolIpv4PingResponse) ActionResponseProtocolIpv4PingActionResponseProtocolIpv4PingResponseIter + Set(index int, newObj ActionResponseProtocolIpv4PingResponse) ActionResponseProtocolIpv4PingActionResponseProtocolIpv4PingResponseIter + Clear() ActionResponseProtocolIpv4PingActionResponseProtocolIpv4PingResponseIter + clearHolderSlice() ActionResponseProtocolIpv4PingActionResponseProtocolIpv4PingResponseIter + appendHolderSlice(item ActionResponseProtocolIpv4PingResponse) ActionResponseProtocolIpv4PingActionResponseProtocolIpv4PingResponseIter +} - obj.obj.Start = &value +func (obj *actionResponseProtocolIpv4PingActionResponseProtocolIpv4PingResponseIter) setMsg(msg *actionResponseProtocolIpv4Ping) ActionResponseProtocolIpv4PingActionResponseProtocolIpv4PingResponseIter { + obj.clearHolderSlice() + for _, val := range *obj.fieldPtr { + obj.appendHolderSlice(&actionResponseProtocolIpv4PingResponse{obj: val}) + } + obj.obj = msg return obj } -// description is TBD -// Step returns a uint32 -func (obj *patternFlowUdpDstPortCounter) Step() uint32 { - - return *obj.obj.Step - +func (obj *actionResponseProtocolIpv4PingActionResponseProtocolIpv4PingResponseIter) Items() []ActionResponseProtocolIpv4PingResponse { + return obj.actionResponseProtocolIpv4PingResponseSlice } -// description is TBD -// Step returns a uint32 -func (obj *patternFlowUdpDstPortCounter) HasStep() bool { - return obj.obj.Step != nil +func (obj *actionResponseProtocolIpv4PingActionResponseProtocolIpv4PingResponseIter) Add() ActionResponseProtocolIpv4PingResponse { + newObj := &otg.ActionResponseProtocolIpv4PingResponse{} + *obj.fieldPtr = append(*obj.fieldPtr, newObj) + newLibObj := &actionResponseProtocolIpv4PingResponse{obj: newObj} + newLibObj.setDefault() + obj.actionResponseProtocolIpv4PingResponseSlice = append(obj.actionResponseProtocolIpv4PingResponseSlice, newLibObj) + return newLibObj } -// description is TBD -// SetStep sets the uint32 value in the PatternFlowUdpDstPortCounter object -func (obj *patternFlowUdpDstPortCounter) SetStep(value uint32) PatternFlowUdpDstPortCounter { - - obj.obj.Step = &value +func (obj *actionResponseProtocolIpv4PingActionResponseProtocolIpv4PingResponseIter) Append(items ...ActionResponseProtocolIpv4PingResponse) ActionResponseProtocolIpv4PingActionResponseProtocolIpv4PingResponseIter { + for _, item := range items { + newObj := item.Msg() + *obj.fieldPtr = append(*obj.fieldPtr, newObj) + obj.actionResponseProtocolIpv4PingResponseSlice = append(obj.actionResponseProtocolIpv4PingResponseSlice, item) + } return obj } -// description is TBD -// Count returns a uint32 -func (obj *patternFlowUdpDstPortCounter) Count() uint32 { - - return *obj.obj.Count - +func (obj *actionResponseProtocolIpv4PingActionResponseProtocolIpv4PingResponseIter) Set(index int, newObj ActionResponseProtocolIpv4PingResponse) ActionResponseProtocolIpv4PingActionResponseProtocolIpv4PingResponseIter { + (*obj.fieldPtr)[index] = newObj.Msg() + obj.actionResponseProtocolIpv4PingResponseSlice[index] = newObj + return obj } - -// description is TBD -// Count returns a uint32 -func (obj *patternFlowUdpDstPortCounter) HasCount() bool { - return obj.obj.Count != nil +func (obj *actionResponseProtocolIpv4PingActionResponseProtocolIpv4PingResponseIter) Clear() ActionResponseProtocolIpv4PingActionResponseProtocolIpv4PingResponseIter { + if len(*obj.fieldPtr) > 0 { + *obj.fieldPtr = []*otg.ActionResponseProtocolIpv4PingResponse{} + obj.actionResponseProtocolIpv4PingResponseSlice = []ActionResponseProtocolIpv4PingResponse{} + } + return obj } - -// description is TBD -// SetCount sets the uint32 value in the PatternFlowUdpDstPortCounter object -func (obj *patternFlowUdpDstPortCounter) SetCount(value uint32) PatternFlowUdpDstPortCounter { - - obj.obj.Count = &value +func (obj *actionResponseProtocolIpv4PingActionResponseProtocolIpv4PingResponseIter) clearHolderSlice() ActionResponseProtocolIpv4PingActionResponseProtocolIpv4PingResponseIter { + if len(obj.actionResponseProtocolIpv4PingResponseSlice) > 0 { + obj.actionResponseProtocolIpv4PingResponseSlice = []ActionResponseProtocolIpv4PingResponse{} + } + return obj +} +func (obj *actionResponseProtocolIpv4PingActionResponseProtocolIpv4PingResponseIter) appendHolderSlice(item ActionResponseProtocolIpv4PingResponse) ActionResponseProtocolIpv4PingActionResponseProtocolIpv4PingResponseIter { + obj.actionResponseProtocolIpv4PingResponseSlice = append(obj.actionResponseProtocolIpv4PingResponseSlice, item) return obj } -func (obj *patternFlowUdpDstPortCounter) validateObj(vObj *validation, set_default bool) { +func (obj *actionResponseProtocolIpv4Ping) validateObj(vObj *validation, set_default bool) { if set_default { obj.setDefault() } - if obj.obj.Start != nil { - - if *obj.obj.Start > 65535 { - vObj.validationErrors = append( - vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowUdpDstPortCounter.Start <= 65535 but Got %d", *obj.obj.Start)) - } - - } - - if obj.obj.Step != nil { + if len(obj.obj.Responses) != 0 { - if *obj.obj.Step > 65535 { - vObj.validationErrors = append( - vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowUdpDstPortCounter.Step <= 65535 but Got %d", *obj.obj.Step)) + if set_default { + obj.Responses().clearHolderSlice() + for _, item := range obj.obj.Responses { + obj.Responses().appendHolderSlice(&actionResponseProtocolIpv4PingResponse{obj: item}) + } } - - } - - if obj.obj.Count != nil { - - if *obj.obj.Count > 65535 { - vObj.validationErrors = append( - vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowUdpDstPortCounter.Count <= 65535 but Got %d", *obj.obj.Count)) + for _, item := range obj.Responses().Items() { + item.validateObj(vObj, set_default) } } } -func (obj *patternFlowUdpDstPortCounter) setDefault() { - if obj.obj.Start == nil { - obj.SetStart(0) - } - if obj.obj.Step == nil { - obj.SetStep(1) - } - if obj.obj.Count == nil { - obj.SetCount(1) - } +func (obj *actionResponseProtocolIpv4Ping) setDefault() { } -// ***** PatternFlowUdpDstPortMetricTag ***** -type patternFlowUdpDstPortMetricTag struct { +// ***** ActionResponseProtocolIpv6Ping ***** +type actionResponseProtocolIpv6Ping struct { validation - obj *otg.PatternFlowUdpDstPortMetricTag + obj *otg.ActionResponseProtocolIpv6Ping + responsesHolder ActionResponseProtocolIpv6PingActionResponseProtocolIpv6PingResponseIter } -func NewPatternFlowUdpDstPortMetricTag() PatternFlowUdpDstPortMetricTag { - obj := patternFlowUdpDstPortMetricTag{obj: &otg.PatternFlowUdpDstPortMetricTag{}} +func NewActionResponseProtocolIpv6Ping() ActionResponseProtocolIpv6Ping { + obj := actionResponseProtocolIpv6Ping{obj: &otg.ActionResponseProtocolIpv6Ping{}} obj.setDefault() return &obj } -func (obj *patternFlowUdpDstPortMetricTag) Msg() *otg.PatternFlowUdpDstPortMetricTag { +func (obj *actionResponseProtocolIpv6Ping) Msg() *otg.ActionResponseProtocolIpv6Ping { return obj.obj } -func (obj *patternFlowUdpDstPortMetricTag) SetMsg(msg *otg.PatternFlowUdpDstPortMetricTag) PatternFlowUdpDstPortMetricTag { - +func (obj *actionResponseProtocolIpv6Ping) SetMsg(msg *otg.ActionResponseProtocolIpv6Ping) ActionResponseProtocolIpv6Ping { + obj.setNil() proto.Merge(obj.obj, msg) return obj } -func (obj *patternFlowUdpDstPortMetricTag) ToProto() (*otg.PatternFlowUdpDstPortMetricTag, error) { +func (obj *actionResponseProtocolIpv6Ping) ToProto() (*otg.ActionResponseProtocolIpv6Ping, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -232079,7 +276841,7 @@ func (obj *patternFlowUdpDstPortMetricTag) ToProto() (*otg.PatternFlowUdpDstPort return obj.Msg(), nil } -func (obj *patternFlowUdpDstPortMetricTag) FromProto(msg *otg.PatternFlowUdpDstPortMetricTag) (PatternFlowUdpDstPortMetricTag, error) { +func (obj *actionResponseProtocolIpv6Ping) FromProto(msg *otg.ActionResponseProtocolIpv6Ping) (ActionResponseProtocolIpv6Ping, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -232088,7 +276850,7 @@ func (obj *patternFlowUdpDstPortMetricTag) FromProto(msg *otg.PatternFlowUdpDstP return newObj, nil } -func (obj *patternFlowUdpDstPortMetricTag) ToPbText() (string, error) { +func (obj *actionResponseProtocolIpv6Ping) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -232100,12 +276862,12 @@ func (obj *patternFlowUdpDstPortMetricTag) ToPbText() (string, error) { return string(protoMarshal), nil } -func (obj *patternFlowUdpDstPortMetricTag) FromPbText(value string) error { +func (obj *actionResponseProtocolIpv6Ping) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj } - + obj.setNil() vErr := obj.validateToAndFrom() if vErr != nil { return vErr @@ -232113,7 +276875,7 @@ func (obj *patternFlowUdpDstPortMetricTag) FromPbText(value string) error { return retObj } -func (obj *patternFlowUdpDstPortMetricTag) ToYaml() (string, error) { +func (obj *actionResponseProtocolIpv6Ping) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -232134,7 +276896,7 @@ func (obj *patternFlowUdpDstPortMetricTag) ToYaml() (string, error) { return string(data), nil } -func (obj *patternFlowUdpDstPortMetricTag) FromYaml(value string) error { +func (obj *actionResponseProtocolIpv6Ping) FromYaml(value string) error { if value == "" { value = "{}" } @@ -232151,7 +276913,7 @@ func (obj *patternFlowUdpDstPortMetricTag) FromYaml(value string) error { return fmt.Errorf("unmarshal error %s", strings.Replace( uError.Error(), "\u00a0", " ", -1)[7:]) } - + obj.setNil() vErr := obj.validateToAndFrom() if vErr != nil { return vErr @@ -232159,7 +276921,7 @@ func (obj *patternFlowUdpDstPortMetricTag) FromYaml(value string) error { return nil } -func (obj *patternFlowUdpDstPortMetricTag) ToJson() (string, error) { +func (obj *actionResponseProtocolIpv6Ping) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -232177,7 +276939,7 @@ func (obj *patternFlowUdpDstPortMetricTag) ToJson() (string, error) { return string(data), nil } -func (obj *patternFlowUdpDstPortMetricTag) FromJson(value string) error { +func (obj *actionResponseProtocolIpv6Ping) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -232190,7 +276952,7 @@ func (obj *patternFlowUdpDstPortMetricTag) FromJson(value string) error { return fmt.Errorf("unmarshal error %s", strings.Replace( uError.Error(), "\u00a0", " ", -1)[7:]) } - + obj.setNil() err := obj.validateToAndFrom() if err != nil { return err @@ -232198,19 +276960,19 @@ func (obj *patternFlowUdpDstPortMetricTag) FromJson(value string) error { return nil } -func (obj *patternFlowUdpDstPortMetricTag) validateToAndFrom() error { +func (obj *actionResponseProtocolIpv6Ping) validateToAndFrom() error { // emptyVars() obj.validateObj(&obj.validation, true) return obj.validationResult() } -func (obj *patternFlowUdpDstPortMetricTag) Validate() error { +func (obj *actionResponseProtocolIpv6Ping) Validate() error { // emptyVars() obj.validateObj(&obj.validation, false) return obj.validationResult() } -func (obj *patternFlowUdpDstPortMetricTag) String() string { +func (obj *actionResponseProtocolIpv6Ping) String() string { str, err := obj.ToYaml() if err != nil { return err.Error() @@ -232218,12 +276980,12 @@ func (obj *patternFlowUdpDstPortMetricTag) String() string { return str } -func (obj *patternFlowUdpDstPortMetricTag) Clone() (PatternFlowUdpDstPortMetricTag, error) { +func (obj *actionResponseProtocolIpv6Ping) Clone() (ActionResponseProtocolIpv6Ping, error) { vErr := obj.Validate() if vErr != nil { return nil, vErr } - newObj := NewPatternFlowUdpDstPortMetricTag() + newObj := NewActionResponseProtocolIpv6Ping() data, err := proto.Marshal(obj.Msg()) if err != nil { return nil, err @@ -232235,183 +276997,187 @@ func (obj *patternFlowUdpDstPortMetricTag) Clone() (PatternFlowUdpDstPortMetricT return newObj, nil } -// PatternFlowUdpDstPortMetricTag is metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. -type PatternFlowUdpDstPortMetricTag interface { +func (obj *actionResponseProtocolIpv6Ping) setNil() { + obj.responsesHolder = nil + obj.validationErrors = nil + obj.warnings = nil + obj.constraints = make(map[string]map[string]Constraints) +} + +// ActionResponseProtocolIpv6Ping is response for ping initiated between multiple source and destination pairs. +type ActionResponseProtocolIpv6Ping interface { Validation - // Msg marshals PatternFlowUdpDstPortMetricTag to protobuf object *otg.PatternFlowUdpDstPortMetricTag + // Msg marshals ActionResponseProtocolIpv6Ping to protobuf object *otg.ActionResponseProtocolIpv6Ping // and doesn't set defaults - Msg() *otg.PatternFlowUdpDstPortMetricTag - // SetMsg unmarshals PatternFlowUdpDstPortMetricTag from protobuf object *otg.PatternFlowUdpDstPortMetricTag + Msg() *otg.ActionResponseProtocolIpv6Ping + // SetMsg unmarshals ActionResponseProtocolIpv6Ping from protobuf object *otg.ActionResponseProtocolIpv6Ping // and doesn't set defaults - SetMsg(*otg.PatternFlowUdpDstPortMetricTag) PatternFlowUdpDstPortMetricTag - // ToProto marshals PatternFlowUdpDstPortMetricTag to protobuf object *otg.PatternFlowUdpDstPortMetricTag - ToProto() (*otg.PatternFlowUdpDstPortMetricTag, error) - // ToPbText marshals PatternFlowUdpDstPortMetricTag to protobuf text + SetMsg(*otg.ActionResponseProtocolIpv6Ping) ActionResponseProtocolIpv6Ping + // ToProto marshals ActionResponseProtocolIpv6Ping to protobuf object *otg.ActionResponseProtocolIpv6Ping + ToProto() (*otg.ActionResponseProtocolIpv6Ping, error) + // ToPbText marshals ActionResponseProtocolIpv6Ping to protobuf text ToPbText() (string, error) - // ToYaml marshals PatternFlowUdpDstPortMetricTag to YAML text + // ToYaml marshals ActionResponseProtocolIpv6Ping to YAML text ToYaml() (string, error) - // ToJson marshals PatternFlowUdpDstPortMetricTag to JSON text + // ToJson marshals ActionResponseProtocolIpv6Ping to JSON text ToJson() (string, error) - // FromProto unmarshals PatternFlowUdpDstPortMetricTag from protobuf object *otg.PatternFlowUdpDstPortMetricTag - FromProto(msg *otg.PatternFlowUdpDstPortMetricTag) (PatternFlowUdpDstPortMetricTag, error) - // FromPbText unmarshals PatternFlowUdpDstPortMetricTag from protobuf text + // FromProto unmarshals ActionResponseProtocolIpv6Ping from protobuf object *otg.ActionResponseProtocolIpv6Ping + FromProto(msg *otg.ActionResponseProtocolIpv6Ping) (ActionResponseProtocolIpv6Ping, error) + // FromPbText unmarshals ActionResponseProtocolIpv6Ping from protobuf text FromPbText(value string) error - // FromYaml unmarshals PatternFlowUdpDstPortMetricTag from YAML text + // FromYaml unmarshals ActionResponseProtocolIpv6Ping from YAML text FromYaml(value string) error - // FromJson unmarshals PatternFlowUdpDstPortMetricTag from JSON text + // FromJson unmarshals ActionResponseProtocolIpv6Ping from JSON text FromJson(value string) error - // Validate validates PatternFlowUdpDstPortMetricTag + // Validate validates ActionResponseProtocolIpv6Ping Validate() error // A stringer function String() string // Clones the object - Clone() (PatternFlowUdpDstPortMetricTag, error) + Clone() (ActionResponseProtocolIpv6Ping, error) validateToAndFrom() error validateObj(vObj *validation, set_default bool) setDefault() - // Name returns string, set in PatternFlowUdpDstPortMetricTag. - Name() string - // SetName assigns string provided by user to PatternFlowUdpDstPortMetricTag - SetName(value string) PatternFlowUdpDstPortMetricTag - // Offset returns uint32, set in PatternFlowUdpDstPortMetricTag. - Offset() uint32 - // SetOffset assigns uint32 provided by user to PatternFlowUdpDstPortMetricTag - SetOffset(value uint32) PatternFlowUdpDstPortMetricTag - // HasOffset checks if Offset has been set in PatternFlowUdpDstPortMetricTag - HasOffset() bool - // Length returns uint32, set in PatternFlowUdpDstPortMetricTag. - Length() uint32 - // SetLength assigns uint32 provided by user to PatternFlowUdpDstPortMetricTag - SetLength(value uint32) PatternFlowUdpDstPortMetricTag - // HasLength checks if Length has been set in PatternFlowUdpDstPortMetricTag - HasLength() bool + // Responses returns ActionResponseProtocolIpv6PingActionResponseProtocolIpv6PingResponseIterIter, set in ActionResponseProtocolIpv6Ping + Responses() ActionResponseProtocolIpv6PingActionResponseProtocolIpv6PingResponseIter + setNil() } -// Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field -// Name returns a string -func (obj *patternFlowUdpDstPortMetricTag) Name() string { +// List of responses for IPv6 ping responses. +// Responses returns a []ActionResponseProtocolIpv6PingResponse +func (obj *actionResponseProtocolIpv6Ping) Responses() ActionResponseProtocolIpv6PingActionResponseProtocolIpv6PingResponseIter { + if len(obj.obj.Responses) == 0 { + obj.obj.Responses = []*otg.ActionResponseProtocolIpv6PingResponse{} + } + if obj.responsesHolder == nil { + obj.responsesHolder = newActionResponseProtocolIpv6PingActionResponseProtocolIpv6PingResponseIter(&obj.obj.Responses).setMsg(obj) + } + return obj.responsesHolder +} - return *obj.obj.Name +type actionResponseProtocolIpv6PingActionResponseProtocolIpv6PingResponseIter struct { + obj *actionResponseProtocolIpv6Ping + actionResponseProtocolIpv6PingResponseSlice []ActionResponseProtocolIpv6PingResponse + fieldPtr *[]*otg.ActionResponseProtocolIpv6PingResponse +} +func newActionResponseProtocolIpv6PingActionResponseProtocolIpv6PingResponseIter(ptr *[]*otg.ActionResponseProtocolIpv6PingResponse) ActionResponseProtocolIpv6PingActionResponseProtocolIpv6PingResponseIter { + return &actionResponseProtocolIpv6PingActionResponseProtocolIpv6PingResponseIter{fieldPtr: ptr} } -// Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field -// SetName sets the string value in the PatternFlowUdpDstPortMetricTag object -func (obj *patternFlowUdpDstPortMetricTag) SetName(value string) PatternFlowUdpDstPortMetricTag { +type ActionResponseProtocolIpv6PingActionResponseProtocolIpv6PingResponseIter interface { + setMsg(*actionResponseProtocolIpv6Ping) ActionResponseProtocolIpv6PingActionResponseProtocolIpv6PingResponseIter + Items() []ActionResponseProtocolIpv6PingResponse + Add() ActionResponseProtocolIpv6PingResponse + Append(items ...ActionResponseProtocolIpv6PingResponse) ActionResponseProtocolIpv6PingActionResponseProtocolIpv6PingResponseIter + Set(index int, newObj ActionResponseProtocolIpv6PingResponse) ActionResponseProtocolIpv6PingActionResponseProtocolIpv6PingResponseIter + Clear() ActionResponseProtocolIpv6PingActionResponseProtocolIpv6PingResponseIter + clearHolderSlice() ActionResponseProtocolIpv6PingActionResponseProtocolIpv6PingResponseIter + appendHolderSlice(item ActionResponseProtocolIpv6PingResponse) ActionResponseProtocolIpv6PingActionResponseProtocolIpv6PingResponseIter +} - obj.obj.Name = &value +func (obj *actionResponseProtocolIpv6PingActionResponseProtocolIpv6PingResponseIter) setMsg(msg *actionResponseProtocolIpv6Ping) ActionResponseProtocolIpv6PingActionResponseProtocolIpv6PingResponseIter { + obj.clearHolderSlice() + for _, val := range *obj.fieldPtr { + obj.appendHolderSlice(&actionResponseProtocolIpv6PingResponse{obj: val}) + } + obj.obj = msg return obj } -// Offset in bits relative to start of corresponding header field -// Offset returns a uint32 -func (obj *patternFlowUdpDstPortMetricTag) Offset() uint32 { - - return *obj.obj.Offset - +func (obj *actionResponseProtocolIpv6PingActionResponseProtocolIpv6PingResponseIter) Items() []ActionResponseProtocolIpv6PingResponse { + return obj.actionResponseProtocolIpv6PingResponseSlice } -// Offset in bits relative to start of corresponding header field -// Offset returns a uint32 -func (obj *patternFlowUdpDstPortMetricTag) HasOffset() bool { - return obj.obj.Offset != nil +func (obj *actionResponseProtocolIpv6PingActionResponseProtocolIpv6PingResponseIter) Add() ActionResponseProtocolIpv6PingResponse { + newObj := &otg.ActionResponseProtocolIpv6PingResponse{} + *obj.fieldPtr = append(*obj.fieldPtr, newObj) + newLibObj := &actionResponseProtocolIpv6PingResponse{obj: newObj} + newLibObj.setDefault() + obj.actionResponseProtocolIpv6PingResponseSlice = append(obj.actionResponseProtocolIpv6PingResponseSlice, newLibObj) + return newLibObj } -// Offset in bits relative to start of corresponding header field -// SetOffset sets the uint32 value in the PatternFlowUdpDstPortMetricTag object -func (obj *patternFlowUdpDstPortMetricTag) SetOffset(value uint32) PatternFlowUdpDstPortMetricTag { - - obj.obj.Offset = &value +func (obj *actionResponseProtocolIpv6PingActionResponseProtocolIpv6PingResponseIter) Append(items ...ActionResponseProtocolIpv6PingResponse) ActionResponseProtocolIpv6PingActionResponseProtocolIpv6PingResponseIter { + for _, item := range items { + newObj := item.Msg() + *obj.fieldPtr = append(*obj.fieldPtr, newObj) + obj.actionResponseProtocolIpv6PingResponseSlice = append(obj.actionResponseProtocolIpv6PingResponseSlice, item) + } return obj } -// Number of bits to track for metrics starting from configured offset of corresponding header field -// Length returns a uint32 -func (obj *patternFlowUdpDstPortMetricTag) Length() uint32 { - - return *obj.obj.Length - +func (obj *actionResponseProtocolIpv6PingActionResponseProtocolIpv6PingResponseIter) Set(index int, newObj ActionResponseProtocolIpv6PingResponse) ActionResponseProtocolIpv6PingActionResponseProtocolIpv6PingResponseIter { + (*obj.fieldPtr)[index] = newObj.Msg() + obj.actionResponseProtocolIpv6PingResponseSlice[index] = newObj + return obj } - -// Number of bits to track for metrics starting from configured offset of corresponding header field -// Length returns a uint32 -func (obj *patternFlowUdpDstPortMetricTag) HasLength() bool { - return obj.obj.Length != nil +func (obj *actionResponseProtocolIpv6PingActionResponseProtocolIpv6PingResponseIter) Clear() ActionResponseProtocolIpv6PingActionResponseProtocolIpv6PingResponseIter { + if len(*obj.fieldPtr) > 0 { + *obj.fieldPtr = []*otg.ActionResponseProtocolIpv6PingResponse{} + obj.actionResponseProtocolIpv6PingResponseSlice = []ActionResponseProtocolIpv6PingResponse{} + } + return obj } - -// Number of bits to track for metrics starting from configured offset of corresponding header field -// SetLength sets the uint32 value in the PatternFlowUdpDstPortMetricTag object -func (obj *patternFlowUdpDstPortMetricTag) SetLength(value uint32) PatternFlowUdpDstPortMetricTag { - - obj.obj.Length = &value +func (obj *actionResponseProtocolIpv6PingActionResponseProtocolIpv6PingResponseIter) clearHolderSlice() ActionResponseProtocolIpv6PingActionResponseProtocolIpv6PingResponseIter { + if len(obj.actionResponseProtocolIpv6PingResponseSlice) > 0 { + obj.actionResponseProtocolIpv6PingResponseSlice = []ActionResponseProtocolIpv6PingResponse{} + } + return obj +} +func (obj *actionResponseProtocolIpv6PingActionResponseProtocolIpv6PingResponseIter) appendHolderSlice(item ActionResponseProtocolIpv6PingResponse) ActionResponseProtocolIpv6PingActionResponseProtocolIpv6PingResponseIter { + obj.actionResponseProtocolIpv6PingResponseSlice = append(obj.actionResponseProtocolIpv6PingResponseSlice, item) return obj } -func (obj *patternFlowUdpDstPortMetricTag) validateObj(vObj *validation, set_default bool) { +func (obj *actionResponseProtocolIpv6Ping) validateObj(vObj *validation, set_default bool) { if set_default { obj.setDefault() } - // Name is required - if obj.obj.Name == nil { - vObj.validationErrors = append(vObj.validationErrors, "Name is required field on interface PatternFlowUdpDstPortMetricTag") - } - - if obj.obj.Offset != nil { + if len(obj.obj.Responses) != 0 { - if *obj.obj.Offset > 15 { - vObj.validationErrors = append( - vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowUdpDstPortMetricTag.Offset <= 15 but Got %d", *obj.obj.Offset)) + if set_default { + obj.Responses().clearHolderSlice() + for _, item := range obj.obj.Responses { + obj.Responses().appendHolderSlice(&actionResponseProtocolIpv6PingResponse{obj: item}) + } } - - } - - if obj.obj.Length != nil { - - if *obj.obj.Length < 1 || *obj.obj.Length > 16 { - vObj.validationErrors = append( - vObj.validationErrors, - fmt.Sprintf("1 <= PatternFlowUdpDstPortMetricTag.Length <= 16 but Got %d", *obj.obj.Length)) + for _, item := range obj.Responses().Items() { + item.validateObj(vObj, set_default) } } } -func (obj *patternFlowUdpDstPortMetricTag) setDefault() { - if obj.obj.Offset == nil { - obj.SetOffset(0) - } - if obj.obj.Length == nil { - obj.SetLength(16) - } +func (obj *actionResponseProtocolIpv6Ping) setDefault() { } -// ***** PatternFlowUdpLengthCounter ***** -type patternFlowUdpLengthCounter struct { +// ***** FlowMetricTagValue ***** +type flowMetricTagValue struct { validation - obj *otg.PatternFlowUdpLengthCounter + obj *otg.FlowMetricTagValue } -func NewPatternFlowUdpLengthCounter() PatternFlowUdpLengthCounter { - obj := patternFlowUdpLengthCounter{obj: &otg.PatternFlowUdpLengthCounter{}} +func NewFlowMetricTagValue() FlowMetricTagValue { + obj := flowMetricTagValue{obj: &otg.FlowMetricTagValue{}} obj.setDefault() return &obj } -func (obj *patternFlowUdpLengthCounter) Msg() *otg.PatternFlowUdpLengthCounter { +func (obj *flowMetricTagValue) Msg() *otg.FlowMetricTagValue { return obj.obj } -func (obj *patternFlowUdpLengthCounter) SetMsg(msg *otg.PatternFlowUdpLengthCounter) PatternFlowUdpLengthCounter { +func (obj *flowMetricTagValue) SetMsg(msg *otg.FlowMetricTagValue) FlowMetricTagValue { proto.Merge(obj.obj, msg) return obj } -func (obj *patternFlowUdpLengthCounter) ToProto() (*otg.PatternFlowUdpLengthCounter, error) { +func (obj *flowMetricTagValue) ToProto() (*otg.FlowMetricTagValue, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -232419,7 +277185,7 @@ func (obj *patternFlowUdpLengthCounter) ToProto() (*otg.PatternFlowUdpLengthCoun return obj.Msg(), nil } -func (obj *patternFlowUdpLengthCounter) FromProto(msg *otg.PatternFlowUdpLengthCounter) (PatternFlowUdpLengthCounter, error) { +func (obj *flowMetricTagValue) FromProto(msg *otg.FlowMetricTagValue) (FlowMetricTagValue, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -232428,7 +277194,7 @@ func (obj *patternFlowUdpLengthCounter) FromProto(msg *otg.PatternFlowUdpLengthC return newObj, nil } -func (obj *patternFlowUdpLengthCounter) ToPbText() (string, error) { +func (obj *flowMetricTagValue) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -232440,7 +277206,7 @@ func (obj *patternFlowUdpLengthCounter) ToPbText() (string, error) { return string(protoMarshal), nil } -func (obj *patternFlowUdpLengthCounter) FromPbText(value string) error { +func (obj *flowMetricTagValue) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj @@ -232453,7 +277219,7 @@ func (obj *patternFlowUdpLengthCounter) FromPbText(value string) error { return retObj } -func (obj *patternFlowUdpLengthCounter) ToYaml() (string, error) { +func (obj *flowMetricTagValue) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -232474,7 +277240,7 @@ func (obj *patternFlowUdpLengthCounter) ToYaml() (string, error) { return string(data), nil } -func (obj *patternFlowUdpLengthCounter) FromYaml(value string) error { +func (obj *flowMetricTagValue) FromYaml(value string) error { if value == "" { value = "{}" } @@ -232499,7 +277265,7 @@ func (obj *patternFlowUdpLengthCounter) FromYaml(value string) error { return nil } -func (obj *patternFlowUdpLengthCounter) ToJson() (string, error) { +func (obj *flowMetricTagValue) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -232517,7 +277283,7 @@ func (obj *patternFlowUdpLengthCounter) ToJson() (string, error) { return string(data), nil } -func (obj *patternFlowUdpLengthCounter) FromJson(value string) error { +func (obj *flowMetricTagValue) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -232538,19 +277304,19 @@ func (obj *patternFlowUdpLengthCounter) FromJson(value string) error { return nil } -func (obj *patternFlowUdpLengthCounter) validateToAndFrom() error { +func (obj *flowMetricTagValue) validateToAndFrom() error { // emptyVars() obj.validateObj(&obj.validation, true) return obj.validationResult() } -func (obj *patternFlowUdpLengthCounter) Validate() error { +func (obj *flowMetricTagValue) Validate() error { // emptyVars() obj.validateObj(&obj.validation, false) return obj.validationResult() } -func (obj *patternFlowUdpLengthCounter) String() string { +func (obj *flowMetricTagValue) String() string { str, err := obj.ToYaml() if err != nil { return err.Error() @@ -232558,12 +277324,12 @@ func (obj *patternFlowUdpLengthCounter) String() string { return str } -func (obj *patternFlowUdpLengthCounter) Clone() (PatternFlowUdpLengthCounter, error) { +func (obj *flowMetricTagValue) Clone() (FlowMetricTagValue, error) { vErr := obj.Validate() if vErr != nil { return nil, vErr } - newObj := NewPatternFlowUdpLengthCounter() + newObj := NewFlowMetricTagValue() data, err := proto.Marshal(obj.Msg()) if err != nil { return nil, err @@ -232575,199 +277341,194 @@ func (obj *patternFlowUdpLengthCounter) Clone() (PatternFlowUdpLengthCounter, er return newObj, nil } -// PatternFlowUdpLengthCounter is integer counter pattern -type PatternFlowUdpLengthCounter interface { +// FlowMetricTagValue is a container for metric tag value +type FlowMetricTagValue interface { Validation - // Msg marshals PatternFlowUdpLengthCounter to protobuf object *otg.PatternFlowUdpLengthCounter + // Msg marshals FlowMetricTagValue to protobuf object *otg.FlowMetricTagValue // and doesn't set defaults - Msg() *otg.PatternFlowUdpLengthCounter - // SetMsg unmarshals PatternFlowUdpLengthCounter from protobuf object *otg.PatternFlowUdpLengthCounter + Msg() *otg.FlowMetricTagValue + // SetMsg unmarshals FlowMetricTagValue from protobuf object *otg.FlowMetricTagValue // and doesn't set defaults - SetMsg(*otg.PatternFlowUdpLengthCounter) PatternFlowUdpLengthCounter - // ToProto marshals PatternFlowUdpLengthCounter to protobuf object *otg.PatternFlowUdpLengthCounter - ToProto() (*otg.PatternFlowUdpLengthCounter, error) - // ToPbText marshals PatternFlowUdpLengthCounter to protobuf text + SetMsg(*otg.FlowMetricTagValue) FlowMetricTagValue + // ToProto marshals FlowMetricTagValue to protobuf object *otg.FlowMetricTagValue + ToProto() (*otg.FlowMetricTagValue, error) + // ToPbText marshals FlowMetricTagValue to protobuf text ToPbText() (string, error) - // ToYaml marshals PatternFlowUdpLengthCounter to YAML text + // ToYaml marshals FlowMetricTagValue to YAML text ToYaml() (string, error) - // ToJson marshals PatternFlowUdpLengthCounter to JSON text + // ToJson marshals FlowMetricTagValue to JSON text ToJson() (string, error) - // FromProto unmarshals PatternFlowUdpLengthCounter from protobuf object *otg.PatternFlowUdpLengthCounter - FromProto(msg *otg.PatternFlowUdpLengthCounter) (PatternFlowUdpLengthCounter, error) - // FromPbText unmarshals PatternFlowUdpLengthCounter from protobuf text + // FromProto unmarshals FlowMetricTagValue from protobuf object *otg.FlowMetricTagValue + FromProto(msg *otg.FlowMetricTagValue) (FlowMetricTagValue, error) + // FromPbText unmarshals FlowMetricTagValue from protobuf text FromPbText(value string) error - // FromYaml unmarshals PatternFlowUdpLengthCounter from YAML text + // FromYaml unmarshals FlowMetricTagValue from YAML text FromYaml(value string) error - // FromJson unmarshals PatternFlowUdpLengthCounter from JSON text + // FromJson unmarshals FlowMetricTagValue from JSON text FromJson(value string) error - // Validate validates PatternFlowUdpLengthCounter + // Validate validates FlowMetricTagValue Validate() error // A stringer function String() string // Clones the object - Clone() (PatternFlowUdpLengthCounter, error) + Clone() (FlowMetricTagValue, error) validateToAndFrom() error validateObj(vObj *validation, set_default bool) setDefault() - // Start returns uint32, set in PatternFlowUdpLengthCounter. - Start() uint32 - // SetStart assigns uint32 provided by user to PatternFlowUdpLengthCounter - SetStart(value uint32) PatternFlowUdpLengthCounter - // HasStart checks if Start has been set in PatternFlowUdpLengthCounter - HasStart() bool - // Step returns uint32, set in PatternFlowUdpLengthCounter. - Step() uint32 - // SetStep assigns uint32 provided by user to PatternFlowUdpLengthCounter - SetStep(value uint32) PatternFlowUdpLengthCounter - // HasStep checks if Step has been set in PatternFlowUdpLengthCounter - HasStep() bool - // Count returns uint32, set in PatternFlowUdpLengthCounter. - Count() uint32 - // SetCount assigns uint32 provided by user to PatternFlowUdpLengthCounter - SetCount(value uint32) PatternFlowUdpLengthCounter - // HasCount checks if Count has been set in PatternFlowUdpLengthCounter - HasCount() bool + // Choice returns FlowMetricTagValueChoiceEnum, set in FlowMetricTagValue + Choice() FlowMetricTagValueChoiceEnum + // SetChoice assigns FlowMetricTagValueChoiceEnum provided by user to FlowMetricTagValue + SetChoice(value FlowMetricTagValueChoiceEnum) FlowMetricTagValue + // HasChoice checks if Choice has been set in FlowMetricTagValue + HasChoice() bool + // Hex returns string, set in FlowMetricTagValue. + Hex() string + // SetHex assigns string provided by user to FlowMetricTagValue + SetHex(value string) FlowMetricTagValue + // HasHex checks if Hex has been set in FlowMetricTagValue + HasHex() bool + // Str returns string, set in FlowMetricTagValue. + Str() string + // SetStr assigns string provided by user to FlowMetricTagValue + SetStr(value string) FlowMetricTagValue + // HasStr checks if Str has been set in FlowMetricTagValue + HasStr() bool } -// description is TBD -// Start returns a uint32 -func (obj *patternFlowUdpLengthCounter) Start() uint32 { - - return *obj.obj.Start +type FlowMetricTagValueChoiceEnum string +// Enum of Choice on FlowMetricTagValue +var FlowMetricTagValueChoice = struct { + HEX FlowMetricTagValueChoiceEnum + STR FlowMetricTagValueChoiceEnum +}{ + HEX: FlowMetricTagValueChoiceEnum("hex"), + STR: FlowMetricTagValueChoiceEnum("str"), } -// description is TBD -// Start returns a uint32 -func (obj *patternFlowUdpLengthCounter) HasStart() bool { - return obj.obj.Start != nil +func (obj *flowMetricTagValue) Choice() FlowMetricTagValueChoiceEnum { + return FlowMetricTagValueChoiceEnum(obj.obj.Choice.Enum().String()) } -// description is TBD -// SetStart sets the uint32 value in the PatternFlowUdpLengthCounter object -func (obj *patternFlowUdpLengthCounter) SetStart(value uint32) PatternFlowUdpLengthCounter { +// Available formats for metric tag value +// Choice returns a string +func (obj *flowMetricTagValue) HasChoice() bool { + return obj.obj.Choice != nil +} - obj.obj.Start = &value +func (obj *flowMetricTagValue) SetChoice(value FlowMetricTagValueChoiceEnum) FlowMetricTagValue { + intValue, ok := otg.FlowMetricTagValue_Choice_Enum_value[string(value)] + if !ok { + obj.validationErrors = append(obj.validationErrors, fmt.Sprintf( + "%s is not a valid choice on FlowMetricTagValueChoiceEnum", string(value))) + return obj + } + enumValue := otg.FlowMetricTagValue_Choice_Enum(intValue) + obj.obj.Choice = &enumValue + obj.obj.Str = nil + obj.obj.Hex = nil return obj } -// description is TBD -// Step returns a uint32 -func (obj *patternFlowUdpLengthCounter) Step() uint32 { +// Value represented in hexadecimal format +// Hex returns a string +func (obj *flowMetricTagValue) Hex() string { - return *obj.obj.Step + if obj.obj.Hex == nil { + obj.SetChoice(FlowMetricTagValueChoice.HEX) + } -} + return *obj.obj.Hex -// description is TBD -// Step returns a uint32 -func (obj *patternFlowUdpLengthCounter) HasStep() bool { - return obj.obj.Step != nil } -// description is TBD -// SetStep sets the uint32 value in the PatternFlowUdpLengthCounter object -func (obj *patternFlowUdpLengthCounter) SetStep(value uint32) PatternFlowUdpLengthCounter { +// Value represented in hexadecimal format +// Hex returns a string +func (obj *flowMetricTagValue) HasHex() bool { + return obj.obj.Hex != nil +} - obj.obj.Step = &value +// Value represented in hexadecimal format +// SetHex sets the string value in the FlowMetricTagValue object +func (obj *flowMetricTagValue) SetHex(value string) FlowMetricTagValue { + obj.SetChoice(FlowMetricTagValueChoice.HEX) + obj.obj.Hex = &value return obj } -// description is TBD -// Count returns a uint32 -func (obj *patternFlowUdpLengthCounter) Count() uint32 { +// Value represented in string format +// Str returns a string +func (obj *flowMetricTagValue) Str() string { - return *obj.obj.Count + if obj.obj.Str == nil { + obj.SetChoice(FlowMetricTagValueChoice.STR) + } -} + return *obj.obj.Str -// description is TBD -// Count returns a uint32 -func (obj *patternFlowUdpLengthCounter) HasCount() bool { - return obj.obj.Count != nil } -// description is TBD -// SetCount sets the uint32 value in the PatternFlowUdpLengthCounter object -func (obj *patternFlowUdpLengthCounter) SetCount(value uint32) PatternFlowUdpLengthCounter { +// Value represented in string format +// Str returns a string +func (obj *flowMetricTagValue) HasStr() bool { + return obj.obj.Str != nil +} - obj.obj.Count = &value +// Value represented in string format +// SetStr sets the string value in the FlowMetricTagValue object +func (obj *flowMetricTagValue) SetStr(value string) FlowMetricTagValue { + obj.SetChoice(FlowMetricTagValueChoice.STR) + obj.obj.Str = &value return obj } -func (obj *patternFlowUdpLengthCounter) validateObj(vObj *validation, set_default bool) { +func (obj *flowMetricTagValue) validateObj(vObj *validation, set_default bool) { if set_default { obj.setDefault() } - if obj.obj.Start != nil { - - if *obj.obj.Start > 65535 { - vObj.validationErrors = append( - vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowUdpLengthCounter.Start <= 65535 but Got %d", *obj.obj.Start)) - } - - } - - if obj.obj.Step != nil { - - if *obj.obj.Step > 65535 { - vObj.validationErrors = append( - vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowUdpLengthCounter.Step <= 65535 but Got %d", *obj.obj.Step)) - } - - } - - if obj.obj.Count != nil { + if obj.obj.Hex != nil { - if *obj.obj.Count > 65535 { - vObj.validationErrors = append( - vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowUdpLengthCounter.Count <= 65535 but Got %d", *obj.obj.Count)) + err := obj.validateHex(obj.Hex()) + if err != nil { + vObj.validationErrors = append(vObj.validationErrors, fmt.Sprintf("%s %s", err.Error(), "on FlowMetricTagValue.Hex")) } } } -func (obj *patternFlowUdpLengthCounter) setDefault() { - if obj.obj.Start == nil { - obj.SetStart(0) - } - if obj.obj.Step == nil { - obj.SetStep(1) - } - if obj.obj.Count == nil { - obj.SetCount(1) +func (obj *flowMetricTagValue) setDefault() { + if obj.obj.Choice == nil { + obj.SetChoice(FlowMetricTagValueChoice.HEX) + } } -// ***** PatternFlowUdpLengthMetricTag ***** -type patternFlowUdpLengthMetricTag struct { +// ***** ResultBgpAsPathSegment ***** +type resultBgpAsPathSegment struct { validation - obj *otg.PatternFlowUdpLengthMetricTag + obj *otg.ResultBgpAsPathSegment } -func NewPatternFlowUdpLengthMetricTag() PatternFlowUdpLengthMetricTag { - obj := patternFlowUdpLengthMetricTag{obj: &otg.PatternFlowUdpLengthMetricTag{}} +func NewResultBgpAsPathSegment() ResultBgpAsPathSegment { + obj := resultBgpAsPathSegment{obj: &otg.ResultBgpAsPathSegment{}} obj.setDefault() return &obj } -func (obj *patternFlowUdpLengthMetricTag) Msg() *otg.PatternFlowUdpLengthMetricTag { +func (obj *resultBgpAsPathSegment) Msg() *otg.ResultBgpAsPathSegment { return obj.obj } -func (obj *patternFlowUdpLengthMetricTag) SetMsg(msg *otg.PatternFlowUdpLengthMetricTag) PatternFlowUdpLengthMetricTag { +func (obj *resultBgpAsPathSegment) SetMsg(msg *otg.ResultBgpAsPathSegment) ResultBgpAsPathSegment { proto.Merge(obj.obj, msg) return obj } -func (obj *patternFlowUdpLengthMetricTag) ToProto() (*otg.PatternFlowUdpLengthMetricTag, error) { +func (obj *resultBgpAsPathSegment) ToProto() (*otg.ResultBgpAsPathSegment, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -232775,7 +277536,7 @@ func (obj *patternFlowUdpLengthMetricTag) ToProto() (*otg.PatternFlowUdpLengthMe return obj.Msg(), nil } -func (obj *patternFlowUdpLengthMetricTag) FromProto(msg *otg.PatternFlowUdpLengthMetricTag) (PatternFlowUdpLengthMetricTag, error) { +func (obj *resultBgpAsPathSegment) FromProto(msg *otg.ResultBgpAsPathSegment) (ResultBgpAsPathSegment, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -232784,7 +277545,7 @@ func (obj *patternFlowUdpLengthMetricTag) FromProto(msg *otg.PatternFlowUdpLengt return newObj, nil } -func (obj *patternFlowUdpLengthMetricTag) ToPbText() (string, error) { +func (obj *resultBgpAsPathSegment) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -232796,7 +277557,7 @@ func (obj *patternFlowUdpLengthMetricTag) ToPbText() (string, error) { return string(protoMarshal), nil } -func (obj *patternFlowUdpLengthMetricTag) FromPbText(value string) error { +func (obj *resultBgpAsPathSegment) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj @@ -232809,7 +277570,7 @@ func (obj *patternFlowUdpLengthMetricTag) FromPbText(value string) error { return retObj } -func (obj *patternFlowUdpLengthMetricTag) ToYaml() (string, error) { +func (obj *resultBgpAsPathSegment) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -232830,7 +277591,7 @@ func (obj *patternFlowUdpLengthMetricTag) ToYaml() (string, error) { return string(data), nil } -func (obj *patternFlowUdpLengthMetricTag) FromYaml(value string) error { +func (obj *resultBgpAsPathSegment) FromYaml(value string) error { if value == "" { value = "{}" } @@ -232855,7 +277616,7 @@ func (obj *patternFlowUdpLengthMetricTag) FromYaml(value string) error { return nil } -func (obj *patternFlowUdpLengthMetricTag) ToJson() (string, error) { +func (obj *resultBgpAsPathSegment) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -232873,7 +277634,7 @@ func (obj *patternFlowUdpLengthMetricTag) ToJson() (string, error) { return string(data), nil } -func (obj *patternFlowUdpLengthMetricTag) FromJson(value string) error { +func (obj *resultBgpAsPathSegment) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -232894,19 +277655,19 @@ func (obj *patternFlowUdpLengthMetricTag) FromJson(value string) error { return nil } -func (obj *patternFlowUdpLengthMetricTag) validateToAndFrom() error { +func (obj *resultBgpAsPathSegment) validateToAndFrom() error { // emptyVars() obj.validateObj(&obj.validation, true) return obj.validationResult() } -func (obj *patternFlowUdpLengthMetricTag) Validate() error { +func (obj *resultBgpAsPathSegment) Validate() error { // emptyVars() obj.validateObj(&obj.validation, false) return obj.validationResult() } -func (obj *patternFlowUdpLengthMetricTag) String() string { +func (obj *resultBgpAsPathSegment) String() string { str, err := obj.ToYaml() if err != nil { return err.Error() @@ -232914,12 +277675,12 @@ func (obj *patternFlowUdpLengthMetricTag) String() string { return str } -func (obj *patternFlowUdpLengthMetricTag) Clone() (PatternFlowUdpLengthMetricTag, error) { +func (obj *resultBgpAsPathSegment) Clone() (ResultBgpAsPathSegment, error) { vErr := obj.Validate() if vErr != nil { return nil, vErr } - newObj := NewPatternFlowUdpLengthMetricTag() + newObj := NewResultBgpAsPathSegment() data, err := proto.Marshal(obj.Msg()) if err != nil { return nil, err @@ -232931,183 +277692,146 @@ func (obj *patternFlowUdpLengthMetricTag) Clone() (PatternFlowUdpLengthMetricTag return newObj, nil } -// PatternFlowUdpLengthMetricTag is metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. -type PatternFlowUdpLengthMetricTag interface { +// ResultBgpAsPathSegment is configuration for a single BGP AS path segment +type ResultBgpAsPathSegment interface { Validation - // Msg marshals PatternFlowUdpLengthMetricTag to protobuf object *otg.PatternFlowUdpLengthMetricTag + // Msg marshals ResultBgpAsPathSegment to protobuf object *otg.ResultBgpAsPathSegment // and doesn't set defaults - Msg() *otg.PatternFlowUdpLengthMetricTag - // SetMsg unmarshals PatternFlowUdpLengthMetricTag from protobuf object *otg.PatternFlowUdpLengthMetricTag + Msg() *otg.ResultBgpAsPathSegment + // SetMsg unmarshals ResultBgpAsPathSegment from protobuf object *otg.ResultBgpAsPathSegment // and doesn't set defaults - SetMsg(*otg.PatternFlowUdpLengthMetricTag) PatternFlowUdpLengthMetricTag - // ToProto marshals PatternFlowUdpLengthMetricTag to protobuf object *otg.PatternFlowUdpLengthMetricTag - ToProto() (*otg.PatternFlowUdpLengthMetricTag, error) - // ToPbText marshals PatternFlowUdpLengthMetricTag to protobuf text + SetMsg(*otg.ResultBgpAsPathSegment) ResultBgpAsPathSegment + // ToProto marshals ResultBgpAsPathSegment to protobuf object *otg.ResultBgpAsPathSegment + ToProto() (*otg.ResultBgpAsPathSegment, error) + // ToPbText marshals ResultBgpAsPathSegment to protobuf text ToPbText() (string, error) - // ToYaml marshals PatternFlowUdpLengthMetricTag to YAML text + // ToYaml marshals ResultBgpAsPathSegment to YAML text ToYaml() (string, error) - // ToJson marshals PatternFlowUdpLengthMetricTag to JSON text + // ToJson marshals ResultBgpAsPathSegment to JSON text ToJson() (string, error) - // FromProto unmarshals PatternFlowUdpLengthMetricTag from protobuf object *otg.PatternFlowUdpLengthMetricTag - FromProto(msg *otg.PatternFlowUdpLengthMetricTag) (PatternFlowUdpLengthMetricTag, error) - // FromPbText unmarshals PatternFlowUdpLengthMetricTag from protobuf text + // FromProto unmarshals ResultBgpAsPathSegment from protobuf object *otg.ResultBgpAsPathSegment + FromProto(msg *otg.ResultBgpAsPathSegment) (ResultBgpAsPathSegment, error) + // FromPbText unmarshals ResultBgpAsPathSegment from protobuf text FromPbText(value string) error - // FromYaml unmarshals PatternFlowUdpLengthMetricTag from YAML text + // FromYaml unmarshals ResultBgpAsPathSegment from YAML text FromYaml(value string) error - // FromJson unmarshals PatternFlowUdpLengthMetricTag from JSON text + // FromJson unmarshals ResultBgpAsPathSegment from JSON text FromJson(value string) error - // Validate validates PatternFlowUdpLengthMetricTag + // Validate validates ResultBgpAsPathSegment Validate() error // A stringer function String() string // Clones the object - Clone() (PatternFlowUdpLengthMetricTag, error) + Clone() (ResultBgpAsPathSegment, error) validateToAndFrom() error validateObj(vObj *validation, set_default bool) setDefault() - // Name returns string, set in PatternFlowUdpLengthMetricTag. - Name() string - // SetName assigns string provided by user to PatternFlowUdpLengthMetricTag - SetName(value string) PatternFlowUdpLengthMetricTag - // Offset returns uint32, set in PatternFlowUdpLengthMetricTag. - Offset() uint32 - // SetOffset assigns uint32 provided by user to PatternFlowUdpLengthMetricTag - SetOffset(value uint32) PatternFlowUdpLengthMetricTag - // HasOffset checks if Offset has been set in PatternFlowUdpLengthMetricTag - HasOffset() bool - // Length returns uint32, set in PatternFlowUdpLengthMetricTag. - Length() uint32 - // SetLength assigns uint32 provided by user to PatternFlowUdpLengthMetricTag - SetLength(value uint32) PatternFlowUdpLengthMetricTag - // HasLength checks if Length has been set in PatternFlowUdpLengthMetricTag - HasLength() bool -} - -// Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field -// Name returns a string -func (obj *patternFlowUdpLengthMetricTag) Name() string { - - return *obj.obj.Name - + // Type returns ResultBgpAsPathSegmentTypeEnum, set in ResultBgpAsPathSegment + Type() ResultBgpAsPathSegmentTypeEnum + // SetType assigns ResultBgpAsPathSegmentTypeEnum provided by user to ResultBgpAsPathSegment + SetType(value ResultBgpAsPathSegmentTypeEnum) ResultBgpAsPathSegment + // HasType checks if Type has been set in ResultBgpAsPathSegment + HasType() bool + // AsNumbers returns []uint32, set in ResultBgpAsPathSegment. + AsNumbers() []uint32 + // SetAsNumbers assigns []uint32 provided by user to ResultBgpAsPathSegment + SetAsNumbers(value []uint32) ResultBgpAsPathSegment } -// Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field -// SetName sets the string value in the PatternFlowUdpLengthMetricTag object -func (obj *patternFlowUdpLengthMetricTag) SetName(value string) PatternFlowUdpLengthMetricTag { +type ResultBgpAsPathSegmentTypeEnum string - obj.obj.Name = &value - return obj +// Enum of Type on ResultBgpAsPathSegment +var ResultBgpAsPathSegmentType = struct { + AS_SEQ ResultBgpAsPathSegmentTypeEnum + AS_SET ResultBgpAsPathSegmentTypeEnum + AS_CONFED_SEQ ResultBgpAsPathSegmentTypeEnum + AS_CONFED_SET ResultBgpAsPathSegmentTypeEnum +}{ + AS_SEQ: ResultBgpAsPathSegmentTypeEnum("as_seq"), + AS_SET: ResultBgpAsPathSegmentTypeEnum("as_set"), + AS_CONFED_SEQ: ResultBgpAsPathSegmentTypeEnum("as_confed_seq"), + AS_CONFED_SET: ResultBgpAsPathSegmentTypeEnum("as_confed_set"), } -// Offset in bits relative to start of corresponding header field -// Offset returns a uint32 -func (obj *patternFlowUdpLengthMetricTag) Offset() uint32 { - - return *obj.obj.Offset - +func (obj *resultBgpAsPathSegment) Type() ResultBgpAsPathSegmentTypeEnum { + return ResultBgpAsPathSegmentTypeEnum(obj.obj.Type.Enum().String()) } -// Offset in bits relative to start of corresponding header field -// Offset returns a uint32 -func (obj *patternFlowUdpLengthMetricTag) HasOffset() bool { - return obj.obj.Offset != nil +// AS sequence is the most common type of AS_PATH, it contains the list of ASNs starting with the most recent ASN being added read from left to right. +// The other three AS_PATH types are used for Confederations - AS_SET is the type of AS_PATH attribute that summarizes routes using using the aggregate-address command, allowing AS_PATHs to be summarized in the update as well. - AS_CONFED_SEQ gives the list of ASNs in the path starting with the most recent ASN to be added reading left to right - AS_CONFED_SET will allow summarization of multiple AS PATHs to be sent in BGP Updates. +// Type returns a string +func (obj *resultBgpAsPathSegment) HasType() bool { + return obj.obj.Type != nil } -// Offset in bits relative to start of corresponding header field -// SetOffset sets the uint32 value in the PatternFlowUdpLengthMetricTag object -func (obj *patternFlowUdpLengthMetricTag) SetOffset(value uint32) PatternFlowUdpLengthMetricTag { +func (obj *resultBgpAsPathSegment) SetType(value ResultBgpAsPathSegmentTypeEnum) ResultBgpAsPathSegment { + intValue, ok := otg.ResultBgpAsPathSegment_Type_Enum_value[string(value)] + if !ok { + obj.validationErrors = append(obj.validationErrors, fmt.Sprintf( + "%s is not a valid choice on ResultBgpAsPathSegmentTypeEnum", string(value))) + return obj + } + enumValue := otg.ResultBgpAsPathSegment_Type_Enum(intValue) + obj.obj.Type = &enumValue - obj.obj.Offset = &value return obj } -// Number of bits to track for metrics starting from configured offset of corresponding header field -// Length returns a uint32 -func (obj *patternFlowUdpLengthMetricTag) Length() uint32 { - - return *obj.obj.Length - +// The AS numbers in this AS path segment. +// AsNumbers returns a []uint32 +func (obj *resultBgpAsPathSegment) AsNumbers() []uint32 { + if obj.obj.AsNumbers == nil { + obj.obj.AsNumbers = make([]uint32, 0) + } + return obj.obj.AsNumbers } -// Number of bits to track for metrics starting from configured offset of corresponding header field -// Length returns a uint32 -func (obj *patternFlowUdpLengthMetricTag) HasLength() bool { - return obj.obj.Length != nil -} +// The AS numbers in this AS path segment. +// SetAsNumbers sets the []uint32 value in the ResultBgpAsPathSegment object +func (obj *resultBgpAsPathSegment) SetAsNumbers(value []uint32) ResultBgpAsPathSegment { -// Number of bits to track for metrics starting from configured offset of corresponding header field -// SetLength sets the uint32 value in the PatternFlowUdpLengthMetricTag object -func (obj *patternFlowUdpLengthMetricTag) SetLength(value uint32) PatternFlowUdpLengthMetricTag { + if obj.obj.AsNumbers == nil { + obj.obj.AsNumbers = make([]uint32, 0) + } + obj.obj.AsNumbers = value - obj.obj.Length = &value return obj } -func (obj *patternFlowUdpLengthMetricTag) validateObj(vObj *validation, set_default bool) { +func (obj *resultBgpAsPathSegment) validateObj(vObj *validation, set_default bool) { if set_default { obj.setDefault() } - // Name is required - if obj.obj.Name == nil { - vObj.validationErrors = append(vObj.validationErrors, "Name is required field on interface PatternFlowUdpLengthMetricTag") - } - - if obj.obj.Offset != nil { - - if *obj.obj.Offset > 15 { - vObj.validationErrors = append( - vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowUdpLengthMetricTag.Offset <= 15 but Got %d", *obj.obj.Offset)) - } - - } - - if obj.obj.Length != nil { - - if *obj.obj.Length < 1 || *obj.obj.Length > 16 { - vObj.validationErrors = append( - vObj.validationErrors, - fmt.Sprintf("1 <= PatternFlowUdpLengthMetricTag.Length <= 16 but Got %d", *obj.obj.Length)) - } - - } - } -func (obj *patternFlowUdpLengthMetricTag) setDefault() { - if obj.obj.Offset == nil { - obj.SetOffset(0) - } - if obj.obj.Length == nil { - obj.SetLength(16) - } +func (obj *resultBgpAsPathSegment) setDefault() { } -// ***** PatternFlowGreChecksumPresentCounter ***** -type patternFlowGreChecksumPresentCounter struct { +// ***** IsisLspHostname ***** +type isisLspHostname struct { validation - obj *otg.PatternFlowGreChecksumPresentCounter + obj *otg.IsisLspHostname } -func NewPatternFlowGreChecksumPresentCounter() PatternFlowGreChecksumPresentCounter { - obj := patternFlowGreChecksumPresentCounter{obj: &otg.PatternFlowGreChecksumPresentCounter{}} +func NewIsisLspHostname() IsisLspHostname { + obj := isisLspHostname{obj: &otg.IsisLspHostname{}} obj.setDefault() return &obj } -func (obj *patternFlowGreChecksumPresentCounter) Msg() *otg.PatternFlowGreChecksumPresentCounter { +func (obj *isisLspHostname) Msg() *otg.IsisLspHostname { return obj.obj } -func (obj *patternFlowGreChecksumPresentCounter) SetMsg(msg *otg.PatternFlowGreChecksumPresentCounter) PatternFlowGreChecksumPresentCounter { +func (obj *isisLspHostname) SetMsg(msg *otg.IsisLspHostname) IsisLspHostname { proto.Merge(obj.obj, msg) return obj } -func (obj *patternFlowGreChecksumPresentCounter) ToProto() (*otg.PatternFlowGreChecksumPresentCounter, error) { +func (obj *isisLspHostname) ToProto() (*otg.IsisLspHostname, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -233115,7 +277839,7 @@ func (obj *patternFlowGreChecksumPresentCounter) ToProto() (*otg.PatternFlowGreC return obj.Msg(), nil } -func (obj *patternFlowGreChecksumPresentCounter) FromProto(msg *otg.PatternFlowGreChecksumPresentCounter) (PatternFlowGreChecksumPresentCounter, error) { +func (obj *isisLspHostname) FromProto(msg *otg.IsisLspHostname) (IsisLspHostname, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -233124,7 +277848,7 @@ func (obj *patternFlowGreChecksumPresentCounter) FromProto(msg *otg.PatternFlowG return newObj, nil } -func (obj *patternFlowGreChecksumPresentCounter) ToPbText() (string, error) { +func (obj *isisLspHostname) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -233136,7 +277860,7 @@ func (obj *patternFlowGreChecksumPresentCounter) ToPbText() (string, error) { return string(protoMarshal), nil } -func (obj *patternFlowGreChecksumPresentCounter) FromPbText(value string) error { +func (obj *isisLspHostname) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj @@ -233149,7 +277873,7 @@ func (obj *patternFlowGreChecksumPresentCounter) FromPbText(value string) error return retObj } -func (obj *patternFlowGreChecksumPresentCounter) ToYaml() (string, error) { +func (obj *isisLspHostname) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -233170,7 +277894,7 @@ func (obj *patternFlowGreChecksumPresentCounter) ToYaml() (string, error) { return string(data), nil } -func (obj *patternFlowGreChecksumPresentCounter) FromYaml(value string) error { +func (obj *isisLspHostname) FromYaml(value string) error { if value == "" { value = "{}" } @@ -233195,7 +277919,7 @@ func (obj *patternFlowGreChecksumPresentCounter) FromYaml(value string) error { return nil } -func (obj *patternFlowGreChecksumPresentCounter) ToJson() (string, error) { +func (obj *isisLspHostname) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -233213,7 +277937,7 @@ func (obj *patternFlowGreChecksumPresentCounter) ToJson() (string, error) { return string(data), nil } -func (obj *patternFlowGreChecksumPresentCounter) FromJson(value string) error { +func (obj *isisLspHostname) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -233234,19 +277958,19 @@ func (obj *patternFlowGreChecksumPresentCounter) FromJson(value string) error { return nil } -func (obj *patternFlowGreChecksumPresentCounter) validateToAndFrom() error { +func (obj *isisLspHostname) validateToAndFrom() error { // emptyVars() obj.validateObj(&obj.validation, true) return obj.validationResult() } -func (obj *patternFlowGreChecksumPresentCounter) Validate() error { +func (obj *isisLspHostname) Validate() error { // emptyVars() obj.validateObj(&obj.validation, false) return obj.validationResult() } -func (obj *patternFlowGreChecksumPresentCounter) String() string { +func (obj *isisLspHostname) String() string { str, err := obj.ToYaml() if err != nil { return err.Error() @@ -233254,12 +277978,12 @@ func (obj *patternFlowGreChecksumPresentCounter) String() string { return str } -func (obj *patternFlowGreChecksumPresentCounter) Clone() (PatternFlowGreChecksumPresentCounter, error) { +func (obj *isisLspHostname) Clone() (IsisLspHostname, error) { vErr := obj.Validate() if vErr != nil { return nil, vErr } - newObj := NewPatternFlowGreChecksumPresentCounter() + newObj := NewIsisLspHostname() data, err := proto.Marshal(obj.Msg()) if err != nil { return nil, err @@ -233271,199 +277995,105 @@ func (obj *patternFlowGreChecksumPresentCounter) Clone() (PatternFlowGreChecksum return newObj, nil } -// PatternFlowGreChecksumPresentCounter is integer counter pattern -type PatternFlowGreChecksumPresentCounter interface { +// IsisLspHostname is it contains Hostname for the TLV 137. +type IsisLspHostname interface { Validation - // Msg marshals PatternFlowGreChecksumPresentCounter to protobuf object *otg.PatternFlowGreChecksumPresentCounter + // Msg marshals IsisLspHostname to protobuf object *otg.IsisLspHostname // and doesn't set defaults - Msg() *otg.PatternFlowGreChecksumPresentCounter - // SetMsg unmarshals PatternFlowGreChecksumPresentCounter from protobuf object *otg.PatternFlowGreChecksumPresentCounter + Msg() *otg.IsisLspHostname + // SetMsg unmarshals IsisLspHostname from protobuf object *otg.IsisLspHostname // and doesn't set defaults - SetMsg(*otg.PatternFlowGreChecksumPresentCounter) PatternFlowGreChecksumPresentCounter - // ToProto marshals PatternFlowGreChecksumPresentCounter to protobuf object *otg.PatternFlowGreChecksumPresentCounter - ToProto() (*otg.PatternFlowGreChecksumPresentCounter, error) - // ToPbText marshals PatternFlowGreChecksumPresentCounter to protobuf text + SetMsg(*otg.IsisLspHostname) IsisLspHostname + // ToProto marshals IsisLspHostname to protobuf object *otg.IsisLspHostname + ToProto() (*otg.IsisLspHostname, error) + // ToPbText marshals IsisLspHostname to protobuf text ToPbText() (string, error) - // ToYaml marshals PatternFlowGreChecksumPresentCounter to YAML text + // ToYaml marshals IsisLspHostname to YAML text ToYaml() (string, error) - // ToJson marshals PatternFlowGreChecksumPresentCounter to JSON text + // ToJson marshals IsisLspHostname to JSON text ToJson() (string, error) - // FromProto unmarshals PatternFlowGreChecksumPresentCounter from protobuf object *otg.PatternFlowGreChecksumPresentCounter - FromProto(msg *otg.PatternFlowGreChecksumPresentCounter) (PatternFlowGreChecksumPresentCounter, error) - // FromPbText unmarshals PatternFlowGreChecksumPresentCounter from protobuf text + // FromProto unmarshals IsisLspHostname from protobuf object *otg.IsisLspHostname + FromProto(msg *otg.IsisLspHostname) (IsisLspHostname, error) + // FromPbText unmarshals IsisLspHostname from protobuf text FromPbText(value string) error - // FromYaml unmarshals PatternFlowGreChecksumPresentCounter from YAML text + // FromYaml unmarshals IsisLspHostname from YAML text FromYaml(value string) error - // FromJson unmarshals PatternFlowGreChecksumPresentCounter from JSON text + // FromJson unmarshals IsisLspHostname from JSON text FromJson(value string) error - // Validate validates PatternFlowGreChecksumPresentCounter + // Validate validates IsisLspHostname Validate() error // A stringer function String() string // Clones the object - Clone() (PatternFlowGreChecksumPresentCounter, error) + Clone() (IsisLspHostname, error) validateToAndFrom() error validateObj(vObj *validation, set_default bool) setDefault() - // Start returns uint32, set in PatternFlowGreChecksumPresentCounter. - Start() uint32 - // SetStart assigns uint32 provided by user to PatternFlowGreChecksumPresentCounter - SetStart(value uint32) PatternFlowGreChecksumPresentCounter - // HasStart checks if Start has been set in PatternFlowGreChecksumPresentCounter - HasStart() bool - // Step returns uint32, set in PatternFlowGreChecksumPresentCounter. - Step() uint32 - // SetStep assigns uint32 provided by user to PatternFlowGreChecksumPresentCounter - SetStep(value uint32) PatternFlowGreChecksumPresentCounter - // HasStep checks if Step has been set in PatternFlowGreChecksumPresentCounter - HasStep() bool - // Count returns uint32, set in PatternFlowGreChecksumPresentCounter. - Count() uint32 - // SetCount assigns uint32 provided by user to PatternFlowGreChecksumPresentCounter - SetCount(value uint32) PatternFlowGreChecksumPresentCounter - // HasCount checks if Count has been set in PatternFlowGreChecksumPresentCounter - HasCount() bool -} - -// description is TBD -// Start returns a uint32 -func (obj *patternFlowGreChecksumPresentCounter) Start() uint32 { - - return *obj.obj.Start - -} - -// description is TBD -// Start returns a uint32 -func (obj *patternFlowGreChecksumPresentCounter) HasStart() bool { - return obj.obj.Start != nil -} - -// description is TBD -// SetStart sets the uint32 value in the PatternFlowGreChecksumPresentCounter object -func (obj *patternFlowGreChecksumPresentCounter) SetStart(value uint32) PatternFlowGreChecksumPresentCounter { - - obj.obj.Start = &value - return obj -} - -// description is TBD -// Step returns a uint32 -func (obj *patternFlowGreChecksumPresentCounter) Step() uint32 { - - return *obj.obj.Step - -} - -// description is TBD -// Step returns a uint32 -func (obj *patternFlowGreChecksumPresentCounter) HasStep() bool { - return obj.obj.Step != nil -} - -// description is TBD -// SetStep sets the uint32 value in the PatternFlowGreChecksumPresentCounter object -func (obj *patternFlowGreChecksumPresentCounter) SetStep(value uint32) PatternFlowGreChecksumPresentCounter { - - obj.obj.Step = &value - return obj + // Hostname returns string, set in IsisLspHostname. + Hostname() string + // SetHostname assigns string provided by user to IsisLspHostname + SetHostname(value string) IsisLspHostname + // HasHostname checks if Hostname has been set in IsisLspHostname + HasHostname() bool } -// description is TBD -// Count returns a uint32 -func (obj *patternFlowGreChecksumPresentCounter) Count() uint32 { +// Hostname for an ISIS router. +// Hostname returns a string +func (obj *isisLspHostname) Hostname() string { - return *obj.obj.Count + return *obj.obj.Hostname } -// description is TBD -// Count returns a uint32 -func (obj *patternFlowGreChecksumPresentCounter) HasCount() bool { - return obj.obj.Count != nil +// Hostname for an ISIS router. +// Hostname returns a string +func (obj *isisLspHostname) HasHostname() bool { + return obj.obj.Hostname != nil } -// description is TBD -// SetCount sets the uint32 value in the PatternFlowGreChecksumPresentCounter object -func (obj *patternFlowGreChecksumPresentCounter) SetCount(value uint32) PatternFlowGreChecksumPresentCounter { +// Hostname for an ISIS router. +// SetHostname sets the string value in the IsisLspHostname object +func (obj *isisLspHostname) SetHostname(value string) IsisLspHostname { - obj.obj.Count = &value + obj.obj.Hostname = &value return obj } -func (obj *patternFlowGreChecksumPresentCounter) validateObj(vObj *validation, set_default bool) { +func (obj *isisLspHostname) validateObj(vObj *validation, set_default bool) { if set_default { obj.setDefault() } - if obj.obj.Start != nil { - - if *obj.obj.Start > 1 { - vObj.validationErrors = append( - vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowGreChecksumPresentCounter.Start <= 1 but Got %d", *obj.obj.Start)) - } - - } - - if obj.obj.Step != nil { - - if *obj.obj.Step > 1 { - vObj.validationErrors = append( - vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowGreChecksumPresentCounter.Step <= 1 but Got %d", *obj.obj.Step)) - } - - } - - if obj.obj.Count != nil { - - if *obj.obj.Count > 1 { - vObj.validationErrors = append( - vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowGreChecksumPresentCounter.Count <= 1 but Got %d", *obj.obj.Count)) - } - - } - } -func (obj *patternFlowGreChecksumPresentCounter) setDefault() { - if obj.obj.Start == nil { - obj.SetStart(0) - } - if obj.obj.Step == nil { - obj.SetStep(1) - } - if obj.obj.Count == nil { - obj.SetCount(1) - } +func (obj *isisLspHostname) setDefault() { } -// ***** PatternFlowGreChecksumPresentMetricTag ***** -type patternFlowGreChecksumPresentMetricTag struct { +// ***** IsisLspIsReachabilityTlv ***** +type isisLspIsReachabilityTlv struct { validation - obj *otg.PatternFlowGreChecksumPresentMetricTag + obj *otg.IsisLspIsReachabilityTlv + neighborsHolder IsisLspIsReachabilityTlvIsisLspneighborIter } -func NewPatternFlowGreChecksumPresentMetricTag() PatternFlowGreChecksumPresentMetricTag { - obj := patternFlowGreChecksumPresentMetricTag{obj: &otg.PatternFlowGreChecksumPresentMetricTag{}} +func NewIsisLspIsReachabilityTlv() IsisLspIsReachabilityTlv { + obj := isisLspIsReachabilityTlv{obj: &otg.IsisLspIsReachabilityTlv{}} obj.setDefault() return &obj } -func (obj *patternFlowGreChecksumPresentMetricTag) Msg() *otg.PatternFlowGreChecksumPresentMetricTag { +func (obj *isisLspIsReachabilityTlv) Msg() *otg.IsisLspIsReachabilityTlv { return obj.obj } -func (obj *patternFlowGreChecksumPresentMetricTag) SetMsg(msg *otg.PatternFlowGreChecksumPresentMetricTag) PatternFlowGreChecksumPresentMetricTag { - +func (obj *isisLspIsReachabilityTlv) SetMsg(msg *otg.IsisLspIsReachabilityTlv) IsisLspIsReachabilityTlv { + obj.setNil() proto.Merge(obj.obj, msg) return obj } -func (obj *patternFlowGreChecksumPresentMetricTag) ToProto() (*otg.PatternFlowGreChecksumPresentMetricTag, error) { +func (obj *isisLspIsReachabilityTlv) ToProto() (*otg.IsisLspIsReachabilityTlv, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -233471,7 +278101,7 @@ func (obj *patternFlowGreChecksumPresentMetricTag) ToProto() (*otg.PatternFlowGr return obj.Msg(), nil } -func (obj *patternFlowGreChecksumPresentMetricTag) FromProto(msg *otg.PatternFlowGreChecksumPresentMetricTag) (PatternFlowGreChecksumPresentMetricTag, error) { +func (obj *isisLspIsReachabilityTlv) FromProto(msg *otg.IsisLspIsReachabilityTlv) (IsisLspIsReachabilityTlv, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -233480,7 +278110,7 @@ func (obj *patternFlowGreChecksumPresentMetricTag) FromProto(msg *otg.PatternFlo return newObj, nil } -func (obj *patternFlowGreChecksumPresentMetricTag) ToPbText() (string, error) { +func (obj *isisLspIsReachabilityTlv) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -233492,12 +278122,12 @@ func (obj *patternFlowGreChecksumPresentMetricTag) ToPbText() (string, error) { return string(protoMarshal), nil } -func (obj *patternFlowGreChecksumPresentMetricTag) FromPbText(value string) error { +func (obj *isisLspIsReachabilityTlv) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj } - + obj.setNil() vErr := obj.validateToAndFrom() if vErr != nil { return vErr @@ -233505,7 +278135,7 @@ func (obj *patternFlowGreChecksumPresentMetricTag) FromPbText(value string) erro return retObj } -func (obj *patternFlowGreChecksumPresentMetricTag) ToYaml() (string, error) { +func (obj *isisLspIsReachabilityTlv) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -233526,7 +278156,7 @@ func (obj *patternFlowGreChecksumPresentMetricTag) ToYaml() (string, error) { return string(data), nil } -func (obj *patternFlowGreChecksumPresentMetricTag) FromYaml(value string) error { +func (obj *isisLspIsReachabilityTlv) FromYaml(value string) error { if value == "" { value = "{}" } @@ -233543,7 +278173,7 @@ func (obj *patternFlowGreChecksumPresentMetricTag) FromYaml(value string) error return fmt.Errorf("unmarshal error %s", strings.Replace( uError.Error(), "\u00a0", " ", -1)[7:]) } - + obj.setNil() vErr := obj.validateToAndFrom() if vErr != nil { return vErr @@ -233551,7 +278181,7 @@ func (obj *patternFlowGreChecksumPresentMetricTag) FromYaml(value string) error return nil } -func (obj *patternFlowGreChecksumPresentMetricTag) ToJson() (string, error) { +func (obj *isisLspIsReachabilityTlv) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -233569,7 +278199,7 @@ func (obj *patternFlowGreChecksumPresentMetricTag) ToJson() (string, error) { return string(data), nil } -func (obj *patternFlowGreChecksumPresentMetricTag) FromJson(value string) error { +func (obj *isisLspIsReachabilityTlv) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -233582,7 +278212,7 @@ func (obj *patternFlowGreChecksumPresentMetricTag) FromJson(value string) error return fmt.Errorf("unmarshal error %s", strings.Replace( uError.Error(), "\u00a0", " ", -1)[7:]) } - + obj.setNil() err := obj.validateToAndFrom() if err != nil { return err @@ -233590,19 +278220,19 @@ func (obj *patternFlowGreChecksumPresentMetricTag) FromJson(value string) error return nil } -func (obj *patternFlowGreChecksumPresentMetricTag) validateToAndFrom() error { +func (obj *isisLspIsReachabilityTlv) validateToAndFrom() error { // emptyVars() obj.validateObj(&obj.validation, true) return obj.validationResult() } -func (obj *patternFlowGreChecksumPresentMetricTag) Validate() error { +func (obj *isisLspIsReachabilityTlv) Validate() error { // emptyVars() obj.validateObj(&obj.validation, false) return obj.validationResult() } -func (obj *patternFlowGreChecksumPresentMetricTag) String() string { +func (obj *isisLspIsReachabilityTlv) String() string { str, err := obj.ToYaml() if err != nil { return err.Error() @@ -233610,12 +278240,12 @@ func (obj *patternFlowGreChecksumPresentMetricTag) String() string { return str } -func (obj *patternFlowGreChecksumPresentMetricTag) Clone() (PatternFlowGreChecksumPresentMetricTag, error) { +func (obj *isisLspIsReachabilityTlv) Clone() (IsisLspIsReachabilityTlv, error) { vErr := obj.Validate() if vErr != nil { return nil, vErr } - newObj := NewPatternFlowGreChecksumPresentMetricTag() + newObj := NewIsisLspIsReachabilityTlv() data, err := proto.Marshal(obj.Msg()) if err != nil { return nil, err @@ -233627,183 +278257,188 @@ func (obj *patternFlowGreChecksumPresentMetricTag) Clone() (PatternFlowGreChecks return newObj, nil } -// PatternFlowGreChecksumPresentMetricTag is metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. -type PatternFlowGreChecksumPresentMetricTag interface { +func (obj *isisLspIsReachabilityTlv) setNil() { + obj.neighborsHolder = nil + obj.validationErrors = nil + obj.warnings = nil + obj.constraints = make(map[string]map[string]Constraints) +} + +// IsisLspIsReachabilityTlv is this container describes list of ISIS neighbors and attributes in IS-Reachability TLV (type 2). +type IsisLspIsReachabilityTlv interface { Validation - // Msg marshals PatternFlowGreChecksumPresentMetricTag to protobuf object *otg.PatternFlowGreChecksumPresentMetricTag + // Msg marshals IsisLspIsReachabilityTlv to protobuf object *otg.IsisLspIsReachabilityTlv // and doesn't set defaults - Msg() *otg.PatternFlowGreChecksumPresentMetricTag - // SetMsg unmarshals PatternFlowGreChecksumPresentMetricTag from protobuf object *otg.PatternFlowGreChecksumPresentMetricTag + Msg() *otg.IsisLspIsReachabilityTlv + // SetMsg unmarshals IsisLspIsReachabilityTlv from protobuf object *otg.IsisLspIsReachabilityTlv // and doesn't set defaults - SetMsg(*otg.PatternFlowGreChecksumPresentMetricTag) PatternFlowGreChecksumPresentMetricTag - // ToProto marshals PatternFlowGreChecksumPresentMetricTag to protobuf object *otg.PatternFlowGreChecksumPresentMetricTag - ToProto() (*otg.PatternFlowGreChecksumPresentMetricTag, error) - // ToPbText marshals PatternFlowGreChecksumPresentMetricTag to protobuf text + SetMsg(*otg.IsisLspIsReachabilityTlv) IsisLspIsReachabilityTlv + // ToProto marshals IsisLspIsReachabilityTlv to protobuf object *otg.IsisLspIsReachabilityTlv + ToProto() (*otg.IsisLspIsReachabilityTlv, error) + // ToPbText marshals IsisLspIsReachabilityTlv to protobuf text ToPbText() (string, error) - // ToYaml marshals PatternFlowGreChecksumPresentMetricTag to YAML text + // ToYaml marshals IsisLspIsReachabilityTlv to YAML text ToYaml() (string, error) - // ToJson marshals PatternFlowGreChecksumPresentMetricTag to JSON text + // ToJson marshals IsisLspIsReachabilityTlv to JSON text ToJson() (string, error) - // FromProto unmarshals PatternFlowGreChecksumPresentMetricTag from protobuf object *otg.PatternFlowGreChecksumPresentMetricTag - FromProto(msg *otg.PatternFlowGreChecksumPresentMetricTag) (PatternFlowGreChecksumPresentMetricTag, error) - // FromPbText unmarshals PatternFlowGreChecksumPresentMetricTag from protobuf text + // FromProto unmarshals IsisLspIsReachabilityTlv from protobuf object *otg.IsisLspIsReachabilityTlv + FromProto(msg *otg.IsisLspIsReachabilityTlv) (IsisLspIsReachabilityTlv, error) + // FromPbText unmarshals IsisLspIsReachabilityTlv from protobuf text FromPbText(value string) error - // FromYaml unmarshals PatternFlowGreChecksumPresentMetricTag from YAML text + // FromYaml unmarshals IsisLspIsReachabilityTlv from YAML text FromYaml(value string) error - // FromJson unmarshals PatternFlowGreChecksumPresentMetricTag from JSON text + // FromJson unmarshals IsisLspIsReachabilityTlv from JSON text FromJson(value string) error - // Validate validates PatternFlowGreChecksumPresentMetricTag + // Validate validates IsisLspIsReachabilityTlv Validate() error // A stringer function String() string // Clones the object - Clone() (PatternFlowGreChecksumPresentMetricTag, error) + Clone() (IsisLspIsReachabilityTlv, error) validateToAndFrom() error validateObj(vObj *validation, set_default bool) setDefault() - // Name returns string, set in PatternFlowGreChecksumPresentMetricTag. - Name() string - // SetName assigns string provided by user to PatternFlowGreChecksumPresentMetricTag - SetName(value string) PatternFlowGreChecksumPresentMetricTag - // Offset returns uint32, set in PatternFlowGreChecksumPresentMetricTag. - Offset() uint32 - // SetOffset assigns uint32 provided by user to PatternFlowGreChecksumPresentMetricTag - SetOffset(value uint32) PatternFlowGreChecksumPresentMetricTag - // HasOffset checks if Offset has been set in PatternFlowGreChecksumPresentMetricTag - HasOffset() bool - // Length returns uint32, set in PatternFlowGreChecksumPresentMetricTag. - Length() uint32 - // SetLength assigns uint32 provided by user to PatternFlowGreChecksumPresentMetricTag - SetLength(value uint32) PatternFlowGreChecksumPresentMetricTag - // HasLength checks if Length has been set in PatternFlowGreChecksumPresentMetricTag - HasLength() bool + // Neighbors returns IsisLspIsReachabilityTlvIsisLspneighborIterIter, set in IsisLspIsReachabilityTlv + Neighbors() IsisLspIsReachabilityTlvIsisLspneighborIter + setNil() } -// Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field -// Name returns a string -func (obj *patternFlowGreChecksumPresentMetricTag) Name() string { +// This container describes Intermediate System (IS) neighbors. +// Neighbors returns a []IsisLspneighbor +func (obj *isisLspIsReachabilityTlv) Neighbors() IsisLspIsReachabilityTlvIsisLspneighborIter { + if len(obj.obj.Neighbors) == 0 { + obj.obj.Neighbors = []*otg.IsisLspneighbor{} + } + if obj.neighborsHolder == nil { + obj.neighborsHolder = newIsisLspIsReachabilityTlvIsisLspneighborIter(&obj.obj.Neighbors).setMsg(obj) + } + return obj.neighborsHolder +} - return *obj.obj.Name +type isisLspIsReachabilityTlvIsisLspneighborIter struct { + obj *isisLspIsReachabilityTlv + isisLspneighborSlice []IsisLspneighbor + fieldPtr *[]*otg.IsisLspneighbor +} +func newIsisLspIsReachabilityTlvIsisLspneighborIter(ptr *[]*otg.IsisLspneighbor) IsisLspIsReachabilityTlvIsisLspneighborIter { + return &isisLspIsReachabilityTlvIsisLspneighborIter{fieldPtr: ptr} } -// Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field -// SetName sets the string value in the PatternFlowGreChecksumPresentMetricTag object -func (obj *patternFlowGreChecksumPresentMetricTag) SetName(value string) PatternFlowGreChecksumPresentMetricTag { +type IsisLspIsReachabilityTlvIsisLspneighborIter interface { + setMsg(*isisLspIsReachabilityTlv) IsisLspIsReachabilityTlvIsisLspneighborIter + Items() []IsisLspneighbor + Add() IsisLspneighbor + Append(items ...IsisLspneighbor) IsisLspIsReachabilityTlvIsisLspneighborIter + Set(index int, newObj IsisLspneighbor) IsisLspIsReachabilityTlvIsisLspneighborIter + Clear() IsisLspIsReachabilityTlvIsisLspneighborIter + clearHolderSlice() IsisLspIsReachabilityTlvIsisLspneighborIter + appendHolderSlice(item IsisLspneighbor) IsisLspIsReachabilityTlvIsisLspneighborIter +} - obj.obj.Name = &value +func (obj *isisLspIsReachabilityTlvIsisLspneighborIter) setMsg(msg *isisLspIsReachabilityTlv) IsisLspIsReachabilityTlvIsisLspneighborIter { + obj.clearHolderSlice() + for _, val := range *obj.fieldPtr { + obj.appendHolderSlice(&isisLspneighbor{obj: val}) + } + obj.obj = msg return obj } -// Offset in bits relative to start of corresponding header field -// Offset returns a uint32 -func (obj *patternFlowGreChecksumPresentMetricTag) Offset() uint32 { - - return *obj.obj.Offset - +func (obj *isisLspIsReachabilityTlvIsisLspneighborIter) Items() []IsisLspneighbor { + return obj.isisLspneighborSlice } -// Offset in bits relative to start of corresponding header field -// Offset returns a uint32 -func (obj *patternFlowGreChecksumPresentMetricTag) HasOffset() bool { - return obj.obj.Offset != nil +func (obj *isisLspIsReachabilityTlvIsisLspneighborIter) Add() IsisLspneighbor { + newObj := &otg.IsisLspneighbor{} + *obj.fieldPtr = append(*obj.fieldPtr, newObj) + newLibObj := &isisLspneighbor{obj: newObj} + newLibObj.setDefault() + obj.isisLspneighborSlice = append(obj.isisLspneighborSlice, newLibObj) + return newLibObj } -// Offset in bits relative to start of corresponding header field -// SetOffset sets the uint32 value in the PatternFlowGreChecksumPresentMetricTag object -func (obj *patternFlowGreChecksumPresentMetricTag) SetOffset(value uint32) PatternFlowGreChecksumPresentMetricTag { - - obj.obj.Offset = &value +func (obj *isisLspIsReachabilityTlvIsisLspneighborIter) Append(items ...IsisLspneighbor) IsisLspIsReachabilityTlvIsisLspneighborIter { + for _, item := range items { + newObj := item.Msg() + *obj.fieldPtr = append(*obj.fieldPtr, newObj) + obj.isisLspneighborSlice = append(obj.isisLspneighborSlice, item) + } return obj } -// Number of bits to track for metrics starting from configured offset of corresponding header field -// Length returns a uint32 -func (obj *patternFlowGreChecksumPresentMetricTag) Length() uint32 { - - return *obj.obj.Length - +func (obj *isisLspIsReachabilityTlvIsisLspneighborIter) Set(index int, newObj IsisLspneighbor) IsisLspIsReachabilityTlvIsisLspneighborIter { + (*obj.fieldPtr)[index] = newObj.Msg() + obj.isisLspneighborSlice[index] = newObj + return obj } - -// Number of bits to track for metrics starting from configured offset of corresponding header field -// Length returns a uint32 -func (obj *patternFlowGreChecksumPresentMetricTag) HasLength() bool { - return obj.obj.Length != nil +func (obj *isisLspIsReachabilityTlvIsisLspneighborIter) Clear() IsisLspIsReachabilityTlvIsisLspneighborIter { + if len(*obj.fieldPtr) > 0 { + *obj.fieldPtr = []*otg.IsisLspneighbor{} + obj.isisLspneighborSlice = []IsisLspneighbor{} + } + return obj } - -// Number of bits to track for metrics starting from configured offset of corresponding header field -// SetLength sets the uint32 value in the PatternFlowGreChecksumPresentMetricTag object -func (obj *patternFlowGreChecksumPresentMetricTag) SetLength(value uint32) PatternFlowGreChecksumPresentMetricTag { - - obj.obj.Length = &value +func (obj *isisLspIsReachabilityTlvIsisLspneighborIter) clearHolderSlice() IsisLspIsReachabilityTlvIsisLspneighborIter { + if len(obj.isisLspneighborSlice) > 0 { + obj.isisLspneighborSlice = []IsisLspneighbor{} + } + return obj +} +func (obj *isisLspIsReachabilityTlvIsisLspneighborIter) appendHolderSlice(item IsisLspneighbor) IsisLspIsReachabilityTlvIsisLspneighborIter { + obj.isisLspneighborSlice = append(obj.isisLspneighborSlice, item) return obj } -func (obj *patternFlowGreChecksumPresentMetricTag) validateObj(vObj *validation, set_default bool) { +func (obj *isisLspIsReachabilityTlv) validateObj(vObj *validation, set_default bool) { if set_default { obj.setDefault() } - // Name is required - if obj.obj.Name == nil { - vObj.validationErrors = append(vObj.validationErrors, "Name is required field on interface PatternFlowGreChecksumPresentMetricTag") - } - - if obj.obj.Offset != nil { + if len(obj.obj.Neighbors) != 0 { - if *obj.obj.Offset > 0 { - vObj.validationErrors = append( - vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowGreChecksumPresentMetricTag.Offset <= 0 but Got %d", *obj.obj.Offset)) + if set_default { + obj.Neighbors().clearHolderSlice() + for _, item := range obj.obj.Neighbors { + obj.Neighbors().appendHolderSlice(&isisLspneighbor{obj: item}) + } } - - } - - if obj.obj.Length != nil { - - if *obj.obj.Length < 1 || *obj.obj.Length > 1 { - vObj.validationErrors = append( - vObj.validationErrors, - fmt.Sprintf("1 <= PatternFlowGreChecksumPresentMetricTag.Length <= 1 but Got %d", *obj.obj.Length)) + for _, item := range obj.Neighbors().Items() { + item.validateObj(vObj, set_default) } } } -func (obj *patternFlowGreChecksumPresentMetricTag) setDefault() { - if obj.obj.Offset == nil { - obj.SetOffset(0) - } - if obj.obj.Length == nil { - obj.SetLength(1) - } +func (obj *isisLspIsReachabilityTlv) setDefault() { } -// ***** PatternFlowGreReserved0Counter ***** -type patternFlowGreReserved0Counter struct { +// ***** IsisLspExtendedIsReachabilityTlv ***** +type isisLspExtendedIsReachabilityTlv struct { validation - obj *otg.PatternFlowGreReserved0Counter + obj *otg.IsisLspExtendedIsReachabilityTlv + neighborsHolder IsisLspExtendedIsReachabilityTlvIsisLspneighborIter } -func NewPatternFlowGreReserved0Counter() PatternFlowGreReserved0Counter { - obj := patternFlowGreReserved0Counter{obj: &otg.PatternFlowGreReserved0Counter{}} +func NewIsisLspExtendedIsReachabilityTlv() IsisLspExtendedIsReachabilityTlv { + obj := isisLspExtendedIsReachabilityTlv{obj: &otg.IsisLspExtendedIsReachabilityTlv{}} obj.setDefault() return &obj } -func (obj *patternFlowGreReserved0Counter) Msg() *otg.PatternFlowGreReserved0Counter { +func (obj *isisLspExtendedIsReachabilityTlv) Msg() *otg.IsisLspExtendedIsReachabilityTlv { return obj.obj } -func (obj *patternFlowGreReserved0Counter) SetMsg(msg *otg.PatternFlowGreReserved0Counter) PatternFlowGreReserved0Counter { - +func (obj *isisLspExtendedIsReachabilityTlv) SetMsg(msg *otg.IsisLspExtendedIsReachabilityTlv) IsisLspExtendedIsReachabilityTlv { + obj.setNil() proto.Merge(obj.obj, msg) return obj } -func (obj *patternFlowGreReserved0Counter) ToProto() (*otg.PatternFlowGreReserved0Counter, error) { +func (obj *isisLspExtendedIsReachabilityTlv) ToProto() (*otg.IsisLspExtendedIsReachabilityTlv, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -233811,7 +278446,7 @@ func (obj *patternFlowGreReserved0Counter) ToProto() (*otg.PatternFlowGreReserve return obj.Msg(), nil } -func (obj *patternFlowGreReserved0Counter) FromProto(msg *otg.PatternFlowGreReserved0Counter) (PatternFlowGreReserved0Counter, error) { +func (obj *isisLspExtendedIsReachabilityTlv) FromProto(msg *otg.IsisLspExtendedIsReachabilityTlv) (IsisLspExtendedIsReachabilityTlv, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -233820,7 +278455,7 @@ func (obj *patternFlowGreReserved0Counter) FromProto(msg *otg.PatternFlowGreRese return newObj, nil } -func (obj *patternFlowGreReserved0Counter) ToPbText() (string, error) { +func (obj *isisLspExtendedIsReachabilityTlv) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -233832,12 +278467,12 @@ func (obj *patternFlowGreReserved0Counter) ToPbText() (string, error) { return string(protoMarshal), nil } -func (obj *patternFlowGreReserved0Counter) FromPbText(value string) error { +func (obj *isisLspExtendedIsReachabilityTlv) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj } - + obj.setNil() vErr := obj.validateToAndFrom() if vErr != nil { return vErr @@ -233845,7 +278480,7 @@ func (obj *patternFlowGreReserved0Counter) FromPbText(value string) error { return retObj } -func (obj *patternFlowGreReserved0Counter) ToYaml() (string, error) { +func (obj *isisLspExtendedIsReachabilityTlv) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -233866,7 +278501,7 @@ func (obj *patternFlowGreReserved0Counter) ToYaml() (string, error) { return string(data), nil } -func (obj *patternFlowGreReserved0Counter) FromYaml(value string) error { +func (obj *isisLspExtendedIsReachabilityTlv) FromYaml(value string) error { if value == "" { value = "{}" } @@ -233883,7 +278518,7 @@ func (obj *patternFlowGreReserved0Counter) FromYaml(value string) error { return fmt.Errorf("unmarshal error %s", strings.Replace( uError.Error(), "\u00a0", " ", -1)[7:]) } - + obj.setNil() vErr := obj.validateToAndFrom() if vErr != nil { return vErr @@ -233891,7 +278526,7 @@ func (obj *patternFlowGreReserved0Counter) FromYaml(value string) error { return nil } -func (obj *patternFlowGreReserved0Counter) ToJson() (string, error) { +func (obj *isisLspExtendedIsReachabilityTlv) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -233909,7 +278544,7 @@ func (obj *patternFlowGreReserved0Counter) ToJson() (string, error) { return string(data), nil } -func (obj *patternFlowGreReserved0Counter) FromJson(value string) error { +func (obj *isisLspExtendedIsReachabilityTlv) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -233922,7 +278557,7 @@ func (obj *patternFlowGreReserved0Counter) FromJson(value string) error { return fmt.Errorf("unmarshal error %s", strings.Replace( uError.Error(), "\u00a0", " ", -1)[7:]) } - + obj.setNil() err := obj.validateToAndFrom() if err != nil { return err @@ -233930,19 +278565,19 @@ func (obj *patternFlowGreReserved0Counter) FromJson(value string) error { return nil } -func (obj *patternFlowGreReserved0Counter) validateToAndFrom() error { +func (obj *isisLspExtendedIsReachabilityTlv) validateToAndFrom() error { // emptyVars() obj.validateObj(&obj.validation, true) return obj.validationResult() } -func (obj *patternFlowGreReserved0Counter) Validate() error { +func (obj *isisLspExtendedIsReachabilityTlv) Validate() error { // emptyVars() obj.validateObj(&obj.validation, false) return obj.validationResult() } -func (obj *patternFlowGreReserved0Counter) String() string { +func (obj *isisLspExtendedIsReachabilityTlv) String() string { str, err := obj.ToYaml() if err != nil { return err.Error() @@ -233950,12 +278585,12 @@ func (obj *patternFlowGreReserved0Counter) String() string { return str } -func (obj *patternFlowGreReserved0Counter) Clone() (PatternFlowGreReserved0Counter, error) { +func (obj *isisLspExtendedIsReachabilityTlv) Clone() (IsisLspExtendedIsReachabilityTlv, error) { vErr := obj.Validate() if vErr != nil { return nil, vErr } - newObj := NewPatternFlowGreReserved0Counter() + newObj := NewIsisLspExtendedIsReachabilityTlv() data, err := proto.Marshal(obj.Msg()) if err != nil { return nil, err @@ -233967,199 +278602,188 @@ func (obj *patternFlowGreReserved0Counter) Clone() (PatternFlowGreReserved0Count return newObj, nil } -// PatternFlowGreReserved0Counter is integer counter pattern -type PatternFlowGreReserved0Counter interface { +func (obj *isisLspExtendedIsReachabilityTlv) setNil() { + obj.neighborsHolder = nil + obj.validationErrors = nil + obj.warnings = nil + obj.constraints = make(map[string]map[string]Constraints) +} + +// IsisLspExtendedIsReachabilityTlv is this is list of ISIS neighbors and attributes in Extended-IS-Reachability TLV (type 22). +type IsisLspExtendedIsReachabilityTlv interface { Validation - // Msg marshals PatternFlowGreReserved0Counter to protobuf object *otg.PatternFlowGreReserved0Counter + // Msg marshals IsisLspExtendedIsReachabilityTlv to protobuf object *otg.IsisLspExtendedIsReachabilityTlv // and doesn't set defaults - Msg() *otg.PatternFlowGreReserved0Counter - // SetMsg unmarshals PatternFlowGreReserved0Counter from protobuf object *otg.PatternFlowGreReserved0Counter + Msg() *otg.IsisLspExtendedIsReachabilityTlv + // SetMsg unmarshals IsisLspExtendedIsReachabilityTlv from protobuf object *otg.IsisLspExtendedIsReachabilityTlv // and doesn't set defaults - SetMsg(*otg.PatternFlowGreReserved0Counter) PatternFlowGreReserved0Counter - // ToProto marshals PatternFlowGreReserved0Counter to protobuf object *otg.PatternFlowGreReserved0Counter - ToProto() (*otg.PatternFlowGreReserved0Counter, error) - // ToPbText marshals PatternFlowGreReserved0Counter to protobuf text + SetMsg(*otg.IsisLspExtendedIsReachabilityTlv) IsisLspExtendedIsReachabilityTlv + // ToProto marshals IsisLspExtendedIsReachabilityTlv to protobuf object *otg.IsisLspExtendedIsReachabilityTlv + ToProto() (*otg.IsisLspExtendedIsReachabilityTlv, error) + // ToPbText marshals IsisLspExtendedIsReachabilityTlv to protobuf text ToPbText() (string, error) - // ToYaml marshals PatternFlowGreReserved0Counter to YAML text + // ToYaml marshals IsisLspExtendedIsReachabilityTlv to YAML text ToYaml() (string, error) - // ToJson marshals PatternFlowGreReserved0Counter to JSON text + // ToJson marshals IsisLspExtendedIsReachabilityTlv to JSON text ToJson() (string, error) - // FromProto unmarshals PatternFlowGreReserved0Counter from protobuf object *otg.PatternFlowGreReserved0Counter - FromProto(msg *otg.PatternFlowGreReserved0Counter) (PatternFlowGreReserved0Counter, error) - // FromPbText unmarshals PatternFlowGreReserved0Counter from protobuf text + // FromProto unmarshals IsisLspExtendedIsReachabilityTlv from protobuf object *otg.IsisLspExtendedIsReachabilityTlv + FromProto(msg *otg.IsisLspExtendedIsReachabilityTlv) (IsisLspExtendedIsReachabilityTlv, error) + // FromPbText unmarshals IsisLspExtendedIsReachabilityTlv from protobuf text FromPbText(value string) error - // FromYaml unmarshals PatternFlowGreReserved0Counter from YAML text + // FromYaml unmarshals IsisLspExtendedIsReachabilityTlv from YAML text FromYaml(value string) error - // FromJson unmarshals PatternFlowGreReserved0Counter from JSON text + // FromJson unmarshals IsisLspExtendedIsReachabilityTlv from JSON text FromJson(value string) error - // Validate validates PatternFlowGreReserved0Counter + // Validate validates IsisLspExtendedIsReachabilityTlv Validate() error // A stringer function String() string // Clones the object - Clone() (PatternFlowGreReserved0Counter, error) + Clone() (IsisLspExtendedIsReachabilityTlv, error) validateToAndFrom() error validateObj(vObj *validation, set_default bool) setDefault() - // Start returns uint32, set in PatternFlowGreReserved0Counter. - Start() uint32 - // SetStart assigns uint32 provided by user to PatternFlowGreReserved0Counter - SetStart(value uint32) PatternFlowGreReserved0Counter - // HasStart checks if Start has been set in PatternFlowGreReserved0Counter - HasStart() bool - // Step returns uint32, set in PatternFlowGreReserved0Counter. - Step() uint32 - // SetStep assigns uint32 provided by user to PatternFlowGreReserved0Counter - SetStep(value uint32) PatternFlowGreReserved0Counter - // HasStep checks if Step has been set in PatternFlowGreReserved0Counter - HasStep() bool - // Count returns uint32, set in PatternFlowGreReserved0Counter. - Count() uint32 - // SetCount assigns uint32 provided by user to PatternFlowGreReserved0Counter - SetCount(value uint32) PatternFlowGreReserved0Counter - // HasCount checks if Count has been set in PatternFlowGreReserved0Counter - HasCount() bool + // Neighbors returns IsisLspExtendedIsReachabilityTlvIsisLspneighborIterIter, set in IsisLspExtendedIsReachabilityTlv + Neighbors() IsisLspExtendedIsReachabilityTlvIsisLspneighborIter + setNil() } -// description is TBD -// Start returns a uint32 -func (obj *patternFlowGreReserved0Counter) Start() uint32 { - - return *obj.obj.Start +// This container describes IS neighbors. +// Neighbors returns a []IsisLspneighbor +func (obj *isisLspExtendedIsReachabilityTlv) Neighbors() IsisLspExtendedIsReachabilityTlvIsisLspneighborIter { + if len(obj.obj.Neighbors) == 0 { + obj.obj.Neighbors = []*otg.IsisLspneighbor{} + } + if obj.neighborsHolder == nil { + obj.neighborsHolder = newIsisLspExtendedIsReachabilityTlvIsisLspneighborIter(&obj.obj.Neighbors).setMsg(obj) + } + return obj.neighborsHolder +} +type isisLspExtendedIsReachabilityTlvIsisLspneighborIter struct { + obj *isisLspExtendedIsReachabilityTlv + isisLspneighborSlice []IsisLspneighbor + fieldPtr *[]*otg.IsisLspneighbor } -// description is TBD -// Start returns a uint32 -func (obj *patternFlowGreReserved0Counter) HasStart() bool { - return obj.obj.Start != nil +func newIsisLspExtendedIsReachabilityTlvIsisLspneighborIter(ptr *[]*otg.IsisLspneighbor) IsisLspExtendedIsReachabilityTlvIsisLspneighborIter { + return &isisLspExtendedIsReachabilityTlvIsisLspneighborIter{fieldPtr: ptr} } -// description is TBD -// SetStart sets the uint32 value in the PatternFlowGreReserved0Counter object -func (obj *patternFlowGreReserved0Counter) SetStart(value uint32) PatternFlowGreReserved0Counter { +type IsisLspExtendedIsReachabilityTlvIsisLspneighborIter interface { + setMsg(*isisLspExtendedIsReachabilityTlv) IsisLspExtendedIsReachabilityTlvIsisLspneighborIter + Items() []IsisLspneighbor + Add() IsisLspneighbor + Append(items ...IsisLspneighbor) IsisLspExtendedIsReachabilityTlvIsisLspneighborIter + Set(index int, newObj IsisLspneighbor) IsisLspExtendedIsReachabilityTlvIsisLspneighborIter + Clear() IsisLspExtendedIsReachabilityTlvIsisLspneighborIter + clearHolderSlice() IsisLspExtendedIsReachabilityTlvIsisLspneighborIter + appendHolderSlice(item IsisLspneighbor) IsisLspExtendedIsReachabilityTlvIsisLspneighborIter +} - obj.obj.Start = &value +func (obj *isisLspExtendedIsReachabilityTlvIsisLspneighborIter) setMsg(msg *isisLspExtendedIsReachabilityTlv) IsisLspExtendedIsReachabilityTlvIsisLspneighborIter { + obj.clearHolderSlice() + for _, val := range *obj.fieldPtr { + obj.appendHolderSlice(&isisLspneighbor{obj: val}) + } + obj.obj = msg return obj } -// description is TBD -// Step returns a uint32 -func (obj *patternFlowGreReserved0Counter) Step() uint32 { - - return *obj.obj.Step - +func (obj *isisLspExtendedIsReachabilityTlvIsisLspneighborIter) Items() []IsisLspneighbor { + return obj.isisLspneighborSlice } -// description is TBD -// Step returns a uint32 -func (obj *patternFlowGreReserved0Counter) HasStep() bool { - return obj.obj.Step != nil +func (obj *isisLspExtendedIsReachabilityTlvIsisLspneighborIter) Add() IsisLspneighbor { + newObj := &otg.IsisLspneighbor{} + *obj.fieldPtr = append(*obj.fieldPtr, newObj) + newLibObj := &isisLspneighbor{obj: newObj} + newLibObj.setDefault() + obj.isisLspneighborSlice = append(obj.isisLspneighborSlice, newLibObj) + return newLibObj } -// description is TBD -// SetStep sets the uint32 value in the PatternFlowGreReserved0Counter object -func (obj *patternFlowGreReserved0Counter) SetStep(value uint32) PatternFlowGreReserved0Counter { - - obj.obj.Step = &value +func (obj *isisLspExtendedIsReachabilityTlvIsisLspneighborIter) Append(items ...IsisLspneighbor) IsisLspExtendedIsReachabilityTlvIsisLspneighborIter { + for _, item := range items { + newObj := item.Msg() + *obj.fieldPtr = append(*obj.fieldPtr, newObj) + obj.isisLspneighborSlice = append(obj.isisLspneighborSlice, item) + } return obj } -// description is TBD -// Count returns a uint32 -func (obj *patternFlowGreReserved0Counter) Count() uint32 { - - return *obj.obj.Count - +func (obj *isisLspExtendedIsReachabilityTlvIsisLspneighborIter) Set(index int, newObj IsisLspneighbor) IsisLspExtendedIsReachabilityTlvIsisLspneighborIter { + (*obj.fieldPtr)[index] = newObj.Msg() + obj.isisLspneighborSlice[index] = newObj + return obj } - -// description is TBD -// Count returns a uint32 -func (obj *patternFlowGreReserved0Counter) HasCount() bool { - return obj.obj.Count != nil +func (obj *isisLspExtendedIsReachabilityTlvIsisLspneighborIter) Clear() IsisLspExtendedIsReachabilityTlvIsisLspneighborIter { + if len(*obj.fieldPtr) > 0 { + *obj.fieldPtr = []*otg.IsisLspneighbor{} + obj.isisLspneighborSlice = []IsisLspneighbor{} + } + return obj } - -// description is TBD -// SetCount sets the uint32 value in the PatternFlowGreReserved0Counter object -func (obj *patternFlowGreReserved0Counter) SetCount(value uint32) PatternFlowGreReserved0Counter { - - obj.obj.Count = &value +func (obj *isisLspExtendedIsReachabilityTlvIsisLspneighborIter) clearHolderSlice() IsisLspExtendedIsReachabilityTlvIsisLspneighborIter { + if len(obj.isisLspneighborSlice) > 0 { + obj.isisLspneighborSlice = []IsisLspneighbor{} + } + return obj +} +func (obj *isisLspExtendedIsReachabilityTlvIsisLspneighborIter) appendHolderSlice(item IsisLspneighbor) IsisLspExtendedIsReachabilityTlvIsisLspneighborIter { + obj.isisLspneighborSlice = append(obj.isisLspneighborSlice, item) return obj } -func (obj *patternFlowGreReserved0Counter) validateObj(vObj *validation, set_default bool) { +func (obj *isisLspExtendedIsReachabilityTlv) validateObj(vObj *validation, set_default bool) { if set_default { obj.setDefault() } - if obj.obj.Start != nil { - - if *obj.obj.Start > 4095 { - vObj.validationErrors = append( - vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowGreReserved0Counter.Start <= 4095 but Got %d", *obj.obj.Start)) - } - - } - - if obj.obj.Step != nil { + if len(obj.obj.Neighbors) != 0 { - if *obj.obj.Step > 4095 { - vObj.validationErrors = append( - vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowGreReserved0Counter.Step <= 4095 but Got %d", *obj.obj.Step)) + if set_default { + obj.Neighbors().clearHolderSlice() + for _, item := range obj.obj.Neighbors { + obj.Neighbors().appendHolderSlice(&isisLspneighbor{obj: item}) + } } - - } - - if obj.obj.Count != nil { - - if *obj.obj.Count > 4095 { - vObj.validationErrors = append( - vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowGreReserved0Counter.Count <= 4095 but Got %d", *obj.obj.Count)) + for _, item := range obj.Neighbors().Items() { + item.validateObj(vObj, set_default) } } } -func (obj *patternFlowGreReserved0Counter) setDefault() { - if obj.obj.Start == nil { - obj.SetStart(0) - } - if obj.obj.Step == nil { - obj.SetStep(1) - } - if obj.obj.Count == nil { - obj.SetCount(1) - } +func (obj *isisLspExtendedIsReachabilityTlv) setDefault() { } -// ***** PatternFlowGreReserved0MetricTag ***** -type patternFlowGreReserved0MetricTag struct { +// ***** IsisLspIpv4InternalReachabilityTlv ***** +type isisLspIpv4InternalReachabilityTlv struct { validation - obj *otg.PatternFlowGreReserved0MetricTag + obj *otg.IsisLspIpv4InternalReachabilityTlv + prefixesHolder IsisLspIpv4InternalReachabilityTlvIsisLspV4PrefixIter } -func NewPatternFlowGreReserved0MetricTag() PatternFlowGreReserved0MetricTag { - obj := patternFlowGreReserved0MetricTag{obj: &otg.PatternFlowGreReserved0MetricTag{}} +func NewIsisLspIpv4InternalReachabilityTlv() IsisLspIpv4InternalReachabilityTlv { + obj := isisLspIpv4InternalReachabilityTlv{obj: &otg.IsisLspIpv4InternalReachabilityTlv{}} obj.setDefault() return &obj } -func (obj *patternFlowGreReserved0MetricTag) Msg() *otg.PatternFlowGreReserved0MetricTag { +func (obj *isisLspIpv4InternalReachabilityTlv) Msg() *otg.IsisLspIpv4InternalReachabilityTlv { return obj.obj } -func (obj *patternFlowGreReserved0MetricTag) SetMsg(msg *otg.PatternFlowGreReserved0MetricTag) PatternFlowGreReserved0MetricTag { - +func (obj *isisLspIpv4InternalReachabilityTlv) SetMsg(msg *otg.IsisLspIpv4InternalReachabilityTlv) IsisLspIpv4InternalReachabilityTlv { + obj.setNil() proto.Merge(obj.obj, msg) return obj } -func (obj *patternFlowGreReserved0MetricTag) ToProto() (*otg.PatternFlowGreReserved0MetricTag, error) { +func (obj *isisLspIpv4InternalReachabilityTlv) ToProto() (*otg.IsisLspIpv4InternalReachabilityTlv, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -234167,7 +278791,7 @@ func (obj *patternFlowGreReserved0MetricTag) ToProto() (*otg.PatternFlowGreReser return obj.Msg(), nil } -func (obj *patternFlowGreReserved0MetricTag) FromProto(msg *otg.PatternFlowGreReserved0MetricTag) (PatternFlowGreReserved0MetricTag, error) { +func (obj *isisLspIpv4InternalReachabilityTlv) FromProto(msg *otg.IsisLspIpv4InternalReachabilityTlv) (IsisLspIpv4InternalReachabilityTlv, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -234176,7 +278800,7 @@ func (obj *patternFlowGreReserved0MetricTag) FromProto(msg *otg.PatternFlowGreRe return newObj, nil } -func (obj *patternFlowGreReserved0MetricTag) ToPbText() (string, error) { +func (obj *isisLspIpv4InternalReachabilityTlv) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -234188,12 +278812,12 @@ func (obj *patternFlowGreReserved0MetricTag) ToPbText() (string, error) { return string(protoMarshal), nil } -func (obj *patternFlowGreReserved0MetricTag) FromPbText(value string) error { +func (obj *isisLspIpv4InternalReachabilityTlv) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj } - + obj.setNil() vErr := obj.validateToAndFrom() if vErr != nil { return vErr @@ -234201,7 +278825,7 @@ func (obj *patternFlowGreReserved0MetricTag) FromPbText(value string) error { return retObj } -func (obj *patternFlowGreReserved0MetricTag) ToYaml() (string, error) { +func (obj *isisLspIpv4InternalReachabilityTlv) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -234222,7 +278846,7 @@ func (obj *patternFlowGreReserved0MetricTag) ToYaml() (string, error) { return string(data), nil } -func (obj *patternFlowGreReserved0MetricTag) FromYaml(value string) error { +func (obj *isisLspIpv4InternalReachabilityTlv) FromYaml(value string) error { if value == "" { value = "{}" } @@ -234239,7 +278863,7 @@ func (obj *patternFlowGreReserved0MetricTag) FromYaml(value string) error { return fmt.Errorf("unmarshal error %s", strings.Replace( uError.Error(), "\u00a0", " ", -1)[7:]) } - + obj.setNil() vErr := obj.validateToAndFrom() if vErr != nil { return vErr @@ -234247,7 +278871,7 @@ func (obj *patternFlowGreReserved0MetricTag) FromYaml(value string) error { return nil } -func (obj *patternFlowGreReserved0MetricTag) ToJson() (string, error) { +func (obj *isisLspIpv4InternalReachabilityTlv) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -234265,7 +278889,7 @@ func (obj *patternFlowGreReserved0MetricTag) ToJson() (string, error) { return string(data), nil } -func (obj *patternFlowGreReserved0MetricTag) FromJson(value string) error { +func (obj *isisLspIpv4InternalReachabilityTlv) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -234278,7 +278902,7 @@ func (obj *patternFlowGreReserved0MetricTag) FromJson(value string) error { return fmt.Errorf("unmarshal error %s", strings.Replace( uError.Error(), "\u00a0", " ", -1)[7:]) } - + obj.setNil() err := obj.validateToAndFrom() if err != nil { return err @@ -234286,19 +278910,19 @@ func (obj *patternFlowGreReserved0MetricTag) FromJson(value string) error { return nil } -func (obj *patternFlowGreReserved0MetricTag) validateToAndFrom() error { +func (obj *isisLspIpv4InternalReachabilityTlv) validateToAndFrom() error { // emptyVars() obj.validateObj(&obj.validation, true) return obj.validationResult() } -func (obj *patternFlowGreReserved0MetricTag) Validate() error { +func (obj *isisLspIpv4InternalReachabilityTlv) Validate() error { // emptyVars() obj.validateObj(&obj.validation, false) return obj.validationResult() } -func (obj *patternFlowGreReserved0MetricTag) String() string { +func (obj *isisLspIpv4InternalReachabilityTlv) String() string { str, err := obj.ToYaml() if err != nil { return err.Error() @@ -234306,12 +278930,12 @@ func (obj *patternFlowGreReserved0MetricTag) String() string { return str } -func (obj *patternFlowGreReserved0MetricTag) Clone() (PatternFlowGreReserved0MetricTag, error) { +func (obj *isisLspIpv4InternalReachabilityTlv) Clone() (IsisLspIpv4InternalReachabilityTlv, error) { vErr := obj.Validate() if vErr != nil { return nil, vErr } - newObj := NewPatternFlowGreReserved0MetricTag() + newObj := NewIsisLspIpv4InternalReachabilityTlv() data, err := proto.Marshal(obj.Msg()) if err != nil { return nil, err @@ -234323,183 +278947,189 @@ func (obj *patternFlowGreReserved0MetricTag) Clone() (PatternFlowGreReserved0Met return newObj, nil } -// PatternFlowGreReserved0MetricTag is metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. -type PatternFlowGreReserved0MetricTag interface { +func (obj *isisLspIpv4InternalReachabilityTlv) setNil() { + obj.prefixesHolder = nil + obj.validationErrors = nil + obj.warnings = nil + obj.constraints = make(map[string]map[string]Constraints) +} + +// IsisLspIpv4InternalReachabilityTlv is this container defines list of IPv4 internal reachability information in one IPv4 internal reachability TLV. +// This is advertised when the origin-type is set 'internal' in route range configurations. +type IsisLspIpv4InternalReachabilityTlv interface { Validation - // Msg marshals PatternFlowGreReserved0MetricTag to protobuf object *otg.PatternFlowGreReserved0MetricTag + // Msg marshals IsisLspIpv4InternalReachabilityTlv to protobuf object *otg.IsisLspIpv4InternalReachabilityTlv // and doesn't set defaults - Msg() *otg.PatternFlowGreReserved0MetricTag - // SetMsg unmarshals PatternFlowGreReserved0MetricTag from protobuf object *otg.PatternFlowGreReserved0MetricTag + Msg() *otg.IsisLspIpv4InternalReachabilityTlv + // SetMsg unmarshals IsisLspIpv4InternalReachabilityTlv from protobuf object *otg.IsisLspIpv4InternalReachabilityTlv // and doesn't set defaults - SetMsg(*otg.PatternFlowGreReserved0MetricTag) PatternFlowGreReserved0MetricTag - // ToProto marshals PatternFlowGreReserved0MetricTag to protobuf object *otg.PatternFlowGreReserved0MetricTag - ToProto() (*otg.PatternFlowGreReserved0MetricTag, error) - // ToPbText marshals PatternFlowGreReserved0MetricTag to protobuf text + SetMsg(*otg.IsisLspIpv4InternalReachabilityTlv) IsisLspIpv4InternalReachabilityTlv + // ToProto marshals IsisLspIpv4InternalReachabilityTlv to protobuf object *otg.IsisLspIpv4InternalReachabilityTlv + ToProto() (*otg.IsisLspIpv4InternalReachabilityTlv, error) + // ToPbText marshals IsisLspIpv4InternalReachabilityTlv to protobuf text ToPbText() (string, error) - // ToYaml marshals PatternFlowGreReserved0MetricTag to YAML text + // ToYaml marshals IsisLspIpv4InternalReachabilityTlv to YAML text ToYaml() (string, error) - // ToJson marshals PatternFlowGreReserved0MetricTag to JSON text + // ToJson marshals IsisLspIpv4InternalReachabilityTlv to JSON text ToJson() (string, error) - // FromProto unmarshals PatternFlowGreReserved0MetricTag from protobuf object *otg.PatternFlowGreReserved0MetricTag - FromProto(msg *otg.PatternFlowGreReserved0MetricTag) (PatternFlowGreReserved0MetricTag, error) - // FromPbText unmarshals PatternFlowGreReserved0MetricTag from protobuf text + // FromProto unmarshals IsisLspIpv4InternalReachabilityTlv from protobuf object *otg.IsisLspIpv4InternalReachabilityTlv + FromProto(msg *otg.IsisLspIpv4InternalReachabilityTlv) (IsisLspIpv4InternalReachabilityTlv, error) + // FromPbText unmarshals IsisLspIpv4InternalReachabilityTlv from protobuf text FromPbText(value string) error - // FromYaml unmarshals PatternFlowGreReserved0MetricTag from YAML text + // FromYaml unmarshals IsisLspIpv4InternalReachabilityTlv from YAML text FromYaml(value string) error - // FromJson unmarshals PatternFlowGreReserved0MetricTag from JSON text + // FromJson unmarshals IsisLspIpv4InternalReachabilityTlv from JSON text FromJson(value string) error - // Validate validates PatternFlowGreReserved0MetricTag + // Validate validates IsisLspIpv4InternalReachabilityTlv Validate() error // A stringer function String() string // Clones the object - Clone() (PatternFlowGreReserved0MetricTag, error) + Clone() (IsisLspIpv4InternalReachabilityTlv, error) validateToAndFrom() error validateObj(vObj *validation, set_default bool) setDefault() - // Name returns string, set in PatternFlowGreReserved0MetricTag. - Name() string - // SetName assigns string provided by user to PatternFlowGreReserved0MetricTag - SetName(value string) PatternFlowGreReserved0MetricTag - // Offset returns uint32, set in PatternFlowGreReserved0MetricTag. - Offset() uint32 - // SetOffset assigns uint32 provided by user to PatternFlowGreReserved0MetricTag - SetOffset(value uint32) PatternFlowGreReserved0MetricTag - // HasOffset checks if Offset has been set in PatternFlowGreReserved0MetricTag - HasOffset() bool - // Length returns uint32, set in PatternFlowGreReserved0MetricTag. - Length() uint32 - // SetLength assigns uint32 provided by user to PatternFlowGreReserved0MetricTag - SetLength(value uint32) PatternFlowGreReserved0MetricTag - // HasLength checks if Length has been set in PatternFlowGreReserved0MetricTag - HasLength() bool + // Prefixes returns IsisLspIpv4InternalReachabilityTlvIsisLspV4PrefixIterIter, set in IsisLspIpv4InternalReachabilityTlv + Prefixes() IsisLspIpv4InternalReachabilityTlvIsisLspV4PrefixIter + setNil() } -// Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field -// Name returns a string -func (obj *patternFlowGreReserved0MetricTag) Name() string { +// Describes list of IPv4 prefixes in this TLV. +// Prefixes returns a []IsisLspV4Prefix +func (obj *isisLspIpv4InternalReachabilityTlv) Prefixes() IsisLspIpv4InternalReachabilityTlvIsisLspV4PrefixIter { + if len(obj.obj.Prefixes) == 0 { + obj.obj.Prefixes = []*otg.IsisLspV4Prefix{} + } + if obj.prefixesHolder == nil { + obj.prefixesHolder = newIsisLspIpv4InternalReachabilityTlvIsisLspV4PrefixIter(&obj.obj.Prefixes).setMsg(obj) + } + return obj.prefixesHolder +} - return *obj.obj.Name +type isisLspIpv4InternalReachabilityTlvIsisLspV4PrefixIter struct { + obj *isisLspIpv4InternalReachabilityTlv + isisLspV4PrefixSlice []IsisLspV4Prefix + fieldPtr *[]*otg.IsisLspV4Prefix +} +func newIsisLspIpv4InternalReachabilityTlvIsisLspV4PrefixIter(ptr *[]*otg.IsisLspV4Prefix) IsisLspIpv4InternalReachabilityTlvIsisLspV4PrefixIter { + return &isisLspIpv4InternalReachabilityTlvIsisLspV4PrefixIter{fieldPtr: ptr} } -// Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field -// SetName sets the string value in the PatternFlowGreReserved0MetricTag object -func (obj *patternFlowGreReserved0MetricTag) SetName(value string) PatternFlowGreReserved0MetricTag { +type IsisLspIpv4InternalReachabilityTlvIsisLspV4PrefixIter interface { + setMsg(*isisLspIpv4InternalReachabilityTlv) IsisLspIpv4InternalReachabilityTlvIsisLspV4PrefixIter + Items() []IsisLspV4Prefix + Add() IsisLspV4Prefix + Append(items ...IsisLspV4Prefix) IsisLspIpv4InternalReachabilityTlvIsisLspV4PrefixIter + Set(index int, newObj IsisLspV4Prefix) IsisLspIpv4InternalReachabilityTlvIsisLspV4PrefixIter + Clear() IsisLspIpv4InternalReachabilityTlvIsisLspV4PrefixIter + clearHolderSlice() IsisLspIpv4InternalReachabilityTlvIsisLspV4PrefixIter + appendHolderSlice(item IsisLspV4Prefix) IsisLspIpv4InternalReachabilityTlvIsisLspV4PrefixIter +} - obj.obj.Name = &value +func (obj *isisLspIpv4InternalReachabilityTlvIsisLspV4PrefixIter) setMsg(msg *isisLspIpv4InternalReachabilityTlv) IsisLspIpv4InternalReachabilityTlvIsisLspV4PrefixIter { + obj.clearHolderSlice() + for _, val := range *obj.fieldPtr { + obj.appendHolderSlice(&isisLspV4Prefix{obj: val}) + } + obj.obj = msg return obj } -// Offset in bits relative to start of corresponding header field -// Offset returns a uint32 -func (obj *patternFlowGreReserved0MetricTag) Offset() uint32 { - - return *obj.obj.Offset - +func (obj *isisLspIpv4InternalReachabilityTlvIsisLspV4PrefixIter) Items() []IsisLspV4Prefix { + return obj.isisLspV4PrefixSlice } -// Offset in bits relative to start of corresponding header field -// Offset returns a uint32 -func (obj *patternFlowGreReserved0MetricTag) HasOffset() bool { - return obj.obj.Offset != nil +func (obj *isisLspIpv4InternalReachabilityTlvIsisLspV4PrefixIter) Add() IsisLspV4Prefix { + newObj := &otg.IsisLspV4Prefix{} + *obj.fieldPtr = append(*obj.fieldPtr, newObj) + newLibObj := &isisLspV4Prefix{obj: newObj} + newLibObj.setDefault() + obj.isisLspV4PrefixSlice = append(obj.isisLspV4PrefixSlice, newLibObj) + return newLibObj } -// Offset in bits relative to start of corresponding header field -// SetOffset sets the uint32 value in the PatternFlowGreReserved0MetricTag object -func (obj *patternFlowGreReserved0MetricTag) SetOffset(value uint32) PatternFlowGreReserved0MetricTag { - - obj.obj.Offset = &value +func (obj *isisLspIpv4InternalReachabilityTlvIsisLspV4PrefixIter) Append(items ...IsisLspV4Prefix) IsisLspIpv4InternalReachabilityTlvIsisLspV4PrefixIter { + for _, item := range items { + newObj := item.Msg() + *obj.fieldPtr = append(*obj.fieldPtr, newObj) + obj.isisLspV4PrefixSlice = append(obj.isisLspV4PrefixSlice, item) + } return obj } -// Number of bits to track for metrics starting from configured offset of corresponding header field -// Length returns a uint32 -func (obj *patternFlowGreReserved0MetricTag) Length() uint32 { - - return *obj.obj.Length - +func (obj *isisLspIpv4InternalReachabilityTlvIsisLspV4PrefixIter) Set(index int, newObj IsisLspV4Prefix) IsisLspIpv4InternalReachabilityTlvIsisLspV4PrefixIter { + (*obj.fieldPtr)[index] = newObj.Msg() + obj.isisLspV4PrefixSlice[index] = newObj + return obj } - -// Number of bits to track for metrics starting from configured offset of corresponding header field -// Length returns a uint32 -func (obj *patternFlowGreReserved0MetricTag) HasLength() bool { - return obj.obj.Length != nil +func (obj *isisLspIpv4InternalReachabilityTlvIsisLspV4PrefixIter) Clear() IsisLspIpv4InternalReachabilityTlvIsisLspV4PrefixIter { + if len(*obj.fieldPtr) > 0 { + *obj.fieldPtr = []*otg.IsisLspV4Prefix{} + obj.isisLspV4PrefixSlice = []IsisLspV4Prefix{} + } + return obj } - -// Number of bits to track for metrics starting from configured offset of corresponding header field -// SetLength sets the uint32 value in the PatternFlowGreReserved0MetricTag object -func (obj *patternFlowGreReserved0MetricTag) SetLength(value uint32) PatternFlowGreReserved0MetricTag { - - obj.obj.Length = &value +func (obj *isisLspIpv4InternalReachabilityTlvIsisLspV4PrefixIter) clearHolderSlice() IsisLspIpv4InternalReachabilityTlvIsisLspV4PrefixIter { + if len(obj.isisLspV4PrefixSlice) > 0 { + obj.isisLspV4PrefixSlice = []IsisLspV4Prefix{} + } + return obj +} +func (obj *isisLspIpv4InternalReachabilityTlvIsisLspV4PrefixIter) appendHolderSlice(item IsisLspV4Prefix) IsisLspIpv4InternalReachabilityTlvIsisLspV4PrefixIter { + obj.isisLspV4PrefixSlice = append(obj.isisLspV4PrefixSlice, item) return obj } -func (obj *patternFlowGreReserved0MetricTag) validateObj(vObj *validation, set_default bool) { +func (obj *isisLspIpv4InternalReachabilityTlv) validateObj(vObj *validation, set_default bool) { if set_default { obj.setDefault() } - // Name is required - if obj.obj.Name == nil { - vObj.validationErrors = append(vObj.validationErrors, "Name is required field on interface PatternFlowGreReserved0MetricTag") - } - - if obj.obj.Offset != nil { + if len(obj.obj.Prefixes) != 0 { - if *obj.obj.Offset > 11 { - vObj.validationErrors = append( - vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowGreReserved0MetricTag.Offset <= 11 but Got %d", *obj.obj.Offset)) + if set_default { + obj.Prefixes().clearHolderSlice() + for _, item := range obj.obj.Prefixes { + obj.Prefixes().appendHolderSlice(&isisLspV4Prefix{obj: item}) + } } - - } - - if obj.obj.Length != nil { - - if *obj.obj.Length < 1 || *obj.obj.Length > 12 { - vObj.validationErrors = append( - vObj.validationErrors, - fmt.Sprintf("1 <= PatternFlowGreReserved0MetricTag.Length <= 12 but Got %d", *obj.obj.Length)) + for _, item := range obj.Prefixes().Items() { + item.validateObj(vObj, set_default) } } } -func (obj *patternFlowGreReserved0MetricTag) setDefault() { - if obj.obj.Offset == nil { - obj.SetOffset(0) - } - if obj.obj.Length == nil { - obj.SetLength(12) - } +func (obj *isisLspIpv4InternalReachabilityTlv) setDefault() { } -// ***** PatternFlowGreVersionCounter ***** -type patternFlowGreVersionCounter struct { +// ***** IsisLspIpv4ExternalReachabilityTlv ***** +type isisLspIpv4ExternalReachabilityTlv struct { validation - obj *otg.PatternFlowGreVersionCounter + obj *otg.IsisLspIpv4ExternalReachabilityTlv + prefixesHolder IsisLspIpv4ExternalReachabilityTlvIsisLspV4PrefixIter } -func NewPatternFlowGreVersionCounter() PatternFlowGreVersionCounter { - obj := patternFlowGreVersionCounter{obj: &otg.PatternFlowGreVersionCounter{}} +func NewIsisLspIpv4ExternalReachabilityTlv() IsisLspIpv4ExternalReachabilityTlv { + obj := isisLspIpv4ExternalReachabilityTlv{obj: &otg.IsisLspIpv4ExternalReachabilityTlv{}} obj.setDefault() return &obj } -func (obj *patternFlowGreVersionCounter) Msg() *otg.PatternFlowGreVersionCounter { +func (obj *isisLspIpv4ExternalReachabilityTlv) Msg() *otg.IsisLspIpv4ExternalReachabilityTlv { return obj.obj } -func (obj *patternFlowGreVersionCounter) SetMsg(msg *otg.PatternFlowGreVersionCounter) PatternFlowGreVersionCounter { - +func (obj *isisLspIpv4ExternalReachabilityTlv) SetMsg(msg *otg.IsisLspIpv4ExternalReachabilityTlv) IsisLspIpv4ExternalReachabilityTlv { + obj.setNil() proto.Merge(obj.obj, msg) return obj } -func (obj *patternFlowGreVersionCounter) ToProto() (*otg.PatternFlowGreVersionCounter, error) { +func (obj *isisLspIpv4ExternalReachabilityTlv) ToProto() (*otg.IsisLspIpv4ExternalReachabilityTlv, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -234507,7 +279137,7 @@ func (obj *patternFlowGreVersionCounter) ToProto() (*otg.PatternFlowGreVersionCo return obj.Msg(), nil } -func (obj *patternFlowGreVersionCounter) FromProto(msg *otg.PatternFlowGreVersionCounter) (PatternFlowGreVersionCounter, error) { +func (obj *isisLspIpv4ExternalReachabilityTlv) FromProto(msg *otg.IsisLspIpv4ExternalReachabilityTlv) (IsisLspIpv4ExternalReachabilityTlv, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -234516,7 +279146,7 @@ func (obj *patternFlowGreVersionCounter) FromProto(msg *otg.PatternFlowGreVersio return newObj, nil } -func (obj *patternFlowGreVersionCounter) ToPbText() (string, error) { +func (obj *isisLspIpv4ExternalReachabilityTlv) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -234528,12 +279158,12 @@ func (obj *patternFlowGreVersionCounter) ToPbText() (string, error) { return string(protoMarshal), nil } -func (obj *patternFlowGreVersionCounter) FromPbText(value string) error { +func (obj *isisLspIpv4ExternalReachabilityTlv) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj } - + obj.setNil() vErr := obj.validateToAndFrom() if vErr != nil { return vErr @@ -234541,7 +279171,7 @@ func (obj *patternFlowGreVersionCounter) FromPbText(value string) error { return retObj } -func (obj *patternFlowGreVersionCounter) ToYaml() (string, error) { +func (obj *isisLspIpv4ExternalReachabilityTlv) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -234562,7 +279192,7 @@ func (obj *patternFlowGreVersionCounter) ToYaml() (string, error) { return string(data), nil } -func (obj *patternFlowGreVersionCounter) FromYaml(value string) error { +func (obj *isisLspIpv4ExternalReachabilityTlv) FromYaml(value string) error { if value == "" { value = "{}" } @@ -234579,7 +279209,7 @@ func (obj *patternFlowGreVersionCounter) FromYaml(value string) error { return fmt.Errorf("unmarshal error %s", strings.Replace( uError.Error(), "\u00a0", " ", -1)[7:]) } - + obj.setNil() vErr := obj.validateToAndFrom() if vErr != nil { return vErr @@ -234587,7 +279217,7 @@ func (obj *patternFlowGreVersionCounter) FromYaml(value string) error { return nil } -func (obj *patternFlowGreVersionCounter) ToJson() (string, error) { +func (obj *isisLspIpv4ExternalReachabilityTlv) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -234605,7 +279235,7 @@ func (obj *patternFlowGreVersionCounter) ToJson() (string, error) { return string(data), nil } -func (obj *patternFlowGreVersionCounter) FromJson(value string) error { +func (obj *isisLspIpv4ExternalReachabilityTlv) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -234618,7 +279248,7 @@ func (obj *patternFlowGreVersionCounter) FromJson(value string) error { return fmt.Errorf("unmarshal error %s", strings.Replace( uError.Error(), "\u00a0", " ", -1)[7:]) } - + obj.setNil() err := obj.validateToAndFrom() if err != nil { return err @@ -234626,19 +279256,19 @@ func (obj *patternFlowGreVersionCounter) FromJson(value string) error { return nil } -func (obj *patternFlowGreVersionCounter) validateToAndFrom() error { +func (obj *isisLspIpv4ExternalReachabilityTlv) validateToAndFrom() error { // emptyVars() obj.validateObj(&obj.validation, true) return obj.validationResult() } -func (obj *patternFlowGreVersionCounter) Validate() error { +func (obj *isisLspIpv4ExternalReachabilityTlv) Validate() error { // emptyVars() obj.validateObj(&obj.validation, false) return obj.validationResult() } -func (obj *patternFlowGreVersionCounter) String() string { +func (obj *isisLspIpv4ExternalReachabilityTlv) String() string { str, err := obj.ToYaml() if err != nil { return err.Error() @@ -234646,12 +279276,12 @@ func (obj *patternFlowGreVersionCounter) String() string { return str } -func (obj *patternFlowGreVersionCounter) Clone() (PatternFlowGreVersionCounter, error) { +func (obj *isisLspIpv4ExternalReachabilityTlv) Clone() (IsisLspIpv4ExternalReachabilityTlv, error) { vErr := obj.Validate() if vErr != nil { return nil, vErr } - newObj := NewPatternFlowGreVersionCounter() + newObj := NewIsisLspIpv4ExternalReachabilityTlv() data, err := proto.Marshal(obj.Msg()) if err != nil { return nil, err @@ -234663,199 +279293,189 @@ func (obj *patternFlowGreVersionCounter) Clone() (PatternFlowGreVersionCounter, return newObj, nil } -// PatternFlowGreVersionCounter is integer counter pattern -type PatternFlowGreVersionCounter interface { +func (obj *isisLspIpv4ExternalReachabilityTlv) setNil() { + obj.prefixesHolder = nil + obj.validationErrors = nil + obj.warnings = nil + obj.constraints = make(map[string]map[string]Constraints) +} + +// IsisLspIpv4ExternalReachabilityTlv is this container defines list of IPv4 external reachability information in one IPv4 external reachability TLV. +// This is advertised when the origin-type is set 'external' in route range configurations. +type IsisLspIpv4ExternalReachabilityTlv interface { Validation - // Msg marshals PatternFlowGreVersionCounter to protobuf object *otg.PatternFlowGreVersionCounter + // Msg marshals IsisLspIpv4ExternalReachabilityTlv to protobuf object *otg.IsisLspIpv4ExternalReachabilityTlv // and doesn't set defaults - Msg() *otg.PatternFlowGreVersionCounter - // SetMsg unmarshals PatternFlowGreVersionCounter from protobuf object *otg.PatternFlowGreVersionCounter + Msg() *otg.IsisLspIpv4ExternalReachabilityTlv + // SetMsg unmarshals IsisLspIpv4ExternalReachabilityTlv from protobuf object *otg.IsisLspIpv4ExternalReachabilityTlv // and doesn't set defaults - SetMsg(*otg.PatternFlowGreVersionCounter) PatternFlowGreVersionCounter - // ToProto marshals PatternFlowGreVersionCounter to protobuf object *otg.PatternFlowGreVersionCounter - ToProto() (*otg.PatternFlowGreVersionCounter, error) - // ToPbText marshals PatternFlowGreVersionCounter to protobuf text + SetMsg(*otg.IsisLspIpv4ExternalReachabilityTlv) IsisLspIpv4ExternalReachabilityTlv + // ToProto marshals IsisLspIpv4ExternalReachabilityTlv to protobuf object *otg.IsisLspIpv4ExternalReachabilityTlv + ToProto() (*otg.IsisLspIpv4ExternalReachabilityTlv, error) + // ToPbText marshals IsisLspIpv4ExternalReachabilityTlv to protobuf text ToPbText() (string, error) - // ToYaml marshals PatternFlowGreVersionCounter to YAML text + // ToYaml marshals IsisLspIpv4ExternalReachabilityTlv to YAML text ToYaml() (string, error) - // ToJson marshals PatternFlowGreVersionCounter to JSON text + // ToJson marshals IsisLspIpv4ExternalReachabilityTlv to JSON text ToJson() (string, error) - // FromProto unmarshals PatternFlowGreVersionCounter from protobuf object *otg.PatternFlowGreVersionCounter - FromProto(msg *otg.PatternFlowGreVersionCounter) (PatternFlowGreVersionCounter, error) - // FromPbText unmarshals PatternFlowGreVersionCounter from protobuf text + // FromProto unmarshals IsisLspIpv4ExternalReachabilityTlv from protobuf object *otg.IsisLspIpv4ExternalReachabilityTlv + FromProto(msg *otg.IsisLspIpv4ExternalReachabilityTlv) (IsisLspIpv4ExternalReachabilityTlv, error) + // FromPbText unmarshals IsisLspIpv4ExternalReachabilityTlv from protobuf text FromPbText(value string) error - // FromYaml unmarshals PatternFlowGreVersionCounter from YAML text + // FromYaml unmarshals IsisLspIpv4ExternalReachabilityTlv from YAML text FromYaml(value string) error - // FromJson unmarshals PatternFlowGreVersionCounter from JSON text + // FromJson unmarshals IsisLspIpv4ExternalReachabilityTlv from JSON text FromJson(value string) error - // Validate validates PatternFlowGreVersionCounter + // Validate validates IsisLspIpv4ExternalReachabilityTlv Validate() error // A stringer function String() string // Clones the object - Clone() (PatternFlowGreVersionCounter, error) + Clone() (IsisLspIpv4ExternalReachabilityTlv, error) validateToAndFrom() error validateObj(vObj *validation, set_default bool) setDefault() - // Start returns uint32, set in PatternFlowGreVersionCounter. - Start() uint32 - // SetStart assigns uint32 provided by user to PatternFlowGreVersionCounter - SetStart(value uint32) PatternFlowGreVersionCounter - // HasStart checks if Start has been set in PatternFlowGreVersionCounter - HasStart() bool - // Step returns uint32, set in PatternFlowGreVersionCounter. - Step() uint32 - // SetStep assigns uint32 provided by user to PatternFlowGreVersionCounter - SetStep(value uint32) PatternFlowGreVersionCounter - // HasStep checks if Step has been set in PatternFlowGreVersionCounter - HasStep() bool - // Count returns uint32, set in PatternFlowGreVersionCounter. - Count() uint32 - // SetCount assigns uint32 provided by user to PatternFlowGreVersionCounter - SetCount(value uint32) PatternFlowGreVersionCounter - // HasCount checks if Count has been set in PatternFlowGreVersionCounter - HasCount() bool + // Prefixes returns IsisLspIpv4ExternalReachabilityTlvIsisLspV4PrefixIterIter, set in IsisLspIpv4ExternalReachabilityTlv + Prefixes() IsisLspIpv4ExternalReachabilityTlvIsisLspV4PrefixIter + setNil() } -// description is TBD -// Start returns a uint32 -func (obj *patternFlowGreVersionCounter) Start() uint32 { - - return *obj.obj.Start +// Describes list of IPv4 prefixes in this TLV.. +// Prefixes returns a []IsisLspV4Prefix +func (obj *isisLspIpv4ExternalReachabilityTlv) Prefixes() IsisLspIpv4ExternalReachabilityTlvIsisLspV4PrefixIter { + if len(obj.obj.Prefixes) == 0 { + obj.obj.Prefixes = []*otg.IsisLspV4Prefix{} + } + if obj.prefixesHolder == nil { + obj.prefixesHolder = newIsisLspIpv4ExternalReachabilityTlvIsisLspV4PrefixIter(&obj.obj.Prefixes).setMsg(obj) + } + return obj.prefixesHolder +} +type isisLspIpv4ExternalReachabilityTlvIsisLspV4PrefixIter struct { + obj *isisLspIpv4ExternalReachabilityTlv + isisLspV4PrefixSlice []IsisLspV4Prefix + fieldPtr *[]*otg.IsisLspV4Prefix } -// description is TBD -// Start returns a uint32 -func (obj *patternFlowGreVersionCounter) HasStart() bool { - return obj.obj.Start != nil +func newIsisLspIpv4ExternalReachabilityTlvIsisLspV4PrefixIter(ptr *[]*otg.IsisLspV4Prefix) IsisLspIpv4ExternalReachabilityTlvIsisLspV4PrefixIter { + return &isisLspIpv4ExternalReachabilityTlvIsisLspV4PrefixIter{fieldPtr: ptr} } -// description is TBD -// SetStart sets the uint32 value in the PatternFlowGreVersionCounter object -func (obj *patternFlowGreVersionCounter) SetStart(value uint32) PatternFlowGreVersionCounter { +type IsisLspIpv4ExternalReachabilityTlvIsisLspV4PrefixIter interface { + setMsg(*isisLspIpv4ExternalReachabilityTlv) IsisLspIpv4ExternalReachabilityTlvIsisLspV4PrefixIter + Items() []IsisLspV4Prefix + Add() IsisLspV4Prefix + Append(items ...IsisLspV4Prefix) IsisLspIpv4ExternalReachabilityTlvIsisLspV4PrefixIter + Set(index int, newObj IsisLspV4Prefix) IsisLspIpv4ExternalReachabilityTlvIsisLspV4PrefixIter + Clear() IsisLspIpv4ExternalReachabilityTlvIsisLspV4PrefixIter + clearHolderSlice() IsisLspIpv4ExternalReachabilityTlvIsisLspV4PrefixIter + appendHolderSlice(item IsisLspV4Prefix) IsisLspIpv4ExternalReachabilityTlvIsisLspV4PrefixIter +} - obj.obj.Start = &value +func (obj *isisLspIpv4ExternalReachabilityTlvIsisLspV4PrefixIter) setMsg(msg *isisLspIpv4ExternalReachabilityTlv) IsisLspIpv4ExternalReachabilityTlvIsisLspV4PrefixIter { + obj.clearHolderSlice() + for _, val := range *obj.fieldPtr { + obj.appendHolderSlice(&isisLspV4Prefix{obj: val}) + } + obj.obj = msg return obj } -// description is TBD -// Step returns a uint32 -func (obj *patternFlowGreVersionCounter) Step() uint32 { - - return *obj.obj.Step - +func (obj *isisLspIpv4ExternalReachabilityTlvIsisLspV4PrefixIter) Items() []IsisLspV4Prefix { + return obj.isisLspV4PrefixSlice } -// description is TBD -// Step returns a uint32 -func (obj *patternFlowGreVersionCounter) HasStep() bool { - return obj.obj.Step != nil +func (obj *isisLspIpv4ExternalReachabilityTlvIsisLspV4PrefixIter) Add() IsisLspV4Prefix { + newObj := &otg.IsisLspV4Prefix{} + *obj.fieldPtr = append(*obj.fieldPtr, newObj) + newLibObj := &isisLspV4Prefix{obj: newObj} + newLibObj.setDefault() + obj.isisLspV4PrefixSlice = append(obj.isisLspV4PrefixSlice, newLibObj) + return newLibObj } -// description is TBD -// SetStep sets the uint32 value in the PatternFlowGreVersionCounter object -func (obj *patternFlowGreVersionCounter) SetStep(value uint32) PatternFlowGreVersionCounter { - - obj.obj.Step = &value +func (obj *isisLspIpv4ExternalReachabilityTlvIsisLspV4PrefixIter) Append(items ...IsisLspV4Prefix) IsisLspIpv4ExternalReachabilityTlvIsisLspV4PrefixIter { + for _, item := range items { + newObj := item.Msg() + *obj.fieldPtr = append(*obj.fieldPtr, newObj) + obj.isisLspV4PrefixSlice = append(obj.isisLspV4PrefixSlice, item) + } return obj } -// description is TBD -// Count returns a uint32 -func (obj *patternFlowGreVersionCounter) Count() uint32 { - - return *obj.obj.Count - +func (obj *isisLspIpv4ExternalReachabilityTlvIsisLspV4PrefixIter) Set(index int, newObj IsisLspV4Prefix) IsisLspIpv4ExternalReachabilityTlvIsisLspV4PrefixIter { + (*obj.fieldPtr)[index] = newObj.Msg() + obj.isisLspV4PrefixSlice[index] = newObj + return obj } - -// description is TBD -// Count returns a uint32 -func (obj *patternFlowGreVersionCounter) HasCount() bool { - return obj.obj.Count != nil +func (obj *isisLspIpv4ExternalReachabilityTlvIsisLspV4PrefixIter) Clear() IsisLspIpv4ExternalReachabilityTlvIsisLspV4PrefixIter { + if len(*obj.fieldPtr) > 0 { + *obj.fieldPtr = []*otg.IsisLspV4Prefix{} + obj.isisLspV4PrefixSlice = []IsisLspV4Prefix{} + } + return obj } - -// description is TBD -// SetCount sets the uint32 value in the PatternFlowGreVersionCounter object -func (obj *patternFlowGreVersionCounter) SetCount(value uint32) PatternFlowGreVersionCounter { - - obj.obj.Count = &value +func (obj *isisLspIpv4ExternalReachabilityTlvIsisLspV4PrefixIter) clearHolderSlice() IsisLspIpv4ExternalReachabilityTlvIsisLspV4PrefixIter { + if len(obj.isisLspV4PrefixSlice) > 0 { + obj.isisLspV4PrefixSlice = []IsisLspV4Prefix{} + } + return obj +} +func (obj *isisLspIpv4ExternalReachabilityTlvIsisLspV4PrefixIter) appendHolderSlice(item IsisLspV4Prefix) IsisLspIpv4ExternalReachabilityTlvIsisLspV4PrefixIter { + obj.isisLspV4PrefixSlice = append(obj.isisLspV4PrefixSlice, item) return obj } -func (obj *patternFlowGreVersionCounter) validateObj(vObj *validation, set_default bool) { +func (obj *isisLspIpv4ExternalReachabilityTlv) validateObj(vObj *validation, set_default bool) { if set_default { obj.setDefault() } - if obj.obj.Start != nil { - - if *obj.obj.Start > 7 { - vObj.validationErrors = append( - vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowGreVersionCounter.Start <= 7 but Got %d", *obj.obj.Start)) - } - - } - - if obj.obj.Step != nil { + if len(obj.obj.Prefixes) != 0 { - if *obj.obj.Step > 7 { - vObj.validationErrors = append( - vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowGreVersionCounter.Step <= 7 but Got %d", *obj.obj.Step)) + if set_default { + obj.Prefixes().clearHolderSlice() + for _, item := range obj.obj.Prefixes { + obj.Prefixes().appendHolderSlice(&isisLspV4Prefix{obj: item}) + } } - - } - - if obj.obj.Count != nil { - - if *obj.obj.Count > 7 { - vObj.validationErrors = append( - vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowGreVersionCounter.Count <= 7 but Got %d", *obj.obj.Count)) + for _, item := range obj.Prefixes().Items() { + item.validateObj(vObj, set_default) } } } -func (obj *patternFlowGreVersionCounter) setDefault() { - if obj.obj.Start == nil { - obj.SetStart(0) - } - if obj.obj.Step == nil { - obj.SetStep(1) - } - if obj.obj.Count == nil { - obj.SetCount(1) - } +func (obj *isisLspIpv4ExternalReachabilityTlv) setDefault() { } -// ***** PatternFlowGreVersionMetricTag ***** -type patternFlowGreVersionMetricTag struct { +// ***** IsisLspExtendedIpv4ReachabilityTlv ***** +type isisLspExtendedIpv4ReachabilityTlv struct { validation - obj *otg.PatternFlowGreVersionMetricTag + obj *otg.IsisLspExtendedIpv4ReachabilityTlv + prefixesHolder IsisLspExtendedIpv4ReachabilityTlvIsisLspExtendedV4PrefixIter } -func NewPatternFlowGreVersionMetricTag() PatternFlowGreVersionMetricTag { - obj := patternFlowGreVersionMetricTag{obj: &otg.PatternFlowGreVersionMetricTag{}} +func NewIsisLspExtendedIpv4ReachabilityTlv() IsisLspExtendedIpv4ReachabilityTlv { + obj := isisLspExtendedIpv4ReachabilityTlv{obj: &otg.IsisLspExtendedIpv4ReachabilityTlv{}} obj.setDefault() return &obj } -func (obj *patternFlowGreVersionMetricTag) Msg() *otg.PatternFlowGreVersionMetricTag { +func (obj *isisLspExtendedIpv4ReachabilityTlv) Msg() *otg.IsisLspExtendedIpv4ReachabilityTlv { return obj.obj } -func (obj *patternFlowGreVersionMetricTag) SetMsg(msg *otg.PatternFlowGreVersionMetricTag) PatternFlowGreVersionMetricTag { - +func (obj *isisLspExtendedIpv4ReachabilityTlv) SetMsg(msg *otg.IsisLspExtendedIpv4ReachabilityTlv) IsisLspExtendedIpv4ReachabilityTlv { + obj.setNil() proto.Merge(obj.obj, msg) return obj } -func (obj *patternFlowGreVersionMetricTag) ToProto() (*otg.PatternFlowGreVersionMetricTag, error) { +func (obj *isisLspExtendedIpv4ReachabilityTlv) ToProto() (*otg.IsisLspExtendedIpv4ReachabilityTlv, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -234863,7 +279483,7 @@ func (obj *patternFlowGreVersionMetricTag) ToProto() (*otg.PatternFlowGreVersion return obj.Msg(), nil } -func (obj *patternFlowGreVersionMetricTag) FromProto(msg *otg.PatternFlowGreVersionMetricTag) (PatternFlowGreVersionMetricTag, error) { +func (obj *isisLspExtendedIpv4ReachabilityTlv) FromProto(msg *otg.IsisLspExtendedIpv4ReachabilityTlv) (IsisLspExtendedIpv4ReachabilityTlv, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -234872,7 +279492,7 @@ func (obj *patternFlowGreVersionMetricTag) FromProto(msg *otg.PatternFlowGreVers return newObj, nil } -func (obj *patternFlowGreVersionMetricTag) ToPbText() (string, error) { +func (obj *isisLspExtendedIpv4ReachabilityTlv) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -234884,12 +279504,12 @@ func (obj *patternFlowGreVersionMetricTag) ToPbText() (string, error) { return string(protoMarshal), nil } -func (obj *patternFlowGreVersionMetricTag) FromPbText(value string) error { +func (obj *isisLspExtendedIpv4ReachabilityTlv) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj } - + obj.setNil() vErr := obj.validateToAndFrom() if vErr != nil { return vErr @@ -234897,7 +279517,7 @@ func (obj *patternFlowGreVersionMetricTag) FromPbText(value string) error { return retObj } -func (obj *patternFlowGreVersionMetricTag) ToYaml() (string, error) { +func (obj *isisLspExtendedIpv4ReachabilityTlv) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -234918,7 +279538,7 @@ func (obj *patternFlowGreVersionMetricTag) ToYaml() (string, error) { return string(data), nil } -func (obj *patternFlowGreVersionMetricTag) FromYaml(value string) error { +func (obj *isisLspExtendedIpv4ReachabilityTlv) FromYaml(value string) error { if value == "" { value = "{}" } @@ -234935,7 +279555,7 @@ func (obj *patternFlowGreVersionMetricTag) FromYaml(value string) error { return fmt.Errorf("unmarshal error %s", strings.Replace( uError.Error(), "\u00a0", " ", -1)[7:]) } - + obj.setNil() vErr := obj.validateToAndFrom() if vErr != nil { return vErr @@ -234943,7 +279563,7 @@ func (obj *patternFlowGreVersionMetricTag) FromYaml(value string) error { return nil } -func (obj *patternFlowGreVersionMetricTag) ToJson() (string, error) { +func (obj *isisLspExtendedIpv4ReachabilityTlv) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -234961,7 +279581,7 @@ func (obj *patternFlowGreVersionMetricTag) ToJson() (string, error) { return string(data), nil } -func (obj *patternFlowGreVersionMetricTag) FromJson(value string) error { +func (obj *isisLspExtendedIpv4ReachabilityTlv) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -234974,7 +279594,7 @@ func (obj *patternFlowGreVersionMetricTag) FromJson(value string) error { return fmt.Errorf("unmarshal error %s", strings.Replace( uError.Error(), "\u00a0", " ", -1)[7:]) } - + obj.setNil() err := obj.validateToAndFrom() if err != nil { return err @@ -234982,19 +279602,19 @@ func (obj *patternFlowGreVersionMetricTag) FromJson(value string) error { return nil } -func (obj *patternFlowGreVersionMetricTag) validateToAndFrom() error { +func (obj *isisLspExtendedIpv4ReachabilityTlv) validateToAndFrom() error { // emptyVars() obj.validateObj(&obj.validation, true) return obj.validationResult() } -func (obj *patternFlowGreVersionMetricTag) Validate() error { +func (obj *isisLspExtendedIpv4ReachabilityTlv) Validate() error { // emptyVars() obj.validateObj(&obj.validation, false) return obj.validationResult() } -func (obj *patternFlowGreVersionMetricTag) String() string { +func (obj *isisLspExtendedIpv4ReachabilityTlv) String() string { str, err := obj.ToYaml() if err != nil { return err.Error() @@ -235002,12 +279622,12 @@ func (obj *patternFlowGreVersionMetricTag) String() string { return str } -func (obj *patternFlowGreVersionMetricTag) Clone() (PatternFlowGreVersionMetricTag, error) { +func (obj *isisLspExtendedIpv4ReachabilityTlv) Clone() (IsisLspExtendedIpv4ReachabilityTlv, error) { vErr := obj.Validate() if vErr != nil { return nil, vErr } - newObj := NewPatternFlowGreVersionMetricTag() + newObj := NewIsisLspExtendedIpv4ReachabilityTlv() data, err := proto.Marshal(obj.Msg()) if err != nil { return nil, err @@ -235019,183 +279639,189 @@ func (obj *patternFlowGreVersionMetricTag) Clone() (PatternFlowGreVersionMetricT return newObj, nil } -// PatternFlowGreVersionMetricTag is metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. -type PatternFlowGreVersionMetricTag interface { +func (obj *isisLspExtendedIpv4ReachabilityTlv) setNil() { + obj.prefixesHolder = nil + obj.validationErrors = nil + obj.warnings = nil + obj.constraints = make(map[string]map[string]Constraints) +} + +// IsisLspExtendedIpv4ReachabilityTlv is this container defines list of IPv4 extended reachability information in one Extended IPv4 External Reachability TLV. +// It is advertised when the 'wide metric' is enabled. +type IsisLspExtendedIpv4ReachabilityTlv interface { Validation - // Msg marshals PatternFlowGreVersionMetricTag to protobuf object *otg.PatternFlowGreVersionMetricTag + // Msg marshals IsisLspExtendedIpv4ReachabilityTlv to protobuf object *otg.IsisLspExtendedIpv4ReachabilityTlv // and doesn't set defaults - Msg() *otg.PatternFlowGreVersionMetricTag - // SetMsg unmarshals PatternFlowGreVersionMetricTag from protobuf object *otg.PatternFlowGreVersionMetricTag + Msg() *otg.IsisLspExtendedIpv4ReachabilityTlv + // SetMsg unmarshals IsisLspExtendedIpv4ReachabilityTlv from protobuf object *otg.IsisLspExtendedIpv4ReachabilityTlv // and doesn't set defaults - SetMsg(*otg.PatternFlowGreVersionMetricTag) PatternFlowGreVersionMetricTag - // ToProto marshals PatternFlowGreVersionMetricTag to protobuf object *otg.PatternFlowGreVersionMetricTag - ToProto() (*otg.PatternFlowGreVersionMetricTag, error) - // ToPbText marshals PatternFlowGreVersionMetricTag to protobuf text + SetMsg(*otg.IsisLspExtendedIpv4ReachabilityTlv) IsisLspExtendedIpv4ReachabilityTlv + // ToProto marshals IsisLspExtendedIpv4ReachabilityTlv to protobuf object *otg.IsisLspExtendedIpv4ReachabilityTlv + ToProto() (*otg.IsisLspExtendedIpv4ReachabilityTlv, error) + // ToPbText marshals IsisLspExtendedIpv4ReachabilityTlv to protobuf text ToPbText() (string, error) - // ToYaml marshals PatternFlowGreVersionMetricTag to YAML text + // ToYaml marshals IsisLspExtendedIpv4ReachabilityTlv to YAML text ToYaml() (string, error) - // ToJson marshals PatternFlowGreVersionMetricTag to JSON text + // ToJson marshals IsisLspExtendedIpv4ReachabilityTlv to JSON text ToJson() (string, error) - // FromProto unmarshals PatternFlowGreVersionMetricTag from protobuf object *otg.PatternFlowGreVersionMetricTag - FromProto(msg *otg.PatternFlowGreVersionMetricTag) (PatternFlowGreVersionMetricTag, error) - // FromPbText unmarshals PatternFlowGreVersionMetricTag from protobuf text + // FromProto unmarshals IsisLspExtendedIpv4ReachabilityTlv from protobuf object *otg.IsisLspExtendedIpv4ReachabilityTlv + FromProto(msg *otg.IsisLspExtendedIpv4ReachabilityTlv) (IsisLspExtendedIpv4ReachabilityTlv, error) + // FromPbText unmarshals IsisLspExtendedIpv4ReachabilityTlv from protobuf text FromPbText(value string) error - // FromYaml unmarshals PatternFlowGreVersionMetricTag from YAML text + // FromYaml unmarshals IsisLspExtendedIpv4ReachabilityTlv from YAML text FromYaml(value string) error - // FromJson unmarshals PatternFlowGreVersionMetricTag from JSON text + // FromJson unmarshals IsisLspExtendedIpv4ReachabilityTlv from JSON text FromJson(value string) error - // Validate validates PatternFlowGreVersionMetricTag + // Validate validates IsisLspExtendedIpv4ReachabilityTlv Validate() error // A stringer function String() string // Clones the object - Clone() (PatternFlowGreVersionMetricTag, error) + Clone() (IsisLspExtendedIpv4ReachabilityTlv, error) validateToAndFrom() error validateObj(vObj *validation, set_default bool) setDefault() - // Name returns string, set in PatternFlowGreVersionMetricTag. - Name() string - // SetName assigns string provided by user to PatternFlowGreVersionMetricTag - SetName(value string) PatternFlowGreVersionMetricTag - // Offset returns uint32, set in PatternFlowGreVersionMetricTag. - Offset() uint32 - // SetOffset assigns uint32 provided by user to PatternFlowGreVersionMetricTag - SetOffset(value uint32) PatternFlowGreVersionMetricTag - // HasOffset checks if Offset has been set in PatternFlowGreVersionMetricTag - HasOffset() bool - // Length returns uint32, set in PatternFlowGreVersionMetricTag. - Length() uint32 - // SetLength assigns uint32 provided by user to PatternFlowGreVersionMetricTag - SetLength(value uint32) PatternFlowGreVersionMetricTag - // HasLength checks if Length has been set in PatternFlowGreVersionMetricTag - HasLength() bool + // Prefixes returns IsisLspExtendedIpv4ReachabilityTlvIsisLspExtendedV4PrefixIterIter, set in IsisLspExtendedIpv4ReachabilityTlv + Prefixes() IsisLspExtendedIpv4ReachabilityTlvIsisLspExtendedV4PrefixIter + setNil() } -// Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field -// Name returns a string -func (obj *patternFlowGreVersionMetricTag) Name() string { +// IPv4 prefix contained within extended reachability TLVs. +// Prefixes returns a []IsisLspExtendedV4Prefix +func (obj *isisLspExtendedIpv4ReachabilityTlv) Prefixes() IsisLspExtendedIpv4ReachabilityTlvIsisLspExtendedV4PrefixIter { + if len(obj.obj.Prefixes) == 0 { + obj.obj.Prefixes = []*otg.IsisLspExtendedV4Prefix{} + } + if obj.prefixesHolder == nil { + obj.prefixesHolder = newIsisLspExtendedIpv4ReachabilityTlvIsisLspExtendedV4PrefixIter(&obj.obj.Prefixes).setMsg(obj) + } + return obj.prefixesHolder +} - return *obj.obj.Name +type isisLspExtendedIpv4ReachabilityTlvIsisLspExtendedV4PrefixIter struct { + obj *isisLspExtendedIpv4ReachabilityTlv + isisLspExtendedV4PrefixSlice []IsisLspExtendedV4Prefix + fieldPtr *[]*otg.IsisLspExtendedV4Prefix +} +func newIsisLspExtendedIpv4ReachabilityTlvIsisLspExtendedV4PrefixIter(ptr *[]*otg.IsisLspExtendedV4Prefix) IsisLspExtendedIpv4ReachabilityTlvIsisLspExtendedV4PrefixIter { + return &isisLspExtendedIpv4ReachabilityTlvIsisLspExtendedV4PrefixIter{fieldPtr: ptr} } -// Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field -// SetName sets the string value in the PatternFlowGreVersionMetricTag object -func (obj *patternFlowGreVersionMetricTag) SetName(value string) PatternFlowGreVersionMetricTag { +type IsisLspExtendedIpv4ReachabilityTlvIsisLspExtendedV4PrefixIter interface { + setMsg(*isisLspExtendedIpv4ReachabilityTlv) IsisLspExtendedIpv4ReachabilityTlvIsisLspExtendedV4PrefixIter + Items() []IsisLspExtendedV4Prefix + Add() IsisLspExtendedV4Prefix + Append(items ...IsisLspExtendedV4Prefix) IsisLspExtendedIpv4ReachabilityTlvIsisLspExtendedV4PrefixIter + Set(index int, newObj IsisLspExtendedV4Prefix) IsisLspExtendedIpv4ReachabilityTlvIsisLspExtendedV4PrefixIter + Clear() IsisLspExtendedIpv4ReachabilityTlvIsisLspExtendedV4PrefixIter + clearHolderSlice() IsisLspExtendedIpv4ReachabilityTlvIsisLspExtendedV4PrefixIter + appendHolderSlice(item IsisLspExtendedV4Prefix) IsisLspExtendedIpv4ReachabilityTlvIsisLspExtendedV4PrefixIter +} - obj.obj.Name = &value +func (obj *isisLspExtendedIpv4ReachabilityTlvIsisLspExtendedV4PrefixIter) setMsg(msg *isisLspExtendedIpv4ReachabilityTlv) IsisLspExtendedIpv4ReachabilityTlvIsisLspExtendedV4PrefixIter { + obj.clearHolderSlice() + for _, val := range *obj.fieldPtr { + obj.appendHolderSlice(&isisLspExtendedV4Prefix{obj: val}) + } + obj.obj = msg return obj } -// Offset in bits relative to start of corresponding header field -// Offset returns a uint32 -func (obj *patternFlowGreVersionMetricTag) Offset() uint32 { - - return *obj.obj.Offset - +func (obj *isisLspExtendedIpv4ReachabilityTlvIsisLspExtendedV4PrefixIter) Items() []IsisLspExtendedV4Prefix { + return obj.isisLspExtendedV4PrefixSlice } -// Offset in bits relative to start of corresponding header field -// Offset returns a uint32 -func (obj *patternFlowGreVersionMetricTag) HasOffset() bool { - return obj.obj.Offset != nil +func (obj *isisLspExtendedIpv4ReachabilityTlvIsisLspExtendedV4PrefixIter) Add() IsisLspExtendedV4Prefix { + newObj := &otg.IsisLspExtendedV4Prefix{} + *obj.fieldPtr = append(*obj.fieldPtr, newObj) + newLibObj := &isisLspExtendedV4Prefix{obj: newObj} + newLibObj.setDefault() + obj.isisLspExtendedV4PrefixSlice = append(obj.isisLspExtendedV4PrefixSlice, newLibObj) + return newLibObj } -// Offset in bits relative to start of corresponding header field -// SetOffset sets the uint32 value in the PatternFlowGreVersionMetricTag object -func (obj *patternFlowGreVersionMetricTag) SetOffset(value uint32) PatternFlowGreVersionMetricTag { - - obj.obj.Offset = &value +func (obj *isisLspExtendedIpv4ReachabilityTlvIsisLspExtendedV4PrefixIter) Append(items ...IsisLspExtendedV4Prefix) IsisLspExtendedIpv4ReachabilityTlvIsisLspExtendedV4PrefixIter { + for _, item := range items { + newObj := item.Msg() + *obj.fieldPtr = append(*obj.fieldPtr, newObj) + obj.isisLspExtendedV4PrefixSlice = append(obj.isisLspExtendedV4PrefixSlice, item) + } return obj } -// Number of bits to track for metrics starting from configured offset of corresponding header field -// Length returns a uint32 -func (obj *patternFlowGreVersionMetricTag) Length() uint32 { - - return *obj.obj.Length - +func (obj *isisLspExtendedIpv4ReachabilityTlvIsisLspExtendedV4PrefixIter) Set(index int, newObj IsisLspExtendedV4Prefix) IsisLspExtendedIpv4ReachabilityTlvIsisLspExtendedV4PrefixIter { + (*obj.fieldPtr)[index] = newObj.Msg() + obj.isisLspExtendedV4PrefixSlice[index] = newObj + return obj } - -// Number of bits to track for metrics starting from configured offset of corresponding header field -// Length returns a uint32 -func (obj *patternFlowGreVersionMetricTag) HasLength() bool { - return obj.obj.Length != nil +func (obj *isisLspExtendedIpv4ReachabilityTlvIsisLspExtendedV4PrefixIter) Clear() IsisLspExtendedIpv4ReachabilityTlvIsisLspExtendedV4PrefixIter { + if len(*obj.fieldPtr) > 0 { + *obj.fieldPtr = []*otg.IsisLspExtendedV4Prefix{} + obj.isisLspExtendedV4PrefixSlice = []IsisLspExtendedV4Prefix{} + } + return obj } - -// Number of bits to track for metrics starting from configured offset of corresponding header field -// SetLength sets the uint32 value in the PatternFlowGreVersionMetricTag object -func (obj *patternFlowGreVersionMetricTag) SetLength(value uint32) PatternFlowGreVersionMetricTag { - - obj.obj.Length = &value +func (obj *isisLspExtendedIpv4ReachabilityTlvIsisLspExtendedV4PrefixIter) clearHolderSlice() IsisLspExtendedIpv4ReachabilityTlvIsisLspExtendedV4PrefixIter { + if len(obj.isisLspExtendedV4PrefixSlice) > 0 { + obj.isisLspExtendedV4PrefixSlice = []IsisLspExtendedV4Prefix{} + } + return obj +} +func (obj *isisLspExtendedIpv4ReachabilityTlvIsisLspExtendedV4PrefixIter) appendHolderSlice(item IsisLspExtendedV4Prefix) IsisLspExtendedIpv4ReachabilityTlvIsisLspExtendedV4PrefixIter { + obj.isisLspExtendedV4PrefixSlice = append(obj.isisLspExtendedV4PrefixSlice, item) return obj } -func (obj *patternFlowGreVersionMetricTag) validateObj(vObj *validation, set_default bool) { +func (obj *isisLspExtendedIpv4ReachabilityTlv) validateObj(vObj *validation, set_default bool) { if set_default { obj.setDefault() } - // Name is required - if obj.obj.Name == nil { - vObj.validationErrors = append(vObj.validationErrors, "Name is required field on interface PatternFlowGreVersionMetricTag") - } - - if obj.obj.Offset != nil { + if len(obj.obj.Prefixes) != 0 { - if *obj.obj.Offset > 2 { - vObj.validationErrors = append( - vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowGreVersionMetricTag.Offset <= 2 but Got %d", *obj.obj.Offset)) + if set_default { + obj.Prefixes().clearHolderSlice() + for _, item := range obj.obj.Prefixes { + obj.Prefixes().appendHolderSlice(&isisLspExtendedV4Prefix{obj: item}) + } } - - } - - if obj.obj.Length != nil { - - if *obj.obj.Length < 1 || *obj.obj.Length > 3 { - vObj.validationErrors = append( - vObj.validationErrors, - fmt.Sprintf("1 <= PatternFlowGreVersionMetricTag.Length <= 3 but Got %d", *obj.obj.Length)) + for _, item := range obj.Prefixes().Items() { + item.validateObj(vObj, set_default) } } } -func (obj *patternFlowGreVersionMetricTag) setDefault() { - if obj.obj.Offset == nil { - obj.SetOffset(0) - } - if obj.obj.Length == nil { - obj.SetLength(3) - } +func (obj *isisLspExtendedIpv4ReachabilityTlv) setDefault() { } -// ***** PatternFlowGreProtocolCounter ***** -type patternFlowGreProtocolCounter struct { +// ***** IsisLspIpv6ReachabilityTlv ***** +type isisLspIpv6ReachabilityTlv struct { validation - obj *otg.PatternFlowGreProtocolCounter + obj *otg.IsisLspIpv6ReachabilityTlv + prefixesHolder IsisLspIpv6ReachabilityTlvIsisLspV6PrefixIter } -func NewPatternFlowGreProtocolCounter() PatternFlowGreProtocolCounter { - obj := patternFlowGreProtocolCounter{obj: &otg.PatternFlowGreProtocolCounter{}} +func NewIsisLspIpv6ReachabilityTlv() IsisLspIpv6ReachabilityTlv { + obj := isisLspIpv6ReachabilityTlv{obj: &otg.IsisLspIpv6ReachabilityTlv{}} obj.setDefault() return &obj } -func (obj *patternFlowGreProtocolCounter) Msg() *otg.PatternFlowGreProtocolCounter { +func (obj *isisLspIpv6ReachabilityTlv) Msg() *otg.IsisLspIpv6ReachabilityTlv { return obj.obj } -func (obj *patternFlowGreProtocolCounter) SetMsg(msg *otg.PatternFlowGreProtocolCounter) PatternFlowGreProtocolCounter { - +func (obj *isisLspIpv6ReachabilityTlv) SetMsg(msg *otg.IsisLspIpv6ReachabilityTlv) IsisLspIpv6ReachabilityTlv { + obj.setNil() proto.Merge(obj.obj, msg) return obj } -func (obj *patternFlowGreProtocolCounter) ToProto() (*otg.PatternFlowGreProtocolCounter, error) { +func (obj *isisLspIpv6ReachabilityTlv) ToProto() (*otg.IsisLspIpv6ReachabilityTlv, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -235203,7 +279829,7 @@ func (obj *patternFlowGreProtocolCounter) ToProto() (*otg.PatternFlowGreProtocol return obj.Msg(), nil } -func (obj *patternFlowGreProtocolCounter) FromProto(msg *otg.PatternFlowGreProtocolCounter) (PatternFlowGreProtocolCounter, error) { +func (obj *isisLspIpv6ReachabilityTlv) FromProto(msg *otg.IsisLspIpv6ReachabilityTlv) (IsisLspIpv6ReachabilityTlv, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -235212,7 +279838,7 @@ func (obj *patternFlowGreProtocolCounter) FromProto(msg *otg.PatternFlowGreProto return newObj, nil } -func (obj *patternFlowGreProtocolCounter) ToPbText() (string, error) { +func (obj *isisLspIpv6ReachabilityTlv) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -235224,12 +279850,12 @@ func (obj *patternFlowGreProtocolCounter) ToPbText() (string, error) { return string(protoMarshal), nil } -func (obj *patternFlowGreProtocolCounter) FromPbText(value string) error { +func (obj *isisLspIpv6ReachabilityTlv) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj } - + obj.setNil() vErr := obj.validateToAndFrom() if vErr != nil { return vErr @@ -235237,7 +279863,7 @@ func (obj *patternFlowGreProtocolCounter) FromPbText(value string) error { return retObj } -func (obj *patternFlowGreProtocolCounter) ToYaml() (string, error) { +func (obj *isisLspIpv6ReachabilityTlv) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -235258,7 +279884,7 @@ func (obj *patternFlowGreProtocolCounter) ToYaml() (string, error) { return string(data), nil } -func (obj *patternFlowGreProtocolCounter) FromYaml(value string) error { +func (obj *isisLspIpv6ReachabilityTlv) FromYaml(value string) error { if value == "" { value = "{}" } @@ -235275,7 +279901,7 @@ func (obj *patternFlowGreProtocolCounter) FromYaml(value string) error { return fmt.Errorf("unmarshal error %s", strings.Replace( uError.Error(), "\u00a0", " ", -1)[7:]) } - + obj.setNil() vErr := obj.validateToAndFrom() if vErr != nil { return vErr @@ -235283,7 +279909,7 @@ func (obj *patternFlowGreProtocolCounter) FromYaml(value string) error { return nil } -func (obj *patternFlowGreProtocolCounter) ToJson() (string, error) { +func (obj *isisLspIpv6ReachabilityTlv) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -235301,7 +279927,7 @@ func (obj *patternFlowGreProtocolCounter) ToJson() (string, error) { return string(data), nil } -func (obj *patternFlowGreProtocolCounter) FromJson(value string) error { +func (obj *isisLspIpv6ReachabilityTlv) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -235314,7 +279940,7 @@ func (obj *patternFlowGreProtocolCounter) FromJson(value string) error { return fmt.Errorf("unmarshal error %s", strings.Replace( uError.Error(), "\u00a0", " ", -1)[7:]) } - + obj.setNil() err := obj.validateToAndFrom() if err != nil { return err @@ -235322,19 +279948,19 @@ func (obj *patternFlowGreProtocolCounter) FromJson(value string) error { return nil } -func (obj *patternFlowGreProtocolCounter) validateToAndFrom() error { +func (obj *isisLspIpv6ReachabilityTlv) validateToAndFrom() error { // emptyVars() obj.validateObj(&obj.validation, true) return obj.validationResult() } -func (obj *patternFlowGreProtocolCounter) Validate() error { +func (obj *isisLspIpv6ReachabilityTlv) Validate() error { // emptyVars() obj.validateObj(&obj.validation, false) return obj.validationResult() } -func (obj *patternFlowGreProtocolCounter) String() string { +func (obj *isisLspIpv6ReachabilityTlv) String() string { str, err := obj.ToYaml() if err != nil { return err.Error() @@ -235342,12 +279968,12 @@ func (obj *patternFlowGreProtocolCounter) String() string { return str } -func (obj *patternFlowGreProtocolCounter) Clone() (PatternFlowGreProtocolCounter, error) { +func (obj *isisLspIpv6ReachabilityTlv) Clone() (IsisLspIpv6ReachabilityTlv, error) { vErr := obj.Validate() if vErr != nil { return nil, vErr } - newObj := NewPatternFlowGreProtocolCounter() + newObj := NewIsisLspIpv6ReachabilityTlv() data, err := proto.Marshal(obj.Msg()) if err != nil { return nil, err @@ -235359,199 +279985,187 @@ func (obj *patternFlowGreProtocolCounter) Clone() (PatternFlowGreProtocolCounter return newObj, nil } -// PatternFlowGreProtocolCounter is integer counter pattern -type PatternFlowGreProtocolCounter interface { +func (obj *isisLspIpv6ReachabilityTlv) setNil() { + obj.prefixesHolder = nil + obj.validationErrors = nil + obj.warnings = nil + obj.constraints = make(map[string]map[string]Constraints) +} + +// IsisLspIpv6ReachabilityTlv is it defines list of IPv6 extended reachability information in one IPv6 Reachability TLV. +type IsisLspIpv6ReachabilityTlv interface { Validation - // Msg marshals PatternFlowGreProtocolCounter to protobuf object *otg.PatternFlowGreProtocolCounter + // Msg marshals IsisLspIpv6ReachabilityTlv to protobuf object *otg.IsisLspIpv6ReachabilityTlv // and doesn't set defaults - Msg() *otg.PatternFlowGreProtocolCounter - // SetMsg unmarshals PatternFlowGreProtocolCounter from protobuf object *otg.PatternFlowGreProtocolCounter + Msg() *otg.IsisLspIpv6ReachabilityTlv + // SetMsg unmarshals IsisLspIpv6ReachabilityTlv from protobuf object *otg.IsisLspIpv6ReachabilityTlv // and doesn't set defaults - SetMsg(*otg.PatternFlowGreProtocolCounter) PatternFlowGreProtocolCounter - // ToProto marshals PatternFlowGreProtocolCounter to protobuf object *otg.PatternFlowGreProtocolCounter - ToProto() (*otg.PatternFlowGreProtocolCounter, error) - // ToPbText marshals PatternFlowGreProtocolCounter to protobuf text + SetMsg(*otg.IsisLspIpv6ReachabilityTlv) IsisLspIpv6ReachabilityTlv + // ToProto marshals IsisLspIpv6ReachabilityTlv to protobuf object *otg.IsisLspIpv6ReachabilityTlv + ToProto() (*otg.IsisLspIpv6ReachabilityTlv, error) + // ToPbText marshals IsisLspIpv6ReachabilityTlv to protobuf text ToPbText() (string, error) - // ToYaml marshals PatternFlowGreProtocolCounter to YAML text + // ToYaml marshals IsisLspIpv6ReachabilityTlv to YAML text ToYaml() (string, error) - // ToJson marshals PatternFlowGreProtocolCounter to JSON text + // ToJson marshals IsisLspIpv6ReachabilityTlv to JSON text ToJson() (string, error) - // FromProto unmarshals PatternFlowGreProtocolCounter from protobuf object *otg.PatternFlowGreProtocolCounter - FromProto(msg *otg.PatternFlowGreProtocolCounter) (PatternFlowGreProtocolCounter, error) - // FromPbText unmarshals PatternFlowGreProtocolCounter from protobuf text + // FromProto unmarshals IsisLspIpv6ReachabilityTlv from protobuf object *otg.IsisLspIpv6ReachabilityTlv + FromProto(msg *otg.IsisLspIpv6ReachabilityTlv) (IsisLspIpv6ReachabilityTlv, error) + // FromPbText unmarshals IsisLspIpv6ReachabilityTlv from protobuf text FromPbText(value string) error - // FromYaml unmarshals PatternFlowGreProtocolCounter from YAML text + // FromYaml unmarshals IsisLspIpv6ReachabilityTlv from YAML text FromYaml(value string) error - // FromJson unmarshals PatternFlowGreProtocolCounter from JSON text + // FromJson unmarshals IsisLspIpv6ReachabilityTlv from JSON text FromJson(value string) error - // Validate validates PatternFlowGreProtocolCounter + // Validate validates IsisLspIpv6ReachabilityTlv Validate() error // A stringer function String() string // Clones the object - Clone() (PatternFlowGreProtocolCounter, error) + Clone() (IsisLspIpv6ReachabilityTlv, error) validateToAndFrom() error validateObj(vObj *validation, set_default bool) setDefault() - // Start returns uint32, set in PatternFlowGreProtocolCounter. - Start() uint32 - // SetStart assigns uint32 provided by user to PatternFlowGreProtocolCounter - SetStart(value uint32) PatternFlowGreProtocolCounter - // HasStart checks if Start has been set in PatternFlowGreProtocolCounter - HasStart() bool - // Step returns uint32, set in PatternFlowGreProtocolCounter. - Step() uint32 - // SetStep assigns uint32 provided by user to PatternFlowGreProtocolCounter - SetStep(value uint32) PatternFlowGreProtocolCounter - // HasStep checks if Step has been set in PatternFlowGreProtocolCounter - HasStep() bool - // Count returns uint32, set in PatternFlowGreProtocolCounter. - Count() uint32 - // SetCount assigns uint32 provided by user to PatternFlowGreProtocolCounter - SetCount(value uint32) PatternFlowGreProtocolCounter - // HasCount checks if Count has been set in PatternFlowGreProtocolCounter - HasCount() bool + // Prefixes returns IsisLspIpv6ReachabilityTlvIsisLspV6PrefixIterIter, set in IsisLspIpv6ReachabilityTlv + Prefixes() IsisLspIpv6ReachabilityTlvIsisLspV6PrefixIter + setNil() } -// description is TBD -// Start returns a uint32 -func (obj *patternFlowGreProtocolCounter) Start() uint32 { - - return *obj.obj.Start +// IPv6 prefix contained within reachability TLVs. +// Prefixes returns a []IsisLspV6Prefix +func (obj *isisLspIpv6ReachabilityTlv) Prefixes() IsisLspIpv6ReachabilityTlvIsisLspV6PrefixIter { + if len(obj.obj.Prefixes) == 0 { + obj.obj.Prefixes = []*otg.IsisLspV6Prefix{} + } + if obj.prefixesHolder == nil { + obj.prefixesHolder = newIsisLspIpv6ReachabilityTlvIsisLspV6PrefixIter(&obj.obj.Prefixes).setMsg(obj) + } + return obj.prefixesHolder +} +type isisLspIpv6ReachabilityTlvIsisLspV6PrefixIter struct { + obj *isisLspIpv6ReachabilityTlv + isisLspV6PrefixSlice []IsisLspV6Prefix + fieldPtr *[]*otg.IsisLspV6Prefix } -// description is TBD -// Start returns a uint32 -func (obj *patternFlowGreProtocolCounter) HasStart() bool { - return obj.obj.Start != nil +func newIsisLspIpv6ReachabilityTlvIsisLspV6PrefixIter(ptr *[]*otg.IsisLspV6Prefix) IsisLspIpv6ReachabilityTlvIsisLspV6PrefixIter { + return &isisLspIpv6ReachabilityTlvIsisLspV6PrefixIter{fieldPtr: ptr} } -// description is TBD -// SetStart sets the uint32 value in the PatternFlowGreProtocolCounter object -func (obj *patternFlowGreProtocolCounter) SetStart(value uint32) PatternFlowGreProtocolCounter { +type IsisLspIpv6ReachabilityTlvIsisLspV6PrefixIter interface { + setMsg(*isisLspIpv6ReachabilityTlv) IsisLspIpv6ReachabilityTlvIsisLspV6PrefixIter + Items() []IsisLspV6Prefix + Add() IsisLspV6Prefix + Append(items ...IsisLspV6Prefix) IsisLspIpv6ReachabilityTlvIsisLspV6PrefixIter + Set(index int, newObj IsisLspV6Prefix) IsisLspIpv6ReachabilityTlvIsisLspV6PrefixIter + Clear() IsisLspIpv6ReachabilityTlvIsisLspV6PrefixIter + clearHolderSlice() IsisLspIpv6ReachabilityTlvIsisLspV6PrefixIter + appendHolderSlice(item IsisLspV6Prefix) IsisLspIpv6ReachabilityTlvIsisLspV6PrefixIter +} - obj.obj.Start = &value +func (obj *isisLspIpv6ReachabilityTlvIsisLspV6PrefixIter) setMsg(msg *isisLspIpv6ReachabilityTlv) IsisLspIpv6ReachabilityTlvIsisLspV6PrefixIter { + obj.clearHolderSlice() + for _, val := range *obj.fieldPtr { + obj.appendHolderSlice(&isisLspV6Prefix{obj: val}) + } + obj.obj = msg return obj } -// description is TBD -// Step returns a uint32 -func (obj *patternFlowGreProtocolCounter) Step() uint32 { - - return *obj.obj.Step - +func (obj *isisLspIpv6ReachabilityTlvIsisLspV6PrefixIter) Items() []IsisLspV6Prefix { + return obj.isisLspV6PrefixSlice } -// description is TBD -// Step returns a uint32 -func (obj *patternFlowGreProtocolCounter) HasStep() bool { - return obj.obj.Step != nil +func (obj *isisLspIpv6ReachabilityTlvIsisLspV6PrefixIter) Add() IsisLspV6Prefix { + newObj := &otg.IsisLspV6Prefix{} + *obj.fieldPtr = append(*obj.fieldPtr, newObj) + newLibObj := &isisLspV6Prefix{obj: newObj} + newLibObj.setDefault() + obj.isisLspV6PrefixSlice = append(obj.isisLspV6PrefixSlice, newLibObj) + return newLibObj } -// description is TBD -// SetStep sets the uint32 value in the PatternFlowGreProtocolCounter object -func (obj *patternFlowGreProtocolCounter) SetStep(value uint32) PatternFlowGreProtocolCounter { - - obj.obj.Step = &value +func (obj *isisLspIpv6ReachabilityTlvIsisLspV6PrefixIter) Append(items ...IsisLspV6Prefix) IsisLspIpv6ReachabilityTlvIsisLspV6PrefixIter { + for _, item := range items { + newObj := item.Msg() + *obj.fieldPtr = append(*obj.fieldPtr, newObj) + obj.isisLspV6PrefixSlice = append(obj.isisLspV6PrefixSlice, item) + } return obj } -// description is TBD -// Count returns a uint32 -func (obj *patternFlowGreProtocolCounter) Count() uint32 { - - return *obj.obj.Count - +func (obj *isisLspIpv6ReachabilityTlvIsisLspV6PrefixIter) Set(index int, newObj IsisLspV6Prefix) IsisLspIpv6ReachabilityTlvIsisLspV6PrefixIter { + (*obj.fieldPtr)[index] = newObj.Msg() + obj.isisLspV6PrefixSlice[index] = newObj + return obj } - -// description is TBD -// Count returns a uint32 -func (obj *patternFlowGreProtocolCounter) HasCount() bool { - return obj.obj.Count != nil +func (obj *isisLspIpv6ReachabilityTlvIsisLspV6PrefixIter) Clear() IsisLspIpv6ReachabilityTlvIsisLspV6PrefixIter { + if len(*obj.fieldPtr) > 0 { + *obj.fieldPtr = []*otg.IsisLspV6Prefix{} + obj.isisLspV6PrefixSlice = []IsisLspV6Prefix{} + } + return obj } - -// description is TBD -// SetCount sets the uint32 value in the PatternFlowGreProtocolCounter object -func (obj *patternFlowGreProtocolCounter) SetCount(value uint32) PatternFlowGreProtocolCounter { - - obj.obj.Count = &value +func (obj *isisLspIpv6ReachabilityTlvIsisLspV6PrefixIter) clearHolderSlice() IsisLspIpv6ReachabilityTlvIsisLspV6PrefixIter { + if len(obj.isisLspV6PrefixSlice) > 0 { + obj.isisLspV6PrefixSlice = []IsisLspV6Prefix{} + } + return obj +} +func (obj *isisLspIpv6ReachabilityTlvIsisLspV6PrefixIter) appendHolderSlice(item IsisLspV6Prefix) IsisLspIpv6ReachabilityTlvIsisLspV6PrefixIter { + obj.isisLspV6PrefixSlice = append(obj.isisLspV6PrefixSlice, item) return obj } -func (obj *patternFlowGreProtocolCounter) validateObj(vObj *validation, set_default bool) { +func (obj *isisLspIpv6ReachabilityTlv) validateObj(vObj *validation, set_default bool) { if set_default { obj.setDefault() } - if obj.obj.Start != nil { - - if *obj.obj.Start > 65535 { - vObj.validationErrors = append( - vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowGreProtocolCounter.Start <= 65535 but Got %d", *obj.obj.Start)) - } - - } - - if obj.obj.Step != nil { + if len(obj.obj.Prefixes) != 0 { - if *obj.obj.Step > 65535 { - vObj.validationErrors = append( - vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowGreProtocolCounter.Step <= 65535 but Got %d", *obj.obj.Step)) + if set_default { + obj.Prefixes().clearHolderSlice() + for _, item := range obj.obj.Prefixes { + obj.Prefixes().appendHolderSlice(&isisLspV6Prefix{obj: item}) + } } - - } - - if obj.obj.Count != nil { - - if *obj.obj.Count > 65535 { - vObj.validationErrors = append( - vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowGreProtocolCounter.Count <= 65535 but Got %d", *obj.obj.Count)) + for _, item := range obj.Prefixes().Items() { + item.validateObj(vObj, set_default) } } } -func (obj *patternFlowGreProtocolCounter) setDefault() { - if obj.obj.Start == nil { - obj.SetStart(2048) - } - if obj.obj.Step == nil { - obj.SetStep(1) - } - if obj.obj.Count == nil { - obj.SetCount(1) - } +func (obj *isisLspIpv6ReachabilityTlv) setDefault() { } -// ***** PatternFlowGreProtocolMetricTag ***** -type patternFlowGreProtocolMetricTag struct { +// ***** BgpEthernetSegmentDfElection ***** +type bgpEthernetSegmentDfElection struct { validation - obj *otg.PatternFlowGreProtocolMetricTag + obj *otg.BgpEthernetSegmentDfElection } -func NewPatternFlowGreProtocolMetricTag() PatternFlowGreProtocolMetricTag { - obj := patternFlowGreProtocolMetricTag{obj: &otg.PatternFlowGreProtocolMetricTag{}} +func NewBgpEthernetSegmentDfElection() BgpEthernetSegmentDfElection { + obj := bgpEthernetSegmentDfElection{obj: &otg.BgpEthernetSegmentDfElection{}} obj.setDefault() return &obj } -func (obj *patternFlowGreProtocolMetricTag) Msg() *otg.PatternFlowGreProtocolMetricTag { +func (obj *bgpEthernetSegmentDfElection) Msg() *otg.BgpEthernetSegmentDfElection { return obj.obj } -func (obj *patternFlowGreProtocolMetricTag) SetMsg(msg *otg.PatternFlowGreProtocolMetricTag) PatternFlowGreProtocolMetricTag { +func (obj *bgpEthernetSegmentDfElection) SetMsg(msg *otg.BgpEthernetSegmentDfElection) BgpEthernetSegmentDfElection { proto.Merge(obj.obj, msg) return obj } -func (obj *patternFlowGreProtocolMetricTag) ToProto() (*otg.PatternFlowGreProtocolMetricTag, error) { +func (obj *bgpEthernetSegmentDfElection) ToProto() (*otg.BgpEthernetSegmentDfElection, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -235559,7 +280173,7 @@ func (obj *patternFlowGreProtocolMetricTag) ToProto() (*otg.PatternFlowGreProtoc return obj.Msg(), nil } -func (obj *patternFlowGreProtocolMetricTag) FromProto(msg *otg.PatternFlowGreProtocolMetricTag) (PatternFlowGreProtocolMetricTag, error) { +func (obj *bgpEthernetSegmentDfElection) FromProto(msg *otg.BgpEthernetSegmentDfElection) (BgpEthernetSegmentDfElection, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -235568,7 +280182,7 @@ func (obj *patternFlowGreProtocolMetricTag) FromProto(msg *otg.PatternFlowGrePro return newObj, nil } -func (obj *patternFlowGreProtocolMetricTag) ToPbText() (string, error) { +func (obj *bgpEthernetSegmentDfElection) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -235580,7 +280194,7 @@ func (obj *patternFlowGreProtocolMetricTag) ToPbText() (string, error) { return string(protoMarshal), nil } -func (obj *patternFlowGreProtocolMetricTag) FromPbText(value string) error { +func (obj *bgpEthernetSegmentDfElection) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj @@ -235593,7 +280207,7 @@ func (obj *patternFlowGreProtocolMetricTag) FromPbText(value string) error { return retObj } -func (obj *patternFlowGreProtocolMetricTag) ToYaml() (string, error) { +func (obj *bgpEthernetSegmentDfElection) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -235614,7 +280228,7 @@ func (obj *patternFlowGreProtocolMetricTag) ToYaml() (string, error) { return string(data), nil } -func (obj *patternFlowGreProtocolMetricTag) FromYaml(value string) error { +func (obj *bgpEthernetSegmentDfElection) FromYaml(value string) error { if value == "" { value = "{}" } @@ -235639,7 +280253,7 @@ func (obj *patternFlowGreProtocolMetricTag) FromYaml(value string) error { return nil } -func (obj *patternFlowGreProtocolMetricTag) ToJson() (string, error) { +func (obj *bgpEthernetSegmentDfElection) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -235657,7 +280271,7 @@ func (obj *patternFlowGreProtocolMetricTag) ToJson() (string, error) { return string(data), nil } -func (obj *patternFlowGreProtocolMetricTag) FromJson(value string) error { +func (obj *bgpEthernetSegmentDfElection) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -235678,19 +280292,19 @@ func (obj *patternFlowGreProtocolMetricTag) FromJson(value string) error { return nil } -func (obj *patternFlowGreProtocolMetricTag) validateToAndFrom() error { +func (obj *bgpEthernetSegmentDfElection) validateToAndFrom() error { // emptyVars() obj.validateObj(&obj.validation, true) return obj.validationResult() } -func (obj *patternFlowGreProtocolMetricTag) Validate() error { +func (obj *bgpEthernetSegmentDfElection) Validate() error { // emptyVars() obj.validateObj(&obj.validation, false) return obj.validationResult() } -func (obj *patternFlowGreProtocolMetricTag) String() string { +func (obj *bgpEthernetSegmentDfElection) String() string { str, err := obj.ToYaml() if err != nil { return err.Error() @@ -235698,12 +280312,12 @@ func (obj *patternFlowGreProtocolMetricTag) String() string { return str } -func (obj *patternFlowGreProtocolMetricTag) Clone() (PatternFlowGreProtocolMetricTag, error) { +func (obj *bgpEthernetSegmentDfElection) Clone() (BgpEthernetSegmentDfElection, error) { vErr := obj.Validate() if vErr != nil { return nil, vErr } - newObj := NewPatternFlowGreProtocolMetricTag() + newObj := NewBgpEthernetSegmentDfElection() data, err := proto.Marshal(obj.Msg()) if err != nil { return nil, err @@ -235715,183 +280329,118 @@ func (obj *patternFlowGreProtocolMetricTag) Clone() (PatternFlowGreProtocolMetri return newObj, nil } -// PatternFlowGreProtocolMetricTag is metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. -type PatternFlowGreProtocolMetricTag interface { +// BgpEthernetSegmentDfElection is configuration for Designated Forwarder (DF) election among the Provider Edge (PE) routers on the same Ethernet Segment. +type BgpEthernetSegmentDfElection interface { Validation - // Msg marshals PatternFlowGreProtocolMetricTag to protobuf object *otg.PatternFlowGreProtocolMetricTag + // Msg marshals BgpEthernetSegmentDfElection to protobuf object *otg.BgpEthernetSegmentDfElection // and doesn't set defaults - Msg() *otg.PatternFlowGreProtocolMetricTag - // SetMsg unmarshals PatternFlowGreProtocolMetricTag from protobuf object *otg.PatternFlowGreProtocolMetricTag + Msg() *otg.BgpEthernetSegmentDfElection + // SetMsg unmarshals BgpEthernetSegmentDfElection from protobuf object *otg.BgpEthernetSegmentDfElection // and doesn't set defaults - SetMsg(*otg.PatternFlowGreProtocolMetricTag) PatternFlowGreProtocolMetricTag - // ToProto marshals PatternFlowGreProtocolMetricTag to protobuf object *otg.PatternFlowGreProtocolMetricTag - ToProto() (*otg.PatternFlowGreProtocolMetricTag, error) - // ToPbText marshals PatternFlowGreProtocolMetricTag to protobuf text + SetMsg(*otg.BgpEthernetSegmentDfElection) BgpEthernetSegmentDfElection + // ToProto marshals BgpEthernetSegmentDfElection to protobuf object *otg.BgpEthernetSegmentDfElection + ToProto() (*otg.BgpEthernetSegmentDfElection, error) + // ToPbText marshals BgpEthernetSegmentDfElection to protobuf text ToPbText() (string, error) - // ToYaml marshals PatternFlowGreProtocolMetricTag to YAML text + // ToYaml marshals BgpEthernetSegmentDfElection to YAML text ToYaml() (string, error) - // ToJson marshals PatternFlowGreProtocolMetricTag to JSON text + // ToJson marshals BgpEthernetSegmentDfElection to JSON text ToJson() (string, error) - // FromProto unmarshals PatternFlowGreProtocolMetricTag from protobuf object *otg.PatternFlowGreProtocolMetricTag - FromProto(msg *otg.PatternFlowGreProtocolMetricTag) (PatternFlowGreProtocolMetricTag, error) - // FromPbText unmarshals PatternFlowGreProtocolMetricTag from protobuf text + // FromProto unmarshals BgpEthernetSegmentDfElection from protobuf object *otg.BgpEthernetSegmentDfElection + FromProto(msg *otg.BgpEthernetSegmentDfElection) (BgpEthernetSegmentDfElection, error) + // FromPbText unmarshals BgpEthernetSegmentDfElection from protobuf text FromPbText(value string) error - // FromYaml unmarshals PatternFlowGreProtocolMetricTag from YAML text + // FromYaml unmarshals BgpEthernetSegmentDfElection from YAML text FromYaml(value string) error - // FromJson unmarshals PatternFlowGreProtocolMetricTag from JSON text + // FromJson unmarshals BgpEthernetSegmentDfElection from JSON text FromJson(value string) error - // Validate validates PatternFlowGreProtocolMetricTag + // Validate validates BgpEthernetSegmentDfElection Validate() error // A stringer function String() string // Clones the object - Clone() (PatternFlowGreProtocolMetricTag, error) + Clone() (BgpEthernetSegmentDfElection, error) validateToAndFrom() error validateObj(vObj *validation, set_default bool) setDefault() - // Name returns string, set in PatternFlowGreProtocolMetricTag. - Name() string - // SetName assigns string provided by user to PatternFlowGreProtocolMetricTag - SetName(value string) PatternFlowGreProtocolMetricTag - // Offset returns uint32, set in PatternFlowGreProtocolMetricTag. - Offset() uint32 - // SetOffset assigns uint32 provided by user to PatternFlowGreProtocolMetricTag - SetOffset(value uint32) PatternFlowGreProtocolMetricTag - // HasOffset checks if Offset has been set in PatternFlowGreProtocolMetricTag - HasOffset() bool - // Length returns uint32, set in PatternFlowGreProtocolMetricTag. - Length() uint32 - // SetLength assigns uint32 provided by user to PatternFlowGreProtocolMetricTag - SetLength(value uint32) PatternFlowGreProtocolMetricTag - // HasLength checks if Length has been set in PatternFlowGreProtocolMetricTag - HasLength() bool -} - -// Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field -// Name returns a string -func (obj *patternFlowGreProtocolMetricTag) Name() string { - - return *obj.obj.Name - -} - -// Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field -// SetName sets the string value in the PatternFlowGreProtocolMetricTag object -func (obj *patternFlowGreProtocolMetricTag) SetName(value string) PatternFlowGreProtocolMetricTag { - - obj.obj.Name = &value - return obj -} - -// Offset in bits relative to start of corresponding header field -// Offset returns a uint32 -func (obj *patternFlowGreProtocolMetricTag) Offset() uint32 { - - return *obj.obj.Offset - -} - -// Offset in bits relative to start of corresponding header field -// Offset returns a uint32 -func (obj *patternFlowGreProtocolMetricTag) HasOffset() bool { - return obj.obj.Offset != nil -} - -// Offset in bits relative to start of corresponding header field -// SetOffset sets the uint32 value in the PatternFlowGreProtocolMetricTag object -func (obj *patternFlowGreProtocolMetricTag) SetOffset(value uint32) PatternFlowGreProtocolMetricTag { - - obj.obj.Offset = &value - return obj + // ElectionTimer returns uint32, set in BgpEthernetSegmentDfElection. + ElectionTimer() uint32 + // SetElectionTimer assigns uint32 provided by user to BgpEthernetSegmentDfElection + SetElectionTimer(value uint32) BgpEthernetSegmentDfElection + // HasElectionTimer checks if ElectionTimer has been set in BgpEthernetSegmentDfElection + HasElectionTimer() bool } -// Number of bits to track for metrics starting from configured offset of corresponding header field -// Length returns a uint32 -func (obj *patternFlowGreProtocolMetricTag) Length() uint32 { +// The DF election timer in seconds. +// ElectionTimer returns a uint32 +func (obj *bgpEthernetSegmentDfElection) ElectionTimer() uint32 { - return *obj.obj.Length + return *obj.obj.ElectionTimer } -// Number of bits to track for metrics starting from configured offset of corresponding header field -// Length returns a uint32 -func (obj *patternFlowGreProtocolMetricTag) HasLength() bool { - return obj.obj.Length != nil +// The DF election timer in seconds. +// ElectionTimer returns a uint32 +func (obj *bgpEthernetSegmentDfElection) HasElectionTimer() bool { + return obj.obj.ElectionTimer != nil } -// Number of bits to track for metrics starting from configured offset of corresponding header field -// SetLength sets the uint32 value in the PatternFlowGreProtocolMetricTag object -func (obj *patternFlowGreProtocolMetricTag) SetLength(value uint32) PatternFlowGreProtocolMetricTag { +// The DF election timer in seconds. +// SetElectionTimer sets the uint32 value in the BgpEthernetSegmentDfElection object +func (obj *bgpEthernetSegmentDfElection) SetElectionTimer(value uint32) BgpEthernetSegmentDfElection { - obj.obj.Length = &value + obj.obj.ElectionTimer = &value return obj } -func (obj *patternFlowGreProtocolMetricTag) validateObj(vObj *validation, set_default bool) { +func (obj *bgpEthernetSegmentDfElection) validateObj(vObj *validation, set_default bool) { if set_default { obj.setDefault() } - // Name is required - if obj.obj.Name == nil { - vObj.validationErrors = append(vObj.validationErrors, "Name is required field on interface PatternFlowGreProtocolMetricTag") - } - - if obj.obj.Offset != nil { - - if *obj.obj.Offset > 15 { - vObj.validationErrors = append( - vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowGreProtocolMetricTag.Offset <= 15 but Got %d", *obj.obj.Offset)) - } - - } - - if obj.obj.Length != nil { + if obj.obj.ElectionTimer != nil { - if *obj.obj.Length < 1 || *obj.obj.Length > 16 { + if *obj.obj.ElectionTimer > 300 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("1 <= PatternFlowGreProtocolMetricTag.Length <= 16 but Got %d", *obj.obj.Length)) + fmt.Sprintf("0 <= BgpEthernetSegmentDfElection.ElectionTimer <= 300 but Got %d", *obj.obj.ElectionTimer)) } } } -func (obj *patternFlowGreProtocolMetricTag) setDefault() { - if obj.obj.Offset == nil { - obj.SetOffset(0) - } - if obj.obj.Length == nil { - obj.SetLength(16) +func (obj *bgpEthernetSegmentDfElection) setDefault() { + if obj.obj.ElectionTimer == nil { + obj.SetElectionTimer(3) } } -// ***** PatternFlowGreReserved1Counter ***** -type patternFlowGreReserved1Counter struct { +// ***** BgpV4EvpnEvis ***** +type bgpV4EvpnEvis struct { validation - obj *otg.PatternFlowGreReserved1Counter + obj *otg.BgpV4EvpnEvis + eviVxlanHolder BgpV4EviVxlan } -func NewPatternFlowGreReserved1Counter() PatternFlowGreReserved1Counter { - obj := patternFlowGreReserved1Counter{obj: &otg.PatternFlowGreReserved1Counter{}} +func NewBgpV4EvpnEvis() BgpV4EvpnEvis { + obj := bgpV4EvpnEvis{obj: &otg.BgpV4EvpnEvis{}} obj.setDefault() return &obj } -func (obj *patternFlowGreReserved1Counter) Msg() *otg.PatternFlowGreReserved1Counter { +func (obj *bgpV4EvpnEvis) Msg() *otg.BgpV4EvpnEvis { return obj.obj } -func (obj *patternFlowGreReserved1Counter) SetMsg(msg *otg.PatternFlowGreReserved1Counter) PatternFlowGreReserved1Counter { - +func (obj *bgpV4EvpnEvis) SetMsg(msg *otg.BgpV4EvpnEvis) BgpV4EvpnEvis { + obj.setNil() proto.Merge(obj.obj, msg) return obj } -func (obj *patternFlowGreReserved1Counter) ToProto() (*otg.PatternFlowGreReserved1Counter, error) { +func (obj *bgpV4EvpnEvis) ToProto() (*otg.BgpV4EvpnEvis, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -235899,7 +280448,7 @@ func (obj *patternFlowGreReserved1Counter) ToProto() (*otg.PatternFlowGreReserve return obj.Msg(), nil } -func (obj *patternFlowGreReserved1Counter) FromProto(msg *otg.PatternFlowGreReserved1Counter) (PatternFlowGreReserved1Counter, error) { +func (obj *bgpV4EvpnEvis) FromProto(msg *otg.BgpV4EvpnEvis) (BgpV4EvpnEvis, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -235908,7 +280457,7 @@ func (obj *patternFlowGreReserved1Counter) FromProto(msg *otg.PatternFlowGreRese return newObj, nil } -func (obj *patternFlowGreReserved1Counter) ToPbText() (string, error) { +func (obj *bgpV4EvpnEvis) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -235920,12 +280469,12 @@ func (obj *patternFlowGreReserved1Counter) ToPbText() (string, error) { return string(protoMarshal), nil } -func (obj *patternFlowGreReserved1Counter) FromPbText(value string) error { +func (obj *bgpV4EvpnEvis) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj } - + obj.setNil() vErr := obj.validateToAndFrom() if vErr != nil { return vErr @@ -235933,7 +280482,7 @@ func (obj *patternFlowGreReserved1Counter) FromPbText(value string) error { return retObj } -func (obj *patternFlowGreReserved1Counter) ToYaml() (string, error) { +func (obj *bgpV4EvpnEvis) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -235954,7 +280503,7 @@ func (obj *patternFlowGreReserved1Counter) ToYaml() (string, error) { return string(data), nil } -func (obj *patternFlowGreReserved1Counter) FromYaml(value string) error { +func (obj *bgpV4EvpnEvis) FromYaml(value string) error { if value == "" { value = "{}" } @@ -235971,7 +280520,7 @@ func (obj *patternFlowGreReserved1Counter) FromYaml(value string) error { return fmt.Errorf("unmarshal error %s", strings.Replace( uError.Error(), "\u00a0", " ", -1)[7:]) } - + obj.setNil() vErr := obj.validateToAndFrom() if vErr != nil { return vErr @@ -235979,7 +280528,7 @@ func (obj *patternFlowGreReserved1Counter) FromYaml(value string) error { return nil } -func (obj *patternFlowGreReserved1Counter) ToJson() (string, error) { +func (obj *bgpV4EvpnEvis) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -235997,7 +280546,7 @@ func (obj *patternFlowGreReserved1Counter) ToJson() (string, error) { return string(data), nil } -func (obj *patternFlowGreReserved1Counter) FromJson(value string) error { +func (obj *bgpV4EvpnEvis) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -236010,7 +280559,7 @@ func (obj *patternFlowGreReserved1Counter) FromJson(value string) error { return fmt.Errorf("unmarshal error %s", strings.Replace( uError.Error(), "\u00a0", " ", -1)[7:]) } - + obj.setNil() err := obj.validateToAndFrom() if err != nil { return err @@ -236018,19 +280567,19 @@ func (obj *patternFlowGreReserved1Counter) FromJson(value string) error { return nil } -func (obj *patternFlowGreReserved1Counter) validateToAndFrom() error { +func (obj *bgpV4EvpnEvis) validateToAndFrom() error { // emptyVars() obj.validateObj(&obj.validation, true) return obj.validationResult() } -func (obj *patternFlowGreReserved1Counter) Validate() error { +func (obj *bgpV4EvpnEvis) Validate() error { // emptyVars() obj.validateObj(&obj.validation, false) return obj.validationResult() } -func (obj *patternFlowGreReserved1Counter) String() string { +func (obj *bgpV4EvpnEvis) String() string { str, err := obj.ToYaml() if err != nil { return err.Error() @@ -236038,12 +280587,12 @@ func (obj *patternFlowGreReserved1Counter) String() string { return str } -func (obj *patternFlowGreReserved1Counter) Clone() (PatternFlowGreReserved1Counter, error) { +func (obj *bgpV4EvpnEvis) Clone() (BgpV4EvpnEvis, error) { vErr := obj.Validate() if vErr != nil { return nil, vErr } - newObj := NewPatternFlowGreReserved1Counter() + newObj := NewBgpV4EvpnEvis() data, err := proto.Marshal(obj.Msg()) if err != nil { return nil, err @@ -236055,199 +280604,187 @@ func (obj *patternFlowGreReserved1Counter) Clone() (PatternFlowGreReserved1Count return newObj, nil } -// PatternFlowGreReserved1Counter is integer counter pattern -type PatternFlowGreReserved1Counter interface { +func (obj *bgpV4EvpnEvis) setNil() { + obj.eviVxlanHolder = nil + obj.validationErrors = nil + obj.warnings = nil + obj.constraints = make(map[string]map[string]Constraints) +} + +// BgpV4EvpnEvis is this contains a list of different flavors of EVPN. +// For example EVPN over VXLAN or EVPN over MPLS etc to be configured per Ethernet segment. +// Need to instantiate correct type of EVPN instance as per requirement. +type BgpV4EvpnEvis interface { Validation - // Msg marshals PatternFlowGreReserved1Counter to protobuf object *otg.PatternFlowGreReserved1Counter + // Msg marshals BgpV4EvpnEvis to protobuf object *otg.BgpV4EvpnEvis // and doesn't set defaults - Msg() *otg.PatternFlowGreReserved1Counter - // SetMsg unmarshals PatternFlowGreReserved1Counter from protobuf object *otg.PatternFlowGreReserved1Counter + Msg() *otg.BgpV4EvpnEvis + // SetMsg unmarshals BgpV4EvpnEvis from protobuf object *otg.BgpV4EvpnEvis // and doesn't set defaults - SetMsg(*otg.PatternFlowGreReserved1Counter) PatternFlowGreReserved1Counter - // ToProto marshals PatternFlowGreReserved1Counter to protobuf object *otg.PatternFlowGreReserved1Counter - ToProto() (*otg.PatternFlowGreReserved1Counter, error) - // ToPbText marshals PatternFlowGreReserved1Counter to protobuf text + SetMsg(*otg.BgpV4EvpnEvis) BgpV4EvpnEvis + // ToProto marshals BgpV4EvpnEvis to protobuf object *otg.BgpV4EvpnEvis + ToProto() (*otg.BgpV4EvpnEvis, error) + // ToPbText marshals BgpV4EvpnEvis to protobuf text ToPbText() (string, error) - // ToYaml marshals PatternFlowGreReserved1Counter to YAML text + // ToYaml marshals BgpV4EvpnEvis to YAML text ToYaml() (string, error) - // ToJson marshals PatternFlowGreReserved1Counter to JSON text + // ToJson marshals BgpV4EvpnEvis to JSON text ToJson() (string, error) - // FromProto unmarshals PatternFlowGreReserved1Counter from protobuf object *otg.PatternFlowGreReserved1Counter - FromProto(msg *otg.PatternFlowGreReserved1Counter) (PatternFlowGreReserved1Counter, error) - // FromPbText unmarshals PatternFlowGreReserved1Counter from protobuf text + // FromProto unmarshals BgpV4EvpnEvis from protobuf object *otg.BgpV4EvpnEvis + FromProto(msg *otg.BgpV4EvpnEvis) (BgpV4EvpnEvis, error) + // FromPbText unmarshals BgpV4EvpnEvis from protobuf text FromPbText(value string) error - // FromYaml unmarshals PatternFlowGreReserved1Counter from YAML text + // FromYaml unmarshals BgpV4EvpnEvis from YAML text FromYaml(value string) error - // FromJson unmarshals PatternFlowGreReserved1Counter from JSON text + // FromJson unmarshals BgpV4EvpnEvis from JSON text FromJson(value string) error - // Validate validates PatternFlowGreReserved1Counter + // Validate validates BgpV4EvpnEvis Validate() error // A stringer function String() string // Clones the object - Clone() (PatternFlowGreReserved1Counter, error) + Clone() (BgpV4EvpnEvis, error) validateToAndFrom() error validateObj(vObj *validation, set_default bool) setDefault() - // Start returns uint32, set in PatternFlowGreReserved1Counter. - Start() uint32 - // SetStart assigns uint32 provided by user to PatternFlowGreReserved1Counter - SetStart(value uint32) PatternFlowGreReserved1Counter - // HasStart checks if Start has been set in PatternFlowGreReserved1Counter - HasStart() bool - // Step returns uint32, set in PatternFlowGreReserved1Counter. - Step() uint32 - // SetStep assigns uint32 provided by user to PatternFlowGreReserved1Counter - SetStep(value uint32) PatternFlowGreReserved1Counter - // HasStep checks if Step has been set in PatternFlowGreReserved1Counter - HasStep() bool - // Count returns uint32, set in PatternFlowGreReserved1Counter. - Count() uint32 - // SetCount assigns uint32 provided by user to PatternFlowGreReserved1Counter - SetCount(value uint32) PatternFlowGreReserved1Counter - // HasCount checks if Count has been set in PatternFlowGreReserved1Counter - HasCount() bool + // Choice returns BgpV4EvpnEvisChoiceEnum, set in BgpV4EvpnEvis + Choice() BgpV4EvpnEvisChoiceEnum + // SetChoice assigns BgpV4EvpnEvisChoiceEnum provided by user to BgpV4EvpnEvis + SetChoice(value BgpV4EvpnEvisChoiceEnum) BgpV4EvpnEvis + // HasChoice checks if Choice has been set in BgpV4EvpnEvis + HasChoice() bool + // EviVxlan returns BgpV4EviVxlan, set in BgpV4EvpnEvis. + // BgpV4EviVxlan is configuration for BGP EVPN EVI. Advertises following routes - + // + // # Type 3 - Inclusive Multicast Ethernet Tag Route + // + // Type 1 - Ethernet Auto-discovery Route (Per EVI) + // + // Type 1 - Ethernet Auto-discovery Route (Per ES) + EviVxlan() BgpV4EviVxlan + // SetEviVxlan assigns BgpV4EviVxlan provided by user to BgpV4EvpnEvis. + // BgpV4EviVxlan is configuration for BGP EVPN EVI. Advertises following routes - + // + // # Type 3 - Inclusive Multicast Ethernet Tag Route + // + // Type 1 - Ethernet Auto-discovery Route (Per EVI) + // + // Type 1 - Ethernet Auto-discovery Route (Per ES) + SetEviVxlan(value BgpV4EviVxlan) BgpV4EvpnEvis + // HasEviVxlan checks if EviVxlan has been set in BgpV4EvpnEvis + HasEviVxlan() bool + setNil() } -// description is TBD -// Start returns a uint32 -func (obj *patternFlowGreReserved1Counter) Start() uint32 { - - return *obj.obj.Start - -} +type BgpV4EvpnEvisChoiceEnum string -// description is TBD -// Start returns a uint32 -func (obj *patternFlowGreReserved1Counter) HasStart() bool { - return obj.obj.Start != nil +// Enum of Choice on BgpV4EvpnEvis +var BgpV4EvpnEvisChoice = struct { + EVI_VXLAN BgpV4EvpnEvisChoiceEnum +}{ + EVI_VXLAN: BgpV4EvpnEvisChoiceEnum("evi_vxlan"), } -// description is TBD -// SetStart sets the uint32 value in the PatternFlowGreReserved1Counter object -func (obj *patternFlowGreReserved1Counter) SetStart(value uint32) PatternFlowGreReserved1Counter { - - obj.obj.Start = &value - return obj +func (obj *bgpV4EvpnEvis) Choice() BgpV4EvpnEvisChoiceEnum { + return BgpV4EvpnEvisChoiceEnum(obj.obj.Choice.Enum().String()) } // description is TBD -// Step returns a uint32 -func (obj *patternFlowGreReserved1Counter) Step() uint32 { - - return *obj.obj.Step - +// Choice returns a string +func (obj *bgpV4EvpnEvis) HasChoice() bool { + return obj.obj.Choice != nil } -// description is TBD -// Step returns a uint32 -func (obj *patternFlowGreReserved1Counter) HasStep() bool { - return obj.obj.Step != nil -} +func (obj *bgpV4EvpnEvis) SetChoice(value BgpV4EvpnEvisChoiceEnum) BgpV4EvpnEvis { + intValue, ok := otg.BgpV4EvpnEvis_Choice_Enum_value[string(value)] + if !ok { + obj.validationErrors = append(obj.validationErrors, fmt.Sprintf( + "%s is not a valid choice on BgpV4EvpnEvisChoiceEnum", string(value))) + return obj + } + enumValue := otg.BgpV4EvpnEvis_Choice_Enum(intValue) + obj.obj.Choice = &enumValue + obj.obj.EviVxlan = nil + obj.eviVxlanHolder = nil -// description is TBD -// SetStep sets the uint32 value in the PatternFlowGreReserved1Counter object -func (obj *patternFlowGreReserved1Counter) SetStep(value uint32) PatternFlowGreReserved1Counter { + if value == BgpV4EvpnEvisChoice.EVI_VXLAN { + obj.obj.EviVxlan = NewBgpV4EviVxlan().Msg() + } - obj.obj.Step = &value return obj } -// description is TBD -// Count returns a uint32 -func (obj *patternFlowGreReserved1Counter) Count() uint32 { - - return *obj.obj.Count - +// EVPN VXLAN instance to be configured per Ethernet Segment. +// EviVxlan returns a BgpV4EviVxlan +func (obj *bgpV4EvpnEvis) EviVxlan() BgpV4EviVxlan { + if obj.obj.EviVxlan == nil { + obj.SetChoice(BgpV4EvpnEvisChoice.EVI_VXLAN) + } + if obj.eviVxlanHolder == nil { + obj.eviVxlanHolder = &bgpV4EviVxlan{obj: obj.obj.EviVxlan} + } + return obj.eviVxlanHolder } -// description is TBD -// Count returns a uint32 -func (obj *patternFlowGreReserved1Counter) HasCount() bool { - return obj.obj.Count != nil +// EVPN VXLAN instance to be configured per Ethernet Segment. +// EviVxlan returns a BgpV4EviVxlan +func (obj *bgpV4EvpnEvis) HasEviVxlan() bool { + return obj.obj.EviVxlan != nil } -// description is TBD -// SetCount sets the uint32 value in the PatternFlowGreReserved1Counter object -func (obj *patternFlowGreReserved1Counter) SetCount(value uint32) PatternFlowGreReserved1Counter { +// EVPN VXLAN instance to be configured per Ethernet Segment. +// SetEviVxlan sets the BgpV4EviVxlan value in the BgpV4EvpnEvis object +func (obj *bgpV4EvpnEvis) SetEviVxlan(value BgpV4EviVxlan) BgpV4EvpnEvis { + obj.SetChoice(BgpV4EvpnEvisChoice.EVI_VXLAN) + obj.eviVxlanHolder = nil + obj.obj.EviVxlan = value.Msg() - obj.obj.Count = &value return obj } -func (obj *patternFlowGreReserved1Counter) validateObj(vObj *validation, set_default bool) { +func (obj *bgpV4EvpnEvis) validateObj(vObj *validation, set_default bool) { if set_default { obj.setDefault() } - if obj.obj.Start != nil { - - if *obj.obj.Start > 65535 { - vObj.validationErrors = append( - vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowGreReserved1Counter.Start <= 65535 but Got %d", *obj.obj.Start)) - } - - } - - if obj.obj.Step != nil { - - if *obj.obj.Step > 65535 { - vObj.validationErrors = append( - vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowGreReserved1Counter.Step <= 65535 but Got %d", *obj.obj.Step)) - } - - } - - if obj.obj.Count != nil { - - if *obj.obj.Count > 65535 { - vObj.validationErrors = append( - vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowGreReserved1Counter.Count <= 65535 but Got %d", *obj.obj.Count)) - } + if obj.obj.EviVxlan != nil { + obj.EviVxlan().validateObj(vObj, set_default) } } -func (obj *patternFlowGreReserved1Counter) setDefault() { - if obj.obj.Start == nil { - obj.SetStart(0) - } - if obj.obj.Step == nil { - obj.SetStep(1) - } - if obj.obj.Count == nil { - obj.SetCount(1) +func (obj *bgpV4EvpnEvis) setDefault() { + if obj.obj.Choice == nil { + obj.SetChoice(BgpV4EvpnEvisChoice.EVI_VXLAN) + } } -// ***** PatternFlowGreReserved1MetricTag ***** -type patternFlowGreReserved1MetricTag struct { +// ***** BgpRouteAdvanced ***** +type bgpRouteAdvanced struct { validation - obj *otg.PatternFlowGreReserved1MetricTag + obj *otg.BgpRouteAdvanced } -func NewPatternFlowGreReserved1MetricTag() PatternFlowGreReserved1MetricTag { - obj := patternFlowGreReserved1MetricTag{obj: &otg.PatternFlowGreReserved1MetricTag{}} +func NewBgpRouteAdvanced() BgpRouteAdvanced { + obj := bgpRouteAdvanced{obj: &otg.BgpRouteAdvanced{}} obj.setDefault() return &obj } -func (obj *patternFlowGreReserved1MetricTag) Msg() *otg.PatternFlowGreReserved1MetricTag { +func (obj *bgpRouteAdvanced) Msg() *otg.BgpRouteAdvanced { return obj.obj } -func (obj *patternFlowGreReserved1MetricTag) SetMsg(msg *otg.PatternFlowGreReserved1MetricTag) PatternFlowGreReserved1MetricTag { +func (obj *bgpRouteAdvanced) SetMsg(msg *otg.BgpRouteAdvanced) BgpRouteAdvanced { proto.Merge(obj.obj, msg) return obj } -func (obj *patternFlowGreReserved1MetricTag) ToProto() (*otg.PatternFlowGreReserved1MetricTag, error) { +func (obj *bgpRouteAdvanced) ToProto() (*otg.BgpRouteAdvanced, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -236255,7 +280792,7 @@ func (obj *patternFlowGreReserved1MetricTag) ToProto() (*otg.PatternFlowGreReser return obj.Msg(), nil } -func (obj *patternFlowGreReserved1MetricTag) FromProto(msg *otg.PatternFlowGreReserved1MetricTag) (PatternFlowGreReserved1MetricTag, error) { +func (obj *bgpRouteAdvanced) FromProto(msg *otg.BgpRouteAdvanced) (BgpRouteAdvanced, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -236264,7 +280801,7 @@ func (obj *patternFlowGreReserved1MetricTag) FromProto(msg *otg.PatternFlowGreRe return newObj, nil } -func (obj *patternFlowGreReserved1MetricTag) ToPbText() (string, error) { +func (obj *bgpRouteAdvanced) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -236276,7 +280813,7 @@ func (obj *patternFlowGreReserved1MetricTag) ToPbText() (string, error) { return string(protoMarshal), nil } -func (obj *patternFlowGreReserved1MetricTag) FromPbText(value string) error { +func (obj *bgpRouteAdvanced) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj @@ -236289,7 +280826,7 @@ func (obj *patternFlowGreReserved1MetricTag) FromPbText(value string) error { return retObj } -func (obj *patternFlowGreReserved1MetricTag) ToYaml() (string, error) { +func (obj *bgpRouteAdvanced) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -236310,7 +280847,7 @@ func (obj *patternFlowGreReserved1MetricTag) ToYaml() (string, error) { return string(data), nil } -func (obj *patternFlowGreReserved1MetricTag) FromYaml(value string) error { +func (obj *bgpRouteAdvanced) FromYaml(value string) error { if value == "" { value = "{}" } @@ -236335,7 +280872,7 @@ func (obj *patternFlowGreReserved1MetricTag) FromYaml(value string) error { return nil } -func (obj *patternFlowGreReserved1MetricTag) ToJson() (string, error) { +func (obj *bgpRouteAdvanced) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -236353,7 +280890,7 @@ func (obj *patternFlowGreReserved1MetricTag) ToJson() (string, error) { return string(data), nil } -func (obj *patternFlowGreReserved1MetricTag) FromJson(value string) error { +func (obj *bgpRouteAdvanced) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -236374,19 +280911,19 @@ func (obj *patternFlowGreReserved1MetricTag) FromJson(value string) error { return nil } -func (obj *patternFlowGreReserved1MetricTag) validateToAndFrom() error { +func (obj *bgpRouteAdvanced) validateToAndFrom() error { // emptyVars() obj.validateObj(&obj.validation, true) return obj.validationResult() } -func (obj *patternFlowGreReserved1MetricTag) Validate() error { +func (obj *bgpRouteAdvanced) Validate() error { // emptyVars() obj.validateObj(&obj.validation, false) return obj.validationResult() } -func (obj *patternFlowGreReserved1MetricTag) String() string { +func (obj *bgpRouteAdvanced) String() string { str, err := obj.ToYaml() if err != nil { return err.Error() @@ -236394,12 +280931,12 @@ func (obj *patternFlowGreReserved1MetricTag) String() string { return str } -func (obj *patternFlowGreReserved1MetricTag) Clone() (PatternFlowGreReserved1MetricTag, error) { +func (obj *bgpRouteAdvanced) Clone() (BgpRouteAdvanced, error) { vErr := obj.Validate() if vErr != nil { return nil, vErr } - newObj := NewPatternFlowGreReserved1MetricTag() + newObj := NewBgpRouteAdvanced() data, err := proto.Marshal(obj.Msg()) if err != nil { return nil, err @@ -236411,183 +280948,274 @@ func (obj *patternFlowGreReserved1MetricTag) Clone() (PatternFlowGreReserved1Met return newObj, nil } -// PatternFlowGreReserved1MetricTag is metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. -type PatternFlowGreReserved1MetricTag interface { +// BgpRouteAdvanced is configuration for advanced BGP route range settings. +type BgpRouteAdvanced interface { Validation - // Msg marshals PatternFlowGreReserved1MetricTag to protobuf object *otg.PatternFlowGreReserved1MetricTag + // Msg marshals BgpRouteAdvanced to protobuf object *otg.BgpRouteAdvanced // and doesn't set defaults - Msg() *otg.PatternFlowGreReserved1MetricTag - // SetMsg unmarshals PatternFlowGreReserved1MetricTag from protobuf object *otg.PatternFlowGreReserved1MetricTag + Msg() *otg.BgpRouteAdvanced + // SetMsg unmarshals BgpRouteAdvanced from protobuf object *otg.BgpRouteAdvanced // and doesn't set defaults - SetMsg(*otg.PatternFlowGreReserved1MetricTag) PatternFlowGreReserved1MetricTag - // ToProto marshals PatternFlowGreReserved1MetricTag to protobuf object *otg.PatternFlowGreReserved1MetricTag - ToProto() (*otg.PatternFlowGreReserved1MetricTag, error) - // ToPbText marshals PatternFlowGreReserved1MetricTag to protobuf text + SetMsg(*otg.BgpRouteAdvanced) BgpRouteAdvanced + // ToProto marshals BgpRouteAdvanced to protobuf object *otg.BgpRouteAdvanced + ToProto() (*otg.BgpRouteAdvanced, error) + // ToPbText marshals BgpRouteAdvanced to protobuf text ToPbText() (string, error) - // ToYaml marshals PatternFlowGreReserved1MetricTag to YAML text + // ToYaml marshals BgpRouteAdvanced to YAML text ToYaml() (string, error) - // ToJson marshals PatternFlowGreReserved1MetricTag to JSON text + // ToJson marshals BgpRouteAdvanced to JSON text ToJson() (string, error) - // FromProto unmarshals PatternFlowGreReserved1MetricTag from protobuf object *otg.PatternFlowGreReserved1MetricTag - FromProto(msg *otg.PatternFlowGreReserved1MetricTag) (PatternFlowGreReserved1MetricTag, error) - // FromPbText unmarshals PatternFlowGreReserved1MetricTag from protobuf text + // FromProto unmarshals BgpRouteAdvanced from protobuf object *otg.BgpRouteAdvanced + FromProto(msg *otg.BgpRouteAdvanced) (BgpRouteAdvanced, error) + // FromPbText unmarshals BgpRouteAdvanced from protobuf text FromPbText(value string) error - // FromYaml unmarshals PatternFlowGreReserved1MetricTag from YAML text + // FromYaml unmarshals BgpRouteAdvanced from YAML text FromYaml(value string) error - // FromJson unmarshals PatternFlowGreReserved1MetricTag from JSON text + // FromJson unmarshals BgpRouteAdvanced from JSON text FromJson(value string) error - // Validate validates PatternFlowGreReserved1MetricTag + // Validate validates BgpRouteAdvanced Validate() error // A stringer function String() string // Clones the object - Clone() (PatternFlowGreReserved1MetricTag, error) + Clone() (BgpRouteAdvanced, error) validateToAndFrom() error validateObj(vObj *validation, set_default bool) setDefault() - // Name returns string, set in PatternFlowGreReserved1MetricTag. - Name() string - // SetName assigns string provided by user to PatternFlowGreReserved1MetricTag - SetName(value string) PatternFlowGreReserved1MetricTag - // Offset returns uint32, set in PatternFlowGreReserved1MetricTag. - Offset() uint32 - // SetOffset assigns uint32 provided by user to PatternFlowGreReserved1MetricTag - SetOffset(value uint32) PatternFlowGreReserved1MetricTag - // HasOffset checks if Offset has been set in PatternFlowGreReserved1MetricTag - HasOffset() bool - // Length returns uint32, set in PatternFlowGreReserved1MetricTag. - Length() uint32 - // SetLength assigns uint32 provided by user to PatternFlowGreReserved1MetricTag - SetLength(value uint32) PatternFlowGreReserved1MetricTag - // HasLength checks if Length has been set in PatternFlowGreReserved1MetricTag - HasLength() bool + // IncludeMultiExitDiscriminator returns bool, set in BgpRouteAdvanced. + IncludeMultiExitDiscriminator() bool + // SetIncludeMultiExitDiscriminator assigns bool provided by user to BgpRouteAdvanced + SetIncludeMultiExitDiscriminator(value bool) BgpRouteAdvanced + // HasIncludeMultiExitDiscriminator checks if IncludeMultiExitDiscriminator has been set in BgpRouteAdvanced + HasIncludeMultiExitDiscriminator() bool + // MultiExitDiscriminator returns uint32, set in BgpRouteAdvanced. + MultiExitDiscriminator() uint32 + // SetMultiExitDiscriminator assigns uint32 provided by user to BgpRouteAdvanced + SetMultiExitDiscriminator(value uint32) BgpRouteAdvanced + // HasMultiExitDiscriminator checks if MultiExitDiscriminator has been set in BgpRouteAdvanced + HasMultiExitDiscriminator() bool + // IncludeOrigin returns bool, set in BgpRouteAdvanced. + IncludeOrigin() bool + // SetIncludeOrigin assigns bool provided by user to BgpRouteAdvanced + SetIncludeOrigin(value bool) BgpRouteAdvanced + // HasIncludeOrigin checks if IncludeOrigin has been set in BgpRouteAdvanced + HasIncludeOrigin() bool + // Origin returns BgpRouteAdvancedOriginEnum, set in BgpRouteAdvanced + Origin() BgpRouteAdvancedOriginEnum + // SetOrigin assigns BgpRouteAdvancedOriginEnum provided by user to BgpRouteAdvanced + SetOrigin(value BgpRouteAdvancedOriginEnum) BgpRouteAdvanced + // HasOrigin checks if Origin has been set in BgpRouteAdvanced + HasOrigin() bool + // IncludeLocalPreference returns bool, set in BgpRouteAdvanced. + IncludeLocalPreference() bool + // SetIncludeLocalPreference assigns bool provided by user to BgpRouteAdvanced + SetIncludeLocalPreference(value bool) BgpRouteAdvanced + // HasIncludeLocalPreference checks if IncludeLocalPreference has been set in BgpRouteAdvanced + HasIncludeLocalPreference() bool + // LocalPreference returns uint32, set in BgpRouteAdvanced. + LocalPreference() uint32 + // SetLocalPreference assigns uint32 provided by user to BgpRouteAdvanced + SetLocalPreference(value uint32) BgpRouteAdvanced + // HasLocalPreference checks if LocalPreference has been set in BgpRouteAdvanced + HasLocalPreference() bool } -// Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field -// Name returns a string -func (obj *patternFlowGreReserved1MetricTag) Name() string { +// BGP Multi Exit Discriminator attribute sent to the peer to help in the route selection process. If set to true, the Multi Exit Discriminator attribute will be included in the route advertisement. +// IncludeMultiExitDiscriminator returns a bool +func (obj *bgpRouteAdvanced) IncludeMultiExitDiscriminator() bool { - return *obj.obj.Name + return *obj.obj.IncludeMultiExitDiscriminator } -// Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field -// SetName sets the string value in the PatternFlowGreReserved1MetricTag object -func (obj *patternFlowGreReserved1MetricTag) SetName(value string) PatternFlowGreReserved1MetricTag { +// BGP Multi Exit Discriminator attribute sent to the peer to help in the route selection process. If set to true, the Multi Exit Discriminator attribute will be included in the route advertisement. +// IncludeMultiExitDiscriminator returns a bool +func (obj *bgpRouteAdvanced) HasIncludeMultiExitDiscriminator() bool { + return obj.obj.IncludeMultiExitDiscriminator != nil +} - obj.obj.Name = &value +// BGP Multi Exit Discriminator attribute sent to the peer to help in the route selection process. If set to true, the Multi Exit Discriminator attribute will be included in the route advertisement. +// SetIncludeMultiExitDiscriminator sets the bool value in the BgpRouteAdvanced object +func (obj *bgpRouteAdvanced) SetIncludeMultiExitDiscriminator(value bool) BgpRouteAdvanced { + + obj.obj.IncludeMultiExitDiscriminator = &value return obj } -// Offset in bits relative to start of corresponding header field -// Offset returns a uint32 -func (obj *patternFlowGreReserved1MetricTag) Offset() uint32 { +// The multi exit discriminator (MED) value used for route selection sent to the peer. +// MultiExitDiscriminator returns a uint32 +func (obj *bgpRouteAdvanced) MultiExitDiscriminator() uint32 { - return *obj.obj.Offset + return *obj.obj.MultiExitDiscriminator } -// Offset in bits relative to start of corresponding header field -// Offset returns a uint32 -func (obj *patternFlowGreReserved1MetricTag) HasOffset() bool { - return obj.obj.Offset != nil +// The multi exit discriminator (MED) value used for route selection sent to the peer. +// MultiExitDiscriminator returns a uint32 +func (obj *bgpRouteAdvanced) HasMultiExitDiscriminator() bool { + return obj.obj.MultiExitDiscriminator != nil } -// Offset in bits relative to start of corresponding header field -// SetOffset sets the uint32 value in the PatternFlowGreReserved1MetricTag object -func (obj *patternFlowGreReserved1MetricTag) SetOffset(value uint32) PatternFlowGreReserved1MetricTag { +// The multi exit discriminator (MED) value used for route selection sent to the peer. +// SetMultiExitDiscriminator sets the uint32 value in the BgpRouteAdvanced object +func (obj *bgpRouteAdvanced) SetMultiExitDiscriminator(value uint32) BgpRouteAdvanced { - obj.obj.Offset = &value + obj.obj.MultiExitDiscriminator = &value return obj } -// Number of bits to track for metrics starting from configured offset of corresponding header field -// Length returns a uint32 -func (obj *patternFlowGreReserved1MetricTag) Length() uint32 { +// If set to true, the Origin attribute will be included in the route advertisement. +// IncludeOrigin returns a bool +func (obj *bgpRouteAdvanced) IncludeOrigin() bool { - return *obj.obj.Length + return *obj.obj.IncludeOrigin } -// Number of bits to track for metrics starting from configured offset of corresponding header field -// Length returns a uint32 -func (obj *patternFlowGreReserved1MetricTag) HasLength() bool { - return obj.obj.Length != nil +// If set to true, the Origin attribute will be included in the route advertisement. +// IncludeOrigin returns a bool +func (obj *bgpRouteAdvanced) HasIncludeOrigin() bool { + return obj.obj.IncludeOrigin != nil } -// Number of bits to track for metrics starting from configured offset of corresponding header field -// SetLength sets the uint32 value in the PatternFlowGreReserved1MetricTag object -func (obj *patternFlowGreReserved1MetricTag) SetLength(value uint32) PatternFlowGreReserved1MetricTag { +// If set to true, the Origin attribute will be included in the route advertisement. +// SetIncludeOrigin sets the bool value in the BgpRouteAdvanced object +func (obj *bgpRouteAdvanced) SetIncludeOrigin(value bool) BgpRouteAdvanced { - obj.obj.Length = &value + obj.obj.IncludeOrigin = &value return obj } -func (obj *patternFlowGreReserved1MetricTag) validateObj(vObj *validation, set_default bool) { - if set_default { - obj.setDefault() - } +type BgpRouteAdvancedOriginEnum string - // Name is required - if obj.obj.Name == nil { - vObj.validationErrors = append(vObj.validationErrors, "Name is required field on interface PatternFlowGreReserved1MetricTag") - } +// Enum of Origin on BgpRouteAdvanced +var BgpRouteAdvancedOrigin = struct { + IGP BgpRouteAdvancedOriginEnum + EGP BgpRouteAdvancedOriginEnum + INCOMPLETE BgpRouteAdvancedOriginEnum +}{ + IGP: BgpRouteAdvancedOriginEnum("igp"), + EGP: BgpRouteAdvancedOriginEnum("egp"), + INCOMPLETE: BgpRouteAdvancedOriginEnum("incomplete"), +} - if obj.obj.Offset != nil { +func (obj *bgpRouteAdvanced) Origin() BgpRouteAdvancedOriginEnum { + return BgpRouteAdvancedOriginEnum(obj.obj.Origin.Enum().String()) +} - if *obj.obj.Offset > 15 { - vObj.validationErrors = append( - vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowGreReserved1MetricTag.Offset <= 15 but Got %d", *obj.obj.Offset)) - } +// The origin attribute of a prefix can take three values: the prefix originates from an interior routing protocol 'igp', it originates from 'egp' or the origin is 'incomplete', if the prefix is learned through other means. +// Origin returns a string +func (obj *bgpRouteAdvanced) HasOrigin() bool { + return obj.obj.Origin != nil +} +func (obj *bgpRouteAdvanced) SetOrigin(value BgpRouteAdvancedOriginEnum) BgpRouteAdvanced { + intValue, ok := otg.BgpRouteAdvanced_Origin_Enum_value[string(value)] + if !ok { + obj.validationErrors = append(obj.validationErrors, fmt.Sprintf( + "%s is not a valid choice on BgpRouteAdvancedOriginEnum", string(value))) + return obj } + enumValue := otg.BgpRouteAdvanced_Origin_Enum(intValue) + obj.obj.Origin = &enumValue - if obj.obj.Length != nil { + return obj +} - if *obj.obj.Length < 1 || *obj.obj.Length > 16 { - vObj.validationErrors = append( - vObj.validationErrors, - fmt.Sprintf("1 <= PatternFlowGreReserved1MetricTag.Length <= 16 but Got %d", *obj.obj.Length)) - } +// BGP Local Preference attribute sent to the peer to indicate the degree of preference for externally learned routes. If set to true, the Local Preference attribute will be included in the route advertisement. This should be included only for internal peers. +// IncludeLocalPreference returns a bool +func (obj *bgpRouteAdvanced) IncludeLocalPreference() bool { + + return *obj.obj.IncludeLocalPreference + +} + +// BGP Local Preference attribute sent to the peer to indicate the degree of preference for externally learned routes. If set to true, the Local Preference attribute will be included in the route advertisement. This should be included only for internal peers. +// IncludeLocalPreference returns a bool +func (obj *bgpRouteAdvanced) HasIncludeLocalPreference() bool { + return obj.obj.IncludeLocalPreference != nil +} + +// BGP Local Preference attribute sent to the peer to indicate the degree of preference for externally learned routes. If set to true, the Local Preference attribute will be included in the route advertisement. This should be included only for internal peers. +// SetIncludeLocalPreference sets the bool value in the BgpRouteAdvanced object +func (obj *bgpRouteAdvanced) SetIncludeLocalPreference(value bool) BgpRouteAdvanced { + + obj.obj.IncludeLocalPreference = &value + return obj +} + +// Value to be set in Local Preference attribute if include_local_preference is set to true. It is used for the selection of the path for the traffic leaving the AS. The route with the highest local preference value is preferred. +// LocalPreference returns a uint32 +func (obj *bgpRouteAdvanced) LocalPreference() uint32 { + + return *obj.obj.LocalPreference + +} + +// Value to be set in Local Preference attribute if include_local_preference is set to true. It is used for the selection of the path for the traffic leaving the AS. The route with the highest local preference value is preferred. +// LocalPreference returns a uint32 +func (obj *bgpRouteAdvanced) HasLocalPreference() bool { + return obj.obj.LocalPreference != nil +} + +// Value to be set in Local Preference attribute if include_local_preference is set to true. It is used for the selection of the path for the traffic leaving the AS. The route with the highest local preference value is preferred. +// SetLocalPreference sets the uint32 value in the BgpRouteAdvanced object +func (obj *bgpRouteAdvanced) SetLocalPreference(value uint32) BgpRouteAdvanced { + + obj.obj.LocalPreference = &value + return obj +} +func (obj *bgpRouteAdvanced) validateObj(vObj *validation, set_default bool) { + if set_default { + obj.setDefault() } } -func (obj *patternFlowGreReserved1MetricTag) setDefault() { - if obj.obj.Offset == nil { - obj.SetOffset(0) +func (obj *bgpRouteAdvanced) setDefault() { + if obj.obj.IncludeMultiExitDiscriminator == nil { + obj.SetIncludeMultiExitDiscriminator(true) } - if obj.obj.Length == nil { - obj.SetLength(16) + if obj.obj.IncludeOrigin == nil { + obj.SetIncludeOrigin(true) + } + if obj.obj.Origin == nil { + obj.SetOrigin(BgpRouteAdvancedOrigin.IGP) + + } + if obj.obj.IncludeLocalPreference == nil { + obj.SetIncludeLocalPreference(true) + } + if obj.obj.LocalPreference == nil { + obj.SetLocalPreference(100) } } -// ***** PatternFlowGtpv1VersionCounter ***** -type patternFlowGtpv1VersionCounter struct { +// ***** BgpCommunity ***** +type bgpCommunity struct { validation - obj *otg.PatternFlowGtpv1VersionCounter + obj *otg.BgpCommunity } -func NewPatternFlowGtpv1VersionCounter() PatternFlowGtpv1VersionCounter { - obj := patternFlowGtpv1VersionCounter{obj: &otg.PatternFlowGtpv1VersionCounter{}} +func NewBgpCommunity() BgpCommunity { + obj := bgpCommunity{obj: &otg.BgpCommunity{}} obj.setDefault() return &obj } -func (obj *patternFlowGtpv1VersionCounter) Msg() *otg.PatternFlowGtpv1VersionCounter { +func (obj *bgpCommunity) Msg() *otg.BgpCommunity { return obj.obj } -func (obj *patternFlowGtpv1VersionCounter) SetMsg(msg *otg.PatternFlowGtpv1VersionCounter) PatternFlowGtpv1VersionCounter { +func (obj *bgpCommunity) SetMsg(msg *otg.BgpCommunity) BgpCommunity { proto.Merge(obj.obj, msg) return obj } -func (obj *patternFlowGtpv1VersionCounter) ToProto() (*otg.PatternFlowGtpv1VersionCounter, error) { +func (obj *bgpCommunity) ToProto() (*otg.BgpCommunity, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -236595,7 +281223,7 @@ func (obj *patternFlowGtpv1VersionCounter) ToProto() (*otg.PatternFlowGtpv1Versi return obj.Msg(), nil } -func (obj *patternFlowGtpv1VersionCounter) FromProto(msg *otg.PatternFlowGtpv1VersionCounter) (PatternFlowGtpv1VersionCounter, error) { +func (obj *bgpCommunity) FromProto(msg *otg.BgpCommunity) (BgpCommunity, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -236604,7 +281232,7 @@ func (obj *patternFlowGtpv1VersionCounter) FromProto(msg *otg.PatternFlowGtpv1Ve return newObj, nil } -func (obj *patternFlowGtpv1VersionCounter) ToPbText() (string, error) { +func (obj *bgpCommunity) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -236616,7 +281244,7 @@ func (obj *patternFlowGtpv1VersionCounter) ToPbText() (string, error) { return string(protoMarshal), nil } -func (obj *patternFlowGtpv1VersionCounter) FromPbText(value string) error { +func (obj *bgpCommunity) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj @@ -236629,7 +281257,7 @@ func (obj *patternFlowGtpv1VersionCounter) FromPbText(value string) error { return retObj } -func (obj *patternFlowGtpv1VersionCounter) ToYaml() (string, error) { +func (obj *bgpCommunity) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -236650,7 +281278,7 @@ func (obj *patternFlowGtpv1VersionCounter) ToYaml() (string, error) { return string(data), nil } -func (obj *patternFlowGtpv1VersionCounter) FromYaml(value string) error { +func (obj *bgpCommunity) FromYaml(value string) error { if value == "" { value = "{}" } @@ -236675,7 +281303,7 @@ func (obj *patternFlowGtpv1VersionCounter) FromYaml(value string) error { return nil } -func (obj *patternFlowGtpv1VersionCounter) ToJson() (string, error) { +func (obj *bgpCommunity) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -236693,7 +281321,7 @@ func (obj *patternFlowGtpv1VersionCounter) ToJson() (string, error) { return string(data), nil } -func (obj *patternFlowGtpv1VersionCounter) FromJson(value string) error { +func (obj *bgpCommunity) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -236714,19 +281342,19 @@ func (obj *patternFlowGtpv1VersionCounter) FromJson(value string) error { return nil } -func (obj *patternFlowGtpv1VersionCounter) validateToAndFrom() error { +func (obj *bgpCommunity) validateToAndFrom() error { // emptyVars() obj.validateObj(&obj.validation, true) return obj.validationResult() } -func (obj *patternFlowGtpv1VersionCounter) Validate() error { +func (obj *bgpCommunity) Validate() error { // emptyVars() obj.validateObj(&obj.validation, false) return obj.validationResult() } -func (obj *patternFlowGtpv1VersionCounter) String() string { +func (obj *bgpCommunity) String() string { str, err := obj.ToYaml() if err != nil { return err.Error() @@ -236734,12 +281362,12 @@ func (obj *patternFlowGtpv1VersionCounter) String() string { return str } -func (obj *patternFlowGtpv1VersionCounter) Clone() (PatternFlowGtpv1VersionCounter, error) { +func (obj *bgpCommunity) Clone() (BgpCommunity, error) { vErr := obj.Validate() if vErr != nil { return nil, vErr } - newObj := NewPatternFlowGtpv1VersionCounter() + newObj := NewBgpCommunity() data, err := proto.Marshal(obj.Msg()) if err != nil { return nil, err @@ -236751,199 +281379,206 @@ func (obj *patternFlowGtpv1VersionCounter) Clone() (PatternFlowGtpv1VersionCount return newObj, nil } -// PatternFlowGtpv1VersionCounter is integer counter pattern -type PatternFlowGtpv1VersionCounter interface { +// BgpCommunity is bGP communities provide additional capability for tagging routes and for modifying BGP routing policy on upstream and downstream routers. BGP community is a 32-bit number which is broken into 16-bit AS number and a 16-bit custom value. +type BgpCommunity interface { Validation - // Msg marshals PatternFlowGtpv1VersionCounter to protobuf object *otg.PatternFlowGtpv1VersionCounter + // Msg marshals BgpCommunity to protobuf object *otg.BgpCommunity // and doesn't set defaults - Msg() *otg.PatternFlowGtpv1VersionCounter - // SetMsg unmarshals PatternFlowGtpv1VersionCounter from protobuf object *otg.PatternFlowGtpv1VersionCounter + Msg() *otg.BgpCommunity + // SetMsg unmarshals BgpCommunity from protobuf object *otg.BgpCommunity // and doesn't set defaults - SetMsg(*otg.PatternFlowGtpv1VersionCounter) PatternFlowGtpv1VersionCounter - // ToProto marshals PatternFlowGtpv1VersionCounter to protobuf object *otg.PatternFlowGtpv1VersionCounter - ToProto() (*otg.PatternFlowGtpv1VersionCounter, error) - // ToPbText marshals PatternFlowGtpv1VersionCounter to protobuf text + SetMsg(*otg.BgpCommunity) BgpCommunity + // ToProto marshals BgpCommunity to protobuf object *otg.BgpCommunity + ToProto() (*otg.BgpCommunity, error) + // ToPbText marshals BgpCommunity to protobuf text ToPbText() (string, error) - // ToYaml marshals PatternFlowGtpv1VersionCounter to YAML text + // ToYaml marshals BgpCommunity to YAML text ToYaml() (string, error) - // ToJson marshals PatternFlowGtpv1VersionCounter to JSON text + // ToJson marshals BgpCommunity to JSON text ToJson() (string, error) - // FromProto unmarshals PatternFlowGtpv1VersionCounter from protobuf object *otg.PatternFlowGtpv1VersionCounter - FromProto(msg *otg.PatternFlowGtpv1VersionCounter) (PatternFlowGtpv1VersionCounter, error) - // FromPbText unmarshals PatternFlowGtpv1VersionCounter from protobuf text + // FromProto unmarshals BgpCommunity from protobuf object *otg.BgpCommunity + FromProto(msg *otg.BgpCommunity) (BgpCommunity, error) + // FromPbText unmarshals BgpCommunity from protobuf text FromPbText(value string) error - // FromYaml unmarshals PatternFlowGtpv1VersionCounter from YAML text + // FromYaml unmarshals BgpCommunity from YAML text FromYaml(value string) error - // FromJson unmarshals PatternFlowGtpv1VersionCounter from JSON text + // FromJson unmarshals BgpCommunity from JSON text FromJson(value string) error - // Validate validates PatternFlowGtpv1VersionCounter + // Validate validates BgpCommunity Validate() error // A stringer function String() string // Clones the object - Clone() (PatternFlowGtpv1VersionCounter, error) + Clone() (BgpCommunity, error) validateToAndFrom() error validateObj(vObj *validation, set_default bool) setDefault() - // Start returns uint32, set in PatternFlowGtpv1VersionCounter. - Start() uint32 - // SetStart assigns uint32 provided by user to PatternFlowGtpv1VersionCounter - SetStart(value uint32) PatternFlowGtpv1VersionCounter - // HasStart checks if Start has been set in PatternFlowGtpv1VersionCounter - HasStart() bool - // Step returns uint32, set in PatternFlowGtpv1VersionCounter. - Step() uint32 - // SetStep assigns uint32 provided by user to PatternFlowGtpv1VersionCounter - SetStep(value uint32) PatternFlowGtpv1VersionCounter - // HasStep checks if Step has been set in PatternFlowGtpv1VersionCounter - HasStep() bool - // Count returns uint32, set in PatternFlowGtpv1VersionCounter. - Count() uint32 - // SetCount assigns uint32 provided by user to PatternFlowGtpv1VersionCounter - SetCount(value uint32) PatternFlowGtpv1VersionCounter - // HasCount checks if Count has been set in PatternFlowGtpv1VersionCounter - HasCount() bool + // Type returns BgpCommunityTypeEnum, set in BgpCommunity + Type() BgpCommunityTypeEnum + // SetType assigns BgpCommunityTypeEnum provided by user to BgpCommunity + SetType(value BgpCommunityTypeEnum) BgpCommunity + // HasType checks if Type has been set in BgpCommunity + HasType() bool + // AsNumber returns uint32, set in BgpCommunity. + AsNumber() uint32 + // SetAsNumber assigns uint32 provided by user to BgpCommunity + SetAsNumber(value uint32) BgpCommunity + // HasAsNumber checks if AsNumber has been set in BgpCommunity + HasAsNumber() bool + // AsCustom returns uint32, set in BgpCommunity. + AsCustom() uint32 + // SetAsCustom assigns uint32 provided by user to BgpCommunity + SetAsCustom(value uint32) BgpCommunity + // HasAsCustom checks if AsCustom has been set in BgpCommunity + HasAsCustom() bool } -// description is TBD -// Start returns a uint32 -func (obj *patternFlowGtpv1VersionCounter) Start() uint32 { +type BgpCommunityTypeEnum string - return *obj.obj.Start +// Enum of Type on BgpCommunity +var BgpCommunityType = struct { + MANUAL_AS_NUMBER BgpCommunityTypeEnum + NO_EXPORT BgpCommunityTypeEnum + NO_ADVERTISED BgpCommunityTypeEnum + NO_EXPORT_SUBCONFED BgpCommunityTypeEnum + LLGR_STALE BgpCommunityTypeEnum + NO_LLGR BgpCommunityTypeEnum +}{ + MANUAL_AS_NUMBER: BgpCommunityTypeEnum("manual_as_number"), + NO_EXPORT: BgpCommunityTypeEnum("no_export"), + NO_ADVERTISED: BgpCommunityTypeEnum("no_advertised"), + NO_EXPORT_SUBCONFED: BgpCommunityTypeEnum("no_export_subconfed"), + LLGR_STALE: BgpCommunityTypeEnum("llgr_stale"), + NO_LLGR: BgpCommunityTypeEnum("no_llgr"), +} +func (obj *bgpCommunity) Type() BgpCommunityTypeEnum { + return BgpCommunityTypeEnum(obj.obj.Type.Enum().String()) } -// description is TBD -// Start returns a uint32 -func (obj *patternFlowGtpv1VersionCounter) HasStart() bool { - return obj.obj.Start != nil +// The type of community AS number. +// Type returns a string +func (obj *bgpCommunity) HasType() bool { + return obj.obj.Type != nil } -// description is TBD -// SetStart sets the uint32 value in the PatternFlowGtpv1VersionCounter object -func (obj *patternFlowGtpv1VersionCounter) SetStart(value uint32) PatternFlowGtpv1VersionCounter { +func (obj *bgpCommunity) SetType(value BgpCommunityTypeEnum) BgpCommunity { + intValue, ok := otg.BgpCommunity_Type_Enum_value[string(value)] + if !ok { + obj.validationErrors = append(obj.validationErrors, fmt.Sprintf( + "%s is not a valid choice on BgpCommunityTypeEnum", string(value))) + return obj + } + enumValue := otg.BgpCommunity_Type_Enum(intValue) + obj.obj.Type = &enumValue - obj.obj.Start = &value return obj } -// description is TBD -// Step returns a uint32 -func (obj *patternFlowGtpv1VersionCounter) Step() uint32 { +// First two octets of 32 bit community AS number. +// AsNumber returns a uint32 +func (obj *bgpCommunity) AsNumber() uint32 { - return *obj.obj.Step + return *obj.obj.AsNumber } -// description is TBD -// Step returns a uint32 -func (obj *patternFlowGtpv1VersionCounter) HasStep() bool { - return obj.obj.Step != nil +// First two octets of 32 bit community AS number. +// AsNumber returns a uint32 +func (obj *bgpCommunity) HasAsNumber() bool { + return obj.obj.AsNumber != nil } -// description is TBD -// SetStep sets the uint32 value in the PatternFlowGtpv1VersionCounter object -func (obj *patternFlowGtpv1VersionCounter) SetStep(value uint32) PatternFlowGtpv1VersionCounter { +// First two octets of 32 bit community AS number. +// SetAsNumber sets the uint32 value in the BgpCommunity object +func (obj *bgpCommunity) SetAsNumber(value uint32) BgpCommunity { - obj.obj.Step = &value + obj.obj.AsNumber = &value return obj } -// description is TBD -// Count returns a uint32 -func (obj *patternFlowGtpv1VersionCounter) Count() uint32 { +// Last two octets of the community value. +// AsCustom returns a uint32 +func (obj *bgpCommunity) AsCustom() uint32 { - return *obj.obj.Count + return *obj.obj.AsCustom } -// description is TBD -// Count returns a uint32 -func (obj *patternFlowGtpv1VersionCounter) HasCount() bool { - return obj.obj.Count != nil +// Last two octets of the community value. +// AsCustom returns a uint32 +func (obj *bgpCommunity) HasAsCustom() bool { + return obj.obj.AsCustom != nil } -// description is TBD -// SetCount sets the uint32 value in the PatternFlowGtpv1VersionCounter object -func (obj *patternFlowGtpv1VersionCounter) SetCount(value uint32) PatternFlowGtpv1VersionCounter { +// Last two octets of the community value. +// SetAsCustom sets the uint32 value in the BgpCommunity object +func (obj *bgpCommunity) SetAsCustom(value uint32) BgpCommunity { - obj.obj.Count = &value + obj.obj.AsCustom = &value return obj } -func (obj *patternFlowGtpv1VersionCounter) validateObj(vObj *validation, set_default bool) { +func (obj *bgpCommunity) validateObj(vObj *validation, set_default bool) { if set_default { obj.setDefault() } - if obj.obj.Start != nil { - - if *obj.obj.Start > 7 { - vObj.validationErrors = append( - vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowGtpv1VersionCounter.Start <= 7 but Got %d", *obj.obj.Start)) - } - - } - - if obj.obj.Step != nil { + if obj.obj.AsNumber != nil { - if *obj.obj.Step > 7 { + if *obj.obj.AsNumber > 65535 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowGtpv1VersionCounter.Step <= 7 but Got %d", *obj.obj.Step)) + fmt.Sprintf("0 <= BgpCommunity.AsNumber <= 65535 but Got %d", *obj.obj.AsNumber)) } } - if obj.obj.Count != nil { + if obj.obj.AsCustom != nil { - if *obj.obj.Count > 7 { + if *obj.obj.AsCustom > 65535 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowGtpv1VersionCounter.Count <= 7 but Got %d", *obj.obj.Count)) + fmt.Sprintf("0 <= BgpCommunity.AsCustom <= 65535 but Got %d", *obj.obj.AsCustom)) } } } -func (obj *patternFlowGtpv1VersionCounter) setDefault() { - if obj.obj.Start == nil { - obj.SetStart(1) - } - if obj.obj.Step == nil { - obj.SetStep(1) +func (obj *bgpCommunity) setDefault() { + if obj.obj.AsNumber == nil { + obj.SetAsNumber(0) } - if obj.obj.Count == nil { - obj.SetCount(1) + if obj.obj.AsCustom == nil { + obj.SetAsCustom(0) } } -// ***** PatternFlowGtpv1VersionMetricTag ***** -type patternFlowGtpv1VersionMetricTag struct { +// ***** BgpExtCommunity ***** +type bgpExtCommunity struct { validation - obj *otg.PatternFlowGtpv1VersionMetricTag + obj *otg.BgpExtCommunity } -func NewPatternFlowGtpv1VersionMetricTag() PatternFlowGtpv1VersionMetricTag { - obj := patternFlowGtpv1VersionMetricTag{obj: &otg.PatternFlowGtpv1VersionMetricTag{}} +func NewBgpExtCommunity() BgpExtCommunity { + obj := bgpExtCommunity{obj: &otg.BgpExtCommunity{}} obj.setDefault() return &obj } -func (obj *patternFlowGtpv1VersionMetricTag) Msg() *otg.PatternFlowGtpv1VersionMetricTag { +func (obj *bgpExtCommunity) Msg() *otg.BgpExtCommunity { return obj.obj } -func (obj *patternFlowGtpv1VersionMetricTag) SetMsg(msg *otg.PatternFlowGtpv1VersionMetricTag) PatternFlowGtpv1VersionMetricTag { +func (obj *bgpExtCommunity) SetMsg(msg *otg.BgpExtCommunity) BgpExtCommunity { proto.Merge(obj.obj, msg) return obj } -func (obj *patternFlowGtpv1VersionMetricTag) ToProto() (*otg.PatternFlowGtpv1VersionMetricTag, error) { +func (obj *bgpExtCommunity) ToProto() (*otg.BgpExtCommunity, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -236951,7 +281586,7 @@ func (obj *patternFlowGtpv1VersionMetricTag) ToProto() (*otg.PatternFlowGtpv1Ver return obj.Msg(), nil } -func (obj *patternFlowGtpv1VersionMetricTag) FromProto(msg *otg.PatternFlowGtpv1VersionMetricTag) (PatternFlowGtpv1VersionMetricTag, error) { +func (obj *bgpExtCommunity) FromProto(msg *otg.BgpExtCommunity) (BgpExtCommunity, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -236960,7 +281595,7 @@ func (obj *patternFlowGtpv1VersionMetricTag) FromProto(msg *otg.PatternFlowGtpv1 return newObj, nil } -func (obj *patternFlowGtpv1VersionMetricTag) ToPbText() (string, error) { +func (obj *bgpExtCommunity) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -236972,7 +281607,7 @@ func (obj *patternFlowGtpv1VersionMetricTag) ToPbText() (string, error) { return string(protoMarshal), nil } -func (obj *patternFlowGtpv1VersionMetricTag) FromPbText(value string) error { +func (obj *bgpExtCommunity) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj @@ -236985,7 +281620,7 @@ func (obj *patternFlowGtpv1VersionMetricTag) FromPbText(value string) error { return retObj } -func (obj *patternFlowGtpv1VersionMetricTag) ToYaml() (string, error) { +func (obj *bgpExtCommunity) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -237006,7 +281641,7 @@ func (obj *patternFlowGtpv1VersionMetricTag) ToYaml() (string, error) { return string(data), nil } -func (obj *patternFlowGtpv1VersionMetricTag) FromYaml(value string) error { +func (obj *bgpExtCommunity) FromYaml(value string) error { if value == "" { value = "{}" } @@ -237031,7 +281666,7 @@ func (obj *patternFlowGtpv1VersionMetricTag) FromYaml(value string) error { return nil } -func (obj *patternFlowGtpv1VersionMetricTag) ToJson() (string, error) { +func (obj *bgpExtCommunity) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -237049,7 +281684,7 @@ func (obj *patternFlowGtpv1VersionMetricTag) ToJson() (string, error) { return string(data), nil } -func (obj *patternFlowGtpv1VersionMetricTag) FromJson(value string) error { +func (obj *bgpExtCommunity) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -237070,19 +281705,19 @@ func (obj *patternFlowGtpv1VersionMetricTag) FromJson(value string) error { return nil } -func (obj *patternFlowGtpv1VersionMetricTag) validateToAndFrom() error { +func (obj *bgpExtCommunity) validateToAndFrom() error { // emptyVars() obj.validateObj(&obj.validation, true) return obj.validationResult() } -func (obj *patternFlowGtpv1VersionMetricTag) Validate() error { +func (obj *bgpExtCommunity) Validate() error { // emptyVars() obj.validateObj(&obj.validation, false) return obj.validationResult() } -func (obj *patternFlowGtpv1VersionMetricTag) String() string { +func (obj *bgpExtCommunity) String() string { str, err := obj.ToYaml() if err != nil { return err.Error() @@ -237090,12 +281725,12 @@ func (obj *patternFlowGtpv1VersionMetricTag) String() string { return str } -func (obj *patternFlowGtpv1VersionMetricTag) Clone() (PatternFlowGtpv1VersionMetricTag, error) { +func (obj *bgpExtCommunity) Clone() (BgpExtCommunity, error) { vErr := obj.Validate() if vErr != nil { return nil, vErr } - newObj := NewPatternFlowGtpv1VersionMetricTag() + newObj := NewBgpExtCommunity() data, err := proto.Marshal(obj.Msg()) if err != nil { return nil, err @@ -237107,183 +281742,222 @@ func (obj *patternFlowGtpv1VersionMetricTag) Clone() (PatternFlowGtpv1VersionMet return newObj, nil } -// PatternFlowGtpv1VersionMetricTag is metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. -type PatternFlowGtpv1VersionMetricTag interface { +// BgpExtCommunity is the Extended Communities Attribute is a transitive optional BGP attribute, with the Type Code 16. Community and Extended Communities attributes are utilized to trigger routing decisions, such as acceptance, rejection, preference, or redistribution. An extended community is an 8-Bytes value. It is divided into two main parts. The first 2 Bytes of the community encode a type and sub-type fields and the last 6 Bytes carry a unique set of data in a format defined by the type and sub-type field. Extended communities provide a larger range for grouping or categorizing communities. +type BgpExtCommunity interface { Validation - // Msg marshals PatternFlowGtpv1VersionMetricTag to protobuf object *otg.PatternFlowGtpv1VersionMetricTag + // Msg marshals BgpExtCommunity to protobuf object *otg.BgpExtCommunity // and doesn't set defaults - Msg() *otg.PatternFlowGtpv1VersionMetricTag - // SetMsg unmarshals PatternFlowGtpv1VersionMetricTag from protobuf object *otg.PatternFlowGtpv1VersionMetricTag + Msg() *otg.BgpExtCommunity + // SetMsg unmarshals BgpExtCommunity from protobuf object *otg.BgpExtCommunity // and doesn't set defaults - SetMsg(*otg.PatternFlowGtpv1VersionMetricTag) PatternFlowGtpv1VersionMetricTag - // ToProto marshals PatternFlowGtpv1VersionMetricTag to protobuf object *otg.PatternFlowGtpv1VersionMetricTag - ToProto() (*otg.PatternFlowGtpv1VersionMetricTag, error) - // ToPbText marshals PatternFlowGtpv1VersionMetricTag to protobuf text + SetMsg(*otg.BgpExtCommunity) BgpExtCommunity + // ToProto marshals BgpExtCommunity to protobuf object *otg.BgpExtCommunity + ToProto() (*otg.BgpExtCommunity, error) + // ToPbText marshals BgpExtCommunity to protobuf text ToPbText() (string, error) - // ToYaml marshals PatternFlowGtpv1VersionMetricTag to YAML text + // ToYaml marshals BgpExtCommunity to YAML text ToYaml() (string, error) - // ToJson marshals PatternFlowGtpv1VersionMetricTag to JSON text + // ToJson marshals BgpExtCommunity to JSON text ToJson() (string, error) - // FromProto unmarshals PatternFlowGtpv1VersionMetricTag from protobuf object *otg.PatternFlowGtpv1VersionMetricTag - FromProto(msg *otg.PatternFlowGtpv1VersionMetricTag) (PatternFlowGtpv1VersionMetricTag, error) - // FromPbText unmarshals PatternFlowGtpv1VersionMetricTag from protobuf text + // FromProto unmarshals BgpExtCommunity from protobuf object *otg.BgpExtCommunity + FromProto(msg *otg.BgpExtCommunity) (BgpExtCommunity, error) + // FromPbText unmarshals BgpExtCommunity from protobuf text FromPbText(value string) error - // FromYaml unmarshals PatternFlowGtpv1VersionMetricTag from YAML text + // FromYaml unmarshals BgpExtCommunity from YAML text FromYaml(value string) error - // FromJson unmarshals PatternFlowGtpv1VersionMetricTag from JSON text + // FromJson unmarshals BgpExtCommunity from JSON text FromJson(value string) error - // Validate validates PatternFlowGtpv1VersionMetricTag + // Validate validates BgpExtCommunity Validate() error // A stringer function String() string // Clones the object - Clone() (PatternFlowGtpv1VersionMetricTag, error) + Clone() (BgpExtCommunity, error) validateToAndFrom() error validateObj(vObj *validation, set_default bool) setDefault() - // Name returns string, set in PatternFlowGtpv1VersionMetricTag. - Name() string - // SetName assigns string provided by user to PatternFlowGtpv1VersionMetricTag - SetName(value string) PatternFlowGtpv1VersionMetricTag - // Offset returns uint32, set in PatternFlowGtpv1VersionMetricTag. - Offset() uint32 - // SetOffset assigns uint32 provided by user to PatternFlowGtpv1VersionMetricTag - SetOffset(value uint32) PatternFlowGtpv1VersionMetricTag - // HasOffset checks if Offset has been set in PatternFlowGtpv1VersionMetricTag - HasOffset() bool - // Length returns uint32, set in PatternFlowGtpv1VersionMetricTag. - Length() uint32 - // SetLength assigns uint32 provided by user to PatternFlowGtpv1VersionMetricTag - SetLength(value uint32) PatternFlowGtpv1VersionMetricTag - // HasLength checks if Length has been set in PatternFlowGtpv1VersionMetricTag - HasLength() bool + // Type returns BgpExtCommunityTypeEnum, set in BgpExtCommunity + Type() BgpExtCommunityTypeEnum + // SetType assigns BgpExtCommunityTypeEnum provided by user to BgpExtCommunity + SetType(value BgpExtCommunityTypeEnum) BgpExtCommunity + // HasType checks if Type has been set in BgpExtCommunity + HasType() bool + // Subtype returns BgpExtCommunitySubtypeEnum, set in BgpExtCommunity + Subtype() BgpExtCommunitySubtypeEnum + // SetSubtype assigns BgpExtCommunitySubtypeEnum provided by user to BgpExtCommunity + SetSubtype(value BgpExtCommunitySubtypeEnum) BgpExtCommunity + // HasSubtype checks if Subtype has been set in BgpExtCommunity + HasSubtype() bool + // Value returns string, set in BgpExtCommunity. + Value() string + // SetValue assigns string provided by user to BgpExtCommunity + SetValue(value string) BgpExtCommunity + // HasValue checks if Value has been set in BgpExtCommunity + HasValue() bool } -// Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field -// Name returns a string -func (obj *patternFlowGtpv1VersionMetricTag) Name() string { +type BgpExtCommunityTypeEnum string - return *obj.obj.Name +// Enum of Type on BgpExtCommunity +var BgpExtCommunityType = struct { + ADMINISTRATOR_AS_2OCTET BgpExtCommunityTypeEnum + ADMINISTRATOR_IPV4_ADDRESS BgpExtCommunityTypeEnum + ADMINISTRATOR_AS_4OCTET BgpExtCommunityTypeEnum + OPAQUE BgpExtCommunityTypeEnum + EVPN BgpExtCommunityTypeEnum + ADMINISTRATOR_AS_2OCTET_LINK_BANDWIDTH BgpExtCommunityTypeEnum +}{ + ADMINISTRATOR_AS_2OCTET: BgpExtCommunityTypeEnum("administrator_as_2octet"), + ADMINISTRATOR_IPV4_ADDRESS: BgpExtCommunityTypeEnum("administrator_ipv4_address"), + ADMINISTRATOR_AS_4OCTET: BgpExtCommunityTypeEnum("administrator_as_4octet"), + OPAQUE: BgpExtCommunityTypeEnum("opaque"), + EVPN: BgpExtCommunityTypeEnum("evpn"), + ADMINISTRATOR_AS_2OCTET_LINK_BANDWIDTH: BgpExtCommunityTypeEnum("administrator_as_2octet_link_bandwidth"), +} +func (obj *bgpExtCommunity) Type() BgpExtCommunityTypeEnum { + return BgpExtCommunityTypeEnum(obj.obj.Type.Enum().String()) } -// Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field -// SetName sets the string value in the PatternFlowGtpv1VersionMetricTag object -func (obj *patternFlowGtpv1VersionMetricTag) SetName(value string) PatternFlowGtpv1VersionMetricTag { +// Extended Community Type field of 1 Byte. +// - administrator_as_2octet: Two-Octet AS Specific Extended Community (RFC 4360). +// - administrator_ipv4_address: IPv4 Address Specific Extended Community (RFC 4360). +// - administrator_as_4octet: 4-Octet AS Specific Extended Community (RFC 5668). +// - opaque: Opaque Extended Community (RFC 7432). +// - evpn: EVPN Extended Community (RFC 7153). +// - administrator_as_2octet_link_bandwidth : Link Bandwidth Extended Community (RFC 7153). +// Type returns a string +func (obj *bgpExtCommunity) HasType() bool { + return obj.obj.Type != nil +} + +func (obj *bgpExtCommunity) SetType(value BgpExtCommunityTypeEnum) BgpExtCommunity { + intValue, ok := otg.BgpExtCommunity_Type_Enum_value[string(value)] + if !ok { + obj.validationErrors = append(obj.validationErrors, fmt.Sprintf( + "%s is not a valid choice on BgpExtCommunityTypeEnum", string(value))) + return obj + } + enumValue := otg.BgpExtCommunity_Type_Enum(intValue) + obj.obj.Type = &enumValue - obj.obj.Name = &value return obj } -// Offset in bits relative to start of corresponding header field -// Offset returns a uint32 -func (obj *patternFlowGtpv1VersionMetricTag) Offset() uint32 { +type BgpExtCommunitySubtypeEnum string - return *obj.obj.Offset +// Enum of Subtype on BgpExtCommunity +var BgpExtCommunitySubtype = struct { + ROUTE_TARGET BgpExtCommunitySubtypeEnum + ORIGIN BgpExtCommunitySubtypeEnum + EXTENDED_BANDWIDTH BgpExtCommunitySubtypeEnum + COLOR BgpExtCommunitySubtypeEnum + ENCAPSULATION BgpExtCommunitySubtypeEnum + MAC_ADDRESS BgpExtCommunitySubtypeEnum +}{ + ROUTE_TARGET: BgpExtCommunitySubtypeEnum("route_target"), + ORIGIN: BgpExtCommunitySubtypeEnum("origin"), + EXTENDED_BANDWIDTH: BgpExtCommunitySubtypeEnum("extended_bandwidth"), + COLOR: BgpExtCommunitySubtypeEnum("color"), + ENCAPSULATION: BgpExtCommunitySubtypeEnum("encapsulation"), + MAC_ADDRESS: BgpExtCommunitySubtypeEnum("mac_address"), +} +func (obj *bgpExtCommunity) Subtype() BgpExtCommunitySubtypeEnum { + return BgpExtCommunitySubtypeEnum(obj.obj.Subtype.Enum().String()) } -// Offset in bits relative to start of corresponding header field -// Offset returns a uint32 -func (obj *patternFlowGtpv1VersionMetricTag) HasOffset() bool { - return obj.obj.Offset != nil +// Extended Community Sub Type field of 1 Byte. +// - route_target: Route Target. +// - origin: Origin. +// - extended_bandwidth: Specifies the link bandwidth. +// - color: Specifies the color value. +// - encapsulation: Specifies the Encapsulation Extended Community. +// - mac_address: Specifies the Extended community MAC address. +// Subtype returns a string +func (obj *bgpExtCommunity) HasSubtype() bool { + return obj.obj.Subtype != nil } -// Offset in bits relative to start of corresponding header field -// SetOffset sets the uint32 value in the PatternFlowGtpv1VersionMetricTag object -func (obj *patternFlowGtpv1VersionMetricTag) SetOffset(value uint32) PatternFlowGtpv1VersionMetricTag { +func (obj *bgpExtCommunity) SetSubtype(value BgpExtCommunitySubtypeEnum) BgpExtCommunity { + intValue, ok := otg.BgpExtCommunity_Subtype_Enum_value[string(value)] + if !ok { + obj.validationErrors = append(obj.validationErrors, fmt.Sprintf( + "%s is not a valid choice on BgpExtCommunitySubtypeEnum", string(value))) + return obj + } + enumValue := otg.BgpExtCommunity_Subtype_Enum(intValue) + obj.obj.Subtype = &enumValue - obj.obj.Offset = &value return obj } -// Number of bits to track for metrics starting from configured offset of corresponding header field -// Length returns a uint32 -func (obj *patternFlowGtpv1VersionMetricTag) Length() uint32 { +// Extended Community value of 6 Bytes. Example - for the Opaque type and Color subtype value can be '0000000000c8' for the color value 200. +// Value returns a string +func (obj *bgpExtCommunity) Value() string { - return *obj.obj.Length + return *obj.obj.Value } -// Number of bits to track for metrics starting from configured offset of corresponding header field -// Length returns a uint32 -func (obj *patternFlowGtpv1VersionMetricTag) HasLength() bool { - return obj.obj.Length != nil +// Extended Community value of 6 Bytes. Example - for the Opaque type and Color subtype value can be '0000000000c8' for the color value 200. +// Value returns a string +func (obj *bgpExtCommunity) HasValue() bool { + return obj.obj.Value != nil } -// Number of bits to track for metrics starting from configured offset of corresponding header field -// SetLength sets the uint32 value in the PatternFlowGtpv1VersionMetricTag object -func (obj *patternFlowGtpv1VersionMetricTag) SetLength(value uint32) PatternFlowGtpv1VersionMetricTag { +// Extended Community value of 6 Bytes. Example - for the Opaque type and Color subtype value can be '0000000000c8' for the color value 200. +// SetValue sets the string value in the BgpExtCommunity object +func (obj *bgpExtCommunity) SetValue(value string) BgpExtCommunity { - obj.obj.Length = &value + obj.obj.Value = &value return obj } -func (obj *patternFlowGtpv1VersionMetricTag) validateObj(vObj *validation, set_default bool) { +func (obj *bgpExtCommunity) validateObj(vObj *validation, set_default bool) { if set_default { obj.setDefault() } - // Name is required - if obj.obj.Name == nil { - vObj.validationErrors = append(vObj.validationErrors, "Name is required field on interface PatternFlowGtpv1VersionMetricTag") - } - - if obj.obj.Offset != nil { - - if *obj.obj.Offset > 2 { - vObj.validationErrors = append( - vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowGtpv1VersionMetricTag.Offset <= 2 but Got %d", *obj.obj.Offset)) - } - - } - - if obj.obj.Length != nil { + if obj.obj.Value != nil { - if *obj.obj.Length < 1 || *obj.obj.Length > 3 { - vObj.validationErrors = append( - vObj.validationErrors, - fmt.Sprintf("1 <= PatternFlowGtpv1VersionMetricTag.Length <= 3 but Got %d", *obj.obj.Length)) + err := obj.validateHex(obj.Value()) + if err != nil { + vObj.validationErrors = append(vObj.validationErrors, fmt.Sprintf("%s %s", err.Error(), "on BgpExtCommunity.Value")) } } } -func (obj *patternFlowGtpv1VersionMetricTag) setDefault() { - if obj.obj.Offset == nil { - obj.SetOffset(0) - } - if obj.obj.Length == nil { - obj.SetLength(3) - } +func (obj *bgpExtCommunity) setDefault() { } -// ***** PatternFlowGtpv1ProtocolTypeCounter ***** -type patternFlowGtpv1ProtocolTypeCounter struct { +// ***** BgpAsPath ***** +type bgpAsPath struct { validation - obj *otg.PatternFlowGtpv1ProtocolTypeCounter + obj *otg.BgpAsPath + segmentsHolder BgpAsPathBgpAsPathSegmentIter } -func NewPatternFlowGtpv1ProtocolTypeCounter() PatternFlowGtpv1ProtocolTypeCounter { - obj := patternFlowGtpv1ProtocolTypeCounter{obj: &otg.PatternFlowGtpv1ProtocolTypeCounter{}} +func NewBgpAsPath() BgpAsPath { + obj := bgpAsPath{obj: &otg.BgpAsPath{}} obj.setDefault() return &obj } -func (obj *patternFlowGtpv1ProtocolTypeCounter) Msg() *otg.PatternFlowGtpv1ProtocolTypeCounter { +func (obj *bgpAsPath) Msg() *otg.BgpAsPath { return obj.obj } -func (obj *patternFlowGtpv1ProtocolTypeCounter) SetMsg(msg *otg.PatternFlowGtpv1ProtocolTypeCounter) PatternFlowGtpv1ProtocolTypeCounter { - +func (obj *bgpAsPath) SetMsg(msg *otg.BgpAsPath) BgpAsPath { + obj.setNil() proto.Merge(obj.obj, msg) return obj } -func (obj *patternFlowGtpv1ProtocolTypeCounter) ToProto() (*otg.PatternFlowGtpv1ProtocolTypeCounter, error) { +func (obj *bgpAsPath) ToProto() (*otg.BgpAsPath, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -237291,7 +281965,7 @@ func (obj *patternFlowGtpv1ProtocolTypeCounter) ToProto() (*otg.PatternFlowGtpv1 return obj.Msg(), nil } -func (obj *patternFlowGtpv1ProtocolTypeCounter) FromProto(msg *otg.PatternFlowGtpv1ProtocolTypeCounter) (PatternFlowGtpv1ProtocolTypeCounter, error) { +func (obj *bgpAsPath) FromProto(msg *otg.BgpAsPath) (BgpAsPath, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -237300,7 +281974,7 @@ func (obj *patternFlowGtpv1ProtocolTypeCounter) FromProto(msg *otg.PatternFlowGt return newObj, nil } -func (obj *patternFlowGtpv1ProtocolTypeCounter) ToPbText() (string, error) { +func (obj *bgpAsPath) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -237312,12 +281986,12 @@ func (obj *patternFlowGtpv1ProtocolTypeCounter) ToPbText() (string, error) { return string(protoMarshal), nil } -func (obj *patternFlowGtpv1ProtocolTypeCounter) FromPbText(value string) error { +func (obj *bgpAsPath) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj } - + obj.setNil() vErr := obj.validateToAndFrom() if vErr != nil { return vErr @@ -237325,7 +281999,7 @@ func (obj *patternFlowGtpv1ProtocolTypeCounter) FromPbText(value string) error { return retObj } -func (obj *patternFlowGtpv1ProtocolTypeCounter) ToYaml() (string, error) { +func (obj *bgpAsPath) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -237346,7 +282020,7 @@ func (obj *patternFlowGtpv1ProtocolTypeCounter) ToYaml() (string, error) { return string(data), nil } -func (obj *patternFlowGtpv1ProtocolTypeCounter) FromYaml(value string) error { +func (obj *bgpAsPath) FromYaml(value string) error { if value == "" { value = "{}" } @@ -237363,7 +282037,7 @@ func (obj *patternFlowGtpv1ProtocolTypeCounter) FromYaml(value string) error { return fmt.Errorf("unmarshal error %s", strings.Replace( uError.Error(), "\u00a0", " ", -1)[7:]) } - + obj.setNil() vErr := obj.validateToAndFrom() if vErr != nil { return vErr @@ -237371,7 +282045,7 @@ func (obj *patternFlowGtpv1ProtocolTypeCounter) FromYaml(value string) error { return nil } -func (obj *patternFlowGtpv1ProtocolTypeCounter) ToJson() (string, error) { +func (obj *bgpAsPath) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -237389,7 +282063,7 @@ func (obj *patternFlowGtpv1ProtocolTypeCounter) ToJson() (string, error) { return string(data), nil } -func (obj *patternFlowGtpv1ProtocolTypeCounter) FromJson(value string) error { +func (obj *bgpAsPath) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -237402,7 +282076,7 @@ func (obj *patternFlowGtpv1ProtocolTypeCounter) FromJson(value string) error { return fmt.Errorf("unmarshal error %s", strings.Replace( uError.Error(), "\u00a0", " ", -1)[7:]) } - + obj.setNil() err := obj.validateToAndFrom() if err != nil { return err @@ -237410,19 +282084,19 @@ func (obj *patternFlowGtpv1ProtocolTypeCounter) FromJson(value string) error { return nil } -func (obj *patternFlowGtpv1ProtocolTypeCounter) validateToAndFrom() error { +func (obj *bgpAsPath) validateToAndFrom() error { // emptyVars() obj.validateObj(&obj.validation, true) return obj.validationResult() } -func (obj *patternFlowGtpv1ProtocolTypeCounter) Validate() error { +func (obj *bgpAsPath) Validate() error { // emptyVars() obj.validateObj(&obj.validation, false) return obj.validationResult() } -func (obj *patternFlowGtpv1ProtocolTypeCounter) String() string { +func (obj *bgpAsPath) String() string { str, err := obj.ToYaml() if err != nil { return err.Error() @@ -237430,12 +282104,12 @@ func (obj *patternFlowGtpv1ProtocolTypeCounter) String() string { return str } -func (obj *patternFlowGtpv1ProtocolTypeCounter) Clone() (PatternFlowGtpv1ProtocolTypeCounter, error) { +func (obj *bgpAsPath) Clone() (BgpAsPath, error) { vErr := obj.Validate() if vErr != nil { return nil, vErr } - newObj := NewPatternFlowGtpv1ProtocolTypeCounter() + newObj := NewBgpAsPath() data, err := proto.Marshal(obj.Msg()) if err != nil { return nil, err @@ -237447,199 +282121,239 @@ func (obj *patternFlowGtpv1ProtocolTypeCounter) Clone() (PatternFlowGtpv1Protoco return newObj, nil } -// PatternFlowGtpv1ProtocolTypeCounter is integer counter pattern -type PatternFlowGtpv1ProtocolTypeCounter interface { +func (obj *bgpAsPath) setNil() { + obj.segmentsHolder = nil + obj.validationErrors = nil + obj.warnings = nil + obj.constraints = make(map[string]map[string]Constraints) +} + +// BgpAsPath is this attribute identifies the autonomous systems through which routing information carried in this UPDATE message has passed. This contains the configuration of how to include the Local AS in the AS path attribute of the MP REACH NLRI. It also contains optional configuration of additional AS Path Segments that can be included in the AS Path attribute. The AS Path consists of a Set or Sequence of Autonomous Systems (AS) numbers that a routing information passes through to reach the destination. +type BgpAsPath interface { Validation - // Msg marshals PatternFlowGtpv1ProtocolTypeCounter to protobuf object *otg.PatternFlowGtpv1ProtocolTypeCounter + // Msg marshals BgpAsPath to protobuf object *otg.BgpAsPath // and doesn't set defaults - Msg() *otg.PatternFlowGtpv1ProtocolTypeCounter - // SetMsg unmarshals PatternFlowGtpv1ProtocolTypeCounter from protobuf object *otg.PatternFlowGtpv1ProtocolTypeCounter + Msg() *otg.BgpAsPath + // SetMsg unmarshals BgpAsPath from protobuf object *otg.BgpAsPath // and doesn't set defaults - SetMsg(*otg.PatternFlowGtpv1ProtocolTypeCounter) PatternFlowGtpv1ProtocolTypeCounter - // ToProto marshals PatternFlowGtpv1ProtocolTypeCounter to protobuf object *otg.PatternFlowGtpv1ProtocolTypeCounter - ToProto() (*otg.PatternFlowGtpv1ProtocolTypeCounter, error) - // ToPbText marshals PatternFlowGtpv1ProtocolTypeCounter to protobuf text + SetMsg(*otg.BgpAsPath) BgpAsPath + // ToProto marshals BgpAsPath to protobuf object *otg.BgpAsPath + ToProto() (*otg.BgpAsPath, error) + // ToPbText marshals BgpAsPath to protobuf text ToPbText() (string, error) - // ToYaml marshals PatternFlowGtpv1ProtocolTypeCounter to YAML text + // ToYaml marshals BgpAsPath to YAML text ToYaml() (string, error) - // ToJson marshals PatternFlowGtpv1ProtocolTypeCounter to JSON text + // ToJson marshals BgpAsPath to JSON text ToJson() (string, error) - // FromProto unmarshals PatternFlowGtpv1ProtocolTypeCounter from protobuf object *otg.PatternFlowGtpv1ProtocolTypeCounter - FromProto(msg *otg.PatternFlowGtpv1ProtocolTypeCounter) (PatternFlowGtpv1ProtocolTypeCounter, error) - // FromPbText unmarshals PatternFlowGtpv1ProtocolTypeCounter from protobuf text + // FromProto unmarshals BgpAsPath from protobuf object *otg.BgpAsPath + FromProto(msg *otg.BgpAsPath) (BgpAsPath, error) + // FromPbText unmarshals BgpAsPath from protobuf text FromPbText(value string) error - // FromYaml unmarshals PatternFlowGtpv1ProtocolTypeCounter from YAML text + // FromYaml unmarshals BgpAsPath from YAML text FromYaml(value string) error - // FromJson unmarshals PatternFlowGtpv1ProtocolTypeCounter from JSON text + // FromJson unmarshals BgpAsPath from JSON text FromJson(value string) error - // Validate validates PatternFlowGtpv1ProtocolTypeCounter + // Validate validates BgpAsPath Validate() error // A stringer function String() string // Clones the object - Clone() (PatternFlowGtpv1ProtocolTypeCounter, error) + Clone() (BgpAsPath, error) validateToAndFrom() error validateObj(vObj *validation, set_default bool) setDefault() - // Start returns uint32, set in PatternFlowGtpv1ProtocolTypeCounter. - Start() uint32 - // SetStart assigns uint32 provided by user to PatternFlowGtpv1ProtocolTypeCounter - SetStart(value uint32) PatternFlowGtpv1ProtocolTypeCounter - // HasStart checks if Start has been set in PatternFlowGtpv1ProtocolTypeCounter - HasStart() bool - // Step returns uint32, set in PatternFlowGtpv1ProtocolTypeCounter. - Step() uint32 - // SetStep assigns uint32 provided by user to PatternFlowGtpv1ProtocolTypeCounter - SetStep(value uint32) PatternFlowGtpv1ProtocolTypeCounter - // HasStep checks if Step has been set in PatternFlowGtpv1ProtocolTypeCounter - HasStep() bool - // Count returns uint32, set in PatternFlowGtpv1ProtocolTypeCounter. - Count() uint32 - // SetCount assigns uint32 provided by user to PatternFlowGtpv1ProtocolTypeCounter - SetCount(value uint32) PatternFlowGtpv1ProtocolTypeCounter - // HasCount checks if Count has been set in PatternFlowGtpv1ProtocolTypeCounter - HasCount() bool + // AsSetMode returns BgpAsPathAsSetModeEnum, set in BgpAsPath + AsSetMode() BgpAsPathAsSetModeEnum + // SetAsSetMode assigns BgpAsPathAsSetModeEnum provided by user to BgpAsPath + SetAsSetMode(value BgpAsPathAsSetModeEnum) BgpAsPath + // HasAsSetMode checks if AsSetMode has been set in BgpAsPath + HasAsSetMode() bool + // Segments returns BgpAsPathBgpAsPathSegmentIterIter, set in BgpAsPath + Segments() BgpAsPathBgpAsPathSegmentIter + setNil() } -// description is TBD -// Start returns a uint32 -func (obj *patternFlowGtpv1ProtocolTypeCounter) Start() uint32 { +type BgpAsPathAsSetModeEnum string - return *obj.obj.Start +// Enum of AsSetMode on BgpAsPath +var BgpAsPathAsSetMode = struct { + DO_NOT_INCLUDE_LOCAL_AS BgpAsPathAsSetModeEnum + INCLUDE_AS_SEQ BgpAsPathAsSetModeEnum + INCLUDE_AS_SET BgpAsPathAsSetModeEnum + INCLUDE_AS_CONFED_SEQ BgpAsPathAsSetModeEnum + INCLUDE_AS_CONFED_SET BgpAsPathAsSetModeEnum + PREPEND_TO_FIRST_SEGMENT BgpAsPathAsSetModeEnum +}{ + DO_NOT_INCLUDE_LOCAL_AS: BgpAsPathAsSetModeEnum("do_not_include_local_as"), + INCLUDE_AS_SEQ: BgpAsPathAsSetModeEnum("include_as_seq"), + INCLUDE_AS_SET: BgpAsPathAsSetModeEnum("include_as_set"), + INCLUDE_AS_CONFED_SEQ: BgpAsPathAsSetModeEnum("include_as_confed_seq"), + INCLUDE_AS_CONFED_SET: BgpAsPathAsSetModeEnum("include_as_confed_set"), + PREPEND_TO_FIRST_SEGMENT: BgpAsPathAsSetModeEnum("prepend_to_first_segment"), +} +func (obj *bgpAsPath) AsSetMode() BgpAsPathAsSetModeEnum { + return BgpAsPathAsSetModeEnum(obj.obj.AsSetMode.Enum().String()) } -// description is TBD -// Start returns a uint32 -func (obj *patternFlowGtpv1ProtocolTypeCounter) HasStart() bool { - return obj.obj.Start != nil +// Defines how the Local AS should be included in the MP REACH NLRI. For iBGP sessions, "Do Not Include Local AS" must be chosen. For eBGP sessions, any choice other than "Do Not Include Local AS" can be chosen. +// AsSetMode returns a string +func (obj *bgpAsPath) HasAsSetMode() bool { + return obj.obj.AsSetMode != nil } -// description is TBD -// SetStart sets the uint32 value in the PatternFlowGtpv1ProtocolTypeCounter object -func (obj *patternFlowGtpv1ProtocolTypeCounter) SetStart(value uint32) PatternFlowGtpv1ProtocolTypeCounter { +func (obj *bgpAsPath) SetAsSetMode(value BgpAsPathAsSetModeEnum) BgpAsPath { + intValue, ok := otg.BgpAsPath_AsSetMode_Enum_value[string(value)] + if !ok { + obj.validationErrors = append(obj.validationErrors, fmt.Sprintf( + "%s is not a valid choice on BgpAsPathAsSetModeEnum", string(value))) + return obj + } + enumValue := otg.BgpAsPath_AsSetMode_Enum(intValue) + obj.obj.AsSetMode = &enumValue - obj.obj.Start = &value return obj } -// description is TBD -// Step returns a uint32 -func (obj *patternFlowGtpv1ProtocolTypeCounter) Step() uint32 { - - return *obj.obj.Step +// The additional AS path segments to be added in the NLRI. By default, an empty AS path is always included and the local AS is added to it as per the value of 'as_set_mode' attribute. +// Segments returns a []BgpAsPathSegment +func (obj *bgpAsPath) Segments() BgpAsPathBgpAsPathSegmentIter { + if len(obj.obj.Segments) == 0 { + obj.obj.Segments = []*otg.BgpAsPathSegment{} + } + if obj.segmentsHolder == nil { + obj.segmentsHolder = newBgpAsPathBgpAsPathSegmentIter(&obj.obj.Segments).setMsg(obj) + } + return obj.segmentsHolder +} +type bgpAsPathBgpAsPathSegmentIter struct { + obj *bgpAsPath + bgpAsPathSegmentSlice []BgpAsPathSegment + fieldPtr *[]*otg.BgpAsPathSegment } -// description is TBD -// Step returns a uint32 -func (obj *patternFlowGtpv1ProtocolTypeCounter) HasStep() bool { - return obj.obj.Step != nil +func newBgpAsPathBgpAsPathSegmentIter(ptr *[]*otg.BgpAsPathSegment) BgpAsPathBgpAsPathSegmentIter { + return &bgpAsPathBgpAsPathSegmentIter{fieldPtr: ptr} } -// description is TBD -// SetStep sets the uint32 value in the PatternFlowGtpv1ProtocolTypeCounter object -func (obj *patternFlowGtpv1ProtocolTypeCounter) SetStep(value uint32) PatternFlowGtpv1ProtocolTypeCounter { +type BgpAsPathBgpAsPathSegmentIter interface { + setMsg(*bgpAsPath) BgpAsPathBgpAsPathSegmentIter + Items() []BgpAsPathSegment + Add() BgpAsPathSegment + Append(items ...BgpAsPathSegment) BgpAsPathBgpAsPathSegmentIter + Set(index int, newObj BgpAsPathSegment) BgpAsPathBgpAsPathSegmentIter + Clear() BgpAsPathBgpAsPathSegmentIter + clearHolderSlice() BgpAsPathBgpAsPathSegmentIter + appendHolderSlice(item BgpAsPathSegment) BgpAsPathBgpAsPathSegmentIter +} - obj.obj.Step = &value +func (obj *bgpAsPathBgpAsPathSegmentIter) setMsg(msg *bgpAsPath) BgpAsPathBgpAsPathSegmentIter { + obj.clearHolderSlice() + for _, val := range *obj.fieldPtr { + obj.appendHolderSlice(&bgpAsPathSegment{obj: val}) + } + obj.obj = msg return obj } -// description is TBD -// Count returns a uint32 -func (obj *patternFlowGtpv1ProtocolTypeCounter) Count() uint32 { - - return *obj.obj.Count - +func (obj *bgpAsPathBgpAsPathSegmentIter) Items() []BgpAsPathSegment { + return obj.bgpAsPathSegmentSlice } -// description is TBD -// Count returns a uint32 -func (obj *patternFlowGtpv1ProtocolTypeCounter) HasCount() bool { - return obj.obj.Count != nil +func (obj *bgpAsPathBgpAsPathSegmentIter) Add() BgpAsPathSegment { + newObj := &otg.BgpAsPathSegment{} + *obj.fieldPtr = append(*obj.fieldPtr, newObj) + newLibObj := &bgpAsPathSegment{obj: newObj} + newLibObj.setDefault() + obj.bgpAsPathSegmentSlice = append(obj.bgpAsPathSegmentSlice, newLibObj) + return newLibObj } -// description is TBD -// SetCount sets the uint32 value in the PatternFlowGtpv1ProtocolTypeCounter object -func (obj *patternFlowGtpv1ProtocolTypeCounter) SetCount(value uint32) PatternFlowGtpv1ProtocolTypeCounter { +func (obj *bgpAsPathBgpAsPathSegmentIter) Append(items ...BgpAsPathSegment) BgpAsPathBgpAsPathSegmentIter { + for _, item := range items { + newObj := item.Msg() + *obj.fieldPtr = append(*obj.fieldPtr, newObj) + obj.bgpAsPathSegmentSlice = append(obj.bgpAsPathSegmentSlice, item) + } + return obj +} - obj.obj.Count = &value +func (obj *bgpAsPathBgpAsPathSegmentIter) Set(index int, newObj BgpAsPathSegment) BgpAsPathBgpAsPathSegmentIter { + (*obj.fieldPtr)[index] = newObj.Msg() + obj.bgpAsPathSegmentSlice[index] = newObj + return obj +} +func (obj *bgpAsPathBgpAsPathSegmentIter) Clear() BgpAsPathBgpAsPathSegmentIter { + if len(*obj.fieldPtr) > 0 { + *obj.fieldPtr = []*otg.BgpAsPathSegment{} + obj.bgpAsPathSegmentSlice = []BgpAsPathSegment{} + } + return obj +} +func (obj *bgpAsPathBgpAsPathSegmentIter) clearHolderSlice() BgpAsPathBgpAsPathSegmentIter { + if len(obj.bgpAsPathSegmentSlice) > 0 { + obj.bgpAsPathSegmentSlice = []BgpAsPathSegment{} + } + return obj +} +func (obj *bgpAsPathBgpAsPathSegmentIter) appendHolderSlice(item BgpAsPathSegment) BgpAsPathBgpAsPathSegmentIter { + obj.bgpAsPathSegmentSlice = append(obj.bgpAsPathSegmentSlice, item) return obj } -func (obj *patternFlowGtpv1ProtocolTypeCounter) validateObj(vObj *validation, set_default bool) { +func (obj *bgpAsPath) validateObj(vObj *validation, set_default bool) { if set_default { obj.setDefault() } - if obj.obj.Start != nil { - - if *obj.obj.Start > 1 { - vObj.validationErrors = append( - vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowGtpv1ProtocolTypeCounter.Start <= 1 but Got %d", *obj.obj.Start)) - } - - } - - if obj.obj.Step != nil { + if len(obj.obj.Segments) != 0 { - if *obj.obj.Step > 1 { - vObj.validationErrors = append( - vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowGtpv1ProtocolTypeCounter.Step <= 1 but Got %d", *obj.obj.Step)) + if set_default { + obj.Segments().clearHolderSlice() + for _, item := range obj.obj.Segments { + obj.Segments().appendHolderSlice(&bgpAsPathSegment{obj: item}) + } } - - } - - if obj.obj.Count != nil { - - if *obj.obj.Count > 1 { - vObj.validationErrors = append( - vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowGtpv1ProtocolTypeCounter.Count <= 1 but Got %d", *obj.obj.Count)) + for _, item := range obj.Segments().Items() { + item.validateObj(vObj, set_default) } } } -func (obj *patternFlowGtpv1ProtocolTypeCounter) setDefault() { - if obj.obj.Start == nil { - obj.SetStart(1) - } - if obj.obj.Step == nil { - obj.SetStep(1) - } - if obj.obj.Count == nil { - obj.SetCount(1) +func (obj *bgpAsPath) setDefault() { + if obj.obj.AsSetMode == nil { + obj.SetAsSetMode(BgpAsPathAsSetMode.DO_NOT_INCLUDE_LOCAL_AS) + } } -// ***** PatternFlowGtpv1ProtocolTypeMetricTag ***** -type patternFlowGtpv1ProtocolTypeMetricTag struct { +// ***** BgpAddPath ***** +type bgpAddPath struct { validation - obj *otg.PatternFlowGtpv1ProtocolTypeMetricTag + obj *otg.BgpAddPath } -func NewPatternFlowGtpv1ProtocolTypeMetricTag() PatternFlowGtpv1ProtocolTypeMetricTag { - obj := patternFlowGtpv1ProtocolTypeMetricTag{obj: &otg.PatternFlowGtpv1ProtocolTypeMetricTag{}} +func NewBgpAddPath() BgpAddPath { + obj := bgpAddPath{obj: &otg.BgpAddPath{}} obj.setDefault() return &obj } -func (obj *patternFlowGtpv1ProtocolTypeMetricTag) Msg() *otg.PatternFlowGtpv1ProtocolTypeMetricTag { +func (obj *bgpAddPath) Msg() *otg.BgpAddPath { return obj.obj } -func (obj *patternFlowGtpv1ProtocolTypeMetricTag) SetMsg(msg *otg.PatternFlowGtpv1ProtocolTypeMetricTag) PatternFlowGtpv1ProtocolTypeMetricTag { +func (obj *bgpAddPath) SetMsg(msg *otg.BgpAddPath) BgpAddPath { proto.Merge(obj.obj, msg) return obj } -func (obj *patternFlowGtpv1ProtocolTypeMetricTag) ToProto() (*otg.PatternFlowGtpv1ProtocolTypeMetricTag, error) { +func (obj *bgpAddPath) ToProto() (*otg.BgpAddPath, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -237647,7 +282361,7 @@ func (obj *patternFlowGtpv1ProtocolTypeMetricTag) ToProto() (*otg.PatternFlowGtp return obj.Msg(), nil } -func (obj *patternFlowGtpv1ProtocolTypeMetricTag) FromProto(msg *otg.PatternFlowGtpv1ProtocolTypeMetricTag) (PatternFlowGtpv1ProtocolTypeMetricTag, error) { +func (obj *bgpAddPath) FromProto(msg *otg.BgpAddPath) (BgpAddPath, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -237656,7 +282370,7 @@ func (obj *patternFlowGtpv1ProtocolTypeMetricTag) FromProto(msg *otg.PatternFlow return newObj, nil } -func (obj *patternFlowGtpv1ProtocolTypeMetricTag) ToPbText() (string, error) { +func (obj *bgpAddPath) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -237668,7 +282382,7 @@ func (obj *patternFlowGtpv1ProtocolTypeMetricTag) ToPbText() (string, error) { return string(protoMarshal), nil } -func (obj *patternFlowGtpv1ProtocolTypeMetricTag) FromPbText(value string) error { +func (obj *bgpAddPath) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj @@ -237681,7 +282395,7 @@ func (obj *patternFlowGtpv1ProtocolTypeMetricTag) FromPbText(value string) error return retObj } -func (obj *patternFlowGtpv1ProtocolTypeMetricTag) ToYaml() (string, error) { +func (obj *bgpAddPath) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -237702,7 +282416,7 @@ func (obj *patternFlowGtpv1ProtocolTypeMetricTag) ToYaml() (string, error) { return string(data), nil } -func (obj *patternFlowGtpv1ProtocolTypeMetricTag) FromYaml(value string) error { +func (obj *bgpAddPath) FromYaml(value string) error { if value == "" { value = "{}" } @@ -237727,7 +282441,7 @@ func (obj *patternFlowGtpv1ProtocolTypeMetricTag) FromYaml(value string) error { return nil } -func (obj *patternFlowGtpv1ProtocolTypeMetricTag) ToJson() (string, error) { +func (obj *bgpAddPath) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -237745,7 +282459,7 @@ func (obj *patternFlowGtpv1ProtocolTypeMetricTag) ToJson() (string, error) { return string(data), nil } -func (obj *patternFlowGtpv1ProtocolTypeMetricTag) FromJson(value string) error { +func (obj *bgpAddPath) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -237766,19 +282480,19 @@ func (obj *patternFlowGtpv1ProtocolTypeMetricTag) FromJson(value string) error { return nil } -func (obj *patternFlowGtpv1ProtocolTypeMetricTag) validateToAndFrom() error { +func (obj *bgpAddPath) validateToAndFrom() error { // emptyVars() obj.validateObj(&obj.validation, true) return obj.validationResult() } -func (obj *patternFlowGtpv1ProtocolTypeMetricTag) Validate() error { +func (obj *bgpAddPath) Validate() error { // emptyVars() obj.validateObj(&obj.validation, false) return obj.validationResult() } -func (obj *patternFlowGtpv1ProtocolTypeMetricTag) String() string { +func (obj *bgpAddPath) String() string { str, err := obj.ToYaml() if err != nil { return err.Error() @@ -237786,12 +282500,12 @@ func (obj *patternFlowGtpv1ProtocolTypeMetricTag) String() string { return str } -func (obj *patternFlowGtpv1ProtocolTypeMetricTag) Clone() (PatternFlowGtpv1ProtocolTypeMetricTag, error) { +func (obj *bgpAddPath) Clone() (BgpAddPath, error) { vErr := obj.Validate() if vErr != nil { return nil, vErr } - newObj := NewPatternFlowGtpv1ProtocolTypeMetricTag() + newObj := NewBgpAddPath() data, err := proto.Marshal(obj.Msg()) if err != nil { return nil, err @@ -237803,183 +282517,114 @@ func (obj *patternFlowGtpv1ProtocolTypeMetricTag) Clone() (PatternFlowGtpv1Proto return newObj, nil } -// PatternFlowGtpv1ProtocolTypeMetricTag is metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. -type PatternFlowGtpv1ProtocolTypeMetricTag interface { +// BgpAddPath is the BGP Additional Paths feature is a BGP extension that allows the advertisement of multiple paths for the same prefix without the new paths implicitly replacing any previous paths. +type BgpAddPath interface { Validation - // Msg marshals PatternFlowGtpv1ProtocolTypeMetricTag to protobuf object *otg.PatternFlowGtpv1ProtocolTypeMetricTag + // Msg marshals BgpAddPath to protobuf object *otg.BgpAddPath // and doesn't set defaults - Msg() *otg.PatternFlowGtpv1ProtocolTypeMetricTag - // SetMsg unmarshals PatternFlowGtpv1ProtocolTypeMetricTag from protobuf object *otg.PatternFlowGtpv1ProtocolTypeMetricTag + Msg() *otg.BgpAddPath + // SetMsg unmarshals BgpAddPath from protobuf object *otg.BgpAddPath // and doesn't set defaults - SetMsg(*otg.PatternFlowGtpv1ProtocolTypeMetricTag) PatternFlowGtpv1ProtocolTypeMetricTag - // ToProto marshals PatternFlowGtpv1ProtocolTypeMetricTag to protobuf object *otg.PatternFlowGtpv1ProtocolTypeMetricTag - ToProto() (*otg.PatternFlowGtpv1ProtocolTypeMetricTag, error) - // ToPbText marshals PatternFlowGtpv1ProtocolTypeMetricTag to protobuf text + SetMsg(*otg.BgpAddPath) BgpAddPath + // ToProto marshals BgpAddPath to protobuf object *otg.BgpAddPath + ToProto() (*otg.BgpAddPath, error) + // ToPbText marshals BgpAddPath to protobuf text ToPbText() (string, error) - // ToYaml marshals PatternFlowGtpv1ProtocolTypeMetricTag to YAML text + // ToYaml marshals BgpAddPath to YAML text ToYaml() (string, error) - // ToJson marshals PatternFlowGtpv1ProtocolTypeMetricTag to JSON text + // ToJson marshals BgpAddPath to JSON text ToJson() (string, error) - // FromProto unmarshals PatternFlowGtpv1ProtocolTypeMetricTag from protobuf object *otg.PatternFlowGtpv1ProtocolTypeMetricTag - FromProto(msg *otg.PatternFlowGtpv1ProtocolTypeMetricTag) (PatternFlowGtpv1ProtocolTypeMetricTag, error) - // FromPbText unmarshals PatternFlowGtpv1ProtocolTypeMetricTag from protobuf text + // FromProto unmarshals BgpAddPath from protobuf object *otg.BgpAddPath + FromProto(msg *otg.BgpAddPath) (BgpAddPath, error) + // FromPbText unmarshals BgpAddPath from protobuf text FromPbText(value string) error - // FromYaml unmarshals PatternFlowGtpv1ProtocolTypeMetricTag from YAML text + // FromYaml unmarshals BgpAddPath from YAML text FromYaml(value string) error - // FromJson unmarshals PatternFlowGtpv1ProtocolTypeMetricTag from JSON text + // FromJson unmarshals BgpAddPath from JSON text FromJson(value string) error - // Validate validates PatternFlowGtpv1ProtocolTypeMetricTag + // Validate validates BgpAddPath Validate() error // A stringer function String() string // Clones the object - Clone() (PatternFlowGtpv1ProtocolTypeMetricTag, error) + Clone() (BgpAddPath, error) validateToAndFrom() error validateObj(vObj *validation, set_default bool) setDefault() - // Name returns string, set in PatternFlowGtpv1ProtocolTypeMetricTag. - Name() string - // SetName assigns string provided by user to PatternFlowGtpv1ProtocolTypeMetricTag - SetName(value string) PatternFlowGtpv1ProtocolTypeMetricTag - // Offset returns uint32, set in PatternFlowGtpv1ProtocolTypeMetricTag. - Offset() uint32 - // SetOffset assigns uint32 provided by user to PatternFlowGtpv1ProtocolTypeMetricTag - SetOffset(value uint32) PatternFlowGtpv1ProtocolTypeMetricTag - // HasOffset checks if Offset has been set in PatternFlowGtpv1ProtocolTypeMetricTag - HasOffset() bool - // Length returns uint32, set in PatternFlowGtpv1ProtocolTypeMetricTag. - Length() uint32 - // SetLength assigns uint32 provided by user to PatternFlowGtpv1ProtocolTypeMetricTag - SetLength(value uint32) PatternFlowGtpv1ProtocolTypeMetricTag - // HasLength checks if Length has been set in PatternFlowGtpv1ProtocolTypeMetricTag - HasLength() bool -} - -// Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field -// Name returns a string -func (obj *patternFlowGtpv1ProtocolTypeMetricTag) Name() string { - - return *obj.obj.Name - -} - -// Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field -// SetName sets the string value in the PatternFlowGtpv1ProtocolTypeMetricTag object -func (obj *patternFlowGtpv1ProtocolTypeMetricTag) SetName(value string) PatternFlowGtpv1ProtocolTypeMetricTag { - - obj.obj.Name = &value - return obj -} - -// Offset in bits relative to start of corresponding header field -// Offset returns a uint32 -func (obj *patternFlowGtpv1ProtocolTypeMetricTag) Offset() uint32 { - - return *obj.obj.Offset - -} - -// Offset in bits relative to start of corresponding header field -// Offset returns a uint32 -func (obj *patternFlowGtpv1ProtocolTypeMetricTag) HasOffset() bool { - return obj.obj.Offset != nil -} - -// Offset in bits relative to start of corresponding header field -// SetOffset sets the uint32 value in the PatternFlowGtpv1ProtocolTypeMetricTag object -func (obj *patternFlowGtpv1ProtocolTypeMetricTag) SetOffset(value uint32) PatternFlowGtpv1ProtocolTypeMetricTag { - - obj.obj.Offset = &value - return obj + // PathId returns uint32, set in BgpAddPath. + PathId() uint32 + // SetPathId assigns uint32 provided by user to BgpAddPath + SetPathId(value uint32) BgpAddPath + // HasPathId checks if PathId has been set in BgpAddPath + HasPathId() bool } -// Number of bits to track for metrics starting from configured offset of corresponding header field -// Length returns a uint32 -func (obj *patternFlowGtpv1ProtocolTypeMetricTag) Length() uint32 { +// The id of the additional path. +// PathId returns a uint32 +func (obj *bgpAddPath) PathId() uint32 { - return *obj.obj.Length + return *obj.obj.PathId } -// Number of bits to track for metrics starting from configured offset of corresponding header field -// Length returns a uint32 -func (obj *patternFlowGtpv1ProtocolTypeMetricTag) HasLength() bool { - return obj.obj.Length != nil +// The id of the additional path. +// PathId returns a uint32 +func (obj *bgpAddPath) HasPathId() bool { + return obj.obj.PathId != nil } -// Number of bits to track for metrics starting from configured offset of corresponding header field -// SetLength sets the uint32 value in the PatternFlowGtpv1ProtocolTypeMetricTag object -func (obj *patternFlowGtpv1ProtocolTypeMetricTag) SetLength(value uint32) PatternFlowGtpv1ProtocolTypeMetricTag { +// The id of the additional path. +// SetPathId sets the uint32 value in the BgpAddPath object +func (obj *bgpAddPath) SetPathId(value uint32) BgpAddPath { - obj.obj.Length = &value + obj.obj.PathId = &value return obj } -func (obj *patternFlowGtpv1ProtocolTypeMetricTag) validateObj(vObj *validation, set_default bool) { +func (obj *bgpAddPath) validateObj(vObj *validation, set_default bool) { if set_default { obj.setDefault() } - // Name is required - if obj.obj.Name == nil { - vObj.validationErrors = append(vObj.validationErrors, "Name is required field on interface PatternFlowGtpv1ProtocolTypeMetricTag") - } - - if obj.obj.Offset != nil { - - if *obj.obj.Offset > 0 { - vObj.validationErrors = append( - vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowGtpv1ProtocolTypeMetricTag.Offset <= 0 but Got %d", *obj.obj.Offset)) - } - - } - - if obj.obj.Length != nil { - - if *obj.obj.Length < 1 || *obj.obj.Length > 1 { - vObj.validationErrors = append( - vObj.validationErrors, - fmt.Sprintf("1 <= PatternFlowGtpv1ProtocolTypeMetricTag.Length <= 1 but Got %d", *obj.obj.Length)) - } - - } - } -func (obj *patternFlowGtpv1ProtocolTypeMetricTag) setDefault() { - if obj.obj.Offset == nil { - obj.SetOffset(0) - } - if obj.obj.Length == nil { - obj.SetLength(1) +func (obj *bgpAddPath) setDefault() { + if obj.obj.PathId == nil { + obj.SetPathId(1) } } -// ***** PatternFlowGtpv1ReservedCounter ***** -type patternFlowGtpv1ReservedCounter struct { +// ***** BgpExtendedCommunity ***** +type bgpExtendedCommunity struct { validation - obj *otg.PatternFlowGtpv1ReservedCounter + obj *otg.BgpExtendedCommunity + transitive_2OctetAsTypeHolder BgpExtendedCommunityTransitive2OctetAsType + transitiveIpv4AddressTypeHolder BgpExtendedCommunityTransitiveIpv4AddressType + transitive_4OctetAsTypeHolder BgpExtendedCommunityTransitive4OctetAsType + transitiveOpaqueTypeHolder BgpExtendedCommunityTransitiveOpaqueType + transitiveEvpnTypeHolder BgpExtendedCommunityTransitiveEvpnType + nonTransitive_2OctetAsTypeHolder BgpExtendedCommunityNonTransitive2OctetAsType + customHolder BgpExtendedCommunityCustomType } -func NewPatternFlowGtpv1ReservedCounter() PatternFlowGtpv1ReservedCounter { - obj := patternFlowGtpv1ReservedCounter{obj: &otg.PatternFlowGtpv1ReservedCounter{}} +func NewBgpExtendedCommunity() BgpExtendedCommunity { + obj := bgpExtendedCommunity{obj: &otg.BgpExtendedCommunity{}} obj.setDefault() return &obj } -func (obj *patternFlowGtpv1ReservedCounter) Msg() *otg.PatternFlowGtpv1ReservedCounter { +func (obj *bgpExtendedCommunity) Msg() *otg.BgpExtendedCommunity { return obj.obj } -func (obj *patternFlowGtpv1ReservedCounter) SetMsg(msg *otg.PatternFlowGtpv1ReservedCounter) PatternFlowGtpv1ReservedCounter { - +func (obj *bgpExtendedCommunity) SetMsg(msg *otg.BgpExtendedCommunity) BgpExtendedCommunity { + obj.setNil() proto.Merge(obj.obj, msg) return obj } -func (obj *patternFlowGtpv1ReservedCounter) ToProto() (*otg.PatternFlowGtpv1ReservedCounter, error) { +func (obj *bgpExtendedCommunity) ToProto() (*otg.BgpExtendedCommunity, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -237987,7 +282632,7 @@ func (obj *patternFlowGtpv1ReservedCounter) ToProto() (*otg.PatternFlowGtpv1Rese return obj.Msg(), nil } -func (obj *patternFlowGtpv1ReservedCounter) FromProto(msg *otg.PatternFlowGtpv1ReservedCounter) (PatternFlowGtpv1ReservedCounter, error) { +func (obj *bgpExtendedCommunity) FromProto(msg *otg.BgpExtendedCommunity) (BgpExtendedCommunity, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -237996,7 +282641,7 @@ func (obj *patternFlowGtpv1ReservedCounter) FromProto(msg *otg.PatternFlowGtpv1R return newObj, nil } -func (obj *patternFlowGtpv1ReservedCounter) ToPbText() (string, error) { +func (obj *bgpExtendedCommunity) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -238008,12 +282653,12 @@ func (obj *patternFlowGtpv1ReservedCounter) ToPbText() (string, error) { return string(protoMarshal), nil } -func (obj *patternFlowGtpv1ReservedCounter) FromPbText(value string) error { +func (obj *bgpExtendedCommunity) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj } - + obj.setNil() vErr := obj.validateToAndFrom() if vErr != nil { return vErr @@ -238021,7 +282666,7 @@ func (obj *patternFlowGtpv1ReservedCounter) FromPbText(value string) error { return retObj } -func (obj *patternFlowGtpv1ReservedCounter) ToYaml() (string, error) { +func (obj *bgpExtendedCommunity) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -238042,7 +282687,7 @@ func (obj *patternFlowGtpv1ReservedCounter) ToYaml() (string, error) { return string(data), nil } -func (obj *patternFlowGtpv1ReservedCounter) FromYaml(value string) error { +func (obj *bgpExtendedCommunity) FromYaml(value string) error { if value == "" { value = "{}" } @@ -238059,7 +282704,7 @@ func (obj *patternFlowGtpv1ReservedCounter) FromYaml(value string) error { return fmt.Errorf("unmarshal error %s", strings.Replace( uError.Error(), "\u00a0", " ", -1)[7:]) } - + obj.setNil() vErr := obj.validateToAndFrom() if vErr != nil { return vErr @@ -238067,7 +282712,7 @@ func (obj *patternFlowGtpv1ReservedCounter) FromYaml(value string) error { return nil } -func (obj *patternFlowGtpv1ReservedCounter) ToJson() (string, error) { +func (obj *bgpExtendedCommunity) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -238085,7 +282730,7 @@ func (obj *patternFlowGtpv1ReservedCounter) ToJson() (string, error) { return string(data), nil } -func (obj *patternFlowGtpv1ReservedCounter) FromJson(value string) error { +func (obj *bgpExtendedCommunity) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -238098,7 +282743,7 @@ func (obj *patternFlowGtpv1ReservedCounter) FromJson(value string) error { return fmt.Errorf("unmarshal error %s", strings.Replace( uError.Error(), "\u00a0", " ", -1)[7:]) } - + obj.setNil() err := obj.validateToAndFrom() if err != nil { return err @@ -238106,19 +282751,19 @@ func (obj *patternFlowGtpv1ReservedCounter) FromJson(value string) error { return nil } -func (obj *patternFlowGtpv1ReservedCounter) validateToAndFrom() error { +func (obj *bgpExtendedCommunity) validateToAndFrom() error { // emptyVars() obj.validateObj(&obj.validation, true) return obj.validationResult() } -func (obj *patternFlowGtpv1ReservedCounter) Validate() error { +func (obj *bgpExtendedCommunity) Validate() error { // emptyVars() obj.validateObj(&obj.validation, false) return obj.validationResult() } -func (obj *patternFlowGtpv1ReservedCounter) String() string { +func (obj *bgpExtendedCommunity) String() string { str, err := obj.ToYaml() if err != nil { return err.Error() @@ -238126,12 +282771,12 @@ func (obj *patternFlowGtpv1ReservedCounter) String() string { return str } -func (obj *patternFlowGtpv1ReservedCounter) Clone() (PatternFlowGtpv1ReservedCounter, error) { +func (obj *bgpExtendedCommunity) Clone() (BgpExtendedCommunity, error) { vErr := obj.Validate() if vErr != nil { return nil, vErr } - newObj := NewPatternFlowGtpv1ReservedCounter() + newObj := NewBgpExtendedCommunity() data, err := proto.Marshal(obj.Msg()) if err != nil { return nil, err @@ -238143,199 +282788,481 @@ func (obj *patternFlowGtpv1ReservedCounter) Clone() (PatternFlowGtpv1ReservedCou return newObj, nil } -// PatternFlowGtpv1ReservedCounter is integer counter pattern -type PatternFlowGtpv1ReservedCounter interface { +func (obj *bgpExtendedCommunity) setNil() { + obj.transitive_2OctetAsTypeHolder = nil + obj.transitiveIpv4AddressTypeHolder = nil + obj.transitive_4OctetAsTypeHolder = nil + obj.transitiveOpaqueTypeHolder = nil + obj.transitiveEvpnTypeHolder = nil + obj.nonTransitive_2OctetAsTypeHolder = nil + obj.customHolder = nil + obj.validationErrors = nil + obj.warnings = nil + obj.constraints = make(map[string]map[string]Constraints) +} + +// BgpExtendedCommunity is the Extended Communities Attribute is a optional BGP attribute,defined in RFC4360 with the Type Code 16. Community and Extended Communities attributes are utilized to trigger routing decisions, such as acceptance, rejection, preference, or redistribution. An extended community is an 8-Bytes value.It is divided into two main parts. The first 2 Bytes of the community encode a type and optonal sub-type field. The last 6 bytes (or 7 bytes for types without a sub-type) carry a unique set of data in a format defined by the type and optional sub-type field. Extended communities provide a larger range for grouping or categorizing communities. +type BgpExtendedCommunity interface { Validation - // Msg marshals PatternFlowGtpv1ReservedCounter to protobuf object *otg.PatternFlowGtpv1ReservedCounter + // Msg marshals BgpExtendedCommunity to protobuf object *otg.BgpExtendedCommunity // and doesn't set defaults - Msg() *otg.PatternFlowGtpv1ReservedCounter - // SetMsg unmarshals PatternFlowGtpv1ReservedCounter from protobuf object *otg.PatternFlowGtpv1ReservedCounter + Msg() *otg.BgpExtendedCommunity + // SetMsg unmarshals BgpExtendedCommunity from protobuf object *otg.BgpExtendedCommunity // and doesn't set defaults - SetMsg(*otg.PatternFlowGtpv1ReservedCounter) PatternFlowGtpv1ReservedCounter - // ToProto marshals PatternFlowGtpv1ReservedCounter to protobuf object *otg.PatternFlowGtpv1ReservedCounter - ToProto() (*otg.PatternFlowGtpv1ReservedCounter, error) - // ToPbText marshals PatternFlowGtpv1ReservedCounter to protobuf text + SetMsg(*otg.BgpExtendedCommunity) BgpExtendedCommunity + // ToProto marshals BgpExtendedCommunity to protobuf object *otg.BgpExtendedCommunity + ToProto() (*otg.BgpExtendedCommunity, error) + // ToPbText marshals BgpExtendedCommunity to protobuf text ToPbText() (string, error) - // ToYaml marshals PatternFlowGtpv1ReservedCounter to YAML text + // ToYaml marshals BgpExtendedCommunity to YAML text ToYaml() (string, error) - // ToJson marshals PatternFlowGtpv1ReservedCounter to JSON text + // ToJson marshals BgpExtendedCommunity to JSON text ToJson() (string, error) - // FromProto unmarshals PatternFlowGtpv1ReservedCounter from protobuf object *otg.PatternFlowGtpv1ReservedCounter - FromProto(msg *otg.PatternFlowGtpv1ReservedCounter) (PatternFlowGtpv1ReservedCounter, error) - // FromPbText unmarshals PatternFlowGtpv1ReservedCounter from protobuf text + // FromProto unmarshals BgpExtendedCommunity from protobuf object *otg.BgpExtendedCommunity + FromProto(msg *otg.BgpExtendedCommunity) (BgpExtendedCommunity, error) + // FromPbText unmarshals BgpExtendedCommunity from protobuf text FromPbText(value string) error - // FromYaml unmarshals PatternFlowGtpv1ReservedCounter from YAML text + // FromYaml unmarshals BgpExtendedCommunity from YAML text FromYaml(value string) error - // FromJson unmarshals PatternFlowGtpv1ReservedCounter from JSON text + // FromJson unmarshals BgpExtendedCommunity from JSON text FromJson(value string) error - // Validate validates PatternFlowGtpv1ReservedCounter + // Validate validates BgpExtendedCommunity Validate() error // A stringer function String() string // Clones the object - Clone() (PatternFlowGtpv1ReservedCounter, error) + Clone() (BgpExtendedCommunity, error) validateToAndFrom() error validateObj(vObj *validation, set_default bool) setDefault() - // Start returns uint32, set in PatternFlowGtpv1ReservedCounter. - Start() uint32 - // SetStart assigns uint32 provided by user to PatternFlowGtpv1ReservedCounter - SetStart(value uint32) PatternFlowGtpv1ReservedCounter - // HasStart checks if Start has been set in PatternFlowGtpv1ReservedCounter - HasStart() bool - // Step returns uint32, set in PatternFlowGtpv1ReservedCounter. - Step() uint32 - // SetStep assigns uint32 provided by user to PatternFlowGtpv1ReservedCounter - SetStep(value uint32) PatternFlowGtpv1ReservedCounter - // HasStep checks if Step has been set in PatternFlowGtpv1ReservedCounter - HasStep() bool - // Count returns uint32, set in PatternFlowGtpv1ReservedCounter. - Count() uint32 - // SetCount assigns uint32 provided by user to PatternFlowGtpv1ReservedCounter - SetCount(value uint32) PatternFlowGtpv1ReservedCounter - // HasCount checks if Count has been set in PatternFlowGtpv1ReservedCounter - HasCount() bool + // Choice returns BgpExtendedCommunityChoiceEnum, set in BgpExtendedCommunity + Choice() BgpExtendedCommunityChoiceEnum + // SetChoice assigns BgpExtendedCommunityChoiceEnum provided by user to BgpExtendedCommunity + SetChoice(value BgpExtendedCommunityChoiceEnum) BgpExtendedCommunity + // HasChoice checks if Choice has been set in BgpExtendedCommunity + HasChoice() bool + // Transitive2OctetAsType returns BgpExtendedCommunityTransitive2OctetAsType, set in BgpExtendedCommunity. + // BgpExtendedCommunityTransitive2OctetAsType is the Transitive Two-Octet AS-Specific Extended Community is sent as type 0x00 . + Transitive2OctetAsType() BgpExtendedCommunityTransitive2OctetAsType + // SetTransitive2OctetAsType assigns BgpExtendedCommunityTransitive2OctetAsType provided by user to BgpExtendedCommunity. + // BgpExtendedCommunityTransitive2OctetAsType is the Transitive Two-Octet AS-Specific Extended Community is sent as type 0x00 . + SetTransitive2OctetAsType(value BgpExtendedCommunityTransitive2OctetAsType) BgpExtendedCommunity + // HasTransitive2OctetAsType checks if Transitive2OctetAsType has been set in BgpExtendedCommunity + HasTransitive2OctetAsType() bool + // TransitiveIpv4AddressType returns BgpExtendedCommunityTransitiveIpv4AddressType, set in BgpExtendedCommunity. + // BgpExtendedCommunityTransitiveIpv4AddressType is the Transitive IPv4 Address Specific Extended Community is sent as type 0x01. + TransitiveIpv4AddressType() BgpExtendedCommunityTransitiveIpv4AddressType + // SetTransitiveIpv4AddressType assigns BgpExtendedCommunityTransitiveIpv4AddressType provided by user to BgpExtendedCommunity. + // BgpExtendedCommunityTransitiveIpv4AddressType is the Transitive IPv4 Address Specific Extended Community is sent as type 0x01. + SetTransitiveIpv4AddressType(value BgpExtendedCommunityTransitiveIpv4AddressType) BgpExtendedCommunity + // HasTransitiveIpv4AddressType checks if TransitiveIpv4AddressType has been set in BgpExtendedCommunity + HasTransitiveIpv4AddressType() bool + // Transitive4OctetAsType returns BgpExtendedCommunityTransitive4OctetAsType, set in BgpExtendedCommunity. + // BgpExtendedCommunityTransitive4OctetAsType is the Transitive Four-Octet AS-Specific Extended Community is sent as type 0x02. It is defined in RFC 5668. + Transitive4OctetAsType() BgpExtendedCommunityTransitive4OctetAsType + // SetTransitive4OctetAsType assigns BgpExtendedCommunityTransitive4OctetAsType provided by user to BgpExtendedCommunity. + // BgpExtendedCommunityTransitive4OctetAsType is the Transitive Four-Octet AS-Specific Extended Community is sent as type 0x02. It is defined in RFC 5668. + SetTransitive4OctetAsType(value BgpExtendedCommunityTransitive4OctetAsType) BgpExtendedCommunity + // HasTransitive4OctetAsType checks if Transitive4OctetAsType has been set in BgpExtendedCommunity + HasTransitive4OctetAsType() bool + // TransitiveOpaqueType returns BgpExtendedCommunityTransitiveOpaqueType, set in BgpExtendedCommunity. + // BgpExtendedCommunityTransitiveOpaqueType is the Transitive Opaque Extended Community is sent as type 0x03. + TransitiveOpaqueType() BgpExtendedCommunityTransitiveOpaqueType + // SetTransitiveOpaqueType assigns BgpExtendedCommunityTransitiveOpaqueType provided by user to BgpExtendedCommunity. + // BgpExtendedCommunityTransitiveOpaqueType is the Transitive Opaque Extended Community is sent as type 0x03. + SetTransitiveOpaqueType(value BgpExtendedCommunityTransitiveOpaqueType) BgpExtendedCommunity + // HasTransitiveOpaqueType checks if TransitiveOpaqueType has been set in BgpExtendedCommunity + HasTransitiveOpaqueType() bool + // TransitiveEvpnType returns BgpExtendedCommunityTransitiveEvpnType, set in BgpExtendedCommunity. + // BgpExtendedCommunityTransitiveEvpnType is the Transitive EVPN Extended Community is sent as type 0x06 . + TransitiveEvpnType() BgpExtendedCommunityTransitiveEvpnType + // SetTransitiveEvpnType assigns BgpExtendedCommunityTransitiveEvpnType provided by user to BgpExtendedCommunity. + // BgpExtendedCommunityTransitiveEvpnType is the Transitive EVPN Extended Community is sent as type 0x06 . + SetTransitiveEvpnType(value BgpExtendedCommunityTransitiveEvpnType) BgpExtendedCommunity + // HasTransitiveEvpnType checks if TransitiveEvpnType has been set in BgpExtendedCommunity + HasTransitiveEvpnType() bool + // NonTransitive2OctetAsType returns BgpExtendedCommunityNonTransitive2OctetAsType, set in BgpExtendedCommunity. + // BgpExtendedCommunityNonTransitive2OctetAsType is the Non-Transitive Two-Octet AS-Specific Extended Community is sent as type 0x40. + NonTransitive2OctetAsType() BgpExtendedCommunityNonTransitive2OctetAsType + // SetNonTransitive2OctetAsType assigns BgpExtendedCommunityNonTransitive2OctetAsType provided by user to BgpExtendedCommunity. + // BgpExtendedCommunityNonTransitive2OctetAsType is the Non-Transitive Two-Octet AS-Specific Extended Community is sent as type 0x40. + SetNonTransitive2OctetAsType(value BgpExtendedCommunityNonTransitive2OctetAsType) BgpExtendedCommunity + // HasNonTransitive2OctetAsType checks if NonTransitive2OctetAsType has been set in BgpExtendedCommunity + HasNonTransitive2OctetAsType() bool + // Custom returns BgpExtendedCommunityCustomType, set in BgpExtendedCommunity. + // BgpExtendedCommunityCustomType is add a custom Extended Community with a combination of types , sub-types and values not explicitly specified above or not defined yet. + Custom() BgpExtendedCommunityCustomType + // SetCustom assigns BgpExtendedCommunityCustomType provided by user to BgpExtendedCommunity. + // BgpExtendedCommunityCustomType is add a custom Extended Community with a combination of types , sub-types and values not explicitly specified above or not defined yet. + SetCustom(value BgpExtendedCommunityCustomType) BgpExtendedCommunity + // HasCustom checks if Custom has been set in BgpExtendedCommunity + HasCustom() bool + setNil() +} + +type BgpExtendedCommunityChoiceEnum string + +// Enum of Choice on BgpExtendedCommunity +var BgpExtendedCommunityChoice = struct { + TRANSITIVE_2OCTET_AS_TYPE BgpExtendedCommunityChoiceEnum + TRANSITIVE_IPV4_ADDRESS_TYPE BgpExtendedCommunityChoiceEnum + TRANSITIVE_4OCTET_AS_TYPE BgpExtendedCommunityChoiceEnum + TRANSITIVE_OPAQUE_TYPE BgpExtendedCommunityChoiceEnum + TRANSITIVE_EVPN_TYPE BgpExtendedCommunityChoiceEnum + NON_TRANSITIVE_2OCTET_AS_TYPE BgpExtendedCommunityChoiceEnum + CUSTOM BgpExtendedCommunityChoiceEnum +}{ + TRANSITIVE_2OCTET_AS_TYPE: BgpExtendedCommunityChoiceEnum("transitive_2octet_as_type"), + TRANSITIVE_IPV4_ADDRESS_TYPE: BgpExtendedCommunityChoiceEnum("transitive_ipv4_address_type"), + TRANSITIVE_4OCTET_AS_TYPE: BgpExtendedCommunityChoiceEnum("transitive_4octet_as_type"), + TRANSITIVE_OPAQUE_TYPE: BgpExtendedCommunityChoiceEnum("transitive_opaque_type"), + TRANSITIVE_EVPN_TYPE: BgpExtendedCommunityChoiceEnum("transitive_evpn_type"), + NON_TRANSITIVE_2OCTET_AS_TYPE: BgpExtendedCommunityChoiceEnum("non_transitive_2octet_as_type"), + CUSTOM: BgpExtendedCommunityChoiceEnum("custom"), +} + +func (obj *bgpExtendedCommunity) Choice() BgpExtendedCommunityChoiceEnum { + return BgpExtendedCommunityChoiceEnum(obj.obj.Choice.Enum().String()) +} + +// description is TBD +// Choice returns a string +func (obj *bgpExtendedCommunity) HasChoice() bool { + return obj.obj.Choice != nil +} + +func (obj *bgpExtendedCommunity) SetChoice(value BgpExtendedCommunityChoiceEnum) BgpExtendedCommunity { + intValue, ok := otg.BgpExtendedCommunity_Choice_Enum_value[string(value)] + if !ok { + obj.validationErrors = append(obj.validationErrors, fmt.Sprintf( + "%s is not a valid choice on BgpExtendedCommunityChoiceEnum", string(value))) + return obj + } + enumValue := otg.BgpExtendedCommunity_Choice_Enum(intValue) + obj.obj.Choice = &enumValue + obj.obj.Custom = nil + obj.customHolder = nil + obj.obj.NonTransitive_2OctetAsType = nil + obj.nonTransitive_2OctetAsTypeHolder = nil + obj.obj.TransitiveEvpnType = nil + obj.transitiveEvpnTypeHolder = nil + obj.obj.TransitiveOpaqueType = nil + obj.transitiveOpaqueTypeHolder = nil + obj.obj.Transitive_4OctetAsType = nil + obj.transitive_4OctetAsTypeHolder = nil + obj.obj.TransitiveIpv4AddressType = nil + obj.transitiveIpv4AddressTypeHolder = nil + obj.obj.Transitive_2OctetAsType = nil + obj.transitive_2OctetAsTypeHolder = nil + + if value == BgpExtendedCommunityChoice.TRANSITIVE_2OCTET_AS_TYPE { + obj.obj.Transitive_2OctetAsType = NewBgpExtendedCommunityTransitive2OctetAsType().Msg() + } + + if value == BgpExtendedCommunityChoice.TRANSITIVE_IPV4_ADDRESS_TYPE { + obj.obj.TransitiveIpv4AddressType = NewBgpExtendedCommunityTransitiveIpv4AddressType().Msg() + } + + if value == BgpExtendedCommunityChoice.TRANSITIVE_4OCTET_AS_TYPE { + obj.obj.Transitive_4OctetAsType = NewBgpExtendedCommunityTransitive4OctetAsType().Msg() + } + + if value == BgpExtendedCommunityChoice.TRANSITIVE_OPAQUE_TYPE { + obj.obj.TransitiveOpaqueType = NewBgpExtendedCommunityTransitiveOpaqueType().Msg() + } + + if value == BgpExtendedCommunityChoice.TRANSITIVE_EVPN_TYPE { + obj.obj.TransitiveEvpnType = NewBgpExtendedCommunityTransitiveEvpnType().Msg() + } + + if value == BgpExtendedCommunityChoice.NON_TRANSITIVE_2OCTET_AS_TYPE { + obj.obj.NonTransitive_2OctetAsType = NewBgpExtendedCommunityNonTransitive2OctetAsType().Msg() + } + + if value == BgpExtendedCommunityChoice.CUSTOM { + obj.obj.Custom = NewBgpExtendedCommunityCustomType().Msg() + } + + return obj +} + +// description is TBD +// Transitive2OctetAsType returns a BgpExtendedCommunityTransitive2OctetAsType +func (obj *bgpExtendedCommunity) Transitive2OctetAsType() BgpExtendedCommunityTransitive2OctetAsType { + if obj.obj.Transitive_2OctetAsType == nil { + obj.SetChoice(BgpExtendedCommunityChoice.TRANSITIVE_2OCTET_AS_TYPE) + } + if obj.transitive_2OctetAsTypeHolder == nil { + obj.transitive_2OctetAsTypeHolder = &bgpExtendedCommunityTransitive2OctetAsType{obj: obj.obj.Transitive_2OctetAsType} + } + return obj.transitive_2OctetAsTypeHolder +} + +// description is TBD +// Transitive2OctetAsType returns a BgpExtendedCommunityTransitive2OctetAsType +func (obj *bgpExtendedCommunity) HasTransitive2OctetAsType() bool { + return obj.obj.Transitive_2OctetAsType != nil +} + +// description is TBD +// SetTransitive2OctetAsType sets the BgpExtendedCommunityTransitive2OctetAsType value in the BgpExtendedCommunity object +func (obj *bgpExtendedCommunity) SetTransitive2OctetAsType(value BgpExtendedCommunityTransitive2OctetAsType) BgpExtendedCommunity { + obj.SetChoice(BgpExtendedCommunityChoice.TRANSITIVE_2OCTET_AS_TYPE) + obj.transitive_2OctetAsTypeHolder = nil + obj.obj.Transitive_2OctetAsType = value.Msg() + + return obj } // description is TBD -// Start returns a uint32 -func (obj *patternFlowGtpv1ReservedCounter) Start() uint32 { +// TransitiveIpv4AddressType returns a BgpExtendedCommunityTransitiveIpv4AddressType +func (obj *bgpExtendedCommunity) TransitiveIpv4AddressType() BgpExtendedCommunityTransitiveIpv4AddressType { + if obj.obj.TransitiveIpv4AddressType == nil { + obj.SetChoice(BgpExtendedCommunityChoice.TRANSITIVE_IPV4_ADDRESS_TYPE) + } + if obj.transitiveIpv4AddressTypeHolder == nil { + obj.transitiveIpv4AddressTypeHolder = &bgpExtendedCommunityTransitiveIpv4AddressType{obj: obj.obj.TransitiveIpv4AddressType} + } + return obj.transitiveIpv4AddressTypeHolder +} - return *obj.obj.Start +// description is TBD +// TransitiveIpv4AddressType returns a BgpExtendedCommunityTransitiveIpv4AddressType +func (obj *bgpExtendedCommunity) HasTransitiveIpv4AddressType() bool { + return obj.obj.TransitiveIpv4AddressType != nil +} + +// description is TBD +// SetTransitiveIpv4AddressType sets the BgpExtendedCommunityTransitiveIpv4AddressType value in the BgpExtendedCommunity object +func (obj *bgpExtendedCommunity) SetTransitiveIpv4AddressType(value BgpExtendedCommunityTransitiveIpv4AddressType) BgpExtendedCommunity { + obj.SetChoice(BgpExtendedCommunityChoice.TRANSITIVE_IPV4_ADDRESS_TYPE) + obj.transitiveIpv4AddressTypeHolder = nil + obj.obj.TransitiveIpv4AddressType = value.Msg() + return obj } // description is TBD -// Start returns a uint32 -func (obj *patternFlowGtpv1ReservedCounter) HasStart() bool { - return obj.obj.Start != nil +// Transitive4OctetAsType returns a BgpExtendedCommunityTransitive4OctetAsType +func (obj *bgpExtendedCommunity) Transitive4OctetAsType() BgpExtendedCommunityTransitive4OctetAsType { + if obj.obj.Transitive_4OctetAsType == nil { + obj.SetChoice(BgpExtendedCommunityChoice.TRANSITIVE_4OCTET_AS_TYPE) + } + if obj.transitive_4OctetAsTypeHolder == nil { + obj.transitive_4OctetAsTypeHolder = &bgpExtendedCommunityTransitive4OctetAsType{obj: obj.obj.Transitive_4OctetAsType} + } + return obj.transitive_4OctetAsTypeHolder } // description is TBD -// SetStart sets the uint32 value in the PatternFlowGtpv1ReservedCounter object -func (obj *patternFlowGtpv1ReservedCounter) SetStart(value uint32) PatternFlowGtpv1ReservedCounter { +// Transitive4OctetAsType returns a BgpExtendedCommunityTransitive4OctetAsType +func (obj *bgpExtendedCommunity) HasTransitive4OctetAsType() bool { + return obj.obj.Transitive_4OctetAsType != nil +} + +// description is TBD +// SetTransitive4OctetAsType sets the BgpExtendedCommunityTransitive4OctetAsType value in the BgpExtendedCommunity object +func (obj *bgpExtendedCommunity) SetTransitive4OctetAsType(value BgpExtendedCommunityTransitive4OctetAsType) BgpExtendedCommunity { + obj.SetChoice(BgpExtendedCommunityChoice.TRANSITIVE_4OCTET_AS_TYPE) + obj.transitive_4OctetAsTypeHolder = nil + obj.obj.Transitive_4OctetAsType = value.Msg() - obj.obj.Start = &value return obj } // description is TBD -// Step returns a uint32 -func (obj *patternFlowGtpv1ReservedCounter) Step() uint32 { +// TransitiveOpaqueType returns a BgpExtendedCommunityTransitiveOpaqueType +func (obj *bgpExtendedCommunity) TransitiveOpaqueType() BgpExtendedCommunityTransitiveOpaqueType { + if obj.obj.TransitiveOpaqueType == nil { + obj.SetChoice(BgpExtendedCommunityChoice.TRANSITIVE_OPAQUE_TYPE) + } + if obj.transitiveOpaqueTypeHolder == nil { + obj.transitiveOpaqueTypeHolder = &bgpExtendedCommunityTransitiveOpaqueType{obj: obj.obj.TransitiveOpaqueType} + } + return obj.transitiveOpaqueTypeHolder +} - return *obj.obj.Step +// description is TBD +// TransitiveOpaqueType returns a BgpExtendedCommunityTransitiveOpaqueType +func (obj *bgpExtendedCommunity) HasTransitiveOpaqueType() bool { + return obj.obj.TransitiveOpaqueType != nil +} + +// description is TBD +// SetTransitiveOpaqueType sets the BgpExtendedCommunityTransitiveOpaqueType value in the BgpExtendedCommunity object +func (obj *bgpExtendedCommunity) SetTransitiveOpaqueType(value BgpExtendedCommunityTransitiveOpaqueType) BgpExtendedCommunity { + obj.SetChoice(BgpExtendedCommunityChoice.TRANSITIVE_OPAQUE_TYPE) + obj.transitiveOpaqueTypeHolder = nil + obj.obj.TransitiveOpaqueType = value.Msg() + return obj } // description is TBD -// Step returns a uint32 -func (obj *patternFlowGtpv1ReservedCounter) HasStep() bool { - return obj.obj.Step != nil +// TransitiveEvpnType returns a BgpExtendedCommunityTransitiveEvpnType +func (obj *bgpExtendedCommunity) TransitiveEvpnType() BgpExtendedCommunityTransitiveEvpnType { + if obj.obj.TransitiveEvpnType == nil { + obj.SetChoice(BgpExtendedCommunityChoice.TRANSITIVE_EVPN_TYPE) + } + if obj.transitiveEvpnTypeHolder == nil { + obj.transitiveEvpnTypeHolder = &bgpExtendedCommunityTransitiveEvpnType{obj: obj.obj.TransitiveEvpnType} + } + return obj.transitiveEvpnTypeHolder } // description is TBD -// SetStep sets the uint32 value in the PatternFlowGtpv1ReservedCounter object -func (obj *patternFlowGtpv1ReservedCounter) SetStep(value uint32) PatternFlowGtpv1ReservedCounter { +// TransitiveEvpnType returns a BgpExtendedCommunityTransitiveEvpnType +func (obj *bgpExtendedCommunity) HasTransitiveEvpnType() bool { + return obj.obj.TransitiveEvpnType != nil +} + +// description is TBD +// SetTransitiveEvpnType sets the BgpExtendedCommunityTransitiveEvpnType value in the BgpExtendedCommunity object +func (obj *bgpExtendedCommunity) SetTransitiveEvpnType(value BgpExtendedCommunityTransitiveEvpnType) BgpExtendedCommunity { + obj.SetChoice(BgpExtendedCommunityChoice.TRANSITIVE_EVPN_TYPE) + obj.transitiveEvpnTypeHolder = nil + obj.obj.TransitiveEvpnType = value.Msg() - obj.obj.Step = &value return obj } // description is TBD -// Count returns a uint32 -func (obj *patternFlowGtpv1ReservedCounter) Count() uint32 { +// NonTransitive2OctetAsType returns a BgpExtendedCommunityNonTransitive2OctetAsType +func (obj *bgpExtendedCommunity) NonTransitive2OctetAsType() BgpExtendedCommunityNonTransitive2OctetAsType { + if obj.obj.NonTransitive_2OctetAsType == nil { + obj.SetChoice(BgpExtendedCommunityChoice.NON_TRANSITIVE_2OCTET_AS_TYPE) + } + if obj.nonTransitive_2OctetAsTypeHolder == nil { + obj.nonTransitive_2OctetAsTypeHolder = &bgpExtendedCommunityNonTransitive2OctetAsType{obj: obj.obj.NonTransitive_2OctetAsType} + } + return obj.nonTransitive_2OctetAsTypeHolder +} - return *obj.obj.Count +// description is TBD +// NonTransitive2OctetAsType returns a BgpExtendedCommunityNonTransitive2OctetAsType +func (obj *bgpExtendedCommunity) HasNonTransitive2OctetAsType() bool { + return obj.obj.NonTransitive_2OctetAsType != nil +} + +// description is TBD +// SetNonTransitive2OctetAsType sets the BgpExtendedCommunityNonTransitive2OctetAsType value in the BgpExtendedCommunity object +func (obj *bgpExtendedCommunity) SetNonTransitive2OctetAsType(value BgpExtendedCommunityNonTransitive2OctetAsType) BgpExtendedCommunity { + obj.SetChoice(BgpExtendedCommunityChoice.NON_TRANSITIVE_2OCTET_AS_TYPE) + obj.nonTransitive_2OctetAsTypeHolder = nil + obj.obj.NonTransitive_2OctetAsType = value.Msg() + return obj } // description is TBD -// Count returns a uint32 -func (obj *patternFlowGtpv1ReservedCounter) HasCount() bool { - return obj.obj.Count != nil +// Custom returns a BgpExtendedCommunityCustomType +func (obj *bgpExtendedCommunity) Custom() BgpExtendedCommunityCustomType { + if obj.obj.Custom == nil { + obj.SetChoice(BgpExtendedCommunityChoice.CUSTOM) + } + if obj.customHolder == nil { + obj.customHolder = &bgpExtendedCommunityCustomType{obj: obj.obj.Custom} + } + return obj.customHolder } // description is TBD -// SetCount sets the uint32 value in the PatternFlowGtpv1ReservedCounter object -func (obj *patternFlowGtpv1ReservedCounter) SetCount(value uint32) PatternFlowGtpv1ReservedCounter { +// Custom returns a BgpExtendedCommunityCustomType +func (obj *bgpExtendedCommunity) HasCustom() bool { + return obj.obj.Custom != nil +} + +// description is TBD +// SetCustom sets the BgpExtendedCommunityCustomType value in the BgpExtendedCommunity object +func (obj *bgpExtendedCommunity) SetCustom(value BgpExtendedCommunityCustomType) BgpExtendedCommunity { + obj.SetChoice(BgpExtendedCommunityChoice.CUSTOM) + obj.customHolder = nil + obj.obj.Custom = value.Msg() - obj.obj.Count = &value return obj } -func (obj *patternFlowGtpv1ReservedCounter) validateObj(vObj *validation, set_default bool) { +func (obj *bgpExtendedCommunity) validateObj(vObj *validation, set_default bool) { if set_default { obj.setDefault() } - if obj.obj.Start != nil { - - if *obj.obj.Start > 1 { - vObj.validationErrors = append( - vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowGtpv1ReservedCounter.Start <= 1 but Got %d", *obj.obj.Start)) - } + if obj.obj.Transitive_2OctetAsType != nil { + obj.Transitive2OctetAsType().validateObj(vObj, set_default) } - if obj.obj.Step != nil { + if obj.obj.TransitiveIpv4AddressType != nil { - if *obj.obj.Step > 1 { - vObj.validationErrors = append( - vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowGtpv1ReservedCounter.Step <= 1 but Got %d", *obj.obj.Step)) - } + obj.TransitiveIpv4AddressType().validateObj(vObj, set_default) + } + + if obj.obj.Transitive_4OctetAsType != nil { + obj.Transitive4OctetAsType().validateObj(vObj, set_default) } - if obj.obj.Count != nil { + if obj.obj.TransitiveOpaqueType != nil { - if *obj.obj.Count > 1 { - vObj.validationErrors = append( - vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowGtpv1ReservedCounter.Count <= 1 but Got %d", *obj.obj.Count)) - } + obj.TransitiveOpaqueType().validateObj(vObj, set_default) + } + + if obj.obj.TransitiveEvpnType != nil { + obj.TransitiveEvpnType().validateObj(vObj, set_default) } -} + if obj.obj.NonTransitive_2OctetAsType != nil { -func (obj *patternFlowGtpv1ReservedCounter) setDefault() { - if obj.obj.Start == nil { - obj.SetStart(0) + obj.NonTransitive2OctetAsType().validateObj(vObj, set_default) } - if obj.obj.Step == nil { - obj.SetStep(1) + + if obj.obj.Custom != nil { + + obj.Custom().validateObj(vObj, set_default) } - if obj.obj.Count == nil { - obj.SetCount(1) + +} + +func (obj *bgpExtendedCommunity) setDefault() { + if obj.obj.Choice == nil { + obj.SetChoice(BgpExtendedCommunityChoice.TRANSITIVE_2OCTET_AS_TYPE) + } } -// ***** PatternFlowGtpv1ReservedMetricTag ***** -type patternFlowGtpv1ReservedMetricTag struct { +// ***** BgpSrteV4TunnelTlv ***** +type bgpSrteV4TunnelTlv struct { validation - obj *otg.PatternFlowGtpv1ReservedMetricTag + obj *otg.BgpSrteV4TunnelTlv + remoteEndpointSubTlvHolder BgpSrteRemoteEndpointSubTlv + colorSubTlvHolder BgpSrteColorSubTlv + bindingSubTlvHolder BgpSrteBindingSubTlv + preferenceSubTlvHolder BgpSrtePreferenceSubTlv + policyPrioritySubTlvHolder BgpSrtePolicyPrioritySubTlv + policyNameSubTlvHolder BgpSrtePolicyNameSubTlv + explicitNullLabelPolicySubTlvHolder BgpSrteExplicitNullLabelPolicySubTlv + segmentListsHolder BgpSrteV4TunnelTlvBgpSrteSegmentListIter } -func NewPatternFlowGtpv1ReservedMetricTag() PatternFlowGtpv1ReservedMetricTag { - obj := patternFlowGtpv1ReservedMetricTag{obj: &otg.PatternFlowGtpv1ReservedMetricTag{}} +func NewBgpSrteV4TunnelTlv() BgpSrteV4TunnelTlv { + obj := bgpSrteV4TunnelTlv{obj: &otg.BgpSrteV4TunnelTlv{}} obj.setDefault() return &obj } -func (obj *patternFlowGtpv1ReservedMetricTag) Msg() *otg.PatternFlowGtpv1ReservedMetricTag { +func (obj *bgpSrteV4TunnelTlv) Msg() *otg.BgpSrteV4TunnelTlv { return obj.obj } -func (obj *patternFlowGtpv1ReservedMetricTag) SetMsg(msg *otg.PatternFlowGtpv1ReservedMetricTag) PatternFlowGtpv1ReservedMetricTag { - +func (obj *bgpSrteV4TunnelTlv) SetMsg(msg *otg.BgpSrteV4TunnelTlv) BgpSrteV4TunnelTlv { + obj.setNil() proto.Merge(obj.obj, msg) return obj } -func (obj *patternFlowGtpv1ReservedMetricTag) ToProto() (*otg.PatternFlowGtpv1ReservedMetricTag, error) { +func (obj *bgpSrteV4TunnelTlv) ToProto() (*otg.BgpSrteV4TunnelTlv, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -238343,7 +283270,7 @@ func (obj *patternFlowGtpv1ReservedMetricTag) ToProto() (*otg.PatternFlowGtpv1Re return obj.Msg(), nil } -func (obj *patternFlowGtpv1ReservedMetricTag) FromProto(msg *otg.PatternFlowGtpv1ReservedMetricTag) (PatternFlowGtpv1ReservedMetricTag, error) { +func (obj *bgpSrteV4TunnelTlv) FromProto(msg *otg.BgpSrteV4TunnelTlv) (BgpSrteV4TunnelTlv, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -238352,7 +283279,7 @@ func (obj *patternFlowGtpv1ReservedMetricTag) FromProto(msg *otg.PatternFlowGtpv return newObj, nil } -func (obj *patternFlowGtpv1ReservedMetricTag) ToPbText() (string, error) { +func (obj *bgpSrteV4TunnelTlv) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -238364,12 +283291,12 @@ func (obj *patternFlowGtpv1ReservedMetricTag) ToPbText() (string, error) { return string(protoMarshal), nil } -func (obj *patternFlowGtpv1ReservedMetricTag) FromPbText(value string) error { +func (obj *bgpSrteV4TunnelTlv) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj } - + obj.setNil() vErr := obj.validateToAndFrom() if vErr != nil { return vErr @@ -238377,7 +283304,7 @@ func (obj *patternFlowGtpv1ReservedMetricTag) FromPbText(value string) error { return retObj } -func (obj *patternFlowGtpv1ReservedMetricTag) ToYaml() (string, error) { +func (obj *bgpSrteV4TunnelTlv) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -238398,7 +283325,7 @@ func (obj *patternFlowGtpv1ReservedMetricTag) ToYaml() (string, error) { return string(data), nil } -func (obj *patternFlowGtpv1ReservedMetricTag) FromYaml(value string) error { +func (obj *bgpSrteV4TunnelTlv) FromYaml(value string) error { if value == "" { value = "{}" } @@ -238415,7 +283342,7 @@ func (obj *patternFlowGtpv1ReservedMetricTag) FromYaml(value string) error { return fmt.Errorf("unmarshal error %s", strings.Replace( uError.Error(), "\u00a0", " ", -1)[7:]) } - + obj.setNil() vErr := obj.validateToAndFrom() if vErr != nil { return vErr @@ -238423,7 +283350,7 @@ func (obj *patternFlowGtpv1ReservedMetricTag) FromYaml(value string) error { return nil } -func (obj *patternFlowGtpv1ReservedMetricTag) ToJson() (string, error) { +func (obj *bgpSrteV4TunnelTlv) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -238441,7 +283368,7 @@ func (obj *patternFlowGtpv1ReservedMetricTag) ToJson() (string, error) { return string(data), nil } -func (obj *patternFlowGtpv1ReservedMetricTag) FromJson(value string) error { +func (obj *bgpSrteV4TunnelTlv) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -238454,7 +283381,7 @@ func (obj *patternFlowGtpv1ReservedMetricTag) FromJson(value string) error { return fmt.Errorf("unmarshal error %s", strings.Replace( uError.Error(), "\u00a0", " ", -1)[7:]) } - + obj.setNil() err := obj.validateToAndFrom() if err != nil { return err @@ -238462,19 +283389,19 @@ func (obj *patternFlowGtpv1ReservedMetricTag) FromJson(value string) error { return nil } -func (obj *patternFlowGtpv1ReservedMetricTag) validateToAndFrom() error { +func (obj *bgpSrteV4TunnelTlv) validateToAndFrom() error { // emptyVars() obj.validateObj(&obj.validation, true) return obj.validationResult() } -func (obj *patternFlowGtpv1ReservedMetricTag) Validate() error { +func (obj *bgpSrteV4TunnelTlv) Validate() error { // emptyVars() obj.validateObj(&obj.validation, false) return obj.validationResult() } -func (obj *patternFlowGtpv1ReservedMetricTag) String() string { +func (obj *bgpSrteV4TunnelTlv) String() string { str, err := obj.ToYaml() if err != nil { return err.Error() @@ -238482,12 +283409,12 @@ func (obj *patternFlowGtpv1ReservedMetricTag) String() string { return str } -func (obj *patternFlowGtpv1ReservedMetricTag) Clone() (PatternFlowGtpv1ReservedMetricTag, error) { +func (obj *bgpSrteV4TunnelTlv) Clone() (BgpSrteV4TunnelTlv, error) { vErr := obj.Validate() if vErr != nil { return nil, vErr } - newObj := NewPatternFlowGtpv1ReservedMetricTag() + newObj := NewBgpSrteV4TunnelTlv() data, err := proto.Marshal(obj.Msg()) if err != nil { return nil, err @@ -238499,539 +283426,544 @@ func (obj *patternFlowGtpv1ReservedMetricTag) Clone() (PatternFlowGtpv1ReservedM return newObj, nil } -// PatternFlowGtpv1ReservedMetricTag is metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. -type PatternFlowGtpv1ReservedMetricTag interface { +func (obj *bgpSrteV4TunnelTlv) setNil() { + obj.remoteEndpointSubTlvHolder = nil + obj.colorSubTlvHolder = nil + obj.bindingSubTlvHolder = nil + obj.preferenceSubTlvHolder = nil + obj.policyPrioritySubTlvHolder = nil + obj.policyNameSubTlvHolder = nil + obj.explicitNullLabelPolicySubTlvHolder = nil + obj.segmentListsHolder = nil + obj.validationErrors = nil + obj.warnings = nil + obj.constraints = make(map[string]map[string]Constraints) +} + +// BgpSrteV4TunnelTlv is configuration for BGP SRTE Tunnel TLV. +type BgpSrteV4TunnelTlv interface { Validation - // Msg marshals PatternFlowGtpv1ReservedMetricTag to protobuf object *otg.PatternFlowGtpv1ReservedMetricTag + // Msg marshals BgpSrteV4TunnelTlv to protobuf object *otg.BgpSrteV4TunnelTlv // and doesn't set defaults - Msg() *otg.PatternFlowGtpv1ReservedMetricTag - // SetMsg unmarshals PatternFlowGtpv1ReservedMetricTag from protobuf object *otg.PatternFlowGtpv1ReservedMetricTag + Msg() *otg.BgpSrteV4TunnelTlv + // SetMsg unmarshals BgpSrteV4TunnelTlv from protobuf object *otg.BgpSrteV4TunnelTlv // and doesn't set defaults - SetMsg(*otg.PatternFlowGtpv1ReservedMetricTag) PatternFlowGtpv1ReservedMetricTag - // ToProto marshals PatternFlowGtpv1ReservedMetricTag to protobuf object *otg.PatternFlowGtpv1ReservedMetricTag - ToProto() (*otg.PatternFlowGtpv1ReservedMetricTag, error) - // ToPbText marshals PatternFlowGtpv1ReservedMetricTag to protobuf text + SetMsg(*otg.BgpSrteV4TunnelTlv) BgpSrteV4TunnelTlv + // ToProto marshals BgpSrteV4TunnelTlv to protobuf object *otg.BgpSrteV4TunnelTlv + ToProto() (*otg.BgpSrteV4TunnelTlv, error) + // ToPbText marshals BgpSrteV4TunnelTlv to protobuf text ToPbText() (string, error) - // ToYaml marshals PatternFlowGtpv1ReservedMetricTag to YAML text + // ToYaml marshals BgpSrteV4TunnelTlv to YAML text ToYaml() (string, error) - // ToJson marshals PatternFlowGtpv1ReservedMetricTag to JSON text + // ToJson marshals BgpSrteV4TunnelTlv to JSON text ToJson() (string, error) - // FromProto unmarshals PatternFlowGtpv1ReservedMetricTag from protobuf object *otg.PatternFlowGtpv1ReservedMetricTag - FromProto(msg *otg.PatternFlowGtpv1ReservedMetricTag) (PatternFlowGtpv1ReservedMetricTag, error) - // FromPbText unmarshals PatternFlowGtpv1ReservedMetricTag from protobuf text + // FromProto unmarshals BgpSrteV4TunnelTlv from protobuf object *otg.BgpSrteV4TunnelTlv + FromProto(msg *otg.BgpSrteV4TunnelTlv) (BgpSrteV4TunnelTlv, error) + // FromPbText unmarshals BgpSrteV4TunnelTlv from protobuf text FromPbText(value string) error - // FromYaml unmarshals PatternFlowGtpv1ReservedMetricTag from YAML text + // FromYaml unmarshals BgpSrteV4TunnelTlv from YAML text FromYaml(value string) error - // FromJson unmarshals PatternFlowGtpv1ReservedMetricTag from JSON text + // FromJson unmarshals BgpSrteV4TunnelTlv from JSON text FromJson(value string) error - // Validate validates PatternFlowGtpv1ReservedMetricTag + // Validate validates BgpSrteV4TunnelTlv Validate() error // A stringer function String() string // Clones the object - Clone() (PatternFlowGtpv1ReservedMetricTag, error) + Clone() (BgpSrteV4TunnelTlv, error) validateToAndFrom() error validateObj(vObj *validation, set_default bool) setDefault() - // Name returns string, set in PatternFlowGtpv1ReservedMetricTag. + // RemoteEndpointSubTlv returns BgpSrteRemoteEndpointSubTlv, set in BgpSrteV4TunnelTlv. + // BgpSrteRemoteEndpointSubTlv is configuration for the BGP remote endpoint sub TLV. + RemoteEndpointSubTlv() BgpSrteRemoteEndpointSubTlv + // SetRemoteEndpointSubTlv assigns BgpSrteRemoteEndpointSubTlv provided by user to BgpSrteV4TunnelTlv. + // BgpSrteRemoteEndpointSubTlv is configuration for the BGP remote endpoint sub TLV. + SetRemoteEndpointSubTlv(value BgpSrteRemoteEndpointSubTlv) BgpSrteV4TunnelTlv + // HasRemoteEndpointSubTlv checks if RemoteEndpointSubTlv has been set in BgpSrteV4TunnelTlv + HasRemoteEndpointSubTlv() bool + // ColorSubTlv returns BgpSrteColorSubTlv, set in BgpSrteV4TunnelTlv. + // BgpSrteColorSubTlv is configuration for the Policy Color attribute sub-TLV. The Color sub-TLV MAY be used as a way to "color" the corresponding Tunnel TLV. The Value field of the sub-TLV is eight octets long and consists of a Color Extended Community. First two octets of its Value field are 0x030b as type and subtype of extended community. Remaining six octets are are exposed to configure. + ColorSubTlv() BgpSrteColorSubTlv + // SetColorSubTlv assigns BgpSrteColorSubTlv provided by user to BgpSrteV4TunnelTlv. + // BgpSrteColorSubTlv is configuration for the Policy Color attribute sub-TLV. The Color sub-TLV MAY be used as a way to "color" the corresponding Tunnel TLV. The Value field of the sub-TLV is eight octets long and consists of a Color Extended Community. First two octets of its Value field are 0x030b as type and subtype of extended community. Remaining six octets are are exposed to configure. + SetColorSubTlv(value BgpSrteColorSubTlv) BgpSrteV4TunnelTlv + // HasColorSubTlv checks if ColorSubTlv has been set in BgpSrteV4TunnelTlv + HasColorSubTlv() bool + // BindingSubTlv returns BgpSrteBindingSubTlv, set in BgpSrteV4TunnelTlv. + // BgpSrteBindingSubTlv is configuration for the binding SID sub-TLV. This is used to signal the binding SID related information of the SR Policy candidate path. + BindingSubTlv() BgpSrteBindingSubTlv + // SetBindingSubTlv assigns BgpSrteBindingSubTlv provided by user to BgpSrteV4TunnelTlv. + // BgpSrteBindingSubTlv is configuration for the binding SID sub-TLV. This is used to signal the binding SID related information of the SR Policy candidate path. + SetBindingSubTlv(value BgpSrteBindingSubTlv) BgpSrteV4TunnelTlv + // HasBindingSubTlv checks if BindingSubTlv has been set in BgpSrteV4TunnelTlv + HasBindingSubTlv() bool + // PreferenceSubTlv returns BgpSrtePreferenceSubTlv, set in BgpSrteV4TunnelTlv. + // BgpSrtePreferenceSubTlv is configuration for BGP preference sub TLV of the SR Policy candidate path. + PreferenceSubTlv() BgpSrtePreferenceSubTlv + // SetPreferenceSubTlv assigns BgpSrtePreferenceSubTlv provided by user to BgpSrteV4TunnelTlv. + // BgpSrtePreferenceSubTlv is configuration for BGP preference sub TLV of the SR Policy candidate path. + SetPreferenceSubTlv(value BgpSrtePreferenceSubTlv) BgpSrteV4TunnelTlv + // HasPreferenceSubTlv checks if PreferenceSubTlv has been set in BgpSrteV4TunnelTlv + HasPreferenceSubTlv() bool + // PolicyPrioritySubTlv returns BgpSrtePolicyPrioritySubTlv, set in BgpSrteV4TunnelTlv. + // BgpSrtePolicyPrioritySubTlv is configuration for the Policy Priority sub-TLV. The Policy Priority to indicate the order in which the SR policies are re-computed upon topological change. + PolicyPrioritySubTlv() BgpSrtePolicyPrioritySubTlv + // SetPolicyPrioritySubTlv assigns BgpSrtePolicyPrioritySubTlv provided by user to BgpSrteV4TunnelTlv. + // BgpSrtePolicyPrioritySubTlv is configuration for the Policy Priority sub-TLV. The Policy Priority to indicate the order in which the SR policies are re-computed upon topological change. + SetPolicyPrioritySubTlv(value BgpSrtePolicyPrioritySubTlv) BgpSrteV4TunnelTlv + // HasPolicyPrioritySubTlv checks if PolicyPrioritySubTlv has been set in BgpSrteV4TunnelTlv + HasPolicyPrioritySubTlv() bool + // PolicyNameSubTlv returns BgpSrtePolicyNameSubTlv, set in BgpSrteV4TunnelTlv. + // BgpSrtePolicyNameSubTlv is configuration for the Policy Name sub-TLV. The Policy Name sub-TLV is used to attach a symbolic name to the SR Policy candidate path. + PolicyNameSubTlv() BgpSrtePolicyNameSubTlv + // SetPolicyNameSubTlv assigns BgpSrtePolicyNameSubTlv provided by user to BgpSrteV4TunnelTlv. + // BgpSrtePolicyNameSubTlv is configuration for the Policy Name sub-TLV. The Policy Name sub-TLV is used to attach a symbolic name to the SR Policy candidate path. + SetPolicyNameSubTlv(value BgpSrtePolicyNameSubTlv) BgpSrteV4TunnelTlv + // HasPolicyNameSubTlv checks if PolicyNameSubTlv has been set in BgpSrteV4TunnelTlv + HasPolicyNameSubTlv() bool + // ExplicitNullLabelPolicySubTlv returns BgpSrteExplicitNullLabelPolicySubTlv, set in BgpSrteV4TunnelTlv. + // BgpSrteExplicitNullLabelPolicySubTlv is configuration for BGP explicit null label policy sub TLV settings. + ExplicitNullLabelPolicySubTlv() BgpSrteExplicitNullLabelPolicySubTlv + // SetExplicitNullLabelPolicySubTlv assigns BgpSrteExplicitNullLabelPolicySubTlv provided by user to BgpSrteV4TunnelTlv. + // BgpSrteExplicitNullLabelPolicySubTlv is configuration for BGP explicit null label policy sub TLV settings. + SetExplicitNullLabelPolicySubTlv(value BgpSrteExplicitNullLabelPolicySubTlv) BgpSrteV4TunnelTlv + // HasExplicitNullLabelPolicySubTlv checks if ExplicitNullLabelPolicySubTlv has been set in BgpSrteV4TunnelTlv + HasExplicitNullLabelPolicySubTlv() bool + // SegmentLists returns BgpSrteV4TunnelTlvBgpSrteSegmentListIterIter, set in BgpSrteV4TunnelTlv + SegmentLists() BgpSrteV4TunnelTlvBgpSrteSegmentListIter + // Name returns string, set in BgpSrteV4TunnelTlv. Name() string - // SetName assigns string provided by user to PatternFlowGtpv1ReservedMetricTag - SetName(value string) PatternFlowGtpv1ReservedMetricTag - // Offset returns uint32, set in PatternFlowGtpv1ReservedMetricTag. - Offset() uint32 - // SetOffset assigns uint32 provided by user to PatternFlowGtpv1ReservedMetricTag - SetOffset(value uint32) PatternFlowGtpv1ReservedMetricTag - // HasOffset checks if Offset has been set in PatternFlowGtpv1ReservedMetricTag - HasOffset() bool - // Length returns uint32, set in PatternFlowGtpv1ReservedMetricTag. - Length() uint32 - // SetLength assigns uint32 provided by user to PatternFlowGtpv1ReservedMetricTag - SetLength(value uint32) PatternFlowGtpv1ReservedMetricTag - // HasLength checks if Length has been set in PatternFlowGtpv1ReservedMetricTag - HasLength() bool + // SetName assigns string provided by user to BgpSrteV4TunnelTlv + SetName(value string) BgpSrteV4TunnelTlv + // Active returns bool, set in BgpSrteV4TunnelTlv. + Active() bool + // SetActive assigns bool provided by user to BgpSrteV4TunnelTlv + SetActive(value bool) BgpSrteV4TunnelTlv + // HasActive checks if Active has been set in BgpSrteV4TunnelTlv + HasActive() bool + setNil() } -// Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field -// Name returns a string -func (obj *patternFlowGtpv1ReservedMetricTag) Name() string { - - return *obj.obj.Name +// description is TBD +// RemoteEndpointSubTlv returns a BgpSrteRemoteEndpointSubTlv +func (obj *bgpSrteV4TunnelTlv) RemoteEndpointSubTlv() BgpSrteRemoteEndpointSubTlv { + if obj.obj.RemoteEndpointSubTlv == nil { + obj.obj.RemoteEndpointSubTlv = NewBgpSrteRemoteEndpointSubTlv().Msg() + } + if obj.remoteEndpointSubTlvHolder == nil { + obj.remoteEndpointSubTlvHolder = &bgpSrteRemoteEndpointSubTlv{obj: obj.obj.RemoteEndpointSubTlv} + } + return obj.remoteEndpointSubTlvHolder +} +// description is TBD +// RemoteEndpointSubTlv returns a BgpSrteRemoteEndpointSubTlv +func (obj *bgpSrteV4TunnelTlv) HasRemoteEndpointSubTlv() bool { + return obj.obj.RemoteEndpointSubTlv != nil } -// Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field -// SetName sets the string value in the PatternFlowGtpv1ReservedMetricTag object -func (obj *patternFlowGtpv1ReservedMetricTag) SetName(value string) PatternFlowGtpv1ReservedMetricTag { +// description is TBD +// SetRemoteEndpointSubTlv sets the BgpSrteRemoteEndpointSubTlv value in the BgpSrteV4TunnelTlv object +func (obj *bgpSrteV4TunnelTlv) SetRemoteEndpointSubTlv(value BgpSrteRemoteEndpointSubTlv) BgpSrteV4TunnelTlv { + + obj.remoteEndpointSubTlvHolder = nil + obj.obj.RemoteEndpointSubTlv = value.Msg() - obj.obj.Name = &value return obj } -// Offset in bits relative to start of corresponding header field -// Offset returns a uint32 -func (obj *patternFlowGtpv1ReservedMetricTag) Offset() uint32 { - - return *obj.obj.Offset - +// description is TBD +// ColorSubTlv returns a BgpSrteColorSubTlv +func (obj *bgpSrteV4TunnelTlv) ColorSubTlv() BgpSrteColorSubTlv { + if obj.obj.ColorSubTlv == nil { + obj.obj.ColorSubTlv = NewBgpSrteColorSubTlv().Msg() + } + if obj.colorSubTlvHolder == nil { + obj.colorSubTlvHolder = &bgpSrteColorSubTlv{obj: obj.obj.ColorSubTlv} + } + return obj.colorSubTlvHolder } -// Offset in bits relative to start of corresponding header field -// Offset returns a uint32 -func (obj *patternFlowGtpv1ReservedMetricTag) HasOffset() bool { - return obj.obj.Offset != nil +// description is TBD +// ColorSubTlv returns a BgpSrteColorSubTlv +func (obj *bgpSrteV4TunnelTlv) HasColorSubTlv() bool { + return obj.obj.ColorSubTlv != nil } -// Offset in bits relative to start of corresponding header field -// SetOffset sets the uint32 value in the PatternFlowGtpv1ReservedMetricTag object -func (obj *patternFlowGtpv1ReservedMetricTag) SetOffset(value uint32) PatternFlowGtpv1ReservedMetricTag { +// description is TBD +// SetColorSubTlv sets the BgpSrteColorSubTlv value in the BgpSrteV4TunnelTlv object +func (obj *bgpSrteV4TunnelTlv) SetColorSubTlv(value BgpSrteColorSubTlv) BgpSrteV4TunnelTlv { + + obj.colorSubTlvHolder = nil + obj.obj.ColorSubTlv = value.Msg() - obj.obj.Offset = &value return obj } -// Number of bits to track for metrics starting from configured offset of corresponding header field -// Length returns a uint32 -func (obj *patternFlowGtpv1ReservedMetricTag) Length() uint32 { - - return *obj.obj.Length - +// description is TBD +// BindingSubTlv returns a BgpSrteBindingSubTlv +func (obj *bgpSrteV4TunnelTlv) BindingSubTlv() BgpSrteBindingSubTlv { + if obj.obj.BindingSubTlv == nil { + obj.obj.BindingSubTlv = NewBgpSrteBindingSubTlv().Msg() + } + if obj.bindingSubTlvHolder == nil { + obj.bindingSubTlvHolder = &bgpSrteBindingSubTlv{obj: obj.obj.BindingSubTlv} + } + return obj.bindingSubTlvHolder } -// Number of bits to track for metrics starting from configured offset of corresponding header field -// Length returns a uint32 -func (obj *patternFlowGtpv1ReservedMetricTag) HasLength() bool { - return obj.obj.Length != nil +// description is TBD +// BindingSubTlv returns a BgpSrteBindingSubTlv +func (obj *bgpSrteV4TunnelTlv) HasBindingSubTlv() bool { + return obj.obj.BindingSubTlv != nil } -// Number of bits to track for metrics starting from configured offset of corresponding header field -// SetLength sets the uint32 value in the PatternFlowGtpv1ReservedMetricTag object -func (obj *patternFlowGtpv1ReservedMetricTag) SetLength(value uint32) PatternFlowGtpv1ReservedMetricTag { +// description is TBD +// SetBindingSubTlv sets the BgpSrteBindingSubTlv value in the BgpSrteV4TunnelTlv object +func (obj *bgpSrteV4TunnelTlv) SetBindingSubTlv(value BgpSrteBindingSubTlv) BgpSrteV4TunnelTlv { + + obj.bindingSubTlvHolder = nil + obj.obj.BindingSubTlv = value.Msg() - obj.obj.Length = &value return obj } -func (obj *patternFlowGtpv1ReservedMetricTag) validateObj(vObj *validation, set_default bool) { - if set_default { - obj.setDefault() - } - - // Name is required - if obj.obj.Name == nil { - vObj.validationErrors = append(vObj.validationErrors, "Name is required field on interface PatternFlowGtpv1ReservedMetricTag") +// description is TBD +// PreferenceSubTlv returns a BgpSrtePreferenceSubTlv +func (obj *bgpSrteV4TunnelTlv) PreferenceSubTlv() BgpSrtePreferenceSubTlv { + if obj.obj.PreferenceSubTlv == nil { + obj.obj.PreferenceSubTlv = NewBgpSrtePreferenceSubTlv().Msg() } - - if obj.obj.Offset != nil { - - if *obj.obj.Offset > 0 { - vObj.validationErrors = append( - vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowGtpv1ReservedMetricTag.Offset <= 0 but Got %d", *obj.obj.Offset)) - } - + if obj.preferenceSubTlvHolder == nil { + obj.preferenceSubTlvHolder = &bgpSrtePreferenceSubTlv{obj: obj.obj.PreferenceSubTlv} } + return obj.preferenceSubTlvHolder +} - if obj.obj.Length != nil { +// description is TBD +// PreferenceSubTlv returns a BgpSrtePreferenceSubTlv +func (obj *bgpSrteV4TunnelTlv) HasPreferenceSubTlv() bool { + return obj.obj.PreferenceSubTlv != nil +} - if *obj.obj.Length < 1 || *obj.obj.Length > 1 { - vObj.validationErrors = append( - vObj.validationErrors, - fmt.Sprintf("1 <= PatternFlowGtpv1ReservedMetricTag.Length <= 1 but Got %d", *obj.obj.Length)) - } +// description is TBD +// SetPreferenceSubTlv sets the BgpSrtePreferenceSubTlv value in the BgpSrteV4TunnelTlv object +func (obj *bgpSrteV4TunnelTlv) SetPreferenceSubTlv(value BgpSrtePreferenceSubTlv) BgpSrteV4TunnelTlv { - } + obj.preferenceSubTlvHolder = nil + obj.obj.PreferenceSubTlv = value.Msg() + return obj } -func (obj *patternFlowGtpv1ReservedMetricTag) setDefault() { - if obj.obj.Offset == nil { - obj.SetOffset(0) +// description is TBD +// PolicyPrioritySubTlv returns a BgpSrtePolicyPrioritySubTlv +func (obj *bgpSrteV4TunnelTlv) PolicyPrioritySubTlv() BgpSrtePolicyPrioritySubTlv { + if obj.obj.PolicyPrioritySubTlv == nil { + obj.obj.PolicyPrioritySubTlv = NewBgpSrtePolicyPrioritySubTlv().Msg() } - if obj.obj.Length == nil { - obj.SetLength(1) + if obj.policyPrioritySubTlvHolder == nil { + obj.policyPrioritySubTlvHolder = &bgpSrtePolicyPrioritySubTlv{obj: obj.obj.PolicyPrioritySubTlv} } + return obj.policyPrioritySubTlvHolder +} +// description is TBD +// PolicyPrioritySubTlv returns a BgpSrtePolicyPrioritySubTlv +func (obj *bgpSrteV4TunnelTlv) HasPolicyPrioritySubTlv() bool { + return obj.obj.PolicyPrioritySubTlv != nil } -// ***** PatternFlowGtpv1EFlagCounter ***** -type patternFlowGtpv1EFlagCounter struct { - validation - obj *otg.PatternFlowGtpv1EFlagCounter +// description is TBD +// SetPolicyPrioritySubTlv sets the BgpSrtePolicyPrioritySubTlv value in the BgpSrteV4TunnelTlv object +func (obj *bgpSrteV4TunnelTlv) SetPolicyPrioritySubTlv(value BgpSrtePolicyPrioritySubTlv) BgpSrteV4TunnelTlv { + + obj.policyPrioritySubTlvHolder = nil + obj.obj.PolicyPrioritySubTlv = value.Msg() + + return obj } -func NewPatternFlowGtpv1EFlagCounter() PatternFlowGtpv1EFlagCounter { - obj := patternFlowGtpv1EFlagCounter{obj: &otg.PatternFlowGtpv1EFlagCounter{}} - obj.setDefault() - return &obj +// description is TBD +// PolicyNameSubTlv returns a BgpSrtePolicyNameSubTlv +func (obj *bgpSrteV4TunnelTlv) PolicyNameSubTlv() BgpSrtePolicyNameSubTlv { + if obj.obj.PolicyNameSubTlv == nil { + obj.obj.PolicyNameSubTlv = NewBgpSrtePolicyNameSubTlv().Msg() + } + if obj.policyNameSubTlvHolder == nil { + obj.policyNameSubTlvHolder = &bgpSrtePolicyNameSubTlv{obj: obj.obj.PolicyNameSubTlv} + } + return obj.policyNameSubTlvHolder } -func (obj *patternFlowGtpv1EFlagCounter) Msg() *otg.PatternFlowGtpv1EFlagCounter { - return obj.obj +// description is TBD +// PolicyNameSubTlv returns a BgpSrtePolicyNameSubTlv +func (obj *bgpSrteV4TunnelTlv) HasPolicyNameSubTlv() bool { + return obj.obj.PolicyNameSubTlv != nil } -func (obj *patternFlowGtpv1EFlagCounter) SetMsg(msg *otg.PatternFlowGtpv1EFlagCounter) PatternFlowGtpv1EFlagCounter { +// description is TBD +// SetPolicyNameSubTlv sets the BgpSrtePolicyNameSubTlv value in the BgpSrteV4TunnelTlv object +func (obj *bgpSrteV4TunnelTlv) SetPolicyNameSubTlv(value BgpSrtePolicyNameSubTlv) BgpSrteV4TunnelTlv { + + obj.policyNameSubTlvHolder = nil + obj.obj.PolicyNameSubTlv = value.Msg() - proto.Merge(obj.obj, msg) return obj } -func (obj *patternFlowGtpv1EFlagCounter) ToProto() (*otg.PatternFlowGtpv1EFlagCounter, error) { - err := obj.validateToAndFrom() - if err != nil { - return nil, err +// description is TBD +// ExplicitNullLabelPolicySubTlv returns a BgpSrteExplicitNullLabelPolicySubTlv +func (obj *bgpSrteV4TunnelTlv) ExplicitNullLabelPolicySubTlv() BgpSrteExplicitNullLabelPolicySubTlv { + if obj.obj.ExplicitNullLabelPolicySubTlv == nil { + obj.obj.ExplicitNullLabelPolicySubTlv = NewBgpSrteExplicitNullLabelPolicySubTlv().Msg() } - return obj.Msg(), nil -} - -func (obj *patternFlowGtpv1EFlagCounter) FromProto(msg *otg.PatternFlowGtpv1EFlagCounter) (PatternFlowGtpv1EFlagCounter, error) { - newObj := obj.SetMsg(msg) - err := newObj.validateToAndFrom() - if err != nil { - return nil, err + if obj.explicitNullLabelPolicySubTlvHolder == nil { + obj.explicitNullLabelPolicySubTlvHolder = &bgpSrteExplicitNullLabelPolicySubTlv{obj: obj.obj.ExplicitNullLabelPolicySubTlv} } - return newObj, nil + return obj.explicitNullLabelPolicySubTlvHolder } -func (obj *patternFlowGtpv1EFlagCounter) ToPbText() (string, error) { - vErr := obj.validateToAndFrom() - if vErr != nil { - return "", vErr - } - protoMarshal, err := proto.Marshal(obj.Msg()) - if err != nil { - return "", err - } - return string(protoMarshal), nil +// description is TBD +// ExplicitNullLabelPolicySubTlv returns a BgpSrteExplicitNullLabelPolicySubTlv +func (obj *bgpSrteV4TunnelTlv) HasExplicitNullLabelPolicySubTlv() bool { + return obj.obj.ExplicitNullLabelPolicySubTlv != nil } -func (obj *patternFlowGtpv1EFlagCounter) FromPbText(value string) error { - retObj := proto.Unmarshal([]byte(value), obj.Msg()) - if retObj != nil { - return retObj - } +// description is TBD +// SetExplicitNullLabelPolicySubTlv sets the BgpSrteExplicitNullLabelPolicySubTlv value in the BgpSrteV4TunnelTlv object +func (obj *bgpSrteV4TunnelTlv) SetExplicitNullLabelPolicySubTlv(value BgpSrteExplicitNullLabelPolicySubTlv) BgpSrteV4TunnelTlv { - vErr := obj.validateToAndFrom() - if vErr != nil { - return vErr - } - return retObj -} + obj.explicitNullLabelPolicySubTlvHolder = nil + obj.obj.ExplicitNullLabelPolicySubTlv = value.Msg() -func (obj *patternFlowGtpv1EFlagCounter) ToYaml() (string, error) { - vErr := obj.validateToAndFrom() - if vErr != nil { - return "", vErr - } - opts := protojson.MarshalOptions{ - UseProtoNames: true, - AllowPartial: true, - EmitUnpopulated: false, - } - data, err := opts.Marshal(obj.Msg()) - if err != nil { - return "", err - } - data, err = yaml.JSONToYAML(data) - if err != nil { - return "", err - } - return string(data), nil + return obj } -func (obj *patternFlowGtpv1EFlagCounter) FromYaml(value string) error { - if value == "" { - value = "{}" - } - data, err := yaml.YAMLToJSON([]byte(value)) - if err != nil { - return err - } - opts := protojson.UnmarshalOptions{ - AllowPartial: true, - DiscardUnknown: false, +// description is TBD +// SegmentLists returns a []BgpSrteSegmentList +func (obj *bgpSrteV4TunnelTlv) SegmentLists() BgpSrteV4TunnelTlvBgpSrteSegmentListIter { + if len(obj.obj.SegmentLists) == 0 { + obj.obj.SegmentLists = []*otg.BgpSrteSegmentList{} } - uError := opts.Unmarshal([]byte(data), obj.Msg()) - if uError != nil { - return fmt.Errorf("unmarshal error %s", strings.Replace( - uError.Error(), "\u00a0", " ", -1)[7:]) + if obj.segmentListsHolder == nil { + obj.segmentListsHolder = newBgpSrteV4TunnelTlvBgpSrteSegmentListIter(&obj.obj.SegmentLists).setMsg(obj) } + return obj.segmentListsHolder +} - vErr := obj.validateToAndFrom() - if vErr != nil { - return vErr - } - return nil +type bgpSrteV4TunnelTlvBgpSrteSegmentListIter struct { + obj *bgpSrteV4TunnelTlv + bgpSrteSegmentListSlice []BgpSrteSegmentList + fieldPtr *[]*otg.BgpSrteSegmentList } -func (obj *patternFlowGtpv1EFlagCounter) ToJson() (string, error) { - vErr := obj.validateToAndFrom() - if vErr != nil { - return "", vErr - } - opts := protojson.MarshalOptions{ - UseProtoNames: true, - AllowPartial: true, - EmitUnpopulated: false, - Indent: " ", - } - data, err := opts.Marshal(obj.Msg()) - if err != nil { - return "", err - } - return string(data), nil +func newBgpSrteV4TunnelTlvBgpSrteSegmentListIter(ptr *[]*otg.BgpSrteSegmentList) BgpSrteV4TunnelTlvBgpSrteSegmentListIter { + return &bgpSrteV4TunnelTlvBgpSrteSegmentListIter{fieldPtr: ptr} } -func (obj *patternFlowGtpv1EFlagCounter) FromJson(value string) error { - opts := protojson.UnmarshalOptions{ - AllowPartial: true, - DiscardUnknown: false, - } - if value == "" { - value = "{}" - } - uError := opts.Unmarshal([]byte(value), obj.Msg()) - if uError != nil { - return fmt.Errorf("unmarshal error %s", strings.Replace( - uError.Error(), "\u00a0", " ", -1)[7:]) - } +type BgpSrteV4TunnelTlvBgpSrteSegmentListIter interface { + setMsg(*bgpSrteV4TunnelTlv) BgpSrteV4TunnelTlvBgpSrteSegmentListIter + Items() []BgpSrteSegmentList + Add() BgpSrteSegmentList + Append(items ...BgpSrteSegmentList) BgpSrteV4TunnelTlvBgpSrteSegmentListIter + Set(index int, newObj BgpSrteSegmentList) BgpSrteV4TunnelTlvBgpSrteSegmentListIter + Clear() BgpSrteV4TunnelTlvBgpSrteSegmentListIter + clearHolderSlice() BgpSrteV4TunnelTlvBgpSrteSegmentListIter + appendHolderSlice(item BgpSrteSegmentList) BgpSrteV4TunnelTlvBgpSrteSegmentListIter +} - err := obj.validateToAndFrom() - if err != nil { - return err +func (obj *bgpSrteV4TunnelTlvBgpSrteSegmentListIter) setMsg(msg *bgpSrteV4TunnelTlv) BgpSrteV4TunnelTlvBgpSrteSegmentListIter { + obj.clearHolderSlice() + for _, val := range *obj.fieldPtr { + obj.appendHolderSlice(&bgpSrteSegmentList{obj: val}) } - return nil + obj.obj = msg + return obj } -func (obj *patternFlowGtpv1EFlagCounter) validateToAndFrom() error { - // emptyVars() - obj.validateObj(&obj.validation, true) - return obj.validationResult() +func (obj *bgpSrteV4TunnelTlvBgpSrteSegmentListIter) Items() []BgpSrteSegmentList { + return obj.bgpSrteSegmentListSlice } -func (obj *patternFlowGtpv1EFlagCounter) Validate() error { - // emptyVars() - obj.validateObj(&obj.validation, false) - return obj.validationResult() +func (obj *bgpSrteV4TunnelTlvBgpSrteSegmentListIter) Add() BgpSrteSegmentList { + newObj := &otg.BgpSrteSegmentList{} + *obj.fieldPtr = append(*obj.fieldPtr, newObj) + newLibObj := &bgpSrteSegmentList{obj: newObj} + newLibObj.setDefault() + obj.bgpSrteSegmentListSlice = append(obj.bgpSrteSegmentListSlice, newLibObj) + return newLibObj } -func (obj *patternFlowGtpv1EFlagCounter) String() string { - str, err := obj.ToYaml() - if err != nil { - return err.Error() +func (obj *bgpSrteV4TunnelTlvBgpSrteSegmentListIter) Append(items ...BgpSrteSegmentList) BgpSrteV4TunnelTlvBgpSrteSegmentListIter { + for _, item := range items { + newObj := item.Msg() + *obj.fieldPtr = append(*obj.fieldPtr, newObj) + obj.bgpSrteSegmentListSlice = append(obj.bgpSrteSegmentListSlice, item) } - return str + return obj } -func (obj *patternFlowGtpv1EFlagCounter) Clone() (PatternFlowGtpv1EFlagCounter, error) { - vErr := obj.Validate() - if vErr != nil { - return nil, vErr - } - newObj := NewPatternFlowGtpv1EFlagCounter() - data, err := proto.Marshal(obj.Msg()) - if err != nil { - return nil, err +func (obj *bgpSrteV4TunnelTlvBgpSrteSegmentListIter) Set(index int, newObj BgpSrteSegmentList) BgpSrteV4TunnelTlvBgpSrteSegmentListIter { + (*obj.fieldPtr)[index] = newObj.Msg() + obj.bgpSrteSegmentListSlice[index] = newObj + return obj +} +func (obj *bgpSrteV4TunnelTlvBgpSrteSegmentListIter) Clear() BgpSrteV4TunnelTlvBgpSrteSegmentListIter { + if len(*obj.fieldPtr) > 0 { + *obj.fieldPtr = []*otg.BgpSrteSegmentList{} + obj.bgpSrteSegmentListSlice = []BgpSrteSegmentList{} } - pbErr := proto.Unmarshal(data, newObj.Msg()) - if pbErr != nil { - return nil, pbErr + return obj +} +func (obj *bgpSrteV4TunnelTlvBgpSrteSegmentListIter) clearHolderSlice() BgpSrteV4TunnelTlvBgpSrteSegmentListIter { + if len(obj.bgpSrteSegmentListSlice) > 0 { + obj.bgpSrteSegmentListSlice = []BgpSrteSegmentList{} } - return newObj, nil + return obj } - -// PatternFlowGtpv1EFlagCounter is integer counter pattern -type PatternFlowGtpv1EFlagCounter interface { - Validation - // Msg marshals PatternFlowGtpv1EFlagCounter to protobuf object *otg.PatternFlowGtpv1EFlagCounter - // and doesn't set defaults - Msg() *otg.PatternFlowGtpv1EFlagCounter - // SetMsg unmarshals PatternFlowGtpv1EFlagCounter from protobuf object *otg.PatternFlowGtpv1EFlagCounter - // and doesn't set defaults - SetMsg(*otg.PatternFlowGtpv1EFlagCounter) PatternFlowGtpv1EFlagCounter - // ToProto marshals PatternFlowGtpv1EFlagCounter to protobuf object *otg.PatternFlowGtpv1EFlagCounter - ToProto() (*otg.PatternFlowGtpv1EFlagCounter, error) - // ToPbText marshals PatternFlowGtpv1EFlagCounter to protobuf text - ToPbText() (string, error) - // ToYaml marshals PatternFlowGtpv1EFlagCounter to YAML text - ToYaml() (string, error) - // ToJson marshals PatternFlowGtpv1EFlagCounter to JSON text - ToJson() (string, error) - // FromProto unmarshals PatternFlowGtpv1EFlagCounter from protobuf object *otg.PatternFlowGtpv1EFlagCounter - FromProto(msg *otg.PatternFlowGtpv1EFlagCounter) (PatternFlowGtpv1EFlagCounter, error) - // FromPbText unmarshals PatternFlowGtpv1EFlagCounter from protobuf text - FromPbText(value string) error - // FromYaml unmarshals PatternFlowGtpv1EFlagCounter from YAML text - FromYaml(value string) error - // FromJson unmarshals PatternFlowGtpv1EFlagCounter from JSON text - FromJson(value string) error - // Validate validates PatternFlowGtpv1EFlagCounter - Validate() error - // A stringer function - String() string - // Clones the object - Clone() (PatternFlowGtpv1EFlagCounter, error) - validateToAndFrom() error - validateObj(vObj *validation, set_default bool) - setDefault() - // Start returns uint32, set in PatternFlowGtpv1EFlagCounter. - Start() uint32 - // SetStart assigns uint32 provided by user to PatternFlowGtpv1EFlagCounter - SetStart(value uint32) PatternFlowGtpv1EFlagCounter - // HasStart checks if Start has been set in PatternFlowGtpv1EFlagCounter - HasStart() bool - // Step returns uint32, set in PatternFlowGtpv1EFlagCounter. - Step() uint32 - // SetStep assigns uint32 provided by user to PatternFlowGtpv1EFlagCounter - SetStep(value uint32) PatternFlowGtpv1EFlagCounter - // HasStep checks if Step has been set in PatternFlowGtpv1EFlagCounter - HasStep() bool - // Count returns uint32, set in PatternFlowGtpv1EFlagCounter. - Count() uint32 - // SetCount assigns uint32 provided by user to PatternFlowGtpv1EFlagCounter - SetCount(value uint32) PatternFlowGtpv1EFlagCounter - // HasCount checks if Count has been set in PatternFlowGtpv1EFlagCounter - HasCount() bool +func (obj *bgpSrteV4TunnelTlvBgpSrteSegmentListIter) appendHolderSlice(item BgpSrteSegmentList) BgpSrteV4TunnelTlvBgpSrteSegmentListIter { + obj.bgpSrteSegmentListSlice = append(obj.bgpSrteSegmentListSlice, item) + return obj } -// description is TBD -// Start returns a uint32 -func (obj *patternFlowGtpv1EFlagCounter) Start() uint32 { - - return *obj.obj.Start +// Globally unique name of an object. It also serves as the primary key for arrays of objects. +// Name returns a string +func (obj *bgpSrteV4TunnelTlv) Name() string { -} + return *obj.obj.Name -// description is TBD -// Start returns a uint32 -func (obj *patternFlowGtpv1EFlagCounter) HasStart() bool { - return obj.obj.Start != nil } -// description is TBD -// SetStart sets the uint32 value in the PatternFlowGtpv1EFlagCounter object -func (obj *patternFlowGtpv1EFlagCounter) SetStart(value uint32) PatternFlowGtpv1EFlagCounter { +// Globally unique name of an object. It also serves as the primary key for arrays of objects. +// SetName sets the string value in the BgpSrteV4TunnelTlv object +func (obj *bgpSrteV4TunnelTlv) SetName(value string) BgpSrteV4TunnelTlv { - obj.obj.Start = &value + obj.obj.Name = &value return obj } -// description is TBD -// Step returns a uint32 -func (obj *patternFlowGtpv1EFlagCounter) Step() uint32 { +// If enabled means that this part of the configuration including any active 'children' nodes will be advertised to peer. If disabled, this means that though config is present, it is not taking any part of the test but can be activated at run-time to advertise just this part of the configuration to the peer. +// Active returns a bool +func (obj *bgpSrteV4TunnelTlv) Active() bool { - return *obj.obj.Step + return *obj.obj.Active } -// description is TBD -// Step returns a uint32 -func (obj *patternFlowGtpv1EFlagCounter) HasStep() bool { - return obj.obj.Step != nil +// If enabled means that this part of the configuration including any active 'children' nodes will be advertised to peer. If disabled, this means that though config is present, it is not taking any part of the test but can be activated at run-time to advertise just this part of the configuration to the peer. +// Active returns a bool +func (obj *bgpSrteV4TunnelTlv) HasActive() bool { + return obj.obj.Active != nil } -// description is TBD -// SetStep sets the uint32 value in the PatternFlowGtpv1EFlagCounter object -func (obj *patternFlowGtpv1EFlagCounter) SetStep(value uint32) PatternFlowGtpv1EFlagCounter { +// If enabled means that this part of the configuration including any active 'children' nodes will be advertised to peer. If disabled, this means that though config is present, it is not taking any part of the test but can be activated at run-time to advertise just this part of the configuration to the peer. +// SetActive sets the bool value in the BgpSrteV4TunnelTlv object +func (obj *bgpSrteV4TunnelTlv) SetActive(value bool) BgpSrteV4TunnelTlv { - obj.obj.Step = &value + obj.obj.Active = &value return obj } -// description is TBD -// Count returns a uint32 -func (obj *patternFlowGtpv1EFlagCounter) Count() uint32 { +func (obj *bgpSrteV4TunnelTlv) validateObj(vObj *validation, set_default bool) { + if set_default { + obj.setDefault() + } - return *obj.obj.Count + if obj.obj.RemoteEndpointSubTlv != nil { -} + obj.RemoteEndpointSubTlv().validateObj(vObj, set_default) + } -// description is TBD -// Count returns a uint32 -func (obj *patternFlowGtpv1EFlagCounter) HasCount() bool { - return obj.obj.Count != nil -} + if obj.obj.ColorSubTlv != nil { -// description is TBD -// SetCount sets the uint32 value in the PatternFlowGtpv1EFlagCounter object -func (obj *patternFlowGtpv1EFlagCounter) SetCount(value uint32) PatternFlowGtpv1EFlagCounter { + obj.ColorSubTlv().validateObj(vObj, set_default) + } - obj.obj.Count = &value - return obj -} + if obj.obj.BindingSubTlv != nil { -func (obj *patternFlowGtpv1EFlagCounter) validateObj(vObj *validation, set_default bool) { - if set_default { - obj.setDefault() + obj.BindingSubTlv().validateObj(vObj, set_default) } - if obj.obj.Start != nil { + if obj.obj.PreferenceSubTlv != nil { - if *obj.obj.Start > 1 { - vObj.validationErrors = append( - vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowGtpv1EFlagCounter.Start <= 1 but Got %d", *obj.obj.Start)) - } + obj.PreferenceSubTlv().validateObj(vObj, set_default) + } + + if obj.obj.PolicyPrioritySubTlv != nil { + obj.PolicyPrioritySubTlv().validateObj(vObj, set_default) } - if obj.obj.Step != nil { + if obj.obj.PolicyNameSubTlv != nil { - if *obj.obj.Step > 1 { - vObj.validationErrors = append( - vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowGtpv1EFlagCounter.Step <= 1 but Got %d", *obj.obj.Step)) - } + obj.PolicyNameSubTlv().validateObj(vObj, set_default) + } + + if obj.obj.ExplicitNullLabelPolicySubTlv != nil { + obj.ExplicitNullLabelPolicySubTlv().validateObj(vObj, set_default) } - if obj.obj.Count != nil { + if len(obj.obj.SegmentLists) != 0 { - if *obj.obj.Count > 1 { - vObj.validationErrors = append( - vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowGtpv1EFlagCounter.Count <= 1 but Got %d", *obj.obj.Count)) + if set_default { + obj.SegmentLists().clearHolderSlice() + for _, item := range obj.obj.SegmentLists { + obj.SegmentLists().appendHolderSlice(&bgpSrteSegmentList{obj: item}) + } + } + for _, item := range obj.SegmentLists().Items() { + item.validateObj(vObj, set_default) } } + // Name is required + if obj.obj.Name == nil { + vObj.validationErrors = append(vObj.validationErrors, "Name is required field on interface BgpSrteV4TunnelTlv") + } } -func (obj *patternFlowGtpv1EFlagCounter) setDefault() { - if obj.obj.Start == nil { - obj.SetStart(0) - } - if obj.obj.Step == nil { - obj.SetStep(1) - } - if obj.obj.Count == nil { - obj.SetCount(1) +func (obj *bgpSrteV4TunnelTlv) setDefault() { + if obj.obj.Active == nil { + obj.SetActive(true) } } -// ***** PatternFlowGtpv1EFlagMetricTag ***** -type patternFlowGtpv1EFlagMetricTag struct { +// ***** BgpSrteV6TunnelTlv ***** +type bgpSrteV6TunnelTlv struct { validation - obj *otg.PatternFlowGtpv1EFlagMetricTag + obj *otg.BgpSrteV6TunnelTlv + remoteEndpointSubTlvHolder BgpSrteRemoteEndpointSubTlv + colorSubTlvHolder BgpSrteColorSubTlv + bindingSubTlvHolder BgpSrteBindingSubTlv + preferenceSubTlvHolder BgpSrtePreferenceSubTlv + policyPrioritySubTlvHolder BgpSrtePolicyPrioritySubTlv + policyNameSubTlvHolder BgpSrtePolicyNameSubTlv + explicitNullLabelPolicySubTlvHolder BgpSrteExplicitNullLabelPolicySubTlv + segmentListsHolder BgpSrteV6TunnelTlvBgpSrteSegmentListIter } -func NewPatternFlowGtpv1EFlagMetricTag() PatternFlowGtpv1EFlagMetricTag { - obj := patternFlowGtpv1EFlagMetricTag{obj: &otg.PatternFlowGtpv1EFlagMetricTag{}} +func NewBgpSrteV6TunnelTlv() BgpSrteV6TunnelTlv { + obj := bgpSrteV6TunnelTlv{obj: &otg.BgpSrteV6TunnelTlv{}} obj.setDefault() return &obj } -func (obj *patternFlowGtpv1EFlagMetricTag) Msg() *otg.PatternFlowGtpv1EFlagMetricTag { +func (obj *bgpSrteV6TunnelTlv) Msg() *otg.BgpSrteV6TunnelTlv { return obj.obj } -func (obj *patternFlowGtpv1EFlagMetricTag) SetMsg(msg *otg.PatternFlowGtpv1EFlagMetricTag) PatternFlowGtpv1EFlagMetricTag { - +func (obj *bgpSrteV6TunnelTlv) SetMsg(msg *otg.BgpSrteV6TunnelTlv) BgpSrteV6TunnelTlv { + obj.setNil() proto.Merge(obj.obj, msg) return obj } -func (obj *patternFlowGtpv1EFlagMetricTag) ToProto() (*otg.PatternFlowGtpv1EFlagMetricTag, error) { +func (obj *bgpSrteV6TunnelTlv) ToProto() (*otg.BgpSrteV6TunnelTlv, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -239039,7 +283971,7 @@ func (obj *patternFlowGtpv1EFlagMetricTag) ToProto() (*otg.PatternFlowGtpv1EFlag return obj.Msg(), nil } -func (obj *patternFlowGtpv1EFlagMetricTag) FromProto(msg *otg.PatternFlowGtpv1EFlagMetricTag) (PatternFlowGtpv1EFlagMetricTag, error) { +func (obj *bgpSrteV6TunnelTlv) FromProto(msg *otg.BgpSrteV6TunnelTlv) (BgpSrteV6TunnelTlv, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -239048,7 +283980,7 @@ func (obj *patternFlowGtpv1EFlagMetricTag) FromProto(msg *otg.PatternFlowGtpv1EF return newObj, nil } -func (obj *patternFlowGtpv1EFlagMetricTag) ToPbText() (string, error) { +func (obj *bgpSrteV6TunnelTlv) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -239060,12 +283992,12 @@ func (obj *patternFlowGtpv1EFlagMetricTag) ToPbText() (string, error) { return string(protoMarshal), nil } -func (obj *patternFlowGtpv1EFlagMetricTag) FromPbText(value string) error { +func (obj *bgpSrteV6TunnelTlv) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj } - + obj.setNil() vErr := obj.validateToAndFrom() if vErr != nil { return vErr @@ -239073,7 +284005,7 @@ func (obj *patternFlowGtpv1EFlagMetricTag) FromPbText(value string) error { return retObj } -func (obj *patternFlowGtpv1EFlagMetricTag) ToYaml() (string, error) { +func (obj *bgpSrteV6TunnelTlv) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -239094,7 +284026,7 @@ func (obj *patternFlowGtpv1EFlagMetricTag) ToYaml() (string, error) { return string(data), nil } -func (obj *patternFlowGtpv1EFlagMetricTag) FromYaml(value string) error { +func (obj *bgpSrteV6TunnelTlv) FromYaml(value string) error { if value == "" { value = "{}" } @@ -239111,7 +284043,7 @@ func (obj *patternFlowGtpv1EFlagMetricTag) FromYaml(value string) error { return fmt.Errorf("unmarshal error %s", strings.Replace( uError.Error(), "\u00a0", " ", -1)[7:]) } - + obj.setNil() vErr := obj.validateToAndFrom() if vErr != nil { return vErr @@ -239119,7 +284051,7 @@ func (obj *patternFlowGtpv1EFlagMetricTag) FromYaml(value string) error { return nil } -func (obj *patternFlowGtpv1EFlagMetricTag) ToJson() (string, error) { +func (obj *bgpSrteV6TunnelTlv) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -239137,7 +284069,7 @@ func (obj *patternFlowGtpv1EFlagMetricTag) ToJson() (string, error) { return string(data), nil } -func (obj *patternFlowGtpv1EFlagMetricTag) FromJson(value string) error { +func (obj *bgpSrteV6TunnelTlv) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -239150,7 +284082,7 @@ func (obj *patternFlowGtpv1EFlagMetricTag) FromJson(value string) error { return fmt.Errorf("unmarshal error %s", strings.Replace( uError.Error(), "\u00a0", " ", -1)[7:]) } - + obj.setNil() err := obj.validateToAndFrom() if err != nil { return err @@ -239158,19 +284090,19 @@ func (obj *patternFlowGtpv1EFlagMetricTag) FromJson(value string) error { return nil } -func (obj *patternFlowGtpv1EFlagMetricTag) validateToAndFrom() error { +func (obj *bgpSrteV6TunnelTlv) validateToAndFrom() error { // emptyVars() obj.validateObj(&obj.validation, true) return obj.validationResult() } -func (obj *patternFlowGtpv1EFlagMetricTag) Validate() error { +func (obj *bgpSrteV6TunnelTlv) Validate() error { // emptyVars() obj.validateObj(&obj.validation, false) return obj.validationResult() } -func (obj *patternFlowGtpv1EFlagMetricTag) String() string { +func (obj *bgpSrteV6TunnelTlv) String() string { str, err := obj.ToYaml() if err != nil { return err.Error() @@ -239178,12 +284110,12 @@ func (obj *patternFlowGtpv1EFlagMetricTag) String() string { return str } -func (obj *patternFlowGtpv1EFlagMetricTag) Clone() (PatternFlowGtpv1EFlagMetricTag, error) { +func (obj *bgpSrteV6TunnelTlv) Clone() (BgpSrteV6TunnelTlv, error) { vErr := obj.Validate() if vErr != nil { return nil, vErr } - newObj := NewPatternFlowGtpv1EFlagMetricTag() + newObj := NewBgpSrteV6TunnelTlv() data, err := proto.Marshal(obj.Msg()) if err != nil { return nil, err @@ -239195,539 +284127,537 @@ func (obj *patternFlowGtpv1EFlagMetricTag) Clone() (PatternFlowGtpv1EFlagMetricT return newObj, nil } -// PatternFlowGtpv1EFlagMetricTag is metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. -type PatternFlowGtpv1EFlagMetricTag interface { +func (obj *bgpSrteV6TunnelTlv) setNil() { + obj.remoteEndpointSubTlvHolder = nil + obj.colorSubTlvHolder = nil + obj.bindingSubTlvHolder = nil + obj.preferenceSubTlvHolder = nil + obj.policyPrioritySubTlvHolder = nil + obj.policyNameSubTlvHolder = nil + obj.explicitNullLabelPolicySubTlvHolder = nil + obj.segmentListsHolder = nil + obj.validationErrors = nil + obj.warnings = nil + obj.constraints = make(map[string]map[string]Constraints) +} + +// BgpSrteV6TunnelTlv is configuration for BGP SRTE Tunnel TLV. +type BgpSrteV6TunnelTlv interface { Validation - // Msg marshals PatternFlowGtpv1EFlagMetricTag to protobuf object *otg.PatternFlowGtpv1EFlagMetricTag + // Msg marshals BgpSrteV6TunnelTlv to protobuf object *otg.BgpSrteV6TunnelTlv // and doesn't set defaults - Msg() *otg.PatternFlowGtpv1EFlagMetricTag - // SetMsg unmarshals PatternFlowGtpv1EFlagMetricTag from protobuf object *otg.PatternFlowGtpv1EFlagMetricTag + Msg() *otg.BgpSrteV6TunnelTlv + // SetMsg unmarshals BgpSrteV6TunnelTlv from protobuf object *otg.BgpSrteV6TunnelTlv // and doesn't set defaults - SetMsg(*otg.PatternFlowGtpv1EFlagMetricTag) PatternFlowGtpv1EFlagMetricTag - // ToProto marshals PatternFlowGtpv1EFlagMetricTag to protobuf object *otg.PatternFlowGtpv1EFlagMetricTag - ToProto() (*otg.PatternFlowGtpv1EFlagMetricTag, error) - // ToPbText marshals PatternFlowGtpv1EFlagMetricTag to protobuf text + SetMsg(*otg.BgpSrteV6TunnelTlv) BgpSrteV6TunnelTlv + // ToProto marshals BgpSrteV6TunnelTlv to protobuf object *otg.BgpSrteV6TunnelTlv + ToProto() (*otg.BgpSrteV6TunnelTlv, error) + // ToPbText marshals BgpSrteV6TunnelTlv to protobuf text ToPbText() (string, error) - // ToYaml marshals PatternFlowGtpv1EFlagMetricTag to YAML text + // ToYaml marshals BgpSrteV6TunnelTlv to YAML text ToYaml() (string, error) - // ToJson marshals PatternFlowGtpv1EFlagMetricTag to JSON text + // ToJson marshals BgpSrteV6TunnelTlv to JSON text ToJson() (string, error) - // FromProto unmarshals PatternFlowGtpv1EFlagMetricTag from protobuf object *otg.PatternFlowGtpv1EFlagMetricTag - FromProto(msg *otg.PatternFlowGtpv1EFlagMetricTag) (PatternFlowGtpv1EFlagMetricTag, error) - // FromPbText unmarshals PatternFlowGtpv1EFlagMetricTag from protobuf text + // FromProto unmarshals BgpSrteV6TunnelTlv from protobuf object *otg.BgpSrteV6TunnelTlv + FromProto(msg *otg.BgpSrteV6TunnelTlv) (BgpSrteV6TunnelTlv, error) + // FromPbText unmarshals BgpSrteV6TunnelTlv from protobuf text FromPbText(value string) error - // FromYaml unmarshals PatternFlowGtpv1EFlagMetricTag from YAML text + // FromYaml unmarshals BgpSrteV6TunnelTlv from YAML text FromYaml(value string) error - // FromJson unmarshals PatternFlowGtpv1EFlagMetricTag from JSON text + // FromJson unmarshals BgpSrteV6TunnelTlv from JSON text FromJson(value string) error - // Validate validates PatternFlowGtpv1EFlagMetricTag + // Validate validates BgpSrteV6TunnelTlv Validate() error // A stringer function String() string // Clones the object - Clone() (PatternFlowGtpv1EFlagMetricTag, error) + Clone() (BgpSrteV6TunnelTlv, error) validateToAndFrom() error validateObj(vObj *validation, set_default bool) setDefault() - // Name returns string, set in PatternFlowGtpv1EFlagMetricTag. + // RemoteEndpointSubTlv returns BgpSrteRemoteEndpointSubTlv, set in BgpSrteV6TunnelTlv. + // BgpSrteRemoteEndpointSubTlv is configuration for the BGP remote endpoint sub TLV. + RemoteEndpointSubTlv() BgpSrteRemoteEndpointSubTlv + // SetRemoteEndpointSubTlv assigns BgpSrteRemoteEndpointSubTlv provided by user to BgpSrteV6TunnelTlv. + // BgpSrteRemoteEndpointSubTlv is configuration for the BGP remote endpoint sub TLV. + SetRemoteEndpointSubTlv(value BgpSrteRemoteEndpointSubTlv) BgpSrteV6TunnelTlv + // HasRemoteEndpointSubTlv checks if RemoteEndpointSubTlv has been set in BgpSrteV6TunnelTlv + HasRemoteEndpointSubTlv() bool + // ColorSubTlv returns BgpSrteColorSubTlv, set in BgpSrteV6TunnelTlv. + // BgpSrteColorSubTlv is configuration for the Policy Color attribute sub-TLV. The Color sub-TLV MAY be used as a way to "color" the corresponding Tunnel TLV. The Value field of the sub-TLV is eight octets long and consists of a Color Extended Community. First two octets of its Value field are 0x030b as type and subtype of extended community. Remaining six octets are are exposed to configure. + ColorSubTlv() BgpSrteColorSubTlv + // SetColorSubTlv assigns BgpSrteColorSubTlv provided by user to BgpSrteV6TunnelTlv. + // BgpSrteColorSubTlv is configuration for the Policy Color attribute sub-TLV. The Color sub-TLV MAY be used as a way to "color" the corresponding Tunnel TLV. The Value field of the sub-TLV is eight octets long and consists of a Color Extended Community. First two octets of its Value field are 0x030b as type and subtype of extended community. Remaining six octets are are exposed to configure. + SetColorSubTlv(value BgpSrteColorSubTlv) BgpSrteV6TunnelTlv + // HasColorSubTlv checks if ColorSubTlv has been set in BgpSrteV6TunnelTlv + HasColorSubTlv() bool + // BindingSubTlv returns BgpSrteBindingSubTlv, set in BgpSrteV6TunnelTlv. + // BgpSrteBindingSubTlv is configuration for the binding SID sub-TLV. This is used to signal the binding SID related information of the SR Policy candidate path. + BindingSubTlv() BgpSrteBindingSubTlv + // SetBindingSubTlv assigns BgpSrteBindingSubTlv provided by user to BgpSrteV6TunnelTlv. + // BgpSrteBindingSubTlv is configuration for the binding SID sub-TLV. This is used to signal the binding SID related information of the SR Policy candidate path. + SetBindingSubTlv(value BgpSrteBindingSubTlv) BgpSrteV6TunnelTlv + // HasBindingSubTlv checks if BindingSubTlv has been set in BgpSrteV6TunnelTlv + HasBindingSubTlv() bool + // PreferenceSubTlv returns BgpSrtePreferenceSubTlv, set in BgpSrteV6TunnelTlv. + // BgpSrtePreferenceSubTlv is configuration for BGP preference sub TLV of the SR Policy candidate path. + PreferenceSubTlv() BgpSrtePreferenceSubTlv + // SetPreferenceSubTlv assigns BgpSrtePreferenceSubTlv provided by user to BgpSrteV6TunnelTlv. + // BgpSrtePreferenceSubTlv is configuration for BGP preference sub TLV of the SR Policy candidate path. + SetPreferenceSubTlv(value BgpSrtePreferenceSubTlv) BgpSrteV6TunnelTlv + // HasPreferenceSubTlv checks if PreferenceSubTlv has been set in BgpSrteV6TunnelTlv + HasPreferenceSubTlv() bool + // PolicyPrioritySubTlv returns BgpSrtePolicyPrioritySubTlv, set in BgpSrteV6TunnelTlv. + // BgpSrtePolicyPrioritySubTlv is configuration for the Policy Priority sub-TLV. The Policy Priority to indicate the order in which the SR policies are re-computed upon topological change. + PolicyPrioritySubTlv() BgpSrtePolicyPrioritySubTlv + // SetPolicyPrioritySubTlv assigns BgpSrtePolicyPrioritySubTlv provided by user to BgpSrteV6TunnelTlv. + // BgpSrtePolicyPrioritySubTlv is configuration for the Policy Priority sub-TLV. The Policy Priority to indicate the order in which the SR policies are re-computed upon topological change. + SetPolicyPrioritySubTlv(value BgpSrtePolicyPrioritySubTlv) BgpSrteV6TunnelTlv + // HasPolicyPrioritySubTlv checks if PolicyPrioritySubTlv has been set in BgpSrteV6TunnelTlv + HasPolicyPrioritySubTlv() bool + // PolicyNameSubTlv returns BgpSrtePolicyNameSubTlv, set in BgpSrteV6TunnelTlv. + // BgpSrtePolicyNameSubTlv is configuration for the Policy Name sub-TLV. The Policy Name sub-TLV is used to attach a symbolic name to the SR Policy candidate path. + PolicyNameSubTlv() BgpSrtePolicyNameSubTlv + // SetPolicyNameSubTlv assigns BgpSrtePolicyNameSubTlv provided by user to BgpSrteV6TunnelTlv. + // BgpSrtePolicyNameSubTlv is configuration for the Policy Name sub-TLV. The Policy Name sub-TLV is used to attach a symbolic name to the SR Policy candidate path. + SetPolicyNameSubTlv(value BgpSrtePolicyNameSubTlv) BgpSrteV6TunnelTlv + // HasPolicyNameSubTlv checks if PolicyNameSubTlv has been set in BgpSrteV6TunnelTlv + HasPolicyNameSubTlv() bool + // ExplicitNullLabelPolicySubTlv returns BgpSrteExplicitNullLabelPolicySubTlv, set in BgpSrteV6TunnelTlv. + // BgpSrteExplicitNullLabelPolicySubTlv is configuration for BGP explicit null label policy sub TLV settings. + ExplicitNullLabelPolicySubTlv() BgpSrteExplicitNullLabelPolicySubTlv + // SetExplicitNullLabelPolicySubTlv assigns BgpSrteExplicitNullLabelPolicySubTlv provided by user to BgpSrteV6TunnelTlv. + // BgpSrteExplicitNullLabelPolicySubTlv is configuration for BGP explicit null label policy sub TLV settings. + SetExplicitNullLabelPolicySubTlv(value BgpSrteExplicitNullLabelPolicySubTlv) BgpSrteV6TunnelTlv + // HasExplicitNullLabelPolicySubTlv checks if ExplicitNullLabelPolicySubTlv has been set in BgpSrteV6TunnelTlv + HasExplicitNullLabelPolicySubTlv() bool + // SegmentLists returns BgpSrteV6TunnelTlvBgpSrteSegmentListIterIter, set in BgpSrteV6TunnelTlv + SegmentLists() BgpSrteV6TunnelTlvBgpSrteSegmentListIter + // Name returns string, set in BgpSrteV6TunnelTlv. Name() string - // SetName assigns string provided by user to PatternFlowGtpv1EFlagMetricTag - SetName(value string) PatternFlowGtpv1EFlagMetricTag - // Offset returns uint32, set in PatternFlowGtpv1EFlagMetricTag. - Offset() uint32 - // SetOffset assigns uint32 provided by user to PatternFlowGtpv1EFlagMetricTag - SetOffset(value uint32) PatternFlowGtpv1EFlagMetricTag - // HasOffset checks if Offset has been set in PatternFlowGtpv1EFlagMetricTag - HasOffset() bool - // Length returns uint32, set in PatternFlowGtpv1EFlagMetricTag. - Length() uint32 - // SetLength assigns uint32 provided by user to PatternFlowGtpv1EFlagMetricTag - SetLength(value uint32) PatternFlowGtpv1EFlagMetricTag - // HasLength checks if Length has been set in PatternFlowGtpv1EFlagMetricTag - HasLength() bool + // SetName assigns string provided by user to BgpSrteV6TunnelTlv + SetName(value string) BgpSrteV6TunnelTlv + // Active returns bool, set in BgpSrteV6TunnelTlv. + Active() bool + // SetActive assigns bool provided by user to BgpSrteV6TunnelTlv + SetActive(value bool) BgpSrteV6TunnelTlv + // HasActive checks if Active has been set in BgpSrteV6TunnelTlv + HasActive() bool + setNil() } -// Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field -// Name returns a string -func (obj *patternFlowGtpv1EFlagMetricTag) Name() string { - - return *obj.obj.Name +// description is TBD +// RemoteEndpointSubTlv returns a BgpSrteRemoteEndpointSubTlv +func (obj *bgpSrteV6TunnelTlv) RemoteEndpointSubTlv() BgpSrteRemoteEndpointSubTlv { + if obj.obj.RemoteEndpointSubTlv == nil { + obj.obj.RemoteEndpointSubTlv = NewBgpSrteRemoteEndpointSubTlv().Msg() + } + if obj.remoteEndpointSubTlvHolder == nil { + obj.remoteEndpointSubTlvHolder = &bgpSrteRemoteEndpointSubTlv{obj: obj.obj.RemoteEndpointSubTlv} + } + return obj.remoteEndpointSubTlvHolder +} +// description is TBD +// RemoteEndpointSubTlv returns a BgpSrteRemoteEndpointSubTlv +func (obj *bgpSrteV6TunnelTlv) HasRemoteEndpointSubTlv() bool { + return obj.obj.RemoteEndpointSubTlv != nil } -// Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field -// SetName sets the string value in the PatternFlowGtpv1EFlagMetricTag object -func (obj *patternFlowGtpv1EFlagMetricTag) SetName(value string) PatternFlowGtpv1EFlagMetricTag { +// description is TBD +// SetRemoteEndpointSubTlv sets the BgpSrteRemoteEndpointSubTlv value in the BgpSrteV6TunnelTlv object +func (obj *bgpSrteV6TunnelTlv) SetRemoteEndpointSubTlv(value BgpSrteRemoteEndpointSubTlv) BgpSrteV6TunnelTlv { + + obj.remoteEndpointSubTlvHolder = nil + obj.obj.RemoteEndpointSubTlv = value.Msg() - obj.obj.Name = &value return obj } -// Offset in bits relative to start of corresponding header field -// Offset returns a uint32 -func (obj *patternFlowGtpv1EFlagMetricTag) Offset() uint32 { - - return *obj.obj.Offset - +// description is TBD +// ColorSubTlv returns a BgpSrteColorSubTlv +func (obj *bgpSrteV6TunnelTlv) ColorSubTlv() BgpSrteColorSubTlv { + if obj.obj.ColorSubTlv == nil { + obj.obj.ColorSubTlv = NewBgpSrteColorSubTlv().Msg() + } + if obj.colorSubTlvHolder == nil { + obj.colorSubTlvHolder = &bgpSrteColorSubTlv{obj: obj.obj.ColorSubTlv} + } + return obj.colorSubTlvHolder } -// Offset in bits relative to start of corresponding header field -// Offset returns a uint32 -func (obj *patternFlowGtpv1EFlagMetricTag) HasOffset() bool { - return obj.obj.Offset != nil +// description is TBD +// ColorSubTlv returns a BgpSrteColorSubTlv +func (obj *bgpSrteV6TunnelTlv) HasColorSubTlv() bool { + return obj.obj.ColorSubTlv != nil } -// Offset in bits relative to start of corresponding header field -// SetOffset sets the uint32 value in the PatternFlowGtpv1EFlagMetricTag object -func (obj *patternFlowGtpv1EFlagMetricTag) SetOffset(value uint32) PatternFlowGtpv1EFlagMetricTag { +// description is TBD +// SetColorSubTlv sets the BgpSrteColorSubTlv value in the BgpSrteV6TunnelTlv object +func (obj *bgpSrteV6TunnelTlv) SetColorSubTlv(value BgpSrteColorSubTlv) BgpSrteV6TunnelTlv { + + obj.colorSubTlvHolder = nil + obj.obj.ColorSubTlv = value.Msg() - obj.obj.Offset = &value return obj } -// Number of bits to track for metrics starting from configured offset of corresponding header field -// Length returns a uint32 -func (obj *patternFlowGtpv1EFlagMetricTag) Length() uint32 { - - return *obj.obj.Length - +// description is TBD +// BindingSubTlv returns a BgpSrteBindingSubTlv +func (obj *bgpSrteV6TunnelTlv) BindingSubTlv() BgpSrteBindingSubTlv { + if obj.obj.BindingSubTlv == nil { + obj.obj.BindingSubTlv = NewBgpSrteBindingSubTlv().Msg() + } + if obj.bindingSubTlvHolder == nil { + obj.bindingSubTlvHolder = &bgpSrteBindingSubTlv{obj: obj.obj.BindingSubTlv} + } + return obj.bindingSubTlvHolder } -// Number of bits to track for metrics starting from configured offset of corresponding header field -// Length returns a uint32 -func (obj *patternFlowGtpv1EFlagMetricTag) HasLength() bool { - return obj.obj.Length != nil +// description is TBD +// BindingSubTlv returns a BgpSrteBindingSubTlv +func (obj *bgpSrteV6TunnelTlv) HasBindingSubTlv() bool { + return obj.obj.BindingSubTlv != nil } -// Number of bits to track for metrics starting from configured offset of corresponding header field -// SetLength sets the uint32 value in the PatternFlowGtpv1EFlagMetricTag object -func (obj *patternFlowGtpv1EFlagMetricTag) SetLength(value uint32) PatternFlowGtpv1EFlagMetricTag { +// description is TBD +// SetBindingSubTlv sets the BgpSrteBindingSubTlv value in the BgpSrteV6TunnelTlv object +func (obj *bgpSrteV6TunnelTlv) SetBindingSubTlv(value BgpSrteBindingSubTlv) BgpSrteV6TunnelTlv { + + obj.bindingSubTlvHolder = nil + obj.obj.BindingSubTlv = value.Msg() - obj.obj.Length = &value return obj } -func (obj *patternFlowGtpv1EFlagMetricTag) validateObj(vObj *validation, set_default bool) { - if set_default { - obj.setDefault() - } - - // Name is required - if obj.obj.Name == nil { - vObj.validationErrors = append(vObj.validationErrors, "Name is required field on interface PatternFlowGtpv1EFlagMetricTag") +// description is TBD +// PreferenceSubTlv returns a BgpSrtePreferenceSubTlv +func (obj *bgpSrteV6TunnelTlv) PreferenceSubTlv() BgpSrtePreferenceSubTlv { + if obj.obj.PreferenceSubTlv == nil { + obj.obj.PreferenceSubTlv = NewBgpSrtePreferenceSubTlv().Msg() } - - if obj.obj.Offset != nil { - - if *obj.obj.Offset > 0 { - vObj.validationErrors = append( - vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowGtpv1EFlagMetricTag.Offset <= 0 but Got %d", *obj.obj.Offset)) - } - + if obj.preferenceSubTlvHolder == nil { + obj.preferenceSubTlvHolder = &bgpSrtePreferenceSubTlv{obj: obj.obj.PreferenceSubTlv} } + return obj.preferenceSubTlvHolder +} - if obj.obj.Length != nil { +// description is TBD +// PreferenceSubTlv returns a BgpSrtePreferenceSubTlv +func (obj *bgpSrteV6TunnelTlv) HasPreferenceSubTlv() bool { + return obj.obj.PreferenceSubTlv != nil +} - if *obj.obj.Length < 1 || *obj.obj.Length > 1 { - vObj.validationErrors = append( - vObj.validationErrors, - fmt.Sprintf("1 <= PatternFlowGtpv1EFlagMetricTag.Length <= 1 but Got %d", *obj.obj.Length)) - } +// description is TBD +// SetPreferenceSubTlv sets the BgpSrtePreferenceSubTlv value in the BgpSrteV6TunnelTlv object +func (obj *bgpSrteV6TunnelTlv) SetPreferenceSubTlv(value BgpSrtePreferenceSubTlv) BgpSrteV6TunnelTlv { - } + obj.preferenceSubTlvHolder = nil + obj.obj.PreferenceSubTlv = value.Msg() + return obj } -func (obj *patternFlowGtpv1EFlagMetricTag) setDefault() { - if obj.obj.Offset == nil { - obj.SetOffset(0) +// description is TBD +// PolicyPrioritySubTlv returns a BgpSrtePolicyPrioritySubTlv +func (obj *bgpSrteV6TunnelTlv) PolicyPrioritySubTlv() BgpSrtePolicyPrioritySubTlv { + if obj.obj.PolicyPrioritySubTlv == nil { + obj.obj.PolicyPrioritySubTlv = NewBgpSrtePolicyPrioritySubTlv().Msg() } - if obj.obj.Length == nil { - obj.SetLength(1) + if obj.policyPrioritySubTlvHolder == nil { + obj.policyPrioritySubTlvHolder = &bgpSrtePolicyPrioritySubTlv{obj: obj.obj.PolicyPrioritySubTlv} } + return obj.policyPrioritySubTlvHolder +} +// description is TBD +// PolicyPrioritySubTlv returns a BgpSrtePolicyPrioritySubTlv +func (obj *bgpSrteV6TunnelTlv) HasPolicyPrioritySubTlv() bool { + return obj.obj.PolicyPrioritySubTlv != nil } -// ***** PatternFlowGtpv1SFlagCounter ***** -type patternFlowGtpv1SFlagCounter struct { - validation - obj *otg.PatternFlowGtpv1SFlagCounter +// description is TBD +// SetPolicyPrioritySubTlv sets the BgpSrtePolicyPrioritySubTlv value in the BgpSrteV6TunnelTlv object +func (obj *bgpSrteV6TunnelTlv) SetPolicyPrioritySubTlv(value BgpSrtePolicyPrioritySubTlv) BgpSrteV6TunnelTlv { + + obj.policyPrioritySubTlvHolder = nil + obj.obj.PolicyPrioritySubTlv = value.Msg() + + return obj } -func NewPatternFlowGtpv1SFlagCounter() PatternFlowGtpv1SFlagCounter { - obj := patternFlowGtpv1SFlagCounter{obj: &otg.PatternFlowGtpv1SFlagCounter{}} - obj.setDefault() - return &obj +// description is TBD +// PolicyNameSubTlv returns a BgpSrtePolicyNameSubTlv +func (obj *bgpSrteV6TunnelTlv) PolicyNameSubTlv() BgpSrtePolicyNameSubTlv { + if obj.obj.PolicyNameSubTlv == nil { + obj.obj.PolicyNameSubTlv = NewBgpSrtePolicyNameSubTlv().Msg() + } + if obj.policyNameSubTlvHolder == nil { + obj.policyNameSubTlvHolder = &bgpSrtePolicyNameSubTlv{obj: obj.obj.PolicyNameSubTlv} + } + return obj.policyNameSubTlvHolder } -func (obj *patternFlowGtpv1SFlagCounter) Msg() *otg.PatternFlowGtpv1SFlagCounter { - return obj.obj +// description is TBD +// PolicyNameSubTlv returns a BgpSrtePolicyNameSubTlv +func (obj *bgpSrteV6TunnelTlv) HasPolicyNameSubTlv() bool { + return obj.obj.PolicyNameSubTlv != nil } -func (obj *patternFlowGtpv1SFlagCounter) SetMsg(msg *otg.PatternFlowGtpv1SFlagCounter) PatternFlowGtpv1SFlagCounter { +// description is TBD +// SetPolicyNameSubTlv sets the BgpSrtePolicyNameSubTlv value in the BgpSrteV6TunnelTlv object +func (obj *bgpSrteV6TunnelTlv) SetPolicyNameSubTlv(value BgpSrtePolicyNameSubTlv) BgpSrteV6TunnelTlv { + + obj.policyNameSubTlvHolder = nil + obj.obj.PolicyNameSubTlv = value.Msg() - proto.Merge(obj.obj, msg) return obj } -func (obj *patternFlowGtpv1SFlagCounter) ToProto() (*otg.PatternFlowGtpv1SFlagCounter, error) { - err := obj.validateToAndFrom() - if err != nil { - return nil, err +// description is TBD +// ExplicitNullLabelPolicySubTlv returns a BgpSrteExplicitNullLabelPolicySubTlv +func (obj *bgpSrteV6TunnelTlv) ExplicitNullLabelPolicySubTlv() BgpSrteExplicitNullLabelPolicySubTlv { + if obj.obj.ExplicitNullLabelPolicySubTlv == nil { + obj.obj.ExplicitNullLabelPolicySubTlv = NewBgpSrteExplicitNullLabelPolicySubTlv().Msg() } - return obj.Msg(), nil -} - -func (obj *patternFlowGtpv1SFlagCounter) FromProto(msg *otg.PatternFlowGtpv1SFlagCounter) (PatternFlowGtpv1SFlagCounter, error) { - newObj := obj.SetMsg(msg) - err := newObj.validateToAndFrom() - if err != nil { - return nil, err + if obj.explicitNullLabelPolicySubTlvHolder == nil { + obj.explicitNullLabelPolicySubTlvHolder = &bgpSrteExplicitNullLabelPolicySubTlv{obj: obj.obj.ExplicitNullLabelPolicySubTlv} } - return newObj, nil + return obj.explicitNullLabelPolicySubTlvHolder } -func (obj *patternFlowGtpv1SFlagCounter) ToPbText() (string, error) { - vErr := obj.validateToAndFrom() - if vErr != nil { - return "", vErr - } - protoMarshal, err := proto.Marshal(obj.Msg()) - if err != nil { - return "", err - } - return string(protoMarshal), nil +// description is TBD +// ExplicitNullLabelPolicySubTlv returns a BgpSrteExplicitNullLabelPolicySubTlv +func (obj *bgpSrteV6TunnelTlv) HasExplicitNullLabelPolicySubTlv() bool { + return obj.obj.ExplicitNullLabelPolicySubTlv != nil } -func (obj *patternFlowGtpv1SFlagCounter) FromPbText(value string) error { - retObj := proto.Unmarshal([]byte(value), obj.Msg()) - if retObj != nil { - return retObj - } +// description is TBD +// SetExplicitNullLabelPolicySubTlv sets the BgpSrteExplicitNullLabelPolicySubTlv value in the BgpSrteV6TunnelTlv object +func (obj *bgpSrteV6TunnelTlv) SetExplicitNullLabelPolicySubTlv(value BgpSrteExplicitNullLabelPolicySubTlv) BgpSrteV6TunnelTlv { - vErr := obj.validateToAndFrom() - if vErr != nil { - return vErr - } - return retObj -} + obj.explicitNullLabelPolicySubTlvHolder = nil + obj.obj.ExplicitNullLabelPolicySubTlv = value.Msg() -func (obj *patternFlowGtpv1SFlagCounter) ToYaml() (string, error) { - vErr := obj.validateToAndFrom() - if vErr != nil { - return "", vErr - } - opts := protojson.MarshalOptions{ - UseProtoNames: true, - AllowPartial: true, - EmitUnpopulated: false, - } - data, err := opts.Marshal(obj.Msg()) - if err != nil { - return "", err - } - data, err = yaml.JSONToYAML(data) - if err != nil { - return "", err - } - return string(data), nil + return obj } -func (obj *patternFlowGtpv1SFlagCounter) FromYaml(value string) error { - if value == "" { - value = "{}" - } - data, err := yaml.YAMLToJSON([]byte(value)) - if err != nil { - return err - } - opts := protojson.UnmarshalOptions{ - AllowPartial: true, - DiscardUnknown: false, +// description is TBD +// SegmentLists returns a []BgpSrteSegmentList +func (obj *bgpSrteV6TunnelTlv) SegmentLists() BgpSrteV6TunnelTlvBgpSrteSegmentListIter { + if len(obj.obj.SegmentLists) == 0 { + obj.obj.SegmentLists = []*otg.BgpSrteSegmentList{} } - uError := opts.Unmarshal([]byte(data), obj.Msg()) - if uError != nil { - return fmt.Errorf("unmarshal error %s", strings.Replace( - uError.Error(), "\u00a0", " ", -1)[7:]) + if obj.segmentListsHolder == nil { + obj.segmentListsHolder = newBgpSrteV6TunnelTlvBgpSrteSegmentListIter(&obj.obj.SegmentLists).setMsg(obj) } + return obj.segmentListsHolder +} - vErr := obj.validateToAndFrom() - if vErr != nil { - return vErr - } - return nil +type bgpSrteV6TunnelTlvBgpSrteSegmentListIter struct { + obj *bgpSrteV6TunnelTlv + bgpSrteSegmentListSlice []BgpSrteSegmentList + fieldPtr *[]*otg.BgpSrteSegmentList } -func (obj *patternFlowGtpv1SFlagCounter) ToJson() (string, error) { - vErr := obj.validateToAndFrom() - if vErr != nil { - return "", vErr - } - opts := protojson.MarshalOptions{ - UseProtoNames: true, - AllowPartial: true, - EmitUnpopulated: false, - Indent: " ", - } - data, err := opts.Marshal(obj.Msg()) - if err != nil { - return "", err - } - return string(data), nil +func newBgpSrteV6TunnelTlvBgpSrteSegmentListIter(ptr *[]*otg.BgpSrteSegmentList) BgpSrteV6TunnelTlvBgpSrteSegmentListIter { + return &bgpSrteV6TunnelTlvBgpSrteSegmentListIter{fieldPtr: ptr} } -func (obj *patternFlowGtpv1SFlagCounter) FromJson(value string) error { - opts := protojson.UnmarshalOptions{ - AllowPartial: true, - DiscardUnknown: false, - } - if value == "" { - value = "{}" - } - uError := opts.Unmarshal([]byte(value), obj.Msg()) - if uError != nil { - return fmt.Errorf("unmarshal error %s", strings.Replace( - uError.Error(), "\u00a0", " ", -1)[7:]) - } +type BgpSrteV6TunnelTlvBgpSrteSegmentListIter interface { + setMsg(*bgpSrteV6TunnelTlv) BgpSrteV6TunnelTlvBgpSrteSegmentListIter + Items() []BgpSrteSegmentList + Add() BgpSrteSegmentList + Append(items ...BgpSrteSegmentList) BgpSrteV6TunnelTlvBgpSrteSegmentListIter + Set(index int, newObj BgpSrteSegmentList) BgpSrteV6TunnelTlvBgpSrteSegmentListIter + Clear() BgpSrteV6TunnelTlvBgpSrteSegmentListIter + clearHolderSlice() BgpSrteV6TunnelTlvBgpSrteSegmentListIter + appendHolderSlice(item BgpSrteSegmentList) BgpSrteV6TunnelTlvBgpSrteSegmentListIter +} - err := obj.validateToAndFrom() - if err != nil { - return err +func (obj *bgpSrteV6TunnelTlvBgpSrteSegmentListIter) setMsg(msg *bgpSrteV6TunnelTlv) BgpSrteV6TunnelTlvBgpSrteSegmentListIter { + obj.clearHolderSlice() + for _, val := range *obj.fieldPtr { + obj.appendHolderSlice(&bgpSrteSegmentList{obj: val}) } - return nil + obj.obj = msg + return obj } -func (obj *patternFlowGtpv1SFlagCounter) validateToAndFrom() error { - // emptyVars() - obj.validateObj(&obj.validation, true) - return obj.validationResult() +func (obj *bgpSrteV6TunnelTlvBgpSrteSegmentListIter) Items() []BgpSrteSegmentList { + return obj.bgpSrteSegmentListSlice } -func (obj *patternFlowGtpv1SFlagCounter) Validate() error { - // emptyVars() - obj.validateObj(&obj.validation, false) - return obj.validationResult() +func (obj *bgpSrteV6TunnelTlvBgpSrteSegmentListIter) Add() BgpSrteSegmentList { + newObj := &otg.BgpSrteSegmentList{} + *obj.fieldPtr = append(*obj.fieldPtr, newObj) + newLibObj := &bgpSrteSegmentList{obj: newObj} + newLibObj.setDefault() + obj.bgpSrteSegmentListSlice = append(obj.bgpSrteSegmentListSlice, newLibObj) + return newLibObj } -func (obj *patternFlowGtpv1SFlagCounter) String() string { - str, err := obj.ToYaml() - if err != nil { - return err.Error() +func (obj *bgpSrteV6TunnelTlvBgpSrteSegmentListIter) Append(items ...BgpSrteSegmentList) BgpSrteV6TunnelTlvBgpSrteSegmentListIter { + for _, item := range items { + newObj := item.Msg() + *obj.fieldPtr = append(*obj.fieldPtr, newObj) + obj.bgpSrteSegmentListSlice = append(obj.bgpSrteSegmentListSlice, item) } - return str + return obj } -func (obj *patternFlowGtpv1SFlagCounter) Clone() (PatternFlowGtpv1SFlagCounter, error) { - vErr := obj.Validate() - if vErr != nil { - return nil, vErr - } - newObj := NewPatternFlowGtpv1SFlagCounter() - data, err := proto.Marshal(obj.Msg()) - if err != nil { - return nil, err +func (obj *bgpSrteV6TunnelTlvBgpSrteSegmentListIter) Set(index int, newObj BgpSrteSegmentList) BgpSrteV6TunnelTlvBgpSrteSegmentListIter { + (*obj.fieldPtr)[index] = newObj.Msg() + obj.bgpSrteSegmentListSlice[index] = newObj + return obj +} +func (obj *bgpSrteV6TunnelTlvBgpSrteSegmentListIter) Clear() BgpSrteV6TunnelTlvBgpSrteSegmentListIter { + if len(*obj.fieldPtr) > 0 { + *obj.fieldPtr = []*otg.BgpSrteSegmentList{} + obj.bgpSrteSegmentListSlice = []BgpSrteSegmentList{} } - pbErr := proto.Unmarshal(data, newObj.Msg()) - if pbErr != nil { - return nil, pbErr + return obj +} +func (obj *bgpSrteV6TunnelTlvBgpSrteSegmentListIter) clearHolderSlice() BgpSrteV6TunnelTlvBgpSrteSegmentListIter { + if len(obj.bgpSrteSegmentListSlice) > 0 { + obj.bgpSrteSegmentListSlice = []BgpSrteSegmentList{} } - return newObj, nil + return obj } - -// PatternFlowGtpv1SFlagCounter is integer counter pattern -type PatternFlowGtpv1SFlagCounter interface { - Validation - // Msg marshals PatternFlowGtpv1SFlagCounter to protobuf object *otg.PatternFlowGtpv1SFlagCounter - // and doesn't set defaults - Msg() *otg.PatternFlowGtpv1SFlagCounter - // SetMsg unmarshals PatternFlowGtpv1SFlagCounter from protobuf object *otg.PatternFlowGtpv1SFlagCounter - // and doesn't set defaults - SetMsg(*otg.PatternFlowGtpv1SFlagCounter) PatternFlowGtpv1SFlagCounter - // ToProto marshals PatternFlowGtpv1SFlagCounter to protobuf object *otg.PatternFlowGtpv1SFlagCounter - ToProto() (*otg.PatternFlowGtpv1SFlagCounter, error) - // ToPbText marshals PatternFlowGtpv1SFlagCounter to protobuf text - ToPbText() (string, error) - // ToYaml marshals PatternFlowGtpv1SFlagCounter to YAML text - ToYaml() (string, error) - // ToJson marshals PatternFlowGtpv1SFlagCounter to JSON text - ToJson() (string, error) - // FromProto unmarshals PatternFlowGtpv1SFlagCounter from protobuf object *otg.PatternFlowGtpv1SFlagCounter - FromProto(msg *otg.PatternFlowGtpv1SFlagCounter) (PatternFlowGtpv1SFlagCounter, error) - // FromPbText unmarshals PatternFlowGtpv1SFlagCounter from protobuf text - FromPbText(value string) error - // FromYaml unmarshals PatternFlowGtpv1SFlagCounter from YAML text - FromYaml(value string) error - // FromJson unmarshals PatternFlowGtpv1SFlagCounter from JSON text - FromJson(value string) error - // Validate validates PatternFlowGtpv1SFlagCounter - Validate() error - // A stringer function - String() string - // Clones the object - Clone() (PatternFlowGtpv1SFlagCounter, error) - validateToAndFrom() error - validateObj(vObj *validation, set_default bool) - setDefault() - // Start returns uint32, set in PatternFlowGtpv1SFlagCounter. - Start() uint32 - // SetStart assigns uint32 provided by user to PatternFlowGtpv1SFlagCounter - SetStart(value uint32) PatternFlowGtpv1SFlagCounter - // HasStart checks if Start has been set in PatternFlowGtpv1SFlagCounter - HasStart() bool - // Step returns uint32, set in PatternFlowGtpv1SFlagCounter. - Step() uint32 - // SetStep assigns uint32 provided by user to PatternFlowGtpv1SFlagCounter - SetStep(value uint32) PatternFlowGtpv1SFlagCounter - // HasStep checks if Step has been set in PatternFlowGtpv1SFlagCounter - HasStep() bool - // Count returns uint32, set in PatternFlowGtpv1SFlagCounter. - Count() uint32 - // SetCount assigns uint32 provided by user to PatternFlowGtpv1SFlagCounter - SetCount(value uint32) PatternFlowGtpv1SFlagCounter - // HasCount checks if Count has been set in PatternFlowGtpv1SFlagCounter - HasCount() bool +func (obj *bgpSrteV6TunnelTlvBgpSrteSegmentListIter) appendHolderSlice(item BgpSrteSegmentList) BgpSrteV6TunnelTlvBgpSrteSegmentListIter { + obj.bgpSrteSegmentListSlice = append(obj.bgpSrteSegmentListSlice, item) + return obj } -// description is TBD -// Start returns a uint32 -func (obj *patternFlowGtpv1SFlagCounter) Start() uint32 { - - return *obj.obj.Start +// Globally unique name of an object. It also serves as the primary key for arrays of objects. +// Name returns a string +func (obj *bgpSrteV6TunnelTlv) Name() string { -} + return *obj.obj.Name -// description is TBD -// Start returns a uint32 -func (obj *patternFlowGtpv1SFlagCounter) HasStart() bool { - return obj.obj.Start != nil } -// description is TBD -// SetStart sets the uint32 value in the PatternFlowGtpv1SFlagCounter object -func (obj *patternFlowGtpv1SFlagCounter) SetStart(value uint32) PatternFlowGtpv1SFlagCounter { +// Globally unique name of an object. It also serves as the primary key for arrays of objects. +// SetName sets the string value in the BgpSrteV6TunnelTlv object +func (obj *bgpSrteV6TunnelTlv) SetName(value string) BgpSrteV6TunnelTlv { - obj.obj.Start = &value + obj.obj.Name = &value return obj } -// description is TBD -// Step returns a uint32 -func (obj *patternFlowGtpv1SFlagCounter) Step() uint32 { +// If enabled means that this part of the configuration including any active 'children' nodes will be advertised to peer. If disabled, this means that though config is present, it is not taking any part of the test but can be activated at run-time to advertise just this part of the configuration to the peer. +// Active returns a bool +func (obj *bgpSrteV6TunnelTlv) Active() bool { - return *obj.obj.Step + return *obj.obj.Active } -// description is TBD -// Step returns a uint32 -func (obj *patternFlowGtpv1SFlagCounter) HasStep() bool { - return obj.obj.Step != nil +// If enabled means that this part of the configuration including any active 'children' nodes will be advertised to peer. If disabled, this means that though config is present, it is not taking any part of the test but can be activated at run-time to advertise just this part of the configuration to the peer. +// Active returns a bool +func (obj *bgpSrteV6TunnelTlv) HasActive() bool { + return obj.obj.Active != nil } -// description is TBD -// SetStep sets the uint32 value in the PatternFlowGtpv1SFlagCounter object -func (obj *patternFlowGtpv1SFlagCounter) SetStep(value uint32) PatternFlowGtpv1SFlagCounter { +// If enabled means that this part of the configuration including any active 'children' nodes will be advertised to peer. If disabled, this means that though config is present, it is not taking any part of the test but can be activated at run-time to advertise just this part of the configuration to the peer. +// SetActive sets the bool value in the BgpSrteV6TunnelTlv object +func (obj *bgpSrteV6TunnelTlv) SetActive(value bool) BgpSrteV6TunnelTlv { - obj.obj.Step = &value + obj.obj.Active = &value return obj } -// description is TBD -// Count returns a uint32 -func (obj *patternFlowGtpv1SFlagCounter) Count() uint32 { +func (obj *bgpSrteV6TunnelTlv) validateObj(vObj *validation, set_default bool) { + if set_default { + obj.setDefault() + } - return *obj.obj.Count + if obj.obj.RemoteEndpointSubTlv != nil { -} + obj.RemoteEndpointSubTlv().validateObj(vObj, set_default) + } -// description is TBD -// Count returns a uint32 -func (obj *patternFlowGtpv1SFlagCounter) HasCount() bool { - return obj.obj.Count != nil -} + if obj.obj.ColorSubTlv != nil { -// description is TBD -// SetCount sets the uint32 value in the PatternFlowGtpv1SFlagCounter object -func (obj *patternFlowGtpv1SFlagCounter) SetCount(value uint32) PatternFlowGtpv1SFlagCounter { + obj.ColorSubTlv().validateObj(vObj, set_default) + } - obj.obj.Count = &value - return obj -} + if obj.obj.BindingSubTlv != nil { -func (obj *patternFlowGtpv1SFlagCounter) validateObj(vObj *validation, set_default bool) { - if set_default { - obj.setDefault() + obj.BindingSubTlv().validateObj(vObj, set_default) } - if obj.obj.Start != nil { + if obj.obj.PreferenceSubTlv != nil { - if *obj.obj.Start > 1 { - vObj.validationErrors = append( - vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowGtpv1SFlagCounter.Start <= 1 but Got %d", *obj.obj.Start)) - } + obj.PreferenceSubTlv().validateObj(vObj, set_default) + } + + if obj.obj.PolicyPrioritySubTlv != nil { + obj.PolicyPrioritySubTlv().validateObj(vObj, set_default) } - if obj.obj.Step != nil { + if obj.obj.PolicyNameSubTlv != nil { - if *obj.obj.Step > 1 { - vObj.validationErrors = append( - vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowGtpv1SFlagCounter.Step <= 1 but Got %d", *obj.obj.Step)) - } + obj.PolicyNameSubTlv().validateObj(vObj, set_default) + } + + if obj.obj.ExplicitNullLabelPolicySubTlv != nil { + obj.ExplicitNullLabelPolicySubTlv().validateObj(vObj, set_default) } - if obj.obj.Count != nil { + if len(obj.obj.SegmentLists) != 0 { - if *obj.obj.Count > 1 { - vObj.validationErrors = append( - vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowGtpv1SFlagCounter.Count <= 1 but Got %d", *obj.obj.Count)) + if set_default { + obj.SegmentLists().clearHolderSlice() + for _, item := range obj.obj.SegmentLists { + obj.SegmentLists().appendHolderSlice(&bgpSrteSegmentList{obj: item}) + } + } + for _, item := range obj.SegmentLists().Items() { + item.validateObj(vObj, set_default) } } + // Name is required + if obj.obj.Name == nil { + vObj.validationErrors = append(vObj.validationErrors, "Name is required field on interface BgpSrteV6TunnelTlv") + } } -func (obj *patternFlowGtpv1SFlagCounter) setDefault() { - if obj.obj.Start == nil { - obj.SetStart(0) - } - if obj.obj.Step == nil { - obj.SetStep(1) - } - if obj.obj.Count == nil { - obj.SetCount(1) +func (obj *bgpSrteV6TunnelTlv) setDefault() { + if obj.obj.Active == nil { + obj.SetActive(true) } } -// ***** PatternFlowGtpv1SFlagMetricTag ***** -type patternFlowGtpv1SFlagMetricTag struct { +// ***** BgpV6EvpnEvis ***** +type bgpV6EvpnEvis struct { validation - obj *otg.PatternFlowGtpv1SFlagMetricTag + obj *otg.BgpV6EvpnEvis + eviVxlanHolder BgpV6EviVxlan } -func NewPatternFlowGtpv1SFlagMetricTag() PatternFlowGtpv1SFlagMetricTag { - obj := patternFlowGtpv1SFlagMetricTag{obj: &otg.PatternFlowGtpv1SFlagMetricTag{}} +func NewBgpV6EvpnEvis() BgpV6EvpnEvis { + obj := bgpV6EvpnEvis{obj: &otg.BgpV6EvpnEvis{}} obj.setDefault() return &obj } -func (obj *patternFlowGtpv1SFlagMetricTag) Msg() *otg.PatternFlowGtpv1SFlagMetricTag { +func (obj *bgpV6EvpnEvis) Msg() *otg.BgpV6EvpnEvis { return obj.obj } -func (obj *patternFlowGtpv1SFlagMetricTag) SetMsg(msg *otg.PatternFlowGtpv1SFlagMetricTag) PatternFlowGtpv1SFlagMetricTag { - +func (obj *bgpV6EvpnEvis) SetMsg(msg *otg.BgpV6EvpnEvis) BgpV6EvpnEvis { + obj.setNil() proto.Merge(obj.obj, msg) return obj } -func (obj *patternFlowGtpv1SFlagMetricTag) ToProto() (*otg.PatternFlowGtpv1SFlagMetricTag, error) { +func (obj *bgpV6EvpnEvis) ToProto() (*otg.BgpV6EvpnEvis, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -239735,7 +284665,7 @@ func (obj *patternFlowGtpv1SFlagMetricTag) ToProto() (*otg.PatternFlowGtpv1SFlag return obj.Msg(), nil } -func (obj *patternFlowGtpv1SFlagMetricTag) FromProto(msg *otg.PatternFlowGtpv1SFlagMetricTag) (PatternFlowGtpv1SFlagMetricTag, error) { +func (obj *bgpV6EvpnEvis) FromProto(msg *otg.BgpV6EvpnEvis) (BgpV6EvpnEvis, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -239744,7 +284674,7 @@ func (obj *patternFlowGtpv1SFlagMetricTag) FromProto(msg *otg.PatternFlowGtpv1SF return newObj, nil } -func (obj *patternFlowGtpv1SFlagMetricTag) ToPbText() (string, error) { +func (obj *bgpV6EvpnEvis) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -239756,12 +284686,12 @@ func (obj *patternFlowGtpv1SFlagMetricTag) ToPbText() (string, error) { return string(protoMarshal), nil } -func (obj *patternFlowGtpv1SFlagMetricTag) FromPbText(value string) error { +func (obj *bgpV6EvpnEvis) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj } - + obj.setNil() vErr := obj.validateToAndFrom() if vErr != nil { return vErr @@ -239769,7 +284699,7 @@ func (obj *patternFlowGtpv1SFlagMetricTag) FromPbText(value string) error { return retObj } -func (obj *patternFlowGtpv1SFlagMetricTag) ToYaml() (string, error) { +func (obj *bgpV6EvpnEvis) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -239790,7 +284720,7 @@ func (obj *patternFlowGtpv1SFlagMetricTag) ToYaml() (string, error) { return string(data), nil } -func (obj *patternFlowGtpv1SFlagMetricTag) FromYaml(value string) error { +func (obj *bgpV6EvpnEvis) FromYaml(value string) error { if value == "" { value = "{}" } @@ -239807,7 +284737,7 @@ func (obj *patternFlowGtpv1SFlagMetricTag) FromYaml(value string) error { return fmt.Errorf("unmarshal error %s", strings.Replace( uError.Error(), "\u00a0", " ", -1)[7:]) } - + obj.setNil() vErr := obj.validateToAndFrom() if vErr != nil { return vErr @@ -239815,7 +284745,7 @@ func (obj *patternFlowGtpv1SFlagMetricTag) FromYaml(value string) error { return nil } -func (obj *patternFlowGtpv1SFlagMetricTag) ToJson() (string, error) { +func (obj *bgpV6EvpnEvis) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -239833,7 +284763,7 @@ func (obj *patternFlowGtpv1SFlagMetricTag) ToJson() (string, error) { return string(data), nil } -func (obj *patternFlowGtpv1SFlagMetricTag) FromJson(value string) error { +func (obj *bgpV6EvpnEvis) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -239846,7 +284776,7 @@ func (obj *patternFlowGtpv1SFlagMetricTag) FromJson(value string) error { return fmt.Errorf("unmarshal error %s", strings.Replace( uError.Error(), "\u00a0", " ", -1)[7:]) } - + obj.setNil() err := obj.validateToAndFrom() if err != nil { return err @@ -239854,19 +284784,19 @@ func (obj *patternFlowGtpv1SFlagMetricTag) FromJson(value string) error { return nil } -func (obj *patternFlowGtpv1SFlagMetricTag) validateToAndFrom() error { +func (obj *bgpV6EvpnEvis) validateToAndFrom() error { // emptyVars() obj.validateObj(&obj.validation, true) return obj.validationResult() } -func (obj *patternFlowGtpv1SFlagMetricTag) Validate() error { +func (obj *bgpV6EvpnEvis) Validate() error { // emptyVars() obj.validateObj(&obj.validation, false) return obj.validationResult() } -func (obj *patternFlowGtpv1SFlagMetricTag) String() string { +func (obj *bgpV6EvpnEvis) String() string { str, err := obj.ToYaml() if err != nil { return err.Error() @@ -239874,12 +284804,12 @@ func (obj *patternFlowGtpv1SFlagMetricTag) String() string { return str } -func (obj *patternFlowGtpv1SFlagMetricTag) Clone() (PatternFlowGtpv1SFlagMetricTag, error) { +func (obj *bgpV6EvpnEvis) Clone() (BgpV6EvpnEvis, error) { vErr := obj.Validate() if vErr != nil { return nil, vErr } - newObj := NewPatternFlowGtpv1SFlagMetricTag() + newObj := NewBgpV6EvpnEvis() data, err := proto.Marshal(obj.Msg()) if err != nil { return nil, err @@ -239891,183 +284821,188 @@ func (obj *patternFlowGtpv1SFlagMetricTag) Clone() (PatternFlowGtpv1SFlagMetricT return newObj, nil } -// PatternFlowGtpv1SFlagMetricTag is metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. -type PatternFlowGtpv1SFlagMetricTag interface { +func (obj *bgpV6EvpnEvis) setNil() { + obj.eviVxlanHolder = nil + obj.validationErrors = nil + obj.warnings = nil + obj.constraints = make(map[string]map[string]Constraints) +} + +// BgpV6EvpnEvis is this contains a list of different flavors of EVPN. +// For example EVPN over VXLAN or EVPN over MPLS etc to be configured per Ethernet segment. +// Need to instantiate correct type of EVPN instance as per requirement. +type BgpV6EvpnEvis interface { Validation - // Msg marshals PatternFlowGtpv1SFlagMetricTag to protobuf object *otg.PatternFlowGtpv1SFlagMetricTag + // Msg marshals BgpV6EvpnEvis to protobuf object *otg.BgpV6EvpnEvis // and doesn't set defaults - Msg() *otg.PatternFlowGtpv1SFlagMetricTag - // SetMsg unmarshals PatternFlowGtpv1SFlagMetricTag from protobuf object *otg.PatternFlowGtpv1SFlagMetricTag + Msg() *otg.BgpV6EvpnEvis + // SetMsg unmarshals BgpV6EvpnEvis from protobuf object *otg.BgpV6EvpnEvis // and doesn't set defaults - SetMsg(*otg.PatternFlowGtpv1SFlagMetricTag) PatternFlowGtpv1SFlagMetricTag - // ToProto marshals PatternFlowGtpv1SFlagMetricTag to protobuf object *otg.PatternFlowGtpv1SFlagMetricTag - ToProto() (*otg.PatternFlowGtpv1SFlagMetricTag, error) - // ToPbText marshals PatternFlowGtpv1SFlagMetricTag to protobuf text + SetMsg(*otg.BgpV6EvpnEvis) BgpV6EvpnEvis + // ToProto marshals BgpV6EvpnEvis to protobuf object *otg.BgpV6EvpnEvis + ToProto() (*otg.BgpV6EvpnEvis, error) + // ToPbText marshals BgpV6EvpnEvis to protobuf text ToPbText() (string, error) - // ToYaml marshals PatternFlowGtpv1SFlagMetricTag to YAML text + // ToYaml marshals BgpV6EvpnEvis to YAML text ToYaml() (string, error) - // ToJson marshals PatternFlowGtpv1SFlagMetricTag to JSON text + // ToJson marshals BgpV6EvpnEvis to JSON text ToJson() (string, error) - // FromProto unmarshals PatternFlowGtpv1SFlagMetricTag from protobuf object *otg.PatternFlowGtpv1SFlagMetricTag - FromProto(msg *otg.PatternFlowGtpv1SFlagMetricTag) (PatternFlowGtpv1SFlagMetricTag, error) - // FromPbText unmarshals PatternFlowGtpv1SFlagMetricTag from protobuf text + // FromProto unmarshals BgpV6EvpnEvis from protobuf object *otg.BgpV6EvpnEvis + FromProto(msg *otg.BgpV6EvpnEvis) (BgpV6EvpnEvis, error) + // FromPbText unmarshals BgpV6EvpnEvis from protobuf text FromPbText(value string) error - // FromYaml unmarshals PatternFlowGtpv1SFlagMetricTag from YAML text + // FromYaml unmarshals BgpV6EvpnEvis from YAML text FromYaml(value string) error - // FromJson unmarshals PatternFlowGtpv1SFlagMetricTag from JSON text + // FromJson unmarshals BgpV6EvpnEvis from JSON text FromJson(value string) error - // Validate validates PatternFlowGtpv1SFlagMetricTag + // Validate validates BgpV6EvpnEvis Validate() error // A stringer function String() string // Clones the object - Clone() (PatternFlowGtpv1SFlagMetricTag, error) + Clone() (BgpV6EvpnEvis, error) validateToAndFrom() error validateObj(vObj *validation, set_default bool) setDefault() - // Name returns string, set in PatternFlowGtpv1SFlagMetricTag. - Name() string - // SetName assigns string provided by user to PatternFlowGtpv1SFlagMetricTag - SetName(value string) PatternFlowGtpv1SFlagMetricTag - // Offset returns uint32, set in PatternFlowGtpv1SFlagMetricTag. - Offset() uint32 - // SetOffset assigns uint32 provided by user to PatternFlowGtpv1SFlagMetricTag - SetOffset(value uint32) PatternFlowGtpv1SFlagMetricTag - // HasOffset checks if Offset has been set in PatternFlowGtpv1SFlagMetricTag - HasOffset() bool - // Length returns uint32, set in PatternFlowGtpv1SFlagMetricTag. - Length() uint32 - // SetLength assigns uint32 provided by user to PatternFlowGtpv1SFlagMetricTag - SetLength(value uint32) PatternFlowGtpv1SFlagMetricTag - // HasLength checks if Length has been set in PatternFlowGtpv1SFlagMetricTag - HasLength() bool + // Choice returns BgpV6EvpnEvisChoiceEnum, set in BgpV6EvpnEvis + Choice() BgpV6EvpnEvisChoiceEnum + // SetChoice assigns BgpV6EvpnEvisChoiceEnum provided by user to BgpV6EvpnEvis + SetChoice(value BgpV6EvpnEvisChoiceEnum) BgpV6EvpnEvis + // HasChoice checks if Choice has been set in BgpV6EvpnEvis + HasChoice() bool + // EviVxlan returns BgpV6EviVxlan, set in BgpV6EvpnEvis. + // BgpV6EviVxlan is configuration for BGP EVPN EVI. Advertises following routes - + // + // # Type 3 - Inclusive Multicast Ethernet Tag Route + // + // Type 1 - Ethernet Auto-discovery Route (Per EVI) + // + // Type 1 - Ethernet Auto-discovery Route (Per ES) + EviVxlan() BgpV6EviVxlan + // SetEviVxlan assigns BgpV6EviVxlan provided by user to BgpV6EvpnEvis. + // BgpV6EviVxlan is configuration for BGP EVPN EVI. Advertises following routes - + // + // # Type 3 - Inclusive Multicast Ethernet Tag Route + // + // Type 1 - Ethernet Auto-discovery Route (Per EVI) + // + // Type 1 - Ethernet Auto-discovery Route (Per ES) + SetEviVxlan(value BgpV6EviVxlan) BgpV6EvpnEvis + // HasEviVxlan checks if EviVxlan has been set in BgpV6EvpnEvis + HasEviVxlan() bool + setNil() } -// Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field -// Name returns a string -func (obj *patternFlowGtpv1SFlagMetricTag) Name() string { - - return *obj.obj.Name +type BgpV6EvpnEvisChoiceEnum string +// Enum of Choice on BgpV6EvpnEvis +var BgpV6EvpnEvisChoice = struct { + EVI_VXLAN BgpV6EvpnEvisChoiceEnum +}{ + EVI_VXLAN: BgpV6EvpnEvisChoiceEnum("evi_vxlan"), } -// Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field -// SetName sets the string value in the PatternFlowGtpv1SFlagMetricTag object -func (obj *patternFlowGtpv1SFlagMetricTag) SetName(value string) PatternFlowGtpv1SFlagMetricTag { - - obj.obj.Name = &value - return obj +func (obj *bgpV6EvpnEvis) Choice() BgpV6EvpnEvisChoiceEnum { + return BgpV6EvpnEvisChoiceEnum(obj.obj.Choice.Enum().String()) } -// Offset in bits relative to start of corresponding header field -// Offset returns a uint32 -func (obj *patternFlowGtpv1SFlagMetricTag) Offset() uint32 { - - return *obj.obj.Offset - +// description is TBD +// Choice returns a string +func (obj *bgpV6EvpnEvis) HasChoice() bool { + return obj.obj.Choice != nil } -// Offset in bits relative to start of corresponding header field -// Offset returns a uint32 -func (obj *patternFlowGtpv1SFlagMetricTag) HasOffset() bool { - return obj.obj.Offset != nil -} +func (obj *bgpV6EvpnEvis) SetChoice(value BgpV6EvpnEvisChoiceEnum) BgpV6EvpnEvis { + intValue, ok := otg.BgpV6EvpnEvis_Choice_Enum_value[string(value)] + if !ok { + obj.validationErrors = append(obj.validationErrors, fmt.Sprintf( + "%s is not a valid choice on BgpV6EvpnEvisChoiceEnum", string(value))) + return obj + } + enumValue := otg.BgpV6EvpnEvis_Choice_Enum(intValue) + obj.obj.Choice = &enumValue + obj.obj.EviVxlan = nil + obj.eviVxlanHolder = nil -// Offset in bits relative to start of corresponding header field -// SetOffset sets the uint32 value in the PatternFlowGtpv1SFlagMetricTag object -func (obj *patternFlowGtpv1SFlagMetricTag) SetOffset(value uint32) PatternFlowGtpv1SFlagMetricTag { + if value == BgpV6EvpnEvisChoice.EVI_VXLAN { + obj.obj.EviVxlan = NewBgpV6EviVxlan().Msg() + } - obj.obj.Offset = &value return obj } -// Number of bits to track for metrics starting from configured offset of corresponding header field -// Length returns a uint32 -func (obj *patternFlowGtpv1SFlagMetricTag) Length() uint32 { - - return *obj.obj.Length - +// EVPN VXLAN instance to be configured per Ethernet Segment. +// EviVxlan returns a BgpV6EviVxlan +func (obj *bgpV6EvpnEvis) EviVxlan() BgpV6EviVxlan { + if obj.obj.EviVxlan == nil { + obj.SetChoice(BgpV6EvpnEvisChoice.EVI_VXLAN) + } + if obj.eviVxlanHolder == nil { + obj.eviVxlanHolder = &bgpV6EviVxlan{obj: obj.obj.EviVxlan} + } + return obj.eviVxlanHolder } -// Number of bits to track for metrics starting from configured offset of corresponding header field -// Length returns a uint32 -func (obj *patternFlowGtpv1SFlagMetricTag) HasLength() bool { - return obj.obj.Length != nil +// EVPN VXLAN instance to be configured per Ethernet Segment. +// EviVxlan returns a BgpV6EviVxlan +func (obj *bgpV6EvpnEvis) HasEviVxlan() bool { + return obj.obj.EviVxlan != nil } -// Number of bits to track for metrics starting from configured offset of corresponding header field -// SetLength sets the uint32 value in the PatternFlowGtpv1SFlagMetricTag object -func (obj *patternFlowGtpv1SFlagMetricTag) SetLength(value uint32) PatternFlowGtpv1SFlagMetricTag { +// EVPN VXLAN instance to be configured per Ethernet Segment. +// SetEviVxlan sets the BgpV6EviVxlan value in the BgpV6EvpnEvis object +func (obj *bgpV6EvpnEvis) SetEviVxlan(value BgpV6EviVxlan) BgpV6EvpnEvis { + obj.SetChoice(BgpV6EvpnEvisChoice.EVI_VXLAN) + obj.eviVxlanHolder = nil + obj.obj.EviVxlan = value.Msg() - obj.obj.Length = &value return obj } -func (obj *patternFlowGtpv1SFlagMetricTag) validateObj(vObj *validation, set_default bool) { +func (obj *bgpV6EvpnEvis) validateObj(vObj *validation, set_default bool) { if set_default { obj.setDefault() } - // Name is required - if obj.obj.Name == nil { - vObj.validationErrors = append(vObj.validationErrors, "Name is required field on interface PatternFlowGtpv1SFlagMetricTag") - } - - if obj.obj.Offset != nil { - - if *obj.obj.Offset > 0 { - vObj.validationErrors = append( - vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowGtpv1SFlagMetricTag.Offset <= 0 but Got %d", *obj.obj.Offset)) - } - - } - - if obj.obj.Length != nil { - - if *obj.obj.Length < 1 || *obj.obj.Length > 1 { - vObj.validationErrors = append( - vObj.validationErrors, - fmt.Sprintf("1 <= PatternFlowGtpv1SFlagMetricTag.Length <= 1 but Got %d", *obj.obj.Length)) - } + if obj.obj.EviVxlan != nil { + obj.EviVxlan().validateObj(vObj, set_default) } } -func (obj *patternFlowGtpv1SFlagMetricTag) setDefault() { - if obj.obj.Offset == nil { - obj.SetOffset(0) - } - if obj.obj.Length == nil { - obj.SetLength(1) +func (obj *bgpV6EvpnEvis) setDefault() { + if obj.obj.Choice == nil { + obj.SetChoice(BgpV6EvpnEvisChoice.EVI_VXLAN) + } } -// ***** PatternFlowGtpv1PnFlagCounter ***** -type patternFlowGtpv1PnFlagCounter struct { +// ***** VxlanV4TunnelDestinationIPModeUnicastVtep ***** +type vxlanV4TunnelDestinationIPModeUnicastVtep struct { validation - obj *otg.PatternFlowGtpv1PnFlagCounter + obj *otg.VxlanV4TunnelDestinationIPModeUnicastVtep + arpSuppressionCacheHolder VxlanV4TunnelDestinationIPModeUnicastVtepVxlanTunnelDestinationIPModeUnicastArpSuppressionCacheIter } -func NewPatternFlowGtpv1PnFlagCounter() PatternFlowGtpv1PnFlagCounter { - obj := patternFlowGtpv1PnFlagCounter{obj: &otg.PatternFlowGtpv1PnFlagCounter{}} +func NewVxlanV4TunnelDestinationIPModeUnicastVtep() VxlanV4TunnelDestinationIPModeUnicastVtep { + obj := vxlanV4TunnelDestinationIPModeUnicastVtep{obj: &otg.VxlanV4TunnelDestinationIPModeUnicastVtep{}} obj.setDefault() return &obj } -func (obj *patternFlowGtpv1PnFlagCounter) Msg() *otg.PatternFlowGtpv1PnFlagCounter { +func (obj *vxlanV4TunnelDestinationIPModeUnicastVtep) Msg() *otg.VxlanV4TunnelDestinationIPModeUnicastVtep { return obj.obj } -func (obj *patternFlowGtpv1PnFlagCounter) SetMsg(msg *otg.PatternFlowGtpv1PnFlagCounter) PatternFlowGtpv1PnFlagCounter { - +func (obj *vxlanV4TunnelDestinationIPModeUnicastVtep) SetMsg(msg *otg.VxlanV4TunnelDestinationIPModeUnicastVtep) VxlanV4TunnelDestinationIPModeUnicastVtep { + obj.setNil() proto.Merge(obj.obj, msg) return obj } -func (obj *patternFlowGtpv1PnFlagCounter) ToProto() (*otg.PatternFlowGtpv1PnFlagCounter, error) { +func (obj *vxlanV4TunnelDestinationIPModeUnicastVtep) ToProto() (*otg.VxlanV4TunnelDestinationIPModeUnicastVtep, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -240075,7 +285010,7 @@ func (obj *patternFlowGtpv1PnFlagCounter) ToProto() (*otg.PatternFlowGtpv1PnFlag return obj.Msg(), nil } -func (obj *patternFlowGtpv1PnFlagCounter) FromProto(msg *otg.PatternFlowGtpv1PnFlagCounter) (PatternFlowGtpv1PnFlagCounter, error) { +func (obj *vxlanV4TunnelDestinationIPModeUnicastVtep) FromProto(msg *otg.VxlanV4TunnelDestinationIPModeUnicastVtep) (VxlanV4TunnelDestinationIPModeUnicastVtep, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -240084,7 +285019,7 @@ func (obj *patternFlowGtpv1PnFlagCounter) FromProto(msg *otg.PatternFlowGtpv1PnF return newObj, nil } -func (obj *patternFlowGtpv1PnFlagCounter) ToPbText() (string, error) { +func (obj *vxlanV4TunnelDestinationIPModeUnicastVtep) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -240096,12 +285031,12 @@ func (obj *patternFlowGtpv1PnFlagCounter) ToPbText() (string, error) { return string(protoMarshal), nil } -func (obj *patternFlowGtpv1PnFlagCounter) FromPbText(value string) error { +func (obj *vxlanV4TunnelDestinationIPModeUnicastVtep) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj } - + obj.setNil() vErr := obj.validateToAndFrom() if vErr != nil { return vErr @@ -240109,7 +285044,7 @@ func (obj *patternFlowGtpv1PnFlagCounter) FromPbText(value string) error { return retObj } -func (obj *patternFlowGtpv1PnFlagCounter) ToYaml() (string, error) { +func (obj *vxlanV4TunnelDestinationIPModeUnicastVtep) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -240130,7 +285065,7 @@ func (obj *patternFlowGtpv1PnFlagCounter) ToYaml() (string, error) { return string(data), nil } -func (obj *patternFlowGtpv1PnFlagCounter) FromYaml(value string) error { +func (obj *vxlanV4TunnelDestinationIPModeUnicastVtep) FromYaml(value string) error { if value == "" { value = "{}" } @@ -240147,7 +285082,7 @@ func (obj *patternFlowGtpv1PnFlagCounter) FromYaml(value string) error { return fmt.Errorf("unmarshal error %s", strings.Replace( uError.Error(), "\u00a0", " ", -1)[7:]) } - + obj.setNil() vErr := obj.validateToAndFrom() if vErr != nil { return vErr @@ -240155,7 +285090,7 @@ func (obj *patternFlowGtpv1PnFlagCounter) FromYaml(value string) error { return nil } -func (obj *patternFlowGtpv1PnFlagCounter) ToJson() (string, error) { +func (obj *vxlanV4TunnelDestinationIPModeUnicastVtep) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -240173,7 +285108,7 @@ func (obj *patternFlowGtpv1PnFlagCounter) ToJson() (string, error) { return string(data), nil } -func (obj *patternFlowGtpv1PnFlagCounter) FromJson(value string) error { +func (obj *vxlanV4TunnelDestinationIPModeUnicastVtep) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -240186,7 +285121,7 @@ func (obj *patternFlowGtpv1PnFlagCounter) FromJson(value string) error { return fmt.Errorf("unmarshal error %s", strings.Replace( uError.Error(), "\u00a0", " ", -1)[7:]) } - + obj.setNil() err := obj.validateToAndFrom() if err != nil { return err @@ -240194,19 +285129,19 @@ func (obj *patternFlowGtpv1PnFlagCounter) FromJson(value string) error { return nil } -func (obj *patternFlowGtpv1PnFlagCounter) validateToAndFrom() error { +func (obj *vxlanV4TunnelDestinationIPModeUnicastVtep) validateToAndFrom() error { // emptyVars() obj.validateObj(&obj.validation, true) return obj.validationResult() } -func (obj *patternFlowGtpv1PnFlagCounter) Validate() error { +func (obj *vxlanV4TunnelDestinationIPModeUnicastVtep) Validate() error { // emptyVars() obj.validateObj(&obj.validation, false) return obj.validationResult() } -func (obj *patternFlowGtpv1PnFlagCounter) String() string { +func (obj *vxlanV4TunnelDestinationIPModeUnicastVtep) String() string { str, err := obj.ToYaml() if err != nil { return err.Error() @@ -240214,12 +285149,12 @@ func (obj *patternFlowGtpv1PnFlagCounter) String() string { return str } -func (obj *patternFlowGtpv1PnFlagCounter) Clone() (PatternFlowGtpv1PnFlagCounter, error) { +func (obj *vxlanV4TunnelDestinationIPModeUnicastVtep) Clone() (VxlanV4TunnelDestinationIPModeUnicastVtep, error) { vErr := obj.Validate() if vErr != nil { return nil, vErr } - newObj := NewPatternFlowGtpv1PnFlagCounter() + newObj := NewVxlanV4TunnelDestinationIPModeUnicastVtep() data, err := proto.Marshal(obj.Msg()) if err != nil { return nil, err @@ -240231,199 +285166,225 @@ func (obj *patternFlowGtpv1PnFlagCounter) Clone() (PatternFlowGtpv1PnFlagCounter return newObj, nil } -// PatternFlowGtpv1PnFlagCounter is integer counter pattern -type PatternFlowGtpv1PnFlagCounter interface { +func (obj *vxlanV4TunnelDestinationIPModeUnicastVtep) setNil() { + obj.arpSuppressionCacheHolder = nil + obj.validationErrors = nil + obj.warnings = nil + obj.constraints = make(map[string]map[string]Constraints) +} + +// VxlanV4TunnelDestinationIPModeUnicastVtep is vTEP (VXLAN Tunnel End Point (VTEP)) parameters +type VxlanV4TunnelDestinationIPModeUnicastVtep interface { Validation - // Msg marshals PatternFlowGtpv1PnFlagCounter to protobuf object *otg.PatternFlowGtpv1PnFlagCounter + // Msg marshals VxlanV4TunnelDestinationIPModeUnicastVtep to protobuf object *otg.VxlanV4TunnelDestinationIPModeUnicastVtep // and doesn't set defaults - Msg() *otg.PatternFlowGtpv1PnFlagCounter - // SetMsg unmarshals PatternFlowGtpv1PnFlagCounter from protobuf object *otg.PatternFlowGtpv1PnFlagCounter + Msg() *otg.VxlanV4TunnelDestinationIPModeUnicastVtep + // SetMsg unmarshals VxlanV4TunnelDestinationIPModeUnicastVtep from protobuf object *otg.VxlanV4TunnelDestinationIPModeUnicastVtep // and doesn't set defaults - SetMsg(*otg.PatternFlowGtpv1PnFlagCounter) PatternFlowGtpv1PnFlagCounter - // ToProto marshals PatternFlowGtpv1PnFlagCounter to protobuf object *otg.PatternFlowGtpv1PnFlagCounter - ToProto() (*otg.PatternFlowGtpv1PnFlagCounter, error) - // ToPbText marshals PatternFlowGtpv1PnFlagCounter to protobuf text + SetMsg(*otg.VxlanV4TunnelDestinationIPModeUnicastVtep) VxlanV4TunnelDestinationIPModeUnicastVtep + // ToProto marshals VxlanV4TunnelDestinationIPModeUnicastVtep to protobuf object *otg.VxlanV4TunnelDestinationIPModeUnicastVtep + ToProto() (*otg.VxlanV4TunnelDestinationIPModeUnicastVtep, error) + // ToPbText marshals VxlanV4TunnelDestinationIPModeUnicastVtep to protobuf text ToPbText() (string, error) - // ToYaml marshals PatternFlowGtpv1PnFlagCounter to YAML text + // ToYaml marshals VxlanV4TunnelDestinationIPModeUnicastVtep to YAML text ToYaml() (string, error) - // ToJson marshals PatternFlowGtpv1PnFlagCounter to JSON text + // ToJson marshals VxlanV4TunnelDestinationIPModeUnicastVtep to JSON text ToJson() (string, error) - // FromProto unmarshals PatternFlowGtpv1PnFlagCounter from protobuf object *otg.PatternFlowGtpv1PnFlagCounter - FromProto(msg *otg.PatternFlowGtpv1PnFlagCounter) (PatternFlowGtpv1PnFlagCounter, error) - // FromPbText unmarshals PatternFlowGtpv1PnFlagCounter from protobuf text + // FromProto unmarshals VxlanV4TunnelDestinationIPModeUnicastVtep from protobuf object *otg.VxlanV4TunnelDestinationIPModeUnicastVtep + FromProto(msg *otg.VxlanV4TunnelDestinationIPModeUnicastVtep) (VxlanV4TunnelDestinationIPModeUnicastVtep, error) + // FromPbText unmarshals VxlanV4TunnelDestinationIPModeUnicastVtep from protobuf text FromPbText(value string) error - // FromYaml unmarshals PatternFlowGtpv1PnFlagCounter from YAML text + // FromYaml unmarshals VxlanV4TunnelDestinationIPModeUnicastVtep from YAML text FromYaml(value string) error - // FromJson unmarshals PatternFlowGtpv1PnFlagCounter from JSON text + // FromJson unmarshals VxlanV4TunnelDestinationIPModeUnicastVtep from JSON text FromJson(value string) error - // Validate validates PatternFlowGtpv1PnFlagCounter + // Validate validates VxlanV4TunnelDestinationIPModeUnicastVtep Validate() error // A stringer function String() string // Clones the object - Clone() (PatternFlowGtpv1PnFlagCounter, error) + Clone() (VxlanV4TunnelDestinationIPModeUnicastVtep, error) validateToAndFrom() error validateObj(vObj *validation, set_default bool) setDefault() - // Start returns uint32, set in PatternFlowGtpv1PnFlagCounter. - Start() uint32 - // SetStart assigns uint32 provided by user to PatternFlowGtpv1PnFlagCounter - SetStart(value uint32) PatternFlowGtpv1PnFlagCounter - // HasStart checks if Start has been set in PatternFlowGtpv1PnFlagCounter - HasStart() bool - // Step returns uint32, set in PatternFlowGtpv1PnFlagCounter. - Step() uint32 - // SetStep assigns uint32 provided by user to PatternFlowGtpv1PnFlagCounter - SetStep(value uint32) PatternFlowGtpv1PnFlagCounter - // HasStep checks if Step has been set in PatternFlowGtpv1PnFlagCounter - HasStep() bool - // Count returns uint32, set in PatternFlowGtpv1PnFlagCounter. - Count() uint32 - // SetCount assigns uint32 provided by user to PatternFlowGtpv1PnFlagCounter - SetCount(value uint32) PatternFlowGtpv1PnFlagCounter - // HasCount checks if Count has been set in PatternFlowGtpv1PnFlagCounter - HasCount() bool + // RemoteVtepAddress returns string, set in VxlanV4TunnelDestinationIPModeUnicastVtep. + RemoteVtepAddress() string + // SetRemoteVtepAddress assigns string provided by user to VxlanV4TunnelDestinationIPModeUnicastVtep + SetRemoteVtepAddress(value string) VxlanV4TunnelDestinationIPModeUnicastVtep + // HasRemoteVtepAddress checks if RemoteVtepAddress has been set in VxlanV4TunnelDestinationIPModeUnicastVtep + HasRemoteVtepAddress() bool + // ArpSuppressionCache returns VxlanV4TunnelDestinationIPModeUnicastVtepVxlanTunnelDestinationIPModeUnicastArpSuppressionCacheIterIter, set in VxlanV4TunnelDestinationIPModeUnicastVtep + ArpSuppressionCache() VxlanV4TunnelDestinationIPModeUnicastVtepVxlanTunnelDestinationIPModeUnicastArpSuppressionCacheIter + setNil() } -// description is TBD -// Start returns a uint32 -func (obj *patternFlowGtpv1PnFlagCounter) Start() uint32 { +// Remote VXLAN Tunnel End Point address +// RemoteVtepAddress returns a string +func (obj *vxlanV4TunnelDestinationIPModeUnicastVtep) RemoteVtepAddress() string { - return *obj.obj.Start + return *obj.obj.RemoteVtepAddress } -// description is TBD -// Start returns a uint32 -func (obj *patternFlowGtpv1PnFlagCounter) HasStart() bool { - return obj.obj.Start != nil +// Remote VXLAN Tunnel End Point address +// RemoteVtepAddress returns a string +func (obj *vxlanV4TunnelDestinationIPModeUnicastVtep) HasRemoteVtepAddress() bool { + return obj.obj.RemoteVtepAddress != nil } -// description is TBD -// SetStart sets the uint32 value in the PatternFlowGtpv1PnFlagCounter object -func (obj *patternFlowGtpv1PnFlagCounter) SetStart(value uint32) PatternFlowGtpv1PnFlagCounter { +// Remote VXLAN Tunnel End Point address +// SetRemoteVtepAddress sets the string value in the VxlanV4TunnelDestinationIPModeUnicastVtep object +func (obj *vxlanV4TunnelDestinationIPModeUnicastVtep) SetRemoteVtepAddress(value string) VxlanV4TunnelDestinationIPModeUnicastVtep { - obj.obj.Start = &value + obj.obj.RemoteVtepAddress = &value return obj } -// description is TBD -// Step returns a uint32 -func (obj *patternFlowGtpv1PnFlagCounter) Step() uint32 { - - return *obj.obj.Step +// Each VTEP maintains an ARP suppression cache table for known IP hosts and their associated MAC addresses in the VNI segment. When an end host in the VNI sends an ARP request for another end-host IP address, its local VTEP intercepts the ARP request and checks for the ARP-resolved IP address in its ARP suppression cache table. If it finds a match, the local VTEP sends an ARP response on behalf of the remote end host. +// ArpSuppressionCache returns a []VxlanTunnelDestinationIPModeUnicastArpSuppressionCache +func (obj *vxlanV4TunnelDestinationIPModeUnicastVtep) ArpSuppressionCache() VxlanV4TunnelDestinationIPModeUnicastVtepVxlanTunnelDestinationIPModeUnicastArpSuppressionCacheIter { + if len(obj.obj.ArpSuppressionCache) == 0 { + obj.obj.ArpSuppressionCache = []*otg.VxlanTunnelDestinationIPModeUnicastArpSuppressionCache{} + } + if obj.arpSuppressionCacheHolder == nil { + obj.arpSuppressionCacheHolder = newVxlanV4TunnelDestinationIPModeUnicastVtepVxlanTunnelDestinationIPModeUnicastArpSuppressionCacheIter(&obj.obj.ArpSuppressionCache).setMsg(obj) + } + return obj.arpSuppressionCacheHolder +} +type vxlanV4TunnelDestinationIPModeUnicastVtepVxlanTunnelDestinationIPModeUnicastArpSuppressionCacheIter struct { + obj *vxlanV4TunnelDestinationIPModeUnicastVtep + vxlanTunnelDestinationIPModeUnicastArpSuppressionCacheSlice []VxlanTunnelDestinationIPModeUnicastArpSuppressionCache + fieldPtr *[]*otg.VxlanTunnelDestinationIPModeUnicastArpSuppressionCache } -// description is TBD -// Step returns a uint32 -func (obj *patternFlowGtpv1PnFlagCounter) HasStep() bool { - return obj.obj.Step != nil +func newVxlanV4TunnelDestinationIPModeUnicastVtepVxlanTunnelDestinationIPModeUnicastArpSuppressionCacheIter(ptr *[]*otg.VxlanTunnelDestinationIPModeUnicastArpSuppressionCache) VxlanV4TunnelDestinationIPModeUnicastVtepVxlanTunnelDestinationIPModeUnicastArpSuppressionCacheIter { + return &vxlanV4TunnelDestinationIPModeUnicastVtepVxlanTunnelDestinationIPModeUnicastArpSuppressionCacheIter{fieldPtr: ptr} } -// description is TBD -// SetStep sets the uint32 value in the PatternFlowGtpv1PnFlagCounter object -func (obj *patternFlowGtpv1PnFlagCounter) SetStep(value uint32) PatternFlowGtpv1PnFlagCounter { +type VxlanV4TunnelDestinationIPModeUnicastVtepVxlanTunnelDestinationIPModeUnicastArpSuppressionCacheIter interface { + setMsg(*vxlanV4TunnelDestinationIPModeUnicastVtep) VxlanV4TunnelDestinationIPModeUnicastVtepVxlanTunnelDestinationIPModeUnicastArpSuppressionCacheIter + Items() []VxlanTunnelDestinationIPModeUnicastArpSuppressionCache + Add() VxlanTunnelDestinationIPModeUnicastArpSuppressionCache + Append(items ...VxlanTunnelDestinationIPModeUnicastArpSuppressionCache) VxlanV4TunnelDestinationIPModeUnicastVtepVxlanTunnelDestinationIPModeUnicastArpSuppressionCacheIter + Set(index int, newObj VxlanTunnelDestinationIPModeUnicastArpSuppressionCache) VxlanV4TunnelDestinationIPModeUnicastVtepVxlanTunnelDestinationIPModeUnicastArpSuppressionCacheIter + Clear() VxlanV4TunnelDestinationIPModeUnicastVtepVxlanTunnelDestinationIPModeUnicastArpSuppressionCacheIter + clearHolderSlice() VxlanV4TunnelDestinationIPModeUnicastVtepVxlanTunnelDestinationIPModeUnicastArpSuppressionCacheIter + appendHolderSlice(item VxlanTunnelDestinationIPModeUnicastArpSuppressionCache) VxlanV4TunnelDestinationIPModeUnicastVtepVxlanTunnelDestinationIPModeUnicastArpSuppressionCacheIter +} - obj.obj.Step = &value +func (obj *vxlanV4TunnelDestinationIPModeUnicastVtepVxlanTunnelDestinationIPModeUnicastArpSuppressionCacheIter) setMsg(msg *vxlanV4TunnelDestinationIPModeUnicastVtep) VxlanV4TunnelDestinationIPModeUnicastVtepVxlanTunnelDestinationIPModeUnicastArpSuppressionCacheIter { + obj.clearHolderSlice() + for _, val := range *obj.fieldPtr { + obj.appendHolderSlice(&vxlanTunnelDestinationIPModeUnicastArpSuppressionCache{obj: val}) + } + obj.obj = msg return obj } -// description is TBD -// Count returns a uint32 -func (obj *patternFlowGtpv1PnFlagCounter) Count() uint32 { - - return *obj.obj.Count - +func (obj *vxlanV4TunnelDestinationIPModeUnicastVtepVxlanTunnelDestinationIPModeUnicastArpSuppressionCacheIter) Items() []VxlanTunnelDestinationIPModeUnicastArpSuppressionCache { + return obj.vxlanTunnelDestinationIPModeUnicastArpSuppressionCacheSlice } -// description is TBD -// Count returns a uint32 -func (obj *patternFlowGtpv1PnFlagCounter) HasCount() bool { - return obj.obj.Count != nil +func (obj *vxlanV4TunnelDestinationIPModeUnicastVtepVxlanTunnelDestinationIPModeUnicastArpSuppressionCacheIter) Add() VxlanTunnelDestinationIPModeUnicastArpSuppressionCache { + newObj := &otg.VxlanTunnelDestinationIPModeUnicastArpSuppressionCache{} + *obj.fieldPtr = append(*obj.fieldPtr, newObj) + newLibObj := &vxlanTunnelDestinationIPModeUnicastArpSuppressionCache{obj: newObj} + newLibObj.setDefault() + obj.vxlanTunnelDestinationIPModeUnicastArpSuppressionCacheSlice = append(obj.vxlanTunnelDestinationIPModeUnicastArpSuppressionCacheSlice, newLibObj) + return newLibObj } -// description is TBD -// SetCount sets the uint32 value in the PatternFlowGtpv1PnFlagCounter object -func (obj *patternFlowGtpv1PnFlagCounter) SetCount(value uint32) PatternFlowGtpv1PnFlagCounter { +func (obj *vxlanV4TunnelDestinationIPModeUnicastVtepVxlanTunnelDestinationIPModeUnicastArpSuppressionCacheIter) Append(items ...VxlanTunnelDestinationIPModeUnicastArpSuppressionCache) VxlanV4TunnelDestinationIPModeUnicastVtepVxlanTunnelDestinationIPModeUnicastArpSuppressionCacheIter { + for _, item := range items { + newObj := item.Msg() + *obj.fieldPtr = append(*obj.fieldPtr, newObj) + obj.vxlanTunnelDestinationIPModeUnicastArpSuppressionCacheSlice = append(obj.vxlanTunnelDestinationIPModeUnicastArpSuppressionCacheSlice, item) + } + return obj +} - obj.obj.Count = &value +func (obj *vxlanV4TunnelDestinationIPModeUnicastVtepVxlanTunnelDestinationIPModeUnicastArpSuppressionCacheIter) Set(index int, newObj VxlanTunnelDestinationIPModeUnicastArpSuppressionCache) VxlanV4TunnelDestinationIPModeUnicastVtepVxlanTunnelDestinationIPModeUnicastArpSuppressionCacheIter { + (*obj.fieldPtr)[index] = newObj.Msg() + obj.vxlanTunnelDestinationIPModeUnicastArpSuppressionCacheSlice[index] = newObj + return obj +} +func (obj *vxlanV4TunnelDestinationIPModeUnicastVtepVxlanTunnelDestinationIPModeUnicastArpSuppressionCacheIter) Clear() VxlanV4TunnelDestinationIPModeUnicastVtepVxlanTunnelDestinationIPModeUnicastArpSuppressionCacheIter { + if len(*obj.fieldPtr) > 0 { + *obj.fieldPtr = []*otg.VxlanTunnelDestinationIPModeUnicastArpSuppressionCache{} + obj.vxlanTunnelDestinationIPModeUnicastArpSuppressionCacheSlice = []VxlanTunnelDestinationIPModeUnicastArpSuppressionCache{} + } + return obj +} +func (obj *vxlanV4TunnelDestinationIPModeUnicastVtepVxlanTunnelDestinationIPModeUnicastArpSuppressionCacheIter) clearHolderSlice() VxlanV4TunnelDestinationIPModeUnicastVtepVxlanTunnelDestinationIPModeUnicastArpSuppressionCacheIter { + if len(obj.vxlanTunnelDestinationIPModeUnicastArpSuppressionCacheSlice) > 0 { + obj.vxlanTunnelDestinationIPModeUnicastArpSuppressionCacheSlice = []VxlanTunnelDestinationIPModeUnicastArpSuppressionCache{} + } + return obj +} +func (obj *vxlanV4TunnelDestinationIPModeUnicastVtepVxlanTunnelDestinationIPModeUnicastArpSuppressionCacheIter) appendHolderSlice(item VxlanTunnelDestinationIPModeUnicastArpSuppressionCache) VxlanV4TunnelDestinationIPModeUnicastVtepVxlanTunnelDestinationIPModeUnicastArpSuppressionCacheIter { + obj.vxlanTunnelDestinationIPModeUnicastArpSuppressionCacheSlice = append(obj.vxlanTunnelDestinationIPModeUnicastArpSuppressionCacheSlice, item) return obj } -func (obj *patternFlowGtpv1PnFlagCounter) validateObj(vObj *validation, set_default bool) { +func (obj *vxlanV4TunnelDestinationIPModeUnicastVtep) validateObj(vObj *validation, set_default bool) { if set_default { obj.setDefault() } - if obj.obj.Start != nil { + if obj.obj.RemoteVtepAddress != nil { - if *obj.obj.Start > 1 { - vObj.validationErrors = append( - vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowGtpv1PnFlagCounter.Start <= 1 but Got %d", *obj.obj.Start)) + err := obj.validateIpv4(obj.RemoteVtepAddress()) + if err != nil { + vObj.validationErrors = append(vObj.validationErrors, fmt.Sprintf("%s %s", err.Error(), "on VxlanV4TunnelDestinationIPModeUnicastVtep.RemoteVtepAddress")) } } - if obj.obj.Step != nil { + if len(obj.obj.ArpSuppressionCache) != 0 { - if *obj.obj.Step > 1 { - vObj.validationErrors = append( - vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowGtpv1PnFlagCounter.Step <= 1 but Got %d", *obj.obj.Step)) + if set_default { + obj.ArpSuppressionCache().clearHolderSlice() + for _, item := range obj.obj.ArpSuppressionCache { + obj.ArpSuppressionCache().appendHolderSlice(&vxlanTunnelDestinationIPModeUnicastArpSuppressionCache{obj: item}) + } } - - } - - if obj.obj.Count != nil { - - if *obj.obj.Count > 1 { - vObj.validationErrors = append( - vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowGtpv1PnFlagCounter.Count <= 1 but Got %d", *obj.obj.Count)) + for _, item := range obj.ArpSuppressionCache().Items() { + item.validateObj(vObj, set_default) } } } -func (obj *patternFlowGtpv1PnFlagCounter) setDefault() { - if obj.obj.Start == nil { - obj.SetStart(0) - } - if obj.obj.Step == nil { - obj.SetStep(1) - } - if obj.obj.Count == nil { - obj.SetCount(1) - } +func (obj *vxlanV4TunnelDestinationIPModeUnicastVtep) setDefault() { } -// ***** PatternFlowGtpv1PnFlagMetricTag ***** -type patternFlowGtpv1PnFlagMetricTag struct { +// ***** VxlanV6TunnelDestinationIPModeUnicastVtep ***** +type vxlanV6TunnelDestinationIPModeUnicastVtep struct { validation - obj *otg.PatternFlowGtpv1PnFlagMetricTag + obj *otg.VxlanV6TunnelDestinationIPModeUnicastVtep + arpSuppressionCacheHolder VxlanV6TunnelDestinationIPModeUnicastVtepVxlanTunnelDestinationIPModeUnicastArpSuppressionCacheIter } -func NewPatternFlowGtpv1PnFlagMetricTag() PatternFlowGtpv1PnFlagMetricTag { - obj := patternFlowGtpv1PnFlagMetricTag{obj: &otg.PatternFlowGtpv1PnFlagMetricTag{}} +func NewVxlanV6TunnelDestinationIPModeUnicastVtep() VxlanV6TunnelDestinationIPModeUnicastVtep { + obj := vxlanV6TunnelDestinationIPModeUnicastVtep{obj: &otg.VxlanV6TunnelDestinationIPModeUnicastVtep{}} obj.setDefault() return &obj } -func (obj *patternFlowGtpv1PnFlagMetricTag) Msg() *otg.PatternFlowGtpv1PnFlagMetricTag { +func (obj *vxlanV6TunnelDestinationIPModeUnicastVtep) Msg() *otg.VxlanV6TunnelDestinationIPModeUnicastVtep { return obj.obj } -func (obj *patternFlowGtpv1PnFlagMetricTag) SetMsg(msg *otg.PatternFlowGtpv1PnFlagMetricTag) PatternFlowGtpv1PnFlagMetricTag { - +func (obj *vxlanV6TunnelDestinationIPModeUnicastVtep) SetMsg(msg *otg.VxlanV6TunnelDestinationIPModeUnicastVtep) VxlanV6TunnelDestinationIPModeUnicastVtep { + obj.setNil() proto.Merge(obj.obj, msg) return obj } -func (obj *patternFlowGtpv1PnFlagMetricTag) ToProto() (*otg.PatternFlowGtpv1PnFlagMetricTag, error) { +func (obj *vxlanV6TunnelDestinationIPModeUnicastVtep) ToProto() (*otg.VxlanV6TunnelDestinationIPModeUnicastVtep, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -240431,7 +285392,7 @@ func (obj *patternFlowGtpv1PnFlagMetricTag) ToProto() (*otg.PatternFlowGtpv1PnFl return obj.Msg(), nil } -func (obj *patternFlowGtpv1PnFlagMetricTag) FromProto(msg *otg.PatternFlowGtpv1PnFlagMetricTag) (PatternFlowGtpv1PnFlagMetricTag, error) { +func (obj *vxlanV6TunnelDestinationIPModeUnicastVtep) FromProto(msg *otg.VxlanV6TunnelDestinationIPModeUnicastVtep) (VxlanV6TunnelDestinationIPModeUnicastVtep, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -240440,7 +285401,7 @@ func (obj *patternFlowGtpv1PnFlagMetricTag) FromProto(msg *otg.PatternFlowGtpv1P return newObj, nil } -func (obj *patternFlowGtpv1PnFlagMetricTag) ToPbText() (string, error) { +func (obj *vxlanV6TunnelDestinationIPModeUnicastVtep) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -240452,12 +285413,12 @@ func (obj *patternFlowGtpv1PnFlagMetricTag) ToPbText() (string, error) { return string(protoMarshal), nil } -func (obj *patternFlowGtpv1PnFlagMetricTag) FromPbText(value string) error { +func (obj *vxlanV6TunnelDestinationIPModeUnicastVtep) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj } - + obj.setNil() vErr := obj.validateToAndFrom() if vErr != nil { return vErr @@ -240465,7 +285426,7 @@ func (obj *patternFlowGtpv1PnFlagMetricTag) FromPbText(value string) error { return retObj } -func (obj *patternFlowGtpv1PnFlagMetricTag) ToYaml() (string, error) { +func (obj *vxlanV6TunnelDestinationIPModeUnicastVtep) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -240486,7 +285447,7 @@ func (obj *patternFlowGtpv1PnFlagMetricTag) ToYaml() (string, error) { return string(data), nil } -func (obj *patternFlowGtpv1PnFlagMetricTag) FromYaml(value string) error { +func (obj *vxlanV6TunnelDestinationIPModeUnicastVtep) FromYaml(value string) error { if value == "" { value = "{}" } @@ -240503,7 +285464,7 @@ func (obj *patternFlowGtpv1PnFlagMetricTag) FromYaml(value string) error { return fmt.Errorf("unmarshal error %s", strings.Replace( uError.Error(), "\u00a0", " ", -1)[7:]) } - + obj.setNil() vErr := obj.validateToAndFrom() if vErr != nil { return vErr @@ -240511,7 +285472,7 @@ func (obj *patternFlowGtpv1PnFlagMetricTag) FromYaml(value string) error { return nil } -func (obj *patternFlowGtpv1PnFlagMetricTag) ToJson() (string, error) { +func (obj *vxlanV6TunnelDestinationIPModeUnicastVtep) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -240529,7 +285490,7 @@ func (obj *patternFlowGtpv1PnFlagMetricTag) ToJson() (string, error) { return string(data), nil } -func (obj *patternFlowGtpv1PnFlagMetricTag) FromJson(value string) error { +func (obj *vxlanV6TunnelDestinationIPModeUnicastVtep) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -240542,7 +285503,7 @@ func (obj *patternFlowGtpv1PnFlagMetricTag) FromJson(value string) error { return fmt.Errorf("unmarshal error %s", strings.Replace( uError.Error(), "\u00a0", " ", -1)[7:]) } - + obj.setNil() err := obj.validateToAndFrom() if err != nil { return err @@ -240550,19 +285511,19 @@ func (obj *patternFlowGtpv1PnFlagMetricTag) FromJson(value string) error { return nil } -func (obj *patternFlowGtpv1PnFlagMetricTag) validateToAndFrom() error { +func (obj *vxlanV6TunnelDestinationIPModeUnicastVtep) validateToAndFrom() error { // emptyVars() obj.validateObj(&obj.validation, true) return obj.validationResult() } -func (obj *patternFlowGtpv1PnFlagMetricTag) Validate() error { +func (obj *vxlanV6TunnelDestinationIPModeUnicastVtep) Validate() error { // emptyVars() obj.validateObj(&obj.validation, false) return obj.validationResult() } -func (obj *patternFlowGtpv1PnFlagMetricTag) String() string { +func (obj *vxlanV6TunnelDestinationIPModeUnicastVtep) String() string { str, err := obj.ToYaml() if err != nil { return err.Error() @@ -240570,12 +285531,12 @@ func (obj *patternFlowGtpv1PnFlagMetricTag) String() string { return str } -func (obj *patternFlowGtpv1PnFlagMetricTag) Clone() (PatternFlowGtpv1PnFlagMetricTag, error) { +func (obj *vxlanV6TunnelDestinationIPModeUnicastVtep) Clone() (VxlanV6TunnelDestinationIPModeUnicastVtep, error) { vErr := obj.Validate() if vErr != nil { return nil, vErr } - newObj := NewPatternFlowGtpv1PnFlagMetricTag() + newObj := NewVxlanV6TunnelDestinationIPModeUnicastVtep() data, err := proto.Marshal(obj.Msg()) if err != nil { return nil, err @@ -240587,183 +285548,224 @@ func (obj *patternFlowGtpv1PnFlagMetricTag) Clone() (PatternFlowGtpv1PnFlagMetri return newObj, nil } -// PatternFlowGtpv1PnFlagMetricTag is metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. -type PatternFlowGtpv1PnFlagMetricTag interface { +func (obj *vxlanV6TunnelDestinationIPModeUnicastVtep) setNil() { + obj.arpSuppressionCacheHolder = nil + obj.validationErrors = nil + obj.warnings = nil + obj.constraints = make(map[string]map[string]Constraints) +} + +// VxlanV6TunnelDestinationIPModeUnicastVtep is vTEP (VXLAN Tunnel End Point (VTEP)) parameters +type VxlanV6TunnelDestinationIPModeUnicastVtep interface { Validation - // Msg marshals PatternFlowGtpv1PnFlagMetricTag to protobuf object *otg.PatternFlowGtpv1PnFlagMetricTag + // Msg marshals VxlanV6TunnelDestinationIPModeUnicastVtep to protobuf object *otg.VxlanV6TunnelDestinationIPModeUnicastVtep // and doesn't set defaults - Msg() *otg.PatternFlowGtpv1PnFlagMetricTag - // SetMsg unmarshals PatternFlowGtpv1PnFlagMetricTag from protobuf object *otg.PatternFlowGtpv1PnFlagMetricTag + Msg() *otg.VxlanV6TunnelDestinationIPModeUnicastVtep + // SetMsg unmarshals VxlanV6TunnelDestinationIPModeUnicastVtep from protobuf object *otg.VxlanV6TunnelDestinationIPModeUnicastVtep // and doesn't set defaults - SetMsg(*otg.PatternFlowGtpv1PnFlagMetricTag) PatternFlowGtpv1PnFlagMetricTag - // ToProto marshals PatternFlowGtpv1PnFlagMetricTag to protobuf object *otg.PatternFlowGtpv1PnFlagMetricTag - ToProto() (*otg.PatternFlowGtpv1PnFlagMetricTag, error) - // ToPbText marshals PatternFlowGtpv1PnFlagMetricTag to protobuf text + SetMsg(*otg.VxlanV6TunnelDestinationIPModeUnicastVtep) VxlanV6TunnelDestinationIPModeUnicastVtep + // ToProto marshals VxlanV6TunnelDestinationIPModeUnicastVtep to protobuf object *otg.VxlanV6TunnelDestinationIPModeUnicastVtep + ToProto() (*otg.VxlanV6TunnelDestinationIPModeUnicastVtep, error) + // ToPbText marshals VxlanV6TunnelDestinationIPModeUnicastVtep to protobuf text ToPbText() (string, error) - // ToYaml marshals PatternFlowGtpv1PnFlagMetricTag to YAML text + // ToYaml marshals VxlanV6TunnelDestinationIPModeUnicastVtep to YAML text ToYaml() (string, error) - // ToJson marshals PatternFlowGtpv1PnFlagMetricTag to JSON text + // ToJson marshals VxlanV6TunnelDestinationIPModeUnicastVtep to JSON text ToJson() (string, error) - // FromProto unmarshals PatternFlowGtpv1PnFlagMetricTag from protobuf object *otg.PatternFlowGtpv1PnFlagMetricTag - FromProto(msg *otg.PatternFlowGtpv1PnFlagMetricTag) (PatternFlowGtpv1PnFlagMetricTag, error) - // FromPbText unmarshals PatternFlowGtpv1PnFlagMetricTag from protobuf text + // FromProto unmarshals VxlanV6TunnelDestinationIPModeUnicastVtep from protobuf object *otg.VxlanV6TunnelDestinationIPModeUnicastVtep + FromProto(msg *otg.VxlanV6TunnelDestinationIPModeUnicastVtep) (VxlanV6TunnelDestinationIPModeUnicastVtep, error) + // FromPbText unmarshals VxlanV6TunnelDestinationIPModeUnicastVtep from protobuf text FromPbText(value string) error - // FromYaml unmarshals PatternFlowGtpv1PnFlagMetricTag from YAML text + // FromYaml unmarshals VxlanV6TunnelDestinationIPModeUnicastVtep from YAML text FromYaml(value string) error - // FromJson unmarshals PatternFlowGtpv1PnFlagMetricTag from JSON text + // FromJson unmarshals VxlanV6TunnelDestinationIPModeUnicastVtep from JSON text FromJson(value string) error - // Validate validates PatternFlowGtpv1PnFlagMetricTag + // Validate validates VxlanV6TunnelDestinationIPModeUnicastVtep Validate() error // A stringer function String() string // Clones the object - Clone() (PatternFlowGtpv1PnFlagMetricTag, error) + Clone() (VxlanV6TunnelDestinationIPModeUnicastVtep, error) validateToAndFrom() error validateObj(vObj *validation, set_default bool) setDefault() - // Name returns string, set in PatternFlowGtpv1PnFlagMetricTag. - Name() string - // SetName assigns string provided by user to PatternFlowGtpv1PnFlagMetricTag - SetName(value string) PatternFlowGtpv1PnFlagMetricTag - // Offset returns uint32, set in PatternFlowGtpv1PnFlagMetricTag. - Offset() uint32 - // SetOffset assigns uint32 provided by user to PatternFlowGtpv1PnFlagMetricTag - SetOffset(value uint32) PatternFlowGtpv1PnFlagMetricTag - // HasOffset checks if Offset has been set in PatternFlowGtpv1PnFlagMetricTag - HasOffset() bool - // Length returns uint32, set in PatternFlowGtpv1PnFlagMetricTag. - Length() uint32 - // SetLength assigns uint32 provided by user to PatternFlowGtpv1PnFlagMetricTag - SetLength(value uint32) PatternFlowGtpv1PnFlagMetricTag - // HasLength checks if Length has been set in PatternFlowGtpv1PnFlagMetricTag - HasLength() bool + // RemoteVtepAddress returns string, set in VxlanV6TunnelDestinationIPModeUnicastVtep. + RemoteVtepAddress() string + // SetRemoteVtepAddress assigns string provided by user to VxlanV6TunnelDestinationIPModeUnicastVtep + SetRemoteVtepAddress(value string) VxlanV6TunnelDestinationIPModeUnicastVtep + // HasRemoteVtepAddress checks if RemoteVtepAddress has been set in VxlanV6TunnelDestinationIPModeUnicastVtep + HasRemoteVtepAddress() bool + // ArpSuppressionCache returns VxlanV6TunnelDestinationIPModeUnicastVtepVxlanTunnelDestinationIPModeUnicastArpSuppressionCacheIterIter, set in VxlanV6TunnelDestinationIPModeUnicastVtep + ArpSuppressionCache() VxlanV6TunnelDestinationIPModeUnicastVtepVxlanTunnelDestinationIPModeUnicastArpSuppressionCacheIter + setNil() } -// Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field -// Name returns a string -func (obj *patternFlowGtpv1PnFlagMetricTag) Name() string { +// Remote VXLAN Tunnel End Point address +// RemoteVtepAddress returns a string +func (obj *vxlanV6TunnelDestinationIPModeUnicastVtep) RemoteVtepAddress() string { - return *obj.obj.Name + return *obj.obj.RemoteVtepAddress } -// Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field -// SetName sets the string value in the PatternFlowGtpv1PnFlagMetricTag object -func (obj *patternFlowGtpv1PnFlagMetricTag) SetName(value string) PatternFlowGtpv1PnFlagMetricTag { +// Remote VXLAN Tunnel End Point address +// RemoteVtepAddress returns a string +func (obj *vxlanV6TunnelDestinationIPModeUnicastVtep) HasRemoteVtepAddress() bool { + return obj.obj.RemoteVtepAddress != nil +} - obj.obj.Name = &value +// Remote VXLAN Tunnel End Point address +// SetRemoteVtepAddress sets the string value in the VxlanV6TunnelDestinationIPModeUnicastVtep object +func (obj *vxlanV6TunnelDestinationIPModeUnicastVtep) SetRemoteVtepAddress(value string) VxlanV6TunnelDestinationIPModeUnicastVtep { + + obj.obj.RemoteVtepAddress = &value return obj } -// Offset in bits relative to start of corresponding header field -// Offset returns a uint32 -func (obj *patternFlowGtpv1PnFlagMetricTag) Offset() uint32 { - - return *obj.obj.Offset +// Each VTEP maintains an ARP suppression cache table for known IP hosts and their associated MAC addresses in the VNI segment. When an end host in the VNI sends an ARP request for another end-host IP address, its local VTEP intercepts the ARP request and checks for the ARP-resolved IP address in its ARP suppression cache table. If it finds a match, the local VTEP sends an ARP response on behalf of the remote end host. +// ArpSuppressionCache returns a []VxlanTunnelDestinationIPModeUnicastArpSuppressionCache +func (obj *vxlanV6TunnelDestinationIPModeUnicastVtep) ArpSuppressionCache() VxlanV6TunnelDestinationIPModeUnicastVtepVxlanTunnelDestinationIPModeUnicastArpSuppressionCacheIter { + if len(obj.obj.ArpSuppressionCache) == 0 { + obj.obj.ArpSuppressionCache = []*otg.VxlanTunnelDestinationIPModeUnicastArpSuppressionCache{} + } + if obj.arpSuppressionCacheHolder == nil { + obj.arpSuppressionCacheHolder = newVxlanV6TunnelDestinationIPModeUnicastVtepVxlanTunnelDestinationIPModeUnicastArpSuppressionCacheIter(&obj.obj.ArpSuppressionCache).setMsg(obj) + } + return obj.arpSuppressionCacheHolder +} +type vxlanV6TunnelDestinationIPModeUnicastVtepVxlanTunnelDestinationIPModeUnicastArpSuppressionCacheIter struct { + obj *vxlanV6TunnelDestinationIPModeUnicastVtep + vxlanTunnelDestinationIPModeUnicastArpSuppressionCacheSlice []VxlanTunnelDestinationIPModeUnicastArpSuppressionCache + fieldPtr *[]*otg.VxlanTunnelDestinationIPModeUnicastArpSuppressionCache } -// Offset in bits relative to start of corresponding header field -// Offset returns a uint32 -func (obj *patternFlowGtpv1PnFlagMetricTag) HasOffset() bool { - return obj.obj.Offset != nil +func newVxlanV6TunnelDestinationIPModeUnicastVtepVxlanTunnelDestinationIPModeUnicastArpSuppressionCacheIter(ptr *[]*otg.VxlanTunnelDestinationIPModeUnicastArpSuppressionCache) VxlanV6TunnelDestinationIPModeUnicastVtepVxlanTunnelDestinationIPModeUnicastArpSuppressionCacheIter { + return &vxlanV6TunnelDestinationIPModeUnicastVtepVxlanTunnelDestinationIPModeUnicastArpSuppressionCacheIter{fieldPtr: ptr} } -// Offset in bits relative to start of corresponding header field -// SetOffset sets the uint32 value in the PatternFlowGtpv1PnFlagMetricTag object -func (obj *patternFlowGtpv1PnFlagMetricTag) SetOffset(value uint32) PatternFlowGtpv1PnFlagMetricTag { +type VxlanV6TunnelDestinationIPModeUnicastVtepVxlanTunnelDestinationIPModeUnicastArpSuppressionCacheIter interface { + setMsg(*vxlanV6TunnelDestinationIPModeUnicastVtep) VxlanV6TunnelDestinationIPModeUnicastVtepVxlanTunnelDestinationIPModeUnicastArpSuppressionCacheIter + Items() []VxlanTunnelDestinationIPModeUnicastArpSuppressionCache + Add() VxlanTunnelDestinationIPModeUnicastArpSuppressionCache + Append(items ...VxlanTunnelDestinationIPModeUnicastArpSuppressionCache) VxlanV6TunnelDestinationIPModeUnicastVtepVxlanTunnelDestinationIPModeUnicastArpSuppressionCacheIter + Set(index int, newObj VxlanTunnelDestinationIPModeUnicastArpSuppressionCache) VxlanV6TunnelDestinationIPModeUnicastVtepVxlanTunnelDestinationIPModeUnicastArpSuppressionCacheIter + Clear() VxlanV6TunnelDestinationIPModeUnicastVtepVxlanTunnelDestinationIPModeUnicastArpSuppressionCacheIter + clearHolderSlice() VxlanV6TunnelDestinationIPModeUnicastVtepVxlanTunnelDestinationIPModeUnicastArpSuppressionCacheIter + appendHolderSlice(item VxlanTunnelDestinationIPModeUnicastArpSuppressionCache) VxlanV6TunnelDestinationIPModeUnicastVtepVxlanTunnelDestinationIPModeUnicastArpSuppressionCacheIter +} - obj.obj.Offset = &value +func (obj *vxlanV6TunnelDestinationIPModeUnicastVtepVxlanTunnelDestinationIPModeUnicastArpSuppressionCacheIter) setMsg(msg *vxlanV6TunnelDestinationIPModeUnicastVtep) VxlanV6TunnelDestinationIPModeUnicastVtepVxlanTunnelDestinationIPModeUnicastArpSuppressionCacheIter { + obj.clearHolderSlice() + for _, val := range *obj.fieldPtr { + obj.appendHolderSlice(&vxlanTunnelDestinationIPModeUnicastArpSuppressionCache{obj: val}) + } + obj.obj = msg return obj } -// Number of bits to track for metrics starting from configured offset of corresponding header field -// Length returns a uint32 -func (obj *patternFlowGtpv1PnFlagMetricTag) Length() uint32 { - - return *obj.obj.Length - +func (obj *vxlanV6TunnelDestinationIPModeUnicastVtepVxlanTunnelDestinationIPModeUnicastArpSuppressionCacheIter) Items() []VxlanTunnelDestinationIPModeUnicastArpSuppressionCache { + return obj.vxlanTunnelDestinationIPModeUnicastArpSuppressionCacheSlice } -// Number of bits to track for metrics starting from configured offset of corresponding header field -// Length returns a uint32 -func (obj *patternFlowGtpv1PnFlagMetricTag) HasLength() bool { - return obj.obj.Length != nil +func (obj *vxlanV6TunnelDestinationIPModeUnicastVtepVxlanTunnelDestinationIPModeUnicastArpSuppressionCacheIter) Add() VxlanTunnelDestinationIPModeUnicastArpSuppressionCache { + newObj := &otg.VxlanTunnelDestinationIPModeUnicastArpSuppressionCache{} + *obj.fieldPtr = append(*obj.fieldPtr, newObj) + newLibObj := &vxlanTunnelDestinationIPModeUnicastArpSuppressionCache{obj: newObj} + newLibObj.setDefault() + obj.vxlanTunnelDestinationIPModeUnicastArpSuppressionCacheSlice = append(obj.vxlanTunnelDestinationIPModeUnicastArpSuppressionCacheSlice, newLibObj) + return newLibObj } -// Number of bits to track for metrics starting from configured offset of corresponding header field -// SetLength sets the uint32 value in the PatternFlowGtpv1PnFlagMetricTag object -func (obj *patternFlowGtpv1PnFlagMetricTag) SetLength(value uint32) PatternFlowGtpv1PnFlagMetricTag { +func (obj *vxlanV6TunnelDestinationIPModeUnicastVtepVxlanTunnelDestinationIPModeUnicastArpSuppressionCacheIter) Append(items ...VxlanTunnelDestinationIPModeUnicastArpSuppressionCache) VxlanV6TunnelDestinationIPModeUnicastVtepVxlanTunnelDestinationIPModeUnicastArpSuppressionCacheIter { + for _, item := range items { + newObj := item.Msg() + *obj.fieldPtr = append(*obj.fieldPtr, newObj) + obj.vxlanTunnelDestinationIPModeUnicastArpSuppressionCacheSlice = append(obj.vxlanTunnelDestinationIPModeUnicastArpSuppressionCacheSlice, item) + } + return obj +} - obj.obj.Length = &value +func (obj *vxlanV6TunnelDestinationIPModeUnicastVtepVxlanTunnelDestinationIPModeUnicastArpSuppressionCacheIter) Set(index int, newObj VxlanTunnelDestinationIPModeUnicastArpSuppressionCache) VxlanV6TunnelDestinationIPModeUnicastVtepVxlanTunnelDestinationIPModeUnicastArpSuppressionCacheIter { + (*obj.fieldPtr)[index] = newObj.Msg() + obj.vxlanTunnelDestinationIPModeUnicastArpSuppressionCacheSlice[index] = newObj + return obj +} +func (obj *vxlanV6TunnelDestinationIPModeUnicastVtepVxlanTunnelDestinationIPModeUnicastArpSuppressionCacheIter) Clear() VxlanV6TunnelDestinationIPModeUnicastVtepVxlanTunnelDestinationIPModeUnicastArpSuppressionCacheIter { + if len(*obj.fieldPtr) > 0 { + *obj.fieldPtr = []*otg.VxlanTunnelDestinationIPModeUnicastArpSuppressionCache{} + obj.vxlanTunnelDestinationIPModeUnicastArpSuppressionCacheSlice = []VxlanTunnelDestinationIPModeUnicastArpSuppressionCache{} + } + return obj +} +func (obj *vxlanV6TunnelDestinationIPModeUnicastVtepVxlanTunnelDestinationIPModeUnicastArpSuppressionCacheIter) clearHolderSlice() VxlanV6TunnelDestinationIPModeUnicastVtepVxlanTunnelDestinationIPModeUnicastArpSuppressionCacheIter { + if len(obj.vxlanTunnelDestinationIPModeUnicastArpSuppressionCacheSlice) > 0 { + obj.vxlanTunnelDestinationIPModeUnicastArpSuppressionCacheSlice = []VxlanTunnelDestinationIPModeUnicastArpSuppressionCache{} + } + return obj +} +func (obj *vxlanV6TunnelDestinationIPModeUnicastVtepVxlanTunnelDestinationIPModeUnicastArpSuppressionCacheIter) appendHolderSlice(item VxlanTunnelDestinationIPModeUnicastArpSuppressionCache) VxlanV6TunnelDestinationIPModeUnicastVtepVxlanTunnelDestinationIPModeUnicastArpSuppressionCacheIter { + obj.vxlanTunnelDestinationIPModeUnicastArpSuppressionCacheSlice = append(obj.vxlanTunnelDestinationIPModeUnicastArpSuppressionCacheSlice, item) return obj } -func (obj *patternFlowGtpv1PnFlagMetricTag) validateObj(vObj *validation, set_default bool) { +func (obj *vxlanV6TunnelDestinationIPModeUnicastVtep) validateObj(vObj *validation, set_default bool) { if set_default { obj.setDefault() } - // Name is required - if obj.obj.Name == nil { - vObj.validationErrors = append(vObj.validationErrors, "Name is required field on interface PatternFlowGtpv1PnFlagMetricTag") - } - - if obj.obj.Offset != nil { + if obj.obj.RemoteVtepAddress != nil { - if *obj.obj.Offset > 0 { - vObj.validationErrors = append( - vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowGtpv1PnFlagMetricTag.Offset <= 0 but Got %d", *obj.obj.Offset)) + err := obj.validateIpv6(obj.RemoteVtepAddress()) + if err != nil { + vObj.validationErrors = append(vObj.validationErrors, fmt.Sprintf("%s %s", err.Error(), "on VxlanV6TunnelDestinationIPModeUnicastVtep.RemoteVtepAddress")) } } - if obj.obj.Length != nil { + if len(obj.obj.ArpSuppressionCache) != 0 { - if *obj.obj.Length < 1 || *obj.obj.Length > 1 { - vObj.validationErrors = append( - vObj.validationErrors, - fmt.Sprintf("1 <= PatternFlowGtpv1PnFlagMetricTag.Length <= 1 but Got %d", *obj.obj.Length)) + if set_default { + obj.ArpSuppressionCache().clearHolderSlice() + for _, item := range obj.obj.ArpSuppressionCache { + obj.ArpSuppressionCache().appendHolderSlice(&vxlanTunnelDestinationIPModeUnicastArpSuppressionCache{obj: item}) + } + } + for _, item := range obj.ArpSuppressionCache().Items() { + item.validateObj(vObj, set_default) } } } -func (obj *patternFlowGtpv1PnFlagMetricTag) setDefault() { - if obj.obj.Offset == nil { - obj.SetOffset(0) - } - if obj.obj.Length == nil { - obj.SetLength(1) - } +func (obj *vxlanV6TunnelDestinationIPModeUnicastVtep) setDefault() { } -// ***** PatternFlowGtpv1MessageTypeCounter ***** -type patternFlowGtpv1MessageTypeCounter struct { +// ***** RsvpResourceAffinities ***** +type rsvpResourceAffinities struct { validation - obj *otg.PatternFlowGtpv1MessageTypeCounter + obj *otg.RsvpResourceAffinities } -func NewPatternFlowGtpv1MessageTypeCounter() PatternFlowGtpv1MessageTypeCounter { - obj := patternFlowGtpv1MessageTypeCounter{obj: &otg.PatternFlowGtpv1MessageTypeCounter{}} +func NewRsvpResourceAffinities() RsvpResourceAffinities { + obj := rsvpResourceAffinities{obj: &otg.RsvpResourceAffinities{}} obj.setDefault() return &obj } -func (obj *patternFlowGtpv1MessageTypeCounter) Msg() *otg.PatternFlowGtpv1MessageTypeCounter { +func (obj *rsvpResourceAffinities) Msg() *otg.RsvpResourceAffinities { return obj.obj } -func (obj *patternFlowGtpv1MessageTypeCounter) SetMsg(msg *otg.PatternFlowGtpv1MessageTypeCounter) PatternFlowGtpv1MessageTypeCounter { +func (obj *rsvpResourceAffinities) SetMsg(msg *otg.RsvpResourceAffinities) RsvpResourceAffinities { proto.Merge(obj.obj, msg) return obj } -func (obj *patternFlowGtpv1MessageTypeCounter) ToProto() (*otg.PatternFlowGtpv1MessageTypeCounter, error) { +func (obj *rsvpResourceAffinities) ToProto() (*otg.RsvpResourceAffinities, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -240771,7 +285773,7 @@ func (obj *patternFlowGtpv1MessageTypeCounter) ToProto() (*otg.PatternFlowGtpv1M return obj.Msg(), nil } -func (obj *patternFlowGtpv1MessageTypeCounter) FromProto(msg *otg.PatternFlowGtpv1MessageTypeCounter) (PatternFlowGtpv1MessageTypeCounter, error) { +func (obj *rsvpResourceAffinities) FromProto(msg *otg.RsvpResourceAffinities) (RsvpResourceAffinities, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -240780,7 +285782,7 @@ func (obj *patternFlowGtpv1MessageTypeCounter) FromProto(msg *otg.PatternFlowGtp return newObj, nil } -func (obj *patternFlowGtpv1MessageTypeCounter) ToPbText() (string, error) { +func (obj *rsvpResourceAffinities) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -240792,7 +285794,7 @@ func (obj *patternFlowGtpv1MessageTypeCounter) ToPbText() (string, error) { return string(protoMarshal), nil } -func (obj *patternFlowGtpv1MessageTypeCounter) FromPbText(value string) error { +func (obj *rsvpResourceAffinities) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj @@ -240805,7 +285807,7 @@ func (obj *patternFlowGtpv1MessageTypeCounter) FromPbText(value string) error { return retObj } -func (obj *patternFlowGtpv1MessageTypeCounter) ToYaml() (string, error) { +func (obj *rsvpResourceAffinities) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -240826,7 +285828,7 @@ func (obj *patternFlowGtpv1MessageTypeCounter) ToYaml() (string, error) { return string(data), nil } -func (obj *patternFlowGtpv1MessageTypeCounter) FromYaml(value string) error { +func (obj *rsvpResourceAffinities) FromYaml(value string) error { if value == "" { value = "{}" } @@ -240851,7 +285853,7 @@ func (obj *patternFlowGtpv1MessageTypeCounter) FromYaml(value string) error { return nil } -func (obj *patternFlowGtpv1MessageTypeCounter) ToJson() (string, error) { +func (obj *rsvpResourceAffinities) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -240869,7 +285871,7 @@ func (obj *patternFlowGtpv1MessageTypeCounter) ToJson() (string, error) { return string(data), nil } -func (obj *patternFlowGtpv1MessageTypeCounter) FromJson(value string) error { +func (obj *rsvpResourceAffinities) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -240890,19 +285892,19 @@ func (obj *patternFlowGtpv1MessageTypeCounter) FromJson(value string) error { return nil } -func (obj *patternFlowGtpv1MessageTypeCounter) validateToAndFrom() error { +func (obj *rsvpResourceAffinities) validateToAndFrom() error { // emptyVars() obj.validateObj(&obj.validation, true) return obj.validationResult() } -func (obj *patternFlowGtpv1MessageTypeCounter) Validate() error { +func (obj *rsvpResourceAffinities) Validate() error { // emptyVars() obj.validateObj(&obj.validation, false) return obj.validationResult() } -func (obj *patternFlowGtpv1MessageTypeCounter) String() string { +func (obj *rsvpResourceAffinities) String() string { str, err := obj.ToYaml() if err != nil { return err.Error() @@ -240910,12 +285912,12 @@ func (obj *patternFlowGtpv1MessageTypeCounter) String() string { return str } -func (obj *patternFlowGtpv1MessageTypeCounter) Clone() (PatternFlowGtpv1MessageTypeCounter, error) { +func (obj *rsvpResourceAffinities) Clone() (RsvpResourceAffinities, error) { vErr := obj.Validate() if vErr != nil { return nil, vErr } - newObj := NewPatternFlowGtpv1MessageTypeCounter() + newObj := NewRsvpResourceAffinities() data, err := proto.Marshal(obj.Msg()) if err != nil { return nil, err @@ -240927,199 +285929,207 @@ func (obj *patternFlowGtpv1MessageTypeCounter) Clone() (PatternFlowGtpv1MessageT return newObj, nil } -// PatternFlowGtpv1MessageTypeCounter is integer counter pattern -type PatternFlowGtpv1MessageTypeCounter interface { +// RsvpResourceAffinities is this is an optional object. If included, the extended SESSION_ATTRIBUTE object is sent in the Path message containing +// the additional fields included in this object. This contains a set of three bitmaps using which further constraints can be +// set on the path calculated for the LSP based on the Admin Group settings in the IGP (e.g ISIS or OSPF interface). +type RsvpResourceAffinities interface { Validation - // Msg marshals PatternFlowGtpv1MessageTypeCounter to protobuf object *otg.PatternFlowGtpv1MessageTypeCounter + // Msg marshals RsvpResourceAffinities to protobuf object *otg.RsvpResourceAffinities // and doesn't set defaults - Msg() *otg.PatternFlowGtpv1MessageTypeCounter - // SetMsg unmarshals PatternFlowGtpv1MessageTypeCounter from protobuf object *otg.PatternFlowGtpv1MessageTypeCounter + Msg() *otg.RsvpResourceAffinities + // SetMsg unmarshals RsvpResourceAffinities from protobuf object *otg.RsvpResourceAffinities // and doesn't set defaults - SetMsg(*otg.PatternFlowGtpv1MessageTypeCounter) PatternFlowGtpv1MessageTypeCounter - // ToProto marshals PatternFlowGtpv1MessageTypeCounter to protobuf object *otg.PatternFlowGtpv1MessageTypeCounter - ToProto() (*otg.PatternFlowGtpv1MessageTypeCounter, error) - // ToPbText marshals PatternFlowGtpv1MessageTypeCounter to protobuf text + SetMsg(*otg.RsvpResourceAffinities) RsvpResourceAffinities + // ToProto marshals RsvpResourceAffinities to protobuf object *otg.RsvpResourceAffinities + ToProto() (*otg.RsvpResourceAffinities, error) + // ToPbText marshals RsvpResourceAffinities to protobuf text ToPbText() (string, error) - // ToYaml marshals PatternFlowGtpv1MessageTypeCounter to YAML text + // ToYaml marshals RsvpResourceAffinities to YAML text ToYaml() (string, error) - // ToJson marshals PatternFlowGtpv1MessageTypeCounter to JSON text + // ToJson marshals RsvpResourceAffinities to JSON text ToJson() (string, error) - // FromProto unmarshals PatternFlowGtpv1MessageTypeCounter from protobuf object *otg.PatternFlowGtpv1MessageTypeCounter - FromProto(msg *otg.PatternFlowGtpv1MessageTypeCounter) (PatternFlowGtpv1MessageTypeCounter, error) - // FromPbText unmarshals PatternFlowGtpv1MessageTypeCounter from protobuf text + // FromProto unmarshals RsvpResourceAffinities from protobuf object *otg.RsvpResourceAffinities + FromProto(msg *otg.RsvpResourceAffinities) (RsvpResourceAffinities, error) + // FromPbText unmarshals RsvpResourceAffinities from protobuf text FromPbText(value string) error - // FromYaml unmarshals PatternFlowGtpv1MessageTypeCounter from YAML text + // FromYaml unmarshals RsvpResourceAffinities from YAML text FromYaml(value string) error - // FromJson unmarshals PatternFlowGtpv1MessageTypeCounter from JSON text + // FromJson unmarshals RsvpResourceAffinities from JSON text FromJson(value string) error - // Validate validates PatternFlowGtpv1MessageTypeCounter + // Validate validates RsvpResourceAffinities Validate() error // A stringer function String() string // Clones the object - Clone() (PatternFlowGtpv1MessageTypeCounter, error) + Clone() (RsvpResourceAffinities, error) validateToAndFrom() error validateObj(vObj *validation, set_default bool) setDefault() - // Start returns uint32, set in PatternFlowGtpv1MessageTypeCounter. - Start() uint32 - // SetStart assigns uint32 provided by user to PatternFlowGtpv1MessageTypeCounter - SetStart(value uint32) PatternFlowGtpv1MessageTypeCounter - // HasStart checks if Start has been set in PatternFlowGtpv1MessageTypeCounter - HasStart() bool - // Step returns uint32, set in PatternFlowGtpv1MessageTypeCounter. - Step() uint32 - // SetStep assigns uint32 provided by user to PatternFlowGtpv1MessageTypeCounter - SetStep(value uint32) PatternFlowGtpv1MessageTypeCounter - // HasStep checks if Step has been set in PatternFlowGtpv1MessageTypeCounter - HasStep() bool - // Count returns uint32, set in PatternFlowGtpv1MessageTypeCounter. - Count() uint32 - // SetCount assigns uint32 provided by user to PatternFlowGtpv1MessageTypeCounter - SetCount(value uint32) PatternFlowGtpv1MessageTypeCounter - // HasCount checks if Count has been set in PatternFlowGtpv1MessageTypeCounter - HasCount() bool + // ExcludeAny returns string, set in RsvpResourceAffinities. + ExcludeAny() string + // SetExcludeAny assigns string provided by user to RsvpResourceAffinities + SetExcludeAny(value string) RsvpResourceAffinities + // HasExcludeAny checks if ExcludeAny has been set in RsvpResourceAffinities + HasExcludeAny() bool + // IncludeAny returns string, set in RsvpResourceAffinities. + IncludeAny() string + // SetIncludeAny assigns string provided by user to RsvpResourceAffinities + SetIncludeAny(value string) RsvpResourceAffinities + // HasIncludeAny checks if IncludeAny has been set in RsvpResourceAffinities + HasIncludeAny() bool + // IncludeAll returns string, set in RsvpResourceAffinities. + IncludeAll() string + // SetIncludeAll assigns string provided by user to RsvpResourceAffinities + SetIncludeAll(value string) RsvpResourceAffinities + // HasIncludeAll checks if IncludeAll has been set in RsvpResourceAffinities + HasIncludeAll() bool } -// description is TBD -// Start returns a uint32 -func (obj *patternFlowGtpv1MessageTypeCounter) Start() uint32 { +// A 32-bit vector representing a set of attribute filters associated with a tunnel any of which renders a link unacceptable. A null set (all bits set to zero) doesn't render the link unacceptable. The most significant byte in the hex-string is the farthest to the left in the byte sequence. Leading zero bytes in the configured value may be omitted for brevity. +// ExcludeAny returns a string +func (obj *rsvpResourceAffinities) ExcludeAny() string { - return *obj.obj.Start + return *obj.obj.ExcludeAny } -// description is TBD -// Start returns a uint32 -func (obj *patternFlowGtpv1MessageTypeCounter) HasStart() bool { - return obj.obj.Start != nil +// A 32-bit vector representing a set of attribute filters associated with a tunnel any of which renders a link unacceptable. A null set (all bits set to zero) doesn't render the link unacceptable. The most significant byte in the hex-string is the farthest to the left in the byte sequence. Leading zero bytes in the configured value may be omitted for brevity. +// ExcludeAny returns a string +func (obj *rsvpResourceAffinities) HasExcludeAny() bool { + return obj.obj.ExcludeAny != nil } -// description is TBD -// SetStart sets the uint32 value in the PatternFlowGtpv1MessageTypeCounter object -func (obj *patternFlowGtpv1MessageTypeCounter) SetStart(value uint32) PatternFlowGtpv1MessageTypeCounter { +// A 32-bit vector representing a set of attribute filters associated with a tunnel any of which renders a link unacceptable. A null set (all bits set to zero) doesn't render the link unacceptable. The most significant byte in the hex-string is the farthest to the left in the byte sequence. Leading zero bytes in the configured value may be omitted for brevity. +// SetExcludeAny sets the string value in the RsvpResourceAffinities object +func (obj *rsvpResourceAffinities) SetExcludeAny(value string) RsvpResourceAffinities { - obj.obj.Start = &value + obj.obj.ExcludeAny = &value return obj } -// description is TBD -// Step returns a uint32 -func (obj *patternFlowGtpv1MessageTypeCounter) Step() uint32 { +// A 32-bit vector representing a set of attribute filters associated with a tunnel any of which renders a link acceptable. A null set (all bits set to zero) automatically passes. The most significant byte in the hex-string is the farthest to the left in the byte sequence. Leading zero bytes in the configured value may be omitted for brevity. +// IncludeAny returns a string +func (obj *rsvpResourceAffinities) IncludeAny() string { - return *obj.obj.Step + return *obj.obj.IncludeAny } -// description is TBD -// Step returns a uint32 -func (obj *patternFlowGtpv1MessageTypeCounter) HasStep() bool { - return obj.obj.Step != nil +// A 32-bit vector representing a set of attribute filters associated with a tunnel any of which renders a link acceptable. A null set (all bits set to zero) automatically passes. The most significant byte in the hex-string is the farthest to the left in the byte sequence. Leading zero bytes in the configured value may be omitted for brevity. +// IncludeAny returns a string +func (obj *rsvpResourceAffinities) HasIncludeAny() bool { + return obj.obj.IncludeAny != nil } -// description is TBD -// SetStep sets the uint32 value in the PatternFlowGtpv1MessageTypeCounter object -func (obj *patternFlowGtpv1MessageTypeCounter) SetStep(value uint32) PatternFlowGtpv1MessageTypeCounter { +// A 32-bit vector representing a set of attribute filters associated with a tunnel any of which renders a link acceptable. A null set (all bits set to zero) automatically passes. The most significant byte in the hex-string is the farthest to the left in the byte sequence. Leading zero bytes in the configured value may be omitted for brevity. +// SetIncludeAny sets the string value in the RsvpResourceAffinities object +func (obj *rsvpResourceAffinities) SetIncludeAny(value string) RsvpResourceAffinities { - obj.obj.Step = &value + obj.obj.IncludeAny = &value return obj } -// description is TBD -// Count returns a uint32 -func (obj *patternFlowGtpv1MessageTypeCounter) Count() uint32 { +// A 32-bit vector representing a set of attribute filters associated with a tunnel all of which must be present for a link to be acceptable. A null set (all bits set to zero) automatically passes. The most significant byte in the hex-string is the farthest to the left in the byte sequence. Leading zero bytes in the configured value may be omitted for brevity. +// IncludeAll returns a string +func (obj *rsvpResourceAffinities) IncludeAll() string { - return *obj.obj.Count + return *obj.obj.IncludeAll } -// description is TBD -// Count returns a uint32 -func (obj *patternFlowGtpv1MessageTypeCounter) HasCount() bool { - return obj.obj.Count != nil +// A 32-bit vector representing a set of attribute filters associated with a tunnel all of which must be present for a link to be acceptable. A null set (all bits set to zero) automatically passes. The most significant byte in the hex-string is the farthest to the left in the byte sequence. Leading zero bytes in the configured value may be omitted for brevity. +// IncludeAll returns a string +func (obj *rsvpResourceAffinities) HasIncludeAll() bool { + return obj.obj.IncludeAll != nil } -// description is TBD -// SetCount sets the uint32 value in the PatternFlowGtpv1MessageTypeCounter object -func (obj *patternFlowGtpv1MessageTypeCounter) SetCount(value uint32) PatternFlowGtpv1MessageTypeCounter { +// A 32-bit vector representing a set of attribute filters associated with a tunnel all of which must be present for a link to be acceptable. A null set (all bits set to zero) automatically passes. The most significant byte in the hex-string is the farthest to the left in the byte sequence. Leading zero bytes in the configured value may be omitted for brevity. +// SetIncludeAll sets the string value in the RsvpResourceAffinities object +func (obj *rsvpResourceAffinities) SetIncludeAll(value string) RsvpResourceAffinities { - obj.obj.Count = &value + obj.obj.IncludeAll = &value return obj } -func (obj *patternFlowGtpv1MessageTypeCounter) validateObj(vObj *validation, set_default bool) { +func (obj *rsvpResourceAffinities) validateObj(vObj *validation, set_default bool) { if set_default { obj.setDefault() } - if obj.obj.Start != nil { + if obj.obj.ExcludeAny != nil { - if *obj.obj.Start > 255 { + if len(*obj.obj.ExcludeAny) < 0 || len(*obj.obj.ExcludeAny) > 8 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowGtpv1MessageTypeCounter.Start <= 255 but Got %d", *obj.obj.Start)) + fmt.Sprintf( + "0 <= length of RsvpResourceAffinities.ExcludeAny <= 8 but Got %d", + len(*obj.obj.ExcludeAny))) } } - if obj.obj.Step != nil { + if obj.obj.IncludeAny != nil { - if *obj.obj.Step > 255 { + if len(*obj.obj.IncludeAny) < 0 || len(*obj.obj.IncludeAny) > 8 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowGtpv1MessageTypeCounter.Step <= 255 but Got %d", *obj.obj.Step)) + fmt.Sprintf( + "0 <= length of RsvpResourceAffinities.IncludeAny <= 8 but Got %d", + len(*obj.obj.IncludeAny))) } } - if obj.obj.Count != nil { + if obj.obj.IncludeAll != nil { - if *obj.obj.Count > 255 { + if len(*obj.obj.IncludeAll) < 0 || len(*obj.obj.IncludeAll) > 8 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowGtpv1MessageTypeCounter.Count <= 255 but Got %d", *obj.obj.Count)) + fmt.Sprintf( + "0 <= length of RsvpResourceAffinities.IncludeAll <= 8 but Got %d", + len(*obj.obj.IncludeAll))) } } } -func (obj *patternFlowGtpv1MessageTypeCounter) setDefault() { - if obj.obj.Start == nil { - obj.SetStart(0) +func (obj *rsvpResourceAffinities) setDefault() { + if obj.obj.ExcludeAny == nil { + obj.SetExcludeAny("0") } - if obj.obj.Step == nil { - obj.SetStep(1) + if obj.obj.IncludeAny == nil { + obj.SetIncludeAny("0") } - if obj.obj.Count == nil { - obj.SetCount(1) + if obj.obj.IncludeAll == nil { + obj.SetIncludeAll("0") } } -// ***** PatternFlowGtpv1MessageTypeMetricTag ***** -type patternFlowGtpv1MessageTypeMetricTag struct { +// ***** RsvpEroSubobject ***** +type rsvpEroSubobject struct { validation - obj *otg.PatternFlowGtpv1MessageTypeMetricTag + obj *otg.RsvpEroSubobject } -func NewPatternFlowGtpv1MessageTypeMetricTag() PatternFlowGtpv1MessageTypeMetricTag { - obj := patternFlowGtpv1MessageTypeMetricTag{obj: &otg.PatternFlowGtpv1MessageTypeMetricTag{}} +func NewRsvpEroSubobject() RsvpEroSubobject { + obj := rsvpEroSubobject{obj: &otg.RsvpEroSubobject{}} obj.setDefault() return &obj } -func (obj *patternFlowGtpv1MessageTypeMetricTag) Msg() *otg.PatternFlowGtpv1MessageTypeMetricTag { +func (obj *rsvpEroSubobject) Msg() *otg.RsvpEroSubobject { return obj.obj } -func (obj *patternFlowGtpv1MessageTypeMetricTag) SetMsg(msg *otg.PatternFlowGtpv1MessageTypeMetricTag) PatternFlowGtpv1MessageTypeMetricTag { +func (obj *rsvpEroSubobject) SetMsg(msg *otg.RsvpEroSubobject) RsvpEroSubobject { proto.Merge(obj.obj, msg) return obj } -func (obj *patternFlowGtpv1MessageTypeMetricTag) ToProto() (*otg.PatternFlowGtpv1MessageTypeMetricTag, error) { +func (obj *rsvpEroSubobject) ToProto() (*otg.RsvpEroSubobject, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -241127,7 +286137,7 @@ func (obj *patternFlowGtpv1MessageTypeMetricTag) ToProto() (*otg.PatternFlowGtpv return obj.Msg(), nil } -func (obj *patternFlowGtpv1MessageTypeMetricTag) FromProto(msg *otg.PatternFlowGtpv1MessageTypeMetricTag) (PatternFlowGtpv1MessageTypeMetricTag, error) { +func (obj *rsvpEroSubobject) FromProto(msg *otg.RsvpEroSubobject) (RsvpEroSubobject, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -241136,7 +286146,7 @@ func (obj *patternFlowGtpv1MessageTypeMetricTag) FromProto(msg *otg.PatternFlowG return newObj, nil } -func (obj *patternFlowGtpv1MessageTypeMetricTag) ToPbText() (string, error) { +func (obj *rsvpEroSubobject) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -241148,7 +286158,7 @@ func (obj *patternFlowGtpv1MessageTypeMetricTag) ToPbText() (string, error) { return string(protoMarshal), nil } -func (obj *patternFlowGtpv1MessageTypeMetricTag) FromPbText(value string) error { +func (obj *rsvpEroSubobject) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj @@ -241161,7 +286171,7 @@ func (obj *patternFlowGtpv1MessageTypeMetricTag) FromPbText(value string) error return retObj } -func (obj *patternFlowGtpv1MessageTypeMetricTag) ToYaml() (string, error) { +func (obj *rsvpEroSubobject) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -241182,7 +286192,7 @@ func (obj *patternFlowGtpv1MessageTypeMetricTag) ToYaml() (string, error) { return string(data), nil } -func (obj *patternFlowGtpv1MessageTypeMetricTag) FromYaml(value string) error { +func (obj *rsvpEroSubobject) FromYaml(value string) error { if value == "" { value = "{}" } @@ -241207,7 +286217,7 @@ func (obj *patternFlowGtpv1MessageTypeMetricTag) FromYaml(value string) error { return nil } -func (obj *patternFlowGtpv1MessageTypeMetricTag) ToJson() (string, error) { +func (obj *rsvpEroSubobject) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -241225,7 +286235,7 @@ func (obj *patternFlowGtpv1MessageTypeMetricTag) ToJson() (string, error) { return string(data), nil } -func (obj *patternFlowGtpv1MessageTypeMetricTag) FromJson(value string) error { +func (obj *rsvpEroSubobject) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -241246,19 +286256,19 @@ func (obj *patternFlowGtpv1MessageTypeMetricTag) FromJson(value string) error { return nil } -func (obj *patternFlowGtpv1MessageTypeMetricTag) validateToAndFrom() error { +func (obj *rsvpEroSubobject) validateToAndFrom() error { // emptyVars() obj.validateObj(&obj.validation, true) return obj.validationResult() } -func (obj *patternFlowGtpv1MessageTypeMetricTag) Validate() error { +func (obj *rsvpEroSubobject) Validate() error { // emptyVars() obj.validateObj(&obj.validation, false) return obj.validationResult() } -func (obj *patternFlowGtpv1MessageTypeMetricTag) String() string { +func (obj *rsvpEroSubobject) String() string { str, err := obj.ToYaml() if err != nil { return err.Error() @@ -241266,12 +286276,12 @@ func (obj *patternFlowGtpv1MessageTypeMetricTag) String() string { return str } -func (obj *patternFlowGtpv1MessageTypeMetricTag) Clone() (PatternFlowGtpv1MessageTypeMetricTag, error) { +func (obj *rsvpEroSubobject) Clone() (RsvpEroSubobject, error) { vErr := obj.Validate() if vErr != nil { return nil, vErr } - newObj := NewPatternFlowGtpv1MessageTypeMetricTag() + newObj := NewRsvpEroSubobject() data, err := proto.Marshal(obj.Msg()) if err != nil { return nil, err @@ -241283,183 +286293,286 @@ func (obj *patternFlowGtpv1MessageTypeMetricTag) Clone() (PatternFlowGtpv1Messag return newObj, nil } -// PatternFlowGtpv1MessageTypeMetricTag is metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. -type PatternFlowGtpv1MessageTypeMetricTag interface { +// RsvpEroSubobject is configuration for the ERO sub-object. +type RsvpEroSubobject interface { Validation - // Msg marshals PatternFlowGtpv1MessageTypeMetricTag to protobuf object *otg.PatternFlowGtpv1MessageTypeMetricTag + // Msg marshals RsvpEroSubobject to protobuf object *otg.RsvpEroSubobject // and doesn't set defaults - Msg() *otg.PatternFlowGtpv1MessageTypeMetricTag - // SetMsg unmarshals PatternFlowGtpv1MessageTypeMetricTag from protobuf object *otg.PatternFlowGtpv1MessageTypeMetricTag + Msg() *otg.RsvpEroSubobject + // SetMsg unmarshals RsvpEroSubobject from protobuf object *otg.RsvpEroSubobject // and doesn't set defaults - SetMsg(*otg.PatternFlowGtpv1MessageTypeMetricTag) PatternFlowGtpv1MessageTypeMetricTag - // ToProto marshals PatternFlowGtpv1MessageTypeMetricTag to protobuf object *otg.PatternFlowGtpv1MessageTypeMetricTag - ToProto() (*otg.PatternFlowGtpv1MessageTypeMetricTag, error) - // ToPbText marshals PatternFlowGtpv1MessageTypeMetricTag to protobuf text + SetMsg(*otg.RsvpEroSubobject) RsvpEroSubobject + // ToProto marshals RsvpEroSubobject to protobuf object *otg.RsvpEroSubobject + ToProto() (*otg.RsvpEroSubobject, error) + // ToPbText marshals RsvpEroSubobject to protobuf text ToPbText() (string, error) - // ToYaml marshals PatternFlowGtpv1MessageTypeMetricTag to YAML text + // ToYaml marshals RsvpEroSubobject to YAML text ToYaml() (string, error) - // ToJson marshals PatternFlowGtpv1MessageTypeMetricTag to JSON text + // ToJson marshals RsvpEroSubobject to JSON text ToJson() (string, error) - // FromProto unmarshals PatternFlowGtpv1MessageTypeMetricTag from protobuf object *otg.PatternFlowGtpv1MessageTypeMetricTag - FromProto(msg *otg.PatternFlowGtpv1MessageTypeMetricTag) (PatternFlowGtpv1MessageTypeMetricTag, error) - // FromPbText unmarshals PatternFlowGtpv1MessageTypeMetricTag from protobuf text + // FromProto unmarshals RsvpEroSubobject from protobuf object *otg.RsvpEroSubobject + FromProto(msg *otg.RsvpEroSubobject) (RsvpEroSubobject, error) + // FromPbText unmarshals RsvpEroSubobject from protobuf text FromPbText(value string) error - // FromYaml unmarshals PatternFlowGtpv1MessageTypeMetricTag from YAML text + // FromYaml unmarshals RsvpEroSubobject from YAML text FromYaml(value string) error - // FromJson unmarshals PatternFlowGtpv1MessageTypeMetricTag from JSON text + // FromJson unmarshals RsvpEroSubobject from JSON text FromJson(value string) error - // Validate validates PatternFlowGtpv1MessageTypeMetricTag + // Validate validates RsvpEroSubobject Validate() error // A stringer function String() string // Clones the object - Clone() (PatternFlowGtpv1MessageTypeMetricTag, error) + Clone() (RsvpEroSubobject, error) validateToAndFrom() error validateObj(vObj *validation, set_default bool) setDefault() - // Name returns string, set in PatternFlowGtpv1MessageTypeMetricTag. - Name() string - // SetName assigns string provided by user to PatternFlowGtpv1MessageTypeMetricTag - SetName(value string) PatternFlowGtpv1MessageTypeMetricTag - // Offset returns uint32, set in PatternFlowGtpv1MessageTypeMetricTag. - Offset() uint32 - // SetOffset assigns uint32 provided by user to PatternFlowGtpv1MessageTypeMetricTag - SetOffset(value uint32) PatternFlowGtpv1MessageTypeMetricTag - // HasOffset checks if Offset has been set in PatternFlowGtpv1MessageTypeMetricTag - HasOffset() bool - // Length returns uint32, set in PatternFlowGtpv1MessageTypeMetricTag. - Length() uint32 - // SetLength assigns uint32 provided by user to PatternFlowGtpv1MessageTypeMetricTag - SetLength(value uint32) PatternFlowGtpv1MessageTypeMetricTag - // HasLength checks if Length has been set in PatternFlowGtpv1MessageTypeMetricTag - HasLength() bool + // Type returns RsvpEroSubobjectTypeEnum, set in RsvpEroSubobject + Type() RsvpEroSubobjectTypeEnum + // SetType assigns RsvpEroSubobjectTypeEnum provided by user to RsvpEroSubobject + SetType(value RsvpEroSubobjectTypeEnum) RsvpEroSubobject + // HasType checks if Type has been set in RsvpEroSubobject + HasType() bool + // Ipv4Address returns string, set in RsvpEroSubobject. + Ipv4Address() string + // SetIpv4Address assigns string provided by user to RsvpEroSubobject + SetIpv4Address(value string) RsvpEroSubobject + // HasIpv4Address checks if Ipv4Address has been set in RsvpEroSubobject + HasIpv4Address() bool + // PrefixLength returns uint32, set in RsvpEroSubobject. + PrefixLength() uint32 + // SetPrefixLength assigns uint32 provided by user to RsvpEroSubobject + SetPrefixLength(value uint32) RsvpEroSubobject + // HasPrefixLength checks if PrefixLength has been set in RsvpEroSubobject + HasPrefixLength() bool + // AsNumber returns uint32, set in RsvpEroSubobject. + AsNumber() uint32 + // SetAsNumber assigns uint32 provided by user to RsvpEroSubobject + SetAsNumber(value uint32) RsvpEroSubobject + // HasAsNumber checks if AsNumber has been set in RsvpEroSubobject + HasAsNumber() bool + // HopType returns RsvpEroSubobjectHopTypeEnum, set in RsvpEroSubobject + HopType() RsvpEroSubobjectHopTypeEnum + // SetHopType assigns RsvpEroSubobjectHopTypeEnum provided by user to RsvpEroSubobject + SetHopType(value RsvpEroSubobjectHopTypeEnum) RsvpEroSubobject + // HasHopType checks if HopType has been set in RsvpEroSubobject + HasHopType() bool } -// Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field -// Name returns a string -func (obj *patternFlowGtpv1MessageTypeMetricTag) Name() string { +type RsvpEroSubobjectTypeEnum string - return *obj.obj.Name +// Enum of Type on RsvpEroSubobject +var RsvpEroSubobjectType = struct { + IPV4 RsvpEroSubobjectTypeEnum + AS_NUMBER RsvpEroSubobjectTypeEnum +}{ + IPV4: RsvpEroSubobjectTypeEnum("ipv4"), + AS_NUMBER: RsvpEroSubobjectTypeEnum("as_number"), +} +func (obj *rsvpEroSubobject) Type() RsvpEroSubobjectTypeEnum { + return RsvpEroSubobjectTypeEnum(obj.obj.Type.Enum().String()) } -// Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field -// SetName sets the string value in the PatternFlowGtpv1MessageTypeMetricTag object -func (obj *patternFlowGtpv1MessageTypeMetricTag) SetName(value string) PatternFlowGtpv1MessageTypeMetricTag { +// The type of the ERO sub-object, one of IPv4 Address or AS Number. +// Type returns a string +func (obj *rsvpEroSubobject) HasType() bool { + return obj.obj.Type != nil +} + +func (obj *rsvpEroSubobject) SetType(value RsvpEroSubobjectTypeEnum) RsvpEroSubobject { + intValue, ok := otg.RsvpEroSubobject_Type_Enum_value[string(value)] + if !ok { + obj.validationErrors = append(obj.validationErrors, fmt.Sprintf( + "%s is not a valid choice on RsvpEroSubobjectTypeEnum", string(value))) + return obj + } + enumValue := otg.RsvpEroSubobject_Type_Enum(intValue) + obj.obj.Type = &enumValue - obj.obj.Name = &value return obj } -// Offset in bits relative to start of corresponding header field -// Offset returns a uint32 -func (obj *patternFlowGtpv1MessageTypeMetricTag) Offset() uint32 { +// IPv4 address that this LSP should traverse through. This field is applicable only if the value of 'type' is set to 'ipv4'. +// Ipv4Address returns a string +func (obj *rsvpEroSubobject) Ipv4Address() string { - return *obj.obj.Offset + return *obj.obj.Ipv4Address } -// Offset in bits relative to start of corresponding header field -// Offset returns a uint32 -func (obj *patternFlowGtpv1MessageTypeMetricTag) HasOffset() bool { - return obj.obj.Offset != nil +// IPv4 address that this LSP should traverse through. This field is applicable only if the value of 'type' is set to 'ipv4'. +// Ipv4Address returns a string +func (obj *rsvpEroSubobject) HasIpv4Address() bool { + return obj.obj.Ipv4Address != nil } -// Offset in bits relative to start of corresponding header field -// SetOffset sets the uint32 value in the PatternFlowGtpv1MessageTypeMetricTag object -func (obj *patternFlowGtpv1MessageTypeMetricTag) SetOffset(value uint32) PatternFlowGtpv1MessageTypeMetricTag { +// IPv4 address that this LSP should traverse through. This field is applicable only if the value of 'type' is set to 'ipv4'. +// SetIpv4Address sets the string value in the RsvpEroSubobject object +func (obj *rsvpEroSubobject) SetIpv4Address(value string) RsvpEroSubobject { - obj.obj.Offset = &value + obj.obj.Ipv4Address = &value return obj } -// Number of bits to track for metrics starting from configured offset of corresponding header field -// Length returns a uint32 -func (obj *patternFlowGtpv1MessageTypeMetricTag) Length() uint32 { +// Prefix length for the IPv4 address in the ERO sub-object. This field is applicable only if the value of 'type' is set to 'ipv4'. +// PrefixLength returns a uint32 +func (obj *rsvpEroSubobject) PrefixLength() uint32 { - return *obj.obj.Length + return *obj.obj.PrefixLength } -// Number of bits to track for metrics starting from configured offset of corresponding header field -// Length returns a uint32 -func (obj *patternFlowGtpv1MessageTypeMetricTag) HasLength() bool { - return obj.obj.Length != nil +// Prefix length for the IPv4 address in the ERO sub-object. This field is applicable only if the value of 'type' is set to 'ipv4'. +// PrefixLength returns a uint32 +func (obj *rsvpEroSubobject) HasPrefixLength() bool { + return obj.obj.PrefixLength != nil +} + +// Prefix length for the IPv4 address in the ERO sub-object. This field is applicable only if the value of 'type' is set to 'ipv4'. +// SetPrefixLength sets the uint32 value in the RsvpEroSubobject object +func (obj *rsvpEroSubobject) SetPrefixLength(value uint32) RsvpEroSubobject { + + obj.obj.PrefixLength = &value + return obj +} + +// Autonomous System number to be set in the ERO sub-object that this LSP should traverse through. This field is applicable only if the value of 'type' is set to 'as_number'. Note that as per RFC3209, 4-byte AS encoding is not supported. +// AsNumber returns a uint32 +func (obj *rsvpEroSubobject) AsNumber() uint32 { + + return *obj.obj.AsNumber + +} + +// Autonomous System number to be set in the ERO sub-object that this LSP should traverse through. This field is applicable only if the value of 'type' is set to 'as_number'. Note that as per RFC3209, 4-byte AS encoding is not supported. +// AsNumber returns a uint32 +func (obj *rsvpEroSubobject) HasAsNumber() bool { + return obj.obj.AsNumber != nil +} + +// Autonomous System number to be set in the ERO sub-object that this LSP should traverse through. This field is applicable only if the value of 'type' is set to 'as_number'. Note that as per RFC3209, 4-byte AS encoding is not supported. +// SetAsNumber sets the uint32 value in the RsvpEroSubobject object +func (obj *rsvpEroSubobject) SetAsNumber(value uint32) RsvpEroSubobject { + + obj.obj.AsNumber = &value + return obj +} + +type RsvpEroSubobjectHopTypeEnum string + +// Enum of HopType on RsvpEroSubobject +var RsvpEroSubobjectHopType = struct { + STRICT RsvpEroSubobjectHopTypeEnum + LOOSE RsvpEroSubobjectHopTypeEnum +}{ + STRICT: RsvpEroSubobjectHopTypeEnum("strict"), + LOOSE: RsvpEroSubobjectHopTypeEnum("loose"), +} + +func (obj *rsvpEroSubobject) HopType() RsvpEroSubobjectHopTypeEnum { + return RsvpEroSubobjectHopTypeEnum(obj.obj.HopType.Enum().String()) +} + +// The hop type of the ERO sub-object, one of Strict or Loose. +// HopType returns a string +func (obj *rsvpEroSubobject) HasHopType() bool { + return obj.obj.HopType != nil } -// Number of bits to track for metrics starting from configured offset of corresponding header field -// SetLength sets the uint32 value in the PatternFlowGtpv1MessageTypeMetricTag object -func (obj *patternFlowGtpv1MessageTypeMetricTag) SetLength(value uint32) PatternFlowGtpv1MessageTypeMetricTag { +func (obj *rsvpEroSubobject) SetHopType(value RsvpEroSubobjectHopTypeEnum) RsvpEroSubobject { + intValue, ok := otg.RsvpEroSubobject_HopType_Enum_value[string(value)] + if !ok { + obj.validationErrors = append(obj.validationErrors, fmt.Sprintf( + "%s is not a valid choice on RsvpEroSubobjectHopTypeEnum", string(value))) + return obj + } + enumValue := otg.RsvpEroSubobject_HopType_Enum(intValue) + obj.obj.HopType = &enumValue - obj.obj.Length = &value return obj } -func (obj *patternFlowGtpv1MessageTypeMetricTag) validateObj(vObj *validation, set_default bool) { +func (obj *rsvpEroSubobject) validateObj(vObj *validation, set_default bool) { if set_default { obj.setDefault() } - // Name is required - if obj.obj.Name == nil { - vObj.validationErrors = append(vObj.validationErrors, "Name is required field on interface PatternFlowGtpv1MessageTypeMetricTag") + if obj.obj.Ipv4Address != nil { + + err := obj.validateIpv4(obj.Ipv4Address()) + if err != nil { + vObj.validationErrors = append(vObj.validationErrors, fmt.Sprintf("%s %s", err.Error(), "on RsvpEroSubobject.Ipv4Address")) + } + } - if obj.obj.Offset != nil { + if obj.obj.PrefixLength != nil { - if *obj.obj.Offset > 7 { + if *obj.obj.PrefixLength > 32 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowGtpv1MessageTypeMetricTag.Offset <= 7 but Got %d", *obj.obj.Offset)) + fmt.Sprintf("0 <= RsvpEroSubobject.PrefixLength <= 32 but Got %d", *obj.obj.PrefixLength)) } } - if obj.obj.Length != nil { + if obj.obj.AsNumber != nil { - if *obj.obj.Length < 1 || *obj.obj.Length > 8 { + if *obj.obj.AsNumber > 65535 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("1 <= PatternFlowGtpv1MessageTypeMetricTag.Length <= 8 but Got %d", *obj.obj.Length)) + fmt.Sprintf("0 <= RsvpEroSubobject.AsNumber <= 65535 but Got %d", *obj.obj.AsNumber)) } } } -func (obj *patternFlowGtpv1MessageTypeMetricTag) setDefault() { - if obj.obj.Offset == nil { - obj.SetOffset(0) +func (obj *rsvpEroSubobject) setDefault() { + if obj.obj.Type == nil { + obj.SetType(RsvpEroSubobjectType.IPV4) + } - if obj.obj.Length == nil { - obj.SetLength(8) + if obj.obj.Ipv4Address == nil { + obj.SetIpv4Address("0.0.0.0") + } + if obj.obj.PrefixLength == nil { + obj.SetPrefixLength(32) + } + if obj.obj.AsNumber == nil { + obj.SetAsNumber(0) + } + if obj.obj.HopType == nil { + obj.SetHopType(RsvpEroSubobjectHopType.LOOSE) + } } -// ***** PatternFlowGtpv1MessageLengthCounter ***** -type patternFlowGtpv1MessageLengthCounter struct { +// ***** PatternFlowIpv4PriorityRawCounter ***** +type patternFlowIpv4PriorityRawCounter struct { validation - obj *otg.PatternFlowGtpv1MessageLengthCounter + obj *otg.PatternFlowIpv4PriorityRawCounter } -func NewPatternFlowGtpv1MessageLengthCounter() PatternFlowGtpv1MessageLengthCounter { - obj := patternFlowGtpv1MessageLengthCounter{obj: &otg.PatternFlowGtpv1MessageLengthCounter{}} +func NewPatternFlowIpv4PriorityRawCounter() PatternFlowIpv4PriorityRawCounter { + obj := patternFlowIpv4PriorityRawCounter{obj: &otg.PatternFlowIpv4PriorityRawCounter{}} obj.setDefault() return &obj } -func (obj *patternFlowGtpv1MessageLengthCounter) Msg() *otg.PatternFlowGtpv1MessageLengthCounter { +func (obj *patternFlowIpv4PriorityRawCounter) Msg() *otg.PatternFlowIpv4PriorityRawCounter { return obj.obj } -func (obj *patternFlowGtpv1MessageLengthCounter) SetMsg(msg *otg.PatternFlowGtpv1MessageLengthCounter) PatternFlowGtpv1MessageLengthCounter { +func (obj *patternFlowIpv4PriorityRawCounter) SetMsg(msg *otg.PatternFlowIpv4PriorityRawCounter) PatternFlowIpv4PriorityRawCounter { proto.Merge(obj.obj, msg) return obj } -func (obj *patternFlowGtpv1MessageLengthCounter) ToProto() (*otg.PatternFlowGtpv1MessageLengthCounter, error) { +func (obj *patternFlowIpv4PriorityRawCounter) ToProto() (*otg.PatternFlowIpv4PriorityRawCounter, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -241467,7 +286580,7 @@ func (obj *patternFlowGtpv1MessageLengthCounter) ToProto() (*otg.PatternFlowGtpv return obj.Msg(), nil } -func (obj *patternFlowGtpv1MessageLengthCounter) FromProto(msg *otg.PatternFlowGtpv1MessageLengthCounter) (PatternFlowGtpv1MessageLengthCounter, error) { +func (obj *patternFlowIpv4PriorityRawCounter) FromProto(msg *otg.PatternFlowIpv4PriorityRawCounter) (PatternFlowIpv4PriorityRawCounter, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -241476,7 +286589,7 @@ func (obj *patternFlowGtpv1MessageLengthCounter) FromProto(msg *otg.PatternFlowG return newObj, nil } -func (obj *patternFlowGtpv1MessageLengthCounter) ToPbText() (string, error) { +func (obj *patternFlowIpv4PriorityRawCounter) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -241488,7 +286601,7 @@ func (obj *patternFlowGtpv1MessageLengthCounter) ToPbText() (string, error) { return string(protoMarshal), nil } -func (obj *patternFlowGtpv1MessageLengthCounter) FromPbText(value string) error { +func (obj *patternFlowIpv4PriorityRawCounter) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj @@ -241501,7 +286614,7 @@ func (obj *patternFlowGtpv1MessageLengthCounter) FromPbText(value string) error return retObj } -func (obj *patternFlowGtpv1MessageLengthCounter) ToYaml() (string, error) { +func (obj *patternFlowIpv4PriorityRawCounter) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -241522,7 +286635,7 @@ func (obj *patternFlowGtpv1MessageLengthCounter) ToYaml() (string, error) { return string(data), nil } -func (obj *patternFlowGtpv1MessageLengthCounter) FromYaml(value string) error { +func (obj *patternFlowIpv4PriorityRawCounter) FromYaml(value string) error { if value == "" { value = "{}" } @@ -241547,7 +286660,7 @@ func (obj *patternFlowGtpv1MessageLengthCounter) FromYaml(value string) error { return nil } -func (obj *patternFlowGtpv1MessageLengthCounter) ToJson() (string, error) { +func (obj *patternFlowIpv4PriorityRawCounter) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -241565,7 +286678,7 @@ func (obj *patternFlowGtpv1MessageLengthCounter) ToJson() (string, error) { return string(data), nil } -func (obj *patternFlowGtpv1MessageLengthCounter) FromJson(value string) error { +func (obj *patternFlowIpv4PriorityRawCounter) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -241586,19 +286699,19 @@ func (obj *patternFlowGtpv1MessageLengthCounter) FromJson(value string) error { return nil } -func (obj *patternFlowGtpv1MessageLengthCounter) validateToAndFrom() error { +func (obj *patternFlowIpv4PriorityRawCounter) validateToAndFrom() error { // emptyVars() obj.validateObj(&obj.validation, true) return obj.validationResult() } -func (obj *patternFlowGtpv1MessageLengthCounter) Validate() error { +func (obj *patternFlowIpv4PriorityRawCounter) Validate() error { // emptyVars() obj.validateObj(&obj.validation, false) return obj.validationResult() } -func (obj *patternFlowGtpv1MessageLengthCounter) String() string { +func (obj *patternFlowIpv4PriorityRawCounter) String() string { str, err := obj.ToYaml() if err != nil { return err.Error() @@ -241606,12 +286719,12 @@ func (obj *patternFlowGtpv1MessageLengthCounter) String() string { return str } -func (obj *patternFlowGtpv1MessageLengthCounter) Clone() (PatternFlowGtpv1MessageLengthCounter, error) { +func (obj *patternFlowIpv4PriorityRawCounter) Clone() (PatternFlowIpv4PriorityRawCounter, error) { vErr := obj.Validate() if vErr != nil { return nil, vErr } - newObj := NewPatternFlowGtpv1MessageLengthCounter() + newObj := NewPatternFlowIpv4PriorityRawCounter() data, err := proto.Marshal(obj.Msg()) if err != nil { return nil, err @@ -241623,63 +286736,63 @@ func (obj *patternFlowGtpv1MessageLengthCounter) Clone() (PatternFlowGtpv1Messag return newObj, nil } -// PatternFlowGtpv1MessageLengthCounter is integer counter pattern -type PatternFlowGtpv1MessageLengthCounter interface { +// PatternFlowIpv4PriorityRawCounter is integer counter pattern +type PatternFlowIpv4PriorityRawCounter interface { Validation - // Msg marshals PatternFlowGtpv1MessageLengthCounter to protobuf object *otg.PatternFlowGtpv1MessageLengthCounter + // Msg marshals PatternFlowIpv4PriorityRawCounter to protobuf object *otg.PatternFlowIpv4PriorityRawCounter // and doesn't set defaults - Msg() *otg.PatternFlowGtpv1MessageLengthCounter - // SetMsg unmarshals PatternFlowGtpv1MessageLengthCounter from protobuf object *otg.PatternFlowGtpv1MessageLengthCounter + Msg() *otg.PatternFlowIpv4PriorityRawCounter + // SetMsg unmarshals PatternFlowIpv4PriorityRawCounter from protobuf object *otg.PatternFlowIpv4PriorityRawCounter // and doesn't set defaults - SetMsg(*otg.PatternFlowGtpv1MessageLengthCounter) PatternFlowGtpv1MessageLengthCounter - // ToProto marshals PatternFlowGtpv1MessageLengthCounter to protobuf object *otg.PatternFlowGtpv1MessageLengthCounter - ToProto() (*otg.PatternFlowGtpv1MessageLengthCounter, error) - // ToPbText marshals PatternFlowGtpv1MessageLengthCounter to protobuf text + SetMsg(*otg.PatternFlowIpv4PriorityRawCounter) PatternFlowIpv4PriorityRawCounter + // ToProto marshals PatternFlowIpv4PriorityRawCounter to protobuf object *otg.PatternFlowIpv4PriorityRawCounter + ToProto() (*otg.PatternFlowIpv4PriorityRawCounter, error) + // ToPbText marshals PatternFlowIpv4PriorityRawCounter to protobuf text ToPbText() (string, error) - // ToYaml marshals PatternFlowGtpv1MessageLengthCounter to YAML text + // ToYaml marshals PatternFlowIpv4PriorityRawCounter to YAML text ToYaml() (string, error) - // ToJson marshals PatternFlowGtpv1MessageLengthCounter to JSON text + // ToJson marshals PatternFlowIpv4PriorityRawCounter to JSON text ToJson() (string, error) - // FromProto unmarshals PatternFlowGtpv1MessageLengthCounter from protobuf object *otg.PatternFlowGtpv1MessageLengthCounter - FromProto(msg *otg.PatternFlowGtpv1MessageLengthCounter) (PatternFlowGtpv1MessageLengthCounter, error) - // FromPbText unmarshals PatternFlowGtpv1MessageLengthCounter from protobuf text + // FromProto unmarshals PatternFlowIpv4PriorityRawCounter from protobuf object *otg.PatternFlowIpv4PriorityRawCounter + FromProto(msg *otg.PatternFlowIpv4PriorityRawCounter) (PatternFlowIpv4PriorityRawCounter, error) + // FromPbText unmarshals PatternFlowIpv4PriorityRawCounter from protobuf text FromPbText(value string) error - // FromYaml unmarshals PatternFlowGtpv1MessageLengthCounter from YAML text + // FromYaml unmarshals PatternFlowIpv4PriorityRawCounter from YAML text FromYaml(value string) error - // FromJson unmarshals PatternFlowGtpv1MessageLengthCounter from JSON text + // FromJson unmarshals PatternFlowIpv4PriorityRawCounter from JSON text FromJson(value string) error - // Validate validates PatternFlowGtpv1MessageLengthCounter + // Validate validates PatternFlowIpv4PriorityRawCounter Validate() error // A stringer function String() string // Clones the object - Clone() (PatternFlowGtpv1MessageLengthCounter, error) + Clone() (PatternFlowIpv4PriorityRawCounter, error) validateToAndFrom() error validateObj(vObj *validation, set_default bool) setDefault() - // Start returns uint32, set in PatternFlowGtpv1MessageLengthCounter. + // Start returns uint32, set in PatternFlowIpv4PriorityRawCounter. Start() uint32 - // SetStart assigns uint32 provided by user to PatternFlowGtpv1MessageLengthCounter - SetStart(value uint32) PatternFlowGtpv1MessageLengthCounter - // HasStart checks if Start has been set in PatternFlowGtpv1MessageLengthCounter + // SetStart assigns uint32 provided by user to PatternFlowIpv4PriorityRawCounter + SetStart(value uint32) PatternFlowIpv4PriorityRawCounter + // HasStart checks if Start has been set in PatternFlowIpv4PriorityRawCounter HasStart() bool - // Step returns uint32, set in PatternFlowGtpv1MessageLengthCounter. + // Step returns uint32, set in PatternFlowIpv4PriorityRawCounter. Step() uint32 - // SetStep assigns uint32 provided by user to PatternFlowGtpv1MessageLengthCounter - SetStep(value uint32) PatternFlowGtpv1MessageLengthCounter - // HasStep checks if Step has been set in PatternFlowGtpv1MessageLengthCounter + // SetStep assigns uint32 provided by user to PatternFlowIpv4PriorityRawCounter + SetStep(value uint32) PatternFlowIpv4PriorityRawCounter + // HasStep checks if Step has been set in PatternFlowIpv4PriorityRawCounter HasStep() bool - // Count returns uint32, set in PatternFlowGtpv1MessageLengthCounter. + // Count returns uint32, set in PatternFlowIpv4PriorityRawCounter. Count() uint32 - // SetCount assigns uint32 provided by user to PatternFlowGtpv1MessageLengthCounter - SetCount(value uint32) PatternFlowGtpv1MessageLengthCounter - // HasCount checks if Count has been set in PatternFlowGtpv1MessageLengthCounter + // SetCount assigns uint32 provided by user to PatternFlowIpv4PriorityRawCounter + SetCount(value uint32) PatternFlowIpv4PriorityRawCounter + // HasCount checks if Count has been set in PatternFlowIpv4PriorityRawCounter HasCount() bool } // description is TBD // Start returns a uint32 -func (obj *patternFlowGtpv1MessageLengthCounter) Start() uint32 { +func (obj *patternFlowIpv4PriorityRawCounter) Start() uint32 { return *obj.obj.Start @@ -241687,13 +286800,13 @@ func (obj *patternFlowGtpv1MessageLengthCounter) Start() uint32 { // description is TBD // Start returns a uint32 -func (obj *patternFlowGtpv1MessageLengthCounter) HasStart() bool { +func (obj *patternFlowIpv4PriorityRawCounter) HasStart() bool { return obj.obj.Start != nil } // description is TBD -// SetStart sets the uint32 value in the PatternFlowGtpv1MessageLengthCounter object -func (obj *patternFlowGtpv1MessageLengthCounter) SetStart(value uint32) PatternFlowGtpv1MessageLengthCounter { +// SetStart sets the uint32 value in the PatternFlowIpv4PriorityRawCounter object +func (obj *patternFlowIpv4PriorityRawCounter) SetStart(value uint32) PatternFlowIpv4PriorityRawCounter { obj.obj.Start = &value return obj @@ -241701,7 +286814,7 @@ func (obj *patternFlowGtpv1MessageLengthCounter) SetStart(value uint32) PatternF // description is TBD // Step returns a uint32 -func (obj *patternFlowGtpv1MessageLengthCounter) Step() uint32 { +func (obj *patternFlowIpv4PriorityRawCounter) Step() uint32 { return *obj.obj.Step @@ -241709,13 +286822,13 @@ func (obj *patternFlowGtpv1MessageLengthCounter) Step() uint32 { // description is TBD // Step returns a uint32 -func (obj *patternFlowGtpv1MessageLengthCounter) HasStep() bool { +func (obj *patternFlowIpv4PriorityRawCounter) HasStep() bool { return obj.obj.Step != nil } // description is TBD -// SetStep sets the uint32 value in the PatternFlowGtpv1MessageLengthCounter object -func (obj *patternFlowGtpv1MessageLengthCounter) SetStep(value uint32) PatternFlowGtpv1MessageLengthCounter { +// SetStep sets the uint32 value in the PatternFlowIpv4PriorityRawCounter object +func (obj *patternFlowIpv4PriorityRawCounter) SetStep(value uint32) PatternFlowIpv4PriorityRawCounter { obj.obj.Step = &value return obj @@ -241723,7 +286836,7 @@ func (obj *patternFlowGtpv1MessageLengthCounter) SetStep(value uint32) PatternFl // description is TBD // Count returns a uint32 -func (obj *patternFlowGtpv1MessageLengthCounter) Count() uint32 { +func (obj *patternFlowIpv4PriorityRawCounter) Count() uint32 { return *obj.obj.Count @@ -241731,56 +286844,56 @@ func (obj *patternFlowGtpv1MessageLengthCounter) Count() uint32 { // description is TBD // Count returns a uint32 -func (obj *patternFlowGtpv1MessageLengthCounter) HasCount() bool { +func (obj *patternFlowIpv4PriorityRawCounter) HasCount() bool { return obj.obj.Count != nil } // description is TBD -// SetCount sets the uint32 value in the PatternFlowGtpv1MessageLengthCounter object -func (obj *patternFlowGtpv1MessageLengthCounter) SetCount(value uint32) PatternFlowGtpv1MessageLengthCounter { +// SetCount sets the uint32 value in the PatternFlowIpv4PriorityRawCounter object +func (obj *patternFlowIpv4PriorityRawCounter) SetCount(value uint32) PatternFlowIpv4PriorityRawCounter { obj.obj.Count = &value return obj } -func (obj *patternFlowGtpv1MessageLengthCounter) validateObj(vObj *validation, set_default bool) { +func (obj *patternFlowIpv4PriorityRawCounter) validateObj(vObj *validation, set_default bool) { if set_default { obj.setDefault() } if obj.obj.Start != nil { - if *obj.obj.Start > 65535 { + if *obj.obj.Start > 255 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowGtpv1MessageLengthCounter.Start <= 65535 but Got %d", *obj.obj.Start)) + fmt.Sprintf("0 <= PatternFlowIpv4PriorityRawCounter.Start <= 255 but Got %d", *obj.obj.Start)) } } if obj.obj.Step != nil { - if *obj.obj.Step > 65535 { + if *obj.obj.Step > 255 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowGtpv1MessageLengthCounter.Step <= 65535 but Got %d", *obj.obj.Step)) + fmt.Sprintf("0 <= PatternFlowIpv4PriorityRawCounter.Step <= 255 but Got %d", *obj.obj.Step)) } } if obj.obj.Count != nil { - if *obj.obj.Count > 65535 { + if *obj.obj.Count > 255 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowGtpv1MessageLengthCounter.Count <= 65535 but Got %d", *obj.obj.Count)) + fmt.Sprintf("0 <= PatternFlowIpv4PriorityRawCounter.Count <= 255 but Got %d", *obj.obj.Count)) } } } -func (obj *patternFlowGtpv1MessageLengthCounter) setDefault() { +func (obj *patternFlowIpv4PriorityRawCounter) setDefault() { if obj.obj.Start == nil { obj.SetStart(0) } @@ -241793,29 +286906,29 @@ func (obj *patternFlowGtpv1MessageLengthCounter) setDefault() { } -// ***** PatternFlowGtpv1MessageLengthMetricTag ***** -type patternFlowGtpv1MessageLengthMetricTag struct { +// ***** PatternFlowIpv4PriorityRawMetricTag ***** +type patternFlowIpv4PriorityRawMetricTag struct { validation - obj *otg.PatternFlowGtpv1MessageLengthMetricTag + obj *otg.PatternFlowIpv4PriorityRawMetricTag } -func NewPatternFlowGtpv1MessageLengthMetricTag() PatternFlowGtpv1MessageLengthMetricTag { - obj := patternFlowGtpv1MessageLengthMetricTag{obj: &otg.PatternFlowGtpv1MessageLengthMetricTag{}} +func NewPatternFlowIpv4PriorityRawMetricTag() PatternFlowIpv4PriorityRawMetricTag { + obj := patternFlowIpv4PriorityRawMetricTag{obj: &otg.PatternFlowIpv4PriorityRawMetricTag{}} obj.setDefault() return &obj } -func (obj *patternFlowGtpv1MessageLengthMetricTag) Msg() *otg.PatternFlowGtpv1MessageLengthMetricTag { +func (obj *patternFlowIpv4PriorityRawMetricTag) Msg() *otg.PatternFlowIpv4PriorityRawMetricTag { return obj.obj } -func (obj *patternFlowGtpv1MessageLengthMetricTag) SetMsg(msg *otg.PatternFlowGtpv1MessageLengthMetricTag) PatternFlowGtpv1MessageLengthMetricTag { +func (obj *patternFlowIpv4PriorityRawMetricTag) SetMsg(msg *otg.PatternFlowIpv4PriorityRawMetricTag) PatternFlowIpv4PriorityRawMetricTag { proto.Merge(obj.obj, msg) return obj } -func (obj *patternFlowGtpv1MessageLengthMetricTag) ToProto() (*otg.PatternFlowGtpv1MessageLengthMetricTag, error) { +func (obj *patternFlowIpv4PriorityRawMetricTag) ToProto() (*otg.PatternFlowIpv4PriorityRawMetricTag, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -241823,7 +286936,7 @@ func (obj *patternFlowGtpv1MessageLengthMetricTag) ToProto() (*otg.PatternFlowGt return obj.Msg(), nil } -func (obj *patternFlowGtpv1MessageLengthMetricTag) FromProto(msg *otg.PatternFlowGtpv1MessageLengthMetricTag) (PatternFlowGtpv1MessageLengthMetricTag, error) { +func (obj *patternFlowIpv4PriorityRawMetricTag) FromProto(msg *otg.PatternFlowIpv4PriorityRawMetricTag) (PatternFlowIpv4PriorityRawMetricTag, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -241832,7 +286945,7 @@ func (obj *patternFlowGtpv1MessageLengthMetricTag) FromProto(msg *otg.PatternFlo return newObj, nil } -func (obj *patternFlowGtpv1MessageLengthMetricTag) ToPbText() (string, error) { +func (obj *patternFlowIpv4PriorityRawMetricTag) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -241844,7 +286957,7 @@ func (obj *patternFlowGtpv1MessageLengthMetricTag) ToPbText() (string, error) { return string(protoMarshal), nil } -func (obj *patternFlowGtpv1MessageLengthMetricTag) FromPbText(value string) error { +func (obj *patternFlowIpv4PriorityRawMetricTag) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj @@ -241857,7 +286970,7 @@ func (obj *patternFlowGtpv1MessageLengthMetricTag) FromPbText(value string) erro return retObj } -func (obj *patternFlowGtpv1MessageLengthMetricTag) ToYaml() (string, error) { +func (obj *patternFlowIpv4PriorityRawMetricTag) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -241878,7 +286991,7 @@ func (obj *patternFlowGtpv1MessageLengthMetricTag) ToYaml() (string, error) { return string(data), nil } -func (obj *patternFlowGtpv1MessageLengthMetricTag) FromYaml(value string) error { +func (obj *patternFlowIpv4PriorityRawMetricTag) FromYaml(value string) error { if value == "" { value = "{}" } @@ -241903,7 +287016,7 @@ func (obj *patternFlowGtpv1MessageLengthMetricTag) FromYaml(value string) error return nil } -func (obj *patternFlowGtpv1MessageLengthMetricTag) ToJson() (string, error) { +func (obj *patternFlowIpv4PriorityRawMetricTag) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -241921,7 +287034,7 @@ func (obj *patternFlowGtpv1MessageLengthMetricTag) ToJson() (string, error) { return string(data), nil } -func (obj *patternFlowGtpv1MessageLengthMetricTag) FromJson(value string) error { +func (obj *patternFlowIpv4PriorityRawMetricTag) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -241942,19 +287055,19 @@ func (obj *patternFlowGtpv1MessageLengthMetricTag) FromJson(value string) error return nil } -func (obj *patternFlowGtpv1MessageLengthMetricTag) validateToAndFrom() error { +func (obj *patternFlowIpv4PriorityRawMetricTag) validateToAndFrom() error { // emptyVars() obj.validateObj(&obj.validation, true) return obj.validationResult() } -func (obj *patternFlowGtpv1MessageLengthMetricTag) Validate() error { +func (obj *patternFlowIpv4PriorityRawMetricTag) Validate() error { // emptyVars() obj.validateObj(&obj.validation, false) return obj.validationResult() } -func (obj *patternFlowGtpv1MessageLengthMetricTag) String() string { +func (obj *patternFlowIpv4PriorityRawMetricTag) String() string { str, err := obj.ToYaml() if err != nil { return err.Error() @@ -241962,12 +287075,12 @@ func (obj *patternFlowGtpv1MessageLengthMetricTag) String() string { return str } -func (obj *patternFlowGtpv1MessageLengthMetricTag) Clone() (PatternFlowGtpv1MessageLengthMetricTag, error) { +func (obj *patternFlowIpv4PriorityRawMetricTag) Clone() (PatternFlowIpv4PriorityRawMetricTag, error) { vErr := obj.Validate() if vErr != nil { return nil, vErr } - newObj := NewPatternFlowGtpv1MessageLengthMetricTag() + newObj := NewPatternFlowIpv4PriorityRawMetricTag() data, err := proto.Marshal(obj.Msg()) if err != nil { return nil, err @@ -241979,69 +287092,69 @@ func (obj *patternFlowGtpv1MessageLengthMetricTag) Clone() (PatternFlowGtpv1Mess return newObj, nil } -// PatternFlowGtpv1MessageLengthMetricTag is metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. -type PatternFlowGtpv1MessageLengthMetricTag interface { +// PatternFlowIpv4PriorityRawMetricTag is metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. +type PatternFlowIpv4PriorityRawMetricTag interface { Validation - // Msg marshals PatternFlowGtpv1MessageLengthMetricTag to protobuf object *otg.PatternFlowGtpv1MessageLengthMetricTag + // Msg marshals PatternFlowIpv4PriorityRawMetricTag to protobuf object *otg.PatternFlowIpv4PriorityRawMetricTag // and doesn't set defaults - Msg() *otg.PatternFlowGtpv1MessageLengthMetricTag - // SetMsg unmarshals PatternFlowGtpv1MessageLengthMetricTag from protobuf object *otg.PatternFlowGtpv1MessageLengthMetricTag + Msg() *otg.PatternFlowIpv4PriorityRawMetricTag + // SetMsg unmarshals PatternFlowIpv4PriorityRawMetricTag from protobuf object *otg.PatternFlowIpv4PriorityRawMetricTag // and doesn't set defaults - SetMsg(*otg.PatternFlowGtpv1MessageLengthMetricTag) PatternFlowGtpv1MessageLengthMetricTag - // ToProto marshals PatternFlowGtpv1MessageLengthMetricTag to protobuf object *otg.PatternFlowGtpv1MessageLengthMetricTag - ToProto() (*otg.PatternFlowGtpv1MessageLengthMetricTag, error) - // ToPbText marshals PatternFlowGtpv1MessageLengthMetricTag to protobuf text + SetMsg(*otg.PatternFlowIpv4PriorityRawMetricTag) PatternFlowIpv4PriorityRawMetricTag + // ToProto marshals PatternFlowIpv4PriorityRawMetricTag to protobuf object *otg.PatternFlowIpv4PriorityRawMetricTag + ToProto() (*otg.PatternFlowIpv4PriorityRawMetricTag, error) + // ToPbText marshals PatternFlowIpv4PriorityRawMetricTag to protobuf text ToPbText() (string, error) - // ToYaml marshals PatternFlowGtpv1MessageLengthMetricTag to YAML text + // ToYaml marshals PatternFlowIpv4PriorityRawMetricTag to YAML text ToYaml() (string, error) - // ToJson marshals PatternFlowGtpv1MessageLengthMetricTag to JSON text + // ToJson marshals PatternFlowIpv4PriorityRawMetricTag to JSON text ToJson() (string, error) - // FromProto unmarshals PatternFlowGtpv1MessageLengthMetricTag from protobuf object *otg.PatternFlowGtpv1MessageLengthMetricTag - FromProto(msg *otg.PatternFlowGtpv1MessageLengthMetricTag) (PatternFlowGtpv1MessageLengthMetricTag, error) - // FromPbText unmarshals PatternFlowGtpv1MessageLengthMetricTag from protobuf text + // FromProto unmarshals PatternFlowIpv4PriorityRawMetricTag from protobuf object *otg.PatternFlowIpv4PriorityRawMetricTag + FromProto(msg *otg.PatternFlowIpv4PriorityRawMetricTag) (PatternFlowIpv4PriorityRawMetricTag, error) + // FromPbText unmarshals PatternFlowIpv4PriorityRawMetricTag from protobuf text FromPbText(value string) error - // FromYaml unmarshals PatternFlowGtpv1MessageLengthMetricTag from YAML text + // FromYaml unmarshals PatternFlowIpv4PriorityRawMetricTag from YAML text FromYaml(value string) error - // FromJson unmarshals PatternFlowGtpv1MessageLengthMetricTag from JSON text + // FromJson unmarshals PatternFlowIpv4PriorityRawMetricTag from JSON text FromJson(value string) error - // Validate validates PatternFlowGtpv1MessageLengthMetricTag + // Validate validates PatternFlowIpv4PriorityRawMetricTag Validate() error // A stringer function String() string // Clones the object - Clone() (PatternFlowGtpv1MessageLengthMetricTag, error) + Clone() (PatternFlowIpv4PriorityRawMetricTag, error) validateToAndFrom() error validateObj(vObj *validation, set_default bool) setDefault() - // Name returns string, set in PatternFlowGtpv1MessageLengthMetricTag. + // Name returns string, set in PatternFlowIpv4PriorityRawMetricTag. Name() string - // SetName assigns string provided by user to PatternFlowGtpv1MessageLengthMetricTag - SetName(value string) PatternFlowGtpv1MessageLengthMetricTag - // Offset returns uint32, set in PatternFlowGtpv1MessageLengthMetricTag. + // SetName assigns string provided by user to PatternFlowIpv4PriorityRawMetricTag + SetName(value string) PatternFlowIpv4PriorityRawMetricTag + // Offset returns uint32, set in PatternFlowIpv4PriorityRawMetricTag. Offset() uint32 - // SetOffset assigns uint32 provided by user to PatternFlowGtpv1MessageLengthMetricTag - SetOffset(value uint32) PatternFlowGtpv1MessageLengthMetricTag - // HasOffset checks if Offset has been set in PatternFlowGtpv1MessageLengthMetricTag + // SetOffset assigns uint32 provided by user to PatternFlowIpv4PriorityRawMetricTag + SetOffset(value uint32) PatternFlowIpv4PriorityRawMetricTag + // HasOffset checks if Offset has been set in PatternFlowIpv4PriorityRawMetricTag HasOffset() bool - // Length returns uint32, set in PatternFlowGtpv1MessageLengthMetricTag. + // Length returns uint32, set in PatternFlowIpv4PriorityRawMetricTag. Length() uint32 - // SetLength assigns uint32 provided by user to PatternFlowGtpv1MessageLengthMetricTag - SetLength(value uint32) PatternFlowGtpv1MessageLengthMetricTag - // HasLength checks if Length has been set in PatternFlowGtpv1MessageLengthMetricTag + // SetLength assigns uint32 provided by user to PatternFlowIpv4PriorityRawMetricTag + SetLength(value uint32) PatternFlowIpv4PriorityRawMetricTag + // HasLength checks if Length has been set in PatternFlowIpv4PriorityRawMetricTag HasLength() bool } // Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field // Name returns a string -func (obj *patternFlowGtpv1MessageLengthMetricTag) Name() string { +func (obj *patternFlowIpv4PriorityRawMetricTag) Name() string { return *obj.obj.Name } // Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field -// SetName sets the string value in the PatternFlowGtpv1MessageLengthMetricTag object -func (obj *patternFlowGtpv1MessageLengthMetricTag) SetName(value string) PatternFlowGtpv1MessageLengthMetricTag { +// SetName sets the string value in the PatternFlowIpv4PriorityRawMetricTag object +func (obj *patternFlowIpv4PriorityRawMetricTag) SetName(value string) PatternFlowIpv4PriorityRawMetricTag { obj.obj.Name = &value return obj @@ -242049,7 +287162,7 @@ func (obj *patternFlowGtpv1MessageLengthMetricTag) SetName(value string) Pattern // Offset in bits relative to start of corresponding header field // Offset returns a uint32 -func (obj *patternFlowGtpv1MessageLengthMetricTag) Offset() uint32 { +func (obj *patternFlowIpv4PriorityRawMetricTag) Offset() uint32 { return *obj.obj.Offset @@ -242057,13 +287170,13 @@ func (obj *patternFlowGtpv1MessageLengthMetricTag) Offset() uint32 { // Offset in bits relative to start of corresponding header field // Offset returns a uint32 -func (obj *patternFlowGtpv1MessageLengthMetricTag) HasOffset() bool { +func (obj *patternFlowIpv4PriorityRawMetricTag) HasOffset() bool { return obj.obj.Offset != nil } // Offset in bits relative to start of corresponding header field -// SetOffset sets the uint32 value in the PatternFlowGtpv1MessageLengthMetricTag object -func (obj *patternFlowGtpv1MessageLengthMetricTag) SetOffset(value uint32) PatternFlowGtpv1MessageLengthMetricTag { +// SetOffset sets the uint32 value in the PatternFlowIpv4PriorityRawMetricTag object +func (obj *patternFlowIpv4PriorityRawMetricTag) SetOffset(value uint32) PatternFlowIpv4PriorityRawMetricTag { obj.obj.Offset = &value return obj @@ -242071,7 +287184,7 @@ func (obj *patternFlowGtpv1MessageLengthMetricTag) SetOffset(value uint32) Patte // Number of bits to track for metrics starting from configured offset of corresponding header field // Length returns a uint32 -func (obj *patternFlowGtpv1MessageLengthMetricTag) Length() uint32 { +func (obj *patternFlowIpv4PriorityRawMetricTag) Length() uint32 { return *obj.obj.Length @@ -242079,83 +287192,86 @@ func (obj *patternFlowGtpv1MessageLengthMetricTag) Length() uint32 { // Number of bits to track for metrics starting from configured offset of corresponding header field // Length returns a uint32 -func (obj *patternFlowGtpv1MessageLengthMetricTag) HasLength() bool { +func (obj *patternFlowIpv4PriorityRawMetricTag) HasLength() bool { return obj.obj.Length != nil } // Number of bits to track for metrics starting from configured offset of corresponding header field -// SetLength sets the uint32 value in the PatternFlowGtpv1MessageLengthMetricTag object -func (obj *patternFlowGtpv1MessageLengthMetricTag) SetLength(value uint32) PatternFlowGtpv1MessageLengthMetricTag { +// SetLength sets the uint32 value in the PatternFlowIpv4PriorityRawMetricTag object +func (obj *patternFlowIpv4PriorityRawMetricTag) SetLength(value uint32) PatternFlowIpv4PriorityRawMetricTag { obj.obj.Length = &value return obj } -func (obj *patternFlowGtpv1MessageLengthMetricTag) validateObj(vObj *validation, set_default bool) { +func (obj *patternFlowIpv4PriorityRawMetricTag) validateObj(vObj *validation, set_default bool) { if set_default { obj.setDefault() } // Name is required if obj.obj.Name == nil { - vObj.validationErrors = append(vObj.validationErrors, "Name is required field on interface PatternFlowGtpv1MessageLengthMetricTag") + vObj.validationErrors = append(vObj.validationErrors, "Name is required field on interface PatternFlowIpv4PriorityRawMetricTag") } if obj.obj.Offset != nil { - if *obj.obj.Offset > 15 { + if *obj.obj.Offset > 7 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowGtpv1MessageLengthMetricTag.Offset <= 15 but Got %d", *obj.obj.Offset)) + fmt.Sprintf("0 <= PatternFlowIpv4PriorityRawMetricTag.Offset <= 7 but Got %d", *obj.obj.Offset)) } } if obj.obj.Length != nil { - if *obj.obj.Length < 1 || *obj.obj.Length > 16 { + if *obj.obj.Length < 1 || *obj.obj.Length > 8 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("1 <= PatternFlowGtpv1MessageLengthMetricTag.Length <= 16 but Got %d", *obj.obj.Length)) + fmt.Sprintf("1 <= PatternFlowIpv4PriorityRawMetricTag.Length <= 8 but Got %d", *obj.obj.Length)) } } } -func (obj *patternFlowGtpv1MessageLengthMetricTag) setDefault() { +func (obj *patternFlowIpv4PriorityRawMetricTag) setDefault() { if obj.obj.Offset == nil { obj.SetOffset(0) } if obj.obj.Length == nil { - obj.SetLength(16) + obj.SetLength(8) } } -// ***** PatternFlowGtpv1TeidCounter ***** -type patternFlowGtpv1TeidCounter struct { +// ***** PatternFlowIpv4TosPrecedence ***** +type patternFlowIpv4TosPrecedence struct { validation - obj *otg.PatternFlowGtpv1TeidCounter + obj *otg.PatternFlowIpv4TosPrecedence + incrementHolder PatternFlowIpv4TosPrecedenceCounter + decrementHolder PatternFlowIpv4TosPrecedenceCounter + metricTagsHolder PatternFlowIpv4TosPrecedencePatternFlowIpv4TosPrecedenceMetricTagIter } -func NewPatternFlowGtpv1TeidCounter() PatternFlowGtpv1TeidCounter { - obj := patternFlowGtpv1TeidCounter{obj: &otg.PatternFlowGtpv1TeidCounter{}} +func NewPatternFlowIpv4TosPrecedence() PatternFlowIpv4TosPrecedence { + obj := patternFlowIpv4TosPrecedence{obj: &otg.PatternFlowIpv4TosPrecedence{}} obj.setDefault() return &obj } -func (obj *patternFlowGtpv1TeidCounter) Msg() *otg.PatternFlowGtpv1TeidCounter { +func (obj *patternFlowIpv4TosPrecedence) Msg() *otg.PatternFlowIpv4TosPrecedence { return obj.obj } -func (obj *patternFlowGtpv1TeidCounter) SetMsg(msg *otg.PatternFlowGtpv1TeidCounter) PatternFlowGtpv1TeidCounter { - +func (obj *patternFlowIpv4TosPrecedence) SetMsg(msg *otg.PatternFlowIpv4TosPrecedence) PatternFlowIpv4TosPrecedence { + obj.setNil() proto.Merge(obj.obj, msg) return obj } -func (obj *patternFlowGtpv1TeidCounter) ToProto() (*otg.PatternFlowGtpv1TeidCounter, error) { +func (obj *patternFlowIpv4TosPrecedence) ToProto() (*otg.PatternFlowIpv4TosPrecedence, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -242163,7 +287279,7 @@ func (obj *patternFlowGtpv1TeidCounter) ToProto() (*otg.PatternFlowGtpv1TeidCoun return obj.Msg(), nil } -func (obj *patternFlowGtpv1TeidCounter) FromProto(msg *otg.PatternFlowGtpv1TeidCounter) (PatternFlowGtpv1TeidCounter, error) { +func (obj *patternFlowIpv4TosPrecedence) FromProto(msg *otg.PatternFlowIpv4TosPrecedence) (PatternFlowIpv4TosPrecedence, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -242172,7 +287288,7 @@ func (obj *patternFlowGtpv1TeidCounter) FromProto(msg *otg.PatternFlowGtpv1TeidC return newObj, nil } -func (obj *patternFlowGtpv1TeidCounter) ToPbText() (string, error) { +func (obj *patternFlowIpv4TosPrecedence) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -242184,12 +287300,12 @@ func (obj *patternFlowGtpv1TeidCounter) ToPbText() (string, error) { return string(protoMarshal), nil } -func (obj *patternFlowGtpv1TeidCounter) FromPbText(value string) error { +func (obj *patternFlowIpv4TosPrecedence) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj } - + obj.setNil() vErr := obj.validateToAndFrom() if vErr != nil { return vErr @@ -242197,7 +287313,7 @@ func (obj *patternFlowGtpv1TeidCounter) FromPbText(value string) error { return retObj } -func (obj *patternFlowGtpv1TeidCounter) ToYaml() (string, error) { +func (obj *patternFlowIpv4TosPrecedence) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -242218,7 +287334,7 @@ func (obj *patternFlowGtpv1TeidCounter) ToYaml() (string, error) { return string(data), nil } -func (obj *patternFlowGtpv1TeidCounter) FromYaml(value string) error { +func (obj *patternFlowIpv4TosPrecedence) FromYaml(value string) error { if value == "" { value = "{}" } @@ -242235,7 +287351,7 @@ func (obj *patternFlowGtpv1TeidCounter) FromYaml(value string) error { return fmt.Errorf("unmarshal error %s", strings.Replace( uError.Error(), "\u00a0", " ", -1)[7:]) } - + obj.setNil() vErr := obj.validateToAndFrom() if vErr != nil { return vErr @@ -242243,7 +287359,7 @@ func (obj *patternFlowGtpv1TeidCounter) FromYaml(value string) error { return nil } -func (obj *patternFlowGtpv1TeidCounter) ToJson() (string, error) { +func (obj *patternFlowIpv4TosPrecedence) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -242261,7 +287377,7 @@ func (obj *patternFlowGtpv1TeidCounter) ToJson() (string, error) { return string(data), nil } -func (obj *patternFlowGtpv1TeidCounter) FromJson(value string) error { +func (obj *patternFlowIpv4TosPrecedence) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -242274,7 +287390,7 @@ func (obj *patternFlowGtpv1TeidCounter) FromJson(value string) error { return fmt.Errorf("unmarshal error %s", strings.Replace( uError.Error(), "\u00a0", " ", -1)[7:]) } - + obj.setNil() err := obj.validateToAndFrom() if err != nil { return err @@ -242282,19 +287398,19 @@ func (obj *patternFlowGtpv1TeidCounter) FromJson(value string) error { return nil } -func (obj *patternFlowGtpv1TeidCounter) validateToAndFrom() error { +func (obj *patternFlowIpv4TosPrecedence) validateToAndFrom() error { // emptyVars() obj.validateObj(&obj.validation, true) return obj.validationResult() } -func (obj *patternFlowGtpv1TeidCounter) Validate() error { +func (obj *patternFlowIpv4TosPrecedence) Validate() error { // emptyVars() obj.validateObj(&obj.validation, false) return obj.validationResult() } -func (obj *patternFlowGtpv1TeidCounter) String() string { +func (obj *patternFlowIpv4TosPrecedence) String() string { str, err := obj.ToYaml() if err != nil { return err.Error() @@ -242302,12 +287418,12 @@ func (obj *patternFlowGtpv1TeidCounter) String() string { return str } -func (obj *patternFlowGtpv1TeidCounter) Clone() (PatternFlowGtpv1TeidCounter, error) { +func (obj *patternFlowIpv4TosPrecedence) Clone() (PatternFlowIpv4TosPrecedence, error) { vErr := obj.Validate() if vErr != nil { return nil, vErr } - newObj := NewPatternFlowGtpv1TeidCounter() + newObj := NewPatternFlowIpv4TosPrecedence() data, err := proto.Marshal(obj.Msg()) if err != nil { return nil, err @@ -242319,509 +287435,426 @@ func (obj *patternFlowGtpv1TeidCounter) Clone() (PatternFlowGtpv1TeidCounter, er return newObj, nil } -// PatternFlowGtpv1TeidCounter is integer counter pattern -type PatternFlowGtpv1TeidCounter interface { +func (obj *patternFlowIpv4TosPrecedence) setNil() { + obj.incrementHolder = nil + obj.decrementHolder = nil + obj.metricTagsHolder = nil + obj.validationErrors = nil + obj.warnings = nil + obj.constraints = make(map[string]map[string]Constraints) +} + +// PatternFlowIpv4TosPrecedence is precedence +type PatternFlowIpv4TosPrecedence interface { Validation - // Msg marshals PatternFlowGtpv1TeidCounter to protobuf object *otg.PatternFlowGtpv1TeidCounter + // Msg marshals PatternFlowIpv4TosPrecedence to protobuf object *otg.PatternFlowIpv4TosPrecedence // and doesn't set defaults - Msg() *otg.PatternFlowGtpv1TeidCounter - // SetMsg unmarshals PatternFlowGtpv1TeidCounter from protobuf object *otg.PatternFlowGtpv1TeidCounter + Msg() *otg.PatternFlowIpv4TosPrecedence + // SetMsg unmarshals PatternFlowIpv4TosPrecedence from protobuf object *otg.PatternFlowIpv4TosPrecedence // and doesn't set defaults - SetMsg(*otg.PatternFlowGtpv1TeidCounter) PatternFlowGtpv1TeidCounter - // ToProto marshals PatternFlowGtpv1TeidCounter to protobuf object *otg.PatternFlowGtpv1TeidCounter - ToProto() (*otg.PatternFlowGtpv1TeidCounter, error) - // ToPbText marshals PatternFlowGtpv1TeidCounter to protobuf text + SetMsg(*otg.PatternFlowIpv4TosPrecedence) PatternFlowIpv4TosPrecedence + // ToProto marshals PatternFlowIpv4TosPrecedence to protobuf object *otg.PatternFlowIpv4TosPrecedence + ToProto() (*otg.PatternFlowIpv4TosPrecedence, error) + // ToPbText marshals PatternFlowIpv4TosPrecedence to protobuf text ToPbText() (string, error) - // ToYaml marshals PatternFlowGtpv1TeidCounter to YAML text + // ToYaml marshals PatternFlowIpv4TosPrecedence to YAML text ToYaml() (string, error) - // ToJson marshals PatternFlowGtpv1TeidCounter to JSON text + // ToJson marshals PatternFlowIpv4TosPrecedence to JSON text ToJson() (string, error) - // FromProto unmarshals PatternFlowGtpv1TeidCounter from protobuf object *otg.PatternFlowGtpv1TeidCounter - FromProto(msg *otg.PatternFlowGtpv1TeidCounter) (PatternFlowGtpv1TeidCounter, error) - // FromPbText unmarshals PatternFlowGtpv1TeidCounter from protobuf text + // FromProto unmarshals PatternFlowIpv4TosPrecedence from protobuf object *otg.PatternFlowIpv4TosPrecedence + FromProto(msg *otg.PatternFlowIpv4TosPrecedence) (PatternFlowIpv4TosPrecedence, error) + // FromPbText unmarshals PatternFlowIpv4TosPrecedence from protobuf text FromPbText(value string) error - // FromYaml unmarshals PatternFlowGtpv1TeidCounter from YAML text + // FromYaml unmarshals PatternFlowIpv4TosPrecedence from YAML text FromYaml(value string) error - // FromJson unmarshals PatternFlowGtpv1TeidCounter from JSON text + // FromJson unmarshals PatternFlowIpv4TosPrecedence from JSON text FromJson(value string) error - // Validate validates PatternFlowGtpv1TeidCounter + // Validate validates PatternFlowIpv4TosPrecedence Validate() error // A stringer function String() string // Clones the object - Clone() (PatternFlowGtpv1TeidCounter, error) + Clone() (PatternFlowIpv4TosPrecedence, error) validateToAndFrom() error validateObj(vObj *validation, set_default bool) setDefault() - // Start returns uint32, set in PatternFlowGtpv1TeidCounter. - Start() uint32 - // SetStart assigns uint32 provided by user to PatternFlowGtpv1TeidCounter - SetStart(value uint32) PatternFlowGtpv1TeidCounter - // HasStart checks if Start has been set in PatternFlowGtpv1TeidCounter - HasStart() bool - // Step returns uint32, set in PatternFlowGtpv1TeidCounter. - Step() uint32 - // SetStep assigns uint32 provided by user to PatternFlowGtpv1TeidCounter - SetStep(value uint32) PatternFlowGtpv1TeidCounter - // HasStep checks if Step has been set in PatternFlowGtpv1TeidCounter - HasStep() bool - // Count returns uint32, set in PatternFlowGtpv1TeidCounter. - Count() uint32 - // SetCount assigns uint32 provided by user to PatternFlowGtpv1TeidCounter - SetCount(value uint32) PatternFlowGtpv1TeidCounter - // HasCount checks if Count has been set in PatternFlowGtpv1TeidCounter - HasCount() bool + // Choice returns PatternFlowIpv4TosPrecedenceChoiceEnum, set in PatternFlowIpv4TosPrecedence + Choice() PatternFlowIpv4TosPrecedenceChoiceEnum + // SetChoice assigns PatternFlowIpv4TosPrecedenceChoiceEnum provided by user to PatternFlowIpv4TosPrecedence + SetChoice(value PatternFlowIpv4TosPrecedenceChoiceEnum) PatternFlowIpv4TosPrecedence + // HasChoice checks if Choice has been set in PatternFlowIpv4TosPrecedence + HasChoice() bool + // Value returns uint32, set in PatternFlowIpv4TosPrecedence. + Value() uint32 + // SetValue assigns uint32 provided by user to PatternFlowIpv4TosPrecedence + SetValue(value uint32) PatternFlowIpv4TosPrecedence + // HasValue checks if Value has been set in PatternFlowIpv4TosPrecedence + HasValue() bool + // Values returns []uint32, set in PatternFlowIpv4TosPrecedence. + Values() []uint32 + // SetValues assigns []uint32 provided by user to PatternFlowIpv4TosPrecedence + SetValues(value []uint32) PatternFlowIpv4TosPrecedence + // Increment returns PatternFlowIpv4TosPrecedenceCounter, set in PatternFlowIpv4TosPrecedence. + // PatternFlowIpv4TosPrecedenceCounter is integer counter pattern + Increment() PatternFlowIpv4TosPrecedenceCounter + // SetIncrement assigns PatternFlowIpv4TosPrecedenceCounter provided by user to PatternFlowIpv4TosPrecedence. + // PatternFlowIpv4TosPrecedenceCounter is integer counter pattern + SetIncrement(value PatternFlowIpv4TosPrecedenceCounter) PatternFlowIpv4TosPrecedence + // HasIncrement checks if Increment has been set in PatternFlowIpv4TosPrecedence + HasIncrement() bool + // Decrement returns PatternFlowIpv4TosPrecedenceCounter, set in PatternFlowIpv4TosPrecedence. + // PatternFlowIpv4TosPrecedenceCounter is integer counter pattern + Decrement() PatternFlowIpv4TosPrecedenceCounter + // SetDecrement assigns PatternFlowIpv4TosPrecedenceCounter provided by user to PatternFlowIpv4TosPrecedence. + // PatternFlowIpv4TosPrecedenceCounter is integer counter pattern + SetDecrement(value PatternFlowIpv4TosPrecedenceCounter) PatternFlowIpv4TosPrecedence + // HasDecrement checks if Decrement has been set in PatternFlowIpv4TosPrecedence + HasDecrement() bool + // MetricTags returns PatternFlowIpv4TosPrecedencePatternFlowIpv4TosPrecedenceMetricTagIterIter, set in PatternFlowIpv4TosPrecedence + MetricTags() PatternFlowIpv4TosPrecedencePatternFlowIpv4TosPrecedenceMetricTagIter + setNil() } -// description is TBD -// Start returns a uint32 -func (obj *patternFlowGtpv1TeidCounter) Start() uint32 { - - return *obj.obj.Start +type PatternFlowIpv4TosPrecedenceChoiceEnum string +// Enum of Choice on PatternFlowIpv4TosPrecedence +var PatternFlowIpv4TosPrecedenceChoice = struct { + VALUE PatternFlowIpv4TosPrecedenceChoiceEnum + VALUES PatternFlowIpv4TosPrecedenceChoiceEnum + INCREMENT PatternFlowIpv4TosPrecedenceChoiceEnum + DECREMENT PatternFlowIpv4TosPrecedenceChoiceEnum +}{ + VALUE: PatternFlowIpv4TosPrecedenceChoiceEnum("value"), + VALUES: PatternFlowIpv4TosPrecedenceChoiceEnum("values"), + INCREMENT: PatternFlowIpv4TosPrecedenceChoiceEnum("increment"), + DECREMENT: PatternFlowIpv4TosPrecedenceChoiceEnum("decrement"), } -// description is TBD -// Start returns a uint32 -func (obj *patternFlowGtpv1TeidCounter) HasStart() bool { - return obj.obj.Start != nil +func (obj *patternFlowIpv4TosPrecedence) Choice() PatternFlowIpv4TosPrecedenceChoiceEnum { + return PatternFlowIpv4TosPrecedenceChoiceEnum(obj.obj.Choice.Enum().String()) } // description is TBD -// SetStart sets the uint32 value in the PatternFlowGtpv1TeidCounter object -func (obj *patternFlowGtpv1TeidCounter) SetStart(value uint32) PatternFlowGtpv1TeidCounter { - - obj.obj.Start = &value - return obj +// Choice returns a string +func (obj *patternFlowIpv4TosPrecedence) HasChoice() bool { + return obj.obj.Choice != nil } -// description is TBD -// Step returns a uint32 -func (obj *patternFlowGtpv1TeidCounter) Step() uint32 { +func (obj *patternFlowIpv4TosPrecedence) SetChoice(value PatternFlowIpv4TosPrecedenceChoiceEnum) PatternFlowIpv4TosPrecedence { + intValue, ok := otg.PatternFlowIpv4TosPrecedence_Choice_Enum_value[string(value)] + if !ok { + obj.validationErrors = append(obj.validationErrors, fmt.Sprintf( + "%s is not a valid choice on PatternFlowIpv4TosPrecedenceChoiceEnum", string(value))) + return obj + } + enumValue := otg.PatternFlowIpv4TosPrecedence_Choice_Enum(intValue) + obj.obj.Choice = &enumValue + obj.obj.Decrement = nil + obj.decrementHolder = nil + obj.obj.Increment = nil + obj.incrementHolder = nil + obj.obj.Values = nil + obj.obj.Value = nil - return *obj.obj.Step + if value == PatternFlowIpv4TosPrecedenceChoice.VALUE { + defaultValue := uint32(0) + obj.obj.Value = &defaultValue + } -} + if value == PatternFlowIpv4TosPrecedenceChoice.VALUES { + defaultValue := []uint32{0} + obj.obj.Values = defaultValue + } -// description is TBD -// Step returns a uint32 -func (obj *patternFlowGtpv1TeidCounter) HasStep() bool { - return obj.obj.Step != nil -} + if value == PatternFlowIpv4TosPrecedenceChoice.INCREMENT { + obj.obj.Increment = NewPatternFlowIpv4TosPrecedenceCounter().Msg() + } -// description is TBD -// SetStep sets the uint32 value in the PatternFlowGtpv1TeidCounter object -func (obj *patternFlowGtpv1TeidCounter) SetStep(value uint32) PatternFlowGtpv1TeidCounter { + if value == PatternFlowIpv4TosPrecedenceChoice.DECREMENT { + obj.obj.Decrement = NewPatternFlowIpv4TosPrecedenceCounter().Msg() + } - obj.obj.Step = &value return obj } // description is TBD -// Count returns a uint32 -func (obj *patternFlowGtpv1TeidCounter) Count() uint32 { +// Value returns a uint32 +func (obj *patternFlowIpv4TosPrecedence) Value() uint32 { - return *obj.obj.Count + if obj.obj.Value == nil { + obj.SetChoice(PatternFlowIpv4TosPrecedenceChoice.VALUE) + } + + return *obj.obj.Value } // description is TBD -// Count returns a uint32 -func (obj *patternFlowGtpv1TeidCounter) HasCount() bool { - return obj.obj.Count != nil +// Value returns a uint32 +func (obj *patternFlowIpv4TosPrecedence) HasValue() bool { + return obj.obj.Value != nil } // description is TBD -// SetCount sets the uint32 value in the PatternFlowGtpv1TeidCounter object -func (obj *patternFlowGtpv1TeidCounter) SetCount(value uint32) PatternFlowGtpv1TeidCounter { - - obj.obj.Count = &value +// SetValue sets the uint32 value in the PatternFlowIpv4TosPrecedence object +func (obj *patternFlowIpv4TosPrecedence) SetValue(value uint32) PatternFlowIpv4TosPrecedence { + obj.SetChoice(PatternFlowIpv4TosPrecedenceChoice.VALUE) + obj.obj.Value = &value return obj } -func (obj *patternFlowGtpv1TeidCounter) validateObj(vObj *validation, set_default bool) { - if set_default { - obj.setDefault() +// description is TBD +// Values returns a []uint32 +func (obj *patternFlowIpv4TosPrecedence) Values() []uint32 { + if obj.obj.Values == nil { + obj.SetValues([]uint32{0}) } - + return obj.obj.Values } -func (obj *patternFlowGtpv1TeidCounter) setDefault() { - if obj.obj.Start == nil { - obj.SetStart(0) - } - if obj.obj.Step == nil { - obj.SetStep(1) - } - if obj.obj.Count == nil { - obj.SetCount(1) +// description is TBD +// SetValues sets the []uint32 value in the PatternFlowIpv4TosPrecedence object +func (obj *patternFlowIpv4TosPrecedence) SetValues(value []uint32) PatternFlowIpv4TosPrecedence { + obj.SetChoice(PatternFlowIpv4TosPrecedenceChoice.VALUES) + if obj.obj.Values == nil { + obj.obj.Values = make([]uint32, 0) } + obj.obj.Values = value -} - -// ***** PatternFlowGtpv1TeidMetricTag ***** -type patternFlowGtpv1TeidMetricTag struct { - validation - obj *otg.PatternFlowGtpv1TeidMetricTag -} - -func NewPatternFlowGtpv1TeidMetricTag() PatternFlowGtpv1TeidMetricTag { - obj := patternFlowGtpv1TeidMetricTag{obj: &otg.PatternFlowGtpv1TeidMetricTag{}} - obj.setDefault() - return &obj -} - -func (obj *patternFlowGtpv1TeidMetricTag) Msg() *otg.PatternFlowGtpv1TeidMetricTag { - return obj.obj -} - -func (obj *patternFlowGtpv1TeidMetricTag) SetMsg(msg *otg.PatternFlowGtpv1TeidMetricTag) PatternFlowGtpv1TeidMetricTag { - - proto.Merge(obj.obj, msg) return obj } -func (obj *patternFlowGtpv1TeidMetricTag) ToProto() (*otg.PatternFlowGtpv1TeidMetricTag, error) { - err := obj.validateToAndFrom() - if err != nil { - return nil, err +// description is TBD +// Increment returns a PatternFlowIpv4TosPrecedenceCounter +func (obj *patternFlowIpv4TosPrecedence) Increment() PatternFlowIpv4TosPrecedenceCounter { + if obj.obj.Increment == nil { + obj.SetChoice(PatternFlowIpv4TosPrecedenceChoice.INCREMENT) } - return obj.Msg(), nil -} - -func (obj *patternFlowGtpv1TeidMetricTag) FromProto(msg *otg.PatternFlowGtpv1TeidMetricTag) (PatternFlowGtpv1TeidMetricTag, error) { - newObj := obj.SetMsg(msg) - err := newObj.validateToAndFrom() - if err != nil { - return nil, err + if obj.incrementHolder == nil { + obj.incrementHolder = &patternFlowIpv4TosPrecedenceCounter{obj: obj.obj.Increment} } - return newObj, nil + return obj.incrementHolder } -func (obj *patternFlowGtpv1TeidMetricTag) ToPbText() (string, error) { - vErr := obj.validateToAndFrom() - if vErr != nil { - return "", vErr - } - protoMarshal, err := proto.Marshal(obj.Msg()) - if err != nil { - return "", err - } - return string(protoMarshal), nil +// description is TBD +// Increment returns a PatternFlowIpv4TosPrecedenceCounter +func (obj *patternFlowIpv4TosPrecedence) HasIncrement() bool { + return obj.obj.Increment != nil } -func (obj *patternFlowGtpv1TeidMetricTag) FromPbText(value string) error { - retObj := proto.Unmarshal([]byte(value), obj.Msg()) - if retObj != nil { - return retObj - } +// description is TBD +// SetIncrement sets the PatternFlowIpv4TosPrecedenceCounter value in the PatternFlowIpv4TosPrecedence object +func (obj *patternFlowIpv4TosPrecedence) SetIncrement(value PatternFlowIpv4TosPrecedenceCounter) PatternFlowIpv4TosPrecedence { + obj.SetChoice(PatternFlowIpv4TosPrecedenceChoice.INCREMENT) + obj.incrementHolder = nil + obj.obj.Increment = value.Msg() - vErr := obj.validateToAndFrom() - if vErr != nil { - return vErr - } - return retObj + return obj } -func (obj *patternFlowGtpv1TeidMetricTag) ToYaml() (string, error) { - vErr := obj.validateToAndFrom() - if vErr != nil { - return "", vErr - } - opts := protojson.MarshalOptions{ - UseProtoNames: true, - AllowPartial: true, - EmitUnpopulated: false, - } - data, err := opts.Marshal(obj.Msg()) - if err != nil { - return "", err +// description is TBD +// Decrement returns a PatternFlowIpv4TosPrecedenceCounter +func (obj *patternFlowIpv4TosPrecedence) Decrement() PatternFlowIpv4TosPrecedenceCounter { + if obj.obj.Decrement == nil { + obj.SetChoice(PatternFlowIpv4TosPrecedenceChoice.DECREMENT) } - data, err = yaml.JSONToYAML(data) - if err != nil { - return "", err + if obj.decrementHolder == nil { + obj.decrementHolder = &patternFlowIpv4TosPrecedenceCounter{obj: obj.obj.Decrement} } - return string(data), nil + return obj.decrementHolder } -func (obj *patternFlowGtpv1TeidMetricTag) FromYaml(value string) error { - if value == "" { - value = "{}" - } - data, err := yaml.YAMLToJSON([]byte(value)) - if err != nil { - return err - } - opts := protojson.UnmarshalOptions{ - AllowPartial: true, - DiscardUnknown: false, - } - uError := opts.Unmarshal([]byte(data), obj.Msg()) - if uError != nil { - return fmt.Errorf("unmarshal error %s", strings.Replace( - uError.Error(), "\u00a0", " ", -1)[7:]) - } - - vErr := obj.validateToAndFrom() - if vErr != nil { - return vErr - } - return nil +// description is TBD +// Decrement returns a PatternFlowIpv4TosPrecedenceCounter +func (obj *patternFlowIpv4TosPrecedence) HasDecrement() bool { + return obj.obj.Decrement != nil } -func (obj *patternFlowGtpv1TeidMetricTag) ToJson() (string, error) { - vErr := obj.validateToAndFrom() - if vErr != nil { - return "", vErr - } - opts := protojson.MarshalOptions{ - UseProtoNames: true, - AllowPartial: true, - EmitUnpopulated: false, - Indent: " ", - } - data, err := opts.Marshal(obj.Msg()) - if err != nil { - return "", err - } - return string(data), nil +// description is TBD +// SetDecrement sets the PatternFlowIpv4TosPrecedenceCounter value in the PatternFlowIpv4TosPrecedence object +func (obj *patternFlowIpv4TosPrecedence) SetDecrement(value PatternFlowIpv4TosPrecedenceCounter) PatternFlowIpv4TosPrecedence { + obj.SetChoice(PatternFlowIpv4TosPrecedenceChoice.DECREMENT) + obj.decrementHolder = nil + obj.obj.Decrement = value.Msg() + + return obj } -func (obj *patternFlowGtpv1TeidMetricTag) FromJson(value string) error { - opts := protojson.UnmarshalOptions{ - AllowPartial: true, - DiscardUnknown: false, - } - if value == "" { - value = "{}" - } - uError := opts.Unmarshal([]byte(value), obj.Msg()) - if uError != nil { - return fmt.Errorf("unmarshal error %s", strings.Replace( - uError.Error(), "\u00a0", " ", -1)[7:]) +// One or more metric tags can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. +// MetricTags returns a []PatternFlowIpv4TosPrecedenceMetricTag +func (obj *patternFlowIpv4TosPrecedence) MetricTags() PatternFlowIpv4TosPrecedencePatternFlowIpv4TosPrecedenceMetricTagIter { + if len(obj.obj.MetricTags) == 0 { + obj.obj.MetricTags = []*otg.PatternFlowIpv4TosPrecedenceMetricTag{} } - - err := obj.validateToAndFrom() - if err != nil { - return err + if obj.metricTagsHolder == nil { + obj.metricTagsHolder = newPatternFlowIpv4TosPrecedencePatternFlowIpv4TosPrecedenceMetricTagIter(&obj.obj.MetricTags).setMsg(obj) } - return nil + return obj.metricTagsHolder } -func (obj *patternFlowGtpv1TeidMetricTag) validateToAndFrom() error { - // emptyVars() - obj.validateObj(&obj.validation, true) - return obj.validationResult() +type patternFlowIpv4TosPrecedencePatternFlowIpv4TosPrecedenceMetricTagIter struct { + obj *patternFlowIpv4TosPrecedence + patternFlowIpv4TosPrecedenceMetricTagSlice []PatternFlowIpv4TosPrecedenceMetricTag + fieldPtr *[]*otg.PatternFlowIpv4TosPrecedenceMetricTag } -func (obj *patternFlowGtpv1TeidMetricTag) Validate() error { - // emptyVars() - obj.validateObj(&obj.validation, false) - return obj.validationResult() +func newPatternFlowIpv4TosPrecedencePatternFlowIpv4TosPrecedenceMetricTagIter(ptr *[]*otg.PatternFlowIpv4TosPrecedenceMetricTag) PatternFlowIpv4TosPrecedencePatternFlowIpv4TosPrecedenceMetricTagIter { + return &patternFlowIpv4TosPrecedencePatternFlowIpv4TosPrecedenceMetricTagIter{fieldPtr: ptr} } -func (obj *patternFlowGtpv1TeidMetricTag) String() string { - str, err := obj.ToYaml() - if err != nil { - return err.Error() - } - return str +type PatternFlowIpv4TosPrecedencePatternFlowIpv4TosPrecedenceMetricTagIter interface { + setMsg(*patternFlowIpv4TosPrecedence) PatternFlowIpv4TosPrecedencePatternFlowIpv4TosPrecedenceMetricTagIter + Items() []PatternFlowIpv4TosPrecedenceMetricTag + Add() PatternFlowIpv4TosPrecedenceMetricTag + Append(items ...PatternFlowIpv4TosPrecedenceMetricTag) PatternFlowIpv4TosPrecedencePatternFlowIpv4TosPrecedenceMetricTagIter + Set(index int, newObj PatternFlowIpv4TosPrecedenceMetricTag) PatternFlowIpv4TosPrecedencePatternFlowIpv4TosPrecedenceMetricTagIter + Clear() PatternFlowIpv4TosPrecedencePatternFlowIpv4TosPrecedenceMetricTagIter + clearHolderSlice() PatternFlowIpv4TosPrecedencePatternFlowIpv4TosPrecedenceMetricTagIter + appendHolderSlice(item PatternFlowIpv4TosPrecedenceMetricTag) PatternFlowIpv4TosPrecedencePatternFlowIpv4TosPrecedenceMetricTagIter } -func (obj *patternFlowGtpv1TeidMetricTag) Clone() (PatternFlowGtpv1TeidMetricTag, error) { - vErr := obj.Validate() - if vErr != nil { - return nil, vErr - } - newObj := NewPatternFlowGtpv1TeidMetricTag() - data, err := proto.Marshal(obj.Msg()) - if err != nil { - return nil, err - } - pbErr := proto.Unmarshal(data, newObj.Msg()) - if pbErr != nil { - return nil, pbErr +func (obj *patternFlowIpv4TosPrecedencePatternFlowIpv4TosPrecedenceMetricTagIter) setMsg(msg *patternFlowIpv4TosPrecedence) PatternFlowIpv4TosPrecedencePatternFlowIpv4TosPrecedenceMetricTagIter { + obj.clearHolderSlice() + for _, val := range *obj.fieldPtr { + obj.appendHolderSlice(&patternFlowIpv4TosPrecedenceMetricTag{obj: val}) } - return newObj, nil + obj.obj = msg + return obj } -// PatternFlowGtpv1TeidMetricTag is metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. -type PatternFlowGtpv1TeidMetricTag interface { - Validation - // Msg marshals PatternFlowGtpv1TeidMetricTag to protobuf object *otg.PatternFlowGtpv1TeidMetricTag - // and doesn't set defaults - Msg() *otg.PatternFlowGtpv1TeidMetricTag - // SetMsg unmarshals PatternFlowGtpv1TeidMetricTag from protobuf object *otg.PatternFlowGtpv1TeidMetricTag - // and doesn't set defaults - SetMsg(*otg.PatternFlowGtpv1TeidMetricTag) PatternFlowGtpv1TeidMetricTag - // ToProto marshals PatternFlowGtpv1TeidMetricTag to protobuf object *otg.PatternFlowGtpv1TeidMetricTag - ToProto() (*otg.PatternFlowGtpv1TeidMetricTag, error) - // ToPbText marshals PatternFlowGtpv1TeidMetricTag to protobuf text - ToPbText() (string, error) - // ToYaml marshals PatternFlowGtpv1TeidMetricTag to YAML text - ToYaml() (string, error) - // ToJson marshals PatternFlowGtpv1TeidMetricTag to JSON text - ToJson() (string, error) - // FromProto unmarshals PatternFlowGtpv1TeidMetricTag from protobuf object *otg.PatternFlowGtpv1TeidMetricTag - FromProto(msg *otg.PatternFlowGtpv1TeidMetricTag) (PatternFlowGtpv1TeidMetricTag, error) - // FromPbText unmarshals PatternFlowGtpv1TeidMetricTag from protobuf text - FromPbText(value string) error - // FromYaml unmarshals PatternFlowGtpv1TeidMetricTag from YAML text - FromYaml(value string) error - // FromJson unmarshals PatternFlowGtpv1TeidMetricTag from JSON text - FromJson(value string) error - // Validate validates PatternFlowGtpv1TeidMetricTag - Validate() error - // A stringer function - String() string - // Clones the object - Clone() (PatternFlowGtpv1TeidMetricTag, error) - validateToAndFrom() error - validateObj(vObj *validation, set_default bool) - setDefault() - // Name returns string, set in PatternFlowGtpv1TeidMetricTag. - Name() string - // SetName assigns string provided by user to PatternFlowGtpv1TeidMetricTag - SetName(value string) PatternFlowGtpv1TeidMetricTag - // Offset returns uint32, set in PatternFlowGtpv1TeidMetricTag. - Offset() uint32 - // SetOffset assigns uint32 provided by user to PatternFlowGtpv1TeidMetricTag - SetOffset(value uint32) PatternFlowGtpv1TeidMetricTag - // HasOffset checks if Offset has been set in PatternFlowGtpv1TeidMetricTag - HasOffset() bool - // Length returns uint32, set in PatternFlowGtpv1TeidMetricTag. - Length() uint32 - // SetLength assigns uint32 provided by user to PatternFlowGtpv1TeidMetricTag - SetLength(value uint32) PatternFlowGtpv1TeidMetricTag - // HasLength checks if Length has been set in PatternFlowGtpv1TeidMetricTag - HasLength() bool +func (obj *patternFlowIpv4TosPrecedencePatternFlowIpv4TosPrecedenceMetricTagIter) Items() []PatternFlowIpv4TosPrecedenceMetricTag { + return obj.patternFlowIpv4TosPrecedenceMetricTagSlice } -// Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field -// Name returns a string -func (obj *patternFlowGtpv1TeidMetricTag) Name() string { - - return *obj.obj.Name - +func (obj *patternFlowIpv4TosPrecedencePatternFlowIpv4TosPrecedenceMetricTagIter) Add() PatternFlowIpv4TosPrecedenceMetricTag { + newObj := &otg.PatternFlowIpv4TosPrecedenceMetricTag{} + *obj.fieldPtr = append(*obj.fieldPtr, newObj) + newLibObj := &patternFlowIpv4TosPrecedenceMetricTag{obj: newObj} + newLibObj.setDefault() + obj.patternFlowIpv4TosPrecedenceMetricTagSlice = append(obj.patternFlowIpv4TosPrecedenceMetricTagSlice, newLibObj) + return newLibObj } -// Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field -// SetName sets the string value in the PatternFlowGtpv1TeidMetricTag object -func (obj *patternFlowGtpv1TeidMetricTag) SetName(value string) PatternFlowGtpv1TeidMetricTag { - - obj.obj.Name = &value +func (obj *patternFlowIpv4TosPrecedencePatternFlowIpv4TosPrecedenceMetricTagIter) Append(items ...PatternFlowIpv4TosPrecedenceMetricTag) PatternFlowIpv4TosPrecedencePatternFlowIpv4TosPrecedenceMetricTagIter { + for _, item := range items { + newObj := item.Msg() + *obj.fieldPtr = append(*obj.fieldPtr, newObj) + obj.patternFlowIpv4TosPrecedenceMetricTagSlice = append(obj.patternFlowIpv4TosPrecedenceMetricTagSlice, item) + } return obj } -// Offset in bits relative to start of corresponding header field -// Offset returns a uint32 -func (obj *patternFlowGtpv1TeidMetricTag) Offset() uint32 { - - return *obj.obj.Offset - -} - -// Offset in bits relative to start of corresponding header field -// Offset returns a uint32 -func (obj *patternFlowGtpv1TeidMetricTag) HasOffset() bool { - return obj.obj.Offset != nil -} - -// Offset in bits relative to start of corresponding header field -// SetOffset sets the uint32 value in the PatternFlowGtpv1TeidMetricTag object -func (obj *patternFlowGtpv1TeidMetricTag) SetOffset(value uint32) PatternFlowGtpv1TeidMetricTag { - - obj.obj.Offset = &value +func (obj *patternFlowIpv4TosPrecedencePatternFlowIpv4TosPrecedenceMetricTagIter) Set(index int, newObj PatternFlowIpv4TosPrecedenceMetricTag) PatternFlowIpv4TosPrecedencePatternFlowIpv4TosPrecedenceMetricTagIter { + (*obj.fieldPtr)[index] = newObj.Msg() + obj.patternFlowIpv4TosPrecedenceMetricTagSlice[index] = newObj return obj } - -// Number of bits to track for metrics starting from configured offset of corresponding header field -// Length returns a uint32 -func (obj *patternFlowGtpv1TeidMetricTag) Length() uint32 { - - return *obj.obj.Length - +func (obj *patternFlowIpv4TosPrecedencePatternFlowIpv4TosPrecedenceMetricTagIter) Clear() PatternFlowIpv4TosPrecedencePatternFlowIpv4TosPrecedenceMetricTagIter { + if len(*obj.fieldPtr) > 0 { + *obj.fieldPtr = []*otg.PatternFlowIpv4TosPrecedenceMetricTag{} + obj.patternFlowIpv4TosPrecedenceMetricTagSlice = []PatternFlowIpv4TosPrecedenceMetricTag{} + } + return obj } - -// Number of bits to track for metrics starting from configured offset of corresponding header field -// Length returns a uint32 -func (obj *patternFlowGtpv1TeidMetricTag) HasLength() bool { - return obj.obj.Length != nil +func (obj *patternFlowIpv4TosPrecedencePatternFlowIpv4TosPrecedenceMetricTagIter) clearHolderSlice() PatternFlowIpv4TosPrecedencePatternFlowIpv4TosPrecedenceMetricTagIter { + if len(obj.patternFlowIpv4TosPrecedenceMetricTagSlice) > 0 { + obj.patternFlowIpv4TosPrecedenceMetricTagSlice = []PatternFlowIpv4TosPrecedenceMetricTag{} + } + return obj } - -// Number of bits to track for metrics starting from configured offset of corresponding header field -// SetLength sets the uint32 value in the PatternFlowGtpv1TeidMetricTag object -func (obj *patternFlowGtpv1TeidMetricTag) SetLength(value uint32) PatternFlowGtpv1TeidMetricTag { - - obj.obj.Length = &value +func (obj *patternFlowIpv4TosPrecedencePatternFlowIpv4TosPrecedenceMetricTagIter) appendHolderSlice(item PatternFlowIpv4TosPrecedenceMetricTag) PatternFlowIpv4TosPrecedencePatternFlowIpv4TosPrecedenceMetricTagIter { + obj.patternFlowIpv4TosPrecedenceMetricTagSlice = append(obj.patternFlowIpv4TosPrecedenceMetricTagSlice, item) return obj } -func (obj *patternFlowGtpv1TeidMetricTag) validateObj(vObj *validation, set_default bool) { +func (obj *patternFlowIpv4TosPrecedence) validateObj(vObj *validation, set_default bool) { if set_default { obj.setDefault() } - // Name is required - if obj.obj.Name == nil { - vObj.validationErrors = append(vObj.validationErrors, "Name is required field on interface PatternFlowGtpv1TeidMetricTag") - } - - if obj.obj.Offset != nil { + if obj.obj.Value != nil { - if *obj.obj.Offset > 31 { + if *obj.obj.Value > 7 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowGtpv1TeidMetricTag.Offset <= 31 but Got %d", *obj.obj.Offset)) + fmt.Sprintf("0 <= PatternFlowIpv4TosPrecedence.Value <= 7 but Got %d", *obj.obj.Value)) } } - if obj.obj.Length != nil { + if obj.obj.Values != nil { + + for _, item := range obj.obj.Values { + if item > 7 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("min(uint32) <= PatternFlowIpv4TosPrecedence.Values <= 7 but Got %d", item)) + } - if *obj.obj.Length < 1 || *obj.obj.Length > 32 { - vObj.validationErrors = append( - vObj.validationErrors, - fmt.Sprintf("1 <= PatternFlowGtpv1TeidMetricTag.Length <= 32 but Got %d", *obj.obj.Length)) } } -} + if obj.obj.Increment != nil { -func (obj *patternFlowGtpv1TeidMetricTag) setDefault() { - if obj.obj.Offset == nil { - obj.SetOffset(0) + obj.Increment().validateObj(vObj, set_default) } - if obj.obj.Length == nil { - obj.SetLength(32) + + if obj.obj.Decrement != nil { + + obj.Decrement().validateObj(vObj, set_default) + } + + if len(obj.obj.MetricTags) != 0 { + + if set_default { + obj.MetricTags().clearHolderSlice() + for _, item := range obj.obj.MetricTags { + obj.MetricTags().appendHolderSlice(&patternFlowIpv4TosPrecedenceMetricTag{obj: item}) + } + } + for _, item := range obj.MetricTags().Items() { + item.validateObj(vObj, set_default) + } + + } + +} + +func (obj *patternFlowIpv4TosPrecedence) setDefault() { + if obj.obj.Choice == nil { + obj.SetChoice(PatternFlowIpv4TosPrecedenceChoice.VALUE) + } } -// ***** PatternFlowGtpv1SquenceNumberCounter ***** -type patternFlowGtpv1SquenceNumberCounter struct { +// ***** PatternFlowIpv4TosDelay ***** +type patternFlowIpv4TosDelay struct { validation - obj *otg.PatternFlowGtpv1SquenceNumberCounter + obj *otg.PatternFlowIpv4TosDelay + incrementHolder PatternFlowIpv4TosDelayCounter + decrementHolder PatternFlowIpv4TosDelayCounter + metricTagsHolder PatternFlowIpv4TosDelayPatternFlowIpv4TosDelayMetricTagIter } -func NewPatternFlowGtpv1SquenceNumberCounter() PatternFlowGtpv1SquenceNumberCounter { - obj := patternFlowGtpv1SquenceNumberCounter{obj: &otg.PatternFlowGtpv1SquenceNumberCounter{}} +func NewPatternFlowIpv4TosDelay() PatternFlowIpv4TosDelay { + obj := patternFlowIpv4TosDelay{obj: &otg.PatternFlowIpv4TosDelay{}} obj.setDefault() return &obj } -func (obj *patternFlowGtpv1SquenceNumberCounter) Msg() *otg.PatternFlowGtpv1SquenceNumberCounter { +func (obj *patternFlowIpv4TosDelay) Msg() *otg.PatternFlowIpv4TosDelay { return obj.obj } -func (obj *patternFlowGtpv1SquenceNumberCounter) SetMsg(msg *otg.PatternFlowGtpv1SquenceNumberCounter) PatternFlowGtpv1SquenceNumberCounter { - +func (obj *patternFlowIpv4TosDelay) SetMsg(msg *otg.PatternFlowIpv4TosDelay) PatternFlowIpv4TosDelay { + obj.setNil() proto.Merge(obj.obj, msg) return obj } -func (obj *patternFlowGtpv1SquenceNumberCounter) ToProto() (*otg.PatternFlowGtpv1SquenceNumberCounter, error) { +func (obj *patternFlowIpv4TosDelay) ToProto() (*otg.PatternFlowIpv4TosDelay, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -242829,7 +287862,7 @@ func (obj *patternFlowGtpv1SquenceNumberCounter) ToProto() (*otg.PatternFlowGtpv return obj.Msg(), nil } -func (obj *patternFlowGtpv1SquenceNumberCounter) FromProto(msg *otg.PatternFlowGtpv1SquenceNumberCounter) (PatternFlowGtpv1SquenceNumberCounter, error) { +func (obj *patternFlowIpv4TosDelay) FromProto(msg *otg.PatternFlowIpv4TosDelay) (PatternFlowIpv4TosDelay, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -242838,7 +287871,7 @@ func (obj *patternFlowGtpv1SquenceNumberCounter) FromProto(msg *otg.PatternFlowG return newObj, nil } -func (obj *patternFlowGtpv1SquenceNumberCounter) ToPbText() (string, error) { +func (obj *patternFlowIpv4TosDelay) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -242850,12 +287883,12 @@ func (obj *patternFlowGtpv1SquenceNumberCounter) ToPbText() (string, error) { return string(protoMarshal), nil } -func (obj *patternFlowGtpv1SquenceNumberCounter) FromPbText(value string) error { +func (obj *patternFlowIpv4TosDelay) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj } - + obj.setNil() vErr := obj.validateToAndFrom() if vErr != nil { return vErr @@ -242863,7 +287896,7 @@ func (obj *patternFlowGtpv1SquenceNumberCounter) FromPbText(value string) error return retObj } -func (obj *patternFlowGtpv1SquenceNumberCounter) ToYaml() (string, error) { +func (obj *patternFlowIpv4TosDelay) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -242884,7 +287917,7 @@ func (obj *patternFlowGtpv1SquenceNumberCounter) ToYaml() (string, error) { return string(data), nil } -func (obj *patternFlowGtpv1SquenceNumberCounter) FromYaml(value string) error { +func (obj *patternFlowIpv4TosDelay) FromYaml(value string) error { if value == "" { value = "{}" } @@ -242901,7 +287934,7 @@ func (obj *patternFlowGtpv1SquenceNumberCounter) FromYaml(value string) error { return fmt.Errorf("unmarshal error %s", strings.Replace( uError.Error(), "\u00a0", " ", -1)[7:]) } - + obj.setNil() vErr := obj.validateToAndFrom() if vErr != nil { return vErr @@ -242909,7 +287942,7 @@ func (obj *patternFlowGtpv1SquenceNumberCounter) FromYaml(value string) error { return nil } -func (obj *patternFlowGtpv1SquenceNumberCounter) ToJson() (string, error) { +func (obj *patternFlowIpv4TosDelay) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -242927,7 +287960,7 @@ func (obj *patternFlowGtpv1SquenceNumberCounter) ToJson() (string, error) { return string(data), nil } -func (obj *patternFlowGtpv1SquenceNumberCounter) FromJson(value string) error { +func (obj *patternFlowIpv4TosDelay) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -242940,7 +287973,7 @@ func (obj *patternFlowGtpv1SquenceNumberCounter) FromJson(value string) error { return fmt.Errorf("unmarshal error %s", strings.Replace( uError.Error(), "\u00a0", " ", -1)[7:]) } - + obj.setNil() err := obj.validateToAndFrom() if err != nil { return err @@ -242948,19 +287981,19 @@ func (obj *patternFlowGtpv1SquenceNumberCounter) FromJson(value string) error { return nil } -func (obj *patternFlowGtpv1SquenceNumberCounter) validateToAndFrom() error { +func (obj *patternFlowIpv4TosDelay) validateToAndFrom() error { // emptyVars() obj.validateObj(&obj.validation, true) return obj.validationResult() } -func (obj *patternFlowGtpv1SquenceNumberCounter) Validate() error { +func (obj *patternFlowIpv4TosDelay) Validate() error { // emptyVars() obj.validateObj(&obj.validation, false) return obj.validationResult() } -func (obj *patternFlowGtpv1SquenceNumberCounter) String() string { +func (obj *patternFlowIpv4TosDelay) String() string { str, err := obj.ToYaml() if err != nil { return err.Error() @@ -242968,12 +288001,12 @@ func (obj *patternFlowGtpv1SquenceNumberCounter) String() string { return str } -func (obj *patternFlowGtpv1SquenceNumberCounter) Clone() (PatternFlowGtpv1SquenceNumberCounter, error) { +func (obj *patternFlowIpv4TosDelay) Clone() (PatternFlowIpv4TosDelay, error) { vErr := obj.Validate() if vErr != nil { return nil, vErr } - newObj := NewPatternFlowGtpv1SquenceNumberCounter() + newObj := NewPatternFlowIpv4TosDelay() data, err := proto.Marshal(obj.Msg()) if err != nil { return nil, err @@ -242985,199 +288018,426 @@ func (obj *patternFlowGtpv1SquenceNumberCounter) Clone() (PatternFlowGtpv1Squenc return newObj, nil } -// PatternFlowGtpv1SquenceNumberCounter is integer counter pattern -type PatternFlowGtpv1SquenceNumberCounter interface { +func (obj *patternFlowIpv4TosDelay) setNil() { + obj.incrementHolder = nil + obj.decrementHolder = nil + obj.metricTagsHolder = nil + obj.validationErrors = nil + obj.warnings = nil + obj.constraints = make(map[string]map[string]Constraints) +} + +// PatternFlowIpv4TosDelay is delay +type PatternFlowIpv4TosDelay interface { Validation - // Msg marshals PatternFlowGtpv1SquenceNumberCounter to protobuf object *otg.PatternFlowGtpv1SquenceNumberCounter + // Msg marshals PatternFlowIpv4TosDelay to protobuf object *otg.PatternFlowIpv4TosDelay // and doesn't set defaults - Msg() *otg.PatternFlowGtpv1SquenceNumberCounter - // SetMsg unmarshals PatternFlowGtpv1SquenceNumberCounter from protobuf object *otg.PatternFlowGtpv1SquenceNumberCounter + Msg() *otg.PatternFlowIpv4TosDelay + // SetMsg unmarshals PatternFlowIpv4TosDelay from protobuf object *otg.PatternFlowIpv4TosDelay // and doesn't set defaults - SetMsg(*otg.PatternFlowGtpv1SquenceNumberCounter) PatternFlowGtpv1SquenceNumberCounter - // ToProto marshals PatternFlowGtpv1SquenceNumberCounter to protobuf object *otg.PatternFlowGtpv1SquenceNumberCounter - ToProto() (*otg.PatternFlowGtpv1SquenceNumberCounter, error) - // ToPbText marshals PatternFlowGtpv1SquenceNumberCounter to protobuf text + SetMsg(*otg.PatternFlowIpv4TosDelay) PatternFlowIpv4TosDelay + // ToProto marshals PatternFlowIpv4TosDelay to protobuf object *otg.PatternFlowIpv4TosDelay + ToProto() (*otg.PatternFlowIpv4TosDelay, error) + // ToPbText marshals PatternFlowIpv4TosDelay to protobuf text ToPbText() (string, error) - // ToYaml marshals PatternFlowGtpv1SquenceNumberCounter to YAML text + // ToYaml marshals PatternFlowIpv4TosDelay to YAML text ToYaml() (string, error) - // ToJson marshals PatternFlowGtpv1SquenceNumberCounter to JSON text + // ToJson marshals PatternFlowIpv4TosDelay to JSON text ToJson() (string, error) - // FromProto unmarshals PatternFlowGtpv1SquenceNumberCounter from protobuf object *otg.PatternFlowGtpv1SquenceNumberCounter - FromProto(msg *otg.PatternFlowGtpv1SquenceNumberCounter) (PatternFlowGtpv1SquenceNumberCounter, error) - // FromPbText unmarshals PatternFlowGtpv1SquenceNumberCounter from protobuf text + // FromProto unmarshals PatternFlowIpv4TosDelay from protobuf object *otg.PatternFlowIpv4TosDelay + FromProto(msg *otg.PatternFlowIpv4TosDelay) (PatternFlowIpv4TosDelay, error) + // FromPbText unmarshals PatternFlowIpv4TosDelay from protobuf text FromPbText(value string) error - // FromYaml unmarshals PatternFlowGtpv1SquenceNumberCounter from YAML text + // FromYaml unmarshals PatternFlowIpv4TosDelay from YAML text FromYaml(value string) error - // FromJson unmarshals PatternFlowGtpv1SquenceNumberCounter from JSON text + // FromJson unmarshals PatternFlowIpv4TosDelay from JSON text FromJson(value string) error - // Validate validates PatternFlowGtpv1SquenceNumberCounter + // Validate validates PatternFlowIpv4TosDelay Validate() error // A stringer function String() string // Clones the object - Clone() (PatternFlowGtpv1SquenceNumberCounter, error) + Clone() (PatternFlowIpv4TosDelay, error) validateToAndFrom() error validateObj(vObj *validation, set_default bool) setDefault() - // Start returns uint32, set in PatternFlowGtpv1SquenceNumberCounter. - Start() uint32 - // SetStart assigns uint32 provided by user to PatternFlowGtpv1SquenceNumberCounter - SetStart(value uint32) PatternFlowGtpv1SquenceNumberCounter - // HasStart checks if Start has been set in PatternFlowGtpv1SquenceNumberCounter - HasStart() bool - // Step returns uint32, set in PatternFlowGtpv1SquenceNumberCounter. - Step() uint32 - // SetStep assigns uint32 provided by user to PatternFlowGtpv1SquenceNumberCounter - SetStep(value uint32) PatternFlowGtpv1SquenceNumberCounter - // HasStep checks if Step has been set in PatternFlowGtpv1SquenceNumberCounter - HasStep() bool - // Count returns uint32, set in PatternFlowGtpv1SquenceNumberCounter. - Count() uint32 - // SetCount assigns uint32 provided by user to PatternFlowGtpv1SquenceNumberCounter - SetCount(value uint32) PatternFlowGtpv1SquenceNumberCounter - // HasCount checks if Count has been set in PatternFlowGtpv1SquenceNumberCounter - HasCount() bool + // Choice returns PatternFlowIpv4TosDelayChoiceEnum, set in PatternFlowIpv4TosDelay + Choice() PatternFlowIpv4TosDelayChoiceEnum + // SetChoice assigns PatternFlowIpv4TosDelayChoiceEnum provided by user to PatternFlowIpv4TosDelay + SetChoice(value PatternFlowIpv4TosDelayChoiceEnum) PatternFlowIpv4TosDelay + // HasChoice checks if Choice has been set in PatternFlowIpv4TosDelay + HasChoice() bool + // Value returns uint32, set in PatternFlowIpv4TosDelay. + Value() uint32 + // SetValue assigns uint32 provided by user to PatternFlowIpv4TosDelay + SetValue(value uint32) PatternFlowIpv4TosDelay + // HasValue checks if Value has been set in PatternFlowIpv4TosDelay + HasValue() bool + // Values returns []uint32, set in PatternFlowIpv4TosDelay. + Values() []uint32 + // SetValues assigns []uint32 provided by user to PatternFlowIpv4TosDelay + SetValues(value []uint32) PatternFlowIpv4TosDelay + // Increment returns PatternFlowIpv4TosDelayCounter, set in PatternFlowIpv4TosDelay. + // PatternFlowIpv4TosDelayCounter is integer counter pattern + Increment() PatternFlowIpv4TosDelayCounter + // SetIncrement assigns PatternFlowIpv4TosDelayCounter provided by user to PatternFlowIpv4TosDelay. + // PatternFlowIpv4TosDelayCounter is integer counter pattern + SetIncrement(value PatternFlowIpv4TosDelayCounter) PatternFlowIpv4TosDelay + // HasIncrement checks if Increment has been set in PatternFlowIpv4TosDelay + HasIncrement() bool + // Decrement returns PatternFlowIpv4TosDelayCounter, set in PatternFlowIpv4TosDelay. + // PatternFlowIpv4TosDelayCounter is integer counter pattern + Decrement() PatternFlowIpv4TosDelayCounter + // SetDecrement assigns PatternFlowIpv4TosDelayCounter provided by user to PatternFlowIpv4TosDelay. + // PatternFlowIpv4TosDelayCounter is integer counter pattern + SetDecrement(value PatternFlowIpv4TosDelayCounter) PatternFlowIpv4TosDelay + // HasDecrement checks if Decrement has been set in PatternFlowIpv4TosDelay + HasDecrement() bool + // MetricTags returns PatternFlowIpv4TosDelayPatternFlowIpv4TosDelayMetricTagIterIter, set in PatternFlowIpv4TosDelay + MetricTags() PatternFlowIpv4TosDelayPatternFlowIpv4TosDelayMetricTagIter + setNil() } -// description is TBD -// Start returns a uint32 -func (obj *patternFlowGtpv1SquenceNumberCounter) Start() uint32 { +type PatternFlowIpv4TosDelayChoiceEnum string - return *obj.obj.Start +// Enum of Choice on PatternFlowIpv4TosDelay +var PatternFlowIpv4TosDelayChoice = struct { + VALUE PatternFlowIpv4TosDelayChoiceEnum + VALUES PatternFlowIpv4TosDelayChoiceEnum + INCREMENT PatternFlowIpv4TosDelayChoiceEnum + DECREMENT PatternFlowIpv4TosDelayChoiceEnum +}{ + VALUE: PatternFlowIpv4TosDelayChoiceEnum("value"), + VALUES: PatternFlowIpv4TosDelayChoiceEnum("values"), + INCREMENT: PatternFlowIpv4TosDelayChoiceEnum("increment"), + DECREMENT: PatternFlowIpv4TosDelayChoiceEnum("decrement"), +} +func (obj *patternFlowIpv4TosDelay) Choice() PatternFlowIpv4TosDelayChoiceEnum { + return PatternFlowIpv4TosDelayChoiceEnum(obj.obj.Choice.Enum().String()) } // description is TBD -// Start returns a uint32 -func (obj *patternFlowGtpv1SquenceNumberCounter) HasStart() bool { - return obj.obj.Start != nil +// Choice returns a string +func (obj *patternFlowIpv4TosDelay) HasChoice() bool { + return obj.obj.Choice != nil } -// description is TBD -// SetStart sets the uint32 value in the PatternFlowGtpv1SquenceNumberCounter object -func (obj *patternFlowGtpv1SquenceNumberCounter) SetStart(value uint32) PatternFlowGtpv1SquenceNumberCounter { +func (obj *patternFlowIpv4TosDelay) SetChoice(value PatternFlowIpv4TosDelayChoiceEnum) PatternFlowIpv4TosDelay { + intValue, ok := otg.PatternFlowIpv4TosDelay_Choice_Enum_value[string(value)] + if !ok { + obj.validationErrors = append(obj.validationErrors, fmt.Sprintf( + "%s is not a valid choice on PatternFlowIpv4TosDelayChoiceEnum", string(value))) + return obj + } + enumValue := otg.PatternFlowIpv4TosDelay_Choice_Enum(intValue) + obj.obj.Choice = &enumValue + obj.obj.Decrement = nil + obj.decrementHolder = nil + obj.obj.Increment = nil + obj.incrementHolder = nil + obj.obj.Values = nil + obj.obj.Value = nil + + if value == PatternFlowIpv4TosDelayChoice.VALUE { + defaultValue := uint32(0) + obj.obj.Value = &defaultValue + } + + if value == PatternFlowIpv4TosDelayChoice.VALUES { + defaultValue := []uint32{0} + obj.obj.Values = defaultValue + } + + if value == PatternFlowIpv4TosDelayChoice.INCREMENT { + obj.obj.Increment = NewPatternFlowIpv4TosDelayCounter().Msg() + } + + if value == PatternFlowIpv4TosDelayChoice.DECREMENT { + obj.obj.Decrement = NewPatternFlowIpv4TosDelayCounter().Msg() + } - obj.obj.Start = &value return obj } // description is TBD -// Step returns a uint32 -func (obj *patternFlowGtpv1SquenceNumberCounter) Step() uint32 { +// Value returns a uint32 +func (obj *patternFlowIpv4TosDelay) Value() uint32 { - return *obj.obj.Step + if obj.obj.Value == nil { + obj.SetChoice(PatternFlowIpv4TosDelayChoice.VALUE) + } + + return *obj.obj.Value } // description is TBD -// Step returns a uint32 -func (obj *patternFlowGtpv1SquenceNumberCounter) HasStep() bool { - return obj.obj.Step != nil +// Value returns a uint32 +func (obj *patternFlowIpv4TosDelay) HasValue() bool { + return obj.obj.Value != nil } // description is TBD -// SetStep sets the uint32 value in the PatternFlowGtpv1SquenceNumberCounter object -func (obj *patternFlowGtpv1SquenceNumberCounter) SetStep(value uint32) PatternFlowGtpv1SquenceNumberCounter { +// SetValue sets the uint32 value in the PatternFlowIpv4TosDelay object +func (obj *patternFlowIpv4TosDelay) SetValue(value uint32) PatternFlowIpv4TosDelay { + obj.SetChoice(PatternFlowIpv4TosDelayChoice.VALUE) + obj.obj.Value = &value + return obj +} + +// description is TBD +// Values returns a []uint32 +func (obj *patternFlowIpv4TosDelay) Values() []uint32 { + if obj.obj.Values == nil { + obj.SetValues([]uint32{0}) + } + return obj.obj.Values +} + +// description is TBD +// SetValues sets the []uint32 value in the PatternFlowIpv4TosDelay object +func (obj *patternFlowIpv4TosDelay) SetValues(value []uint32) PatternFlowIpv4TosDelay { + obj.SetChoice(PatternFlowIpv4TosDelayChoice.VALUES) + if obj.obj.Values == nil { + obj.obj.Values = make([]uint32, 0) + } + obj.obj.Values = value - obj.obj.Step = &value return obj } // description is TBD -// Count returns a uint32 -func (obj *patternFlowGtpv1SquenceNumberCounter) Count() uint32 { +// Increment returns a PatternFlowIpv4TosDelayCounter +func (obj *patternFlowIpv4TosDelay) Increment() PatternFlowIpv4TosDelayCounter { + if obj.obj.Increment == nil { + obj.SetChoice(PatternFlowIpv4TosDelayChoice.INCREMENT) + } + if obj.incrementHolder == nil { + obj.incrementHolder = &patternFlowIpv4TosDelayCounter{obj: obj.obj.Increment} + } + return obj.incrementHolder +} - return *obj.obj.Count +// description is TBD +// Increment returns a PatternFlowIpv4TosDelayCounter +func (obj *patternFlowIpv4TosDelay) HasIncrement() bool { + return obj.obj.Increment != nil +} +// description is TBD +// SetIncrement sets the PatternFlowIpv4TosDelayCounter value in the PatternFlowIpv4TosDelay object +func (obj *patternFlowIpv4TosDelay) SetIncrement(value PatternFlowIpv4TosDelayCounter) PatternFlowIpv4TosDelay { + obj.SetChoice(PatternFlowIpv4TosDelayChoice.INCREMENT) + obj.incrementHolder = nil + obj.obj.Increment = value.Msg() + + return obj } // description is TBD -// Count returns a uint32 -func (obj *patternFlowGtpv1SquenceNumberCounter) HasCount() bool { - return obj.obj.Count != nil +// Decrement returns a PatternFlowIpv4TosDelayCounter +func (obj *patternFlowIpv4TosDelay) Decrement() PatternFlowIpv4TosDelayCounter { + if obj.obj.Decrement == nil { + obj.SetChoice(PatternFlowIpv4TosDelayChoice.DECREMENT) + } + if obj.decrementHolder == nil { + obj.decrementHolder = &patternFlowIpv4TosDelayCounter{obj: obj.obj.Decrement} + } + return obj.decrementHolder } // description is TBD -// SetCount sets the uint32 value in the PatternFlowGtpv1SquenceNumberCounter object -func (obj *patternFlowGtpv1SquenceNumberCounter) SetCount(value uint32) PatternFlowGtpv1SquenceNumberCounter { +// Decrement returns a PatternFlowIpv4TosDelayCounter +func (obj *patternFlowIpv4TosDelay) HasDecrement() bool { + return obj.obj.Decrement != nil +} + +// description is TBD +// SetDecrement sets the PatternFlowIpv4TosDelayCounter value in the PatternFlowIpv4TosDelay object +func (obj *patternFlowIpv4TosDelay) SetDecrement(value PatternFlowIpv4TosDelayCounter) PatternFlowIpv4TosDelay { + obj.SetChoice(PatternFlowIpv4TosDelayChoice.DECREMENT) + obj.decrementHolder = nil + obj.obj.Decrement = value.Msg() - obj.obj.Count = &value return obj } -func (obj *patternFlowGtpv1SquenceNumberCounter) validateObj(vObj *validation, set_default bool) { +// One or more metric tags can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. +// MetricTags returns a []PatternFlowIpv4TosDelayMetricTag +func (obj *patternFlowIpv4TosDelay) MetricTags() PatternFlowIpv4TosDelayPatternFlowIpv4TosDelayMetricTagIter { + if len(obj.obj.MetricTags) == 0 { + obj.obj.MetricTags = []*otg.PatternFlowIpv4TosDelayMetricTag{} + } + if obj.metricTagsHolder == nil { + obj.metricTagsHolder = newPatternFlowIpv4TosDelayPatternFlowIpv4TosDelayMetricTagIter(&obj.obj.MetricTags).setMsg(obj) + } + return obj.metricTagsHolder +} + +type patternFlowIpv4TosDelayPatternFlowIpv4TosDelayMetricTagIter struct { + obj *patternFlowIpv4TosDelay + patternFlowIpv4TosDelayMetricTagSlice []PatternFlowIpv4TosDelayMetricTag + fieldPtr *[]*otg.PatternFlowIpv4TosDelayMetricTag +} + +func newPatternFlowIpv4TosDelayPatternFlowIpv4TosDelayMetricTagIter(ptr *[]*otg.PatternFlowIpv4TosDelayMetricTag) PatternFlowIpv4TosDelayPatternFlowIpv4TosDelayMetricTagIter { + return &patternFlowIpv4TosDelayPatternFlowIpv4TosDelayMetricTagIter{fieldPtr: ptr} +} + +type PatternFlowIpv4TosDelayPatternFlowIpv4TosDelayMetricTagIter interface { + setMsg(*patternFlowIpv4TosDelay) PatternFlowIpv4TosDelayPatternFlowIpv4TosDelayMetricTagIter + Items() []PatternFlowIpv4TosDelayMetricTag + Add() PatternFlowIpv4TosDelayMetricTag + Append(items ...PatternFlowIpv4TosDelayMetricTag) PatternFlowIpv4TosDelayPatternFlowIpv4TosDelayMetricTagIter + Set(index int, newObj PatternFlowIpv4TosDelayMetricTag) PatternFlowIpv4TosDelayPatternFlowIpv4TosDelayMetricTagIter + Clear() PatternFlowIpv4TosDelayPatternFlowIpv4TosDelayMetricTagIter + clearHolderSlice() PatternFlowIpv4TosDelayPatternFlowIpv4TosDelayMetricTagIter + appendHolderSlice(item PatternFlowIpv4TosDelayMetricTag) PatternFlowIpv4TosDelayPatternFlowIpv4TosDelayMetricTagIter +} + +func (obj *patternFlowIpv4TosDelayPatternFlowIpv4TosDelayMetricTagIter) setMsg(msg *patternFlowIpv4TosDelay) PatternFlowIpv4TosDelayPatternFlowIpv4TosDelayMetricTagIter { + obj.clearHolderSlice() + for _, val := range *obj.fieldPtr { + obj.appendHolderSlice(&patternFlowIpv4TosDelayMetricTag{obj: val}) + } + obj.obj = msg + return obj +} + +func (obj *patternFlowIpv4TosDelayPatternFlowIpv4TosDelayMetricTagIter) Items() []PatternFlowIpv4TosDelayMetricTag { + return obj.patternFlowIpv4TosDelayMetricTagSlice +} + +func (obj *patternFlowIpv4TosDelayPatternFlowIpv4TosDelayMetricTagIter) Add() PatternFlowIpv4TosDelayMetricTag { + newObj := &otg.PatternFlowIpv4TosDelayMetricTag{} + *obj.fieldPtr = append(*obj.fieldPtr, newObj) + newLibObj := &patternFlowIpv4TosDelayMetricTag{obj: newObj} + newLibObj.setDefault() + obj.patternFlowIpv4TosDelayMetricTagSlice = append(obj.patternFlowIpv4TosDelayMetricTagSlice, newLibObj) + return newLibObj +} + +func (obj *patternFlowIpv4TosDelayPatternFlowIpv4TosDelayMetricTagIter) Append(items ...PatternFlowIpv4TosDelayMetricTag) PatternFlowIpv4TosDelayPatternFlowIpv4TosDelayMetricTagIter { + for _, item := range items { + newObj := item.Msg() + *obj.fieldPtr = append(*obj.fieldPtr, newObj) + obj.patternFlowIpv4TosDelayMetricTagSlice = append(obj.patternFlowIpv4TosDelayMetricTagSlice, item) + } + return obj +} + +func (obj *patternFlowIpv4TosDelayPatternFlowIpv4TosDelayMetricTagIter) Set(index int, newObj PatternFlowIpv4TosDelayMetricTag) PatternFlowIpv4TosDelayPatternFlowIpv4TosDelayMetricTagIter { + (*obj.fieldPtr)[index] = newObj.Msg() + obj.patternFlowIpv4TosDelayMetricTagSlice[index] = newObj + return obj +} +func (obj *patternFlowIpv4TosDelayPatternFlowIpv4TosDelayMetricTagIter) Clear() PatternFlowIpv4TosDelayPatternFlowIpv4TosDelayMetricTagIter { + if len(*obj.fieldPtr) > 0 { + *obj.fieldPtr = []*otg.PatternFlowIpv4TosDelayMetricTag{} + obj.patternFlowIpv4TosDelayMetricTagSlice = []PatternFlowIpv4TosDelayMetricTag{} + } + return obj +} +func (obj *patternFlowIpv4TosDelayPatternFlowIpv4TosDelayMetricTagIter) clearHolderSlice() PatternFlowIpv4TosDelayPatternFlowIpv4TosDelayMetricTagIter { + if len(obj.patternFlowIpv4TosDelayMetricTagSlice) > 0 { + obj.patternFlowIpv4TosDelayMetricTagSlice = []PatternFlowIpv4TosDelayMetricTag{} + } + return obj +} +func (obj *patternFlowIpv4TosDelayPatternFlowIpv4TosDelayMetricTagIter) appendHolderSlice(item PatternFlowIpv4TosDelayMetricTag) PatternFlowIpv4TosDelayPatternFlowIpv4TosDelayMetricTagIter { + obj.patternFlowIpv4TosDelayMetricTagSlice = append(obj.patternFlowIpv4TosDelayMetricTagSlice, item) + return obj +} + +func (obj *patternFlowIpv4TosDelay) validateObj(vObj *validation, set_default bool) { if set_default { obj.setDefault() } - if obj.obj.Start != nil { + if obj.obj.Value != nil { - if *obj.obj.Start > 65535 { + if *obj.obj.Value > 1 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowGtpv1SquenceNumberCounter.Start <= 65535 but Got %d", *obj.obj.Start)) + fmt.Sprintf("0 <= PatternFlowIpv4TosDelay.Value <= 1 but Got %d", *obj.obj.Value)) } } - if obj.obj.Step != nil { + if obj.obj.Values != nil { + + for _, item := range obj.obj.Values { + if item > 1 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("min(uint32) <= PatternFlowIpv4TosDelay.Values <= 1 but Got %d", item)) + } - if *obj.obj.Step > 65535 { - vObj.validationErrors = append( - vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowGtpv1SquenceNumberCounter.Step <= 65535 but Got %d", *obj.obj.Step)) } } - if obj.obj.Count != nil { + if obj.obj.Increment != nil { - if *obj.obj.Count > 65535 { - vObj.validationErrors = append( - vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowGtpv1SquenceNumberCounter.Count <= 65535 but Got %d", *obj.obj.Count)) + obj.Increment().validateObj(vObj, set_default) + } + + if obj.obj.Decrement != nil { + + obj.Decrement().validateObj(vObj, set_default) + } + + if len(obj.obj.MetricTags) != 0 { + + if set_default { + obj.MetricTags().clearHolderSlice() + for _, item := range obj.obj.MetricTags { + obj.MetricTags().appendHolderSlice(&patternFlowIpv4TosDelayMetricTag{obj: item}) + } + } + for _, item := range obj.MetricTags().Items() { + item.validateObj(vObj, set_default) } } } -func (obj *patternFlowGtpv1SquenceNumberCounter) setDefault() { - if obj.obj.Start == nil { - obj.SetStart(0) - } - if obj.obj.Step == nil { - obj.SetStep(1) - } - if obj.obj.Count == nil { - obj.SetCount(1) +func (obj *patternFlowIpv4TosDelay) setDefault() { + if obj.obj.Choice == nil { + obj.SetChoice(PatternFlowIpv4TosDelayChoice.VALUE) + } } -// ***** PatternFlowGtpv1SquenceNumberMetricTag ***** -type patternFlowGtpv1SquenceNumberMetricTag struct { +// ***** PatternFlowIpv4TosThroughput ***** +type patternFlowIpv4TosThroughput struct { validation - obj *otg.PatternFlowGtpv1SquenceNumberMetricTag + obj *otg.PatternFlowIpv4TosThroughput + incrementHolder PatternFlowIpv4TosThroughputCounter + decrementHolder PatternFlowIpv4TosThroughputCounter + metricTagsHolder PatternFlowIpv4TosThroughputPatternFlowIpv4TosThroughputMetricTagIter } -func NewPatternFlowGtpv1SquenceNumberMetricTag() PatternFlowGtpv1SquenceNumberMetricTag { - obj := patternFlowGtpv1SquenceNumberMetricTag{obj: &otg.PatternFlowGtpv1SquenceNumberMetricTag{}} +func NewPatternFlowIpv4TosThroughput() PatternFlowIpv4TosThroughput { + obj := patternFlowIpv4TosThroughput{obj: &otg.PatternFlowIpv4TosThroughput{}} obj.setDefault() return &obj } -func (obj *patternFlowGtpv1SquenceNumberMetricTag) Msg() *otg.PatternFlowGtpv1SquenceNumberMetricTag { +func (obj *patternFlowIpv4TosThroughput) Msg() *otg.PatternFlowIpv4TosThroughput { return obj.obj } -func (obj *patternFlowGtpv1SquenceNumberMetricTag) SetMsg(msg *otg.PatternFlowGtpv1SquenceNumberMetricTag) PatternFlowGtpv1SquenceNumberMetricTag { - +func (obj *patternFlowIpv4TosThroughput) SetMsg(msg *otg.PatternFlowIpv4TosThroughput) PatternFlowIpv4TosThroughput { + obj.setNil() proto.Merge(obj.obj, msg) return obj } -func (obj *patternFlowGtpv1SquenceNumberMetricTag) ToProto() (*otg.PatternFlowGtpv1SquenceNumberMetricTag, error) { +func (obj *patternFlowIpv4TosThroughput) ToProto() (*otg.PatternFlowIpv4TosThroughput, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -243185,7 +288445,7 @@ func (obj *patternFlowGtpv1SquenceNumberMetricTag) ToProto() (*otg.PatternFlowGt return obj.Msg(), nil } -func (obj *patternFlowGtpv1SquenceNumberMetricTag) FromProto(msg *otg.PatternFlowGtpv1SquenceNumberMetricTag) (PatternFlowGtpv1SquenceNumberMetricTag, error) { +func (obj *patternFlowIpv4TosThroughput) FromProto(msg *otg.PatternFlowIpv4TosThroughput) (PatternFlowIpv4TosThroughput, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -243194,7 +288454,7 @@ func (obj *patternFlowGtpv1SquenceNumberMetricTag) FromProto(msg *otg.PatternFlo return newObj, nil } -func (obj *patternFlowGtpv1SquenceNumberMetricTag) ToPbText() (string, error) { +func (obj *patternFlowIpv4TosThroughput) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -243206,12 +288466,12 @@ func (obj *patternFlowGtpv1SquenceNumberMetricTag) ToPbText() (string, error) { return string(protoMarshal), nil } -func (obj *patternFlowGtpv1SquenceNumberMetricTag) FromPbText(value string) error { +func (obj *patternFlowIpv4TosThroughput) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj } - + obj.setNil() vErr := obj.validateToAndFrom() if vErr != nil { return vErr @@ -243219,7 +288479,7 @@ func (obj *patternFlowGtpv1SquenceNumberMetricTag) FromPbText(value string) erro return retObj } -func (obj *patternFlowGtpv1SquenceNumberMetricTag) ToYaml() (string, error) { +func (obj *patternFlowIpv4TosThroughput) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -243240,7 +288500,7 @@ func (obj *patternFlowGtpv1SquenceNumberMetricTag) ToYaml() (string, error) { return string(data), nil } -func (obj *patternFlowGtpv1SquenceNumberMetricTag) FromYaml(value string) error { +func (obj *patternFlowIpv4TosThroughput) FromYaml(value string) error { if value == "" { value = "{}" } @@ -243257,7 +288517,7 @@ func (obj *patternFlowGtpv1SquenceNumberMetricTag) FromYaml(value string) error return fmt.Errorf("unmarshal error %s", strings.Replace( uError.Error(), "\u00a0", " ", -1)[7:]) } - + obj.setNil() vErr := obj.validateToAndFrom() if vErr != nil { return vErr @@ -243265,7 +288525,7 @@ func (obj *patternFlowGtpv1SquenceNumberMetricTag) FromYaml(value string) error return nil } -func (obj *patternFlowGtpv1SquenceNumberMetricTag) ToJson() (string, error) { +func (obj *patternFlowIpv4TosThroughput) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -243283,7 +288543,7 @@ func (obj *patternFlowGtpv1SquenceNumberMetricTag) ToJson() (string, error) { return string(data), nil } -func (obj *patternFlowGtpv1SquenceNumberMetricTag) FromJson(value string) error { +func (obj *patternFlowIpv4TosThroughput) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -243296,7 +288556,7 @@ func (obj *patternFlowGtpv1SquenceNumberMetricTag) FromJson(value string) error return fmt.Errorf("unmarshal error %s", strings.Replace( uError.Error(), "\u00a0", " ", -1)[7:]) } - + obj.setNil() err := obj.validateToAndFrom() if err != nil { return err @@ -243304,19 +288564,19 @@ func (obj *patternFlowGtpv1SquenceNumberMetricTag) FromJson(value string) error return nil } -func (obj *patternFlowGtpv1SquenceNumberMetricTag) validateToAndFrom() error { +func (obj *patternFlowIpv4TosThroughput) validateToAndFrom() error { // emptyVars() obj.validateObj(&obj.validation, true) return obj.validationResult() } -func (obj *patternFlowGtpv1SquenceNumberMetricTag) Validate() error { +func (obj *patternFlowIpv4TosThroughput) Validate() error { // emptyVars() obj.validateObj(&obj.validation, false) return obj.validationResult() } -func (obj *patternFlowGtpv1SquenceNumberMetricTag) String() string { +func (obj *patternFlowIpv4TosThroughput) String() string { str, err := obj.ToYaml() if err != nil { return err.Error() @@ -243324,12 +288584,12 @@ func (obj *patternFlowGtpv1SquenceNumberMetricTag) String() string { return str } -func (obj *patternFlowGtpv1SquenceNumberMetricTag) Clone() (PatternFlowGtpv1SquenceNumberMetricTag, error) { +func (obj *patternFlowIpv4TosThroughput) Clone() (PatternFlowIpv4TosThroughput, error) { vErr := obj.Validate() if vErr != nil { return nil, vErr } - newObj := NewPatternFlowGtpv1SquenceNumberMetricTag() + newObj := NewPatternFlowIpv4TosThroughput() data, err := proto.Marshal(obj.Msg()) if err != nil { return nil, err @@ -243341,539 +288601,426 @@ func (obj *patternFlowGtpv1SquenceNumberMetricTag) Clone() (PatternFlowGtpv1Sque return newObj, nil } -// PatternFlowGtpv1SquenceNumberMetricTag is metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. -type PatternFlowGtpv1SquenceNumberMetricTag interface { +func (obj *patternFlowIpv4TosThroughput) setNil() { + obj.incrementHolder = nil + obj.decrementHolder = nil + obj.metricTagsHolder = nil + obj.validationErrors = nil + obj.warnings = nil + obj.constraints = make(map[string]map[string]Constraints) +} + +// PatternFlowIpv4TosThroughput is throughput +type PatternFlowIpv4TosThroughput interface { Validation - // Msg marshals PatternFlowGtpv1SquenceNumberMetricTag to protobuf object *otg.PatternFlowGtpv1SquenceNumberMetricTag + // Msg marshals PatternFlowIpv4TosThroughput to protobuf object *otg.PatternFlowIpv4TosThroughput // and doesn't set defaults - Msg() *otg.PatternFlowGtpv1SquenceNumberMetricTag - // SetMsg unmarshals PatternFlowGtpv1SquenceNumberMetricTag from protobuf object *otg.PatternFlowGtpv1SquenceNumberMetricTag + Msg() *otg.PatternFlowIpv4TosThroughput + // SetMsg unmarshals PatternFlowIpv4TosThroughput from protobuf object *otg.PatternFlowIpv4TosThroughput // and doesn't set defaults - SetMsg(*otg.PatternFlowGtpv1SquenceNumberMetricTag) PatternFlowGtpv1SquenceNumberMetricTag - // ToProto marshals PatternFlowGtpv1SquenceNumberMetricTag to protobuf object *otg.PatternFlowGtpv1SquenceNumberMetricTag - ToProto() (*otg.PatternFlowGtpv1SquenceNumberMetricTag, error) - // ToPbText marshals PatternFlowGtpv1SquenceNumberMetricTag to protobuf text + SetMsg(*otg.PatternFlowIpv4TosThroughput) PatternFlowIpv4TosThroughput + // ToProto marshals PatternFlowIpv4TosThroughput to protobuf object *otg.PatternFlowIpv4TosThroughput + ToProto() (*otg.PatternFlowIpv4TosThroughput, error) + // ToPbText marshals PatternFlowIpv4TosThroughput to protobuf text ToPbText() (string, error) - // ToYaml marshals PatternFlowGtpv1SquenceNumberMetricTag to YAML text + // ToYaml marshals PatternFlowIpv4TosThroughput to YAML text ToYaml() (string, error) - // ToJson marshals PatternFlowGtpv1SquenceNumberMetricTag to JSON text + // ToJson marshals PatternFlowIpv4TosThroughput to JSON text ToJson() (string, error) - // FromProto unmarshals PatternFlowGtpv1SquenceNumberMetricTag from protobuf object *otg.PatternFlowGtpv1SquenceNumberMetricTag - FromProto(msg *otg.PatternFlowGtpv1SquenceNumberMetricTag) (PatternFlowGtpv1SquenceNumberMetricTag, error) - // FromPbText unmarshals PatternFlowGtpv1SquenceNumberMetricTag from protobuf text + // FromProto unmarshals PatternFlowIpv4TosThroughput from protobuf object *otg.PatternFlowIpv4TosThroughput + FromProto(msg *otg.PatternFlowIpv4TosThroughput) (PatternFlowIpv4TosThroughput, error) + // FromPbText unmarshals PatternFlowIpv4TosThroughput from protobuf text FromPbText(value string) error - // FromYaml unmarshals PatternFlowGtpv1SquenceNumberMetricTag from YAML text + // FromYaml unmarshals PatternFlowIpv4TosThroughput from YAML text FromYaml(value string) error - // FromJson unmarshals PatternFlowGtpv1SquenceNumberMetricTag from JSON text + // FromJson unmarshals PatternFlowIpv4TosThroughput from JSON text FromJson(value string) error - // Validate validates PatternFlowGtpv1SquenceNumberMetricTag + // Validate validates PatternFlowIpv4TosThroughput Validate() error // A stringer function String() string // Clones the object - Clone() (PatternFlowGtpv1SquenceNumberMetricTag, error) + Clone() (PatternFlowIpv4TosThroughput, error) validateToAndFrom() error validateObj(vObj *validation, set_default bool) setDefault() - // Name returns string, set in PatternFlowGtpv1SquenceNumberMetricTag. - Name() string - // SetName assigns string provided by user to PatternFlowGtpv1SquenceNumberMetricTag - SetName(value string) PatternFlowGtpv1SquenceNumberMetricTag - // Offset returns uint32, set in PatternFlowGtpv1SquenceNumberMetricTag. - Offset() uint32 - // SetOffset assigns uint32 provided by user to PatternFlowGtpv1SquenceNumberMetricTag - SetOffset(value uint32) PatternFlowGtpv1SquenceNumberMetricTag - // HasOffset checks if Offset has been set in PatternFlowGtpv1SquenceNumberMetricTag - HasOffset() bool - // Length returns uint32, set in PatternFlowGtpv1SquenceNumberMetricTag. - Length() uint32 - // SetLength assigns uint32 provided by user to PatternFlowGtpv1SquenceNumberMetricTag - SetLength(value uint32) PatternFlowGtpv1SquenceNumberMetricTag - // HasLength checks if Length has been set in PatternFlowGtpv1SquenceNumberMetricTag - HasLength() bool -} - -// Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field -// Name returns a string -func (obj *patternFlowGtpv1SquenceNumberMetricTag) Name() string { - - return *obj.obj.Name - -} - -// Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field -// SetName sets the string value in the PatternFlowGtpv1SquenceNumberMetricTag object -func (obj *patternFlowGtpv1SquenceNumberMetricTag) SetName(value string) PatternFlowGtpv1SquenceNumberMetricTag { - - obj.obj.Name = &value - return obj -} - -// Offset in bits relative to start of corresponding header field -// Offset returns a uint32 -func (obj *patternFlowGtpv1SquenceNumberMetricTag) Offset() uint32 { - - return *obj.obj.Offset - -} - -// Offset in bits relative to start of corresponding header field -// Offset returns a uint32 -func (obj *patternFlowGtpv1SquenceNumberMetricTag) HasOffset() bool { - return obj.obj.Offset != nil -} - -// Offset in bits relative to start of corresponding header field -// SetOffset sets the uint32 value in the PatternFlowGtpv1SquenceNumberMetricTag object -func (obj *patternFlowGtpv1SquenceNumberMetricTag) SetOffset(value uint32) PatternFlowGtpv1SquenceNumberMetricTag { - - obj.obj.Offset = &value - return obj + // Choice returns PatternFlowIpv4TosThroughputChoiceEnum, set in PatternFlowIpv4TosThroughput + Choice() PatternFlowIpv4TosThroughputChoiceEnum + // SetChoice assigns PatternFlowIpv4TosThroughputChoiceEnum provided by user to PatternFlowIpv4TosThroughput + SetChoice(value PatternFlowIpv4TosThroughputChoiceEnum) PatternFlowIpv4TosThroughput + // HasChoice checks if Choice has been set in PatternFlowIpv4TosThroughput + HasChoice() bool + // Value returns uint32, set in PatternFlowIpv4TosThroughput. + Value() uint32 + // SetValue assigns uint32 provided by user to PatternFlowIpv4TosThroughput + SetValue(value uint32) PatternFlowIpv4TosThroughput + // HasValue checks if Value has been set in PatternFlowIpv4TosThroughput + HasValue() bool + // Values returns []uint32, set in PatternFlowIpv4TosThroughput. + Values() []uint32 + // SetValues assigns []uint32 provided by user to PatternFlowIpv4TosThroughput + SetValues(value []uint32) PatternFlowIpv4TosThroughput + // Increment returns PatternFlowIpv4TosThroughputCounter, set in PatternFlowIpv4TosThroughput. + // PatternFlowIpv4TosThroughputCounter is integer counter pattern + Increment() PatternFlowIpv4TosThroughputCounter + // SetIncrement assigns PatternFlowIpv4TosThroughputCounter provided by user to PatternFlowIpv4TosThroughput. + // PatternFlowIpv4TosThroughputCounter is integer counter pattern + SetIncrement(value PatternFlowIpv4TosThroughputCounter) PatternFlowIpv4TosThroughput + // HasIncrement checks if Increment has been set in PatternFlowIpv4TosThroughput + HasIncrement() bool + // Decrement returns PatternFlowIpv4TosThroughputCounter, set in PatternFlowIpv4TosThroughput. + // PatternFlowIpv4TosThroughputCounter is integer counter pattern + Decrement() PatternFlowIpv4TosThroughputCounter + // SetDecrement assigns PatternFlowIpv4TosThroughputCounter provided by user to PatternFlowIpv4TosThroughput. + // PatternFlowIpv4TosThroughputCounter is integer counter pattern + SetDecrement(value PatternFlowIpv4TosThroughputCounter) PatternFlowIpv4TosThroughput + // HasDecrement checks if Decrement has been set in PatternFlowIpv4TosThroughput + HasDecrement() bool + // MetricTags returns PatternFlowIpv4TosThroughputPatternFlowIpv4TosThroughputMetricTagIterIter, set in PatternFlowIpv4TosThroughput + MetricTags() PatternFlowIpv4TosThroughputPatternFlowIpv4TosThroughputMetricTagIter + setNil() } -// Number of bits to track for metrics starting from configured offset of corresponding header field -// Length returns a uint32 -func (obj *patternFlowGtpv1SquenceNumberMetricTag) Length() uint32 { - - return *obj.obj.Length +type PatternFlowIpv4TosThroughputChoiceEnum string +// Enum of Choice on PatternFlowIpv4TosThroughput +var PatternFlowIpv4TosThroughputChoice = struct { + VALUE PatternFlowIpv4TosThroughputChoiceEnum + VALUES PatternFlowIpv4TosThroughputChoiceEnum + INCREMENT PatternFlowIpv4TosThroughputChoiceEnum + DECREMENT PatternFlowIpv4TosThroughputChoiceEnum +}{ + VALUE: PatternFlowIpv4TosThroughputChoiceEnum("value"), + VALUES: PatternFlowIpv4TosThroughputChoiceEnum("values"), + INCREMENT: PatternFlowIpv4TosThroughputChoiceEnum("increment"), + DECREMENT: PatternFlowIpv4TosThroughputChoiceEnum("decrement"), } -// Number of bits to track for metrics starting from configured offset of corresponding header field -// Length returns a uint32 -func (obj *patternFlowGtpv1SquenceNumberMetricTag) HasLength() bool { - return obj.obj.Length != nil +func (obj *patternFlowIpv4TosThroughput) Choice() PatternFlowIpv4TosThroughputChoiceEnum { + return PatternFlowIpv4TosThroughputChoiceEnum(obj.obj.Choice.Enum().String()) } -// Number of bits to track for metrics starting from configured offset of corresponding header field -// SetLength sets the uint32 value in the PatternFlowGtpv1SquenceNumberMetricTag object -func (obj *patternFlowGtpv1SquenceNumberMetricTag) SetLength(value uint32) PatternFlowGtpv1SquenceNumberMetricTag { - - obj.obj.Length = &value - return obj +// description is TBD +// Choice returns a string +func (obj *patternFlowIpv4TosThroughput) HasChoice() bool { + return obj.obj.Choice != nil } -func (obj *patternFlowGtpv1SquenceNumberMetricTag) validateObj(vObj *validation, set_default bool) { - if set_default { - obj.setDefault() +func (obj *patternFlowIpv4TosThroughput) SetChoice(value PatternFlowIpv4TosThroughputChoiceEnum) PatternFlowIpv4TosThroughput { + intValue, ok := otg.PatternFlowIpv4TosThroughput_Choice_Enum_value[string(value)] + if !ok { + obj.validationErrors = append(obj.validationErrors, fmt.Sprintf( + "%s is not a valid choice on PatternFlowIpv4TosThroughputChoiceEnum", string(value))) + return obj } + enumValue := otg.PatternFlowIpv4TosThroughput_Choice_Enum(intValue) + obj.obj.Choice = &enumValue + obj.obj.Decrement = nil + obj.decrementHolder = nil + obj.obj.Increment = nil + obj.incrementHolder = nil + obj.obj.Values = nil + obj.obj.Value = nil - // Name is required - if obj.obj.Name == nil { - vObj.validationErrors = append(vObj.validationErrors, "Name is required field on interface PatternFlowGtpv1SquenceNumberMetricTag") + if value == PatternFlowIpv4TosThroughputChoice.VALUE { + defaultValue := uint32(0) + obj.obj.Value = &defaultValue } - if obj.obj.Offset != nil { - - if *obj.obj.Offset > 15 { - vObj.validationErrors = append( - vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowGtpv1SquenceNumberMetricTag.Offset <= 15 but Got %d", *obj.obj.Offset)) - } - + if value == PatternFlowIpv4TosThroughputChoice.VALUES { + defaultValue := []uint32{0} + obj.obj.Values = defaultValue } - if obj.obj.Length != nil { - - if *obj.obj.Length < 1 || *obj.obj.Length > 16 { - vObj.validationErrors = append( - vObj.validationErrors, - fmt.Sprintf("1 <= PatternFlowGtpv1SquenceNumberMetricTag.Length <= 16 but Got %d", *obj.obj.Length)) - } + if value == PatternFlowIpv4TosThroughputChoice.INCREMENT { + obj.obj.Increment = NewPatternFlowIpv4TosThroughputCounter().Msg() + } + if value == PatternFlowIpv4TosThroughputChoice.DECREMENT { + obj.obj.Decrement = NewPatternFlowIpv4TosThroughputCounter().Msg() } + return obj } -func (obj *patternFlowGtpv1SquenceNumberMetricTag) setDefault() { - if obj.obj.Offset == nil { - obj.SetOffset(0) - } - if obj.obj.Length == nil { - obj.SetLength(16) - } +// description is TBD +// Value returns a uint32 +func (obj *patternFlowIpv4TosThroughput) Value() uint32 { -} + if obj.obj.Value == nil { + obj.SetChoice(PatternFlowIpv4TosThroughputChoice.VALUE) + } -// ***** PatternFlowGtpv1NPduNumberCounter ***** -type patternFlowGtpv1NPduNumberCounter struct { - validation - obj *otg.PatternFlowGtpv1NPduNumberCounter -} + return *obj.obj.Value -func NewPatternFlowGtpv1NPduNumberCounter() PatternFlowGtpv1NPduNumberCounter { - obj := patternFlowGtpv1NPduNumberCounter{obj: &otg.PatternFlowGtpv1NPduNumberCounter{}} - obj.setDefault() - return &obj } -func (obj *patternFlowGtpv1NPduNumberCounter) Msg() *otg.PatternFlowGtpv1NPduNumberCounter { - return obj.obj +// description is TBD +// Value returns a uint32 +func (obj *patternFlowIpv4TosThroughput) HasValue() bool { + return obj.obj.Value != nil } -func (obj *patternFlowGtpv1NPduNumberCounter) SetMsg(msg *otg.PatternFlowGtpv1NPduNumberCounter) PatternFlowGtpv1NPduNumberCounter { - - proto.Merge(obj.obj, msg) +// description is TBD +// SetValue sets the uint32 value in the PatternFlowIpv4TosThroughput object +func (obj *patternFlowIpv4TosThroughput) SetValue(value uint32) PatternFlowIpv4TosThroughput { + obj.SetChoice(PatternFlowIpv4TosThroughputChoice.VALUE) + obj.obj.Value = &value return obj } -func (obj *patternFlowGtpv1NPduNumberCounter) ToProto() (*otg.PatternFlowGtpv1NPduNumberCounter, error) { - err := obj.validateToAndFrom() - if err != nil { - return nil, err +// description is TBD +// Values returns a []uint32 +func (obj *patternFlowIpv4TosThroughput) Values() []uint32 { + if obj.obj.Values == nil { + obj.SetValues([]uint32{0}) } - return obj.Msg(), nil + return obj.obj.Values } -func (obj *patternFlowGtpv1NPduNumberCounter) FromProto(msg *otg.PatternFlowGtpv1NPduNumberCounter) (PatternFlowGtpv1NPduNumberCounter, error) { - newObj := obj.SetMsg(msg) - err := newObj.validateToAndFrom() - if err != nil { - return nil, err +// description is TBD +// SetValues sets the []uint32 value in the PatternFlowIpv4TosThroughput object +func (obj *patternFlowIpv4TosThroughput) SetValues(value []uint32) PatternFlowIpv4TosThroughput { + obj.SetChoice(PatternFlowIpv4TosThroughputChoice.VALUES) + if obj.obj.Values == nil { + obj.obj.Values = make([]uint32, 0) } - return newObj, nil -} + obj.obj.Values = value -func (obj *patternFlowGtpv1NPduNumberCounter) ToPbText() (string, error) { - vErr := obj.validateToAndFrom() - if vErr != nil { - return "", vErr - } - protoMarshal, err := proto.Marshal(obj.Msg()) - if err != nil { - return "", err - } - return string(protoMarshal), nil + return obj } -func (obj *patternFlowGtpv1NPduNumberCounter) FromPbText(value string) error { - retObj := proto.Unmarshal([]byte(value), obj.Msg()) - if retObj != nil { - return retObj +// description is TBD +// Increment returns a PatternFlowIpv4TosThroughputCounter +func (obj *patternFlowIpv4TosThroughput) Increment() PatternFlowIpv4TosThroughputCounter { + if obj.obj.Increment == nil { + obj.SetChoice(PatternFlowIpv4TosThroughputChoice.INCREMENT) } - - vErr := obj.validateToAndFrom() - if vErr != nil { - return vErr + if obj.incrementHolder == nil { + obj.incrementHolder = &patternFlowIpv4TosThroughputCounter{obj: obj.obj.Increment} } - return retObj + return obj.incrementHolder } -func (obj *patternFlowGtpv1NPduNumberCounter) ToYaml() (string, error) { - vErr := obj.validateToAndFrom() - if vErr != nil { - return "", vErr - } - opts := protojson.MarshalOptions{ - UseProtoNames: true, - AllowPartial: true, - EmitUnpopulated: false, - } - data, err := opts.Marshal(obj.Msg()) - if err != nil { - return "", err - } - data, err = yaml.JSONToYAML(data) - if err != nil { - return "", err - } - return string(data), nil +// description is TBD +// Increment returns a PatternFlowIpv4TosThroughputCounter +func (obj *patternFlowIpv4TosThroughput) HasIncrement() bool { + return obj.obj.Increment != nil } -func (obj *patternFlowGtpv1NPduNumberCounter) FromYaml(value string) error { - if value == "" { - value = "{}" - } - data, err := yaml.YAMLToJSON([]byte(value)) - if err != nil { - return err - } - opts := protojson.UnmarshalOptions{ - AllowPartial: true, - DiscardUnknown: false, - } - uError := opts.Unmarshal([]byte(data), obj.Msg()) - if uError != nil { - return fmt.Errorf("unmarshal error %s", strings.Replace( - uError.Error(), "\u00a0", " ", -1)[7:]) - } - - vErr := obj.validateToAndFrom() - if vErr != nil { - return vErr - } - return nil -} +// description is TBD +// SetIncrement sets the PatternFlowIpv4TosThroughputCounter value in the PatternFlowIpv4TosThroughput object +func (obj *patternFlowIpv4TosThroughput) SetIncrement(value PatternFlowIpv4TosThroughputCounter) PatternFlowIpv4TosThroughput { + obj.SetChoice(PatternFlowIpv4TosThroughputChoice.INCREMENT) + obj.incrementHolder = nil + obj.obj.Increment = value.Msg() -func (obj *patternFlowGtpv1NPduNumberCounter) ToJson() (string, error) { - vErr := obj.validateToAndFrom() - if vErr != nil { - return "", vErr - } - opts := protojson.MarshalOptions{ - UseProtoNames: true, - AllowPartial: true, - EmitUnpopulated: false, - Indent: " ", - } - data, err := opts.Marshal(obj.Msg()) - if err != nil { - return "", err - } - return string(data), nil + return obj } -func (obj *patternFlowGtpv1NPduNumberCounter) FromJson(value string) error { - opts := protojson.UnmarshalOptions{ - AllowPartial: true, - DiscardUnknown: false, - } - if value == "" { - value = "{}" - } - uError := opts.Unmarshal([]byte(value), obj.Msg()) - if uError != nil { - return fmt.Errorf("unmarshal error %s", strings.Replace( - uError.Error(), "\u00a0", " ", -1)[7:]) +// description is TBD +// Decrement returns a PatternFlowIpv4TosThroughputCounter +func (obj *patternFlowIpv4TosThroughput) Decrement() PatternFlowIpv4TosThroughputCounter { + if obj.obj.Decrement == nil { + obj.SetChoice(PatternFlowIpv4TosThroughputChoice.DECREMENT) } - - err := obj.validateToAndFrom() - if err != nil { - return err + if obj.decrementHolder == nil { + obj.decrementHolder = &patternFlowIpv4TosThroughputCounter{obj: obj.obj.Decrement} } - return nil + return obj.decrementHolder } -func (obj *patternFlowGtpv1NPduNumberCounter) validateToAndFrom() error { - // emptyVars() - obj.validateObj(&obj.validation, true) - return obj.validationResult() +// description is TBD +// Decrement returns a PatternFlowIpv4TosThroughputCounter +func (obj *patternFlowIpv4TosThroughput) HasDecrement() bool { + return obj.obj.Decrement != nil } -func (obj *patternFlowGtpv1NPduNumberCounter) Validate() error { - // emptyVars() - obj.validateObj(&obj.validation, false) - return obj.validationResult() -} +// description is TBD +// SetDecrement sets the PatternFlowIpv4TosThroughputCounter value in the PatternFlowIpv4TosThroughput object +func (obj *patternFlowIpv4TosThroughput) SetDecrement(value PatternFlowIpv4TosThroughputCounter) PatternFlowIpv4TosThroughput { + obj.SetChoice(PatternFlowIpv4TosThroughputChoice.DECREMENT) + obj.decrementHolder = nil + obj.obj.Decrement = value.Msg() -func (obj *patternFlowGtpv1NPduNumberCounter) String() string { - str, err := obj.ToYaml() - if err != nil { - return err.Error() - } - return str + return obj } -func (obj *patternFlowGtpv1NPduNumberCounter) Clone() (PatternFlowGtpv1NPduNumberCounter, error) { - vErr := obj.Validate() - if vErr != nil { - return nil, vErr - } - newObj := NewPatternFlowGtpv1NPduNumberCounter() - data, err := proto.Marshal(obj.Msg()) - if err != nil { - return nil, err +// One or more metric tags can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. +// MetricTags returns a []PatternFlowIpv4TosThroughputMetricTag +func (obj *patternFlowIpv4TosThroughput) MetricTags() PatternFlowIpv4TosThroughputPatternFlowIpv4TosThroughputMetricTagIter { + if len(obj.obj.MetricTags) == 0 { + obj.obj.MetricTags = []*otg.PatternFlowIpv4TosThroughputMetricTag{} } - pbErr := proto.Unmarshal(data, newObj.Msg()) - if pbErr != nil { - return nil, pbErr + if obj.metricTagsHolder == nil { + obj.metricTagsHolder = newPatternFlowIpv4TosThroughputPatternFlowIpv4TosThroughputMetricTagIter(&obj.obj.MetricTags).setMsg(obj) } - return newObj, nil + return obj.metricTagsHolder } -// PatternFlowGtpv1NPduNumberCounter is integer counter pattern -type PatternFlowGtpv1NPduNumberCounter interface { - Validation - // Msg marshals PatternFlowGtpv1NPduNumberCounter to protobuf object *otg.PatternFlowGtpv1NPduNumberCounter - // and doesn't set defaults - Msg() *otg.PatternFlowGtpv1NPduNumberCounter - // SetMsg unmarshals PatternFlowGtpv1NPduNumberCounter from protobuf object *otg.PatternFlowGtpv1NPduNumberCounter - // and doesn't set defaults - SetMsg(*otg.PatternFlowGtpv1NPduNumberCounter) PatternFlowGtpv1NPduNumberCounter - // ToProto marshals PatternFlowGtpv1NPduNumberCounter to protobuf object *otg.PatternFlowGtpv1NPduNumberCounter - ToProto() (*otg.PatternFlowGtpv1NPduNumberCounter, error) - // ToPbText marshals PatternFlowGtpv1NPduNumberCounter to protobuf text - ToPbText() (string, error) - // ToYaml marshals PatternFlowGtpv1NPduNumberCounter to YAML text - ToYaml() (string, error) - // ToJson marshals PatternFlowGtpv1NPduNumberCounter to JSON text - ToJson() (string, error) - // FromProto unmarshals PatternFlowGtpv1NPduNumberCounter from protobuf object *otg.PatternFlowGtpv1NPduNumberCounter - FromProto(msg *otg.PatternFlowGtpv1NPduNumberCounter) (PatternFlowGtpv1NPduNumberCounter, error) - // FromPbText unmarshals PatternFlowGtpv1NPduNumberCounter from protobuf text - FromPbText(value string) error - // FromYaml unmarshals PatternFlowGtpv1NPduNumberCounter from YAML text - FromYaml(value string) error - // FromJson unmarshals PatternFlowGtpv1NPduNumberCounter from JSON text - FromJson(value string) error - // Validate validates PatternFlowGtpv1NPduNumberCounter - Validate() error - // A stringer function - String() string - // Clones the object - Clone() (PatternFlowGtpv1NPduNumberCounter, error) - validateToAndFrom() error - validateObj(vObj *validation, set_default bool) - setDefault() - // Start returns uint32, set in PatternFlowGtpv1NPduNumberCounter. - Start() uint32 - // SetStart assigns uint32 provided by user to PatternFlowGtpv1NPduNumberCounter - SetStart(value uint32) PatternFlowGtpv1NPduNumberCounter - // HasStart checks if Start has been set in PatternFlowGtpv1NPduNumberCounter - HasStart() bool - // Step returns uint32, set in PatternFlowGtpv1NPduNumberCounter. - Step() uint32 - // SetStep assigns uint32 provided by user to PatternFlowGtpv1NPduNumberCounter - SetStep(value uint32) PatternFlowGtpv1NPduNumberCounter - // HasStep checks if Step has been set in PatternFlowGtpv1NPduNumberCounter - HasStep() bool - // Count returns uint32, set in PatternFlowGtpv1NPduNumberCounter. - Count() uint32 - // SetCount assigns uint32 provided by user to PatternFlowGtpv1NPduNumberCounter - SetCount(value uint32) PatternFlowGtpv1NPduNumberCounter - // HasCount checks if Count has been set in PatternFlowGtpv1NPduNumberCounter - HasCount() bool +type patternFlowIpv4TosThroughputPatternFlowIpv4TosThroughputMetricTagIter struct { + obj *patternFlowIpv4TosThroughput + patternFlowIpv4TosThroughputMetricTagSlice []PatternFlowIpv4TosThroughputMetricTag + fieldPtr *[]*otg.PatternFlowIpv4TosThroughputMetricTag } -// description is TBD -// Start returns a uint32 -func (obj *patternFlowGtpv1NPduNumberCounter) Start() uint32 { - - return *obj.obj.Start - +func newPatternFlowIpv4TosThroughputPatternFlowIpv4TosThroughputMetricTagIter(ptr *[]*otg.PatternFlowIpv4TosThroughputMetricTag) PatternFlowIpv4TosThroughputPatternFlowIpv4TosThroughputMetricTagIter { + return &patternFlowIpv4TosThroughputPatternFlowIpv4TosThroughputMetricTagIter{fieldPtr: ptr} } -// description is TBD -// Start returns a uint32 -func (obj *patternFlowGtpv1NPduNumberCounter) HasStart() bool { - return obj.obj.Start != nil +type PatternFlowIpv4TosThroughputPatternFlowIpv4TosThroughputMetricTagIter interface { + setMsg(*patternFlowIpv4TosThroughput) PatternFlowIpv4TosThroughputPatternFlowIpv4TosThroughputMetricTagIter + Items() []PatternFlowIpv4TosThroughputMetricTag + Add() PatternFlowIpv4TosThroughputMetricTag + Append(items ...PatternFlowIpv4TosThroughputMetricTag) PatternFlowIpv4TosThroughputPatternFlowIpv4TosThroughputMetricTagIter + Set(index int, newObj PatternFlowIpv4TosThroughputMetricTag) PatternFlowIpv4TosThroughputPatternFlowIpv4TosThroughputMetricTagIter + Clear() PatternFlowIpv4TosThroughputPatternFlowIpv4TosThroughputMetricTagIter + clearHolderSlice() PatternFlowIpv4TosThroughputPatternFlowIpv4TosThroughputMetricTagIter + appendHolderSlice(item PatternFlowIpv4TosThroughputMetricTag) PatternFlowIpv4TosThroughputPatternFlowIpv4TosThroughputMetricTagIter } -// description is TBD -// SetStart sets the uint32 value in the PatternFlowGtpv1NPduNumberCounter object -func (obj *patternFlowGtpv1NPduNumberCounter) SetStart(value uint32) PatternFlowGtpv1NPduNumberCounter { - - obj.obj.Start = &value +func (obj *patternFlowIpv4TosThroughputPatternFlowIpv4TosThroughputMetricTagIter) setMsg(msg *patternFlowIpv4TosThroughput) PatternFlowIpv4TosThroughputPatternFlowIpv4TosThroughputMetricTagIter { + obj.clearHolderSlice() + for _, val := range *obj.fieldPtr { + obj.appendHolderSlice(&patternFlowIpv4TosThroughputMetricTag{obj: val}) + } + obj.obj = msg return obj } -// description is TBD -// Step returns a uint32 -func (obj *patternFlowGtpv1NPduNumberCounter) Step() uint32 { - - return *obj.obj.Step - +func (obj *patternFlowIpv4TosThroughputPatternFlowIpv4TosThroughputMetricTagIter) Items() []PatternFlowIpv4TosThroughputMetricTag { + return obj.patternFlowIpv4TosThroughputMetricTagSlice } -// description is TBD -// Step returns a uint32 -func (obj *patternFlowGtpv1NPduNumberCounter) HasStep() bool { - return obj.obj.Step != nil +func (obj *patternFlowIpv4TosThroughputPatternFlowIpv4TosThroughputMetricTagIter) Add() PatternFlowIpv4TosThroughputMetricTag { + newObj := &otg.PatternFlowIpv4TosThroughputMetricTag{} + *obj.fieldPtr = append(*obj.fieldPtr, newObj) + newLibObj := &patternFlowIpv4TosThroughputMetricTag{obj: newObj} + newLibObj.setDefault() + obj.patternFlowIpv4TosThroughputMetricTagSlice = append(obj.patternFlowIpv4TosThroughputMetricTagSlice, newLibObj) + return newLibObj } -// description is TBD -// SetStep sets the uint32 value in the PatternFlowGtpv1NPduNumberCounter object -func (obj *patternFlowGtpv1NPduNumberCounter) SetStep(value uint32) PatternFlowGtpv1NPduNumberCounter { - - obj.obj.Step = &value +func (obj *patternFlowIpv4TosThroughputPatternFlowIpv4TosThroughputMetricTagIter) Append(items ...PatternFlowIpv4TosThroughputMetricTag) PatternFlowIpv4TosThroughputPatternFlowIpv4TosThroughputMetricTagIter { + for _, item := range items { + newObj := item.Msg() + *obj.fieldPtr = append(*obj.fieldPtr, newObj) + obj.patternFlowIpv4TosThroughputMetricTagSlice = append(obj.patternFlowIpv4TosThroughputMetricTagSlice, item) + } return obj } -// description is TBD -// Count returns a uint32 -func (obj *patternFlowGtpv1NPduNumberCounter) Count() uint32 { - - return *obj.obj.Count - +func (obj *patternFlowIpv4TosThroughputPatternFlowIpv4TosThroughputMetricTagIter) Set(index int, newObj PatternFlowIpv4TosThroughputMetricTag) PatternFlowIpv4TosThroughputPatternFlowIpv4TosThroughputMetricTagIter { + (*obj.fieldPtr)[index] = newObj.Msg() + obj.patternFlowIpv4TosThroughputMetricTagSlice[index] = newObj + return obj } - -// description is TBD -// Count returns a uint32 -func (obj *patternFlowGtpv1NPduNumberCounter) HasCount() bool { - return obj.obj.Count != nil +func (obj *patternFlowIpv4TosThroughputPatternFlowIpv4TosThroughputMetricTagIter) Clear() PatternFlowIpv4TosThroughputPatternFlowIpv4TosThroughputMetricTagIter { + if len(*obj.fieldPtr) > 0 { + *obj.fieldPtr = []*otg.PatternFlowIpv4TosThroughputMetricTag{} + obj.patternFlowIpv4TosThroughputMetricTagSlice = []PatternFlowIpv4TosThroughputMetricTag{} + } + return obj } - -// description is TBD -// SetCount sets the uint32 value in the PatternFlowGtpv1NPduNumberCounter object -func (obj *patternFlowGtpv1NPduNumberCounter) SetCount(value uint32) PatternFlowGtpv1NPduNumberCounter { - - obj.obj.Count = &value +func (obj *patternFlowIpv4TosThroughputPatternFlowIpv4TosThroughputMetricTagIter) clearHolderSlice() PatternFlowIpv4TosThroughputPatternFlowIpv4TosThroughputMetricTagIter { + if len(obj.patternFlowIpv4TosThroughputMetricTagSlice) > 0 { + obj.patternFlowIpv4TosThroughputMetricTagSlice = []PatternFlowIpv4TosThroughputMetricTag{} + } + return obj +} +func (obj *patternFlowIpv4TosThroughputPatternFlowIpv4TosThroughputMetricTagIter) appendHolderSlice(item PatternFlowIpv4TosThroughputMetricTag) PatternFlowIpv4TosThroughputPatternFlowIpv4TosThroughputMetricTagIter { + obj.patternFlowIpv4TosThroughputMetricTagSlice = append(obj.patternFlowIpv4TosThroughputMetricTagSlice, item) return obj } -func (obj *patternFlowGtpv1NPduNumberCounter) validateObj(vObj *validation, set_default bool) { +func (obj *patternFlowIpv4TosThroughput) validateObj(vObj *validation, set_default bool) { if set_default { obj.setDefault() } - if obj.obj.Start != nil { + if obj.obj.Value != nil { - if *obj.obj.Start > 255 { + if *obj.obj.Value > 1 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowGtpv1NPduNumberCounter.Start <= 255 but Got %d", *obj.obj.Start)) + fmt.Sprintf("0 <= PatternFlowIpv4TosThroughput.Value <= 1 but Got %d", *obj.obj.Value)) } } - if obj.obj.Step != nil { + if obj.obj.Values != nil { + + for _, item := range obj.obj.Values { + if item > 1 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("min(uint32) <= PatternFlowIpv4TosThroughput.Values <= 1 but Got %d", item)) + } - if *obj.obj.Step > 255 { - vObj.validationErrors = append( - vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowGtpv1NPduNumberCounter.Step <= 255 but Got %d", *obj.obj.Step)) } } - if obj.obj.Count != nil { + if obj.obj.Increment != nil { - if *obj.obj.Count > 255 { - vObj.validationErrors = append( - vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowGtpv1NPduNumberCounter.Count <= 255 but Got %d", *obj.obj.Count)) + obj.Increment().validateObj(vObj, set_default) + } + + if obj.obj.Decrement != nil { + + obj.Decrement().validateObj(vObj, set_default) + } + + if len(obj.obj.MetricTags) != 0 { + + if set_default { + obj.MetricTags().clearHolderSlice() + for _, item := range obj.obj.MetricTags { + obj.MetricTags().appendHolderSlice(&patternFlowIpv4TosThroughputMetricTag{obj: item}) + } + } + for _, item := range obj.MetricTags().Items() { + item.validateObj(vObj, set_default) } } } -func (obj *patternFlowGtpv1NPduNumberCounter) setDefault() { - if obj.obj.Start == nil { - obj.SetStart(0) - } - if obj.obj.Step == nil { - obj.SetStep(1) - } - if obj.obj.Count == nil { - obj.SetCount(1) +func (obj *patternFlowIpv4TosThroughput) setDefault() { + if obj.obj.Choice == nil { + obj.SetChoice(PatternFlowIpv4TosThroughputChoice.VALUE) + } } -// ***** PatternFlowGtpv1NPduNumberMetricTag ***** -type patternFlowGtpv1NPduNumberMetricTag struct { +// ***** PatternFlowIpv4TosReliability ***** +type patternFlowIpv4TosReliability struct { validation - obj *otg.PatternFlowGtpv1NPduNumberMetricTag + obj *otg.PatternFlowIpv4TosReliability + incrementHolder PatternFlowIpv4TosReliabilityCounter + decrementHolder PatternFlowIpv4TosReliabilityCounter + metricTagsHolder PatternFlowIpv4TosReliabilityPatternFlowIpv4TosReliabilityMetricTagIter } -func NewPatternFlowGtpv1NPduNumberMetricTag() PatternFlowGtpv1NPduNumberMetricTag { - obj := patternFlowGtpv1NPduNumberMetricTag{obj: &otg.PatternFlowGtpv1NPduNumberMetricTag{}} +func NewPatternFlowIpv4TosReliability() PatternFlowIpv4TosReliability { + obj := patternFlowIpv4TosReliability{obj: &otg.PatternFlowIpv4TosReliability{}} obj.setDefault() return &obj } -func (obj *patternFlowGtpv1NPduNumberMetricTag) Msg() *otg.PatternFlowGtpv1NPduNumberMetricTag { +func (obj *patternFlowIpv4TosReliability) Msg() *otg.PatternFlowIpv4TosReliability { return obj.obj } -func (obj *patternFlowGtpv1NPduNumberMetricTag) SetMsg(msg *otg.PatternFlowGtpv1NPduNumberMetricTag) PatternFlowGtpv1NPduNumberMetricTag { - +func (obj *patternFlowIpv4TosReliability) SetMsg(msg *otg.PatternFlowIpv4TosReliability) PatternFlowIpv4TosReliability { + obj.setNil() proto.Merge(obj.obj, msg) return obj } -func (obj *patternFlowGtpv1NPduNumberMetricTag) ToProto() (*otg.PatternFlowGtpv1NPduNumberMetricTag, error) { +func (obj *patternFlowIpv4TosReliability) ToProto() (*otg.PatternFlowIpv4TosReliability, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -243881,7 +289028,7 @@ func (obj *patternFlowGtpv1NPduNumberMetricTag) ToProto() (*otg.PatternFlowGtpv1 return obj.Msg(), nil } -func (obj *patternFlowGtpv1NPduNumberMetricTag) FromProto(msg *otg.PatternFlowGtpv1NPduNumberMetricTag) (PatternFlowGtpv1NPduNumberMetricTag, error) { +func (obj *patternFlowIpv4TosReliability) FromProto(msg *otg.PatternFlowIpv4TosReliability) (PatternFlowIpv4TosReliability, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -243890,7 +289037,7 @@ func (obj *patternFlowGtpv1NPduNumberMetricTag) FromProto(msg *otg.PatternFlowGt return newObj, nil } -func (obj *patternFlowGtpv1NPduNumberMetricTag) ToPbText() (string, error) { +func (obj *patternFlowIpv4TosReliability) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -243902,12 +289049,12 @@ func (obj *patternFlowGtpv1NPduNumberMetricTag) ToPbText() (string, error) { return string(protoMarshal), nil } -func (obj *patternFlowGtpv1NPduNumberMetricTag) FromPbText(value string) error { +func (obj *patternFlowIpv4TosReliability) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj } - + obj.setNil() vErr := obj.validateToAndFrom() if vErr != nil { return vErr @@ -243915,7 +289062,7 @@ func (obj *patternFlowGtpv1NPduNumberMetricTag) FromPbText(value string) error { return retObj } -func (obj *patternFlowGtpv1NPduNumberMetricTag) ToYaml() (string, error) { +func (obj *patternFlowIpv4TosReliability) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -243936,7 +289083,7 @@ func (obj *patternFlowGtpv1NPduNumberMetricTag) ToYaml() (string, error) { return string(data), nil } -func (obj *patternFlowGtpv1NPduNumberMetricTag) FromYaml(value string) error { +func (obj *patternFlowIpv4TosReliability) FromYaml(value string) error { if value == "" { value = "{}" } @@ -243953,7 +289100,7 @@ func (obj *patternFlowGtpv1NPduNumberMetricTag) FromYaml(value string) error { return fmt.Errorf("unmarshal error %s", strings.Replace( uError.Error(), "\u00a0", " ", -1)[7:]) } - + obj.setNil() vErr := obj.validateToAndFrom() if vErr != nil { return vErr @@ -243961,7 +289108,7 @@ func (obj *patternFlowGtpv1NPduNumberMetricTag) FromYaml(value string) error { return nil } -func (obj *patternFlowGtpv1NPduNumberMetricTag) ToJson() (string, error) { +func (obj *patternFlowIpv4TosReliability) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -243979,7 +289126,7 @@ func (obj *patternFlowGtpv1NPduNumberMetricTag) ToJson() (string, error) { return string(data), nil } -func (obj *patternFlowGtpv1NPduNumberMetricTag) FromJson(value string) error { +func (obj *patternFlowIpv4TosReliability) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -243992,7 +289139,7 @@ func (obj *patternFlowGtpv1NPduNumberMetricTag) FromJson(value string) error { return fmt.Errorf("unmarshal error %s", strings.Replace( uError.Error(), "\u00a0", " ", -1)[7:]) } - + obj.setNil() err := obj.validateToAndFrom() if err != nil { return err @@ -244000,19 +289147,19 @@ func (obj *patternFlowGtpv1NPduNumberMetricTag) FromJson(value string) error { return nil } -func (obj *patternFlowGtpv1NPduNumberMetricTag) validateToAndFrom() error { +func (obj *patternFlowIpv4TosReliability) validateToAndFrom() error { // emptyVars() obj.validateObj(&obj.validation, true) return obj.validationResult() } -func (obj *patternFlowGtpv1NPduNumberMetricTag) Validate() error { +func (obj *patternFlowIpv4TosReliability) Validate() error { // emptyVars() obj.validateObj(&obj.validation, false) return obj.validationResult() } -func (obj *patternFlowGtpv1NPduNumberMetricTag) String() string { +func (obj *patternFlowIpv4TosReliability) String() string { str, err := obj.ToYaml() if err != nil { return err.Error() @@ -244020,12 +289167,12 @@ func (obj *patternFlowGtpv1NPduNumberMetricTag) String() string { return str } -func (obj *patternFlowGtpv1NPduNumberMetricTag) Clone() (PatternFlowGtpv1NPduNumberMetricTag, error) { +func (obj *patternFlowIpv4TosReliability) Clone() (PatternFlowIpv4TosReliability, error) { vErr := obj.Validate() if vErr != nil { return nil, vErr } - newObj := NewPatternFlowGtpv1NPduNumberMetricTag() + newObj := NewPatternFlowIpv4TosReliability() data, err := proto.Marshal(obj.Msg()) if err != nil { return nil, err @@ -244037,183 +289184,426 @@ func (obj *patternFlowGtpv1NPduNumberMetricTag) Clone() (PatternFlowGtpv1NPduNum return newObj, nil } -// PatternFlowGtpv1NPduNumberMetricTag is metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. -type PatternFlowGtpv1NPduNumberMetricTag interface { +func (obj *patternFlowIpv4TosReliability) setNil() { + obj.incrementHolder = nil + obj.decrementHolder = nil + obj.metricTagsHolder = nil + obj.validationErrors = nil + obj.warnings = nil + obj.constraints = make(map[string]map[string]Constraints) +} + +// PatternFlowIpv4TosReliability is reliability +type PatternFlowIpv4TosReliability interface { Validation - // Msg marshals PatternFlowGtpv1NPduNumberMetricTag to protobuf object *otg.PatternFlowGtpv1NPduNumberMetricTag + // Msg marshals PatternFlowIpv4TosReliability to protobuf object *otg.PatternFlowIpv4TosReliability // and doesn't set defaults - Msg() *otg.PatternFlowGtpv1NPduNumberMetricTag - // SetMsg unmarshals PatternFlowGtpv1NPduNumberMetricTag from protobuf object *otg.PatternFlowGtpv1NPduNumberMetricTag + Msg() *otg.PatternFlowIpv4TosReliability + // SetMsg unmarshals PatternFlowIpv4TosReliability from protobuf object *otg.PatternFlowIpv4TosReliability // and doesn't set defaults - SetMsg(*otg.PatternFlowGtpv1NPduNumberMetricTag) PatternFlowGtpv1NPduNumberMetricTag - // ToProto marshals PatternFlowGtpv1NPduNumberMetricTag to protobuf object *otg.PatternFlowGtpv1NPduNumberMetricTag - ToProto() (*otg.PatternFlowGtpv1NPduNumberMetricTag, error) - // ToPbText marshals PatternFlowGtpv1NPduNumberMetricTag to protobuf text + SetMsg(*otg.PatternFlowIpv4TosReliability) PatternFlowIpv4TosReliability + // ToProto marshals PatternFlowIpv4TosReliability to protobuf object *otg.PatternFlowIpv4TosReliability + ToProto() (*otg.PatternFlowIpv4TosReliability, error) + // ToPbText marshals PatternFlowIpv4TosReliability to protobuf text ToPbText() (string, error) - // ToYaml marshals PatternFlowGtpv1NPduNumberMetricTag to YAML text + // ToYaml marshals PatternFlowIpv4TosReliability to YAML text ToYaml() (string, error) - // ToJson marshals PatternFlowGtpv1NPduNumberMetricTag to JSON text + // ToJson marshals PatternFlowIpv4TosReliability to JSON text ToJson() (string, error) - // FromProto unmarshals PatternFlowGtpv1NPduNumberMetricTag from protobuf object *otg.PatternFlowGtpv1NPduNumberMetricTag - FromProto(msg *otg.PatternFlowGtpv1NPduNumberMetricTag) (PatternFlowGtpv1NPduNumberMetricTag, error) - // FromPbText unmarshals PatternFlowGtpv1NPduNumberMetricTag from protobuf text + // FromProto unmarshals PatternFlowIpv4TosReliability from protobuf object *otg.PatternFlowIpv4TosReliability + FromProto(msg *otg.PatternFlowIpv4TosReliability) (PatternFlowIpv4TosReliability, error) + // FromPbText unmarshals PatternFlowIpv4TosReliability from protobuf text FromPbText(value string) error - // FromYaml unmarshals PatternFlowGtpv1NPduNumberMetricTag from YAML text + // FromYaml unmarshals PatternFlowIpv4TosReliability from YAML text FromYaml(value string) error - // FromJson unmarshals PatternFlowGtpv1NPduNumberMetricTag from JSON text + // FromJson unmarshals PatternFlowIpv4TosReliability from JSON text FromJson(value string) error - // Validate validates PatternFlowGtpv1NPduNumberMetricTag + // Validate validates PatternFlowIpv4TosReliability Validate() error // A stringer function String() string // Clones the object - Clone() (PatternFlowGtpv1NPduNumberMetricTag, error) + Clone() (PatternFlowIpv4TosReliability, error) validateToAndFrom() error validateObj(vObj *validation, set_default bool) setDefault() - // Name returns string, set in PatternFlowGtpv1NPduNumberMetricTag. - Name() string - // SetName assigns string provided by user to PatternFlowGtpv1NPduNumberMetricTag - SetName(value string) PatternFlowGtpv1NPduNumberMetricTag - // Offset returns uint32, set in PatternFlowGtpv1NPduNumberMetricTag. - Offset() uint32 - // SetOffset assigns uint32 provided by user to PatternFlowGtpv1NPduNumberMetricTag - SetOffset(value uint32) PatternFlowGtpv1NPduNumberMetricTag - // HasOffset checks if Offset has been set in PatternFlowGtpv1NPduNumberMetricTag - HasOffset() bool - // Length returns uint32, set in PatternFlowGtpv1NPduNumberMetricTag. - Length() uint32 - // SetLength assigns uint32 provided by user to PatternFlowGtpv1NPduNumberMetricTag - SetLength(value uint32) PatternFlowGtpv1NPduNumberMetricTag - // HasLength checks if Length has been set in PatternFlowGtpv1NPduNumberMetricTag - HasLength() bool + // Choice returns PatternFlowIpv4TosReliabilityChoiceEnum, set in PatternFlowIpv4TosReliability + Choice() PatternFlowIpv4TosReliabilityChoiceEnum + // SetChoice assigns PatternFlowIpv4TosReliabilityChoiceEnum provided by user to PatternFlowIpv4TosReliability + SetChoice(value PatternFlowIpv4TosReliabilityChoiceEnum) PatternFlowIpv4TosReliability + // HasChoice checks if Choice has been set in PatternFlowIpv4TosReliability + HasChoice() bool + // Value returns uint32, set in PatternFlowIpv4TosReliability. + Value() uint32 + // SetValue assigns uint32 provided by user to PatternFlowIpv4TosReliability + SetValue(value uint32) PatternFlowIpv4TosReliability + // HasValue checks if Value has been set in PatternFlowIpv4TosReliability + HasValue() bool + // Values returns []uint32, set in PatternFlowIpv4TosReliability. + Values() []uint32 + // SetValues assigns []uint32 provided by user to PatternFlowIpv4TosReliability + SetValues(value []uint32) PatternFlowIpv4TosReliability + // Increment returns PatternFlowIpv4TosReliabilityCounter, set in PatternFlowIpv4TosReliability. + // PatternFlowIpv4TosReliabilityCounter is integer counter pattern + Increment() PatternFlowIpv4TosReliabilityCounter + // SetIncrement assigns PatternFlowIpv4TosReliabilityCounter provided by user to PatternFlowIpv4TosReliability. + // PatternFlowIpv4TosReliabilityCounter is integer counter pattern + SetIncrement(value PatternFlowIpv4TosReliabilityCounter) PatternFlowIpv4TosReliability + // HasIncrement checks if Increment has been set in PatternFlowIpv4TosReliability + HasIncrement() bool + // Decrement returns PatternFlowIpv4TosReliabilityCounter, set in PatternFlowIpv4TosReliability. + // PatternFlowIpv4TosReliabilityCounter is integer counter pattern + Decrement() PatternFlowIpv4TosReliabilityCounter + // SetDecrement assigns PatternFlowIpv4TosReliabilityCounter provided by user to PatternFlowIpv4TosReliability. + // PatternFlowIpv4TosReliabilityCounter is integer counter pattern + SetDecrement(value PatternFlowIpv4TosReliabilityCounter) PatternFlowIpv4TosReliability + // HasDecrement checks if Decrement has been set in PatternFlowIpv4TosReliability + HasDecrement() bool + // MetricTags returns PatternFlowIpv4TosReliabilityPatternFlowIpv4TosReliabilityMetricTagIterIter, set in PatternFlowIpv4TosReliability + MetricTags() PatternFlowIpv4TosReliabilityPatternFlowIpv4TosReliabilityMetricTagIter + setNil() } -// Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field -// Name returns a string -func (obj *patternFlowGtpv1NPduNumberMetricTag) Name() string { +type PatternFlowIpv4TosReliabilityChoiceEnum string - return *obj.obj.Name +// Enum of Choice on PatternFlowIpv4TosReliability +var PatternFlowIpv4TosReliabilityChoice = struct { + VALUE PatternFlowIpv4TosReliabilityChoiceEnum + VALUES PatternFlowIpv4TosReliabilityChoiceEnum + INCREMENT PatternFlowIpv4TosReliabilityChoiceEnum + DECREMENT PatternFlowIpv4TosReliabilityChoiceEnum +}{ + VALUE: PatternFlowIpv4TosReliabilityChoiceEnum("value"), + VALUES: PatternFlowIpv4TosReliabilityChoiceEnum("values"), + INCREMENT: PatternFlowIpv4TosReliabilityChoiceEnum("increment"), + DECREMENT: PatternFlowIpv4TosReliabilityChoiceEnum("decrement"), +} +func (obj *patternFlowIpv4TosReliability) Choice() PatternFlowIpv4TosReliabilityChoiceEnum { + return PatternFlowIpv4TosReliabilityChoiceEnum(obj.obj.Choice.Enum().String()) } -// Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field -// SetName sets the string value in the PatternFlowGtpv1NPduNumberMetricTag object -func (obj *patternFlowGtpv1NPduNumberMetricTag) SetName(value string) PatternFlowGtpv1NPduNumberMetricTag { +// description is TBD +// Choice returns a string +func (obj *patternFlowIpv4TosReliability) HasChoice() bool { + return obj.obj.Choice != nil +} + +func (obj *patternFlowIpv4TosReliability) SetChoice(value PatternFlowIpv4TosReliabilityChoiceEnum) PatternFlowIpv4TosReliability { + intValue, ok := otg.PatternFlowIpv4TosReliability_Choice_Enum_value[string(value)] + if !ok { + obj.validationErrors = append(obj.validationErrors, fmt.Sprintf( + "%s is not a valid choice on PatternFlowIpv4TosReliabilityChoiceEnum", string(value))) + return obj + } + enumValue := otg.PatternFlowIpv4TosReliability_Choice_Enum(intValue) + obj.obj.Choice = &enumValue + obj.obj.Decrement = nil + obj.decrementHolder = nil + obj.obj.Increment = nil + obj.incrementHolder = nil + obj.obj.Values = nil + obj.obj.Value = nil + + if value == PatternFlowIpv4TosReliabilityChoice.VALUE { + defaultValue := uint32(0) + obj.obj.Value = &defaultValue + } + + if value == PatternFlowIpv4TosReliabilityChoice.VALUES { + defaultValue := []uint32{0} + obj.obj.Values = defaultValue + } + + if value == PatternFlowIpv4TosReliabilityChoice.INCREMENT { + obj.obj.Increment = NewPatternFlowIpv4TosReliabilityCounter().Msg() + } + + if value == PatternFlowIpv4TosReliabilityChoice.DECREMENT { + obj.obj.Decrement = NewPatternFlowIpv4TosReliabilityCounter().Msg() + } - obj.obj.Name = &value return obj } -// Offset in bits relative to start of corresponding header field -// Offset returns a uint32 -func (obj *patternFlowGtpv1NPduNumberMetricTag) Offset() uint32 { +// description is TBD +// Value returns a uint32 +func (obj *patternFlowIpv4TosReliability) Value() uint32 { - return *obj.obj.Offset + if obj.obj.Value == nil { + obj.SetChoice(PatternFlowIpv4TosReliabilityChoice.VALUE) + } + + return *obj.obj.Value } -// Offset in bits relative to start of corresponding header field -// Offset returns a uint32 -func (obj *patternFlowGtpv1NPduNumberMetricTag) HasOffset() bool { - return obj.obj.Offset != nil +// description is TBD +// Value returns a uint32 +func (obj *patternFlowIpv4TosReliability) HasValue() bool { + return obj.obj.Value != nil } -// Offset in bits relative to start of corresponding header field -// SetOffset sets the uint32 value in the PatternFlowGtpv1NPduNumberMetricTag object -func (obj *patternFlowGtpv1NPduNumberMetricTag) SetOffset(value uint32) PatternFlowGtpv1NPduNumberMetricTag { +// description is TBD +// SetValue sets the uint32 value in the PatternFlowIpv4TosReliability object +func (obj *patternFlowIpv4TosReliability) SetValue(value uint32) PatternFlowIpv4TosReliability { + obj.SetChoice(PatternFlowIpv4TosReliabilityChoice.VALUE) + obj.obj.Value = &value + return obj +} + +// description is TBD +// Values returns a []uint32 +func (obj *patternFlowIpv4TosReliability) Values() []uint32 { + if obj.obj.Values == nil { + obj.SetValues([]uint32{0}) + } + return obj.obj.Values +} + +// description is TBD +// SetValues sets the []uint32 value in the PatternFlowIpv4TosReliability object +func (obj *patternFlowIpv4TosReliability) SetValues(value []uint32) PatternFlowIpv4TosReliability { + obj.SetChoice(PatternFlowIpv4TosReliabilityChoice.VALUES) + if obj.obj.Values == nil { + obj.obj.Values = make([]uint32, 0) + } + obj.obj.Values = value - obj.obj.Offset = &value return obj } -// Number of bits to track for metrics starting from configured offset of corresponding header field -// Length returns a uint32 -func (obj *patternFlowGtpv1NPduNumberMetricTag) Length() uint32 { +// description is TBD +// Increment returns a PatternFlowIpv4TosReliabilityCounter +func (obj *patternFlowIpv4TosReliability) Increment() PatternFlowIpv4TosReliabilityCounter { + if obj.obj.Increment == nil { + obj.SetChoice(PatternFlowIpv4TosReliabilityChoice.INCREMENT) + } + if obj.incrementHolder == nil { + obj.incrementHolder = &patternFlowIpv4TosReliabilityCounter{obj: obj.obj.Increment} + } + return obj.incrementHolder +} - return *obj.obj.Length +// description is TBD +// Increment returns a PatternFlowIpv4TosReliabilityCounter +func (obj *patternFlowIpv4TosReliability) HasIncrement() bool { + return obj.obj.Increment != nil +} + +// description is TBD +// SetIncrement sets the PatternFlowIpv4TosReliabilityCounter value in the PatternFlowIpv4TosReliability object +func (obj *patternFlowIpv4TosReliability) SetIncrement(value PatternFlowIpv4TosReliabilityCounter) PatternFlowIpv4TosReliability { + obj.SetChoice(PatternFlowIpv4TosReliabilityChoice.INCREMENT) + obj.incrementHolder = nil + obj.obj.Increment = value.Msg() + return obj } -// Number of bits to track for metrics starting from configured offset of corresponding header field -// Length returns a uint32 -func (obj *patternFlowGtpv1NPduNumberMetricTag) HasLength() bool { - return obj.obj.Length != nil +// description is TBD +// Decrement returns a PatternFlowIpv4TosReliabilityCounter +func (obj *patternFlowIpv4TosReliability) Decrement() PatternFlowIpv4TosReliabilityCounter { + if obj.obj.Decrement == nil { + obj.SetChoice(PatternFlowIpv4TosReliabilityChoice.DECREMENT) + } + if obj.decrementHolder == nil { + obj.decrementHolder = &patternFlowIpv4TosReliabilityCounter{obj: obj.obj.Decrement} + } + return obj.decrementHolder } -// Number of bits to track for metrics starting from configured offset of corresponding header field -// SetLength sets the uint32 value in the PatternFlowGtpv1NPduNumberMetricTag object -func (obj *patternFlowGtpv1NPduNumberMetricTag) SetLength(value uint32) PatternFlowGtpv1NPduNumberMetricTag { +// description is TBD +// Decrement returns a PatternFlowIpv4TosReliabilityCounter +func (obj *patternFlowIpv4TosReliability) HasDecrement() bool { + return obj.obj.Decrement != nil +} + +// description is TBD +// SetDecrement sets the PatternFlowIpv4TosReliabilityCounter value in the PatternFlowIpv4TosReliability object +func (obj *patternFlowIpv4TosReliability) SetDecrement(value PatternFlowIpv4TosReliabilityCounter) PatternFlowIpv4TosReliability { + obj.SetChoice(PatternFlowIpv4TosReliabilityChoice.DECREMENT) + obj.decrementHolder = nil + obj.obj.Decrement = value.Msg() - obj.obj.Length = &value return obj } -func (obj *patternFlowGtpv1NPduNumberMetricTag) validateObj(vObj *validation, set_default bool) { - if set_default { - obj.setDefault() +// One or more metric tags can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. +// MetricTags returns a []PatternFlowIpv4TosReliabilityMetricTag +func (obj *patternFlowIpv4TosReliability) MetricTags() PatternFlowIpv4TosReliabilityPatternFlowIpv4TosReliabilityMetricTagIter { + if len(obj.obj.MetricTags) == 0 { + obj.obj.MetricTags = []*otg.PatternFlowIpv4TosReliabilityMetricTag{} } + if obj.metricTagsHolder == nil { + obj.metricTagsHolder = newPatternFlowIpv4TosReliabilityPatternFlowIpv4TosReliabilityMetricTagIter(&obj.obj.MetricTags).setMsg(obj) + } + return obj.metricTagsHolder +} - // Name is required - if obj.obj.Name == nil { - vObj.validationErrors = append(vObj.validationErrors, "Name is required field on interface PatternFlowGtpv1NPduNumberMetricTag") +type patternFlowIpv4TosReliabilityPatternFlowIpv4TosReliabilityMetricTagIter struct { + obj *patternFlowIpv4TosReliability + patternFlowIpv4TosReliabilityMetricTagSlice []PatternFlowIpv4TosReliabilityMetricTag + fieldPtr *[]*otg.PatternFlowIpv4TosReliabilityMetricTag +} + +func newPatternFlowIpv4TosReliabilityPatternFlowIpv4TosReliabilityMetricTagIter(ptr *[]*otg.PatternFlowIpv4TosReliabilityMetricTag) PatternFlowIpv4TosReliabilityPatternFlowIpv4TosReliabilityMetricTagIter { + return &patternFlowIpv4TosReliabilityPatternFlowIpv4TosReliabilityMetricTagIter{fieldPtr: ptr} +} + +type PatternFlowIpv4TosReliabilityPatternFlowIpv4TosReliabilityMetricTagIter interface { + setMsg(*patternFlowIpv4TosReliability) PatternFlowIpv4TosReliabilityPatternFlowIpv4TosReliabilityMetricTagIter + Items() []PatternFlowIpv4TosReliabilityMetricTag + Add() PatternFlowIpv4TosReliabilityMetricTag + Append(items ...PatternFlowIpv4TosReliabilityMetricTag) PatternFlowIpv4TosReliabilityPatternFlowIpv4TosReliabilityMetricTagIter + Set(index int, newObj PatternFlowIpv4TosReliabilityMetricTag) PatternFlowIpv4TosReliabilityPatternFlowIpv4TosReliabilityMetricTagIter + Clear() PatternFlowIpv4TosReliabilityPatternFlowIpv4TosReliabilityMetricTagIter + clearHolderSlice() PatternFlowIpv4TosReliabilityPatternFlowIpv4TosReliabilityMetricTagIter + appendHolderSlice(item PatternFlowIpv4TosReliabilityMetricTag) PatternFlowIpv4TosReliabilityPatternFlowIpv4TosReliabilityMetricTagIter +} + +func (obj *patternFlowIpv4TosReliabilityPatternFlowIpv4TosReliabilityMetricTagIter) setMsg(msg *patternFlowIpv4TosReliability) PatternFlowIpv4TosReliabilityPatternFlowIpv4TosReliabilityMetricTagIter { + obj.clearHolderSlice() + for _, val := range *obj.fieldPtr { + obj.appendHolderSlice(&patternFlowIpv4TosReliabilityMetricTag{obj: val}) } + obj.obj = msg + return obj +} - if obj.obj.Offset != nil { +func (obj *patternFlowIpv4TosReliabilityPatternFlowIpv4TosReliabilityMetricTagIter) Items() []PatternFlowIpv4TosReliabilityMetricTag { + return obj.patternFlowIpv4TosReliabilityMetricTagSlice +} - if *obj.obj.Offset > 7 { +func (obj *patternFlowIpv4TosReliabilityPatternFlowIpv4TosReliabilityMetricTagIter) Add() PatternFlowIpv4TosReliabilityMetricTag { + newObj := &otg.PatternFlowIpv4TosReliabilityMetricTag{} + *obj.fieldPtr = append(*obj.fieldPtr, newObj) + newLibObj := &patternFlowIpv4TosReliabilityMetricTag{obj: newObj} + newLibObj.setDefault() + obj.patternFlowIpv4TosReliabilityMetricTagSlice = append(obj.patternFlowIpv4TosReliabilityMetricTagSlice, newLibObj) + return newLibObj +} + +func (obj *patternFlowIpv4TosReliabilityPatternFlowIpv4TosReliabilityMetricTagIter) Append(items ...PatternFlowIpv4TosReliabilityMetricTag) PatternFlowIpv4TosReliabilityPatternFlowIpv4TosReliabilityMetricTagIter { + for _, item := range items { + newObj := item.Msg() + *obj.fieldPtr = append(*obj.fieldPtr, newObj) + obj.patternFlowIpv4TosReliabilityMetricTagSlice = append(obj.patternFlowIpv4TosReliabilityMetricTagSlice, item) + } + return obj +} + +func (obj *patternFlowIpv4TosReliabilityPatternFlowIpv4TosReliabilityMetricTagIter) Set(index int, newObj PatternFlowIpv4TosReliabilityMetricTag) PatternFlowIpv4TosReliabilityPatternFlowIpv4TosReliabilityMetricTagIter { + (*obj.fieldPtr)[index] = newObj.Msg() + obj.patternFlowIpv4TosReliabilityMetricTagSlice[index] = newObj + return obj +} +func (obj *patternFlowIpv4TosReliabilityPatternFlowIpv4TosReliabilityMetricTagIter) Clear() PatternFlowIpv4TosReliabilityPatternFlowIpv4TosReliabilityMetricTagIter { + if len(*obj.fieldPtr) > 0 { + *obj.fieldPtr = []*otg.PatternFlowIpv4TosReliabilityMetricTag{} + obj.patternFlowIpv4TosReliabilityMetricTagSlice = []PatternFlowIpv4TosReliabilityMetricTag{} + } + return obj +} +func (obj *patternFlowIpv4TosReliabilityPatternFlowIpv4TosReliabilityMetricTagIter) clearHolderSlice() PatternFlowIpv4TosReliabilityPatternFlowIpv4TosReliabilityMetricTagIter { + if len(obj.patternFlowIpv4TosReliabilityMetricTagSlice) > 0 { + obj.patternFlowIpv4TosReliabilityMetricTagSlice = []PatternFlowIpv4TosReliabilityMetricTag{} + } + return obj +} +func (obj *patternFlowIpv4TosReliabilityPatternFlowIpv4TosReliabilityMetricTagIter) appendHolderSlice(item PatternFlowIpv4TosReliabilityMetricTag) PatternFlowIpv4TosReliabilityPatternFlowIpv4TosReliabilityMetricTagIter { + obj.patternFlowIpv4TosReliabilityMetricTagSlice = append(obj.patternFlowIpv4TosReliabilityMetricTagSlice, item) + return obj +} + +func (obj *patternFlowIpv4TosReliability) validateObj(vObj *validation, set_default bool) { + if set_default { + obj.setDefault() + } + + if obj.obj.Value != nil { + + if *obj.obj.Value > 1 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowGtpv1NPduNumberMetricTag.Offset <= 7 but Got %d", *obj.obj.Offset)) + fmt.Sprintf("0 <= PatternFlowIpv4TosReliability.Value <= 1 but Got %d", *obj.obj.Value)) } } - if obj.obj.Length != nil { + if obj.obj.Values != nil { + + for _, item := range obj.obj.Values { + if item > 1 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("min(uint32) <= PatternFlowIpv4TosReliability.Values <= 1 but Got %d", item)) + } - if *obj.obj.Length < 1 || *obj.obj.Length > 8 { - vObj.validationErrors = append( - vObj.validationErrors, - fmt.Sprintf("1 <= PatternFlowGtpv1NPduNumberMetricTag.Length <= 8 but Got %d", *obj.obj.Length)) } } -} + if obj.obj.Increment != nil { -func (obj *patternFlowGtpv1NPduNumberMetricTag) setDefault() { - if obj.obj.Offset == nil { - obj.SetOffset(0) + obj.Increment().validateObj(vObj, set_default) } - if obj.obj.Length == nil { - obj.SetLength(8) + + if obj.obj.Decrement != nil { + + obj.Decrement().validateObj(vObj, set_default) + } + + if len(obj.obj.MetricTags) != 0 { + + if set_default { + obj.MetricTags().clearHolderSlice() + for _, item := range obj.obj.MetricTags { + obj.MetricTags().appendHolderSlice(&patternFlowIpv4TosReliabilityMetricTag{obj: item}) + } + } + for _, item := range obj.MetricTags().Items() { + item.validateObj(vObj, set_default) + } + } } -// ***** PatternFlowGtpv1NextExtensionHeaderTypeCounter ***** -type patternFlowGtpv1NextExtensionHeaderTypeCounter struct { +func (obj *patternFlowIpv4TosReliability) setDefault() { + if obj.obj.Choice == nil { + obj.SetChoice(PatternFlowIpv4TosReliabilityChoice.VALUE) + + } + +} + +// ***** PatternFlowIpv4TosMonetary ***** +type patternFlowIpv4TosMonetary struct { validation - obj *otg.PatternFlowGtpv1NextExtensionHeaderTypeCounter + obj *otg.PatternFlowIpv4TosMonetary + incrementHolder PatternFlowIpv4TosMonetaryCounter + decrementHolder PatternFlowIpv4TosMonetaryCounter + metricTagsHolder PatternFlowIpv4TosMonetaryPatternFlowIpv4TosMonetaryMetricTagIter } -func NewPatternFlowGtpv1NextExtensionHeaderTypeCounter() PatternFlowGtpv1NextExtensionHeaderTypeCounter { - obj := patternFlowGtpv1NextExtensionHeaderTypeCounter{obj: &otg.PatternFlowGtpv1NextExtensionHeaderTypeCounter{}} +func NewPatternFlowIpv4TosMonetary() PatternFlowIpv4TosMonetary { + obj := patternFlowIpv4TosMonetary{obj: &otg.PatternFlowIpv4TosMonetary{}} obj.setDefault() return &obj } -func (obj *patternFlowGtpv1NextExtensionHeaderTypeCounter) Msg() *otg.PatternFlowGtpv1NextExtensionHeaderTypeCounter { +func (obj *patternFlowIpv4TosMonetary) Msg() *otg.PatternFlowIpv4TosMonetary { return obj.obj } -func (obj *patternFlowGtpv1NextExtensionHeaderTypeCounter) SetMsg(msg *otg.PatternFlowGtpv1NextExtensionHeaderTypeCounter) PatternFlowGtpv1NextExtensionHeaderTypeCounter { - +func (obj *patternFlowIpv4TosMonetary) SetMsg(msg *otg.PatternFlowIpv4TosMonetary) PatternFlowIpv4TosMonetary { + obj.setNil() proto.Merge(obj.obj, msg) return obj } -func (obj *patternFlowGtpv1NextExtensionHeaderTypeCounter) ToProto() (*otg.PatternFlowGtpv1NextExtensionHeaderTypeCounter, error) { +func (obj *patternFlowIpv4TosMonetary) ToProto() (*otg.PatternFlowIpv4TosMonetary, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -244221,7 +289611,7 @@ func (obj *patternFlowGtpv1NextExtensionHeaderTypeCounter) ToProto() (*otg.Patte return obj.Msg(), nil } -func (obj *patternFlowGtpv1NextExtensionHeaderTypeCounter) FromProto(msg *otg.PatternFlowGtpv1NextExtensionHeaderTypeCounter) (PatternFlowGtpv1NextExtensionHeaderTypeCounter, error) { +func (obj *patternFlowIpv4TosMonetary) FromProto(msg *otg.PatternFlowIpv4TosMonetary) (PatternFlowIpv4TosMonetary, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -244230,7 +289620,7 @@ func (obj *patternFlowGtpv1NextExtensionHeaderTypeCounter) FromProto(msg *otg.Pa return newObj, nil } -func (obj *patternFlowGtpv1NextExtensionHeaderTypeCounter) ToPbText() (string, error) { +func (obj *patternFlowIpv4TosMonetary) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -244242,12 +289632,12 @@ func (obj *patternFlowGtpv1NextExtensionHeaderTypeCounter) ToPbText() (string, e return string(protoMarshal), nil } -func (obj *patternFlowGtpv1NextExtensionHeaderTypeCounter) FromPbText(value string) error { +func (obj *patternFlowIpv4TosMonetary) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj } - + obj.setNil() vErr := obj.validateToAndFrom() if vErr != nil { return vErr @@ -244255,7 +289645,7 @@ func (obj *patternFlowGtpv1NextExtensionHeaderTypeCounter) FromPbText(value stri return retObj } -func (obj *patternFlowGtpv1NextExtensionHeaderTypeCounter) ToYaml() (string, error) { +func (obj *patternFlowIpv4TosMonetary) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -244276,7 +289666,7 @@ func (obj *patternFlowGtpv1NextExtensionHeaderTypeCounter) ToYaml() (string, err return string(data), nil } -func (obj *patternFlowGtpv1NextExtensionHeaderTypeCounter) FromYaml(value string) error { +func (obj *patternFlowIpv4TosMonetary) FromYaml(value string) error { if value == "" { value = "{}" } @@ -244293,7 +289683,7 @@ func (obj *patternFlowGtpv1NextExtensionHeaderTypeCounter) FromYaml(value string return fmt.Errorf("unmarshal error %s", strings.Replace( uError.Error(), "\u00a0", " ", -1)[7:]) } - + obj.setNil() vErr := obj.validateToAndFrom() if vErr != nil { return vErr @@ -244301,7 +289691,7 @@ func (obj *patternFlowGtpv1NextExtensionHeaderTypeCounter) FromYaml(value string return nil } -func (obj *patternFlowGtpv1NextExtensionHeaderTypeCounter) ToJson() (string, error) { +func (obj *patternFlowIpv4TosMonetary) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -244319,7 +289709,7 @@ func (obj *patternFlowGtpv1NextExtensionHeaderTypeCounter) ToJson() (string, err return string(data), nil } -func (obj *patternFlowGtpv1NextExtensionHeaderTypeCounter) FromJson(value string) error { +func (obj *patternFlowIpv4TosMonetary) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -244332,7 +289722,7 @@ func (obj *patternFlowGtpv1NextExtensionHeaderTypeCounter) FromJson(value string return fmt.Errorf("unmarshal error %s", strings.Replace( uError.Error(), "\u00a0", " ", -1)[7:]) } - + obj.setNil() err := obj.validateToAndFrom() if err != nil { return err @@ -244340,19 +289730,19 @@ func (obj *patternFlowGtpv1NextExtensionHeaderTypeCounter) FromJson(value string return nil } -func (obj *patternFlowGtpv1NextExtensionHeaderTypeCounter) validateToAndFrom() error { +func (obj *patternFlowIpv4TosMonetary) validateToAndFrom() error { // emptyVars() obj.validateObj(&obj.validation, true) return obj.validationResult() } -func (obj *patternFlowGtpv1NextExtensionHeaderTypeCounter) Validate() error { +func (obj *patternFlowIpv4TosMonetary) Validate() error { // emptyVars() obj.validateObj(&obj.validation, false) return obj.validationResult() } -func (obj *patternFlowGtpv1NextExtensionHeaderTypeCounter) String() string { +func (obj *patternFlowIpv4TosMonetary) String() string { str, err := obj.ToYaml() if err != nil { return err.Error() @@ -244360,12 +289750,12 @@ func (obj *patternFlowGtpv1NextExtensionHeaderTypeCounter) String() string { return str } -func (obj *patternFlowGtpv1NextExtensionHeaderTypeCounter) Clone() (PatternFlowGtpv1NextExtensionHeaderTypeCounter, error) { +func (obj *patternFlowIpv4TosMonetary) Clone() (PatternFlowIpv4TosMonetary, error) { vErr := obj.Validate() if vErr != nil { return nil, vErr } - newObj := NewPatternFlowGtpv1NextExtensionHeaderTypeCounter() + newObj := NewPatternFlowIpv4TosMonetary() data, err := proto.Marshal(obj.Msg()) if err != nil { return nil, err @@ -244377,542 +289767,426 @@ func (obj *patternFlowGtpv1NextExtensionHeaderTypeCounter) Clone() (PatternFlowG return newObj, nil } -// PatternFlowGtpv1NextExtensionHeaderTypeCounter is integer counter pattern -type PatternFlowGtpv1NextExtensionHeaderTypeCounter interface { +func (obj *patternFlowIpv4TosMonetary) setNil() { + obj.incrementHolder = nil + obj.decrementHolder = nil + obj.metricTagsHolder = nil + obj.validationErrors = nil + obj.warnings = nil + obj.constraints = make(map[string]map[string]Constraints) +} + +// PatternFlowIpv4TosMonetary is monetary +type PatternFlowIpv4TosMonetary interface { Validation - // Msg marshals PatternFlowGtpv1NextExtensionHeaderTypeCounter to protobuf object *otg.PatternFlowGtpv1NextExtensionHeaderTypeCounter + // Msg marshals PatternFlowIpv4TosMonetary to protobuf object *otg.PatternFlowIpv4TosMonetary // and doesn't set defaults - Msg() *otg.PatternFlowGtpv1NextExtensionHeaderTypeCounter - // SetMsg unmarshals PatternFlowGtpv1NextExtensionHeaderTypeCounter from protobuf object *otg.PatternFlowGtpv1NextExtensionHeaderTypeCounter + Msg() *otg.PatternFlowIpv4TosMonetary + // SetMsg unmarshals PatternFlowIpv4TosMonetary from protobuf object *otg.PatternFlowIpv4TosMonetary // and doesn't set defaults - SetMsg(*otg.PatternFlowGtpv1NextExtensionHeaderTypeCounter) PatternFlowGtpv1NextExtensionHeaderTypeCounter - // ToProto marshals PatternFlowGtpv1NextExtensionHeaderTypeCounter to protobuf object *otg.PatternFlowGtpv1NextExtensionHeaderTypeCounter - ToProto() (*otg.PatternFlowGtpv1NextExtensionHeaderTypeCounter, error) - // ToPbText marshals PatternFlowGtpv1NextExtensionHeaderTypeCounter to protobuf text + SetMsg(*otg.PatternFlowIpv4TosMonetary) PatternFlowIpv4TosMonetary + // ToProto marshals PatternFlowIpv4TosMonetary to protobuf object *otg.PatternFlowIpv4TosMonetary + ToProto() (*otg.PatternFlowIpv4TosMonetary, error) + // ToPbText marshals PatternFlowIpv4TosMonetary to protobuf text ToPbText() (string, error) - // ToYaml marshals PatternFlowGtpv1NextExtensionHeaderTypeCounter to YAML text + // ToYaml marshals PatternFlowIpv4TosMonetary to YAML text ToYaml() (string, error) - // ToJson marshals PatternFlowGtpv1NextExtensionHeaderTypeCounter to JSON text + // ToJson marshals PatternFlowIpv4TosMonetary to JSON text ToJson() (string, error) - // FromProto unmarshals PatternFlowGtpv1NextExtensionHeaderTypeCounter from protobuf object *otg.PatternFlowGtpv1NextExtensionHeaderTypeCounter - FromProto(msg *otg.PatternFlowGtpv1NextExtensionHeaderTypeCounter) (PatternFlowGtpv1NextExtensionHeaderTypeCounter, error) - // FromPbText unmarshals PatternFlowGtpv1NextExtensionHeaderTypeCounter from protobuf text + // FromProto unmarshals PatternFlowIpv4TosMonetary from protobuf object *otg.PatternFlowIpv4TosMonetary + FromProto(msg *otg.PatternFlowIpv4TosMonetary) (PatternFlowIpv4TosMonetary, error) + // FromPbText unmarshals PatternFlowIpv4TosMonetary from protobuf text FromPbText(value string) error - // FromYaml unmarshals PatternFlowGtpv1NextExtensionHeaderTypeCounter from YAML text + // FromYaml unmarshals PatternFlowIpv4TosMonetary from YAML text FromYaml(value string) error - // FromJson unmarshals PatternFlowGtpv1NextExtensionHeaderTypeCounter from JSON text + // FromJson unmarshals PatternFlowIpv4TosMonetary from JSON text FromJson(value string) error - // Validate validates PatternFlowGtpv1NextExtensionHeaderTypeCounter + // Validate validates PatternFlowIpv4TosMonetary Validate() error // A stringer function String() string // Clones the object - Clone() (PatternFlowGtpv1NextExtensionHeaderTypeCounter, error) + Clone() (PatternFlowIpv4TosMonetary, error) validateToAndFrom() error validateObj(vObj *validation, set_default bool) setDefault() - // Start returns uint32, set in PatternFlowGtpv1NextExtensionHeaderTypeCounter. - Start() uint32 - // SetStart assigns uint32 provided by user to PatternFlowGtpv1NextExtensionHeaderTypeCounter - SetStart(value uint32) PatternFlowGtpv1NextExtensionHeaderTypeCounter - // HasStart checks if Start has been set in PatternFlowGtpv1NextExtensionHeaderTypeCounter - HasStart() bool - // Step returns uint32, set in PatternFlowGtpv1NextExtensionHeaderTypeCounter. - Step() uint32 - // SetStep assigns uint32 provided by user to PatternFlowGtpv1NextExtensionHeaderTypeCounter - SetStep(value uint32) PatternFlowGtpv1NextExtensionHeaderTypeCounter - // HasStep checks if Step has been set in PatternFlowGtpv1NextExtensionHeaderTypeCounter - HasStep() bool - // Count returns uint32, set in PatternFlowGtpv1NextExtensionHeaderTypeCounter. - Count() uint32 - // SetCount assigns uint32 provided by user to PatternFlowGtpv1NextExtensionHeaderTypeCounter - SetCount(value uint32) PatternFlowGtpv1NextExtensionHeaderTypeCounter - // HasCount checks if Count has been set in PatternFlowGtpv1NextExtensionHeaderTypeCounter - HasCount() bool -} - -// description is TBD -// Start returns a uint32 -func (obj *patternFlowGtpv1NextExtensionHeaderTypeCounter) Start() uint32 { - - return *obj.obj.Start - -} - -// description is TBD -// Start returns a uint32 -func (obj *patternFlowGtpv1NextExtensionHeaderTypeCounter) HasStart() bool { - return obj.obj.Start != nil -} - -// description is TBD -// SetStart sets the uint32 value in the PatternFlowGtpv1NextExtensionHeaderTypeCounter object -func (obj *patternFlowGtpv1NextExtensionHeaderTypeCounter) SetStart(value uint32) PatternFlowGtpv1NextExtensionHeaderTypeCounter { - - obj.obj.Start = &value - return obj -} - -// description is TBD -// Step returns a uint32 -func (obj *patternFlowGtpv1NextExtensionHeaderTypeCounter) Step() uint32 { - - return *obj.obj.Step - -} - -// description is TBD -// Step returns a uint32 -func (obj *patternFlowGtpv1NextExtensionHeaderTypeCounter) HasStep() bool { - return obj.obj.Step != nil -} - -// description is TBD -// SetStep sets the uint32 value in the PatternFlowGtpv1NextExtensionHeaderTypeCounter object -func (obj *patternFlowGtpv1NextExtensionHeaderTypeCounter) SetStep(value uint32) PatternFlowGtpv1NextExtensionHeaderTypeCounter { - - obj.obj.Step = &value - return obj + // Choice returns PatternFlowIpv4TosMonetaryChoiceEnum, set in PatternFlowIpv4TosMonetary + Choice() PatternFlowIpv4TosMonetaryChoiceEnum + // SetChoice assigns PatternFlowIpv4TosMonetaryChoiceEnum provided by user to PatternFlowIpv4TosMonetary + SetChoice(value PatternFlowIpv4TosMonetaryChoiceEnum) PatternFlowIpv4TosMonetary + // HasChoice checks if Choice has been set in PatternFlowIpv4TosMonetary + HasChoice() bool + // Value returns uint32, set in PatternFlowIpv4TosMonetary. + Value() uint32 + // SetValue assigns uint32 provided by user to PatternFlowIpv4TosMonetary + SetValue(value uint32) PatternFlowIpv4TosMonetary + // HasValue checks if Value has been set in PatternFlowIpv4TosMonetary + HasValue() bool + // Values returns []uint32, set in PatternFlowIpv4TosMonetary. + Values() []uint32 + // SetValues assigns []uint32 provided by user to PatternFlowIpv4TosMonetary + SetValues(value []uint32) PatternFlowIpv4TosMonetary + // Increment returns PatternFlowIpv4TosMonetaryCounter, set in PatternFlowIpv4TosMonetary. + // PatternFlowIpv4TosMonetaryCounter is integer counter pattern + Increment() PatternFlowIpv4TosMonetaryCounter + // SetIncrement assigns PatternFlowIpv4TosMonetaryCounter provided by user to PatternFlowIpv4TosMonetary. + // PatternFlowIpv4TosMonetaryCounter is integer counter pattern + SetIncrement(value PatternFlowIpv4TosMonetaryCounter) PatternFlowIpv4TosMonetary + // HasIncrement checks if Increment has been set in PatternFlowIpv4TosMonetary + HasIncrement() bool + // Decrement returns PatternFlowIpv4TosMonetaryCounter, set in PatternFlowIpv4TosMonetary. + // PatternFlowIpv4TosMonetaryCounter is integer counter pattern + Decrement() PatternFlowIpv4TosMonetaryCounter + // SetDecrement assigns PatternFlowIpv4TosMonetaryCounter provided by user to PatternFlowIpv4TosMonetary. + // PatternFlowIpv4TosMonetaryCounter is integer counter pattern + SetDecrement(value PatternFlowIpv4TosMonetaryCounter) PatternFlowIpv4TosMonetary + // HasDecrement checks if Decrement has been set in PatternFlowIpv4TosMonetary + HasDecrement() bool + // MetricTags returns PatternFlowIpv4TosMonetaryPatternFlowIpv4TosMonetaryMetricTagIterIter, set in PatternFlowIpv4TosMonetary + MetricTags() PatternFlowIpv4TosMonetaryPatternFlowIpv4TosMonetaryMetricTagIter + setNil() } -// description is TBD -// Count returns a uint32 -func (obj *patternFlowGtpv1NextExtensionHeaderTypeCounter) Count() uint32 { - - return *obj.obj.Count +type PatternFlowIpv4TosMonetaryChoiceEnum string +// Enum of Choice on PatternFlowIpv4TosMonetary +var PatternFlowIpv4TosMonetaryChoice = struct { + VALUE PatternFlowIpv4TosMonetaryChoiceEnum + VALUES PatternFlowIpv4TosMonetaryChoiceEnum + INCREMENT PatternFlowIpv4TosMonetaryChoiceEnum + DECREMENT PatternFlowIpv4TosMonetaryChoiceEnum +}{ + VALUE: PatternFlowIpv4TosMonetaryChoiceEnum("value"), + VALUES: PatternFlowIpv4TosMonetaryChoiceEnum("values"), + INCREMENT: PatternFlowIpv4TosMonetaryChoiceEnum("increment"), + DECREMENT: PatternFlowIpv4TosMonetaryChoiceEnum("decrement"), } -// description is TBD -// Count returns a uint32 -func (obj *patternFlowGtpv1NextExtensionHeaderTypeCounter) HasCount() bool { - return obj.obj.Count != nil +func (obj *patternFlowIpv4TosMonetary) Choice() PatternFlowIpv4TosMonetaryChoiceEnum { + return PatternFlowIpv4TosMonetaryChoiceEnum(obj.obj.Choice.Enum().String()) } // description is TBD -// SetCount sets the uint32 value in the PatternFlowGtpv1NextExtensionHeaderTypeCounter object -func (obj *patternFlowGtpv1NextExtensionHeaderTypeCounter) SetCount(value uint32) PatternFlowGtpv1NextExtensionHeaderTypeCounter { - - obj.obj.Count = &value - return obj -} - -func (obj *patternFlowGtpv1NextExtensionHeaderTypeCounter) validateObj(vObj *validation, set_default bool) { - if set_default { - obj.setDefault() - } - - if obj.obj.Start != nil { - - if *obj.obj.Start > 255 { - vObj.validationErrors = append( - vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowGtpv1NextExtensionHeaderTypeCounter.Start <= 255 but Got %d", *obj.obj.Start)) - } - - } - - if obj.obj.Step != nil { - - if *obj.obj.Step > 255 { - vObj.validationErrors = append( - vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowGtpv1NextExtensionHeaderTypeCounter.Step <= 255 but Got %d", *obj.obj.Step)) - } - - } - - if obj.obj.Count != nil { - - if *obj.obj.Count > 255 { - vObj.validationErrors = append( - vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowGtpv1NextExtensionHeaderTypeCounter.Count <= 255 but Got %d", *obj.obj.Count)) - } - - } - -} - -func (obj *patternFlowGtpv1NextExtensionHeaderTypeCounter) setDefault() { - if obj.obj.Start == nil { - obj.SetStart(0) - } - if obj.obj.Step == nil { - obj.SetStep(1) - } - if obj.obj.Count == nil { - obj.SetCount(1) - } - -} - -// ***** PatternFlowGtpv1NextExtensionHeaderTypeMetricTag ***** -type patternFlowGtpv1NextExtensionHeaderTypeMetricTag struct { - validation - obj *otg.PatternFlowGtpv1NextExtensionHeaderTypeMetricTag -} - -func NewPatternFlowGtpv1NextExtensionHeaderTypeMetricTag() PatternFlowGtpv1NextExtensionHeaderTypeMetricTag { - obj := patternFlowGtpv1NextExtensionHeaderTypeMetricTag{obj: &otg.PatternFlowGtpv1NextExtensionHeaderTypeMetricTag{}} - obj.setDefault() - return &obj -} - -func (obj *patternFlowGtpv1NextExtensionHeaderTypeMetricTag) Msg() *otg.PatternFlowGtpv1NextExtensionHeaderTypeMetricTag { - return obj.obj -} - -func (obj *patternFlowGtpv1NextExtensionHeaderTypeMetricTag) SetMsg(msg *otg.PatternFlowGtpv1NextExtensionHeaderTypeMetricTag) PatternFlowGtpv1NextExtensionHeaderTypeMetricTag { - - proto.Merge(obj.obj, msg) - return obj -} - -func (obj *patternFlowGtpv1NextExtensionHeaderTypeMetricTag) ToProto() (*otg.PatternFlowGtpv1NextExtensionHeaderTypeMetricTag, error) { - err := obj.validateToAndFrom() - if err != nil { - return nil, err - } - return obj.Msg(), nil -} - -func (obj *patternFlowGtpv1NextExtensionHeaderTypeMetricTag) FromProto(msg *otg.PatternFlowGtpv1NextExtensionHeaderTypeMetricTag) (PatternFlowGtpv1NextExtensionHeaderTypeMetricTag, error) { - newObj := obj.SetMsg(msg) - err := newObj.validateToAndFrom() - if err != nil { - return nil, err - } - return newObj, nil -} - -func (obj *patternFlowGtpv1NextExtensionHeaderTypeMetricTag) ToPbText() (string, error) { - vErr := obj.validateToAndFrom() - if vErr != nil { - return "", vErr - } - protoMarshal, err := proto.Marshal(obj.Msg()) - if err != nil { - return "", err - } - return string(protoMarshal), nil -} - -func (obj *patternFlowGtpv1NextExtensionHeaderTypeMetricTag) FromPbText(value string) error { - retObj := proto.Unmarshal([]byte(value), obj.Msg()) - if retObj != nil { - return retObj - } - - vErr := obj.validateToAndFrom() - if vErr != nil { - return vErr - } - return retObj -} - -func (obj *patternFlowGtpv1NextExtensionHeaderTypeMetricTag) ToYaml() (string, error) { - vErr := obj.validateToAndFrom() - if vErr != nil { - return "", vErr - } - opts := protojson.MarshalOptions{ - UseProtoNames: true, - AllowPartial: true, - EmitUnpopulated: false, - } - data, err := opts.Marshal(obj.Msg()) - if err != nil { - return "", err - } - data, err = yaml.JSONToYAML(data) - if err != nil { - return "", err - } - return string(data), nil +// Choice returns a string +func (obj *patternFlowIpv4TosMonetary) HasChoice() bool { + return obj.obj.Choice != nil } -func (obj *patternFlowGtpv1NextExtensionHeaderTypeMetricTag) FromYaml(value string) error { - if value == "" { - value = "{}" - } - data, err := yaml.YAMLToJSON([]byte(value)) - if err != nil { - return err - } - opts := protojson.UnmarshalOptions{ - AllowPartial: true, - DiscardUnknown: false, - } - uError := opts.Unmarshal([]byte(data), obj.Msg()) - if uError != nil { - return fmt.Errorf("unmarshal error %s", strings.Replace( - uError.Error(), "\u00a0", " ", -1)[7:]) - } - - vErr := obj.validateToAndFrom() - if vErr != nil { - return vErr +func (obj *patternFlowIpv4TosMonetary) SetChoice(value PatternFlowIpv4TosMonetaryChoiceEnum) PatternFlowIpv4TosMonetary { + intValue, ok := otg.PatternFlowIpv4TosMonetary_Choice_Enum_value[string(value)] + if !ok { + obj.validationErrors = append(obj.validationErrors, fmt.Sprintf( + "%s is not a valid choice on PatternFlowIpv4TosMonetaryChoiceEnum", string(value))) + return obj } - return nil -} + enumValue := otg.PatternFlowIpv4TosMonetary_Choice_Enum(intValue) + obj.obj.Choice = &enumValue + obj.obj.Decrement = nil + obj.decrementHolder = nil + obj.obj.Increment = nil + obj.incrementHolder = nil + obj.obj.Values = nil + obj.obj.Value = nil -func (obj *patternFlowGtpv1NextExtensionHeaderTypeMetricTag) ToJson() (string, error) { - vErr := obj.validateToAndFrom() - if vErr != nil { - return "", vErr - } - opts := protojson.MarshalOptions{ - UseProtoNames: true, - AllowPartial: true, - EmitUnpopulated: false, - Indent: " ", - } - data, err := opts.Marshal(obj.Msg()) - if err != nil { - return "", err + if value == PatternFlowIpv4TosMonetaryChoice.VALUE { + defaultValue := uint32(0) + obj.obj.Value = &defaultValue } - return string(data), nil -} -func (obj *patternFlowGtpv1NextExtensionHeaderTypeMetricTag) FromJson(value string) error { - opts := protojson.UnmarshalOptions{ - AllowPartial: true, - DiscardUnknown: false, - } - if value == "" { - value = "{}" + if value == PatternFlowIpv4TosMonetaryChoice.VALUES { + defaultValue := []uint32{0} + obj.obj.Values = defaultValue } - uError := opts.Unmarshal([]byte(value), obj.Msg()) - if uError != nil { - return fmt.Errorf("unmarshal error %s", strings.Replace( - uError.Error(), "\u00a0", " ", -1)[7:]) + + if value == PatternFlowIpv4TosMonetaryChoice.INCREMENT { + obj.obj.Increment = NewPatternFlowIpv4TosMonetaryCounter().Msg() } - err := obj.validateToAndFrom() - if err != nil { - return err + if value == PatternFlowIpv4TosMonetaryChoice.DECREMENT { + obj.obj.Decrement = NewPatternFlowIpv4TosMonetaryCounter().Msg() } - return nil + + return obj } -func (obj *patternFlowGtpv1NextExtensionHeaderTypeMetricTag) validateToAndFrom() error { - // emptyVars() - obj.validateObj(&obj.validation, true) - return obj.validationResult() +// description is TBD +// Value returns a uint32 +func (obj *patternFlowIpv4TosMonetary) Value() uint32 { + + if obj.obj.Value == nil { + obj.SetChoice(PatternFlowIpv4TosMonetaryChoice.VALUE) + } + + return *obj.obj.Value + } -func (obj *patternFlowGtpv1NextExtensionHeaderTypeMetricTag) Validate() error { - // emptyVars() - obj.validateObj(&obj.validation, false) - return obj.validationResult() +// description is TBD +// Value returns a uint32 +func (obj *patternFlowIpv4TosMonetary) HasValue() bool { + return obj.obj.Value != nil } -func (obj *patternFlowGtpv1NextExtensionHeaderTypeMetricTag) String() string { - str, err := obj.ToYaml() - if err != nil { - return err.Error() +// description is TBD +// SetValue sets the uint32 value in the PatternFlowIpv4TosMonetary object +func (obj *patternFlowIpv4TosMonetary) SetValue(value uint32) PatternFlowIpv4TosMonetary { + obj.SetChoice(PatternFlowIpv4TosMonetaryChoice.VALUE) + obj.obj.Value = &value + return obj +} + +// description is TBD +// Values returns a []uint32 +func (obj *patternFlowIpv4TosMonetary) Values() []uint32 { + if obj.obj.Values == nil { + obj.SetValues([]uint32{0}) } - return str + return obj.obj.Values } -func (obj *patternFlowGtpv1NextExtensionHeaderTypeMetricTag) Clone() (PatternFlowGtpv1NextExtensionHeaderTypeMetricTag, error) { - vErr := obj.Validate() - if vErr != nil { - return nil, vErr +// description is TBD +// SetValues sets the []uint32 value in the PatternFlowIpv4TosMonetary object +func (obj *patternFlowIpv4TosMonetary) SetValues(value []uint32) PatternFlowIpv4TosMonetary { + obj.SetChoice(PatternFlowIpv4TosMonetaryChoice.VALUES) + if obj.obj.Values == nil { + obj.obj.Values = make([]uint32, 0) } - newObj := NewPatternFlowGtpv1NextExtensionHeaderTypeMetricTag() - data, err := proto.Marshal(obj.Msg()) - if err != nil { - return nil, err + obj.obj.Values = value + + return obj +} + +// description is TBD +// Increment returns a PatternFlowIpv4TosMonetaryCounter +func (obj *patternFlowIpv4TosMonetary) Increment() PatternFlowIpv4TosMonetaryCounter { + if obj.obj.Increment == nil { + obj.SetChoice(PatternFlowIpv4TosMonetaryChoice.INCREMENT) } - pbErr := proto.Unmarshal(data, newObj.Msg()) - if pbErr != nil { - return nil, pbErr + if obj.incrementHolder == nil { + obj.incrementHolder = &patternFlowIpv4TosMonetaryCounter{obj: obj.obj.Increment} } - return newObj, nil + return obj.incrementHolder } -// PatternFlowGtpv1NextExtensionHeaderTypeMetricTag is metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. -type PatternFlowGtpv1NextExtensionHeaderTypeMetricTag interface { - Validation - // Msg marshals PatternFlowGtpv1NextExtensionHeaderTypeMetricTag to protobuf object *otg.PatternFlowGtpv1NextExtensionHeaderTypeMetricTag - // and doesn't set defaults - Msg() *otg.PatternFlowGtpv1NextExtensionHeaderTypeMetricTag - // SetMsg unmarshals PatternFlowGtpv1NextExtensionHeaderTypeMetricTag from protobuf object *otg.PatternFlowGtpv1NextExtensionHeaderTypeMetricTag - // and doesn't set defaults - SetMsg(*otg.PatternFlowGtpv1NextExtensionHeaderTypeMetricTag) PatternFlowGtpv1NextExtensionHeaderTypeMetricTag - // ToProto marshals PatternFlowGtpv1NextExtensionHeaderTypeMetricTag to protobuf object *otg.PatternFlowGtpv1NextExtensionHeaderTypeMetricTag - ToProto() (*otg.PatternFlowGtpv1NextExtensionHeaderTypeMetricTag, error) - // ToPbText marshals PatternFlowGtpv1NextExtensionHeaderTypeMetricTag to protobuf text - ToPbText() (string, error) - // ToYaml marshals PatternFlowGtpv1NextExtensionHeaderTypeMetricTag to YAML text - ToYaml() (string, error) - // ToJson marshals PatternFlowGtpv1NextExtensionHeaderTypeMetricTag to JSON text - ToJson() (string, error) - // FromProto unmarshals PatternFlowGtpv1NextExtensionHeaderTypeMetricTag from protobuf object *otg.PatternFlowGtpv1NextExtensionHeaderTypeMetricTag - FromProto(msg *otg.PatternFlowGtpv1NextExtensionHeaderTypeMetricTag) (PatternFlowGtpv1NextExtensionHeaderTypeMetricTag, error) - // FromPbText unmarshals PatternFlowGtpv1NextExtensionHeaderTypeMetricTag from protobuf text - FromPbText(value string) error - // FromYaml unmarshals PatternFlowGtpv1NextExtensionHeaderTypeMetricTag from YAML text - FromYaml(value string) error - // FromJson unmarshals PatternFlowGtpv1NextExtensionHeaderTypeMetricTag from JSON text - FromJson(value string) error - // Validate validates PatternFlowGtpv1NextExtensionHeaderTypeMetricTag - Validate() error - // A stringer function - String() string - // Clones the object - Clone() (PatternFlowGtpv1NextExtensionHeaderTypeMetricTag, error) - validateToAndFrom() error - validateObj(vObj *validation, set_default bool) - setDefault() - // Name returns string, set in PatternFlowGtpv1NextExtensionHeaderTypeMetricTag. - Name() string - // SetName assigns string provided by user to PatternFlowGtpv1NextExtensionHeaderTypeMetricTag - SetName(value string) PatternFlowGtpv1NextExtensionHeaderTypeMetricTag - // Offset returns uint32, set in PatternFlowGtpv1NextExtensionHeaderTypeMetricTag. - Offset() uint32 - // SetOffset assigns uint32 provided by user to PatternFlowGtpv1NextExtensionHeaderTypeMetricTag - SetOffset(value uint32) PatternFlowGtpv1NextExtensionHeaderTypeMetricTag - // HasOffset checks if Offset has been set in PatternFlowGtpv1NextExtensionHeaderTypeMetricTag - HasOffset() bool - // Length returns uint32, set in PatternFlowGtpv1NextExtensionHeaderTypeMetricTag. - Length() uint32 - // SetLength assigns uint32 provided by user to PatternFlowGtpv1NextExtensionHeaderTypeMetricTag - SetLength(value uint32) PatternFlowGtpv1NextExtensionHeaderTypeMetricTag - // HasLength checks if Length has been set in PatternFlowGtpv1NextExtensionHeaderTypeMetricTag - HasLength() bool +// description is TBD +// Increment returns a PatternFlowIpv4TosMonetaryCounter +func (obj *patternFlowIpv4TosMonetary) HasIncrement() bool { + return obj.obj.Increment != nil } -// Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field -// Name returns a string -func (obj *patternFlowGtpv1NextExtensionHeaderTypeMetricTag) Name() string { +// description is TBD +// SetIncrement sets the PatternFlowIpv4TosMonetaryCounter value in the PatternFlowIpv4TosMonetary object +func (obj *patternFlowIpv4TosMonetary) SetIncrement(value PatternFlowIpv4TosMonetaryCounter) PatternFlowIpv4TosMonetary { + obj.SetChoice(PatternFlowIpv4TosMonetaryChoice.INCREMENT) + obj.incrementHolder = nil + obj.obj.Increment = value.Msg() - return *obj.obj.Name + return obj +} + +// description is TBD +// Decrement returns a PatternFlowIpv4TosMonetaryCounter +func (obj *patternFlowIpv4TosMonetary) Decrement() PatternFlowIpv4TosMonetaryCounter { + if obj.obj.Decrement == nil { + obj.SetChoice(PatternFlowIpv4TosMonetaryChoice.DECREMENT) + } + if obj.decrementHolder == nil { + obj.decrementHolder = &patternFlowIpv4TosMonetaryCounter{obj: obj.obj.Decrement} + } + return obj.decrementHolder +} +// description is TBD +// Decrement returns a PatternFlowIpv4TosMonetaryCounter +func (obj *patternFlowIpv4TosMonetary) HasDecrement() bool { + return obj.obj.Decrement != nil } -// Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field -// SetName sets the string value in the PatternFlowGtpv1NextExtensionHeaderTypeMetricTag object -func (obj *patternFlowGtpv1NextExtensionHeaderTypeMetricTag) SetName(value string) PatternFlowGtpv1NextExtensionHeaderTypeMetricTag { +// description is TBD +// SetDecrement sets the PatternFlowIpv4TosMonetaryCounter value in the PatternFlowIpv4TosMonetary object +func (obj *patternFlowIpv4TosMonetary) SetDecrement(value PatternFlowIpv4TosMonetaryCounter) PatternFlowIpv4TosMonetary { + obj.SetChoice(PatternFlowIpv4TosMonetaryChoice.DECREMENT) + obj.decrementHolder = nil + obj.obj.Decrement = value.Msg() - obj.obj.Name = &value return obj } -// Offset in bits relative to start of corresponding header field -// Offset returns a uint32 -func (obj *patternFlowGtpv1NextExtensionHeaderTypeMetricTag) Offset() uint32 { - - return *obj.obj.Offset +// One or more metric tags can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. +// MetricTags returns a []PatternFlowIpv4TosMonetaryMetricTag +func (obj *patternFlowIpv4TosMonetary) MetricTags() PatternFlowIpv4TosMonetaryPatternFlowIpv4TosMonetaryMetricTagIter { + if len(obj.obj.MetricTags) == 0 { + obj.obj.MetricTags = []*otg.PatternFlowIpv4TosMonetaryMetricTag{} + } + if obj.metricTagsHolder == nil { + obj.metricTagsHolder = newPatternFlowIpv4TosMonetaryPatternFlowIpv4TosMonetaryMetricTagIter(&obj.obj.MetricTags).setMsg(obj) + } + return obj.metricTagsHolder +} +type patternFlowIpv4TosMonetaryPatternFlowIpv4TosMonetaryMetricTagIter struct { + obj *patternFlowIpv4TosMonetary + patternFlowIpv4TosMonetaryMetricTagSlice []PatternFlowIpv4TosMonetaryMetricTag + fieldPtr *[]*otg.PatternFlowIpv4TosMonetaryMetricTag } -// Offset in bits relative to start of corresponding header field -// Offset returns a uint32 -func (obj *patternFlowGtpv1NextExtensionHeaderTypeMetricTag) HasOffset() bool { - return obj.obj.Offset != nil +func newPatternFlowIpv4TosMonetaryPatternFlowIpv4TosMonetaryMetricTagIter(ptr *[]*otg.PatternFlowIpv4TosMonetaryMetricTag) PatternFlowIpv4TosMonetaryPatternFlowIpv4TosMonetaryMetricTagIter { + return &patternFlowIpv4TosMonetaryPatternFlowIpv4TosMonetaryMetricTagIter{fieldPtr: ptr} } -// Offset in bits relative to start of corresponding header field -// SetOffset sets the uint32 value in the PatternFlowGtpv1NextExtensionHeaderTypeMetricTag object -func (obj *patternFlowGtpv1NextExtensionHeaderTypeMetricTag) SetOffset(value uint32) PatternFlowGtpv1NextExtensionHeaderTypeMetricTag { +type PatternFlowIpv4TosMonetaryPatternFlowIpv4TosMonetaryMetricTagIter interface { + setMsg(*patternFlowIpv4TosMonetary) PatternFlowIpv4TosMonetaryPatternFlowIpv4TosMonetaryMetricTagIter + Items() []PatternFlowIpv4TosMonetaryMetricTag + Add() PatternFlowIpv4TosMonetaryMetricTag + Append(items ...PatternFlowIpv4TosMonetaryMetricTag) PatternFlowIpv4TosMonetaryPatternFlowIpv4TosMonetaryMetricTagIter + Set(index int, newObj PatternFlowIpv4TosMonetaryMetricTag) PatternFlowIpv4TosMonetaryPatternFlowIpv4TosMonetaryMetricTagIter + Clear() PatternFlowIpv4TosMonetaryPatternFlowIpv4TosMonetaryMetricTagIter + clearHolderSlice() PatternFlowIpv4TosMonetaryPatternFlowIpv4TosMonetaryMetricTagIter + appendHolderSlice(item PatternFlowIpv4TosMonetaryMetricTag) PatternFlowIpv4TosMonetaryPatternFlowIpv4TosMonetaryMetricTagIter +} - obj.obj.Offset = &value +func (obj *patternFlowIpv4TosMonetaryPatternFlowIpv4TosMonetaryMetricTagIter) setMsg(msg *patternFlowIpv4TosMonetary) PatternFlowIpv4TosMonetaryPatternFlowIpv4TosMonetaryMetricTagIter { + obj.clearHolderSlice() + for _, val := range *obj.fieldPtr { + obj.appendHolderSlice(&patternFlowIpv4TosMonetaryMetricTag{obj: val}) + } + obj.obj = msg return obj } -// Number of bits to track for metrics starting from configured offset of corresponding header field -// Length returns a uint32 -func (obj *patternFlowGtpv1NextExtensionHeaderTypeMetricTag) Length() uint32 { - - return *obj.obj.Length - +func (obj *patternFlowIpv4TosMonetaryPatternFlowIpv4TosMonetaryMetricTagIter) Items() []PatternFlowIpv4TosMonetaryMetricTag { + return obj.patternFlowIpv4TosMonetaryMetricTagSlice } -// Number of bits to track for metrics starting from configured offset of corresponding header field -// Length returns a uint32 -func (obj *patternFlowGtpv1NextExtensionHeaderTypeMetricTag) HasLength() bool { - return obj.obj.Length != nil +func (obj *patternFlowIpv4TosMonetaryPatternFlowIpv4TosMonetaryMetricTagIter) Add() PatternFlowIpv4TosMonetaryMetricTag { + newObj := &otg.PatternFlowIpv4TosMonetaryMetricTag{} + *obj.fieldPtr = append(*obj.fieldPtr, newObj) + newLibObj := &patternFlowIpv4TosMonetaryMetricTag{obj: newObj} + newLibObj.setDefault() + obj.patternFlowIpv4TosMonetaryMetricTagSlice = append(obj.patternFlowIpv4TosMonetaryMetricTagSlice, newLibObj) + return newLibObj } -// Number of bits to track for metrics starting from configured offset of corresponding header field -// SetLength sets the uint32 value in the PatternFlowGtpv1NextExtensionHeaderTypeMetricTag object -func (obj *patternFlowGtpv1NextExtensionHeaderTypeMetricTag) SetLength(value uint32) PatternFlowGtpv1NextExtensionHeaderTypeMetricTag { +func (obj *patternFlowIpv4TosMonetaryPatternFlowIpv4TosMonetaryMetricTagIter) Append(items ...PatternFlowIpv4TosMonetaryMetricTag) PatternFlowIpv4TosMonetaryPatternFlowIpv4TosMonetaryMetricTagIter { + for _, item := range items { + newObj := item.Msg() + *obj.fieldPtr = append(*obj.fieldPtr, newObj) + obj.patternFlowIpv4TosMonetaryMetricTagSlice = append(obj.patternFlowIpv4TosMonetaryMetricTagSlice, item) + } + return obj +} - obj.obj.Length = &value +func (obj *patternFlowIpv4TosMonetaryPatternFlowIpv4TosMonetaryMetricTagIter) Set(index int, newObj PatternFlowIpv4TosMonetaryMetricTag) PatternFlowIpv4TosMonetaryPatternFlowIpv4TosMonetaryMetricTagIter { + (*obj.fieldPtr)[index] = newObj.Msg() + obj.patternFlowIpv4TosMonetaryMetricTagSlice[index] = newObj + return obj +} +func (obj *patternFlowIpv4TosMonetaryPatternFlowIpv4TosMonetaryMetricTagIter) Clear() PatternFlowIpv4TosMonetaryPatternFlowIpv4TosMonetaryMetricTagIter { + if len(*obj.fieldPtr) > 0 { + *obj.fieldPtr = []*otg.PatternFlowIpv4TosMonetaryMetricTag{} + obj.patternFlowIpv4TosMonetaryMetricTagSlice = []PatternFlowIpv4TosMonetaryMetricTag{} + } + return obj +} +func (obj *patternFlowIpv4TosMonetaryPatternFlowIpv4TosMonetaryMetricTagIter) clearHolderSlice() PatternFlowIpv4TosMonetaryPatternFlowIpv4TosMonetaryMetricTagIter { + if len(obj.patternFlowIpv4TosMonetaryMetricTagSlice) > 0 { + obj.patternFlowIpv4TosMonetaryMetricTagSlice = []PatternFlowIpv4TosMonetaryMetricTag{} + } + return obj +} +func (obj *patternFlowIpv4TosMonetaryPatternFlowIpv4TosMonetaryMetricTagIter) appendHolderSlice(item PatternFlowIpv4TosMonetaryMetricTag) PatternFlowIpv4TosMonetaryPatternFlowIpv4TosMonetaryMetricTagIter { + obj.patternFlowIpv4TosMonetaryMetricTagSlice = append(obj.patternFlowIpv4TosMonetaryMetricTagSlice, item) return obj } -func (obj *patternFlowGtpv1NextExtensionHeaderTypeMetricTag) validateObj(vObj *validation, set_default bool) { +func (obj *patternFlowIpv4TosMonetary) validateObj(vObj *validation, set_default bool) { if set_default { obj.setDefault() } - // Name is required - if obj.obj.Name == nil { - vObj.validationErrors = append(vObj.validationErrors, "Name is required field on interface PatternFlowGtpv1NextExtensionHeaderTypeMetricTag") - } - - if obj.obj.Offset != nil { + if obj.obj.Value != nil { - if *obj.obj.Offset > 7 { + if *obj.obj.Value > 1 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowGtpv1NextExtensionHeaderTypeMetricTag.Offset <= 7 but Got %d", *obj.obj.Offset)) + fmt.Sprintf("0 <= PatternFlowIpv4TosMonetary.Value <= 1 but Got %d", *obj.obj.Value)) } } - if obj.obj.Length != nil { + if obj.obj.Values != nil { + + for _, item := range obj.obj.Values { + if item > 1 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("min(uint32) <= PatternFlowIpv4TosMonetary.Values <= 1 but Got %d", item)) + } - if *obj.obj.Length < 1 || *obj.obj.Length > 8 { - vObj.validationErrors = append( - vObj.validationErrors, - fmt.Sprintf("1 <= PatternFlowGtpv1NextExtensionHeaderTypeMetricTag.Length <= 8 but Got %d", *obj.obj.Length)) } } -} + if obj.obj.Increment != nil { -func (obj *patternFlowGtpv1NextExtensionHeaderTypeMetricTag) setDefault() { - if obj.obj.Offset == nil { - obj.SetOffset(0) + obj.Increment().validateObj(vObj, set_default) } - if obj.obj.Length == nil { - obj.SetLength(8) + + if obj.obj.Decrement != nil { + + obj.Decrement().validateObj(vObj, set_default) + } + + if len(obj.obj.MetricTags) != 0 { + + if set_default { + obj.MetricTags().clearHolderSlice() + for _, item := range obj.obj.MetricTags { + obj.MetricTags().appendHolderSlice(&patternFlowIpv4TosMonetaryMetricTag{obj: item}) + } + } + for _, item := range obj.MetricTags().Items() { + item.validateObj(vObj, set_default) + } + } } -// ***** PatternFlowGtpExtensionExtensionLength ***** -type patternFlowGtpExtensionExtensionLength struct { +func (obj *patternFlowIpv4TosMonetary) setDefault() { + if obj.obj.Choice == nil { + obj.SetChoice(PatternFlowIpv4TosMonetaryChoice.VALUE) + + } + +} + +// ***** PatternFlowIpv4TosUnused ***** +type patternFlowIpv4TosUnused struct { validation - obj *otg.PatternFlowGtpExtensionExtensionLength - incrementHolder PatternFlowGtpExtensionExtensionLengthCounter - decrementHolder PatternFlowGtpExtensionExtensionLengthCounter - metricTagsHolder PatternFlowGtpExtensionExtensionLengthPatternFlowGtpExtensionExtensionLengthMetricTagIter + obj *otg.PatternFlowIpv4TosUnused + incrementHolder PatternFlowIpv4TosUnusedCounter + decrementHolder PatternFlowIpv4TosUnusedCounter + metricTagsHolder PatternFlowIpv4TosUnusedPatternFlowIpv4TosUnusedMetricTagIter } -func NewPatternFlowGtpExtensionExtensionLength() PatternFlowGtpExtensionExtensionLength { - obj := patternFlowGtpExtensionExtensionLength{obj: &otg.PatternFlowGtpExtensionExtensionLength{}} +func NewPatternFlowIpv4TosUnused() PatternFlowIpv4TosUnused { + obj := patternFlowIpv4TosUnused{obj: &otg.PatternFlowIpv4TosUnused{}} obj.setDefault() return &obj } -func (obj *patternFlowGtpExtensionExtensionLength) Msg() *otg.PatternFlowGtpExtensionExtensionLength { +func (obj *patternFlowIpv4TosUnused) Msg() *otg.PatternFlowIpv4TosUnused { return obj.obj } -func (obj *patternFlowGtpExtensionExtensionLength) SetMsg(msg *otg.PatternFlowGtpExtensionExtensionLength) PatternFlowGtpExtensionExtensionLength { +func (obj *patternFlowIpv4TosUnused) SetMsg(msg *otg.PatternFlowIpv4TosUnused) PatternFlowIpv4TosUnused { obj.setNil() proto.Merge(obj.obj, msg) return obj } -func (obj *patternFlowGtpExtensionExtensionLength) ToProto() (*otg.PatternFlowGtpExtensionExtensionLength, error) { +func (obj *patternFlowIpv4TosUnused) ToProto() (*otg.PatternFlowIpv4TosUnused, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -244920,7 +290194,7 @@ func (obj *patternFlowGtpExtensionExtensionLength) ToProto() (*otg.PatternFlowGt return obj.Msg(), nil } -func (obj *patternFlowGtpExtensionExtensionLength) FromProto(msg *otg.PatternFlowGtpExtensionExtensionLength) (PatternFlowGtpExtensionExtensionLength, error) { +func (obj *patternFlowIpv4TosUnused) FromProto(msg *otg.PatternFlowIpv4TosUnused) (PatternFlowIpv4TosUnused, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -244929,7 +290203,7 @@ func (obj *patternFlowGtpExtensionExtensionLength) FromProto(msg *otg.PatternFlo return newObj, nil } -func (obj *patternFlowGtpExtensionExtensionLength) ToPbText() (string, error) { +func (obj *patternFlowIpv4TosUnused) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -244941,7 +290215,7 @@ func (obj *patternFlowGtpExtensionExtensionLength) ToPbText() (string, error) { return string(protoMarshal), nil } -func (obj *patternFlowGtpExtensionExtensionLength) FromPbText(value string) error { +func (obj *patternFlowIpv4TosUnused) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj @@ -244954,7 +290228,7 @@ func (obj *patternFlowGtpExtensionExtensionLength) FromPbText(value string) erro return retObj } -func (obj *patternFlowGtpExtensionExtensionLength) ToYaml() (string, error) { +func (obj *patternFlowIpv4TosUnused) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -244975,7 +290249,7 @@ func (obj *patternFlowGtpExtensionExtensionLength) ToYaml() (string, error) { return string(data), nil } -func (obj *patternFlowGtpExtensionExtensionLength) FromYaml(value string) error { +func (obj *patternFlowIpv4TosUnused) FromYaml(value string) error { if value == "" { value = "{}" } @@ -245000,7 +290274,7 @@ func (obj *patternFlowGtpExtensionExtensionLength) FromYaml(value string) error return nil } -func (obj *patternFlowGtpExtensionExtensionLength) ToJson() (string, error) { +func (obj *patternFlowIpv4TosUnused) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -245018,7 +290292,7 @@ func (obj *patternFlowGtpExtensionExtensionLength) ToJson() (string, error) { return string(data), nil } -func (obj *patternFlowGtpExtensionExtensionLength) FromJson(value string) error { +func (obj *patternFlowIpv4TosUnused) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -245039,19 +290313,19 @@ func (obj *patternFlowGtpExtensionExtensionLength) FromJson(value string) error return nil } -func (obj *patternFlowGtpExtensionExtensionLength) validateToAndFrom() error { +func (obj *patternFlowIpv4TosUnused) validateToAndFrom() error { // emptyVars() obj.validateObj(&obj.validation, true) return obj.validationResult() } -func (obj *patternFlowGtpExtensionExtensionLength) Validate() error { +func (obj *patternFlowIpv4TosUnused) Validate() error { // emptyVars() obj.validateObj(&obj.validation, false) return obj.validationResult() } -func (obj *patternFlowGtpExtensionExtensionLength) String() string { +func (obj *patternFlowIpv4TosUnused) String() string { str, err := obj.ToYaml() if err != nil { return err.Error() @@ -245059,12 +290333,12 @@ func (obj *patternFlowGtpExtensionExtensionLength) String() string { return str } -func (obj *patternFlowGtpExtensionExtensionLength) Clone() (PatternFlowGtpExtensionExtensionLength, error) { +func (obj *patternFlowIpv4TosUnused) Clone() (PatternFlowIpv4TosUnused, error) { vErr := obj.Validate() if vErr != nil { return nil, vErr } - newObj := NewPatternFlowGtpExtensionExtensionLength() + newObj := NewPatternFlowIpv4TosUnused() data, err := proto.Marshal(obj.Msg()) if err != nil { return nil, err @@ -245076,7 +290350,7 @@ func (obj *patternFlowGtpExtensionExtensionLength) Clone() (PatternFlowGtpExtens return newObj, nil } -func (obj *patternFlowGtpExtensionExtensionLength) setNil() { +func (obj *patternFlowIpv4TosUnused) setNil() { obj.incrementHolder = nil obj.decrementHolder = nil obj.metricTagsHolder = nil @@ -245085,110 +290359,110 @@ func (obj *patternFlowGtpExtensionExtensionLength) setNil() { obj.constraints = make(map[string]map[string]Constraints) } -// PatternFlowGtpExtensionExtensionLength is this field states the length of this extension header, including the length, the contents, and the next extension header field, in 4-octet units, so the length of the extension must always be a multiple of 4. -type PatternFlowGtpExtensionExtensionLength interface { +// PatternFlowIpv4TosUnused is unused +type PatternFlowIpv4TosUnused interface { Validation - // Msg marshals PatternFlowGtpExtensionExtensionLength to protobuf object *otg.PatternFlowGtpExtensionExtensionLength + // Msg marshals PatternFlowIpv4TosUnused to protobuf object *otg.PatternFlowIpv4TosUnused // and doesn't set defaults - Msg() *otg.PatternFlowGtpExtensionExtensionLength - // SetMsg unmarshals PatternFlowGtpExtensionExtensionLength from protobuf object *otg.PatternFlowGtpExtensionExtensionLength + Msg() *otg.PatternFlowIpv4TosUnused + // SetMsg unmarshals PatternFlowIpv4TosUnused from protobuf object *otg.PatternFlowIpv4TosUnused // and doesn't set defaults - SetMsg(*otg.PatternFlowGtpExtensionExtensionLength) PatternFlowGtpExtensionExtensionLength - // ToProto marshals PatternFlowGtpExtensionExtensionLength to protobuf object *otg.PatternFlowGtpExtensionExtensionLength - ToProto() (*otg.PatternFlowGtpExtensionExtensionLength, error) - // ToPbText marshals PatternFlowGtpExtensionExtensionLength to protobuf text + SetMsg(*otg.PatternFlowIpv4TosUnused) PatternFlowIpv4TosUnused + // ToProto marshals PatternFlowIpv4TosUnused to protobuf object *otg.PatternFlowIpv4TosUnused + ToProto() (*otg.PatternFlowIpv4TosUnused, error) + // ToPbText marshals PatternFlowIpv4TosUnused to protobuf text ToPbText() (string, error) - // ToYaml marshals PatternFlowGtpExtensionExtensionLength to YAML text + // ToYaml marshals PatternFlowIpv4TosUnused to YAML text ToYaml() (string, error) - // ToJson marshals PatternFlowGtpExtensionExtensionLength to JSON text + // ToJson marshals PatternFlowIpv4TosUnused to JSON text ToJson() (string, error) - // FromProto unmarshals PatternFlowGtpExtensionExtensionLength from protobuf object *otg.PatternFlowGtpExtensionExtensionLength - FromProto(msg *otg.PatternFlowGtpExtensionExtensionLength) (PatternFlowGtpExtensionExtensionLength, error) - // FromPbText unmarshals PatternFlowGtpExtensionExtensionLength from protobuf text + // FromProto unmarshals PatternFlowIpv4TosUnused from protobuf object *otg.PatternFlowIpv4TosUnused + FromProto(msg *otg.PatternFlowIpv4TosUnused) (PatternFlowIpv4TosUnused, error) + // FromPbText unmarshals PatternFlowIpv4TosUnused from protobuf text FromPbText(value string) error - // FromYaml unmarshals PatternFlowGtpExtensionExtensionLength from YAML text + // FromYaml unmarshals PatternFlowIpv4TosUnused from YAML text FromYaml(value string) error - // FromJson unmarshals PatternFlowGtpExtensionExtensionLength from JSON text + // FromJson unmarshals PatternFlowIpv4TosUnused from JSON text FromJson(value string) error - // Validate validates PatternFlowGtpExtensionExtensionLength + // Validate validates PatternFlowIpv4TosUnused Validate() error // A stringer function String() string // Clones the object - Clone() (PatternFlowGtpExtensionExtensionLength, error) + Clone() (PatternFlowIpv4TosUnused, error) validateToAndFrom() error validateObj(vObj *validation, set_default bool) setDefault() - // Choice returns PatternFlowGtpExtensionExtensionLengthChoiceEnum, set in PatternFlowGtpExtensionExtensionLength - Choice() PatternFlowGtpExtensionExtensionLengthChoiceEnum - // SetChoice assigns PatternFlowGtpExtensionExtensionLengthChoiceEnum provided by user to PatternFlowGtpExtensionExtensionLength - SetChoice(value PatternFlowGtpExtensionExtensionLengthChoiceEnum) PatternFlowGtpExtensionExtensionLength - // HasChoice checks if Choice has been set in PatternFlowGtpExtensionExtensionLength + // Choice returns PatternFlowIpv4TosUnusedChoiceEnum, set in PatternFlowIpv4TosUnused + Choice() PatternFlowIpv4TosUnusedChoiceEnum + // SetChoice assigns PatternFlowIpv4TosUnusedChoiceEnum provided by user to PatternFlowIpv4TosUnused + SetChoice(value PatternFlowIpv4TosUnusedChoiceEnum) PatternFlowIpv4TosUnused + // HasChoice checks if Choice has been set in PatternFlowIpv4TosUnused HasChoice() bool - // Value returns uint32, set in PatternFlowGtpExtensionExtensionLength. + // Value returns uint32, set in PatternFlowIpv4TosUnused. Value() uint32 - // SetValue assigns uint32 provided by user to PatternFlowGtpExtensionExtensionLength - SetValue(value uint32) PatternFlowGtpExtensionExtensionLength - // HasValue checks if Value has been set in PatternFlowGtpExtensionExtensionLength + // SetValue assigns uint32 provided by user to PatternFlowIpv4TosUnused + SetValue(value uint32) PatternFlowIpv4TosUnused + // HasValue checks if Value has been set in PatternFlowIpv4TosUnused HasValue() bool - // Values returns []uint32, set in PatternFlowGtpExtensionExtensionLength. + // Values returns []uint32, set in PatternFlowIpv4TosUnused. Values() []uint32 - // SetValues assigns []uint32 provided by user to PatternFlowGtpExtensionExtensionLength - SetValues(value []uint32) PatternFlowGtpExtensionExtensionLength - // Increment returns PatternFlowGtpExtensionExtensionLengthCounter, set in PatternFlowGtpExtensionExtensionLength. - // PatternFlowGtpExtensionExtensionLengthCounter is integer counter pattern - Increment() PatternFlowGtpExtensionExtensionLengthCounter - // SetIncrement assigns PatternFlowGtpExtensionExtensionLengthCounter provided by user to PatternFlowGtpExtensionExtensionLength. - // PatternFlowGtpExtensionExtensionLengthCounter is integer counter pattern - SetIncrement(value PatternFlowGtpExtensionExtensionLengthCounter) PatternFlowGtpExtensionExtensionLength - // HasIncrement checks if Increment has been set in PatternFlowGtpExtensionExtensionLength + // SetValues assigns []uint32 provided by user to PatternFlowIpv4TosUnused + SetValues(value []uint32) PatternFlowIpv4TosUnused + // Increment returns PatternFlowIpv4TosUnusedCounter, set in PatternFlowIpv4TosUnused. + // PatternFlowIpv4TosUnusedCounter is integer counter pattern + Increment() PatternFlowIpv4TosUnusedCounter + // SetIncrement assigns PatternFlowIpv4TosUnusedCounter provided by user to PatternFlowIpv4TosUnused. + // PatternFlowIpv4TosUnusedCounter is integer counter pattern + SetIncrement(value PatternFlowIpv4TosUnusedCounter) PatternFlowIpv4TosUnused + // HasIncrement checks if Increment has been set in PatternFlowIpv4TosUnused HasIncrement() bool - // Decrement returns PatternFlowGtpExtensionExtensionLengthCounter, set in PatternFlowGtpExtensionExtensionLength. - // PatternFlowGtpExtensionExtensionLengthCounter is integer counter pattern - Decrement() PatternFlowGtpExtensionExtensionLengthCounter - // SetDecrement assigns PatternFlowGtpExtensionExtensionLengthCounter provided by user to PatternFlowGtpExtensionExtensionLength. - // PatternFlowGtpExtensionExtensionLengthCounter is integer counter pattern - SetDecrement(value PatternFlowGtpExtensionExtensionLengthCounter) PatternFlowGtpExtensionExtensionLength - // HasDecrement checks if Decrement has been set in PatternFlowGtpExtensionExtensionLength + // Decrement returns PatternFlowIpv4TosUnusedCounter, set in PatternFlowIpv4TosUnused. + // PatternFlowIpv4TosUnusedCounter is integer counter pattern + Decrement() PatternFlowIpv4TosUnusedCounter + // SetDecrement assigns PatternFlowIpv4TosUnusedCounter provided by user to PatternFlowIpv4TosUnused. + // PatternFlowIpv4TosUnusedCounter is integer counter pattern + SetDecrement(value PatternFlowIpv4TosUnusedCounter) PatternFlowIpv4TosUnused + // HasDecrement checks if Decrement has been set in PatternFlowIpv4TosUnused HasDecrement() bool - // MetricTags returns PatternFlowGtpExtensionExtensionLengthPatternFlowGtpExtensionExtensionLengthMetricTagIterIter, set in PatternFlowGtpExtensionExtensionLength - MetricTags() PatternFlowGtpExtensionExtensionLengthPatternFlowGtpExtensionExtensionLengthMetricTagIter + // MetricTags returns PatternFlowIpv4TosUnusedPatternFlowIpv4TosUnusedMetricTagIterIter, set in PatternFlowIpv4TosUnused + MetricTags() PatternFlowIpv4TosUnusedPatternFlowIpv4TosUnusedMetricTagIter setNil() } -type PatternFlowGtpExtensionExtensionLengthChoiceEnum string +type PatternFlowIpv4TosUnusedChoiceEnum string -// Enum of Choice on PatternFlowGtpExtensionExtensionLength -var PatternFlowGtpExtensionExtensionLengthChoice = struct { - VALUE PatternFlowGtpExtensionExtensionLengthChoiceEnum - VALUES PatternFlowGtpExtensionExtensionLengthChoiceEnum - INCREMENT PatternFlowGtpExtensionExtensionLengthChoiceEnum - DECREMENT PatternFlowGtpExtensionExtensionLengthChoiceEnum +// Enum of Choice on PatternFlowIpv4TosUnused +var PatternFlowIpv4TosUnusedChoice = struct { + VALUE PatternFlowIpv4TosUnusedChoiceEnum + VALUES PatternFlowIpv4TosUnusedChoiceEnum + INCREMENT PatternFlowIpv4TosUnusedChoiceEnum + DECREMENT PatternFlowIpv4TosUnusedChoiceEnum }{ - VALUE: PatternFlowGtpExtensionExtensionLengthChoiceEnum("value"), - VALUES: PatternFlowGtpExtensionExtensionLengthChoiceEnum("values"), - INCREMENT: PatternFlowGtpExtensionExtensionLengthChoiceEnum("increment"), - DECREMENT: PatternFlowGtpExtensionExtensionLengthChoiceEnum("decrement"), + VALUE: PatternFlowIpv4TosUnusedChoiceEnum("value"), + VALUES: PatternFlowIpv4TosUnusedChoiceEnum("values"), + INCREMENT: PatternFlowIpv4TosUnusedChoiceEnum("increment"), + DECREMENT: PatternFlowIpv4TosUnusedChoiceEnum("decrement"), } -func (obj *patternFlowGtpExtensionExtensionLength) Choice() PatternFlowGtpExtensionExtensionLengthChoiceEnum { - return PatternFlowGtpExtensionExtensionLengthChoiceEnum(obj.obj.Choice.Enum().String()) +func (obj *patternFlowIpv4TosUnused) Choice() PatternFlowIpv4TosUnusedChoiceEnum { + return PatternFlowIpv4TosUnusedChoiceEnum(obj.obj.Choice.Enum().String()) } // description is TBD // Choice returns a string -func (obj *patternFlowGtpExtensionExtensionLength) HasChoice() bool { +func (obj *patternFlowIpv4TosUnused) HasChoice() bool { return obj.obj.Choice != nil } -func (obj *patternFlowGtpExtensionExtensionLength) SetChoice(value PatternFlowGtpExtensionExtensionLengthChoiceEnum) PatternFlowGtpExtensionExtensionLength { - intValue, ok := otg.PatternFlowGtpExtensionExtensionLength_Choice_Enum_value[string(value)] +func (obj *patternFlowIpv4TosUnused) SetChoice(value PatternFlowIpv4TosUnusedChoiceEnum) PatternFlowIpv4TosUnused { + intValue, ok := otg.PatternFlowIpv4TosUnused_Choice_Enum_value[string(value)] if !ok { obj.validationErrors = append(obj.validationErrors, fmt.Sprintf( - "%s is not a valid choice on PatternFlowGtpExtensionExtensionLengthChoiceEnum", string(value))) + "%s is not a valid choice on PatternFlowIpv4TosUnusedChoiceEnum", string(value))) return obj } - enumValue := otg.PatternFlowGtpExtensionExtensionLength_Choice_Enum(intValue) + enumValue := otg.PatternFlowIpv4TosUnused_Choice_Enum(intValue) obj.obj.Choice = &enumValue obj.obj.Decrement = nil obj.decrementHolder = nil @@ -245197,22 +290471,22 @@ func (obj *patternFlowGtpExtensionExtensionLength) SetChoice(value PatternFlowGt obj.obj.Values = nil obj.obj.Value = nil - if value == PatternFlowGtpExtensionExtensionLengthChoice.VALUE { + if value == PatternFlowIpv4TosUnusedChoice.VALUE { defaultValue := uint32(0) obj.obj.Value = &defaultValue } - if value == PatternFlowGtpExtensionExtensionLengthChoice.VALUES { + if value == PatternFlowIpv4TosUnusedChoice.VALUES { defaultValue := []uint32{0} obj.obj.Values = defaultValue } - if value == PatternFlowGtpExtensionExtensionLengthChoice.INCREMENT { - obj.obj.Increment = NewPatternFlowGtpExtensionExtensionLengthCounter().Msg() + if value == PatternFlowIpv4TosUnusedChoice.INCREMENT { + obj.obj.Increment = NewPatternFlowIpv4TosUnusedCounter().Msg() } - if value == PatternFlowGtpExtensionExtensionLengthChoice.DECREMENT { - obj.obj.Decrement = NewPatternFlowGtpExtensionExtensionLengthCounter().Msg() + if value == PatternFlowIpv4TosUnusedChoice.DECREMENT { + obj.obj.Decrement = NewPatternFlowIpv4TosUnusedCounter().Msg() } return obj @@ -245220,10 +290494,10 @@ func (obj *patternFlowGtpExtensionExtensionLength) SetChoice(value PatternFlowGt // description is TBD // Value returns a uint32 -func (obj *patternFlowGtpExtensionExtensionLength) Value() uint32 { +func (obj *patternFlowIpv4TosUnused) Value() uint32 { if obj.obj.Value == nil { - obj.SetChoice(PatternFlowGtpExtensionExtensionLengthChoice.VALUE) + obj.SetChoice(PatternFlowIpv4TosUnusedChoice.VALUE) } return *obj.obj.Value @@ -245232,21 +290506,21 @@ func (obj *patternFlowGtpExtensionExtensionLength) Value() uint32 { // description is TBD // Value returns a uint32 -func (obj *patternFlowGtpExtensionExtensionLength) HasValue() bool { +func (obj *patternFlowIpv4TosUnused) HasValue() bool { return obj.obj.Value != nil } // description is TBD -// SetValue sets the uint32 value in the PatternFlowGtpExtensionExtensionLength object -func (obj *patternFlowGtpExtensionExtensionLength) SetValue(value uint32) PatternFlowGtpExtensionExtensionLength { - obj.SetChoice(PatternFlowGtpExtensionExtensionLengthChoice.VALUE) +// SetValue sets the uint32 value in the PatternFlowIpv4TosUnused object +func (obj *patternFlowIpv4TosUnused) SetValue(value uint32) PatternFlowIpv4TosUnused { + obj.SetChoice(PatternFlowIpv4TosUnusedChoice.VALUE) obj.obj.Value = &value return obj } // description is TBD // Values returns a []uint32 -func (obj *patternFlowGtpExtensionExtensionLength) Values() []uint32 { +func (obj *patternFlowIpv4TosUnused) Values() []uint32 { if obj.obj.Values == nil { obj.SetValues([]uint32{0}) } @@ -245254,9 +290528,9 @@ func (obj *patternFlowGtpExtensionExtensionLength) Values() []uint32 { } // description is TBD -// SetValues sets the []uint32 value in the PatternFlowGtpExtensionExtensionLength object -func (obj *patternFlowGtpExtensionExtensionLength) SetValues(value []uint32) PatternFlowGtpExtensionExtensionLength { - obj.SetChoice(PatternFlowGtpExtensionExtensionLengthChoice.VALUES) +// SetValues sets the []uint32 value in the PatternFlowIpv4TosUnused object +func (obj *patternFlowIpv4TosUnused) SetValues(value []uint32) PatternFlowIpv4TosUnused { + obj.SetChoice(PatternFlowIpv4TosUnusedChoice.VALUES) if obj.obj.Values == nil { obj.obj.Values = make([]uint32, 0) } @@ -245266,27 +290540,27 @@ func (obj *patternFlowGtpExtensionExtensionLength) SetValues(value []uint32) Pat } // description is TBD -// Increment returns a PatternFlowGtpExtensionExtensionLengthCounter -func (obj *patternFlowGtpExtensionExtensionLength) Increment() PatternFlowGtpExtensionExtensionLengthCounter { +// Increment returns a PatternFlowIpv4TosUnusedCounter +func (obj *patternFlowIpv4TosUnused) Increment() PatternFlowIpv4TosUnusedCounter { if obj.obj.Increment == nil { - obj.SetChoice(PatternFlowGtpExtensionExtensionLengthChoice.INCREMENT) + obj.SetChoice(PatternFlowIpv4TosUnusedChoice.INCREMENT) } if obj.incrementHolder == nil { - obj.incrementHolder = &patternFlowGtpExtensionExtensionLengthCounter{obj: obj.obj.Increment} + obj.incrementHolder = &patternFlowIpv4TosUnusedCounter{obj: obj.obj.Increment} } return obj.incrementHolder } // description is TBD -// Increment returns a PatternFlowGtpExtensionExtensionLengthCounter -func (obj *patternFlowGtpExtensionExtensionLength) HasIncrement() bool { +// Increment returns a PatternFlowIpv4TosUnusedCounter +func (obj *patternFlowIpv4TosUnused) HasIncrement() bool { return obj.obj.Increment != nil } // description is TBD -// SetIncrement sets the PatternFlowGtpExtensionExtensionLengthCounter value in the PatternFlowGtpExtensionExtensionLength object -func (obj *patternFlowGtpExtensionExtensionLength) SetIncrement(value PatternFlowGtpExtensionExtensionLengthCounter) PatternFlowGtpExtensionExtensionLength { - obj.SetChoice(PatternFlowGtpExtensionExtensionLengthChoice.INCREMENT) +// SetIncrement sets the PatternFlowIpv4TosUnusedCounter value in the PatternFlowIpv4TosUnused object +func (obj *patternFlowIpv4TosUnused) SetIncrement(value PatternFlowIpv4TosUnusedCounter) PatternFlowIpv4TosUnused { + obj.SetChoice(PatternFlowIpv4TosUnusedChoice.INCREMENT) obj.incrementHolder = nil obj.obj.Increment = value.Msg() @@ -245294,27 +290568,27 @@ func (obj *patternFlowGtpExtensionExtensionLength) SetIncrement(value PatternFlo } // description is TBD -// Decrement returns a PatternFlowGtpExtensionExtensionLengthCounter -func (obj *patternFlowGtpExtensionExtensionLength) Decrement() PatternFlowGtpExtensionExtensionLengthCounter { +// Decrement returns a PatternFlowIpv4TosUnusedCounter +func (obj *patternFlowIpv4TosUnused) Decrement() PatternFlowIpv4TosUnusedCounter { if obj.obj.Decrement == nil { - obj.SetChoice(PatternFlowGtpExtensionExtensionLengthChoice.DECREMENT) + obj.SetChoice(PatternFlowIpv4TosUnusedChoice.DECREMENT) } if obj.decrementHolder == nil { - obj.decrementHolder = &patternFlowGtpExtensionExtensionLengthCounter{obj: obj.obj.Decrement} + obj.decrementHolder = &patternFlowIpv4TosUnusedCounter{obj: obj.obj.Decrement} } return obj.decrementHolder } // description is TBD -// Decrement returns a PatternFlowGtpExtensionExtensionLengthCounter -func (obj *patternFlowGtpExtensionExtensionLength) HasDecrement() bool { +// Decrement returns a PatternFlowIpv4TosUnusedCounter +func (obj *patternFlowIpv4TosUnused) HasDecrement() bool { return obj.obj.Decrement != nil } // description is TBD -// SetDecrement sets the PatternFlowGtpExtensionExtensionLengthCounter value in the PatternFlowGtpExtensionExtensionLength object -func (obj *patternFlowGtpExtensionExtensionLength) SetDecrement(value PatternFlowGtpExtensionExtensionLengthCounter) PatternFlowGtpExtensionExtensionLength { - obj.SetChoice(PatternFlowGtpExtensionExtensionLengthChoice.DECREMENT) +// SetDecrement sets the PatternFlowIpv4TosUnusedCounter value in the PatternFlowIpv4TosUnused object +func (obj *patternFlowIpv4TosUnused) SetDecrement(value PatternFlowIpv4TosUnusedCounter) PatternFlowIpv4TosUnused { + obj.SetChoice(PatternFlowIpv4TosUnusedChoice.DECREMENT) obj.decrementHolder = nil obj.obj.Decrement = value.Msg() @@ -245322,103 +290596,103 @@ func (obj *patternFlowGtpExtensionExtensionLength) SetDecrement(value PatternFlo } // One or more metric tags can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. -// MetricTags returns a []PatternFlowGtpExtensionExtensionLengthMetricTag -func (obj *patternFlowGtpExtensionExtensionLength) MetricTags() PatternFlowGtpExtensionExtensionLengthPatternFlowGtpExtensionExtensionLengthMetricTagIter { +// MetricTags returns a []PatternFlowIpv4TosUnusedMetricTag +func (obj *patternFlowIpv4TosUnused) MetricTags() PatternFlowIpv4TosUnusedPatternFlowIpv4TosUnusedMetricTagIter { if len(obj.obj.MetricTags) == 0 { - obj.obj.MetricTags = []*otg.PatternFlowGtpExtensionExtensionLengthMetricTag{} + obj.obj.MetricTags = []*otg.PatternFlowIpv4TosUnusedMetricTag{} } if obj.metricTagsHolder == nil { - obj.metricTagsHolder = newPatternFlowGtpExtensionExtensionLengthPatternFlowGtpExtensionExtensionLengthMetricTagIter(&obj.obj.MetricTags).setMsg(obj) + obj.metricTagsHolder = newPatternFlowIpv4TosUnusedPatternFlowIpv4TosUnusedMetricTagIter(&obj.obj.MetricTags).setMsg(obj) } return obj.metricTagsHolder } -type patternFlowGtpExtensionExtensionLengthPatternFlowGtpExtensionExtensionLengthMetricTagIter struct { - obj *patternFlowGtpExtensionExtensionLength - patternFlowGtpExtensionExtensionLengthMetricTagSlice []PatternFlowGtpExtensionExtensionLengthMetricTag - fieldPtr *[]*otg.PatternFlowGtpExtensionExtensionLengthMetricTag +type patternFlowIpv4TosUnusedPatternFlowIpv4TosUnusedMetricTagIter struct { + obj *patternFlowIpv4TosUnused + patternFlowIpv4TosUnusedMetricTagSlice []PatternFlowIpv4TosUnusedMetricTag + fieldPtr *[]*otg.PatternFlowIpv4TosUnusedMetricTag } -func newPatternFlowGtpExtensionExtensionLengthPatternFlowGtpExtensionExtensionLengthMetricTagIter(ptr *[]*otg.PatternFlowGtpExtensionExtensionLengthMetricTag) PatternFlowGtpExtensionExtensionLengthPatternFlowGtpExtensionExtensionLengthMetricTagIter { - return &patternFlowGtpExtensionExtensionLengthPatternFlowGtpExtensionExtensionLengthMetricTagIter{fieldPtr: ptr} +func newPatternFlowIpv4TosUnusedPatternFlowIpv4TosUnusedMetricTagIter(ptr *[]*otg.PatternFlowIpv4TosUnusedMetricTag) PatternFlowIpv4TosUnusedPatternFlowIpv4TosUnusedMetricTagIter { + return &patternFlowIpv4TosUnusedPatternFlowIpv4TosUnusedMetricTagIter{fieldPtr: ptr} } -type PatternFlowGtpExtensionExtensionLengthPatternFlowGtpExtensionExtensionLengthMetricTagIter interface { - setMsg(*patternFlowGtpExtensionExtensionLength) PatternFlowGtpExtensionExtensionLengthPatternFlowGtpExtensionExtensionLengthMetricTagIter - Items() []PatternFlowGtpExtensionExtensionLengthMetricTag - Add() PatternFlowGtpExtensionExtensionLengthMetricTag - Append(items ...PatternFlowGtpExtensionExtensionLengthMetricTag) PatternFlowGtpExtensionExtensionLengthPatternFlowGtpExtensionExtensionLengthMetricTagIter - Set(index int, newObj PatternFlowGtpExtensionExtensionLengthMetricTag) PatternFlowGtpExtensionExtensionLengthPatternFlowGtpExtensionExtensionLengthMetricTagIter - Clear() PatternFlowGtpExtensionExtensionLengthPatternFlowGtpExtensionExtensionLengthMetricTagIter - clearHolderSlice() PatternFlowGtpExtensionExtensionLengthPatternFlowGtpExtensionExtensionLengthMetricTagIter - appendHolderSlice(item PatternFlowGtpExtensionExtensionLengthMetricTag) PatternFlowGtpExtensionExtensionLengthPatternFlowGtpExtensionExtensionLengthMetricTagIter +type PatternFlowIpv4TosUnusedPatternFlowIpv4TosUnusedMetricTagIter interface { + setMsg(*patternFlowIpv4TosUnused) PatternFlowIpv4TosUnusedPatternFlowIpv4TosUnusedMetricTagIter + Items() []PatternFlowIpv4TosUnusedMetricTag + Add() PatternFlowIpv4TosUnusedMetricTag + Append(items ...PatternFlowIpv4TosUnusedMetricTag) PatternFlowIpv4TosUnusedPatternFlowIpv4TosUnusedMetricTagIter + Set(index int, newObj PatternFlowIpv4TosUnusedMetricTag) PatternFlowIpv4TosUnusedPatternFlowIpv4TosUnusedMetricTagIter + Clear() PatternFlowIpv4TosUnusedPatternFlowIpv4TosUnusedMetricTagIter + clearHolderSlice() PatternFlowIpv4TosUnusedPatternFlowIpv4TosUnusedMetricTagIter + appendHolderSlice(item PatternFlowIpv4TosUnusedMetricTag) PatternFlowIpv4TosUnusedPatternFlowIpv4TosUnusedMetricTagIter } -func (obj *patternFlowGtpExtensionExtensionLengthPatternFlowGtpExtensionExtensionLengthMetricTagIter) setMsg(msg *patternFlowGtpExtensionExtensionLength) PatternFlowGtpExtensionExtensionLengthPatternFlowGtpExtensionExtensionLengthMetricTagIter { +func (obj *patternFlowIpv4TosUnusedPatternFlowIpv4TosUnusedMetricTagIter) setMsg(msg *patternFlowIpv4TosUnused) PatternFlowIpv4TosUnusedPatternFlowIpv4TosUnusedMetricTagIter { obj.clearHolderSlice() for _, val := range *obj.fieldPtr { - obj.appendHolderSlice(&patternFlowGtpExtensionExtensionLengthMetricTag{obj: val}) + obj.appendHolderSlice(&patternFlowIpv4TosUnusedMetricTag{obj: val}) } obj.obj = msg return obj } -func (obj *patternFlowGtpExtensionExtensionLengthPatternFlowGtpExtensionExtensionLengthMetricTagIter) Items() []PatternFlowGtpExtensionExtensionLengthMetricTag { - return obj.patternFlowGtpExtensionExtensionLengthMetricTagSlice +func (obj *patternFlowIpv4TosUnusedPatternFlowIpv4TosUnusedMetricTagIter) Items() []PatternFlowIpv4TosUnusedMetricTag { + return obj.patternFlowIpv4TosUnusedMetricTagSlice } -func (obj *patternFlowGtpExtensionExtensionLengthPatternFlowGtpExtensionExtensionLengthMetricTagIter) Add() PatternFlowGtpExtensionExtensionLengthMetricTag { - newObj := &otg.PatternFlowGtpExtensionExtensionLengthMetricTag{} +func (obj *patternFlowIpv4TosUnusedPatternFlowIpv4TosUnusedMetricTagIter) Add() PatternFlowIpv4TosUnusedMetricTag { + newObj := &otg.PatternFlowIpv4TosUnusedMetricTag{} *obj.fieldPtr = append(*obj.fieldPtr, newObj) - newLibObj := &patternFlowGtpExtensionExtensionLengthMetricTag{obj: newObj} + newLibObj := &patternFlowIpv4TosUnusedMetricTag{obj: newObj} newLibObj.setDefault() - obj.patternFlowGtpExtensionExtensionLengthMetricTagSlice = append(obj.patternFlowGtpExtensionExtensionLengthMetricTagSlice, newLibObj) + obj.patternFlowIpv4TosUnusedMetricTagSlice = append(obj.patternFlowIpv4TosUnusedMetricTagSlice, newLibObj) return newLibObj } -func (obj *patternFlowGtpExtensionExtensionLengthPatternFlowGtpExtensionExtensionLengthMetricTagIter) Append(items ...PatternFlowGtpExtensionExtensionLengthMetricTag) PatternFlowGtpExtensionExtensionLengthPatternFlowGtpExtensionExtensionLengthMetricTagIter { +func (obj *patternFlowIpv4TosUnusedPatternFlowIpv4TosUnusedMetricTagIter) Append(items ...PatternFlowIpv4TosUnusedMetricTag) PatternFlowIpv4TosUnusedPatternFlowIpv4TosUnusedMetricTagIter { for _, item := range items { newObj := item.Msg() *obj.fieldPtr = append(*obj.fieldPtr, newObj) - obj.patternFlowGtpExtensionExtensionLengthMetricTagSlice = append(obj.patternFlowGtpExtensionExtensionLengthMetricTagSlice, item) + obj.patternFlowIpv4TosUnusedMetricTagSlice = append(obj.patternFlowIpv4TosUnusedMetricTagSlice, item) } return obj } -func (obj *patternFlowGtpExtensionExtensionLengthPatternFlowGtpExtensionExtensionLengthMetricTagIter) Set(index int, newObj PatternFlowGtpExtensionExtensionLengthMetricTag) PatternFlowGtpExtensionExtensionLengthPatternFlowGtpExtensionExtensionLengthMetricTagIter { +func (obj *patternFlowIpv4TosUnusedPatternFlowIpv4TosUnusedMetricTagIter) Set(index int, newObj PatternFlowIpv4TosUnusedMetricTag) PatternFlowIpv4TosUnusedPatternFlowIpv4TosUnusedMetricTagIter { (*obj.fieldPtr)[index] = newObj.Msg() - obj.patternFlowGtpExtensionExtensionLengthMetricTagSlice[index] = newObj + obj.patternFlowIpv4TosUnusedMetricTagSlice[index] = newObj return obj } -func (obj *patternFlowGtpExtensionExtensionLengthPatternFlowGtpExtensionExtensionLengthMetricTagIter) Clear() PatternFlowGtpExtensionExtensionLengthPatternFlowGtpExtensionExtensionLengthMetricTagIter { +func (obj *patternFlowIpv4TosUnusedPatternFlowIpv4TosUnusedMetricTagIter) Clear() PatternFlowIpv4TosUnusedPatternFlowIpv4TosUnusedMetricTagIter { if len(*obj.fieldPtr) > 0 { - *obj.fieldPtr = []*otg.PatternFlowGtpExtensionExtensionLengthMetricTag{} - obj.patternFlowGtpExtensionExtensionLengthMetricTagSlice = []PatternFlowGtpExtensionExtensionLengthMetricTag{} + *obj.fieldPtr = []*otg.PatternFlowIpv4TosUnusedMetricTag{} + obj.patternFlowIpv4TosUnusedMetricTagSlice = []PatternFlowIpv4TosUnusedMetricTag{} } return obj } -func (obj *patternFlowGtpExtensionExtensionLengthPatternFlowGtpExtensionExtensionLengthMetricTagIter) clearHolderSlice() PatternFlowGtpExtensionExtensionLengthPatternFlowGtpExtensionExtensionLengthMetricTagIter { - if len(obj.patternFlowGtpExtensionExtensionLengthMetricTagSlice) > 0 { - obj.patternFlowGtpExtensionExtensionLengthMetricTagSlice = []PatternFlowGtpExtensionExtensionLengthMetricTag{} +func (obj *patternFlowIpv4TosUnusedPatternFlowIpv4TosUnusedMetricTagIter) clearHolderSlice() PatternFlowIpv4TosUnusedPatternFlowIpv4TosUnusedMetricTagIter { + if len(obj.patternFlowIpv4TosUnusedMetricTagSlice) > 0 { + obj.patternFlowIpv4TosUnusedMetricTagSlice = []PatternFlowIpv4TosUnusedMetricTag{} } return obj } -func (obj *patternFlowGtpExtensionExtensionLengthPatternFlowGtpExtensionExtensionLengthMetricTagIter) appendHolderSlice(item PatternFlowGtpExtensionExtensionLengthMetricTag) PatternFlowGtpExtensionExtensionLengthPatternFlowGtpExtensionExtensionLengthMetricTagIter { - obj.patternFlowGtpExtensionExtensionLengthMetricTagSlice = append(obj.patternFlowGtpExtensionExtensionLengthMetricTagSlice, item) +func (obj *patternFlowIpv4TosUnusedPatternFlowIpv4TosUnusedMetricTagIter) appendHolderSlice(item PatternFlowIpv4TosUnusedMetricTag) PatternFlowIpv4TosUnusedPatternFlowIpv4TosUnusedMetricTagIter { + obj.patternFlowIpv4TosUnusedMetricTagSlice = append(obj.patternFlowIpv4TosUnusedMetricTagSlice, item) return obj } -func (obj *patternFlowGtpExtensionExtensionLength) validateObj(vObj *validation, set_default bool) { +func (obj *patternFlowIpv4TosUnused) validateObj(vObj *validation, set_default bool) { if set_default { obj.setDefault() } if obj.obj.Value != nil { - if *obj.obj.Value > 255 { + if *obj.obj.Value > 1 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowGtpExtensionExtensionLength.Value <= 255 but Got %d", *obj.obj.Value)) + fmt.Sprintf("0 <= PatternFlowIpv4TosUnused.Value <= 1 but Got %d", *obj.obj.Value)) } } @@ -245426,10 +290700,10 @@ func (obj *patternFlowGtpExtensionExtensionLength) validateObj(vObj *validation, if obj.obj.Values != nil { for _, item := range obj.obj.Values { - if item > 255 { + if item > 1 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("min(uint32) <= PatternFlowGtpExtensionExtensionLength.Values <= 255 but Got %d", item)) + fmt.Sprintf("min(uint32) <= PatternFlowIpv4TosUnused.Values <= 1 but Got %d", item)) } } @@ -245451,7 +290725,7 @@ func (obj *patternFlowGtpExtensionExtensionLength) validateObj(vObj *validation, if set_default { obj.MetricTags().clearHolderSlice() for _, item := range obj.obj.MetricTags { - obj.MetricTags().appendHolderSlice(&patternFlowGtpExtensionExtensionLengthMetricTag{obj: item}) + obj.MetricTags().appendHolderSlice(&patternFlowIpv4TosUnusedMetricTag{obj: item}) } } for _, item := range obj.MetricTags().Items() { @@ -245462,40 +290736,40 @@ func (obj *patternFlowGtpExtensionExtensionLength) validateObj(vObj *validation, } -func (obj *patternFlowGtpExtensionExtensionLength) setDefault() { +func (obj *patternFlowIpv4TosUnused) setDefault() { if obj.obj.Choice == nil { - obj.SetChoice(PatternFlowGtpExtensionExtensionLengthChoice.VALUE) + obj.SetChoice(PatternFlowIpv4TosUnusedChoice.VALUE) } } -// ***** PatternFlowGtpExtensionContents ***** -type patternFlowGtpExtensionContents struct { +// ***** PatternFlowIpv4DscpPhb ***** +type patternFlowIpv4DscpPhb struct { validation - obj *otg.PatternFlowGtpExtensionContents - incrementHolder PatternFlowGtpExtensionContentsCounter - decrementHolder PatternFlowGtpExtensionContentsCounter - metricTagsHolder PatternFlowGtpExtensionContentsPatternFlowGtpExtensionContentsMetricTagIter + obj *otg.PatternFlowIpv4DscpPhb + incrementHolder PatternFlowIpv4DscpPhbCounter + decrementHolder PatternFlowIpv4DscpPhbCounter + metricTagsHolder PatternFlowIpv4DscpPhbPatternFlowIpv4DscpPhbMetricTagIter } -func NewPatternFlowGtpExtensionContents() PatternFlowGtpExtensionContents { - obj := patternFlowGtpExtensionContents{obj: &otg.PatternFlowGtpExtensionContents{}} +func NewPatternFlowIpv4DscpPhb() PatternFlowIpv4DscpPhb { + obj := patternFlowIpv4DscpPhb{obj: &otg.PatternFlowIpv4DscpPhb{}} obj.setDefault() return &obj } -func (obj *patternFlowGtpExtensionContents) Msg() *otg.PatternFlowGtpExtensionContents { +func (obj *patternFlowIpv4DscpPhb) Msg() *otg.PatternFlowIpv4DscpPhb { return obj.obj } -func (obj *patternFlowGtpExtensionContents) SetMsg(msg *otg.PatternFlowGtpExtensionContents) PatternFlowGtpExtensionContents { +func (obj *patternFlowIpv4DscpPhb) SetMsg(msg *otg.PatternFlowIpv4DscpPhb) PatternFlowIpv4DscpPhb { obj.setNil() proto.Merge(obj.obj, msg) return obj } -func (obj *patternFlowGtpExtensionContents) ToProto() (*otg.PatternFlowGtpExtensionContents, error) { +func (obj *patternFlowIpv4DscpPhb) ToProto() (*otg.PatternFlowIpv4DscpPhb, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -245503,7 +290777,7 @@ func (obj *patternFlowGtpExtensionContents) ToProto() (*otg.PatternFlowGtpExtens return obj.Msg(), nil } -func (obj *patternFlowGtpExtensionContents) FromProto(msg *otg.PatternFlowGtpExtensionContents) (PatternFlowGtpExtensionContents, error) { +func (obj *patternFlowIpv4DscpPhb) FromProto(msg *otg.PatternFlowIpv4DscpPhb) (PatternFlowIpv4DscpPhb, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -245512,7 +290786,7 @@ func (obj *patternFlowGtpExtensionContents) FromProto(msg *otg.PatternFlowGtpExt return newObj, nil } -func (obj *patternFlowGtpExtensionContents) ToPbText() (string, error) { +func (obj *patternFlowIpv4DscpPhb) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -245524,7 +290798,7 @@ func (obj *patternFlowGtpExtensionContents) ToPbText() (string, error) { return string(protoMarshal), nil } -func (obj *patternFlowGtpExtensionContents) FromPbText(value string) error { +func (obj *patternFlowIpv4DscpPhb) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj @@ -245537,7 +290811,7 @@ func (obj *patternFlowGtpExtensionContents) FromPbText(value string) error { return retObj } -func (obj *patternFlowGtpExtensionContents) ToYaml() (string, error) { +func (obj *patternFlowIpv4DscpPhb) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -245558,7 +290832,7 @@ func (obj *patternFlowGtpExtensionContents) ToYaml() (string, error) { return string(data), nil } -func (obj *patternFlowGtpExtensionContents) FromYaml(value string) error { +func (obj *patternFlowIpv4DscpPhb) FromYaml(value string) error { if value == "" { value = "{}" } @@ -245583,7 +290857,7 @@ func (obj *patternFlowGtpExtensionContents) FromYaml(value string) error { return nil } -func (obj *patternFlowGtpExtensionContents) ToJson() (string, error) { +func (obj *patternFlowIpv4DscpPhb) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -245601,7 +290875,7 @@ func (obj *patternFlowGtpExtensionContents) ToJson() (string, error) { return string(data), nil } -func (obj *patternFlowGtpExtensionContents) FromJson(value string) error { +func (obj *patternFlowIpv4DscpPhb) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -245622,19 +290896,19 @@ func (obj *patternFlowGtpExtensionContents) FromJson(value string) error { return nil } -func (obj *patternFlowGtpExtensionContents) validateToAndFrom() error { +func (obj *patternFlowIpv4DscpPhb) validateToAndFrom() error { // emptyVars() obj.validateObj(&obj.validation, true) return obj.validationResult() } -func (obj *patternFlowGtpExtensionContents) Validate() error { +func (obj *patternFlowIpv4DscpPhb) Validate() error { // emptyVars() obj.validateObj(&obj.validation, false) return obj.validationResult() } -func (obj *patternFlowGtpExtensionContents) String() string { +func (obj *patternFlowIpv4DscpPhb) String() string { str, err := obj.ToYaml() if err != nil { return err.Error() @@ -245642,12 +290916,12 @@ func (obj *patternFlowGtpExtensionContents) String() string { return str } -func (obj *patternFlowGtpExtensionContents) Clone() (PatternFlowGtpExtensionContents, error) { +func (obj *patternFlowIpv4DscpPhb) Clone() (PatternFlowIpv4DscpPhb, error) { vErr := obj.Validate() if vErr != nil { return nil, vErr } - newObj := NewPatternFlowGtpExtensionContents() + newObj := NewPatternFlowIpv4DscpPhb() data, err := proto.Marshal(obj.Msg()) if err != nil { return nil, err @@ -245659,7 +290933,7 @@ func (obj *patternFlowGtpExtensionContents) Clone() (PatternFlowGtpExtensionCont return newObj, nil } -func (obj *patternFlowGtpExtensionContents) setNil() { +func (obj *patternFlowIpv4DscpPhb) setNil() { obj.incrementHolder = nil obj.decrementHolder = nil obj.metricTagsHolder = nil @@ -245668,110 +290942,110 @@ func (obj *patternFlowGtpExtensionContents) setNil() { obj.constraints = make(map[string]map[string]Constraints) } -// PatternFlowGtpExtensionContents is the extension header contents -type PatternFlowGtpExtensionContents interface { +// PatternFlowIpv4DscpPhb is per hop behavior +type PatternFlowIpv4DscpPhb interface { Validation - // Msg marshals PatternFlowGtpExtensionContents to protobuf object *otg.PatternFlowGtpExtensionContents + // Msg marshals PatternFlowIpv4DscpPhb to protobuf object *otg.PatternFlowIpv4DscpPhb // and doesn't set defaults - Msg() *otg.PatternFlowGtpExtensionContents - // SetMsg unmarshals PatternFlowGtpExtensionContents from protobuf object *otg.PatternFlowGtpExtensionContents + Msg() *otg.PatternFlowIpv4DscpPhb + // SetMsg unmarshals PatternFlowIpv4DscpPhb from protobuf object *otg.PatternFlowIpv4DscpPhb // and doesn't set defaults - SetMsg(*otg.PatternFlowGtpExtensionContents) PatternFlowGtpExtensionContents - // ToProto marshals PatternFlowGtpExtensionContents to protobuf object *otg.PatternFlowGtpExtensionContents - ToProto() (*otg.PatternFlowGtpExtensionContents, error) - // ToPbText marshals PatternFlowGtpExtensionContents to protobuf text + SetMsg(*otg.PatternFlowIpv4DscpPhb) PatternFlowIpv4DscpPhb + // ToProto marshals PatternFlowIpv4DscpPhb to protobuf object *otg.PatternFlowIpv4DscpPhb + ToProto() (*otg.PatternFlowIpv4DscpPhb, error) + // ToPbText marshals PatternFlowIpv4DscpPhb to protobuf text ToPbText() (string, error) - // ToYaml marshals PatternFlowGtpExtensionContents to YAML text + // ToYaml marshals PatternFlowIpv4DscpPhb to YAML text ToYaml() (string, error) - // ToJson marshals PatternFlowGtpExtensionContents to JSON text + // ToJson marshals PatternFlowIpv4DscpPhb to JSON text ToJson() (string, error) - // FromProto unmarshals PatternFlowGtpExtensionContents from protobuf object *otg.PatternFlowGtpExtensionContents - FromProto(msg *otg.PatternFlowGtpExtensionContents) (PatternFlowGtpExtensionContents, error) - // FromPbText unmarshals PatternFlowGtpExtensionContents from protobuf text + // FromProto unmarshals PatternFlowIpv4DscpPhb from protobuf object *otg.PatternFlowIpv4DscpPhb + FromProto(msg *otg.PatternFlowIpv4DscpPhb) (PatternFlowIpv4DscpPhb, error) + // FromPbText unmarshals PatternFlowIpv4DscpPhb from protobuf text FromPbText(value string) error - // FromYaml unmarshals PatternFlowGtpExtensionContents from YAML text + // FromYaml unmarshals PatternFlowIpv4DscpPhb from YAML text FromYaml(value string) error - // FromJson unmarshals PatternFlowGtpExtensionContents from JSON text + // FromJson unmarshals PatternFlowIpv4DscpPhb from JSON text FromJson(value string) error - // Validate validates PatternFlowGtpExtensionContents + // Validate validates PatternFlowIpv4DscpPhb Validate() error // A stringer function String() string // Clones the object - Clone() (PatternFlowGtpExtensionContents, error) + Clone() (PatternFlowIpv4DscpPhb, error) validateToAndFrom() error validateObj(vObj *validation, set_default bool) setDefault() - // Choice returns PatternFlowGtpExtensionContentsChoiceEnum, set in PatternFlowGtpExtensionContents - Choice() PatternFlowGtpExtensionContentsChoiceEnum - // SetChoice assigns PatternFlowGtpExtensionContentsChoiceEnum provided by user to PatternFlowGtpExtensionContents - SetChoice(value PatternFlowGtpExtensionContentsChoiceEnum) PatternFlowGtpExtensionContents - // HasChoice checks if Choice has been set in PatternFlowGtpExtensionContents + // Choice returns PatternFlowIpv4DscpPhbChoiceEnum, set in PatternFlowIpv4DscpPhb + Choice() PatternFlowIpv4DscpPhbChoiceEnum + // SetChoice assigns PatternFlowIpv4DscpPhbChoiceEnum provided by user to PatternFlowIpv4DscpPhb + SetChoice(value PatternFlowIpv4DscpPhbChoiceEnum) PatternFlowIpv4DscpPhb + // HasChoice checks if Choice has been set in PatternFlowIpv4DscpPhb HasChoice() bool - // Value returns uint64, set in PatternFlowGtpExtensionContents. - Value() uint64 - // SetValue assigns uint64 provided by user to PatternFlowGtpExtensionContents - SetValue(value uint64) PatternFlowGtpExtensionContents - // HasValue checks if Value has been set in PatternFlowGtpExtensionContents + // Value returns uint32, set in PatternFlowIpv4DscpPhb. + Value() uint32 + // SetValue assigns uint32 provided by user to PatternFlowIpv4DscpPhb + SetValue(value uint32) PatternFlowIpv4DscpPhb + // HasValue checks if Value has been set in PatternFlowIpv4DscpPhb HasValue() bool - // Values returns []uint64, set in PatternFlowGtpExtensionContents. - Values() []uint64 - // SetValues assigns []uint64 provided by user to PatternFlowGtpExtensionContents - SetValues(value []uint64) PatternFlowGtpExtensionContents - // Increment returns PatternFlowGtpExtensionContentsCounter, set in PatternFlowGtpExtensionContents. - // PatternFlowGtpExtensionContentsCounter is integer counter pattern - Increment() PatternFlowGtpExtensionContentsCounter - // SetIncrement assigns PatternFlowGtpExtensionContentsCounter provided by user to PatternFlowGtpExtensionContents. - // PatternFlowGtpExtensionContentsCounter is integer counter pattern - SetIncrement(value PatternFlowGtpExtensionContentsCounter) PatternFlowGtpExtensionContents - // HasIncrement checks if Increment has been set in PatternFlowGtpExtensionContents + // Values returns []uint32, set in PatternFlowIpv4DscpPhb. + Values() []uint32 + // SetValues assigns []uint32 provided by user to PatternFlowIpv4DscpPhb + SetValues(value []uint32) PatternFlowIpv4DscpPhb + // Increment returns PatternFlowIpv4DscpPhbCounter, set in PatternFlowIpv4DscpPhb. + // PatternFlowIpv4DscpPhbCounter is integer counter pattern + Increment() PatternFlowIpv4DscpPhbCounter + // SetIncrement assigns PatternFlowIpv4DscpPhbCounter provided by user to PatternFlowIpv4DscpPhb. + // PatternFlowIpv4DscpPhbCounter is integer counter pattern + SetIncrement(value PatternFlowIpv4DscpPhbCounter) PatternFlowIpv4DscpPhb + // HasIncrement checks if Increment has been set in PatternFlowIpv4DscpPhb HasIncrement() bool - // Decrement returns PatternFlowGtpExtensionContentsCounter, set in PatternFlowGtpExtensionContents. - // PatternFlowGtpExtensionContentsCounter is integer counter pattern - Decrement() PatternFlowGtpExtensionContentsCounter - // SetDecrement assigns PatternFlowGtpExtensionContentsCounter provided by user to PatternFlowGtpExtensionContents. - // PatternFlowGtpExtensionContentsCounter is integer counter pattern - SetDecrement(value PatternFlowGtpExtensionContentsCounter) PatternFlowGtpExtensionContents - // HasDecrement checks if Decrement has been set in PatternFlowGtpExtensionContents + // Decrement returns PatternFlowIpv4DscpPhbCounter, set in PatternFlowIpv4DscpPhb. + // PatternFlowIpv4DscpPhbCounter is integer counter pattern + Decrement() PatternFlowIpv4DscpPhbCounter + // SetDecrement assigns PatternFlowIpv4DscpPhbCounter provided by user to PatternFlowIpv4DscpPhb. + // PatternFlowIpv4DscpPhbCounter is integer counter pattern + SetDecrement(value PatternFlowIpv4DscpPhbCounter) PatternFlowIpv4DscpPhb + // HasDecrement checks if Decrement has been set in PatternFlowIpv4DscpPhb HasDecrement() bool - // MetricTags returns PatternFlowGtpExtensionContentsPatternFlowGtpExtensionContentsMetricTagIterIter, set in PatternFlowGtpExtensionContents - MetricTags() PatternFlowGtpExtensionContentsPatternFlowGtpExtensionContentsMetricTagIter + // MetricTags returns PatternFlowIpv4DscpPhbPatternFlowIpv4DscpPhbMetricTagIterIter, set in PatternFlowIpv4DscpPhb + MetricTags() PatternFlowIpv4DscpPhbPatternFlowIpv4DscpPhbMetricTagIter setNil() } -type PatternFlowGtpExtensionContentsChoiceEnum string +type PatternFlowIpv4DscpPhbChoiceEnum string -// Enum of Choice on PatternFlowGtpExtensionContents -var PatternFlowGtpExtensionContentsChoice = struct { - VALUE PatternFlowGtpExtensionContentsChoiceEnum - VALUES PatternFlowGtpExtensionContentsChoiceEnum - INCREMENT PatternFlowGtpExtensionContentsChoiceEnum - DECREMENT PatternFlowGtpExtensionContentsChoiceEnum +// Enum of Choice on PatternFlowIpv4DscpPhb +var PatternFlowIpv4DscpPhbChoice = struct { + VALUE PatternFlowIpv4DscpPhbChoiceEnum + VALUES PatternFlowIpv4DscpPhbChoiceEnum + INCREMENT PatternFlowIpv4DscpPhbChoiceEnum + DECREMENT PatternFlowIpv4DscpPhbChoiceEnum }{ - VALUE: PatternFlowGtpExtensionContentsChoiceEnum("value"), - VALUES: PatternFlowGtpExtensionContentsChoiceEnum("values"), - INCREMENT: PatternFlowGtpExtensionContentsChoiceEnum("increment"), - DECREMENT: PatternFlowGtpExtensionContentsChoiceEnum("decrement"), + VALUE: PatternFlowIpv4DscpPhbChoiceEnum("value"), + VALUES: PatternFlowIpv4DscpPhbChoiceEnum("values"), + INCREMENT: PatternFlowIpv4DscpPhbChoiceEnum("increment"), + DECREMENT: PatternFlowIpv4DscpPhbChoiceEnum("decrement"), } -func (obj *patternFlowGtpExtensionContents) Choice() PatternFlowGtpExtensionContentsChoiceEnum { - return PatternFlowGtpExtensionContentsChoiceEnum(obj.obj.Choice.Enum().String()) +func (obj *patternFlowIpv4DscpPhb) Choice() PatternFlowIpv4DscpPhbChoiceEnum { + return PatternFlowIpv4DscpPhbChoiceEnum(obj.obj.Choice.Enum().String()) } // description is TBD // Choice returns a string -func (obj *patternFlowGtpExtensionContents) HasChoice() bool { +func (obj *patternFlowIpv4DscpPhb) HasChoice() bool { return obj.obj.Choice != nil } -func (obj *patternFlowGtpExtensionContents) SetChoice(value PatternFlowGtpExtensionContentsChoiceEnum) PatternFlowGtpExtensionContents { - intValue, ok := otg.PatternFlowGtpExtensionContents_Choice_Enum_value[string(value)] +func (obj *patternFlowIpv4DscpPhb) SetChoice(value PatternFlowIpv4DscpPhbChoiceEnum) PatternFlowIpv4DscpPhb { + intValue, ok := otg.PatternFlowIpv4DscpPhb_Choice_Enum_value[string(value)] if !ok { obj.validationErrors = append(obj.validationErrors, fmt.Sprintf( - "%s is not a valid choice on PatternFlowGtpExtensionContentsChoiceEnum", string(value))) + "%s is not a valid choice on PatternFlowIpv4DscpPhbChoiceEnum", string(value))) return obj } - enumValue := otg.PatternFlowGtpExtensionContents_Choice_Enum(intValue) + enumValue := otg.PatternFlowIpv4DscpPhb_Choice_Enum(intValue) obj.obj.Choice = &enumValue obj.obj.Decrement = nil obj.decrementHolder = nil @@ -245780,33 +291054,33 @@ func (obj *patternFlowGtpExtensionContents) SetChoice(value PatternFlowGtpExtens obj.obj.Values = nil obj.obj.Value = nil - if value == PatternFlowGtpExtensionContentsChoice.VALUE { - defaultValue := uint64(0) + if value == PatternFlowIpv4DscpPhbChoice.VALUE { + defaultValue := uint32(0) obj.obj.Value = &defaultValue } - if value == PatternFlowGtpExtensionContentsChoice.VALUES { - defaultValue := []uint64{0} + if value == PatternFlowIpv4DscpPhbChoice.VALUES { + defaultValue := []uint32{0} obj.obj.Values = defaultValue } - if value == PatternFlowGtpExtensionContentsChoice.INCREMENT { - obj.obj.Increment = NewPatternFlowGtpExtensionContentsCounter().Msg() + if value == PatternFlowIpv4DscpPhbChoice.INCREMENT { + obj.obj.Increment = NewPatternFlowIpv4DscpPhbCounter().Msg() } - if value == PatternFlowGtpExtensionContentsChoice.DECREMENT { - obj.obj.Decrement = NewPatternFlowGtpExtensionContentsCounter().Msg() + if value == PatternFlowIpv4DscpPhbChoice.DECREMENT { + obj.obj.Decrement = NewPatternFlowIpv4DscpPhbCounter().Msg() } return obj } // description is TBD -// Value returns a uint64 -func (obj *patternFlowGtpExtensionContents) Value() uint64 { +// Value returns a uint32 +func (obj *patternFlowIpv4DscpPhb) Value() uint32 { if obj.obj.Value == nil { - obj.SetChoice(PatternFlowGtpExtensionContentsChoice.VALUE) + obj.SetChoice(PatternFlowIpv4DscpPhbChoice.VALUE) } return *obj.obj.Value @@ -245814,34 +291088,34 @@ func (obj *patternFlowGtpExtensionContents) Value() uint64 { } // description is TBD -// Value returns a uint64 -func (obj *patternFlowGtpExtensionContents) HasValue() bool { +// Value returns a uint32 +func (obj *patternFlowIpv4DscpPhb) HasValue() bool { return obj.obj.Value != nil } // description is TBD -// SetValue sets the uint64 value in the PatternFlowGtpExtensionContents object -func (obj *patternFlowGtpExtensionContents) SetValue(value uint64) PatternFlowGtpExtensionContents { - obj.SetChoice(PatternFlowGtpExtensionContentsChoice.VALUE) +// SetValue sets the uint32 value in the PatternFlowIpv4DscpPhb object +func (obj *patternFlowIpv4DscpPhb) SetValue(value uint32) PatternFlowIpv4DscpPhb { + obj.SetChoice(PatternFlowIpv4DscpPhbChoice.VALUE) obj.obj.Value = &value return obj } // description is TBD -// Values returns a []uint64 -func (obj *patternFlowGtpExtensionContents) Values() []uint64 { +// Values returns a []uint32 +func (obj *patternFlowIpv4DscpPhb) Values() []uint32 { if obj.obj.Values == nil { - obj.SetValues([]uint64{0}) + obj.SetValues([]uint32{0}) } return obj.obj.Values } // description is TBD -// SetValues sets the []uint64 value in the PatternFlowGtpExtensionContents object -func (obj *patternFlowGtpExtensionContents) SetValues(value []uint64) PatternFlowGtpExtensionContents { - obj.SetChoice(PatternFlowGtpExtensionContentsChoice.VALUES) +// SetValues sets the []uint32 value in the PatternFlowIpv4DscpPhb object +func (obj *patternFlowIpv4DscpPhb) SetValues(value []uint32) PatternFlowIpv4DscpPhb { + obj.SetChoice(PatternFlowIpv4DscpPhbChoice.VALUES) if obj.obj.Values == nil { - obj.obj.Values = make([]uint64, 0) + obj.obj.Values = make([]uint32, 0) } obj.obj.Values = value @@ -245849,27 +291123,27 @@ func (obj *patternFlowGtpExtensionContents) SetValues(value []uint64) PatternFlo } // description is TBD -// Increment returns a PatternFlowGtpExtensionContentsCounter -func (obj *patternFlowGtpExtensionContents) Increment() PatternFlowGtpExtensionContentsCounter { +// Increment returns a PatternFlowIpv4DscpPhbCounter +func (obj *patternFlowIpv4DscpPhb) Increment() PatternFlowIpv4DscpPhbCounter { if obj.obj.Increment == nil { - obj.SetChoice(PatternFlowGtpExtensionContentsChoice.INCREMENT) + obj.SetChoice(PatternFlowIpv4DscpPhbChoice.INCREMENT) } if obj.incrementHolder == nil { - obj.incrementHolder = &patternFlowGtpExtensionContentsCounter{obj: obj.obj.Increment} + obj.incrementHolder = &patternFlowIpv4DscpPhbCounter{obj: obj.obj.Increment} } return obj.incrementHolder } // description is TBD -// Increment returns a PatternFlowGtpExtensionContentsCounter -func (obj *patternFlowGtpExtensionContents) HasIncrement() bool { +// Increment returns a PatternFlowIpv4DscpPhbCounter +func (obj *patternFlowIpv4DscpPhb) HasIncrement() bool { return obj.obj.Increment != nil } // description is TBD -// SetIncrement sets the PatternFlowGtpExtensionContentsCounter value in the PatternFlowGtpExtensionContents object -func (obj *patternFlowGtpExtensionContents) SetIncrement(value PatternFlowGtpExtensionContentsCounter) PatternFlowGtpExtensionContents { - obj.SetChoice(PatternFlowGtpExtensionContentsChoice.INCREMENT) +// SetIncrement sets the PatternFlowIpv4DscpPhbCounter value in the PatternFlowIpv4DscpPhb object +func (obj *patternFlowIpv4DscpPhb) SetIncrement(value PatternFlowIpv4DscpPhbCounter) PatternFlowIpv4DscpPhb { + obj.SetChoice(PatternFlowIpv4DscpPhbChoice.INCREMENT) obj.incrementHolder = nil obj.obj.Increment = value.Msg() @@ -245877,27 +291151,27 @@ func (obj *patternFlowGtpExtensionContents) SetIncrement(value PatternFlowGtpExt } // description is TBD -// Decrement returns a PatternFlowGtpExtensionContentsCounter -func (obj *patternFlowGtpExtensionContents) Decrement() PatternFlowGtpExtensionContentsCounter { +// Decrement returns a PatternFlowIpv4DscpPhbCounter +func (obj *patternFlowIpv4DscpPhb) Decrement() PatternFlowIpv4DscpPhbCounter { if obj.obj.Decrement == nil { - obj.SetChoice(PatternFlowGtpExtensionContentsChoice.DECREMENT) + obj.SetChoice(PatternFlowIpv4DscpPhbChoice.DECREMENT) } if obj.decrementHolder == nil { - obj.decrementHolder = &patternFlowGtpExtensionContentsCounter{obj: obj.obj.Decrement} + obj.decrementHolder = &patternFlowIpv4DscpPhbCounter{obj: obj.obj.Decrement} } return obj.decrementHolder } // description is TBD -// Decrement returns a PatternFlowGtpExtensionContentsCounter -func (obj *patternFlowGtpExtensionContents) HasDecrement() bool { +// Decrement returns a PatternFlowIpv4DscpPhbCounter +func (obj *patternFlowIpv4DscpPhb) HasDecrement() bool { return obj.obj.Decrement != nil } // description is TBD -// SetDecrement sets the PatternFlowGtpExtensionContentsCounter value in the PatternFlowGtpExtensionContents object -func (obj *patternFlowGtpExtensionContents) SetDecrement(value PatternFlowGtpExtensionContentsCounter) PatternFlowGtpExtensionContents { - obj.SetChoice(PatternFlowGtpExtensionContentsChoice.DECREMENT) +// SetDecrement sets the PatternFlowIpv4DscpPhbCounter value in the PatternFlowIpv4DscpPhb object +func (obj *patternFlowIpv4DscpPhb) SetDecrement(value PatternFlowIpv4DscpPhbCounter) PatternFlowIpv4DscpPhb { + obj.SetChoice(PatternFlowIpv4DscpPhbChoice.DECREMENT) obj.decrementHolder = nil obj.obj.Decrement = value.Msg() @@ -245905,103 +291179,103 @@ func (obj *patternFlowGtpExtensionContents) SetDecrement(value PatternFlowGtpExt } // One or more metric tags can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. -// MetricTags returns a []PatternFlowGtpExtensionContentsMetricTag -func (obj *patternFlowGtpExtensionContents) MetricTags() PatternFlowGtpExtensionContentsPatternFlowGtpExtensionContentsMetricTagIter { +// MetricTags returns a []PatternFlowIpv4DscpPhbMetricTag +func (obj *patternFlowIpv4DscpPhb) MetricTags() PatternFlowIpv4DscpPhbPatternFlowIpv4DscpPhbMetricTagIter { if len(obj.obj.MetricTags) == 0 { - obj.obj.MetricTags = []*otg.PatternFlowGtpExtensionContentsMetricTag{} + obj.obj.MetricTags = []*otg.PatternFlowIpv4DscpPhbMetricTag{} } if obj.metricTagsHolder == nil { - obj.metricTagsHolder = newPatternFlowGtpExtensionContentsPatternFlowGtpExtensionContentsMetricTagIter(&obj.obj.MetricTags).setMsg(obj) + obj.metricTagsHolder = newPatternFlowIpv4DscpPhbPatternFlowIpv4DscpPhbMetricTagIter(&obj.obj.MetricTags).setMsg(obj) } return obj.metricTagsHolder } -type patternFlowGtpExtensionContentsPatternFlowGtpExtensionContentsMetricTagIter struct { - obj *patternFlowGtpExtensionContents - patternFlowGtpExtensionContentsMetricTagSlice []PatternFlowGtpExtensionContentsMetricTag - fieldPtr *[]*otg.PatternFlowGtpExtensionContentsMetricTag +type patternFlowIpv4DscpPhbPatternFlowIpv4DscpPhbMetricTagIter struct { + obj *patternFlowIpv4DscpPhb + patternFlowIpv4DscpPhbMetricTagSlice []PatternFlowIpv4DscpPhbMetricTag + fieldPtr *[]*otg.PatternFlowIpv4DscpPhbMetricTag } -func newPatternFlowGtpExtensionContentsPatternFlowGtpExtensionContentsMetricTagIter(ptr *[]*otg.PatternFlowGtpExtensionContentsMetricTag) PatternFlowGtpExtensionContentsPatternFlowGtpExtensionContentsMetricTagIter { - return &patternFlowGtpExtensionContentsPatternFlowGtpExtensionContentsMetricTagIter{fieldPtr: ptr} +func newPatternFlowIpv4DscpPhbPatternFlowIpv4DscpPhbMetricTagIter(ptr *[]*otg.PatternFlowIpv4DscpPhbMetricTag) PatternFlowIpv4DscpPhbPatternFlowIpv4DscpPhbMetricTagIter { + return &patternFlowIpv4DscpPhbPatternFlowIpv4DscpPhbMetricTagIter{fieldPtr: ptr} } -type PatternFlowGtpExtensionContentsPatternFlowGtpExtensionContentsMetricTagIter interface { - setMsg(*patternFlowGtpExtensionContents) PatternFlowGtpExtensionContentsPatternFlowGtpExtensionContentsMetricTagIter - Items() []PatternFlowGtpExtensionContentsMetricTag - Add() PatternFlowGtpExtensionContentsMetricTag - Append(items ...PatternFlowGtpExtensionContentsMetricTag) PatternFlowGtpExtensionContentsPatternFlowGtpExtensionContentsMetricTagIter - Set(index int, newObj PatternFlowGtpExtensionContentsMetricTag) PatternFlowGtpExtensionContentsPatternFlowGtpExtensionContentsMetricTagIter - Clear() PatternFlowGtpExtensionContentsPatternFlowGtpExtensionContentsMetricTagIter - clearHolderSlice() PatternFlowGtpExtensionContentsPatternFlowGtpExtensionContentsMetricTagIter - appendHolderSlice(item PatternFlowGtpExtensionContentsMetricTag) PatternFlowGtpExtensionContentsPatternFlowGtpExtensionContentsMetricTagIter +type PatternFlowIpv4DscpPhbPatternFlowIpv4DscpPhbMetricTagIter interface { + setMsg(*patternFlowIpv4DscpPhb) PatternFlowIpv4DscpPhbPatternFlowIpv4DscpPhbMetricTagIter + Items() []PatternFlowIpv4DscpPhbMetricTag + Add() PatternFlowIpv4DscpPhbMetricTag + Append(items ...PatternFlowIpv4DscpPhbMetricTag) PatternFlowIpv4DscpPhbPatternFlowIpv4DscpPhbMetricTagIter + Set(index int, newObj PatternFlowIpv4DscpPhbMetricTag) PatternFlowIpv4DscpPhbPatternFlowIpv4DscpPhbMetricTagIter + Clear() PatternFlowIpv4DscpPhbPatternFlowIpv4DscpPhbMetricTagIter + clearHolderSlice() PatternFlowIpv4DscpPhbPatternFlowIpv4DscpPhbMetricTagIter + appendHolderSlice(item PatternFlowIpv4DscpPhbMetricTag) PatternFlowIpv4DscpPhbPatternFlowIpv4DscpPhbMetricTagIter } -func (obj *patternFlowGtpExtensionContentsPatternFlowGtpExtensionContentsMetricTagIter) setMsg(msg *patternFlowGtpExtensionContents) PatternFlowGtpExtensionContentsPatternFlowGtpExtensionContentsMetricTagIter { +func (obj *patternFlowIpv4DscpPhbPatternFlowIpv4DscpPhbMetricTagIter) setMsg(msg *patternFlowIpv4DscpPhb) PatternFlowIpv4DscpPhbPatternFlowIpv4DscpPhbMetricTagIter { obj.clearHolderSlice() for _, val := range *obj.fieldPtr { - obj.appendHolderSlice(&patternFlowGtpExtensionContentsMetricTag{obj: val}) + obj.appendHolderSlice(&patternFlowIpv4DscpPhbMetricTag{obj: val}) } obj.obj = msg return obj } -func (obj *patternFlowGtpExtensionContentsPatternFlowGtpExtensionContentsMetricTagIter) Items() []PatternFlowGtpExtensionContentsMetricTag { - return obj.patternFlowGtpExtensionContentsMetricTagSlice +func (obj *patternFlowIpv4DscpPhbPatternFlowIpv4DscpPhbMetricTagIter) Items() []PatternFlowIpv4DscpPhbMetricTag { + return obj.patternFlowIpv4DscpPhbMetricTagSlice } -func (obj *patternFlowGtpExtensionContentsPatternFlowGtpExtensionContentsMetricTagIter) Add() PatternFlowGtpExtensionContentsMetricTag { - newObj := &otg.PatternFlowGtpExtensionContentsMetricTag{} +func (obj *patternFlowIpv4DscpPhbPatternFlowIpv4DscpPhbMetricTagIter) Add() PatternFlowIpv4DscpPhbMetricTag { + newObj := &otg.PatternFlowIpv4DscpPhbMetricTag{} *obj.fieldPtr = append(*obj.fieldPtr, newObj) - newLibObj := &patternFlowGtpExtensionContentsMetricTag{obj: newObj} + newLibObj := &patternFlowIpv4DscpPhbMetricTag{obj: newObj} newLibObj.setDefault() - obj.patternFlowGtpExtensionContentsMetricTagSlice = append(obj.patternFlowGtpExtensionContentsMetricTagSlice, newLibObj) + obj.patternFlowIpv4DscpPhbMetricTagSlice = append(obj.patternFlowIpv4DscpPhbMetricTagSlice, newLibObj) return newLibObj } -func (obj *patternFlowGtpExtensionContentsPatternFlowGtpExtensionContentsMetricTagIter) Append(items ...PatternFlowGtpExtensionContentsMetricTag) PatternFlowGtpExtensionContentsPatternFlowGtpExtensionContentsMetricTagIter { +func (obj *patternFlowIpv4DscpPhbPatternFlowIpv4DscpPhbMetricTagIter) Append(items ...PatternFlowIpv4DscpPhbMetricTag) PatternFlowIpv4DscpPhbPatternFlowIpv4DscpPhbMetricTagIter { for _, item := range items { newObj := item.Msg() *obj.fieldPtr = append(*obj.fieldPtr, newObj) - obj.patternFlowGtpExtensionContentsMetricTagSlice = append(obj.patternFlowGtpExtensionContentsMetricTagSlice, item) + obj.patternFlowIpv4DscpPhbMetricTagSlice = append(obj.patternFlowIpv4DscpPhbMetricTagSlice, item) } return obj } -func (obj *patternFlowGtpExtensionContentsPatternFlowGtpExtensionContentsMetricTagIter) Set(index int, newObj PatternFlowGtpExtensionContentsMetricTag) PatternFlowGtpExtensionContentsPatternFlowGtpExtensionContentsMetricTagIter { +func (obj *patternFlowIpv4DscpPhbPatternFlowIpv4DscpPhbMetricTagIter) Set(index int, newObj PatternFlowIpv4DscpPhbMetricTag) PatternFlowIpv4DscpPhbPatternFlowIpv4DscpPhbMetricTagIter { (*obj.fieldPtr)[index] = newObj.Msg() - obj.patternFlowGtpExtensionContentsMetricTagSlice[index] = newObj + obj.patternFlowIpv4DscpPhbMetricTagSlice[index] = newObj return obj } -func (obj *patternFlowGtpExtensionContentsPatternFlowGtpExtensionContentsMetricTagIter) Clear() PatternFlowGtpExtensionContentsPatternFlowGtpExtensionContentsMetricTagIter { +func (obj *patternFlowIpv4DscpPhbPatternFlowIpv4DscpPhbMetricTagIter) Clear() PatternFlowIpv4DscpPhbPatternFlowIpv4DscpPhbMetricTagIter { if len(*obj.fieldPtr) > 0 { - *obj.fieldPtr = []*otg.PatternFlowGtpExtensionContentsMetricTag{} - obj.patternFlowGtpExtensionContentsMetricTagSlice = []PatternFlowGtpExtensionContentsMetricTag{} + *obj.fieldPtr = []*otg.PatternFlowIpv4DscpPhbMetricTag{} + obj.patternFlowIpv4DscpPhbMetricTagSlice = []PatternFlowIpv4DscpPhbMetricTag{} } return obj } -func (obj *patternFlowGtpExtensionContentsPatternFlowGtpExtensionContentsMetricTagIter) clearHolderSlice() PatternFlowGtpExtensionContentsPatternFlowGtpExtensionContentsMetricTagIter { - if len(obj.patternFlowGtpExtensionContentsMetricTagSlice) > 0 { - obj.patternFlowGtpExtensionContentsMetricTagSlice = []PatternFlowGtpExtensionContentsMetricTag{} +func (obj *patternFlowIpv4DscpPhbPatternFlowIpv4DscpPhbMetricTagIter) clearHolderSlice() PatternFlowIpv4DscpPhbPatternFlowIpv4DscpPhbMetricTagIter { + if len(obj.patternFlowIpv4DscpPhbMetricTagSlice) > 0 { + obj.patternFlowIpv4DscpPhbMetricTagSlice = []PatternFlowIpv4DscpPhbMetricTag{} } return obj } -func (obj *patternFlowGtpExtensionContentsPatternFlowGtpExtensionContentsMetricTagIter) appendHolderSlice(item PatternFlowGtpExtensionContentsMetricTag) PatternFlowGtpExtensionContentsPatternFlowGtpExtensionContentsMetricTagIter { - obj.patternFlowGtpExtensionContentsMetricTagSlice = append(obj.patternFlowGtpExtensionContentsMetricTagSlice, item) +func (obj *patternFlowIpv4DscpPhbPatternFlowIpv4DscpPhbMetricTagIter) appendHolderSlice(item PatternFlowIpv4DscpPhbMetricTag) PatternFlowIpv4DscpPhbPatternFlowIpv4DscpPhbMetricTagIter { + obj.patternFlowIpv4DscpPhbMetricTagSlice = append(obj.patternFlowIpv4DscpPhbMetricTagSlice, item) return obj } -func (obj *patternFlowGtpExtensionContents) validateObj(vObj *validation, set_default bool) { +func (obj *patternFlowIpv4DscpPhb) validateObj(vObj *validation, set_default bool) { if set_default { obj.setDefault() } if obj.obj.Value != nil { - if *obj.obj.Value > 281474976710655 { + if *obj.obj.Value > 63 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowGtpExtensionContents.Value <= 281474976710655 but Got %d", *obj.obj.Value)) + fmt.Sprintf("0 <= PatternFlowIpv4DscpPhb.Value <= 63 but Got %d", *obj.obj.Value)) } } @@ -246009,10 +291283,10 @@ func (obj *patternFlowGtpExtensionContents) validateObj(vObj *validation, set_de if obj.obj.Values != nil { for _, item := range obj.obj.Values { - if item > 281474976710655 { + if item > 63 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("min(uint64) <= PatternFlowGtpExtensionContents.Values <= 281474976710655 but Got %d", item)) + fmt.Sprintf("min(uint32) <= PatternFlowIpv4DscpPhb.Values <= 63 but Got %d", item)) } } @@ -246034,7 +291308,7 @@ func (obj *patternFlowGtpExtensionContents) validateObj(vObj *validation, set_de if set_default { obj.MetricTags().clearHolderSlice() for _, item := range obj.obj.MetricTags { - obj.MetricTags().appendHolderSlice(&patternFlowGtpExtensionContentsMetricTag{obj: item}) + obj.MetricTags().appendHolderSlice(&patternFlowIpv4DscpPhbMetricTag{obj: item}) } } for _, item := range obj.MetricTags().Items() { @@ -246045,40 +291319,40 @@ func (obj *patternFlowGtpExtensionContents) validateObj(vObj *validation, set_de } -func (obj *patternFlowGtpExtensionContents) setDefault() { +func (obj *patternFlowIpv4DscpPhb) setDefault() { if obj.obj.Choice == nil { - obj.SetChoice(PatternFlowGtpExtensionContentsChoice.VALUE) + obj.SetChoice(PatternFlowIpv4DscpPhbChoice.VALUE) } } -// ***** PatternFlowGtpExtensionNextExtensionHeader ***** -type patternFlowGtpExtensionNextExtensionHeader struct { +// ***** PatternFlowIpv4DscpEcn ***** +type patternFlowIpv4DscpEcn struct { validation - obj *otg.PatternFlowGtpExtensionNextExtensionHeader - incrementHolder PatternFlowGtpExtensionNextExtensionHeaderCounter - decrementHolder PatternFlowGtpExtensionNextExtensionHeaderCounter - metricTagsHolder PatternFlowGtpExtensionNextExtensionHeaderPatternFlowGtpExtensionNextExtensionHeaderMetricTagIter + obj *otg.PatternFlowIpv4DscpEcn + incrementHolder PatternFlowIpv4DscpEcnCounter + decrementHolder PatternFlowIpv4DscpEcnCounter + metricTagsHolder PatternFlowIpv4DscpEcnPatternFlowIpv4DscpEcnMetricTagIter } -func NewPatternFlowGtpExtensionNextExtensionHeader() PatternFlowGtpExtensionNextExtensionHeader { - obj := patternFlowGtpExtensionNextExtensionHeader{obj: &otg.PatternFlowGtpExtensionNextExtensionHeader{}} +func NewPatternFlowIpv4DscpEcn() PatternFlowIpv4DscpEcn { + obj := patternFlowIpv4DscpEcn{obj: &otg.PatternFlowIpv4DscpEcn{}} obj.setDefault() return &obj } -func (obj *patternFlowGtpExtensionNextExtensionHeader) Msg() *otg.PatternFlowGtpExtensionNextExtensionHeader { +func (obj *patternFlowIpv4DscpEcn) Msg() *otg.PatternFlowIpv4DscpEcn { return obj.obj } -func (obj *patternFlowGtpExtensionNextExtensionHeader) SetMsg(msg *otg.PatternFlowGtpExtensionNextExtensionHeader) PatternFlowGtpExtensionNextExtensionHeader { +func (obj *patternFlowIpv4DscpEcn) SetMsg(msg *otg.PatternFlowIpv4DscpEcn) PatternFlowIpv4DscpEcn { obj.setNil() proto.Merge(obj.obj, msg) return obj } -func (obj *patternFlowGtpExtensionNextExtensionHeader) ToProto() (*otg.PatternFlowGtpExtensionNextExtensionHeader, error) { +func (obj *patternFlowIpv4DscpEcn) ToProto() (*otg.PatternFlowIpv4DscpEcn, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -246086,7 +291360,7 @@ func (obj *patternFlowGtpExtensionNextExtensionHeader) ToProto() (*otg.PatternFl return obj.Msg(), nil } -func (obj *patternFlowGtpExtensionNextExtensionHeader) FromProto(msg *otg.PatternFlowGtpExtensionNextExtensionHeader) (PatternFlowGtpExtensionNextExtensionHeader, error) { +func (obj *patternFlowIpv4DscpEcn) FromProto(msg *otg.PatternFlowIpv4DscpEcn) (PatternFlowIpv4DscpEcn, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -246095,7 +291369,7 @@ func (obj *patternFlowGtpExtensionNextExtensionHeader) FromProto(msg *otg.Patter return newObj, nil } -func (obj *patternFlowGtpExtensionNextExtensionHeader) ToPbText() (string, error) { +func (obj *patternFlowIpv4DscpEcn) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -246107,7 +291381,7 @@ func (obj *patternFlowGtpExtensionNextExtensionHeader) ToPbText() (string, error return string(protoMarshal), nil } -func (obj *patternFlowGtpExtensionNextExtensionHeader) FromPbText(value string) error { +func (obj *patternFlowIpv4DscpEcn) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj @@ -246120,7 +291394,7 @@ func (obj *patternFlowGtpExtensionNextExtensionHeader) FromPbText(value string) return retObj } -func (obj *patternFlowGtpExtensionNextExtensionHeader) ToYaml() (string, error) { +func (obj *patternFlowIpv4DscpEcn) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -246141,7 +291415,7 @@ func (obj *patternFlowGtpExtensionNextExtensionHeader) ToYaml() (string, error) return string(data), nil } -func (obj *patternFlowGtpExtensionNextExtensionHeader) FromYaml(value string) error { +func (obj *patternFlowIpv4DscpEcn) FromYaml(value string) error { if value == "" { value = "{}" } @@ -246166,7 +291440,7 @@ func (obj *patternFlowGtpExtensionNextExtensionHeader) FromYaml(value string) er return nil } -func (obj *patternFlowGtpExtensionNextExtensionHeader) ToJson() (string, error) { +func (obj *patternFlowIpv4DscpEcn) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -246184,7 +291458,7 @@ func (obj *patternFlowGtpExtensionNextExtensionHeader) ToJson() (string, error) return string(data), nil } -func (obj *patternFlowGtpExtensionNextExtensionHeader) FromJson(value string) error { +func (obj *patternFlowIpv4DscpEcn) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -246205,19 +291479,19 @@ func (obj *patternFlowGtpExtensionNextExtensionHeader) FromJson(value string) er return nil } -func (obj *patternFlowGtpExtensionNextExtensionHeader) validateToAndFrom() error { +func (obj *patternFlowIpv4DscpEcn) validateToAndFrom() error { // emptyVars() obj.validateObj(&obj.validation, true) return obj.validationResult() } -func (obj *patternFlowGtpExtensionNextExtensionHeader) Validate() error { +func (obj *patternFlowIpv4DscpEcn) Validate() error { // emptyVars() obj.validateObj(&obj.validation, false) return obj.validationResult() } -func (obj *patternFlowGtpExtensionNextExtensionHeader) String() string { +func (obj *patternFlowIpv4DscpEcn) String() string { str, err := obj.ToYaml() if err != nil { return err.Error() @@ -246225,12 +291499,12 @@ func (obj *patternFlowGtpExtensionNextExtensionHeader) String() string { return str } -func (obj *patternFlowGtpExtensionNextExtensionHeader) Clone() (PatternFlowGtpExtensionNextExtensionHeader, error) { +func (obj *patternFlowIpv4DscpEcn) Clone() (PatternFlowIpv4DscpEcn, error) { vErr := obj.Validate() if vErr != nil { return nil, vErr } - newObj := NewPatternFlowGtpExtensionNextExtensionHeader() + newObj := NewPatternFlowIpv4DscpEcn() data, err := proto.Marshal(obj.Msg()) if err != nil { return nil, err @@ -246242,7 +291516,7 @@ func (obj *patternFlowGtpExtensionNextExtensionHeader) Clone() (PatternFlowGtpEx return newObj, nil } -func (obj *patternFlowGtpExtensionNextExtensionHeader) setNil() { +func (obj *patternFlowIpv4DscpEcn) setNil() { obj.incrementHolder = nil obj.decrementHolder = nil obj.metricTagsHolder = nil @@ -246251,110 +291525,110 @@ func (obj *patternFlowGtpExtensionNextExtensionHeader) setNil() { obj.constraints = make(map[string]map[string]Constraints) } -// PatternFlowGtpExtensionNextExtensionHeader is it states the type of the next extension, or 0 if no next extension exists. This permits chaining several next extension headers. -type PatternFlowGtpExtensionNextExtensionHeader interface { +// PatternFlowIpv4DscpEcn is explicit congestion notification +type PatternFlowIpv4DscpEcn interface { Validation - // Msg marshals PatternFlowGtpExtensionNextExtensionHeader to protobuf object *otg.PatternFlowGtpExtensionNextExtensionHeader + // Msg marshals PatternFlowIpv4DscpEcn to protobuf object *otg.PatternFlowIpv4DscpEcn // and doesn't set defaults - Msg() *otg.PatternFlowGtpExtensionNextExtensionHeader - // SetMsg unmarshals PatternFlowGtpExtensionNextExtensionHeader from protobuf object *otg.PatternFlowGtpExtensionNextExtensionHeader + Msg() *otg.PatternFlowIpv4DscpEcn + // SetMsg unmarshals PatternFlowIpv4DscpEcn from protobuf object *otg.PatternFlowIpv4DscpEcn // and doesn't set defaults - SetMsg(*otg.PatternFlowGtpExtensionNextExtensionHeader) PatternFlowGtpExtensionNextExtensionHeader - // ToProto marshals PatternFlowGtpExtensionNextExtensionHeader to protobuf object *otg.PatternFlowGtpExtensionNextExtensionHeader - ToProto() (*otg.PatternFlowGtpExtensionNextExtensionHeader, error) - // ToPbText marshals PatternFlowGtpExtensionNextExtensionHeader to protobuf text + SetMsg(*otg.PatternFlowIpv4DscpEcn) PatternFlowIpv4DscpEcn + // ToProto marshals PatternFlowIpv4DscpEcn to protobuf object *otg.PatternFlowIpv4DscpEcn + ToProto() (*otg.PatternFlowIpv4DscpEcn, error) + // ToPbText marshals PatternFlowIpv4DscpEcn to protobuf text ToPbText() (string, error) - // ToYaml marshals PatternFlowGtpExtensionNextExtensionHeader to YAML text + // ToYaml marshals PatternFlowIpv4DscpEcn to YAML text ToYaml() (string, error) - // ToJson marshals PatternFlowGtpExtensionNextExtensionHeader to JSON text + // ToJson marshals PatternFlowIpv4DscpEcn to JSON text ToJson() (string, error) - // FromProto unmarshals PatternFlowGtpExtensionNextExtensionHeader from protobuf object *otg.PatternFlowGtpExtensionNextExtensionHeader - FromProto(msg *otg.PatternFlowGtpExtensionNextExtensionHeader) (PatternFlowGtpExtensionNextExtensionHeader, error) - // FromPbText unmarshals PatternFlowGtpExtensionNextExtensionHeader from protobuf text + // FromProto unmarshals PatternFlowIpv4DscpEcn from protobuf object *otg.PatternFlowIpv4DscpEcn + FromProto(msg *otg.PatternFlowIpv4DscpEcn) (PatternFlowIpv4DscpEcn, error) + // FromPbText unmarshals PatternFlowIpv4DscpEcn from protobuf text FromPbText(value string) error - // FromYaml unmarshals PatternFlowGtpExtensionNextExtensionHeader from YAML text + // FromYaml unmarshals PatternFlowIpv4DscpEcn from YAML text FromYaml(value string) error - // FromJson unmarshals PatternFlowGtpExtensionNextExtensionHeader from JSON text + // FromJson unmarshals PatternFlowIpv4DscpEcn from JSON text FromJson(value string) error - // Validate validates PatternFlowGtpExtensionNextExtensionHeader + // Validate validates PatternFlowIpv4DscpEcn Validate() error // A stringer function String() string // Clones the object - Clone() (PatternFlowGtpExtensionNextExtensionHeader, error) + Clone() (PatternFlowIpv4DscpEcn, error) validateToAndFrom() error validateObj(vObj *validation, set_default bool) setDefault() - // Choice returns PatternFlowGtpExtensionNextExtensionHeaderChoiceEnum, set in PatternFlowGtpExtensionNextExtensionHeader - Choice() PatternFlowGtpExtensionNextExtensionHeaderChoiceEnum - // SetChoice assigns PatternFlowGtpExtensionNextExtensionHeaderChoiceEnum provided by user to PatternFlowGtpExtensionNextExtensionHeader - SetChoice(value PatternFlowGtpExtensionNextExtensionHeaderChoiceEnum) PatternFlowGtpExtensionNextExtensionHeader - // HasChoice checks if Choice has been set in PatternFlowGtpExtensionNextExtensionHeader + // Choice returns PatternFlowIpv4DscpEcnChoiceEnum, set in PatternFlowIpv4DscpEcn + Choice() PatternFlowIpv4DscpEcnChoiceEnum + // SetChoice assigns PatternFlowIpv4DscpEcnChoiceEnum provided by user to PatternFlowIpv4DscpEcn + SetChoice(value PatternFlowIpv4DscpEcnChoiceEnum) PatternFlowIpv4DscpEcn + // HasChoice checks if Choice has been set in PatternFlowIpv4DscpEcn HasChoice() bool - // Value returns uint32, set in PatternFlowGtpExtensionNextExtensionHeader. + // Value returns uint32, set in PatternFlowIpv4DscpEcn. Value() uint32 - // SetValue assigns uint32 provided by user to PatternFlowGtpExtensionNextExtensionHeader - SetValue(value uint32) PatternFlowGtpExtensionNextExtensionHeader - // HasValue checks if Value has been set in PatternFlowGtpExtensionNextExtensionHeader + // SetValue assigns uint32 provided by user to PatternFlowIpv4DscpEcn + SetValue(value uint32) PatternFlowIpv4DscpEcn + // HasValue checks if Value has been set in PatternFlowIpv4DscpEcn HasValue() bool - // Values returns []uint32, set in PatternFlowGtpExtensionNextExtensionHeader. + // Values returns []uint32, set in PatternFlowIpv4DscpEcn. Values() []uint32 - // SetValues assigns []uint32 provided by user to PatternFlowGtpExtensionNextExtensionHeader - SetValues(value []uint32) PatternFlowGtpExtensionNextExtensionHeader - // Increment returns PatternFlowGtpExtensionNextExtensionHeaderCounter, set in PatternFlowGtpExtensionNextExtensionHeader. - // PatternFlowGtpExtensionNextExtensionHeaderCounter is integer counter pattern - Increment() PatternFlowGtpExtensionNextExtensionHeaderCounter - // SetIncrement assigns PatternFlowGtpExtensionNextExtensionHeaderCounter provided by user to PatternFlowGtpExtensionNextExtensionHeader. - // PatternFlowGtpExtensionNextExtensionHeaderCounter is integer counter pattern - SetIncrement(value PatternFlowGtpExtensionNextExtensionHeaderCounter) PatternFlowGtpExtensionNextExtensionHeader - // HasIncrement checks if Increment has been set in PatternFlowGtpExtensionNextExtensionHeader + // SetValues assigns []uint32 provided by user to PatternFlowIpv4DscpEcn + SetValues(value []uint32) PatternFlowIpv4DscpEcn + // Increment returns PatternFlowIpv4DscpEcnCounter, set in PatternFlowIpv4DscpEcn. + // PatternFlowIpv4DscpEcnCounter is integer counter pattern + Increment() PatternFlowIpv4DscpEcnCounter + // SetIncrement assigns PatternFlowIpv4DscpEcnCounter provided by user to PatternFlowIpv4DscpEcn. + // PatternFlowIpv4DscpEcnCounter is integer counter pattern + SetIncrement(value PatternFlowIpv4DscpEcnCounter) PatternFlowIpv4DscpEcn + // HasIncrement checks if Increment has been set in PatternFlowIpv4DscpEcn HasIncrement() bool - // Decrement returns PatternFlowGtpExtensionNextExtensionHeaderCounter, set in PatternFlowGtpExtensionNextExtensionHeader. - // PatternFlowGtpExtensionNextExtensionHeaderCounter is integer counter pattern - Decrement() PatternFlowGtpExtensionNextExtensionHeaderCounter - // SetDecrement assigns PatternFlowGtpExtensionNextExtensionHeaderCounter provided by user to PatternFlowGtpExtensionNextExtensionHeader. - // PatternFlowGtpExtensionNextExtensionHeaderCounter is integer counter pattern - SetDecrement(value PatternFlowGtpExtensionNextExtensionHeaderCounter) PatternFlowGtpExtensionNextExtensionHeader - // HasDecrement checks if Decrement has been set in PatternFlowGtpExtensionNextExtensionHeader + // Decrement returns PatternFlowIpv4DscpEcnCounter, set in PatternFlowIpv4DscpEcn. + // PatternFlowIpv4DscpEcnCounter is integer counter pattern + Decrement() PatternFlowIpv4DscpEcnCounter + // SetDecrement assigns PatternFlowIpv4DscpEcnCounter provided by user to PatternFlowIpv4DscpEcn. + // PatternFlowIpv4DscpEcnCounter is integer counter pattern + SetDecrement(value PatternFlowIpv4DscpEcnCounter) PatternFlowIpv4DscpEcn + // HasDecrement checks if Decrement has been set in PatternFlowIpv4DscpEcn HasDecrement() bool - // MetricTags returns PatternFlowGtpExtensionNextExtensionHeaderPatternFlowGtpExtensionNextExtensionHeaderMetricTagIterIter, set in PatternFlowGtpExtensionNextExtensionHeader - MetricTags() PatternFlowGtpExtensionNextExtensionHeaderPatternFlowGtpExtensionNextExtensionHeaderMetricTagIter + // MetricTags returns PatternFlowIpv4DscpEcnPatternFlowIpv4DscpEcnMetricTagIterIter, set in PatternFlowIpv4DscpEcn + MetricTags() PatternFlowIpv4DscpEcnPatternFlowIpv4DscpEcnMetricTagIter setNil() } -type PatternFlowGtpExtensionNextExtensionHeaderChoiceEnum string +type PatternFlowIpv4DscpEcnChoiceEnum string -// Enum of Choice on PatternFlowGtpExtensionNextExtensionHeader -var PatternFlowGtpExtensionNextExtensionHeaderChoice = struct { - VALUE PatternFlowGtpExtensionNextExtensionHeaderChoiceEnum - VALUES PatternFlowGtpExtensionNextExtensionHeaderChoiceEnum - INCREMENT PatternFlowGtpExtensionNextExtensionHeaderChoiceEnum - DECREMENT PatternFlowGtpExtensionNextExtensionHeaderChoiceEnum +// Enum of Choice on PatternFlowIpv4DscpEcn +var PatternFlowIpv4DscpEcnChoice = struct { + VALUE PatternFlowIpv4DscpEcnChoiceEnum + VALUES PatternFlowIpv4DscpEcnChoiceEnum + INCREMENT PatternFlowIpv4DscpEcnChoiceEnum + DECREMENT PatternFlowIpv4DscpEcnChoiceEnum }{ - VALUE: PatternFlowGtpExtensionNextExtensionHeaderChoiceEnum("value"), - VALUES: PatternFlowGtpExtensionNextExtensionHeaderChoiceEnum("values"), - INCREMENT: PatternFlowGtpExtensionNextExtensionHeaderChoiceEnum("increment"), - DECREMENT: PatternFlowGtpExtensionNextExtensionHeaderChoiceEnum("decrement"), + VALUE: PatternFlowIpv4DscpEcnChoiceEnum("value"), + VALUES: PatternFlowIpv4DscpEcnChoiceEnum("values"), + INCREMENT: PatternFlowIpv4DscpEcnChoiceEnum("increment"), + DECREMENT: PatternFlowIpv4DscpEcnChoiceEnum("decrement"), } -func (obj *patternFlowGtpExtensionNextExtensionHeader) Choice() PatternFlowGtpExtensionNextExtensionHeaderChoiceEnum { - return PatternFlowGtpExtensionNextExtensionHeaderChoiceEnum(obj.obj.Choice.Enum().String()) +func (obj *patternFlowIpv4DscpEcn) Choice() PatternFlowIpv4DscpEcnChoiceEnum { + return PatternFlowIpv4DscpEcnChoiceEnum(obj.obj.Choice.Enum().String()) } // description is TBD // Choice returns a string -func (obj *patternFlowGtpExtensionNextExtensionHeader) HasChoice() bool { +func (obj *patternFlowIpv4DscpEcn) HasChoice() bool { return obj.obj.Choice != nil } -func (obj *patternFlowGtpExtensionNextExtensionHeader) SetChoice(value PatternFlowGtpExtensionNextExtensionHeaderChoiceEnum) PatternFlowGtpExtensionNextExtensionHeader { - intValue, ok := otg.PatternFlowGtpExtensionNextExtensionHeader_Choice_Enum_value[string(value)] +func (obj *patternFlowIpv4DscpEcn) SetChoice(value PatternFlowIpv4DscpEcnChoiceEnum) PatternFlowIpv4DscpEcn { + intValue, ok := otg.PatternFlowIpv4DscpEcn_Choice_Enum_value[string(value)] if !ok { obj.validationErrors = append(obj.validationErrors, fmt.Sprintf( - "%s is not a valid choice on PatternFlowGtpExtensionNextExtensionHeaderChoiceEnum", string(value))) + "%s is not a valid choice on PatternFlowIpv4DscpEcnChoiceEnum", string(value))) return obj } - enumValue := otg.PatternFlowGtpExtensionNextExtensionHeader_Choice_Enum(intValue) + enumValue := otg.PatternFlowIpv4DscpEcn_Choice_Enum(intValue) obj.obj.Choice = &enumValue obj.obj.Decrement = nil obj.decrementHolder = nil @@ -246363,22 +291637,22 @@ func (obj *patternFlowGtpExtensionNextExtensionHeader) SetChoice(value PatternFl obj.obj.Values = nil obj.obj.Value = nil - if value == PatternFlowGtpExtensionNextExtensionHeaderChoice.VALUE { + if value == PatternFlowIpv4DscpEcnChoice.VALUE { defaultValue := uint32(0) obj.obj.Value = &defaultValue } - if value == PatternFlowGtpExtensionNextExtensionHeaderChoice.VALUES { + if value == PatternFlowIpv4DscpEcnChoice.VALUES { defaultValue := []uint32{0} obj.obj.Values = defaultValue } - if value == PatternFlowGtpExtensionNextExtensionHeaderChoice.INCREMENT { - obj.obj.Increment = NewPatternFlowGtpExtensionNextExtensionHeaderCounter().Msg() + if value == PatternFlowIpv4DscpEcnChoice.INCREMENT { + obj.obj.Increment = NewPatternFlowIpv4DscpEcnCounter().Msg() } - if value == PatternFlowGtpExtensionNextExtensionHeaderChoice.DECREMENT { - obj.obj.Decrement = NewPatternFlowGtpExtensionNextExtensionHeaderCounter().Msg() + if value == PatternFlowIpv4DscpEcnChoice.DECREMENT { + obj.obj.Decrement = NewPatternFlowIpv4DscpEcnCounter().Msg() } return obj @@ -246386,10 +291660,10 @@ func (obj *patternFlowGtpExtensionNextExtensionHeader) SetChoice(value PatternFl // description is TBD // Value returns a uint32 -func (obj *patternFlowGtpExtensionNextExtensionHeader) Value() uint32 { +func (obj *patternFlowIpv4DscpEcn) Value() uint32 { if obj.obj.Value == nil { - obj.SetChoice(PatternFlowGtpExtensionNextExtensionHeaderChoice.VALUE) + obj.SetChoice(PatternFlowIpv4DscpEcnChoice.VALUE) } return *obj.obj.Value @@ -246398,21 +291672,21 @@ func (obj *patternFlowGtpExtensionNextExtensionHeader) Value() uint32 { // description is TBD // Value returns a uint32 -func (obj *patternFlowGtpExtensionNextExtensionHeader) HasValue() bool { +func (obj *patternFlowIpv4DscpEcn) HasValue() bool { return obj.obj.Value != nil } // description is TBD -// SetValue sets the uint32 value in the PatternFlowGtpExtensionNextExtensionHeader object -func (obj *patternFlowGtpExtensionNextExtensionHeader) SetValue(value uint32) PatternFlowGtpExtensionNextExtensionHeader { - obj.SetChoice(PatternFlowGtpExtensionNextExtensionHeaderChoice.VALUE) +// SetValue sets the uint32 value in the PatternFlowIpv4DscpEcn object +func (obj *patternFlowIpv4DscpEcn) SetValue(value uint32) PatternFlowIpv4DscpEcn { + obj.SetChoice(PatternFlowIpv4DscpEcnChoice.VALUE) obj.obj.Value = &value return obj } // description is TBD // Values returns a []uint32 -func (obj *patternFlowGtpExtensionNextExtensionHeader) Values() []uint32 { +func (obj *patternFlowIpv4DscpEcn) Values() []uint32 { if obj.obj.Values == nil { obj.SetValues([]uint32{0}) } @@ -246420,9 +291694,9 @@ func (obj *patternFlowGtpExtensionNextExtensionHeader) Values() []uint32 { } // description is TBD -// SetValues sets the []uint32 value in the PatternFlowGtpExtensionNextExtensionHeader object -func (obj *patternFlowGtpExtensionNextExtensionHeader) SetValues(value []uint32) PatternFlowGtpExtensionNextExtensionHeader { - obj.SetChoice(PatternFlowGtpExtensionNextExtensionHeaderChoice.VALUES) +// SetValues sets the []uint32 value in the PatternFlowIpv4DscpEcn object +func (obj *patternFlowIpv4DscpEcn) SetValues(value []uint32) PatternFlowIpv4DscpEcn { + obj.SetChoice(PatternFlowIpv4DscpEcnChoice.VALUES) if obj.obj.Values == nil { obj.obj.Values = make([]uint32, 0) } @@ -246432,27 +291706,27 @@ func (obj *patternFlowGtpExtensionNextExtensionHeader) SetValues(value []uint32) } // description is TBD -// Increment returns a PatternFlowGtpExtensionNextExtensionHeaderCounter -func (obj *patternFlowGtpExtensionNextExtensionHeader) Increment() PatternFlowGtpExtensionNextExtensionHeaderCounter { +// Increment returns a PatternFlowIpv4DscpEcnCounter +func (obj *patternFlowIpv4DscpEcn) Increment() PatternFlowIpv4DscpEcnCounter { if obj.obj.Increment == nil { - obj.SetChoice(PatternFlowGtpExtensionNextExtensionHeaderChoice.INCREMENT) + obj.SetChoice(PatternFlowIpv4DscpEcnChoice.INCREMENT) } if obj.incrementHolder == nil { - obj.incrementHolder = &patternFlowGtpExtensionNextExtensionHeaderCounter{obj: obj.obj.Increment} + obj.incrementHolder = &patternFlowIpv4DscpEcnCounter{obj: obj.obj.Increment} } return obj.incrementHolder } // description is TBD -// Increment returns a PatternFlowGtpExtensionNextExtensionHeaderCounter -func (obj *patternFlowGtpExtensionNextExtensionHeader) HasIncrement() bool { +// Increment returns a PatternFlowIpv4DscpEcnCounter +func (obj *patternFlowIpv4DscpEcn) HasIncrement() bool { return obj.obj.Increment != nil } // description is TBD -// SetIncrement sets the PatternFlowGtpExtensionNextExtensionHeaderCounter value in the PatternFlowGtpExtensionNextExtensionHeader object -func (obj *patternFlowGtpExtensionNextExtensionHeader) SetIncrement(value PatternFlowGtpExtensionNextExtensionHeaderCounter) PatternFlowGtpExtensionNextExtensionHeader { - obj.SetChoice(PatternFlowGtpExtensionNextExtensionHeaderChoice.INCREMENT) +// SetIncrement sets the PatternFlowIpv4DscpEcnCounter value in the PatternFlowIpv4DscpEcn object +func (obj *patternFlowIpv4DscpEcn) SetIncrement(value PatternFlowIpv4DscpEcnCounter) PatternFlowIpv4DscpEcn { + obj.SetChoice(PatternFlowIpv4DscpEcnChoice.INCREMENT) obj.incrementHolder = nil obj.obj.Increment = value.Msg() @@ -246460,27 +291734,27 @@ func (obj *patternFlowGtpExtensionNextExtensionHeader) SetIncrement(value Patter } // description is TBD -// Decrement returns a PatternFlowGtpExtensionNextExtensionHeaderCounter -func (obj *patternFlowGtpExtensionNextExtensionHeader) Decrement() PatternFlowGtpExtensionNextExtensionHeaderCounter { +// Decrement returns a PatternFlowIpv4DscpEcnCounter +func (obj *patternFlowIpv4DscpEcn) Decrement() PatternFlowIpv4DscpEcnCounter { if obj.obj.Decrement == nil { - obj.SetChoice(PatternFlowGtpExtensionNextExtensionHeaderChoice.DECREMENT) + obj.SetChoice(PatternFlowIpv4DscpEcnChoice.DECREMENT) } if obj.decrementHolder == nil { - obj.decrementHolder = &patternFlowGtpExtensionNextExtensionHeaderCounter{obj: obj.obj.Decrement} + obj.decrementHolder = &patternFlowIpv4DscpEcnCounter{obj: obj.obj.Decrement} } return obj.decrementHolder } // description is TBD -// Decrement returns a PatternFlowGtpExtensionNextExtensionHeaderCounter -func (obj *patternFlowGtpExtensionNextExtensionHeader) HasDecrement() bool { +// Decrement returns a PatternFlowIpv4DscpEcnCounter +func (obj *patternFlowIpv4DscpEcn) HasDecrement() bool { return obj.obj.Decrement != nil } // description is TBD -// SetDecrement sets the PatternFlowGtpExtensionNextExtensionHeaderCounter value in the PatternFlowGtpExtensionNextExtensionHeader object -func (obj *patternFlowGtpExtensionNextExtensionHeader) SetDecrement(value PatternFlowGtpExtensionNextExtensionHeaderCounter) PatternFlowGtpExtensionNextExtensionHeader { - obj.SetChoice(PatternFlowGtpExtensionNextExtensionHeaderChoice.DECREMENT) +// SetDecrement sets the PatternFlowIpv4DscpEcnCounter value in the PatternFlowIpv4DscpEcn object +func (obj *patternFlowIpv4DscpEcn) SetDecrement(value PatternFlowIpv4DscpEcnCounter) PatternFlowIpv4DscpEcn { + obj.SetChoice(PatternFlowIpv4DscpEcnChoice.DECREMENT) obj.decrementHolder = nil obj.obj.Decrement = value.Msg() @@ -246488,103 +291762,103 @@ func (obj *patternFlowGtpExtensionNextExtensionHeader) SetDecrement(value Patter } // One or more metric tags can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. -// MetricTags returns a []PatternFlowGtpExtensionNextExtensionHeaderMetricTag -func (obj *patternFlowGtpExtensionNextExtensionHeader) MetricTags() PatternFlowGtpExtensionNextExtensionHeaderPatternFlowGtpExtensionNextExtensionHeaderMetricTagIter { +// MetricTags returns a []PatternFlowIpv4DscpEcnMetricTag +func (obj *patternFlowIpv4DscpEcn) MetricTags() PatternFlowIpv4DscpEcnPatternFlowIpv4DscpEcnMetricTagIter { if len(obj.obj.MetricTags) == 0 { - obj.obj.MetricTags = []*otg.PatternFlowGtpExtensionNextExtensionHeaderMetricTag{} + obj.obj.MetricTags = []*otg.PatternFlowIpv4DscpEcnMetricTag{} } if obj.metricTagsHolder == nil { - obj.metricTagsHolder = newPatternFlowGtpExtensionNextExtensionHeaderPatternFlowGtpExtensionNextExtensionHeaderMetricTagIter(&obj.obj.MetricTags).setMsg(obj) + obj.metricTagsHolder = newPatternFlowIpv4DscpEcnPatternFlowIpv4DscpEcnMetricTagIter(&obj.obj.MetricTags).setMsg(obj) } return obj.metricTagsHolder } -type patternFlowGtpExtensionNextExtensionHeaderPatternFlowGtpExtensionNextExtensionHeaderMetricTagIter struct { - obj *patternFlowGtpExtensionNextExtensionHeader - patternFlowGtpExtensionNextExtensionHeaderMetricTagSlice []PatternFlowGtpExtensionNextExtensionHeaderMetricTag - fieldPtr *[]*otg.PatternFlowGtpExtensionNextExtensionHeaderMetricTag +type patternFlowIpv4DscpEcnPatternFlowIpv4DscpEcnMetricTagIter struct { + obj *patternFlowIpv4DscpEcn + patternFlowIpv4DscpEcnMetricTagSlice []PatternFlowIpv4DscpEcnMetricTag + fieldPtr *[]*otg.PatternFlowIpv4DscpEcnMetricTag } -func newPatternFlowGtpExtensionNextExtensionHeaderPatternFlowGtpExtensionNextExtensionHeaderMetricTagIter(ptr *[]*otg.PatternFlowGtpExtensionNextExtensionHeaderMetricTag) PatternFlowGtpExtensionNextExtensionHeaderPatternFlowGtpExtensionNextExtensionHeaderMetricTagIter { - return &patternFlowGtpExtensionNextExtensionHeaderPatternFlowGtpExtensionNextExtensionHeaderMetricTagIter{fieldPtr: ptr} +func newPatternFlowIpv4DscpEcnPatternFlowIpv4DscpEcnMetricTagIter(ptr *[]*otg.PatternFlowIpv4DscpEcnMetricTag) PatternFlowIpv4DscpEcnPatternFlowIpv4DscpEcnMetricTagIter { + return &patternFlowIpv4DscpEcnPatternFlowIpv4DscpEcnMetricTagIter{fieldPtr: ptr} } -type PatternFlowGtpExtensionNextExtensionHeaderPatternFlowGtpExtensionNextExtensionHeaderMetricTagIter interface { - setMsg(*patternFlowGtpExtensionNextExtensionHeader) PatternFlowGtpExtensionNextExtensionHeaderPatternFlowGtpExtensionNextExtensionHeaderMetricTagIter - Items() []PatternFlowGtpExtensionNextExtensionHeaderMetricTag - Add() PatternFlowGtpExtensionNextExtensionHeaderMetricTag - Append(items ...PatternFlowGtpExtensionNextExtensionHeaderMetricTag) PatternFlowGtpExtensionNextExtensionHeaderPatternFlowGtpExtensionNextExtensionHeaderMetricTagIter - Set(index int, newObj PatternFlowGtpExtensionNextExtensionHeaderMetricTag) PatternFlowGtpExtensionNextExtensionHeaderPatternFlowGtpExtensionNextExtensionHeaderMetricTagIter - Clear() PatternFlowGtpExtensionNextExtensionHeaderPatternFlowGtpExtensionNextExtensionHeaderMetricTagIter - clearHolderSlice() PatternFlowGtpExtensionNextExtensionHeaderPatternFlowGtpExtensionNextExtensionHeaderMetricTagIter - appendHolderSlice(item PatternFlowGtpExtensionNextExtensionHeaderMetricTag) PatternFlowGtpExtensionNextExtensionHeaderPatternFlowGtpExtensionNextExtensionHeaderMetricTagIter +type PatternFlowIpv4DscpEcnPatternFlowIpv4DscpEcnMetricTagIter interface { + setMsg(*patternFlowIpv4DscpEcn) PatternFlowIpv4DscpEcnPatternFlowIpv4DscpEcnMetricTagIter + Items() []PatternFlowIpv4DscpEcnMetricTag + Add() PatternFlowIpv4DscpEcnMetricTag + Append(items ...PatternFlowIpv4DscpEcnMetricTag) PatternFlowIpv4DscpEcnPatternFlowIpv4DscpEcnMetricTagIter + Set(index int, newObj PatternFlowIpv4DscpEcnMetricTag) PatternFlowIpv4DscpEcnPatternFlowIpv4DscpEcnMetricTagIter + Clear() PatternFlowIpv4DscpEcnPatternFlowIpv4DscpEcnMetricTagIter + clearHolderSlice() PatternFlowIpv4DscpEcnPatternFlowIpv4DscpEcnMetricTagIter + appendHolderSlice(item PatternFlowIpv4DscpEcnMetricTag) PatternFlowIpv4DscpEcnPatternFlowIpv4DscpEcnMetricTagIter } -func (obj *patternFlowGtpExtensionNextExtensionHeaderPatternFlowGtpExtensionNextExtensionHeaderMetricTagIter) setMsg(msg *patternFlowGtpExtensionNextExtensionHeader) PatternFlowGtpExtensionNextExtensionHeaderPatternFlowGtpExtensionNextExtensionHeaderMetricTagIter { +func (obj *patternFlowIpv4DscpEcnPatternFlowIpv4DscpEcnMetricTagIter) setMsg(msg *patternFlowIpv4DscpEcn) PatternFlowIpv4DscpEcnPatternFlowIpv4DscpEcnMetricTagIter { obj.clearHolderSlice() for _, val := range *obj.fieldPtr { - obj.appendHolderSlice(&patternFlowGtpExtensionNextExtensionHeaderMetricTag{obj: val}) + obj.appendHolderSlice(&patternFlowIpv4DscpEcnMetricTag{obj: val}) } obj.obj = msg return obj } -func (obj *patternFlowGtpExtensionNextExtensionHeaderPatternFlowGtpExtensionNextExtensionHeaderMetricTagIter) Items() []PatternFlowGtpExtensionNextExtensionHeaderMetricTag { - return obj.patternFlowGtpExtensionNextExtensionHeaderMetricTagSlice +func (obj *patternFlowIpv4DscpEcnPatternFlowIpv4DscpEcnMetricTagIter) Items() []PatternFlowIpv4DscpEcnMetricTag { + return obj.patternFlowIpv4DscpEcnMetricTagSlice } -func (obj *patternFlowGtpExtensionNextExtensionHeaderPatternFlowGtpExtensionNextExtensionHeaderMetricTagIter) Add() PatternFlowGtpExtensionNextExtensionHeaderMetricTag { - newObj := &otg.PatternFlowGtpExtensionNextExtensionHeaderMetricTag{} +func (obj *patternFlowIpv4DscpEcnPatternFlowIpv4DscpEcnMetricTagIter) Add() PatternFlowIpv4DscpEcnMetricTag { + newObj := &otg.PatternFlowIpv4DscpEcnMetricTag{} *obj.fieldPtr = append(*obj.fieldPtr, newObj) - newLibObj := &patternFlowGtpExtensionNextExtensionHeaderMetricTag{obj: newObj} + newLibObj := &patternFlowIpv4DscpEcnMetricTag{obj: newObj} newLibObj.setDefault() - obj.patternFlowGtpExtensionNextExtensionHeaderMetricTagSlice = append(obj.patternFlowGtpExtensionNextExtensionHeaderMetricTagSlice, newLibObj) + obj.patternFlowIpv4DscpEcnMetricTagSlice = append(obj.patternFlowIpv4DscpEcnMetricTagSlice, newLibObj) return newLibObj } -func (obj *patternFlowGtpExtensionNextExtensionHeaderPatternFlowGtpExtensionNextExtensionHeaderMetricTagIter) Append(items ...PatternFlowGtpExtensionNextExtensionHeaderMetricTag) PatternFlowGtpExtensionNextExtensionHeaderPatternFlowGtpExtensionNextExtensionHeaderMetricTagIter { +func (obj *patternFlowIpv4DscpEcnPatternFlowIpv4DscpEcnMetricTagIter) Append(items ...PatternFlowIpv4DscpEcnMetricTag) PatternFlowIpv4DscpEcnPatternFlowIpv4DscpEcnMetricTagIter { for _, item := range items { newObj := item.Msg() *obj.fieldPtr = append(*obj.fieldPtr, newObj) - obj.patternFlowGtpExtensionNextExtensionHeaderMetricTagSlice = append(obj.patternFlowGtpExtensionNextExtensionHeaderMetricTagSlice, item) + obj.patternFlowIpv4DscpEcnMetricTagSlice = append(obj.patternFlowIpv4DscpEcnMetricTagSlice, item) } return obj } -func (obj *patternFlowGtpExtensionNextExtensionHeaderPatternFlowGtpExtensionNextExtensionHeaderMetricTagIter) Set(index int, newObj PatternFlowGtpExtensionNextExtensionHeaderMetricTag) PatternFlowGtpExtensionNextExtensionHeaderPatternFlowGtpExtensionNextExtensionHeaderMetricTagIter { +func (obj *patternFlowIpv4DscpEcnPatternFlowIpv4DscpEcnMetricTagIter) Set(index int, newObj PatternFlowIpv4DscpEcnMetricTag) PatternFlowIpv4DscpEcnPatternFlowIpv4DscpEcnMetricTagIter { (*obj.fieldPtr)[index] = newObj.Msg() - obj.patternFlowGtpExtensionNextExtensionHeaderMetricTagSlice[index] = newObj + obj.patternFlowIpv4DscpEcnMetricTagSlice[index] = newObj return obj } -func (obj *patternFlowGtpExtensionNextExtensionHeaderPatternFlowGtpExtensionNextExtensionHeaderMetricTagIter) Clear() PatternFlowGtpExtensionNextExtensionHeaderPatternFlowGtpExtensionNextExtensionHeaderMetricTagIter { +func (obj *patternFlowIpv4DscpEcnPatternFlowIpv4DscpEcnMetricTagIter) Clear() PatternFlowIpv4DscpEcnPatternFlowIpv4DscpEcnMetricTagIter { if len(*obj.fieldPtr) > 0 { - *obj.fieldPtr = []*otg.PatternFlowGtpExtensionNextExtensionHeaderMetricTag{} - obj.patternFlowGtpExtensionNextExtensionHeaderMetricTagSlice = []PatternFlowGtpExtensionNextExtensionHeaderMetricTag{} + *obj.fieldPtr = []*otg.PatternFlowIpv4DscpEcnMetricTag{} + obj.patternFlowIpv4DscpEcnMetricTagSlice = []PatternFlowIpv4DscpEcnMetricTag{} } return obj } -func (obj *patternFlowGtpExtensionNextExtensionHeaderPatternFlowGtpExtensionNextExtensionHeaderMetricTagIter) clearHolderSlice() PatternFlowGtpExtensionNextExtensionHeaderPatternFlowGtpExtensionNextExtensionHeaderMetricTagIter { - if len(obj.patternFlowGtpExtensionNextExtensionHeaderMetricTagSlice) > 0 { - obj.patternFlowGtpExtensionNextExtensionHeaderMetricTagSlice = []PatternFlowGtpExtensionNextExtensionHeaderMetricTag{} +func (obj *patternFlowIpv4DscpEcnPatternFlowIpv4DscpEcnMetricTagIter) clearHolderSlice() PatternFlowIpv4DscpEcnPatternFlowIpv4DscpEcnMetricTagIter { + if len(obj.patternFlowIpv4DscpEcnMetricTagSlice) > 0 { + obj.patternFlowIpv4DscpEcnMetricTagSlice = []PatternFlowIpv4DscpEcnMetricTag{} } return obj } -func (obj *patternFlowGtpExtensionNextExtensionHeaderPatternFlowGtpExtensionNextExtensionHeaderMetricTagIter) appendHolderSlice(item PatternFlowGtpExtensionNextExtensionHeaderMetricTag) PatternFlowGtpExtensionNextExtensionHeaderPatternFlowGtpExtensionNextExtensionHeaderMetricTagIter { - obj.patternFlowGtpExtensionNextExtensionHeaderMetricTagSlice = append(obj.patternFlowGtpExtensionNextExtensionHeaderMetricTagSlice, item) +func (obj *patternFlowIpv4DscpEcnPatternFlowIpv4DscpEcnMetricTagIter) appendHolderSlice(item PatternFlowIpv4DscpEcnMetricTag) PatternFlowIpv4DscpEcnPatternFlowIpv4DscpEcnMetricTagIter { + obj.patternFlowIpv4DscpEcnMetricTagSlice = append(obj.patternFlowIpv4DscpEcnMetricTagSlice, item) return obj } -func (obj *patternFlowGtpExtensionNextExtensionHeader) validateObj(vObj *validation, set_default bool) { +func (obj *patternFlowIpv4DscpEcn) validateObj(vObj *validation, set_default bool) { if set_default { obj.setDefault() } if obj.obj.Value != nil { - if *obj.obj.Value > 255 { + if *obj.obj.Value > 3 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowGtpExtensionNextExtensionHeader.Value <= 255 but Got %d", *obj.obj.Value)) + fmt.Sprintf("0 <= PatternFlowIpv4DscpEcn.Value <= 3 but Got %d", *obj.obj.Value)) } } @@ -246592,10 +291866,10 @@ func (obj *patternFlowGtpExtensionNextExtensionHeader) validateObj(vObj *validat if obj.obj.Values != nil { for _, item := range obj.obj.Values { - if item > 255 { + if item > 3 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("min(uint32) <= PatternFlowGtpExtensionNextExtensionHeader.Values <= 255 but Got %d", item)) + fmt.Sprintf("min(uint32) <= PatternFlowIpv4DscpEcn.Values <= 3 but Got %d", item)) } } @@ -246617,7 +291891,7 @@ func (obj *patternFlowGtpExtensionNextExtensionHeader) validateObj(vObj *validat if set_default { obj.MetricTags().clearHolderSlice() for _, item := range obj.obj.MetricTags { - obj.MetricTags().appendHolderSlice(&patternFlowGtpExtensionNextExtensionHeaderMetricTag{obj: item}) + obj.MetricTags().appendHolderSlice(&patternFlowIpv4DscpEcnMetricTag{obj: item}) } } for _, item := range obj.MetricTags().Items() { @@ -246628,37 +291902,37 @@ func (obj *patternFlowGtpExtensionNextExtensionHeader) validateObj(vObj *validat } -func (obj *patternFlowGtpExtensionNextExtensionHeader) setDefault() { +func (obj *patternFlowIpv4DscpEcn) setDefault() { if obj.obj.Choice == nil { - obj.SetChoice(PatternFlowGtpExtensionNextExtensionHeaderChoice.VALUE) + obj.SetChoice(PatternFlowIpv4DscpEcnChoice.VALUE) } } -// ***** PatternFlowGtpv2VersionCounter ***** -type patternFlowGtpv2VersionCounter struct { +// ***** PatternFlowGtpExtensionExtensionLengthCounter ***** +type patternFlowGtpExtensionExtensionLengthCounter struct { validation - obj *otg.PatternFlowGtpv2VersionCounter + obj *otg.PatternFlowGtpExtensionExtensionLengthCounter } -func NewPatternFlowGtpv2VersionCounter() PatternFlowGtpv2VersionCounter { - obj := patternFlowGtpv2VersionCounter{obj: &otg.PatternFlowGtpv2VersionCounter{}} +func NewPatternFlowGtpExtensionExtensionLengthCounter() PatternFlowGtpExtensionExtensionLengthCounter { + obj := patternFlowGtpExtensionExtensionLengthCounter{obj: &otg.PatternFlowGtpExtensionExtensionLengthCounter{}} obj.setDefault() return &obj } -func (obj *patternFlowGtpv2VersionCounter) Msg() *otg.PatternFlowGtpv2VersionCounter { +func (obj *patternFlowGtpExtensionExtensionLengthCounter) Msg() *otg.PatternFlowGtpExtensionExtensionLengthCounter { return obj.obj } -func (obj *patternFlowGtpv2VersionCounter) SetMsg(msg *otg.PatternFlowGtpv2VersionCounter) PatternFlowGtpv2VersionCounter { +func (obj *patternFlowGtpExtensionExtensionLengthCounter) SetMsg(msg *otg.PatternFlowGtpExtensionExtensionLengthCounter) PatternFlowGtpExtensionExtensionLengthCounter { proto.Merge(obj.obj, msg) return obj } -func (obj *patternFlowGtpv2VersionCounter) ToProto() (*otg.PatternFlowGtpv2VersionCounter, error) { +func (obj *patternFlowGtpExtensionExtensionLengthCounter) ToProto() (*otg.PatternFlowGtpExtensionExtensionLengthCounter, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -246666,7 +291940,7 @@ func (obj *patternFlowGtpv2VersionCounter) ToProto() (*otg.PatternFlowGtpv2Versi return obj.Msg(), nil } -func (obj *patternFlowGtpv2VersionCounter) FromProto(msg *otg.PatternFlowGtpv2VersionCounter) (PatternFlowGtpv2VersionCounter, error) { +func (obj *patternFlowGtpExtensionExtensionLengthCounter) FromProto(msg *otg.PatternFlowGtpExtensionExtensionLengthCounter) (PatternFlowGtpExtensionExtensionLengthCounter, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -246675,7 +291949,7 @@ func (obj *patternFlowGtpv2VersionCounter) FromProto(msg *otg.PatternFlowGtpv2Ve return newObj, nil } -func (obj *patternFlowGtpv2VersionCounter) ToPbText() (string, error) { +func (obj *patternFlowGtpExtensionExtensionLengthCounter) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -246687,7 +291961,7 @@ func (obj *patternFlowGtpv2VersionCounter) ToPbText() (string, error) { return string(protoMarshal), nil } -func (obj *patternFlowGtpv2VersionCounter) FromPbText(value string) error { +func (obj *patternFlowGtpExtensionExtensionLengthCounter) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj @@ -246700,7 +291974,7 @@ func (obj *patternFlowGtpv2VersionCounter) FromPbText(value string) error { return retObj } -func (obj *patternFlowGtpv2VersionCounter) ToYaml() (string, error) { +func (obj *patternFlowGtpExtensionExtensionLengthCounter) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -246721,7 +291995,7 @@ func (obj *patternFlowGtpv2VersionCounter) ToYaml() (string, error) { return string(data), nil } -func (obj *patternFlowGtpv2VersionCounter) FromYaml(value string) error { +func (obj *patternFlowGtpExtensionExtensionLengthCounter) FromYaml(value string) error { if value == "" { value = "{}" } @@ -246746,7 +292020,7 @@ func (obj *patternFlowGtpv2VersionCounter) FromYaml(value string) error { return nil } -func (obj *patternFlowGtpv2VersionCounter) ToJson() (string, error) { +func (obj *patternFlowGtpExtensionExtensionLengthCounter) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -246764,7 +292038,7 @@ func (obj *patternFlowGtpv2VersionCounter) ToJson() (string, error) { return string(data), nil } -func (obj *patternFlowGtpv2VersionCounter) FromJson(value string) error { +func (obj *patternFlowGtpExtensionExtensionLengthCounter) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -246785,19 +292059,19 @@ func (obj *patternFlowGtpv2VersionCounter) FromJson(value string) error { return nil } -func (obj *patternFlowGtpv2VersionCounter) validateToAndFrom() error { +func (obj *patternFlowGtpExtensionExtensionLengthCounter) validateToAndFrom() error { // emptyVars() obj.validateObj(&obj.validation, true) return obj.validationResult() } -func (obj *patternFlowGtpv2VersionCounter) Validate() error { +func (obj *patternFlowGtpExtensionExtensionLengthCounter) Validate() error { // emptyVars() obj.validateObj(&obj.validation, false) return obj.validationResult() } -func (obj *patternFlowGtpv2VersionCounter) String() string { +func (obj *patternFlowGtpExtensionExtensionLengthCounter) String() string { str, err := obj.ToYaml() if err != nil { return err.Error() @@ -246805,12 +292079,12 @@ func (obj *patternFlowGtpv2VersionCounter) String() string { return str } -func (obj *patternFlowGtpv2VersionCounter) Clone() (PatternFlowGtpv2VersionCounter, error) { +func (obj *patternFlowGtpExtensionExtensionLengthCounter) Clone() (PatternFlowGtpExtensionExtensionLengthCounter, error) { vErr := obj.Validate() if vErr != nil { return nil, vErr } - newObj := NewPatternFlowGtpv2VersionCounter() + newObj := NewPatternFlowGtpExtensionExtensionLengthCounter() data, err := proto.Marshal(obj.Msg()) if err != nil { return nil, err @@ -246822,63 +292096,63 @@ func (obj *patternFlowGtpv2VersionCounter) Clone() (PatternFlowGtpv2VersionCount return newObj, nil } -// PatternFlowGtpv2VersionCounter is integer counter pattern -type PatternFlowGtpv2VersionCounter interface { +// PatternFlowGtpExtensionExtensionLengthCounter is integer counter pattern +type PatternFlowGtpExtensionExtensionLengthCounter interface { Validation - // Msg marshals PatternFlowGtpv2VersionCounter to protobuf object *otg.PatternFlowGtpv2VersionCounter + // Msg marshals PatternFlowGtpExtensionExtensionLengthCounter to protobuf object *otg.PatternFlowGtpExtensionExtensionLengthCounter // and doesn't set defaults - Msg() *otg.PatternFlowGtpv2VersionCounter - // SetMsg unmarshals PatternFlowGtpv2VersionCounter from protobuf object *otg.PatternFlowGtpv2VersionCounter + Msg() *otg.PatternFlowGtpExtensionExtensionLengthCounter + // SetMsg unmarshals PatternFlowGtpExtensionExtensionLengthCounter from protobuf object *otg.PatternFlowGtpExtensionExtensionLengthCounter // and doesn't set defaults - SetMsg(*otg.PatternFlowGtpv2VersionCounter) PatternFlowGtpv2VersionCounter - // ToProto marshals PatternFlowGtpv2VersionCounter to protobuf object *otg.PatternFlowGtpv2VersionCounter - ToProto() (*otg.PatternFlowGtpv2VersionCounter, error) - // ToPbText marshals PatternFlowGtpv2VersionCounter to protobuf text + SetMsg(*otg.PatternFlowGtpExtensionExtensionLengthCounter) PatternFlowGtpExtensionExtensionLengthCounter + // ToProto marshals PatternFlowGtpExtensionExtensionLengthCounter to protobuf object *otg.PatternFlowGtpExtensionExtensionLengthCounter + ToProto() (*otg.PatternFlowGtpExtensionExtensionLengthCounter, error) + // ToPbText marshals PatternFlowGtpExtensionExtensionLengthCounter to protobuf text ToPbText() (string, error) - // ToYaml marshals PatternFlowGtpv2VersionCounter to YAML text + // ToYaml marshals PatternFlowGtpExtensionExtensionLengthCounter to YAML text ToYaml() (string, error) - // ToJson marshals PatternFlowGtpv2VersionCounter to JSON text + // ToJson marshals PatternFlowGtpExtensionExtensionLengthCounter to JSON text ToJson() (string, error) - // FromProto unmarshals PatternFlowGtpv2VersionCounter from protobuf object *otg.PatternFlowGtpv2VersionCounter - FromProto(msg *otg.PatternFlowGtpv2VersionCounter) (PatternFlowGtpv2VersionCounter, error) - // FromPbText unmarshals PatternFlowGtpv2VersionCounter from protobuf text + // FromProto unmarshals PatternFlowGtpExtensionExtensionLengthCounter from protobuf object *otg.PatternFlowGtpExtensionExtensionLengthCounter + FromProto(msg *otg.PatternFlowGtpExtensionExtensionLengthCounter) (PatternFlowGtpExtensionExtensionLengthCounter, error) + // FromPbText unmarshals PatternFlowGtpExtensionExtensionLengthCounter from protobuf text FromPbText(value string) error - // FromYaml unmarshals PatternFlowGtpv2VersionCounter from YAML text + // FromYaml unmarshals PatternFlowGtpExtensionExtensionLengthCounter from YAML text FromYaml(value string) error - // FromJson unmarshals PatternFlowGtpv2VersionCounter from JSON text + // FromJson unmarshals PatternFlowGtpExtensionExtensionLengthCounter from JSON text FromJson(value string) error - // Validate validates PatternFlowGtpv2VersionCounter + // Validate validates PatternFlowGtpExtensionExtensionLengthCounter Validate() error // A stringer function String() string // Clones the object - Clone() (PatternFlowGtpv2VersionCounter, error) + Clone() (PatternFlowGtpExtensionExtensionLengthCounter, error) validateToAndFrom() error validateObj(vObj *validation, set_default bool) setDefault() - // Start returns uint32, set in PatternFlowGtpv2VersionCounter. + // Start returns uint32, set in PatternFlowGtpExtensionExtensionLengthCounter. Start() uint32 - // SetStart assigns uint32 provided by user to PatternFlowGtpv2VersionCounter - SetStart(value uint32) PatternFlowGtpv2VersionCounter - // HasStart checks if Start has been set in PatternFlowGtpv2VersionCounter + // SetStart assigns uint32 provided by user to PatternFlowGtpExtensionExtensionLengthCounter + SetStart(value uint32) PatternFlowGtpExtensionExtensionLengthCounter + // HasStart checks if Start has been set in PatternFlowGtpExtensionExtensionLengthCounter HasStart() bool - // Step returns uint32, set in PatternFlowGtpv2VersionCounter. + // Step returns uint32, set in PatternFlowGtpExtensionExtensionLengthCounter. Step() uint32 - // SetStep assigns uint32 provided by user to PatternFlowGtpv2VersionCounter - SetStep(value uint32) PatternFlowGtpv2VersionCounter - // HasStep checks if Step has been set in PatternFlowGtpv2VersionCounter + // SetStep assigns uint32 provided by user to PatternFlowGtpExtensionExtensionLengthCounter + SetStep(value uint32) PatternFlowGtpExtensionExtensionLengthCounter + // HasStep checks if Step has been set in PatternFlowGtpExtensionExtensionLengthCounter HasStep() bool - // Count returns uint32, set in PatternFlowGtpv2VersionCounter. + // Count returns uint32, set in PatternFlowGtpExtensionExtensionLengthCounter. Count() uint32 - // SetCount assigns uint32 provided by user to PatternFlowGtpv2VersionCounter - SetCount(value uint32) PatternFlowGtpv2VersionCounter - // HasCount checks if Count has been set in PatternFlowGtpv2VersionCounter + // SetCount assigns uint32 provided by user to PatternFlowGtpExtensionExtensionLengthCounter + SetCount(value uint32) PatternFlowGtpExtensionExtensionLengthCounter + // HasCount checks if Count has been set in PatternFlowGtpExtensionExtensionLengthCounter HasCount() bool } // description is TBD // Start returns a uint32 -func (obj *patternFlowGtpv2VersionCounter) Start() uint32 { +func (obj *patternFlowGtpExtensionExtensionLengthCounter) Start() uint32 { return *obj.obj.Start @@ -246886,13 +292160,13 @@ func (obj *patternFlowGtpv2VersionCounter) Start() uint32 { // description is TBD // Start returns a uint32 -func (obj *patternFlowGtpv2VersionCounter) HasStart() bool { +func (obj *patternFlowGtpExtensionExtensionLengthCounter) HasStart() bool { return obj.obj.Start != nil } // description is TBD -// SetStart sets the uint32 value in the PatternFlowGtpv2VersionCounter object -func (obj *patternFlowGtpv2VersionCounter) SetStart(value uint32) PatternFlowGtpv2VersionCounter { +// SetStart sets the uint32 value in the PatternFlowGtpExtensionExtensionLengthCounter object +func (obj *patternFlowGtpExtensionExtensionLengthCounter) SetStart(value uint32) PatternFlowGtpExtensionExtensionLengthCounter { obj.obj.Start = &value return obj @@ -246900,7 +292174,7 @@ func (obj *patternFlowGtpv2VersionCounter) SetStart(value uint32) PatternFlowGtp // description is TBD // Step returns a uint32 -func (obj *patternFlowGtpv2VersionCounter) Step() uint32 { +func (obj *patternFlowGtpExtensionExtensionLengthCounter) Step() uint32 { return *obj.obj.Step @@ -246908,13 +292182,13 @@ func (obj *patternFlowGtpv2VersionCounter) Step() uint32 { // description is TBD // Step returns a uint32 -func (obj *patternFlowGtpv2VersionCounter) HasStep() bool { +func (obj *patternFlowGtpExtensionExtensionLengthCounter) HasStep() bool { return obj.obj.Step != nil } // description is TBD -// SetStep sets the uint32 value in the PatternFlowGtpv2VersionCounter object -func (obj *patternFlowGtpv2VersionCounter) SetStep(value uint32) PatternFlowGtpv2VersionCounter { +// SetStep sets the uint32 value in the PatternFlowGtpExtensionExtensionLengthCounter object +func (obj *patternFlowGtpExtensionExtensionLengthCounter) SetStep(value uint32) PatternFlowGtpExtensionExtensionLengthCounter { obj.obj.Step = &value return obj @@ -246922,7 +292196,7 @@ func (obj *patternFlowGtpv2VersionCounter) SetStep(value uint32) PatternFlowGtpv // description is TBD // Count returns a uint32 -func (obj *patternFlowGtpv2VersionCounter) Count() uint32 { +func (obj *patternFlowGtpExtensionExtensionLengthCounter) Count() uint32 { return *obj.obj.Count @@ -246930,58 +292204,58 @@ func (obj *patternFlowGtpv2VersionCounter) Count() uint32 { // description is TBD // Count returns a uint32 -func (obj *patternFlowGtpv2VersionCounter) HasCount() bool { +func (obj *patternFlowGtpExtensionExtensionLengthCounter) HasCount() bool { return obj.obj.Count != nil } // description is TBD -// SetCount sets the uint32 value in the PatternFlowGtpv2VersionCounter object -func (obj *patternFlowGtpv2VersionCounter) SetCount(value uint32) PatternFlowGtpv2VersionCounter { +// SetCount sets the uint32 value in the PatternFlowGtpExtensionExtensionLengthCounter object +func (obj *patternFlowGtpExtensionExtensionLengthCounter) SetCount(value uint32) PatternFlowGtpExtensionExtensionLengthCounter { obj.obj.Count = &value return obj } -func (obj *patternFlowGtpv2VersionCounter) validateObj(vObj *validation, set_default bool) { +func (obj *patternFlowGtpExtensionExtensionLengthCounter) validateObj(vObj *validation, set_default bool) { if set_default { obj.setDefault() } if obj.obj.Start != nil { - if *obj.obj.Start > 7 { + if *obj.obj.Start > 255 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowGtpv2VersionCounter.Start <= 7 but Got %d", *obj.obj.Start)) + fmt.Sprintf("0 <= PatternFlowGtpExtensionExtensionLengthCounter.Start <= 255 but Got %d", *obj.obj.Start)) } } if obj.obj.Step != nil { - if *obj.obj.Step > 7 { + if *obj.obj.Step > 255 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowGtpv2VersionCounter.Step <= 7 but Got %d", *obj.obj.Step)) + fmt.Sprintf("0 <= PatternFlowGtpExtensionExtensionLengthCounter.Step <= 255 but Got %d", *obj.obj.Step)) } } if obj.obj.Count != nil { - if *obj.obj.Count > 7 { + if *obj.obj.Count > 255 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowGtpv2VersionCounter.Count <= 7 but Got %d", *obj.obj.Count)) + fmt.Sprintf("0 <= PatternFlowGtpExtensionExtensionLengthCounter.Count <= 255 but Got %d", *obj.obj.Count)) } } } -func (obj *patternFlowGtpv2VersionCounter) setDefault() { +func (obj *patternFlowGtpExtensionExtensionLengthCounter) setDefault() { if obj.obj.Start == nil { - obj.SetStart(2) + obj.SetStart(0) } if obj.obj.Step == nil { obj.SetStep(1) @@ -246992,29 +292266,29 @@ func (obj *patternFlowGtpv2VersionCounter) setDefault() { } -// ***** PatternFlowGtpv2VersionMetricTag ***** -type patternFlowGtpv2VersionMetricTag struct { +// ***** PatternFlowGtpExtensionExtensionLengthMetricTag ***** +type patternFlowGtpExtensionExtensionLengthMetricTag struct { validation - obj *otg.PatternFlowGtpv2VersionMetricTag + obj *otg.PatternFlowGtpExtensionExtensionLengthMetricTag } -func NewPatternFlowGtpv2VersionMetricTag() PatternFlowGtpv2VersionMetricTag { - obj := patternFlowGtpv2VersionMetricTag{obj: &otg.PatternFlowGtpv2VersionMetricTag{}} +func NewPatternFlowGtpExtensionExtensionLengthMetricTag() PatternFlowGtpExtensionExtensionLengthMetricTag { + obj := patternFlowGtpExtensionExtensionLengthMetricTag{obj: &otg.PatternFlowGtpExtensionExtensionLengthMetricTag{}} obj.setDefault() return &obj } -func (obj *patternFlowGtpv2VersionMetricTag) Msg() *otg.PatternFlowGtpv2VersionMetricTag { +func (obj *patternFlowGtpExtensionExtensionLengthMetricTag) Msg() *otg.PatternFlowGtpExtensionExtensionLengthMetricTag { return obj.obj } -func (obj *patternFlowGtpv2VersionMetricTag) SetMsg(msg *otg.PatternFlowGtpv2VersionMetricTag) PatternFlowGtpv2VersionMetricTag { +func (obj *patternFlowGtpExtensionExtensionLengthMetricTag) SetMsg(msg *otg.PatternFlowGtpExtensionExtensionLengthMetricTag) PatternFlowGtpExtensionExtensionLengthMetricTag { proto.Merge(obj.obj, msg) return obj } -func (obj *patternFlowGtpv2VersionMetricTag) ToProto() (*otg.PatternFlowGtpv2VersionMetricTag, error) { +func (obj *patternFlowGtpExtensionExtensionLengthMetricTag) ToProto() (*otg.PatternFlowGtpExtensionExtensionLengthMetricTag, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -247022,7 +292296,7 @@ func (obj *patternFlowGtpv2VersionMetricTag) ToProto() (*otg.PatternFlowGtpv2Ver return obj.Msg(), nil } -func (obj *patternFlowGtpv2VersionMetricTag) FromProto(msg *otg.PatternFlowGtpv2VersionMetricTag) (PatternFlowGtpv2VersionMetricTag, error) { +func (obj *patternFlowGtpExtensionExtensionLengthMetricTag) FromProto(msg *otg.PatternFlowGtpExtensionExtensionLengthMetricTag) (PatternFlowGtpExtensionExtensionLengthMetricTag, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -247031,7 +292305,7 @@ func (obj *patternFlowGtpv2VersionMetricTag) FromProto(msg *otg.PatternFlowGtpv2 return newObj, nil } -func (obj *patternFlowGtpv2VersionMetricTag) ToPbText() (string, error) { +func (obj *patternFlowGtpExtensionExtensionLengthMetricTag) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -247043,7 +292317,7 @@ func (obj *patternFlowGtpv2VersionMetricTag) ToPbText() (string, error) { return string(protoMarshal), nil } -func (obj *patternFlowGtpv2VersionMetricTag) FromPbText(value string) error { +func (obj *patternFlowGtpExtensionExtensionLengthMetricTag) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj @@ -247056,7 +292330,7 @@ func (obj *patternFlowGtpv2VersionMetricTag) FromPbText(value string) error { return retObj } -func (obj *patternFlowGtpv2VersionMetricTag) ToYaml() (string, error) { +func (obj *patternFlowGtpExtensionExtensionLengthMetricTag) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -247077,7 +292351,7 @@ func (obj *patternFlowGtpv2VersionMetricTag) ToYaml() (string, error) { return string(data), nil } -func (obj *patternFlowGtpv2VersionMetricTag) FromYaml(value string) error { +func (obj *patternFlowGtpExtensionExtensionLengthMetricTag) FromYaml(value string) error { if value == "" { value = "{}" } @@ -247102,7 +292376,7 @@ func (obj *patternFlowGtpv2VersionMetricTag) FromYaml(value string) error { return nil } -func (obj *patternFlowGtpv2VersionMetricTag) ToJson() (string, error) { +func (obj *patternFlowGtpExtensionExtensionLengthMetricTag) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -247120,7 +292394,7 @@ func (obj *patternFlowGtpv2VersionMetricTag) ToJson() (string, error) { return string(data), nil } -func (obj *patternFlowGtpv2VersionMetricTag) FromJson(value string) error { +func (obj *patternFlowGtpExtensionExtensionLengthMetricTag) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -247141,19 +292415,19 @@ func (obj *patternFlowGtpv2VersionMetricTag) FromJson(value string) error { return nil } -func (obj *patternFlowGtpv2VersionMetricTag) validateToAndFrom() error { +func (obj *patternFlowGtpExtensionExtensionLengthMetricTag) validateToAndFrom() error { // emptyVars() obj.validateObj(&obj.validation, true) return obj.validationResult() } -func (obj *patternFlowGtpv2VersionMetricTag) Validate() error { +func (obj *patternFlowGtpExtensionExtensionLengthMetricTag) Validate() error { // emptyVars() obj.validateObj(&obj.validation, false) return obj.validationResult() } -func (obj *patternFlowGtpv2VersionMetricTag) String() string { +func (obj *patternFlowGtpExtensionExtensionLengthMetricTag) String() string { str, err := obj.ToYaml() if err != nil { return err.Error() @@ -247161,12 +292435,12 @@ func (obj *patternFlowGtpv2VersionMetricTag) String() string { return str } -func (obj *patternFlowGtpv2VersionMetricTag) Clone() (PatternFlowGtpv2VersionMetricTag, error) { +func (obj *patternFlowGtpExtensionExtensionLengthMetricTag) Clone() (PatternFlowGtpExtensionExtensionLengthMetricTag, error) { vErr := obj.Validate() if vErr != nil { return nil, vErr } - newObj := NewPatternFlowGtpv2VersionMetricTag() + newObj := NewPatternFlowGtpExtensionExtensionLengthMetricTag() data, err := proto.Marshal(obj.Msg()) if err != nil { return nil, err @@ -247178,69 +292452,69 @@ func (obj *patternFlowGtpv2VersionMetricTag) Clone() (PatternFlowGtpv2VersionMet return newObj, nil } -// PatternFlowGtpv2VersionMetricTag is metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. -type PatternFlowGtpv2VersionMetricTag interface { +// PatternFlowGtpExtensionExtensionLengthMetricTag is metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. +type PatternFlowGtpExtensionExtensionLengthMetricTag interface { Validation - // Msg marshals PatternFlowGtpv2VersionMetricTag to protobuf object *otg.PatternFlowGtpv2VersionMetricTag + // Msg marshals PatternFlowGtpExtensionExtensionLengthMetricTag to protobuf object *otg.PatternFlowGtpExtensionExtensionLengthMetricTag // and doesn't set defaults - Msg() *otg.PatternFlowGtpv2VersionMetricTag - // SetMsg unmarshals PatternFlowGtpv2VersionMetricTag from protobuf object *otg.PatternFlowGtpv2VersionMetricTag + Msg() *otg.PatternFlowGtpExtensionExtensionLengthMetricTag + // SetMsg unmarshals PatternFlowGtpExtensionExtensionLengthMetricTag from protobuf object *otg.PatternFlowGtpExtensionExtensionLengthMetricTag // and doesn't set defaults - SetMsg(*otg.PatternFlowGtpv2VersionMetricTag) PatternFlowGtpv2VersionMetricTag - // ToProto marshals PatternFlowGtpv2VersionMetricTag to protobuf object *otg.PatternFlowGtpv2VersionMetricTag - ToProto() (*otg.PatternFlowGtpv2VersionMetricTag, error) - // ToPbText marshals PatternFlowGtpv2VersionMetricTag to protobuf text + SetMsg(*otg.PatternFlowGtpExtensionExtensionLengthMetricTag) PatternFlowGtpExtensionExtensionLengthMetricTag + // ToProto marshals PatternFlowGtpExtensionExtensionLengthMetricTag to protobuf object *otg.PatternFlowGtpExtensionExtensionLengthMetricTag + ToProto() (*otg.PatternFlowGtpExtensionExtensionLengthMetricTag, error) + // ToPbText marshals PatternFlowGtpExtensionExtensionLengthMetricTag to protobuf text ToPbText() (string, error) - // ToYaml marshals PatternFlowGtpv2VersionMetricTag to YAML text + // ToYaml marshals PatternFlowGtpExtensionExtensionLengthMetricTag to YAML text ToYaml() (string, error) - // ToJson marshals PatternFlowGtpv2VersionMetricTag to JSON text + // ToJson marshals PatternFlowGtpExtensionExtensionLengthMetricTag to JSON text ToJson() (string, error) - // FromProto unmarshals PatternFlowGtpv2VersionMetricTag from protobuf object *otg.PatternFlowGtpv2VersionMetricTag - FromProto(msg *otg.PatternFlowGtpv2VersionMetricTag) (PatternFlowGtpv2VersionMetricTag, error) - // FromPbText unmarshals PatternFlowGtpv2VersionMetricTag from protobuf text + // FromProto unmarshals PatternFlowGtpExtensionExtensionLengthMetricTag from protobuf object *otg.PatternFlowGtpExtensionExtensionLengthMetricTag + FromProto(msg *otg.PatternFlowGtpExtensionExtensionLengthMetricTag) (PatternFlowGtpExtensionExtensionLengthMetricTag, error) + // FromPbText unmarshals PatternFlowGtpExtensionExtensionLengthMetricTag from protobuf text FromPbText(value string) error - // FromYaml unmarshals PatternFlowGtpv2VersionMetricTag from YAML text + // FromYaml unmarshals PatternFlowGtpExtensionExtensionLengthMetricTag from YAML text FromYaml(value string) error - // FromJson unmarshals PatternFlowGtpv2VersionMetricTag from JSON text + // FromJson unmarshals PatternFlowGtpExtensionExtensionLengthMetricTag from JSON text FromJson(value string) error - // Validate validates PatternFlowGtpv2VersionMetricTag + // Validate validates PatternFlowGtpExtensionExtensionLengthMetricTag Validate() error // A stringer function String() string // Clones the object - Clone() (PatternFlowGtpv2VersionMetricTag, error) + Clone() (PatternFlowGtpExtensionExtensionLengthMetricTag, error) validateToAndFrom() error validateObj(vObj *validation, set_default bool) setDefault() - // Name returns string, set in PatternFlowGtpv2VersionMetricTag. + // Name returns string, set in PatternFlowGtpExtensionExtensionLengthMetricTag. Name() string - // SetName assigns string provided by user to PatternFlowGtpv2VersionMetricTag - SetName(value string) PatternFlowGtpv2VersionMetricTag - // Offset returns uint32, set in PatternFlowGtpv2VersionMetricTag. + // SetName assigns string provided by user to PatternFlowGtpExtensionExtensionLengthMetricTag + SetName(value string) PatternFlowGtpExtensionExtensionLengthMetricTag + // Offset returns uint32, set in PatternFlowGtpExtensionExtensionLengthMetricTag. Offset() uint32 - // SetOffset assigns uint32 provided by user to PatternFlowGtpv2VersionMetricTag - SetOffset(value uint32) PatternFlowGtpv2VersionMetricTag - // HasOffset checks if Offset has been set in PatternFlowGtpv2VersionMetricTag + // SetOffset assigns uint32 provided by user to PatternFlowGtpExtensionExtensionLengthMetricTag + SetOffset(value uint32) PatternFlowGtpExtensionExtensionLengthMetricTag + // HasOffset checks if Offset has been set in PatternFlowGtpExtensionExtensionLengthMetricTag HasOffset() bool - // Length returns uint32, set in PatternFlowGtpv2VersionMetricTag. + // Length returns uint32, set in PatternFlowGtpExtensionExtensionLengthMetricTag. Length() uint32 - // SetLength assigns uint32 provided by user to PatternFlowGtpv2VersionMetricTag - SetLength(value uint32) PatternFlowGtpv2VersionMetricTag - // HasLength checks if Length has been set in PatternFlowGtpv2VersionMetricTag + // SetLength assigns uint32 provided by user to PatternFlowGtpExtensionExtensionLengthMetricTag + SetLength(value uint32) PatternFlowGtpExtensionExtensionLengthMetricTag + // HasLength checks if Length has been set in PatternFlowGtpExtensionExtensionLengthMetricTag HasLength() bool } // Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field // Name returns a string -func (obj *patternFlowGtpv2VersionMetricTag) Name() string { +func (obj *patternFlowGtpExtensionExtensionLengthMetricTag) Name() string { return *obj.obj.Name } // Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field -// SetName sets the string value in the PatternFlowGtpv2VersionMetricTag object -func (obj *patternFlowGtpv2VersionMetricTag) SetName(value string) PatternFlowGtpv2VersionMetricTag { +// SetName sets the string value in the PatternFlowGtpExtensionExtensionLengthMetricTag object +func (obj *patternFlowGtpExtensionExtensionLengthMetricTag) SetName(value string) PatternFlowGtpExtensionExtensionLengthMetricTag { obj.obj.Name = &value return obj @@ -247248,7 +292522,7 @@ func (obj *patternFlowGtpv2VersionMetricTag) SetName(value string) PatternFlowGt // Offset in bits relative to start of corresponding header field // Offset returns a uint32 -func (obj *patternFlowGtpv2VersionMetricTag) Offset() uint32 { +func (obj *patternFlowGtpExtensionExtensionLengthMetricTag) Offset() uint32 { return *obj.obj.Offset @@ -247256,13 +292530,13 @@ func (obj *patternFlowGtpv2VersionMetricTag) Offset() uint32 { // Offset in bits relative to start of corresponding header field // Offset returns a uint32 -func (obj *patternFlowGtpv2VersionMetricTag) HasOffset() bool { +func (obj *patternFlowGtpExtensionExtensionLengthMetricTag) HasOffset() bool { return obj.obj.Offset != nil } // Offset in bits relative to start of corresponding header field -// SetOffset sets the uint32 value in the PatternFlowGtpv2VersionMetricTag object -func (obj *patternFlowGtpv2VersionMetricTag) SetOffset(value uint32) PatternFlowGtpv2VersionMetricTag { +// SetOffset sets the uint32 value in the PatternFlowGtpExtensionExtensionLengthMetricTag object +func (obj *patternFlowGtpExtensionExtensionLengthMetricTag) SetOffset(value uint32) PatternFlowGtpExtensionExtensionLengthMetricTag { obj.obj.Offset = &value return obj @@ -247270,7 +292544,7 @@ func (obj *patternFlowGtpv2VersionMetricTag) SetOffset(value uint32) PatternFlow // Number of bits to track for metrics starting from configured offset of corresponding header field // Length returns a uint32 -func (obj *patternFlowGtpv2VersionMetricTag) Length() uint32 { +func (obj *patternFlowGtpExtensionExtensionLengthMetricTag) Length() uint32 { return *obj.obj.Length @@ -247278,83 +292552,83 @@ func (obj *patternFlowGtpv2VersionMetricTag) Length() uint32 { // Number of bits to track for metrics starting from configured offset of corresponding header field // Length returns a uint32 -func (obj *patternFlowGtpv2VersionMetricTag) HasLength() bool { +func (obj *patternFlowGtpExtensionExtensionLengthMetricTag) HasLength() bool { return obj.obj.Length != nil } // Number of bits to track for metrics starting from configured offset of corresponding header field -// SetLength sets the uint32 value in the PatternFlowGtpv2VersionMetricTag object -func (obj *patternFlowGtpv2VersionMetricTag) SetLength(value uint32) PatternFlowGtpv2VersionMetricTag { +// SetLength sets the uint32 value in the PatternFlowGtpExtensionExtensionLengthMetricTag object +func (obj *patternFlowGtpExtensionExtensionLengthMetricTag) SetLength(value uint32) PatternFlowGtpExtensionExtensionLengthMetricTag { obj.obj.Length = &value return obj } -func (obj *patternFlowGtpv2VersionMetricTag) validateObj(vObj *validation, set_default bool) { +func (obj *patternFlowGtpExtensionExtensionLengthMetricTag) validateObj(vObj *validation, set_default bool) { if set_default { obj.setDefault() } // Name is required if obj.obj.Name == nil { - vObj.validationErrors = append(vObj.validationErrors, "Name is required field on interface PatternFlowGtpv2VersionMetricTag") + vObj.validationErrors = append(vObj.validationErrors, "Name is required field on interface PatternFlowGtpExtensionExtensionLengthMetricTag") } if obj.obj.Offset != nil { - if *obj.obj.Offset > 2 { + if *obj.obj.Offset > 7 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowGtpv2VersionMetricTag.Offset <= 2 but Got %d", *obj.obj.Offset)) + fmt.Sprintf("0 <= PatternFlowGtpExtensionExtensionLengthMetricTag.Offset <= 7 but Got %d", *obj.obj.Offset)) } } if obj.obj.Length != nil { - if *obj.obj.Length < 1 || *obj.obj.Length > 3 { + if *obj.obj.Length < 1 || *obj.obj.Length > 8 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("1 <= PatternFlowGtpv2VersionMetricTag.Length <= 3 but Got %d", *obj.obj.Length)) + fmt.Sprintf("1 <= PatternFlowGtpExtensionExtensionLengthMetricTag.Length <= 8 but Got %d", *obj.obj.Length)) } } } -func (obj *patternFlowGtpv2VersionMetricTag) setDefault() { +func (obj *patternFlowGtpExtensionExtensionLengthMetricTag) setDefault() { if obj.obj.Offset == nil { obj.SetOffset(0) } if obj.obj.Length == nil { - obj.SetLength(3) + obj.SetLength(8) } } -// ***** PatternFlowGtpv2PiggybackingFlagCounter ***** -type patternFlowGtpv2PiggybackingFlagCounter struct { +// ***** PatternFlowGtpExtensionContentsCounter ***** +type patternFlowGtpExtensionContentsCounter struct { validation - obj *otg.PatternFlowGtpv2PiggybackingFlagCounter + obj *otg.PatternFlowGtpExtensionContentsCounter } -func NewPatternFlowGtpv2PiggybackingFlagCounter() PatternFlowGtpv2PiggybackingFlagCounter { - obj := patternFlowGtpv2PiggybackingFlagCounter{obj: &otg.PatternFlowGtpv2PiggybackingFlagCounter{}} +func NewPatternFlowGtpExtensionContentsCounter() PatternFlowGtpExtensionContentsCounter { + obj := patternFlowGtpExtensionContentsCounter{obj: &otg.PatternFlowGtpExtensionContentsCounter{}} obj.setDefault() return &obj } -func (obj *patternFlowGtpv2PiggybackingFlagCounter) Msg() *otg.PatternFlowGtpv2PiggybackingFlagCounter { +func (obj *patternFlowGtpExtensionContentsCounter) Msg() *otg.PatternFlowGtpExtensionContentsCounter { return obj.obj } -func (obj *patternFlowGtpv2PiggybackingFlagCounter) SetMsg(msg *otg.PatternFlowGtpv2PiggybackingFlagCounter) PatternFlowGtpv2PiggybackingFlagCounter { +func (obj *patternFlowGtpExtensionContentsCounter) SetMsg(msg *otg.PatternFlowGtpExtensionContentsCounter) PatternFlowGtpExtensionContentsCounter { proto.Merge(obj.obj, msg) return obj } -func (obj *patternFlowGtpv2PiggybackingFlagCounter) ToProto() (*otg.PatternFlowGtpv2PiggybackingFlagCounter, error) { +func (obj *patternFlowGtpExtensionContentsCounter) ToProto() (*otg.PatternFlowGtpExtensionContentsCounter, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -247362,7 +292636,7 @@ func (obj *patternFlowGtpv2PiggybackingFlagCounter) ToProto() (*otg.PatternFlowG return obj.Msg(), nil } -func (obj *patternFlowGtpv2PiggybackingFlagCounter) FromProto(msg *otg.PatternFlowGtpv2PiggybackingFlagCounter) (PatternFlowGtpv2PiggybackingFlagCounter, error) { +func (obj *patternFlowGtpExtensionContentsCounter) FromProto(msg *otg.PatternFlowGtpExtensionContentsCounter) (PatternFlowGtpExtensionContentsCounter, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -247371,7 +292645,7 @@ func (obj *patternFlowGtpv2PiggybackingFlagCounter) FromProto(msg *otg.PatternFl return newObj, nil } -func (obj *patternFlowGtpv2PiggybackingFlagCounter) ToPbText() (string, error) { +func (obj *patternFlowGtpExtensionContentsCounter) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -247383,7 +292657,7 @@ func (obj *patternFlowGtpv2PiggybackingFlagCounter) ToPbText() (string, error) { return string(protoMarshal), nil } -func (obj *patternFlowGtpv2PiggybackingFlagCounter) FromPbText(value string) error { +func (obj *patternFlowGtpExtensionContentsCounter) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj @@ -247396,7 +292670,7 @@ func (obj *patternFlowGtpv2PiggybackingFlagCounter) FromPbText(value string) err return retObj } -func (obj *patternFlowGtpv2PiggybackingFlagCounter) ToYaml() (string, error) { +func (obj *patternFlowGtpExtensionContentsCounter) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -247417,7 +292691,7 @@ func (obj *patternFlowGtpv2PiggybackingFlagCounter) ToYaml() (string, error) { return string(data), nil } -func (obj *patternFlowGtpv2PiggybackingFlagCounter) FromYaml(value string) error { +func (obj *patternFlowGtpExtensionContentsCounter) FromYaml(value string) error { if value == "" { value = "{}" } @@ -247442,7 +292716,7 @@ func (obj *patternFlowGtpv2PiggybackingFlagCounter) FromYaml(value string) error return nil } -func (obj *patternFlowGtpv2PiggybackingFlagCounter) ToJson() (string, error) { +func (obj *patternFlowGtpExtensionContentsCounter) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -247460,7 +292734,7 @@ func (obj *patternFlowGtpv2PiggybackingFlagCounter) ToJson() (string, error) { return string(data), nil } -func (obj *patternFlowGtpv2PiggybackingFlagCounter) FromJson(value string) error { +func (obj *patternFlowGtpExtensionContentsCounter) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -247481,19 +292755,19 @@ func (obj *patternFlowGtpv2PiggybackingFlagCounter) FromJson(value string) error return nil } -func (obj *patternFlowGtpv2PiggybackingFlagCounter) validateToAndFrom() error { +func (obj *patternFlowGtpExtensionContentsCounter) validateToAndFrom() error { // emptyVars() obj.validateObj(&obj.validation, true) return obj.validationResult() } -func (obj *patternFlowGtpv2PiggybackingFlagCounter) Validate() error { +func (obj *patternFlowGtpExtensionContentsCounter) Validate() error { // emptyVars() obj.validateObj(&obj.validation, false) return obj.validationResult() } -func (obj *patternFlowGtpv2PiggybackingFlagCounter) String() string { +func (obj *patternFlowGtpExtensionContentsCounter) String() string { str, err := obj.ToYaml() if err != nil { return err.Error() @@ -247501,12 +292775,12 @@ func (obj *patternFlowGtpv2PiggybackingFlagCounter) String() string { return str } -func (obj *patternFlowGtpv2PiggybackingFlagCounter) Clone() (PatternFlowGtpv2PiggybackingFlagCounter, error) { +func (obj *patternFlowGtpExtensionContentsCounter) Clone() (PatternFlowGtpExtensionContentsCounter, error) { vErr := obj.Validate() if vErr != nil { return nil, vErr } - newObj := NewPatternFlowGtpv2PiggybackingFlagCounter() + newObj := NewPatternFlowGtpExtensionContentsCounter() data, err := proto.Marshal(obj.Msg()) if err != nil { return nil, err @@ -247518,164 +292792,164 @@ func (obj *patternFlowGtpv2PiggybackingFlagCounter) Clone() (PatternFlowGtpv2Pig return newObj, nil } -// PatternFlowGtpv2PiggybackingFlagCounter is integer counter pattern -type PatternFlowGtpv2PiggybackingFlagCounter interface { +// PatternFlowGtpExtensionContentsCounter is integer counter pattern +type PatternFlowGtpExtensionContentsCounter interface { Validation - // Msg marshals PatternFlowGtpv2PiggybackingFlagCounter to protobuf object *otg.PatternFlowGtpv2PiggybackingFlagCounter + // Msg marshals PatternFlowGtpExtensionContentsCounter to protobuf object *otg.PatternFlowGtpExtensionContentsCounter // and doesn't set defaults - Msg() *otg.PatternFlowGtpv2PiggybackingFlagCounter - // SetMsg unmarshals PatternFlowGtpv2PiggybackingFlagCounter from protobuf object *otg.PatternFlowGtpv2PiggybackingFlagCounter + Msg() *otg.PatternFlowGtpExtensionContentsCounter + // SetMsg unmarshals PatternFlowGtpExtensionContentsCounter from protobuf object *otg.PatternFlowGtpExtensionContentsCounter // and doesn't set defaults - SetMsg(*otg.PatternFlowGtpv2PiggybackingFlagCounter) PatternFlowGtpv2PiggybackingFlagCounter - // ToProto marshals PatternFlowGtpv2PiggybackingFlagCounter to protobuf object *otg.PatternFlowGtpv2PiggybackingFlagCounter - ToProto() (*otg.PatternFlowGtpv2PiggybackingFlagCounter, error) - // ToPbText marshals PatternFlowGtpv2PiggybackingFlagCounter to protobuf text + SetMsg(*otg.PatternFlowGtpExtensionContentsCounter) PatternFlowGtpExtensionContentsCounter + // ToProto marshals PatternFlowGtpExtensionContentsCounter to protobuf object *otg.PatternFlowGtpExtensionContentsCounter + ToProto() (*otg.PatternFlowGtpExtensionContentsCounter, error) + // ToPbText marshals PatternFlowGtpExtensionContentsCounter to protobuf text ToPbText() (string, error) - // ToYaml marshals PatternFlowGtpv2PiggybackingFlagCounter to YAML text + // ToYaml marshals PatternFlowGtpExtensionContentsCounter to YAML text ToYaml() (string, error) - // ToJson marshals PatternFlowGtpv2PiggybackingFlagCounter to JSON text + // ToJson marshals PatternFlowGtpExtensionContentsCounter to JSON text ToJson() (string, error) - // FromProto unmarshals PatternFlowGtpv2PiggybackingFlagCounter from protobuf object *otg.PatternFlowGtpv2PiggybackingFlagCounter - FromProto(msg *otg.PatternFlowGtpv2PiggybackingFlagCounter) (PatternFlowGtpv2PiggybackingFlagCounter, error) - // FromPbText unmarshals PatternFlowGtpv2PiggybackingFlagCounter from protobuf text + // FromProto unmarshals PatternFlowGtpExtensionContentsCounter from protobuf object *otg.PatternFlowGtpExtensionContentsCounter + FromProto(msg *otg.PatternFlowGtpExtensionContentsCounter) (PatternFlowGtpExtensionContentsCounter, error) + // FromPbText unmarshals PatternFlowGtpExtensionContentsCounter from protobuf text FromPbText(value string) error - // FromYaml unmarshals PatternFlowGtpv2PiggybackingFlagCounter from YAML text + // FromYaml unmarshals PatternFlowGtpExtensionContentsCounter from YAML text FromYaml(value string) error - // FromJson unmarshals PatternFlowGtpv2PiggybackingFlagCounter from JSON text + // FromJson unmarshals PatternFlowGtpExtensionContentsCounter from JSON text FromJson(value string) error - // Validate validates PatternFlowGtpv2PiggybackingFlagCounter + // Validate validates PatternFlowGtpExtensionContentsCounter Validate() error // A stringer function String() string // Clones the object - Clone() (PatternFlowGtpv2PiggybackingFlagCounter, error) + Clone() (PatternFlowGtpExtensionContentsCounter, error) validateToAndFrom() error validateObj(vObj *validation, set_default bool) setDefault() - // Start returns uint32, set in PatternFlowGtpv2PiggybackingFlagCounter. - Start() uint32 - // SetStart assigns uint32 provided by user to PatternFlowGtpv2PiggybackingFlagCounter - SetStart(value uint32) PatternFlowGtpv2PiggybackingFlagCounter - // HasStart checks if Start has been set in PatternFlowGtpv2PiggybackingFlagCounter + // Start returns uint64, set in PatternFlowGtpExtensionContentsCounter. + Start() uint64 + // SetStart assigns uint64 provided by user to PatternFlowGtpExtensionContentsCounter + SetStart(value uint64) PatternFlowGtpExtensionContentsCounter + // HasStart checks if Start has been set in PatternFlowGtpExtensionContentsCounter HasStart() bool - // Step returns uint32, set in PatternFlowGtpv2PiggybackingFlagCounter. - Step() uint32 - // SetStep assigns uint32 provided by user to PatternFlowGtpv2PiggybackingFlagCounter - SetStep(value uint32) PatternFlowGtpv2PiggybackingFlagCounter - // HasStep checks if Step has been set in PatternFlowGtpv2PiggybackingFlagCounter + // Step returns uint64, set in PatternFlowGtpExtensionContentsCounter. + Step() uint64 + // SetStep assigns uint64 provided by user to PatternFlowGtpExtensionContentsCounter + SetStep(value uint64) PatternFlowGtpExtensionContentsCounter + // HasStep checks if Step has been set in PatternFlowGtpExtensionContentsCounter HasStep() bool - // Count returns uint32, set in PatternFlowGtpv2PiggybackingFlagCounter. - Count() uint32 - // SetCount assigns uint32 provided by user to PatternFlowGtpv2PiggybackingFlagCounter - SetCount(value uint32) PatternFlowGtpv2PiggybackingFlagCounter - // HasCount checks if Count has been set in PatternFlowGtpv2PiggybackingFlagCounter + // Count returns uint64, set in PatternFlowGtpExtensionContentsCounter. + Count() uint64 + // SetCount assigns uint64 provided by user to PatternFlowGtpExtensionContentsCounter + SetCount(value uint64) PatternFlowGtpExtensionContentsCounter + // HasCount checks if Count has been set in PatternFlowGtpExtensionContentsCounter HasCount() bool } // description is TBD -// Start returns a uint32 -func (obj *patternFlowGtpv2PiggybackingFlagCounter) Start() uint32 { +// Start returns a uint64 +func (obj *patternFlowGtpExtensionContentsCounter) Start() uint64 { return *obj.obj.Start } // description is TBD -// Start returns a uint32 -func (obj *patternFlowGtpv2PiggybackingFlagCounter) HasStart() bool { +// Start returns a uint64 +func (obj *patternFlowGtpExtensionContentsCounter) HasStart() bool { return obj.obj.Start != nil } // description is TBD -// SetStart sets the uint32 value in the PatternFlowGtpv2PiggybackingFlagCounter object -func (obj *patternFlowGtpv2PiggybackingFlagCounter) SetStart(value uint32) PatternFlowGtpv2PiggybackingFlagCounter { +// SetStart sets the uint64 value in the PatternFlowGtpExtensionContentsCounter object +func (obj *patternFlowGtpExtensionContentsCounter) SetStart(value uint64) PatternFlowGtpExtensionContentsCounter { obj.obj.Start = &value return obj } // description is TBD -// Step returns a uint32 -func (obj *patternFlowGtpv2PiggybackingFlagCounter) Step() uint32 { +// Step returns a uint64 +func (obj *patternFlowGtpExtensionContentsCounter) Step() uint64 { return *obj.obj.Step } // description is TBD -// Step returns a uint32 -func (obj *patternFlowGtpv2PiggybackingFlagCounter) HasStep() bool { +// Step returns a uint64 +func (obj *patternFlowGtpExtensionContentsCounter) HasStep() bool { return obj.obj.Step != nil } // description is TBD -// SetStep sets the uint32 value in the PatternFlowGtpv2PiggybackingFlagCounter object -func (obj *patternFlowGtpv2PiggybackingFlagCounter) SetStep(value uint32) PatternFlowGtpv2PiggybackingFlagCounter { +// SetStep sets the uint64 value in the PatternFlowGtpExtensionContentsCounter object +func (obj *patternFlowGtpExtensionContentsCounter) SetStep(value uint64) PatternFlowGtpExtensionContentsCounter { obj.obj.Step = &value return obj } // description is TBD -// Count returns a uint32 -func (obj *patternFlowGtpv2PiggybackingFlagCounter) Count() uint32 { +// Count returns a uint64 +func (obj *patternFlowGtpExtensionContentsCounter) Count() uint64 { return *obj.obj.Count } // description is TBD -// Count returns a uint32 -func (obj *patternFlowGtpv2PiggybackingFlagCounter) HasCount() bool { +// Count returns a uint64 +func (obj *patternFlowGtpExtensionContentsCounter) HasCount() bool { return obj.obj.Count != nil } // description is TBD -// SetCount sets the uint32 value in the PatternFlowGtpv2PiggybackingFlagCounter object -func (obj *patternFlowGtpv2PiggybackingFlagCounter) SetCount(value uint32) PatternFlowGtpv2PiggybackingFlagCounter { +// SetCount sets the uint64 value in the PatternFlowGtpExtensionContentsCounter object +func (obj *patternFlowGtpExtensionContentsCounter) SetCount(value uint64) PatternFlowGtpExtensionContentsCounter { obj.obj.Count = &value return obj } -func (obj *patternFlowGtpv2PiggybackingFlagCounter) validateObj(vObj *validation, set_default bool) { +func (obj *patternFlowGtpExtensionContentsCounter) validateObj(vObj *validation, set_default bool) { if set_default { obj.setDefault() } if obj.obj.Start != nil { - if *obj.obj.Start > 1 { + if *obj.obj.Start > 281474976710655 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowGtpv2PiggybackingFlagCounter.Start <= 1 but Got %d", *obj.obj.Start)) + fmt.Sprintf("0 <= PatternFlowGtpExtensionContentsCounter.Start <= 281474976710655 but Got %d", *obj.obj.Start)) } } if obj.obj.Step != nil { - if *obj.obj.Step > 1 { + if *obj.obj.Step > 281474976710655 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowGtpv2PiggybackingFlagCounter.Step <= 1 but Got %d", *obj.obj.Step)) + fmt.Sprintf("0 <= PatternFlowGtpExtensionContentsCounter.Step <= 281474976710655 but Got %d", *obj.obj.Step)) } } if obj.obj.Count != nil { - if *obj.obj.Count > 1 { + if *obj.obj.Count > 281474976710655 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowGtpv2PiggybackingFlagCounter.Count <= 1 but Got %d", *obj.obj.Count)) + fmt.Sprintf("0 <= PatternFlowGtpExtensionContentsCounter.Count <= 281474976710655 but Got %d", *obj.obj.Count)) } } } -func (obj *patternFlowGtpv2PiggybackingFlagCounter) setDefault() { +func (obj *patternFlowGtpExtensionContentsCounter) setDefault() { if obj.obj.Start == nil { obj.SetStart(0) } @@ -247688,29 +292962,29 @@ func (obj *patternFlowGtpv2PiggybackingFlagCounter) setDefault() { } -// ***** PatternFlowGtpv2PiggybackingFlagMetricTag ***** -type patternFlowGtpv2PiggybackingFlagMetricTag struct { +// ***** PatternFlowGtpExtensionContentsMetricTag ***** +type patternFlowGtpExtensionContentsMetricTag struct { validation - obj *otg.PatternFlowGtpv2PiggybackingFlagMetricTag + obj *otg.PatternFlowGtpExtensionContentsMetricTag } -func NewPatternFlowGtpv2PiggybackingFlagMetricTag() PatternFlowGtpv2PiggybackingFlagMetricTag { - obj := patternFlowGtpv2PiggybackingFlagMetricTag{obj: &otg.PatternFlowGtpv2PiggybackingFlagMetricTag{}} +func NewPatternFlowGtpExtensionContentsMetricTag() PatternFlowGtpExtensionContentsMetricTag { + obj := patternFlowGtpExtensionContentsMetricTag{obj: &otg.PatternFlowGtpExtensionContentsMetricTag{}} obj.setDefault() return &obj } -func (obj *patternFlowGtpv2PiggybackingFlagMetricTag) Msg() *otg.PatternFlowGtpv2PiggybackingFlagMetricTag { +func (obj *patternFlowGtpExtensionContentsMetricTag) Msg() *otg.PatternFlowGtpExtensionContentsMetricTag { return obj.obj } -func (obj *patternFlowGtpv2PiggybackingFlagMetricTag) SetMsg(msg *otg.PatternFlowGtpv2PiggybackingFlagMetricTag) PatternFlowGtpv2PiggybackingFlagMetricTag { +func (obj *patternFlowGtpExtensionContentsMetricTag) SetMsg(msg *otg.PatternFlowGtpExtensionContentsMetricTag) PatternFlowGtpExtensionContentsMetricTag { proto.Merge(obj.obj, msg) return obj } -func (obj *patternFlowGtpv2PiggybackingFlagMetricTag) ToProto() (*otg.PatternFlowGtpv2PiggybackingFlagMetricTag, error) { +func (obj *patternFlowGtpExtensionContentsMetricTag) ToProto() (*otg.PatternFlowGtpExtensionContentsMetricTag, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -247718,7 +292992,7 @@ func (obj *patternFlowGtpv2PiggybackingFlagMetricTag) ToProto() (*otg.PatternFlo return obj.Msg(), nil } -func (obj *patternFlowGtpv2PiggybackingFlagMetricTag) FromProto(msg *otg.PatternFlowGtpv2PiggybackingFlagMetricTag) (PatternFlowGtpv2PiggybackingFlagMetricTag, error) { +func (obj *patternFlowGtpExtensionContentsMetricTag) FromProto(msg *otg.PatternFlowGtpExtensionContentsMetricTag) (PatternFlowGtpExtensionContentsMetricTag, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -247727,7 +293001,7 @@ func (obj *patternFlowGtpv2PiggybackingFlagMetricTag) FromProto(msg *otg.Pattern return newObj, nil } -func (obj *patternFlowGtpv2PiggybackingFlagMetricTag) ToPbText() (string, error) { +func (obj *patternFlowGtpExtensionContentsMetricTag) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -247739,7 +293013,7 @@ func (obj *patternFlowGtpv2PiggybackingFlagMetricTag) ToPbText() (string, error) return string(protoMarshal), nil } -func (obj *patternFlowGtpv2PiggybackingFlagMetricTag) FromPbText(value string) error { +func (obj *patternFlowGtpExtensionContentsMetricTag) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj @@ -247752,7 +293026,7 @@ func (obj *patternFlowGtpv2PiggybackingFlagMetricTag) FromPbText(value string) e return retObj } -func (obj *patternFlowGtpv2PiggybackingFlagMetricTag) ToYaml() (string, error) { +func (obj *patternFlowGtpExtensionContentsMetricTag) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -247773,7 +293047,7 @@ func (obj *patternFlowGtpv2PiggybackingFlagMetricTag) ToYaml() (string, error) { return string(data), nil } -func (obj *patternFlowGtpv2PiggybackingFlagMetricTag) FromYaml(value string) error { +func (obj *patternFlowGtpExtensionContentsMetricTag) FromYaml(value string) error { if value == "" { value = "{}" } @@ -247798,7 +293072,7 @@ func (obj *patternFlowGtpv2PiggybackingFlagMetricTag) FromYaml(value string) err return nil } -func (obj *patternFlowGtpv2PiggybackingFlagMetricTag) ToJson() (string, error) { +func (obj *patternFlowGtpExtensionContentsMetricTag) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -247816,7 +293090,7 @@ func (obj *patternFlowGtpv2PiggybackingFlagMetricTag) ToJson() (string, error) { return string(data), nil } -func (obj *patternFlowGtpv2PiggybackingFlagMetricTag) FromJson(value string) error { +func (obj *patternFlowGtpExtensionContentsMetricTag) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -247837,19 +293111,19 @@ func (obj *patternFlowGtpv2PiggybackingFlagMetricTag) FromJson(value string) err return nil } -func (obj *patternFlowGtpv2PiggybackingFlagMetricTag) validateToAndFrom() error { +func (obj *patternFlowGtpExtensionContentsMetricTag) validateToAndFrom() error { // emptyVars() obj.validateObj(&obj.validation, true) return obj.validationResult() } -func (obj *patternFlowGtpv2PiggybackingFlagMetricTag) Validate() error { +func (obj *patternFlowGtpExtensionContentsMetricTag) Validate() error { // emptyVars() obj.validateObj(&obj.validation, false) return obj.validationResult() } -func (obj *patternFlowGtpv2PiggybackingFlagMetricTag) String() string { +func (obj *patternFlowGtpExtensionContentsMetricTag) String() string { str, err := obj.ToYaml() if err != nil { return err.Error() @@ -247857,12 +293131,12 @@ func (obj *patternFlowGtpv2PiggybackingFlagMetricTag) String() string { return str } -func (obj *patternFlowGtpv2PiggybackingFlagMetricTag) Clone() (PatternFlowGtpv2PiggybackingFlagMetricTag, error) { +func (obj *patternFlowGtpExtensionContentsMetricTag) Clone() (PatternFlowGtpExtensionContentsMetricTag, error) { vErr := obj.Validate() if vErr != nil { return nil, vErr } - newObj := NewPatternFlowGtpv2PiggybackingFlagMetricTag() + newObj := NewPatternFlowGtpExtensionContentsMetricTag() data, err := proto.Marshal(obj.Msg()) if err != nil { return nil, err @@ -247874,183 +293148,183 @@ func (obj *patternFlowGtpv2PiggybackingFlagMetricTag) Clone() (PatternFlowGtpv2P return newObj, nil } -// PatternFlowGtpv2PiggybackingFlagMetricTag is metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. -type PatternFlowGtpv2PiggybackingFlagMetricTag interface { +// PatternFlowGtpExtensionContentsMetricTag is metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. +type PatternFlowGtpExtensionContentsMetricTag interface { Validation - // Msg marshals PatternFlowGtpv2PiggybackingFlagMetricTag to protobuf object *otg.PatternFlowGtpv2PiggybackingFlagMetricTag + // Msg marshals PatternFlowGtpExtensionContentsMetricTag to protobuf object *otg.PatternFlowGtpExtensionContentsMetricTag // and doesn't set defaults - Msg() *otg.PatternFlowGtpv2PiggybackingFlagMetricTag - // SetMsg unmarshals PatternFlowGtpv2PiggybackingFlagMetricTag from protobuf object *otg.PatternFlowGtpv2PiggybackingFlagMetricTag + Msg() *otg.PatternFlowGtpExtensionContentsMetricTag + // SetMsg unmarshals PatternFlowGtpExtensionContentsMetricTag from protobuf object *otg.PatternFlowGtpExtensionContentsMetricTag // and doesn't set defaults - SetMsg(*otg.PatternFlowGtpv2PiggybackingFlagMetricTag) PatternFlowGtpv2PiggybackingFlagMetricTag - // ToProto marshals PatternFlowGtpv2PiggybackingFlagMetricTag to protobuf object *otg.PatternFlowGtpv2PiggybackingFlagMetricTag - ToProto() (*otg.PatternFlowGtpv2PiggybackingFlagMetricTag, error) - // ToPbText marshals PatternFlowGtpv2PiggybackingFlagMetricTag to protobuf text + SetMsg(*otg.PatternFlowGtpExtensionContentsMetricTag) PatternFlowGtpExtensionContentsMetricTag + // ToProto marshals PatternFlowGtpExtensionContentsMetricTag to protobuf object *otg.PatternFlowGtpExtensionContentsMetricTag + ToProto() (*otg.PatternFlowGtpExtensionContentsMetricTag, error) + // ToPbText marshals PatternFlowGtpExtensionContentsMetricTag to protobuf text ToPbText() (string, error) - // ToYaml marshals PatternFlowGtpv2PiggybackingFlagMetricTag to YAML text + // ToYaml marshals PatternFlowGtpExtensionContentsMetricTag to YAML text ToYaml() (string, error) - // ToJson marshals PatternFlowGtpv2PiggybackingFlagMetricTag to JSON text + // ToJson marshals PatternFlowGtpExtensionContentsMetricTag to JSON text ToJson() (string, error) - // FromProto unmarshals PatternFlowGtpv2PiggybackingFlagMetricTag from protobuf object *otg.PatternFlowGtpv2PiggybackingFlagMetricTag - FromProto(msg *otg.PatternFlowGtpv2PiggybackingFlagMetricTag) (PatternFlowGtpv2PiggybackingFlagMetricTag, error) - // FromPbText unmarshals PatternFlowGtpv2PiggybackingFlagMetricTag from protobuf text + // FromProto unmarshals PatternFlowGtpExtensionContentsMetricTag from protobuf object *otg.PatternFlowGtpExtensionContentsMetricTag + FromProto(msg *otg.PatternFlowGtpExtensionContentsMetricTag) (PatternFlowGtpExtensionContentsMetricTag, error) + // FromPbText unmarshals PatternFlowGtpExtensionContentsMetricTag from protobuf text FromPbText(value string) error - // FromYaml unmarshals PatternFlowGtpv2PiggybackingFlagMetricTag from YAML text + // FromYaml unmarshals PatternFlowGtpExtensionContentsMetricTag from YAML text FromYaml(value string) error - // FromJson unmarshals PatternFlowGtpv2PiggybackingFlagMetricTag from JSON text + // FromJson unmarshals PatternFlowGtpExtensionContentsMetricTag from JSON text FromJson(value string) error - // Validate validates PatternFlowGtpv2PiggybackingFlagMetricTag + // Validate validates PatternFlowGtpExtensionContentsMetricTag Validate() error // A stringer function String() string // Clones the object - Clone() (PatternFlowGtpv2PiggybackingFlagMetricTag, error) + Clone() (PatternFlowGtpExtensionContentsMetricTag, error) validateToAndFrom() error validateObj(vObj *validation, set_default bool) setDefault() - // Name returns string, set in PatternFlowGtpv2PiggybackingFlagMetricTag. + // Name returns string, set in PatternFlowGtpExtensionContentsMetricTag. Name() string - // SetName assigns string provided by user to PatternFlowGtpv2PiggybackingFlagMetricTag - SetName(value string) PatternFlowGtpv2PiggybackingFlagMetricTag - // Offset returns uint32, set in PatternFlowGtpv2PiggybackingFlagMetricTag. - Offset() uint32 - // SetOffset assigns uint32 provided by user to PatternFlowGtpv2PiggybackingFlagMetricTag - SetOffset(value uint32) PatternFlowGtpv2PiggybackingFlagMetricTag - // HasOffset checks if Offset has been set in PatternFlowGtpv2PiggybackingFlagMetricTag + // SetName assigns string provided by user to PatternFlowGtpExtensionContentsMetricTag + SetName(value string) PatternFlowGtpExtensionContentsMetricTag + // Offset returns uint64, set in PatternFlowGtpExtensionContentsMetricTag. + Offset() uint64 + // SetOffset assigns uint64 provided by user to PatternFlowGtpExtensionContentsMetricTag + SetOffset(value uint64) PatternFlowGtpExtensionContentsMetricTag + // HasOffset checks if Offset has been set in PatternFlowGtpExtensionContentsMetricTag HasOffset() bool - // Length returns uint32, set in PatternFlowGtpv2PiggybackingFlagMetricTag. - Length() uint32 - // SetLength assigns uint32 provided by user to PatternFlowGtpv2PiggybackingFlagMetricTag - SetLength(value uint32) PatternFlowGtpv2PiggybackingFlagMetricTag - // HasLength checks if Length has been set in PatternFlowGtpv2PiggybackingFlagMetricTag + // Length returns uint64, set in PatternFlowGtpExtensionContentsMetricTag. + Length() uint64 + // SetLength assigns uint64 provided by user to PatternFlowGtpExtensionContentsMetricTag + SetLength(value uint64) PatternFlowGtpExtensionContentsMetricTag + // HasLength checks if Length has been set in PatternFlowGtpExtensionContentsMetricTag HasLength() bool } // Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field // Name returns a string -func (obj *patternFlowGtpv2PiggybackingFlagMetricTag) Name() string { +func (obj *patternFlowGtpExtensionContentsMetricTag) Name() string { return *obj.obj.Name } // Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field -// SetName sets the string value in the PatternFlowGtpv2PiggybackingFlagMetricTag object -func (obj *patternFlowGtpv2PiggybackingFlagMetricTag) SetName(value string) PatternFlowGtpv2PiggybackingFlagMetricTag { +// SetName sets the string value in the PatternFlowGtpExtensionContentsMetricTag object +func (obj *patternFlowGtpExtensionContentsMetricTag) SetName(value string) PatternFlowGtpExtensionContentsMetricTag { obj.obj.Name = &value return obj } // Offset in bits relative to start of corresponding header field -// Offset returns a uint32 -func (obj *patternFlowGtpv2PiggybackingFlagMetricTag) Offset() uint32 { +// Offset returns a uint64 +func (obj *patternFlowGtpExtensionContentsMetricTag) Offset() uint64 { return *obj.obj.Offset } // Offset in bits relative to start of corresponding header field -// Offset returns a uint32 -func (obj *patternFlowGtpv2PiggybackingFlagMetricTag) HasOffset() bool { +// Offset returns a uint64 +func (obj *patternFlowGtpExtensionContentsMetricTag) HasOffset() bool { return obj.obj.Offset != nil } // Offset in bits relative to start of corresponding header field -// SetOffset sets the uint32 value in the PatternFlowGtpv2PiggybackingFlagMetricTag object -func (obj *patternFlowGtpv2PiggybackingFlagMetricTag) SetOffset(value uint32) PatternFlowGtpv2PiggybackingFlagMetricTag { +// SetOffset sets the uint64 value in the PatternFlowGtpExtensionContentsMetricTag object +func (obj *patternFlowGtpExtensionContentsMetricTag) SetOffset(value uint64) PatternFlowGtpExtensionContentsMetricTag { obj.obj.Offset = &value return obj } // Number of bits to track for metrics starting from configured offset of corresponding header field -// Length returns a uint32 -func (obj *patternFlowGtpv2PiggybackingFlagMetricTag) Length() uint32 { +// Length returns a uint64 +func (obj *patternFlowGtpExtensionContentsMetricTag) Length() uint64 { return *obj.obj.Length } // Number of bits to track for metrics starting from configured offset of corresponding header field -// Length returns a uint32 -func (obj *patternFlowGtpv2PiggybackingFlagMetricTag) HasLength() bool { +// Length returns a uint64 +func (obj *patternFlowGtpExtensionContentsMetricTag) HasLength() bool { return obj.obj.Length != nil } // Number of bits to track for metrics starting from configured offset of corresponding header field -// SetLength sets the uint32 value in the PatternFlowGtpv2PiggybackingFlagMetricTag object -func (obj *patternFlowGtpv2PiggybackingFlagMetricTag) SetLength(value uint32) PatternFlowGtpv2PiggybackingFlagMetricTag { +// SetLength sets the uint64 value in the PatternFlowGtpExtensionContentsMetricTag object +func (obj *patternFlowGtpExtensionContentsMetricTag) SetLength(value uint64) PatternFlowGtpExtensionContentsMetricTag { obj.obj.Length = &value return obj } -func (obj *patternFlowGtpv2PiggybackingFlagMetricTag) validateObj(vObj *validation, set_default bool) { +func (obj *patternFlowGtpExtensionContentsMetricTag) validateObj(vObj *validation, set_default bool) { if set_default { obj.setDefault() } // Name is required if obj.obj.Name == nil { - vObj.validationErrors = append(vObj.validationErrors, "Name is required field on interface PatternFlowGtpv2PiggybackingFlagMetricTag") + vObj.validationErrors = append(vObj.validationErrors, "Name is required field on interface PatternFlowGtpExtensionContentsMetricTag") } if obj.obj.Offset != nil { - if *obj.obj.Offset > 0 { + if *obj.obj.Offset > 47 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowGtpv2PiggybackingFlagMetricTag.Offset <= 0 but Got %d", *obj.obj.Offset)) + fmt.Sprintf("0 <= PatternFlowGtpExtensionContentsMetricTag.Offset <= 47 but Got %d", *obj.obj.Offset)) } } if obj.obj.Length != nil { - if *obj.obj.Length < 1 || *obj.obj.Length > 1 { + if *obj.obj.Length < 1 || *obj.obj.Length > 48 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("1 <= PatternFlowGtpv2PiggybackingFlagMetricTag.Length <= 1 but Got %d", *obj.obj.Length)) + fmt.Sprintf("1 <= PatternFlowGtpExtensionContentsMetricTag.Length <= 48 but Got %d", *obj.obj.Length)) } } } -func (obj *patternFlowGtpv2PiggybackingFlagMetricTag) setDefault() { +func (obj *patternFlowGtpExtensionContentsMetricTag) setDefault() { if obj.obj.Offset == nil { obj.SetOffset(0) } if obj.obj.Length == nil { - obj.SetLength(1) + obj.SetLength(48) } } -// ***** PatternFlowGtpv2TeidFlagCounter ***** -type patternFlowGtpv2TeidFlagCounter struct { +// ***** PatternFlowGtpExtensionNextExtensionHeaderCounter ***** +type patternFlowGtpExtensionNextExtensionHeaderCounter struct { validation - obj *otg.PatternFlowGtpv2TeidFlagCounter + obj *otg.PatternFlowGtpExtensionNextExtensionHeaderCounter } -func NewPatternFlowGtpv2TeidFlagCounter() PatternFlowGtpv2TeidFlagCounter { - obj := patternFlowGtpv2TeidFlagCounter{obj: &otg.PatternFlowGtpv2TeidFlagCounter{}} +func NewPatternFlowGtpExtensionNextExtensionHeaderCounter() PatternFlowGtpExtensionNextExtensionHeaderCounter { + obj := patternFlowGtpExtensionNextExtensionHeaderCounter{obj: &otg.PatternFlowGtpExtensionNextExtensionHeaderCounter{}} obj.setDefault() return &obj } -func (obj *patternFlowGtpv2TeidFlagCounter) Msg() *otg.PatternFlowGtpv2TeidFlagCounter { +func (obj *patternFlowGtpExtensionNextExtensionHeaderCounter) Msg() *otg.PatternFlowGtpExtensionNextExtensionHeaderCounter { return obj.obj } -func (obj *patternFlowGtpv2TeidFlagCounter) SetMsg(msg *otg.PatternFlowGtpv2TeidFlagCounter) PatternFlowGtpv2TeidFlagCounter { +func (obj *patternFlowGtpExtensionNextExtensionHeaderCounter) SetMsg(msg *otg.PatternFlowGtpExtensionNextExtensionHeaderCounter) PatternFlowGtpExtensionNextExtensionHeaderCounter { proto.Merge(obj.obj, msg) return obj } -func (obj *patternFlowGtpv2TeidFlagCounter) ToProto() (*otg.PatternFlowGtpv2TeidFlagCounter, error) { +func (obj *patternFlowGtpExtensionNextExtensionHeaderCounter) ToProto() (*otg.PatternFlowGtpExtensionNextExtensionHeaderCounter, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -248058,7 +293332,7 @@ func (obj *patternFlowGtpv2TeidFlagCounter) ToProto() (*otg.PatternFlowGtpv2Teid return obj.Msg(), nil } -func (obj *patternFlowGtpv2TeidFlagCounter) FromProto(msg *otg.PatternFlowGtpv2TeidFlagCounter) (PatternFlowGtpv2TeidFlagCounter, error) { +func (obj *patternFlowGtpExtensionNextExtensionHeaderCounter) FromProto(msg *otg.PatternFlowGtpExtensionNextExtensionHeaderCounter) (PatternFlowGtpExtensionNextExtensionHeaderCounter, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -248067,7 +293341,7 @@ func (obj *patternFlowGtpv2TeidFlagCounter) FromProto(msg *otg.PatternFlowGtpv2T return newObj, nil } -func (obj *patternFlowGtpv2TeidFlagCounter) ToPbText() (string, error) { +func (obj *patternFlowGtpExtensionNextExtensionHeaderCounter) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -248079,7 +293353,7 @@ func (obj *patternFlowGtpv2TeidFlagCounter) ToPbText() (string, error) { return string(protoMarshal), nil } -func (obj *patternFlowGtpv2TeidFlagCounter) FromPbText(value string) error { +func (obj *patternFlowGtpExtensionNextExtensionHeaderCounter) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj @@ -248092,7 +293366,7 @@ func (obj *patternFlowGtpv2TeidFlagCounter) FromPbText(value string) error { return retObj } -func (obj *patternFlowGtpv2TeidFlagCounter) ToYaml() (string, error) { +func (obj *patternFlowGtpExtensionNextExtensionHeaderCounter) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -248113,7 +293387,7 @@ func (obj *patternFlowGtpv2TeidFlagCounter) ToYaml() (string, error) { return string(data), nil } -func (obj *patternFlowGtpv2TeidFlagCounter) FromYaml(value string) error { +func (obj *patternFlowGtpExtensionNextExtensionHeaderCounter) FromYaml(value string) error { if value == "" { value = "{}" } @@ -248138,7 +293412,7 @@ func (obj *patternFlowGtpv2TeidFlagCounter) FromYaml(value string) error { return nil } -func (obj *patternFlowGtpv2TeidFlagCounter) ToJson() (string, error) { +func (obj *patternFlowGtpExtensionNextExtensionHeaderCounter) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -248156,7 +293430,7 @@ func (obj *patternFlowGtpv2TeidFlagCounter) ToJson() (string, error) { return string(data), nil } -func (obj *patternFlowGtpv2TeidFlagCounter) FromJson(value string) error { +func (obj *patternFlowGtpExtensionNextExtensionHeaderCounter) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -248177,19 +293451,19 @@ func (obj *patternFlowGtpv2TeidFlagCounter) FromJson(value string) error { return nil } -func (obj *patternFlowGtpv2TeidFlagCounter) validateToAndFrom() error { +func (obj *patternFlowGtpExtensionNextExtensionHeaderCounter) validateToAndFrom() error { // emptyVars() obj.validateObj(&obj.validation, true) return obj.validationResult() } -func (obj *patternFlowGtpv2TeidFlagCounter) Validate() error { +func (obj *patternFlowGtpExtensionNextExtensionHeaderCounter) Validate() error { // emptyVars() obj.validateObj(&obj.validation, false) return obj.validationResult() } -func (obj *patternFlowGtpv2TeidFlagCounter) String() string { +func (obj *patternFlowGtpExtensionNextExtensionHeaderCounter) String() string { str, err := obj.ToYaml() if err != nil { return err.Error() @@ -248197,12 +293471,12 @@ func (obj *patternFlowGtpv2TeidFlagCounter) String() string { return str } -func (obj *patternFlowGtpv2TeidFlagCounter) Clone() (PatternFlowGtpv2TeidFlagCounter, error) { +func (obj *patternFlowGtpExtensionNextExtensionHeaderCounter) Clone() (PatternFlowGtpExtensionNextExtensionHeaderCounter, error) { vErr := obj.Validate() if vErr != nil { return nil, vErr } - newObj := NewPatternFlowGtpv2TeidFlagCounter() + newObj := NewPatternFlowGtpExtensionNextExtensionHeaderCounter() data, err := proto.Marshal(obj.Msg()) if err != nil { return nil, err @@ -248214,63 +293488,63 @@ func (obj *patternFlowGtpv2TeidFlagCounter) Clone() (PatternFlowGtpv2TeidFlagCou return newObj, nil } -// PatternFlowGtpv2TeidFlagCounter is integer counter pattern -type PatternFlowGtpv2TeidFlagCounter interface { +// PatternFlowGtpExtensionNextExtensionHeaderCounter is integer counter pattern +type PatternFlowGtpExtensionNextExtensionHeaderCounter interface { Validation - // Msg marshals PatternFlowGtpv2TeidFlagCounter to protobuf object *otg.PatternFlowGtpv2TeidFlagCounter + // Msg marshals PatternFlowGtpExtensionNextExtensionHeaderCounter to protobuf object *otg.PatternFlowGtpExtensionNextExtensionHeaderCounter // and doesn't set defaults - Msg() *otg.PatternFlowGtpv2TeidFlagCounter - // SetMsg unmarshals PatternFlowGtpv2TeidFlagCounter from protobuf object *otg.PatternFlowGtpv2TeidFlagCounter + Msg() *otg.PatternFlowGtpExtensionNextExtensionHeaderCounter + // SetMsg unmarshals PatternFlowGtpExtensionNextExtensionHeaderCounter from protobuf object *otg.PatternFlowGtpExtensionNextExtensionHeaderCounter // and doesn't set defaults - SetMsg(*otg.PatternFlowGtpv2TeidFlagCounter) PatternFlowGtpv2TeidFlagCounter - // ToProto marshals PatternFlowGtpv2TeidFlagCounter to protobuf object *otg.PatternFlowGtpv2TeidFlagCounter - ToProto() (*otg.PatternFlowGtpv2TeidFlagCounter, error) - // ToPbText marshals PatternFlowGtpv2TeidFlagCounter to protobuf text + SetMsg(*otg.PatternFlowGtpExtensionNextExtensionHeaderCounter) PatternFlowGtpExtensionNextExtensionHeaderCounter + // ToProto marshals PatternFlowGtpExtensionNextExtensionHeaderCounter to protobuf object *otg.PatternFlowGtpExtensionNextExtensionHeaderCounter + ToProto() (*otg.PatternFlowGtpExtensionNextExtensionHeaderCounter, error) + // ToPbText marshals PatternFlowGtpExtensionNextExtensionHeaderCounter to protobuf text ToPbText() (string, error) - // ToYaml marshals PatternFlowGtpv2TeidFlagCounter to YAML text + // ToYaml marshals PatternFlowGtpExtensionNextExtensionHeaderCounter to YAML text ToYaml() (string, error) - // ToJson marshals PatternFlowGtpv2TeidFlagCounter to JSON text + // ToJson marshals PatternFlowGtpExtensionNextExtensionHeaderCounter to JSON text ToJson() (string, error) - // FromProto unmarshals PatternFlowGtpv2TeidFlagCounter from protobuf object *otg.PatternFlowGtpv2TeidFlagCounter - FromProto(msg *otg.PatternFlowGtpv2TeidFlagCounter) (PatternFlowGtpv2TeidFlagCounter, error) - // FromPbText unmarshals PatternFlowGtpv2TeidFlagCounter from protobuf text + // FromProto unmarshals PatternFlowGtpExtensionNextExtensionHeaderCounter from protobuf object *otg.PatternFlowGtpExtensionNextExtensionHeaderCounter + FromProto(msg *otg.PatternFlowGtpExtensionNextExtensionHeaderCounter) (PatternFlowGtpExtensionNextExtensionHeaderCounter, error) + // FromPbText unmarshals PatternFlowGtpExtensionNextExtensionHeaderCounter from protobuf text FromPbText(value string) error - // FromYaml unmarshals PatternFlowGtpv2TeidFlagCounter from YAML text + // FromYaml unmarshals PatternFlowGtpExtensionNextExtensionHeaderCounter from YAML text FromYaml(value string) error - // FromJson unmarshals PatternFlowGtpv2TeidFlagCounter from JSON text + // FromJson unmarshals PatternFlowGtpExtensionNextExtensionHeaderCounter from JSON text FromJson(value string) error - // Validate validates PatternFlowGtpv2TeidFlagCounter + // Validate validates PatternFlowGtpExtensionNextExtensionHeaderCounter Validate() error // A stringer function String() string // Clones the object - Clone() (PatternFlowGtpv2TeidFlagCounter, error) + Clone() (PatternFlowGtpExtensionNextExtensionHeaderCounter, error) validateToAndFrom() error validateObj(vObj *validation, set_default bool) setDefault() - // Start returns uint32, set in PatternFlowGtpv2TeidFlagCounter. + // Start returns uint32, set in PatternFlowGtpExtensionNextExtensionHeaderCounter. Start() uint32 - // SetStart assigns uint32 provided by user to PatternFlowGtpv2TeidFlagCounter - SetStart(value uint32) PatternFlowGtpv2TeidFlagCounter - // HasStart checks if Start has been set in PatternFlowGtpv2TeidFlagCounter + // SetStart assigns uint32 provided by user to PatternFlowGtpExtensionNextExtensionHeaderCounter + SetStart(value uint32) PatternFlowGtpExtensionNextExtensionHeaderCounter + // HasStart checks if Start has been set in PatternFlowGtpExtensionNextExtensionHeaderCounter HasStart() bool - // Step returns uint32, set in PatternFlowGtpv2TeidFlagCounter. + // Step returns uint32, set in PatternFlowGtpExtensionNextExtensionHeaderCounter. Step() uint32 - // SetStep assigns uint32 provided by user to PatternFlowGtpv2TeidFlagCounter - SetStep(value uint32) PatternFlowGtpv2TeidFlagCounter - // HasStep checks if Step has been set in PatternFlowGtpv2TeidFlagCounter + // SetStep assigns uint32 provided by user to PatternFlowGtpExtensionNextExtensionHeaderCounter + SetStep(value uint32) PatternFlowGtpExtensionNextExtensionHeaderCounter + // HasStep checks if Step has been set in PatternFlowGtpExtensionNextExtensionHeaderCounter HasStep() bool - // Count returns uint32, set in PatternFlowGtpv2TeidFlagCounter. + // Count returns uint32, set in PatternFlowGtpExtensionNextExtensionHeaderCounter. Count() uint32 - // SetCount assigns uint32 provided by user to PatternFlowGtpv2TeidFlagCounter - SetCount(value uint32) PatternFlowGtpv2TeidFlagCounter - // HasCount checks if Count has been set in PatternFlowGtpv2TeidFlagCounter + // SetCount assigns uint32 provided by user to PatternFlowGtpExtensionNextExtensionHeaderCounter + SetCount(value uint32) PatternFlowGtpExtensionNextExtensionHeaderCounter + // HasCount checks if Count has been set in PatternFlowGtpExtensionNextExtensionHeaderCounter HasCount() bool } // description is TBD // Start returns a uint32 -func (obj *patternFlowGtpv2TeidFlagCounter) Start() uint32 { +func (obj *patternFlowGtpExtensionNextExtensionHeaderCounter) Start() uint32 { return *obj.obj.Start @@ -248278,13 +293552,13 @@ func (obj *patternFlowGtpv2TeidFlagCounter) Start() uint32 { // description is TBD // Start returns a uint32 -func (obj *patternFlowGtpv2TeidFlagCounter) HasStart() bool { +func (obj *patternFlowGtpExtensionNextExtensionHeaderCounter) HasStart() bool { return obj.obj.Start != nil } // description is TBD -// SetStart sets the uint32 value in the PatternFlowGtpv2TeidFlagCounter object -func (obj *patternFlowGtpv2TeidFlagCounter) SetStart(value uint32) PatternFlowGtpv2TeidFlagCounter { +// SetStart sets the uint32 value in the PatternFlowGtpExtensionNextExtensionHeaderCounter object +func (obj *patternFlowGtpExtensionNextExtensionHeaderCounter) SetStart(value uint32) PatternFlowGtpExtensionNextExtensionHeaderCounter { obj.obj.Start = &value return obj @@ -248292,7 +293566,7 @@ func (obj *patternFlowGtpv2TeidFlagCounter) SetStart(value uint32) PatternFlowGt // description is TBD // Step returns a uint32 -func (obj *patternFlowGtpv2TeidFlagCounter) Step() uint32 { +func (obj *patternFlowGtpExtensionNextExtensionHeaderCounter) Step() uint32 { return *obj.obj.Step @@ -248300,13 +293574,13 @@ func (obj *patternFlowGtpv2TeidFlagCounter) Step() uint32 { // description is TBD // Step returns a uint32 -func (obj *patternFlowGtpv2TeidFlagCounter) HasStep() bool { +func (obj *patternFlowGtpExtensionNextExtensionHeaderCounter) HasStep() bool { return obj.obj.Step != nil } // description is TBD -// SetStep sets the uint32 value in the PatternFlowGtpv2TeidFlagCounter object -func (obj *patternFlowGtpv2TeidFlagCounter) SetStep(value uint32) PatternFlowGtpv2TeidFlagCounter { +// SetStep sets the uint32 value in the PatternFlowGtpExtensionNextExtensionHeaderCounter object +func (obj *patternFlowGtpExtensionNextExtensionHeaderCounter) SetStep(value uint32) PatternFlowGtpExtensionNextExtensionHeaderCounter { obj.obj.Step = &value return obj @@ -248314,7 +293588,7 @@ func (obj *patternFlowGtpv2TeidFlagCounter) SetStep(value uint32) PatternFlowGtp // description is TBD // Count returns a uint32 -func (obj *patternFlowGtpv2TeidFlagCounter) Count() uint32 { +func (obj *patternFlowGtpExtensionNextExtensionHeaderCounter) Count() uint32 { return *obj.obj.Count @@ -248322,56 +293596,56 @@ func (obj *patternFlowGtpv2TeidFlagCounter) Count() uint32 { // description is TBD // Count returns a uint32 -func (obj *patternFlowGtpv2TeidFlagCounter) HasCount() bool { +func (obj *patternFlowGtpExtensionNextExtensionHeaderCounter) HasCount() bool { return obj.obj.Count != nil } // description is TBD -// SetCount sets the uint32 value in the PatternFlowGtpv2TeidFlagCounter object -func (obj *patternFlowGtpv2TeidFlagCounter) SetCount(value uint32) PatternFlowGtpv2TeidFlagCounter { +// SetCount sets the uint32 value in the PatternFlowGtpExtensionNextExtensionHeaderCounter object +func (obj *patternFlowGtpExtensionNextExtensionHeaderCounter) SetCount(value uint32) PatternFlowGtpExtensionNextExtensionHeaderCounter { obj.obj.Count = &value return obj } -func (obj *patternFlowGtpv2TeidFlagCounter) validateObj(vObj *validation, set_default bool) { +func (obj *patternFlowGtpExtensionNextExtensionHeaderCounter) validateObj(vObj *validation, set_default bool) { if set_default { obj.setDefault() } if obj.obj.Start != nil { - if *obj.obj.Start > 1 { + if *obj.obj.Start > 255 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowGtpv2TeidFlagCounter.Start <= 1 but Got %d", *obj.obj.Start)) + fmt.Sprintf("0 <= PatternFlowGtpExtensionNextExtensionHeaderCounter.Start <= 255 but Got %d", *obj.obj.Start)) } } if obj.obj.Step != nil { - if *obj.obj.Step > 1 { + if *obj.obj.Step > 255 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowGtpv2TeidFlagCounter.Step <= 1 but Got %d", *obj.obj.Step)) + fmt.Sprintf("0 <= PatternFlowGtpExtensionNextExtensionHeaderCounter.Step <= 255 but Got %d", *obj.obj.Step)) } } if obj.obj.Count != nil { - if *obj.obj.Count > 1 { + if *obj.obj.Count > 255 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowGtpv2TeidFlagCounter.Count <= 1 but Got %d", *obj.obj.Count)) + fmt.Sprintf("0 <= PatternFlowGtpExtensionNextExtensionHeaderCounter.Count <= 255 but Got %d", *obj.obj.Count)) } } } -func (obj *patternFlowGtpv2TeidFlagCounter) setDefault() { +func (obj *patternFlowGtpExtensionNextExtensionHeaderCounter) setDefault() { if obj.obj.Start == nil { obj.SetStart(0) } @@ -248384,29 +293658,29 @@ func (obj *patternFlowGtpv2TeidFlagCounter) setDefault() { } -// ***** PatternFlowGtpv2TeidFlagMetricTag ***** -type patternFlowGtpv2TeidFlagMetricTag struct { +// ***** PatternFlowGtpExtensionNextExtensionHeaderMetricTag ***** +type patternFlowGtpExtensionNextExtensionHeaderMetricTag struct { validation - obj *otg.PatternFlowGtpv2TeidFlagMetricTag + obj *otg.PatternFlowGtpExtensionNextExtensionHeaderMetricTag } -func NewPatternFlowGtpv2TeidFlagMetricTag() PatternFlowGtpv2TeidFlagMetricTag { - obj := patternFlowGtpv2TeidFlagMetricTag{obj: &otg.PatternFlowGtpv2TeidFlagMetricTag{}} +func NewPatternFlowGtpExtensionNextExtensionHeaderMetricTag() PatternFlowGtpExtensionNextExtensionHeaderMetricTag { + obj := patternFlowGtpExtensionNextExtensionHeaderMetricTag{obj: &otg.PatternFlowGtpExtensionNextExtensionHeaderMetricTag{}} obj.setDefault() return &obj } -func (obj *patternFlowGtpv2TeidFlagMetricTag) Msg() *otg.PatternFlowGtpv2TeidFlagMetricTag { +func (obj *patternFlowGtpExtensionNextExtensionHeaderMetricTag) Msg() *otg.PatternFlowGtpExtensionNextExtensionHeaderMetricTag { return obj.obj } -func (obj *patternFlowGtpv2TeidFlagMetricTag) SetMsg(msg *otg.PatternFlowGtpv2TeidFlagMetricTag) PatternFlowGtpv2TeidFlagMetricTag { +func (obj *patternFlowGtpExtensionNextExtensionHeaderMetricTag) SetMsg(msg *otg.PatternFlowGtpExtensionNextExtensionHeaderMetricTag) PatternFlowGtpExtensionNextExtensionHeaderMetricTag { proto.Merge(obj.obj, msg) return obj } -func (obj *patternFlowGtpv2TeidFlagMetricTag) ToProto() (*otg.PatternFlowGtpv2TeidFlagMetricTag, error) { +func (obj *patternFlowGtpExtensionNextExtensionHeaderMetricTag) ToProto() (*otg.PatternFlowGtpExtensionNextExtensionHeaderMetricTag, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -248414,7 +293688,7 @@ func (obj *patternFlowGtpv2TeidFlagMetricTag) ToProto() (*otg.PatternFlowGtpv2Te return obj.Msg(), nil } -func (obj *patternFlowGtpv2TeidFlagMetricTag) FromProto(msg *otg.PatternFlowGtpv2TeidFlagMetricTag) (PatternFlowGtpv2TeidFlagMetricTag, error) { +func (obj *patternFlowGtpExtensionNextExtensionHeaderMetricTag) FromProto(msg *otg.PatternFlowGtpExtensionNextExtensionHeaderMetricTag) (PatternFlowGtpExtensionNextExtensionHeaderMetricTag, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -248423,7 +293697,7 @@ func (obj *patternFlowGtpv2TeidFlagMetricTag) FromProto(msg *otg.PatternFlowGtpv return newObj, nil } -func (obj *patternFlowGtpv2TeidFlagMetricTag) ToPbText() (string, error) { +func (obj *patternFlowGtpExtensionNextExtensionHeaderMetricTag) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -248435,7 +293709,7 @@ func (obj *patternFlowGtpv2TeidFlagMetricTag) ToPbText() (string, error) { return string(protoMarshal), nil } -func (obj *patternFlowGtpv2TeidFlagMetricTag) FromPbText(value string) error { +func (obj *patternFlowGtpExtensionNextExtensionHeaderMetricTag) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj @@ -248448,7 +293722,7 @@ func (obj *patternFlowGtpv2TeidFlagMetricTag) FromPbText(value string) error { return retObj } -func (obj *patternFlowGtpv2TeidFlagMetricTag) ToYaml() (string, error) { +func (obj *patternFlowGtpExtensionNextExtensionHeaderMetricTag) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -248469,7 +293743,7 @@ func (obj *patternFlowGtpv2TeidFlagMetricTag) ToYaml() (string, error) { return string(data), nil } -func (obj *patternFlowGtpv2TeidFlagMetricTag) FromYaml(value string) error { +func (obj *patternFlowGtpExtensionNextExtensionHeaderMetricTag) FromYaml(value string) error { if value == "" { value = "{}" } @@ -248494,7 +293768,7 @@ func (obj *patternFlowGtpv2TeidFlagMetricTag) FromYaml(value string) error { return nil } -func (obj *patternFlowGtpv2TeidFlagMetricTag) ToJson() (string, error) { +func (obj *patternFlowGtpExtensionNextExtensionHeaderMetricTag) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -248512,7 +293786,7 @@ func (obj *patternFlowGtpv2TeidFlagMetricTag) ToJson() (string, error) { return string(data), nil } -func (obj *patternFlowGtpv2TeidFlagMetricTag) FromJson(value string) error { +func (obj *patternFlowGtpExtensionNextExtensionHeaderMetricTag) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -248533,19 +293807,19 @@ func (obj *patternFlowGtpv2TeidFlagMetricTag) FromJson(value string) error { return nil } -func (obj *patternFlowGtpv2TeidFlagMetricTag) validateToAndFrom() error { +func (obj *patternFlowGtpExtensionNextExtensionHeaderMetricTag) validateToAndFrom() error { // emptyVars() obj.validateObj(&obj.validation, true) return obj.validationResult() } -func (obj *patternFlowGtpv2TeidFlagMetricTag) Validate() error { +func (obj *patternFlowGtpExtensionNextExtensionHeaderMetricTag) Validate() error { // emptyVars() obj.validateObj(&obj.validation, false) return obj.validationResult() } -func (obj *patternFlowGtpv2TeidFlagMetricTag) String() string { +func (obj *patternFlowGtpExtensionNextExtensionHeaderMetricTag) String() string { str, err := obj.ToYaml() if err != nil { return err.Error() @@ -248553,12 +293827,12 @@ func (obj *patternFlowGtpv2TeidFlagMetricTag) String() string { return str } -func (obj *patternFlowGtpv2TeidFlagMetricTag) Clone() (PatternFlowGtpv2TeidFlagMetricTag, error) { +func (obj *patternFlowGtpExtensionNextExtensionHeaderMetricTag) Clone() (PatternFlowGtpExtensionNextExtensionHeaderMetricTag, error) { vErr := obj.Validate() if vErr != nil { return nil, vErr } - newObj := NewPatternFlowGtpv2TeidFlagMetricTag() + newObj := NewPatternFlowGtpExtensionNextExtensionHeaderMetricTag() data, err := proto.Marshal(obj.Msg()) if err != nil { return nil, err @@ -248570,69 +293844,69 @@ func (obj *patternFlowGtpv2TeidFlagMetricTag) Clone() (PatternFlowGtpv2TeidFlagM return newObj, nil } -// PatternFlowGtpv2TeidFlagMetricTag is metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. -type PatternFlowGtpv2TeidFlagMetricTag interface { +// PatternFlowGtpExtensionNextExtensionHeaderMetricTag is metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. +type PatternFlowGtpExtensionNextExtensionHeaderMetricTag interface { Validation - // Msg marshals PatternFlowGtpv2TeidFlagMetricTag to protobuf object *otg.PatternFlowGtpv2TeidFlagMetricTag + // Msg marshals PatternFlowGtpExtensionNextExtensionHeaderMetricTag to protobuf object *otg.PatternFlowGtpExtensionNextExtensionHeaderMetricTag // and doesn't set defaults - Msg() *otg.PatternFlowGtpv2TeidFlagMetricTag - // SetMsg unmarshals PatternFlowGtpv2TeidFlagMetricTag from protobuf object *otg.PatternFlowGtpv2TeidFlagMetricTag + Msg() *otg.PatternFlowGtpExtensionNextExtensionHeaderMetricTag + // SetMsg unmarshals PatternFlowGtpExtensionNextExtensionHeaderMetricTag from protobuf object *otg.PatternFlowGtpExtensionNextExtensionHeaderMetricTag // and doesn't set defaults - SetMsg(*otg.PatternFlowGtpv2TeidFlagMetricTag) PatternFlowGtpv2TeidFlagMetricTag - // ToProto marshals PatternFlowGtpv2TeidFlagMetricTag to protobuf object *otg.PatternFlowGtpv2TeidFlagMetricTag - ToProto() (*otg.PatternFlowGtpv2TeidFlagMetricTag, error) - // ToPbText marshals PatternFlowGtpv2TeidFlagMetricTag to protobuf text + SetMsg(*otg.PatternFlowGtpExtensionNextExtensionHeaderMetricTag) PatternFlowGtpExtensionNextExtensionHeaderMetricTag + // ToProto marshals PatternFlowGtpExtensionNextExtensionHeaderMetricTag to protobuf object *otg.PatternFlowGtpExtensionNextExtensionHeaderMetricTag + ToProto() (*otg.PatternFlowGtpExtensionNextExtensionHeaderMetricTag, error) + // ToPbText marshals PatternFlowGtpExtensionNextExtensionHeaderMetricTag to protobuf text ToPbText() (string, error) - // ToYaml marshals PatternFlowGtpv2TeidFlagMetricTag to YAML text + // ToYaml marshals PatternFlowGtpExtensionNextExtensionHeaderMetricTag to YAML text ToYaml() (string, error) - // ToJson marshals PatternFlowGtpv2TeidFlagMetricTag to JSON text + // ToJson marshals PatternFlowGtpExtensionNextExtensionHeaderMetricTag to JSON text ToJson() (string, error) - // FromProto unmarshals PatternFlowGtpv2TeidFlagMetricTag from protobuf object *otg.PatternFlowGtpv2TeidFlagMetricTag - FromProto(msg *otg.PatternFlowGtpv2TeidFlagMetricTag) (PatternFlowGtpv2TeidFlagMetricTag, error) - // FromPbText unmarshals PatternFlowGtpv2TeidFlagMetricTag from protobuf text + // FromProto unmarshals PatternFlowGtpExtensionNextExtensionHeaderMetricTag from protobuf object *otg.PatternFlowGtpExtensionNextExtensionHeaderMetricTag + FromProto(msg *otg.PatternFlowGtpExtensionNextExtensionHeaderMetricTag) (PatternFlowGtpExtensionNextExtensionHeaderMetricTag, error) + // FromPbText unmarshals PatternFlowGtpExtensionNextExtensionHeaderMetricTag from protobuf text FromPbText(value string) error - // FromYaml unmarshals PatternFlowGtpv2TeidFlagMetricTag from YAML text + // FromYaml unmarshals PatternFlowGtpExtensionNextExtensionHeaderMetricTag from YAML text FromYaml(value string) error - // FromJson unmarshals PatternFlowGtpv2TeidFlagMetricTag from JSON text + // FromJson unmarshals PatternFlowGtpExtensionNextExtensionHeaderMetricTag from JSON text FromJson(value string) error - // Validate validates PatternFlowGtpv2TeidFlagMetricTag + // Validate validates PatternFlowGtpExtensionNextExtensionHeaderMetricTag Validate() error // A stringer function String() string // Clones the object - Clone() (PatternFlowGtpv2TeidFlagMetricTag, error) + Clone() (PatternFlowGtpExtensionNextExtensionHeaderMetricTag, error) validateToAndFrom() error validateObj(vObj *validation, set_default bool) setDefault() - // Name returns string, set in PatternFlowGtpv2TeidFlagMetricTag. + // Name returns string, set in PatternFlowGtpExtensionNextExtensionHeaderMetricTag. Name() string - // SetName assigns string provided by user to PatternFlowGtpv2TeidFlagMetricTag - SetName(value string) PatternFlowGtpv2TeidFlagMetricTag - // Offset returns uint32, set in PatternFlowGtpv2TeidFlagMetricTag. + // SetName assigns string provided by user to PatternFlowGtpExtensionNextExtensionHeaderMetricTag + SetName(value string) PatternFlowGtpExtensionNextExtensionHeaderMetricTag + // Offset returns uint32, set in PatternFlowGtpExtensionNextExtensionHeaderMetricTag. Offset() uint32 - // SetOffset assigns uint32 provided by user to PatternFlowGtpv2TeidFlagMetricTag - SetOffset(value uint32) PatternFlowGtpv2TeidFlagMetricTag - // HasOffset checks if Offset has been set in PatternFlowGtpv2TeidFlagMetricTag + // SetOffset assigns uint32 provided by user to PatternFlowGtpExtensionNextExtensionHeaderMetricTag + SetOffset(value uint32) PatternFlowGtpExtensionNextExtensionHeaderMetricTag + // HasOffset checks if Offset has been set in PatternFlowGtpExtensionNextExtensionHeaderMetricTag HasOffset() bool - // Length returns uint32, set in PatternFlowGtpv2TeidFlagMetricTag. + // Length returns uint32, set in PatternFlowGtpExtensionNextExtensionHeaderMetricTag. Length() uint32 - // SetLength assigns uint32 provided by user to PatternFlowGtpv2TeidFlagMetricTag - SetLength(value uint32) PatternFlowGtpv2TeidFlagMetricTag - // HasLength checks if Length has been set in PatternFlowGtpv2TeidFlagMetricTag + // SetLength assigns uint32 provided by user to PatternFlowGtpExtensionNextExtensionHeaderMetricTag + SetLength(value uint32) PatternFlowGtpExtensionNextExtensionHeaderMetricTag + // HasLength checks if Length has been set in PatternFlowGtpExtensionNextExtensionHeaderMetricTag HasLength() bool } // Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field // Name returns a string -func (obj *patternFlowGtpv2TeidFlagMetricTag) Name() string { +func (obj *patternFlowGtpExtensionNextExtensionHeaderMetricTag) Name() string { return *obj.obj.Name } // Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field -// SetName sets the string value in the PatternFlowGtpv2TeidFlagMetricTag object -func (obj *patternFlowGtpv2TeidFlagMetricTag) SetName(value string) PatternFlowGtpv2TeidFlagMetricTag { +// SetName sets the string value in the PatternFlowGtpExtensionNextExtensionHeaderMetricTag object +func (obj *patternFlowGtpExtensionNextExtensionHeaderMetricTag) SetName(value string) PatternFlowGtpExtensionNextExtensionHeaderMetricTag { obj.obj.Name = &value return obj @@ -248640,7 +293914,7 @@ func (obj *patternFlowGtpv2TeidFlagMetricTag) SetName(value string) PatternFlowG // Offset in bits relative to start of corresponding header field // Offset returns a uint32 -func (obj *patternFlowGtpv2TeidFlagMetricTag) Offset() uint32 { +func (obj *patternFlowGtpExtensionNextExtensionHeaderMetricTag) Offset() uint32 { return *obj.obj.Offset @@ -248648,13 +293922,13 @@ func (obj *patternFlowGtpv2TeidFlagMetricTag) Offset() uint32 { // Offset in bits relative to start of corresponding header field // Offset returns a uint32 -func (obj *patternFlowGtpv2TeidFlagMetricTag) HasOffset() bool { +func (obj *patternFlowGtpExtensionNextExtensionHeaderMetricTag) HasOffset() bool { return obj.obj.Offset != nil } // Offset in bits relative to start of corresponding header field -// SetOffset sets the uint32 value in the PatternFlowGtpv2TeidFlagMetricTag object -func (obj *patternFlowGtpv2TeidFlagMetricTag) SetOffset(value uint32) PatternFlowGtpv2TeidFlagMetricTag { +// SetOffset sets the uint32 value in the PatternFlowGtpExtensionNextExtensionHeaderMetricTag object +func (obj *patternFlowGtpExtensionNextExtensionHeaderMetricTag) SetOffset(value uint32) PatternFlowGtpExtensionNextExtensionHeaderMetricTag { obj.obj.Offset = &value return obj @@ -248662,7 +293936,7 @@ func (obj *patternFlowGtpv2TeidFlagMetricTag) SetOffset(value uint32) PatternFlo // Number of bits to track for metrics starting from configured offset of corresponding header field // Length returns a uint32 -func (obj *patternFlowGtpv2TeidFlagMetricTag) Length() uint32 { +func (obj *patternFlowGtpExtensionNextExtensionHeaderMetricTag) Length() uint32 { return *obj.obj.Length @@ -248670,83 +293944,83 @@ func (obj *patternFlowGtpv2TeidFlagMetricTag) Length() uint32 { // Number of bits to track for metrics starting from configured offset of corresponding header field // Length returns a uint32 -func (obj *patternFlowGtpv2TeidFlagMetricTag) HasLength() bool { +func (obj *patternFlowGtpExtensionNextExtensionHeaderMetricTag) HasLength() bool { return obj.obj.Length != nil } // Number of bits to track for metrics starting from configured offset of corresponding header field -// SetLength sets the uint32 value in the PatternFlowGtpv2TeidFlagMetricTag object -func (obj *patternFlowGtpv2TeidFlagMetricTag) SetLength(value uint32) PatternFlowGtpv2TeidFlagMetricTag { +// SetLength sets the uint32 value in the PatternFlowGtpExtensionNextExtensionHeaderMetricTag object +func (obj *patternFlowGtpExtensionNextExtensionHeaderMetricTag) SetLength(value uint32) PatternFlowGtpExtensionNextExtensionHeaderMetricTag { obj.obj.Length = &value return obj } -func (obj *patternFlowGtpv2TeidFlagMetricTag) validateObj(vObj *validation, set_default bool) { +func (obj *patternFlowGtpExtensionNextExtensionHeaderMetricTag) validateObj(vObj *validation, set_default bool) { if set_default { obj.setDefault() } // Name is required if obj.obj.Name == nil { - vObj.validationErrors = append(vObj.validationErrors, "Name is required field on interface PatternFlowGtpv2TeidFlagMetricTag") + vObj.validationErrors = append(vObj.validationErrors, "Name is required field on interface PatternFlowGtpExtensionNextExtensionHeaderMetricTag") } if obj.obj.Offset != nil { - if *obj.obj.Offset > 0 { + if *obj.obj.Offset > 7 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowGtpv2TeidFlagMetricTag.Offset <= 0 but Got %d", *obj.obj.Offset)) + fmt.Sprintf("0 <= PatternFlowGtpExtensionNextExtensionHeaderMetricTag.Offset <= 7 but Got %d", *obj.obj.Offset)) } } if obj.obj.Length != nil { - if *obj.obj.Length < 1 || *obj.obj.Length > 1 { + if *obj.obj.Length < 1 || *obj.obj.Length > 8 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("1 <= PatternFlowGtpv2TeidFlagMetricTag.Length <= 1 but Got %d", *obj.obj.Length)) + fmt.Sprintf("1 <= PatternFlowGtpExtensionNextExtensionHeaderMetricTag.Length <= 8 but Got %d", *obj.obj.Length)) } } } -func (obj *patternFlowGtpv2TeidFlagMetricTag) setDefault() { +func (obj *patternFlowGtpExtensionNextExtensionHeaderMetricTag) setDefault() { if obj.obj.Offset == nil { obj.SetOffset(0) } if obj.obj.Length == nil { - obj.SetLength(1) + obj.SetLength(8) } } -// ***** PatternFlowGtpv2Spare1Counter ***** -type patternFlowGtpv2Spare1Counter struct { +// ***** PatternFlowIcmpEchoTypeCounter ***** +type patternFlowIcmpEchoTypeCounter struct { validation - obj *otg.PatternFlowGtpv2Spare1Counter + obj *otg.PatternFlowIcmpEchoTypeCounter } -func NewPatternFlowGtpv2Spare1Counter() PatternFlowGtpv2Spare1Counter { - obj := patternFlowGtpv2Spare1Counter{obj: &otg.PatternFlowGtpv2Spare1Counter{}} +func NewPatternFlowIcmpEchoTypeCounter() PatternFlowIcmpEchoTypeCounter { + obj := patternFlowIcmpEchoTypeCounter{obj: &otg.PatternFlowIcmpEchoTypeCounter{}} obj.setDefault() return &obj } -func (obj *patternFlowGtpv2Spare1Counter) Msg() *otg.PatternFlowGtpv2Spare1Counter { +func (obj *patternFlowIcmpEchoTypeCounter) Msg() *otg.PatternFlowIcmpEchoTypeCounter { return obj.obj } -func (obj *patternFlowGtpv2Spare1Counter) SetMsg(msg *otg.PatternFlowGtpv2Spare1Counter) PatternFlowGtpv2Spare1Counter { +func (obj *patternFlowIcmpEchoTypeCounter) SetMsg(msg *otg.PatternFlowIcmpEchoTypeCounter) PatternFlowIcmpEchoTypeCounter { proto.Merge(obj.obj, msg) return obj } -func (obj *patternFlowGtpv2Spare1Counter) ToProto() (*otg.PatternFlowGtpv2Spare1Counter, error) { +func (obj *patternFlowIcmpEchoTypeCounter) ToProto() (*otg.PatternFlowIcmpEchoTypeCounter, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -248754,7 +294028,7 @@ func (obj *patternFlowGtpv2Spare1Counter) ToProto() (*otg.PatternFlowGtpv2Spare1 return obj.Msg(), nil } -func (obj *patternFlowGtpv2Spare1Counter) FromProto(msg *otg.PatternFlowGtpv2Spare1Counter) (PatternFlowGtpv2Spare1Counter, error) { +func (obj *patternFlowIcmpEchoTypeCounter) FromProto(msg *otg.PatternFlowIcmpEchoTypeCounter) (PatternFlowIcmpEchoTypeCounter, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -248763,7 +294037,7 @@ func (obj *patternFlowGtpv2Spare1Counter) FromProto(msg *otg.PatternFlowGtpv2Spa return newObj, nil } -func (obj *patternFlowGtpv2Spare1Counter) ToPbText() (string, error) { +func (obj *patternFlowIcmpEchoTypeCounter) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -248775,7 +294049,7 @@ func (obj *patternFlowGtpv2Spare1Counter) ToPbText() (string, error) { return string(protoMarshal), nil } -func (obj *patternFlowGtpv2Spare1Counter) FromPbText(value string) error { +func (obj *patternFlowIcmpEchoTypeCounter) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj @@ -248788,7 +294062,7 @@ func (obj *patternFlowGtpv2Spare1Counter) FromPbText(value string) error { return retObj } -func (obj *patternFlowGtpv2Spare1Counter) ToYaml() (string, error) { +func (obj *patternFlowIcmpEchoTypeCounter) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -248809,7 +294083,7 @@ func (obj *patternFlowGtpv2Spare1Counter) ToYaml() (string, error) { return string(data), nil } -func (obj *patternFlowGtpv2Spare1Counter) FromYaml(value string) error { +func (obj *patternFlowIcmpEchoTypeCounter) FromYaml(value string) error { if value == "" { value = "{}" } @@ -248834,7 +294108,7 @@ func (obj *patternFlowGtpv2Spare1Counter) FromYaml(value string) error { return nil } -func (obj *patternFlowGtpv2Spare1Counter) ToJson() (string, error) { +func (obj *patternFlowIcmpEchoTypeCounter) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -248852,7 +294126,7 @@ func (obj *patternFlowGtpv2Spare1Counter) ToJson() (string, error) { return string(data), nil } -func (obj *patternFlowGtpv2Spare1Counter) FromJson(value string) error { +func (obj *patternFlowIcmpEchoTypeCounter) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -248873,19 +294147,19 @@ func (obj *patternFlowGtpv2Spare1Counter) FromJson(value string) error { return nil } -func (obj *patternFlowGtpv2Spare1Counter) validateToAndFrom() error { +func (obj *patternFlowIcmpEchoTypeCounter) validateToAndFrom() error { // emptyVars() obj.validateObj(&obj.validation, true) return obj.validationResult() } -func (obj *patternFlowGtpv2Spare1Counter) Validate() error { +func (obj *patternFlowIcmpEchoTypeCounter) Validate() error { // emptyVars() obj.validateObj(&obj.validation, false) return obj.validationResult() } -func (obj *patternFlowGtpv2Spare1Counter) String() string { +func (obj *patternFlowIcmpEchoTypeCounter) String() string { str, err := obj.ToYaml() if err != nil { return err.Error() @@ -248893,12 +294167,12 @@ func (obj *patternFlowGtpv2Spare1Counter) String() string { return str } -func (obj *patternFlowGtpv2Spare1Counter) Clone() (PatternFlowGtpv2Spare1Counter, error) { +func (obj *patternFlowIcmpEchoTypeCounter) Clone() (PatternFlowIcmpEchoTypeCounter, error) { vErr := obj.Validate() if vErr != nil { return nil, vErr } - newObj := NewPatternFlowGtpv2Spare1Counter() + newObj := NewPatternFlowIcmpEchoTypeCounter() data, err := proto.Marshal(obj.Msg()) if err != nil { return nil, err @@ -248910,63 +294184,63 @@ func (obj *patternFlowGtpv2Spare1Counter) Clone() (PatternFlowGtpv2Spare1Counter return newObj, nil } -// PatternFlowGtpv2Spare1Counter is integer counter pattern -type PatternFlowGtpv2Spare1Counter interface { +// PatternFlowIcmpEchoTypeCounter is integer counter pattern +type PatternFlowIcmpEchoTypeCounter interface { Validation - // Msg marshals PatternFlowGtpv2Spare1Counter to protobuf object *otg.PatternFlowGtpv2Spare1Counter + // Msg marshals PatternFlowIcmpEchoTypeCounter to protobuf object *otg.PatternFlowIcmpEchoTypeCounter // and doesn't set defaults - Msg() *otg.PatternFlowGtpv2Spare1Counter - // SetMsg unmarshals PatternFlowGtpv2Spare1Counter from protobuf object *otg.PatternFlowGtpv2Spare1Counter + Msg() *otg.PatternFlowIcmpEchoTypeCounter + // SetMsg unmarshals PatternFlowIcmpEchoTypeCounter from protobuf object *otg.PatternFlowIcmpEchoTypeCounter // and doesn't set defaults - SetMsg(*otg.PatternFlowGtpv2Spare1Counter) PatternFlowGtpv2Spare1Counter - // ToProto marshals PatternFlowGtpv2Spare1Counter to protobuf object *otg.PatternFlowGtpv2Spare1Counter - ToProto() (*otg.PatternFlowGtpv2Spare1Counter, error) - // ToPbText marshals PatternFlowGtpv2Spare1Counter to protobuf text + SetMsg(*otg.PatternFlowIcmpEchoTypeCounter) PatternFlowIcmpEchoTypeCounter + // ToProto marshals PatternFlowIcmpEchoTypeCounter to protobuf object *otg.PatternFlowIcmpEchoTypeCounter + ToProto() (*otg.PatternFlowIcmpEchoTypeCounter, error) + // ToPbText marshals PatternFlowIcmpEchoTypeCounter to protobuf text ToPbText() (string, error) - // ToYaml marshals PatternFlowGtpv2Spare1Counter to YAML text + // ToYaml marshals PatternFlowIcmpEchoTypeCounter to YAML text ToYaml() (string, error) - // ToJson marshals PatternFlowGtpv2Spare1Counter to JSON text + // ToJson marshals PatternFlowIcmpEchoTypeCounter to JSON text ToJson() (string, error) - // FromProto unmarshals PatternFlowGtpv2Spare1Counter from protobuf object *otg.PatternFlowGtpv2Spare1Counter - FromProto(msg *otg.PatternFlowGtpv2Spare1Counter) (PatternFlowGtpv2Spare1Counter, error) - // FromPbText unmarshals PatternFlowGtpv2Spare1Counter from protobuf text + // FromProto unmarshals PatternFlowIcmpEchoTypeCounter from protobuf object *otg.PatternFlowIcmpEchoTypeCounter + FromProto(msg *otg.PatternFlowIcmpEchoTypeCounter) (PatternFlowIcmpEchoTypeCounter, error) + // FromPbText unmarshals PatternFlowIcmpEchoTypeCounter from protobuf text FromPbText(value string) error - // FromYaml unmarshals PatternFlowGtpv2Spare1Counter from YAML text + // FromYaml unmarshals PatternFlowIcmpEchoTypeCounter from YAML text FromYaml(value string) error - // FromJson unmarshals PatternFlowGtpv2Spare1Counter from JSON text + // FromJson unmarshals PatternFlowIcmpEchoTypeCounter from JSON text FromJson(value string) error - // Validate validates PatternFlowGtpv2Spare1Counter + // Validate validates PatternFlowIcmpEchoTypeCounter Validate() error // A stringer function String() string // Clones the object - Clone() (PatternFlowGtpv2Spare1Counter, error) + Clone() (PatternFlowIcmpEchoTypeCounter, error) validateToAndFrom() error validateObj(vObj *validation, set_default bool) setDefault() - // Start returns uint32, set in PatternFlowGtpv2Spare1Counter. + // Start returns uint32, set in PatternFlowIcmpEchoTypeCounter. Start() uint32 - // SetStart assigns uint32 provided by user to PatternFlowGtpv2Spare1Counter - SetStart(value uint32) PatternFlowGtpv2Spare1Counter - // HasStart checks if Start has been set in PatternFlowGtpv2Spare1Counter + // SetStart assigns uint32 provided by user to PatternFlowIcmpEchoTypeCounter + SetStart(value uint32) PatternFlowIcmpEchoTypeCounter + // HasStart checks if Start has been set in PatternFlowIcmpEchoTypeCounter HasStart() bool - // Step returns uint32, set in PatternFlowGtpv2Spare1Counter. + // Step returns uint32, set in PatternFlowIcmpEchoTypeCounter. Step() uint32 - // SetStep assigns uint32 provided by user to PatternFlowGtpv2Spare1Counter - SetStep(value uint32) PatternFlowGtpv2Spare1Counter - // HasStep checks if Step has been set in PatternFlowGtpv2Spare1Counter + // SetStep assigns uint32 provided by user to PatternFlowIcmpEchoTypeCounter + SetStep(value uint32) PatternFlowIcmpEchoTypeCounter + // HasStep checks if Step has been set in PatternFlowIcmpEchoTypeCounter HasStep() bool - // Count returns uint32, set in PatternFlowGtpv2Spare1Counter. + // Count returns uint32, set in PatternFlowIcmpEchoTypeCounter. Count() uint32 - // SetCount assigns uint32 provided by user to PatternFlowGtpv2Spare1Counter - SetCount(value uint32) PatternFlowGtpv2Spare1Counter - // HasCount checks if Count has been set in PatternFlowGtpv2Spare1Counter + // SetCount assigns uint32 provided by user to PatternFlowIcmpEchoTypeCounter + SetCount(value uint32) PatternFlowIcmpEchoTypeCounter + // HasCount checks if Count has been set in PatternFlowIcmpEchoTypeCounter HasCount() bool } // description is TBD // Start returns a uint32 -func (obj *patternFlowGtpv2Spare1Counter) Start() uint32 { +func (obj *patternFlowIcmpEchoTypeCounter) Start() uint32 { return *obj.obj.Start @@ -248974,13 +294248,13 @@ func (obj *patternFlowGtpv2Spare1Counter) Start() uint32 { // description is TBD // Start returns a uint32 -func (obj *patternFlowGtpv2Spare1Counter) HasStart() bool { +func (obj *patternFlowIcmpEchoTypeCounter) HasStart() bool { return obj.obj.Start != nil } // description is TBD -// SetStart sets the uint32 value in the PatternFlowGtpv2Spare1Counter object -func (obj *patternFlowGtpv2Spare1Counter) SetStart(value uint32) PatternFlowGtpv2Spare1Counter { +// SetStart sets the uint32 value in the PatternFlowIcmpEchoTypeCounter object +func (obj *patternFlowIcmpEchoTypeCounter) SetStart(value uint32) PatternFlowIcmpEchoTypeCounter { obj.obj.Start = &value return obj @@ -248988,7 +294262,7 @@ func (obj *patternFlowGtpv2Spare1Counter) SetStart(value uint32) PatternFlowGtpv // description is TBD // Step returns a uint32 -func (obj *patternFlowGtpv2Spare1Counter) Step() uint32 { +func (obj *patternFlowIcmpEchoTypeCounter) Step() uint32 { return *obj.obj.Step @@ -248996,13 +294270,13 @@ func (obj *patternFlowGtpv2Spare1Counter) Step() uint32 { // description is TBD // Step returns a uint32 -func (obj *patternFlowGtpv2Spare1Counter) HasStep() bool { +func (obj *patternFlowIcmpEchoTypeCounter) HasStep() bool { return obj.obj.Step != nil } // description is TBD -// SetStep sets the uint32 value in the PatternFlowGtpv2Spare1Counter object -func (obj *patternFlowGtpv2Spare1Counter) SetStep(value uint32) PatternFlowGtpv2Spare1Counter { +// SetStep sets the uint32 value in the PatternFlowIcmpEchoTypeCounter object +func (obj *patternFlowIcmpEchoTypeCounter) SetStep(value uint32) PatternFlowIcmpEchoTypeCounter { obj.obj.Step = &value return obj @@ -249010,7 +294284,7 @@ func (obj *patternFlowGtpv2Spare1Counter) SetStep(value uint32) PatternFlowGtpv2 // description is TBD // Count returns a uint32 -func (obj *patternFlowGtpv2Spare1Counter) Count() uint32 { +func (obj *patternFlowIcmpEchoTypeCounter) Count() uint32 { return *obj.obj.Count @@ -249018,58 +294292,58 @@ func (obj *patternFlowGtpv2Spare1Counter) Count() uint32 { // description is TBD // Count returns a uint32 -func (obj *patternFlowGtpv2Spare1Counter) HasCount() bool { +func (obj *patternFlowIcmpEchoTypeCounter) HasCount() bool { return obj.obj.Count != nil } // description is TBD -// SetCount sets the uint32 value in the PatternFlowGtpv2Spare1Counter object -func (obj *patternFlowGtpv2Spare1Counter) SetCount(value uint32) PatternFlowGtpv2Spare1Counter { +// SetCount sets the uint32 value in the PatternFlowIcmpEchoTypeCounter object +func (obj *patternFlowIcmpEchoTypeCounter) SetCount(value uint32) PatternFlowIcmpEchoTypeCounter { obj.obj.Count = &value return obj } -func (obj *patternFlowGtpv2Spare1Counter) validateObj(vObj *validation, set_default bool) { +func (obj *patternFlowIcmpEchoTypeCounter) validateObj(vObj *validation, set_default bool) { if set_default { obj.setDefault() } if obj.obj.Start != nil { - if *obj.obj.Start > 7 { + if *obj.obj.Start > 255 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowGtpv2Spare1Counter.Start <= 7 but Got %d", *obj.obj.Start)) + fmt.Sprintf("0 <= PatternFlowIcmpEchoTypeCounter.Start <= 255 but Got %d", *obj.obj.Start)) } } if obj.obj.Step != nil { - if *obj.obj.Step > 7 { + if *obj.obj.Step > 255 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowGtpv2Spare1Counter.Step <= 7 but Got %d", *obj.obj.Step)) + fmt.Sprintf("0 <= PatternFlowIcmpEchoTypeCounter.Step <= 255 but Got %d", *obj.obj.Step)) } } if obj.obj.Count != nil { - if *obj.obj.Count > 7 { + if *obj.obj.Count > 255 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowGtpv2Spare1Counter.Count <= 7 but Got %d", *obj.obj.Count)) + fmt.Sprintf("0 <= PatternFlowIcmpEchoTypeCounter.Count <= 255 but Got %d", *obj.obj.Count)) } } } -func (obj *patternFlowGtpv2Spare1Counter) setDefault() { +func (obj *patternFlowIcmpEchoTypeCounter) setDefault() { if obj.obj.Start == nil { - obj.SetStart(0) + obj.SetStart(8) } if obj.obj.Step == nil { obj.SetStep(1) @@ -249080,29 +294354,29 @@ func (obj *patternFlowGtpv2Spare1Counter) setDefault() { } -// ***** PatternFlowGtpv2Spare1MetricTag ***** -type patternFlowGtpv2Spare1MetricTag struct { +// ***** PatternFlowIcmpEchoTypeMetricTag ***** +type patternFlowIcmpEchoTypeMetricTag struct { validation - obj *otg.PatternFlowGtpv2Spare1MetricTag + obj *otg.PatternFlowIcmpEchoTypeMetricTag } -func NewPatternFlowGtpv2Spare1MetricTag() PatternFlowGtpv2Spare1MetricTag { - obj := patternFlowGtpv2Spare1MetricTag{obj: &otg.PatternFlowGtpv2Spare1MetricTag{}} +func NewPatternFlowIcmpEchoTypeMetricTag() PatternFlowIcmpEchoTypeMetricTag { + obj := patternFlowIcmpEchoTypeMetricTag{obj: &otg.PatternFlowIcmpEchoTypeMetricTag{}} obj.setDefault() return &obj } -func (obj *patternFlowGtpv2Spare1MetricTag) Msg() *otg.PatternFlowGtpv2Spare1MetricTag { +func (obj *patternFlowIcmpEchoTypeMetricTag) Msg() *otg.PatternFlowIcmpEchoTypeMetricTag { return obj.obj } -func (obj *patternFlowGtpv2Spare1MetricTag) SetMsg(msg *otg.PatternFlowGtpv2Spare1MetricTag) PatternFlowGtpv2Spare1MetricTag { +func (obj *patternFlowIcmpEchoTypeMetricTag) SetMsg(msg *otg.PatternFlowIcmpEchoTypeMetricTag) PatternFlowIcmpEchoTypeMetricTag { proto.Merge(obj.obj, msg) return obj } -func (obj *patternFlowGtpv2Spare1MetricTag) ToProto() (*otg.PatternFlowGtpv2Spare1MetricTag, error) { +func (obj *patternFlowIcmpEchoTypeMetricTag) ToProto() (*otg.PatternFlowIcmpEchoTypeMetricTag, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -249110,7 +294384,7 @@ func (obj *patternFlowGtpv2Spare1MetricTag) ToProto() (*otg.PatternFlowGtpv2Spar return obj.Msg(), nil } -func (obj *patternFlowGtpv2Spare1MetricTag) FromProto(msg *otg.PatternFlowGtpv2Spare1MetricTag) (PatternFlowGtpv2Spare1MetricTag, error) { +func (obj *patternFlowIcmpEchoTypeMetricTag) FromProto(msg *otg.PatternFlowIcmpEchoTypeMetricTag) (PatternFlowIcmpEchoTypeMetricTag, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -249119,7 +294393,7 @@ func (obj *patternFlowGtpv2Spare1MetricTag) FromProto(msg *otg.PatternFlowGtpv2S return newObj, nil } -func (obj *patternFlowGtpv2Spare1MetricTag) ToPbText() (string, error) { +func (obj *patternFlowIcmpEchoTypeMetricTag) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -249131,7 +294405,7 @@ func (obj *patternFlowGtpv2Spare1MetricTag) ToPbText() (string, error) { return string(protoMarshal), nil } -func (obj *patternFlowGtpv2Spare1MetricTag) FromPbText(value string) error { +func (obj *patternFlowIcmpEchoTypeMetricTag) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj @@ -249144,7 +294418,7 @@ func (obj *patternFlowGtpv2Spare1MetricTag) FromPbText(value string) error { return retObj } -func (obj *patternFlowGtpv2Spare1MetricTag) ToYaml() (string, error) { +func (obj *patternFlowIcmpEchoTypeMetricTag) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -249165,7 +294439,7 @@ func (obj *patternFlowGtpv2Spare1MetricTag) ToYaml() (string, error) { return string(data), nil } -func (obj *patternFlowGtpv2Spare1MetricTag) FromYaml(value string) error { +func (obj *patternFlowIcmpEchoTypeMetricTag) FromYaml(value string) error { if value == "" { value = "{}" } @@ -249190,7 +294464,7 @@ func (obj *patternFlowGtpv2Spare1MetricTag) FromYaml(value string) error { return nil } -func (obj *patternFlowGtpv2Spare1MetricTag) ToJson() (string, error) { +func (obj *patternFlowIcmpEchoTypeMetricTag) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -249208,7 +294482,7 @@ func (obj *patternFlowGtpv2Spare1MetricTag) ToJson() (string, error) { return string(data), nil } -func (obj *patternFlowGtpv2Spare1MetricTag) FromJson(value string) error { +func (obj *patternFlowIcmpEchoTypeMetricTag) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -249229,19 +294503,19 @@ func (obj *patternFlowGtpv2Spare1MetricTag) FromJson(value string) error { return nil } -func (obj *patternFlowGtpv2Spare1MetricTag) validateToAndFrom() error { +func (obj *patternFlowIcmpEchoTypeMetricTag) validateToAndFrom() error { // emptyVars() obj.validateObj(&obj.validation, true) return obj.validationResult() } -func (obj *patternFlowGtpv2Spare1MetricTag) Validate() error { +func (obj *patternFlowIcmpEchoTypeMetricTag) Validate() error { // emptyVars() obj.validateObj(&obj.validation, false) return obj.validationResult() } -func (obj *patternFlowGtpv2Spare1MetricTag) String() string { +func (obj *patternFlowIcmpEchoTypeMetricTag) String() string { str, err := obj.ToYaml() if err != nil { return err.Error() @@ -249249,12 +294523,12 @@ func (obj *patternFlowGtpv2Spare1MetricTag) String() string { return str } -func (obj *patternFlowGtpv2Spare1MetricTag) Clone() (PatternFlowGtpv2Spare1MetricTag, error) { +func (obj *patternFlowIcmpEchoTypeMetricTag) Clone() (PatternFlowIcmpEchoTypeMetricTag, error) { vErr := obj.Validate() if vErr != nil { return nil, vErr } - newObj := NewPatternFlowGtpv2Spare1MetricTag() + newObj := NewPatternFlowIcmpEchoTypeMetricTag() data, err := proto.Marshal(obj.Msg()) if err != nil { return nil, err @@ -249266,69 +294540,69 @@ func (obj *patternFlowGtpv2Spare1MetricTag) Clone() (PatternFlowGtpv2Spare1Metri return newObj, nil } -// PatternFlowGtpv2Spare1MetricTag is metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. -type PatternFlowGtpv2Spare1MetricTag interface { +// PatternFlowIcmpEchoTypeMetricTag is metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. +type PatternFlowIcmpEchoTypeMetricTag interface { Validation - // Msg marshals PatternFlowGtpv2Spare1MetricTag to protobuf object *otg.PatternFlowGtpv2Spare1MetricTag + // Msg marshals PatternFlowIcmpEchoTypeMetricTag to protobuf object *otg.PatternFlowIcmpEchoTypeMetricTag // and doesn't set defaults - Msg() *otg.PatternFlowGtpv2Spare1MetricTag - // SetMsg unmarshals PatternFlowGtpv2Spare1MetricTag from protobuf object *otg.PatternFlowGtpv2Spare1MetricTag + Msg() *otg.PatternFlowIcmpEchoTypeMetricTag + // SetMsg unmarshals PatternFlowIcmpEchoTypeMetricTag from protobuf object *otg.PatternFlowIcmpEchoTypeMetricTag // and doesn't set defaults - SetMsg(*otg.PatternFlowGtpv2Spare1MetricTag) PatternFlowGtpv2Spare1MetricTag - // ToProto marshals PatternFlowGtpv2Spare1MetricTag to protobuf object *otg.PatternFlowGtpv2Spare1MetricTag - ToProto() (*otg.PatternFlowGtpv2Spare1MetricTag, error) - // ToPbText marshals PatternFlowGtpv2Spare1MetricTag to protobuf text + SetMsg(*otg.PatternFlowIcmpEchoTypeMetricTag) PatternFlowIcmpEchoTypeMetricTag + // ToProto marshals PatternFlowIcmpEchoTypeMetricTag to protobuf object *otg.PatternFlowIcmpEchoTypeMetricTag + ToProto() (*otg.PatternFlowIcmpEchoTypeMetricTag, error) + // ToPbText marshals PatternFlowIcmpEchoTypeMetricTag to protobuf text ToPbText() (string, error) - // ToYaml marshals PatternFlowGtpv2Spare1MetricTag to YAML text + // ToYaml marshals PatternFlowIcmpEchoTypeMetricTag to YAML text ToYaml() (string, error) - // ToJson marshals PatternFlowGtpv2Spare1MetricTag to JSON text + // ToJson marshals PatternFlowIcmpEchoTypeMetricTag to JSON text ToJson() (string, error) - // FromProto unmarshals PatternFlowGtpv2Spare1MetricTag from protobuf object *otg.PatternFlowGtpv2Spare1MetricTag - FromProto(msg *otg.PatternFlowGtpv2Spare1MetricTag) (PatternFlowGtpv2Spare1MetricTag, error) - // FromPbText unmarshals PatternFlowGtpv2Spare1MetricTag from protobuf text + // FromProto unmarshals PatternFlowIcmpEchoTypeMetricTag from protobuf object *otg.PatternFlowIcmpEchoTypeMetricTag + FromProto(msg *otg.PatternFlowIcmpEchoTypeMetricTag) (PatternFlowIcmpEchoTypeMetricTag, error) + // FromPbText unmarshals PatternFlowIcmpEchoTypeMetricTag from protobuf text FromPbText(value string) error - // FromYaml unmarshals PatternFlowGtpv2Spare1MetricTag from YAML text + // FromYaml unmarshals PatternFlowIcmpEchoTypeMetricTag from YAML text FromYaml(value string) error - // FromJson unmarshals PatternFlowGtpv2Spare1MetricTag from JSON text + // FromJson unmarshals PatternFlowIcmpEchoTypeMetricTag from JSON text FromJson(value string) error - // Validate validates PatternFlowGtpv2Spare1MetricTag + // Validate validates PatternFlowIcmpEchoTypeMetricTag Validate() error // A stringer function String() string // Clones the object - Clone() (PatternFlowGtpv2Spare1MetricTag, error) + Clone() (PatternFlowIcmpEchoTypeMetricTag, error) validateToAndFrom() error validateObj(vObj *validation, set_default bool) setDefault() - // Name returns string, set in PatternFlowGtpv2Spare1MetricTag. + // Name returns string, set in PatternFlowIcmpEchoTypeMetricTag. Name() string - // SetName assigns string provided by user to PatternFlowGtpv2Spare1MetricTag - SetName(value string) PatternFlowGtpv2Spare1MetricTag - // Offset returns uint32, set in PatternFlowGtpv2Spare1MetricTag. + // SetName assigns string provided by user to PatternFlowIcmpEchoTypeMetricTag + SetName(value string) PatternFlowIcmpEchoTypeMetricTag + // Offset returns uint32, set in PatternFlowIcmpEchoTypeMetricTag. Offset() uint32 - // SetOffset assigns uint32 provided by user to PatternFlowGtpv2Spare1MetricTag - SetOffset(value uint32) PatternFlowGtpv2Spare1MetricTag - // HasOffset checks if Offset has been set in PatternFlowGtpv2Spare1MetricTag + // SetOffset assigns uint32 provided by user to PatternFlowIcmpEchoTypeMetricTag + SetOffset(value uint32) PatternFlowIcmpEchoTypeMetricTag + // HasOffset checks if Offset has been set in PatternFlowIcmpEchoTypeMetricTag HasOffset() bool - // Length returns uint32, set in PatternFlowGtpv2Spare1MetricTag. + // Length returns uint32, set in PatternFlowIcmpEchoTypeMetricTag. Length() uint32 - // SetLength assigns uint32 provided by user to PatternFlowGtpv2Spare1MetricTag - SetLength(value uint32) PatternFlowGtpv2Spare1MetricTag - // HasLength checks if Length has been set in PatternFlowGtpv2Spare1MetricTag + // SetLength assigns uint32 provided by user to PatternFlowIcmpEchoTypeMetricTag + SetLength(value uint32) PatternFlowIcmpEchoTypeMetricTag + // HasLength checks if Length has been set in PatternFlowIcmpEchoTypeMetricTag HasLength() bool } // Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field // Name returns a string -func (obj *patternFlowGtpv2Spare1MetricTag) Name() string { +func (obj *patternFlowIcmpEchoTypeMetricTag) Name() string { return *obj.obj.Name } // Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field -// SetName sets the string value in the PatternFlowGtpv2Spare1MetricTag object -func (obj *patternFlowGtpv2Spare1MetricTag) SetName(value string) PatternFlowGtpv2Spare1MetricTag { +// SetName sets the string value in the PatternFlowIcmpEchoTypeMetricTag object +func (obj *patternFlowIcmpEchoTypeMetricTag) SetName(value string) PatternFlowIcmpEchoTypeMetricTag { obj.obj.Name = &value return obj @@ -249336,7 +294610,7 @@ func (obj *patternFlowGtpv2Spare1MetricTag) SetName(value string) PatternFlowGtp // Offset in bits relative to start of corresponding header field // Offset returns a uint32 -func (obj *patternFlowGtpv2Spare1MetricTag) Offset() uint32 { +func (obj *patternFlowIcmpEchoTypeMetricTag) Offset() uint32 { return *obj.obj.Offset @@ -249344,13 +294618,13 @@ func (obj *patternFlowGtpv2Spare1MetricTag) Offset() uint32 { // Offset in bits relative to start of corresponding header field // Offset returns a uint32 -func (obj *patternFlowGtpv2Spare1MetricTag) HasOffset() bool { +func (obj *patternFlowIcmpEchoTypeMetricTag) HasOffset() bool { return obj.obj.Offset != nil } // Offset in bits relative to start of corresponding header field -// SetOffset sets the uint32 value in the PatternFlowGtpv2Spare1MetricTag object -func (obj *patternFlowGtpv2Spare1MetricTag) SetOffset(value uint32) PatternFlowGtpv2Spare1MetricTag { +// SetOffset sets the uint32 value in the PatternFlowIcmpEchoTypeMetricTag object +func (obj *patternFlowIcmpEchoTypeMetricTag) SetOffset(value uint32) PatternFlowIcmpEchoTypeMetricTag { obj.obj.Offset = &value return obj @@ -249358,7 +294632,7 @@ func (obj *patternFlowGtpv2Spare1MetricTag) SetOffset(value uint32) PatternFlowG // Number of bits to track for metrics starting from configured offset of corresponding header field // Length returns a uint32 -func (obj *patternFlowGtpv2Spare1MetricTag) Length() uint32 { +func (obj *patternFlowIcmpEchoTypeMetricTag) Length() uint32 { return *obj.obj.Length @@ -249366,83 +294640,83 @@ func (obj *patternFlowGtpv2Spare1MetricTag) Length() uint32 { // Number of bits to track for metrics starting from configured offset of corresponding header field // Length returns a uint32 -func (obj *patternFlowGtpv2Spare1MetricTag) HasLength() bool { +func (obj *patternFlowIcmpEchoTypeMetricTag) HasLength() bool { return obj.obj.Length != nil } // Number of bits to track for metrics starting from configured offset of corresponding header field -// SetLength sets the uint32 value in the PatternFlowGtpv2Spare1MetricTag object -func (obj *patternFlowGtpv2Spare1MetricTag) SetLength(value uint32) PatternFlowGtpv2Spare1MetricTag { +// SetLength sets the uint32 value in the PatternFlowIcmpEchoTypeMetricTag object +func (obj *patternFlowIcmpEchoTypeMetricTag) SetLength(value uint32) PatternFlowIcmpEchoTypeMetricTag { obj.obj.Length = &value return obj } -func (obj *patternFlowGtpv2Spare1MetricTag) validateObj(vObj *validation, set_default bool) { +func (obj *patternFlowIcmpEchoTypeMetricTag) validateObj(vObj *validation, set_default bool) { if set_default { obj.setDefault() } // Name is required if obj.obj.Name == nil { - vObj.validationErrors = append(vObj.validationErrors, "Name is required field on interface PatternFlowGtpv2Spare1MetricTag") + vObj.validationErrors = append(vObj.validationErrors, "Name is required field on interface PatternFlowIcmpEchoTypeMetricTag") } if obj.obj.Offset != nil { - if *obj.obj.Offset > 2 { + if *obj.obj.Offset > 7 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowGtpv2Spare1MetricTag.Offset <= 2 but Got %d", *obj.obj.Offset)) + fmt.Sprintf("0 <= PatternFlowIcmpEchoTypeMetricTag.Offset <= 7 but Got %d", *obj.obj.Offset)) } } if obj.obj.Length != nil { - if *obj.obj.Length < 1 || *obj.obj.Length > 3 { + if *obj.obj.Length < 1 || *obj.obj.Length > 8 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("1 <= PatternFlowGtpv2Spare1MetricTag.Length <= 3 but Got %d", *obj.obj.Length)) + fmt.Sprintf("1 <= PatternFlowIcmpEchoTypeMetricTag.Length <= 8 but Got %d", *obj.obj.Length)) } } } -func (obj *patternFlowGtpv2Spare1MetricTag) setDefault() { +func (obj *patternFlowIcmpEchoTypeMetricTag) setDefault() { if obj.obj.Offset == nil { obj.SetOffset(0) } if obj.obj.Length == nil { - obj.SetLength(3) + obj.SetLength(8) } } -// ***** PatternFlowGtpv2MessageTypeCounter ***** -type patternFlowGtpv2MessageTypeCounter struct { +// ***** PatternFlowIcmpEchoCodeCounter ***** +type patternFlowIcmpEchoCodeCounter struct { validation - obj *otg.PatternFlowGtpv2MessageTypeCounter + obj *otg.PatternFlowIcmpEchoCodeCounter } -func NewPatternFlowGtpv2MessageTypeCounter() PatternFlowGtpv2MessageTypeCounter { - obj := patternFlowGtpv2MessageTypeCounter{obj: &otg.PatternFlowGtpv2MessageTypeCounter{}} +func NewPatternFlowIcmpEchoCodeCounter() PatternFlowIcmpEchoCodeCounter { + obj := patternFlowIcmpEchoCodeCounter{obj: &otg.PatternFlowIcmpEchoCodeCounter{}} obj.setDefault() return &obj } -func (obj *patternFlowGtpv2MessageTypeCounter) Msg() *otg.PatternFlowGtpv2MessageTypeCounter { +func (obj *patternFlowIcmpEchoCodeCounter) Msg() *otg.PatternFlowIcmpEchoCodeCounter { return obj.obj } -func (obj *patternFlowGtpv2MessageTypeCounter) SetMsg(msg *otg.PatternFlowGtpv2MessageTypeCounter) PatternFlowGtpv2MessageTypeCounter { +func (obj *patternFlowIcmpEchoCodeCounter) SetMsg(msg *otg.PatternFlowIcmpEchoCodeCounter) PatternFlowIcmpEchoCodeCounter { proto.Merge(obj.obj, msg) return obj } -func (obj *patternFlowGtpv2MessageTypeCounter) ToProto() (*otg.PatternFlowGtpv2MessageTypeCounter, error) { +func (obj *patternFlowIcmpEchoCodeCounter) ToProto() (*otg.PatternFlowIcmpEchoCodeCounter, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -249450,7 +294724,7 @@ func (obj *patternFlowGtpv2MessageTypeCounter) ToProto() (*otg.PatternFlowGtpv2M return obj.Msg(), nil } -func (obj *patternFlowGtpv2MessageTypeCounter) FromProto(msg *otg.PatternFlowGtpv2MessageTypeCounter) (PatternFlowGtpv2MessageTypeCounter, error) { +func (obj *patternFlowIcmpEchoCodeCounter) FromProto(msg *otg.PatternFlowIcmpEchoCodeCounter) (PatternFlowIcmpEchoCodeCounter, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -249459,7 +294733,7 @@ func (obj *patternFlowGtpv2MessageTypeCounter) FromProto(msg *otg.PatternFlowGtp return newObj, nil } -func (obj *patternFlowGtpv2MessageTypeCounter) ToPbText() (string, error) { +func (obj *patternFlowIcmpEchoCodeCounter) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -249471,7 +294745,7 @@ func (obj *patternFlowGtpv2MessageTypeCounter) ToPbText() (string, error) { return string(protoMarshal), nil } -func (obj *patternFlowGtpv2MessageTypeCounter) FromPbText(value string) error { +func (obj *patternFlowIcmpEchoCodeCounter) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj @@ -249484,7 +294758,7 @@ func (obj *patternFlowGtpv2MessageTypeCounter) FromPbText(value string) error { return retObj } -func (obj *patternFlowGtpv2MessageTypeCounter) ToYaml() (string, error) { +func (obj *patternFlowIcmpEchoCodeCounter) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -249505,7 +294779,7 @@ func (obj *patternFlowGtpv2MessageTypeCounter) ToYaml() (string, error) { return string(data), nil } -func (obj *patternFlowGtpv2MessageTypeCounter) FromYaml(value string) error { +func (obj *patternFlowIcmpEchoCodeCounter) FromYaml(value string) error { if value == "" { value = "{}" } @@ -249530,7 +294804,7 @@ func (obj *patternFlowGtpv2MessageTypeCounter) FromYaml(value string) error { return nil } -func (obj *patternFlowGtpv2MessageTypeCounter) ToJson() (string, error) { +func (obj *patternFlowIcmpEchoCodeCounter) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -249548,7 +294822,7 @@ func (obj *patternFlowGtpv2MessageTypeCounter) ToJson() (string, error) { return string(data), nil } -func (obj *patternFlowGtpv2MessageTypeCounter) FromJson(value string) error { +func (obj *patternFlowIcmpEchoCodeCounter) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -249569,19 +294843,19 @@ func (obj *patternFlowGtpv2MessageTypeCounter) FromJson(value string) error { return nil } -func (obj *patternFlowGtpv2MessageTypeCounter) validateToAndFrom() error { +func (obj *patternFlowIcmpEchoCodeCounter) validateToAndFrom() error { // emptyVars() obj.validateObj(&obj.validation, true) return obj.validationResult() } -func (obj *patternFlowGtpv2MessageTypeCounter) Validate() error { +func (obj *patternFlowIcmpEchoCodeCounter) Validate() error { // emptyVars() obj.validateObj(&obj.validation, false) return obj.validationResult() } -func (obj *patternFlowGtpv2MessageTypeCounter) String() string { +func (obj *patternFlowIcmpEchoCodeCounter) String() string { str, err := obj.ToYaml() if err != nil { return err.Error() @@ -249589,12 +294863,12 @@ func (obj *patternFlowGtpv2MessageTypeCounter) String() string { return str } -func (obj *patternFlowGtpv2MessageTypeCounter) Clone() (PatternFlowGtpv2MessageTypeCounter, error) { +func (obj *patternFlowIcmpEchoCodeCounter) Clone() (PatternFlowIcmpEchoCodeCounter, error) { vErr := obj.Validate() if vErr != nil { return nil, vErr } - newObj := NewPatternFlowGtpv2MessageTypeCounter() + newObj := NewPatternFlowIcmpEchoCodeCounter() data, err := proto.Marshal(obj.Msg()) if err != nil { return nil, err @@ -249606,63 +294880,63 @@ func (obj *patternFlowGtpv2MessageTypeCounter) Clone() (PatternFlowGtpv2MessageT return newObj, nil } -// PatternFlowGtpv2MessageTypeCounter is integer counter pattern -type PatternFlowGtpv2MessageTypeCounter interface { +// PatternFlowIcmpEchoCodeCounter is integer counter pattern +type PatternFlowIcmpEchoCodeCounter interface { Validation - // Msg marshals PatternFlowGtpv2MessageTypeCounter to protobuf object *otg.PatternFlowGtpv2MessageTypeCounter + // Msg marshals PatternFlowIcmpEchoCodeCounter to protobuf object *otg.PatternFlowIcmpEchoCodeCounter // and doesn't set defaults - Msg() *otg.PatternFlowGtpv2MessageTypeCounter - // SetMsg unmarshals PatternFlowGtpv2MessageTypeCounter from protobuf object *otg.PatternFlowGtpv2MessageTypeCounter + Msg() *otg.PatternFlowIcmpEchoCodeCounter + // SetMsg unmarshals PatternFlowIcmpEchoCodeCounter from protobuf object *otg.PatternFlowIcmpEchoCodeCounter // and doesn't set defaults - SetMsg(*otg.PatternFlowGtpv2MessageTypeCounter) PatternFlowGtpv2MessageTypeCounter - // ToProto marshals PatternFlowGtpv2MessageTypeCounter to protobuf object *otg.PatternFlowGtpv2MessageTypeCounter - ToProto() (*otg.PatternFlowGtpv2MessageTypeCounter, error) - // ToPbText marshals PatternFlowGtpv2MessageTypeCounter to protobuf text + SetMsg(*otg.PatternFlowIcmpEchoCodeCounter) PatternFlowIcmpEchoCodeCounter + // ToProto marshals PatternFlowIcmpEchoCodeCounter to protobuf object *otg.PatternFlowIcmpEchoCodeCounter + ToProto() (*otg.PatternFlowIcmpEchoCodeCounter, error) + // ToPbText marshals PatternFlowIcmpEchoCodeCounter to protobuf text ToPbText() (string, error) - // ToYaml marshals PatternFlowGtpv2MessageTypeCounter to YAML text + // ToYaml marshals PatternFlowIcmpEchoCodeCounter to YAML text ToYaml() (string, error) - // ToJson marshals PatternFlowGtpv2MessageTypeCounter to JSON text + // ToJson marshals PatternFlowIcmpEchoCodeCounter to JSON text ToJson() (string, error) - // FromProto unmarshals PatternFlowGtpv2MessageTypeCounter from protobuf object *otg.PatternFlowGtpv2MessageTypeCounter - FromProto(msg *otg.PatternFlowGtpv2MessageTypeCounter) (PatternFlowGtpv2MessageTypeCounter, error) - // FromPbText unmarshals PatternFlowGtpv2MessageTypeCounter from protobuf text + // FromProto unmarshals PatternFlowIcmpEchoCodeCounter from protobuf object *otg.PatternFlowIcmpEchoCodeCounter + FromProto(msg *otg.PatternFlowIcmpEchoCodeCounter) (PatternFlowIcmpEchoCodeCounter, error) + // FromPbText unmarshals PatternFlowIcmpEchoCodeCounter from protobuf text FromPbText(value string) error - // FromYaml unmarshals PatternFlowGtpv2MessageTypeCounter from YAML text + // FromYaml unmarshals PatternFlowIcmpEchoCodeCounter from YAML text FromYaml(value string) error - // FromJson unmarshals PatternFlowGtpv2MessageTypeCounter from JSON text + // FromJson unmarshals PatternFlowIcmpEchoCodeCounter from JSON text FromJson(value string) error - // Validate validates PatternFlowGtpv2MessageTypeCounter + // Validate validates PatternFlowIcmpEchoCodeCounter Validate() error // A stringer function String() string // Clones the object - Clone() (PatternFlowGtpv2MessageTypeCounter, error) + Clone() (PatternFlowIcmpEchoCodeCounter, error) validateToAndFrom() error validateObj(vObj *validation, set_default bool) setDefault() - // Start returns uint32, set in PatternFlowGtpv2MessageTypeCounter. + // Start returns uint32, set in PatternFlowIcmpEchoCodeCounter. Start() uint32 - // SetStart assigns uint32 provided by user to PatternFlowGtpv2MessageTypeCounter - SetStart(value uint32) PatternFlowGtpv2MessageTypeCounter - // HasStart checks if Start has been set in PatternFlowGtpv2MessageTypeCounter + // SetStart assigns uint32 provided by user to PatternFlowIcmpEchoCodeCounter + SetStart(value uint32) PatternFlowIcmpEchoCodeCounter + // HasStart checks if Start has been set in PatternFlowIcmpEchoCodeCounter HasStart() bool - // Step returns uint32, set in PatternFlowGtpv2MessageTypeCounter. + // Step returns uint32, set in PatternFlowIcmpEchoCodeCounter. Step() uint32 - // SetStep assigns uint32 provided by user to PatternFlowGtpv2MessageTypeCounter - SetStep(value uint32) PatternFlowGtpv2MessageTypeCounter - // HasStep checks if Step has been set in PatternFlowGtpv2MessageTypeCounter + // SetStep assigns uint32 provided by user to PatternFlowIcmpEchoCodeCounter + SetStep(value uint32) PatternFlowIcmpEchoCodeCounter + // HasStep checks if Step has been set in PatternFlowIcmpEchoCodeCounter HasStep() bool - // Count returns uint32, set in PatternFlowGtpv2MessageTypeCounter. + // Count returns uint32, set in PatternFlowIcmpEchoCodeCounter. Count() uint32 - // SetCount assigns uint32 provided by user to PatternFlowGtpv2MessageTypeCounter - SetCount(value uint32) PatternFlowGtpv2MessageTypeCounter - // HasCount checks if Count has been set in PatternFlowGtpv2MessageTypeCounter + // SetCount assigns uint32 provided by user to PatternFlowIcmpEchoCodeCounter + SetCount(value uint32) PatternFlowIcmpEchoCodeCounter + // HasCount checks if Count has been set in PatternFlowIcmpEchoCodeCounter HasCount() bool } // description is TBD // Start returns a uint32 -func (obj *patternFlowGtpv2MessageTypeCounter) Start() uint32 { +func (obj *patternFlowIcmpEchoCodeCounter) Start() uint32 { return *obj.obj.Start @@ -249670,13 +294944,13 @@ func (obj *patternFlowGtpv2MessageTypeCounter) Start() uint32 { // description is TBD // Start returns a uint32 -func (obj *patternFlowGtpv2MessageTypeCounter) HasStart() bool { +func (obj *patternFlowIcmpEchoCodeCounter) HasStart() bool { return obj.obj.Start != nil } // description is TBD -// SetStart sets the uint32 value in the PatternFlowGtpv2MessageTypeCounter object -func (obj *patternFlowGtpv2MessageTypeCounter) SetStart(value uint32) PatternFlowGtpv2MessageTypeCounter { +// SetStart sets the uint32 value in the PatternFlowIcmpEchoCodeCounter object +func (obj *patternFlowIcmpEchoCodeCounter) SetStart(value uint32) PatternFlowIcmpEchoCodeCounter { obj.obj.Start = &value return obj @@ -249684,7 +294958,7 @@ func (obj *patternFlowGtpv2MessageTypeCounter) SetStart(value uint32) PatternFlo // description is TBD // Step returns a uint32 -func (obj *patternFlowGtpv2MessageTypeCounter) Step() uint32 { +func (obj *patternFlowIcmpEchoCodeCounter) Step() uint32 { return *obj.obj.Step @@ -249692,13 +294966,13 @@ func (obj *patternFlowGtpv2MessageTypeCounter) Step() uint32 { // description is TBD // Step returns a uint32 -func (obj *patternFlowGtpv2MessageTypeCounter) HasStep() bool { +func (obj *patternFlowIcmpEchoCodeCounter) HasStep() bool { return obj.obj.Step != nil } // description is TBD -// SetStep sets the uint32 value in the PatternFlowGtpv2MessageTypeCounter object -func (obj *patternFlowGtpv2MessageTypeCounter) SetStep(value uint32) PatternFlowGtpv2MessageTypeCounter { +// SetStep sets the uint32 value in the PatternFlowIcmpEchoCodeCounter object +func (obj *patternFlowIcmpEchoCodeCounter) SetStep(value uint32) PatternFlowIcmpEchoCodeCounter { obj.obj.Step = &value return obj @@ -249706,7 +294980,7 @@ func (obj *patternFlowGtpv2MessageTypeCounter) SetStep(value uint32) PatternFlow // description is TBD // Count returns a uint32 -func (obj *patternFlowGtpv2MessageTypeCounter) Count() uint32 { +func (obj *patternFlowIcmpEchoCodeCounter) Count() uint32 { return *obj.obj.Count @@ -249714,19 +294988,19 @@ func (obj *patternFlowGtpv2MessageTypeCounter) Count() uint32 { // description is TBD // Count returns a uint32 -func (obj *patternFlowGtpv2MessageTypeCounter) HasCount() bool { +func (obj *patternFlowIcmpEchoCodeCounter) HasCount() bool { return obj.obj.Count != nil } // description is TBD -// SetCount sets the uint32 value in the PatternFlowGtpv2MessageTypeCounter object -func (obj *patternFlowGtpv2MessageTypeCounter) SetCount(value uint32) PatternFlowGtpv2MessageTypeCounter { +// SetCount sets the uint32 value in the PatternFlowIcmpEchoCodeCounter object +func (obj *patternFlowIcmpEchoCodeCounter) SetCount(value uint32) PatternFlowIcmpEchoCodeCounter { obj.obj.Count = &value return obj } -func (obj *patternFlowGtpv2MessageTypeCounter) validateObj(vObj *validation, set_default bool) { +func (obj *patternFlowIcmpEchoCodeCounter) validateObj(vObj *validation, set_default bool) { if set_default { obj.setDefault() } @@ -249736,7 +295010,7 @@ func (obj *patternFlowGtpv2MessageTypeCounter) validateObj(vObj *validation, set if *obj.obj.Start > 255 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowGtpv2MessageTypeCounter.Start <= 255 but Got %d", *obj.obj.Start)) + fmt.Sprintf("0 <= PatternFlowIcmpEchoCodeCounter.Start <= 255 but Got %d", *obj.obj.Start)) } } @@ -249746,7 +295020,7 @@ func (obj *patternFlowGtpv2MessageTypeCounter) validateObj(vObj *validation, set if *obj.obj.Step > 255 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowGtpv2MessageTypeCounter.Step <= 255 but Got %d", *obj.obj.Step)) + fmt.Sprintf("0 <= PatternFlowIcmpEchoCodeCounter.Step <= 255 but Got %d", *obj.obj.Step)) } } @@ -249756,14 +295030,14 @@ func (obj *patternFlowGtpv2MessageTypeCounter) validateObj(vObj *validation, set if *obj.obj.Count > 255 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowGtpv2MessageTypeCounter.Count <= 255 but Got %d", *obj.obj.Count)) + fmt.Sprintf("0 <= PatternFlowIcmpEchoCodeCounter.Count <= 255 but Got %d", *obj.obj.Count)) } } } -func (obj *patternFlowGtpv2MessageTypeCounter) setDefault() { +func (obj *patternFlowIcmpEchoCodeCounter) setDefault() { if obj.obj.Start == nil { obj.SetStart(0) } @@ -249776,29 +295050,29 @@ func (obj *patternFlowGtpv2MessageTypeCounter) setDefault() { } -// ***** PatternFlowGtpv2MessageTypeMetricTag ***** -type patternFlowGtpv2MessageTypeMetricTag struct { +// ***** PatternFlowIcmpEchoCodeMetricTag ***** +type patternFlowIcmpEchoCodeMetricTag struct { validation - obj *otg.PatternFlowGtpv2MessageTypeMetricTag + obj *otg.PatternFlowIcmpEchoCodeMetricTag } -func NewPatternFlowGtpv2MessageTypeMetricTag() PatternFlowGtpv2MessageTypeMetricTag { - obj := patternFlowGtpv2MessageTypeMetricTag{obj: &otg.PatternFlowGtpv2MessageTypeMetricTag{}} +func NewPatternFlowIcmpEchoCodeMetricTag() PatternFlowIcmpEchoCodeMetricTag { + obj := patternFlowIcmpEchoCodeMetricTag{obj: &otg.PatternFlowIcmpEchoCodeMetricTag{}} obj.setDefault() return &obj } -func (obj *patternFlowGtpv2MessageTypeMetricTag) Msg() *otg.PatternFlowGtpv2MessageTypeMetricTag { +func (obj *patternFlowIcmpEchoCodeMetricTag) Msg() *otg.PatternFlowIcmpEchoCodeMetricTag { return obj.obj } -func (obj *patternFlowGtpv2MessageTypeMetricTag) SetMsg(msg *otg.PatternFlowGtpv2MessageTypeMetricTag) PatternFlowGtpv2MessageTypeMetricTag { +func (obj *patternFlowIcmpEchoCodeMetricTag) SetMsg(msg *otg.PatternFlowIcmpEchoCodeMetricTag) PatternFlowIcmpEchoCodeMetricTag { proto.Merge(obj.obj, msg) return obj } -func (obj *patternFlowGtpv2MessageTypeMetricTag) ToProto() (*otg.PatternFlowGtpv2MessageTypeMetricTag, error) { +func (obj *patternFlowIcmpEchoCodeMetricTag) ToProto() (*otg.PatternFlowIcmpEchoCodeMetricTag, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -249806,7 +295080,7 @@ func (obj *patternFlowGtpv2MessageTypeMetricTag) ToProto() (*otg.PatternFlowGtpv return obj.Msg(), nil } -func (obj *patternFlowGtpv2MessageTypeMetricTag) FromProto(msg *otg.PatternFlowGtpv2MessageTypeMetricTag) (PatternFlowGtpv2MessageTypeMetricTag, error) { +func (obj *patternFlowIcmpEchoCodeMetricTag) FromProto(msg *otg.PatternFlowIcmpEchoCodeMetricTag) (PatternFlowIcmpEchoCodeMetricTag, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -249815,7 +295089,7 @@ func (obj *patternFlowGtpv2MessageTypeMetricTag) FromProto(msg *otg.PatternFlowG return newObj, nil } -func (obj *patternFlowGtpv2MessageTypeMetricTag) ToPbText() (string, error) { +func (obj *patternFlowIcmpEchoCodeMetricTag) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -249827,7 +295101,7 @@ func (obj *patternFlowGtpv2MessageTypeMetricTag) ToPbText() (string, error) { return string(protoMarshal), nil } -func (obj *patternFlowGtpv2MessageTypeMetricTag) FromPbText(value string) error { +func (obj *patternFlowIcmpEchoCodeMetricTag) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj @@ -249840,7 +295114,7 @@ func (obj *patternFlowGtpv2MessageTypeMetricTag) FromPbText(value string) error return retObj } -func (obj *patternFlowGtpv2MessageTypeMetricTag) ToYaml() (string, error) { +func (obj *patternFlowIcmpEchoCodeMetricTag) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -249861,7 +295135,7 @@ func (obj *patternFlowGtpv2MessageTypeMetricTag) ToYaml() (string, error) { return string(data), nil } -func (obj *patternFlowGtpv2MessageTypeMetricTag) FromYaml(value string) error { +func (obj *patternFlowIcmpEchoCodeMetricTag) FromYaml(value string) error { if value == "" { value = "{}" } @@ -249886,7 +295160,7 @@ func (obj *patternFlowGtpv2MessageTypeMetricTag) FromYaml(value string) error { return nil } -func (obj *patternFlowGtpv2MessageTypeMetricTag) ToJson() (string, error) { +func (obj *patternFlowIcmpEchoCodeMetricTag) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -249904,7 +295178,7 @@ func (obj *patternFlowGtpv2MessageTypeMetricTag) ToJson() (string, error) { return string(data), nil } -func (obj *patternFlowGtpv2MessageTypeMetricTag) FromJson(value string) error { +func (obj *patternFlowIcmpEchoCodeMetricTag) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -249925,19 +295199,19 @@ func (obj *patternFlowGtpv2MessageTypeMetricTag) FromJson(value string) error { return nil } -func (obj *patternFlowGtpv2MessageTypeMetricTag) validateToAndFrom() error { +func (obj *patternFlowIcmpEchoCodeMetricTag) validateToAndFrom() error { // emptyVars() obj.validateObj(&obj.validation, true) return obj.validationResult() } -func (obj *patternFlowGtpv2MessageTypeMetricTag) Validate() error { +func (obj *patternFlowIcmpEchoCodeMetricTag) Validate() error { // emptyVars() obj.validateObj(&obj.validation, false) return obj.validationResult() } -func (obj *patternFlowGtpv2MessageTypeMetricTag) String() string { +func (obj *patternFlowIcmpEchoCodeMetricTag) String() string { str, err := obj.ToYaml() if err != nil { return err.Error() @@ -249945,12 +295219,12 @@ func (obj *patternFlowGtpv2MessageTypeMetricTag) String() string { return str } -func (obj *patternFlowGtpv2MessageTypeMetricTag) Clone() (PatternFlowGtpv2MessageTypeMetricTag, error) { +func (obj *patternFlowIcmpEchoCodeMetricTag) Clone() (PatternFlowIcmpEchoCodeMetricTag, error) { vErr := obj.Validate() if vErr != nil { return nil, vErr } - newObj := NewPatternFlowGtpv2MessageTypeMetricTag() + newObj := NewPatternFlowIcmpEchoCodeMetricTag() data, err := proto.Marshal(obj.Msg()) if err != nil { return nil, err @@ -249962,69 +295236,69 @@ func (obj *patternFlowGtpv2MessageTypeMetricTag) Clone() (PatternFlowGtpv2Messag return newObj, nil } -// PatternFlowGtpv2MessageTypeMetricTag is metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. -type PatternFlowGtpv2MessageTypeMetricTag interface { +// PatternFlowIcmpEchoCodeMetricTag is metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. +type PatternFlowIcmpEchoCodeMetricTag interface { Validation - // Msg marshals PatternFlowGtpv2MessageTypeMetricTag to protobuf object *otg.PatternFlowGtpv2MessageTypeMetricTag + // Msg marshals PatternFlowIcmpEchoCodeMetricTag to protobuf object *otg.PatternFlowIcmpEchoCodeMetricTag // and doesn't set defaults - Msg() *otg.PatternFlowGtpv2MessageTypeMetricTag - // SetMsg unmarshals PatternFlowGtpv2MessageTypeMetricTag from protobuf object *otg.PatternFlowGtpv2MessageTypeMetricTag + Msg() *otg.PatternFlowIcmpEchoCodeMetricTag + // SetMsg unmarshals PatternFlowIcmpEchoCodeMetricTag from protobuf object *otg.PatternFlowIcmpEchoCodeMetricTag // and doesn't set defaults - SetMsg(*otg.PatternFlowGtpv2MessageTypeMetricTag) PatternFlowGtpv2MessageTypeMetricTag - // ToProto marshals PatternFlowGtpv2MessageTypeMetricTag to protobuf object *otg.PatternFlowGtpv2MessageTypeMetricTag - ToProto() (*otg.PatternFlowGtpv2MessageTypeMetricTag, error) - // ToPbText marshals PatternFlowGtpv2MessageTypeMetricTag to protobuf text + SetMsg(*otg.PatternFlowIcmpEchoCodeMetricTag) PatternFlowIcmpEchoCodeMetricTag + // ToProto marshals PatternFlowIcmpEchoCodeMetricTag to protobuf object *otg.PatternFlowIcmpEchoCodeMetricTag + ToProto() (*otg.PatternFlowIcmpEchoCodeMetricTag, error) + // ToPbText marshals PatternFlowIcmpEchoCodeMetricTag to protobuf text ToPbText() (string, error) - // ToYaml marshals PatternFlowGtpv2MessageTypeMetricTag to YAML text + // ToYaml marshals PatternFlowIcmpEchoCodeMetricTag to YAML text ToYaml() (string, error) - // ToJson marshals PatternFlowGtpv2MessageTypeMetricTag to JSON text + // ToJson marshals PatternFlowIcmpEchoCodeMetricTag to JSON text ToJson() (string, error) - // FromProto unmarshals PatternFlowGtpv2MessageTypeMetricTag from protobuf object *otg.PatternFlowGtpv2MessageTypeMetricTag - FromProto(msg *otg.PatternFlowGtpv2MessageTypeMetricTag) (PatternFlowGtpv2MessageTypeMetricTag, error) - // FromPbText unmarshals PatternFlowGtpv2MessageTypeMetricTag from protobuf text + // FromProto unmarshals PatternFlowIcmpEchoCodeMetricTag from protobuf object *otg.PatternFlowIcmpEchoCodeMetricTag + FromProto(msg *otg.PatternFlowIcmpEchoCodeMetricTag) (PatternFlowIcmpEchoCodeMetricTag, error) + // FromPbText unmarshals PatternFlowIcmpEchoCodeMetricTag from protobuf text FromPbText(value string) error - // FromYaml unmarshals PatternFlowGtpv2MessageTypeMetricTag from YAML text + // FromYaml unmarshals PatternFlowIcmpEchoCodeMetricTag from YAML text FromYaml(value string) error - // FromJson unmarshals PatternFlowGtpv2MessageTypeMetricTag from JSON text + // FromJson unmarshals PatternFlowIcmpEchoCodeMetricTag from JSON text FromJson(value string) error - // Validate validates PatternFlowGtpv2MessageTypeMetricTag + // Validate validates PatternFlowIcmpEchoCodeMetricTag Validate() error // A stringer function String() string // Clones the object - Clone() (PatternFlowGtpv2MessageTypeMetricTag, error) + Clone() (PatternFlowIcmpEchoCodeMetricTag, error) validateToAndFrom() error validateObj(vObj *validation, set_default bool) setDefault() - // Name returns string, set in PatternFlowGtpv2MessageTypeMetricTag. + // Name returns string, set in PatternFlowIcmpEchoCodeMetricTag. Name() string - // SetName assigns string provided by user to PatternFlowGtpv2MessageTypeMetricTag - SetName(value string) PatternFlowGtpv2MessageTypeMetricTag - // Offset returns uint32, set in PatternFlowGtpv2MessageTypeMetricTag. + // SetName assigns string provided by user to PatternFlowIcmpEchoCodeMetricTag + SetName(value string) PatternFlowIcmpEchoCodeMetricTag + // Offset returns uint32, set in PatternFlowIcmpEchoCodeMetricTag. Offset() uint32 - // SetOffset assigns uint32 provided by user to PatternFlowGtpv2MessageTypeMetricTag - SetOffset(value uint32) PatternFlowGtpv2MessageTypeMetricTag - // HasOffset checks if Offset has been set in PatternFlowGtpv2MessageTypeMetricTag + // SetOffset assigns uint32 provided by user to PatternFlowIcmpEchoCodeMetricTag + SetOffset(value uint32) PatternFlowIcmpEchoCodeMetricTag + // HasOffset checks if Offset has been set in PatternFlowIcmpEchoCodeMetricTag HasOffset() bool - // Length returns uint32, set in PatternFlowGtpv2MessageTypeMetricTag. + // Length returns uint32, set in PatternFlowIcmpEchoCodeMetricTag. Length() uint32 - // SetLength assigns uint32 provided by user to PatternFlowGtpv2MessageTypeMetricTag - SetLength(value uint32) PatternFlowGtpv2MessageTypeMetricTag - // HasLength checks if Length has been set in PatternFlowGtpv2MessageTypeMetricTag + // SetLength assigns uint32 provided by user to PatternFlowIcmpEchoCodeMetricTag + SetLength(value uint32) PatternFlowIcmpEchoCodeMetricTag + // HasLength checks if Length has been set in PatternFlowIcmpEchoCodeMetricTag HasLength() bool } // Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field // Name returns a string -func (obj *patternFlowGtpv2MessageTypeMetricTag) Name() string { +func (obj *patternFlowIcmpEchoCodeMetricTag) Name() string { return *obj.obj.Name } // Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field -// SetName sets the string value in the PatternFlowGtpv2MessageTypeMetricTag object -func (obj *patternFlowGtpv2MessageTypeMetricTag) SetName(value string) PatternFlowGtpv2MessageTypeMetricTag { +// SetName sets the string value in the PatternFlowIcmpEchoCodeMetricTag object +func (obj *patternFlowIcmpEchoCodeMetricTag) SetName(value string) PatternFlowIcmpEchoCodeMetricTag { obj.obj.Name = &value return obj @@ -250032,7 +295306,7 @@ func (obj *patternFlowGtpv2MessageTypeMetricTag) SetName(value string) PatternFl // Offset in bits relative to start of corresponding header field // Offset returns a uint32 -func (obj *patternFlowGtpv2MessageTypeMetricTag) Offset() uint32 { +func (obj *patternFlowIcmpEchoCodeMetricTag) Offset() uint32 { return *obj.obj.Offset @@ -250040,13 +295314,13 @@ func (obj *patternFlowGtpv2MessageTypeMetricTag) Offset() uint32 { // Offset in bits relative to start of corresponding header field // Offset returns a uint32 -func (obj *patternFlowGtpv2MessageTypeMetricTag) HasOffset() bool { +func (obj *patternFlowIcmpEchoCodeMetricTag) HasOffset() bool { return obj.obj.Offset != nil } // Offset in bits relative to start of corresponding header field -// SetOffset sets the uint32 value in the PatternFlowGtpv2MessageTypeMetricTag object -func (obj *patternFlowGtpv2MessageTypeMetricTag) SetOffset(value uint32) PatternFlowGtpv2MessageTypeMetricTag { +// SetOffset sets the uint32 value in the PatternFlowIcmpEchoCodeMetricTag object +func (obj *patternFlowIcmpEchoCodeMetricTag) SetOffset(value uint32) PatternFlowIcmpEchoCodeMetricTag { obj.obj.Offset = &value return obj @@ -250054,7 +295328,7 @@ func (obj *patternFlowGtpv2MessageTypeMetricTag) SetOffset(value uint32) Pattern // Number of bits to track for metrics starting from configured offset of corresponding header field // Length returns a uint32 -func (obj *patternFlowGtpv2MessageTypeMetricTag) Length() uint32 { +func (obj *patternFlowIcmpEchoCodeMetricTag) Length() uint32 { return *obj.obj.Length @@ -250062,26 +295336,26 @@ func (obj *patternFlowGtpv2MessageTypeMetricTag) Length() uint32 { // Number of bits to track for metrics starting from configured offset of corresponding header field // Length returns a uint32 -func (obj *patternFlowGtpv2MessageTypeMetricTag) HasLength() bool { +func (obj *patternFlowIcmpEchoCodeMetricTag) HasLength() bool { return obj.obj.Length != nil } // Number of bits to track for metrics starting from configured offset of corresponding header field -// SetLength sets the uint32 value in the PatternFlowGtpv2MessageTypeMetricTag object -func (obj *patternFlowGtpv2MessageTypeMetricTag) SetLength(value uint32) PatternFlowGtpv2MessageTypeMetricTag { +// SetLength sets the uint32 value in the PatternFlowIcmpEchoCodeMetricTag object +func (obj *patternFlowIcmpEchoCodeMetricTag) SetLength(value uint32) PatternFlowIcmpEchoCodeMetricTag { obj.obj.Length = &value return obj } -func (obj *patternFlowGtpv2MessageTypeMetricTag) validateObj(vObj *validation, set_default bool) { +func (obj *patternFlowIcmpEchoCodeMetricTag) validateObj(vObj *validation, set_default bool) { if set_default { obj.setDefault() } // Name is required if obj.obj.Name == nil { - vObj.validationErrors = append(vObj.validationErrors, "Name is required field on interface PatternFlowGtpv2MessageTypeMetricTag") + vObj.validationErrors = append(vObj.validationErrors, "Name is required field on interface PatternFlowIcmpEchoCodeMetricTag") } if obj.obj.Offset != nil { @@ -250089,7 +295363,7 @@ func (obj *patternFlowGtpv2MessageTypeMetricTag) validateObj(vObj *validation, s if *obj.obj.Offset > 7 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowGtpv2MessageTypeMetricTag.Offset <= 7 but Got %d", *obj.obj.Offset)) + fmt.Sprintf("0 <= PatternFlowIcmpEchoCodeMetricTag.Offset <= 7 but Got %d", *obj.obj.Offset)) } } @@ -250099,14 +295373,14 @@ func (obj *patternFlowGtpv2MessageTypeMetricTag) validateObj(vObj *validation, s if *obj.obj.Length < 1 || *obj.obj.Length > 8 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("1 <= PatternFlowGtpv2MessageTypeMetricTag.Length <= 8 but Got %d", *obj.obj.Length)) + fmt.Sprintf("1 <= PatternFlowIcmpEchoCodeMetricTag.Length <= 8 but Got %d", *obj.obj.Length)) } } } -func (obj *patternFlowGtpv2MessageTypeMetricTag) setDefault() { +func (obj *patternFlowIcmpEchoCodeMetricTag) setDefault() { if obj.obj.Offset == nil { obj.SetOffset(0) } @@ -250116,29 +295390,29 @@ func (obj *patternFlowGtpv2MessageTypeMetricTag) setDefault() { } -// ***** PatternFlowGtpv2MessageLengthCounter ***** -type patternFlowGtpv2MessageLengthCounter struct { +// ***** PatternFlowIcmpEchoIdentifierCounter ***** +type patternFlowIcmpEchoIdentifierCounter struct { validation - obj *otg.PatternFlowGtpv2MessageLengthCounter + obj *otg.PatternFlowIcmpEchoIdentifierCounter } -func NewPatternFlowGtpv2MessageLengthCounter() PatternFlowGtpv2MessageLengthCounter { - obj := patternFlowGtpv2MessageLengthCounter{obj: &otg.PatternFlowGtpv2MessageLengthCounter{}} +func NewPatternFlowIcmpEchoIdentifierCounter() PatternFlowIcmpEchoIdentifierCounter { + obj := patternFlowIcmpEchoIdentifierCounter{obj: &otg.PatternFlowIcmpEchoIdentifierCounter{}} obj.setDefault() return &obj } -func (obj *patternFlowGtpv2MessageLengthCounter) Msg() *otg.PatternFlowGtpv2MessageLengthCounter { +func (obj *patternFlowIcmpEchoIdentifierCounter) Msg() *otg.PatternFlowIcmpEchoIdentifierCounter { return obj.obj } -func (obj *patternFlowGtpv2MessageLengthCounter) SetMsg(msg *otg.PatternFlowGtpv2MessageLengthCounter) PatternFlowGtpv2MessageLengthCounter { +func (obj *patternFlowIcmpEchoIdentifierCounter) SetMsg(msg *otg.PatternFlowIcmpEchoIdentifierCounter) PatternFlowIcmpEchoIdentifierCounter { proto.Merge(obj.obj, msg) return obj } -func (obj *patternFlowGtpv2MessageLengthCounter) ToProto() (*otg.PatternFlowGtpv2MessageLengthCounter, error) { +func (obj *patternFlowIcmpEchoIdentifierCounter) ToProto() (*otg.PatternFlowIcmpEchoIdentifierCounter, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -250146,7 +295420,7 @@ func (obj *patternFlowGtpv2MessageLengthCounter) ToProto() (*otg.PatternFlowGtpv return obj.Msg(), nil } -func (obj *patternFlowGtpv2MessageLengthCounter) FromProto(msg *otg.PatternFlowGtpv2MessageLengthCounter) (PatternFlowGtpv2MessageLengthCounter, error) { +func (obj *patternFlowIcmpEchoIdentifierCounter) FromProto(msg *otg.PatternFlowIcmpEchoIdentifierCounter) (PatternFlowIcmpEchoIdentifierCounter, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -250155,7 +295429,7 @@ func (obj *patternFlowGtpv2MessageLengthCounter) FromProto(msg *otg.PatternFlowG return newObj, nil } -func (obj *patternFlowGtpv2MessageLengthCounter) ToPbText() (string, error) { +func (obj *patternFlowIcmpEchoIdentifierCounter) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -250167,7 +295441,7 @@ func (obj *patternFlowGtpv2MessageLengthCounter) ToPbText() (string, error) { return string(protoMarshal), nil } -func (obj *patternFlowGtpv2MessageLengthCounter) FromPbText(value string) error { +func (obj *patternFlowIcmpEchoIdentifierCounter) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj @@ -250180,7 +295454,7 @@ func (obj *patternFlowGtpv2MessageLengthCounter) FromPbText(value string) error return retObj } -func (obj *patternFlowGtpv2MessageLengthCounter) ToYaml() (string, error) { +func (obj *patternFlowIcmpEchoIdentifierCounter) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -250201,7 +295475,7 @@ func (obj *patternFlowGtpv2MessageLengthCounter) ToYaml() (string, error) { return string(data), nil } -func (obj *patternFlowGtpv2MessageLengthCounter) FromYaml(value string) error { +func (obj *patternFlowIcmpEchoIdentifierCounter) FromYaml(value string) error { if value == "" { value = "{}" } @@ -250226,7 +295500,7 @@ func (obj *patternFlowGtpv2MessageLengthCounter) FromYaml(value string) error { return nil } -func (obj *patternFlowGtpv2MessageLengthCounter) ToJson() (string, error) { +func (obj *patternFlowIcmpEchoIdentifierCounter) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -250244,7 +295518,7 @@ func (obj *patternFlowGtpv2MessageLengthCounter) ToJson() (string, error) { return string(data), nil } -func (obj *patternFlowGtpv2MessageLengthCounter) FromJson(value string) error { +func (obj *patternFlowIcmpEchoIdentifierCounter) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -250265,19 +295539,19 @@ func (obj *patternFlowGtpv2MessageLengthCounter) FromJson(value string) error { return nil } -func (obj *patternFlowGtpv2MessageLengthCounter) validateToAndFrom() error { +func (obj *patternFlowIcmpEchoIdentifierCounter) validateToAndFrom() error { // emptyVars() obj.validateObj(&obj.validation, true) return obj.validationResult() } -func (obj *patternFlowGtpv2MessageLengthCounter) Validate() error { +func (obj *patternFlowIcmpEchoIdentifierCounter) Validate() error { // emptyVars() obj.validateObj(&obj.validation, false) return obj.validationResult() } -func (obj *patternFlowGtpv2MessageLengthCounter) String() string { +func (obj *patternFlowIcmpEchoIdentifierCounter) String() string { str, err := obj.ToYaml() if err != nil { return err.Error() @@ -250285,12 +295559,12 @@ func (obj *patternFlowGtpv2MessageLengthCounter) String() string { return str } -func (obj *patternFlowGtpv2MessageLengthCounter) Clone() (PatternFlowGtpv2MessageLengthCounter, error) { +func (obj *patternFlowIcmpEchoIdentifierCounter) Clone() (PatternFlowIcmpEchoIdentifierCounter, error) { vErr := obj.Validate() if vErr != nil { return nil, vErr } - newObj := NewPatternFlowGtpv2MessageLengthCounter() + newObj := NewPatternFlowIcmpEchoIdentifierCounter() data, err := proto.Marshal(obj.Msg()) if err != nil { return nil, err @@ -250302,63 +295576,63 @@ func (obj *patternFlowGtpv2MessageLengthCounter) Clone() (PatternFlowGtpv2Messag return newObj, nil } -// PatternFlowGtpv2MessageLengthCounter is integer counter pattern -type PatternFlowGtpv2MessageLengthCounter interface { +// PatternFlowIcmpEchoIdentifierCounter is integer counter pattern +type PatternFlowIcmpEchoIdentifierCounter interface { Validation - // Msg marshals PatternFlowGtpv2MessageLengthCounter to protobuf object *otg.PatternFlowGtpv2MessageLengthCounter + // Msg marshals PatternFlowIcmpEchoIdentifierCounter to protobuf object *otg.PatternFlowIcmpEchoIdentifierCounter // and doesn't set defaults - Msg() *otg.PatternFlowGtpv2MessageLengthCounter - // SetMsg unmarshals PatternFlowGtpv2MessageLengthCounter from protobuf object *otg.PatternFlowGtpv2MessageLengthCounter + Msg() *otg.PatternFlowIcmpEchoIdentifierCounter + // SetMsg unmarshals PatternFlowIcmpEchoIdentifierCounter from protobuf object *otg.PatternFlowIcmpEchoIdentifierCounter // and doesn't set defaults - SetMsg(*otg.PatternFlowGtpv2MessageLengthCounter) PatternFlowGtpv2MessageLengthCounter - // ToProto marshals PatternFlowGtpv2MessageLengthCounter to protobuf object *otg.PatternFlowGtpv2MessageLengthCounter - ToProto() (*otg.PatternFlowGtpv2MessageLengthCounter, error) - // ToPbText marshals PatternFlowGtpv2MessageLengthCounter to protobuf text + SetMsg(*otg.PatternFlowIcmpEchoIdentifierCounter) PatternFlowIcmpEchoIdentifierCounter + // ToProto marshals PatternFlowIcmpEchoIdentifierCounter to protobuf object *otg.PatternFlowIcmpEchoIdentifierCounter + ToProto() (*otg.PatternFlowIcmpEchoIdentifierCounter, error) + // ToPbText marshals PatternFlowIcmpEchoIdentifierCounter to protobuf text ToPbText() (string, error) - // ToYaml marshals PatternFlowGtpv2MessageLengthCounter to YAML text + // ToYaml marshals PatternFlowIcmpEchoIdentifierCounter to YAML text ToYaml() (string, error) - // ToJson marshals PatternFlowGtpv2MessageLengthCounter to JSON text + // ToJson marshals PatternFlowIcmpEchoIdentifierCounter to JSON text ToJson() (string, error) - // FromProto unmarshals PatternFlowGtpv2MessageLengthCounter from protobuf object *otg.PatternFlowGtpv2MessageLengthCounter - FromProto(msg *otg.PatternFlowGtpv2MessageLengthCounter) (PatternFlowGtpv2MessageLengthCounter, error) - // FromPbText unmarshals PatternFlowGtpv2MessageLengthCounter from protobuf text + // FromProto unmarshals PatternFlowIcmpEchoIdentifierCounter from protobuf object *otg.PatternFlowIcmpEchoIdentifierCounter + FromProto(msg *otg.PatternFlowIcmpEchoIdentifierCounter) (PatternFlowIcmpEchoIdentifierCounter, error) + // FromPbText unmarshals PatternFlowIcmpEchoIdentifierCounter from protobuf text FromPbText(value string) error - // FromYaml unmarshals PatternFlowGtpv2MessageLengthCounter from YAML text + // FromYaml unmarshals PatternFlowIcmpEchoIdentifierCounter from YAML text FromYaml(value string) error - // FromJson unmarshals PatternFlowGtpv2MessageLengthCounter from JSON text + // FromJson unmarshals PatternFlowIcmpEchoIdentifierCounter from JSON text FromJson(value string) error - // Validate validates PatternFlowGtpv2MessageLengthCounter + // Validate validates PatternFlowIcmpEchoIdentifierCounter Validate() error // A stringer function String() string // Clones the object - Clone() (PatternFlowGtpv2MessageLengthCounter, error) + Clone() (PatternFlowIcmpEchoIdentifierCounter, error) validateToAndFrom() error validateObj(vObj *validation, set_default bool) setDefault() - // Start returns uint32, set in PatternFlowGtpv2MessageLengthCounter. + // Start returns uint32, set in PatternFlowIcmpEchoIdentifierCounter. Start() uint32 - // SetStart assigns uint32 provided by user to PatternFlowGtpv2MessageLengthCounter - SetStart(value uint32) PatternFlowGtpv2MessageLengthCounter - // HasStart checks if Start has been set in PatternFlowGtpv2MessageLengthCounter + // SetStart assigns uint32 provided by user to PatternFlowIcmpEchoIdentifierCounter + SetStart(value uint32) PatternFlowIcmpEchoIdentifierCounter + // HasStart checks if Start has been set in PatternFlowIcmpEchoIdentifierCounter HasStart() bool - // Step returns uint32, set in PatternFlowGtpv2MessageLengthCounter. + // Step returns uint32, set in PatternFlowIcmpEchoIdentifierCounter. Step() uint32 - // SetStep assigns uint32 provided by user to PatternFlowGtpv2MessageLengthCounter - SetStep(value uint32) PatternFlowGtpv2MessageLengthCounter - // HasStep checks if Step has been set in PatternFlowGtpv2MessageLengthCounter + // SetStep assigns uint32 provided by user to PatternFlowIcmpEchoIdentifierCounter + SetStep(value uint32) PatternFlowIcmpEchoIdentifierCounter + // HasStep checks if Step has been set in PatternFlowIcmpEchoIdentifierCounter HasStep() bool - // Count returns uint32, set in PatternFlowGtpv2MessageLengthCounter. + // Count returns uint32, set in PatternFlowIcmpEchoIdentifierCounter. Count() uint32 - // SetCount assigns uint32 provided by user to PatternFlowGtpv2MessageLengthCounter - SetCount(value uint32) PatternFlowGtpv2MessageLengthCounter - // HasCount checks if Count has been set in PatternFlowGtpv2MessageLengthCounter + // SetCount assigns uint32 provided by user to PatternFlowIcmpEchoIdentifierCounter + SetCount(value uint32) PatternFlowIcmpEchoIdentifierCounter + // HasCount checks if Count has been set in PatternFlowIcmpEchoIdentifierCounter HasCount() bool } // description is TBD // Start returns a uint32 -func (obj *patternFlowGtpv2MessageLengthCounter) Start() uint32 { +func (obj *patternFlowIcmpEchoIdentifierCounter) Start() uint32 { return *obj.obj.Start @@ -250366,13 +295640,13 @@ func (obj *patternFlowGtpv2MessageLengthCounter) Start() uint32 { // description is TBD // Start returns a uint32 -func (obj *patternFlowGtpv2MessageLengthCounter) HasStart() bool { +func (obj *patternFlowIcmpEchoIdentifierCounter) HasStart() bool { return obj.obj.Start != nil } // description is TBD -// SetStart sets the uint32 value in the PatternFlowGtpv2MessageLengthCounter object -func (obj *patternFlowGtpv2MessageLengthCounter) SetStart(value uint32) PatternFlowGtpv2MessageLengthCounter { +// SetStart sets the uint32 value in the PatternFlowIcmpEchoIdentifierCounter object +func (obj *patternFlowIcmpEchoIdentifierCounter) SetStart(value uint32) PatternFlowIcmpEchoIdentifierCounter { obj.obj.Start = &value return obj @@ -250380,7 +295654,7 @@ func (obj *patternFlowGtpv2MessageLengthCounter) SetStart(value uint32) PatternF // description is TBD // Step returns a uint32 -func (obj *patternFlowGtpv2MessageLengthCounter) Step() uint32 { +func (obj *patternFlowIcmpEchoIdentifierCounter) Step() uint32 { return *obj.obj.Step @@ -250388,13 +295662,13 @@ func (obj *patternFlowGtpv2MessageLengthCounter) Step() uint32 { // description is TBD // Step returns a uint32 -func (obj *patternFlowGtpv2MessageLengthCounter) HasStep() bool { +func (obj *patternFlowIcmpEchoIdentifierCounter) HasStep() bool { return obj.obj.Step != nil } // description is TBD -// SetStep sets the uint32 value in the PatternFlowGtpv2MessageLengthCounter object -func (obj *patternFlowGtpv2MessageLengthCounter) SetStep(value uint32) PatternFlowGtpv2MessageLengthCounter { +// SetStep sets the uint32 value in the PatternFlowIcmpEchoIdentifierCounter object +func (obj *patternFlowIcmpEchoIdentifierCounter) SetStep(value uint32) PatternFlowIcmpEchoIdentifierCounter { obj.obj.Step = &value return obj @@ -250402,7 +295676,7 @@ func (obj *patternFlowGtpv2MessageLengthCounter) SetStep(value uint32) PatternFl // description is TBD // Count returns a uint32 -func (obj *patternFlowGtpv2MessageLengthCounter) Count() uint32 { +func (obj *patternFlowIcmpEchoIdentifierCounter) Count() uint32 { return *obj.obj.Count @@ -250410,19 +295684,19 @@ func (obj *patternFlowGtpv2MessageLengthCounter) Count() uint32 { // description is TBD // Count returns a uint32 -func (obj *patternFlowGtpv2MessageLengthCounter) HasCount() bool { +func (obj *patternFlowIcmpEchoIdentifierCounter) HasCount() bool { return obj.obj.Count != nil } // description is TBD -// SetCount sets the uint32 value in the PatternFlowGtpv2MessageLengthCounter object -func (obj *patternFlowGtpv2MessageLengthCounter) SetCount(value uint32) PatternFlowGtpv2MessageLengthCounter { +// SetCount sets the uint32 value in the PatternFlowIcmpEchoIdentifierCounter object +func (obj *patternFlowIcmpEchoIdentifierCounter) SetCount(value uint32) PatternFlowIcmpEchoIdentifierCounter { obj.obj.Count = &value return obj } -func (obj *patternFlowGtpv2MessageLengthCounter) validateObj(vObj *validation, set_default bool) { +func (obj *patternFlowIcmpEchoIdentifierCounter) validateObj(vObj *validation, set_default bool) { if set_default { obj.setDefault() } @@ -250432,7 +295706,7 @@ func (obj *patternFlowGtpv2MessageLengthCounter) validateObj(vObj *validation, s if *obj.obj.Start > 65535 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowGtpv2MessageLengthCounter.Start <= 65535 but Got %d", *obj.obj.Start)) + fmt.Sprintf("0 <= PatternFlowIcmpEchoIdentifierCounter.Start <= 65535 but Got %d", *obj.obj.Start)) } } @@ -250442,7 +295716,7 @@ func (obj *patternFlowGtpv2MessageLengthCounter) validateObj(vObj *validation, s if *obj.obj.Step > 65535 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowGtpv2MessageLengthCounter.Step <= 65535 but Got %d", *obj.obj.Step)) + fmt.Sprintf("0 <= PatternFlowIcmpEchoIdentifierCounter.Step <= 65535 but Got %d", *obj.obj.Step)) } } @@ -250452,14 +295726,14 @@ func (obj *patternFlowGtpv2MessageLengthCounter) validateObj(vObj *validation, s if *obj.obj.Count > 65535 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowGtpv2MessageLengthCounter.Count <= 65535 but Got %d", *obj.obj.Count)) + fmt.Sprintf("0 <= PatternFlowIcmpEchoIdentifierCounter.Count <= 65535 but Got %d", *obj.obj.Count)) } } } -func (obj *patternFlowGtpv2MessageLengthCounter) setDefault() { +func (obj *patternFlowIcmpEchoIdentifierCounter) setDefault() { if obj.obj.Start == nil { obj.SetStart(0) } @@ -250472,29 +295746,29 @@ func (obj *patternFlowGtpv2MessageLengthCounter) setDefault() { } -// ***** PatternFlowGtpv2MessageLengthMetricTag ***** -type patternFlowGtpv2MessageLengthMetricTag struct { +// ***** PatternFlowIcmpEchoIdentifierMetricTag ***** +type patternFlowIcmpEchoIdentifierMetricTag struct { validation - obj *otg.PatternFlowGtpv2MessageLengthMetricTag + obj *otg.PatternFlowIcmpEchoIdentifierMetricTag } -func NewPatternFlowGtpv2MessageLengthMetricTag() PatternFlowGtpv2MessageLengthMetricTag { - obj := patternFlowGtpv2MessageLengthMetricTag{obj: &otg.PatternFlowGtpv2MessageLengthMetricTag{}} +func NewPatternFlowIcmpEchoIdentifierMetricTag() PatternFlowIcmpEchoIdentifierMetricTag { + obj := patternFlowIcmpEchoIdentifierMetricTag{obj: &otg.PatternFlowIcmpEchoIdentifierMetricTag{}} obj.setDefault() return &obj } -func (obj *patternFlowGtpv2MessageLengthMetricTag) Msg() *otg.PatternFlowGtpv2MessageLengthMetricTag { +func (obj *patternFlowIcmpEchoIdentifierMetricTag) Msg() *otg.PatternFlowIcmpEchoIdentifierMetricTag { return obj.obj } -func (obj *patternFlowGtpv2MessageLengthMetricTag) SetMsg(msg *otg.PatternFlowGtpv2MessageLengthMetricTag) PatternFlowGtpv2MessageLengthMetricTag { +func (obj *patternFlowIcmpEchoIdentifierMetricTag) SetMsg(msg *otg.PatternFlowIcmpEchoIdentifierMetricTag) PatternFlowIcmpEchoIdentifierMetricTag { proto.Merge(obj.obj, msg) return obj } -func (obj *patternFlowGtpv2MessageLengthMetricTag) ToProto() (*otg.PatternFlowGtpv2MessageLengthMetricTag, error) { +func (obj *patternFlowIcmpEchoIdentifierMetricTag) ToProto() (*otg.PatternFlowIcmpEchoIdentifierMetricTag, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -250502,7 +295776,7 @@ func (obj *patternFlowGtpv2MessageLengthMetricTag) ToProto() (*otg.PatternFlowGt return obj.Msg(), nil } -func (obj *patternFlowGtpv2MessageLengthMetricTag) FromProto(msg *otg.PatternFlowGtpv2MessageLengthMetricTag) (PatternFlowGtpv2MessageLengthMetricTag, error) { +func (obj *patternFlowIcmpEchoIdentifierMetricTag) FromProto(msg *otg.PatternFlowIcmpEchoIdentifierMetricTag) (PatternFlowIcmpEchoIdentifierMetricTag, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -250511,7 +295785,7 @@ func (obj *patternFlowGtpv2MessageLengthMetricTag) FromProto(msg *otg.PatternFlo return newObj, nil } -func (obj *patternFlowGtpv2MessageLengthMetricTag) ToPbText() (string, error) { +func (obj *patternFlowIcmpEchoIdentifierMetricTag) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -250523,7 +295797,7 @@ func (obj *patternFlowGtpv2MessageLengthMetricTag) ToPbText() (string, error) { return string(protoMarshal), nil } -func (obj *patternFlowGtpv2MessageLengthMetricTag) FromPbText(value string) error { +func (obj *patternFlowIcmpEchoIdentifierMetricTag) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj @@ -250536,7 +295810,7 @@ func (obj *patternFlowGtpv2MessageLengthMetricTag) FromPbText(value string) erro return retObj } -func (obj *patternFlowGtpv2MessageLengthMetricTag) ToYaml() (string, error) { +func (obj *patternFlowIcmpEchoIdentifierMetricTag) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -250557,7 +295831,7 @@ func (obj *patternFlowGtpv2MessageLengthMetricTag) ToYaml() (string, error) { return string(data), nil } -func (obj *patternFlowGtpv2MessageLengthMetricTag) FromYaml(value string) error { +func (obj *patternFlowIcmpEchoIdentifierMetricTag) FromYaml(value string) error { if value == "" { value = "{}" } @@ -250582,7 +295856,7 @@ func (obj *patternFlowGtpv2MessageLengthMetricTag) FromYaml(value string) error return nil } -func (obj *patternFlowGtpv2MessageLengthMetricTag) ToJson() (string, error) { +func (obj *patternFlowIcmpEchoIdentifierMetricTag) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -250600,7 +295874,7 @@ func (obj *patternFlowGtpv2MessageLengthMetricTag) ToJson() (string, error) { return string(data), nil } -func (obj *patternFlowGtpv2MessageLengthMetricTag) FromJson(value string) error { +func (obj *patternFlowIcmpEchoIdentifierMetricTag) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -250621,19 +295895,19 @@ func (obj *patternFlowGtpv2MessageLengthMetricTag) FromJson(value string) error return nil } -func (obj *patternFlowGtpv2MessageLengthMetricTag) validateToAndFrom() error { +func (obj *patternFlowIcmpEchoIdentifierMetricTag) validateToAndFrom() error { // emptyVars() obj.validateObj(&obj.validation, true) return obj.validationResult() } -func (obj *patternFlowGtpv2MessageLengthMetricTag) Validate() error { +func (obj *patternFlowIcmpEchoIdentifierMetricTag) Validate() error { // emptyVars() obj.validateObj(&obj.validation, false) return obj.validationResult() } -func (obj *patternFlowGtpv2MessageLengthMetricTag) String() string { +func (obj *patternFlowIcmpEchoIdentifierMetricTag) String() string { str, err := obj.ToYaml() if err != nil { return err.Error() @@ -250641,12 +295915,12 @@ func (obj *patternFlowGtpv2MessageLengthMetricTag) String() string { return str } -func (obj *patternFlowGtpv2MessageLengthMetricTag) Clone() (PatternFlowGtpv2MessageLengthMetricTag, error) { +func (obj *patternFlowIcmpEchoIdentifierMetricTag) Clone() (PatternFlowIcmpEchoIdentifierMetricTag, error) { vErr := obj.Validate() if vErr != nil { return nil, vErr } - newObj := NewPatternFlowGtpv2MessageLengthMetricTag() + newObj := NewPatternFlowIcmpEchoIdentifierMetricTag() data, err := proto.Marshal(obj.Msg()) if err != nil { return nil, err @@ -250658,69 +295932,69 @@ func (obj *patternFlowGtpv2MessageLengthMetricTag) Clone() (PatternFlowGtpv2Mess return newObj, nil } -// PatternFlowGtpv2MessageLengthMetricTag is metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. -type PatternFlowGtpv2MessageLengthMetricTag interface { +// PatternFlowIcmpEchoIdentifierMetricTag is metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. +type PatternFlowIcmpEchoIdentifierMetricTag interface { Validation - // Msg marshals PatternFlowGtpv2MessageLengthMetricTag to protobuf object *otg.PatternFlowGtpv2MessageLengthMetricTag + // Msg marshals PatternFlowIcmpEchoIdentifierMetricTag to protobuf object *otg.PatternFlowIcmpEchoIdentifierMetricTag // and doesn't set defaults - Msg() *otg.PatternFlowGtpv2MessageLengthMetricTag - // SetMsg unmarshals PatternFlowGtpv2MessageLengthMetricTag from protobuf object *otg.PatternFlowGtpv2MessageLengthMetricTag + Msg() *otg.PatternFlowIcmpEchoIdentifierMetricTag + // SetMsg unmarshals PatternFlowIcmpEchoIdentifierMetricTag from protobuf object *otg.PatternFlowIcmpEchoIdentifierMetricTag // and doesn't set defaults - SetMsg(*otg.PatternFlowGtpv2MessageLengthMetricTag) PatternFlowGtpv2MessageLengthMetricTag - // ToProto marshals PatternFlowGtpv2MessageLengthMetricTag to protobuf object *otg.PatternFlowGtpv2MessageLengthMetricTag - ToProto() (*otg.PatternFlowGtpv2MessageLengthMetricTag, error) - // ToPbText marshals PatternFlowGtpv2MessageLengthMetricTag to protobuf text + SetMsg(*otg.PatternFlowIcmpEchoIdentifierMetricTag) PatternFlowIcmpEchoIdentifierMetricTag + // ToProto marshals PatternFlowIcmpEchoIdentifierMetricTag to protobuf object *otg.PatternFlowIcmpEchoIdentifierMetricTag + ToProto() (*otg.PatternFlowIcmpEchoIdentifierMetricTag, error) + // ToPbText marshals PatternFlowIcmpEchoIdentifierMetricTag to protobuf text ToPbText() (string, error) - // ToYaml marshals PatternFlowGtpv2MessageLengthMetricTag to YAML text + // ToYaml marshals PatternFlowIcmpEchoIdentifierMetricTag to YAML text ToYaml() (string, error) - // ToJson marshals PatternFlowGtpv2MessageLengthMetricTag to JSON text + // ToJson marshals PatternFlowIcmpEchoIdentifierMetricTag to JSON text ToJson() (string, error) - // FromProto unmarshals PatternFlowGtpv2MessageLengthMetricTag from protobuf object *otg.PatternFlowGtpv2MessageLengthMetricTag - FromProto(msg *otg.PatternFlowGtpv2MessageLengthMetricTag) (PatternFlowGtpv2MessageLengthMetricTag, error) - // FromPbText unmarshals PatternFlowGtpv2MessageLengthMetricTag from protobuf text + // FromProto unmarshals PatternFlowIcmpEchoIdentifierMetricTag from protobuf object *otg.PatternFlowIcmpEchoIdentifierMetricTag + FromProto(msg *otg.PatternFlowIcmpEchoIdentifierMetricTag) (PatternFlowIcmpEchoIdentifierMetricTag, error) + // FromPbText unmarshals PatternFlowIcmpEchoIdentifierMetricTag from protobuf text FromPbText(value string) error - // FromYaml unmarshals PatternFlowGtpv2MessageLengthMetricTag from YAML text + // FromYaml unmarshals PatternFlowIcmpEchoIdentifierMetricTag from YAML text FromYaml(value string) error - // FromJson unmarshals PatternFlowGtpv2MessageLengthMetricTag from JSON text + // FromJson unmarshals PatternFlowIcmpEchoIdentifierMetricTag from JSON text FromJson(value string) error - // Validate validates PatternFlowGtpv2MessageLengthMetricTag + // Validate validates PatternFlowIcmpEchoIdentifierMetricTag Validate() error // A stringer function String() string // Clones the object - Clone() (PatternFlowGtpv2MessageLengthMetricTag, error) + Clone() (PatternFlowIcmpEchoIdentifierMetricTag, error) validateToAndFrom() error validateObj(vObj *validation, set_default bool) setDefault() - // Name returns string, set in PatternFlowGtpv2MessageLengthMetricTag. + // Name returns string, set in PatternFlowIcmpEchoIdentifierMetricTag. Name() string - // SetName assigns string provided by user to PatternFlowGtpv2MessageLengthMetricTag - SetName(value string) PatternFlowGtpv2MessageLengthMetricTag - // Offset returns uint32, set in PatternFlowGtpv2MessageLengthMetricTag. + // SetName assigns string provided by user to PatternFlowIcmpEchoIdentifierMetricTag + SetName(value string) PatternFlowIcmpEchoIdentifierMetricTag + // Offset returns uint32, set in PatternFlowIcmpEchoIdentifierMetricTag. Offset() uint32 - // SetOffset assigns uint32 provided by user to PatternFlowGtpv2MessageLengthMetricTag - SetOffset(value uint32) PatternFlowGtpv2MessageLengthMetricTag - // HasOffset checks if Offset has been set in PatternFlowGtpv2MessageLengthMetricTag + // SetOffset assigns uint32 provided by user to PatternFlowIcmpEchoIdentifierMetricTag + SetOffset(value uint32) PatternFlowIcmpEchoIdentifierMetricTag + // HasOffset checks if Offset has been set in PatternFlowIcmpEchoIdentifierMetricTag HasOffset() bool - // Length returns uint32, set in PatternFlowGtpv2MessageLengthMetricTag. + // Length returns uint32, set in PatternFlowIcmpEchoIdentifierMetricTag. Length() uint32 - // SetLength assigns uint32 provided by user to PatternFlowGtpv2MessageLengthMetricTag - SetLength(value uint32) PatternFlowGtpv2MessageLengthMetricTag - // HasLength checks if Length has been set in PatternFlowGtpv2MessageLengthMetricTag + // SetLength assigns uint32 provided by user to PatternFlowIcmpEchoIdentifierMetricTag + SetLength(value uint32) PatternFlowIcmpEchoIdentifierMetricTag + // HasLength checks if Length has been set in PatternFlowIcmpEchoIdentifierMetricTag HasLength() bool } // Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field // Name returns a string -func (obj *patternFlowGtpv2MessageLengthMetricTag) Name() string { +func (obj *patternFlowIcmpEchoIdentifierMetricTag) Name() string { return *obj.obj.Name } // Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field -// SetName sets the string value in the PatternFlowGtpv2MessageLengthMetricTag object -func (obj *patternFlowGtpv2MessageLengthMetricTag) SetName(value string) PatternFlowGtpv2MessageLengthMetricTag { +// SetName sets the string value in the PatternFlowIcmpEchoIdentifierMetricTag object +func (obj *patternFlowIcmpEchoIdentifierMetricTag) SetName(value string) PatternFlowIcmpEchoIdentifierMetricTag { obj.obj.Name = &value return obj @@ -250728,7 +296002,7 @@ func (obj *patternFlowGtpv2MessageLengthMetricTag) SetName(value string) Pattern // Offset in bits relative to start of corresponding header field // Offset returns a uint32 -func (obj *patternFlowGtpv2MessageLengthMetricTag) Offset() uint32 { +func (obj *patternFlowIcmpEchoIdentifierMetricTag) Offset() uint32 { return *obj.obj.Offset @@ -250736,13 +296010,13 @@ func (obj *patternFlowGtpv2MessageLengthMetricTag) Offset() uint32 { // Offset in bits relative to start of corresponding header field // Offset returns a uint32 -func (obj *patternFlowGtpv2MessageLengthMetricTag) HasOffset() bool { +func (obj *patternFlowIcmpEchoIdentifierMetricTag) HasOffset() bool { return obj.obj.Offset != nil } // Offset in bits relative to start of corresponding header field -// SetOffset sets the uint32 value in the PatternFlowGtpv2MessageLengthMetricTag object -func (obj *patternFlowGtpv2MessageLengthMetricTag) SetOffset(value uint32) PatternFlowGtpv2MessageLengthMetricTag { +// SetOffset sets the uint32 value in the PatternFlowIcmpEchoIdentifierMetricTag object +func (obj *patternFlowIcmpEchoIdentifierMetricTag) SetOffset(value uint32) PatternFlowIcmpEchoIdentifierMetricTag { obj.obj.Offset = &value return obj @@ -250750,7 +296024,7 @@ func (obj *patternFlowGtpv2MessageLengthMetricTag) SetOffset(value uint32) Patte // Number of bits to track for metrics starting from configured offset of corresponding header field // Length returns a uint32 -func (obj *patternFlowGtpv2MessageLengthMetricTag) Length() uint32 { +func (obj *patternFlowIcmpEchoIdentifierMetricTag) Length() uint32 { return *obj.obj.Length @@ -250758,26 +296032,26 @@ func (obj *patternFlowGtpv2MessageLengthMetricTag) Length() uint32 { // Number of bits to track for metrics starting from configured offset of corresponding header field // Length returns a uint32 -func (obj *patternFlowGtpv2MessageLengthMetricTag) HasLength() bool { +func (obj *patternFlowIcmpEchoIdentifierMetricTag) HasLength() bool { return obj.obj.Length != nil } // Number of bits to track for metrics starting from configured offset of corresponding header field -// SetLength sets the uint32 value in the PatternFlowGtpv2MessageLengthMetricTag object -func (obj *patternFlowGtpv2MessageLengthMetricTag) SetLength(value uint32) PatternFlowGtpv2MessageLengthMetricTag { +// SetLength sets the uint32 value in the PatternFlowIcmpEchoIdentifierMetricTag object +func (obj *patternFlowIcmpEchoIdentifierMetricTag) SetLength(value uint32) PatternFlowIcmpEchoIdentifierMetricTag { obj.obj.Length = &value return obj } -func (obj *patternFlowGtpv2MessageLengthMetricTag) validateObj(vObj *validation, set_default bool) { +func (obj *patternFlowIcmpEchoIdentifierMetricTag) validateObj(vObj *validation, set_default bool) { if set_default { obj.setDefault() } // Name is required if obj.obj.Name == nil { - vObj.validationErrors = append(vObj.validationErrors, "Name is required field on interface PatternFlowGtpv2MessageLengthMetricTag") + vObj.validationErrors = append(vObj.validationErrors, "Name is required field on interface PatternFlowIcmpEchoIdentifierMetricTag") } if obj.obj.Offset != nil { @@ -250785,7 +296059,7 @@ func (obj *patternFlowGtpv2MessageLengthMetricTag) validateObj(vObj *validation, if *obj.obj.Offset > 15 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowGtpv2MessageLengthMetricTag.Offset <= 15 but Got %d", *obj.obj.Offset)) + fmt.Sprintf("0 <= PatternFlowIcmpEchoIdentifierMetricTag.Offset <= 15 but Got %d", *obj.obj.Offset)) } } @@ -250795,14 +296069,14 @@ func (obj *patternFlowGtpv2MessageLengthMetricTag) validateObj(vObj *validation, if *obj.obj.Length < 1 || *obj.obj.Length > 16 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("1 <= PatternFlowGtpv2MessageLengthMetricTag.Length <= 16 but Got %d", *obj.obj.Length)) + fmt.Sprintf("1 <= PatternFlowIcmpEchoIdentifierMetricTag.Length <= 16 but Got %d", *obj.obj.Length)) } } } -func (obj *patternFlowGtpv2MessageLengthMetricTag) setDefault() { +func (obj *patternFlowIcmpEchoIdentifierMetricTag) setDefault() { if obj.obj.Offset == nil { obj.SetOffset(0) } @@ -250812,29 +296086,29 @@ func (obj *patternFlowGtpv2MessageLengthMetricTag) setDefault() { } -// ***** PatternFlowGtpv2TeidCounter ***** -type patternFlowGtpv2TeidCounter struct { +// ***** PatternFlowIcmpEchoSequenceNumberCounter ***** +type patternFlowIcmpEchoSequenceNumberCounter struct { validation - obj *otg.PatternFlowGtpv2TeidCounter + obj *otg.PatternFlowIcmpEchoSequenceNumberCounter } -func NewPatternFlowGtpv2TeidCounter() PatternFlowGtpv2TeidCounter { - obj := patternFlowGtpv2TeidCounter{obj: &otg.PatternFlowGtpv2TeidCounter{}} +func NewPatternFlowIcmpEchoSequenceNumberCounter() PatternFlowIcmpEchoSequenceNumberCounter { + obj := patternFlowIcmpEchoSequenceNumberCounter{obj: &otg.PatternFlowIcmpEchoSequenceNumberCounter{}} obj.setDefault() return &obj } -func (obj *patternFlowGtpv2TeidCounter) Msg() *otg.PatternFlowGtpv2TeidCounter { +func (obj *patternFlowIcmpEchoSequenceNumberCounter) Msg() *otg.PatternFlowIcmpEchoSequenceNumberCounter { return obj.obj } -func (obj *patternFlowGtpv2TeidCounter) SetMsg(msg *otg.PatternFlowGtpv2TeidCounter) PatternFlowGtpv2TeidCounter { +func (obj *patternFlowIcmpEchoSequenceNumberCounter) SetMsg(msg *otg.PatternFlowIcmpEchoSequenceNumberCounter) PatternFlowIcmpEchoSequenceNumberCounter { proto.Merge(obj.obj, msg) return obj } -func (obj *patternFlowGtpv2TeidCounter) ToProto() (*otg.PatternFlowGtpv2TeidCounter, error) { +func (obj *patternFlowIcmpEchoSequenceNumberCounter) ToProto() (*otg.PatternFlowIcmpEchoSequenceNumberCounter, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -250842,7 +296116,7 @@ func (obj *patternFlowGtpv2TeidCounter) ToProto() (*otg.PatternFlowGtpv2TeidCoun return obj.Msg(), nil } -func (obj *patternFlowGtpv2TeidCounter) FromProto(msg *otg.PatternFlowGtpv2TeidCounter) (PatternFlowGtpv2TeidCounter, error) { +func (obj *patternFlowIcmpEchoSequenceNumberCounter) FromProto(msg *otg.PatternFlowIcmpEchoSequenceNumberCounter) (PatternFlowIcmpEchoSequenceNumberCounter, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -250851,7 +296125,7 @@ func (obj *patternFlowGtpv2TeidCounter) FromProto(msg *otg.PatternFlowGtpv2TeidC return newObj, nil } -func (obj *patternFlowGtpv2TeidCounter) ToPbText() (string, error) { +func (obj *patternFlowIcmpEchoSequenceNumberCounter) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -250863,7 +296137,7 @@ func (obj *patternFlowGtpv2TeidCounter) ToPbText() (string, error) { return string(protoMarshal), nil } -func (obj *patternFlowGtpv2TeidCounter) FromPbText(value string) error { +func (obj *patternFlowIcmpEchoSequenceNumberCounter) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj @@ -250876,7 +296150,7 @@ func (obj *patternFlowGtpv2TeidCounter) FromPbText(value string) error { return retObj } -func (obj *patternFlowGtpv2TeidCounter) ToYaml() (string, error) { +func (obj *patternFlowIcmpEchoSequenceNumberCounter) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -250897,7 +296171,7 @@ func (obj *patternFlowGtpv2TeidCounter) ToYaml() (string, error) { return string(data), nil } -func (obj *patternFlowGtpv2TeidCounter) FromYaml(value string) error { +func (obj *patternFlowIcmpEchoSequenceNumberCounter) FromYaml(value string) error { if value == "" { value = "{}" } @@ -250922,7 +296196,7 @@ func (obj *patternFlowGtpv2TeidCounter) FromYaml(value string) error { return nil } -func (obj *patternFlowGtpv2TeidCounter) ToJson() (string, error) { +func (obj *patternFlowIcmpEchoSequenceNumberCounter) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -250940,7 +296214,7 @@ func (obj *patternFlowGtpv2TeidCounter) ToJson() (string, error) { return string(data), nil } -func (obj *patternFlowGtpv2TeidCounter) FromJson(value string) error { +func (obj *patternFlowIcmpEchoSequenceNumberCounter) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -250961,19 +296235,19 @@ func (obj *patternFlowGtpv2TeidCounter) FromJson(value string) error { return nil } -func (obj *patternFlowGtpv2TeidCounter) validateToAndFrom() error { +func (obj *patternFlowIcmpEchoSequenceNumberCounter) validateToAndFrom() error { // emptyVars() obj.validateObj(&obj.validation, true) return obj.validationResult() } -func (obj *patternFlowGtpv2TeidCounter) Validate() error { +func (obj *patternFlowIcmpEchoSequenceNumberCounter) Validate() error { // emptyVars() obj.validateObj(&obj.validation, false) return obj.validationResult() } -func (obj *patternFlowGtpv2TeidCounter) String() string { +func (obj *patternFlowIcmpEchoSequenceNumberCounter) String() string { str, err := obj.ToYaml() if err != nil { return err.Error() @@ -250981,12 +296255,12 @@ func (obj *patternFlowGtpv2TeidCounter) String() string { return str } -func (obj *patternFlowGtpv2TeidCounter) Clone() (PatternFlowGtpv2TeidCounter, error) { +func (obj *patternFlowIcmpEchoSequenceNumberCounter) Clone() (PatternFlowIcmpEchoSequenceNumberCounter, error) { vErr := obj.Validate() if vErr != nil { return nil, vErr } - newObj := NewPatternFlowGtpv2TeidCounter() + newObj := NewPatternFlowIcmpEchoSequenceNumberCounter() data, err := proto.Marshal(obj.Msg()) if err != nil { return nil, err @@ -250998,63 +296272,63 @@ func (obj *patternFlowGtpv2TeidCounter) Clone() (PatternFlowGtpv2TeidCounter, er return newObj, nil } -// PatternFlowGtpv2TeidCounter is integer counter pattern -type PatternFlowGtpv2TeidCounter interface { +// PatternFlowIcmpEchoSequenceNumberCounter is integer counter pattern +type PatternFlowIcmpEchoSequenceNumberCounter interface { Validation - // Msg marshals PatternFlowGtpv2TeidCounter to protobuf object *otg.PatternFlowGtpv2TeidCounter + // Msg marshals PatternFlowIcmpEchoSequenceNumberCounter to protobuf object *otg.PatternFlowIcmpEchoSequenceNumberCounter // and doesn't set defaults - Msg() *otg.PatternFlowGtpv2TeidCounter - // SetMsg unmarshals PatternFlowGtpv2TeidCounter from protobuf object *otg.PatternFlowGtpv2TeidCounter + Msg() *otg.PatternFlowIcmpEchoSequenceNumberCounter + // SetMsg unmarshals PatternFlowIcmpEchoSequenceNumberCounter from protobuf object *otg.PatternFlowIcmpEchoSequenceNumberCounter // and doesn't set defaults - SetMsg(*otg.PatternFlowGtpv2TeidCounter) PatternFlowGtpv2TeidCounter - // ToProto marshals PatternFlowGtpv2TeidCounter to protobuf object *otg.PatternFlowGtpv2TeidCounter - ToProto() (*otg.PatternFlowGtpv2TeidCounter, error) - // ToPbText marshals PatternFlowGtpv2TeidCounter to protobuf text + SetMsg(*otg.PatternFlowIcmpEchoSequenceNumberCounter) PatternFlowIcmpEchoSequenceNumberCounter + // ToProto marshals PatternFlowIcmpEchoSequenceNumberCounter to protobuf object *otg.PatternFlowIcmpEchoSequenceNumberCounter + ToProto() (*otg.PatternFlowIcmpEchoSequenceNumberCounter, error) + // ToPbText marshals PatternFlowIcmpEchoSequenceNumberCounter to protobuf text ToPbText() (string, error) - // ToYaml marshals PatternFlowGtpv2TeidCounter to YAML text + // ToYaml marshals PatternFlowIcmpEchoSequenceNumberCounter to YAML text ToYaml() (string, error) - // ToJson marshals PatternFlowGtpv2TeidCounter to JSON text + // ToJson marshals PatternFlowIcmpEchoSequenceNumberCounter to JSON text ToJson() (string, error) - // FromProto unmarshals PatternFlowGtpv2TeidCounter from protobuf object *otg.PatternFlowGtpv2TeidCounter - FromProto(msg *otg.PatternFlowGtpv2TeidCounter) (PatternFlowGtpv2TeidCounter, error) - // FromPbText unmarshals PatternFlowGtpv2TeidCounter from protobuf text + // FromProto unmarshals PatternFlowIcmpEchoSequenceNumberCounter from protobuf object *otg.PatternFlowIcmpEchoSequenceNumberCounter + FromProto(msg *otg.PatternFlowIcmpEchoSequenceNumberCounter) (PatternFlowIcmpEchoSequenceNumberCounter, error) + // FromPbText unmarshals PatternFlowIcmpEchoSequenceNumberCounter from protobuf text FromPbText(value string) error - // FromYaml unmarshals PatternFlowGtpv2TeidCounter from YAML text + // FromYaml unmarshals PatternFlowIcmpEchoSequenceNumberCounter from YAML text FromYaml(value string) error - // FromJson unmarshals PatternFlowGtpv2TeidCounter from JSON text + // FromJson unmarshals PatternFlowIcmpEchoSequenceNumberCounter from JSON text FromJson(value string) error - // Validate validates PatternFlowGtpv2TeidCounter + // Validate validates PatternFlowIcmpEchoSequenceNumberCounter Validate() error // A stringer function String() string // Clones the object - Clone() (PatternFlowGtpv2TeidCounter, error) + Clone() (PatternFlowIcmpEchoSequenceNumberCounter, error) validateToAndFrom() error validateObj(vObj *validation, set_default bool) setDefault() - // Start returns uint32, set in PatternFlowGtpv2TeidCounter. + // Start returns uint32, set in PatternFlowIcmpEchoSequenceNumberCounter. Start() uint32 - // SetStart assigns uint32 provided by user to PatternFlowGtpv2TeidCounter - SetStart(value uint32) PatternFlowGtpv2TeidCounter - // HasStart checks if Start has been set in PatternFlowGtpv2TeidCounter + // SetStart assigns uint32 provided by user to PatternFlowIcmpEchoSequenceNumberCounter + SetStart(value uint32) PatternFlowIcmpEchoSequenceNumberCounter + // HasStart checks if Start has been set in PatternFlowIcmpEchoSequenceNumberCounter HasStart() bool - // Step returns uint32, set in PatternFlowGtpv2TeidCounter. + // Step returns uint32, set in PatternFlowIcmpEchoSequenceNumberCounter. Step() uint32 - // SetStep assigns uint32 provided by user to PatternFlowGtpv2TeidCounter - SetStep(value uint32) PatternFlowGtpv2TeidCounter - // HasStep checks if Step has been set in PatternFlowGtpv2TeidCounter + // SetStep assigns uint32 provided by user to PatternFlowIcmpEchoSequenceNumberCounter + SetStep(value uint32) PatternFlowIcmpEchoSequenceNumberCounter + // HasStep checks if Step has been set in PatternFlowIcmpEchoSequenceNumberCounter HasStep() bool - // Count returns uint32, set in PatternFlowGtpv2TeidCounter. + // Count returns uint32, set in PatternFlowIcmpEchoSequenceNumberCounter. Count() uint32 - // SetCount assigns uint32 provided by user to PatternFlowGtpv2TeidCounter - SetCount(value uint32) PatternFlowGtpv2TeidCounter - // HasCount checks if Count has been set in PatternFlowGtpv2TeidCounter + // SetCount assigns uint32 provided by user to PatternFlowIcmpEchoSequenceNumberCounter + SetCount(value uint32) PatternFlowIcmpEchoSequenceNumberCounter + // HasCount checks if Count has been set in PatternFlowIcmpEchoSequenceNumberCounter HasCount() bool } // description is TBD // Start returns a uint32 -func (obj *patternFlowGtpv2TeidCounter) Start() uint32 { +func (obj *patternFlowIcmpEchoSequenceNumberCounter) Start() uint32 { return *obj.obj.Start @@ -251062,13 +296336,13 @@ func (obj *patternFlowGtpv2TeidCounter) Start() uint32 { // description is TBD // Start returns a uint32 -func (obj *patternFlowGtpv2TeidCounter) HasStart() bool { +func (obj *patternFlowIcmpEchoSequenceNumberCounter) HasStart() bool { return obj.obj.Start != nil } // description is TBD -// SetStart sets the uint32 value in the PatternFlowGtpv2TeidCounter object -func (obj *patternFlowGtpv2TeidCounter) SetStart(value uint32) PatternFlowGtpv2TeidCounter { +// SetStart sets the uint32 value in the PatternFlowIcmpEchoSequenceNumberCounter object +func (obj *patternFlowIcmpEchoSequenceNumberCounter) SetStart(value uint32) PatternFlowIcmpEchoSequenceNumberCounter { obj.obj.Start = &value return obj @@ -251076,7 +296350,7 @@ func (obj *patternFlowGtpv2TeidCounter) SetStart(value uint32) PatternFlowGtpv2T // description is TBD // Step returns a uint32 -func (obj *patternFlowGtpv2TeidCounter) Step() uint32 { +func (obj *patternFlowIcmpEchoSequenceNumberCounter) Step() uint32 { return *obj.obj.Step @@ -251084,13 +296358,13 @@ func (obj *patternFlowGtpv2TeidCounter) Step() uint32 { // description is TBD // Step returns a uint32 -func (obj *patternFlowGtpv2TeidCounter) HasStep() bool { +func (obj *patternFlowIcmpEchoSequenceNumberCounter) HasStep() bool { return obj.obj.Step != nil } // description is TBD -// SetStep sets the uint32 value in the PatternFlowGtpv2TeidCounter object -func (obj *patternFlowGtpv2TeidCounter) SetStep(value uint32) PatternFlowGtpv2TeidCounter { +// SetStep sets the uint32 value in the PatternFlowIcmpEchoSequenceNumberCounter object +func (obj *patternFlowIcmpEchoSequenceNumberCounter) SetStep(value uint32) PatternFlowIcmpEchoSequenceNumberCounter { obj.obj.Step = &value return obj @@ -251098,7 +296372,7 @@ func (obj *patternFlowGtpv2TeidCounter) SetStep(value uint32) PatternFlowGtpv2Te // description is TBD // Count returns a uint32 -func (obj *patternFlowGtpv2TeidCounter) Count() uint32 { +func (obj *patternFlowIcmpEchoSequenceNumberCounter) Count() uint32 { return *obj.obj.Count @@ -251106,26 +296380,56 @@ func (obj *patternFlowGtpv2TeidCounter) Count() uint32 { // description is TBD // Count returns a uint32 -func (obj *patternFlowGtpv2TeidCounter) HasCount() bool { +func (obj *patternFlowIcmpEchoSequenceNumberCounter) HasCount() bool { return obj.obj.Count != nil } // description is TBD -// SetCount sets the uint32 value in the PatternFlowGtpv2TeidCounter object -func (obj *patternFlowGtpv2TeidCounter) SetCount(value uint32) PatternFlowGtpv2TeidCounter { +// SetCount sets the uint32 value in the PatternFlowIcmpEchoSequenceNumberCounter object +func (obj *patternFlowIcmpEchoSequenceNumberCounter) SetCount(value uint32) PatternFlowIcmpEchoSequenceNumberCounter { obj.obj.Count = &value return obj } -func (obj *patternFlowGtpv2TeidCounter) validateObj(vObj *validation, set_default bool) { +func (obj *patternFlowIcmpEchoSequenceNumberCounter) validateObj(vObj *validation, set_default bool) { if set_default { obj.setDefault() } + if obj.obj.Start != nil { + + if *obj.obj.Start > 65535 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("0 <= PatternFlowIcmpEchoSequenceNumberCounter.Start <= 65535 but Got %d", *obj.obj.Start)) + } + + } + + if obj.obj.Step != nil { + + if *obj.obj.Step > 65535 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("0 <= PatternFlowIcmpEchoSequenceNumberCounter.Step <= 65535 but Got %d", *obj.obj.Step)) + } + + } + + if obj.obj.Count != nil { + + if *obj.obj.Count > 65535 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("0 <= PatternFlowIcmpEchoSequenceNumberCounter.Count <= 65535 but Got %d", *obj.obj.Count)) + } + + } + } -func (obj *patternFlowGtpv2TeidCounter) setDefault() { +func (obj *patternFlowIcmpEchoSequenceNumberCounter) setDefault() { if obj.obj.Start == nil { obj.SetStart(0) } @@ -251138,29 +296442,29 @@ func (obj *patternFlowGtpv2TeidCounter) setDefault() { } -// ***** PatternFlowGtpv2TeidMetricTag ***** -type patternFlowGtpv2TeidMetricTag struct { +// ***** PatternFlowIcmpEchoSequenceNumberMetricTag ***** +type patternFlowIcmpEchoSequenceNumberMetricTag struct { validation - obj *otg.PatternFlowGtpv2TeidMetricTag + obj *otg.PatternFlowIcmpEchoSequenceNumberMetricTag } -func NewPatternFlowGtpv2TeidMetricTag() PatternFlowGtpv2TeidMetricTag { - obj := patternFlowGtpv2TeidMetricTag{obj: &otg.PatternFlowGtpv2TeidMetricTag{}} +func NewPatternFlowIcmpEchoSequenceNumberMetricTag() PatternFlowIcmpEchoSequenceNumberMetricTag { + obj := patternFlowIcmpEchoSequenceNumberMetricTag{obj: &otg.PatternFlowIcmpEchoSequenceNumberMetricTag{}} obj.setDefault() return &obj } -func (obj *patternFlowGtpv2TeidMetricTag) Msg() *otg.PatternFlowGtpv2TeidMetricTag { +func (obj *patternFlowIcmpEchoSequenceNumberMetricTag) Msg() *otg.PatternFlowIcmpEchoSequenceNumberMetricTag { return obj.obj } -func (obj *patternFlowGtpv2TeidMetricTag) SetMsg(msg *otg.PatternFlowGtpv2TeidMetricTag) PatternFlowGtpv2TeidMetricTag { +func (obj *patternFlowIcmpEchoSequenceNumberMetricTag) SetMsg(msg *otg.PatternFlowIcmpEchoSequenceNumberMetricTag) PatternFlowIcmpEchoSequenceNumberMetricTag { proto.Merge(obj.obj, msg) return obj } -func (obj *patternFlowGtpv2TeidMetricTag) ToProto() (*otg.PatternFlowGtpv2TeidMetricTag, error) { +func (obj *patternFlowIcmpEchoSequenceNumberMetricTag) ToProto() (*otg.PatternFlowIcmpEchoSequenceNumberMetricTag, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -251168,7 +296472,7 @@ func (obj *patternFlowGtpv2TeidMetricTag) ToProto() (*otg.PatternFlowGtpv2TeidMe return obj.Msg(), nil } -func (obj *patternFlowGtpv2TeidMetricTag) FromProto(msg *otg.PatternFlowGtpv2TeidMetricTag) (PatternFlowGtpv2TeidMetricTag, error) { +func (obj *patternFlowIcmpEchoSequenceNumberMetricTag) FromProto(msg *otg.PatternFlowIcmpEchoSequenceNumberMetricTag) (PatternFlowIcmpEchoSequenceNumberMetricTag, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -251177,7 +296481,7 @@ func (obj *patternFlowGtpv2TeidMetricTag) FromProto(msg *otg.PatternFlowGtpv2Tei return newObj, nil } -func (obj *patternFlowGtpv2TeidMetricTag) ToPbText() (string, error) { +func (obj *patternFlowIcmpEchoSequenceNumberMetricTag) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -251189,7 +296493,7 @@ func (obj *patternFlowGtpv2TeidMetricTag) ToPbText() (string, error) { return string(protoMarshal), nil } -func (obj *patternFlowGtpv2TeidMetricTag) FromPbText(value string) error { +func (obj *patternFlowIcmpEchoSequenceNumberMetricTag) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj @@ -251202,7 +296506,7 @@ func (obj *patternFlowGtpv2TeidMetricTag) FromPbText(value string) error { return retObj } -func (obj *patternFlowGtpv2TeidMetricTag) ToYaml() (string, error) { +func (obj *patternFlowIcmpEchoSequenceNumberMetricTag) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -251223,7 +296527,7 @@ func (obj *patternFlowGtpv2TeidMetricTag) ToYaml() (string, error) { return string(data), nil } -func (obj *patternFlowGtpv2TeidMetricTag) FromYaml(value string) error { +func (obj *patternFlowIcmpEchoSequenceNumberMetricTag) FromYaml(value string) error { if value == "" { value = "{}" } @@ -251248,7 +296552,7 @@ func (obj *patternFlowGtpv2TeidMetricTag) FromYaml(value string) error { return nil } -func (obj *patternFlowGtpv2TeidMetricTag) ToJson() (string, error) { +func (obj *patternFlowIcmpEchoSequenceNumberMetricTag) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -251266,7 +296570,7 @@ func (obj *patternFlowGtpv2TeidMetricTag) ToJson() (string, error) { return string(data), nil } -func (obj *patternFlowGtpv2TeidMetricTag) FromJson(value string) error { +func (obj *patternFlowIcmpEchoSequenceNumberMetricTag) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -251287,19 +296591,19 @@ func (obj *patternFlowGtpv2TeidMetricTag) FromJson(value string) error { return nil } -func (obj *patternFlowGtpv2TeidMetricTag) validateToAndFrom() error { +func (obj *patternFlowIcmpEchoSequenceNumberMetricTag) validateToAndFrom() error { // emptyVars() obj.validateObj(&obj.validation, true) return obj.validationResult() } -func (obj *patternFlowGtpv2TeidMetricTag) Validate() error { +func (obj *patternFlowIcmpEchoSequenceNumberMetricTag) Validate() error { // emptyVars() obj.validateObj(&obj.validation, false) return obj.validationResult() } -func (obj *patternFlowGtpv2TeidMetricTag) String() string { +func (obj *patternFlowIcmpEchoSequenceNumberMetricTag) String() string { str, err := obj.ToYaml() if err != nil { return err.Error() @@ -251307,12 +296611,12 @@ func (obj *patternFlowGtpv2TeidMetricTag) String() string { return str } -func (obj *patternFlowGtpv2TeidMetricTag) Clone() (PatternFlowGtpv2TeidMetricTag, error) { +func (obj *patternFlowIcmpEchoSequenceNumberMetricTag) Clone() (PatternFlowIcmpEchoSequenceNumberMetricTag, error) { vErr := obj.Validate() if vErr != nil { return nil, vErr } - newObj := NewPatternFlowGtpv2TeidMetricTag() + newObj := NewPatternFlowIcmpEchoSequenceNumberMetricTag() data, err := proto.Marshal(obj.Msg()) if err != nil { return nil, err @@ -251324,69 +296628,69 @@ func (obj *patternFlowGtpv2TeidMetricTag) Clone() (PatternFlowGtpv2TeidMetricTag return newObj, nil } -// PatternFlowGtpv2TeidMetricTag is metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. -type PatternFlowGtpv2TeidMetricTag interface { +// PatternFlowIcmpEchoSequenceNumberMetricTag is metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. +type PatternFlowIcmpEchoSequenceNumberMetricTag interface { Validation - // Msg marshals PatternFlowGtpv2TeidMetricTag to protobuf object *otg.PatternFlowGtpv2TeidMetricTag + // Msg marshals PatternFlowIcmpEchoSequenceNumberMetricTag to protobuf object *otg.PatternFlowIcmpEchoSequenceNumberMetricTag // and doesn't set defaults - Msg() *otg.PatternFlowGtpv2TeidMetricTag - // SetMsg unmarshals PatternFlowGtpv2TeidMetricTag from protobuf object *otg.PatternFlowGtpv2TeidMetricTag + Msg() *otg.PatternFlowIcmpEchoSequenceNumberMetricTag + // SetMsg unmarshals PatternFlowIcmpEchoSequenceNumberMetricTag from protobuf object *otg.PatternFlowIcmpEchoSequenceNumberMetricTag // and doesn't set defaults - SetMsg(*otg.PatternFlowGtpv2TeidMetricTag) PatternFlowGtpv2TeidMetricTag - // ToProto marshals PatternFlowGtpv2TeidMetricTag to protobuf object *otg.PatternFlowGtpv2TeidMetricTag - ToProto() (*otg.PatternFlowGtpv2TeidMetricTag, error) - // ToPbText marshals PatternFlowGtpv2TeidMetricTag to protobuf text + SetMsg(*otg.PatternFlowIcmpEchoSequenceNumberMetricTag) PatternFlowIcmpEchoSequenceNumberMetricTag + // ToProto marshals PatternFlowIcmpEchoSequenceNumberMetricTag to protobuf object *otg.PatternFlowIcmpEchoSequenceNumberMetricTag + ToProto() (*otg.PatternFlowIcmpEchoSequenceNumberMetricTag, error) + // ToPbText marshals PatternFlowIcmpEchoSequenceNumberMetricTag to protobuf text ToPbText() (string, error) - // ToYaml marshals PatternFlowGtpv2TeidMetricTag to YAML text + // ToYaml marshals PatternFlowIcmpEchoSequenceNumberMetricTag to YAML text ToYaml() (string, error) - // ToJson marshals PatternFlowGtpv2TeidMetricTag to JSON text + // ToJson marshals PatternFlowIcmpEchoSequenceNumberMetricTag to JSON text ToJson() (string, error) - // FromProto unmarshals PatternFlowGtpv2TeidMetricTag from protobuf object *otg.PatternFlowGtpv2TeidMetricTag - FromProto(msg *otg.PatternFlowGtpv2TeidMetricTag) (PatternFlowGtpv2TeidMetricTag, error) - // FromPbText unmarshals PatternFlowGtpv2TeidMetricTag from protobuf text + // FromProto unmarshals PatternFlowIcmpEchoSequenceNumberMetricTag from protobuf object *otg.PatternFlowIcmpEchoSequenceNumberMetricTag + FromProto(msg *otg.PatternFlowIcmpEchoSequenceNumberMetricTag) (PatternFlowIcmpEchoSequenceNumberMetricTag, error) + // FromPbText unmarshals PatternFlowIcmpEchoSequenceNumberMetricTag from protobuf text FromPbText(value string) error - // FromYaml unmarshals PatternFlowGtpv2TeidMetricTag from YAML text + // FromYaml unmarshals PatternFlowIcmpEchoSequenceNumberMetricTag from YAML text FromYaml(value string) error - // FromJson unmarshals PatternFlowGtpv2TeidMetricTag from JSON text + // FromJson unmarshals PatternFlowIcmpEchoSequenceNumberMetricTag from JSON text FromJson(value string) error - // Validate validates PatternFlowGtpv2TeidMetricTag + // Validate validates PatternFlowIcmpEchoSequenceNumberMetricTag Validate() error // A stringer function String() string // Clones the object - Clone() (PatternFlowGtpv2TeidMetricTag, error) + Clone() (PatternFlowIcmpEchoSequenceNumberMetricTag, error) validateToAndFrom() error validateObj(vObj *validation, set_default bool) setDefault() - // Name returns string, set in PatternFlowGtpv2TeidMetricTag. + // Name returns string, set in PatternFlowIcmpEchoSequenceNumberMetricTag. Name() string - // SetName assigns string provided by user to PatternFlowGtpv2TeidMetricTag - SetName(value string) PatternFlowGtpv2TeidMetricTag - // Offset returns uint32, set in PatternFlowGtpv2TeidMetricTag. + // SetName assigns string provided by user to PatternFlowIcmpEchoSequenceNumberMetricTag + SetName(value string) PatternFlowIcmpEchoSequenceNumberMetricTag + // Offset returns uint32, set in PatternFlowIcmpEchoSequenceNumberMetricTag. Offset() uint32 - // SetOffset assigns uint32 provided by user to PatternFlowGtpv2TeidMetricTag - SetOffset(value uint32) PatternFlowGtpv2TeidMetricTag - // HasOffset checks if Offset has been set in PatternFlowGtpv2TeidMetricTag + // SetOffset assigns uint32 provided by user to PatternFlowIcmpEchoSequenceNumberMetricTag + SetOffset(value uint32) PatternFlowIcmpEchoSequenceNumberMetricTag + // HasOffset checks if Offset has been set in PatternFlowIcmpEchoSequenceNumberMetricTag HasOffset() bool - // Length returns uint32, set in PatternFlowGtpv2TeidMetricTag. + // Length returns uint32, set in PatternFlowIcmpEchoSequenceNumberMetricTag. Length() uint32 - // SetLength assigns uint32 provided by user to PatternFlowGtpv2TeidMetricTag - SetLength(value uint32) PatternFlowGtpv2TeidMetricTag - // HasLength checks if Length has been set in PatternFlowGtpv2TeidMetricTag + // SetLength assigns uint32 provided by user to PatternFlowIcmpEchoSequenceNumberMetricTag + SetLength(value uint32) PatternFlowIcmpEchoSequenceNumberMetricTag + // HasLength checks if Length has been set in PatternFlowIcmpEchoSequenceNumberMetricTag HasLength() bool } // Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field // Name returns a string -func (obj *patternFlowGtpv2TeidMetricTag) Name() string { +func (obj *patternFlowIcmpEchoSequenceNumberMetricTag) Name() string { return *obj.obj.Name } // Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field -// SetName sets the string value in the PatternFlowGtpv2TeidMetricTag object -func (obj *patternFlowGtpv2TeidMetricTag) SetName(value string) PatternFlowGtpv2TeidMetricTag { +// SetName sets the string value in the PatternFlowIcmpEchoSequenceNumberMetricTag object +func (obj *patternFlowIcmpEchoSequenceNumberMetricTag) SetName(value string) PatternFlowIcmpEchoSequenceNumberMetricTag { obj.obj.Name = &value return obj @@ -251394,7 +296698,7 @@ func (obj *patternFlowGtpv2TeidMetricTag) SetName(value string) PatternFlowGtpv2 // Offset in bits relative to start of corresponding header field // Offset returns a uint32 -func (obj *patternFlowGtpv2TeidMetricTag) Offset() uint32 { +func (obj *patternFlowIcmpEchoSequenceNumberMetricTag) Offset() uint32 { return *obj.obj.Offset @@ -251402,13 +296706,13 @@ func (obj *patternFlowGtpv2TeidMetricTag) Offset() uint32 { // Offset in bits relative to start of corresponding header field // Offset returns a uint32 -func (obj *patternFlowGtpv2TeidMetricTag) HasOffset() bool { +func (obj *patternFlowIcmpEchoSequenceNumberMetricTag) HasOffset() bool { return obj.obj.Offset != nil } // Offset in bits relative to start of corresponding header field -// SetOffset sets the uint32 value in the PatternFlowGtpv2TeidMetricTag object -func (obj *patternFlowGtpv2TeidMetricTag) SetOffset(value uint32) PatternFlowGtpv2TeidMetricTag { +// SetOffset sets the uint32 value in the PatternFlowIcmpEchoSequenceNumberMetricTag object +func (obj *patternFlowIcmpEchoSequenceNumberMetricTag) SetOffset(value uint32) PatternFlowIcmpEchoSequenceNumberMetricTag { obj.obj.Offset = &value return obj @@ -251416,7 +296720,7 @@ func (obj *patternFlowGtpv2TeidMetricTag) SetOffset(value uint32) PatternFlowGtp // Number of bits to track for metrics starting from configured offset of corresponding header field // Length returns a uint32 -func (obj *patternFlowGtpv2TeidMetricTag) Length() uint32 { +func (obj *patternFlowIcmpEchoSequenceNumberMetricTag) Length() uint32 { return *obj.obj.Length @@ -251424,83 +296728,83 @@ func (obj *patternFlowGtpv2TeidMetricTag) Length() uint32 { // Number of bits to track for metrics starting from configured offset of corresponding header field // Length returns a uint32 -func (obj *patternFlowGtpv2TeidMetricTag) HasLength() bool { +func (obj *patternFlowIcmpEchoSequenceNumberMetricTag) HasLength() bool { return obj.obj.Length != nil } // Number of bits to track for metrics starting from configured offset of corresponding header field -// SetLength sets the uint32 value in the PatternFlowGtpv2TeidMetricTag object -func (obj *patternFlowGtpv2TeidMetricTag) SetLength(value uint32) PatternFlowGtpv2TeidMetricTag { +// SetLength sets the uint32 value in the PatternFlowIcmpEchoSequenceNumberMetricTag object +func (obj *patternFlowIcmpEchoSequenceNumberMetricTag) SetLength(value uint32) PatternFlowIcmpEchoSequenceNumberMetricTag { obj.obj.Length = &value return obj } -func (obj *patternFlowGtpv2TeidMetricTag) validateObj(vObj *validation, set_default bool) { +func (obj *patternFlowIcmpEchoSequenceNumberMetricTag) validateObj(vObj *validation, set_default bool) { if set_default { obj.setDefault() } // Name is required if obj.obj.Name == nil { - vObj.validationErrors = append(vObj.validationErrors, "Name is required field on interface PatternFlowGtpv2TeidMetricTag") + vObj.validationErrors = append(vObj.validationErrors, "Name is required field on interface PatternFlowIcmpEchoSequenceNumberMetricTag") } if obj.obj.Offset != nil { - if *obj.obj.Offset > 31 { + if *obj.obj.Offset > 15 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowGtpv2TeidMetricTag.Offset <= 31 but Got %d", *obj.obj.Offset)) + fmt.Sprintf("0 <= PatternFlowIcmpEchoSequenceNumberMetricTag.Offset <= 15 but Got %d", *obj.obj.Offset)) } } if obj.obj.Length != nil { - if *obj.obj.Length < 1 || *obj.obj.Length > 32 { + if *obj.obj.Length < 1 || *obj.obj.Length > 16 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("1 <= PatternFlowGtpv2TeidMetricTag.Length <= 32 but Got %d", *obj.obj.Length)) + fmt.Sprintf("1 <= PatternFlowIcmpEchoSequenceNumberMetricTag.Length <= 16 but Got %d", *obj.obj.Length)) } } } -func (obj *patternFlowGtpv2TeidMetricTag) setDefault() { +func (obj *patternFlowIcmpEchoSequenceNumberMetricTag) setDefault() { if obj.obj.Offset == nil { obj.SetOffset(0) } if obj.obj.Length == nil { - obj.SetLength(32) + obj.SetLength(16) } } -// ***** PatternFlowGtpv2SequenceNumberCounter ***** -type patternFlowGtpv2SequenceNumberCounter struct { +// ***** PatternFlowIcmpv6EchoTypeCounter ***** +type patternFlowIcmpv6EchoTypeCounter struct { validation - obj *otg.PatternFlowGtpv2SequenceNumberCounter + obj *otg.PatternFlowIcmpv6EchoTypeCounter } -func NewPatternFlowGtpv2SequenceNumberCounter() PatternFlowGtpv2SequenceNumberCounter { - obj := patternFlowGtpv2SequenceNumberCounter{obj: &otg.PatternFlowGtpv2SequenceNumberCounter{}} +func NewPatternFlowIcmpv6EchoTypeCounter() PatternFlowIcmpv6EchoTypeCounter { + obj := patternFlowIcmpv6EchoTypeCounter{obj: &otg.PatternFlowIcmpv6EchoTypeCounter{}} obj.setDefault() return &obj } -func (obj *patternFlowGtpv2SequenceNumberCounter) Msg() *otg.PatternFlowGtpv2SequenceNumberCounter { +func (obj *patternFlowIcmpv6EchoTypeCounter) Msg() *otg.PatternFlowIcmpv6EchoTypeCounter { return obj.obj } -func (obj *patternFlowGtpv2SequenceNumberCounter) SetMsg(msg *otg.PatternFlowGtpv2SequenceNumberCounter) PatternFlowGtpv2SequenceNumberCounter { +func (obj *patternFlowIcmpv6EchoTypeCounter) SetMsg(msg *otg.PatternFlowIcmpv6EchoTypeCounter) PatternFlowIcmpv6EchoTypeCounter { proto.Merge(obj.obj, msg) return obj } -func (obj *patternFlowGtpv2SequenceNumberCounter) ToProto() (*otg.PatternFlowGtpv2SequenceNumberCounter, error) { +func (obj *patternFlowIcmpv6EchoTypeCounter) ToProto() (*otg.PatternFlowIcmpv6EchoTypeCounter, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -251508,7 +296812,7 @@ func (obj *patternFlowGtpv2SequenceNumberCounter) ToProto() (*otg.PatternFlowGtp return obj.Msg(), nil } -func (obj *patternFlowGtpv2SequenceNumberCounter) FromProto(msg *otg.PatternFlowGtpv2SequenceNumberCounter) (PatternFlowGtpv2SequenceNumberCounter, error) { +func (obj *patternFlowIcmpv6EchoTypeCounter) FromProto(msg *otg.PatternFlowIcmpv6EchoTypeCounter) (PatternFlowIcmpv6EchoTypeCounter, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -251517,7 +296821,7 @@ func (obj *patternFlowGtpv2SequenceNumberCounter) FromProto(msg *otg.PatternFlow return newObj, nil } -func (obj *patternFlowGtpv2SequenceNumberCounter) ToPbText() (string, error) { +func (obj *patternFlowIcmpv6EchoTypeCounter) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -251529,7 +296833,7 @@ func (obj *patternFlowGtpv2SequenceNumberCounter) ToPbText() (string, error) { return string(protoMarshal), nil } -func (obj *patternFlowGtpv2SequenceNumberCounter) FromPbText(value string) error { +func (obj *patternFlowIcmpv6EchoTypeCounter) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj @@ -251542,7 +296846,7 @@ func (obj *patternFlowGtpv2SequenceNumberCounter) FromPbText(value string) error return retObj } -func (obj *patternFlowGtpv2SequenceNumberCounter) ToYaml() (string, error) { +func (obj *patternFlowIcmpv6EchoTypeCounter) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -251563,7 +296867,7 @@ func (obj *patternFlowGtpv2SequenceNumberCounter) ToYaml() (string, error) { return string(data), nil } -func (obj *patternFlowGtpv2SequenceNumberCounter) FromYaml(value string) error { +func (obj *patternFlowIcmpv6EchoTypeCounter) FromYaml(value string) error { if value == "" { value = "{}" } @@ -251588,7 +296892,7 @@ func (obj *patternFlowGtpv2SequenceNumberCounter) FromYaml(value string) error { return nil } -func (obj *patternFlowGtpv2SequenceNumberCounter) ToJson() (string, error) { +func (obj *patternFlowIcmpv6EchoTypeCounter) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -251606,7 +296910,7 @@ func (obj *patternFlowGtpv2SequenceNumberCounter) ToJson() (string, error) { return string(data), nil } -func (obj *patternFlowGtpv2SequenceNumberCounter) FromJson(value string) error { +func (obj *patternFlowIcmpv6EchoTypeCounter) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -251627,19 +296931,19 @@ func (obj *patternFlowGtpv2SequenceNumberCounter) FromJson(value string) error { return nil } -func (obj *patternFlowGtpv2SequenceNumberCounter) validateToAndFrom() error { +func (obj *patternFlowIcmpv6EchoTypeCounter) validateToAndFrom() error { // emptyVars() obj.validateObj(&obj.validation, true) return obj.validationResult() } -func (obj *patternFlowGtpv2SequenceNumberCounter) Validate() error { +func (obj *patternFlowIcmpv6EchoTypeCounter) Validate() error { // emptyVars() obj.validateObj(&obj.validation, false) return obj.validationResult() } -func (obj *patternFlowGtpv2SequenceNumberCounter) String() string { +func (obj *patternFlowIcmpv6EchoTypeCounter) String() string { str, err := obj.ToYaml() if err != nil { return err.Error() @@ -251647,12 +296951,12 @@ func (obj *patternFlowGtpv2SequenceNumberCounter) String() string { return str } -func (obj *patternFlowGtpv2SequenceNumberCounter) Clone() (PatternFlowGtpv2SequenceNumberCounter, error) { +func (obj *patternFlowIcmpv6EchoTypeCounter) Clone() (PatternFlowIcmpv6EchoTypeCounter, error) { vErr := obj.Validate() if vErr != nil { return nil, vErr } - newObj := NewPatternFlowGtpv2SequenceNumberCounter() + newObj := NewPatternFlowIcmpv6EchoTypeCounter() data, err := proto.Marshal(obj.Msg()) if err != nil { return nil, err @@ -251664,63 +296968,63 @@ func (obj *patternFlowGtpv2SequenceNumberCounter) Clone() (PatternFlowGtpv2Seque return newObj, nil } -// PatternFlowGtpv2SequenceNumberCounter is integer counter pattern -type PatternFlowGtpv2SequenceNumberCounter interface { +// PatternFlowIcmpv6EchoTypeCounter is integer counter pattern +type PatternFlowIcmpv6EchoTypeCounter interface { Validation - // Msg marshals PatternFlowGtpv2SequenceNumberCounter to protobuf object *otg.PatternFlowGtpv2SequenceNumberCounter + // Msg marshals PatternFlowIcmpv6EchoTypeCounter to protobuf object *otg.PatternFlowIcmpv6EchoTypeCounter // and doesn't set defaults - Msg() *otg.PatternFlowGtpv2SequenceNumberCounter - // SetMsg unmarshals PatternFlowGtpv2SequenceNumberCounter from protobuf object *otg.PatternFlowGtpv2SequenceNumberCounter + Msg() *otg.PatternFlowIcmpv6EchoTypeCounter + // SetMsg unmarshals PatternFlowIcmpv6EchoTypeCounter from protobuf object *otg.PatternFlowIcmpv6EchoTypeCounter // and doesn't set defaults - SetMsg(*otg.PatternFlowGtpv2SequenceNumberCounter) PatternFlowGtpv2SequenceNumberCounter - // ToProto marshals PatternFlowGtpv2SequenceNumberCounter to protobuf object *otg.PatternFlowGtpv2SequenceNumberCounter - ToProto() (*otg.PatternFlowGtpv2SequenceNumberCounter, error) - // ToPbText marshals PatternFlowGtpv2SequenceNumberCounter to protobuf text + SetMsg(*otg.PatternFlowIcmpv6EchoTypeCounter) PatternFlowIcmpv6EchoTypeCounter + // ToProto marshals PatternFlowIcmpv6EchoTypeCounter to protobuf object *otg.PatternFlowIcmpv6EchoTypeCounter + ToProto() (*otg.PatternFlowIcmpv6EchoTypeCounter, error) + // ToPbText marshals PatternFlowIcmpv6EchoTypeCounter to protobuf text ToPbText() (string, error) - // ToYaml marshals PatternFlowGtpv2SequenceNumberCounter to YAML text + // ToYaml marshals PatternFlowIcmpv6EchoTypeCounter to YAML text ToYaml() (string, error) - // ToJson marshals PatternFlowGtpv2SequenceNumberCounter to JSON text + // ToJson marshals PatternFlowIcmpv6EchoTypeCounter to JSON text ToJson() (string, error) - // FromProto unmarshals PatternFlowGtpv2SequenceNumberCounter from protobuf object *otg.PatternFlowGtpv2SequenceNumberCounter - FromProto(msg *otg.PatternFlowGtpv2SequenceNumberCounter) (PatternFlowGtpv2SequenceNumberCounter, error) - // FromPbText unmarshals PatternFlowGtpv2SequenceNumberCounter from protobuf text + // FromProto unmarshals PatternFlowIcmpv6EchoTypeCounter from protobuf object *otg.PatternFlowIcmpv6EchoTypeCounter + FromProto(msg *otg.PatternFlowIcmpv6EchoTypeCounter) (PatternFlowIcmpv6EchoTypeCounter, error) + // FromPbText unmarshals PatternFlowIcmpv6EchoTypeCounter from protobuf text FromPbText(value string) error - // FromYaml unmarshals PatternFlowGtpv2SequenceNumberCounter from YAML text + // FromYaml unmarshals PatternFlowIcmpv6EchoTypeCounter from YAML text FromYaml(value string) error - // FromJson unmarshals PatternFlowGtpv2SequenceNumberCounter from JSON text + // FromJson unmarshals PatternFlowIcmpv6EchoTypeCounter from JSON text FromJson(value string) error - // Validate validates PatternFlowGtpv2SequenceNumberCounter + // Validate validates PatternFlowIcmpv6EchoTypeCounter Validate() error // A stringer function String() string // Clones the object - Clone() (PatternFlowGtpv2SequenceNumberCounter, error) + Clone() (PatternFlowIcmpv6EchoTypeCounter, error) validateToAndFrom() error validateObj(vObj *validation, set_default bool) setDefault() - // Start returns uint32, set in PatternFlowGtpv2SequenceNumberCounter. + // Start returns uint32, set in PatternFlowIcmpv6EchoTypeCounter. Start() uint32 - // SetStart assigns uint32 provided by user to PatternFlowGtpv2SequenceNumberCounter - SetStart(value uint32) PatternFlowGtpv2SequenceNumberCounter - // HasStart checks if Start has been set in PatternFlowGtpv2SequenceNumberCounter + // SetStart assigns uint32 provided by user to PatternFlowIcmpv6EchoTypeCounter + SetStart(value uint32) PatternFlowIcmpv6EchoTypeCounter + // HasStart checks if Start has been set in PatternFlowIcmpv6EchoTypeCounter HasStart() bool - // Step returns uint32, set in PatternFlowGtpv2SequenceNumberCounter. + // Step returns uint32, set in PatternFlowIcmpv6EchoTypeCounter. Step() uint32 - // SetStep assigns uint32 provided by user to PatternFlowGtpv2SequenceNumberCounter - SetStep(value uint32) PatternFlowGtpv2SequenceNumberCounter - // HasStep checks if Step has been set in PatternFlowGtpv2SequenceNumberCounter + // SetStep assigns uint32 provided by user to PatternFlowIcmpv6EchoTypeCounter + SetStep(value uint32) PatternFlowIcmpv6EchoTypeCounter + // HasStep checks if Step has been set in PatternFlowIcmpv6EchoTypeCounter HasStep() bool - // Count returns uint32, set in PatternFlowGtpv2SequenceNumberCounter. + // Count returns uint32, set in PatternFlowIcmpv6EchoTypeCounter. Count() uint32 - // SetCount assigns uint32 provided by user to PatternFlowGtpv2SequenceNumberCounter - SetCount(value uint32) PatternFlowGtpv2SequenceNumberCounter - // HasCount checks if Count has been set in PatternFlowGtpv2SequenceNumberCounter + // SetCount assigns uint32 provided by user to PatternFlowIcmpv6EchoTypeCounter + SetCount(value uint32) PatternFlowIcmpv6EchoTypeCounter + // HasCount checks if Count has been set in PatternFlowIcmpv6EchoTypeCounter HasCount() bool } // description is TBD // Start returns a uint32 -func (obj *patternFlowGtpv2SequenceNumberCounter) Start() uint32 { +func (obj *patternFlowIcmpv6EchoTypeCounter) Start() uint32 { return *obj.obj.Start @@ -251728,13 +297032,13 @@ func (obj *patternFlowGtpv2SequenceNumberCounter) Start() uint32 { // description is TBD // Start returns a uint32 -func (obj *patternFlowGtpv2SequenceNumberCounter) HasStart() bool { +func (obj *patternFlowIcmpv6EchoTypeCounter) HasStart() bool { return obj.obj.Start != nil } // description is TBD -// SetStart sets the uint32 value in the PatternFlowGtpv2SequenceNumberCounter object -func (obj *patternFlowGtpv2SequenceNumberCounter) SetStart(value uint32) PatternFlowGtpv2SequenceNumberCounter { +// SetStart sets the uint32 value in the PatternFlowIcmpv6EchoTypeCounter object +func (obj *patternFlowIcmpv6EchoTypeCounter) SetStart(value uint32) PatternFlowIcmpv6EchoTypeCounter { obj.obj.Start = &value return obj @@ -251742,7 +297046,7 @@ func (obj *patternFlowGtpv2SequenceNumberCounter) SetStart(value uint32) Pattern // description is TBD // Step returns a uint32 -func (obj *patternFlowGtpv2SequenceNumberCounter) Step() uint32 { +func (obj *patternFlowIcmpv6EchoTypeCounter) Step() uint32 { return *obj.obj.Step @@ -251750,13 +297054,13 @@ func (obj *patternFlowGtpv2SequenceNumberCounter) Step() uint32 { // description is TBD // Step returns a uint32 -func (obj *patternFlowGtpv2SequenceNumberCounter) HasStep() bool { +func (obj *patternFlowIcmpv6EchoTypeCounter) HasStep() bool { return obj.obj.Step != nil } // description is TBD -// SetStep sets the uint32 value in the PatternFlowGtpv2SequenceNumberCounter object -func (obj *patternFlowGtpv2SequenceNumberCounter) SetStep(value uint32) PatternFlowGtpv2SequenceNumberCounter { +// SetStep sets the uint32 value in the PatternFlowIcmpv6EchoTypeCounter object +func (obj *patternFlowIcmpv6EchoTypeCounter) SetStep(value uint32) PatternFlowIcmpv6EchoTypeCounter { obj.obj.Step = &value return obj @@ -251764,7 +297068,7 @@ func (obj *patternFlowGtpv2SequenceNumberCounter) SetStep(value uint32) PatternF // description is TBD // Count returns a uint32 -func (obj *patternFlowGtpv2SequenceNumberCounter) Count() uint32 { +func (obj *patternFlowIcmpv6EchoTypeCounter) Count() uint32 { return *obj.obj.Count @@ -251772,58 +297076,58 @@ func (obj *patternFlowGtpv2SequenceNumberCounter) Count() uint32 { // description is TBD // Count returns a uint32 -func (obj *patternFlowGtpv2SequenceNumberCounter) HasCount() bool { +func (obj *patternFlowIcmpv6EchoTypeCounter) HasCount() bool { return obj.obj.Count != nil } // description is TBD -// SetCount sets the uint32 value in the PatternFlowGtpv2SequenceNumberCounter object -func (obj *patternFlowGtpv2SequenceNumberCounter) SetCount(value uint32) PatternFlowGtpv2SequenceNumberCounter { +// SetCount sets the uint32 value in the PatternFlowIcmpv6EchoTypeCounter object +func (obj *patternFlowIcmpv6EchoTypeCounter) SetCount(value uint32) PatternFlowIcmpv6EchoTypeCounter { obj.obj.Count = &value return obj } -func (obj *patternFlowGtpv2SequenceNumberCounter) validateObj(vObj *validation, set_default bool) { +func (obj *patternFlowIcmpv6EchoTypeCounter) validateObj(vObj *validation, set_default bool) { if set_default { obj.setDefault() } if obj.obj.Start != nil { - if *obj.obj.Start > 16777215 { + if *obj.obj.Start > 255 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowGtpv2SequenceNumberCounter.Start <= 16777215 but Got %d", *obj.obj.Start)) + fmt.Sprintf("0 <= PatternFlowIcmpv6EchoTypeCounter.Start <= 255 but Got %d", *obj.obj.Start)) } } if obj.obj.Step != nil { - if *obj.obj.Step > 16777215 { + if *obj.obj.Step > 255 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowGtpv2SequenceNumberCounter.Step <= 16777215 but Got %d", *obj.obj.Step)) + fmt.Sprintf("0 <= PatternFlowIcmpv6EchoTypeCounter.Step <= 255 but Got %d", *obj.obj.Step)) } } if obj.obj.Count != nil { - if *obj.obj.Count > 16777215 { + if *obj.obj.Count > 255 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowGtpv2SequenceNumberCounter.Count <= 16777215 but Got %d", *obj.obj.Count)) + fmt.Sprintf("0 <= PatternFlowIcmpv6EchoTypeCounter.Count <= 255 but Got %d", *obj.obj.Count)) } } } -func (obj *patternFlowGtpv2SequenceNumberCounter) setDefault() { +func (obj *patternFlowIcmpv6EchoTypeCounter) setDefault() { if obj.obj.Start == nil { - obj.SetStart(0) + obj.SetStart(128) } if obj.obj.Step == nil { obj.SetStep(1) @@ -251834,29 +297138,29 @@ func (obj *patternFlowGtpv2SequenceNumberCounter) setDefault() { } -// ***** PatternFlowGtpv2SequenceNumberMetricTag ***** -type patternFlowGtpv2SequenceNumberMetricTag struct { +// ***** PatternFlowIcmpv6EchoTypeMetricTag ***** +type patternFlowIcmpv6EchoTypeMetricTag struct { validation - obj *otg.PatternFlowGtpv2SequenceNumberMetricTag + obj *otg.PatternFlowIcmpv6EchoTypeMetricTag } -func NewPatternFlowGtpv2SequenceNumberMetricTag() PatternFlowGtpv2SequenceNumberMetricTag { - obj := patternFlowGtpv2SequenceNumberMetricTag{obj: &otg.PatternFlowGtpv2SequenceNumberMetricTag{}} +func NewPatternFlowIcmpv6EchoTypeMetricTag() PatternFlowIcmpv6EchoTypeMetricTag { + obj := patternFlowIcmpv6EchoTypeMetricTag{obj: &otg.PatternFlowIcmpv6EchoTypeMetricTag{}} obj.setDefault() return &obj } -func (obj *patternFlowGtpv2SequenceNumberMetricTag) Msg() *otg.PatternFlowGtpv2SequenceNumberMetricTag { +func (obj *patternFlowIcmpv6EchoTypeMetricTag) Msg() *otg.PatternFlowIcmpv6EchoTypeMetricTag { return obj.obj } -func (obj *patternFlowGtpv2SequenceNumberMetricTag) SetMsg(msg *otg.PatternFlowGtpv2SequenceNumberMetricTag) PatternFlowGtpv2SequenceNumberMetricTag { +func (obj *patternFlowIcmpv6EchoTypeMetricTag) SetMsg(msg *otg.PatternFlowIcmpv6EchoTypeMetricTag) PatternFlowIcmpv6EchoTypeMetricTag { proto.Merge(obj.obj, msg) return obj } -func (obj *patternFlowGtpv2SequenceNumberMetricTag) ToProto() (*otg.PatternFlowGtpv2SequenceNumberMetricTag, error) { +func (obj *patternFlowIcmpv6EchoTypeMetricTag) ToProto() (*otg.PatternFlowIcmpv6EchoTypeMetricTag, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -251864,7 +297168,7 @@ func (obj *patternFlowGtpv2SequenceNumberMetricTag) ToProto() (*otg.PatternFlowG return obj.Msg(), nil } -func (obj *patternFlowGtpv2SequenceNumberMetricTag) FromProto(msg *otg.PatternFlowGtpv2SequenceNumberMetricTag) (PatternFlowGtpv2SequenceNumberMetricTag, error) { +func (obj *patternFlowIcmpv6EchoTypeMetricTag) FromProto(msg *otg.PatternFlowIcmpv6EchoTypeMetricTag) (PatternFlowIcmpv6EchoTypeMetricTag, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -251873,7 +297177,7 @@ func (obj *patternFlowGtpv2SequenceNumberMetricTag) FromProto(msg *otg.PatternFl return newObj, nil } -func (obj *patternFlowGtpv2SequenceNumberMetricTag) ToPbText() (string, error) { +func (obj *patternFlowIcmpv6EchoTypeMetricTag) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -251885,7 +297189,7 @@ func (obj *patternFlowGtpv2SequenceNumberMetricTag) ToPbText() (string, error) { return string(protoMarshal), nil } -func (obj *patternFlowGtpv2SequenceNumberMetricTag) FromPbText(value string) error { +func (obj *patternFlowIcmpv6EchoTypeMetricTag) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj @@ -251898,7 +297202,7 @@ func (obj *patternFlowGtpv2SequenceNumberMetricTag) FromPbText(value string) err return retObj } -func (obj *patternFlowGtpv2SequenceNumberMetricTag) ToYaml() (string, error) { +func (obj *patternFlowIcmpv6EchoTypeMetricTag) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -251919,7 +297223,7 @@ func (obj *patternFlowGtpv2SequenceNumberMetricTag) ToYaml() (string, error) { return string(data), nil } -func (obj *patternFlowGtpv2SequenceNumberMetricTag) FromYaml(value string) error { +func (obj *patternFlowIcmpv6EchoTypeMetricTag) FromYaml(value string) error { if value == "" { value = "{}" } @@ -251944,7 +297248,7 @@ func (obj *patternFlowGtpv2SequenceNumberMetricTag) FromYaml(value string) error return nil } -func (obj *patternFlowGtpv2SequenceNumberMetricTag) ToJson() (string, error) { +func (obj *patternFlowIcmpv6EchoTypeMetricTag) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -251962,7 +297266,7 @@ func (obj *patternFlowGtpv2SequenceNumberMetricTag) ToJson() (string, error) { return string(data), nil } -func (obj *patternFlowGtpv2SequenceNumberMetricTag) FromJson(value string) error { +func (obj *patternFlowIcmpv6EchoTypeMetricTag) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -251983,19 +297287,19 @@ func (obj *patternFlowGtpv2SequenceNumberMetricTag) FromJson(value string) error return nil } -func (obj *patternFlowGtpv2SequenceNumberMetricTag) validateToAndFrom() error { +func (obj *patternFlowIcmpv6EchoTypeMetricTag) validateToAndFrom() error { // emptyVars() obj.validateObj(&obj.validation, true) return obj.validationResult() } -func (obj *patternFlowGtpv2SequenceNumberMetricTag) Validate() error { +func (obj *patternFlowIcmpv6EchoTypeMetricTag) Validate() error { // emptyVars() obj.validateObj(&obj.validation, false) return obj.validationResult() } -func (obj *patternFlowGtpv2SequenceNumberMetricTag) String() string { +func (obj *patternFlowIcmpv6EchoTypeMetricTag) String() string { str, err := obj.ToYaml() if err != nil { return err.Error() @@ -252003,12 +297307,12 @@ func (obj *patternFlowGtpv2SequenceNumberMetricTag) String() string { return str } -func (obj *patternFlowGtpv2SequenceNumberMetricTag) Clone() (PatternFlowGtpv2SequenceNumberMetricTag, error) { +func (obj *patternFlowIcmpv6EchoTypeMetricTag) Clone() (PatternFlowIcmpv6EchoTypeMetricTag, error) { vErr := obj.Validate() if vErr != nil { return nil, vErr } - newObj := NewPatternFlowGtpv2SequenceNumberMetricTag() + newObj := NewPatternFlowIcmpv6EchoTypeMetricTag() data, err := proto.Marshal(obj.Msg()) if err != nil { return nil, err @@ -252020,69 +297324,69 @@ func (obj *patternFlowGtpv2SequenceNumberMetricTag) Clone() (PatternFlowGtpv2Seq return newObj, nil } -// PatternFlowGtpv2SequenceNumberMetricTag is metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. -type PatternFlowGtpv2SequenceNumberMetricTag interface { +// PatternFlowIcmpv6EchoTypeMetricTag is metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. +type PatternFlowIcmpv6EchoTypeMetricTag interface { Validation - // Msg marshals PatternFlowGtpv2SequenceNumberMetricTag to protobuf object *otg.PatternFlowGtpv2SequenceNumberMetricTag + // Msg marshals PatternFlowIcmpv6EchoTypeMetricTag to protobuf object *otg.PatternFlowIcmpv6EchoTypeMetricTag // and doesn't set defaults - Msg() *otg.PatternFlowGtpv2SequenceNumberMetricTag - // SetMsg unmarshals PatternFlowGtpv2SequenceNumberMetricTag from protobuf object *otg.PatternFlowGtpv2SequenceNumberMetricTag + Msg() *otg.PatternFlowIcmpv6EchoTypeMetricTag + // SetMsg unmarshals PatternFlowIcmpv6EchoTypeMetricTag from protobuf object *otg.PatternFlowIcmpv6EchoTypeMetricTag // and doesn't set defaults - SetMsg(*otg.PatternFlowGtpv2SequenceNumberMetricTag) PatternFlowGtpv2SequenceNumberMetricTag - // ToProto marshals PatternFlowGtpv2SequenceNumberMetricTag to protobuf object *otg.PatternFlowGtpv2SequenceNumberMetricTag - ToProto() (*otg.PatternFlowGtpv2SequenceNumberMetricTag, error) - // ToPbText marshals PatternFlowGtpv2SequenceNumberMetricTag to protobuf text + SetMsg(*otg.PatternFlowIcmpv6EchoTypeMetricTag) PatternFlowIcmpv6EchoTypeMetricTag + // ToProto marshals PatternFlowIcmpv6EchoTypeMetricTag to protobuf object *otg.PatternFlowIcmpv6EchoTypeMetricTag + ToProto() (*otg.PatternFlowIcmpv6EchoTypeMetricTag, error) + // ToPbText marshals PatternFlowIcmpv6EchoTypeMetricTag to protobuf text ToPbText() (string, error) - // ToYaml marshals PatternFlowGtpv2SequenceNumberMetricTag to YAML text + // ToYaml marshals PatternFlowIcmpv6EchoTypeMetricTag to YAML text ToYaml() (string, error) - // ToJson marshals PatternFlowGtpv2SequenceNumberMetricTag to JSON text + // ToJson marshals PatternFlowIcmpv6EchoTypeMetricTag to JSON text ToJson() (string, error) - // FromProto unmarshals PatternFlowGtpv2SequenceNumberMetricTag from protobuf object *otg.PatternFlowGtpv2SequenceNumberMetricTag - FromProto(msg *otg.PatternFlowGtpv2SequenceNumberMetricTag) (PatternFlowGtpv2SequenceNumberMetricTag, error) - // FromPbText unmarshals PatternFlowGtpv2SequenceNumberMetricTag from protobuf text + // FromProto unmarshals PatternFlowIcmpv6EchoTypeMetricTag from protobuf object *otg.PatternFlowIcmpv6EchoTypeMetricTag + FromProto(msg *otg.PatternFlowIcmpv6EchoTypeMetricTag) (PatternFlowIcmpv6EchoTypeMetricTag, error) + // FromPbText unmarshals PatternFlowIcmpv6EchoTypeMetricTag from protobuf text FromPbText(value string) error - // FromYaml unmarshals PatternFlowGtpv2SequenceNumberMetricTag from YAML text + // FromYaml unmarshals PatternFlowIcmpv6EchoTypeMetricTag from YAML text FromYaml(value string) error - // FromJson unmarshals PatternFlowGtpv2SequenceNumberMetricTag from JSON text + // FromJson unmarshals PatternFlowIcmpv6EchoTypeMetricTag from JSON text FromJson(value string) error - // Validate validates PatternFlowGtpv2SequenceNumberMetricTag + // Validate validates PatternFlowIcmpv6EchoTypeMetricTag Validate() error // A stringer function String() string // Clones the object - Clone() (PatternFlowGtpv2SequenceNumberMetricTag, error) + Clone() (PatternFlowIcmpv6EchoTypeMetricTag, error) validateToAndFrom() error validateObj(vObj *validation, set_default bool) setDefault() - // Name returns string, set in PatternFlowGtpv2SequenceNumberMetricTag. + // Name returns string, set in PatternFlowIcmpv6EchoTypeMetricTag. Name() string - // SetName assigns string provided by user to PatternFlowGtpv2SequenceNumberMetricTag - SetName(value string) PatternFlowGtpv2SequenceNumberMetricTag - // Offset returns uint32, set in PatternFlowGtpv2SequenceNumberMetricTag. + // SetName assigns string provided by user to PatternFlowIcmpv6EchoTypeMetricTag + SetName(value string) PatternFlowIcmpv6EchoTypeMetricTag + // Offset returns uint32, set in PatternFlowIcmpv6EchoTypeMetricTag. Offset() uint32 - // SetOffset assigns uint32 provided by user to PatternFlowGtpv2SequenceNumberMetricTag - SetOffset(value uint32) PatternFlowGtpv2SequenceNumberMetricTag - // HasOffset checks if Offset has been set in PatternFlowGtpv2SequenceNumberMetricTag + // SetOffset assigns uint32 provided by user to PatternFlowIcmpv6EchoTypeMetricTag + SetOffset(value uint32) PatternFlowIcmpv6EchoTypeMetricTag + // HasOffset checks if Offset has been set in PatternFlowIcmpv6EchoTypeMetricTag HasOffset() bool - // Length returns uint32, set in PatternFlowGtpv2SequenceNumberMetricTag. + // Length returns uint32, set in PatternFlowIcmpv6EchoTypeMetricTag. Length() uint32 - // SetLength assigns uint32 provided by user to PatternFlowGtpv2SequenceNumberMetricTag - SetLength(value uint32) PatternFlowGtpv2SequenceNumberMetricTag - // HasLength checks if Length has been set in PatternFlowGtpv2SequenceNumberMetricTag + // SetLength assigns uint32 provided by user to PatternFlowIcmpv6EchoTypeMetricTag + SetLength(value uint32) PatternFlowIcmpv6EchoTypeMetricTag + // HasLength checks if Length has been set in PatternFlowIcmpv6EchoTypeMetricTag HasLength() bool } // Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field // Name returns a string -func (obj *patternFlowGtpv2SequenceNumberMetricTag) Name() string { +func (obj *patternFlowIcmpv6EchoTypeMetricTag) Name() string { return *obj.obj.Name } // Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field -// SetName sets the string value in the PatternFlowGtpv2SequenceNumberMetricTag object -func (obj *patternFlowGtpv2SequenceNumberMetricTag) SetName(value string) PatternFlowGtpv2SequenceNumberMetricTag { +// SetName sets the string value in the PatternFlowIcmpv6EchoTypeMetricTag object +func (obj *patternFlowIcmpv6EchoTypeMetricTag) SetName(value string) PatternFlowIcmpv6EchoTypeMetricTag { obj.obj.Name = &value return obj @@ -252090,7 +297394,7 @@ func (obj *patternFlowGtpv2SequenceNumberMetricTag) SetName(value string) Patter // Offset in bits relative to start of corresponding header field // Offset returns a uint32 -func (obj *patternFlowGtpv2SequenceNumberMetricTag) Offset() uint32 { +func (obj *patternFlowIcmpv6EchoTypeMetricTag) Offset() uint32 { return *obj.obj.Offset @@ -252098,13 +297402,13 @@ func (obj *patternFlowGtpv2SequenceNumberMetricTag) Offset() uint32 { // Offset in bits relative to start of corresponding header field // Offset returns a uint32 -func (obj *patternFlowGtpv2SequenceNumberMetricTag) HasOffset() bool { +func (obj *patternFlowIcmpv6EchoTypeMetricTag) HasOffset() bool { return obj.obj.Offset != nil } // Offset in bits relative to start of corresponding header field -// SetOffset sets the uint32 value in the PatternFlowGtpv2SequenceNumberMetricTag object -func (obj *patternFlowGtpv2SequenceNumberMetricTag) SetOffset(value uint32) PatternFlowGtpv2SequenceNumberMetricTag { +// SetOffset sets the uint32 value in the PatternFlowIcmpv6EchoTypeMetricTag object +func (obj *patternFlowIcmpv6EchoTypeMetricTag) SetOffset(value uint32) PatternFlowIcmpv6EchoTypeMetricTag { obj.obj.Offset = &value return obj @@ -252112,7 +297416,7 @@ func (obj *patternFlowGtpv2SequenceNumberMetricTag) SetOffset(value uint32) Patt // Number of bits to track for metrics starting from configured offset of corresponding header field // Length returns a uint32 -func (obj *patternFlowGtpv2SequenceNumberMetricTag) Length() uint32 { +func (obj *patternFlowIcmpv6EchoTypeMetricTag) Length() uint32 { return *obj.obj.Length @@ -252120,83 +297424,83 @@ func (obj *patternFlowGtpv2SequenceNumberMetricTag) Length() uint32 { // Number of bits to track for metrics starting from configured offset of corresponding header field // Length returns a uint32 -func (obj *patternFlowGtpv2SequenceNumberMetricTag) HasLength() bool { +func (obj *patternFlowIcmpv6EchoTypeMetricTag) HasLength() bool { return obj.obj.Length != nil } // Number of bits to track for metrics starting from configured offset of corresponding header field -// SetLength sets the uint32 value in the PatternFlowGtpv2SequenceNumberMetricTag object -func (obj *patternFlowGtpv2SequenceNumberMetricTag) SetLength(value uint32) PatternFlowGtpv2SequenceNumberMetricTag { +// SetLength sets the uint32 value in the PatternFlowIcmpv6EchoTypeMetricTag object +func (obj *patternFlowIcmpv6EchoTypeMetricTag) SetLength(value uint32) PatternFlowIcmpv6EchoTypeMetricTag { obj.obj.Length = &value return obj } -func (obj *patternFlowGtpv2SequenceNumberMetricTag) validateObj(vObj *validation, set_default bool) { +func (obj *patternFlowIcmpv6EchoTypeMetricTag) validateObj(vObj *validation, set_default bool) { if set_default { obj.setDefault() } // Name is required if obj.obj.Name == nil { - vObj.validationErrors = append(vObj.validationErrors, "Name is required field on interface PatternFlowGtpv2SequenceNumberMetricTag") + vObj.validationErrors = append(vObj.validationErrors, "Name is required field on interface PatternFlowIcmpv6EchoTypeMetricTag") } if obj.obj.Offset != nil { - if *obj.obj.Offset > 23 { + if *obj.obj.Offset > 7 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowGtpv2SequenceNumberMetricTag.Offset <= 23 but Got %d", *obj.obj.Offset)) + fmt.Sprintf("0 <= PatternFlowIcmpv6EchoTypeMetricTag.Offset <= 7 but Got %d", *obj.obj.Offset)) } } if obj.obj.Length != nil { - if *obj.obj.Length < 1 || *obj.obj.Length > 24 { + if *obj.obj.Length < 1 || *obj.obj.Length > 8 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("1 <= PatternFlowGtpv2SequenceNumberMetricTag.Length <= 24 but Got %d", *obj.obj.Length)) + fmt.Sprintf("1 <= PatternFlowIcmpv6EchoTypeMetricTag.Length <= 8 but Got %d", *obj.obj.Length)) } } } -func (obj *patternFlowGtpv2SequenceNumberMetricTag) setDefault() { +func (obj *patternFlowIcmpv6EchoTypeMetricTag) setDefault() { if obj.obj.Offset == nil { obj.SetOffset(0) } if obj.obj.Length == nil { - obj.SetLength(24) + obj.SetLength(8) } } -// ***** PatternFlowGtpv2Spare2Counter ***** -type patternFlowGtpv2Spare2Counter struct { +// ***** PatternFlowIcmpv6EchoCodeCounter ***** +type patternFlowIcmpv6EchoCodeCounter struct { validation - obj *otg.PatternFlowGtpv2Spare2Counter + obj *otg.PatternFlowIcmpv6EchoCodeCounter } -func NewPatternFlowGtpv2Spare2Counter() PatternFlowGtpv2Spare2Counter { - obj := patternFlowGtpv2Spare2Counter{obj: &otg.PatternFlowGtpv2Spare2Counter{}} +func NewPatternFlowIcmpv6EchoCodeCounter() PatternFlowIcmpv6EchoCodeCounter { + obj := patternFlowIcmpv6EchoCodeCounter{obj: &otg.PatternFlowIcmpv6EchoCodeCounter{}} obj.setDefault() return &obj } -func (obj *patternFlowGtpv2Spare2Counter) Msg() *otg.PatternFlowGtpv2Spare2Counter { +func (obj *patternFlowIcmpv6EchoCodeCounter) Msg() *otg.PatternFlowIcmpv6EchoCodeCounter { return obj.obj } -func (obj *patternFlowGtpv2Spare2Counter) SetMsg(msg *otg.PatternFlowGtpv2Spare2Counter) PatternFlowGtpv2Spare2Counter { +func (obj *patternFlowIcmpv6EchoCodeCounter) SetMsg(msg *otg.PatternFlowIcmpv6EchoCodeCounter) PatternFlowIcmpv6EchoCodeCounter { proto.Merge(obj.obj, msg) return obj } -func (obj *patternFlowGtpv2Spare2Counter) ToProto() (*otg.PatternFlowGtpv2Spare2Counter, error) { +func (obj *patternFlowIcmpv6EchoCodeCounter) ToProto() (*otg.PatternFlowIcmpv6EchoCodeCounter, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -252204,7 +297508,7 @@ func (obj *patternFlowGtpv2Spare2Counter) ToProto() (*otg.PatternFlowGtpv2Spare2 return obj.Msg(), nil } -func (obj *patternFlowGtpv2Spare2Counter) FromProto(msg *otg.PatternFlowGtpv2Spare2Counter) (PatternFlowGtpv2Spare2Counter, error) { +func (obj *patternFlowIcmpv6EchoCodeCounter) FromProto(msg *otg.PatternFlowIcmpv6EchoCodeCounter) (PatternFlowIcmpv6EchoCodeCounter, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -252213,7 +297517,7 @@ func (obj *patternFlowGtpv2Spare2Counter) FromProto(msg *otg.PatternFlowGtpv2Spa return newObj, nil } -func (obj *patternFlowGtpv2Spare2Counter) ToPbText() (string, error) { +func (obj *patternFlowIcmpv6EchoCodeCounter) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -252225,7 +297529,7 @@ func (obj *patternFlowGtpv2Spare2Counter) ToPbText() (string, error) { return string(protoMarshal), nil } -func (obj *patternFlowGtpv2Spare2Counter) FromPbText(value string) error { +func (obj *patternFlowIcmpv6EchoCodeCounter) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj @@ -252238,7 +297542,7 @@ func (obj *patternFlowGtpv2Spare2Counter) FromPbText(value string) error { return retObj } -func (obj *patternFlowGtpv2Spare2Counter) ToYaml() (string, error) { +func (obj *patternFlowIcmpv6EchoCodeCounter) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -252259,7 +297563,7 @@ func (obj *patternFlowGtpv2Spare2Counter) ToYaml() (string, error) { return string(data), nil } -func (obj *patternFlowGtpv2Spare2Counter) FromYaml(value string) error { +func (obj *patternFlowIcmpv6EchoCodeCounter) FromYaml(value string) error { if value == "" { value = "{}" } @@ -252284,7 +297588,7 @@ func (obj *patternFlowGtpv2Spare2Counter) FromYaml(value string) error { return nil } -func (obj *patternFlowGtpv2Spare2Counter) ToJson() (string, error) { +func (obj *patternFlowIcmpv6EchoCodeCounter) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -252302,7 +297606,7 @@ func (obj *patternFlowGtpv2Spare2Counter) ToJson() (string, error) { return string(data), nil } -func (obj *patternFlowGtpv2Spare2Counter) FromJson(value string) error { +func (obj *patternFlowIcmpv6EchoCodeCounter) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -252323,19 +297627,19 @@ func (obj *patternFlowGtpv2Spare2Counter) FromJson(value string) error { return nil } -func (obj *patternFlowGtpv2Spare2Counter) validateToAndFrom() error { +func (obj *patternFlowIcmpv6EchoCodeCounter) validateToAndFrom() error { // emptyVars() obj.validateObj(&obj.validation, true) return obj.validationResult() } -func (obj *patternFlowGtpv2Spare2Counter) Validate() error { +func (obj *patternFlowIcmpv6EchoCodeCounter) Validate() error { // emptyVars() obj.validateObj(&obj.validation, false) return obj.validationResult() } -func (obj *patternFlowGtpv2Spare2Counter) String() string { +func (obj *patternFlowIcmpv6EchoCodeCounter) String() string { str, err := obj.ToYaml() if err != nil { return err.Error() @@ -252343,12 +297647,12 @@ func (obj *patternFlowGtpv2Spare2Counter) String() string { return str } -func (obj *patternFlowGtpv2Spare2Counter) Clone() (PatternFlowGtpv2Spare2Counter, error) { +func (obj *patternFlowIcmpv6EchoCodeCounter) Clone() (PatternFlowIcmpv6EchoCodeCounter, error) { vErr := obj.Validate() if vErr != nil { return nil, vErr } - newObj := NewPatternFlowGtpv2Spare2Counter() + newObj := NewPatternFlowIcmpv6EchoCodeCounter() data, err := proto.Marshal(obj.Msg()) if err != nil { return nil, err @@ -252360,63 +297664,63 @@ func (obj *patternFlowGtpv2Spare2Counter) Clone() (PatternFlowGtpv2Spare2Counter return newObj, nil } -// PatternFlowGtpv2Spare2Counter is integer counter pattern -type PatternFlowGtpv2Spare2Counter interface { +// PatternFlowIcmpv6EchoCodeCounter is integer counter pattern +type PatternFlowIcmpv6EchoCodeCounter interface { Validation - // Msg marshals PatternFlowGtpv2Spare2Counter to protobuf object *otg.PatternFlowGtpv2Spare2Counter + // Msg marshals PatternFlowIcmpv6EchoCodeCounter to protobuf object *otg.PatternFlowIcmpv6EchoCodeCounter // and doesn't set defaults - Msg() *otg.PatternFlowGtpv2Spare2Counter - // SetMsg unmarshals PatternFlowGtpv2Spare2Counter from protobuf object *otg.PatternFlowGtpv2Spare2Counter + Msg() *otg.PatternFlowIcmpv6EchoCodeCounter + // SetMsg unmarshals PatternFlowIcmpv6EchoCodeCounter from protobuf object *otg.PatternFlowIcmpv6EchoCodeCounter // and doesn't set defaults - SetMsg(*otg.PatternFlowGtpv2Spare2Counter) PatternFlowGtpv2Spare2Counter - // ToProto marshals PatternFlowGtpv2Spare2Counter to protobuf object *otg.PatternFlowGtpv2Spare2Counter - ToProto() (*otg.PatternFlowGtpv2Spare2Counter, error) - // ToPbText marshals PatternFlowGtpv2Spare2Counter to protobuf text + SetMsg(*otg.PatternFlowIcmpv6EchoCodeCounter) PatternFlowIcmpv6EchoCodeCounter + // ToProto marshals PatternFlowIcmpv6EchoCodeCounter to protobuf object *otg.PatternFlowIcmpv6EchoCodeCounter + ToProto() (*otg.PatternFlowIcmpv6EchoCodeCounter, error) + // ToPbText marshals PatternFlowIcmpv6EchoCodeCounter to protobuf text ToPbText() (string, error) - // ToYaml marshals PatternFlowGtpv2Spare2Counter to YAML text + // ToYaml marshals PatternFlowIcmpv6EchoCodeCounter to YAML text ToYaml() (string, error) - // ToJson marshals PatternFlowGtpv2Spare2Counter to JSON text + // ToJson marshals PatternFlowIcmpv6EchoCodeCounter to JSON text ToJson() (string, error) - // FromProto unmarshals PatternFlowGtpv2Spare2Counter from protobuf object *otg.PatternFlowGtpv2Spare2Counter - FromProto(msg *otg.PatternFlowGtpv2Spare2Counter) (PatternFlowGtpv2Spare2Counter, error) - // FromPbText unmarshals PatternFlowGtpv2Spare2Counter from protobuf text + // FromProto unmarshals PatternFlowIcmpv6EchoCodeCounter from protobuf object *otg.PatternFlowIcmpv6EchoCodeCounter + FromProto(msg *otg.PatternFlowIcmpv6EchoCodeCounter) (PatternFlowIcmpv6EchoCodeCounter, error) + // FromPbText unmarshals PatternFlowIcmpv6EchoCodeCounter from protobuf text FromPbText(value string) error - // FromYaml unmarshals PatternFlowGtpv2Spare2Counter from YAML text + // FromYaml unmarshals PatternFlowIcmpv6EchoCodeCounter from YAML text FromYaml(value string) error - // FromJson unmarshals PatternFlowGtpv2Spare2Counter from JSON text + // FromJson unmarshals PatternFlowIcmpv6EchoCodeCounter from JSON text FromJson(value string) error - // Validate validates PatternFlowGtpv2Spare2Counter + // Validate validates PatternFlowIcmpv6EchoCodeCounter Validate() error // A stringer function String() string // Clones the object - Clone() (PatternFlowGtpv2Spare2Counter, error) + Clone() (PatternFlowIcmpv6EchoCodeCounter, error) validateToAndFrom() error validateObj(vObj *validation, set_default bool) setDefault() - // Start returns uint32, set in PatternFlowGtpv2Spare2Counter. + // Start returns uint32, set in PatternFlowIcmpv6EchoCodeCounter. Start() uint32 - // SetStart assigns uint32 provided by user to PatternFlowGtpv2Spare2Counter - SetStart(value uint32) PatternFlowGtpv2Spare2Counter - // HasStart checks if Start has been set in PatternFlowGtpv2Spare2Counter + // SetStart assigns uint32 provided by user to PatternFlowIcmpv6EchoCodeCounter + SetStart(value uint32) PatternFlowIcmpv6EchoCodeCounter + // HasStart checks if Start has been set in PatternFlowIcmpv6EchoCodeCounter HasStart() bool - // Step returns uint32, set in PatternFlowGtpv2Spare2Counter. + // Step returns uint32, set in PatternFlowIcmpv6EchoCodeCounter. Step() uint32 - // SetStep assigns uint32 provided by user to PatternFlowGtpv2Spare2Counter - SetStep(value uint32) PatternFlowGtpv2Spare2Counter - // HasStep checks if Step has been set in PatternFlowGtpv2Spare2Counter + // SetStep assigns uint32 provided by user to PatternFlowIcmpv6EchoCodeCounter + SetStep(value uint32) PatternFlowIcmpv6EchoCodeCounter + // HasStep checks if Step has been set in PatternFlowIcmpv6EchoCodeCounter HasStep() bool - // Count returns uint32, set in PatternFlowGtpv2Spare2Counter. + // Count returns uint32, set in PatternFlowIcmpv6EchoCodeCounter. Count() uint32 - // SetCount assigns uint32 provided by user to PatternFlowGtpv2Spare2Counter - SetCount(value uint32) PatternFlowGtpv2Spare2Counter - // HasCount checks if Count has been set in PatternFlowGtpv2Spare2Counter + // SetCount assigns uint32 provided by user to PatternFlowIcmpv6EchoCodeCounter + SetCount(value uint32) PatternFlowIcmpv6EchoCodeCounter + // HasCount checks if Count has been set in PatternFlowIcmpv6EchoCodeCounter HasCount() bool } // description is TBD // Start returns a uint32 -func (obj *patternFlowGtpv2Spare2Counter) Start() uint32 { +func (obj *patternFlowIcmpv6EchoCodeCounter) Start() uint32 { return *obj.obj.Start @@ -252424,13 +297728,13 @@ func (obj *patternFlowGtpv2Spare2Counter) Start() uint32 { // description is TBD // Start returns a uint32 -func (obj *patternFlowGtpv2Spare2Counter) HasStart() bool { +func (obj *patternFlowIcmpv6EchoCodeCounter) HasStart() bool { return obj.obj.Start != nil } // description is TBD -// SetStart sets the uint32 value in the PatternFlowGtpv2Spare2Counter object -func (obj *patternFlowGtpv2Spare2Counter) SetStart(value uint32) PatternFlowGtpv2Spare2Counter { +// SetStart sets the uint32 value in the PatternFlowIcmpv6EchoCodeCounter object +func (obj *patternFlowIcmpv6EchoCodeCounter) SetStart(value uint32) PatternFlowIcmpv6EchoCodeCounter { obj.obj.Start = &value return obj @@ -252438,7 +297742,7 @@ func (obj *patternFlowGtpv2Spare2Counter) SetStart(value uint32) PatternFlowGtpv // description is TBD // Step returns a uint32 -func (obj *patternFlowGtpv2Spare2Counter) Step() uint32 { +func (obj *patternFlowIcmpv6EchoCodeCounter) Step() uint32 { return *obj.obj.Step @@ -252446,13 +297750,13 @@ func (obj *patternFlowGtpv2Spare2Counter) Step() uint32 { // description is TBD // Step returns a uint32 -func (obj *patternFlowGtpv2Spare2Counter) HasStep() bool { +func (obj *patternFlowIcmpv6EchoCodeCounter) HasStep() bool { return obj.obj.Step != nil } // description is TBD -// SetStep sets the uint32 value in the PatternFlowGtpv2Spare2Counter object -func (obj *patternFlowGtpv2Spare2Counter) SetStep(value uint32) PatternFlowGtpv2Spare2Counter { +// SetStep sets the uint32 value in the PatternFlowIcmpv6EchoCodeCounter object +func (obj *patternFlowIcmpv6EchoCodeCounter) SetStep(value uint32) PatternFlowIcmpv6EchoCodeCounter { obj.obj.Step = &value return obj @@ -252460,7 +297764,7 @@ func (obj *patternFlowGtpv2Spare2Counter) SetStep(value uint32) PatternFlowGtpv2 // description is TBD // Count returns a uint32 -func (obj *patternFlowGtpv2Spare2Counter) Count() uint32 { +func (obj *patternFlowIcmpv6EchoCodeCounter) Count() uint32 { return *obj.obj.Count @@ -252468,19 +297772,19 @@ func (obj *patternFlowGtpv2Spare2Counter) Count() uint32 { // description is TBD // Count returns a uint32 -func (obj *patternFlowGtpv2Spare2Counter) HasCount() bool { +func (obj *patternFlowIcmpv6EchoCodeCounter) HasCount() bool { return obj.obj.Count != nil } // description is TBD -// SetCount sets the uint32 value in the PatternFlowGtpv2Spare2Counter object -func (obj *patternFlowGtpv2Spare2Counter) SetCount(value uint32) PatternFlowGtpv2Spare2Counter { +// SetCount sets the uint32 value in the PatternFlowIcmpv6EchoCodeCounter object +func (obj *patternFlowIcmpv6EchoCodeCounter) SetCount(value uint32) PatternFlowIcmpv6EchoCodeCounter { obj.obj.Count = &value return obj } -func (obj *patternFlowGtpv2Spare2Counter) validateObj(vObj *validation, set_default bool) { +func (obj *patternFlowIcmpv6EchoCodeCounter) validateObj(vObj *validation, set_default bool) { if set_default { obj.setDefault() } @@ -252490,7 +297794,7 @@ func (obj *patternFlowGtpv2Spare2Counter) validateObj(vObj *validation, set_defa if *obj.obj.Start > 255 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowGtpv2Spare2Counter.Start <= 255 but Got %d", *obj.obj.Start)) + fmt.Sprintf("0 <= PatternFlowIcmpv6EchoCodeCounter.Start <= 255 but Got %d", *obj.obj.Start)) } } @@ -252500,7 +297804,7 @@ func (obj *patternFlowGtpv2Spare2Counter) validateObj(vObj *validation, set_defa if *obj.obj.Step > 255 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowGtpv2Spare2Counter.Step <= 255 but Got %d", *obj.obj.Step)) + fmt.Sprintf("0 <= PatternFlowIcmpv6EchoCodeCounter.Step <= 255 but Got %d", *obj.obj.Step)) } } @@ -252510,14 +297814,14 @@ func (obj *patternFlowGtpv2Spare2Counter) validateObj(vObj *validation, set_defa if *obj.obj.Count > 255 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowGtpv2Spare2Counter.Count <= 255 but Got %d", *obj.obj.Count)) + fmt.Sprintf("0 <= PatternFlowIcmpv6EchoCodeCounter.Count <= 255 but Got %d", *obj.obj.Count)) } } } -func (obj *patternFlowGtpv2Spare2Counter) setDefault() { +func (obj *patternFlowIcmpv6EchoCodeCounter) setDefault() { if obj.obj.Start == nil { obj.SetStart(0) } @@ -252530,29 +297834,29 @@ func (obj *patternFlowGtpv2Spare2Counter) setDefault() { } -// ***** PatternFlowGtpv2Spare2MetricTag ***** -type patternFlowGtpv2Spare2MetricTag struct { +// ***** PatternFlowIcmpv6EchoCodeMetricTag ***** +type patternFlowIcmpv6EchoCodeMetricTag struct { validation - obj *otg.PatternFlowGtpv2Spare2MetricTag + obj *otg.PatternFlowIcmpv6EchoCodeMetricTag } -func NewPatternFlowGtpv2Spare2MetricTag() PatternFlowGtpv2Spare2MetricTag { - obj := patternFlowGtpv2Spare2MetricTag{obj: &otg.PatternFlowGtpv2Spare2MetricTag{}} +func NewPatternFlowIcmpv6EchoCodeMetricTag() PatternFlowIcmpv6EchoCodeMetricTag { + obj := patternFlowIcmpv6EchoCodeMetricTag{obj: &otg.PatternFlowIcmpv6EchoCodeMetricTag{}} obj.setDefault() return &obj } -func (obj *patternFlowGtpv2Spare2MetricTag) Msg() *otg.PatternFlowGtpv2Spare2MetricTag { +func (obj *patternFlowIcmpv6EchoCodeMetricTag) Msg() *otg.PatternFlowIcmpv6EchoCodeMetricTag { return obj.obj } -func (obj *patternFlowGtpv2Spare2MetricTag) SetMsg(msg *otg.PatternFlowGtpv2Spare2MetricTag) PatternFlowGtpv2Spare2MetricTag { +func (obj *patternFlowIcmpv6EchoCodeMetricTag) SetMsg(msg *otg.PatternFlowIcmpv6EchoCodeMetricTag) PatternFlowIcmpv6EchoCodeMetricTag { proto.Merge(obj.obj, msg) return obj } -func (obj *patternFlowGtpv2Spare2MetricTag) ToProto() (*otg.PatternFlowGtpv2Spare2MetricTag, error) { +func (obj *patternFlowIcmpv6EchoCodeMetricTag) ToProto() (*otg.PatternFlowIcmpv6EchoCodeMetricTag, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -252560,7 +297864,7 @@ func (obj *patternFlowGtpv2Spare2MetricTag) ToProto() (*otg.PatternFlowGtpv2Spar return obj.Msg(), nil } -func (obj *patternFlowGtpv2Spare2MetricTag) FromProto(msg *otg.PatternFlowGtpv2Spare2MetricTag) (PatternFlowGtpv2Spare2MetricTag, error) { +func (obj *patternFlowIcmpv6EchoCodeMetricTag) FromProto(msg *otg.PatternFlowIcmpv6EchoCodeMetricTag) (PatternFlowIcmpv6EchoCodeMetricTag, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -252569,7 +297873,7 @@ func (obj *patternFlowGtpv2Spare2MetricTag) FromProto(msg *otg.PatternFlowGtpv2S return newObj, nil } -func (obj *patternFlowGtpv2Spare2MetricTag) ToPbText() (string, error) { +func (obj *patternFlowIcmpv6EchoCodeMetricTag) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -252581,7 +297885,7 @@ func (obj *patternFlowGtpv2Spare2MetricTag) ToPbText() (string, error) { return string(protoMarshal), nil } -func (obj *patternFlowGtpv2Spare2MetricTag) FromPbText(value string) error { +func (obj *patternFlowIcmpv6EchoCodeMetricTag) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj @@ -252594,7 +297898,7 @@ func (obj *patternFlowGtpv2Spare2MetricTag) FromPbText(value string) error { return retObj } -func (obj *patternFlowGtpv2Spare2MetricTag) ToYaml() (string, error) { +func (obj *patternFlowIcmpv6EchoCodeMetricTag) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -252615,7 +297919,7 @@ func (obj *patternFlowGtpv2Spare2MetricTag) ToYaml() (string, error) { return string(data), nil } -func (obj *patternFlowGtpv2Spare2MetricTag) FromYaml(value string) error { +func (obj *patternFlowIcmpv6EchoCodeMetricTag) FromYaml(value string) error { if value == "" { value = "{}" } @@ -252640,7 +297944,7 @@ func (obj *patternFlowGtpv2Spare2MetricTag) FromYaml(value string) error { return nil } -func (obj *patternFlowGtpv2Spare2MetricTag) ToJson() (string, error) { +func (obj *patternFlowIcmpv6EchoCodeMetricTag) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -252658,7 +297962,7 @@ func (obj *patternFlowGtpv2Spare2MetricTag) ToJson() (string, error) { return string(data), nil } -func (obj *patternFlowGtpv2Spare2MetricTag) FromJson(value string) error { +func (obj *patternFlowIcmpv6EchoCodeMetricTag) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -252679,19 +297983,19 @@ func (obj *patternFlowGtpv2Spare2MetricTag) FromJson(value string) error { return nil } -func (obj *patternFlowGtpv2Spare2MetricTag) validateToAndFrom() error { +func (obj *patternFlowIcmpv6EchoCodeMetricTag) validateToAndFrom() error { // emptyVars() obj.validateObj(&obj.validation, true) return obj.validationResult() } -func (obj *patternFlowGtpv2Spare2MetricTag) Validate() error { +func (obj *patternFlowIcmpv6EchoCodeMetricTag) Validate() error { // emptyVars() obj.validateObj(&obj.validation, false) return obj.validationResult() } -func (obj *patternFlowGtpv2Spare2MetricTag) String() string { +func (obj *patternFlowIcmpv6EchoCodeMetricTag) String() string { str, err := obj.ToYaml() if err != nil { return err.Error() @@ -252699,12 +298003,12 @@ func (obj *patternFlowGtpv2Spare2MetricTag) String() string { return str } -func (obj *patternFlowGtpv2Spare2MetricTag) Clone() (PatternFlowGtpv2Spare2MetricTag, error) { +func (obj *patternFlowIcmpv6EchoCodeMetricTag) Clone() (PatternFlowIcmpv6EchoCodeMetricTag, error) { vErr := obj.Validate() if vErr != nil { return nil, vErr } - newObj := NewPatternFlowGtpv2Spare2MetricTag() + newObj := NewPatternFlowIcmpv6EchoCodeMetricTag() data, err := proto.Marshal(obj.Msg()) if err != nil { return nil, err @@ -252716,69 +298020,69 @@ func (obj *patternFlowGtpv2Spare2MetricTag) Clone() (PatternFlowGtpv2Spare2Metri return newObj, nil } -// PatternFlowGtpv2Spare2MetricTag is metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. -type PatternFlowGtpv2Spare2MetricTag interface { +// PatternFlowIcmpv6EchoCodeMetricTag is metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. +type PatternFlowIcmpv6EchoCodeMetricTag interface { Validation - // Msg marshals PatternFlowGtpv2Spare2MetricTag to protobuf object *otg.PatternFlowGtpv2Spare2MetricTag + // Msg marshals PatternFlowIcmpv6EchoCodeMetricTag to protobuf object *otg.PatternFlowIcmpv6EchoCodeMetricTag // and doesn't set defaults - Msg() *otg.PatternFlowGtpv2Spare2MetricTag - // SetMsg unmarshals PatternFlowGtpv2Spare2MetricTag from protobuf object *otg.PatternFlowGtpv2Spare2MetricTag + Msg() *otg.PatternFlowIcmpv6EchoCodeMetricTag + // SetMsg unmarshals PatternFlowIcmpv6EchoCodeMetricTag from protobuf object *otg.PatternFlowIcmpv6EchoCodeMetricTag // and doesn't set defaults - SetMsg(*otg.PatternFlowGtpv2Spare2MetricTag) PatternFlowGtpv2Spare2MetricTag - // ToProto marshals PatternFlowGtpv2Spare2MetricTag to protobuf object *otg.PatternFlowGtpv2Spare2MetricTag - ToProto() (*otg.PatternFlowGtpv2Spare2MetricTag, error) - // ToPbText marshals PatternFlowGtpv2Spare2MetricTag to protobuf text + SetMsg(*otg.PatternFlowIcmpv6EchoCodeMetricTag) PatternFlowIcmpv6EchoCodeMetricTag + // ToProto marshals PatternFlowIcmpv6EchoCodeMetricTag to protobuf object *otg.PatternFlowIcmpv6EchoCodeMetricTag + ToProto() (*otg.PatternFlowIcmpv6EchoCodeMetricTag, error) + // ToPbText marshals PatternFlowIcmpv6EchoCodeMetricTag to protobuf text ToPbText() (string, error) - // ToYaml marshals PatternFlowGtpv2Spare2MetricTag to YAML text + // ToYaml marshals PatternFlowIcmpv6EchoCodeMetricTag to YAML text ToYaml() (string, error) - // ToJson marshals PatternFlowGtpv2Spare2MetricTag to JSON text + // ToJson marshals PatternFlowIcmpv6EchoCodeMetricTag to JSON text ToJson() (string, error) - // FromProto unmarshals PatternFlowGtpv2Spare2MetricTag from protobuf object *otg.PatternFlowGtpv2Spare2MetricTag - FromProto(msg *otg.PatternFlowGtpv2Spare2MetricTag) (PatternFlowGtpv2Spare2MetricTag, error) - // FromPbText unmarshals PatternFlowGtpv2Spare2MetricTag from protobuf text + // FromProto unmarshals PatternFlowIcmpv6EchoCodeMetricTag from protobuf object *otg.PatternFlowIcmpv6EchoCodeMetricTag + FromProto(msg *otg.PatternFlowIcmpv6EchoCodeMetricTag) (PatternFlowIcmpv6EchoCodeMetricTag, error) + // FromPbText unmarshals PatternFlowIcmpv6EchoCodeMetricTag from protobuf text FromPbText(value string) error - // FromYaml unmarshals PatternFlowGtpv2Spare2MetricTag from YAML text + // FromYaml unmarshals PatternFlowIcmpv6EchoCodeMetricTag from YAML text FromYaml(value string) error - // FromJson unmarshals PatternFlowGtpv2Spare2MetricTag from JSON text + // FromJson unmarshals PatternFlowIcmpv6EchoCodeMetricTag from JSON text FromJson(value string) error - // Validate validates PatternFlowGtpv2Spare2MetricTag + // Validate validates PatternFlowIcmpv6EchoCodeMetricTag Validate() error // A stringer function String() string // Clones the object - Clone() (PatternFlowGtpv2Spare2MetricTag, error) + Clone() (PatternFlowIcmpv6EchoCodeMetricTag, error) validateToAndFrom() error validateObj(vObj *validation, set_default bool) setDefault() - // Name returns string, set in PatternFlowGtpv2Spare2MetricTag. + // Name returns string, set in PatternFlowIcmpv6EchoCodeMetricTag. Name() string - // SetName assigns string provided by user to PatternFlowGtpv2Spare2MetricTag - SetName(value string) PatternFlowGtpv2Spare2MetricTag - // Offset returns uint32, set in PatternFlowGtpv2Spare2MetricTag. + // SetName assigns string provided by user to PatternFlowIcmpv6EchoCodeMetricTag + SetName(value string) PatternFlowIcmpv6EchoCodeMetricTag + // Offset returns uint32, set in PatternFlowIcmpv6EchoCodeMetricTag. Offset() uint32 - // SetOffset assigns uint32 provided by user to PatternFlowGtpv2Spare2MetricTag - SetOffset(value uint32) PatternFlowGtpv2Spare2MetricTag - // HasOffset checks if Offset has been set in PatternFlowGtpv2Spare2MetricTag + // SetOffset assigns uint32 provided by user to PatternFlowIcmpv6EchoCodeMetricTag + SetOffset(value uint32) PatternFlowIcmpv6EchoCodeMetricTag + // HasOffset checks if Offset has been set in PatternFlowIcmpv6EchoCodeMetricTag HasOffset() bool - // Length returns uint32, set in PatternFlowGtpv2Spare2MetricTag. + // Length returns uint32, set in PatternFlowIcmpv6EchoCodeMetricTag. Length() uint32 - // SetLength assigns uint32 provided by user to PatternFlowGtpv2Spare2MetricTag - SetLength(value uint32) PatternFlowGtpv2Spare2MetricTag - // HasLength checks if Length has been set in PatternFlowGtpv2Spare2MetricTag + // SetLength assigns uint32 provided by user to PatternFlowIcmpv6EchoCodeMetricTag + SetLength(value uint32) PatternFlowIcmpv6EchoCodeMetricTag + // HasLength checks if Length has been set in PatternFlowIcmpv6EchoCodeMetricTag HasLength() bool } // Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field // Name returns a string -func (obj *patternFlowGtpv2Spare2MetricTag) Name() string { +func (obj *patternFlowIcmpv6EchoCodeMetricTag) Name() string { return *obj.obj.Name } // Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field -// SetName sets the string value in the PatternFlowGtpv2Spare2MetricTag object -func (obj *patternFlowGtpv2Spare2MetricTag) SetName(value string) PatternFlowGtpv2Spare2MetricTag { +// SetName sets the string value in the PatternFlowIcmpv6EchoCodeMetricTag object +func (obj *patternFlowIcmpv6EchoCodeMetricTag) SetName(value string) PatternFlowIcmpv6EchoCodeMetricTag { obj.obj.Name = &value return obj @@ -252786,7 +298090,7 @@ func (obj *patternFlowGtpv2Spare2MetricTag) SetName(value string) PatternFlowGtp // Offset in bits relative to start of corresponding header field // Offset returns a uint32 -func (obj *patternFlowGtpv2Spare2MetricTag) Offset() uint32 { +func (obj *patternFlowIcmpv6EchoCodeMetricTag) Offset() uint32 { return *obj.obj.Offset @@ -252794,13 +298098,13 @@ func (obj *patternFlowGtpv2Spare2MetricTag) Offset() uint32 { // Offset in bits relative to start of corresponding header field // Offset returns a uint32 -func (obj *patternFlowGtpv2Spare2MetricTag) HasOffset() bool { +func (obj *patternFlowIcmpv6EchoCodeMetricTag) HasOffset() bool { return obj.obj.Offset != nil } // Offset in bits relative to start of corresponding header field -// SetOffset sets the uint32 value in the PatternFlowGtpv2Spare2MetricTag object -func (obj *patternFlowGtpv2Spare2MetricTag) SetOffset(value uint32) PatternFlowGtpv2Spare2MetricTag { +// SetOffset sets the uint32 value in the PatternFlowIcmpv6EchoCodeMetricTag object +func (obj *patternFlowIcmpv6EchoCodeMetricTag) SetOffset(value uint32) PatternFlowIcmpv6EchoCodeMetricTag { obj.obj.Offset = &value return obj @@ -252808,7 +298112,7 @@ func (obj *patternFlowGtpv2Spare2MetricTag) SetOffset(value uint32) PatternFlowG // Number of bits to track for metrics starting from configured offset of corresponding header field // Length returns a uint32 -func (obj *patternFlowGtpv2Spare2MetricTag) Length() uint32 { +func (obj *patternFlowIcmpv6EchoCodeMetricTag) Length() uint32 { return *obj.obj.Length @@ -252816,26 +298120,26 @@ func (obj *patternFlowGtpv2Spare2MetricTag) Length() uint32 { // Number of bits to track for metrics starting from configured offset of corresponding header field // Length returns a uint32 -func (obj *patternFlowGtpv2Spare2MetricTag) HasLength() bool { +func (obj *patternFlowIcmpv6EchoCodeMetricTag) HasLength() bool { return obj.obj.Length != nil } // Number of bits to track for metrics starting from configured offset of corresponding header field -// SetLength sets the uint32 value in the PatternFlowGtpv2Spare2MetricTag object -func (obj *patternFlowGtpv2Spare2MetricTag) SetLength(value uint32) PatternFlowGtpv2Spare2MetricTag { +// SetLength sets the uint32 value in the PatternFlowIcmpv6EchoCodeMetricTag object +func (obj *patternFlowIcmpv6EchoCodeMetricTag) SetLength(value uint32) PatternFlowIcmpv6EchoCodeMetricTag { obj.obj.Length = &value return obj } -func (obj *patternFlowGtpv2Spare2MetricTag) validateObj(vObj *validation, set_default bool) { +func (obj *patternFlowIcmpv6EchoCodeMetricTag) validateObj(vObj *validation, set_default bool) { if set_default { obj.setDefault() } // Name is required if obj.obj.Name == nil { - vObj.validationErrors = append(vObj.validationErrors, "Name is required field on interface PatternFlowGtpv2Spare2MetricTag") + vObj.validationErrors = append(vObj.validationErrors, "Name is required field on interface PatternFlowIcmpv6EchoCodeMetricTag") } if obj.obj.Offset != nil { @@ -252843,7 +298147,7 @@ func (obj *patternFlowGtpv2Spare2MetricTag) validateObj(vObj *validation, set_de if *obj.obj.Offset > 7 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowGtpv2Spare2MetricTag.Offset <= 7 but Got %d", *obj.obj.Offset)) + fmt.Sprintf("0 <= PatternFlowIcmpv6EchoCodeMetricTag.Offset <= 7 but Got %d", *obj.obj.Offset)) } } @@ -252853,14 +298157,14 @@ func (obj *patternFlowGtpv2Spare2MetricTag) validateObj(vObj *validation, set_de if *obj.obj.Length < 1 || *obj.obj.Length > 8 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("1 <= PatternFlowGtpv2Spare2MetricTag.Length <= 8 but Got %d", *obj.obj.Length)) + fmt.Sprintf("1 <= PatternFlowIcmpv6EchoCodeMetricTag.Length <= 8 but Got %d", *obj.obj.Length)) } } } -func (obj *patternFlowGtpv2Spare2MetricTag) setDefault() { +func (obj *patternFlowIcmpv6EchoCodeMetricTag) setDefault() { if obj.obj.Offset == nil { obj.SetOffset(0) } @@ -252870,29 +298174,29 @@ func (obj *patternFlowGtpv2Spare2MetricTag) setDefault() { } -// ***** PatternFlowArpHardwareTypeCounter ***** -type patternFlowArpHardwareTypeCounter struct { +// ***** PatternFlowIcmpv6EchoIdentifierCounter ***** +type patternFlowIcmpv6EchoIdentifierCounter struct { validation - obj *otg.PatternFlowArpHardwareTypeCounter + obj *otg.PatternFlowIcmpv6EchoIdentifierCounter } -func NewPatternFlowArpHardwareTypeCounter() PatternFlowArpHardwareTypeCounter { - obj := patternFlowArpHardwareTypeCounter{obj: &otg.PatternFlowArpHardwareTypeCounter{}} +func NewPatternFlowIcmpv6EchoIdentifierCounter() PatternFlowIcmpv6EchoIdentifierCounter { + obj := patternFlowIcmpv6EchoIdentifierCounter{obj: &otg.PatternFlowIcmpv6EchoIdentifierCounter{}} obj.setDefault() return &obj } -func (obj *patternFlowArpHardwareTypeCounter) Msg() *otg.PatternFlowArpHardwareTypeCounter { +func (obj *patternFlowIcmpv6EchoIdentifierCounter) Msg() *otg.PatternFlowIcmpv6EchoIdentifierCounter { return obj.obj } -func (obj *patternFlowArpHardwareTypeCounter) SetMsg(msg *otg.PatternFlowArpHardwareTypeCounter) PatternFlowArpHardwareTypeCounter { +func (obj *patternFlowIcmpv6EchoIdentifierCounter) SetMsg(msg *otg.PatternFlowIcmpv6EchoIdentifierCounter) PatternFlowIcmpv6EchoIdentifierCounter { proto.Merge(obj.obj, msg) return obj } -func (obj *patternFlowArpHardwareTypeCounter) ToProto() (*otg.PatternFlowArpHardwareTypeCounter, error) { +func (obj *patternFlowIcmpv6EchoIdentifierCounter) ToProto() (*otg.PatternFlowIcmpv6EchoIdentifierCounter, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -252900,7 +298204,7 @@ func (obj *patternFlowArpHardwareTypeCounter) ToProto() (*otg.PatternFlowArpHard return obj.Msg(), nil } -func (obj *patternFlowArpHardwareTypeCounter) FromProto(msg *otg.PatternFlowArpHardwareTypeCounter) (PatternFlowArpHardwareTypeCounter, error) { +func (obj *patternFlowIcmpv6EchoIdentifierCounter) FromProto(msg *otg.PatternFlowIcmpv6EchoIdentifierCounter) (PatternFlowIcmpv6EchoIdentifierCounter, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -252909,7 +298213,7 @@ func (obj *patternFlowArpHardwareTypeCounter) FromProto(msg *otg.PatternFlowArpH return newObj, nil } -func (obj *patternFlowArpHardwareTypeCounter) ToPbText() (string, error) { +func (obj *patternFlowIcmpv6EchoIdentifierCounter) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -252921,7 +298225,7 @@ func (obj *patternFlowArpHardwareTypeCounter) ToPbText() (string, error) { return string(protoMarshal), nil } -func (obj *patternFlowArpHardwareTypeCounter) FromPbText(value string) error { +func (obj *patternFlowIcmpv6EchoIdentifierCounter) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj @@ -252934,7 +298238,7 @@ func (obj *patternFlowArpHardwareTypeCounter) FromPbText(value string) error { return retObj } -func (obj *patternFlowArpHardwareTypeCounter) ToYaml() (string, error) { +func (obj *patternFlowIcmpv6EchoIdentifierCounter) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -252955,7 +298259,7 @@ func (obj *patternFlowArpHardwareTypeCounter) ToYaml() (string, error) { return string(data), nil } -func (obj *patternFlowArpHardwareTypeCounter) FromYaml(value string) error { +func (obj *patternFlowIcmpv6EchoIdentifierCounter) FromYaml(value string) error { if value == "" { value = "{}" } @@ -252980,7 +298284,7 @@ func (obj *patternFlowArpHardwareTypeCounter) FromYaml(value string) error { return nil } -func (obj *patternFlowArpHardwareTypeCounter) ToJson() (string, error) { +func (obj *patternFlowIcmpv6EchoIdentifierCounter) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -252998,7 +298302,7 @@ func (obj *patternFlowArpHardwareTypeCounter) ToJson() (string, error) { return string(data), nil } -func (obj *patternFlowArpHardwareTypeCounter) FromJson(value string) error { +func (obj *patternFlowIcmpv6EchoIdentifierCounter) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -253019,19 +298323,19 @@ func (obj *patternFlowArpHardwareTypeCounter) FromJson(value string) error { return nil } -func (obj *patternFlowArpHardwareTypeCounter) validateToAndFrom() error { +func (obj *patternFlowIcmpv6EchoIdentifierCounter) validateToAndFrom() error { // emptyVars() obj.validateObj(&obj.validation, true) return obj.validationResult() } -func (obj *patternFlowArpHardwareTypeCounter) Validate() error { +func (obj *patternFlowIcmpv6EchoIdentifierCounter) Validate() error { // emptyVars() obj.validateObj(&obj.validation, false) return obj.validationResult() } -func (obj *patternFlowArpHardwareTypeCounter) String() string { +func (obj *patternFlowIcmpv6EchoIdentifierCounter) String() string { str, err := obj.ToYaml() if err != nil { return err.Error() @@ -253039,12 +298343,12 @@ func (obj *patternFlowArpHardwareTypeCounter) String() string { return str } -func (obj *patternFlowArpHardwareTypeCounter) Clone() (PatternFlowArpHardwareTypeCounter, error) { +func (obj *patternFlowIcmpv6EchoIdentifierCounter) Clone() (PatternFlowIcmpv6EchoIdentifierCounter, error) { vErr := obj.Validate() if vErr != nil { return nil, vErr } - newObj := NewPatternFlowArpHardwareTypeCounter() + newObj := NewPatternFlowIcmpv6EchoIdentifierCounter() data, err := proto.Marshal(obj.Msg()) if err != nil { return nil, err @@ -253056,63 +298360,63 @@ func (obj *patternFlowArpHardwareTypeCounter) Clone() (PatternFlowArpHardwareTyp return newObj, nil } -// PatternFlowArpHardwareTypeCounter is integer counter pattern -type PatternFlowArpHardwareTypeCounter interface { +// PatternFlowIcmpv6EchoIdentifierCounter is integer counter pattern +type PatternFlowIcmpv6EchoIdentifierCounter interface { Validation - // Msg marshals PatternFlowArpHardwareTypeCounter to protobuf object *otg.PatternFlowArpHardwareTypeCounter + // Msg marshals PatternFlowIcmpv6EchoIdentifierCounter to protobuf object *otg.PatternFlowIcmpv6EchoIdentifierCounter // and doesn't set defaults - Msg() *otg.PatternFlowArpHardwareTypeCounter - // SetMsg unmarshals PatternFlowArpHardwareTypeCounter from protobuf object *otg.PatternFlowArpHardwareTypeCounter + Msg() *otg.PatternFlowIcmpv6EchoIdentifierCounter + // SetMsg unmarshals PatternFlowIcmpv6EchoIdentifierCounter from protobuf object *otg.PatternFlowIcmpv6EchoIdentifierCounter // and doesn't set defaults - SetMsg(*otg.PatternFlowArpHardwareTypeCounter) PatternFlowArpHardwareTypeCounter - // ToProto marshals PatternFlowArpHardwareTypeCounter to protobuf object *otg.PatternFlowArpHardwareTypeCounter - ToProto() (*otg.PatternFlowArpHardwareTypeCounter, error) - // ToPbText marshals PatternFlowArpHardwareTypeCounter to protobuf text + SetMsg(*otg.PatternFlowIcmpv6EchoIdentifierCounter) PatternFlowIcmpv6EchoIdentifierCounter + // ToProto marshals PatternFlowIcmpv6EchoIdentifierCounter to protobuf object *otg.PatternFlowIcmpv6EchoIdentifierCounter + ToProto() (*otg.PatternFlowIcmpv6EchoIdentifierCounter, error) + // ToPbText marshals PatternFlowIcmpv6EchoIdentifierCounter to protobuf text ToPbText() (string, error) - // ToYaml marshals PatternFlowArpHardwareTypeCounter to YAML text + // ToYaml marshals PatternFlowIcmpv6EchoIdentifierCounter to YAML text ToYaml() (string, error) - // ToJson marshals PatternFlowArpHardwareTypeCounter to JSON text + // ToJson marshals PatternFlowIcmpv6EchoIdentifierCounter to JSON text ToJson() (string, error) - // FromProto unmarshals PatternFlowArpHardwareTypeCounter from protobuf object *otg.PatternFlowArpHardwareTypeCounter - FromProto(msg *otg.PatternFlowArpHardwareTypeCounter) (PatternFlowArpHardwareTypeCounter, error) - // FromPbText unmarshals PatternFlowArpHardwareTypeCounter from protobuf text + // FromProto unmarshals PatternFlowIcmpv6EchoIdentifierCounter from protobuf object *otg.PatternFlowIcmpv6EchoIdentifierCounter + FromProto(msg *otg.PatternFlowIcmpv6EchoIdentifierCounter) (PatternFlowIcmpv6EchoIdentifierCounter, error) + // FromPbText unmarshals PatternFlowIcmpv6EchoIdentifierCounter from protobuf text FromPbText(value string) error - // FromYaml unmarshals PatternFlowArpHardwareTypeCounter from YAML text + // FromYaml unmarshals PatternFlowIcmpv6EchoIdentifierCounter from YAML text FromYaml(value string) error - // FromJson unmarshals PatternFlowArpHardwareTypeCounter from JSON text + // FromJson unmarshals PatternFlowIcmpv6EchoIdentifierCounter from JSON text FromJson(value string) error - // Validate validates PatternFlowArpHardwareTypeCounter + // Validate validates PatternFlowIcmpv6EchoIdentifierCounter Validate() error // A stringer function String() string // Clones the object - Clone() (PatternFlowArpHardwareTypeCounter, error) + Clone() (PatternFlowIcmpv6EchoIdentifierCounter, error) validateToAndFrom() error validateObj(vObj *validation, set_default bool) setDefault() - // Start returns uint32, set in PatternFlowArpHardwareTypeCounter. + // Start returns uint32, set in PatternFlowIcmpv6EchoIdentifierCounter. Start() uint32 - // SetStart assigns uint32 provided by user to PatternFlowArpHardwareTypeCounter - SetStart(value uint32) PatternFlowArpHardwareTypeCounter - // HasStart checks if Start has been set in PatternFlowArpHardwareTypeCounter + // SetStart assigns uint32 provided by user to PatternFlowIcmpv6EchoIdentifierCounter + SetStart(value uint32) PatternFlowIcmpv6EchoIdentifierCounter + // HasStart checks if Start has been set in PatternFlowIcmpv6EchoIdentifierCounter HasStart() bool - // Step returns uint32, set in PatternFlowArpHardwareTypeCounter. + // Step returns uint32, set in PatternFlowIcmpv6EchoIdentifierCounter. Step() uint32 - // SetStep assigns uint32 provided by user to PatternFlowArpHardwareTypeCounter - SetStep(value uint32) PatternFlowArpHardwareTypeCounter - // HasStep checks if Step has been set in PatternFlowArpHardwareTypeCounter + // SetStep assigns uint32 provided by user to PatternFlowIcmpv6EchoIdentifierCounter + SetStep(value uint32) PatternFlowIcmpv6EchoIdentifierCounter + // HasStep checks if Step has been set in PatternFlowIcmpv6EchoIdentifierCounter HasStep() bool - // Count returns uint32, set in PatternFlowArpHardwareTypeCounter. + // Count returns uint32, set in PatternFlowIcmpv6EchoIdentifierCounter. Count() uint32 - // SetCount assigns uint32 provided by user to PatternFlowArpHardwareTypeCounter - SetCount(value uint32) PatternFlowArpHardwareTypeCounter - // HasCount checks if Count has been set in PatternFlowArpHardwareTypeCounter + // SetCount assigns uint32 provided by user to PatternFlowIcmpv6EchoIdentifierCounter + SetCount(value uint32) PatternFlowIcmpv6EchoIdentifierCounter + // HasCount checks if Count has been set in PatternFlowIcmpv6EchoIdentifierCounter HasCount() bool } // description is TBD // Start returns a uint32 -func (obj *patternFlowArpHardwareTypeCounter) Start() uint32 { +func (obj *patternFlowIcmpv6EchoIdentifierCounter) Start() uint32 { return *obj.obj.Start @@ -253120,13 +298424,13 @@ func (obj *patternFlowArpHardwareTypeCounter) Start() uint32 { // description is TBD // Start returns a uint32 -func (obj *patternFlowArpHardwareTypeCounter) HasStart() bool { +func (obj *patternFlowIcmpv6EchoIdentifierCounter) HasStart() bool { return obj.obj.Start != nil } // description is TBD -// SetStart sets the uint32 value in the PatternFlowArpHardwareTypeCounter object -func (obj *patternFlowArpHardwareTypeCounter) SetStart(value uint32) PatternFlowArpHardwareTypeCounter { +// SetStart sets the uint32 value in the PatternFlowIcmpv6EchoIdentifierCounter object +func (obj *patternFlowIcmpv6EchoIdentifierCounter) SetStart(value uint32) PatternFlowIcmpv6EchoIdentifierCounter { obj.obj.Start = &value return obj @@ -253134,7 +298438,7 @@ func (obj *patternFlowArpHardwareTypeCounter) SetStart(value uint32) PatternFlow // description is TBD // Step returns a uint32 -func (obj *patternFlowArpHardwareTypeCounter) Step() uint32 { +func (obj *patternFlowIcmpv6EchoIdentifierCounter) Step() uint32 { return *obj.obj.Step @@ -253142,13 +298446,13 @@ func (obj *patternFlowArpHardwareTypeCounter) Step() uint32 { // description is TBD // Step returns a uint32 -func (obj *patternFlowArpHardwareTypeCounter) HasStep() bool { +func (obj *patternFlowIcmpv6EchoIdentifierCounter) HasStep() bool { return obj.obj.Step != nil } // description is TBD -// SetStep sets the uint32 value in the PatternFlowArpHardwareTypeCounter object -func (obj *patternFlowArpHardwareTypeCounter) SetStep(value uint32) PatternFlowArpHardwareTypeCounter { +// SetStep sets the uint32 value in the PatternFlowIcmpv6EchoIdentifierCounter object +func (obj *patternFlowIcmpv6EchoIdentifierCounter) SetStep(value uint32) PatternFlowIcmpv6EchoIdentifierCounter { obj.obj.Step = &value return obj @@ -253156,7 +298460,7 @@ func (obj *patternFlowArpHardwareTypeCounter) SetStep(value uint32) PatternFlowA // description is TBD // Count returns a uint32 -func (obj *patternFlowArpHardwareTypeCounter) Count() uint32 { +func (obj *patternFlowIcmpv6EchoIdentifierCounter) Count() uint32 { return *obj.obj.Count @@ -253164,19 +298468,19 @@ func (obj *patternFlowArpHardwareTypeCounter) Count() uint32 { // description is TBD // Count returns a uint32 -func (obj *patternFlowArpHardwareTypeCounter) HasCount() bool { +func (obj *patternFlowIcmpv6EchoIdentifierCounter) HasCount() bool { return obj.obj.Count != nil } // description is TBD -// SetCount sets the uint32 value in the PatternFlowArpHardwareTypeCounter object -func (obj *patternFlowArpHardwareTypeCounter) SetCount(value uint32) PatternFlowArpHardwareTypeCounter { +// SetCount sets the uint32 value in the PatternFlowIcmpv6EchoIdentifierCounter object +func (obj *patternFlowIcmpv6EchoIdentifierCounter) SetCount(value uint32) PatternFlowIcmpv6EchoIdentifierCounter { obj.obj.Count = &value return obj } -func (obj *patternFlowArpHardwareTypeCounter) validateObj(vObj *validation, set_default bool) { +func (obj *patternFlowIcmpv6EchoIdentifierCounter) validateObj(vObj *validation, set_default bool) { if set_default { obj.setDefault() } @@ -253186,7 +298490,7 @@ func (obj *patternFlowArpHardwareTypeCounter) validateObj(vObj *validation, set_ if *obj.obj.Start > 65535 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowArpHardwareTypeCounter.Start <= 65535 but Got %d", *obj.obj.Start)) + fmt.Sprintf("0 <= PatternFlowIcmpv6EchoIdentifierCounter.Start <= 65535 but Got %d", *obj.obj.Start)) } } @@ -253196,7 +298500,7 @@ func (obj *patternFlowArpHardwareTypeCounter) validateObj(vObj *validation, set_ if *obj.obj.Step > 65535 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowArpHardwareTypeCounter.Step <= 65535 but Got %d", *obj.obj.Step)) + fmt.Sprintf("0 <= PatternFlowIcmpv6EchoIdentifierCounter.Step <= 65535 but Got %d", *obj.obj.Step)) } } @@ -253206,16 +298510,16 @@ func (obj *patternFlowArpHardwareTypeCounter) validateObj(vObj *validation, set_ if *obj.obj.Count > 65535 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowArpHardwareTypeCounter.Count <= 65535 but Got %d", *obj.obj.Count)) + fmt.Sprintf("0 <= PatternFlowIcmpv6EchoIdentifierCounter.Count <= 65535 but Got %d", *obj.obj.Count)) } } } -func (obj *patternFlowArpHardwareTypeCounter) setDefault() { +func (obj *patternFlowIcmpv6EchoIdentifierCounter) setDefault() { if obj.obj.Start == nil { - obj.SetStart(1) + obj.SetStart(0) } if obj.obj.Step == nil { obj.SetStep(1) @@ -253226,29 +298530,29 @@ func (obj *patternFlowArpHardwareTypeCounter) setDefault() { } -// ***** PatternFlowArpHardwareTypeMetricTag ***** -type patternFlowArpHardwareTypeMetricTag struct { +// ***** PatternFlowIcmpv6EchoIdentifierMetricTag ***** +type patternFlowIcmpv6EchoIdentifierMetricTag struct { validation - obj *otg.PatternFlowArpHardwareTypeMetricTag + obj *otg.PatternFlowIcmpv6EchoIdentifierMetricTag } -func NewPatternFlowArpHardwareTypeMetricTag() PatternFlowArpHardwareTypeMetricTag { - obj := patternFlowArpHardwareTypeMetricTag{obj: &otg.PatternFlowArpHardwareTypeMetricTag{}} +func NewPatternFlowIcmpv6EchoIdentifierMetricTag() PatternFlowIcmpv6EchoIdentifierMetricTag { + obj := patternFlowIcmpv6EchoIdentifierMetricTag{obj: &otg.PatternFlowIcmpv6EchoIdentifierMetricTag{}} obj.setDefault() return &obj } -func (obj *patternFlowArpHardwareTypeMetricTag) Msg() *otg.PatternFlowArpHardwareTypeMetricTag { +func (obj *patternFlowIcmpv6EchoIdentifierMetricTag) Msg() *otg.PatternFlowIcmpv6EchoIdentifierMetricTag { return obj.obj } -func (obj *patternFlowArpHardwareTypeMetricTag) SetMsg(msg *otg.PatternFlowArpHardwareTypeMetricTag) PatternFlowArpHardwareTypeMetricTag { +func (obj *patternFlowIcmpv6EchoIdentifierMetricTag) SetMsg(msg *otg.PatternFlowIcmpv6EchoIdentifierMetricTag) PatternFlowIcmpv6EchoIdentifierMetricTag { proto.Merge(obj.obj, msg) return obj } -func (obj *patternFlowArpHardwareTypeMetricTag) ToProto() (*otg.PatternFlowArpHardwareTypeMetricTag, error) { +func (obj *patternFlowIcmpv6EchoIdentifierMetricTag) ToProto() (*otg.PatternFlowIcmpv6EchoIdentifierMetricTag, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -253256,7 +298560,7 @@ func (obj *patternFlowArpHardwareTypeMetricTag) ToProto() (*otg.PatternFlowArpHa return obj.Msg(), nil } -func (obj *patternFlowArpHardwareTypeMetricTag) FromProto(msg *otg.PatternFlowArpHardwareTypeMetricTag) (PatternFlowArpHardwareTypeMetricTag, error) { +func (obj *patternFlowIcmpv6EchoIdentifierMetricTag) FromProto(msg *otg.PatternFlowIcmpv6EchoIdentifierMetricTag) (PatternFlowIcmpv6EchoIdentifierMetricTag, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -253265,7 +298569,7 @@ func (obj *patternFlowArpHardwareTypeMetricTag) FromProto(msg *otg.PatternFlowAr return newObj, nil } -func (obj *patternFlowArpHardwareTypeMetricTag) ToPbText() (string, error) { +func (obj *patternFlowIcmpv6EchoIdentifierMetricTag) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -253277,7 +298581,7 @@ func (obj *patternFlowArpHardwareTypeMetricTag) ToPbText() (string, error) { return string(protoMarshal), nil } -func (obj *patternFlowArpHardwareTypeMetricTag) FromPbText(value string) error { +func (obj *patternFlowIcmpv6EchoIdentifierMetricTag) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj @@ -253290,7 +298594,7 @@ func (obj *patternFlowArpHardwareTypeMetricTag) FromPbText(value string) error { return retObj } -func (obj *patternFlowArpHardwareTypeMetricTag) ToYaml() (string, error) { +func (obj *patternFlowIcmpv6EchoIdentifierMetricTag) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -253311,7 +298615,7 @@ func (obj *patternFlowArpHardwareTypeMetricTag) ToYaml() (string, error) { return string(data), nil } -func (obj *patternFlowArpHardwareTypeMetricTag) FromYaml(value string) error { +func (obj *patternFlowIcmpv6EchoIdentifierMetricTag) FromYaml(value string) error { if value == "" { value = "{}" } @@ -253336,7 +298640,7 @@ func (obj *patternFlowArpHardwareTypeMetricTag) FromYaml(value string) error { return nil } -func (obj *patternFlowArpHardwareTypeMetricTag) ToJson() (string, error) { +func (obj *patternFlowIcmpv6EchoIdentifierMetricTag) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -253354,7 +298658,7 @@ func (obj *patternFlowArpHardwareTypeMetricTag) ToJson() (string, error) { return string(data), nil } -func (obj *patternFlowArpHardwareTypeMetricTag) FromJson(value string) error { +func (obj *patternFlowIcmpv6EchoIdentifierMetricTag) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -253375,19 +298679,19 @@ func (obj *patternFlowArpHardwareTypeMetricTag) FromJson(value string) error { return nil } -func (obj *patternFlowArpHardwareTypeMetricTag) validateToAndFrom() error { +func (obj *patternFlowIcmpv6EchoIdentifierMetricTag) validateToAndFrom() error { // emptyVars() obj.validateObj(&obj.validation, true) return obj.validationResult() } -func (obj *patternFlowArpHardwareTypeMetricTag) Validate() error { +func (obj *patternFlowIcmpv6EchoIdentifierMetricTag) Validate() error { // emptyVars() obj.validateObj(&obj.validation, false) return obj.validationResult() } -func (obj *patternFlowArpHardwareTypeMetricTag) String() string { +func (obj *patternFlowIcmpv6EchoIdentifierMetricTag) String() string { str, err := obj.ToYaml() if err != nil { return err.Error() @@ -253395,12 +298699,12 @@ func (obj *patternFlowArpHardwareTypeMetricTag) String() string { return str } -func (obj *patternFlowArpHardwareTypeMetricTag) Clone() (PatternFlowArpHardwareTypeMetricTag, error) { +func (obj *patternFlowIcmpv6EchoIdentifierMetricTag) Clone() (PatternFlowIcmpv6EchoIdentifierMetricTag, error) { vErr := obj.Validate() if vErr != nil { return nil, vErr } - newObj := NewPatternFlowArpHardwareTypeMetricTag() + newObj := NewPatternFlowIcmpv6EchoIdentifierMetricTag() data, err := proto.Marshal(obj.Msg()) if err != nil { return nil, err @@ -253412,69 +298716,69 @@ func (obj *patternFlowArpHardwareTypeMetricTag) Clone() (PatternFlowArpHardwareT return newObj, nil } -// PatternFlowArpHardwareTypeMetricTag is metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. -type PatternFlowArpHardwareTypeMetricTag interface { +// PatternFlowIcmpv6EchoIdentifierMetricTag is metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. +type PatternFlowIcmpv6EchoIdentifierMetricTag interface { Validation - // Msg marshals PatternFlowArpHardwareTypeMetricTag to protobuf object *otg.PatternFlowArpHardwareTypeMetricTag + // Msg marshals PatternFlowIcmpv6EchoIdentifierMetricTag to protobuf object *otg.PatternFlowIcmpv6EchoIdentifierMetricTag // and doesn't set defaults - Msg() *otg.PatternFlowArpHardwareTypeMetricTag - // SetMsg unmarshals PatternFlowArpHardwareTypeMetricTag from protobuf object *otg.PatternFlowArpHardwareTypeMetricTag + Msg() *otg.PatternFlowIcmpv6EchoIdentifierMetricTag + // SetMsg unmarshals PatternFlowIcmpv6EchoIdentifierMetricTag from protobuf object *otg.PatternFlowIcmpv6EchoIdentifierMetricTag // and doesn't set defaults - SetMsg(*otg.PatternFlowArpHardwareTypeMetricTag) PatternFlowArpHardwareTypeMetricTag - // ToProto marshals PatternFlowArpHardwareTypeMetricTag to protobuf object *otg.PatternFlowArpHardwareTypeMetricTag - ToProto() (*otg.PatternFlowArpHardwareTypeMetricTag, error) - // ToPbText marshals PatternFlowArpHardwareTypeMetricTag to protobuf text + SetMsg(*otg.PatternFlowIcmpv6EchoIdentifierMetricTag) PatternFlowIcmpv6EchoIdentifierMetricTag + // ToProto marshals PatternFlowIcmpv6EchoIdentifierMetricTag to protobuf object *otg.PatternFlowIcmpv6EchoIdentifierMetricTag + ToProto() (*otg.PatternFlowIcmpv6EchoIdentifierMetricTag, error) + // ToPbText marshals PatternFlowIcmpv6EchoIdentifierMetricTag to protobuf text ToPbText() (string, error) - // ToYaml marshals PatternFlowArpHardwareTypeMetricTag to YAML text + // ToYaml marshals PatternFlowIcmpv6EchoIdentifierMetricTag to YAML text ToYaml() (string, error) - // ToJson marshals PatternFlowArpHardwareTypeMetricTag to JSON text + // ToJson marshals PatternFlowIcmpv6EchoIdentifierMetricTag to JSON text ToJson() (string, error) - // FromProto unmarshals PatternFlowArpHardwareTypeMetricTag from protobuf object *otg.PatternFlowArpHardwareTypeMetricTag - FromProto(msg *otg.PatternFlowArpHardwareTypeMetricTag) (PatternFlowArpHardwareTypeMetricTag, error) - // FromPbText unmarshals PatternFlowArpHardwareTypeMetricTag from protobuf text + // FromProto unmarshals PatternFlowIcmpv6EchoIdentifierMetricTag from protobuf object *otg.PatternFlowIcmpv6EchoIdentifierMetricTag + FromProto(msg *otg.PatternFlowIcmpv6EchoIdentifierMetricTag) (PatternFlowIcmpv6EchoIdentifierMetricTag, error) + // FromPbText unmarshals PatternFlowIcmpv6EchoIdentifierMetricTag from protobuf text FromPbText(value string) error - // FromYaml unmarshals PatternFlowArpHardwareTypeMetricTag from YAML text + // FromYaml unmarshals PatternFlowIcmpv6EchoIdentifierMetricTag from YAML text FromYaml(value string) error - // FromJson unmarshals PatternFlowArpHardwareTypeMetricTag from JSON text + // FromJson unmarshals PatternFlowIcmpv6EchoIdentifierMetricTag from JSON text FromJson(value string) error - // Validate validates PatternFlowArpHardwareTypeMetricTag + // Validate validates PatternFlowIcmpv6EchoIdentifierMetricTag Validate() error // A stringer function String() string // Clones the object - Clone() (PatternFlowArpHardwareTypeMetricTag, error) + Clone() (PatternFlowIcmpv6EchoIdentifierMetricTag, error) validateToAndFrom() error validateObj(vObj *validation, set_default bool) setDefault() - // Name returns string, set in PatternFlowArpHardwareTypeMetricTag. + // Name returns string, set in PatternFlowIcmpv6EchoIdentifierMetricTag. Name() string - // SetName assigns string provided by user to PatternFlowArpHardwareTypeMetricTag - SetName(value string) PatternFlowArpHardwareTypeMetricTag - // Offset returns uint32, set in PatternFlowArpHardwareTypeMetricTag. - Offset() uint32 - // SetOffset assigns uint32 provided by user to PatternFlowArpHardwareTypeMetricTag - SetOffset(value uint32) PatternFlowArpHardwareTypeMetricTag - // HasOffset checks if Offset has been set in PatternFlowArpHardwareTypeMetricTag + // SetName assigns string provided by user to PatternFlowIcmpv6EchoIdentifierMetricTag + SetName(value string) PatternFlowIcmpv6EchoIdentifierMetricTag + // Offset returns uint32, set in PatternFlowIcmpv6EchoIdentifierMetricTag. + Offset() uint32 + // SetOffset assigns uint32 provided by user to PatternFlowIcmpv6EchoIdentifierMetricTag + SetOffset(value uint32) PatternFlowIcmpv6EchoIdentifierMetricTag + // HasOffset checks if Offset has been set in PatternFlowIcmpv6EchoIdentifierMetricTag HasOffset() bool - // Length returns uint32, set in PatternFlowArpHardwareTypeMetricTag. + // Length returns uint32, set in PatternFlowIcmpv6EchoIdentifierMetricTag. Length() uint32 - // SetLength assigns uint32 provided by user to PatternFlowArpHardwareTypeMetricTag - SetLength(value uint32) PatternFlowArpHardwareTypeMetricTag - // HasLength checks if Length has been set in PatternFlowArpHardwareTypeMetricTag + // SetLength assigns uint32 provided by user to PatternFlowIcmpv6EchoIdentifierMetricTag + SetLength(value uint32) PatternFlowIcmpv6EchoIdentifierMetricTag + // HasLength checks if Length has been set in PatternFlowIcmpv6EchoIdentifierMetricTag HasLength() bool } // Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field // Name returns a string -func (obj *patternFlowArpHardwareTypeMetricTag) Name() string { +func (obj *patternFlowIcmpv6EchoIdentifierMetricTag) Name() string { return *obj.obj.Name } // Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field -// SetName sets the string value in the PatternFlowArpHardwareTypeMetricTag object -func (obj *patternFlowArpHardwareTypeMetricTag) SetName(value string) PatternFlowArpHardwareTypeMetricTag { +// SetName sets the string value in the PatternFlowIcmpv6EchoIdentifierMetricTag object +func (obj *patternFlowIcmpv6EchoIdentifierMetricTag) SetName(value string) PatternFlowIcmpv6EchoIdentifierMetricTag { obj.obj.Name = &value return obj @@ -253482,7 +298786,7 @@ func (obj *patternFlowArpHardwareTypeMetricTag) SetName(value string) PatternFlo // Offset in bits relative to start of corresponding header field // Offset returns a uint32 -func (obj *patternFlowArpHardwareTypeMetricTag) Offset() uint32 { +func (obj *patternFlowIcmpv6EchoIdentifierMetricTag) Offset() uint32 { return *obj.obj.Offset @@ -253490,13 +298794,13 @@ func (obj *patternFlowArpHardwareTypeMetricTag) Offset() uint32 { // Offset in bits relative to start of corresponding header field // Offset returns a uint32 -func (obj *patternFlowArpHardwareTypeMetricTag) HasOffset() bool { +func (obj *patternFlowIcmpv6EchoIdentifierMetricTag) HasOffset() bool { return obj.obj.Offset != nil } // Offset in bits relative to start of corresponding header field -// SetOffset sets the uint32 value in the PatternFlowArpHardwareTypeMetricTag object -func (obj *patternFlowArpHardwareTypeMetricTag) SetOffset(value uint32) PatternFlowArpHardwareTypeMetricTag { +// SetOffset sets the uint32 value in the PatternFlowIcmpv6EchoIdentifierMetricTag object +func (obj *patternFlowIcmpv6EchoIdentifierMetricTag) SetOffset(value uint32) PatternFlowIcmpv6EchoIdentifierMetricTag { obj.obj.Offset = &value return obj @@ -253504,7 +298808,7 @@ func (obj *patternFlowArpHardwareTypeMetricTag) SetOffset(value uint32) PatternF // Number of bits to track for metrics starting from configured offset of corresponding header field // Length returns a uint32 -func (obj *patternFlowArpHardwareTypeMetricTag) Length() uint32 { +func (obj *patternFlowIcmpv6EchoIdentifierMetricTag) Length() uint32 { return *obj.obj.Length @@ -253512,26 +298816,26 @@ func (obj *patternFlowArpHardwareTypeMetricTag) Length() uint32 { // Number of bits to track for metrics starting from configured offset of corresponding header field // Length returns a uint32 -func (obj *patternFlowArpHardwareTypeMetricTag) HasLength() bool { +func (obj *patternFlowIcmpv6EchoIdentifierMetricTag) HasLength() bool { return obj.obj.Length != nil } // Number of bits to track for metrics starting from configured offset of corresponding header field -// SetLength sets the uint32 value in the PatternFlowArpHardwareTypeMetricTag object -func (obj *patternFlowArpHardwareTypeMetricTag) SetLength(value uint32) PatternFlowArpHardwareTypeMetricTag { +// SetLength sets the uint32 value in the PatternFlowIcmpv6EchoIdentifierMetricTag object +func (obj *patternFlowIcmpv6EchoIdentifierMetricTag) SetLength(value uint32) PatternFlowIcmpv6EchoIdentifierMetricTag { obj.obj.Length = &value return obj } -func (obj *patternFlowArpHardwareTypeMetricTag) validateObj(vObj *validation, set_default bool) { +func (obj *patternFlowIcmpv6EchoIdentifierMetricTag) validateObj(vObj *validation, set_default bool) { if set_default { obj.setDefault() } // Name is required if obj.obj.Name == nil { - vObj.validationErrors = append(vObj.validationErrors, "Name is required field on interface PatternFlowArpHardwareTypeMetricTag") + vObj.validationErrors = append(vObj.validationErrors, "Name is required field on interface PatternFlowIcmpv6EchoIdentifierMetricTag") } if obj.obj.Offset != nil { @@ -253539,7 +298843,7 @@ func (obj *patternFlowArpHardwareTypeMetricTag) validateObj(vObj *validation, se if *obj.obj.Offset > 15 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowArpHardwareTypeMetricTag.Offset <= 15 but Got %d", *obj.obj.Offset)) + fmt.Sprintf("0 <= PatternFlowIcmpv6EchoIdentifierMetricTag.Offset <= 15 but Got %d", *obj.obj.Offset)) } } @@ -253549,14 +298853,14 @@ func (obj *patternFlowArpHardwareTypeMetricTag) validateObj(vObj *validation, se if *obj.obj.Length < 1 || *obj.obj.Length > 16 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("1 <= PatternFlowArpHardwareTypeMetricTag.Length <= 16 but Got %d", *obj.obj.Length)) + fmt.Sprintf("1 <= PatternFlowIcmpv6EchoIdentifierMetricTag.Length <= 16 but Got %d", *obj.obj.Length)) } } } -func (obj *patternFlowArpHardwareTypeMetricTag) setDefault() { +func (obj *patternFlowIcmpv6EchoIdentifierMetricTag) setDefault() { if obj.obj.Offset == nil { obj.SetOffset(0) } @@ -253566,29 +298870,29 @@ func (obj *patternFlowArpHardwareTypeMetricTag) setDefault() { } -// ***** PatternFlowArpProtocolTypeCounter ***** -type patternFlowArpProtocolTypeCounter struct { +// ***** PatternFlowIcmpv6EchoSequenceNumberCounter ***** +type patternFlowIcmpv6EchoSequenceNumberCounter struct { validation - obj *otg.PatternFlowArpProtocolTypeCounter + obj *otg.PatternFlowIcmpv6EchoSequenceNumberCounter } -func NewPatternFlowArpProtocolTypeCounter() PatternFlowArpProtocolTypeCounter { - obj := patternFlowArpProtocolTypeCounter{obj: &otg.PatternFlowArpProtocolTypeCounter{}} +func NewPatternFlowIcmpv6EchoSequenceNumberCounter() PatternFlowIcmpv6EchoSequenceNumberCounter { + obj := patternFlowIcmpv6EchoSequenceNumberCounter{obj: &otg.PatternFlowIcmpv6EchoSequenceNumberCounter{}} obj.setDefault() return &obj } -func (obj *patternFlowArpProtocolTypeCounter) Msg() *otg.PatternFlowArpProtocolTypeCounter { +func (obj *patternFlowIcmpv6EchoSequenceNumberCounter) Msg() *otg.PatternFlowIcmpv6EchoSequenceNumberCounter { return obj.obj } -func (obj *patternFlowArpProtocolTypeCounter) SetMsg(msg *otg.PatternFlowArpProtocolTypeCounter) PatternFlowArpProtocolTypeCounter { +func (obj *patternFlowIcmpv6EchoSequenceNumberCounter) SetMsg(msg *otg.PatternFlowIcmpv6EchoSequenceNumberCounter) PatternFlowIcmpv6EchoSequenceNumberCounter { proto.Merge(obj.obj, msg) return obj } -func (obj *patternFlowArpProtocolTypeCounter) ToProto() (*otg.PatternFlowArpProtocolTypeCounter, error) { +func (obj *patternFlowIcmpv6EchoSequenceNumberCounter) ToProto() (*otg.PatternFlowIcmpv6EchoSequenceNumberCounter, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -253596,7 +298900,7 @@ func (obj *patternFlowArpProtocolTypeCounter) ToProto() (*otg.PatternFlowArpProt return obj.Msg(), nil } -func (obj *patternFlowArpProtocolTypeCounter) FromProto(msg *otg.PatternFlowArpProtocolTypeCounter) (PatternFlowArpProtocolTypeCounter, error) { +func (obj *patternFlowIcmpv6EchoSequenceNumberCounter) FromProto(msg *otg.PatternFlowIcmpv6EchoSequenceNumberCounter) (PatternFlowIcmpv6EchoSequenceNumberCounter, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -253605,7 +298909,7 @@ func (obj *patternFlowArpProtocolTypeCounter) FromProto(msg *otg.PatternFlowArpP return newObj, nil } -func (obj *patternFlowArpProtocolTypeCounter) ToPbText() (string, error) { +func (obj *patternFlowIcmpv6EchoSequenceNumberCounter) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -253617,7 +298921,7 @@ func (obj *patternFlowArpProtocolTypeCounter) ToPbText() (string, error) { return string(protoMarshal), nil } -func (obj *patternFlowArpProtocolTypeCounter) FromPbText(value string) error { +func (obj *patternFlowIcmpv6EchoSequenceNumberCounter) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj @@ -253630,7 +298934,7 @@ func (obj *patternFlowArpProtocolTypeCounter) FromPbText(value string) error { return retObj } -func (obj *patternFlowArpProtocolTypeCounter) ToYaml() (string, error) { +func (obj *patternFlowIcmpv6EchoSequenceNumberCounter) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -253651,7 +298955,7 @@ func (obj *patternFlowArpProtocolTypeCounter) ToYaml() (string, error) { return string(data), nil } -func (obj *patternFlowArpProtocolTypeCounter) FromYaml(value string) error { +func (obj *patternFlowIcmpv6EchoSequenceNumberCounter) FromYaml(value string) error { if value == "" { value = "{}" } @@ -253676,7 +298980,7 @@ func (obj *patternFlowArpProtocolTypeCounter) FromYaml(value string) error { return nil } -func (obj *patternFlowArpProtocolTypeCounter) ToJson() (string, error) { +func (obj *patternFlowIcmpv6EchoSequenceNumberCounter) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -253694,7 +298998,7 @@ func (obj *patternFlowArpProtocolTypeCounter) ToJson() (string, error) { return string(data), nil } -func (obj *patternFlowArpProtocolTypeCounter) FromJson(value string) error { +func (obj *patternFlowIcmpv6EchoSequenceNumberCounter) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -253715,19 +299019,19 @@ func (obj *patternFlowArpProtocolTypeCounter) FromJson(value string) error { return nil } -func (obj *patternFlowArpProtocolTypeCounter) validateToAndFrom() error { +func (obj *patternFlowIcmpv6EchoSequenceNumberCounter) validateToAndFrom() error { // emptyVars() obj.validateObj(&obj.validation, true) return obj.validationResult() } -func (obj *patternFlowArpProtocolTypeCounter) Validate() error { +func (obj *patternFlowIcmpv6EchoSequenceNumberCounter) Validate() error { // emptyVars() obj.validateObj(&obj.validation, false) return obj.validationResult() } -func (obj *patternFlowArpProtocolTypeCounter) String() string { +func (obj *patternFlowIcmpv6EchoSequenceNumberCounter) String() string { str, err := obj.ToYaml() if err != nil { return err.Error() @@ -253735,12 +299039,12 @@ func (obj *patternFlowArpProtocolTypeCounter) String() string { return str } -func (obj *patternFlowArpProtocolTypeCounter) Clone() (PatternFlowArpProtocolTypeCounter, error) { +func (obj *patternFlowIcmpv6EchoSequenceNumberCounter) Clone() (PatternFlowIcmpv6EchoSequenceNumberCounter, error) { vErr := obj.Validate() if vErr != nil { return nil, vErr } - newObj := NewPatternFlowArpProtocolTypeCounter() + newObj := NewPatternFlowIcmpv6EchoSequenceNumberCounter() data, err := proto.Marshal(obj.Msg()) if err != nil { return nil, err @@ -253752,63 +299056,63 @@ func (obj *patternFlowArpProtocolTypeCounter) Clone() (PatternFlowArpProtocolTyp return newObj, nil } -// PatternFlowArpProtocolTypeCounter is integer counter pattern -type PatternFlowArpProtocolTypeCounter interface { +// PatternFlowIcmpv6EchoSequenceNumberCounter is integer counter pattern +type PatternFlowIcmpv6EchoSequenceNumberCounter interface { Validation - // Msg marshals PatternFlowArpProtocolTypeCounter to protobuf object *otg.PatternFlowArpProtocolTypeCounter + // Msg marshals PatternFlowIcmpv6EchoSequenceNumberCounter to protobuf object *otg.PatternFlowIcmpv6EchoSequenceNumberCounter // and doesn't set defaults - Msg() *otg.PatternFlowArpProtocolTypeCounter - // SetMsg unmarshals PatternFlowArpProtocolTypeCounter from protobuf object *otg.PatternFlowArpProtocolTypeCounter + Msg() *otg.PatternFlowIcmpv6EchoSequenceNumberCounter + // SetMsg unmarshals PatternFlowIcmpv6EchoSequenceNumberCounter from protobuf object *otg.PatternFlowIcmpv6EchoSequenceNumberCounter // and doesn't set defaults - SetMsg(*otg.PatternFlowArpProtocolTypeCounter) PatternFlowArpProtocolTypeCounter - // ToProto marshals PatternFlowArpProtocolTypeCounter to protobuf object *otg.PatternFlowArpProtocolTypeCounter - ToProto() (*otg.PatternFlowArpProtocolTypeCounter, error) - // ToPbText marshals PatternFlowArpProtocolTypeCounter to protobuf text + SetMsg(*otg.PatternFlowIcmpv6EchoSequenceNumberCounter) PatternFlowIcmpv6EchoSequenceNumberCounter + // ToProto marshals PatternFlowIcmpv6EchoSequenceNumberCounter to protobuf object *otg.PatternFlowIcmpv6EchoSequenceNumberCounter + ToProto() (*otg.PatternFlowIcmpv6EchoSequenceNumberCounter, error) + // ToPbText marshals PatternFlowIcmpv6EchoSequenceNumberCounter to protobuf text ToPbText() (string, error) - // ToYaml marshals PatternFlowArpProtocolTypeCounter to YAML text + // ToYaml marshals PatternFlowIcmpv6EchoSequenceNumberCounter to YAML text ToYaml() (string, error) - // ToJson marshals PatternFlowArpProtocolTypeCounter to JSON text + // ToJson marshals PatternFlowIcmpv6EchoSequenceNumberCounter to JSON text ToJson() (string, error) - // FromProto unmarshals PatternFlowArpProtocolTypeCounter from protobuf object *otg.PatternFlowArpProtocolTypeCounter - FromProto(msg *otg.PatternFlowArpProtocolTypeCounter) (PatternFlowArpProtocolTypeCounter, error) - // FromPbText unmarshals PatternFlowArpProtocolTypeCounter from protobuf text + // FromProto unmarshals PatternFlowIcmpv6EchoSequenceNumberCounter from protobuf object *otg.PatternFlowIcmpv6EchoSequenceNumberCounter + FromProto(msg *otg.PatternFlowIcmpv6EchoSequenceNumberCounter) (PatternFlowIcmpv6EchoSequenceNumberCounter, error) + // FromPbText unmarshals PatternFlowIcmpv6EchoSequenceNumberCounter from protobuf text FromPbText(value string) error - // FromYaml unmarshals PatternFlowArpProtocolTypeCounter from YAML text + // FromYaml unmarshals PatternFlowIcmpv6EchoSequenceNumberCounter from YAML text FromYaml(value string) error - // FromJson unmarshals PatternFlowArpProtocolTypeCounter from JSON text + // FromJson unmarshals PatternFlowIcmpv6EchoSequenceNumberCounter from JSON text FromJson(value string) error - // Validate validates PatternFlowArpProtocolTypeCounter + // Validate validates PatternFlowIcmpv6EchoSequenceNumberCounter Validate() error // A stringer function String() string // Clones the object - Clone() (PatternFlowArpProtocolTypeCounter, error) + Clone() (PatternFlowIcmpv6EchoSequenceNumberCounter, error) validateToAndFrom() error validateObj(vObj *validation, set_default bool) setDefault() - // Start returns uint32, set in PatternFlowArpProtocolTypeCounter. + // Start returns uint32, set in PatternFlowIcmpv6EchoSequenceNumberCounter. Start() uint32 - // SetStart assigns uint32 provided by user to PatternFlowArpProtocolTypeCounter - SetStart(value uint32) PatternFlowArpProtocolTypeCounter - // HasStart checks if Start has been set in PatternFlowArpProtocolTypeCounter + // SetStart assigns uint32 provided by user to PatternFlowIcmpv6EchoSequenceNumberCounter + SetStart(value uint32) PatternFlowIcmpv6EchoSequenceNumberCounter + // HasStart checks if Start has been set in PatternFlowIcmpv6EchoSequenceNumberCounter HasStart() bool - // Step returns uint32, set in PatternFlowArpProtocolTypeCounter. + // Step returns uint32, set in PatternFlowIcmpv6EchoSequenceNumberCounter. Step() uint32 - // SetStep assigns uint32 provided by user to PatternFlowArpProtocolTypeCounter - SetStep(value uint32) PatternFlowArpProtocolTypeCounter - // HasStep checks if Step has been set in PatternFlowArpProtocolTypeCounter + // SetStep assigns uint32 provided by user to PatternFlowIcmpv6EchoSequenceNumberCounter + SetStep(value uint32) PatternFlowIcmpv6EchoSequenceNumberCounter + // HasStep checks if Step has been set in PatternFlowIcmpv6EchoSequenceNumberCounter HasStep() bool - // Count returns uint32, set in PatternFlowArpProtocolTypeCounter. + // Count returns uint32, set in PatternFlowIcmpv6EchoSequenceNumberCounter. Count() uint32 - // SetCount assigns uint32 provided by user to PatternFlowArpProtocolTypeCounter - SetCount(value uint32) PatternFlowArpProtocolTypeCounter - // HasCount checks if Count has been set in PatternFlowArpProtocolTypeCounter + // SetCount assigns uint32 provided by user to PatternFlowIcmpv6EchoSequenceNumberCounter + SetCount(value uint32) PatternFlowIcmpv6EchoSequenceNumberCounter + // HasCount checks if Count has been set in PatternFlowIcmpv6EchoSequenceNumberCounter HasCount() bool } // description is TBD // Start returns a uint32 -func (obj *patternFlowArpProtocolTypeCounter) Start() uint32 { +func (obj *patternFlowIcmpv6EchoSequenceNumberCounter) Start() uint32 { return *obj.obj.Start @@ -253816,13 +299120,13 @@ func (obj *patternFlowArpProtocolTypeCounter) Start() uint32 { // description is TBD // Start returns a uint32 -func (obj *patternFlowArpProtocolTypeCounter) HasStart() bool { +func (obj *patternFlowIcmpv6EchoSequenceNumberCounter) HasStart() bool { return obj.obj.Start != nil } // description is TBD -// SetStart sets the uint32 value in the PatternFlowArpProtocolTypeCounter object -func (obj *patternFlowArpProtocolTypeCounter) SetStart(value uint32) PatternFlowArpProtocolTypeCounter { +// SetStart sets the uint32 value in the PatternFlowIcmpv6EchoSequenceNumberCounter object +func (obj *patternFlowIcmpv6EchoSequenceNumberCounter) SetStart(value uint32) PatternFlowIcmpv6EchoSequenceNumberCounter { obj.obj.Start = &value return obj @@ -253830,7 +299134,7 @@ func (obj *patternFlowArpProtocolTypeCounter) SetStart(value uint32) PatternFlow // description is TBD // Step returns a uint32 -func (obj *patternFlowArpProtocolTypeCounter) Step() uint32 { +func (obj *patternFlowIcmpv6EchoSequenceNumberCounter) Step() uint32 { return *obj.obj.Step @@ -253838,13 +299142,13 @@ func (obj *patternFlowArpProtocolTypeCounter) Step() uint32 { // description is TBD // Step returns a uint32 -func (obj *patternFlowArpProtocolTypeCounter) HasStep() bool { +func (obj *patternFlowIcmpv6EchoSequenceNumberCounter) HasStep() bool { return obj.obj.Step != nil } // description is TBD -// SetStep sets the uint32 value in the PatternFlowArpProtocolTypeCounter object -func (obj *patternFlowArpProtocolTypeCounter) SetStep(value uint32) PatternFlowArpProtocolTypeCounter { +// SetStep sets the uint32 value in the PatternFlowIcmpv6EchoSequenceNumberCounter object +func (obj *patternFlowIcmpv6EchoSequenceNumberCounter) SetStep(value uint32) PatternFlowIcmpv6EchoSequenceNumberCounter { obj.obj.Step = &value return obj @@ -253852,7 +299156,7 @@ func (obj *patternFlowArpProtocolTypeCounter) SetStep(value uint32) PatternFlowA // description is TBD // Count returns a uint32 -func (obj *patternFlowArpProtocolTypeCounter) Count() uint32 { +func (obj *patternFlowIcmpv6EchoSequenceNumberCounter) Count() uint32 { return *obj.obj.Count @@ -253860,19 +299164,19 @@ func (obj *patternFlowArpProtocolTypeCounter) Count() uint32 { // description is TBD // Count returns a uint32 -func (obj *patternFlowArpProtocolTypeCounter) HasCount() bool { +func (obj *patternFlowIcmpv6EchoSequenceNumberCounter) HasCount() bool { return obj.obj.Count != nil } // description is TBD -// SetCount sets the uint32 value in the PatternFlowArpProtocolTypeCounter object -func (obj *patternFlowArpProtocolTypeCounter) SetCount(value uint32) PatternFlowArpProtocolTypeCounter { +// SetCount sets the uint32 value in the PatternFlowIcmpv6EchoSequenceNumberCounter object +func (obj *patternFlowIcmpv6EchoSequenceNumberCounter) SetCount(value uint32) PatternFlowIcmpv6EchoSequenceNumberCounter { obj.obj.Count = &value return obj } -func (obj *patternFlowArpProtocolTypeCounter) validateObj(vObj *validation, set_default bool) { +func (obj *patternFlowIcmpv6EchoSequenceNumberCounter) validateObj(vObj *validation, set_default bool) { if set_default { obj.setDefault() } @@ -253882,7 +299186,7 @@ func (obj *patternFlowArpProtocolTypeCounter) validateObj(vObj *validation, set_ if *obj.obj.Start > 65535 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowArpProtocolTypeCounter.Start <= 65535 but Got %d", *obj.obj.Start)) + fmt.Sprintf("0 <= PatternFlowIcmpv6EchoSequenceNumberCounter.Start <= 65535 but Got %d", *obj.obj.Start)) } } @@ -253892,7 +299196,7 @@ func (obj *patternFlowArpProtocolTypeCounter) validateObj(vObj *validation, set_ if *obj.obj.Step > 65535 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowArpProtocolTypeCounter.Step <= 65535 but Got %d", *obj.obj.Step)) + fmt.Sprintf("0 <= PatternFlowIcmpv6EchoSequenceNumberCounter.Step <= 65535 but Got %d", *obj.obj.Step)) } } @@ -253902,16 +299206,16 @@ func (obj *patternFlowArpProtocolTypeCounter) validateObj(vObj *validation, set_ if *obj.obj.Count > 65535 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowArpProtocolTypeCounter.Count <= 65535 but Got %d", *obj.obj.Count)) + fmt.Sprintf("0 <= PatternFlowIcmpv6EchoSequenceNumberCounter.Count <= 65535 but Got %d", *obj.obj.Count)) } } } -func (obj *patternFlowArpProtocolTypeCounter) setDefault() { +func (obj *patternFlowIcmpv6EchoSequenceNumberCounter) setDefault() { if obj.obj.Start == nil { - obj.SetStart(2048) + obj.SetStart(0) } if obj.obj.Step == nil { obj.SetStep(1) @@ -253922,29 +299226,29 @@ func (obj *patternFlowArpProtocolTypeCounter) setDefault() { } -// ***** PatternFlowArpProtocolTypeMetricTag ***** -type patternFlowArpProtocolTypeMetricTag struct { +// ***** PatternFlowIcmpv6EchoSequenceNumberMetricTag ***** +type patternFlowIcmpv6EchoSequenceNumberMetricTag struct { validation - obj *otg.PatternFlowArpProtocolTypeMetricTag + obj *otg.PatternFlowIcmpv6EchoSequenceNumberMetricTag } -func NewPatternFlowArpProtocolTypeMetricTag() PatternFlowArpProtocolTypeMetricTag { - obj := patternFlowArpProtocolTypeMetricTag{obj: &otg.PatternFlowArpProtocolTypeMetricTag{}} +func NewPatternFlowIcmpv6EchoSequenceNumberMetricTag() PatternFlowIcmpv6EchoSequenceNumberMetricTag { + obj := patternFlowIcmpv6EchoSequenceNumberMetricTag{obj: &otg.PatternFlowIcmpv6EchoSequenceNumberMetricTag{}} obj.setDefault() return &obj } -func (obj *patternFlowArpProtocolTypeMetricTag) Msg() *otg.PatternFlowArpProtocolTypeMetricTag { +func (obj *patternFlowIcmpv6EchoSequenceNumberMetricTag) Msg() *otg.PatternFlowIcmpv6EchoSequenceNumberMetricTag { return obj.obj } -func (obj *patternFlowArpProtocolTypeMetricTag) SetMsg(msg *otg.PatternFlowArpProtocolTypeMetricTag) PatternFlowArpProtocolTypeMetricTag { +func (obj *patternFlowIcmpv6EchoSequenceNumberMetricTag) SetMsg(msg *otg.PatternFlowIcmpv6EchoSequenceNumberMetricTag) PatternFlowIcmpv6EchoSequenceNumberMetricTag { proto.Merge(obj.obj, msg) return obj } -func (obj *patternFlowArpProtocolTypeMetricTag) ToProto() (*otg.PatternFlowArpProtocolTypeMetricTag, error) { +func (obj *patternFlowIcmpv6EchoSequenceNumberMetricTag) ToProto() (*otg.PatternFlowIcmpv6EchoSequenceNumberMetricTag, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -253952,7 +299256,7 @@ func (obj *patternFlowArpProtocolTypeMetricTag) ToProto() (*otg.PatternFlowArpPr return obj.Msg(), nil } -func (obj *patternFlowArpProtocolTypeMetricTag) FromProto(msg *otg.PatternFlowArpProtocolTypeMetricTag) (PatternFlowArpProtocolTypeMetricTag, error) { +func (obj *patternFlowIcmpv6EchoSequenceNumberMetricTag) FromProto(msg *otg.PatternFlowIcmpv6EchoSequenceNumberMetricTag) (PatternFlowIcmpv6EchoSequenceNumberMetricTag, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -253961,7 +299265,7 @@ func (obj *patternFlowArpProtocolTypeMetricTag) FromProto(msg *otg.PatternFlowAr return newObj, nil } -func (obj *patternFlowArpProtocolTypeMetricTag) ToPbText() (string, error) { +func (obj *patternFlowIcmpv6EchoSequenceNumberMetricTag) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -253973,7 +299277,7 @@ func (obj *patternFlowArpProtocolTypeMetricTag) ToPbText() (string, error) { return string(protoMarshal), nil } -func (obj *patternFlowArpProtocolTypeMetricTag) FromPbText(value string) error { +func (obj *patternFlowIcmpv6EchoSequenceNumberMetricTag) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj @@ -253986,7 +299290,7 @@ func (obj *patternFlowArpProtocolTypeMetricTag) FromPbText(value string) error { return retObj } -func (obj *patternFlowArpProtocolTypeMetricTag) ToYaml() (string, error) { +func (obj *patternFlowIcmpv6EchoSequenceNumberMetricTag) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -254007,7 +299311,7 @@ func (obj *patternFlowArpProtocolTypeMetricTag) ToYaml() (string, error) { return string(data), nil } -func (obj *patternFlowArpProtocolTypeMetricTag) FromYaml(value string) error { +func (obj *patternFlowIcmpv6EchoSequenceNumberMetricTag) FromYaml(value string) error { if value == "" { value = "{}" } @@ -254032,7 +299336,7 @@ func (obj *patternFlowArpProtocolTypeMetricTag) FromYaml(value string) error { return nil } -func (obj *patternFlowArpProtocolTypeMetricTag) ToJson() (string, error) { +func (obj *patternFlowIcmpv6EchoSequenceNumberMetricTag) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -254050,7 +299354,7 @@ func (obj *patternFlowArpProtocolTypeMetricTag) ToJson() (string, error) { return string(data), nil } -func (obj *patternFlowArpProtocolTypeMetricTag) FromJson(value string) error { +func (obj *patternFlowIcmpv6EchoSequenceNumberMetricTag) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -254071,19 +299375,19 @@ func (obj *patternFlowArpProtocolTypeMetricTag) FromJson(value string) error { return nil } -func (obj *patternFlowArpProtocolTypeMetricTag) validateToAndFrom() error { +func (obj *patternFlowIcmpv6EchoSequenceNumberMetricTag) validateToAndFrom() error { // emptyVars() obj.validateObj(&obj.validation, true) return obj.validationResult() } -func (obj *patternFlowArpProtocolTypeMetricTag) Validate() error { +func (obj *patternFlowIcmpv6EchoSequenceNumberMetricTag) Validate() error { // emptyVars() obj.validateObj(&obj.validation, false) return obj.validationResult() } -func (obj *patternFlowArpProtocolTypeMetricTag) String() string { +func (obj *patternFlowIcmpv6EchoSequenceNumberMetricTag) String() string { str, err := obj.ToYaml() if err != nil { return err.Error() @@ -254091,12 +299395,12 @@ func (obj *patternFlowArpProtocolTypeMetricTag) String() string { return str } -func (obj *patternFlowArpProtocolTypeMetricTag) Clone() (PatternFlowArpProtocolTypeMetricTag, error) { +func (obj *patternFlowIcmpv6EchoSequenceNumberMetricTag) Clone() (PatternFlowIcmpv6EchoSequenceNumberMetricTag, error) { vErr := obj.Validate() if vErr != nil { return nil, vErr } - newObj := NewPatternFlowArpProtocolTypeMetricTag() + newObj := NewPatternFlowIcmpv6EchoSequenceNumberMetricTag() data, err := proto.Marshal(obj.Msg()) if err != nil { return nil, err @@ -254108,69 +299412,69 @@ func (obj *patternFlowArpProtocolTypeMetricTag) Clone() (PatternFlowArpProtocolT return newObj, nil } -// PatternFlowArpProtocolTypeMetricTag is metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. -type PatternFlowArpProtocolTypeMetricTag interface { +// PatternFlowIcmpv6EchoSequenceNumberMetricTag is metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. +type PatternFlowIcmpv6EchoSequenceNumberMetricTag interface { Validation - // Msg marshals PatternFlowArpProtocolTypeMetricTag to protobuf object *otg.PatternFlowArpProtocolTypeMetricTag + // Msg marshals PatternFlowIcmpv6EchoSequenceNumberMetricTag to protobuf object *otg.PatternFlowIcmpv6EchoSequenceNumberMetricTag // and doesn't set defaults - Msg() *otg.PatternFlowArpProtocolTypeMetricTag - // SetMsg unmarshals PatternFlowArpProtocolTypeMetricTag from protobuf object *otg.PatternFlowArpProtocolTypeMetricTag + Msg() *otg.PatternFlowIcmpv6EchoSequenceNumberMetricTag + // SetMsg unmarshals PatternFlowIcmpv6EchoSequenceNumberMetricTag from protobuf object *otg.PatternFlowIcmpv6EchoSequenceNumberMetricTag // and doesn't set defaults - SetMsg(*otg.PatternFlowArpProtocolTypeMetricTag) PatternFlowArpProtocolTypeMetricTag - // ToProto marshals PatternFlowArpProtocolTypeMetricTag to protobuf object *otg.PatternFlowArpProtocolTypeMetricTag - ToProto() (*otg.PatternFlowArpProtocolTypeMetricTag, error) - // ToPbText marshals PatternFlowArpProtocolTypeMetricTag to protobuf text + SetMsg(*otg.PatternFlowIcmpv6EchoSequenceNumberMetricTag) PatternFlowIcmpv6EchoSequenceNumberMetricTag + // ToProto marshals PatternFlowIcmpv6EchoSequenceNumberMetricTag to protobuf object *otg.PatternFlowIcmpv6EchoSequenceNumberMetricTag + ToProto() (*otg.PatternFlowIcmpv6EchoSequenceNumberMetricTag, error) + // ToPbText marshals PatternFlowIcmpv6EchoSequenceNumberMetricTag to protobuf text ToPbText() (string, error) - // ToYaml marshals PatternFlowArpProtocolTypeMetricTag to YAML text + // ToYaml marshals PatternFlowIcmpv6EchoSequenceNumberMetricTag to YAML text ToYaml() (string, error) - // ToJson marshals PatternFlowArpProtocolTypeMetricTag to JSON text + // ToJson marshals PatternFlowIcmpv6EchoSequenceNumberMetricTag to JSON text ToJson() (string, error) - // FromProto unmarshals PatternFlowArpProtocolTypeMetricTag from protobuf object *otg.PatternFlowArpProtocolTypeMetricTag - FromProto(msg *otg.PatternFlowArpProtocolTypeMetricTag) (PatternFlowArpProtocolTypeMetricTag, error) - // FromPbText unmarshals PatternFlowArpProtocolTypeMetricTag from protobuf text + // FromProto unmarshals PatternFlowIcmpv6EchoSequenceNumberMetricTag from protobuf object *otg.PatternFlowIcmpv6EchoSequenceNumberMetricTag + FromProto(msg *otg.PatternFlowIcmpv6EchoSequenceNumberMetricTag) (PatternFlowIcmpv6EchoSequenceNumberMetricTag, error) + // FromPbText unmarshals PatternFlowIcmpv6EchoSequenceNumberMetricTag from protobuf text FromPbText(value string) error - // FromYaml unmarshals PatternFlowArpProtocolTypeMetricTag from YAML text + // FromYaml unmarshals PatternFlowIcmpv6EchoSequenceNumberMetricTag from YAML text FromYaml(value string) error - // FromJson unmarshals PatternFlowArpProtocolTypeMetricTag from JSON text + // FromJson unmarshals PatternFlowIcmpv6EchoSequenceNumberMetricTag from JSON text FromJson(value string) error - // Validate validates PatternFlowArpProtocolTypeMetricTag + // Validate validates PatternFlowIcmpv6EchoSequenceNumberMetricTag Validate() error // A stringer function String() string // Clones the object - Clone() (PatternFlowArpProtocolTypeMetricTag, error) + Clone() (PatternFlowIcmpv6EchoSequenceNumberMetricTag, error) validateToAndFrom() error validateObj(vObj *validation, set_default bool) setDefault() - // Name returns string, set in PatternFlowArpProtocolTypeMetricTag. + // Name returns string, set in PatternFlowIcmpv6EchoSequenceNumberMetricTag. Name() string - // SetName assigns string provided by user to PatternFlowArpProtocolTypeMetricTag - SetName(value string) PatternFlowArpProtocolTypeMetricTag - // Offset returns uint32, set in PatternFlowArpProtocolTypeMetricTag. + // SetName assigns string provided by user to PatternFlowIcmpv6EchoSequenceNumberMetricTag + SetName(value string) PatternFlowIcmpv6EchoSequenceNumberMetricTag + // Offset returns uint32, set in PatternFlowIcmpv6EchoSequenceNumberMetricTag. Offset() uint32 - // SetOffset assigns uint32 provided by user to PatternFlowArpProtocolTypeMetricTag - SetOffset(value uint32) PatternFlowArpProtocolTypeMetricTag - // HasOffset checks if Offset has been set in PatternFlowArpProtocolTypeMetricTag + // SetOffset assigns uint32 provided by user to PatternFlowIcmpv6EchoSequenceNumberMetricTag + SetOffset(value uint32) PatternFlowIcmpv6EchoSequenceNumberMetricTag + // HasOffset checks if Offset has been set in PatternFlowIcmpv6EchoSequenceNumberMetricTag HasOffset() bool - // Length returns uint32, set in PatternFlowArpProtocolTypeMetricTag. + // Length returns uint32, set in PatternFlowIcmpv6EchoSequenceNumberMetricTag. Length() uint32 - // SetLength assigns uint32 provided by user to PatternFlowArpProtocolTypeMetricTag - SetLength(value uint32) PatternFlowArpProtocolTypeMetricTag - // HasLength checks if Length has been set in PatternFlowArpProtocolTypeMetricTag + // SetLength assigns uint32 provided by user to PatternFlowIcmpv6EchoSequenceNumberMetricTag + SetLength(value uint32) PatternFlowIcmpv6EchoSequenceNumberMetricTag + // HasLength checks if Length has been set in PatternFlowIcmpv6EchoSequenceNumberMetricTag HasLength() bool } // Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field // Name returns a string -func (obj *patternFlowArpProtocolTypeMetricTag) Name() string { +func (obj *patternFlowIcmpv6EchoSequenceNumberMetricTag) Name() string { return *obj.obj.Name } // Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field -// SetName sets the string value in the PatternFlowArpProtocolTypeMetricTag object -func (obj *patternFlowArpProtocolTypeMetricTag) SetName(value string) PatternFlowArpProtocolTypeMetricTag { +// SetName sets the string value in the PatternFlowIcmpv6EchoSequenceNumberMetricTag object +func (obj *patternFlowIcmpv6EchoSequenceNumberMetricTag) SetName(value string) PatternFlowIcmpv6EchoSequenceNumberMetricTag { obj.obj.Name = &value return obj @@ -254178,7 +299482,7 @@ func (obj *patternFlowArpProtocolTypeMetricTag) SetName(value string) PatternFlo // Offset in bits relative to start of corresponding header field // Offset returns a uint32 -func (obj *patternFlowArpProtocolTypeMetricTag) Offset() uint32 { +func (obj *patternFlowIcmpv6EchoSequenceNumberMetricTag) Offset() uint32 { return *obj.obj.Offset @@ -254186,13 +299490,13 @@ func (obj *patternFlowArpProtocolTypeMetricTag) Offset() uint32 { // Offset in bits relative to start of corresponding header field // Offset returns a uint32 -func (obj *patternFlowArpProtocolTypeMetricTag) HasOffset() bool { +func (obj *patternFlowIcmpv6EchoSequenceNumberMetricTag) HasOffset() bool { return obj.obj.Offset != nil } // Offset in bits relative to start of corresponding header field -// SetOffset sets the uint32 value in the PatternFlowArpProtocolTypeMetricTag object -func (obj *patternFlowArpProtocolTypeMetricTag) SetOffset(value uint32) PatternFlowArpProtocolTypeMetricTag { +// SetOffset sets the uint32 value in the PatternFlowIcmpv6EchoSequenceNumberMetricTag object +func (obj *patternFlowIcmpv6EchoSequenceNumberMetricTag) SetOffset(value uint32) PatternFlowIcmpv6EchoSequenceNumberMetricTag { obj.obj.Offset = &value return obj @@ -254200,7 +299504,7 @@ func (obj *patternFlowArpProtocolTypeMetricTag) SetOffset(value uint32) PatternF // Number of bits to track for metrics starting from configured offset of corresponding header field // Length returns a uint32 -func (obj *patternFlowArpProtocolTypeMetricTag) Length() uint32 { +func (obj *patternFlowIcmpv6EchoSequenceNumberMetricTag) Length() uint32 { return *obj.obj.Length @@ -254208,26 +299512,26 @@ func (obj *patternFlowArpProtocolTypeMetricTag) Length() uint32 { // Number of bits to track for metrics starting from configured offset of corresponding header field // Length returns a uint32 -func (obj *patternFlowArpProtocolTypeMetricTag) HasLength() bool { +func (obj *patternFlowIcmpv6EchoSequenceNumberMetricTag) HasLength() bool { return obj.obj.Length != nil } // Number of bits to track for metrics starting from configured offset of corresponding header field -// SetLength sets the uint32 value in the PatternFlowArpProtocolTypeMetricTag object -func (obj *patternFlowArpProtocolTypeMetricTag) SetLength(value uint32) PatternFlowArpProtocolTypeMetricTag { +// SetLength sets the uint32 value in the PatternFlowIcmpv6EchoSequenceNumberMetricTag object +func (obj *patternFlowIcmpv6EchoSequenceNumberMetricTag) SetLength(value uint32) PatternFlowIcmpv6EchoSequenceNumberMetricTag { obj.obj.Length = &value return obj } -func (obj *patternFlowArpProtocolTypeMetricTag) validateObj(vObj *validation, set_default bool) { +func (obj *patternFlowIcmpv6EchoSequenceNumberMetricTag) validateObj(vObj *validation, set_default bool) { if set_default { obj.setDefault() } // Name is required if obj.obj.Name == nil { - vObj.validationErrors = append(vObj.validationErrors, "Name is required field on interface PatternFlowArpProtocolTypeMetricTag") + vObj.validationErrors = append(vObj.validationErrors, "Name is required field on interface PatternFlowIcmpv6EchoSequenceNumberMetricTag") } if obj.obj.Offset != nil { @@ -254235,7 +299539,7 @@ func (obj *patternFlowArpProtocolTypeMetricTag) validateObj(vObj *validation, se if *obj.obj.Offset > 15 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowArpProtocolTypeMetricTag.Offset <= 15 but Got %d", *obj.obj.Offset)) + fmt.Sprintf("0 <= PatternFlowIcmpv6EchoSequenceNumberMetricTag.Offset <= 15 but Got %d", *obj.obj.Offset)) } } @@ -254245,14 +299549,14 @@ func (obj *patternFlowArpProtocolTypeMetricTag) validateObj(vObj *validation, se if *obj.obj.Length < 1 || *obj.obj.Length > 16 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("1 <= PatternFlowArpProtocolTypeMetricTag.Length <= 16 but Got %d", *obj.obj.Length)) + fmt.Sprintf("1 <= PatternFlowIcmpv6EchoSequenceNumberMetricTag.Length <= 16 but Got %d", *obj.obj.Length)) } } } -func (obj *patternFlowArpProtocolTypeMetricTag) setDefault() { +func (obj *patternFlowIcmpv6EchoSequenceNumberMetricTag) setDefault() { if obj.obj.Offset == nil { obj.SetOffset(0) } @@ -254262,29 +299566,31 @@ func (obj *patternFlowArpProtocolTypeMetricTag) setDefault() { } -// ***** PatternFlowArpHardwareLengthCounter ***** -type patternFlowArpHardwareLengthCounter struct { +// ***** FlowRSVPPathObjects ***** +type flowRSVPPathObjects struct { validation - obj *otg.PatternFlowArpHardwareLengthCounter + obj *otg.FlowRSVPPathObjects + lengthHolder FlowRSVPPathObjectLength + classNumHolder FlowRSVPPathObjectsClass } -func NewPatternFlowArpHardwareLengthCounter() PatternFlowArpHardwareLengthCounter { - obj := patternFlowArpHardwareLengthCounter{obj: &otg.PatternFlowArpHardwareLengthCounter{}} +func NewFlowRSVPPathObjects() FlowRSVPPathObjects { + obj := flowRSVPPathObjects{obj: &otg.FlowRSVPPathObjects{}} obj.setDefault() return &obj } -func (obj *patternFlowArpHardwareLengthCounter) Msg() *otg.PatternFlowArpHardwareLengthCounter { +func (obj *flowRSVPPathObjects) Msg() *otg.FlowRSVPPathObjects { return obj.obj } -func (obj *patternFlowArpHardwareLengthCounter) SetMsg(msg *otg.PatternFlowArpHardwareLengthCounter) PatternFlowArpHardwareLengthCounter { - +func (obj *flowRSVPPathObjects) SetMsg(msg *otg.FlowRSVPPathObjects) FlowRSVPPathObjects { + obj.setNil() proto.Merge(obj.obj, msg) return obj } -func (obj *patternFlowArpHardwareLengthCounter) ToProto() (*otg.PatternFlowArpHardwareLengthCounter, error) { +func (obj *flowRSVPPathObjects) ToProto() (*otg.FlowRSVPPathObjects, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -254292,7 +299598,7 @@ func (obj *patternFlowArpHardwareLengthCounter) ToProto() (*otg.PatternFlowArpHa return obj.Msg(), nil } -func (obj *patternFlowArpHardwareLengthCounter) FromProto(msg *otg.PatternFlowArpHardwareLengthCounter) (PatternFlowArpHardwareLengthCounter, error) { +func (obj *flowRSVPPathObjects) FromProto(msg *otg.FlowRSVPPathObjects) (FlowRSVPPathObjects, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -254301,7 +299607,7 @@ func (obj *patternFlowArpHardwareLengthCounter) FromProto(msg *otg.PatternFlowAr return newObj, nil } -func (obj *patternFlowArpHardwareLengthCounter) ToPbText() (string, error) { +func (obj *flowRSVPPathObjects) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -254313,12 +299619,12 @@ func (obj *patternFlowArpHardwareLengthCounter) ToPbText() (string, error) { return string(protoMarshal), nil } -func (obj *patternFlowArpHardwareLengthCounter) FromPbText(value string) error { +func (obj *flowRSVPPathObjects) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj } - + obj.setNil() vErr := obj.validateToAndFrom() if vErr != nil { return vErr @@ -254326,7 +299632,7 @@ func (obj *patternFlowArpHardwareLengthCounter) FromPbText(value string) error { return retObj } -func (obj *patternFlowArpHardwareLengthCounter) ToYaml() (string, error) { +func (obj *flowRSVPPathObjects) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -254347,7 +299653,7 @@ func (obj *patternFlowArpHardwareLengthCounter) ToYaml() (string, error) { return string(data), nil } -func (obj *patternFlowArpHardwareLengthCounter) FromYaml(value string) error { +func (obj *flowRSVPPathObjects) FromYaml(value string) error { if value == "" { value = "{}" } @@ -254364,7 +299670,7 @@ func (obj *patternFlowArpHardwareLengthCounter) FromYaml(value string) error { return fmt.Errorf("unmarshal error %s", strings.Replace( uError.Error(), "\u00a0", " ", -1)[7:]) } - + obj.setNil() vErr := obj.validateToAndFrom() if vErr != nil { return vErr @@ -254372,7 +299678,7 @@ func (obj *patternFlowArpHardwareLengthCounter) FromYaml(value string) error { return nil } -func (obj *patternFlowArpHardwareLengthCounter) ToJson() (string, error) { +func (obj *flowRSVPPathObjects) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -254390,7 +299696,7 @@ func (obj *patternFlowArpHardwareLengthCounter) ToJson() (string, error) { return string(data), nil } -func (obj *patternFlowArpHardwareLengthCounter) FromJson(value string) error { +func (obj *flowRSVPPathObjects) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -254403,7 +299709,7 @@ func (obj *patternFlowArpHardwareLengthCounter) FromJson(value string) error { return fmt.Errorf("unmarshal error %s", strings.Replace( uError.Error(), "\u00a0", " ", -1)[7:]) } - + obj.setNil() err := obj.validateToAndFrom() if err != nil { return err @@ -254411,19 +299717,19 @@ func (obj *patternFlowArpHardwareLengthCounter) FromJson(value string) error { return nil } -func (obj *patternFlowArpHardwareLengthCounter) validateToAndFrom() error { +func (obj *flowRSVPPathObjects) validateToAndFrom() error { // emptyVars() obj.validateObj(&obj.validation, true) return obj.validationResult() } -func (obj *patternFlowArpHardwareLengthCounter) Validate() error { +func (obj *flowRSVPPathObjects) Validate() error { // emptyVars() obj.validateObj(&obj.validation, false) return obj.validationResult() } -func (obj *patternFlowArpHardwareLengthCounter) String() string { +func (obj *flowRSVPPathObjects) String() string { str, err := obj.ToYaml() if err != nil { return err.Error() @@ -254431,12 +299737,12 @@ func (obj *patternFlowArpHardwareLengthCounter) String() string { return str } -func (obj *patternFlowArpHardwareLengthCounter) Clone() (PatternFlowArpHardwareLengthCounter, error) { +func (obj *flowRSVPPathObjects) Clone() (FlowRSVPPathObjects, error) { vErr := obj.Validate() if vErr != nil { return nil, vErr } - newObj := NewPatternFlowArpHardwareLengthCounter() + newObj := NewFlowRSVPPathObjects() data, err := proto.Marshal(obj.Msg()) if err != nil { return nil, err @@ -254448,199 +299754,502 @@ func (obj *patternFlowArpHardwareLengthCounter) Clone() (PatternFlowArpHardwareL return newObj, nil } -// PatternFlowArpHardwareLengthCounter is integer counter pattern -type PatternFlowArpHardwareLengthCounter interface { +func (obj *flowRSVPPathObjects) setNil() { + obj.lengthHolder = nil + obj.classNumHolder = nil + obj.validationErrors = nil + obj.warnings = nil + obj.constraints = make(map[string]map[string]Constraints) +} + +// FlowRSVPPathObjects is every RSVP object encapsulated in an RSVP message consists of a 32-bit word header and the object's contents. +type FlowRSVPPathObjects interface { Validation - // Msg marshals PatternFlowArpHardwareLengthCounter to protobuf object *otg.PatternFlowArpHardwareLengthCounter + // Msg marshals FlowRSVPPathObjects to protobuf object *otg.FlowRSVPPathObjects // and doesn't set defaults - Msg() *otg.PatternFlowArpHardwareLengthCounter - // SetMsg unmarshals PatternFlowArpHardwareLengthCounter from protobuf object *otg.PatternFlowArpHardwareLengthCounter + Msg() *otg.FlowRSVPPathObjects + // SetMsg unmarshals FlowRSVPPathObjects from protobuf object *otg.FlowRSVPPathObjects // and doesn't set defaults - SetMsg(*otg.PatternFlowArpHardwareLengthCounter) PatternFlowArpHardwareLengthCounter - // ToProto marshals PatternFlowArpHardwareLengthCounter to protobuf object *otg.PatternFlowArpHardwareLengthCounter - ToProto() (*otg.PatternFlowArpHardwareLengthCounter, error) - // ToPbText marshals PatternFlowArpHardwareLengthCounter to protobuf text + SetMsg(*otg.FlowRSVPPathObjects) FlowRSVPPathObjects + // ToProto marshals FlowRSVPPathObjects to protobuf object *otg.FlowRSVPPathObjects + ToProto() (*otg.FlowRSVPPathObjects, error) + // ToPbText marshals FlowRSVPPathObjects to protobuf text ToPbText() (string, error) - // ToYaml marshals PatternFlowArpHardwareLengthCounter to YAML text + // ToYaml marshals FlowRSVPPathObjects to YAML text ToYaml() (string, error) - // ToJson marshals PatternFlowArpHardwareLengthCounter to JSON text + // ToJson marshals FlowRSVPPathObjects to JSON text ToJson() (string, error) - // FromProto unmarshals PatternFlowArpHardwareLengthCounter from protobuf object *otg.PatternFlowArpHardwareLengthCounter - FromProto(msg *otg.PatternFlowArpHardwareLengthCounter) (PatternFlowArpHardwareLengthCounter, error) - // FromPbText unmarshals PatternFlowArpHardwareLengthCounter from protobuf text + // FromProto unmarshals FlowRSVPPathObjects from protobuf object *otg.FlowRSVPPathObjects + FromProto(msg *otg.FlowRSVPPathObjects) (FlowRSVPPathObjects, error) + // FromPbText unmarshals FlowRSVPPathObjects from protobuf text FromPbText(value string) error - // FromYaml unmarshals PatternFlowArpHardwareLengthCounter from YAML text + // FromYaml unmarshals FlowRSVPPathObjects from YAML text FromYaml(value string) error - // FromJson unmarshals PatternFlowArpHardwareLengthCounter from JSON text + // FromJson unmarshals FlowRSVPPathObjects from JSON text FromJson(value string) error - // Validate validates PatternFlowArpHardwareLengthCounter + // Validate validates FlowRSVPPathObjects Validate() error // A stringer function String() string // Clones the object - Clone() (PatternFlowArpHardwareLengthCounter, error) + Clone() (FlowRSVPPathObjects, error) validateToAndFrom() error validateObj(vObj *validation, set_default bool) setDefault() - // Start returns uint32, set in PatternFlowArpHardwareLengthCounter. - Start() uint32 - // SetStart assigns uint32 provided by user to PatternFlowArpHardwareLengthCounter - SetStart(value uint32) PatternFlowArpHardwareLengthCounter - // HasStart checks if Start has been set in PatternFlowArpHardwareLengthCounter - HasStart() bool - // Step returns uint32, set in PatternFlowArpHardwareLengthCounter. - Step() uint32 - // SetStep assigns uint32 provided by user to PatternFlowArpHardwareLengthCounter - SetStep(value uint32) PatternFlowArpHardwareLengthCounter - // HasStep checks if Step has been set in PatternFlowArpHardwareLengthCounter - HasStep() bool - // Count returns uint32, set in PatternFlowArpHardwareLengthCounter. - Count() uint32 - // SetCount assigns uint32 provided by user to PatternFlowArpHardwareLengthCounter - SetCount(value uint32) PatternFlowArpHardwareLengthCounter - // HasCount checks if Count has been set in PatternFlowArpHardwareLengthCounter - HasCount() bool + // Length returns FlowRSVPPathObjectLength, set in FlowRSVPPathObjects. + // FlowRSVPPathObjectLength is description is TBD + Length() FlowRSVPPathObjectLength + // SetLength assigns FlowRSVPPathObjectLength provided by user to FlowRSVPPathObjects. + // FlowRSVPPathObjectLength is description is TBD + SetLength(value FlowRSVPPathObjectLength) FlowRSVPPathObjects + // HasLength checks if Length has been set in FlowRSVPPathObjects + HasLength() bool + // ClassNum returns FlowRSVPPathObjectsClass, set in FlowRSVPPathObjects. + // FlowRSVPPathObjectsClass is the class number is used to identify the class of an object. Defined in https://www.iana.org/assignments/rsvp-parameters/rsvp-parameters.xhtml#rsvp-parameters-4 . Curently supported class numbers are for "path" message type. "path" message: Supported Class numbers and it's value: SESSION: 1, RSVP_HOP: 3, TIME_VALUES: 5, EXPLICIT_ROUTE: 20, LABEL_REQUEST: 19, SESSION_ATTRIBUTE: 207, SENDER_TEMPLATE: 11, SENDER_TSPEC: 12, RECORD_ROUTE: 21, Custom: User defined bytes based on class and c-types not suppored in above options. + ClassNum() FlowRSVPPathObjectsClass + // SetClassNum assigns FlowRSVPPathObjectsClass provided by user to FlowRSVPPathObjects. + // FlowRSVPPathObjectsClass is the class number is used to identify the class of an object. Defined in https://www.iana.org/assignments/rsvp-parameters/rsvp-parameters.xhtml#rsvp-parameters-4 . Curently supported class numbers are for "path" message type. "path" message: Supported Class numbers and it's value: SESSION: 1, RSVP_HOP: 3, TIME_VALUES: 5, EXPLICIT_ROUTE: 20, LABEL_REQUEST: 19, SESSION_ATTRIBUTE: 207, SENDER_TEMPLATE: 11, SENDER_TSPEC: 12, RECORD_ROUTE: 21, Custom: User defined bytes based on class and c-types not suppored in above options. + SetClassNum(value FlowRSVPPathObjectsClass) FlowRSVPPathObjects + // HasClassNum checks if ClassNum has been set in FlowRSVPPathObjects + HasClassNum() bool + setNil() } -// description is TBD -// Start returns a uint32 -func (obj *patternFlowArpHardwareLengthCounter) Start() uint32 { +// A 16-bit field containing the total object length in bytes. Must always be a multiple of 4, and at least 4. +// Length returns a FlowRSVPPathObjectLength +func (obj *flowRSVPPathObjects) Length() FlowRSVPPathObjectLength { + if obj.obj.Length == nil { + obj.obj.Length = NewFlowRSVPPathObjectLength().Msg() + } + if obj.lengthHolder == nil { + obj.lengthHolder = &flowRSVPPathObjectLength{obj: obj.obj.Length} + } + return obj.lengthHolder +} - return *obj.obj.Start +// A 16-bit field containing the total object length in bytes. Must always be a multiple of 4, and at least 4. +// Length returns a FlowRSVPPathObjectLength +func (obj *flowRSVPPathObjects) HasLength() bool { + return obj.obj.Length != nil +} + +// A 16-bit field containing the total object length in bytes. Must always be a multiple of 4, and at least 4. +// SetLength sets the FlowRSVPPathObjectLength value in the FlowRSVPPathObjects object +func (obj *flowRSVPPathObjects) SetLength(value FlowRSVPPathObjectLength) FlowRSVPPathObjects { + + obj.lengthHolder = nil + obj.obj.Length = value.Msg() + return obj } // description is TBD -// Start returns a uint32 -func (obj *patternFlowArpHardwareLengthCounter) HasStart() bool { - return obj.obj.Start != nil +// ClassNum returns a FlowRSVPPathObjectsClass +func (obj *flowRSVPPathObjects) ClassNum() FlowRSVPPathObjectsClass { + if obj.obj.ClassNum == nil { + obj.obj.ClassNum = NewFlowRSVPPathObjectsClass().Msg() + } + if obj.classNumHolder == nil { + obj.classNumHolder = &flowRSVPPathObjectsClass{obj: obj.obj.ClassNum} + } + return obj.classNumHolder } // description is TBD -// SetStart sets the uint32 value in the PatternFlowArpHardwareLengthCounter object -func (obj *patternFlowArpHardwareLengthCounter) SetStart(value uint32) PatternFlowArpHardwareLengthCounter { +// ClassNum returns a FlowRSVPPathObjectsClass +func (obj *flowRSVPPathObjects) HasClassNum() bool { + return obj.obj.ClassNum != nil +} + +// description is TBD +// SetClassNum sets the FlowRSVPPathObjectsClass value in the FlowRSVPPathObjects object +func (obj *flowRSVPPathObjects) SetClassNum(value FlowRSVPPathObjectsClass) FlowRSVPPathObjects { + + obj.classNumHolder = nil + obj.obj.ClassNum = value.Msg() - obj.obj.Start = &value return obj } -// description is TBD -// Step returns a uint32 -func (obj *patternFlowArpHardwareLengthCounter) Step() uint32 { +func (obj *flowRSVPPathObjects) validateObj(vObj *validation, set_default bool) { + if set_default { + obj.setDefault() + } - return *obj.obj.Step + if obj.obj.Length != nil { + + obj.Length().validateObj(vObj, set_default) + } + + if obj.obj.ClassNum != nil { + + obj.ClassNum().validateObj(vObj, set_default) + } } -// description is TBD -// Step returns a uint32 -func (obj *patternFlowArpHardwareLengthCounter) HasStep() bool { - return obj.obj.Step != nil +func (obj *flowRSVPPathObjects) setDefault() { + } -// description is TBD -// SetStep sets the uint32 value in the PatternFlowArpHardwareLengthCounter object -func (obj *patternFlowArpHardwareLengthCounter) SetStep(value uint32) PatternFlowArpHardwareLengthCounter { +// ***** ActionResponseProtocolIpv4PingResponse ***** +type actionResponseProtocolIpv4PingResponse struct { + validation + obj *otg.ActionResponseProtocolIpv4PingResponse +} - obj.obj.Step = &value - return obj +func NewActionResponseProtocolIpv4PingResponse() ActionResponseProtocolIpv4PingResponse { + obj := actionResponseProtocolIpv4PingResponse{obj: &otg.ActionResponseProtocolIpv4PingResponse{}} + obj.setDefault() + return &obj } -// description is TBD -// Count returns a uint32 -func (obj *patternFlowArpHardwareLengthCounter) Count() uint32 { +func (obj *actionResponseProtocolIpv4PingResponse) Msg() *otg.ActionResponseProtocolIpv4PingResponse { + return obj.obj +} - return *obj.obj.Count +func (obj *actionResponseProtocolIpv4PingResponse) SetMsg(msg *otg.ActionResponseProtocolIpv4PingResponse) ActionResponseProtocolIpv4PingResponse { + proto.Merge(obj.obj, msg) + return obj } -// description is TBD -// Count returns a uint32 -func (obj *patternFlowArpHardwareLengthCounter) HasCount() bool { - return obj.obj.Count != nil +func (obj *actionResponseProtocolIpv4PingResponse) ToProto() (*otg.ActionResponseProtocolIpv4PingResponse, error) { + err := obj.validateToAndFrom() + if err != nil { + return nil, err + } + return obj.Msg(), nil } -// description is TBD -// SetCount sets the uint32 value in the PatternFlowArpHardwareLengthCounter object -func (obj *patternFlowArpHardwareLengthCounter) SetCount(value uint32) PatternFlowArpHardwareLengthCounter { +func (obj *actionResponseProtocolIpv4PingResponse) FromProto(msg *otg.ActionResponseProtocolIpv4PingResponse) (ActionResponseProtocolIpv4PingResponse, error) { + newObj := obj.SetMsg(msg) + err := newObj.validateToAndFrom() + if err != nil { + return nil, err + } + return newObj, nil +} - obj.obj.Count = &value - return obj +func (obj *actionResponseProtocolIpv4PingResponse) ToPbText() (string, error) { + vErr := obj.validateToAndFrom() + if vErr != nil { + return "", vErr + } + protoMarshal, err := proto.Marshal(obj.Msg()) + if err != nil { + return "", err + } + return string(protoMarshal), nil } -func (obj *patternFlowArpHardwareLengthCounter) validateObj(vObj *validation, set_default bool) { - if set_default { - obj.setDefault() +func (obj *actionResponseProtocolIpv4PingResponse) FromPbText(value string) error { + retObj := proto.Unmarshal([]byte(value), obj.Msg()) + if retObj != nil { + return retObj } - if obj.obj.Start != nil { + vErr := obj.validateToAndFrom() + if vErr != nil { + return vErr + } + return retObj +} - if *obj.obj.Start > 255 { - vObj.validationErrors = append( - vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowArpHardwareLengthCounter.Start <= 255 but Got %d", *obj.obj.Start)) - } +func (obj *actionResponseProtocolIpv4PingResponse) ToYaml() (string, error) { + vErr := obj.validateToAndFrom() + if vErr != nil { + return "", vErr + } + opts := protojson.MarshalOptions{ + UseProtoNames: true, + AllowPartial: true, + EmitUnpopulated: false, + } + data, err := opts.Marshal(obj.Msg()) + if err != nil { + return "", err + } + data, err = yaml.JSONToYAML(data) + if err != nil { + return "", err + } + return string(data), nil +} +func (obj *actionResponseProtocolIpv4PingResponse) FromYaml(value string) error { + if value == "" { + value = "{}" + } + data, err := yaml.YAMLToJSON([]byte(value)) + if err != nil { + return err + } + opts := protojson.UnmarshalOptions{ + AllowPartial: true, + DiscardUnknown: false, + } + uError := opts.Unmarshal([]byte(data), obj.Msg()) + if uError != nil { + return fmt.Errorf("unmarshal error %s", strings.Replace( + uError.Error(), "\u00a0", " ", -1)[7:]) } - if obj.obj.Step != nil { + vErr := obj.validateToAndFrom() + if vErr != nil { + return vErr + } + return nil +} - if *obj.obj.Step > 255 { - vObj.validationErrors = append( - vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowArpHardwareLengthCounter.Step <= 255 but Got %d", *obj.obj.Step)) - } +func (obj *actionResponseProtocolIpv4PingResponse) ToJson() (string, error) { + vErr := obj.validateToAndFrom() + if vErr != nil { + return "", vErr + } + opts := protojson.MarshalOptions{ + UseProtoNames: true, + AllowPartial: true, + EmitUnpopulated: false, + Indent: " ", + } + data, err := opts.Marshal(obj.Msg()) + if err != nil { + return "", err + } + return string(data), nil +} + +func (obj *actionResponseProtocolIpv4PingResponse) FromJson(value string) error { + opts := protojson.UnmarshalOptions{ + AllowPartial: true, + DiscardUnknown: false, + } + if value == "" { + value = "{}" + } + uError := opts.Unmarshal([]byte(value), obj.Msg()) + if uError != nil { + return fmt.Errorf("unmarshal error %s", strings.Replace( + uError.Error(), "\u00a0", " ", -1)[7:]) + } + err := obj.validateToAndFrom() + if err != nil { + return err } + return nil +} - if obj.obj.Count != nil { +func (obj *actionResponseProtocolIpv4PingResponse) validateToAndFrom() error { + // emptyVars() + obj.validateObj(&obj.validation, true) + return obj.validationResult() +} - if *obj.obj.Count > 255 { - vObj.validationErrors = append( - vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowArpHardwareLengthCounter.Count <= 255 but Got %d", *obj.obj.Count)) - } +func (obj *actionResponseProtocolIpv4PingResponse) Validate() error { + // emptyVars() + obj.validateObj(&obj.validation, false) + return obj.validationResult() +} +func (obj *actionResponseProtocolIpv4PingResponse) String() string { + str, err := obj.ToYaml() + if err != nil { + return err.Error() } + return str +} +func (obj *actionResponseProtocolIpv4PingResponse) Clone() (ActionResponseProtocolIpv4PingResponse, error) { + vErr := obj.Validate() + if vErr != nil { + return nil, vErr + } + newObj := NewActionResponseProtocolIpv4PingResponse() + data, err := proto.Marshal(obj.Msg()) + if err != nil { + return nil, err + } + pbErr := proto.Unmarshal(data, newObj.Msg()) + if pbErr != nil { + return nil, pbErr + } + return newObj, nil } -func (obj *patternFlowArpHardwareLengthCounter) setDefault() { - if obj.obj.Start == nil { - obj.SetStart(6) +// ActionResponseProtocolIpv4PingResponse is response for ping initiated between a single source and destination pair. +type ActionResponseProtocolIpv4PingResponse interface { + Validation + // Msg marshals ActionResponseProtocolIpv4PingResponse to protobuf object *otg.ActionResponseProtocolIpv4PingResponse + // and doesn't set defaults + Msg() *otg.ActionResponseProtocolIpv4PingResponse + // SetMsg unmarshals ActionResponseProtocolIpv4PingResponse from protobuf object *otg.ActionResponseProtocolIpv4PingResponse + // and doesn't set defaults + SetMsg(*otg.ActionResponseProtocolIpv4PingResponse) ActionResponseProtocolIpv4PingResponse + // ToProto marshals ActionResponseProtocolIpv4PingResponse to protobuf object *otg.ActionResponseProtocolIpv4PingResponse + ToProto() (*otg.ActionResponseProtocolIpv4PingResponse, error) + // ToPbText marshals ActionResponseProtocolIpv4PingResponse to protobuf text + ToPbText() (string, error) + // ToYaml marshals ActionResponseProtocolIpv4PingResponse to YAML text + ToYaml() (string, error) + // ToJson marshals ActionResponseProtocolIpv4PingResponse to JSON text + ToJson() (string, error) + // FromProto unmarshals ActionResponseProtocolIpv4PingResponse from protobuf object *otg.ActionResponseProtocolIpv4PingResponse + FromProto(msg *otg.ActionResponseProtocolIpv4PingResponse) (ActionResponseProtocolIpv4PingResponse, error) + // FromPbText unmarshals ActionResponseProtocolIpv4PingResponse from protobuf text + FromPbText(value string) error + // FromYaml unmarshals ActionResponseProtocolIpv4PingResponse from YAML text + FromYaml(value string) error + // FromJson unmarshals ActionResponseProtocolIpv4PingResponse from JSON text + FromJson(value string) error + // Validate validates ActionResponseProtocolIpv4PingResponse + Validate() error + // A stringer function + String() string + // Clones the object + Clone() (ActionResponseProtocolIpv4PingResponse, error) + validateToAndFrom() error + validateObj(vObj *validation, set_default bool) + setDefault() + // SrcName returns string, set in ActionResponseProtocolIpv4PingResponse. + SrcName() string + // SetSrcName assigns string provided by user to ActionResponseProtocolIpv4PingResponse + SetSrcName(value string) ActionResponseProtocolIpv4PingResponse + // DstIp returns string, set in ActionResponseProtocolIpv4PingResponse. + DstIp() string + // SetDstIp assigns string provided by user to ActionResponseProtocolIpv4PingResponse + SetDstIp(value string) ActionResponseProtocolIpv4PingResponse + // Result returns ActionResponseProtocolIpv4PingResponseResultEnum, set in ActionResponseProtocolIpv4PingResponse + Result() ActionResponseProtocolIpv4PingResponseResultEnum + // SetResult assigns ActionResponseProtocolIpv4PingResponseResultEnum provided by user to ActionResponseProtocolIpv4PingResponse + SetResult(value ActionResponseProtocolIpv4PingResponseResultEnum) ActionResponseProtocolIpv4PingResponse +} + +// Name of source IPv4 interface used for ping. +// +// x-constraint: +// - /components/schemas/Device.Ipv4/properties/name +// +// SrcName returns a string +func (obj *actionResponseProtocolIpv4PingResponse) SrcName() string { + + return *obj.obj.SrcName + +} + +// Name of source IPv4 interface used for ping. +// +// x-constraint: +// - /components/schemas/Device.Ipv4/properties/name +// +// SetSrcName sets the string value in the ActionResponseProtocolIpv4PingResponse object +func (obj *actionResponseProtocolIpv4PingResponse) SetSrcName(value string) ActionResponseProtocolIpv4PingResponse { + + obj.obj.SrcName = &value + return obj +} + +// Destination IPv4 address used for ping. +// DstIp returns a string +func (obj *actionResponseProtocolIpv4PingResponse) DstIp() string { + + return *obj.obj.DstIp + +} + +// Destination IPv4 address used for ping. +// SetDstIp sets the string value in the ActionResponseProtocolIpv4PingResponse object +func (obj *actionResponseProtocolIpv4PingResponse) SetDstIp(value string) ActionResponseProtocolIpv4PingResponse { + + obj.obj.DstIp = &value + return obj +} + +type ActionResponseProtocolIpv4PingResponseResultEnum string + +// Enum of Result on ActionResponseProtocolIpv4PingResponse +var ActionResponseProtocolIpv4PingResponseResult = struct { + SUCCEEDED ActionResponseProtocolIpv4PingResponseResultEnum + FAILED ActionResponseProtocolIpv4PingResponseResultEnum +}{ + SUCCEEDED: ActionResponseProtocolIpv4PingResponseResultEnum("succeeded"), + FAILED: ActionResponseProtocolIpv4PingResponseResultEnum("failed"), +} + +func (obj *actionResponseProtocolIpv4PingResponse) Result() ActionResponseProtocolIpv4PingResponseResultEnum { + return ActionResponseProtocolIpv4PingResponseResultEnum(obj.obj.Result.Enum().String()) +} + +func (obj *actionResponseProtocolIpv4PingResponse) SetResult(value ActionResponseProtocolIpv4PingResponseResultEnum) ActionResponseProtocolIpv4PingResponse { + intValue, ok := otg.ActionResponseProtocolIpv4PingResponse_Result_Enum_value[string(value)] + if !ok { + obj.validationErrors = append(obj.validationErrors, fmt.Sprintf( + "%s is not a valid choice on ActionResponseProtocolIpv4PingResponseResultEnum", string(value))) + return obj } - if obj.obj.Step == nil { - obj.SetStep(1) + enumValue := otg.ActionResponseProtocolIpv4PingResponse_Result_Enum(intValue) + obj.obj.Result = &enumValue + + return obj +} + +func (obj *actionResponseProtocolIpv4PingResponse) validateObj(vObj *validation, set_default bool) { + if set_default { + obj.setDefault() } - if obj.obj.Count == nil { - obj.SetCount(1) + + // SrcName is required + if obj.obj.SrcName == nil { + vObj.validationErrors = append(vObj.validationErrors, "SrcName is required field on interface ActionResponseProtocolIpv4PingResponse") + } + + // DstIp is required + if obj.obj.DstIp == nil { + vObj.validationErrors = append(vObj.validationErrors, "DstIp is required field on interface ActionResponseProtocolIpv4PingResponse") + } + if obj.obj.DstIp != nil { + + err := obj.validateIpv4(obj.DstIp()) + if err != nil { + vObj.validationErrors = append(vObj.validationErrors, fmt.Sprintf("%s %s", err.Error(), "on ActionResponseProtocolIpv4PingResponse.DstIp")) + } + } + // Result is required + if obj.obj.Result == nil { + vObj.validationErrors = append(vObj.validationErrors, "Result is required field on interface ActionResponseProtocolIpv4PingResponse") + } } -// ***** PatternFlowArpHardwareLengthMetricTag ***** -type patternFlowArpHardwareLengthMetricTag struct { +func (obj *actionResponseProtocolIpv4PingResponse) setDefault() { + +} + +// ***** ActionResponseProtocolIpv6PingResponse ***** +type actionResponseProtocolIpv6PingResponse struct { validation - obj *otg.PatternFlowArpHardwareLengthMetricTag + obj *otg.ActionResponseProtocolIpv6PingResponse } -func NewPatternFlowArpHardwareLengthMetricTag() PatternFlowArpHardwareLengthMetricTag { - obj := patternFlowArpHardwareLengthMetricTag{obj: &otg.PatternFlowArpHardwareLengthMetricTag{}} +func NewActionResponseProtocolIpv6PingResponse() ActionResponseProtocolIpv6PingResponse { + obj := actionResponseProtocolIpv6PingResponse{obj: &otg.ActionResponseProtocolIpv6PingResponse{}} obj.setDefault() return &obj } -func (obj *patternFlowArpHardwareLengthMetricTag) Msg() *otg.PatternFlowArpHardwareLengthMetricTag { +func (obj *actionResponseProtocolIpv6PingResponse) Msg() *otg.ActionResponseProtocolIpv6PingResponse { return obj.obj } -func (obj *patternFlowArpHardwareLengthMetricTag) SetMsg(msg *otg.PatternFlowArpHardwareLengthMetricTag) PatternFlowArpHardwareLengthMetricTag { +func (obj *actionResponseProtocolIpv6PingResponse) SetMsg(msg *otg.ActionResponseProtocolIpv6PingResponse) ActionResponseProtocolIpv6PingResponse { proto.Merge(obj.obj, msg) return obj } -func (obj *patternFlowArpHardwareLengthMetricTag) ToProto() (*otg.PatternFlowArpHardwareLengthMetricTag, error) { +func (obj *actionResponseProtocolIpv6PingResponse) ToProto() (*otg.ActionResponseProtocolIpv6PingResponse, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -254648,7 +300257,7 @@ func (obj *patternFlowArpHardwareLengthMetricTag) ToProto() (*otg.PatternFlowArp return obj.Msg(), nil } -func (obj *patternFlowArpHardwareLengthMetricTag) FromProto(msg *otg.PatternFlowArpHardwareLengthMetricTag) (PatternFlowArpHardwareLengthMetricTag, error) { +func (obj *actionResponseProtocolIpv6PingResponse) FromProto(msg *otg.ActionResponseProtocolIpv6PingResponse) (ActionResponseProtocolIpv6PingResponse, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -254657,7 +300266,7 @@ func (obj *patternFlowArpHardwareLengthMetricTag) FromProto(msg *otg.PatternFlow return newObj, nil } -func (obj *patternFlowArpHardwareLengthMetricTag) ToPbText() (string, error) { +func (obj *actionResponseProtocolIpv6PingResponse) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -254669,7 +300278,7 @@ func (obj *patternFlowArpHardwareLengthMetricTag) ToPbText() (string, error) { return string(protoMarshal), nil } -func (obj *patternFlowArpHardwareLengthMetricTag) FromPbText(value string) error { +func (obj *actionResponseProtocolIpv6PingResponse) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj @@ -254682,7 +300291,7 @@ func (obj *patternFlowArpHardwareLengthMetricTag) FromPbText(value string) error return retObj } -func (obj *patternFlowArpHardwareLengthMetricTag) ToYaml() (string, error) { +func (obj *actionResponseProtocolIpv6PingResponse) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -254703,7 +300312,7 @@ func (obj *patternFlowArpHardwareLengthMetricTag) ToYaml() (string, error) { return string(data), nil } -func (obj *patternFlowArpHardwareLengthMetricTag) FromYaml(value string) error { +func (obj *actionResponseProtocolIpv6PingResponse) FromYaml(value string) error { if value == "" { value = "{}" } @@ -254728,7 +300337,7 @@ func (obj *patternFlowArpHardwareLengthMetricTag) FromYaml(value string) error { return nil } -func (obj *patternFlowArpHardwareLengthMetricTag) ToJson() (string, error) { +func (obj *actionResponseProtocolIpv6PingResponse) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -254746,7 +300355,7 @@ func (obj *patternFlowArpHardwareLengthMetricTag) ToJson() (string, error) { return string(data), nil } -func (obj *patternFlowArpHardwareLengthMetricTag) FromJson(value string) error { +func (obj *actionResponseProtocolIpv6PingResponse) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -254767,19 +300376,19 @@ func (obj *patternFlowArpHardwareLengthMetricTag) FromJson(value string) error { return nil } -func (obj *patternFlowArpHardwareLengthMetricTag) validateToAndFrom() error { +func (obj *actionResponseProtocolIpv6PingResponse) validateToAndFrom() error { // emptyVars() obj.validateObj(&obj.validation, true) return obj.validationResult() } -func (obj *patternFlowArpHardwareLengthMetricTag) Validate() error { +func (obj *actionResponseProtocolIpv6PingResponse) Validate() error { // emptyVars() obj.validateObj(&obj.validation, false) return obj.validationResult() } -func (obj *patternFlowArpHardwareLengthMetricTag) String() string { +func (obj *actionResponseProtocolIpv6PingResponse) String() string { str, err := obj.ToYaml() if err != nil { return err.Error() @@ -254787,12 +300396,12 @@ func (obj *patternFlowArpHardwareLengthMetricTag) String() string { return str } -func (obj *patternFlowArpHardwareLengthMetricTag) Clone() (PatternFlowArpHardwareLengthMetricTag, error) { +func (obj *actionResponseProtocolIpv6PingResponse) Clone() (ActionResponseProtocolIpv6PingResponse, error) { vErr := obj.Validate() if vErr != nil { return nil, vErr } - newObj := NewPatternFlowArpHardwareLengthMetricTag() + newObj := NewActionResponseProtocolIpv6PingResponse() data, err := proto.Marshal(obj.Msg()) if err != nil { return nil, err @@ -254804,183 +300413,178 @@ func (obj *patternFlowArpHardwareLengthMetricTag) Clone() (PatternFlowArpHardwar return newObj, nil } -// PatternFlowArpHardwareLengthMetricTag is metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. -type PatternFlowArpHardwareLengthMetricTag interface { +// ActionResponseProtocolIpv6PingResponse is response for ping initiated between a single source and destination pair. +type ActionResponseProtocolIpv6PingResponse interface { Validation - // Msg marshals PatternFlowArpHardwareLengthMetricTag to protobuf object *otg.PatternFlowArpHardwareLengthMetricTag + // Msg marshals ActionResponseProtocolIpv6PingResponse to protobuf object *otg.ActionResponseProtocolIpv6PingResponse // and doesn't set defaults - Msg() *otg.PatternFlowArpHardwareLengthMetricTag - // SetMsg unmarshals PatternFlowArpHardwareLengthMetricTag from protobuf object *otg.PatternFlowArpHardwareLengthMetricTag + Msg() *otg.ActionResponseProtocolIpv6PingResponse + // SetMsg unmarshals ActionResponseProtocolIpv6PingResponse from protobuf object *otg.ActionResponseProtocolIpv6PingResponse // and doesn't set defaults - SetMsg(*otg.PatternFlowArpHardwareLengthMetricTag) PatternFlowArpHardwareLengthMetricTag - // ToProto marshals PatternFlowArpHardwareLengthMetricTag to protobuf object *otg.PatternFlowArpHardwareLengthMetricTag - ToProto() (*otg.PatternFlowArpHardwareLengthMetricTag, error) - // ToPbText marshals PatternFlowArpHardwareLengthMetricTag to protobuf text + SetMsg(*otg.ActionResponseProtocolIpv6PingResponse) ActionResponseProtocolIpv6PingResponse + // ToProto marshals ActionResponseProtocolIpv6PingResponse to protobuf object *otg.ActionResponseProtocolIpv6PingResponse + ToProto() (*otg.ActionResponseProtocolIpv6PingResponse, error) + // ToPbText marshals ActionResponseProtocolIpv6PingResponse to protobuf text ToPbText() (string, error) - // ToYaml marshals PatternFlowArpHardwareLengthMetricTag to YAML text + // ToYaml marshals ActionResponseProtocolIpv6PingResponse to YAML text ToYaml() (string, error) - // ToJson marshals PatternFlowArpHardwareLengthMetricTag to JSON text + // ToJson marshals ActionResponseProtocolIpv6PingResponse to JSON text ToJson() (string, error) - // FromProto unmarshals PatternFlowArpHardwareLengthMetricTag from protobuf object *otg.PatternFlowArpHardwareLengthMetricTag - FromProto(msg *otg.PatternFlowArpHardwareLengthMetricTag) (PatternFlowArpHardwareLengthMetricTag, error) - // FromPbText unmarshals PatternFlowArpHardwareLengthMetricTag from protobuf text + // FromProto unmarshals ActionResponseProtocolIpv6PingResponse from protobuf object *otg.ActionResponseProtocolIpv6PingResponse + FromProto(msg *otg.ActionResponseProtocolIpv6PingResponse) (ActionResponseProtocolIpv6PingResponse, error) + // FromPbText unmarshals ActionResponseProtocolIpv6PingResponse from protobuf text FromPbText(value string) error - // FromYaml unmarshals PatternFlowArpHardwareLengthMetricTag from YAML text + // FromYaml unmarshals ActionResponseProtocolIpv6PingResponse from YAML text FromYaml(value string) error - // FromJson unmarshals PatternFlowArpHardwareLengthMetricTag from JSON text + // FromJson unmarshals ActionResponseProtocolIpv6PingResponse from JSON text FromJson(value string) error - // Validate validates PatternFlowArpHardwareLengthMetricTag + // Validate validates ActionResponseProtocolIpv6PingResponse Validate() error // A stringer function String() string // Clones the object - Clone() (PatternFlowArpHardwareLengthMetricTag, error) + Clone() (ActionResponseProtocolIpv6PingResponse, error) validateToAndFrom() error validateObj(vObj *validation, set_default bool) setDefault() - // Name returns string, set in PatternFlowArpHardwareLengthMetricTag. - Name() string - // SetName assigns string provided by user to PatternFlowArpHardwareLengthMetricTag - SetName(value string) PatternFlowArpHardwareLengthMetricTag - // Offset returns uint32, set in PatternFlowArpHardwareLengthMetricTag. - Offset() uint32 - // SetOffset assigns uint32 provided by user to PatternFlowArpHardwareLengthMetricTag - SetOffset(value uint32) PatternFlowArpHardwareLengthMetricTag - // HasOffset checks if Offset has been set in PatternFlowArpHardwareLengthMetricTag - HasOffset() bool - // Length returns uint32, set in PatternFlowArpHardwareLengthMetricTag. - Length() uint32 - // SetLength assigns uint32 provided by user to PatternFlowArpHardwareLengthMetricTag - SetLength(value uint32) PatternFlowArpHardwareLengthMetricTag - // HasLength checks if Length has been set in PatternFlowArpHardwareLengthMetricTag - HasLength() bool + // SrcName returns string, set in ActionResponseProtocolIpv6PingResponse. + SrcName() string + // SetSrcName assigns string provided by user to ActionResponseProtocolIpv6PingResponse + SetSrcName(value string) ActionResponseProtocolIpv6PingResponse + // DstIp returns string, set in ActionResponseProtocolIpv6PingResponse. + DstIp() string + // SetDstIp assigns string provided by user to ActionResponseProtocolIpv6PingResponse + SetDstIp(value string) ActionResponseProtocolIpv6PingResponse + // Result returns ActionResponseProtocolIpv6PingResponseResultEnum, set in ActionResponseProtocolIpv6PingResponse + Result() ActionResponseProtocolIpv6PingResponseResultEnum + // SetResult assigns ActionResponseProtocolIpv6PingResponseResultEnum provided by user to ActionResponseProtocolIpv6PingResponse + SetResult(value ActionResponseProtocolIpv6PingResponseResultEnum) ActionResponseProtocolIpv6PingResponse } -// Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field -// Name returns a string -func (obj *patternFlowArpHardwareLengthMetricTag) Name() string { +// Name of source IPv6 interface used for ping. +// +// x-constraint: +// - /components/schemas/Device.Ipv6/properties/name +// +// SrcName returns a string +func (obj *actionResponseProtocolIpv6PingResponse) SrcName() string { - return *obj.obj.Name + return *obj.obj.SrcName } -// Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field -// SetName sets the string value in the PatternFlowArpHardwareLengthMetricTag object -func (obj *patternFlowArpHardwareLengthMetricTag) SetName(value string) PatternFlowArpHardwareLengthMetricTag { +// Name of source IPv6 interface used for ping. +// +// x-constraint: +// - /components/schemas/Device.Ipv6/properties/name +// +// SetSrcName sets the string value in the ActionResponseProtocolIpv6PingResponse object +func (obj *actionResponseProtocolIpv6PingResponse) SetSrcName(value string) ActionResponseProtocolIpv6PingResponse { - obj.obj.Name = &value + obj.obj.SrcName = &value return obj } -// Offset in bits relative to start of corresponding header field -// Offset returns a uint32 -func (obj *patternFlowArpHardwareLengthMetricTag) Offset() uint32 { - - return *obj.obj.Offset +// Destination IPv6 address used for ping. +// DstIp returns a string +func (obj *actionResponseProtocolIpv6PingResponse) DstIp() string { -} + return *obj.obj.DstIp -// Offset in bits relative to start of corresponding header field -// Offset returns a uint32 -func (obj *patternFlowArpHardwareLengthMetricTag) HasOffset() bool { - return obj.obj.Offset != nil } -// Offset in bits relative to start of corresponding header field -// SetOffset sets the uint32 value in the PatternFlowArpHardwareLengthMetricTag object -func (obj *patternFlowArpHardwareLengthMetricTag) SetOffset(value uint32) PatternFlowArpHardwareLengthMetricTag { +// Destination IPv6 address used for ping. +// SetDstIp sets the string value in the ActionResponseProtocolIpv6PingResponse object +func (obj *actionResponseProtocolIpv6PingResponse) SetDstIp(value string) ActionResponseProtocolIpv6PingResponse { - obj.obj.Offset = &value + obj.obj.DstIp = &value return obj } -// Number of bits to track for metrics starting from configured offset of corresponding header field -// Length returns a uint32 -func (obj *patternFlowArpHardwareLengthMetricTag) Length() uint32 { - - return *obj.obj.Length +type ActionResponseProtocolIpv6PingResponseResultEnum string +// Enum of Result on ActionResponseProtocolIpv6PingResponse +var ActionResponseProtocolIpv6PingResponseResult = struct { + SUCCEEDED ActionResponseProtocolIpv6PingResponseResultEnum + FAILED ActionResponseProtocolIpv6PingResponseResultEnum +}{ + SUCCEEDED: ActionResponseProtocolIpv6PingResponseResultEnum("succeeded"), + FAILED: ActionResponseProtocolIpv6PingResponseResultEnum("failed"), } -// Number of bits to track for metrics starting from configured offset of corresponding header field -// Length returns a uint32 -func (obj *patternFlowArpHardwareLengthMetricTag) HasLength() bool { - return obj.obj.Length != nil +func (obj *actionResponseProtocolIpv6PingResponse) Result() ActionResponseProtocolIpv6PingResponseResultEnum { + return ActionResponseProtocolIpv6PingResponseResultEnum(obj.obj.Result.Enum().String()) } -// Number of bits to track for metrics starting from configured offset of corresponding header field -// SetLength sets the uint32 value in the PatternFlowArpHardwareLengthMetricTag object -func (obj *patternFlowArpHardwareLengthMetricTag) SetLength(value uint32) PatternFlowArpHardwareLengthMetricTag { +func (obj *actionResponseProtocolIpv6PingResponse) SetResult(value ActionResponseProtocolIpv6PingResponseResultEnum) ActionResponseProtocolIpv6PingResponse { + intValue, ok := otg.ActionResponseProtocolIpv6PingResponse_Result_Enum_value[string(value)] + if !ok { + obj.validationErrors = append(obj.validationErrors, fmt.Sprintf( + "%s is not a valid choice on ActionResponseProtocolIpv6PingResponseResultEnum", string(value))) + return obj + } + enumValue := otg.ActionResponseProtocolIpv6PingResponse_Result_Enum(intValue) + obj.obj.Result = &enumValue - obj.obj.Length = &value return obj } -func (obj *patternFlowArpHardwareLengthMetricTag) validateObj(vObj *validation, set_default bool) { +func (obj *actionResponseProtocolIpv6PingResponse) validateObj(vObj *validation, set_default bool) { if set_default { obj.setDefault() } - // Name is required - if obj.obj.Name == nil { - vObj.validationErrors = append(vObj.validationErrors, "Name is required field on interface PatternFlowArpHardwareLengthMetricTag") + // SrcName is required + if obj.obj.SrcName == nil { + vObj.validationErrors = append(vObj.validationErrors, "SrcName is required field on interface ActionResponseProtocolIpv6PingResponse") } - if obj.obj.Offset != nil { - - if *obj.obj.Offset > 7 { - vObj.validationErrors = append( - vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowArpHardwareLengthMetricTag.Offset <= 7 but Got %d", *obj.obj.Offset)) - } - + // DstIp is required + if obj.obj.DstIp == nil { + vObj.validationErrors = append(vObj.validationErrors, "DstIp is required field on interface ActionResponseProtocolIpv6PingResponse") } + if obj.obj.DstIp != nil { - if obj.obj.Length != nil { - - if *obj.obj.Length < 1 || *obj.obj.Length > 8 { - vObj.validationErrors = append( - vObj.validationErrors, - fmt.Sprintf("1 <= PatternFlowArpHardwareLengthMetricTag.Length <= 8 but Got %d", *obj.obj.Length)) + err := obj.validateIpv6(obj.DstIp()) + if err != nil { + vObj.validationErrors = append(vObj.validationErrors, fmt.Sprintf("%s %s", err.Error(), "on ActionResponseProtocolIpv6PingResponse.DstIp")) } } + // Result is required + if obj.obj.Result == nil { + vObj.validationErrors = append(vObj.validationErrors, "Result is required field on interface ActionResponseProtocolIpv6PingResponse") + } } -func (obj *patternFlowArpHardwareLengthMetricTag) setDefault() { - if obj.obj.Offset == nil { - obj.SetOffset(0) - } - if obj.obj.Length == nil { - obj.SetLength(8) - } +func (obj *actionResponseProtocolIpv6PingResponse) setDefault() { } -// ***** PatternFlowArpProtocolLengthCounter ***** -type patternFlowArpProtocolLengthCounter struct { +// ***** IsisLspneighbor ***** +type isisLspneighbor struct { validation - obj *otg.PatternFlowArpProtocolLengthCounter + obj *otg.IsisLspneighbor } -func NewPatternFlowArpProtocolLengthCounter() PatternFlowArpProtocolLengthCounter { - obj := patternFlowArpProtocolLengthCounter{obj: &otg.PatternFlowArpProtocolLengthCounter{}} +func NewIsisLspneighbor() IsisLspneighbor { + obj := isisLspneighbor{obj: &otg.IsisLspneighbor{}} obj.setDefault() return &obj } -func (obj *patternFlowArpProtocolLengthCounter) Msg() *otg.PatternFlowArpProtocolLengthCounter { +func (obj *isisLspneighbor) Msg() *otg.IsisLspneighbor { return obj.obj } -func (obj *patternFlowArpProtocolLengthCounter) SetMsg(msg *otg.PatternFlowArpProtocolLengthCounter) PatternFlowArpProtocolLengthCounter { +func (obj *isisLspneighbor) SetMsg(msg *otg.IsisLspneighbor) IsisLspneighbor { proto.Merge(obj.obj, msg) return obj } -func (obj *patternFlowArpProtocolLengthCounter) ToProto() (*otg.PatternFlowArpProtocolLengthCounter, error) { +func (obj *isisLspneighbor) ToProto() (*otg.IsisLspneighbor, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -254988,7 +300592,7 @@ func (obj *patternFlowArpProtocolLengthCounter) ToProto() (*otg.PatternFlowArpPr return obj.Msg(), nil } -func (obj *patternFlowArpProtocolLengthCounter) FromProto(msg *otg.PatternFlowArpProtocolLengthCounter) (PatternFlowArpProtocolLengthCounter, error) { +func (obj *isisLspneighbor) FromProto(msg *otg.IsisLspneighbor) (IsisLspneighbor, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -254997,7 +300601,7 @@ func (obj *patternFlowArpProtocolLengthCounter) FromProto(msg *otg.PatternFlowAr return newObj, nil } -func (obj *patternFlowArpProtocolLengthCounter) ToPbText() (string, error) { +func (obj *isisLspneighbor) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -255009,7 +300613,7 @@ func (obj *patternFlowArpProtocolLengthCounter) ToPbText() (string, error) { return string(protoMarshal), nil } -func (obj *patternFlowArpProtocolLengthCounter) FromPbText(value string) error { +func (obj *isisLspneighbor) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj @@ -255022,7 +300626,7 @@ func (obj *patternFlowArpProtocolLengthCounter) FromPbText(value string) error { return retObj } -func (obj *patternFlowArpProtocolLengthCounter) ToYaml() (string, error) { +func (obj *isisLspneighbor) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -255043,7 +300647,7 @@ func (obj *patternFlowArpProtocolLengthCounter) ToYaml() (string, error) { return string(data), nil } -func (obj *patternFlowArpProtocolLengthCounter) FromYaml(value string) error { +func (obj *isisLspneighbor) FromYaml(value string) error { if value == "" { value = "{}" } @@ -255068,7 +300672,7 @@ func (obj *patternFlowArpProtocolLengthCounter) FromYaml(value string) error { return nil } -func (obj *patternFlowArpProtocolLengthCounter) ToJson() (string, error) { +func (obj *isisLspneighbor) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -255086,7 +300690,7 @@ func (obj *patternFlowArpProtocolLengthCounter) ToJson() (string, error) { return string(data), nil } -func (obj *patternFlowArpProtocolLengthCounter) FromJson(value string) error { +func (obj *isisLspneighbor) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -255107,19 +300711,19 @@ func (obj *patternFlowArpProtocolLengthCounter) FromJson(value string) error { return nil } -func (obj *patternFlowArpProtocolLengthCounter) validateToAndFrom() error { +func (obj *isisLspneighbor) validateToAndFrom() error { // emptyVars() obj.validateObj(&obj.validation, true) return obj.validationResult() } -func (obj *patternFlowArpProtocolLengthCounter) Validate() error { +func (obj *isisLspneighbor) Validate() error { // emptyVars() obj.validateObj(&obj.validation, false) return obj.validationResult() } -func (obj *patternFlowArpProtocolLengthCounter) String() string { +func (obj *isisLspneighbor) String() string { str, err := obj.ToYaml() if err != nil { return err.Error() @@ -255127,12 +300731,12 @@ func (obj *patternFlowArpProtocolLengthCounter) String() string { return str } -func (obj *patternFlowArpProtocolLengthCounter) Clone() (PatternFlowArpProtocolLengthCounter, error) { +func (obj *isisLspneighbor) Clone() (IsisLspneighbor, error) { vErr := obj.Validate() if vErr != nil { return nil, vErr } - newObj := NewPatternFlowArpProtocolLengthCounter() + newObj := NewIsisLspneighbor() data, err := proto.Marshal(obj.Msg()) if err != nil { return nil, err @@ -255144,199 +300748,113 @@ func (obj *patternFlowArpProtocolLengthCounter) Clone() (PatternFlowArpProtocolL return newObj, nil } -// PatternFlowArpProtocolLengthCounter is integer counter pattern -type PatternFlowArpProtocolLengthCounter interface { +// IsisLspneighbor is this contains IS neighbors. +type IsisLspneighbor interface { Validation - // Msg marshals PatternFlowArpProtocolLengthCounter to protobuf object *otg.PatternFlowArpProtocolLengthCounter + // Msg marshals IsisLspneighbor to protobuf object *otg.IsisLspneighbor // and doesn't set defaults - Msg() *otg.PatternFlowArpProtocolLengthCounter - // SetMsg unmarshals PatternFlowArpProtocolLengthCounter from protobuf object *otg.PatternFlowArpProtocolLengthCounter + Msg() *otg.IsisLspneighbor + // SetMsg unmarshals IsisLspneighbor from protobuf object *otg.IsisLspneighbor // and doesn't set defaults - SetMsg(*otg.PatternFlowArpProtocolLengthCounter) PatternFlowArpProtocolLengthCounter - // ToProto marshals PatternFlowArpProtocolLengthCounter to protobuf object *otg.PatternFlowArpProtocolLengthCounter - ToProto() (*otg.PatternFlowArpProtocolLengthCounter, error) - // ToPbText marshals PatternFlowArpProtocolLengthCounter to protobuf text + SetMsg(*otg.IsisLspneighbor) IsisLspneighbor + // ToProto marshals IsisLspneighbor to protobuf object *otg.IsisLspneighbor + ToProto() (*otg.IsisLspneighbor, error) + // ToPbText marshals IsisLspneighbor to protobuf text ToPbText() (string, error) - // ToYaml marshals PatternFlowArpProtocolLengthCounter to YAML text + // ToYaml marshals IsisLspneighbor to YAML text ToYaml() (string, error) - // ToJson marshals PatternFlowArpProtocolLengthCounter to JSON text + // ToJson marshals IsisLspneighbor to JSON text ToJson() (string, error) - // FromProto unmarshals PatternFlowArpProtocolLengthCounter from protobuf object *otg.PatternFlowArpProtocolLengthCounter - FromProto(msg *otg.PatternFlowArpProtocolLengthCounter) (PatternFlowArpProtocolLengthCounter, error) - // FromPbText unmarshals PatternFlowArpProtocolLengthCounter from protobuf text + // FromProto unmarshals IsisLspneighbor from protobuf object *otg.IsisLspneighbor + FromProto(msg *otg.IsisLspneighbor) (IsisLspneighbor, error) + // FromPbText unmarshals IsisLspneighbor from protobuf text FromPbText(value string) error - // FromYaml unmarshals PatternFlowArpProtocolLengthCounter from YAML text + // FromYaml unmarshals IsisLspneighbor from YAML text FromYaml(value string) error - // FromJson unmarshals PatternFlowArpProtocolLengthCounter from JSON text + // FromJson unmarshals IsisLspneighbor from JSON text FromJson(value string) error - // Validate validates PatternFlowArpProtocolLengthCounter + // Validate validates IsisLspneighbor Validate() error // A stringer function String() string // Clones the object - Clone() (PatternFlowArpProtocolLengthCounter, error) + Clone() (IsisLspneighbor, error) validateToAndFrom() error validateObj(vObj *validation, set_default bool) setDefault() - // Start returns uint32, set in PatternFlowArpProtocolLengthCounter. - Start() uint32 - // SetStart assigns uint32 provided by user to PatternFlowArpProtocolLengthCounter - SetStart(value uint32) PatternFlowArpProtocolLengthCounter - // HasStart checks if Start has been set in PatternFlowArpProtocolLengthCounter - HasStart() bool - // Step returns uint32, set in PatternFlowArpProtocolLengthCounter. - Step() uint32 - // SetStep assigns uint32 provided by user to PatternFlowArpProtocolLengthCounter - SetStep(value uint32) PatternFlowArpProtocolLengthCounter - // HasStep checks if Step has been set in PatternFlowArpProtocolLengthCounter - HasStep() bool - // Count returns uint32, set in PatternFlowArpProtocolLengthCounter. - Count() uint32 - // SetCount assigns uint32 provided by user to PatternFlowArpProtocolLengthCounter - SetCount(value uint32) PatternFlowArpProtocolLengthCounter - // HasCount checks if Count has been set in PatternFlowArpProtocolLengthCounter - HasCount() bool -} - -// description is TBD -// Start returns a uint32 -func (obj *patternFlowArpProtocolLengthCounter) Start() uint32 { - - return *obj.obj.Start - -} - -// description is TBD -// Start returns a uint32 -func (obj *patternFlowArpProtocolLengthCounter) HasStart() bool { - return obj.obj.Start != nil -} - -// description is TBD -// SetStart sets the uint32 value in the PatternFlowArpProtocolLengthCounter object -func (obj *patternFlowArpProtocolLengthCounter) SetStart(value uint32) PatternFlowArpProtocolLengthCounter { - - obj.obj.Start = &value - return obj -} - -// description is TBD -// Step returns a uint32 -func (obj *patternFlowArpProtocolLengthCounter) Step() uint32 { - - return *obj.obj.Step - -} - -// description is TBD -// Step returns a uint32 -func (obj *patternFlowArpProtocolLengthCounter) HasStep() bool { - return obj.obj.Step != nil -} - -// description is TBD -// SetStep sets the uint32 value in the PatternFlowArpProtocolLengthCounter object -func (obj *patternFlowArpProtocolLengthCounter) SetStep(value uint32) PatternFlowArpProtocolLengthCounter { - - obj.obj.Step = &value - return obj + // SystemId returns string, set in IsisLspneighbor. + SystemId() string + // SetSystemId assigns string provided by user to IsisLspneighbor + SetSystemId(value string) IsisLspneighbor + // HasSystemId checks if SystemId has been set in IsisLspneighbor + HasSystemId() bool } -// description is TBD -// Count returns a uint32 -func (obj *patternFlowArpProtocolLengthCounter) Count() uint32 { +// The System ID for this emulated ISIS router, e.g. "640100010000". +// SystemId returns a string +func (obj *isisLspneighbor) SystemId() string { - return *obj.obj.Count + return *obj.obj.SystemId } -// description is TBD -// Count returns a uint32 -func (obj *patternFlowArpProtocolLengthCounter) HasCount() bool { - return obj.obj.Count != nil +// The System ID for this emulated ISIS router, e.g. "640100010000". +// SystemId returns a string +func (obj *isisLspneighbor) HasSystemId() bool { + return obj.obj.SystemId != nil } -// description is TBD -// SetCount sets the uint32 value in the PatternFlowArpProtocolLengthCounter object -func (obj *patternFlowArpProtocolLengthCounter) SetCount(value uint32) PatternFlowArpProtocolLengthCounter { +// The System ID for this emulated ISIS router, e.g. "640100010000". +// SetSystemId sets the string value in the IsisLspneighbor object +func (obj *isisLspneighbor) SetSystemId(value string) IsisLspneighbor { - obj.obj.Count = &value + obj.obj.SystemId = &value return obj } -func (obj *patternFlowArpProtocolLengthCounter) validateObj(vObj *validation, set_default bool) { +func (obj *isisLspneighbor) validateObj(vObj *validation, set_default bool) { if set_default { obj.setDefault() } - if obj.obj.Start != nil { - - if *obj.obj.Start > 255 { - vObj.validationErrors = append( - vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowArpProtocolLengthCounter.Start <= 255 but Got %d", *obj.obj.Start)) - } - - } - - if obj.obj.Step != nil { - - if *obj.obj.Step > 255 { - vObj.validationErrors = append( - vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowArpProtocolLengthCounter.Step <= 255 but Got %d", *obj.obj.Step)) - } - - } - - if obj.obj.Count != nil { + if obj.obj.SystemId != nil { - if *obj.obj.Count > 255 { - vObj.validationErrors = append( - vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowArpProtocolLengthCounter.Count <= 255 but Got %d", *obj.obj.Count)) + err := obj.validateHex(obj.SystemId()) + if err != nil { + vObj.validationErrors = append(vObj.validationErrors, fmt.Sprintf("%s %s", err.Error(), "on IsisLspneighbor.SystemId")) } } } -func (obj *patternFlowArpProtocolLengthCounter) setDefault() { - if obj.obj.Start == nil { - obj.SetStart(4) - } - if obj.obj.Step == nil { - obj.SetStep(1) - } - if obj.obj.Count == nil { - obj.SetCount(1) - } +func (obj *isisLspneighbor) setDefault() { } -// ***** PatternFlowArpProtocolLengthMetricTag ***** -type patternFlowArpProtocolLengthMetricTag struct { +// ***** IsisLspV4Prefix ***** +type isisLspV4Prefix struct { validation - obj *otg.PatternFlowArpProtocolLengthMetricTag + obj *otg.IsisLspV4Prefix } -func NewPatternFlowArpProtocolLengthMetricTag() PatternFlowArpProtocolLengthMetricTag { - obj := patternFlowArpProtocolLengthMetricTag{obj: &otg.PatternFlowArpProtocolLengthMetricTag{}} +func NewIsisLspV4Prefix() IsisLspV4Prefix { + obj := isisLspV4Prefix{obj: &otg.IsisLspV4Prefix{}} obj.setDefault() return &obj } -func (obj *patternFlowArpProtocolLengthMetricTag) Msg() *otg.PatternFlowArpProtocolLengthMetricTag { +func (obj *isisLspV4Prefix) Msg() *otg.IsisLspV4Prefix { return obj.obj } -func (obj *patternFlowArpProtocolLengthMetricTag) SetMsg(msg *otg.PatternFlowArpProtocolLengthMetricTag) PatternFlowArpProtocolLengthMetricTag { +func (obj *isisLspV4Prefix) SetMsg(msg *otg.IsisLspV4Prefix) IsisLspV4Prefix { proto.Merge(obj.obj, msg) return obj } -func (obj *patternFlowArpProtocolLengthMetricTag) ToProto() (*otg.PatternFlowArpProtocolLengthMetricTag, error) { +func (obj *isisLspV4Prefix) ToProto() (*otg.IsisLspV4Prefix, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -255344,7 +300862,7 @@ func (obj *patternFlowArpProtocolLengthMetricTag) ToProto() (*otg.PatternFlowArp return obj.Msg(), nil } -func (obj *patternFlowArpProtocolLengthMetricTag) FromProto(msg *otg.PatternFlowArpProtocolLengthMetricTag) (PatternFlowArpProtocolLengthMetricTag, error) { +func (obj *isisLspV4Prefix) FromProto(msg *otg.IsisLspV4Prefix) (IsisLspV4Prefix, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -255353,7 +300871,7 @@ func (obj *patternFlowArpProtocolLengthMetricTag) FromProto(msg *otg.PatternFlow return newObj, nil } -func (obj *patternFlowArpProtocolLengthMetricTag) ToPbText() (string, error) { +func (obj *isisLspV4Prefix) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -255365,7 +300883,7 @@ func (obj *patternFlowArpProtocolLengthMetricTag) ToPbText() (string, error) { return string(protoMarshal), nil } -func (obj *patternFlowArpProtocolLengthMetricTag) FromPbText(value string) error { +func (obj *isisLspV4Prefix) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj @@ -255378,7 +300896,7 @@ func (obj *patternFlowArpProtocolLengthMetricTag) FromPbText(value string) error return retObj } -func (obj *patternFlowArpProtocolLengthMetricTag) ToYaml() (string, error) { +func (obj *isisLspV4Prefix) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -255399,7 +300917,7 @@ func (obj *patternFlowArpProtocolLengthMetricTag) ToYaml() (string, error) { return string(data), nil } -func (obj *patternFlowArpProtocolLengthMetricTag) FromYaml(value string) error { +func (obj *isisLspV4Prefix) FromYaml(value string) error { if value == "" { value = "{}" } @@ -255424,7 +300942,7 @@ func (obj *patternFlowArpProtocolLengthMetricTag) FromYaml(value string) error { return nil } -func (obj *patternFlowArpProtocolLengthMetricTag) ToJson() (string, error) { +func (obj *isisLspV4Prefix) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -255442,7 +300960,7 @@ func (obj *patternFlowArpProtocolLengthMetricTag) ToJson() (string, error) { return string(data), nil } -func (obj *patternFlowArpProtocolLengthMetricTag) FromJson(value string) error { +func (obj *isisLspV4Prefix) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -255463,19 +300981,19 @@ func (obj *patternFlowArpProtocolLengthMetricTag) FromJson(value string) error { return nil } -func (obj *patternFlowArpProtocolLengthMetricTag) validateToAndFrom() error { +func (obj *isisLspV4Prefix) validateToAndFrom() error { // emptyVars() obj.validateObj(&obj.validation, true) return obj.validationResult() } -func (obj *patternFlowArpProtocolLengthMetricTag) Validate() error { +func (obj *isisLspV4Prefix) Validate() error { // emptyVars() obj.validateObj(&obj.validation, false) return obj.validationResult() } -func (obj *patternFlowArpProtocolLengthMetricTag) String() string { +func (obj *isisLspV4Prefix) String() string { str, err := obj.ToYaml() if err != nil { return err.Error() @@ -255483,12 +301001,12 @@ func (obj *patternFlowArpProtocolLengthMetricTag) String() string { return str } -func (obj *patternFlowArpProtocolLengthMetricTag) Clone() (PatternFlowArpProtocolLengthMetricTag, error) { +func (obj *isisLspV4Prefix) Clone() (IsisLspV4Prefix, error) { vErr := obj.Validate() if vErr != nil { return nil, vErr } - newObj := NewPatternFlowArpProtocolLengthMetricTag() + newObj := NewIsisLspV4Prefix() data, err := proto.Marshal(obj.Msg()) if err != nil { return nil, err @@ -255500,183 +301018,257 @@ func (obj *patternFlowArpProtocolLengthMetricTag) Clone() (PatternFlowArpProtoco return newObj, nil } -// PatternFlowArpProtocolLengthMetricTag is metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. -type PatternFlowArpProtocolLengthMetricTag interface { +// IsisLspV4Prefix is this group defines attributes of an IPv4 standard prefix. +type IsisLspV4Prefix interface { Validation - // Msg marshals PatternFlowArpProtocolLengthMetricTag to protobuf object *otg.PatternFlowArpProtocolLengthMetricTag + // Msg marshals IsisLspV4Prefix to protobuf object *otg.IsisLspV4Prefix // and doesn't set defaults - Msg() *otg.PatternFlowArpProtocolLengthMetricTag - // SetMsg unmarshals PatternFlowArpProtocolLengthMetricTag from protobuf object *otg.PatternFlowArpProtocolLengthMetricTag + Msg() *otg.IsisLspV4Prefix + // SetMsg unmarshals IsisLspV4Prefix from protobuf object *otg.IsisLspV4Prefix // and doesn't set defaults - SetMsg(*otg.PatternFlowArpProtocolLengthMetricTag) PatternFlowArpProtocolLengthMetricTag - // ToProto marshals PatternFlowArpProtocolLengthMetricTag to protobuf object *otg.PatternFlowArpProtocolLengthMetricTag - ToProto() (*otg.PatternFlowArpProtocolLengthMetricTag, error) - // ToPbText marshals PatternFlowArpProtocolLengthMetricTag to protobuf text + SetMsg(*otg.IsisLspV4Prefix) IsisLspV4Prefix + // ToProto marshals IsisLspV4Prefix to protobuf object *otg.IsisLspV4Prefix + ToProto() (*otg.IsisLspV4Prefix, error) + // ToPbText marshals IsisLspV4Prefix to protobuf text ToPbText() (string, error) - // ToYaml marshals PatternFlowArpProtocolLengthMetricTag to YAML text + // ToYaml marshals IsisLspV4Prefix to YAML text ToYaml() (string, error) - // ToJson marshals PatternFlowArpProtocolLengthMetricTag to JSON text + // ToJson marshals IsisLspV4Prefix to JSON text ToJson() (string, error) - // FromProto unmarshals PatternFlowArpProtocolLengthMetricTag from protobuf object *otg.PatternFlowArpProtocolLengthMetricTag - FromProto(msg *otg.PatternFlowArpProtocolLengthMetricTag) (PatternFlowArpProtocolLengthMetricTag, error) - // FromPbText unmarshals PatternFlowArpProtocolLengthMetricTag from protobuf text + // FromProto unmarshals IsisLspV4Prefix from protobuf object *otg.IsisLspV4Prefix + FromProto(msg *otg.IsisLspV4Prefix) (IsisLspV4Prefix, error) + // FromPbText unmarshals IsisLspV4Prefix from protobuf text FromPbText(value string) error - // FromYaml unmarshals PatternFlowArpProtocolLengthMetricTag from YAML text + // FromYaml unmarshals IsisLspV4Prefix from YAML text FromYaml(value string) error - // FromJson unmarshals PatternFlowArpProtocolLengthMetricTag from JSON text + // FromJson unmarshals IsisLspV4Prefix from JSON text FromJson(value string) error - // Validate validates PatternFlowArpProtocolLengthMetricTag + // Validate validates IsisLspV4Prefix Validate() error // A stringer function String() string // Clones the object - Clone() (PatternFlowArpProtocolLengthMetricTag, error) + Clone() (IsisLspV4Prefix, error) validateToAndFrom() error validateObj(vObj *validation, set_default bool) setDefault() - // Name returns string, set in PatternFlowArpProtocolLengthMetricTag. - Name() string - // SetName assigns string provided by user to PatternFlowArpProtocolLengthMetricTag - SetName(value string) PatternFlowArpProtocolLengthMetricTag - // Offset returns uint32, set in PatternFlowArpProtocolLengthMetricTag. - Offset() uint32 - // SetOffset assigns uint32 provided by user to PatternFlowArpProtocolLengthMetricTag - SetOffset(value uint32) PatternFlowArpProtocolLengthMetricTag - // HasOffset checks if Offset has been set in PatternFlowArpProtocolLengthMetricTag - HasOffset() bool - // Length returns uint32, set in PatternFlowArpProtocolLengthMetricTag. - Length() uint32 - // SetLength assigns uint32 provided by user to PatternFlowArpProtocolLengthMetricTag - SetLength(value uint32) PatternFlowArpProtocolLengthMetricTag - // HasLength checks if Length has been set in PatternFlowArpProtocolLengthMetricTag - HasLength() bool + // Ipv4Address returns string, set in IsisLspV4Prefix. + Ipv4Address() string + // SetIpv4Address assigns string provided by user to IsisLspV4Prefix + SetIpv4Address(value string) IsisLspV4Prefix + // HasIpv4Address checks if Ipv4Address has been set in IsisLspV4Prefix + HasIpv4Address() bool + // PrefixLength returns uint32, set in IsisLspV4Prefix. + PrefixLength() uint32 + // SetPrefixLength assigns uint32 provided by user to IsisLspV4Prefix + SetPrefixLength(value uint32) IsisLspV4Prefix + // HasPrefixLength checks if PrefixLength has been set in IsisLspV4Prefix + HasPrefixLength() bool + // RedistributionType returns IsisLspV4PrefixRedistributionTypeEnum, set in IsisLspV4Prefix + RedistributionType() IsisLspV4PrefixRedistributionTypeEnum + // SetRedistributionType assigns IsisLspV4PrefixRedistributionTypeEnum provided by user to IsisLspV4Prefix + SetRedistributionType(value IsisLspV4PrefixRedistributionTypeEnum) IsisLspV4Prefix + // HasRedistributionType checks if RedistributionType has been set in IsisLspV4Prefix + HasRedistributionType() bool + // DefaultMetric returns uint32, set in IsisLspV4Prefix. + DefaultMetric() uint32 + // SetDefaultMetric assigns uint32 provided by user to IsisLspV4Prefix + SetDefaultMetric(value uint32) IsisLspV4Prefix + // HasDefaultMetric checks if DefaultMetric has been set in IsisLspV4Prefix + HasDefaultMetric() bool + // OriginType returns IsisLspV4PrefixOriginTypeEnum, set in IsisLspV4Prefix + OriginType() IsisLspV4PrefixOriginTypeEnum + // SetOriginType assigns IsisLspV4PrefixOriginTypeEnum provided by user to IsisLspV4Prefix + SetOriginType(value IsisLspV4PrefixOriginTypeEnum) IsisLspV4Prefix + // HasOriginType checks if OriginType has been set in IsisLspV4Prefix + HasOriginType() bool } -// Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field -// Name returns a string -func (obj *patternFlowArpProtocolLengthMetricTag) Name() string { +// An IPv4 unicast prefix reachable via the originator of this LSP. +// Ipv4Address returns a string +func (obj *isisLspV4Prefix) Ipv4Address() string { - return *obj.obj.Name + return *obj.obj.Ipv4Address } -// Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field -// SetName sets the string value in the PatternFlowArpProtocolLengthMetricTag object -func (obj *patternFlowArpProtocolLengthMetricTag) SetName(value string) PatternFlowArpProtocolLengthMetricTag { +// An IPv4 unicast prefix reachable via the originator of this LSP. +// Ipv4Address returns a string +func (obj *isisLspV4Prefix) HasIpv4Address() bool { + return obj.obj.Ipv4Address != nil +} - obj.obj.Name = &value +// An IPv4 unicast prefix reachable via the originator of this LSP. +// SetIpv4Address sets the string value in the IsisLspV4Prefix object +func (obj *isisLspV4Prefix) SetIpv4Address(value string) IsisLspV4Prefix { + + obj.obj.Ipv4Address = &value return obj } -// Offset in bits relative to start of corresponding header field -// Offset returns a uint32 -func (obj *patternFlowArpProtocolLengthMetricTag) Offset() uint32 { +// The length of the IPv4 prefix. +// PrefixLength returns a uint32 +func (obj *isisLspV4Prefix) PrefixLength() uint32 { - return *obj.obj.Offset + return *obj.obj.PrefixLength } -// Offset in bits relative to start of corresponding header field -// Offset returns a uint32 -func (obj *patternFlowArpProtocolLengthMetricTag) HasOffset() bool { - return obj.obj.Offset != nil +// The length of the IPv4 prefix. +// PrefixLength returns a uint32 +func (obj *isisLspV4Prefix) HasPrefixLength() bool { + return obj.obj.PrefixLength != nil } -// Offset in bits relative to start of corresponding header field -// SetOffset sets the uint32 value in the PatternFlowArpProtocolLengthMetricTag object -func (obj *patternFlowArpProtocolLengthMetricTag) SetOffset(value uint32) PatternFlowArpProtocolLengthMetricTag { +// The length of the IPv4 prefix. +// SetPrefixLength sets the uint32 value in the IsisLspV4Prefix object +func (obj *isisLspV4Prefix) SetPrefixLength(value uint32) IsisLspV4Prefix { - obj.obj.Offset = &value + obj.obj.PrefixLength = &value return obj } -// Number of bits to track for metrics starting from configured offset of corresponding header field -// Length returns a uint32 -func (obj *patternFlowArpProtocolLengthMetricTag) Length() uint32 { +type IsisLspV4PrefixRedistributionTypeEnum string - return *obj.obj.Length +// Enum of RedistributionType on IsisLspV4Prefix +var IsisLspV4PrefixRedistributionType = struct { + UP IsisLspV4PrefixRedistributionTypeEnum + DOWN IsisLspV4PrefixRedistributionTypeEnum +}{ + UP: IsisLspV4PrefixRedistributionTypeEnum("up"), + DOWN: IsisLspV4PrefixRedistributionTypeEnum("down"), +} +func (obj *isisLspV4Prefix) RedistributionType() IsisLspV4PrefixRedistributionTypeEnum { + return IsisLspV4PrefixRedistributionTypeEnum(obj.obj.RedistributionType.Enum().String()) } -// Number of bits to track for metrics starting from configured offset of corresponding header field -// Length returns a uint32 -func (obj *patternFlowArpProtocolLengthMetricTag) HasLength() bool { - return obj.obj.Length != nil +// Up (0)-used when a prefix is initially advertised within the ISIS L3 hierarchy, +// and for all other prefixes in L1 and L2 LSPs. (default) +// Down (1)-used when an L1/L2 router advertises L2 prefixes in L1 LSPs. +// The prefixes are being advertised from a higher level (L2) down to a lower level (L1). +// RedistributionType returns a string +func (obj *isisLspV4Prefix) HasRedistributionType() bool { + return obj.obj.RedistributionType != nil } -// Number of bits to track for metrics starting from configured offset of corresponding header field -// SetLength sets the uint32 value in the PatternFlowArpProtocolLengthMetricTag object -func (obj *patternFlowArpProtocolLengthMetricTag) SetLength(value uint32) PatternFlowArpProtocolLengthMetricTag { +func (obj *isisLspV4Prefix) SetRedistributionType(value IsisLspV4PrefixRedistributionTypeEnum) IsisLspV4Prefix { + intValue, ok := otg.IsisLspV4Prefix_RedistributionType_Enum_value[string(value)] + if !ok { + obj.validationErrors = append(obj.validationErrors, fmt.Sprintf( + "%s is not a valid choice on IsisLspV4PrefixRedistributionTypeEnum", string(value))) + return obj + } + enumValue := otg.IsisLspV4Prefix_RedistributionType_Enum(intValue) + obj.obj.RedistributionType = &enumValue - obj.obj.Length = &value return obj } -func (obj *patternFlowArpProtocolLengthMetricTag) validateObj(vObj *validation, set_default bool) { - if set_default { - obj.setDefault() - } +// ISIS default metric value. +// DefaultMetric returns a uint32 +func (obj *isisLspV4Prefix) DefaultMetric() uint32 { - // Name is required - if obj.obj.Name == nil { - vObj.validationErrors = append(vObj.validationErrors, "Name is required field on interface PatternFlowArpProtocolLengthMetricTag") - } + return *obj.obj.DefaultMetric - if obj.obj.Offset != nil { +} - if *obj.obj.Offset > 7 { - vObj.validationErrors = append( - vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowArpProtocolLengthMetricTag.Offset <= 7 but Got %d", *obj.obj.Offset)) - } +// ISIS default metric value. +// DefaultMetric returns a uint32 +func (obj *isisLspV4Prefix) HasDefaultMetric() bool { + return obj.obj.DefaultMetric != nil +} + +// ISIS default metric value. +// SetDefaultMetric sets the uint32 value in the IsisLspV4Prefix object +func (obj *isisLspV4Prefix) SetDefaultMetric(value uint32) IsisLspV4Prefix { + + obj.obj.DefaultMetric = &value + return obj +} + +type IsisLspV4PrefixOriginTypeEnum string + +// Enum of OriginType on IsisLspV4Prefix +var IsisLspV4PrefixOriginType = struct { + INTERNAL IsisLspV4PrefixOriginTypeEnum + EXTERNAL IsisLspV4PrefixOriginTypeEnum +}{ + INTERNAL: IsisLspV4PrefixOriginTypeEnum("internal"), + EXTERNAL: IsisLspV4PrefixOriginTypeEnum("external"), +} + +func (obj *isisLspV4Prefix) OriginType() IsisLspV4PrefixOriginTypeEnum { + return IsisLspV4PrefixOriginTypeEnum(obj.obj.OriginType.Enum().String()) +} + +// The origin of the advertised route-internal or external to the ISIS area. Options include the following: +// Internal-for intra-area routes, through Level 1 LSPs. +// External-for inter-area routes redistributed within L1, through Level +// 1 LSPs. +// OriginType returns a string +func (obj *isisLspV4Prefix) HasOriginType() bool { + return obj.obj.OriginType != nil +} +func (obj *isisLspV4Prefix) SetOriginType(value IsisLspV4PrefixOriginTypeEnum) IsisLspV4Prefix { + intValue, ok := otg.IsisLspV4Prefix_OriginType_Enum_value[string(value)] + if !ok { + obj.validationErrors = append(obj.validationErrors, fmt.Sprintf( + "%s is not a valid choice on IsisLspV4PrefixOriginTypeEnum", string(value))) + return obj } + enumValue := otg.IsisLspV4Prefix_OriginType_Enum(intValue) + obj.obj.OriginType = &enumValue - if obj.obj.Length != nil { + return obj +} - if *obj.obj.Length < 1 || *obj.obj.Length > 8 { +func (obj *isisLspV4Prefix) validateObj(vObj *validation, set_default bool) { + if set_default { + obj.setDefault() + } + + if obj.obj.PrefixLength != nil { + + if *obj.obj.PrefixLength > 32 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("1 <= PatternFlowArpProtocolLengthMetricTag.Length <= 8 but Got %d", *obj.obj.Length)) + fmt.Sprintf("0 <= IsisLspV4Prefix.PrefixLength <= 32 but Got %d", *obj.obj.PrefixLength)) } } } -func (obj *patternFlowArpProtocolLengthMetricTag) setDefault() { - if obj.obj.Offset == nil { - obj.SetOffset(0) - } - if obj.obj.Length == nil { - obj.SetLength(8) - } +func (obj *isisLspV4Prefix) setDefault() { } -// ***** PatternFlowArpOperationCounter ***** -type patternFlowArpOperationCounter struct { +// ***** IsisLspExtendedV4Prefix ***** +type isisLspExtendedV4Prefix struct { validation - obj *otg.PatternFlowArpOperationCounter + obj *otg.IsisLspExtendedV4Prefix + prefixAttributesHolder IsisLspPrefixAttributes } -func NewPatternFlowArpOperationCounter() PatternFlowArpOperationCounter { - obj := patternFlowArpOperationCounter{obj: &otg.PatternFlowArpOperationCounter{}} +func NewIsisLspExtendedV4Prefix() IsisLspExtendedV4Prefix { + obj := isisLspExtendedV4Prefix{obj: &otg.IsisLspExtendedV4Prefix{}} obj.setDefault() return &obj } -func (obj *patternFlowArpOperationCounter) Msg() *otg.PatternFlowArpOperationCounter { +func (obj *isisLspExtendedV4Prefix) Msg() *otg.IsisLspExtendedV4Prefix { return obj.obj } -func (obj *patternFlowArpOperationCounter) SetMsg(msg *otg.PatternFlowArpOperationCounter) PatternFlowArpOperationCounter { - +func (obj *isisLspExtendedV4Prefix) SetMsg(msg *otg.IsisLspExtendedV4Prefix) IsisLspExtendedV4Prefix { + obj.setNil() proto.Merge(obj.obj, msg) return obj } -func (obj *patternFlowArpOperationCounter) ToProto() (*otg.PatternFlowArpOperationCounter, error) { +func (obj *isisLspExtendedV4Prefix) ToProto() (*otg.IsisLspExtendedV4Prefix, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -255684,7 +301276,7 @@ func (obj *patternFlowArpOperationCounter) ToProto() (*otg.PatternFlowArpOperati return obj.Msg(), nil } -func (obj *patternFlowArpOperationCounter) FromProto(msg *otg.PatternFlowArpOperationCounter) (PatternFlowArpOperationCounter, error) { +func (obj *isisLspExtendedV4Prefix) FromProto(msg *otg.IsisLspExtendedV4Prefix) (IsisLspExtendedV4Prefix, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -255693,7 +301285,7 @@ func (obj *patternFlowArpOperationCounter) FromProto(msg *otg.PatternFlowArpOper return newObj, nil } -func (obj *patternFlowArpOperationCounter) ToPbText() (string, error) { +func (obj *isisLspExtendedV4Prefix) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -255705,12 +301297,12 @@ func (obj *patternFlowArpOperationCounter) ToPbText() (string, error) { return string(protoMarshal), nil } -func (obj *patternFlowArpOperationCounter) FromPbText(value string) error { +func (obj *isisLspExtendedV4Prefix) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj } - + obj.setNil() vErr := obj.validateToAndFrom() if vErr != nil { return vErr @@ -255718,7 +301310,7 @@ func (obj *patternFlowArpOperationCounter) FromPbText(value string) error { return retObj } -func (obj *patternFlowArpOperationCounter) ToYaml() (string, error) { +func (obj *isisLspExtendedV4Prefix) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -255739,7 +301331,7 @@ func (obj *patternFlowArpOperationCounter) ToYaml() (string, error) { return string(data), nil } -func (obj *patternFlowArpOperationCounter) FromYaml(value string) error { +func (obj *isisLspExtendedV4Prefix) FromYaml(value string) error { if value == "" { value = "{}" } @@ -255756,7 +301348,7 @@ func (obj *patternFlowArpOperationCounter) FromYaml(value string) error { return fmt.Errorf("unmarshal error %s", strings.Replace( uError.Error(), "\u00a0", " ", -1)[7:]) } - + obj.setNil() vErr := obj.validateToAndFrom() if vErr != nil { return vErr @@ -255764,7 +301356,7 @@ func (obj *patternFlowArpOperationCounter) FromYaml(value string) error { return nil } -func (obj *patternFlowArpOperationCounter) ToJson() (string, error) { +func (obj *isisLspExtendedV4Prefix) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -255782,7 +301374,7 @@ func (obj *patternFlowArpOperationCounter) ToJson() (string, error) { return string(data), nil } -func (obj *patternFlowArpOperationCounter) FromJson(value string) error { +func (obj *isisLspExtendedV4Prefix) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -255795,7 +301387,7 @@ func (obj *patternFlowArpOperationCounter) FromJson(value string) error { return fmt.Errorf("unmarshal error %s", strings.Replace( uError.Error(), "\u00a0", " ", -1)[7:]) } - + obj.setNil() err := obj.validateToAndFrom() if err != nil { return err @@ -255803,19 +301395,19 @@ func (obj *patternFlowArpOperationCounter) FromJson(value string) error { return nil } -func (obj *patternFlowArpOperationCounter) validateToAndFrom() error { +func (obj *isisLspExtendedV4Prefix) validateToAndFrom() error { // emptyVars() obj.validateObj(&obj.validation, true) return obj.validationResult() } -func (obj *patternFlowArpOperationCounter) Validate() error { +func (obj *isisLspExtendedV4Prefix) Validate() error { // emptyVars() obj.validateObj(&obj.validation, false) return obj.validationResult() } -func (obj *patternFlowArpOperationCounter) String() string { +func (obj *isisLspExtendedV4Prefix) String() string { str, err := obj.ToYaml() if err != nil { return err.Error() @@ -255823,12 +301415,12 @@ func (obj *patternFlowArpOperationCounter) String() string { return str } -func (obj *patternFlowArpOperationCounter) Clone() (PatternFlowArpOperationCounter, error) { +func (obj *isisLspExtendedV4Prefix) Clone() (IsisLspExtendedV4Prefix, error) { vErr := obj.Validate() if vErr != nil { return nil, vErr } - newObj := NewPatternFlowArpOperationCounter() + newObj := NewIsisLspExtendedV4Prefix() data, err := proto.Marshal(obj.Msg()) if err != nil { return nil, err @@ -255840,199 +301432,272 @@ func (obj *patternFlowArpOperationCounter) Clone() (PatternFlowArpOperationCount return newObj, nil } -// PatternFlowArpOperationCounter is integer counter pattern -type PatternFlowArpOperationCounter interface { +func (obj *isisLspExtendedV4Prefix) setNil() { + obj.prefixAttributesHolder = nil + obj.validationErrors = nil + obj.warnings = nil + obj.constraints = make(map[string]map[string]Constraints) +} + +// IsisLspExtendedV4Prefix is this group defines attributes of an IPv4 standard prefix. +type IsisLspExtendedV4Prefix interface { Validation - // Msg marshals PatternFlowArpOperationCounter to protobuf object *otg.PatternFlowArpOperationCounter + // Msg marshals IsisLspExtendedV4Prefix to protobuf object *otg.IsisLspExtendedV4Prefix // and doesn't set defaults - Msg() *otg.PatternFlowArpOperationCounter - // SetMsg unmarshals PatternFlowArpOperationCounter from protobuf object *otg.PatternFlowArpOperationCounter + Msg() *otg.IsisLspExtendedV4Prefix + // SetMsg unmarshals IsisLspExtendedV4Prefix from protobuf object *otg.IsisLspExtendedV4Prefix // and doesn't set defaults - SetMsg(*otg.PatternFlowArpOperationCounter) PatternFlowArpOperationCounter - // ToProto marshals PatternFlowArpOperationCounter to protobuf object *otg.PatternFlowArpOperationCounter - ToProto() (*otg.PatternFlowArpOperationCounter, error) - // ToPbText marshals PatternFlowArpOperationCounter to protobuf text + SetMsg(*otg.IsisLspExtendedV4Prefix) IsisLspExtendedV4Prefix + // ToProto marshals IsisLspExtendedV4Prefix to protobuf object *otg.IsisLspExtendedV4Prefix + ToProto() (*otg.IsisLspExtendedV4Prefix, error) + // ToPbText marshals IsisLspExtendedV4Prefix to protobuf text ToPbText() (string, error) - // ToYaml marshals PatternFlowArpOperationCounter to YAML text + // ToYaml marshals IsisLspExtendedV4Prefix to YAML text ToYaml() (string, error) - // ToJson marshals PatternFlowArpOperationCounter to JSON text + // ToJson marshals IsisLspExtendedV4Prefix to JSON text ToJson() (string, error) - // FromProto unmarshals PatternFlowArpOperationCounter from protobuf object *otg.PatternFlowArpOperationCounter - FromProto(msg *otg.PatternFlowArpOperationCounter) (PatternFlowArpOperationCounter, error) - // FromPbText unmarshals PatternFlowArpOperationCounter from protobuf text + // FromProto unmarshals IsisLspExtendedV4Prefix from protobuf object *otg.IsisLspExtendedV4Prefix + FromProto(msg *otg.IsisLspExtendedV4Prefix) (IsisLspExtendedV4Prefix, error) + // FromPbText unmarshals IsisLspExtendedV4Prefix from protobuf text FromPbText(value string) error - // FromYaml unmarshals PatternFlowArpOperationCounter from YAML text + // FromYaml unmarshals IsisLspExtendedV4Prefix from YAML text FromYaml(value string) error - // FromJson unmarshals PatternFlowArpOperationCounter from JSON text + // FromJson unmarshals IsisLspExtendedV4Prefix from JSON text FromJson(value string) error - // Validate validates PatternFlowArpOperationCounter + // Validate validates IsisLspExtendedV4Prefix Validate() error // A stringer function String() string // Clones the object - Clone() (PatternFlowArpOperationCounter, error) + Clone() (IsisLspExtendedV4Prefix, error) validateToAndFrom() error validateObj(vObj *validation, set_default bool) setDefault() - // Start returns uint32, set in PatternFlowArpOperationCounter. - Start() uint32 - // SetStart assigns uint32 provided by user to PatternFlowArpOperationCounter - SetStart(value uint32) PatternFlowArpOperationCounter - // HasStart checks if Start has been set in PatternFlowArpOperationCounter - HasStart() bool - // Step returns uint32, set in PatternFlowArpOperationCounter. - Step() uint32 - // SetStep assigns uint32 provided by user to PatternFlowArpOperationCounter - SetStep(value uint32) PatternFlowArpOperationCounter - // HasStep checks if Step has been set in PatternFlowArpOperationCounter - HasStep() bool - // Count returns uint32, set in PatternFlowArpOperationCounter. - Count() uint32 - // SetCount assigns uint32 provided by user to PatternFlowArpOperationCounter - SetCount(value uint32) PatternFlowArpOperationCounter - // HasCount checks if Count has been set in PatternFlowArpOperationCounter - HasCount() bool + // Ipv4Address returns string, set in IsisLspExtendedV4Prefix. + Ipv4Address() string + // SetIpv4Address assigns string provided by user to IsisLspExtendedV4Prefix + SetIpv4Address(value string) IsisLspExtendedV4Prefix + // HasIpv4Address checks if Ipv4Address has been set in IsisLspExtendedV4Prefix + HasIpv4Address() bool + // PrefixLength returns uint32, set in IsisLspExtendedV4Prefix. + PrefixLength() uint32 + // SetPrefixLength assigns uint32 provided by user to IsisLspExtendedV4Prefix + SetPrefixLength(value uint32) IsisLspExtendedV4Prefix + // HasPrefixLength checks if PrefixLength has been set in IsisLspExtendedV4Prefix + HasPrefixLength() bool + // Metric returns uint32, set in IsisLspExtendedV4Prefix. + Metric() uint32 + // SetMetric assigns uint32 provided by user to IsisLspExtendedV4Prefix + SetMetric(value uint32) IsisLspExtendedV4Prefix + // HasMetric checks if Metric has been set in IsisLspExtendedV4Prefix + HasMetric() bool + // RedistributionType returns IsisLspExtendedV4PrefixRedistributionTypeEnum, set in IsisLspExtendedV4Prefix + RedistributionType() IsisLspExtendedV4PrefixRedistributionTypeEnum + // SetRedistributionType assigns IsisLspExtendedV4PrefixRedistributionTypeEnum provided by user to IsisLspExtendedV4Prefix + SetRedistributionType(value IsisLspExtendedV4PrefixRedistributionTypeEnum) IsisLspExtendedV4Prefix + // HasRedistributionType checks if RedistributionType has been set in IsisLspExtendedV4Prefix + HasRedistributionType() bool + // PrefixAttributes returns IsisLspPrefixAttributes, set in IsisLspExtendedV4Prefix. + // IsisLspPrefixAttributes is this contains the properties of ISIS Prefix attributes for the extended IPv4 and IPv6 reachability. https://www.rfc-editor.org/rfc/rfc7794.html + PrefixAttributes() IsisLspPrefixAttributes + // SetPrefixAttributes assigns IsisLspPrefixAttributes provided by user to IsisLspExtendedV4Prefix. + // IsisLspPrefixAttributes is this contains the properties of ISIS Prefix attributes for the extended IPv4 and IPv6 reachability. https://www.rfc-editor.org/rfc/rfc7794.html + SetPrefixAttributes(value IsisLspPrefixAttributes) IsisLspExtendedV4Prefix + // HasPrefixAttributes checks if PrefixAttributes has been set in IsisLspExtendedV4Prefix + HasPrefixAttributes() bool + setNil() } -// description is TBD -// Start returns a uint32 -func (obj *patternFlowArpOperationCounter) Start() uint32 { +// An IPv4 unicast prefix reachable via the originator of this LSP. +// Ipv4Address returns a string +func (obj *isisLspExtendedV4Prefix) Ipv4Address() string { - return *obj.obj.Start + return *obj.obj.Ipv4Address } -// description is TBD -// Start returns a uint32 -func (obj *patternFlowArpOperationCounter) HasStart() bool { - return obj.obj.Start != nil +// An IPv4 unicast prefix reachable via the originator of this LSP. +// Ipv4Address returns a string +func (obj *isisLspExtendedV4Prefix) HasIpv4Address() bool { + return obj.obj.Ipv4Address != nil } -// description is TBD -// SetStart sets the uint32 value in the PatternFlowArpOperationCounter object -func (obj *patternFlowArpOperationCounter) SetStart(value uint32) PatternFlowArpOperationCounter { +// An IPv4 unicast prefix reachable via the originator of this LSP. +// SetIpv4Address sets the string value in the IsisLspExtendedV4Prefix object +func (obj *isisLspExtendedV4Prefix) SetIpv4Address(value string) IsisLspExtendedV4Prefix { - obj.obj.Start = &value + obj.obj.Ipv4Address = &value return obj } -// description is TBD -// Step returns a uint32 -func (obj *patternFlowArpOperationCounter) Step() uint32 { +// The length of the IPv4 prefix. +// PrefixLength returns a uint32 +func (obj *isisLspExtendedV4Prefix) PrefixLength() uint32 { - return *obj.obj.Step + return *obj.obj.PrefixLength } -// description is TBD -// Step returns a uint32 -func (obj *patternFlowArpOperationCounter) HasStep() bool { - return obj.obj.Step != nil +// The length of the IPv4 prefix. +// PrefixLength returns a uint32 +func (obj *isisLspExtendedV4Prefix) HasPrefixLength() bool { + return obj.obj.PrefixLength != nil } -// description is TBD -// SetStep sets the uint32 value in the PatternFlowArpOperationCounter object -func (obj *patternFlowArpOperationCounter) SetStep(value uint32) PatternFlowArpOperationCounter { +// The length of the IPv4 prefix. +// SetPrefixLength sets the uint32 value in the IsisLspExtendedV4Prefix object +func (obj *isisLspExtendedV4Prefix) SetPrefixLength(value uint32) IsisLspExtendedV4Prefix { - obj.obj.Step = &value + obj.obj.PrefixLength = &value return obj } -// description is TBD -// Count returns a uint32 -func (obj *patternFlowArpOperationCounter) Count() uint32 { +// ISIS wide metric. +// Metric returns a uint32 +func (obj *isisLspExtendedV4Prefix) Metric() uint32 { - return *obj.obj.Count + return *obj.obj.Metric + +} + +// ISIS wide metric. +// Metric returns a uint32 +func (obj *isisLspExtendedV4Prefix) HasMetric() bool { + return obj.obj.Metric != nil +} + +// ISIS wide metric. +// SetMetric sets the uint32 value in the IsisLspExtendedV4Prefix object +func (obj *isisLspExtendedV4Prefix) SetMetric(value uint32) IsisLspExtendedV4Prefix { + + obj.obj.Metric = &value + return obj +} + +type IsisLspExtendedV4PrefixRedistributionTypeEnum string + +// Enum of RedistributionType on IsisLspExtendedV4Prefix +var IsisLspExtendedV4PrefixRedistributionType = struct { + UP IsisLspExtendedV4PrefixRedistributionTypeEnum + DOWN IsisLspExtendedV4PrefixRedistributionTypeEnum +}{ + UP: IsisLspExtendedV4PrefixRedistributionTypeEnum("up"), + DOWN: IsisLspExtendedV4PrefixRedistributionTypeEnum("down"), +} + +func (obj *isisLspExtendedV4Prefix) RedistributionType() IsisLspExtendedV4PrefixRedistributionTypeEnum { + return IsisLspExtendedV4PrefixRedistributionTypeEnum(obj.obj.RedistributionType.Enum().String()) +} + +// Up (0)-used when a prefix is initially advertised within the ISIS L3 hierarchy, +// and for all other prefixes in L1 and L2 LSPs. (default) +// Down (1)-used when an L1/L2 router advertises L2 prefixes in L1 LSPs. +// The prefixes are being advertised from a higher level (L2) down to a lower level (L1). +// RedistributionType returns a string +func (obj *isisLspExtendedV4Prefix) HasRedistributionType() bool { + return obj.obj.RedistributionType != nil +} + +func (obj *isisLspExtendedV4Prefix) SetRedistributionType(value IsisLspExtendedV4PrefixRedistributionTypeEnum) IsisLspExtendedV4Prefix { + intValue, ok := otg.IsisLspExtendedV4Prefix_RedistributionType_Enum_value[string(value)] + if !ok { + obj.validationErrors = append(obj.validationErrors, fmt.Sprintf( + "%s is not a valid choice on IsisLspExtendedV4PrefixRedistributionTypeEnum", string(value))) + return obj + } + enumValue := otg.IsisLspExtendedV4Prefix_RedistributionType_Enum(intValue) + obj.obj.RedistributionType = &enumValue + return obj } // description is TBD -// Count returns a uint32 -func (obj *patternFlowArpOperationCounter) HasCount() bool { - return obj.obj.Count != nil +// PrefixAttributes returns a IsisLspPrefixAttributes +func (obj *isisLspExtendedV4Prefix) PrefixAttributes() IsisLspPrefixAttributes { + if obj.obj.PrefixAttributes == nil { + obj.obj.PrefixAttributes = NewIsisLspPrefixAttributes().Msg() + } + if obj.prefixAttributesHolder == nil { + obj.prefixAttributesHolder = &isisLspPrefixAttributes{obj: obj.obj.PrefixAttributes} + } + return obj.prefixAttributesHolder } // description is TBD -// SetCount sets the uint32 value in the PatternFlowArpOperationCounter object -func (obj *patternFlowArpOperationCounter) SetCount(value uint32) PatternFlowArpOperationCounter { +// PrefixAttributes returns a IsisLspPrefixAttributes +func (obj *isisLspExtendedV4Prefix) HasPrefixAttributes() bool { + return obj.obj.PrefixAttributes != nil +} + +// description is TBD +// SetPrefixAttributes sets the IsisLspPrefixAttributes value in the IsisLspExtendedV4Prefix object +func (obj *isisLspExtendedV4Prefix) SetPrefixAttributes(value IsisLspPrefixAttributes) IsisLspExtendedV4Prefix { + + obj.prefixAttributesHolder = nil + obj.obj.PrefixAttributes = value.Msg() - obj.obj.Count = &value return obj } -func (obj *patternFlowArpOperationCounter) validateObj(vObj *validation, set_default bool) { +func (obj *isisLspExtendedV4Prefix) validateObj(vObj *validation, set_default bool) { if set_default { obj.setDefault() } - if obj.obj.Start != nil { + if obj.obj.Ipv4Address != nil { - if *obj.obj.Start > 65535 { - vObj.validationErrors = append( - vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowArpOperationCounter.Start <= 65535 but Got %d", *obj.obj.Start)) + err := obj.validateIpv4(obj.Ipv4Address()) + if err != nil { + vObj.validationErrors = append(vObj.validationErrors, fmt.Sprintf("%s %s", err.Error(), "on IsisLspExtendedV4Prefix.Ipv4Address")) } } - if obj.obj.Step != nil { + if obj.obj.PrefixLength != nil { - if *obj.obj.Step > 65535 { + if *obj.obj.PrefixLength > 32 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowArpOperationCounter.Step <= 65535 but Got %d", *obj.obj.Step)) + fmt.Sprintf("0 <= IsisLspExtendedV4Prefix.PrefixLength <= 32 but Got %d", *obj.obj.PrefixLength)) } } - if obj.obj.Count != nil { - - if *obj.obj.Count > 65535 { - vObj.validationErrors = append( - vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowArpOperationCounter.Count <= 65535 but Got %d", *obj.obj.Count)) - } + if obj.obj.PrefixAttributes != nil { + obj.PrefixAttributes().validateObj(vObj, set_default) } } -func (obj *patternFlowArpOperationCounter) setDefault() { - if obj.obj.Start == nil { - obj.SetStart(1) - } - if obj.obj.Step == nil { - obj.SetStep(1) - } - if obj.obj.Count == nil { - obj.SetCount(1) - } +func (obj *isisLspExtendedV4Prefix) setDefault() { } -// ***** PatternFlowArpOperationMetricTag ***** -type patternFlowArpOperationMetricTag struct { +// ***** IsisLspV6Prefix ***** +type isisLspV6Prefix struct { validation - obj *otg.PatternFlowArpOperationMetricTag + obj *otg.IsisLspV6Prefix + prefixAttributesHolder IsisLspPrefixAttributes } -func NewPatternFlowArpOperationMetricTag() PatternFlowArpOperationMetricTag { - obj := patternFlowArpOperationMetricTag{obj: &otg.PatternFlowArpOperationMetricTag{}} +func NewIsisLspV6Prefix() IsisLspV6Prefix { + obj := isisLspV6Prefix{obj: &otg.IsisLspV6Prefix{}} obj.setDefault() return &obj } -func (obj *patternFlowArpOperationMetricTag) Msg() *otg.PatternFlowArpOperationMetricTag { +func (obj *isisLspV6Prefix) Msg() *otg.IsisLspV6Prefix { return obj.obj } -func (obj *patternFlowArpOperationMetricTag) SetMsg(msg *otg.PatternFlowArpOperationMetricTag) PatternFlowArpOperationMetricTag { - +func (obj *isisLspV6Prefix) SetMsg(msg *otg.IsisLspV6Prefix) IsisLspV6Prefix { + obj.setNil() proto.Merge(obj.obj, msg) return obj } -func (obj *patternFlowArpOperationMetricTag) ToProto() (*otg.PatternFlowArpOperationMetricTag, error) { +func (obj *isisLspV6Prefix) ToProto() (*otg.IsisLspV6Prefix, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -256040,7 +301705,7 @@ func (obj *patternFlowArpOperationMetricTag) ToProto() (*otg.PatternFlowArpOpera return obj.Msg(), nil } -func (obj *patternFlowArpOperationMetricTag) FromProto(msg *otg.PatternFlowArpOperationMetricTag) (PatternFlowArpOperationMetricTag, error) { +func (obj *isisLspV6Prefix) FromProto(msg *otg.IsisLspV6Prefix) (IsisLspV6Prefix, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -256049,7 +301714,7 @@ func (obj *patternFlowArpOperationMetricTag) FromProto(msg *otg.PatternFlowArpOp return newObj, nil } -func (obj *patternFlowArpOperationMetricTag) ToPbText() (string, error) { +func (obj *isisLspV6Prefix) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -256061,12 +301726,12 @@ func (obj *patternFlowArpOperationMetricTag) ToPbText() (string, error) { return string(protoMarshal), nil } -func (obj *patternFlowArpOperationMetricTag) FromPbText(value string) error { +func (obj *isisLspV6Prefix) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj } - + obj.setNil() vErr := obj.validateToAndFrom() if vErr != nil { return vErr @@ -256074,7 +301739,7 @@ func (obj *patternFlowArpOperationMetricTag) FromPbText(value string) error { return retObj } -func (obj *patternFlowArpOperationMetricTag) ToYaml() (string, error) { +func (obj *isisLspV6Prefix) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -256095,7 +301760,7 @@ func (obj *patternFlowArpOperationMetricTag) ToYaml() (string, error) { return string(data), nil } -func (obj *patternFlowArpOperationMetricTag) FromYaml(value string) error { +func (obj *isisLspV6Prefix) FromYaml(value string) error { if value == "" { value = "{}" } @@ -256112,7 +301777,7 @@ func (obj *patternFlowArpOperationMetricTag) FromYaml(value string) error { return fmt.Errorf("unmarshal error %s", strings.Replace( uError.Error(), "\u00a0", " ", -1)[7:]) } - + obj.setNil() vErr := obj.validateToAndFrom() if vErr != nil { return vErr @@ -256120,7 +301785,7 @@ func (obj *patternFlowArpOperationMetricTag) FromYaml(value string) error { return nil } -func (obj *patternFlowArpOperationMetricTag) ToJson() (string, error) { +func (obj *isisLspV6Prefix) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -256138,7 +301803,7 @@ func (obj *patternFlowArpOperationMetricTag) ToJson() (string, error) { return string(data), nil } -func (obj *patternFlowArpOperationMetricTag) FromJson(value string) error { +func (obj *isisLspV6Prefix) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -256151,7 +301816,7 @@ func (obj *patternFlowArpOperationMetricTag) FromJson(value string) error { return fmt.Errorf("unmarshal error %s", strings.Replace( uError.Error(), "\u00a0", " ", -1)[7:]) } - + obj.setNil() err := obj.validateToAndFrom() if err != nil { return err @@ -256159,19 +301824,19 @@ func (obj *patternFlowArpOperationMetricTag) FromJson(value string) error { return nil } -func (obj *patternFlowArpOperationMetricTag) validateToAndFrom() error { +func (obj *isisLspV6Prefix) validateToAndFrom() error { // emptyVars() obj.validateObj(&obj.validation, true) return obj.validationResult() } -func (obj *patternFlowArpOperationMetricTag) Validate() error { +func (obj *isisLspV6Prefix) Validate() error { // emptyVars() obj.validateObj(&obj.validation, false) return obj.validationResult() } -func (obj *patternFlowArpOperationMetricTag) String() string { +func (obj *isisLspV6Prefix) String() string { str, err := obj.ToYaml() if err != nil { return err.Error() @@ -256179,12 +301844,12 @@ func (obj *patternFlowArpOperationMetricTag) String() string { return str } -func (obj *patternFlowArpOperationMetricTag) Clone() (PatternFlowArpOperationMetricTag, error) { +func (obj *isisLspV6Prefix) Clone() (IsisLspV6Prefix, error) { vErr := obj.Validate() if vErr != nil { return nil, vErr } - newObj := NewPatternFlowArpOperationMetricTag() + newObj := NewIsisLspV6Prefix() data, err := proto.Marshal(obj.Msg()) if err != nil { return nil, err @@ -256196,183 +301861,324 @@ func (obj *patternFlowArpOperationMetricTag) Clone() (PatternFlowArpOperationMet return newObj, nil } -// PatternFlowArpOperationMetricTag is metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. -type PatternFlowArpOperationMetricTag interface { +func (obj *isisLspV6Prefix) setNil() { + obj.prefixAttributesHolder = nil + obj.validationErrors = nil + obj.warnings = nil + obj.constraints = make(map[string]map[string]Constraints) +} + +// IsisLspV6Prefix is it defines attributes of an IPv6 standard prefix. +type IsisLspV6Prefix interface { Validation - // Msg marshals PatternFlowArpOperationMetricTag to protobuf object *otg.PatternFlowArpOperationMetricTag + // Msg marshals IsisLspV6Prefix to protobuf object *otg.IsisLspV6Prefix // and doesn't set defaults - Msg() *otg.PatternFlowArpOperationMetricTag - // SetMsg unmarshals PatternFlowArpOperationMetricTag from protobuf object *otg.PatternFlowArpOperationMetricTag + Msg() *otg.IsisLspV6Prefix + // SetMsg unmarshals IsisLspV6Prefix from protobuf object *otg.IsisLspV6Prefix // and doesn't set defaults - SetMsg(*otg.PatternFlowArpOperationMetricTag) PatternFlowArpOperationMetricTag - // ToProto marshals PatternFlowArpOperationMetricTag to protobuf object *otg.PatternFlowArpOperationMetricTag - ToProto() (*otg.PatternFlowArpOperationMetricTag, error) - // ToPbText marshals PatternFlowArpOperationMetricTag to protobuf text + SetMsg(*otg.IsisLspV6Prefix) IsisLspV6Prefix + // ToProto marshals IsisLspV6Prefix to protobuf object *otg.IsisLspV6Prefix + ToProto() (*otg.IsisLspV6Prefix, error) + // ToPbText marshals IsisLspV6Prefix to protobuf text ToPbText() (string, error) - // ToYaml marshals PatternFlowArpOperationMetricTag to YAML text + // ToYaml marshals IsisLspV6Prefix to YAML text ToYaml() (string, error) - // ToJson marshals PatternFlowArpOperationMetricTag to JSON text + // ToJson marshals IsisLspV6Prefix to JSON text ToJson() (string, error) - // FromProto unmarshals PatternFlowArpOperationMetricTag from protobuf object *otg.PatternFlowArpOperationMetricTag - FromProto(msg *otg.PatternFlowArpOperationMetricTag) (PatternFlowArpOperationMetricTag, error) - // FromPbText unmarshals PatternFlowArpOperationMetricTag from protobuf text + // FromProto unmarshals IsisLspV6Prefix from protobuf object *otg.IsisLspV6Prefix + FromProto(msg *otg.IsisLspV6Prefix) (IsisLspV6Prefix, error) + // FromPbText unmarshals IsisLspV6Prefix from protobuf text FromPbText(value string) error - // FromYaml unmarshals PatternFlowArpOperationMetricTag from YAML text + // FromYaml unmarshals IsisLspV6Prefix from YAML text FromYaml(value string) error - // FromJson unmarshals PatternFlowArpOperationMetricTag from JSON text + // FromJson unmarshals IsisLspV6Prefix from JSON text FromJson(value string) error - // Validate validates PatternFlowArpOperationMetricTag + // Validate validates IsisLspV6Prefix Validate() error // A stringer function String() string // Clones the object - Clone() (PatternFlowArpOperationMetricTag, error) + Clone() (IsisLspV6Prefix, error) validateToAndFrom() error validateObj(vObj *validation, set_default bool) setDefault() - // Name returns string, set in PatternFlowArpOperationMetricTag. - Name() string - // SetName assigns string provided by user to PatternFlowArpOperationMetricTag - SetName(value string) PatternFlowArpOperationMetricTag - // Offset returns uint32, set in PatternFlowArpOperationMetricTag. - Offset() uint32 - // SetOffset assigns uint32 provided by user to PatternFlowArpOperationMetricTag - SetOffset(value uint32) PatternFlowArpOperationMetricTag - // HasOffset checks if Offset has been set in PatternFlowArpOperationMetricTag - HasOffset() bool - // Length returns uint32, set in PatternFlowArpOperationMetricTag. - Length() uint32 - // SetLength assigns uint32 provided by user to PatternFlowArpOperationMetricTag - SetLength(value uint32) PatternFlowArpOperationMetricTag - // HasLength checks if Length has been set in PatternFlowArpOperationMetricTag - HasLength() bool + // Ipv6Address returns string, set in IsisLspV6Prefix. + Ipv6Address() string + // SetIpv6Address assigns string provided by user to IsisLspV6Prefix + SetIpv6Address(value string) IsisLspV6Prefix + // HasIpv6Address checks if Ipv6Address has been set in IsisLspV6Prefix + HasIpv6Address() bool + // PrefixLength returns uint32, set in IsisLspV6Prefix. + PrefixLength() uint32 + // SetPrefixLength assigns uint32 provided by user to IsisLspV6Prefix + SetPrefixLength(value uint32) IsisLspV6Prefix + // HasPrefixLength checks if PrefixLength has been set in IsisLspV6Prefix + HasPrefixLength() bool + // Metric returns uint32, set in IsisLspV6Prefix. + Metric() uint32 + // SetMetric assigns uint32 provided by user to IsisLspV6Prefix + SetMetric(value uint32) IsisLspV6Prefix + // HasMetric checks if Metric has been set in IsisLspV6Prefix + HasMetric() bool + // RedistributionType returns IsisLspV6PrefixRedistributionTypeEnum, set in IsisLspV6Prefix + RedistributionType() IsisLspV6PrefixRedistributionTypeEnum + // SetRedistributionType assigns IsisLspV6PrefixRedistributionTypeEnum provided by user to IsisLspV6Prefix + SetRedistributionType(value IsisLspV6PrefixRedistributionTypeEnum) IsisLspV6Prefix + // HasRedistributionType checks if RedistributionType has been set in IsisLspV6Prefix + HasRedistributionType() bool + // OriginType returns IsisLspV6PrefixOriginTypeEnum, set in IsisLspV6Prefix + OriginType() IsisLspV6PrefixOriginTypeEnum + // SetOriginType assigns IsisLspV6PrefixOriginTypeEnum provided by user to IsisLspV6Prefix + SetOriginType(value IsisLspV6PrefixOriginTypeEnum) IsisLspV6Prefix + // HasOriginType checks if OriginType has been set in IsisLspV6Prefix + HasOriginType() bool + // PrefixAttributes returns IsisLspPrefixAttributes, set in IsisLspV6Prefix. + // IsisLspPrefixAttributes is this contains the properties of ISIS Prefix attributes for the extended IPv4 and IPv6 reachability. https://www.rfc-editor.org/rfc/rfc7794.html + PrefixAttributes() IsisLspPrefixAttributes + // SetPrefixAttributes assigns IsisLspPrefixAttributes provided by user to IsisLspV6Prefix. + // IsisLspPrefixAttributes is this contains the properties of ISIS Prefix attributes for the extended IPv4 and IPv6 reachability. https://www.rfc-editor.org/rfc/rfc7794.html + SetPrefixAttributes(value IsisLspPrefixAttributes) IsisLspV6Prefix + // HasPrefixAttributes checks if PrefixAttributes has been set in IsisLspV6Prefix + HasPrefixAttributes() bool + setNil() } -// Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field -// Name returns a string -func (obj *patternFlowArpOperationMetricTag) Name() string { +// An IPv6 unicast prefix reachable via the originator of this LSP. +// Ipv6Address returns a string +func (obj *isisLspV6Prefix) Ipv6Address() string { - return *obj.obj.Name + return *obj.obj.Ipv6Address + +} + +// An IPv6 unicast prefix reachable via the originator of this LSP. +// Ipv6Address returns a string +func (obj *isisLspV6Prefix) HasIpv6Address() bool { + return obj.obj.Ipv6Address != nil +} + +// An IPv6 unicast prefix reachable via the originator of this LSP. +// SetIpv6Address sets the string value in the IsisLspV6Prefix object +func (obj *isisLspV6Prefix) SetIpv6Address(value string) IsisLspV6Prefix { + + obj.obj.Ipv6Address = &value + return obj +} + +// The length of the IPv6 prefix. +// PrefixLength returns a uint32 +func (obj *isisLspV6Prefix) PrefixLength() uint32 { + + return *obj.obj.PrefixLength + +} + +// The length of the IPv6 prefix. +// PrefixLength returns a uint32 +func (obj *isisLspV6Prefix) HasPrefixLength() bool { + return obj.obj.PrefixLength != nil +} + +// The length of the IPv6 prefix. +// SetPrefixLength sets the uint32 value in the IsisLspV6Prefix object +func (obj *isisLspV6Prefix) SetPrefixLength(value uint32) IsisLspV6Prefix { + + obj.obj.PrefixLength = &value + return obj +} + +// ISIS wide metric. +// Metric returns a uint32 +func (obj *isisLspV6Prefix) Metric() uint32 { + + return *obj.obj.Metric + +} + +// ISIS wide metric. +// Metric returns a uint32 +func (obj *isisLspV6Prefix) HasMetric() bool { + return obj.obj.Metric != nil +} + +// ISIS wide metric. +// SetMetric sets the uint32 value in the IsisLspV6Prefix object +func (obj *isisLspV6Prefix) SetMetric(value uint32) IsisLspV6Prefix { + + obj.obj.Metric = &value + return obj +} + +type IsisLspV6PrefixRedistributionTypeEnum string + +// Enum of RedistributionType on IsisLspV6Prefix +var IsisLspV6PrefixRedistributionType = struct { + UP IsisLspV6PrefixRedistributionTypeEnum + DOWN IsisLspV6PrefixRedistributionTypeEnum +}{ + UP: IsisLspV6PrefixRedistributionTypeEnum("up"), + DOWN: IsisLspV6PrefixRedistributionTypeEnum("down"), +} + +func (obj *isisLspV6Prefix) RedistributionType() IsisLspV6PrefixRedistributionTypeEnum { + return IsisLspV6PrefixRedistributionTypeEnum(obj.obj.RedistributionType.Enum().String()) +} +// Up (0)-used when a prefix is initially advertised within the ISIS L3 hierarchy, +// and for all other prefixes in L1 and L2 LSPs. (default) +// Down (1)-used when an L1/L2 router advertises L2 prefixes in L1 LSPs. +// The prefixes are being advertised from a higher level (L2) down to a lower level (L1). +// RedistributionType returns a string +func (obj *isisLspV6Prefix) HasRedistributionType() bool { + return obj.obj.RedistributionType != nil } -// Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field -// SetName sets the string value in the PatternFlowArpOperationMetricTag object -func (obj *patternFlowArpOperationMetricTag) SetName(value string) PatternFlowArpOperationMetricTag { +func (obj *isisLspV6Prefix) SetRedistributionType(value IsisLspV6PrefixRedistributionTypeEnum) IsisLspV6Prefix { + intValue, ok := otg.IsisLspV6Prefix_RedistributionType_Enum_value[string(value)] + if !ok { + obj.validationErrors = append(obj.validationErrors, fmt.Sprintf( + "%s is not a valid choice on IsisLspV6PrefixRedistributionTypeEnum", string(value))) + return obj + } + enumValue := otg.IsisLspV6Prefix_RedistributionType_Enum(intValue) + obj.obj.RedistributionType = &enumValue - obj.obj.Name = &value return obj } -// Offset in bits relative to start of corresponding header field -// Offset returns a uint32 -func (obj *patternFlowArpOperationMetricTag) Offset() uint32 { +type IsisLspV6PrefixOriginTypeEnum string - return *obj.obj.Offset +// Enum of OriginType on IsisLspV6Prefix +var IsisLspV6PrefixOriginType = struct { + INTERNAL IsisLspV6PrefixOriginTypeEnum + EXTERNAL IsisLspV6PrefixOriginTypeEnum +}{ + INTERNAL: IsisLspV6PrefixOriginTypeEnum("internal"), + EXTERNAL: IsisLspV6PrefixOriginTypeEnum("external"), +} +func (obj *isisLspV6Prefix) OriginType() IsisLspV6PrefixOriginTypeEnum { + return IsisLspV6PrefixOriginTypeEnum(obj.obj.OriginType.Enum().String()) } -// Offset in bits relative to start of corresponding header field -// Offset returns a uint32 -func (obj *patternFlowArpOperationMetricTag) HasOffset() bool { - return obj.obj.Offset != nil +// The origin of the advertised route-internal or external to the ISIS area. Options include the following: +// Internal-for intra-area routes, through Level 1 LSPs. +// External-for inter-area routes redistributed within L1, through Level +// 1 LSPs. +// OriginType returns a string +func (obj *isisLspV6Prefix) HasOriginType() bool { + return obj.obj.OriginType != nil } -// Offset in bits relative to start of corresponding header field -// SetOffset sets the uint32 value in the PatternFlowArpOperationMetricTag object -func (obj *patternFlowArpOperationMetricTag) SetOffset(value uint32) PatternFlowArpOperationMetricTag { +func (obj *isisLspV6Prefix) SetOriginType(value IsisLspV6PrefixOriginTypeEnum) IsisLspV6Prefix { + intValue, ok := otg.IsisLspV6Prefix_OriginType_Enum_value[string(value)] + if !ok { + obj.validationErrors = append(obj.validationErrors, fmt.Sprintf( + "%s is not a valid choice on IsisLspV6PrefixOriginTypeEnum", string(value))) + return obj + } + enumValue := otg.IsisLspV6Prefix_OriginType_Enum(intValue) + obj.obj.OriginType = &enumValue - obj.obj.Offset = &value return obj } -// Number of bits to track for metrics starting from configured offset of corresponding header field -// Length returns a uint32 -func (obj *patternFlowArpOperationMetricTag) Length() uint32 { - - return *obj.obj.Length - +// description is TBD +// PrefixAttributes returns a IsisLspPrefixAttributes +func (obj *isisLspV6Prefix) PrefixAttributes() IsisLspPrefixAttributes { + if obj.obj.PrefixAttributes == nil { + obj.obj.PrefixAttributes = NewIsisLspPrefixAttributes().Msg() + } + if obj.prefixAttributesHolder == nil { + obj.prefixAttributesHolder = &isisLspPrefixAttributes{obj: obj.obj.PrefixAttributes} + } + return obj.prefixAttributesHolder } -// Number of bits to track for metrics starting from configured offset of corresponding header field -// Length returns a uint32 -func (obj *patternFlowArpOperationMetricTag) HasLength() bool { - return obj.obj.Length != nil +// description is TBD +// PrefixAttributes returns a IsisLspPrefixAttributes +func (obj *isisLspV6Prefix) HasPrefixAttributes() bool { + return obj.obj.PrefixAttributes != nil } -// Number of bits to track for metrics starting from configured offset of corresponding header field -// SetLength sets the uint32 value in the PatternFlowArpOperationMetricTag object -func (obj *patternFlowArpOperationMetricTag) SetLength(value uint32) PatternFlowArpOperationMetricTag { +// description is TBD +// SetPrefixAttributes sets the IsisLspPrefixAttributes value in the IsisLspV6Prefix object +func (obj *isisLspV6Prefix) SetPrefixAttributes(value IsisLspPrefixAttributes) IsisLspV6Prefix { + + obj.prefixAttributesHolder = nil + obj.obj.PrefixAttributes = value.Msg() - obj.obj.Length = &value return obj } -func (obj *patternFlowArpOperationMetricTag) validateObj(vObj *validation, set_default bool) { +func (obj *isisLspV6Prefix) validateObj(vObj *validation, set_default bool) { if set_default { obj.setDefault() } - // Name is required - if obj.obj.Name == nil { - vObj.validationErrors = append(vObj.validationErrors, "Name is required field on interface PatternFlowArpOperationMetricTag") - } - - if obj.obj.Offset != nil { + if obj.obj.Ipv6Address != nil { - if *obj.obj.Offset > 15 { - vObj.validationErrors = append( - vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowArpOperationMetricTag.Offset <= 15 but Got %d", *obj.obj.Offset)) + err := obj.validateIpv6(obj.Ipv6Address()) + if err != nil { + vObj.validationErrors = append(vObj.validationErrors, fmt.Sprintf("%s %s", err.Error(), "on IsisLspV6Prefix.Ipv6Address")) } } - if obj.obj.Length != nil { + if obj.obj.PrefixLength != nil { - if *obj.obj.Length < 1 || *obj.obj.Length > 16 { + if *obj.obj.PrefixLength > 128 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("1 <= PatternFlowArpOperationMetricTag.Length <= 16 but Got %d", *obj.obj.Length)) + fmt.Sprintf("0 <= IsisLspV6Prefix.PrefixLength <= 128 but Got %d", *obj.obj.PrefixLength)) } } -} + if obj.obj.PrefixAttributes != nil { -func (obj *patternFlowArpOperationMetricTag) setDefault() { - if obj.obj.Offset == nil { - obj.SetOffset(0) - } - if obj.obj.Length == nil { - obj.SetLength(16) + obj.PrefixAttributes().validateObj(vObj, set_default) } } -// ***** PatternFlowArpSenderHardwareAddrCounter ***** -type patternFlowArpSenderHardwareAddrCounter struct { +func (obj *isisLspV6Prefix) setDefault() { + +} + +// ***** BgpV4EviVxlan ***** +type bgpV4EviVxlan struct { validation - obj *otg.PatternFlowArpSenderHardwareAddrCounter + obj *otg.BgpV4EviVxlan + broadcastDomainsHolder BgpV4EviVxlanBgpV4EviVxlanBroadcastDomainIter + routeDistinguisherHolder BgpRouteDistinguisher + routeTargetExportHolder BgpV4EviVxlanBgpRouteTargetIter + routeTargetImportHolder BgpV4EviVxlanBgpRouteTargetIter + l3RouteTargetExportHolder BgpV4EviVxlanBgpRouteTargetIter + l3RouteTargetImportHolder BgpV4EviVxlanBgpRouteTargetIter + advancedHolder BgpRouteAdvanced + communitiesHolder BgpV4EviVxlanBgpCommunityIter + extCommunitiesHolder BgpV4EviVxlanBgpExtCommunityIter + asPathHolder BgpAsPath } -func NewPatternFlowArpSenderHardwareAddrCounter() PatternFlowArpSenderHardwareAddrCounter { - obj := patternFlowArpSenderHardwareAddrCounter{obj: &otg.PatternFlowArpSenderHardwareAddrCounter{}} +func NewBgpV4EviVxlan() BgpV4EviVxlan { + obj := bgpV4EviVxlan{obj: &otg.BgpV4EviVxlan{}} obj.setDefault() return &obj } -func (obj *patternFlowArpSenderHardwareAddrCounter) Msg() *otg.PatternFlowArpSenderHardwareAddrCounter { +func (obj *bgpV4EviVxlan) Msg() *otg.BgpV4EviVxlan { return obj.obj } -func (obj *patternFlowArpSenderHardwareAddrCounter) SetMsg(msg *otg.PatternFlowArpSenderHardwareAddrCounter) PatternFlowArpSenderHardwareAddrCounter { - +func (obj *bgpV4EviVxlan) SetMsg(msg *otg.BgpV4EviVxlan) BgpV4EviVxlan { + obj.setNil() proto.Merge(obj.obj, msg) return obj } -func (obj *patternFlowArpSenderHardwareAddrCounter) ToProto() (*otg.PatternFlowArpSenderHardwareAddrCounter, error) { +func (obj *bgpV4EviVxlan) ToProto() (*otg.BgpV4EviVxlan, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -256380,7 +302186,7 @@ func (obj *patternFlowArpSenderHardwareAddrCounter) ToProto() (*otg.PatternFlowA return obj.Msg(), nil } -func (obj *patternFlowArpSenderHardwareAddrCounter) FromProto(msg *otg.PatternFlowArpSenderHardwareAddrCounter) (PatternFlowArpSenderHardwareAddrCounter, error) { +func (obj *bgpV4EviVxlan) FromProto(msg *otg.BgpV4EviVxlan) (BgpV4EviVxlan, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -256389,7 +302195,7 @@ func (obj *patternFlowArpSenderHardwareAddrCounter) FromProto(msg *otg.PatternFl return newObj, nil } -func (obj *patternFlowArpSenderHardwareAddrCounter) ToPbText() (string, error) { +func (obj *bgpV4EviVxlan) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -256401,12 +302207,12 @@ func (obj *patternFlowArpSenderHardwareAddrCounter) ToPbText() (string, error) { return string(protoMarshal), nil } -func (obj *patternFlowArpSenderHardwareAddrCounter) FromPbText(value string) error { +func (obj *bgpV4EviVxlan) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj } - + obj.setNil() vErr := obj.validateToAndFrom() if vErr != nil { return vErr @@ -256414,7 +302220,7 @@ func (obj *patternFlowArpSenderHardwareAddrCounter) FromPbText(value string) err return retObj } -func (obj *patternFlowArpSenderHardwareAddrCounter) ToYaml() (string, error) { +func (obj *bgpV4EviVxlan) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -256435,7 +302241,7 @@ func (obj *patternFlowArpSenderHardwareAddrCounter) ToYaml() (string, error) { return string(data), nil } -func (obj *patternFlowArpSenderHardwareAddrCounter) FromYaml(value string) error { +func (obj *bgpV4EviVxlan) FromYaml(value string) error { if value == "" { value = "{}" } @@ -256452,7 +302258,7 @@ func (obj *patternFlowArpSenderHardwareAddrCounter) FromYaml(value string) error return fmt.Errorf("unmarshal error %s", strings.Replace( uError.Error(), "\u00a0", " ", -1)[7:]) } - + obj.setNil() vErr := obj.validateToAndFrom() if vErr != nil { return vErr @@ -256460,7 +302266,7 @@ func (obj *patternFlowArpSenderHardwareAddrCounter) FromYaml(value string) error return nil } -func (obj *patternFlowArpSenderHardwareAddrCounter) ToJson() (string, error) { +func (obj *bgpV4EviVxlan) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -256478,7 +302284,7 @@ func (obj *patternFlowArpSenderHardwareAddrCounter) ToJson() (string, error) { return string(data), nil } -func (obj *patternFlowArpSenderHardwareAddrCounter) FromJson(value string) error { +func (obj *bgpV4EviVxlan) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -256491,7 +302297,7 @@ func (obj *patternFlowArpSenderHardwareAddrCounter) FromJson(value string) error return fmt.Errorf("unmarshal error %s", strings.Replace( uError.Error(), "\u00a0", " ", -1)[7:]) } - + obj.setNil() err := obj.validateToAndFrom() if err != nil { return err @@ -256499,19 +302305,19 @@ func (obj *patternFlowArpSenderHardwareAddrCounter) FromJson(value string) error return nil } -func (obj *patternFlowArpSenderHardwareAddrCounter) validateToAndFrom() error { +func (obj *bgpV4EviVxlan) validateToAndFrom() error { // emptyVars() obj.validateObj(&obj.validation, true) return obj.validationResult() } -func (obj *patternFlowArpSenderHardwareAddrCounter) Validate() error { +func (obj *bgpV4EviVxlan) Validate() error { // emptyVars() obj.validateObj(&obj.validation, false) return obj.validationResult() } -func (obj *patternFlowArpSenderHardwareAddrCounter) String() string { +func (obj *bgpV4EviVxlan) String() string { str, err := obj.ToYaml() if err != nil { return err.Error() @@ -256519,12 +302325,12 @@ func (obj *patternFlowArpSenderHardwareAddrCounter) String() string { return str } -func (obj *patternFlowArpSenderHardwareAddrCounter) Clone() (PatternFlowArpSenderHardwareAddrCounter, error) { +func (obj *bgpV4EviVxlan) Clone() (BgpV4EviVxlan, error) { vErr := obj.Validate() if vErr != nil { return nil, vErr } - newObj := NewPatternFlowArpSenderHardwareAddrCounter() + newObj := NewBgpV4EviVxlan() data, err := proto.Marshal(obj.Msg()) if err != nil { return nil, err @@ -256536,187 +302342,842 @@ func (obj *patternFlowArpSenderHardwareAddrCounter) Clone() (PatternFlowArpSende return newObj, nil } -// PatternFlowArpSenderHardwareAddrCounter is mac counter pattern -type PatternFlowArpSenderHardwareAddrCounter interface { +func (obj *bgpV4EviVxlan) setNil() { + obj.broadcastDomainsHolder = nil + obj.routeDistinguisherHolder = nil + obj.routeTargetExportHolder = nil + obj.routeTargetImportHolder = nil + obj.l3RouteTargetExportHolder = nil + obj.l3RouteTargetImportHolder = nil + obj.advancedHolder = nil + obj.communitiesHolder = nil + obj.extCommunitiesHolder = nil + obj.asPathHolder = nil + obj.validationErrors = nil + obj.warnings = nil + obj.constraints = make(map[string]map[string]Constraints) +} + +// BgpV4EviVxlan is configuration for BGP EVPN EVI. Advertises following routes - +// +// # Type 3 - Inclusive Multicast Ethernet Tag Route +// +// Type 1 - Ethernet Auto-discovery Route (Per EVI) +// +// Type 1 - Ethernet Auto-discovery Route (Per ES) +type BgpV4EviVxlan interface { Validation - // Msg marshals PatternFlowArpSenderHardwareAddrCounter to protobuf object *otg.PatternFlowArpSenderHardwareAddrCounter + // Msg marshals BgpV4EviVxlan to protobuf object *otg.BgpV4EviVxlan // and doesn't set defaults - Msg() *otg.PatternFlowArpSenderHardwareAddrCounter - // SetMsg unmarshals PatternFlowArpSenderHardwareAddrCounter from protobuf object *otg.PatternFlowArpSenderHardwareAddrCounter + Msg() *otg.BgpV4EviVxlan + // SetMsg unmarshals BgpV4EviVxlan from protobuf object *otg.BgpV4EviVxlan // and doesn't set defaults - SetMsg(*otg.PatternFlowArpSenderHardwareAddrCounter) PatternFlowArpSenderHardwareAddrCounter - // ToProto marshals PatternFlowArpSenderHardwareAddrCounter to protobuf object *otg.PatternFlowArpSenderHardwareAddrCounter - ToProto() (*otg.PatternFlowArpSenderHardwareAddrCounter, error) - // ToPbText marshals PatternFlowArpSenderHardwareAddrCounter to protobuf text + SetMsg(*otg.BgpV4EviVxlan) BgpV4EviVxlan + // ToProto marshals BgpV4EviVxlan to protobuf object *otg.BgpV4EviVxlan + ToProto() (*otg.BgpV4EviVxlan, error) + // ToPbText marshals BgpV4EviVxlan to protobuf text ToPbText() (string, error) - // ToYaml marshals PatternFlowArpSenderHardwareAddrCounter to YAML text + // ToYaml marshals BgpV4EviVxlan to YAML text ToYaml() (string, error) - // ToJson marshals PatternFlowArpSenderHardwareAddrCounter to JSON text + // ToJson marshals BgpV4EviVxlan to JSON text ToJson() (string, error) - // FromProto unmarshals PatternFlowArpSenderHardwareAddrCounter from protobuf object *otg.PatternFlowArpSenderHardwareAddrCounter - FromProto(msg *otg.PatternFlowArpSenderHardwareAddrCounter) (PatternFlowArpSenderHardwareAddrCounter, error) - // FromPbText unmarshals PatternFlowArpSenderHardwareAddrCounter from protobuf text + // FromProto unmarshals BgpV4EviVxlan from protobuf object *otg.BgpV4EviVxlan + FromProto(msg *otg.BgpV4EviVxlan) (BgpV4EviVxlan, error) + // FromPbText unmarshals BgpV4EviVxlan from protobuf text FromPbText(value string) error - // FromYaml unmarshals PatternFlowArpSenderHardwareAddrCounter from YAML text + // FromYaml unmarshals BgpV4EviVxlan from YAML text FromYaml(value string) error - // FromJson unmarshals PatternFlowArpSenderHardwareAddrCounter from JSON text + // FromJson unmarshals BgpV4EviVxlan from JSON text FromJson(value string) error - // Validate validates PatternFlowArpSenderHardwareAddrCounter + // Validate validates BgpV4EviVxlan Validate() error // A stringer function String() string // Clones the object - Clone() (PatternFlowArpSenderHardwareAddrCounter, error) + Clone() (BgpV4EviVxlan, error) validateToAndFrom() error validateObj(vObj *validation, set_default bool) setDefault() - // Start returns string, set in PatternFlowArpSenderHardwareAddrCounter. - Start() string - // SetStart assigns string provided by user to PatternFlowArpSenderHardwareAddrCounter - SetStart(value string) PatternFlowArpSenderHardwareAddrCounter - // HasStart checks if Start has been set in PatternFlowArpSenderHardwareAddrCounter - HasStart() bool - // Step returns string, set in PatternFlowArpSenderHardwareAddrCounter. - Step() string - // SetStep assigns string provided by user to PatternFlowArpSenderHardwareAddrCounter - SetStep(value string) PatternFlowArpSenderHardwareAddrCounter - // HasStep checks if Step has been set in PatternFlowArpSenderHardwareAddrCounter - HasStep() bool - // Count returns uint32, set in PatternFlowArpSenderHardwareAddrCounter. - Count() uint32 - // SetCount assigns uint32 provided by user to PatternFlowArpSenderHardwareAddrCounter - SetCount(value uint32) PatternFlowArpSenderHardwareAddrCounter - // HasCount checks if Count has been set in PatternFlowArpSenderHardwareAddrCounter - HasCount() bool + // BroadcastDomains returns BgpV4EviVxlanBgpV4EviVxlanBroadcastDomainIterIter, set in BgpV4EviVxlan + BroadcastDomains() BgpV4EviVxlanBgpV4EviVxlanBroadcastDomainIter + // ReplicationType returns BgpV4EviVxlanReplicationTypeEnum, set in BgpV4EviVxlan + ReplicationType() BgpV4EviVxlanReplicationTypeEnum + // SetReplicationType assigns BgpV4EviVxlanReplicationTypeEnum provided by user to BgpV4EviVxlan + SetReplicationType(value BgpV4EviVxlanReplicationTypeEnum) BgpV4EviVxlan + // HasReplicationType checks if ReplicationType has been set in BgpV4EviVxlan + HasReplicationType() bool + // PmsiLabel returns uint32, set in BgpV4EviVxlan. + PmsiLabel() uint32 + // SetPmsiLabel assigns uint32 provided by user to BgpV4EviVxlan + SetPmsiLabel(value uint32) BgpV4EviVxlan + // HasPmsiLabel checks if PmsiLabel has been set in BgpV4EviVxlan + HasPmsiLabel() bool + // AdLabel returns uint32, set in BgpV4EviVxlan. + AdLabel() uint32 + // SetAdLabel assigns uint32 provided by user to BgpV4EviVxlan + SetAdLabel(value uint32) BgpV4EviVxlan + // HasAdLabel checks if AdLabel has been set in BgpV4EviVxlan + HasAdLabel() bool + // RouteDistinguisher returns BgpRouteDistinguisher, set in BgpV4EviVxlan. + // BgpRouteDistinguisher is bGP Route Distinguisher. + RouteDistinguisher() BgpRouteDistinguisher + // SetRouteDistinguisher assigns BgpRouteDistinguisher provided by user to BgpV4EviVxlan. + // BgpRouteDistinguisher is bGP Route Distinguisher. + SetRouteDistinguisher(value BgpRouteDistinguisher) BgpV4EviVxlan + // HasRouteDistinguisher checks if RouteDistinguisher has been set in BgpV4EviVxlan + HasRouteDistinguisher() bool + // RouteTargetExport returns BgpV4EviVxlanBgpRouteTargetIterIter, set in BgpV4EviVxlan + RouteTargetExport() BgpV4EviVxlanBgpRouteTargetIter + // RouteTargetImport returns BgpV4EviVxlanBgpRouteTargetIterIter, set in BgpV4EviVxlan + RouteTargetImport() BgpV4EviVxlanBgpRouteTargetIter + // L3RouteTargetExport returns BgpV4EviVxlanBgpRouteTargetIterIter, set in BgpV4EviVxlan + L3RouteTargetExport() BgpV4EviVxlanBgpRouteTargetIter + // L3RouteTargetImport returns BgpV4EviVxlanBgpRouteTargetIterIter, set in BgpV4EviVxlan + L3RouteTargetImport() BgpV4EviVxlanBgpRouteTargetIter + // Advanced returns BgpRouteAdvanced, set in BgpV4EviVxlan. + // BgpRouteAdvanced is configuration for advanced BGP route range settings. + Advanced() BgpRouteAdvanced + // SetAdvanced assigns BgpRouteAdvanced provided by user to BgpV4EviVxlan. + // BgpRouteAdvanced is configuration for advanced BGP route range settings. + SetAdvanced(value BgpRouteAdvanced) BgpV4EviVxlan + // HasAdvanced checks if Advanced has been set in BgpV4EviVxlan + HasAdvanced() bool + // Communities returns BgpV4EviVxlanBgpCommunityIterIter, set in BgpV4EviVxlan + Communities() BgpV4EviVxlanBgpCommunityIter + // ExtCommunities returns BgpV4EviVxlanBgpExtCommunityIterIter, set in BgpV4EviVxlan + ExtCommunities() BgpV4EviVxlanBgpExtCommunityIter + // AsPath returns BgpAsPath, set in BgpV4EviVxlan. + // BgpAsPath is this attribute identifies the autonomous systems through which routing information carried in this UPDATE message has passed. This contains the configuration of how to include the Local AS in the AS path attribute of the MP REACH NLRI. It also contains optional configuration of additional AS Path Segments that can be included in the AS Path attribute. The AS Path consists of a Set or Sequence of Autonomous Systems (AS) numbers that a routing information passes through to reach the destination. + AsPath() BgpAsPath + // SetAsPath assigns BgpAsPath provided by user to BgpV4EviVxlan. + // BgpAsPath is this attribute identifies the autonomous systems through which routing information carried in this UPDATE message has passed. This contains the configuration of how to include the Local AS in the AS path attribute of the MP REACH NLRI. It also contains optional configuration of additional AS Path Segments that can be included in the AS Path attribute. The AS Path consists of a Set or Sequence of Autonomous Systems (AS) numbers that a routing information passes through to reach the destination. + SetAsPath(value BgpAsPath) BgpV4EviVxlan + // HasAsPath checks if AsPath has been set in BgpV4EviVxlan + HasAsPath() bool + setNil() } -// description is TBD -// Start returns a string -func (obj *patternFlowArpSenderHardwareAddrCounter) Start() string { +// This contains the list of Broadcast Domains to be configured per EVI. +// BroadcastDomains returns a []BgpV4EviVxlanBroadcastDomain +func (obj *bgpV4EviVxlan) BroadcastDomains() BgpV4EviVxlanBgpV4EviVxlanBroadcastDomainIter { + if len(obj.obj.BroadcastDomains) == 0 { + obj.obj.BroadcastDomains = []*otg.BgpV4EviVxlanBroadcastDomain{} + } + if obj.broadcastDomainsHolder == nil { + obj.broadcastDomainsHolder = newBgpV4EviVxlanBgpV4EviVxlanBroadcastDomainIter(&obj.obj.BroadcastDomains).setMsg(obj) + } + return obj.broadcastDomainsHolder +} - return *obj.obj.Start +type bgpV4EviVxlanBgpV4EviVxlanBroadcastDomainIter struct { + obj *bgpV4EviVxlan + bgpV4EviVxlanBroadcastDomainSlice []BgpV4EviVxlanBroadcastDomain + fieldPtr *[]*otg.BgpV4EviVxlanBroadcastDomain +} +func newBgpV4EviVxlanBgpV4EviVxlanBroadcastDomainIter(ptr *[]*otg.BgpV4EviVxlanBroadcastDomain) BgpV4EviVxlanBgpV4EviVxlanBroadcastDomainIter { + return &bgpV4EviVxlanBgpV4EviVxlanBroadcastDomainIter{fieldPtr: ptr} } -// description is TBD -// Start returns a string -func (obj *patternFlowArpSenderHardwareAddrCounter) HasStart() bool { - return obj.obj.Start != nil +type BgpV4EviVxlanBgpV4EviVxlanBroadcastDomainIter interface { + setMsg(*bgpV4EviVxlan) BgpV4EviVxlanBgpV4EviVxlanBroadcastDomainIter + Items() []BgpV4EviVxlanBroadcastDomain + Add() BgpV4EviVxlanBroadcastDomain + Append(items ...BgpV4EviVxlanBroadcastDomain) BgpV4EviVxlanBgpV4EviVxlanBroadcastDomainIter + Set(index int, newObj BgpV4EviVxlanBroadcastDomain) BgpV4EviVxlanBgpV4EviVxlanBroadcastDomainIter + Clear() BgpV4EviVxlanBgpV4EviVxlanBroadcastDomainIter + clearHolderSlice() BgpV4EviVxlanBgpV4EviVxlanBroadcastDomainIter + appendHolderSlice(item BgpV4EviVxlanBroadcastDomain) BgpV4EviVxlanBgpV4EviVxlanBroadcastDomainIter } -// description is TBD -// SetStart sets the string value in the PatternFlowArpSenderHardwareAddrCounter object -func (obj *patternFlowArpSenderHardwareAddrCounter) SetStart(value string) PatternFlowArpSenderHardwareAddrCounter { +func (obj *bgpV4EviVxlanBgpV4EviVxlanBroadcastDomainIter) setMsg(msg *bgpV4EviVxlan) BgpV4EviVxlanBgpV4EviVxlanBroadcastDomainIter { + obj.clearHolderSlice() + for _, val := range *obj.fieldPtr { + obj.appendHolderSlice(&bgpV4EviVxlanBroadcastDomain{obj: val}) + } + obj.obj = msg + return obj +} - obj.obj.Start = &value +func (obj *bgpV4EviVxlanBgpV4EviVxlanBroadcastDomainIter) Items() []BgpV4EviVxlanBroadcastDomain { + return obj.bgpV4EviVxlanBroadcastDomainSlice +} + +func (obj *bgpV4EviVxlanBgpV4EviVxlanBroadcastDomainIter) Add() BgpV4EviVxlanBroadcastDomain { + newObj := &otg.BgpV4EviVxlanBroadcastDomain{} + *obj.fieldPtr = append(*obj.fieldPtr, newObj) + newLibObj := &bgpV4EviVxlanBroadcastDomain{obj: newObj} + newLibObj.setDefault() + obj.bgpV4EviVxlanBroadcastDomainSlice = append(obj.bgpV4EviVxlanBroadcastDomainSlice, newLibObj) + return newLibObj +} + +func (obj *bgpV4EviVxlanBgpV4EviVxlanBroadcastDomainIter) Append(items ...BgpV4EviVxlanBroadcastDomain) BgpV4EviVxlanBgpV4EviVxlanBroadcastDomainIter { + for _, item := range items { + newObj := item.Msg() + *obj.fieldPtr = append(*obj.fieldPtr, newObj) + obj.bgpV4EviVxlanBroadcastDomainSlice = append(obj.bgpV4EviVxlanBroadcastDomainSlice, item) + } return obj } -// description is TBD -// Step returns a string -func (obj *patternFlowArpSenderHardwareAddrCounter) Step() string { +func (obj *bgpV4EviVxlanBgpV4EviVxlanBroadcastDomainIter) Set(index int, newObj BgpV4EviVxlanBroadcastDomain) BgpV4EviVxlanBgpV4EviVxlanBroadcastDomainIter { + (*obj.fieldPtr)[index] = newObj.Msg() + obj.bgpV4EviVxlanBroadcastDomainSlice[index] = newObj + return obj +} +func (obj *bgpV4EviVxlanBgpV4EviVxlanBroadcastDomainIter) Clear() BgpV4EviVxlanBgpV4EviVxlanBroadcastDomainIter { + if len(*obj.fieldPtr) > 0 { + *obj.fieldPtr = []*otg.BgpV4EviVxlanBroadcastDomain{} + obj.bgpV4EviVxlanBroadcastDomainSlice = []BgpV4EviVxlanBroadcastDomain{} + } + return obj +} +func (obj *bgpV4EviVxlanBgpV4EviVxlanBroadcastDomainIter) clearHolderSlice() BgpV4EviVxlanBgpV4EviVxlanBroadcastDomainIter { + if len(obj.bgpV4EviVxlanBroadcastDomainSlice) > 0 { + obj.bgpV4EviVxlanBroadcastDomainSlice = []BgpV4EviVxlanBroadcastDomain{} + } + return obj +} +func (obj *bgpV4EviVxlanBgpV4EviVxlanBroadcastDomainIter) appendHolderSlice(item BgpV4EviVxlanBroadcastDomain) BgpV4EviVxlanBgpV4EviVxlanBroadcastDomainIter { + obj.bgpV4EviVxlanBroadcastDomainSlice = append(obj.bgpV4EviVxlanBroadcastDomainSlice, item) + return obj +} - return *obj.obj.Step +type BgpV4EviVxlanReplicationTypeEnum string +// Enum of ReplicationType on BgpV4EviVxlan +var BgpV4EviVxlanReplicationType = struct { + INGRESS_REPLICATION BgpV4EviVxlanReplicationTypeEnum +}{ + INGRESS_REPLICATION: BgpV4EviVxlanReplicationTypeEnum("ingress_replication"), } -// description is TBD -// Step returns a string -func (obj *patternFlowArpSenderHardwareAddrCounter) HasStep() bool { - return obj.obj.Step != nil +func (obj *bgpV4EviVxlan) ReplicationType() BgpV4EviVxlanReplicationTypeEnum { + return BgpV4EviVxlanReplicationTypeEnum(obj.obj.ReplicationType.Enum().String()) } -// description is TBD -// SetStep sets the string value in the PatternFlowArpSenderHardwareAddrCounter object -func (obj *patternFlowArpSenderHardwareAddrCounter) SetStep(value string) PatternFlowArpSenderHardwareAddrCounter { +// This model only supports Ingress Replication +// ReplicationType returns a string +func (obj *bgpV4EviVxlan) HasReplicationType() bool { + return obj.obj.ReplicationType != nil +} + +func (obj *bgpV4EviVxlan) SetReplicationType(value BgpV4EviVxlanReplicationTypeEnum) BgpV4EviVxlan { + intValue, ok := otg.BgpV4EviVxlan_ReplicationType_Enum_value[string(value)] + if !ok { + obj.validationErrors = append(obj.validationErrors, fmt.Sprintf( + "%s is not a valid choice on BgpV4EviVxlanReplicationTypeEnum", string(value))) + return obj + } + enumValue := otg.BgpV4EviVxlan_ReplicationType_Enum(intValue) + obj.obj.ReplicationType = &enumValue - obj.obj.Step = &value return obj } -// description is TBD -// Count returns a uint32 -func (obj *patternFlowArpSenderHardwareAddrCounter) Count() uint32 { +// Downstream assigned VNI to be carried as Part of P-Multicast Service Interface Tunnel attribute (PMSI Tunnel Attribute) in Type 3 Inclusive Multicast Ethernet Tag Route. +// PmsiLabel returns a uint32 +func (obj *bgpV4EviVxlan) PmsiLabel() uint32 { - return *obj.obj.Count + return *obj.obj.PmsiLabel + +} + +// Downstream assigned VNI to be carried as Part of P-Multicast Service Interface Tunnel attribute (PMSI Tunnel Attribute) in Type 3 Inclusive Multicast Ethernet Tag Route. +// PmsiLabel returns a uint32 +func (obj *bgpV4EviVxlan) HasPmsiLabel() bool { + return obj.obj.PmsiLabel != nil +} + +// Downstream assigned VNI to be carried as Part of P-Multicast Service Interface Tunnel attribute (PMSI Tunnel Attribute) in Type 3 Inclusive Multicast Ethernet Tag Route. +// SetPmsiLabel sets the uint32 value in the BgpV4EviVxlan object +func (obj *bgpV4EviVxlan) SetPmsiLabel(value uint32) BgpV4EviVxlan { + + obj.obj.PmsiLabel = &value + return obj +} + +// The Auto-discovery Route label (AD label) value, which gets advertised in the Ethernet Auto-discovery Route per +// AdLabel returns a uint32 +func (obj *bgpV4EviVxlan) AdLabel() uint32 { + + return *obj.obj.AdLabel + +} + +// The Auto-discovery Route label (AD label) value, which gets advertised in the Ethernet Auto-discovery Route per +// AdLabel returns a uint32 +func (obj *bgpV4EviVxlan) HasAdLabel() bool { + return obj.obj.AdLabel != nil +} + +// The Auto-discovery Route label (AD label) value, which gets advertised in the Ethernet Auto-discovery Route per +// SetAdLabel sets the uint32 value in the BgpV4EviVxlan object +func (obj *bgpV4EviVxlan) SetAdLabel(value uint32) BgpV4EviVxlan { + + obj.obj.AdLabel = &value + return obj +} + +// Colon separated Extended Community value of 6 Bytes - "AS number: Value" identifying an EVI. Example - for the as_2octet "60005:100". +// RouteDistinguisher returns a BgpRouteDistinguisher +func (obj *bgpV4EviVxlan) RouteDistinguisher() BgpRouteDistinguisher { + if obj.obj.RouteDistinguisher == nil { + obj.obj.RouteDistinguisher = NewBgpRouteDistinguisher().Msg() + } + if obj.routeDistinguisherHolder == nil { + obj.routeDistinguisherHolder = &bgpRouteDistinguisher{obj: obj.obj.RouteDistinguisher} + } + return obj.routeDistinguisherHolder +} + +// Colon separated Extended Community value of 6 Bytes - "AS number: Value" identifying an EVI. Example - for the as_2octet "60005:100". +// RouteDistinguisher returns a BgpRouteDistinguisher +func (obj *bgpV4EviVxlan) HasRouteDistinguisher() bool { + return obj.obj.RouteDistinguisher != nil +} + +// Colon separated Extended Community value of 6 Bytes - "AS number: Value" identifying an EVI. Example - for the as_2octet "60005:100". +// SetRouteDistinguisher sets the BgpRouteDistinguisher value in the BgpV4EviVxlan object +func (obj *bgpV4EviVxlan) SetRouteDistinguisher(value BgpRouteDistinguisher) BgpV4EviVxlan { + + obj.routeDistinguisherHolder = nil + obj.obj.RouteDistinguisher = value.Msg() + + return obj +} + +// List of Layer 2 Virtual Network Identifier (L2VNI) export targets associated with this EVI. +// RouteTargetExport returns a []BgpRouteTarget +func (obj *bgpV4EviVxlan) RouteTargetExport() BgpV4EviVxlanBgpRouteTargetIter { + if len(obj.obj.RouteTargetExport) == 0 { + obj.obj.RouteTargetExport = []*otg.BgpRouteTarget{} + } + if obj.routeTargetExportHolder == nil { + obj.routeTargetExportHolder = newBgpV4EviVxlanBgpRouteTargetIter(&obj.obj.RouteTargetExport).setMsg(obj) + } + return obj.routeTargetExportHolder +} + +type bgpV4EviVxlanBgpRouteTargetIter struct { + obj *bgpV4EviVxlan + bgpRouteTargetSlice []BgpRouteTarget + fieldPtr *[]*otg.BgpRouteTarget +} + +func newBgpV4EviVxlanBgpRouteTargetIter(ptr *[]*otg.BgpRouteTarget) BgpV4EviVxlanBgpRouteTargetIter { + return &bgpV4EviVxlanBgpRouteTargetIter{fieldPtr: ptr} +} + +type BgpV4EviVxlanBgpRouteTargetIter interface { + setMsg(*bgpV4EviVxlan) BgpV4EviVxlanBgpRouteTargetIter + Items() []BgpRouteTarget + Add() BgpRouteTarget + Append(items ...BgpRouteTarget) BgpV4EviVxlanBgpRouteTargetIter + Set(index int, newObj BgpRouteTarget) BgpV4EviVxlanBgpRouteTargetIter + Clear() BgpV4EviVxlanBgpRouteTargetIter + clearHolderSlice() BgpV4EviVxlanBgpRouteTargetIter + appendHolderSlice(item BgpRouteTarget) BgpV4EviVxlanBgpRouteTargetIter +} + +func (obj *bgpV4EviVxlanBgpRouteTargetIter) setMsg(msg *bgpV4EviVxlan) BgpV4EviVxlanBgpRouteTargetIter { + obj.clearHolderSlice() + for _, val := range *obj.fieldPtr { + obj.appendHolderSlice(&bgpRouteTarget{obj: val}) + } + obj.obj = msg + return obj +} + +func (obj *bgpV4EviVxlanBgpRouteTargetIter) Items() []BgpRouteTarget { + return obj.bgpRouteTargetSlice +} + +func (obj *bgpV4EviVxlanBgpRouteTargetIter) Add() BgpRouteTarget { + newObj := &otg.BgpRouteTarget{} + *obj.fieldPtr = append(*obj.fieldPtr, newObj) + newLibObj := &bgpRouteTarget{obj: newObj} + newLibObj.setDefault() + obj.bgpRouteTargetSlice = append(obj.bgpRouteTargetSlice, newLibObj) + return newLibObj +} + +func (obj *bgpV4EviVxlanBgpRouteTargetIter) Append(items ...BgpRouteTarget) BgpV4EviVxlanBgpRouteTargetIter { + for _, item := range items { + newObj := item.Msg() + *obj.fieldPtr = append(*obj.fieldPtr, newObj) + obj.bgpRouteTargetSlice = append(obj.bgpRouteTargetSlice, item) + } + return obj +} + +func (obj *bgpV4EviVxlanBgpRouteTargetIter) Set(index int, newObj BgpRouteTarget) BgpV4EviVxlanBgpRouteTargetIter { + (*obj.fieldPtr)[index] = newObj.Msg() + obj.bgpRouteTargetSlice[index] = newObj + return obj +} +func (obj *bgpV4EviVxlanBgpRouteTargetIter) Clear() BgpV4EviVxlanBgpRouteTargetIter { + if len(*obj.fieldPtr) > 0 { + *obj.fieldPtr = []*otg.BgpRouteTarget{} + obj.bgpRouteTargetSlice = []BgpRouteTarget{} + } + return obj +} +func (obj *bgpV4EviVxlanBgpRouteTargetIter) clearHolderSlice() BgpV4EviVxlanBgpRouteTargetIter { + if len(obj.bgpRouteTargetSlice) > 0 { + obj.bgpRouteTargetSlice = []BgpRouteTarget{} + } + return obj +} +func (obj *bgpV4EviVxlanBgpRouteTargetIter) appendHolderSlice(item BgpRouteTarget) BgpV4EviVxlanBgpRouteTargetIter { + obj.bgpRouteTargetSlice = append(obj.bgpRouteTargetSlice, item) + return obj +} + +// List of L2VNI import targets associated with this EVI. +// RouteTargetImport returns a []BgpRouteTarget +func (obj *bgpV4EviVxlan) RouteTargetImport() BgpV4EviVxlanBgpRouteTargetIter { + if len(obj.obj.RouteTargetImport) == 0 { + obj.obj.RouteTargetImport = []*otg.BgpRouteTarget{} + } + if obj.routeTargetImportHolder == nil { + obj.routeTargetImportHolder = newBgpV4EviVxlanBgpRouteTargetIter(&obj.obj.RouteTargetImport).setMsg(obj) + } + return obj.routeTargetImportHolder +} + +// List of Layer 3 Virtual Network Identifier (L3VNI) Export Route Targets. +// L3RouteTargetExport returns a []BgpRouteTarget +func (obj *bgpV4EviVxlan) L3RouteTargetExport() BgpV4EviVxlanBgpRouteTargetIter { + if len(obj.obj.L3RouteTargetExport) == 0 { + obj.obj.L3RouteTargetExport = []*otg.BgpRouteTarget{} + } + if obj.l3RouteTargetExportHolder == nil { + obj.l3RouteTargetExportHolder = newBgpV4EviVxlanBgpRouteTargetIter(&obj.obj.L3RouteTargetExport).setMsg(obj) + } + return obj.l3RouteTargetExportHolder +} +// List of L3VNI Import Route Targets. +// L3RouteTargetImport returns a []BgpRouteTarget +func (obj *bgpV4EviVxlan) L3RouteTargetImport() BgpV4EviVxlanBgpRouteTargetIter { + if len(obj.obj.L3RouteTargetImport) == 0 { + obj.obj.L3RouteTargetImport = []*otg.BgpRouteTarget{} + } + if obj.l3RouteTargetImportHolder == nil { + obj.l3RouteTargetImportHolder = newBgpV4EviVxlanBgpRouteTargetIter(&obj.obj.L3RouteTargetImport).setMsg(obj) + } + return obj.l3RouteTargetImportHolder } // description is TBD -// Count returns a uint32 -func (obj *patternFlowArpSenderHardwareAddrCounter) HasCount() bool { - return obj.obj.Count != nil +// Advanced returns a BgpRouteAdvanced +func (obj *bgpV4EviVxlan) Advanced() BgpRouteAdvanced { + if obj.obj.Advanced == nil { + obj.obj.Advanced = NewBgpRouteAdvanced().Msg() + } + if obj.advancedHolder == nil { + obj.advancedHolder = &bgpRouteAdvanced{obj: obj.obj.Advanced} + } + return obj.advancedHolder } // description is TBD -// SetCount sets the uint32 value in the PatternFlowArpSenderHardwareAddrCounter object -func (obj *patternFlowArpSenderHardwareAddrCounter) SetCount(value uint32) PatternFlowArpSenderHardwareAddrCounter { +// Advanced returns a BgpRouteAdvanced +func (obj *bgpV4EviVxlan) HasAdvanced() bool { + return obj.obj.Advanced != nil +} + +// description is TBD +// SetAdvanced sets the BgpRouteAdvanced value in the BgpV4EviVxlan object +func (obj *bgpV4EviVxlan) SetAdvanced(value BgpRouteAdvanced) BgpV4EviVxlan { + + obj.advancedHolder = nil + obj.obj.Advanced = value.Msg() - obj.obj.Count = &value return obj } -func (obj *patternFlowArpSenderHardwareAddrCounter) validateObj(vObj *validation, set_default bool) { +// Optional community settings. +// Communities returns a []BgpCommunity +func (obj *bgpV4EviVxlan) Communities() BgpV4EviVxlanBgpCommunityIter { + if len(obj.obj.Communities) == 0 { + obj.obj.Communities = []*otg.BgpCommunity{} + } + if obj.communitiesHolder == nil { + obj.communitiesHolder = newBgpV4EviVxlanBgpCommunityIter(&obj.obj.Communities).setMsg(obj) + } + return obj.communitiesHolder +} + +type bgpV4EviVxlanBgpCommunityIter struct { + obj *bgpV4EviVxlan + bgpCommunitySlice []BgpCommunity + fieldPtr *[]*otg.BgpCommunity +} + +func newBgpV4EviVxlanBgpCommunityIter(ptr *[]*otg.BgpCommunity) BgpV4EviVxlanBgpCommunityIter { + return &bgpV4EviVxlanBgpCommunityIter{fieldPtr: ptr} +} + +type BgpV4EviVxlanBgpCommunityIter interface { + setMsg(*bgpV4EviVxlan) BgpV4EviVxlanBgpCommunityIter + Items() []BgpCommunity + Add() BgpCommunity + Append(items ...BgpCommunity) BgpV4EviVxlanBgpCommunityIter + Set(index int, newObj BgpCommunity) BgpV4EviVxlanBgpCommunityIter + Clear() BgpV4EviVxlanBgpCommunityIter + clearHolderSlice() BgpV4EviVxlanBgpCommunityIter + appendHolderSlice(item BgpCommunity) BgpV4EviVxlanBgpCommunityIter +} + +func (obj *bgpV4EviVxlanBgpCommunityIter) setMsg(msg *bgpV4EviVxlan) BgpV4EviVxlanBgpCommunityIter { + obj.clearHolderSlice() + for _, val := range *obj.fieldPtr { + obj.appendHolderSlice(&bgpCommunity{obj: val}) + } + obj.obj = msg + return obj +} + +func (obj *bgpV4EviVxlanBgpCommunityIter) Items() []BgpCommunity { + return obj.bgpCommunitySlice +} + +func (obj *bgpV4EviVxlanBgpCommunityIter) Add() BgpCommunity { + newObj := &otg.BgpCommunity{} + *obj.fieldPtr = append(*obj.fieldPtr, newObj) + newLibObj := &bgpCommunity{obj: newObj} + newLibObj.setDefault() + obj.bgpCommunitySlice = append(obj.bgpCommunitySlice, newLibObj) + return newLibObj +} + +func (obj *bgpV4EviVxlanBgpCommunityIter) Append(items ...BgpCommunity) BgpV4EviVxlanBgpCommunityIter { + for _, item := range items { + newObj := item.Msg() + *obj.fieldPtr = append(*obj.fieldPtr, newObj) + obj.bgpCommunitySlice = append(obj.bgpCommunitySlice, item) + } + return obj +} + +func (obj *bgpV4EviVxlanBgpCommunityIter) Set(index int, newObj BgpCommunity) BgpV4EviVxlanBgpCommunityIter { + (*obj.fieldPtr)[index] = newObj.Msg() + obj.bgpCommunitySlice[index] = newObj + return obj +} +func (obj *bgpV4EviVxlanBgpCommunityIter) Clear() BgpV4EviVxlanBgpCommunityIter { + if len(*obj.fieldPtr) > 0 { + *obj.fieldPtr = []*otg.BgpCommunity{} + obj.bgpCommunitySlice = []BgpCommunity{} + } + return obj +} +func (obj *bgpV4EviVxlanBgpCommunityIter) clearHolderSlice() BgpV4EviVxlanBgpCommunityIter { + if len(obj.bgpCommunitySlice) > 0 { + obj.bgpCommunitySlice = []BgpCommunity{} + } + return obj +} +func (obj *bgpV4EviVxlanBgpCommunityIter) appendHolderSlice(item BgpCommunity) BgpV4EviVxlanBgpCommunityIter { + obj.bgpCommunitySlice = append(obj.bgpCommunitySlice, item) + return obj +} + +// Optional Extended Community settings. The Extended Communities Attribute is a transitive optional BGP attribute, with the Type Code 16. Community and Extended Communities attributes are utilized to trigger routing decisions, such as acceptance, rejection, preference, or redistribution. An extended community is an 8-Bytes value. It is divided into two main parts. The first 2 Bytes of the community encode a type and sub-type fields and the last 6 Bytes carry a unique set of data in a format defined by the type and sub-type field. Extended communities provide a larger range for grouping or categorizing communities. When type is administrator_as_2octet or administrator_as_4octet, the valid sub types are route target and origin. The valid value for administrator_as_2octet and administrator_as_4octet type is either two byte AS followed by four byte local administrator id or four byte AS followed by two byte local administrator id. When type is administrator_ipv4_address the valid sub types are route target and origin. The valid value for administrator_ipv4_address is a four byte IPv4 address followed by a two byte local administrator id. When type is opaque, valid sub types are color and encapsulation. When sub type is color, first two bytes of the value field contain flags and last four bytes contains the value of the color. When sub type is encapsulation the first four bytes of value field are reserved and last two bytes carries the tunnel type from IANA's "ETHER TYPES" registry e.g IPv4 (protocol type = 0x0800), IPv6 (protocol type = 0x86dd), and MPLS (protocol type = 0x8847). When type is administrator_as_2octet_link_bandwidth the valid sub type is extended_bandwidth. The first two bytes of the value field contains the AS number and the last four bytes contains the bandwidth in IEEE floating point format. When type is evpn the valid subtype is mac_address. In the value field the low-order bit of the first byte(Flags) is defined as the "Sticky/static" flag and may be set to 1, indicating the MAC address is static and cannot move. The second byte is reserved and the last four bytes contain the sequence number which is used to ensure that PEs retain the correct MAC/IP Advertisement route when multiple updates occur for the same MAC address. +// ExtCommunities returns a []BgpExtCommunity +func (obj *bgpV4EviVxlan) ExtCommunities() BgpV4EviVxlanBgpExtCommunityIter { + if len(obj.obj.ExtCommunities) == 0 { + obj.obj.ExtCommunities = []*otg.BgpExtCommunity{} + } + if obj.extCommunitiesHolder == nil { + obj.extCommunitiesHolder = newBgpV4EviVxlanBgpExtCommunityIter(&obj.obj.ExtCommunities).setMsg(obj) + } + return obj.extCommunitiesHolder +} + +type bgpV4EviVxlanBgpExtCommunityIter struct { + obj *bgpV4EviVxlan + bgpExtCommunitySlice []BgpExtCommunity + fieldPtr *[]*otg.BgpExtCommunity +} + +func newBgpV4EviVxlanBgpExtCommunityIter(ptr *[]*otg.BgpExtCommunity) BgpV4EviVxlanBgpExtCommunityIter { + return &bgpV4EviVxlanBgpExtCommunityIter{fieldPtr: ptr} +} + +type BgpV4EviVxlanBgpExtCommunityIter interface { + setMsg(*bgpV4EviVxlan) BgpV4EviVxlanBgpExtCommunityIter + Items() []BgpExtCommunity + Add() BgpExtCommunity + Append(items ...BgpExtCommunity) BgpV4EviVxlanBgpExtCommunityIter + Set(index int, newObj BgpExtCommunity) BgpV4EviVxlanBgpExtCommunityIter + Clear() BgpV4EviVxlanBgpExtCommunityIter + clearHolderSlice() BgpV4EviVxlanBgpExtCommunityIter + appendHolderSlice(item BgpExtCommunity) BgpV4EviVxlanBgpExtCommunityIter +} + +func (obj *bgpV4EviVxlanBgpExtCommunityIter) setMsg(msg *bgpV4EviVxlan) BgpV4EviVxlanBgpExtCommunityIter { + obj.clearHolderSlice() + for _, val := range *obj.fieldPtr { + obj.appendHolderSlice(&bgpExtCommunity{obj: val}) + } + obj.obj = msg + return obj +} + +func (obj *bgpV4EviVxlanBgpExtCommunityIter) Items() []BgpExtCommunity { + return obj.bgpExtCommunitySlice +} + +func (obj *bgpV4EviVxlanBgpExtCommunityIter) Add() BgpExtCommunity { + newObj := &otg.BgpExtCommunity{} + *obj.fieldPtr = append(*obj.fieldPtr, newObj) + newLibObj := &bgpExtCommunity{obj: newObj} + newLibObj.setDefault() + obj.bgpExtCommunitySlice = append(obj.bgpExtCommunitySlice, newLibObj) + return newLibObj +} + +func (obj *bgpV4EviVxlanBgpExtCommunityIter) Append(items ...BgpExtCommunity) BgpV4EviVxlanBgpExtCommunityIter { + for _, item := range items { + newObj := item.Msg() + *obj.fieldPtr = append(*obj.fieldPtr, newObj) + obj.bgpExtCommunitySlice = append(obj.bgpExtCommunitySlice, item) + } + return obj +} + +func (obj *bgpV4EviVxlanBgpExtCommunityIter) Set(index int, newObj BgpExtCommunity) BgpV4EviVxlanBgpExtCommunityIter { + (*obj.fieldPtr)[index] = newObj.Msg() + obj.bgpExtCommunitySlice[index] = newObj + return obj +} +func (obj *bgpV4EviVxlanBgpExtCommunityIter) Clear() BgpV4EviVxlanBgpExtCommunityIter { + if len(*obj.fieldPtr) > 0 { + *obj.fieldPtr = []*otg.BgpExtCommunity{} + obj.bgpExtCommunitySlice = []BgpExtCommunity{} + } + return obj +} +func (obj *bgpV4EviVxlanBgpExtCommunityIter) clearHolderSlice() BgpV4EviVxlanBgpExtCommunityIter { + if len(obj.bgpExtCommunitySlice) > 0 { + obj.bgpExtCommunitySlice = []BgpExtCommunity{} + } + return obj +} +func (obj *bgpV4EviVxlanBgpExtCommunityIter) appendHolderSlice(item BgpExtCommunity) BgpV4EviVxlanBgpExtCommunityIter { + obj.bgpExtCommunitySlice = append(obj.bgpExtCommunitySlice, item) + return obj +} + +// Optional AS PATH settings. +// AsPath returns a BgpAsPath +func (obj *bgpV4EviVxlan) AsPath() BgpAsPath { + if obj.obj.AsPath == nil { + obj.obj.AsPath = NewBgpAsPath().Msg() + } + if obj.asPathHolder == nil { + obj.asPathHolder = &bgpAsPath{obj: obj.obj.AsPath} + } + return obj.asPathHolder +} + +// Optional AS PATH settings. +// AsPath returns a BgpAsPath +func (obj *bgpV4EviVxlan) HasAsPath() bool { + return obj.obj.AsPath != nil +} + +// Optional AS PATH settings. +// SetAsPath sets the BgpAsPath value in the BgpV4EviVxlan object +func (obj *bgpV4EviVxlan) SetAsPath(value BgpAsPath) BgpV4EviVxlan { + + obj.asPathHolder = nil + obj.obj.AsPath = value.Msg() + + return obj +} + +func (obj *bgpV4EviVxlan) validateObj(vObj *validation, set_default bool) { if set_default { obj.setDefault() } - if obj.obj.Start != nil { + if len(obj.obj.BroadcastDomains) != 0 { - err := obj.validateMac(obj.Start()) - if err != nil { - vObj.validationErrors = append(vObj.validationErrors, fmt.Sprintf("%s %s", err.Error(), "on PatternFlowArpSenderHardwareAddrCounter.Start")) + if set_default { + obj.BroadcastDomains().clearHolderSlice() + for _, item := range obj.obj.BroadcastDomains { + obj.BroadcastDomains().appendHolderSlice(&bgpV4EviVxlanBroadcastDomain{obj: item}) + } + } + for _, item := range obj.BroadcastDomains().Items() { + item.validateObj(vObj, set_default) } } - if obj.obj.Step != nil { + if obj.obj.PmsiLabel != nil { - err := obj.validateMac(obj.Step()) - if err != nil { - vObj.validationErrors = append(vObj.validationErrors, fmt.Sprintf("%s %s", err.Error(), "on PatternFlowArpSenderHardwareAddrCounter.Step")) + if *obj.obj.PmsiLabel > 16777215 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("0 <= BgpV4EviVxlan.PmsiLabel <= 16777215 but Got %d", *obj.obj.PmsiLabel)) + } + + } + + if obj.obj.AdLabel != nil { + + if *obj.obj.AdLabel > 16777215 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("0 <= BgpV4EviVxlan.AdLabel <= 16777215 but Got %d", *obj.obj.AdLabel)) + } + + } + + if obj.obj.RouteDistinguisher != nil { + + obj.RouteDistinguisher().validateObj(vObj, set_default) + } + + if len(obj.obj.RouteTargetExport) != 0 { + + if set_default { + obj.RouteTargetExport().clearHolderSlice() + for _, item := range obj.obj.RouteTargetExport { + obj.RouteTargetExport().appendHolderSlice(&bgpRouteTarget{obj: item}) + } + } + for _, item := range obj.RouteTargetExport().Items() { + item.validateObj(vObj, set_default) + } + + } + + if len(obj.obj.RouteTargetImport) != 0 { + + if set_default { + obj.RouteTargetImport().clearHolderSlice() + for _, item := range obj.obj.RouteTargetImport { + obj.RouteTargetImport().appendHolderSlice(&bgpRouteTarget{obj: item}) + } + } + for _, item := range obj.RouteTargetImport().Items() { + item.validateObj(vObj, set_default) + } + + } + + if len(obj.obj.L3RouteTargetExport) != 0 { + + if set_default { + obj.L3RouteTargetExport().clearHolderSlice() + for _, item := range obj.obj.L3RouteTargetExport { + obj.L3RouteTargetExport().appendHolderSlice(&bgpRouteTarget{obj: item}) + } + } + for _, item := range obj.L3RouteTargetExport().Items() { + item.validateObj(vObj, set_default) + } + + } + + if len(obj.obj.L3RouteTargetImport) != 0 { + + if set_default { + obj.L3RouteTargetImport().clearHolderSlice() + for _, item := range obj.obj.L3RouteTargetImport { + obj.L3RouteTargetImport().appendHolderSlice(&bgpRouteTarget{obj: item}) + } + } + for _, item := range obj.L3RouteTargetImport().Items() { + item.validateObj(vObj, set_default) + } + + } + + if obj.obj.Advanced != nil { + + obj.Advanced().validateObj(vObj, set_default) + } + + if len(obj.obj.Communities) != 0 { + + if set_default { + obj.Communities().clearHolderSlice() + for _, item := range obj.obj.Communities { + obj.Communities().appendHolderSlice(&bgpCommunity{obj: item}) + } + } + for _, item := range obj.Communities().Items() { + item.validateObj(vObj, set_default) + } + + } + + if len(obj.obj.ExtCommunities) != 0 { + + if set_default { + obj.ExtCommunities().clearHolderSlice() + for _, item := range obj.obj.ExtCommunities { + obj.ExtCommunities().appendHolderSlice(&bgpExtCommunity{obj: item}) + } } + for _, item := range obj.ExtCommunities().Items() { + item.validateObj(vObj, set_default) + } + + } + + if obj.obj.AsPath != nil { + obj.AsPath().validateObj(vObj, set_default) } } -func (obj *patternFlowArpSenderHardwareAddrCounter) setDefault() { - if obj.obj.Start == nil { - obj.SetStart("00:00:00:00:00:00") +func (obj *bgpV4EviVxlan) setDefault() { + if obj.obj.ReplicationType == nil { + obj.SetReplicationType(BgpV4EviVxlanReplicationType.INGRESS_REPLICATION) + } - if obj.obj.Step == nil { - obj.SetStep("00:00:00:00:00:01") + if obj.obj.PmsiLabel == nil { + obj.SetPmsiLabel(16) } - if obj.obj.Count == nil { - obj.SetCount(1) + if obj.obj.AdLabel == nil { + obj.SetAdLabel(0) } } -// ***** PatternFlowArpSenderHardwareAddrMetricTag ***** -type patternFlowArpSenderHardwareAddrMetricTag struct { +// ***** BgpAsPathSegment ***** +type bgpAsPathSegment struct { validation - obj *otg.PatternFlowArpSenderHardwareAddrMetricTag + obj *otg.BgpAsPathSegment } -func NewPatternFlowArpSenderHardwareAddrMetricTag() PatternFlowArpSenderHardwareAddrMetricTag { - obj := patternFlowArpSenderHardwareAddrMetricTag{obj: &otg.PatternFlowArpSenderHardwareAddrMetricTag{}} +func NewBgpAsPathSegment() BgpAsPathSegment { + obj := bgpAsPathSegment{obj: &otg.BgpAsPathSegment{}} obj.setDefault() return &obj } -func (obj *patternFlowArpSenderHardwareAddrMetricTag) Msg() *otg.PatternFlowArpSenderHardwareAddrMetricTag { +func (obj *bgpAsPathSegment) Msg() *otg.BgpAsPathSegment { return obj.obj } -func (obj *patternFlowArpSenderHardwareAddrMetricTag) SetMsg(msg *otg.PatternFlowArpSenderHardwareAddrMetricTag) PatternFlowArpSenderHardwareAddrMetricTag { +func (obj *bgpAsPathSegment) SetMsg(msg *otg.BgpAsPathSegment) BgpAsPathSegment { proto.Merge(obj.obj, msg) return obj } -func (obj *patternFlowArpSenderHardwareAddrMetricTag) ToProto() (*otg.PatternFlowArpSenderHardwareAddrMetricTag, error) { +func (obj *bgpAsPathSegment) ToProto() (*otg.BgpAsPathSegment, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -256724,7 +303185,7 @@ func (obj *patternFlowArpSenderHardwareAddrMetricTag) ToProto() (*otg.PatternFlo return obj.Msg(), nil } -func (obj *patternFlowArpSenderHardwareAddrMetricTag) FromProto(msg *otg.PatternFlowArpSenderHardwareAddrMetricTag) (PatternFlowArpSenderHardwareAddrMetricTag, error) { +func (obj *bgpAsPathSegment) FromProto(msg *otg.BgpAsPathSegment) (BgpAsPathSegment, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -256733,7 +303194,7 @@ func (obj *patternFlowArpSenderHardwareAddrMetricTag) FromProto(msg *otg.Pattern return newObj, nil } -func (obj *patternFlowArpSenderHardwareAddrMetricTag) ToPbText() (string, error) { +func (obj *bgpAsPathSegment) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -256745,7 +303206,7 @@ func (obj *patternFlowArpSenderHardwareAddrMetricTag) ToPbText() (string, error) return string(protoMarshal), nil } -func (obj *patternFlowArpSenderHardwareAddrMetricTag) FromPbText(value string) error { +func (obj *bgpAsPathSegment) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj @@ -256758,7 +303219,7 @@ func (obj *patternFlowArpSenderHardwareAddrMetricTag) FromPbText(value string) e return retObj } -func (obj *patternFlowArpSenderHardwareAddrMetricTag) ToYaml() (string, error) { +func (obj *bgpAsPathSegment) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -256779,7 +303240,7 @@ func (obj *patternFlowArpSenderHardwareAddrMetricTag) ToYaml() (string, error) { return string(data), nil } -func (obj *patternFlowArpSenderHardwareAddrMetricTag) FromYaml(value string) error { +func (obj *bgpAsPathSegment) FromYaml(value string) error { if value == "" { value = "{}" } @@ -256804,7 +303265,7 @@ func (obj *patternFlowArpSenderHardwareAddrMetricTag) FromYaml(value string) err return nil } -func (obj *patternFlowArpSenderHardwareAddrMetricTag) ToJson() (string, error) { +func (obj *bgpAsPathSegment) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -256822,7 +303283,7 @@ func (obj *patternFlowArpSenderHardwareAddrMetricTag) ToJson() (string, error) { return string(data), nil } -func (obj *patternFlowArpSenderHardwareAddrMetricTag) FromJson(value string) error { +func (obj *bgpAsPathSegment) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -256843,19 +303304,19 @@ func (obj *patternFlowArpSenderHardwareAddrMetricTag) FromJson(value string) err return nil } -func (obj *patternFlowArpSenderHardwareAddrMetricTag) validateToAndFrom() error { +func (obj *bgpAsPathSegment) validateToAndFrom() error { // emptyVars() obj.validateObj(&obj.validation, true) return obj.validationResult() } -func (obj *patternFlowArpSenderHardwareAddrMetricTag) Validate() error { +func (obj *bgpAsPathSegment) Validate() error { // emptyVars() obj.validateObj(&obj.validation, false) return obj.validationResult() } -func (obj *patternFlowArpSenderHardwareAddrMetricTag) String() string { +func (obj *bgpAsPathSegment) String() string { str, err := obj.ToYaml() if err != nil { return err.Error() @@ -256863,12 +303324,12 @@ func (obj *patternFlowArpSenderHardwareAddrMetricTag) String() string { return str } -func (obj *patternFlowArpSenderHardwareAddrMetricTag) Clone() (PatternFlowArpSenderHardwareAddrMetricTag, error) { +func (obj *bgpAsPathSegment) Clone() (BgpAsPathSegment, error) { vErr := obj.Validate() if vErr != nil { return nil, vErr } - newObj := NewPatternFlowArpSenderHardwareAddrMetricTag() + newObj := NewBgpAsPathSegment() data, err := proto.Marshal(obj.Msg()) if err != nil { return nil, err @@ -256880,183 +303341,152 @@ func (obj *patternFlowArpSenderHardwareAddrMetricTag) Clone() (PatternFlowArpSen return newObj, nil } -// PatternFlowArpSenderHardwareAddrMetricTag is metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. -type PatternFlowArpSenderHardwareAddrMetricTag interface { +// BgpAsPathSegment is configuration for a single BGP AS path segment +type BgpAsPathSegment interface { Validation - // Msg marshals PatternFlowArpSenderHardwareAddrMetricTag to protobuf object *otg.PatternFlowArpSenderHardwareAddrMetricTag + // Msg marshals BgpAsPathSegment to protobuf object *otg.BgpAsPathSegment // and doesn't set defaults - Msg() *otg.PatternFlowArpSenderHardwareAddrMetricTag - // SetMsg unmarshals PatternFlowArpSenderHardwareAddrMetricTag from protobuf object *otg.PatternFlowArpSenderHardwareAddrMetricTag + Msg() *otg.BgpAsPathSegment + // SetMsg unmarshals BgpAsPathSegment from protobuf object *otg.BgpAsPathSegment // and doesn't set defaults - SetMsg(*otg.PatternFlowArpSenderHardwareAddrMetricTag) PatternFlowArpSenderHardwareAddrMetricTag - // ToProto marshals PatternFlowArpSenderHardwareAddrMetricTag to protobuf object *otg.PatternFlowArpSenderHardwareAddrMetricTag - ToProto() (*otg.PatternFlowArpSenderHardwareAddrMetricTag, error) - // ToPbText marshals PatternFlowArpSenderHardwareAddrMetricTag to protobuf text + SetMsg(*otg.BgpAsPathSegment) BgpAsPathSegment + // ToProto marshals BgpAsPathSegment to protobuf object *otg.BgpAsPathSegment + ToProto() (*otg.BgpAsPathSegment, error) + // ToPbText marshals BgpAsPathSegment to protobuf text ToPbText() (string, error) - // ToYaml marshals PatternFlowArpSenderHardwareAddrMetricTag to YAML text + // ToYaml marshals BgpAsPathSegment to YAML text ToYaml() (string, error) - // ToJson marshals PatternFlowArpSenderHardwareAddrMetricTag to JSON text + // ToJson marshals BgpAsPathSegment to JSON text ToJson() (string, error) - // FromProto unmarshals PatternFlowArpSenderHardwareAddrMetricTag from protobuf object *otg.PatternFlowArpSenderHardwareAddrMetricTag - FromProto(msg *otg.PatternFlowArpSenderHardwareAddrMetricTag) (PatternFlowArpSenderHardwareAddrMetricTag, error) - // FromPbText unmarshals PatternFlowArpSenderHardwareAddrMetricTag from protobuf text + // FromProto unmarshals BgpAsPathSegment from protobuf object *otg.BgpAsPathSegment + FromProto(msg *otg.BgpAsPathSegment) (BgpAsPathSegment, error) + // FromPbText unmarshals BgpAsPathSegment from protobuf text FromPbText(value string) error - // FromYaml unmarshals PatternFlowArpSenderHardwareAddrMetricTag from YAML text + // FromYaml unmarshals BgpAsPathSegment from YAML text FromYaml(value string) error - // FromJson unmarshals PatternFlowArpSenderHardwareAddrMetricTag from JSON text + // FromJson unmarshals BgpAsPathSegment from JSON text FromJson(value string) error - // Validate validates PatternFlowArpSenderHardwareAddrMetricTag + // Validate validates BgpAsPathSegment Validate() error // A stringer function String() string // Clones the object - Clone() (PatternFlowArpSenderHardwareAddrMetricTag, error) + Clone() (BgpAsPathSegment, error) validateToAndFrom() error validateObj(vObj *validation, set_default bool) setDefault() - // Name returns string, set in PatternFlowArpSenderHardwareAddrMetricTag. - Name() string - // SetName assigns string provided by user to PatternFlowArpSenderHardwareAddrMetricTag - SetName(value string) PatternFlowArpSenderHardwareAddrMetricTag - // Offset returns uint32, set in PatternFlowArpSenderHardwareAddrMetricTag. - Offset() uint32 - // SetOffset assigns uint32 provided by user to PatternFlowArpSenderHardwareAddrMetricTag - SetOffset(value uint32) PatternFlowArpSenderHardwareAddrMetricTag - // HasOffset checks if Offset has been set in PatternFlowArpSenderHardwareAddrMetricTag - HasOffset() bool - // Length returns uint32, set in PatternFlowArpSenderHardwareAddrMetricTag. - Length() uint32 - // SetLength assigns uint32 provided by user to PatternFlowArpSenderHardwareAddrMetricTag - SetLength(value uint32) PatternFlowArpSenderHardwareAddrMetricTag - // HasLength checks if Length has been set in PatternFlowArpSenderHardwareAddrMetricTag - HasLength() bool -} - -// Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field -// Name returns a string -func (obj *patternFlowArpSenderHardwareAddrMetricTag) Name() string { - - return *obj.obj.Name - + // Type returns BgpAsPathSegmentTypeEnum, set in BgpAsPathSegment + Type() BgpAsPathSegmentTypeEnum + // SetType assigns BgpAsPathSegmentTypeEnum provided by user to BgpAsPathSegment + SetType(value BgpAsPathSegmentTypeEnum) BgpAsPathSegment + // HasType checks if Type has been set in BgpAsPathSegment + HasType() bool + // AsNumbers returns []uint32, set in BgpAsPathSegment. + AsNumbers() []uint32 + // SetAsNumbers assigns []uint32 provided by user to BgpAsPathSegment + SetAsNumbers(value []uint32) BgpAsPathSegment } -// Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field -// SetName sets the string value in the PatternFlowArpSenderHardwareAddrMetricTag object -func (obj *patternFlowArpSenderHardwareAddrMetricTag) SetName(value string) PatternFlowArpSenderHardwareAddrMetricTag { +type BgpAsPathSegmentTypeEnum string - obj.obj.Name = &value - return obj +// Enum of Type on BgpAsPathSegment +var BgpAsPathSegmentType = struct { + AS_SEQ BgpAsPathSegmentTypeEnum + AS_SET BgpAsPathSegmentTypeEnum + AS_CONFED_SEQ BgpAsPathSegmentTypeEnum + AS_CONFED_SET BgpAsPathSegmentTypeEnum +}{ + AS_SEQ: BgpAsPathSegmentTypeEnum("as_seq"), + AS_SET: BgpAsPathSegmentTypeEnum("as_set"), + AS_CONFED_SEQ: BgpAsPathSegmentTypeEnum("as_confed_seq"), + AS_CONFED_SET: BgpAsPathSegmentTypeEnum("as_confed_set"), } -// Offset in bits relative to start of corresponding header field -// Offset returns a uint32 -func (obj *patternFlowArpSenderHardwareAddrMetricTag) Offset() uint32 { - - return *obj.obj.Offset - +func (obj *bgpAsPathSegment) Type() BgpAsPathSegmentTypeEnum { + return BgpAsPathSegmentTypeEnum(obj.obj.Type.Enum().String()) } -// Offset in bits relative to start of corresponding header field -// Offset returns a uint32 -func (obj *patternFlowArpSenderHardwareAddrMetricTag) HasOffset() bool { - return obj.obj.Offset != nil +// AS sequence is the most common type of AS_PATH, it contains the list of ASNs starting with the most recent ASN being added read from left to right. +// The other three AS_PATH types are used for Confederations - AS_SET is the type of AS_PATH attribute that summarizes routes using using the aggregate-address command, allowing AS_PATHs to be summarized in the update as well. - AS_CONFED_SEQ gives the list of ASNs in the path starting with the most recent ASN to be added reading left to right - AS_CONFED_SET will allow summarization of multiple AS PATHs to be sent in BGP Updates. +// Type returns a string +func (obj *bgpAsPathSegment) HasType() bool { + return obj.obj.Type != nil } -// Offset in bits relative to start of corresponding header field -// SetOffset sets the uint32 value in the PatternFlowArpSenderHardwareAddrMetricTag object -func (obj *patternFlowArpSenderHardwareAddrMetricTag) SetOffset(value uint32) PatternFlowArpSenderHardwareAddrMetricTag { +func (obj *bgpAsPathSegment) SetType(value BgpAsPathSegmentTypeEnum) BgpAsPathSegment { + intValue, ok := otg.BgpAsPathSegment_Type_Enum_value[string(value)] + if !ok { + obj.validationErrors = append(obj.validationErrors, fmt.Sprintf( + "%s is not a valid choice on BgpAsPathSegmentTypeEnum", string(value))) + return obj + } + enumValue := otg.BgpAsPathSegment_Type_Enum(intValue) + obj.obj.Type = &enumValue - obj.obj.Offset = &value return obj } -// Number of bits to track for metrics starting from configured offset of corresponding header field -// Length returns a uint32 -func (obj *patternFlowArpSenderHardwareAddrMetricTag) Length() uint32 { - - return *obj.obj.Length - +// The AS numbers in this AS path segment. +// AsNumbers returns a []uint32 +func (obj *bgpAsPathSegment) AsNumbers() []uint32 { + if obj.obj.AsNumbers == nil { + obj.obj.AsNumbers = make([]uint32, 0) + } + return obj.obj.AsNumbers } -// Number of bits to track for metrics starting from configured offset of corresponding header field -// Length returns a uint32 -func (obj *patternFlowArpSenderHardwareAddrMetricTag) HasLength() bool { - return obj.obj.Length != nil -} +// The AS numbers in this AS path segment. +// SetAsNumbers sets the []uint32 value in the BgpAsPathSegment object +func (obj *bgpAsPathSegment) SetAsNumbers(value []uint32) BgpAsPathSegment { -// Number of bits to track for metrics starting from configured offset of corresponding header field -// SetLength sets the uint32 value in the PatternFlowArpSenderHardwareAddrMetricTag object -func (obj *patternFlowArpSenderHardwareAddrMetricTag) SetLength(value uint32) PatternFlowArpSenderHardwareAddrMetricTag { + if obj.obj.AsNumbers == nil { + obj.obj.AsNumbers = make([]uint32, 0) + } + obj.obj.AsNumbers = value - obj.obj.Length = &value return obj } -func (obj *patternFlowArpSenderHardwareAddrMetricTag) validateObj(vObj *validation, set_default bool) { +func (obj *bgpAsPathSegment) validateObj(vObj *validation, set_default bool) { if set_default { obj.setDefault() } - // Name is required - if obj.obj.Name == nil { - vObj.validationErrors = append(vObj.validationErrors, "Name is required field on interface PatternFlowArpSenderHardwareAddrMetricTag") - } - - if obj.obj.Offset != nil { - - if *obj.obj.Offset > 47 { - vObj.validationErrors = append( - vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowArpSenderHardwareAddrMetricTag.Offset <= 47 but Got %d", *obj.obj.Offset)) - } - - } - - if obj.obj.Length != nil { - - if *obj.obj.Length < 1 || *obj.obj.Length > 48 { - vObj.validationErrors = append( - vObj.validationErrors, - fmt.Sprintf("1 <= PatternFlowArpSenderHardwareAddrMetricTag.Length <= 48 but Got %d", *obj.obj.Length)) - } - - } - } -func (obj *patternFlowArpSenderHardwareAddrMetricTag) setDefault() { - if obj.obj.Offset == nil { - obj.SetOffset(0) - } - if obj.obj.Length == nil { - obj.SetLength(48) +func (obj *bgpAsPathSegment) setDefault() { + if obj.obj.Type == nil { + obj.SetType(BgpAsPathSegmentType.AS_SEQ) + } } -// ***** PatternFlowArpSenderProtocolAddrCounter ***** -type patternFlowArpSenderProtocolAddrCounter struct { +// ***** BgpExtendedCommunityTransitive2OctetAsType ***** +type bgpExtendedCommunityTransitive2OctetAsType struct { validation - obj *otg.PatternFlowArpSenderProtocolAddrCounter + obj *otg.BgpExtendedCommunityTransitive2OctetAsType + routeTargetSubtypeHolder BgpExtendedCommunityTransitive2OctetAsTypeRouteTarget + routeOriginSubtypeHolder BgpExtendedCommunityTransitive2OctetAsTypeRouteOrigin } -func NewPatternFlowArpSenderProtocolAddrCounter() PatternFlowArpSenderProtocolAddrCounter { - obj := patternFlowArpSenderProtocolAddrCounter{obj: &otg.PatternFlowArpSenderProtocolAddrCounter{}} +func NewBgpExtendedCommunityTransitive2OctetAsType() BgpExtendedCommunityTransitive2OctetAsType { + obj := bgpExtendedCommunityTransitive2OctetAsType{obj: &otg.BgpExtendedCommunityTransitive2OctetAsType{}} obj.setDefault() return &obj } -func (obj *patternFlowArpSenderProtocolAddrCounter) Msg() *otg.PatternFlowArpSenderProtocolAddrCounter { +func (obj *bgpExtendedCommunityTransitive2OctetAsType) Msg() *otg.BgpExtendedCommunityTransitive2OctetAsType { return obj.obj } -func (obj *patternFlowArpSenderProtocolAddrCounter) SetMsg(msg *otg.PatternFlowArpSenderProtocolAddrCounter) PatternFlowArpSenderProtocolAddrCounter { - +func (obj *bgpExtendedCommunityTransitive2OctetAsType) SetMsg(msg *otg.BgpExtendedCommunityTransitive2OctetAsType) BgpExtendedCommunityTransitive2OctetAsType { + obj.setNil() proto.Merge(obj.obj, msg) return obj } -func (obj *patternFlowArpSenderProtocolAddrCounter) ToProto() (*otg.PatternFlowArpSenderProtocolAddrCounter, error) { +func (obj *bgpExtendedCommunityTransitive2OctetAsType) ToProto() (*otg.BgpExtendedCommunityTransitive2OctetAsType, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -257064,7 +303494,7 @@ func (obj *patternFlowArpSenderProtocolAddrCounter) ToProto() (*otg.PatternFlowA return obj.Msg(), nil } -func (obj *patternFlowArpSenderProtocolAddrCounter) FromProto(msg *otg.PatternFlowArpSenderProtocolAddrCounter) (PatternFlowArpSenderProtocolAddrCounter, error) { +func (obj *bgpExtendedCommunityTransitive2OctetAsType) FromProto(msg *otg.BgpExtendedCommunityTransitive2OctetAsType) (BgpExtendedCommunityTransitive2OctetAsType, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -257073,7 +303503,7 @@ func (obj *patternFlowArpSenderProtocolAddrCounter) FromProto(msg *otg.PatternFl return newObj, nil } -func (obj *patternFlowArpSenderProtocolAddrCounter) ToPbText() (string, error) { +func (obj *bgpExtendedCommunityTransitive2OctetAsType) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -257085,12 +303515,12 @@ func (obj *patternFlowArpSenderProtocolAddrCounter) ToPbText() (string, error) { return string(protoMarshal), nil } -func (obj *patternFlowArpSenderProtocolAddrCounter) FromPbText(value string) error { +func (obj *bgpExtendedCommunityTransitive2OctetAsType) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj } - + obj.setNil() vErr := obj.validateToAndFrom() if vErr != nil { return vErr @@ -257098,7 +303528,7 @@ func (obj *patternFlowArpSenderProtocolAddrCounter) FromPbText(value string) err return retObj } -func (obj *patternFlowArpSenderProtocolAddrCounter) ToYaml() (string, error) { +func (obj *bgpExtendedCommunityTransitive2OctetAsType) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -257119,7 +303549,7 @@ func (obj *patternFlowArpSenderProtocolAddrCounter) ToYaml() (string, error) { return string(data), nil } -func (obj *patternFlowArpSenderProtocolAddrCounter) FromYaml(value string) error { +func (obj *bgpExtendedCommunityTransitive2OctetAsType) FromYaml(value string) error { if value == "" { value = "{}" } @@ -257136,7 +303566,7 @@ func (obj *patternFlowArpSenderProtocolAddrCounter) FromYaml(value string) error return fmt.Errorf("unmarshal error %s", strings.Replace( uError.Error(), "\u00a0", " ", -1)[7:]) } - + obj.setNil() vErr := obj.validateToAndFrom() if vErr != nil { return vErr @@ -257144,7 +303574,7 @@ func (obj *patternFlowArpSenderProtocolAddrCounter) FromYaml(value string) error return nil } -func (obj *patternFlowArpSenderProtocolAddrCounter) ToJson() (string, error) { +func (obj *bgpExtendedCommunityTransitive2OctetAsType) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -257162,7 +303592,7 @@ func (obj *patternFlowArpSenderProtocolAddrCounter) ToJson() (string, error) { return string(data), nil } -func (obj *patternFlowArpSenderProtocolAddrCounter) FromJson(value string) error { +func (obj *bgpExtendedCommunityTransitive2OctetAsType) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -257175,7 +303605,7 @@ func (obj *patternFlowArpSenderProtocolAddrCounter) FromJson(value string) error return fmt.Errorf("unmarshal error %s", strings.Replace( uError.Error(), "\u00a0", " ", -1)[7:]) } - + obj.setNil() err := obj.validateToAndFrom() if err != nil { return err @@ -257183,19 +303613,19 @@ func (obj *patternFlowArpSenderProtocolAddrCounter) FromJson(value string) error return nil } -func (obj *patternFlowArpSenderProtocolAddrCounter) validateToAndFrom() error { +func (obj *bgpExtendedCommunityTransitive2OctetAsType) validateToAndFrom() error { // emptyVars() obj.validateObj(&obj.validation, true) return obj.validationResult() } -func (obj *patternFlowArpSenderProtocolAddrCounter) Validate() error { +func (obj *bgpExtendedCommunityTransitive2OctetAsType) Validate() error { // emptyVars() obj.validateObj(&obj.validation, false) return obj.validationResult() } -func (obj *patternFlowArpSenderProtocolAddrCounter) String() string { +func (obj *bgpExtendedCommunityTransitive2OctetAsType) String() string { str, err := obj.ToYaml() if err != nil { return err.Error() @@ -257203,12 +303633,12 @@ func (obj *patternFlowArpSenderProtocolAddrCounter) String() string { return str } -func (obj *patternFlowArpSenderProtocolAddrCounter) Clone() (PatternFlowArpSenderProtocolAddrCounter, error) { +func (obj *bgpExtendedCommunityTransitive2OctetAsType) Clone() (BgpExtendedCommunityTransitive2OctetAsType, error) { vErr := obj.Validate() if vErr != nil { return nil, vErr } - newObj := NewPatternFlowArpSenderProtocolAddrCounter() + newObj := NewBgpExtendedCommunityTransitive2OctetAsType() data, err := proto.Marshal(obj.Msg()) if err != nil { return nil, err @@ -257220,187 +303650,225 @@ func (obj *patternFlowArpSenderProtocolAddrCounter) Clone() (PatternFlowArpSende return newObj, nil } -// PatternFlowArpSenderProtocolAddrCounter is ipv4 counter pattern -type PatternFlowArpSenderProtocolAddrCounter interface { +func (obj *bgpExtendedCommunityTransitive2OctetAsType) setNil() { + obj.routeTargetSubtypeHolder = nil + obj.routeOriginSubtypeHolder = nil + obj.validationErrors = nil + obj.warnings = nil + obj.constraints = make(map[string]map[string]Constraints) +} + +// BgpExtendedCommunityTransitive2OctetAsType is the Transitive Two-Octet AS-Specific Extended Community is sent as type 0x00 . +type BgpExtendedCommunityTransitive2OctetAsType interface { Validation - // Msg marshals PatternFlowArpSenderProtocolAddrCounter to protobuf object *otg.PatternFlowArpSenderProtocolAddrCounter + // Msg marshals BgpExtendedCommunityTransitive2OctetAsType to protobuf object *otg.BgpExtendedCommunityTransitive2OctetAsType // and doesn't set defaults - Msg() *otg.PatternFlowArpSenderProtocolAddrCounter - // SetMsg unmarshals PatternFlowArpSenderProtocolAddrCounter from protobuf object *otg.PatternFlowArpSenderProtocolAddrCounter + Msg() *otg.BgpExtendedCommunityTransitive2OctetAsType + // SetMsg unmarshals BgpExtendedCommunityTransitive2OctetAsType from protobuf object *otg.BgpExtendedCommunityTransitive2OctetAsType // and doesn't set defaults - SetMsg(*otg.PatternFlowArpSenderProtocolAddrCounter) PatternFlowArpSenderProtocolAddrCounter - // ToProto marshals PatternFlowArpSenderProtocolAddrCounter to protobuf object *otg.PatternFlowArpSenderProtocolAddrCounter - ToProto() (*otg.PatternFlowArpSenderProtocolAddrCounter, error) - // ToPbText marshals PatternFlowArpSenderProtocolAddrCounter to protobuf text + SetMsg(*otg.BgpExtendedCommunityTransitive2OctetAsType) BgpExtendedCommunityTransitive2OctetAsType + // ToProto marshals BgpExtendedCommunityTransitive2OctetAsType to protobuf object *otg.BgpExtendedCommunityTransitive2OctetAsType + ToProto() (*otg.BgpExtendedCommunityTransitive2OctetAsType, error) + // ToPbText marshals BgpExtendedCommunityTransitive2OctetAsType to protobuf text ToPbText() (string, error) - // ToYaml marshals PatternFlowArpSenderProtocolAddrCounter to YAML text + // ToYaml marshals BgpExtendedCommunityTransitive2OctetAsType to YAML text ToYaml() (string, error) - // ToJson marshals PatternFlowArpSenderProtocolAddrCounter to JSON text + // ToJson marshals BgpExtendedCommunityTransitive2OctetAsType to JSON text ToJson() (string, error) - // FromProto unmarshals PatternFlowArpSenderProtocolAddrCounter from protobuf object *otg.PatternFlowArpSenderProtocolAddrCounter - FromProto(msg *otg.PatternFlowArpSenderProtocolAddrCounter) (PatternFlowArpSenderProtocolAddrCounter, error) - // FromPbText unmarshals PatternFlowArpSenderProtocolAddrCounter from protobuf text + // FromProto unmarshals BgpExtendedCommunityTransitive2OctetAsType from protobuf object *otg.BgpExtendedCommunityTransitive2OctetAsType + FromProto(msg *otg.BgpExtendedCommunityTransitive2OctetAsType) (BgpExtendedCommunityTransitive2OctetAsType, error) + // FromPbText unmarshals BgpExtendedCommunityTransitive2OctetAsType from protobuf text FromPbText(value string) error - // FromYaml unmarshals PatternFlowArpSenderProtocolAddrCounter from YAML text + // FromYaml unmarshals BgpExtendedCommunityTransitive2OctetAsType from YAML text FromYaml(value string) error - // FromJson unmarshals PatternFlowArpSenderProtocolAddrCounter from JSON text + // FromJson unmarshals BgpExtendedCommunityTransitive2OctetAsType from JSON text FromJson(value string) error - // Validate validates PatternFlowArpSenderProtocolAddrCounter + // Validate validates BgpExtendedCommunityTransitive2OctetAsType Validate() error // A stringer function String() string // Clones the object - Clone() (PatternFlowArpSenderProtocolAddrCounter, error) + Clone() (BgpExtendedCommunityTransitive2OctetAsType, error) validateToAndFrom() error validateObj(vObj *validation, set_default bool) setDefault() - // Start returns string, set in PatternFlowArpSenderProtocolAddrCounter. - Start() string - // SetStart assigns string provided by user to PatternFlowArpSenderProtocolAddrCounter - SetStart(value string) PatternFlowArpSenderProtocolAddrCounter - // HasStart checks if Start has been set in PatternFlowArpSenderProtocolAddrCounter - HasStart() bool - // Step returns string, set in PatternFlowArpSenderProtocolAddrCounter. - Step() string - // SetStep assigns string provided by user to PatternFlowArpSenderProtocolAddrCounter - SetStep(value string) PatternFlowArpSenderProtocolAddrCounter - // HasStep checks if Step has been set in PatternFlowArpSenderProtocolAddrCounter - HasStep() bool - // Count returns uint32, set in PatternFlowArpSenderProtocolAddrCounter. - Count() uint32 - // SetCount assigns uint32 provided by user to PatternFlowArpSenderProtocolAddrCounter - SetCount(value uint32) PatternFlowArpSenderProtocolAddrCounter - // HasCount checks if Count has been set in PatternFlowArpSenderProtocolAddrCounter - HasCount() bool + // Choice returns BgpExtendedCommunityTransitive2OctetAsTypeChoiceEnum, set in BgpExtendedCommunityTransitive2OctetAsType + Choice() BgpExtendedCommunityTransitive2OctetAsTypeChoiceEnum + // SetChoice assigns BgpExtendedCommunityTransitive2OctetAsTypeChoiceEnum provided by user to BgpExtendedCommunityTransitive2OctetAsType + SetChoice(value BgpExtendedCommunityTransitive2OctetAsTypeChoiceEnum) BgpExtendedCommunityTransitive2OctetAsType + // HasChoice checks if Choice has been set in BgpExtendedCommunityTransitive2OctetAsType + HasChoice() bool + // RouteTargetSubtype returns BgpExtendedCommunityTransitive2OctetAsTypeRouteTarget, set in BgpExtendedCommunityTransitive2OctetAsType. + // BgpExtendedCommunityTransitive2OctetAsTypeRouteTarget is the Route Target Community identifies one or more routers that may receive a set of routes (that carry this Community) carried by BGP. It is sent with sub-type as 0x02. + RouteTargetSubtype() BgpExtendedCommunityTransitive2OctetAsTypeRouteTarget + // SetRouteTargetSubtype assigns BgpExtendedCommunityTransitive2OctetAsTypeRouteTarget provided by user to BgpExtendedCommunityTransitive2OctetAsType. + // BgpExtendedCommunityTransitive2OctetAsTypeRouteTarget is the Route Target Community identifies one or more routers that may receive a set of routes (that carry this Community) carried by BGP. It is sent with sub-type as 0x02. + SetRouteTargetSubtype(value BgpExtendedCommunityTransitive2OctetAsTypeRouteTarget) BgpExtendedCommunityTransitive2OctetAsType + // HasRouteTargetSubtype checks if RouteTargetSubtype has been set in BgpExtendedCommunityTransitive2OctetAsType + HasRouteTargetSubtype() bool + // RouteOriginSubtype returns BgpExtendedCommunityTransitive2OctetAsTypeRouteOrigin, set in BgpExtendedCommunityTransitive2OctetAsType. + // BgpExtendedCommunityTransitive2OctetAsTypeRouteOrigin is the Route Origin Community identifies one or more routers that inject a set of routes (that carry this Community) into BGP. It is sent with sub-type as 0x03 . + RouteOriginSubtype() BgpExtendedCommunityTransitive2OctetAsTypeRouteOrigin + // SetRouteOriginSubtype assigns BgpExtendedCommunityTransitive2OctetAsTypeRouteOrigin provided by user to BgpExtendedCommunityTransitive2OctetAsType. + // BgpExtendedCommunityTransitive2OctetAsTypeRouteOrigin is the Route Origin Community identifies one or more routers that inject a set of routes (that carry this Community) into BGP. It is sent with sub-type as 0x03 . + SetRouteOriginSubtype(value BgpExtendedCommunityTransitive2OctetAsTypeRouteOrigin) BgpExtendedCommunityTransitive2OctetAsType + // HasRouteOriginSubtype checks if RouteOriginSubtype has been set in BgpExtendedCommunityTransitive2OctetAsType + HasRouteOriginSubtype() bool + setNil() } -// description is TBD -// Start returns a string -func (obj *patternFlowArpSenderProtocolAddrCounter) Start() string { +type BgpExtendedCommunityTransitive2OctetAsTypeChoiceEnum string - return *obj.obj.Start +// Enum of Choice on BgpExtendedCommunityTransitive2OctetAsType +var BgpExtendedCommunityTransitive2OctetAsTypeChoice = struct { + ROUTE_TARGET_SUBTYPE BgpExtendedCommunityTransitive2OctetAsTypeChoiceEnum + ROUTE_ORIGIN_SUBTYPE BgpExtendedCommunityTransitive2OctetAsTypeChoiceEnum +}{ + ROUTE_TARGET_SUBTYPE: BgpExtendedCommunityTransitive2OctetAsTypeChoiceEnum("route_target_subtype"), + ROUTE_ORIGIN_SUBTYPE: BgpExtendedCommunityTransitive2OctetAsTypeChoiceEnum("route_origin_subtype"), +} +func (obj *bgpExtendedCommunityTransitive2OctetAsType) Choice() BgpExtendedCommunityTransitive2OctetAsTypeChoiceEnum { + return BgpExtendedCommunityTransitive2OctetAsTypeChoiceEnum(obj.obj.Choice.Enum().String()) } // description is TBD -// Start returns a string -func (obj *patternFlowArpSenderProtocolAddrCounter) HasStart() bool { - return obj.obj.Start != nil +// Choice returns a string +func (obj *bgpExtendedCommunityTransitive2OctetAsType) HasChoice() bool { + return obj.obj.Choice != nil } -// description is TBD -// SetStart sets the string value in the PatternFlowArpSenderProtocolAddrCounter object -func (obj *patternFlowArpSenderProtocolAddrCounter) SetStart(value string) PatternFlowArpSenderProtocolAddrCounter { +func (obj *bgpExtendedCommunityTransitive2OctetAsType) SetChoice(value BgpExtendedCommunityTransitive2OctetAsTypeChoiceEnum) BgpExtendedCommunityTransitive2OctetAsType { + intValue, ok := otg.BgpExtendedCommunityTransitive2OctetAsType_Choice_Enum_value[string(value)] + if !ok { + obj.validationErrors = append(obj.validationErrors, fmt.Sprintf( + "%s is not a valid choice on BgpExtendedCommunityTransitive2OctetAsTypeChoiceEnum", string(value))) + return obj + } + enumValue := otg.BgpExtendedCommunityTransitive2OctetAsType_Choice_Enum(intValue) + obj.obj.Choice = &enumValue + obj.obj.RouteOriginSubtype = nil + obj.routeOriginSubtypeHolder = nil + obj.obj.RouteTargetSubtype = nil + obj.routeTargetSubtypeHolder = nil + + if value == BgpExtendedCommunityTransitive2OctetAsTypeChoice.ROUTE_TARGET_SUBTYPE { + obj.obj.RouteTargetSubtype = NewBgpExtendedCommunityTransitive2OctetAsTypeRouteTarget().Msg() + } + + if value == BgpExtendedCommunityTransitive2OctetAsTypeChoice.ROUTE_ORIGIN_SUBTYPE { + obj.obj.RouteOriginSubtype = NewBgpExtendedCommunityTransitive2OctetAsTypeRouteOrigin().Msg() + } - obj.obj.Start = &value return obj } // description is TBD -// Step returns a string -func (obj *patternFlowArpSenderProtocolAddrCounter) Step() string { - - return *obj.obj.Step - +// RouteTargetSubtype returns a BgpExtendedCommunityTransitive2OctetAsTypeRouteTarget +func (obj *bgpExtendedCommunityTransitive2OctetAsType) RouteTargetSubtype() BgpExtendedCommunityTransitive2OctetAsTypeRouteTarget { + if obj.obj.RouteTargetSubtype == nil { + obj.SetChoice(BgpExtendedCommunityTransitive2OctetAsTypeChoice.ROUTE_TARGET_SUBTYPE) + } + if obj.routeTargetSubtypeHolder == nil { + obj.routeTargetSubtypeHolder = &bgpExtendedCommunityTransitive2OctetAsTypeRouteTarget{obj: obj.obj.RouteTargetSubtype} + } + return obj.routeTargetSubtypeHolder } // description is TBD -// Step returns a string -func (obj *patternFlowArpSenderProtocolAddrCounter) HasStep() bool { - return obj.obj.Step != nil +// RouteTargetSubtype returns a BgpExtendedCommunityTransitive2OctetAsTypeRouteTarget +func (obj *bgpExtendedCommunityTransitive2OctetAsType) HasRouteTargetSubtype() bool { + return obj.obj.RouteTargetSubtype != nil } // description is TBD -// SetStep sets the string value in the PatternFlowArpSenderProtocolAddrCounter object -func (obj *patternFlowArpSenderProtocolAddrCounter) SetStep(value string) PatternFlowArpSenderProtocolAddrCounter { +// SetRouteTargetSubtype sets the BgpExtendedCommunityTransitive2OctetAsTypeRouteTarget value in the BgpExtendedCommunityTransitive2OctetAsType object +func (obj *bgpExtendedCommunityTransitive2OctetAsType) SetRouteTargetSubtype(value BgpExtendedCommunityTransitive2OctetAsTypeRouteTarget) BgpExtendedCommunityTransitive2OctetAsType { + obj.SetChoice(BgpExtendedCommunityTransitive2OctetAsTypeChoice.ROUTE_TARGET_SUBTYPE) + obj.routeTargetSubtypeHolder = nil + obj.obj.RouteTargetSubtype = value.Msg() - obj.obj.Step = &value return obj } // description is TBD -// Count returns a uint32 -func (obj *patternFlowArpSenderProtocolAddrCounter) Count() uint32 { - - return *obj.obj.Count - +// RouteOriginSubtype returns a BgpExtendedCommunityTransitive2OctetAsTypeRouteOrigin +func (obj *bgpExtendedCommunityTransitive2OctetAsType) RouteOriginSubtype() BgpExtendedCommunityTransitive2OctetAsTypeRouteOrigin { + if obj.obj.RouteOriginSubtype == nil { + obj.SetChoice(BgpExtendedCommunityTransitive2OctetAsTypeChoice.ROUTE_ORIGIN_SUBTYPE) + } + if obj.routeOriginSubtypeHolder == nil { + obj.routeOriginSubtypeHolder = &bgpExtendedCommunityTransitive2OctetAsTypeRouteOrigin{obj: obj.obj.RouteOriginSubtype} + } + return obj.routeOriginSubtypeHolder } // description is TBD -// Count returns a uint32 -func (obj *patternFlowArpSenderProtocolAddrCounter) HasCount() bool { - return obj.obj.Count != nil +// RouteOriginSubtype returns a BgpExtendedCommunityTransitive2OctetAsTypeRouteOrigin +func (obj *bgpExtendedCommunityTransitive2OctetAsType) HasRouteOriginSubtype() bool { + return obj.obj.RouteOriginSubtype != nil } // description is TBD -// SetCount sets the uint32 value in the PatternFlowArpSenderProtocolAddrCounter object -func (obj *patternFlowArpSenderProtocolAddrCounter) SetCount(value uint32) PatternFlowArpSenderProtocolAddrCounter { +// SetRouteOriginSubtype sets the BgpExtendedCommunityTransitive2OctetAsTypeRouteOrigin value in the BgpExtendedCommunityTransitive2OctetAsType object +func (obj *bgpExtendedCommunityTransitive2OctetAsType) SetRouteOriginSubtype(value BgpExtendedCommunityTransitive2OctetAsTypeRouteOrigin) BgpExtendedCommunityTransitive2OctetAsType { + obj.SetChoice(BgpExtendedCommunityTransitive2OctetAsTypeChoice.ROUTE_ORIGIN_SUBTYPE) + obj.routeOriginSubtypeHolder = nil + obj.obj.RouteOriginSubtype = value.Msg() - obj.obj.Count = &value return obj } -func (obj *patternFlowArpSenderProtocolAddrCounter) validateObj(vObj *validation, set_default bool) { +func (obj *bgpExtendedCommunityTransitive2OctetAsType) validateObj(vObj *validation, set_default bool) { if set_default { obj.setDefault() } - if obj.obj.Start != nil { - - err := obj.validateIpv4(obj.Start()) - if err != nil { - vObj.validationErrors = append(vObj.validationErrors, fmt.Sprintf("%s %s", err.Error(), "on PatternFlowArpSenderProtocolAddrCounter.Start")) - } + if obj.obj.RouteTargetSubtype != nil { + obj.RouteTargetSubtype().validateObj(vObj, set_default) } - if obj.obj.Step != nil { - - err := obj.validateIpv4(obj.Step()) - if err != nil { - vObj.validationErrors = append(vObj.validationErrors, fmt.Sprintf("%s %s", err.Error(), "on PatternFlowArpSenderProtocolAddrCounter.Step")) - } + if obj.obj.RouteOriginSubtype != nil { + obj.RouteOriginSubtype().validateObj(vObj, set_default) } } -func (obj *patternFlowArpSenderProtocolAddrCounter) setDefault() { - if obj.obj.Start == nil { - obj.SetStart("0.0.0.0") - } - if obj.obj.Step == nil { - obj.SetStep("0.0.0.1") - } - if obj.obj.Count == nil { - obj.SetCount(1) +func (obj *bgpExtendedCommunityTransitive2OctetAsType) setDefault() { + if obj.obj.Choice == nil { + obj.SetChoice(BgpExtendedCommunityTransitive2OctetAsTypeChoice.ROUTE_TARGET_SUBTYPE) + } } -// ***** PatternFlowArpSenderProtocolAddrMetricTag ***** -type patternFlowArpSenderProtocolAddrMetricTag struct { +// ***** BgpExtendedCommunityTransitiveIpv4AddressType ***** +type bgpExtendedCommunityTransitiveIpv4AddressType struct { validation - obj *otg.PatternFlowArpSenderProtocolAddrMetricTag + obj *otg.BgpExtendedCommunityTransitiveIpv4AddressType + routeTargetSubtypeHolder BgpExtendedCommunityTransitiveIpv4AddressTypeRouteTarget + routeOriginSubtypeHolder BgpExtendedCommunityTransitiveIpv4AddressTypeRouteOrigin } -func NewPatternFlowArpSenderProtocolAddrMetricTag() PatternFlowArpSenderProtocolAddrMetricTag { - obj := patternFlowArpSenderProtocolAddrMetricTag{obj: &otg.PatternFlowArpSenderProtocolAddrMetricTag{}} +func NewBgpExtendedCommunityTransitiveIpv4AddressType() BgpExtendedCommunityTransitiveIpv4AddressType { + obj := bgpExtendedCommunityTransitiveIpv4AddressType{obj: &otg.BgpExtendedCommunityTransitiveIpv4AddressType{}} obj.setDefault() return &obj } -func (obj *patternFlowArpSenderProtocolAddrMetricTag) Msg() *otg.PatternFlowArpSenderProtocolAddrMetricTag { +func (obj *bgpExtendedCommunityTransitiveIpv4AddressType) Msg() *otg.BgpExtendedCommunityTransitiveIpv4AddressType { return obj.obj } -func (obj *patternFlowArpSenderProtocolAddrMetricTag) SetMsg(msg *otg.PatternFlowArpSenderProtocolAddrMetricTag) PatternFlowArpSenderProtocolAddrMetricTag { - +func (obj *bgpExtendedCommunityTransitiveIpv4AddressType) SetMsg(msg *otg.BgpExtendedCommunityTransitiveIpv4AddressType) BgpExtendedCommunityTransitiveIpv4AddressType { + obj.setNil() proto.Merge(obj.obj, msg) return obj } -func (obj *patternFlowArpSenderProtocolAddrMetricTag) ToProto() (*otg.PatternFlowArpSenderProtocolAddrMetricTag, error) { +func (obj *bgpExtendedCommunityTransitiveIpv4AddressType) ToProto() (*otg.BgpExtendedCommunityTransitiveIpv4AddressType, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -257408,7 +303876,7 @@ func (obj *patternFlowArpSenderProtocolAddrMetricTag) ToProto() (*otg.PatternFlo return obj.Msg(), nil } -func (obj *patternFlowArpSenderProtocolAddrMetricTag) FromProto(msg *otg.PatternFlowArpSenderProtocolAddrMetricTag) (PatternFlowArpSenderProtocolAddrMetricTag, error) { +func (obj *bgpExtendedCommunityTransitiveIpv4AddressType) FromProto(msg *otg.BgpExtendedCommunityTransitiveIpv4AddressType) (BgpExtendedCommunityTransitiveIpv4AddressType, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -257417,7 +303885,7 @@ func (obj *patternFlowArpSenderProtocolAddrMetricTag) FromProto(msg *otg.Pattern return newObj, nil } -func (obj *patternFlowArpSenderProtocolAddrMetricTag) ToPbText() (string, error) { +func (obj *bgpExtendedCommunityTransitiveIpv4AddressType) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -257429,12 +303897,12 @@ func (obj *patternFlowArpSenderProtocolAddrMetricTag) ToPbText() (string, error) return string(protoMarshal), nil } -func (obj *patternFlowArpSenderProtocolAddrMetricTag) FromPbText(value string) error { +func (obj *bgpExtendedCommunityTransitiveIpv4AddressType) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj } - + obj.setNil() vErr := obj.validateToAndFrom() if vErr != nil { return vErr @@ -257442,7 +303910,7 @@ func (obj *patternFlowArpSenderProtocolAddrMetricTag) FromPbText(value string) e return retObj } -func (obj *patternFlowArpSenderProtocolAddrMetricTag) ToYaml() (string, error) { +func (obj *bgpExtendedCommunityTransitiveIpv4AddressType) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -257463,7 +303931,7 @@ func (obj *patternFlowArpSenderProtocolAddrMetricTag) ToYaml() (string, error) { return string(data), nil } -func (obj *patternFlowArpSenderProtocolAddrMetricTag) FromYaml(value string) error { +func (obj *bgpExtendedCommunityTransitiveIpv4AddressType) FromYaml(value string) error { if value == "" { value = "{}" } @@ -257480,7 +303948,7 @@ func (obj *patternFlowArpSenderProtocolAddrMetricTag) FromYaml(value string) err return fmt.Errorf("unmarshal error %s", strings.Replace( uError.Error(), "\u00a0", " ", -1)[7:]) } - + obj.setNil() vErr := obj.validateToAndFrom() if vErr != nil { return vErr @@ -257488,7 +303956,7 @@ func (obj *patternFlowArpSenderProtocolAddrMetricTag) FromYaml(value string) err return nil } -func (obj *patternFlowArpSenderProtocolAddrMetricTag) ToJson() (string, error) { +func (obj *bgpExtendedCommunityTransitiveIpv4AddressType) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -257506,7 +303974,7 @@ func (obj *patternFlowArpSenderProtocolAddrMetricTag) ToJson() (string, error) { return string(data), nil } -func (obj *patternFlowArpSenderProtocolAddrMetricTag) FromJson(value string) error { +func (obj *bgpExtendedCommunityTransitiveIpv4AddressType) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -257519,7 +303987,7 @@ func (obj *patternFlowArpSenderProtocolAddrMetricTag) FromJson(value string) err return fmt.Errorf("unmarshal error %s", strings.Replace( uError.Error(), "\u00a0", " ", -1)[7:]) } - + obj.setNil() err := obj.validateToAndFrom() if err != nil { return err @@ -257527,19 +303995,19 @@ func (obj *patternFlowArpSenderProtocolAddrMetricTag) FromJson(value string) err return nil } -func (obj *patternFlowArpSenderProtocolAddrMetricTag) validateToAndFrom() error { +func (obj *bgpExtendedCommunityTransitiveIpv4AddressType) validateToAndFrom() error { // emptyVars() obj.validateObj(&obj.validation, true) return obj.validationResult() } -func (obj *patternFlowArpSenderProtocolAddrMetricTag) Validate() error { +func (obj *bgpExtendedCommunityTransitiveIpv4AddressType) Validate() error { // emptyVars() obj.validateObj(&obj.validation, false) return obj.validationResult() } -func (obj *patternFlowArpSenderProtocolAddrMetricTag) String() string { +func (obj *bgpExtendedCommunityTransitiveIpv4AddressType) String() string { str, err := obj.ToYaml() if err != nil { return err.Error() @@ -257547,12 +304015,12 @@ func (obj *patternFlowArpSenderProtocolAddrMetricTag) String() string { return str } -func (obj *patternFlowArpSenderProtocolAddrMetricTag) Clone() (PatternFlowArpSenderProtocolAddrMetricTag, error) { +func (obj *bgpExtendedCommunityTransitiveIpv4AddressType) Clone() (BgpExtendedCommunityTransitiveIpv4AddressType, error) { vErr := obj.Validate() if vErr != nil { return nil, vErr } - newObj := NewPatternFlowArpSenderProtocolAddrMetricTag() + newObj := NewBgpExtendedCommunityTransitiveIpv4AddressType() data, err := proto.Marshal(obj.Msg()) if err != nil { return nil, err @@ -257564,183 +304032,225 @@ func (obj *patternFlowArpSenderProtocolAddrMetricTag) Clone() (PatternFlowArpSen return newObj, nil } -// PatternFlowArpSenderProtocolAddrMetricTag is metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. -type PatternFlowArpSenderProtocolAddrMetricTag interface { +func (obj *bgpExtendedCommunityTransitiveIpv4AddressType) setNil() { + obj.routeTargetSubtypeHolder = nil + obj.routeOriginSubtypeHolder = nil + obj.validationErrors = nil + obj.warnings = nil + obj.constraints = make(map[string]map[string]Constraints) +} + +// BgpExtendedCommunityTransitiveIpv4AddressType is the Transitive IPv4 Address Specific Extended Community is sent as type 0x01. +type BgpExtendedCommunityTransitiveIpv4AddressType interface { Validation - // Msg marshals PatternFlowArpSenderProtocolAddrMetricTag to protobuf object *otg.PatternFlowArpSenderProtocolAddrMetricTag + // Msg marshals BgpExtendedCommunityTransitiveIpv4AddressType to protobuf object *otg.BgpExtendedCommunityTransitiveIpv4AddressType // and doesn't set defaults - Msg() *otg.PatternFlowArpSenderProtocolAddrMetricTag - // SetMsg unmarshals PatternFlowArpSenderProtocolAddrMetricTag from protobuf object *otg.PatternFlowArpSenderProtocolAddrMetricTag + Msg() *otg.BgpExtendedCommunityTransitiveIpv4AddressType + // SetMsg unmarshals BgpExtendedCommunityTransitiveIpv4AddressType from protobuf object *otg.BgpExtendedCommunityTransitiveIpv4AddressType // and doesn't set defaults - SetMsg(*otg.PatternFlowArpSenderProtocolAddrMetricTag) PatternFlowArpSenderProtocolAddrMetricTag - // ToProto marshals PatternFlowArpSenderProtocolAddrMetricTag to protobuf object *otg.PatternFlowArpSenderProtocolAddrMetricTag - ToProto() (*otg.PatternFlowArpSenderProtocolAddrMetricTag, error) - // ToPbText marshals PatternFlowArpSenderProtocolAddrMetricTag to protobuf text + SetMsg(*otg.BgpExtendedCommunityTransitiveIpv4AddressType) BgpExtendedCommunityTransitiveIpv4AddressType + // ToProto marshals BgpExtendedCommunityTransitiveIpv4AddressType to protobuf object *otg.BgpExtendedCommunityTransitiveIpv4AddressType + ToProto() (*otg.BgpExtendedCommunityTransitiveIpv4AddressType, error) + // ToPbText marshals BgpExtendedCommunityTransitiveIpv4AddressType to protobuf text ToPbText() (string, error) - // ToYaml marshals PatternFlowArpSenderProtocolAddrMetricTag to YAML text + // ToYaml marshals BgpExtendedCommunityTransitiveIpv4AddressType to YAML text ToYaml() (string, error) - // ToJson marshals PatternFlowArpSenderProtocolAddrMetricTag to JSON text + // ToJson marshals BgpExtendedCommunityTransitiveIpv4AddressType to JSON text ToJson() (string, error) - // FromProto unmarshals PatternFlowArpSenderProtocolAddrMetricTag from protobuf object *otg.PatternFlowArpSenderProtocolAddrMetricTag - FromProto(msg *otg.PatternFlowArpSenderProtocolAddrMetricTag) (PatternFlowArpSenderProtocolAddrMetricTag, error) - // FromPbText unmarshals PatternFlowArpSenderProtocolAddrMetricTag from protobuf text + // FromProto unmarshals BgpExtendedCommunityTransitiveIpv4AddressType from protobuf object *otg.BgpExtendedCommunityTransitiveIpv4AddressType + FromProto(msg *otg.BgpExtendedCommunityTransitiveIpv4AddressType) (BgpExtendedCommunityTransitiveIpv4AddressType, error) + // FromPbText unmarshals BgpExtendedCommunityTransitiveIpv4AddressType from protobuf text FromPbText(value string) error - // FromYaml unmarshals PatternFlowArpSenderProtocolAddrMetricTag from YAML text + // FromYaml unmarshals BgpExtendedCommunityTransitiveIpv4AddressType from YAML text FromYaml(value string) error - // FromJson unmarshals PatternFlowArpSenderProtocolAddrMetricTag from JSON text + // FromJson unmarshals BgpExtendedCommunityTransitiveIpv4AddressType from JSON text FromJson(value string) error - // Validate validates PatternFlowArpSenderProtocolAddrMetricTag + // Validate validates BgpExtendedCommunityTransitiveIpv4AddressType Validate() error // A stringer function String() string // Clones the object - Clone() (PatternFlowArpSenderProtocolAddrMetricTag, error) + Clone() (BgpExtendedCommunityTransitiveIpv4AddressType, error) validateToAndFrom() error validateObj(vObj *validation, set_default bool) setDefault() - // Name returns string, set in PatternFlowArpSenderProtocolAddrMetricTag. - Name() string - // SetName assigns string provided by user to PatternFlowArpSenderProtocolAddrMetricTag - SetName(value string) PatternFlowArpSenderProtocolAddrMetricTag - // Offset returns uint32, set in PatternFlowArpSenderProtocolAddrMetricTag. - Offset() uint32 - // SetOffset assigns uint32 provided by user to PatternFlowArpSenderProtocolAddrMetricTag - SetOffset(value uint32) PatternFlowArpSenderProtocolAddrMetricTag - // HasOffset checks if Offset has been set in PatternFlowArpSenderProtocolAddrMetricTag - HasOffset() bool - // Length returns uint32, set in PatternFlowArpSenderProtocolAddrMetricTag. - Length() uint32 - // SetLength assigns uint32 provided by user to PatternFlowArpSenderProtocolAddrMetricTag - SetLength(value uint32) PatternFlowArpSenderProtocolAddrMetricTag - // HasLength checks if Length has been set in PatternFlowArpSenderProtocolAddrMetricTag - HasLength() bool + // Choice returns BgpExtendedCommunityTransitiveIpv4AddressTypeChoiceEnum, set in BgpExtendedCommunityTransitiveIpv4AddressType + Choice() BgpExtendedCommunityTransitiveIpv4AddressTypeChoiceEnum + // SetChoice assigns BgpExtendedCommunityTransitiveIpv4AddressTypeChoiceEnum provided by user to BgpExtendedCommunityTransitiveIpv4AddressType + SetChoice(value BgpExtendedCommunityTransitiveIpv4AddressTypeChoiceEnum) BgpExtendedCommunityTransitiveIpv4AddressType + // HasChoice checks if Choice has been set in BgpExtendedCommunityTransitiveIpv4AddressType + HasChoice() bool + // RouteTargetSubtype returns BgpExtendedCommunityTransitiveIpv4AddressTypeRouteTarget, set in BgpExtendedCommunityTransitiveIpv4AddressType. + // BgpExtendedCommunityTransitiveIpv4AddressTypeRouteTarget is the Route Target Community identifies one or more routers that may receive a set of routes (that carry this Community) carried by BGP. It is sent with sub-type as 0x02. + RouteTargetSubtype() BgpExtendedCommunityTransitiveIpv4AddressTypeRouteTarget + // SetRouteTargetSubtype assigns BgpExtendedCommunityTransitiveIpv4AddressTypeRouteTarget provided by user to BgpExtendedCommunityTransitiveIpv4AddressType. + // BgpExtendedCommunityTransitiveIpv4AddressTypeRouteTarget is the Route Target Community identifies one or more routers that may receive a set of routes (that carry this Community) carried by BGP. It is sent with sub-type as 0x02. + SetRouteTargetSubtype(value BgpExtendedCommunityTransitiveIpv4AddressTypeRouteTarget) BgpExtendedCommunityTransitiveIpv4AddressType + // HasRouteTargetSubtype checks if RouteTargetSubtype has been set in BgpExtendedCommunityTransitiveIpv4AddressType + HasRouteTargetSubtype() bool + // RouteOriginSubtype returns BgpExtendedCommunityTransitiveIpv4AddressTypeRouteOrigin, set in BgpExtendedCommunityTransitiveIpv4AddressType. + // BgpExtendedCommunityTransitiveIpv4AddressTypeRouteOrigin is the Route Origin Community identifies one or more routers that inject a set of routes (that carry this Community) into BGP It is sent with sub-type as 0x03. + RouteOriginSubtype() BgpExtendedCommunityTransitiveIpv4AddressTypeRouteOrigin + // SetRouteOriginSubtype assigns BgpExtendedCommunityTransitiveIpv4AddressTypeRouteOrigin provided by user to BgpExtendedCommunityTransitiveIpv4AddressType. + // BgpExtendedCommunityTransitiveIpv4AddressTypeRouteOrigin is the Route Origin Community identifies one or more routers that inject a set of routes (that carry this Community) into BGP It is sent with sub-type as 0x03. + SetRouteOriginSubtype(value BgpExtendedCommunityTransitiveIpv4AddressTypeRouteOrigin) BgpExtendedCommunityTransitiveIpv4AddressType + // HasRouteOriginSubtype checks if RouteOriginSubtype has been set in BgpExtendedCommunityTransitiveIpv4AddressType + HasRouteOriginSubtype() bool + setNil() } -// Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field -// Name returns a string -func (obj *patternFlowArpSenderProtocolAddrMetricTag) Name() string { - - return *obj.obj.Name +type BgpExtendedCommunityTransitiveIpv4AddressTypeChoiceEnum string +// Enum of Choice on BgpExtendedCommunityTransitiveIpv4AddressType +var BgpExtendedCommunityTransitiveIpv4AddressTypeChoice = struct { + ROUTE_TARGET_SUBTYPE BgpExtendedCommunityTransitiveIpv4AddressTypeChoiceEnum + ROUTE_ORIGIN_SUBTYPE BgpExtendedCommunityTransitiveIpv4AddressTypeChoiceEnum +}{ + ROUTE_TARGET_SUBTYPE: BgpExtendedCommunityTransitiveIpv4AddressTypeChoiceEnum("route_target_subtype"), + ROUTE_ORIGIN_SUBTYPE: BgpExtendedCommunityTransitiveIpv4AddressTypeChoiceEnum("route_origin_subtype"), } -// Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field -// SetName sets the string value in the PatternFlowArpSenderProtocolAddrMetricTag object -func (obj *patternFlowArpSenderProtocolAddrMetricTag) SetName(value string) PatternFlowArpSenderProtocolAddrMetricTag { +func (obj *bgpExtendedCommunityTransitiveIpv4AddressType) Choice() BgpExtendedCommunityTransitiveIpv4AddressTypeChoiceEnum { + return BgpExtendedCommunityTransitiveIpv4AddressTypeChoiceEnum(obj.obj.Choice.Enum().String()) +} - obj.obj.Name = &value - return obj +// description is TBD +// Choice returns a string +func (obj *bgpExtendedCommunityTransitiveIpv4AddressType) HasChoice() bool { + return obj.obj.Choice != nil } -// Offset in bits relative to start of corresponding header field -// Offset returns a uint32 -func (obj *patternFlowArpSenderProtocolAddrMetricTag) Offset() uint32 { +func (obj *bgpExtendedCommunityTransitiveIpv4AddressType) SetChoice(value BgpExtendedCommunityTransitiveIpv4AddressTypeChoiceEnum) BgpExtendedCommunityTransitiveIpv4AddressType { + intValue, ok := otg.BgpExtendedCommunityTransitiveIpv4AddressType_Choice_Enum_value[string(value)] + if !ok { + obj.validationErrors = append(obj.validationErrors, fmt.Sprintf( + "%s is not a valid choice on BgpExtendedCommunityTransitiveIpv4AddressTypeChoiceEnum", string(value))) + return obj + } + enumValue := otg.BgpExtendedCommunityTransitiveIpv4AddressType_Choice_Enum(intValue) + obj.obj.Choice = &enumValue + obj.obj.RouteOriginSubtype = nil + obj.routeOriginSubtypeHolder = nil + obj.obj.RouteTargetSubtype = nil + obj.routeTargetSubtypeHolder = nil - return *obj.obj.Offset + if value == BgpExtendedCommunityTransitiveIpv4AddressTypeChoice.ROUTE_TARGET_SUBTYPE { + obj.obj.RouteTargetSubtype = NewBgpExtendedCommunityTransitiveIpv4AddressTypeRouteTarget().Msg() + } -} + if value == BgpExtendedCommunityTransitiveIpv4AddressTypeChoice.ROUTE_ORIGIN_SUBTYPE { + obj.obj.RouteOriginSubtype = NewBgpExtendedCommunityTransitiveIpv4AddressTypeRouteOrigin().Msg() + } -// Offset in bits relative to start of corresponding header field -// Offset returns a uint32 -func (obj *patternFlowArpSenderProtocolAddrMetricTag) HasOffset() bool { - return obj.obj.Offset != nil + return obj } -// Offset in bits relative to start of corresponding header field -// SetOffset sets the uint32 value in the PatternFlowArpSenderProtocolAddrMetricTag object -func (obj *patternFlowArpSenderProtocolAddrMetricTag) SetOffset(value uint32) PatternFlowArpSenderProtocolAddrMetricTag { +// description is TBD +// RouteTargetSubtype returns a BgpExtendedCommunityTransitiveIpv4AddressTypeRouteTarget +func (obj *bgpExtendedCommunityTransitiveIpv4AddressType) RouteTargetSubtype() BgpExtendedCommunityTransitiveIpv4AddressTypeRouteTarget { + if obj.obj.RouteTargetSubtype == nil { + obj.SetChoice(BgpExtendedCommunityTransitiveIpv4AddressTypeChoice.ROUTE_TARGET_SUBTYPE) + } + if obj.routeTargetSubtypeHolder == nil { + obj.routeTargetSubtypeHolder = &bgpExtendedCommunityTransitiveIpv4AddressTypeRouteTarget{obj: obj.obj.RouteTargetSubtype} + } + return obj.routeTargetSubtypeHolder +} - obj.obj.Offset = &value - return obj +// description is TBD +// RouteTargetSubtype returns a BgpExtendedCommunityTransitiveIpv4AddressTypeRouteTarget +func (obj *bgpExtendedCommunityTransitiveIpv4AddressType) HasRouteTargetSubtype() bool { + return obj.obj.RouteTargetSubtype != nil } -// Number of bits to track for metrics starting from configured offset of corresponding header field -// Length returns a uint32 -func (obj *patternFlowArpSenderProtocolAddrMetricTag) Length() uint32 { +// description is TBD +// SetRouteTargetSubtype sets the BgpExtendedCommunityTransitiveIpv4AddressTypeRouteTarget value in the BgpExtendedCommunityTransitiveIpv4AddressType object +func (obj *bgpExtendedCommunityTransitiveIpv4AddressType) SetRouteTargetSubtype(value BgpExtendedCommunityTransitiveIpv4AddressTypeRouteTarget) BgpExtendedCommunityTransitiveIpv4AddressType { + obj.SetChoice(BgpExtendedCommunityTransitiveIpv4AddressTypeChoice.ROUTE_TARGET_SUBTYPE) + obj.routeTargetSubtypeHolder = nil + obj.obj.RouteTargetSubtype = value.Msg() - return *obj.obj.Length + return obj +} +// description is TBD +// RouteOriginSubtype returns a BgpExtendedCommunityTransitiveIpv4AddressTypeRouteOrigin +func (obj *bgpExtendedCommunityTransitiveIpv4AddressType) RouteOriginSubtype() BgpExtendedCommunityTransitiveIpv4AddressTypeRouteOrigin { + if obj.obj.RouteOriginSubtype == nil { + obj.SetChoice(BgpExtendedCommunityTransitiveIpv4AddressTypeChoice.ROUTE_ORIGIN_SUBTYPE) + } + if obj.routeOriginSubtypeHolder == nil { + obj.routeOriginSubtypeHolder = &bgpExtendedCommunityTransitiveIpv4AddressTypeRouteOrigin{obj: obj.obj.RouteOriginSubtype} + } + return obj.routeOriginSubtypeHolder } -// Number of bits to track for metrics starting from configured offset of corresponding header field -// Length returns a uint32 -func (obj *patternFlowArpSenderProtocolAddrMetricTag) HasLength() bool { - return obj.obj.Length != nil +// description is TBD +// RouteOriginSubtype returns a BgpExtendedCommunityTransitiveIpv4AddressTypeRouteOrigin +func (obj *bgpExtendedCommunityTransitiveIpv4AddressType) HasRouteOriginSubtype() bool { + return obj.obj.RouteOriginSubtype != nil } -// Number of bits to track for metrics starting from configured offset of corresponding header field -// SetLength sets the uint32 value in the PatternFlowArpSenderProtocolAddrMetricTag object -func (obj *patternFlowArpSenderProtocolAddrMetricTag) SetLength(value uint32) PatternFlowArpSenderProtocolAddrMetricTag { +// description is TBD +// SetRouteOriginSubtype sets the BgpExtendedCommunityTransitiveIpv4AddressTypeRouteOrigin value in the BgpExtendedCommunityTransitiveIpv4AddressType object +func (obj *bgpExtendedCommunityTransitiveIpv4AddressType) SetRouteOriginSubtype(value BgpExtendedCommunityTransitiveIpv4AddressTypeRouteOrigin) BgpExtendedCommunityTransitiveIpv4AddressType { + obj.SetChoice(BgpExtendedCommunityTransitiveIpv4AddressTypeChoice.ROUTE_ORIGIN_SUBTYPE) + obj.routeOriginSubtypeHolder = nil + obj.obj.RouteOriginSubtype = value.Msg() - obj.obj.Length = &value return obj } -func (obj *patternFlowArpSenderProtocolAddrMetricTag) validateObj(vObj *validation, set_default bool) { +func (obj *bgpExtendedCommunityTransitiveIpv4AddressType) validateObj(vObj *validation, set_default bool) { if set_default { obj.setDefault() } - // Name is required - if obj.obj.Name == nil { - vObj.validationErrors = append(vObj.validationErrors, "Name is required field on interface PatternFlowArpSenderProtocolAddrMetricTag") - } - - if obj.obj.Offset != nil { - - if *obj.obj.Offset > 31 { - vObj.validationErrors = append( - vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowArpSenderProtocolAddrMetricTag.Offset <= 31 but Got %d", *obj.obj.Offset)) - } + if obj.obj.RouteTargetSubtype != nil { + obj.RouteTargetSubtype().validateObj(vObj, set_default) } - if obj.obj.Length != nil { - - if *obj.obj.Length < 1 || *obj.obj.Length > 32 { - vObj.validationErrors = append( - vObj.validationErrors, - fmt.Sprintf("1 <= PatternFlowArpSenderProtocolAddrMetricTag.Length <= 32 but Got %d", *obj.obj.Length)) - } + if obj.obj.RouteOriginSubtype != nil { + obj.RouteOriginSubtype().validateObj(vObj, set_default) } } -func (obj *patternFlowArpSenderProtocolAddrMetricTag) setDefault() { - if obj.obj.Offset == nil { - obj.SetOffset(0) - } - if obj.obj.Length == nil { - obj.SetLength(32) +func (obj *bgpExtendedCommunityTransitiveIpv4AddressType) setDefault() { + if obj.obj.Choice == nil { + obj.SetChoice(BgpExtendedCommunityTransitiveIpv4AddressTypeChoice.ROUTE_TARGET_SUBTYPE) + } } -// ***** PatternFlowArpTargetHardwareAddrCounter ***** -type patternFlowArpTargetHardwareAddrCounter struct { +// ***** BgpExtendedCommunityTransitive4OctetAsType ***** +type bgpExtendedCommunityTransitive4OctetAsType struct { validation - obj *otg.PatternFlowArpTargetHardwareAddrCounter + obj *otg.BgpExtendedCommunityTransitive4OctetAsType + routeTargetSubtypeHolder BgpExtendedCommunityTransitive4OctetAsTypeRouteTarget + routeOriginSubtypeHolder BgpExtendedCommunityTransitive4OctetAsTypeRouteOrigin } -func NewPatternFlowArpTargetHardwareAddrCounter() PatternFlowArpTargetHardwareAddrCounter { - obj := patternFlowArpTargetHardwareAddrCounter{obj: &otg.PatternFlowArpTargetHardwareAddrCounter{}} +func NewBgpExtendedCommunityTransitive4OctetAsType() BgpExtendedCommunityTransitive4OctetAsType { + obj := bgpExtendedCommunityTransitive4OctetAsType{obj: &otg.BgpExtendedCommunityTransitive4OctetAsType{}} obj.setDefault() return &obj } -func (obj *patternFlowArpTargetHardwareAddrCounter) Msg() *otg.PatternFlowArpTargetHardwareAddrCounter { +func (obj *bgpExtendedCommunityTransitive4OctetAsType) Msg() *otg.BgpExtendedCommunityTransitive4OctetAsType { return obj.obj } -func (obj *patternFlowArpTargetHardwareAddrCounter) SetMsg(msg *otg.PatternFlowArpTargetHardwareAddrCounter) PatternFlowArpTargetHardwareAddrCounter { - +func (obj *bgpExtendedCommunityTransitive4OctetAsType) SetMsg(msg *otg.BgpExtendedCommunityTransitive4OctetAsType) BgpExtendedCommunityTransitive4OctetAsType { + obj.setNil() proto.Merge(obj.obj, msg) return obj } -func (obj *patternFlowArpTargetHardwareAddrCounter) ToProto() (*otg.PatternFlowArpTargetHardwareAddrCounter, error) { +func (obj *bgpExtendedCommunityTransitive4OctetAsType) ToProto() (*otg.BgpExtendedCommunityTransitive4OctetAsType, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -257748,7 +304258,7 @@ func (obj *patternFlowArpTargetHardwareAddrCounter) ToProto() (*otg.PatternFlowA return obj.Msg(), nil } -func (obj *patternFlowArpTargetHardwareAddrCounter) FromProto(msg *otg.PatternFlowArpTargetHardwareAddrCounter) (PatternFlowArpTargetHardwareAddrCounter, error) { +func (obj *bgpExtendedCommunityTransitive4OctetAsType) FromProto(msg *otg.BgpExtendedCommunityTransitive4OctetAsType) (BgpExtendedCommunityTransitive4OctetAsType, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -257757,7 +304267,7 @@ func (obj *patternFlowArpTargetHardwareAddrCounter) FromProto(msg *otg.PatternFl return newObj, nil } -func (obj *patternFlowArpTargetHardwareAddrCounter) ToPbText() (string, error) { +func (obj *bgpExtendedCommunityTransitive4OctetAsType) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -257769,12 +304279,12 @@ func (obj *patternFlowArpTargetHardwareAddrCounter) ToPbText() (string, error) { return string(protoMarshal), nil } -func (obj *patternFlowArpTargetHardwareAddrCounter) FromPbText(value string) error { +func (obj *bgpExtendedCommunityTransitive4OctetAsType) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj } - + obj.setNil() vErr := obj.validateToAndFrom() if vErr != nil { return vErr @@ -257782,7 +304292,7 @@ func (obj *patternFlowArpTargetHardwareAddrCounter) FromPbText(value string) err return retObj } -func (obj *patternFlowArpTargetHardwareAddrCounter) ToYaml() (string, error) { +func (obj *bgpExtendedCommunityTransitive4OctetAsType) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -257803,7 +304313,7 @@ func (obj *patternFlowArpTargetHardwareAddrCounter) ToYaml() (string, error) { return string(data), nil } -func (obj *patternFlowArpTargetHardwareAddrCounter) FromYaml(value string) error { +func (obj *bgpExtendedCommunityTransitive4OctetAsType) FromYaml(value string) error { if value == "" { value = "{}" } @@ -257820,7 +304330,7 @@ func (obj *patternFlowArpTargetHardwareAddrCounter) FromYaml(value string) error return fmt.Errorf("unmarshal error %s", strings.Replace( uError.Error(), "\u00a0", " ", -1)[7:]) } - + obj.setNil() vErr := obj.validateToAndFrom() if vErr != nil { return vErr @@ -257828,7 +304338,7 @@ func (obj *patternFlowArpTargetHardwareAddrCounter) FromYaml(value string) error return nil } -func (obj *patternFlowArpTargetHardwareAddrCounter) ToJson() (string, error) { +func (obj *bgpExtendedCommunityTransitive4OctetAsType) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -257846,7 +304356,7 @@ func (obj *patternFlowArpTargetHardwareAddrCounter) ToJson() (string, error) { return string(data), nil } -func (obj *patternFlowArpTargetHardwareAddrCounter) FromJson(value string) error { +func (obj *bgpExtendedCommunityTransitive4OctetAsType) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -257859,7 +304369,7 @@ func (obj *patternFlowArpTargetHardwareAddrCounter) FromJson(value string) error return fmt.Errorf("unmarshal error %s", strings.Replace( uError.Error(), "\u00a0", " ", -1)[7:]) } - + obj.setNil() err := obj.validateToAndFrom() if err != nil { return err @@ -257867,19 +304377,19 @@ func (obj *patternFlowArpTargetHardwareAddrCounter) FromJson(value string) error return nil } -func (obj *patternFlowArpTargetHardwareAddrCounter) validateToAndFrom() error { +func (obj *bgpExtendedCommunityTransitive4OctetAsType) validateToAndFrom() error { // emptyVars() obj.validateObj(&obj.validation, true) return obj.validationResult() } -func (obj *patternFlowArpTargetHardwareAddrCounter) Validate() error { +func (obj *bgpExtendedCommunityTransitive4OctetAsType) Validate() error { // emptyVars() obj.validateObj(&obj.validation, false) return obj.validationResult() } -func (obj *patternFlowArpTargetHardwareAddrCounter) String() string { +func (obj *bgpExtendedCommunityTransitive4OctetAsType) String() string { str, err := obj.ToYaml() if err != nil { return err.Error() @@ -257887,12 +304397,12 @@ func (obj *patternFlowArpTargetHardwareAddrCounter) String() string { return str } -func (obj *patternFlowArpTargetHardwareAddrCounter) Clone() (PatternFlowArpTargetHardwareAddrCounter, error) { +func (obj *bgpExtendedCommunityTransitive4OctetAsType) Clone() (BgpExtendedCommunityTransitive4OctetAsType, error) { vErr := obj.Validate() if vErr != nil { return nil, vErr } - newObj := NewPatternFlowArpTargetHardwareAddrCounter() + newObj := NewBgpExtendedCommunityTransitive4OctetAsType() data, err := proto.Marshal(obj.Msg()) if err != nil { return nil, err @@ -257904,187 +304414,225 @@ func (obj *patternFlowArpTargetHardwareAddrCounter) Clone() (PatternFlowArpTarge return newObj, nil } -// PatternFlowArpTargetHardwareAddrCounter is mac counter pattern -type PatternFlowArpTargetHardwareAddrCounter interface { +func (obj *bgpExtendedCommunityTransitive4OctetAsType) setNil() { + obj.routeTargetSubtypeHolder = nil + obj.routeOriginSubtypeHolder = nil + obj.validationErrors = nil + obj.warnings = nil + obj.constraints = make(map[string]map[string]Constraints) +} + +// BgpExtendedCommunityTransitive4OctetAsType is the Transitive Four-Octet AS-Specific Extended Community is sent as type 0x02. It is defined in RFC 5668. +type BgpExtendedCommunityTransitive4OctetAsType interface { Validation - // Msg marshals PatternFlowArpTargetHardwareAddrCounter to protobuf object *otg.PatternFlowArpTargetHardwareAddrCounter + // Msg marshals BgpExtendedCommunityTransitive4OctetAsType to protobuf object *otg.BgpExtendedCommunityTransitive4OctetAsType // and doesn't set defaults - Msg() *otg.PatternFlowArpTargetHardwareAddrCounter - // SetMsg unmarshals PatternFlowArpTargetHardwareAddrCounter from protobuf object *otg.PatternFlowArpTargetHardwareAddrCounter + Msg() *otg.BgpExtendedCommunityTransitive4OctetAsType + // SetMsg unmarshals BgpExtendedCommunityTransitive4OctetAsType from protobuf object *otg.BgpExtendedCommunityTransitive4OctetAsType // and doesn't set defaults - SetMsg(*otg.PatternFlowArpTargetHardwareAddrCounter) PatternFlowArpTargetHardwareAddrCounter - // ToProto marshals PatternFlowArpTargetHardwareAddrCounter to protobuf object *otg.PatternFlowArpTargetHardwareAddrCounter - ToProto() (*otg.PatternFlowArpTargetHardwareAddrCounter, error) - // ToPbText marshals PatternFlowArpTargetHardwareAddrCounter to protobuf text + SetMsg(*otg.BgpExtendedCommunityTransitive4OctetAsType) BgpExtendedCommunityTransitive4OctetAsType + // ToProto marshals BgpExtendedCommunityTransitive4OctetAsType to protobuf object *otg.BgpExtendedCommunityTransitive4OctetAsType + ToProto() (*otg.BgpExtendedCommunityTransitive4OctetAsType, error) + // ToPbText marshals BgpExtendedCommunityTransitive4OctetAsType to protobuf text ToPbText() (string, error) - // ToYaml marshals PatternFlowArpTargetHardwareAddrCounter to YAML text + // ToYaml marshals BgpExtendedCommunityTransitive4OctetAsType to YAML text ToYaml() (string, error) - // ToJson marshals PatternFlowArpTargetHardwareAddrCounter to JSON text + // ToJson marshals BgpExtendedCommunityTransitive4OctetAsType to JSON text ToJson() (string, error) - // FromProto unmarshals PatternFlowArpTargetHardwareAddrCounter from protobuf object *otg.PatternFlowArpTargetHardwareAddrCounter - FromProto(msg *otg.PatternFlowArpTargetHardwareAddrCounter) (PatternFlowArpTargetHardwareAddrCounter, error) - // FromPbText unmarshals PatternFlowArpTargetHardwareAddrCounter from protobuf text + // FromProto unmarshals BgpExtendedCommunityTransitive4OctetAsType from protobuf object *otg.BgpExtendedCommunityTransitive4OctetAsType + FromProto(msg *otg.BgpExtendedCommunityTransitive4OctetAsType) (BgpExtendedCommunityTransitive4OctetAsType, error) + // FromPbText unmarshals BgpExtendedCommunityTransitive4OctetAsType from protobuf text FromPbText(value string) error - // FromYaml unmarshals PatternFlowArpTargetHardwareAddrCounter from YAML text + // FromYaml unmarshals BgpExtendedCommunityTransitive4OctetAsType from YAML text FromYaml(value string) error - // FromJson unmarshals PatternFlowArpTargetHardwareAddrCounter from JSON text + // FromJson unmarshals BgpExtendedCommunityTransitive4OctetAsType from JSON text FromJson(value string) error - // Validate validates PatternFlowArpTargetHardwareAddrCounter + // Validate validates BgpExtendedCommunityTransitive4OctetAsType Validate() error // A stringer function String() string // Clones the object - Clone() (PatternFlowArpTargetHardwareAddrCounter, error) + Clone() (BgpExtendedCommunityTransitive4OctetAsType, error) validateToAndFrom() error validateObj(vObj *validation, set_default bool) setDefault() - // Start returns string, set in PatternFlowArpTargetHardwareAddrCounter. - Start() string - // SetStart assigns string provided by user to PatternFlowArpTargetHardwareAddrCounter - SetStart(value string) PatternFlowArpTargetHardwareAddrCounter - // HasStart checks if Start has been set in PatternFlowArpTargetHardwareAddrCounter - HasStart() bool - // Step returns string, set in PatternFlowArpTargetHardwareAddrCounter. - Step() string - // SetStep assigns string provided by user to PatternFlowArpTargetHardwareAddrCounter - SetStep(value string) PatternFlowArpTargetHardwareAddrCounter - // HasStep checks if Step has been set in PatternFlowArpTargetHardwareAddrCounter - HasStep() bool - // Count returns uint32, set in PatternFlowArpTargetHardwareAddrCounter. - Count() uint32 - // SetCount assigns uint32 provided by user to PatternFlowArpTargetHardwareAddrCounter - SetCount(value uint32) PatternFlowArpTargetHardwareAddrCounter - // HasCount checks if Count has been set in PatternFlowArpTargetHardwareAddrCounter - HasCount() bool + // Choice returns BgpExtendedCommunityTransitive4OctetAsTypeChoiceEnum, set in BgpExtendedCommunityTransitive4OctetAsType + Choice() BgpExtendedCommunityTransitive4OctetAsTypeChoiceEnum + // SetChoice assigns BgpExtendedCommunityTransitive4OctetAsTypeChoiceEnum provided by user to BgpExtendedCommunityTransitive4OctetAsType + SetChoice(value BgpExtendedCommunityTransitive4OctetAsTypeChoiceEnum) BgpExtendedCommunityTransitive4OctetAsType + // HasChoice checks if Choice has been set in BgpExtendedCommunityTransitive4OctetAsType + HasChoice() bool + // RouteTargetSubtype returns BgpExtendedCommunityTransitive4OctetAsTypeRouteTarget, set in BgpExtendedCommunityTransitive4OctetAsType. + // BgpExtendedCommunityTransitive4OctetAsTypeRouteTarget is the Route Target Community identifies one or more routers that may receive a set of routes (that carry this Community) carried by BGP. It is sent with sub-type as 0x02 + RouteTargetSubtype() BgpExtendedCommunityTransitive4OctetAsTypeRouteTarget + // SetRouteTargetSubtype assigns BgpExtendedCommunityTransitive4OctetAsTypeRouteTarget provided by user to BgpExtendedCommunityTransitive4OctetAsType. + // BgpExtendedCommunityTransitive4OctetAsTypeRouteTarget is the Route Target Community identifies one or more routers that may receive a set of routes (that carry this Community) carried by BGP. It is sent with sub-type as 0x02 + SetRouteTargetSubtype(value BgpExtendedCommunityTransitive4OctetAsTypeRouteTarget) BgpExtendedCommunityTransitive4OctetAsType + // HasRouteTargetSubtype checks if RouteTargetSubtype has been set in BgpExtendedCommunityTransitive4OctetAsType + HasRouteTargetSubtype() bool + // RouteOriginSubtype returns BgpExtendedCommunityTransitive4OctetAsTypeRouteOrigin, set in BgpExtendedCommunityTransitive4OctetAsType. + // BgpExtendedCommunityTransitive4OctetAsTypeRouteOrigin is the Route Origin Community identifies one or more routers that inject a set of routes (that carry this Community) into BGP. It is sent with sub-type as 0x03. + RouteOriginSubtype() BgpExtendedCommunityTransitive4OctetAsTypeRouteOrigin + // SetRouteOriginSubtype assigns BgpExtendedCommunityTransitive4OctetAsTypeRouteOrigin provided by user to BgpExtendedCommunityTransitive4OctetAsType. + // BgpExtendedCommunityTransitive4OctetAsTypeRouteOrigin is the Route Origin Community identifies one or more routers that inject a set of routes (that carry this Community) into BGP. It is sent with sub-type as 0x03. + SetRouteOriginSubtype(value BgpExtendedCommunityTransitive4OctetAsTypeRouteOrigin) BgpExtendedCommunityTransitive4OctetAsType + // HasRouteOriginSubtype checks if RouteOriginSubtype has been set in BgpExtendedCommunityTransitive4OctetAsType + HasRouteOriginSubtype() bool + setNil() } -// description is TBD -// Start returns a string -func (obj *patternFlowArpTargetHardwareAddrCounter) Start() string { +type BgpExtendedCommunityTransitive4OctetAsTypeChoiceEnum string - return *obj.obj.Start +// Enum of Choice on BgpExtendedCommunityTransitive4OctetAsType +var BgpExtendedCommunityTransitive4OctetAsTypeChoice = struct { + ROUTE_TARGET_SUBTYPE BgpExtendedCommunityTransitive4OctetAsTypeChoiceEnum + ROUTE_ORIGIN_SUBTYPE BgpExtendedCommunityTransitive4OctetAsTypeChoiceEnum +}{ + ROUTE_TARGET_SUBTYPE: BgpExtendedCommunityTransitive4OctetAsTypeChoiceEnum("route_target_subtype"), + ROUTE_ORIGIN_SUBTYPE: BgpExtendedCommunityTransitive4OctetAsTypeChoiceEnum("route_origin_subtype"), +} +func (obj *bgpExtendedCommunityTransitive4OctetAsType) Choice() BgpExtendedCommunityTransitive4OctetAsTypeChoiceEnum { + return BgpExtendedCommunityTransitive4OctetAsTypeChoiceEnum(obj.obj.Choice.Enum().String()) } // description is TBD -// Start returns a string -func (obj *patternFlowArpTargetHardwareAddrCounter) HasStart() bool { - return obj.obj.Start != nil +// Choice returns a string +func (obj *bgpExtendedCommunityTransitive4OctetAsType) HasChoice() bool { + return obj.obj.Choice != nil } -// description is TBD -// SetStart sets the string value in the PatternFlowArpTargetHardwareAddrCounter object -func (obj *patternFlowArpTargetHardwareAddrCounter) SetStart(value string) PatternFlowArpTargetHardwareAddrCounter { +func (obj *bgpExtendedCommunityTransitive4OctetAsType) SetChoice(value BgpExtendedCommunityTransitive4OctetAsTypeChoiceEnum) BgpExtendedCommunityTransitive4OctetAsType { + intValue, ok := otg.BgpExtendedCommunityTransitive4OctetAsType_Choice_Enum_value[string(value)] + if !ok { + obj.validationErrors = append(obj.validationErrors, fmt.Sprintf( + "%s is not a valid choice on BgpExtendedCommunityTransitive4OctetAsTypeChoiceEnum", string(value))) + return obj + } + enumValue := otg.BgpExtendedCommunityTransitive4OctetAsType_Choice_Enum(intValue) + obj.obj.Choice = &enumValue + obj.obj.RouteOriginSubtype = nil + obj.routeOriginSubtypeHolder = nil + obj.obj.RouteTargetSubtype = nil + obj.routeTargetSubtypeHolder = nil + + if value == BgpExtendedCommunityTransitive4OctetAsTypeChoice.ROUTE_TARGET_SUBTYPE { + obj.obj.RouteTargetSubtype = NewBgpExtendedCommunityTransitive4OctetAsTypeRouteTarget().Msg() + } + + if value == BgpExtendedCommunityTransitive4OctetAsTypeChoice.ROUTE_ORIGIN_SUBTYPE { + obj.obj.RouteOriginSubtype = NewBgpExtendedCommunityTransitive4OctetAsTypeRouteOrigin().Msg() + } - obj.obj.Start = &value return obj } // description is TBD -// Step returns a string -func (obj *patternFlowArpTargetHardwareAddrCounter) Step() string { - - return *obj.obj.Step - +// RouteTargetSubtype returns a BgpExtendedCommunityTransitive4OctetAsTypeRouteTarget +func (obj *bgpExtendedCommunityTransitive4OctetAsType) RouteTargetSubtype() BgpExtendedCommunityTransitive4OctetAsTypeRouteTarget { + if obj.obj.RouteTargetSubtype == nil { + obj.SetChoice(BgpExtendedCommunityTransitive4OctetAsTypeChoice.ROUTE_TARGET_SUBTYPE) + } + if obj.routeTargetSubtypeHolder == nil { + obj.routeTargetSubtypeHolder = &bgpExtendedCommunityTransitive4OctetAsTypeRouteTarget{obj: obj.obj.RouteTargetSubtype} + } + return obj.routeTargetSubtypeHolder } // description is TBD -// Step returns a string -func (obj *patternFlowArpTargetHardwareAddrCounter) HasStep() bool { - return obj.obj.Step != nil +// RouteTargetSubtype returns a BgpExtendedCommunityTransitive4OctetAsTypeRouteTarget +func (obj *bgpExtendedCommunityTransitive4OctetAsType) HasRouteTargetSubtype() bool { + return obj.obj.RouteTargetSubtype != nil } // description is TBD -// SetStep sets the string value in the PatternFlowArpTargetHardwareAddrCounter object -func (obj *patternFlowArpTargetHardwareAddrCounter) SetStep(value string) PatternFlowArpTargetHardwareAddrCounter { +// SetRouteTargetSubtype sets the BgpExtendedCommunityTransitive4OctetAsTypeRouteTarget value in the BgpExtendedCommunityTransitive4OctetAsType object +func (obj *bgpExtendedCommunityTransitive4OctetAsType) SetRouteTargetSubtype(value BgpExtendedCommunityTransitive4OctetAsTypeRouteTarget) BgpExtendedCommunityTransitive4OctetAsType { + obj.SetChoice(BgpExtendedCommunityTransitive4OctetAsTypeChoice.ROUTE_TARGET_SUBTYPE) + obj.routeTargetSubtypeHolder = nil + obj.obj.RouteTargetSubtype = value.Msg() - obj.obj.Step = &value return obj } // description is TBD -// Count returns a uint32 -func (obj *patternFlowArpTargetHardwareAddrCounter) Count() uint32 { - - return *obj.obj.Count - +// RouteOriginSubtype returns a BgpExtendedCommunityTransitive4OctetAsTypeRouteOrigin +func (obj *bgpExtendedCommunityTransitive4OctetAsType) RouteOriginSubtype() BgpExtendedCommunityTransitive4OctetAsTypeRouteOrigin { + if obj.obj.RouteOriginSubtype == nil { + obj.SetChoice(BgpExtendedCommunityTransitive4OctetAsTypeChoice.ROUTE_ORIGIN_SUBTYPE) + } + if obj.routeOriginSubtypeHolder == nil { + obj.routeOriginSubtypeHolder = &bgpExtendedCommunityTransitive4OctetAsTypeRouteOrigin{obj: obj.obj.RouteOriginSubtype} + } + return obj.routeOriginSubtypeHolder } // description is TBD -// Count returns a uint32 -func (obj *patternFlowArpTargetHardwareAddrCounter) HasCount() bool { - return obj.obj.Count != nil +// RouteOriginSubtype returns a BgpExtendedCommunityTransitive4OctetAsTypeRouteOrigin +func (obj *bgpExtendedCommunityTransitive4OctetAsType) HasRouteOriginSubtype() bool { + return obj.obj.RouteOriginSubtype != nil } // description is TBD -// SetCount sets the uint32 value in the PatternFlowArpTargetHardwareAddrCounter object -func (obj *patternFlowArpTargetHardwareAddrCounter) SetCount(value uint32) PatternFlowArpTargetHardwareAddrCounter { +// SetRouteOriginSubtype sets the BgpExtendedCommunityTransitive4OctetAsTypeRouteOrigin value in the BgpExtendedCommunityTransitive4OctetAsType object +func (obj *bgpExtendedCommunityTransitive4OctetAsType) SetRouteOriginSubtype(value BgpExtendedCommunityTransitive4OctetAsTypeRouteOrigin) BgpExtendedCommunityTransitive4OctetAsType { + obj.SetChoice(BgpExtendedCommunityTransitive4OctetAsTypeChoice.ROUTE_ORIGIN_SUBTYPE) + obj.routeOriginSubtypeHolder = nil + obj.obj.RouteOriginSubtype = value.Msg() - obj.obj.Count = &value return obj } -func (obj *patternFlowArpTargetHardwareAddrCounter) validateObj(vObj *validation, set_default bool) { +func (obj *bgpExtendedCommunityTransitive4OctetAsType) validateObj(vObj *validation, set_default bool) { if set_default { obj.setDefault() } - if obj.obj.Start != nil { - - err := obj.validateMac(obj.Start()) - if err != nil { - vObj.validationErrors = append(vObj.validationErrors, fmt.Sprintf("%s %s", err.Error(), "on PatternFlowArpTargetHardwareAddrCounter.Start")) - } - - } - - if obj.obj.Step != nil { - - err := obj.validateMac(obj.Step()) - if err != nil { - vObj.validationErrors = append(vObj.validationErrors, fmt.Sprintf("%s %s", err.Error(), "on PatternFlowArpTargetHardwareAddrCounter.Step")) - } + if obj.obj.RouteTargetSubtype != nil { + obj.RouteTargetSubtype().validateObj(vObj, set_default) } -} - -func (obj *patternFlowArpTargetHardwareAddrCounter) setDefault() { - if obj.obj.Start == nil { - obj.SetStart("00:00:00:00:00:00") - } - if obj.obj.Step == nil { - obj.SetStep("00:00:00:00:00:01") + if obj.obj.RouteOriginSubtype != nil { + + obj.RouteOriginSubtype().validateObj(vObj, set_default) } - if obj.obj.Count == nil { - obj.SetCount(1) + +} + +func (obj *bgpExtendedCommunityTransitive4OctetAsType) setDefault() { + if obj.obj.Choice == nil { + obj.SetChoice(BgpExtendedCommunityTransitive4OctetAsTypeChoice.ROUTE_TARGET_SUBTYPE) + } } -// ***** PatternFlowArpTargetHardwareAddrMetricTag ***** -type patternFlowArpTargetHardwareAddrMetricTag struct { +// ***** BgpExtendedCommunityTransitiveOpaqueType ***** +type bgpExtendedCommunityTransitiveOpaqueType struct { validation - obj *otg.PatternFlowArpTargetHardwareAddrMetricTag + obj *otg.BgpExtendedCommunityTransitiveOpaqueType + colorSubtypeHolder BgpExtendedCommunityTransitiveOpaqueTypeColor + encapsulationSubtypeHolder BgpExtendedCommunityTransitiveOpaqueTypeEncapsulation } -func NewPatternFlowArpTargetHardwareAddrMetricTag() PatternFlowArpTargetHardwareAddrMetricTag { - obj := patternFlowArpTargetHardwareAddrMetricTag{obj: &otg.PatternFlowArpTargetHardwareAddrMetricTag{}} +func NewBgpExtendedCommunityTransitiveOpaqueType() BgpExtendedCommunityTransitiveOpaqueType { + obj := bgpExtendedCommunityTransitiveOpaqueType{obj: &otg.BgpExtendedCommunityTransitiveOpaqueType{}} obj.setDefault() return &obj } -func (obj *patternFlowArpTargetHardwareAddrMetricTag) Msg() *otg.PatternFlowArpTargetHardwareAddrMetricTag { +func (obj *bgpExtendedCommunityTransitiveOpaqueType) Msg() *otg.BgpExtendedCommunityTransitiveOpaqueType { return obj.obj } -func (obj *patternFlowArpTargetHardwareAddrMetricTag) SetMsg(msg *otg.PatternFlowArpTargetHardwareAddrMetricTag) PatternFlowArpTargetHardwareAddrMetricTag { - +func (obj *bgpExtendedCommunityTransitiveOpaqueType) SetMsg(msg *otg.BgpExtendedCommunityTransitiveOpaqueType) BgpExtendedCommunityTransitiveOpaqueType { + obj.setNil() proto.Merge(obj.obj, msg) return obj } -func (obj *patternFlowArpTargetHardwareAddrMetricTag) ToProto() (*otg.PatternFlowArpTargetHardwareAddrMetricTag, error) { +func (obj *bgpExtendedCommunityTransitiveOpaqueType) ToProto() (*otg.BgpExtendedCommunityTransitiveOpaqueType, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -258092,7 +304640,7 @@ func (obj *patternFlowArpTargetHardwareAddrMetricTag) ToProto() (*otg.PatternFlo return obj.Msg(), nil } -func (obj *patternFlowArpTargetHardwareAddrMetricTag) FromProto(msg *otg.PatternFlowArpTargetHardwareAddrMetricTag) (PatternFlowArpTargetHardwareAddrMetricTag, error) { +func (obj *bgpExtendedCommunityTransitiveOpaqueType) FromProto(msg *otg.BgpExtendedCommunityTransitiveOpaqueType) (BgpExtendedCommunityTransitiveOpaqueType, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -258101,7 +304649,7 @@ func (obj *patternFlowArpTargetHardwareAddrMetricTag) FromProto(msg *otg.Pattern return newObj, nil } -func (obj *patternFlowArpTargetHardwareAddrMetricTag) ToPbText() (string, error) { +func (obj *bgpExtendedCommunityTransitiveOpaqueType) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -258113,12 +304661,12 @@ func (obj *patternFlowArpTargetHardwareAddrMetricTag) ToPbText() (string, error) return string(protoMarshal), nil } -func (obj *patternFlowArpTargetHardwareAddrMetricTag) FromPbText(value string) error { +func (obj *bgpExtendedCommunityTransitiveOpaqueType) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj } - + obj.setNil() vErr := obj.validateToAndFrom() if vErr != nil { return vErr @@ -258126,7 +304674,7 @@ func (obj *patternFlowArpTargetHardwareAddrMetricTag) FromPbText(value string) e return retObj } -func (obj *patternFlowArpTargetHardwareAddrMetricTag) ToYaml() (string, error) { +func (obj *bgpExtendedCommunityTransitiveOpaqueType) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -258147,7 +304695,7 @@ func (obj *patternFlowArpTargetHardwareAddrMetricTag) ToYaml() (string, error) { return string(data), nil } -func (obj *patternFlowArpTargetHardwareAddrMetricTag) FromYaml(value string) error { +func (obj *bgpExtendedCommunityTransitiveOpaqueType) FromYaml(value string) error { if value == "" { value = "{}" } @@ -258164,7 +304712,7 @@ func (obj *patternFlowArpTargetHardwareAddrMetricTag) FromYaml(value string) err return fmt.Errorf("unmarshal error %s", strings.Replace( uError.Error(), "\u00a0", " ", -1)[7:]) } - + obj.setNil() vErr := obj.validateToAndFrom() if vErr != nil { return vErr @@ -258172,7 +304720,7 @@ func (obj *patternFlowArpTargetHardwareAddrMetricTag) FromYaml(value string) err return nil } -func (obj *patternFlowArpTargetHardwareAddrMetricTag) ToJson() (string, error) { +func (obj *bgpExtendedCommunityTransitiveOpaqueType) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -258190,7 +304738,7 @@ func (obj *patternFlowArpTargetHardwareAddrMetricTag) ToJson() (string, error) { return string(data), nil } -func (obj *patternFlowArpTargetHardwareAddrMetricTag) FromJson(value string) error { +func (obj *bgpExtendedCommunityTransitiveOpaqueType) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -258203,7 +304751,7 @@ func (obj *patternFlowArpTargetHardwareAddrMetricTag) FromJson(value string) err return fmt.Errorf("unmarshal error %s", strings.Replace( uError.Error(), "\u00a0", " ", -1)[7:]) } - + obj.setNil() err := obj.validateToAndFrom() if err != nil { return err @@ -258211,19 +304759,19 @@ func (obj *patternFlowArpTargetHardwareAddrMetricTag) FromJson(value string) err return nil } -func (obj *patternFlowArpTargetHardwareAddrMetricTag) validateToAndFrom() error { +func (obj *bgpExtendedCommunityTransitiveOpaqueType) validateToAndFrom() error { // emptyVars() obj.validateObj(&obj.validation, true) return obj.validationResult() } -func (obj *patternFlowArpTargetHardwareAddrMetricTag) Validate() error { +func (obj *bgpExtendedCommunityTransitiveOpaqueType) Validate() error { // emptyVars() obj.validateObj(&obj.validation, false) return obj.validationResult() } -func (obj *patternFlowArpTargetHardwareAddrMetricTag) String() string { +func (obj *bgpExtendedCommunityTransitiveOpaqueType) String() string { str, err := obj.ToYaml() if err != nil { return err.Error() @@ -258231,12 +304779,12 @@ func (obj *patternFlowArpTargetHardwareAddrMetricTag) String() string { return str } -func (obj *patternFlowArpTargetHardwareAddrMetricTag) Clone() (PatternFlowArpTargetHardwareAddrMetricTag, error) { +func (obj *bgpExtendedCommunityTransitiveOpaqueType) Clone() (BgpExtendedCommunityTransitiveOpaqueType, error) { vErr := obj.Validate() if vErr != nil { return nil, vErr } - newObj := NewPatternFlowArpTargetHardwareAddrMetricTag() + newObj := NewBgpExtendedCommunityTransitiveOpaqueType() data, err := proto.Marshal(obj.Msg()) if err != nil { return nil, err @@ -258248,183 +304796,224 @@ func (obj *patternFlowArpTargetHardwareAddrMetricTag) Clone() (PatternFlowArpTar return newObj, nil } -// PatternFlowArpTargetHardwareAddrMetricTag is metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. -type PatternFlowArpTargetHardwareAddrMetricTag interface { +func (obj *bgpExtendedCommunityTransitiveOpaqueType) setNil() { + obj.colorSubtypeHolder = nil + obj.encapsulationSubtypeHolder = nil + obj.validationErrors = nil + obj.warnings = nil + obj.constraints = make(map[string]map[string]Constraints) +} + +// BgpExtendedCommunityTransitiveOpaqueType is the Transitive Opaque Extended Community is sent as type 0x03. +type BgpExtendedCommunityTransitiveOpaqueType interface { Validation - // Msg marshals PatternFlowArpTargetHardwareAddrMetricTag to protobuf object *otg.PatternFlowArpTargetHardwareAddrMetricTag + // Msg marshals BgpExtendedCommunityTransitiveOpaqueType to protobuf object *otg.BgpExtendedCommunityTransitiveOpaqueType // and doesn't set defaults - Msg() *otg.PatternFlowArpTargetHardwareAddrMetricTag - // SetMsg unmarshals PatternFlowArpTargetHardwareAddrMetricTag from protobuf object *otg.PatternFlowArpTargetHardwareAddrMetricTag + Msg() *otg.BgpExtendedCommunityTransitiveOpaqueType + // SetMsg unmarshals BgpExtendedCommunityTransitiveOpaqueType from protobuf object *otg.BgpExtendedCommunityTransitiveOpaqueType // and doesn't set defaults - SetMsg(*otg.PatternFlowArpTargetHardwareAddrMetricTag) PatternFlowArpTargetHardwareAddrMetricTag - // ToProto marshals PatternFlowArpTargetHardwareAddrMetricTag to protobuf object *otg.PatternFlowArpTargetHardwareAddrMetricTag - ToProto() (*otg.PatternFlowArpTargetHardwareAddrMetricTag, error) - // ToPbText marshals PatternFlowArpTargetHardwareAddrMetricTag to protobuf text + SetMsg(*otg.BgpExtendedCommunityTransitiveOpaqueType) BgpExtendedCommunityTransitiveOpaqueType + // ToProto marshals BgpExtendedCommunityTransitiveOpaqueType to protobuf object *otg.BgpExtendedCommunityTransitiveOpaqueType + ToProto() (*otg.BgpExtendedCommunityTransitiveOpaqueType, error) + // ToPbText marshals BgpExtendedCommunityTransitiveOpaqueType to protobuf text ToPbText() (string, error) - // ToYaml marshals PatternFlowArpTargetHardwareAddrMetricTag to YAML text + // ToYaml marshals BgpExtendedCommunityTransitiveOpaqueType to YAML text ToYaml() (string, error) - // ToJson marshals PatternFlowArpTargetHardwareAddrMetricTag to JSON text + // ToJson marshals BgpExtendedCommunityTransitiveOpaqueType to JSON text ToJson() (string, error) - // FromProto unmarshals PatternFlowArpTargetHardwareAddrMetricTag from protobuf object *otg.PatternFlowArpTargetHardwareAddrMetricTag - FromProto(msg *otg.PatternFlowArpTargetHardwareAddrMetricTag) (PatternFlowArpTargetHardwareAddrMetricTag, error) - // FromPbText unmarshals PatternFlowArpTargetHardwareAddrMetricTag from protobuf text + // FromProto unmarshals BgpExtendedCommunityTransitiveOpaqueType from protobuf object *otg.BgpExtendedCommunityTransitiveOpaqueType + FromProto(msg *otg.BgpExtendedCommunityTransitiveOpaqueType) (BgpExtendedCommunityTransitiveOpaqueType, error) + // FromPbText unmarshals BgpExtendedCommunityTransitiveOpaqueType from protobuf text FromPbText(value string) error - // FromYaml unmarshals PatternFlowArpTargetHardwareAddrMetricTag from YAML text + // FromYaml unmarshals BgpExtendedCommunityTransitiveOpaqueType from YAML text FromYaml(value string) error - // FromJson unmarshals PatternFlowArpTargetHardwareAddrMetricTag from JSON text + // FromJson unmarshals BgpExtendedCommunityTransitiveOpaqueType from JSON text FromJson(value string) error - // Validate validates PatternFlowArpTargetHardwareAddrMetricTag + // Validate validates BgpExtendedCommunityTransitiveOpaqueType Validate() error // A stringer function String() string // Clones the object - Clone() (PatternFlowArpTargetHardwareAddrMetricTag, error) + Clone() (BgpExtendedCommunityTransitiveOpaqueType, error) validateToAndFrom() error validateObj(vObj *validation, set_default bool) setDefault() - // Name returns string, set in PatternFlowArpTargetHardwareAddrMetricTag. - Name() string - // SetName assigns string provided by user to PatternFlowArpTargetHardwareAddrMetricTag - SetName(value string) PatternFlowArpTargetHardwareAddrMetricTag - // Offset returns uint32, set in PatternFlowArpTargetHardwareAddrMetricTag. - Offset() uint32 - // SetOffset assigns uint32 provided by user to PatternFlowArpTargetHardwareAddrMetricTag - SetOffset(value uint32) PatternFlowArpTargetHardwareAddrMetricTag - // HasOffset checks if Offset has been set in PatternFlowArpTargetHardwareAddrMetricTag - HasOffset() bool - // Length returns uint32, set in PatternFlowArpTargetHardwareAddrMetricTag. - Length() uint32 - // SetLength assigns uint32 provided by user to PatternFlowArpTargetHardwareAddrMetricTag - SetLength(value uint32) PatternFlowArpTargetHardwareAddrMetricTag - // HasLength checks if Length has been set in PatternFlowArpTargetHardwareAddrMetricTag - HasLength() bool + // Choice returns BgpExtendedCommunityTransitiveOpaqueTypeChoiceEnum, set in BgpExtendedCommunityTransitiveOpaqueType + Choice() BgpExtendedCommunityTransitiveOpaqueTypeChoiceEnum + // SetChoice assigns BgpExtendedCommunityTransitiveOpaqueTypeChoiceEnum provided by user to BgpExtendedCommunityTransitiveOpaqueType + SetChoice(value BgpExtendedCommunityTransitiveOpaqueTypeChoiceEnum) BgpExtendedCommunityTransitiveOpaqueType + // HasChoice checks if Choice has been set in BgpExtendedCommunityTransitiveOpaqueType + HasChoice() bool + // ColorSubtype returns BgpExtendedCommunityTransitiveOpaqueTypeColor, set in BgpExtendedCommunityTransitiveOpaqueType. + // BgpExtendedCommunityTransitiveOpaqueTypeColor is the Color Community contains locally administrator defined 'color' value which is used in conjunction with Encapsulation attribute to decide whether a data packet can be transmitted on a certain tunnel or not. It is defined in RFC9012 and sent with sub-type as 0x0b. + ColorSubtype() BgpExtendedCommunityTransitiveOpaqueTypeColor + // SetColorSubtype assigns BgpExtendedCommunityTransitiveOpaqueTypeColor provided by user to BgpExtendedCommunityTransitiveOpaqueType. + // BgpExtendedCommunityTransitiveOpaqueTypeColor is the Color Community contains locally administrator defined 'color' value which is used in conjunction with Encapsulation attribute to decide whether a data packet can be transmitted on a certain tunnel or not. It is defined in RFC9012 and sent with sub-type as 0x0b. + SetColorSubtype(value BgpExtendedCommunityTransitiveOpaqueTypeColor) BgpExtendedCommunityTransitiveOpaqueType + // HasColorSubtype checks if ColorSubtype has been set in BgpExtendedCommunityTransitiveOpaqueType + HasColorSubtype() bool + // EncapsulationSubtype returns BgpExtendedCommunityTransitiveOpaqueTypeEncapsulation, set in BgpExtendedCommunityTransitiveOpaqueType. + // BgpExtendedCommunityTransitiveOpaqueTypeEncapsulation is this identifies the type of tunneling technology being signalled. It is defined in RFC9012 and sent with sub-type as 0x0c. + EncapsulationSubtype() BgpExtendedCommunityTransitiveOpaqueTypeEncapsulation + // SetEncapsulationSubtype assigns BgpExtendedCommunityTransitiveOpaqueTypeEncapsulation provided by user to BgpExtendedCommunityTransitiveOpaqueType. + // BgpExtendedCommunityTransitiveOpaqueTypeEncapsulation is this identifies the type of tunneling technology being signalled. It is defined in RFC9012 and sent with sub-type as 0x0c. + SetEncapsulationSubtype(value BgpExtendedCommunityTransitiveOpaqueTypeEncapsulation) BgpExtendedCommunityTransitiveOpaqueType + // HasEncapsulationSubtype checks if EncapsulationSubtype has been set in BgpExtendedCommunityTransitiveOpaqueType + HasEncapsulationSubtype() bool + setNil() } -// Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field -// Name returns a string -func (obj *patternFlowArpTargetHardwareAddrMetricTag) Name() string { - - return *obj.obj.Name +type BgpExtendedCommunityTransitiveOpaqueTypeChoiceEnum string +// Enum of Choice on BgpExtendedCommunityTransitiveOpaqueType +var BgpExtendedCommunityTransitiveOpaqueTypeChoice = struct { + COLOR_SUBTYPE BgpExtendedCommunityTransitiveOpaqueTypeChoiceEnum + ENCAPSULATION_SUBTYPE BgpExtendedCommunityTransitiveOpaqueTypeChoiceEnum +}{ + COLOR_SUBTYPE: BgpExtendedCommunityTransitiveOpaqueTypeChoiceEnum("color_subtype"), + ENCAPSULATION_SUBTYPE: BgpExtendedCommunityTransitiveOpaqueTypeChoiceEnum("encapsulation_subtype"), } -// Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field -// SetName sets the string value in the PatternFlowArpTargetHardwareAddrMetricTag object -func (obj *patternFlowArpTargetHardwareAddrMetricTag) SetName(value string) PatternFlowArpTargetHardwareAddrMetricTag { +func (obj *bgpExtendedCommunityTransitiveOpaqueType) Choice() BgpExtendedCommunityTransitiveOpaqueTypeChoiceEnum { + return BgpExtendedCommunityTransitiveOpaqueTypeChoiceEnum(obj.obj.Choice.Enum().String()) +} - obj.obj.Name = &value - return obj +// description is TBD +// Choice returns a string +func (obj *bgpExtendedCommunityTransitiveOpaqueType) HasChoice() bool { + return obj.obj.Choice != nil } -// Offset in bits relative to start of corresponding header field -// Offset returns a uint32 -func (obj *patternFlowArpTargetHardwareAddrMetricTag) Offset() uint32 { +func (obj *bgpExtendedCommunityTransitiveOpaqueType) SetChoice(value BgpExtendedCommunityTransitiveOpaqueTypeChoiceEnum) BgpExtendedCommunityTransitiveOpaqueType { + intValue, ok := otg.BgpExtendedCommunityTransitiveOpaqueType_Choice_Enum_value[string(value)] + if !ok { + obj.validationErrors = append(obj.validationErrors, fmt.Sprintf( + "%s is not a valid choice on BgpExtendedCommunityTransitiveOpaqueTypeChoiceEnum", string(value))) + return obj + } + enumValue := otg.BgpExtendedCommunityTransitiveOpaqueType_Choice_Enum(intValue) + obj.obj.Choice = &enumValue + obj.obj.EncapsulationSubtype = nil + obj.encapsulationSubtypeHolder = nil + obj.obj.ColorSubtype = nil + obj.colorSubtypeHolder = nil - return *obj.obj.Offset + if value == BgpExtendedCommunityTransitiveOpaqueTypeChoice.COLOR_SUBTYPE { + obj.obj.ColorSubtype = NewBgpExtendedCommunityTransitiveOpaqueTypeColor().Msg() + } -} + if value == BgpExtendedCommunityTransitiveOpaqueTypeChoice.ENCAPSULATION_SUBTYPE { + obj.obj.EncapsulationSubtype = NewBgpExtendedCommunityTransitiveOpaqueTypeEncapsulation().Msg() + } -// Offset in bits relative to start of corresponding header field -// Offset returns a uint32 -func (obj *patternFlowArpTargetHardwareAddrMetricTag) HasOffset() bool { - return obj.obj.Offset != nil + return obj } -// Offset in bits relative to start of corresponding header field -// SetOffset sets the uint32 value in the PatternFlowArpTargetHardwareAddrMetricTag object -func (obj *patternFlowArpTargetHardwareAddrMetricTag) SetOffset(value uint32) PatternFlowArpTargetHardwareAddrMetricTag { +// description is TBD +// ColorSubtype returns a BgpExtendedCommunityTransitiveOpaqueTypeColor +func (obj *bgpExtendedCommunityTransitiveOpaqueType) ColorSubtype() BgpExtendedCommunityTransitiveOpaqueTypeColor { + if obj.obj.ColorSubtype == nil { + obj.SetChoice(BgpExtendedCommunityTransitiveOpaqueTypeChoice.COLOR_SUBTYPE) + } + if obj.colorSubtypeHolder == nil { + obj.colorSubtypeHolder = &bgpExtendedCommunityTransitiveOpaqueTypeColor{obj: obj.obj.ColorSubtype} + } + return obj.colorSubtypeHolder +} - obj.obj.Offset = &value - return obj +// description is TBD +// ColorSubtype returns a BgpExtendedCommunityTransitiveOpaqueTypeColor +func (obj *bgpExtendedCommunityTransitiveOpaqueType) HasColorSubtype() bool { + return obj.obj.ColorSubtype != nil } -// Number of bits to track for metrics starting from configured offset of corresponding header field -// Length returns a uint32 -func (obj *patternFlowArpTargetHardwareAddrMetricTag) Length() uint32 { +// description is TBD +// SetColorSubtype sets the BgpExtendedCommunityTransitiveOpaqueTypeColor value in the BgpExtendedCommunityTransitiveOpaqueType object +func (obj *bgpExtendedCommunityTransitiveOpaqueType) SetColorSubtype(value BgpExtendedCommunityTransitiveOpaqueTypeColor) BgpExtendedCommunityTransitiveOpaqueType { + obj.SetChoice(BgpExtendedCommunityTransitiveOpaqueTypeChoice.COLOR_SUBTYPE) + obj.colorSubtypeHolder = nil + obj.obj.ColorSubtype = value.Msg() - return *obj.obj.Length + return obj +} +// description is TBD +// EncapsulationSubtype returns a BgpExtendedCommunityTransitiveOpaqueTypeEncapsulation +func (obj *bgpExtendedCommunityTransitiveOpaqueType) EncapsulationSubtype() BgpExtendedCommunityTransitiveOpaqueTypeEncapsulation { + if obj.obj.EncapsulationSubtype == nil { + obj.SetChoice(BgpExtendedCommunityTransitiveOpaqueTypeChoice.ENCAPSULATION_SUBTYPE) + } + if obj.encapsulationSubtypeHolder == nil { + obj.encapsulationSubtypeHolder = &bgpExtendedCommunityTransitiveOpaqueTypeEncapsulation{obj: obj.obj.EncapsulationSubtype} + } + return obj.encapsulationSubtypeHolder } -// Number of bits to track for metrics starting from configured offset of corresponding header field -// Length returns a uint32 -func (obj *patternFlowArpTargetHardwareAddrMetricTag) HasLength() bool { - return obj.obj.Length != nil +// description is TBD +// EncapsulationSubtype returns a BgpExtendedCommunityTransitiveOpaqueTypeEncapsulation +func (obj *bgpExtendedCommunityTransitiveOpaqueType) HasEncapsulationSubtype() bool { + return obj.obj.EncapsulationSubtype != nil } -// Number of bits to track for metrics starting from configured offset of corresponding header field -// SetLength sets the uint32 value in the PatternFlowArpTargetHardwareAddrMetricTag object -func (obj *patternFlowArpTargetHardwareAddrMetricTag) SetLength(value uint32) PatternFlowArpTargetHardwareAddrMetricTag { +// description is TBD +// SetEncapsulationSubtype sets the BgpExtendedCommunityTransitiveOpaqueTypeEncapsulation value in the BgpExtendedCommunityTransitiveOpaqueType object +func (obj *bgpExtendedCommunityTransitiveOpaqueType) SetEncapsulationSubtype(value BgpExtendedCommunityTransitiveOpaqueTypeEncapsulation) BgpExtendedCommunityTransitiveOpaqueType { + obj.SetChoice(BgpExtendedCommunityTransitiveOpaqueTypeChoice.ENCAPSULATION_SUBTYPE) + obj.encapsulationSubtypeHolder = nil + obj.obj.EncapsulationSubtype = value.Msg() - obj.obj.Length = &value return obj } -func (obj *patternFlowArpTargetHardwareAddrMetricTag) validateObj(vObj *validation, set_default bool) { +func (obj *bgpExtendedCommunityTransitiveOpaqueType) validateObj(vObj *validation, set_default bool) { if set_default { obj.setDefault() } - // Name is required - if obj.obj.Name == nil { - vObj.validationErrors = append(vObj.validationErrors, "Name is required field on interface PatternFlowArpTargetHardwareAddrMetricTag") - } - - if obj.obj.Offset != nil { - - if *obj.obj.Offset > 47 { - vObj.validationErrors = append( - vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowArpTargetHardwareAddrMetricTag.Offset <= 47 but Got %d", *obj.obj.Offset)) - } + if obj.obj.ColorSubtype != nil { + obj.ColorSubtype().validateObj(vObj, set_default) } - if obj.obj.Length != nil { - - if *obj.obj.Length < 1 || *obj.obj.Length > 48 { - vObj.validationErrors = append( - vObj.validationErrors, - fmt.Sprintf("1 <= PatternFlowArpTargetHardwareAddrMetricTag.Length <= 48 but Got %d", *obj.obj.Length)) - } + if obj.obj.EncapsulationSubtype != nil { + obj.EncapsulationSubtype().validateObj(vObj, set_default) } } -func (obj *patternFlowArpTargetHardwareAddrMetricTag) setDefault() { - if obj.obj.Offset == nil { - obj.SetOffset(0) - } - if obj.obj.Length == nil { - obj.SetLength(48) +func (obj *bgpExtendedCommunityTransitiveOpaqueType) setDefault() { + if obj.obj.Choice == nil { + obj.SetChoice(BgpExtendedCommunityTransitiveOpaqueTypeChoice.COLOR_SUBTYPE) + } } -// ***** PatternFlowArpTargetProtocolAddrCounter ***** -type patternFlowArpTargetProtocolAddrCounter struct { +// ***** BgpExtendedCommunityTransitiveEvpnType ***** +type bgpExtendedCommunityTransitiveEvpnType struct { validation - obj *otg.PatternFlowArpTargetProtocolAddrCounter + obj *otg.BgpExtendedCommunityTransitiveEvpnType + routerMacSubtypeHolder BgpExtendedCommunityTransitiveEvpnTypeRouterMac } -func NewPatternFlowArpTargetProtocolAddrCounter() PatternFlowArpTargetProtocolAddrCounter { - obj := patternFlowArpTargetProtocolAddrCounter{obj: &otg.PatternFlowArpTargetProtocolAddrCounter{}} +func NewBgpExtendedCommunityTransitiveEvpnType() BgpExtendedCommunityTransitiveEvpnType { + obj := bgpExtendedCommunityTransitiveEvpnType{obj: &otg.BgpExtendedCommunityTransitiveEvpnType{}} obj.setDefault() return &obj } -func (obj *patternFlowArpTargetProtocolAddrCounter) Msg() *otg.PatternFlowArpTargetProtocolAddrCounter { +func (obj *bgpExtendedCommunityTransitiveEvpnType) Msg() *otg.BgpExtendedCommunityTransitiveEvpnType { return obj.obj } -func (obj *patternFlowArpTargetProtocolAddrCounter) SetMsg(msg *otg.PatternFlowArpTargetProtocolAddrCounter) PatternFlowArpTargetProtocolAddrCounter { - +func (obj *bgpExtendedCommunityTransitiveEvpnType) SetMsg(msg *otg.BgpExtendedCommunityTransitiveEvpnType) BgpExtendedCommunityTransitiveEvpnType { + obj.setNil() proto.Merge(obj.obj, msg) return obj } -func (obj *patternFlowArpTargetProtocolAddrCounter) ToProto() (*otg.PatternFlowArpTargetProtocolAddrCounter, error) { +func (obj *bgpExtendedCommunityTransitiveEvpnType) ToProto() (*otg.BgpExtendedCommunityTransitiveEvpnType, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -258432,7 +305021,7 @@ func (obj *patternFlowArpTargetProtocolAddrCounter) ToProto() (*otg.PatternFlowA return obj.Msg(), nil } -func (obj *patternFlowArpTargetProtocolAddrCounter) FromProto(msg *otg.PatternFlowArpTargetProtocolAddrCounter) (PatternFlowArpTargetProtocolAddrCounter, error) { +func (obj *bgpExtendedCommunityTransitiveEvpnType) FromProto(msg *otg.BgpExtendedCommunityTransitiveEvpnType) (BgpExtendedCommunityTransitiveEvpnType, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -258441,7 +305030,7 @@ func (obj *patternFlowArpTargetProtocolAddrCounter) FromProto(msg *otg.PatternFl return newObj, nil } -func (obj *patternFlowArpTargetProtocolAddrCounter) ToPbText() (string, error) { +func (obj *bgpExtendedCommunityTransitiveEvpnType) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -258453,12 +305042,12 @@ func (obj *patternFlowArpTargetProtocolAddrCounter) ToPbText() (string, error) { return string(protoMarshal), nil } -func (obj *patternFlowArpTargetProtocolAddrCounter) FromPbText(value string) error { +func (obj *bgpExtendedCommunityTransitiveEvpnType) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj } - + obj.setNil() vErr := obj.validateToAndFrom() if vErr != nil { return vErr @@ -258466,7 +305055,7 @@ func (obj *patternFlowArpTargetProtocolAddrCounter) FromPbText(value string) err return retObj } -func (obj *patternFlowArpTargetProtocolAddrCounter) ToYaml() (string, error) { +func (obj *bgpExtendedCommunityTransitiveEvpnType) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -258487,7 +305076,7 @@ func (obj *patternFlowArpTargetProtocolAddrCounter) ToYaml() (string, error) { return string(data), nil } -func (obj *patternFlowArpTargetProtocolAddrCounter) FromYaml(value string) error { +func (obj *bgpExtendedCommunityTransitiveEvpnType) FromYaml(value string) error { if value == "" { value = "{}" } @@ -258504,7 +305093,7 @@ func (obj *patternFlowArpTargetProtocolAddrCounter) FromYaml(value string) error return fmt.Errorf("unmarshal error %s", strings.Replace( uError.Error(), "\u00a0", " ", -1)[7:]) } - + obj.setNil() vErr := obj.validateToAndFrom() if vErr != nil { return vErr @@ -258512,7 +305101,7 @@ func (obj *patternFlowArpTargetProtocolAddrCounter) FromYaml(value string) error return nil } -func (obj *patternFlowArpTargetProtocolAddrCounter) ToJson() (string, error) { +func (obj *bgpExtendedCommunityTransitiveEvpnType) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -258530,7 +305119,7 @@ func (obj *patternFlowArpTargetProtocolAddrCounter) ToJson() (string, error) { return string(data), nil } -func (obj *patternFlowArpTargetProtocolAddrCounter) FromJson(value string) error { +func (obj *bgpExtendedCommunityTransitiveEvpnType) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -258543,7 +305132,7 @@ func (obj *patternFlowArpTargetProtocolAddrCounter) FromJson(value string) error return fmt.Errorf("unmarshal error %s", strings.Replace( uError.Error(), "\u00a0", " ", -1)[7:]) } - + obj.setNil() err := obj.validateToAndFrom() if err != nil { return err @@ -258551,19 +305140,19 @@ func (obj *patternFlowArpTargetProtocolAddrCounter) FromJson(value string) error return nil } -func (obj *patternFlowArpTargetProtocolAddrCounter) validateToAndFrom() error { +func (obj *bgpExtendedCommunityTransitiveEvpnType) validateToAndFrom() error { // emptyVars() obj.validateObj(&obj.validation, true) return obj.validationResult() } -func (obj *patternFlowArpTargetProtocolAddrCounter) Validate() error { +func (obj *bgpExtendedCommunityTransitiveEvpnType) Validate() error { // emptyVars() obj.validateObj(&obj.validation, false) return obj.validationResult() } -func (obj *patternFlowArpTargetProtocolAddrCounter) String() string { +func (obj *bgpExtendedCommunityTransitiveEvpnType) String() string { str, err := obj.ToYaml() if err != nil { return err.Error() @@ -258571,12 +305160,12 @@ func (obj *patternFlowArpTargetProtocolAddrCounter) String() string { return str } -func (obj *patternFlowArpTargetProtocolAddrCounter) Clone() (PatternFlowArpTargetProtocolAddrCounter, error) { +func (obj *bgpExtendedCommunityTransitiveEvpnType) Clone() (BgpExtendedCommunityTransitiveEvpnType, error) { vErr := obj.Validate() if vErr != nil { return nil, vErr } - newObj := NewPatternFlowArpTargetProtocolAddrCounter() + newObj := NewBgpExtendedCommunityTransitiveEvpnType() data, err := proto.Marshal(obj.Msg()) if err != nil { return nil, err @@ -258588,187 +305177,174 @@ func (obj *patternFlowArpTargetProtocolAddrCounter) Clone() (PatternFlowArpTarge return newObj, nil } -// PatternFlowArpTargetProtocolAddrCounter is ipv4 counter pattern -type PatternFlowArpTargetProtocolAddrCounter interface { +func (obj *bgpExtendedCommunityTransitiveEvpnType) setNil() { + obj.routerMacSubtypeHolder = nil + obj.validationErrors = nil + obj.warnings = nil + obj.constraints = make(map[string]map[string]Constraints) +} + +// BgpExtendedCommunityTransitiveEvpnType is the Transitive EVPN Extended Community is sent as type 0x06 . +type BgpExtendedCommunityTransitiveEvpnType interface { Validation - // Msg marshals PatternFlowArpTargetProtocolAddrCounter to protobuf object *otg.PatternFlowArpTargetProtocolAddrCounter + // Msg marshals BgpExtendedCommunityTransitiveEvpnType to protobuf object *otg.BgpExtendedCommunityTransitiveEvpnType // and doesn't set defaults - Msg() *otg.PatternFlowArpTargetProtocolAddrCounter - // SetMsg unmarshals PatternFlowArpTargetProtocolAddrCounter from protobuf object *otg.PatternFlowArpTargetProtocolAddrCounter + Msg() *otg.BgpExtendedCommunityTransitiveEvpnType + // SetMsg unmarshals BgpExtendedCommunityTransitiveEvpnType from protobuf object *otg.BgpExtendedCommunityTransitiveEvpnType // and doesn't set defaults - SetMsg(*otg.PatternFlowArpTargetProtocolAddrCounter) PatternFlowArpTargetProtocolAddrCounter - // ToProto marshals PatternFlowArpTargetProtocolAddrCounter to protobuf object *otg.PatternFlowArpTargetProtocolAddrCounter - ToProto() (*otg.PatternFlowArpTargetProtocolAddrCounter, error) - // ToPbText marshals PatternFlowArpTargetProtocolAddrCounter to protobuf text + SetMsg(*otg.BgpExtendedCommunityTransitiveEvpnType) BgpExtendedCommunityTransitiveEvpnType + // ToProto marshals BgpExtendedCommunityTransitiveEvpnType to protobuf object *otg.BgpExtendedCommunityTransitiveEvpnType + ToProto() (*otg.BgpExtendedCommunityTransitiveEvpnType, error) + // ToPbText marshals BgpExtendedCommunityTransitiveEvpnType to protobuf text ToPbText() (string, error) - // ToYaml marshals PatternFlowArpTargetProtocolAddrCounter to YAML text + // ToYaml marshals BgpExtendedCommunityTransitiveEvpnType to YAML text ToYaml() (string, error) - // ToJson marshals PatternFlowArpTargetProtocolAddrCounter to JSON text + // ToJson marshals BgpExtendedCommunityTransitiveEvpnType to JSON text ToJson() (string, error) - // FromProto unmarshals PatternFlowArpTargetProtocolAddrCounter from protobuf object *otg.PatternFlowArpTargetProtocolAddrCounter - FromProto(msg *otg.PatternFlowArpTargetProtocolAddrCounter) (PatternFlowArpTargetProtocolAddrCounter, error) - // FromPbText unmarshals PatternFlowArpTargetProtocolAddrCounter from protobuf text + // FromProto unmarshals BgpExtendedCommunityTransitiveEvpnType from protobuf object *otg.BgpExtendedCommunityTransitiveEvpnType + FromProto(msg *otg.BgpExtendedCommunityTransitiveEvpnType) (BgpExtendedCommunityTransitiveEvpnType, error) + // FromPbText unmarshals BgpExtendedCommunityTransitiveEvpnType from protobuf text FromPbText(value string) error - // FromYaml unmarshals PatternFlowArpTargetProtocolAddrCounter from YAML text + // FromYaml unmarshals BgpExtendedCommunityTransitiveEvpnType from YAML text FromYaml(value string) error - // FromJson unmarshals PatternFlowArpTargetProtocolAddrCounter from JSON text + // FromJson unmarshals BgpExtendedCommunityTransitiveEvpnType from JSON text FromJson(value string) error - // Validate validates PatternFlowArpTargetProtocolAddrCounter + // Validate validates BgpExtendedCommunityTransitiveEvpnType Validate() error // A stringer function String() string // Clones the object - Clone() (PatternFlowArpTargetProtocolAddrCounter, error) + Clone() (BgpExtendedCommunityTransitiveEvpnType, error) validateToAndFrom() error validateObj(vObj *validation, set_default bool) setDefault() - // Start returns string, set in PatternFlowArpTargetProtocolAddrCounter. - Start() string - // SetStart assigns string provided by user to PatternFlowArpTargetProtocolAddrCounter - SetStart(value string) PatternFlowArpTargetProtocolAddrCounter - // HasStart checks if Start has been set in PatternFlowArpTargetProtocolAddrCounter - HasStart() bool - // Step returns string, set in PatternFlowArpTargetProtocolAddrCounter. - Step() string - // SetStep assigns string provided by user to PatternFlowArpTargetProtocolAddrCounter - SetStep(value string) PatternFlowArpTargetProtocolAddrCounter - // HasStep checks if Step has been set in PatternFlowArpTargetProtocolAddrCounter - HasStep() bool - // Count returns uint32, set in PatternFlowArpTargetProtocolAddrCounter. - Count() uint32 - // SetCount assigns uint32 provided by user to PatternFlowArpTargetProtocolAddrCounter - SetCount(value uint32) PatternFlowArpTargetProtocolAddrCounter - // HasCount checks if Count has been set in PatternFlowArpTargetProtocolAddrCounter - HasCount() bool + // Choice returns BgpExtendedCommunityTransitiveEvpnTypeChoiceEnum, set in BgpExtendedCommunityTransitiveEvpnType + Choice() BgpExtendedCommunityTransitiveEvpnTypeChoiceEnum + // SetChoice assigns BgpExtendedCommunityTransitiveEvpnTypeChoiceEnum provided by user to BgpExtendedCommunityTransitiveEvpnType + SetChoice(value BgpExtendedCommunityTransitiveEvpnTypeChoiceEnum) BgpExtendedCommunityTransitiveEvpnType + // HasChoice checks if Choice has been set in BgpExtendedCommunityTransitiveEvpnType + HasChoice() bool + // RouterMacSubtype returns BgpExtendedCommunityTransitiveEvpnTypeRouterMac, set in BgpExtendedCommunityTransitiveEvpnType. + // BgpExtendedCommunityTransitiveEvpnTypeRouterMac is the Router MAC EVPN Community is defined in RFC9135 and normally sent only for EVPN Type-2 Routes . It is sent with sub-type 0x03. + RouterMacSubtype() BgpExtendedCommunityTransitiveEvpnTypeRouterMac + // SetRouterMacSubtype assigns BgpExtendedCommunityTransitiveEvpnTypeRouterMac provided by user to BgpExtendedCommunityTransitiveEvpnType. + // BgpExtendedCommunityTransitiveEvpnTypeRouterMac is the Router MAC EVPN Community is defined in RFC9135 and normally sent only for EVPN Type-2 Routes . It is sent with sub-type 0x03. + SetRouterMacSubtype(value BgpExtendedCommunityTransitiveEvpnTypeRouterMac) BgpExtendedCommunityTransitiveEvpnType + // HasRouterMacSubtype checks if RouterMacSubtype has been set in BgpExtendedCommunityTransitiveEvpnType + HasRouterMacSubtype() bool + setNil() } -// description is TBD -// Start returns a string -func (obj *patternFlowArpTargetProtocolAddrCounter) Start() string { - - return *obj.obj.Start - -} +type BgpExtendedCommunityTransitiveEvpnTypeChoiceEnum string -// description is TBD -// Start returns a string -func (obj *patternFlowArpTargetProtocolAddrCounter) HasStart() bool { - return obj.obj.Start != nil +// Enum of Choice on BgpExtendedCommunityTransitiveEvpnType +var BgpExtendedCommunityTransitiveEvpnTypeChoice = struct { + ROUTER_MAC_SUBTYPE BgpExtendedCommunityTransitiveEvpnTypeChoiceEnum +}{ + ROUTER_MAC_SUBTYPE: BgpExtendedCommunityTransitiveEvpnTypeChoiceEnum("router_mac_subtype"), } -// description is TBD -// SetStart sets the string value in the PatternFlowArpTargetProtocolAddrCounter object -func (obj *patternFlowArpTargetProtocolAddrCounter) SetStart(value string) PatternFlowArpTargetProtocolAddrCounter { - - obj.obj.Start = &value - return obj +func (obj *bgpExtendedCommunityTransitiveEvpnType) Choice() BgpExtendedCommunityTransitiveEvpnTypeChoiceEnum { + return BgpExtendedCommunityTransitiveEvpnTypeChoiceEnum(obj.obj.Choice.Enum().String()) } // description is TBD -// Step returns a string -func (obj *patternFlowArpTargetProtocolAddrCounter) Step() string { - - return *obj.obj.Step - +// Choice returns a string +func (obj *bgpExtendedCommunityTransitiveEvpnType) HasChoice() bool { + return obj.obj.Choice != nil } -// description is TBD -// Step returns a string -func (obj *patternFlowArpTargetProtocolAddrCounter) HasStep() bool { - return obj.obj.Step != nil -} +func (obj *bgpExtendedCommunityTransitiveEvpnType) SetChoice(value BgpExtendedCommunityTransitiveEvpnTypeChoiceEnum) BgpExtendedCommunityTransitiveEvpnType { + intValue, ok := otg.BgpExtendedCommunityTransitiveEvpnType_Choice_Enum_value[string(value)] + if !ok { + obj.validationErrors = append(obj.validationErrors, fmt.Sprintf( + "%s is not a valid choice on BgpExtendedCommunityTransitiveEvpnTypeChoiceEnum", string(value))) + return obj + } + enumValue := otg.BgpExtendedCommunityTransitiveEvpnType_Choice_Enum(intValue) + obj.obj.Choice = &enumValue + obj.obj.RouterMacSubtype = nil + obj.routerMacSubtypeHolder = nil -// description is TBD -// SetStep sets the string value in the PatternFlowArpTargetProtocolAddrCounter object -func (obj *patternFlowArpTargetProtocolAddrCounter) SetStep(value string) PatternFlowArpTargetProtocolAddrCounter { + if value == BgpExtendedCommunityTransitiveEvpnTypeChoice.ROUTER_MAC_SUBTYPE { + obj.obj.RouterMacSubtype = NewBgpExtendedCommunityTransitiveEvpnTypeRouterMac().Msg() + } - obj.obj.Step = &value return obj } // description is TBD -// Count returns a uint32 -func (obj *patternFlowArpTargetProtocolAddrCounter) Count() uint32 { - - return *obj.obj.Count - +// RouterMacSubtype returns a BgpExtendedCommunityTransitiveEvpnTypeRouterMac +func (obj *bgpExtendedCommunityTransitiveEvpnType) RouterMacSubtype() BgpExtendedCommunityTransitiveEvpnTypeRouterMac { + if obj.obj.RouterMacSubtype == nil { + obj.SetChoice(BgpExtendedCommunityTransitiveEvpnTypeChoice.ROUTER_MAC_SUBTYPE) + } + if obj.routerMacSubtypeHolder == nil { + obj.routerMacSubtypeHolder = &bgpExtendedCommunityTransitiveEvpnTypeRouterMac{obj: obj.obj.RouterMacSubtype} + } + return obj.routerMacSubtypeHolder } // description is TBD -// Count returns a uint32 -func (obj *patternFlowArpTargetProtocolAddrCounter) HasCount() bool { - return obj.obj.Count != nil +// RouterMacSubtype returns a BgpExtendedCommunityTransitiveEvpnTypeRouterMac +func (obj *bgpExtendedCommunityTransitiveEvpnType) HasRouterMacSubtype() bool { + return obj.obj.RouterMacSubtype != nil } // description is TBD -// SetCount sets the uint32 value in the PatternFlowArpTargetProtocolAddrCounter object -func (obj *patternFlowArpTargetProtocolAddrCounter) SetCount(value uint32) PatternFlowArpTargetProtocolAddrCounter { +// SetRouterMacSubtype sets the BgpExtendedCommunityTransitiveEvpnTypeRouterMac value in the BgpExtendedCommunityTransitiveEvpnType object +func (obj *bgpExtendedCommunityTransitiveEvpnType) SetRouterMacSubtype(value BgpExtendedCommunityTransitiveEvpnTypeRouterMac) BgpExtendedCommunityTransitiveEvpnType { + obj.SetChoice(BgpExtendedCommunityTransitiveEvpnTypeChoice.ROUTER_MAC_SUBTYPE) + obj.routerMacSubtypeHolder = nil + obj.obj.RouterMacSubtype = value.Msg() - obj.obj.Count = &value return obj } -func (obj *patternFlowArpTargetProtocolAddrCounter) validateObj(vObj *validation, set_default bool) { +func (obj *bgpExtendedCommunityTransitiveEvpnType) validateObj(vObj *validation, set_default bool) { if set_default { obj.setDefault() } - if obj.obj.Start != nil { - - err := obj.validateIpv4(obj.Start()) - if err != nil { - vObj.validationErrors = append(vObj.validationErrors, fmt.Sprintf("%s %s", err.Error(), "on PatternFlowArpTargetProtocolAddrCounter.Start")) - } - - } - - if obj.obj.Step != nil { - - err := obj.validateIpv4(obj.Step()) - if err != nil { - vObj.validationErrors = append(vObj.validationErrors, fmt.Sprintf("%s %s", err.Error(), "on PatternFlowArpTargetProtocolAddrCounter.Step")) - } + if obj.obj.RouterMacSubtype != nil { + obj.RouterMacSubtype().validateObj(vObj, set_default) } } -func (obj *patternFlowArpTargetProtocolAddrCounter) setDefault() { - if obj.obj.Start == nil { - obj.SetStart("0.0.0.0") - } - if obj.obj.Step == nil { - obj.SetStep("0.0.0.1") - } - if obj.obj.Count == nil { - obj.SetCount(1) +func (obj *bgpExtendedCommunityTransitiveEvpnType) setDefault() { + if obj.obj.Choice == nil { + obj.SetChoice(BgpExtendedCommunityTransitiveEvpnTypeChoice.ROUTER_MAC_SUBTYPE) + } } -// ***** PatternFlowArpTargetProtocolAddrMetricTag ***** -type patternFlowArpTargetProtocolAddrMetricTag struct { +// ***** BgpExtendedCommunityNonTransitive2OctetAsType ***** +type bgpExtendedCommunityNonTransitive2OctetAsType struct { validation - obj *otg.PatternFlowArpTargetProtocolAddrMetricTag + obj *otg.BgpExtendedCommunityNonTransitive2OctetAsType + linkBandwidthSubtypeHolder BgpExtendedCommunityNonTransitive2OctetAsTypeLinkBandwidth } -func NewPatternFlowArpTargetProtocolAddrMetricTag() PatternFlowArpTargetProtocolAddrMetricTag { - obj := patternFlowArpTargetProtocolAddrMetricTag{obj: &otg.PatternFlowArpTargetProtocolAddrMetricTag{}} +func NewBgpExtendedCommunityNonTransitive2OctetAsType() BgpExtendedCommunityNonTransitive2OctetAsType { + obj := bgpExtendedCommunityNonTransitive2OctetAsType{obj: &otg.BgpExtendedCommunityNonTransitive2OctetAsType{}} obj.setDefault() return &obj } -func (obj *patternFlowArpTargetProtocolAddrMetricTag) Msg() *otg.PatternFlowArpTargetProtocolAddrMetricTag { +func (obj *bgpExtendedCommunityNonTransitive2OctetAsType) Msg() *otg.BgpExtendedCommunityNonTransitive2OctetAsType { return obj.obj } -func (obj *patternFlowArpTargetProtocolAddrMetricTag) SetMsg(msg *otg.PatternFlowArpTargetProtocolAddrMetricTag) PatternFlowArpTargetProtocolAddrMetricTag { - +func (obj *bgpExtendedCommunityNonTransitive2OctetAsType) SetMsg(msg *otg.BgpExtendedCommunityNonTransitive2OctetAsType) BgpExtendedCommunityNonTransitive2OctetAsType { + obj.setNil() proto.Merge(obj.obj, msg) return obj } -func (obj *patternFlowArpTargetProtocolAddrMetricTag) ToProto() (*otg.PatternFlowArpTargetProtocolAddrMetricTag, error) { +func (obj *bgpExtendedCommunityNonTransitive2OctetAsType) ToProto() (*otg.BgpExtendedCommunityNonTransitive2OctetAsType, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -258776,7 +305352,7 @@ func (obj *patternFlowArpTargetProtocolAddrMetricTag) ToProto() (*otg.PatternFlo return obj.Msg(), nil } -func (obj *patternFlowArpTargetProtocolAddrMetricTag) FromProto(msg *otg.PatternFlowArpTargetProtocolAddrMetricTag) (PatternFlowArpTargetProtocolAddrMetricTag, error) { +func (obj *bgpExtendedCommunityNonTransitive2OctetAsType) FromProto(msg *otg.BgpExtendedCommunityNonTransitive2OctetAsType) (BgpExtendedCommunityNonTransitive2OctetAsType, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -258785,7 +305361,7 @@ func (obj *patternFlowArpTargetProtocolAddrMetricTag) FromProto(msg *otg.Pattern return newObj, nil } -func (obj *patternFlowArpTargetProtocolAddrMetricTag) ToPbText() (string, error) { +func (obj *bgpExtendedCommunityNonTransitive2OctetAsType) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -258797,12 +305373,12 @@ func (obj *patternFlowArpTargetProtocolAddrMetricTag) ToPbText() (string, error) return string(protoMarshal), nil } -func (obj *patternFlowArpTargetProtocolAddrMetricTag) FromPbText(value string) error { +func (obj *bgpExtendedCommunityNonTransitive2OctetAsType) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj } - + obj.setNil() vErr := obj.validateToAndFrom() if vErr != nil { return vErr @@ -258810,7 +305386,7 @@ func (obj *patternFlowArpTargetProtocolAddrMetricTag) FromPbText(value string) e return retObj } -func (obj *patternFlowArpTargetProtocolAddrMetricTag) ToYaml() (string, error) { +func (obj *bgpExtendedCommunityNonTransitive2OctetAsType) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -258831,7 +305407,7 @@ func (obj *patternFlowArpTargetProtocolAddrMetricTag) ToYaml() (string, error) { return string(data), nil } -func (obj *patternFlowArpTargetProtocolAddrMetricTag) FromYaml(value string) error { +func (obj *bgpExtendedCommunityNonTransitive2OctetAsType) FromYaml(value string) error { if value == "" { value = "{}" } @@ -258848,7 +305424,7 @@ func (obj *patternFlowArpTargetProtocolAddrMetricTag) FromYaml(value string) err return fmt.Errorf("unmarshal error %s", strings.Replace( uError.Error(), "\u00a0", " ", -1)[7:]) } - + obj.setNil() vErr := obj.validateToAndFrom() if vErr != nil { return vErr @@ -258856,7 +305432,7 @@ func (obj *patternFlowArpTargetProtocolAddrMetricTag) FromYaml(value string) err return nil } -func (obj *patternFlowArpTargetProtocolAddrMetricTag) ToJson() (string, error) { +func (obj *bgpExtendedCommunityNonTransitive2OctetAsType) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -258874,7 +305450,7 @@ func (obj *patternFlowArpTargetProtocolAddrMetricTag) ToJson() (string, error) { return string(data), nil } -func (obj *patternFlowArpTargetProtocolAddrMetricTag) FromJson(value string) error { +func (obj *bgpExtendedCommunityNonTransitive2OctetAsType) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -258887,7 +305463,7 @@ func (obj *patternFlowArpTargetProtocolAddrMetricTag) FromJson(value string) err return fmt.Errorf("unmarshal error %s", strings.Replace( uError.Error(), "\u00a0", " ", -1)[7:]) } - + obj.setNil() err := obj.validateToAndFrom() if err != nil { return err @@ -258895,19 +305471,19 @@ func (obj *patternFlowArpTargetProtocolAddrMetricTag) FromJson(value string) err return nil } -func (obj *patternFlowArpTargetProtocolAddrMetricTag) validateToAndFrom() error { +func (obj *bgpExtendedCommunityNonTransitive2OctetAsType) validateToAndFrom() error { // emptyVars() obj.validateObj(&obj.validation, true) return obj.validationResult() } -func (obj *patternFlowArpTargetProtocolAddrMetricTag) Validate() error { +func (obj *bgpExtendedCommunityNonTransitive2OctetAsType) Validate() error { // emptyVars() obj.validateObj(&obj.validation, false) return obj.validationResult() } -func (obj *patternFlowArpTargetProtocolAddrMetricTag) String() string { +func (obj *bgpExtendedCommunityNonTransitive2OctetAsType) String() string { str, err := obj.ToYaml() if err != nil { return err.Error() @@ -258915,12 +305491,12 @@ func (obj *patternFlowArpTargetProtocolAddrMetricTag) String() string { return str } -func (obj *patternFlowArpTargetProtocolAddrMetricTag) Clone() (PatternFlowArpTargetProtocolAddrMetricTag, error) { +func (obj *bgpExtendedCommunityNonTransitive2OctetAsType) Clone() (BgpExtendedCommunityNonTransitive2OctetAsType, error) { vErr := obj.Validate() if vErr != nil { return nil, vErr } - newObj := NewPatternFlowArpTargetProtocolAddrMetricTag() + newObj := NewBgpExtendedCommunityNonTransitive2OctetAsType() data, err := proto.Marshal(obj.Msg()) if err != nil { return nil, err @@ -258932,186 +305508,173 @@ func (obj *patternFlowArpTargetProtocolAddrMetricTag) Clone() (PatternFlowArpTar return newObj, nil } -// PatternFlowArpTargetProtocolAddrMetricTag is metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. -type PatternFlowArpTargetProtocolAddrMetricTag interface { +func (obj *bgpExtendedCommunityNonTransitive2OctetAsType) setNil() { + obj.linkBandwidthSubtypeHolder = nil + obj.validationErrors = nil + obj.warnings = nil + obj.constraints = make(map[string]map[string]Constraints) +} + +// BgpExtendedCommunityNonTransitive2OctetAsType is the Non-Transitive Two-Octet AS-Specific Extended Community is sent as type 0x40. +type BgpExtendedCommunityNonTransitive2OctetAsType interface { Validation - // Msg marshals PatternFlowArpTargetProtocolAddrMetricTag to protobuf object *otg.PatternFlowArpTargetProtocolAddrMetricTag + // Msg marshals BgpExtendedCommunityNonTransitive2OctetAsType to protobuf object *otg.BgpExtendedCommunityNonTransitive2OctetAsType // and doesn't set defaults - Msg() *otg.PatternFlowArpTargetProtocolAddrMetricTag - // SetMsg unmarshals PatternFlowArpTargetProtocolAddrMetricTag from protobuf object *otg.PatternFlowArpTargetProtocolAddrMetricTag + Msg() *otg.BgpExtendedCommunityNonTransitive2OctetAsType + // SetMsg unmarshals BgpExtendedCommunityNonTransitive2OctetAsType from protobuf object *otg.BgpExtendedCommunityNonTransitive2OctetAsType // and doesn't set defaults - SetMsg(*otg.PatternFlowArpTargetProtocolAddrMetricTag) PatternFlowArpTargetProtocolAddrMetricTag - // ToProto marshals PatternFlowArpTargetProtocolAddrMetricTag to protobuf object *otg.PatternFlowArpTargetProtocolAddrMetricTag - ToProto() (*otg.PatternFlowArpTargetProtocolAddrMetricTag, error) - // ToPbText marshals PatternFlowArpTargetProtocolAddrMetricTag to protobuf text + SetMsg(*otg.BgpExtendedCommunityNonTransitive2OctetAsType) BgpExtendedCommunityNonTransitive2OctetAsType + // ToProto marshals BgpExtendedCommunityNonTransitive2OctetAsType to protobuf object *otg.BgpExtendedCommunityNonTransitive2OctetAsType + ToProto() (*otg.BgpExtendedCommunityNonTransitive2OctetAsType, error) + // ToPbText marshals BgpExtendedCommunityNonTransitive2OctetAsType to protobuf text ToPbText() (string, error) - // ToYaml marshals PatternFlowArpTargetProtocolAddrMetricTag to YAML text + // ToYaml marshals BgpExtendedCommunityNonTransitive2OctetAsType to YAML text ToYaml() (string, error) - // ToJson marshals PatternFlowArpTargetProtocolAddrMetricTag to JSON text + // ToJson marshals BgpExtendedCommunityNonTransitive2OctetAsType to JSON text ToJson() (string, error) - // FromProto unmarshals PatternFlowArpTargetProtocolAddrMetricTag from protobuf object *otg.PatternFlowArpTargetProtocolAddrMetricTag - FromProto(msg *otg.PatternFlowArpTargetProtocolAddrMetricTag) (PatternFlowArpTargetProtocolAddrMetricTag, error) - // FromPbText unmarshals PatternFlowArpTargetProtocolAddrMetricTag from protobuf text + // FromProto unmarshals BgpExtendedCommunityNonTransitive2OctetAsType from protobuf object *otg.BgpExtendedCommunityNonTransitive2OctetAsType + FromProto(msg *otg.BgpExtendedCommunityNonTransitive2OctetAsType) (BgpExtendedCommunityNonTransitive2OctetAsType, error) + // FromPbText unmarshals BgpExtendedCommunityNonTransitive2OctetAsType from protobuf text FromPbText(value string) error - // FromYaml unmarshals PatternFlowArpTargetProtocolAddrMetricTag from YAML text + // FromYaml unmarshals BgpExtendedCommunityNonTransitive2OctetAsType from YAML text FromYaml(value string) error - // FromJson unmarshals PatternFlowArpTargetProtocolAddrMetricTag from JSON text + // FromJson unmarshals BgpExtendedCommunityNonTransitive2OctetAsType from JSON text FromJson(value string) error - // Validate validates PatternFlowArpTargetProtocolAddrMetricTag + // Validate validates BgpExtendedCommunityNonTransitive2OctetAsType Validate() error // A stringer function String() string // Clones the object - Clone() (PatternFlowArpTargetProtocolAddrMetricTag, error) + Clone() (BgpExtendedCommunityNonTransitive2OctetAsType, error) validateToAndFrom() error validateObj(vObj *validation, set_default bool) setDefault() - // Name returns string, set in PatternFlowArpTargetProtocolAddrMetricTag. - Name() string - // SetName assigns string provided by user to PatternFlowArpTargetProtocolAddrMetricTag - SetName(value string) PatternFlowArpTargetProtocolAddrMetricTag - // Offset returns uint32, set in PatternFlowArpTargetProtocolAddrMetricTag. - Offset() uint32 - // SetOffset assigns uint32 provided by user to PatternFlowArpTargetProtocolAddrMetricTag - SetOffset(value uint32) PatternFlowArpTargetProtocolAddrMetricTag - // HasOffset checks if Offset has been set in PatternFlowArpTargetProtocolAddrMetricTag - HasOffset() bool - // Length returns uint32, set in PatternFlowArpTargetProtocolAddrMetricTag. - Length() uint32 - // SetLength assigns uint32 provided by user to PatternFlowArpTargetProtocolAddrMetricTag - SetLength(value uint32) PatternFlowArpTargetProtocolAddrMetricTag - // HasLength checks if Length has been set in PatternFlowArpTargetProtocolAddrMetricTag - HasLength() bool + // Choice returns BgpExtendedCommunityNonTransitive2OctetAsTypeChoiceEnum, set in BgpExtendedCommunityNonTransitive2OctetAsType + Choice() BgpExtendedCommunityNonTransitive2OctetAsTypeChoiceEnum + // SetChoice assigns BgpExtendedCommunityNonTransitive2OctetAsTypeChoiceEnum provided by user to BgpExtendedCommunityNonTransitive2OctetAsType + SetChoice(value BgpExtendedCommunityNonTransitive2OctetAsTypeChoiceEnum) BgpExtendedCommunityNonTransitive2OctetAsType + // HasChoice checks if Choice has been set in BgpExtendedCommunityNonTransitive2OctetAsType + HasChoice() bool + // LinkBandwidthSubtype returns BgpExtendedCommunityNonTransitive2OctetAsTypeLinkBandwidth, set in BgpExtendedCommunityNonTransitive2OctetAsType. + // BgpExtendedCommunityNonTransitive2OctetAsTypeLinkBandwidth is the Link Bandwidth Extended Community attribute is defined in draft-ietf-idr-link-bandwidth. It is sent with sub-type as 0x04. + LinkBandwidthSubtype() BgpExtendedCommunityNonTransitive2OctetAsTypeLinkBandwidth + // SetLinkBandwidthSubtype assigns BgpExtendedCommunityNonTransitive2OctetAsTypeLinkBandwidth provided by user to BgpExtendedCommunityNonTransitive2OctetAsType. + // BgpExtendedCommunityNonTransitive2OctetAsTypeLinkBandwidth is the Link Bandwidth Extended Community attribute is defined in draft-ietf-idr-link-bandwidth. It is sent with sub-type as 0x04. + SetLinkBandwidthSubtype(value BgpExtendedCommunityNonTransitive2OctetAsTypeLinkBandwidth) BgpExtendedCommunityNonTransitive2OctetAsType + // HasLinkBandwidthSubtype checks if LinkBandwidthSubtype has been set in BgpExtendedCommunityNonTransitive2OctetAsType + HasLinkBandwidthSubtype() bool + setNil() } -// Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field -// Name returns a string -func (obj *patternFlowArpTargetProtocolAddrMetricTag) Name() string { - - return *obj.obj.Name +type BgpExtendedCommunityNonTransitive2OctetAsTypeChoiceEnum string +// Enum of Choice on BgpExtendedCommunityNonTransitive2OctetAsType +var BgpExtendedCommunityNonTransitive2OctetAsTypeChoice = struct { + LINK_BANDWIDTH_SUBTYPE BgpExtendedCommunityNonTransitive2OctetAsTypeChoiceEnum +}{ + LINK_BANDWIDTH_SUBTYPE: BgpExtendedCommunityNonTransitive2OctetAsTypeChoiceEnum("link_bandwidth_subtype"), } -// Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field -// SetName sets the string value in the PatternFlowArpTargetProtocolAddrMetricTag object -func (obj *patternFlowArpTargetProtocolAddrMetricTag) SetName(value string) PatternFlowArpTargetProtocolAddrMetricTag { - - obj.obj.Name = &value - return obj +func (obj *bgpExtendedCommunityNonTransitive2OctetAsType) Choice() BgpExtendedCommunityNonTransitive2OctetAsTypeChoiceEnum { + return BgpExtendedCommunityNonTransitive2OctetAsTypeChoiceEnum(obj.obj.Choice.Enum().String()) } -// Offset in bits relative to start of corresponding header field -// Offset returns a uint32 -func (obj *patternFlowArpTargetProtocolAddrMetricTag) Offset() uint32 { - - return *obj.obj.Offset - +// description is TBD +// Choice returns a string +func (obj *bgpExtendedCommunityNonTransitive2OctetAsType) HasChoice() bool { + return obj.obj.Choice != nil } -// Offset in bits relative to start of corresponding header field -// Offset returns a uint32 -func (obj *patternFlowArpTargetProtocolAddrMetricTag) HasOffset() bool { - return obj.obj.Offset != nil -} +func (obj *bgpExtendedCommunityNonTransitive2OctetAsType) SetChoice(value BgpExtendedCommunityNonTransitive2OctetAsTypeChoiceEnum) BgpExtendedCommunityNonTransitive2OctetAsType { + intValue, ok := otg.BgpExtendedCommunityNonTransitive2OctetAsType_Choice_Enum_value[string(value)] + if !ok { + obj.validationErrors = append(obj.validationErrors, fmt.Sprintf( + "%s is not a valid choice on BgpExtendedCommunityNonTransitive2OctetAsTypeChoiceEnum", string(value))) + return obj + } + enumValue := otg.BgpExtendedCommunityNonTransitive2OctetAsType_Choice_Enum(intValue) + obj.obj.Choice = &enumValue + obj.obj.LinkBandwidthSubtype = nil + obj.linkBandwidthSubtypeHolder = nil -// Offset in bits relative to start of corresponding header field -// SetOffset sets the uint32 value in the PatternFlowArpTargetProtocolAddrMetricTag object -func (obj *patternFlowArpTargetProtocolAddrMetricTag) SetOffset(value uint32) PatternFlowArpTargetProtocolAddrMetricTag { + if value == BgpExtendedCommunityNonTransitive2OctetAsTypeChoice.LINK_BANDWIDTH_SUBTYPE { + obj.obj.LinkBandwidthSubtype = NewBgpExtendedCommunityNonTransitive2OctetAsTypeLinkBandwidth().Msg() + } - obj.obj.Offset = &value return obj } -// Number of bits to track for metrics starting from configured offset of corresponding header field -// Length returns a uint32 -func (obj *patternFlowArpTargetProtocolAddrMetricTag) Length() uint32 { - - return *obj.obj.Length - +// description is TBD +// LinkBandwidthSubtype returns a BgpExtendedCommunityNonTransitive2OctetAsTypeLinkBandwidth +func (obj *bgpExtendedCommunityNonTransitive2OctetAsType) LinkBandwidthSubtype() BgpExtendedCommunityNonTransitive2OctetAsTypeLinkBandwidth { + if obj.obj.LinkBandwidthSubtype == nil { + obj.SetChoice(BgpExtendedCommunityNonTransitive2OctetAsTypeChoice.LINK_BANDWIDTH_SUBTYPE) + } + if obj.linkBandwidthSubtypeHolder == nil { + obj.linkBandwidthSubtypeHolder = &bgpExtendedCommunityNonTransitive2OctetAsTypeLinkBandwidth{obj: obj.obj.LinkBandwidthSubtype} + } + return obj.linkBandwidthSubtypeHolder } -// Number of bits to track for metrics starting from configured offset of corresponding header field -// Length returns a uint32 -func (obj *patternFlowArpTargetProtocolAddrMetricTag) HasLength() bool { - return obj.obj.Length != nil +// description is TBD +// LinkBandwidthSubtype returns a BgpExtendedCommunityNonTransitive2OctetAsTypeLinkBandwidth +func (obj *bgpExtendedCommunityNonTransitive2OctetAsType) HasLinkBandwidthSubtype() bool { + return obj.obj.LinkBandwidthSubtype != nil } -// Number of bits to track for metrics starting from configured offset of corresponding header field -// SetLength sets the uint32 value in the PatternFlowArpTargetProtocolAddrMetricTag object -func (obj *patternFlowArpTargetProtocolAddrMetricTag) SetLength(value uint32) PatternFlowArpTargetProtocolAddrMetricTag { +// description is TBD +// SetLinkBandwidthSubtype sets the BgpExtendedCommunityNonTransitive2OctetAsTypeLinkBandwidth value in the BgpExtendedCommunityNonTransitive2OctetAsType object +func (obj *bgpExtendedCommunityNonTransitive2OctetAsType) SetLinkBandwidthSubtype(value BgpExtendedCommunityNonTransitive2OctetAsTypeLinkBandwidth) BgpExtendedCommunityNonTransitive2OctetAsType { + obj.SetChoice(BgpExtendedCommunityNonTransitive2OctetAsTypeChoice.LINK_BANDWIDTH_SUBTYPE) + obj.linkBandwidthSubtypeHolder = nil + obj.obj.LinkBandwidthSubtype = value.Msg() - obj.obj.Length = &value return obj } -func (obj *patternFlowArpTargetProtocolAddrMetricTag) validateObj(vObj *validation, set_default bool) { +func (obj *bgpExtendedCommunityNonTransitive2OctetAsType) validateObj(vObj *validation, set_default bool) { if set_default { obj.setDefault() } - // Name is required - if obj.obj.Name == nil { - vObj.validationErrors = append(vObj.validationErrors, "Name is required field on interface PatternFlowArpTargetProtocolAddrMetricTag") - } - - if obj.obj.Offset != nil { - - if *obj.obj.Offset > 31 { - vObj.validationErrors = append( - vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowArpTargetProtocolAddrMetricTag.Offset <= 31 but Got %d", *obj.obj.Offset)) - } - - } - - if obj.obj.Length != nil { - - if *obj.obj.Length < 1 || *obj.obj.Length > 32 { - vObj.validationErrors = append( - vObj.validationErrors, - fmt.Sprintf("1 <= PatternFlowArpTargetProtocolAddrMetricTag.Length <= 32 but Got %d", *obj.obj.Length)) - } + if obj.obj.LinkBandwidthSubtype != nil { + obj.LinkBandwidthSubtype().validateObj(vObj, set_default) } } -func (obj *patternFlowArpTargetProtocolAddrMetricTag) setDefault() { - if obj.obj.Offset == nil { - obj.SetOffset(0) - } - if obj.obj.Length == nil { - obj.SetLength(32) +func (obj *bgpExtendedCommunityNonTransitive2OctetAsType) setDefault() { + if obj.obj.Choice == nil { + obj.SetChoice(BgpExtendedCommunityNonTransitive2OctetAsTypeChoice.LINK_BANDWIDTH_SUBTYPE) + } } -// ***** PatternFlowIcmpEchoType ***** -type patternFlowIcmpEchoType struct { +// ***** BgpExtendedCommunityCustomType ***** +type bgpExtendedCommunityCustomType struct { validation - obj *otg.PatternFlowIcmpEchoType - incrementHolder PatternFlowIcmpEchoTypeCounter - decrementHolder PatternFlowIcmpEchoTypeCounter - metricTagsHolder PatternFlowIcmpEchoTypePatternFlowIcmpEchoTypeMetricTagIter + obj *otg.BgpExtendedCommunityCustomType } -func NewPatternFlowIcmpEchoType() PatternFlowIcmpEchoType { - obj := patternFlowIcmpEchoType{obj: &otg.PatternFlowIcmpEchoType{}} +func NewBgpExtendedCommunityCustomType() BgpExtendedCommunityCustomType { + obj := bgpExtendedCommunityCustomType{obj: &otg.BgpExtendedCommunityCustomType{}} obj.setDefault() return &obj } -func (obj *patternFlowIcmpEchoType) Msg() *otg.PatternFlowIcmpEchoType { +func (obj *bgpExtendedCommunityCustomType) Msg() *otg.BgpExtendedCommunityCustomType { return obj.obj } -func (obj *patternFlowIcmpEchoType) SetMsg(msg *otg.PatternFlowIcmpEchoType) PatternFlowIcmpEchoType { - obj.setNil() +func (obj *bgpExtendedCommunityCustomType) SetMsg(msg *otg.BgpExtendedCommunityCustomType) BgpExtendedCommunityCustomType { + proto.Merge(obj.obj, msg) return obj } -func (obj *patternFlowIcmpEchoType) ToProto() (*otg.PatternFlowIcmpEchoType, error) { +func (obj *bgpExtendedCommunityCustomType) ToProto() (*otg.BgpExtendedCommunityCustomType, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -259119,7 +305682,7 @@ func (obj *patternFlowIcmpEchoType) ToProto() (*otg.PatternFlowIcmpEchoType, err return obj.Msg(), nil } -func (obj *patternFlowIcmpEchoType) FromProto(msg *otg.PatternFlowIcmpEchoType) (PatternFlowIcmpEchoType, error) { +func (obj *bgpExtendedCommunityCustomType) FromProto(msg *otg.BgpExtendedCommunityCustomType) (BgpExtendedCommunityCustomType, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -259128,7 +305691,7 @@ func (obj *patternFlowIcmpEchoType) FromProto(msg *otg.PatternFlowIcmpEchoType) return newObj, nil } -func (obj *patternFlowIcmpEchoType) ToPbText() (string, error) { +func (obj *bgpExtendedCommunityCustomType) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -259140,12 +305703,12 @@ func (obj *patternFlowIcmpEchoType) ToPbText() (string, error) { return string(protoMarshal), nil } -func (obj *patternFlowIcmpEchoType) FromPbText(value string) error { +func (obj *bgpExtendedCommunityCustomType) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj } - obj.setNil() + vErr := obj.validateToAndFrom() if vErr != nil { return vErr @@ -259153,7 +305716,7 @@ func (obj *patternFlowIcmpEchoType) FromPbText(value string) error { return retObj } -func (obj *patternFlowIcmpEchoType) ToYaml() (string, error) { +func (obj *bgpExtendedCommunityCustomType) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -259174,7 +305737,7 @@ func (obj *patternFlowIcmpEchoType) ToYaml() (string, error) { return string(data), nil } -func (obj *patternFlowIcmpEchoType) FromYaml(value string) error { +func (obj *bgpExtendedCommunityCustomType) FromYaml(value string) error { if value == "" { value = "{}" } @@ -259191,510 +305754,289 @@ func (obj *patternFlowIcmpEchoType) FromYaml(value string) error { return fmt.Errorf("unmarshal error %s", strings.Replace( uError.Error(), "\u00a0", " ", -1)[7:]) } - obj.setNil() - vErr := obj.validateToAndFrom() - if vErr != nil { - return vErr - } - return nil -} -func (obj *patternFlowIcmpEchoType) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { - return "", vErr - } - opts := protojson.MarshalOptions{ - UseProtoNames: true, - AllowPartial: true, - EmitUnpopulated: false, - Indent: " ", - } - data, err := opts.Marshal(obj.Msg()) - if err != nil { - return "", err - } - return string(data), nil -} - -func (obj *patternFlowIcmpEchoType) FromJson(value string) error { - opts := protojson.UnmarshalOptions{ - AllowPartial: true, - DiscardUnknown: false, - } - if value == "" { - value = "{}" - } - uError := opts.Unmarshal([]byte(value), obj.Msg()) - if uError != nil { - return fmt.Errorf("unmarshal error %s", strings.Replace( - uError.Error(), "\u00a0", " ", -1)[7:]) - } - obj.setNil() - err := obj.validateToAndFrom() - if err != nil { - return err - } - return nil -} - -func (obj *patternFlowIcmpEchoType) validateToAndFrom() error { - // emptyVars() - obj.validateObj(&obj.validation, true) - return obj.validationResult() -} - -func (obj *patternFlowIcmpEchoType) Validate() error { - // emptyVars() - obj.validateObj(&obj.validation, false) - return obj.validationResult() -} - -func (obj *patternFlowIcmpEchoType) String() string { - str, err := obj.ToYaml() - if err != nil { - return err.Error() - } - return str -} - -func (obj *patternFlowIcmpEchoType) Clone() (PatternFlowIcmpEchoType, error) { - vErr := obj.Validate() - if vErr != nil { - return nil, vErr - } - newObj := NewPatternFlowIcmpEchoType() - data, err := proto.Marshal(obj.Msg()) - if err != nil { - return nil, err - } - pbErr := proto.Unmarshal(data, newObj.Msg()) - if pbErr != nil { - return nil, pbErr - } - return newObj, nil -} - -func (obj *patternFlowIcmpEchoType) setNil() { - obj.incrementHolder = nil - obj.decrementHolder = nil - obj.metricTagsHolder = nil - obj.validationErrors = nil - obj.warnings = nil - obj.constraints = make(map[string]map[string]Constraints) -} - -// PatternFlowIcmpEchoType is the type of ICMP echo packet -type PatternFlowIcmpEchoType interface { - Validation - // Msg marshals PatternFlowIcmpEchoType to protobuf object *otg.PatternFlowIcmpEchoType - // and doesn't set defaults - Msg() *otg.PatternFlowIcmpEchoType - // SetMsg unmarshals PatternFlowIcmpEchoType from protobuf object *otg.PatternFlowIcmpEchoType - // and doesn't set defaults - SetMsg(*otg.PatternFlowIcmpEchoType) PatternFlowIcmpEchoType - // ToProto marshals PatternFlowIcmpEchoType to protobuf object *otg.PatternFlowIcmpEchoType - ToProto() (*otg.PatternFlowIcmpEchoType, error) - // ToPbText marshals PatternFlowIcmpEchoType to protobuf text - ToPbText() (string, error) - // ToYaml marshals PatternFlowIcmpEchoType to YAML text - ToYaml() (string, error) - // ToJson marshals PatternFlowIcmpEchoType to JSON text - ToJson() (string, error) - // FromProto unmarshals PatternFlowIcmpEchoType from protobuf object *otg.PatternFlowIcmpEchoType - FromProto(msg *otg.PatternFlowIcmpEchoType) (PatternFlowIcmpEchoType, error) - // FromPbText unmarshals PatternFlowIcmpEchoType from protobuf text - FromPbText(value string) error - // FromYaml unmarshals PatternFlowIcmpEchoType from YAML text - FromYaml(value string) error - // FromJson unmarshals PatternFlowIcmpEchoType from JSON text - FromJson(value string) error - // Validate validates PatternFlowIcmpEchoType - Validate() error - // A stringer function - String() string - // Clones the object - Clone() (PatternFlowIcmpEchoType, error) - validateToAndFrom() error - validateObj(vObj *validation, set_default bool) - setDefault() - // Choice returns PatternFlowIcmpEchoTypeChoiceEnum, set in PatternFlowIcmpEchoType - Choice() PatternFlowIcmpEchoTypeChoiceEnum - // SetChoice assigns PatternFlowIcmpEchoTypeChoiceEnum provided by user to PatternFlowIcmpEchoType - SetChoice(value PatternFlowIcmpEchoTypeChoiceEnum) PatternFlowIcmpEchoType - // HasChoice checks if Choice has been set in PatternFlowIcmpEchoType - HasChoice() bool - // Value returns uint32, set in PatternFlowIcmpEchoType. - Value() uint32 - // SetValue assigns uint32 provided by user to PatternFlowIcmpEchoType - SetValue(value uint32) PatternFlowIcmpEchoType - // HasValue checks if Value has been set in PatternFlowIcmpEchoType - HasValue() bool - // Values returns []uint32, set in PatternFlowIcmpEchoType. - Values() []uint32 - // SetValues assigns []uint32 provided by user to PatternFlowIcmpEchoType - SetValues(value []uint32) PatternFlowIcmpEchoType - // Increment returns PatternFlowIcmpEchoTypeCounter, set in PatternFlowIcmpEchoType. - // PatternFlowIcmpEchoTypeCounter is integer counter pattern - Increment() PatternFlowIcmpEchoTypeCounter - // SetIncrement assigns PatternFlowIcmpEchoTypeCounter provided by user to PatternFlowIcmpEchoType. - // PatternFlowIcmpEchoTypeCounter is integer counter pattern - SetIncrement(value PatternFlowIcmpEchoTypeCounter) PatternFlowIcmpEchoType - // HasIncrement checks if Increment has been set in PatternFlowIcmpEchoType - HasIncrement() bool - // Decrement returns PatternFlowIcmpEchoTypeCounter, set in PatternFlowIcmpEchoType. - // PatternFlowIcmpEchoTypeCounter is integer counter pattern - Decrement() PatternFlowIcmpEchoTypeCounter - // SetDecrement assigns PatternFlowIcmpEchoTypeCounter provided by user to PatternFlowIcmpEchoType. - // PatternFlowIcmpEchoTypeCounter is integer counter pattern - SetDecrement(value PatternFlowIcmpEchoTypeCounter) PatternFlowIcmpEchoType - // HasDecrement checks if Decrement has been set in PatternFlowIcmpEchoType - HasDecrement() bool - // MetricTags returns PatternFlowIcmpEchoTypePatternFlowIcmpEchoTypeMetricTagIterIter, set in PatternFlowIcmpEchoType - MetricTags() PatternFlowIcmpEchoTypePatternFlowIcmpEchoTypeMetricTagIter - setNil() -} - -type PatternFlowIcmpEchoTypeChoiceEnum string - -// Enum of Choice on PatternFlowIcmpEchoType -var PatternFlowIcmpEchoTypeChoice = struct { - VALUE PatternFlowIcmpEchoTypeChoiceEnum - VALUES PatternFlowIcmpEchoTypeChoiceEnum - INCREMENT PatternFlowIcmpEchoTypeChoiceEnum - DECREMENT PatternFlowIcmpEchoTypeChoiceEnum -}{ - VALUE: PatternFlowIcmpEchoTypeChoiceEnum("value"), - VALUES: PatternFlowIcmpEchoTypeChoiceEnum("values"), - INCREMENT: PatternFlowIcmpEchoTypeChoiceEnum("increment"), - DECREMENT: PatternFlowIcmpEchoTypeChoiceEnum("decrement"), -} - -func (obj *patternFlowIcmpEchoType) Choice() PatternFlowIcmpEchoTypeChoiceEnum { - return PatternFlowIcmpEchoTypeChoiceEnum(obj.obj.Choice.Enum().String()) -} - -// description is TBD -// Choice returns a string -func (obj *patternFlowIcmpEchoType) HasChoice() bool { - return obj.obj.Choice != nil -} - -func (obj *patternFlowIcmpEchoType) SetChoice(value PatternFlowIcmpEchoTypeChoiceEnum) PatternFlowIcmpEchoType { - intValue, ok := otg.PatternFlowIcmpEchoType_Choice_Enum_value[string(value)] - if !ok { - obj.validationErrors = append(obj.validationErrors, fmt.Sprintf( - "%s is not a valid choice on PatternFlowIcmpEchoTypeChoiceEnum", string(value))) - return obj - } - enumValue := otg.PatternFlowIcmpEchoType_Choice_Enum(intValue) - obj.obj.Choice = &enumValue - obj.obj.Decrement = nil - obj.decrementHolder = nil - obj.obj.Increment = nil - obj.incrementHolder = nil - obj.obj.Values = nil - obj.obj.Value = nil - - if value == PatternFlowIcmpEchoTypeChoice.VALUE { - defaultValue := uint32(8) - obj.obj.Value = &defaultValue - } - - if value == PatternFlowIcmpEchoTypeChoice.VALUES { - defaultValue := []uint32{8} - obj.obj.Values = defaultValue + return vErr } + return nil +} - if value == PatternFlowIcmpEchoTypeChoice.INCREMENT { - obj.obj.Increment = NewPatternFlowIcmpEchoTypeCounter().Msg() +func (obj *bgpExtendedCommunityCustomType) ToJson() (string, error) { + vErr := obj.validateToAndFrom() + if vErr != nil { + return "", vErr } - - if value == PatternFlowIcmpEchoTypeChoice.DECREMENT { - obj.obj.Decrement = NewPatternFlowIcmpEchoTypeCounter().Msg() + opts := protojson.MarshalOptions{ + UseProtoNames: true, + AllowPartial: true, + EmitUnpopulated: false, + Indent: " ", } - - return obj + data, err := opts.Marshal(obj.Msg()) + if err != nil { + return "", err + } + return string(data), nil } -// description is TBD -// Value returns a uint32 -func (obj *patternFlowIcmpEchoType) Value() uint32 { - - if obj.obj.Value == nil { - obj.SetChoice(PatternFlowIcmpEchoTypeChoice.VALUE) +func (obj *bgpExtendedCommunityCustomType) FromJson(value string) error { + opts := protojson.UnmarshalOptions{ + AllowPartial: true, + DiscardUnknown: false, + } + if value == "" { + value = "{}" + } + uError := opts.Unmarshal([]byte(value), obj.Msg()) + if uError != nil { + return fmt.Errorf("unmarshal error %s", strings.Replace( + uError.Error(), "\u00a0", " ", -1)[7:]) } - return *obj.obj.Value - + err := obj.validateToAndFrom() + if err != nil { + return err + } + return nil } -// description is TBD -// Value returns a uint32 -func (obj *patternFlowIcmpEchoType) HasValue() bool { - return obj.obj.Value != nil +func (obj *bgpExtendedCommunityCustomType) validateToAndFrom() error { + // emptyVars() + obj.validateObj(&obj.validation, true) + return obj.validationResult() } -// description is TBD -// SetValue sets the uint32 value in the PatternFlowIcmpEchoType object -func (obj *patternFlowIcmpEchoType) SetValue(value uint32) PatternFlowIcmpEchoType { - obj.SetChoice(PatternFlowIcmpEchoTypeChoice.VALUE) - obj.obj.Value = &value - return obj +func (obj *bgpExtendedCommunityCustomType) Validate() error { + // emptyVars() + obj.validateObj(&obj.validation, false) + return obj.validationResult() } -// description is TBD -// Values returns a []uint32 -func (obj *patternFlowIcmpEchoType) Values() []uint32 { - if obj.obj.Values == nil { - obj.SetValues([]uint32{8}) +func (obj *bgpExtendedCommunityCustomType) String() string { + str, err := obj.ToYaml() + if err != nil { + return err.Error() } - return obj.obj.Values + return str } -// description is TBD -// SetValues sets the []uint32 value in the PatternFlowIcmpEchoType object -func (obj *patternFlowIcmpEchoType) SetValues(value []uint32) PatternFlowIcmpEchoType { - obj.SetChoice(PatternFlowIcmpEchoTypeChoice.VALUES) - if obj.obj.Values == nil { - obj.obj.Values = make([]uint32, 0) +func (obj *bgpExtendedCommunityCustomType) Clone() (BgpExtendedCommunityCustomType, error) { + vErr := obj.Validate() + if vErr != nil { + return nil, vErr } - obj.obj.Values = value - - return obj -} - -// description is TBD -// Increment returns a PatternFlowIcmpEchoTypeCounter -func (obj *patternFlowIcmpEchoType) Increment() PatternFlowIcmpEchoTypeCounter { - if obj.obj.Increment == nil { - obj.SetChoice(PatternFlowIcmpEchoTypeChoice.INCREMENT) + newObj := NewBgpExtendedCommunityCustomType() + data, err := proto.Marshal(obj.Msg()) + if err != nil { + return nil, err } - if obj.incrementHolder == nil { - obj.incrementHolder = &patternFlowIcmpEchoTypeCounter{obj: obj.obj.Increment} + pbErr := proto.Unmarshal(data, newObj.Msg()) + if pbErr != nil { + return nil, pbErr } - return obj.incrementHolder + return newObj, nil } -// description is TBD -// Increment returns a PatternFlowIcmpEchoTypeCounter -func (obj *patternFlowIcmpEchoType) HasIncrement() bool { - return obj.obj.Increment != nil +// BgpExtendedCommunityCustomType is add a custom Extended Community with a combination of types , sub-types and values not explicitly specified above or not defined yet. +type BgpExtendedCommunityCustomType interface { + Validation + // Msg marshals BgpExtendedCommunityCustomType to protobuf object *otg.BgpExtendedCommunityCustomType + // and doesn't set defaults + Msg() *otg.BgpExtendedCommunityCustomType + // SetMsg unmarshals BgpExtendedCommunityCustomType from protobuf object *otg.BgpExtendedCommunityCustomType + // and doesn't set defaults + SetMsg(*otg.BgpExtendedCommunityCustomType) BgpExtendedCommunityCustomType + // ToProto marshals BgpExtendedCommunityCustomType to protobuf object *otg.BgpExtendedCommunityCustomType + ToProto() (*otg.BgpExtendedCommunityCustomType, error) + // ToPbText marshals BgpExtendedCommunityCustomType to protobuf text + ToPbText() (string, error) + // ToYaml marshals BgpExtendedCommunityCustomType to YAML text + ToYaml() (string, error) + // ToJson marshals BgpExtendedCommunityCustomType to JSON text + ToJson() (string, error) + // FromProto unmarshals BgpExtendedCommunityCustomType from protobuf object *otg.BgpExtendedCommunityCustomType + FromProto(msg *otg.BgpExtendedCommunityCustomType) (BgpExtendedCommunityCustomType, error) + // FromPbText unmarshals BgpExtendedCommunityCustomType from protobuf text + FromPbText(value string) error + // FromYaml unmarshals BgpExtendedCommunityCustomType from YAML text + FromYaml(value string) error + // FromJson unmarshals BgpExtendedCommunityCustomType from JSON text + FromJson(value string) error + // Validate validates BgpExtendedCommunityCustomType + Validate() error + // A stringer function + String() string + // Clones the object + Clone() (BgpExtendedCommunityCustomType, error) + validateToAndFrom() error + validateObj(vObj *validation, set_default bool) + setDefault() + // CommunityType returns string, set in BgpExtendedCommunityCustomType. + CommunityType() string + // SetCommunityType assigns string provided by user to BgpExtendedCommunityCustomType + SetCommunityType(value string) BgpExtendedCommunityCustomType + // HasCommunityType checks if CommunityType has been set in BgpExtendedCommunityCustomType + HasCommunityType() bool + // CommunitySubtype returns string, set in BgpExtendedCommunityCustomType. + CommunitySubtype() string + // SetCommunitySubtype assigns string provided by user to BgpExtendedCommunityCustomType + SetCommunitySubtype(value string) BgpExtendedCommunityCustomType + // HasCommunitySubtype checks if CommunitySubtype has been set in BgpExtendedCommunityCustomType + HasCommunitySubtype() bool + // Value returns string, set in BgpExtendedCommunityCustomType. + Value() string + // SetValue assigns string provided by user to BgpExtendedCommunityCustomType + SetValue(value string) BgpExtendedCommunityCustomType + // HasValue checks if Value has been set in BgpExtendedCommunityCustomType + HasValue() bool } -// description is TBD -// SetIncrement sets the PatternFlowIcmpEchoTypeCounter value in the PatternFlowIcmpEchoType object -func (obj *patternFlowIcmpEchoType) SetIncrement(value PatternFlowIcmpEchoTypeCounter) PatternFlowIcmpEchoType { - obj.SetChoice(PatternFlowIcmpEchoTypeChoice.INCREMENT) - obj.incrementHolder = nil - obj.obj.Increment = value.Msg() +// The type to be set in the Extended Community attribute. Accepts hexadecimal input upto ff . +// CommunityType returns a string +func (obj *bgpExtendedCommunityCustomType) CommunityType() string { - return obj -} + return *obj.obj.CommunityType -// description is TBD -// Decrement returns a PatternFlowIcmpEchoTypeCounter -func (obj *patternFlowIcmpEchoType) Decrement() PatternFlowIcmpEchoTypeCounter { - if obj.obj.Decrement == nil { - obj.SetChoice(PatternFlowIcmpEchoTypeChoice.DECREMENT) - } - if obj.decrementHolder == nil { - obj.decrementHolder = &patternFlowIcmpEchoTypeCounter{obj: obj.obj.Decrement} - } - return obj.decrementHolder } -// description is TBD -// Decrement returns a PatternFlowIcmpEchoTypeCounter -func (obj *patternFlowIcmpEchoType) HasDecrement() bool { - return obj.obj.Decrement != nil +// The type to be set in the Extended Community attribute. Accepts hexadecimal input upto ff . +// CommunityType returns a string +func (obj *bgpExtendedCommunityCustomType) HasCommunityType() bool { + return obj.obj.CommunityType != nil } -// description is TBD -// SetDecrement sets the PatternFlowIcmpEchoTypeCounter value in the PatternFlowIcmpEchoType object -func (obj *patternFlowIcmpEchoType) SetDecrement(value PatternFlowIcmpEchoTypeCounter) PatternFlowIcmpEchoType { - obj.SetChoice(PatternFlowIcmpEchoTypeChoice.DECREMENT) - obj.decrementHolder = nil - obj.obj.Decrement = value.Msg() +// The type to be set in the Extended Community attribute. Accepts hexadecimal input upto ff . +// SetCommunityType sets the string value in the BgpExtendedCommunityCustomType object +func (obj *bgpExtendedCommunityCustomType) SetCommunityType(value string) BgpExtendedCommunityCustomType { + obj.obj.CommunityType = &value return obj } -// One or more metric tags can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. -// MetricTags returns a []PatternFlowIcmpEchoTypeMetricTag -func (obj *patternFlowIcmpEchoType) MetricTags() PatternFlowIcmpEchoTypePatternFlowIcmpEchoTypeMetricTagIter { - if len(obj.obj.MetricTags) == 0 { - obj.obj.MetricTags = []*otg.PatternFlowIcmpEchoTypeMetricTag{} - } - if obj.metricTagsHolder == nil { - obj.metricTagsHolder = newPatternFlowIcmpEchoTypePatternFlowIcmpEchoTypeMetricTagIter(&obj.obj.MetricTags).setMsg(obj) - } - return obj.metricTagsHolder -} +// The sub-type to be set in the Extended Community attribute. For certain types with no sub-type this byte can also be used as part of an extended value field. Accepts hexadecimal input upto ff. +// CommunitySubtype returns a string +func (obj *bgpExtendedCommunityCustomType) CommunitySubtype() string { -type patternFlowIcmpEchoTypePatternFlowIcmpEchoTypeMetricTagIter struct { - obj *patternFlowIcmpEchoType - patternFlowIcmpEchoTypeMetricTagSlice []PatternFlowIcmpEchoTypeMetricTag - fieldPtr *[]*otg.PatternFlowIcmpEchoTypeMetricTag -} + return *obj.obj.CommunitySubtype -func newPatternFlowIcmpEchoTypePatternFlowIcmpEchoTypeMetricTagIter(ptr *[]*otg.PatternFlowIcmpEchoTypeMetricTag) PatternFlowIcmpEchoTypePatternFlowIcmpEchoTypeMetricTagIter { - return &patternFlowIcmpEchoTypePatternFlowIcmpEchoTypeMetricTagIter{fieldPtr: ptr} } -type PatternFlowIcmpEchoTypePatternFlowIcmpEchoTypeMetricTagIter interface { - setMsg(*patternFlowIcmpEchoType) PatternFlowIcmpEchoTypePatternFlowIcmpEchoTypeMetricTagIter - Items() []PatternFlowIcmpEchoTypeMetricTag - Add() PatternFlowIcmpEchoTypeMetricTag - Append(items ...PatternFlowIcmpEchoTypeMetricTag) PatternFlowIcmpEchoTypePatternFlowIcmpEchoTypeMetricTagIter - Set(index int, newObj PatternFlowIcmpEchoTypeMetricTag) PatternFlowIcmpEchoTypePatternFlowIcmpEchoTypeMetricTagIter - Clear() PatternFlowIcmpEchoTypePatternFlowIcmpEchoTypeMetricTagIter - clearHolderSlice() PatternFlowIcmpEchoTypePatternFlowIcmpEchoTypeMetricTagIter - appendHolderSlice(item PatternFlowIcmpEchoTypeMetricTag) PatternFlowIcmpEchoTypePatternFlowIcmpEchoTypeMetricTagIter +// The sub-type to be set in the Extended Community attribute. For certain types with no sub-type this byte can also be used as part of an extended value field. Accepts hexadecimal input upto ff. +// CommunitySubtype returns a string +func (obj *bgpExtendedCommunityCustomType) HasCommunitySubtype() bool { + return obj.obj.CommunitySubtype != nil } -func (obj *patternFlowIcmpEchoTypePatternFlowIcmpEchoTypeMetricTagIter) setMsg(msg *patternFlowIcmpEchoType) PatternFlowIcmpEchoTypePatternFlowIcmpEchoTypeMetricTagIter { - obj.clearHolderSlice() - for _, val := range *obj.fieldPtr { - obj.appendHolderSlice(&patternFlowIcmpEchoTypeMetricTag{obj: val}) - } - obj.obj = msg +// The sub-type to be set in the Extended Community attribute. For certain types with no sub-type this byte can also be used as part of an extended value field. Accepts hexadecimal input upto ff. +// SetCommunitySubtype sets the string value in the BgpExtendedCommunityCustomType object +func (obj *bgpExtendedCommunityCustomType) SetCommunitySubtype(value string) BgpExtendedCommunityCustomType { + + obj.obj.CommunitySubtype = &value return obj } -func (obj *patternFlowIcmpEchoTypePatternFlowIcmpEchoTypeMetricTagIter) Items() []PatternFlowIcmpEchoTypeMetricTag { - return obj.patternFlowIcmpEchoTypeMetricTagSlice -} +// 6 byte hex value to be carried in the last 6 bytes of the Extended Community. Accepts hexadecimal input upto ffffffffffff. +// Value returns a string +func (obj *bgpExtendedCommunityCustomType) Value() string { -func (obj *patternFlowIcmpEchoTypePatternFlowIcmpEchoTypeMetricTagIter) Add() PatternFlowIcmpEchoTypeMetricTag { - newObj := &otg.PatternFlowIcmpEchoTypeMetricTag{} - *obj.fieldPtr = append(*obj.fieldPtr, newObj) - newLibObj := &patternFlowIcmpEchoTypeMetricTag{obj: newObj} - newLibObj.setDefault() - obj.patternFlowIcmpEchoTypeMetricTagSlice = append(obj.patternFlowIcmpEchoTypeMetricTagSlice, newLibObj) - return newLibObj -} + return *obj.obj.Value -func (obj *patternFlowIcmpEchoTypePatternFlowIcmpEchoTypeMetricTagIter) Append(items ...PatternFlowIcmpEchoTypeMetricTag) PatternFlowIcmpEchoTypePatternFlowIcmpEchoTypeMetricTagIter { - for _, item := range items { - newObj := item.Msg() - *obj.fieldPtr = append(*obj.fieldPtr, newObj) - obj.patternFlowIcmpEchoTypeMetricTagSlice = append(obj.patternFlowIcmpEchoTypeMetricTagSlice, item) - } - return obj } -func (obj *patternFlowIcmpEchoTypePatternFlowIcmpEchoTypeMetricTagIter) Set(index int, newObj PatternFlowIcmpEchoTypeMetricTag) PatternFlowIcmpEchoTypePatternFlowIcmpEchoTypeMetricTagIter { - (*obj.fieldPtr)[index] = newObj.Msg() - obj.patternFlowIcmpEchoTypeMetricTagSlice[index] = newObj - return obj -} -func (obj *patternFlowIcmpEchoTypePatternFlowIcmpEchoTypeMetricTagIter) Clear() PatternFlowIcmpEchoTypePatternFlowIcmpEchoTypeMetricTagIter { - if len(*obj.fieldPtr) > 0 { - *obj.fieldPtr = []*otg.PatternFlowIcmpEchoTypeMetricTag{} - obj.patternFlowIcmpEchoTypeMetricTagSlice = []PatternFlowIcmpEchoTypeMetricTag{} - } - return obj -} -func (obj *patternFlowIcmpEchoTypePatternFlowIcmpEchoTypeMetricTagIter) clearHolderSlice() PatternFlowIcmpEchoTypePatternFlowIcmpEchoTypeMetricTagIter { - if len(obj.patternFlowIcmpEchoTypeMetricTagSlice) > 0 { - obj.patternFlowIcmpEchoTypeMetricTagSlice = []PatternFlowIcmpEchoTypeMetricTag{} - } - return obj +// 6 byte hex value to be carried in the last 6 bytes of the Extended Community. Accepts hexadecimal input upto ffffffffffff. +// Value returns a string +func (obj *bgpExtendedCommunityCustomType) HasValue() bool { + return obj.obj.Value != nil } -func (obj *patternFlowIcmpEchoTypePatternFlowIcmpEchoTypeMetricTagIter) appendHolderSlice(item PatternFlowIcmpEchoTypeMetricTag) PatternFlowIcmpEchoTypePatternFlowIcmpEchoTypeMetricTagIter { - obj.patternFlowIcmpEchoTypeMetricTagSlice = append(obj.patternFlowIcmpEchoTypeMetricTagSlice, item) + +// 6 byte hex value to be carried in the last 6 bytes of the Extended Community. Accepts hexadecimal input upto ffffffffffff. +// SetValue sets the string value in the BgpExtendedCommunityCustomType object +func (obj *bgpExtendedCommunityCustomType) SetValue(value string) BgpExtendedCommunityCustomType { + + obj.obj.Value = &value return obj } -func (obj *patternFlowIcmpEchoType) validateObj(vObj *validation, set_default bool) { +func (obj *bgpExtendedCommunityCustomType) validateObj(vObj *validation, set_default bool) { if set_default { obj.setDefault() } - if obj.obj.Value != nil { + if obj.obj.CommunityType != nil { - if *obj.obj.Value > 255 { + if len(*obj.obj.CommunityType) > 2 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowIcmpEchoType.Value <= 255 but Got %d", *obj.obj.Value)) + fmt.Sprintf( + "None <= length of BgpExtendedCommunityCustomType.CommunityType <= 2 but Got %d", + len(*obj.obj.CommunityType))) } } - if obj.obj.Values != nil { - - for _, item := range obj.obj.Values { - if item > 255 { - vObj.validationErrors = append( - vObj.validationErrors, - fmt.Sprintf("min(uint32) <= PatternFlowIcmpEchoType.Values <= 255 but Got %d", item)) - } + if obj.obj.CommunitySubtype != nil { + if len(*obj.obj.CommunitySubtype) > 2 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf( + "None <= length of BgpExtendedCommunityCustomType.CommunitySubtype <= 2 but Got %d", + len(*obj.obj.CommunitySubtype))) } } - if obj.obj.Increment != nil { - - obj.Increment().validateObj(vObj, set_default) - } - - if obj.obj.Decrement != nil { - - obj.Decrement().validateObj(vObj, set_default) - } - - if len(obj.obj.MetricTags) != 0 { + if obj.obj.Value != nil { - if set_default { - obj.MetricTags().clearHolderSlice() - for _, item := range obj.obj.MetricTags { - obj.MetricTags().appendHolderSlice(&patternFlowIcmpEchoTypeMetricTag{obj: item}) - } - } - for _, item := range obj.MetricTags().Items() { - item.validateObj(vObj, set_default) + if len(*obj.obj.Value) > 12 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf( + "None <= length of BgpExtendedCommunityCustomType.Value <= 12 but Got %d", + len(*obj.obj.Value))) } } } -func (obj *patternFlowIcmpEchoType) setDefault() { - if obj.obj.Choice == nil { - obj.SetChoice(PatternFlowIcmpEchoTypeChoice.VALUE) - +func (obj *bgpExtendedCommunityCustomType) setDefault() { + if obj.obj.CommunityType == nil { + obj.SetCommunityType("00") + } + if obj.obj.CommunitySubtype == nil { + obj.SetCommunitySubtype("00") + } + if obj.obj.Value == nil { + obj.SetValue("000000000000") } } -// ***** PatternFlowIcmpEchoCode ***** -type patternFlowIcmpEchoCode struct { +// ***** BgpSrteRemoteEndpointSubTlv ***** +type bgpSrteRemoteEndpointSubTlv struct { validation - obj *otg.PatternFlowIcmpEchoCode - incrementHolder PatternFlowIcmpEchoCodeCounter - decrementHolder PatternFlowIcmpEchoCodeCounter - metricTagsHolder PatternFlowIcmpEchoCodePatternFlowIcmpEchoCodeMetricTagIter + obj *otg.BgpSrteRemoteEndpointSubTlv } -func NewPatternFlowIcmpEchoCode() PatternFlowIcmpEchoCode { - obj := patternFlowIcmpEchoCode{obj: &otg.PatternFlowIcmpEchoCode{}} +func NewBgpSrteRemoteEndpointSubTlv() BgpSrteRemoteEndpointSubTlv { + obj := bgpSrteRemoteEndpointSubTlv{obj: &otg.BgpSrteRemoteEndpointSubTlv{}} obj.setDefault() return &obj } -func (obj *patternFlowIcmpEchoCode) Msg() *otg.PatternFlowIcmpEchoCode { +func (obj *bgpSrteRemoteEndpointSubTlv) Msg() *otg.BgpSrteRemoteEndpointSubTlv { return obj.obj } -func (obj *patternFlowIcmpEchoCode) SetMsg(msg *otg.PatternFlowIcmpEchoCode) PatternFlowIcmpEchoCode { - obj.setNil() +func (obj *bgpSrteRemoteEndpointSubTlv) SetMsg(msg *otg.BgpSrteRemoteEndpointSubTlv) BgpSrteRemoteEndpointSubTlv { + proto.Merge(obj.obj, msg) return obj } -func (obj *patternFlowIcmpEchoCode) ToProto() (*otg.PatternFlowIcmpEchoCode, error) { +func (obj *bgpSrteRemoteEndpointSubTlv) ToProto() (*otg.BgpSrteRemoteEndpointSubTlv, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -259702,7 +306044,7 @@ func (obj *patternFlowIcmpEchoCode) ToProto() (*otg.PatternFlowIcmpEchoCode, err return obj.Msg(), nil } -func (obj *patternFlowIcmpEchoCode) FromProto(msg *otg.PatternFlowIcmpEchoCode) (PatternFlowIcmpEchoCode, error) { +func (obj *bgpSrteRemoteEndpointSubTlv) FromProto(msg *otg.BgpSrteRemoteEndpointSubTlv) (BgpSrteRemoteEndpointSubTlv, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -259711,7 +306053,7 @@ func (obj *patternFlowIcmpEchoCode) FromProto(msg *otg.PatternFlowIcmpEchoCode) return newObj, nil } -func (obj *patternFlowIcmpEchoCode) ToPbText() (string, error) { +func (obj *bgpSrteRemoteEndpointSubTlv) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -259723,12 +306065,12 @@ func (obj *patternFlowIcmpEchoCode) ToPbText() (string, error) { return string(protoMarshal), nil } -func (obj *patternFlowIcmpEchoCode) FromPbText(value string) error { +func (obj *bgpSrteRemoteEndpointSubTlv) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj } - obj.setNil() + vErr := obj.validateToAndFrom() if vErr != nil { return vErr @@ -259736,7 +306078,7 @@ func (obj *patternFlowIcmpEchoCode) FromPbText(value string) error { return retObj } -func (obj *patternFlowIcmpEchoCode) ToYaml() (string, error) { +func (obj *bgpSrteRemoteEndpointSubTlv) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -259757,7 +306099,7 @@ func (obj *patternFlowIcmpEchoCode) ToYaml() (string, error) { return string(data), nil } -func (obj *patternFlowIcmpEchoCode) FromYaml(value string) error { +func (obj *bgpSrteRemoteEndpointSubTlv) FromYaml(value string) error { if value == "" { value = "{}" } @@ -259774,7 +306116,7 @@ func (obj *patternFlowIcmpEchoCode) FromYaml(value string) error { return fmt.Errorf("unmarshal error %s", strings.Replace( uError.Error(), "\u00a0", " ", -1)[7:]) } - obj.setNil() + vErr := obj.validateToAndFrom() if vErr != nil { return vErr @@ -259782,7 +306124,7 @@ func (obj *patternFlowIcmpEchoCode) FromYaml(value string) error { return nil } -func (obj *patternFlowIcmpEchoCode) ToJson() (string, error) { +func (obj *bgpSrteRemoteEndpointSubTlv) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -259800,7 +306142,7 @@ func (obj *patternFlowIcmpEchoCode) ToJson() (string, error) { return string(data), nil } -func (obj *patternFlowIcmpEchoCode) FromJson(value string) error { +func (obj *bgpSrteRemoteEndpointSubTlv) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -259813,7 +306155,7 @@ func (obj *patternFlowIcmpEchoCode) FromJson(value string) error { return fmt.Errorf("unmarshal error %s", strings.Replace( uError.Error(), "\u00a0", " ", -1)[7:]) } - obj.setNil() + err := obj.validateToAndFrom() if err != nil { return err @@ -259821,19 +306163,19 @@ func (obj *patternFlowIcmpEchoCode) FromJson(value string) error { return nil } -func (obj *patternFlowIcmpEchoCode) validateToAndFrom() error { +func (obj *bgpSrteRemoteEndpointSubTlv) validateToAndFrom() error { // emptyVars() obj.validateObj(&obj.validation, true) return obj.validationResult() } -func (obj *patternFlowIcmpEchoCode) Validate() error { +func (obj *bgpSrteRemoteEndpointSubTlv) Validate() error { // emptyVars() obj.validateObj(&obj.validation, false) return obj.validationResult() } -func (obj *patternFlowIcmpEchoCode) String() string { +func (obj *bgpSrteRemoteEndpointSubTlv) String() string { str, err := obj.ToYaml() if err != nil { return err.Error() @@ -259841,12 +306183,12 @@ func (obj *patternFlowIcmpEchoCode) String() string { return str } -func (obj *patternFlowIcmpEchoCode) Clone() (PatternFlowIcmpEchoCode, error) { +func (obj *bgpSrteRemoteEndpointSubTlv) Clone() (BgpSrteRemoteEndpointSubTlv, error) { vErr := obj.Validate() if vErr != nil { return nil, vErr } - newObj := NewPatternFlowIcmpEchoCode() + newObj := NewBgpSrteRemoteEndpointSubTlv() data, err := proto.Marshal(obj.Msg()) if err != nil { return nil, err @@ -259858,423 +306200,231 @@ func (obj *patternFlowIcmpEchoCode) Clone() (PatternFlowIcmpEchoCode, error) { return newObj, nil } -func (obj *patternFlowIcmpEchoCode) setNil() { - obj.incrementHolder = nil - obj.decrementHolder = nil - obj.metricTagsHolder = nil - obj.validationErrors = nil - obj.warnings = nil - obj.constraints = make(map[string]map[string]Constraints) -} - -// PatternFlowIcmpEchoCode is the ICMP subtype. The default code for ICMP echo request and reply is 0. -type PatternFlowIcmpEchoCode interface { +// BgpSrteRemoteEndpointSubTlv is configuration for the BGP remote endpoint sub TLV. +type BgpSrteRemoteEndpointSubTlv interface { Validation - // Msg marshals PatternFlowIcmpEchoCode to protobuf object *otg.PatternFlowIcmpEchoCode + // Msg marshals BgpSrteRemoteEndpointSubTlv to protobuf object *otg.BgpSrteRemoteEndpointSubTlv // and doesn't set defaults - Msg() *otg.PatternFlowIcmpEchoCode - // SetMsg unmarshals PatternFlowIcmpEchoCode from protobuf object *otg.PatternFlowIcmpEchoCode + Msg() *otg.BgpSrteRemoteEndpointSubTlv + // SetMsg unmarshals BgpSrteRemoteEndpointSubTlv from protobuf object *otg.BgpSrteRemoteEndpointSubTlv // and doesn't set defaults - SetMsg(*otg.PatternFlowIcmpEchoCode) PatternFlowIcmpEchoCode - // ToProto marshals PatternFlowIcmpEchoCode to protobuf object *otg.PatternFlowIcmpEchoCode - ToProto() (*otg.PatternFlowIcmpEchoCode, error) - // ToPbText marshals PatternFlowIcmpEchoCode to protobuf text + SetMsg(*otg.BgpSrteRemoteEndpointSubTlv) BgpSrteRemoteEndpointSubTlv + // ToProto marshals BgpSrteRemoteEndpointSubTlv to protobuf object *otg.BgpSrteRemoteEndpointSubTlv + ToProto() (*otg.BgpSrteRemoteEndpointSubTlv, error) + // ToPbText marshals BgpSrteRemoteEndpointSubTlv to protobuf text ToPbText() (string, error) - // ToYaml marshals PatternFlowIcmpEchoCode to YAML text + // ToYaml marshals BgpSrteRemoteEndpointSubTlv to YAML text ToYaml() (string, error) - // ToJson marshals PatternFlowIcmpEchoCode to JSON text + // ToJson marshals BgpSrteRemoteEndpointSubTlv to JSON text ToJson() (string, error) - // FromProto unmarshals PatternFlowIcmpEchoCode from protobuf object *otg.PatternFlowIcmpEchoCode - FromProto(msg *otg.PatternFlowIcmpEchoCode) (PatternFlowIcmpEchoCode, error) - // FromPbText unmarshals PatternFlowIcmpEchoCode from protobuf text + // FromProto unmarshals BgpSrteRemoteEndpointSubTlv from protobuf object *otg.BgpSrteRemoteEndpointSubTlv + FromProto(msg *otg.BgpSrteRemoteEndpointSubTlv) (BgpSrteRemoteEndpointSubTlv, error) + // FromPbText unmarshals BgpSrteRemoteEndpointSubTlv from protobuf text FromPbText(value string) error - // FromYaml unmarshals PatternFlowIcmpEchoCode from YAML text + // FromYaml unmarshals BgpSrteRemoteEndpointSubTlv from YAML text FromYaml(value string) error - // FromJson unmarshals PatternFlowIcmpEchoCode from JSON text + // FromJson unmarshals BgpSrteRemoteEndpointSubTlv from JSON text FromJson(value string) error - // Validate validates PatternFlowIcmpEchoCode + // Validate validates BgpSrteRemoteEndpointSubTlv Validate() error // A stringer function String() string // Clones the object - Clone() (PatternFlowIcmpEchoCode, error) + Clone() (BgpSrteRemoteEndpointSubTlv, error) validateToAndFrom() error validateObj(vObj *validation, set_default bool) setDefault() - // Choice returns PatternFlowIcmpEchoCodeChoiceEnum, set in PatternFlowIcmpEchoCode - Choice() PatternFlowIcmpEchoCodeChoiceEnum - // SetChoice assigns PatternFlowIcmpEchoCodeChoiceEnum provided by user to PatternFlowIcmpEchoCode - SetChoice(value PatternFlowIcmpEchoCodeChoiceEnum) PatternFlowIcmpEchoCode - // HasChoice checks if Choice has been set in PatternFlowIcmpEchoCode - HasChoice() bool - // Value returns uint32, set in PatternFlowIcmpEchoCode. - Value() uint32 - // SetValue assigns uint32 provided by user to PatternFlowIcmpEchoCode - SetValue(value uint32) PatternFlowIcmpEchoCode - // HasValue checks if Value has been set in PatternFlowIcmpEchoCode - HasValue() bool - // Values returns []uint32, set in PatternFlowIcmpEchoCode. - Values() []uint32 - // SetValues assigns []uint32 provided by user to PatternFlowIcmpEchoCode - SetValues(value []uint32) PatternFlowIcmpEchoCode - // Increment returns PatternFlowIcmpEchoCodeCounter, set in PatternFlowIcmpEchoCode. - // PatternFlowIcmpEchoCodeCounter is integer counter pattern - Increment() PatternFlowIcmpEchoCodeCounter - // SetIncrement assigns PatternFlowIcmpEchoCodeCounter provided by user to PatternFlowIcmpEchoCode. - // PatternFlowIcmpEchoCodeCounter is integer counter pattern - SetIncrement(value PatternFlowIcmpEchoCodeCounter) PatternFlowIcmpEchoCode - // HasIncrement checks if Increment has been set in PatternFlowIcmpEchoCode - HasIncrement() bool - // Decrement returns PatternFlowIcmpEchoCodeCounter, set in PatternFlowIcmpEchoCode. - // PatternFlowIcmpEchoCodeCounter is integer counter pattern - Decrement() PatternFlowIcmpEchoCodeCounter - // SetDecrement assigns PatternFlowIcmpEchoCodeCounter provided by user to PatternFlowIcmpEchoCode. - // PatternFlowIcmpEchoCodeCounter is integer counter pattern - SetDecrement(value PatternFlowIcmpEchoCodeCounter) PatternFlowIcmpEchoCode - // HasDecrement checks if Decrement has been set in PatternFlowIcmpEchoCode - HasDecrement() bool - // MetricTags returns PatternFlowIcmpEchoCodePatternFlowIcmpEchoCodeMetricTagIterIter, set in PatternFlowIcmpEchoCode - MetricTags() PatternFlowIcmpEchoCodePatternFlowIcmpEchoCodeMetricTagIter - setNil() + // AsNumber returns uint32, set in BgpSrteRemoteEndpointSubTlv. + AsNumber() uint32 + // SetAsNumber assigns uint32 provided by user to BgpSrteRemoteEndpointSubTlv + SetAsNumber(value uint32) BgpSrteRemoteEndpointSubTlv + // HasAsNumber checks if AsNumber has been set in BgpSrteRemoteEndpointSubTlv + HasAsNumber() bool + // AddressFamily returns BgpSrteRemoteEndpointSubTlvAddressFamilyEnum, set in BgpSrteRemoteEndpointSubTlv + AddressFamily() BgpSrteRemoteEndpointSubTlvAddressFamilyEnum + // SetAddressFamily assigns BgpSrteRemoteEndpointSubTlvAddressFamilyEnum provided by user to BgpSrteRemoteEndpointSubTlv + SetAddressFamily(value BgpSrteRemoteEndpointSubTlvAddressFamilyEnum) BgpSrteRemoteEndpointSubTlv + // HasAddressFamily checks if AddressFamily has been set in BgpSrteRemoteEndpointSubTlv + HasAddressFamily() bool + // Ipv4Address returns string, set in BgpSrteRemoteEndpointSubTlv. + Ipv4Address() string + // SetIpv4Address assigns string provided by user to BgpSrteRemoteEndpointSubTlv + SetIpv4Address(value string) BgpSrteRemoteEndpointSubTlv + // HasIpv4Address checks if Ipv4Address has been set in BgpSrteRemoteEndpointSubTlv + HasIpv4Address() bool + // Ipv6Address returns string, set in BgpSrteRemoteEndpointSubTlv. + Ipv6Address() string + // SetIpv6Address assigns string provided by user to BgpSrteRemoteEndpointSubTlv + SetIpv6Address(value string) BgpSrteRemoteEndpointSubTlv + // HasIpv6Address checks if Ipv6Address has been set in BgpSrteRemoteEndpointSubTlv + HasIpv6Address() bool } -type PatternFlowIcmpEchoCodeChoiceEnum string +// Autonomous system (AS) number +// AsNumber returns a uint32 +func (obj *bgpSrteRemoteEndpointSubTlv) AsNumber() uint32 { -// Enum of Choice on PatternFlowIcmpEchoCode -var PatternFlowIcmpEchoCodeChoice = struct { - VALUE PatternFlowIcmpEchoCodeChoiceEnum - VALUES PatternFlowIcmpEchoCodeChoiceEnum - INCREMENT PatternFlowIcmpEchoCodeChoiceEnum - DECREMENT PatternFlowIcmpEchoCodeChoiceEnum -}{ - VALUE: PatternFlowIcmpEchoCodeChoiceEnum("value"), - VALUES: PatternFlowIcmpEchoCodeChoiceEnum("values"), - INCREMENT: PatternFlowIcmpEchoCodeChoiceEnum("increment"), - DECREMENT: PatternFlowIcmpEchoCodeChoiceEnum("decrement"), -} + return *obj.obj.AsNumber -func (obj *patternFlowIcmpEchoCode) Choice() PatternFlowIcmpEchoCodeChoiceEnum { - return PatternFlowIcmpEchoCodeChoiceEnum(obj.obj.Choice.Enum().String()) } -// description is TBD -// Choice returns a string -func (obj *patternFlowIcmpEchoCode) HasChoice() bool { - return obj.obj.Choice != nil +// Autonomous system (AS) number +// AsNumber returns a uint32 +func (obj *bgpSrteRemoteEndpointSubTlv) HasAsNumber() bool { + return obj.obj.AsNumber != nil } -func (obj *patternFlowIcmpEchoCode) SetChoice(value PatternFlowIcmpEchoCodeChoiceEnum) PatternFlowIcmpEchoCode { - intValue, ok := otg.PatternFlowIcmpEchoCode_Choice_Enum_value[string(value)] - if !ok { - obj.validationErrors = append(obj.validationErrors, fmt.Sprintf( - "%s is not a valid choice on PatternFlowIcmpEchoCodeChoiceEnum", string(value))) - return obj - } - enumValue := otg.PatternFlowIcmpEchoCode_Choice_Enum(intValue) - obj.obj.Choice = &enumValue - obj.obj.Decrement = nil - obj.decrementHolder = nil - obj.obj.Increment = nil - obj.incrementHolder = nil - obj.obj.Values = nil - obj.obj.Value = nil - - if value == PatternFlowIcmpEchoCodeChoice.VALUE { - defaultValue := uint32(0) - obj.obj.Value = &defaultValue - } - - if value == PatternFlowIcmpEchoCodeChoice.VALUES { - defaultValue := []uint32{0} - obj.obj.Values = defaultValue - } - - if value == PatternFlowIcmpEchoCodeChoice.INCREMENT { - obj.obj.Increment = NewPatternFlowIcmpEchoCodeCounter().Msg() - } - - if value == PatternFlowIcmpEchoCodeChoice.DECREMENT { - obj.obj.Decrement = NewPatternFlowIcmpEchoCodeCounter().Msg() - } +// Autonomous system (AS) number +// SetAsNumber sets the uint32 value in the BgpSrteRemoteEndpointSubTlv object +func (obj *bgpSrteRemoteEndpointSubTlv) SetAsNumber(value uint32) BgpSrteRemoteEndpointSubTlv { + obj.obj.AsNumber = &value return obj } -// description is TBD -// Value returns a uint32 -func (obj *patternFlowIcmpEchoCode) Value() uint32 { - - if obj.obj.Value == nil { - obj.SetChoice(PatternFlowIcmpEchoCodeChoice.VALUE) - } - - return *obj.obj.Value - -} +type BgpSrteRemoteEndpointSubTlvAddressFamilyEnum string -// description is TBD -// Value returns a uint32 -func (obj *patternFlowIcmpEchoCode) HasValue() bool { - return obj.obj.Value != nil +// Enum of AddressFamily on BgpSrteRemoteEndpointSubTlv +var BgpSrteRemoteEndpointSubTlvAddressFamily = struct { + IPV4 BgpSrteRemoteEndpointSubTlvAddressFamilyEnum + IPV6 BgpSrteRemoteEndpointSubTlvAddressFamilyEnum +}{ + IPV4: BgpSrteRemoteEndpointSubTlvAddressFamilyEnum("ipv4"), + IPV6: BgpSrteRemoteEndpointSubTlvAddressFamilyEnum("ipv6"), } -// description is TBD -// SetValue sets the uint32 value in the PatternFlowIcmpEchoCode object -func (obj *patternFlowIcmpEchoCode) SetValue(value uint32) PatternFlowIcmpEchoCode { - obj.SetChoice(PatternFlowIcmpEchoCodeChoice.VALUE) - obj.obj.Value = &value - return obj +func (obj *bgpSrteRemoteEndpointSubTlv) AddressFamily() BgpSrteRemoteEndpointSubTlvAddressFamilyEnum { + return BgpSrteRemoteEndpointSubTlvAddressFamilyEnum(obj.obj.AddressFamily.Enum().String()) } -// description is TBD -// Values returns a []uint32 -func (obj *patternFlowIcmpEchoCode) Values() []uint32 { - if obj.obj.Values == nil { - obj.SetValues([]uint32{0}) - } - return obj.obj.Values +// Determines the address type +// AddressFamily returns a string +func (obj *bgpSrteRemoteEndpointSubTlv) HasAddressFamily() bool { + return obj.obj.AddressFamily != nil } -// description is TBD -// SetValues sets the []uint32 value in the PatternFlowIcmpEchoCode object -func (obj *patternFlowIcmpEchoCode) SetValues(value []uint32) PatternFlowIcmpEchoCode { - obj.SetChoice(PatternFlowIcmpEchoCodeChoice.VALUES) - if obj.obj.Values == nil { - obj.obj.Values = make([]uint32, 0) +func (obj *bgpSrteRemoteEndpointSubTlv) SetAddressFamily(value BgpSrteRemoteEndpointSubTlvAddressFamilyEnum) BgpSrteRemoteEndpointSubTlv { + intValue, ok := otg.BgpSrteRemoteEndpointSubTlv_AddressFamily_Enum_value[string(value)] + if !ok { + obj.validationErrors = append(obj.validationErrors, fmt.Sprintf( + "%s is not a valid choice on BgpSrteRemoteEndpointSubTlvAddressFamilyEnum", string(value))) + return obj } - obj.obj.Values = value + enumValue := otg.BgpSrteRemoteEndpointSubTlv_AddressFamily_Enum(intValue) + obj.obj.AddressFamily = &enumValue return obj } -// description is TBD -// Increment returns a PatternFlowIcmpEchoCodeCounter -func (obj *patternFlowIcmpEchoCode) Increment() PatternFlowIcmpEchoCodeCounter { - if obj.obj.Increment == nil { - obj.SetChoice(PatternFlowIcmpEchoCodeChoice.INCREMENT) - } - if obj.incrementHolder == nil { - obj.incrementHolder = &patternFlowIcmpEchoCodeCounter{obj: obj.obj.Increment} - } - return obj.incrementHolder -} - -// description is TBD -// Increment returns a PatternFlowIcmpEchoCodeCounter -func (obj *patternFlowIcmpEchoCode) HasIncrement() bool { - return obj.obj.Increment != nil -} - -// description is TBD -// SetIncrement sets the PatternFlowIcmpEchoCodeCounter value in the PatternFlowIcmpEchoCode object -func (obj *patternFlowIcmpEchoCode) SetIncrement(value PatternFlowIcmpEchoCodeCounter) PatternFlowIcmpEchoCode { - obj.SetChoice(PatternFlowIcmpEchoCodeChoice.INCREMENT) - obj.incrementHolder = nil - obj.obj.Increment = value.Msg() +// The IPv4 address of the Remote Endpoint. +// Ipv4Address returns a string +func (obj *bgpSrteRemoteEndpointSubTlv) Ipv4Address() string { - return obj -} + return *obj.obj.Ipv4Address -// description is TBD -// Decrement returns a PatternFlowIcmpEchoCodeCounter -func (obj *patternFlowIcmpEchoCode) Decrement() PatternFlowIcmpEchoCodeCounter { - if obj.obj.Decrement == nil { - obj.SetChoice(PatternFlowIcmpEchoCodeChoice.DECREMENT) - } - if obj.decrementHolder == nil { - obj.decrementHolder = &patternFlowIcmpEchoCodeCounter{obj: obj.obj.Decrement} - } - return obj.decrementHolder } -// description is TBD -// Decrement returns a PatternFlowIcmpEchoCodeCounter -func (obj *patternFlowIcmpEchoCode) HasDecrement() bool { - return obj.obj.Decrement != nil +// The IPv4 address of the Remote Endpoint. +// Ipv4Address returns a string +func (obj *bgpSrteRemoteEndpointSubTlv) HasIpv4Address() bool { + return obj.obj.Ipv4Address != nil } -// description is TBD -// SetDecrement sets the PatternFlowIcmpEchoCodeCounter value in the PatternFlowIcmpEchoCode object -func (obj *patternFlowIcmpEchoCode) SetDecrement(value PatternFlowIcmpEchoCodeCounter) PatternFlowIcmpEchoCode { - obj.SetChoice(PatternFlowIcmpEchoCodeChoice.DECREMENT) - obj.decrementHolder = nil - obj.obj.Decrement = value.Msg() +// The IPv4 address of the Remote Endpoint. +// SetIpv4Address sets the string value in the BgpSrteRemoteEndpointSubTlv object +func (obj *bgpSrteRemoteEndpointSubTlv) SetIpv4Address(value string) BgpSrteRemoteEndpointSubTlv { + obj.obj.Ipv4Address = &value return obj } -// One or more metric tags can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. -// MetricTags returns a []PatternFlowIcmpEchoCodeMetricTag -func (obj *patternFlowIcmpEchoCode) MetricTags() PatternFlowIcmpEchoCodePatternFlowIcmpEchoCodeMetricTagIter { - if len(obj.obj.MetricTags) == 0 { - obj.obj.MetricTags = []*otg.PatternFlowIcmpEchoCodeMetricTag{} - } - if obj.metricTagsHolder == nil { - obj.metricTagsHolder = newPatternFlowIcmpEchoCodePatternFlowIcmpEchoCodeMetricTagIter(&obj.obj.MetricTags).setMsg(obj) - } - return obj.metricTagsHolder -} - -type patternFlowIcmpEchoCodePatternFlowIcmpEchoCodeMetricTagIter struct { - obj *patternFlowIcmpEchoCode - patternFlowIcmpEchoCodeMetricTagSlice []PatternFlowIcmpEchoCodeMetricTag - fieldPtr *[]*otg.PatternFlowIcmpEchoCodeMetricTag -} - -func newPatternFlowIcmpEchoCodePatternFlowIcmpEchoCodeMetricTagIter(ptr *[]*otg.PatternFlowIcmpEchoCodeMetricTag) PatternFlowIcmpEchoCodePatternFlowIcmpEchoCodeMetricTagIter { - return &patternFlowIcmpEchoCodePatternFlowIcmpEchoCodeMetricTagIter{fieldPtr: ptr} -} - -type PatternFlowIcmpEchoCodePatternFlowIcmpEchoCodeMetricTagIter interface { - setMsg(*patternFlowIcmpEchoCode) PatternFlowIcmpEchoCodePatternFlowIcmpEchoCodeMetricTagIter - Items() []PatternFlowIcmpEchoCodeMetricTag - Add() PatternFlowIcmpEchoCodeMetricTag - Append(items ...PatternFlowIcmpEchoCodeMetricTag) PatternFlowIcmpEchoCodePatternFlowIcmpEchoCodeMetricTagIter - Set(index int, newObj PatternFlowIcmpEchoCodeMetricTag) PatternFlowIcmpEchoCodePatternFlowIcmpEchoCodeMetricTagIter - Clear() PatternFlowIcmpEchoCodePatternFlowIcmpEchoCodeMetricTagIter - clearHolderSlice() PatternFlowIcmpEchoCodePatternFlowIcmpEchoCodeMetricTagIter - appendHolderSlice(item PatternFlowIcmpEchoCodeMetricTag) PatternFlowIcmpEchoCodePatternFlowIcmpEchoCodeMetricTagIter -} +// The IPv6 address of the Remote Endpoint. +// Ipv6Address returns a string +func (obj *bgpSrteRemoteEndpointSubTlv) Ipv6Address() string { -func (obj *patternFlowIcmpEchoCodePatternFlowIcmpEchoCodeMetricTagIter) setMsg(msg *patternFlowIcmpEchoCode) PatternFlowIcmpEchoCodePatternFlowIcmpEchoCodeMetricTagIter { - obj.clearHolderSlice() - for _, val := range *obj.fieldPtr { - obj.appendHolderSlice(&patternFlowIcmpEchoCodeMetricTag{obj: val}) - } - obj.obj = msg - return obj -} + return *obj.obj.Ipv6Address -func (obj *patternFlowIcmpEchoCodePatternFlowIcmpEchoCodeMetricTagIter) Items() []PatternFlowIcmpEchoCodeMetricTag { - return obj.patternFlowIcmpEchoCodeMetricTagSlice } -func (obj *patternFlowIcmpEchoCodePatternFlowIcmpEchoCodeMetricTagIter) Add() PatternFlowIcmpEchoCodeMetricTag { - newObj := &otg.PatternFlowIcmpEchoCodeMetricTag{} - *obj.fieldPtr = append(*obj.fieldPtr, newObj) - newLibObj := &patternFlowIcmpEchoCodeMetricTag{obj: newObj} - newLibObj.setDefault() - obj.patternFlowIcmpEchoCodeMetricTagSlice = append(obj.patternFlowIcmpEchoCodeMetricTagSlice, newLibObj) - return newLibObj +// The IPv6 address of the Remote Endpoint. +// Ipv6Address returns a string +func (obj *bgpSrteRemoteEndpointSubTlv) HasIpv6Address() bool { + return obj.obj.Ipv6Address != nil } -func (obj *patternFlowIcmpEchoCodePatternFlowIcmpEchoCodeMetricTagIter) Append(items ...PatternFlowIcmpEchoCodeMetricTag) PatternFlowIcmpEchoCodePatternFlowIcmpEchoCodeMetricTagIter { - for _, item := range items { - newObj := item.Msg() - *obj.fieldPtr = append(*obj.fieldPtr, newObj) - obj.patternFlowIcmpEchoCodeMetricTagSlice = append(obj.patternFlowIcmpEchoCodeMetricTagSlice, item) - } - return obj -} +// The IPv6 address of the Remote Endpoint. +// SetIpv6Address sets the string value in the BgpSrteRemoteEndpointSubTlv object +func (obj *bgpSrteRemoteEndpointSubTlv) SetIpv6Address(value string) BgpSrteRemoteEndpointSubTlv { -func (obj *patternFlowIcmpEchoCodePatternFlowIcmpEchoCodeMetricTagIter) Set(index int, newObj PatternFlowIcmpEchoCodeMetricTag) PatternFlowIcmpEchoCodePatternFlowIcmpEchoCodeMetricTagIter { - (*obj.fieldPtr)[index] = newObj.Msg() - obj.patternFlowIcmpEchoCodeMetricTagSlice[index] = newObj - return obj -} -func (obj *patternFlowIcmpEchoCodePatternFlowIcmpEchoCodeMetricTagIter) Clear() PatternFlowIcmpEchoCodePatternFlowIcmpEchoCodeMetricTagIter { - if len(*obj.fieldPtr) > 0 { - *obj.fieldPtr = []*otg.PatternFlowIcmpEchoCodeMetricTag{} - obj.patternFlowIcmpEchoCodeMetricTagSlice = []PatternFlowIcmpEchoCodeMetricTag{} - } - return obj -} -func (obj *patternFlowIcmpEchoCodePatternFlowIcmpEchoCodeMetricTagIter) clearHolderSlice() PatternFlowIcmpEchoCodePatternFlowIcmpEchoCodeMetricTagIter { - if len(obj.patternFlowIcmpEchoCodeMetricTagSlice) > 0 { - obj.patternFlowIcmpEchoCodeMetricTagSlice = []PatternFlowIcmpEchoCodeMetricTag{} - } - return obj -} -func (obj *patternFlowIcmpEchoCodePatternFlowIcmpEchoCodeMetricTagIter) appendHolderSlice(item PatternFlowIcmpEchoCodeMetricTag) PatternFlowIcmpEchoCodePatternFlowIcmpEchoCodeMetricTagIter { - obj.patternFlowIcmpEchoCodeMetricTagSlice = append(obj.patternFlowIcmpEchoCodeMetricTagSlice, item) + obj.obj.Ipv6Address = &value return obj } -func (obj *patternFlowIcmpEchoCode) validateObj(vObj *validation, set_default bool) { +func (obj *bgpSrteRemoteEndpointSubTlv) validateObj(vObj *validation, set_default bool) { if set_default { obj.setDefault() } - if obj.obj.Value != nil { + if obj.obj.Ipv4Address != nil { - if *obj.obj.Value > 255 { - vObj.validationErrors = append( - vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowIcmpEchoCode.Value <= 255 but Got %d", *obj.obj.Value)) + err := obj.validateIpv4(obj.Ipv4Address()) + if err != nil { + vObj.validationErrors = append(vObj.validationErrors, fmt.Sprintf("%s %s", err.Error(), "on BgpSrteRemoteEndpointSubTlv.Ipv4Address")) } } - if obj.obj.Values != nil { - - for _, item := range obj.obj.Values { - if item > 255 { - vObj.validationErrors = append( - vObj.validationErrors, - fmt.Sprintf("min(uint32) <= PatternFlowIcmpEchoCode.Values <= 255 but Got %d", item)) - } + if obj.obj.Ipv6Address != nil { + err := obj.validateIpv6(obj.Ipv6Address()) + if err != nil { + vObj.validationErrors = append(vObj.validationErrors, fmt.Sprintf("%s %s", err.Error(), "on BgpSrteRemoteEndpointSubTlv.Ipv6Address")) } } - if obj.obj.Increment != nil { +} - obj.Increment().validateObj(vObj, set_default) +func (obj *bgpSrteRemoteEndpointSubTlv) setDefault() { + if obj.obj.AsNumber == nil { + obj.SetAsNumber(0) } + if obj.obj.AddressFamily == nil { + obj.SetAddressFamily(BgpSrteRemoteEndpointSubTlvAddressFamily.IPV4) - if obj.obj.Decrement != nil { - - obj.Decrement().validateObj(vObj, set_default) } - - if len(obj.obj.MetricTags) != 0 { - - if set_default { - obj.MetricTags().clearHolderSlice() - for _, item := range obj.obj.MetricTags { - obj.MetricTags().appendHolderSlice(&patternFlowIcmpEchoCodeMetricTag{obj: item}) - } - } - for _, item := range obj.MetricTags().Items() { - item.validateObj(vObj, set_default) - } - + if obj.obj.Ipv4Address == nil { + obj.SetIpv4Address("0.0.0.0") } - -} - -func (obj *patternFlowIcmpEchoCode) setDefault() { - if obj.obj.Choice == nil { - obj.SetChoice(PatternFlowIcmpEchoCodeChoice.VALUE) - + if obj.obj.Ipv6Address == nil { + obj.SetIpv6Address("::0") } } -// ***** PatternFlowIcmpEchoChecksum ***** -type patternFlowIcmpEchoChecksum struct { +// ***** BgpSrteColorSubTlv ***** +type bgpSrteColorSubTlv struct { validation - obj *otg.PatternFlowIcmpEchoChecksum + obj *otg.BgpSrteColorSubTlv } -func NewPatternFlowIcmpEchoChecksum() PatternFlowIcmpEchoChecksum { - obj := patternFlowIcmpEchoChecksum{obj: &otg.PatternFlowIcmpEchoChecksum{}} +func NewBgpSrteColorSubTlv() BgpSrteColorSubTlv { + obj := bgpSrteColorSubTlv{obj: &otg.BgpSrteColorSubTlv{}} obj.setDefault() return &obj } -func (obj *patternFlowIcmpEchoChecksum) Msg() *otg.PatternFlowIcmpEchoChecksum { +func (obj *bgpSrteColorSubTlv) Msg() *otg.BgpSrteColorSubTlv { return obj.obj } -func (obj *patternFlowIcmpEchoChecksum) SetMsg(msg *otg.PatternFlowIcmpEchoChecksum) PatternFlowIcmpEchoChecksum { +func (obj *bgpSrteColorSubTlv) SetMsg(msg *otg.BgpSrteColorSubTlv) BgpSrteColorSubTlv { proto.Merge(obj.obj, msg) return obj } -func (obj *patternFlowIcmpEchoChecksum) ToProto() (*otg.PatternFlowIcmpEchoChecksum, error) { +func (obj *bgpSrteColorSubTlv) ToProto() (*otg.BgpSrteColorSubTlv, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -260282,7 +306432,7 @@ func (obj *patternFlowIcmpEchoChecksum) ToProto() (*otg.PatternFlowIcmpEchoCheck return obj.Msg(), nil } -func (obj *patternFlowIcmpEchoChecksum) FromProto(msg *otg.PatternFlowIcmpEchoChecksum) (PatternFlowIcmpEchoChecksum, error) { +func (obj *bgpSrteColorSubTlv) FromProto(msg *otg.BgpSrteColorSubTlv) (BgpSrteColorSubTlv, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -260291,7 +306441,7 @@ func (obj *patternFlowIcmpEchoChecksum) FromProto(msg *otg.PatternFlowIcmpEchoCh return newObj, nil } -func (obj *patternFlowIcmpEchoChecksum) ToPbText() (string, error) { +func (obj *bgpSrteColorSubTlv) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -260303,7 +306453,7 @@ func (obj *patternFlowIcmpEchoChecksum) ToPbText() (string, error) { return string(protoMarshal), nil } -func (obj *patternFlowIcmpEchoChecksum) FromPbText(value string) error { +func (obj *bgpSrteColorSubTlv) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj @@ -260316,7 +306466,7 @@ func (obj *patternFlowIcmpEchoChecksum) FromPbText(value string) error { return retObj } -func (obj *patternFlowIcmpEchoChecksum) ToYaml() (string, error) { +func (obj *bgpSrteColorSubTlv) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -260337,7 +306487,7 @@ func (obj *patternFlowIcmpEchoChecksum) ToYaml() (string, error) { return string(data), nil } -func (obj *patternFlowIcmpEchoChecksum) FromYaml(value string) error { +func (obj *bgpSrteColorSubTlv) FromYaml(value string) error { if value == "" { value = "{}" } @@ -260362,7 +306512,7 @@ func (obj *patternFlowIcmpEchoChecksum) FromYaml(value string) error { return nil } -func (obj *patternFlowIcmpEchoChecksum) ToJson() (string, error) { +func (obj *bgpSrteColorSubTlv) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -260380,7 +306530,7 @@ func (obj *patternFlowIcmpEchoChecksum) ToJson() (string, error) { return string(data), nil } -func (obj *patternFlowIcmpEchoChecksum) FromJson(value string) error { +func (obj *bgpSrteColorSubTlv) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -260401,19 +306551,19 @@ func (obj *patternFlowIcmpEchoChecksum) FromJson(value string) error { return nil } -func (obj *patternFlowIcmpEchoChecksum) validateToAndFrom() error { +func (obj *bgpSrteColorSubTlv) validateToAndFrom() error { // emptyVars() obj.validateObj(&obj.validation, true) return obj.validationResult() } -func (obj *patternFlowIcmpEchoChecksum) Validate() error { +func (obj *bgpSrteColorSubTlv) Validate() error { // emptyVars() obj.validateObj(&obj.validation, false) return obj.validationResult() } -func (obj *patternFlowIcmpEchoChecksum) String() string { +func (obj *bgpSrteColorSubTlv) String() string { str, err := obj.ToYaml() if err != nil { return err.Error() @@ -260421,12 +306571,12 @@ func (obj *patternFlowIcmpEchoChecksum) String() string { return str } -func (obj *patternFlowIcmpEchoChecksum) Clone() (PatternFlowIcmpEchoChecksum, error) { +func (obj *bgpSrteColorSubTlv) Clone() (BgpSrteColorSubTlv, error) { vErr := obj.Validate() if vErr != nil { return nil, vErr } - newObj := NewPatternFlowIcmpEchoChecksum() + newObj := NewBgpSrteColorSubTlv() data, err := proto.Marshal(obj.Msg()) if err != nil { return nil, err @@ -260438,210 +306588,113 @@ func (obj *patternFlowIcmpEchoChecksum) Clone() (PatternFlowIcmpEchoChecksum, er return newObj, nil } -// PatternFlowIcmpEchoChecksum is iCMP checksum -type PatternFlowIcmpEchoChecksum interface { +// BgpSrteColorSubTlv is configuration for the Policy Color attribute sub-TLV. The Color sub-TLV MAY be used as a way to "color" the corresponding Tunnel TLV. The Value field of the sub-TLV is eight octets long and consists of a Color Extended Community. First two octets of its Value field are 0x030b as type and subtype of extended community. Remaining six octets are are exposed to configure. +type BgpSrteColorSubTlv interface { Validation - // Msg marshals PatternFlowIcmpEchoChecksum to protobuf object *otg.PatternFlowIcmpEchoChecksum + // Msg marshals BgpSrteColorSubTlv to protobuf object *otg.BgpSrteColorSubTlv // and doesn't set defaults - Msg() *otg.PatternFlowIcmpEchoChecksum - // SetMsg unmarshals PatternFlowIcmpEchoChecksum from protobuf object *otg.PatternFlowIcmpEchoChecksum + Msg() *otg.BgpSrteColorSubTlv + // SetMsg unmarshals BgpSrteColorSubTlv from protobuf object *otg.BgpSrteColorSubTlv // and doesn't set defaults - SetMsg(*otg.PatternFlowIcmpEchoChecksum) PatternFlowIcmpEchoChecksum - // ToProto marshals PatternFlowIcmpEchoChecksum to protobuf object *otg.PatternFlowIcmpEchoChecksum - ToProto() (*otg.PatternFlowIcmpEchoChecksum, error) - // ToPbText marshals PatternFlowIcmpEchoChecksum to protobuf text + SetMsg(*otg.BgpSrteColorSubTlv) BgpSrteColorSubTlv + // ToProto marshals BgpSrteColorSubTlv to protobuf object *otg.BgpSrteColorSubTlv + ToProto() (*otg.BgpSrteColorSubTlv, error) + // ToPbText marshals BgpSrteColorSubTlv to protobuf text ToPbText() (string, error) - // ToYaml marshals PatternFlowIcmpEchoChecksum to YAML text + // ToYaml marshals BgpSrteColorSubTlv to YAML text ToYaml() (string, error) - // ToJson marshals PatternFlowIcmpEchoChecksum to JSON text + // ToJson marshals BgpSrteColorSubTlv to JSON text ToJson() (string, error) - // FromProto unmarshals PatternFlowIcmpEchoChecksum from protobuf object *otg.PatternFlowIcmpEchoChecksum - FromProto(msg *otg.PatternFlowIcmpEchoChecksum) (PatternFlowIcmpEchoChecksum, error) - // FromPbText unmarshals PatternFlowIcmpEchoChecksum from protobuf text + // FromProto unmarshals BgpSrteColorSubTlv from protobuf object *otg.BgpSrteColorSubTlv + FromProto(msg *otg.BgpSrteColorSubTlv) (BgpSrteColorSubTlv, error) + // FromPbText unmarshals BgpSrteColorSubTlv from protobuf text FromPbText(value string) error - // FromYaml unmarshals PatternFlowIcmpEchoChecksum from YAML text + // FromYaml unmarshals BgpSrteColorSubTlv from YAML text FromYaml(value string) error - // FromJson unmarshals PatternFlowIcmpEchoChecksum from JSON text + // FromJson unmarshals BgpSrteColorSubTlv from JSON text FromJson(value string) error - // Validate validates PatternFlowIcmpEchoChecksum + // Validate validates BgpSrteColorSubTlv Validate() error // A stringer function String() string // Clones the object - Clone() (PatternFlowIcmpEchoChecksum, error) + Clone() (BgpSrteColorSubTlv, error) validateToAndFrom() error validateObj(vObj *validation, set_default bool) setDefault() - // Choice returns PatternFlowIcmpEchoChecksumChoiceEnum, set in PatternFlowIcmpEchoChecksum - Choice() PatternFlowIcmpEchoChecksumChoiceEnum - // SetChoice assigns PatternFlowIcmpEchoChecksumChoiceEnum provided by user to PatternFlowIcmpEchoChecksum - SetChoice(value PatternFlowIcmpEchoChecksumChoiceEnum) PatternFlowIcmpEchoChecksum - // HasChoice checks if Choice has been set in PatternFlowIcmpEchoChecksum - HasChoice() bool - // Generated returns PatternFlowIcmpEchoChecksumGeneratedEnum, set in PatternFlowIcmpEchoChecksum - Generated() PatternFlowIcmpEchoChecksumGeneratedEnum - // SetGenerated assigns PatternFlowIcmpEchoChecksumGeneratedEnum provided by user to PatternFlowIcmpEchoChecksum - SetGenerated(value PatternFlowIcmpEchoChecksumGeneratedEnum) PatternFlowIcmpEchoChecksum - // HasGenerated checks if Generated has been set in PatternFlowIcmpEchoChecksum - HasGenerated() bool - // Custom returns uint32, set in PatternFlowIcmpEchoChecksum. - Custom() uint32 - // SetCustom assigns uint32 provided by user to PatternFlowIcmpEchoChecksum - SetCustom(value uint32) PatternFlowIcmpEchoChecksum - // HasCustom checks if Custom has been set in PatternFlowIcmpEchoChecksum - HasCustom() bool -} - -type PatternFlowIcmpEchoChecksumChoiceEnum string - -// Enum of Choice on PatternFlowIcmpEchoChecksum -var PatternFlowIcmpEchoChecksumChoice = struct { - GENERATED PatternFlowIcmpEchoChecksumChoiceEnum - CUSTOM PatternFlowIcmpEchoChecksumChoiceEnum -}{ - GENERATED: PatternFlowIcmpEchoChecksumChoiceEnum("generated"), - CUSTOM: PatternFlowIcmpEchoChecksumChoiceEnum("custom"), -} - -func (obj *patternFlowIcmpEchoChecksum) Choice() PatternFlowIcmpEchoChecksumChoiceEnum { - return PatternFlowIcmpEchoChecksumChoiceEnum(obj.obj.Choice.Enum().String()) -} - -// The type of checksum -// Choice returns a string -func (obj *patternFlowIcmpEchoChecksum) HasChoice() bool { - return obj.obj.Choice != nil -} - -func (obj *patternFlowIcmpEchoChecksum) SetChoice(value PatternFlowIcmpEchoChecksumChoiceEnum) PatternFlowIcmpEchoChecksum { - intValue, ok := otg.PatternFlowIcmpEchoChecksum_Choice_Enum_value[string(value)] - if !ok { - obj.validationErrors = append(obj.validationErrors, fmt.Sprintf( - "%s is not a valid choice on PatternFlowIcmpEchoChecksumChoiceEnum", string(value))) - return obj - } - enumValue := otg.PatternFlowIcmpEchoChecksum_Choice_Enum(intValue) - obj.obj.Choice = &enumValue - obj.obj.Custom = nil - obj.obj.Generated = otg.PatternFlowIcmpEchoChecksum_Generated_unspecified.Enum() - return obj -} - -type PatternFlowIcmpEchoChecksumGeneratedEnum string - -// Enum of Generated on PatternFlowIcmpEchoChecksum -var PatternFlowIcmpEchoChecksumGenerated = struct { - GOOD PatternFlowIcmpEchoChecksumGeneratedEnum - BAD PatternFlowIcmpEchoChecksumGeneratedEnum -}{ - GOOD: PatternFlowIcmpEchoChecksumGeneratedEnum("good"), - BAD: PatternFlowIcmpEchoChecksumGeneratedEnum("bad"), -} - -func (obj *patternFlowIcmpEchoChecksum) Generated() PatternFlowIcmpEchoChecksumGeneratedEnum { - return PatternFlowIcmpEchoChecksumGeneratedEnum(obj.obj.Generated.Enum().String()) -} - -// A system generated checksum value -// Generated returns a string -func (obj *patternFlowIcmpEchoChecksum) HasGenerated() bool { - return obj.obj.Generated != nil -} - -func (obj *patternFlowIcmpEchoChecksum) SetGenerated(value PatternFlowIcmpEchoChecksumGeneratedEnum) PatternFlowIcmpEchoChecksum { - intValue, ok := otg.PatternFlowIcmpEchoChecksum_Generated_Enum_value[string(value)] - if !ok { - obj.validationErrors = append(obj.validationErrors, fmt.Sprintf( - "%s is not a valid choice on PatternFlowIcmpEchoChecksumGeneratedEnum", string(value))) - return obj - } - enumValue := otg.PatternFlowIcmpEchoChecksum_Generated_Enum(intValue) - obj.obj.Generated = &enumValue - - return obj -} - -// A custom checksum value -// Custom returns a uint32 -func (obj *patternFlowIcmpEchoChecksum) Custom() uint32 { - - if obj.obj.Custom == nil { - obj.SetChoice(PatternFlowIcmpEchoChecksumChoice.CUSTOM) - } + // Color returns string, set in BgpSrteColorSubTlv. + Color() string + // SetColor assigns string provided by user to BgpSrteColorSubTlv + SetColor(value string) BgpSrteColorSubTlv + // HasColor checks if Color has been set in BgpSrteColorSubTlv + HasColor() bool +} - return *obj.obj.Custom +// Six octet values. Example: 000000000064 for color value 100. +// Color returns a string +func (obj *bgpSrteColorSubTlv) Color() string { + + return *obj.obj.Color } -// A custom checksum value -// Custom returns a uint32 -func (obj *patternFlowIcmpEchoChecksum) HasCustom() bool { - return obj.obj.Custom != nil +// Six octet values. Example: 000000000064 for color value 100. +// Color returns a string +func (obj *bgpSrteColorSubTlv) HasColor() bool { + return obj.obj.Color != nil } -// A custom checksum value -// SetCustom sets the uint32 value in the PatternFlowIcmpEchoChecksum object -func (obj *patternFlowIcmpEchoChecksum) SetCustom(value uint32) PatternFlowIcmpEchoChecksum { - obj.SetChoice(PatternFlowIcmpEchoChecksumChoice.CUSTOM) - obj.obj.Custom = &value +// Six octet values. Example: 000000000064 for color value 100. +// SetColor sets the string value in the BgpSrteColorSubTlv object +func (obj *bgpSrteColorSubTlv) SetColor(value string) BgpSrteColorSubTlv { + + obj.obj.Color = &value return obj } -func (obj *patternFlowIcmpEchoChecksum) validateObj(vObj *validation, set_default bool) { +func (obj *bgpSrteColorSubTlv) validateObj(vObj *validation, set_default bool) { if set_default { obj.setDefault() } - if obj.obj.Custom != nil { + if obj.obj.Color != nil { - if *obj.obj.Custom > 65535 { - vObj.validationErrors = append( - vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowIcmpEchoChecksum.Custom <= 65535 but Got %d", *obj.obj.Custom)) + err := obj.validateHex(obj.Color()) + if err != nil { + vObj.validationErrors = append(vObj.validationErrors, fmt.Sprintf("%s %s", err.Error(), "on BgpSrteColorSubTlv.Color")) } } } -func (obj *patternFlowIcmpEchoChecksum) setDefault() { - if obj.obj.Choice == nil { - obj.SetChoice(PatternFlowIcmpEchoChecksumChoice.GENERATED) - if obj.obj.Generated.Number() == 0 { - obj.SetGenerated(PatternFlowIcmpEchoChecksumGenerated.GOOD) - - } - - } +func (obj *bgpSrteColorSubTlv) setDefault() { } -// ***** PatternFlowIcmpEchoIdentifier ***** -type patternFlowIcmpEchoIdentifier struct { +// ***** BgpSrteBindingSubTlv ***** +type bgpSrteBindingSubTlv struct { validation - obj *otg.PatternFlowIcmpEchoIdentifier - incrementHolder PatternFlowIcmpEchoIdentifierCounter - decrementHolder PatternFlowIcmpEchoIdentifierCounter - metricTagsHolder PatternFlowIcmpEchoIdentifierPatternFlowIcmpEchoIdentifierMetricTagIter + obj *otg.BgpSrteBindingSubTlv } -func NewPatternFlowIcmpEchoIdentifier() PatternFlowIcmpEchoIdentifier { - obj := patternFlowIcmpEchoIdentifier{obj: &otg.PatternFlowIcmpEchoIdentifier{}} +func NewBgpSrteBindingSubTlv() BgpSrteBindingSubTlv { + obj := bgpSrteBindingSubTlv{obj: &otg.BgpSrteBindingSubTlv{}} obj.setDefault() return &obj } -func (obj *patternFlowIcmpEchoIdentifier) Msg() *otg.PatternFlowIcmpEchoIdentifier { +func (obj *bgpSrteBindingSubTlv) Msg() *otg.BgpSrteBindingSubTlv { return obj.obj } -func (obj *patternFlowIcmpEchoIdentifier) SetMsg(msg *otg.PatternFlowIcmpEchoIdentifier) PatternFlowIcmpEchoIdentifier { - obj.setNil() +func (obj *bgpSrteBindingSubTlv) SetMsg(msg *otg.BgpSrteBindingSubTlv) BgpSrteBindingSubTlv { + proto.Merge(obj.obj, msg) return obj } -func (obj *patternFlowIcmpEchoIdentifier) ToProto() (*otg.PatternFlowIcmpEchoIdentifier, error) { +func (obj *bgpSrteBindingSubTlv) ToProto() (*otg.BgpSrteBindingSubTlv, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -260649,7 +306702,7 @@ func (obj *patternFlowIcmpEchoIdentifier) ToProto() (*otg.PatternFlowIcmpEchoIde return obj.Msg(), nil } -func (obj *patternFlowIcmpEchoIdentifier) FromProto(msg *otg.PatternFlowIcmpEchoIdentifier) (PatternFlowIcmpEchoIdentifier, error) { +func (obj *bgpSrteBindingSubTlv) FromProto(msg *otg.BgpSrteBindingSubTlv) (BgpSrteBindingSubTlv, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -260658,7 +306711,7 @@ func (obj *patternFlowIcmpEchoIdentifier) FromProto(msg *otg.PatternFlowIcmpEcho return newObj, nil } -func (obj *patternFlowIcmpEchoIdentifier) ToPbText() (string, error) { +func (obj *bgpSrteBindingSubTlv) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -260670,12 +306723,12 @@ func (obj *patternFlowIcmpEchoIdentifier) ToPbText() (string, error) { return string(protoMarshal), nil } -func (obj *patternFlowIcmpEchoIdentifier) FromPbText(value string) error { +func (obj *bgpSrteBindingSubTlv) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj } - obj.setNil() + vErr := obj.validateToAndFrom() if vErr != nil { return vErr @@ -260683,7 +306736,7 @@ func (obj *patternFlowIcmpEchoIdentifier) FromPbText(value string) error { return retObj } -func (obj *patternFlowIcmpEchoIdentifier) ToYaml() (string, error) { +func (obj *bgpSrteBindingSubTlv) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -260704,7 +306757,7 @@ func (obj *patternFlowIcmpEchoIdentifier) ToYaml() (string, error) { return string(data), nil } -func (obj *patternFlowIcmpEchoIdentifier) FromYaml(value string) error { +func (obj *bgpSrteBindingSubTlv) FromYaml(value string) error { if value == "" { value = "{}" } @@ -260721,7 +306774,7 @@ func (obj *patternFlowIcmpEchoIdentifier) FromYaml(value string) error { return fmt.Errorf("unmarshal error %s", strings.Replace( uError.Error(), "\u00a0", " ", -1)[7:]) } - obj.setNil() + vErr := obj.validateToAndFrom() if vErr != nil { return vErr @@ -260729,7 +306782,7 @@ func (obj *patternFlowIcmpEchoIdentifier) FromYaml(value string) error { return nil } -func (obj *patternFlowIcmpEchoIdentifier) ToJson() (string, error) { +func (obj *bgpSrteBindingSubTlv) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -260747,7 +306800,7 @@ func (obj *patternFlowIcmpEchoIdentifier) ToJson() (string, error) { return string(data), nil } -func (obj *patternFlowIcmpEchoIdentifier) FromJson(value string) error { +func (obj *bgpSrteBindingSubTlv) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -260760,7 +306813,7 @@ func (obj *patternFlowIcmpEchoIdentifier) FromJson(value string) error { return fmt.Errorf("unmarshal error %s", strings.Replace( uError.Error(), "\u00a0", " ", -1)[7:]) } - obj.setNil() + err := obj.validateToAndFrom() if err != nil { return err @@ -260768,19 +306821,19 @@ func (obj *patternFlowIcmpEchoIdentifier) FromJson(value string) error { return nil } -func (obj *patternFlowIcmpEchoIdentifier) validateToAndFrom() error { +func (obj *bgpSrteBindingSubTlv) validateToAndFrom() error { // emptyVars() obj.validateObj(&obj.validation, true) return obj.validationResult() } -func (obj *patternFlowIcmpEchoIdentifier) Validate() error { +func (obj *bgpSrteBindingSubTlv) Validate() error { // emptyVars() obj.validateObj(&obj.validation, false) return obj.validationResult() } -func (obj *patternFlowIcmpEchoIdentifier) String() string { +func (obj *bgpSrteBindingSubTlv) String() string { str, err := obj.ToYaml() if err != nil { return err.Error() @@ -260788,12 +306841,12 @@ func (obj *patternFlowIcmpEchoIdentifier) String() string { return str } -func (obj *patternFlowIcmpEchoIdentifier) Clone() (PatternFlowIcmpEchoIdentifier, error) { +func (obj *bgpSrteBindingSubTlv) Clone() (BgpSrteBindingSubTlv, error) { vErr := obj.Validate() if vErr != nil { return nil, vErr } - newObj := NewPatternFlowIcmpEchoIdentifier() + newObj := NewBgpSrteBindingSubTlv() data, err := proto.Marshal(obj.Msg()) if err != nil { return nil, err @@ -260805,426 +306858,249 @@ func (obj *patternFlowIcmpEchoIdentifier) Clone() (PatternFlowIcmpEchoIdentifier return newObj, nil } -func (obj *patternFlowIcmpEchoIdentifier) setNil() { - obj.incrementHolder = nil - obj.decrementHolder = nil - obj.metricTagsHolder = nil - obj.validationErrors = nil - obj.warnings = nil - obj.constraints = make(map[string]map[string]Constraints) -} - -// PatternFlowIcmpEchoIdentifier is iCMP identifier -type PatternFlowIcmpEchoIdentifier interface { +// BgpSrteBindingSubTlv is configuration for the binding SID sub-TLV. This is used to signal the binding SID related information of the SR Policy candidate path. +type BgpSrteBindingSubTlv interface { Validation - // Msg marshals PatternFlowIcmpEchoIdentifier to protobuf object *otg.PatternFlowIcmpEchoIdentifier + // Msg marshals BgpSrteBindingSubTlv to protobuf object *otg.BgpSrteBindingSubTlv // and doesn't set defaults - Msg() *otg.PatternFlowIcmpEchoIdentifier - // SetMsg unmarshals PatternFlowIcmpEchoIdentifier from protobuf object *otg.PatternFlowIcmpEchoIdentifier + Msg() *otg.BgpSrteBindingSubTlv + // SetMsg unmarshals BgpSrteBindingSubTlv from protobuf object *otg.BgpSrteBindingSubTlv // and doesn't set defaults - SetMsg(*otg.PatternFlowIcmpEchoIdentifier) PatternFlowIcmpEchoIdentifier - // ToProto marshals PatternFlowIcmpEchoIdentifier to protobuf object *otg.PatternFlowIcmpEchoIdentifier - ToProto() (*otg.PatternFlowIcmpEchoIdentifier, error) - // ToPbText marshals PatternFlowIcmpEchoIdentifier to protobuf text + SetMsg(*otg.BgpSrteBindingSubTlv) BgpSrteBindingSubTlv + // ToProto marshals BgpSrteBindingSubTlv to protobuf object *otg.BgpSrteBindingSubTlv + ToProto() (*otg.BgpSrteBindingSubTlv, error) + // ToPbText marshals BgpSrteBindingSubTlv to protobuf text ToPbText() (string, error) - // ToYaml marshals PatternFlowIcmpEchoIdentifier to YAML text + // ToYaml marshals BgpSrteBindingSubTlv to YAML text ToYaml() (string, error) - // ToJson marshals PatternFlowIcmpEchoIdentifier to JSON text + // ToJson marshals BgpSrteBindingSubTlv to JSON text ToJson() (string, error) - // FromProto unmarshals PatternFlowIcmpEchoIdentifier from protobuf object *otg.PatternFlowIcmpEchoIdentifier - FromProto(msg *otg.PatternFlowIcmpEchoIdentifier) (PatternFlowIcmpEchoIdentifier, error) - // FromPbText unmarshals PatternFlowIcmpEchoIdentifier from protobuf text + // FromProto unmarshals BgpSrteBindingSubTlv from protobuf object *otg.BgpSrteBindingSubTlv + FromProto(msg *otg.BgpSrteBindingSubTlv) (BgpSrteBindingSubTlv, error) + // FromPbText unmarshals BgpSrteBindingSubTlv from protobuf text FromPbText(value string) error - // FromYaml unmarshals PatternFlowIcmpEchoIdentifier from YAML text + // FromYaml unmarshals BgpSrteBindingSubTlv from YAML text FromYaml(value string) error - // FromJson unmarshals PatternFlowIcmpEchoIdentifier from JSON text + // FromJson unmarshals BgpSrteBindingSubTlv from JSON text FromJson(value string) error - // Validate validates PatternFlowIcmpEchoIdentifier + // Validate validates BgpSrteBindingSubTlv Validate() error // A stringer function String() string // Clones the object - Clone() (PatternFlowIcmpEchoIdentifier, error) + Clone() (BgpSrteBindingSubTlv, error) validateToAndFrom() error validateObj(vObj *validation, set_default bool) setDefault() - // Choice returns PatternFlowIcmpEchoIdentifierChoiceEnum, set in PatternFlowIcmpEchoIdentifier - Choice() PatternFlowIcmpEchoIdentifierChoiceEnum - // SetChoice assigns PatternFlowIcmpEchoIdentifierChoiceEnum provided by user to PatternFlowIcmpEchoIdentifier - SetChoice(value PatternFlowIcmpEchoIdentifierChoiceEnum) PatternFlowIcmpEchoIdentifier - // HasChoice checks if Choice has been set in PatternFlowIcmpEchoIdentifier - HasChoice() bool - // Value returns uint32, set in PatternFlowIcmpEchoIdentifier. - Value() uint32 - // SetValue assigns uint32 provided by user to PatternFlowIcmpEchoIdentifier - SetValue(value uint32) PatternFlowIcmpEchoIdentifier - // HasValue checks if Value has been set in PatternFlowIcmpEchoIdentifier - HasValue() bool - // Values returns []uint32, set in PatternFlowIcmpEchoIdentifier. - Values() []uint32 - // SetValues assigns []uint32 provided by user to PatternFlowIcmpEchoIdentifier - SetValues(value []uint32) PatternFlowIcmpEchoIdentifier - // Increment returns PatternFlowIcmpEchoIdentifierCounter, set in PatternFlowIcmpEchoIdentifier. - // PatternFlowIcmpEchoIdentifierCounter is integer counter pattern - Increment() PatternFlowIcmpEchoIdentifierCounter - // SetIncrement assigns PatternFlowIcmpEchoIdentifierCounter provided by user to PatternFlowIcmpEchoIdentifier. - // PatternFlowIcmpEchoIdentifierCounter is integer counter pattern - SetIncrement(value PatternFlowIcmpEchoIdentifierCounter) PatternFlowIcmpEchoIdentifier - // HasIncrement checks if Increment has been set in PatternFlowIcmpEchoIdentifier - HasIncrement() bool - // Decrement returns PatternFlowIcmpEchoIdentifierCounter, set in PatternFlowIcmpEchoIdentifier. - // PatternFlowIcmpEchoIdentifierCounter is integer counter pattern - Decrement() PatternFlowIcmpEchoIdentifierCounter - // SetDecrement assigns PatternFlowIcmpEchoIdentifierCounter provided by user to PatternFlowIcmpEchoIdentifier. - // PatternFlowIcmpEchoIdentifierCounter is integer counter pattern - SetDecrement(value PatternFlowIcmpEchoIdentifierCounter) PatternFlowIcmpEchoIdentifier - // HasDecrement checks if Decrement has been set in PatternFlowIcmpEchoIdentifier - HasDecrement() bool - // MetricTags returns PatternFlowIcmpEchoIdentifierPatternFlowIcmpEchoIdentifierMetricTagIterIter, set in PatternFlowIcmpEchoIdentifier - MetricTags() PatternFlowIcmpEchoIdentifierPatternFlowIcmpEchoIdentifierMetricTagIter - setNil() + // BindingSidType returns BgpSrteBindingSubTlvBindingSidTypeEnum, set in BgpSrteBindingSubTlv + BindingSidType() BgpSrteBindingSubTlvBindingSidTypeEnum + // SetBindingSidType assigns BgpSrteBindingSubTlvBindingSidTypeEnum provided by user to BgpSrteBindingSubTlv + SetBindingSidType(value BgpSrteBindingSubTlvBindingSidTypeEnum) BgpSrteBindingSubTlv + // HasBindingSidType checks if BindingSidType has been set in BgpSrteBindingSubTlv + HasBindingSidType() bool + // FourOctetSid returns uint32, set in BgpSrteBindingSubTlv. + FourOctetSid() uint32 + // SetFourOctetSid assigns uint32 provided by user to BgpSrteBindingSubTlv + SetFourOctetSid(value uint32) BgpSrteBindingSubTlv + // HasFourOctetSid checks if FourOctetSid has been set in BgpSrteBindingSubTlv + HasFourOctetSid() bool + // Ipv6Sid returns string, set in BgpSrteBindingSubTlv. + Ipv6Sid() string + // SetIpv6Sid assigns string provided by user to BgpSrteBindingSubTlv + SetIpv6Sid(value string) BgpSrteBindingSubTlv + // HasIpv6Sid checks if Ipv6Sid has been set in BgpSrteBindingSubTlv + HasIpv6Sid() bool + // SFlag returns bool, set in BgpSrteBindingSubTlv. + SFlag() bool + // SetSFlag assigns bool provided by user to BgpSrteBindingSubTlv + SetSFlag(value bool) BgpSrteBindingSubTlv + // HasSFlag checks if SFlag has been set in BgpSrteBindingSubTlv + HasSFlag() bool + // IFlag returns bool, set in BgpSrteBindingSubTlv. + IFlag() bool + // SetIFlag assigns bool provided by user to BgpSrteBindingSubTlv + SetIFlag(value bool) BgpSrteBindingSubTlv + // HasIFlag checks if IFlag has been set in BgpSrteBindingSubTlv + HasIFlag() bool } -type PatternFlowIcmpEchoIdentifierChoiceEnum string +type BgpSrteBindingSubTlvBindingSidTypeEnum string -// Enum of Choice on PatternFlowIcmpEchoIdentifier -var PatternFlowIcmpEchoIdentifierChoice = struct { - VALUE PatternFlowIcmpEchoIdentifierChoiceEnum - VALUES PatternFlowIcmpEchoIdentifierChoiceEnum - INCREMENT PatternFlowIcmpEchoIdentifierChoiceEnum - DECREMENT PatternFlowIcmpEchoIdentifierChoiceEnum +// Enum of BindingSidType on BgpSrteBindingSubTlv +var BgpSrteBindingSubTlvBindingSidType = struct { + NO_BINDING BgpSrteBindingSubTlvBindingSidTypeEnum + FOUR_OCTET_SID BgpSrteBindingSubTlvBindingSidTypeEnum + IPV6_SID BgpSrteBindingSubTlvBindingSidTypeEnum }{ - VALUE: PatternFlowIcmpEchoIdentifierChoiceEnum("value"), - VALUES: PatternFlowIcmpEchoIdentifierChoiceEnum("values"), - INCREMENT: PatternFlowIcmpEchoIdentifierChoiceEnum("increment"), - DECREMENT: PatternFlowIcmpEchoIdentifierChoiceEnum("decrement"), + NO_BINDING: BgpSrteBindingSubTlvBindingSidTypeEnum("no_binding"), + FOUR_OCTET_SID: BgpSrteBindingSubTlvBindingSidTypeEnum("four_octet_sid"), + IPV6_SID: BgpSrteBindingSubTlvBindingSidTypeEnum("ipv6_sid"), } -func (obj *patternFlowIcmpEchoIdentifier) Choice() PatternFlowIcmpEchoIdentifierChoiceEnum { - return PatternFlowIcmpEchoIdentifierChoiceEnum(obj.obj.Choice.Enum().String()) +func (obj *bgpSrteBindingSubTlv) BindingSidType() BgpSrteBindingSubTlvBindingSidTypeEnum { + return BgpSrteBindingSubTlvBindingSidTypeEnum(obj.obj.BindingSidType.Enum().String()) } -// description is TBD -// Choice returns a string -func (obj *patternFlowIcmpEchoIdentifier) HasChoice() bool { - return obj.obj.Choice != nil +// Type of the binding SID. Supported types are "No Binding SID" or "Four Octets Sid" or "IPv6 SID". +// BindingSidType returns a string +func (obj *bgpSrteBindingSubTlv) HasBindingSidType() bool { + return obj.obj.BindingSidType != nil } -func (obj *patternFlowIcmpEchoIdentifier) SetChoice(value PatternFlowIcmpEchoIdentifierChoiceEnum) PatternFlowIcmpEchoIdentifier { - intValue, ok := otg.PatternFlowIcmpEchoIdentifier_Choice_Enum_value[string(value)] +func (obj *bgpSrteBindingSubTlv) SetBindingSidType(value BgpSrteBindingSubTlvBindingSidTypeEnum) BgpSrteBindingSubTlv { + intValue, ok := otg.BgpSrteBindingSubTlv_BindingSidType_Enum_value[string(value)] if !ok { obj.validationErrors = append(obj.validationErrors, fmt.Sprintf( - "%s is not a valid choice on PatternFlowIcmpEchoIdentifierChoiceEnum", string(value))) + "%s is not a valid choice on BgpSrteBindingSubTlvBindingSidTypeEnum", string(value))) return obj } - enumValue := otg.PatternFlowIcmpEchoIdentifier_Choice_Enum(intValue) - obj.obj.Choice = &enumValue - obj.obj.Decrement = nil - obj.decrementHolder = nil - obj.obj.Increment = nil - obj.incrementHolder = nil - obj.obj.Values = nil - obj.obj.Value = nil - - if value == PatternFlowIcmpEchoIdentifierChoice.VALUE { - defaultValue := uint32(0) - obj.obj.Value = &defaultValue - } - - if value == PatternFlowIcmpEchoIdentifierChoice.VALUES { - defaultValue := []uint32{0} - obj.obj.Values = defaultValue - } - - if value == PatternFlowIcmpEchoIdentifierChoice.INCREMENT { - obj.obj.Increment = NewPatternFlowIcmpEchoIdentifierCounter().Msg() - } - - if value == PatternFlowIcmpEchoIdentifierChoice.DECREMENT { - obj.obj.Decrement = NewPatternFlowIcmpEchoIdentifierCounter().Msg() - } + enumValue := otg.BgpSrteBindingSubTlv_BindingSidType_Enum(intValue) + obj.obj.BindingSidType = &enumValue return obj } -// description is TBD -// Value returns a uint32 -func (obj *patternFlowIcmpEchoIdentifier) Value() uint32 { - - if obj.obj.Value == nil { - obj.SetChoice(PatternFlowIcmpEchoIdentifierChoice.VALUE) - } +// Binding SID is encoded in 4 octets. +// FourOctetSid returns a uint32 +func (obj *bgpSrteBindingSubTlv) FourOctetSid() uint32 { - return *obj.obj.Value + return *obj.obj.FourOctetSid } -// description is TBD -// Value returns a uint32 -func (obj *patternFlowIcmpEchoIdentifier) HasValue() bool { - return obj.obj.Value != nil +// Binding SID is encoded in 4 octets. +// FourOctetSid returns a uint32 +func (obj *bgpSrteBindingSubTlv) HasFourOctetSid() bool { + return obj.obj.FourOctetSid != nil } -// description is TBD -// SetValue sets the uint32 value in the PatternFlowIcmpEchoIdentifier object -func (obj *patternFlowIcmpEchoIdentifier) SetValue(value uint32) PatternFlowIcmpEchoIdentifier { - obj.SetChoice(PatternFlowIcmpEchoIdentifierChoice.VALUE) - obj.obj.Value = &value - return obj -} +// Binding SID is encoded in 4 octets. +// SetFourOctetSid sets the uint32 value in the BgpSrteBindingSubTlv object +func (obj *bgpSrteBindingSubTlv) SetFourOctetSid(value uint32) BgpSrteBindingSubTlv { -// description is TBD -// Values returns a []uint32 -func (obj *patternFlowIcmpEchoIdentifier) Values() []uint32 { - if obj.obj.Values == nil { - obj.SetValues([]uint32{0}) - } - return obj.obj.Values + obj.obj.FourOctetSid = &value + return obj } -// description is TBD -// SetValues sets the []uint32 value in the PatternFlowIcmpEchoIdentifier object -func (obj *patternFlowIcmpEchoIdentifier) SetValues(value []uint32) PatternFlowIcmpEchoIdentifier { - obj.SetChoice(PatternFlowIcmpEchoIdentifierChoice.VALUES) - if obj.obj.Values == nil { - obj.obj.Values = make([]uint32, 0) - } - obj.obj.Values = value +// IPv6 SID value. +// Ipv6Sid returns a string +func (obj *bgpSrteBindingSubTlv) Ipv6Sid() string { - return obj -} + return *obj.obj.Ipv6Sid -// description is TBD -// Increment returns a PatternFlowIcmpEchoIdentifierCounter -func (obj *patternFlowIcmpEchoIdentifier) Increment() PatternFlowIcmpEchoIdentifierCounter { - if obj.obj.Increment == nil { - obj.SetChoice(PatternFlowIcmpEchoIdentifierChoice.INCREMENT) - } - if obj.incrementHolder == nil { - obj.incrementHolder = &patternFlowIcmpEchoIdentifierCounter{obj: obj.obj.Increment} - } - return obj.incrementHolder } -// description is TBD -// Increment returns a PatternFlowIcmpEchoIdentifierCounter -func (obj *patternFlowIcmpEchoIdentifier) HasIncrement() bool { - return obj.obj.Increment != nil +// IPv6 SID value. +// Ipv6Sid returns a string +func (obj *bgpSrteBindingSubTlv) HasIpv6Sid() bool { + return obj.obj.Ipv6Sid != nil } -// description is TBD -// SetIncrement sets the PatternFlowIcmpEchoIdentifierCounter value in the PatternFlowIcmpEchoIdentifier object -func (obj *patternFlowIcmpEchoIdentifier) SetIncrement(value PatternFlowIcmpEchoIdentifierCounter) PatternFlowIcmpEchoIdentifier { - obj.SetChoice(PatternFlowIcmpEchoIdentifierChoice.INCREMENT) - obj.incrementHolder = nil - obj.obj.Increment = value.Msg() +// IPv6 SID value. +// SetIpv6Sid sets the string value in the BgpSrteBindingSubTlv object +func (obj *bgpSrteBindingSubTlv) SetIpv6Sid(value string) BgpSrteBindingSubTlv { + obj.obj.Ipv6Sid = &value return obj } -// description is TBD -// Decrement returns a PatternFlowIcmpEchoIdentifierCounter -func (obj *patternFlowIcmpEchoIdentifier) Decrement() PatternFlowIcmpEchoIdentifierCounter { - if obj.obj.Decrement == nil { - obj.SetChoice(PatternFlowIcmpEchoIdentifierChoice.DECREMENT) - } - if obj.decrementHolder == nil { - obj.decrementHolder = &patternFlowIcmpEchoIdentifierCounter{obj: obj.obj.Decrement} - } - return obj.decrementHolder -} - -// description is TBD -// Decrement returns a PatternFlowIcmpEchoIdentifierCounter -func (obj *patternFlowIcmpEchoIdentifier) HasDecrement() bool { - return obj.obj.Decrement != nil -} +// S-Flag encodes the "Specified-BSID-only" behavior. +// SFlag returns a bool +func (obj *bgpSrteBindingSubTlv) SFlag() bool { -// description is TBD -// SetDecrement sets the PatternFlowIcmpEchoIdentifierCounter value in the PatternFlowIcmpEchoIdentifier object -func (obj *patternFlowIcmpEchoIdentifier) SetDecrement(value PatternFlowIcmpEchoIdentifierCounter) PatternFlowIcmpEchoIdentifier { - obj.SetChoice(PatternFlowIcmpEchoIdentifierChoice.DECREMENT) - obj.decrementHolder = nil - obj.obj.Decrement = value.Msg() + return *obj.obj.SFlag - return obj } -// One or more metric tags can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. -// MetricTags returns a []PatternFlowIcmpEchoIdentifierMetricTag -func (obj *patternFlowIcmpEchoIdentifier) MetricTags() PatternFlowIcmpEchoIdentifierPatternFlowIcmpEchoIdentifierMetricTagIter { - if len(obj.obj.MetricTags) == 0 { - obj.obj.MetricTags = []*otg.PatternFlowIcmpEchoIdentifierMetricTag{} - } - if obj.metricTagsHolder == nil { - obj.metricTagsHolder = newPatternFlowIcmpEchoIdentifierPatternFlowIcmpEchoIdentifierMetricTagIter(&obj.obj.MetricTags).setMsg(obj) - } - return obj.metricTagsHolder +// S-Flag encodes the "Specified-BSID-only" behavior. +// SFlag returns a bool +func (obj *bgpSrteBindingSubTlv) HasSFlag() bool { + return obj.obj.SFlag != nil } -type patternFlowIcmpEchoIdentifierPatternFlowIcmpEchoIdentifierMetricTagIter struct { - obj *patternFlowIcmpEchoIdentifier - patternFlowIcmpEchoIdentifierMetricTagSlice []PatternFlowIcmpEchoIdentifierMetricTag - fieldPtr *[]*otg.PatternFlowIcmpEchoIdentifierMetricTag -} +// S-Flag encodes the "Specified-BSID-only" behavior. +// SetSFlag sets the bool value in the BgpSrteBindingSubTlv object +func (obj *bgpSrteBindingSubTlv) SetSFlag(value bool) BgpSrteBindingSubTlv { -func newPatternFlowIcmpEchoIdentifierPatternFlowIcmpEchoIdentifierMetricTagIter(ptr *[]*otg.PatternFlowIcmpEchoIdentifierMetricTag) PatternFlowIcmpEchoIdentifierPatternFlowIcmpEchoIdentifierMetricTagIter { - return &patternFlowIcmpEchoIdentifierPatternFlowIcmpEchoIdentifierMetricTagIter{fieldPtr: ptr} + obj.obj.SFlag = &value + return obj } -type PatternFlowIcmpEchoIdentifierPatternFlowIcmpEchoIdentifierMetricTagIter interface { - setMsg(*patternFlowIcmpEchoIdentifier) PatternFlowIcmpEchoIdentifierPatternFlowIcmpEchoIdentifierMetricTagIter - Items() []PatternFlowIcmpEchoIdentifierMetricTag - Add() PatternFlowIcmpEchoIdentifierMetricTag - Append(items ...PatternFlowIcmpEchoIdentifierMetricTag) PatternFlowIcmpEchoIdentifierPatternFlowIcmpEchoIdentifierMetricTagIter - Set(index int, newObj PatternFlowIcmpEchoIdentifierMetricTag) PatternFlowIcmpEchoIdentifierPatternFlowIcmpEchoIdentifierMetricTagIter - Clear() PatternFlowIcmpEchoIdentifierPatternFlowIcmpEchoIdentifierMetricTagIter - clearHolderSlice() PatternFlowIcmpEchoIdentifierPatternFlowIcmpEchoIdentifierMetricTagIter - appendHolderSlice(item PatternFlowIcmpEchoIdentifierMetricTag) PatternFlowIcmpEchoIdentifierPatternFlowIcmpEchoIdentifierMetricTagIter -} +// I-Flag encodes the "Drop Upon Invalid" behavior. +// IFlag returns a bool +func (obj *bgpSrteBindingSubTlv) IFlag() bool { -func (obj *patternFlowIcmpEchoIdentifierPatternFlowIcmpEchoIdentifierMetricTagIter) setMsg(msg *patternFlowIcmpEchoIdentifier) PatternFlowIcmpEchoIdentifierPatternFlowIcmpEchoIdentifierMetricTagIter { - obj.clearHolderSlice() - for _, val := range *obj.fieldPtr { - obj.appendHolderSlice(&patternFlowIcmpEchoIdentifierMetricTag{obj: val}) - } - obj.obj = msg - return obj -} + return *obj.obj.IFlag -func (obj *patternFlowIcmpEchoIdentifierPatternFlowIcmpEchoIdentifierMetricTagIter) Items() []PatternFlowIcmpEchoIdentifierMetricTag { - return obj.patternFlowIcmpEchoIdentifierMetricTagSlice } -func (obj *patternFlowIcmpEchoIdentifierPatternFlowIcmpEchoIdentifierMetricTagIter) Add() PatternFlowIcmpEchoIdentifierMetricTag { - newObj := &otg.PatternFlowIcmpEchoIdentifierMetricTag{} - *obj.fieldPtr = append(*obj.fieldPtr, newObj) - newLibObj := &patternFlowIcmpEchoIdentifierMetricTag{obj: newObj} - newLibObj.setDefault() - obj.patternFlowIcmpEchoIdentifierMetricTagSlice = append(obj.patternFlowIcmpEchoIdentifierMetricTagSlice, newLibObj) - return newLibObj +// I-Flag encodes the "Drop Upon Invalid" behavior. +// IFlag returns a bool +func (obj *bgpSrteBindingSubTlv) HasIFlag() bool { + return obj.obj.IFlag != nil } -func (obj *patternFlowIcmpEchoIdentifierPatternFlowIcmpEchoIdentifierMetricTagIter) Append(items ...PatternFlowIcmpEchoIdentifierMetricTag) PatternFlowIcmpEchoIdentifierPatternFlowIcmpEchoIdentifierMetricTagIter { - for _, item := range items { - newObj := item.Msg() - *obj.fieldPtr = append(*obj.fieldPtr, newObj) - obj.patternFlowIcmpEchoIdentifierMetricTagSlice = append(obj.patternFlowIcmpEchoIdentifierMetricTagSlice, item) - } - return obj -} +// I-Flag encodes the "Drop Upon Invalid" behavior. +// SetIFlag sets the bool value in the BgpSrteBindingSubTlv object +func (obj *bgpSrteBindingSubTlv) SetIFlag(value bool) BgpSrteBindingSubTlv { -func (obj *patternFlowIcmpEchoIdentifierPatternFlowIcmpEchoIdentifierMetricTagIter) Set(index int, newObj PatternFlowIcmpEchoIdentifierMetricTag) PatternFlowIcmpEchoIdentifierPatternFlowIcmpEchoIdentifierMetricTagIter { - (*obj.fieldPtr)[index] = newObj.Msg() - obj.patternFlowIcmpEchoIdentifierMetricTagSlice[index] = newObj - return obj -} -func (obj *patternFlowIcmpEchoIdentifierPatternFlowIcmpEchoIdentifierMetricTagIter) Clear() PatternFlowIcmpEchoIdentifierPatternFlowIcmpEchoIdentifierMetricTagIter { - if len(*obj.fieldPtr) > 0 { - *obj.fieldPtr = []*otg.PatternFlowIcmpEchoIdentifierMetricTag{} - obj.patternFlowIcmpEchoIdentifierMetricTagSlice = []PatternFlowIcmpEchoIdentifierMetricTag{} - } - return obj -} -func (obj *patternFlowIcmpEchoIdentifierPatternFlowIcmpEchoIdentifierMetricTagIter) clearHolderSlice() PatternFlowIcmpEchoIdentifierPatternFlowIcmpEchoIdentifierMetricTagIter { - if len(obj.patternFlowIcmpEchoIdentifierMetricTagSlice) > 0 { - obj.patternFlowIcmpEchoIdentifierMetricTagSlice = []PatternFlowIcmpEchoIdentifierMetricTag{} - } - return obj -} -func (obj *patternFlowIcmpEchoIdentifierPatternFlowIcmpEchoIdentifierMetricTagIter) appendHolderSlice(item PatternFlowIcmpEchoIdentifierMetricTag) PatternFlowIcmpEchoIdentifierPatternFlowIcmpEchoIdentifierMetricTagIter { - obj.patternFlowIcmpEchoIdentifierMetricTagSlice = append(obj.patternFlowIcmpEchoIdentifierMetricTagSlice, item) + obj.obj.IFlag = &value return obj } -func (obj *patternFlowIcmpEchoIdentifier) validateObj(vObj *validation, set_default bool) { +func (obj *bgpSrteBindingSubTlv) validateObj(vObj *validation, set_default bool) { if set_default { obj.setDefault() } - if obj.obj.Value != nil { - - if *obj.obj.Value > 65535 { - vObj.validationErrors = append( - vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowIcmpEchoIdentifier.Value <= 65535 but Got %d", *obj.obj.Value)) - } - - } - - if obj.obj.Values != nil { - - for _, item := range obj.obj.Values { - if item > 65535 { - vObj.validationErrors = append( - vObj.validationErrors, - fmt.Sprintf("min(uint32) <= PatternFlowIcmpEchoIdentifier.Values <= 65535 but Got %d", item)) - } + if obj.obj.Ipv6Sid != nil { + err := obj.validateIpv6(obj.Ipv6Sid()) + if err != nil { + vObj.validationErrors = append(vObj.validationErrors, fmt.Sprintf("%s %s", err.Error(), "on BgpSrteBindingSubTlv.Ipv6Sid")) } } - if obj.obj.Increment != nil { - - obj.Increment().validateObj(vObj, set_default) - } +} - if obj.obj.Decrement != nil { +func (obj *bgpSrteBindingSubTlv) setDefault() { + if obj.obj.BindingSidType == nil { + obj.SetBindingSidType(BgpSrteBindingSubTlvBindingSidType.NO_BINDING) - obj.Decrement().validateObj(vObj, set_default) } - - if len(obj.obj.MetricTags) != 0 { - - if set_default { - obj.MetricTags().clearHolderSlice() - for _, item := range obj.obj.MetricTags { - obj.MetricTags().appendHolderSlice(&patternFlowIcmpEchoIdentifierMetricTag{obj: item}) - } - } - for _, item := range obj.MetricTags().Items() { - item.validateObj(vObj, set_default) - } - + if obj.obj.SFlag == nil { + obj.SetSFlag(false) } - -} - -func (obj *patternFlowIcmpEchoIdentifier) setDefault() { - if obj.obj.Choice == nil { - obj.SetChoice(PatternFlowIcmpEchoIdentifierChoice.VALUE) - + if obj.obj.IFlag == nil { + obj.SetIFlag(false) } } -// ***** PatternFlowIcmpEchoSequenceNumber ***** -type patternFlowIcmpEchoSequenceNumber struct { +// ***** BgpSrtePreferenceSubTlv ***** +type bgpSrtePreferenceSubTlv struct { validation - obj *otg.PatternFlowIcmpEchoSequenceNumber - incrementHolder PatternFlowIcmpEchoSequenceNumberCounter - decrementHolder PatternFlowIcmpEchoSequenceNumberCounter - metricTagsHolder PatternFlowIcmpEchoSequenceNumberPatternFlowIcmpEchoSequenceNumberMetricTagIter + obj *otg.BgpSrtePreferenceSubTlv } -func NewPatternFlowIcmpEchoSequenceNumber() PatternFlowIcmpEchoSequenceNumber { - obj := patternFlowIcmpEchoSequenceNumber{obj: &otg.PatternFlowIcmpEchoSequenceNumber{}} +func NewBgpSrtePreferenceSubTlv() BgpSrtePreferenceSubTlv { + obj := bgpSrtePreferenceSubTlv{obj: &otg.BgpSrtePreferenceSubTlv{}} obj.setDefault() return &obj } -func (obj *patternFlowIcmpEchoSequenceNumber) Msg() *otg.PatternFlowIcmpEchoSequenceNumber { +func (obj *bgpSrtePreferenceSubTlv) Msg() *otg.BgpSrtePreferenceSubTlv { return obj.obj } -func (obj *patternFlowIcmpEchoSequenceNumber) SetMsg(msg *otg.PatternFlowIcmpEchoSequenceNumber) PatternFlowIcmpEchoSequenceNumber { - obj.setNil() +func (obj *bgpSrtePreferenceSubTlv) SetMsg(msg *otg.BgpSrtePreferenceSubTlv) BgpSrtePreferenceSubTlv { + proto.Merge(obj.obj, msg) return obj } -func (obj *patternFlowIcmpEchoSequenceNumber) ToProto() (*otg.PatternFlowIcmpEchoSequenceNumber, error) { +func (obj *bgpSrtePreferenceSubTlv) ToProto() (*otg.BgpSrtePreferenceSubTlv, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -261232,7 +307108,7 @@ func (obj *patternFlowIcmpEchoSequenceNumber) ToProto() (*otg.PatternFlowIcmpEch return obj.Msg(), nil } -func (obj *patternFlowIcmpEchoSequenceNumber) FromProto(msg *otg.PatternFlowIcmpEchoSequenceNumber) (PatternFlowIcmpEchoSequenceNumber, error) { +func (obj *bgpSrtePreferenceSubTlv) FromProto(msg *otg.BgpSrtePreferenceSubTlv) (BgpSrtePreferenceSubTlv, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -261241,7 +307117,7 @@ func (obj *patternFlowIcmpEchoSequenceNumber) FromProto(msg *otg.PatternFlowIcmp return newObj, nil } -func (obj *patternFlowIcmpEchoSequenceNumber) ToPbText() (string, error) { +func (obj *bgpSrtePreferenceSubTlv) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -261253,12 +307129,12 @@ func (obj *patternFlowIcmpEchoSequenceNumber) ToPbText() (string, error) { return string(protoMarshal), nil } -func (obj *patternFlowIcmpEchoSequenceNumber) FromPbText(value string) error { +func (obj *bgpSrtePreferenceSubTlv) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj } - obj.setNil() + vErr := obj.validateToAndFrom() if vErr != nil { return vErr @@ -261266,7 +307142,7 @@ func (obj *patternFlowIcmpEchoSequenceNumber) FromPbText(value string) error { return retObj } -func (obj *patternFlowIcmpEchoSequenceNumber) ToYaml() (string, error) { +func (obj *bgpSrtePreferenceSubTlv) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -261287,7 +307163,7 @@ func (obj *patternFlowIcmpEchoSequenceNumber) ToYaml() (string, error) { return string(data), nil } -func (obj *patternFlowIcmpEchoSequenceNumber) FromYaml(value string) error { +func (obj *bgpSrtePreferenceSubTlv) FromYaml(value string) error { if value == "" { value = "{}" } @@ -261304,7 +307180,7 @@ func (obj *patternFlowIcmpEchoSequenceNumber) FromYaml(value string) error { return fmt.Errorf("unmarshal error %s", strings.Replace( uError.Error(), "\u00a0", " ", -1)[7:]) } - obj.setNil() + vErr := obj.validateToAndFrom() if vErr != nil { return vErr @@ -261312,7 +307188,7 @@ func (obj *patternFlowIcmpEchoSequenceNumber) FromYaml(value string) error { return nil } -func (obj *patternFlowIcmpEchoSequenceNumber) ToJson() (string, error) { +func (obj *bgpSrtePreferenceSubTlv) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -261330,7 +307206,7 @@ func (obj *patternFlowIcmpEchoSequenceNumber) ToJson() (string, error) { return string(data), nil } -func (obj *patternFlowIcmpEchoSequenceNumber) FromJson(value string) error { +func (obj *bgpSrtePreferenceSubTlv) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -261343,7 +307219,7 @@ func (obj *patternFlowIcmpEchoSequenceNumber) FromJson(value string) error { return fmt.Errorf("unmarshal error %s", strings.Replace( uError.Error(), "\u00a0", " ", -1)[7:]) } - obj.setNil() + err := obj.validateToAndFrom() if err != nil { return err @@ -261351,19 +307227,19 @@ func (obj *patternFlowIcmpEchoSequenceNumber) FromJson(value string) error { return nil } -func (obj *patternFlowIcmpEchoSequenceNumber) validateToAndFrom() error { +func (obj *bgpSrtePreferenceSubTlv) validateToAndFrom() error { // emptyVars() obj.validateObj(&obj.validation, true) return obj.validationResult() } -func (obj *patternFlowIcmpEchoSequenceNumber) Validate() error { +func (obj *bgpSrtePreferenceSubTlv) Validate() error { // emptyVars() obj.validateObj(&obj.validation, false) return obj.validationResult() } -func (obj *patternFlowIcmpEchoSequenceNumber) String() string { +func (obj *bgpSrtePreferenceSubTlv) String() string { str, err := obj.ToYaml() if err != nil { return err.Error() @@ -261371,12 +307247,12 @@ func (obj *patternFlowIcmpEchoSequenceNumber) String() string { return str } -func (obj *patternFlowIcmpEchoSequenceNumber) Clone() (PatternFlowIcmpEchoSequenceNumber, error) { +func (obj *bgpSrtePreferenceSubTlv) Clone() (BgpSrtePreferenceSubTlv, error) { vErr := obj.Validate() if vErr != nil { return nil, vErr } - newObj := NewPatternFlowIcmpEchoSequenceNumber() + newObj := NewBgpSrtePreferenceSubTlv() data, err := proto.Marshal(obj.Msg()) if err != nil { return nil, err @@ -261388,426 +307264,378 @@ func (obj *patternFlowIcmpEchoSequenceNumber) Clone() (PatternFlowIcmpEchoSequen return newObj, nil } -func (obj *patternFlowIcmpEchoSequenceNumber) setNil() { - obj.incrementHolder = nil - obj.decrementHolder = nil - obj.metricTagsHolder = nil - obj.validationErrors = nil - obj.warnings = nil - obj.constraints = make(map[string]map[string]Constraints) -} - -// PatternFlowIcmpEchoSequenceNumber is iCMP sequence number -type PatternFlowIcmpEchoSequenceNumber interface { +// BgpSrtePreferenceSubTlv is configuration for BGP preference sub TLV of the SR Policy candidate path. +type BgpSrtePreferenceSubTlv interface { Validation - // Msg marshals PatternFlowIcmpEchoSequenceNumber to protobuf object *otg.PatternFlowIcmpEchoSequenceNumber + // Msg marshals BgpSrtePreferenceSubTlv to protobuf object *otg.BgpSrtePreferenceSubTlv // and doesn't set defaults - Msg() *otg.PatternFlowIcmpEchoSequenceNumber - // SetMsg unmarshals PatternFlowIcmpEchoSequenceNumber from protobuf object *otg.PatternFlowIcmpEchoSequenceNumber + Msg() *otg.BgpSrtePreferenceSubTlv + // SetMsg unmarshals BgpSrtePreferenceSubTlv from protobuf object *otg.BgpSrtePreferenceSubTlv // and doesn't set defaults - SetMsg(*otg.PatternFlowIcmpEchoSequenceNumber) PatternFlowIcmpEchoSequenceNumber - // ToProto marshals PatternFlowIcmpEchoSequenceNumber to protobuf object *otg.PatternFlowIcmpEchoSequenceNumber - ToProto() (*otg.PatternFlowIcmpEchoSequenceNumber, error) - // ToPbText marshals PatternFlowIcmpEchoSequenceNumber to protobuf text + SetMsg(*otg.BgpSrtePreferenceSubTlv) BgpSrtePreferenceSubTlv + // ToProto marshals BgpSrtePreferenceSubTlv to protobuf object *otg.BgpSrtePreferenceSubTlv + ToProto() (*otg.BgpSrtePreferenceSubTlv, error) + // ToPbText marshals BgpSrtePreferenceSubTlv to protobuf text ToPbText() (string, error) - // ToYaml marshals PatternFlowIcmpEchoSequenceNumber to YAML text + // ToYaml marshals BgpSrtePreferenceSubTlv to YAML text ToYaml() (string, error) - // ToJson marshals PatternFlowIcmpEchoSequenceNumber to JSON text + // ToJson marshals BgpSrtePreferenceSubTlv to JSON text ToJson() (string, error) - // FromProto unmarshals PatternFlowIcmpEchoSequenceNumber from protobuf object *otg.PatternFlowIcmpEchoSequenceNumber - FromProto(msg *otg.PatternFlowIcmpEchoSequenceNumber) (PatternFlowIcmpEchoSequenceNumber, error) - // FromPbText unmarshals PatternFlowIcmpEchoSequenceNumber from protobuf text + // FromProto unmarshals BgpSrtePreferenceSubTlv from protobuf object *otg.BgpSrtePreferenceSubTlv + FromProto(msg *otg.BgpSrtePreferenceSubTlv) (BgpSrtePreferenceSubTlv, error) + // FromPbText unmarshals BgpSrtePreferenceSubTlv from protobuf text FromPbText(value string) error - // FromYaml unmarshals PatternFlowIcmpEchoSequenceNumber from YAML text + // FromYaml unmarshals BgpSrtePreferenceSubTlv from YAML text FromYaml(value string) error - // FromJson unmarshals PatternFlowIcmpEchoSequenceNumber from JSON text + // FromJson unmarshals BgpSrtePreferenceSubTlv from JSON text FromJson(value string) error - // Validate validates PatternFlowIcmpEchoSequenceNumber + // Validate validates BgpSrtePreferenceSubTlv Validate() error // A stringer function String() string // Clones the object - Clone() (PatternFlowIcmpEchoSequenceNumber, error) + Clone() (BgpSrtePreferenceSubTlv, error) validateToAndFrom() error validateObj(vObj *validation, set_default bool) setDefault() - // Choice returns PatternFlowIcmpEchoSequenceNumberChoiceEnum, set in PatternFlowIcmpEchoSequenceNumber - Choice() PatternFlowIcmpEchoSequenceNumberChoiceEnum - // SetChoice assigns PatternFlowIcmpEchoSequenceNumberChoiceEnum provided by user to PatternFlowIcmpEchoSequenceNumber - SetChoice(value PatternFlowIcmpEchoSequenceNumberChoiceEnum) PatternFlowIcmpEchoSequenceNumber - // HasChoice checks if Choice has been set in PatternFlowIcmpEchoSequenceNumber - HasChoice() bool - // Value returns uint32, set in PatternFlowIcmpEchoSequenceNumber. - Value() uint32 - // SetValue assigns uint32 provided by user to PatternFlowIcmpEchoSequenceNumber - SetValue(value uint32) PatternFlowIcmpEchoSequenceNumber - // HasValue checks if Value has been set in PatternFlowIcmpEchoSequenceNumber - HasValue() bool - // Values returns []uint32, set in PatternFlowIcmpEchoSequenceNumber. - Values() []uint32 - // SetValues assigns []uint32 provided by user to PatternFlowIcmpEchoSequenceNumber - SetValues(value []uint32) PatternFlowIcmpEchoSequenceNumber - // Increment returns PatternFlowIcmpEchoSequenceNumberCounter, set in PatternFlowIcmpEchoSequenceNumber. - // PatternFlowIcmpEchoSequenceNumberCounter is integer counter pattern - Increment() PatternFlowIcmpEchoSequenceNumberCounter - // SetIncrement assigns PatternFlowIcmpEchoSequenceNumberCounter provided by user to PatternFlowIcmpEchoSequenceNumber. - // PatternFlowIcmpEchoSequenceNumberCounter is integer counter pattern - SetIncrement(value PatternFlowIcmpEchoSequenceNumberCounter) PatternFlowIcmpEchoSequenceNumber - // HasIncrement checks if Increment has been set in PatternFlowIcmpEchoSequenceNumber - HasIncrement() bool - // Decrement returns PatternFlowIcmpEchoSequenceNumberCounter, set in PatternFlowIcmpEchoSequenceNumber. - // PatternFlowIcmpEchoSequenceNumberCounter is integer counter pattern - Decrement() PatternFlowIcmpEchoSequenceNumberCounter - // SetDecrement assigns PatternFlowIcmpEchoSequenceNumberCounter provided by user to PatternFlowIcmpEchoSequenceNumber. - // PatternFlowIcmpEchoSequenceNumberCounter is integer counter pattern - SetDecrement(value PatternFlowIcmpEchoSequenceNumberCounter) PatternFlowIcmpEchoSequenceNumber - // HasDecrement checks if Decrement has been set in PatternFlowIcmpEchoSequenceNumber - HasDecrement() bool - // MetricTags returns PatternFlowIcmpEchoSequenceNumberPatternFlowIcmpEchoSequenceNumberMetricTagIterIter, set in PatternFlowIcmpEchoSequenceNumber - MetricTags() PatternFlowIcmpEchoSequenceNumberPatternFlowIcmpEchoSequenceNumberMetricTagIter - setNil() + // Preference returns uint32, set in BgpSrtePreferenceSubTlv. + Preference() uint32 + // SetPreference assigns uint32 provided by user to BgpSrtePreferenceSubTlv + SetPreference(value uint32) BgpSrtePreferenceSubTlv + // HasPreference checks if Preference has been set in BgpSrtePreferenceSubTlv + HasPreference() bool } -type PatternFlowIcmpEchoSequenceNumberChoiceEnum string +// The preference value of the SR Policy candidate path. +// Preference returns a uint32 +func (obj *bgpSrtePreferenceSubTlv) Preference() uint32 { -// Enum of Choice on PatternFlowIcmpEchoSequenceNumber -var PatternFlowIcmpEchoSequenceNumberChoice = struct { - VALUE PatternFlowIcmpEchoSequenceNumberChoiceEnum - VALUES PatternFlowIcmpEchoSequenceNumberChoiceEnum - INCREMENT PatternFlowIcmpEchoSequenceNumberChoiceEnum - DECREMENT PatternFlowIcmpEchoSequenceNumberChoiceEnum -}{ - VALUE: PatternFlowIcmpEchoSequenceNumberChoiceEnum("value"), - VALUES: PatternFlowIcmpEchoSequenceNumberChoiceEnum("values"), - INCREMENT: PatternFlowIcmpEchoSequenceNumberChoiceEnum("increment"), - DECREMENT: PatternFlowIcmpEchoSequenceNumberChoiceEnum("decrement"), -} + return *obj.obj.Preference -func (obj *patternFlowIcmpEchoSequenceNumber) Choice() PatternFlowIcmpEchoSequenceNumberChoiceEnum { - return PatternFlowIcmpEchoSequenceNumberChoiceEnum(obj.obj.Choice.Enum().String()) } -// description is TBD -// Choice returns a string -func (obj *patternFlowIcmpEchoSequenceNumber) HasChoice() bool { - return obj.obj.Choice != nil +// The preference value of the SR Policy candidate path. +// Preference returns a uint32 +func (obj *bgpSrtePreferenceSubTlv) HasPreference() bool { + return obj.obj.Preference != nil } -func (obj *patternFlowIcmpEchoSequenceNumber) SetChoice(value PatternFlowIcmpEchoSequenceNumberChoiceEnum) PatternFlowIcmpEchoSequenceNumber { - intValue, ok := otg.PatternFlowIcmpEchoSequenceNumber_Choice_Enum_value[string(value)] - if !ok { - obj.validationErrors = append(obj.validationErrors, fmt.Sprintf( - "%s is not a valid choice on PatternFlowIcmpEchoSequenceNumberChoiceEnum", string(value))) - return obj - } - enumValue := otg.PatternFlowIcmpEchoSequenceNumber_Choice_Enum(intValue) - obj.obj.Choice = &enumValue - obj.obj.Decrement = nil - obj.decrementHolder = nil - obj.obj.Increment = nil - obj.incrementHolder = nil - obj.obj.Values = nil - obj.obj.Value = nil +// The preference value of the SR Policy candidate path. +// SetPreference sets the uint32 value in the BgpSrtePreferenceSubTlv object +func (obj *bgpSrtePreferenceSubTlv) SetPreference(value uint32) BgpSrtePreferenceSubTlv { - if value == PatternFlowIcmpEchoSequenceNumberChoice.VALUE { - defaultValue := uint32(0) - obj.obj.Value = &defaultValue - } + obj.obj.Preference = &value + return obj +} - if value == PatternFlowIcmpEchoSequenceNumberChoice.VALUES { - defaultValue := []uint32{0} - obj.obj.Values = defaultValue +func (obj *bgpSrtePreferenceSubTlv) validateObj(vObj *validation, set_default bool) { + if set_default { + obj.setDefault() } - if value == PatternFlowIcmpEchoSequenceNumberChoice.INCREMENT { - obj.obj.Increment = NewPatternFlowIcmpEchoSequenceNumberCounter().Msg() - } +} - if value == PatternFlowIcmpEchoSequenceNumberChoice.DECREMENT { - obj.obj.Decrement = NewPatternFlowIcmpEchoSequenceNumberCounter().Msg() +func (obj *bgpSrtePreferenceSubTlv) setDefault() { + if obj.obj.Preference == nil { + obj.SetPreference(0) } - return obj } -// description is TBD -// Value returns a uint32 -func (obj *patternFlowIcmpEchoSequenceNumber) Value() uint32 { - - if obj.obj.Value == nil { - obj.SetChoice(PatternFlowIcmpEchoSequenceNumberChoice.VALUE) - } - - return *obj.obj.Value +// ***** BgpSrtePolicyPrioritySubTlv ***** +type bgpSrtePolicyPrioritySubTlv struct { + validation + obj *otg.BgpSrtePolicyPrioritySubTlv +} +func NewBgpSrtePolicyPrioritySubTlv() BgpSrtePolicyPrioritySubTlv { + obj := bgpSrtePolicyPrioritySubTlv{obj: &otg.BgpSrtePolicyPrioritySubTlv{}} + obj.setDefault() + return &obj } -// description is TBD -// Value returns a uint32 -func (obj *patternFlowIcmpEchoSequenceNumber) HasValue() bool { - return obj.obj.Value != nil +func (obj *bgpSrtePolicyPrioritySubTlv) Msg() *otg.BgpSrtePolicyPrioritySubTlv { + return obj.obj } -// description is TBD -// SetValue sets the uint32 value in the PatternFlowIcmpEchoSequenceNumber object -func (obj *patternFlowIcmpEchoSequenceNumber) SetValue(value uint32) PatternFlowIcmpEchoSequenceNumber { - obj.SetChoice(PatternFlowIcmpEchoSequenceNumberChoice.VALUE) - obj.obj.Value = &value +func (obj *bgpSrtePolicyPrioritySubTlv) SetMsg(msg *otg.BgpSrtePolicyPrioritySubTlv) BgpSrtePolicyPrioritySubTlv { + + proto.Merge(obj.obj, msg) return obj } -// description is TBD -// Values returns a []uint32 -func (obj *patternFlowIcmpEchoSequenceNumber) Values() []uint32 { - if obj.obj.Values == nil { - obj.SetValues([]uint32{0}) +func (obj *bgpSrtePolicyPrioritySubTlv) ToProto() (*otg.BgpSrtePolicyPrioritySubTlv, error) { + err := obj.validateToAndFrom() + if err != nil { + return nil, err } - return obj.obj.Values + return obj.Msg(), nil } -// description is TBD -// SetValues sets the []uint32 value in the PatternFlowIcmpEchoSequenceNumber object -func (obj *patternFlowIcmpEchoSequenceNumber) SetValues(value []uint32) PatternFlowIcmpEchoSequenceNumber { - obj.SetChoice(PatternFlowIcmpEchoSequenceNumberChoice.VALUES) - if obj.obj.Values == nil { - obj.obj.Values = make([]uint32, 0) +func (obj *bgpSrtePolicyPrioritySubTlv) FromProto(msg *otg.BgpSrtePolicyPrioritySubTlv) (BgpSrtePolicyPrioritySubTlv, error) { + newObj := obj.SetMsg(msg) + err := newObj.validateToAndFrom() + if err != nil { + return nil, err } - obj.obj.Values = value - - return obj + return newObj, nil } -// description is TBD -// Increment returns a PatternFlowIcmpEchoSequenceNumberCounter -func (obj *patternFlowIcmpEchoSequenceNumber) Increment() PatternFlowIcmpEchoSequenceNumberCounter { - if obj.obj.Increment == nil { - obj.SetChoice(PatternFlowIcmpEchoSequenceNumberChoice.INCREMENT) +func (obj *bgpSrtePolicyPrioritySubTlv) ToPbText() (string, error) { + vErr := obj.validateToAndFrom() + if vErr != nil { + return "", vErr } - if obj.incrementHolder == nil { - obj.incrementHolder = &patternFlowIcmpEchoSequenceNumberCounter{obj: obj.obj.Increment} + protoMarshal, err := proto.Marshal(obj.Msg()) + if err != nil { + return "", err } - return obj.incrementHolder -} - -// description is TBD -// Increment returns a PatternFlowIcmpEchoSequenceNumberCounter -func (obj *patternFlowIcmpEchoSequenceNumber) HasIncrement() bool { - return obj.obj.Increment != nil + return string(protoMarshal), nil } -// description is TBD -// SetIncrement sets the PatternFlowIcmpEchoSequenceNumberCounter value in the PatternFlowIcmpEchoSequenceNumber object -func (obj *patternFlowIcmpEchoSequenceNumber) SetIncrement(value PatternFlowIcmpEchoSequenceNumberCounter) PatternFlowIcmpEchoSequenceNumber { - obj.SetChoice(PatternFlowIcmpEchoSequenceNumberChoice.INCREMENT) - obj.incrementHolder = nil - obj.obj.Increment = value.Msg() +func (obj *bgpSrtePolicyPrioritySubTlv) FromPbText(value string) error { + retObj := proto.Unmarshal([]byte(value), obj.Msg()) + if retObj != nil { + return retObj + } - return obj + vErr := obj.validateToAndFrom() + if vErr != nil { + return vErr + } + return retObj } -// description is TBD -// Decrement returns a PatternFlowIcmpEchoSequenceNumberCounter -func (obj *patternFlowIcmpEchoSequenceNumber) Decrement() PatternFlowIcmpEchoSequenceNumberCounter { - if obj.obj.Decrement == nil { - obj.SetChoice(PatternFlowIcmpEchoSequenceNumberChoice.DECREMENT) +func (obj *bgpSrtePolicyPrioritySubTlv) ToYaml() (string, error) { + vErr := obj.validateToAndFrom() + if vErr != nil { + return "", vErr } - if obj.decrementHolder == nil { - obj.decrementHolder = &patternFlowIcmpEchoSequenceNumberCounter{obj: obj.obj.Decrement} + opts := protojson.MarshalOptions{ + UseProtoNames: true, + AllowPartial: true, + EmitUnpopulated: false, } - return obj.decrementHolder + data, err := opts.Marshal(obj.Msg()) + if err != nil { + return "", err + } + data, err = yaml.JSONToYAML(data) + if err != nil { + return "", err + } + return string(data), nil } -// description is TBD -// Decrement returns a PatternFlowIcmpEchoSequenceNumberCounter -func (obj *patternFlowIcmpEchoSequenceNumber) HasDecrement() bool { - return obj.obj.Decrement != nil -} +func (obj *bgpSrtePolicyPrioritySubTlv) FromYaml(value string) error { + if value == "" { + value = "{}" + } + data, err := yaml.YAMLToJSON([]byte(value)) + if err != nil { + return err + } + opts := protojson.UnmarshalOptions{ + AllowPartial: true, + DiscardUnknown: false, + } + uError := opts.Unmarshal([]byte(data), obj.Msg()) + if uError != nil { + return fmt.Errorf("unmarshal error %s", strings.Replace( + uError.Error(), "\u00a0", " ", -1)[7:]) + } -// description is TBD -// SetDecrement sets the PatternFlowIcmpEchoSequenceNumberCounter value in the PatternFlowIcmpEchoSequenceNumber object -func (obj *patternFlowIcmpEchoSequenceNumber) SetDecrement(value PatternFlowIcmpEchoSequenceNumberCounter) PatternFlowIcmpEchoSequenceNumber { - obj.SetChoice(PatternFlowIcmpEchoSequenceNumberChoice.DECREMENT) - obj.decrementHolder = nil - obj.obj.Decrement = value.Msg() + vErr := obj.validateToAndFrom() + if vErr != nil { + return vErr + } + return nil +} - return obj +func (obj *bgpSrtePolicyPrioritySubTlv) ToJson() (string, error) { + vErr := obj.validateToAndFrom() + if vErr != nil { + return "", vErr + } + opts := protojson.MarshalOptions{ + UseProtoNames: true, + AllowPartial: true, + EmitUnpopulated: false, + Indent: " ", + } + data, err := opts.Marshal(obj.Msg()) + if err != nil { + return "", err + } + return string(data), nil } -// One or more metric tags can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. -// MetricTags returns a []PatternFlowIcmpEchoSequenceNumberMetricTag -func (obj *patternFlowIcmpEchoSequenceNumber) MetricTags() PatternFlowIcmpEchoSequenceNumberPatternFlowIcmpEchoSequenceNumberMetricTagIter { - if len(obj.obj.MetricTags) == 0 { - obj.obj.MetricTags = []*otg.PatternFlowIcmpEchoSequenceNumberMetricTag{} +func (obj *bgpSrtePolicyPrioritySubTlv) FromJson(value string) error { + opts := protojson.UnmarshalOptions{ + AllowPartial: true, + DiscardUnknown: false, } - if obj.metricTagsHolder == nil { - obj.metricTagsHolder = newPatternFlowIcmpEchoSequenceNumberPatternFlowIcmpEchoSequenceNumberMetricTagIter(&obj.obj.MetricTags).setMsg(obj) + if value == "" { + value = "{}" } - return obj.metricTagsHolder + uError := opts.Unmarshal([]byte(value), obj.Msg()) + if uError != nil { + return fmt.Errorf("unmarshal error %s", strings.Replace( + uError.Error(), "\u00a0", " ", -1)[7:]) + } + + err := obj.validateToAndFrom() + if err != nil { + return err + } + return nil } -type patternFlowIcmpEchoSequenceNumberPatternFlowIcmpEchoSequenceNumberMetricTagIter struct { - obj *patternFlowIcmpEchoSequenceNumber - patternFlowIcmpEchoSequenceNumberMetricTagSlice []PatternFlowIcmpEchoSequenceNumberMetricTag - fieldPtr *[]*otg.PatternFlowIcmpEchoSequenceNumberMetricTag +func (obj *bgpSrtePolicyPrioritySubTlv) validateToAndFrom() error { + // emptyVars() + obj.validateObj(&obj.validation, true) + return obj.validationResult() } -func newPatternFlowIcmpEchoSequenceNumberPatternFlowIcmpEchoSequenceNumberMetricTagIter(ptr *[]*otg.PatternFlowIcmpEchoSequenceNumberMetricTag) PatternFlowIcmpEchoSequenceNumberPatternFlowIcmpEchoSequenceNumberMetricTagIter { - return &patternFlowIcmpEchoSequenceNumberPatternFlowIcmpEchoSequenceNumberMetricTagIter{fieldPtr: ptr} +func (obj *bgpSrtePolicyPrioritySubTlv) Validate() error { + // emptyVars() + obj.validateObj(&obj.validation, false) + return obj.validationResult() } -type PatternFlowIcmpEchoSequenceNumberPatternFlowIcmpEchoSequenceNumberMetricTagIter interface { - setMsg(*patternFlowIcmpEchoSequenceNumber) PatternFlowIcmpEchoSequenceNumberPatternFlowIcmpEchoSequenceNumberMetricTagIter - Items() []PatternFlowIcmpEchoSequenceNumberMetricTag - Add() PatternFlowIcmpEchoSequenceNumberMetricTag - Append(items ...PatternFlowIcmpEchoSequenceNumberMetricTag) PatternFlowIcmpEchoSequenceNumberPatternFlowIcmpEchoSequenceNumberMetricTagIter - Set(index int, newObj PatternFlowIcmpEchoSequenceNumberMetricTag) PatternFlowIcmpEchoSequenceNumberPatternFlowIcmpEchoSequenceNumberMetricTagIter - Clear() PatternFlowIcmpEchoSequenceNumberPatternFlowIcmpEchoSequenceNumberMetricTagIter - clearHolderSlice() PatternFlowIcmpEchoSequenceNumberPatternFlowIcmpEchoSequenceNumberMetricTagIter - appendHolderSlice(item PatternFlowIcmpEchoSequenceNumberMetricTag) PatternFlowIcmpEchoSequenceNumberPatternFlowIcmpEchoSequenceNumberMetricTagIter +func (obj *bgpSrtePolicyPrioritySubTlv) String() string { + str, err := obj.ToYaml() + if err != nil { + return err.Error() + } + return str } -func (obj *patternFlowIcmpEchoSequenceNumberPatternFlowIcmpEchoSequenceNumberMetricTagIter) setMsg(msg *patternFlowIcmpEchoSequenceNumber) PatternFlowIcmpEchoSequenceNumberPatternFlowIcmpEchoSequenceNumberMetricTagIter { - obj.clearHolderSlice() - for _, val := range *obj.fieldPtr { - obj.appendHolderSlice(&patternFlowIcmpEchoSequenceNumberMetricTag{obj: val}) +func (obj *bgpSrtePolicyPrioritySubTlv) Clone() (BgpSrtePolicyPrioritySubTlv, error) { + vErr := obj.Validate() + if vErr != nil { + return nil, vErr } - obj.obj = msg - return obj + newObj := NewBgpSrtePolicyPrioritySubTlv() + data, err := proto.Marshal(obj.Msg()) + if err != nil { + return nil, err + } + pbErr := proto.Unmarshal(data, newObj.Msg()) + if pbErr != nil { + return nil, pbErr + } + return newObj, nil +} + +// BgpSrtePolicyPrioritySubTlv is configuration for the Policy Priority sub-TLV. The Policy Priority to indicate the order in which the SR policies are re-computed upon topological change. +type BgpSrtePolicyPrioritySubTlv interface { + Validation + // Msg marshals BgpSrtePolicyPrioritySubTlv to protobuf object *otg.BgpSrtePolicyPrioritySubTlv + // and doesn't set defaults + Msg() *otg.BgpSrtePolicyPrioritySubTlv + // SetMsg unmarshals BgpSrtePolicyPrioritySubTlv from protobuf object *otg.BgpSrtePolicyPrioritySubTlv + // and doesn't set defaults + SetMsg(*otg.BgpSrtePolicyPrioritySubTlv) BgpSrtePolicyPrioritySubTlv + // ToProto marshals BgpSrtePolicyPrioritySubTlv to protobuf object *otg.BgpSrtePolicyPrioritySubTlv + ToProto() (*otg.BgpSrtePolicyPrioritySubTlv, error) + // ToPbText marshals BgpSrtePolicyPrioritySubTlv to protobuf text + ToPbText() (string, error) + // ToYaml marshals BgpSrtePolicyPrioritySubTlv to YAML text + ToYaml() (string, error) + // ToJson marshals BgpSrtePolicyPrioritySubTlv to JSON text + ToJson() (string, error) + // FromProto unmarshals BgpSrtePolicyPrioritySubTlv from protobuf object *otg.BgpSrtePolicyPrioritySubTlv + FromProto(msg *otg.BgpSrtePolicyPrioritySubTlv) (BgpSrtePolicyPrioritySubTlv, error) + // FromPbText unmarshals BgpSrtePolicyPrioritySubTlv from protobuf text + FromPbText(value string) error + // FromYaml unmarshals BgpSrtePolicyPrioritySubTlv from YAML text + FromYaml(value string) error + // FromJson unmarshals BgpSrtePolicyPrioritySubTlv from JSON text + FromJson(value string) error + // Validate validates BgpSrtePolicyPrioritySubTlv + Validate() error + // A stringer function + String() string + // Clones the object + Clone() (BgpSrtePolicyPrioritySubTlv, error) + validateToAndFrom() error + validateObj(vObj *validation, set_default bool) + setDefault() + // PolicyPriority returns uint32, set in BgpSrtePolicyPrioritySubTlv. + PolicyPriority() uint32 + // SetPolicyPriority assigns uint32 provided by user to BgpSrtePolicyPrioritySubTlv + SetPolicyPriority(value uint32) BgpSrtePolicyPrioritySubTlv + // HasPolicyPriority checks if PolicyPriority has been set in BgpSrtePolicyPrioritySubTlv + HasPolicyPriority() bool } -func (obj *patternFlowIcmpEchoSequenceNumberPatternFlowIcmpEchoSequenceNumberMetricTagIter) Items() []PatternFlowIcmpEchoSequenceNumberMetricTag { - return obj.patternFlowIcmpEchoSequenceNumberMetricTagSlice -} +// One-octet Priority value. +// PolicyPriority returns a uint32 +func (obj *bgpSrtePolicyPrioritySubTlv) PolicyPriority() uint32 { -func (obj *patternFlowIcmpEchoSequenceNumberPatternFlowIcmpEchoSequenceNumberMetricTagIter) Add() PatternFlowIcmpEchoSequenceNumberMetricTag { - newObj := &otg.PatternFlowIcmpEchoSequenceNumberMetricTag{} - *obj.fieldPtr = append(*obj.fieldPtr, newObj) - newLibObj := &patternFlowIcmpEchoSequenceNumberMetricTag{obj: newObj} - newLibObj.setDefault() - obj.patternFlowIcmpEchoSequenceNumberMetricTagSlice = append(obj.patternFlowIcmpEchoSequenceNumberMetricTagSlice, newLibObj) - return newLibObj -} + return *obj.obj.PolicyPriority -func (obj *patternFlowIcmpEchoSequenceNumberPatternFlowIcmpEchoSequenceNumberMetricTagIter) Append(items ...PatternFlowIcmpEchoSequenceNumberMetricTag) PatternFlowIcmpEchoSequenceNumberPatternFlowIcmpEchoSequenceNumberMetricTagIter { - for _, item := range items { - newObj := item.Msg() - *obj.fieldPtr = append(*obj.fieldPtr, newObj) - obj.patternFlowIcmpEchoSequenceNumberMetricTagSlice = append(obj.patternFlowIcmpEchoSequenceNumberMetricTagSlice, item) - } - return obj } -func (obj *patternFlowIcmpEchoSequenceNumberPatternFlowIcmpEchoSequenceNumberMetricTagIter) Set(index int, newObj PatternFlowIcmpEchoSequenceNumberMetricTag) PatternFlowIcmpEchoSequenceNumberPatternFlowIcmpEchoSequenceNumberMetricTagIter { - (*obj.fieldPtr)[index] = newObj.Msg() - obj.patternFlowIcmpEchoSequenceNumberMetricTagSlice[index] = newObj - return obj -} -func (obj *patternFlowIcmpEchoSequenceNumberPatternFlowIcmpEchoSequenceNumberMetricTagIter) Clear() PatternFlowIcmpEchoSequenceNumberPatternFlowIcmpEchoSequenceNumberMetricTagIter { - if len(*obj.fieldPtr) > 0 { - *obj.fieldPtr = []*otg.PatternFlowIcmpEchoSequenceNumberMetricTag{} - obj.patternFlowIcmpEchoSequenceNumberMetricTagSlice = []PatternFlowIcmpEchoSequenceNumberMetricTag{} - } - return obj -} -func (obj *patternFlowIcmpEchoSequenceNumberPatternFlowIcmpEchoSequenceNumberMetricTagIter) clearHolderSlice() PatternFlowIcmpEchoSequenceNumberPatternFlowIcmpEchoSequenceNumberMetricTagIter { - if len(obj.patternFlowIcmpEchoSequenceNumberMetricTagSlice) > 0 { - obj.patternFlowIcmpEchoSequenceNumberMetricTagSlice = []PatternFlowIcmpEchoSequenceNumberMetricTag{} - } - return obj +// One-octet Priority value. +// PolicyPriority returns a uint32 +func (obj *bgpSrtePolicyPrioritySubTlv) HasPolicyPriority() bool { + return obj.obj.PolicyPriority != nil } -func (obj *patternFlowIcmpEchoSequenceNumberPatternFlowIcmpEchoSequenceNumberMetricTagIter) appendHolderSlice(item PatternFlowIcmpEchoSequenceNumberMetricTag) PatternFlowIcmpEchoSequenceNumberPatternFlowIcmpEchoSequenceNumberMetricTagIter { - obj.patternFlowIcmpEchoSequenceNumberMetricTagSlice = append(obj.patternFlowIcmpEchoSequenceNumberMetricTagSlice, item) + +// One-octet Priority value. +// SetPolicyPriority sets the uint32 value in the BgpSrtePolicyPrioritySubTlv object +func (obj *bgpSrtePolicyPrioritySubTlv) SetPolicyPriority(value uint32) BgpSrtePolicyPrioritySubTlv { + + obj.obj.PolicyPriority = &value return obj } -func (obj *patternFlowIcmpEchoSequenceNumber) validateObj(vObj *validation, set_default bool) { +func (obj *bgpSrtePolicyPrioritySubTlv) validateObj(vObj *validation, set_default bool) { if set_default { obj.setDefault() } - if obj.obj.Value != nil { + if obj.obj.PolicyPriority != nil { - if *obj.obj.Value > 65535 { + if *obj.obj.PolicyPriority > 255 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowIcmpEchoSequenceNumber.Value <= 65535 but Got %d", *obj.obj.Value)) - } - - } - - if obj.obj.Values != nil { - - for _, item := range obj.obj.Values { - if item > 65535 { - vObj.validationErrors = append( - vObj.validationErrors, - fmt.Sprintf("min(uint32) <= PatternFlowIcmpEchoSequenceNumber.Values <= 65535 but Got %d", item)) - } - - } - - } - - if obj.obj.Increment != nil { - - obj.Increment().validateObj(vObj, set_default) - } - - if obj.obj.Decrement != nil { - - obj.Decrement().validateObj(vObj, set_default) - } - - if len(obj.obj.MetricTags) != 0 { - - if set_default { - obj.MetricTags().clearHolderSlice() - for _, item := range obj.obj.MetricTags { - obj.MetricTags().appendHolderSlice(&patternFlowIcmpEchoSequenceNumberMetricTag{obj: item}) - } - } - for _, item := range obj.MetricTags().Items() { - item.validateObj(vObj, set_default) + fmt.Sprintf("0 <= BgpSrtePolicyPrioritySubTlv.PolicyPriority <= 255 but Got %d", *obj.obj.PolicyPriority)) } } } -func (obj *patternFlowIcmpEchoSequenceNumber) setDefault() { - if obj.obj.Choice == nil { - obj.SetChoice(PatternFlowIcmpEchoSequenceNumberChoice.VALUE) - - } +func (obj *bgpSrtePolicyPrioritySubTlv) setDefault() { } -// ***** PatternFlowIcmpv6EchoType ***** -type patternFlowIcmpv6EchoType struct { +// ***** BgpSrtePolicyNameSubTlv ***** +type bgpSrtePolicyNameSubTlv struct { validation - obj *otg.PatternFlowIcmpv6EchoType - incrementHolder PatternFlowIcmpv6EchoTypeCounter - decrementHolder PatternFlowIcmpv6EchoTypeCounter - metricTagsHolder PatternFlowIcmpv6EchoTypePatternFlowIcmpv6EchoTypeMetricTagIter + obj *otg.BgpSrtePolicyNameSubTlv } -func NewPatternFlowIcmpv6EchoType() PatternFlowIcmpv6EchoType { - obj := patternFlowIcmpv6EchoType{obj: &otg.PatternFlowIcmpv6EchoType{}} +func NewBgpSrtePolicyNameSubTlv() BgpSrtePolicyNameSubTlv { + obj := bgpSrtePolicyNameSubTlv{obj: &otg.BgpSrtePolicyNameSubTlv{}} obj.setDefault() return &obj } -func (obj *patternFlowIcmpv6EchoType) Msg() *otg.PatternFlowIcmpv6EchoType { +func (obj *bgpSrtePolicyNameSubTlv) Msg() *otg.BgpSrtePolicyNameSubTlv { return obj.obj } -func (obj *patternFlowIcmpv6EchoType) SetMsg(msg *otg.PatternFlowIcmpv6EchoType) PatternFlowIcmpv6EchoType { - obj.setNil() +func (obj *bgpSrtePolicyNameSubTlv) SetMsg(msg *otg.BgpSrtePolicyNameSubTlv) BgpSrtePolicyNameSubTlv { + proto.Merge(obj.obj, msg) return obj } -func (obj *patternFlowIcmpv6EchoType) ToProto() (*otg.PatternFlowIcmpv6EchoType, error) { +func (obj *bgpSrtePolicyNameSubTlv) ToProto() (*otg.BgpSrtePolicyNameSubTlv, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -261815,7 +307643,7 @@ func (obj *patternFlowIcmpv6EchoType) ToProto() (*otg.PatternFlowIcmpv6EchoType, return obj.Msg(), nil } -func (obj *patternFlowIcmpv6EchoType) FromProto(msg *otg.PatternFlowIcmpv6EchoType) (PatternFlowIcmpv6EchoType, error) { +func (obj *bgpSrtePolicyNameSubTlv) FromProto(msg *otg.BgpSrtePolicyNameSubTlv) (BgpSrtePolicyNameSubTlv, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -261824,7 +307652,7 @@ func (obj *patternFlowIcmpv6EchoType) FromProto(msg *otg.PatternFlowIcmpv6EchoTy return newObj, nil } -func (obj *patternFlowIcmpv6EchoType) ToPbText() (string, error) { +func (obj *bgpSrtePolicyNameSubTlv) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -261836,12 +307664,12 @@ func (obj *patternFlowIcmpv6EchoType) ToPbText() (string, error) { return string(protoMarshal), nil } -func (obj *patternFlowIcmpv6EchoType) FromPbText(value string) error { +func (obj *bgpSrtePolicyNameSubTlv) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj } - obj.setNil() + vErr := obj.validateToAndFrom() if vErr != nil { return vErr @@ -261849,7 +307677,7 @@ func (obj *patternFlowIcmpv6EchoType) FromPbText(value string) error { return retObj } -func (obj *patternFlowIcmpv6EchoType) ToYaml() (string, error) { +func (obj *bgpSrtePolicyNameSubTlv) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -261870,7 +307698,7 @@ func (obj *patternFlowIcmpv6EchoType) ToYaml() (string, error) { return string(data), nil } -func (obj *patternFlowIcmpv6EchoType) FromYaml(value string) error { +func (obj *bgpSrtePolicyNameSubTlv) FromYaml(value string) error { if value == "" { value = "{}" } @@ -261887,7 +307715,7 @@ func (obj *patternFlowIcmpv6EchoType) FromYaml(value string) error { return fmt.Errorf("unmarshal error %s", strings.Replace( uError.Error(), "\u00a0", " ", -1)[7:]) } - obj.setNil() + vErr := obj.validateToAndFrom() if vErr != nil { return vErr @@ -261895,7 +307723,7 @@ func (obj *patternFlowIcmpv6EchoType) FromYaml(value string) error { return nil } -func (obj *patternFlowIcmpv6EchoType) ToJson() (string, error) { +func (obj *bgpSrtePolicyNameSubTlv) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -261913,7 +307741,7 @@ func (obj *patternFlowIcmpv6EchoType) ToJson() (string, error) { return string(data), nil } -func (obj *patternFlowIcmpv6EchoType) FromJson(value string) error { +func (obj *bgpSrtePolicyNameSubTlv) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -261926,7 +307754,7 @@ func (obj *patternFlowIcmpv6EchoType) FromJson(value string) error { return fmt.Errorf("unmarshal error %s", strings.Replace( uError.Error(), "\u00a0", " ", -1)[7:]) } - obj.setNil() + err := obj.validateToAndFrom() if err != nil { return err @@ -261934,19 +307762,19 @@ func (obj *patternFlowIcmpv6EchoType) FromJson(value string) error { return nil } -func (obj *patternFlowIcmpv6EchoType) validateToAndFrom() error { +func (obj *bgpSrtePolicyNameSubTlv) validateToAndFrom() error { // emptyVars() obj.validateObj(&obj.validation, true) return obj.validationResult() } -func (obj *patternFlowIcmpv6EchoType) Validate() error { +func (obj *bgpSrtePolicyNameSubTlv) Validate() error { // emptyVars() obj.validateObj(&obj.validation, false) return obj.validationResult() } -func (obj *patternFlowIcmpv6EchoType) String() string { +func (obj *bgpSrtePolicyNameSubTlv) String() string { str, err := obj.ToYaml() if err != nil { return err.Error() @@ -261954,12 +307782,12 @@ func (obj *patternFlowIcmpv6EchoType) String() string { return str } -func (obj *patternFlowIcmpv6EchoType) Clone() (PatternFlowIcmpv6EchoType, error) { +func (obj *bgpSrtePolicyNameSubTlv) Clone() (BgpSrtePolicyNameSubTlv, error) { vErr := obj.Validate() if vErr != nil { return nil, vErr } - newObj := NewPatternFlowIcmpv6EchoType() + newObj := NewBgpSrtePolicyNameSubTlv() data, err := proto.Marshal(obj.Msg()) if err != nil { return nil, err @@ -261971,426 +307799,400 @@ func (obj *patternFlowIcmpv6EchoType) Clone() (PatternFlowIcmpv6EchoType, error) return newObj, nil } -func (obj *patternFlowIcmpv6EchoType) setNil() { - obj.incrementHolder = nil - obj.decrementHolder = nil - obj.metricTagsHolder = nil - obj.validationErrors = nil - obj.warnings = nil - obj.constraints = make(map[string]map[string]Constraints) -} - -// PatternFlowIcmpv6EchoType is iCMPv6 echo type -type PatternFlowIcmpv6EchoType interface { +// BgpSrtePolicyNameSubTlv is configuration for the Policy Name sub-TLV. The Policy Name sub-TLV is used to attach a symbolic name to the SR Policy candidate path. +type BgpSrtePolicyNameSubTlv interface { Validation - // Msg marshals PatternFlowIcmpv6EchoType to protobuf object *otg.PatternFlowIcmpv6EchoType + // Msg marshals BgpSrtePolicyNameSubTlv to protobuf object *otg.BgpSrtePolicyNameSubTlv // and doesn't set defaults - Msg() *otg.PatternFlowIcmpv6EchoType - // SetMsg unmarshals PatternFlowIcmpv6EchoType from protobuf object *otg.PatternFlowIcmpv6EchoType + Msg() *otg.BgpSrtePolicyNameSubTlv + // SetMsg unmarshals BgpSrtePolicyNameSubTlv from protobuf object *otg.BgpSrtePolicyNameSubTlv // and doesn't set defaults - SetMsg(*otg.PatternFlowIcmpv6EchoType) PatternFlowIcmpv6EchoType - // ToProto marshals PatternFlowIcmpv6EchoType to protobuf object *otg.PatternFlowIcmpv6EchoType - ToProto() (*otg.PatternFlowIcmpv6EchoType, error) - // ToPbText marshals PatternFlowIcmpv6EchoType to protobuf text + SetMsg(*otg.BgpSrtePolicyNameSubTlv) BgpSrtePolicyNameSubTlv + // ToProto marshals BgpSrtePolicyNameSubTlv to protobuf object *otg.BgpSrtePolicyNameSubTlv + ToProto() (*otg.BgpSrtePolicyNameSubTlv, error) + // ToPbText marshals BgpSrtePolicyNameSubTlv to protobuf text ToPbText() (string, error) - // ToYaml marshals PatternFlowIcmpv6EchoType to YAML text + // ToYaml marshals BgpSrtePolicyNameSubTlv to YAML text ToYaml() (string, error) - // ToJson marshals PatternFlowIcmpv6EchoType to JSON text + // ToJson marshals BgpSrtePolicyNameSubTlv to JSON text ToJson() (string, error) - // FromProto unmarshals PatternFlowIcmpv6EchoType from protobuf object *otg.PatternFlowIcmpv6EchoType - FromProto(msg *otg.PatternFlowIcmpv6EchoType) (PatternFlowIcmpv6EchoType, error) - // FromPbText unmarshals PatternFlowIcmpv6EchoType from protobuf text + // FromProto unmarshals BgpSrtePolicyNameSubTlv from protobuf object *otg.BgpSrtePolicyNameSubTlv + FromProto(msg *otg.BgpSrtePolicyNameSubTlv) (BgpSrtePolicyNameSubTlv, error) + // FromPbText unmarshals BgpSrtePolicyNameSubTlv from protobuf text FromPbText(value string) error - // FromYaml unmarshals PatternFlowIcmpv6EchoType from YAML text + // FromYaml unmarshals BgpSrtePolicyNameSubTlv from YAML text FromYaml(value string) error - // FromJson unmarshals PatternFlowIcmpv6EchoType from JSON text + // FromJson unmarshals BgpSrtePolicyNameSubTlv from JSON text FromJson(value string) error - // Validate validates PatternFlowIcmpv6EchoType + // Validate validates BgpSrtePolicyNameSubTlv Validate() error // A stringer function String() string // Clones the object - Clone() (PatternFlowIcmpv6EchoType, error) + Clone() (BgpSrtePolicyNameSubTlv, error) validateToAndFrom() error validateObj(vObj *validation, set_default bool) setDefault() - // Choice returns PatternFlowIcmpv6EchoTypeChoiceEnum, set in PatternFlowIcmpv6EchoType - Choice() PatternFlowIcmpv6EchoTypeChoiceEnum - // SetChoice assigns PatternFlowIcmpv6EchoTypeChoiceEnum provided by user to PatternFlowIcmpv6EchoType - SetChoice(value PatternFlowIcmpv6EchoTypeChoiceEnum) PatternFlowIcmpv6EchoType - // HasChoice checks if Choice has been set in PatternFlowIcmpv6EchoType - HasChoice() bool - // Value returns uint32, set in PatternFlowIcmpv6EchoType. - Value() uint32 - // SetValue assigns uint32 provided by user to PatternFlowIcmpv6EchoType - SetValue(value uint32) PatternFlowIcmpv6EchoType - // HasValue checks if Value has been set in PatternFlowIcmpv6EchoType - HasValue() bool - // Values returns []uint32, set in PatternFlowIcmpv6EchoType. - Values() []uint32 - // SetValues assigns []uint32 provided by user to PatternFlowIcmpv6EchoType - SetValues(value []uint32) PatternFlowIcmpv6EchoType - // Increment returns PatternFlowIcmpv6EchoTypeCounter, set in PatternFlowIcmpv6EchoType. - // PatternFlowIcmpv6EchoTypeCounter is integer counter pattern - Increment() PatternFlowIcmpv6EchoTypeCounter - // SetIncrement assigns PatternFlowIcmpv6EchoTypeCounter provided by user to PatternFlowIcmpv6EchoType. - // PatternFlowIcmpv6EchoTypeCounter is integer counter pattern - SetIncrement(value PatternFlowIcmpv6EchoTypeCounter) PatternFlowIcmpv6EchoType - // HasIncrement checks if Increment has been set in PatternFlowIcmpv6EchoType - HasIncrement() bool - // Decrement returns PatternFlowIcmpv6EchoTypeCounter, set in PatternFlowIcmpv6EchoType. - // PatternFlowIcmpv6EchoTypeCounter is integer counter pattern - Decrement() PatternFlowIcmpv6EchoTypeCounter - // SetDecrement assigns PatternFlowIcmpv6EchoTypeCounter provided by user to PatternFlowIcmpv6EchoType. - // PatternFlowIcmpv6EchoTypeCounter is integer counter pattern - SetDecrement(value PatternFlowIcmpv6EchoTypeCounter) PatternFlowIcmpv6EchoType - // HasDecrement checks if Decrement has been set in PatternFlowIcmpv6EchoType - HasDecrement() bool - // MetricTags returns PatternFlowIcmpv6EchoTypePatternFlowIcmpv6EchoTypeMetricTagIterIter, set in PatternFlowIcmpv6EchoType - MetricTags() PatternFlowIcmpv6EchoTypePatternFlowIcmpv6EchoTypeMetricTagIter - setNil() + // PolicyName returns string, set in BgpSrtePolicyNameSubTlv. + PolicyName() string + // SetPolicyName assigns string provided by user to BgpSrtePolicyNameSubTlv + SetPolicyName(value string) BgpSrtePolicyNameSubTlv + // HasPolicyName checks if PolicyName has been set in BgpSrtePolicyNameSubTlv + HasPolicyName() bool } -type PatternFlowIcmpv6EchoTypeChoiceEnum string +// Symbolic name for the policy that should be a string of printable ASCII characters, without a NULL terminator. +// PolicyName returns a string +func (obj *bgpSrtePolicyNameSubTlv) PolicyName() string { -// Enum of Choice on PatternFlowIcmpv6EchoType -var PatternFlowIcmpv6EchoTypeChoice = struct { - VALUE PatternFlowIcmpv6EchoTypeChoiceEnum - VALUES PatternFlowIcmpv6EchoTypeChoiceEnum - INCREMENT PatternFlowIcmpv6EchoTypeChoiceEnum - DECREMENT PatternFlowIcmpv6EchoTypeChoiceEnum -}{ - VALUE: PatternFlowIcmpv6EchoTypeChoiceEnum("value"), - VALUES: PatternFlowIcmpv6EchoTypeChoiceEnum("values"), - INCREMENT: PatternFlowIcmpv6EchoTypeChoiceEnum("increment"), - DECREMENT: PatternFlowIcmpv6EchoTypeChoiceEnum("decrement"), -} + return *obj.obj.PolicyName -func (obj *patternFlowIcmpv6EchoType) Choice() PatternFlowIcmpv6EchoTypeChoiceEnum { - return PatternFlowIcmpv6EchoTypeChoiceEnum(obj.obj.Choice.Enum().String()) } -// description is TBD -// Choice returns a string -func (obj *patternFlowIcmpv6EchoType) HasChoice() bool { - return obj.obj.Choice != nil +// Symbolic name for the policy that should be a string of printable ASCII characters, without a NULL terminator. +// PolicyName returns a string +func (obj *bgpSrtePolicyNameSubTlv) HasPolicyName() bool { + return obj.obj.PolicyName != nil } -func (obj *patternFlowIcmpv6EchoType) SetChoice(value PatternFlowIcmpv6EchoTypeChoiceEnum) PatternFlowIcmpv6EchoType { - intValue, ok := otg.PatternFlowIcmpv6EchoType_Choice_Enum_value[string(value)] - if !ok { - obj.validationErrors = append(obj.validationErrors, fmt.Sprintf( - "%s is not a valid choice on PatternFlowIcmpv6EchoTypeChoiceEnum", string(value))) - return obj - } - enumValue := otg.PatternFlowIcmpv6EchoType_Choice_Enum(intValue) - obj.obj.Choice = &enumValue - obj.obj.Decrement = nil - obj.decrementHolder = nil - obj.obj.Increment = nil - obj.incrementHolder = nil - obj.obj.Values = nil - obj.obj.Value = nil +// Symbolic name for the policy that should be a string of printable ASCII characters, without a NULL terminator. +// SetPolicyName sets the string value in the BgpSrtePolicyNameSubTlv object +func (obj *bgpSrtePolicyNameSubTlv) SetPolicyName(value string) BgpSrtePolicyNameSubTlv { - if value == PatternFlowIcmpv6EchoTypeChoice.VALUE { - defaultValue := uint32(128) - obj.obj.Value = &defaultValue - } + obj.obj.PolicyName = &value + return obj +} - if value == PatternFlowIcmpv6EchoTypeChoice.VALUES { - defaultValue := []uint32{128} - obj.obj.Values = defaultValue +func (obj *bgpSrtePolicyNameSubTlv) validateObj(vObj *validation, set_default bool) { + if set_default { + obj.setDefault() } - if value == PatternFlowIcmpv6EchoTypeChoice.INCREMENT { - obj.obj.Increment = NewPatternFlowIcmpv6EchoTypeCounter().Msg() - } + if obj.obj.PolicyName != nil { + + if len(*obj.obj.PolicyName) < 1 || len(*obj.obj.PolicyName) > 32 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf( + "1 <= length of BgpSrtePolicyNameSubTlv.PolicyName <= 32 but Got %d", + len(*obj.obj.PolicyName))) + } - if value == PatternFlowIcmpv6EchoTypeChoice.DECREMENT { - obj.obj.Decrement = NewPatternFlowIcmpv6EchoTypeCounter().Msg() } - return obj } -// description is TBD -// Value returns a uint32 -func (obj *patternFlowIcmpv6EchoType) Value() uint32 { +func (obj *bgpSrtePolicyNameSubTlv) setDefault() { - if obj.obj.Value == nil { - obj.SetChoice(PatternFlowIcmpv6EchoTypeChoice.VALUE) - } +} - return *obj.obj.Value +// ***** BgpSrteExplicitNullLabelPolicySubTlv ***** +type bgpSrteExplicitNullLabelPolicySubTlv struct { + validation + obj *otg.BgpSrteExplicitNullLabelPolicySubTlv +} +func NewBgpSrteExplicitNullLabelPolicySubTlv() BgpSrteExplicitNullLabelPolicySubTlv { + obj := bgpSrteExplicitNullLabelPolicySubTlv{obj: &otg.BgpSrteExplicitNullLabelPolicySubTlv{}} + obj.setDefault() + return &obj } -// description is TBD -// Value returns a uint32 -func (obj *patternFlowIcmpv6EchoType) HasValue() bool { - return obj.obj.Value != nil +func (obj *bgpSrteExplicitNullLabelPolicySubTlv) Msg() *otg.BgpSrteExplicitNullLabelPolicySubTlv { + return obj.obj } -// description is TBD -// SetValue sets the uint32 value in the PatternFlowIcmpv6EchoType object -func (obj *patternFlowIcmpv6EchoType) SetValue(value uint32) PatternFlowIcmpv6EchoType { - obj.SetChoice(PatternFlowIcmpv6EchoTypeChoice.VALUE) - obj.obj.Value = &value +func (obj *bgpSrteExplicitNullLabelPolicySubTlv) SetMsg(msg *otg.BgpSrteExplicitNullLabelPolicySubTlv) BgpSrteExplicitNullLabelPolicySubTlv { + + proto.Merge(obj.obj, msg) return obj } -// description is TBD -// Values returns a []uint32 -func (obj *patternFlowIcmpv6EchoType) Values() []uint32 { - if obj.obj.Values == nil { - obj.SetValues([]uint32{128}) +func (obj *bgpSrteExplicitNullLabelPolicySubTlv) ToProto() (*otg.BgpSrteExplicitNullLabelPolicySubTlv, error) { + err := obj.validateToAndFrom() + if err != nil { + return nil, err } - return obj.obj.Values + return obj.Msg(), nil } -// description is TBD -// SetValues sets the []uint32 value in the PatternFlowIcmpv6EchoType object -func (obj *patternFlowIcmpv6EchoType) SetValues(value []uint32) PatternFlowIcmpv6EchoType { - obj.SetChoice(PatternFlowIcmpv6EchoTypeChoice.VALUES) - if obj.obj.Values == nil { - obj.obj.Values = make([]uint32, 0) +func (obj *bgpSrteExplicitNullLabelPolicySubTlv) FromProto(msg *otg.BgpSrteExplicitNullLabelPolicySubTlv) (BgpSrteExplicitNullLabelPolicySubTlv, error) { + newObj := obj.SetMsg(msg) + err := newObj.validateToAndFrom() + if err != nil { + return nil, err } - obj.obj.Values = value - - return obj + return newObj, nil } -// description is TBD -// Increment returns a PatternFlowIcmpv6EchoTypeCounter -func (obj *patternFlowIcmpv6EchoType) Increment() PatternFlowIcmpv6EchoTypeCounter { - if obj.obj.Increment == nil { - obj.SetChoice(PatternFlowIcmpv6EchoTypeChoice.INCREMENT) +func (obj *bgpSrteExplicitNullLabelPolicySubTlv) ToPbText() (string, error) { + vErr := obj.validateToAndFrom() + if vErr != nil { + return "", vErr } - if obj.incrementHolder == nil { - obj.incrementHolder = &patternFlowIcmpv6EchoTypeCounter{obj: obj.obj.Increment} + protoMarshal, err := proto.Marshal(obj.Msg()) + if err != nil { + return "", err } - return obj.incrementHolder -} - -// description is TBD -// Increment returns a PatternFlowIcmpv6EchoTypeCounter -func (obj *patternFlowIcmpv6EchoType) HasIncrement() bool { - return obj.obj.Increment != nil + return string(protoMarshal), nil } -// description is TBD -// SetIncrement sets the PatternFlowIcmpv6EchoTypeCounter value in the PatternFlowIcmpv6EchoType object -func (obj *patternFlowIcmpv6EchoType) SetIncrement(value PatternFlowIcmpv6EchoTypeCounter) PatternFlowIcmpv6EchoType { - obj.SetChoice(PatternFlowIcmpv6EchoTypeChoice.INCREMENT) - obj.incrementHolder = nil - obj.obj.Increment = value.Msg() +func (obj *bgpSrteExplicitNullLabelPolicySubTlv) FromPbText(value string) error { + retObj := proto.Unmarshal([]byte(value), obj.Msg()) + if retObj != nil { + return retObj + } - return obj + vErr := obj.validateToAndFrom() + if vErr != nil { + return vErr + } + return retObj } -// description is TBD -// Decrement returns a PatternFlowIcmpv6EchoTypeCounter -func (obj *patternFlowIcmpv6EchoType) Decrement() PatternFlowIcmpv6EchoTypeCounter { - if obj.obj.Decrement == nil { - obj.SetChoice(PatternFlowIcmpv6EchoTypeChoice.DECREMENT) +func (obj *bgpSrteExplicitNullLabelPolicySubTlv) ToYaml() (string, error) { + vErr := obj.validateToAndFrom() + if vErr != nil { + return "", vErr } - if obj.decrementHolder == nil { - obj.decrementHolder = &patternFlowIcmpv6EchoTypeCounter{obj: obj.obj.Decrement} + opts := protojson.MarshalOptions{ + UseProtoNames: true, + AllowPartial: true, + EmitUnpopulated: false, } - return obj.decrementHolder -} - -// description is TBD -// Decrement returns a PatternFlowIcmpv6EchoTypeCounter -func (obj *patternFlowIcmpv6EchoType) HasDecrement() bool { - return obj.obj.Decrement != nil -} - -// description is TBD -// SetDecrement sets the PatternFlowIcmpv6EchoTypeCounter value in the PatternFlowIcmpv6EchoType object -func (obj *patternFlowIcmpv6EchoType) SetDecrement(value PatternFlowIcmpv6EchoTypeCounter) PatternFlowIcmpv6EchoType { - obj.SetChoice(PatternFlowIcmpv6EchoTypeChoice.DECREMENT) - obj.decrementHolder = nil - obj.obj.Decrement = value.Msg() - - return obj + data, err := opts.Marshal(obj.Msg()) + if err != nil { + return "", err + } + data, err = yaml.JSONToYAML(data) + if err != nil { + return "", err + } + return string(data), nil } -// One or more metric tags can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. -// MetricTags returns a []PatternFlowIcmpv6EchoTypeMetricTag -func (obj *patternFlowIcmpv6EchoType) MetricTags() PatternFlowIcmpv6EchoTypePatternFlowIcmpv6EchoTypeMetricTagIter { - if len(obj.obj.MetricTags) == 0 { - obj.obj.MetricTags = []*otg.PatternFlowIcmpv6EchoTypeMetricTag{} +func (obj *bgpSrteExplicitNullLabelPolicySubTlv) FromYaml(value string) error { + if value == "" { + value = "{}" } - if obj.metricTagsHolder == nil { - obj.metricTagsHolder = newPatternFlowIcmpv6EchoTypePatternFlowIcmpv6EchoTypeMetricTagIter(&obj.obj.MetricTags).setMsg(obj) + data, err := yaml.YAMLToJSON([]byte(value)) + if err != nil { + return err + } + opts := protojson.UnmarshalOptions{ + AllowPartial: true, + DiscardUnknown: false, + } + uError := opts.Unmarshal([]byte(data), obj.Msg()) + if uError != nil { + return fmt.Errorf("unmarshal error %s", strings.Replace( + uError.Error(), "\u00a0", " ", -1)[7:]) } - return obj.metricTagsHolder -} -type patternFlowIcmpv6EchoTypePatternFlowIcmpv6EchoTypeMetricTagIter struct { - obj *patternFlowIcmpv6EchoType - patternFlowIcmpv6EchoTypeMetricTagSlice []PatternFlowIcmpv6EchoTypeMetricTag - fieldPtr *[]*otg.PatternFlowIcmpv6EchoTypeMetricTag + vErr := obj.validateToAndFrom() + if vErr != nil { + return vErr + } + return nil } -func newPatternFlowIcmpv6EchoTypePatternFlowIcmpv6EchoTypeMetricTagIter(ptr *[]*otg.PatternFlowIcmpv6EchoTypeMetricTag) PatternFlowIcmpv6EchoTypePatternFlowIcmpv6EchoTypeMetricTagIter { - return &patternFlowIcmpv6EchoTypePatternFlowIcmpv6EchoTypeMetricTagIter{fieldPtr: ptr} +func (obj *bgpSrteExplicitNullLabelPolicySubTlv) ToJson() (string, error) { + vErr := obj.validateToAndFrom() + if vErr != nil { + return "", vErr + } + opts := protojson.MarshalOptions{ + UseProtoNames: true, + AllowPartial: true, + EmitUnpopulated: false, + Indent: " ", + } + data, err := opts.Marshal(obj.Msg()) + if err != nil { + return "", err + } + return string(data), nil } -type PatternFlowIcmpv6EchoTypePatternFlowIcmpv6EchoTypeMetricTagIter interface { - setMsg(*patternFlowIcmpv6EchoType) PatternFlowIcmpv6EchoTypePatternFlowIcmpv6EchoTypeMetricTagIter - Items() []PatternFlowIcmpv6EchoTypeMetricTag - Add() PatternFlowIcmpv6EchoTypeMetricTag - Append(items ...PatternFlowIcmpv6EchoTypeMetricTag) PatternFlowIcmpv6EchoTypePatternFlowIcmpv6EchoTypeMetricTagIter - Set(index int, newObj PatternFlowIcmpv6EchoTypeMetricTag) PatternFlowIcmpv6EchoTypePatternFlowIcmpv6EchoTypeMetricTagIter - Clear() PatternFlowIcmpv6EchoTypePatternFlowIcmpv6EchoTypeMetricTagIter - clearHolderSlice() PatternFlowIcmpv6EchoTypePatternFlowIcmpv6EchoTypeMetricTagIter - appendHolderSlice(item PatternFlowIcmpv6EchoTypeMetricTag) PatternFlowIcmpv6EchoTypePatternFlowIcmpv6EchoTypeMetricTagIter -} +func (obj *bgpSrteExplicitNullLabelPolicySubTlv) FromJson(value string) error { + opts := protojson.UnmarshalOptions{ + AllowPartial: true, + DiscardUnknown: false, + } + if value == "" { + value = "{}" + } + uError := opts.Unmarshal([]byte(value), obj.Msg()) + if uError != nil { + return fmt.Errorf("unmarshal error %s", strings.Replace( + uError.Error(), "\u00a0", " ", -1)[7:]) + } -func (obj *patternFlowIcmpv6EchoTypePatternFlowIcmpv6EchoTypeMetricTagIter) setMsg(msg *patternFlowIcmpv6EchoType) PatternFlowIcmpv6EchoTypePatternFlowIcmpv6EchoTypeMetricTagIter { - obj.clearHolderSlice() - for _, val := range *obj.fieldPtr { - obj.appendHolderSlice(&patternFlowIcmpv6EchoTypeMetricTag{obj: val}) + err := obj.validateToAndFrom() + if err != nil { + return err } - obj.obj = msg - return obj + return nil } -func (obj *patternFlowIcmpv6EchoTypePatternFlowIcmpv6EchoTypeMetricTagIter) Items() []PatternFlowIcmpv6EchoTypeMetricTag { - return obj.patternFlowIcmpv6EchoTypeMetricTagSlice +func (obj *bgpSrteExplicitNullLabelPolicySubTlv) validateToAndFrom() error { + // emptyVars() + obj.validateObj(&obj.validation, true) + return obj.validationResult() } -func (obj *patternFlowIcmpv6EchoTypePatternFlowIcmpv6EchoTypeMetricTagIter) Add() PatternFlowIcmpv6EchoTypeMetricTag { - newObj := &otg.PatternFlowIcmpv6EchoTypeMetricTag{} - *obj.fieldPtr = append(*obj.fieldPtr, newObj) - newLibObj := &patternFlowIcmpv6EchoTypeMetricTag{obj: newObj} - newLibObj.setDefault() - obj.patternFlowIcmpv6EchoTypeMetricTagSlice = append(obj.patternFlowIcmpv6EchoTypeMetricTagSlice, newLibObj) - return newLibObj +func (obj *bgpSrteExplicitNullLabelPolicySubTlv) Validate() error { + // emptyVars() + obj.validateObj(&obj.validation, false) + return obj.validationResult() } -func (obj *patternFlowIcmpv6EchoTypePatternFlowIcmpv6EchoTypeMetricTagIter) Append(items ...PatternFlowIcmpv6EchoTypeMetricTag) PatternFlowIcmpv6EchoTypePatternFlowIcmpv6EchoTypeMetricTagIter { - for _, item := range items { - newObj := item.Msg() - *obj.fieldPtr = append(*obj.fieldPtr, newObj) - obj.patternFlowIcmpv6EchoTypeMetricTagSlice = append(obj.patternFlowIcmpv6EchoTypeMetricTagSlice, item) +func (obj *bgpSrteExplicitNullLabelPolicySubTlv) String() string { + str, err := obj.ToYaml() + if err != nil { + return err.Error() } - return obj + return str } -func (obj *patternFlowIcmpv6EchoTypePatternFlowIcmpv6EchoTypeMetricTagIter) Set(index int, newObj PatternFlowIcmpv6EchoTypeMetricTag) PatternFlowIcmpv6EchoTypePatternFlowIcmpv6EchoTypeMetricTagIter { - (*obj.fieldPtr)[index] = newObj.Msg() - obj.patternFlowIcmpv6EchoTypeMetricTagSlice[index] = newObj - return obj -} -func (obj *patternFlowIcmpv6EchoTypePatternFlowIcmpv6EchoTypeMetricTagIter) Clear() PatternFlowIcmpv6EchoTypePatternFlowIcmpv6EchoTypeMetricTagIter { - if len(*obj.fieldPtr) > 0 { - *obj.fieldPtr = []*otg.PatternFlowIcmpv6EchoTypeMetricTag{} - obj.patternFlowIcmpv6EchoTypeMetricTagSlice = []PatternFlowIcmpv6EchoTypeMetricTag{} - } - return obj -} -func (obj *patternFlowIcmpv6EchoTypePatternFlowIcmpv6EchoTypeMetricTagIter) clearHolderSlice() PatternFlowIcmpv6EchoTypePatternFlowIcmpv6EchoTypeMetricTagIter { - if len(obj.patternFlowIcmpv6EchoTypeMetricTagSlice) > 0 { - obj.patternFlowIcmpv6EchoTypeMetricTagSlice = []PatternFlowIcmpv6EchoTypeMetricTag{} +func (obj *bgpSrteExplicitNullLabelPolicySubTlv) Clone() (BgpSrteExplicitNullLabelPolicySubTlv, error) { + vErr := obj.Validate() + if vErr != nil { + return nil, vErr } - return obj -} -func (obj *patternFlowIcmpv6EchoTypePatternFlowIcmpv6EchoTypeMetricTagIter) appendHolderSlice(item PatternFlowIcmpv6EchoTypeMetricTag) PatternFlowIcmpv6EchoTypePatternFlowIcmpv6EchoTypeMetricTagIter { - obj.patternFlowIcmpv6EchoTypeMetricTagSlice = append(obj.patternFlowIcmpv6EchoTypeMetricTagSlice, item) - return obj -} - -func (obj *patternFlowIcmpv6EchoType) validateObj(vObj *validation, set_default bool) { - if set_default { - obj.setDefault() + newObj := NewBgpSrteExplicitNullLabelPolicySubTlv() + data, err := proto.Marshal(obj.Msg()) + if err != nil { + return nil, err } - - if obj.obj.Value != nil { - - if *obj.obj.Value > 255 { - vObj.validationErrors = append( - vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowIcmpv6EchoType.Value <= 255 but Got %d", *obj.obj.Value)) - } - + pbErr := proto.Unmarshal(data, newObj.Msg()) + if pbErr != nil { + return nil, pbErr } + return newObj, nil +} - if obj.obj.Values != nil { - - for _, item := range obj.obj.Values { - if item > 255 { - vObj.validationErrors = append( - vObj.validationErrors, - fmt.Sprintf("min(uint32) <= PatternFlowIcmpv6EchoType.Values <= 255 but Got %d", item)) - } - - } +// BgpSrteExplicitNullLabelPolicySubTlv is configuration for BGP explicit null label policy sub TLV settings. +type BgpSrteExplicitNullLabelPolicySubTlv interface { + Validation + // Msg marshals BgpSrteExplicitNullLabelPolicySubTlv to protobuf object *otg.BgpSrteExplicitNullLabelPolicySubTlv + // and doesn't set defaults + Msg() *otg.BgpSrteExplicitNullLabelPolicySubTlv + // SetMsg unmarshals BgpSrteExplicitNullLabelPolicySubTlv from protobuf object *otg.BgpSrteExplicitNullLabelPolicySubTlv + // and doesn't set defaults + SetMsg(*otg.BgpSrteExplicitNullLabelPolicySubTlv) BgpSrteExplicitNullLabelPolicySubTlv + // ToProto marshals BgpSrteExplicitNullLabelPolicySubTlv to protobuf object *otg.BgpSrteExplicitNullLabelPolicySubTlv + ToProto() (*otg.BgpSrteExplicitNullLabelPolicySubTlv, error) + // ToPbText marshals BgpSrteExplicitNullLabelPolicySubTlv to protobuf text + ToPbText() (string, error) + // ToYaml marshals BgpSrteExplicitNullLabelPolicySubTlv to YAML text + ToYaml() (string, error) + // ToJson marshals BgpSrteExplicitNullLabelPolicySubTlv to JSON text + ToJson() (string, error) + // FromProto unmarshals BgpSrteExplicitNullLabelPolicySubTlv from protobuf object *otg.BgpSrteExplicitNullLabelPolicySubTlv + FromProto(msg *otg.BgpSrteExplicitNullLabelPolicySubTlv) (BgpSrteExplicitNullLabelPolicySubTlv, error) + // FromPbText unmarshals BgpSrteExplicitNullLabelPolicySubTlv from protobuf text + FromPbText(value string) error + // FromYaml unmarshals BgpSrteExplicitNullLabelPolicySubTlv from YAML text + FromYaml(value string) error + // FromJson unmarshals BgpSrteExplicitNullLabelPolicySubTlv from JSON text + FromJson(value string) error + // Validate validates BgpSrteExplicitNullLabelPolicySubTlv + Validate() error + // A stringer function + String() string + // Clones the object + Clone() (BgpSrteExplicitNullLabelPolicySubTlv, error) + validateToAndFrom() error + validateObj(vObj *validation, set_default bool) + setDefault() + // ExplicitNullLabelPolicy returns BgpSrteExplicitNullLabelPolicySubTlvExplicitNullLabelPolicyEnum, set in BgpSrteExplicitNullLabelPolicySubTlv + ExplicitNullLabelPolicy() BgpSrteExplicitNullLabelPolicySubTlvExplicitNullLabelPolicyEnum + // SetExplicitNullLabelPolicy assigns BgpSrteExplicitNullLabelPolicySubTlvExplicitNullLabelPolicyEnum provided by user to BgpSrteExplicitNullLabelPolicySubTlv + SetExplicitNullLabelPolicy(value BgpSrteExplicitNullLabelPolicySubTlvExplicitNullLabelPolicyEnum) BgpSrteExplicitNullLabelPolicySubTlv + // HasExplicitNullLabelPolicy checks if ExplicitNullLabelPolicy has been set in BgpSrteExplicitNullLabelPolicySubTlv + HasExplicitNullLabelPolicy() bool +} - } +type BgpSrteExplicitNullLabelPolicySubTlvExplicitNullLabelPolicyEnum string - if obj.obj.Increment != nil { +// Enum of ExplicitNullLabelPolicy on BgpSrteExplicitNullLabelPolicySubTlv +var BgpSrteExplicitNullLabelPolicySubTlvExplicitNullLabelPolicy = struct { + RESERVED_ENLP BgpSrteExplicitNullLabelPolicySubTlvExplicitNullLabelPolicyEnum + PUSH_IPV4_ENLP BgpSrteExplicitNullLabelPolicySubTlvExplicitNullLabelPolicyEnum + PUSH_IPV6_ENLP BgpSrteExplicitNullLabelPolicySubTlvExplicitNullLabelPolicyEnum + PUSH_IPV4_IPV6_ENLP BgpSrteExplicitNullLabelPolicySubTlvExplicitNullLabelPolicyEnum + DO_NOT_PUSH_ENLP BgpSrteExplicitNullLabelPolicySubTlvExplicitNullLabelPolicyEnum +}{ + RESERVED_ENLP: BgpSrteExplicitNullLabelPolicySubTlvExplicitNullLabelPolicyEnum("reserved_enlp"), + PUSH_IPV4_ENLP: BgpSrteExplicitNullLabelPolicySubTlvExplicitNullLabelPolicyEnum("push_ipv4_enlp"), + PUSH_IPV6_ENLP: BgpSrteExplicitNullLabelPolicySubTlvExplicitNullLabelPolicyEnum("push_ipv6_enlp"), + PUSH_IPV4_IPV6_ENLP: BgpSrteExplicitNullLabelPolicySubTlvExplicitNullLabelPolicyEnum("push_ipv4_ipv6_enlp"), + DO_NOT_PUSH_ENLP: BgpSrteExplicitNullLabelPolicySubTlvExplicitNullLabelPolicyEnum("do_not_push_enlp"), +} - obj.Increment().validateObj(vObj, set_default) - } +func (obj *bgpSrteExplicitNullLabelPolicySubTlv) ExplicitNullLabelPolicy() BgpSrteExplicitNullLabelPolicySubTlvExplicitNullLabelPolicyEnum { + return BgpSrteExplicitNullLabelPolicySubTlvExplicitNullLabelPolicyEnum(obj.obj.ExplicitNullLabelPolicy.Enum().String()) +} - if obj.obj.Decrement != nil { +// The value of the explicit null label policy +// ExplicitNullLabelPolicy returns a string +func (obj *bgpSrteExplicitNullLabelPolicySubTlv) HasExplicitNullLabelPolicy() bool { + return obj.obj.ExplicitNullLabelPolicy != nil +} - obj.Decrement().validateObj(vObj, set_default) +func (obj *bgpSrteExplicitNullLabelPolicySubTlv) SetExplicitNullLabelPolicy(value BgpSrteExplicitNullLabelPolicySubTlvExplicitNullLabelPolicyEnum) BgpSrteExplicitNullLabelPolicySubTlv { + intValue, ok := otg.BgpSrteExplicitNullLabelPolicySubTlv_ExplicitNullLabelPolicy_Enum_value[string(value)] + if !ok { + obj.validationErrors = append(obj.validationErrors, fmt.Sprintf( + "%s is not a valid choice on BgpSrteExplicitNullLabelPolicySubTlvExplicitNullLabelPolicyEnum", string(value))) + return obj } + enumValue := otg.BgpSrteExplicitNullLabelPolicySubTlv_ExplicitNullLabelPolicy_Enum(intValue) + obj.obj.ExplicitNullLabelPolicy = &enumValue - if len(obj.obj.MetricTags) != 0 { - - if set_default { - obj.MetricTags().clearHolderSlice() - for _, item := range obj.obj.MetricTags { - obj.MetricTags().appendHolderSlice(&patternFlowIcmpv6EchoTypeMetricTag{obj: item}) - } - } - for _, item := range obj.MetricTags().Items() { - item.validateObj(vObj, set_default) - } + return obj +} +func (obj *bgpSrteExplicitNullLabelPolicySubTlv) validateObj(vObj *validation, set_default bool) { + if set_default { + obj.setDefault() } } -func (obj *patternFlowIcmpv6EchoType) setDefault() { - if obj.obj.Choice == nil { - obj.SetChoice(PatternFlowIcmpv6EchoTypeChoice.VALUE) +func (obj *bgpSrteExplicitNullLabelPolicySubTlv) setDefault() { + if obj.obj.ExplicitNullLabelPolicy == nil { + obj.SetExplicitNullLabelPolicy(BgpSrteExplicitNullLabelPolicySubTlvExplicitNullLabelPolicy.DO_NOT_PUSH_ENLP) } } -// ***** PatternFlowIcmpv6EchoCode ***** -type patternFlowIcmpv6EchoCode struct { +// ***** BgpSrteSegmentList ***** +type bgpSrteSegmentList struct { validation - obj *otg.PatternFlowIcmpv6EchoCode - incrementHolder PatternFlowIcmpv6EchoCodeCounter - decrementHolder PatternFlowIcmpv6EchoCodeCounter - metricTagsHolder PatternFlowIcmpv6EchoCodePatternFlowIcmpv6EchoCodeMetricTagIter + obj *otg.BgpSrteSegmentList + segmentsHolder BgpSrteSegmentListBgpSrteSegmentIter } -func NewPatternFlowIcmpv6EchoCode() PatternFlowIcmpv6EchoCode { - obj := patternFlowIcmpv6EchoCode{obj: &otg.PatternFlowIcmpv6EchoCode{}} +func NewBgpSrteSegmentList() BgpSrteSegmentList { + obj := bgpSrteSegmentList{obj: &otg.BgpSrteSegmentList{}} obj.setDefault() return &obj } -func (obj *patternFlowIcmpv6EchoCode) Msg() *otg.PatternFlowIcmpv6EchoCode { +func (obj *bgpSrteSegmentList) Msg() *otg.BgpSrteSegmentList { return obj.obj } -func (obj *patternFlowIcmpv6EchoCode) SetMsg(msg *otg.PatternFlowIcmpv6EchoCode) PatternFlowIcmpv6EchoCode { +func (obj *bgpSrteSegmentList) SetMsg(msg *otg.BgpSrteSegmentList) BgpSrteSegmentList { obj.setNil() proto.Merge(obj.obj, msg) return obj } -func (obj *patternFlowIcmpv6EchoCode) ToProto() (*otg.PatternFlowIcmpv6EchoCode, error) { +func (obj *bgpSrteSegmentList) ToProto() (*otg.BgpSrteSegmentList, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -262398,7 +308200,7 @@ func (obj *patternFlowIcmpv6EchoCode) ToProto() (*otg.PatternFlowIcmpv6EchoCode, return obj.Msg(), nil } -func (obj *patternFlowIcmpv6EchoCode) FromProto(msg *otg.PatternFlowIcmpv6EchoCode) (PatternFlowIcmpv6EchoCode, error) { +func (obj *bgpSrteSegmentList) FromProto(msg *otg.BgpSrteSegmentList) (BgpSrteSegmentList, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -262407,7 +308209,7 @@ func (obj *patternFlowIcmpv6EchoCode) FromProto(msg *otg.PatternFlowIcmpv6EchoCo return newObj, nil } -func (obj *patternFlowIcmpv6EchoCode) ToPbText() (string, error) { +func (obj *bgpSrteSegmentList) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -262419,7 +308221,7 @@ func (obj *patternFlowIcmpv6EchoCode) ToPbText() (string, error) { return string(protoMarshal), nil } -func (obj *patternFlowIcmpv6EchoCode) FromPbText(value string) error { +func (obj *bgpSrteSegmentList) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj @@ -262432,7 +308234,7 @@ func (obj *patternFlowIcmpv6EchoCode) FromPbText(value string) error { return retObj } -func (obj *patternFlowIcmpv6EchoCode) ToYaml() (string, error) { +func (obj *bgpSrteSegmentList) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -262453,7 +308255,7 @@ func (obj *patternFlowIcmpv6EchoCode) ToYaml() (string, error) { return string(data), nil } -func (obj *patternFlowIcmpv6EchoCode) FromYaml(value string) error { +func (obj *bgpSrteSegmentList) FromYaml(value string) error { if value == "" { value = "{}" } @@ -262478,7 +308280,7 @@ func (obj *patternFlowIcmpv6EchoCode) FromYaml(value string) error { return nil } -func (obj *patternFlowIcmpv6EchoCode) ToJson() (string, error) { +func (obj *bgpSrteSegmentList) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -262496,7 +308298,7 @@ func (obj *patternFlowIcmpv6EchoCode) ToJson() (string, error) { return string(data), nil } -func (obj *patternFlowIcmpv6EchoCode) FromJson(value string) error { +func (obj *bgpSrteSegmentList) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -262517,19 +308319,19 @@ func (obj *patternFlowIcmpv6EchoCode) FromJson(value string) error { return nil } -func (obj *patternFlowIcmpv6EchoCode) validateToAndFrom() error { +func (obj *bgpSrteSegmentList) validateToAndFrom() error { // emptyVars() obj.validateObj(&obj.validation, true) return obj.validationResult() } -func (obj *patternFlowIcmpv6EchoCode) Validate() error { +func (obj *bgpSrteSegmentList) Validate() error { // emptyVars() obj.validateObj(&obj.validation, false) return obj.validationResult() } -func (obj *patternFlowIcmpv6EchoCode) String() string { +func (obj *bgpSrteSegmentList) String() string { str, err := obj.ToYaml() if err != nil { return err.Error() @@ -262537,12 +308339,12 @@ func (obj *patternFlowIcmpv6EchoCode) String() string { return str } -func (obj *patternFlowIcmpv6EchoCode) Clone() (PatternFlowIcmpv6EchoCode, error) { +func (obj *bgpSrteSegmentList) Clone() (BgpSrteSegmentList, error) { vErr := obj.Validate() if vErr != nil { return nil, vErr } - newObj := NewPatternFlowIcmpv6EchoCode() + newObj := NewBgpSrteSegmentList() data, err := proto.Marshal(obj.Msg()) if err != nil { return nil, err @@ -262554,426 +308356,283 @@ func (obj *patternFlowIcmpv6EchoCode) Clone() (PatternFlowIcmpv6EchoCode, error) return newObj, nil } -func (obj *patternFlowIcmpv6EchoCode) setNil() { - obj.incrementHolder = nil - obj.decrementHolder = nil - obj.metricTagsHolder = nil +func (obj *bgpSrteSegmentList) setNil() { + obj.segmentsHolder = nil obj.validationErrors = nil obj.warnings = nil obj.constraints = make(map[string]map[string]Constraints) } -// PatternFlowIcmpv6EchoCode is iCMPv6 echo sub type -type PatternFlowIcmpv6EchoCode interface { +// BgpSrteSegmentList is optional configuration for BGP SR TE Policy segment list. The Segment List sub-TLV encodes a single explicit path towards the Endpoint. +type BgpSrteSegmentList interface { Validation - // Msg marshals PatternFlowIcmpv6EchoCode to protobuf object *otg.PatternFlowIcmpv6EchoCode + // Msg marshals BgpSrteSegmentList to protobuf object *otg.BgpSrteSegmentList // and doesn't set defaults - Msg() *otg.PatternFlowIcmpv6EchoCode - // SetMsg unmarshals PatternFlowIcmpv6EchoCode from protobuf object *otg.PatternFlowIcmpv6EchoCode + Msg() *otg.BgpSrteSegmentList + // SetMsg unmarshals BgpSrteSegmentList from protobuf object *otg.BgpSrteSegmentList // and doesn't set defaults - SetMsg(*otg.PatternFlowIcmpv6EchoCode) PatternFlowIcmpv6EchoCode - // ToProto marshals PatternFlowIcmpv6EchoCode to protobuf object *otg.PatternFlowIcmpv6EchoCode - ToProto() (*otg.PatternFlowIcmpv6EchoCode, error) - // ToPbText marshals PatternFlowIcmpv6EchoCode to protobuf text + SetMsg(*otg.BgpSrteSegmentList) BgpSrteSegmentList + // ToProto marshals BgpSrteSegmentList to protobuf object *otg.BgpSrteSegmentList + ToProto() (*otg.BgpSrteSegmentList, error) + // ToPbText marshals BgpSrteSegmentList to protobuf text ToPbText() (string, error) - // ToYaml marshals PatternFlowIcmpv6EchoCode to YAML text + // ToYaml marshals BgpSrteSegmentList to YAML text ToYaml() (string, error) - // ToJson marshals PatternFlowIcmpv6EchoCode to JSON text + // ToJson marshals BgpSrteSegmentList to JSON text ToJson() (string, error) - // FromProto unmarshals PatternFlowIcmpv6EchoCode from protobuf object *otg.PatternFlowIcmpv6EchoCode - FromProto(msg *otg.PatternFlowIcmpv6EchoCode) (PatternFlowIcmpv6EchoCode, error) - // FromPbText unmarshals PatternFlowIcmpv6EchoCode from protobuf text + // FromProto unmarshals BgpSrteSegmentList from protobuf object *otg.BgpSrteSegmentList + FromProto(msg *otg.BgpSrteSegmentList) (BgpSrteSegmentList, error) + // FromPbText unmarshals BgpSrteSegmentList from protobuf text FromPbText(value string) error - // FromYaml unmarshals PatternFlowIcmpv6EchoCode from YAML text + // FromYaml unmarshals BgpSrteSegmentList from YAML text FromYaml(value string) error - // FromJson unmarshals PatternFlowIcmpv6EchoCode from JSON text + // FromJson unmarshals BgpSrteSegmentList from JSON text FromJson(value string) error - // Validate validates PatternFlowIcmpv6EchoCode + // Validate validates BgpSrteSegmentList Validate() error // A stringer function String() string // Clones the object - Clone() (PatternFlowIcmpv6EchoCode, error) + Clone() (BgpSrteSegmentList, error) validateToAndFrom() error validateObj(vObj *validation, set_default bool) setDefault() - // Choice returns PatternFlowIcmpv6EchoCodeChoiceEnum, set in PatternFlowIcmpv6EchoCode - Choice() PatternFlowIcmpv6EchoCodeChoiceEnum - // SetChoice assigns PatternFlowIcmpv6EchoCodeChoiceEnum provided by user to PatternFlowIcmpv6EchoCode - SetChoice(value PatternFlowIcmpv6EchoCodeChoiceEnum) PatternFlowIcmpv6EchoCode - // HasChoice checks if Choice has been set in PatternFlowIcmpv6EchoCode - HasChoice() bool - // Value returns uint32, set in PatternFlowIcmpv6EchoCode. - Value() uint32 - // SetValue assigns uint32 provided by user to PatternFlowIcmpv6EchoCode - SetValue(value uint32) PatternFlowIcmpv6EchoCode - // HasValue checks if Value has been set in PatternFlowIcmpv6EchoCode - HasValue() bool - // Values returns []uint32, set in PatternFlowIcmpv6EchoCode. - Values() []uint32 - // SetValues assigns []uint32 provided by user to PatternFlowIcmpv6EchoCode - SetValues(value []uint32) PatternFlowIcmpv6EchoCode - // Increment returns PatternFlowIcmpv6EchoCodeCounter, set in PatternFlowIcmpv6EchoCode. - // PatternFlowIcmpv6EchoCodeCounter is integer counter pattern - Increment() PatternFlowIcmpv6EchoCodeCounter - // SetIncrement assigns PatternFlowIcmpv6EchoCodeCounter provided by user to PatternFlowIcmpv6EchoCode. - // PatternFlowIcmpv6EchoCodeCounter is integer counter pattern - SetIncrement(value PatternFlowIcmpv6EchoCodeCounter) PatternFlowIcmpv6EchoCode - // HasIncrement checks if Increment has been set in PatternFlowIcmpv6EchoCode - HasIncrement() bool - // Decrement returns PatternFlowIcmpv6EchoCodeCounter, set in PatternFlowIcmpv6EchoCode. - // PatternFlowIcmpv6EchoCodeCounter is integer counter pattern - Decrement() PatternFlowIcmpv6EchoCodeCounter - // SetDecrement assigns PatternFlowIcmpv6EchoCodeCounter provided by user to PatternFlowIcmpv6EchoCode. - // PatternFlowIcmpv6EchoCodeCounter is integer counter pattern - SetDecrement(value PatternFlowIcmpv6EchoCodeCounter) PatternFlowIcmpv6EchoCode - // HasDecrement checks if Decrement has been set in PatternFlowIcmpv6EchoCode - HasDecrement() bool - // MetricTags returns PatternFlowIcmpv6EchoCodePatternFlowIcmpv6EchoCodeMetricTagIterIter, set in PatternFlowIcmpv6EchoCode - MetricTags() PatternFlowIcmpv6EchoCodePatternFlowIcmpv6EchoCodeMetricTagIter + // Weight returns uint32, set in BgpSrteSegmentList. + Weight() uint32 + // SetWeight assigns uint32 provided by user to BgpSrteSegmentList + SetWeight(value uint32) BgpSrteSegmentList + // HasWeight checks if Weight has been set in BgpSrteSegmentList + HasWeight() bool + // Segments returns BgpSrteSegmentListBgpSrteSegmentIterIter, set in BgpSrteSegmentList + Segments() BgpSrteSegmentListBgpSrteSegmentIter + // Name returns string, set in BgpSrteSegmentList. + Name() string + // SetName assigns string provided by user to BgpSrteSegmentList + SetName(value string) BgpSrteSegmentList + // Active returns bool, set in BgpSrteSegmentList. + Active() bool + // SetActive assigns bool provided by user to BgpSrteSegmentList + SetActive(value bool) BgpSrteSegmentList + // HasActive checks if Active has been set in BgpSrteSegmentList + HasActive() bool setNil() } -type PatternFlowIcmpv6EchoCodeChoiceEnum string - -// Enum of Choice on PatternFlowIcmpv6EchoCode -var PatternFlowIcmpv6EchoCodeChoice = struct { - VALUE PatternFlowIcmpv6EchoCodeChoiceEnum - VALUES PatternFlowIcmpv6EchoCodeChoiceEnum - INCREMENT PatternFlowIcmpv6EchoCodeChoiceEnum - DECREMENT PatternFlowIcmpv6EchoCodeChoiceEnum -}{ - VALUE: PatternFlowIcmpv6EchoCodeChoiceEnum("value"), - VALUES: PatternFlowIcmpv6EchoCodeChoiceEnum("values"), - INCREMENT: PatternFlowIcmpv6EchoCodeChoiceEnum("increment"), - DECREMENT: PatternFlowIcmpv6EchoCodeChoiceEnum("decrement"), -} - -func (obj *patternFlowIcmpv6EchoCode) Choice() PatternFlowIcmpv6EchoCodeChoiceEnum { - return PatternFlowIcmpv6EchoCodeChoiceEnum(obj.obj.Choice.Enum().String()) -} - -// description is TBD -// Choice returns a string -func (obj *patternFlowIcmpv6EchoCode) HasChoice() bool { - return obj.obj.Choice != nil -} - -func (obj *patternFlowIcmpv6EchoCode) SetChoice(value PatternFlowIcmpv6EchoCodeChoiceEnum) PatternFlowIcmpv6EchoCode { - intValue, ok := otg.PatternFlowIcmpv6EchoCode_Choice_Enum_value[string(value)] - if !ok { - obj.validationErrors = append(obj.validationErrors, fmt.Sprintf( - "%s is not a valid choice on PatternFlowIcmpv6EchoCodeChoiceEnum", string(value))) - return obj - } - enumValue := otg.PatternFlowIcmpv6EchoCode_Choice_Enum(intValue) - obj.obj.Choice = &enumValue - obj.obj.Decrement = nil - obj.decrementHolder = nil - obj.obj.Increment = nil - obj.incrementHolder = nil - obj.obj.Values = nil - obj.obj.Value = nil - - if value == PatternFlowIcmpv6EchoCodeChoice.VALUE { - defaultValue := uint32(0) - obj.obj.Value = &defaultValue - } - - if value == PatternFlowIcmpv6EchoCodeChoice.VALUES { - defaultValue := []uint32{0} - obj.obj.Values = defaultValue - } - - if value == PatternFlowIcmpv6EchoCodeChoice.INCREMENT { - obj.obj.Increment = NewPatternFlowIcmpv6EchoCodeCounter().Msg() - } - - if value == PatternFlowIcmpv6EchoCodeChoice.DECREMENT { - obj.obj.Decrement = NewPatternFlowIcmpv6EchoCodeCounter().Msg() - } - - return obj -} - -// description is TBD -// Value returns a uint32 -func (obj *patternFlowIcmpv6EchoCode) Value() uint32 { - - if obj.obj.Value == nil { - obj.SetChoice(PatternFlowIcmpv6EchoCodeChoice.VALUE) - } - - return *obj.obj.Value - -} - -// description is TBD -// Value returns a uint32 -func (obj *patternFlowIcmpv6EchoCode) HasValue() bool { - return obj.obj.Value != nil -} - -// description is TBD -// SetValue sets the uint32 value in the PatternFlowIcmpv6EchoCode object -func (obj *patternFlowIcmpv6EchoCode) SetValue(value uint32) PatternFlowIcmpv6EchoCode { - obj.SetChoice(PatternFlowIcmpv6EchoCodeChoice.VALUE) - obj.obj.Value = &value - return obj -} - -// description is TBD -// Values returns a []uint32 -func (obj *patternFlowIcmpv6EchoCode) Values() []uint32 { - if obj.obj.Values == nil { - obj.SetValues([]uint32{0}) - } - return obj.obj.Values -} - -// description is TBD -// SetValues sets the []uint32 value in the PatternFlowIcmpv6EchoCode object -func (obj *patternFlowIcmpv6EchoCode) SetValues(value []uint32) PatternFlowIcmpv6EchoCode { - obj.SetChoice(PatternFlowIcmpv6EchoCodeChoice.VALUES) - if obj.obj.Values == nil { - obj.obj.Values = make([]uint32, 0) - } - obj.obj.Values = value - - return obj -} - -// description is TBD -// Increment returns a PatternFlowIcmpv6EchoCodeCounter -func (obj *patternFlowIcmpv6EchoCode) Increment() PatternFlowIcmpv6EchoCodeCounter { - if obj.obj.Increment == nil { - obj.SetChoice(PatternFlowIcmpv6EchoCodeChoice.INCREMENT) - } - if obj.incrementHolder == nil { - obj.incrementHolder = &patternFlowIcmpv6EchoCodeCounter{obj: obj.obj.Increment} - } - return obj.incrementHolder -} - -// description is TBD -// Increment returns a PatternFlowIcmpv6EchoCodeCounter -func (obj *patternFlowIcmpv6EchoCode) HasIncrement() bool { - return obj.obj.Increment != nil -} - -// description is TBD -// SetIncrement sets the PatternFlowIcmpv6EchoCodeCounter value in the PatternFlowIcmpv6EchoCode object -func (obj *patternFlowIcmpv6EchoCode) SetIncrement(value PatternFlowIcmpv6EchoCodeCounter) PatternFlowIcmpv6EchoCode { - obj.SetChoice(PatternFlowIcmpv6EchoCodeChoice.INCREMENT) - obj.incrementHolder = nil - obj.obj.Increment = value.Msg() - - return obj -} +// The Weight associated with a given path and the sub-TLV is optional. +// Weight returns a uint32 +func (obj *bgpSrteSegmentList) Weight() uint32 { -// description is TBD -// Decrement returns a PatternFlowIcmpv6EchoCodeCounter -func (obj *patternFlowIcmpv6EchoCode) Decrement() PatternFlowIcmpv6EchoCodeCounter { - if obj.obj.Decrement == nil { - obj.SetChoice(PatternFlowIcmpv6EchoCodeChoice.DECREMENT) - } - if obj.decrementHolder == nil { - obj.decrementHolder = &patternFlowIcmpv6EchoCodeCounter{obj: obj.obj.Decrement} - } - return obj.decrementHolder -} + return *obj.obj.Weight -// description is TBD -// Decrement returns a PatternFlowIcmpv6EchoCodeCounter -func (obj *patternFlowIcmpv6EchoCode) HasDecrement() bool { - return obj.obj.Decrement != nil } -// description is TBD -// SetDecrement sets the PatternFlowIcmpv6EchoCodeCounter value in the PatternFlowIcmpv6EchoCode object -func (obj *patternFlowIcmpv6EchoCode) SetDecrement(value PatternFlowIcmpv6EchoCodeCounter) PatternFlowIcmpv6EchoCode { - obj.SetChoice(PatternFlowIcmpv6EchoCodeChoice.DECREMENT) - obj.decrementHolder = nil - obj.obj.Decrement = value.Msg() +// The Weight associated with a given path and the sub-TLV is optional. +// Weight returns a uint32 +func (obj *bgpSrteSegmentList) HasWeight() bool { + return obj.obj.Weight != nil +} + +// The Weight associated with a given path and the sub-TLV is optional. +// SetWeight sets the uint32 value in the BgpSrteSegmentList object +func (obj *bgpSrteSegmentList) SetWeight(value uint32) BgpSrteSegmentList { + obj.obj.Weight = &value return obj } -// One or more metric tags can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. -// MetricTags returns a []PatternFlowIcmpv6EchoCodeMetricTag -func (obj *patternFlowIcmpv6EchoCode) MetricTags() PatternFlowIcmpv6EchoCodePatternFlowIcmpv6EchoCodeMetricTagIter { - if len(obj.obj.MetricTags) == 0 { - obj.obj.MetricTags = []*otg.PatternFlowIcmpv6EchoCodeMetricTag{} +// description is TBD +// Segments returns a []BgpSrteSegment +func (obj *bgpSrteSegmentList) Segments() BgpSrteSegmentListBgpSrteSegmentIter { + if len(obj.obj.Segments) == 0 { + obj.obj.Segments = []*otg.BgpSrteSegment{} } - if obj.metricTagsHolder == nil { - obj.metricTagsHolder = newPatternFlowIcmpv6EchoCodePatternFlowIcmpv6EchoCodeMetricTagIter(&obj.obj.MetricTags).setMsg(obj) + if obj.segmentsHolder == nil { + obj.segmentsHolder = newBgpSrteSegmentListBgpSrteSegmentIter(&obj.obj.Segments).setMsg(obj) } - return obj.metricTagsHolder + return obj.segmentsHolder } -type patternFlowIcmpv6EchoCodePatternFlowIcmpv6EchoCodeMetricTagIter struct { - obj *patternFlowIcmpv6EchoCode - patternFlowIcmpv6EchoCodeMetricTagSlice []PatternFlowIcmpv6EchoCodeMetricTag - fieldPtr *[]*otg.PatternFlowIcmpv6EchoCodeMetricTag +type bgpSrteSegmentListBgpSrteSegmentIter struct { + obj *bgpSrteSegmentList + bgpSrteSegmentSlice []BgpSrteSegment + fieldPtr *[]*otg.BgpSrteSegment } -func newPatternFlowIcmpv6EchoCodePatternFlowIcmpv6EchoCodeMetricTagIter(ptr *[]*otg.PatternFlowIcmpv6EchoCodeMetricTag) PatternFlowIcmpv6EchoCodePatternFlowIcmpv6EchoCodeMetricTagIter { - return &patternFlowIcmpv6EchoCodePatternFlowIcmpv6EchoCodeMetricTagIter{fieldPtr: ptr} +func newBgpSrteSegmentListBgpSrteSegmentIter(ptr *[]*otg.BgpSrteSegment) BgpSrteSegmentListBgpSrteSegmentIter { + return &bgpSrteSegmentListBgpSrteSegmentIter{fieldPtr: ptr} } -type PatternFlowIcmpv6EchoCodePatternFlowIcmpv6EchoCodeMetricTagIter interface { - setMsg(*patternFlowIcmpv6EchoCode) PatternFlowIcmpv6EchoCodePatternFlowIcmpv6EchoCodeMetricTagIter - Items() []PatternFlowIcmpv6EchoCodeMetricTag - Add() PatternFlowIcmpv6EchoCodeMetricTag - Append(items ...PatternFlowIcmpv6EchoCodeMetricTag) PatternFlowIcmpv6EchoCodePatternFlowIcmpv6EchoCodeMetricTagIter - Set(index int, newObj PatternFlowIcmpv6EchoCodeMetricTag) PatternFlowIcmpv6EchoCodePatternFlowIcmpv6EchoCodeMetricTagIter - Clear() PatternFlowIcmpv6EchoCodePatternFlowIcmpv6EchoCodeMetricTagIter - clearHolderSlice() PatternFlowIcmpv6EchoCodePatternFlowIcmpv6EchoCodeMetricTagIter - appendHolderSlice(item PatternFlowIcmpv6EchoCodeMetricTag) PatternFlowIcmpv6EchoCodePatternFlowIcmpv6EchoCodeMetricTagIter +type BgpSrteSegmentListBgpSrteSegmentIter interface { + setMsg(*bgpSrteSegmentList) BgpSrteSegmentListBgpSrteSegmentIter + Items() []BgpSrteSegment + Add() BgpSrteSegment + Append(items ...BgpSrteSegment) BgpSrteSegmentListBgpSrteSegmentIter + Set(index int, newObj BgpSrteSegment) BgpSrteSegmentListBgpSrteSegmentIter + Clear() BgpSrteSegmentListBgpSrteSegmentIter + clearHolderSlice() BgpSrteSegmentListBgpSrteSegmentIter + appendHolderSlice(item BgpSrteSegment) BgpSrteSegmentListBgpSrteSegmentIter } -func (obj *patternFlowIcmpv6EchoCodePatternFlowIcmpv6EchoCodeMetricTagIter) setMsg(msg *patternFlowIcmpv6EchoCode) PatternFlowIcmpv6EchoCodePatternFlowIcmpv6EchoCodeMetricTagIter { +func (obj *bgpSrteSegmentListBgpSrteSegmentIter) setMsg(msg *bgpSrteSegmentList) BgpSrteSegmentListBgpSrteSegmentIter { obj.clearHolderSlice() for _, val := range *obj.fieldPtr { - obj.appendHolderSlice(&patternFlowIcmpv6EchoCodeMetricTag{obj: val}) + obj.appendHolderSlice(&bgpSrteSegment{obj: val}) } obj.obj = msg return obj } -func (obj *patternFlowIcmpv6EchoCodePatternFlowIcmpv6EchoCodeMetricTagIter) Items() []PatternFlowIcmpv6EchoCodeMetricTag { - return obj.patternFlowIcmpv6EchoCodeMetricTagSlice +func (obj *bgpSrteSegmentListBgpSrteSegmentIter) Items() []BgpSrteSegment { + return obj.bgpSrteSegmentSlice } -func (obj *patternFlowIcmpv6EchoCodePatternFlowIcmpv6EchoCodeMetricTagIter) Add() PatternFlowIcmpv6EchoCodeMetricTag { - newObj := &otg.PatternFlowIcmpv6EchoCodeMetricTag{} +func (obj *bgpSrteSegmentListBgpSrteSegmentIter) Add() BgpSrteSegment { + newObj := &otg.BgpSrteSegment{} *obj.fieldPtr = append(*obj.fieldPtr, newObj) - newLibObj := &patternFlowIcmpv6EchoCodeMetricTag{obj: newObj} + newLibObj := &bgpSrteSegment{obj: newObj} newLibObj.setDefault() - obj.patternFlowIcmpv6EchoCodeMetricTagSlice = append(obj.patternFlowIcmpv6EchoCodeMetricTagSlice, newLibObj) + obj.bgpSrteSegmentSlice = append(obj.bgpSrteSegmentSlice, newLibObj) return newLibObj } -func (obj *patternFlowIcmpv6EchoCodePatternFlowIcmpv6EchoCodeMetricTagIter) Append(items ...PatternFlowIcmpv6EchoCodeMetricTag) PatternFlowIcmpv6EchoCodePatternFlowIcmpv6EchoCodeMetricTagIter { +func (obj *bgpSrteSegmentListBgpSrteSegmentIter) Append(items ...BgpSrteSegment) BgpSrteSegmentListBgpSrteSegmentIter { for _, item := range items { newObj := item.Msg() *obj.fieldPtr = append(*obj.fieldPtr, newObj) - obj.patternFlowIcmpv6EchoCodeMetricTagSlice = append(obj.patternFlowIcmpv6EchoCodeMetricTagSlice, item) + obj.bgpSrteSegmentSlice = append(obj.bgpSrteSegmentSlice, item) } return obj } -func (obj *patternFlowIcmpv6EchoCodePatternFlowIcmpv6EchoCodeMetricTagIter) Set(index int, newObj PatternFlowIcmpv6EchoCodeMetricTag) PatternFlowIcmpv6EchoCodePatternFlowIcmpv6EchoCodeMetricTagIter { +func (obj *bgpSrteSegmentListBgpSrteSegmentIter) Set(index int, newObj BgpSrteSegment) BgpSrteSegmentListBgpSrteSegmentIter { (*obj.fieldPtr)[index] = newObj.Msg() - obj.patternFlowIcmpv6EchoCodeMetricTagSlice[index] = newObj + obj.bgpSrteSegmentSlice[index] = newObj return obj } -func (obj *patternFlowIcmpv6EchoCodePatternFlowIcmpv6EchoCodeMetricTagIter) Clear() PatternFlowIcmpv6EchoCodePatternFlowIcmpv6EchoCodeMetricTagIter { +func (obj *bgpSrteSegmentListBgpSrteSegmentIter) Clear() BgpSrteSegmentListBgpSrteSegmentIter { if len(*obj.fieldPtr) > 0 { - *obj.fieldPtr = []*otg.PatternFlowIcmpv6EchoCodeMetricTag{} - obj.patternFlowIcmpv6EchoCodeMetricTagSlice = []PatternFlowIcmpv6EchoCodeMetricTag{} + *obj.fieldPtr = []*otg.BgpSrteSegment{} + obj.bgpSrteSegmentSlice = []BgpSrteSegment{} } return obj } -func (obj *patternFlowIcmpv6EchoCodePatternFlowIcmpv6EchoCodeMetricTagIter) clearHolderSlice() PatternFlowIcmpv6EchoCodePatternFlowIcmpv6EchoCodeMetricTagIter { - if len(obj.patternFlowIcmpv6EchoCodeMetricTagSlice) > 0 { - obj.patternFlowIcmpv6EchoCodeMetricTagSlice = []PatternFlowIcmpv6EchoCodeMetricTag{} +func (obj *bgpSrteSegmentListBgpSrteSegmentIter) clearHolderSlice() BgpSrteSegmentListBgpSrteSegmentIter { + if len(obj.bgpSrteSegmentSlice) > 0 { + obj.bgpSrteSegmentSlice = []BgpSrteSegment{} } return obj } -func (obj *patternFlowIcmpv6EchoCodePatternFlowIcmpv6EchoCodeMetricTagIter) appendHolderSlice(item PatternFlowIcmpv6EchoCodeMetricTag) PatternFlowIcmpv6EchoCodePatternFlowIcmpv6EchoCodeMetricTagIter { - obj.patternFlowIcmpv6EchoCodeMetricTagSlice = append(obj.patternFlowIcmpv6EchoCodeMetricTagSlice, item) +func (obj *bgpSrteSegmentListBgpSrteSegmentIter) appendHolderSlice(item BgpSrteSegment) BgpSrteSegmentListBgpSrteSegmentIter { + obj.bgpSrteSegmentSlice = append(obj.bgpSrteSegmentSlice, item) return obj } -func (obj *patternFlowIcmpv6EchoCode) validateObj(vObj *validation, set_default bool) { - if set_default { - obj.setDefault() - } +// Globally unique name of an object. It also serves as the primary key for arrays of objects. +// Name returns a string +func (obj *bgpSrteSegmentList) Name() string { - if obj.obj.Value != nil { + return *obj.obj.Name - if *obj.obj.Value > 255 { - vObj.validationErrors = append( - vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowIcmpv6EchoCode.Value <= 255 but Got %d", *obj.obj.Value)) - } +} - } +// Globally unique name of an object. It also serves as the primary key for arrays of objects. +// SetName sets the string value in the BgpSrteSegmentList object +func (obj *bgpSrteSegmentList) SetName(value string) BgpSrteSegmentList { - if obj.obj.Values != nil { + obj.obj.Name = &value + return obj +} - for _, item := range obj.obj.Values { - if item > 255 { - vObj.validationErrors = append( - vObj.validationErrors, - fmt.Sprintf("min(uint32) <= PatternFlowIcmpv6EchoCode.Values <= 255 but Got %d", item)) - } +// If enabled means that this part of the configuration including any active 'children' nodes will be advertised to peer. If disabled, this means that though config is present, it is not taking any part of the test but can be activated at run-time to advertise just this part of the configuration to the peer. +// Active returns a bool +func (obj *bgpSrteSegmentList) Active() bool { - } + return *obj.obj.Active - } +} - if obj.obj.Increment != nil { +// If enabled means that this part of the configuration including any active 'children' nodes will be advertised to peer. If disabled, this means that though config is present, it is not taking any part of the test but can be activated at run-time to advertise just this part of the configuration to the peer. +// Active returns a bool +func (obj *bgpSrteSegmentList) HasActive() bool { + return obj.obj.Active != nil +} - obj.Increment().validateObj(vObj, set_default) - } +// If enabled means that this part of the configuration including any active 'children' nodes will be advertised to peer. If disabled, this means that though config is present, it is not taking any part of the test but can be activated at run-time to advertise just this part of the configuration to the peer. +// SetActive sets the bool value in the BgpSrteSegmentList object +func (obj *bgpSrteSegmentList) SetActive(value bool) BgpSrteSegmentList { - if obj.obj.Decrement != nil { + obj.obj.Active = &value + return obj +} - obj.Decrement().validateObj(vObj, set_default) +func (obj *bgpSrteSegmentList) validateObj(vObj *validation, set_default bool) { + if set_default { + obj.setDefault() } - if len(obj.obj.MetricTags) != 0 { + if len(obj.obj.Segments) != 0 { if set_default { - obj.MetricTags().clearHolderSlice() - for _, item := range obj.obj.MetricTags { - obj.MetricTags().appendHolderSlice(&patternFlowIcmpv6EchoCodeMetricTag{obj: item}) + obj.Segments().clearHolderSlice() + for _, item := range obj.obj.Segments { + obj.Segments().appendHolderSlice(&bgpSrteSegment{obj: item}) } } - for _, item := range obj.MetricTags().Items() { + for _, item := range obj.Segments().Items() { item.validateObj(vObj, set_default) } } + // Name is required + if obj.obj.Name == nil { + vObj.validationErrors = append(vObj.validationErrors, "Name is required field on interface BgpSrteSegmentList") + } } -func (obj *patternFlowIcmpv6EchoCode) setDefault() { - if obj.obj.Choice == nil { - obj.SetChoice(PatternFlowIcmpv6EchoCodeChoice.VALUE) - +func (obj *bgpSrteSegmentList) setDefault() { + if obj.obj.Weight == nil { + obj.SetWeight(0) + } + if obj.obj.Active == nil { + obj.SetActive(true) } } -// ***** PatternFlowIcmpv6EchoIdentifier ***** -type patternFlowIcmpv6EchoIdentifier struct { +// ***** BgpV6EviVxlan ***** +type bgpV6EviVxlan struct { validation - obj *otg.PatternFlowIcmpv6EchoIdentifier - incrementHolder PatternFlowIcmpv6EchoIdentifierCounter - decrementHolder PatternFlowIcmpv6EchoIdentifierCounter - metricTagsHolder PatternFlowIcmpv6EchoIdentifierPatternFlowIcmpv6EchoIdentifierMetricTagIter + obj *otg.BgpV6EviVxlan + broadcastDomainsHolder BgpV6EviVxlanBgpV6EviVxlanBroadcastDomainIter + routeDistinguisherHolder BgpRouteDistinguisher + routeTargetExportHolder BgpV6EviVxlanBgpRouteTargetIter + routeTargetImportHolder BgpV6EviVxlanBgpRouteTargetIter + l3RouteTargetExportHolder BgpV6EviVxlanBgpRouteTargetIter + l3RouteTargetImportHolder BgpV6EviVxlanBgpRouteTargetIter + advancedHolder BgpRouteAdvanced + communitiesHolder BgpV6EviVxlanBgpCommunityIter + extCommunitiesHolder BgpV6EviVxlanBgpExtCommunityIter + asPathHolder BgpAsPath } -func NewPatternFlowIcmpv6EchoIdentifier() PatternFlowIcmpv6EchoIdentifier { - obj := patternFlowIcmpv6EchoIdentifier{obj: &otg.PatternFlowIcmpv6EchoIdentifier{}} +func NewBgpV6EviVxlan() BgpV6EviVxlan { + obj := bgpV6EviVxlan{obj: &otg.BgpV6EviVxlan{}} obj.setDefault() return &obj } -func (obj *patternFlowIcmpv6EchoIdentifier) Msg() *otg.PatternFlowIcmpv6EchoIdentifier { +func (obj *bgpV6EviVxlan) Msg() *otg.BgpV6EviVxlan { return obj.obj } -func (obj *patternFlowIcmpv6EchoIdentifier) SetMsg(msg *otg.PatternFlowIcmpv6EchoIdentifier) PatternFlowIcmpv6EchoIdentifier { +func (obj *bgpV6EviVxlan) SetMsg(msg *otg.BgpV6EviVxlan) BgpV6EviVxlan { obj.setNil() proto.Merge(obj.obj, msg) return obj } -func (obj *patternFlowIcmpv6EchoIdentifier) ToProto() (*otg.PatternFlowIcmpv6EchoIdentifier, error) { +func (obj *bgpV6EviVxlan) ToProto() (*otg.BgpV6EviVxlan, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -262981,7 +308640,7 @@ func (obj *patternFlowIcmpv6EchoIdentifier) ToProto() (*otg.PatternFlowIcmpv6Ech return obj.Msg(), nil } -func (obj *patternFlowIcmpv6EchoIdentifier) FromProto(msg *otg.PatternFlowIcmpv6EchoIdentifier) (PatternFlowIcmpv6EchoIdentifier, error) { +func (obj *bgpV6EviVxlan) FromProto(msg *otg.BgpV6EviVxlan) (BgpV6EviVxlan, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -262990,7 +308649,7 @@ func (obj *patternFlowIcmpv6EchoIdentifier) FromProto(msg *otg.PatternFlowIcmpv6 return newObj, nil } -func (obj *patternFlowIcmpv6EchoIdentifier) ToPbText() (string, error) { +func (obj *bgpV6EviVxlan) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -263002,7 +308661,7 @@ func (obj *patternFlowIcmpv6EchoIdentifier) ToPbText() (string, error) { return string(protoMarshal), nil } -func (obj *patternFlowIcmpv6EchoIdentifier) FromPbText(value string) error { +func (obj *bgpV6EviVxlan) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj @@ -263015,7 +308674,7 @@ func (obj *patternFlowIcmpv6EchoIdentifier) FromPbText(value string) error { return retObj } -func (obj *patternFlowIcmpv6EchoIdentifier) ToYaml() (string, error) { +func (obj *bgpV6EviVxlan) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -263036,7 +308695,7 @@ func (obj *patternFlowIcmpv6EchoIdentifier) ToYaml() (string, error) { return string(data), nil } -func (obj *patternFlowIcmpv6EchoIdentifier) FromYaml(value string) error { +func (obj *bgpV6EviVxlan) FromYaml(value string) error { if value == "" { value = "{}" } @@ -263061,7 +308720,7 @@ func (obj *patternFlowIcmpv6EchoIdentifier) FromYaml(value string) error { return nil } -func (obj *patternFlowIcmpv6EchoIdentifier) ToJson() (string, error) { +func (obj *bgpV6EviVxlan) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -263079,7 +308738,7 @@ func (obj *patternFlowIcmpv6EchoIdentifier) ToJson() (string, error) { return string(data), nil } -func (obj *patternFlowIcmpv6EchoIdentifier) FromJson(value string) error { +func (obj *bgpV6EviVxlan) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -263100,19 +308759,19 @@ func (obj *patternFlowIcmpv6EchoIdentifier) FromJson(value string) error { return nil } -func (obj *patternFlowIcmpv6EchoIdentifier) validateToAndFrom() error { +func (obj *bgpV6EviVxlan) validateToAndFrom() error { // emptyVars() obj.validateObj(&obj.validation, true) return obj.validationResult() } -func (obj *patternFlowIcmpv6EchoIdentifier) Validate() error { +func (obj *bgpV6EviVxlan) Validate() error { // emptyVars() obj.validateObj(&obj.validation, false) return obj.validationResult() } -func (obj *patternFlowIcmpv6EchoIdentifier) String() string { +func (obj *bgpV6EviVxlan) String() string { str, err := obj.ToYaml() if err != nil { return err.Error() @@ -263120,12 +308779,12 @@ func (obj *patternFlowIcmpv6EchoIdentifier) String() string { return str } -func (obj *patternFlowIcmpv6EchoIdentifier) Clone() (PatternFlowIcmpv6EchoIdentifier, error) { +func (obj *bgpV6EviVxlan) Clone() (BgpV6EviVxlan, error) { vErr := obj.Validate() if vErr != nil { return nil, vErr } - newObj := NewPatternFlowIcmpv6EchoIdentifier() + newObj := NewBgpV6EviVxlan() data, err := proto.Marshal(obj.Msg()) if err != nil { return nil, err @@ -263137,426 +308796,842 @@ func (obj *patternFlowIcmpv6EchoIdentifier) Clone() (PatternFlowIcmpv6EchoIdenti return newObj, nil } -func (obj *patternFlowIcmpv6EchoIdentifier) setNil() { - obj.incrementHolder = nil - obj.decrementHolder = nil - obj.metricTagsHolder = nil +func (obj *bgpV6EviVxlan) setNil() { + obj.broadcastDomainsHolder = nil + obj.routeDistinguisherHolder = nil + obj.routeTargetExportHolder = nil + obj.routeTargetImportHolder = nil + obj.l3RouteTargetExportHolder = nil + obj.l3RouteTargetImportHolder = nil + obj.advancedHolder = nil + obj.communitiesHolder = nil + obj.extCommunitiesHolder = nil + obj.asPathHolder = nil obj.validationErrors = nil obj.warnings = nil obj.constraints = make(map[string]map[string]Constraints) } -// PatternFlowIcmpv6EchoIdentifier is iCMPv6 echo identifier -type PatternFlowIcmpv6EchoIdentifier interface { +// BgpV6EviVxlan is configuration for BGP EVPN EVI. Advertises following routes - +// +// # Type 3 - Inclusive Multicast Ethernet Tag Route +// +// Type 1 - Ethernet Auto-discovery Route (Per EVI) +// +// Type 1 - Ethernet Auto-discovery Route (Per ES) +type BgpV6EviVxlan interface { Validation - // Msg marshals PatternFlowIcmpv6EchoIdentifier to protobuf object *otg.PatternFlowIcmpv6EchoIdentifier + // Msg marshals BgpV6EviVxlan to protobuf object *otg.BgpV6EviVxlan // and doesn't set defaults - Msg() *otg.PatternFlowIcmpv6EchoIdentifier - // SetMsg unmarshals PatternFlowIcmpv6EchoIdentifier from protobuf object *otg.PatternFlowIcmpv6EchoIdentifier + Msg() *otg.BgpV6EviVxlan + // SetMsg unmarshals BgpV6EviVxlan from protobuf object *otg.BgpV6EviVxlan // and doesn't set defaults - SetMsg(*otg.PatternFlowIcmpv6EchoIdentifier) PatternFlowIcmpv6EchoIdentifier - // ToProto marshals PatternFlowIcmpv6EchoIdentifier to protobuf object *otg.PatternFlowIcmpv6EchoIdentifier - ToProto() (*otg.PatternFlowIcmpv6EchoIdentifier, error) - // ToPbText marshals PatternFlowIcmpv6EchoIdentifier to protobuf text + SetMsg(*otg.BgpV6EviVxlan) BgpV6EviVxlan + // ToProto marshals BgpV6EviVxlan to protobuf object *otg.BgpV6EviVxlan + ToProto() (*otg.BgpV6EviVxlan, error) + // ToPbText marshals BgpV6EviVxlan to protobuf text ToPbText() (string, error) - // ToYaml marshals PatternFlowIcmpv6EchoIdentifier to YAML text + // ToYaml marshals BgpV6EviVxlan to YAML text ToYaml() (string, error) - // ToJson marshals PatternFlowIcmpv6EchoIdentifier to JSON text + // ToJson marshals BgpV6EviVxlan to JSON text ToJson() (string, error) - // FromProto unmarshals PatternFlowIcmpv6EchoIdentifier from protobuf object *otg.PatternFlowIcmpv6EchoIdentifier - FromProto(msg *otg.PatternFlowIcmpv6EchoIdentifier) (PatternFlowIcmpv6EchoIdentifier, error) - // FromPbText unmarshals PatternFlowIcmpv6EchoIdentifier from protobuf text + // FromProto unmarshals BgpV6EviVxlan from protobuf object *otg.BgpV6EviVxlan + FromProto(msg *otg.BgpV6EviVxlan) (BgpV6EviVxlan, error) + // FromPbText unmarshals BgpV6EviVxlan from protobuf text FromPbText(value string) error - // FromYaml unmarshals PatternFlowIcmpv6EchoIdentifier from YAML text + // FromYaml unmarshals BgpV6EviVxlan from YAML text FromYaml(value string) error - // FromJson unmarshals PatternFlowIcmpv6EchoIdentifier from JSON text + // FromJson unmarshals BgpV6EviVxlan from JSON text FromJson(value string) error - // Validate validates PatternFlowIcmpv6EchoIdentifier + // Validate validates BgpV6EviVxlan Validate() error // A stringer function String() string // Clones the object - Clone() (PatternFlowIcmpv6EchoIdentifier, error) + Clone() (BgpV6EviVxlan, error) validateToAndFrom() error validateObj(vObj *validation, set_default bool) setDefault() - // Choice returns PatternFlowIcmpv6EchoIdentifierChoiceEnum, set in PatternFlowIcmpv6EchoIdentifier - Choice() PatternFlowIcmpv6EchoIdentifierChoiceEnum - // SetChoice assigns PatternFlowIcmpv6EchoIdentifierChoiceEnum provided by user to PatternFlowIcmpv6EchoIdentifier - SetChoice(value PatternFlowIcmpv6EchoIdentifierChoiceEnum) PatternFlowIcmpv6EchoIdentifier - // HasChoice checks if Choice has been set in PatternFlowIcmpv6EchoIdentifier - HasChoice() bool - // Value returns uint32, set in PatternFlowIcmpv6EchoIdentifier. - Value() uint32 - // SetValue assigns uint32 provided by user to PatternFlowIcmpv6EchoIdentifier - SetValue(value uint32) PatternFlowIcmpv6EchoIdentifier - // HasValue checks if Value has been set in PatternFlowIcmpv6EchoIdentifier - HasValue() bool - // Values returns []uint32, set in PatternFlowIcmpv6EchoIdentifier. - Values() []uint32 - // SetValues assigns []uint32 provided by user to PatternFlowIcmpv6EchoIdentifier - SetValues(value []uint32) PatternFlowIcmpv6EchoIdentifier - // Increment returns PatternFlowIcmpv6EchoIdentifierCounter, set in PatternFlowIcmpv6EchoIdentifier. - // PatternFlowIcmpv6EchoIdentifierCounter is integer counter pattern - Increment() PatternFlowIcmpv6EchoIdentifierCounter - // SetIncrement assigns PatternFlowIcmpv6EchoIdentifierCounter provided by user to PatternFlowIcmpv6EchoIdentifier. - // PatternFlowIcmpv6EchoIdentifierCounter is integer counter pattern - SetIncrement(value PatternFlowIcmpv6EchoIdentifierCounter) PatternFlowIcmpv6EchoIdentifier - // HasIncrement checks if Increment has been set in PatternFlowIcmpv6EchoIdentifier - HasIncrement() bool - // Decrement returns PatternFlowIcmpv6EchoIdentifierCounter, set in PatternFlowIcmpv6EchoIdentifier. - // PatternFlowIcmpv6EchoIdentifierCounter is integer counter pattern - Decrement() PatternFlowIcmpv6EchoIdentifierCounter - // SetDecrement assigns PatternFlowIcmpv6EchoIdentifierCounter provided by user to PatternFlowIcmpv6EchoIdentifier. - // PatternFlowIcmpv6EchoIdentifierCounter is integer counter pattern - SetDecrement(value PatternFlowIcmpv6EchoIdentifierCounter) PatternFlowIcmpv6EchoIdentifier - // HasDecrement checks if Decrement has been set in PatternFlowIcmpv6EchoIdentifier - HasDecrement() bool - // MetricTags returns PatternFlowIcmpv6EchoIdentifierPatternFlowIcmpv6EchoIdentifierMetricTagIterIter, set in PatternFlowIcmpv6EchoIdentifier - MetricTags() PatternFlowIcmpv6EchoIdentifierPatternFlowIcmpv6EchoIdentifierMetricTagIter + // BroadcastDomains returns BgpV6EviVxlanBgpV6EviVxlanBroadcastDomainIterIter, set in BgpV6EviVxlan + BroadcastDomains() BgpV6EviVxlanBgpV6EviVxlanBroadcastDomainIter + // ReplicationType returns BgpV6EviVxlanReplicationTypeEnum, set in BgpV6EviVxlan + ReplicationType() BgpV6EviVxlanReplicationTypeEnum + // SetReplicationType assigns BgpV6EviVxlanReplicationTypeEnum provided by user to BgpV6EviVxlan + SetReplicationType(value BgpV6EviVxlanReplicationTypeEnum) BgpV6EviVxlan + // HasReplicationType checks if ReplicationType has been set in BgpV6EviVxlan + HasReplicationType() bool + // PmsiLabel returns uint32, set in BgpV6EviVxlan. + PmsiLabel() uint32 + // SetPmsiLabel assigns uint32 provided by user to BgpV6EviVxlan + SetPmsiLabel(value uint32) BgpV6EviVxlan + // HasPmsiLabel checks if PmsiLabel has been set in BgpV6EviVxlan + HasPmsiLabel() bool + // AdLabel returns uint32, set in BgpV6EviVxlan. + AdLabel() uint32 + // SetAdLabel assigns uint32 provided by user to BgpV6EviVxlan + SetAdLabel(value uint32) BgpV6EviVxlan + // HasAdLabel checks if AdLabel has been set in BgpV6EviVxlan + HasAdLabel() bool + // RouteDistinguisher returns BgpRouteDistinguisher, set in BgpV6EviVxlan. + // BgpRouteDistinguisher is bGP Route Distinguisher. + RouteDistinguisher() BgpRouteDistinguisher + // SetRouteDistinguisher assigns BgpRouteDistinguisher provided by user to BgpV6EviVxlan. + // BgpRouteDistinguisher is bGP Route Distinguisher. + SetRouteDistinguisher(value BgpRouteDistinguisher) BgpV6EviVxlan + // HasRouteDistinguisher checks if RouteDistinguisher has been set in BgpV6EviVxlan + HasRouteDistinguisher() bool + // RouteTargetExport returns BgpV6EviVxlanBgpRouteTargetIterIter, set in BgpV6EviVxlan + RouteTargetExport() BgpV6EviVxlanBgpRouteTargetIter + // RouteTargetImport returns BgpV6EviVxlanBgpRouteTargetIterIter, set in BgpV6EviVxlan + RouteTargetImport() BgpV6EviVxlanBgpRouteTargetIter + // L3RouteTargetExport returns BgpV6EviVxlanBgpRouteTargetIterIter, set in BgpV6EviVxlan + L3RouteTargetExport() BgpV6EviVxlanBgpRouteTargetIter + // L3RouteTargetImport returns BgpV6EviVxlanBgpRouteTargetIterIter, set in BgpV6EviVxlan + L3RouteTargetImport() BgpV6EviVxlanBgpRouteTargetIter + // Advanced returns BgpRouteAdvanced, set in BgpV6EviVxlan. + // BgpRouteAdvanced is configuration for advanced BGP route range settings. + Advanced() BgpRouteAdvanced + // SetAdvanced assigns BgpRouteAdvanced provided by user to BgpV6EviVxlan. + // BgpRouteAdvanced is configuration for advanced BGP route range settings. + SetAdvanced(value BgpRouteAdvanced) BgpV6EviVxlan + // HasAdvanced checks if Advanced has been set in BgpV6EviVxlan + HasAdvanced() bool + // Communities returns BgpV6EviVxlanBgpCommunityIterIter, set in BgpV6EviVxlan + Communities() BgpV6EviVxlanBgpCommunityIter + // ExtCommunities returns BgpV6EviVxlanBgpExtCommunityIterIter, set in BgpV6EviVxlan + ExtCommunities() BgpV6EviVxlanBgpExtCommunityIter + // AsPath returns BgpAsPath, set in BgpV6EviVxlan. + // BgpAsPath is this attribute identifies the autonomous systems through which routing information carried in this UPDATE message has passed. This contains the configuration of how to include the Local AS in the AS path attribute of the MP REACH NLRI. It also contains optional configuration of additional AS Path Segments that can be included in the AS Path attribute. The AS Path consists of a Set or Sequence of Autonomous Systems (AS) numbers that a routing information passes through to reach the destination. + AsPath() BgpAsPath + // SetAsPath assigns BgpAsPath provided by user to BgpV6EviVxlan. + // BgpAsPath is this attribute identifies the autonomous systems through which routing information carried in this UPDATE message has passed. This contains the configuration of how to include the Local AS in the AS path attribute of the MP REACH NLRI. It also contains optional configuration of additional AS Path Segments that can be included in the AS Path attribute. The AS Path consists of a Set or Sequence of Autonomous Systems (AS) numbers that a routing information passes through to reach the destination. + SetAsPath(value BgpAsPath) BgpV6EviVxlan + // HasAsPath checks if AsPath has been set in BgpV6EviVxlan + HasAsPath() bool setNil() } -type PatternFlowIcmpv6EchoIdentifierChoiceEnum string +// This contains the list of Broadcast Domains to be configured per EVI. +// BroadcastDomains returns a []BgpV6EviVxlanBroadcastDomain +func (obj *bgpV6EviVxlan) BroadcastDomains() BgpV6EviVxlanBgpV6EviVxlanBroadcastDomainIter { + if len(obj.obj.BroadcastDomains) == 0 { + obj.obj.BroadcastDomains = []*otg.BgpV6EviVxlanBroadcastDomain{} + } + if obj.broadcastDomainsHolder == nil { + obj.broadcastDomainsHolder = newBgpV6EviVxlanBgpV6EviVxlanBroadcastDomainIter(&obj.obj.BroadcastDomains).setMsg(obj) + } + return obj.broadcastDomainsHolder +} -// Enum of Choice on PatternFlowIcmpv6EchoIdentifier -var PatternFlowIcmpv6EchoIdentifierChoice = struct { - VALUE PatternFlowIcmpv6EchoIdentifierChoiceEnum - VALUES PatternFlowIcmpv6EchoIdentifierChoiceEnum - INCREMENT PatternFlowIcmpv6EchoIdentifierChoiceEnum - DECREMENT PatternFlowIcmpv6EchoIdentifierChoiceEnum +type bgpV6EviVxlanBgpV6EviVxlanBroadcastDomainIter struct { + obj *bgpV6EviVxlan + bgpV6EviVxlanBroadcastDomainSlice []BgpV6EviVxlanBroadcastDomain + fieldPtr *[]*otg.BgpV6EviVxlanBroadcastDomain +} + +func newBgpV6EviVxlanBgpV6EviVxlanBroadcastDomainIter(ptr *[]*otg.BgpV6EviVxlanBroadcastDomain) BgpV6EviVxlanBgpV6EviVxlanBroadcastDomainIter { + return &bgpV6EviVxlanBgpV6EviVxlanBroadcastDomainIter{fieldPtr: ptr} +} + +type BgpV6EviVxlanBgpV6EviVxlanBroadcastDomainIter interface { + setMsg(*bgpV6EviVxlan) BgpV6EviVxlanBgpV6EviVxlanBroadcastDomainIter + Items() []BgpV6EviVxlanBroadcastDomain + Add() BgpV6EviVxlanBroadcastDomain + Append(items ...BgpV6EviVxlanBroadcastDomain) BgpV6EviVxlanBgpV6EviVxlanBroadcastDomainIter + Set(index int, newObj BgpV6EviVxlanBroadcastDomain) BgpV6EviVxlanBgpV6EviVxlanBroadcastDomainIter + Clear() BgpV6EviVxlanBgpV6EviVxlanBroadcastDomainIter + clearHolderSlice() BgpV6EviVxlanBgpV6EviVxlanBroadcastDomainIter + appendHolderSlice(item BgpV6EviVxlanBroadcastDomain) BgpV6EviVxlanBgpV6EviVxlanBroadcastDomainIter +} + +func (obj *bgpV6EviVxlanBgpV6EviVxlanBroadcastDomainIter) setMsg(msg *bgpV6EviVxlan) BgpV6EviVxlanBgpV6EviVxlanBroadcastDomainIter { + obj.clearHolderSlice() + for _, val := range *obj.fieldPtr { + obj.appendHolderSlice(&bgpV6EviVxlanBroadcastDomain{obj: val}) + } + obj.obj = msg + return obj +} + +func (obj *bgpV6EviVxlanBgpV6EviVxlanBroadcastDomainIter) Items() []BgpV6EviVxlanBroadcastDomain { + return obj.bgpV6EviVxlanBroadcastDomainSlice +} + +func (obj *bgpV6EviVxlanBgpV6EviVxlanBroadcastDomainIter) Add() BgpV6EviVxlanBroadcastDomain { + newObj := &otg.BgpV6EviVxlanBroadcastDomain{} + *obj.fieldPtr = append(*obj.fieldPtr, newObj) + newLibObj := &bgpV6EviVxlanBroadcastDomain{obj: newObj} + newLibObj.setDefault() + obj.bgpV6EviVxlanBroadcastDomainSlice = append(obj.bgpV6EviVxlanBroadcastDomainSlice, newLibObj) + return newLibObj +} + +func (obj *bgpV6EviVxlanBgpV6EviVxlanBroadcastDomainIter) Append(items ...BgpV6EviVxlanBroadcastDomain) BgpV6EviVxlanBgpV6EviVxlanBroadcastDomainIter { + for _, item := range items { + newObj := item.Msg() + *obj.fieldPtr = append(*obj.fieldPtr, newObj) + obj.bgpV6EviVxlanBroadcastDomainSlice = append(obj.bgpV6EviVxlanBroadcastDomainSlice, item) + } + return obj +} + +func (obj *bgpV6EviVxlanBgpV6EviVxlanBroadcastDomainIter) Set(index int, newObj BgpV6EviVxlanBroadcastDomain) BgpV6EviVxlanBgpV6EviVxlanBroadcastDomainIter { + (*obj.fieldPtr)[index] = newObj.Msg() + obj.bgpV6EviVxlanBroadcastDomainSlice[index] = newObj + return obj +} +func (obj *bgpV6EviVxlanBgpV6EviVxlanBroadcastDomainIter) Clear() BgpV6EviVxlanBgpV6EviVxlanBroadcastDomainIter { + if len(*obj.fieldPtr) > 0 { + *obj.fieldPtr = []*otg.BgpV6EviVxlanBroadcastDomain{} + obj.bgpV6EviVxlanBroadcastDomainSlice = []BgpV6EviVxlanBroadcastDomain{} + } + return obj +} +func (obj *bgpV6EviVxlanBgpV6EviVxlanBroadcastDomainIter) clearHolderSlice() BgpV6EviVxlanBgpV6EviVxlanBroadcastDomainIter { + if len(obj.bgpV6EviVxlanBroadcastDomainSlice) > 0 { + obj.bgpV6EviVxlanBroadcastDomainSlice = []BgpV6EviVxlanBroadcastDomain{} + } + return obj +} +func (obj *bgpV6EviVxlanBgpV6EviVxlanBroadcastDomainIter) appendHolderSlice(item BgpV6EviVxlanBroadcastDomain) BgpV6EviVxlanBgpV6EviVxlanBroadcastDomainIter { + obj.bgpV6EviVxlanBroadcastDomainSlice = append(obj.bgpV6EviVxlanBroadcastDomainSlice, item) + return obj +} + +type BgpV6EviVxlanReplicationTypeEnum string + +// Enum of ReplicationType on BgpV6EviVxlan +var BgpV6EviVxlanReplicationType = struct { + INGRESS_REPLICATION BgpV6EviVxlanReplicationTypeEnum }{ - VALUE: PatternFlowIcmpv6EchoIdentifierChoiceEnum("value"), - VALUES: PatternFlowIcmpv6EchoIdentifierChoiceEnum("values"), - INCREMENT: PatternFlowIcmpv6EchoIdentifierChoiceEnum("increment"), - DECREMENT: PatternFlowIcmpv6EchoIdentifierChoiceEnum("decrement"), + INGRESS_REPLICATION: BgpV6EviVxlanReplicationTypeEnum("ingress_replication"), } -func (obj *patternFlowIcmpv6EchoIdentifier) Choice() PatternFlowIcmpv6EchoIdentifierChoiceEnum { - return PatternFlowIcmpv6EchoIdentifierChoiceEnum(obj.obj.Choice.Enum().String()) +func (obj *bgpV6EviVxlan) ReplicationType() BgpV6EviVxlanReplicationTypeEnum { + return BgpV6EviVxlanReplicationTypeEnum(obj.obj.ReplicationType.Enum().String()) } -// description is TBD -// Choice returns a string -func (obj *patternFlowIcmpv6EchoIdentifier) HasChoice() bool { - return obj.obj.Choice != nil +// This model only supports Ingress Replication +// ReplicationType returns a string +func (obj *bgpV6EviVxlan) HasReplicationType() bool { + return obj.obj.ReplicationType != nil } -func (obj *patternFlowIcmpv6EchoIdentifier) SetChoice(value PatternFlowIcmpv6EchoIdentifierChoiceEnum) PatternFlowIcmpv6EchoIdentifier { - intValue, ok := otg.PatternFlowIcmpv6EchoIdentifier_Choice_Enum_value[string(value)] +func (obj *bgpV6EviVxlan) SetReplicationType(value BgpV6EviVxlanReplicationTypeEnum) BgpV6EviVxlan { + intValue, ok := otg.BgpV6EviVxlan_ReplicationType_Enum_value[string(value)] if !ok { obj.validationErrors = append(obj.validationErrors, fmt.Sprintf( - "%s is not a valid choice on PatternFlowIcmpv6EchoIdentifierChoiceEnum", string(value))) + "%s is not a valid choice on BgpV6EviVxlanReplicationTypeEnum", string(value))) return obj } - enumValue := otg.PatternFlowIcmpv6EchoIdentifier_Choice_Enum(intValue) - obj.obj.Choice = &enumValue - obj.obj.Decrement = nil - obj.decrementHolder = nil - obj.obj.Increment = nil - obj.incrementHolder = nil - obj.obj.Values = nil - obj.obj.Value = nil + enumValue := otg.BgpV6EviVxlan_ReplicationType_Enum(intValue) + obj.obj.ReplicationType = &enumValue - if value == PatternFlowIcmpv6EchoIdentifierChoice.VALUE { - defaultValue := uint32(0) - obj.obj.Value = &defaultValue - } + return obj +} - if value == PatternFlowIcmpv6EchoIdentifierChoice.VALUES { - defaultValue := []uint32{0} - obj.obj.Values = defaultValue - } +// Downstream assigned VNI to be carried as Part of P-Multicast Service Interface Tunnel attribute (PMSI Tunnel Attribute) in Type 3 Inclusive Multicast Ethernet Tag Route. +// PmsiLabel returns a uint32 +func (obj *bgpV6EviVxlan) PmsiLabel() uint32 { - if value == PatternFlowIcmpv6EchoIdentifierChoice.INCREMENT { - obj.obj.Increment = NewPatternFlowIcmpv6EchoIdentifierCounter().Msg() - } + return *obj.obj.PmsiLabel - if value == PatternFlowIcmpv6EchoIdentifierChoice.DECREMENT { - obj.obj.Decrement = NewPatternFlowIcmpv6EchoIdentifierCounter().Msg() +} + +// Downstream assigned VNI to be carried as Part of P-Multicast Service Interface Tunnel attribute (PMSI Tunnel Attribute) in Type 3 Inclusive Multicast Ethernet Tag Route. +// PmsiLabel returns a uint32 +func (obj *bgpV6EviVxlan) HasPmsiLabel() bool { + return obj.obj.PmsiLabel != nil +} + +// Downstream assigned VNI to be carried as Part of P-Multicast Service Interface Tunnel attribute (PMSI Tunnel Attribute) in Type 3 Inclusive Multicast Ethernet Tag Route. +// SetPmsiLabel sets the uint32 value in the BgpV6EviVxlan object +func (obj *bgpV6EviVxlan) SetPmsiLabel(value uint32) BgpV6EviVxlan { + + obj.obj.PmsiLabel = &value + return obj +} + +// The Auto-discovery Route label (AD label) value, which gets advertised in the Ethernet Auto-discovery Route per +// AdLabel returns a uint32 +func (obj *bgpV6EviVxlan) AdLabel() uint32 { + + return *obj.obj.AdLabel + +} + +// The Auto-discovery Route label (AD label) value, which gets advertised in the Ethernet Auto-discovery Route per +// AdLabel returns a uint32 +func (obj *bgpV6EviVxlan) HasAdLabel() bool { + return obj.obj.AdLabel != nil +} + +// The Auto-discovery Route label (AD label) value, which gets advertised in the Ethernet Auto-discovery Route per +// SetAdLabel sets the uint32 value in the BgpV6EviVxlan object +func (obj *bgpV6EviVxlan) SetAdLabel(value uint32) BgpV6EviVxlan { + + obj.obj.AdLabel = &value + return obj +} + +// Colon separated Extended Community value of 6 Bytes - "AS number: Value" identifying an EVI. Example - for the as_2octet "60005:100". +// RouteDistinguisher returns a BgpRouteDistinguisher +func (obj *bgpV6EviVxlan) RouteDistinguisher() BgpRouteDistinguisher { + if obj.obj.RouteDistinguisher == nil { + obj.obj.RouteDistinguisher = NewBgpRouteDistinguisher().Msg() + } + if obj.routeDistinguisherHolder == nil { + obj.routeDistinguisherHolder = &bgpRouteDistinguisher{obj: obj.obj.RouteDistinguisher} } + return obj.routeDistinguisherHolder +} + +// Colon separated Extended Community value of 6 Bytes - "AS number: Value" identifying an EVI. Example - for the as_2octet "60005:100". +// RouteDistinguisher returns a BgpRouteDistinguisher +func (obj *bgpV6EviVxlan) HasRouteDistinguisher() bool { + return obj.obj.RouteDistinguisher != nil +} + +// Colon separated Extended Community value of 6 Bytes - "AS number: Value" identifying an EVI. Example - for the as_2octet "60005:100". +// SetRouteDistinguisher sets the BgpRouteDistinguisher value in the BgpV6EviVxlan object +func (obj *bgpV6EviVxlan) SetRouteDistinguisher(value BgpRouteDistinguisher) BgpV6EviVxlan { + + obj.routeDistinguisherHolder = nil + obj.obj.RouteDistinguisher = value.Msg() return obj } -// description is TBD -// Value returns a uint32 -func (obj *patternFlowIcmpv6EchoIdentifier) Value() uint32 { +// List of Layer 2 Virtual Network Identifier (L2VNI) export targets associated with this EVI. +// RouteTargetExport returns a []BgpRouteTarget +func (obj *bgpV6EviVxlan) RouteTargetExport() BgpV6EviVxlanBgpRouteTargetIter { + if len(obj.obj.RouteTargetExport) == 0 { + obj.obj.RouteTargetExport = []*otg.BgpRouteTarget{} + } + if obj.routeTargetExportHolder == nil { + obj.routeTargetExportHolder = newBgpV6EviVxlanBgpRouteTargetIter(&obj.obj.RouteTargetExport).setMsg(obj) + } + return obj.routeTargetExportHolder +} - if obj.obj.Value == nil { - obj.SetChoice(PatternFlowIcmpv6EchoIdentifierChoice.VALUE) +type bgpV6EviVxlanBgpRouteTargetIter struct { + obj *bgpV6EviVxlan + bgpRouteTargetSlice []BgpRouteTarget + fieldPtr *[]*otg.BgpRouteTarget +} + +func newBgpV6EviVxlanBgpRouteTargetIter(ptr *[]*otg.BgpRouteTarget) BgpV6EviVxlanBgpRouteTargetIter { + return &bgpV6EviVxlanBgpRouteTargetIter{fieldPtr: ptr} +} + +type BgpV6EviVxlanBgpRouteTargetIter interface { + setMsg(*bgpV6EviVxlan) BgpV6EviVxlanBgpRouteTargetIter + Items() []BgpRouteTarget + Add() BgpRouteTarget + Append(items ...BgpRouteTarget) BgpV6EviVxlanBgpRouteTargetIter + Set(index int, newObj BgpRouteTarget) BgpV6EviVxlanBgpRouteTargetIter + Clear() BgpV6EviVxlanBgpRouteTargetIter + clearHolderSlice() BgpV6EviVxlanBgpRouteTargetIter + appendHolderSlice(item BgpRouteTarget) BgpV6EviVxlanBgpRouteTargetIter +} + +func (obj *bgpV6EviVxlanBgpRouteTargetIter) setMsg(msg *bgpV6EviVxlan) BgpV6EviVxlanBgpRouteTargetIter { + obj.clearHolderSlice() + for _, val := range *obj.fieldPtr { + obj.appendHolderSlice(&bgpRouteTarget{obj: val}) } + obj.obj = msg + return obj +} - return *obj.obj.Value +func (obj *bgpV6EviVxlanBgpRouteTargetIter) Items() []BgpRouteTarget { + return obj.bgpRouteTargetSlice +} +func (obj *bgpV6EviVxlanBgpRouteTargetIter) Add() BgpRouteTarget { + newObj := &otg.BgpRouteTarget{} + *obj.fieldPtr = append(*obj.fieldPtr, newObj) + newLibObj := &bgpRouteTarget{obj: newObj} + newLibObj.setDefault() + obj.bgpRouteTargetSlice = append(obj.bgpRouteTargetSlice, newLibObj) + return newLibObj } -// description is TBD -// Value returns a uint32 -func (obj *patternFlowIcmpv6EchoIdentifier) HasValue() bool { - return obj.obj.Value != nil +func (obj *bgpV6EviVxlanBgpRouteTargetIter) Append(items ...BgpRouteTarget) BgpV6EviVxlanBgpRouteTargetIter { + for _, item := range items { + newObj := item.Msg() + *obj.fieldPtr = append(*obj.fieldPtr, newObj) + obj.bgpRouteTargetSlice = append(obj.bgpRouteTargetSlice, item) + } + return obj } -// description is TBD -// SetValue sets the uint32 value in the PatternFlowIcmpv6EchoIdentifier object -func (obj *patternFlowIcmpv6EchoIdentifier) SetValue(value uint32) PatternFlowIcmpv6EchoIdentifier { - obj.SetChoice(PatternFlowIcmpv6EchoIdentifierChoice.VALUE) - obj.obj.Value = &value +func (obj *bgpV6EviVxlanBgpRouteTargetIter) Set(index int, newObj BgpRouteTarget) BgpV6EviVxlanBgpRouteTargetIter { + (*obj.fieldPtr)[index] = newObj.Msg() + obj.bgpRouteTargetSlice[index] = newObj + return obj +} +func (obj *bgpV6EviVxlanBgpRouteTargetIter) Clear() BgpV6EviVxlanBgpRouteTargetIter { + if len(*obj.fieldPtr) > 0 { + *obj.fieldPtr = []*otg.BgpRouteTarget{} + obj.bgpRouteTargetSlice = []BgpRouteTarget{} + } + return obj +} +func (obj *bgpV6EviVxlanBgpRouteTargetIter) clearHolderSlice() BgpV6EviVxlanBgpRouteTargetIter { + if len(obj.bgpRouteTargetSlice) > 0 { + obj.bgpRouteTargetSlice = []BgpRouteTarget{} + } + return obj +} +func (obj *bgpV6EviVxlanBgpRouteTargetIter) appendHolderSlice(item BgpRouteTarget) BgpV6EviVxlanBgpRouteTargetIter { + obj.bgpRouteTargetSlice = append(obj.bgpRouteTargetSlice, item) return obj } -// description is TBD -// Values returns a []uint32 -func (obj *patternFlowIcmpv6EchoIdentifier) Values() []uint32 { - if obj.obj.Values == nil { - obj.SetValues([]uint32{0}) +// List of L2VNI import targets associated with this EVI. +// RouteTargetImport returns a []BgpRouteTarget +func (obj *bgpV6EviVxlan) RouteTargetImport() BgpV6EviVxlanBgpRouteTargetIter { + if len(obj.obj.RouteTargetImport) == 0 { + obj.obj.RouteTargetImport = []*otg.BgpRouteTarget{} } - return obj.obj.Values + if obj.routeTargetImportHolder == nil { + obj.routeTargetImportHolder = newBgpV6EviVxlanBgpRouteTargetIter(&obj.obj.RouteTargetImport).setMsg(obj) + } + return obj.routeTargetImportHolder } -// description is TBD -// SetValues sets the []uint32 value in the PatternFlowIcmpv6EchoIdentifier object -func (obj *patternFlowIcmpv6EchoIdentifier) SetValues(value []uint32) PatternFlowIcmpv6EchoIdentifier { - obj.SetChoice(PatternFlowIcmpv6EchoIdentifierChoice.VALUES) - if obj.obj.Values == nil { - obj.obj.Values = make([]uint32, 0) +// List of Layer 3 Virtual Network Identifier (L3VNI) Export Route Targets. +// L3RouteTargetExport returns a []BgpRouteTarget +func (obj *bgpV6EviVxlan) L3RouteTargetExport() BgpV6EviVxlanBgpRouteTargetIter { + if len(obj.obj.L3RouteTargetExport) == 0 { + obj.obj.L3RouteTargetExport = []*otg.BgpRouteTarget{} } - obj.obj.Values = value + if obj.l3RouteTargetExportHolder == nil { + obj.l3RouteTargetExportHolder = newBgpV6EviVxlanBgpRouteTargetIter(&obj.obj.L3RouteTargetExport).setMsg(obj) + } + return obj.l3RouteTargetExportHolder +} - return obj +// List of L3VNI Import Route Targets. +// L3RouteTargetImport returns a []BgpRouteTarget +func (obj *bgpV6EviVxlan) L3RouteTargetImport() BgpV6EviVxlanBgpRouteTargetIter { + if len(obj.obj.L3RouteTargetImport) == 0 { + obj.obj.L3RouteTargetImport = []*otg.BgpRouteTarget{} + } + if obj.l3RouteTargetImportHolder == nil { + obj.l3RouteTargetImportHolder = newBgpV6EviVxlanBgpRouteTargetIter(&obj.obj.L3RouteTargetImport).setMsg(obj) + } + return obj.l3RouteTargetImportHolder } // description is TBD -// Increment returns a PatternFlowIcmpv6EchoIdentifierCounter -func (obj *patternFlowIcmpv6EchoIdentifier) Increment() PatternFlowIcmpv6EchoIdentifierCounter { - if obj.obj.Increment == nil { - obj.SetChoice(PatternFlowIcmpv6EchoIdentifierChoice.INCREMENT) +// Advanced returns a BgpRouteAdvanced +func (obj *bgpV6EviVxlan) Advanced() BgpRouteAdvanced { + if obj.obj.Advanced == nil { + obj.obj.Advanced = NewBgpRouteAdvanced().Msg() } - if obj.incrementHolder == nil { - obj.incrementHolder = &patternFlowIcmpv6EchoIdentifierCounter{obj: obj.obj.Increment} + if obj.advancedHolder == nil { + obj.advancedHolder = &bgpRouteAdvanced{obj: obj.obj.Advanced} } - return obj.incrementHolder + return obj.advancedHolder } // description is TBD -// Increment returns a PatternFlowIcmpv6EchoIdentifierCounter -func (obj *patternFlowIcmpv6EchoIdentifier) HasIncrement() bool { - return obj.obj.Increment != nil +// Advanced returns a BgpRouteAdvanced +func (obj *bgpV6EviVxlan) HasAdvanced() bool { + return obj.obj.Advanced != nil } // description is TBD -// SetIncrement sets the PatternFlowIcmpv6EchoIdentifierCounter value in the PatternFlowIcmpv6EchoIdentifier object -func (obj *patternFlowIcmpv6EchoIdentifier) SetIncrement(value PatternFlowIcmpv6EchoIdentifierCounter) PatternFlowIcmpv6EchoIdentifier { - obj.SetChoice(PatternFlowIcmpv6EchoIdentifierChoice.INCREMENT) - obj.incrementHolder = nil - obj.obj.Increment = value.Msg() +// SetAdvanced sets the BgpRouteAdvanced value in the BgpV6EviVxlan object +func (obj *bgpV6EviVxlan) SetAdvanced(value BgpRouteAdvanced) BgpV6EviVxlan { + + obj.advancedHolder = nil + obj.obj.Advanced = value.Msg() return obj } -// description is TBD -// Decrement returns a PatternFlowIcmpv6EchoIdentifierCounter -func (obj *patternFlowIcmpv6EchoIdentifier) Decrement() PatternFlowIcmpv6EchoIdentifierCounter { - if obj.obj.Decrement == nil { - obj.SetChoice(PatternFlowIcmpv6EchoIdentifierChoice.DECREMENT) +// Optional community settings. +// Communities returns a []BgpCommunity +func (obj *bgpV6EviVxlan) Communities() BgpV6EviVxlanBgpCommunityIter { + if len(obj.obj.Communities) == 0 { + obj.obj.Communities = []*otg.BgpCommunity{} } - if obj.decrementHolder == nil { - obj.decrementHolder = &patternFlowIcmpv6EchoIdentifierCounter{obj: obj.obj.Decrement} + if obj.communitiesHolder == nil { + obj.communitiesHolder = newBgpV6EviVxlanBgpCommunityIter(&obj.obj.Communities).setMsg(obj) } - return obj.decrementHolder + return obj.communitiesHolder } -// description is TBD -// Decrement returns a PatternFlowIcmpv6EchoIdentifierCounter -func (obj *patternFlowIcmpv6EchoIdentifier) HasDecrement() bool { - return obj.obj.Decrement != nil +type bgpV6EviVxlanBgpCommunityIter struct { + obj *bgpV6EviVxlan + bgpCommunitySlice []BgpCommunity + fieldPtr *[]*otg.BgpCommunity } -// description is TBD -// SetDecrement sets the PatternFlowIcmpv6EchoIdentifierCounter value in the PatternFlowIcmpv6EchoIdentifier object -func (obj *patternFlowIcmpv6EchoIdentifier) SetDecrement(value PatternFlowIcmpv6EchoIdentifierCounter) PatternFlowIcmpv6EchoIdentifier { - obj.SetChoice(PatternFlowIcmpv6EchoIdentifierChoice.DECREMENT) - obj.decrementHolder = nil - obj.obj.Decrement = value.Msg() +func newBgpV6EviVxlanBgpCommunityIter(ptr *[]*otg.BgpCommunity) BgpV6EviVxlanBgpCommunityIter { + return &bgpV6EviVxlanBgpCommunityIter{fieldPtr: ptr} +} + +type BgpV6EviVxlanBgpCommunityIter interface { + setMsg(*bgpV6EviVxlan) BgpV6EviVxlanBgpCommunityIter + Items() []BgpCommunity + Add() BgpCommunity + Append(items ...BgpCommunity) BgpV6EviVxlanBgpCommunityIter + Set(index int, newObj BgpCommunity) BgpV6EviVxlanBgpCommunityIter + Clear() BgpV6EviVxlanBgpCommunityIter + clearHolderSlice() BgpV6EviVxlanBgpCommunityIter + appendHolderSlice(item BgpCommunity) BgpV6EviVxlanBgpCommunityIter +} +func (obj *bgpV6EviVxlanBgpCommunityIter) setMsg(msg *bgpV6EviVxlan) BgpV6EviVxlanBgpCommunityIter { + obj.clearHolderSlice() + for _, val := range *obj.fieldPtr { + obj.appendHolderSlice(&bgpCommunity{obj: val}) + } + obj.obj = msg return obj } -// One or more metric tags can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. -// MetricTags returns a []PatternFlowIcmpv6EchoIdentifierMetricTag -func (obj *patternFlowIcmpv6EchoIdentifier) MetricTags() PatternFlowIcmpv6EchoIdentifierPatternFlowIcmpv6EchoIdentifierMetricTagIter { - if len(obj.obj.MetricTags) == 0 { - obj.obj.MetricTags = []*otg.PatternFlowIcmpv6EchoIdentifierMetricTag{} +func (obj *bgpV6EviVxlanBgpCommunityIter) Items() []BgpCommunity { + return obj.bgpCommunitySlice +} + +func (obj *bgpV6EviVxlanBgpCommunityIter) Add() BgpCommunity { + newObj := &otg.BgpCommunity{} + *obj.fieldPtr = append(*obj.fieldPtr, newObj) + newLibObj := &bgpCommunity{obj: newObj} + newLibObj.setDefault() + obj.bgpCommunitySlice = append(obj.bgpCommunitySlice, newLibObj) + return newLibObj +} + +func (obj *bgpV6EviVxlanBgpCommunityIter) Append(items ...BgpCommunity) BgpV6EviVxlanBgpCommunityIter { + for _, item := range items { + newObj := item.Msg() + *obj.fieldPtr = append(*obj.fieldPtr, newObj) + obj.bgpCommunitySlice = append(obj.bgpCommunitySlice, item) } - if obj.metricTagsHolder == nil { - obj.metricTagsHolder = newPatternFlowIcmpv6EchoIdentifierPatternFlowIcmpv6EchoIdentifierMetricTagIter(&obj.obj.MetricTags).setMsg(obj) + return obj +} + +func (obj *bgpV6EviVxlanBgpCommunityIter) Set(index int, newObj BgpCommunity) BgpV6EviVxlanBgpCommunityIter { + (*obj.fieldPtr)[index] = newObj.Msg() + obj.bgpCommunitySlice[index] = newObj + return obj +} +func (obj *bgpV6EviVxlanBgpCommunityIter) Clear() BgpV6EviVxlanBgpCommunityIter { + if len(*obj.fieldPtr) > 0 { + *obj.fieldPtr = []*otg.BgpCommunity{} + obj.bgpCommunitySlice = []BgpCommunity{} } - return obj.metricTagsHolder + return obj +} +func (obj *bgpV6EviVxlanBgpCommunityIter) clearHolderSlice() BgpV6EviVxlanBgpCommunityIter { + if len(obj.bgpCommunitySlice) > 0 { + obj.bgpCommunitySlice = []BgpCommunity{} + } + return obj +} +func (obj *bgpV6EviVxlanBgpCommunityIter) appendHolderSlice(item BgpCommunity) BgpV6EviVxlanBgpCommunityIter { + obj.bgpCommunitySlice = append(obj.bgpCommunitySlice, item) + return obj } -type patternFlowIcmpv6EchoIdentifierPatternFlowIcmpv6EchoIdentifierMetricTagIter struct { - obj *patternFlowIcmpv6EchoIdentifier - patternFlowIcmpv6EchoIdentifierMetricTagSlice []PatternFlowIcmpv6EchoIdentifierMetricTag - fieldPtr *[]*otg.PatternFlowIcmpv6EchoIdentifierMetricTag +// Optional Extended Community settings. The Extended Communities Attribute is a transitive optional BGP attribute, with the Type Code 16. Community and Extended Communities attributes are utilized to trigger routing decisions, such as acceptance, rejection, preference, or redistribution. An extended community is an 8-Bytes value. It is divided into two main parts. The first 2 Bytes of the community encode a type and sub-type fields and the last 6 Bytes carry a unique set of data in a format defined by the type and sub-type field. Extended communities provide a larger range for grouping or categorizing communities. When type is administrator_as_2octet or administrator_as_4octet, the valid sub types are route target and origin. The valid value for administrator_as_2octet and administrator_as_4octet type is either two byte AS followed by four byte local administrator id or four byte AS followed by two byte local administrator id. When type is administrator_ipv4_address the valid sub types are route target and origin. The valid value for administrator_ipv4_address is a four byte IPv4 address followed by a two byte local administrator id. When type is opaque, valid sub types are color and encapsulation. When sub type is color, first two bytes of the value field contain flags and last four bytes contains the value of the color. When sub type is encapsulation the first four bytes of value field are reserved and last two bytes carries the tunnel type from IANA's "ETHER TYPES" registry e.g IPv4 (protocol type = 0x0800), IPv6 (protocol type = 0x86dd), and MPLS (protocol type = 0x8847). When type is administrator_as_2octet_link_bandwidth the valid sub type is extended_bandwidth. The first two bytes of the value field contains the AS number and the last four bytes contains the bandwidth in IEEE floating point format. When type is evpn the valid subtype is mac_address. In the value field the low-order bit of the first byte(Flags) is defined as the "Sticky/static" flag and may be set to 1, indicating the MAC address is static and cannot move. The second byte is reserved and the last four bytes contain the sequence number which is used to ensure that PEs retain the correct MAC/IP Advertisement route when multiple updates occur for the same MAC address. +// ExtCommunities returns a []BgpExtCommunity +func (obj *bgpV6EviVxlan) ExtCommunities() BgpV6EviVxlanBgpExtCommunityIter { + if len(obj.obj.ExtCommunities) == 0 { + obj.obj.ExtCommunities = []*otg.BgpExtCommunity{} + } + if obj.extCommunitiesHolder == nil { + obj.extCommunitiesHolder = newBgpV6EviVxlanBgpExtCommunityIter(&obj.obj.ExtCommunities).setMsg(obj) + } + return obj.extCommunitiesHolder } -func newPatternFlowIcmpv6EchoIdentifierPatternFlowIcmpv6EchoIdentifierMetricTagIter(ptr *[]*otg.PatternFlowIcmpv6EchoIdentifierMetricTag) PatternFlowIcmpv6EchoIdentifierPatternFlowIcmpv6EchoIdentifierMetricTagIter { - return &patternFlowIcmpv6EchoIdentifierPatternFlowIcmpv6EchoIdentifierMetricTagIter{fieldPtr: ptr} +type bgpV6EviVxlanBgpExtCommunityIter struct { + obj *bgpV6EviVxlan + bgpExtCommunitySlice []BgpExtCommunity + fieldPtr *[]*otg.BgpExtCommunity } -type PatternFlowIcmpv6EchoIdentifierPatternFlowIcmpv6EchoIdentifierMetricTagIter interface { - setMsg(*patternFlowIcmpv6EchoIdentifier) PatternFlowIcmpv6EchoIdentifierPatternFlowIcmpv6EchoIdentifierMetricTagIter - Items() []PatternFlowIcmpv6EchoIdentifierMetricTag - Add() PatternFlowIcmpv6EchoIdentifierMetricTag - Append(items ...PatternFlowIcmpv6EchoIdentifierMetricTag) PatternFlowIcmpv6EchoIdentifierPatternFlowIcmpv6EchoIdentifierMetricTagIter - Set(index int, newObj PatternFlowIcmpv6EchoIdentifierMetricTag) PatternFlowIcmpv6EchoIdentifierPatternFlowIcmpv6EchoIdentifierMetricTagIter - Clear() PatternFlowIcmpv6EchoIdentifierPatternFlowIcmpv6EchoIdentifierMetricTagIter - clearHolderSlice() PatternFlowIcmpv6EchoIdentifierPatternFlowIcmpv6EchoIdentifierMetricTagIter - appendHolderSlice(item PatternFlowIcmpv6EchoIdentifierMetricTag) PatternFlowIcmpv6EchoIdentifierPatternFlowIcmpv6EchoIdentifierMetricTagIter +func newBgpV6EviVxlanBgpExtCommunityIter(ptr *[]*otg.BgpExtCommunity) BgpV6EviVxlanBgpExtCommunityIter { + return &bgpV6EviVxlanBgpExtCommunityIter{fieldPtr: ptr} } -func (obj *patternFlowIcmpv6EchoIdentifierPatternFlowIcmpv6EchoIdentifierMetricTagIter) setMsg(msg *patternFlowIcmpv6EchoIdentifier) PatternFlowIcmpv6EchoIdentifierPatternFlowIcmpv6EchoIdentifierMetricTagIter { +type BgpV6EviVxlanBgpExtCommunityIter interface { + setMsg(*bgpV6EviVxlan) BgpV6EviVxlanBgpExtCommunityIter + Items() []BgpExtCommunity + Add() BgpExtCommunity + Append(items ...BgpExtCommunity) BgpV6EviVxlanBgpExtCommunityIter + Set(index int, newObj BgpExtCommunity) BgpV6EviVxlanBgpExtCommunityIter + Clear() BgpV6EviVxlanBgpExtCommunityIter + clearHolderSlice() BgpV6EviVxlanBgpExtCommunityIter + appendHolderSlice(item BgpExtCommunity) BgpV6EviVxlanBgpExtCommunityIter +} + +func (obj *bgpV6EviVxlanBgpExtCommunityIter) setMsg(msg *bgpV6EviVxlan) BgpV6EviVxlanBgpExtCommunityIter { obj.clearHolderSlice() for _, val := range *obj.fieldPtr { - obj.appendHolderSlice(&patternFlowIcmpv6EchoIdentifierMetricTag{obj: val}) + obj.appendHolderSlice(&bgpExtCommunity{obj: val}) } obj.obj = msg return obj } -func (obj *patternFlowIcmpv6EchoIdentifierPatternFlowIcmpv6EchoIdentifierMetricTagIter) Items() []PatternFlowIcmpv6EchoIdentifierMetricTag { - return obj.patternFlowIcmpv6EchoIdentifierMetricTagSlice +func (obj *bgpV6EviVxlanBgpExtCommunityIter) Items() []BgpExtCommunity { + return obj.bgpExtCommunitySlice } -func (obj *patternFlowIcmpv6EchoIdentifierPatternFlowIcmpv6EchoIdentifierMetricTagIter) Add() PatternFlowIcmpv6EchoIdentifierMetricTag { - newObj := &otg.PatternFlowIcmpv6EchoIdentifierMetricTag{} +func (obj *bgpV6EviVxlanBgpExtCommunityIter) Add() BgpExtCommunity { + newObj := &otg.BgpExtCommunity{} *obj.fieldPtr = append(*obj.fieldPtr, newObj) - newLibObj := &patternFlowIcmpv6EchoIdentifierMetricTag{obj: newObj} + newLibObj := &bgpExtCommunity{obj: newObj} newLibObj.setDefault() - obj.patternFlowIcmpv6EchoIdentifierMetricTagSlice = append(obj.patternFlowIcmpv6EchoIdentifierMetricTagSlice, newLibObj) + obj.bgpExtCommunitySlice = append(obj.bgpExtCommunitySlice, newLibObj) return newLibObj } -func (obj *patternFlowIcmpv6EchoIdentifierPatternFlowIcmpv6EchoIdentifierMetricTagIter) Append(items ...PatternFlowIcmpv6EchoIdentifierMetricTag) PatternFlowIcmpv6EchoIdentifierPatternFlowIcmpv6EchoIdentifierMetricTagIter { +func (obj *bgpV6EviVxlanBgpExtCommunityIter) Append(items ...BgpExtCommunity) BgpV6EviVxlanBgpExtCommunityIter { for _, item := range items { newObj := item.Msg() *obj.fieldPtr = append(*obj.fieldPtr, newObj) - obj.patternFlowIcmpv6EchoIdentifierMetricTagSlice = append(obj.patternFlowIcmpv6EchoIdentifierMetricTagSlice, item) + obj.bgpExtCommunitySlice = append(obj.bgpExtCommunitySlice, item) } return obj } -func (obj *patternFlowIcmpv6EchoIdentifierPatternFlowIcmpv6EchoIdentifierMetricTagIter) Set(index int, newObj PatternFlowIcmpv6EchoIdentifierMetricTag) PatternFlowIcmpv6EchoIdentifierPatternFlowIcmpv6EchoIdentifierMetricTagIter { +func (obj *bgpV6EviVxlanBgpExtCommunityIter) Set(index int, newObj BgpExtCommunity) BgpV6EviVxlanBgpExtCommunityIter { (*obj.fieldPtr)[index] = newObj.Msg() - obj.patternFlowIcmpv6EchoIdentifierMetricTagSlice[index] = newObj + obj.bgpExtCommunitySlice[index] = newObj return obj } -func (obj *patternFlowIcmpv6EchoIdentifierPatternFlowIcmpv6EchoIdentifierMetricTagIter) Clear() PatternFlowIcmpv6EchoIdentifierPatternFlowIcmpv6EchoIdentifierMetricTagIter { +func (obj *bgpV6EviVxlanBgpExtCommunityIter) Clear() BgpV6EviVxlanBgpExtCommunityIter { if len(*obj.fieldPtr) > 0 { - *obj.fieldPtr = []*otg.PatternFlowIcmpv6EchoIdentifierMetricTag{} - obj.patternFlowIcmpv6EchoIdentifierMetricTagSlice = []PatternFlowIcmpv6EchoIdentifierMetricTag{} + *obj.fieldPtr = []*otg.BgpExtCommunity{} + obj.bgpExtCommunitySlice = []BgpExtCommunity{} } return obj } -func (obj *patternFlowIcmpv6EchoIdentifierPatternFlowIcmpv6EchoIdentifierMetricTagIter) clearHolderSlice() PatternFlowIcmpv6EchoIdentifierPatternFlowIcmpv6EchoIdentifierMetricTagIter { - if len(obj.patternFlowIcmpv6EchoIdentifierMetricTagSlice) > 0 { - obj.patternFlowIcmpv6EchoIdentifierMetricTagSlice = []PatternFlowIcmpv6EchoIdentifierMetricTag{} +func (obj *bgpV6EviVxlanBgpExtCommunityIter) clearHolderSlice() BgpV6EviVxlanBgpExtCommunityIter { + if len(obj.bgpExtCommunitySlice) > 0 { + obj.bgpExtCommunitySlice = []BgpExtCommunity{} } return obj } -func (obj *patternFlowIcmpv6EchoIdentifierPatternFlowIcmpv6EchoIdentifierMetricTagIter) appendHolderSlice(item PatternFlowIcmpv6EchoIdentifierMetricTag) PatternFlowIcmpv6EchoIdentifierPatternFlowIcmpv6EchoIdentifierMetricTagIter { - obj.patternFlowIcmpv6EchoIdentifierMetricTagSlice = append(obj.patternFlowIcmpv6EchoIdentifierMetricTagSlice, item) +func (obj *bgpV6EviVxlanBgpExtCommunityIter) appendHolderSlice(item BgpExtCommunity) BgpV6EviVxlanBgpExtCommunityIter { + obj.bgpExtCommunitySlice = append(obj.bgpExtCommunitySlice, item) return obj } -func (obj *patternFlowIcmpv6EchoIdentifier) validateObj(vObj *validation, set_default bool) { +// Optional AS PATH settings. +// AsPath returns a BgpAsPath +func (obj *bgpV6EviVxlan) AsPath() BgpAsPath { + if obj.obj.AsPath == nil { + obj.obj.AsPath = NewBgpAsPath().Msg() + } + if obj.asPathHolder == nil { + obj.asPathHolder = &bgpAsPath{obj: obj.obj.AsPath} + } + return obj.asPathHolder +} + +// Optional AS PATH settings. +// AsPath returns a BgpAsPath +func (obj *bgpV6EviVxlan) HasAsPath() bool { + return obj.obj.AsPath != nil +} + +// Optional AS PATH settings. +// SetAsPath sets the BgpAsPath value in the BgpV6EviVxlan object +func (obj *bgpV6EviVxlan) SetAsPath(value BgpAsPath) BgpV6EviVxlan { + + obj.asPathHolder = nil + obj.obj.AsPath = value.Msg() + + return obj +} + +func (obj *bgpV6EviVxlan) validateObj(vObj *validation, set_default bool) { if set_default { obj.setDefault() } - if obj.obj.Value != nil { + if len(obj.obj.BroadcastDomains) != 0 { + + if set_default { + obj.BroadcastDomains().clearHolderSlice() + for _, item := range obj.obj.BroadcastDomains { + obj.BroadcastDomains().appendHolderSlice(&bgpV6EviVxlanBroadcastDomain{obj: item}) + } + } + for _, item := range obj.BroadcastDomains().Items() { + item.validateObj(vObj, set_default) + } + + } + + if obj.obj.PmsiLabel != nil { + + if *obj.obj.PmsiLabel > 16777215 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("0 <= BgpV6EviVxlan.PmsiLabel <= 16777215 but Got %d", *obj.obj.PmsiLabel)) + } + + } + + if obj.obj.AdLabel != nil { + + if *obj.obj.AdLabel > 16777215 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("0 <= BgpV6EviVxlan.AdLabel <= 16777215 but Got %d", *obj.obj.AdLabel)) + } + + } + + if obj.obj.RouteDistinguisher != nil { + + obj.RouteDistinguisher().validateObj(vObj, set_default) + } + + if len(obj.obj.RouteTargetExport) != 0 { + + if set_default { + obj.RouteTargetExport().clearHolderSlice() + for _, item := range obj.obj.RouteTargetExport { + obj.RouteTargetExport().appendHolderSlice(&bgpRouteTarget{obj: item}) + } + } + for _, item := range obj.RouteTargetExport().Items() { + item.validateObj(vObj, set_default) + } + + } + + if len(obj.obj.RouteTargetImport) != 0 { + + if set_default { + obj.RouteTargetImport().clearHolderSlice() + for _, item := range obj.obj.RouteTargetImport { + obj.RouteTargetImport().appendHolderSlice(&bgpRouteTarget{obj: item}) + } + } + for _, item := range obj.RouteTargetImport().Items() { + item.validateObj(vObj, set_default) + } + + } + + if len(obj.obj.L3RouteTargetExport) != 0 { - if *obj.obj.Value > 65535 { - vObj.validationErrors = append( - vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowIcmpv6EchoIdentifier.Value <= 65535 but Got %d", *obj.obj.Value)) + if set_default { + obj.L3RouteTargetExport().clearHolderSlice() + for _, item := range obj.obj.L3RouteTargetExport { + obj.L3RouteTargetExport().appendHolderSlice(&bgpRouteTarget{obj: item}) + } + } + for _, item := range obj.L3RouteTargetExport().Items() { + item.validateObj(vObj, set_default) } } - if obj.obj.Values != nil { + if len(obj.obj.L3RouteTargetImport) != 0 { - for _, item := range obj.obj.Values { - if item > 65535 { - vObj.validationErrors = append( - vObj.validationErrors, - fmt.Sprintf("min(uint32) <= PatternFlowIcmpv6EchoIdentifier.Values <= 65535 but Got %d", item)) + if set_default { + obj.L3RouteTargetImport().clearHolderSlice() + for _, item := range obj.obj.L3RouteTargetImport { + obj.L3RouteTargetImport().appendHolderSlice(&bgpRouteTarget{obj: item}) } - + } + for _, item := range obj.L3RouteTargetImport().Items() { + item.validateObj(vObj, set_default) } } - if obj.obj.Increment != nil { + if obj.obj.Advanced != nil { - obj.Increment().validateObj(vObj, set_default) + obj.Advanced().validateObj(vObj, set_default) } - if obj.obj.Decrement != nil { + if len(obj.obj.Communities) != 0 { + + if set_default { + obj.Communities().clearHolderSlice() + for _, item := range obj.obj.Communities { + obj.Communities().appendHolderSlice(&bgpCommunity{obj: item}) + } + } + for _, item := range obj.Communities().Items() { + item.validateObj(vObj, set_default) + } - obj.Decrement().validateObj(vObj, set_default) } - if len(obj.obj.MetricTags) != 0 { + if len(obj.obj.ExtCommunities) != 0 { if set_default { - obj.MetricTags().clearHolderSlice() - for _, item := range obj.obj.MetricTags { - obj.MetricTags().appendHolderSlice(&patternFlowIcmpv6EchoIdentifierMetricTag{obj: item}) + obj.ExtCommunities().clearHolderSlice() + for _, item := range obj.obj.ExtCommunities { + obj.ExtCommunities().appendHolderSlice(&bgpExtCommunity{obj: item}) } } - for _, item := range obj.MetricTags().Items() { + for _, item := range obj.ExtCommunities().Items() { item.validateObj(vObj, set_default) } } + if obj.obj.AsPath != nil { + + obj.AsPath().validateObj(vObj, set_default) + } + } -func (obj *patternFlowIcmpv6EchoIdentifier) setDefault() { - if obj.obj.Choice == nil { - obj.SetChoice(PatternFlowIcmpv6EchoIdentifierChoice.VALUE) +func (obj *bgpV6EviVxlan) setDefault() { + if obj.obj.ReplicationType == nil { + obj.SetReplicationType(BgpV6EviVxlanReplicationType.INGRESS_REPLICATION) } + if obj.obj.PmsiLabel == nil { + obj.SetPmsiLabel(16) + } + if obj.obj.AdLabel == nil { + obj.SetAdLabel(0) + } } -// ***** PatternFlowIcmpv6EchoSequenceNumber ***** -type patternFlowIcmpv6EchoSequenceNumber struct { +// ***** VxlanTunnelDestinationIPModeUnicastArpSuppressionCache ***** +type vxlanTunnelDestinationIPModeUnicastArpSuppressionCache struct { validation - obj *otg.PatternFlowIcmpv6EchoSequenceNumber - incrementHolder PatternFlowIcmpv6EchoSequenceNumberCounter - decrementHolder PatternFlowIcmpv6EchoSequenceNumberCounter - metricTagsHolder PatternFlowIcmpv6EchoSequenceNumberPatternFlowIcmpv6EchoSequenceNumberMetricTagIter + obj *otg.VxlanTunnelDestinationIPModeUnicastArpSuppressionCache } -func NewPatternFlowIcmpv6EchoSequenceNumber() PatternFlowIcmpv6EchoSequenceNumber { - obj := patternFlowIcmpv6EchoSequenceNumber{obj: &otg.PatternFlowIcmpv6EchoSequenceNumber{}} +func NewVxlanTunnelDestinationIPModeUnicastArpSuppressionCache() VxlanTunnelDestinationIPModeUnicastArpSuppressionCache { + obj := vxlanTunnelDestinationIPModeUnicastArpSuppressionCache{obj: &otg.VxlanTunnelDestinationIPModeUnicastArpSuppressionCache{}} obj.setDefault() return &obj } -func (obj *patternFlowIcmpv6EchoSequenceNumber) Msg() *otg.PatternFlowIcmpv6EchoSequenceNumber { +func (obj *vxlanTunnelDestinationIPModeUnicastArpSuppressionCache) Msg() *otg.VxlanTunnelDestinationIPModeUnicastArpSuppressionCache { return obj.obj } -func (obj *patternFlowIcmpv6EchoSequenceNumber) SetMsg(msg *otg.PatternFlowIcmpv6EchoSequenceNumber) PatternFlowIcmpv6EchoSequenceNumber { - obj.setNil() +func (obj *vxlanTunnelDestinationIPModeUnicastArpSuppressionCache) SetMsg(msg *otg.VxlanTunnelDestinationIPModeUnicastArpSuppressionCache) VxlanTunnelDestinationIPModeUnicastArpSuppressionCache { + proto.Merge(obj.obj, msg) return obj } -func (obj *patternFlowIcmpv6EchoSequenceNumber) ToProto() (*otg.PatternFlowIcmpv6EchoSequenceNumber, error) { +func (obj *vxlanTunnelDestinationIPModeUnicastArpSuppressionCache) ToProto() (*otg.VxlanTunnelDestinationIPModeUnicastArpSuppressionCache, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -263564,7 +309639,7 @@ func (obj *patternFlowIcmpv6EchoSequenceNumber) ToProto() (*otg.PatternFlowIcmpv return obj.Msg(), nil } -func (obj *patternFlowIcmpv6EchoSequenceNumber) FromProto(msg *otg.PatternFlowIcmpv6EchoSequenceNumber) (PatternFlowIcmpv6EchoSequenceNumber, error) { +func (obj *vxlanTunnelDestinationIPModeUnicastArpSuppressionCache) FromProto(msg *otg.VxlanTunnelDestinationIPModeUnicastArpSuppressionCache) (VxlanTunnelDestinationIPModeUnicastArpSuppressionCache, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -263573,7 +309648,7 @@ func (obj *patternFlowIcmpv6EchoSequenceNumber) FromProto(msg *otg.PatternFlowIc return newObj, nil } -func (obj *patternFlowIcmpv6EchoSequenceNumber) ToPbText() (string, error) { +func (obj *vxlanTunnelDestinationIPModeUnicastArpSuppressionCache) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -263585,12 +309660,12 @@ func (obj *patternFlowIcmpv6EchoSequenceNumber) ToPbText() (string, error) { return string(protoMarshal), nil } -func (obj *patternFlowIcmpv6EchoSequenceNumber) FromPbText(value string) error { +func (obj *vxlanTunnelDestinationIPModeUnicastArpSuppressionCache) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj } - obj.setNil() + vErr := obj.validateToAndFrom() if vErr != nil { return vErr @@ -263598,7 +309673,7 @@ func (obj *patternFlowIcmpv6EchoSequenceNumber) FromPbText(value string) error { return retObj } -func (obj *patternFlowIcmpv6EchoSequenceNumber) ToYaml() (string, error) { +func (obj *vxlanTunnelDestinationIPModeUnicastArpSuppressionCache) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -263619,7 +309694,7 @@ func (obj *patternFlowIcmpv6EchoSequenceNumber) ToYaml() (string, error) { return string(data), nil } -func (obj *patternFlowIcmpv6EchoSequenceNumber) FromYaml(value string) error { +func (obj *vxlanTunnelDestinationIPModeUnicastArpSuppressionCache) FromYaml(value string) error { if value == "" { value = "{}" } @@ -263636,7 +309711,7 @@ func (obj *patternFlowIcmpv6EchoSequenceNumber) FromYaml(value string) error { return fmt.Errorf("unmarshal error %s", strings.Replace( uError.Error(), "\u00a0", " ", -1)[7:]) } - obj.setNil() + vErr := obj.validateToAndFrom() if vErr != nil { return vErr @@ -263644,7 +309719,7 @@ func (obj *patternFlowIcmpv6EchoSequenceNumber) FromYaml(value string) error { return nil } -func (obj *patternFlowIcmpv6EchoSequenceNumber) ToJson() (string, error) { +func (obj *vxlanTunnelDestinationIPModeUnicastArpSuppressionCache) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -263662,7 +309737,7 @@ func (obj *patternFlowIcmpv6EchoSequenceNumber) ToJson() (string, error) { return string(data), nil } -func (obj *patternFlowIcmpv6EchoSequenceNumber) FromJson(value string) error { +func (obj *vxlanTunnelDestinationIPModeUnicastArpSuppressionCache) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -263675,7 +309750,7 @@ func (obj *patternFlowIcmpv6EchoSequenceNumber) FromJson(value string) error { return fmt.Errorf("unmarshal error %s", strings.Replace( uError.Error(), "\u00a0", " ", -1)[7:]) } - obj.setNil() + err := obj.validateToAndFrom() if err != nil { return err @@ -263683,19 +309758,19 @@ func (obj *patternFlowIcmpv6EchoSequenceNumber) FromJson(value string) error { return nil } -func (obj *patternFlowIcmpv6EchoSequenceNumber) validateToAndFrom() error { +func (obj *vxlanTunnelDestinationIPModeUnicastArpSuppressionCache) validateToAndFrom() error { // emptyVars() obj.validateObj(&obj.validation, true) return obj.validationResult() } -func (obj *patternFlowIcmpv6EchoSequenceNumber) Validate() error { +func (obj *vxlanTunnelDestinationIPModeUnicastArpSuppressionCache) Validate() error { // emptyVars() obj.validateObj(&obj.validation, false) return obj.validationResult() } -func (obj *patternFlowIcmpv6EchoSequenceNumber) String() string { +func (obj *vxlanTunnelDestinationIPModeUnicastArpSuppressionCache) String() string { str, err := obj.ToYaml() if err != nil { return err.Error() @@ -263703,12 +309778,12 @@ func (obj *patternFlowIcmpv6EchoSequenceNumber) String() string { return str } -func (obj *patternFlowIcmpv6EchoSequenceNumber) Clone() (PatternFlowIcmpv6EchoSequenceNumber, error) { +func (obj *vxlanTunnelDestinationIPModeUnicastArpSuppressionCache) Clone() (VxlanTunnelDestinationIPModeUnicastArpSuppressionCache, error) { vErr := obj.Validate() if vErr != nil { return nil, vErr } - newObj := NewPatternFlowIcmpv6EchoSequenceNumber() + newObj := NewVxlanTunnelDestinationIPModeUnicastArpSuppressionCache() data, err := proto.Marshal(obj.Msg()) if err != nil { return nil, err @@ -263720,423 +309795,506 @@ func (obj *patternFlowIcmpv6EchoSequenceNumber) Clone() (PatternFlowIcmpv6EchoSe return newObj, nil } -func (obj *patternFlowIcmpv6EchoSequenceNumber) setNil() { - obj.incrementHolder = nil - obj.decrementHolder = nil - obj.metricTagsHolder = nil - obj.validationErrors = nil - obj.warnings = nil - obj.constraints = make(map[string]map[string]Constraints) -} - -// PatternFlowIcmpv6EchoSequenceNumber is iCMPv6 echo sequence number -type PatternFlowIcmpv6EchoSequenceNumber interface { +// VxlanTunnelDestinationIPModeUnicastArpSuppressionCache is each VTEP maintains an ARP suppression cache table for known IP hosts and their associated MAC addresses in the VNI segment. When an end host in the VNI sends an ARP request for another end-host IP address, its local VTEP intercepts the ARP request and checks for the ARP-resolved IP address in its ARP suppression cache table. If it finds a match, the local VTEP sends an ARP response on behalf of the remote end host. +type VxlanTunnelDestinationIPModeUnicastArpSuppressionCache interface { Validation - // Msg marshals PatternFlowIcmpv6EchoSequenceNumber to protobuf object *otg.PatternFlowIcmpv6EchoSequenceNumber + // Msg marshals VxlanTunnelDestinationIPModeUnicastArpSuppressionCache to protobuf object *otg.VxlanTunnelDestinationIPModeUnicastArpSuppressionCache // and doesn't set defaults - Msg() *otg.PatternFlowIcmpv6EchoSequenceNumber - // SetMsg unmarshals PatternFlowIcmpv6EchoSequenceNumber from protobuf object *otg.PatternFlowIcmpv6EchoSequenceNumber + Msg() *otg.VxlanTunnelDestinationIPModeUnicastArpSuppressionCache + // SetMsg unmarshals VxlanTunnelDestinationIPModeUnicastArpSuppressionCache from protobuf object *otg.VxlanTunnelDestinationIPModeUnicastArpSuppressionCache // and doesn't set defaults - SetMsg(*otg.PatternFlowIcmpv6EchoSequenceNumber) PatternFlowIcmpv6EchoSequenceNumber - // ToProto marshals PatternFlowIcmpv6EchoSequenceNumber to protobuf object *otg.PatternFlowIcmpv6EchoSequenceNumber - ToProto() (*otg.PatternFlowIcmpv6EchoSequenceNumber, error) - // ToPbText marshals PatternFlowIcmpv6EchoSequenceNumber to protobuf text + SetMsg(*otg.VxlanTunnelDestinationIPModeUnicastArpSuppressionCache) VxlanTunnelDestinationIPModeUnicastArpSuppressionCache + // ToProto marshals VxlanTunnelDestinationIPModeUnicastArpSuppressionCache to protobuf object *otg.VxlanTunnelDestinationIPModeUnicastArpSuppressionCache + ToProto() (*otg.VxlanTunnelDestinationIPModeUnicastArpSuppressionCache, error) + // ToPbText marshals VxlanTunnelDestinationIPModeUnicastArpSuppressionCache to protobuf text ToPbText() (string, error) - // ToYaml marshals PatternFlowIcmpv6EchoSequenceNumber to YAML text + // ToYaml marshals VxlanTunnelDestinationIPModeUnicastArpSuppressionCache to YAML text ToYaml() (string, error) - // ToJson marshals PatternFlowIcmpv6EchoSequenceNumber to JSON text + // ToJson marshals VxlanTunnelDestinationIPModeUnicastArpSuppressionCache to JSON text ToJson() (string, error) - // FromProto unmarshals PatternFlowIcmpv6EchoSequenceNumber from protobuf object *otg.PatternFlowIcmpv6EchoSequenceNumber - FromProto(msg *otg.PatternFlowIcmpv6EchoSequenceNumber) (PatternFlowIcmpv6EchoSequenceNumber, error) - // FromPbText unmarshals PatternFlowIcmpv6EchoSequenceNumber from protobuf text + // FromProto unmarshals VxlanTunnelDestinationIPModeUnicastArpSuppressionCache from protobuf object *otg.VxlanTunnelDestinationIPModeUnicastArpSuppressionCache + FromProto(msg *otg.VxlanTunnelDestinationIPModeUnicastArpSuppressionCache) (VxlanTunnelDestinationIPModeUnicastArpSuppressionCache, error) + // FromPbText unmarshals VxlanTunnelDestinationIPModeUnicastArpSuppressionCache from protobuf text FromPbText(value string) error - // FromYaml unmarshals PatternFlowIcmpv6EchoSequenceNumber from YAML text + // FromYaml unmarshals VxlanTunnelDestinationIPModeUnicastArpSuppressionCache from YAML text FromYaml(value string) error - // FromJson unmarshals PatternFlowIcmpv6EchoSequenceNumber from JSON text + // FromJson unmarshals VxlanTunnelDestinationIPModeUnicastArpSuppressionCache from JSON text FromJson(value string) error - // Validate validates PatternFlowIcmpv6EchoSequenceNumber + // Validate validates VxlanTunnelDestinationIPModeUnicastArpSuppressionCache Validate() error // A stringer function String() string // Clones the object - Clone() (PatternFlowIcmpv6EchoSequenceNumber, error) + Clone() (VxlanTunnelDestinationIPModeUnicastArpSuppressionCache, error) validateToAndFrom() error validateObj(vObj *validation, set_default bool) setDefault() - // Choice returns PatternFlowIcmpv6EchoSequenceNumberChoiceEnum, set in PatternFlowIcmpv6EchoSequenceNumber - Choice() PatternFlowIcmpv6EchoSequenceNumberChoiceEnum - // SetChoice assigns PatternFlowIcmpv6EchoSequenceNumberChoiceEnum provided by user to PatternFlowIcmpv6EchoSequenceNumber - SetChoice(value PatternFlowIcmpv6EchoSequenceNumberChoiceEnum) PatternFlowIcmpv6EchoSequenceNumber - // HasChoice checks if Choice has been set in PatternFlowIcmpv6EchoSequenceNumber - HasChoice() bool - // Value returns uint32, set in PatternFlowIcmpv6EchoSequenceNumber. - Value() uint32 - // SetValue assigns uint32 provided by user to PatternFlowIcmpv6EchoSequenceNumber - SetValue(value uint32) PatternFlowIcmpv6EchoSequenceNumber - // HasValue checks if Value has been set in PatternFlowIcmpv6EchoSequenceNumber - HasValue() bool - // Values returns []uint32, set in PatternFlowIcmpv6EchoSequenceNumber. - Values() []uint32 - // SetValues assigns []uint32 provided by user to PatternFlowIcmpv6EchoSequenceNumber - SetValues(value []uint32) PatternFlowIcmpv6EchoSequenceNumber - // Increment returns PatternFlowIcmpv6EchoSequenceNumberCounter, set in PatternFlowIcmpv6EchoSequenceNumber. - // PatternFlowIcmpv6EchoSequenceNumberCounter is integer counter pattern - Increment() PatternFlowIcmpv6EchoSequenceNumberCounter - // SetIncrement assigns PatternFlowIcmpv6EchoSequenceNumberCounter provided by user to PatternFlowIcmpv6EchoSequenceNumber. - // PatternFlowIcmpv6EchoSequenceNumberCounter is integer counter pattern - SetIncrement(value PatternFlowIcmpv6EchoSequenceNumberCounter) PatternFlowIcmpv6EchoSequenceNumber - // HasIncrement checks if Increment has been set in PatternFlowIcmpv6EchoSequenceNumber - HasIncrement() bool - // Decrement returns PatternFlowIcmpv6EchoSequenceNumberCounter, set in PatternFlowIcmpv6EchoSequenceNumber. - // PatternFlowIcmpv6EchoSequenceNumberCounter is integer counter pattern - Decrement() PatternFlowIcmpv6EchoSequenceNumberCounter - // SetDecrement assigns PatternFlowIcmpv6EchoSequenceNumberCounter provided by user to PatternFlowIcmpv6EchoSequenceNumber. - // PatternFlowIcmpv6EchoSequenceNumberCounter is integer counter pattern - SetDecrement(value PatternFlowIcmpv6EchoSequenceNumberCounter) PatternFlowIcmpv6EchoSequenceNumber - // HasDecrement checks if Decrement has been set in PatternFlowIcmpv6EchoSequenceNumber - HasDecrement() bool - // MetricTags returns PatternFlowIcmpv6EchoSequenceNumberPatternFlowIcmpv6EchoSequenceNumberMetricTagIterIter, set in PatternFlowIcmpv6EchoSequenceNumber - MetricTags() PatternFlowIcmpv6EchoSequenceNumberPatternFlowIcmpv6EchoSequenceNumberMetricTagIter - setNil() + // RemoteVmMac returns string, set in VxlanTunnelDestinationIPModeUnicastArpSuppressionCache. + RemoteVmMac() string + // SetRemoteVmMac assigns string provided by user to VxlanTunnelDestinationIPModeUnicastArpSuppressionCache + SetRemoteVmMac(value string) VxlanTunnelDestinationIPModeUnicastArpSuppressionCache + // HasRemoteVmMac checks if RemoteVmMac has been set in VxlanTunnelDestinationIPModeUnicastArpSuppressionCache + HasRemoteVmMac() bool + // RemoteVmIpv4 returns string, set in VxlanTunnelDestinationIPModeUnicastArpSuppressionCache. + RemoteVmIpv4() string + // SetRemoteVmIpv4 assigns string provided by user to VxlanTunnelDestinationIPModeUnicastArpSuppressionCache + SetRemoteVmIpv4(value string) VxlanTunnelDestinationIPModeUnicastArpSuppressionCache + // HasRemoteVmIpv4 checks if RemoteVmIpv4 has been set in VxlanTunnelDestinationIPModeUnicastArpSuppressionCache + HasRemoteVmIpv4() bool } -type PatternFlowIcmpv6EchoSequenceNumberChoiceEnum string +// Remote VM MAC address bound to Remote VM IPv4 address +// RemoteVmMac returns a string +func (obj *vxlanTunnelDestinationIPModeUnicastArpSuppressionCache) RemoteVmMac() string { + + return *obj.obj.RemoteVmMac -// Enum of Choice on PatternFlowIcmpv6EchoSequenceNumber -var PatternFlowIcmpv6EchoSequenceNumberChoice = struct { - VALUE PatternFlowIcmpv6EchoSequenceNumberChoiceEnum - VALUES PatternFlowIcmpv6EchoSequenceNumberChoiceEnum - INCREMENT PatternFlowIcmpv6EchoSequenceNumberChoiceEnum - DECREMENT PatternFlowIcmpv6EchoSequenceNumberChoiceEnum -}{ - VALUE: PatternFlowIcmpv6EchoSequenceNumberChoiceEnum("value"), - VALUES: PatternFlowIcmpv6EchoSequenceNumberChoiceEnum("values"), - INCREMENT: PatternFlowIcmpv6EchoSequenceNumberChoiceEnum("increment"), - DECREMENT: PatternFlowIcmpv6EchoSequenceNumberChoiceEnum("decrement"), } -func (obj *patternFlowIcmpv6EchoSequenceNumber) Choice() PatternFlowIcmpv6EchoSequenceNumberChoiceEnum { - return PatternFlowIcmpv6EchoSequenceNumberChoiceEnum(obj.obj.Choice.Enum().String()) +// Remote VM MAC address bound to Remote VM IPv4 address +// RemoteVmMac returns a string +func (obj *vxlanTunnelDestinationIPModeUnicastArpSuppressionCache) HasRemoteVmMac() bool { + return obj.obj.RemoteVmMac != nil } -// description is TBD -// Choice returns a string -func (obj *patternFlowIcmpv6EchoSequenceNumber) HasChoice() bool { - return obj.obj.Choice != nil +// Remote VM MAC address bound to Remote VM IPv4 address +// SetRemoteVmMac sets the string value in the VxlanTunnelDestinationIPModeUnicastArpSuppressionCache object +func (obj *vxlanTunnelDestinationIPModeUnicastArpSuppressionCache) SetRemoteVmMac(value string) VxlanTunnelDestinationIPModeUnicastArpSuppressionCache { + + obj.obj.RemoteVmMac = &value + return obj } -func (obj *patternFlowIcmpv6EchoSequenceNumber) SetChoice(value PatternFlowIcmpv6EchoSequenceNumberChoiceEnum) PatternFlowIcmpv6EchoSequenceNumber { - intValue, ok := otg.PatternFlowIcmpv6EchoSequenceNumber_Choice_Enum_value[string(value)] - if !ok { - obj.validationErrors = append(obj.validationErrors, fmt.Sprintf( - "%s is not a valid choice on PatternFlowIcmpv6EchoSequenceNumberChoiceEnum", string(value))) - return obj - } - enumValue := otg.PatternFlowIcmpv6EchoSequenceNumber_Choice_Enum(intValue) - obj.obj.Choice = &enumValue - obj.obj.Decrement = nil - obj.decrementHolder = nil - obj.obj.Increment = nil - obj.incrementHolder = nil - obj.obj.Values = nil - obj.obj.Value = nil +// Remote VM IPv4 address +// RemoteVmIpv4 returns a string +func (obj *vxlanTunnelDestinationIPModeUnicastArpSuppressionCache) RemoteVmIpv4() string { - if value == PatternFlowIcmpv6EchoSequenceNumberChoice.VALUE { - defaultValue := uint32(0) - obj.obj.Value = &defaultValue - } + return *obj.obj.RemoteVmIpv4 - if value == PatternFlowIcmpv6EchoSequenceNumberChoice.VALUES { - defaultValue := []uint32{0} - obj.obj.Values = defaultValue +} + +// Remote VM IPv4 address +// RemoteVmIpv4 returns a string +func (obj *vxlanTunnelDestinationIPModeUnicastArpSuppressionCache) HasRemoteVmIpv4() bool { + return obj.obj.RemoteVmIpv4 != nil +} + +// Remote VM IPv4 address +// SetRemoteVmIpv4 sets the string value in the VxlanTunnelDestinationIPModeUnicastArpSuppressionCache object +func (obj *vxlanTunnelDestinationIPModeUnicastArpSuppressionCache) SetRemoteVmIpv4(value string) VxlanTunnelDestinationIPModeUnicastArpSuppressionCache { + + obj.obj.RemoteVmIpv4 = &value + return obj +} + +func (obj *vxlanTunnelDestinationIPModeUnicastArpSuppressionCache) validateObj(vObj *validation, set_default bool) { + if set_default { + obj.setDefault() } - if value == PatternFlowIcmpv6EchoSequenceNumberChoice.INCREMENT { - obj.obj.Increment = NewPatternFlowIcmpv6EchoSequenceNumberCounter().Msg() + if obj.obj.RemoteVmMac != nil { + + err := obj.validateMac(obj.RemoteVmMac()) + if err != nil { + vObj.validationErrors = append(vObj.validationErrors, fmt.Sprintf("%s %s", err.Error(), "on VxlanTunnelDestinationIPModeUnicastArpSuppressionCache.RemoteVmMac")) + } + } - if value == PatternFlowIcmpv6EchoSequenceNumberChoice.DECREMENT { - obj.obj.Decrement = NewPatternFlowIcmpv6EchoSequenceNumberCounter().Msg() + if obj.obj.RemoteVmIpv4 != nil { + + err := obj.validateIpv4(obj.RemoteVmIpv4()) + if err != nil { + vObj.validationErrors = append(vObj.validationErrors, fmt.Sprintf("%s %s", err.Error(), "on VxlanTunnelDestinationIPModeUnicastArpSuppressionCache.RemoteVmIpv4")) + } + } - return obj } -// description is TBD -// Value returns a uint32 -func (obj *patternFlowIcmpv6EchoSequenceNumber) Value() uint32 { +func (obj *vxlanTunnelDestinationIPModeUnicastArpSuppressionCache) setDefault() { - if obj.obj.Value == nil { - obj.SetChoice(PatternFlowIcmpv6EchoSequenceNumberChoice.VALUE) - } +} - return *obj.obj.Value +// ***** PatternFlowIpv4TosPrecedenceCounter ***** +type patternFlowIpv4TosPrecedenceCounter struct { + validation + obj *otg.PatternFlowIpv4TosPrecedenceCounter +} +func NewPatternFlowIpv4TosPrecedenceCounter() PatternFlowIpv4TosPrecedenceCounter { + obj := patternFlowIpv4TosPrecedenceCounter{obj: &otg.PatternFlowIpv4TosPrecedenceCounter{}} + obj.setDefault() + return &obj } -// description is TBD -// Value returns a uint32 -func (obj *patternFlowIcmpv6EchoSequenceNumber) HasValue() bool { - return obj.obj.Value != nil +func (obj *patternFlowIpv4TosPrecedenceCounter) Msg() *otg.PatternFlowIpv4TosPrecedenceCounter { + return obj.obj } -// description is TBD -// SetValue sets the uint32 value in the PatternFlowIcmpv6EchoSequenceNumber object -func (obj *patternFlowIcmpv6EchoSequenceNumber) SetValue(value uint32) PatternFlowIcmpv6EchoSequenceNumber { - obj.SetChoice(PatternFlowIcmpv6EchoSequenceNumberChoice.VALUE) - obj.obj.Value = &value +func (obj *patternFlowIpv4TosPrecedenceCounter) SetMsg(msg *otg.PatternFlowIpv4TosPrecedenceCounter) PatternFlowIpv4TosPrecedenceCounter { + + proto.Merge(obj.obj, msg) return obj } -// description is TBD -// Values returns a []uint32 -func (obj *patternFlowIcmpv6EchoSequenceNumber) Values() []uint32 { - if obj.obj.Values == nil { - obj.SetValues([]uint32{0}) +func (obj *patternFlowIpv4TosPrecedenceCounter) ToProto() (*otg.PatternFlowIpv4TosPrecedenceCounter, error) { + err := obj.validateToAndFrom() + if err != nil { + return nil, err } - return obj.obj.Values + return obj.Msg(), nil } -// description is TBD -// SetValues sets the []uint32 value in the PatternFlowIcmpv6EchoSequenceNumber object -func (obj *patternFlowIcmpv6EchoSequenceNumber) SetValues(value []uint32) PatternFlowIcmpv6EchoSequenceNumber { - obj.SetChoice(PatternFlowIcmpv6EchoSequenceNumberChoice.VALUES) - if obj.obj.Values == nil { - obj.obj.Values = make([]uint32, 0) +func (obj *patternFlowIpv4TosPrecedenceCounter) FromProto(msg *otg.PatternFlowIpv4TosPrecedenceCounter) (PatternFlowIpv4TosPrecedenceCounter, error) { + newObj := obj.SetMsg(msg) + err := newObj.validateToAndFrom() + if err != nil { + return nil, err } - obj.obj.Values = value + return newObj, nil +} - return obj +func (obj *patternFlowIpv4TosPrecedenceCounter) ToPbText() (string, error) { + vErr := obj.validateToAndFrom() + if vErr != nil { + return "", vErr + } + protoMarshal, err := proto.Marshal(obj.Msg()) + if err != nil { + return "", err + } + return string(protoMarshal), nil } -// description is TBD -// Increment returns a PatternFlowIcmpv6EchoSequenceNumberCounter -func (obj *patternFlowIcmpv6EchoSequenceNumber) Increment() PatternFlowIcmpv6EchoSequenceNumberCounter { - if obj.obj.Increment == nil { - obj.SetChoice(PatternFlowIcmpv6EchoSequenceNumberChoice.INCREMENT) +func (obj *patternFlowIpv4TosPrecedenceCounter) FromPbText(value string) error { + retObj := proto.Unmarshal([]byte(value), obj.Msg()) + if retObj != nil { + return retObj } - if obj.incrementHolder == nil { - obj.incrementHolder = &patternFlowIcmpv6EchoSequenceNumberCounter{obj: obj.obj.Increment} + + vErr := obj.validateToAndFrom() + if vErr != nil { + return vErr } - return obj.incrementHolder + return retObj } -// description is TBD -// Increment returns a PatternFlowIcmpv6EchoSequenceNumberCounter -func (obj *patternFlowIcmpv6EchoSequenceNumber) HasIncrement() bool { - return obj.obj.Increment != nil +func (obj *patternFlowIpv4TosPrecedenceCounter) ToYaml() (string, error) { + vErr := obj.validateToAndFrom() + if vErr != nil { + return "", vErr + } + opts := protojson.MarshalOptions{ + UseProtoNames: true, + AllowPartial: true, + EmitUnpopulated: false, + } + data, err := opts.Marshal(obj.Msg()) + if err != nil { + return "", err + } + data, err = yaml.JSONToYAML(data) + if err != nil { + return "", err + } + return string(data), nil } -// description is TBD -// SetIncrement sets the PatternFlowIcmpv6EchoSequenceNumberCounter value in the PatternFlowIcmpv6EchoSequenceNumber object -func (obj *patternFlowIcmpv6EchoSequenceNumber) SetIncrement(value PatternFlowIcmpv6EchoSequenceNumberCounter) PatternFlowIcmpv6EchoSequenceNumber { - obj.SetChoice(PatternFlowIcmpv6EchoSequenceNumberChoice.INCREMENT) - obj.incrementHolder = nil - obj.obj.Increment = value.Msg() +func (obj *patternFlowIpv4TosPrecedenceCounter) FromYaml(value string) error { + if value == "" { + value = "{}" + } + data, err := yaml.YAMLToJSON([]byte(value)) + if err != nil { + return err + } + opts := protojson.UnmarshalOptions{ + AllowPartial: true, + DiscardUnknown: false, + } + uError := opts.Unmarshal([]byte(data), obj.Msg()) + if uError != nil { + return fmt.Errorf("unmarshal error %s", strings.Replace( + uError.Error(), "\u00a0", " ", -1)[7:]) + } - return obj + vErr := obj.validateToAndFrom() + if vErr != nil { + return vErr + } + return nil } -// description is TBD -// Decrement returns a PatternFlowIcmpv6EchoSequenceNumberCounter -func (obj *patternFlowIcmpv6EchoSequenceNumber) Decrement() PatternFlowIcmpv6EchoSequenceNumberCounter { - if obj.obj.Decrement == nil { - obj.SetChoice(PatternFlowIcmpv6EchoSequenceNumberChoice.DECREMENT) +func (obj *patternFlowIpv4TosPrecedenceCounter) ToJson() (string, error) { + vErr := obj.validateToAndFrom() + if vErr != nil { + return "", vErr } - if obj.decrementHolder == nil { - obj.decrementHolder = &patternFlowIcmpv6EchoSequenceNumberCounter{obj: obj.obj.Decrement} + opts := protojson.MarshalOptions{ + UseProtoNames: true, + AllowPartial: true, + EmitUnpopulated: false, + Indent: " ", } - return obj.decrementHolder + data, err := opts.Marshal(obj.Msg()) + if err != nil { + return "", err + } + return string(data), nil } -// description is TBD -// Decrement returns a PatternFlowIcmpv6EchoSequenceNumberCounter -func (obj *patternFlowIcmpv6EchoSequenceNumber) HasDecrement() bool { - return obj.obj.Decrement != nil +func (obj *patternFlowIpv4TosPrecedenceCounter) FromJson(value string) error { + opts := protojson.UnmarshalOptions{ + AllowPartial: true, + DiscardUnknown: false, + } + if value == "" { + value = "{}" + } + uError := opts.Unmarshal([]byte(value), obj.Msg()) + if uError != nil { + return fmt.Errorf("unmarshal error %s", strings.Replace( + uError.Error(), "\u00a0", " ", -1)[7:]) + } + + err := obj.validateToAndFrom() + if err != nil { + return err + } + return nil } -// description is TBD -// SetDecrement sets the PatternFlowIcmpv6EchoSequenceNumberCounter value in the PatternFlowIcmpv6EchoSequenceNumber object -func (obj *patternFlowIcmpv6EchoSequenceNumber) SetDecrement(value PatternFlowIcmpv6EchoSequenceNumberCounter) PatternFlowIcmpv6EchoSequenceNumber { - obj.SetChoice(PatternFlowIcmpv6EchoSequenceNumberChoice.DECREMENT) - obj.decrementHolder = nil - obj.obj.Decrement = value.Msg() +func (obj *patternFlowIpv4TosPrecedenceCounter) validateToAndFrom() error { + // emptyVars() + obj.validateObj(&obj.validation, true) + return obj.validationResult() +} - return obj +func (obj *patternFlowIpv4TosPrecedenceCounter) Validate() error { + // emptyVars() + obj.validateObj(&obj.validation, false) + return obj.validationResult() } -// One or more metric tags can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. -// MetricTags returns a []PatternFlowIcmpv6EchoSequenceNumberMetricTag -func (obj *patternFlowIcmpv6EchoSequenceNumber) MetricTags() PatternFlowIcmpv6EchoSequenceNumberPatternFlowIcmpv6EchoSequenceNumberMetricTagIter { - if len(obj.obj.MetricTags) == 0 { - obj.obj.MetricTags = []*otg.PatternFlowIcmpv6EchoSequenceNumberMetricTag{} +func (obj *patternFlowIpv4TosPrecedenceCounter) String() string { + str, err := obj.ToYaml() + if err != nil { + return err.Error() } - if obj.metricTagsHolder == nil { - obj.metricTagsHolder = newPatternFlowIcmpv6EchoSequenceNumberPatternFlowIcmpv6EchoSequenceNumberMetricTagIter(&obj.obj.MetricTags).setMsg(obj) + return str +} + +func (obj *patternFlowIpv4TosPrecedenceCounter) Clone() (PatternFlowIpv4TosPrecedenceCounter, error) { + vErr := obj.Validate() + if vErr != nil { + return nil, vErr } - return obj.metricTagsHolder + newObj := NewPatternFlowIpv4TosPrecedenceCounter() + data, err := proto.Marshal(obj.Msg()) + if err != nil { + return nil, err + } + pbErr := proto.Unmarshal(data, newObj.Msg()) + if pbErr != nil { + return nil, pbErr + } + return newObj, nil } -type patternFlowIcmpv6EchoSequenceNumberPatternFlowIcmpv6EchoSequenceNumberMetricTagIter struct { - obj *patternFlowIcmpv6EchoSequenceNumber - patternFlowIcmpv6EchoSequenceNumberMetricTagSlice []PatternFlowIcmpv6EchoSequenceNumberMetricTag - fieldPtr *[]*otg.PatternFlowIcmpv6EchoSequenceNumberMetricTag +// PatternFlowIpv4TosPrecedenceCounter is integer counter pattern +type PatternFlowIpv4TosPrecedenceCounter interface { + Validation + // Msg marshals PatternFlowIpv4TosPrecedenceCounter to protobuf object *otg.PatternFlowIpv4TosPrecedenceCounter + // and doesn't set defaults + Msg() *otg.PatternFlowIpv4TosPrecedenceCounter + // SetMsg unmarshals PatternFlowIpv4TosPrecedenceCounter from protobuf object *otg.PatternFlowIpv4TosPrecedenceCounter + // and doesn't set defaults + SetMsg(*otg.PatternFlowIpv4TosPrecedenceCounter) PatternFlowIpv4TosPrecedenceCounter + // ToProto marshals PatternFlowIpv4TosPrecedenceCounter to protobuf object *otg.PatternFlowIpv4TosPrecedenceCounter + ToProto() (*otg.PatternFlowIpv4TosPrecedenceCounter, error) + // ToPbText marshals PatternFlowIpv4TosPrecedenceCounter to protobuf text + ToPbText() (string, error) + // ToYaml marshals PatternFlowIpv4TosPrecedenceCounter to YAML text + ToYaml() (string, error) + // ToJson marshals PatternFlowIpv4TosPrecedenceCounter to JSON text + ToJson() (string, error) + // FromProto unmarshals PatternFlowIpv4TosPrecedenceCounter from protobuf object *otg.PatternFlowIpv4TosPrecedenceCounter + FromProto(msg *otg.PatternFlowIpv4TosPrecedenceCounter) (PatternFlowIpv4TosPrecedenceCounter, error) + // FromPbText unmarshals PatternFlowIpv4TosPrecedenceCounter from protobuf text + FromPbText(value string) error + // FromYaml unmarshals PatternFlowIpv4TosPrecedenceCounter from YAML text + FromYaml(value string) error + // FromJson unmarshals PatternFlowIpv4TosPrecedenceCounter from JSON text + FromJson(value string) error + // Validate validates PatternFlowIpv4TosPrecedenceCounter + Validate() error + // A stringer function + String() string + // Clones the object + Clone() (PatternFlowIpv4TosPrecedenceCounter, error) + validateToAndFrom() error + validateObj(vObj *validation, set_default bool) + setDefault() + // Start returns uint32, set in PatternFlowIpv4TosPrecedenceCounter. + Start() uint32 + // SetStart assigns uint32 provided by user to PatternFlowIpv4TosPrecedenceCounter + SetStart(value uint32) PatternFlowIpv4TosPrecedenceCounter + // HasStart checks if Start has been set in PatternFlowIpv4TosPrecedenceCounter + HasStart() bool + // Step returns uint32, set in PatternFlowIpv4TosPrecedenceCounter. + Step() uint32 + // SetStep assigns uint32 provided by user to PatternFlowIpv4TosPrecedenceCounter + SetStep(value uint32) PatternFlowIpv4TosPrecedenceCounter + // HasStep checks if Step has been set in PatternFlowIpv4TosPrecedenceCounter + HasStep() bool + // Count returns uint32, set in PatternFlowIpv4TosPrecedenceCounter. + Count() uint32 + // SetCount assigns uint32 provided by user to PatternFlowIpv4TosPrecedenceCounter + SetCount(value uint32) PatternFlowIpv4TosPrecedenceCounter + // HasCount checks if Count has been set in PatternFlowIpv4TosPrecedenceCounter + HasCount() bool } -func newPatternFlowIcmpv6EchoSequenceNumberPatternFlowIcmpv6EchoSequenceNumberMetricTagIter(ptr *[]*otg.PatternFlowIcmpv6EchoSequenceNumberMetricTag) PatternFlowIcmpv6EchoSequenceNumberPatternFlowIcmpv6EchoSequenceNumberMetricTagIter { - return &patternFlowIcmpv6EchoSequenceNumberPatternFlowIcmpv6EchoSequenceNumberMetricTagIter{fieldPtr: ptr} +// description is TBD +// Start returns a uint32 +func (obj *patternFlowIpv4TosPrecedenceCounter) Start() uint32 { + + return *obj.obj.Start + } -type PatternFlowIcmpv6EchoSequenceNumberPatternFlowIcmpv6EchoSequenceNumberMetricTagIter interface { - setMsg(*patternFlowIcmpv6EchoSequenceNumber) PatternFlowIcmpv6EchoSequenceNumberPatternFlowIcmpv6EchoSequenceNumberMetricTagIter - Items() []PatternFlowIcmpv6EchoSequenceNumberMetricTag - Add() PatternFlowIcmpv6EchoSequenceNumberMetricTag - Append(items ...PatternFlowIcmpv6EchoSequenceNumberMetricTag) PatternFlowIcmpv6EchoSequenceNumberPatternFlowIcmpv6EchoSequenceNumberMetricTagIter - Set(index int, newObj PatternFlowIcmpv6EchoSequenceNumberMetricTag) PatternFlowIcmpv6EchoSequenceNumberPatternFlowIcmpv6EchoSequenceNumberMetricTagIter - Clear() PatternFlowIcmpv6EchoSequenceNumberPatternFlowIcmpv6EchoSequenceNumberMetricTagIter - clearHolderSlice() PatternFlowIcmpv6EchoSequenceNumberPatternFlowIcmpv6EchoSequenceNumberMetricTagIter - appendHolderSlice(item PatternFlowIcmpv6EchoSequenceNumberMetricTag) PatternFlowIcmpv6EchoSequenceNumberPatternFlowIcmpv6EchoSequenceNumberMetricTagIter +// description is TBD +// Start returns a uint32 +func (obj *patternFlowIpv4TosPrecedenceCounter) HasStart() bool { + return obj.obj.Start != nil } -func (obj *patternFlowIcmpv6EchoSequenceNumberPatternFlowIcmpv6EchoSequenceNumberMetricTagIter) setMsg(msg *patternFlowIcmpv6EchoSequenceNumber) PatternFlowIcmpv6EchoSequenceNumberPatternFlowIcmpv6EchoSequenceNumberMetricTagIter { - obj.clearHolderSlice() - for _, val := range *obj.fieldPtr { - obj.appendHolderSlice(&patternFlowIcmpv6EchoSequenceNumberMetricTag{obj: val}) - } - obj.obj = msg +// description is TBD +// SetStart sets the uint32 value in the PatternFlowIpv4TosPrecedenceCounter object +func (obj *patternFlowIpv4TosPrecedenceCounter) SetStart(value uint32) PatternFlowIpv4TosPrecedenceCounter { + + obj.obj.Start = &value return obj } -func (obj *patternFlowIcmpv6EchoSequenceNumberPatternFlowIcmpv6EchoSequenceNumberMetricTagIter) Items() []PatternFlowIcmpv6EchoSequenceNumberMetricTag { - return obj.patternFlowIcmpv6EchoSequenceNumberMetricTagSlice -} +// description is TBD +// Step returns a uint32 +func (obj *patternFlowIpv4TosPrecedenceCounter) Step() uint32 { + + return *obj.obj.Step -func (obj *patternFlowIcmpv6EchoSequenceNumberPatternFlowIcmpv6EchoSequenceNumberMetricTagIter) Add() PatternFlowIcmpv6EchoSequenceNumberMetricTag { - newObj := &otg.PatternFlowIcmpv6EchoSequenceNumberMetricTag{} - *obj.fieldPtr = append(*obj.fieldPtr, newObj) - newLibObj := &patternFlowIcmpv6EchoSequenceNumberMetricTag{obj: newObj} - newLibObj.setDefault() - obj.patternFlowIcmpv6EchoSequenceNumberMetricTagSlice = append(obj.patternFlowIcmpv6EchoSequenceNumberMetricTagSlice, newLibObj) - return newLibObj } -func (obj *patternFlowIcmpv6EchoSequenceNumberPatternFlowIcmpv6EchoSequenceNumberMetricTagIter) Append(items ...PatternFlowIcmpv6EchoSequenceNumberMetricTag) PatternFlowIcmpv6EchoSequenceNumberPatternFlowIcmpv6EchoSequenceNumberMetricTagIter { - for _, item := range items { - newObj := item.Msg() - *obj.fieldPtr = append(*obj.fieldPtr, newObj) - obj.patternFlowIcmpv6EchoSequenceNumberMetricTagSlice = append(obj.patternFlowIcmpv6EchoSequenceNumberMetricTagSlice, item) - } - return obj +// description is TBD +// Step returns a uint32 +func (obj *patternFlowIpv4TosPrecedenceCounter) HasStep() bool { + return obj.obj.Step != nil } -func (obj *patternFlowIcmpv6EchoSequenceNumberPatternFlowIcmpv6EchoSequenceNumberMetricTagIter) Set(index int, newObj PatternFlowIcmpv6EchoSequenceNumberMetricTag) PatternFlowIcmpv6EchoSequenceNumberPatternFlowIcmpv6EchoSequenceNumberMetricTagIter { - (*obj.fieldPtr)[index] = newObj.Msg() - obj.patternFlowIcmpv6EchoSequenceNumberMetricTagSlice[index] = newObj +// description is TBD +// SetStep sets the uint32 value in the PatternFlowIpv4TosPrecedenceCounter object +func (obj *patternFlowIpv4TosPrecedenceCounter) SetStep(value uint32) PatternFlowIpv4TosPrecedenceCounter { + + obj.obj.Step = &value return obj } -func (obj *patternFlowIcmpv6EchoSequenceNumberPatternFlowIcmpv6EchoSequenceNumberMetricTagIter) Clear() PatternFlowIcmpv6EchoSequenceNumberPatternFlowIcmpv6EchoSequenceNumberMetricTagIter { - if len(*obj.fieldPtr) > 0 { - *obj.fieldPtr = []*otg.PatternFlowIcmpv6EchoSequenceNumberMetricTag{} - obj.patternFlowIcmpv6EchoSequenceNumberMetricTagSlice = []PatternFlowIcmpv6EchoSequenceNumberMetricTag{} - } - return obj + +// description is TBD +// Count returns a uint32 +func (obj *patternFlowIpv4TosPrecedenceCounter) Count() uint32 { + + return *obj.obj.Count + } -func (obj *patternFlowIcmpv6EchoSequenceNumberPatternFlowIcmpv6EchoSequenceNumberMetricTagIter) clearHolderSlice() PatternFlowIcmpv6EchoSequenceNumberPatternFlowIcmpv6EchoSequenceNumberMetricTagIter { - if len(obj.patternFlowIcmpv6EchoSequenceNumberMetricTagSlice) > 0 { - obj.patternFlowIcmpv6EchoSequenceNumberMetricTagSlice = []PatternFlowIcmpv6EchoSequenceNumberMetricTag{} - } - return obj + +// description is TBD +// Count returns a uint32 +func (obj *patternFlowIpv4TosPrecedenceCounter) HasCount() bool { + return obj.obj.Count != nil } -func (obj *patternFlowIcmpv6EchoSequenceNumberPatternFlowIcmpv6EchoSequenceNumberMetricTagIter) appendHolderSlice(item PatternFlowIcmpv6EchoSequenceNumberMetricTag) PatternFlowIcmpv6EchoSequenceNumberPatternFlowIcmpv6EchoSequenceNumberMetricTagIter { - obj.patternFlowIcmpv6EchoSequenceNumberMetricTagSlice = append(obj.patternFlowIcmpv6EchoSequenceNumberMetricTagSlice, item) + +// description is TBD +// SetCount sets the uint32 value in the PatternFlowIpv4TosPrecedenceCounter object +func (obj *patternFlowIpv4TosPrecedenceCounter) SetCount(value uint32) PatternFlowIpv4TosPrecedenceCounter { + + obj.obj.Count = &value return obj } -func (obj *patternFlowIcmpv6EchoSequenceNumber) validateObj(vObj *validation, set_default bool) { +func (obj *patternFlowIpv4TosPrecedenceCounter) validateObj(vObj *validation, set_default bool) { if set_default { obj.setDefault() } - if obj.obj.Value != nil { + if obj.obj.Start != nil { - if *obj.obj.Value > 65535 { + if *obj.obj.Start > 7 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowIcmpv6EchoSequenceNumber.Value <= 65535 but Got %d", *obj.obj.Value)) + fmt.Sprintf("0 <= PatternFlowIpv4TosPrecedenceCounter.Start <= 7 but Got %d", *obj.obj.Start)) } } - if obj.obj.Values != nil { - - for _, item := range obj.obj.Values { - if item > 65535 { - vObj.validationErrors = append( - vObj.validationErrors, - fmt.Sprintf("min(uint32) <= PatternFlowIcmpv6EchoSequenceNumber.Values <= 65535 but Got %d", item)) - } + if obj.obj.Step != nil { + if *obj.obj.Step > 7 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("0 <= PatternFlowIpv4TosPrecedenceCounter.Step <= 7 but Got %d", *obj.obj.Step)) } } - if obj.obj.Increment != nil { - - obj.Increment().validateObj(vObj, set_default) - } - - if obj.obj.Decrement != nil { - - obj.Decrement().validateObj(vObj, set_default) - } - - if len(obj.obj.MetricTags) != 0 { + if obj.obj.Count != nil { - if set_default { - obj.MetricTags().clearHolderSlice() - for _, item := range obj.obj.MetricTags { - obj.MetricTags().appendHolderSlice(&patternFlowIcmpv6EchoSequenceNumberMetricTag{obj: item}) - } - } - for _, item := range obj.MetricTags().Items() { - item.validateObj(vObj, set_default) + if *obj.obj.Count > 7 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("0 <= PatternFlowIpv4TosPrecedenceCounter.Count <= 7 but Got %d", *obj.obj.Count)) } } } -func (obj *patternFlowIcmpv6EchoSequenceNumber) setDefault() { - if obj.obj.Choice == nil { - obj.SetChoice(PatternFlowIcmpv6EchoSequenceNumberChoice.VALUE) - +func (obj *patternFlowIpv4TosPrecedenceCounter) setDefault() { + if obj.obj.Start == nil { + obj.SetStart(0) + } + if obj.obj.Step == nil { + obj.SetStep(1) + } + if obj.obj.Count == nil { + obj.SetCount(1) } } -// ***** PatternFlowIcmpv6EchoChecksum ***** -type patternFlowIcmpv6EchoChecksum struct { +// ***** PatternFlowIpv4TosPrecedenceMetricTag ***** +type patternFlowIpv4TosPrecedenceMetricTag struct { validation - obj *otg.PatternFlowIcmpv6EchoChecksum + obj *otg.PatternFlowIpv4TosPrecedenceMetricTag } -func NewPatternFlowIcmpv6EchoChecksum() PatternFlowIcmpv6EchoChecksum { - obj := patternFlowIcmpv6EchoChecksum{obj: &otg.PatternFlowIcmpv6EchoChecksum{}} +func NewPatternFlowIpv4TosPrecedenceMetricTag() PatternFlowIpv4TosPrecedenceMetricTag { + obj := patternFlowIpv4TosPrecedenceMetricTag{obj: &otg.PatternFlowIpv4TosPrecedenceMetricTag{}} obj.setDefault() return &obj } -func (obj *patternFlowIcmpv6EchoChecksum) Msg() *otg.PatternFlowIcmpv6EchoChecksum { +func (obj *patternFlowIpv4TosPrecedenceMetricTag) Msg() *otg.PatternFlowIpv4TosPrecedenceMetricTag { return obj.obj } -func (obj *patternFlowIcmpv6EchoChecksum) SetMsg(msg *otg.PatternFlowIcmpv6EchoChecksum) PatternFlowIcmpv6EchoChecksum { +func (obj *patternFlowIpv4TosPrecedenceMetricTag) SetMsg(msg *otg.PatternFlowIpv4TosPrecedenceMetricTag) PatternFlowIpv4TosPrecedenceMetricTag { proto.Merge(obj.obj, msg) return obj } -func (obj *patternFlowIcmpv6EchoChecksum) ToProto() (*otg.PatternFlowIcmpv6EchoChecksum, error) { +func (obj *patternFlowIpv4TosPrecedenceMetricTag) ToProto() (*otg.PatternFlowIpv4TosPrecedenceMetricTag, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -264144,7 +310302,7 @@ func (obj *patternFlowIcmpv6EchoChecksum) ToProto() (*otg.PatternFlowIcmpv6EchoC return obj.Msg(), nil } -func (obj *patternFlowIcmpv6EchoChecksum) FromProto(msg *otg.PatternFlowIcmpv6EchoChecksum) (PatternFlowIcmpv6EchoChecksum, error) { +func (obj *patternFlowIpv4TosPrecedenceMetricTag) FromProto(msg *otg.PatternFlowIpv4TosPrecedenceMetricTag) (PatternFlowIpv4TosPrecedenceMetricTag, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -264153,7 +310311,7 @@ func (obj *patternFlowIcmpv6EchoChecksum) FromProto(msg *otg.PatternFlowIcmpv6Ec return newObj, nil } -func (obj *patternFlowIcmpv6EchoChecksum) ToPbText() (string, error) { +func (obj *patternFlowIpv4TosPrecedenceMetricTag) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -264165,7 +310323,7 @@ func (obj *patternFlowIcmpv6EchoChecksum) ToPbText() (string, error) { return string(protoMarshal), nil } -func (obj *patternFlowIcmpv6EchoChecksum) FromPbText(value string) error { +func (obj *patternFlowIpv4TosPrecedenceMetricTag) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj @@ -264178,7 +310336,7 @@ func (obj *patternFlowIcmpv6EchoChecksum) FromPbText(value string) error { return retObj } -func (obj *patternFlowIcmpv6EchoChecksum) ToYaml() (string, error) { +func (obj *patternFlowIpv4TosPrecedenceMetricTag) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -264199,7 +310357,7 @@ func (obj *patternFlowIcmpv6EchoChecksum) ToYaml() (string, error) { return string(data), nil } -func (obj *patternFlowIcmpv6EchoChecksum) FromYaml(value string) error { +func (obj *patternFlowIpv4TosPrecedenceMetricTag) FromYaml(value string) error { if value == "" { value = "{}" } @@ -264224,7 +310382,7 @@ func (obj *patternFlowIcmpv6EchoChecksum) FromYaml(value string) error { return nil } -func (obj *patternFlowIcmpv6EchoChecksum) ToJson() (string, error) { +func (obj *patternFlowIpv4TosPrecedenceMetricTag) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -264242,7 +310400,7 @@ func (obj *patternFlowIcmpv6EchoChecksum) ToJson() (string, error) { return string(data), nil } -func (obj *patternFlowIcmpv6EchoChecksum) FromJson(value string) error { +func (obj *patternFlowIpv4TosPrecedenceMetricTag) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -264263,19 +310421,19 @@ func (obj *patternFlowIcmpv6EchoChecksum) FromJson(value string) error { return nil } -func (obj *patternFlowIcmpv6EchoChecksum) validateToAndFrom() error { +func (obj *patternFlowIpv4TosPrecedenceMetricTag) validateToAndFrom() error { // emptyVars() obj.validateObj(&obj.validation, true) return obj.validationResult() } -func (obj *patternFlowIcmpv6EchoChecksum) Validate() error { +func (obj *patternFlowIpv4TosPrecedenceMetricTag) Validate() error { // emptyVars() obj.validateObj(&obj.validation, false) return obj.validationResult() } -func (obj *patternFlowIcmpv6EchoChecksum) String() string { +func (obj *patternFlowIpv4TosPrecedenceMetricTag) String() string { str, err := obj.ToYaml() if err != nil { return err.Error() @@ -264283,12 +310441,12 @@ func (obj *patternFlowIcmpv6EchoChecksum) String() string { return str } -func (obj *patternFlowIcmpv6EchoChecksum) Clone() (PatternFlowIcmpv6EchoChecksum, error) { +func (obj *patternFlowIpv4TosPrecedenceMetricTag) Clone() (PatternFlowIpv4TosPrecedenceMetricTag, error) { vErr := obj.Validate() if vErr != nil { return nil, vErr } - newObj := NewPatternFlowIcmpv6EchoChecksum() + newObj := NewPatternFlowIpv4TosPrecedenceMetricTag() data, err := proto.Marshal(obj.Msg()) if err != nil { return nil, err @@ -264300,207 +310458,183 @@ func (obj *patternFlowIcmpv6EchoChecksum) Clone() (PatternFlowIcmpv6EchoChecksum return newObj, nil } -// PatternFlowIcmpv6EchoChecksum is iCMPv6 checksum -type PatternFlowIcmpv6EchoChecksum interface { +// PatternFlowIpv4TosPrecedenceMetricTag is metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. +type PatternFlowIpv4TosPrecedenceMetricTag interface { Validation - // Msg marshals PatternFlowIcmpv6EchoChecksum to protobuf object *otg.PatternFlowIcmpv6EchoChecksum + // Msg marshals PatternFlowIpv4TosPrecedenceMetricTag to protobuf object *otg.PatternFlowIpv4TosPrecedenceMetricTag // and doesn't set defaults - Msg() *otg.PatternFlowIcmpv6EchoChecksum - // SetMsg unmarshals PatternFlowIcmpv6EchoChecksum from protobuf object *otg.PatternFlowIcmpv6EchoChecksum + Msg() *otg.PatternFlowIpv4TosPrecedenceMetricTag + // SetMsg unmarshals PatternFlowIpv4TosPrecedenceMetricTag from protobuf object *otg.PatternFlowIpv4TosPrecedenceMetricTag // and doesn't set defaults - SetMsg(*otg.PatternFlowIcmpv6EchoChecksum) PatternFlowIcmpv6EchoChecksum - // ToProto marshals PatternFlowIcmpv6EchoChecksum to protobuf object *otg.PatternFlowIcmpv6EchoChecksum - ToProto() (*otg.PatternFlowIcmpv6EchoChecksum, error) - // ToPbText marshals PatternFlowIcmpv6EchoChecksum to protobuf text + SetMsg(*otg.PatternFlowIpv4TosPrecedenceMetricTag) PatternFlowIpv4TosPrecedenceMetricTag + // ToProto marshals PatternFlowIpv4TosPrecedenceMetricTag to protobuf object *otg.PatternFlowIpv4TosPrecedenceMetricTag + ToProto() (*otg.PatternFlowIpv4TosPrecedenceMetricTag, error) + // ToPbText marshals PatternFlowIpv4TosPrecedenceMetricTag to protobuf text ToPbText() (string, error) - // ToYaml marshals PatternFlowIcmpv6EchoChecksum to YAML text + // ToYaml marshals PatternFlowIpv4TosPrecedenceMetricTag to YAML text ToYaml() (string, error) - // ToJson marshals PatternFlowIcmpv6EchoChecksum to JSON text + // ToJson marshals PatternFlowIpv4TosPrecedenceMetricTag to JSON text ToJson() (string, error) - // FromProto unmarshals PatternFlowIcmpv6EchoChecksum from protobuf object *otg.PatternFlowIcmpv6EchoChecksum - FromProto(msg *otg.PatternFlowIcmpv6EchoChecksum) (PatternFlowIcmpv6EchoChecksum, error) - // FromPbText unmarshals PatternFlowIcmpv6EchoChecksum from protobuf text + // FromProto unmarshals PatternFlowIpv4TosPrecedenceMetricTag from protobuf object *otg.PatternFlowIpv4TosPrecedenceMetricTag + FromProto(msg *otg.PatternFlowIpv4TosPrecedenceMetricTag) (PatternFlowIpv4TosPrecedenceMetricTag, error) + // FromPbText unmarshals PatternFlowIpv4TosPrecedenceMetricTag from protobuf text FromPbText(value string) error - // FromYaml unmarshals PatternFlowIcmpv6EchoChecksum from YAML text + // FromYaml unmarshals PatternFlowIpv4TosPrecedenceMetricTag from YAML text FromYaml(value string) error - // FromJson unmarshals PatternFlowIcmpv6EchoChecksum from JSON text + // FromJson unmarshals PatternFlowIpv4TosPrecedenceMetricTag from JSON text FromJson(value string) error - // Validate validates PatternFlowIcmpv6EchoChecksum + // Validate validates PatternFlowIpv4TosPrecedenceMetricTag Validate() error // A stringer function String() string // Clones the object - Clone() (PatternFlowIcmpv6EchoChecksum, error) + Clone() (PatternFlowIpv4TosPrecedenceMetricTag, error) validateToAndFrom() error validateObj(vObj *validation, set_default bool) setDefault() - // Choice returns PatternFlowIcmpv6EchoChecksumChoiceEnum, set in PatternFlowIcmpv6EchoChecksum - Choice() PatternFlowIcmpv6EchoChecksumChoiceEnum - // SetChoice assigns PatternFlowIcmpv6EchoChecksumChoiceEnum provided by user to PatternFlowIcmpv6EchoChecksum - SetChoice(value PatternFlowIcmpv6EchoChecksumChoiceEnum) PatternFlowIcmpv6EchoChecksum - // HasChoice checks if Choice has been set in PatternFlowIcmpv6EchoChecksum - HasChoice() bool - // Generated returns PatternFlowIcmpv6EchoChecksumGeneratedEnum, set in PatternFlowIcmpv6EchoChecksum - Generated() PatternFlowIcmpv6EchoChecksumGeneratedEnum - // SetGenerated assigns PatternFlowIcmpv6EchoChecksumGeneratedEnum provided by user to PatternFlowIcmpv6EchoChecksum - SetGenerated(value PatternFlowIcmpv6EchoChecksumGeneratedEnum) PatternFlowIcmpv6EchoChecksum - // HasGenerated checks if Generated has been set in PatternFlowIcmpv6EchoChecksum - HasGenerated() bool - // Custom returns uint32, set in PatternFlowIcmpv6EchoChecksum. - Custom() uint32 - // SetCustom assigns uint32 provided by user to PatternFlowIcmpv6EchoChecksum - SetCustom(value uint32) PatternFlowIcmpv6EchoChecksum - // HasCustom checks if Custom has been set in PatternFlowIcmpv6EchoChecksum - HasCustom() bool + // Name returns string, set in PatternFlowIpv4TosPrecedenceMetricTag. + Name() string + // SetName assigns string provided by user to PatternFlowIpv4TosPrecedenceMetricTag + SetName(value string) PatternFlowIpv4TosPrecedenceMetricTag + // Offset returns uint32, set in PatternFlowIpv4TosPrecedenceMetricTag. + Offset() uint32 + // SetOffset assigns uint32 provided by user to PatternFlowIpv4TosPrecedenceMetricTag + SetOffset(value uint32) PatternFlowIpv4TosPrecedenceMetricTag + // HasOffset checks if Offset has been set in PatternFlowIpv4TosPrecedenceMetricTag + HasOffset() bool + // Length returns uint32, set in PatternFlowIpv4TosPrecedenceMetricTag. + Length() uint32 + // SetLength assigns uint32 provided by user to PatternFlowIpv4TosPrecedenceMetricTag + SetLength(value uint32) PatternFlowIpv4TosPrecedenceMetricTag + // HasLength checks if Length has been set in PatternFlowIpv4TosPrecedenceMetricTag + HasLength() bool } -type PatternFlowIcmpv6EchoChecksumChoiceEnum string +// Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field +// Name returns a string +func (obj *patternFlowIpv4TosPrecedenceMetricTag) Name() string { -// Enum of Choice on PatternFlowIcmpv6EchoChecksum -var PatternFlowIcmpv6EchoChecksumChoice = struct { - GENERATED PatternFlowIcmpv6EchoChecksumChoiceEnum - CUSTOM PatternFlowIcmpv6EchoChecksumChoiceEnum -}{ - GENERATED: PatternFlowIcmpv6EchoChecksumChoiceEnum("generated"), - CUSTOM: PatternFlowIcmpv6EchoChecksumChoiceEnum("custom"), -} + return *obj.obj.Name -func (obj *patternFlowIcmpv6EchoChecksum) Choice() PatternFlowIcmpv6EchoChecksumChoiceEnum { - return PatternFlowIcmpv6EchoChecksumChoiceEnum(obj.obj.Choice.Enum().String()) } -// The type of checksum -// Choice returns a string -func (obj *patternFlowIcmpv6EchoChecksum) HasChoice() bool { - return obj.obj.Choice != nil -} +// Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field +// SetName sets the string value in the PatternFlowIpv4TosPrecedenceMetricTag object +func (obj *patternFlowIpv4TosPrecedenceMetricTag) SetName(value string) PatternFlowIpv4TosPrecedenceMetricTag { -func (obj *patternFlowIcmpv6EchoChecksum) SetChoice(value PatternFlowIcmpv6EchoChecksumChoiceEnum) PatternFlowIcmpv6EchoChecksum { - intValue, ok := otg.PatternFlowIcmpv6EchoChecksum_Choice_Enum_value[string(value)] - if !ok { - obj.validationErrors = append(obj.validationErrors, fmt.Sprintf( - "%s is not a valid choice on PatternFlowIcmpv6EchoChecksumChoiceEnum", string(value))) - return obj - } - enumValue := otg.PatternFlowIcmpv6EchoChecksum_Choice_Enum(intValue) - obj.obj.Choice = &enumValue - obj.obj.Custom = nil - obj.obj.Generated = otg.PatternFlowIcmpv6EchoChecksum_Generated_unspecified.Enum() + obj.obj.Name = &value return obj } -type PatternFlowIcmpv6EchoChecksumGeneratedEnum string +// Offset in bits relative to start of corresponding header field +// Offset returns a uint32 +func (obj *patternFlowIpv4TosPrecedenceMetricTag) Offset() uint32 { -// Enum of Generated on PatternFlowIcmpv6EchoChecksum -var PatternFlowIcmpv6EchoChecksumGenerated = struct { - GOOD PatternFlowIcmpv6EchoChecksumGeneratedEnum - BAD PatternFlowIcmpv6EchoChecksumGeneratedEnum -}{ - GOOD: PatternFlowIcmpv6EchoChecksumGeneratedEnum("good"), - BAD: PatternFlowIcmpv6EchoChecksumGeneratedEnum("bad"), -} + return *obj.obj.Offset -func (obj *patternFlowIcmpv6EchoChecksum) Generated() PatternFlowIcmpv6EchoChecksumGeneratedEnum { - return PatternFlowIcmpv6EchoChecksumGeneratedEnum(obj.obj.Generated.Enum().String()) } -// A system generated checksum value -// Generated returns a string -func (obj *patternFlowIcmpv6EchoChecksum) HasGenerated() bool { - return obj.obj.Generated != nil +// Offset in bits relative to start of corresponding header field +// Offset returns a uint32 +func (obj *patternFlowIpv4TosPrecedenceMetricTag) HasOffset() bool { + return obj.obj.Offset != nil } -func (obj *patternFlowIcmpv6EchoChecksum) SetGenerated(value PatternFlowIcmpv6EchoChecksumGeneratedEnum) PatternFlowIcmpv6EchoChecksum { - intValue, ok := otg.PatternFlowIcmpv6EchoChecksum_Generated_Enum_value[string(value)] - if !ok { - obj.validationErrors = append(obj.validationErrors, fmt.Sprintf( - "%s is not a valid choice on PatternFlowIcmpv6EchoChecksumGeneratedEnum", string(value))) - return obj - } - enumValue := otg.PatternFlowIcmpv6EchoChecksum_Generated_Enum(intValue) - obj.obj.Generated = &enumValue +// Offset in bits relative to start of corresponding header field +// SetOffset sets the uint32 value in the PatternFlowIpv4TosPrecedenceMetricTag object +func (obj *patternFlowIpv4TosPrecedenceMetricTag) SetOffset(value uint32) PatternFlowIpv4TosPrecedenceMetricTag { + obj.obj.Offset = &value return obj } -// A custom checksum value -// Custom returns a uint32 -func (obj *patternFlowIcmpv6EchoChecksum) Custom() uint32 { - - if obj.obj.Custom == nil { - obj.SetChoice(PatternFlowIcmpv6EchoChecksumChoice.CUSTOM) - } +// Number of bits to track for metrics starting from configured offset of corresponding header field +// Length returns a uint32 +func (obj *patternFlowIpv4TosPrecedenceMetricTag) Length() uint32 { - return *obj.obj.Custom + return *obj.obj.Length } -// A custom checksum value -// Custom returns a uint32 -func (obj *patternFlowIcmpv6EchoChecksum) HasCustom() bool { - return obj.obj.Custom != nil +// Number of bits to track for metrics starting from configured offset of corresponding header field +// Length returns a uint32 +func (obj *patternFlowIpv4TosPrecedenceMetricTag) HasLength() bool { + return obj.obj.Length != nil } -// A custom checksum value -// SetCustom sets the uint32 value in the PatternFlowIcmpv6EchoChecksum object -func (obj *patternFlowIcmpv6EchoChecksum) SetCustom(value uint32) PatternFlowIcmpv6EchoChecksum { - obj.SetChoice(PatternFlowIcmpv6EchoChecksumChoice.CUSTOM) - obj.obj.Custom = &value +// Number of bits to track for metrics starting from configured offset of corresponding header field +// SetLength sets the uint32 value in the PatternFlowIpv4TosPrecedenceMetricTag object +func (obj *patternFlowIpv4TosPrecedenceMetricTag) SetLength(value uint32) PatternFlowIpv4TosPrecedenceMetricTag { + + obj.obj.Length = &value return obj } -func (obj *patternFlowIcmpv6EchoChecksum) validateObj(vObj *validation, set_default bool) { +func (obj *patternFlowIpv4TosPrecedenceMetricTag) validateObj(vObj *validation, set_default bool) { if set_default { obj.setDefault() } - if obj.obj.Custom != nil { + // Name is required + if obj.obj.Name == nil { + vObj.validationErrors = append(vObj.validationErrors, "Name is required field on interface PatternFlowIpv4TosPrecedenceMetricTag") + } - if *obj.obj.Custom > 65535 { + if obj.obj.Offset != nil { + + if *obj.obj.Offset > 2 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowIcmpv6EchoChecksum.Custom <= 65535 but Got %d", *obj.obj.Custom)) + fmt.Sprintf("0 <= PatternFlowIpv4TosPrecedenceMetricTag.Offset <= 2 but Got %d", *obj.obj.Offset)) } } -} - -func (obj *patternFlowIcmpv6EchoChecksum) setDefault() { - if obj.obj.Choice == nil { - obj.SetChoice(PatternFlowIcmpv6EchoChecksumChoice.GENERATED) - if obj.obj.Generated.Number() == 0 { - obj.SetGenerated(PatternFlowIcmpv6EchoChecksumGenerated.GOOD) + if obj.obj.Length != nil { + if *obj.obj.Length < 1 || *obj.obj.Length > 3 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("1 <= PatternFlowIpv4TosPrecedenceMetricTag.Length <= 3 but Got %d", *obj.obj.Length)) } } } -// ***** PatternFlowPppAddressCounter ***** -type patternFlowPppAddressCounter struct { +func (obj *patternFlowIpv4TosPrecedenceMetricTag) setDefault() { + if obj.obj.Offset == nil { + obj.SetOffset(0) + } + if obj.obj.Length == nil { + obj.SetLength(3) + } + +} + +// ***** PatternFlowIpv4TosDelayCounter ***** +type patternFlowIpv4TosDelayCounter struct { validation - obj *otg.PatternFlowPppAddressCounter + obj *otg.PatternFlowIpv4TosDelayCounter } -func NewPatternFlowPppAddressCounter() PatternFlowPppAddressCounter { - obj := patternFlowPppAddressCounter{obj: &otg.PatternFlowPppAddressCounter{}} +func NewPatternFlowIpv4TosDelayCounter() PatternFlowIpv4TosDelayCounter { + obj := patternFlowIpv4TosDelayCounter{obj: &otg.PatternFlowIpv4TosDelayCounter{}} obj.setDefault() return &obj } -func (obj *patternFlowPppAddressCounter) Msg() *otg.PatternFlowPppAddressCounter { +func (obj *patternFlowIpv4TosDelayCounter) Msg() *otg.PatternFlowIpv4TosDelayCounter { return obj.obj } -func (obj *patternFlowPppAddressCounter) SetMsg(msg *otg.PatternFlowPppAddressCounter) PatternFlowPppAddressCounter { +func (obj *patternFlowIpv4TosDelayCounter) SetMsg(msg *otg.PatternFlowIpv4TosDelayCounter) PatternFlowIpv4TosDelayCounter { proto.Merge(obj.obj, msg) return obj } -func (obj *patternFlowPppAddressCounter) ToProto() (*otg.PatternFlowPppAddressCounter, error) { +func (obj *patternFlowIpv4TosDelayCounter) ToProto() (*otg.PatternFlowIpv4TosDelayCounter, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -264508,7 +310642,7 @@ func (obj *patternFlowPppAddressCounter) ToProto() (*otg.PatternFlowPppAddressCo return obj.Msg(), nil } -func (obj *patternFlowPppAddressCounter) FromProto(msg *otg.PatternFlowPppAddressCounter) (PatternFlowPppAddressCounter, error) { +func (obj *patternFlowIpv4TosDelayCounter) FromProto(msg *otg.PatternFlowIpv4TosDelayCounter) (PatternFlowIpv4TosDelayCounter, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -264517,7 +310651,7 @@ func (obj *patternFlowPppAddressCounter) FromProto(msg *otg.PatternFlowPppAddres return newObj, nil } -func (obj *patternFlowPppAddressCounter) ToPbText() (string, error) { +func (obj *patternFlowIpv4TosDelayCounter) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -264529,7 +310663,7 @@ func (obj *patternFlowPppAddressCounter) ToPbText() (string, error) { return string(protoMarshal), nil } -func (obj *patternFlowPppAddressCounter) FromPbText(value string) error { +func (obj *patternFlowIpv4TosDelayCounter) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj @@ -264542,7 +310676,7 @@ func (obj *patternFlowPppAddressCounter) FromPbText(value string) error { return retObj } -func (obj *patternFlowPppAddressCounter) ToYaml() (string, error) { +func (obj *patternFlowIpv4TosDelayCounter) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -264563,7 +310697,7 @@ func (obj *patternFlowPppAddressCounter) ToYaml() (string, error) { return string(data), nil } -func (obj *patternFlowPppAddressCounter) FromYaml(value string) error { +func (obj *patternFlowIpv4TosDelayCounter) FromYaml(value string) error { if value == "" { value = "{}" } @@ -264588,7 +310722,7 @@ func (obj *patternFlowPppAddressCounter) FromYaml(value string) error { return nil } -func (obj *patternFlowPppAddressCounter) ToJson() (string, error) { +func (obj *patternFlowIpv4TosDelayCounter) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -264606,7 +310740,7 @@ func (obj *patternFlowPppAddressCounter) ToJson() (string, error) { return string(data), nil } -func (obj *patternFlowPppAddressCounter) FromJson(value string) error { +func (obj *patternFlowIpv4TosDelayCounter) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -264627,19 +310761,19 @@ func (obj *patternFlowPppAddressCounter) FromJson(value string) error { return nil } -func (obj *patternFlowPppAddressCounter) validateToAndFrom() error { +func (obj *patternFlowIpv4TosDelayCounter) validateToAndFrom() error { // emptyVars() obj.validateObj(&obj.validation, true) return obj.validationResult() } -func (obj *patternFlowPppAddressCounter) Validate() error { +func (obj *patternFlowIpv4TosDelayCounter) Validate() error { // emptyVars() obj.validateObj(&obj.validation, false) return obj.validationResult() } -func (obj *patternFlowPppAddressCounter) String() string { +func (obj *patternFlowIpv4TosDelayCounter) String() string { str, err := obj.ToYaml() if err != nil { return err.Error() @@ -264647,12 +310781,12 @@ func (obj *patternFlowPppAddressCounter) String() string { return str } -func (obj *patternFlowPppAddressCounter) Clone() (PatternFlowPppAddressCounter, error) { +func (obj *patternFlowIpv4TosDelayCounter) Clone() (PatternFlowIpv4TosDelayCounter, error) { vErr := obj.Validate() if vErr != nil { return nil, vErr } - newObj := NewPatternFlowPppAddressCounter() + newObj := NewPatternFlowIpv4TosDelayCounter() data, err := proto.Marshal(obj.Msg()) if err != nil { return nil, err @@ -264664,63 +310798,63 @@ func (obj *patternFlowPppAddressCounter) Clone() (PatternFlowPppAddressCounter, return newObj, nil } -// PatternFlowPppAddressCounter is integer counter pattern -type PatternFlowPppAddressCounter interface { +// PatternFlowIpv4TosDelayCounter is integer counter pattern +type PatternFlowIpv4TosDelayCounter interface { Validation - // Msg marshals PatternFlowPppAddressCounter to protobuf object *otg.PatternFlowPppAddressCounter + // Msg marshals PatternFlowIpv4TosDelayCounter to protobuf object *otg.PatternFlowIpv4TosDelayCounter // and doesn't set defaults - Msg() *otg.PatternFlowPppAddressCounter - // SetMsg unmarshals PatternFlowPppAddressCounter from protobuf object *otg.PatternFlowPppAddressCounter + Msg() *otg.PatternFlowIpv4TosDelayCounter + // SetMsg unmarshals PatternFlowIpv4TosDelayCounter from protobuf object *otg.PatternFlowIpv4TosDelayCounter // and doesn't set defaults - SetMsg(*otg.PatternFlowPppAddressCounter) PatternFlowPppAddressCounter - // ToProto marshals PatternFlowPppAddressCounter to protobuf object *otg.PatternFlowPppAddressCounter - ToProto() (*otg.PatternFlowPppAddressCounter, error) - // ToPbText marshals PatternFlowPppAddressCounter to protobuf text + SetMsg(*otg.PatternFlowIpv4TosDelayCounter) PatternFlowIpv4TosDelayCounter + // ToProto marshals PatternFlowIpv4TosDelayCounter to protobuf object *otg.PatternFlowIpv4TosDelayCounter + ToProto() (*otg.PatternFlowIpv4TosDelayCounter, error) + // ToPbText marshals PatternFlowIpv4TosDelayCounter to protobuf text ToPbText() (string, error) - // ToYaml marshals PatternFlowPppAddressCounter to YAML text + // ToYaml marshals PatternFlowIpv4TosDelayCounter to YAML text ToYaml() (string, error) - // ToJson marshals PatternFlowPppAddressCounter to JSON text + // ToJson marshals PatternFlowIpv4TosDelayCounter to JSON text ToJson() (string, error) - // FromProto unmarshals PatternFlowPppAddressCounter from protobuf object *otg.PatternFlowPppAddressCounter - FromProto(msg *otg.PatternFlowPppAddressCounter) (PatternFlowPppAddressCounter, error) - // FromPbText unmarshals PatternFlowPppAddressCounter from protobuf text + // FromProto unmarshals PatternFlowIpv4TosDelayCounter from protobuf object *otg.PatternFlowIpv4TosDelayCounter + FromProto(msg *otg.PatternFlowIpv4TosDelayCounter) (PatternFlowIpv4TosDelayCounter, error) + // FromPbText unmarshals PatternFlowIpv4TosDelayCounter from protobuf text FromPbText(value string) error - // FromYaml unmarshals PatternFlowPppAddressCounter from YAML text + // FromYaml unmarshals PatternFlowIpv4TosDelayCounter from YAML text FromYaml(value string) error - // FromJson unmarshals PatternFlowPppAddressCounter from JSON text + // FromJson unmarshals PatternFlowIpv4TosDelayCounter from JSON text FromJson(value string) error - // Validate validates PatternFlowPppAddressCounter + // Validate validates PatternFlowIpv4TosDelayCounter Validate() error // A stringer function String() string // Clones the object - Clone() (PatternFlowPppAddressCounter, error) + Clone() (PatternFlowIpv4TosDelayCounter, error) validateToAndFrom() error validateObj(vObj *validation, set_default bool) setDefault() - // Start returns uint32, set in PatternFlowPppAddressCounter. + // Start returns uint32, set in PatternFlowIpv4TosDelayCounter. Start() uint32 - // SetStart assigns uint32 provided by user to PatternFlowPppAddressCounter - SetStart(value uint32) PatternFlowPppAddressCounter - // HasStart checks if Start has been set in PatternFlowPppAddressCounter + // SetStart assigns uint32 provided by user to PatternFlowIpv4TosDelayCounter + SetStart(value uint32) PatternFlowIpv4TosDelayCounter + // HasStart checks if Start has been set in PatternFlowIpv4TosDelayCounter HasStart() bool - // Step returns uint32, set in PatternFlowPppAddressCounter. + // Step returns uint32, set in PatternFlowIpv4TosDelayCounter. Step() uint32 - // SetStep assigns uint32 provided by user to PatternFlowPppAddressCounter - SetStep(value uint32) PatternFlowPppAddressCounter - // HasStep checks if Step has been set in PatternFlowPppAddressCounter + // SetStep assigns uint32 provided by user to PatternFlowIpv4TosDelayCounter + SetStep(value uint32) PatternFlowIpv4TosDelayCounter + // HasStep checks if Step has been set in PatternFlowIpv4TosDelayCounter HasStep() bool - // Count returns uint32, set in PatternFlowPppAddressCounter. + // Count returns uint32, set in PatternFlowIpv4TosDelayCounter. Count() uint32 - // SetCount assigns uint32 provided by user to PatternFlowPppAddressCounter - SetCount(value uint32) PatternFlowPppAddressCounter - // HasCount checks if Count has been set in PatternFlowPppAddressCounter + // SetCount assigns uint32 provided by user to PatternFlowIpv4TosDelayCounter + SetCount(value uint32) PatternFlowIpv4TosDelayCounter + // HasCount checks if Count has been set in PatternFlowIpv4TosDelayCounter HasCount() bool } // description is TBD // Start returns a uint32 -func (obj *patternFlowPppAddressCounter) Start() uint32 { +func (obj *patternFlowIpv4TosDelayCounter) Start() uint32 { return *obj.obj.Start @@ -264728,13 +310862,13 @@ func (obj *patternFlowPppAddressCounter) Start() uint32 { // description is TBD // Start returns a uint32 -func (obj *patternFlowPppAddressCounter) HasStart() bool { +func (obj *patternFlowIpv4TosDelayCounter) HasStart() bool { return obj.obj.Start != nil } // description is TBD -// SetStart sets the uint32 value in the PatternFlowPppAddressCounter object -func (obj *patternFlowPppAddressCounter) SetStart(value uint32) PatternFlowPppAddressCounter { +// SetStart sets the uint32 value in the PatternFlowIpv4TosDelayCounter object +func (obj *patternFlowIpv4TosDelayCounter) SetStart(value uint32) PatternFlowIpv4TosDelayCounter { obj.obj.Start = &value return obj @@ -264742,7 +310876,7 @@ func (obj *patternFlowPppAddressCounter) SetStart(value uint32) PatternFlowPppAd // description is TBD // Step returns a uint32 -func (obj *patternFlowPppAddressCounter) Step() uint32 { +func (obj *patternFlowIpv4TosDelayCounter) Step() uint32 { return *obj.obj.Step @@ -264750,13 +310884,13 @@ func (obj *patternFlowPppAddressCounter) Step() uint32 { // description is TBD // Step returns a uint32 -func (obj *patternFlowPppAddressCounter) HasStep() bool { +func (obj *patternFlowIpv4TosDelayCounter) HasStep() bool { return obj.obj.Step != nil } // description is TBD -// SetStep sets the uint32 value in the PatternFlowPppAddressCounter object -func (obj *patternFlowPppAddressCounter) SetStep(value uint32) PatternFlowPppAddressCounter { +// SetStep sets the uint32 value in the PatternFlowIpv4TosDelayCounter object +func (obj *patternFlowIpv4TosDelayCounter) SetStep(value uint32) PatternFlowIpv4TosDelayCounter { obj.obj.Step = &value return obj @@ -264764,7 +310898,7 @@ func (obj *patternFlowPppAddressCounter) SetStep(value uint32) PatternFlowPppAdd // description is TBD // Count returns a uint32 -func (obj *patternFlowPppAddressCounter) Count() uint32 { +func (obj *patternFlowIpv4TosDelayCounter) Count() uint32 { return *obj.obj.Count @@ -264772,58 +310906,58 @@ func (obj *patternFlowPppAddressCounter) Count() uint32 { // description is TBD // Count returns a uint32 -func (obj *patternFlowPppAddressCounter) HasCount() bool { +func (obj *patternFlowIpv4TosDelayCounter) HasCount() bool { return obj.obj.Count != nil } // description is TBD -// SetCount sets the uint32 value in the PatternFlowPppAddressCounter object -func (obj *patternFlowPppAddressCounter) SetCount(value uint32) PatternFlowPppAddressCounter { +// SetCount sets the uint32 value in the PatternFlowIpv4TosDelayCounter object +func (obj *patternFlowIpv4TosDelayCounter) SetCount(value uint32) PatternFlowIpv4TosDelayCounter { obj.obj.Count = &value return obj } -func (obj *patternFlowPppAddressCounter) validateObj(vObj *validation, set_default bool) { +func (obj *patternFlowIpv4TosDelayCounter) validateObj(vObj *validation, set_default bool) { if set_default { obj.setDefault() } if obj.obj.Start != nil { - if *obj.obj.Start > 255 { + if *obj.obj.Start > 1 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowPppAddressCounter.Start <= 255 but Got %d", *obj.obj.Start)) + fmt.Sprintf("0 <= PatternFlowIpv4TosDelayCounter.Start <= 1 but Got %d", *obj.obj.Start)) } } if obj.obj.Step != nil { - if *obj.obj.Step > 255 { + if *obj.obj.Step > 1 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowPppAddressCounter.Step <= 255 but Got %d", *obj.obj.Step)) + fmt.Sprintf("0 <= PatternFlowIpv4TosDelayCounter.Step <= 1 but Got %d", *obj.obj.Step)) } } if obj.obj.Count != nil { - if *obj.obj.Count > 255 { + if *obj.obj.Count > 1 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowPppAddressCounter.Count <= 255 but Got %d", *obj.obj.Count)) + fmt.Sprintf("0 <= PatternFlowIpv4TosDelayCounter.Count <= 1 but Got %d", *obj.obj.Count)) } } } -func (obj *patternFlowPppAddressCounter) setDefault() { +func (obj *patternFlowIpv4TosDelayCounter) setDefault() { if obj.obj.Start == nil { - obj.SetStart(255) + obj.SetStart(0) } if obj.obj.Step == nil { obj.SetStep(1) @@ -264834,29 +310968,29 @@ func (obj *patternFlowPppAddressCounter) setDefault() { } -// ***** PatternFlowPppAddressMetricTag ***** -type patternFlowPppAddressMetricTag struct { +// ***** PatternFlowIpv4TosDelayMetricTag ***** +type patternFlowIpv4TosDelayMetricTag struct { validation - obj *otg.PatternFlowPppAddressMetricTag + obj *otg.PatternFlowIpv4TosDelayMetricTag } -func NewPatternFlowPppAddressMetricTag() PatternFlowPppAddressMetricTag { - obj := patternFlowPppAddressMetricTag{obj: &otg.PatternFlowPppAddressMetricTag{}} +func NewPatternFlowIpv4TosDelayMetricTag() PatternFlowIpv4TosDelayMetricTag { + obj := patternFlowIpv4TosDelayMetricTag{obj: &otg.PatternFlowIpv4TosDelayMetricTag{}} obj.setDefault() return &obj } -func (obj *patternFlowPppAddressMetricTag) Msg() *otg.PatternFlowPppAddressMetricTag { +func (obj *patternFlowIpv4TosDelayMetricTag) Msg() *otg.PatternFlowIpv4TosDelayMetricTag { return obj.obj } -func (obj *patternFlowPppAddressMetricTag) SetMsg(msg *otg.PatternFlowPppAddressMetricTag) PatternFlowPppAddressMetricTag { +func (obj *patternFlowIpv4TosDelayMetricTag) SetMsg(msg *otg.PatternFlowIpv4TosDelayMetricTag) PatternFlowIpv4TosDelayMetricTag { proto.Merge(obj.obj, msg) return obj } -func (obj *patternFlowPppAddressMetricTag) ToProto() (*otg.PatternFlowPppAddressMetricTag, error) { +func (obj *patternFlowIpv4TosDelayMetricTag) ToProto() (*otg.PatternFlowIpv4TosDelayMetricTag, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -264864,7 +310998,7 @@ func (obj *patternFlowPppAddressMetricTag) ToProto() (*otg.PatternFlowPppAddress return obj.Msg(), nil } -func (obj *patternFlowPppAddressMetricTag) FromProto(msg *otg.PatternFlowPppAddressMetricTag) (PatternFlowPppAddressMetricTag, error) { +func (obj *patternFlowIpv4TosDelayMetricTag) FromProto(msg *otg.PatternFlowIpv4TosDelayMetricTag) (PatternFlowIpv4TosDelayMetricTag, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -264873,7 +311007,7 @@ func (obj *patternFlowPppAddressMetricTag) FromProto(msg *otg.PatternFlowPppAddr return newObj, nil } -func (obj *patternFlowPppAddressMetricTag) ToPbText() (string, error) { +func (obj *patternFlowIpv4TosDelayMetricTag) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -264885,7 +311019,7 @@ func (obj *patternFlowPppAddressMetricTag) ToPbText() (string, error) { return string(protoMarshal), nil } -func (obj *patternFlowPppAddressMetricTag) FromPbText(value string) error { +func (obj *patternFlowIpv4TosDelayMetricTag) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj @@ -264898,7 +311032,7 @@ func (obj *patternFlowPppAddressMetricTag) FromPbText(value string) error { return retObj } -func (obj *patternFlowPppAddressMetricTag) ToYaml() (string, error) { +func (obj *patternFlowIpv4TosDelayMetricTag) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -264919,7 +311053,7 @@ func (obj *patternFlowPppAddressMetricTag) ToYaml() (string, error) { return string(data), nil } -func (obj *patternFlowPppAddressMetricTag) FromYaml(value string) error { +func (obj *patternFlowIpv4TosDelayMetricTag) FromYaml(value string) error { if value == "" { value = "{}" } @@ -264944,7 +311078,7 @@ func (obj *patternFlowPppAddressMetricTag) FromYaml(value string) error { return nil } -func (obj *patternFlowPppAddressMetricTag) ToJson() (string, error) { +func (obj *patternFlowIpv4TosDelayMetricTag) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -264962,7 +311096,7 @@ func (obj *patternFlowPppAddressMetricTag) ToJson() (string, error) { return string(data), nil } -func (obj *patternFlowPppAddressMetricTag) FromJson(value string) error { +func (obj *patternFlowIpv4TosDelayMetricTag) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -264983,19 +311117,19 @@ func (obj *patternFlowPppAddressMetricTag) FromJson(value string) error { return nil } -func (obj *patternFlowPppAddressMetricTag) validateToAndFrom() error { +func (obj *patternFlowIpv4TosDelayMetricTag) validateToAndFrom() error { // emptyVars() obj.validateObj(&obj.validation, true) return obj.validationResult() } -func (obj *patternFlowPppAddressMetricTag) Validate() error { +func (obj *patternFlowIpv4TosDelayMetricTag) Validate() error { // emptyVars() obj.validateObj(&obj.validation, false) return obj.validationResult() } -func (obj *patternFlowPppAddressMetricTag) String() string { +func (obj *patternFlowIpv4TosDelayMetricTag) String() string { str, err := obj.ToYaml() if err != nil { return err.Error() @@ -265003,12 +311137,12 @@ func (obj *patternFlowPppAddressMetricTag) String() string { return str } -func (obj *patternFlowPppAddressMetricTag) Clone() (PatternFlowPppAddressMetricTag, error) { +func (obj *patternFlowIpv4TosDelayMetricTag) Clone() (PatternFlowIpv4TosDelayMetricTag, error) { vErr := obj.Validate() if vErr != nil { return nil, vErr } - newObj := NewPatternFlowPppAddressMetricTag() + newObj := NewPatternFlowIpv4TosDelayMetricTag() data, err := proto.Marshal(obj.Msg()) if err != nil { return nil, err @@ -265020,69 +311154,69 @@ func (obj *patternFlowPppAddressMetricTag) Clone() (PatternFlowPppAddressMetricT return newObj, nil } -// PatternFlowPppAddressMetricTag is metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. -type PatternFlowPppAddressMetricTag interface { +// PatternFlowIpv4TosDelayMetricTag is metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. +type PatternFlowIpv4TosDelayMetricTag interface { Validation - // Msg marshals PatternFlowPppAddressMetricTag to protobuf object *otg.PatternFlowPppAddressMetricTag + // Msg marshals PatternFlowIpv4TosDelayMetricTag to protobuf object *otg.PatternFlowIpv4TosDelayMetricTag // and doesn't set defaults - Msg() *otg.PatternFlowPppAddressMetricTag - // SetMsg unmarshals PatternFlowPppAddressMetricTag from protobuf object *otg.PatternFlowPppAddressMetricTag + Msg() *otg.PatternFlowIpv4TosDelayMetricTag + // SetMsg unmarshals PatternFlowIpv4TosDelayMetricTag from protobuf object *otg.PatternFlowIpv4TosDelayMetricTag // and doesn't set defaults - SetMsg(*otg.PatternFlowPppAddressMetricTag) PatternFlowPppAddressMetricTag - // ToProto marshals PatternFlowPppAddressMetricTag to protobuf object *otg.PatternFlowPppAddressMetricTag - ToProto() (*otg.PatternFlowPppAddressMetricTag, error) - // ToPbText marshals PatternFlowPppAddressMetricTag to protobuf text + SetMsg(*otg.PatternFlowIpv4TosDelayMetricTag) PatternFlowIpv4TosDelayMetricTag + // ToProto marshals PatternFlowIpv4TosDelayMetricTag to protobuf object *otg.PatternFlowIpv4TosDelayMetricTag + ToProto() (*otg.PatternFlowIpv4TosDelayMetricTag, error) + // ToPbText marshals PatternFlowIpv4TosDelayMetricTag to protobuf text ToPbText() (string, error) - // ToYaml marshals PatternFlowPppAddressMetricTag to YAML text + // ToYaml marshals PatternFlowIpv4TosDelayMetricTag to YAML text ToYaml() (string, error) - // ToJson marshals PatternFlowPppAddressMetricTag to JSON text + // ToJson marshals PatternFlowIpv4TosDelayMetricTag to JSON text ToJson() (string, error) - // FromProto unmarshals PatternFlowPppAddressMetricTag from protobuf object *otg.PatternFlowPppAddressMetricTag - FromProto(msg *otg.PatternFlowPppAddressMetricTag) (PatternFlowPppAddressMetricTag, error) - // FromPbText unmarshals PatternFlowPppAddressMetricTag from protobuf text + // FromProto unmarshals PatternFlowIpv4TosDelayMetricTag from protobuf object *otg.PatternFlowIpv4TosDelayMetricTag + FromProto(msg *otg.PatternFlowIpv4TosDelayMetricTag) (PatternFlowIpv4TosDelayMetricTag, error) + // FromPbText unmarshals PatternFlowIpv4TosDelayMetricTag from protobuf text FromPbText(value string) error - // FromYaml unmarshals PatternFlowPppAddressMetricTag from YAML text + // FromYaml unmarshals PatternFlowIpv4TosDelayMetricTag from YAML text FromYaml(value string) error - // FromJson unmarshals PatternFlowPppAddressMetricTag from JSON text + // FromJson unmarshals PatternFlowIpv4TosDelayMetricTag from JSON text FromJson(value string) error - // Validate validates PatternFlowPppAddressMetricTag + // Validate validates PatternFlowIpv4TosDelayMetricTag Validate() error // A stringer function String() string // Clones the object - Clone() (PatternFlowPppAddressMetricTag, error) + Clone() (PatternFlowIpv4TosDelayMetricTag, error) validateToAndFrom() error validateObj(vObj *validation, set_default bool) setDefault() - // Name returns string, set in PatternFlowPppAddressMetricTag. + // Name returns string, set in PatternFlowIpv4TosDelayMetricTag. Name() string - // SetName assigns string provided by user to PatternFlowPppAddressMetricTag - SetName(value string) PatternFlowPppAddressMetricTag - // Offset returns uint32, set in PatternFlowPppAddressMetricTag. + // SetName assigns string provided by user to PatternFlowIpv4TosDelayMetricTag + SetName(value string) PatternFlowIpv4TosDelayMetricTag + // Offset returns uint32, set in PatternFlowIpv4TosDelayMetricTag. Offset() uint32 - // SetOffset assigns uint32 provided by user to PatternFlowPppAddressMetricTag - SetOffset(value uint32) PatternFlowPppAddressMetricTag - // HasOffset checks if Offset has been set in PatternFlowPppAddressMetricTag + // SetOffset assigns uint32 provided by user to PatternFlowIpv4TosDelayMetricTag + SetOffset(value uint32) PatternFlowIpv4TosDelayMetricTag + // HasOffset checks if Offset has been set in PatternFlowIpv4TosDelayMetricTag HasOffset() bool - // Length returns uint32, set in PatternFlowPppAddressMetricTag. + // Length returns uint32, set in PatternFlowIpv4TosDelayMetricTag. Length() uint32 - // SetLength assigns uint32 provided by user to PatternFlowPppAddressMetricTag - SetLength(value uint32) PatternFlowPppAddressMetricTag - // HasLength checks if Length has been set in PatternFlowPppAddressMetricTag + // SetLength assigns uint32 provided by user to PatternFlowIpv4TosDelayMetricTag + SetLength(value uint32) PatternFlowIpv4TosDelayMetricTag + // HasLength checks if Length has been set in PatternFlowIpv4TosDelayMetricTag HasLength() bool } // Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field // Name returns a string -func (obj *patternFlowPppAddressMetricTag) Name() string { +func (obj *patternFlowIpv4TosDelayMetricTag) Name() string { return *obj.obj.Name } // Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field -// SetName sets the string value in the PatternFlowPppAddressMetricTag object -func (obj *patternFlowPppAddressMetricTag) SetName(value string) PatternFlowPppAddressMetricTag { +// SetName sets the string value in the PatternFlowIpv4TosDelayMetricTag object +func (obj *patternFlowIpv4TosDelayMetricTag) SetName(value string) PatternFlowIpv4TosDelayMetricTag { obj.obj.Name = &value return obj @@ -265090,7 +311224,7 @@ func (obj *patternFlowPppAddressMetricTag) SetName(value string) PatternFlowPppA // Offset in bits relative to start of corresponding header field // Offset returns a uint32 -func (obj *patternFlowPppAddressMetricTag) Offset() uint32 { +func (obj *patternFlowIpv4TosDelayMetricTag) Offset() uint32 { return *obj.obj.Offset @@ -265098,13 +311232,13 @@ func (obj *patternFlowPppAddressMetricTag) Offset() uint32 { // Offset in bits relative to start of corresponding header field // Offset returns a uint32 -func (obj *patternFlowPppAddressMetricTag) HasOffset() bool { +func (obj *patternFlowIpv4TosDelayMetricTag) HasOffset() bool { return obj.obj.Offset != nil } // Offset in bits relative to start of corresponding header field -// SetOffset sets the uint32 value in the PatternFlowPppAddressMetricTag object -func (obj *patternFlowPppAddressMetricTag) SetOffset(value uint32) PatternFlowPppAddressMetricTag { +// SetOffset sets the uint32 value in the PatternFlowIpv4TosDelayMetricTag object +func (obj *patternFlowIpv4TosDelayMetricTag) SetOffset(value uint32) PatternFlowIpv4TosDelayMetricTag { obj.obj.Offset = &value return obj @@ -265112,7 +311246,7 @@ func (obj *patternFlowPppAddressMetricTag) SetOffset(value uint32) PatternFlowPp // Number of bits to track for metrics starting from configured offset of corresponding header field // Length returns a uint32 -func (obj *patternFlowPppAddressMetricTag) Length() uint32 { +func (obj *patternFlowIpv4TosDelayMetricTag) Length() uint32 { return *obj.obj.Length @@ -265120,83 +311254,83 @@ func (obj *patternFlowPppAddressMetricTag) Length() uint32 { // Number of bits to track for metrics starting from configured offset of corresponding header field // Length returns a uint32 -func (obj *patternFlowPppAddressMetricTag) HasLength() bool { +func (obj *patternFlowIpv4TosDelayMetricTag) HasLength() bool { return obj.obj.Length != nil } // Number of bits to track for metrics starting from configured offset of corresponding header field -// SetLength sets the uint32 value in the PatternFlowPppAddressMetricTag object -func (obj *patternFlowPppAddressMetricTag) SetLength(value uint32) PatternFlowPppAddressMetricTag { +// SetLength sets the uint32 value in the PatternFlowIpv4TosDelayMetricTag object +func (obj *patternFlowIpv4TosDelayMetricTag) SetLength(value uint32) PatternFlowIpv4TosDelayMetricTag { obj.obj.Length = &value return obj } -func (obj *patternFlowPppAddressMetricTag) validateObj(vObj *validation, set_default bool) { +func (obj *patternFlowIpv4TosDelayMetricTag) validateObj(vObj *validation, set_default bool) { if set_default { obj.setDefault() } // Name is required if obj.obj.Name == nil { - vObj.validationErrors = append(vObj.validationErrors, "Name is required field on interface PatternFlowPppAddressMetricTag") + vObj.validationErrors = append(vObj.validationErrors, "Name is required field on interface PatternFlowIpv4TosDelayMetricTag") } if obj.obj.Offset != nil { - if *obj.obj.Offset > 7 { + if *obj.obj.Offset > 0 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowPppAddressMetricTag.Offset <= 7 but Got %d", *obj.obj.Offset)) + fmt.Sprintf("0 <= PatternFlowIpv4TosDelayMetricTag.Offset <= 0 but Got %d", *obj.obj.Offset)) } } if obj.obj.Length != nil { - if *obj.obj.Length < 1 || *obj.obj.Length > 8 { + if *obj.obj.Length < 1 || *obj.obj.Length > 1 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("1 <= PatternFlowPppAddressMetricTag.Length <= 8 but Got %d", *obj.obj.Length)) + fmt.Sprintf("1 <= PatternFlowIpv4TosDelayMetricTag.Length <= 1 but Got %d", *obj.obj.Length)) } } } -func (obj *patternFlowPppAddressMetricTag) setDefault() { +func (obj *patternFlowIpv4TosDelayMetricTag) setDefault() { if obj.obj.Offset == nil { obj.SetOffset(0) } if obj.obj.Length == nil { - obj.SetLength(8) + obj.SetLength(1) } } -// ***** PatternFlowPppControlCounter ***** -type patternFlowPppControlCounter struct { +// ***** PatternFlowIpv4TosThroughputCounter ***** +type patternFlowIpv4TosThroughputCounter struct { validation - obj *otg.PatternFlowPppControlCounter + obj *otg.PatternFlowIpv4TosThroughputCounter } -func NewPatternFlowPppControlCounter() PatternFlowPppControlCounter { - obj := patternFlowPppControlCounter{obj: &otg.PatternFlowPppControlCounter{}} +func NewPatternFlowIpv4TosThroughputCounter() PatternFlowIpv4TosThroughputCounter { + obj := patternFlowIpv4TosThroughputCounter{obj: &otg.PatternFlowIpv4TosThroughputCounter{}} obj.setDefault() return &obj } -func (obj *patternFlowPppControlCounter) Msg() *otg.PatternFlowPppControlCounter { +func (obj *patternFlowIpv4TosThroughputCounter) Msg() *otg.PatternFlowIpv4TosThroughputCounter { return obj.obj } -func (obj *patternFlowPppControlCounter) SetMsg(msg *otg.PatternFlowPppControlCounter) PatternFlowPppControlCounter { +func (obj *patternFlowIpv4TosThroughputCounter) SetMsg(msg *otg.PatternFlowIpv4TosThroughputCounter) PatternFlowIpv4TosThroughputCounter { proto.Merge(obj.obj, msg) return obj } -func (obj *patternFlowPppControlCounter) ToProto() (*otg.PatternFlowPppControlCounter, error) { +func (obj *patternFlowIpv4TosThroughputCounter) ToProto() (*otg.PatternFlowIpv4TosThroughputCounter, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -265204,7 +311338,7 @@ func (obj *patternFlowPppControlCounter) ToProto() (*otg.PatternFlowPppControlCo return obj.Msg(), nil } -func (obj *patternFlowPppControlCounter) FromProto(msg *otg.PatternFlowPppControlCounter) (PatternFlowPppControlCounter, error) { +func (obj *patternFlowIpv4TosThroughputCounter) FromProto(msg *otg.PatternFlowIpv4TosThroughputCounter) (PatternFlowIpv4TosThroughputCounter, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -265213,7 +311347,7 @@ func (obj *patternFlowPppControlCounter) FromProto(msg *otg.PatternFlowPppContro return newObj, nil } -func (obj *patternFlowPppControlCounter) ToPbText() (string, error) { +func (obj *patternFlowIpv4TosThroughputCounter) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -265225,7 +311359,7 @@ func (obj *patternFlowPppControlCounter) ToPbText() (string, error) { return string(protoMarshal), nil } -func (obj *patternFlowPppControlCounter) FromPbText(value string) error { +func (obj *patternFlowIpv4TosThroughputCounter) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj @@ -265238,7 +311372,7 @@ func (obj *patternFlowPppControlCounter) FromPbText(value string) error { return retObj } -func (obj *patternFlowPppControlCounter) ToYaml() (string, error) { +func (obj *patternFlowIpv4TosThroughputCounter) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -265259,7 +311393,7 @@ func (obj *patternFlowPppControlCounter) ToYaml() (string, error) { return string(data), nil } -func (obj *patternFlowPppControlCounter) FromYaml(value string) error { +func (obj *patternFlowIpv4TosThroughputCounter) FromYaml(value string) error { if value == "" { value = "{}" } @@ -265284,7 +311418,7 @@ func (obj *patternFlowPppControlCounter) FromYaml(value string) error { return nil } -func (obj *patternFlowPppControlCounter) ToJson() (string, error) { +func (obj *patternFlowIpv4TosThroughputCounter) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -265302,7 +311436,7 @@ func (obj *patternFlowPppControlCounter) ToJson() (string, error) { return string(data), nil } -func (obj *patternFlowPppControlCounter) FromJson(value string) error { +func (obj *patternFlowIpv4TosThroughputCounter) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -265323,19 +311457,19 @@ func (obj *patternFlowPppControlCounter) FromJson(value string) error { return nil } -func (obj *patternFlowPppControlCounter) validateToAndFrom() error { +func (obj *patternFlowIpv4TosThroughputCounter) validateToAndFrom() error { // emptyVars() obj.validateObj(&obj.validation, true) return obj.validationResult() } -func (obj *patternFlowPppControlCounter) Validate() error { +func (obj *patternFlowIpv4TosThroughputCounter) Validate() error { // emptyVars() obj.validateObj(&obj.validation, false) return obj.validationResult() } -func (obj *patternFlowPppControlCounter) String() string { +func (obj *patternFlowIpv4TosThroughputCounter) String() string { str, err := obj.ToYaml() if err != nil { return err.Error() @@ -265343,12 +311477,12 @@ func (obj *patternFlowPppControlCounter) String() string { return str } -func (obj *patternFlowPppControlCounter) Clone() (PatternFlowPppControlCounter, error) { +func (obj *patternFlowIpv4TosThroughputCounter) Clone() (PatternFlowIpv4TosThroughputCounter, error) { vErr := obj.Validate() if vErr != nil { return nil, vErr } - newObj := NewPatternFlowPppControlCounter() + newObj := NewPatternFlowIpv4TosThroughputCounter() data, err := proto.Marshal(obj.Msg()) if err != nil { return nil, err @@ -265360,63 +311494,63 @@ func (obj *patternFlowPppControlCounter) Clone() (PatternFlowPppControlCounter, return newObj, nil } -// PatternFlowPppControlCounter is integer counter pattern -type PatternFlowPppControlCounter interface { +// PatternFlowIpv4TosThroughputCounter is integer counter pattern +type PatternFlowIpv4TosThroughputCounter interface { Validation - // Msg marshals PatternFlowPppControlCounter to protobuf object *otg.PatternFlowPppControlCounter + // Msg marshals PatternFlowIpv4TosThroughputCounter to protobuf object *otg.PatternFlowIpv4TosThroughputCounter // and doesn't set defaults - Msg() *otg.PatternFlowPppControlCounter - // SetMsg unmarshals PatternFlowPppControlCounter from protobuf object *otg.PatternFlowPppControlCounter + Msg() *otg.PatternFlowIpv4TosThroughputCounter + // SetMsg unmarshals PatternFlowIpv4TosThroughputCounter from protobuf object *otg.PatternFlowIpv4TosThroughputCounter // and doesn't set defaults - SetMsg(*otg.PatternFlowPppControlCounter) PatternFlowPppControlCounter - // ToProto marshals PatternFlowPppControlCounter to protobuf object *otg.PatternFlowPppControlCounter - ToProto() (*otg.PatternFlowPppControlCounter, error) - // ToPbText marshals PatternFlowPppControlCounter to protobuf text + SetMsg(*otg.PatternFlowIpv4TosThroughputCounter) PatternFlowIpv4TosThroughputCounter + // ToProto marshals PatternFlowIpv4TosThroughputCounter to protobuf object *otg.PatternFlowIpv4TosThroughputCounter + ToProto() (*otg.PatternFlowIpv4TosThroughputCounter, error) + // ToPbText marshals PatternFlowIpv4TosThroughputCounter to protobuf text ToPbText() (string, error) - // ToYaml marshals PatternFlowPppControlCounter to YAML text + // ToYaml marshals PatternFlowIpv4TosThroughputCounter to YAML text ToYaml() (string, error) - // ToJson marshals PatternFlowPppControlCounter to JSON text + // ToJson marshals PatternFlowIpv4TosThroughputCounter to JSON text ToJson() (string, error) - // FromProto unmarshals PatternFlowPppControlCounter from protobuf object *otg.PatternFlowPppControlCounter - FromProto(msg *otg.PatternFlowPppControlCounter) (PatternFlowPppControlCounter, error) - // FromPbText unmarshals PatternFlowPppControlCounter from protobuf text + // FromProto unmarshals PatternFlowIpv4TosThroughputCounter from protobuf object *otg.PatternFlowIpv4TosThroughputCounter + FromProto(msg *otg.PatternFlowIpv4TosThroughputCounter) (PatternFlowIpv4TosThroughputCounter, error) + // FromPbText unmarshals PatternFlowIpv4TosThroughputCounter from protobuf text FromPbText(value string) error - // FromYaml unmarshals PatternFlowPppControlCounter from YAML text + // FromYaml unmarshals PatternFlowIpv4TosThroughputCounter from YAML text FromYaml(value string) error - // FromJson unmarshals PatternFlowPppControlCounter from JSON text + // FromJson unmarshals PatternFlowIpv4TosThroughputCounter from JSON text FromJson(value string) error - // Validate validates PatternFlowPppControlCounter + // Validate validates PatternFlowIpv4TosThroughputCounter Validate() error // A stringer function String() string // Clones the object - Clone() (PatternFlowPppControlCounter, error) + Clone() (PatternFlowIpv4TosThroughputCounter, error) validateToAndFrom() error validateObj(vObj *validation, set_default bool) setDefault() - // Start returns uint32, set in PatternFlowPppControlCounter. + // Start returns uint32, set in PatternFlowIpv4TosThroughputCounter. Start() uint32 - // SetStart assigns uint32 provided by user to PatternFlowPppControlCounter - SetStart(value uint32) PatternFlowPppControlCounter - // HasStart checks if Start has been set in PatternFlowPppControlCounter + // SetStart assigns uint32 provided by user to PatternFlowIpv4TosThroughputCounter + SetStart(value uint32) PatternFlowIpv4TosThroughputCounter + // HasStart checks if Start has been set in PatternFlowIpv4TosThroughputCounter HasStart() bool - // Step returns uint32, set in PatternFlowPppControlCounter. + // Step returns uint32, set in PatternFlowIpv4TosThroughputCounter. Step() uint32 - // SetStep assigns uint32 provided by user to PatternFlowPppControlCounter - SetStep(value uint32) PatternFlowPppControlCounter - // HasStep checks if Step has been set in PatternFlowPppControlCounter + // SetStep assigns uint32 provided by user to PatternFlowIpv4TosThroughputCounter + SetStep(value uint32) PatternFlowIpv4TosThroughputCounter + // HasStep checks if Step has been set in PatternFlowIpv4TosThroughputCounter HasStep() bool - // Count returns uint32, set in PatternFlowPppControlCounter. + // Count returns uint32, set in PatternFlowIpv4TosThroughputCounter. Count() uint32 - // SetCount assigns uint32 provided by user to PatternFlowPppControlCounter - SetCount(value uint32) PatternFlowPppControlCounter - // HasCount checks if Count has been set in PatternFlowPppControlCounter + // SetCount assigns uint32 provided by user to PatternFlowIpv4TosThroughputCounter + SetCount(value uint32) PatternFlowIpv4TosThroughputCounter + // HasCount checks if Count has been set in PatternFlowIpv4TosThroughputCounter HasCount() bool } // description is TBD // Start returns a uint32 -func (obj *patternFlowPppControlCounter) Start() uint32 { +func (obj *patternFlowIpv4TosThroughputCounter) Start() uint32 { return *obj.obj.Start @@ -265424,13 +311558,13 @@ func (obj *patternFlowPppControlCounter) Start() uint32 { // description is TBD // Start returns a uint32 -func (obj *patternFlowPppControlCounter) HasStart() bool { +func (obj *patternFlowIpv4TosThroughputCounter) HasStart() bool { return obj.obj.Start != nil } // description is TBD -// SetStart sets the uint32 value in the PatternFlowPppControlCounter object -func (obj *patternFlowPppControlCounter) SetStart(value uint32) PatternFlowPppControlCounter { +// SetStart sets the uint32 value in the PatternFlowIpv4TosThroughputCounter object +func (obj *patternFlowIpv4TosThroughputCounter) SetStart(value uint32) PatternFlowIpv4TosThroughputCounter { obj.obj.Start = &value return obj @@ -265438,7 +311572,7 @@ func (obj *patternFlowPppControlCounter) SetStart(value uint32) PatternFlowPppCo // description is TBD // Step returns a uint32 -func (obj *patternFlowPppControlCounter) Step() uint32 { +func (obj *patternFlowIpv4TosThroughputCounter) Step() uint32 { return *obj.obj.Step @@ -265446,13 +311580,13 @@ func (obj *patternFlowPppControlCounter) Step() uint32 { // description is TBD // Step returns a uint32 -func (obj *patternFlowPppControlCounter) HasStep() bool { +func (obj *patternFlowIpv4TosThroughputCounter) HasStep() bool { return obj.obj.Step != nil } // description is TBD -// SetStep sets the uint32 value in the PatternFlowPppControlCounter object -func (obj *patternFlowPppControlCounter) SetStep(value uint32) PatternFlowPppControlCounter { +// SetStep sets the uint32 value in the PatternFlowIpv4TosThroughputCounter object +func (obj *patternFlowIpv4TosThroughputCounter) SetStep(value uint32) PatternFlowIpv4TosThroughputCounter { obj.obj.Step = &value return obj @@ -265460,7 +311594,7 @@ func (obj *patternFlowPppControlCounter) SetStep(value uint32) PatternFlowPppCon // description is TBD // Count returns a uint32 -func (obj *patternFlowPppControlCounter) Count() uint32 { +func (obj *patternFlowIpv4TosThroughputCounter) Count() uint32 { return *obj.obj.Count @@ -265468,58 +311602,58 @@ func (obj *patternFlowPppControlCounter) Count() uint32 { // description is TBD // Count returns a uint32 -func (obj *patternFlowPppControlCounter) HasCount() bool { +func (obj *patternFlowIpv4TosThroughputCounter) HasCount() bool { return obj.obj.Count != nil } // description is TBD -// SetCount sets the uint32 value in the PatternFlowPppControlCounter object -func (obj *patternFlowPppControlCounter) SetCount(value uint32) PatternFlowPppControlCounter { +// SetCount sets the uint32 value in the PatternFlowIpv4TosThroughputCounter object +func (obj *patternFlowIpv4TosThroughputCounter) SetCount(value uint32) PatternFlowIpv4TosThroughputCounter { obj.obj.Count = &value return obj } -func (obj *patternFlowPppControlCounter) validateObj(vObj *validation, set_default bool) { +func (obj *patternFlowIpv4TosThroughputCounter) validateObj(vObj *validation, set_default bool) { if set_default { obj.setDefault() } if obj.obj.Start != nil { - if *obj.obj.Start > 255 { + if *obj.obj.Start > 1 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowPppControlCounter.Start <= 255 but Got %d", *obj.obj.Start)) + fmt.Sprintf("0 <= PatternFlowIpv4TosThroughputCounter.Start <= 1 but Got %d", *obj.obj.Start)) } } if obj.obj.Step != nil { - if *obj.obj.Step > 255 { + if *obj.obj.Step > 1 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowPppControlCounter.Step <= 255 but Got %d", *obj.obj.Step)) + fmt.Sprintf("0 <= PatternFlowIpv4TosThroughputCounter.Step <= 1 but Got %d", *obj.obj.Step)) } } if obj.obj.Count != nil { - if *obj.obj.Count > 255 { + if *obj.obj.Count > 1 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowPppControlCounter.Count <= 255 but Got %d", *obj.obj.Count)) + fmt.Sprintf("0 <= PatternFlowIpv4TosThroughputCounter.Count <= 1 but Got %d", *obj.obj.Count)) } } } -func (obj *patternFlowPppControlCounter) setDefault() { +func (obj *patternFlowIpv4TosThroughputCounter) setDefault() { if obj.obj.Start == nil { - obj.SetStart(3) + obj.SetStart(0) } if obj.obj.Step == nil { obj.SetStep(1) @@ -265530,29 +311664,29 @@ func (obj *patternFlowPppControlCounter) setDefault() { } -// ***** PatternFlowPppControlMetricTag ***** -type patternFlowPppControlMetricTag struct { +// ***** PatternFlowIpv4TosThroughputMetricTag ***** +type patternFlowIpv4TosThroughputMetricTag struct { validation - obj *otg.PatternFlowPppControlMetricTag + obj *otg.PatternFlowIpv4TosThroughputMetricTag } -func NewPatternFlowPppControlMetricTag() PatternFlowPppControlMetricTag { - obj := patternFlowPppControlMetricTag{obj: &otg.PatternFlowPppControlMetricTag{}} +func NewPatternFlowIpv4TosThroughputMetricTag() PatternFlowIpv4TosThroughputMetricTag { + obj := patternFlowIpv4TosThroughputMetricTag{obj: &otg.PatternFlowIpv4TosThroughputMetricTag{}} obj.setDefault() return &obj } -func (obj *patternFlowPppControlMetricTag) Msg() *otg.PatternFlowPppControlMetricTag { +func (obj *patternFlowIpv4TosThroughputMetricTag) Msg() *otg.PatternFlowIpv4TosThroughputMetricTag { return obj.obj } -func (obj *patternFlowPppControlMetricTag) SetMsg(msg *otg.PatternFlowPppControlMetricTag) PatternFlowPppControlMetricTag { +func (obj *patternFlowIpv4TosThroughputMetricTag) SetMsg(msg *otg.PatternFlowIpv4TosThroughputMetricTag) PatternFlowIpv4TosThroughputMetricTag { proto.Merge(obj.obj, msg) return obj } -func (obj *patternFlowPppControlMetricTag) ToProto() (*otg.PatternFlowPppControlMetricTag, error) { +func (obj *patternFlowIpv4TosThroughputMetricTag) ToProto() (*otg.PatternFlowIpv4TosThroughputMetricTag, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -265560,7 +311694,7 @@ func (obj *patternFlowPppControlMetricTag) ToProto() (*otg.PatternFlowPppControl return obj.Msg(), nil } -func (obj *patternFlowPppControlMetricTag) FromProto(msg *otg.PatternFlowPppControlMetricTag) (PatternFlowPppControlMetricTag, error) { +func (obj *patternFlowIpv4TosThroughputMetricTag) FromProto(msg *otg.PatternFlowIpv4TosThroughputMetricTag) (PatternFlowIpv4TosThroughputMetricTag, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -265569,7 +311703,7 @@ func (obj *patternFlowPppControlMetricTag) FromProto(msg *otg.PatternFlowPppCont return newObj, nil } -func (obj *patternFlowPppControlMetricTag) ToPbText() (string, error) { +func (obj *patternFlowIpv4TosThroughputMetricTag) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -265581,7 +311715,7 @@ func (obj *patternFlowPppControlMetricTag) ToPbText() (string, error) { return string(protoMarshal), nil } -func (obj *patternFlowPppControlMetricTag) FromPbText(value string) error { +func (obj *patternFlowIpv4TosThroughputMetricTag) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj @@ -265594,7 +311728,7 @@ func (obj *patternFlowPppControlMetricTag) FromPbText(value string) error { return retObj } -func (obj *patternFlowPppControlMetricTag) ToYaml() (string, error) { +func (obj *patternFlowIpv4TosThroughputMetricTag) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -265615,7 +311749,7 @@ func (obj *patternFlowPppControlMetricTag) ToYaml() (string, error) { return string(data), nil } -func (obj *patternFlowPppControlMetricTag) FromYaml(value string) error { +func (obj *patternFlowIpv4TosThroughputMetricTag) FromYaml(value string) error { if value == "" { value = "{}" } @@ -265640,7 +311774,7 @@ func (obj *patternFlowPppControlMetricTag) FromYaml(value string) error { return nil } -func (obj *patternFlowPppControlMetricTag) ToJson() (string, error) { +func (obj *patternFlowIpv4TosThroughputMetricTag) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -265658,7 +311792,7 @@ func (obj *patternFlowPppControlMetricTag) ToJson() (string, error) { return string(data), nil } -func (obj *patternFlowPppControlMetricTag) FromJson(value string) error { +func (obj *patternFlowIpv4TosThroughputMetricTag) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -265679,19 +311813,19 @@ func (obj *patternFlowPppControlMetricTag) FromJson(value string) error { return nil } -func (obj *patternFlowPppControlMetricTag) validateToAndFrom() error { +func (obj *patternFlowIpv4TosThroughputMetricTag) validateToAndFrom() error { // emptyVars() obj.validateObj(&obj.validation, true) return obj.validationResult() } -func (obj *patternFlowPppControlMetricTag) Validate() error { +func (obj *patternFlowIpv4TosThroughputMetricTag) Validate() error { // emptyVars() obj.validateObj(&obj.validation, false) return obj.validationResult() } -func (obj *patternFlowPppControlMetricTag) String() string { +func (obj *patternFlowIpv4TosThroughputMetricTag) String() string { str, err := obj.ToYaml() if err != nil { return err.Error() @@ -265699,12 +311833,12 @@ func (obj *patternFlowPppControlMetricTag) String() string { return str } -func (obj *patternFlowPppControlMetricTag) Clone() (PatternFlowPppControlMetricTag, error) { +func (obj *patternFlowIpv4TosThroughputMetricTag) Clone() (PatternFlowIpv4TosThroughputMetricTag, error) { vErr := obj.Validate() if vErr != nil { return nil, vErr } - newObj := NewPatternFlowPppControlMetricTag() + newObj := NewPatternFlowIpv4TosThroughputMetricTag() data, err := proto.Marshal(obj.Msg()) if err != nil { return nil, err @@ -265716,69 +311850,69 @@ func (obj *patternFlowPppControlMetricTag) Clone() (PatternFlowPppControlMetricT return newObj, nil } -// PatternFlowPppControlMetricTag is metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. -type PatternFlowPppControlMetricTag interface { +// PatternFlowIpv4TosThroughputMetricTag is metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. +type PatternFlowIpv4TosThroughputMetricTag interface { Validation - // Msg marshals PatternFlowPppControlMetricTag to protobuf object *otg.PatternFlowPppControlMetricTag + // Msg marshals PatternFlowIpv4TosThroughputMetricTag to protobuf object *otg.PatternFlowIpv4TosThroughputMetricTag // and doesn't set defaults - Msg() *otg.PatternFlowPppControlMetricTag - // SetMsg unmarshals PatternFlowPppControlMetricTag from protobuf object *otg.PatternFlowPppControlMetricTag + Msg() *otg.PatternFlowIpv4TosThroughputMetricTag + // SetMsg unmarshals PatternFlowIpv4TosThroughputMetricTag from protobuf object *otg.PatternFlowIpv4TosThroughputMetricTag // and doesn't set defaults - SetMsg(*otg.PatternFlowPppControlMetricTag) PatternFlowPppControlMetricTag - // ToProto marshals PatternFlowPppControlMetricTag to protobuf object *otg.PatternFlowPppControlMetricTag - ToProto() (*otg.PatternFlowPppControlMetricTag, error) - // ToPbText marshals PatternFlowPppControlMetricTag to protobuf text + SetMsg(*otg.PatternFlowIpv4TosThroughputMetricTag) PatternFlowIpv4TosThroughputMetricTag + // ToProto marshals PatternFlowIpv4TosThroughputMetricTag to protobuf object *otg.PatternFlowIpv4TosThroughputMetricTag + ToProto() (*otg.PatternFlowIpv4TosThroughputMetricTag, error) + // ToPbText marshals PatternFlowIpv4TosThroughputMetricTag to protobuf text ToPbText() (string, error) - // ToYaml marshals PatternFlowPppControlMetricTag to YAML text + // ToYaml marshals PatternFlowIpv4TosThroughputMetricTag to YAML text ToYaml() (string, error) - // ToJson marshals PatternFlowPppControlMetricTag to JSON text + // ToJson marshals PatternFlowIpv4TosThroughputMetricTag to JSON text ToJson() (string, error) - // FromProto unmarshals PatternFlowPppControlMetricTag from protobuf object *otg.PatternFlowPppControlMetricTag - FromProto(msg *otg.PatternFlowPppControlMetricTag) (PatternFlowPppControlMetricTag, error) - // FromPbText unmarshals PatternFlowPppControlMetricTag from protobuf text + // FromProto unmarshals PatternFlowIpv4TosThroughputMetricTag from protobuf object *otg.PatternFlowIpv4TosThroughputMetricTag + FromProto(msg *otg.PatternFlowIpv4TosThroughputMetricTag) (PatternFlowIpv4TosThroughputMetricTag, error) + // FromPbText unmarshals PatternFlowIpv4TosThroughputMetricTag from protobuf text FromPbText(value string) error - // FromYaml unmarshals PatternFlowPppControlMetricTag from YAML text + // FromYaml unmarshals PatternFlowIpv4TosThroughputMetricTag from YAML text FromYaml(value string) error - // FromJson unmarshals PatternFlowPppControlMetricTag from JSON text + // FromJson unmarshals PatternFlowIpv4TosThroughputMetricTag from JSON text FromJson(value string) error - // Validate validates PatternFlowPppControlMetricTag + // Validate validates PatternFlowIpv4TosThroughputMetricTag Validate() error // A stringer function String() string // Clones the object - Clone() (PatternFlowPppControlMetricTag, error) + Clone() (PatternFlowIpv4TosThroughputMetricTag, error) validateToAndFrom() error validateObj(vObj *validation, set_default bool) setDefault() - // Name returns string, set in PatternFlowPppControlMetricTag. + // Name returns string, set in PatternFlowIpv4TosThroughputMetricTag. Name() string - // SetName assigns string provided by user to PatternFlowPppControlMetricTag - SetName(value string) PatternFlowPppControlMetricTag - // Offset returns uint32, set in PatternFlowPppControlMetricTag. + // SetName assigns string provided by user to PatternFlowIpv4TosThroughputMetricTag + SetName(value string) PatternFlowIpv4TosThroughputMetricTag + // Offset returns uint32, set in PatternFlowIpv4TosThroughputMetricTag. Offset() uint32 - // SetOffset assigns uint32 provided by user to PatternFlowPppControlMetricTag - SetOffset(value uint32) PatternFlowPppControlMetricTag - // HasOffset checks if Offset has been set in PatternFlowPppControlMetricTag + // SetOffset assigns uint32 provided by user to PatternFlowIpv4TosThroughputMetricTag + SetOffset(value uint32) PatternFlowIpv4TosThroughputMetricTag + // HasOffset checks if Offset has been set in PatternFlowIpv4TosThroughputMetricTag HasOffset() bool - // Length returns uint32, set in PatternFlowPppControlMetricTag. + // Length returns uint32, set in PatternFlowIpv4TosThroughputMetricTag. Length() uint32 - // SetLength assigns uint32 provided by user to PatternFlowPppControlMetricTag - SetLength(value uint32) PatternFlowPppControlMetricTag - // HasLength checks if Length has been set in PatternFlowPppControlMetricTag + // SetLength assigns uint32 provided by user to PatternFlowIpv4TosThroughputMetricTag + SetLength(value uint32) PatternFlowIpv4TosThroughputMetricTag + // HasLength checks if Length has been set in PatternFlowIpv4TosThroughputMetricTag HasLength() bool } // Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field // Name returns a string -func (obj *patternFlowPppControlMetricTag) Name() string { +func (obj *patternFlowIpv4TosThroughputMetricTag) Name() string { return *obj.obj.Name } // Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field -// SetName sets the string value in the PatternFlowPppControlMetricTag object -func (obj *patternFlowPppControlMetricTag) SetName(value string) PatternFlowPppControlMetricTag { +// SetName sets the string value in the PatternFlowIpv4TosThroughputMetricTag object +func (obj *patternFlowIpv4TosThroughputMetricTag) SetName(value string) PatternFlowIpv4TosThroughputMetricTag { obj.obj.Name = &value return obj @@ -265786,7 +311920,7 @@ func (obj *patternFlowPppControlMetricTag) SetName(value string) PatternFlowPppC // Offset in bits relative to start of corresponding header field // Offset returns a uint32 -func (obj *patternFlowPppControlMetricTag) Offset() uint32 { +func (obj *patternFlowIpv4TosThroughputMetricTag) Offset() uint32 { return *obj.obj.Offset @@ -265794,13 +311928,13 @@ func (obj *patternFlowPppControlMetricTag) Offset() uint32 { // Offset in bits relative to start of corresponding header field // Offset returns a uint32 -func (obj *patternFlowPppControlMetricTag) HasOffset() bool { +func (obj *patternFlowIpv4TosThroughputMetricTag) HasOffset() bool { return obj.obj.Offset != nil } // Offset in bits relative to start of corresponding header field -// SetOffset sets the uint32 value in the PatternFlowPppControlMetricTag object -func (obj *patternFlowPppControlMetricTag) SetOffset(value uint32) PatternFlowPppControlMetricTag { +// SetOffset sets the uint32 value in the PatternFlowIpv4TosThroughputMetricTag object +func (obj *patternFlowIpv4TosThroughputMetricTag) SetOffset(value uint32) PatternFlowIpv4TosThroughputMetricTag { obj.obj.Offset = &value return obj @@ -265808,7 +311942,7 @@ func (obj *patternFlowPppControlMetricTag) SetOffset(value uint32) PatternFlowPp // Number of bits to track for metrics starting from configured offset of corresponding header field // Length returns a uint32 -func (obj *patternFlowPppControlMetricTag) Length() uint32 { +func (obj *patternFlowIpv4TosThroughputMetricTag) Length() uint32 { return *obj.obj.Length @@ -265816,83 +311950,83 @@ func (obj *patternFlowPppControlMetricTag) Length() uint32 { // Number of bits to track for metrics starting from configured offset of corresponding header field // Length returns a uint32 -func (obj *patternFlowPppControlMetricTag) HasLength() bool { +func (obj *patternFlowIpv4TosThroughputMetricTag) HasLength() bool { return obj.obj.Length != nil } // Number of bits to track for metrics starting from configured offset of corresponding header field -// SetLength sets the uint32 value in the PatternFlowPppControlMetricTag object -func (obj *patternFlowPppControlMetricTag) SetLength(value uint32) PatternFlowPppControlMetricTag { +// SetLength sets the uint32 value in the PatternFlowIpv4TosThroughputMetricTag object +func (obj *patternFlowIpv4TosThroughputMetricTag) SetLength(value uint32) PatternFlowIpv4TosThroughputMetricTag { obj.obj.Length = &value return obj } -func (obj *patternFlowPppControlMetricTag) validateObj(vObj *validation, set_default bool) { +func (obj *patternFlowIpv4TosThroughputMetricTag) validateObj(vObj *validation, set_default bool) { if set_default { obj.setDefault() } // Name is required if obj.obj.Name == nil { - vObj.validationErrors = append(vObj.validationErrors, "Name is required field on interface PatternFlowPppControlMetricTag") + vObj.validationErrors = append(vObj.validationErrors, "Name is required field on interface PatternFlowIpv4TosThroughputMetricTag") } if obj.obj.Offset != nil { - if *obj.obj.Offset > 7 { + if *obj.obj.Offset > 0 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowPppControlMetricTag.Offset <= 7 but Got %d", *obj.obj.Offset)) + fmt.Sprintf("0 <= PatternFlowIpv4TosThroughputMetricTag.Offset <= 0 but Got %d", *obj.obj.Offset)) } } if obj.obj.Length != nil { - if *obj.obj.Length < 1 || *obj.obj.Length > 8 { + if *obj.obj.Length < 1 || *obj.obj.Length > 1 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("1 <= PatternFlowPppControlMetricTag.Length <= 8 but Got %d", *obj.obj.Length)) + fmt.Sprintf("1 <= PatternFlowIpv4TosThroughputMetricTag.Length <= 1 but Got %d", *obj.obj.Length)) } } } -func (obj *patternFlowPppControlMetricTag) setDefault() { +func (obj *patternFlowIpv4TosThroughputMetricTag) setDefault() { if obj.obj.Offset == nil { obj.SetOffset(0) } if obj.obj.Length == nil { - obj.SetLength(8) + obj.SetLength(1) } } -// ***** PatternFlowPppProtocolTypeCounter ***** -type patternFlowPppProtocolTypeCounter struct { +// ***** PatternFlowIpv4TosReliabilityCounter ***** +type patternFlowIpv4TosReliabilityCounter struct { validation - obj *otg.PatternFlowPppProtocolTypeCounter + obj *otg.PatternFlowIpv4TosReliabilityCounter } -func NewPatternFlowPppProtocolTypeCounter() PatternFlowPppProtocolTypeCounter { - obj := patternFlowPppProtocolTypeCounter{obj: &otg.PatternFlowPppProtocolTypeCounter{}} +func NewPatternFlowIpv4TosReliabilityCounter() PatternFlowIpv4TosReliabilityCounter { + obj := patternFlowIpv4TosReliabilityCounter{obj: &otg.PatternFlowIpv4TosReliabilityCounter{}} obj.setDefault() return &obj } -func (obj *patternFlowPppProtocolTypeCounter) Msg() *otg.PatternFlowPppProtocolTypeCounter { +func (obj *patternFlowIpv4TosReliabilityCounter) Msg() *otg.PatternFlowIpv4TosReliabilityCounter { return obj.obj } -func (obj *patternFlowPppProtocolTypeCounter) SetMsg(msg *otg.PatternFlowPppProtocolTypeCounter) PatternFlowPppProtocolTypeCounter { +func (obj *patternFlowIpv4TosReliabilityCounter) SetMsg(msg *otg.PatternFlowIpv4TosReliabilityCounter) PatternFlowIpv4TosReliabilityCounter { proto.Merge(obj.obj, msg) return obj } -func (obj *patternFlowPppProtocolTypeCounter) ToProto() (*otg.PatternFlowPppProtocolTypeCounter, error) { +func (obj *patternFlowIpv4TosReliabilityCounter) ToProto() (*otg.PatternFlowIpv4TosReliabilityCounter, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -265900,7 +312034,7 @@ func (obj *patternFlowPppProtocolTypeCounter) ToProto() (*otg.PatternFlowPppProt return obj.Msg(), nil } -func (obj *patternFlowPppProtocolTypeCounter) FromProto(msg *otg.PatternFlowPppProtocolTypeCounter) (PatternFlowPppProtocolTypeCounter, error) { +func (obj *patternFlowIpv4TosReliabilityCounter) FromProto(msg *otg.PatternFlowIpv4TosReliabilityCounter) (PatternFlowIpv4TosReliabilityCounter, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -265909,7 +312043,7 @@ func (obj *patternFlowPppProtocolTypeCounter) FromProto(msg *otg.PatternFlowPppP return newObj, nil } -func (obj *patternFlowPppProtocolTypeCounter) ToPbText() (string, error) { +func (obj *patternFlowIpv4TosReliabilityCounter) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -265921,7 +312055,7 @@ func (obj *patternFlowPppProtocolTypeCounter) ToPbText() (string, error) { return string(protoMarshal), nil } -func (obj *patternFlowPppProtocolTypeCounter) FromPbText(value string) error { +func (obj *patternFlowIpv4TosReliabilityCounter) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj @@ -265934,7 +312068,7 @@ func (obj *patternFlowPppProtocolTypeCounter) FromPbText(value string) error { return retObj } -func (obj *patternFlowPppProtocolTypeCounter) ToYaml() (string, error) { +func (obj *patternFlowIpv4TosReliabilityCounter) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -265955,7 +312089,7 @@ func (obj *patternFlowPppProtocolTypeCounter) ToYaml() (string, error) { return string(data), nil } -func (obj *patternFlowPppProtocolTypeCounter) FromYaml(value string) error { +func (obj *patternFlowIpv4TosReliabilityCounter) FromYaml(value string) error { if value == "" { value = "{}" } @@ -265980,7 +312114,7 @@ func (obj *patternFlowPppProtocolTypeCounter) FromYaml(value string) error { return nil } -func (obj *patternFlowPppProtocolTypeCounter) ToJson() (string, error) { +func (obj *patternFlowIpv4TosReliabilityCounter) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -265998,7 +312132,7 @@ func (obj *patternFlowPppProtocolTypeCounter) ToJson() (string, error) { return string(data), nil } -func (obj *patternFlowPppProtocolTypeCounter) FromJson(value string) error { +func (obj *patternFlowIpv4TosReliabilityCounter) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -266019,19 +312153,19 @@ func (obj *patternFlowPppProtocolTypeCounter) FromJson(value string) error { return nil } -func (obj *patternFlowPppProtocolTypeCounter) validateToAndFrom() error { +func (obj *patternFlowIpv4TosReliabilityCounter) validateToAndFrom() error { // emptyVars() obj.validateObj(&obj.validation, true) return obj.validationResult() } -func (obj *patternFlowPppProtocolTypeCounter) Validate() error { +func (obj *patternFlowIpv4TosReliabilityCounter) Validate() error { // emptyVars() obj.validateObj(&obj.validation, false) return obj.validationResult() } -func (obj *patternFlowPppProtocolTypeCounter) String() string { +func (obj *patternFlowIpv4TosReliabilityCounter) String() string { str, err := obj.ToYaml() if err != nil { return err.Error() @@ -266039,12 +312173,12 @@ func (obj *patternFlowPppProtocolTypeCounter) String() string { return str } -func (obj *patternFlowPppProtocolTypeCounter) Clone() (PatternFlowPppProtocolTypeCounter, error) { +func (obj *patternFlowIpv4TosReliabilityCounter) Clone() (PatternFlowIpv4TosReliabilityCounter, error) { vErr := obj.Validate() if vErr != nil { return nil, vErr } - newObj := NewPatternFlowPppProtocolTypeCounter() + newObj := NewPatternFlowIpv4TosReliabilityCounter() data, err := proto.Marshal(obj.Msg()) if err != nil { return nil, err @@ -266056,63 +312190,63 @@ func (obj *patternFlowPppProtocolTypeCounter) Clone() (PatternFlowPppProtocolTyp return newObj, nil } -// PatternFlowPppProtocolTypeCounter is integer counter pattern -type PatternFlowPppProtocolTypeCounter interface { +// PatternFlowIpv4TosReliabilityCounter is integer counter pattern +type PatternFlowIpv4TosReliabilityCounter interface { Validation - // Msg marshals PatternFlowPppProtocolTypeCounter to protobuf object *otg.PatternFlowPppProtocolTypeCounter + // Msg marshals PatternFlowIpv4TosReliabilityCounter to protobuf object *otg.PatternFlowIpv4TosReliabilityCounter // and doesn't set defaults - Msg() *otg.PatternFlowPppProtocolTypeCounter - // SetMsg unmarshals PatternFlowPppProtocolTypeCounter from protobuf object *otg.PatternFlowPppProtocolTypeCounter + Msg() *otg.PatternFlowIpv4TosReliabilityCounter + // SetMsg unmarshals PatternFlowIpv4TosReliabilityCounter from protobuf object *otg.PatternFlowIpv4TosReliabilityCounter // and doesn't set defaults - SetMsg(*otg.PatternFlowPppProtocolTypeCounter) PatternFlowPppProtocolTypeCounter - // ToProto marshals PatternFlowPppProtocolTypeCounter to protobuf object *otg.PatternFlowPppProtocolTypeCounter - ToProto() (*otg.PatternFlowPppProtocolTypeCounter, error) - // ToPbText marshals PatternFlowPppProtocolTypeCounter to protobuf text + SetMsg(*otg.PatternFlowIpv4TosReliabilityCounter) PatternFlowIpv4TosReliabilityCounter + // ToProto marshals PatternFlowIpv4TosReliabilityCounter to protobuf object *otg.PatternFlowIpv4TosReliabilityCounter + ToProto() (*otg.PatternFlowIpv4TosReliabilityCounter, error) + // ToPbText marshals PatternFlowIpv4TosReliabilityCounter to protobuf text ToPbText() (string, error) - // ToYaml marshals PatternFlowPppProtocolTypeCounter to YAML text + // ToYaml marshals PatternFlowIpv4TosReliabilityCounter to YAML text ToYaml() (string, error) - // ToJson marshals PatternFlowPppProtocolTypeCounter to JSON text + // ToJson marshals PatternFlowIpv4TosReliabilityCounter to JSON text ToJson() (string, error) - // FromProto unmarshals PatternFlowPppProtocolTypeCounter from protobuf object *otg.PatternFlowPppProtocolTypeCounter - FromProto(msg *otg.PatternFlowPppProtocolTypeCounter) (PatternFlowPppProtocolTypeCounter, error) - // FromPbText unmarshals PatternFlowPppProtocolTypeCounter from protobuf text + // FromProto unmarshals PatternFlowIpv4TosReliabilityCounter from protobuf object *otg.PatternFlowIpv4TosReliabilityCounter + FromProto(msg *otg.PatternFlowIpv4TosReliabilityCounter) (PatternFlowIpv4TosReliabilityCounter, error) + // FromPbText unmarshals PatternFlowIpv4TosReliabilityCounter from protobuf text FromPbText(value string) error - // FromYaml unmarshals PatternFlowPppProtocolTypeCounter from YAML text + // FromYaml unmarshals PatternFlowIpv4TosReliabilityCounter from YAML text FromYaml(value string) error - // FromJson unmarshals PatternFlowPppProtocolTypeCounter from JSON text + // FromJson unmarshals PatternFlowIpv4TosReliabilityCounter from JSON text FromJson(value string) error - // Validate validates PatternFlowPppProtocolTypeCounter + // Validate validates PatternFlowIpv4TosReliabilityCounter Validate() error // A stringer function String() string // Clones the object - Clone() (PatternFlowPppProtocolTypeCounter, error) + Clone() (PatternFlowIpv4TosReliabilityCounter, error) validateToAndFrom() error validateObj(vObj *validation, set_default bool) setDefault() - // Start returns uint32, set in PatternFlowPppProtocolTypeCounter. + // Start returns uint32, set in PatternFlowIpv4TosReliabilityCounter. Start() uint32 - // SetStart assigns uint32 provided by user to PatternFlowPppProtocolTypeCounter - SetStart(value uint32) PatternFlowPppProtocolTypeCounter - // HasStart checks if Start has been set in PatternFlowPppProtocolTypeCounter + // SetStart assigns uint32 provided by user to PatternFlowIpv4TosReliabilityCounter + SetStart(value uint32) PatternFlowIpv4TosReliabilityCounter + // HasStart checks if Start has been set in PatternFlowIpv4TosReliabilityCounter HasStart() bool - // Step returns uint32, set in PatternFlowPppProtocolTypeCounter. + // Step returns uint32, set in PatternFlowIpv4TosReliabilityCounter. Step() uint32 - // SetStep assigns uint32 provided by user to PatternFlowPppProtocolTypeCounter - SetStep(value uint32) PatternFlowPppProtocolTypeCounter - // HasStep checks if Step has been set in PatternFlowPppProtocolTypeCounter + // SetStep assigns uint32 provided by user to PatternFlowIpv4TosReliabilityCounter + SetStep(value uint32) PatternFlowIpv4TosReliabilityCounter + // HasStep checks if Step has been set in PatternFlowIpv4TosReliabilityCounter HasStep() bool - // Count returns uint32, set in PatternFlowPppProtocolTypeCounter. + // Count returns uint32, set in PatternFlowIpv4TosReliabilityCounter. Count() uint32 - // SetCount assigns uint32 provided by user to PatternFlowPppProtocolTypeCounter - SetCount(value uint32) PatternFlowPppProtocolTypeCounter - // HasCount checks if Count has been set in PatternFlowPppProtocolTypeCounter + // SetCount assigns uint32 provided by user to PatternFlowIpv4TosReliabilityCounter + SetCount(value uint32) PatternFlowIpv4TosReliabilityCounter + // HasCount checks if Count has been set in PatternFlowIpv4TosReliabilityCounter HasCount() bool } // description is TBD // Start returns a uint32 -func (obj *patternFlowPppProtocolTypeCounter) Start() uint32 { +func (obj *patternFlowIpv4TosReliabilityCounter) Start() uint32 { return *obj.obj.Start @@ -266120,13 +312254,13 @@ func (obj *patternFlowPppProtocolTypeCounter) Start() uint32 { // description is TBD // Start returns a uint32 -func (obj *patternFlowPppProtocolTypeCounter) HasStart() bool { +func (obj *patternFlowIpv4TosReliabilityCounter) HasStart() bool { return obj.obj.Start != nil } // description is TBD -// SetStart sets the uint32 value in the PatternFlowPppProtocolTypeCounter object -func (obj *patternFlowPppProtocolTypeCounter) SetStart(value uint32) PatternFlowPppProtocolTypeCounter { +// SetStart sets the uint32 value in the PatternFlowIpv4TosReliabilityCounter object +func (obj *patternFlowIpv4TosReliabilityCounter) SetStart(value uint32) PatternFlowIpv4TosReliabilityCounter { obj.obj.Start = &value return obj @@ -266134,7 +312268,7 @@ func (obj *patternFlowPppProtocolTypeCounter) SetStart(value uint32) PatternFlow // description is TBD // Step returns a uint32 -func (obj *patternFlowPppProtocolTypeCounter) Step() uint32 { +func (obj *patternFlowIpv4TosReliabilityCounter) Step() uint32 { return *obj.obj.Step @@ -266142,13 +312276,13 @@ func (obj *patternFlowPppProtocolTypeCounter) Step() uint32 { // description is TBD // Step returns a uint32 -func (obj *patternFlowPppProtocolTypeCounter) HasStep() bool { +func (obj *patternFlowIpv4TosReliabilityCounter) HasStep() bool { return obj.obj.Step != nil } // description is TBD -// SetStep sets the uint32 value in the PatternFlowPppProtocolTypeCounter object -func (obj *patternFlowPppProtocolTypeCounter) SetStep(value uint32) PatternFlowPppProtocolTypeCounter { +// SetStep sets the uint32 value in the PatternFlowIpv4TosReliabilityCounter object +func (obj *patternFlowIpv4TosReliabilityCounter) SetStep(value uint32) PatternFlowIpv4TosReliabilityCounter { obj.obj.Step = &value return obj @@ -266156,7 +312290,7 @@ func (obj *patternFlowPppProtocolTypeCounter) SetStep(value uint32) PatternFlowP // description is TBD // Count returns a uint32 -func (obj *patternFlowPppProtocolTypeCounter) Count() uint32 { +func (obj *patternFlowIpv4TosReliabilityCounter) Count() uint32 { return *obj.obj.Count @@ -266164,58 +312298,58 @@ func (obj *patternFlowPppProtocolTypeCounter) Count() uint32 { // description is TBD // Count returns a uint32 -func (obj *patternFlowPppProtocolTypeCounter) HasCount() bool { +func (obj *patternFlowIpv4TosReliabilityCounter) HasCount() bool { return obj.obj.Count != nil } // description is TBD -// SetCount sets the uint32 value in the PatternFlowPppProtocolTypeCounter object -func (obj *patternFlowPppProtocolTypeCounter) SetCount(value uint32) PatternFlowPppProtocolTypeCounter { +// SetCount sets the uint32 value in the PatternFlowIpv4TosReliabilityCounter object +func (obj *patternFlowIpv4TosReliabilityCounter) SetCount(value uint32) PatternFlowIpv4TosReliabilityCounter { obj.obj.Count = &value return obj } -func (obj *patternFlowPppProtocolTypeCounter) validateObj(vObj *validation, set_default bool) { +func (obj *patternFlowIpv4TosReliabilityCounter) validateObj(vObj *validation, set_default bool) { if set_default { obj.setDefault() } if obj.obj.Start != nil { - if *obj.obj.Start > 65535 { + if *obj.obj.Start > 1 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowPppProtocolTypeCounter.Start <= 65535 but Got %d", *obj.obj.Start)) + fmt.Sprintf("0 <= PatternFlowIpv4TosReliabilityCounter.Start <= 1 but Got %d", *obj.obj.Start)) } } if obj.obj.Step != nil { - if *obj.obj.Step > 65535 { + if *obj.obj.Step > 1 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowPppProtocolTypeCounter.Step <= 65535 but Got %d", *obj.obj.Step)) + fmt.Sprintf("0 <= PatternFlowIpv4TosReliabilityCounter.Step <= 1 but Got %d", *obj.obj.Step)) } } if obj.obj.Count != nil { - if *obj.obj.Count > 65535 { + if *obj.obj.Count > 1 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowPppProtocolTypeCounter.Count <= 65535 but Got %d", *obj.obj.Count)) + fmt.Sprintf("0 <= PatternFlowIpv4TosReliabilityCounter.Count <= 1 but Got %d", *obj.obj.Count)) } } } -func (obj *patternFlowPppProtocolTypeCounter) setDefault() { +func (obj *patternFlowIpv4TosReliabilityCounter) setDefault() { if obj.obj.Start == nil { - obj.SetStart(33) + obj.SetStart(0) } if obj.obj.Step == nil { obj.SetStep(1) @@ -266226,29 +312360,29 @@ func (obj *patternFlowPppProtocolTypeCounter) setDefault() { } -// ***** PatternFlowPppProtocolTypeMetricTag ***** -type patternFlowPppProtocolTypeMetricTag struct { +// ***** PatternFlowIpv4TosReliabilityMetricTag ***** +type patternFlowIpv4TosReliabilityMetricTag struct { validation - obj *otg.PatternFlowPppProtocolTypeMetricTag + obj *otg.PatternFlowIpv4TosReliabilityMetricTag } -func NewPatternFlowPppProtocolTypeMetricTag() PatternFlowPppProtocolTypeMetricTag { - obj := patternFlowPppProtocolTypeMetricTag{obj: &otg.PatternFlowPppProtocolTypeMetricTag{}} +func NewPatternFlowIpv4TosReliabilityMetricTag() PatternFlowIpv4TosReliabilityMetricTag { + obj := patternFlowIpv4TosReliabilityMetricTag{obj: &otg.PatternFlowIpv4TosReliabilityMetricTag{}} obj.setDefault() return &obj } -func (obj *patternFlowPppProtocolTypeMetricTag) Msg() *otg.PatternFlowPppProtocolTypeMetricTag { +func (obj *patternFlowIpv4TosReliabilityMetricTag) Msg() *otg.PatternFlowIpv4TosReliabilityMetricTag { return obj.obj } -func (obj *patternFlowPppProtocolTypeMetricTag) SetMsg(msg *otg.PatternFlowPppProtocolTypeMetricTag) PatternFlowPppProtocolTypeMetricTag { +func (obj *patternFlowIpv4TosReliabilityMetricTag) SetMsg(msg *otg.PatternFlowIpv4TosReliabilityMetricTag) PatternFlowIpv4TosReliabilityMetricTag { proto.Merge(obj.obj, msg) return obj } -func (obj *patternFlowPppProtocolTypeMetricTag) ToProto() (*otg.PatternFlowPppProtocolTypeMetricTag, error) { +func (obj *patternFlowIpv4TosReliabilityMetricTag) ToProto() (*otg.PatternFlowIpv4TosReliabilityMetricTag, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -266256,7 +312390,7 @@ func (obj *patternFlowPppProtocolTypeMetricTag) ToProto() (*otg.PatternFlowPppPr return obj.Msg(), nil } -func (obj *patternFlowPppProtocolTypeMetricTag) FromProto(msg *otg.PatternFlowPppProtocolTypeMetricTag) (PatternFlowPppProtocolTypeMetricTag, error) { +func (obj *patternFlowIpv4TosReliabilityMetricTag) FromProto(msg *otg.PatternFlowIpv4TosReliabilityMetricTag) (PatternFlowIpv4TosReliabilityMetricTag, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -266265,7 +312399,7 @@ func (obj *patternFlowPppProtocolTypeMetricTag) FromProto(msg *otg.PatternFlowPp return newObj, nil } -func (obj *patternFlowPppProtocolTypeMetricTag) ToPbText() (string, error) { +func (obj *patternFlowIpv4TosReliabilityMetricTag) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -266277,7 +312411,7 @@ func (obj *patternFlowPppProtocolTypeMetricTag) ToPbText() (string, error) { return string(protoMarshal), nil } -func (obj *patternFlowPppProtocolTypeMetricTag) FromPbText(value string) error { +func (obj *patternFlowIpv4TosReliabilityMetricTag) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj @@ -266290,7 +312424,7 @@ func (obj *patternFlowPppProtocolTypeMetricTag) FromPbText(value string) error { return retObj } -func (obj *patternFlowPppProtocolTypeMetricTag) ToYaml() (string, error) { +func (obj *patternFlowIpv4TosReliabilityMetricTag) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -266311,7 +312445,7 @@ func (obj *patternFlowPppProtocolTypeMetricTag) ToYaml() (string, error) { return string(data), nil } -func (obj *patternFlowPppProtocolTypeMetricTag) FromYaml(value string) error { +func (obj *patternFlowIpv4TosReliabilityMetricTag) FromYaml(value string) error { if value == "" { value = "{}" } @@ -266336,7 +312470,7 @@ func (obj *patternFlowPppProtocolTypeMetricTag) FromYaml(value string) error { return nil } -func (obj *patternFlowPppProtocolTypeMetricTag) ToJson() (string, error) { +func (obj *patternFlowIpv4TosReliabilityMetricTag) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -266354,7 +312488,7 @@ func (obj *patternFlowPppProtocolTypeMetricTag) ToJson() (string, error) { return string(data), nil } -func (obj *patternFlowPppProtocolTypeMetricTag) FromJson(value string) error { +func (obj *patternFlowIpv4TosReliabilityMetricTag) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -266375,19 +312509,19 @@ func (obj *patternFlowPppProtocolTypeMetricTag) FromJson(value string) error { return nil } -func (obj *patternFlowPppProtocolTypeMetricTag) validateToAndFrom() error { +func (obj *patternFlowIpv4TosReliabilityMetricTag) validateToAndFrom() error { // emptyVars() obj.validateObj(&obj.validation, true) return obj.validationResult() } -func (obj *patternFlowPppProtocolTypeMetricTag) Validate() error { +func (obj *patternFlowIpv4TosReliabilityMetricTag) Validate() error { // emptyVars() obj.validateObj(&obj.validation, false) return obj.validationResult() } -func (obj *patternFlowPppProtocolTypeMetricTag) String() string { +func (obj *patternFlowIpv4TosReliabilityMetricTag) String() string { str, err := obj.ToYaml() if err != nil { return err.Error() @@ -266395,12 +312529,12 @@ func (obj *patternFlowPppProtocolTypeMetricTag) String() string { return str } -func (obj *patternFlowPppProtocolTypeMetricTag) Clone() (PatternFlowPppProtocolTypeMetricTag, error) { +func (obj *patternFlowIpv4TosReliabilityMetricTag) Clone() (PatternFlowIpv4TosReliabilityMetricTag, error) { vErr := obj.Validate() if vErr != nil { return nil, vErr } - newObj := NewPatternFlowPppProtocolTypeMetricTag() + newObj := NewPatternFlowIpv4TosReliabilityMetricTag() data, err := proto.Marshal(obj.Msg()) if err != nil { return nil, err @@ -266412,69 +312546,69 @@ func (obj *patternFlowPppProtocolTypeMetricTag) Clone() (PatternFlowPppProtocolT return newObj, nil } -// PatternFlowPppProtocolTypeMetricTag is metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. -type PatternFlowPppProtocolTypeMetricTag interface { +// PatternFlowIpv4TosReliabilityMetricTag is metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. +type PatternFlowIpv4TosReliabilityMetricTag interface { Validation - // Msg marshals PatternFlowPppProtocolTypeMetricTag to protobuf object *otg.PatternFlowPppProtocolTypeMetricTag + // Msg marshals PatternFlowIpv4TosReliabilityMetricTag to protobuf object *otg.PatternFlowIpv4TosReliabilityMetricTag // and doesn't set defaults - Msg() *otg.PatternFlowPppProtocolTypeMetricTag - // SetMsg unmarshals PatternFlowPppProtocolTypeMetricTag from protobuf object *otg.PatternFlowPppProtocolTypeMetricTag + Msg() *otg.PatternFlowIpv4TosReliabilityMetricTag + // SetMsg unmarshals PatternFlowIpv4TosReliabilityMetricTag from protobuf object *otg.PatternFlowIpv4TosReliabilityMetricTag // and doesn't set defaults - SetMsg(*otg.PatternFlowPppProtocolTypeMetricTag) PatternFlowPppProtocolTypeMetricTag - // ToProto marshals PatternFlowPppProtocolTypeMetricTag to protobuf object *otg.PatternFlowPppProtocolTypeMetricTag - ToProto() (*otg.PatternFlowPppProtocolTypeMetricTag, error) - // ToPbText marshals PatternFlowPppProtocolTypeMetricTag to protobuf text + SetMsg(*otg.PatternFlowIpv4TosReliabilityMetricTag) PatternFlowIpv4TosReliabilityMetricTag + // ToProto marshals PatternFlowIpv4TosReliabilityMetricTag to protobuf object *otg.PatternFlowIpv4TosReliabilityMetricTag + ToProto() (*otg.PatternFlowIpv4TosReliabilityMetricTag, error) + // ToPbText marshals PatternFlowIpv4TosReliabilityMetricTag to protobuf text ToPbText() (string, error) - // ToYaml marshals PatternFlowPppProtocolTypeMetricTag to YAML text + // ToYaml marshals PatternFlowIpv4TosReliabilityMetricTag to YAML text ToYaml() (string, error) - // ToJson marshals PatternFlowPppProtocolTypeMetricTag to JSON text + // ToJson marshals PatternFlowIpv4TosReliabilityMetricTag to JSON text ToJson() (string, error) - // FromProto unmarshals PatternFlowPppProtocolTypeMetricTag from protobuf object *otg.PatternFlowPppProtocolTypeMetricTag - FromProto(msg *otg.PatternFlowPppProtocolTypeMetricTag) (PatternFlowPppProtocolTypeMetricTag, error) - // FromPbText unmarshals PatternFlowPppProtocolTypeMetricTag from protobuf text + // FromProto unmarshals PatternFlowIpv4TosReliabilityMetricTag from protobuf object *otg.PatternFlowIpv4TosReliabilityMetricTag + FromProto(msg *otg.PatternFlowIpv4TosReliabilityMetricTag) (PatternFlowIpv4TosReliabilityMetricTag, error) + // FromPbText unmarshals PatternFlowIpv4TosReliabilityMetricTag from protobuf text FromPbText(value string) error - // FromYaml unmarshals PatternFlowPppProtocolTypeMetricTag from YAML text + // FromYaml unmarshals PatternFlowIpv4TosReliabilityMetricTag from YAML text FromYaml(value string) error - // FromJson unmarshals PatternFlowPppProtocolTypeMetricTag from JSON text + // FromJson unmarshals PatternFlowIpv4TosReliabilityMetricTag from JSON text FromJson(value string) error - // Validate validates PatternFlowPppProtocolTypeMetricTag + // Validate validates PatternFlowIpv4TosReliabilityMetricTag Validate() error // A stringer function String() string // Clones the object - Clone() (PatternFlowPppProtocolTypeMetricTag, error) + Clone() (PatternFlowIpv4TosReliabilityMetricTag, error) validateToAndFrom() error validateObj(vObj *validation, set_default bool) setDefault() - // Name returns string, set in PatternFlowPppProtocolTypeMetricTag. + // Name returns string, set in PatternFlowIpv4TosReliabilityMetricTag. Name() string - // SetName assigns string provided by user to PatternFlowPppProtocolTypeMetricTag - SetName(value string) PatternFlowPppProtocolTypeMetricTag - // Offset returns uint32, set in PatternFlowPppProtocolTypeMetricTag. + // SetName assigns string provided by user to PatternFlowIpv4TosReliabilityMetricTag + SetName(value string) PatternFlowIpv4TosReliabilityMetricTag + // Offset returns uint32, set in PatternFlowIpv4TosReliabilityMetricTag. Offset() uint32 - // SetOffset assigns uint32 provided by user to PatternFlowPppProtocolTypeMetricTag - SetOffset(value uint32) PatternFlowPppProtocolTypeMetricTag - // HasOffset checks if Offset has been set in PatternFlowPppProtocolTypeMetricTag + // SetOffset assigns uint32 provided by user to PatternFlowIpv4TosReliabilityMetricTag + SetOffset(value uint32) PatternFlowIpv4TosReliabilityMetricTag + // HasOffset checks if Offset has been set in PatternFlowIpv4TosReliabilityMetricTag HasOffset() bool - // Length returns uint32, set in PatternFlowPppProtocolTypeMetricTag. + // Length returns uint32, set in PatternFlowIpv4TosReliabilityMetricTag. Length() uint32 - // SetLength assigns uint32 provided by user to PatternFlowPppProtocolTypeMetricTag - SetLength(value uint32) PatternFlowPppProtocolTypeMetricTag - // HasLength checks if Length has been set in PatternFlowPppProtocolTypeMetricTag + // SetLength assigns uint32 provided by user to PatternFlowIpv4TosReliabilityMetricTag + SetLength(value uint32) PatternFlowIpv4TosReliabilityMetricTag + // HasLength checks if Length has been set in PatternFlowIpv4TosReliabilityMetricTag HasLength() bool } // Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field // Name returns a string -func (obj *patternFlowPppProtocolTypeMetricTag) Name() string { +func (obj *patternFlowIpv4TosReliabilityMetricTag) Name() string { return *obj.obj.Name } // Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field -// SetName sets the string value in the PatternFlowPppProtocolTypeMetricTag object -func (obj *patternFlowPppProtocolTypeMetricTag) SetName(value string) PatternFlowPppProtocolTypeMetricTag { +// SetName sets the string value in the PatternFlowIpv4TosReliabilityMetricTag object +func (obj *patternFlowIpv4TosReliabilityMetricTag) SetName(value string) PatternFlowIpv4TosReliabilityMetricTag { obj.obj.Name = &value return obj @@ -266482,7 +312616,7 @@ func (obj *patternFlowPppProtocolTypeMetricTag) SetName(value string) PatternFlo // Offset in bits relative to start of corresponding header field // Offset returns a uint32 -func (obj *patternFlowPppProtocolTypeMetricTag) Offset() uint32 { +func (obj *patternFlowIpv4TosReliabilityMetricTag) Offset() uint32 { return *obj.obj.Offset @@ -266490,13 +312624,13 @@ func (obj *patternFlowPppProtocolTypeMetricTag) Offset() uint32 { // Offset in bits relative to start of corresponding header field // Offset returns a uint32 -func (obj *patternFlowPppProtocolTypeMetricTag) HasOffset() bool { +func (obj *patternFlowIpv4TosReliabilityMetricTag) HasOffset() bool { return obj.obj.Offset != nil } // Offset in bits relative to start of corresponding header field -// SetOffset sets the uint32 value in the PatternFlowPppProtocolTypeMetricTag object -func (obj *patternFlowPppProtocolTypeMetricTag) SetOffset(value uint32) PatternFlowPppProtocolTypeMetricTag { +// SetOffset sets the uint32 value in the PatternFlowIpv4TosReliabilityMetricTag object +func (obj *patternFlowIpv4TosReliabilityMetricTag) SetOffset(value uint32) PatternFlowIpv4TosReliabilityMetricTag { obj.obj.Offset = &value return obj @@ -266504,7 +312638,7 @@ func (obj *patternFlowPppProtocolTypeMetricTag) SetOffset(value uint32) PatternF // Number of bits to track for metrics starting from configured offset of corresponding header field // Length returns a uint32 -func (obj *patternFlowPppProtocolTypeMetricTag) Length() uint32 { +func (obj *patternFlowIpv4TosReliabilityMetricTag) Length() uint32 { return *obj.obj.Length @@ -266512,83 +312646,83 @@ func (obj *patternFlowPppProtocolTypeMetricTag) Length() uint32 { // Number of bits to track for metrics starting from configured offset of corresponding header field // Length returns a uint32 -func (obj *patternFlowPppProtocolTypeMetricTag) HasLength() bool { +func (obj *patternFlowIpv4TosReliabilityMetricTag) HasLength() bool { return obj.obj.Length != nil } // Number of bits to track for metrics starting from configured offset of corresponding header field -// SetLength sets the uint32 value in the PatternFlowPppProtocolTypeMetricTag object -func (obj *patternFlowPppProtocolTypeMetricTag) SetLength(value uint32) PatternFlowPppProtocolTypeMetricTag { +// SetLength sets the uint32 value in the PatternFlowIpv4TosReliabilityMetricTag object +func (obj *patternFlowIpv4TosReliabilityMetricTag) SetLength(value uint32) PatternFlowIpv4TosReliabilityMetricTag { obj.obj.Length = &value return obj } -func (obj *patternFlowPppProtocolTypeMetricTag) validateObj(vObj *validation, set_default bool) { +func (obj *patternFlowIpv4TosReliabilityMetricTag) validateObj(vObj *validation, set_default bool) { if set_default { obj.setDefault() } // Name is required if obj.obj.Name == nil { - vObj.validationErrors = append(vObj.validationErrors, "Name is required field on interface PatternFlowPppProtocolTypeMetricTag") + vObj.validationErrors = append(vObj.validationErrors, "Name is required field on interface PatternFlowIpv4TosReliabilityMetricTag") } if obj.obj.Offset != nil { - if *obj.obj.Offset > 15 { + if *obj.obj.Offset > 0 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowPppProtocolTypeMetricTag.Offset <= 15 but Got %d", *obj.obj.Offset)) + fmt.Sprintf("0 <= PatternFlowIpv4TosReliabilityMetricTag.Offset <= 0 but Got %d", *obj.obj.Offset)) } } if obj.obj.Length != nil { - if *obj.obj.Length < 1 || *obj.obj.Length > 16 { + if *obj.obj.Length < 1 || *obj.obj.Length > 1 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("1 <= PatternFlowPppProtocolTypeMetricTag.Length <= 16 but Got %d", *obj.obj.Length)) + fmt.Sprintf("1 <= PatternFlowIpv4TosReliabilityMetricTag.Length <= 1 but Got %d", *obj.obj.Length)) } } } -func (obj *patternFlowPppProtocolTypeMetricTag) setDefault() { +func (obj *patternFlowIpv4TosReliabilityMetricTag) setDefault() { if obj.obj.Offset == nil { obj.SetOffset(0) } if obj.obj.Length == nil { - obj.SetLength(16) + obj.SetLength(1) } } -// ***** PatternFlowIgmpv1VersionCounter ***** -type patternFlowIgmpv1VersionCounter struct { +// ***** PatternFlowIpv4TosMonetaryCounter ***** +type patternFlowIpv4TosMonetaryCounter struct { validation - obj *otg.PatternFlowIgmpv1VersionCounter + obj *otg.PatternFlowIpv4TosMonetaryCounter } -func NewPatternFlowIgmpv1VersionCounter() PatternFlowIgmpv1VersionCounter { - obj := patternFlowIgmpv1VersionCounter{obj: &otg.PatternFlowIgmpv1VersionCounter{}} +func NewPatternFlowIpv4TosMonetaryCounter() PatternFlowIpv4TosMonetaryCounter { + obj := patternFlowIpv4TosMonetaryCounter{obj: &otg.PatternFlowIpv4TosMonetaryCounter{}} obj.setDefault() return &obj } -func (obj *patternFlowIgmpv1VersionCounter) Msg() *otg.PatternFlowIgmpv1VersionCounter { +func (obj *patternFlowIpv4TosMonetaryCounter) Msg() *otg.PatternFlowIpv4TosMonetaryCounter { return obj.obj } -func (obj *patternFlowIgmpv1VersionCounter) SetMsg(msg *otg.PatternFlowIgmpv1VersionCounter) PatternFlowIgmpv1VersionCounter { +func (obj *patternFlowIpv4TosMonetaryCounter) SetMsg(msg *otg.PatternFlowIpv4TosMonetaryCounter) PatternFlowIpv4TosMonetaryCounter { proto.Merge(obj.obj, msg) return obj } -func (obj *patternFlowIgmpv1VersionCounter) ToProto() (*otg.PatternFlowIgmpv1VersionCounter, error) { +func (obj *patternFlowIpv4TosMonetaryCounter) ToProto() (*otg.PatternFlowIpv4TosMonetaryCounter, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -266596,7 +312730,7 @@ func (obj *patternFlowIgmpv1VersionCounter) ToProto() (*otg.PatternFlowIgmpv1Ver return obj.Msg(), nil } -func (obj *patternFlowIgmpv1VersionCounter) FromProto(msg *otg.PatternFlowIgmpv1VersionCounter) (PatternFlowIgmpv1VersionCounter, error) { +func (obj *patternFlowIpv4TosMonetaryCounter) FromProto(msg *otg.PatternFlowIpv4TosMonetaryCounter) (PatternFlowIpv4TosMonetaryCounter, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -266605,7 +312739,7 @@ func (obj *patternFlowIgmpv1VersionCounter) FromProto(msg *otg.PatternFlowIgmpv1 return newObj, nil } -func (obj *patternFlowIgmpv1VersionCounter) ToPbText() (string, error) { +func (obj *patternFlowIpv4TosMonetaryCounter) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -266617,7 +312751,7 @@ func (obj *patternFlowIgmpv1VersionCounter) ToPbText() (string, error) { return string(protoMarshal), nil } -func (obj *patternFlowIgmpv1VersionCounter) FromPbText(value string) error { +func (obj *patternFlowIpv4TosMonetaryCounter) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj @@ -266630,7 +312764,7 @@ func (obj *patternFlowIgmpv1VersionCounter) FromPbText(value string) error { return retObj } -func (obj *patternFlowIgmpv1VersionCounter) ToYaml() (string, error) { +func (obj *patternFlowIpv4TosMonetaryCounter) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -266651,7 +312785,7 @@ func (obj *patternFlowIgmpv1VersionCounter) ToYaml() (string, error) { return string(data), nil } -func (obj *patternFlowIgmpv1VersionCounter) FromYaml(value string) error { +func (obj *patternFlowIpv4TosMonetaryCounter) FromYaml(value string) error { if value == "" { value = "{}" } @@ -266676,7 +312810,7 @@ func (obj *patternFlowIgmpv1VersionCounter) FromYaml(value string) error { return nil } -func (obj *patternFlowIgmpv1VersionCounter) ToJson() (string, error) { +func (obj *patternFlowIpv4TosMonetaryCounter) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -266694,7 +312828,7 @@ func (obj *patternFlowIgmpv1VersionCounter) ToJson() (string, error) { return string(data), nil } -func (obj *patternFlowIgmpv1VersionCounter) FromJson(value string) error { +func (obj *patternFlowIpv4TosMonetaryCounter) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -266715,19 +312849,19 @@ func (obj *patternFlowIgmpv1VersionCounter) FromJson(value string) error { return nil } -func (obj *patternFlowIgmpv1VersionCounter) validateToAndFrom() error { +func (obj *patternFlowIpv4TosMonetaryCounter) validateToAndFrom() error { // emptyVars() obj.validateObj(&obj.validation, true) return obj.validationResult() } -func (obj *patternFlowIgmpv1VersionCounter) Validate() error { +func (obj *patternFlowIpv4TosMonetaryCounter) Validate() error { // emptyVars() obj.validateObj(&obj.validation, false) return obj.validationResult() } -func (obj *patternFlowIgmpv1VersionCounter) String() string { +func (obj *patternFlowIpv4TosMonetaryCounter) String() string { str, err := obj.ToYaml() if err != nil { return err.Error() @@ -266735,12 +312869,12 @@ func (obj *patternFlowIgmpv1VersionCounter) String() string { return str } -func (obj *patternFlowIgmpv1VersionCounter) Clone() (PatternFlowIgmpv1VersionCounter, error) { +func (obj *patternFlowIpv4TosMonetaryCounter) Clone() (PatternFlowIpv4TosMonetaryCounter, error) { vErr := obj.Validate() if vErr != nil { return nil, vErr } - newObj := NewPatternFlowIgmpv1VersionCounter() + newObj := NewPatternFlowIpv4TosMonetaryCounter() data, err := proto.Marshal(obj.Msg()) if err != nil { return nil, err @@ -266752,63 +312886,63 @@ func (obj *patternFlowIgmpv1VersionCounter) Clone() (PatternFlowIgmpv1VersionCou return newObj, nil } -// PatternFlowIgmpv1VersionCounter is integer counter pattern -type PatternFlowIgmpv1VersionCounter interface { +// PatternFlowIpv4TosMonetaryCounter is integer counter pattern +type PatternFlowIpv4TosMonetaryCounter interface { Validation - // Msg marshals PatternFlowIgmpv1VersionCounter to protobuf object *otg.PatternFlowIgmpv1VersionCounter + // Msg marshals PatternFlowIpv4TosMonetaryCounter to protobuf object *otg.PatternFlowIpv4TosMonetaryCounter // and doesn't set defaults - Msg() *otg.PatternFlowIgmpv1VersionCounter - // SetMsg unmarshals PatternFlowIgmpv1VersionCounter from protobuf object *otg.PatternFlowIgmpv1VersionCounter + Msg() *otg.PatternFlowIpv4TosMonetaryCounter + // SetMsg unmarshals PatternFlowIpv4TosMonetaryCounter from protobuf object *otg.PatternFlowIpv4TosMonetaryCounter // and doesn't set defaults - SetMsg(*otg.PatternFlowIgmpv1VersionCounter) PatternFlowIgmpv1VersionCounter - // ToProto marshals PatternFlowIgmpv1VersionCounter to protobuf object *otg.PatternFlowIgmpv1VersionCounter - ToProto() (*otg.PatternFlowIgmpv1VersionCounter, error) - // ToPbText marshals PatternFlowIgmpv1VersionCounter to protobuf text + SetMsg(*otg.PatternFlowIpv4TosMonetaryCounter) PatternFlowIpv4TosMonetaryCounter + // ToProto marshals PatternFlowIpv4TosMonetaryCounter to protobuf object *otg.PatternFlowIpv4TosMonetaryCounter + ToProto() (*otg.PatternFlowIpv4TosMonetaryCounter, error) + // ToPbText marshals PatternFlowIpv4TosMonetaryCounter to protobuf text ToPbText() (string, error) - // ToYaml marshals PatternFlowIgmpv1VersionCounter to YAML text + // ToYaml marshals PatternFlowIpv4TosMonetaryCounter to YAML text ToYaml() (string, error) - // ToJson marshals PatternFlowIgmpv1VersionCounter to JSON text + // ToJson marshals PatternFlowIpv4TosMonetaryCounter to JSON text ToJson() (string, error) - // FromProto unmarshals PatternFlowIgmpv1VersionCounter from protobuf object *otg.PatternFlowIgmpv1VersionCounter - FromProto(msg *otg.PatternFlowIgmpv1VersionCounter) (PatternFlowIgmpv1VersionCounter, error) - // FromPbText unmarshals PatternFlowIgmpv1VersionCounter from protobuf text + // FromProto unmarshals PatternFlowIpv4TosMonetaryCounter from protobuf object *otg.PatternFlowIpv4TosMonetaryCounter + FromProto(msg *otg.PatternFlowIpv4TosMonetaryCounter) (PatternFlowIpv4TosMonetaryCounter, error) + // FromPbText unmarshals PatternFlowIpv4TosMonetaryCounter from protobuf text FromPbText(value string) error - // FromYaml unmarshals PatternFlowIgmpv1VersionCounter from YAML text + // FromYaml unmarshals PatternFlowIpv4TosMonetaryCounter from YAML text FromYaml(value string) error - // FromJson unmarshals PatternFlowIgmpv1VersionCounter from JSON text + // FromJson unmarshals PatternFlowIpv4TosMonetaryCounter from JSON text FromJson(value string) error - // Validate validates PatternFlowIgmpv1VersionCounter + // Validate validates PatternFlowIpv4TosMonetaryCounter Validate() error // A stringer function String() string // Clones the object - Clone() (PatternFlowIgmpv1VersionCounter, error) + Clone() (PatternFlowIpv4TosMonetaryCounter, error) validateToAndFrom() error validateObj(vObj *validation, set_default bool) setDefault() - // Start returns uint32, set in PatternFlowIgmpv1VersionCounter. + // Start returns uint32, set in PatternFlowIpv4TosMonetaryCounter. Start() uint32 - // SetStart assigns uint32 provided by user to PatternFlowIgmpv1VersionCounter - SetStart(value uint32) PatternFlowIgmpv1VersionCounter - // HasStart checks if Start has been set in PatternFlowIgmpv1VersionCounter + // SetStart assigns uint32 provided by user to PatternFlowIpv4TosMonetaryCounter + SetStart(value uint32) PatternFlowIpv4TosMonetaryCounter + // HasStart checks if Start has been set in PatternFlowIpv4TosMonetaryCounter HasStart() bool - // Step returns uint32, set in PatternFlowIgmpv1VersionCounter. + // Step returns uint32, set in PatternFlowIpv4TosMonetaryCounter. Step() uint32 - // SetStep assigns uint32 provided by user to PatternFlowIgmpv1VersionCounter - SetStep(value uint32) PatternFlowIgmpv1VersionCounter - // HasStep checks if Step has been set in PatternFlowIgmpv1VersionCounter + // SetStep assigns uint32 provided by user to PatternFlowIpv4TosMonetaryCounter + SetStep(value uint32) PatternFlowIpv4TosMonetaryCounter + // HasStep checks if Step has been set in PatternFlowIpv4TosMonetaryCounter HasStep() bool - // Count returns uint32, set in PatternFlowIgmpv1VersionCounter. + // Count returns uint32, set in PatternFlowIpv4TosMonetaryCounter. Count() uint32 - // SetCount assigns uint32 provided by user to PatternFlowIgmpv1VersionCounter - SetCount(value uint32) PatternFlowIgmpv1VersionCounter - // HasCount checks if Count has been set in PatternFlowIgmpv1VersionCounter + // SetCount assigns uint32 provided by user to PatternFlowIpv4TosMonetaryCounter + SetCount(value uint32) PatternFlowIpv4TosMonetaryCounter + // HasCount checks if Count has been set in PatternFlowIpv4TosMonetaryCounter HasCount() bool } // description is TBD // Start returns a uint32 -func (obj *patternFlowIgmpv1VersionCounter) Start() uint32 { +func (obj *patternFlowIpv4TosMonetaryCounter) Start() uint32 { return *obj.obj.Start @@ -266816,13 +312950,13 @@ func (obj *patternFlowIgmpv1VersionCounter) Start() uint32 { // description is TBD // Start returns a uint32 -func (obj *patternFlowIgmpv1VersionCounter) HasStart() bool { +func (obj *patternFlowIpv4TosMonetaryCounter) HasStart() bool { return obj.obj.Start != nil } // description is TBD -// SetStart sets the uint32 value in the PatternFlowIgmpv1VersionCounter object -func (obj *patternFlowIgmpv1VersionCounter) SetStart(value uint32) PatternFlowIgmpv1VersionCounter { +// SetStart sets the uint32 value in the PatternFlowIpv4TosMonetaryCounter object +func (obj *patternFlowIpv4TosMonetaryCounter) SetStart(value uint32) PatternFlowIpv4TosMonetaryCounter { obj.obj.Start = &value return obj @@ -266830,7 +312964,7 @@ func (obj *patternFlowIgmpv1VersionCounter) SetStart(value uint32) PatternFlowIg // description is TBD // Step returns a uint32 -func (obj *patternFlowIgmpv1VersionCounter) Step() uint32 { +func (obj *patternFlowIpv4TosMonetaryCounter) Step() uint32 { return *obj.obj.Step @@ -266838,13 +312972,13 @@ func (obj *patternFlowIgmpv1VersionCounter) Step() uint32 { // description is TBD // Step returns a uint32 -func (obj *patternFlowIgmpv1VersionCounter) HasStep() bool { +func (obj *patternFlowIpv4TosMonetaryCounter) HasStep() bool { return obj.obj.Step != nil } // description is TBD -// SetStep sets the uint32 value in the PatternFlowIgmpv1VersionCounter object -func (obj *patternFlowIgmpv1VersionCounter) SetStep(value uint32) PatternFlowIgmpv1VersionCounter { +// SetStep sets the uint32 value in the PatternFlowIpv4TosMonetaryCounter object +func (obj *patternFlowIpv4TosMonetaryCounter) SetStep(value uint32) PatternFlowIpv4TosMonetaryCounter { obj.obj.Step = &value return obj @@ -266852,7 +312986,7 @@ func (obj *patternFlowIgmpv1VersionCounter) SetStep(value uint32) PatternFlowIgm // description is TBD // Count returns a uint32 -func (obj *patternFlowIgmpv1VersionCounter) Count() uint32 { +func (obj *patternFlowIpv4TosMonetaryCounter) Count() uint32 { return *obj.obj.Count @@ -266860,58 +312994,58 @@ func (obj *patternFlowIgmpv1VersionCounter) Count() uint32 { // description is TBD // Count returns a uint32 -func (obj *patternFlowIgmpv1VersionCounter) HasCount() bool { +func (obj *patternFlowIpv4TosMonetaryCounter) HasCount() bool { return obj.obj.Count != nil } // description is TBD -// SetCount sets the uint32 value in the PatternFlowIgmpv1VersionCounter object -func (obj *patternFlowIgmpv1VersionCounter) SetCount(value uint32) PatternFlowIgmpv1VersionCounter { +// SetCount sets the uint32 value in the PatternFlowIpv4TosMonetaryCounter object +func (obj *patternFlowIpv4TosMonetaryCounter) SetCount(value uint32) PatternFlowIpv4TosMonetaryCounter { obj.obj.Count = &value return obj } -func (obj *patternFlowIgmpv1VersionCounter) validateObj(vObj *validation, set_default bool) { +func (obj *patternFlowIpv4TosMonetaryCounter) validateObj(vObj *validation, set_default bool) { if set_default { obj.setDefault() } if obj.obj.Start != nil { - if *obj.obj.Start > 15 { + if *obj.obj.Start > 1 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowIgmpv1VersionCounter.Start <= 15 but Got %d", *obj.obj.Start)) + fmt.Sprintf("0 <= PatternFlowIpv4TosMonetaryCounter.Start <= 1 but Got %d", *obj.obj.Start)) } } if obj.obj.Step != nil { - if *obj.obj.Step > 15 { + if *obj.obj.Step > 1 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowIgmpv1VersionCounter.Step <= 15 but Got %d", *obj.obj.Step)) + fmt.Sprintf("0 <= PatternFlowIpv4TosMonetaryCounter.Step <= 1 but Got %d", *obj.obj.Step)) } } if obj.obj.Count != nil { - if *obj.obj.Count > 15 { + if *obj.obj.Count > 1 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowIgmpv1VersionCounter.Count <= 15 but Got %d", *obj.obj.Count)) + fmt.Sprintf("0 <= PatternFlowIpv4TosMonetaryCounter.Count <= 1 but Got %d", *obj.obj.Count)) } } } -func (obj *patternFlowIgmpv1VersionCounter) setDefault() { +func (obj *patternFlowIpv4TosMonetaryCounter) setDefault() { if obj.obj.Start == nil { - obj.SetStart(1) + obj.SetStart(0) } if obj.obj.Step == nil { obj.SetStep(1) @@ -266922,29 +313056,29 @@ func (obj *patternFlowIgmpv1VersionCounter) setDefault() { } -// ***** PatternFlowIgmpv1VersionMetricTag ***** -type patternFlowIgmpv1VersionMetricTag struct { +// ***** PatternFlowIpv4TosMonetaryMetricTag ***** +type patternFlowIpv4TosMonetaryMetricTag struct { validation - obj *otg.PatternFlowIgmpv1VersionMetricTag + obj *otg.PatternFlowIpv4TosMonetaryMetricTag } -func NewPatternFlowIgmpv1VersionMetricTag() PatternFlowIgmpv1VersionMetricTag { - obj := patternFlowIgmpv1VersionMetricTag{obj: &otg.PatternFlowIgmpv1VersionMetricTag{}} +func NewPatternFlowIpv4TosMonetaryMetricTag() PatternFlowIpv4TosMonetaryMetricTag { + obj := patternFlowIpv4TosMonetaryMetricTag{obj: &otg.PatternFlowIpv4TosMonetaryMetricTag{}} obj.setDefault() return &obj } -func (obj *patternFlowIgmpv1VersionMetricTag) Msg() *otg.PatternFlowIgmpv1VersionMetricTag { +func (obj *patternFlowIpv4TosMonetaryMetricTag) Msg() *otg.PatternFlowIpv4TosMonetaryMetricTag { return obj.obj } -func (obj *patternFlowIgmpv1VersionMetricTag) SetMsg(msg *otg.PatternFlowIgmpv1VersionMetricTag) PatternFlowIgmpv1VersionMetricTag { +func (obj *patternFlowIpv4TosMonetaryMetricTag) SetMsg(msg *otg.PatternFlowIpv4TosMonetaryMetricTag) PatternFlowIpv4TosMonetaryMetricTag { proto.Merge(obj.obj, msg) return obj } -func (obj *patternFlowIgmpv1VersionMetricTag) ToProto() (*otg.PatternFlowIgmpv1VersionMetricTag, error) { +func (obj *patternFlowIpv4TosMonetaryMetricTag) ToProto() (*otg.PatternFlowIpv4TosMonetaryMetricTag, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -266952,7 +313086,7 @@ func (obj *patternFlowIgmpv1VersionMetricTag) ToProto() (*otg.PatternFlowIgmpv1V return obj.Msg(), nil } -func (obj *patternFlowIgmpv1VersionMetricTag) FromProto(msg *otg.PatternFlowIgmpv1VersionMetricTag) (PatternFlowIgmpv1VersionMetricTag, error) { +func (obj *patternFlowIpv4TosMonetaryMetricTag) FromProto(msg *otg.PatternFlowIpv4TosMonetaryMetricTag) (PatternFlowIpv4TosMonetaryMetricTag, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -266961,7 +313095,7 @@ func (obj *patternFlowIgmpv1VersionMetricTag) FromProto(msg *otg.PatternFlowIgmp return newObj, nil } -func (obj *patternFlowIgmpv1VersionMetricTag) ToPbText() (string, error) { +func (obj *patternFlowIpv4TosMonetaryMetricTag) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -266973,7 +313107,7 @@ func (obj *patternFlowIgmpv1VersionMetricTag) ToPbText() (string, error) { return string(protoMarshal), nil } -func (obj *patternFlowIgmpv1VersionMetricTag) FromPbText(value string) error { +func (obj *patternFlowIpv4TosMonetaryMetricTag) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj @@ -266986,7 +313120,7 @@ func (obj *patternFlowIgmpv1VersionMetricTag) FromPbText(value string) error { return retObj } -func (obj *patternFlowIgmpv1VersionMetricTag) ToYaml() (string, error) { +func (obj *patternFlowIpv4TosMonetaryMetricTag) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -267007,7 +313141,7 @@ func (obj *patternFlowIgmpv1VersionMetricTag) ToYaml() (string, error) { return string(data), nil } -func (obj *patternFlowIgmpv1VersionMetricTag) FromYaml(value string) error { +func (obj *patternFlowIpv4TosMonetaryMetricTag) FromYaml(value string) error { if value == "" { value = "{}" } @@ -267032,7 +313166,7 @@ func (obj *patternFlowIgmpv1VersionMetricTag) FromYaml(value string) error { return nil } -func (obj *patternFlowIgmpv1VersionMetricTag) ToJson() (string, error) { +func (obj *patternFlowIpv4TosMonetaryMetricTag) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -267050,7 +313184,7 @@ func (obj *patternFlowIgmpv1VersionMetricTag) ToJson() (string, error) { return string(data), nil } -func (obj *patternFlowIgmpv1VersionMetricTag) FromJson(value string) error { +func (obj *patternFlowIpv4TosMonetaryMetricTag) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -267071,19 +313205,19 @@ func (obj *patternFlowIgmpv1VersionMetricTag) FromJson(value string) error { return nil } -func (obj *patternFlowIgmpv1VersionMetricTag) validateToAndFrom() error { +func (obj *patternFlowIpv4TosMonetaryMetricTag) validateToAndFrom() error { // emptyVars() obj.validateObj(&obj.validation, true) return obj.validationResult() } -func (obj *patternFlowIgmpv1VersionMetricTag) Validate() error { +func (obj *patternFlowIpv4TosMonetaryMetricTag) Validate() error { // emptyVars() obj.validateObj(&obj.validation, false) return obj.validationResult() } -func (obj *patternFlowIgmpv1VersionMetricTag) String() string { +func (obj *patternFlowIpv4TosMonetaryMetricTag) String() string { str, err := obj.ToYaml() if err != nil { return err.Error() @@ -267091,12 +313225,12 @@ func (obj *patternFlowIgmpv1VersionMetricTag) String() string { return str } -func (obj *patternFlowIgmpv1VersionMetricTag) Clone() (PatternFlowIgmpv1VersionMetricTag, error) { +func (obj *patternFlowIpv4TosMonetaryMetricTag) Clone() (PatternFlowIpv4TosMonetaryMetricTag, error) { vErr := obj.Validate() if vErr != nil { return nil, vErr } - newObj := NewPatternFlowIgmpv1VersionMetricTag() + newObj := NewPatternFlowIpv4TosMonetaryMetricTag() data, err := proto.Marshal(obj.Msg()) if err != nil { return nil, err @@ -267108,69 +313242,69 @@ func (obj *patternFlowIgmpv1VersionMetricTag) Clone() (PatternFlowIgmpv1VersionM return newObj, nil } -// PatternFlowIgmpv1VersionMetricTag is metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. -type PatternFlowIgmpv1VersionMetricTag interface { +// PatternFlowIpv4TosMonetaryMetricTag is metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. +type PatternFlowIpv4TosMonetaryMetricTag interface { Validation - // Msg marshals PatternFlowIgmpv1VersionMetricTag to protobuf object *otg.PatternFlowIgmpv1VersionMetricTag + // Msg marshals PatternFlowIpv4TosMonetaryMetricTag to protobuf object *otg.PatternFlowIpv4TosMonetaryMetricTag // and doesn't set defaults - Msg() *otg.PatternFlowIgmpv1VersionMetricTag - // SetMsg unmarshals PatternFlowIgmpv1VersionMetricTag from protobuf object *otg.PatternFlowIgmpv1VersionMetricTag + Msg() *otg.PatternFlowIpv4TosMonetaryMetricTag + // SetMsg unmarshals PatternFlowIpv4TosMonetaryMetricTag from protobuf object *otg.PatternFlowIpv4TosMonetaryMetricTag // and doesn't set defaults - SetMsg(*otg.PatternFlowIgmpv1VersionMetricTag) PatternFlowIgmpv1VersionMetricTag - // ToProto marshals PatternFlowIgmpv1VersionMetricTag to protobuf object *otg.PatternFlowIgmpv1VersionMetricTag - ToProto() (*otg.PatternFlowIgmpv1VersionMetricTag, error) - // ToPbText marshals PatternFlowIgmpv1VersionMetricTag to protobuf text + SetMsg(*otg.PatternFlowIpv4TosMonetaryMetricTag) PatternFlowIpv4TosMonetaryMetricTag + // ToProto marshals PatternFlowIpv4TosMonetaryMetricTag to protobuf object *otg.PatternFlowIpv4TosMonetaryMetricTag + ToProto() (*otg.PatternFlowIpv4TosMonetaryMetricTag, error) + // ToPbText marshals PatternFlowIpv4TosMonetaryMetricTag to protobuf text ToPbText() (string, error) - // ToYaml marshals PatternFlowIgmpv1VersionMetricTag to YAML text + // ToYaml marshals PatternFlowIpv4TosMonetaryMetricTag to YAML text ToYaml() (string, error) - // ToJson marshals PatternFlowIgmpv1VersionMetricTag to JSON text + // ToJson marshals PatternFlowIpv4TosMonetaryMetricTag to JSON text ToJson() (string, error) - // FromProto unmarshals PatternFlowIgmpv1VersionMetricTag from protobuf object *otg.PatternFlowIgmpv1VersionMetricTag - FromProto(msg *otg.PatternFlowIgmpv1VersionMetricTag) (PatternFlowIgmpv1VersionMetricTag, error) - // FromPbText unmarshals PatternFlowIgmpv1VersionMetricTag from protobuf text + // FromProto unmarshals PatternFlowIpv4TosMonetaryMetricTag from protobuf object *otg.PatternFlowIpv4TosMonetaryMetricTag + FromProto(msg *otg.PatternFlowIpv4TosMonetaryMetricTag) (PatternFlowIpv4TosMonetaryMetricTag, error) + // FromPbText unmarshals PatternFlowIpv4TosMonetaryMetricTag from protobuf text FromPbText(value string) error - // FromYaml unmarshals PatternFlowIgmpv1VersionMetricTag from YAML text + // FromYaml unmarshals PatternFlowIpv4TosMonetaryMetricTag from YAML text FromYaml(value string) error - // FromJson unmarshals PatternFlowIgmpv1VersionMetricTag from JSON text + // FromJson unmarshals PatternFlowIpv4TosMonetaryMetricTag from JSON text FromJson(value string) error - // Validate validates PatternFlowIgmpv1VersionMetricTag + // Validate validates PatternFlowIpv4TosMonetaryMetricTag Validate() error // A stringer function String() string // Clones the object - Clone() (PatternFlowIgmpv1VersionMetricTag, error) + Clone() (PatternFlowIpv4TosMonetaryMetricTag, error) validateToAndFrom() error validateObj(vObj *validation, set_default bool) setDefault() - // Name returns string, set in PatternFlowIgmpv1VersionMetricTag. + // Name returns string, set in PatternFlowIpv4TosMonetaryMetricTag. Name() string - // SetName assigns string provided by user to PatternFlowIgmpv1VersionMetricTag - SetName(value string) PatternFlowIgmpv1VersionMetricTag - // Offset returns uint32, set in PatternFlowIgmpv1VersionMetricTag. + // SetName assigns string provided by user to PatternFlowIpv4TosMonetaryMetricTag + SetName(value string) PatternFlowIpv4TosMonetaryMetricTag + // Offset returns uint32, set in PatternFlowIpv4TosMonetaryMetricTag. Offset() uint32 - // SetOffset assigns uint32 provided by user to PatternFlowIgmpv1VersionMetricTag - SetOffset(value uint32) PatternFlowIgmpv1VersionMetricTag - // HasOffset checks if Offset has been set in PatternFlowIgmpv1VersionMetricTag + // SetOffset assigns uint32 provided by user to PatternFlowIpv4TosMonetaryMetricTag + SetOffset(value uint32) PatternFlowIpv4TosMonetaryMetricTag + // HasOffset checks if Offset has been set in PatternFlowIpv4TosMonetaryMetricTag HasOffset() bool - // Length returns uint32, set in PatternFlowIgmpv1VersionMetricTag. + // Length returns uint32, set in PatternFlowIpv4TosMonetaryMetricTag. Length() uint32 - // SetLength assigns uint32 provided by user to PatternFlowIgmpv1VersionMetricTag - SetLength(value uint32) PatternFlowIgmpv1VersionMetricTag - // HasLength checks if Length has been set in PatternFlowIgmpv1VersionMetricTag + // SetLength assigns uint32 provided by user to PatternFlowIpv4TosMonetaryMetricTag + SetLength(value uint32) PatternFlowIpv4TosMonetaryMetricTag + // HasLength checks if Length has been set in PatternFlowIpv4TosMonetaryMetricTag HasLength() bool } // Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field // Name returns a string -func (obj *patternFlowIgmpv1VersionMetricTag) Name() string { +func (obj *patternFlowIpv4TosMonetaryMetricTag) Name() string { return *obj.obj.Name } // Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field -// SetName sets the string value in the PatternFlowIgmpv1VersionMetricTag object -func (obj *patternFlowIgmpv1VersionMetricTag) SetName(value string) PatternFlowIgmpv1VersionMetricTag { +// SetName sets the string value in the PatternFlowIpv4TosMonetaryMetricTag object +func (obj *patternFlowIpv4TosMonetaryMetricTag) SetName(value string) PatternFlowIpv4TosMonetaryMetricTag { obj.obj.Name = &value return obj @@ -267178,7 +313312,7 @@ func (obj *patternFlowIgmpv1VersionMetricTag) SetName(value string) PatternFlowI // Offset in bits relative to start of corresponding header field // Offset returns a uint32 -func (obj *patternFlowIgmpv1VersionMetricTag) Offset() uint32 { +func (obj *patternFlowIpv4TosMonetaryMetricTag) Offset() uint32 { return *obj.obj.Offset @@ -267186,13 +313320,13 @@ func (obj *patternFlowIgmpv1VersionMetricTag) Offset() uint32 { // Offset in bits relative to start of corresponding header field // Offset returns a uint32 -func (obj *patternFlowIgmpv1VersionMetricTag) HasOffset() bool { +func (obj *patternFlowIpv4TosMonetaryMetricTag) HasOffset() bool { return obj.obj.Offset != nil } // Offset in bits relative to start of corresponding header field -// SetOffset sets the uint32 value in the PatternFlowIgmpv1VersionMetricTag object -func (obj *patternFlowIgmpv1VersionMetricTag) SetOffset(value uint32) PatternFlowIgmpv1VersionMetricTag { +// SetOffset sets the uint32 value in the PatternFlowIpv4TosMonetaryMetricTag object +func (obj *patternFlowIpv4TosMonetaryMetricTag) SetOffset(value uint32) PatternFlowIpv4TosMonetaryMetricTag { obj.obj.Offset = &value return obj @@ -267200,7 +313334,7 @@ func (obj *patternFlowIgmpv1VersionMetricTag) SetOffset(value uint32) PatternFlo // Number of bits to track for metrics starting from configured offset of corresponding header field // Length returns a uint32 -func (obj *patternFlowIgmpv1VersionMetricTag) Length() uint32 { +func (obj *patternFlowIpv4TosMonetaryMetricTag) Length() uint32 { return *obj.obj.Length @@ -267208,83 +313342,83 @@ func (obj *patternFlowIgmpv1VersionMetricTag) Length() uint32 { // Number of bits to track for metrics starting from configured offset of corresponding header field // Length returns a uint32 -func (obj *patternFlowIgmpv1VersionMetricTag) HasLength() bool { +func (obj *patternFlowIpv4TosMonetaryMetricTag) HasLength() bool { return obj.obj.Length != nil } // Number of bits to track for metrics starting from configured offset of corresponding header field -// SetLength sets the uint32 value in the PatternFlowIgmpv1VersionMetricTag object -func (obj *patternFlowIgmpv1VersionMetricTag) SetLength(value uint32) PatternFlowIgmpv1VersionMetricTag { +// SetLength sets the uint32 value in the PatternFlowIpv4TosMonetaryMetricTag object +func (obj *patternFlowIpv4TosMonetaryMetricTag) SetLength(value uint32) PatternFlowIpv4TosMonetaryMetricTag { obj.obj.Length = &value return obj } -func (obj *patternFlowIgmpv1VersionMetricTag) validateObj(vObj *validation, set_default bool) { +func (obj *patternFlowIpv4TosMonetaryMetricTag) validateObj(vObj *validation, set_default bool) { if set_default { obj.setDefault() } // Name is required if obj.obj.Name == nil { - vObj.validationErrors = append(vObj.validationErrors, "Name is required field on interface PatternFlowIgmpv1VersionMetricTag") + vObj.validationErrors = append(vObj.validationErrors, "Name is required field on interface PatternFlowIpv4TosMonetaryMetricTag") } if obj.obj.Offset != nil { - if *obj.obj.Offset > 3 { + if *obj.obj.Offset > 0 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowIgmpv1VersionMetricTag.Offset <= 3 but Got %d", *obj.obj.Offset)) + fmt.Sprintf("0 <= PatternFlowIpv4TosMonetaryMetricTag.Offset <= 0 but Got %d", *obj.obj.Offset)) } } if obj.obj.Length != nil { - if *obj.obj.Length < 1 || *obj.obj.Length > 4 { + if *obj.obj.Length < 1 || *obj.obj.Length > 1 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("1 <= PatternFlowIgmpv1VersionMetricTag.Length <= 4 but Got %d", *obj.obj.Length)) + fmt.Sprintf("1 <= PatternFlowIpv4TosMonetaryMetricTag.Length <= 1 but Got %d", *obj.obj.Length)) } } } -func (obj *patternFlowIgmpv1VersionMetricTag) setDefault() { +func (obj *patternFlowIpv4TosMonetaryMetricTag) setDefault() { if obj.obj.Offset == nil { obj.SetOffset(0) } if obj.obj.Length == nil { - obj.SetLength(4) + obj.SetLength(1) } } -// ***** PatternFlowIgmpv1TypeCounter ***** -type patternFlowIgmpv1TypeCounter struct { +// ***** PatternFlowIpv4TosUnusedCounter ***** +type patternFlowIpv4TosUnusedCounter struct { validation - obj *otg.PatternFlowIgmpv1TypeCounter + obj *otg.PatternFlowIpv4TosUnusedCounter } -func NewPatternFlowIgmpv1TypeCounter() PatternFlowIgmpv1TypeCounter { - obj := patternFlowIgmpv1TypeCounter{obj: &otg.PatternFlowIgmpv1TypeCounter{}} +func NewPatternFlowIpv4TosUnusedCounter() PatternFlowIpv4TosUnusedCounter { + obj := patternFlowIpv4TosUnusedCounter{obj: &otg.PatternFlowIpv4TosUnusedCounter{}} obj.setDefault() return &obj } -func (obj *patternFlowIgmpv1TypeCounter) Msg() *otg.PatternFlowIgmpv1TypeCounter { +func (obj *patternFlowIpv4TosUnusedCounter) Msg() *otg.PatternFlowIpv4TosUnusedCounter { return obj.obj } -func (obj *patternFlowIgmpv1TypeCounter) SetMsg(msg *otg.PatternFlowIgmpv1TypeCounter) PatternFlowIgmpv1TypeCounter { +func (obj *patternFlowIpv4TosUnusedCounter) SetMsg(msg *otg.PatternFlowIpv4TosUnusedCounter) PatternFlowIpv4TosUnusedCounter { proto.Merge(obj.obj, msg) return obj } -func (obj *patternFlowIgmpv1TypeCounter) ToProto() (*otg.PatternFlowIgmpv1TypeCounter, error) { +func (obj *patternFlowIpv4TosUnusedCounter) ToProto() (*otg.PatternFlowIpv4TosUnusedCounter, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -267292,7 +313426,7 @@ func (obj *patternFlowIgmpv1TypeCounter) ToProto() (*otg.PatternFlowIgmpv1TypeCo return obj.Msg(), nil } -func (obj *patternFlowIgmpv1TypeCounter) FromProto(msg *otg.PatternFlowIgmpv1TypeCounter) (PatternFlowIgmpv1TypeCounter, error) { +func (obj *patternFlowIpv4TosUnusedCounter) FromProto(msg *otg.PatternFlowIpv4TosUnusedCounter) (PatternFlowIpv4TosUnusedCounter, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -267301,7 +313435,7 @@ func (obj *patternFlowIgmpv1TypeCounter) FromProto(msg *otg.PatternFlowIgmpv1Typ return newObj, nil } -func (obj *patternFlowIgmpv1TypeCounter) ToPbText() (string, error) { +func (obj *patternFlowIpv4TosUnusedCounter) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -267313,7 +313447,7 @@ func (obj *patternFlowIgmpv1TypeCounter) ToPbText() (string, error) { return string(protoMarshal), nil } -func (obj *patternFlowIgmpv1TypeCounter) FromPbText(value string) error { +func (obj *patternFlowIpv4TosUnusedCounter) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj @@ -267326,7 +313460,7 @@ func (obj *patternFlowIgmpv1TypeCounter) FromPbText(value string) error { return retObj } -func (obj *patternFlowIgmpv1TypeCounter) ToYaml() (string, error) { +func (obj *patternFlowIpv4TosUnusedCounter) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -267347,7 +313481,7 @@ func (obj *patternFlowIgmpv1TypeCounter) ToYaml() (string, error) { return string(data), nil } -func (obj *patternFlowIgmpv1TypeCounter) FromYaml(value string) error { +func (obj *patternFlowIpv4TosUnusedCounter) FromYaml(value string) error { if value == "" { value = "{}" } @@ -267372,7 +313506,7 @@ func (obj *patternFlowIgmpv1TypeCounter) FromYaml(value string) error { return nil } -func (obj *patternFlowIgmpv1TypeCounter) ToJson() (string, error) { +func (obj *patternFlowIpv4TosUnusedCounter) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -267390,7 +313524,7 @@ func (obj *patternFlowIgmpv1TypeCounter) ToJson() (string, error) { return string(data), nil } -func (obj *patternFlowIgmpv1TypeCounter) FromJson(value string) error { +func (obj *patternFlowIpv4TosUnusedCounter) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -267411,19 +313545,19 @@ func (obj *patternFlowIgmpv1TypeCounter) FromJson(value string) error { return nil } -func (obj *patternFlowIgmpv1TypeCounter) validateToAndFrom() error { +func (obj *patternFlowIpv4TosUnusedCounter) validateToAndFrom() error { // emptyVars() obj.validateObj(&obj.validation, true) return obj.validationResult() } -func (obj *patternFlowIgmpv1TypeCounter) Validate() error { +func (obj *patternFlowIpv4TosUnusedCounter) Validate() error { // emptyVars() obj.validateObj(&obj.validation, false) return obj.validationResult() } -func (obj *patternFlowIgmpv1TypeCounter) String() string { +func (obj *patternFlowIpv4TosUnusedCounter) String() string { str, err := obj.ToYaml() if err != nil { return err.Error() @@ -267431,12 +313565,12 @@ func (obj *patternFlowIgmpv1TypeCounter) String() string { return str } -func (obj *patternFlowIgmpv1TypeCounter) Clone() (PatternFlowIgmpv1TypeCounter, error) { +func (obj *patternFlowIpv4TosUnusedCounter) Clone() (PatternFlowIpv4TosUnusedCounter, error) { vErr := obj.Validate() if vErr != nil { return nil, vErr } - newObj := NewPatternFlowIgmpv1TypeCounter() + newObj := NewPatternFlowIpv4TosUnusedCounter() data, err := proto.Marshal(obj.Msg()) if err != nil { return nil, err @@ -267448,63 +313582,63 @@ func (obj *patternFlowIgmpv1TypeCounter) Clone() (PatternFlowIgmpv1TypeCounter, return newObj, nil } -// PatternFlowIgmpv1TypeCounter is integer counter pattern -type PatternFlowIgmpv1TypeCounter interface { +// PatternFlowIpv4TosUnusedCounter is integer counter pattern +type PatternFlowIpv4TosUnusedCounter interface { Validation - // Msg marshals PatternFlowIgmpv1TypeCounter to protobuf object *otg.PatternFlowIgmpv1TypeCounter + // Msg marshals PatternFlowIpv4TosUnusedCounter to protobuf object *otg.PatternFlowIpv4TosUnusedCounter // and doesn't set defaults - Msg() *otg.PatternFlowIgmpv1TypeCounter - // SetMsg unmarshals PatternFlowIgmpv1TypeCounter from protobuf object *otg.PatternFlowIgmpv1TypeCounter + Msg() *otg.PatternFlowIpv4TosUnusedCounter + // SetMsg unmarshals PatternFlowIpv4TosUnusedCounter from protobuf object *otg.PatternFlowIpv4TosUnusedCounter // and doesn't set defaults - SetMsg(*otg.PatternFlowIgmpv1TypeCounter) PatternFlowIgmpv1TypeCounter - // ToProto marshals PatternFlowIgmpv1TypeCounter to protobuf object *otg.PatternFlowIgmpv1TypeCounter - ToProto() (*otg.PatternFlowIgmpv1TypeCounter, error) - // ToPbText marshals PatternFlowIgmpv1TypeCounter to protobuf text + SetMsg(*otg.PatternFlowIpv4TosUnusedCounter) PatternFlowIpv4TosUnusedCounter + // ToProto marshals PatternFlowIpv4TosUnusedCounter to protobuf object *otg.PatternFlowIpv4TosUnusedCounter + ToProto() (*otg.PatternFlowIpv4TosUnusedCounter, error) + // ToPbText marshals PatternFlowIpv4TosUnusedCounter to protobuf text ToPbText() (string, error) - // ToYaml marshals PatternFlowIgmpv1TypeCounter to YAML text + // ToYaml marshals PatternFlowIpv4TosUnusedCounter to YAML text ToYaml() (string, error) - // ToJson marshals PatternFlowIgmpv1TypeCounter to JSON text + // ToJson marshals PatternFlowIpv4TosUnusedCounter to JSON text ToJson() (string, error) - // FromProto unmarshals PatternFlowIgmpv1TypeCounter from protobuf object *otg.PatternFlowIgmpv1TypeCounter - FromProto(msg *otg.PatternFlowIgmpv1TypeCounter) (PatternFlowIgmpv1TypeCounter, error) - // FromPbText unmarshals PatternFlowIgmpv1TypeCounter from protobuf text + // FromProto unmarshals PatternFlowIpv4TosUnusedCounter from protobuf object *otg.PatternFlowIpv4TosUnusedCounter + FromProto(msg *otg.PatternFlowIpv4TosUnusedCounter) (PatternFlowIpv4TosUnusedCounter, error) + // FromPbText unmarshals PatternFlowIpv4TosUnusedCounter from protobuf text FromPbText(value string) error - // FromYaml unmarshals PatternFlowIgmpv1TypeCounter from YAML text + // FromYaml unmarshals PatternFlowIpv4TosUnusedCounter from YAML text FromYaml(value string) error - // FromJson unmarshals PatternFlowIgmpv1TypeCounter from JSON text + // FromJson unmarshals PatternFlowIpv4TosUnusedCounter from JSON text FromJson(value string) error - // Validate validates PatternFlowIgmpv1TypeCounter + // Validate validates PatternFlowIpv4TosUnusedCounter Validate() error // A stringer function String() string // Clones the object - Clone() (PatternFlowIgmpv1TypeCounter, error) + Clone() (PatternFlowIpv4TosUnusedCounter, error) validateToAndFrom() error validateObj(vObj *validation, set_default bool) setDefault() - // Start returns uint32, set in PatternFlowIgmpv1TypeCounter. + // Start returns uint32, set in PatternFlowIpv4TosUnusedCounter. Start() uint32 - // SetStart assigns uint32 provided by user to PatternFlowIgmpv1TypeCounter - SetStart(value uint32) PatternFlowIgmpv1TypeCounter - // HasStart checks if Start has been set in PatternFlowIgmpv1TypeCounter + // SetStart assigns uint32 provided by user to PatternFlowIpv4TosUnusedCounter + SetStart(value uint32) PatternFlowIpv4TosUnusedCounter + // HasStart checks if Start has been set in PatternFlowIpv4TosUnusedCounter HasStart() bool - // Step returns uint32, set in PatternFlowIgmpv1TypeCounter. + // Step returns uint32, set in PatternFlowIpv4TosUnusedCounter. Step() uint32 - // SetStep assigns uint32 provided by user to PatternFlowIgmpv1TypeCounter - SetStep(value uint32) PatternFlowIgmpv1TypeCounter - // HasStep checks if Step has been set in PatternFlowIgmpv1TypeCounter + // SetStep assigns uint32 provided by user to PatternFlowIpv4TosUnusedCounter + SetStep(value uint32) PatternFlowIpv4TosUnusedCounter + // HasStep checks if Step has been set in PatternFlowIpv4TosUnusedCounter HasStep() bool - // Count returns uint32, set in PatternFlowIgmpv1TypeCounter. + // Count returns uint32, set in PatternFlowIpv4TosUnusedCounter. Count() uint32 - // SetCount assigns uint32 provided by user to PatternFlowIgmpv1TypeCounter - SetCount(value uint32) PatternFlowIgmpv1TypeCounter - // HasCount checks if Count has been set in PatternFlowIgmpv1TypeCounter + // SetCount assigns uint32 provided by user to PatternFlowIpv4TosUnusedCounter + SetCount(value uint32) PatternFlowIpv4TosUnusedCounter + // HasCount checks if Count has been set in PatternFlowIpv4TosUnusedCounter HasCount() bool } // description is TBD // Start returns a uint32 -func (obj *patternFlowIgmpv1TypeCounter) Start() uint32 { +func (obj *patternFlowIpv4TosUnusedCounter) Start() uint32 { return *obj.obj.Start @@ -267512,13 +313646,13 @@ func (obj *patternFlowIgmpv1TypeCounter) Start() uint32 { // description is TBD // Start returns a uint32 -func (obj *patternFlowIgmpv1TypeCounter) HasStart() bool { +func (obj *patternFlowIpv4TosUnusedCounter) HasStart() bool { return obj.obj.Start != nil } // description is TBD -// SetStart sets the uint32 value in the PatternFlowIgmpv1TypeCounter object -func (obj *patternFlowIgmpv1TypeCounter) SetStart(value uint32) PatternFlowIgmpv1TypeCounter { +// SetStart sets the uint32 value in the PatternFlowIpv4TosUnusedCounter object +func (obj *patternFlowIpv4TosUnusedCounter) SetStart(value uint32) PatternFlowIpv4TosUnusedCounter { obj.obj.Start = &value return obj @@ -267526,7 +313660,7 @@ func (obj *patternFlowIgmpv1TypeCounter) SetStart(value uint32) PatternFlowIgmpv // description is TBD // Step returns a uint32 -func (obj *patternFlowIgmpv1TypeCounter) Step() uint32 { +func (obj *patternFlowIpv4TosUnusedCounter) Step() uint32 { return *obj.obj.Step @@ -267534,13 +313668,13 @@ func (obj *patternFlowIgmpv1TypeCounter) Step() uint32 { // description is TBD // Step returns a uint32 -func (obj *patternFlowIgmpv1TypeCounter) HasStep() bool { +func (obj *patternFlowIpv4TosUnusedCounter) HasStep() bool { return obj.obj.Step != nil } // description is TBD -// SetStep sets the uint32 value in the PatternFlowIgmpv1TypeCounter object -func (obj *patternFlowIgmpv1TypeCounter) SetStep(value uint32) PatternFlowIgmpv1TypeCounter { +// SetStep sets the uint32 value in the PatternFlowIpv4TosUnusedCounter object +func (obj *patternFlowIpv4TosUnusedCounter) SetStep(value uint32) PatternFlowIpv4TosUnusedCounter { obj.obj.Step = &value return obj @@ -267548,7 +313682,7 @@ func (obj *patternFlowIgmpv1TypeCounter) SetStep(value uint32) PatternFlowIgmpv1 // description is TBD // Count returns a uint32 -func (obj *patternFlowIgmpv1TypeCounter) Count() uint32 { +func (obj *patternFlowIpv4TosUnusedCounter) Count() uint32 { return *obj.obj.Count @@ -267556,58 +313690,58 @@ func (obj *patternFlowIgmpv1TypeCounter) Count() uint32 { // description is TBD // Count returns a uint32 -func (obj *patternFlowIgmpv1TypeCounter) HasCount() bool { +func (obj *patternFlowIpv4TosUnusedCounter) HasCount() bool { return obj.obj.Count != nil } // description is TBD -// SetCount sets the uint32 value in the PatternFlowIgmpv1TypeCounter object -func (obj *patternFlowIgmpv1TypeCounter) SetCount(value uint32) PatternFlowIgmpv1TypeCounter { +// SetCount sets the uint32 value in the PatternFlowIpv4TosUnusedCounter object +func (obj *patternFlowIpv4TosUnusedCounter) SetCount(value uint32) PatternFlowIpv4TosUnusedCounter { obj.obj.Count = &value return obj } -func (obj *patternFlowIgmpv1TypeCounter) validateObj(vObj *validation, set_default bool) { +func (obj *patternFlowIpv4TosUnusedCounter) validateObj(vObj *validation, set_default bool) { if set_default { obj.setDefault() } if obj.obj.Start != nil { - if *obj.obj.Start > 15 { + if *obj.obj.Start > 1 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowIgmpv1TypeCounter.Start <= 15 but Got %d", *obj.obj.Start)) + fmt.Sprintf("0 <= PatternFlowIpv4TosUnusedCounter.Start <= 1 but Got %d", *obj.obj.Start)) } } if obj.obj.Step != nil { - if *obj.obj.Step > 15 { + if *obj.obj.Step > 1 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowIgmpv1TypeCounter.Step <= 15 but Got %d", *obj.obj.Step)) + fmt.Sprintf("0 <= PatternFlowIpv4TosUnusedCounter.Step <= 1 but Got %d", *obj.obj.Step)) } } if obj.obj.Count != nil { - if *obj.obj.Count > 15 { + if *obj.obj.Count > 1 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowIgmpv1TypeCounter.Count <= 15 but Got %d", *obj.obj.Count)) + fmt.Sprintf("0 <= PatternFlowIpv4TosUnusedCounter.Count <= 1 but Got %d", *obj.obj.Count)) } } } -func (obj *patternFlowIgmpv1TypeCounter) setDefault() { +func (obj *patternFlowIpv4TosUnusedCounter) setDefault() { if obj.obj.Start == nil { - obj.SetStart(1) + obj.SetStart(0) } if obj.obj.Step == nil { obj.SetStep(1) @@ -267618,29 +313752,29 @@ func (obj *patternFlowIgmpv1TypeCounter) setDefault() { } -// ***** PatternFlowIgmpv1TypeMetricTag ***** -type patternFlowIgmpv1TypeMetricTag struct { +// ***** PatternFlowIpv4TosUnusedMetricTag ***** +type patternFlowIpv4TosUnusedMetricTag struct { validation - obj *otg.PatternFlowIgmpv1TypeMetricTag + obj *otg.PatternFlowIpv4TosUnusedMetricTag } -func NewPatternFlowIgmpv1TypeMetricTag() PatternFlowIgmpv1TypeMetricTag { - obj := patternFlowIgmpv1TypeMetricTag{obj: &otg.PatternFlowIgmpv1TypeMetricTag{}} +func NewPatternFlowIpv4TosUnusedMetricTag() PatternFlowIpv4TosUnusedMetricTag { + obj := patternFlowIpv4TosUnusedMetricTag{obj: &otg.PatternFlowIpv4TosUnusedMetricTag{}} obj.setDefault() return &obj } -func (obj *patternFlowIgmpv1TypeMetricTag) Msg() *otg.PatternFlowIgmpv1TypeMetricTag { +func (obj *patternFlowIpv4TosUnusedMetricTag) Msg() *otg.PatternFlowIpv4TosUnusedMetricTag { return obj.obj } -func (obj *patternFlowIgmpv1TypeMetricTag) SetMsg(msg *otg.PatternFlowIgmpv1TypeMetricTag) PatternFlowIgmpv1TypeMetricTag { +func (obj *patternFlowIpv4TosUnusedMetricTag) SetMsg(msg *otg.PatternFlowIpv4TosUnusedMetricTag) PatternFlowIpv4TosUnusedMetricTag { proto.Merge(obj.obj, msg) return obj } -func (obj *patternFlowIgmpv1TypeMetricTag) ToProto() (*otg.PatternFlowIgmpv1TypeMetricTag, error) { +func (obj *patternFlowIpv4TosUnusedMetricTag) ToProto() (*otg.PatternFlowIpv4TosUnusedMetricTag, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -267648,7 +313782,7 @@ func (obj *patternFlowIgmpv1TypeMetricTag) ToProto() (*otg.PatternFlowIgmpv1Type return obj.Msg(), nil } -func (obj *patternFlowIgmpv1TypeMetricTag) FromProto(msg *otg.PatternFlowIgmpv1TypeMetricTag) (PatternFlowIgmpv1TypeMetricTag, error) { +func (obj *patternFlowIpv4TosUnusedMetricTag) FromProto(msg *otg.PatternFlowIpv4TosUnusedMetricTag) (PatternFlowIpv4TosUnusedMetricTag, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -267657,7 +313791,7 @@ func (obj *patternFlowIgmpv1TypeMetricTag) FromProto(msg *otg.PatternFlowIgmpv1T return newObj, nil } -func (obj *patternFlowIgmpv1TypeMetricTag) ToPbText() (string, error) { +func (obj *patternFlowIpv4TosUnusedMetricTag) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -267669,7 +313803,7 @@ func (obj *patternFlowIgmpv1TypeMetricTag) ToPbText() (string, error) { return string(protoMarshal), nil } -func (obj *patternFlowIgmpv1TypeMetricTag) FromPbText(value string) error { +func (obj *patternFlowIpv4TosUnusedMetricTag) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj @@ -267682,7 +313816,7 @@ func (obj *patternFlowIgmpv1TypeMetricTag) FromPbText(value string) error { return retObj } -func (obj *patternFlowIgmpv1TypeMetricTag) ToYaml() (string, error) { +func (obj *patternFlowIpv4TosUnusedMetricTag) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -267703,7 +313837,7 @@ func (obj *patternFlowIgmpv1TypeMetricTag) ToYaml() (string, error) { return string(data), nil } -func (obj *patternFlowIgmpv1TypeMetricTag) FromYaml(value string) error { +func (obj *patternFlowIpv4TosUnusedMetricTag) FromYaml(value string) error { if value == "" { value = "{}" } @@ -267728,7 +313862,7 @@ func (obj *patternFlowIgmpv1TypeMetricTag) FromYaml(value string) error { return nil } -func (obj *patternFlowIgmpv1TypeMetricTag) ToJson() (string, error) { +func (obj *patternFlowIpv4TosUnusedMetricTag) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -267746,7 +313880,7 @@ func (obj *patternFlowIgmpv1TypeMetricTag) ToJson() (string, error) { return string(data), nil } -func (obj *patternFlowIgmpv1TypeMetricTag) FromJson(value string) error { +func (obj *patternFlowIpv4TosUnusedMetricTag) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -267767,19 +313901,19 @@ func (obj *patternFlowIgmpv1TypeMetricTag) FromJson(value string) error { return nil } -func (obj *patternFlowIgmpv1TypeMetricTag) validateToAndFrom() error { +func (obj *patternFlowIpv4TosUnusedMetricTag) validateToAndFrom() error { // emptyVars() obj.validateObj(&obj.validation, true) return obj.validationResult() } -func (obj *patternFlowIgmpv1TypeMetricTag) Validate() error { +func (obj *patternFlowIpv4TosUnusedMetricTag) Validate() error { // emptyVars() obj.validateObj(&obj.validation, false) return obj.validationResult() } -func (obj *patternFlowIgmpv1TypeMetricTag) String() string { +func (obj *patternFlowIpv4TosUnusedMetricTag) String() string { str, err := obj.ToYaml() if err != nil { return err.Error() @@ -267787,12 +313921,12 @@ func (obj *patternFlowIgmpv1TypeMetricTag) String() string { return str } -func (obj *patternFlowIgmpv1TypeMetricTag) Clone() (PatternFlowIgmpv1TypeMetricTag, error) { +func (obj *patternFlowIpv4TosUnusedMetricTag) Clone() (PatternFlowIpv4TosUnusedMetricTag, error) { vErr := obj.Validate() if vErr != nil { return nil, vErr } - newObj := NewPatternFlowIgmpv1TypeMetricTag() + newObj := NewPatternFlowIpv4TosUnusedMetricTag() data, err := proto.Marshal(obj.Msg()) if err != nil { return nil, err @@ -267804,69 +313938,69 @@ func (obj *patternFlowIgmpv1TypeMetricTag) Clone() (PatternFlowIgmpv1TypeMetricT return newObj, nil } -// PatternFlowIgmpv1TypeMetricTag is metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. -type PatternFlowIgmpv1TypeMetricTag interface { +// PatternFlowIpv4TosUnusedMetricTag is metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. +type PatternFlowIpv4TosUnusedMetricTag interface { Validation - // Msg marshals PatternFlowIgmpv1TypeMetricTag to protobuf object *otg.PatternFlowIgmpv1TypeMetricTag + // Msg marshals PatternFlowIpv4TosUnusedMetricTag to protobuf object *otg.PatternFlowIpv4TosUnusedMetricTag // and doesn't set defaults - Msg() *otg.PatternFlowIgmpv1TypeMetricTag - // SetMsg unmarshals PatternFlowIgmpv1TypeMetricTag from protobuf object *otg.PatternFlowIgmpv1TypeMetricTag + Msg() *otg.PatternFlowIpv4TosUnusedMetricTag + // SetMsg unmarshals PatternFlowIpv4TosUnusedMetricTag from protobuf object *otg.PatternFlowIpv4TosUnusedMetricTag // and doesn't set defaults - SetMsg(*otg.PatternFlowIgmpv1TypeMetricTag) PatternFlowIgmpv1TypeMetricTag - // ToProto marshals PatternFlowIgmpv1TypeMetricTag to protobuf object *otg.PatternFlowIgmpv1TypeMetricTag - ToProto() (*otg.PatternFlowIgmpv1TypeMetricTag, error) - // ToPbText marshals PatternFlowIgmpv1TypeMetricTag to protobuf text + SetMsg(*otg.PatternFlowIpv4TosUnusedMetricTag) PatternFlowIpv4TosUnusedMetricTag + // ToProto marshals PatternFlowIpv4TosUnusedMetricTag to protobuf object *otg.PatternFlowIpv4TosUnusedMetricTag + ToProto() (*otg.PatternFlowIpv4TosUnusedMetricTag, error) + // ToPbText marshals PatternFlowIpv4TosUnusedMetricTag to protobuf text ToPbText() (string, error) - // ToYaml marshals PatternFlowIgmpv1TypeMetricTag to YAML text + // ToYaml marshals PatternFlowIpv4TosUnusedMetricTag to YAML text ToYaml() (string, error) - // ToJson marshals PatternFlowIgmpv1TypeMetricTag to JSON text + // ToJson marshals PatternFlowIpv4TosUnusedMetricTag to JSON text ToJson() (string, error) - // FromProto unmarshals PatternFlowIgmpv1TypeMetricTag from protobuf object *otg.PatternFlowIgmpv1TypeMetricTag - FromProto(msg *otg.PatternFlowIgmpv1TypeMetricTag) (PatternFlowIgmpv1TypeMetricTag, error) - // FromPbText unmarshals PatternFlowIgmpv1TypeMetricTag from protobuf text + // FromProto unmarshals PatternFlowIpv4TosUnusedMetricTag from protobuf object *otg.PatternFlowIpv4TosUnusedMetricTag + FromProto(msg *otg.PatternFlowIpv4TosUnusedMetricTag) (PatternFlowIpv4TosUnusedMetricTag, error) + // FromPbText unmarshals PatternFlowIpv4TosUnusedMetricTag from protobuf text FromPbText(value string) error - // FromYaml unmarshals PatternFlowIgmpv1TypeMetricTag from YAML text + // FromYaml unmarshals PatternFlowIpv4TosUnusedMetricTag from YAML text FromYaml(value string) error - // FromJson unmarshals PatternFlowIgmpv1TypeMetricTag from JSON text + // FromJson unmarshals PatternFlowIpv4TosUnusedMetricTag from JSON text FromJson(value string) error - // Validate validates PatternFlowIgmpv1TypeMetricTag + // Validate validates PatternFlowIpv4TosUnusedMetricTag Validate() error // A stringer function String() string // Clones the object - Clone() (PatternFlowIgmpv1TypeMetricTag, error) + Clone() (PatternFlowIpv4TosUnusedMetricTag, error) validateToAndFrom() error validateObj(vObj *validation, set_default bool) setDefault() - // Name returns string, set in PatternFlowIgmpv1TypeMetricTag. + // Name returns string, set in PatternFlowIpv4TosUnusedMetricTag. Name() string - // SetName assigns string provided by user to PatternFlowIgmpv1TypeMetricTag - SetName(value string) PatternFlowIgmpv1TypeMetricTag - // Offset returns uint32, set in PatternFlowIgmpv1TypeMetricTag. + // SetName assigns string provided by user to PatternFlowIpv4TosUnusedMetricTag + SetName(value string) PatternFlowIpv4TosUnusedMetricTag + // Offset returns uint32, set in PatternFlowIpv4TosUnusedMetricTag. Offset() uint32 - // SetOffset assigns uint32 provided by user to PatternFlowIgmpv1TypeMetricTag - SetOffset(value uint32) PatternFlowIgmpv1TypeMetricTag - // HasOffset checks if Offset has been set in PatternFlowIgmpv1TypeMetricTag + // SetOffset assigns uint32 provided by user to PatternFlowIpv4TosUnusedMetricTag + SetOffset(value uint32) PatternFlowIpv4TosUnusedMetricTag + // HasOffset checks if Offset has been set in PatternFlowIpv4TosUnusedMetricTag HasOffset() bool - // Length returns uint32, set in PatternFlowIgmpv1TypeMetricTag. + // Length returns uint32, set in PatternFlowIpv4TosUnusedMetricTag. Length() uint32 - // SetLength assigns uint32 provided by user to PatternFlowIgmpv1TypeMetricTag - SetLength(value uint32) PatternFlowIgmpv1TypeMetricTag - // HasLength checks if Length has been set in PatternFlowIgmpv1TypeMetricTag + // SetLength assigns uint32 provided by user to PatternFlowIpv4TosUnusedMetricTag + SetLength(value uint32) PatternFlowIpv4TosUnusedMetricTag + // HasLength checks if Length has been set in PatternFlowIpv4TosUnusedMetricTag HasLength() bool } // Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field // Name returns a string -func (obj *patternFlowIgmpv1TypeMetricTag) Name() string { +func (obj *patternFlowIpv4TosUnusedMetricTag) Name() string { return *obj.obj.Name } // Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field -// SetName sets the string value in the PatternFlowIgmpv1TypeMetricTag object -func (obj *patternFlowIgmpv1TypeMetricTag) SetName(value string) PatternFlowIgmpv1TypeMetricTag { +// SetName sets the string value in the PatternFlowIpv4TosUnusedMetricTag object +func (obj *patternFlowIpv4TosUnusedMetricTag) SetName(value string) PatternFlowIpv4TosUnusedMetricTag { obj.obj.Name = &value return obj @@ -267874,7 +314008,7 @@ func (obj *patternFlowIgmpv1TypeMetricTag) SetName(value string) PatternFlowIgmp // Offset in bits relative to start of corresponding header field // Offset returns a uint32 -func (obj *patternFlowIgmpv1TypeMetricTag) Offset() uint32 { +func (obj *patternFlowIpv4TosUnusedMetricTag) Offset() uint32 { return *obj.obj.Offset @@ -267882,13 +314016,13 @@ func (obj *patternFlowIgmpv1TypeMetricTag) Offset() uint32 { // Offset in bits relative to start of corresponding header field // Offset returns a uint32 -func (obj *patternFlowIgmpv1TypeMetricTag) HasOffset() bool { +func (obj *patternFlowIpv4TosUnusedMetricTag) HasOffset() bool { return obj.obj.Offset != nil } // Offset in bits relative to start of corresponding header field -// SetOffset sets the uint32 value in the PatternFlowIgmpv1TypeMetricTag object -func (obj *patternFlowIgmpv1TypeMetricTag) SetOffset(value uint32) PatternFlowIgmpv1TypeMetricTag { +// SetOffset sets the uint32 value in the PatternFlowIpv4TosUnusedMetricTag object +func (obj *patternFlowIpv4TosUnusedMetricTag) SetOffset(value uint32) PatternFlowIpv4TosUnusedMetricTag { obj.obj.Offset = &value return obj @@ -267896,7 +314030,7 @@ func (obj *patternFlowIgmpv1TypeMetricTag) SetOffset(value uint32) PatternFlowIg // Number of bits to track for metrics starting from configured offset of corresponding header field // Length returns a uint32 -func (obj *patternFlowIgmpv1TypeMetricTag) Length() uint32 { +func (obj *patternFlowIpv4TosUnusedMetricTag) Length() uint32 { return *obj.obj.Length @@ -267904,83 +314038,83 @@ func (obj *patternFlowIgmpv1TypeMetricTag) Length() uint32 { // Number of bits to track for metrics starting from configured offset of corresponding header field // Length returns a uint32 -func (obj *patternFlowIgmpv1TypeMetricTag) HasLength() bool { +func (obj *patternFlowIpv4TosUnusedMetricTag) HasLength() bool { return obj.obj.Length != nil } // Number of bits to track for metrics starting from configured offset of corresponding header field -// SetLength sets the uint32 value in the PatternFlowIgmpv1TypeMetricTag object -func (obj *patternFlowIgmpv1TypeMetricTag) SetLength(value uint32) PatternFlowIgmpv1TypeMetricTag { +// SetLength sets the uint32 value in the PatternFlowIpv4TosUnusedMetricTag object +func (obj *patternFlowIpv4TosUnusedMetricTag) SetLength(value uint32) PatternFlowIpv4TosUnusedMetricTag { obj.obj.Length = &value return obj } -func (obj *patternFlowIgmpv1TypeMetricTag) validateObj(vObj *validation, set_default bool) { +func (obj *patternFlowIpv4TosUnusedMetricTag) validateObj(vObj *validation, set_default bool) { if set_default { obj.setDefault() } // Name is required if obj.obj.Name == nil { - vObj.validationErrors = append(vObj.validationErrors, "Name is required field on interface PatternFlowIgmpv1TypeMetricTag") + vObj.validationErrors = append(vObj.validationErrors, "Name is required field on interface PatternFlowIpv4TosUnusedMetricTag") } if obj.obj.Offset != nil { - if *obj.obj.Offset > 3 { + if *obj.obj.Offset > 0 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowIgmpv1TypeMetricTag.Offset <= 3 but Got %d", *obj.obj.Offset)) + fmt.Sprintf("0 <= PatternFlowIpv4TosUnusedMetricTag.Offset <= 0 but Got %d", *obj.obj.Offset)) } } if obj.obj.Length != nil { - if *obj.obj.Length < 1 || *obj.obj.Length > 4 { + if *obj.obj.Length < 1 || *obj.obj.Length > 1 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("1 <= PatternFlowIgmpv1TypeMetricTag.Length <= 4 but Got %d", *obj.obj.Length)) + fmt.Sprintf("1 <= PatternFlowIpv4TosUnusedMetricTag.Length <= 1 but Got %d", *obj.obj.Length)) } } } -func (obj *patternFlowIgmpv1TypeMetricTag) setDefault() { +func (obj *patternFlowIpv4TosUnusedMetricTag) setDefault() { if obj.obj.Offset == nil { obj.SetOffset(0) } if obj.obj.Length == nil { - obj.SetLength(4) + obj.SetLength(1) } } -// ***** PatternFlowIgmpv1UnusedCounter ***** -type patternFlowIgmpv1UnusedCounter struct { +// ***** PatternFlowIpv4DscpPhbCounter ***** +type patternFlowIpv4DscpPhbCounter struct { validation - obj *otg.PatternFlowIgmpv1UnusedCounter + obj *otg.PatternFlowIpv4DscpPhbCounter } -func NewPatternFlowIgmpv1UnusedCounter() PatternFlowIgmpv1UnusedCounter { - obj := patternFlowIgmpv1UnusedCounter{obj: &otg.PatternFlowIgmpv1UnusedCounter{}} +func NewPatternFlowIpv4DscpPhbCounter() PatternFlowIpv4DscpPhbCounter { + obj := patternFlowIpv4DscpPhbCounter{obj: &otg.PatternFlowIpv4DscpPhbCounter{}} obj.setDefault() return &obj } -func (obj *patternFlowIgmpv1UnusedCounter) Msg() *otg.PatternFlowIgmpv1UnusedCounter { +func (obj *patternFlowIpv4DscpPhbCounter) Msg() *otg.PatternFlowIpv4DscpPhbCounter { return obj.obj } -func (obj *patternFlowIgmpv1UnusedCounter) SetMsg(msg *otg.PatternFlowIgmpv1UnusedCounter) PatternFlowIgmpv1UnusedCounter { +func (obj *patternFlowIpv4DscpPhbCounter) SetMsg(msg *otg.PatternFlowIpv4DscpPhbCounter) PatternFlowIpv4DscpPhbCounter { proto.Merge(obj.obj, msg) return obj } -func (obj *patternFlowIgmpv1UnusedCounter) ToProto() (*otg.PatternFlowIgmpv1UnusedCounter, error) { +func (obj *patternFlowIpv4DscpPhbCounter) ToProto() (*otg.PatternFlowIpv4DscpPhbCounter, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -267988,7 +314122,7 @@ func (obj *patternFlowIgmpv1UnusedCounter) ToProto() (*otg.PatternFlowIgmpv1Unus return obj.Msg(), nil } -func (obj *patternFlowIgmpv1UnusedCounter) FromProto(msg *otg.PatternFlowIgmpv1UnusedCounter) (PatternFlowIgmpv1UnusedCounter, error) { +func (obj *patternFlowIpv4DscpPhbCounter) FromProto(msg *otg.PatternFlowIpv4DscpPhbCounter) (PatternFlowIpv4DscpPhbCounter, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -267997,7 +314131,7 @@ func (obj *patternFlowIgmpv1UnusedCounter) FromProto(msg *otg.PatternFlowIgmpv1U return newObj, nil } -func (obj *patternFlowIgmpv1UnusedCounter) ToPbText() (string, error) { +func (obj *patternFlowIpv4DscpPhbCounter) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -268009,7 +314143,7 @@ func (obj *patternFlowIgmpv1UnusedCounter) ToPbText() (string, error) { return string(protoMarshal), nil } -func (obj *patternFlowIgmpv1UnusedCounter) FromPbText(value string) error { +func (obj *patternFlowIpv4DscpPhbCounter) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj @@ -268022,7 +314156,7 @@ func (obj *patternFlowIgmpv1UnusedCounter) FromPbText(value string) error { return retObj } -func (obj *patternFlowIgmpv1UnusedCounter) ToYaml() (string, error) { +func (obj *patternFlowIpv4DscpPhbCounter) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -268043,7 +314177,7 @@ func (obj *patternFlowIgmpv1UnusedCounter) ToYaml() (string, error) { return string(data), nil } -func (obj *patternFlowIgmpv1UnusedCounter) FromYaml(value string) error { +func (obj *patternFlowIpv4DscpPhbCounter) FromYaml(value string) error { if value == "" { value = "{}" } @@ -268068,7 +314202,7 @@ func (obj *patternFlowIgmpv1UnusedCounter) FromYaml(value string) error { return nil } -func (obj *patternFlowIgmpv1UnusedCounter) ToJson() (string, error) { +func (obj *patternFlowIpv4DscpPhbCounter) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -268086,7 +314220,7 @@ func (obj *patternFlowIgmpv1UnusedCounter) ToJson() (string, error) { return string(data), nil } -func (obj *patternFlowIgmpv1UnusedCounter) FromJson(value string) error { +func (obj *patternFlowIpv4DscpPhbCounter) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -268107,19 +314241,19 @@ func (obj *patternFlowIgmpv1UnusedCounter) FromJson(value string) error { return nil } -func (obj *patternFlowIgmpv1UnusedCounter) validateToAndFrom() error { +func (obj *patternFlowIpv4DscpPhbCounter) validateToAndFrom() error { // emptyVars() obj.validateObj(&obj.validation, true) return obj.validationResult() } -func (obj *patternFlowIgmpv1UnusedCounter) Validate() error { +func (obj *patternFlowIpv4DscpPhbCounter) Validate() error { // emptyVars() obj.validateObj(&obj.validation, false) return obj.validationResult() } -func (obj *patternFlowIgmpv1UnusedCounter) String() string { +func (obj *patternFlowIpv4DscpPhbCounter) String() string { str, err := obj.ToYaml() if err != nil { return err.Error() @@ -268127,12 +314261,12 @@ func (obj *patternFlowIgmpv1UnusedCounter) String() string { return str } -func (obj *patternFlowIgmpv1UnusedCounter) Clone() (PatternFlowIgmpv1UnusedCounter, error) { +func (obj *patternFlowIpv4DscpPhbCounter) Clone() (PatternFlowIpv4DscpPhbCounter, error) { vErr := obj.Validate() if vErr != nil { return nil, vErr } - newObj := NewPatternFlowIgmpv1UnusedCounter() + newObj := NewPatternFlowIpv4DscpPhbCounter() data, err := proto.Marshal(obj.Msg()) if err != nil { return nil, err @@ -268144,63 +314278,63 @@ func (obj *patternFlowIgmpv1UnusedCounter) Clone() (PatternFlowIgmpv1UnusedCount return newObj, nil } -// PatternFlowIgmpv1UnusedCounter is integer counter pattern -type PatternFlowIgmpv1UnusedCounter interface { +// PatternFlowIpv4DscpPhbCounter is integer counter pattern +type PatternFlowIpv4DscpPhbCounter interface { Validation - // Msg marshals PatternFlowIgmpv1UnusedCounter to protobuf object *otg.PatternFlowIgmpv1UnusedCounter + // Msg marshals PatternFlowIpv4DscpPhbCounter to protobuf object *otg.PatternFlowIpv4DscpPhbCounter // and doesn't set defaults - Msg() *otg.PatternFlowIgmpv1UnusedCounter - // SetMsg unmarshals PatternFlowIgmpv1UnusedCounter from protobuf object *otg.PatternFlowIgmpv1UnusedCounter + Msg() *otg.PatternFlowIpv4DscpPhbCounter + // SetMsg unmarshals PatternFlowIpv4DscpPhbCounter from protobuf object *otg.PatternFlowIpv4DscpPhbCounter // and doesn't set defaults - SetMsg(*otg.PatternFlowIgmpv1UnusedCounter) PatternFlowIgmpv1UnusedCounter - // ToProto marshals PatternFlowIgmpv1UnusedCounter to protobuf object *otg.PatternFlowIgmpv1UnusedCounter - ToProto() (*otg.PatternFlowIgmpv1UnusedCounter, error) - // ToPbText marshals PatternFlowIgmpv1UnusedCounter to protobuf text + SetMsg(*otg.PatternFlowIpv4DscpPhbCounter) PatternFlowIpv4DscpPhbCounter + // ToProto marshals PatternFlowIpv4DscpPhbCounter to protobuf object *otg.PatternFlowIpv4DscpPhbCounter + ToProto() (*otg.PatternFlowIpv4DscpPhbCounter, error) + // ToPbText marshals PatternFlowIpv4DscpPhbCounter to protobuf text ToPbText() (string, error) - // ToYaml marshals PatternFlowIgmpv1UnusedCounter to YAML text + // ToYaml marshals PatternFlowIpv4DscpPhbCounter to YAML text ToYaml() (string, error) - // ToJson marshals PatternFlowIgmpv1UnusedCounter to JSON text + // ToJson marshals PatternFlowIpv4DscpPhbCounter to JSON text ToJson() (string, error) - // FromProto unmarshals PatternFlowIgmpv1UnusedCounter from protobuf object *otg.PatternFlowIgmpv1UnusedCounter - FromProto(msg *otg.PatternFlowIgmpv1UnusedCounter) (PatternFlowIgmpv1UnusedCounter, error) - // FromPbText unmarshals PatternFlowIgmpv1UnusedCounter from protobuf text + // FromProto unmarshals PatternFlowIpv4DscpPhbCounter from protobuf object *otg.PatternFlowIpv4DscpPhbCounter + FromProto(msg *otg.PatternFlowIpv4DscpPhbCounter) (PatternFlowIpv4DscpPhbCounter, error) + // FromPbText unmarshals PatternFlowIpv4DscpPhbCounter from protobuf text FromPbText(value string) error - // FromYaml unmarshals PatternFlowIgmpv1UnusedCounter from YAML text + // FromYaml unmarshals PatternFlowIpv4DscpPhbCounter from YAML text FromYaml(value string) error - // FromJson unmarshals PatternFlowIgmpv1UnusedCounter from JSON text + // FromJson unmarshals PatternFlowIpv4DscpPhbCounter from JSON text FromJson(value string) error - // Validate validates PatternFlowIgmpv1UnusedCounter + // Validate validates PatternFlowIpv4DscpPhbCounter Validate() error // A stringer function String() string // Clones the object - Clone() (PatternFlowIgmpv1UnusedCounter, error) + Clone() (PatternFlowIpv4DscpPhbCounter, error) validateToAndFrom() error validateObj(vObj *validation, set_default bool) setDefault() - // Start returns uint32, set in PatternFlowIgmpv1UnusedCounter. + // Start returns uint32, set in PatternFlowIpv4DscpPhbCounter. Start() uint32 - // SetStart assigns uint32 provided by user to PatternFlowIgmpv1UnusedCounter - SetStart(value uint32) PatternFlowIgmpv1UnusedCounter - // HasStart checks if Start has been set in PatternFlowIgmpv1UnusedCounter + // SetStart assigns uint32 provided by user to PatternFlowIpv4DscpPhbCounter + SetStart(value uint32) PatternFlowIpv4DscpPhbCounter + // HasStart checks if Start has been set in PatternFlowIpv4DscpPhbCounter HasStart() bool - // Step returns uint32, set in PatternFlowIgmpv1UnusedCounter. + // Step returns uint32, set in PatternFlowIpv4DscpPhbCounter. Step() uint32 - // SetStep assigns uint32 provided by user to PatternFlowIgmpv1UnusedCounter - SetStep(value uint32) PatternFlowIgmpv1UnusedCounter - // HasStep checks if Step has been set in PatternFlowIgmpv1UnusedCounter + // SetStep assigns uint32 provided by user to PatternFlowIpv4DscpPhbCounter + SetStep(value uint32) PatternFlowIpv4DscpPhbCounter + // HasStep checks if Step has been set in PatternFlowIpv4DscpPhbCounter HasStep() bool - // Count returns uint32, set in PatternFlowIgmpv1UnusedCounter. + // Count returns uint32, set in PatternFlowIpv4DscpPhbCounter. Count() uint32 - // SetCount assigns uint32 provided by user to PatternFlowIgmpv1UnusedCounter - SetCount(value uint32) PatternFlowIgmpv1UnusedCounter - // HasCount checks if Count has been set in PatternFlowIgmpv1UnusedCounter + // SetCount assigns uint32 provided by user to PatternFlowIpv4DscpPhbCounter + SetCount(value uint32) PatternFlowIpv4DscpPhbCounter + // HasCount checks if Count has been set in PatternFlowIpv4DscpPhbCounter HasCount() bool } // description is TBD // Start returns a uint32 -func (obj *patternFlowIgmpv1UnusedCounter) Start() uint32 { +func (obj *patternFlowIpv4DscpPhbCounter) Start() uint32 { return *obj.obj.Start @@ -268208,13 +314342,13 @@ func (obj *patternFlowIgmpv1UnusedCounter) Start() uint32 { // description is TBD // Start returns a uint32 -func (obj *patternFlowIgmpv1UnusedCounter) HasStart() bool { +func (obj *patternFlowIpv4DscpPhbCounter) HasStart() bool { return obj.obj.Start != nil } // description is TBD -// SetStart sets the uint32 value in the PatternFlowIgmpv1UnusedCounter object -func (obj *patternFlowIgmpv1UnusedCounter) SetStart(value uint32) PatternFlowIgmpv1UnusedCounter { +// SetStart sets the uint32 value in the PatternFlowIpv4DscpPhbCounter object +func (obj *patternFlowIpv4DscpPhbCounter) SetStart(value uint32) PatternFlowIpv4DscpPhbCounter { obj.obj.Start = &value return obj @@ -268222,7 +314356,7 @@ func (obj *patternFlowIgmpv1UnusedCounter) SetStart(value uint32) PatternFlowIgm // description is TBD // Step returns a uint32 -func (obj *patternFlowIgmpv1UnusedCounter) Step() uint32 { +func (obj *patternFlowIpv4DscpPhbCounter) Step() uint32 { return *obj.obj.Step @@ -268230,13 +314364,13 @@ func (obj *patternFlowIgmpv1UnusedCounter) Step() uint32 { // description is TBD // Step returns a uint32 -func (obj *patternFlowIgmpv1UnusedCounter) HasStep() bool { +func (obj *patternFlowIpv4DscpPhbCounter) HasStep() bool { return obj.obj.Step != nil } // description is TBD -// SetStep sets the uint32 value in the PatternFlowIgmpv1UnusedCounter object -func (obj *patternFlowIgmpv1UnusedCounter) SetStep(value uint32) PatternFlowIgmpv1UnusedCounter { +// SetStep sets the uint32 value in the PatternFlowIpv4DscpPhbCounter object +func (obj *patternFlowIpv4DscpPhbCounter) SetStep(value uint32) PatternFlowIpv4DscpPhbCounter { obj.obj.Step = &value return obj @@ -268244,7 +314378,7 @@ func (obj *patternFlowIgmpv1UnusedCounter) SetStep(value uint32) PatternFlowIgmp // description is TBD // Count returns a uint32 -func (obj *patternFlowIgmpv1UnusedCounter) Count() uint32 { +func (obj *patternFlowIpv4DscpPhbCounter) Count() uint32 { return *obj.obj.Count @@ -268252,56 +314386,56 @@ func (obj *patternFlowIgmpv1UnusedCounter) Count() uint32 { // description is TBD // Count returns a uint32 -func (obj *patternFlowIgmpv1UnusedCounter) HasCount() bool { +func (obj *patternFlowIpv4DscpPhbCounter) HasCount() bool { return obj.obj.Count != nil } // description is TBD -// SetCount sets the uint32 value in the PatternFlowIgmpv1UnusedCounter object -func (obj *patternFlowIgmpv1UnusedCounter) SetCount(value uint32) PatternFlowIgmpv1UnusedCounter { +// SetCount sets the uint32 value in the PatternFlowIpv4DscpPhbCounter object +func (obj *patternFlowIpv4DscpPhbCounter) SetCount(value uint32) PatternFlowIpv4DscpPhbCounter { obj.obj.Count = &value return obj } -func (obj *patternFlowIgmpv1UnusedCounter) validateObj(vObj *validation, set_default bool) { +func (obj *patternFlowIpv4DscpPhbCounter) validateObj(vObj *validation, set_default bool) { if set_default { obj.setDefault() } if obj.obj.Start != nil { - if *obj.obj.Start > 255 { + if *obj.obj.Start > 63 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowIgmpv1UnusedCounter.Start <= 255 but Got %d", *obj.obj.Start)) + fmt.Sprintf("0 <= PatternFlowIpv4DscpPhbCounter.Start <= 63 but Got %d", *obj.obj.Start)) } } if obj.obj.Step != nil { - if *obj.obj.Step > 255 { + if *obj.obj.Step > 63 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowIgmpv1UnusedCounter.Step <= 255 but Got %d", *obj.obj.Step)) + fmt.Sprintf("0 <= PatternFlowIpv4DscpPhbCounter.Step <= 63 but Got %d", *obj.obj.Step)) } } if obj.obj.Count != nil { - if *obj.obj.Count > 255 { + if *obj.obj.Count > 63 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowIgmpv1UnusedCounter.Count <= 255 but Got %d", *obj.obj.Count)) + fmt.Sprintf("0 <= PatternFlowIpv4DscpPhbCounter.Count <= 63 but Got %d", *obj.obj.Count)) } } } -func (obj *patternFlowIgmpv1UnusedCounter) setDefault() { +func (obj *patternFlowIpv4DscpPhbCounter) setDefault() { if obj.obj.Start == nil { obj.SetStart(0) } @@ -268314,29 +314448,29 @@ func (obj *patternFlowIgmpv1UnusedCounter) setDefault() { } -// ***** PatternFlowIgmpv1UnusedMetricTag ***** -type patternFlowIgmpv1UnusedMetricTag struct { +// ***** PatternFlowIpv4DscpPhbMetricTag ***** +type patternFlowIpv4DscpPhbMetricTag struct { validation - obj *otg.PatternFlowIgmpv1UnusedMetricTag + obj *otg.PatternFlowIpv4DscpPhbMetricTag } -func NewPatternFlowIgmpv1UnusedMetricTag() PatternFlowIgmpv1UnusedMetricTag { - obj := patternFlowIgmpv1UnusedMetricTag{obj: &otg.PatternFlowIgmpv1UnusedMetricTag{}} +func NewPatternFlowIpv4DscpPhbMetricTag() PatternFlowIpv4DscpPhbMetricTag { + obj := patternFlowIpv4DscpPhbMetricTag{obj: &otg.PatternFlowIpv4DscpPhbMetricTag{}} obj.setDefault() return &obj } -func (obj *patternFlowIgmpv1UnusedMetricTag) Msg() *otg.PatternFlowIgmpv1UnusedMetricTag { +func (obj *patternFlowIpv4DscpPhbMetricTag) Msg() *otg.PatternFlowIpv4DscpPhbMetricTag { return obj.obj } -func (obj *patternFlowIgmpv1UnusedMetricTag) SetMsg(msg *otg.PatternFlowIgmpv1UnusedMetricTag) PatternFlowIgmpv1UnusedMetricTag { +func (obj *patternFlowIpv4DscpPhbMetricTag) SetMsg(msg *otg.PatternFlowIpv4DscpPhbMetricTag) PatternFlowIpv4DscpPhbMetricTag { proto.Merge(obj.obj, msg) return obj } -func (obj *patternFlowIgmpv1UnusedMetricTag) ToProto() (*otg.PatternFlowIgmpv1UnusedMetricTag, error) { +func (obj *patternFlowIpv4DscpPhbMetricTag) ToProto() (*otg.PatternFlowIpv4DscpPhbMetricTag, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -268344,7 +314478,7 @@ func (obj *patternFlowIgmpv1UnusedMetricTag) ToProto() (*otg.PatternFlowIgmpv1Un return obj.Msg(), nil } -func (obj *patternFlowIgmpv1UnusedMetricTag) FromProto(msg *otg.PatternFlowIgmpv1UnusedMetricTag) (PatternFlowIgmpv1UnusedMetricTag, error) { +func (obj *patternFlowIpv4DscpPhbMetricTag) FromProto(msg *otg.PatternFlowIpv4DscpPhbMetricTag) (PatternFlowIpv4DscpPhbMetricTag, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -268353,7 +314487,7 @@ func (obj *patternFlowIgmpv1UnusedMetricTag) FromProto(msg *otg.PatternFlowIgmpv return newObj, nil } -func (obj *patternFlowIgmpv1UnusedMetricTag) ToPbText() (string, error) { +func (obj *patternFlowIpv4DscpPhbMetricTag) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -268365,7 +314499,7 @@ func (obj *patternFlowIgmpv1UnusedMetricTag) ToPbText() (string, error) { return string(protoMarshal), nil } -func (obj *patternFlowIgmpv1UnusedMetricTag) FromPbText(value string) error { +func (obj *patternFlowIpv4DscpPhbMetricTag) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj @@ -268378,7 +314512,7 @@ func (obj *patternFlowIgmpv1UnusedMetricTag) FromPbText(value string) error { return retObj } -func (obj *patternFlowIgmpv1UnusedMetricTag) ToYaml() (string, error) { +func (obj *patternFlowIpv4DscpPhbMetricTag) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -268399,7 +314533,7 @@ func (obj *patternFlowIgmpv1UnusedMetricTag) ToYaml() (string, error) { return string(data), nil } -func (obj *patternFlowIgmpv1UnusedMetricTag) FromYaml(value string) error { +func (obj *patternFlowIpv4DscpPhbMetricTag) FromYaml(value string) error { if value == "" { value = "{}" } @@ -268424,7 +314558,7 @@ func (obj *patternFlowIgmpv1UnusedMetricTag) FromYaml(value string) error { return nil } -func (obj *patternFlowIgmpv1UnusedMetricTag) ToJson() (string, error) { +func (obj *patternFlowIpv4DscpPhbMetricTag) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -268442,7 +314576,7 @@ func (obj *patternFlowIgmpv1UnusedMetricTag) ToJson() (string, error) { return string(data), nil } -func (obj *patternFlowIgmpv1UnusedMetricTag) FromJson(value string) error { +func (obj *patternFlowIpv4DscpPhbMetricTag) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -268463,19 +314597,19 @@ func (obj *patternFlowIgmpv1UnusedMetricTag) FromJson(value string) error { return nil } -func (obj *patternFlowIgmpv1UnusedMetricTag) validateToAndFrom() error { +func (obj *patternFlowIpv4DscpPhbMetricTag) validateToAndFrom() error { // emptyVars() obj.validateObj(&obj.validation, true) return obj.validationResult() } -func (obj *patternFlowIgmpv1UnusedMetricTag) Validate() error { +func (obj *patternFlowIpv4DscpPhbMetricTag) Validate() error { // emptyVars() obj.validateObj(&obj.validation, false) return obj.validationResult() } -func (obj *patternFlowIgmpv1UnusedMetricTag) String() string { +func (obj *patternFlowIpv4DscpPhbMetricTag) String() string { str, err := obj.ToYaml() if err != nil { return err.Error() @@ -268483,12 +314617,12 @@ func (obj *patternFlowIgmpv1UnusedMetricTag) String() string { return str } -func (obj *patternFlowIgmpv1UnusedMetricTag) Clone() (PatternFlowIgmpv1UnusedMetricTag, error) { +func (obj *patternFlowIpv4DscpPhbMetricTag) Clone() (PatternFlowIpv4DscpPhbMetricTag, error) { vErr := obj.Validate() if vErr != nil { return nil, vErr } - newObj := NewPatternFlowIgmpv1UnusedMetricTag() + newObj := NewPatternFlowIpv4DscpPhbMetricTag() data, err := proto.Marshal(obj.Msg()) if err != nil { return nil, err @@ -268500,69 +314634,69 @@ func (obj *patternFlowIgmpv1UnusedMetricTag) Clone() (PatternFlowIgmpv1UnusedMet return newObj, nil } -// PatternFlowIgmpv1UnusedMetricTag is metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. -type PatternFlowIgmpv1UnusedMetricTag interface { +// PatternFlowIpv4DscpPhbMetricTag is metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. +type PatternFlowIpv4DscpPhbMetricTag interface { Validation - // Msg marshals PatternFlowIgmpv1UnusedMetricTag to protobuf object *otg.PatternFlowIgmpv1UnusedMetricTag + // Msg marshals PatternFlowIpv4DscpPhbMetricTag to protobuf object *otg.PatternFlowIpv4DscpPhbMetricTag // and doesn't set defaults - Msg() *otg.PatternFlowIgmpv1UnusedMetricTag - // SetMsg unmarshals PatternFlowIgmpv1UnusedMetricTag from protobuf object *otg.PatternFlowIgmpv1UnusedMetricTag + Msg() *otg.PatternFlowIpv4DscpPhbMetricTag + // SetMsg unmarshals PatternFlowIpv4DscpPhbMetricTag from protobuf object *otg.PatternFlowIpv4DscpPhbMetricTag // and doesn't set defaults - SetMsg(*otg.PatternFlowIgmpv1UnusedMetricTag) PatternFlowIgmpv1UnusedMetricTag - // ToProto marshals PatternFlowIgmpv1UnusedMetricTag to protobuf object *otg.PatternFlowIgmpv1UnusedMetricTag - ToProto() (*otg.PatternFlowIgmpv1UnusedMetricTag, error) - // ToPbText marshals PatternFlowIgmpv1UnusedMetricTag to protobuf text + SetMsg(*otg.PatternFlowIpv4DscpPhbMetricTag) PatternFlowIpv4DscpPhbMetricTag + // ToProto marshals PatternFlowIpv4DscpPhbMetricTag to protobuf object *otg.PatternFlowIpv4DscpPhbMetricTag + ToProto() (*otg.PatternFlowIpv4DscpPhbMetricTag, error) + // ToPbText marshals PatternFlowIpv4DscpPhbMetricTag to protobuf text ToPbText() (string, error) - // ToYaml marshals PatternFlowIgmpv1UnusedMetricTag to YAML text + // ToYaml marshals PatternFlowIpv4DscpPhbMetricTag to YAML text ToYaml() (string, error) - // ToJson marshals PatternFlowIgmpv1UnusedMetricTag to JSON text + // ToJson marshals PatternFlowIpv4DscpPhbMetricTag to JSON text ToJson() (string, error) - // FromProto unmarshals PatternFlowIgmpv1UnusedMetricTag from protobuf object *otg.PatternFlowIgmpv1UnusedMetricTag - FromProto(msg *otg.PatternFlowIgmpv1UnusedMetricTag) (PatternFlowIgmpv1UnusedMetricTag, error) - // FromPbText unmarshals PatternFlowIgmpv1UnusedMetricTag from protobuf text + // FromProto unmarshals PatternFlowIpv4DscpPhbMetricTag from protobuf object *otg.PatternFlowIpv4DscpPhbMetricTag + FromProto(msg *otg.PatternFlowIpv4DscpPhbMetricTag) (PatternFlowIpv4DscpPhbMetricTag, error) + // FromPbText unmarshals PatternFlowIpv4DscpPhbMetricTag from protobuf text FromPbText(value string) error - // FromYaml unmarshals PatternFlowIgmpv1UnusedMetricTag from YAML text + // FromYaml unmarshals PatternFlowIpv4DscpPhbMetricTag from YAML text FromYaml(value string) error - // FromJson unmarshals PatternFlowIgmpv1UnusedMetricTag from JSON text + // FromJson unmarshals PatternFlowIpv4DscpPhbMetricTag from JSON text FromJson(value string) error - // Validate validates PatternFlowIgmpv1UnusedMetricTag + // Validate validates PatternFlowIpv4DscpPhbMetricTag Validate() error // A stringer function String() string // Clones the object - Clone() (PatternFlowIgmpv1UnusedMetricTag, error) + Clone() (PatternFlowIpv4DscpPhbMetricTag, error) validateToAndFrom() error validateObj(vObj *validation, set_default bool) setDefault() - // Name returns string, set in PatternFlowIgmpv1UnusedMetricTag. + // Name returns string, set in PatternFlowIpv4DscpPhbMetricTag. Name() string - // SetName assigns string provided by user to PatternFlowIgmpv1UnusedMetricTag - SetName(value string) PatternFlowIgmpv1UnusedMetricTag - // Offset returns uint32, set in PatternFlowIgmpv1UnusedMetricTag. + // SetName assigns string provided by user to PatternFlowIpv4DscpPhbMetricTag + SetName(value string) PatternFlowIpv4DscpPhbMetricTag + // Offset returns uint32, set in PatternFlowIpv4DscpPhbMetricTag. Offset() uint32 - // SetOffset assigns uint32 provided by user to PatternFlowIgmpv1UnusedMetricTag - SetOffset(value uint32) PatternFlowIgmpv1UnusedMetricTag - // HasOffset checks if Offset has been set in PatternFlowIgmpv1UnusedMetricTag + // SetOffset assigns uint32 provided by user to PatternFlowIpv4DscpPhbMetricTag + SetOffset(value uint32) PatternFlowIpv4DscpPhbMetricTag + // HasOffset checks if Offset has been set in PatternFlowIpv4DscpPhbMetricTag HasOffset() bool - // Length returns uint32, set in PatternFlowIgmpv1UnusedMetricTag. + // Length returns uint32, set in PatternFlowIpv4DscpPhbMetricTag. Length() uint32 - // SetLength assigns uint32 provided by user to PatternFlowIgmpv1UnusedMetricTag - SetLength(value uint32) PatternFlowIgmpv1UnusedMetricTag - // HasLength checks if Length has been set in PatternFlowIgmpv1UnusedMetricTag + // SetLength assigns uint32 provided by user to PatternFlowIpv4DscpPhbMetricTag + SetLength(value uint32) PatternFlowIpv4DscpPhbMetricTag + // HasLength checks if Length has been set in PatternFlowIpv4DscpPhbMetricTag HasLength() bool } // Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field // Name returns a string -func (obj *patternFlowIgmpv1UnusedMetricTag) Name() string { +func (obj *patternFlowIpv4DscpPhbMetricTag) Name() string { return *obj.obj.Name } // Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field -// SetName sets the string value in the PatternFlowIgmpv1UnusedMetricTag object -func (obj *patternFlowIgmpv1UnusedMetricTag) SetName(value string) PatternFlowIgmpv1UnusedMetricTag { +// SetName sets the string value in the PatternFlowIpv4DscpPhbMetricTag object +func (obj *patternFlowIpv4DscpPhbMetricTag) SetName(value string) PatternFlowIpv4DscpPhbMetricTag { obj.obj.Name = &value return obj @@ -268570,7 +314704,7 @@ func (obj *patternFlowIgmpv1UnusedMetricTag) SetName(value string) PatternFlowIg // Offset in bits relative to start of corresponding header field // Offset returns a uint32 -func (obj *patternFlowIgmpv1UnusedMetricTag) Offset() uint32 { +func (obj *patternFlowIpv4DscpPhbMetricTag) Offset() uint32 { return *obj.obj.Offset @@ -268578,13 +314712,13 @@ func (obj *patternFlowIgmpv1UnusedMetricTag) Offset() uint32 { // Offset in bits relative to start of corresponding header field // Offset returns a uint32 -func (obj *patternFlowIgmpv1UnusedMetricTag) HasOffset() bool { +func (obj *patternFlowIpv4DscpPhbMetricTag) HasOffset() bool { return obj.obj.Offset != nil } // Offset in bits relative to start of corresponding header field -// SetOffset sets the uint32 value in the PatternFlowIgmpv1UnusedMetricTag object -func (obj *patternFlowIgmpv1UnusedMetricTag) SetOffset(value uint32) PatternFlowIgmpv1UnusedMetricTag { +// SetOffset sets the uint32 value in the PatternFlowIpv4DscpPhbMetricTag object +func (obj *patternFlowIpv4DscpPhbMetricTag) SetOffset(value uint32) PatternFlowIpv4DscpPhbMetricTag { obj.obj.Offset = &value return obj @@ -268592,7 +314726,7 @@ func (obj *patternFlowIgmpv1UnusedMetricTag) SetOffset(value uint32) PatternFlow // Number of bits to track for metrics starting from configured offset of corresponding header field // Length returns a uint32 -func (obj *patternFlowIgmpv1UnusedMetricTag) Length() uint32 { +func (obj *patternFlowIpv4DscpPhbMetricTag) Length() uint32 { return *obj.obj.Length @@ -268600,83 +314734,83 @@ func (obj *patternFlowIgmpv1UnusedMetricTag) Length() uint32 { // Number of bits to track for metrics starting from configured offset of corresponding header field // Length returns a uint32 -func (obj *patternFlowIgmpv1UnusedMetricTag) HasLength() bool { +func (obj *patternFlowIpv4DscpPhbMetricTag) HasLength() bool { return obj.obj.Length != nil } // Number of bits to track for metrics starting from configured offset of corresponding header field -// SetLength sets the uint32 value in the PatternFlowIgmpv1UnusedMetricTag object -func (obj *patternFlowIgmpv1UnusedMetricTag) SetLength(value uint32) PatternFlowIgmpv1UnusedMetricTag { +// SetLength sets the uint32 value in the PatternFlowIpv4DscpPhbMetricTag object +func (obj *patternFlowIpv4DscpPhbMetricTag) SetLength(value uint32) PatternFlowIpv4DscpPhbMetricTag { obj.obj.Length = &value return obj } -func (obj *patternFlowIgmpv1UnusedMetricTag) validateObj(vObj *validation, set_default bool) { +func (obj *patternFlowIpv4DscpPhbMetricTag) validateObj(vObj *validation, set_default bool) { if set_default { obj.setDefault() } // Name is required if obj.obj.Name == nil { - vObj.validationErrors = append(vObj.validationErrors, "Name is required field on interface PatternFlowIgmpv1UnusedMetricTag") + vObj.validationErrors = append(vObj.validationErrors, "Name is required field on interface PatternFlowIpv4DscpPhbMetricTag") } if obj.obj.Offset != nil { - if *obj.obj.Offset > 7 { + if *obj.obj.Offset > 5 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowIgmpv1UnusedMetricTag.Offset <= 7 but Got %d", *obj.obj.Offset)) + fmt.Sprintf("0 <= PatternFlowIpv4DscpPhbMetricTag.Offset <= 5 but Got %d", *obj.obj.Offset)) } } if obj.obj.Length != nil { - if *obj.obj.Length < 1 || *obj.obj.Length > 8 { + if *obj.obj.Length < 1 || *obj.obj.Length > 6 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("1 <= PatternFlowIgmpv1UnusedMetricTag.Length <= 8 but Got %d", *obj.obj.Length)) + fmt.Sprintf("1 <= PatternFlowIpv4DscpPhbMetricTag.Length <= 6 but Got %d", *obj.obj.Length)) } } } -func (obj *patternFlowIgmpv1UnusedMetricTag) setDefault() { +func (obj *patternFlowIpv4DscpPhbMetricTag) setDefault() { if obj.obj.Offset == nil { obj.SetOffset(0) } if obj.obj.Length == nil { - obj.SetLength(8) + obj.SetLength(6) } } -// ***** PatternFlowIgmpv1GroupAddressCounter ***** -type patternFlowIgmpv1GroupAddressCounter struct { +// ***** PatternFlowIpv4DscpEcnCounter ***** +type patternFlowIpv4DscpEcnCounter struct { validation - obj *otg.PatternFlowIgmpv1GroupAddressCounter + obj *otg.PatternFlowIpv4DscpEcnCounter } -func NewPatternFlowIgmpv1GroupAddressCounter() PatternFlowIgmpv1GroupAddressCounter { - obj := patternFlowIgmpv1GroupAddressCounter{obj: &otg.PatternFlowIgmpv1GroupAddressCounter{}} +func NewPatternFlowIpv4DscpEcnCounter() PatternFlowIpv4DscpEcnCounter { + obj := patternFlowIpv4DscpEcnCounter{obj: &otg.PatternFlowIpv4DscpEcnCounter{}} obj.setDefault() return &obj } -func (obj *patternFlowIgmpv1GroupAddressCounter) Msg() *otg.PatternFlowIgmpv1GroupAddressCounter { +func (obj *patternFlowIpv4DscpEcnCounter) Msg() *otg.PatternFlowIpv4DscpEcnCounter { return obj.obj } -func (obj *patternFlowIgmpv1GroupAddressCounter) SetMsg(msg *otg.PatternFlowIgmpv1GroupAddressCounter) PatternFlowIgmpv1GroupAddressCounter { +func (obj *patternFlowIpv4DscpEcnCounter) SetMsg(msg *otg.PatternFlowIpv4DscpEcnCounter) PatternFlowIpv4DscpEcnCounter { proto.Merge(obj.obj, msg) return obj } -func (obj *patternFlowIgmpv1GroupAddressCounter) ToProto() (*otg.PatternFlowIgmpv1GroupAddressCounter, error) { +func (obj *patternFlowIpv4DscpEcnCounter) ToProto() (*otg.PatternFlowIpv4DscpEcnCounter, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -268684,7 +314818,7 @@ func (obj *patternFlowIgmpv1GroupAddressCounter) ToProto() (*otg.PatternFlowIgmp return obj.Msg(), nil } -func (obj *patternFlowIgmpv1GroupAddressCounter) FromProto(msg *otg.PatternFlowIgmpv1GroupAddressCounter) (PatternFlowIgmpv1GroupAddressCounter, error) { +func (obj *patternFlowIpv4DscpEcnCounter) FromProto(msg *otg.PatternFlowIpv4DscpEcnCounter) (PatternFlowIpv4DscpEcnCounter, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -268693,7 +314827,7 @@ func (obj *patternFlowIgmpv1GroupAddressCounter) FromProto(msg *otg.PatternFlowI return newObj, nil } -func (obj *patternFlowIgmpv1GroupAddressCounter) ToPbText() (string, error) { +func (obj *patternFlowIpv4DscpEcnCounter) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -268705,7 +314839,7 @@ func (obj *patternFlowIgmpv1GroupAddressCounter) ToPbText() (string, error) { return string(protoMarshal), nil } -func (obj *patternFlowIgmpv1GroupAddressCounter) FromPbText(value string) error { +func (obj *patternFlowIpv4DscpEcnCounter) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj @@ -268718,7 +314852,7 @@ func (obj *patternFlowIgmpv1GroupAddressCounter) FromPbText(value string) error return retObj } -func (obj *patternFlowIgmpv1GroupAddressCounter) ToYaml() (string, error) { +func (obj *patternFlowIpv4DscpEcnCounter) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -268739,7 +314873,7 @@ func (obj *patternFlowIgmpv1GroupAddressCounter) ToYaml() (string, error) { return string(data), nil } -func (obj *patternFlowIgmpv1GroupAddressCounter) FromYaml(value string) error { +func (obj *patternFlowIpv4DscpEcnCounter) FromYaml(value string) error { if value == "" { value = "{}" } @@ -268764,7 +314898,7 @@ func (obj *patternFlowIgmpv1GroupAddressCounter) FromYaml(value string) error { return nil } -func (obj *patternFlowIgmpv1GroupAddressCounter) ToJson() (string, error) { +func (obj *patternFlowIpv4DscpEcnCounter) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -268782,7 +314916,7 @@ func (obj *patternFlowIgmpv1GroupAddressCounter) ToJson() (string, error) { return string(data), nil } -func (obj *patternFlowIgmpv1GroupAddressCounter) FromJson(value string) error { +func (obj *patternFlowIpv4DscpEcnCounter) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -268803,19 +314937,19 @@ func (obj *patternFlowIgmpv1GroupAddressCounter) FromJson(value string) error { return nil } -func (obj *patternFlowIgmpv1GroupAddressCounter) validateToAndFrom() error { +func (obj *patternFlowIpv4DscpEcnCounter) validateToAndFrom() error { // emptyVars() obj.validateObj(&obj.validation, true) return obj.validationResult() } -func (obj *patternFlowIgmpv1GroupAddressCounter) Validate() error { +func (obj *patternFlowIpv4DscpEcnCounter) Validate() error { // emptyVars() obj.validateObj(&obj.validation, false) return obj.validationResult() } -func (obj *patternFlowIgmpv1GroupAddressCounter) String() string { +func (obj *patternFlowIpv4DscpEcnCounter) String() string { str, err := obj.ToYaml() if err != nil { return err.Error() @@ -268823,12 +314957,12 @@ func (obj *patternFlowIgmpv1GroupAddressCounter) String() string { return str } -func (obj *patternFlowIgmpv1GroupAddressCounter) Clone() (PatternFlowIgmpv1GroupAddressCounter, error) { +func (obj *patternFlowIpv4DscpEcnCounter) Clone() (PatternFlowIpv4DscpEcnCounter, error) { vErr := obj.Validate() if vErr != nil { return nil, vErr } - newObj := NewPatternFlowIgmpv1GroupAddressCounter() + newObj := NewPatternFlowIpv4DscpEcnCounter() data, err := proto.Marshal(obj.Msg()) if err != nil { return nil, err @@ -268840,99 +314974,99 @@ func (obj *patternFlowIgmpv1GroupAddressCounter) Clone() (PatternFlowIgmpv1Group return newObj, nil } -// PatternFlowIgmpv1GroupAddressCounter is ipv4 counter pattern -type PatternFlowIgmpv1GroupAddressCounter interface { +// PatternFlowIpv4DscpEcnCounter is integer counter pattern +type PatternFlowIpv4DscpEcnCounter interface { Validation - // Msg marshals PatternFlowIgmpv1GroupAddressCounter to protobuf object *otg.PatternFlowIgmpv1GroupAddressCounter + // Msg marshals PatternFlowIpv4DscpEcnCounter to protobuf object *otg.PatternFlowIpv4DscpEcnCounter // and doesn't set defaults - Msg() *otg.PatternFlowIgmpv1GroupAddressCounter - // SetMsg unmarshals PatternFlowIgmpv1GroupAddressCounter from protobuf object *otg.PatternFlowIgmpv1GroupAddressCounter + Msg() *otg.PatternFlowIpv4DscpEcnCounter + // SetMsg unmarshals PatternFlowIpv4DscpEcnCounter from protobuf object *otg.PatternFlowIpv4DscpEcnCounter // and doesn't set defaults - SetMsg(*otg.PatternFlowIgmpv1GroupAddressCounter) PatternFlowIgmpv1GroupAddressCounter - // ToProto marshals PatternFlowIgmpv1GroupAddressCounter to protobuf object *otg.PatternFlowIgmpv1GroupAddressCounter - ToProto() (*otg.PatternFlowIgmpv1GroupAddressCounter, error) - // ToPbText marshals PatternFlowIgmpv1GroupAddressCounter to protobuf text + SetMsg(*otg.PatternFlowIpv4DscpEcnCounter) PatternFlowIpv4DscpEcnCounter + // ToProto marshals PatternFlowIpv4DscpEcnCounter to protobuf object *otg.PatternFlowIpv4DscpEcnCounter + ToProto() (*otg.PatternFlowIpv4DscpEcnCounter, error) + // ToPbText marshals PatternFlowIpv4DscpEcnCounter to protobuf text ToPbText() (string, error) - // ToYaml marshals PatternFlowIgmpv1GroupAddressCounter to YAML text + // ToYaml marshals PatternFlowIpv4DscpEcnCounter to YAML text ToYaml() (string, error) - // ToJson marshals PatternFlowIgmpv1GroupAddressCounter to JSON text + // ToJson marshals PatternFlowIpv4DscpEcnCounter to JSON text ToJson() (string, error) - // FromProto unmarshals PatternFlowIgmpv1GroupAddressCounter from protobuf object *otg.PatternFlowIgmpv1GroupAddressCounter - FromProto(msg *otg.PatternFlowIgmpv1GroupAddressCounter) (PatternFlowIgmpv1GroupAddressCounter, error) - // FromPbText unmarshals PatternFlowIgmpv1GroupAddressCounter from protobuf text + // FromProto unmarshals PatternFlowIpv4DscpEcnCounter from protobuf object *otg.PatternFlowIpv4DscpEcnCounter + FromProto(msg *otg.PatternFlowIpv4DscpEcnCounter) (PatternFlowIpv4DscpEcnCounter, error) + // FromPbText unmarshals PatternFlowIpv4DscpEcnCounter from protobuf text FromPbText(value string) error - // FromYaml unmarshals PatternFlowIgmpv1GroupAddressCounter from YAML text + // FromYaml unmarshals PatternFlowIpv4DscpEcnCounter from YAML text FromYaml(value string) error - // FromJson unmarshals PatternFlowIgmpv1GroupAddressCounter from JSON text + // FromJson unmarshals PatternFlowIpv4DscpEcnCounter from JSON text FromJson(value string) error - // Validate validates PatternFlowIgmpv1GroupAddressCounter + // Validate validates PatternFlowIpv4DscpEcnCounter Validate() error // A stringer function String() string // Clones the object - Clone() (PatternFlowIgmpv1GroupAddressCounter, error) + Clone() (PatternFlowIpv4DscpEcnCounter, error) validateToAndFrom() error validateObj(vObj *validation, set_default bool) setDefault() - // Start returns string, set in PatternFlowIgmpv1GroupAddressCounter. - Start() string - // SetStart assigns string provided by user to PatternFlowIgmpv1GroupAddressCounter - SetStart(value string) PatternFlowIgmpv1GroupAddressCounter - // HasStart checks if Start has been set in PatternFlowIgmpv1GroupAddressCounter + // Start returns uint32, set in PatternFlowIpv4DscpEcnCounter. + Start() uint32 + // SetStart assigns uint32 provided by user to PatternFlowIpv4DscpEcnCounter + SetStart(value uint32) PatternFlowIpv4DscpEcnCounter + // HasStart checks if Start has been set in PatternFlowIpv4DscpEcnCounter HasStart() bool - // Step returns string, set in PatternFlowIgmpv1GroupAddressCounter. - Step() string - // SetStep assigns string provided by user to PatternFlowIgmpv1GroupAddressCounter - SetStep(value string) PatternFlowIgmpv1GroupAddressCounter - // HasStep checks if Step has been set in PatternFlowIgmpv1GroupAddressCounter + // Step returns uint32, set in PatternFlowIpv4DscpEcnCounter. + Step() uint32 + // SetStep assigns uint32 provided by user to PatternFlowIpv4DscpEcnCounter + SetStep(value uint32) PatternFlowIpv4DscpEcnCounter + // HasStep checks if Step has been set in PatternFlowIpv4DscpEcnCounter HasStep() bool - // Count returns uint32, set in PatternFlowIgmpv1GroupAddressCounter. + // Count returns uint32, set in PatternFlowIpv4DscpEcnCounter. Count() uint32 - // SetCount assigns uint32 provided by user to PatternFlowIgmpv1GroupAddressCounter - SetCount(value uint32) PatternFlowIgmpv1GroupAddressCounter - // HasCount checks if Count has been set in PatternFlowIgmpv1GroupAddressCounter + // SetCount assigns uint32 provided by user to PatternFlowIpv4DscpEcnCounter + SetCount(value uint32) PatternFlowIpv4DscpEcnCounter + // HasCount checks if Count has been set in PatternFlowIpv4DscpEcnCounter HasCount() bool } // description is TBD -// Start returns a string -func (obj *patternFlowIgmpv1GroupAddressCounter) Start() string { +// Start returns a uint32 +func (obj *patternFlowIpv4DscpEcnCounter) Start() uint32 { return *obj.obj.Start } // description is TBD -// Start returns a string -func (obj *patternFlowIgmpv1GroupAddressCounter) HasStart() bool { +// Start returns a uint32 +func (obj *patternFlowIpv4DscpEcnCounter) HasStart() bool { return obj.obj.Start != nil } // description is TBD -// SetStart sets the string value in the PatternFlowIgmpv1GroupAddressCounter object -func (obj *patternFlowIgmpv1GroupAddressCounter) SetStart(value string) PatternFlowIgmpv1GroupAddressCounter { +// SetStart sets the uint32 value in the PatternFlowIpv4DscpEcnCounter object +func (obj *patternFlowIpv4DscpEcnCounter) SetStart(value uint32) PatternFlowIpv4DscpEcnCounter { obj.obj.Start = &value return obj } // description is TBD -// Step returns a string -func (obj *patternFlowIgmpv1GroupAddressCounter) Step() string { +// Step returns a uint32 +func (obj *patternFlowIpv4DscpEcnCounter) Step() uint32 { return *obj.obj.Step } // description is TBD -// Step returns a string -func (obj *patternFlowIgmpv1GroupAddressCounter) HasStep() bool { +// Step returns a uint32 +func (obj *patternFlowIpv4DscpEcnCounter) HasStep() bool { return obj.obj.Step != nil } // description is TBD -// SetStep sets the string value in the PatternFlowIgmpv1GroupAddressCounter object -func (obj *patternFlowIgmpv1GroupAddressCounter) SetStep(value string) PatternFlowIgmpv1GroupAddressCounter { +// SetStep sets the uint32 value in the PatternFlowIpv4DscpEcnCounter object +func (obj *patternFlowIpv4DscpEcnCounter) SetStep(value uint32) PatternFlowIpv4DscpEcnCounter { obj.obj.Step = &value return obj @@ -268940,7 +315074,7 @@ func (obj *patternFlowIgmpv1GroupAddressCounter) SetStep(value string) PatternFl // description is TBD // Count returns a uint32 -func (obj *patternFlowIgmpv1GroupAddressCounter) Count() uint32 { +func (obj *patternFlowIpv4DscpEcnCounter) Count() uint32 { return *obj.obj.Count @@ -268948,49 +315082,61 @@ func (obj *patternFlowIgmpv1GroupAddressCounter) Count() uint32 { // description is TBD // Count returns a uint32 -func (obj *patternFlowIgmpv1GroupAddressCounter) HasCount() bool { +func (obj *patternFlowIpv4DscpEcnCounter) HasCount() bool { return obj.obj.Count != nil } // description is TBD -// SetCount sets the uint32 value in the PatternFlowIgmpv1GroupAddressCounter object -func (obj *patternFlowIgmpv1GroupAddressCounter) SetCount(value uint32) PatternFlowIgmpv1GroupAddressCounter { +// SetCount sets the uint32 value in the PatternFlowIpv4DscpEcnCounter object +func (obj *patternFlowIpv4DscpEcnCounter) SetCount(value uint32) PatternFlowIpv4DscpEcnCounter { obj.obj.Count = &value return obj } -func (obj *patternFlowIgmpv1GroupAddressCounter) validateObj(vObj *validation, set_default bool) { +func (obj *patternFlowIpv4DscpEcnCounter) validateObj(vObj *validation, set_default bool) { if set_default { obj.setDefault() } if obj.obj.Start != nil { - err := obj.validateIpv4(obj.Start()) - if err != nil { - vObj.validationErrors = append(vObj.validationErrors, fmt.Sprintf("%s %s", err.Error(), "on PatternFlowIgmpv1GroupAddressCounter.Start")) + if *obj.obj.Start > 3 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("0 <= PatternFlowIpv4DscpEcnCounter.Start <= 3 but Got %d", *obj.obj.Start)) } } if obj.obj.Step != nil { - err := obj.validateIpv4(obj.Step()) - if err != nil { - vObj.validationErrors = append(vObj.validationErrors, fmt.Sprintf("%s %s", err.Error(), "on PatternFlowIgmpv1GroupAddressCounter.Step")) + if *obj.obj.Step > 3 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("0 <= PatternFlowIpv4DscpEcnCounter.Step <= 3 but Got %d", *obj.obj.Step)) + } + + } + + if obj.obj.Count != nil { + + if *obj.obj.Count > 3 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("0 <= PatternFlowIpv4DscpEcnCounter.Count <= 3 but Got %d", *obj.obj.Count)) } } } -func (obj *patternFlowIgmpv1GroupAddressCounter) setDefault() { +func (obj *patternFlowIpv4DscpEcnCounter) setDefault() { if obj.obj.Start == nil { - obj.SetStart("0.0.0.0") + obj.SetStart(0) } if obj.obj.Step == nil { - obj.SetStep("0.0.0.1") + obj.SetStep(1) } if obj.obj.Count == nil { obj.SetCount(1) @@ -268998,29 +315144,29 @@ func (obj *patternFlowIgmpv1GroupAddressCounter) setDefault() { } -// ***** PatternFlowIgmpv1GroupAddressMetricTag ***** -type patternFlowIgmpv1GroupAddressMetricTag struct { +// ***** PatternFlowIpv4DscpEcnMetricTag ***** +type patternFlowIpv4DscpEcnMetricTag struct { validation - obj *otg.PatternFlowIgmpv1GroupAddressMetricTag + obj *otg.PatternFlowIpv4DscpEcnMetricTag } -func NewPatternFlowIgmpv1GroupAddressMetricTag() PatternFlowIgmpv1GroupAddressMetricTag { - obj := patternFlowIgmpv1GroupAddressMetricTag{obj: &otg.PatternFlowIgmpv1GroupAddressMetricTag{}} +func NewPatternFlowIpv4DscpEcnMetricTag() PatternFlowIpv4DscpEcnMetricTag { + obj := patternFlowIpv4DscpEcnMetricTag{obj: &otg.PatternFlowIpv4DscpEcnMetricTag{}} obj.setDefault() return &obj } -func (obj *patternFlowIgmpv1GroupAddressMetricTag) Msg() *otg.PatternFlowIgmpv1GroupAddressMetricTag { +func (obj *patternFlowIpv4DscpEcnMetricTag) Msg() *otg.PatternFlowIpv4DscpEcnMetricTag { return obj.obj } -func (obj *patternFlowIgmpv1GroupAddressMetricTag) SetMsg(msg *otg.PatternFlowIgmpv1GroupAddressMetricTag) PatternFlowIgmpv1GroupAddressMetricTag { +func (obj *patternFlowIpv4DscpEcnMetricTag) SetMsg(msg *otg.PatternFlowIpv4DscpEcnMetricTag) PatternFlowIpv4DscpEcnMetricTag { proto.Merge(obj.obj, msg) return obj } -func (obj *patternFlowIgmpv1GroupAddressMetricTag) ToProto() (*otg.PatternFlowIgmpv1GroupAddressMetricTag, error) { +func (obj *patternFlowIpv4DscpEcnMetricTag) ToProto() (*otg.PatternFlowIpv4DscpEcnMetricTag, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -269028,7 +315174,7 @@ func (obj *patternFlowIgmpv1GroupAddressMetricTag) ToProto() (*otg.PatternFlowIg return obj.Msg(), nil } -func (obj *patternFlowIgmpv1GroupAddressMetricTag) FromProto(msg *otg.PatternFlowIgmpv1GroupAddressMetricTag) (PatternFlowIgmpv1GroupAddressMetricTag, error) { +func (obj *patternFlowIpv4DscpEcnMetricTag) FromProto(msg *otg.PatternFlowIpv4DscpEcnMetricTag) (PatternFlowIpv4DscpEcnMetricTag, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -269037,7 +315183,7 @@ func (obj *patternFlowIgmpv1GroupAddressMetricTag) FromProto(msg *otg.PatternFlo return newObj, nil } -func (obj *patternFlowIgmpv1GroupAddressMetricTag) ToPbText() (string, error) { +func (obj *patternFlowIpv4DscpEcnMetricTag) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -269049,7 +315195,7 @@ func (obj *patternFlowIgmpv1GroupAddressMetricTag) ToPbText() (string, error) { return string(protoMarshal), nil } -func (obj *patternFlowIgmpv1GroupAddressMetricTag) FromPbText(value string) error { +func (obj *patternFlowIpv4DscpEcnMetricTag) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj @@ -269062,7 +315208,7 @@ func (obj *patternFlowIgmpv1GroupAddressMetricTag) FromPbText(value string) erro return retObj } -func (obj *patternFlowIgmpv1GroupAddressMetricTag) ToYaml() (string, error) { +func (obj *patternFlowIpv4DscpEcnMetricTag) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -269083,7 +315229,7 @@ func (obj *patternFlowIgmpv1GroupAddressMetricTag) ToYaml() (string, error) { return string(data), nil } -func (obj *patternFlowIgmpv1GroupAddressMetricTag) FromYaml(value string) error { +func (obj *patternFlowIpv4DscpEcnMetricTag) FromYaml(value string) error { if value == "" { value = "{}" } @@ -269108,7 +315254,7 @@ func (obj *patternFlowIgmpv1GroupAddressMetricTag) FromYaml(value string) error return nil } -func (obj *patternFlowIgmpv1GroupAddressMetricTag) ToJson() (string, error) { +func (obj *patternFlowIpv4DscpEcnMetricTag) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -269126,7 +315272,7 @@ func (obj *patternFlowIgmpv1GroupAddressMetricTag) ToJson() (string, error) { return string(data), nil } -func (obj *patternFlowIgmpv1GroupAddressMetricTag) FromJson(value string) error { +func (obj *patternFlowIpv4DscpEcnMetricTag) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -269147,19 +315293,19 @@ func (obj *patternFlowIgmpv1GroupAddressMetricTag) FromJson(value string) error return nil } -func (obj *patternFlowIgmpv1GroupAddressMetricTag) validateToAndFrom() error { +func (obj *patternFlowIpv4DscpEcnMetricTag) validateToAndFrom() error { // emptyVars() obj.validateObj(&obj.validation, true) return obj.validationResult() } -func (obj *patternFlowIgmpv1GroupAddressMetricTag) Validate() error { +func (obj *patternFlowIpv4DscpEcnMetricTag) Validate() error { // emptyVars() obj.validateObj(&obj.validation, false) return obj.validationResult() } -func (obj *patternFlowIgmpv1GroupAddressMetricTag) String() string { +func (obj *patternFlowIpv4DscpEcnMetricTag) String() string { str, err := obj.ToYaml() if err != nil { return err.Error() @@ -269167,12 +315313,12 @@ func (obj *patternFlowIgmpv1GroupAddressMetricTag) String() string { return str } -func (obj *patternFlowIgmpv1GroupAddressMetricTag) Clone() (PatternFlowIgmpv1GroupAddressMetricTag, error) { +func (obj *patternFlowIpv4DscpEcnMetricTag) Clone() (PatternFlowIpv4DscpEcnMetricTag, error) { vErr := obj.Validate() if vErr != nil { return nil, vErr } - newObj := NewPatternFlowIgmpv1GroupAddressMetricTag() + newObj := NewPatternFlowIpv4DscpEcnMetricTag() data, err := proto.Marshal(obj.Msg()) if err != nil { return nil, err @@ -269184,69 +315330,69 @@ func (obj *patternFlowIgmpv1GroupAddressMetricTag) Clone() (PatternFlowIgmpv1Gro return newObj, nil } -// PatternFlowIgmpv1GroupAddressMetricTag is metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. -type PatternFlowIgmpv1GroupAddressMetricTag interface { +// PatternFlowIpv4DscpEcnMetricTag is metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. +type PatternFlowIpv4DscpEcnMetricTag interface { Validation - // Msg marshals PatternFlowIgmpv1GroupAddressMetricTag to protobuf object *otg.PatternFlowIgmpv1GroupAddressMetricTag + // Msg marshals PatternFlowIpv4DscpEcnMetricTag to protobuf object *otg.PatternFlowIpv4DscpEcnMetricTag // and doesn't set defaults - Msg() *otg.PatternFlowIgmpv1GroupAddressMetricTag - // SetMsg unmarshals PatternFlowIgmpv1GroupAddressMetricTag from protobuf object *otg.PatternFlowIgmpv1GroupAddressMetricTag + Msg() *otg.PatternFlowIpv4DscpEcnMetricTag + // SetMsg unmarshals PatternFlowIpv4DscpEcnMetricTag from protobuf object *otg.PatternFlowIpv4DscpEcnMetricTag // and doesn't set defaults - SetMsg(*otg.PatternFlowIgmpv1GroupAddressMetricTag) PatternFlowIgmpv1GroupAddressMetricTag - // ToProto marshals PatternFlowIgmpv1GroupAddressMetricTag to protobuf object *otg.PatternFlowIgmpv1GroupAddressMetricTag - ToProto() (*otg.PatternFlowIgmpv1GroupAddressMetricTag, error) - // ToPbText marshals PatternFlowIgmpv1GroupAddressMetricTag to protobuf text + SetMsg(*otg.PatternFlowIpv4DscpEcnMetricTag) PatternFlowIpv4DscpEcnMetricTag + // ToProto marshals PatternFlowIpv4DscpEcnMetricTag to protobuf object *otg.PatternFlowIpv4DscpEcnMetricTag + ToProto() (*otg.PatternFlowIpv4DscpEcnMetricTag, error) + // ToPbText marshals PatternFlowIpv4DscpEcnMetricTag to protobuf text ToPbText() (string, error) - // ToYaml marshals PatternFlowIgmpv1GroupAddressMetricTag to YAML text + // ToYaml marshals PatternFlowIpv4DscpEcnMetricTag to YAML text ToYaml() (string, error) - // ToJson marshals PatternFlowIgmpv1GroupAddressMetricTag to JSON text + // ToJson marshals PatternFlowIpv4DscpEcnMetricTag to JSON text ToJson() (string, error) - // FromProto unmarshals PatternFlowIgmpv1GroupAddressMetricTag from protobuf object *otg.PatternFlowIgmpv1GroupAddressMetricTag - FromProto(msg *otg.PatternFlowIgmpv1GroupAddressMetricTag) (PatternFlowIgmpv1GroupAddressMetricTag, error) - // FromPbText unmarshals PatternFlowIgmpv1GroupAddressMetricTag from protobuf text + // FromProto unmarshals PatternFlowIpv4DscpEcnMetricTag from protobuf object *otg.PatternFlowIpv4DscpEcnMetricTag + FromProto(msg *otg.PatternFlowIpv4DscpEcnMetricTag) (PatternFlowIpv4DscpEcnMetricTag, error) + // FromPbText unmarshals PatternFlowIpv4DscpEcnMetricTag from protobuf text FromPbText(value string) error - // FromYaml unmarshals PatternFlowIgmpv1GroupAddressMetricTag from YAML text + // FromYaml unmarshals PatternFlowIpv4DscpEcnMetricTag from YAML text FromYaml(value string) error - // FromJson unmarshals PatternFlowIgmpv1GroupAddressMetricTag from JSON text + // FromJson unmarshals PatternFlowIpv4DscpEcnMetricTag from JSON text FromJson(value string) error - // Validate validates PatternFlowIgmpv1GroupAddressMetricTag + // Validate validates PatternFlowIpv4DscpEcnMetricTag Validate() error // A stringer function String() string // Clones the object - Clone() (PatternFlowIgmpv1GroupAddressMetricTag, error) + Clone() (PatternFlowIpv4DscpEcnMetricTag, error) validateToAndFrom() error validateObj(vObj *validation, set_default bool) setDefault() - // Name returns string, set in PatternFlowIgmpv1GroupAddressMetricTag. + // Name returns string, set in PatternFlowIpv4DscpEcnMetricTag. Name() string - // SetName assigns string provided by user to PatternFlowIgmpv1GroupAddressMetricTag - SetName(value string) PatternFlowIgmpv1GroupAddressMetricTag - // Offset returns uint32, set in PatternFlowIgmpv1GroupAddressMetricTag. + // SetName assigns string provided by user to PatternFlowIpv4DscpEcnMetricTag + SetName(value string) PatternFlowIpv4DscpEcnMetricTag + // Offset returns uint32, set in PatternFlowIpv4DscpEcnMetricTag. Offset() uint32 - // SetOffset assigns uint32 provided by user to PatternFlowIgmpv1GroupAddressMetricTag - SetOffset(value uint32) PatternFlowIgmpv1GroupAddressMetricTag - // HasOffset checks if Offset has been set in PatternFlowIgmpv1GroupAddressMetricTag + // SetOffset assigns uint32 provided by user to PatternFlowIpv4DscpEcnMetricTag + SetOffset(value uint32) PatternFlowIpv4DscpEcnMetricTag + // HasOffset checks if Offset has been set in PatternFlowIpv4DscpEcnMetricTag HasOffset() bool - // Length returns uint32, set in PatternFlowIgmpv1GroupAddressMetricTag. + // Length returns uint32, set in PatternFlowIpv4DscpEcnMetricTag. Length() uint32 - // SetLength assigns uint32 provided by user to PatternFlowIgmpv1GroupAddressMetricTag - SetLength(value uint32) PatternFlowIgmpv1GroupAddressMetricTag - // HasLength checks if Length has been set in PatternFlowIgmpv1GroupAddressMetricTag + // SetLength assigns uint32 provided by user to PatternFlowIpv4DscpEcnMetricTag + SetLength(value uint32) PatternFlowIpv4DscpEcnMetricTag + // HasLength checks if Length has been set in PatternFlowIpv4DscpEcnMetricTag HasLength() bool } // Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field // Name returns a string -func (obj *patternFlowIgmpv1GroupAddressMetricTag) Name() string { +func (obj *patternFlowIpv4DscpEcnMetricTag) Name() string { return *obj.obj.Name } // Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field -// SetName sets the string value in the PatternFlowIgmpv1GroupAddressMetricTag object -func (obj *patternFlowIgmpv1GroupAddressMetricTag) SetName(value string) PatternFlowIgmpv1GroupAddressMetricTag { +// SetName sets the string value in the PatternFlowIpv4DscpEcnMetricTag object +func (obj *patternFlowIpv4DscpEcnMetricTag) SetName(value string) PatternFlowIpv4DscpEcnMetricTag { obj.obj.Name = &value return obj @@ -269254,7 +315400,7 @@ func (obj *patternFlowIgmpv1GroupAddressMetricTag) SetName(value string) Pattern // Offset in bits relative to start of corresponding header field // Offset returns a uint32 -func (obj *patternFlowIgmpv1GroupAddressMetricTag) Offset() uint32 { +func (obj *patternFlowIpv4DscpEcnMetricTag) Offset() uint32 { return *obj.obj.Offset @@ -269262,13 +315408,13 @@ func (obj *patternFlowIgmpv1GroupAddressMetricTag) Offset() uint32 { // Offset in bits relative to start of corresponding header field // Offset returns a uint32 -func (obj *patternFlowIgmpv1GroupAddressMetricTag) HasOffset() bool { +func (obj *patternFlowIpv4DscpEcnMetricTag) HasOffset() bool { return obj.obj.Offset != nil } // Offset in bits relative to start of corresponding header field -// SetOffset sets the uint32 value in the PatternFlowIgmpv1GroupAddressMetricTag object -func (obj *patternFlowIgmpv1GroupAddressMetricTag) SetOffset(value uint32) PatternFlowIgmpv1GroupAddressMetricTag { +// SetOffset sets the uint32 value in the PatternFlowIpv4DscpEcnMetricTag object +func (obj *patternFlowIpv4DscpEcnMetricTag) SetOffset(value uint32) PatternFlowIpv4DscpEcnMetricTag { obj.obj.Offset = &value return obj @@ -269276,7 +315422,7 @@ func (obj *patternFlowIgmpv1GroupAddressMetricTag) SetOffset(value uint32) Patte // Number of bits to track for metrics starting from configured offset of corresponding header field // Length returns a uint32 -func (obj *patternFlowIgmpv1GroupAddressMetricTag) Length() uint32 { +func (obj *patternFlowIpv4DscpEcnMetricTag) Length() uint32 { return *obj.obj.Length @@ -269284,83 +315430,83 @@ func (obj *patternFlowIgmpv1GroupAddressMetricTag) Length() uint32 { // Number of bits to track for metrics starting from configured offset of corresponding header field // Length returns a uint32 -func (obj *patternFlowIgmpv1GroupAddressMetricTag) HasLength() bool { +func (obj *patternFlowIpv4DscpEcnMetricTag) HasLength() bool { return obj.obj.Length != nil } // Number of bits to track for metrics starting from configured offset of corresponding header field -// SetLength sets the uint32 value in the PatternFlowIgmpv1GroupAddressMetricTag object -func (obj *patternFlowIgmpv1GroupAddressMetricTag) SetLength(value uint32) PatternFlowIgmpv1GroupAddressMetricTag { +// SetLength sets the uint32 value in the PatternFlowIpv4DscpEcnMetricTag object +func (obj *patternFlowIpv4DscpEcnMetricTag) SetLength(value uint32) PatternFlowIpv4DscpEcnMetricTag { obj.obj.Length = &value return obj } -func (obj *patternFlowIgmpv1GroupAddressMetricTag) validateObj(vObj *validation, set_default bool) { +func (obj *patternFlowIpv4DscpEcnMetricTag) validateObj(vObj *validation, set_default bool) { if set_default { obj.setDefault() } // Name is required if obj.obj.Name == nil { - vObj.validationErrors = append(vObj.validationErrors, "Name is required field on interface PatternFlowIgmpv1GroupAddressMetricTag") + vObj.validationErrors = append(vObj.validationErrors, "Name is required field on interface PatternFlowIpv4DscpEcnMetricTag") } if obj.obj.Offset != nil { - if *obj.obj.Offset > 31 { + if *obj.obj.Offset > 1 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowIgmpv1GroupAddressMetricTag.Offset <= 31 but Got %d", *obj.obj.Offset)) + fmt.Sprintf("0 <= PatternFlowIpv4DscpEcnMetricTag.Offset <= 1 but Got %d", *obj.obj.Offset)) } } if obj.obj.Length != nil { - if *obj.obj.Length < 1 || *obj.obj.Length > 32 { + if *obj.obj.Length < 1 || *obj.obj.Length > 2 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("1 <= PatternFlowIgmpv1GroupAddressMetricTag.Length <= 32 but Got %d", *obj.obj.Length)) + fmt.Sprintf("1 <= PatternFlowIpv4DscpEcnMetricTag.Length <= 2 but Got %d", *obj.obj.Length)) } } } -func (obj *patternFlowIgmpv1GroupAddressMetricTag) setDefault() { +func (obj *patternFlowIpv4DscpEcnMetricTag) setDefault() { if obj.obj.Offset == nil { obj.SetOffset(0) } if obj.obj.Length == nil { - obj.SetLength(32) + obj.SetLength(2) } } -// ***** PatternFlowMplsLabelCounter ***** -type patternFlowMplsLabelCounter struct { +// ***** FlowRSVPPathObjectLength ***** +type flowRSVPPathObjectLength struct { validation - obj *otg.PatternFlowMplsLabelCounter + obj *otg.FlowRSVPPathObjectLength } -func NewPatternFlowMplsLabelCounter() PatternFlowMplsLabelCounter { - obj := patternFlowMplsLabelCounter{obj: &otg.PatternFlowMplsLabelCounter{}} +func NewFlowRSVPPathObjectLength() FlowRSVPPathObjectLength { + obj := flowRSVPPathObjectLength{obj: &otg.FlowRSVPPathObjectLength{}} obj.setDefault() return &obj } -func (obj *patternFlowMplsLabelCounter) Msg() *otg.PatternFlowMplsLabelCounter { +func (obj *flowRSVPPathObjectLength) Msg() *otg.FlowRSVPPathObjectLength { return obj.obj } -func (obj *patternFlowMplsLabelCounter) SetMsg(msg *otg.PatternFlowMplsLabelCounter) PatternFlowMplsLabelCounter { +func (obj *flowRSVPPathObjectLength) SetMsg(msg *otg.FlowRSVPPathObjectLength) FlowRSVPPathObjectLength { proto.Merge(obj.obj, msg) return obj } -func (obj *patternFlowMplsLabelCounter) ToProto() (*otg.PatternFlowMplsLabelCounter, error) { +func (obj *flowRSVPPathObjectLength) ToProto() (*otg.FlowRSVPPathObjectLength, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -269368,7 +315514,7 @@ func (obj *patternFlowMplsLabelCounter) ToProto() (*otg.PatternFlowMplsLabelCoun return obj.Msg(), nil } -func (obj *patternFlowMplsLabelCounter) FromProto(msg *otg.PatternFlowMplsLabelCounter) (PatternFlowMplsLabelCounter, error) { +func (obj *flowRSVPPathObjectLength) FromProto(msg *otg.FlowRSVPPathObjectLength) (FlowRSVPPathObjectLength, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -269377,7 +315523,7 @@ func (obj *patternFlowMplsLabelCounter) FromProto(msg *otg.PatternFlowMplsLabelC return newObj, nil } -func (obj *patternFlowMplsLabelCounter) ToPbText() (string, error) { +func (obj *flowRSVPPathObjectLength) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -269389,7 +315535,7 @@ func (obj *patternFlowMplsLabelCounter) ToPbText() (string, error) { return string(protoMarshal), nil } -func (obj *patternFlowMplsLabelCounter) FromPbText(value string) error { +func (obj *flowRSVPPathObjectLength) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj @@ -269402,7 +315548,7 @@ func (obj *patternFlowMplsLabelCounter) FromPbText(value string) error { return retObj } -func (obj *patternFlowMplsLabelCounter) ToYaml() (string, error) { +func (obj *flowRSVPPathObjectLength) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -269423,7 +315569,7 @@ func (obj *patternFlowMplsLabelCounter) ToYaml() (string, error) { return string(data), nil } -func (obj *patternFlowMplsLabelCounter) FromYaml(value string) error { +func (obj *flowRSVPPathObjectLength) FromYaml(value string) error { if value == "" { value = "{}" } @@ -269448,7 +315594,7 @@ func (obj *patternFlowMplsLabelCounter) FromYaml(value string) error { return nil } -func (obj *patternFlowMplsLabelCounter) ToJson() (string, error) { +func (obj *flowRSVPPathObjectLength) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -269466,7 +315612,7 @@ func (obj *patternFlowMplsLabelCounter) ToJson() (string, error) { return string(data), nil } -func (obj *patternFlowMplsLabelCounter) FromJson(value string) error { +func (obj *flowRSVPPathObjectLength) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -269487,19 +315633,19 @@ func (obj *patternFlowMplsLabelCounter) FromJson(value string) error { return nil } -func (obj *patternFlowMplsLabelCounter) validateToAndFrom() error { +func (obj *flowRSVPPathObjectLength) validateToAndFrom() error { // emptyVars() obj.validateObj(&obj.validation, true) return obj.validationResult() } -func (obj *patternFlowMplsLabelCounter) Validate() error { +func (obj *flowRSVPPathObjectLength) Validate() error { // emptyVars() obj.validateObj(&obj.validation, false) return obj.validationResult() } -func (obj *patternFlowMplsLabelCounter) String() string { +func (obj *flowRSVPPathObjectLength) String() string { str, err := obj.ToYaml() if err != nil { return err.Error() @@ -269507,12 +315653,12 @@ func (obj *patternFlowMplsLabelCounter) String() string { return str } -func (obj *patternFlowMplsLabelCounter) Clone() (PatternFlowMplsLabelCounter, error) { +func (obj *flowRSVPPathObjectLength) Clone() (FlowRSVPPathObjectLength, error) { vErr := obj.Validate() if vErr != nil { return nil, vErr } - newObj := NewPatternFlowMplsLabelCounter() + newObj := NewFlowRSVPPathObjectLength() data, err := proto.Marshal(obj.Msg()) if err != nil { return nil, err @@ -269524,199 +315670,216 @@ func (obj *patternFlowMplsLabelCounter) Clone() (PatternFlowMplsLabelCounter, er return newObj, nil } -// PatternFlowMplsLabelCounter is integer counter pattern -type PatternFlowMplsLabelCounter interface { +// FlowRSVPPathObjectLength is description is TBD +type FlowRSVPPathObjectLength interface { Validation - // Msg marshals PatternFlowMplsLabelCounter to protobuf object *otg.PatternFlowMplsLabelCounter + // Msg marshals FlowRSVPPathObjectLength to protobuf object *otg.FlowRSVPPathObjectLength // and doesn't set defaults - Msg() *otg.PatternFlowMplsLabelCounter - // SetMsg unmarshals PatternFlowMplsLabelCounter from protobuf object *otg.PatternFlowMplsLabelCounter + Msg() *otg.FlowRSVPPathObjectLength + // SetMsg unmarshals FlowRSVPPathObjectLength from protobuf object *otg.FlowRSVPPathObjectLength // and doesn't set defaults - SetMsg(*otg.PatternFlowMplsLabelCounter) PatternFlowMplsLabelCounter - // ToProto marshals PatternFlowMplsLabelCounter to protobuf object *otg.PatternFlowMplsLabelCounter - ToProto() (*otg.PatternFlowMplsLabelCounter, error) - // ToPbText marshals PatternFlowMplsLabelCounter to protobuf text + SetMsg(*otg.FlowRSVPPathObjectLength) FlowRSVPPathObjectLength + // ToProto marshals FlowRSVPPathObjectLength to protobuf object *otg.FlowRSVPPathObjectLength + ToProto() (*otg.FlowRSVPPathObjectLength, error) + // ToPbText marshals FlowRSVPPathObjectLength to protobuf text ToPbText() (string, error) - // ToYaml marshals PatternFlowMplsLabelCounter to YAML text + // ToYaml marshals FlowRSVPPathObjectLength to YAML text ToYaml() (string, error) - // ToJson marshals PatternFlowMplsLabelCounter to JSON text + // ToJson marshals FlowRSVPPathObjectLength to JSON text ToJson() (string, error) - // FromProto unmarshals PatternFlowMplsLabelCounter from protobuf object *otg.PatternFlowMplsLabelCounter - FromProto(msg *otg.PatternFlowMplsLabelCounter) (PatternFlowMplsLabelCounter, error) - // FromPbText unmarshals PatternFlowMplsLabelCounter from protobuf text + // FromProto unmarshals FlowRSVPPathObjectLength from protobuf object *otg.FlowRSVPPathObjectLength + FromProto(msg *otg.FlowRSVPPathObjectLength) (FlowRSVPPathObjectLength, error) + // FromPbText unmarshals FlowRSVPPathObjectLength from protobuf text FromPbText(value string) error - // FromYaml unmarshals PatternFlowMplsLabelCounter from YAML text + // FromYaml unmarshals FlowRSVPPathObjectLength from YAML text FromYaml(value string) error - // FromJson unmarshals PatternFlowMplsLabelCounter from JSON text + // FromJson unmarshals FlowRSVPPathObjectLength from JSON text FromJson(value string) error - // Validate validates PatternFlowMplsLabelCounter + // Validate validates FlowRSVPPathObjectLength Validate() error // A stringer function String() string // Clones the object - Clone() (PatternFlowMplsLabelCounter, error) + Clone() (FlowRSVPPathObjectLength, error) validateToAndFrom() error validateObj(vObj *validation, set_default bool) setDefault() - // Start returns uint32, set in PatternFlowMplsLabelCounter. - Start() uint32 - // SetStart assigns uint32 provided by user to PatternFlowMplsLabelCounter - SetStart(value uint32) PatternFlowMplsLabelCounter - // HasStart checks if Start has been set in PatternFlowMplsLabelCounter - HasStart() bool - // Step returns uint32, set in PatternFlowMplsLabelCounter. - Step() uint32 - // SetStep assigns uint32 provided by user to PatternFlowMplsLabelCounter - SetStep(value uint32) PatternFlowMplsLabelCounter - // HasStep checks if Step has been set in PatternFlowMplsLabelCounter - HasStep() bool - // Count returns uint32, set in PatternFlowMplsLabelCounter. - Count() uint32 - // SetCount assigns uint32 provided by user to PatternFlowMplsLabelCounter - SetCount(value uint32) PatternFlowMplsLabelCounter - // HasCount checks if Count has been set in PatternFlowMplsLabelCounter - HasCount() bool + // Choice returns FlowRSVPPathObjectLengthChoiceEnum, set in FlowRSVPPathObjectLength + Choice() FlowRSVPPathObjectLengthChoiceEnum + // SetChoice assigns FlowRSVPPathObjectLengthChoiceEnum provided by user to FlowRSVPPathObjectLength + SetChoice(value FlowRSVPPathObjectLengthChoiceEnum) FlowRSVPPathObjectLength + // HasChoice checks if Choice has been set in FlowRSVPPathObjectLength + HasChoice() bool + // Auto returns uint32, set in FlowRSVPPathObjectLength. + Auto() uint32 + // HasAuto checks if Auto has been set in FlowRSVPPathObjectLength + HasAuto() bool + // Value returns uint32, set in FlowRSVPPathObjectLength. + Value() uint32 + // SetValue assigns uint32 provided by user to FlowRSVPPathObjectLength + SetValue(value uint32) FlowRSVPPathObjectLength + // HasValue checks if Value has been set in FlowRSVPPathObjectLength + HasValue() bool } -// description is TBD -// Start returns a uint32 -func (obj *patternFlowMplsLabelCounter) Start() uint32 { +type FlowRSVPPathObjectLengthChoiceEnum string - return *obj.obj.Start +// Enum of Choice on FlowRSVPPathObjectLength +var FlowRSVPPathObjectLengthChoice = struct { + AUTO FlowRSVPPathObjectLengthChoiceEnum + VALUE FlowRSVPPathObjectLengthChoiceEnum +}{ + AUTO: FlowRSVPPathObjectLengthChoiceEnum("auto"), + VALUE: FlowRSVPPathObjectLengthChoiceEnum("value"), +} +func (obj *flowRSVPPathObjectLength) Choice() FlowRSVPPathObjectLengthChoiceEnum { + return FlowRSVPPathObjectLengthChoiceEnum(obj.obj.Choice.Enum().String()) } -// description is TBD -// Start returns a uint32 -func (obj *patternFlowMplsLabelCounter) HasStart() bool { - return obj.obj.Start != nil +// auto or configured value. +// Choice returns a string +func (obj *flowRSVPPathObjectLength) HasChoice() bool { + return obj.obj.Choice != nil } -// description is TBD -// SetStart sets the uint32 value in the PatternFlowMplsLabelCounter object -func (obj *patternFlowMplsLabelCounter) SetStart(value uint32) PatternFlowMplsLabelCounter { +func (obj *flowRSVPPathObjectLength) SetChoice(value FlowRSVPPathObjectLengthChoiceEnum) FlowRSVPPathObjectLength { + intValue, ok := otg.FlowRSVPPathObjectLength_Choice_Enum_value[string(value)] + if !ok { + obj.validationErrors = append(obj.validationErrors, fmt.Sprintf( + "%s is not a valid choice on FlowRSVPPathObjectLengthChoiceEnum", string(value))) + return obj + } + enumValue := otg.FlowRSVPPathObjectLength_Choice_Enum(intValue) + obj.obj.Choice = &enumValue + obj.obj.Value = nil + obj.obj.Auto = nil + + if value == FlowRSVPPathObjectLengthChoice.AUTO { + defaultValue := uint32(4) + obj.obj.Auto = &defaultValue + } + + if value == FlowRSVPPathObjectLengthChoice.VALUE { + defaultValue := uint32(4) + obj.obj.Value = &defaultValue + } - obj.obj.Start = &value return obj } -// description is TBD -// Step returns a uint32 -func (obj *patternFlowMplsLabelCounter) Step() uint32 { +// The OTG implementation can provide a system generated value for this property. If the OTG is unable to generate a value the default value must be used. +// Auto returns a uint32 +func (obj *flowRSVPPathObjectLength) Auto() uint32 { - return *obj.obj.Step + if obj.obj.Auto == nil { + obj.SetChoice(FlowRSVPPathObjectLengthChoice.AUTO) + } -} + return *obj.obj.Auto -// description is TBD -// Step returns a uint32 -func (obj *patternFlowMplsLabelCounter) HasStep() bool { - return obj.obj.Step != nil } -// description is TBD -// SetStep sets the uint32 value in the PatternFlowMplsLabelCounter object -func (obj *patternFlowMplsLabelCounter) SetStep(value uint32) PatternFlowMplsLabelCounter { - - obj.obj.Step = &value - return obj +// The OTG implementation can provide a system generated value for this property. If the OTG is unable to generate a value the default value must be used. +// Auto returns a uint32 +func (obj *flowRSVPPathObjectLength) HasAuto() bool { + return obj.obj.Auto != nil } // description is TBD -// Count returns a uint32 -func (obj *patternFlowMplsLabelCounter) Count() uint32 { +// Value returns a uint32 +func (obj *flowRSVPPathObjectLength) Value() uint32 { - return *obj.obj.Count + if obj.obj.Value == nil { + obj.SetChoice(FlowRSVPPathObjectLengthChoice.VALUE) + } + + return *obj.obj.Value } // description is TBD -// Count returns a uint32 -func (obj *patternFlowMplsLabelCounter) HasCount() bool { - return obj.obj.Count != nil +// Value returns a uint32 +func (obj *flowRSVPPathObjectLength) HasValue() bool { + return obj.obj.Value != nil } // description is TBD -// SetCount sets the uint32 value in the PatternFlowMplsLabelCounter object -func (obj *patternFlowMplsLabelCounter) SetCount(value uint32) PatternFlowMplsLabelCounter { - - obj.obj.Count = &value +// SetValue sets the uint32 value in the FlowRSVPPathObjectLength object +func (obj *flowRSVPPathObjectLength) SetValue(value uint32) FlowRSVPPathObjectLength { + obj.SetChoice(FlowRSVPPathObjectLengthChoice.VALUE) + obj.obj.Value = &value return obj } -func (obj *patternFlowMplsLabelCounter) validateObj(vObj *validation, set_default bool) { +func (obj *flowRSVPPathObjectLength) validateObj(vObj *validation, set_default bool) { if set_default { obj.setDefault() } - if obj.obj.Start != nil { - - if *obj.obj.Start > 1048575 { - vObj.validationErrors = append( - vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowMplsLabelCounter.Start <= 1048575 but Got %d", *obj.obj.Start)) - } - - } - - if obj.obj.Step != nil { + if obj.obj.Auto != nil { - if *obj.obj.Step > 1048575 { + if *obj.obj.Auto < 4 || *obj.obj.Auto > 65535 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowMplsLabelCounter.Step <= 1048575 but Got %d", *obj.obj.Step)) + fmt.Sprintf("4 <= FlowRSVPPathObjectLength.Auto <= 65535 but Got %d", *obj.obj.Auto)) } } - if obj.obj.Count != nil { + if obj.obj.Value != nil { - if *obj.obj.Count > 1048575 { + if *obj.obj.Value < 4 || *obj.obj.Value > 65535 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowMplsLabelCounter.Count <= 1048575 but Got %d", *obj.obj.Count)) + fmt.Sprintf("4 <= FlowRSVPPathObjectLength.Value <= 65535 but Got %d", *obj.obj.Value)) } } } -func (obj *patternFlowMplsLabelCounter) setDefault() { - if obj.obj.Start == nil { - obj.SetStart(16) - } - if obj.obj.Step == nil { - obj.SetStep(1) - } - if obj.obj.Count == nil { - obj.SetCount(1) +func (obj *flowRSVPPathObjectLength) setDefault() { + if obj.obj.Choice == nil { + obj.SetChoice(FlowRSVPPathObjectLengthChoice.AUTO) + } } -// ***** PatternFlowMplsLabelMetricTag ***** -type patternFlowMplsLabelMetricTag struct { +// ***** FlowRSVPPathObjectsClass ***** +type flowRSVPPathObjectsClass struct { validation - obj *otg.PatternFlowMplsLabelMetricTag -} - -func NewPatternFlowMplsLabelMetricTag() PatternFlowMplsLabelMetricTag { - obj := patternFlowMplsLabelMetricTag{obj: &otg.PatternFlowMplsLabelMetricTag{}} + obj *otg.FlowRSVPPathObjectsClass + sessionHolder FlowRSVPPathObjectsClassSession + rsvpHopHolder FlowRSVPPathObjectsClassRsvpHop + timeValuesHolder FlowRSVPPathObjectsClassTimeValues + explicitRouteHolder FlowRSVPPathObjectsClassExplicitRoute + labelRequestHolder FlowRSVPPathObjectsClassLabelRequest + sessionAttributeHolder FlowRSVPPathObjectsClassSessionAttribute + senderTemplateHolder FlowRSVPPathObjectsClassSenderTemplate + senderTspecHolder FlowRSVPPathObjectsClassSenderTspec + recordRouteHolder FlowRSVPPathObjectsClassRecordRoute + customHolder FlowRSVPPathObjectsCustom +} + +func NewFlowRSVPPathObjectsClass() FlowRSVPPathObjectsClass { + obj := flowRSVPPathObjectsClass{obj: &otg.FlowRSVPPathObjectsClass{}} obj.setDefault() return &obj } -func (obj *patternFlowMplsLabelMetricTag) Msg() *otg.PatternFlowMplsLabelMetricTag { +func (obj *flowRSVPPathObjectsClass) Msg() *otg.FlowRSVPPathObjectsClass { return obj.obj } -func (obj *patternFlowMplsLabelMetricTag) SetMsg(msg *otg.PatternFlowMplsLabelMetricTag) PatternFlowMplsLabelMetricTag { - +func (obj *flowRSVPPathObjectsClass) SetMsg(msg *otg.FlowRSVPPathObjectsClass) FlowRSVPPathObjectsClass { + obj.setNil() proto.Merge(obj.obj, msg) return obj } -func (obj *patternFlowMplsLabelMetricTag) ToProto() (*otg.PatternFlowMplsLabelMetricTag, error) { +func (obj *flowRSVPPathObjectsClass) ToProto() (*otg.FlowRSVPPathObjectsClass, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -269724,7 +315887,7 @@ func (obj *patternFlowMplsLabelMetricTag) ToProto() (*otg.PatternFlowMplsLabelMe return obj.Msg(), nil } -func (obj *patternFlowMplsLabelMetricTag) FromProto(msg *otg.PatternFlowMplsLabelMetricTag) (PatternFlowMplsLabelMetricTag, error) { +func (obj *flowRSVPPathObjectsClass) FromProto(msg *otg.FlowRSVPPathObjectsClass) (FlowRSVPPathObjectsClass, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -269733,7 +315896,7 @@ func (obj *patternFlowMplsLabelMetricTag) FromProto(msg *otg.PatternFlowMplsLabe return newObj, nil } -func (obj *patternFlowMplsLabelMetricTag) ToPbText() (string, error) { +func (obj *flowRSVPPathObjectsClass) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -269745,12 +315908,12 @@ func (obj *patternFlowMplsLabelMetricTag) ToPbText() (string, error) { return string(protoMarshal), nil } -func (obj *patternFlowMplsLabelMetricTag) FromPbText(value string) error { +func (obj *flowRSVPPathObjectsClass) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj } - + obj.setNil() vErr := obj.validateToAndFrom() if vErr != nil { return vErr @@ -269758,7 +315921,7 @@ func (obj *patternFlowMplsLabelMetricTag) FromPbText(value string) error { return retObj } -func (obj *patternFlowMplsLabelMetricTag) ToYaml() (string, error) { +func (obj *flowRSVPPathObjectsClass) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -269779,7 +315942,7 @@ func (obj *patternFlowMplsLabelMetricTag) ToYaml() (string, error) { return string(data), nil } -func (obj *patternFlowMplsLabelMetricTag) FromYaml(value string) error { +func (obj *flowRSVPPathObjectsClass) FromYaml(value string) error { if value == "" { value = "{}" } @@ -269796,7 +315959,7 @@ func (obj *patternFlowMplsLabelMetricTag) FromYaml(value string) error { return fmt.Errorf("unmarshal error %s", strings.Replace( uError.Error(), "\u00a0", " ", -1)[7:]) } - + obj.setNil() vErr := obj.validateToAndFrom() if vErr != nil { return vErr @@ -269804,7 +315967,7 @@ func (obj *patternFlowMplsLabelMetricTag) FromYaml(value string) error { return nil } -func (obj *patternFlowMplsLabelMetricTag) ToJson() (string, error) { +func (obj *flowRSVPPathObjectsClass) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -269822,7 +315985,7 @@ func (obj *patternFlowMplsLabelMetricTag) ToJson() (string, error) { return string(data), nil } -func (obj *patternFlowMplsLabelMetricTag) FromJson(value string) error { +func (obj *flowRSVPPathObjectsClass) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -269835,7 +315998,7 @@ func (obj *patternFlowMplsLabelMetricTag) FromJson(value string) error { return fmt.Errorf("unmarshal error %s", strings.Replace( uError.Error(), "\u00a0", " ", -1)[7:]) } - + obj.setNil() err := obj.validateToAndFrom() if err != nil { return err @@ -269843,19 +316006,19 @@ func (obj *patternFlowMplsLabelMetricTag) FromJson(value string) error { return nil } -func (obj *patternFlowMplsLabelMetricTag) validateToAndFrom() error { +func (obj *flowRSVPPathObjectsClass) validateToAndFrom() error { // emptyVars() obj.validateObj(&obj.validation, true) return obj.validationResult() } -func (obj *patternFlowMplsLabelMetricTag) Validate() error { +func (obj *flowRSVPPathObjectsClass) Validate() error { // emptyVars() obj.validateObj(&obj.validation, false) return obj.validationResult() } -func (obj *patternFlowMplsLabelMetricTag) String() string { +func (obj *flowRSVPPathObjectsClass) String() string { str, err := obj.ToYaml() if err != nil { return err.Error() @@ -269863,12 +316026,12 @@ func (obj *patternFlowMplsLabelMetricTag) String() string { return str } -func (obj *patternFlowMplsLabelMetricTag) Clone() (PatternFlowMplsLabelMetricTag, error) { +func (obj *flowRSVPPathObjectsClass) Clone() (FlowRSVPPathObjectsClass, error) { vErr := obj.Validate() if vErr != nil { return nil, vErr } - newObj := NewPatternFlowMplsLabelMetricTag() + newObj := NewFlowRSVPPathObjectsClass() data, err := proto.Marshal(obj.Msg()) if err != nil { return nil, err @@ -269880,183 +316043,616 @@ func (obj *patternFlowMplsLabelMetricTag) Clone() (PatternFlowMplsLabelMetricTag return newObj, nil } -// PatternFlowMplsLabelMetricTag is metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. -type PatternFlowMplsLabelMetricTag interface { +func (obj *flowRSVPPathObjectsClass) setNil() { + obj.sessionHolder = nil + obj.rsvpHopHolder = nil + obj.timeValuesHolder = nil + obj.explicitRouteHolder = nil + obj.labelRequestHolder = nil + obj.sessionAttributeHolder = nil + obj.senderTemplateHolder = nil + obj.senderTspecHolder = nil + obj.recordRouteHolder = nil + obj.customHolder = nil + obj.validationErrors = nil + obj.warnings = nil + obj.constraints = make(map[string]map[string]Constraints) +} + +// FlowRSVPPathObjectsClass is the class number is used to identify the class of an object. Defined in https://www.iana.org/assignments/rsvp-parameters/rsvp-parameters.xhtml#rsvp-parameters-4 . Curently supported class numbers are for "path" message type. "path" message: Supported Class numbers and it's value: SESSION: 1, RSVP_HOP: 3, TIME_VALUES: 5, EXPLICIT_ROUTE: 20, LABEL_REQUEST: 19, SESSION_ATTRIBUTE: 207, SENDER_TEMPLATE: 11, SENDER_TSPEC: 12, RECORD_ROUTE: 21, Custom: User defined bytes based on class and c-types not suppored in above options. +type FlowRSVPPathObjectsClass interface { Validation - // Msg marshals PatternFlowMplsLabelMetricTag to protobuf object *otg.PatternFlowMplsLabelMetricTag + // Msg marshals FlowRSVPPathObjectsClass to protobuf object *otg.FlowRSVPPathObjectsClass // and doesn't set defaults - Msg() *otg.PatternFlowMplsLabelMetricTag - // SetMsg unmarshals PatternFlowMplsLabelMetricTag from protobuf object *otg.PatternFlowMplsLabelMetricTag + Msg() *otg.FlowRSVPPathObjectsClass + // SetMsg unmarshals FlowRSVPPathObjectsClass from protobuf object *otg.FlowRSVPPathObjectsClass // and doesn't set defaults - SetMsg(*otg.PatternFlowMplsLabelMetricTag) PatternFlowMplsLabelMetricTag - // ToProto marshals PatternFlowMplsLabelMetricTag to protobuf object *otg.PatternFlowMplsLabelMetricTag - ToProto() (*otg.PatternFlowMplsLabelMetricTag, error) - // ToPbText marshals PatternFlowMplsLabelMetricTag to protobuf text + SetMsg(*otg.FlowRSVPPathObjectsClass) FlowRSVPPathObjectsClass + // ToProto marshals FlowRSVPPathObjectsClass to protobuf object *otg.FlowRSVPPathObjectsClass + ToProto() (*otg.FlowRSVPPathObjectsClass, error) + // ToPbText marshals FlowRSVPPathObjectsClass to protobuf text ToPbText() (string, error) - // ToYaml marshals PatternFlowMplsLabelMetricTag to YAML text + // ToYaml marshals FlowRSVPPathObjectsClass to YAML text ToYaml() (string, error) - // ToJson marshals PatternFlowMplsLabelMetricTag to JSON text + // ToJson marshals FlowRSVPPathObjectsClass to JSON text ToJson() (string, error) - // FromProto unmarshals PatternFlowMplsLabelMetricTag from protobuf object *otg.PatternFlowMplsLabelMetricTag - FromProto(msg *otg.PatternFlowMplsLabelMetricTag) (PatternFlowMplsLabelMetricTag, error) - // FromPbText unmarshals PatternFlowMplsLabelMetricTag from protobuf text + // FromProto unmarshals FlowRSVPPathObjectsClass from protobuf object *otg.FlowRSVPPathObjectsClass + FromProto(msg *otg.FlowRSVPPathObjectsClass) (FlowRSVPPathObjectsClass, error) + // FromPbText unmarshals FlowRSVPPathObjectsClass from protobuf text FromPbText(value string) error - // FromYaml unmarshals PatternFlowMplsLabelMetricTag from YAML text + // FromYaml unmarshals FlowRSVPPathObjectsClass from YAML text FromYaml(value string) error - // FromJson unmarshals PatternFlowMplsLabelMetricTag from JSON text + // FromJson unmarshals FlowRSVPPathObjectsClass from JSON text FromJson(value string) error - // Validate validates PatternFlowMplsLabelMetricTag + // Validate validates FlowRSVPPathObjectsClass Validate() error // A stringer function String() string // Clones the object - Clone() (PatternFlowMplsLabelMetricTag, error) + Clone() (FlowRSVPPathObjectsClass, error) validateToAndFrom() error validateObj(vObj *validation, set_default bool) setDefault() - // Name returns string, set in PatternFlowMplsLabelMetricTag. - Name() string - // SetName assigns string provided by user to PatternFlowMplsLabelMetricTag - SetName(value string) PatternFlowMplsLabelMetricTag - // Offset returns uint32, set in PatternFlowMplsLabelMetricTag. - Offset() uint32 - // SetOffset assigns uint32 provided by user to PatternFlowMplsLabelMetricTag - SetOffset(value uint32) PatternFlowMplsLabelMetricTag - // HasOffset checks if Offset has been set in PatternFlowMplsLabelMetricTag - HasOffset() bool - // Length returns uint32, set in PatternFlowMplsLabelMetricTag. - Length() uint32 - // SetLength assigns uint32 provided by user to PatternFlowMplsLabelMetricTag - SetLength(value uint32) PatternFlowMplsLabelMetricTag - // HasLength checks if Length has been set in PatternFlowMplsLabelMetricTag - HasLength() bool + // Choice returns FlowRSVPPathObjectsClassChoiceEnum, set in FlowRSVPPathObjectsClass + Choice() FlowRSVPPathObjectsClassChoiceEnum + // SetChoice assigns FlowRSVPPathObjectsClassChoiceEnum provided by user to FlowRSVPPathObjectsClass + SetChoice(value FlowRSVPPathObjectsClassChoiceEnum) FlowRSVPPathObjectsClass + // Session returns FlowRSVPPathObjectsClassSession, set in FlowRSVPPathObjectsClass. + // FlowRSVPPathObjectsClassSession is c-Type is specific to a class num. + Session() FlowRSVPPathObjectsClassSession + // SetSession assigns FlowRSVPPathObjectsClassSession provided by user to FlowRSVPPathObjectsClass. + // FlowRSVPPathObjectsClassSession is c-Type is specific to a class num. + SetSession(value FlowRSVPPathObjectsClassSession) FlowRSVPPathObjectsClass + // HasSession checks if Session has been set in FlowRSVPPathObjectsClass + HasSession() bool + // RsvpHop returns FlowRSVPPathObjectsClassRsvpHop, set in FlowRSVPPathObjectsClass. + // FlowRSVPPathObjectsClassRsvpHop is c-Type is specific to a class num. + RsvpHop() FlowRSVPPathObjectsClassRsvpHop + // SetRsvpHop assigns FlowRSVPPathObjectsClassRsvpHop provided by user to FlowRSVPPathObjectsClass. + // FlowRSVPPathObjectsClassRsvpHop is c-Type is specific to a class num. + SetRsvpHop(value FlowRSVPPathObjectsClassRsvpHop) FlowRSVPPathObjectsClass + // HasRsvpHop checks if RsvpHop has been set in FlowRSVPPathObjectsClass + HasRsvpHop() bool + // TimeValues returns FlowRSVPPathObjectsClassTimeValues, set in FlowRSVPPathObjectsClass. + // FlowRSVPPathObjectsClassTimeValues is c-Type is specific to a class num. + TimeValues() FlowRSVPPathObjectsClassTimeValues + // SetTimeValues assigns FlowRSVPPathObjectsClassTimeValues provided by user to FlowRSVPPathObjectsClass. + // FlowRSVPPathObjectsClassTimeValues is c-Type is specific to a class num. + SetTimeValues(value FlowRSVPPathObjectsClassTimeValues) FlowRSVPPathObjectsClass + // HasTimeValues checks if TimeValues has been set in FlowRSVPPathObjectsClass + HasTimeValues() bool + // ExplicitRoute returns FlowRSVPPathObjectsClassExplicitRoute, set in FlowRSVPPathObjectsClass. + // FlowRSVPPathObjectsClassExplicitRoute is c-Type is specific to a class num. + ExplicitRoute() FlowRSVPPathObjectsClassExplicitRoute + // SetExplicitRoute assigns FlowRSVPPathObjectsClassExplicitRoute provided by user to FlowRSVPPathObjectsClass. + // FlowRSVPPathObjectsClassExplicitRoute is c-Type is specific to a class num. + SetExplicitRoute(value FlowRSVPPathObjectsClassExplicitRoute) FlowRSVPPathObjectsClass + // HasExplicitRoute checks if ExplicitRoute has been set in FlowRSVPPathObjectsClass + HasExplicitRoute() bool + // LabelRequest returns FlowRSVPPathObjectsClassLabelRequest, set in FlowRSVPPathObjectsClass. + // FlowRSVPPathObjectsClassLabelRequest is c-Type is specific to a class num. + LabelRequest() FlowRSVPPathObjectsClassLabelRequest + // SetLabelRequest assigns FlowRSVPPathObjectsClassLabelRequest provided by user to FlowRSVPPathObjectsClass. + // FlowRSVPPathObjectsClassLabelRequest is c-Type is specific to a class num. + SetLabelRequest(value FlowRSVPPathObjectsClassLabelRequest) FlowRSVPPathObjectsClass + // HasLabelRequest checks if LabelRequest has been set in FlowRSVPPathObjectsClass + HasLabelRequest() bool + // SessionAttribute returns FlowRSVPPathObjectsClassSessionAttribute, set in FlowRSVPPathObjectsClass. + // FlowRSVPPathObjectsClassSessionAttribute is c-Type is specific to a class num. + SessionAttribute() FlowRSVPPathObjectsClassSessionAttribute + // SetSessionAttribute assigns FlowRSVPPathObjectsClassSessionAttribute provided by user to FlowRSVPPathObjectsClass. + // FlowRSVPPathObjectsClassSessionAttribute is c-Type is specific to a class num. + SetSessionAttribute(value FlowRSVPPathObjectsClassSessionAttribute) FlowRSVPPathObjectsClass + // HasSessionAttribute checks if SessionAttribute has been set in FlowRSVPPathObjectsClass + HasSessionAttribute() bool + // SenderTemplate returns FlowRSVPPathObjectsClassSenderTemplate, set in FlowRSVPPathObjectsClass. + // FlowRSVPPathObjectsClassSenderTemplate is c-Type is specific to a class num. + SenderTemplate() FlowRSVPPathObjectsClassSenderTemplate + // SetSenderTemplate assigns FlowRSVPPathObjectsClassSenderTemplate provided by user to FlowRSVPPathObjectsClass. + // FlowRSVPPathObjectsClassSenderTemplate is c-Type is specific to a class num. + SetSenderTemplate(value FlowRSVPPathObjectsClassSenderTemplate) FlowRSVPPathObjectsClass + // HasSenderTemplate checks if SenderTemplate has been set in FlowRSVPPathObjectsClass + HasSenderTemplate() bool + // SenderTspec returns FlowRSVPPathObjectsClassSenderTspec, set in FlowRSVPPathObjectsClass. + // FlowRSVPPathObjectsClassSenderTspec is c-Type is specific to a class num. + SenderTspec() FlowRSVPPathObjectsClassSenderTspec + // SetSenderTspec assigns FlowRSVPPathObjectsClassSenderTspec provided by user to FlowRSVPPathObjectsClass. + // FlowRSVPPathObjectsClassSenderTspec is c-Type is specific to a class num. + SetSenderTspec(value FlowRSVPPathObjectsClassSenderTspec) FlowRSVPPathObjectsClass + // HasSenderTspec checks if SenderTspec has been set in FlowRSVPPathObjectsClass + HasSenderTspec() bool + // RecordRoute returns FlowRSVPPathObjectsClassRecordRoute, set in FlowRSVPPathObjectsClass. + // FlowRSVPPathObjectsClassRecordRoute is c-Type is specific to a class num. + RecordRoute() FlowRSVPPathObjectsClassRecordRoute + // SetRecordRoute assigns FlowRSVPPathObjectsClassRecordRoute provided by user to FlowRSVPPathObjectsClass. + // FlowRSVPPathObjectsClassRecordRoute is c-Type is specific to a class num. + SetRecordRoute(value FlowRSVPPathObjectsClassRecordRoute) FlowRSVPPathObjectsClass + // HasRecordRoute checks if RecordRoute has been set in FlowRSVPPathObjectsClass + HasRecordRoute() bool + // Custom returns FlowRSVPPathObjectsCustom, set in FlowRSVPPathObjectsClass. + // FlowRSVPPathObjectsCustom is custom packet header + Custom() FlowRSVPPathObjectsCustom + // SetCustom assigns FlowRSVPPathObjectsCustom provided by user to FlowRSVPPathObjectsClass. + // FlowRSVPPathObjectsCustom is custom packet header + SetCustom(value FlowRSVPPathObjectsCustom) FlowRSVPPathObjectsClass + // HasCustom checks if Custom has been set in FlowRSVPPathObjectsClass + HasCustom() bool + setNil() } -// Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field -// Name returns a string -func (obj *patternFlowMplsLabelMetricTag) Name() string { +type FlowRSVPPathObjectsClassChoiceEnum string + +// Enum of Choice on FlowRSVPPathObjectsClass +var FlowRSVPPathObjectsClassChoice = struct { + SESSION FlowRSVPPathObjectsClassChoiceEnum + RSVP_HOP FlowRSVPPathObjectsClassChoiceEnum + TIME_VALUES FlowRSVPPathObjectsClassChoiceEnum + EXPLICIT_ROUTE FlowRSVPPathObjectsClassChoiceEnum + LABEL_REQUEST FlowRSVPPathObjectsClassChoiceEnum + SESSION_ATTRIBUTE FlowRSVPPathObjectsClassChoiceEnum + SENDER_TEMPLATE FlowRSVPPathObjectsClassChoiceEnum + SENDER_TSPEC FlowRSVPPathObjectsClassChoiceEnum + RECORD_ROUTE FlowRSVPPathObjectsClassChoiceEnum + CUSTOM FlowRSVPPathObjectsClassChoiceEnum +}{ + SESSION: FlowRSVPPathObjectsClassChoiceEnum("session"), + RSVP_HOP: FlowRSVPPathObjectsClassChoiceEnum("rsvp_hop"), + TIME_VALUES: FlowRSVPPathObjectsClassChoiceEnum("time_values"), + EXPLICIT_ROUTE: FlowRSVPPathObjectsClassChoiceEnum("explicit_route"), + LABEL_REQUEST: FlowRSVPPathObjectsClassChoiceEnum("label_request"), + SESSION_ATTRIBUTE: FlowRSVPPathObjectsClassChoiceEnum("session_attribute"), + SENDER_TEMPLATE: FlowRSVPPathObjectsClassChoiceEnum("sender_template"), + SENDER_TSPEC: FlowRSVPPathObjectsClassChoiceEnum("sender_tspec"), + RECORD_ROUTE: FlowRSVPPathObjectsClassChoiceEnum("record_route"), + CUSTOM: FlowRSVPPathObjectsClassChoiceEnum("custom"), +} - return *obj.obj.Name +func (obj *flowRSVPPathObjectsClass) Choice() FlowRSVPPathObjectsClassChoiceEnum { + return FlowRSVPPathObjectsClassChoiceEnum(obj.obj.Choice.Enum().String()) +} + +func (obj *flowRSVPPathObjectsClass) SetChoice(value FlowRSVPPathObjectsClassChoiceEnum) FlowRSVPPathObjectsClass { + intValue, ok := otg.FlowRSVPPathObjectsClass_Choice_Enum_value[string(value)] + if !ok { + obj.validationErrors = append(obj.validationErrors, fmt.Sprintf( + "%s is not a valid choice on FlowRSVPPathObjectsClassChoiceEnum", string(value))) + return obj + } + enumValue := otg.FlowRSVPPathObjectsClass_Choice_Enum(intValue) + obj.obj.Choice = &enumValue + obj.obj.Custom = nil + obj.customHolder = nil + obj.obj.RecordRoute = nil + obj.recordRouteHolder = nil + obj.obj.SenderTspec = nil + obj.senderTspecHolder = nil + obj.obj.SenderTemplate = nil + obj.senderTemplateHolder = nil + obj.obj.SessionAttribute = nil + obj.sessionAttributeHolder = nil + obj.obj.LabelRequest = nil + obj.labelRequestHolder = nil + obj.obj.ExplicitRoute = nil + obj.explicitRouteHolder = nil + obj.obj.TimeValues = nil + obj.timeValuesHolder = nil + obj.obj.RsvpHop = nil + obj.rsvpHopHolder = nil + obj.obj.Session = nil + obj.sessionHolder = nil + + if value == FlowRSVPPathObjectsClassChoice.SESSION { + obj.obj.Session = NewFlowRSVPPathObjectsClassSession().Msg() + } + + if value == FlowRSVPPathObjectsClassChoice.RSVP_HOP { + obj.obj.RsvpHop = NewFlowRSVPPathObjectsClassRsvpHop().Msg() + } + + if value == FlowRSVPPathObjectsClassChoice.TIME_VALUES { + obj.obj.TimeValues = NewFlowRSVPPathObjectsClassTimeValues().Msg() + } + + if value == FlowRSVPPathObjectsClassChoice.EXPLICIT_ROUTE { + obj.obj.ExplicitRoute = NewFlowRSVPPathObjectsClassExplicitRoute().Msg() + } + + if value == FlowRSVPPathObjectsClassChoice.LABEL_REQUEST { + obj.obj.LabelRequest = NewFlowRSVPPathObjectsClassLabelRequest().Msg() + } + + if value == FlowRSVPPathObjectsClassChoice.SESSION_ATTRIBUTE { + obj.obj.SessionAttribute = NewFlowRSVPPathObjectsClassSessionAttribute().Msg() + } + + if value == FlowRSVPPathObjectsClassChoice.SENDER_TEMPLATE { + obj.obj.SenderTemplate = NewFlowRSVPPathObjectsClassSenderTemplate().Msg() + } + + if value == FlowRSVPPathObjectsClassChoice.SENDER_TSPEC { + obj.obj.SenderTspec = NewFlowRSVPPathObjectsClassSenderTspec().Msg() + } + + if value == FlowRSVPPathObjectsClassChoice.RECORD_ROUTE { + obj.obj.RecordRoute = NewFlowRSVPPathObjectsClassRecordRoute().Msg() + } + + if value == FlowRSVPPathObjectsClassChoice.CUSTOM { + obj.obj.Custom = NewFlowRSVPPathObjectsCustom().Msg() + } + + return obj +} +// description is TBD +// Session returns a FlowRSVPPathObjectsClassSession +func (obj *flowRSVPPathObjectsClass) Session() FlowRSVPPathObjectsClassSession { + if obj.obj.Session == nil { + obj.SetChoice(FlowRSVPPathObjectsClassChoice.SESSION) + } + if obj.sessionHolder == nil { + obj.sessionHolder = &flowRSVPPathObjectsClassSession{obj: obj.obj.Session} + } + return obj.sessionHolder } -// Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field -// SetName sets the string value in the PatternFlowMplsLabelMetricTag object -func (obj *patternFlowMplsLabelMetricTag) SetName(value string) PatternFlowMplsLabelMetricTag { +// description is TBD +// Session returns a FlowRSVPPathObjectsClassSession +func (obj *flowRSVPPathObjectsClass) HasSession() bool { + return obj.obj.Session != nil +} + +// description is TBD +// SetSession sets the FlowRSVPPathObjectsClassSession value in the FlowRSVPPathObjectsClass object +func (obj *flowRSVPPathObjectsClass) SetSession(value FlowRSVPPathObjectsClassSession) FlowRSVPPathObjectsClass { + obj.SetChoice(FlowRSVPPathObjectsClassChoice.SESSION) + obj.sessionHolder = nil + obj.obj.Session = value.Msg() - obj.obj.Name = &value return obj } -// Offset in bits relative to start of corresponding header field -// Offset returns a uint32 -func (obj *patternFlowMplsLabelMetricTag) Offset() uint32 { +// description is TBD +// RsvpHop returns a FlowRSVPPathObjectsClassRsvpHop +func (obj *flowRSVPPathObjectsClass) RsvpHop() FlowRSVPPathObjectsClassRsvpHop { + if obj.obj.RsvpHop == nil { + obj.SetChoice(FlowRSVPPathObjectsClassChoice.RSVP_HOP) + } + if obj.rsvpHopHolder == nil { + obj.rsvpHopHolder = &flowRSVPPathObjectsClassRsvpHop{obj: obj.obj.RsvpHop} + } + return obj.rsvpHopHolder +} - return *obj.obj.Offset +// description is TBD +// RsvpHop returns a FlowRSVPPathObjectsClassRsvpHop +func (obj *flowRSVPPathObjectsClass) HasRsvpHop() bool { + return obj.obj.RsvpHop != nil +} + +// description is TBD +// SetRsvpHop sets the FlowRSVPPathObjectsClassRsvpHop value in the FlowRSVPPathObjectsClass object +func (obj *flowRSVPPathObjectsClass) SetRsvpHop(value FlowRSVPPathObjectsClassRsvpHop) FlowRSVPPathObjectsClass { + obj.SetChoice(FlowRSVPPathObjectsClassChoice.RSVP_HOP) + obj.rsvpHopHolder = nil + obj.obj.RsvpHop = value.Msg() + return obj } -// Offset in bits relative to start of corresponding header field -// Offset returns a uint32 -func (obj *patternFlowMplsLabelMetricTag) HasOffset() bool { - return obj.obj.Offset != nil +// description is TBD +// TimeValues returns a FlowRSVPPathObjectsClassTimeValues +func (obj *flowRSVPPathObjectsClass) TimeValues() FlowRSVPPathObjectsClassTimeValues { + if obj.obj.TimeValues == nil { + obj.SetChoice(FlowRSVPPathObjectsClassChoice.TIME_VALUES) + } + if obj.timeValuesHolder == nil { + obj.timeValuesHolder = &flowRSVPPathObjectsClassTimeValues{obj: obj.obj.TimeValues} + } + return obj.timeValuesHolder } -// Offset in bits relative to start of corresponding header field -// SetOffset sets the uint32 value in the PatternFlowMplsLabelMetricTag object -func (obj *patternFlowMplsLabelMetricTag) SetOffset(value uint32) PatternFlowMplsLabelMetricTag { +// description is TBD +// TimeValues returns a FlowRSVPPathObjectsClassTimeValues +func (obj *flowRSVPPathObjectsClass) HasTimeValues() bool { + return obj.obj.TimeValues != nil +} + +// description is TBD +// SetTimeValues sets the FlowRSVPPathObjectsClassTimeValues value in the FlowRSVPPathObjectsClass object +func (obj *flowRSVPPathObjectsClass) SetTimeValues(value FlowRSVPPathObjectsClassTimeValues) FlowRSVPPathObjectsClass { + obj.SetChoice(FlowRSVPPathObjectsClassChoice.TIME_VALUES) + obj.timeValuesHolder = nil + obj.obj.TimeValues = value.Msg() - obj.obj.Offset = &value return obj } -// Number of bits to track for metrics starting from configured offset of corresponding header field -// Length returns a uint32 -func (obj *patternFlowMplsLabelMetricTag) Length() uint32 { +// description is TBD +// ExplicitRoute returns a FlowRSVPPathObjectsClassExplicitRoute +func (obj *flowRSVPPathObjectsClass) ExplicitRoute() FlowRSVPPathObjectsClassExplicitRoute { + if obj.obj.ExplicitRoute == nil { + obj.SetChoice(FlowRSVPPathObjectsClassChoice.EXPLICIT_ROUTE) + } + if obj.explicitRouteHolder == nil { + obj.explicitRouteHolder = &flowRSVPPathObjectsClassExplicitRoute{obj: obj.obj.ExplicitRoute} + } + return obj.explicitRouteHolder +} - return *obj.obj.Length +// description is TBD +// ExplicitRoute returns a FlowRSVPPathObjectsClassExplicitRoute +func (obj *flowRSVPPathObjectsClass) HasExplicitRoute() bool { + return obj.obj.ExplicitRoute != nil +} + +// description is TBD +// SetExplicitRoute sets the FlowRSVPPathObjectsClassExplicitRoute value in the FlowRSVPPathObjectsClass object +func (obj *flowRSVPPathObjectsClass) SetExplicitRoute(value FlowRSVPPathObjectsClassExplicitRoute) FlowRSVPPathObjectsClass { + obj.SetChoice(FlowRSVPPathObjectsClassChoice.EXPLICIT_ROUTE) + obj.explicitRouteHolder = nil + obj.obj.ExplicitRoute = value.Msg() + return obj } -// Number of bits to track for metrics starting from configured offset of corresponding header field -// Length returns a uint32 -func (obj *patternFlowMplsLabelMetricTag) HasLength() bool { - return obj.obj.Length != nil +// description is TBD +// LabelRequest returns a FlowRSVPPathObjectsClassLabelRequest +func (obj *flowRSVPPathObjectsClass) LabelRequest() FlowRSVPPathObjectsClassLabelRequest { + if obj.obj.LabelRequest == nil { + obj.SetChoice(FlowRSVPPathObjectsClassChoice.LABEL_REQUEST) + } + if obj.labelRequestHolder == nil { + obj.labelRequestHolder = &flowRSVPPathObjectsClassLabelRequest{obj: obj.obj.LabelRequest} + } + return obj.labelRequestHolder } -// Number of bits to track for metrics starting from configured offset of corresponding header field -// SetLength sets the uint32 value in the PatternFlowMplsLabelMetricTag object -func (obj *patternFlowMplsLabelMetricTag) SetLength(value uint32) PatternFlowMplsLabelMetricTag { +// description is TBD +// LabelRequest returns a FlowRSVPPathObjectsClassLabelRequest +func (obj *flowRSVPPathObjectsClass) HasLabelRequest() bool { + return obj.obj.LabelRequest != nil +} + +// description is TBD +// SetLabelRequest sets the FlowRSVPPathObjectsClassLabelRequest value in the FlowRSVPPathObjectsClass object +func (obj *flowRSVPPathObjectsClass) SetLabelRequest(value FlowRSVPPathObjectsClassLabelRequest) FlowRSVPPathObjectsClass { + obj.SetChoice(FlowRSVPPathObjectsClassChoice.LABEL_REQUEST) + obj.labelRequestHolder = nil + obj.obj.LabelRequest = value.Msg() - obj.obj.Length = &value return obj } -func (obj *patternFlowMplsLabelMetricTag) validateObj(vObj *validation, set_default bool) { +// description is TBD +// SessionAttribute returns a FlowRSVPPathObjectsClassSessionAttribute +func (obj *flowRSVPPathObjectsClass) SessionAttribute() FlowRSVPPathObjectsClassSessionAttribute { + if obj.obj.SessionAttribute == nil { + obj.SetChoice(FlowRSVPPathObjectsClassChoice.SESSION_ATTRIBUTE) + } + if obj.sessionAttributeHolder == nil { + obj.sessionAttributeHolder = &flowRSVPPathObjectsClassSessionAttribute{obj: obj.obj.SessionAttribute} + } + return obj.sessionAttributeHolder +} + +// description is TBD +// SessionAttribute returns a FlowRSVPPathObjectsClassSessionAttribute +func (obj *flowRSVPPathObjectsClass) HasSessionAttribute() bool { + return obj.obj.SessionAttribute != nil +} + +// description is TBD +// SetSessionAttribute sets the FlowRSVPPathObjectsClassSessionAttribute value in the FlowRSVPPathObjectsClass object +func (obj *flowRSVPPathObjectsClass) SetSessionAttribute(value FlowRSVPPathObjectsClassSessionAttribute) FlowRSVPPathObjectsClass { + obj.SetChoice(FlowRSVPPathObjectsClassChoice.SESSION_ATTRIBUTE) + obj.sessionAttributeHolder = nil + obj.obj.SessionAttribute = value.Msg() + + return obj +} + +// description is TBD +// SenderTemplate returns a FlowRSVPPathObjectsClassSenderTemplate +func (obj *flowRSVPPathObjectsClass) SenderTemplate() FlowRSVPPathObjectsClassSenderTemplate { + if obj.obj.SenderTemplate == nil { + obj.SetChoice(FlowRSVPPathObjectsClassChoice.SENDER_TEMPLATE) + } + if obj.senderTemplateHolder == nil { + obj.senderTemplateHolder = &flowRSVPPathObjectsClassSenderTemplate{obj: obj.obj.SenderTemplate} + } + return obj.senderTemplateHolder +} + +// description is TBD +// SenderTemplate returns a FlowRSVPPathObjectsClassSenderTemplate +func (obj *flowRSVPPathObjectsClass) HasSenderTemplate() bool { + return obj.obj.SenderTemplate != nil +} + +// description is TBD +// SetSenderTemplate sets the FlowRSVPPathObjectsClassSenderTemplate value in the FlowRSVPPathObjectsClass object +func (obj *flowRSVPPathObjectsClass) SetSenderTemplate(value FlowRSVPPathObjectsClassSenderTemplate) FlowRSVPPathObjectsClass { + obj.SetChoice(FlowRSVPPathObjectsClassChoice.SENDER_TEMPLATE) + obj.senderTemplateHolder = nil + obj.obj.SenderTemplate = value.Msg() + + return obj +} + +// description is TBD +// SenderTspec returns a FlowRSVPPathObjectsClassSenderTspec +func (obj *flowRSVPPathObjectsClass) SenderTspec() FlowRSVPPathObjectsClassSenderTspec { + if obj.obj.SenderTspec == nil { + obj.SetChoice(FlowRSVPPathObjectsClassChoice.SENDER_TSPEC) + } + if obj.senderTspecHolder == nil { + obj.senderTspecHolder = &flowRSVPPathObjectsClassSenderTspec{obj: obj.obj.SenderTspec} + } + return obj.senderTspecHolder +} + +// description is TBD +// SenderTspec returns a FlowRSVPPathObjectsClassSenderTspec +func (obj *flowRSVPPathObjectsClass) HasSenderTspec() bool { + return obj.obj.SenderTspec != nil +} + +// description is TBD +// SetSenderTspec sets the FlowRSVPPathObjectsClassSenderTspec value in the FlowRSVPPathObjectsClass object +func (obj *flowRSVPPathObjectsClass) SetSenderTspec(value FlowRSVPPathObjectsClassSenderTspec) FlowRSVPPathObjectsClass { + obj.SetChoice(FlowRSVPPathObjectsClassChoice.SENDER_TSPEC) + obj.senderTspecHolder = nil + obj.obj.SenderTspec = value.Msg() + + return obj +} + +// description is TBD +// RecordRoute returns a FlowRSVPPathObjectsClassRecordRoute +func (obj *flowRSVPPathObjectsClass) RecordRoute() FlowRSVPPathObjectsClassRecordRoute { + if obj.obj.RecordRoute == nil { + obj.SetChoice(FlowRSVPPathObjectsClassChoice.RECORD_ROUTE) + } + if obj.recordRouteHolder == nil { + obj.recordRouteHolder = &flowRSVPPathObjectsClassRecordRoute{obj: obj.obj.RecordRoute} + } + return obj.recordRouteHolder +} + +// description is TBD +// RecordRoute returns a FlowRSVPPathObjectsClassRecordRoute +func (obj *flowRSVPPathObjectsClass) HasRecordRoute() bool { + return obj.obj.RecordRoute != nil +} + +// description is TBD +// SetRecordRoute sets the FlowRSVPPathObjectsClassRecordRoute value in the FlowRSVPPathObjectsClass object +func (obj *flowRSVPPathObjectsClass) SetRecordRoute(value FlowRSVPPathObjectsClassRecordRoute) FlowRSVPPathObjectsClass { + obj.SetChoice(FlowRSVPPathObjectsClassChoice.RECORD_ROUTE) + obj.recordRouteHolder = nil + obj.obj.RecordRoute = value.Msg() + + return obj +} + +// description is TBD +// Custom returns a FlowRSVPPathObjectsCustom +func (obj *flowRSVPPathObjectsClass) Custom() FlowRSVPPathObjectsCustom { + if obj.obj.Custom == nil { + obj.SetChoice(FlowRSVPPathObjectsClassChoice.CUSTOM) + } + if obj.customHolder == nil { + obj.customHolder = &flowRSVPPathObjectsCustom{obj: obj.obj.Custom} + } + return obj.customHolder +} + +// description is TBD +// Custom returns a FlowRSVPPathObjectsCustom +func (obj *flowRSVPPathObjectsClass) HasCustom() bool { + return obj.obj.Custom != nil +} + +// description is TBD +// SetCustom sets the FlowRSVPPathObjectsCustom value in the FlowRSVPPathObjectsClass object +func (obj *flowRSVPPathObjectsClass) SetCustom(value FlowRSVPPathObjectsCustom) FlowRSVPPathObjectsClass { + obj.SetChoice(FlowRSVPPathObjectsClassChoice.CUSTOM) + obj.customHolder = nil + obj.obj.Custom = value.Msg() + + return obj +} + +func (obj *flowRSVPPathObjectsClass) validateObj(vObj *validation, set_default bool) { if set_default { obj.setDefault() } - // Name is required - if obj.obj.Name == nil { - vObj.validationErrors = append(vObj.validationErrors, "Name is required field on interface PatternFlowMplsLabelMetricTag") + // Choice is required + if obj.obj.Choice == nil { + vObj.validationErrors = append(vObj.validationErrors, "Choice is required field on interface FlowRSVPPathObjectsClass") } - if obj.obj.Offset != nil { + if obj.obj.Session != nil { - if *obj.obj.Offset > 19 { - vObj.validationErrors = append( - vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowMplsLabelMetricTag.Offset <= 19 but Got %d", *obj.obj.Offset)) - } + obj.Session().validateObj(vObj, set_default) + } + + if obj.obj.RsvpHop != nil { + obj.RsvpHop().validateObj(vObj, set_default) } - if obj.obj.Length != nil { + if obj.obj.TimeValues != nil { - if *obj.obj.Length < 1 || *obj.obj.Length > 20 { - vObj.validationErrors = append( - vObj.validationErrors, - fmt.Sprintf("1 <= PatternFlowMplsLabelMetricTag.Length <= 20 but Got %d", *obj.obj.Length)) - } + obj.TimeValues().validateObj(vObj, set_default) + } + + if obj.obj.ExplicitRoute != nil { + obj.ExplicitRoute().validateObj(vObj, set_default) } -} + if obj.obj.LabelRequest != nil { -func (obj *patternFlowMplsLabelMetricTag) setDefault() { - if obj.obj.Offset == nil { - obj.SetOffset(0) + obj.LabelRequest().validateObj(vObj, set_default) } - if obj.obj.Length == nil { - obj.SetLength(20) + + if obj.obj.SessionAttribute != nil { + + obj.SessionAttribute().validateObj(vObj, set_default) + } + + if obj.obj.SenderTemplate != nil { + + obj.SenderTemplate().validateObj(vObj, set_default) + } + + if obj.obj.SenderTspec != nil { + + obj.SenderTspec().validateObj(vObj, set_default) + } + + if obj.obj.RecordRoute != nil { + + obj.RecordRoute().validateObj(vObj, set_default) + } + + if obj.obj.Custom != nil { + + obj.Custom().validateObj(vObj, set_default) } } -// ***** PatternFlowMplsTrafficClassCounter ***** -type patternFlowMplsTrafficClassCounter struct { +func (obj *flowRSVPPathObjectsClass) setDefault() { + +} + +// ***** IsisLspPrefixAttributes ***** +type isisLspPrefixAttributes struct { validation - obj *otg.PatternFlowMplsTrafficClassCounter + obj *otg.IsisLspPrefixAttributes } -func NewPatternFlowMplsTrafficClassCounter() PatternFlowMplsTrafficClassCounter { - obj := patternFlowMplsTrafficClassCounter{obj: &otg.PatternFlowMplsTrafficClassCounter{}} +func NewIsisLspPrefixAttributes() IsisLspPrefixAttributes { + obj := isisLspPrefixAttributes{obj: &otg.IsisLspPrefixAttributes{}} obj.setDefault() return &obj } -func (obj *patternFlowMplsTrafficClassCounter) Msg() *otg.PatternFlowMplsTrafficClassCounter { +func (obj *isisLspPrefixAttributes) Msg() *otg.IsisLspPrefixAttributes { return obj.obj } -func (obj *patternFlowMplsTrafficClassCounter) SetMsg(msg *otg.PatternFlowMplsTrafficClassCounter) PatternFlowMplsTrafficClassCounter { +func (obj *isisLspPrefixAttributes) SetMsg(msg *otg.IsisLspPrefixAttributes) IsisLspPrefixAttributes { proto.Merge(obj.obj, msg) return obj } -func (obj *patternFlowMplsTrafficClassCounter) ToProto() (*otg.PatternFlowMplsTrafficClassCounter, error) { +func (obj *isisLspPrefixAttributes) ToProto() (*otg.IsisLspPrefixAttributes, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -270064,7 +316660,7 @@ func (obj *patternFlowMplsTrafficClassCounter) ToProto() (*otg.PatternFlowMplsTr return obj.Msg(), nil } -func (obj *patternFlowMplsTrafficClassCounter) FromProto(msg *otg.PatternFlowMplsTrafficClassCounter) (PatternFlowMplsTrafficClassCounter, error) { +func (obj *isisLspPrefixAttributes) FromProto(msg *otg.IsisLspPrefixAttributes) (IsisLspPrefixAttributes, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -270073,7 +316669,7 @@ func (obj *patternFlowMplsTrafficClassCounter) FromProto(msg *otg.PatternFlowMpl return newObj, nil } -func (obj *patternFlowMplsTrafficClassCounter) ToPbText() (string, error) { +func (obj *isisLspPrefixAttributes) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -270085,7 +316681,7 @@ func (obj *patternFlowMplsTrafficClassCounter) ToPbText() (string, error) { return string(protoMarshal), nil } -func (obj *patternFlowMplsTrafficClassCounter) FromPbText(value string) error { +func (obj *isisLspPrefixAttributes) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj @@ -270098,7 +316694,7 @@ func (obj *patternFlowMplsTrafficClassCounter) FromPbText(value string) error { return retObj } -func (obj *patternFlowMplsTrafficClassCounter) ToYaml() (string, error) { +func (obj *isisLspPrefixAttributes) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -270119,7 +316715,7 @@ func (obj *patternFlowMplsTrafficClassCounter) ToYaml() (string, error) { return string(data), nil } -func (obj *patternFlowMplsTrafficClassCounter) FromYaml(value string) error { +func (obj *isisLspPrefixAttributes) FromYaml(value string) error { if value == "" { value = "{}" } @@ -270144,7 +316740,7 @@ func (obj *patternFlowMplsTrafficClassCounter) FromYaml(value string) error { return nil } -func (obj *patternFlowMplsTrafficClassCounter) ToJson() (string, error) { +func (obj *isisLspPrefixAttributes) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -270162,7 +316758,7 @@ func (obj *patternFlowMplsTrafficClassCounter) ToJson() (string, error) { return string(data), nil } -func (obj *patternFlowMplsTrafficClassCounter) FromJson(value string) error { +func (obj *isisLspPrefixAttributes) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -270183,19 +316779,19 @@ func (obj *patternFlowMplsTrafficClassCounter) FromJson(value string) error { return nil } -func (obj *patternFlowMplsTrafficClassCounter) validateToAndFrom() error { +func (obj *isisLspPrefixAttributes) validateToAndFrom() error { // emptyVars() obj.validateObj(&obj.validation, true) return obj.validationResult() } -func (obj *patternFlowMplsTrafficClassCounter) Validate() error { +func (obj *isisLspPrefixAttributes) Validate() error { // emptyVars() obj.validateObj(&obj.validation, false) return obj.validationResult() } -func (obj *patternFlowMplsTrafficClassCounter) String() string { +func (obj *isisLspPrefixAttributes) String() string { str, err := obj.ToYaml() if err != nil { return err.Error() @@ -270203,12 +316799,12 @@ func (obj *patternFlowMplsTrafficClassCounter) String() string { return str } -func (obj *patternFlowMplsTrafficClassCounter) Clone() (PatternFlowMplsTrafficClassCounter, error) { +func (obj *isisLspPrefixAttributes) Clone() (IsisLspPrefixAttributes, error) { vErr := obj.Validate() if vErr != nil { return nil, vErr } - newObj := NewPatternFlowMplsTrafficClassCounter() + newObj := NewIsisLspPrefixAttributes() data, err := proto.Marshal(obj.Msg()) if err != nil { return nil, err @@ -270220,199 +316816,161 @@ func (obj *patternFlowMplsTrafficClassCounter) Clone() (PatternFlowMplsTrafficCl return newObj, nil } -// PatternFlowMplsTrafficClassCounter is integer counter pattern -type PatternFlowMplsTrafficClassCounter interface { +// IsisLspPrefixAttributes is this contains the properties of ISIS Prefix attributes for the extended IPv4 and IPv6 reachability. https://www.rfc-editor.org/rfc/rfc7794.html +type IsisLspPrefixAttributes interface { Validation - // Msg marshals PatternFlowMplsTrafficClassCounter to protobuf object *otg.PatternFlowMplsTrafficClassCounter + // Msg marshals IsisLspPrefixAttributes to protobuf object *otg.IsisLspPrefixAttributes // and doesn't set defaults - Msg() *otg.PatternFlowMplsTrafficClassCounter - // SetMsg unmarshals PatternFlowMplsTrafficClassCounter from protobuf object *otg.PatternFlowMplsTrafficClassCounter + Msg() *otg.IsisLspPrefixAttributes + // SetMsg unmarshals IsisLspPrefixAttributes from protobuf object *otg.IsisLspPrefixAttributes // and doesn't set defaults - SetMsg(*otg.PatternFlowMplsTrafficClassCounter) PatternFlowMplsTrafficClassCounter - // ToProto marshals PatternFlowMplsTrafficClassCounter to protobuf object *otg.PatternFlowMplsTrafficClassCounter - ToProto() (*otg.PatternFlowMplsTrafficClassCounter, error) - // ToPbText marshals PatternFlowMplsTrafficClassCounter to protobuf text + SetMsg(*otg.IsisLspPrefixAttributes) IsisLspPrefixAttributes + // ToProto marshals IsisLspPrefixAttributes to protobuf object *otg.IsisLspPrefixAttributes + ToProto() (*otg.IsisLspPrefixAttributes, error) + // ToPbText marshals IsisLspPrefixAttributes to protobuf text ToPbText() (string, error) - // ToYaml marshals PatternFlowMplsTrafficClassCounter to YAML text + // ToYaml marshals IsisLspPrefixAttributes to YAML text ToYaml() (string, error) - // ToJson marshals PatternFlowMplsTrafficClassCounter to JSON text + // ToJson marshals IsisLspPrefixAttributes to JSON text ToJson() (string, error) - // FromProto unmarshals PatternFlowMplsTrafficClassCounter from protobuf object *otg.PatternFlowMplsTrafficClassCounter - FromProto(msg *otg.PatternFlowMplsTrafficClassCounter) (PatternFlowMplsTrafficClassCounter, error) - // FromPbText unmarshals PatternFlowMplsTrafficClassCounter from protobuf text + // FromProto unmarshals IsisLspPrefixAttributes from protobuf object *otg.IsisLspPrefixAttributes + FromProto(msg *otg.IsisLspPrefixAttributes) (IsisLspPrefixAttributes, error) + // FromPbText unmarshals IsisLspPrefixAttributes from protobuf text FromPbText(value string) error - // FromYaml unmarshals PatternFlowMplsTrafficClassCounter from YAML text + // FromYaml unmarshals IsisLspPrefixAttributes from YAML text FromYaml(value string) error - // FromJson unmarshals PatternFlowMplsTrafficClassCounter from JSON text + // FromJson unmarshals IsisLspPrefixAttributes from JSON text FromJson(value string) error - // Validate validates PatternFlowMplsTrafficClassCounter + // Validate validates IsisLspPrefixAttributes Validate() error // A stringer function String() string // Clones the object - Clone() (PatternFlowMplsTrafficClassCounter, error) + Clone() (IsisLspPrefixAttributes, error) validateToAndFrom() error validateObj(vObj *validation, set_default bool) setDefault() - // Start returns uint32, set in PatternFlowMplsTrafficClassCounter. - Start() uint32 - // SetStart assigns uint32 provided by user to PatternFlowMplsTrafficClassCounter - SetStart(value uint32) PatternFlowMplsTrafficClassCounter - // HasStart checks if Start has been set in PatternFlowMplsTrafficClassCounter - HasStart() bool - // Step returns uint32, set in PatternFlowMplsTrafficClassCounter. - Step() uint32 - // SetStep assigns uint32 provided by user to PatternFlowMplsTrafficClassCounter - SetStep(value uint32) PatternFlowMplsTrafficClassCounter - // HasStep checks if Step has been set in PatternFlowMplsTrafficClassCounter - HasStep() bool - // Count returns uint32, set in PatternFlowMplsTrafficClassCounter. - Count() uint32 - // SetCount assigns uint32 provided by user to PatternFlowMplsTrafficClassCounter - SetCount(value uint32) PatternFlowMplsTrafficClassCounter - // HasCount checks if Count has been set in PatternFlowMplsTrafficClassCounter - HasCount() bool + // XFlag returns bool, set in IsisLspPrefixAttributes. + XFlag() bool + // SetXFlag assigns bool provided by user to IsisLspPrefixAttributes + SetXFlag(value bool) IsisLspPrefixAttributes + // HasXFlag checks if XFlag has been set in IsisLspPrefixAttributes + HasXFlag() bool + // RFlag returns bool, set in IsisLspPrefixAttributes. + RFlag() bool + // SetRFlag assigns bool provided by user to IsisLspPrefixAttributes + SetRFlag(value bool) IsisLspPrefixAttributes + // HasRFlag checks if RFlag has been set in IsisLspPrefixAttributes + HasRFlag() bool + // NFlag returns bool, set in IsisLspPrefixAttributes. + NFlag() bool + // SetNFlag assigns bool provided by user to IsisLspPrefixAttributes + SetNFlag(value bool) IsisLspPrefixAttributes + // HasNFlag checks if NFlag has been set in IsisLspPrefixAttributes + HasNFlag() bool } -// description is TBD -// Start returns a uint32 -func (obj *patternFlowMplsTrafficClassCounter) Start() uint32 { +// External Prefix Flag (Bit 0) +// XFlag returns a bool +func (obj *isisLspPrefixAttributes) XFlag() bool { - return *obj.obj.Start + return *obj.obj.XFlag } -// description is TBD -// Start returns a uint32 -func (obj *patternFlowMplsTrafficClassCounter) HasStart() bool { - return obj.obj.Start != nil +// External Prefix Flag (Bit 0) +// XFlag returns a bool +func (obj *isisLspPrefixAttributes) HasXFlag() bool { + return obj.obj.XFlag != nil } -// description is TBD -// SetStart sets the uint32 value in the PatternFlowMplsTrafficClassCounter object -func (obj *patternFlowMplsTrafficClassCounter) SetStart(value uint32) PatternFlowMplsTrafficClassCounter { +// External Prefix Flag (Bit 0) +// SetXFlag sets the bool value in the IsisLspPrefixAttributes object +func (obj *isisLspPrefixAttributes) SetXFlag(value bool) IsisLspPrefixAttributes { - obj.obj.Start = &value + obj.obj.XFlag = &value return obj } -// description is TBD -// Step returns a uint32 -func (obj *patternFlowMplsTrafficClassCounter) Step() uint32 { +// Re-advertisement Flag (Bit 1) +// RFlag returns a bool +func (obj *isisLspPrefixAttributes) RFlag() bool { - return *obj.obj.Step + return *obj.obj.RFlag } -// description is TBD -// Step returns a uint32 -func (obj *patternFlowMplsTrafficClassCounter) HasStep() bool { - return obj.obj.Step != nil +// Re-advertisement Flag (Bit 1) +// RFlag returns a bool +func (obj *isisLspPrefixAttributes) HasRFlag() bool { + return obj.obj.RFlag != nil } -// description is TBD -// SetStep sets the uint32 value in the PatternFlowMplsTrafficClassCounter object -func (obj *patternFlowMplsTrafficClassCounter) SetStep(value uint32) PatternFlowMplsTrafficClassCounter { +// Re-advertisement Flag (Bit 1) +// SetRFlag sets the bool value in the IsisLspPrefixAttributes object +func (obj *isisLspPrefixAttributes) SetRFlag(value bool) IsisLspPrefixAttributes { - obj.obj.Step = &value + obj.obj.RFlag = &value return obj } -// description is TBD -// Count returns a uint32 -func (obj *patternFlowMplsTrafficClassCounter) Count() uint32 { +// Node Flag (Bit 2) +// NFlag returns a bool +func (obj *isisLspPrefixAttributes) NFlag() bool { - return *obj.obj.Count + return *obj.obj.NFlag } -// description is TBD -// Count returns a uint32 -func (obj *patternFlowMplsTrafficClassCounter) HasCount() bool { - return obj.obj.Count != nil +// Node Flag (Bit 2) +// NFlag returns a bool +func (obj *isisLspPrefixAttributes) HasNFlag() bool { + return obj.obj.NFlag != nil } -// description is TBD -// SetCount sets the uint32 value in the PatternFlowMplsTrafficClassCounter object -func (obj *patternFlowMplsTrafficClassCounter) SetCount(value uint32) PatternFlowMplsTrafficClassCounter { +// Node Flag (Bit 2) +// SetNFlag sets the bool value in the IsisLspPrefixAttributes object +func (obj *isisLspPrefixAttributes) SetNFlag(value bool) IsisLspPrefixAttributes { - obj.obj.Count = &value + obj.obj.NFlag = &value return obj } -func (obj *patternFlowMplsTrafficClassCounter) validateObj(vObj *validation, set_default bool) { +func (obj *isisLspPrefixAttributes) validateObj(vObj *validation, set_default bool) { if set_default { obj.setDefault() } - if obj.obj.Start != nil { - - if *obj.obj.Start > 7 { - vObj.validationErrors = append( - vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowMplsTrafficClassCounter.Start <= 7 but Got %d", *obj.obj.Start)) - } - - } - - if obj.obj.Step != nil { - - if *obj.obj.Step > 7 { - vObj.validationErrors = append( - vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowMplsTrafficClassCounter.Step <= 7 but Got %d", *obj.obj.Step)) - } - - } - - if obj.obj.Count != nil { - - if *obj.obj.Count > 7 { - vObj.validationErrors = append( - vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowMplsTrafficClassCounter.Count <= 7 but Got %d", *obj.obj.Count)) - } - - } - } -func (obj *patternFlowMplsTrafficClassCounter) setDefault() { - if obj.obj.Start == nil { - obj.SetStart(0) - } - if obj.obj.Step == nil { - obj.SetStep(1) - } - if obj.obj.Count == nil { - obj.SetCount(1) - } +func (obj *isisLspPrefixAttributes) setDefault() { } -// ***** PatternFlowMplsTrafficClassMetricTag ***** -type patternFlowMplsTrafficClassMetricTag struct { +// ***** BgpV4EviVxlanBroadcastDomain ***** +type bgpV4EviVxlanBroadcastDomain struct { validation - obj *otg.PatternFlowMplsTrafficClassMetricTag + obj *otg.BgpV4EviVxlanBroadcastDomain + cmacIpRangeHolder BgpV4EviVxlanBroadcastDomainBgpCMacIpRangeIter } -func NewPatternFlowMplsTrafficClassMetricTag() PatternFlowMplsTrafficClassMetricTag { - obj := patternFlowMplsTrafficClassMetricTag{obj: &otg.PatternFlowMplsTrafficClassMetricTag{}} +func NewBgpV4EviVxlanBroadcastDomain() BgpV4EviVxlanBroadcastDomain { + obj := bgpV4EviVxlanBroadcastDomain{obj: &otg.BgpV4EviVxlanBroadcastDomain{}} obj.setDefault() return &obj } -func (obj *patternFlowMplsTrafficClassMetricTag) Msg() *otg.PatternFlowMplsTrafficClassMetricTag { +func (obj *bgpV4EviVxlanBroadcastDomain) Msg() *otg.BgpV4EviVxlanBroadcastDomain { return obj.obj } -func (obj *patternFlowMplsTrafficClassMetricTag) SetMsg(msg *otg.PatternFlowMplsTrafficClassMetricTag) PatternFlowMplsTrafficClassMetricTag { - +func (obj *bgpV4EviVxlanBroadcastDomain) SetMsg(msg *otg.BgpV4EviVxlanBroadcastDomain) BgpV4EviVxlanBroadcastDomain { + obj.setNil() proto.Merge(obj.obj, msg) return obj } -func (obj *patternFlowMplsTrafficClassMetricTag) ToProto() (*otg.PatternFlowMplsTrafficClassMetricTag, error) { +func (obj *bgpV4EviVxlanBroadcastDomain) ToProto() (*otg.BgpV4EviVxlanBroadcastDomain, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -270420,7 +316978,7 @@ func (obj *patternFlowMplsTrafficClassMetricTag) ToProto() (*otg.PatternFlowMpls return obj.Msg(), nil } -func (obj *patternFlowMplsTrafficClassMetricTag) FromProto(msg *otg.PatternFlowMplsTrafficClassMetricTag) (PatternFlowMplsTrafficClassMetricTag, error) { +func (obj *bgpV4EviVxlanBroadcastDomain) FromProto(msg *otg.BgpV4EviVxlanBroadcastDomain) (BgpV4EviVxlanBroadcastDomain, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -270429,7 +316987,7 @@ func (obj *patternFlowMplsTrafficClassMetricTag) FromProto(msg *otg.PatternFlowM return newObj, nil } -func (obj *patternFlowMplsTrafficClassMetricTag) ToPbText() (string, error) { +func (obj *bgpV4EviVxlanBroadcastDomain) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -270441,12 +316999,12 @@ func (obj *patternFlowMplsTrafficClassMetricTag) ToPbText() (string, error) { return string(protoMarshal), nil } -func (obj *patternFlowMplsTrafficClassMetricTag) FromPbText(value string) error { +func (obj *bgpV4EviVxlanBroadcastDomain) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj } - + obj.setNil() vErr := obj.validateToAndFrom() if vErr != nil { return vErr @@ -270454,7 +317012,7 @@ func (obj *patternFlowMplsTrafficClassMetricTag) FromPbText(value string) error return retObj } -func (obj *patternFlowMplsTrafficClassMetricTag) ToYaml() (string, error) { +func (obj *bgpV4EviVxlanBroadcastDomain) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -270475,7 +317033,7 @@ func (obj *patternFlowMplsTrafficClassMetricTag) ToYaml() (string, error) { return string(data), nil } -func (obj *patternFlowMplsTrafficClassMetricTag) FromYaml(value string) error { +func (obj *bgpV4EviVxlanBroadcastDomain) FromYaml(value string) error { if value == "" { value = "{}" } @@ -270492,7 +317050,7 @@ func (obj *patternFlowMplsTrafficClassMetricTag) FromYaml(value string) error { return fmt.Errorf("unmarshal error %s", strings.Replace( uError.Error(), "\u00a0", " ", -1)[7:]) } - + obj.setNil() vErr := obj.validateToAndFrom() if vErr != nil { return vErr @@ -270500,7 +317058,7 @@ func (obj *patternFlowMplsTrafficClassMetricTag) FromYaml(value string) error { return nil } -func (obj *patternFlowMplsTrafficClassMetricTag) ToJson() (string, error) { +func (obj *bgpV4EviVxlanBroadcastDomain) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -270518,7 +317076,7 @@ func (obj *patternFlowMplsTrafficClassMetricTag) ToJson() (string, error) { return string(data), nil } -func (obj *patternFlowMplsTrafficClassMetricTag) FromJson(value string) error { +func (obj *bgpV4EviVxlanBroadcastDomain) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -270531,7 +317089,7 @@ func (obj *patternFlowMplsTrafficClassMetricTag) FromJson(value string) error { return fmt.Errorf("unmarshal error %s", strings.Replace( uError.Error(), "\u00a0", " ", -1)[7:]) } - + obj.setNil() err := obj.validateToAndFrom() if err != nil { return err @@ -270539,19 +317097,19 @@ func (obj *patternFlowMplsTrafficClassMetricTag) FromJson(value string) error { return nil } -func (obj *patternFlowMplsTrafficClassMetricTag) validateToAndFrom() error { +func (obj *bgpV4EviVxlanBroadcastDomain) validateToAndFrom() error { // emptyVars() obj.validateObj(&obj.validation, true) return obj.validationResult() } -func (obj *patternFlowMplsTrafficClassMetricTag) Validate() error { +func (obj *bgpV4EviVxlanBroadcastDomain) Validate() error { // emptyVars() obj.validateObj(&obj.validation, false) return obj.validationResult() } -func (obj *patternFlowMplsTrafficClassMetricTag) String() string { +func (obj *bgpV4EviVxlanBroadcastDomain) String() string { str, err := obj.ToYaml() if err != nil { return err.Error() @@ -270559,12 +317117,12 @@ func (obj *patternFlowMplsTrafficClassMetricTag) String() string { return str } -func (obj *patternFlowMplsTrafficClassMetricTag) Clone() (PatternFlowMplsTrafficClassMetricTag, error) { +func (obj *bgpV4EviVxlanBroadcastDomain) Clone() (BgpV4EviVxlanBroadcastDomain, error) { vErr := obj.Validate() if vErr != nil { return nil, vErr } - newObj := NewPatternFlowMplsTrafficClassMetricTag() + newObj := NewBgpV4EviVxlanBroadcastDomain() data, err := proto.Marshal(obj.Msg()) if err != nil { return nil, err @@ -270576,183 +317134,252 @@ func (obj *patternFlowMplsTrafficClassMetricTag) Clone() (PatternFlowMplsTraffic return newObj, nil } -// PatternFlowMplsTrafficClassMetricTag is metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. -type PatternFlowMplsTrafficClassMetricTag interface { +func (obj *bgpV4EviVxlanBroadcastDomain) setNil() { + obj.cmacIpRangeHolder = nil + obj.validationErrors = nil + obj.warnings = nil + obj.constraints = make(map[string]map[string]Constraints) +} + +// BgpV4EviVxlanBroadcastDomain is configuration for Broadcast Domains per EVI. +type BgpV4EviVxlanBroadcastDomain interface { Validation - // Msg marshals PatternFlowMplsTrafficClassMetricTag to protobuf object *otg.PatternFlowMplsTrafficClassMetricTag + // Msg marshals BgpV4EviVxlanBroadcastDomain to protobuf object *otg.BgpV4EviVxlanBroadcastDomain // and doesn't set defaults - Msg() *otg.PatternFlowMplsTrafficClassMetricTag - // SetMsg unmarshals PatternFlowMplsTrafficClassMetricTag from protobuf object *otg.PatternFlowMplsTrafficClassMetricTag + Msg() *otg.BgpV4EviVxlanBroadcastDomain + // SetMsg unmarshals BgpV4EviVxlanBroadcastDomain from protobuf object *otg.BgpV4EviVxlanBroadcastDomain // and doesn't set defaults - SetMsg(*otg.PatternFlowMplsTrafficClassMetricTag) PatternFlowMplsTrafficClassMetricTag - // ToProto marshals PatternFlowMplsTrafficClassMetricTag to protobuf object *otg.PatternFlowMplsTrafficClassMetricTag - ToProto() (*otg.PatternFlowMplsTrafficClassMetricTag, error) - // ToPbText marshals PatternFlowMplsTrafficClassMetricTag to protobuf text + SetMsg(*otg.BgpV4EviVxlanBroadcastDomain) BgpV4EviVxlanBroadcastDomain + // ToProto marshals BgpV4EviVxlanBroadcastDomain to protobuf object *otg.BgpV4EviVxlanBroadcastDomain + ToProto() (*otg.BgpV4EviVxlanBroadcastDomain, error) + // ToPbText marshals BgpV4EviVxlanBroadcastDomain to protobuf text ToPbText() (string, error) - // ToYaml marshals PatternFlowMplsTrafficClassMetricTag to YAML text + // ToYaml marshals BgpV4EviVxlanBroadcastDomain to YAML text ToYaml() (string, error) - // ToJson marshals PatternFlowMplsTrafficClassMetricTag to JSON text + // ToJson marshals BgpV4EviVxlanBroadcastDomain to JSON text ToJson() (string, error) - // FromProto unmarshals PatternFlowMplsTrafficClassMetricTag from protobuf object *otg.PatternFlowMplsTrafficClassMetricTag - FromProto(msg *otg.PatternFlowMplsTrafficClassMetricTag) (PatternFlowMplsTrafficClassMetricTag, error) - // FromPbText unmarshals PatternFlowMplsTrafficClassMetricTag from protobuf text + // FromProto unmarshals BgpV4EviVxlanBroadcastDomain from protobuf object *otg.BgpV4EviVxlanBroadcastDomain + FromProto(msg *otg.BgpV4EviVxlanBroadcastDomain) (BgpV4EviVxlanBroadcastDomain, error) + // FromPbText unmarshals BgpV4EviVxlanBroadcastDomain from protobuf text FromPbText(value string) error - // FromYaml unmarshals PatternFlowMplsTrafficClassMetricTag from YAML text + // FromYaml unmarshals BgpV4EviVxlanBroadcastDomain from YAML text FromYaml(value string) error - // FromJson unmarshals PatternFlowMplsTrafficClassMetricTag from JSON text + // FromJson unmarshals BgpV4EviVxlanBroadcastDomain from JSON text FromJson(value string) error - // Validate validates PatternFlowMplsTrafficClassMetricTag + // Validate validates BgpV4EviVxlanBroadcastDomain Validate() error // A stringer function String() string // Clones the object - Clone() (PatternFlowMplsTrafficClassMetricTag, error) + Clone() (BgpV4EviVxlanBroadcastDomain, error) validateToAndFrom() error validateObj(vObj *validation, set_default bool) setDefault() - // Name returns string, set in PatternFlowMplsTrafficClassMetricTag. - Name() string - // SetName assigns string provided by user to PatternFlowMplsTrafficClassMetricTag - SetName(value string) PatternFlowMplsTrafficClassMetricTag - // Offset returns uint32, set in PatternFlowMplsTrafficClassMetricTag. - Offset() uint32 - // SetOffset assigns uint32 provided by user to PatternFlowMplsTrafficClassMetricTag - SetOffset(value uint32) PatternFlowMplsTrafficClassMetricTag - // HasOffset checks if Offset has been set in PatternFlowMplsTrafficClassMetricTag - HasOffset() bool - // Length returns uint32, set in PatternFlowMplsTrafficClassMetricTag. - Length() uint32 - // SetLength assigns uint32 provided by user to PatternFlowMplsTrafficClassMetricTag - SetLength(value uint32) PatternFlowMplsTrafficClassMetricTag - // HasLength checks if Length has been set in PatternFlowMplsTrafficClassMetricTag - HasLength() bool + // CmacIpRange returns BgpV4EviVxlanBroadcastDomainBgpCMacIpRangeIterIter, set in BgpV4EviVxlanBroadcastDomain + CmacIpRange() BgpV4EviVxlanBroadcastDomainBgpCMacIpRangeIter + // EthernetTagId returns uint32, set in BgpV4EviVxlanBroadcastDomain. + EthernetTagId() uint32 + // SetEthernetTagId assigns uint32 provided by user to BgpV4EviVxlanBroadcastDomain + SetEthernetTagId(value uint32) BgpV4EviVxlanBroadcastDomain + // HasEthernetTagId checks if EthernetTagId has been set in BgpV4EviVxlanBroadcastDomain + HasEthernetTagId() bool + // VlanAwareService returns bool, set in BgpV4EviVxlanBroadcastDomain. + VlanAwareService() bool + // SetVlanAwareService assigns bool provided by user to BgpV4EviVxlanBroadcastDomain + SetVlanAwareService(value bool) BgpV4EviVxlanBroadcastDomain + // HasVlanAwareService checks if VlanAwareService has been set in BgpV4EviVxlanBroadcastDomain + HasVlanAwareService() bool + setNil() } -// Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field -// Name returns a string -func (obj *patternFlowMplsTrafficClassMetricTag) Name() string { +// This contains the list of Customer MAC/IP Ranges to be configured per Broadcast Domain. +// +// Advertises following route - +// Type 2 - MAC/IP Advertisement Route. +// CmacIpRange returns a []BgpCMacIpRange +func (obj *bgpV4EviVxlanBroadcastDomain) CmacIpRange() BgpV4EviVxlanBroadcastDomainBgpCMacIpRangeIter { + if len(obj.obj.CmacIpRange) == 0 { + obj.obj.CmacIpRange = []*otg.BgpCMacIpRange{} + } + if obj.cmacIpRangeHolder == nil { + obj.cmacIpRangeHolder = newBgpV4EviVxlanBroadcastDomainBgpCMacIpRangeIter(&obj.obj.CmacIpRange).setMsg(obj) + } + return obj.cmacIpRangeHolder +} - return *obj.obj.Name +type bgpV4EviVxlanBroadcastDomainBgpCMacIpRangeIter struct { + obj *bgpV4EviVxlanBroadcastDomain + bgpCMacIpRangeSlice []BgpCMacIpRange + fieldPtr *[]*otg.BgpCMacIpRange +} +func newBgpV4EviVxlanBroadcastDomainBgpCMacIpRangeIter(ptr *[]*otg.BgpCMacIpRange) BgpV4EviVxlanBroadcastDomainBgpCMacIpRangeIter { + return &bgpV4EviVxlanBroadcastDomainBgpCMacIpRangeIter{fieldPtr: ptr} } -// Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field -// SetName sets the string value in the PatternFlowMplsTrafficClassMetricTag object -func (obj *patternFlowMplsTrafficClassMetricTag) SetName(value string) PatternFlowMplsTrafficClassMetricTag { +type BgpV4EviVxlanBroadcastDomainBgpCMacIpRangeIter interface { + setMsg(*bgpV4EviVxlanBroadcastDomain) BgpV4EviVxlanBroadcastDomainBgpCMacIpRangeIter + Items() []BgpCMacIpRange + Add() BgpCMacIpRange + Append(items ...BgpCMacIpRange) BgpV4EviVxlanBroadcastDomainBgpCMacIpRangeIter + Set(index int, newObj BgpCMacIpRange) BgpV4EviVxlanBroadcastDomainBgpCMacIpRangeIter + Clear() BgpV4EviVxlanBroadcastDomainBgpCMacIpRangeIter + clearHolderSlice() BgpV4EviVxlanBroadcastDomainBgpCMacIpRangeIter + appendHolderSlice(item BgpCMacIpRange) BgpV4EviVxlanBroadcastDomainBgpCMacIpRangeIter +} - obj.obj.Name = &value +func (obj *bgpV4EviVxlanBroadcastDomainBgpCMacIpRangeIter) setMsg(msg *bgpV4EviVxlanBroadcastDomain) BgpV4EviVxlanBroadcastDomainBgpCMacIpRangeIter { + obj.clearHolderSlice() + for _, val := range *obj.fieldPtr { + obj.appendHolderSlice(&bgpCMacIpRange{obj: val}) + } + obj.obj = msg return obj } -// Offset in bits relative to start of corresponding header field -// Offset returns a uint32 -func (obj *patternFlowMplsTrafficClassMetricTag) Offset() uint32 { +func (obj *bgpV4EviVxlanBroadcastDomainBgpCMacIpRangeIter) Items() []BgpCMacIpRange { + return obj.bgpCMacIpRangeSlice +} - return *obj.obj.Offset +func (obj *bgpV4EviVxlanBroadcastDomainBgpCMacIpRangeIter) Add() BgpCMacIpRange { + newObj := &otg.BgpCMacIpRange{} + *obj.fieldPtr = append(*obj.fieldPtr, newObj) + newLibObj := &bgpCMacIpRange{obj: newObj} + newLibObj.setDefault() + obj.bgpCMacIpRangeSlice = append(obj.bgpCMacIpRangeSlice, newLibObj) + return newLibObj +} +func (obj *bgpV4EviVxlanBroadcastDomainBgpCMacIpRangeIter) Append(items ...BgpCMacIpRange) BgpV4EviVxlanBroadcastDomainBgpCMacIpRangeIter { + for _, item := range items { + newObj := item.Msg() + *obj.fieldPtr = append(*obj.fieldPtr, newObj) + obj.bgpCMacIpRangeSlice = append(obj.bgpCMacIpRangeSlice, item) + } + return obj } -// Offset in bits relative to start of corresponding header field -// Offset returns a uint32 -func (obj *patternFlowMplsTrafficClassMetricTag) HasOffset() bool { - return obj.obj.Offset != nil +func (obj *bgpV4EviVxlanBroadcastDomainBgpCMacIpRangeIter) Set(index int, newObj BgpCMacIpRange) BgpV4EviVxlanBroadcastDomainBgpCMacIpRangeIter { + (*obj.fieldPtr)[index] = newObj.Msg() + obj.bgpCMacIpRangeSlice[index] = newObj + return obj +} +func (obj *bgpV4EviVxlanBroadcastDomainBgpCMacIpRangeIter) Clear() BgpV4EviVxlanBroadcastDomainBgpCMacIpRangeIter { + if len(*obj.fieldPtr) > 0 { + *obj.fieldPtr = []*otg.BgpCMacIpRange{} + obj.bgpCMacIpRangeSlice = []BgpCMacIpRange{} + } + return obj +} +func (obj *bgpV4EviVxlanBroadcastDomainBgpCMacIpRangeIter) clearHolderSlice() BgpV4EviVxlanBroadcastDomainBgpCMacIpRangeIter { + if len(obj.bgpCMacIpRangeSlice) > 0 { + obj.bgpCMacIpRangeSlice = []BgpCMacIpRange{} + } + return obj +} +func (obj *bgpV4EviVxlanBroadcastDomainBgpCMacIpRangeIter) appendHolderSlice(item BgpCMacIpRange) BgpV4EviVxlanBroadcastDomainBgpCMacIpRangeIter { + obj.bgpCMacIpRangeSlice = append(obj.bgpCMacIpRangeSlice, item) + return obj } -// Offset in bits relative to start of corresponding header field -// SetOffset sets the uint32 value in the PatternFlowMplsTrafficClassMetricTag object -func (obj *patternFlowMplsTrafficClassMetricTag) SetOffset(value uint32) PatternFlowMplsTrafficClassMetricTag { +// The Ethernet Tag ID of the Broadcast Domain. +// EthernetTagId returns a uint32 +func (obj *bgpV4EviVxlanBroadcastDomain) EthernetTagId() uint32 { - obj.obj.Offset = &value + return *obj.obj.EthernetTagId + +} + +// The Ethernet Tag ID of the Broadcast Domain. +// EthernetTagId returns a uint32 +func (obj *bgpV4EviVxlanBroadcastDomain) HasEthernetTagId() bool { + return obj.obj.EthernetTagId != nil +} + +// The Ethernet Tag ID of the Broadcast Domain. +// SetEthernetTagId sets the uint32 value in the BgpV4EviVxlanBroadcastDomain object +func (obj *bgpV4EviVxlanBroadcastDomain) SetEthernetTagId(value uint32) BgpV4EviVxlanBroadcastDomain { + + obj.obj.EthernetTagId = &value return obj } -// Number of bits to track for metrics starting from configured offset of corresponding header field -// Length returns a uint32 -func (obj *patternFlowMplsTrafficClassMetricTag) Length() uint32 { +// VLAN-Aware service to be enabled or disabled. +// VlanAwareService returns a bool +func (obj *bgpV4EviVxlanBroadcastDomain) VlanAwareService() bool { - return *obj.obj.Length + return *obj.obj.VlanAwareService } -// Number of bits to track for metrics starting from configured offset of corresponding header field -// Length returns a uint32 -func (obj *patternFlowMplsTrafficClassMetricTag) HasLength() bool { - return obj.obj.Length != nil +// VLAN-Aware service to be enabled or disabled. +// VlanAwareService returns a bool +func (obj *bgpV4EviVxlanBroadcastDomain) HasVlanAwareService() bool { + return obj.obj.VlanAwareService != nil } -// Number of bits to track for metrics starting from configured offset of corresponding header field -// SetLength sets the uint32 value in the PatternFlowMplsTrafficClassMetricTag object -func (obj *patternFlowMplsTrafficClassMetricTag) SetLength(value uint32) PatternFlowMplsTrafficClassMetricTag { +// VLAN-Aware service to be enabled or disabled. +// SetVlanAwareService sets the bool value in the BgpV4EviVxlanBroadcastDomain object +func (obj *bgpV4EviVxlanBroadcastDomain) SetVlanAwareService(value bool) BgpV4EviVxlanBroadcastDomain { - obj.obj.Length = &value + obj.obj.VlanAwareService = &value return obj } -func (obj *patternFlowMplsTrafficClassMetricTag) validateObj(vObj *validation, set_default bool) { +func (obj *bgpV4EviVxlanBroadcastDomain) validateObj(vObj *validation, set_default bool) { if set_default { obj.setDefault() } - // Name is required - if obj.obj.Name == nil { - vObj.validationErrors = append(vObj.validationErrors, "Name is required field on interface PatternFlowMplsTrafficClassMetricTag") - } - - if obj.obj.Offset != nil { + if len(obj.obj.CmacIpRange) != 0 { - if *obj.obj.Offset > 2 { - vObj.validationErrors = append( - vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowMplsTrafficClassMetricTag.Offset <= 2 but Got %d", *obj.obj.Offset)) + if set_default { + obj.CmacIpRange().clearHolderSlice() + for _, item := range obj.obj.CmacIpRange { + obj.CmacIpRange().appendHolderSlice(&bgpCMacIpRange{obj: item}) + } } - - } - - if obj.obj.Length != nil { - - if *obj.obj.Length < 1 || *obj.obj.Length > 3 { - vObj.validationErrors = append( - vObj.validationErrors, - fmt.Sprintf("1 <= PatternFlowMplsTrafficClassMetricTag.Length <= 3 but Got %d", *obj.obj.Length)) + for _, item := range obj.CmacIpRange().Items() { + item.validateObj(vObj, set_default) } } } -func (obj *patternFlowMplsTrafficClassMetricTag) setDefault() { - if obj.obj.Offset == nil { - obj.SetOffset(0) +func (obj *bgpV4EviVxlanBroadcastDomain) setDefault() { + if obj.obj.EthernetTagId == nil { + obj.SetEthernetTagId(0) } - if obj.obj.Length == nil { - obj.SetLength(3) + if obj.obj.VlanAwareService == nil { + obj.SetVlanAwareService(false) } } -// ***** PatternFlowMplsBottomOfStackCounter ***** -type patternFlowMplsBottomOfStackCounter struct { +// ***** BgpRouteDistinguisher ***** +type bgpRouteDistinguisher struct { validation - obj *otg.PatternFlowMplsBottomOfStackCounter + obj *otg.BgpRouteDistinguisher } -func NewPatternFlowMplsBottomOfStackCounter() PatternFlowMplsBottomOfStackCounter { - obj := patternFlowMplsBottomOfStackCounter{obj: &otg.PatternFlowMplsBottomOfStackCounter{}} +func NewBgpRouteDistinguisher() BgpRouteDistinguisher { + obj := bgpRouteDistinguisher{obj: &otg.BgpRouteDistinguisher{}} obj.setDefault() return &obj } -func (obj *patternFlowMplsBottomOfStackCounter) Msg() *otg.PatternFlowMplsBottomOfStackCounter { +func (obj *bgpRouteDistinguisher) Msg() *otg.BgpRouteDistinguisher { return obj.obj } -func (obj *patternFlowMplsBottomOfStackCounter) SetMsg(msg *otg.PatternFlowMplsBottomOfStackCounter) PatternFlowMplsBottomOfStackCounter { +func (obj *bgpRouteDistinguisher) SetMsg(msg *otg.BgpRouteDistinguisher) BgpRouteDistinguisher { proto.Merge(obj.obj, msg) return obj } -func (obj *patternFlowMplsBottomOfStackCounter) ToProto() (*otg.PatternFlowMplsBottomOfStackCounter, error) { +func (obj *bgpRouteDistinguisher) ToProto() (*otg.BgpRouteDistinguisher, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -270760,7 +317387,7 @@ func (obj *patternFlowMplsBottomOfStackCounter) ToProto() (*otg.PatternFlowMplsB return obj.Msg(), nil } -func (obj *patternFlowMplsBottomOfStackCounter) FromProto(msg *otg.PatternFlowMplsBottomOfStackCounter) (PatternFlowMplsBottomOfStackCounter, error) { +func (obj *bgpRouteDistinguisher) FromProto(msg *otg.BgpRouteDistinguisher) (BgpRouteDistinguisher, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -270769,7 +317396,7 @@ func (obj *patternFlowMplsBottomOfStackCounter) FromProto(msg *otg.PatternFlowMp return newObj, nil } -func (obj *patternFlowMplsBottomOfStackCounter) ToPbText() (string, error) { +func (obj *bgpRouteDistinguisher) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -270781,7 +317408,7 @@ func (obj *patternFlowMplsBottomOfStackCounter) ToPbText() (string, error) { return string(protoMarshal), nil } -func (obj *patternFlowMplsBottomOfStackCounter) FromPbText(value string) error { +func (obj *bgpRouteDistinguisher) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj @@ -270794,7 +317421,7 @@ func (obj *patternFlowMplsBottomOfStackCounter) FromPbText(value string) error { return retObj } -func (obj *patternFlowMplsBottomOfStackCounter) ToYaml() (string, error) { +func (obj *bgpRouteDistinguisher) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -270815,7 +317442,7 @@ func (obj *patternFlowMplsBottomOfStackCounter) ToYaml() (string, error) { return string(data), nil } -func (obj *patternFlowMplsBottomOfStackCounter) FromYaml(value string) error { +func (obj *bgpRouteDistinguisher) FromYaml(value string) error { if value == "" { value = "{}" } @@ -270840,7 +317467,7 @@ func (obj *patternFlowMplsBottomOfStackCounter) FromYaml(value string) error { return nil } -func (obj *patternFlowMplsBottomOfStackCounter) ToJson() (string, error) { +func (obj *bgpRouteDistinguisher) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -270858,7 +317485,7 @@ func (obj *patternFlowMplsBottomOfStackCounter) ToJson() (string, error) { return string(data), nil } -func (obj *patternFlowMplsBottomOfStackCounter) FromJson(value string) error { +func (obj *bgpRouteDistinguisher) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -270879,19 +317506,19 @@ func (obj *patternFlowMplsBottomOfStackCounter) FromJson(value string) error { return nil } -func (obj *patternFlowMplsBottomOfStackCounter) validateToAndFrom() error { +func (obj *bgpRouteDistinguisher) validateToAndFrom() error { // emptyVars() obj.validateObj(&obj.validation, true) return obj.validationResult() } -func (obj *patternFlowMplsBottomOfStackCounter) Validate() error { +func (obj *bgpRouteDistinguisher) Validate() error { // emptyVars() obj.validateObj(&obj.validation, false) return obj.validationResult() } -func (obj *patternFlowMplsBottomOfStackCounter) String() string { +func (obj *bgpRouteDistinguisher) String() string { str, err := obj.ToYaml() if err != nil { return err.Error() @@ -270899,12 +317526,12 @@ func (obj *patternFlowMplsBottomOfStackCounter) String() string { return str } -func (obj *patternFlowMplsBottomOfStackCounter) Clone() (PatternFlowMplsBottomOfStackCounter, error) { +func (obj *bgpRouteDistinguisher) Clone() (BgpRouteDistinguisher, error) { vErr := obj.Validate() if vErr != nil { return nil, vErr } - newObj := NewPatternFlowMplsBottomOfStackCounter() + newObj := NewBgpRouteDistinguisher() data, err := proto.Marshal(obj.Msg()) if err != nil { return nil, err @@ -270916,199 +317543,184 @@ func (obj *patternFlowMplsBottomOfStackCounter) Clone() (PatternFlowMplsBottomOf return newObj, nil } -// PatternFlowMplsBottomOfStackCounter is integer counter pattern -type PatternFlowMplsBottomOfStackCounter interface { +// BgpRouteDistinguisher is bGP Route Distinguisher. +type BgpRouteDistinguisher interface { Validation - // Msg marshals PatternFlowMplsBottomOfStackCounter to protobuf object *otg.PatternFlowMplsBottomOfStackCounter + // Msg marshals BgpRouteDistinguisher to protobuf object *otg.BgpRouteDistinguisher // and doesn't set defaults - Msg() *otg.PatternFlowMplsBottomOfStackCounter - // SetMsg unmarshals PatternFlowMplsBottomOfStackCounter from protobuf object *otg.PatternFlowMplsBottomOfStackCounter + Msg() *otg.BgpRouteDistinguisher + // SetMsg unmarshals BgpRouteDistinguisher from protobuf object *otg.BgpRouteDistinguisher // and doesn't set defaults - SetMsg(*otg.PatternFlowMplsBottomOfStackCounter) PatternFlowMplsBottomOfStackCounter - // ToProto marshals PatternFlowMplsBottomOfStackCounter to protobuf object *otg.PatternFlowMplsBottomOfStackCounter - ToProto() (*otg.PatternFlowMplsBottomOfStackCounter, error) - // ToPbText marshals PatternFlowMplsBottomOfStackCounter to protobuf text + SetMsg(*otg.BgpRouteDistinguisher) BgpRouteDistinguisher + // ToProto marshals BgpRouteDistinguisher to protobuf object *otg.BgpRouteDistinguisher + ToProto() (*otg.BgpRouteDistinguisher, error) + // ToPbText marshals BgpRouteDistinguisher to protobuf text ToPbText() (string, error) - // ToYaml marshals PatternFlowMplsBottomOfStackCounter to YAML text + // ToYaml marshals BgpRouteDistinguisher to YAML text ToYaml() (string, error) - // ToJson marshals PatternFlowMplsBottomOfStackCounter to JSON text + // ToJson marshals BgpRouteDistinguisher to JSON text ToJson() (string, error) - // FromProto unmarshals PatternFlowMplsBottomOfStackCounter from protobuf object *otg.PatternFlowMplsBottomOfStackCounter - FromProto(msg *otg.PatternFlowMplsBottomOfStackCounter) (PatternFlowMplsBottomOfStackCounter, error) - // FromPbText unmarshals PatternFlowMplsBottomOfStackCounter from protobuf text + // FromProto unmarshals BgpRouteDistinguisher from protobuf object *otg.BgpRouteDistinguisher + FromProto(msg *otg.BgpRouteDistinguisher) (BgpRouteDistinguisher, error) + // FromPbText unmarshals BgpRouteDistinguisher from protobuf text FromPbText(value string) error - // FromYaml unmarshals PatternFlowMplsBottomOfStackCounter from YAML text + // FromYaml unmarshals BgpRouteDistinguisher from YAML text FromYaml(value string) error - // FromJson unmarshals PatternFlowMplsBottomOfStackCounter from JSON text + // FromJson unmarshals BgpRouteDistinguisher from JSON text FromJson(value string) error - // Validate validates PatternFlowMplsBottomOfStackCounter + // Validate validates BgpRouteDistinguisher Validate() error // A stringer function String() string // Clones the object - Clone() (PatternFlowMplsBottomOfStackCounter, error) + Clone() (BgpRouteDistinguisher, error) validateToAndFrom() error validateObj(vObj *validation, set_default bool) setDefault() - // Start returns uint32, set in PatternFlowMplsBottomOfStackCounter. - Start() uint32 - // SetStart assigns uint32 provided by user to PatternFlowMplsBottomOfStackCounter - SetStart(value uint32) PatternFlowMplsBottomOfStackCounter - // HasStart checks if Start has been set in PatternFlowMplsBottomOfStackCounter - HasStart() bool - // Step returns uint32, set in PatternFlowMplsBottomOfStackCounter. - Step() uint32 - // SetStep assigns uint32 provided by user to PatternFlowMplsBottomOfStackCounter - SetStep(value uint32) PatternFlowMplsBottomOfStackCounter - // HasStep checks if Step has been set in PatternFlowMplsBottomOfStackCounter - HasStep() bool - // Count returns uint32, set in PatternFlowMplsBottomOfStackCounter. - Count() uint32 - // SetCount assigns uint32 provided by user to PatternFlowMplsBottomOfStackCounter - SetCount(value uint32) PatternFlowMplsBottomOfStackCounter - // HasCount checks if Count has been set in PatternFlowMplsBottomOfStackCounter - HasCount() bool + // RdType returns BgpRouteDistinguisherRdTypeEnum, set in BgpRouteDistinguisher + RdType() BgpRouteDistinguisherRdTypeEnum + // SetRdType assigns BgpRouteDistinguisherRdTypeEnum provided by user to BgpRouteDistinguisher + SetRdType(value BgpRouteDistinguisherRdTypeEnum) BgpRouteDistinguisher + // HasRdType checks if RdType has been set in BgpRouteDistinguisher + HasRdType() bool + // AutoConfigRdIpAddr returns bool, set in BgpRouteDistinguisher. + AutoConfigRdIpAddr() bool + // SetAutoConfigRdIpAddr assigns bool provided by user to BgpRouteDistinguisher + SetAutoConfigRdIpAddr(value bool) BgpRouteDistinguisher + // HasAutoConfigRdIpAddr checks if AutoConfigRdIpAddr has been set in BgpRouteDistinguisher + HasAutoConfigRdIpAddr() bool + // RdValue returns string, set in BgpRouteDistinguisher. + RdValue() string + // SetRdValue assigns string provided by user to BgpRouteDistinguisher + SetRdValue(value string) BgpRouteDistinguisher + // HasRdValue checks if RdValue has been set in BgpRouteDistinguisher + HasRdValue() bool } -// description is TBD -// Start returns a uint32 -func (obj *patternFlowMplsBottomOfStackCounter) Start() uint32 { +type BgpRouteDistinguisherRdTypeEnum string - return *obj.obj.Start +// Enum of RdType on BgpRouteDistinguisher +var BgpRouteDistinguisherRdType = struct { + AS_2OCTET BgpRouteDistinguisherRdTypeEnum + IPV4_ADDRESS BgpRouteDistinguisherRdTypeEnum + AS_4OCTET BgpRouteDistinguisherRdTypeEnum +}{ + AS_2OCTET: BgpRouteDistinguisherRdTypeEnum("as_2octet"), + IPV4_ADDRESS: BgpRouteDistinguisherRdTypeEnum("ipv4_address"), + AS_4OCTET: BgpRouteDistinguisherRdTypeEnum("as_4octet"), +} +func (obj *bgpRouteDistinguisher) RdType() BgpRouteDistinguisherRdTypeEnum { + return BgpRouteDistinguisherRdTypeEnum(obj.obj.RdType.Enum().String()) } -// description is TBD -// Start returns a uint32 -func (obj *patternFlowMplsBottomOfStackCounter) HasStart() bool { - return obj.obj.Start != nil +// Route Distinguisher Type field of 2 Byte. +// - as_2octet: Two-Octet AS Specific Extended Community (RFC 4360). +// - ipv4_address: IPv4 Address Specific Extended Community (RFC 4360). +// - as_4octet: 4-Octet AS Specific Extended Community (RFC 5668). +// RdType returns a string +func (obj *bgpRouteDistinguisher) HasRdType() bool { + return obj.obj.RdType != nil } -// description is TBD -// SetStart sets the uint32 value in the PatternFlowMplsBottomOfStackCounter object -func (obj *patternFlowMplsBottomOfStackCounter) SetStart(value uint32) PatternFlowMplsBottomOfStackCounter { +func (obj *bgpRouteDistinguisher) SetRdType(value BgpRouteDistinguisherRdTypeEnum) BgpRouteDistinguisher { + intValue, ok := otg.BgpRouteDistinguisher_RdType_Enum_value[string(value)] + if !ok { + obj.validationErrors = append(obj.validationErrors, fmt.Sprintf( + "%s is not a valid choice on BgpRouteDistinguisherRdTypeEnum", string(value))) + return obj + } + enumValue := otg.BgpRouteDistinguisher_RdType_Enum(intValue) + obj.obj.RdType = &enumValue - obj.obj.Start = &value return obj } -// description is TBD -// Step returns a uint32 -func (obj *patternFlowMplsBottomOfStackCounter) Step() uint32 { +// Allow to automatically configure RD IP address from local ip. +// AutoConfigRdIpAddr returns a bool +func (obj *bgpRouteDistinguisher) AutoConfigRdIpAddr() bool { - return *obj.obj.Step + return *obj.obj.AutoConfigRdIpAddr } -// description is TBD -// Step returns a uint32 -func (obj *patternFlowMplsBottomOfStackCounter) HasStep() bool { - return obj.obj.Step != nil +// Allow to automatically configure RD IP address from local ip. +// AutoConfigRdIpAddr returns a bool +func (obj *bgpRouteDistinguisher) HasAutoConfigRdIpAddr() bool { + return obj.obj.AutoConfigRdIpAddr != nil } -// description is TBD -// SetStep sets the uint32 value in the PatternFlowMplsBottomOfStackCounter object -func (obj *patternFlowMplsBottomOfStackCounter) SetStep(value uint32) PatternFlowMplsBottomOfStackCounter { +// Allow to automatically configure RD IP address from local ip. +// SetAutoConfigRdIpAddr sets the bool value in the BgpRouteDistinguisher object +func (obj *bgpRouteDistinguisher) SetAutoConfigRdIpAddr(value bool) BgpRouteDistinguisher { - obj.obj.Step = &value + obj.obj.AutoConfigRdIpAddr = &value return obj } -// description is TBD -// Count returns a uint32 -func (obj *patternFlowMplsBottomOfStackCounter) Count() uint32 { +// Colon separated Extended Community value of 6 Bytes - "AS number: Value". Example - for the as_2octet or as_4octet "60005:100", for ipv4_address "1.1.1.1:100" +// RdValue returns a string +func (obj *bgpRouteDistinguisher) RdValue() string { - return *obj.obj.Count + return *obj.obj.RdValue } -// description is TBD -// Count returns a uint32 -func (obj *patternFlowMplsBottomOfStackCounter) HasCount() bool { - return obj.obj.Count != nil +// Colon separated Extended Community value of 6 Bytes - "AS number: Value". Example - for the as_2octet or as_4octet "60005:100", for ipv4_address "1.1.1.1:100" +// RdValue returns a string +func (obj *bgpRouteDistinguisher) HasRdValue() bool { + return obj.obj.RdValue != nil } -// description is TBD -// SetCount sets the uint32 value in the PatternFlowMplsBottomOfStackCounter object -func (obj *patternFlowMplsBottomOfStackCounter) SetCount(value uint32) PatternFlowMplsBottomOfStackCounter { +// Colon separated Extended Community value of 6 Bytes - "AS number: Value". Example - for the as_2octet or as_4octet "60005:100", for ipv4_address "1.1.1.1:100" +// SetRdValue sets the string value in the BgpRouteDistinguisher object +func (obj *bgpRouteDistinguisher) SetRdValue(value string) BgpRouteDistinguisher { - obj.obj.Count = &value + obj.obj.RdValue = &value return obj } -func (obj *patternFlowMplsBottomOfStackCounter) validateObj(vObj *validation, set_default bool) { +func (obj *bgpRouteDistinguisher) validateObj(vObj *validation, set_default bool) { if set_default { obj.setDefault() } - if obj.obj.Start != nil { - - if *obj.obj.Start > 1 { - vObj.validationErrors = append( - vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowMplsBottomOfStackCounter.Start <= 1 but Got %d", *obj.obj.Start)) - } - - } - - if obj.obj.Step != nil { - - if *obj.obj.Step > 1 { - vObj.validationErrors = append( - vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowMplsBottomOfStackCounter.Step <= 1 but Got %d", *obj.obj.Step)) - } - - } - - if obj.obj.Count != nil { - - if *obj.obj.Count > 1 { - vObj.validationErrors = append( - vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowMplsBottomOfStackCounter.Count <= 1 but Got %d", *obj.obj.Count)) - } - - } - } -func (obj *patternFlowMplsBottomOfStackCounter) setDefault() { - if obj.obj.Start == nil { - obj.SetStart(1) - } - if obj.obj.Step == nil { - obj.SetStep(1) +func (obj *bgpRouteDistinguisher) setDefault() { + if obj.obj.RdType == nil { + obj.SetRdType(BgpRouteDistinguisherRdType.AS_2OCTET) + } - if obj.obj.Count == nil { - obj.SetCount(1) + if obj.obj.AutoConfigRdIpAddr == nil { + obj.SetAutoConfigRdIpAddr(false) } } -// ***** PatternFlowMplsBottomOfStackMetricTag ***** -type patternFlowMplsBottomOfStackMetricTag struct { +// ***** BgpRouteTarget ***** +type bgpRouteTarget struct { validation - obj *otg.PatternFlowMplsBottomOfStackMetricTag + obj *otg.BgpRouteTarget } -func NewPatternFlowMplsBottomOfStackMetricTag() PatternFlowMplsBottomOfStackMetricTag { - obj := patternFlowMplsBottomOfStackMetricTag{obj: &otg.PatternFlowMplsBottomOfStackMetricTag{}} +func NewBgpRouteTarget() BgpRouteTarget { + obj := bgpRouteTarget{obj: &otg.BgpRouteTarget{}} obj.setDefault() return &obj } -func (obj *patternFlowMplsBottomOfStackMetricTag) Msg() *otg.PatternFlowMplsBottomOfStackMetricTag { +func (obj *bgpRouteTarget) Msg() *otg.BgpRouteTarget { return obj.obj } -func (obj *patternFlowMplsBottomOfStackMetricTag) SetMsg(msg *otg.PatternFlowMplsBottomOfStackMetricTag) PatternFlowMplsBottomOfStackMetricTag { +func (obj *bgpRouteTarget) SetMsg(msg *otg.BgpRouteTarget) BgpRouteTarget { proto.Merge(obj.obj, msg) return obj } -func (obj *patternFlowMplsBottomOfStackMetricTag) ToProto() (*otg.PatternFlowMplsBottomOfStackMetricTag, error) { +func (obj *bgpRouteTarget) ToProto() (*otg.BgpRouteTarget, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -271116,7 +317728,7 @@ func (obj *patternFlowMplsBottomOfStackMetricTag) ToProto() (*otg.PatternFlowMpl return obj.Msg(), nil } -func (obj *patternFlowMplsBottomOfStackMetricTag) FromProto(msg *otg.PatternFlowMplsBottomOfStackMetricTag) (PatternFlowMplsBottomOfStackMetricTag, error) { +func (obj *bgpRouteTarget) FromProto(msg *otg.BgpRouteTarget) (BgpRouteTarget, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -271125,7 +317737,7 @@ func (obj *patternFlowMplsBottomOfStackMetricTag) FromProto(msg *otg.PatternFlow return newObj, nil } -func (obj *patternFlowMplsBottomOfStackMetricTag) ToPbText() (string, error) { +func (obj *bgpRouteTarget) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -271137,7 +317749,7 @@ func (obj *patternFlowMplsBottomOfStackMetricTag) ToPbText() (string, error) { return string(protoMarshal), nil } -func (obj *patternFlowMplsBottomOfStackMetricTag) FromPbText(value string) error { +func (obj *bgpRouteTarget) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj @@ -271150,7 +317762,7 @@ func (obj *patternFlowMplsBottomOfStackMetricTag) FromPbText(value string) error return retObj } -func (obj *patternFlowMplsBottomOfStackMetricTag) ToYaml() (string, error) { +func (obj *bgpRouteTarget) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -271171,7 +317783,7 @@ func (obj *patternFlowMplsBottomOfStackMetricTag) ToYaml() (string, error) { return string(data), nil } -func (obj *patternFlowMplsBottomOfStackMetricTag) FromYaml(value string) error { +func (obj *bgpRouteTarget) FromYaml(value string) error { if value == "" { value = "{}" } @@ -271196,7 +317808,7 @@ func (obj *patternFlowMplsBottomOfStackMetricTag) FromYaml(value string) error { return nil } -func (obj *patternFlowMplsBottomOfStackMetricTag) ToJson() (string, error) { +func (obj *bgpRouteTarget) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -271214,7 +317826,7 @@ func (obj *patternFlowMplsBottomOfStackMetricTag) ToJson() (string, error) { return string(data), nil } -func (obj *patternFlowMplsBottomOfStackMetricTag) FromJson(value string) error { +func (obj *bgpRouteTarget) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -271235,19 +317847,19 @@ func (obj *patternFlowMplsBottomOfStackMetricTag) FromJson(value string) error { return nil } -func (obj *patternFlowMplsBottomOfStackMetricTag) validateToAndFrom() error { +func (obj *bgpRouteTarget) validateToAndFrom() error { // emptyVars() obj.validateObj(&obj.validation, true) return obj.validationResult() } -func (obj *patternFlowMplsBottomOfStackMetricTag) Validate() error { +func (obj *bgpRouteTarget) Validate() error { // emptyVars() obj.validateObj(&obj.validation, false) return obj.validationResult() } -func (obj *patternFlowMplsBottomOfStackMetricTag) String() string { +func (obj *bgpRouteTarget) String() string { str, err := obj.ToYaml() if err != nil { return err.Error() @@ -271255,12 +317867,12 @@ func (obj *patternFlowMplsBottomOfStackMetricTag) String() string { return str } -func (obj *patternFlowMplsBottomOfStackMetricTag) Clone() (PatternFlowMplsBottomOfStackMetricTag, error) { +func (obj *bgpRouteTarget) Clone() (BgpRouteTarget, error) { vErr := obj.Validate() if vErr != nil { return nil, vErr } - newObj := NewPatternFlowMplsBottomOfStackMetricTag() + newObj := NewBgpRouteTarget() data, err := proto.Marshal(obj.Msg()) if err != nil { return nil, err @@ -271272,183 +317884,149 @@ func (obj *patternFlowMplsBottomOfStackMetricTag) Clone() (PatternFlowMplsBottom return newObj, nil } -// PatternFlowMplsBottomOfStackMetricTag is metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. -type PatternFlowMplsBottomOfStackMetricTag interface { +// BgpRouteTarget is bGP Route Target. +type BgpRouteTarget interface { Validation - // Msg marshals PatternFlowMplsBottomOfStackMetricTag to protobuf object *otg.PatternFlowMplsBottomOfStackMetricTag + // Msg marshals BgpRouteTarget to protobuf object *otg.BgpRouteTarget // and doesn't set defaults - Msg() *otg.PatternFlowMplsBottomOfStackMetricTag - // SetMsg unmarshals PatternFlowMplsBottomOfStackMetricTag from protobuf object *otg.PatternFlowMplsBottomOfStackMetricTag + Msg() *otg.BgpRouteTarget + // SetMsg unmarshals BgpRouteTarget from protobuf object *otg.BgpRouteTarget // and doesn't set defaults - SetMsg(*otg.PatternFlowMplsBottomOfStackMetricTag) PatternFlowMplsBottomOfStackMetricTag - // ToProto marshals PatternFlowMplsBottomOfStackMetricTag to protobuf object *otg.PatternFlowMplsBottomOfStackMetricTag - ToProto() (*otg.PatternFlowMplsBottomOfStackMetricTag, error) - // ToPbText marshals PatternFlowMplsBottomOfStackMetricTag to protobuf text + SetMsg(*otg.BgpRouteTarget) BgpRouteTarget + // ToProto marshals BgpRouteTarget to protobuf object *otg.BgpRouteTarget + ToProto() (*otg.BgpRouteTarget, error) + // ToPbText marshals BgpRouteTarget to protobuf text ToPbText() (string, error) - // ToYaml marshals PatternFlowMplsBottomOfStackMetricTag to YAML text + // ToYaml marshals BgpRouteTarget to YAML text ToYaml() (string, error) - // ToJson marshals PatternFlowMplsBottomOfStackMetricTag to JSON text + // ToJson marshals BgpRouteTarget to JSON text ToJson() (string, error) - // FromProto unmarshals PatternFlowMplsBottomOfStackMetricTag from protobuf object *otg.PatternFlowMplsBottomOfStackMetricTag - FromProto(msg *otg.PatternFlowMplsBottomOfStackMetricTag) (PatternFlowMplsBottomOfStackMetricTag, error) - // FromPbText unmarshals PatternFlowMplsBottomOfStackMetricTag from protobuf text + // FromProto unmarshals BgpRouteTarget from protobuf object *otg.BgpRouteTarget + FromProto(msg *otg.BgpRouteTarget) (BgpRouteTarget, error) + // FromPbText unmarshals BgpRouteTarget from protobuf text FromPbText(value string) error - // FromYaml unmarshals PatternFlowMplsBottomOfStackMetricTag from YAML text + // FromYaml unmarshals BgpRouteTarget from YAML text FromYaml(value string) error - // FromJson unmarshals PatternFlowMplsBottomOfStackMetricTag from JSON text + // FromJson unmarshals BgpRouteTarget from JSON text FromJson(value string) error - // Validate validates PatternFlowMplsBottomOfStackMetricTag + // Validate validates BgpRouteTarget Validate() error // A stringer function String() string // Clones the object - Clone() (PatternFlowMplsBottomOfStackMetricTag, error) + Clone() (BgpRouteTarget, error) validateToAndFrom() error validateObj(vObj *validation, set_default bool) setDefault() - // Name returns string, set in PatternFlowMplsBottomOfStackMetricTag. - Name() string - // SetName assigns string provided by user to PatternFlowMplsBottomOfStackMetricTag - SetName(value string) PatternFlowMplsBottomOfStackMetricTag - // Offset returns uint32, set in PatternFlowMplsBottomOfStackMetricTag. - Offset() uint32 - // SetOffset assigns uint32 provided by user to PatternFlowMplsBottomOfStackMetricTag - SetOffset(value uint32) PatternFlowMplsBottomOfStackMetricTag - // HasOffset checks if Offset has been set in PatternFlowMplsBottomOfStackMetricTag - HasOffset() bool - // Length returns uint32, set in PatternFlowMplsBottomOfStackMetricTag. - Length() uint32 - // SetLength assigns uint32 provided by user to PatternFlowMplsBottomOfStackMetricTag - SetLength(value uint32) PatternFlowMplsBottomOfStackMetricTag - // HasLength checks if Length has been set in PatternFlowMplsBottomOfStackMetricTag - HasLength() bool -} - -// Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field -// Name returns a string -func (obj *patternFlowMplsBottomOfStackMetricTag) Name() string { - - return *obj.obj.Name - + // RtType returns BgpRouteTargetRtTypeEnum, set in BgpRouteTarget + RtType() BgpRouteTargetRtTypeEnum + // SetRtType assigns BgpRouteTargetRtTypeEnum provided by user to BgpRouteTarget + SetRtType(value BgpRouteTargetRtTypeEnum) BgpRouteTarget + // HasRtType checks if RtType has been set in BgpRouteTarget + HasRtType() bool + // RtValue returns string, set in BgpRouteTarget. + RtValue() string + // SetRtValue assigns string provided by user to BgpRouteTarget + SetRtValue(value string) BgpRouteTarget + // HasRtValue checks if RtValue has been set in BgpRouteTarget + HasRtValue() bool } -// Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field -// SetName sets the string value in the PatternFlowMplsBottomOfStackMetricTag object -func (obj *patternFlowMplsBottomOfStackMetricTag) SetName(value string) PatternFlowMplsBottomOfStackMetricTag { +type BgpRouteTargetRtTypeEnum string - obj.obj.Name = &value - return obj +// Enum of RtType on BgpRouteTarget +var BgpRouteTargetRtType = struct { + AS_2OCTET BgpRouteTargetRtTypeEnum + IPV4_ADDRESS BgpRouteTargetRtTypeEnum + AS_4OCTET BgpRouteTargetRtTypeEnum +}{ + AS_2OCTET: BgpRouteTargetRtTypeEnum("as_2octet"), + IPV4_ADDRESS: BgpRouteTargetRtTypeEnum("ipv4_address"), + AS_4OCTET: BgpRouteTargetRtTypeEnum("as_4octet"), } -// Offset in bits relative to start of corresponding header field -// Offset returns a uint32 -func (obj *patternFlowMplsBottomOfStackMetricTag) Offset() uint32 { - - return *obj.obj.Offset - +func (obj *bgpRouteTarget) RtType() BgpRouteTargetRtTypeEnum { + return BgpRouteTargetRtTypeEnum(obj.obj.RtType.Enum().String()) } -// Offset in bits relative to start of corresponding header field -// Offset returns a uint32 -func (obj *patternFlowMplsBottomOfStackMetricTag) HasOffset() bool { - return obj.obj.Offset != nil +// Extended Community Type field of 2 Byte. +// - as_2octet: Two-Octet AS Specific Extended Community (RFC 4360). +// - ipv4_address: IPv4 Address Specific Extended Community (RFC 4360). +// - as_4octet: 4-Octet AS Specific Extended Community (RFC 5668). +// RtType returns a string +func (obj *bgpRouteTarget) HasRtType() bool { + return obj.obj.RtType != nil } -// Offset in bits relative to start of corresponding header field -// SetOffset sets the uint32 value in the PatternFlowMplsBottomOfStackMetricTag object -func (obj *patternFlowMplsBottomOfStackMetricTag) SetOffset(value uint32) PatternFlowMplsBottomOfStackMetricTag { +func (obj *bgpRouteTarget) SetRtType(value BgpRouteTargetRtTypeEnum) BgpRouteTarget { + intValue, ok := otg.BgpRouteTarget_RtType_Enum_value[string(value)] + if !ok { + obj.validationErrors = append(obj.validationErrors, fmt.Sprintf( + "%s is not a valid choice on BgpRouteTargetRtTypeEnum", string(value))) + return obj + } + enumValue := otg.BgpRouteTarget_RtType_Enum(intValue) + obj.obj.RtType = &enumValue - obj.obj.Offset = &value return obj } -// Number of bits to track for metrics starting from configured offset of corresponding header field -// Length returns a uint32 -func (obj *patternFlowMplsBottomOfStackMetricTag) Length() uint32 { +// Colon separated Extended Community value of 6 Bytes - AS number: Assigned Number. Example - for the as_2octet or as_4octet "60005:100", for ipv4_address "1.1.1.1:100" +// RtValue returns a string +func (obj *bgpRouteTarget) RtValue() string { - return *obj.obj.Length + return *obj.obj.RtValue } -// Number of bits to track for metrics starting from configured offset of corresponding header field -// Length returns a uint32 -func (obj *patternFlowMplsBottomOfStackMetricTag) HasLength() bool { - return obj.obj.Length != nil +// Colon separated Extended Community value of 6 Bytes - AS number: Assigned Number. Example - for the as_2octet or as_4octet "60005:100", for ipv4_address "1.1.1.1:100" +// RtValue returns a string +func (obj *bgpRouteTarget) HasRtValue() bool { + return obj.obj.RtValue != nil } -// Number of bits to track for metrics starting from configured offset of corresponding header field -// SetLength sets the uint32 value in the PatternFlowMplsBottomOfStackMetricTag object -func (obj *patternFlowMplsBottomOfStackMetricTag) SetLength(value uint32) PatternFlowMplsBottomOfStackMetricTag { +// Colon separated Extended Community value of 6 Bytes - AS number: Assigned Number. Example - for the as_2octet or as_4octet "60005:100", for ipv4_address "1.1.1.1:100" +// SetRtValue sets the string value in the BgpRouteTarget object +func (obj *bgpRouteTarget) SetRtValue(value string) BgpRouteTarget { - obj.obj.Length = &value + obj.obj.RtValue = &value return obj } -func (obj *patternFlowMplsBottomOfStackMetricTag) validateObj(vObj *validation, set_default bool) { +func (obj *bgpRouteTarget) validateObj(vObj *validation, set_default bool) { if set_default { obj.setDefault() } - // Name is required - if obj.obj.Name == nil { - vObj.validationErrors = append(vObj.validationErrors, "Name is required field on interface PatternFlowMplsBottomOfStackMetricTag") - } - - if obj.obj.Offset != nil { - - if *obj.obj.Offset > 0 { - vObj.validationErrors = append( - vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowMplsBottomOfStackMetricTag.Offset <= 0 but Got %d", *obj.obj.Offset)) - } - - } - - if obj.obj.Length != nil { - - if *obj.obj.Length < 1 || *obj.obj.Length > 1 { - vObj.validationErrors = append( - vObj.validationErrors, - fmt.Sprintf("1 <= PatternFlowMplsBottomOfStackMetricTag.Length <= 1 but Got %d", *obj.obj.Length)) - } - - } - } -func (obj *patternFlowMplsBottomOfStackMetricTag) setDefault() { - if obj.obj.Offset == nil { - obj.SetOffset(0) - } - if obj.obj.Length == nil { - obj.SetLength(1) - } +func (obj *bgpRouteTarget) setDefault() { } -// ***** PatternFlowMplsTimeToLiveCounter ***** -type patternFlowMplsTimeToLiveCounter struct { +// ***** BgpExtendedCommunityTransitive2OctetAsTypeRouteTarget ***** +type bgpExtendedCommunityTransitive2OctetAsTypeRouteTarget struct { validation - obj *otg.PatternFlowMplsTimeToLiveCounter + obj *otg.BgpExtendedCommunityTransitive2OctetAsTypeRouteTarget } -func NewPatternFlowMplsTimeToLiveCounter() PatternFlowMplsTimeToLiveCounter { - obj := patternFlowMplsTimeToLiveCounter{obj: &otg.PatternFlowMplsTimeToLiveCounter{}} +func NewBgpExtendedCommunityTransitive2OctetAsTypeRouteTarget() BgpExtendedCommunityTransitive2OctetAsTypeRouteTarget { + obj := bgpExtendedCommunityTransitive2OctetAsTypeRouteTarget{obj: &otg.BgpExtendedCommunityTransitive2OctetAsTypeRouteTarget{}} obj.setDefault() return &obj } -func (obj *patternFlowMplsTimeToLiveCounter) Msg() *otg.PatternFlowMplsTimeToLiveCounter { +func (obj *bgpExtendedCommunityTransitive2OctetAsTypeRouteTarget) Msg() *otg.BgpExtendedCommunityTransitive2OctetAsTypeRouteTarget { return obj.obj } -func (obj *patternFlowMplsTimeToLiveCounter) SetMsg(msg *otg.PatternFlowMplsTimeToLiveCounter) PatternFlowMplsTimeToLiveCounter { +func (obj *bgpExtendedCommunityTransitive2OctetAsTypeRouteTarget) SetMsg(msg *otg.BgpExtendedCommunityTransitive2OctetAsTypeRouteTarget) BgpExtendedCommunityTransitive2OctetAsTypeRouteTarget { proto.Merge(obj.obj, msg) return obj } -func (obj *patternFlowMplsTimeToLiveCounter) ToProto() (*otg.PatternFlowMplsTimeToLiveCounter, error) { +func (obj *bgpExtendedCommunityTransitive2OctetAsTypeRouteTarget) ToProto() (*otg.BgpExtendedCommunityTransitive2OctetAsTypeRouteTarget, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -271456,7 +318034,7 @@ func (obj *patternFlowMplsTimeToLiveCounter) ToProto() (*otg.PatternFlowMplsTime return obj.Msg(), nil } -func (obj *patternFlowMplsTimeToLiveCounter) FromProto(msg *otg.PatternFlowMplsTimeToLiveCounter) (PatternFlowMplsTimeToLiveCounter, error) { +func (obj *bgpExtendedCommunityTransitive2OctetAsTypeRouteTarget) FromProto(msg *otg.BgpExtendedCommunityTransitive2OctetAsTypeRouteTarget) (BgpExtendedCommunityTransitive2OctetAsTypeRouteTarget, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -271465,7 +318043,7 @@ func (obj *patternFlowMplsTimeToLiveCounter) FromProto(msg *otg.PatternFlowMplsT return newObj, nil } -func (obj *patternFlowMplsTimeToLiveCounter) ToPbText() (string, error) { +func (obj *bgpExtendedCommunityTransitive2OctetAsTypeRouteTarget) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -271477,7 +318055,7 @@ func (obj *patternFlowMplsTimeToLiveCounter) ToPbText() (string, error) { return string(protoMarshal), nil } -func (obj *patternFlowMplsTimeToLiveCounter) FromPbText(value string) error { +func (obj *bgpExtendedCommunityTransitive2OctetAsTypeRouteTarget) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj @@ -271490,7 +318068,7 @@ func (obj *patternFlowMplsTimeToLiveCounter) FromPbText(value string) error { return retObj } -func (obj *patternFlowMplsTimeToLiveCounter) ToYaml() (string, error) { +func (obj *bgpExtendedCommunityTransitive2OctetAsTypeRouteTarget) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -271511,7 +318089,7 @@ func (obj *patternFlowMplsTimeToLiveCounter) ToYaml() (string, error) { return string(data), nil } -func (obj *patternFlowMplsTimeToLiveCounter) FromYaml(value string) error { +func (obj *bgpExtendedCommunityTransitive2OctetAsTypeRouteTarget) FromYaml(value string) error { if value == "" { value = "{}" } @@ -271536,7 +318114,7 @@ func (obj *patternFlowMplsTimeToLiveCounter) FromYaml(value string) error { return nil } -func (obj *patternFlowMplsTimeToLiveCounter) ToJson() (string, error) { +func (obj *bgpExtendedCommunityTransitive2OctetAsTypeRouteTarget) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -271554,7 +318132,7 @@ func (obj *patternFlowMplsTimeToLiveCounter) ToJson() (string, error) { return string(data), nil } -func (obj *patternFlowMplsTimeToLiveCounter) FromJson(value string) error { +func (obj *bgpExtendedCommunityTransitive2OctetAsTypeRouteTarget) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -271575,19 +318153,19 @@ func (obj *patternFlowMplsTimeToLiveCounter) FromJson(value string) error { return nil } -func (obj *patternFlowMplsTimeToLiveCounter) validateToAndFrom() error { +func (obj *bgpExtendedCommunityTransitive2OctetAsTypeRouteTarget) validateToAndFrom() error { // emptyVars() obj.validateObj(&obj.validation, true) return obj.validationResult() } -func (obj *patternFlowMplsTimeToLiveCounter) Validate() error { +func (obj *bgpExtendedCommunityTransitive2OctetAsTypeRouteTarget) Validate() error { // emptyVars() obj.validateObj(&obj.validation, false) return obj.validationResult() } -func (obj *patternFlowMplsTimeToLiveCounter) String() string { +func (obj *bgpExtendedCommunityTransitive2OctetAsTypeRouteTarget) String() string { str, err := obj.ToYaml() if err != nil { return err.Error() @@ -271595,12 +318173,12 @@ func (obj *patternFlowMplsTimeToLiveCounter) String() string { return str } -func (obj *patternFlowMplsTimeToLiveCounter) Clone() (PatternFlowMplsTimeToLiveCounter, error) { +func (obj *bgpExtendedCommunityTransitive2OctetAsTypeRouteTarget) Clone() (BgpExtendedCommunityTransitive2OctetAsTypeRouteTarget, error) { vErr := obj.Validate() if vErr != nil { return nil, vErr } - newObj := NewPatternFlowMplsTimeToLiveCounter() + newObj := NewBgpExtendedCommunityTransitive2OctetAsTypeRouteTarget() data, err := proto.Marshal(obj.Msg()) if err != nil { return nil, err @@ -271612,199 +318190,148 @@ func (obj *patternFlowMplsTimeToLiveCounter) Clone() (PatternFlowMplsTimeToLiveC return newObj, nil } -// PatternFlowMplsTimeToLiveCounter is integer counter pattern -type PatternFlowMplsTimeToLiveCounter interface { +// BgpExtendedCommunityTransitive2OctetAsTypeRouteTarget is the Route Target Community identifies one or more routers that may receive a set of routes (that carry this Community) carried by BGP. It is sent with sub-type as 0x02. +type BgpExtendedCommunityTransitive2OctetAsTypeRouteTarget interface { Validation - // Msg marshals PatternFlowMplsTimeToLiveCounter to protobuf object *otg.PatternFlowMplsTimeToLiveCounter + // Msg marshals BgpExtendedCommunityTransitive2OctetAsTypeRouteTarget to protobuf object *otg.BgpExtendedCommunityTransitive2OctetAsTypeRouteTarget // and doesn't set defaults - Msg() *otg.PatternFlowMplsTimeToLiveCounter - // SetMsg unmarshals PatternFlowMplsTimeToLiveCounter from protobuf object *otg.PatternFlowMplsTimeToLiveCounter + Msg() *otg.BgpExtendedCommunityTransitive2OctetAsTypeRouteTarget + // SetMsg unmarshals BgpExtendedCommunityTransitive2OctetAsTypeRouteTarget from protobuf object *otg.BgpExtendedCommunityTransitive2OctetAsTypeRouteTarget // and doesn't set defaults - SetMsg(*otg.PatternFlowMplsTimeToLiveCounter) PatternFlowMplsTimeToLiveCounter - // ToProto marshals PatternFlowMplsTimeToLiveCounter to protobuf object *otg.PatternFlowMplsTimeToLiveCounter - ToProto() (*otg.PatternFlowMplsTimeToLiveCounter, error) - // ToPbText marshals PatternFlowMplsTimeToLiveCounter to protobuf text + SetMsg(*otg.BgpExtendedCommunityTransitive2OctetAsTypeRouteTarget) BgpExtendedCommunityTransitive2OctetAsTypeRouteTarget + // ToProto marshals BgpExtendedCommunityTransitive2OctetAsTypeRouteTarget to protobuf object *otg.BgpExtendedCommunityTransitive2OctetAsTypeRouteTarget + ToProto() (*otg.BgpExtendedCommunityTransitive2OctetAsTypeRouteTarget, error) + // ToPbText marshals BgpExtendedCommunityTransitive2OctetAsTypeRouteTarget to protobuf text ToPbText() (string, error) - // ToYaml marshals PatternFlowMplsTimeToLiveCounter to YAML text + // ToYaml marshals BgpExtendedCommunityTransitive2OctetAsTypeRouteTarget to YAML text ToYaml() (string, error) - // ToJson marshals PatternFlowMplsTimeToLiveCounter to JSON text + // ToJson marshals BgpExtendedCommunityTransitive2OctetAsTypeRouteTarget to JSON text ToJson() (string, error) - // FromProto unmarshals PatternFlowMplsTimeToLiveCounter from protobuf object *otg.PatternFlowMplsTimeToLiveCounter - FromProto(msg *otg.PatternFlowMplsTimeToLiveCounter) (PatternFlowMplsTimeToLiveCounter, error) - // FromPbText unmarshals PatternFlowMplsTimeToLiveCounter from protobuf text + // FromProto unmarshals BgpExtendedCommunityTransitive2OctetAsTypeRouteTarget from protobuf object *otg.BgpExtendedCommunityTransitive2OctetAsTypeRouteTarget + FromProto(msg *otg.BgpExtendedCommunityTransitive2OctetAsTypeRouteTarget) (BgpExtendedCommunityTransitive2OctetAsTypeRouteTarget, error) + // FromPbText unmarshals BgpExtendedCommunityTransitive2OctetAsTypeRouteTarget from protobuf text FromPbText(value string) error - // FromYaml unmarshals PatternFlowMplsTimeToLiveCounter from YAML text + // FromYaml unmarshals BgpExtendedCommunityTransitive2OctetAsTypeRouteTarget from YAML text FromYaml(value string) error - // FromJson unmarshals PatternFlowMplsTimeToLiveCounter from JSON text + // FromJson unmarshals BgpExtendedCommunityTransitive2OctetAsTypeRouteTarget from JSON text FromJson(value string) error - // Validate validates PatternFlowMplsTimeToLiveCounter + // Validate validates BgpExtendedCommunityTransitive2OctetAsTypeRouteTarget Validate() error // A stringer function String() string // Clones the object - Clone() (PatternFlowMplsTimeToLiveCounter, error) + Clone() (BgpExtendedCommunityTransitive2OctetAsTypeRouteTarget, error) validateToAndFrom() error validateObj(vObj *validation, set_default bool) setDefault() - // Start returns uint32, set in PatternFlowMplsTimeToLiveCounter. - Start() uint32 - // SetStart assigns uint32 provided by user to PatternFlowMplsTimeToLiveCounter - SetStart(value uint32) PatternFlowMplsTimeToLiveCounter - // HasStart checks if Start has been set in PatternFlowMplsTimeToLiveCounter - HasStart() bool - // Step returns uint32, set in PatternFlowMplsTimeToLiveCounter. - Step() uint32 - // SetStep assigns uint32 provided by user to PatternFlowMplsTimeToLiveCounter - SetStep(value uint32) PatternFlowMplsTimeToLiveCounter - // HasStep checks if Step has been set in PatternFlowMplsTimeToLiveCounter - HasStep() bool - // Count returns uint32, set in PatternFlowMplsTimeToLiveCounter. - Count() uint32 - // SetCount assigns uint32 provided by user to PatternFlowMplsTimeToLiveCounter - SetCount(value uint32) PatternFlowMplsTimeToLiveCounter - // HasCount checks if Count has been set in PatternFlowMplsTimeToLiveCounter - HasCount() bool -} - -// description is TBD -// Start returns a uint32 -func (obj *patternFlowMplsTimeToLiveCounter) Start() uint32 { - - return *obj.obj.Start - -} - -// description is TBD -// Start returns a uint32 -func (obj *patternFlowMplsTimeToLiveCounter) HasStart() bool { - return obj.obj.Start != nil -} - -// description is TBD -// SetStart sets the uint32 value in the PatternFlowMplsTimeToLiveCounter object -func (obj *patternFlowMplsTimeToLiveCounter) SetStart(value uint32) PatternFlowMplsTimeToLiveCounter { - - obj.obj.Start = &value - return obj + // Global2ByteAs returns uint32, set in BgpExtendedCommunityTransitive2OctetAsTypeRouteTarget. + Global2ByteAs() uint32 + // SetGlobal2ByteAs assigns uint32 provided by user to BgpExtendedCommunityTransitive2OctetAsTypeRouteTarget + SetGlobal2ByteAs(value uint32) BgpExtendedCommunityTransitive2OctetAsTypeRouteTarget + // HasGlobal2ByteAs checks if Global2ByteAs has been set in BgpExtendedCommunityTransitive2OctetAsTypeRouteTarget + HasGlobal2ByteAs() bool + // Local4ByteAdmin returns uint32, set in BgpExtendedCommunityTransitive2OctetAsTypeRouteTarget. + Local4ByteAdmin() uint32 + // SetLocal4ByteAdmin assigns uint32 provided by user to BgpExtendedCommunityTransitive2OctetAsTypeRouteTarget + SetLocal4ByteAdmin(value uint32) BgpExtendedCommunityTransitive2OctetAsTypeRouteTarget + // HasLocal4ByteAdmin checks if Local4ByteAdmin has been set in BgpExtendedCommunityTransitive2OctetAsTypeRouteTarget + HasLocal4ByteAdmin() bool } -// description is TBD -// Step returns a uint32 -func (obj *patternFlowMplsTimeToLiveCounter) Step() uint32 { +// The two octet IANA assigned AS value assigned to the Autonomous System. +// Global2ByteAs returns a uint32 +func (obj *bgpExtendedCommunityTransitive2OctetAsTypeRouteTarget) Global2ByteAs() uint32 { - return *obj.obj.Step + return *obj.obj.Global_2ByteAs } -// description is TBD -// Step returns a uint32 -func (obj *patternFlowMplsTimeToLiveCounter) HasStep() bool { - return obj.obj.Step != nil +// The two octet IANA assigned AS value assigned to the Autonomous System. +// Global2ByteAs returns a uint32 +func (obj *bgpExtendedCommunityTransitive2OctetAsTypeRouteTarget) HasGlobal2ByteAs() bool { + return obj.obj.Global_2ByteAs != nil } -// description is TBD -// SetStep sets the uint32 value in the PatternFlowMplsTimeToLiveCounter object -func (obj *patternFlowMplsTimeToLiveCounter) SetStep(value uint32) PatternFlowMplsTimeToLiveCounter { +// The two octet IANA assigned AS value assigned to the Autonomous System. +// SetGlobal2ByteAs sets the uint32 value in the BgpExtendedCommunityTransitive2OctetAsTypeRouteTarget object +func (obj *bgpExtendedCommunityTransitive2OctetAsTypeRouteTarget) SetGlobal2ByteAs(value uint32) BgpExtendedCommunityTransitive2OctetAsTypeRouteTarget { - obj.obj.Step = &value + obj.obj.Global_2ByteAs = &value return obj } -// description is TBD -// Count returns a uint32 -func (obj *patternFlowMplsTimeToLiveCounter) Count() uint32 { +// The Local Administrator sub-field contains a number from a numbering space that is administered by the organization to which the Autonomous System number carried in the Global Administrator sub-field has been assigned by an appropriate authority. +// Local4ByteAdmin returns a uint32 +func (obj *bgpExtendedCommunityTransitive2OctetAsTypeRouteTarget) Local4ByteAdmin() uint32 { - return *obj.obj.Count + return *obj.obj.Local_4ByteAdmin } -// description is TBD -// Count returns a uint32 -func (obj *patternFlowMplsTimeToLiveCounter) HasCount() bool { - return obj.obj.Count != nil +// The Local Administrator sub-field contains a number from a numbering space that is administered by the organization to which the Autonomous System number carried in the Global Administrator sub-field has been assigned by an appropriate authority. +// Local4ByteAdmin returns a uint32 +func (obj *bgpExtendedCommunityTransitive2OctetAsTypeRouteTarget) HasLocal4ByteAdmin() bool { + return obj.obj.Local_4ByteAdmin != nil } -// description is TBD -// SetCount sets the uint32 value in the PatternFlowMplsTimeToLiveCounter object -func (obj *patternFlowMplsTimeToLiveCounter) SetCount(value uint32) PatternFlowMplsTimeToLiveCounter { +// The Local Administrator sub-field contains a number from a numbering space that is administered by the organization to which the Autonomous System number carried in the Global Administrator sub-field has been assigned by an appropriate authority. +// SetLocal4ByteAdmin sets the uint32 value in the BgpExtendedCommunityTransitive2OctetAsTypeRouteTarget object +func (obj *bgpExtendedCommunityTransitive2OctetAsTypeRouteTarget) SetLocal4ByteAdmin(value uint32) BgpExtendedCommunityTransitive2OctetAsTypeRouteTarget { - obj.obj.Count = &value + obj.obj.Local_4ByteAdmin = &value return obj } -func (obj *patternFlowMplsTimeToLiveCounter) validateObj(vObj *validation, set_default bool) { +func (obj *bgpExtendedCommunityTransitive2OctetAsTypeRouteTarget) validateObj(vObj *validation, set_default bool) { if set_default { obj.setDefault() } - if obj.obj.Start != nil { - - if *obj.obj.Start > 255 { - vObj.validationErrors = append( - vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowMplsTimeToLiveCounter.Start <= 255 but Got %d", *obj.obj.Start)) - } - - } - - if obj.obj.Step != nil { - - if *obj.obj.Step > 255 { - vObj.validationErrors = append( - vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowMplsTimeToLiveCounter.Step <= 255 but Got %d", *obj.obj.Step)) - } - - } - - if obj.obj.Count != nil { + if obj.obj.Global_2ByteAs != nil { - if *obj.obj.Count > 255 { + if *obj.obj.Global_2ByteAs > 65535 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowMplsTimeToLiveCounter.Count <= 255 but Got %d", *obj.obj.Count)) + fmt.Sprintf("0 <= BgpExtendedCommunityTransitive2OctetAsTypeRouteTarget.Global_2ByteAs <= 65535 but Got %d", *obj.obj.Global_2ByteAs)) } } } -func (obj *patternFlowMplsTimeToLiveCounter) setDefault() { - if obj.obj.Start == nil { - obj.SetStart(64) - } - if obj.obj.Step == nil { - obj.SetStep(1) +func (obj *bgpExtendedCommunityTransitive2OctetAsTypeRouteTarget) setDefault() { + if obj.obj.Global_2ByteAs == nil { + obj.SetGlobal2ByteAs(100) } - if obj.obj.Count == nil { - obj.SetCount(1) + if obj.obj.Local_4ByteAdmin == nil { + obj.SetLocal4ByteAdmin(1) } } -// ***** PatternFlowMplsTimeToLiveMetricTag ***** -type patternFlowMplsTimeToLiveMetricTag struct { +// ***** BgpExtendedCommunityTransitive2OctetAsTypeRouteOrigin ***** +type bgpExtendedCommunityTransitive2OctetAsTypeRouteOrigin struct { validation - obj *otg.PatternFlowMplsTimeToLiveMetricTag + obj *otg.BgpExtendedCommunityTransitive2OctetAsTypeRouteOrigin } -func NewPatternFlowMplsTimeToLiveMetricTag() PatternFlowMplsTimeToLiveMetricTag { - obj := patternFlowMplsTimeToLiveMetricTag{obj: &otg.PatternFlowMplsTimeToLiveMetricTag{}} +func NewBgpExtendedCommunityTransitive2OctetAsTypeRouteOrigin() BgpExtendedCommunityTransitive2OctetAsTypeRouteOrigin { + obj := bgpExtendedCommunityTransitive2OctetAsTypeRouteOrigin{obj: &otg.BgpExtendedCommunityTransitive2OctetAsTypeRouteOrigin{}} obj.setDefault() return &obj } -func (obj *patternFlowMplsTimeToLiveMetricTag) Msg() *otg.PatternFlowMplsTimeToLiveMetricTag { +func (obj *bgpExtendedCommunityTransitive2OctetAsTypeRouteOrigin) Msg() *otg.BgpExtendedCommunityTransitive2OctetAsTypeRouteOrigin { return obj.obj } -func (obj *patternFlowMplsTimeToLiveMetricTag) SetMsg(msg *otg.PatternFlowMplsTimeToLiveMetricTag) PatternFlowMplsTimeToLiveMetricTag { +func (obj *bgpExtendedCommunityTransitive2OctetAsTypeRouteOrigin) SetMsg(msg *otg.BgpExtendedCommunityTransitive2OctetAsTypeRouteOrigin) BgpExtendedCommunityTransitive2OctetAsTypeRouteOrigin { proto.Merge(obj.obj, msg) return obj } -func (obj *patternFlowMplsTimeToLiveMetricTag) ToProto() (*otg.PatternFlowMplsTimeToLiveMetricTag, error) { +func (obj *bgpExtendedCommunityTransitive2OctetAsTypeRouteOrigin) ToProto() (*otg.BgpExtendedCommunityTransitive2OctetAsTypeRouteOrigin, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -271812,7 +318339,7 @@ func (obj *patternFlowMplsTimeToLiveMetricTag) ToProto() (*otg.PatternFlowMplsTi return obj.Msg(), nil } -func (obj *patternFlowMplsTimeToLiveMetricTag) FromProto(msg *otg.PatternFlowMplsTimeToLiveMetricTag) (PatternFlowMplsTimeToLiveMetricTag, error) { +func (obj *bgpExtendedCommunityTransitive2OctetAsTypeRouteOrigin) FromProto(msg *otg.BgpExtendedCommunityTransitive2OctetAsTypeRouteOrigin) (BgpExtendedCommunityTransitive2OctetAsTypeRouteOrigin, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -271821,7 +318348,7 @@ func (obj *patternFlowMplsTimeToLiveMetricTag) FromProto(msg *otg.PatternFlowMpl return newObj, nil } -func (obj *patternFlowMplsTimeToLiveMetricTag) ToPbText() (string, error) { +func (obj *bgpExtendedCommunityTransitive2OctetAsTypeRouteOrigin) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -271833,7 +318360,7 @@ func (obj *patternFlowMplsTimeToLiveMetricTag) ToPbText() (string, error) { return string(protoMarshal), nil } -func (obj *patternFlowMplsTimeToLiveMetricTag) FromPbText(value string) error { +func (obj *bgpExtendedCommunityTransitive2OctetAsTypeRouteOrigin) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj @@ -271846,7 +318373,7 @@ func (obj *patternFlowMplsTimeToLiveMetricTag) FromPbText(value string) error { return retObj } -func (obj *patternFlowMplsTimeToLiveMetricTag) ToYaml() (string, error) { +func (obj *bgpExtendedCommunityTransitive2OctetAsTypeRouteOrigin) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -271867,7 +318394,7 @@ func (obj *patternFlowMplsTimeToLiveMetricTag) ToYaml() (string, error) { return string(data), nil } -func (obj *patternFlowMplsTimeToLiveMetricTag) FromYaml(value string) error { +func (obj *bgpExtendedCommunityTransitive2OctetAsTypeRouteOrigin) FromYaml(value string) error { if value == "" { value = "{}" } @@ -271892,7 +318419,7 @@ func (obj *patternFlowMplsTimeToLiveMetricTag) FromYaml(value string) error { return nil } -func (obj *patternFlowMplsTimeToLiveMetricTag) ToJson() (string, error) { +func (obj *bgpExtendedCommunityTransitive2OctetAsTypeRouteOrigin) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -271910,7 +318437,7 @@ func (obj *patternFlowMplsTimeToLiveMetricTag) ToJson() (string, error) { return string(data), nil } -func (obj *patternFlowMplsTimeToLiveMetricTag) FromJson(value string) error { +func (obj *bgpExtendedCommunityTransitive2OctetAsTypeRouteOrigin) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -271931,19 +318458,19 @@ func (obj *patternFlowMplsTimeToLiveMetricTag) FromJson(value string) error { return nil } -func (obj *patternFlowMplsTimeToLiveMetricTag) validateToAndFrom() error { +func (obj *bgpExtendedCommunityTransitive2OctetAsTypeRouteOrigin) validateToAndFrom() error { // emptyVars() obj.validateObj(&obj.validation, true) return obj.validationResult() } -func (obj *patternFlowMplsTimeToLiveMetricTag) Validate() error { +func (obj *bgpExtendedCommunityTransitive2OctetAsTypeRouteOrigin) Validate() error { // emptyVars() obj.validateObj(&obj.validation, false) return obj.validationResult() } -func (obj *patternFlowMplsTimeToLiveMetricTag) String() string { +func (obj *bgpExtendedCommunityTransitive2OctetAsTypeRouteOrigin) String() string { str, err := obj.ToYaml() if err != nil { return err.Error() @@ -271951,12 +318478,12 @@ func (obj *patternFlowMplsTimeToLiveMetricTag) String() string { return str } -func (obj *patternFlowMplsTimeToLiveMetricTag) Clone() (PatternFlowMplsTimeToLiveMetricTag, error) { +func (obj *bgpExtendedCommunityTransitive2OctetAsTypeRouteOrigin) Clone() (BgpExtendedCommunityTransitive2OctetAsTypeRouteOrigin, error) { vErr := obj.Validate() if vErr != nil { return nil, vErr } - newObj := NewPatternFlowMplsTimeToLiveMetricTag() + newObj := NewBgpExtendedCommunityTransitive2OctetAsTypeRouteOrigin() data, err := proto.Marshal(obj.Msg()) if err != nil { return nil, err @@ -271968,184 +318495,148 @@ func (obj *patternFlowMplsTimeToLiveMetricTag) Clone() (PatternFlowMplsTimeToLiv return newObj, nil } -// PatternFlowMplsTimeToLiveMetricTag is metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. -type PatternFlowMplsTimeToLiveMetricTag interface { +// BgpExtendedCommunityTransitive2OctetAsTypeRouteOrigin is the Route Origin Community identifies one or more routers that inject a set of routes (that carry this Community) into BGP. It is sent with sub-type as 0x03 . +type BgpExtendedCommunityTransitive2OctetAsTypeRouteOrigin interface { Validation - // Msg marshals PatternFlowMplsTimeToLiveMetricTag to protobuf object *otg.PatternFlowMplsTimeToLiveMetricTag + // Msg marshals BgpExtendedCommunityTransitive2OctetAsTypeRouteOrigin to protobuf object *otg.BgpExtendedCommunityTransitive2OctetAsTypeRouteOrigin // and doesn't set defaults - Msg() *otg.PatternFlowMplsTimeToLiveMetricTag - // SetMsg unmarshals PatternFlowMplsTimeToLiveMetricTag from protobuf object *otg.PatternFlowMplsTimeToLiveMetricTag + Msg() *otg.BgpExtendedCommunityTransitive2OctetAsTypeRouteOrigin + // SetMsg unmarshals BgpExtendedCommunityTransitive2OctetAsTypeRouteOrigin from protobuf object *otg.BgpExtendedCommunityTransitive2OctetAsTypeRouteOrigin // and doesn't set defaults - SetMsg(*otg.PatternFlowMplsTimeToLiveMetricTag) PatternFlowMplsTimeToLiveMetricTag - // ToProto marshals PatternFlowMplsTimeToLiveMetricTag to protobuf object *otg.PatternFlowMplsTimeToLiveMetricTag - ToProto() (*otg.PatternFlowMplsTimeToLiveMetricTag, error) - // ToPbText marshals PatternFlowMplsTimeToLiveMetricTag to protobuf text + SetMsg(*otg.BgpExtendedCommunityTransitive2OctetAsTypeRouteOrigin) BgpExtendedCommunityTransitive2OctetAsTypeRouteOrigin + // ToProto marshals BgpExtendedCommunityTransitive2OctetAsTypeRouteOrigin to protobuf object *otg.BgpExtendedCommunityTransitive2OctetAsTypeRouteOrigin + ToProto() (*otg.BgpExtendedCommunityTransitive2OctetAsTypeRouteOrigin, error) + // ToPbText marshals BgpExtendedCommunityTransitive2OctetAsTypeRouteOrigin to protobuf text ToPbText() (string, error) - // ToYaml marshals PatternFlowMplsTimeToLiveMetricTag to YAML text + // ToYaml marshals BgpExtendedCommunityTransitive2OctetAsTypeRouteOrigin to YAML text ToYaml() (string, error) - // ToJson marshals PatternFlowMplsTimeToLiveMetricTag to JSON text + // ToJson marshals BgpExtendedCommunityTransitive2OctetAsTypeRouteOrigin to JSON text ToJson() (string, error) - // FromProto unmarshals PatternFlowMplsTimeToLiveMetricTag from protobuf object *otg.PatternFlowMplsTimeToLiveMetricTag - FromProto(msg *otg.PatternFlowMplsTimeToLiveMetricTag) (PatternFlowMplsTimeToLiveMetricTag, error) - // FromPbText unmarshals PatternFlowMplsTimeToLiveMetricTag from protobuf text + // FromProto unmarshals BgpExtendedCommunityTransitive2OctetAsTypeRouteOrigin from protobuf object *otg.BgpExtendedCommunityTransitive2OctetAsTypeRouteOrigin + FromProto(msg *otg.BgpExtendedCommunityTransitive2OctetAsTypeRouteOrigin) (BgpExtendedCommunityTransitive2OctetAsTypeRouteOrigin, error) + // FromPbText unmarshals BgpExtendedCommunityTransitive2OctetAsTypeRouteOrigin from protobuf text FromPbText(value string) error - // FromYaml unmarshals PatternFlowMplsTimeToLiveMetricTag from YAML text + // FromYaml unmarshals BgpExtendedCommunityTransitive2OctetAsTypeRouteOrigin from YAML text FromYaml(value string) error - // FromJson unmarshals PatternFlowMplsTimeToLiveMetricTag from JSON text + // FromJson unmarshals BgpExtendedCommunityTransitive2OctetAsTypeRouteOrigin from JSON text FromJson(value string) error - // Validate validates PatternFlowMplsTimeToLiveMetricTag + // Validate validates BgpExtendedCommunityTransitive2OctetAsTypeRouteOrigin Validate() error // A stringer function String() string // Clones the object - Clone() (PatternFlowMplsTimeToLiveMetricTag, error) + Clone() (BgpExtendedCommunityTransitive2OctetAsTypeRouteOrigin, error) validateToAndFrom() error validateObj(vObj *validation, set_default bool) setDefault() - // Name returns string, set in PatternFlowMplsTimeToLiveMetricTag. - Name() string - // SetName assigns string provided by user to PatternFlowMplsTimeToLiveMetricTag - SetName(value string) PatternFlowMplsTimeToLiveMetricTag - // Offset returns uint32, set in PatternFlowMplsTimeToLiveMetricTag. - Offset() uint32 - // SetOffset assigns uint32 provided by user to PatternFlowMplsTimeToLiveMetricTag - SetOffset(value uint32) PatternFlowMplsTimeToLiveMetricTag - // HasOffset checks if Offset has been set in PatternFlowMplsTimeToLiveMetricTag - HasOffset() bool - // Length returns uint32, set in PatternFlowMplsTimeToLiveMetricTag. - Length() uint32 - // SetLength assigns uint32 provided by user to PatternFlowMplsTimeToLiveMetricTag - SetLength(value uint32) PatternFlowMplsTimeToLiveMetricTag - // HasLength checks if Length has been set in PatternFlowMplsTimeToLiveMetricTag - HasLength() bool -} - -// Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field -// Name returns a string -func (obj *patternFlowMplsTimeToLiveMetricTag) Name() string { - - return *obj.obj.Name - -} - -// Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field -// SetName sets the string value in the PatternFlowMplsTimeToLiveMetricTag object -func (obj *patternFlowMplsTimeToLiveMetricTag) SetName(value string) PatternFlowMplsTimeToLiveMetricTag { - - obj.obj.Name = &value - return obj + // Global2ByteAs returns uint32, set in BgpExtendedCommunityTransitive2OctetAsTypeRouteOrigin. + Global2ByteAs() uint32 + // SetGlobal2ByteAs assigns uint32 provided by user to BgpExtendedCommunityTransitive2OctetAsTypeRouteOrigin + SetGlobal2ByteAs(value uint32) BgpExtendedCommunityTransitive2OctetAsTypeRouteOrigin + // HasGlobal2ByteAs checks if Global2ByteAs has been set in BgpExtendedCommunityTransitive2OctetAsTypeRouteOrigin + HasGlobal2ByteAs() bool + // Local4ByteAdmin returns uint32, set in BgpExtendedCommunityTransitive2OctetAsTypeRouteOrigin. + Local4ByteAdmin() uint32 + // SetLocal4ByteAdmin assigns uint32 provided by user to BgpExtendedCommunityTransitive2OctetAsTypeRouteOrigin + SetLocal4ByteAdmin(value uint32) BgpExtendedCommunityTransitive2OctetAsTypeRouteOrigin + // HasLocal4ByteAdmin checks if Local4ByteAdmin has been set in BgpExtendedCommunityTransitive2OctetAsTypeRouteOrigin + HasLocal4ByteAdmin() bool } -// Offset in bits relative to start of corresponding header field -// Offset returns a uint32 -func (obj *patternFlowMplsTimeToLiveMetricTag) Offset() uint32 { +// The two octet IANA assigned AS value assigned to the Autonomous System. +// Global2ByteAs returns a uint32 +func (obj *bgpExtendedCommunityTransitive2OctetAsTypeRouteOrigin) Global2ByteAs() uint32 { - return *obj.obj.Offset + return *obj.obj.Global_2ByteAs } -// Offset in bits relative to start of corresponding header field -// Offset returns a uint32 -func (obj *patternFlowMplsTimeToLiveMetricTag) HasOffset() bool { - return obj.obj.Offset != nil +// The two octet IANA assigned AS value assigned to the Autonomous System. +// Global2ByteAs returns a uint32 +func (obj *bgpExtendedCommunityTransitive2OctetAsTypeRouteOrigin) HasGlobal2ByteAs() bool { + return obj.obj.Global_2ByteAs != nil } -// Offset in bits relative to start of corresponding header field -// SetOffset sets the uint32 value in the PatternFlowMplsTimeToLiveMetricTag object -func (obj *patternFlowMplsTimeToLiveMetricTag) SetOffset(value uint32) PatternFlowMplsTimeToLiveMetricTag { +// The two octet IANA assigned AS value assigned to the Autonomous System. +// SetGlobal2ByteAs sets the uint32 value in the BgpExtendedCommunityTransitive2OctetAsTypeRouteOrigin object +func (obj *bgpExtendedCommunityTransitive2OctetAsTypeRouteOrigin) SetGlobal2ByteAs(value uint32) BgpExtendedCommunityTransitive2OctetAsTypeRouteOrigin { - obj.obj.Offset = &value + obj.obj.Global_2ByteAs = &value return obj } -// Number of bits to track for metrics starting from configured offset of corresponding header field -// Length returns a uint32 -func (obj *patternFlowMplsTimeToLiveMetricTag) Length() uint32 { +// The Local Administrator sub-field contains a number from a numbering space that is administered by the organization to which the Autonomous System number carried in the Global Administrator sub-field has been assigned by an appropriate authority. +// Local4ByteAdmin returns a uint32 +func (obj *bgpExtendedCommunityTransitive2OctetAsTypeRouteOrigin) Local4ByteAdmin() uint32 { - return *obj.obj.Length + return *obj.obj.Local_4ByteAdmin } -// Number of bits to track for metrics starting from configured offset of corresponding header field -// Length returns a uint32 -func (obj *patternFlowMplsTimeToLiveMetricTag) HasLength() bool { - return obj.obj.Length != nil +// The Local Administrator sub-field contains a number from a numbering space that is administered by the organization to which the Autonomous System number carried in the Global Administrator sub-field has been assigned by an appropriate authority. +// Local4ByteAdmin returns a uint32 +func (obj *bgpExtendedCommunityTransitive2OctetAsTypeRouteOrigin) HasLocal4ByteAdmin() bool { + return obj.obj.Local_4ByteAdmin != nil } -// Number of bits to track for metrics starting from configured offset of corresponding header field -// SetLength sets the uint32 value in the PatternFlowMplsTimeToLiveMetricTag object -func (obj *patternFlowMplsTimeToLiveMetricTag) SetLength(value uint32) PatternFlowMplsTimeToLiveMetricTag { +// The Local Administrator sub-field contains a number from a numbering space that is administered by the organization to which the Autonomous System number carried in the Global Administrator sub-field has been assigned by an appropriate authority. +// SetLocal4ByteAdmin sets the uint32 value in the BgpExtendedCommunityTransitive2OctetAsTypeRouteOrigin object +func (obj *bgpExtendedCommunityTransitive2OctetAsTypeRouteOrigin) SetLocal4ByteAdmin(value uint32) BgpExtendedCommunityTransitive2OctetAsTypeRouteOrigin { - obj.obj.Length = &value + obj.obj.Local_4ByteAdmin = &value return obj } -func (obj *patternFlowMplsTimeToLiveMetricTag) validateObj(vObj *validation, set_default bool) { +func (obj *bgpExtendedCommunityTransitive2OctetAsTypeRouteOrigin) validateObj(vObj *validation, set_default bool) { if set_default { obj.setDefault() } - // Name is required - if obj.obj.Name == nil { - vObj.validationErrors = append(vObj.validationErrors, "Name is required field on interface PatternFlowMplsTimeToLiveMetricTag") - } - - if obj.obj.Offset != nil { - - if *obj.obj.Offset > 7 { - vObj.validationErrors = append( - vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowMplsTimeToLiveMetricTag.Offset <= 7 but Got %d", *obj.obj.Offset)) - } - - } - - if obj.obj.Length != nil { + if obj.obj.Global_2ByteAs != nil { - if *obj.obj.Length < 1 || *obj.obj.Length > 8 { + if *obj.obj.Global_2ByteAs > 65535 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("1 <= PatternFlowMplsTimeToLiveMetricTag.Length <= 8 but Got %d", *obj.obj.Length)) + fmt.Sprintf("0 <= BgpExtendedCommunityTransitive2OctetAsTypeRouteOrigin.Global_2ByteAs <= 65535 but Got %d", *obj.obj.Global_2ByteAs)) } } } -func (obj *patternFlowMplsTimeToLiveMetricTag) setDefault() { - if obj.obj.Offset == nil { - obj.SetOffset(0) +func (obj *bgpExtendedCommunityTransitive2OctetAsTypeRouteOrigin) setDefault() { + if obj.obj.Global_2ByteAs == nil { + obj.SetGlobal2ByteAs(100) } - if obj.obj.Length == nil { - obj.SetLength(8) + if obj.obj.Local_4ByteAdmin == nil { + obj.SetLocal4ByteAdmin(1) } } -// ***** ActionResponseProtocolIpv4Ping ***** -type actionResponseProtocolIpv4Ping struct { +// ***** BgpExtendedCommunityTransitiveIpv4AddressTypeRouteTarget ***** +type bgpExtendedCommunityTransitiveIpv4AddressTypeRouteTarget struct { validation - obj *otg.ActionResponseProtocolIpv4Ping - responsesHolder ActionResponseProtocolIpv4PingActionResponseProtocolIpv4PingResponseIter + obj *otg.BgpExtendedCommunityTransitiveIpv4AddressTypeRouteTarget } -func NewActionResponseProtocolIpv4Ping() ActionResponseProtocolIpv4Ping { - obj := actionResponseProtocolIpv4Ping{obj: &otg.ActionResponseProtocolIpv4Ping{}} +func NewBgpExtendedCommunityTransitiveIpv4AddressTypeRouteTarget() BgpExtendedCommunityTransitiveIpv4AddressTypeRouteTarget { + obj := bgpExtendedCommunityTransitiveIpv4AddressTypeRouteTarget{obj: &otg.BgpExtendedCommunityTransitiveIpv4AddressTypeRouteTarget{}} obj.setDefault() return &obj } -func (obj *actionResponseProtocolIpv4Ping) Msg() *otg.ActionResponseProtocolIpv4Ping { +func (obj *bgpExtendedCommunityTransitiveIpv4AddressTypeRouteTarget) Msg() *otg.BgpExtendedCommunityTransitiveIpv4AddressTypeRouteTarget { return obj.obj } -func (obj *actionResponseProtocolIpv4Ping) SetMsg(msg *otg.ActionResponseProtocolIpv4Ping) ActionResponseProtocolIpv4Ping { - obj.setNil() +func (obj *bgpExtendedCommunityTransitiveIpv4AddressTypeRouteTarget) SetMsg(msg *otg.BgpExtendedCommunityTransitiveIpv4AddressTypeRouteTarget) BgpExtendedCommunityTransitiveIpv4AddressTypeRouteTarget { + proto.Merge(obj.obj, msg) return obj } -func (obj *actionResponseProtocolIpv4Ping) ToProto() (*otg.ActionResponseProtocolIpv4Ping, error) { +func (obj *bgpExtendedCommunityTransitiveIpv4AddressTypeRouteTarget) ToProto() (*otg.BgpExtendedCommunityTransitiveIpv4AddressTypeRouteTarget, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -272153,7 +318644,7 @@ func (obj *actionResponseProtocolIpv4Ping) ToProto() (*otg.ActionResponseProtoco return obj.Msg(), nil } -func (obj *actionResponseProtocolIpv4Ping) FromProto(msg *otg.ActionResponseProtocolIpv4Ping) (ActionResponseProtocolIpv4Ping, error) { +func (obj *bgpExtendedCommunityTransitiveIpv4AddressTypeRouteTarget) FromProto(msg *otg.BgpExtendedCommunityTransitiveIpv4AddressTypeRouteTarget) (BgpExtendedCommunityTransitiveIpv4AddressTypeRouteTarget, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -272162,7 +318653,7 @@ func (obj *actionResponseProtocolIpv4Ping) FromProto(msg *otg.ActionResponseProt return newObj, nil } -func (obj *actionResponseProtocolIpv4Ping) ToPbText() (string, error) { +func (obj *bgpExtendedCommunityTransitiveIpv4AddressTypeRouteTarget) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -272174,12 +318665,12 @@ func (obj *actionResponseProtocolIpv4Ping) ToPbText() (string, error) { return string(protoMarshal), nil } -func (obj *actionResponseProtocolIpv4Ping) FromPbText(value string) error { +func (obj *bgpExtendedCommunityTransitiveIpv4AddressTypeRouteTarget) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj } - obj.setNil() + vErr := obj.validateToAndFrom() if vErr != nil { return vErr @@ -272187,7 +318678,7 @@ func (obj *actionResponseProtocolIpv4Ping) FromPbText(value string) error { return retObj } -func (obj *actionResponseProtocolIpv4Ping) ToYaml() (string, error) { +func (obj *bgpExtendedCommunityTransitiveIpv4AddressTypeRouteTarget) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -272208,7 +318699,7 @@ func (obj *actionResponseProtocolIpv4Ping) ToYaml() (string, error) { return string(data), nil } -func (obj *actionResponseProtocolIpv4Ping) FromYaml(value string) error { +func (obj *bgpExtendedCommunityTransitiveIpv4AddressTypeRouteTarget) FromYaml(value string) error { if value == "" { value = "{}" } @@ -272225,7 +318716,7 @@ func (obj *actionResponseProtocolIpv4Ping) FromYaml(value string) error { return fmt.Errorf("unmarshal error %s", strings.Replace( uError.Error(), "\u00a0", " ", -1)[7:]) } - obj.setNil() + vErr := obj.validateToAndFrom() if vErr != nil { return vErr @@ -272233,7 +318724,7 @@ func (obj *actionResponseProtocolIpv4Ping) FromYaml(value string) error { return nil } -func (obj *actionResponseProtocolIpv4Ping) ToJson() (string, error) { +func (obj *bgpExtendedCommunityTransitiveIpv4AddressTypeRouteTarget) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -272251,7 +318742,7 @@ func (obj *actionResponseProtocolIpv4Ping) ToJson() (string, error) { return string(data), nil } -func (obj *actionResponseProtocolIpv4Ping) FromJson(value string) error { +func (obj *bgpExtendedCommunityTransitiveIpv4AddressTypeRouteTarget) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -272264,7 +318755,7 @@ func (obj *actionResponseProtocolIpv4Ping) FromJson(value string) error { return fmt.Errorf("unmarshal error %s", strings.Replace( uError.Error(), "\u00a0", " ", -1)[7:]) } - obj.setNil() + err := obj.validateToAndFrom() if err != nil { return err @@ -272272,19 +318763,19 @@ func (obj *actionResponseProtocolIpv4Ping) FromJson(value string) error { return nil } -func (obj *actionResponseProtocolIpv4Ping) validateToAndFrom() error { +func (obj *bgpExtendedCommunityTransitiveIpv4AddressTypeRouteTarget) validateToAndFrom() error { // emptyVars() obj.validateObj(&obj.validation, true) return obj.validationResult() } -func (obj *actionResponseProtocolIpv4Ping) Validate() error { +func (obj *bgpExtendedCommunityTransitiveIpv4AddressTypeRouteTarget) Validate() error { // emptyVars() obj.validateObj(&obj.validation, false) return obj.validationResult() } -func (obj *actionResponseProtocolIpv4Ping) String() string { +func (obj *bgpExtendedCommunityTransitiveIpv4AddressTypeRouteTarget) String() string { str, err := obj.ToYaml() if err != nil { return err.Error() @@ -272292,12 +318783,12 @@ func (obj *actionResponseProtocolIpv4Ping) String() string { return str } -func (obj *actionResponseProtocolIpv4Ping) Clone() (ActionResponseProtocolIpv4Ping, error) { +func (obj *bgpExtendedCommunityTransitiveIpv4AddressTypeRouteTarget) Clone() (BgpExtendedCommunityTransitiveIpv4AddressTypeRouteTarget, error) { vErr := obj.Validate() if vErr != nil { return nil, vErr } - newObj := NewActionResponseProtocolIpv4Ping() + newObj := NewBgpExtendedCommunityTransitiveIpv4AddressTypeRouteTarget() data, err := proto.Marshal(obj.Msg()) if err != nil { return nil, err @@ -272309,188 +318800,157 @@ func (obj *actionResponseProtocolIpv4Ping) Clone() (ActionResponseProtocolIpv4Pi return newObj, nil } -func (obj *actionResponseProtocolIpv4Ping) setNil() { - obj.responsesHolder = nil - obj.validationErrors = nil - obj.warnings = nil - obj.constraints = make(map[string]map[string]Constraints) -} - -// ActionResponseProtocolIpv4Ping is response for ping initiated between multiple source and destination pairs. -type ActionResponseProtocolIpv4Ping interface { +// BgpExtendedCommunityTransitiveIpv4AddressTypeRouteTarget is the Route Target Community identifies one or more routers that may receive a set of routes (that carry this Community) carried by BGP. It is sent with sub-type as 0x02. +type BgpExtendedCommunityTransitiveIpv4AddressTypeRouteTarget interface { Validation - // Msg marshals ActionResponseProtocolIpv4Ping to protobuf object *otg.ActionResponseProtocolIpv4Ping + // Msg marshals BgpExtendedCommunityTransitiveIpv4AddressTypeRouteTarget to protobuf object *otg.BgpExtendedCommunityTransitiveIpv4AddressTypeRouteTarget // and doesn't set defaults - Msg() *otg.ActionResponseProtocolIpv4Ping - // SetMsg unmarshals ActionResponseProtocolIpv4Ping from protobuf object *otg.ActionResponseProtocolIpv4Ping + Msg() *otg.BgpExtendedCommunityTransitiveIpv4AddressTypeRouteTarget + // SetMsg unmarshals BgpExtendedCommunityTransitiveIpv4AddressTypeRouteTarget from protobuf object *otg.BgpExtendedCommunityTransitiveIpv4AddressTypeRouteTarget // and doesn't set defaults - SetMsg(*otg.ActionResponseProtocolIpv4Ping) ActionResponseProtocolIpv4Ping - // ToProto marshals ActionResponseProtocolIpv4Ping to protobuf object *otg.ActionResponseProtocolIpv4Ping - ToProto() (*otg.ActionResponseProtocolIpv4Ping, error) - // ToPbText marshals ActionResponseProtocolIpv4Ping to protobuf text + SetMsg(*otg.BgpExtendedCommunityTransitiveIpv4AddressTypeRouteTarget) BgpExtendedCommunityTransitiveIpv4AddressTypeRouteTarget + // ToProto marshals BgpExtendedCommunityTransitiveIpv4AddressTypeRouteTarget to protobuf object *otg.BgpExtendedCommunityTransitiveIpv4AddressTypeRouteTarget + ToProto() (*otg.BgpExtendedCommunityTransitiveIpv4AddressTypeRouteTarget, error) + // ToPbText marshals BgpExtendedCommunityTransitiveIpv4AddressTypeRouteTarget to protobuf text ToPbText() (string, error) - // ToYaml marshals ActionResponseProtocolIpv4Ping to YAML text + // ToYaml marshals BgpExtendedCommunityTransitiveIpv4AddressTypeRouteTarget to YAML text ToYaml() (string, error) - // ToJson marshals ActionResponseProtocolIpv4Ping to JSON text + // ToJson marshals BgpExtendedCommunityTransitiveIpv4AddressTypeRouteTarget to JSON text ToJson() (string, error) - // FromProto unmarshals ActionResponseProtocolIpv4Ping from protobuf object *otg.ActionResponseProtocolIpv4Ping - FromProto(msg *otg.ActionResponseProtocolIpv4Ping) (ActionResponseProtocolIpv4Ping, error) - // FromPbText unmarshals ActionResponseProtocolIpv4Ping from protobuf text + // FromProto unmarshals BgpExtendedCommunityTransitiveIpv4AddressTypeRouteTarget from protobuf object *otg.BgpExtendedCommunityTransitiveIpv4AddressTypeRouteTarget + FromProto(msg *otg.BgpExtendedCommunityTransitiveIpv4AddressTypeRouteTarget) (BgpExtendedCommunityTransitiveIpv4AddressTypeRouteTarget, error) + // FromPbText unmarshals BgpExtendedCommunityTransitiveIpv4AddressTypeRouteTarget from protobuf text FromPbText(value string) error - // FromYaml unmarshals ActionResponseProtocolIpv4Ping from YAML text + // FromYaml unmarshals BgpExtendedCommunityTransitiveIpv4AddressTypeRouteTarget from YAML text FromYaml(value string) error - // FromJson unmarshals ActionResponseProtocolIpv4Ping from JSON text + // FromJson unmarshals BgpExtendedCommunityTransitiveIpv4AddressTypeRouteTarget from JSON text FromJson(value string) error - // Validate validates ActionResponseProtocolIpv4Ping + // Validate validates BgpExtendedCommunityTransitiveIpv4AddressTypeRouteTarget Validate() error // A stringer function String() string // Clones the object - Clone() (ActionResponseProtocolIpv4Ping, error) + Clone() (BgpExtendedCommunityTransitiveIpv4AddressTypeRouteTarget, error) validateToAndFrom() error validateObj(vObj *validation, set_default bool) setDefault() - // Responses returns ActionResponseProtocolIpv4PingActionResponseProtocolIpv4PingResponseIterIter, set in ActionResponseProtocolIpv4Ping - Responses() ActionResponseProtocolIpv4PingActionResponseProtocolIpv4PingResponseIter - setNil() + // GlobalIpv4Admin returns string, set in BgpExtendedCommunityTransitiveIpv4AddressTypeRouteTarget. + GlobalIpv4Admin() string + // SetGlobalIpv4Admin assigns string provided by user to BgpExtendedCommunityTransitiveIpv4AddressTypeRouteTarget + SetGlobalIpv4Admin(value string) BgpExtendedCommunityTransitiveIpv4AddressTypeRouteTarget + // HasGlobalIpv4Admin checks if GlobalIpv4Admin has been set in BgpExtendedCommunityTransitiveIpv4AddressTypeRouteTarget + HasGlobalIpv4Admin() bool + // Local2ByteAdmin returns uint32, set in BgpExtendedCommunityTransitiveIpv4AddressTypeRouteTarget. + Local2ByteAdmin() uint32 + // SetLocal2ByteAdmin assigns uint32 provided by user to BgpExtendedCommunityTransitiveIpv4AddressTypeRouteTarget + SetLocal2ByteAdmin(value uint32) BgpExtendedCommunityTransitiveIpv4AddressTypeRouteTarget + // HasLocal2ByteAdmin checks if Local2ByteAdmin has been set in BgpExtendedCommunityTransitiveIpv4AddressTypeRouteTarget + HasLocal2ByteAdmin() bool } -// List of responses for IPv4 ping responses. -// Responses returns a []ActionResponseProtocolIpv4PingResponse -func (obj *actionResponseProtocolIpv4Ping) Responses() ActionResponseProtocolIpv4PingActionResponseProtocolIpv4PingResponseIter { - if len(obj.obj.Responses) == 0 { - obj.obj.Responses = []*otg.ActionResponseProtocolIpv4PingResponse{} - } - if obj.responsesHolder == nil { - obj.responsesHolder = newActionResponseProtocolIpv4PingActionResponseProtocolIpv4PingResponseIter(&obj.obj.Responses).setMsg(obj) - } - return obj.responsesHolder -} +// An IPv4 unicast address assigned by one of the Internet registries. +// GlobalIpv4Admin returns a string +func (obj *bgpExtendedCommunityTransitiveIpv4AddressTypeRouteTarget) GlobalIpv4Admin() string { -type actionResponseProtocolIpv4PingActionResponseProtocolIpv4PingResponseIter struct { - obj *actionResponseProtocolIpv4Ping - actionResponseProtocolIpv4PingResponseSlice []ActionResponseProtocolIpv4PingResponse - fieldPtr *[]*otg.ActionResponseProtocolIpv4PingResponse -} + return *obj.obj.GlobalIpv4Admin -func newActionResponseProtocolIpv4PingActionResponseProtocolIpv4PingResponseIter(ptr *[]*otg.ActionResponseProtocolIpv4PingResponse) ActionResponseProtocolIpv4PingActionResponseProtocolIpv4PingResponseIter { - return &actionResponseProtocolIpv4PingActionResponseProtocolIpv4PingResponseIter{fieldPtr: ptr} } -type ActionResponseProtocolIpv4PingActionResponseProtocolIpv4PingResponseIter interface { - setMsg(*actionResponseProtocolIpv4Ping) ActionResponseProtocolIpv4PingActionResponseProtocolIpv4PingResponseIter - Items() []ActionResponseProtocolIpv4PingResponse - Add() ActionResponseProtocolIpv4PingResponse - Append(items ...ActionResponseProtocolIpv4PingResponse) ActionResponseProtocolIpv4PingActionResponseProtocolIpv4PingResponseIter - Set(index int, newObj ActionResponseProtocolIpv4PingResponse) ActionResponseProtocolIpv4PingActionResponseProtocolIpv4PingResponseIter - Clear() ActionResponseProtocolIpv4PingActionResponseProtocolIpv4PingResponseIter - clearHolderSlice() ActionResponseProtocolIpv4PingActionResponseProtocolIpv4PingResponseIter - appendHolderSlice(item ActionResponseProtocolIpv4PingResponse) ActionResponseProtocolIpv4PingActionResponseProtocolIpv4PingResponseIter +// An IPv4 unicast address assigned by one of the Internet registries. +// GlobalIpv4Admin returns a string +func (obj *bgpExtendedCommunityTransitiveIpv4AddressTypeRouteTarget) HasGlobalIpv4Admin() bool { + return obj.obj.GlobalIpv4Admin != nil } -func (obj *actionResponseProtocolIpv4PingActionResponseProtocolIpv4PingResponseIter) setMsg(msg *actionResponseProtocolIpv4Ping) ActionResponseProtocolIpv4PingActionResponseProtocolIpv4PingResponseIter { - obj.clearHolderSlice() - for _, val := range *obj.fieldPtr { - obj.appendHolderSlice(&actionResponseProtocolIpv4PingResponse{obj: val}) - } - obj.obj = msg +// An IPv4 unicast address assigned by one of the Internet registries. +// SetGlobalIpv4Admin sets the string value in the BgpExtendedCommunityTransitiveIpv4AddressTypeRouteTarget object +func (obj *bgpExtendedCommunityTransitiveIpv4AddressTypeRouteTarget) SetGlobalIpv4Admin(value string) BgpExtendedCommunityTransitiveIpv4AddressTypeRouteTarget { + + obj.obj.GlobalIpv4Admin = &value return obj } -func (obj *actionResponseProtocolIpv4PingActionResponseProtocolIpv4PingResponseIter) Items() []ActionResponseProtocolIpv4PingResponse { - return obj.actionResponseProtocolIpv4PingResponseSlice -} +// The Local Administrator sub-field contains a number from a numbering space that is administered by the organization to which the IP address carried in the Global Administrator sub-field has been assigned by an appropriate authority. +// Local2ByteAdmin returns a uint32 +func (obj *bgpExtendedCommunityTransitiveIpv4AddressTypeRouteTarget) Local2ByteAdmin() uint32 { -func (obj *actionResponseProtocolIpv4PingActionResponseProtocolIpv4PingResponseIter) Add() ActionResponseProtocolIpv4PingResponse { - newObj := &otg.ActionResponseProtocolIpv4PingResponse{} - *obj.fieldPtr = append(*obj.fieldPtr, newObj) - newLibObj := &actionResponseProtocolIpv4PingResponse{obj: newObj} - newLibObj.setDefault() - obj.actionResponseProtocolIpv4PingResponseSlice = append(obj.actionResponseProtocolIpv4PingResponseSlice, newLibObj) - return newLibObj -} + return *obj.obj.Local_2ByteAdmin -func (obj *actionResponseProtocolIpv4PingActionResponseProtocolIpv4PingResponseIter) Append(items ...ActionResponseProtocolIpv4PingResponse) ActionResponseProtocolIpv4PingActionResponseProtocolIpv4PingResponseIter { - for _, item := range items { - newObj := item.Msg() - *obj.fieldPtr = append(*obj.fieldPtr, newObj) - obj.actionResponseProtocolIpv4PingResponseSlice = append(obj.actionResponseProtocolIpv4PingResponseSlice, item) - } - return obj } -func (obj *actionResponseProtocolIpv4PingActionResponseProtocolIpv4PingResponseIter) Set(index int, newObj ActionResponseProtocolIpv4PingResponse) ActionResponseProtocolIpv4PingActionResponseProtocolIpv4PingResponseIter { - (*obj.fieldPtr)[index] = newObj.Msg() - obj.actionResponseProtocolIpv4PingResponseSlice[index] = newObj - return obj -} -func (obj *actionResponseProtocolIpv4PingActionResponseProtocolIpv4PingResponseIter) Clear() ActionResponseProtocolIpv4PingActionResponseProtocolIpv4PingResponseIter { - if len(*obj.fieldPtr) > 0 { - *obj.fieldPtr = []*otg.ActionResponseProtocolIpv4PingResponse{} - obj.actionResponseProtocolIpv4PingResponseSlice = []ActionResponseProtocolIpv4PingResponse{} - } - return obj -} -func (obj *actionResponseProtocolIpv4PingActionResponseProtocolIpv4PingResponseIter) clearHolderSlice() ActionResponseProtocolIpv4PingActionResponseProtocolIpv4PingResponseIter { - if len(obj.actionResponseProtocolIpv4PingResponseSlice) > 0 { - obj.actionResponseProtocolIpv4PingResponseSlice = []ActionResponseProtocolIpv4PingResponse{} - } - return obj +// The Local Administrator sub-field contains a number from a numbering space that is administered by the organization to which the IP address carried in the Global Administrator sub-field has been assigned by an appropriate authority. +// Local2ByteAdmin returns a uint32 +func (obj *bgpExtendedCommunityTransitiveIpv4AddressTypeRouteTarget) HasLocal2ByteAdmin() bool { + return obj.obj.Local_2ByteAdmin != nil } -func (obj *actionResponseProtocolIpv4PingActionResponseProtocolIpv4PingResponseIter) appendHolderSlice(item ActionResponseProtocolIpv4PingResponse) ActionResponseProtocolIpv4PingActionResponseProtocolIpv4PingResponseIter { - obj.actionResponseProtocolIpv4PingResponseSlice = append(obj.actionResponseProtocolIpv4PingResponseSlice, item) + +// The Local Administrator sub-field contains a number from a numbering space that is administered by the organization to which the IP address carried in the Global Administrator sub-field has been assigned by an appropriate authority. +// SetLocal2ByteAdmin sets the uint32 value in the BgpExtendedCommunityTransitiveIpv4AddressTypeRouteTarget object +func (obj *bgpExtendedCommunityTransitiveIpv4AddressTypeRouteTarget) SetLocal2ByteAdmin(value uint32) BgpExtendedCommunityTransitiveIpv4AddressTypeRouteTarget { + + obj.obj.Local_2ByteAdmin = &value return obj } -func (obj *actionResponseProtocolIpv4Ping) validateObj(vObj *validation, set_default bool) { +func (obj *bgpExtendedCommunityTransitiveIpv4AddressTypeRouteTarget) validateObj(vObj *validation, set_default bool) { if set_default { obj.setDefault() } - if len(obj.obj.Responses) != 0 { + if obj.obj.GlobalIpv4Admin != nil { - if set_default { - obj.Responses().clearHolderSlice() - for _, item := range obj.obj.Responses { - obj.Responses().appendHolderSlice(&actionResponseProtocolIpv4PingResponse{obj: item}) - } + err := obj.validateIpv4(obj.GlobalIpv4Admin()) + if err != nil { + vObj.validationErrors = append(vObj.validationErrors, fmt.Sprintf("%s %s", err.Error(), "on BgpExtendedCommunityTransitiveIpv4AddressTypeRouteTarget.GlobalIpv4Admin")) } - for _, item := range obj.Responses().Items() { - item.validateObj(vObj, set_default) + + } + + if obj.obj.Local_2ByteAdmin != nil { + + if *obj.obj.Local_2ByteAdmin > 65535 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("0 <= BgpExtendedCommunityTransitiveIpv4AddressTypeRouteTarget.Local_2ByteAdmin <= 65535 but Got %d", *obj.obj.Local_2ByteAdmin)) } } } -func (obj *actionResponseProtocolIpv4Ping) setDefault() { - -} - -// ***** ActionResponseProtocolIpv6Ping ***** -type actionResponseProtocolIpv6Ping struct { +func (obj *bgpExtendedCommunityTransitiveIpv4AddressTypeRouteTarget) setDefault() { + if obj.obj.GlobalIpv4Admin == nil { + obj.SetGlobalIpv4Admin("0.0.0.0") + } + if obj.obj.Local_2ByteAdmin == nil { + obj.SetLocal2ByteAdmin(1) + } + +} + +// ***** BgpExtendedCommunityTransitiveIpv4AddressTypeRouteOrigin ***** +type bgpExtendedCommunityTransitiveIpv4AddressTypeRouteOrigin struct { validation - obj *otg.ActionResponseProtocolIpv6Ping - responsesHolder ActionResponseProtocolIpv6PingActionResponseProtocolIpv6PingResponseIter + obj *otg.BgpExtendedCommunityTransitiveIpv4AddressTypeRouteOrigin } -func NewActionResponseProtocolIpv6Ping() ActionResponseProtocolIpv6Ping { - obj := actionResponseProtocolIpv6Ping{obj: &otg.ActionResponseProtocolIpv6Ping{}} +func NewBgpExtendedCommunityTransitiveIpv4AddressTypeRouteOrigin() BgpExtendedCommunityTransitiveIpv4AddressTypeRouteOrigin { + obj := bgpExtendedCommunityTransitiveIpv4AddressTypeRouteOrigin{obj: &otg.BgpExtendedCommunityTransitiveIpv4AddressTypeRouteOrigin{}} obj.setDefault() return &obj } -func (obj *actionResponseProtocolIpv6Ping) Msg() *otg.ActionResponseProtocolIpv6Ping { +func (obj *bgpExtendedCommunityTransitiveIpv4AddressTypeRouteOrigin) Msg() *otg.BgpExtendedCommunityTransitiveIpv4AddressTypeRouteOrigin { return obj.obj } -func (obj *actionResponseProtocolIpv6Ping) SetMsg(msg *otg.ActionResponseProtocolIpv6Ping) ActionResponseProtocolIpv6Ping { - obj.setNil() +func (obj *bgpExtendedCommunityTransitiveIpv4AddressTypeRouteOrigin) SetMsg(msg *otg.BgpExtendedCommunityTransitiveIpv4AddressTypeRouteOrigin) BgpExtendedCommunityTransitiveIpv4AddressTypeRouteOrigin { + proto.Merge(obj.obj, msg) return obj } -func (obj *actionResponseProtocolIpv6Ping) ToProto() (*otg.ActionResponseProtocolIpv6Ping, error) { +func (obj *bgpExtendedCommunityTransitiveIpv4AddressTypeRouteOrigin) ToProto() (*otg.BgpExtendedCommunityTransitiveIpv4AddressTypeRouteOrigin, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -272498,7 +318958,7 @@ func (obj *actionResponseProtocolIpv6Ping) ToProto() (*otg.ActionResponseProtoco return obj.Msg(), nil } -func (obj *actionResponseProtocolIpv6Ping) FromProto(msg *otg.ActionResponseProtocolIpv6Ping) (ActionResponseProtocolIpv6Ping, error) { +func (obj *bgpExtendedCommunityTransitiveIpv4AddressTypeRouteOrigin) FromProto(msg *otg.BgpExtendedCommunityTransitiveIpv4AddressTypeRouteOrigin) (BgpExtendedCommunityTransitiveIpv4AddressTypeRouteOrigin, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -272507,7 +318967,7 @@ func (obj *actionResponseProtocolIpv6Ping) FromProto(msg *otg.ActionResponseProt return newObj, nil } -func (obj *actionResponseProtocolIpv6Ping) ToPbText() (string, error) { +func (obj *bgpExtendedCommunityTransitiveIpv4AddressTypeRouteOrigin) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -272519,12 +318979,12 @@ func (obj *actionResponseProtocolIpv6Ping) ToPbText() (string, error) { return string(protoMarshal), nil } -func (obj *actionResponseProtocolIpv6Ping) FromPbText(value string) error { +func (obj *bgpExtendedCommunityTransitiveIpv4AddressTypeRouteOrigin) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj } - obj.setNil() + vErr := obj.validateToAndFrom() if vErr != nil { return vErr @@ -272532,7 +318992,7 @@ func (obj *actionResponseProtocolIpv6Ping) FromPbText(value string) error { return retObj } -func (obj *actionResponseProtocolIpv6Ping) ToYaml() (string, error) { +func (obj *bgpExtendedCommunityTransitiveIpv4AddressTypeRouteOrigin) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -272553,7 +319013,7 @@ func (obj *actionResponseProtocolIpv6Ping) ToYaml() (string, error) { return string(data), nil } -func (obj *actionResponseProtocolIpv6Ping) FromYaml(value string) error { +func (obj *bgpExtendedCommunityTransitiveIpv4AddressTypeRouteOrigin) FromYaml(value string) error { if value == "" { value = "{}" } @@ -272570,7 +319030,7 @@ func (obj *actionResponseProtocolIpv6Ping) FromYaml(value string) error { return fmt.Errorf("unmarshal error %s", strings.Replace( uError.Error(), "\u00a0", " ", -1)[7:]) } - obj.setNil() + vErr := obj.validateToAndFrom() if vErr != nil { return vErr @@ -272578,7 +319038,7 @@ func (obj *actionResponseProtocolIpv6Ping) FromYaml(value string) error { return nil } -func (obj *actionResponseProtocolIpv6Ping) ToJson() (string, error) { +func (obj *bgpExtendedCommunityTransitiveIpv4AddressTypeRouteOrigin) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -272596,7 +319056,7 @@ func (obj *actionResponseProtocolIpv6Ping) ToJson() (string, error) { return string(data), nil } -func (obj *actionResponseProtocolIpv6Ping) FromJson(value string) error { +func (obj *bgpExtendedCommunityTransitiveIpv4AddressTypeRouteOrigin) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -272609,7 +319069,7 @@ func (obj *actionResponseProtocolIpv6Ping) FromJson(value string) error { return fmt.Errorf("unmarshal error %s", strings.Replace( uError.Error(), "\u00a0", " ", -1)[7:]) } - obj.setNil() + err := obj.validateToAndFrom() if err != nil { return err @@ -272617,19 +319077,19 @@ func (obj *actionResponseProtocolIpv6Ping) FromJson(value string) error { return nil } -func (obj *actionResponseProtocolIpv6Ping) validateToAndFrom() error { +func (obj *bgpExtendedCommunityTransitiveIpv4AddressTypeRouteOrigin) validateToAndFrom() error { // emptyVars() obj.validateObj(&obj.validation, true) return obj.validationResult() } -func (obj *actionResponseProtocolIpv6Ping) Validate() error { +func (obj *bgpExtendedCommunityTransitiveIpv4AddressTypeRouteOrigin) Validate() error { // emptyVars() obj.validateObj(&obj.validation, false) return obj.validationResult() } -func (obj *actionResponseProtocolIpv6Ping) String() string { +func (obj *bgpExtendedCommunityTransitiveIpv4AddressTypeRouteOrigin) String() string { str, err := obj.ToYaml() if err != nil { return err.Error() @@ -272637,12 +319097,12 @@ func (obj *actionResponseProtocolIpv6Ping) String() string { return str } -func (obj *actionResponseProtocolIpv6Ping) Clone() (ActionResponseProtocolIpv6Ping, error) { +func (obj *bgpExtendedCommunityTransitiveIpv4AddressTypeRouteOrigin) Clone() (BgpExtendedCommunityTransitiveIpv4AddressTypeRouteOrigin, error) { vErr := obj.Validate() if vErr != nil { return nil, vErr } - newObj := NewActionResponseProtocolIpv6Ping() + newObj := NewBgpExtendedCommunityTransitiveIpv4AddressTypeRouteOrigin() data, err := proto.Marshal(obj.Msg()) if err != nil { return nil, err @@ -272654,187 +319114,157 @@ func (obj *actionResponseProtocolIpv6Ping) Clone() (ActionResponseProtocolIpv6Pi return newObj, nil } -func (obj *actionResponseProtocolIpv6Ping) setNil() { - obj.responsesHolder = nil - obj.validationErrors = nil - obj.warnings = nil - obj.constraints = make(map[string]map[string]Constraints) -} - -// ActionResponseProtocolIpv6Ping is response for ping initiated between multiple source and destination pairs. -type ActionResponseProtocolIpv6Ping interface { +// BgpExtendedCommunityTransitiveIpv4AddressTypeRouteOrigin is the Route Origin Community identifies one or more routers that inject a set of routes (that carry this Community) into BGP It is sent with sub-type as 0x03. +type BgpExtendedCommunityTransitiveIpv4AddressTypeRouteOrigin interface { Validation - // Msg marshals ActionResponseProtocolIpv6Ping to protobuf object *otg.ActionResponseProtocolIpv6Ping + // Msg marshals BgpExtendedCommunityTransitiveIpv4AddressTypeRouteOrigin to protobuf object *otg.BgpExtendedCommunityTransitiveIpv4AddressTypeRouteOrigin // and doesn't set defaults - Msg() *otg.ActionResponseProtocolIpv6Ping - // SetMsg unmarshals ActionResponseProtocolIpv6Ping from protobuf object *otg.ActionResponseProtocolIpv6Ping + Msg() *otg.BgpExtendedCommunityTransitiveIpv4AddressTypeRouteOrigin + // SetMsg unmarshals BgpExtendedCommunityTransitiveIpv4AddressTypeRouteOrigin from protobuf object *otg.BgpExtendedCommunityTransitiveIpv4AddressTypeRouteOrigin // and doesn't set defaults - SetMsg(*otg.ActionResponseProtocolIpv6Ping) ActionResponseProtocolIpv6Ping - // ToProto marshals ActionResponseProtocolIpv6Ping to protobuf object *otg.ActionResponseProtocolIpv6Ping - ToProto() (*otg.ActionResponseProtocolIpv6Ping, error) - // ToPbText marshals ActionResponseProtocolIpv6Ping to protobuf text + SetMsg(*otg.BgpExtendedCommunityTransitiveIpv4AddressTypeRouteOrigin) BgpExtendedCommunityTransitiveIpv4AddressTypeRouteOrigin + // ToProto marshals BgpExtendedCommunityTransitiveIpv4AddressTypeRouteOrigin to protobuf object *otg.BgpExtendedCommunityTransitiveIpv4AddressTypeRouteOrigin + ToProto() (*otg.BgpExtendedCommunityTransitiveIpv4AddressTypeRouteOrigin, error) + // ToPbText marshals BgpExtendedCommunityTransitiveIpv4AddressTypeRouteOrigin to protobuf text ToPbText() (string, error) - // ToYaml marshals ActionResponseProtocolIpv6Ping to YAML text + // ToYaml marshals BgpExtendedCommunityTransitiveIpv4AddressTypeRouteOrigin to YAML text ToYaml() (string, error) - // ToJson marshals ActionResponseProtocolIpv6Ping to JSON text + // ToJson marshals BgpExtendedCommunityTransitiveIpv4AddressTypeRouteOrigin to JSON text ToJson() (string, error) - // FromProto unmarshals ActionResponseProtocolIpv6Ping from protobuf object *otg.ActionResponseProtocolIpv6Ping - FromProto(msg *otg.ActionResponseProtocolIpv6Ping) (ActionResponseProtocolIpv6Ping, error) - // FromPbText unmarshals ActionResponseProtocolIpv6Ping from protobuf text + // FromProto unmarshals BgpExtendedCommunityTransitiveIpv4AddressTypeRouteOrigin from protobuf object *otg.BgpExtendedCommunityTransitiveIpv4AddressTypeRouteOrigin + FromProto(msg *otg.BgpExtendedCommunityTransitiveIpv4AddressTypeRouteOrigin) (BgpExtendedCommunityTransitiveIpv4AddressTypeRouteOrigin, error) + // FromPbText unmarshals BgpExtendedCommunityTransitiveIpv4AddressTypeRouteOrigin from protobuf text FromPbText(value string) error - // FromYaml unmarshals ActionResponseProtocolIpv6Ping from YAML text + // FromYaml unmarshals BgpExtendedCommunityTransitiveIpv4AddressTypeRouteOrigin from YAML text FromYaml(value string) error - // FromJson unmarshals ActionResponseProtocolIpv6Ping from JSON text + // FromJson unmarshals BgpExtendedCommunityTransitiveIpv4AddressTypeRouteOrigin from JSON text FromJson(value string) error - // Validate validates ActionResponseProtocolIpv6Ping + // Validate validates BgpExtendedCommunityTransitiveIpv4AddressTypeRouteOrigin Validate() error // A stringer function String() string // Clones the object - Clone() (ActionResponseProtocolIpv6Ping, error) + Clone() (BgpExtendedCommunityTransitiveIpv4AddressTypeRouteOrigin, error) validateToAndFrom() error validateObj(vObj *validation, set_default bool) setDefault() - // Responses returns ActionResponseProtocolIpv6PingActionResponseProtocolIpv6PingResponseIterIter, set in ActionResponseProtocolIpv6Ping - Responses() ActionResponseProtocolIpv6PingActionResponseProtocolIpv6PingResponseIter - setNil() + // GlobalIpv4Admin returns string, set in BgpExtendedCommunityTransitiveIpv4AddressTypeRouteOrigin. + GlobalIpv4Admin() string + // SetGlobalIpv4Admin assigns string provided by user to BgpExtendedCommunityTransitiveIpv4AddressTypeRouteOrigin + SetGlobalIpv4Admin(value string) BgpExtendedCommunityTransitiveIpv4AddressTypeRouteOrigin + // HasGlobalIpv4Admin checks if GlobalIpv4Admin has been set in BgpExtendedCommunityTransitiveIpv4AddressTypeRouteOrigin + HasGlobalIpv4Admin() bool + // Local2ByteAdmin returns uint32, set in BgpExtendedCommunityTransitiveIpv4AddressTypeRouteOrigin. + Local2ByteAdmin() uint32 + // SetLocal2ByteAdmin assigns uint32 provided by user to BgpExtendedCommunityTransitiveIpv4AddressTypeRouteOrigin + SetLocal2ByteAdmin(value uint32) BgpExtendedCommunityTransitiveIpv4AddressTypeRouteOrigin + // HasLocal2ByteAdmin checks if Local2ByteAdmin has been set in BgpExtendedCommunityTransitiveIpv4AddressTypeRouteOrigin + HasLocal2ByteAdmin() bool } -// List of responses for IPv6 ping responses. -// Responses returns a []ActionResponseProtocolIpv6PingResponse -func (obj *actionResponseProtocolIpv6Ping) Responses() ActionResponseProtocolIpv6PingActionResponseProtocolIpv6PingResponseIter { - if len(obj.obj.Responses) == 0 { - obj.obj.Responses = []*otg.ActionResponseProtocolIpv6PingResponse{} - } - if obj.responsesHolder == nil { - obj.responsesHolder = newActionResponseProtocolIpv6PingActionResponseProtocolIpv6PingResponseIter(&obj.obj.Responses).setMsg(obj) - } - return obj.responsesHolder -} +// An IPv4 unicast address assigned by one of the Internet registries. +// GlobalIpv4Admin returns a string +func (obj *bgpExtendedCommunityTransitiveIpv4AddressTypeRouteOrigin) GlobalIpv4Admin() string { -type actionResponseProtocolIpv6PingActionResponseProtocolIpv6PingResponseIter struct { - obj *actionResponseProtocolIpv6Ping - actionResponseProtocolIpv6PingResponseSlice []ActionResponseProtocolIpv6PingResponse - fieldPtr *[]*otg.ActionResponseProtocolIpv6PingResponse -} + return *obj.obj.GlobalIpv4Admin -func newActionResponseProtocolIpv6PingActionResponseProtocolIpv6PingResponseIter(ptr *[]*otg.ActionResponseProtocolIpv6PingResponse) ActionResponseProtocolIpv6PingActionResponseProtocolIpv6PingResponseIter { - return &actionResponseProtocolIpv6PingActionResponseProtocolIpv6PingResponseIter{fieldPtr: ptr} } -type ActionResponseProtocolIpv6PingActionResponseProtocolIpv6PingResponseIter interface { - setMsg(*actionResponseProtocolIpv6Ping) ActionResponseProtocolIpv6PingActionResponseProtocolIpv6PingResponseIter - Items() []ActionResponseProtocolIpv6PingResponse - Add() ActionResponseProtocolIpv6PingResponse - Append(items ...ActionResponseProtocolIpv6PingResponse) ActionResponseProtocolIpv6PingActionResponseProtocolIpv6PingResponseIter - Set(index int, newObj ActionResponseProtocolIpv6PingResponse) ActionResponseProtocolIpv6PingActionResponseProtocolIpv6PingResponseIter - Clear() ActionResponseProtocolIpv6PingActionResponseProtocolIpv6PingResponseIter - clearHolderSlice() ActionResponseProtocolIpv6PingActionResponseProtocolIpv6PingResponseIter - appendHolderSlice(item ActionResponseProtocolIpv6PingResponse) ActionResponseProtocolIpv6PingActionResponseProtocolIpv6PingResponseIter +// An IPv4 unicast address assigned by one of the Internet registries. +// GlobalIpv4Admin returns a string +func (obj *bgpExtendedCommunityTransitiveIpv4AddressTypeRouteOrigin) HasGlobalIpv4Admin() bool { + return obj.obj.GlobalIpv4Admin != nil } -func (obj *actionResponseProtocolIpv6PingActionResponseProtocolIpv6PingResponseIter) setMsg(msg *actionResponseProtocolIpv6Ping) ActionResponseProtocolIpv6PingActionResponseProtocolIpv6PingResponseIter { - obj.clearHolderSlice() - for _, val := range *obj.fieldPtr { - obj.appendHolderSlice(&actionResponseProtocolIpv6PingResponse{obj: val}) - } - obj.obj = msg +// An IPv4 unicast address assigned by one of the Internet registries. +// SetGlobalIpv4Admin sets the string value in the BgpExtendedCommunityTransitiveIpv4AddressTypeRouteOrigin object +func (obj *bgpExtendedCommunityTransitiveIpv4AddressTypeRouteOrigin) SetGlobalIpv4Admin(value string) BgpExtendedCommunityTransitiveIpv4AddressTypeRouteOrigin { + + obj.obj.GlobalIpv4Admin = &value return obj } -func (obj *actionResponseProtocolIpv6PingActionResponseProtocolIpv6PingResponseIter) Items() []ActionResponseProtocolIpv6PingResponse { - return obj.actionResponseProtocolIpv6PingResponseSlice -} +// The Local Administrator sub-field contains a number from a numbering space that is administered by the organization to which the IP address carried in the Global Administrator sub-field has been assigned by an appropriate authority. +// Local2ByteAdmin returns a uint32 +func (obj *bgpExtendedCommunityTransitiveIpv4AddressTypeRouteOrigin) Local2ByteAdmin() uint32 { -func (obj *actionResponseProtocolIpv6PingActionResponseProtocolIpv6PingResponseIter) Add() ActionResponseProtocolIpv6PingResponse { - newObj := &otg.ActionResponseProtocolIpv6PingResponse{} - *obj.fieldPtr = append(*obj.fieldPtr, newObj) - newLibObj := &actionResponseProtocolIpv6PingResponse{obj: newObj} - newLibObj.setDefault() - obj.actionResponseProtocolIpv6PingResponseSlice = append(obj.actionResponseProtocolIpv6PingResponseSlice, newLibObj) - return newLibObj -} + return *obj.obj.Local_2ByteAdmin -func (obj *actionResponseProtocolIpv6PingActionResponseProtocolIpv6PingResponseIter) Append(items ...ActionResponseProtocolIpv6PingResponse) ActionResponseProtocolIpv6PingActionResponseProtocolIpv6PingResponseIter { - for _, item := range items { - newObj := item.Msg() - *obj.fieldPtr = append(*obj.fieldPtr, newObj) - obj.actionResponseProtocolIpv6PingResponseSlice = append(obj.actionResponseProtocolIpv6PingResponseSlice, item) - } - return obj } -func (obj *actionResponseProtocolIpv6PingActionResponseProtocolIpv6PingResponseIter) Set(index int, newObj ActionResponseProtocolIpv6PingResponse) ActionResponseProtocolIpv6PingActionResponseProtocolIpv6PingResponseIter { - (*obj.fieldPtr)[index] = newObj.Msg() - obj.actionResponseProtocolIpv6PingResponseSlice[index] = newObj - return obj -} -func (obj *actionResponseProtocolIpv6PingActionResponseProtocolIpv6PingResponseIter) Clear() ActionResponseProtocolIpv6PingActionResponseProtocolIpv6PingResponseIter { - if len(*obj.fieldPtr) > 0 { - *obj.fieldPtr = []*otg.ActionResponseProtocolIpv6PingResponse{} - obj.actionResponseProtocolIpv6PingResponseSlice = []ActionResponseProtocolIpv6PingResponse{} - } - return obj -} -func (obj *actionResponseProtocolIpv6PingActionResponseProtocolIpv6PingResponseIter) clearHolderSlice() ActionResponseProtocolIpv6PingActionResponseProtocolIpv6PingResponseIter { - if len(obj.actionResponseProtocolIpv6PingResponseSlice) > 0 { - obj.actionResponseProtocolIpv6PingResponseSlice = []ActionResponseProtocolIpv6PingResponse{} - } - return obj +// The Local Administrator sub-field contains a number from a numbering space that is administered by the organization to which the IP address carried in the Global Administrator sub-field has been assigned by an appropriate authority. +// Local2ByteAdmin returns a uint32 +func (obj *bgpExtendedCommunityTransitiveIpv4AddressTypeRouteOrigin) HasLocal2ByteAdmin() bool { + return obj.obj.Local_2ByteAdmin != nil } -func (obj *actionResponseProtocolIpv6PingActionResponseProtocolIpv6PingResponseIter) appendHolderSlice(item ActionResponseProtocolIpv6PingResponse) ActionResponseProtocolIpv6PingActionResponseProtocolIpv6PingResponseIter { - obj.actionResponseProtocolIpv6PingResponseSlice = append(obj.actionResponseProtocolIpv6PingResponseSlice, item) + +// The Local Administrator sub-field contains a number from a numbering space that is administered by the organization to which the IP address carried in the Global Administrator sub-field has been assigned by an appropriate authority. +// SetLocal2ByteAdmin sets the uint32 value in the BgpExtendedCommunityTransitiveIpv4AddressTypeRouteOrigin object +func (obj *bgpExtendedCommunityTransitiveIpv4AddressTypeRouteOrigin) SetLocal2ByteAdmin(value uint32) BgpExtendedCommunityTransitiveIpv4AddressTypeRouteOrigin { + + obj.obj.Local_2ByteAdmin = &value return obj } -func (obj *actionResponseProtocolIpv6Ping) validateObj(vObj *validation, set_default bool) { +func (obj *bgpExtendedCommunityTransitiveIpv4AddressTypeRouteOrigin) validateObj(vObj *validation, set_default bool) { if set_default { obj.setDefault() } - if len(obj.obj.Responses) != 0 { + if obj.obj.GlobalIpv4Admin != nil { - if set_default { - obj.Responses().clearHolderSlice() - for _, item := range obj.obj.Responses { - obj.Responses().appendHolderSlice(&actionResponseProtocolIpv6PingResponse{obj: item}) - } + err := obj.validateIpv4(obj.GlobalIpv4Admin()) + if err != nil { + vObj.validationErrors = append(vObj.validationErrors, fmt.Sprintf("%s %s", err.Error(), "on BgpExtendedCommunityTransitiveIpv4AddressTypeRouteOrigin.GlobalIpv4Admin")) } - for _, item := range obj.Responses().Items() { - item.validateObj(vObj, set_default) + + } + + if obj.obj.Local_2ByteAdmin != nil { + + if *obj.obj.Local_2ByteAdmin > 65535 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("0 <= BgpExtendedCommunityTransitiveIpv4AddressTypeRouteOrigin.Local_2ByteAdmin <= 65535 but Got %d", *obj.obj.Local_2ByteAdmin)) } } } -func (obj *actionResponseProtocolIpv6Ping) setDefault() { +func (obj *bgpExtendedCommunityTransitiveIpv4AddressTypeRouteOrigin) setDefault() { + if obj.obj.GlobalIpv4Admin == nil { + obj.SetGlobalIpv4Admin("0.0.0.0") + } + if obj.obj.Local_2ByteAdmin == nil { + obj.SetLocal2ByteAdmin(1) + } } -// ***** FlowMetricTagValue ***** -type flowMetricTagValue struct { +// ***** BgpExtendedCommunityTransitive4OctetAsTypeRouteTarget ***** +type bgpExtendedCommunityTransitive4OctetAsTypeRouteTarget struct { validation - obj *otg.FlowMetricTagValue + obj *otg.BgpExtendedCommunityTransitive4OctetAsTypeRouteTarget } -func NewFlowMetricTagValue() FlowMetricTagValue { - obj := flowMetricTagValue{obj: &otg.FlowMetricTagValue{}} +func NewBgpExtendedCommunityTransitive4OctetAsTypeRouteTarget() BgpExtendedCommunityTransitive4OctetAsTypeRouteTarget { + obj := bgpExtendedCommunityTransitive4OctetAsTypeRouteTarget{obj: &otg.BgpExtendedCommunityTransitive4OctetAsTypeRouteTarget{}} obj.setDefault() return &obj } -func (obj *flowMetricTagValue) Msg() *otg.FlowMetricTagValue { +func (obj *bgpExtendedCommunityTransitive4OctetAsTypeRouteTarget) Msg() *otg.BgpExtendedCommunityTransitive4OctetAsTypeRouteTarget { return obj.obj } -func (obj *flowMetricTagValue) SetMsg(msg *otg.FlowMetricTagValue) FlowMetricTagValue { +func (obj *bgpExtendedCommunityTransitive4OctetAsTypeRouteTarget) SetMsg(msg *otg.BgpExtendedCommunityTransitive4OctetAsTypeRouteTarget) BgpExtendedCommunityTransitive4OctetAsTypeRouteTarget { proto.Merge(obj.obj, msg) return obj } -func (obj *flowMetricTagValue) ToProto() (*otg.FlowMetricTagValue, error) { +func (obj *bgpExtendedCommunityTransitive4OctetAsTypeRouteTarget) ToProto() (*otg.BgpExtendedCommunityTransitive4OctetAsTypeRouteTarget, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -272842,7 +319272,7 @@ func (obj *flowMetricTagValue) ToProto() (*otg.FlowMetricTagValue, error) { return obj.Msg(), nil } -func (obj *flowMetricTagValue) FromProto(msg *otg.FlowMetricTagValue) (FlowMetricTagValue, error) { +func (obj *bgpExtendedCommunityTransitive4OctetAsTypeRouteTarget) FromProto(msg *otg.BgpExtendedCommunityTransitive4OctetAsTypeRouteTarget) (BgpExtendedCommunityTransitive4OctetAsTypeRouteTarget, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -272851,7 +319281,7 @@ func (obj *flowMetricTagValue) FromProto(msg *otg.FlowMetricTagValue) (FlowMetri return newObj, nil } -func (obj *flowMetricTagValue) ToPbText() (string, error) { +func (obj *bgpExtendedCommunityTransitive4OctetAsTypeRouteTarget) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -272863,7 +319293,7 @@ func (obj *flowMetricTagValue) ToPbText() (string, error) { return string(protoMarshal), nil } -func (obj *flowMetricTagValue) FromPbText(value string) error { +func (obj *bgpExtendedCommunityTransitive4OctetAsTypeRouteTarget) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj @@ -272876,7 +319306,7 @@ func (obj *flowMetricTagValue) FromPbText(value string) error { return retObj } -func (obj *flowMetricTagValue) ToYaml() (string, error) { +func (obj *bgpExtendedCommunityTransitive4OctetAsTypeRouteTarget) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -272897,7 +319327,7 @@ func (obj *flowMetricTagValue) ToYaml() (string, error) { return string(data), nil } -func (obj *flowMetricTagValue) FromYaml(value string) error { +func (obj *bgpExtendedCommunityTransitive4OctetAsTypeRouteTarget) FromYaml(value string) error { if value == "" { value = "{}" } @@ -272922,7 +319352,7 @@ func (obj *flowMetricTagValue) FromYaml(value string) error { return nil } -func (obj *flowMetricTagValue) ToJson() (string, error) { +func (obj *bgpExtendedCommunityTransitive4OctetAsTypeRouteTarget) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -272940,7 +319370,7 @@ func (obj *flowMetricTagValue) ToJson() (string, error) { return string(data), nil } -func (obj *flowMetricTagValue) FromJson(value string) error { +func (obj *bgpExtendedCommunityTransitive4OctetAsTypeRouteTarget) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -272961,19 +319391,19 @@ func (obj *flowMetricTagValue) FromJson(value string) error { return nil } -func (obj *flowMetricTagValue) validateToAndFrom() error { +func (obj *bgpExtendedCommunityTransitive4OctetAsTypeRouteTarget) validateToAndFrom() error { // emptyVars() obj.validateObj(&obj.validation, true) return obj.validationResult() } -func (obj *flowMetricTagValue) Validate() error { +func (obj *bgpExtendedCommunityTransitive4OctetAsTypeRouteTarget) Validate() error { // emptyVars() obj.validateObj(&obj.validation, false) return obj.validationResult() } -func (obj *flowMetricTagValue) String() string { +func (obj *bgpExtendedCommunityTransitive4OctetAsTypeRouteTarget) String() string { str, err := obj.ToYaml() if err != nil { return err.Error() @@ -272981,12 +319411,12 @@ func (obj *flowMetricTagValue) String() string { return str } -func (obj *flowMetricTagValue) Clone() (FlowMetricTagValue, error) { +func (obj *bgpExtendedCommunityTransitive4OctetAsTypeRouteTarget) Clone() (BgpExtendedCommunityTransitive4OctetAsTypeRouteTarget, error) { vErr := obj.Validate() if vErr != nil { return nil, vErr } - newObj := NewFlowMetricTagValue() + newObj := NewBgpExtendedCommunityTransitive4OctetAsTypeRouteTarget() data, err := proto.Marshal(obj.Msg()) if err != nil { return nil, err @@ -272998,194 +319428,148 @@ func (obj *flowMetricTagValue) Clone() (FlowMetricTagValue, error) { return newObj, nil } -// FlowMetricTagValue is a container for metric tag value -type FlowMetricTagValue interface { +// BgpExtendedCommunityTransitive4OctetAsTypeRouteTarget is the Route Target Community identifies one or more routers that may receive a set of routes (that carry this Community) carried by BGP. It is sent with sub-type as 0x02 +type BgpExtendedCommunityTransitive4OctetAsTypeRouteTarget interface { Validation - // Msg marshals FlowMetricTagValue to protobuf object *otg.FlowMetricTagValue + // Msg marshals BgpExtendedCommunityTransitive4OctetAsTypeRouteTarget to protobuf object *otg.BgpExtendedCommunityTransitive4OctetAsTypeRouteTarget // and doesn't set defaults - Msg() *otg.FlowMetricTagValue - // SetMsg unmarshals FlowMetricTagValue from protobuf object *otg.FlowMetricTagValue + Msg() *otg.BgpExtendedCommunityTransitive4OctetAsTypeRouteTarget + // SetMsg unmarshals BgpExtendedCommunityTransitive4OctetAsTypeRouteTarget from protobuf object *otg.BgpExtendedCommunityTransitive4OctetAsTypeRouteTarget // and doesn't set defaults - SetMsg(*otg.FlowMetricTagValue) FlowMetricTagValue - // ToProto marshals FlowMetricTagValue to protobuf object *otg.FlowMetricTagValue - ToProto() (*otg.FlowMetricTagValue, error) - // ToPbText marshals FlowMetricTagValue to protobuf text + SetMsg(*otg.BgpExtendedCommunityTransitive4OctetAsTypeRouteTarget) BgpExtendedCommunityTransitive4OctetAsTypeRouteTarget + // ToProto marshals BgpExtendedCommunityTransitive4OctetAsTypeRouteTarget to protobuf object *otg.BgpExtendedCommunityTransitive4OctetAsTypeRouteTarget + ToProto() (*otg.BgpExtendedCommunityTransitive4OctetAsTypeRouteTarget, error) + // ToPbText marshals BgpExtendedCommunityTransitive4OctetAsTypeRouteTarget to protobuf text ToPbText() (string, error) - // ToYaml marshals FlowMetricTagValue to YAML text + // ToYaml marshals BgpExtendedCommunityTransitive4OctetAsTypeRouteTarget to YAML text ToYaml() (string, error) - // ToJson marshals FlowMetricTagValue to JSON text + // ToJson marshals BgpExtendedCommunityTransitive4OctetAsTypeRouteTarget to JSON text ToJson() (string, error) - // FromProto unmarshals FlowMetricTagValue from protobuf object *otg.FlowMetricTagValue - FromProto(msg *otg.FlowMetricTagValue) (FlowMetricTagValue, error) - // FromPbText unmarshals FlowMetricTagValue from protobuf text + // FromProto unmarshals BgpExtendedCommunityTransitive4OctetAsTypeRouteTarget from protobuf object *otg.BgpExtendedCommunityTransitive4OctetAsTypeRouteTarget + FromProto(msg *otg.BgpExtendedCommunityTransitive4OctetAsTypeRouteTarget) (BgpExtendedCommunityTransitive4OctetAsTypeRouteTarget, error) + // FromPbText unmarshals BgpExtendedCommunityTransitive4OctetAsTypeRouteTarget from protobuf text FromPbText(value string) error - // FromYaml unmarshals FlowMetricTagValue from YAML text + // FromYaml unmarshals BgpExtendedCommunityTransitive4OctetAsTypeRouteTarget from YAML text FromYaml(value string) error - // FromJson unmarshals FlowMetricTagValue from JSON text + // FromJson unmarshals BgpExtendedCommunityTransitive4OctetAsTypeRouteTarget from JSON text FromJson(value string) error - // Validate validates FlowMetricTagValue + // Validate validates BgpExtendedCommunityTransitive4OctetAsTypeRouteTarget Validate() error // A stringer function String() string // Clones the object - Clone() (FlowMetricTagValue, error) + Clone() (BgpExtendedCommunityTransitive4OctetAsTypeRouteTarget, error) validateToAndFrom() error validateObj(vObj *validation, set_default bool) setDefault() - // Choice returns FlowMetricTagValueChoiceEnum, set in FlowMetricTagValue - Choice() FlowMetricTagValueChoiceEnum - // SetChoice assigns FlowMetricTagValueChoiceEnum provided by user to FlowMetricTagValue - SetChoice(value FlowMetricTagValueChoiceEnum) FlowMetricTagValue - // HasChoice checks if Choice has been set in FlowMetricTagValue - HasChoice() bool - // Hex returns string, set in FlowMetricTagValue. - Hex() string - // SetHex assigns string provided by user to FlowMetricTagValue - SetHex(value string) FlowMetricTagValue - // HasHex checks if Hex has been set in FlowMetricTagValue - HasHex() bool - // Str returns string, set in FlowMetricTagValue. - Str() string - // SetStr assigns string provided by user to FlowMetricTagValue - SetStr(value string) FlowMetricTagValue - // HasStr checks if Str has been set in FlowMetricTagValue - HasStr() bool -} - -type FlowMetricTagValueChoiceEnum string - -// Enum of Choice on FlowMetricTagValue -var FlowMetricTagValueChoice = struct { - HEX FlowMetricTagValueChoiceEnum - STR FlowMetricTagValueChoiceEnum -}{ - HEX: FlowMetricTagValueChoiceEnum("hex"), - STR: FlowMetricTagValueChoiceEnum("str"), + // Global4ByteAs returns uint32, set in BgpExtendedCommunityTransitive4OctetAsTypeRouteTarget. + Global4ByteAs() uint32 + // SetGlobal4ByteAs assigns uint32 provided by user to BgpExtendedCommunityTransitive4OctetAsTypeRouteTarget + SetGlobal4ByteAs(value uint32) BgpExtendedCommunityTransitive4OctetAsTypeRouteTarget + // HasGlobal4ByteAs checks if Global4ByteAs has been set in BgpExtendedCommunityTransitive4OctetAsTypeRouteTarget + HasGlobal4ByteAs() bool + // Local2ByteAdmin returns uint32, set in BgpExtendedCommunityTransitive4OctetAsTypeRouteTarget. + Local2ByteAdmin() uint32 + // SetLocal2ByteAdmin assigns uint32 provided by user to BgpExtendedCommunityTransitive4OctetAsTypeRouteTarget + SetLocal2ByteAdmin(value uint32) BgpExtendedCommunityTransitive4OctetAsTypeRouteTarget + // HasLocal2ByteAdmin checks if Local2ByteAdmin has been set in BgpExtendedCommunityTransitive4OctetAsTypeRouteTarget + HasLocal2ByteAdmin() bool } -func (obj *flowMetricTagValue) Choice() FlowMetricTagValueChoiceEnum { - return FlowMetricTagValueChoiceEnum(obj.obj.Choice.Enum().String()) -} +// The four octet IANA assigned AS value assigned to the Autonomous System. +// Global4ByteAs returns a uint32 +func (obj *bgpExtendedCommunityTransitive4OctetAsTypeRouteTarget) Global4ByteAs() uint32 { -// Available formats for metric tag value -// Choice returns a string -func (obj *flowMetricTagValue) HasChoice() bool { - return obj.obj.Choice != nil -} + return *obj.obj.Global_4ByteAs -func (obj *flowMetricTagValue) SetChoice(value FlowMetricTagValueChoiceEnum) FlowMetricTagValue { - intValue, ok := otg.FlowMetricTagValue_Choice_Enum_value[string(value)] - if !ok { - obj.validationErrors = append(obj.validationErrors, fmt.Sprintf( - "%s is not a valid choice on FlowMetricTagValueChoiceEnum", string(value))) - return obj - } - enumValue := otg.FlowMetricTagValue_Choice_Enum(intValue) - obj.obj.Choice = &enumValue - obj.obj.Str = nil - obj.obj.Hex = nil - return obj } -// Value represented in hexadecimal format -// Hex returns a string -func (obj *flowMetricTagValue) Hex() string { - - if obj.obj.Hex == nil { - obj.SetChoice(FlowMetricTagValueChoice.HEX) - } - - return *obj.obj.Hex - +// The four octet IANA assigned AS value assigned to the Autonomous System. +// Global4ByteAs returns a uint32 +func (obj *bgpExtendedCommunityTransitive4OctetAsTypeRouteTarget) HasGlobal4ByteAs() bool { + return obj.obj.Global_4ByteAs != nil } -// Value represented in hexadecimal format -// Hex returns a string -func (obj *flowMetricTagValue) HasHex() bool { - return obj.obj.Hex != nil -} +// The four octet IANA assigned AS value assigned to the Autonomous System. +// SetGlobal4ByteAs sets the uint32 value in the BgpExtendedCommunityTransitive4OctetAsTypeRouteTarget object +func (obj *bgpExtendedCommunityTransitive4OctetAsTypeRouteTarget) SetGlobal4ByteAs(value uint32) BgpExtendedCommunityTransitive4OctetAsTypeRouteTarget { -// Value represented in hexadecimal format -// SetHex sets the string value in the FlowMetricTagValue object -func (obj *flowMetricTagValue) SetHex(value string) FlowMetricTagValue { - obj.SetChoice(FlowMetricTagValueChoice.HEX) - obj.obj.Hex = &value + obj.obj.Global_4ByteAs = &value return obj } -// Value represented in string format -// Str returns a string -func (obj *flowMetricTagValue) Str() string { - - if obj.obj.Str == nil { - obj.SetChoice(FlowMetricTagValueChoice.STR) - } +// The Local Administrator sub-field contains a number from a numbering space that is administered by the organization to which the Autonomous System number carried in the Global Administrator sub-field has been assigned by an appropriate authority. +// Local2ByteAdmin returns a uint32 +func (obj *bgpExtendedCommunityTransitive4OctetAsTypeRouteTarget) Local2ByteAdmin() uint32 { - return *obj.obj.Str + return *obj.obj.Local_2ByteAdmin } -// Value represented in string format -// Str returns a string -func (obj *flowMetricTagValue) HasStr() bool { - return obj.obj.Str != nil +// The Local Administrator sub-field contains a number from a numbering space that is administered by the organization to which the Autonomous System number carried in the Global Administrator sub-field has been assigned by an appropriate authority. +// Local2ByteAdmin returns a uint32 +func (obj *bgpExtendedCommunityTransitive4OctetAsTypeRouteTarget) HasLocal2ByteAdmin() bool { + return obj.obj.Local_2ByteAdmin != nil } -// Value represented in string format -// SetStr sets the string value in the FlowMetricTagValue object -func (obj *flowMetricTagValue) SetStr(value string) FlowMetricTagValue { - obj.SetChoice(FlowMetricTagValueChoice.STR) - obj.obj.Str = &value +// The Local Administrator sub-field contains a number from a numbering space that is administered by the organization to which the Autonomous System number carried in the Global Administrator sub-field has been assigned by an appropriate authority. +// SetLocal2ByteAdmin sets the uint32 value in the BgpExtendedCommunityTransitive4OctetAsTypeRouteTarget object +func (obj *bgpExtendedCommunityTransitive4OctetAsTypeRouteTarget) SetLocal2ByteAdmin(value uint32) BgpExtendedCommunityTransitive4OctetAsTypeRouteTarget { + + obj.obj.Local_2ByteAdmin = &value return obj } -func (obj *flowMetricTagValue) validateObj(vObj *validation, set_default bool) { +func (obj *bgpExtendedCommunityTransitive4OctetAsTypeRouteTarget) validateObj(vObj *validation, set_default bool) { if set_default { obj.setDefault() } - if obj.obj.Hex != nil { + if obj.obj.Local_2ByteAdmin != nil { - err := obj.validateHex(obj.Hex()) - if err != nil { - vObj.validationErrors = append(vObj.validationErrors, fmt.Sprintf("%s %s", err.Error(), "on FlowMetricTagValue.Hex")) + if *obj.obj.Local_2ByteAdmin > 65535 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("0 <= BgpExtendedCommunityTransitive4OctetAsTypeRouteTarget.Local_2ByteAdmin <= 65535 but Got %d", *obj.obj.Local_2ByteAdmin)) } } } -func (obj *flowMetricTagValue) setDefault() { - if obj.obj.Choice == nil { - obj.SetChoice(FlowMetricTagValueChoice.HEX) - +func (obj *bgpExtendedCommunityTransitive4OctetAsTypeRouteTarget) setDefault() { + if obj.obj.Global_4ByteAs == nil { + obj.SetGlobal4ByteAs(100) + } + if obj.obj.Local_2ByteAdmin == nil { + obj.SetLocal2ByteAdmin(1) } } -// ***** ResultBgpAsPathSegment ***** -type resultBgpAsPathSegment struct { +// ***** BgpExtendedCommunityTransitive4OctetAsTypeRouteOrigin ***** +type bgpExtendedCommunityTransitive4OctetAsTypeRouteOrigin struct { validation - obj *otg.ResultBgpAsPathSegment + obj *otg.BgpExtendedCommunityTransitive4OctetAsTypeRouteOrigin } -func NewResultBgpAsPathSegment() ResultBgpAsPathSegment { - obj := resultBgpAsPathSegment{obj: &otg.ResultBgpAsPathSegment{}} +func NewBgpExtendedCommunityTransitive4OctetAsTypeRouteOrigin() BgpExtendedCommunityTransitive4OctetAsTypeRouteOrigin { + obj := bgpExtendedCommunityTransitive4OctetAsTypeRouteOrigin{obj: &otg.BgpExtendedCommunityTransitive4OctetAsTypeRouteOrigin{}} obj.setDefault() return &obj } -func (obj *resultBgpAsPathSegment) Msg() *otg.ResultBgpAsPathSegment { +func (obj *bgpExtendedCommunityTransitive4OctetAsTypeRouteOrigin) Msg() *otg.BgpExtendedCommunityTransitive4OctetAsTypeRouteOrigin { return obj.obj } -func (obj *resultBgpAsPathSegment) SetMsg(msg *otg.ResultBgpAsPathSegment) ResultBgpAsPathSegment { +func (obj *bgpExtendedCommunityTransitive4OctetAsTypeRouteOrigin) SetMsg(msg *otg.BgpExtendedCommunityTransitive4OctetAsTypeRouteOrigin) BgpExtendedCommunityTransitive4OctetAsTypeRouteOrigin { proto.Merge(obj.obj, msg) return obj } -func (obj *resultBgpAsPathSegment) ToProto() (*otg.ResultBgpAsPathSegment, error) { +func (obj *bgpExtendedCommunityTransitive4OctetAsTypeRouteOrigin) ToProto() (*otg.BgpExtendedCommunityTransitive4OctetAsTypeRouteOrigin, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -273193,7 +319577,7 @@ func (obj *resultBgpAsPathSegment) ToProto() (*otg.ResultBgpAsPathSegment, error return obj.Msg(), nil } -func (obj *resultBgpAsPathSegment) FromProto(msg *otg.ResultBgpAsPathSegment) (ResultBgpAsPathSegment, error) { +func (obj *bgpExtendedCommunityTransitive4OctetAsTypeRouteOrigin) FromProto(msg *otg.BgpExtendedCommunityTransitive4OctetAsTypeRouteOrigin) (BgpExtendedCommunityTransitive4OctetAsTypeRouteOrigin, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -273202,7 +319586,7 @@ func (obj *resultBgpAsPathSegment) FromProto(msg *otg.ResultBgpAsPathSegment) (R return newObj, nil } -func (obj *resultBgpAsPathSegment) ToPbText() (string, error) { +func (obj *bgpExtendedCommunityTransitive4OctetAsTypeRouteOrigin) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -273214,7 +319598,7 @@ func (obj *resultBgpAsPathSegment) ToPbText() (string, error) { return string(protoMarshal), nil } -func (obj *resultBgpAsPathSegment) FromPbText(value string) error { +func (obj *bgpExtendedCommunityTransitive4OctetAsTypeRouteOrigin) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj @@ -273227,7 +319611,7 @@ func (obj *resultBgpAsPathSegment) FromPbText(value string) error { return retObj } -func (obj *resultBgpAsPathSegment) ToYaml() (string, error) { +func (obj *bgpExtendedCommunityTransitive4OctetAsTypeRouteOrigin) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -273248,7 +319632,7 @@ func (obj *resultBgpAsPathSegment) ToYaml() (string, error) { return string(data), nil } -func (obj *resultBgpAsPathSegment) FromYaml(value string) error { +func (obj *bgpExtendedCommunityTransitive4OctetAsTypeRouteOrigin) FromYaml(value string) error { if value == "" { value = "{}" } @@ -273273,7 +319657,7 @@ func (obj *resultBgpAsPathSegment) FromYaml(value string) error { return nil } -func (obj *resultBgpAsPathSegment) ToJson() (string, error) { +func (obj *bgpExtendedCommunityTransitive4OctetAsTypeRouteOrigin) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -273291,7 +319675,7 @@ func (obj *resultBgpAsPathSegment) ToJson() (string, error) { return string(data), nil } -func (obj *resultBgpAsPathSegment) FromJson(value string) error { +func (obj *bgpExtendedCommunityTransitive4OctetAsTypeRouteOrigin) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -273312,19 +319696,19 @@ func (obj *resultBgpAsPathSegment) FromJson(value string) error { return nil } -func (obj *resultBgpAsPathSegment) validateToAndFrom() error { +func (obj *bgpExtendedCommunityTransitive4OctetAsTypeRouteOrigin) validateToAndFrom() error { // emptyVars() obj.validateObj(&obj.validation, true) return obj.validationResult() } -func (obj *resultBgpAsPathSegment) Validate() error { +func (obj *bgpExtendedCommunityTransitive4OctetAsTypeRouteOrigin) Validate() error { // emptyVars() obj.validateObj(&obj.validation, false) return obj.validationResult() } -func (obj *resultBgpAsPathSegment) String() string { +func (obj *bgpExtendedCommunityTransitive4OctetAsTypeRouteOrigin) String() string { str, err := obj.ToYaml() if err != nil { return err.Error() @@ -273332,12 +319716,12 @@ func (obj *resultBgpAsPathSegment) String() string { return str } -func (obj *resultBgpAsPathSegment) Clone() (ResultBgpAsPathSegment, error) { +func (obj *bgpExtendedCommunityTransitive4OctetAsTypeRouteOrigin) Clone() (BgpExtendedCommunityTransitive4OctetAsTypeRouteOrigin, error) { vErr := obj.Validate() if vErr != nil { return nil, vErr } - newObj := NewResultBgpAsPathSegment() + newObj := NewBgpExtendedCommunityTransitive4OctetAsTypeRouteOrigin() data, err := proto.Marshal(obj.Msg()) if err != nil { return nil, err @@ -273349,146 +319733,148 @@ func (obj *resultBgpAsPathSegment) Clone() (ResultBgpAsPathSegment, error) { return newObj, nil } -// ResultBgpAsPathSegment is configuration for a single BGP AS path segment -type ResultBgpAsPathSegment interface { +// BgpExtendedCommunityTransitive4OctetAsTypeRouteOrigin is the Route Origin Community identifies one or more routers that inject a set of routes (that carry this Community) into BGP. It is sent with sub-type as 0x03. +type BgpExtendedCommunityTransitive4OctetAsTypeRouteOrigin interface { Validation - // Msg marshals ResultBgpAsPathSegment to protobuf object *otg.ResultBgpAsPathSegment + // Msg marshals BgpExtendedCommunityTransitive4OctetAsTypeRouteOrigin to protobuf object *otg.BgpExtendedCommunityTransitive4OctetAsTypeRouteOrigin // and doesn't set defaults - Msg() *otg.ResultBgpAsPathSegment - // SetMsg unmarshals ResultBgpAsPathSegment from protobuf object *otg.ResultBgpAsPathSegment + Msg() *otg.BgpExtendedCommunityTransitive4OctetAsTypeRouteOrigin + // SetMsg unmarshals BgpExtendedCommunityTransitive4OctetAsTypeRouteOrigin from protobuf object *otg.BgpExtendedCommunityTransitive4OctetAsTypeRouteOrigin // and doesn't set defaults - SetMsg(*otg.ResultBgpAsPathSegment) ResultBgpAsPathSegment - // ToProto marshals ResultBgpAsPathSegment to protobuf object *otg.ResultBgpAsPathSegment - ToProto() (*otg.ResultBgpAsPathSegment, error) - // ToPbText marshals ResultBgpAsPathSegment to protobuf text + SetMsg(*otg.BgpExtendedCommunityTransitive4OctetAsTypeRouteOrigin) BgpExtendedCommunityTransitive4OctetAsTypeRouteOrigin + // ToProto marshals BgpExtendedCommunityTransitive4OctetAsTypeRouteOrigin to protobuf object *otg.BgpExtendedCommunityTransitive4OctetAsTypeRouteOrigin + ToProto() (*otg.BgpExtendedCommunityTransitive4OctetAsTypeRouteOrigin, error) + // ToPbText marshals BgpExtendedCommunityTransitive4OctetAsTypeRouteOrigin to protobuf text ToPbText() (string, error) - // ToYaml marshals ResultBgpAsPathSegment to YAML text + // ToYaml marshals BgpExtendedCommunityTransitive4OctetAsTypeRouteOrigin to YAML text ToYaml() (string, error) - // ToJson marshals ResultBgpAsPathSegment to JSON text + // ToJson marshals BgpExtendedCommunityTransitive4OctetAsTypeRouteOrigin to JSON text ToJson() (string, error) - // FromProto unmarshals ResultBgpAsPathSegment from protobuf object *otg.ResultBgpAsPathSegment - FromProto(msg *otg.ResultBgpAsPathSegment) (ResultBgpAsPathSegment, error) - // FromPbText unmarshals ResultBgpAsPathSegment from protobuf text + // FromProto unmarshals BgpExtendedCommunityTransitive4OctetAsTypeRouteOrigin from protobuf object *otg.BgpExtendedCommunityTransitive4OctetAsTypeRouteOrigin + FromProto(msg *otg.BgpExtendedCommunityTransitive4OctetAsTypeRouteOrigin) (BgpExtendedCommunityTransitive4OctetAsTypeRouteOrigin, error) + // FromPbText unmarshals BgpExtendedCommunityTransitive4OctetAsTypeRouteOrigin from protobuf text FromPbText(value string) error - // FromYaml unmarshals ResultBgpAsPathSegment from YAML text + // FromYaml unmarshals BgpExtendedCommunityTransitive4OctetAsTypeRouteOrigin from YAML text FromYaml(value string) error - // FromJson unmarshals ResultBgpAsPathSegment from JSON text + // FromJson unmarshals BgpExtendedCommunityTransitive4OctetAsTypeRouteOrigin from JSON text FromJson(value string) error - // Validate validates ResultBgpAsPathSegment + // Validate validates BgpExtendedCommunityTransitive4OctetAsTypeRouteOrigin Validate() error // A stringer function String() string // Clones the object - Clone() (ResultBgpAsPathSegment, error) + Clone() (BgpExtendedCommunityTransitive4OctetAsTypeRouteOrigin, error) validateToAndFrom() error validateObj(vObj *validation, set_default bool) setDefault() - // Type returns ResultBgpAsPathSegmentTypeEnum, set in ResultBgpAsPathSegment - Type() ResultBgpAsPathSegmentTypeEnum - // SetType assigns ResultBgpAsPathSegmentTypeEnum provided by user to ResultBgpAsPathSegment - SetType(value ResultBgpAsPathSegmentTypeEnum) ResultBgpAsPathSegment - // HasType checks if Type has been set in ResultBgpAsPathSegment - HasType() bool - // AsNumbers returns []uint32, set in ResultBgpAsPathSegment. - AsNumbers() []uint32 - // SetAsNumbers assigns []uint32 provided by user to ResultBgpAsPathSegment - SetAsNumbers(value []uint32) ResultBgpAsPathSegment + // Global4ByteAs returns uint32, set in BgpExtendedCommunityTransitive4OctetAsTypeRouteOrigin. + Global4ByteAs() uint32 + // SetGlobal4ByteAs assigns uint32 provided by user to BgpExtendedCommunityTransitive4OctetAsTypeRouteOrigin + SetGlobal4ByteAs(value uint32) BgpExtendedCommunityTransitive4OctetAsTypeRouteOrigin + // HasGlobal4ByteAs checks if Global4ByteAs has been set in BgpExtendedCommunityTransitive4OctetAsTypeRouteOrigin + HasGlobal4ByteAs() bool + // Local2ByteAdmin returns uint32, set in BgpExtendedCommunityTransitive4OctetAsTypeRouteOrigin. + Local2ByteAdmin() uint32 + // SetLocal2ByteAdmin assigns uint32 provided by user to BgpExtendedCommunityTransitive4OctetAsTypeRouteOrigin + SetLocal2ByteAdmin(value uint32) BgpExtendedCommunityTransitive4OctetAsTypeRouteOrigin + // HasLocal2ByteAdmin checks if Local2ByteAdmin has been set in BgpExtendedCommunityTransitive4OctetAsTypeRouteOrigin + HasLocal2ByteAdmin() bool } -type ResultBgpAsPathSegmentTypeEnum string +// The four octet IANA assigned AS value assigned to the Autonomous System. +// Global4ByteAs returns a uint32 +func (obj *bgpExtendedCommunityTransitive4OctetAsTypeRouteOrigin) Global4ByteAs() uint32 { -// Enum of Type on ResultBgpAsPathSegment -var ResultBgpAsPathSegmentType = struct { - AS_SEQ ResultBgpAsPathSegmentTypeEnum - AS_SET ResultBgpAsPathSegmentTypeEnum - AS_CONFED_SEQ ResultBgpAsPathSegmentTypeEnum - AS_CONFED_SET ResultBgpAsPathSegmentTypeEnum -}{ - AS_SEQ: ResultBgpAsPathSegmentTypeEnum("as_seq"), - AS_SET: ResultBgpAsPathSegmentTypeEnum("as_set"), - AS_CONFED_SEQ: ResultBgpAsPathSegmentTypeEnum("as_confed_seq"), - AS_CONFED_SET: ResultBgpAsPathSegmentTypeEnum("as_confed_set"), -} + return *obj.obj.Global_4ByteAs -func (obj *resultBgpAsPathSegment) Type() ResultBgpAsPathSegmentTypeEnum { - return ResultBgpAsPathSegmentTypeEnum(obj.obj.Type.Enum().String()) } -// AS sequence is the most common type of AS_PATH, it contains the list of ASNs starting with the most recent ASN being added read from left to right. -// The other three AS_PATH types are used for Confederations - AS_SET is the type of AS_PATH attribute that summarizes routes using using the aggregate-address command, allowing AS_PATHs to be summarized in the update as well. - AS_CONFED_SEQ gives the list of ASNs in the path starting with the most recent ASN to be added reading left to right - AS_CONFED_SET will allow summarization of multiple AS PATHs to be sent in BGP Updates. -// Type returns a string -func (obj *resultBgpAsPathSegment) HasType() bool { - return obj.obj.Type != nil +// The four octet IANA assigned AS value assigned to the Autonomous System. +// Global4ByteAs returns a uint32 +func (obj *bgpExtendedCommunityTransitive4OctetAsTypeRouteOrigin) HasGlobal4ByteAs() bool { + return obj.obj.Global_4ByteAs != nil } -func (obj *resultBgpAsPathSegment) SetType(value ResultBgpAsPathSegmentTypeEnum) ResultBgpAsPathSegment { - intValue, ok := otg.ResultBgpAsPathSegment_Type_Enum_value[string(value)] - if !ok { - obj.validationErrors = append(obj.validationErrors, fmt.Sprintf( - "%s is not a valid choice on ResultBgpAsPathSegmentTypeEnum", string(value))) - return obj - } - enumValue := otg.ResultBgpAsPathSegment_Type_Enum(intValue) - obj.obj.Type = &enumValue +// The four octet IANA assigned AS value assigned to the Autonomous System. +// SetGlobal4ByteAs sets the uint32 value in the BgpExtendedCommunityTransitive4OctetAsTypeRouteOrigin object +func (obj *bgpExtendedCommunityTransitive4OctetAsTypeRouteOrigin) SetGlobal4ByteAs(value uint32) BgpExtendedCommunityTransitive4OctetAsTypeRouteOrigin { + obj.obj.Global_4ByteAs = &value return obj } -// The AS numbers in this AS path segment. -// AsNumbers returns a []uint32 -func (obj *resultBgpAsPathSegment) AsNumbers() []uint32 { - if obj.obj.AsNumbers == nil { - obj.obj.AsNumbers = make([]uint32, 0) - } - return obj.obj.AsNumbers +// The Local Administrator sub-field contains a number from a numbering space that is administered by the organization to which the Autonomous System number carried in the Global Administrator sub-field has been assigned by an appropriate authority. +// Local2ByteAdmin returns a uint32 +func (obj *bgpExtendedCommunityTransitive4OctetAsTypeRouteOrigin) Local2ByteAdmin() uint32 { + + return *obj.obj.Local_2ByteAdmin + } -// The AS numbers in this AS path segment. -// SetAsNumbers sets the []uint32 value in the ResultBgpAsPathSegment object -func (obj *resultBgpAsPathSegment) SetAsNumbers(value []uint32) ResultBgpAsPathSegment { +// The Local Administrator sub-field contains a number from a numbering space that is administered by the organization to which the Autonomous System number carried in the Global Administrator sub-field has been assigned by an appropriate authority. +// Local2ByteAdmin returns a uint32 +func (obj *bgpExtendedCommunityTransitive4OctetAsTypeRouteOrigin) HasLocal2ByteAdmin() bool { + return obj.obj.Local_2ByteAdmin != nil +} - if obj.obj.AsNumbers == nil { - obj.obj.AsNumbers = make([]uint32, 0) - } - obj.obj.AsNumbers = value +// The Local Administrator sub-field contains a number from a numbering space that is administered by the organization to which the Autonomous System number carried in the Global Administrator sub-field has been assigned by an appropriate authority. +// SetLocal2ByteAdmin sets the uint32 value in the BgpExtendedCommunityTransitive4OctetAsTypeRouteOrigin object +func (obj *bgpExtendedCommunityTransitive4OctetAsTypeRouteOrigin) SetLocal2ByteAdmin(value uint32) BgpExtendedCommunityTransitive4OctetAsTypeRouteOrigin { + obj.obj.Local_2ByteAdmin = &value return obj } -func (obj *resultBgpAsPathSegment) validateObj(vObj *validation, set_default bool) { +func (obj *bgpExtendedCommunityTransitive4OctetAsTypeRouteOrigin) validateObj(vObj *validation, set_default bool) { if set_default { obj.setDefault() } + if obj.obj.Local_2ByteAdmin != nil { + + if *obj.obj.Local_2ByteAdmin > 65535 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("0 <= BgpExtendedCommunityTransitive4OctetAsTypeRouteOrigin.Local_2ByteAdmin <= 65535 but Got %d", *obj.obj.Local_2ByteAdmin)) + } + + } + } -func (obj *resultBgpAsPathSegment) setDefault() { +func (obj *bgpExtendedCommunityTransitive4OctetAsTypeRouteOrigin) setDefault() { + if obj.obj.Global_4ByteAs == nil { + obj.SetGlobal4ByteAs(100) + } + if obj.obj.Local_2ByteAdmin == nil { + obj.SetLocal2ByteAdmin(1) + } } -// ***** IsisLspHostname ***** -type isisLspHostname struct { +// ***** BgpExtendedCommunityTransitiveOpaqueTypeColor ***** +type bgpExtendedCommunityTransitiveOpaqueTypeColor struct { validation - obj *otg.IsisLspHostname + obj *otg.BgpExtendedCommunityTransitiveOpaqueTypeColor } -func NewIsisLspHostname() IsisLspHostname { - obj := isisLspHostname{obj: &otg.IsisLspHostname{}} +func NewBgpExtendedCommunityTransitiveOpaqueTypeColor() BgpExtendedCommunityTransitiveOpaqueTypeColor { + obj := bgpExtendedCommunityTransitiveOpaqueTypeColor{obj: &otg.BgpExtendedCommunityTransitiveOpaqueTypeColor{}} obj.setDefault() return &obj } -func (obj *isisLspHostname) Msg() *otg.IsisLspHostname { +func (obj *bgpExtendedCommunityTransitiveOpaqueTypeColor) Msg() *otg.BgpExtendedCommunityTransitiveOpaqueTypeColor { return obj.obj } -func (obj *isisLspHostname) SetMsg(msg *otg.IsisLspHostname) IsisLspHostname { +func (obj *bgpExtendedCommunityTransitiveOpaqueTypeColor) SetMsg(msg *otg.BgpExtendedCommunityTransitiveOpaqueTypeColor) BgpExtendedCommunityTransitiveOpaqueTypeColor { proto.Merge(obj.obj, msg) return obj } -func (obj *isisLspHostname) ToProto() (*otg.IsisLspHostname, error) { +func (obj *bgpExtendedCommunityTransitiveOpaqueTypeColor) ToProto() (*otg.BgpExtendedCommunityTransitiveOpaqueTypeColor, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -273496,7 +319882,7 @@ func (obj *isisLspHostname) ToProto() (*otg.IsisLspHostname, error) { return obj.Msg(), nil } -func (obj *isisLspHostname) FromProto(msg *otg.IsisLspHostname) (IsisLspHostname, error) { +func (obj *bgpExtendedCommunityTransitiveOpaqueTypeColor) FromProto(msg *otg.BgpExtendedCommunityTransitiveOpaqueTypeColor) (BgpExtendedCommunityTransitiveOpaqueTypeColor, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -273505,7 +319891,7 @@ func (obj *isisLspHostname) FromProto(msg *otg.IsisLspHostname) (IsisLspHostname return newObj, nil } -func (obj *isisLspHostname) ToPbText() (string, error) { +func (obj *bgpExtendedCommunityTransitiveOpaqueTypeColor) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -273517,7 +319903,7 @@ func (obj *isisLspHostname) ToPbText() (string, error) { return string(protoMarshal), nil } -func (obj *isisLspHostname) FromPbText(value string) error { +func (obj *bgpExtendedCommunityTransitiveOpaqueTypeColor) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj @@ -273530,7 +319916,7 @@ func (obj *isisLspHostname) FromPbText(value string) error { return retObj } -func (obj *isisLspHostname) ToYaml() (string, error) { +func (obj *bgpExtendedCommunityTransitiveOpaqueTypeColor) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -273551,7 +319937,7 @@ func (obj *isisLspHostname) ToYaml() (string, error) { return string(data), nil } -func (obj *isisLspHostname) FromYaml(value string) error { +func (obj *bgpExtendedCommunityTransitiveOpaqueTypeColor) FromYaml(value string) error { if value == "" { value = "{}" } @@ -273576,7 +319962,7 @@ func (obj *isisLspHostname) FromYaml(value string) error { return nil } -func (obj *isisLspHostname) ToJson() (string, error) { +func (obj *bgpExtendedCommunityTransitiveOpaqueTypeColor) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -273594,7 +319980,7 @@ func (obj *isisLspHostname) ToJson() (string, error) { return string(data), nil } -func (obj *isisLspHostname) FromJson(value string) error { +func (obj *bgpExtendedCommunityTransitiveOpaqueTypeColor) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -273615,19 +320001,19 @@ func (obj *isisLspHostname) FromJson(value string) error { return nil } -func (obj *isisLspHostname) validateToAndFrom() error { +func (obj *bgpExtendedCommunityTransitiveOpaqueTypeColor) validateToAndFrom() error { // emptyVars() obj.validateObj(&obj.validation, true) return obj.validationResult() } -func (obj *isisLspHostname) Validate() error { +func (obj *bgpExtendedCommunityTransitiveOpaqueTypeColor) Validate() error { // emptyVars() obj.validateObj(&obj.validation, false) return obj.validationResult() } -func (obj *isisLspHostname) String() string { +func (obj *bgpExtendedCommunityTransitiveOpaqueTypeColor) String() string { str, err := obj.ToYaml() if err != nil { return err.Error() @@ -273635,12 +320021,12 @@ func (obj *isisLspHostname) String() string { return str } -func (obj *isisLspHostname) Clone() (IsisLspHostname, error) { +func (obj *bgpExtendedCommunityTransitiveOpaqueTypeColor) Clone() (BgpExtendedCommunityTransitiveOpaqueTypeColor, error) { vErr := obj.Validate() if vErr != nil { return nil, vErr } - newObj := NewIsisLspHostname() + newObj := NewBgpExtendedCommunityTransitiveOpaqueTypeColor() data, err := proto.Marshal(obj.Msg()) if err != nil { return nil, err @@ -273652,105 +320038,148 @@ func (obj *isisLspHostname) Clone() (IsisLspHostname, error) { return newObj, nil } -// IsisLspHostname is it contains Hostname for the TLV 137. -type IsisLspHostname interface { +// BgpExtendedCommunityTransitiveOpaqueTypeColor is the Color Community contains locally administrator defined 'color' value which is used in conjunction with Encapsulation attribute to decide whether a data packet can be transmitted on a certain tunnel or not. It is defined in RFC9012 and sent with sub-type as 0x0b. +type BgpExtendedCommunityTransitiveOpaqueTypeColor interface { Validation - // Msg marshals IsisLspHostname to protobuf object *otg.IsisLspHostname + // Msg marshals BgpExtendedCommunityTransitiveOpaqueTypeColor to protobuf object *otg.BgpExtendedCommunityTransitiveOpaqueTypeColor // and doesn't set defaults - Msg() *otg.IsisLspHostname - // SetMsg unmarshals IsisLspHostname from protobuf object *otg.IsisLspHostname + Msg() *otg.BgpExtendedCommunityTransitiveOpaqueTypeColor + // SetMsg unmarshals BgpExtendedCommunityTransitiveOpaqueTypeColor from protobuf object *otg.BgpExtendedCommunityTransitiveOpaqueTypeColor // and doesn't set defaults - SetMsg(*otg.IsisLspHostname) IsisLspHostname - // ToProto marshals IsisLspHostname to protobuf object *otg.IsisLspHostname - ToProto() (*otg.IsisLspHostname, error) - // ToPbText marshals IsisLspHostname to protobuf text + SetMsg(*otg.BgpExtendedCommunityTransitiveOpaqueTypeColor) BgpExtendedCommunityTransitiveOpaqueTypeColor + // ToProto marshals BgpExtendedCommunityTransitiveOpaqueTypeColor to protobuf object *otg.BgpExtendedCommunityTransitiveOpaqueTypeColor + ToProto() (*otg.BgpExtendedCommunityTransitiveOpaqueTypeColor, error) + // ToPbText marshals BgpExtendedCommunityTransitiveOpaqueTypeColor to protobuf text ToPbText() (string, error) - // ToYaml marshals IsisLspHostname to YAML text + // ToYaml marshals BgpExtendedCommunityTransitiveOpaqueTypeColor to YAML text ToYaml() (string, error) - // ToJson marshals IsisLspHostname to JSON text + // ToJson marshals BgpExtendedCommunityTransitiveOpaqueTypeColor to JSON text ToJson() (string, error) - // FromProto unmarshals IsisLspHostname from protobuf object *otg.IsisLspHostname - FromProto(msg *otg.IsisLspHostname) (IsisLspHostname, error) - // FromPbText unmarshals IsisLspHostname from protobuf text + // FromProto unmarshals BgpExtendedCommunityTransitiveOpaqueTypeColor from protobuf object *otg.BgpExtendedCommunityTransitiveOpaqueTypeColor + FromProto(msg *otg.BgpExtendedCommunityTransitiveOpaqueTypeColor) (BgpExtendedCommunityTransitiveOpaqueTypeColor, error) + // FromPbText unmarshals BgpExtendedCommunityTransitiveOpaqueTypeColor from protobuf text FromPbText(value string) error - // FromYaml unmarshals IsisLspHostname from YAML text + // FromYaml unmarshals BgpExtendedCommunityTransitiveOpaqueTypeColor from YAML text FromYaml(value string) error - // FromJson unmarshals IsisLspHostname from JSON text + // FromJson unmarshals BgpExtendedCommunityTransitiveOpaqueTypeColor from JSON text FromJson(value string) error - // Validate validates IsisLspHostname + // Validate validates BgpExtendedCommunityTransitiveOpaqueTypeColor Validate() error // A stringer function String() string // Clones the object - Clone() (IsisLspHostname, error) + Clone() (BgpExtendedCommunityTransitiveOpaqueTypeColor, error) validateToAndFrom() error validateObj(vObj *validation, set_default bool) setDefault() - // Hostname returns string, set in IsisLspHostname. - Hostname() string - // SetHostname assigns string provided by user to IsisLspHostname - SetHostname(value string) IsisLspHostname - // HasHostname checks if Hostname has been set in IsisLspHostname - HasHostname() bool + // Flags returns uint32, set in BgpExtendedCommunityTransitiveOpaqueTypeColor. + Flags() uint32 + // SetFlags assigns uint32 provided by user to BgpExtendedCommunityTransitiveOpaqueTypeColor + SetFlags(value uint32) BgpExtendedCommunityTransitiveOpaqueTypeColor + // HasFlags checks if Flags has been set in BgpExtendedCommunityTransitiveOpaqueTypeColor + HasFlags() bool + // Color returns uint32, set in BgpExtendedCommunityTransitiveOpaqueTypeColor. + Color() uint32 + // SetColor assigns uint32 provided by user to BgpExtendedCommunityTransitiveOpaqueTypeColor + SetColor(value uint32) BgpExtendedCommunityTransitiveOpaqueTypeColor + // HasColor checks if Color has been set in BgpExtendedCommunityTransitiveOpaqueTypeColor + HasColor() bool } -// Hostname for an ISIS router. -// Hostname returns a string -func (obj *isisLspHostname) Hostname() string { +// Two octet flag values. +// Flags returns a uint32 +func (obj *bgpExtendedCommunityTransitiveOpaqueTypeColor) Flags() uint32 { - return *obj.obj.Hostname + return *obj.obj.Flags } -// Hostname for an ISIS router. -// Hostname returns a string -func (obj *isisLspHostname) HasHostname() bool { - return obj.obj.Hostname != nil +// Two octet flag values. +// Flags returns a uint32 +func (obj *bgpExtendedCommunityTransitiveOpaqueTypeColor) HasFlags() bool { + return obj.obj.Flags != nil } -// Hostname for an ISIS router. -// SetHostname sets the string value in the IsisLspHostname object -func (obj *isisLspHostname) SetHostname(value string) IsisLspHostname { +// Two octet flag values. +// SetFlags sets the uint32 value in the BgpExtendedCommunityTransitiveOpaqueTypeColor object +func (obj *bgpExtendedCommunityTransitiveOpaqueTypeColor) SetFlags(value uint32) BgpExtendedCommunityTransitiveOpaqueTypeColor { - obj.obj.Hostname = &value + obj.obj.Flags = &value return obj } -func (obj *isisLspHostname) validateObj(vObj *validation, set_default bool) { +// The color value is user defined and configured locally and used to determine whether a data packet can be transmitted on a certain tunnel or not in conjunction with the Encapsulation attribute. It is defined in RFC9012. +// Color returns a uint32 +func (obj *bgpExtendedCommunityTransitiveOpaqueTypeColor) Color() uint32 { + + return *obj.obj.Color + +} + +// The color value is user defined and configured locally and used to determine whether a data packet can be transmitted on a certain tunnel or not in conjunction with the Encapsulation attribute. It is defined in RFC9012. +// Color returns a uint32 +func (obj *bgpExtendedCommunityTransitiveOpaqueTypeColor) HasColor() bool { + return obj.obj.Color != nil +} + +// The color value is user defined and configured locally and used to determine whether a data packet can be transmitted on a certain tunnel or not in conjunction with the Encapsulation attribute. It is defined in RFC9012. +// SetColor sets the uint32 value in the BgpExtendedCommunityTransitiveOpaqueTypeColor object +func (obj *bgpExtendedCommunityTransitiveOpaqueTypeColor) SetColor(value uint32) BgpExtendedCommunityTransitiveOpaqueTypeColor { + + obj.obj.Color = &value + return obj +} + +func (obj *bgpExtendedCommunityTransitiveOpaqueTypeColor) validateObj(vObj *validation, set_default bool) { if set_default { obj.setDefault() } + if obj.obj.Flags != nil { + + if *obj.obj.Flags > 65535 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("0 <= BgpExtendedCommunityTransitiveOpaqueTypeColor.Flags <= 65535 but Got %d", *obj.obj.Flags)) + } + + } + } -func (obj *isisLspHostname) setDefault() { +func (obj *bgpExtendedCommunityTransitiveOpaqueTypeColor) setDefault() { + if obj.obj.Flags == nil { + obj.SetFlags(0) + } + if obj.obj.Color == nil { + obj.SetColor(0) + } } -// ***** IsisLspIsReachabilityTlv ***** -type isisLspIsReachabilityTlv struct { +// ***** BgpExtendedCommunityTransitiveOpaqueTypeEncapsulation ***** +type bgpExtendedCommunityTransitiveOpaqueTypeEncapsulation struct { validation - obj *otg.IsisLspIsReachabilityTlv - neighborsHolder IsisLspIsReachabilityTlvIsisLspneighborIter + obj *otg.BgpExtendedCommunityTransitiveOpaqueTypeEncapsulation } -func NewIsisLspIsReachabilityTlv() IsisLspIsReachabilityTlv { - obj := isisLspIsReachabilityTlv{obj: &otg.IsisLspIsReachabilityTlv{}} +func NewBgpExtendedCommunityTransitiveOpaqueTypeEncapsulation() BgpExtendedCommunityTransitiveOpaqueTypeEncapsulation { + obj := bgpExtendedCommunityTransitiveOpaqueTypeEncapsulation{obj: &otg.BgpExtendedCommunityTransitiveOpaqueTypeEncapsulation{}} obj.setDefault() return &obj } -func (obj *isisLspIsReachabilityTlv) Msg() *otg.IsisLspIsReachabilityTlv { +func (obj *bgpExtendedCommunityTransitiveOpaqueTypeEncapsulation) Msg() *otg.BgpExtendedCommunityTransitiveOpaqueTypeEncapsulation { return obj.obj } -func (obj *isisLspIsReachabilityTlv) SetMsg(msg *otg.IsisLspIsReachabilityTlv) IsisLspIsReachabilityTlv { - obj.setNil() +func (obj *bgpExtendedCommunityTransitiveOpaqueTypeEncapsulation) SetMsg(msg *otg.BgpExtendedCommunityTransitiveOpaqueTypeEncapsulation) BgpExtendedCommunityTransitiveOpaqueTypeEncapsulation { + proto.Merge(obj.obj, msg) return obj } -func (obj *isisLspIsReachabilityTlv) ToProto() (*otg.IsisLspIsReachabilityTlv, error) { +func (obj *bgpExtendedCommunityTransitiveOpaqueTypeEncapsulation) ToProto() (*otg.BgpExtendedCommunityTransitiveOpaqueTypeEncapsulation, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -273758,7 +320187,7 @@ func (obj *isisLspIsReachabilityTlv) ToProto() (*otg.IsisLspIsReachabilityTlv, e return obj.Msg(), nil } -func (obj *isisLspIsReachabilityTlv) FromProto(msg *otg.IsisLspIsReachabilityTlv) (IsisLspIsReachabilityTlv, error) { +func (obj *bgpExtendedCommunityTransitiveOpaqueTypeEncapsulation) FromProto(msg *otg.BgpExtendedCommunityTransitiveOpaqueTypeEncapsulation) (BgpExtendedCommunityTransitiveOpaqueTypeEncapsulation, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -273767,7 +320196,7 @@ func (obj *isisLspIsReachabilityTlv) FromProto(msg *otg.IsisLspIsReachabilityTlv return newObj, nil } -func (obj *isisLspIsReachabilityTlv) ToPbText() (string, error) { +func (obj *bgpExtendedCommunityTransitiveOpaqueTypeEncapsulation) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -273779,12 +320208,12 @@ func (obj *isisLspIsReachabilityTlv) ToPbText() (string, error) { return string(protoMarshal), nil } -func (obj *isisLspIsReachabilityTlv) FromPbText(value string) error { +func (obj *bgpExtendedCommunityTransitiveOpaqueTypeEncapsulation) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj } - obj.setNil() + vErr := obj.validateToAndFrom() if vErr != nil { return vErr @@ -273792,7 +320221,7 @@ func (obj *isisLspIsReachabilityTlv) FromPbText(value string) error { return retObj } -func (obj *isisLspIsReachabilityTlv) ToYaml() (string, error) { +func (obj *bgpExtendedCommunityTransitiveOpaqueTypeEncapsulation) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -273813,7 +320242,7 @@ func (obj *isisLspIsReachabilityTlv) ToYaml() (string, error) { return string(data), nil } -func (obj *isisLspIsReachabilityTlv) FromYaml(value string) error { +func (obj *bgpExtendedCommunityTransitiveOpaqueTypeEncapsulation) FromYaml(value string) error { if value == "" { value = "{}" } @@ -273830,7 +320259,7 @@ func (obj *isisLspIsReachabilityTlv) FromYaml(value string) error { return fmt.Errorf("unmarshal error %s", strings.Replace( uError.Error(), "\u00a0", " ", -1)[7:]) } - obj.setNil() + vErr := obj.validateToAndFrom() if vErr != nil { return vErr @@ -273838,7 +320267,7 @@ func (obj *isisLspIsReachabilityTlv) FromYaml(value string) error { return nil } -func (obj *isisLspIsReachabilityTlv) ToJson() (string, error) { +func (obj *bgpExtendedCommunityTransitiveOpaqueTypeEncapsulation) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -273856,7 +320285,7 @@ func (obj *isisLspIsReachabilityTlv) ToJson() (string, error) { return string(data), nil } -func (obj *isisLspIsReachabilityTlv) FromJson(value string) error { +func (obj *bgpExtendedCommunityTransitiveOpaqueTypeEncapsulation) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -273869,7 +320298,7 @@ func (obj *isisLspIsReachabilityTlv) FromJson(value string) error { return fmt.Errorf("unmarshal error %s", strings.Replace( uError.Error(), "\u00a0", " ", -1)[7:]) } - obj.setNil() + err := obj.validateToAndFrom() if err != nil { return err @@ -273877,19 +320306,19 @@ func (obj *isisLspIsReachabilityTlv) FromJson(value string) error { return nil } -func (obj *isisLspIsReachabilityTlv) validateToAndFrom() error { +func (obj *bgpExtendedCommunityTransitiveOpaqueTypeEncapsulation) validateToAndFrom() error { // emptyVars() obj.validateObj(&obj.validation, true) return obj.validationResult() } -func (obj *isisLspIsReachabilityTlv) Validate() error { +func (obj *bgpExtendedCommunityTransitiveOpaqueTypeEncapsulation) Validate() error { // emptyVars() obj.validateObj(&obj.validation, false) return obj.validationResult() } -func (obj *isisLspIsReachabilityTlv) String() string { +func (obj *bgpExtendedCommunityTransitiveOpaqueTypeEncapsulation) String() string { str, err := obj.ToYaml() if err != nil { return err.Error() @@ -273897,12 +320326,12 @@ func (obj *isisLspIsReachabilityTlv) String() string { return str } -func (obj *isisLspIsReachabilityTlv) Clone() (IsisLspIsReachabilityTlv, error) { +func (obj *bgpExtendedCommunityTransitiveOpaqueTypeEncapsulation) Clone() (BgpExtendedCommunityTransitiveOpaqueTypeEncapsulation, error) { vErr := obj.Validate() if vErr != nil { return nil, vErr } - newObj := NewIsisLspIsReachabilityTlv() + newObj := NewBgpExtendedCommunityTransitiveOpaqueTypeEncapsulation() data, err := proto.Marshal(obj.Msg()) if err != nil { return nil, err @@ -273914,188 +320343,169 @@ func (obj *isisLspIsReachabilityTlv) Clone() (IsisLspIsReachabilityTlv, error) { return newObj, nil } -func (obj *isisLspIsReachabilityTlv) setNil() { - obj.neighborsHolder = nil - obj.validationErrors = nil - obj.warnings = nil - obj.constraints = make(map[string]map[string]Constraints) -} - -// IsisLspIsReachabilityTlv is this container describes list of ISIS neighbors and attributes in IS-Reachability TLV (type 2). -type IsisLspIsReachabilityTlv interface { +// BgpExtendedCommunityTransitiveOpaqueTypeEncapsulation is this identifies the type of tunneling technology being signalled. It is defined in RFC9012 and sent with sub-type as 0x0c. +type BgpExtendedCommunityTransitiveOpaqueTypeEncapsulation interface { Validation - // Msg marshals IsisLspIsReachabilityTlv to protobuf object *otg.IsisLspIsReachabilityTlv + // Msg marshals BgpExtendedCommunityTransitiveOpaqueTypeEncapsulation to protobuf object *otg.BgpExtendedCommunityTransitiveOpaqueTypeEncapsulation // and doesn't set defaults - Msg() *otg.IsisLspIsReachabilityTlv - // SetMsg unmarshals IsisLspIsReachabilityTlv from protobuf object *otg.IsisLspIsReachabilityTlv + Msg() *otg.BgpExtendedCommunityTransitiveOpaqueTypeEncapsulation + // SetMsg unmarshals BgpExtendedCommunityTransitiveOpaqueTypeEncapsulation from protobuf object *otg.BgpExtendedCommunityTransitiveOpaqueTypeEncapsulation // and doesn't set defaults - SetMsg(*otg.IsisLspIsReachabilityTlv) IsisLspIsReachabilityTlv - // ToProto marshals IsisLspIsReachabilityTlv to protobuf object *otg.IsisLspIsReachabilityTlv - ToProto() (*otg.IsisLspIsReachabilityTlv, error) - // ToPbText marshals IsisLspIsReachabilityTlv to protobuf text + SetMsg(*otg.BgpExtendedCommunityTransitiveOpaqueTypeEncapsulation) BgpExtendedCommunityTransitiveOpaqueTypeEncapsulation + // ToProto marshals BgpExtendedCommunityTransitiveOpaqueTypeEncapsulation to protobuf object *otg.BgpExtendedCommunityTransitiveOpaqueTypeEncapsulation + ToProto() (*otg.BgpExtendedCommunityTransitiveOpaqueTypeEncapsulation, error) + // ToPbText marshals BgpExtendedCommunityTransitiveOpaqueTypeEncapsulation to protobuf text ToPbText() (string, error) - // ToYaml marshals IsisLspIsReachabilityTlv to YAML text + // ToYaml marshals BgpExtendedCommunityTransitiveOpaqueTypeEncapsulation to YAML text ToYaml() (string, error) - // ToJson marshals IsisLspIsReachabilityTlv to JSON text + // ToJson marshals BgpExtendedCommunityTransitiveOpaqueTypeEncapsulation to JSON text ToJson() (string, error) - // FromProto unmarshals IsisLspIsReachabilityTlv from protobuf object *otg.IsisLspIsReachabilityTlv - FromProto(msg *otg.IsisLspIsReachabilityTlv) (IsisLspIsReachabilityTlv, error) - // FromPbText unmarshals IsisLspIsReachabilityTlv from protobuf text + // FromProto unmarshals BgpExtendedCommunityTransitiveOpaqueTypeEncapsulation from protobuf object *otg.BgpExtendedCommunityTransitiveOpaqueTypeEncapsulation + FromProto(msg *otg.BgpExtendedCommunityTransitiveOpaqueTypeEncapsulation) (BgpExtendedCommunityTransitiveOpaqueTypeEncapsulation, error) + // FromPbText unmarshals BgpExtendedCommunityTransitiveOpaqueTypeEncapsulation from protobuf text FromPbText(value string) error - // FromYaml unmarshals IsisLspIsReachabilityTlv from YAML text + // FromYaml unmarshals BgpExtendedCommunityTransitiveOpaqueTypeEncapsulation from YAML text FromYaml(value string) error - // FromJson unmarshals IsisLspIsReachabilityTlv from JSON text + // FromJson unmarshals BgpExtendedCommunityTransitiveOpaqueTypeEncapsulation from JSON text FromJson(value string) error - // Validate validates IsisLspIsReachabilityTlv + // Validate validates BgpExtendedCommunityTransitiveOpaqueTypeEncapsulation Validate() error // A stringer function String() string // Clones the object - Clone() (IsisLspIsReachabilityTlv, error) + Clone() (BgpExtendedCommunityTransitiveOpaqueTypeEncapsulation, error) validateToAndFrom() error validateObj(vObj *validation, set_default bool) setDefault() - // Neighbors returns IsisLspIsReachabilityTlvIsisLspneighborIterIter, set in IsisLspIsReachabilityTlv - Neighbors() IsisLspIsReachabilityTlvIsisLspneighborIter - setNil() + // Reserved returns uint32, set in BgpExtendedCommunityTransitiveOpaqueTypeEncapsulation. + Reserved() uint32 + // SetReserved assigns uint32 provided by user to BgpExtendedCommunityTransitiveOpaqueTypeEncapsulation + SetReserved(value uint32) BgpExtendedCommunityTransitiveOpaqueTypeEncapsulation + // HasReserved checks if Reserved has been set in BgpExtendedCommunityTransitiveOpaqueTypeEncapsulation + HasReserved() bool + // TunnelType returns uint32, set in BgpExtendedCommunityTransitiveOpaqueTypeEncapsulation. + TunnelType() uint32 + // SetTunnelType assigns uint32 provided by user to BgpExtendedCommunityTransitiveOpaqueTypeEncapsulation + SetTunnelType(value uint32) BgpExtendedCommunityTransitiveOpaqueTypeEncapsulation + // HasTunnelType checks if TunnelType has been set in BgpExtendedCommunityTransitiveOpaqueTypeEncapsulation + HasTunnelType() bool } -// This container describes Intermediate System (IS) neighbors. -// Neighbors returns a []IsisLspneighbor -func (obj *isisLspIsReachabilityTlv) Neighbors() IsisLspIsReachabilityTlvIsisLspneighborIter { - if len(obj.obj.Neighbors) == 0 { - obj.obj.Neighbors = []*otg.IsisLspneighbor{} - } - if obj.neighborsHolder == nil { - obj.neighborsHolder = newIsisLspIsReachabilityTlvIsisLspneighborIter(&obj.obj.Neighbors).setMsg(obj) - } - return obj.neighborsHolder -} +// Four bytes of reserved values. Normally set to 0 on transmit and ignored on receive. +// Reserved returns a uint32 +func (obj *bgpExtendedCommunityTransitiveOpaqueTypeEncapsulation) Reserved() uint32 { -type isisLspIsReachabilityTlvIsisLspneighborIter struct { - obj *isisLspIsReachabilityTlv - isisLspneighborSlice []IsisLspneighbor - fieldPtr *[]*otg.IsisLspneighbor -} + return *obj.obj.Reserved -func newIsisLspIsReachabilityTlvIsisLspneighborIter(ptr *[]*otg.IsisLspneighbor) IsisLspIsReachabilityTlvIsisLspneighborIter { - return &isisLspIsReachabilityTlvIsisLspneighborIter{fieldPtr: ptr} } -type IsisLspIsReachabilityTlvIsisLspneighborIter interface { - setMsg(*isisLspIsReachabilityTlv) IsisLspIsReachabilityTlvIsisLspneighborIter - Items() []IsisLspneighbor - Add() IsisLspneighbor - Append(items ...IsisLspneighbor) IsisLspIsReachabilityTlvIsisLspneighborIter - Set(index int, newObj IsisLspneighbor) IsisLspIsReachabilityTlvIsisLspneighborIter - Clear() IsisLspIsReachabilityTlvIsisLspneighborIter - clearHolderSlice() IsisLspIsReachabilityTlvIsisLspneighborIter - appendHolderSlice(item IsisLspneighbor) IsisLspIsReachabilityTlvIsisLspneighborIter +// Four bytes of reserved values. Normally set to 0 on transmit and ignored on receive. +// Reserved returns a uint32 +func (obj *bgpExtendedCommunityTransitiveOpaqueTypeEncapsulation) HasReserved() bool { + return obj.obj.Reserved != nil } -func (obj *isisLspIsReachabilityTlvIsisLspneighborIter) setMsg(msg *isisLspIsReachabilityTlv) IsisLspIsReachabilityTlvIsisLspneighborIter { - obj.clearHolderSlice() - for _, val := range *obj.fieldPtr { - obj.appendHolderSlice(&isisLspneighbor{obj: val}) - } - obj.obj = msg +// Four bytes of reserved values. Normally set to 0 on transmit and ignored on receive. +// SetReserved sets the uint32 value in the BgpExtendedCommunityTransitiveOpaqueTypeEncapsulation object +func (obj *bgpExtendedCommunityTransitiveOpaqueTypeEncapsulation) SetReserved(value uint32) BgpExtendedCommunityTransitiveOpaqueTypeEncapsulation { + + obj.obj.Reserved = &value return obj } -func (obj *isisLspIsReachabilityTlvIsisLspneighborIter) Items() []IsisLspneighbor { - return obj.isisLspneighborSlice -} +// Identifies the type of tunneling technology being signalled. Initially defined in RFC5512 and extended in RFC9012. Some of the important tunnel types include 1 L2TPv3 over IP [RFC9012], +// 2 GRE [RFC9012] +// 7 IP in IP [RFC9012] +// 8 VXLAN Encapsulation [RFC8365] +// 9 NVGRE Encapsulation [RFC8365] +// 10 MPLS Encapsulation [RFC8365] +// 15 SR TE Policy Type [draft-ietf-idr-segment-routing-te-policy] +// 19 Geneve Encapsulation [RFC8926] +// TunnelType returns a uint32 +func (obj *bgpExtendedCommunityTransitiveOpaqueTypeEncapsulation) TunnelType() uint32 { -func (obj *isisLspIsReachabilityTlvIsisLspneighborIter) Add() IsisLspneighbor { - newObj := &otg.IsisLspneighbor{} - *obj.fieldPtr = append(*obj.fieldPtr, newObj) - newLibObj := &isisLspneighbor{obj: newObj} - newLibObj.setDefault() - obj.isisLspneighborSlice = append(obj.isisLspneighborSlice, newLibObj) - return newLibObj -} + return *obj.obj.TunnelType -func (obj *isisLspIsReachabilityTlvIsisLspneighborIter) Append(items ...IsisLspneighbor) IsisLspIsReachabilityTlvIsisLspneighborIter { - for _, item := range items { - newObj := item.Msg() - *obj.fieldPtr = append(*obj.fieldPtr, newObj) - obj.isisLspneighborSlice = append(obj.isisLspneighborSlice, item) - } - return obj } -func (obj *isisLspIsReachabilityTlvIsisLspneighborIter) Set(index int, newObj IsisLspneighbor) IsisLspIsReachabilityTlvIsisLspneighborIter { - (*obj.fieldPtr)[index] = newObj.Msg() - obj.isisLspneighborSlice[index] = newObj - return obj -} -func (obj *isisLspIsReachabilityTlvIsisLspneighborIter) Clear() IsisLspIsReachabilityTlvIsisLspneighborIter { - if len(*obj.fieldPtr) > 0 { - *obj.fieldPtr = []*otg.IsisLspneighbor{} - obj.isisLspneighborSlice = []IsisLspneighbor{} - } - return obj -} -func (obj *isisLspIsReachabilityTlvIsisLspneighborIter) clearHolderSlice() IsisLspIsReachabilityTlvIsisLspneighborIter { - if len(obj.isisLspneighborSlice) > 0 { - obj.isisLspneighborSlice = []IsisLspneighbor{} - } - return obj +// Identifies the type of tunneling technology being signalled. Initially defined in RFC5512 and extended in RFC9012. Some of the important tunnel types include 1 L2TPv3 over IP [RFC9012], +// 2 GRE [RFC9012] +// 7 IP in IP [RFC9012] +// 8 VXLAN Encapsulation [RFC8365] +// 9 NVGRE Encapsulation [RFC8365] +// 10 MPLS Encapsulation [RFC8365] +// 15 SR TE Policy Type [draft-ietf-idr-segment-routing-te-policy] +// 19 Geneve Encapsulation [RFC8926] +// TunnelType returns a uint32 +func (obj *bgpExtendedCommunityTransitiveOpaqueTypeEncapsulation) HasTunnelType() bool { + return obj.obj.TunnelType != nil } -func (obj *isisLspIsReachabilityTlvIsisLspneighborIter) appendHolderSlice(item IsisLspneighbor) IsisLspIsReachabilityTlvIsisLspneighborIter { - obj.isisLspneighborSlice = append(obj.isisLspneighborSlice, item) + +// Identifies the type of tunneling technology being signalled. Initially defined in RFC5512 and extended in RFC9012. Some of the important tunnel types include 1 L2TPv3 over IP [RFC9012], +// 2 GRE [RFC9012] +// 7 IP in IP [RFC9012] +// 8 VXLAN Encapsulation [RFC8365] +// 9 NVGRE Encapsulation [RFC8365] +// 10 MPLS Encapsulation [RFC8365] +// 15 SR TE Policy Type [draft-ietf-idr-segment-routing-te-policy] +// 19 Geneve Encapsulation [RFC8926] +// SetTunnelType sets the uint32 value in the BgpExtendedCommunityTransitiveOpaqueTypeEncapsulation object +func (obj *bgpExtendedCommunityTransitiveOpaqueTypeEncapsulation) SetTunnelType(value uint32) BgpExtendedCommunityTransitiveOpaqueTypeEncapsulation { + + obj.obj.TunnelType = &value return obj } -func (obj *isisLspIsReachabilityTlv) validateObj(vObj *validation, set_default bool) { +func (obj *bgpExtendedCommunityTransitiveOpaqueTypeEncapsulation) validateObj(vObj *validation, set_default bool) { if set_default { obj.setDefault() } - if len(obj.obj.Neighbors) != 0 { + if obj.obj.TunnelType != nil { - if set_default { - obj.Neighbors().clearHolderSlice() - for _, item := range obj.obj.Neighbors { - obj.Neighbors().appendHolderSlice(&isisLspneighbor{obj: item}) - } - } - for _, item := range obj.Neighbors().Items() { - item.validateObj(vObj, set_default) + if *obj.obj.TunnelType > 65535 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("0 <= BgpExtendedCommunityTransitiveOpaqueTypeEncapsulation.TunnelType <= 65535 but Got %d", *obj.obj.TunnelType)) } } } -func (obj *isisLspIsReachabilityTlv) setDefault() { +func (obj *bgpExtendedCommunityTransitiveOpaqueTypeEncapsulation) setDefault() { + if obj.obj.Reserved == nil { + obj.SetReserved(0) + } + if obj.obj.TunnelType == nil { + obj.SetTunnelType(1) + } } -// ***** IsisLspExtendedIsReachabilityTlv ***** -type isisLspExtendedIsReachabilityTlv struct { +// ***** BgpExtendedCommunityTransitiveEvpnTypeRouterMac ***** +type bgpExtendedCommunityTransitiveEvpnTypeRouterMac struct { validation - obj *otg.IsisLspExtendedIsReachabilityTlv - neighborsHolder IsisLspExtendedIsReachabilityTlvIsisLspneighborIter + obj *otg.BgpExtendedCommunityTransitiveEvpnTypeRouterMac } -func NewIsisLspExtendedIsReachabilityTlv() IsisLspExtendedIsReachabilityTlv { - obj := isisLspExtendedIsReachabilityTlv{obj: &otg.IsisLspExtendedIsReachabilityTlv{}} +func NewBgpExtendedCommunityTransitiveEvpnTypeRouterMac() BgpExtendedCommunityTransitiveEvpnTypeRouterMac { + obj := bgpExtendedCommunityTransitiveEvpnTypeRouterMac{obj: &otg.BgpExtendedCommunityTransitiveEvpnTypeRouterMac{}} obj.setDefault() return &obj } -func (obj *isisLspExtendedIsReachabilityTlv) Msg() *otg.IsisLspExtendedIsReachabilityTlv { +func (obj *bgpExtendedCommunityTransitiveEvpnTypeRouterMac) Msg() *otg.BgpExtendedCommunityTransitiveEvpnTypeRouterMac { return obj.obj } -func (obj *isisLspExtendedIsReachabilityTlv) SetMsg(msg *otg.IsisLspExtendedIsReachabilityTlv) IsisLspExtendedIsReachabilityTlv { - obj.setNil() +func (obj *bgpExtendedCommunityTransitiveEvpnTypeRouterMac) SetMsg(msg *otg.BgpExtendedCommunityTransitiveEvpnTypeRouterMac) BgpExtendedCommunityTransitiveEvpnTypeRouterMac { + proto.Merge(obj.obj, msg) return obj } -func (obj *isisLspExtendedIsReachabilityTlv) ToProto() (*otg.IsisLspExtendedIsReachabilityTlv, error) { +func (obj *bgpExtendedCommunityTransitiveEvpnTypeRouterMac) ToProto() (*otg.BgpExtendedCommunityTransitiveEvpnTypeRouterMac, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -274103,7 +320513,7 @@ func (obj *isisLspExtendedIsReachabilityTlv) ToProto() (*otg.IsisLspExtendedIsRe return obj.Msg(), nil } -func (obj *isisLspExtendedIsReachabilityTlv) FromProto(msg *otg.IsisLspExtendedIsReachabilityTlv) (IsisLspExtendedIsReachabilityTlv, error) { +func (obj *bgpExtendedCommunityTransitiveEvpnTypeRouterMac) FromProto(msg *otg.BgpExtendedCommunityTransitiveEvpnTypeRouterMac) (BgpExtendedCommunityTransitiveEvpnTypeRouterMac, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -274112,7 +320522,7 @@ func (obj *isisLspExtendedIsReachabilityTlv) FromProto(msg *otg.IsisLspExtendedI return newObj, nil } -func (obj *isisLspExtendedIsReachabilityTlv) ToPbText() (string, error) { +func (obj *bgpExtendedCommunityTransitiveEvpnTypeRouterMac) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -274124,12 +320534,12 @@ func (obj *isisLspExtendedIsReachabilityTlv) ToPbText() (string, error) { return string(protoMarshal), nil } -func (obj *isisLspExtendedIsReachabilityTlv) FromPbText(value string) error { +func (obj *bgpExtendedCommunityTransitiveEvpnTypeRouterMac) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj } - obj.setNil() + vErr := obj.validateToAndFrom() if vErr != nil { return vErr @@ -274137,7 +320547,7 @@ func (obj *isisLspExtendedIsReachabilityTlv) FromPbText(value string) error { return retObj } -func (obj *isisLspExtendedIsReachabilityTlv) ToYaml() (string, error) { +func (obj *bgpExtendedCommunityTransitiveEvpnTypeRouterMac) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -274158,7 +320568,7 @@ func (obj *isisLspExtendedIsReachabilityTlv) ToYaml() (string, error) { return string(data), nil } -func (obj *isisLspExtendedIsReachabilityTlv) FromYaml(value string) error { +func (obj *bgpExtendedCommunityTransitiveEvpnTypeRouterMac) FromYaml(value string) error { if value == "" { value = "{}" } @@ -274175,7 +320585,7 @@ func (obj *isisLspExtendedIsReachabilityTlv) FromYaml(value string) error { return fmt.Errorf("unmarshal error %s", strings.Replace( uError.Error(), "\u00a0", " ", -1)[7:]) } - obj.setNil() + vErr := obj.validateToAndFrom() if vErr != nil { return vErr @@ -274183,7 +320593,7 @@ func (obj *isisLspExtendedIsReachabilityTlv) FromYaml(value string) error { return nil } -func (obj *isisLspExtendedIsReachabilityTlv) ToJson() (string, error) { +func (obj *bgpExtendedCommunityTransitiveEvpnTypeRouterMac) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -274201,7 +320611,7 @@ func (obj *isisLspExtendedIsReachabilityTlv) ToJson() (string, error) { return string(data), nil } -func (obj *isisLspExtendedIsReachabilityTlv) FromJson(value string) error { +func (obj *bgpExtendedCommunityTransitiveEvpnTypeRouterMac) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -274214,7 +320624,7 @@ func (obj *isisLspExtendedIsReachabilityTlv) FromJson(value string) error { return fmt.Errorf("unmarshal error %s", strings.Replace( uError.Error(), "\u00a0", " ", -1)[7:]) } - obj.setNil() + err := obj.validateToAndFrom() if err != nil { return err @@ -274222,19 +320632,19 @@ func (obj *isisLspExtendedIsReachabilityTlv) FromJson(value string) error { return nil } -func (obj *isisLspExtendedIsReachabilityTlv) validateToAndFrom() error { +func (obj *bgpExtendedCommunityTransitiveEvpnTypeRouterMac) validateToAndFrom() error { // emptyVars() obj.validateObj(&obj.validation, true) return obj.validationResult() } -func (obj *isisLspExtendedIsReachabilityTlv) Validate() error { +func (obj *bgpExtendedCommunityTransitiveEvpnTypeRouterMac) Validate() error { // emptyVars() obj.validateObj(&obj.validation, false) return obj.validationResult() } -func (obj *isisLspExtendedIsReachabilityTlv) String() string { +func (obj *bgpExtendedCommunityTransitiveEvpnTypeRouterMac) String() string { str, err := obj.ToYaml() if err != nil { return err.Error() @@ -274242,12 +320652,12 @@ func (obj *isisLspExtendedIsReachabilityTlv) String() string { return str } -func (obj *isisLspExtendedIsReachabilityTlv) Clone() (IsisLspExtendedIsReachabilityTlv, error) { +func (obj *bgpExtendedCommunityTransitiveEvpnTypeRouterMac) Clone() (BgpExtendedCommunityTransitiveEvpnTypeRouterMac, error) { vErr := obj.Validate() if vErr != nil { return nil, vErr } - newObj := NewIsisLspExtendedIsReachabilityTlv() + newObj := NewBgpExtendedCommunityTransitiveEvpnTypeRouterMac() data, err := proto.Marshal(obj.Msg()) if err != nil { return nil, err @@ -274259,188 +320669,116 @@ func (obj *isisLspExtendedIsReachabilityTlv) Clone() (IsisLspExtendedIsReachabil return newObj, nil } -func (obj *isisLspExtendedIsReachabilityTlv) setNil() { - obj.neighborsHolder = nil - obj.validationErrors = nil - obj.warnings = nil - obj.constraints = make(map[string]map[string]Constraints) -} - -// IsisLspExtendedIsReachabilityTlv is this is list of ISIS neighbors and attributes in Extended-IS-Reachability TLV (type 22). -type IsisLspExtendedIsReachabilityTlv interface { +// BgpExtendedCommunityTransitiveEvpnTypeRouterMac is the Router MAC EVPN Community is defined in RFC9135 and normally sent only for EVPN Type-2 Routes . It is sent with sub-type 0x03. +type BgpExtendedCommunityTransitiveEvpnTypeRouterMac interface { Validation - // Msg marshals IsisLspExtendedIsReachabilityTlv to protobuf object *otg.IsisLspExtendedIsReachabilityTlv + // Msg marshals BgpExtendedCommunityTransitiveEvpnTypeRouterMac to protobuf object *otg.BgpExtendedCommunityTransitiveEvpnTypeRouterMac // and doesn't set defaults - Msg() *otg.IsisLspExtendedIsReachabilityTlv - // SetMsg unmarshals IsisLspExtendedIsReachabilityTlv from protobuf object *otg.IsisLspExtendedIsReachabilityTlv + Msg() *otg.BgpExtendedCommunityTransitiveEvpnTypeRouterMac + // SetMsg unmarshals BgpExtendedCommunityTransitiveEvpnTypeRouterMac from protobuf object *otg.BgpExtendedCommunityTransitiveEvpnTypeRouterMac // and doesn't set defaults - SetMsg(*otg.IsisLspExtendedIsReachabilityTlv) IsisLspExtendedIsReachabilityTlv - // ToProto marshals IsisLspExtendedIsReachabilityTlv to protobuf object *otg.IsisLspExtendedIsReachabilityTlv - ToProto() (*otg.IsisLspExtendedIsReachabilityTlv, error) - // ToPbText marshals IsisLspExtendedIsReachabilityTlv to protobuf text + SetMsg(*otg.BgpExtendedCommunityTransitiveEvpnTypeRouterMac) BgpExtendedCommunityTransitiveEvpnTypeRouterMac + // ToProto marshals BgpExtendedCommunityTransitiveEvpnTypeRouterMac to protobuf object *otg.BgpExtendedCommunityTransitiveEvpnTypeRouterMac + ToProto() (*otg.BgpExtendedCommunityTransitiveEvpnTypeRouterMac, error) + // ToPbText marshals BgpExtendedCommunityTransitiveEvpnTypeRouterMac to protobuf text ToPbText() (string, error) - // ToYaml marshals IsisLspExtendedIsReachabilityTlv to YAML text + // ToYaml marshals BgpExtendedCommunityTransitiveEvpnTypeRouterMac to YAML text ToYaml() (string, error) - // ToJson marshals IsisLspExtendedIsReachabilityTlv to JSON text + // ToJson marshals BgpExtendedCommunityTransitiveEvpnTypeRouterMac to JSON text ToJson() (string, error) - // FromProto unmarshals IsisLspExtendedIsReachabilityTlv from protobuf object *otg.IsisLspExtendedIsReachabilityTlv - FromProto(msg *otg.IsisLspExtendedIsReachabilityTlv) (IsisLspExtendedIsReachabilityTlv, error) - // FromPbText unmarshals IsisLspExtendedIsReachabilityTlv from protobuf text + // FromProto unmarshals BgpExtendedCommunityTransitiveEvpnTypeRouterMac from protobuf object *otg.BgpExtendedCommunityTransitiveEvpnTypeRouterMac + FromProto(msg *otg.BgpExtendedCommunityTransitiveEvpnTypeRouterMac) (BgpExtendedCommunityTransitiveEvpnTypeRouterMac, error) + // FromPbText unmarshals BgpExtendedCommunityTransitiveEvpnTypeRouterMac from protobuf text FromPbText(value string) error - // FromYaml unmarshals IsisLspExtendedIsReachabilityTlv from YAML text + // FromYaml unmarshals BgpExtendedCommunityTransitiveEvpnTypeRouterMac from YAML text FromYaml(value string) error - // FromJson unmarshals IsisLspExtendedIsReachabilityTlv from JSON text + // FromJson unmarshals BgpExtendedCommunityTransitiveEvpnTypeRouterMac from JSON text FromJson(value string) error - // Validate validates IsisLspExtendedIsReachabilityTlv + // Validate validates BgpExtendedCommunityTransitiveEvpnTypeRouterMac Validate() error // A stringer function String() string // Clones the object - Clone() (IsisLspExtendedIsReachabilityTlv, error) + Clone() (BgpExtendedCommunityTransitiveEvpnTypeRouterMac, error) validateToAndFrom() error validateObj(vObj *validation, set_default bool) setDefault() - // Neighbors returns IsisLspExtendedIsReachabilityTlvIsisLspneighborIterIter, set in IsisLspExtendedIsReachabilityTlv - Neighbors() IsisLspExtendedIsReachabilityTlvIsisLspneighborIter - setNil() -} - -// This container describes IS neighbors. -// Neighbors returns a []IsisLspneighbor -func (obj *isisLspExtendedIsReachabilityTlv) Neighbors() IsisLspExtendedIsReachabilityTlvIsisLspneighborIter { - if len(obj.obj.Neighbors) == 0 { - obj.obj.Neighbors = []*otg.IsisLspneighbor{} - } - if obj.neighborsHolder == nil { - obj.neighborsHolder = newIsisLspExtendedIsReachabilityTlvIsisLspneighborIter(&obj.obj.Neighbors).setMsg(obj) - } - return obj.neighborsHolder -} - -type isisLspExtendedIsReachabilityTlvIsisLspneighborIter struct { - obj *isisLspExtendedIsReachabilityTlv - isisLspneighborSlice []IsisLspneighbor - fieldPtr *[]*otg.IsisLspneighbor -} - -func newIsisLspExtendedIsReachabilityTlvIsisLspneighborIter(ptr *[]*otg.IsisLspneighbor) IsisLspExtendedIsReachabilityTlvIsisLspneighborIter { - return &isisLspExtendedIsReachabilityTlvIsisLspneighborIter{fieldPtr: ptr} + // RouterMac returns string, set in BgpExtendedCommunityTransitiveEvpnTypeRouterMac. + RouterMac() string + // SetRouterMac assigns string provided by user to BgpExtendedCommunityTransitiveEvpnTypeRouterMac + SetRouterMac(value string) BgpExtendedCommunityTransitiveEvpnTypeRouterMac + // HasRouterMac checks if RouterMac has been set in BgpExtendedCommunityTransitiveEvpnTypeRouterMac + HasRouterMac() bool } -type IsisLspExtendedIsReachabilityTlvIsisLspneighborIter interface { - setMsg(*isisLspExtendedIsReachabilityTlv) IsisLspExtendedIsReachabilityTlvIsisLspneighborIter - Items() []IsisLspneighbor - Add() IsisLspneighbor - Append(items ...IsisLspneighbor) IsisLspExtendedIsReachabilityTlvIsisLspneighborIter - Set(index int, newObj IsisLspneighbor) IsisLspExtendedIsReachabilityTlvIsisLspneighborIter - Clear() IsisLspExtendedIsReachabilityTlvIsisLspneighborIter - clearHolderSlice() IsisLspExtendedIsReachabilityTlvIsisLspneighborIter - appendHolderSlice(item IsisLspneighbor) IsisLspExtendedIsReachabilityTlvIsisLspneighborIter -} +// MAC Address of the PE Router. +// RouterMac returns a string +func (obj *bgpExtendedCommunityTransitiveEvpnTypeRouterMac) RouterMac() string { -func (obj *isisLspExtendedIsReachabilityTlvIsisLspneighborIter) setMsg(msg *isisLspExtendedIsReachabilityTlv) IsisLspExtendedIsReachabilityTlvIsisLspneighborIter { - obj.clearHolderSlice() - for _, val := range *obj.fieldPtr { - obj.appendHolderSlice(&isisLspneighbor{obj: val}) - } - obj.obj = msg - return obj -} + return *obj.obj.RouterMac -func (obj *isisLspExtendedIsReachabilityTlvIsisLspneighborIter) Items() []IsisLspneighbor { - return obj.isisLspneighborSlice } -func (obj *isisLspExtendedIsReachabilityTlvIsisLspneighborIter) Add() IsisLspneighbor { - newObj := &otg.IsisLspneighbor{} - *obj.fieldPtr = append(*obj.fieldPtr, newObj) - newLibObj := &isisLspneighbor{obj: newObj} - newLibObj.setDefault() - obj.isisLspneighborSlice = append(obj.isisLspneighborSlice, newLibObj) - return newLibObj +// MAC Address of the PE Router. +// RouterMac returns a string +func (obj *bgpExtendedCommunityTransitiveEvpnTypeRouterMac) HasRouterMac() bool { + return obj.obj.RouterMac != nil } -func (obj *isisLspExtendedIsReachabilityTlvIsisLspneighborIter) Append(items ...IsisLspneighbor) IsisLspExtendedIsReachabilityTlvIsisLspneighborIter { - for _, item := range items { - newObj := item.Msg() - *obj.fieldPtr = append(*obj.fieldPtr, newObj) - obj.isisLspneighborSlice = append(obj.isisLspneighborSlice, item) - } - return obj -} +// MAC Address of the PE Router. +// SetRouterMac sets the string value in the BgpExtendedCommunityTransitiveEvpnTypeRouterMac object +func (obj *bgpExtendedCommunityTransitiveEvpnTypeRouterMac) SetRouterMac(value string) BgpExtendedCommunityTransitiveEvpnTypeRouterMac { -func (obj *isisLspExtendedIsReachabilityTlvIsisLspneighborIter) Set(index int, newObj IsisLspneighbor) IsisLspExtendedIsReachabilityTlvIsisLspneighborIter { - (*obj.fieldPtr)[index] = newObj.Msg() - obj.isisLspneighborSlice[index] = newObj - return obj -} -func (obj *isisLspExtendedIsReachabilityTlvIsisLspneighborIter) Clear() IsisLspExtendedIsReachabilityTlvIsisLspneighborIter { - if len(*obj.fieldPtr) > 0 { - *obj.fieldPtr = []*otg.IsisLspneighbor{} - obj.isisLspneighborSlice = []IsisLspneighbor{} - } - return obj -} -func (obj *isisLspExtendedIsReachabilityTlvIsisLspneighborIter) clearHolderSlice() IsisLspExtendedIsReachabilityTlvIsisLspneighborIter { - if len(obj.isisLspneighborSlice) > 0 { - obj.isisLspneighborSlice = []IsisLspneighbor{} - } - return obj -} -func (obj *isisLspExtendedIsReachabilityTlvIsisLspneighborIter) appendHolderSlice(item IsisLspneighbor) IsisLspExtendedIsReachabilityTlvIsisLspneighborIter { - obj.isisLspneighborSlice = append(obj.isisLspneighborSlice, item) + obj.obj.RouterMac = &value return obj } -func (obj *isisLspExtendedIsReachabilityTlv) validateObj(vObj *validation, set_default bool) { +func (obj *bgpExtendedCommunityTransitiveEvpnTypeRouterMac) validateObj(vObj *validation, set_default bool) { if set_default { obj.setDefault() } - if len(obj.obj.Neighbors) != 0 { + if obj.obj.RouterMac != nil { - if set_default { - obj.Neighbors().clearHolderSlice() - for _, item := range obj.obj.Neighbors { - obj.Neighbors().appendHolderSlice(&isisLspneighbor{obj: item}) - } - } - for _, item := range obj.Neighbors().Items() { - item.validateObj(vObj, set_default) + err := obj.validateMac(obj.RouterMac()) + if err != nil { + vObj.validationErrors = append(vObj.validationErrors, fmt.Sprintf("%s %s", err.Error(), "on BgpExtendedCommunityTransitiveEvpnTypeRouterMac.RouterMac")) } } } -func (obj *isisLspExtendedIsReachabilityTlv) setDefault() { +func (obj *bgpExtendedCommunityTransitiveEvpnTypeRouterMac) setDefault() { + if obj.obj.RouterMac == nil { + obj.SetRouterMac("0:0:0:0:0:0") + } } -// ***** IsisLspIpv4InternalReachabilityTlv ***** -type isisLspIpv4InternalReachabilityTlv struct { +// ***** BgpExtendedCommunityNonTransitive2OctetAsTypeLinkBandwidth ***** +type bgpExtendedCommunityNonTransitive2OctetAsTypeLinkBandwidth struct { validation - obj *otg.IsisLspIpv4InternalReachabilityTlv - prefixesHolder IsisLspIpv4InternalReachabilityTlvIsisLspV4PrefixIter + obj *otg.BgpExtendedCommunityNonTransitive2OctetAsTypeLinkBandwidth } -func NewIsisLspIpv4InternalReachabilityTlv() IsisLspIpv4InternalReachabilityTlv { - obj := isisLspIpv4InternalReachabilityTlv{obj: &otg.IsisLspIpv4InternalReachabilityTlv{}} +func NewBgpExtendedCommunityNonTransitive2OctetAsTypeLinkBandwidth() BgpExtendedCommunityNonTransitive2OctetAsTypeLinkBandwidth { + obj := bgpExtendedCommunityNonTransitive2OctetAsTypeLinkBandwidth{obj: &otg.BgpExtendedCommunityNonTransitive2OctetAsTypeLinkBandwidth{}} obj.setDefault() return &obj } -func (obj *isisLspIpv4InternalReachabilityTlv) Msg() *otg.IsisLspIpv4InternalReachabilityTlv { +func (obj *bgpExtendedCommunityNonTransitive2OctetAsTypeLinkBandwidth) Msg() *otg.BgpExtendedCommunityNonTransitive2OctetAsTypeLinkBandwidth { return obj.obj } -func (obj *isisLspIpv4InternalReachabilityTlv) SetMsg(msg *otg.IsisLspIpv4InternalReachabilityTlv) IsisLspIpv4InternalReachabilityTlv { - obj.setNil() +func (obj *bgpExtendedCommunityNonTransitive2OctetAsTypeLinkBandwidth) SetMsg(msg *otg.BgpExtendedCommunityNonTransitive2OctetAsTypeLinkBandwidth) BgpExtendedCommunityNonTransitive2OctetAsTypeLinkBandwidth { + proto.Merge(obj.obj, msg) return obj } -func (obj *isisLspIpv4InternalReachabilityTlv) ToProto() (*otg.IsisLspIpv4InternalReachabilityTlv, error) { +func (obj *bgpExtendedCommunityNonTransitive2OctetAsTypeLinkBandwidth) ToProto() (*otg.BgpExtendedCommunityNonTransitive2OctetAsTypeLinkBandwidth, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -274448,7 +320786,7 @@ func (obj *isisLspIpv4InternalReachabilityTlv) ToProto() (*otg.IsisLspIpv4Intern return obj.Msg(), nil } -func (obj *isisLspIpv4InternalReachabilityTlv) FromProto(msg *otg.IsisLspIpv4InternalReachabilityTlv) (IsisLspIpv4InternalReachabilityTlv, error) { +func (obj *bgpExtendedCommunityNonTransitive2OctetAsTypeLinkBandwidth) FromProto(msg *otg.BgpExtendedCommunityNonTransitive2OctetAsTypeLinkBandwidth) (BgpExtendedCommunityNonTransitive2OctetAsTypeLinkBandwidth, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -274457,7 +320795,7 @@ func (obj *isisLspIpv4InternalReachabilityTlv) FromProto(msg *otg.IsisLspIpv4Int return newObj, nil } -func (obj *isisLspIpv4InternalReachabilityTlv) ToPbText() (string, error) { +func (obj *bgpExtendedCommunityNonTransitive2OctetAsTypeLinkBandwidth) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -274469,12 +320807,12 @@ func (obj *isisLspIpv4InternalReachabilityTlv) ToPbText() (string, error) { return string(protoMarshal), nil } -func (obj *isisLspIpv4InternalReachabilityTlv) FromPbText(value string) error { +func (obj *bgpExtendedCommunityNonTransitive2OctetAsTypeLinkBandwidth) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj } - obj.setNil() + vErr := obj.validateToAndFrom() if vErr != nil { return vErr @@ -274482,7 +320820,7 @@ func (obj *isisLspIpv4InternalReachabilityTlv) FromPbText(value string) error { return retObj } -func (obj *isisLspIpv4InternalReachabilityTlv) ToYaml() (string, error) { +func (obj *bgpExtendedCommunityNonTransitive2OctetAsTypeLinkBandwidth) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -274503,7 +320841,7 @@ func (obj *isisLspIpv4InternalReachabilityTlv) ToYaml() (string, error) { return string(data), nil } -func (obj *isisLspIpv4InternalReachabilityTlv) FromYaml(value string) error { +func (obj *bgpExtendedCommunityNonTransitive2OctetAsTypeLinkBandwidth) FromYaml(value string) error { if value == "" { value = "{}" } @@ -274520,7 +320858,7 @@ func (obj *isisLspIpv4InternalReachabilityTlv) FromYaml(value string) error { return fmt.Errorf("unmarshal error %s", strings.Replace( uError.Error(), "\u00a0", " ", -1)[7:]) } - obj.setNil() + vErr := obj.validateToAndFrom() if vErr != nil { return vErr @@ -274528,7 +320866,7 @@ func (obj *isisLspIpv4InternalReachabilityTlv) FromYaml(value string) error { return nil } -func (obj *isisLspIpv4InternalReachabilityTlv) ToJson() (string, error) { +func (obj *bgpExtendedCommunityNonTransitive2OctetAsTypeLinkBandwidth) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -274546,7 +320884,7 @@ func (obj *isisLspIpv4InternalReachabilityTlv) ToJson() (string, error) { return string(data), nil } -func (obj *isisLspIpv4InternalReachabilityTlv) FromJson(value string) error { +func (obj *bgpExtendedCommunityNonTransitive2OctetAsTypeLinkBandwidth) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -274559,7 +320897,7 @@ func (obj *isisLspIpv4InternalReachabilityTlv) FromJson(value string) error { return fmt.Errorf("unmarshal error %s", strings.Replace( uError.Error(), "\u00a0", " ", -1)[7:]) } - obj.setNil() + err := obj.validateToAndFrom() if err != nil { return err @@ -274567,19 +320905,19 @@ func (obj *isisLspIpv4InternalReachabilityTlv) FromJson(value string) error { return nil } -func (obj *isisLspIpv4InternalReachabilityTlv) validateToAndFrom() error { +func (obj *bgpExtendedCommunityNonTransitive2OctetAsTypeLinkBandwidth) validateToAndFrom() error { // emptyVars() obj.validateObj(&obj.validation, true) return obj.validationResult() } -func (obj *isisLspIpv4InternalReachabilityTlv) Validate() error { +func (obj *bgpExtendedCommunityNonTransitive2OctetAsTypeLinkBandwidth) Validate() error { // emptyVars() obj.validateObj(&obj.validation, false) return obj.validationResult() } -func (obj *isisLspIpv4InternalReachabilityTlv) String() string { +func (obj *bgpExtendedCommunityNonTransitive2OctetAsTypeLinkBandwidth) String() string { str, err := obj.ToYaml() if err != nil { return err.Error() @@ -274587,12 +320925,12 @@ func (obj *isisLspIpv4InternalReachabilityTlv) String() string { return str } -func (obj *isisLspIpv4InternalReachabilityTlv) Clone() (IsisLspIpv4InternalReachabilityTlv, error) { +func (obj *bgpExtendedCommunityNonTransitive2OctetAsTypeLinkBandwidth) Clone() (BgpExtendedCommunityNonTransitive2OctetAsTypeLinkBandwidth, error) { vErr := obj.Validate() if vErr != nil { return nil, vErr } - newObj := NewIsisLspIpv4InternalReachabilityTlv() + newObj := NewBgpExtendedCommunityNonTransitive2OctetAsTypeLinkBandwidth() data, err := proto.Marshal(obj.Msg()) if err != nil { return nil, err @@ -274604,189 +320942,159 @@ func (obj *isisLspIpv4InternalReachabilityTlv) Clone() (IsisLspIpv4InternalReach return newObj, nil } -func (obj *isisLspIpv4InternalReachabilityTlv) setNil() { - obj.prefixesHolder = nil - obj.validationErrors = nil - obj.warnings = nil - obj.constraints = make(map[string]map[string]Constraints) -} - -// IsisLspIpv4InternalReachabilityTlv is this container defines list of IPv4 internal reachability information in one IPv4 internal reachability TLV. -// This is advertised when the origin-type is set 'internal' in route range configurations. -type IsisLspIpv4InternalReachabilityTlv interface { +// BgpExtendedCommunityNonTransitive2OctetAsTypeLinkBandwidth is the Link Bandwidth Extended Community attribute is defined in draft-ietf-idr-link-bandwidth. It is sent with sub-type as 0x04. +type BgpExtendedCommunityNonTransitive2OctetAsTypeLinkBandwidth interface { Validation - // Msg marshals IsisLspIpv4InternalReachabilityTlv to protobuf object *otg.IsisLspIpv4InternalReachabilityTlv + // Msg marshals BgpExtendedCommunityNonTransitive2OctetAsTypeLinkBandwidth to protobuf object *otg.BgpExtendedCommunityNonTransitive2OctetAsTypeLinkBandwidth // and doesn't set defaults - Msg() *otg.IsisLspIpv4InternalReachabilityTlv - // SetMsg unmarshals IsisLspIpv4InternalReachabilityTlv from protobuf object *otg.IsisLspIpv4InternalReachabilityTlv + Msg() *otg.BgpExtendedCommunityNonTransitive2OctetAsTypeLinkBandwidth + // SetMsg unmarshals BgpExtendedCommunityNonTransitive2OctetAsTypeLinkBandwidth from protobuf object *otg.BgpExtendedCommunityNonTransitive2OctetAsTypeLinkBandwidth // and doesn't set defaults - SetMsg(*otg.IsisLspIpv4InternalReachabilityTlv) IsisLspIpv4InternalReachabilityTlv - // ToProto marshals IsisLspIpv4InternalReachabilityTlv to protobuf object *otg.IsisLspIpv4InternalReachabilityTlv - ToProto() (*otg.IsisLspIpv4InternalReachabilityTlv, error) - // ToPbText marshals IsisLspIpv4InternalReachabilityTlv to protobuf text + SetMsg(*otg.BgpExtendedCommunityNonTransitive2OctetAsTypeLinkBandwidth) BgpExtendedCommunityNonTransitive2OctetAsTypeLinkBandwidth + // ToProto marshals BgpExtendedCommunityNonTransitive2OctetAsTypeLinkBandwidth to protobuf object *otg.BgpExtendedCommunityNonTransitive2OctetAsTypeLinkBandwidth + ToProto() (*otg.BgpExtendedCommunityNonTransitive2OctetAsTypeLinkBandwidth, error) + // ToPbText marshals BgpExtendedCommunityNonTransitive2OctetAsTypeLinkBandwidth to protobuf text ToPbText() (string, error) - // ToYaml marshals IsisLspIpv4InternalReachabilityTlv to YAML text + // ToYaml marshals BgpExtendedCommunityNonTransitive2OctetAsTypeLinkBandwidth to YAML text ToYaml() (string, error) - // ToJson marshals IsisLspIpv4InternalReachabilityTlv to JSON text + // ToJson marshals BgpExtendedCommunityNonTransitive2OctetAsTypeLinkBandwidth to JSON text ToJson() (string, error) - // FromProto unmarshals IsisLspIpv4InternalReachabilityTlv from protobuf object *otg.IsisLspIpv4InternalReachabilityTlv - FromProto(msg *otg.IsisLspIpv4InternalReachabilityTlv) (IsisLspIpv4InternalReachabilityTlv, error) - // FromPbText unmarshals IsisLspIpv4InternalReachabilityTlv from protobuf text + // FromProto unmarshals BgpExtendedCommunityNonTransitive2OctetAsTypeLinkBandwidth from protobuf object *otg.BgpExtendedCommunityNonTransitive2OctetAsTypeLinkBandwidth + FromProto(msg *otg.BgpExtendedCommunityNonTransitive2OctetAsTypeLinkBandwidth) (BgpExtendedCommunityNonTransitive2OctetAsTypeLinkBandwidth, error) + // FromPbText unmarshals BgpExtendedCommunityNonTransitive2OctetAsTypeLinkBandwidth from protobuf text FromPbText(value string) error - // FromYaml unmarshals IsisLspIpv4InternalReachabilityTlv from YAML text + // FromYaml unmarshals BgpExtendedCommunityNonTransitive2OctetAsTypeLinkBandwidth from YAML text FromYaml(value string) error - // FromJson unmarshals IsisLspIpv4InternalReachabilityTlv from JSON text + // FromJson unmarshals BgpExtendedCommunityNonTransitive2OctetAsTypeLinkBandwidth from JSON text FromJson(value string) error - // Validate validates IsisLspIpv4InternalReachabilityTlv + // Validate validates BgpExtendedCommunityNonTransitive2OctetAsTypeLinkBandwidth Validate() error // A stringer function String() string // Clones the object - Clone() (IsisLspIpv4InternalReachabilityTlv, error) + Clone() (BgpExtendedCommunityNonTransitive2OctetAsTypeLinkBandwidth, error) validateToAndFrom() error validateObj(vObj *validation, set_default bool) setDefault() - // Prefixes returns IsisLspIpv4InternalReachabilityTlvIsisLspV4PrefixIterIter, set in IsisLspIpv4InternalReachabilityTlv - Prefixes() IsisLspIpv4InternalReachabilityTlvIsisLspV4PrefixIter - setNil() + // Global2ByteAs returns uint32, set in BgpExtendedCommunityNonTransitive2OctetAsTypeLinkBandwidth. + Global2ByteAs() uint32 + // SetGlobal2ByteAs assigns uint32 provided by user to BgpExtendedCommunityNonTransitive2OctetAsTypeLinkBandwidth + SetGlobal2ByteAs(value uint32) BgpExtendedCommunityNonTransitive2OctetAsTypeLinkBandwidth + // HasGlobal2ByteAs checks if Global2ByteAs has been set in BgpExtendedCommunityNonTransitive2OctetAsTypeLinkBandwidth + HasGlobal2ByteAs() bool + // Bandwidth returns float32, set in BgpExtendedCommunityNonTransitive2OctetAsTypeLinkBandwidth. + Bandwidth() float32 + // SetBandwidth assigns float32 provided by user to BgpExtendedCommunityNonTransitive2OctetAsTypeLinkBandwidth + SetBandwidth(value float32) BgpExtendedCommunityNonTransitive2OctetAsTypeLinkBandwidth + // HasBandwidth checks if Bandwidth has been set in BgpExtendedCommunityNonTransitive2OctetAsTypeLinkBandwidth + HasBandwidth() bool } -// Describes list of IPv4 prefixes in this TLV. -// Prefixes returns a []IsisLspV4Prefix -func (obj *isisLspIpv4InternalReachabilityTlv) Prefixes() IsisLspIpv4InternalReachabilityTlvIsisLspV4PrefixIter { - if len(obj.obj.Prefixes) == 0 { - obj.obj.Prefixes = []*otg.IsisLspV4Prefix{} - } - if obj.prefixesHolder == nil { - obj.prefixesHolder = newIsisLspIpv4InternalReachabilityTlvIsisLspV4PrefixIter(&obj.obj.Prefixes).setMsg(obj) - } - return obj.prefixesHolder -} +// The value of the Global Administrator subfield should represent the Autonomous System of the router that attaches the Link Bandwidth Community. If four octet AS numbering scheme is used, AS_TRANS (23456) should be used. +// Global2ByteAs returns a uint32 +func (obj *bgpExtendedCommunityNonTransitive2OctetAsTypeLinkBandwidth) Global2ByteAs() uint32 { -type isisLspIpv4InternalReachabilityTlvIsisLspV4PrefixIter struct { - obj *isisLspIpv4InternalReachabilityTlv - isisLspV4PrefixSlice []IsisLspV4Prefix - fieldPtr *[]*otg.IsisLspV4Prefix -} + return *obj.obj.Global_2ByteAs -func newIsisLspIpv4InternalReachabilityTlvIsisLspV4PrefixIter(ptr *[]*otg.IsisLspV4Prefix) IsisLspIpv4InternalReachabilityTlvIsisLspV4PrefixIter { - return &isisLspIpv4InternalReachabilityTlvIsisLspV4PrefixIter{fieldPtr: ptr} } -type IsisLspIpv4InternalReachabilityTlvIsisLspV4PrefixIter interface { - setMsg(*isisLspIpv4InternalReachabilityTlv) IsisLspIpv4InternalReachabilityTlvIsisLspV4PrefixIter - Items() []IsisLspV4Prefix - Add() IsisLspV4Prefix - Append(items ...IsisLspV4Prefix) IsisLspIpv4InternalReachabilityTlvIsisLspV4PrefixIter - Set(index int, newObj IsisLspV4Prefix) IsisLspIpv4InternalReachabilityTlvIsisLspV4PrefixIter - Clear() IsisLspIpv4InternalReachabilityTlvIsisLspV4PrefixIter - clearHolderSlice() IsisLspIpv4InternalReachabilityTlvIsisLspV4PrefixIter - appendHolderSlice(item IsisLspV4Prefix) IsisLspIpv4InternalReachabilityTlvIsisLspV4PrefixIter +// The value of the Global Administrator subfield should represent the Autonomous System of the router that attaches the Link Bandwidth Community. If four octet AS numbering scheme is used, AS_TRANS (23456) should be used. +// Global2ByteAs returns a uint32 +func (obj *bgpExtendedCommunityNonTransitive2OctetAsTypeLinkBandwidth) HasGlobal2ByteAs() bool { + return obj.obj.Global_2ByteAs != nil } -func (obj *isisLspIpv4InternalReachabilityTlvIsisLspV4PrefixIter) setMsg(msg *isisLspIpv4InternalReachabilityTlv) IsisLspIpv4InternalReachabilityTlvIsisLspV4PrefixIter { - obj.clearHolderSlice() - for _, val := range *obj.fieldPtr { - obj.appendHolderSlice(&isisLspV4Prefix{obj: val}) - } - obj.obj = msg +// The value of the Global Administrator subfield should represent the Autonomous System of the router that attaches the Link Bandwidth Community. If four octet AS numbering scheme is used, AS_TRANS (23456) should be used. +// SetGlobal2ByteAs sets the uint32 value in the BgpExtendedCommunityNonTransitive2OctetAsTypeLinkBandwidth object +func (obj *bgpExtendedCommunityNonTransitive2OctetAsTypeLinkBandwidth) SetGlobal2ByteAs(value uint32) BgpExtendedCommunityNonTransitive2OctetAsTypeLinkBandwidth { + + obj.obj.Global_2ByteAs = &value return obj } -func (obj *isisLspIpv4InternalReachabilityTlvIsisLspV4PrefixIter) Items() []IsisLspV4Prefix { - return obj.isisLspV4PrefixSlice -} +// Bandwidth of the link in bytes per second. ( 1 Kbps is 1000 bytes per second and 1 Mbps is 1000 Kbps per second ) +// Bandwidth returns a float32 +func (obj *bgpExtendedCommunityNonTransitive2OctetAsTypeLinkBandwidth) Bandwidth() float32 { -func (obj *isisLspIpv4InternalReachabilityTlvIsisLspV4PrefixIter) Add() IsisLspV4Prefix { - newObj := &otg.IsisLspV4Prefix{} - *obj.fieldPtr = append(*obj.fieldPtr, newObj) - newLibObj := &isisLspV4Prefix{obj: newObj} - newLibObj.setDefault() - obj.isisLspV4PrefixSlice = append(obj.isisLspV4PrefixSlice, newLibObj) - return newLibObj -} + return *obj.obj.Bandwidth -func (obj *isisLspIpv4InternalReachabilityTlvIsisLspV4PrefixIter) Append(items ...IsisLspV4Prefix) IsisLspIpv4InternalReachabilityTlvIsisLspV4PrefixIter { - for _, item := range items { - newObj := item.Msg() - *obj.fieldPtr = append(*obj.fieldPtr, newObj) - obj.isisLspV4PrefixSlice = append(obj.isisLspV4PrefixSlice, item) - } - return obj } -func (obj *isisLspIpv4InternalReachabilityTlvIsisLspV4PrefixIter) Set(index int, newObj IsisLspV4Prefix) IsisLspIpv4InternalReachabilityTlvIsisLspV4PrefixIter { - (*obj.fieldPtr)[index] = newObj.Msg() - obj.isisLspV4PrefixSlice[index] = newObj - return obj -} -func (obj *isisLspIpv4InternalReachabilityTlvIsisLspV4PrefixIter) Clear() IsisLspIpv4InternalReachabilityTlvIsisLspV4PrefixIter { - if len(*obj.fieldPtr) > 0 { - *obj.fieldPtr = []*otg.IsisLspV4Prefix{} - obj.isisLspV4PrefixSlice = []IsisLspV4Prefix{} - } - return obj -} -func (obj *isisLspIpv4InternalReachabilityTlvIsisLspV4PrefixIter) clearHolderSlice() IsisLspIpv4InternalReachabilityTlvIsisLspV4PrefixIter { - if len(obj.isisLspV4PrefixSlice) > 0 { - obj.isisLspV4PrefixSlice = []IsisLspV4Prefix{} - } - return obj +// Bandwidth of the link in bytes per second. ( 1 Kbps is 1000 bytes per second and 1 Mbps is 1000 Kbps per second ) +// Bandwidth returns a float32 +func (obj *bgpExtendedCommunityNonTransitive2OctetAsTypeLinkBandwidth) HasBandwidth() bool { + return obj.obj.Bandwidth != nil } -func (obj *isisLspIpv4InternalReachabilityTlvIsisLspV4PrefixIter) appendHolderSlice(item IsisLspV4Prefix) IsisLspIpv4InternalReachabilityTlvIsisLspV4PrefixIter { - obj.isisLspV4PrefixSlice = append(obj.isisLspV4PrefixSlice, item) + +// Bandwidth of the link in bytes per second. ( 1 Kbps is 1000 bytes per second and 1 Mbps is 1000 Kbps per second ) +// SetBandwidth sets the float32 value in the BgpExtendedCommunityNonTransitive2OctetAsTypeLinkBandwidth object +func (obj *bgpExtendedCommunityNonTransitive2OctetAsTypeLinkBandwidth) SetBandwidth(value float32) BgpExtendedCommunityNonTransitive2OctetAsTypeLinkBandwidth { + + obj.obj.Bandwidth = &value return obj } -func (obj *isisLspIpv4InternalReachabilityTlv) validateObj(vObj *validation, set_default bool) { +func (obj *bgpExtendedCommunityNonTransitive2OctetAsTypeLinkBandwidth) validateObj(vObj *validation, set_default bool) { if set_default { obj.setDefault() } - if len(obj.obj.Prefixes) != 0 { + if obj.obj.Global_2ByteAs != nil { - if set_default { - obj.Prefixes().clearHolderSlice() - for _, item := range obj.obj.Prefixes { - obj.Prefixes().appendHolderSlice(&isisLspV4Prefix{obj: item}) - } - } - for _, item := range obj.Prefixes().Items() { - item.validateObj(vObj, set_default) + if *obj.obj.Global_2ByteAs > 65535 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("0 <= BgpExtendedCommunityNonTransitive2OctetAsTypeLinkBandwidth.Global_2ByteAs <= 65535 but Got %d", *obj.obj.Global_2ByteAs)) } } } -func (obj *isisLspIpv4InternalReachabilityTlv) setDefault() { +func (obj *bgpExtendedCommunityNonTransitive2OctetAsTypeLinkBandwidth) setDefault() { + if obj.obj.Global_2ByteAs == nil { + obj.SetGlobal2ByteAs(100) + } + if obj.obj.Bandwidth == nil { + obj.SetBandwidth(0) + } } -// ***** IsisLspIpv4ExternalReachabilityTlv ***** -type isisLspIpv4ExternalReachabilityTlv struct { +// ***** BgpSrteSegment ***** +type bgpSrteSegment struct { validation - obj *otg.IsisLspIpv4ExternalReachabilityTlv - prefixesHolder IsisLspIpv4ExternalReachabilityTlvIsisLspV4PrefixIter + obj *otg.BgpSrteSegment + typeAHolder BgpSrteSegmentATypeSubTlv + typeBHolder BgpSrteSegmentBTypeSubTlv + typeCHolder BgpSrteSegmentCTypeSubTlv + typeDHolder BgpSrteSegmentDTypeSubTlv + typeEHolder BgpSrteSegmentETypeSubTlv + typeFHolder BgpSrteSegmentFTypeSubTlv + typeGHolder BgpSrteSegmentGTypeSubTlv + typeHHolder BgpSrteSegmentHTypeSubTlv + typeIHolder BgpSrteSegmentITypeSubTlv + typeJHolder BgpSrteSegmentJTypeSubTlv + typeKHolder BgpSrteSegmentKTypeSubTlv } -func NewIsisLspIpv4ExternalReachabilityTlv() IsisLspIpv4ExternalReachabilityTlv { - obj := isisLspIpv4ExternalReachabilityTlv{obj: &otg.IsisLspIpv4ExternalReachabilityTlv{}} +func NewBgpSrteSegment() BgpSrteSegment { + obj := bgpSrteSegment{obj: &otg.BgpSrteSegment{}} obj.setDefault() return &obj } -func (obj *isisLspIpv4ExternalReachabilityTlv) Msg() *otg.IsisLspIpv4ExternalReachabilityTlv { +func (obj *bgpSrteSegment) Msg() *otg.BgpSrteSegment { return obj.obj } -func (obj *isisLspIpv4ExternalReachabilityTlv) SetMsg(msg *otg.IsisLspIpv4ExternalReachabilityTlv) IsisLspIpv4ExternalReachabilityTlv { +func (obj *bgpSrteSegment) SetMsg(msg *otg.BgpSrteSegment) BgpSrteSegment { obj.setNil() proto.Merge(obj.obj, msg) return obj } -func (obj *isisLspIpv4ExternalReachabilityTlv) ToProto() (*otg.IsisLspIpv4ExternalReachabilityTlv, error) { +func (obj *bgpSrteSegment) ToProto() (*otg.BgpSrteSegment, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -274794,7 +321102,7 @@ func (obj *isisLspIpv4ExternalReachabilityTlv) ToProto() (*otg.IsisLspIpv4Extern return obj.Msg(), nil } -func (obj *isisLspIpv4ExternalReachabilityTlv) FromProto(msg *otg.IsisLspIpv4ExternalReachabilityTlv) (IsisLspIpv4ExternalReachabilityTlv, error) { +func (obj *bgpSrteSegment) FromProto(msg *otg.BgpSrteSegment) (BgpSrteSegment, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -274803,7 +321111,7 @@ func (obj *isisLspIpv4ExternalReachabilityTlv) FromProto(msg *otg.IsisLspIpv4Ext return newObj, nil } -func (obj *isisLspIpv4ExternalReachabilityTlv) ToPbText() (string, error) { +func (obj *bgpSrteSegment) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -274815,7 +321123,7 @@ func (obj *isisLspIpv4ExternalReachabilityTlv) ToPbText() (string, error) { return string(protoMarshal), nil } -func (obj *isisLspIpv4ExternalReachabilityTlv) FromPbText(value string) error { +func (obj *bgpSrteSegment) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj @@ -274828,7 +321136,7 @@ func (obj *isisLspIpv4ExternalReachabilityTlv) FromPbText(value string) error { return retObj } -func (obj *isisLspIpv4ExternalReachabilityTlv) ToYaml() (string, error) { +func (obj *bgpSrteSegment) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -274849,7 +321157,7 @@ func (obj *isisLspIpv4ExternalReachabilityTlv) ToYaml() (string, error) { return string(data), nil } -func (obj *isisLspIpv4ExternalReachabilityTlv) FromYaml(value string) error { +func (obj *bgpSrteSegment) FromYaml(value string) error { if value == "" { value = "{}" } @@ -274874,7 +321182,7 @@ func (obj *isisLspIpv4ExternalReachabilityTlv) FromYaml(value string) error { return nil } -func (obj *isisLspIpv4ExternalReachabilityTlv) ToJson() (string, error) { +func (obj *bgpSrteSegment) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -274892,7 +321200,7 @@ func (obj *isisLspIpv4ExternalReachabilityTlv) ToJson() (string, error) { return string(data), nil } -func (obj *isisLspIpv4ExternalReachabilityTlv) FromJson(value string) error { +func (obj *bgpSrteSegment) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -274913,19 +321221,19 @@ func (obj *isisLspIpv4ExternalReachabilityTlv) FromJson(value string) error { return nil } -func (obj *isisLspIpv4ExternalReachabilityTlv) validateToAndFrom() error { +func (obj *bgpSrteSegment) validateToAndFrom() error { // emptyVars() obj.validateObj(&obj.validation, true) return obj.validationResult() } -func (obj *isisLspIpv4ExternalReachabilityTlv) Validate() error { +func (obj *bgpSrteSegment) Validate() error { // emptyVars() obj.validateObj(&obj.validation, false) return obj.validationResult() } -func (obj *isisLspIpv4ExternalReachabilityTlv) String() string { +func (obj *bgpSrteSegment) String() string { str, err := obj.ToYaml() if err != nil { return err.Error() @@ -274933,12 +321241,12 @@ func (obj *isisLspIpv4ExternalReachabilityTlv) String() string { return str } -func (obj *isisLspIpv4ExternalReachabilityTlv) Clone() (IsisLspIpv4ExternalReachabilityTlv, error) { +func (obj *bgpSrteSegment) Clone() (BgpSrteSegment, error) { vErr := obj.Validate() if vErr != nil { return nil, vErr } - newObj := NewIsisLspIpv4ExternalReachabilityTlv() + newObj := NewBgpSrteSegment() data, err := proto.Marshal(obj.Msg()) if err != nil { return nil, err @@ -274950,189 +321258,656 @@ func (obj *isisLspIpv4ExternalReachabilityTlv) Clone() (IsisLspIpv4ExternalReach return newObj, nil } -func (obj *isisLspIpv4ExternalReachabilityTlv) setNil() { - obj.prefixesHolder = nil +func (obj *bgpSrteSegment) setNil() { + obj.typeAHolder = nil + obj.typeBHolder = nil + obj.typeCHolder = nil + obj.typeDHolder = nil + obj.typeEHolder = nil + obj.typeFHolder = nil + obj.typeGHolder = nil + obj.typeHHolder = nil + obj.typeIHolder = nil + obj.typeJHolder = nil + obj.typeKHolder = nil obj.validationErrors = nil obj.warnings = nil obj.constraints = make(map[string]map[string]Constraints) } -// IsisLspIpv4ExternalReachabilityTlv is this container defines list of IPv4 external reachability information in one IPv4 external reachability TLV. -// This is advertised when the origin-type is set 'external' in route range configurations. -type IsisLspIpv4ExternalReachabilityTlv interface { +// BgpSrteSegment is a Segment sub-TLV describes a single segment in a segment list i.e., a single element of the explicit path. The Segment sub-TLVs are optional. +type BgpSrteSegment interface { Validation - // Msg marshals IsisLspIpv4ExternalReachabilityTlv to protobuf object *otg.IsisLspIpv4ExternalReachabilityTlv + // Msg marshals BgpSrteSegment to protobuf object *otg.BgpSrteSegment // and doesn't set defaults - Msg() *otg.IsisLspIpv4ExternalReachabilityTlv - // SetMsg unmarshals IsisLspIpv4ExternalReachabilityTlv from protobuf object *otg.IsisLspIpv4ExternalReachabilityTlv + Msg() *otg.BgpSrteSegment + // SetMsg unmarshals BgpSrteSegment from protobuf object *otg.BgpSrteSegment // and doesn't set defaults - SetMsg(*otg.IsisLspIpv4ExternalReachabilityTlv) IsisLspIpv4ExternalReachabilityTlv - // ToProto marshals IsisLspIpv4ExternalReachabilityTlv to protobuf object *otg.IsisLspIpv4ExternalReachabilityTlv - ToProto() (*otg.IsisLspIpv4ExternalReachabilityTlv, error) - // ToPbText marshals IsisLspIpv4ExternalReachabilityTlv to protobuf text + SetMsg(*otg.BgpSrteSegment) BgpSrteSegment + // ToProto marshals BgpSrteSegment to protobuf object *otg.BgpSrteSegment + ToProto() (*otg.BgpSrteSegment, error) + // ToPbText marshals BgpSrteSegment to protobuf text ToPbText() (string, error) - // ToYaml marshals IsisLspIpv4ExternalReachabilityTlv to YAML text + // ToYaml marshals BgpSrteSegment to YAML text ToYaml() (string, error) - // ToJson marshals IsisLspIpv4ExternalReachabilityTlv to JSON text + // ToJson marshals BgpSrteSegment to JSON text ToJson() (string, error) - // FromProto unmarshals IsisLspIpv4ExternalReachabilityTlv from protobuf object *otg.IsisLspIpv4ExternalReachabilityTlv - FromProto(msg *otg.IsisLspIpv4ExternalReachabilityTlv) (IsisLspIpv4ExternalReachabilityTlv, error) - // FromPbText unmarshals IsisLspIpv4ExternalReachabilityTlv from protobuf text + // FromProto unmarshals BgpSrteSegment from protobuf object *otg.BgpSrteSegment + FromProto(msg *otg.BgpSrteSegment) (BgpSrteSegment, error) + // FromPbText unmarshals BgpSrteSegment from protobuf text FromPbText(value string) error - // FromYaml unmarshals IsisLspIpv4ExternalReachabilityTlv from YAML text + // FromYaml unmarshals BgpSrteSegment from YAML text FromYaml(value string) error - // FromJson unmarshals IsisLspIpv4ExternalReachabilityTlv from JSON text + // FromJson unmarshals BgpSrteSegment from JSON text FromJson(value string) error - // Validate validates IsisLspIpv4ExternalReachabilityTlv + // Validate validates BgpSrteSegment Validate() error // A stringer function String() string // Clones the object - Clone() (IsisLspIpv4ExternalReachabilityTlv, error) + Clone() (BgpSrteSegment, error) validateToAndFrom() error validateObj(vObj *validation, set_default bool) setDefault() - // Prefixes returns IsisLspIpv4ExternalReachabilityTlvIsisLspV4PrefixIterIter, set in IsisLspIpv4ExternalReachabilityTlv - Prefixes() IsisLspIpv4ExternalReachabilityTlvIsisLspV4PrefixIter + // SegmentType returns BgpSrteSegmentSegmentTypeEnum, set in BgpSrteSegment + SegmentType() BgpSrteSegmentSegmentTypeEnum + // SetSegmentType assigns BgpSrteSegmentSegmentTypeEnum provided by user to BgpSrteSegment + SetSegmentType(value BgpSrteSegmentSegmentTypeEnum) BgpSrteSegment + // TypeA returns BgpSrteSegmentATypeSubTlv, set in BgpSrteSegment. + // BgpSrteSegmentATypeSubTlv is type A: SID only, in the form of MPLS Label. + TypeA() BgpSrteSegmentATypeSubTlv + // SetTypeA assigns BgpSrteSegmentATypeSubTlv provided by user to BgpSrteSegment. + // BgpSrteSegmentATypeSubTlv is type A: SID only, in the form of MPLS Label. + SetTypeA(value BgpSrteSegmentATypeSubTlv) BgpSrteSegment + // HasTypeA checks if TypeA has been set in BgpSrteSegment + HasTypeA() bool + // TypeB returns BgpSrteSegmentBTypeSubTlv, set in BgpSrteSegment. + // BgpSrteSegmentBTypeSubTlv is type B: SID only, in the form of IPv6 address. + TypeB() BgpSrteSegmentBTypeSubTlv + // SetTypeB assigns BgpSrteSegmentBTypeSubTlv provided by user to BgpSrteSegment. + // BgpSrteSegmentBTypeSubTlv is type B: SID only, in the form of IPv6 address. + SetTypeB(value BgpSrteSegmentBTypeSubTlv) BgpSrteSegment + // HasTypeB checks if TypeB has been set in BgpSrteSegment + HasTypeB() bool + // TypeC returns BgpSrteSegmentCTypeSubTlv, set in BgpSrteSegment. + // BgpSrteSegmentCTypeSubTlv is type C: IPv4 Node Address with optional SID. + TypeC() BgpSrteSegmentCTypeSubTlv + // SetTypeC assigns BgpSrteSegmentCTypeSubTlv provided by user to BgpSrteSegment. + // BgpSrteSegmentCTypeSubTlv is type C: IPv4 Node Address with optional SID. + SetTypeC(value BgpSrteSegmentCTypeSubTlv) BgpSrteSegment + // HasTypeC checks if TypeC has been set in BgpSrteSegment + HasTypeC() bool + // TypeD returns BgpSrteSegmentDTypeSubTlv, set in BgpSrteSegment. + // BgpSrteSegmentDTypeSubTlv is type D: IPv6 Node Address with optional SID for SR MPLS. + TypeD() BgpSrteSegmentDTypeSubTlv + // SetTypeD assigns BgpSrteSegmentDTypeSubTlv provided by user to BgpSrteSegment. + // BgpSrteSegmentDTypeSubTlv is type D: IPv6 Node Address with optional SID for SR MPLS. + SetTypeD(value BgpSrteSegmentDTypeSubTlv) BgpSrteSegment + // HasTypeD checks if TypeD has been set in BgpSrteSegment + HasTypeD() bool + // TypeE returns BgpSrteSegmentETypeSubTlv, set in BgpSrteSegment. + // BgpSrteSegmentETypeSubTlv is type E: IPv4 Address and Local Interface ID with optional SID + TypeE() BgpSrteSegmentETypeSubTlv + // SetTypeE assigns BgpSrteSegmentETypeSubTlv provided by user to BgpSrteSegment. + // BgpSrteSegmentETypeSubTlv is type E: IPv4 Address and Local Interface ID with optional SID + SetTypeE(value BgpSrteSegmentETypeSubTlv) BgpSrteSegment + // HasTypeE checks if TypeE has been set in BgpSrteSegment + HasTypeE() bool + // TypeF returns BgpSrteSegmentFTypeSubTlv, set in BgpSrteSegment. + // BgpSrteSegmentFTypeSubTlv is type F: IPv4 Local and Remote addresses with optional SID. + TypeF() BgpSrteSegmentFTypeSubTlv + // SetTypeF assigns BgpSrteSegmentFTypeSubTlv provided by user to BgpSrteSegment. + // BgpSrteSegmentFTypeSubTlv is type F: IPv4 Local and Remote addresses with optional SID. + SetTypeF(value BgpSrteSegmentFTypeSubTlv) BgpSrteSegment + // HasTypeF checks if TypeF has been set in BgpSrteSegment + HasTypeF() bool + // TypeG returns BgpSrteSegmentGTypeSubTlv, set in BgpSrteSegment. + // BgpSrteSegmentGTypeSubTlv is type G: IPv6 Address, Interface ID for local and remote pair with optional SID for SR MPLS. + TypeG() BgpSrteSegmentGTypeSubTlv + // SetTypeG assigns BgpSrteSegmentGTypeSubTlv provided by user to BgpSrteSegment. + // BgpSrteSegmentGTypeSubTlv is type G: IPv6 Address, Interface ID for local and remote pair with optional SID for SR MPLS. + SetTypeG(value BgpSrteSegmentGTypeSubTlv) BgpSrteSegment + // HasTypeG checks if TypeG has been set in BgpSrteSegment + HasTypeG() bool + // TypeH returns BgpSrteSegmentHTypeSubTlv, set in BgpSrteSegment. + // BgpSrteSegmentHTypeSubTlv is type H: IPv6 Local and Remote addresses with optional SID for SR MPLS. + TypeH() BgpSrteSegmentHTypeSubTlv + // SetTypeH assigns BgpSrteSegmentHTypeSubTlv provided by user to BgpSrteSegment. + // BgpSrteSegmentHTypeSubTlv is type H: IPv6 Local and Remote addresses with optional SID for SR MPLS. + SetTypeH(value BgpSrteSegmentHTypeSubTlv) BgpSrteSegment + // HasTypeH checks if TypeH has been set in BgpSrteSegment + HasTypeH() bool + // TypeI returns BgpSrteSegmentITypeSubTlv, set in BgpSrteSegment. + // BgpSrteSegmentITypeSubTlv is type I: IPv6 Node Address with optional SRv6 SID. + TypeI() BgpSrteSegmentITypeSubTlv + // SetTypeI assigns BgpSrteSegmentITypeSubTlv provided by user to BgpSrteSegment. + // BgpSrteSegmentITypeSubTlv is type I: IPv6 Node Address with optional SRv6 SID. + SetTypeI(value BgpSrteSegmentITypeSubTlv) BgpSrteSegment + // HasTypeI checks if TypeI has been set in BgpSrteSegment + HasTypeI() bool + // TypeJ returns BgpSrteSegmentJTypeSubTlv, set in BgpSrteSegment. + // BgpSrteSegmentJTypeSubTlv is type J: IPv6 Address, Interface ID for local and remote pair for SRv6 with optional SID. + TypeJ() BgpSrteSegmentJTypeSubTlv + // SetTypeJ assigns BgpSrteSegmentJTypeSubTlv provided by user to BgpSrteSegment. + // BgpSrteSegmentJTypeSubTlv is type J: IPv6 Address, Interface ID for local and remote pair for SRv6 with optional SID. + SetTypeJ(value BgpSrteSegmentJTypeSubTlv) BgpSrteSegment + // HasTypeJ checks if TypeJ has been set in BgpSrteSegment + HasTypeJ() bool + // TypeK returns BgpSrteSegmentKTypeSubTlv, set in BgpSrteSegment. + // BgpSrteSegmentKTypeSubTlv is type K: IPv6 Local and Remote addresses for SRv6 with optional SID. + TypeK() BgpSrteSegmentKTypeSubTlv + // SetTypeK assigns BgpSrteSegmentKTypeSubTlv provided by user to BgpSrteSegment. + // BgpSrteSegmentKTypeSubTlv is type K: IPv6 Local and Remote addresses for SRv6 with optional SID. + SetTypeK(value BgpSrteSegmentKTypeSubTlv) BgpSrteSegment + // HasTypeK checks if TypeK has been set in BgpSrteSegment + HasTypeK() bool + // Name returns string, set in BgpSrteSegment. + Name() string + // SetName assigns string provided by user to BgpSrteSegment + SetName(value string) BgpSrteSegment + // Active returns bool, set in BgpSrteSegment. + Active() bool + // SetActive assigns bool provided by user to BgpSrteSegment + SetActive(value bool) BgpSrteSegment + // HasActive checks if Active has been set in BgpSrteSegment + HasActive() bool setNil() } -// Describes list of IPv4 prefixes in this TLV.. -// Prefixes returns a []IsisLspV4Prefix -func (obj *isisLspIpv4ExternalReachabilityTlv) Prefixes() IsisLspIpv4ExternalReachabilityTlvIsisLspV4PrefixIter { - if len(obj.obj.Prefixes) == 0 { - obj.obj.Prefixes = []*otg.IsisLspV4Prefix{} +type BgpSrteSegmentSegmentTypeEnum string + +// Enum of SegmentType on BgpSrteSegment +var BgpSrteSegmentSegmentType = struct { + TYPE_A BgpSrteSegmentSegmentTypeEnum + TYPE_B BgpSrteSegmentSegmentTypeEnum + TYPE_C BgpSrteSegmentSegmentTypeEnum + TYPE_D BgpSrteSegmentSegmentTypeEnum + TYPE_E BgpSrteSegmentSegmentTypeEnum + TYPE_F BgpSrteSegmentSegmentTypeEnum + TYPE_G BgpSrteSegmentSegmentTypeEnum + TYPE_H BgpSrteSegmentSegmentTypeEnum + TYPE_I BgpSrteSegmentSegmentTypeEnum + TYPE_J BgpSrteSegmentSegmentTypeEnum + TYPE_K BgpSrteSegmentSegmentTypeEnum +}{ + TYPE_A: BgpSrteSegmentSegmentTypeEnum("type_a"), + TYPE_B: BgpSrteSegmentSegmentTypeEnum("type_b"), + TYPE_C: BgpSrteSegmentSegmentTypeEnum("type_c"), + TYPE_D: BgpSrteSegmentSegmentTypeEnum("type_d"), + TYPE_E: BgpSrteSegmentSegmentTypeEnum("type_e"), + TYPE_F: BgpSrteSegmentSegmentTypeEnum("type_f"), + TYPE_G: BgpSrteSegmentSegmentTypeEnum("type_g"), + TYPE_H: BgpSrteSegmentSegmentTypeEnum("type_h"), + TYPE_I: BgpSrteSegmentSegmentTypeEnum("type_i"), + TYPE_J: BgpSrteSegmentSegmentTypeEnum("type_j"), + TYPE_K: BgpSrteSegmentSegmentTypeEnum("type_k"), +} + +func (obj *bgpSrteSegment) SegmentType() BgpSrteSegmentSegmentTypeEnum { + return BgpSrteSegmentSegmentTypeEnum(obj.obj.SegmentType.Enum().String()) +} + +func (obj *bgpSrteSegment) SetSegmentType(value BgpSrteSegmentSegmentTypeEnum) BgpSrteSegment { + intValue, ok := otg.BgpSrteSegment_SegmentType_Enum_value[string(value)] + if !ok { + obj.validationErrors = append(obj.validationErrors, fmt.Sprintf( + "%s is not a valid choice on BgpSrteSegmentSegmentTypeEnum", string(value))) + return obj } - if obj.prefixesHolder == nil { - obj.prefixesHolder = newIsisLspIpv4ExternalReachabilityTlvIsisLspV4PrefixIter(&obj.obj.Prefixes).setMsg(obj) + enumValue := otg.BgpSrteSegment_SegmentType_Enum(intValue) + obj.obj.SegmentType = &enumValue + + return obj +} + +// description is TBD +// TypeA returns a BgpSrteSegmentATypeSubTlv +func (obj *bgpSrteSegment) TypeA() BgpSrteSegmentATypeSubTlv { + if obj.obj.TypeA == nil { + obj.obj.TypeA = NewBgpSrteSegmentATypeSubTlv().Msg() } - return obj.prefixesHolder + if obj.typeAHolder == nil { + obj.typeAHolder = &bgpSrteSegmentATypeSubTlv{obj: obj.obj.TypeA} + } + return obj.typeAHolder } -type isisLspIpv4ExternalReachabilityTlvIsisLspV4PrefixIter struct { - obj *isisLspIpv4ExternalReachabilityTlv - isisLspV4PrefixSlice []IsisLspV4Prefix - fieldPtr *[]*otg.IsisLspV4Prefix +// description is TBD +// TypeA returns a BgpSrteSegmentATypeSubTlv +func (obj *bgpSrteSegment) HasTypeA() bool { + return obj.obj.TypeA != nil } -func newIsisLspIpv4ExternalReachabilityTlvIsisLspV4PrefixIter(ptr *[]*otg.IsisLspV4Prefix) IsisLspIpv4ExternalReachabilityTlvIsisLspV4PrefixIter { - return &isisLspIpv4ExternalReachabilityTlvIsisLspV4PrefixIter{fieldPtr: ptr} +// description is TBD +// SetTypeA sets the BgpSrteSegmentATypeSubTlv value in the BgpSrteSegment object +func (obj *bgpSrteSegment) SetTypeA(value BgpSrteSegmentATypeSubTlv) BgpSrteSegment { + + obj.typeAHolder = nil + obj.obj.TypeA = value.Msg() + + return obj +} + +// description is TBD +// TypeB returns a BgpSrteSegmentBTypeSubTlv +func (obj *bgpSrteSegment) TypeB() BgpSrteSegmentBTypeSubTlv { + if obj.obj.TypeB == nil { + obj.obj.TypeB = NewBgpSrteSegmentBTypeSubTlv().Msg() + } + if obj.typeBHolder == nil { + obj.typeBHolder = &bgpSrteSegmentBTypeSubTlv{obj: obj.obj.TypeB} + } + return obj.typeBHolder +} + +// description is TBD +// TypeB returns a BgpSrteSegmentBTypeSubTlv +func (obj *bgpSrteSegment) HasTypeB() bool { + return obj.obj.TypeB != nil +} + +// description is TBD +// SetTypeB sets the BgpSrteSegmentBTypeSubTlv value in the BgpSrteSegment object +func (obj *bgpSrteSegment) SetTypeB(value BgpSrteSegmentBTypeSubTlv) BgpSrteSegment { + + obj.typeBHolder = nil + obj.obj.TypeB = value.Msg() + + return obj +} + +// description is TBD +// TypeC returns a BgpSrteSegmentCTypeSubTlv +func (obj *bgpSrteSegment) TypeC() BgpSrteSegmentCTypeSubTlv { + if obj.obj.TypeC == nil { + obj.obj.TypeC = NewBgpSrteSegmentCTypeSubTlv().Msg() + } + if obj.typeCHolder == nil { + obj.typeCHolder = &bgpSrteSegmentCTypeSubTlv{obj: obj.obj.TypeC} + } + return obj.typeCHolder +} + +// description is TBD +// TypeC returns a BgpSrteSegmentCTypeSubTlv +func (obj *bgpSrteSegment) HasTypeC() bool { + return obj.obj.TypeC != nil +} + +// description is TBD +// SetTypeC sets the BgpSrteSegmentCTypeSubTlv value in the BgpSrteSegment object +func (obj *bgpSrteSegment) SetTypeC(value BgpSrteSegmentCTypeSubTlv) BgpSrteSegment { + + obj.typeCHolder = nil + obj.obj.TypeC = value.Msg() + + return obj +} + +// description is TBD +// TypeD returns a BgpSrteSegmentDTypeSubTlv +func (obj *bgpSrteSegment) TypeD() BgpSrteSegmentDTypeSubTlv { + if obj.obj.TypeD == nil { + obj.obj.TypeD = NewBgpSrteSegmentDTypeSubTlv().Msg() + } + if obj.typeDHolder == nil { + obj.typeDHolder = &bgpSrteSegmentDTypeSubTlv{obj: obj.obj.TypeD} + } + return obj.typeDHolder +} + +// description is TBD +// TypeD returns a BgpSrteSegmentDTypeSubTlv +func (obj *bgpSrteSegment) HasTypeD() bool { + return obj.obj.TypeD != nil +} + +// description is TBD +// SetTypeD sets the BgpSrteSegmentDTypeSubTlv value in the BgpSrteSegment object +func (obj *bgpSrteSegment) SetTypeD(value BgpSrteSegmentDTypeSubTlv) BgpSrteSegment { + + obj.typeDHolder = nil + obj.obj.TypeD = value.Msg() + + return obj +} + +// description is TBD +// TypeE returns a BgpSrteSegmentETypeSubTlv +func (obj *bgpSrteSegment) TypeE() BgpSrteSegmentETypeSubTlv { + if obj.obj.TypeE == nil { + obj.obj.TypeE = NewBgpSrteSegmentETypeSubTlv().Msg() + } + if obj.typeEHolder == nil { + obj.typeEHolder = &bgpSrteSegmentETypeSubTlv{obj: obj.obj.TypeE} + } + return obj.typeEHolder +} + +// description is TBD +// TypeE returns a BgpSrteSegmentETypeSubTlv +func (obj *bgpSrteSegment) HasTypeE() bool { + return obj.obj.TypeE != nil +} + +// description is TBD +// SetTypeE sets the BgpSrteSegmentETypeSubTlv value in the BgpSrteSegment object +func (obj *bgpSrteSegment) SetTypeE(value BgpSrteSegmentETypeSubTlv) BgpSrteSegment { + + obj.typeEHolder = nil + obj.obj.TypeE = value.Msg() + + return obj +} + +// description is TBD +// TypeF returns a BgpSrteSegmentFTypeSubTlv +func (obj *bgpSrteSegment) TypeF() BgpSrteSegmentFTypeSubTlv { + if obj.obj.TypeF == nil { + obj.obj.TypeF = NewBgpSrteSegmentFTypeSubTlv().Msg() + } + if obj.typeFHolder == nil { + obj.typeFHolder = &bgpSrteSegmentFTypeSubTlv{obj: obj.obj.TypeF} + } + return obj.typeFHolder +} + +// description is TBD +// TypeF returns a BgpSrteSegmentFTypeSubTlv +func (obj *bgpSrteSegment) HasTypeF() bool { + return obj.obj.TypeF != nil +} + +// description is TBD +// SetTypeF sets the BgpSrteSegmentFTypeSubTlv value in the BgpSrteSegment object +func (obj *bgpSrteSegment) SetTypeF(value BgpSrteSegmentFTypeSubTlv) BgpSrteSegment { + + obj.typeFHolder = nil + obj.obj.TypeF = value.Msg() + + return obj +} + +// description is TBD +// TypeG returns a BgpSrteSegmentGTypeSubTlv +func (obj *bgpSrteSegment) TypeG() BgpSrteSegmentGTypeSubTlv { + if obj.obj.TypeG == nil { + obj.obj.TypeG = NewBgpSrteSegmentGTypeSubTlv().Msg() + } + if obj.typeGHolder == nil { + obj.typeGHolder = &bgpSrteSegmentGTypeSubTlv{obj: obj.obj.TypeG} + } + return obj.typeGHolder +} + +// description is TBD +// TypeG returns a BgpSrteSegmentGTypeSubTlv +func (obj *bgpSrteSegment) HasTypeG() bool { + return obj.obj.TypeG != nil +} + +// description is TBD +// SetTypeG sets the BgpSrteSegmentGTypeSubTlv value in the BgpSrteSegment object +func (obj *bgpSrteSegment) SetTypeG(value BgpSrteSegmentGTypeSubTlv) BgpSrteSegment { + + obj.typeGHolder = nil + obj.obj.TypeG = value.Msg() + + return obj +} + +// description is TBD +// TypeH returns a BgpSrteSegmentHTypeSubTlv +func (obj *bgpSrteSegment) TypeH() BgpSrteSegmentHTypeSubTlv { + if obj.obj.TypeH == nil { + obj.obj.TypeH = NewBgpSrteSegmentHTypeSubTlv().Msg() + } + if obj.typeHHolder == nil { + obj.typeHHolder = &bgpSrteSegmentHTypeSubTlv{obj: obj.obj.TypeH} + } + return obj.typeHHolder +} + +// description is TBD +// TypeH returns a BgpSrteSegmentHTypeSubTlv +func (obj *bgpSrteSegment) HasTypeH() bool { + return obj.obj.TypeH != nil +} + +// description is TBD +// SetTypeH sets the BgpSrteSegmentHTypeSubTlv value in the BgpSrteSegment object +func (obj *bgpSrteSegment) SetTypeH(value BgpSrteSegmentHTypeSubTlv) BgpSrteSegment { + + obj.typeHHolder = nil + obj.obj.TypeH = value.Msg() + + return obj +} + +// description is TBD +// TypeI returns a BgpSrteSegmentITypeSubTlv +func (obj *bgpSrteSegment) TypeI() BgpSrteSegmentITypeSubTlv { + if obj.obj.TypeI == nil { + obj.obj.TypeI = NewBgpSrteSegmentITypeSubTlv().Msg() + } + if obj.typeIHolder == nil { + obj.typeIHolder = &bgpSrteSegmentITypeSubTlv{obj: obj.obj.TypeI} + } + return obj.typeIHolder +} + +// description is TBD +// TypeI returns a BgpSrteSegmentITypeSubTlv +func (obj *bgpSrteSegment) HasTypeI() bool { + return obj.obj.TypeI != nil +} + +// description is TBD +// SetTypeI sets the BgpSrteSegmentITypeSubTlv value in the BgpSrteSegment object +func (obj *bgpSrteSegment) SetTypeI(value BgpSrteSegmentITypeSubTlv) BgpSrteSegment { + + obj.typeIHolder = nil + obj.obj.TypeI = value.Msg() + + return obj +} + +// description is TBD +// TypeJ returns a BgpSrteSegmentJTypeSubTlv +func (obj *bgpSrteSegment) TypeJ() BgpSrteSegmentJTypeSubTlv { + if obj.obj.TypeJ == nil { + obj.obj.TypeJ = NewBgpSrteSegmentJTypeSubTlv().Msg() + } + if obj.typeJHolder == nil { + obj.typeJHolder = &bgpSrteSegmentJTypeSubTlv{obj: obj.obj.TypeJ} + } + return obj.typeJHolder +} + +// description is TBD +// TypeJ returns a BgpSrteSegmentJTypeSubTlv +func (obj *bgpSrteSegment) HasTypeJ() bool { + return obj.obj.TypeJ != nil +} + +// description is TBD +// SetTypeJ sets the BgpSrteSegmentJTypeSubTlv value in the BgpSrteSegment object +func (obj *bgpSrteSegment) SetTypeJ(value BgpSrteSegmentJTypeSubTlv) BgpSrteSegment { + + obj.typeJHolder = nil + obj.obj.TypeJ = value.Msg() + + return obj +} + +// description is TBD +// TypeK returns a BgpSrteSegmentKTypeSubTlv +func (obj *bgpSrteSegment) TypeK() BgpSrteSegmentKTypeSubTlv { + if obj.obj.TypeK == nil { + obj.obj.TypeK = NewBgpSrteSegmentKTypeSubTlv().Msg() + } + if obj.typeKHolder == nil { + obj.typeKHolder = &bgpSrteSegmentKTypeSubTlv{obj: obj.obj.TypeK} + } + return obj.typeKHolder } -type IsisLspIpv4ExternalReachabilityTlvIsisLspV4PrefixIter interface { - setMsg(*isisLspIpv4ExternalReachabilityTlv) IsisLspIpv4ExternalReachabilityTlvIsisLspV4PrefixIter - Items() []IsisLspV4Prefix - Add() IsisLspV4Prefix - Append(items ...IsisLspV4Prefix) IsisLspIpv4ExternalReachabilityTlvIsisLspV4PrefixIter - Set(index int, newObj IsisLspV4Prefix) IsisLspIpv4ExternalReachabilityTlvIsisLspV4PrefixIter - Clear() IsisLspIpv4ExternalReachabilityTlvIsisLspV4PrefixIter - clearHolderSlice() IsisLspIpv4ExternalReachabilityTlvIsisLspV4PrefixIter - appendHolderSlice(item IsisLspV4Prefix) IsisLspIpv4ExternalReachabilityTlvIsisLspV4PrefixIter +// description is TBD +// TypeK returns a BgpSrteSegmentKTypeSubTlv +func (obj *bgpSrteSegment) HasTypeK() bool { + return obj.obj.TypeK != nil } -func (obj *isisLspIpv4ExternalReachabilityTlvIsisLspV4PrefixIter) setMsg(msg *isisLspIpv4ExternalReachabilityTlv) IsisLspIpv4ExternalReachabilityTlvIsisLspV4PrefixIter { - obj.clearHolderSlice() - for _, val := range *obj.fieldPtr { - obj.appendHolderSlice(&isisLspV4Prefix{obj: val}) - } - obj.obj = msg +// description is TBD +// SetTypeK sets the BgpSrteSegmentKTypeSubTlv value in the BgpSrteSegment object +func (obj *bgpSrteSegment) SetTypeK(value BgpSrteSegmentKTypeSubTlv) BgpSrteSegment { + + obj.typeKHolder = nil + obj.obj.TypeK = value.Msg() + return obj } -func (obj *isisLspIpv4ExternalReachabilityTlvIsisLspV4PrefixIter) Items() []IsisLspV4Prefix { - return obj.isisLspV4PrefixSlice -} +// Globally unique name of an object. It also serves as the primary key for arrays of objects. +// Name returns a string +func (obj *bgpSrteSegment) Name() string { -func (obj *isisLspIpv4ExternalReachabilityTlvIsisLspV4PrefixIter) Add() IsisLspV4Prefix { - newObj := &otg.IsisLspV4Prefix{} - *obj.fieldPtr = append(*obj.fieldPtr, newObj) - newLibObj := &isisLspV4Prefix{obj: newObj} - newLibObj.setDefault() - obj.isisLspV4PrefixSlice = append(obj.isisLspV4PrefixSlice, newLibObj) - return newLibObj -} + return *obj.obj.Name -func (obj *isisLspIpv4ExternalReachabilityTlvIsisLspV4PrefixIter) Append(items ...IsisLspV4Prefix) IsisLspIpv4ExternalReachabilityTlvIsisLspV4PrefixIter { - for _, item := range items { - newObj := item.Msg() - *obj.fieldPtr = append(*obj.fieldPtr, newObj) - obj.isisLspV4PrefixSlice = append(obj.isisLspV4PrefixSlice, item) - } - return obj } -func (obj *isisLspIpv4ExternalReachabilityTlvIsisLspV4PrefixIter) Set(index int, newObj IsisLspV4Prefix) IsisLspIpv4ExternalReachabilityTlvIsisLspV4PrefixIter { - (*obj.fieldPtr)[index] = newObj.Msg() - obj.isisLspV4PrefixSlice[index] = newObj +// Globally unique name of an object. It also serves as the primary key for arrays of objects. +// SetName sets the string value in the BgpSrteSegment object +func (obj *bgpSrteSegment) SetName(value string) BgpSrteSegment { + + obj.obj.Name = &value return obj } -func (obj *isisLspIpv4ExternalReachabilityTlvIsisLspV4PrefixIter) Clear() IsisLspIpv4ExternalReachabilityTlvIsisLspV4PrefixIter { - if len(*obj.fieldPtr) > 0 { - *obj.fieldPtr = []*otg.IsisLspV4Prefix{} - obj.isisLspV4PrefixSlice = []IsisLspV4Prefix{} - } - return obj + +// If enabled means that this part of the configuration including any active 'children' nodes will be advertised to peer. If disabled, this means that though config is present, it is not taking any part of the test but can be activated at run-time to advertise just this part of the configuration to the peer. +// Active returns a bool +func (obj *bgpSrteSegment) Active() bool { + + return *obj.obj.Active + } -func (obj *isisLspIpv4ExternalReachabilityTlvIsisLspV4PrefixIter) clearHolderSlice() IsisLspIpv4ExternalReachabilityTlvIsisLspV4PrefixIter { - if len(obj.isisLspV4PrefixSlice) > 0 { - obj.isisLspV4PrefixSlice = []IsisLspV4Prefix{} - } - return obj + +// If enabled means that this part of the configuration including any active 'children' nodes will be advertised to peer. If disabled, this means that though config is present, it is not taking any part of the test but can be activated at run-time to advertise just this part of the configuration to the peer. +// Active returns a bool +func (obj *bgpSrteSegment) HasActive() bool { + return obj.obj.Active != nil } -func (obj *isisLspIpv4ExternalReachabilityTlvIsisLspV4PrefixIter) appendHolderSlice(item IsisLspV4Prefix) IsisLspIpv4ExternalReachabilityTlvIsisLspV4PrefixIter { - obj.isisLspV4PrefixSlice = append(obj.isisLspV4PrefixSlice, item) + +// If enabled means that this part of the configuration including any active 'children' nodes will be advertised to peer. If disabled, this means that though config is present, it is not taking any part of the test but can be activated at run-time to advertise just this part of the configuration to the peer. +// SetActive sets the bool value in the BgpSrteSegment object +func (obj *bgpSrteSegment) SetActive(value bool) BgpSrteSegment { + + obj.obj.Active = &value return obj } -func (obj *isisLspIpv4ExternalReachabilityTlv) validateObj(vObj *validation, set_default bool) { +func (obj *bgpSrteSegment) validateObj(vObj *validation, set_default bool) { if set_default { obj.setDefault() } - if len(obj.obj.Prefixes) != 0 { + // SegmentType is required + if obj.obj.SegmentType == nil { + vObj.validationErrors = append(vObj.validationErrors, "SegmentType is required field on interface BgpSrteSegment") + } - if set_default { - obj.Prefixes().clearHolderSlice() - for _, item := range obj.obj.Prefixes { - obj.Prefixes().appendHolderSlice(&isisLspV4Prefix{obj: item}) - } - } - for _, item := range obj.Prefixes().Items() { - item.validateObj(vObj, set_default) - } + if obj.obj.TypeA != nil { + + obj.TypeA().validateObj(vObj, set_default) + } + + if obj.obj.TypeB != nil { + + obj.TypeB().validateObj(vObj, set_default) + } + + if obj.obj.TypeC != nil { + + obj.TypeC().validateObj(vObj, set_default) + } + + if obj.obj.TypeD != nil { + + obj.TypeD().validateObj(vObj, set_default) + } + + if obj.obj.TypeE != nil { + + obj.TypeE().validateObj(vObj, set_default) + } + + if obj.obj.TypeF != nil { + + obj.TypeF().validateObj(vObj, set_default) + } + + if obj.obj.TypeG != nil { + + obj.TypeG().validateObj(vObj, set_default) + } + + if obj.obj.TypeH != nil { + + obj.TypeH().validateObj(vObj, set_default) + } + + if obj.obj.TypeI != nil { + obj.TypeI().validateObj(vObj, set_default) + } + + if obj.obj.TypeJ != nil { + + obj.TypeJ().validateObj(vObj, set_default) + } + + if obj.obj.TypeK != nil { + + obj.TypeK().validateObj(vObj, set_default) } + // Name is required + if obj.obj.Name == nil { + vObj.validationErrors = append(vObj.validationErrors, "Name is required field on interface BgpSrteSegment") + } } -func (obj *isisLspIpv4ExternalReachabilityTlv) setDefault() { +func (obj *bgpSrteSegment) setDefault() { + if obj.obj.Active == nil { + obj.SetActive(true) + } } -// ***** IsisLspExtendedIpv4ReachabilityTlv ***** -type isisLspExtendedIpv4ReachabilityTlv struct { +// ***** BgpV6EviVxlanBroadcastDomain ***** +type bgpV6EviVxlanBroadcastDomain struct { validation - obj *otg.IsisLspExtendedIpv4ReachabilityTlv - prefixesHolder IsisLspExtendedIpv4ReachabilityTlvIsisLspExtendedV4PrefixIter + obj *otg.BgpV6EviVxlanBroadcastDomain + cmacIpRangeHolder BgpV6EviVxlanBroadcastDomainBgpCMacIpRangeIter } -func NewIsisLspExtendedIpv4ReachabilityTlv() IsisLspExtendedIpv4ReachabilityTlv { - obj := isisLspExtendedIpv4ReachabilityTlv{obj: &otg.IsisLspExtendedIpv4ReachabilityTlv{}} +func NewBgpV6EviVxlanBroadcastDomain() BgpV6EviVxlanBroadcastDomain { + obj := bgpV6EviVxlanBroadcastDomain{obj: &otg.BgpV6EviVxlanBroadcastDomain{}} obj.setDefault() return &obj } -func (obj *isisLspExtendedIpv4ReachabilityTlv) Msg() *otg.IsisLspExtendedIpv4ReachabilityTlv { +func (obj *bgpV6EviVxlanBroadcastDomain) Msg() *otg.BgpV6EviVxlanBroadcastDomain { return obj.obj } -func (obj *isisLspExtendedIpv4ReachabilityTlv) SetMsg(msg *otg.IsisLspExtendedIpv4ReachabilityTlv) IsisLspExtendedIpv4ReachabilityTlv { +func (obj *bgpV6EviVxlanBroadcastDomain) SetMsg(msg *otg.BgpV6EviVxlanBroadcastDomain) BgpV6EviVxlanBroadcastDomain { obj.setNil() proto.Merge(obj.obj, msg) return obj } -func (obj *isisLspExtendedIpv4ReachabilityTlv) ToProto() (*otg.IsisLspExtendedIpv4ReachabilityTlv, error) { +func (obj *bgpV6EviVxlanBroadcastDomain) ToProto() (*otg.BgpV6EviVxlanBroadcastDomain, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -275140,7 +321915,7 @@ func (obj *isisLspExtendedIpv4ReachabilityTlv) ToProto() (*otg.IsisLspExtendedIp return obj.Msg(), nil } -func (obj *isisLspExtendedIpv4ReachabilityTlv) FromProto(msg *otg.IsisLspExtendedIpv4ReachabilityTlv) (IsisLspExtendedIpv4ReachabilityTlv, error) { +func (obj *bgpV6EviVxlanBroadcastDomain) FromProto(msg *otg.BgpV6EviVxlanBroadcastDomain) (BgpV6EviVxlanBroadcastDomain, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -275149,7 +321924,7 @@ func (obj *isisLspExtendedIpv4ReachabilityTlv) FromProto(msg *otg.IsisLspExtende return newObj, nil } -func (obj *isisLspExtendedIpv4ReachabilityTlv) ToPbText() (string, error) { +func (obj *bgpV6EviVxlanBroadcastDomain) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -275161,7 +321936,7 @@ func (obj *isisLspExtendedIpv4ReachabilityTlv) ToPbText() (string, error) { return string(protoMarshal), nil } -func (obj *isisLspExtendedIpv4ReachabilityTlv) FromPbText(value string) error { +func (obj *bgpV6EviVxlanBroadcastDomain) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj @@ -275174,7 +321949,7 @@ func (obj *isisLspExtendedIpv4ReachabilityTlv) FromPbText(value string) error { return retObj } -func (obj *isisLspExtendedIpv4ReachabilityTlv) ToYaml() (string, error) { +func (obj *bgpV6EviVxlanBroadcastDomain) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -275195,7 +321970,7 @@ func (obj *isisLspExtendedIpv4ReachabilityTlv) ToYaml() (string, error) { return string(data), nil } -func (obj *isisLspExtendedIpv4ReachabilityTlv) FromYaml(value string) error { +func (obj *bgpV6EviVxlanBroadcastDomain) FromYaml(value string) error { if value == "" { value = "{}" } @@ -275220,7 +321995,7 @@ func (obj *isisLspExtendedIpv4ReachabilityTlv) FromYaml(value string) error { return nil } -func (obj *isisLspExtendedIpv4ReachabilityTlv) ToJson() (string, error) { +func (obj *bgpV6EviVxlanBroadcastDomain) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -275238,7 +322013,7 @@ func (obj *isisLspExtendedIpv4ReachabilityTlv) ToJson() (string, error) { return string(data), nil } -func (obj *isisLspExtendedIpv4ReachabilityTlv) FromJson(value string) error { +func (obj *bgpV6EviVxlanBroadcastDomain) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -275259,19 +322034,19 @@ func (obj *isisLspExtendedIpv4ReachabilityTlv) FromJson(value string) error { return nil } -func (obj *isisLspExtendedIpv4ReachabilityTlv) validateToAndFrom() error { +func (obj *bgpV6EviVxlanBroadcastDomain) validateToAndFrom() error { // emptyVars() obj.validateObj(&obj.validation, true) return obj.validationResult() } -func (obj *isisLspExtendedIpv4ReachabilityTlv) Validate() error { +func (obj *bgpV6EviVxlanBroadcastDomain) Validate() error { // emptyVars() obj.validateObj(&obj.validation, false) return obj.validationResult() } -func (obj *isisLspExtendedIpv4ReachabilityTlv) String() string { +func (obj *bgpV6EviVxlanBroadcastDomain) String() string { str, err := obj.ToYaml() if err != nil { return err.Error() @@ -275279,12 +322054,12 @@ func (obj *isisLspExtendedIpv4ReachabilityTlv) String() string { return str } -func (obj *isisLspExtendedIpv4ReachabilityTlv) Clone() (IsisLspExtendedIpv4ReachabilityTlv, error) { +func (obj *bgpV6EviVxlanBroadcastDomain) Clone() (BgpV6EviVxlanBroadcastDomain, error) { vErr := obj.Validate() if vErr != nil { return nil, vErr } - newObj := NewIsisLspExtendedIpv4ReachabilityTlv() + newObj := NewBgpV6EviVxlanBroadcastDomain() data, err := proto.Marshal(obj.Msg()) if err != nil { return nil, err @@ -275296,154 +322071,212 @@ func (obj *isisLspExtendedIpv4ReachabilityTlv) Clone() (IsisLspExtendedIpv4Reach return newObj, nil } -func (obj *isisLspExtendedIpv4ReachabilityTlv) setNil() { - obj.prefixesHolder = nil +func (obj *bgpV6EviVxlanBroadcastDomain) setNil() { + obj.cmacIpRangeHolder = nil obj.validationErrors = nil obj.warnings = nil obj.constraints = make(map[string]map[string]Constraints) } -// IsisLspExtendedIpv4ReachabilityTlv is this container defines list of IPv4 extended reachability information in one Extended IPv4 External Reachability TLV. -// It is advertised when the 'wide metric' is enabled. -type IsisLspExtendedIpv4ReachabilityTlv interface { +// BgpV6EviVxlanBroadcastDomain is configuration for Broadcast Domains per EVI. +type BgpV6EviVxlanBroadcastDomain interface { Validation - // Msg marshals IsisLspExtendedIpv4ReachabilityTlv to protobuf object *otg.IsisLspExtendedIpv4ReachabilityTlv + // Msg marshals BgpV6EviVxlanBroadcastDomain to protobuf object *otg.BgpV6EviVxlanBroadcastDomain // and doesn't set defaults - Msg() *otg.IsisLspExtendedIpv4ReachabilityTlv - // SetMsg unmarshals IsisLspExtendedIpv4ReachabilityTlv from protobuf object *otg.IsisLspExtendedIpv4ReachabilityTlv + Msg() *otg.BgpV6EviVxlanBroadcastDomain + // SetMsg unmarshals BgpV6EviVxlanBroadcastDomain from protobuf object *otg.BgpV6EviVxlanBroadcastDomain // and doesn't set defaults - SetMsg(*otg.IsisLspExtendedIpv4ReachabilityTlv) IsisLspExtendedIpv4ReachabilityTlv - // ToProto marshals IsisLspExtendedIpv4ReachabilityTlv to protobuf object *otg.IsisLspExtendedIpv4ReachabilityTlv - ToProto() (*otg.IsisLspExtendedIpv4ReachabilityTlv, error) - // ToPbText marshals IsisLspExtendedIpv4ReachabilityTlv to protobuf text + SetMsg(*otg.BgpV6EviVxlanBroadcastDomain) BgpV6EviVxlanBroadcastDomain + // ToProto marshals BgpV6EviVxlanBroadcastDomain to protobuf object *otg.BgpV6EviVxlanBroadcastDomain + ToProto() (*otg.BgpV6EviVxlanBroadcastDomain, error) + // ToPbText marshals BgpV6EviVxlanBroadcastDomain to protobuf text ToPbText() (string, error) - // ToYaml marshals IsisLspExtendedIpv4ReachabilityTlv to YAML text + // ToYaml marshals BgpV6EviVxlanBroadcastDomain to YAML text ToYaml() (string, error) - // ToJson marshals IsisLspExtendedIpv4ReachabilityTlv to JSON text + // ToJson marshals BgpV6EviVxlanBroadcastDomain to JSON text ToJson() (string, error) - // FromProto unmarshals IsisLspExtendedIpv4ReachabilityTlv from protobuf object *otg.IsisLspExtendedIpv4ReachabilityTlv - FromProto(msg *otg.IsisLspExtendedIpv4ReachabilityTlv) (IsisLspExtendedIpv4ReachabilityTlv, error) - // FromPbText unmarshals IsisLspExtendedIpv4ReachabilityTlv from protobuf text + // FromProto unmarshals BgpV6EviVxlanBroadcastDomain from protobuf object *otg.BgpV6EviVxlanBroadcastDomain + FromProto(msg *otg.BgpV6EviVxlanBroadcastDomain) (BgpV6EviVxlanBroadcastDomain, error) + // FromPbText unmarshals BgpV6EviVxlanBroadcastDomain from protobuf text FromPbText(value string) error - // FromYaml unmarshals IsisLspExtendedIpv4ReachabilityTlv from YAML text + // FromYaml unmarshals BgpV6EviVxlanBroadcastDomain from YAML text FromYaml(value string) error - // FromJson unmarshals IsisLspExtendedIpv4ReachabilityTlv from JSON text + // FromJson unmarshals BgpV6EviVxlanBroadcastDomain from JSON text FromJson(value string) error - // Validate validates IsisLspExtendedIpv4ReachabilityTlv + // Validate validates BgpV6EviVxlanBroadcastDomain Validate() error // A stringer function String() string // Clones the object - Clone() (IsisLspExtendedIpv4ReachabilityTlv, error) + Clone() (BgpV6EviVxlanBroadcastDomain, error) validateToAndFrom() error validateObj(vObj *validation, set_default bool) setDefault() - // Prefixes returns IsisLspExtendedIpv4ReachabilityTlvIsisLspExtendedV4PrefixIterIter, set in IsisLspExtendedIpv4ReachabilityTlv - Prefixes() IsisLspExtendedIpv4ReachabilityTlvIsisLspExtendedV4PrefixIter + // CmacIpRange returns BgpV6EviVxlanBroadcastDomainBgpCMacIpRangeIterIter, set in BgpV6EviVxlanBroadcastDomain + CmacIpRange() BgpV6EviVxlanBroadcastDomainBgpCMacIpRangeIter + // EthernetTagId returns uint32, set in BgpV6EviVxlanBroadcastDomain. + EthernetTagId() uint32 + // SetEthernetTagId assigns uint32 provided by user to BgpV6EviVxlanBroadcastDomain + SetEthernetTagId(value uint32) BgpV6EviVxlanBroadcastDomain + // HasEthernetTagId checks if EthernetTagId has been set in BgpV6EviVxlanBroadcastDomain + HasEthernetTagId() bool + // VlanAwareService returns bool, set in BgpV6EviVxlanBroadcastDomain. + VlanAwareService() bool + // SetVlanAwareService assigns bool provided by user to BgpV6EviVxlanBroadcastDomain + SetVlanAwareService(value bool) BgpV6EviVxlanBroadcastDomain + // HasVlanAwareService checks if VlanAwareService has been set in BgpV6EviVxlanBroadcastDomain + HasVlanAwareService() bool setNil() } -// IPv4 prefix contained within extended reachability TLVs. -// Prefixes returns a []IsisLspExtendedV4Prefix -func (obj *isisLspExtendedIpv4ReachabilityTlv) Prefixes() IsisLspExtendedIpv4ReachabilityTlvIsisLspExtendedV4PrefixIter { - if len(obj.obj.Prefixes) == 0 { - obj.obj.Prefixes = []*otg.IsisLspExtendedV4Prefix{} +// This contains the list of Customer MAC/IP Ranges to be configured per Broadcast Domain. +// +// Advertises following route - +// Type 2 - MAC/IP Advertisement Route. +// CmacIpRange returns a []BgpCMacIpRange +func (obj *bgpV6EviVxlanBroadcastDomain) CmacIpRange() BgpV6EviVxlanBroadcastDomainBgpCMacIpRangeIter { + if len(obj.obj.CmacIpRange) == 0 { + obj.obj.CmacIpRange = []*otg.BgpCMacIpRange{} } - if obj.prefixesHolder == nil { - obj.prefixesHolder = newIsisLspExtendedIpv4ReachabilityTlvIsisLspExtendedV4PrefixIter(&obj.obj.Prefixes).setMsg(obj) + if obj.cmacIpRangeHolder == nil { + obj.cmacIpRangeHolder = newBgpV6EviVxlanBroadcastDomainBgpCMacIpRangeIter(&obj.obj.CmacIpRange).setMsg(obj) } - return obj.prefixesHolder + return obj.cmacIpRangeHolder } -type isisLspExtendedIpv4ReachabilityTlvIsisLspExtendedV4PrefixIter struct { - obj *isisLspExtendedIpv4ReachabilityTlv - isisLspExtendedV4PrefixSlice []IsisLspExtendedV4Prefix - fieldPtr *[]*otg.IsisLspExtendedV4Prefix +type bgpV6EviVxlanBroadcastDomainBgpCMacIpRangeIter struct { + obj *bgpV6EviVxlanBroadcastDomain + bgpCMacIpRangeSlice []BgpCMacIpRange + fieldPtr *[]*otg.BgpCMacIpRange } -func newIsisLspExtendedIpv4ReachabilityTlvIsisLspExtendedV4PrefixIter(ptr *[]*otg.IsisLspExtendedV4Prefix) IsisLspExtendedIpv4ReachabilityTlvIsisLspExtendedV4PrefixIter { - return &isisLspExtendedIpv4ReachabilityTlvIsisLspExtendedV4PrefixIter{fieldPtr: ptr} +func newBgpV6EviVxlanBroadcastDomainBgpCMacIpRangeIter(ptr *[]*otg.BgpCMacIpRange) BgpV6EviVxlanBroadcastDomainBgpCMacIpRangeIter { + return &bgpV6EviVxlanBroadcastDomainBgpCMacIpRangeIter{fieldPtr: ptr} } -type IsisLspExtendedIpv4ReachabilityTlvIsisLspExtendedV4PrefixIter interface { - setMsg(*isisLspExtendedIpv4ReachabilityTlv) IsisLspExtendedIpv4ReachabilityTlvIsisLspExtendedV4PrefixIter - Items() []IsisLspExtendedV4Prefix - Add() IsisLspExtendedV4Prefix - Append(items ...IsisLspExtendedV4Prefix) IsisLspExtendedIpv4ReachabilityTlvIsisLspExtendedV4PrefixIter - Set(index int, newObj IsisLspExtendedV4Prefix) IsisLspExtendedIpv4ReachabilityTlvIsisLspExtendedV4PrefixIter - Clear() IsisLspExtendedIpv4ReachabilityTlvIsisLspExtendedV4PrefixIter - clearHolderSlice() IsisLspExtendedIpv4ReachabilityTlvIsisLspExtendedV4PrefixIter - appendHolderSlice(item IsisLspExtendedV4Prefix) IsisLspExtendedIpv4ReachabilityTlvIsisLspExtendedV4PrefixIter +type BgpV6EviVxlanBroadcastDomainBgpCMacIpRangeIter interface { + setMsg(*bgpV6EviVxlanBroadcastDomain) BgpV6EviVxlanBroadcastDomainBgpCMacIpRangeIter + Items() []BgpCMacIpRange + Add() BgpCMacIpRange + Append(items ...BgpCMacIpRange) BgpV6EviVxlanBroadcastDomainBgpCMacIpRangeIter + Set(index int, newObj BgpCMacIpRange) BgpV6EviVxlanBroadcastDomainBgpCMacIpRangeIter + Clear() BgpV6EviVxlanBroadcastDomainBgpCMacIpRangeIter + clearHolderSlice() BgpV6EviVxlanBroadcastDomainBgpCMacIpRangeIter + appendHolderSlice(item BgpCMacIpRange) BgpV6EviVxlanBroadcastDomainBgpCMacIpRangeIter } -func (obj *isisLspExtendedIpv4ReachabilityTlvIsisLspExtendedV4PrefixIter) setMsg(msg *isisLspExtendedIpv4ReachabilityTlv) IsisLspExtendedIpv4ReachabilityTlvIsisLspExtendedV4PrefixIter { +func (obj *bgpV6EviVxlanBroadcastDomainBgpCMacIpRangeIter) setMsg(msg *bgpV6EviVxlanBroadcastDomain) BgpV6EviVxlanBroadcastDomainBgpCMacIpRangeIter { obj.clearHolderSlice() for _, val := range *obj.fieldPtr { - obj.appendHolderSlice(&isisLspExtendedV4Prefix{obj: val}) + obj.appendHolderSlice(&bgpCMacIpRange{obj: val}) } obj.obj = msg return obj } -func (obj *isisLspExtendedIpv4ReachabilityTlvIsisLspExtendedV4PrefixIter) Items() []IsisLspExtendedV4Prefix { - return obj.isisLspExtendedV4PrefixSlice +func (obj *bgpV6EviVxlanBroadcastDomainBgpCMacIpRangeIter) Items() []BgpCMacIpRange { + return obj.bgpCMacIpRangeSlice } -func (obj *isisLspExtendedIpv4ReachabilityTlvIsisLspExtendedV4PrefixIter) Add() IsisLspExtendedV4Prefix { - newObj := &otg.IsisLspExtendedV4Prefix{} +func (obj *bgpV6EviVxlanBroadcastDomainBgpCMacIpRangeIter) Add() BgpCMacIpRange { + newObj := &otg.BgpCMacIpRange{} *obj.fieldPtr = append(*obj.fieldPtr, newObj) - newLibObj := &isisLspExtendedV4Prefix{obj: newObj} + newLibObj := &bgpCMacIpRange{obj: newObj} newLibObj.setDefault() - obj.isisLspExtendedV4PrefixSlice = append(obj.isisLspExtendedV4PrefixSlice, newLibObj) + obj.bgpCMacIpRangeSlice = append(obj.bgpCMacIpRangeSlice, newLibObj) return newLibObj } -func (obj *isisLspExtendedIpv4ReachabilityTlvIsisLspExtendedV4PrefixIter) Append(items ...IsisLspExtendedV4Prefix) IsisLspExtendedIpv4ReachabilityTlvIsisLspExtendedV4PrefixIter { +func (obj *bgpV6EviVxlanBroadcastDomainBgpCMacIpRangeIter) Append(items ...BgpCMacIpRange) BgpV6EviVxlanBroadcastDomainBgpCMacIpRangeIter { for _, item := range items { newObj := item.Msg() *obj.fieldPtr = append(*obj.fieldPtr, newObj) - obj.isisLspExtendedV4PrefixSlice = append(obj.isisLspExtendedV4PrefixSlice, item) + obj.bgpCMacIpRangeSlice = append(obj.bgpCMacIpRangeSlice, item) } return obj } -func (obj *isisLspExtendedIpv4ReachabilityTlvIsisLspExtendedV4PrefixIter) Set(index int, newObj IsisLspExtendedV4Prefix) IsisLspExtendedIpv4ReachabilityTlvIsisLspExtendedV4PrefixIter { +func (obj *bgpV6EviVxlanBroadcastDomainBgpCMacIpRangeIter) Set(index int, newObj BgpCMacIpRange) BgpV6EviVxlanBroadcastDomainBgpCMacIpRangeIter { (*obj.fieldPtr)[index] = newObj.Msg() - obj.isisLspExtendedV4PrefixSlice[index] = newObj + obj.bgpCMacIpRangeSlice[index] = newObj return obj } -func (obj *isisLspExtendedIpv4ReachabilityTlvIsisLspExtendedV4PrefixIter) Clear() IsisLspExtendedIpv4ReachabilityTlvIsisLspExtendedV4PrefixIter { +func (obj *bgpV6EviVxlanBroadcastDomainBgpCMacIpRangeIter) Clear() BgpV6EviVxlanBroadcastDomainBgpCMacIpRangeIter { if len(*obj.fieldPtr) > 0 { - *obj.fieldPtr = []*otg.IsisLspExtendedV4Prefix{} - obj.isisLspExtendedV4PrefixSlice = []IsisLspExtendedV4Prefix{} + *obj.fieldPtr = []*otg.BgpCMacIpRange{} + obj.bgpCMacIpRangeSlice = []BgpCMacIpRange{} } return obj } -func (obj *isisLspExtendedIpv4ReachabilityTlvIsisLspExtendedV4PrefixIter) clearHolderSlice() IsisLspExtendedIpv4ReachabilityTlvIsisLspExtendedV4PrefixIter { - if len(obj.isisLspExtendedV4PrefixSlice) > 0 { - obj.isisLspExtendedV4PrefixSlice = []IsisLspExtendedV4Prefix{} +func (obj *bgpV6EviVxlanBroadcastDomainBgpCMacIpRangeIter) clearHolderSlice() BgpV6EviVxlanBroadcastDomainBgpCMacIpRangeIter { + if len(obj.bgpCMacIpRangeSlice) > 0 { + obj.bgpCMacIpRangeSlice = []BgpCMacIpRange{} } return obj } -func (obj *isisLspExtendedIpv4ReachabilityTlvIsisLspExtendedV4PrefixIter) appendHolderSlice(item IsisLspExtendedV4Prefix) IsisLspExtendedIpv4ReachabilityTlvIsisLspExtendedV4PrefixIter { - obj.isisLspExtendedV4PrefixSlice = append(obj.isisLspExtendedV4PrefixSlice, item) +func (obj *bgpV6EviVxlanBroadcastDomainBgpCMacIpRangeIter) appendHolderSlice(item BgpCMacIpRange) BgpV6EviVxlanBroadcastDomainBgpCMacIpRangeIter { + obj.bgpCMacIpRangeSlice = append(obj.bgpCMacIpRangeSlice, item) return obj } -func (obj *isisLspExtendedIpv4ReachabilityTlv) validateObj(vObj *validation, set_default bool) { +// The Ethernet Tag ID of the Broadcast Domain. +// EthernetTagId returns a uint32 +func (obj *bgpV6EviVxlanBroadcastDomain) EthernetTagId() uint32 { + + return *obj.obj.EthernetTagId + +} + +// The Ethernet Tag ID of the Broadcast Domain. +// EthernetTagId returns a uint32 +func (obj *bgpV6EviVxlanBroadcastDomain) HasEthernetTagId() bool { + return obj.obj.EthernetTagId != nil +} + +// The Ethernet Tag ID of the Broadcast Domain. +// SetEthernetTagId sets the uint32 value in the BgpV6EviVxlanBroadcastDomain object +func (obj *bgpV6EviVxlanBroadcastDomain) SetEthernetTagId(value uint32) BgpV6EviVxlanBroadcastDomain { + + obj.obj.EthernetTagId = &value + return obj +} + +// VLAN-Aware service to be enabled or disabled. +// VlanAwareService returns a bool +func (obj *bgpV6EviVxlanBroadcastDomain) VlanAwareService() bool { + + return *obj.obj.VlanAwareService + +} + +// VLAN-Aware service to be enabled or disabled. +// VlanAwareService returns a bool +func (obj *bgpV6EviVxlanBroadcastDomain) HasVlanAwareService() bool { + return obj.obj.VlanAwareService != nil +} + +// VLAN-Aware service to be enabled or disabled. +// SetVlanAwareService sets the bool value in the BgpV6EviVxlanBroadcastDomain object +func (obj *bgpV6EviVxlanBroadcastDomain) SetVlanAwareService(value bool) BgpV6EviVxlanBroadcastDomain { + + obj.obj.VlanAwareService = &value + return obj +} + +func (obj *bgpV6EviVxlanBroadcastDomain) validateObj(vObj *validation, set_default bool) { if set_default { obj.setDefault() } - if len(obj.obj.Prefixes) != 0 { + if len(obj.obj.CmacIpRange) != 0 { if set_default { - obj.Prefixes().clearHolderSlice() - for _, item := range obj.obj.Prefixes { - obj.Prefixes().appendHolderSlice(&isisLspExtendedV4Prefix{obj: item}) + obj.CmacIpRange().clearHolderSlice() + for _, item := range obj.obj.CmacIpRange { + obj.CmacIpRange().appendHolderSlice(&bgpCMacIpRange{obj: item}) } } - for _, item := range obj.Prefixes().Items() { + for _, item := range obj.CmacIpRange().Items() { item.validateObj(vObj, set_default) } @@ -275451,34 +322284,40 @@ func (obj *isisLspExtendedIpv4ReachabilityTlv) validateObj(vObj *validation, set } -func (obj *isisLspExtendedIpv4ReachabilityTlv) setDefault() { +func (obj *bgpV6EviVxlanBroadcastDomain) setDefault() { + if obj.obj.EthernetTagId == nil { + obj.SetEthernetTagId(0) + } + if obj.obj.VlanAwareService == nil { + obj.SetVlanAwareService(false) + } } -// ***** IsisLspIpv6ReachabilityTlv ***** -type isisLspIpv6ReachabilityTlv struct { +// ***** FlowRSVPPathObjectsClassSession ***** +type flowRSVPPathObjectsClassSession struct { validation - obj *otg.IsisLspIpv6ReachabilityTlv - prefixesHolder IsisLspIpv6ReachabilityTlvIsisLspV6PrefixIter + obj *otg.FlowRSVPPathObjectsClassSession + cTypeHolder FlowRSVPPathObjectsSessionCType } -func NewIsisLspIpv6ReachabilityTlv() IsisLspIpv6ReachabilityTlv { - obj := isisLspIpv6ReachabilityTlv{obj: &otg.IsisLspIpv6ReachabilityTlv{}} +func NewFlowRSVPPathObjectsClassSession() FlowRSVPPathObjectsClassSession { + obj := flowRSVPPathObjectsClassSession{obj: &otg.FlowRSVPPathObjectsClassSession{}} obj.setDefault() return &obj } -func (obj *isisLspIpv6ReachabilityTlv) Msg() *otg.IsisLspIpv6ReachabilityTlv { +func (obj *flowRSVPPathObjectsClassSession) Msg() *otg.FlowRSVPPathObjectsClassSession { return obj.obj } -func (obj *isisLspIpv6ReachabilityTlv) SetMsg(msg *otg.IsisLspIpv6ReachabilityTlv) IsisLspIpv6ReachabilityTlv { +func (obj *flowRSVPPathObjectsClassSession) SetMsg(msg *otg.FlowRSVPPathObjectsClassSession) FlowRSVPPathObjectsClassSession { obj.setNil() proto.Merge(obj.obj, msg) return obj } -func (obj *isisLspIpv6ReachabilityTlv) ToProto() (*otg.IsisLspIpv6ReachabilityTlv, error) { +func (obj *flowRSVPPathObjectsClassSession) ToProto() (*otg.FlowRSVPPathObjectsClassSession, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -275486,7 +322325,7 @@ func (obj *isisLspIpv6ReachabilityTlv) ToProto() (*otg.IsisLspIpv6ReachabilityTl return obj.Msg(), nil } -func (obj *isisLspIpv6ReachabilityTlv) FromProto(msg *otg.IsisLspIpv6ReachabilityTlv) (IsisLspIpv6ReachabilityTlv, error) { +func (obj *flowRSVPPathObjectsClassSession) FromProto(msg *otg.FlowRSVPPathObjectsClassSession) (FlowRSVPPathObjectsClassSession, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -275495,7 +322334,7 @@ func (obj *isisLspIpv6ReachabilityTlv) FromProto(msg *otg.IsisLspIpv6Reachabilit return newObj, nil } -func (obj *isisLspIpv6ReachabilityTlv) ToPbText() (string, error) { +func (obj *flowRSVPPathObjectsClassSession) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -275507,7 +322346,7 @@ func (obj *isisLspIpv6ReachabilityTlv) ToPbText() (string, error) { return string(protoMarshal), nil } -func (obj *isisLspIpv6ReachabilityTlv) FromPbText(value string) error { +func (obj *flowRSVPPathObjectsClassSession) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj @@ -275520,7 +322359,7 @@ func (obj *isisLspIpv6ReachabilityTlv) FromPbText(value string) error { return retObj } -func (obj *isisLspIpv6ReachabilityTlv) ToYaml() (string, error) { +func (obj *flowRSVPPathObjectsClassSession) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -275541,7 +322380,7 @@ func (obj *isisLspIpv6ReachabilityTlv) ToYaml() (string, error) { return string(data), nil } -func (obj *isisLspIpv6ReachabilityTlv) FromYaml(value string) error { +func (obj *flowRSVPPathObjectsClassSession) FromYaml(value string) error { if value == "" { value = "{}" } @@ -275566,7 +322405,7 @@ func (obj *isisLspIpv6ReachabilityTlv) FromYaml(value string) error { return nil } -func (obj *isisLspIpv6ReachabilityTlv) ToJson() (string, error) { +func (obj *flowRSVPPathObjectsClassSession) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -275584,7 +322423,7 @@ func (obj *isisLspIpv6ReachabilityTlv) ToJson() (string, error) { return string(data), nil } -func (obj *isisLspIpv6ReachabilityTlv) FromJson(value string) error { +func (obj *flowRSVPPathObjectsClassSession) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -275605,19 +322444,19 @@ func (obj *isisLspIpv6ReachabilityTlv) FromJson(value string) error { return nil } -func (obj *isisLspIpv6ReachabilityTlv) validateToAndFrom() error { +func (obj *flowRSVPPathObjectsClassSession) validateToAndFrom() error { // emptyVars() obj.validateObj(&obj.validation, true) return obj.validationResult() } -func (obj *isisLspIpv6ReachabilityTlv) Validate() error { +func (obj *flowRSVPPathObjectsClassSession) Validate() error { // emptyVars() obj.validateObj(&obj.validation, false) return obj.validationResult() } -func (obj *isisLspIpv6ReachabilityTlv) String() string { +func (obj *flowRSVPPathObjectsClassSession) String() string { str, err := obj.ToYaml() if err != nil { return err.Error() @@ -275625,12 +322464,12 @@ func (obj *isisLspIpv6ReachabilityTlv) String() string { return str } -func (obj *isisLspIpv6ReachabilityTlv) Clone() (IsisLspIpv6ReachabilityTlv, error) { +func (obj *flowRSVPPathObjectsClassSession) Clone() (FlowRSVPPathObjectsClassSession, error) { vErr := obj.Validate() if vErr != nil { return nil, vErr } - newObj := NewIsisLspIpv6ReachabilityTlv() + newObj := NewFlowRSVPPathObjectsClassSession() data, err := proto.Marshal(obj.Msg()) if err != nil { return nil, err @@ -275642,187 +322481,126 @@ func (obj *isisLspIpv6ReachabilityTlv) Clone() (IsisLspIpv6ReachabilityTlv, erro return newObj, nil } -func (obj *isisLspIpv6ReachabilityTlv) setNil() { - obj.prefixesHolder = nil +func (obj *flowRSVPPathObjectsClassSession) setNil() { + obj.cTypeHolder = nil obj.validationErrors = nil obj.warnings = nil obj.constraints = make(map[string]map[string]Constraints) } -// IsisLspIpv6ReachabilityTlv is it defines list of IPv6 extended reachability information in one IPv6 Reachability TLV. -type IsisLspIpv6ReachabilityTlv interface { +// FlowRSVPPathObjectsClassSession is c-Type is specific to a class num. +type FlowRSVPPathObjectsClassSession interface { Validation - // Msg marshals IsisLspIpv6ReachabilityTlv to protobuf object *otg.IsisLspIpv6ReachabilityTlv + // Msg marshals FlowRSVPPathObjectsClassSession to protobuf object *otg.FlowRSVPPathObjectsClassSession // and doesn't set defaults - Msg() *otg.IsisLspIpv6ReachabilityTlv - // SetMsg unmarshals IsisLspIpv6ReachabilityTlv from protobuf object *otg.IsisLspIpv6ReachabilityTlv + Msg() *otg.FlowRSVPPathObjectsClassSession + // SetMsg unmarshals FlowRSVPPathObjectsClassSession from protobuf object *otg.FlowRSVPPathObjectsClassSession // and doesn't set defaults - SetMsg(*otg.IsisLspIpv6ReachabilityTlv) IsisLspIpv6ReachabilityTlv - // ToProto marshals IsisLspIpv6ReachabilityTlv to protobuf object *otg.IsisLspIpv6ReachabilityTlv - ToProto() (*otg.IsisLspIpv6ReachabilityTlv, error) - // ToPbText marshals IsisLspIpv6ReachabilityTlv to protobuf text + SetMsg(*otg.FlowRSVPPathObjectsClassSession) FlowRSVPPathObjectsClassSession + // ToProto marshals FlowRSVPPathObjectsClassSession to protobuf object *otg.FlowRSVPPathObjectsClassSession + ToProto() (*otg.FlowRSVPPathObjectsClassSession, error) + // ToPbText marshals FlowRSVPPathObjectsClassSession to protobuf text ToPbText() (string, error) - // ToYaml marshals IsisLspIpv6ReachabilityTlv to YAML text + // ToYaml marshals FlowRSVPPathObjectsClassSession to YAML text ToYaml() (string, error) - // ToJson marshals IsisLspIpv6ReachabilityTlv to JSON text + // ToJson marshals FlowRSVPPathObjectsClassSession to JSON text ToJson() (string, error) - // FromProto unmarshals IsisLspIpv6ReachabilityTlv from protobuf object *otg.IsisLspIpv6ReachabilityTlv - FromProto(msg *otg.IsisLspIpv6ReachabilityTlv) (IsisLspIpv6ReachabilityTlv, error) - // FromPbText unmarshals IsisLspIpv6ReachabilityTlv from protobuf text + // FromProto unmarshals FlowRSVPPathObjectsClassSession from protobuf object *otg.FlowRSVPPathObjectsClassSession + FromProto(msg *otg.FlowRSVPPathObjectsClassSession) (FlowRSVPPathObjectsClassSession, error) + // FromPbText unmarshals FlowRSVPPathObjectsClassSession from protobuf text FromPbText(value string) error - // FromYaml unmarshals IsisLspIpv6ReachabilityTlv from YAML text + // FromYaml unmarshals FlowRSVPPathObjectsClassSession from YAML text FromYaml(value string) error - // FromJson unmarshals IsisLspIpv6ReachabilityTlv from JSON text + // FromJson unmarshals FlowRSVPPathObjectsClassSession from JSON text FromJson(value string) error - // Validate validates IsisLspIpv6ReachabilityTlv + // Validate validates FlowRSVPPathObjectsClassSession Validate() error // A stringer function String() string // Clones the object - Clone() (IsisLspIpv6ReachabilityTlv, error) + Clone() (FlowRSVPPathObjectsClassSession, error) validateToAndFrom() error validateObj(vObj *validation, set_default bool) setDefault() - // Prefixes returns IsisLspIpv6ReachabilityTlvIsisLspV6PrefixIterIter, set in IsisLspIpv6ReachabilityTlv - Prefixes() IsisLspIpv6ReachabilityTlvIsisLspV6PrefixIter + // CType returns FlowRSVPPathObjectsSessionCType, set in FlowRSVPPathObjectsClassSession. + // FlowRSVPPathObjectsSessionCType is the body of an object corresponding to the class number and c-type. Currently supported c-type for SESSION object is LSP Tunnel IPv4 (7). + CType() FlowRSVPPathObjectsSessionCType + // SetCType assigns FlowRSVPPathObjectsSessionCType provided by user to FlowRSVPPathObjectsClassSession. + // FlowRSVPPathObjectsSessionCType is the body of an object corresponding to the class number and c-type. Currently supported c-type for SESSION object is LSP Tunnel IPv4 (7). + SetCType(value FlowRSVPPathObjectsSessionCType) FlowRSVPPathObjectsClassSession + // HasCType checks if CType has been set in FlowRSVPPathObjectsClassSession + HasCType() bool setNil() } -// IPv6 prefix contained within reachability TLVs. -// Prefixes returns a []IsisLspV6Prefix -func (obj *isisLspIpv6ReachabilityTlv) Prefixes() IsisLspIpv6ReachabilityTlvIsisLspV6PrefixIter { - if len(obj.obj.Prefixes) == 0 { - obj.obj.Prefixes = []*otg.IsisLspV6Prefix{} - } - if obj.prefixesHolder == nil { - obj.prefixesHolder = newIsisLspIpv6ReachabilityTlvIsisLspV6PrefixIter(&obj.obj.Prefixes).setMsg(obj) +// description is TBD +// CType returns a FlowRSVPPathObjectsSessionCType +func (obj *flowRSVPPathObjectsClassSession) CType() FlowRSVPPathObjectsSessionCType { + if obj.obj.CType == nil { + obj.obj.CType = NewFlowRSVPPathObjectsSessionCType().Msg() } - return obj.prefixesHolder -} - -type isisLspIpv6ReachabilityTlvIsisLspV6PrefixIter struct { - obj *isisLspIpv6ReachabilityTlv - isisLspV6PrefixSlice []IsisLspV6Prefix - fieldPtr *[]*otg.IsisLspV6Prefix -} - -func newIsisLspIpv6ReachabilityTlvIsisLspV6PrefixIter(ptr *[]*otg.IsisLspV6Prefix) IsisLspIpv6ReachabilityTlvIsisLspV6PrefixIter { - return &isisLspIpv6ReachabilityTlvIsisLspV6PrefixIter{fieldPtr: ptr} -} - -type IsisLspIpv6ReachabilityTlvIsisLspV6PrefixIter interface { - setMsg(*isisLspIpv6ReachabilityTlv) IsisLspIpv6ReachabilityTlvIsisLspV6PrefixIter - Items() []IsisLspV6Prefix - Add() IsisLspV6Prefix - Append(items ...IsisLspV6Prefix) IsisLspIpv6ReachabilityTlvIsisLspV6PrefixIter - Set(index int, newObj IsisLspV6Prefix) IsisLspIpv6ReachabilityTlvIsisLspV6PrefixIter - Clear() IsisLspIpv6ReachabilityTlvIsisLspV6PrefixIter - clearHolderSlice() IsisLspIpv6ReachabilityTlvIsisLspV6PrefixIter - appendHolderSlice(item IsisLspV6Prefix) IsisLspIpv6ReachabilityTlvIsisLspV6PrefixIter -} - -func (obj *isisLspIpv6ReachabilityTlvIsisLspV6PrefixIter) setMsg(msg *isisLspIpv6ReachabilityTlv) IsisLspIpv6ReachabilityTlvIsisLspV6PrefixIter { - obj.clearHolderSlice() - for _, val := range *obj.fieldPtr { - obj.appendHolderSlice(&isisLspV6Prefix{obj: val}) + if obj.cTypeHolder == nil { + obj.cTypeHolder = &flowRSVPPathObjectsSessionCType{obj: obj.obj.CType} } - obj.obj = msg - return obj + return obj.cTypeHolder } -func (obj *isisLspIpv6ReachabilityTlvIsisLspV6PrefixIter) Items() []IsisLspV6Prefix { - return obj.isisLspV6PrefixSlice +// description is TBD +// CType returns a FlowRSVPPathObjectsSessionCType +func (obj *flowRSVPPathObjectsClassSession) HasCType() bool { + return obj.obj.CType != nil } -func (obj *isisLspIpv6ReachabilityTlvIsisLspV6PrefixIter) Add() IsisLspV6Prefix { - newObj := &otg.IsisLspV6Prefix{} - *obj.fieldPtr = append(*obj.fieldPtr, newObj) - newLibObj := &isisLspV6Prefix{obj: newObj} - newLibObj.setDefault() - obj.isisLspV6PrefixSlice = append(obj.isisLspV6PrefixSlice, newLibObj) - return newLibObj -} +// description is TBD +// SetCType sets the FlowRSVPPathObjectsSessionCType value in the FlowRSVPPathObjectsClassSession object +func (obj *flowRSVPPathObjectsClassSession) SetCType(value FlowRSVPPathObjectsSessionCType) FlowRSVPPathObjectsClassSession { -func (obj *isisLspIpv6ReachabilityTlvIsisLspV6PrefixIter) Append(items ...IsisLspV6Prefix) IsisLspIpv6ReachabilityTlvIsisLspV6PrefixIter { - for _, item := range items { - newObj := item.Msg() - *obj.fieldPtr = append(*obj.fieldPtr, newObj) - obj.isisLspV6PrefixSlice = append(obj.isisLspV6PrefixSlice, item) - } - return obj -} + obj.cTypeHolder = nil + obj.obj.CType = value.Msg() -func (obj *isisLspIpv6ReachabilityTlvIsisLspV6PrefixIter) Set(index int, newObj IsisLspV6Prefix) IsisLspIpv6ReachabilityTlvIsisLspV6PrefixIter { - (*obj.fieldPtr)[index] = newObj.Msg() - obj.isisLspV6PrefixSlice[index] = newObj - return obj -} -func (obj *isisLspIpv6ReachabilityTlvIsisLspV6PrefixIter) Clear() IsisLspIpv6ReachabilityTlvIsisLspV6PrefixIter { - if len(*obj.fieldPtr) > 0 { - *obj.fieldPtr = []*otg.IsisLspV6Prefix{} - obj.isisLspV6PrefixSlice = []IsisLspV6Prefix{} - } - return obj -} -func (obj *isisLspIpv6ReachabilityTlvIsisLspV6PrefixIter) clearHolderSlice() IsisLspIpv6ReachabilityTlvIsisLspV6PrefixIter { - if len(obj.isisLspV6PrefixSlice) > 0 { - obj.isisLspV6PrefixSlice = []IsisLspV6Prefix{} - } - return obj -} -func (obj *isisLspIpv6ReachabilityTlvIsisLspV6PrefixIter) appendHolderSlice(item IsisLspV6Prefix) IsisLspIpv6ReachabilityTlvIsisLspV6PrefixIter { - obj.isisLspV6PrefixSlice = append(obj.isisLspV6PrefixSlice, item) return obj } -func (obj *isisLspIpv6ReachabilityTlv) validateObj(vObj *validation, set_default bool) { +func (obj *flowRSVPPathObjectsClassSession) validateObj(vObj *validation, set_default bool) { if set_default { obj.setDefault() } - if len(obj.obj.Prefixes) != 0 { - - if set_default { - obj.Prefixes().clearHolderSlice() - for _, item := range obj.obj.Prefixes { - obj.Prefixes().appendHolderSlice(&isisLspV6Prefix{obj: item}) - } - } - for _, item := range obj.Prefixes().Items() { - item.validateObj(vObj, set_default) - } + if obj.obj.CType != nil { + obj.CType().validateObj(vObj, set_default) } } -func (obj *isisLspIpv6ReachabilityTlv) setDefault() { +func (obj *flowRSVPPathObjectsClassSession) setDefault() { } -// ***** BgpEthernetSegmentDfElection ***** -type bgpEthernetSegmentDfElection struct { +// ***** FlowRSVPPathObjectsClassRsvpHop ***** +type flowRSVPPathObjectsClassRsvpHop struct { validation - obj *otg.BgpEthernetSegmentDfElection + obj *otg.FlowRSVPPathObjectsClassRsvpHop + cTypeHolder FlowRSVPPathObjectsRsvpHopCType } -func NewBgpEthernetSegmentDfElection() BgpEthernetSegmentDfElection { - obj := bgpEthernetSegmentDfElection{obj: &otg.BgpEthernetSegmentDfElection{}} +func NewFlowRSVPPathObjectsClassRsvpHop() FlowRSVPPathObjectsClassRsvpHop { + obj := flowRSVPPathObjectsClassRsvpHop{obj: &otg.FlowRSVPPathObjectsClassRsvpHop{}} obj.setDefault() return &obj } -func (obj *bgpEthernetSegmentDfElection) Msg() *otg.BgpEthernetSegmentDfElection { +func (obj *flowRSVPPathObjectsClassRsvpHop) Msg() *otg.FlowRSVPPathObjectsClassRsvpHop { return obj.obj } -func (obj *bgpEthernetSegmentDfElection) SetMsg(msg *otg.BgpEthernetSegmentDfElection) BgpEthernetSegmentDfElection { - +func (obj *flowRSVPPathObjectsClassRsvpHop) SetMsg(msg *otg.FlowRSVPPathObjectsClassRsvpHop) FlowRSVPPathObjectsClassRsvpHop { + obj.setNil() proto.Merge(obj.obj, msg) return obj } -func (obj *bgpEthernetSegmentDfElection) ToProto() (*otg.BgpEthernetSegmentDfElection, error) { +func (obj *flowRSVPPathObjectsClassRsvpHop) ToProto() (*otg.FlowRSVPPathObjectsClassRsvpHop, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -275830,7 +322608,7 @@ func (obj *bgpEthernetSegmentDfElection) ToProto() (*otg.BgpEthernetSegmentDfEle return obj.Msg(), nil } -func (obj *bgpEthernetSegmentDfElection) FromProto(msg *otg.BgpEthernetSegmentDfElection) (BgpEthernetSegmentDfElection, error) { +func (obj *flowRSVPPathObjectsClassRsvpHop) FromProto(msg *otg.FlowRSVPPathObjectsClassRsvpHop) (FlowRSVPPathObjectsClassRsvpHop, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -275839,7 +322617,7 @@ func (obj *bgpEthernetSegmentDfElection) FromProto(msg *otg.BgpEthernetSegmentDf return newObj, nil } -func (obj *bgpEthernetSegmentDfElection) ToPbText() (string, error) { +func (obj *flowRSVPPathObjectsClassRsvpHop) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -275851,12 +322629,12 @@ func (obj *bgpEthernetSegmentDfElection) ToPbText() (string, error) { return string(protoMarshal), nil } -func (obj *bgpEthernetSegmentDfElection) FromPbText(value string) error { +func (obj *flowRSVPPathObjectsClassRsvpHop) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj } - + obj.setNil() vErr := obj.validateToAndFrom() if vErr != nil { return vErr @@ -275864,7 +322642,7 @@ func (obj *bgpEthernetSegmentDfElection) FromPbText(value string) error { return retObj } -func (obj *bgpEthernetSegmentDfElection) ToYaml() (string, error) { +func (obj *flowRSVPPathObjectsClassRsvpHop) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -275885,7 +322663,7 @@ func (obj *bgpEthernetSegmentDfElection) ToYaml() (string, error) { return string(data), nil } -func (obj *bgpEthernetSegmentDfElection) FromYaml(value string) error { +func (obj *flowRSVPPathObjectsClassRsvpHop) FromYaml(value string) error { if value == "" { value = "{}" } @@ -275902,7 +322680,7 @@ func (obj *bgpEthernetSegmentDfElection) FromYaml(value string) error { return fmt.Errorf("unmarshal error %s", strings.Replace( uError.Error(), "\u00a0", " ", -1)[7:]) } - + obj.setNil() vErr := obj.validateToAndFrom() if vErr != nil { return vErr @@ -275910,7 +322688,7 @@ func (obj *bgpEthernetSegmentDfElection) FromYaml(value string) error { return nil } -func (obj *bgpEthernetSegmentDfElection) ToJson() (string, error) { +func (obj *flowRSVPPathObjectsClassRsvpHop) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -275928,7 +322706,7 @@ func (obj *bgpEthernetSegmentDfElection) ToJson() (string, error) { return string(data), nil } -func (obj *bgpEthernetSegmentDfElection) FromJson(value string) error { +func (obj *flowRSVPPathObjectsClassRsvpHop) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -275941,7 +322719,7 @@ func (obj *bgpEthernetSegmentDfElection) FromJson(value string) error { return fmt.Errorf("unmarshal error %s", strings.Replace( uError.Error(), "\u00a0", " ", -1)[7:]) } - + obj.setNil() err := obj.validateToAndFrom() if err != nil { return err @@ -275949,19 +322727,19 @@ func (obj *bgpEthernetSegmentDfElection) FromJson(value string) error { return nil } -func (obj *bgpEthernetSegmentDfElection) validateToAndFrom() error { +func (obj *flowRSVPPathObjectsClassRsvpHop) validateToAndFrom() error { // emptyVars() obj.validateObj(&obj.validation, true) return obj.validationResult() } -func (obj *bgpEthernetSegmentDfElection) Validate() error { +func (obj *flowRSVPPathObjectsClassRsvpHop) Validate() error { // emptyVars() obj.validateObj(&obj.validation, false) return obj.validationResult() } -func (obj *bgpEthernetSegmentDfElection) String() string { +func (obj *flowRSVPPathObjectsClassRsvpHop) String() string { str, err := obj.ToYaml() if err != nil { return err.Error() @@ -275969,12 +322747,12 @@ func (obj *bgpEthernetSegmentDfElection) String() string { return str } -func (obj *bgpEthernetSegmentDfElection) Clone() (BgpEthernetSegmentDfElection, error) { +func (obj *flowRSVPPathObjectsClassRsvpHop) Clone() (FlowRSVPPathObjectsClassRsvpHop, error) { vErr := obj.Validate() if vErr != nil { return nil, vErr } - newObj := NewBgpEthernetSegmentDfElection() + newObj := NewFlowRSVPPathObjectsClassRsvpHop() data, err := proto.Marshal(obj.Msg()) if err != nil { return nil, err @@ -275986,118 +322764,126 @@ func (obj *bgpEthernetSegmentDfElection) Clone() (BgpEthernetSegmentDfElection, return newObj, nil } -// BgpEthernetSegmentDfElection is configuration for Designated Forwarder (DF) election among the Provider Edge (PE) routers on the same Ethernet Segment. -type BgpEthernetSegmentDfElection interface { +func (obj *flowRSVPPathObjectsClassRsvpHop) setNil() { + obj.cTypeHolder = nil + obj.validationErrors = nil + obj.warnings = nil + obj.constraints = make(map[string]map[string]Constraints) +} + +// FlowRSVPPathObjectsClassRsvpHop is c-Type is specific to a class num. +type FlowRSVPPathObjectsClassRsvpHop interface { Validation - // Msg marshals BgpEthernetSegmentDfElection to protobuf object *otg.BgpEthernetSegmentDfElection + // Msg marshals FlowRSVPPathObjectsClassRsvpHop to protobuf object *otg.FlowRSVPPathObjectsClassRsvpHop // and doesn't set defaults - Msg() *otg.BgpEthernetSegmentDfElection - // SetMsg unmarshals BgpEthernetSegmentDfElection from protobuf object *otg.BgpEthernetSegmentDfElection + Msg() *otg.FlowRSVPPathObjectsClassRsvpHop + // SetMsg unmarshals FlowRSVPPathObjectsClassRsvpHop from protobuf object *otg.FlowRSVPPathObjectsClassRsvpHop // and doesn't set defaults - SetMsg(*otg.BgpEthernetSegmentDfElection) BgpEthernetSegmentDfElection - // ToProto marshals BgpEthernetSegmentDfElection to protobuf object *otg.BgpEthernetSegmentDfElection - ToProto() (*otg.BgpEthernetSegmentDfElection, error) - // ToPbText marshals BgpEthernetSegmentDfElection to protobuf text + SetMsg(*otg.FlowRSVPPathObjectsClassRsvpHop) FlowRSVPPathObjectsClassRsvpHop + // ToProto marshals FlowRSVPPathObjectsClassRsvpHop to protobuf object *otg.FlowRSVPPathObjectsClassRsvpHop + ToProto() (*otg.FlowRSVPPathObjectsClassRsvpHop, error) + // ToPbText marshals FlowRSVPPathObjectsClassRsvpHop to protobuf text ToPbText() (string, error) - // ToYaml marshals BgpEthernetSegmentDfElection to YAML text + // ToYaml marshals FlowRSVPPathObjectsClassRsvpHop to YAML text ToYaml() (string, error) - // ToJson marshals BgpEthernetSegmentDfElection to JSON text + // ToJson marshals FlowRSVPPathObjectsClassRsvpHop to JSON text ToJson() (string, error) - // FromProto unmarshals BgpEthernetSegmentDfElection from protobuf object *otg.BgpEthernetSegmentDfElection - FromProto(msg *otg.BgpEthernetSegmentDfElection) (BgpEthernetSegmentDfElection, error) - // FromPbText unmarshals BgpEthernetSegmentDfElection from protobuf text + // FromProto unmarshals FlowRSVPPathObjectsClassRsvpHop from protobuf object *otg.FlowRSVPPathObjectsClassRsvpHop + FromProto(msg *otg.FlowRSVPPathObjectsClassRsvpHop) (FlowRSVPPathObjectsClassRsvpHop, error) + // FromPbText unmarshals FlowRSVPPathObjectsClassRsvpHop from protobuf text FromPbText(value string) error - // FromYaml unmarshals BgpEthernetSegmentDfElection from YAML text + // FromYaml unmarshals FlowRSVPPathObjectsClassRsvpHop from YAML text FromYaml(value string) error - // FromJson unmarshals BgpEthernetSegmentDfElection from JSON text + // FromJson unmarshals FlowRSVPPathObjectsClassRsvpHop from JSON text FromJson(value string) error - // Validate validates BgpEthernetSegmentDfElection + // Validate validates FlowRSVPPathObjectsClassRsvpHop Validate() error // A stringer function String() string // Clones the object - Clone() (BgpEthernetSegmentDfElection, error) + Clone() (FlowRSVPPathObjectsClassRsvpHop, error) validateToAndFrom() error validateObj(vObj *validation, set_default bool) setDefault() - // ElectionTimer returns uint32, set in BgpEthernetSegmentDfElection. - ElectionTimer() uint32 - // SetElectionTimer assigns uint32 provided by user to BgpEthernetSegmentDfElection - SetElectionTimer(value uint32) BgpEthernetSegmentDfElection - // HasElectionTimer checks if ElectionTimer has been set in BgpEthernetSegmentDfElection - HasElectionTimer() bool + // CType returns FlowRSVPPathObjectsRsvpHopCType, set in FlowRSVPPathObjectsClassRsvpHop. + // FlowRSVPPathObjectsRsvpHopCType is object for RSVP_HOP class. Currently supported c-type is IPv4 (1). + CType() FlowRSVPPathObjectsRsvpHopCType + // SetCType assigns FlowRSVPPathObjectsRsvpHopCType provided by user to FlowRSVPPathObjectsClassRsvpHop. + // FlowRSVPPathObjectsRsvpHopCType is object for RSVP_HOP class. Currently supported c-type is IPv4 (1). + SetCType(value FlowRSVPPathObjectsRsvpHopCType) FlowRSVPPathObjectsClassRsvpHop + // HasCType checks if CType has been set in FlowRSVPPathObjectsClassRsvpHop + HasCType() bool + setNil() } -// The DF election timer in seconds. -// ElectionTimer returns a uint32 -func (obj *bgpEthernetSegmentDfElection) ElectionTimer() uint32 { - - return *obj.obj.ElectionTimer - +// description is TBD +// CType returns a FlowRSVPPathObjectsRsvpHopCType +func (obj *flowRSVPPathObjectsClassRsvpHop) CType() FlowRSVPPathObjectsRsvpHopCType { + if obj.obj.CType == nil { + obj.obj.CType = NewFlowRSVPPathObjectsRsvpHopCType().Msg() + } + if obj.cTypeHolder == nil { + obj.cTypeHolder = &flowRSVPPathObjectsRsvpHopCType{obj: obj.obj.CType} + } + return obj.cTypeHolder } -// The DF election timer in seconds. -// ElectionTimer returns a uint32 -func (obj *bgpEthernetSegmentDfElection) HasElectionTimer() bool { - return obj.obj.ElectionTimer != nil +// description is TBD +// CType returns a FlowRSVPPathObjectsRsvpHopCType +func (obj *flowRSVPPathObjectsClassRsvpHop) HasCType() bool { + return obj.obj.CType != nil } -// The DF election timer in seconds. -// SetElectionTimer sets the uint32 value in the BgpEthernetSegmentDfElection object -func (obj *bgpEthernetSegmentDfElection) SetElectionTimer(value uint32) BgpEthernetSegmentDfElection { +// description is TBD +// SetCType sets the FlowRSVPPathObjectsRsvpHopCType value in the FlowRSVPPathObjectsClassRsvpHop object +func (obj *flowRSVPPathObjectsClassRsvpHop) SetCType(value FlowRSVPPathObjectsRsvpHopCType) FlowRSVPPathObjectsClassRsvpHop { + + obj.cTypeHolder = nil + obj.obj.CType = value.Msg() - obj.obj.ElectionTimer = &value return obj } -func (obj *bgpEthernetSegmentDfElection) validateObj(vObj *validation, set_default bool) { +func (obj *flowRSVPPathObjectsClassRsvpHop) validateObj(vObj *validation, set_default bool) { if set_default { obj.setDefault() } - if obj.obj.ElectionTimer != nil { - - if *obj.obj.ElectionTimer > 300 { - vObj.validationErrors = append( - vObj.validationErrors, - fmt.Sprintf("0 <= BgpEthernetSegmentDfElection.ElectionTimer <= 300 but Got %d", *obj.obj.ElectionTimer)) - } + if obj.obj.CType != nil { + obj.CType().validateObj(vObj, set_default) } } -func (obj *bgpEthernetSegmentDfElection) setDefault() { - if obj.obj.ElectionTimer == nil { - obj.SetElectionTimer(3) - } +func (obj *flowRSVPPathObjectsClassRsvpHop) setDefault() { } -// ***** BgpV4EvpnEvis ***** -type bgpV4EvpnEvis struct { +// ***** FlowRSVPPathObjectsClassTimeValues ***** +type flowRSVPPathObjectsClassTimeValues struct { validation - obj *otg.BgpV4EvpnEvis - eviVxlanHolder BgpV4EviVxlan + obj *otg.FlowRSVPPathObjectsClassTimeValues + cTypeHolder FlowRSVPPathObjectsTimeValuesCType } -func NewBgpV4EvpnEvis() BgpV4EvpnEvis { - obj := bgpV4EvpnEvis{obj: &otg.BgpV4EvpnEvis{}} +func NewFlowRSVPPathObjectsClassTimeValues() FlowRSVPPathObjectsClassTimeValues { + obj := flowRSVPPathObjectsClassTimeValues{obj: &otg.FlowRSVPPathObjectsClassTimeValues{}} obj.setDefault() return &obj } -func (obj *bgpV4EvpnEvis) Msg() *otg.BgpV4EvpnEvis { +func (obj *flowRSVPPathObjectsClassTimeValues) Msg() *otg.FlowRSVPPathObjectsClassTimeValues { return obj.obj } -func (obj *bgpV4EvpnEvis) SetMsg(msg *otg.BgpV4EvpnEvis) BgpV4EvpnEvis { +func (obj *flowRSVPPathObjectsClassTimeValues) SetMsg(msg *otg.FlowRSVPPathObjectsClassTimeValues) FlowRSVPPathObjectsClassTimeValues { obj.setNil() proto.Merge(obj.obj, msg) return obj } -func (obj *bgpV4EvpnEvis) ToProto() (*otg.BgpV4EvpnEvis, error) { +func (obj *flowRSVPPathObjectsClassTimeValues) ToProto() (*otg.FlowRSVPPathObjectsClassTimeValues, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -276105,7 +322891,7 @@ func (obj *bgpV4EvpnEvis) ToProto() (*otg.BgpV4EvpnEvis, error) { return obj.Msg(), nil } -func (obj *bgpV4EvpnEvis) FromProto(msg *otg.BgpV4EvpnEvis) (BgpV4EvpnEvis, error) { +func (obj *flowRSVPPathObjectsClassTimeValues) FromProto(msg *otg.FlowRSVPPathObjectsClassTimeValues) (FlowRSVPPathObjectsClassTimeValues, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -276114,7 +322900,7 @@ func (obj *bgpV4EvpnEvis) FromProto(msg *otg.BgpV4EvpnEvis) (BgpV4EvpnEvis, erro return newObj, nil } -func (obj *bgpV4EvpnEvis) ToPbText() (string, error) { +func (obj *flowRSVPPathObjectsClassTimeValues) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -276126,7 +322912,7 @@ func (obj *bgpV4EvpnEvis) ToPbText() (string, error) { return string(protoMarshal), nil } -func (obj *bgpV4EvpnEvis) FromPbText(value string) error { +func (obj *flowRSVPPathObjectsClassTimeValues) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj @@ -276139,7 +322925,7 @@ func (obj *bgpV4EvpnEvis) FromPbText(value string) error { return retObj } -func (obj *bgpV4EvpnEvis) ToYaml() (string, error) { +func (obj *flowRSVPPathObjectsClassTimeValues) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -276160,7 +322946,7 @@ func (obj *bgpV4EvpnEvis) ToYaml() (string, error) { return string(data), nil } -func (obj *bgpV4EvpnEvis) FromYaml(value string) error { +func (obj *flowRSVPPathObjectsClassTimeValues) FromYaml(value string) error { if value == "" { value = "{}" } @@ -276185,7 +322971,7 @@ func (obj *bgpV4EvpnEvis) FromYaml(value string) error { return nil } -func (obj *bgpV4EvpnEvis) ToJson() (string, error) { +func (obj *flowRSVPPathObjectsClassTimeValues) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -276203,7 +322989,7 @@ func (obj *bgpV4EvpnEvis) ToJson() (string, error) { return string(data), nil } -func (obj *bgpV4EvpnEvis) FromJson(value string) error { +func (obj *flowRSVPPathObjectsClassTimeValues) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -276224,19 +323010,19 @@ func (obj *bgpV4EvpnEvis) FromJson(value string) error { return nil } -func (obj *bgpV4EvpnEvis) validateToAndFrom() error { +func (obj *flowRSVPPathObjectsClassTimeValues) validateToAndFrom() error { // emptyVars() obj.validateObj(&obj.validation, true) return obj.validationResult() } -func (obj *bgpV4EvpnEvis) Validate() error { +func (obj *flowRSVPPathObjectsClassTimeValues) Validate() error { // emptyVars() obj.validateObj(&obj.validation, false) return obj.validationResult() } -func (obj *bgpV4EvpnEvis) String() string { +func (obj *flowRSVPPathObjectsClassTimeValues) String() string { str, err := obj.ToYaml() if err != nil { return err.Error() @@ -276244,12 +323030,12 @@ func (obj *bgpV4EvpnEvis) String() string { return str } -func (obj *bgpV4EvpnEvis) Clone() (BgpV4EvpnEvis, error) { +func (obj *flowRSVPPathObjectsClassTimeValues) Clone() (FlowRSVPPathObjectsClassTimeValues, error) { vErr := obj.Validate() if vErr != nil { return nil, vErr } - newObj := NewBgpV4EvpnEvis() + newObj := NewFlowRSVPPathObjectsClassTimeValues() data, err := proto.Marshal(obj.Msg()) if err != nil { return nil, err @@ -276261,187 +323047,126 @@ func (obj *bgpV4EvpnEvis) Clone() (BgpV4EvpnEvis, error) { return newObj, nil } -func (obj *bgpV4EvpnEvis) setNil() { - obj.eviVxlanHolder = nil +func (obj *flowRSVPPathObjectsClassTimeValues) setNil() { + obj.cTypeHolder = nil obj.validationErrors = nil obj.warnings = nil obj.constraints = make(map[string]map[string]Constraints) } -// BgpV4EvpnEvis is this contains a list of different flavors of EVPN. -// For example EVPN over VXLAN or EVPN over MPLS etc to be configured per Ethernet segment. -// Need to instantiate correct type of EVPN instance as per requirement. -type BgpV4EvpnEvis interface { +// FlowRSVPPathObjectsClassTimeValues is c-Type is specific to a class num. +type FlowRSVPPathObjectsClassTimeValues interface { Validation - // Msg marshals BgpV4EvpnEvis to protobuf object *otg.BgpV4EvpnEvis + // Msg marshals FlowRSVPPathObjectsClassTimeValues to protobuf object *otg.FlowRSVPPathObjectsClassTimeValues // and doesn't set defaults - Msg() *otg.BgpV4EvpnEvis - // SetMsg unmarshals BgpV4EvpnEvis from protobuf object *otg.BgpV4EvpnEvis + Msg() *otg.FlowRSVPPathObjectsClassTimeValues + // SetMsg unmarshals FlowRSVPPathObjectsClassTimeValues from protobuf object *otg.FlowRSVPPathObjectsClassTimeValues // and doesn't set defaults - SetMsg(*otg.BgpV4EvpnEvis) BgpV4EvpnEvis - // ToProto marshals BgpV4EvpnEvis to protobuf object *otg.BgpV4EvpnEvis - ToProto() (*otg.BgpV4EvpnEvis, error) - // ToPbText marshals BgpV4EvpnEvis to protobuf text + SetMsg(*otg.FlowRSVPPathObjectsClassTimeValues) FlowRSVPPathObjectsClassTimeValues + // ToProto marshals FlowRSVPPathObjectsClassTimeValues to protobuf object *otg.FlowRSVPPathObjectsClassTimeValues + ToProto() (*otg.FlowRSVPPathObjectsClassTimeValues, error) + // ToPbText marshals FlowRSVPPathObjectsClassTimeValues to protobuf text ToPbText() (string, error) - // ToYaml marshals BgpV4EvpnEvis to YAML text + // ToYaml marshals FlowRSVPPathObjectsClassTimeValues to YAML text ToYaml() (string, error) - // ToJson marshals BgpV4EvpnEvis to JSON text + // ToJson marshals FlowRSVPPathObjectsClassTimeValues to JSON text ToJson() (string, error) - // FromProto unmarshals BgpV4EvpnEvis from protobuf object *otg.BgpV4EvpnEvis - FromProto(msg *otg.BgpV4EvpnEvis) (BgpV4EvpnEvis, error) - // FromPbText unmarshals BgpV4EvpnEvis from protobuf text + // FromProto unmarshals FlowRSVPPathObjectsClassTimeValues from protobuf object *otg.FlowRSVPPathObjectsClassTimeValues + FromProto(msg *otg.FlowRSVPPathObjectsClassTimeValues) (FlowRSVPPathObjectsClassTimeValues, error) + // FromPbText unmarshals FlowRSVPPathObjectsClassTimeValues from protobuf text FromPbText(value string) error - // FromYaml unmarshals BgpV4EvpnEvis from YAML text + // FromYaml unmarshals FlowRSVPPathObjectsClassTimeValues from YAML text FromYaml(value string) error - // FromJson unmarshals BgpV4EvpnEvis from JSON text + // FromJson unmarshals FlowRSVPPathObjectsClassTimeValues from JSON text FromJson(value string) error - // Validate validates BgpV4EvpnEvis + // Validate validates FlowRSVPPathObjectsClassTimeValues Validate() error // A stringer function String() string // Clones the object - Clone() (BgpV4EvpnEvis, error) + Clone() (FlowRSVPPathObjectsClassTimeValues, error) validateToAndFrom() error validateObj(vObj *validation, set_default bool) setDefault() - // Choice returns BgpV4EvpnEvisChoiceEnum, set in BgpV4EvpnEvis - Choice() BgpV4EvpnEvisChoiceEnum - // SetChoice assigns BgpV4EvpnEvisChoiceEnum provided by user to BgpV4EvpnEvis - SetChoice(value BgpV4EvpnEvisChoiceEnum) BgpV4EvpnEvis - // HasChoice checks if Choice has been set in BgpV4EvpnEvis - HasChoice() bool - // EviVxlan returns BgpV4EviVxlan, set in BgpV4EvpnEvis. - // BgpV4EviVxlan is configuration for BGP EVPN EVI. Advertises following routes - - // - // # Type 3 - Inclusive Multicast Ethernet Tag Route - // - // Type 1 - Ethernet Auto-discovery Route (Per EVI) - // - // Type 1 - Ethernet Auto-discovery Route (Per ES) - EviVxlan() BgpV4EviVxlan - // SetEviVxlan assigns BgpV4EviVxlan provided by user to BgpV4EvpnEvis. - // BgpV4EviVxlan is configuration for BGP EVPN EVI. Advertises following routes - - // - // # Type 3 - Inclusive Multicast Ethernet Tag Route - // - // Type 1 - Ethernet Auto-discovery Route (Per EVI) - // - // Type 1 - Ethernet Auto-discovery Route (Per ES) - SetEviVxlan(value BgpV4EviVxlan) BgpV4EvpnEvis - // HasEviVxlan checks if EviVxlan has been set in BgpV4EvpnEvis - HasEviVxlan() bool + // CType returns FlowRSVPPathObjectsTimeValuesCType, set in FlowRSVPPathObjectsClassTimeValues. + // FlowRSVPPathObjectsTimeValuesCType is object for TIME_VALUES class. Currently supported c-type is Type 1 Time Value (1). + CType() FlowRSVPPathObjectsTimeValuesCType + // SetCType assigns FlowRSVPPathObjectsTimeValuesCType provided by user to FlowRSVPPathObjectsClassTimeValues. + // FlowRSVPPathObjectsTimeValuesCType is object for TIME_VALUES class. Currently supported c-type is Type 1 Time Value (1). + SetCType(value FlowRSVPPathObjectsTimeValuesCType) FlowRSVPPathObjectsClassTimeValues + // HasCType checks if CType has been set in FlowRSVPPathObjectsClassTimeValues + HasCType() bool setNil() } -type BgpV4EvpnEvisChoiceEnum string - -// Enum of Choice on BgpV4EvpnEvis -var BgpV4EvpnEvisChoice = struct { - EVI_VXLAN BgpV4EvpnEvisChoiceEnum -}{ - EVI_VXLAN: BgpV4EvpnEvisChoiceEnum("evi_vxlan"), -} - -func (obj *bgpV4EvpnEvis) Choice() BgpV4EvpnEvisChoiceEnum { - return BgpV4EvpnEvisChoiceEnum(obj.obj.Choice.Enum().String()) -} - // description is TBD -// Choice returns a string -func (obj *bgpV4EvpnEvis) HasChoice() bool { - return obj.obj.Choice != nil -} - -func (obj *bgpV4EvpnEvis) SetChoice(value BgpV4EvpnEvisChoiceEnum) BgpV4EvpnEvis { - intValue, ok := otg.BgpV4EvpnEvis_Choice_Enum_value[string(value)] - if !ok { - obj.validationErrors = append(obj.validationErrors, fmt.Sprintf( - "%s is not a valid choice on BgpV4EvpnEvisChoiceEnum", string(value))) - return obj +// CType returns a FlowRSVPPathObjectsTimeValuesCType +func (obj *flowRSVPPathObjectsClassTimeValues) CType() FlowRSVPPathObjectsTimeValuesCType { + if obj.obj.CType == nil { + obj.obj.CType = NewFlowRSVPPathObjectsTimeValuesCType().Msg() } - enumValue := otg.BgpV4EvpnEvis_Choice_Enum(intValue) - obj.obj.Choice = &enumValue - obj.obj.EviVxlan = nil - obj.eviVxlanHolder = nil - - if value == BgpV4EvpnEvisChoice.EVI_VXLAN { - obj.obj.EviVxlan = NewBgpV4EviVxlan().Msg() + if obj.cTypeHolder == nil { + obj.cTypeHolder = &flowRSVPPathObjectsTimeValuesCType{obj: obj.obj.CType} } - - return obj + return obj.cTypeHolder } -// EVPN VXLAN instance to be configured per Ethernet Segment. -// EviVxlan returns a BgpV4EviVxlan -func (obj *bgpV4EvpnEvis) EviVxlan() BgpV4EviVxlan { - if obj.obj.EviVxlan == nil { - obj.SetChoice(BgpV4EvpnEvisChoice.EVI_VXLAN) - } - if obj.eviVxlanHolder == nil { - obj.eviVxlanHolder = &bgpV4EviVxlan{obj: obj.obj.EviVxlan} - } - return obj.eviVxlanHolder +// description is TBD +// CType returns a FlowRSVPPathObjectsTimeValuesCType +func (obj *flowRSVPPathObjectsClassTimeValues) HasCType() bool { + return obj.obj.CType != nil } -// EVPN VXLAN instance to be configured per Ethernet Segment. -// EviVxlan returns a BgpV4EviVxlan -func (obj *bgpV4EvpnEvis) HasEviVxlan() bool { - return obj.obj.EviVxlan != nil -} +// description is TBD +// SetCType sets the FlowRSVPPathObjectsTimeValuesCType value in the FlowRSVPPathObjectsClassTimeValues object +func (obj *flowRSVPPathObjectsClassTimeValues) SetCType(value FlowRSVPPathObjectsTimeValuesCType) FlowRSVPPathObjectsClassTimeValues { -// EVPN VXLAN instance to be configured per Ethernet Segment. -// SetEviVxlan sets the BgpV4EviVxlan value in the BgpV4EvpnEvis object -func (obj *bgpV4EvpnEvis) SetEviVxlan(value BgpV4EviVxlan) BgpV4EvpnEvis { - obj.SetChoice(BgpV4EvpnEvisChoice.EVI_VXLAN) - obj.eviVxlanHolder = nil - obj.obj.EviVxlan = value.Msg() + obj.cTypeHolder = nil + obj.obj.CType = value.Msg() return obj } -func (obj *bgpV4EvpnEvis) validateObj(vObj *validation, set_default bool) { +func (obj *flowRSVPPathObjectsClassTimeValues) validateObj(vObj *validation, set_default bool) { if set_default { obj.setDefault() } - if obj.obj.EviVxlan != nil { + if obj.obj.CType != nil { - obj.EviVxlan().validateObj(vObj, set_default) + obj.CType().validateObj(vObj, set_default) } } -func (obj *bgpV4EvpnEvis) setDefault() { - if obj.obj.Choice == nil { - obj.SetChoice(BgpV4EvpnEvisChoice.EVI_VXLAN) - - } +func (obj *flowRSVPPathObjectsClassTimeValues) setDefault() { } -// ***** BgpRouteAdvanced ***** -type bgpRouteAdvanced struct { +// ***** FlowRSVPPathObjectsClassExplicitRoute ***** +type flowRSVPPathObjectsClassExplicitRoute struct { validation - obj *otg.BgpRouteAdvanced + obj *otg.FlowRSVPPathObjectsClassExplicitRoute + cTypeHolder FlowRSVPPathObjectsClassExplicitRouteCType } -func NewBgpRouteAdvanced() BgpRouteAdvanced { - obj := bgpRouteAdvanced{obj: &otg.BgpRouteAdvanced{}} +func NewFlowRSVPPathObjectsClassExplicitRoute() FlowRSVPPathObjectsClassExplicitRoute { + obj := flowRSVPPathObjectsClassExplicitRoute{obj: &otg.FlowRSVPPathObjectsClassExplicitRoute{}} obj.setDefault() return &obj } -func (obj *bgpRouteAdvanced) Msg() *otg.BgpRouteAdvanced { +func (obj *flowRSVPPathObjectsClassExplicitRoute) Msg() *otg.FlowRSVPPathObjectsClassExplicitRoute { return obj.obj } -func (obj *bgpRouteAdvanced) SetMsg(msg *otg.BgpRouteAdvanced) BgpRouteAdvanced { - +func (obj *flowRSVPPathObjectsClassExplicitRoute) SetMsg(msg *otg.FlowRSVPPathObjectsClassExplicitRoute) FlowRSVPPathObjectsClassExplicitRoute { + obj.setNil() proto.Merge(obj.obj, msg) return obj } -func (obj *bgpRouteAdvanced) ToProto() (*otg.BgpRouteAdvanced, error) { +func (obj *flowRSVPPathObjectsClassExplicitRoute) ToProto() (*otg.FlowRSVPPathObjectsClassExplicitRoute, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -276449,7 +323174,7 @@ func (obj *bgpRouteAdvanced) ToProto() (*otg.BgpRouteAdvanced, error) { return obj.Msg(), nil } -func (obj *bgpRouteAdvanced) FromProto(msg *otg.BgpRouteAdvanced) (BgpRouteAdvanced, error) { +func (obj *flowRSVPPathObjectsClassExplicitRoute) FromProto(msg *otg.FlowRSVPPathObjectsClassExplicitRoute) (FlowRSVPPathObjectsClassExplicitRoute, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -276458,7 +323183,7 @@ func (obj *bgpRouteAdvanced) FromProto(msg *otg.BgpRouteAdvanced) (BgpRouteAdvan return newObj, nil } -func (obj *bgpRouteAdvanced) ToPbText() (string, error) { +func (obj *flowRSVPPathObjectsClassExplicitRoute) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -276470,12 +323195,12 @@ func (obj *bgpRouteAdvanced) ToPbText() (string, error) { return string(protoMarshal), nil } -func (obj *bgpRouteAdvanced) FromPbText(value string) error { +func (obj *flowRSVPPathObjectsClassExplicitRoute) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj } - + obj.setNil() vErr := obj.validateToAndFrom() if vErr != nil { return vErr @@ -276483,7 +323208,7 @@ func (obj *bgpRouteAdvanced) FromPbText(value string) error { return retObj } -func (obj *bgpRouteAdvanced) ToYaml() (string, error) { +func (obj *flowRSVPPathObjectsClassExplicitRoute) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -276504,7 +323229,7 @@ func (obj *bgpRouteAdvanced) ToYaml() (string, error) { return string(data), nil } -func (obj *bgpRouteAdvanced) FromYaml(value string) error { +func (obj *flowRSVPPathObjectsClassExplicitRoute) FromYaml(value string) error { if value == "" { value = "{}" } @@ -276521,7 +323246,7 @@ func (obj *bgpRouteAdvanced) FromYaml(value string) error { return fmt.Errorf("unmarshal error %s", strings.Replace( uError.Error(), "\u00a0", " ", -1)[7:]) } - + obj.setNil() vErr := obj.validateToAndFrom() if vErr != nil { return vErr @@ -276529,7 +323254,7 @@ func (obj *bgpRouteAdvanced) FromYaml(value string) error { return nil } -func (obj *bgpRouteAdvanced) ToJson() (string, error) { +func (obj *flowRSVPPathObjectsClassExplicitRoute) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -276547,7 +323272,7 @@ func (obj *bgpRouteAdvanced) ToJson() (string, error) { return string(data), nil } -func (obj *bgpRouteAdvanced) FromJson(value string) error { +func (obj *flowRSVPPathObjectsClassExplicitRoute) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -276560,7 +323285,7 @@ func (obj *bgpRouteAdvanced) FromJson(value string) error { return fmt.Errorf("unmarshal error %s", strings.Replace( uError.Error(), "\u00a0", " ", -1)[7:]) } - + obj.setNil() err := obj.validateToAndFrom() if err != nil { return err @@ -276568,19 +323293,19 @@ func (obj *bgpRouteAdvanced) FromJson(value string) error { return nil } -func (obj *bgpRouteAdvanced) validateToAndFrom() error { +func (obj *flowRSVPPathObjectsClassExplicitRoute) validateToAndFrom() error { // emptyVars() obj.validateObj(&obj.validation, true) return obj.validationResult() } -func (obj *bgpRouteAdvanced) Validate() error { +func (obj *flowRSVPPathObjectsClassExplicitRoute) Validate() error { // emptyVars() obj.validateObj(&obj.validation, false) return obj.validationResult() } -func (obj *bgpRouteAdvanced) String() string { +func (obj *flowRSVPPathObjectsClassExplicitRoute) String() string { str, err := obj.ToYaml() if err != nil { return err.Error() @@ -276588,12 +323313,12 @@ func (obj *bgpRouteAdvanced) String() string { return str } -func (obj *bgpRouteAdvanced) Clone() (BgpRouteAdvanced, error) { +func (obj *flowRSVPPathObjectsClassExplicitRoute) Clone() (FlowRSVPPathObjectsClassExplicitRoute, error) { vErr := obj.Validate() if vErr != nil { return nil, vErr } - newObj := NewBgpRouteAdvanced() + newObj := NewFlowRSVPPathObjectsClassExplicitRoute() data, err := proto.Marshal(obj.Msg()) if err != nil { return nil, err @@ -276605,274 +323330,126 @@ func (obj *bgpRouteAdvanced) Clone() (BgpRouteAdvanced, error) { return newObj, nil } -// BgpRouteAdvanced is configuration for advanced BGP route range settings. -type BgpRouteAdvanced interface { +func (obj *flowRSVPPathObjectsClassExplicitRoute) setNil() { + obj.cTypeHolder = nil + obj.validationErrors = nil + obj.warnings = nil + obj.constraints = make(map[string]map[string]Constraints) +} + +// FlowRSVPPathObjectsClassExplicitRoute is c-Type is specific to a class num. +type FlowRSVPPathObjectsClassExplicitRoute interface { Validation - // Msg marshals BgpRouteAdvanced to protobuf object *otg.BgpRouteAdvanced + // Msg marshals FlowRSVPPathObjectsClassExplicitRoute to protobuf object *otg.FlowRSVPPathObjectsClassExplicitRoute // and doesn't set defaults - Msg() *otg.BgpRouteAdvanced - // SetMsg unmarshals BgpRouteAdvanced from protobuf object *otg.BgpRouteAdvanced + Msg() *otg.FlowRSVPPathObjectsClassExplicitRoute + // SetMsg unmarshals FlowRSVPPathObjectsClassExplicitRoute from protobuf object *otg.FlowRSVPPathObjectsClassExplicitRoute // and doesn't set defaults - SetMsg(*otg.BgpRouteAdvanced) BgpRouteAdvanced - // ToProto marshals BgpRouteAdvanced to protobuf object *otg.BgpRouteAdvanced - ToProto() (*otg.BgpRouteAdvanced, error) - // ToPbText marshals BgpRouteAdvanced to protobuf text + SetMsg(*otg.FlowRSVPPathObjectsClassExplicitRoute) FlowRSVPPathObjectsClassExplicitRoute + // ToProto marshals FlowRSVPPathObjectsClassExplicitRoute to protobuf object *otg.FlowRSVPPathObjectsClassExplicitRoute + ToProto() (*otg.FlowRSVPPathObjectsClassExplicitRoute, error) + // ToPbText marshals FlowRSVPPathObjectsClassExplicitRoute to protobuf text ToPbText() (string, error) - // ToYaml marshals BgpRouteAdvanced to YAML text + // ToYaml marshals FlowRSVPPathObjectsClassExplicitRoute to YAML text ToYaml() (string, error) - // ToJson marshals BgpRouteAdvanced to JSON text + // ToJson marshals FlowRSVPPathObjectsClassExplicitRoute to JSON text ToJson() (string, error) - // FromProto unmarshals BgpRouteAdvanced from protobuf object *otg.BgpRouteAdvanced - FromProto(msg *otg.BgpRouteAdvanced) (BgpRouteAdvanced, error) - // FromPbText unmarshals BgpRouteAdvanced from protobuf text + // FromProto unmarshals FlowRSVPPathObjectsClassExplicitRoute from protobuf object *otg.FlowRSVPPathObjectsClassExplicitRoute + FromProto(msg *otg.FlowRSVPPathObjectsClassExplicitRoute) (FlowRSVPPathObjectsClassExplicitRoute, error) + // FromPbText unmarshals FlowRSVPPathObjectsClassExplicitRoute from protobuf text FromPbText(value string) error - // FromYaml unmarshals BgpRouteAdvanced from YAML text + // FromYaml unmarshals FlowRSVPPathObjectsClassExplicitRoute from YAML text FromYaml(value string) error - // FromJson unmarshals BgpRouteAdvanced from JSON text + // FromJson unmarshals FlowRSVPPathObjectsClassExplicitRoute from JSON text FromJson(value string) error - // Validate validates BgpRouteAdvanced + // Validate validates FlowRSVPPathObjectsClassExplicitRoute Validate() error // A stringer function String() string // Clones the object - Clone() (BgpRouteAdvanced, error) + Clone() (FlowRSVPPathObjectsClassExplicitRoute, error) validateToAndFrom() error validateObj(vObj *validation, set_default bool) setDefault() - // IncludeMultiExitDiscriminator returns bool, set in BgpRouteAdvanced. - IncludeMultiExitDiscriminator() bool - // SetIncludeMultiExitDiscriminator assigns bool provided by user to BgpRouteAdvanced - SetIncludeMultiExitDiscriminator(value bool) BgpRouteAdvanced - // HasIncludeMultiExitDiscriminator checks if IncludeMultiExitDiscriminator has been set in BgpRouteAdvanced - HasIncludeMultiExitDiscriminator() bool - // MultiExitDiscriminator returns uint32, set in BgpRouteAdvanced. - MultiExitDiscriminator() uint32 - // SetMultiExitDiscriminator assigns uint32 provided by user to BgpRouteAdvanced - SetMultiExitDiscriminator(value uint32) BgpRouteAdvanced - // HasMultiExitDiscriminator checks if MultiExitDiscriminator has been set in BgpRouteAdvanced - HasMultiExitDiscriminator() bool - // IncludeOrigin returns bool, set in BgpRouteAdvanced. - IncludeOrigin() bool - // SetIncludeOrigin assigns bool provided by user to BgpRouteAdvanced - SetIncludeOrigin(value bool) BgpRouteAdvanced - // HasIncludeOrigin checks if IncludeOrigin has been set in BgpRouteAdvanced - HasIncludeOrigin() bool - // Origin returns BgpRouteAdvancedOriginEnum, set in BgpRouteAdvanced - Origin() BgpRouteAdvancedOriginEnum - // SetOrigin assigns BgpRouteAdvancedOriginEnum provided by user to BgpRouteAdvanced - SetOrigin(value BgpRouteAdvancedOriginEnum) BgpRouteAdvanced - // HasOrigin checks if Origin has been set in BgpRouteAdvanced - HasOrigin() bool - // IncludeLocalPreference returns bool, set in BgpRouteAdvanced. - IncludeLocalPreference() bool - // SetIncludeLocalPreference assigns bool provided by user to BgpRouteAdvanced - SetIncludeLocalPreference(value bool) BgpRouteAdvanced - // HasIncludeLocalPreference checks if IncludeLocalPreference has been set in BgpRouteAdvanced - HasIncludeLocalPreference() bool - // LocalPreference returns uint32, set in BgpRouteAdvanced. - LocalPreference() uint32 - // SetLocalPreference assigns uint32 provided by user to BgpRouteAdvanced - SetLocalPreference(value uint32) BgpRouteAdvanced - // HasLocalPreference checks if LocalPreference has been set in BgpRouteAdvanced - HasLocalPreference() bool -} - -// BGP Multi Exit Discriminator attribute sent to the peer to help in the route selection process. If set to true, the Multi Exit Discriminator attribute will be included in the route advertisement. -// IncludeMultiExitDiscriminator returns a bool -func (obj *bgpRouteAdvanced) IncludeMultiExitDiscriminator() bool { - - return *obj.obj.IncludeMultiExitDiscriminator - -} - -// BGP Multi Exit Discriminator attribute sent to the peer to help in the route selection process. If set to true, the Multi Exit Discriminator attribute will be included in the route advertisement. -// IncludeMultiExitDiscriminator returns a bool -func (obj *bgpRouteAdvanced) HasIncludeMultiExitDiscriminator() bool { - return obj.obj.IncludeMultiExitDiscriminator != nil -} - -// BGP Multi Exit Discriminator attribute sent to the peer to help in the route selection process. If set to true, the Multi Exit Discriminator attribute will be included in the route advertisement. -// SetIncludeMultiExitDiscriminator sets the bool value in the BgpRouteAdvanced object -func (obj *bgpRouteAdvanced) SetIncludeMultiExitDiscriminator(value bool) BgpRouteAdvanced { - - obj.obj.IncludeMultiExitDiscriminator = &value - return obj -} - -// The multi exit discriminator (MED) value used for route selection sent to the peer. -// MultiExitDiscriminator returns a uint32 -func (obj *bgpRouteAdvanced) MultiExitDiscriminator() uint32 { - - return *obj.obj.MultiExitDiscriminator - -} - -// The multi exit discriminator (MED) value used for route selection sent to the peer. -// MultiExitDiscriminator returns a uint32 -func (obj *bgpRouteAdvanced) HasMultiExitDiscriminator() bool { - return obj.obj.MultiExitDiscriminator != nil -} - -// The multi exit discriminator (MED) value used for route selection sent to the peer. -// SetMultiExitDiscriminator sets the uint32 value in the BgpRouteAdvanced object -func (obj *bgpRouteAdvanced) SetMultiExitDiscriminator(value uint32) BgpRouteAdvanced { - - obj.obj.MultiExitDiscriminator = &value - return obj -} - -// If set to true, the Origin attribute will be included in the route advertisement. -// IncludeOrigin returns a bool -func (obj *bgpRouteAdvanced) IncludeOrigin() bool { - - return *obj.obj.IncludeOrigin - -} - -// If set to true, the Origin attribute will be included in the route advertisement. -// IncludeOrigin returns a bool -func (obj *bgpRouteAdvanced) HasIncludeOrigin() bool { - return obj.obj.IncludeOrigin != nil -} - -// If set to true, the Origin attribute will be included in the route advertisement. -// SetIncludeOrigin sets the bool value in the BgpRouteAdvanced object -func (obj *bgpRouteAdvanced) SetIncludeOrigin(value bool) BgpRouteAdvanced { - - obj.obj.IncludeOrigin = &value - return obj -} - -type BgpRouteAdvancedOriginEnum string - -// Enum of Origin on BgpRouteAdvanced -var BgpRouteAdvancedOrigin = struct { - IGP BgpRouteAdvancedOriginEnum - EGP BgpRouteAdvancedOriginEnum - INCOMPLETE BgpRouteAdvancedOriginEnum -}{ - IGP: BgpRouteAdvancedOriginEnum("igp"), - EGP: BgpRouteAdvancedOriginEnum("egp"), - INCOMPLETE: BgpRouteAdvancedOriginEnum("incomplete"), -} - -func (obj *bgpRouteAdvanced) Origin() BgpRouteAdvancedOriginEnum { - return BgpRouteAdvancedOriginEnum(obj.obj.Origin.Enum().String()) -} - -// The origin attribute of a prefix can take three values: the prefix originates from an interior routing protocol 'igp', it originates from 'egp' or the origin is 'incomplete', if the prefix is learned through other means. -// Origin returns a string -func (obj *bgpRouteAdvanced) HasOrigin() bool { - return obj.obj.Origin != nil + // CType returns FlowRSVPPathObjectsClassExplicitRouteCType, set in FlowRSVPPathObjectsClassExplicitRoute. + // FlowRSVPPathObjectsClassExplicitRouteCType is object for EXPLICIT_ROUTE class and c-type is Type 1 Explicit Route (1). + CType() FlowRSVPPathObjectsClassExplicitRouteCType + // SetCType assigns FlowRSVPPathObjectsClassExplicitRouteCType provided by user to FlowRSVPPathObjectsClassExplicitRoute. + // FlowRSVPPathObjectsClassExplicitRouteCType is object for EXPLICIT_ROUTE class and c-type is Type 1 Explicit Route (1). + SetCType(value FlowRSVPPathObjectsClassExplicitRouteCType) FlowRSVPPathObjectsClassExplicitRoute + // HasCType checks if CType has been set in FlowRSVPPathObjectsClassExplicitRoute + HasCType() bool + setNil() } -func (obj *bgpRouteAdvanced) SetOrigin(value BgpRouteAdvancedOriginEnum) BgpRouteAdvanced { - intValue, ok := otg.BgpRouteAdvanced_Origin_Enum_value[string(value)] - if !ok { - obj.validationErrors = append(obj.validationErrors, fmt.Sprintf( - "%s is not a valid choice on BgpRouteAdvancedOriginEnum", string(value))) - return obj +// description is TBD +// CType returns a FlowRSVPPathObjectsClassExplicitRouteCType +func (obj *flowRSVPPathObjectsClassExplicitRoute) CType() FlowRSVPPathObjectsClassExplicitRouteCType { + if obj.obj.CType == nil { + obj.obj.CType = NewFlowRSVPPathObjectsClassExplicitRouteCType().Msg() } - enumValue := otg.BgpRouteAdvanced_Origin_Enum(intValue) - obj.obj.Origin = &enumValue - - return obj -} - -// BGP Local Preference attribute sent to the peer to indicate the degree of preference for externally learned routes. If set to true, the Local Preference attribute will be included in the route advertisement. This should be included only for internal peers. -// IncludeLocalPreference returns a bool -func (obj *bgpRouteAdvanced) IncludeLocalPreference() bool { - - return *obj.obj.IncludeLocalPreference - -} - -// BGP Local Preference attribute sent to the peer to indicate the degree of preference for externally learned routes. If set to true, the Local Preference attribute will be included in the route advertisement. This should be included only for internal peers. -// IncludeLocalPreference returns a bool -func (obj *bgpRouteAdvanced) HasIncludeLocalPreference() bool { - return obj.obj.IncludeLocalPreference != nil -} - -// BGP Local Preference attribute sent to the peer to indicate the degree of preference for externally learned routes. If set to true, the Local Preference attribute will be included in the route advertisement. This should be included only for internal peers. -// SetIncludeLocalPreference sets the bool value in the BgpRouteAdvanced object -func (obj *bgpRouteAdvanced) SetIncludeLocalPreference(value bool) BgpRouteAdvanced { - - obj.obj.IncludeLocalPreference = &value - return obj + if obj.cTypeHolder == nil { + obj.cTypeHolder = &flowRSVPPathObjectsClassExplicitRouteCType{obj: obj.obj.CType} + } + return obj.cTypeHolder } -// Value to be set in Local Preference attribute if include_local_preference is set to true. It is used for the selection of the path for the traffic leaving the AS. The route with the highest local preference value is preferred. -// LocalPreference returns a uint32 -func (obj *bgpRouteAdvanced) LocalPreference() uint32 { - - return *obj.obj.LocalPreference - +// description is TBD +// CType returns a FlowRSVPPathObjectsClassExplicitRouteCType +func (obj *flowRSVPPathObjectsClassExplicitRoute) HasCType() bool { + return obj.obj.CType != nil } -// Value to be set in Local Preference attribute if include_local_preference is set to true. It is used for the selection of the path for the traffic leaving the AS. The route with the highest local preference value is preferred. -// LocalPreference returns a uint32 -func (obj *bgpRouteAdvanced) HasLocalPreference() bool { - return obj.obj.LocalPreference != nil -} +// description is TBD +// SetCType sets the FlowRSVPPathObjectsClassExplicitRouteCType value in the FlowRSVPPathObjectsClassExplicitRoute object +func (obj *flowRSVPPathObjectsClassExplicitRoute) SetCType(value FlowRSVPPathObjectsClassExplicitRouteCType) FlowRSVPPathObjectsClassExplicitRoute { -// Value to be set in Local Preference attribute if include_local_preference is set to true. It is used for the selection of the path for the traffic leaving the AS. The route with the highest local preference value is preferred. -// SetLocalPreference sets the uint32 value in the BgpRouteAdvanced object -func (obj *bgpRouteAdvanced) SetLocalPreference(value uint32) BgpRouteAdvanced { + obj.cTypeHolder = nil + obj.obj.CType = value.Msg() - obj.obj.LocalPreference = &value return obj } -func (obj *bgpRouteAdvanced) validateObj(vObj *validation, set_default bool) { +func (obj *flowRSVPPathObjectsClassExplicitRoute) validateObj(vObj *validation, set_default bool) { if set_default { obj.setDefault() } -} - -func (obj *bgpRouteAdvanced) setDefault() { - if obj.obj.IncludeMultiExitDiscriminator == nil { - obj.SetIncludeMultiExitDiscriminator(true) - } - if obj.obj.IncludeOrigin == nil { - obj.SetIncludeOrigin(true) - } - if obj.obj.Origin == nil { - obj.SetOrigin(BgpRouteAdvancedOrigin.IGP) + if obj.obj.CType != nil { - } - if obj.obj.IncludeLocalPreference == nil { - obj.SetIncludeLocalPreference(true) - } - if obj.obj.LocalPreference == nil { - obj.SetLocalPreference(100) + obj.CType().validateObj(vObj, set_default) } } -// ***** BgpCommunity ***** -type bgpCommunity struct { +func (obj *flowRSVPPathObjectsClassExplicitRoute) setDefault() { + +} + +// ***** FlowRSVPPathObjectsClassLabelRequest ***** +type flowRSVPPathObjectsClassLabelRequest struct { validation - obj *otg.BgpCommunity + obj *otg.FlowRSVPPathObjectsClassLabelRequest + cTypeHolder FlowRSVPPathObjectsLabelRequestCType } -func NewBgpCommunity() BgpCommunity { - obj := bgpCommunity{obj: &otg.BgpCommunity{}} +func NewFlowRSVPPathObjectsClassLabelRequest() FlowRSVPPathObjectsClassLabelRequest { + obj := flowRSVPPathObjectsClassLabelRequest{obj: &otg.FlowRSVPPathObjectsClassLabelRequest{}} obj.setDefault() return &obj } -func (obj *bgpCommunity) Msg() *otg.BgpCommunity { +func (obj *flowRSVPPathObjectsClassLabelRequest) Msg() *otg.FlowRSVPPathObjectsClassLabelRequest { return obj.obj } -func (obj *bgpCommunity) SetMsg(msg *otg.BgpCommunity) BgpCommunity { - +func (obj *flowRSVPPathObjectsClassLabelRequest) SetMsg(msg *otg.FlowRSVPPathObjectsClassLabelRequest) FlowRSVPPathObjectsClassLabelRequest { + obj.setNil() proto.Merge(obj.obj, msg) return obj } -func (obj *bgpCommunity) ToProto() (*otg.BgpCommunity, error) { +func (obj *flowRSVPPathObjectsClassLabelRequest) ToProto() (*otg.FlowRSVPPathObjectsClassLabelRequest, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -276880,7 +323457,7 @@ func (obj *bgpCommunity) ToProto() (*otg.BgpCommunity, error) { return obj.Msg(), nil } -func (obj *bgpCommunity) FromProto(msg *otg.BgpCommunity) (BgpCommunity, error) { +func (obj *flowRSVPPathObjectsClassLabelRequest) FromProto(msg *otg.FlowRSVPPathObjectsClassLabelRequest) (FlowRSVPPathObjectsClassLabelRequest, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -276889,7 +323466,7 @@ func (obj *bgpCommunity) FromProto(msg *otg.BgpCommunity) (BgpCommunity, error) return newObj, nil } -func (obj *bgpCommunity) ToPbText() (string, error) { +func (obj *flowRSVPPathObjectsClassLabelRequest) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -276901,12 +323478,12 @@ func (obj *bgpCommunity) ToPbText() (string, error) { return string(protoMarshal), nil } -func (obj *bgpCommunity) FromPbText(value string) error { +func (obj *flowRSVPPathObjectsClassLabelRequest) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj } - + obj.setNil() vErr := obj.validateToAndFrom() if vErr != nil { return vErr @@ -276914,7 +323491,7 @@ func (obj *bgpCommunity) FromPbText(value string) error { return retObj } -func (obj *bgpCommunity) ToYaml() (string, error) { +func (obj *flowRSVPPathObjectsClassLabelRequest) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -276935,7 +323512,7 @@ func (obj *bgpCommunity) ToYaml() (string, error) { return string(data), nil } -func (obj *bgpCommunity) FromYaml(value string) error { +func (obj *flowRSVPPathObjectsClassLabelRequest) FromYaml(value string) error { if value == "" { value = "{}" } @@ -276952,7 +323529,7 @@ func (obj *bgpCommunity) FromYaml(value string) error { return fmt.Errorf("unmarshal error %s", strings.Replace( uError.Error(), "\u00a0", " ", -1)[7:]) } - + obj.setNil() vErr := obj.validateToAndFrom() if vErr != nil { return vErr @@ -276960,7 +323537,7 @@ func (obj *bgpCommunity) FromYaml(value string) error { return nil } -func (obj *bgpCommunity) ToJson() (string, error) { +func (obj *flowRSVPPathObjectsClassLabelRequest) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -276978,7 +323555,7 @@ func (obj *bgpCommunity) ToJson() (string, error) { return string(data), nil } -func (obj *bgpCommunity) FromJson(value string) error { +func (obj *flowRSVPPathObjectsClassLabelRequest) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -276991,7 +323568,7 @@ func (obj *bgpCommunity) FromJson(value string) error { return fmt.Errorf("unmarshal error %s", strings.Replace( uError.Error(), "\u00a0", " ", -1)[7:]) } - + obj.setNil() err := obj.validateToAndFrom() if err != nil { return err @@ -276999,19 +323576,19 @@ func (obj *bgpCommunity) FromJson(value string) error { return nil } -func (obj *bgpCommunity) validateToAndFrom() error { +func (obj *flowRSVPPathObjectsClassLabelRequest) validateToAndFrom() error { // emptyVars() obj.validateObj(&obj.validation, true) return obj.validationResult() } -func (obj *bgpCommunity) Validate() error { +func (obj *flowRSVPPathObjectsClassLabelRequest) Validate() error { // emptyVars() obj.validateObj(&obj.validation, false) return obj.validationResult() } -func (obj *bgpCommunity) String() string { +func (obj *flowRSVPPathObjectsClassLabelRequest) String() string { str, err := obj.ToYaml() if err != nil { return err.Error() @@ -277019,12 +323596,12 @@ func (obj *bgpCommunity) String() string { return str } -func (obj *bgpCommunity) Clone() (BgpCommunity, error) { +func (obj *flowRSVPPathObjectsClassLabelRequest) Clone() (FlowRSVPPathObjectsClassLabelRequest, error) { vErr := obj.Validate() if vErr != nil { return nil, vErr } - newObj := NewBgpCommunity() + newObj := NewFlowRSVPPathObjectsClassLabelRequest() data, err := proto.Marshal(obj.Msg()) if err != nil { return nil, err @@ -277036,206 +323613,126 @@ func (obj *bgpCommunity) Clone() (BgpCommunity, error) { return newObj, nil } -// BgpCommunity is bGP communities provide additional capability for tagging routes and for modifying BGP routing policy on upstream and downstream routers. BGP community is a 32-bit number which is broken into 16-bit AS number and a 16-bit custom value. -type BgpCommunity interface { +func (obj *flowRSVPPathObjectsClassLabelRequest) setNil() { + obj.cTypeHolder = nil + obj.validationErrors = nil + obj.warnings = nil + obj.constraints = make(map[string]map[string]Constraints) +} + +// FlowRSVPPathObjectsClassLabelRequest is c-Type is specific to a class num. +type FlowRSVPPathObjectsClassLabelRequest interface { Validation - // Msg marshals BgpCommunity to protobuf object *otg.BgpCommunity + // Msg marshals FlowRSVPPathObjectsClassLabelRequest to protobuf object *otg.FlowRSVPPathObjectsClassLabelRequest // and doesn't set defaults - Msg() *otg.BgpCommunity - // SetMsg unmarshals BgpCommunity from protobuf object *otg.BgpCommunity + Msg() *otg.FlowRSVPPathObjectsClassLabelRequest + // SetMsg unmarshals FlowRSVPPathObjectsClassLabelRequest from protobuf object *otg.FlowRSVPPathObjectsClassLabelRequest // and doesn't set defaults - SetMsg(*otg.BgpCommunity) BgpCommunity - // ToProto marshals BgpCommunity to protobuf object *otg.BgpCommunity - ToProto() (*otg.BgpCommunity, error) - // ToPbText marshals BgpCommunity to protobuf text + SetMsg(*otg.FlowRSVPPathObjectsClassLabelRequest) FlowRSVPPathObjectsClassLabelRequest + // ToProto marshals FlowRSVPPathObjectsClassLabelRequest to protobuf object *otg.FlowRSVPPathObjectsClassLabelRequest + ToProto() (*otg.FlowRSVPPathObjectsClassLabelRequest, error) + // ToPbText marshals FlowRSVPPathObjectsClassLabelRequest to protobuf text ToPbText() (string, error) - // ToYaml marshals BgpCommunity to YAML text + // ToYaml marshals FlowRSVPPathObjectsClassLabelRequest to YAML text ToYaml() (string, error) - // ToJson marshals BgpCommunity to JSON text + // ToJson marshals FlowRSVPPathObjectsClassLabelRequest to JSON text ToJson() (string, error) - // FromProto unmarshals BgpCommunity from protobuf object *otg.BgpCommunity - FromProto(msg *otg.BgpCommunity) (BgpCommunity, error) - // FromPbText unmarshals BgpCommunity from protobuf text + // FromProto unmarshals FlowRSVPPathObjectsClassLabelRequest from protobuf object *otg.FlowRSVPPathObjectsClassLabelRequest + FromProto(msg *otg.FlowRSVPPathObjectsClassLabelRequest) (FlowRSVPPathObjectsClassLabelRequest, error) + // FromPbText unmarshals FlowRSVPPathObjectsClassLabelRequest from protobuf text FromPbText(value string) error - // FromYaml unmarshals BgpCommunity from YAML text + // FromYaml unmarshals FlowRSVPPathObjectsClassLabelRequest from YAML text FromYaml(value string) error - // FromJson unmarshals BgpCommunity from JSON text + // FromJson unmarshals FlowRSVPPathObjectsClassLabelRequest from JSON text FromJson(value string) error - // Validate validates BgpCommunity + // Validate validates FlowRSVPPathObjectsClassLabelRequest Validate() error // A stringer function String() string // Clones the object - Clone() (BgpCommunity, error) + Clone() (FlowRSVPPathObjectsClassLabelRequest, error) validateToAndFrom() error validateObj(vObj *validation, set_default bool) setDefault() - // Type returns BgpCommunityTypeEnum, set in BgpCommunity - Type() BgpCommunityTypeEnum - // SetType assigns BgpCommunityTypeEnum provided by user to BgpCommunity - SetType(value BgpCommunityTypeEnum) BgpCommunity - // HasType checks if Type has been set in BgpCommunity - HasType() bool - // AsNumber returns uint32, set in BgpCommunity. - AsNumber() uint32 - // SetAsNumber assigns uint32 provided by user to BgpCommunity - SetAsNumber(value uint32) BgpCommunity - // HasAsNumber checks if AsNumber has been set in BgpCommunity - HasAsNumber() bool - // AsCustom returns uint32, set in BgpCommunity. - AsCustom() uint32 - // SetAsCustom assigns uint32 provided by user to BgpCommunity - SetAsCustom(value uint32) BgpCommunity - // HasAsCustom checks if AsCustom has been set in BgpCommunity - HasAsCustom() bool -} - -type BgpCommunityTypeEnum string - -// Enum of Type on BgpCommunity -var BgpCommunityType = struct { - MANUAL_AS_NUMBER BgpCommunityTypeEnum - NO_EXPORT BgpCommunityTypeEnum - NO_ADVERTISED BgpCommunityTypeEnum - NO_EXPORT_SUBCONFED BgpCommunityTypeEnum - LLGR_STALE BgpCommunityTypeEnum - NO_LLGR BgpCommunityTypeEnum -}{ - MANUAL_AS_NUMBER: BgpCommunityTypeEnum("manual_as_number"), - NO_EXPORT: BgpCommunityTypeEnum("no_export"), - NO_ADVERTISED: BgpCommunityTypeEnum("no_advertised"), - NO_EXPORT_SUBCONFED: BgpCommunityTypeEnum("no_export_subconfed"), - LLGR_STALE: BgpCommunityTypeEnum("llgr_stale"), - NO_LLGR: BgpCommunityTypeEnum("no_llgr"), -} - -func (obj *bgpCommunity) Type() BgpCommunityTypeEnum { - return BgpCommunityTypeEnum(obj.obj.Type.Enum().String()) -} - -// The type of community AS number. -// Type returns a string -func (obj *bgpCommunity) HasType() bool { - return obj.obj.Type != nil + // CType returns FlowRSVPPathObjectsLabelRequestCType, set in FlowRSVPPathObjectsClassLabelRequest. + // FlowRSVPPathObjectsLabelRequestCType is object for LABEL_REQUEST class. Currently supported c-type is Without Label Range (1). + CType() FlowRSVPPathObjectsLabelRequestCType + // SetCType assigns FlowRSVPPathObjectsLabelRequestCType provided by user to FlowRSVPPathObjectsClassLabelRequest. + // FlowRSVPPathObjectsLabelRequestCType is object for LABEL_REQUEST class. Currently supported c-type is Without Label Range (1). + SetCType(value FlowRSVPPathObjectsLabelRequestCType) FlowRSVPPathObjectsClassLabelRequest + // HasCType checks if CType has been set in FlowRSVPPathObjectsClassLabelRequest + HasCType() bool + setNil() } -func (obj *bgpCommunity) SetType(value BgpCommunityTypeEnum) BgpCommunity { - intValue, ok := otg.BgpCommunity_Type_Enum_value[string(value)] - if !ok { - obj.validationErrors = append(obj.validationErrors, fmt.Sprintf( - "%s is not a valid choice on BgpCommunityTypeEnum", string(value))) - return obj +// description is TBD +// CType returns a FlowRSVPPathObjectsLabelRequestCType +func (obj *flowRSVPPathObjectsClassLabelRequest) CType() FlowRSVPPathObjectsLabelRequestCType { + if obj.obj.CType == nil { + obj.obj.CType = NewFlowRSVPPathObjectsLabelRequestCType().Msg() } - enumValue := otg.BgpCommunity_Type_Enum(intValue) - obj.obj.Type = &enumValue - - return obj -} - -// First two octets of 32 bit community AS number. -// AsNumber returns a uint32 -func (obj *bgpCommunity) AsNumber() uint32 { - - return *obj.obj.AsNumber - -} - -// First two octets of 32 bit community AS number. -// AsNumber returns a uint32 -func (obj *bgpCommunity) HasAsNumber() bool { - return obj.obj.AsNumber != nil -} - -// First two octets of 32 bit community AS number. -// SetAsNumber sets the uint32 value in the BgpCommunity object -func (obj *bgpCommunity) SetAsNumber(value uint32) BgpCommunity { - - obj.obj.AsNumber = &value - return obj + if obj.cTypeHolder == nil { + obj.cTypeHolder = &flowRSVPPathObjectsLabelRequestCType{obj: obj.obj.CType} + } + return obj.cTypeHolder } -// Last two octets of the community value. -// AsCustom returns a uint32 -func (obj *bgpCommunity) AsCustom() uint32 { - - return *obj.obj.AsCustom - +// description is TBD +// CType returns a FlowRSVPPathObjectsLabelRequestCType +func (obj *flowRSVPPathObjectsClassLabelRequest) HasCType() bool { + return obj.obj.CType != nil } -// Last two octets of the community value. -// AsCustom returns a uint32 -func (obj *bgpCommunity) HasAsCustom() bool { - return obj.obj.AsCustom != nil -} +// description is TBD +// SetCType sets the FlowRSVPPathObjectsLabelRequestCType value in the FlowRSVPPathObjectsClassLabelRequest object +func (obj *flowRSVPPathObjectsClassLabelRequest) SetCType(value FlowRSVPPathObjectsLabelRequestCType) FlowRSVPPathObjectsClassLabelRequest { -// Last two octets of the community value. -// SetAsCustom sets the uint32 value in the BgpCommunity object -func (obj *bgpCommunity) SetAsCustom(value uint32) BgpCommunity { + obj.cTypeHolder = nil + obj.obj.CType = value.Msg() - obj.obj.AsCustom = &value return obj } -func (obj *bgpCommunity) validateObj(vObj *validation, set_default bool) { +func (obj *flowRSVPPathObjectsClassLabelRequest) validateObj(vObj *validation, set_default bool) { if set_default { obj.setDefault() } - if obj.obj.AsNumber != nil { - - if *obj.obj.AsNumber > 65535 { - vObj.validationErrors = append( - vObj.validationErrors, - fmt.Sprintf("0 <= BgpCommunity.AsNumber <= 65535 but Got %d", *obj.obj.AsNumber)) - } - - } - - if obj.obj.AsCustom != nil { - - if *obj.obj.AsCustom > 65535 { - vObj.validationErrors = append( - vObj.validationErrors, - fmt.Sprintf("0 <= BgpCommunity.AsCustom <= 65535 but Got %d", *obj.obj.AsCustom)) - } + if obj.obj.CType != nil { + obj.CType().validateObj(vObj, set_default) } } -func (obj *bgpCommunity) setDefault() { - if obj.obj.AsNumber == nil { - obj.SetAsNumber(0) - } - if obj.obj.AsCustom == nil { - obj.SetAsCustom(0) - } +func (obj *flowRSVPPathObjectsClassLabelRequest) setDefault() { } -// ***** BgpExtCommunity ***** -type bgpExtCommunity struct { +// ***** FlowRSVPPathObjectsClassSessionAttribute ***** +type flowRSVPPathObjectsClassSessionAttribute struct { validation - obj *otg.BgpExtCommunity + obj *otg.FlowRSVPPathObjectsClassSessionAttribute + cTypeHolder FlowRSVPPathObjectsSessionAttributeCType } -func NewBgpExtCommunity() BgpExtCommunity { - obj := bgpExtCommunity{obj: &otg.BgpExtCommunity{}} +func NewFlowRSVPPathObjectsClassSessionAttribute() FlowRSVPPathObjectsClassSessionAttribute { + obj := flowRSVPPathObjectsClassSessionAttribute{obj: &otg.FlowRSVPPathObjectsClassSessionAttribute{}} obj.setDefault() return &obj } -func (obj *bgpExtCommunity) Msg() *otg.BgpExtCommunity { +func (obj *flowRSVPPathObjectsClassSessionAttribute) Msg() *otg.FlowRSVPPathObjectsClassSessionAttribute { return obj.obj } -func (obj *bgpExtCommunity) SetMsg(msg *otg.BgpExtCommunity) BgpExtCommunity { - +func (obj *flowRSVPPathObjectsClassSessionAttribute) SetMsg(msg *otg.FlowRSVPPathObjectsClassSessionAttribute) FlowRSVPPathObjectsClassSessionAttribute { + obj.setNil() proto.Merge(obj.obj, msg) return obj } -func (obj *bgpExtCommunity) ToProto() (*otg.BgpExtCommunity, error) { +func (obj *flowRSVPPathObjectsClassSessionAttribute) ToProto() (*otg.FlowRSVPPathObjectsClassSessionAttribute, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -277243,7 +323740,7 @@ func (obj *bgpExtCommunity) ToProto() (*otg.BgpExtCommunity, error) { return obj.Msg(), nil } -func (obj *bgpExtCommunity) FromProto(msg *otg.BgpExtCommunity) (BgpExtCommunity, error) { +func (obj *flowRSVPPathObjectsClassSessionAttribute) FromProto(msg *otg.FlowRSVPPathObjectsClassSessionAttribute) (FlowRSVPPathObjectsClassSessionAttribute, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -277252,7 +323749,7 @@ func (obj *bgpExtCommunity) FromProto(msg *otg.BgpExtCommunity) (BgpExtCommunity return newObj, nil } -func (obj *bgpExtCommunity) ToPbText() (string, error) { +func (obj *flowRSVPPathObjectsClassSessionAttribute) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -277264,12 +323761,12 @@ func (obj *bgpExtCommunity) ToPbText() (string, error) { return string(protoMarshal), nil } -func (obj *bgpExtCommunity) FromPbText(value string) error { +func (obj *flowRSVPPathObjectsClassSessionAttribute) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj } - + obj.setNil() vErr := obj.validateToAndFrom() if vErr != nil { return vErr @@ -277277,7 +323774,7 @@ func (obj *bgpExtCommunity) FromPbText(value string) error { return retObj } -func (obj *bgpExtCommunity) ToYaml() (string, error) { +func (obj *flowRSVPPathObjectsClassSessionAttribute) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -277298,7 +323795,7 @@ func (obj *bgpExtCommunity) ToYaml() (string, error) { return string(data), nil } -func (obj *bgpExtCommunity) FromYaml(value string) error { +func (obj *flowRSVPPathObjectsClassSessionAttribute) FromYaml(value string) error { if value == "" { value = "{}" } @@ -277315,7 +323812,7 @@ func (obj *bgpExtCommunity) FromYaml(value string) error { return fmt.Errorf("unmarshal error %s", strings.Replace( uError.Error(), "\u00a0", " ", -1)[7:]) } - + obj.setNil() vErr := obj.validateToAndFrom() if vErr != nil { return vErr @@ -277323,7 +323820,7 @@ func (obj *bgpExtCommunity) FromYaml(value string) error { return nil } -func (obj *bgpExtCommunity) ToJson() (string, error) { +func (obj *flowRSVPPathObjectsClassSessionAttribute) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -277341,7 +323838,7 @@ func (obj *bgpExtCommunity) ToJson() (string, error) { return string(data), nil } -func (obj *bgpExtCommunity) FromJson(value string) error { +func (obj *flowRSVPPathObjectsClassSessionAttribute) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -277354,7 +323851,7 @@ func (obj *bgpExtCommunity) FromJson(value string) error { return fmt.Errorf("unmarshal error %s", strings.Replace( uError.Error(), "\u00a0", " ", -1)[7:]) } - + obj.setNil() err := obj.validateToAndFrom() if err != nil { return err @@ -277362,19 +323859,19 @@ func (obj *bgpExtCommunity) FromJson(value string) error { return nil } -func (obj *bgpExtCommunity) validateToAndFrom() error { +func (obj *flowRSVPPathObjectsClassSessionAttribute) validateToAndFrom() error { // emptyVars() obj.validateObj(&obj.validation, true) return obj.validationResult() } -func (obj *bgpExtCommunity) Validate() error { +func (obj *flowRSVPPathObjectsClassSessionAttribute) Validate() error { // emptyVars() obj.validateObj(&obj.validation, false) return obj.validationResult() } -func (obj *bgpExtCommunity) String() string { +func (obj *flowRSVPPathObjectsClassSessionAttribute) String() string { str, err := obj.ToYaml() if err != nil { return err.Error() @@ -277382,12 +323879,12 @@ func (obj *bgpExtCommunity) String() string { return str } -func (obj *bgpExtCommunity) Clone() (BgpExtCommunity, error) { +func (obj *flowRSVPPathObjectsClassSessionAttribute) Clone() (FlowRSVPPathObjectsClassSessionAttribute, error) { vErr := obj.Validate() if vErr != nil { return nil, vErr } - newObj := NewBgpExtCommunity() + newObj := NewFlowRSVPPathObjectsClassSessionAttribute() data, err := proto.Marshal(obj.Msg()) if err != nil { return nil, err @@ -277399,222 +323896,126 @@ func (obj *bgpExtCommunity) Clone() (BgpExtCommunity, error) { return newObj, nil } -// BgpExtCommunity is the Extended Communities Attribute is a transitive optional BGP attribute, with the Type Code 16. Community and Extended Communities attributes are utilized to trigger routing decisions, such as acceptance, rejection, preference, or redistribution. An extended community is an 8-Bytes value. It is divided into two main parts. The first 2 Bytes of the community encode a type and sub-type fields and the last 6 Bytes carry a unique set of data in a format defined by the type and sub-type field. Extended communities provide a larger range for grouping or categorizing communities. -type BgpExtCommunity interface { +func (obj *flowRSVPPathObjectsClassSessionAttribute) setNil() { + obj.cTypeHolder = nil + obj.validationErrors = nil + obj.warnings = nil + obj.constraints = make(map[string]map[string]Constraints) +} + +// FlowRSVPPathObjectsClassSessionAttribute is c-Type is specific to a class num. +type FlowRSVPPathObjectsClassSessionAttribute interface { Validation - // Msg marshals BgpExtCommunity to protobuf object *otg.BgpExtCommunity + // Msg marshals FlowRSVPPathObjectsClassSessionAttribute to protobuf object *otg.FlowRSVPPathObjectsClassSessionAttribute // and doesn't set defaults - Msg() *otg.BgpExtCommunity - // SetMsg unmarshals BgpExtCommunity from protobuf object *otg.BgpExtCommunity + Msg() *otg.FlowRSVPPathObjectsClassSessionAttribute + // SetMsg unmarshals FlowRSVPPathObjectsClassSessionAttribute from protobuf object *otg.FlowRSVPPathObjectsClassSessionAttribute // and doesn't set defaults - SetMsg(*otg.BgpExtCommunity) BgpExtCommunity - // ToProto marshals BgpExtCommunity to protobuf object *otg.BgpExtCommunity - ToProto() (*otg.BgpExtCommunity, error) - // ToPbText marshals BgpExtCommunity to protobuf text + SetMsg(*otg.FlowRSVPPathObjectsClassSessionAttribute) FlowRSVPPathObjectsClassSessionAttribute + // ToProto marshals FlowRSVPPathObjectsClassSessionAttribute to protobuf object *otg.FlowRSVPPathObjectsClassSessionAttribute + ToProto() (*otg.FlowRSVPPathObjectsClassSessionAttribute, error) + // ToPbText marshals FlowRSVPPathObjectsClassSessionAttribute to protobuf text ToPbText() (string, error) - // ToYaml marshals BgpExtCommunity to YAML text + // ToYaml marshals FlowRSVPPathObjectsClassSessionAttribute to YAML text ToYaml() (string, error) - // ToJson marshals BgpExtCommunity to JSON text + // ToJson marshals FlowRSVPPathObjectsClassSessionAttribute to JSON text ToJson() (string, error) - // FromProto unmarshals BgpExtCommunity from protobuf object *otg.BgpExtCommunity - FromProto(msg *otg.BgpExtCommunity) (BgpExtCommunity, error) - // FromPbText unmarshals BgpExtCommunity from protobuf text + // FromProto unmarshals FlowRSVPPathObjectsClassSessionAttribute from protobuf object *otg.FlowRSVPPathObjectsClassSessionAttribute + FromProto(msg *otg.FlowRSVPPathObjectsClassSessionAttribute) (FlowRSVPPathObjectsClassSessionAttribute, error) + // FromPbText unmarshals FlowRSVPPathObjectsClassSessionAttribute from protobuf text FromPbText(value string) error - // FromYaml unmarshals BgpExtCommunity from YAML text + // FromYaml unmarshals FlowRSVPPathObjectsClassSessionAttribute from YAML text FromYaml(value string) error - // FromJson unmarshals BgpExtCommunity from JSON text + // FromJson unmarshals FlowRSVPPathObjectsClassSessionAttribute from JSON text FromJson(value string) error - // Validate validates BgpExtCommunity + // Validate validates FlowRSVPPathObjectsClassSessionAttribute Validate() error // A stringer function String() string // Clones the object - Clone() (BgpExtCommunity, error) + Clone() (FlowRSVPPathObjectsClassSessionAttribute, error) validateToAndFrom() error validateObj(vObj *validation, set_default bool) setDefault() - // Type returns BgpExtCommunityTypeEnum, set in BgpExtCommunity - Type() BgpExtCommunityTypeEnum - // SetType assigns BgpExtCommunityTypeEnum provided by user to BgpExtCommunity - SetType(value BgpExtCommunityTypeEnum) BgpExtCommunity - // HasType checks if Type has been set in BgpExtCommunity - HasType() bool - // Subtype returns BgpExtCommunitySubtypeEnum, set in BgpExtCommunity - Subtype() BgpExtCommunitySubtypeEnum - // SetSubtype assigns BgpExtCommunitySubtypeEnum provided by user to BgpExtCommunity - SetSubtype(value BgpExtCommunitySubtypeEnum) BgpExtCommunity - // HasSubtype checks if Subtype has been set in BgpExtCommunity - HasSubtype() bool - // Value returns string, set in BgpExtCommunity. - Value() string - // SetValue assigns string provided by user to BgpExtCommunity - SetValue(value string) BgpExtCommunity - // HasValue checks if Value has been set in BgpExtCommunity - HasValue() bool -} - -type BgpExtCommunityTypeEnum string - -// Enum of Type on BgpExtCommunity -var BgpExtCommunityType = struct { - ADMINISTRATOR_AS_2OCTET BgpExtCommunityTypeEnum - ADMINISTRATOR_IPV4_ADDRESS BgpExtCommunityTypeEnum - ADMINISTRATOR_AS_4OCTET BgpExtCommunityTypeEnum - OPAQUE BgpExtCommunityTypeEnum - EVPN BgpExtCommunityTypeEnum - ADMINISTRATOR_AS_2OCTET_LINK_BANDWIDTH BgpExtCommunityTypeEnum -}{ - ADMINISTRATOR_AS_2OCTET: BgpExtCommunityTypeEnum("administrator_as_2octet"), - ADMINISTRATOR_IPV4_ADDRESS: BgpExtCommunityTypeEnum("administrator_ipv4_address"), - ADMINISTRATOR_AS_4OCTET: BgpExtCommunityTypeEnum("administrator_as_4octet"), - OPAQUE: BgpExtCommunityTypeEnum("opaque"), - EVPN: BgpExtCommunityTypeEnum("evpn"), - ADMINISTRATOR_AS_2OCTET_LINK_BANDWIDTH: BgpExtCommunityTypeEnum("administrator_as_2octet_link_bandwidth"), -} - -func (obj *bgpExtCommunity) Type() BgpExtCommunityTypeEnum { - return BgpExtCommunityTypeEnum(obj.obj.Type.Enum().String()) -} - -// Extended Community Type field of 1 Byte. -// - administrator_as_2octet: Two-Octet AS Specific Extended Community (RFC 4360). -// - administrator_ipv4_address: IPv4 Address Specific Extended Community (RFC 4360). -// - administrator_as_4octet: 4-Octet AS Specific Extended Community (RFC 5668). -// - opaque: Opaque Extended Community (RFC 7432). -// - evpn: EVPN Extended Community (RFC 7153). -// - administrator_as_2octet_link_bandwidth : Link Bandwidth Extended Community (RFC 7153). -// Type returns a string -func (obj *bgpExtCommunity) HasType() bool { - return obj.obj.Type != nil + // CType returns FlowRSVPPathObjectsSessionAttributeCType, set in FlowRSVPPathObjectsClassSessionAttribute. + // FlowRSVPPathObjectsSessionAttributeCType is object for SESSION_ATTRIBUTE class. Currently supported c-type is LSP_Tunnel (1) and LSP_Tunnel (7). + CType() FlowRSVPPathObjectsSessionAttributeCType + // SetCType assigns FlowRSVPPathObjectsSessionAttributeCType provided by user to FlowRSVPPathObjectsClassSessionAttribute. + // FlowRSVPPathObjectsSessionAttributeCType is object for SESSION_ATTRIBUTE class. Currently supported c-type is LSP_Tunnel (1) and LSP_Tunnel (7). + SetCType(value FlowRSVPPathObjectsSessionAttributeCType) FlowRSVPPathObjectsClassSessionAttribute + // HasCType checks if CType has been set in FlowRSVPPathObjectsClassSessionAttribute + HasCType() bool + setNil() } -func (obj *bgpExtCommunity) SetType(value BgpExtCommunityTypeEnum) BgpExtCommunity { - intValue, ok := otg.BgpExtCommunity_Type_Enum_value[string(value)] - if !ok { - obj.validationErrors = append(obj.validationErrors, fmt.Sprintf( - "%s is not a valid choice on BgpExtCommunityTypeEnum", string(value))) - return obj +// description is TBD +// CType returns a FlowRSVPPathObjectsSessionAttributeCType +func (obj *flowRSVPPathObjectsClassSessionAttribute) CType() FlowRSVPPathObjectsSessionAttributeCType { + if obj.obj.CType == nil { + obj.obj.CType = NewFlowRSVPPathObjectsSessionAttributeCType().Msg() } - enumValue := otg.BgpExtCommunity_Type_Enum(intValue) - obj.obj.Type = &enumValue - - return obj -} - -type BgpExtCommunitySubtypeEnum string - -// Enum of Subtype on BgpExtCommunity -var BgpExtCommunitySubtype = struct { - ROUTE_TARGET BgpExtCommunitySubtypeEnum - ORIGIN BgpExtCommunitySubtypeEnum - EXTENDED_BANDWIDTH BgpExtCommunitySubtypeEnum - COLOR BgpExtCommunitySubtypeEnum - ENCAPSULATION BgpExtCommunitySubtypeEnum - MAC_ADDRESS BgpExtCommunitySubtypeEnum -}{ - ROUTE_TARGET: BgpExtCommunitySubtypeEnum("route_target"), - ORIGIN: BgpExtCommunitySubtypeEnum("origin"), - EXTENDED_BANDWIDTH: BgpExtCommunitySubtypeEnum("extended_bandwidth"), - COLOR: BgpExtCommunitySubtypeEnum("color"), - ENCAPSULATION: BgpExtCommunitySubtypeEnum("encapsulation"), - MAC_ADDRESS: BgpExtCommunitySubtypeEnum("mac_address"), -} - -func (obj *bgpExtCommunity) Subtype() BgpExtCommunitySubtypeEnum { - return BgpExtCommunitySubtypeEnum(obj.obj.Subtype.Enum().String()) -} - -// Extended Community Sub Type field of 1 Byte. -// - route_target: Route Target. -// - origin: Origin. -// - extended_bandwidth: Specifies the link bandwidth. -// - color: Specifies the color value. -// - encapsulation: Specifies the Encapsulation Extended Community. -// - mac_address: Specifies the Extended community MAC address. -// Subtype returns a string -func (obj *bgpExtCommunity) HasSubtype() bool { - return obj.obj.Subtype != nil -} - -func (obj *bgpExtCommunity) SetSubtype(value BgpExtCommunitySubtypeEnum) BgpExtCommunity { - intValue, ok := otg.BgpExtCommunity_Subtype_Enum_value[string(value)] - if !ok { - obj.validationErrors = append(obj.validationErrors, fmt.Sprintf( - "%s is not a valid choice on BgpExtCommunitySubtypeEnum", string(value))) - return obj + if obj.cTypeHolder == nil { + obj.cTypeHolder = &flowRSVPPathObjectsSessionAttributeCType{obj: obj.obj.CType} } - enumValue := otg.BgpExtCommunity_Subtype_Enum(intValue) - obj.obj.Subtype = &enumValue - - return obj + return obj.cTypeHolder } -// Extended Community value of 6 Bytes. Example - for the Opaque type and Color subtype value can be '0000000000c8' for the color value 200. -// Value returns a string -func (obj *bgpExtCommunity) Value() string { - - return *obj.obj.Value - +// description is TBD +// CType returns a FlowRSVPPathObjectsSessionAttributeCType +func (obj *flowRSVPPathObjectsClassSessionAttribute) HasCType() bool { + return obj.obj.CType != nil } -// Extended Community value of 6 Bytes. Example - for the Opaque type and Color subtype value can be '0000000000c8' for the color value 200. -// Value returns a string -func (obj *bgpExtCommunity) HasValue() bool { - return obj.obj.Value != nil -} +// description is TBD +// SetCType sets the FlowRSVPPathObjectsSessionAttributeCType value in the FlowRSVPPathObjectsClassSessionAttribute object +func (obj *flowRSVPPathObjectsClassSessionAttribute) SetCType(value FlowRSVPPathObjectsSessionAttributeCType) FlowRSVPPathObjectsClassSessionAttribute { -// Extended Community value of 6 Bytes. Example - for the Opaque type and Color subtype value can be '0000000000c8' for the color value 200. -// SetValue sets the string value in the BgpExtCommunity object -func (obj *bgpExtCommunity) SetValue(value string) BgpExtCommunity { + obj.cTypeHolder = nil + obj.obj.CType = value.Msg() - obj.obj.Value = &value return obj } -func (obj *bgpExtCommunity) validateObj(vObj *validation, set_default bool) { +func (obj *flowRSVPPathObjectsClassSessionAttribute) validateObj(vObj *validation, set_default bool) { if set_default { obj.setDefault() } - if obj.obj.Value != nil { - - err := obj.validateHex(obj.Value()) - if err != nil { - vObj.validationErrors = append(vObj.validationErrors, fmt.Sprintf("%s %s", err.Error(), "on BgpExtCommunity.Value")) - } + if obj.obj.CType != nil { + obj.CType().validateObj(vObj, set_default) } } -func (obj *bgpExtCommunity) setDefault() { +func (obj *flowRSVPPathObjectsClassSessionAttribute) setDefault() { } -// ***** BgpAsPath ***** -type bgpAsPath struct { +// ***** FlowRSVPPathObjectsClassSenderTemplate ***** +type flowRSVPPathObjectsClassSenderTemplate struct { validation - obj *otg.BgpAsPath - segmentsHolder BgpAsPathBgpAsPathSegmentIter + obj *otg.FlowRSVPPathObjectsClassSenderTemplate + cTypeHolder FlowRSVPPathObjectsSenderTemplateCType } -func NewBgpAsPath() BgpAsPath { - obj := bgpAsPath{obj: &otg.BgpAsPath{}} +func NewFlowRSVPPathObjectsClassSenderTemplate() FlowRSVPPathObjectsClassSenderTemplate { + obj := flowRSVPPathObjectsClassSenderTemplate{obj: &otg.FlowRSVPPathObjectsClassSenderTemplate{}} obj.setDefault() return &obj } -func (obj *bgpAsPath) Msg() *otg.BgpAsPath { +func (obj *flowRSVPPathObjectsClassSenderTemplate) Msg() *otg.FlowRSVPPathObjectsClassSenderTemplate { return obj.obj } -func (obj *bgpAsPath) SetMsg(msg *otg.BgpAsPath) BgpAsPath { +func (obj *flowRSVPPathObjectsClassSenderTemplate) SetMsg(msg *otg.FlowRSVPPathObjectsClassSenderTemplate) FlowRSVPPathObjectsClassSenderTemplate { obj.setNil() proto.Merge(obj.obj, msg) return obj } -func (obj *bgpAsPath) ToProto() (*otg.BgpAsPath, error) { +func (obj *flowRSVPPathObjectsClassSenderTemplate) ToProto() (*otg.FlowRSVPPathObjectsClassSenderTemplate, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -277622,7 +324023,7 @@ func (obj *bgpAsPath) ToProto() (*otg.BgpAsPath, error) { return obj.Msg(), nil } -func (obj *bgpAsPath) FromProto(msg *otg.BgpAsPath) (BgpAsPath, error) { +func (obj *flowRSVPPathObjectsClassSenderTemplate) FromProto(msg *otg.FlowRSVPPathObjectsClassSenderTemplate) (FlowRSVPPathObjectsClassSenderTemplate, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -277631,7 +324032,7 @@ func (obj *bgpAsPath) FromProto(msg *otg.BgpAsPath) (BgpAsPath, error) { return newObj, nil } -func (obj *bgpAsPath) ToPbText() (string, error) { +func (obj *flowRSVPPathObjectsClassSenderTemplate) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -277643,7 +324044,7 @@ func (obj *bgpAsPath) ToPbText() (string, error) { return string(protoMarshal), nil } -func (obj *bgpAsPath) FromPbText(value string) error { +func (obj *flowRSVPPathObjectsClassSenderTemplate) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj @@ -277656,7 +324057,7 @@ func (obj *bgpAsPath) FromPbText(value string) error { return retObj } -func (obj *bgpAsPath) ToYaml() (string, error) { +func (obj *flowRSVPPathObjectsClassSenderTemplate) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -277677,7 +324078,7 @@ func (obj *bgpAsPath) ToYaml() (string, error) { return string(data), nil } -func (obj *bgpAsPath) FromYaml(value string) error { +func (obj *flowRSVPPathObjectsClassSenderTemplate) FromYaml(value string) error { if value == "" { value = "{}" } @@ -277702,7 +324103,7 @@ func (obj *bgpAsPath) FromYaml(value string) error { return nil } -func (obj *bgpAsPath) ToJson() (string, error) { +func (obj *flowRSVPPathObjectsClassSenderTemplate) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -277720,7 +324121,7 @@ func (obj *bgpAsPath) ToJson() (string, error) { return string(data), nil } -func (obj *bgpAsPath) FromJson(value string) error { +func (obj *flowRSVPPathObjectsClassSenderTemplate) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -277741,19 +324142,19 @@ func (obj *bgpAsPath) FromJson(value string) error { return nil } -func (obj *bgpAsPath) validateToAndFrom() error { +func (obj *flowRSVPPathObjectsClassSenderTemplate) validateToAndFrom() error { // emptyVars() obj.validateObj(&obj.validation, true) return obj.validationResult() } -func (obj *bgpAsPath) Validate() error { +func (obj *flowRSVPPathObjectsClassSenderTemplate) Validate() error { // emptyVars() obj.validateObj(&obj.validation, false) return obj.validationResult() } -func (obj *bgpAsPath) String() string { +func (obj *flowRSVPPathObjectsClassSenderTemplate) String() string { str, err := obj.ToYaml() if err != nil { return err.Error() @@ -277761,12 +324162,12 @@ func (obj *bgpAsPath) String() string { return str } -func (obj *bgpAsPath) Clone() (BgpAsPath, error) { +func (obj *flowRSVPPathObjectsClassSenderTemplate) Clone() (FlowRSVPPathObjectsClassSenderTemplate, error) { vErr := obj.Validate() if vErr != nil { return nil, vErr } - newObj := NewBgpAsPath() + newObj := NewFlowRSVPPathObjectsClassSenderTemplate() data, err := proto.Marshal(obj.Msg()) if err != nil { return nil, err @@ -277778,239 +324179,126 @@ func (obj *bgpAsPath) Clone() (BgpAsPath, error) { return newObj, nil } -func (obj *bgpAsPath) setNil() { - obj.segmentsHolder = nil +func (obj *flowRSVPPathObjectsClassSenderTemplate) setNil() { + obj.cTypeHolder = nil obj.validationErrors = nil obj.warnings = nil obj.constraints = make(map[string]map[string]Constraints) } -// BgpAsPath is this attribute identifies the autonomous systems through which routing information carried in this UPDATE message has passed. This contains the configuration of how to include the Local AS in the AS path attribute of the MP REACH NLRI. It also contains optional configuration of additional AS Path Segments that can be included in the AS Path attribute. The AS Path consists of a Set or Sequence of Autonomous Systems (AS) numbers that a routing information passes through to reach the destination. -type BgpAsPath interface { +// FlowRSVPPathObjectsClassSenderTemplate is c-Type is specific to a class num. +type FlowRSVPPathObjectsClassSenderTemplate interface { Validation - // Msg marshals BgpAsPath to protobuf object *otg.BgpAsPath + // Msg marshals FlowRSVPPathObjectsClassSenderTemplate to protobuf object *otg.FlowRSVPPathObjectsClassSenderTemplate // and doesn't set defaults - Msg() *otg.BgpAsPath - // SetMsg unmarshals BgpAsPath from protobuf object *otg.BgpAsPath + Msg() *otg.FlowRSVPPathObjectsClassSenderTemplate + // SetMsg unmarshals FlowRSVPPathObjectsClassSenderTemplate from protobuf object *otg.FlowRSVPPathObjectsClassSenderTemplate // and doesn't set defaults - SetMsg(*otg.BgpAsPath) BgpAsPath - // ToProto marshals BgpAsPath to protobuf object *otg.BgpAsPath - ToProto() (*otg.BgpAsPath, error) - // ToPbText marshals BgpAsPath to protobuf text + SetMsg(*otg.FlowRSVPPathObjectsClassSenderTemplate) FlowRSVPPathObjectsClassSenderTemplate + // ToProto marshals FlowRSVPPathObjectsClassSenderTemplate to protobuf object *otg.FlowRSVPPathObjectsClassSenderTemplate + ToProto() (*otg.FlowRSVPPathObjectsClassSenderTemplate, error) + // ToPbText marshals FlowRSVPPathObjectsClassSenderTemplate to protobuf text ToPbText() (string, error) - // ToYaml marshals BgpAsPath to YAML text + // ToYaml marshals FlowRSVPPathObjectsClassSenderTemplate to YAML text ToYaml() (string, error) - // ToJson marshals BgpAsPath to JSON text + // ToJson marshals FlowRSVPPathObjectsClassSenderTemplate to JSON text ToJson() (string, error) - // FromProto unmarshals BgpAsPath from protobuf object *otg.BgpAsPath - FromProto(msg *otg.BgpAsPath) (BgpAsPath, error) - // FromPbText unmarshals BgpAsPath from protobuf text + // FromProto unmarshals FlowRSVPPathObjectsClassSenderTemplate from protobuf object *otg.FlowRSVPPathObjectsClassSenderTemplate + FromProto(msg *otg.FlowRSVPPathObjectsClassSenderTemplate) (FlowRSVPPathObjectsClassSenderTemplate, error) + // FromPbText unmarshals FlowRSVPPathObjectsClassSenderTemplate from protobuf text FromPbText(value string) error - // FromYaml unmarshals BgpAsPath from YAML text + // FromYaml unmarshals FlowRSVPPathObjectsClassSenderTemplate from YAML text FromYaml(value string) error - // FromJson unmarshals BgpAsPath from JSON text + // FromJson unmarshals FlowRSVPPathObjectsClassSenderTemplate from JSON text FromJson(value string) error - // Validate validates BgpAsPath + // Validate validates FlowRSVPPathObjectsClassSenderTemplate Validate() error // A stringer function String() string // Clones the object - Clone() (BgpAsPath, error) + Clone() (FlowRSVPPathObjectsClassSenderTemplate, error) validateToAndFrom() error validateObj(vObj *validation, set_default bool) setDefault() - // AsSetMode returns BgpAsPathAsSetModeEnum, set in BgpAsPath - AsSetMode() BgpAsPathAsSetModeEnum - // SetAsSetMode assigns BgpAsPathAsSetModeEnum provided by user to BgpAsPath - SetAsSetMode(value BgpAsPathAsSetModeEnum) BgpAsPath - // HasAsSetMode checks if AsSetMode has been set in BgpAsPath - HasAsSetMode() bool - // Segments returns BgpAsPathBgpAsPathSegmentIterIter, set in BgpAsPath - Segments() BgpAsPathBgpAsPathSegmentIter + // CType returns FlowRSVPPathObjectsSenderTemplateCType, set in FlowRSVPPathObjectsClassSenderTemplate. + // FlowRSVPPathObjectsSenderTemplateCType is object for SENDER_TEMPLATE class. Currently supported c-type is LSP Tunnel IPv4 (7). + CType() FlowRSVPPathObjectsSenderTemplateCType + // SetCType assigns FlowRSVPPathObjectsSenderTemplateCType provided by user to FlowRSVPPathObjectsClassSenderTemplate. + // FlowRSVPPathObjectsSenderTemplateCType is object for SENDER_TEMPLATE class. Currently supported c-type is LSP Tunnel IPv4 (7). + SetCType(value FlowRSVPPathObjectsSenderTemplateCType) FlowRSVPPathObjectsClassSenderTemplate + // HasCType checks if CType has been set in FlowRSVPPathObjectsClassSenderTemplate + HasCType() bool setNil() } -type BgpAsPathAsSetModeEnum string - -// Enum of AsSetMode on BgpAsPath -var BgpAsPathAsSetMode = struct { - DO_NOT_INCLUDE_LOCAL_AS BgpAsPathAsSetModeEnum - INCLUDE_AS_SEQ BgpAsPathAsSetModeEnum - INCLUDE_AS_SET BgpAsPathAsSetModeEnum - INCLUDE_AS_CONFED_SEQ BgpAsPathAsSetModeEnum - INCLUDE_AS_CONFED_SET BgpAsPathAsSetModeEnum - PREPEND_TO_FIRST_SEGMENT BgpAsPathAsSetModeEnum -}{ - DO_NOT_INCLUDE_LOCAL_AS: BgpAsPathAsSetModeEnum("do_not_include_local_as"), - INCLUDE_AS_SEQ: BgpAsPathAsSetModeEnum("include_as_seq"), - INCLUDE_AS_SET: BgpAsPathAsSetModeEnum("include_as_set"), - INCLUDE_AS_CONFED_SEQ: BgpAsPathAsSetModeEnum("include_as_confed_seq"), - INCLUDE_AS_CONFED_SET: BgpAsPathAsSetModeEnum("include_as_confed_set"), - PREPEND_TO_FIRST_SEGMENT: BgpAsPathAsSetModeEnum("prepend_to_first_segment"), -} - -func (obj *bgpAsPath) AsSetMode() BgpAsPathAsSetModeEnum { - return BgpAsPathAsSetModeEnum(obj.obj.AsSetMode.Enum().String()) -} - -// Defines how the Local AS should be included in the MP REACH NLRI. For iBGP sessions, "Do Not Include Local AS" must be chosen. For eBGP sessions, any choice other than "Do Not Include Local AS" can be chosen. -// AsSetMode returns a string -func (obj *bgpAsPath) HasAsSetMode() bool { - return obj.obj.AsSetMode != nil -} - -func (obj *bgpAsPath) SetAsSetMode(value BgpAsPathAsSetModeEnum) BgpAsPath { - intValue, ok := otg.BgpAsPath_AsSetMode_Enum_value[string(value)] - if !ok { - obj.validationErrors = append(obj.validationErrors, fmt.Sprintf( - "%s is not a valid choice on BgpAsPathAsSetModeEnum", string(value))) - return obj - } - enumValue := otg.BgpAsPath_AsSetMode_Enum(intValue) - obj.obj.AsSetMode = &enumValue - - return obj -} - -// The additional AS path segments to be added in the NLRI. By default, an empty AS path is always included and the local AS is added to it as per the value of 'as_set_mode' attribute. -// Segments returns a []BgpAsPathSegment -func (obj *bgpAsPath) Segments() BgpAsPathBgpAsPathSegmentIter { - if len(obj.obj.Segments) == 0 { - obj.obj.Segments = []*otg.BgpAsPathSegment{} - } - if obj.segmentsHolder == nil { - obj.segmentsHolder = newBgpAsPathBgpAsPathSegmentIter(&obj.obj.Segments).setMsg(obj) +// description is TBD +// CType returns a FlowRSVPPathObjectsSenderTemplateCType +func (obj *flowRSVPPathObjectsClassSenderTemplate) CType() FlowRSVPPathObjectsSenderTemplateCType { + if obj.obj.CType == nil { + obj.obj.CType = NewFlowRSVPPathObjectsSenderTemplateCType().Msg() } - return obj.segmentsHolder -} - -type bgpAsPathBgpAsPathSegmentIter struct { - obj *bgpAsPath - bgpAsPathSegmentSlice []BgpAsPathSegment - fieldPtr *[]*otg.BgpAsPathSegment -} - -func newBgpAsPathBgpAsPathSegmentIter(ptr *[]*otg.BgpAsPathSegment) BgpAsPathBgpAsPathSegmentIter { - return &bgpAsPathBgpAsPathSegmentIter{fieldPtr: ptr} -} - -type BgpAsPathBgpAsPathSegmentIter interface { - setMsg(*bgpAsPath) BgpAsPathBgpAsPathSegmentIter - Items() []BgpAsPathSegment - Add() BgpAsPathSegment - Append(items ...BgpAsPathSegment) BgpAsPathBgpAsPathSegmentIter - Set(index int, newObj BgpAsPathSegment) BgpAsPathBgpAsPathSegmentIter - Clear() BgpAsPathBgpAsPathSegmentIter - clearHolderSlice() BgpAsPathBgpAsPathSegmentIter - appendHolderSlice(item BgpAsPathSegment) BgpAsPathBgpAsPathSegmentIter -} - -func (obj *bgpAsPathBgpAsPathSegmentIter) setMsg(msg *bgpAsPath) BgpAsPathBgpAsPathSegmentIter { - obj.clearHolderSlice() - for _, val := range *obj.fieldPtr { - obj.appendHolderSlice(&bgpAsPathSegment{obj: val}) + if obj.cTypeHolder == nil { + obj.cTypeHolder = &flowRSVPPathObjectsSenderTemplateCType{obj: obj.obj.CType} } - obj.obj = msg - return obj + return obj.cTypeHolder } -func (obj *bgpAsPathBgpAsPathSegmentIter) Items() []BgpAsPathSegment { - return obj.bgpAsPathSegmentSlice +// description is TBD +// CType returns a FlowRSVPPathObjectsSenderTemplateCType +func (obj *flowRSVPPathObjectsClassSenderTemplate) HasCType() bool { + return obj.obj.CType != nil } -func (obj *bgpAsPathBgpAsPathSegmentIter) Add() BgpAsPathSegment { - newObj := &otg.BgpAsPathSegment{} - *obj.fieldPtr = append(*obj.fieldPtr, newObj) - newLibObj := &bgpAsPathSegment{obj: newObj} - newLibObj.setDefault() - obj.bgpAsPathSegmentSlice = append(obj.bgpAsPathSegmentSlice, newLibObj) - return newLibObj -} +// description is TBD +// SetCType sets the FlowRSVPPathObjectsSenderTemplateCType value in the FlowRSVPPathObjectsClassSenderTemplate object +func (obj *flowRSVPPathObjectsClassSenderTemplate) SetCType(value FlowRSVPPathObjectsSenderTemplateCType) FlowRSVPPathObjectsClassSenderTemplate { -func (obj *bgpAsPathBgpAsPathSegmentIter) Append(items ...BgpAsPathSegment) BgpAsPathBgpAsPathSegmentIter { - for _, item := range items { - newObj := item.Msg() - *obj.fieldPtr = append(*obj.fieldPtr, newObj) - obj.bgpAsPathSegmentSlice = append(obj.bgpAsPathSegmentSlice, item) - } - return obj -} + obj.cTypeHolder = nil + obj.obj.CType = value.Msg() -func (obj *bgpAsPathBgpAsPathSegmentIter) Set(index int, newObj BgpAsPathSegment) BgpAsPathBgpAsPathSegmentIter { - (*obj.fieldPtr)[index] = newObj.Msg() - obj.bgpAsPathSegmentSlice[index] = newObj - return obj -} -func (obj *bgpAsPathBgpAsPathSegmentIter) Clear() BgpAsPathBgpAsPathSegmentIter { - if len(*obj.fieldPtr) > 0 { - *obj.fieldPtr = []*otg.BgpAsPathSegment{} - obj.bgpAsPathSegmentSlice = []BgpAsPathSegment{} - } - return obj -} -func (obj *bgpAsPathBgpAsPathSegmentIter) clearHolderSlice() BgpAsPathBgpAsPathSegmentIter { - if len(obj.bgpAsPathSegmentSlice) > 0 { - obj.bgpAsPathSegmentSlice = []BgpAsPathSegment{} - } - return obj -} -func (obj *bgpAsPathBgpAsPathSegmentIter) appendHolderSlice(item BgpAsPathSegment) BgpAsPathBgpAsPathSegmentIter { - obj.bgpAsPathSegmentSlice = append(obj.bgpAsPathSegmentSlice, item) return obj } -func (obj *bgpAsPath) validateObj(vObj *validation, set_default bool) { +func (obj *flowRSVPPathObjectsClassSenderTemplate) validateObj(vObj *validation, set_default bool) { if set_default { obj.setDefault() } - if len(obj.obj.Segments) != 0 { - - if set_default { - obj.Segments().clearHolderSlice() - for _, item := range obj.obj.Segments { - obj.Segments().appendHolderSlice(&bgpAsPathSegment{obj: item}) - } - } - for _, item := range obj.Segments().Items() { - item.validateObj(vObj, set_default) - } + if obj.obj.CType != nil { + obj.CType().validateObj(vObj, set_default) } } -func (obj *bgpAsPath) setDefault() { - if obj.obj.AsSetMode == nil { - obj.SetAsSetMode(BgpAsPathAsSetMode.DO_NOT_INCLUDE_LOCAL_AS) - - } +func (obj *flowRSVPPathObjectsClassSenderTemplate) setDefault() { } -// ***** BgpAddPath ***** -type bgpAddPath struct { +// ***** FlowRSVPPathObjectsClassSenderTspec ***** +type flowRSVPPathObjectsClassSenderTspec struct { validation - obj *otg.BgpAddPath + obj *otg.FlowRSVPPathObjectsClassSenderTspec + cTypeHolder FlowRSVPPathObjectsSenderTspecCType } -func NewBgpAddPath() BgpAddPath { - obj := bgpAddPath{obj: &otg.BgpAddPath{}} +func NewFlowRSVPPathObjectsClassSenderTspec() FlowRSVPPathObjectsClassSenderTspec { + obj := flowRSVPPathObjectsClassSenderTspec{obj: &otg.FlowRSVPPathObjectsClassSenderTspec{}} obj.setDefault() return &obj } -func (obj *bgpAddPath) Msg() *otg.BgpAddPath { +func (obj *flowRSVPPathObjectsClassSenderTspec) Msg() *otg.FlowRSVPPathObjectsClassSenderTspec { return obj.obj } -func (obj *bgpAddPath) SetMsg(msg *otg.BgpAddPath) BgpAddPath { - +func (obj *flowRSVPPathObjectsClassSenderTspec) SetMsg(msg *otg.FlowRSVPPathObjectsClassSenderTspec) FlowRSVPPathObjectsClassSenderTspec { + obj.setNil() proto.Merge(obj.obj, msg) return obj } -func (obj *bgpAddPath) ToProto() (*otg.BgpAddPath, error) { +func (obj *flowRSVPPathObjectsClassSenderTspec) ToProto() (*otg.FlowRSVPPathObjectsClassSenderTspec, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -278018,7 +324306,7 @@ func (obj *bgpAddPath) ToProto() (*otg.BgpAddPath, error) { return obj.Msg(), nil } -func (obj *bgpAddPath) FromProto(msg *otg.BgpAddPath) (BgpAddPath, error) { +func (obj *flowRSVPPathObjectsClassSenderTspec) FromProto(msg *otg.FlowRSVPPathObjectsClassSenderTspec) (FlowRSVPPathObjectsClassSenderTspec, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -278027,7 +324315,7 @@ func (obj *bgpAddPath) FromProto(msg *otg.BgpAddPath) (BgpAddPath, error) { return newObj, nil } -func (obj *bgpAddPath) ToPbText() (string, error) { +func (obj *flowRSVPPathObjectsClassSenderTspec) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -278039,12 +324327,12 @@ func (obj *bgpAddPath) ToPbText() (string, error) { return string(protoMarshal), nil } -func (obj *bgpAddPath) FromPbText(value string) error { +func (obj *flowRSVPPathObjectsClassSenderTspec) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj } - + obj.setNil() vErr := obj.validateToAndFrom() if vErr != nil { return vErr @@ -278052,7 +324340,7 @@ func (obj *bgpAddPath) FromPbText(value string) error { return retObj } -func (obj *bgpAddPath) ToYaml() (string, error) { +func (obj *flowRSVPPathObjectsClassSenderTspec) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -278073,7 +324361,7 @@ func (obj *bgpAddPath) ToYaml() (string, error) { return string(data), nil } -func (obj *bgpAddPath) FromYaml(value string) error { +func (obj *flowRSVPPathObjectsClassSenderTspec) FromYaml(value string) error { if value == "" { value = "{}" } @@ -278090,7 +324378,7 @@ func (obj *bgpAddPath) FromYaml(value string) error { return fmt.Errorf("unmarshal error %s", strings.Replace( uError.Error(), "\u00a0", " ", -1)[7:]) } - + obj.setNil() vErr := obj.validateToAndFrom() if vErr != nil { return vErr @@ -278098,7 +324386,7 @@ func (obj *bgpAddPath) FromYaml(value string) error { return nil } -func (obj *bgpAddPath) ToJson() (string, error) { +func (obj *flowRSVPPathObjectsClassSenderTspec) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -278116,7 +324404,7 @@ func (obj *bgpAddPath) ToJson() (string, error) { return string(data), nil } -func (obj *bgpAddPath) FromJson(value string) error { +func (obj *flowRSVPPathObjectsClassSenderTspec) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -278129,7 +324417,7 @@ func (obj *bgpAddPath) FromJson(value string) error { return fmt.Errorf("unmarshal error %s", strings.Replace( uError.Error(), "\u00a0", " ", -1)[7:]) } - + obj.setNil() err := obj.validateToAndFrom() if err != nil { return err @@ -278137,19 +324425,19 @@ func (obj *bgpAddPath) FromJson(value string) error { return nil } -func (obj *bgpAddPath) validateToAndFrom() error { +func (obj *flowRSVPPathObjectsClassSenderTspec) validateToAndFrom() error { // emptyVars() obj.validateObj(&obj.validation, true) return obj.validationResult() } -func (obj *bgpAddPath) Validate() error { +func (obj *flowRSVPPathObjectsClassSenderTspec) Validate() error { // emptyVars() obj.validateObj(&obj.validation, false) return obj.validationResult() } -func (obj *bgpAddPath) String() string { +func (obj *flowRSVPPathObjectsClassSenderTspec) String() string { str, err := obj.ToYaml() if err != nil { return err.Error() @@ -278157,12 +324445,12 @@ func (obj *bgpAddPath) String() string { return str } -func (obj *bgpAddPath) Clone() (BgpAddPath, error) { +func (obj *flowRSVPPathObjectsClassSenderTspec) Clone() (FlowRSVPPathObjectsClassSenderTspec, error) { vErr := obj.Validate() if vErr != nil { return nil, vErr } - newObj := NewBgpAddPath() + newObj := NewFlowRSVPPathObjectsClassSenderTspec() data, err := proto.Marshal(obj.Msg()) if err != nil { return nil, err @@ -278174,114 +324462,126 @@ func (obj *bgpAddPath) Clone() (BgpAddPath, error) { return newObj, nil } -// BgpAddPath is the BGP Additional Paths feature is a BGP extension that allows the advertisement of multiple paths for the same prefix without the new paths implicitly replacing any previous paths. -type BgpAddPath interface { +func (obj *flowRSVPPathObjectsClassSenderTspec) setNil() { + obj.cTypeHolder = nil + obj.validationErrors = nil + obj.warnings = nil + obj.constraints = make(map[string]map[string]Constraints) +} + +// FlowRSVPPathObjectsClassSenderTspec is c-Type is specific to a class num. +type FlowRSVPPathObjectsClassSenderTspec interface { Validation - // Msg marshals BgpAddPath to protobuf object *otg.BgpAddPath + // Msg marshals FlowRSVPPathObjectsClassSenderTspec to protobuf object *otg.FlowRSVPPathObjectsClassSenderTspec // and doesn't set defaults - Msg() *otg.BgpAddPath - // SetMsg unmarshals BgpAddPath from protobuf object *otg.BgpAddPath + Msg() *otg.FlowRSVPPathObjectsClassSenderTspec + // SetMsg unmarshals FlowRSVPPathObjectsClassSenderTspec from protobuf object *otg.FlowRSVPPathObjectsClassSenderTspec // and doesn't set defaults - SetMsg(*otg.BgpAddPath) BgpAddPath - // ToProto marshals BgpAddPath to protobuf object *otg.BgpAddPath - ToProto() (*otg.BgpAddPath, error) - // ToPbText marshals BgpAddPath to protobuf text + SetMsg(*otg.FlowRSVPPathObjectsClassSenderTspec) FlowRSVPPathObjectsClassSenderTspec + // ToProto marshals FlowRSVPPathObjectsClassSenderTspec to protobuf object *otg.FlowRSVPPathObjectsClassSenderTspec + ToProto() (*otg.FlowRSVPPathObjectsClassSenderTspec, error) + // ToPbText marshals FlowRSVPPathObjectsClassSenderTspec to protobuf text ToPbText() (string, error) - // ToYaml marshals BgpAddPath to YAML text + // ToYaml marshals FlowRSVPPathObjectsClassSenderTspec to YAML text ToYaml() (string, error) - // ToJson marshals BgpAddPath to JSON text + // ToJson marshals FlowRSVPPathObjectsClassSenderTspec to JSON text ToJson() (string, error) - // FromProto unmarshals BgpAddPath from protobuf object *otg.BgpAddPath - FromProto(msg *otg.BgpAddPath) (BgpAddPath, error) - // FromPbText unmarshals BgpAddPath from protobuf text + // FromProto unmarshals FlowRSVPPathObjectsClassSenderTspec from protobuf object *otg.FlowRSVPPathObjectsClassSenderTspec + FromProto(msg *otg.FlowRSVPPathObjectsClassSenderTspec) (FlowRSVPPathObjectsClassSenderTspec, error) + // FromPbText unmarshals FlowRSVPPathObjectsClassSenderTspec from protobuf text FromPbText(value string) error - // FromYaml unmarshals BgpAddPath from YAML text + // FromYaml unmarshals FlowRSVPPathObjectsClassSenderTspec from YAML text FromYaml(value string) error - // FromJson unmarshals BgpAddPath from JSON text + // FromJson unmarshals FlowRSVPPathObjectsClassSenderTspec from JSON text FromJson(value string) error - // Validate validates BgpAddPath + // Validate validates FlowRSVPPathObjectsClassSenderTspec Validate() error // A stringer function String() string // Clones the object - Clone() (BgpAddPath, error) + Clone() (FlowRSVPPathObjectsClassSenderTspec, error) validateToAndFrom() error validateObj(vObj *validation, set_default bool) setDefault() - // PathId returns uint32, set in BgpAddPath. - PathId() uint32 - // SetPathId assigns uint32 provided by user to BgpAddPath - SetPathId(value uint32) BgpAddPath - // HasPathId checks if PathId has been set in BgpAddPath - HasPathId() bool + // CType returns FlowRSVPPathObjectsSenderTspecCType, set in FlowRSVPPathObjectsClassSenderTspec. + // FlowRSVPPathObjectsSenderTspecCType is object for SENDER_TSPEC class. Currently supported c-type is int-serv (2). + CType() FlowRSVPPathObjectsSenderTspecCType + // SetCType assigns FlowRSVPPathObjectsSenderTspecCType provided by user to FlowRSVPPathObjectsClassSenderTspec. + // FlowRSVPPathObjectsSenderTspecCType is object for SENDER_TSPEC class. Currently supported c-type is int-serv (2). + SetCType(value FlowRSVPPathObjectsSenderTspecCType) FlowRSVPPathObjectsClassSenderTspec + // HasCType checks if CType has been set in FlowRSVPPathObjectsClassSenderTspec + HasCType() bool + setNil() } -// The id of the additional path. -// PathId returns a uint32 -func (obj *bgpAddPath) PathId() uint32 { - - return *obj.obj.PathId - +// description is TBD +// CType returns a FlowRSVPPathObjectsSenderTspecCType +func (obj *flowRSVPPathObjectsClassSenderTspec) CType() FlowRSVPPathObjectsSenderTspecCType { + if obj.obj.CType == nil { + obj.obj.CType = NewFlowRSVPPathObjectsSenderTspecCType().Msg() + } + if obj.cTypeHolder == nil { + obj.cTypeHolder = &flowRSVPPathObjectsSenderTspecCType{obj: obj.obj.CType} + } + return obj.cTypeHolder } -// The id of the additional path. -// PathId returns a uint32 -func (obj *bgpAddPath) HasPathId() bool { - return obj.obj.PathId != nil +// description is TBD +// CType returns a FlowRSVPPathObjectsSenderTspecCType +func (obj *flowRSVPPathObjectsClassSenderTspec) HasCType() bool { + return obj.obj.CType != nil } -// The id of the additional path. -// SetPathId sets the uint32 value in the BgpAddPath object -func (obj *bgpAddPath) SetPathId(value uint32) BgpAddPath { +// description is TBD +// SetCType sets the FlowRSVPPathObjectsSenderTspecCType value in the FlowRSVPPathObjectsClassSenderTspec object +func (obj *flowRSVPPathObjectsClassSenderTspec) SetCType(value FlowRSVPPathObjectsSenderTspecCType) FlowRSVPPathObjectsClassSenderTspec { + + obj.cTypeHolder = nil + obj.obj.CType = value.Msg() - obj.obj.PathId = &value return obj } -func (obj *bgpAddPath) validateObj(vObj *validation, set_default bool) { +func (obj *flowRSVPPathObjectsClassSenderTspec) validateObj(vObj *validation, set_default bool) { if set_default { obj.setDefault() } -} + if obj.obj.CType != nil { -func (obj *bgpAddPath) setDefault() { - if obj.obj.PathId == nil { - obj.SetPathId(1) + obj.CType().validateObj(vObj, set_default) } } -// ***** BgpExtendedCommunity ***** -type bgpExtendedCommunity struct { +func (obj *flowRSVPPathObjectsClassSenderTspec) setDefault() { + +} + +// ***** FlowRSVPPathObjectsClassRecordRoute ***** +type flowRSVPPathObjectsClassRecordRoute struct { validation - obj *otg.BgpExtendedCommunity - transitive_2OctetAsTypeHolder BgpExtendedCommunityTransitive2OctetAsType - transitiveIpv4AddressTypeHolder BgpExtendedCommunityTransitiveIpv4AddressType - transitive_4OctetAsTypeHolder BgpExtendedCommunityTransitive4OctetAsType - transitiveOpaqueTypeHolder BgpExtendedCommunityTransitiveOpaqueType - transitiveEvpnTypeHolder BgpExtendedCommunityTransitiveEvpnType - nonTransitive_2OctetAsTypeHolder BgpExtendedCommunityNonTransitive2OctetAsType - customHolder BgpExtendedCommunityCustomType + obj *otg.FlowRSVPPathObjectsClassRecordRoute + cTypeHolder FlowRSVPPathObjectsRecordRouteCType } -func NewBgpExtendedCommunity() BgpExtendedCommunity { - obj := bgpExtendedCommunity{obj: &otg.BgpExtendedCommunity{}} +func NewFlowRSVPPathObjectsClassRecordRoute() FlowRSVPPathObjectsClassRecordRoute { + obj := flowRSVPPathObjectsClassRecordRoute{obj: &otg.FlowRSVPPathObjectsClassRecordRoute{}} obj.setDefault() return &obj } -func (obj *bgpExtendedCommunity) Msg() *otg.BgpExtendedCommunity { +func (obj *flowRSVPPathObjectsClassRecordRoute) Msg() *otg.FlowRSVPPathObjectsClassRecordRoute { return obj.obj } -func (obj *bgpExtendedCommunity) SetMsg(msg *otg.BgpExtendedCommunity) BgpExtendedCommunity { +func (obj *flowRSVPPathObjectsClassRecordRoute) SetMsg(msg *otg.FlowRSVPPathObjectsClassRecordRoute) FlowRSVPPathObjectsClassRecordRoute { obj.setNil() proto.Merge(obj.obj, msg) return obj } -func (obj *bgpExtendedCommunity) ToProto() (*otg.BgpExtendedCommunity, error) { +func (obj *flowRSVPPathObjectsClassRecordRoute) ToProto() (*otg.FlowRSVPPathObjectsClassRecordRoute, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -278289,7 +324589,7 @@ func (obj *bgpExtendedCommunity) ToProto() (*otg.BgpExtendedCommunity, error) { return obj.Msg(), nil } -func (obj *bgpExtendedCommunity) FromProto(msg *otg.BgpExtendedCommunity) (BgpExtendedCommunity, error) { +func (obj *flowRSVPPathObjectsClassRecordRoute) FromProto(msg *otg.FlowRSVPPathObjectsClassRecordRoute) (FlowRSVPPathObjectsClassRecordRoute, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -278298,7 +324598,7 @@ func (obj *bgpExtendedCommunity) FromProto(msg *otg.BgpExtendedCommunity) (BgpEx return newObj, nil } -func (obj *bgpExtendedCommunity) ToPbText() (string, error) { +func (obj *flowRSVPPathObjectsClassRecordRoute) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -278310,7 +324610,7 @@ func (obj *bgpExtendedCommunity) ToPbText() (string, error) { return string(protoMarshal), nil } -func (obj *bgpExtendedCommunity) FromPbText(value string) error { +func (obj *flowRSVPPathObjectsClassRecordRoute) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj @@ -278323,7 +324623,7 @@ func (obj *bgpExtendedCommunity) FromPbText(value string) error { return retObj } -func (obj *bgpExtendedCommunity) ToYaml() (string, error) { +func (obj *flowRSVPPathObjectsClassRecordRoute) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -278344,7 +324644,7 @@ func (obj *bgpExtendedCommunity) ToYaml() (string, error) { return string(data), nil } -func (obj *bgpExtendedCommunity) FromYaml(value string) error { +func (obj *flowRSVPPathObjectsClassRecordRoute) FromYaml(value string) error { if value == "" { value = "{}" } @@ -278369,7 +324669,7 @@ func (obj *bgpExtendedCommunity) FromYaml(value string) error { return nil } -func (obj *bgpExtendedCommunity) ToJson() (string, error) { +func (obj *flowRSVPPathObjectsClassRecordRoute) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -278387,7 +324687,7 @@ func (obj *bgpExtendedCommunity) ToJson() (string, error) { return string(data), nil } -func (obj *bgpExtendedCommunity) FromJson(value string) error { +func (obj *flowRSVPPathObjectsClassRecordRoute) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -278408,19 +324708,19 @@ func (obj *bgpExtendedCommunity) FromJson(value string) error { return nil } -func (obj *bgpExtendedCommunity) validateToAndFrom() error { +func (obj *flowRSVPPathObjectsClassRecordRoute) validateToAndFrom() error { // emptyVars() obj.validateObj(&obj.validation, true) return obj.validationResult() } -func (obj *bgpExtendedCommunity) Validate() error { +func (obj *flowRSVPPathObjectsClassRecordRoute) Validate() error { // emptyVars() obj.validateObj(&obj.validation, false) return obj.validationResult() } -func (obj *bgpExtendedCommunity) String() string { +func (obj *flowRSVPPathObjectsClassRecordRoute) String() string { str, err := obj.ToYaml() if err != nil { return err.Error() @@ -278428,12 +324728,12 @@ func (obj *bgpExtendedCommunity) String() string { return str } -func (obj *bgpExtendedCommunity) Clone() (BgpExtendedCommunity, error) { +func (obj *flowRSVPPathObjectsClassRecordRoute) Clone() (FlowRSVPPathObjectsClassRecordRoute, error) { vErr := obj.Validate() if vErr != nil { return nil, vErr } - newObj := NewBgpExtendedCommunity() + newObj := NewFlowRSVPPathObjectsClassRecordRoute() data, err := proto.Marshal(obj.Msg()) if err != nil { return nil, err @@ -278445,481 +324745,127 @@ func (obj *bgpExtendedCommunity) Clone() (BgpExtendedCommunity, error) { return newObj, nil } -func (obj *bgpExtendedCommunity) setNil() { - obj.transitive_2OctetAsTypeHolder = nil - obj.transitiveIpv4AddressTypeHolder = nil - obj.transitive_4OctetAsTypeHolder = nil - obj.transitiveOpaqueTypeHolder = nil - obj.transitiveEvpnTypeHolder = nil - obj.nonTransitive_2OctetAsTypeHolder = nil - obj.customHolder = nil - obj.validationErrors = nil - obj.warnings = nil - obj.constraints = make(map[string]map[string]Constraints) -} - -// BgpExtendedCommunity is the Extended Communities Attribute is a optional BGP attribute,defined in RFC4360 with the Type Code 16. Community and Extended Communities attributes are utilized to trigger routing decisions, such as acceptance, rejection, preference, or redistribution. An extended community is an 8-Bytes value.It is divided into two main parts. The first 2 Bytes of the community encode a type and optonal sub-type field. The last 6 bytes (or 7 bytes for types without a sub-type) carry a unique set of data in a format defined by the type and optional sub-type field. Extended communities provide a larger range for grouping or categorizing communities. -type BgpExtendedCommunity interface { - Validation - // Msg marshals BgpExtendedCommunity to protobuf object *otg.BgpExtendedCommunity - // and doesn't set defaults - Msg() *otg.BgpExtendedCommunity - // SetMsg unmarshals BgpExtendedCommunity from protobuf object *otg.BgpExtendedCommunity - // and doesn't set defaults - SetMsg(*otg.BgpExtendedCommunity) BgpExtendedCommunity - // ToProto marshals BgpExtendedCommunity to protobuf object *otg.BgpExtendedCommunity - ToProto() (*otg.BgpExtendedCommunity, error) - // ToPbText marshals BgpExtendedCommunity to protobuf text - ToPbText() (string, error) - // ToYaml marshals BgpExtendedCommunity to YAML text - ToYaml() (string, error) - // ToJson marshals BgpExtendedCommunity to JSON text - ToJson() (string, error) - // FromProto unmarshals BgpExtendedCommunity from protobuf object *otg.BgpExtendedCommunity - FromProto(msg *otg.BgpExtendedCommunity) (BgpExtendedCommunity, error) - // FromPbText unmarshals BgpExtendedCommunity from protobuf text - FromPbText(value string) error - // FromYaml unmarshals BgpExtendedCommunity from YAML text - FromYaml(value string) error - // FromJson unmarshals BgpExtendedCommunity from JSON text - FromJson(value string) error - // Validate validates BgpExtendedCommunity - Validate() error - // A stringer function - String() string - // Clones the object - Clone() (BgpExtendedCommunity, error) - validateToAndFrom() error - validateObj(vObj *validation, set_default bool) - setDefault() - // Choice returns BgpExtendedCommunityChoiceEnum, set in BgpExtendedCommunity - Choice() BgpExtendedCommunityChoiceEnum - // SetChoice assigns BgpExtendedCommunityChoiceEnum provided by user to BgpExtendedCommunity - SetChoice(value BgpExtendedCommunityChoiceEnum) BgpExtendedCommunity - // HasChoice checks if Choice has been set in BgpExtendedCommunity - HasChoice() bool - // Transitive2OctetAsType returns BgpExtendedCommunityTransitive2OctetAsType, set in BgpExtendedCommunity. - // BgpExtendedCommunityTransitive2OctetAsType is the Transitive Two-Octet AS-Specific Extended Community is sent as type 0x00 . - Transitive2OctetAsType() BgpExtendedCommunityTransitive2OctetAsType - // SetTransitive2OctetAsType assigns BgpExtendedCommunityTransitive2OctetAsType provided by user to BgpExtendedCommunity. - // BgpExtendedCommunityTransitive2OctetAsType is the Transitive Two-Octet AS-Specific Extended Community is sent as type 0x00 . - SetTransitive2OctetAsType(value BgpExtendedCommunityTransitive2OctetAsType) BgpExtendedCommunity - // HasTransitive2OctetAsType checks if Transitive2OctetAsType has been set in BgpExtendedCommunity - HasTransitive2OctetAsType() bool - // TransitiveIpv4AddressType returns BgpExtendedCommunityTransitiveIpv4AddressType, set in BgpExtendedCommunity. - // BgpExtendedCommunityTransitiveIpv4AddressType is the Transitive IPv4 Address Specific Extended Community is sent as type 0x01. - TransitiveIpv4AddressType() BgpExtendedCommunityTransitiveIpv4AddressType - // SetTransitiveIpv4AddressType assigns BgpExtendedCommunityTransitiveIpv4AddressType provided by user to BgpExtendedCommunity. - // BgpExtendedCommunityTransitiveIpv4AddressType is the Transitive IPv4 Address Specific Extended Community is sent as type 0x01. - SetTransitiveIpv4AddressType(value BgpExtendedCommunityTransitiveIpv4AddressType) BgpExtendedCommunity - // HasTransitiveIpv4AddressType checks if TransitiveIpv4AddressType has been set in BgpExtendedCommunity - HasTransitiveIpv4AddressType() bool - // Transitive4OctetAsType returns BgpExtendedCommunityTransitive4OctetAsType, set in BgpExtendedCommunity. - // BgpExtendedCommunityTransitive4OctetAsType is the Transitive Four-Octet AS-Specific Extended Community is sent as type 0x02. It is defined in RFC 5668. - Transitive4OctetAsType() BgpExtendedCommunityTransitive4OctetAsType - // SetTransitive4OctetAsType assigns BgpExtendedCommunityTransitive4OctetAsType provided by user to BgpExtendedCommunity. - // BgpExtendedCommunityTransitive4OctetAsType is the Transitive Four-Octet AS-Specific Extended Community is sent as type 0x02. It is defined in RFC 5668. - SetTransitive4OctetAsType(value BgpExtendedCommunityTransitive4OctetAsType) BgpExtendedCommunity - // HasTransitive4OctetAsType checks if Transitive4OctetAsType has been set in BgpExtendedCommunity - HasTransitive4OctetAsType() bool - // TransitiveOpaqueType returns BgpExtendedCommunityTransitiveOpaqueType, set in BgpExtendedCommunity. - // BgpExtendedCommunityTransitiveOpaqueType is the Transitive Opaque Extended Community is sent as type 0x03. - TransitiveOpaqueType() BgpExtendedCommunityTransitiveOpaqueType - // SetTransitiveOpaqueType assigns BgpExtendedCommunityTransitiveOpaqueType provided by user to BgpExtendedCommunity. - // BgpExtendedCommunityTransitiveOpaqueType is the Transitive Opaque Extended Community is sent as type 0x03. - SetTransitiveOpaqueType(value BgpExtendedCommunityTransitiveOpaqueType) BgpExtendedCommunity - // HasTransitiveOpaqueType checks if TransitiveOpaqueType has been set in BgpExtendedCommunity - HasTransitiveOpaqueType() bool - // TransitiveEvpnType returns BgpExtendedCommunityTransitiveEvpnType, set in BgpExtendedCommunity. - // BgpExtendedCommunityTransitiveEvpnType is the Transitive EVPN Extended Community is sent as type 0x06 . - TransitiveEvpnType() BgpExtendedCommunityTransitiveEvpnType - // SetTransitiveEvpnType assigns BgpExtendedCommunityTransitiveEvpnType provided by user to BgpExtendedCommunity. - // BgpExtendedCommunityTransitiveEvpnType is the Transitive EVPN Extended Community is sent as type 0x06 . - SetTransitiveEvpnType(value BgpExtendedCommunityTransitiveEvpnType) BgpExtendedCommunity - // HasTransitiveEvpnType checks if TransitiveEvpnType has been set in BgpExtendedCommunity - HasTransitiveEvpnType() bool - // NonTransitive2OctetAsType returns BgpExtendedCommunityNonTransitive2OctetAsType, set in BgpExtendedCommunity. - // BgpExtendedCommunityNonTransitive2OctetAsType is the Non-Transitive Two-Octet AS-Specific Extended Community is sent as type 0x40. - NonTransitive2OctetAsType() BgpExtendedCommunityNonTransitive2OctetAsType - // SetNonTransitive2OctetAsType assigns BgpExtendedCommunityNonTransitive2OctetAsType provided by user to BgpExtendedCommunity. - // BgpExtendedCommunityNonTransitive2OctetAsType is the Non-Transitive Two-Octet AS-Specific Extended Community is sent as type 0x40. - SetNonTransitive2OctetAsType(value BgpExtendedCommunityNonTransitive2OctetAsType) BgpExtendedCommunity - // HasNonTransitive2OctetAsType checks if NonTransitive2OctetAsType has been set in BgpExtendedCommunity - HasNonTransitive2OctetAsType() bool - // Custom returns BgpExtendedCommunityCustomType, set in BgpExtendedCommunity. - // BgpExtendedCommunityCustomType is add a custom Extended Community with a combination of types , sub-types and values not explicitly specified above or not defined yet. - Custom() BgpExtendedCommunityCustomType - // SetCustom assigns BgpExtendedCommunityCustomType provided by user to BgpExtendedCommunity. - // BgpExtendedCommunityCustomType is add a custom Extended Community with a combination of types , sub-types and values not explicitly specified above or not defined yet. - SetCustom(value BgpExtendedCommunityCustomType) BgpExtendedCommunity - // HasCustom checks if Custom has been set in BgpExtendedCommunity - HasCustom() bool - setNil() -} - -type BgpExtendedCommunityChoiceEnum string - -// Enum of Choice on BgpExtendedCommunity -var BgpExtendedCommunityChoice = struct { - TRANSITIVE_2OCTET_AS_TYPE BgpExtendedCommunityChoiceEnum - TRANSITIVE_IPV4_ADDRESS_TYPE BgpExtendedCommunityChoiceEnum - TRANSITIVE_4OCTET_AS_TYPE BgpExtendedCommunityChoiceEnum - TRANSITIVE_OPAQUE_TYPE BgpExtendedCommunityChoiceEnum - TRANSITIVE_EVPN_TYPE BgpExtendedCommunityChoiceEnum - NON_TRANSITIVE_2OCTET_AS_TYPE BgpExtendedCommunityChoiceEnum - CUSTOM BgpExtendedCommunityChoiceEnum -}{ - TRANSITIVE_2OCTET_AS_TYPE: BgpExtendedCommunityChoiceEnum("transitive_2octet_as_type"), - TRANSITIVE_IPV4_ADDRESS_TYPE: BgpExtendedCommunityChoiceEnum("transitive_ipv4_address_type"), - TRANSITIVE_4OCTET_AS_TYPE: BgpExtendedCommunityChoiceEnum("transitive_4octet_as_type"), - TRANSITIVE_OPAQUE_TYPE: BgpExtendedCommunityChoiceEnum("transitive_opaque_type"), - TRANSITIVE_EVPN_TYPE: BgpExtendedCommunityChoiceEnum("transitive_evpn_type"), - NON_TRANSITIVE_2OCTET_AS_TYPE: BgpExtendedCommunityChoiceEnum("non_transitive_2octet_as_type"), - CUSTOM: BgpExtendedCommunityChoiceEnum("custom"), -} - -func (obj *bgpExtendedCommunity) Choice() BgpExtendedCommunityChoiceEnum { - return BgpExtendedCommunityChoiceEnum(obj.obj.Choice.Enum().String()) -} - -// description is TBD -// Choice returns a string -func (obj *bgpExtendedCommunity) HasChoice() bool { - return obj.obj.Choice != nil -} - -func (obj *bgpExtendedCommunity) SetChoice(value BgpExtendedCommunityChoiceEnum) BgpExtendedCommunity { - intValue, ok := otg.BgpExtendedCommunity_Choice_Enum_value[string(value)] - if !ok { - obj.validationErrors = append(obj.validationErrors, fmt.Sprintf( - "%s is not a valid choice on BgpExtendedCommunityChoiceEnum", string(value))) - return obj - } - enumValue := otg.BgpExtendedCommunity_Choice_Enum(intValue) - obj.obj.Choice = &enumValue - obj.obj.Custom = nil - obj.customHolder = nil - obj.obj.NonTransitive_2OctetAsType = nil - obj.nonTransitive_2OctetAsTypeHolder = nil - obj.obj.TransitiveEvpnType = nil - obj.transitiveEvpnTypeHolder = nil - obj.obj.TransitiveOpaqueType = nil - obj.transitiveOpaqueTypeHolder = nil - obj.obj.Transitive_4OctetAsType = nil - obj.transitive_4OctetAsTypeHolder = nil - obj.obj.TransitiveIpv4AddressType = nil - obj.transitiveIpv4AddressTypeHolder = nil - obj.obj.Transitive_2OctetAsType = nil - obj.transitive_2OctetAsTypeHolder = nil - - if value == BgpExtendedCommunityChoice.TRANSITIVE_2OCTET_AS_TYPE { - obj.obj.Transitive_2OctetAsType = NewBgpExtendedCommunityTransitive2OctetAsType().Msg() - } - - if value == BgpExtendedCommunityChoice.TRANSITIVE_IPV4_ADDRESS_TYPE { - obj.obj.TransitiveIpv4AddressType = NewBgpExtendedCommunityTransitiveIpv4AddressType().Msg() - } - - if value == BgpExtendedCommunityChoice.TRANSITIVE_4OCTET_AS_TYPE { - obj.obj.Transitive_4OctetAsType = NewBgpExtendedCommunityTransitive4OctetAsType().Msg() - } - - if value == BgpExtendedCommunityChoice.TRANSITIVE_OPAQUE_TYPE { - obj.obj.TransitiveOpaqueType = NewBgpExtendedCommunityTransitiveOpaqueType().Msg() - } - - if value == BgpExtendedCommunityChoice.TRANSITIVE_EVPN_TYPE { - obj.obj.TransitiveEvpnType = NewBgpExtendedCommunityTransitiveEvpnType().Msg() - } - - if value == BgpExtendedCommunityChoice.NON_TRANSITIVE_2OCTET_AS_TYPE { - obj.obj.NonTransitive_2OctetAsType = NewBgpExtendedCommunityNonTransitive2OctetAsType().Msg() - } - - if value == BgpExtendedCommunityChoice.CUSTOM { - obj.obj.Custom = NewBgpExtendedCommunityCustomType().Msg() - } - - return obj -} - -// description is TBD -// Transitive2OctetAsType returns a BgpExtendedCommunityTransitive2OctetAsType -func (obj *bgpExtendedCommunity) Transitive2OctetAsType() BgpExtendedCommunityTransitive2OctetAsType { - if obj.obj.Transitive_2OctetAsType == nil { - obj.SetChoice(BgpExtendedCommunityChoice.TRANSITIVE_2OCTET_AS_TYPE) - } - if obj.transitive_2OctetAsTypeHolder == nil { - obj.transitive_2OctetAsTypeHolder = &bgpExtendedCommunityTransitive2OctetAsType{obj: obj.obj.Transitive_2OctetAsType} - } - return obj.transitive_2OctetAsTypeHolder -} - -// description is TBD -// Transitive2OctetAsType returns a BgpExtendedCommunityTransitive2OctetAsType -func (obj *bgpExtendedCommunity) HasTransitive2OctetAsType() bool { - return obj.obj.Transitive_2OctetAsType != nil -} - -// description is TBD -// SetTransitive2OctetAsType sets the BgpExtendedCommunityTransitive2OctetAsType value in the BgpExtendedCommunity object -func (obj *bgpExtendedCommunity) SetTransitive2OctetAsType(value BgpExtendedCommunityTransitive2OctetAsType) BgpExtendedCommunity { - obj.SetChoice(BgpExtendedCommunityChoice.TRANSITIVE_2OCTET_AS_TYPE) - obj.transitive_2OctetAsTypeHolder = nil - obj.obj.Transitive_2OctetAsType = value.Msg() - - return obj -} - -// description is TBD -// TransitiveIpv4AddressType returns a BgpExtendedCommunityTransitiveIpv4AddressType -func (obj *bgpExtendedCommunity) TransitiveIpv4AddressType() BgpExtendedCommunityTransitiveIpv4AddressType { - if obj.obj.TransitiveIpv4AddressType == nil { - obj.SetChoice(BgpExtendedCommunityChoice.TRANSITIVE_IPV4_ADDRESS_TYPE) - } - if obj.transitiveIpv4AddressTypeHolder == nil { - obj.transitiveIpv4AddressTypeHolder = &bgpExtendedCommunityTransitiveIpv4AddressType{obj: obj.obj.TransitiveIpv4AddressType} - } - return obj.transitiveIpv4AddressTypeHolder -} - -// description is TBD -// TransitiveIpv4AddressType returns a BgpExtendedCommunityTransitiveIpv4AddressType -func (obj *bgpExtendedCommunity) HasTransitiveIpv4AddressType() bool { - return obj.obj.TransitiveIpv4AddressType != nil -} - -// description is TBD -// SetTransitiveIpv4AddressType sets the BgpExtendedCommunityTransitiveIpv4AddressType value in the BgpExtendedCommunity object -func (obj *bgpExtendedCommunity) SetTransitiveIpv4AddressType(value BgpExtendedCommunityTransitiveIpv4AddressType) BgpExtendedCommunity { - obj.SetChoice(BgpExtendedCommunityChoice.TRANSITIVE_IPV4_ADDRESS_TYPE) - obj.transitiveIpv4AddressTypeHolder = nil - obj.obj.TransitiveIpv4AddressType = value.Msg() - - return obj -} - -// description is TBD -// Transitive4OctetAsType returns a BgpExtendedCommunityTransitive4OctetAsType -func (obj *bgpExtendedCommunity) Transitive4OctetAsType() BgpExtendedCommunityTransitive4OctetAsType { - if obj.obj.Transitive_4OctetAsType == nil { - obj.SetChoice(BgpExtendedCommunityChoice.TRANSITIVE_4OCTET_AS_TYPE) - } - if obj.transitive_4OctetAsTypeHolder == nil { - obj.transitive_4OctetAsTypeHolder = &bgpExtendedCommunityTransitive4OctetAsType{obj: obj.obj.Transitive_4OctetAsType} - } - return obj.transitive_4OctetAsTypeHolder -} - -// description is TBD -// Transitive4OctetAsType returns a BgpExtendedCommunityTransitive4OctetAsType -func (obj *bgpExtendedCommunity) HasTransitive4OctetAsType() bool { - return obj.obj.Transitive_4OctetAsType != nil -} - -// description is TBD -// SetTransitive4OctetAsType sets the BgpExtendedCommunityTransitive4OctetAsType value in the BgpExtendedCommunity object -func (obj *bgpExtendedCommunity) SetTransitive4OctetAsType(value BgpExtendedCommunityTransitive4OctetAsType) BgpExtendedCommunity { - obj.SetChoice(BgpExtendedCommunityChoice.TRANSITIVE_4OCTET_AS_TYPE) - obj.transitive_4OctetAsTypeHolder = nil - obj.obj.Transitive_4OctetAsType = value.Msg() - - return obj -} - -// description is TBD -// TransitiveOpaqueType returns a BgpExtendedCommunityTransitiveOpaqueType -func (obj *bgpExtendedCommunity) TransitiveOpaqueType() BgpExtendedCommunityTransitiveOpaqueType { - if obj.obj.TransitiveOpaqueType == nil { - obj.SetChoice(BgpExtendedCommunityChoice.TRANSITIVE_OPAQUE_TYPE) - } - if obj.transitiveOpaqueTypeHolder == nil { - obj.transitiveOpaqueTypeHolder = &bgpExtendedCommunityTransitiveOpaqueType{obj: obj.obj.TransitiveOpaqueType} - } - return obj.transitiveOpaqueTypeHolder -} - -// description is TBD -// TransitiveOpaqueType returns a BgpExtendedCommunityTransitiveOpaqueType -func (obj *bgpExtendedCommunity) HasTransitiveOpaqueType() bool { - return obj.obj.TransitiveOpaqueType != nil -} - -// description is TBD -// SetTransitiveOpaqueType sets the BgpExtendedCommunityTransitiveOpaqueType value in the BgpExtendedCommunity object -func (obj *bgpExtendedCommunity) SetTransitiveOpaqueType(value BgpExtendedCommunityTransitiveOpaqueType) BgpExtendedCommunity { - obj.SetChoice(BgpExtendedCommunityChoice.TRANSITIVE_OPAQUE_TYPE) - obj.transitiveOpaqueTypeHolder = nil - obj.obj.TransitiveOpaqueType = value.Msg() - - return obj -} - -// description is TBD -// TransitiveEvpnType returns a BgpExtendedCommunityTransitiveEvpnType -func (obj *bgpExtendedCommunity) TransitiveEvpnType() BgpExtendedCommunityTransitiveEvpnType { - if obj.obj.TransitiveEvpnType == nil { - obj.SetChoice(BgpExtendedCommunityChoice.TRANSITIVE_EVPN_TYPE) - } - if obj.transitiveEvpnTypeHolder == nil { - obj.transitiveEvpnTypeHolder = &bgpExtendedCommunityTransitiveEvpnType{obj: obj.obj.TransitiveEvpnType} - } - return obj.transitiveEvpnTypeHolder -} - -// description is TBD -// TransitiveEvpnType returns a BgpExtendedCommunityTransitiveEvpnType -func (obj *bgpExtendedCommunity) HasTransitiveEvpnType() bool { - return obj.obj.TransitiveEvpnType != nil -} - -// description is TBD -// SetTransitiveEvpnType sets the BgpExtendedCommunityTransitiveEvpnType value in the BgpExtendedCommunity object -func (obj *bgpExtendedCommunity) SetTransitiveEvpnType(value BgpExtendedCommunityTransitiveEvpnType) BgpExtendedCommunity { - obj.SetChoice(BgpExtendedCommunityChoice.TRANSITIVE_EVPN_TYPE) - obj.transitiveEvpnTypeHolder = nil - obj.obj.TransitiveEvpnType = value.Msg() - - return obj -} - -// description is TBD -// NonTransitive2OctetAsType returns a BgpExtendedCommunityNonTransitive2OctetAsType -func (obj *bgpExtendedCommunity) NonTransitive2OctetAsType() BgpExtendedCommunityNonTransitive2OctetAsType { - if obj.obj.NonTransitive_2OctetAsType == nil { - obj.SetChoice(BgpExtendedCommunityChoice.NON_TRANSITIVE_2OCTET_AS_TYPE) - } - if obj.nonTransitive_2OctetAsTypeHolder == nil { - obj.nonTransitive_2OctetAsTypeHolder = &bgpExtendedCommunityNonTransitive2OctetAsType{obj: obj.obj.NonTransitive_2OctetAsType} - } - return obj.nonTransitive_2OctetAsTypeHolder -} - -// description is TBD -// NonTransitive2OctetAsType returns a BgpExtendedCommunityNonTransitive2OctetAsType -func (obj *bgpExtendedCommunity) HasNonTransitive2OctetAsType() bool { - return obj.obj.NonTransitive_2OctetAsType != nil -} - -// description is TBD -// SetNonTransitive2OctetAsType sets the BgpExtendedCommunityNonTransitive2OctetAsType value in the BgpExtendedCommunity object -func (obj *bgpExtendedCommunity) SetNonTransitive2OctetAsType(value BgpExtendedCommunityNonTransitive2OctetAsType) BgpExtendedCommunity { - obj.SetChoice(BgpExtendedCommunityChoice.NON_TRANSITIVE_2OCTET_AS_TYPE) - obj.nonTransitive_2OctetAsTypeHolder = nil - obj.obj.NonTransitive_2OctetAsType = value.Msg() +func (obj *flowRSVPPathObjectsClassRecordRoute) setNil() { + obj.cTypeHolder = nil + obj.validationErrors = nil + obj.warnings = nil + obj.constraints = make(map[string]map[string]Constraints) +} - return obj +// FlowRSVPPathObjectsClassRecordRoute is c-Type is specific to a class num. +type FlowRSVPPathObjectsClassRecordRoute interface { + Validation + // Msg marshals FlowRSVPPathObjectsClassRecordRoute to protobuf object *otg.FlowRSVPPathObjectsClassRecordRoute + // and doesn't set defaults + Msg() *otg.FlowRSVPPathObjectsClassRecordRoute + // SetMsg unmarshals FlowRSVPPathObjectsClassRecordRoute from protobuf object *otg.FlowRSVPPathObjectsClassRecordRoute + // and doesn't set defaults + SetMsg(*otg.FlowRSVPPathObjectsClassRecordRoute) FlowRSVPPathObjectsClassRecordRoute + // ToProto marshals FlowRSVPPathObjectsClassRecordRoute to protobuf object *otg.FlowRSVPPathObjectsClassRecordRoute + ToProto() (*otg.FlowRSVPPathObjectsClassRecordRoute, error) + // ToPbText marshals FlowRSVPPathObjectsClassRecordRoute to protobuf text + ToPbText() (string, error) + // ToYaml marshals FlowRSVPPathObjectsClassRecordRoute to YAML text + ToYaml() (string, error) + // ToJson marshals FlowRSVPPathObjectsClassRecordRoute to JSON text + ToJson() (string, error) + // FromProto unmarshals FlowRSVPPathObjectsClassRecordRoute from protobuf object *otg.FlowRSVPPathObjectsClassRecordRoute + FromProto(msg *otg.FlowRSVPPathObjectsClassRecordRoute) (FlowRSVPPathObjectsClassRecordRoute, error) + // FromPbText unmarshals FlowRSVPPathObjectsClassRecordRoute from protobuf text + FromPbText(value string) error + // FromYaml unmarshals FlowRSVPPathObjectsClassRecordRoute from YAML text + FromYaml(value string) error + // FromJson unmarshals FlowRSVPPathObjectsClassRecordRoute from JSON text + FromJson(value string) error + // Validate validates FlowRSVPPathObjectsClassRecordRoute + Validate() error + // A stringer function + String() string + // Clones the object + Clone() (FlowRSVPPathObjectsClassRecordRoute, error) + validateToAndFrom() error + validateObj(vObj *validation, set_default bool) + setDefault() + // CType returns FlowRSVPPathObjectsRecordRouteCType, set in FlowRSVPPathObjectsClassRecordRoute. + // FlowRSVPPathObjectsRecordRouteCType is object for RECORD_ROUTE class. c-type is Type 1 Route Record (1). + CType() FlowRSVPPathObjectsRecordRouteCType + // SetCType assigns FlowRSVPPathObjectsRecordRouteCType provided by user to FlowRSVPPathObjectsClassRecordRoute. + // FlowRSVPPathObjectsRecordRouteCType is object for RECORD_ROUTE class. c-type is Type 1 Route Record (1). + SetCType(value FlowRSVPPathObjectsRecordRouteCType) FlowRSVPPathObjectsClassRecordRoute + // HasCType checks if CType has been set in FlowRSVPPathObjectsClassRecordRoute + HasCType() bool + setNil() } // description is TBD -// Custom returns a BgpExtendedCommunityCustomType -func (obj *bgpExtendedCommunity) Custom() BgpExtendedCommunityCustomType { - if obj.obj.Custom == nil { - obj.SetChoice(BgpExtendedCommunityChoice.CUSTOM) +// CType returns a FlowRSVPPathObjectsRecordRouteCType +func (obj *flowRSVPPathObjectsClassRecordRoute) CType() FlowRSVPPathObjectsRecordRouteCType { + if obj.obj.CType == nil { + obj.obj.CType = NewFlowRSVPPathObjectsRecordRouteCType().Msg() } - if obj.customHolder == nil { - obj.customHolder = &bgpExtendedCommunityCustomType{obj: obj.obj.Custom} + if obj.cTypeHolder == nil { + obj.cTypeHolder = &flowRSVPPathObjectsRecordRouteCType{obj: obj.obj.CType} } - return obj.customHolder + return obj.cTypeHolder } // description is TBD -// Custom returns a BgpExtendedCommunityCustomType -func (obj *bgpExtendedCommunity) HasCustom() bool { - return obj.obj.Custom != nil +// CType returns a FlowRSVPPathObjectsRecordRouteCType +func (obj *flowRSVPPathObjectsClassRecordRoute) HasCType() bool { + return obj.obj.CType != nil } // description is TBD -// SetCustom sets the BgpExtendedCommunityCustomType value in the BgpExtendedCommunity object -func (obj *bgpExtendedCommunity) SetCustom(value BgpExtendedCommunityCustomType) BgpExtendedCommunity { - obj.SetChoice(BgpExtendedCommunityChoice.CUSTOM) - obj.customHolder = nil - obj.obj.Custom = value.Msg() +// SetCType sets the FlowRSVPPathObjectsRecordRouteCType value in the FlowRSVPPathObjectsClassRecordRoute object +func (obj *flowRSVPPathObjectsClassRecordRoute) SetCType(value FlowRSVPPathObjectsRecordRouteCType) FlowRSVPPathObjectsClassRecordRoute { + + obj.cTypeHolder = nil + obj.obj.CType = value.Msg() return obj } -func (obj *bgpExtendedCommunity) validateObj(vObj *validation, set_default bool) { +func (obj *flowRSVPPathObjectsClassRecordRoute) validateObj(vObj *validation, set_default bool) { if set_default { obj.setDefault() } - if obj.obj.Transitive_2OctetAsType != nil { - - obj.Transitive2OctetAsType().validateObj(vObj, set_default) - } - - if obj.obj.TransitiveIpv4AddressType != nil { - - obj.TransitiveIpv4AddressType().validateObj(vObj, set_default) - } - - if obj.obj.Transitive_4OctetAsType != nil { - - obj.Transitive4OctetAsType().validateObj(vObj, set_default) - } - - if obj.obj.TransitiveOpaqueType != nil { - - obj.TransitiveOpaqueType().validateObj(vObj, set_default) - } - - if obj.obj.TransitiveEvpnType != nil { - - obj.TransitiveEvpnType().validateObj(vObj, set_default) - } - - if obj.obj.NonTransitive_2OctetAsType != nil { - - obj.NonTransitive2OctetAsType().validateObj(vObj, set_default) - } + if obj.obj.CType != nil { - if obj.obj.Custom != nil { - - obj.Custom().validateObj(vObj, set_default) + obj.CType().validateObj(vObj, set_default) } } -func (obj *bgpExtendedCommunity) setDefault() { - if obj.obj.Choice == nil { - obj.SetChoice(BgpExtendedCommunityChoice.TRANSITIVE_2OCTET_AS_TYPE) - - } +func (obj *flowRSVPPathObjectsClassRecordRoute) setDefault() { } -// ***** BgpSrteV4TunnelTlv ***** -type bgpSrteV4TunnelTlv struct { +// ***** FlowRSVPPathObjectsCustom ***** +type flowRSVPPathObjectsCustom struct { validation - obj *otg.BgpSrteV4TunnelTlv - remoteEndpointSubTlvHolder BgpSrteRemoteEndpointSubTlv - colorSubTlvHolder BgpSrteColorSubTlv - bindingSubTlvHolder BgpSrteBindingSubTlv - preferenceSubTlvHolder BgpSrtePreferenceSubTlv - policyPrioritySubTlvHolder BgpSrtePolicyPrioritySubTlv - policyNameSubTlvHolder BgpSrtePolicyNameSubTlv - explicitNullLabelPolicySubTlvHolder BgpSrteExplicitNullLabelPolicySubTlv - segmentListsHolder BgpSrteV4TunnelTlvBgpSrteSegmentListIter + obj *otg.FlowRSVPPathObjectsCustom + typeHolder PatternFlowRSVPPathObjectsCustomType + lengthHolder FlowRSVPObjectOptionsCustomLength } -func NewBgpSrteV4TunnelTlv() BgpSrteV4TunnelTlv { - obj := bgpSrteV4TunnelTlv{obj: &otg.BgpSrteV4TunnelTlv{}} +func NewFlowRSVPPathObjectsCustom() FlowRSVPPathObjectsCustom { + obj := flowRSVPPathObjectsCustom{obj: &otg.FlowRSVPPathObjectsCustom{}} obj.setDefault() return &obj } -func (obj *bgpSrteV4TunnelTlv) Msg() *otg.BgpSrteV4TunnelTlv { +func (obj *flowRSVPPathObjectsCustom) Msg() *otg.FlowRSVPPathObjectsCustom { return obj.obj } -func (obj *bgpSrteV4TunnelTlv) SetMsg(msg *otg.BgpSrteV4TunnelTlv) BgpSrteV4TunnelTlv { +func (obj *flowRSVPPathObjectsCustom) SetMsg(msg *otg.FlowRSVPPathObjectsCustom) FlowRSVPPathObjectsCustom { obj.setNil() proto.Merge(obj.obj, msg) return obj } -func (obj *bgpSrteV4TunnelTlv) ToProto() (*otg.BgpSrteV4TunnelTlv, error) { +func (obj *flowRSVPPathObjectsCustom) ToProto() (*otg.FlowRSVPPathObjectsCustom, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -278927,7 +324873,7 @@ func (obj *bgpSrteV4TunnelTlv) ToProto() (*otg.BgpSrteV4TunnelTlv, error) { return obj.Msg(), nil } -func (obj *bgpSrteV4TunnelTlv) FromProto(msg *otg.BgpSrteV4TunnelTlv) (BgpSrteV4TunnelTlv, error) { +func (obj *flowRSVPPathObjectsCustom) FromProto(msg *otg.FlowRSVPPathObjectsCustom) (FlowRSVPPathObjectsCustom, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -278936,7 +324882,7 @@ func (obj *bgpSrteV4TunnelTlv) FromProto(msg *otg.BgpSrteV4TunnelTlv) (BgpSrteV4 return newObj, nil } -func (obj *bgpSrteV4TunnelTlv) ToPbText() (string, error) { +func (obj *flowRSVPPathObjectsCustom) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -278948,7 +324894,7 @@ func (obj *bgpSrteV4TunnelTlv) ToPbText() (string, error) { return string(protoMarshal), nil } -func (obj *bgpSrteV4TunnelTlv) FromPbText(value string) error { +func (obj *flowRSVPPathObjectsCustom) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj @@ -278961,7 +324907,7 @@ func (obj *bgpSrteV4TunnelTlv) FromPbText(value string) error { return retObj } -func (obj *bgpSrteV4TunnelTlv) ToYaml() (string, error) { +func (obj *flowRSVPPathObjectsCustom) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -278982,7 +324928,7 @@ func (obj *bgpSrteV4TunnelTlv) ToYaml() (string, error) { return string(data), nil } -func (obj *bgpSrteV4TunnelTlv) FromYaml(value string) error { +func (obj *flowRSVPPathObjectsCustom) FromYaml(value string) error { if value == "" { value = "{}" } @@ -279007,7 +324953,7 @@ func (obj *bgpSrteV4TunnelTlv) FromYaml(value string) error { return nil } -func (obj *bgpSrteV4TunnelTlv) ToJson() (string, error) { +func (obj *flowRSVPPathObjectsCustom) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -279025,7 +324971,7 @@ func (obj *bgpSrteV4TunnelTlv) ToJson() (string, error) { return string(data), nil } -func (obj *bgpSrteV4TunnelTlv) FromJson(value string) error { +func (obj *flowRSVPPathObjectsCustom) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -279046,19 +324992,19 @@ func (obj *bgpSrteV4TunnelTlv) FromJson(value string) error { return nil } -func (obj *bgpSrteV4TunnelTlv) validateToAndFrom() error { +func (obj *flowRSVPPathObjectsCustom) validateToAndFrom() error { // emptyVars() obj.validateObj(&obj.validation, true) return obj.validationResult() } -func (obj *bgpSrteV4TunnelTlv) Validate() error { +func (obj *flowRSVPPathObjectsCustom) Validate() error { // emptyVars() obj.validateObj(&obj.validation, false) return obj.validationResult() } -func (obj *bgpSrteV4TunnelTlv) String() string { +func (obj *flowRSVPPathObjectsCustom) String() string { str, err := obj.ToYaml() if err != nil { return err.Error() @@ -279066,12 +325012,12 @@ func (obj *bgpSrteV4TunnelTlv) String() string { return str } -func (obj *bgpSrteV4TunnelTlv) Clone() (BgpSrteV4TunnelTlv, error) { +func (obj *flowRSVPPathObjectsCustom) Clone() (FlowRSVPPathObjectsCustom, error) { vErr := obj.Validate() if vErr != nil { return nil, vErr } - newObj := NewBgpSrteV4TunnelTlv() + newObj := NewFlowRSVPPathObjectsCustom() data, err := proto.Marshal(obj.Msg()) if err != nil { return nil, err @@ -279083,544 +325029,198 @@ func (obj *bgpSrteV4TunnelTlv) Clone() (BgpSrteV4TunnelTlv, error) { return newObj, nil } -func (obj *bgpSrteV4TunnelTlv) setNil() { - obj.remoteEndpointSubTlvHolder = nil - obj.colorSubTlvHolder = nil - obj.bindingSubTlvHolder = nil - obj.preferenceSubTlvHolder = nil - obj.policyPrioritySubTlvHolder = nil - obj.policyNameSubTlvHolder = nil - obj.explicitNullLabelPolicySubTlvHolder = nil - obj.segmentListsHolder = nil +func (obj *flowRSVPPathObjectsCustom) setNil() { + obj.typeHolder = nil + obj.lengthHolder = nil obj.validationErrors = nil obj.warnings = nil obj.constraints = make(map[string]map[string]Constraints) } -// BgpSrteV4TunnelTlv is configuration for BGP SRTE Tunnel TLV. -type BgpSrteV4TunnelTlv interface { +// FlowRSVPPathObjectsCustom is custom packet header +type FlowRSVPPathObjectsCustom interface { Validation - // Msg marshals BgpSrteV4TunnelTlv to protobuf object *otg.BgpSrteV4TunnelTlv + // Msg marshals FlowRSVPPathObjectsCustom to protobuf object *otg.FlowRSVPPathObjectsCustom // and doesn't set defaults - Msg() *otg.BgpSrteV4TunnelTlv - // SetMsg unmarshals BgpSrteV4TunnelTlv from protobuf object *otg.BgpSrteV4TunnelTlv + Msg() *otg.FlowRSVPPathObjectsCustom + // SetMsg unmarshals FlowRSVPPathObjectsCustom from protobuf object *otg.FlowRSVPPathObjectsCustom // and doesn't set defaults - SetMsg(*otg.BgpSrteV4TunnelTlv) BgpSrteV4TunnelTlv - // ToProto marshals BgpSrteV4TunnelTlv to protobuf object *otg.BgpSrteV4TunnelTlv - ToProto() (*otg.BgpSrteV4TunnelTlv, error) - // ToPbText marshals BgpSrteV4TunnelTlv to protobuf text + SetMsg(*otg.FlowRSVPPathObjectsCustom) FlowRSVPPathObjectsCustom + // ToProto marshals FlowRSVPPathObjectsCustom to protobuf object *otg.FlowRSVPPathObjectsCustom + ToProto() (*otg.FlowRSVPPathObjectsCustom, error) + // ToPbText marshals FlowRSVPPathObjectsCustom to protobuf text ToPbText() (string, error) - // ToYaml marshals BgpSrteV4TunnelTlv to YAML text + // ToYaml marshals FlowRSVPPathObjectsCustom to YAML text ToYaml() (string, error) - // ToJson marshals BgpSrteV4TunnelTlv to JSON text + // ToJson marshals FlowRSVPPathObjectsCustom to JSON text ToJson() (string, error) - // FromProto unmarshals BgpSrteV4TunnelTlv from protobuf object *otg.BgpSrteV4TunnelTlv - FromProto(msg *otg.BgpSrteV4TunnelTlv) (BgpSrteV4TunnelTlv, error) - // FromPbText unmarshals BgpSrteV4TunnelTlv from protobuf text + // FromProto unmarshals FlowRSVPPathObjectsCustom from protobuf object *otg.FlowRSVPPathObjectsCustom + FromProto(msg *otg.FlowRSVPPathObjectsCustom) (FlowRSVPPathObjectsCustom, error) + // FromPbText unmarshals FlowRSVPPathObjectsCustom from protobuf text FromPbText(value string) error - // FromYaml unmarshals BgpSrteV4TunnelTlv from YAML text + // FromYaml unmarshals FlowRSVPPathObjectsCustom from YAML text FromYaml(value string) error - // FromJson unmarshals BgpSrteV4TunnelTlv from JSON text + // FromJson unmarshals FlowRSVPPathObjectsCustom from JSON text FromJson(value string) error - // Validate validates BgpSrteV4TunnelTlv + // Validate validates FlowRSVPPathObjectsCustom Validate() error // A stringer function String() string // Clones the object - Clone() (BgpSrteV4TunnelTlv, error) + Clone() (FlowRSVPPathObjectsCustom, error) validateToAndFrom() error validateObj(vObj *validation, set_default bool) setDefault() - // RemoteEndpointSubTlv returns BgpSrteRemoteEndpointSubTlv, set in BgpSrteV4TunnelTlv. - // BgpSrteRemoteEndpointSubTlv is configuration for the BGP remote endpoint sub TLV. - RemoteEndpointSubTlv() BgpSrteRemoteEndpointSubTlv - // SetRemoteEndpointSubTlv assigns BgpSrteRemoteEndpointSubTlv provided by user to BgpSrteV4TunnelTlv. - // BgpSrteRemoteEndpointSubTlv is configuration for the BGP remote endpoint sub TLV. - SetRemoteEndpointSubTlv(value BgpSrteRemoteEndpointSubTlv) BgpSrteV4TunnelTlv - // HasRemoteEndpointSubTlv checks if RemoteEndpointSubTlv has been set in BgpSrteV4TunnelTlv - HasRemoteEndpointSubTlv() bool - // ColorSubTlv returns BgpSrteColorSubTlv, set in BgpSrteV4TunnelTlv. - // BgpSrteColorSubTlv is configuration for the Policy Color attribute sub-TLV. The Color sub-TLV MAY be used as a way to "color" the corresponding Tunnel TLV. The Value field of the sub-TLV is eight octets long and consists of a Color Extended Community. First two octets of its Value field are 0x030b as type and subtype of extended community. Remaining six octets are are exposed to configure. - ColorSubTlv() BgpSrteColorSubTlv - // SetColorSubTlv assigns BgpSrteColorSubTlv provided by user to BgpSrteV4TunnelTlv. - // BgpSrteColorSubTlv is configuration for the Policy Color attribute sub-TLV. The Color sub-TLV MAY be used as a way to "color" the corresponding Tunnel TLV. The Value field of the sub-TLV is eight octets long and consists of a Color Extended Community. First two octets of its Value field are 0x030b as type and subtype of extended community. Remaining six octets are are exposed to configure. - SetColorSubTlv(value BgpSrteColorSubTlv) BgpSrteV4TunnelTlv - // HasColorSubTlv checks if ColorSubTlv has been set in BgpSrteV4TunnelTlv - HasColorSubTlv() bool - // BindingSubTlv returns BgpSrteBindingSubTlv, set in BgpSrteV4TunnelTlv. - // BgpSrteBindingSubTlv is configuration for the binding SID sub-TLV. This is used to signal the binding SID related information of the SR Policy candidate path. - BindingSubTlv() BgpSrteBindingSubTlv - // SetBindingSubTlv assigns BgpSrteBindingSubTlv provided by user to BgpSrteV4TunnelTlv. - // BgpSrteBindingSubTlv is configuration for the binding SID sub-TLV. This is used to signal the binding SID related information of the SR Policy candidate path. - SetBindingSubTlv(value BgpSrteBindingSubTlv) BgpSrteV4TunnelTlv - // HasBindingSubTlv checks if BindingSubTlv has been set in BgpSrteV4TunnelTlv - HasBindingSubTlv() bool - // PreferenceSubTlv returns BgpSrtePreferenceSubTlv, set in BgpSrteV4TunnelTlv. - // BgpSrtePreferenceSubTlv is configuration for BGP preference sub TLV of the SR Policy candidate path. - PreferenceSubTlv() BgpSrtePreferenceSubTlv - // SetPreferenceSubTlv assigns BgpSrtePreferenceSubTlv provided by user to BgpSrteV4TunnelTlv. - // BgpSrtePreferenceSubTlv is configuration for BGP preference sub TLV of the SR Policy candidate path. - SetPreferenceSubTlv(value BgpSrtePreferenceSubTlv) BgpSrteV4TunnelTlv - // HasPreferenceSubTlv checks if PreferenceSubTlv has been set in BgpSrteV4TunnelTlv - HasPreferenceSubTlv() bool - // PolicyPrioritySubTlv returns BgpSrtePolicyPrioritySubTlv, set in BgpSrteV4TunnelTlv. - // BgpSrtePolicyPrioritySubTlv is configuration for the Policy Priority sub-TLV. The Policy Priority to indicate the order in which the SR policies are re-computed upon topological change. - PolicyPrioritySubTlv() BgpSrtePolicyPrioritySubTlv - // SetPolicyPrioritySubTlv assigns BgpSrtePolicyPrioritySubTlv provided by user to BgpSrteV4TunnelTlv. - // BgpSrtePolicyPrioritySubTlv is configuration for the Policy Priority sub-TLV. The Policy Priority to indicate the order in which the SR policies are re-computed upon topological change. - SetPolicyPrioritySubTlv(value BgpSrtePolicyPrioritySubTlv) BgpSrteV4TunnelTlv - // HasPolicyPrioritySubTlv checks if PolicyPrioritySubTlv has been set in BgpSrteV4TunnelTlv - HasPolicyPrioritySubTlv() bool - // PolicyNameSubTlv returns BgpSrtePolicyNameSubTlv, set in BgpSrteV4TunnelTlv. - // BgpSrtePolicyNameSubTlv is configuration for the Policy Name sub-TLV. The Policy Name sub-TLV is used to attach a symbolic name to the SR Policy candidate path. - PolicyNameSubTlv() BgpSrtePolicyNameSubTlv - // SetPolicyNameSubTlv assigns BgpSrtePolicyNameSubTlv provided by user to BgpSrteV4TunnelTlv. - // BgpSrtePolicyNameSubTlv is configuration for the Policy Name sub-TLV. The Policy Name sub-TLV is used to attach a symbolic name to the SR Policy candidate path. - SetPolicyNameSubTlv(value BgpSrtePolicyNameSubTlv) BgpSrteV4TunnelTlv - // HasPolicyNameSubTlv checks if PolicyNameSubTlv has been set in BgpSrteV4TunnelTlv - HasPolicyNameSubTlv() bool - // ExplicitNullLabelPolicySubTlv returns BgpSrteExplicitNullLabelPolicySubTlv, set in BgpSrteV4TunnelTlv. - // BgpSrteExplicitNullLabelPolicySubTlv is configuration for BGP explicit null label policy sub TLV settings. - ExplicitNullLabelPolicySubTlv() BgpSrteExplicitNullLabelPolicySubTlv - // SetExplicitNullLabelPolicySubTlv assigns BgpSrteExplicitNullLabelPolicySubTlv provided by user to BgpSrteV4TunnelTlv. - // BgpSrteExplicitNullLabelPolicySubTlv is configuration for BGP explicit null label policy sub TLV settings. - SetExplicitNullLabelPolicySubTlv(value BgpSrteExplicitNullLabelPolicySubTlv) BgpSrteV4TunnelTlv - // HasExplicitNullLabelPolicySubTlv checks if ExplicitNullLabelPolicySubTlv has been set in BgpSrteV4TunnelTlv - HasExplicitNullLabelPolicySubTlv() bool - // SegmentLists returns BgpSrteV4TunnelTlvBgpSrteSegmentListIterIter, set in BgpSrteV4TunnelTlv - SegmentLists() BgpSrteV4TunnelTlvBgpSrteSegmentListIter - // Name returns string, set in BgpSrteV4TunnelTlv. - Name() string - // SetName assigns string provided by user to BgpSrteV4TunnelTlv - SetName(value string) BgpSrteV4TunnelTlv - // Active returns bool, set in BgpSrteV4TunnelTlv. - Active() bool - // SetActive assigns bool provided by user to BgpSrteV4TunnelTlv - SetActive(value bool) BgpSrteV4TunnelTlv - // HasActive checks if Active has been set in BgpSrteV4TunnelTlv - HasActive() bool + // Type returns PatternFlowRSVPPathObjectsCustomType, set in FlowRSVPPathObjectsCustom. + // PatternFlowRSVPPathObjectsCustomType is user defined object type. + Type() PatternFlowRSVPPathObjectsCustomType + // SetType assigns PatternFlowRSVPPathObjectsCustomType provided by user to FlowRSVPPathObjectsCustom. + // PatternFlowRSVPPathObjectsCustomType is user defined object type. + SetType(value PatternFlowRSVPPathObjectsCustomType) FlowRSVPPathObjectsCustom + // HasType checks if Type has been set in FlowRSVPPathObjectsCustom + HasType() bool + // Length returns FlowRSVPObjectOptionsCustomLength, set in FlowRSVPPathObjectsCustom. + // FlowRSVPObjectOptionsCustomLength is length for custom options. + Length() FlowRSVPObjectOptionsCustomLength + // SetLength assigns FlowRSVPObjectOptionsCustomLength provided by user to FlowRSVPPathObjectsCustom. + // FlowRSVPObjectOptionsCustomLength is length for custom options. + SetLength(value FlowRSVPObjectOptionsCustomLength) FlowRSVPPathObjectsCustom + // HasLength checks if Length has been set in FlowRSVPPathObjectsCustom + HasLength() bool + // Bytes returns string, set in FlowRSVPPathObjectsCustom. + Bytes() string + // SetBytes assigns string provided by user to FlowRSVPPathObjectsCustom + SetBytes(value string) FlowRSVPPathObjectsCustom setNil() } // description is TBD -// RemoteEndpointSubTlv returns a BgpSrteRemoteEndpointSubTlv -func (obj *bgpSrteV4TunnelTlv) RemoteEndpointSubTlv() BgpSrteRemoteEndpointSubTlv { - if obj.obj.RemoteEndpointSubTlv == nil { - obj.obj.RemoteEndpointSubTlv = NewBgpSrteRemoteEndpointSubTlv().Msg() - } - if obj.remoteEndpointSubTlvHolder == nil { - obj.remoteEndpointSubTlvHolder = &bgpSrteRemoteEndpointSubTlv{obj: obj.obj.RemoteEndpointSubTlv} - } - return obj.remoteEndpointSubTlvHolder -} - -// description is TBD -// RemoteEndpointSubTlv returns a BgpSrteRemoteEndpointSubTlv -func (obj *bgpSrteV4TunnelTlv) HasRemoteEndpointSubTlv() bool { - return obj.obj.RemoteEndpointSubTlv != nil -} - -// description is TBD -// SetRemoteEndpointSubTlv sets the BgpSrteRemoteEndpointSubTlv value in the BgpSrteV4TunnelTlv object -func (obj *bgpSrteV4TunnelTlv) SetRemoteEndpointSubTlv(value BgpSrteRemoteEndpointSubTlv) BgpSrteV4TunnelTlv { - - obj.remoteEndpointSubTlvHolder = nil - obj.obj.RemoteEndpointSubTlv = value.Msg() - - return obj -} - -// description is TBD -// ColorSubTlv returns a BgpSrteColorSubTlv -func (obj *bgpSrteV4TunnelTlv) ColorSubTlv() BgpSrteColorSubTlv { - if obj.obj.ColorSubTlv == nil { - obj.obj.ColorSubTlv = NewBgpSrteColorSubTlv().Msg() - } - if obj.colorSubTlvHolder == nil { - obj.colorSubTlvHolder = &bgpSrteColorSubTlv{obj: obj.obj.ColorSubTlv} - } - return obj.colorSubTlvHolder -} - -// description is TBD -// ColorSubTlv returns a BgpSrteColorSubTlv -func (obj *bgpSrteV4TunnelTlv) HasColorSubTlv() bool { - return obj.obj.ColorSubTlv != nil -} - -// description is TBD -// SetColorSubTlv sets the BgpSrteColorSubTlv value in the BgpSrteV4TunnelTlv object -func (obj *bgpSrteV4TunnelTlv) SetColorSubTlv(value BgpSrteColorSubTlv) BgpSrteV4TunnelTlv { - - obj.colorSubTlvHolder = nil - obj.obj.ColorSubTlv = value.Msg() - - return obj -} - -// description is TBD -// BindingSubTlv returns a BgpSrteBindingSubTlv -func (obj *bgpSrteV4TunnelTlv) BindingSubTlv() BgpSrteBindingSubTlv { - if obj.obj.BindingSubTlv == nil { - obj.obj.BindingSubTlv = NewBgpSrteBindingSubTlv().Msg() - } - if obj.bindingSubTlvHolder == nil { - obj.bindingSubTlvHolder = &bgpSrteBindingSubTlv{obj: obj.obj.BindingSubTlv} - } - return obj.bindingSubTlvHolder -} - -// description is TBD -// BindingSubTlv returns a BgpSrteBindingSubTlv -func (obj *bgpSrteV4TunnelTlv) HasBindingSubTlv() bool { - return obj.obj.BindingSubTlv != nil -} - -// description is TBD -// SetBindingSubTlv sets the BgpSrteBindingSubTlv value in the BgpSrteV4TunnelTlv object -func (obj *bgpSrteV4TunnelTlv) SetBindingSubTlv(value BgpSrteBindingSubTlv) BgpSrteV4TunnelTlv { - - obj.bindingSubTlvHolder = nil - obj.obj.BindingSubTlv = value.Msg() - - return obj -} - -// description is TBD -// PreferenceSubTlv returns a BgpSrtePreferenceSubTlv -func (obj *bgpSrteV4TunnelTlv) PreferenceSubTlv() BgpSrtePreferenceSubTlv { - if obj.obj.PreferenceSubTlv == nil { - obj.obj.PreferenceSubTlv = NewBgpSrtePreferenceSubTlv().Msg() - } - if obj.preferenceSubTlvHolder == nil { - obj.preferenceSubTlvHolder = &bgpSrtePreferenceSubTlv{obj: obj.obj.PreferenceSubTlv} - } - return obj.preferenceSubTlvHolder -} - -// description is TBD -// PreferenceSubTlv returns a BgpSrtePreferenceSubTlv -func (obj *bgpSrteV4TunnelTlv) HasPreferenceSubTlv() bool { - return obj.obj.PreferenceSubTlv != nil -} - -// description is TBD -// SetPreferenceSubTlv sets the BgpSrtePreferenceSubTlv value in the BgpSrteV4TunnelTlv object -func (obj *bgpSrteV4TunnelTlv) SetPreferenceSubTlv(value BgpSrtePreferenceSubTlv) BgpSrteV4TunnelTlv { - - obj.preferenceSubTlvHolder = nil - obj.obj.PreferenceSubTlv = value.Msg() - - return obj -} - -// description is TBD -// PolicyPrioritySubTlv returns a BgpSrtePolicyPrioritySubTlv -func (obj *bgpSrteV4TunnelTlv) PolicyPrioritySubTlv() BgpSrtePolicyPrioritySubTlv { - if obj.obj.PolicyPrioritySubTlv == nil { - obj.obj.PolicyPrioritySubTlv = NewBgpSrtePolicyPrioritySubTlv().Msg() - } - if obj.policyPrioritySubTlvHolder == nil { - obj.policyPrioritySubTlvHolder = &bgpSrtePolicyPrioritySubTlv{obj: obj.obj.PolicyPrioritySubTlv} - } - return obj.policyPrioritySubTlvHolder -} - -// description is TBD -// PolicyPrioritySubTlv returns a BgpSrtePolicyPrioritySubTlv -func (obj *bgpSrteV4TunnelTlv) HasPolicyPrioritySubTlv() bool { - return obj.obj.PolicyPrioritySubTlv != nil -} - -// description is TBD -// SetPolicyPrioritySubTlv sets the BgpSrtePolicyPrioritySubTlv value in the BgpSrteV4TunnelTlv object -func (obj *bgpSrteV4TunnelTlv) SetPolicyPrioritySubTlv(value BgpSrtePolicyPrioritySubTlv) BgpSrteV4TunnelTlv { - - obj.policyPrioritySubTlvHolder = nil - obj.obj.PolicyPrioritySubTlv = value.Msg() - - return obj -} - -// description is TBD -// PolicyNameSubTlv returns a BgpSrtePolicyNameSubTlv -func (obj *bgpSrteV4TunnelTlv) PolicyNameSubTlv() BgpSrtePolicyNameSubTlv { - if obj.obj.PolicyNameSubTlv == nil { - obj.obj.PolicyNameSubTlv = NewBgpSrtePolicyNameSubTlv().Msg() +// Type returns a PatternFlowRSVPPathObjectsCustomType +func (obj *flowRSVPPathObjectsCustom) Type() PatternFlowRSVPPathObjectsCustomType { + if obj.obj.Type == nil { + obj.obj.Type = NewPatternFlowRSVPPathObjectsCustomType().Msg() } - if obj.policyNameSubTlvHolder == nil { - obj.policyNameSubTlvHolder = &bgpSrtePolicyNameSubTlv{obj: obj.obj.PolicyNameSubTlv} + if obj.typeHolder == nil { + obj.typeHolder = &patternFlowRSVPPathObjectsCustomType{obj: obj.obj.Type} } - return obj.policyNameSubTlvHolder + return obj.typeHolder } // description is TBD -// PolicyNameSubTlv returns a BgpSrtePolicyNameSubTlv -func (obj *bgpSrteV4TunnelTlv) HasPolicyNameSubTlv() bool { - return obj.obj.PolicyNameSubTlv != nil +// Type returns a PatternFlowRSVPPathObjectsCustomType +func (obj *flowRSVPPathObjectsCustom) HasType() bool { + return obj.obj.Type != nil } // description is TBD -// SetPolicyNameSubTlv sets the BgpSrtePolicyNameSubTlv value in the BgpSrteV4TunnelTlv object -func (obj *bgpSrteV4TunnelTlv) SetPolicyNameSubTlv(value BgpSrtePolicyNameSubTlv) BgpSrteV4TunnelTlv { +// SetType sets the PatternFlowRSVPPathObjectsCustomType value in the FlowRSVPPathObjectsCustom object +func (obj *flowRSVPPathObjectsCustom) SetType(value PatternFlowRSVPPathObjectsCustomType) FlowRSVPPathObjectsCustom { - obj.policyNameSubTlvHolder = nil - obj.obj.PolicyNameSubTlv = value.Msg() + obj.typeHolder = nil + obj.obj.Type = value.Msg() return obj } // description is TBD -// ExplicitNullLabelPolicySubTlv returns a BgpSrteExplicitNullLabelPolicySubTlv -func (obj *bgpSrteV4TunnelTlv) ExplicitNullLabelPolicySubTlv() BgpSrteExplicitNullLabelPolicySubTlv { - if obj.obj.ExplicitNullLabelPolicySubTlv == nil { - obj.obj.ExplicitNullLabelPolicySubTlv = NewBgpSrteExplicitNullLabelPolicySubTlv().Msg() +// Length returns a FlowRSVPObjectOptionsCustomLength +func (obj *flowRSVPPathObjectsCustom) Length() FlowRSVPObjectOptionsCustomLength { + if obj.obj.Length == nil { + obj.obj.Length = NewFlowRSVPObjectOptionsCustomLength().Msg() } - if obj.explicitNullLabelPolicySubTlvHolder == nil { - obj.explicitNullLabelPolicySubTlvHolder = &bgpSrteExplicitNullLabelPolicySubTlv{obj: obj.obj.ExplicitNullLabelPolicySubTlv} + if obj.lengthHolder == nil { + obj.lengthHolder = &flowRSVPObjectOptionsCustomLength{obj: obj.obj.Length} } - return obj.explicitNullLabelPolicySubTlvHolder -} - -// description is TBD -// ExplicitNullLabelPolicySubTlv returns a BgpSrteExplicitNullLabelPolicySubTlv -func (obj *bgpSrteV4TunnelTlv) HasExplicitNullLabelPolicySubTlv() bool { - return obj.obj.ExplicitNullLabelPolicySubTlv != nil + return obj.lengthHolder } // description is TBD -// SetExplicitNullLabelPolicySubTlv sets the BgpSrteExplicitNullLabelPolicySubTlv value in the BgpSrteV4TunnelTlv object -func (obj *bgpSrteV4TunnelTlv) SetExplicitNullLabelPolicySubTlv(value BgpSrteExplicitNullLabelPolicySubTlv) BgpSrteV4TunnelTlv { - - obj.explicitNullLabelPolicySubTlvHolder = nil - obj.obj.ExplicitNullLabelPolicySubTlv = value.Msg() - - return obj +// Length returns a FlowRSVPObjectOptionsCustomLength +func (obj *flowRSVPPathObjectsCustom) HasLength() bool { + return obj.obj.Length != nil } // description is TBD -// SegmentLists returns a []BgpSrteSegmentList -func (obj *bgpSrteV4TunnelTlv) SegmentLists() BgpSrteV4TunnelTlvBgpSrteSegmentListIter { - if len(obj.obj.SegmentLists) == 0 { - obj.obj.SegmentLists = []*otg.BgpSrteSegmentList{} - } - if obj.segmentListsHolder == nil { - obj.segmentListsHolder = newBgpSrteV4TunnelTlvBgpSrteSegmentListIter(&obj.obj.SegmentLists).setMsg(obj) - } - return obj.segmentListsHolder -} - -type bgpSrteV4TunnelTlvBgpSrteSegmentListIter struct { - obj *bgpSrteV4TunnelTlv - bgpSrteSegmentListSlice []BgpSrteSegmentList - fieldPtr *[]*otg.BgpSrteSegmentList -} - -func newBgpSrteV4TunnelTlvBgpSrteSegmentListIter(ptr *[]*otg.BgpSrteSegmentList) BgpSrteV4TunnelTlvBgpSrteSegmentListIter { - return &bgpSrteV4TunnelTlvBgpSrteSegmentListIter{fieldPtr: ptr} -} - -type BgpSrteV4TunnelTlvBgpSrteSegmentListIter interface { - setMsg(*bgpSrteV4TunnelTlv) BgpSrteV4TunnelTlvBgpSrteSegmentListIter - Items() []BgpSrteSegmentList - Add() BgpSrteSegmentList - Append(items ...BgpSrteSegmentList) BgpSrteV4TunnelTlvBgpSrteSegmentListIter - Set(index int, newObj BgpSrteSegmentList) BgpSrteV4TunnelTlvBgpSrteSegmentListIter - Clear() BgpSrteV4TunnelTlvBgpSrteSegmentListIter - clearHolderSlice() BgpSrteV4TunnelTlvBgpSrteSegmentListIter - appendHolderSlice(item BgpSrteSegmentList) BgpSrteV4TunnelTlvBgpSrteSegmentListIter -} - -func (obj *bgpSrteV4TunnelTlvBgpSrteSegmentListIter) setMsg(msg *bgpSrteV4TunnelTlv) BgpSrteV4TunnelTlvBgpSrteSegmentListIter { - obj.clearHolderSlice() - for _, val := range *obj.fieldPtr { - obj.appendHolderSlice(&bgpSrteSegmentList{obj: val}) - } - obj.obj = msg - return obj -} - -func (obj *bgpSrteV4TunnelTlvBgpSrteSegmentListIter) Items() []BgpSrteSegmentList { - return obj.bgpSrteSegmentListSlice -} - -func (obj *bgpSrteV4TunnelTlvBgpSrteSegmentListIter) Add() BgpSrteSegmentList { - newObj := &otg.BgpSrteSegmentList{} - *obj.fieldPtr = append(*obj.fieldPtr, newObj) - newLibObj := &bgpSrteSegmentList{obj: newObj} - newLibObj.setDefault() - obj.bgpSrteSegmentListSlice = append(obj.bgpSrteSegmentListSlice, newLibObj) - return newLibObj -} - -func (obj *bgpSrteV4TunnelTlvBgpSrteSegmentListIter) Append(items ...BgpSrteSegmentList) BgpSrteV4TunnelTlvBgpSrteSegmentListIter { - for _, item := range items { - newObj := item.Msg() - *obj.fieldPtr = append(*obj.fieldPtr, newObj) - obj.bgpSrteSegmentListSlice = append(obj.bgpSrteSegmentListSlice, item) - } - return obj -} - -func (obj *bgpSrteV4TunnelTlvBgpSrteSegmentListIter) Set(index int, newObj BgpSrteSegmentList) BgpSrteV4TunnelTlvBgpSrteSegmentListIter { - (*obj.fieldPtr)[index] = newObj.Msg() - obj.bgpSrteSegmentListSlice[index] = newObj - return obj -} -func (obj *bgpSrteV4TunnelTlvBgpSrteSegmentListIter) Clear() BgpSrteV4TunnelTlvBgpSrteSegmentListIter { - if len(*obj.fieldPtr) > 0 { - *obj.fieldPtr = []*otg.BgpSrteSegmentList{} - obj.bgpSrteSegmentListSlice = []BgpSrteSegmentList{} - } - return obj -} -func (obj *bgpSrteV4TunnelTlvBgpSrteSegmentListIter) clearHolderSlice() BgpSrteV4TunnelTlvBgpSrteSegmentListIter { - if len(obj.bgpSrteSegmentListSlice) > 0 { - obj.bgpSrteSegmentListSlice = []BgpSrteSegmentList{} - } - return obj -} -func (obj *bgpSrteV4TunnelTlvBgpSrteSegmentListIter) appendHolderSlice(item BgpSrteSegmentList) BgpSrteV4TunnelTlvBgpSrteSegmentListIter { - obj.bgpSrteSegmentListSlice = append(obj.bgpSrteSegmentListSlice, item) - return obj -} - -// Globally unique name of an object. It also serves as the primary key for arrays of objects. -// Name returns a string -func (obj *bgpSrteV4TunnelTlv) Name() string { - - return *obj.obj.Name - -} +// SetLength sets the FlowRSVPObjectOptionsCustomLength value in the FlowRSVPPathObjectsCustom object +func (obj *flowRSVPPathObjectsCustom) SetLength(value FlowRSVPObjectOptionsCustomLength) FlowRSVPPathObjectsCustom { -// Globally unique name of an object. It also serves as the primary key for arrays of objects. -// SetName sets the string value in the BgpSrteV4TunnelTlv object -func (obj *bgpSrteV4TunnelTlv) SetName(value string) BgpSrteV4TunnelTlv { + obj.lengthHolder = nil + obj.obj.Length = value.Msg() - obj.obj.Name = &value return obj } -// If enabled means that this part of the configuration including any active 'children' nodes will be advertised to peer. If disabled, this means that though config is present, it is not taking any part of the test but can be activated at run-time to advertise just this part of the configuration to the peer. -// Active returns a bool -func (obj *bgpSrteV4TunnelTlv) Active() bool { - - return *obj.obj.Active +// A custom packet header defined as a string of hex bytes. The string MUST contain sequence of valid hex bytes. Spaces or colons can be part of the bytes but will be discarded. This packet header can be used in multiple places in the packet. +// Bytes returns a string +func (obj *flowRSVPPathObjectsCustom) Bytes() string { -} + return *obj.obj.Bytes -// If enabled means that this part of the configuration including any active 'children' nodes will be advertised to peer. If disabled, this means that though config is present, it is not taking any part of the test but can be activated at run-time to advertise just this part of the configuration to the peer. -// Active returns a bool -func (obj *bgpSrteV4TunnelTlv) HasActive() bool { - return obj.obj.Active != nil } -// If enabled means that this part of the configuration including any active 'children' nodes will be advertised to peer. If disabled, this means that though config is present, it is not taking any part of the test but can be activated at run-time to advertise just this part of the configuration to the peer. -// SetActive sets the bool value in the BgpSrteV4TunnelTlv object -func (obj *bgpSrteV4TunnelTlv) SetActive(value bool) BgpSrteV4TunnelTlv { +// A custom packet header defined as a string of hex bytes. The string MUST contain sequence of valid hex bytes. Spaces or colons can be part of the bytes but will be discarded. This packet header can be used in multiple places in the packet. +// SetBytes sets the string value in the FlowRSVPPathObjectsCustom object +func (obj *flowRSVPPathObjectsCustom) SetBytes(value string) FlowRSVPPathObjectsCustom { - obj.obj.Active = &value + obj.obj.Bytes = &value return obj } -func (obj *bgpSrteV4TunnelTlv) validateObj(vObj *validation, set_default bool) { +func (obj *flowRSVPPathObjectsCustom) validateObj(vObj *validation, set_default bool) { if set_default { obj.setDefault() } - if obj.obj.RemoteEndpointSubTlv != nil { - - obj.RemoteEndpointSubTlv().validateObj(vObj, set_default) - } - - if obj.obj.ColorSubTlv != nil { - - obj.ColorSubTlv().validateObj(vObj, set_default) - } - - if obj.obj.BindingSubTlv != nil { - - obj.BindingSubTlv().validateObj(vObj, set_default) - } - - if obj.obj.PreferenceSubTlv != nil { - - obj.PreferenceSubTlv().validateObj(vObj, set_default) - } - - if obj.obj.PolicyPrioritySubTlv != nil { - - obj.PolicyPrioritySubTlv().validateObj(vObj, set_default) - } - - if obj.obj.PolicyNameSubTlv != nil { - - obj.PolicyNameSubTlv().validateObj(vObj, set_default) - } - - if obj.obj.ExplicitNullLabelPolicySubTlv != nil { + if obj.obj.Type != nil { - obj.ExplicitNullLabelPolicySubTlv().validateObj(vObj, set_default) + obj.Type().validateObj(vObj, set_default) } - if len(obj.obj.SegmentLists) != 0 { - - if set_default { - obj.SegmentLists().clearHolderSlice() - for _, item := range obj.obj.SegmentLists { - obj.SegmentLists().appendHolderSlice(&bgpSrteSegmentList{obj: item}) - } - } - for _, item := range obj.SegmentLists().Items() { - item.validateObj(vObj, set_default) - } + if obj.obj.Length != nil { + obj.Length().validateObj(vObj, set_default) } - // Name is required - if obj.obj.Name == nil { - vObj.validationErrors = append(vObj.validationErrors, "Name is required field on interface BgpSrteV4TunnelTlv") + // Bytes is required + if obj.obj.Bytes == nil { + vObj.validationErrors = append(vObj.validationErrors, "Bytes is required field on interface FlowRSVPPathObjectsCustom") } } -func (obj *bgpSrteV4TunnelTlv) setDefault() { - if obj.obj.Active == nil { - obj.SetActive(true) - } +func (obj *flowRSVPPathObjectsCustom) setDefault() { } -// ***** BgpSrteV6TunnelTlv ***** -type bgpSrteV6TunnelTlv struct { +// ***** BgpCMacIpRange ***** +type bgpCMacIpRange struct { validation - obj *otg.BgpSrteV6TunnelTlv - remoteEndpointSubTlvHolder BgpSrteRemoteEndpointSubTlv - colorSubTlvHolder BgpSrteColorSubTlv - bindingSubTlvHolder BgpSrteBindingSubTlv - preferenceSubTlvHolder BgpSrtePreferenceSubTlv - policyPrioritySubTlvHolder BgpSrtePolicyPrioritySubTlv - policyNameSubTlvHolder BgpSrtePolicyNameSubTlv - explicitNullLabelPolicySubTlvHolder BgpSrteExplicitNullLabelPolicySubTlv - segmentListsHolder BgpSrteV6TunnelTlvBgpSrteSegmentListIter + obj *otg.BgpCMacIpRange + macAddressesHolder MACRouteAddress + ipv4AddressesHolder V4RouteAddress + ipv6AddressesHolder V6RouteAddress + advancedHolder BgpRouteAdvanced + communitiesHolder BgpCMacIpRangeBgpCommunityIter + extCommunitiesHolder BgpCMacIpRangeBgpExtCommunityIter + asPathHolder BgpAsPath } -func NewBgpSrteV6TunnelTlv() BgpSrteV6TunnelTlv { - obj := bgpSrteV6TunnelTlv{obj: &otg.BgpSrteV6TunnelTlv{}} +func NewBgpCMacIpRange() BgpCMacIpRange { + obj := bgpCMacIpRange{obj: &otg.BgpCMacIpRange{}} obj.setDefault() return &obj } -func (obj *bgpSrteV6TunnelTlv) Msg() *otg.BgpSrteV6TunnelTlv { +func (obj *bgpCMacIpRange) Msg() *otg.BgpCMacIpRange { return obj.obj } -func (obj *bgpSrteV6TunnelTlv) SetMsg(msg *otg.BgpSrteV6TunnelTlv) BgpSrteV6TunnelTlv { +func (obj *bgpCMacIpRange) SetMsg(msg *otg.BgpCMacIpRange) BgpCMacIpRange { obj.setNil() proto.Merge(obj.obj, msg) return obj } -func (obj *bgpSrteV6TunnelTlv) ToProto() (*otg.BgpSrteV6TunnelTlv, error) { +func (obj *bgpCMacIpRange) ToProto() (*otg.BgpCMacIpRange, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -279628,7 +325228,7 @@ func (obj *bgpSrteV6TunnelTlv) ToProto() (*otg.BgpSrteV6TunnelTlv, error) { return obj.Msg(), nil } -func (obj *bgpSrteV6TunnelTlv) FromProto(msg *otg.BgpSrteV6TunnelTlv) (BgpSrteV6TunnelTlv, error) { +func (obj *bgpCMacIpRange) FromProto(msg *otg.BgpCMacIpRange) (BgpCMacIpRange, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -279637,7 +325237,7 @@ func (obj *bgpSrteV6TunnelTlv) FromProto(msg *otg.BgpSrteV6TunnelTlv) (BgpSrteV6 return newObj, nil } -func (obj *bgpSrteV6TunnelTlv) ToPbText() (string, error) { +func (obj *bgpCMacIpRange) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -279649,7 +325249,7 @@ func (obj *bgpSrteV6TunnelTlv) ToPbText() (string, error) { return string(protoMarshal), nil } -func (obj *bgpSrteV6TunnelTlv) FromPbText(value string) error { +func (obj *bgpCMacIpRange) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj @@ -279662,7 +325262,7 @@ func (obj *bgpSrteV6TunnelTlv) FromPbText(value string) error { return retObj } -func (obj *bgpSrteV6TunnelTlv) ToYaml() (string, error) { +func (obj *bgpCMacIpRange) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -279683,7 +325283,7 @@ func (obj *bgpSrteV6TunnelTlv) ToYaml() (string, error) { return string(data), nil } -func (obj *bgpSrteV6TunnelTlv) FromYaml(value string) error { +func (obj *bgpCMacIpRange) FromYaml(value string) error { if value == "" { value = "{}" } @@ -279708,7 +325308,7 @@ func (obj *bgpSrteV6TunnelTlv) FromYaml(value string) error { return nil } -func (obj *bgpSrteV6TunnelTlv) ToJson() (string, error) { +func (obj *bgpCMacIpRange) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -279726,7 +325326,7 @@ func (obj *bgpSrteV6TunnelTlv) ToJson() (string, error) { return string(data), nil } -func (obj *bgpSrteV6TunnelTlv) FromJson(value string) error { +func (obj *bgpCMacIpRange) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -279747,19 +325347,19 @@ func (obj *bgpSrteV6TunnelTlv) FromJson(value string) error { return nil } -func (obj *bgpSrteV6TunnelTlv) validateToAndFrom() error { +func (obj *bgpCMacIpRange) validateToAndFrom() error { // emptyVars() obj.validateObj(&obj.validation, true) return obj.validationResult() } -func (obj *bgpSrteV6TunnelTlv) Validate() error { +func (obj *bgpCMacIpRange) Validate() error { // emptyVars() obj.validateObj(&obj.validation, false) return obj.validationResult() } -func (obj *bgpSrteV6TunnelTlv) String() string { +func (obj *bgpCMacIpRange) String() string { str, err := obj.ToYaml() if err != nil { return err.Error() @@ -279767,12 +325367,12 @@ func (obj *bgpSrteV6TunnelTlv) String() string { return str } -func (obj *bgpSrteV6TunnelTlv) Clone() (BgpSrteV6TunnelTlv, error) { +func (obj *bgpCMacIpRange) Clone() (BgpCMacIpRange, error) { vErr := obj.Validate() if vErr != nil { return nil, vErr } - newObj := NewBgpSrteV6TunnelTlv() + newObj := NewBgpCMacIpRange() data, err := proto.Marshal(obj.Msg()) if err != nil { return nil, err @@ -279784,537 +325384,642 @@ func (obj *bgpSrteV6TunnelTlv) Clone() (BgpSrteV6TunnelTlv, error) { return newObj, nil } -func (obj *bgpSrteV6TunnelTlv) setNil() { - obj.remoteEndpointSubTlvHolder = nil - obj.colorSubTlvHolder = nil - obj.bindingSubTlvHolder = nil - obj.preferenceSubTlvHolder = nil - obj.policyPrioritySubTlvHolder = nil - obj.policyNameSubTlvHolder = nil - obj.explicitNullLabelPolicySubTlvHolder = nil - obj.segmentListsHolder = nil +func (obj *bgpCMacIpRange) setNil() { + obj.macAddressesHolder = nil + obj.ipv4AddressesHolder = nil + obj.ipv6AddressesHolder = nil + obj.advancedHolder = nil + obj.communitiesHolder = nil + obj.extCommunitiesHolder = nil + obj.asPathHolder = nil obj.validationErrors = nil obj.warnings = nil obj.constraints = make(map[string]map[string]Constraints) } -// BgpSrteV6TunnelTlv is configuration for BGP SRTE Tunnel TLV. -type BgpSrteV6TunnelTlv interface { +// BgpCMacIpRange is configuration for MAC/IP Ranges per Broadcast Domain. +// +// Advertises following route - +// +// Type 2 - MAC/IP Advertisement Route. +type BgpCMacIpRange interface { Validation - // Msg marshals BgpSrteV6TunnelTlv to protobuf object *otg.BgpSrteV6TunnelTlv + // Msg marshals BgpCMacIpRange to protobuf object *otg.BgpCMacIpRange // and doesn't set defaults - Msg() *otg.BgpSrteV6TunnelTlv - // SetMsg unmarshals BgpSrteV6TunnelTlv from protobuf object *otg.BgpSrteV6TunnelTlv + Msg() *otg.BgpCMacIpRange + // SetMsg unmarshals BgpCMacIpRange from protobuf object *otg.BgpCMacIpRange // and doesn't set defaults - SetMsg(*otg.BgpSrteV6TunnelTlv) BgpSrteV6TunnelTlv - // ToProto marshals BgpSrteV6TunnelTlv to protobuf object *otg.BgpSrteV6TunnelTlv - ToProto() (*otg.BgpSrteV6TunnelTlv, error) - // ToPbText marshals BgpSrteV6TunnelTlv to protobuf text + SetMsg(*otg.BgpCMacIpRange) BgpCMacIpRange + // ToProto marshals BgpCMacIpRange to protobuf object *otg.BgpCMacIpRange + ToProto() (*otg.BgpCMacIpRange, error) + // ToPbText marshals BgpCMacIpRange to protobuf text ToPbText() (string, error) - // ToYaml marshals BgpSrteV6TunnelTlv to YAML text + // ToYaml marshals BgpCMacIpRange to YAML text ToYaml() (string, error) - // ToJson marshals BgpSrteV6TunnelTlv to JSON text + // ToJson marshals BgpCMacIpRange to JSON text ToJson() (string, error) - // FromProto unmarshals BgpSrteV6TunnelTlv from protobuf object *otg.BgpSrteV6TunnelTlv - FromProto(msg *otg.BgpSrteV6TunnelTlv) (BgpSrteV6TunnelTlv, error) - // FromPbText unmarshals BgpSrteV6TunnelTlv from protobuf text + // FromProto unmarshals BgpCMacIpRange from protobuf object *otg.BgpCMacIpRange + FromProto(msg *otg.BgpCMacIpRange) (BgpCMacIpRange, error) + // FromPbText unmarshals BgpCMacIpRange from protobuf text FromPbText(value string) error - // FromYaml unmarshals BgpSrteV6TunnelTlv from YAML text + // FromYaml unmarshals BgpCMacIpRange from YAML text FromYaml(value string) error - // FromJson unmarshals BgpSrteV6TunnelTlv from JSON text + // FromJson unmarshals BgpCMacIpRange from JSON text FromJson(value string) error - // Validate validates BgpSrteV6TunnelTlv + // Validate validates BgpCMacIpRange Validate() error // A stringer function String() string // Clones the object - Clone() (BgpSrteV6TunnelTlv, error) + Clone() (BgpCMacIpRange, error) validateToAndFrom() error validateObj(vObj *validation, set_default bool) setDefault() - // RemoteEndpointSubTlv returns BgpSrteRemoteEndpointSubTlv, set in BgpSrteV6TunnelTlv. - // BgpSrteRemoteEndpointSubTlv is configuration for the BGP remote endpoint sub TLV. - RemoteEndpointSubTlv() BgpSrteRemoteEndpointSubTlv - // SetRemoteEndpointSubTlv assigns BgpSrteRemoteEndpointSubTlv provided by user to BgpSrteV6TunnelTlv. - // BgpSrteRemoteEndpointSubTlv is configuration for the BGP remote endpoint sub TLV. - SetRemoteEndpointSubTlv(value BgpSrteRemoteEndpointSubTlv) BgpSrteV6TunnelTlv - // HasRemoteEndpointSubTlv checks if RemoteEndpointSubTlv has been set in BgpSrteV6TunnelTlv - HasRemoteEndpointSubTlv() bool - // ColorSubTlv returns BgpSrteColorSubTlv, set in BgpSrteV6TunnelTlv. - // BgpSrteColorSubTlv is configuration for the Policy Color attribute sub-TLV. The Color sub-TLV MAY be used as a way to "color" the corresponding Tunnel TLV. The Value field of the sub-TLV is eight octets long and consists of a Color Extended Community. First two octets of its Value field are 0x030b as type and subtype of extended community. Remaining six octets are are exposed to configure. - ColorSubTlv() BgpSrteColorSubTlv - // SetColorSubTlv assigns BgpSrteColorSubTlv provided by user to BgpSrteV6TunnelTlv. - // BgpSrteColorSubTlv is configuration for the Policy Color attribute sub-TLV. The Color sub-TLV MAY be used as a way to "color" the corresponding Tunnel TLV. The Value field of the sub-TLV is eight octets long and consists of a Color Extended Community. First two octets of its Value field are 0x030b as type and subtype of extended community. Remaining six octets are are exposed to configure. - SetColorSubTlv(value BgpSrteColorSubTlv) BgpSrteV6TunnelTlv - // HasColorSubTlv checks if ColorSubTlv has been set in BgpSrteV6TunnelTlv - HasColorSubTlv() bool - // BindingSubTlv returns BgpSrteBindingSubTlv, set in BgpSrteV6TunnelTlv. - // BgpSrteBindingSubTlv is configuration for the binding SID sub-TLV. This is used to signal the binding SID related information of the SR Policy candidate path. - BindingSubTlv() BgpSrteBindingSubTlv - // SetBindingSubTlv assigns BgpSrteBindingSubTlv provided by user to BgpSrteV6TunnelTlv. - // BgpSrteBindingSubTlv is configuration for the binding SID sub-TLV. This is used to signal the binding SID related information of the SR Policy candidate path. - SetBindingSubTlv(value BgpSrteBindingSubTlv) BgpSrteV6TunnelTlv - // HasBindingSubTlv checks if BindingSubTlv has been set in BgpSrteV6TunnelTlv - HasBindingSubTlv() bool - // PreferenceSubTlv returns BgpSrtePreferenceSubTlv, set in BgpSrteV6TunnelTlv. - // BgpSrtePreferenceSubTlv is configuration for BGP preference sub TLV of the SR Policy candidate path. - PreferenceSubTlv() BgpSrtePreferenceSubTlv - // SetPreferenceSubTlv assigns BgpSrtePreferenceSubTlv provided by user to BgpSrteV6TunnelTlv. - // BgpSrtePreferenceSubTlv is configuration for BGP preference sub TLV of the SR Policy candidate path. - SetPreferenceSubTlv(value BgpSrtePreferenceSubTlv) BgpSrteV6TunnelTlv - // HasPreferenceSubTlv checks if PreferenceSubTlv has been set in BgpSrteV6TunnelTlv - HasPreferenceSubTlv() bool - // PolicyPrioritySubTlv returns BgpSrtePolicyPrioritySubTlv, set in BgpSrteV6TunnelTlv. - // BgpSrtePolicyPrioritySubTlv is configuration for the Policy Priority sub-TLV. The Policy Priority to indicate the order in which the SR policies are re-computed upon topological change. - PolicyPrioritySubTlv() BgpSrtePolicyPrioritySubTlv - // SetPolicyPrioritySubTlv assigns BgpSrtePolicyPrioritySubTlv provided by user to BgpSrteV6TunnelTlv. - // BgpSrtePolicyPrioritySubTlv is configuration for the Policy Priority sub-TLV. The Policy Priority to indicate the order in which the SR policies are re-computed upon topological change. - SetPolicyPrioritySubTlv(value BgpSrtePolicyPrioritySubTlv) BgpSrteV6TunnelTlv - // HasPolicyPrioritySubTlv checks if PolicyPrioritySubTlv has been set in BgpSrteV6TunnelTlv - HasPolicyPrioritySubTlv() bool - // PolicyNameSubTlv returns BgpSrtePolicyNameSubTlv, set in BgpSrteV6TunnelTlv. - // BgpSrtePolicyNameSubTlv is configuration for the Policy Name sub-TLV. The Policy Name sub-TLV is used to attach a symbolic name to the SR Policy candidate path. - PolicyNameSubTlv() BgpSrtePolicyNameSubTlv - // SetPolicyNameSubTlv assigns BgpSrtePolicyNameSubTlv provided by user to BgpSrteV6TunnelTlv. - // BgpSrtePolicyNameSubTlv is configuration for the Policy Name sub-TLV. The Policy Name sub-TLV is used to attach a symbolic name to the SR Policy candidate path. - SetPolicyNameSubTlv(value BgpSrtePolicyNameSubTlv) BgpSrteV6TunnelTlv - // HasPolicyNameSubTlv checks if PolicyNameSubTlv has been set in BgpSrteV6TunnelTlv - HasPolicyNameSubTlv() bool - // ExplicitNullLabelPolicySubTlv returns BgpSrteExplicitNullLabelPolicySubTlv, set in BgpSrteV6TunnelTlv. - // BgpSrteExplicitNullLabelPolicySubTlv is configuration for BGP explicit null label policy sub TLV settings. - ExplicitNullLabelPolicySubTlv() BgpSrteExplicitNullLabelPolicySubTlv - // SetExplicitNullLabelPolicySubTlv assigns BgpSrteExplicitNullLabelPolicySubTlv provided by user to BgpSrteV6TunnelTlv. - // BgpSrteExplicitNullLabelPolicySubTlv is configuration for BGP explicit null label policy sub TLV settings. - SetExplicitNullLabelPolicySubTlv(value BgpSrteExplicitNullLabelPolicySubTlv) BgpSrteV6TunnelTlv - // HasExplicitNullLabelPolicySubTlv checks if ExplicitNullLabelPolicySubTlv has been set in BgpSrteV6TunnelTlv - HasExplicitNullLabelPolicySubTlv() bool - // SegmentLists returns BgpSrteV6TunnelTlvBgpSrteSegmentListIterIter, set in BgpSrteV6TunnelTlv - SegmentLists() BgpSrteV6TunnelTlvBgpSrteSegmentListIter - // Name returns string, set in BgpSrteV6TunnelTlv. + // MacAddresses returns MACRouteAddress, set in BgpCMacIpRange. + // MACRouteAddress is a container for MAC route addresses. + MacAddresses() MACRouteAddress + // SetMacAddresses assigns MACRouteAddress provided by user to BgpCMacIpRange. + // MACRouteAddress is a container for MAC route addresses. + SetMacAddresses(value MACRouteAddress) BgpCMacIpRange + // HasMacAddresses checks if MacAddresses has been set in BgpCMacIpRange + HasMacAddresses() bool + // L2Vni returns uint32, set in BgpCMacIpRange. + L2Vni() uint32 + // SetL2Vni assigns uint32 provided by user to BgpCMacIpRange + SetL2Vni(value uint32) BgpCMacIpRange + // HasL2Vni checks if L2Vni has been set in BgpCMacIpRange + HasL2Vni() bool + // Ipv4Addresses returns V4RouteAddress, set in BgpCMacIpRange. + // V4RouteAddress is a container for IPv4 route addresses. + Ipv4Addresses() V4RouteAddress + // SetIpv4Addresses assigns V4RouteAddress provided by user to BgpCMacIpRange. + // V4RouteAddress is a container for IPv4 route addresses. + SetIpv4Addresses(value V4RouteAddress) BgpCMacIpRange + // HasIpv4Addresses checks if Ipv4Addresses has been set in BgpCMacIpRange + HasIpv4Addresses() bool + // Ipv6Addresses returns V6RouteAddress, set in BgpCMacIpRange. + // V6RouteAddress is a container for IPv6 route addresses. + Ipv6Addresses() V6RouteAddress + // SetIpv6Addresses assigns V6RouteAddress provided by user to BgpCMacIpRange. + // V6RouteAddress is a container for IPv6 route addresses. + SetIpv6Addresses(value V6RouteAddress) BgpCMacIpRange + // HasIpv6Addresses checks if Ipv6Addresses has been set in BgpCMacIpRange + HasIpv6Addresses() bool + // L3Vni returns uint32, set in BgpCMacIpRange. + L3Vni() uint32 + // SetL3Vni assigns uint32 provided by user to BgpCMacIpRange + SetL3Vni(value uint32) BgpCMacIpRange + // HasL3Vni checks if L3Vni has been set in BgpCMacIpRange + HasL3Vni() bool + // IncludeDefaultGateway returns bool, set in BgpCMacIpRange. + IncludeDefaultGateway() bool + // SetIncludeDefaultGateway assigns bool provided by user to BgpCMacIpRange + SetIncludeDefaultGateway(value bool) BgpCMacIpRange + // HasIncludeDefaultGateway checks if IncludeDefaultGateway has been set in BgpCMacIpRange + HasIncludeDefaultGateway() bool + // Advanced returns BgpRouteAdvanced, set in BgpCMacIpRange. + // BgpRouteAdvanced is configuration for advanced BGP route range settings. + Advanced() BgpRouteAdvanced + // SetAdvanced assigns BgpRouteAdvanced provided by user to BgpCMacIpRange. + // BgpRouteAdvanced is configuration for advanced BGP route range settings. + SetAdvanced(value BgpRouteAdvanced) BgpCMacIpRange + // HasAdvanced checks if Advanced has been set in BgpCMacIpRange + HasAdvanced() bool + // Communities returns BgpCMacIpRangeBgpCommunityIterIter, set in BgpCMacIpRange + Communities() BgpCMacIpRangeBgpCommunityIter + // ExtCommunities returns BgpCMacIpRangeBgpExtCommunityIterIter, set in BgpCMacIpRange + ExtCommunities() BgpCMacIpRangeBgpExtCommunityIter + // AsPath returns BgpAsPath, set in BgpCMacIpRange. + // BgpAsPath is this attribute identifies the autonomous systems through which routing information carried in this UPDATE message has passed. This contains the configuration of how to include the Local AS in the AS path attribute of the MP REACH NLRI. It also contains optional configuration of additional AS Path Segments that can be included in the AS Path attribute. The AS Path consists of a Set or Sequence of Autonomous Systems (AS) numbers that a routing information passes through to reach the destination. + AsPath() BgpAsPath + // SetAsPath assigns BgpAsPath provided by user to BgpCMacIpRange. + // BgpAsPath is this attribute identifies the autonomous systems through which routing information carried in this UPDATE message has passed. This contains the configuration of how to include the Local AS in the AS path attribute of the MP REACH NLRI. It also contains optional configuration of additional AS Path Segments that can be included in the AS Path attribute. The AS Path consists of a Set or Sequence of Autonomous Systems (AS) numbers that a routing information passes through to reach the destination. + SetAsPath(value BgpAsPath) BgpCMacIpRange + // HasAsPath checks if AsPath has been set in BgpCMacIpRange + HasAsPath() bool + // Name returns string, set in BgpCMacIpRange. Name() string - // SetName assigns string provided by user to BgpSrteV6TunnelTlv - SetName(value string) BgpSrteV6TunnelTlv - // Active returns bool, set in BgpSrteV6TunnelTlv. - Active() bool - // SetActive assigns bool provided by user to BgpSrteV6TunnelTlv - SetActive(value bool) BgpSrteV6TunnelTlv - // HasActive checks if Active has been set in BgpSrteV6TunnelTlv - HasActive() bool + // SetName assigns string provided by user to BgpCMacIpRange + SetName(value string) BgpCMacIpRange setNil() } -// description is TBD -// RemoteEndpointSubTlv returns a BgpSrteRemoteEndpointSubTlv -func (obj *bgpSrteV6TunnelTlv) RemoteEndpointSubTlv() BgpSrteRemoteEndpointSubTlv { - if obj.obj.RemoteEndpointSubTlv == nil { - obj.obj.RemoteEndpointSubTlv = NewBgpSrteRemoteEndpointSubTlv().Msg() +// Host MAC address range per Broadcast Domain. +// MacAddresses returns a MACRouteAddress +func (obj *bgpCMacIpRange) MacAddresses() MACRouteAddress { + if obj.obj.MacAddresses == nil { + obj.obj.MacAddresses = NewMACRouteAddress().Msg() } - if obj.remoteEndpointSubTlvHolder == nil { - obj.remoteEndpointSubTlvHolder = &bgpSrteRemoteEndpointSubTlv{obj: obj.obj.RemoteEndpointSubTlv} + if obj.macAddressesHolder == nil { + obj.macAddressesHolder = &mACRouteAddress{obj: obj.obj.MacAddresses} } - return obj.remoteEndpointSubTlvHolder + return obj.macAddressesHolder } -// description is TBD -// RemoteEndpointSubTlv returns a BgpSrteRemoteEndpointSubTlv -func (obj *bgpSrteV6TunnelTlv) HasRemoteEndpointSubTlv() bool { - return obj.obj.RemoteEndpointSubTlv != nil +// Host MAC address range per Broadcast Domain. +// MacAddresses returns a MACRouteAddress +func (obj *bgpCMacIpRange) HasMacAddresses() bool { + return obj.obj.MacAddresses != nil } -// description is TBD -// SetRemoteEndpointSubTlv sets the BgpSrteRemoteEndpointSubTlv value in the BgpSrteV6TunnelTlv object -func (obj *bgpSrteV6TunnelTlv) SetRemoteEndpointSubTlv(value BgpSrteRemoteEndpointSubTlv) BgpSrteV6TunnelTlv { +// Host MAC address range per Broadcast Domain. +// SetMacAddresses sets the MACRouteAddress value in the BgpCMacIpRange object +func (obj *bgpCMacIpRange) SetMacAddresses(value MACRouteAddress) BgpCMacIpRange { - obj.remoteEndpointSubTlvHolder = nil - obj.obj.RemoteEndpointSubTlv = value.Msg() + obj.macAddressesHolder = nil + obj.obj.MacAddresses = value.Msg() return obj } -// description is TBD -// ColorSubTlv returns a BgpSrteColorSubTlv -func (obj *bgpSrteV6TunnelTlv) ColorSubTlv() BgpSrteColorSubTlv { - if obj.obj.ColorSubTlv == nil { - obj.obj.ColorSubTlv = NewBgpSrteColorSubTlv().Msg() +// Layer 2 Virtual Network Identifier (L2VNI) to be advertised with MAC/IP Advertisement Route (Type 2) +// L2Vni returns a uint32 +func (obj *bgpCMacIpRange) L2Vni() uint32 { + + return *obj.obj.L2Vni + +} + +// Layer 2 Virtual Network Identifier (L2VNI) to be advertised with MAC/IP Advertisement Route (Type 2) +// L2Vni returns a uint32 +func (obj *bgpCMacIpRange) HasL2Vni() bool { + return obj.obj.L2Vni != nil +} + +// Layer 2 Virtual Network Identifier (L2VNI) to be advertised with MAC/IP Advertisement Route (Type 2) +// SetL2Vni sets the uint32 value in the BgpCMacIpRange object +func (obj *bgpCMacIpRange) SetL2Vni(value uint32) BgpCMacIpRange { + + obj.obj.L2Vni = &value + return obj +} + +// Host IPv4 address range per Broadcast Domain. +// Ipv4Addresses returns a V4RouteAddress +func (obj *bgpCMacIpRange) Ipv4Addresses() V4RouteAddress { + if obj.obj.Ipv4Addresses == nil { + obj.obj.Ipv4Addresses = NewV4RouteAddress().Msg() } - if obj.colorSubTlvHolder == nil { - obj.colorSubTlvHolder = &bgpSrteColorSubTlv{obj: obj.obj.ColorSubTlv} + if obj.ipv4AddressesHolder == nil { + obj.ipv4AddressesHolder = &v4RouteAddress{obj: obj.obj.Ipv4Addresses} } - return obj.colorSubTlvHolder + return obj.ipv4AddressesHolder } -// description is TBD -// ColorSubTlv returns a BgpSrteColorSubTlv -func (obj *bgpSrteV6TunnelTlv) HasColorSubTlv() bool { - return obj.obj.ColorSubTlv != nil +// Host IPv4 address range per Broadcast Domain. +// Ipv4Addresses returns a V4RouteAddress +func (obj *bgpCMacIpRange) HasIpv4Addresses() bool { + return obj.obj.Ipv4Addresses != nil } -// description is TBD -// SetColorSubTlv sets the BgpSrteColorSubTlv value in the BgpSrteV6TunnelTlv object -func (obj *bgpSrteV6TunnelTlv) SetColorSubTlv(value BgpSrteColorSubTlv) BgpSrteV6TunnelTlv { +// Host IPv4 address range per Broadcast Domain. +// SetIpv4Addresses sets the V4RouteAddress value in the BgpCMacIpRange object +func (obj *bgpCMacIpRange) SetIpv4Addresses(value V4RouteAddress) BgpCMacIpRange { - obj.colorSubTlvHolder = nil - obj.obj.ColorSubTlv = value.Msg() + obj.ipv4AddressesHolder = nil + obj.obj.Ipv4Addresses = value.Msg() return obj } -// description is TBD -// BindingSubTlv returns a BgpSrteBindingSubTlv -func (obj *bgpSrteV6TunnelTlv) BindingSubTlv() BgpSrteBindingSubTlv { - if obj.obj.BindingSubTlv == nil { - obj.obj.BindingSubTlv = NewBgpSrteBindingSubTlv().Msg() +// Host IPv6 address range per Broadcast Domain. +// Ipv6Addresses returns a V6RouteAddress +func (obj *bgpCMacIpRange) Ipv6Addresses() V6RouteAddress { + if obj.obj.Ipv6Addresses == nil { + obj.obj.Ipv6Addresses = NewV6RouteAddress().Msg() } - if obj.bindingSubTlvHolder == nil { - obj.bindingSubTlvHolder = &bgpSrteBindingSubTlv{obj: obj.obj.BindingSubTlv} + if obj.ipv6AddressesHolder == nil { + obj.ipv6AddressesHolder = &v6RouteAddress{obj: obj.obj.Ipv6Addresses} } - return obj.bindingSubTlvHolder + return obj.ipv6AddressesHolder } -// description is TBD -// BindingSubTlv returns a BgpSrteBindingSubTlv -func (obj *bgpSrteV6TunnelTlv) HasBindingSubTlv() bool { - return obj.obj.BindingSubTlv != nil +// Host IPv6 address range per Broadcast Domain. +// Ipv6Addresses returns a V6RouteAddress +func (obj *bgpCMacIpRange) HasIpv6Addresses() bool { + return obj.obj.Ipv6Addresses != nil } -// description is TBD -// SetBindingSubTlv sets the BgpSrteBindingSubTlv value in the BgpSrteV6TunnelTlv object -func (obj *bgpSrteV6TunnelTlv) SetBindingSubTlv(value BgpSrteBindingSubTlv) BgpSrteV6TunnelTlv { +// Host IPv6 address range per Broadcast Domain. +// SetIpv6Addresses sets the V6RouteAddress value in the BgpCMacIpRange object +func (obj *bgpCMacIpRange) SetIpv6Addresses(value V6RouteAddress) BgpCMacIpRange { - obj.bindingSubTlvHolder = nil - obj.obj.BindingSubTlv = value.Msg() + obj.ipv6AddressesHolder = nil + obj.obj.Ipv6Addresses = value.Msg() + + return obj +} + +// Layer 3 Virtual Network Identifier (L3VNI) to be advertised with MAC/IP Advertisement Route (Type 2). +// L3Vni returns a uint32 +func (obj *bgpCMacIpRange) L3Vni() uint32 { + + return *obj.obj.L3Vni + +} + +// Layer 3 Virtual Network Identifier (L3VNI) to be advertised with MAC/IP Advertisement Route (Type 2). +// L3Vni returns a uint32 +func (obj *bgpCMacIpRange) HasL3Vni() bool { + return obj.obj.L3Vni != nil +} + +// Layer 3 Virtual Network Identifier (L3VNI) to be advertised with MAC/IP Advertisement Route (Type 2). +// SetL3Vni sets the uint32 value in the BgpCMacIpRange object +func (obj *bgpCMacIpRange) SetL3Vni(value uint32) BgpCMacIpRange { + + obj.obj.L3Vni = &value + return obj +} + +// Include default Gateway Extended Community in MAC/IP Advertisement Route (Type 2). +// IncludeDefaultGateway returns a bool +func (obj *bgpCMacIpRange) IncludeDefaultGateway() bool { + return *obj.obj.IncludeDefaultGateway + +} + +// Include default Gateway Extended Community in MAC/IP Advertisement Route (Type 2). +// IncludeDefaultGateway returns a bool +func (obj *bgpCMacIpRange) HasIncludeDefaultGateway() bool { + return obj.obj.IncludeDefaultGateway != nil +} + +// Include default Gateway Extended Community in MAC/IP Advertisement Route (Type 2). +// SetIncludeDefaultGateway sets the bool value in the BgpCMacIpRange object +func (obj *bgpCMacIpRange) SetIncludeDefaultGateway(value bool) BgpCMacIpRange { + + obj.obj.IncludeDefaultGateway = &value return obj } // description is TBD -// PreferenceSubTlv returns a BgpSrtePreferenceSubTlv -func (obj *bgpSrteV6TunnelTlv) PreferenceSubTlv() BgpSrtePreferenceSubTlv { - if obj.obj.PreferenceSubTlv == nil { - obj.obj.PreferenceSubTlv = NewBgpSrtePreferenceSubTlv().Msg() +// Advanced returns a BgpRouteAdvanced +func (obj *bgpCMacIpRange) Advanced() BgpRouteAdvanced { + if obj.obj.Advanced == nil { + obj.obj.Advanced = NewBgpRouteAdvanced().Msg() } - if obj.preferenceSubTlvHolder == nil { - obj.preferenceSubTlvHolder = &bgpSrtePreferenceSubTlv{obj: obj.obj.PreferenceSubTlv} + if obj.advancedHolder == nil { + obj.advancedHolder = &bgpRouteAdvanced{obj: obj.obj.Advanced} } - return obj.preferenceSubTlvHolder + return obj.advancedHolder } // description is TBD -// PreferenceSubTlv returns a BgpSrtePreferenceSubTlv -func (obj *bgpSrteV6TunnelTlv) HasPreferenceSubTlv() bool { - return obj.obj.PreferenceSubTlv != nil +// Advanced returns a BgpRouteAdvanced +func (obj *bgpCMacIpRange) HasAdvanced() bool { + return obj.obj.Advanced != nil } // description is TBD -// SetPreferenceSubTlv sets the BgpSrtePreferenceSubTlv value in the BgpSrteV6TunnelTlv object -func (obj *bgpSrteV6TunnelTlv) SetPreferenceSubTlv(value BgpSrtePreferenceSubTlv) BgpSrteV6TunnelTlv { +// SetAdvanced sets the BgpRouteAdvanced value in the BgpCMacIpRange object +func (obj *bgpCMacIpRange) SetAdvanced(value BgpRouteAdvanced) BgpCMacIpRange { - obj.preferenceSubTlvHolder = nil - obj.obj.PreferenceSubTlv = value.Msg() + obj.advancedHolder = nil + obj.obj.Advanced = value.Msg() return obj } -// description is TBD -// PolicyPrioritySubTlv returns a BgpSrtePolicyPrioritySubTlv -func (obj *bgpSrteV6TunnelTlv) PolicyPrioritySubTlv() BgpSrtePolicyPrioritySubTlv { - if obj.obj.PolicyPrioritySubTlv == nil { - obj.obj.PolicyPrioritySubTlv = NewBgpSrtePolicyPrioritySubTlv().Msg() +// Optional community settings. +// Communities returns a []BgpCommunity +func (obj *bgpCMacIpRange) Communities() BgpCMacIpRangeBgpCommunityIter { + if len(obj.obj.Communities) == 0 { + obj.obj.Communities = []*otg.BgpCommunity{} } - if obj.policyPrioritySubTlvHolder == nil { - obj.policyPrioritySubTlvHolder = &bgpSrtePolicyPrioritySubTlv{obj: obj.obj.PolicyPrioritySubTlv} + if obj.communitiesHolder == nil { + obj.communitiesHolder = newBgpCMacIpRangeBgpCommunityIter(&obj.obj.Communities).setMsg(obj) } - return obj.policyPrioritySubTlvHolder -} - -// description is TBD -// PolicyPrioritySubTlv returns a BgpSrtePolicyPrioritySubTlv -func (obj *bgpSrteV6TunnelTlv) HasPolicyPrioritySubTlv() bool { - return obj.obj.PolicyPrioritySubTlv != nil + return obj.communitiesHolder } -// description is TBD -// SetPolicyPrioritySubTlv sets the BgpSrtePolicyPrioritySubTlv value in the BgpSrteV6TunnelTlv object -func (obj *bgpSrteV6TunnelTlv) SetPolicyPrioritySubTlv(value BgpSrtePolicyPrioritySubTlv) BgpSrteV6TunnelTlv { +type bgpCMacIpRangeBgpCommunityIter struct { + obj *bgpCMacIpRange + bgpCommunitySlice []BgpCommunity + fieldPtr *[]*otg.BgpCommunity +} - obj.policyPrioritySubTlvHolder = nil - obj.obj.PolicyPrioritySubTlv = value.Msg() +func newBgpCMacIpRangeBgpCommunityIter(ptr *[]*otg.BgpCommunity) BgpCMacIpRangeBgpCommunityIter { + return &bgpCMacIpRangeBgpCommunityIter{fieldPtr: ptr} +} - return obj +type BgpCMacIpRangeBgpCommunityIter interface { + setMsg(*bgpCMacIpRange) BgpCMacIpRangeBgpCommunityIter + Items() []BgpCommunity + Add() BgpCommunity + Append(items ...BgpCommunity) BgpCMacIpRangeBgpCommunityIter + Set(index int, newObj BgpCommunity) BgpCMacIpRangeBgpCommunityIter + Clear() BgpCMacIpRangeBgpCommunityIter + clearHolderSlice() BgpCMacIpRangeBgpCommunityIter + appendHolderSlice(item BgpCommunity) BgpCMacIpRangeBgpCommunityIter } -// description is TBD -// PolicyNameSubTlv returns a BgpSrtePolicyNameSubTlv -func (obj *bgpSrteV6TunnelTlv) PolicyNameSubTlv() BgpSrtePolicyNameSubTlv { - if obj.obj.PolicyNameSubTlv == nil { - obj.obj.PolicyNameSubTlv = NewBgpSrtePolicyNameSubTlv().Msg() - } - if obj.policyNameSubTlvHolder == nil { - obj.policyNameSubTlvHolder = &bgpSrtePolicyNameSubTlv{obj: obj.obj.PolicyNameSubTlv} +func (obj *bgpCMacIpRangeBgpCommunityIter) setMsg(msg *bgpCMacIpRange) BgpCMacIpRangeBgpCommunityIter { + obj.clearHolderSlice() + for _, val := range *obj.fieldPtr { + obj.appendHolderSlice(&bgpCommunity{obj: val}) } - return obj.policyNameSubTlvHolder + obj.obj = msg + return obj } -// description is TBD -// PolicyNameSubTlv returns a BgpSrtePolicyNameSubTlv -func (obj *bgpSrteV6TunnelTlv) HasPolicyNameSubTlv() bool { - return obj.obj.PolicyNameSubTlv != nil +func (obj *bgpCMacIpRangeBgpCommunityIter) Items() []BgpCommunity { + return obj.bgpCommunitySlice } -// description is TBD -// SetPolicyNameSubTlv sets the BgpSrtePolicyNameSubTlv value in the BgpSrteV6TunnelTlv object -func (obj *bgpSrteV6TunnelTlv) SetPolicyNameSubTlv(value BgpSrtePolicyNameSubTlv) BgpSrteV6TunnelTlv { - - obj.policyNameSubTlvHolder = nil - obj.obj.PolicyNameSubTlv = value.Msg() +func (obj *bgpCMacIpRangeBgpCommunityIter) Add() BgpCommunity { + newObj := &otg.BgpCommunity{} + *obj.fieldPtr = append(*obj.fieldPtr, newObj) + newLibObj := &bgpCommunity{obj: newObj} + newLibObj.setDefault() + obj.bgpCommunitySlice = append(obj.bgpCommunitySlice, newLibObj) + return newLibObj +} +func (obj *bgpCMacIpRangeBgpCommunityIter) Append(items ...BgpCommunity) BgpCMacIpRangeBgpCommunityIter { + for _, item := range items { + newObj := item.Msg() + *obj.fieldPtr = append(*obj.fieldPtr, newObj) + obj.bgpCommunitySlice = append(obj.bgpCommunitySlice, item) + } return obj } -// description is TBD -// ExplicitNullLabelPolicySubTlv returns a BgpSrteExplicitNullLabelPolicySubTlv -func (obj *bgpSrteV6TunnelTlv) ExplicitNullLabelPolicySubTlv() BgpSrteExplicitNullLabelPolicySubTlv { - if obj.obj.ExplicitNullLabelPolicySubTlv == nil { - obj.obj.ExplicitNullLabelPolicySubTlv = NewBgpSrteExplicitNullLabelPolicySubTlv().Msg() - } - if obj.explicitNullLabelPolicySubTlvHolder == nil { - obj.explicitNullLabelPolicySubTlvHolder = &bgpSrteExplicitNullLabelPolicySubTlv{obj: obj.obj.ExplicitNullLabelPolicySubTlv} +func (obj *bgpCMacIpRangeBgpCommunityIter) Set(index int, newObj BgpCommunity) BgpCMacIpRangeBgpCommunityIter { + (*obj.fieldPtr)[index] = newObj.Msg() + obj.bgpCommunitySlice[index] = newObj + return obj +} +func (obj *bgpCMacIpRangeBgpCommunityIter) Clear() BgpCMacIpRangeBgpCommunityIter { + if len(*obj.fieldPtr) > 0 { + *obj.fieldPtr = []*otg.BgpCommunity{} + obj.bgpCommunitySlice = []BgpCommunity{} } - return obj.explicitNullLabelPolicySubTlvHolder + return obj } - -// description is TBD -// ExplicitNullLabelPolicySubTlv returns a BgpSrteExplicitNullLabelPolicySubTlv -func (obj *bgpSrteV6TunnelTlv) HasExplicitNullLabelPolicySubTlv() bool { - return obj.obj.ExplicitNullLabelPolicySubTlv != nil +func (obj *bgpCMacIpRangeBgpCommunityIter) clearHolderSlice() BgpCMacIpRangeBgpCommunityIter { + if len(obj.bgpCommunitySlice) > 0 { + obj.bgpCommunitySlice = []BgpCommunity{} + } + return obj } - -// description is TBD -// SetExplicitNullLabelPolicySubTlv sets the BgpSrteExplicitNullLabelPolicySubTlv value in the BgpSrteV6TunnelTlv object -func (obj *bgpSrteV6TunnelTlv) SetExplicitNullLabelPolicySubTlv(value BgpSrteExplicitNullLabelPolicySubTlv) BgpSrteV6TunnelTlv { - - obj.explicitNullLabelPolicySubTlvHolder = nil - obj.obj.ExplicitNullLabelPolicySubTlv = value.Msg() - +func (obj *bgpCMacIpRangeBgpCommunityIter) appendHolderSlice(item BgpCommunity) BgpCMacIpRangeBgpCommunityIter { + obj.bgpCommunitySlice = append(obj.bgpCommunitySlice, item) return obj } -// description is TBD -// SegmentLists returns a []BgpSrteSegmentList -func (obj *bgpSrteV6TunnelTlv) SegmentLists() BgpSrteV6TunnelTlvBgpSrteSegmentListIter { - if len(obj.obj.SegmentLists) == 0 { - obj.obj.SegmentLists = []*otg.BgpSrteSegmentList{} +// Optional Extended Community settings. The Extended Communities Attribute is a transitive optional BGP attribute, with the Type Code 16. Community and Extended Communities attributes are utilized to trigger routing decisions, such as acceptance, rejection, preference, or redistribution. An extended community is an 8-Bytes value. It is divided into two main parts. The first 2 Bytes of the community encode a type and sub-type fields and the last 6 Bytes carry a unique set of data in a format defined by the type and sub-type field. Extended communities provide a larger range for grouping or categorizing communities. When type is administrator_as_2octet or administrator_as_4octet, the valid sub types are route target and origin. The valid value for administrator_as_2octet and administrator_as_4octet type is either two byte AS followed by four byte local administrator id or four byte AS followed by two byte local administrator id. When type is administrator_ipv4_address the valid sub types are route target and origin. The valid value for administrator_ipv4_address is a four byte IPv4 address followed by a two byte local administrator id. When type is opaque, valid sub types are color and encapsulation. When sub type is color, first two bytes of the value field contain flags and last four bytes contains the value of the color. When sub type is encapsulation the first four bytes of value field are reserved and last two bytes carries the tunnel type from IANA's "ETHER TYPES" registry e.g IPv4 (protocol type = 0x0800), IPv6 (protocol type = 0x86dd), and MPLS (protocol type = 0x8847). When type is administrator_as_2octet_link_bandwidth the valid sub type is extended_bandwidth. The first two bytes of the value field contains the AS number and the last four bytes contains the bandwidth in IEEE floating point format. When type is evpn the valid subtype is mac_address. In the value field the low-order bit of the first byte(Flags) is defined as the "Sticky/static" flag and may be set to 1, indicating the MAC address is static and cannot move. The second byte is reserved and the last four bytes contain the sequence number which is used to ensure that PEs retain the correct MAC/IP Advertisement route when multiple updates occur for the same MAC address. +// ExtCommunities returns a []BgpExtCommunity +func (obj *bgpCMacIpRange) ExtCommunities() BgpCMacIpRangeBgpExtCommunityIter { + if len(obj.obj.ExtCommunities) == 0 { + obj.obj.ExtCommunities = []*otg.BgpExtCommunity{} } - if obj.segmentListsHolder == nil { - obj.segmentListsHolder = newBgpSrteV6TunnelTlvBgpSrteSegmentListIter(&obj.obj.SegmentLists).setMsg(obj) + if obj.extCommunitiesHolder == nil { + obj.extCommunitiesHolder = newBgpCMacIpRangeBgpExtCommunityIter(&obj.obj.ExtCommunities).setMsg(obj) } - return obj.segmentListsHolder + return obj.extCommunitiesHolder } -type bgpSrteV6TunnelTlvBgpSrteSegmentListIter struct { - obj *bgpSrteV6TunnelTlv - bgpSrteSegmentListSlice []BgpSrteSegmentList - fieldPtr *[]*otg.BgpSrteSegmentList +type bgpCMacIpRangeBgpExtCommunityIter struct { + obj *bgpCMacIpRange + bgpExtCommunitySlice []BgpExtCommunity + fieldPtr *[]*otg.BgpExtCommunity } -func newBgpSrteV6TunnelTlvBgpSrteSegmentListIter(ptr *[]*otg.BgpSrteSegmentList) BgpSrteV6TunnelTlvBgpSrteSegmentListIter { - return &bgpSrteV6TunnelTlvBgpSrteSegmentListIter{fieldPtr: ptr} +func newBgpCMacIpRangeBgpExtCommunityIter(ptr *[]*otg.BgpExtCommunity) BgpCMacIpRangeBgpExtCommunityIter { + return &bgpCMacIpRangeBgpExtCommunityIter{fieldPtr: ptr} } -type BgpSrteV6TunnelTlvBgpSrteSegmentListIter interface { - setMsg(*bgpSrteV6TunnelTlv) BgpSrteV6TunnelTlvBgpSrteSegmentListIter - Items() []BgpSrteSegmentList - Add() BgpSrteSegmentList - Append(items ...BgpSrteSegmentList) BgpSrteV6TunnelTlvBgpSrteSegmentListIter - Set(index int, newObj BgpSrteSegmentList) BgpSrteV6TunnelTlvBgpSrteSegmentListIter - Clear() BgpSrteV6TunnelTlvBgpSrteSegmentListIter - clearHolderSlice() BgpSrteV6TunnelTlvBgpSrteSegmentListIter - appendHolderSlice(item BgpSrteSegmentList) BgpSrteV6TunnelTlvBgpSrteSegmentListIter +type BgpCMacIpRangeBgpExtCommunityIter interface { + setMsg(*bgpCMacIpRange) BgpCMacIpRangeBgpExtCommunityIter + Items() []BgpExtCommunity + Add() BgpExtCommunity + Append(items ...BgpExtCommunity) BgpCMacIpRangeBgpExtCommunityIter + Set(index int, newObj BgpExtCommunity) BgpCMacIpRangeBgpExtCommunityIter + Clear() BgpCMacIpRangeBgpExtCommunityIter + clearHolderSlice() BgpCMacIpRangeBgpExtCommunityIter + appendHolderSlice(item BgpExtCommunity) BgpCMacIpRangeBgpExtCommunityIter } -func (obj *bgpSrteV6TunnelTlvBgpSrteSegmentListIter) setMsg(msg *bgpSrteV6TunnelTlv) BgpSrteV6TunnelTlvBgpSrteSegmentListIter { +func (obj *bgpCMacIpRangeBgpExtCommunityIter) setMsg(msg *bgpCMacIpRange) BgpCMacIpRangeBgpExtCommunityIter { obj.clearHolderSlice() for _, val := range *obj.fieldPtr { - obj.appendHolderSlice(&bgpSrteSegmentList{obj: val}) + obj.appendHolderSlice(&bgpExtCommunity{obj: val}) } obj.obj = msg return obj } -func (obj *bgpSrteV6TunnelTlvBgpSrteSegmentListIter) Items() []BgpSrteSegmentList { - return obj.bgpSrteSegmentListSlice +func (obj *bgpCMacIpRangeBgpExtCommunityIter) Items() []BgpExtCommunity { + return obj.bgpExtCommunitySlice } -func (obj *bgpSrteV6TunnelTlvBgpSrteSegmentListIter) Add() BgpSrteSegmentList { - newObj := &otg.BgpSrteSegmentList{} +func (obj *bgpCMacIpRangeBgpExtCommunityIter) Add() BgpExtCommunity { + newObj := &otg.BgpExtCommunity{} *obj.fieldPtr = append(*obj.fieldPtr, newObj) - newLibObj := &bgpSrteSegmentList{obj: newObj} + newLibObj := &bgpExtCommunity{obj: newObj} newLibObj.setDefault() - obj.bgpSrteSegmentListSlice = append(obj.bgpSrteSegmentListSlice, newLibObj) + obj.bgpExtCommunitySlice = append(obj.bgpExtCommunitySlice, newLibObj) return newLibObj } -func (obj *bgpSrteV6TunnelTlvBgpSrteSegmentListIter) Append(items ...BgpSrteSegmentList) BgpSrteV6TunnelTlvBgpSrteSegmentListIter { +func (obj *bgpCMacIpRangeBgpExtCommunityIter) Append(items ...BgpExtCommunity) BgpCMacIpRangeBgpExtCommunityIter { for _, item := range items { newObj := item.Msg() *obj.fieldPtr = append(*obj.fieldPtr, newObj) - obj.bgpSrteSegmentListSlice = append(obj.bgpSrteSegmentListSlice, item) + obj.bgpExtCommunitySlice = append(obj.bgpExtCommunitySlice, item) } return obj } -func (obj *bgpSrteV6TunnelTlvBgpSrteSegmentListIter) Set(index int, newObj BgpSrteSegmentList) BgpSrteV6TunnelTlvBgpSrteSegmentListIter { +func (obj *bgpCMacIpRangeBgpExtCommunityIter) Set(index int, newObj BgpExtCommunity) BgpCMacIpRangeBgpExtCommunityIter { (*obj.fieldPtr)[index] = newObj.Msg() - obj.bgpSrteSegmentListSlice[index] = newObj + obj.bgpExtCommunitySlice[index] = newObj return obj } -func (obj *bgpSrteV6TunnelTlvBgpSrteSegmentListIter) Clear() BgpSrteV6TunnelTlvBgpSrteSegmentListIter { +func (obj *bgpCMacIpRangeBgpExtCommunityIter) Clear() BgpCMacIpRangeBgpExtCommunityIter { if len(*obj.fieldPtr) > 0 { - *obj.fieldPtr = []*otg.BgpSrteSegmentList{} - obj.bgpSrteSegmentListSlice = []BgpSrteSegmentList{} + *obj.fieldPtr = []*otg.BgpExtCommunity{} + obj.bgpExtCommunitySlice = []BgpExtCommunity{} } return obj } -func (obj *bgpSrteV6TunnelTlvBgpSrteSegmentListIter) clearHolderSlice() BgpSrteV6TunnelTlvBgpSrteSegmentListIter { - if len(obj.bgpSrteSegmentListSlice) > 0 { - obj.bgpSrteSegmentListSlice = []BgpSrteSegmentList{} +func (obj *bgpCMacIpRangeBgpExtCommunityIter) clearHolderSlice() BgpCMacIpRangeBgpExtCommunityIter { + if len(obj.bgpExtCommunitySlice) > 0 { + obj.bgpExtCommunitySlice = []BgpExtCommunity{} } return obj } -func (obj *bgpSrteV6TunnelTlvBgpSrteSegmentListIter) appendHolderSlice(item BgpSrteSegmentList) BgpSrteV6TunnelTlvBgpSrteSegmentListIter { - obj.bgpSrteSegmentListSlice = append(obj.bgpSrteSegmentListSlice, item) +func (obj *bgpCMacIpRangeBgpExtCommunityIter) appendHolderSlice(item BgpExtCommunity) BgpCMacIpRangeBgpExtCommunityIter { + obj.bgpExtCommunitySlice = append(obj.bgpExtCommunitySlice, item) return obj } -// Globally unique name of an object. It also serves as the primary key for arrays of objects. -// Name returns a string -func (obj *bgpSrteV6TunnelTlv) Name() string { - - return *obj.obj.Name +// Optional AS PATH settings. +// AsPath returns a BgpAsPath +func (obj *bgpCMacIpRange) AsPath() BgpAsPath { + if obj.obj.AsPath == nil { + obj.obj.AsPath = NewBgpAsPath().Msg() + } + if obj.asPathHolder == nil { + obj.asPathHolder = &bgpAsPath{obj: obj.obj.AsPath} + } + return obj.asPathHolder +} +// Optional AS PATH settings. +// AsPath returns a BgpAsPath +func (obj *bgpCMacIpRange) HasAsPath() bool { + return obj.obj.AsPath != nil } -// Globally unique name of an object. It also serves as the primary key for arrays of objects. -// SetName sets the string value in the BgpSrteV6TunnelTlv object -func (obj *bgpSrteV6TunnelTlv) SetName(value string) BgpSrteV6TunnelTlv { +// Optional AS PATH settings. +// SetAsPath sets the BgpAsPath value in the BgpCMacIpRange object +func (obj *bgpCMacIpRange) SetAsPath(value BgpAsPath) BgpCMacIpRange { + + obj.asPathHolder = nil + obj.obj.AsPath = value.Msg() - obj.obj.Name = &value return obj } -// If enabled means that this part of the configuration including any active 'children' nodes will be advertised to peer. If disabled, this means that though config is present, it is not taking any part of the test but can be activated at run-time to advertise just this part of the configuration to the peer. -// Active returns a bool -func (obj *bgpSrteV6TunnelTlv) Active() bool { - - return *obj.obj.Active +// Globally unique name of an object. It also serves as the primary key for arrays of objects. +// Name returns a string +func (obj *bgpCMacIpRange) Name() string { -} + return *obj.obj.Name -// If enabled means that this part of the configuration including any active 'children' nodes will be advertised to peer. If disabled, this means that though config is present, it is not taking any part of the test but can be activated at run-time to advertise just this part of the configuration to the peer. -// Active returns a bool -func (obj *bgpSrteV6TunnelTlv) HasActive() bool { - return obj.obj.Active != nil } -// If enabled means that this part of the configuration including any active 'children' nodes will be advertised to peer. If disabled, this means that though config is present, it is not taking any part of the test but can be activated at run-time to advertise just this part of the configuration to the peer. -// SetActive sets the bool value in the BgpSrteV6TunnelTlv object -func (obj *bgpSrteV6TunnelTlv) SetActive(value bool) BgpSrteV6TunnelTlv { +// Globally unique name of an object. It also serves as the primary key for arrays of objects. +// SetName sets the string value in the BgpCMacIpRange object +func (obj *bgpCMacIpRange) SetName(value string) BgpCMacIpRange { - obj.obj.Active = &value + obj.obj.Name = &value return obj } -func (obj *bgpSrteV6TunnelTlv) validateObj(vObj *validation, set_default bool) { +func (obj *bgpCMacIpRange) validateObj(vObj *validation, set_default bool) { if set_default { obj.setDefault() } - if obj.obj.RemoteEndpointSubTlv != nil { + if obj.obj.MacAddresses != nil { - obj.RemoteEndpointSubTlv().validateObj(vObj, set_default) + obj.MacAddresses().validateObj(vObj, set_default) } - if obj.obj.ColorSubTlv != nil { + if obj.obj.L2Vni != nil { + + if *obj.obj.L2Vni > 16777215 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("0 <= BgpCMacIpRange.L2Vni <= 16777215 but Got %d", *obj.obj.L2Vni)) + } - obj.ColorSubTlv().validateObj(vObj, set_default) } - if obj.obj.BindingSubTlv != nil { + if obj.obj.Ipv4Addresses != nil { - obj.BindingSubTlv().validateObj(vObj, set_default) + obj.Ipv4Addresses().validateObj(vObj, set_default) } - if obj.obj.PreferenceSubTlv != nil { + if obj.obj.Ipv6Addresses != nil { - obj.PreferenceSubTlv().validateObj(vObj, set_default) + obj.Ipv6Addresses().validateObj(vObj, set_default) } - if obj.obj.PolicyPrioritySubTlv != nil { + if obj.obj.L3Vni != nil { + + if *obj.obj.L3Vni > 16777215 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("0 <= BgpCMacIpRange.L3Vni <= 16777215 but Got %d", *obj.obj.L3Vni)) + } - obj.PolicyPrioritySubTlv().validateObj(vObj, set_default) } - if obj.obj.PolicyNameSubTlv != nil { + if obj.obj.Advanced != nil { - obj.PolicyNameSubTlv().validateObj(vObj, set_default) + obj.Advanced().validateObj(vObj, set_default) } - if obj.obj.ExplicitNullLabelPolicySubTlv != nil { + if len(obj.obj.Communities) != 0 { + + if set_default { + obj.Communities().clearHolderSlice() + for _, item := range obj.obj.Communities { + obj.Communities().appendHolderSlice(&bgpCommunity{obj: item}) + } + } + for _, item := range obj.Communities().Items() { + item.validateObj(vObj, set_default) + } - obj.ExplicitNullLabelPolicySubTlv().validateObj(vObj, set_default) } - if len(obj.obj.SegmentLists) != 0 { + if len(obj.obj.ExtCommunities) != 0 { if set_default { - obj.SegmentLists().clearHolderSlice() - for _, item := range obj.obj.SegmentLists { - obj.SegmentLists().appendHolderSlice(&bgpSrteSegmentList{obj: item}) + obj.ExtCommunities().clearHolderSlice() + for _, item := range obj.obj.ExtCommunities { + obj.ExtCommunities().appendHolderSlice(&bgpExtCommunity{obj: item}) } } - for _, item := range obj.SegmentLists().Items() { + for _, item := range obj.ExtCommunities().Items() { item.validateObj(vObj, set_default) } } + if obj.obj.AsPath != nil { + + obj.AsPath().validateObj(vObj, set_default) + } + // Name is required if obj.obj.Name == nil { - vObj.validationErrors = append(vObj.validationErrors, "Name is required field on interface BgpSrteV6TunnelTlv") + vObj.validationErrors = append(vObj.validationErrors, "Name is required field on interface BgpCMacIpRange") } } -func (obj *bgpSrteV6TunnelTlv) setDefault() { - if obj.obj.Active == nil { - obj.SetActive(true) +func (obj *bgpCMacIpRange) setDefault() { + if obj.obj.L2Vni == nil { + obj.SetL2Vni(0) + } + if obj.obj.L3Vni == nil { + obj.SetL3Vni(0) + } + if obj.obj.IncludeDefaultGateway == nil { + obj.SetIncludeDefaultGateway(false) } } -// ***** BgpV6EvpnEvis ***** -type bgpV6EvpnEvis struct { +// ***** BgpSrteSegmentATypeSubTlv ***** +type bgpSrteSegmentATypeSubTlv struct { validation - obj *otg.BgpV6EvpnEvis - eviVxlanHolder BgpV6EviVxlan + obj *otg.BgpSrteSegmentATypeSubTlv } -func NewBgpV6EvpnEvis() BgpV6EvpnEvis { - obj := bgpV6EvpnEvis{obj: &otg.BgpV6EvpnEvis{}} +func NewBgpSrteSegmentATypeSubTlv() BgpSrteSegmentATypeSubTlv { + obj := bgpSrteSegmentATypeSubTlv{obj: &otg.BgpSrteSegmentATypeSubTlv{}} obj.setDefault() return &obj } -func (obj *bgpV6EvpnEvis) Msg() *otg.BgpV6EvpnEvis { +func (obj *bgpSrteSegmentATypeSubTlv) Msg() *otg.BgpSrteSegmentATypeSubTlv { return obj.obj } -func (obj *bgpV6EvpnEvis) SetMsg(msg *otg.BgpV6EvpnEvis) BgpV6EvpnEvis { - obj.setNil() +func (obj *bgpSrteSegmentATypeSubTlv) SetMsg(msg *otg.BgpSrteSegmentATypeSubTlv) BgpSrteSegmentATypeSubTlv { + proto.Merge(obj.obj, msg) return obj } -func (obj *bgpV6EvpnEvis) ToProto() (*otg.BgpV6EvpnEvis, error) { +func (obj *bgpSrteSegmentATypeSubTlv) ToProto() (*otg.BgpSrteSegmentATypeSubTlv, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -280322,7 +326027,7 @@ func (obj *bgpV6EvpnEvis) ToProto() (*otg.BgpV6EvpnEvis, error) { return obj.Msg(), nil } -func (obj *bgpV6EvpnEvis) FromProto(msg *otg.BgpV6EvpnEvis) (BgpV6EvpnEvis, error) { +func (obj *bgpSrteSegmentATypeSubTlv) FromProto(msg *otg.BgpSrteSegmentATypeSubTlv) (BgpSrteSegmentATypeSubTlv, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -280331,7 +326036,7 @@ func (obj *bgpV6EvpnEvis) FromProto(msg *otg.BgpV6EvpnEvis) (BgpV6EvpnEvis, erro return newObj, nil } -func (obj *bgpV6EvpnEvis) ToPbText() (string, error) { +func (obj *bgpSrteSegmentATypeSubTlv) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -280343,12 +326048,12 @@ func (obj *bgpV6EvpnEvis) ToPbText() (string, error) { return string(protoMarshal), nil } -func (obj *bgpV6EvpnEvis) FromPbText(value string) error { +func (obj *bgpSrteSegmentATypeSubTlv) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj } - obj.setNil() + vErr := obj.validateToAndFrom() if vErr != nil { return vErr @@ -280356,7 +326061,7 @@ func (obj *bgpV6EvpnEvis) FromPbText(value string) error { return retObj } -func (obj *bgpV6EvpnEvis) ToYaml() (string, error) { +func (obj *bgpSrteSegmentATypeSubTlv) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -280377,7 +326082,7 @@ func (obj *bgpV6EvpnEvis) ToYaml() (string, error) { return string(data), nil } -func (obj *bgpV6EvpnEvis) FromYaml(value string) error { +func (obj *bgpSrteSegmentATypeSubTlv) FromYaml(value string) error { if value == "" { value = "{}" } @@ -280394,7 +326099,7 @@ func (obj *bgpV6EvpnEvis) FromYaml(value string) error { return fmt.Errorf("unmarshal error %s", strings.Replace( uError.Error(), "\u00a0", " ", -1)[7:]) } - obj.setNil() + vErr := obj.validateToAndFrom() if vErr != nil { return vErr @@ -280402,7 +326107,7 @@ func (obj *bgpV6EvpnEvis) FromYaml(value string) error { return nil } -func (obj *bgpV6EvpnEvis) ToJson() (string, error) { +func (obj *bgpSrteSegmentATypeSubTlv) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -280420,7 +326125,7 @@ func (obj *bgpV6EvpnEvis) ToJson() (string, error) { return string(data), nil } -func (obj *bgpV6EvpnEvis) FromJson(value string) error { +func (obj *bgpSrteSegmentATypeSubTlv) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -280433,7 +326138,7 @@ func (obj *bgpV6EvpnEvis) FromJson(value string) error { return fmt.Errorf("unmarshal error %s", strings.Replace( uError.Error(), "\u00a0", " ", -1)[7:]) } - obj.setNil() + err := obj.validateToAndFrom() if err != nil { return err @@ -280441,19 +326146,19 @@ func (obj *bgpV6EvpnEvis) FromJson(value string) error { return nil } -func (obj *bgpV6EvpnEvis) validateToAndFrom() error { +func (obj *bgpSrteSegmentATypeSubTlv) validateToAndFrom() error { // emptyVars() obj.validateObj(&obj.validation, true) return obj.validationResult() } -func (obj *bgpV6EvpnEvis) Validate() error { +func (obj *bgpSrteSegmentATypeSubTlv) Validate() error { // emptyVars() obj.validateObj(&obj.validation, false) return obj.validationResult() } -func (obj *bgpV6EvpnEvis) String() string { +func (obj *bgpSrteSegmentATypeSubTlv) String() string { str, err := obj.ToYaml() if err != nil { return err.Error() @@ -280461,12 +326166,12 @@ func (obj *bgpV6EvpnEvis) String() string { return str } -func (obj *bgpV6EvpnEvis) Clone() (BgpV6EvpnEvis, error) { +func (obj *bgpSrteSegmentATypeSubTlv) Clone() (BgpSrteSegmentATypeSubTlv, error) { vErr := obj.Validate() if vErr != nil { return nil, vErr } - newObj := NewBgpV6EvpnEvis() + newObj := NewBgpSrteSegmentATypeSubTlv() data, err := proto.Marshal(obj.Msg()) if err != nil { return nil, err @@ -280478,570 +326183,256 @@ func (obj *bgpV6EvpnEvis) Clone() (BgpV6EvpnEvis, error) { return newObj, nil } -func (obj *bgpV6EvpnEvis) setNil() { - obj.eviVxlanHolder = nil - obj.validationErrors = nil - obj.warnings = nil - obj.constraints = make(map[string]map[string]Constraints) -} - -// BgpV6EvpnEvis is this contains a list of different flavors of EVPN. -// For example EVPN over VXLAN or EVPN over MPLS etc to be configured per Ethernet segment. -// Need to instantiate correct type of EVPN instance as per requirement. -type BgpV6EvpnEvis interface { +// BgpSrteSegmentATypeSubTlv is type A: SID only, in the form of MPLS Label. +type BgpSrteSegmentATypeSubTlv interface { Validation - // Msg marshals BgpV6EvpnEvis to protobuf object *otg.BgpV6EvpnEvis + // Msg marshals BgpSrteSegmentATypeSubTlv to protobuf object *otg.BgpSrteSegmentATypeSubTlv // and doesn't set defaults - Msg() *otg.BgpV6EvpnEvis - // SetMsg unmarshals BgpV6EvpnEvis from protobuf object *otg.BgpV6EvpnEvis + Msg() *otg.BgpSrteSegmentATypeSubTlv + // SetMsg unmarshals BgpSrteSegmentATypeSubTlv from protobuf object *otg.BgpSrteSegmentATypeSubTlv // and doesn't set defaults - SetMsg(*otg.BgpV6EvpnEvis) BgpV6EvpnEvis - // ToProto marshals BgpV6EvpnEvis to protobuf object *otg.BgpV6EvpnEvis - ToProto() (*otg.BgpV6EvpnEvis, error) - // ToPbText marshals BgpV6EvpnEvis to protobuf text + SetMsg(*otg.BgpSrteSegmentATypeSubTlv) BgpSrteSegmentATypeSubTlv + // ToProto marshals BgpSrteSegmentATypeSubTlv to protobuf object *otg.BgpSrteSegmentATypeSubTlv + ToProto() (*otg.BgpSrteSegmentATypeSubTlv, error) + // ToPbText marshals BgpSrteSegmentATypeSubTlv to protobuf text ToPbText() (string, error) - // ToYaml marshals BgpV6EvpnEvis to YAML text + // ToYaml marshals BgpSrteSegmentATypeSubTlv to YAML text ToYaml() (string, error) - // ToJson marshals BgpV6EvpnEvis to JSON text + // ToJson marshals BgpSrteSegmentATypeSubTlv to JSON text ToJson() (string, error) - // FromProto unmarshals BgpV6EvpnEvis from protobuf object *otg.BgpV6EvpnEvis - FromProto(msg *otg.BgpV6EvpnEvis) (BgpV6EvpnEvis, error) - // FromPbText unmarshals BgpV6EvpnEvis from protobuf text + // FromProto unmarshals BgpSrteSegmentATypeSubTlv from protobuf object *otg.BgpSrteSegmentATypeSubTlv + FromProto(msg *otg.BgpSrteSegmentATypeSubTlv) (BgpSrteSegmentATypeSubTlv, error) + // FromPbText unmarshals BgpSrteSegmentATypeSubTlv from protobuf text FromPbText(value string) error - // FromYaml unmarshals BgpV6EvpnEvis from YAML text + // FromYaml unmarshals BgpSrteSegmentATypeSubTlv from YAML text FromYaml(value string) error - // FromJson unmarshals BgpV6EvpnEvis from JSON text + // FromJson unmarshals BgpSrteSegmentATypeSubTlv from JSON text FromJson(value string) error - // Validate validates BgpV6EvpnEvis + // Validate validates BgpSrteSegmentATypeSubTlv Validate() error // A stringer function String() string // Clones the object - Clone() (BgpV6EvpnEvis, error) + Clone() (BgpSrteSegmentATypeSubTlv, error) validateToAndFrom() error validateObj(vObj *validation, set_default bool) setDefault() - // Choice returns BgpV6EvpnEvisChoiceEnum, set in BgpV6EvpnEvis - Choice() BgpV6EvpnEvisChoiceEnum - // SetChoice assigns BgpV6EvpnEvisChoiceEnum provided by user to BgpV6EvpnEvis - SetChoice(value BgpV6EvpnEvisChoiceEnum) BgpV6EvpnEvis - // HasChoice checks if Choice has been set in BgpV6EvpnEvis - HasChoice() bool - // EviVxlan returns BgpV6EviVxlan, set in BgpV6EvpnEvis. - // BgpV6EviVxlan is configuration for BGP EVPN EVI. Advertises following routes - - // - // # Type 3 - Inclusive Multicast Ethernet Tag Route - // - // Type 1 - Ethernet Auto-discovery Route (Per EVI) - // - // Type 1 - Ethernet Auto-discovery Route (Per ES) - EviVxlan() BgpV6EviVxlan - // SetEviVxlan assigns BgpV6EviVxlan provided by user to BgpV6EvpnEvis. - // BgpV6EviVxlan is configuration for BGP EVPN EVI. Advertises following routes - - // - // # Type 3 - Inclusive Multicast Ethernet Tag Route - // - // Type 1 - Ethernet Auto-discovery Route (Per EVI) - // - // Type 1 - Ethernet Auto-discovery Route (Per ES) - SetEviVxlan(value BgpV6EviVxlan) BgpV6EvpnEvis - // HasEviVxlan checks if EviVxlan has been set in BgpV6EvpnEvis - HasEviVxlan() bool - setNil() -} - -type BgpV6EvpnEvisChoiceEnum string - -// Enum of Choice on BgpV6EvpnEvis -var BgpV6EvpnEvisChoice = struct { - EVI_VXLAN BgpV6EvpnEvisChoiceEnum -}{ - EVI_VXLAN: BgpV6EvpnEvisChoiceEnum("evi_vxlan"), -} - -func (obj *bgpV6EvpnEvis) Choice() BgpV6EvpnEvisChoiceEnum { - return BgpV6EvpnEvisChoiceEnum(obj.obj.Choice.Enum().String()) -} - -// description is TBD -// Choice returns a string -func (obj *bgpV6EvpnEvis) HasChoice() bool { - return obj.obj.Choice != nil + // Flags returns string, set in BgpSrteSegmentATypeSubTlv. + Flags() string + // SetFlags assigns string provided by user to BgpSrteSegmentATypeSubTlv + SetFlags(value string) BgpSrteSegmentATypeSubTlv + // HasFlags checks if Flags has been set in BgpSrteSegmentATypeSubTlv + HasFlags() bool + // Label returns uint32, set in BgpSrteSegmentATypeSubTlv. + Label() uint32 + // SetLabel assigns uint32 provided by user to BgpSrteSegmentATypeSubTlv + SetLabel(value uint32) BgpSrteSegmentATypeSubTlv + // HasLabel checks if Label has been set in BgpSrteSegmentATypeSubTlv + HasLabel() bool + // Tc returns uint32, set in BgpSrteSegmentATypeSubTlv. + Tc() uint32 + // SetTc assigns uint32 provided by user to BgpSrteSegmentATypeSubTlv + SetTc(value uint32) BgpSrteSegmentATypeSubTlv + // HasTc checks if Tc has been set in BgpSrteSegmentATypeSubTlv + HasTc() bool + // SBit returns bool, set in BgpSrteSegmentATypeSubTlv. + SBit() bool + // SetSBit assigns bool provided by user to BgpSrteSegmentATypeSubTlv + SetSBit(value bool) BgpSrteSegmentATypeSubTlv + // HasSBit checks if SBit has been set in BgpSrteSegmentATypeSubTlv + HasSBit() bool + // Ttl returns uint32, set in BgpSrteSegmentATypeSubTlv. + Ttl() uint32 + // SetTtl assigns uint32 provided by user to BgpSrteSegmentATypeSubTlv + SetTtl(value uint32) BgpSrteSegmentATypeSubTlv + // HasTtl checks if Ttl has been set in BgpSrteSegmentATypeSubTlv + HasTtl() bool } -func (obj *bgpV6EvpnEvis) SetChoice(value BgpV6EvpnEvisChoiceEnum) BgpV6EvpnEvis { - intValue, ok := otg.BgpV6EvpnEvis_Choice_Enum_value[string(value)] - if !ok { - obj.validationErrors = append(obj.validationErrors, fmt.Sprintf( - "%s is not a valid choice on BgpV6EvpnEvisChoiceEnum", string(value))) - return obj - } - enumValue := otg.BgpV6EvpnEvis_Choice_Enum(intValue) - obj.obj.Choice = &enumValue - obj.obj.EviVxlan = nil - obj.eviVxlanHolder = nil - - if value == BgpV6EvpnEvisChoice.EVI_VXLAN { - obj.obj.EviVxlan = NewBgpV6EviVxlan().Msg() - } +// One octet bitmap for flags including V-Flag, A-Flag, S-Flag, B-Flag etc. as defined in https://datatracker.ietf.org/doc/html/draft-ietf-idr-segment-routing-te-policy-13#section-2.4.4.2.12 +// Flags returns a string +func (obj *bgpSrteSegmentATypeSubTlv) Flags() string { - return obj -} + return *obj.obj.Flags -// EVPN VXLAN instance to be configured per Ethernet Segment. -// EviVxlan returns a BgpV6EviVxlan -func (obj *bgpV6EvpnEvis) EviVxlan() BgpV6EviVxlan { - if obj.obj.EviVxlan == nil { - obj.SetChoice(BgpV6EvpnEvisChoice.EVI_VXLAN) - } - if obj.eviVxlanHolder == nil { - obj.eviVxlanHolder = &bgpV6EviVxlan{obj: obj.obj.EviVxlan} - } - return obj.eviVxlanHolder } -// EVPN VXLAN instance to be configured per Ethernet Segment. -// EviVxlan returns a BgpV6EviVxlan -func (obj *bgpV6EvpnEvis) HasEviVxlan() bool { - return obj.obj.EviVxlan != nil +// One octet bitmap for flags including V-Flag, A-Flag, S-Flag, B-Flag etc. as defined in https://datatracker.ietf.org/doc/html/draft-ietf-idr-segment-routing-te-policy-13#section-2.4.4.2.12 +// Flags returns a string +func (obj *bgpSrteSegmentATypeSubTlv) HasFlags() bool { + return obj.obj.Flags != nil } -// EVPN VXLAN instance to be configured per Ethernet Segment. -// SetEviVxlan sets the BgpV6EviVxlan value in the BgpV6EvpnEvis object -func (obj *bgpV6EvpnEvis) SetEviVxlan(value BgpV6EviVxlan) BgpV6EvpnEvis { - obj.SetChoice(BgpV6EvpnEvisChoice.EVI_VXLAN) - obj.eviVxlanHolder = nil - obj.obj.EviVxlan = value.Msg() +// One octet bitmap for flags including V-Flag, A-Flag, S-Flag, B-Flag etc. as defined in https://datatracker.ietf.org/doc/html/draft-ietf-idr-segment-routing-te-policy-13#section-2.4.4.2.12 +// SetFlags sets the string value in the BgpSrteSegmentATypeSubTlv object +func (obj *bgpSrteSegmentATypeSubTlv) SetFlags(value string) BgpSrteSegmentATypeSubTlv { + obj.obj.Flags = &value return obj } -func (obj *bgpV6EvpnEvis) validateObj(vObj *validation, set_default bool) { - if set_default { - obj.setDefault() - } - - if obj.obj.EviVxlan != nil { - - obj.EviVxlan().validateObj(vObj, set_default) - } - -} - -func (obj *bgpV6EvpnEvis) setDefault() { - if obj.obj.Choice == nil { - obj.SetChoice(BgpV6EvpnEvisChoice.EVI_VXLAN) - - } +// Label value in [0, 2^20 -1]. +// Label returns a uint32 +func (obj *bgpSrteSegmentATypeSubTlv) Label() uint32 { -} + return *obj.obj.Label -// ***** VxlanV4TunnelDestinationIPModeUnicastVtep ***** -type vxlanV4TunnelDestinationIPModeUnicastVtep struct { - validation - obj *otg.VxlanV4TunnelDestinationIPModeUnicastVtep - arpSuppressionCacheHolder VxlanV4TunnelDestinationIPModeUnicastVtepVxlanTunnelDestinationIPModeUnicastArpSuppressionCacheIter } -func NewVxlanV4TunnelDestinationIPModeUnicastVtep() VxlanV4TunnelDestinationIPModeUnicastVtep { - obj := vxlanV4TunnelDestinationIPModeUnicastVtep{obj: &otg.VxlanV4TunnelDestinationIPModeUnicastVtep{}} - obj.setDefault() - return &obj +// Label value in [0, 2^20 -1]. +// Label returns a uint32 +func (obj *bgpSrteSegmentATypeSubTlv) HasLabel() bool { + return obj.obj.Label != nil } -func (obj *vxlanV4TunnelDestinationIPModeUnicastVtep) Msg() *otg.VxlanV4TunnelDestinationIPModeUnicastVtep { - return obj.obj -} +// Label value in [0, 2^20 -1]. +// SetLabel sets the uint32 value in the BgpSrteSegmentATypeSubTlv object +func (obj *bgpSrteSegmentATypeSubTlv) SetLabel(value uint32) BgpSrteSegmentATypeSubTlv { -func (obj *vxlanV4TunnelDestinationIPModeUnicastVtep) SetMsg(msg *otg.VxlanV4TunnelDestinationIPModeUnicastVtep) VxlanV4TunnelDestinationIPModeUnicastVtep { - obj.setNil() - proto.Merge(obj.obj, msg) + obj.obj.Label = &value return obj } -func (obj *vxlanV4TunnelDestinationIPModeUnicastVtep) ToProto() (*otg.VxlanV4TunnelDestinationIPModeUnicastVtep, error) { - err := obj.validateToAndFrom() - if err != nil { - return nil, err - } - return obj.Msg(), nil -} - -func (obj *vxlanV4TunnelDestinationIPModeUnicastVtep) FromProto(msg *otg.VxlanV4TunnelDestinationIPModeUnicastVtep) (VxlanV4TunnelDestinationIPModeUnicastVtep, error) { - newObj := obj.SetMsg(msg) - err := newObj.validateToAndFrom() - if err != nil { - return nil, err - } - return newObj, nil -} - -func (obj *vxlanV4TunnelDestinationIPModeUnicastVtep) ToPbText() (string, error) { - vErr := obj.validateToAndFrom() - if vErr != nil { - return "", vErr - } - protoMarshal, err := proto.Marshal(obj.Msg()) - if err != nil { - return "", err - } - return string(protoMarshal), nil -} +// Traffic class in bits. +// Tc returns a uint32 +func (obj *bgpSrteSegmentATypeSubTlv) Tc() uint32 { -func (obj *vxlanV4TunnelDestinationIPModeUnicastVtep) FromPbText(value string) error { - retObj := proto.Unmarshal([]byte(value), obj.Msg()) - if retObj != nil { - return retObj - } - obj.setNil() - vErr := obj.validateToAndFrom() - if vErr != nil { - return vErr - } - return retObj -} + return *obj.obj.Tc -func (obj *vxlanV4TunnelDestinationIPModeUnicastVtep) ToYaml() (string, error) { - vErr := obj.validateToAndFrom() - if vErr != nil { - return "", vErr - } - opts := protojson.MarshalOptions{ - UseProtoNames: true, - AllowPartial: true, - EmitUnpopulated: false, - } - data, err := opts.Marshal(obj.Msg()) - if err != nil { - return "", err - } - data, err = yaml.JSONToYAML(data) - if err != nil { - return "", err - } - return string(data), nil } -func (obj *vxlanV4TunnelDestinationIPModeUnicastVtep) FromYaml(value string) error { - if value == "" { - value = "{}" - } - data, err := yaml.YAMLToJSON([]byte(value)) - if err != nil { - return err - } - opts := protojson.UnmarshalOptions{ - AllowPartial: true, - DiscardUnknown: false, - } - uError := opts.Unmarshal([]byte(data), obj.Msg()) - if uError != nil { - return fmt.Errorf("unmarshal error %s", strings.Replace( - uError.Error(), "\u00a0", " ", -1)[7:]) - } - obj.setNil() - vErr := obj.validateToAndFrom() - if vErr != nil { - return vErr - } - return nil +// Traffic class in bits. +// Tc returns a uint32 +func (obj *bgpSrteSegmentATypeSubTlv) HasTc() bool { + return obj.obj.Tc != nil } -func (obj *vxlanV4TunnelDestinationIPModeUnicastVtep) ToJson() (string, error) { - vErr := obj.validateToAndFrom() - if vErr != nil { - return "", vErr - } - opts := protojson.MarshalOptions{ - UseProtoNames: true, - AllowPartial: true, - EmitUnpopulated: false, - Indent: " ", - } - data, err := opts.Marshal(obj.Msg()) - if err != nil { - return "", err - } - return string(data), nil -} +// Traffic class in bits. +// SetTc sets the uint32 value in the BgpSrteSegmentATypeSubTlv object +func (obj *bgpSrteSegmentATypeSubTlv) SetTc(value uint32) BgpSrteSegmentATypeSubTlv { -func (obj *vxlanV4TunnelDestinationIPModeUnicastVtep) FromJson(value string) error { - opts := protojson.UnmarshalOptions{ - AllowPartial: true, - DiscardUnknown: false, - } - if value == "" { - value = "{}" - } - uError := opts.Unmarshal([]byte(value), obj.Msg()) - if uError != nil { - return fmt.Errorf("unmarshal error %s", strings.Replace( - uError.Error(), "\u00a0", " ", -1)[7:]) - } - obj.setNil() - err := obj.validateToAndFrom() - if err != nil { - return err - } - return nil + obj.obj.Tc = &value + return obj } -func (obj *vxlanV4TunnelDestinationIPModeUnicastVtep) validateToAndFrom() error { - // emptyVars() - obj.validateObj(&obj.validation, true) - return obj.validationResult() -} +// Bottom-of-Stack bit. +// SBit returns a bool +func (obj *bgpSrteSegmentATypeSubTlv) SBit() bool { -func (obj *vxlanV4TunnelDestinationIPModeUnicastVtep) Validate() error { - // emptyVars() - obj.validateObj(&obj.validation, false) - return obj.validationResult() -} + return *obj.obj.SBit -func (obj *vxlanV4TunnelDestinationIPModeUnicastVtep) String() string { - str, err := obj.ToYaml() - if err != nil { - return err.Error() - } - return str } -func (obj *vxlanV4TunnelDestinationIPModeUnicastVtep) Clone() (VxlanV4TunnelDestinationIPModeUnicastVtep, error) { - vErr := obj.Validate() - if vErr != nil { - return nil, vErr - } - newObj := NewVxlanV4TunnelDestinationIPModeUnicastVtep() - data, err := proto.Marshal(obj.Msg()) - if err != nil { - return nil, err - } - pbErr := proto.Unmarshal(data, newObj.Msg()) - if pbErr != nil { - return nil, pbErr - } - return newObj, nil +// Bottom-of-Stack bit. +// SBit returns a bool +func (obj *bgpSrteSegmentATypeSubTlv) HasSBit() bool { + return obj.obj.SBit != nil } -func (obj *vxlanV4TunnelDestinationIPModeUnicastVtep) setNil() { - obj.arpSuppressionCacheHolder = nil - obj.validationErrors = nil - obj.warnings = nil - obj.constraints = make(map[string]map[string]Constraints) -} +// Bottom-of-Stack bit. +// SetSBit sets the bool value in the BgpSrteSegmentATypeSubTlv object +func (obj *bgpSrteSegmentATypeSubTlv) SetSBit(value bool) BgpSrteSegmentATypeSubTlv { -// VxlanV4TunnelDestinationIPModeUnicastVtep is vTEP (VXLAN Tunnel End Point (VTEP)) parameters -type VxlanV4TunnelDestinationIPModeUnicastVtep interface { - Validation - // Msg marshals VxlanV4TunnelDestinationIPModeUnicastVtep to protobuf object *otg.VxlanV4TunnelDestinationIPModeUnicastVtep - // and doesn't set defaults - Msg() *otg.VxlanV4TunnelDestinationIPModeUnicastVtep - // SetMsg unmarshals VxlanV4TunnelDestinationIPModeUnicastVtep from protobuf object *otg.VxlanV4TunnelDestinationIPModeUnicastVtep - // and doesn't set defaults - SetMsg(*otg.VxlanV4TunnelDestinationIPModeUnicastVtep) VxlanV4TunnelDestinationIPModeUnicastVtep - // ToProto marshals VxlanV4TunnelDestinationIPModeUnicastVtep to protobuf object *otg.VxlanV4TunnelDestinationIPModeUnicastVtep - ToProto() (*otg.VxlanV4TunnelDestinationIPModeUnicastVtep, error) - // ToPbText marshals VxlanV4TunnelDestinationIPModeUnicastVtep to protobuf text - ToPbText() (string, error) - // ToYaml marshals VxlanV4TunnelDestinationIPModeUnicastVtep to YAML text - ToYaml() (string, error) - // ToJson marshals VxlanV4TunnelDestinationIPModeUnicastVtep to JSON text - ToJson() (string, error) - // FromProto unmarshals VxlanV4TunnelDestinationIPModeUnicastVtep from protobuf object *otg.VxlanV4TunnelDestinationIPModeUnicastVtep - FromProto(msg *otg.VxlanV4TunnelDestinationIPModeUnicastVtep) (VxlanV4TunnelDestinationIPModeUnicastVtep, error) - // FromPbText unmarshals VxlanV4TunnelDestinationIPModeUnicastVtep from protobuf text - FromPbText(value string) error - // FromYaml unmarshals VxlanV4TunnelDestinationIPModeUnicastVtep from YAML text - FromYaml(value string) error - // FromJson unmarshals VxlanV4TunnelDestinationIPModeUnicastVtep from JSON text - FromJson(value string) error - // Validate validates VxlanV4TunnelDestinationIPModeUnicastVtep - Validate() error - // A stringer function - String() string - // Clones the object - Clone() (VxlanV4TunnelDestinationIPModeUnicastVtep, error) - validateToAndFrom() error - validateObj(vObj *validation, set_default bool) - setDefault() - // RemoteVtepAddress returns string, set in VxlanV4TunnelDestinationIPModeUnicastVtep. - RemoteVtepAddress() string - // SetRemoteVtepAddress assigns string provided by user to VxlanV4TunnelDestinationIPModeUnicastVtep - SetRemoteVtepAddress(value string) VxlanV4TunnelDestinationIPModeUnicastVtep - // HasRemoteVtepAddress checks if RemoteVtepAddress has been set in VxlanV4TunnelDestinationIPModeUnicastVtep - HasRemoteVtepAddress() bool - // ArpSuppressionCache returns VxlanV4TunnelDestinationIPModeUnicastVtepVxlanTunnelDestinationIPModeUnicastArpSuppressionCacheIterIter, set in VxlanV4TunnelDestinationIPModeUnicastVtep - ArpSuppressionCache() VxlanV4TunnelDestinationIPModeUnicastVtepVxlanTunnelDestinationIPModeUnicastArpSuppressionCacheIter - setNil() + obj.obj.SBit = &value + return obj } -// Remote VXLAN Tunnel End Point address -// RemoteVtepAddress returns a string -func (obj *vxlanV4TunnelDestinationIPModeUnicastVtep) RemoteVtepAddress() string { +// Time To Live. +// Ttl returns a uint32 +func (obj *bgpSrteSegmentATypeSubTlv) Ttl() uint32 { - return *obj.obj.RemoteVtepAddress + return *obj.obj.Ttl } -// Remote VXLAN Tunnel End Point address -// RemoteVtepAddress returns a string -func (obj *vxlanV4TunnelDestinationIPModeUnicastVtep) HasRemoteVtepAddress() bool { - return obj.obj.RemoteVtepAddress != nil +// Time To Live. +// Ttl returns a uint32 +func (obj *bgpSrteSegmentATypeSubTlv) HasTtl() bool { + return obj.obj.Ttl != nil } -// Remote VXLAN Tunnel End Point address -// SetRemoteVtepAddress sets the string value in the VxlanV4TunnelDestinationIPModeUnicastVtep object -func (obj *vxlanV4TunnelDestinationIPModeUnicastVtep) SetRemoteVtepAddress(value string) VxlanV4TunnelDestinationIPModeUnicastVtep { +// Time To Live. +// SetTtl sets the uint32 value in the BgpSrteSegmentATypeSubTlv object +func (obj *bgpSrteSegmentATypeSubTlv) SetTtl(value uint32) BgpSrteSegmentATypeSubTlv { - obj.obj.RemoteVtepAddress = &value + obj.obj.Ttl = &value return obj } -// Each VTEP maintains an ARP suppression cache table for known IP hosts and their associated MAC addresses in the VNI segment. When an end host in the VNI sends an ARP request for another end-host IP address, its local VTEP intercepts the ARP request and checks for the ARP-resolved IP address in its ARP suppression cache table. If it finds a match, the local VTEP sends an ARP response on behalf of the remote end host. -// ArpSuppressionCache returns a []VxlanTunnelDestinationIPModeUnicastArpSuppressionCache -func (obj *vxlanV4TunnelDestinationIPModeUnicastVtep) ArpSuppressionCache() VxlanV4TunnelDestinationIPModeUnicastVtepVxlanTunnelDestinationIPModeUnicastArpSuppressionCacheIter { - if len(obj.obj.ArpSuppressionCache) == 0 { - obj.obj.ArpSuppressionCache = []*otg.VxlanTunnelDestinationIPModeUnicastArpSuppressionCache{} - } - if obj.arpSuppressionCacheHolder == nil { - obj.arpSuppressionCacheHolder = newVxlanV4TunnelDestinationIPModeUnicastVtepVxlanTunnelDestinationIPModeUnicastArpSuppressionCacheIter(&obj.obj.ArpSuppressionCache).setMsg(obj) +func (obj *bgpSrteSegmentATypeSubTlv) validateObj(vObj *validation, set_default bool) { + if set_default { + obj.setDefault() } - return obj.arpSuppressionCacheHolder -} - -type vxlanV4TunnelDestinationIPModeUnicastVtepVxlanTunnelDestinationIPModeUnicastArpSuppressionCacheIter struct { - obj *vxlanV4TunnelDestinationIPModeUnicastVtep - vxlanTunnelDestinationIPModeUnicastArpSuppressionCacheSlice []VxlanTunnelDestinationIPModeUnicastArpSuppressionCache - fieldPtr *[]*otg.VxlanTunnelDestinationIPModeUnicastArpSuppressionCache -} -func newVxlanV4TunnelDestinationIPModeUnicastVtepVxlanTunnelDestinationIPModeUnicastArpSuppressionCacheIter(ptr *[]*otg.VxlanTunnelDestinationIPModeUnicastArpSuppressionCache) VxlanV4TunnelDestinationIPModeUnicastVtepVxlanTunnelDestinationIPModeUnicastArpSuppressionCacheIter { - return &vxlanV4TunnelDestinationIPModeUnicastVtepVxlanTunnelDestinationIPModeUnicastArpSuppressionCacheIter{fieldPtr: ptr} -} + if obj.obj.Flags != nil { -type VxlanV4TunnelDestinationIPModeUnicastVtepVxlanTunnelDestinationIPModeUnicastArpSuppressionCacheIter interface { - setMsg(*vxlanV4TunnelDestinationIPModeUnicastVtep) VxlanV4TunnelDestinationIPModeUnicastVtepVxlanTunnelDestinationIPModeUnicastArpSuppressionCacheIter - Items() []VxlanTunnelDestinationIPModeUnicastArpSuppressionCache - Add() VxlanTunnelDestinationIPModeUnicastArpSuppressionCache - Append(items ...VxlanTunnelDestinationIPModeUnicastArpSuppressionCache) VxlanV4TunnelDestinationIPModeUnicastVtepVxlanTunnelDestinationIPModeUnicastArpSuppressionCacheIter - Set(index int, newObj VxlanTunnelDestinationIPModeUnicastArpSuppressionCache) VxlanV4TunnelDestinationIPModeUnicastVtepVxlanTunnelDestinationIPModeUnicastArpSuppressionCacheIter - Clear() VxlanV4TunnelDestinationIPModeUnicastVtepVxlanTunnelDestinationIPModeUnicastArpSuppressionCacheIter - clearHolderSlice() VxlanV4TunnelDestinationIPModeUnicastVtepVxlanTunnelDestinationIPModeUnicastArpSuppressionCacheIter - appendHolderSlice(item VxlanTunnelDestinationIPModeUnicastArpSuppressionCache) VxlanV4TunnelDestinationIPModeUnicastVtepVxlanTunnelDestinationIPModeUnicastArpSuppressionCacheIter -} + err := obj.validateHex(obj.Flags()) + if err != nil { + vObj.validationErrors = append(vObj.validationErrors, fmt.Sprintf("%s %s", err.Error(), "on BgpSrteSegmentATypeSubTlv.Flags")) + } -func (obj *vxlanV4TunnelDestinationIPModeUnicastVtepVxlanTunnelDestinationIPModeUnicastArpSuppressionCacheIter) setMsg(msg *vxlanV4TunnelDestinationIPModeUnicastVtep) VxlanV4TunnelDestinationIPModeUnicastVtepVxlanTunnelDestinationIPModeUnicastArpSuppressionCacheIter { - obj.clearHolderSlice() - for _, val := range *obj.fieldPtr { - obj.appendHolderSlice(&vxlanTunnelDestinationIPModeUnicastArpSuppressionCache{obj: val}) } - obj.obj = msg - return obj -} - -func (obj *vxlanV4TunnelDestinationIPModeUnicastVtepVxlanTunnelDestinationIPModeUnicastArpSuppressionCacheIter) Items() []VxlanTunnelDestinationIPModeUnicastArpSuppressionCache { - return obj.vxlanTunnelDestinationIPModeUnicastArpSuppressionCacheSlice -} -func (obj *vxlanV4TunnelDestinationIPModeUnicastVtepVxlanTunnelDestinationIPModeUnicastArpSuppressionCacheIter) Add() VxlanTunnelDestinationIPModeUnicastArpSuppressionCache { - newObj := &otg.VxlanTunnelDestinationIPModeUnicastArpSuppressionCache{} - *obj.fieldPtr = append(*obj.fieldPtr, newObj) - newLibObj := &vxlanTunnelDestinationIPModeUnicastArpSuppressionCache{obj: newObj} - newLibObj.setDefault() - obj.vxlanTunnelDestinationIPModeUnicastArpSuppressionCacheSlice = append(obj.vxlanTunnelDestinationIPModeUnicastArpSuppressionCacheSlice, newLibObj) - return newLibObj -} - -func (obj *vxlanV4TunnelDestinationIPModeUnicastVtepVxlanTunnelDestinationIPModeUnicastArpSuppressionCacheIter) Append(items ...VxlanTunnelDestinationIPModeUnicastArpSuppressionCache) VxlanV4TunnelDestinationIPModeUnicastVtepVxlanTunnelDestinationIPModeUnicastArpSuppressionCacheIter { - for _, item := range items { - newObj := item.Msg() - *obj.fieldPtr = append(*obj.fieldPtr, newObj) - obj.vxlanTunnelDestinationIPModeUnicastArpSuppressionCacheSlice = append(obj.vxlanTunnelDestinationIPModeUnicastArpSuppressionCacheSlice, item) - } - return obj -} + if obj.obj.Label != nil { -func (obj *vxlanV4TunnelDestinationIPModeUnicastVtepVxlanTunnelDestinationIPModeUnicastArpSuppressionCacheIter) Set(index int, newObj VxlanTunnelDestinationIPModeUnicastArpSuppressionCache) VxlanV4TunnelDestinationIPModeUnicastVtepVxlanTunnelDestinationIPModeUnicastArpSuppressionCacheIter { - (*obj.fieldPtr)[index] = newObj.Msg() - obj.vxlanTunnelDestinationIPModeUnicastArpSuppressionCacheSlice[index] = newObj - return obj -} -func (obj *vxlanV4TunnelDestinationIPModeUnicastVtepVxlanTunnelDestinationIPModeUnicastArpSuppressionCacheIter) Clear() VxlanV4TunnelDestinationIPModeUnicastVtepVxlanTunnelDestinationIPModeUnicastArpSuppressionCacheIter { - if len(*obj.fieldPtr) > 0 { - *obj.fieldPtr = []*otg.VxlanTunnelDestinationIPModeUnicastArpSuppressionCache{} - obj.vxlanTunnelDestinationIPModeUnicastArpSuppressionCacheSlice = []VxlanTunnelDestinationIPModeUnicastArpSuppressionCache{} - } - return obj -} -func (obj *vxlanV4TunnelDestinationIPModeUnicastVtepVxlanTunnelDestinationIPModeUnicastArpSuppressionCacheIter) clearHolderSlice() VxlanV4TunnelDestinationIPModeUnicastVtepVxlanTunnelDestinationIPModeUnicastArpSuppressionCacheIter { - if len(obj.vxlanTunnelDestinationIPModeUnicastArpSuppressionCacheSlice) > 0 { - obj.vxlanTunnelDestinationIPModeUnicastArpSuppressionCacheSlice = []VxlanTunnelDestinationIPModeUnicastArpSuppressionCache{} - } - return obj -} -func (obj *vxlanV4TunnelDestinationIPModeUnicastVtepVxlanTunnelDestinationIPModeUnicastArpSuppressionCacheIter) appendHolderSlice(item VxlanTunnelDestinationIPModeUnicastArpSuppressionCache) VxlanV4TunnelDestinationIPModeUnicastVtepVxlanTunnelDestinationIPModeUnicastArpSuppressionCacheIter { - obj.vxlanTunnelDestinationIPModeUnicastArpSuppressionCacheSlice = append(obj.vxlanTunnelDestinationIPModeUnicastArpSuppressionCacheSlice, item) - return obj -} + if *obj.obj.Label > 1048575 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("0 <= BgpSrteSegmentATypeSubTlv.Label <= 1048575 but Got %d", *obj.obj.Label)) + } -func (obj *vxlanV4TunnelDestinationIPModeUnicastVtep) validateObj(vObj *validation, set_default bool) { - if set_default { - obj.setDefault() } - if obj.obj.RemoteVtepAddress != nil { + if obj.obj.Tc != nil { - err := obj.validateIpv4(obj.RemoteVtepAddress()) - if err != nil { - vObj.validationErrors = append(vObj.validationErrors, fmt.Sprintf("%s %s", err.Error(), "on VxlanV4TunnelDestinationIPModeUnicastVtep.RemoteVtepAddress")) + if *obj.obj.Tc > 7 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("0 <= BgpSrteSegmentATypeSubTlv.Tc <= 7 but Got %d", *obj.obj.Tc)) } } - if len(obj.obj.ArpSuppressionCache) != 0 { + if obj.obj.Ttl != nil { - if set_default { - obj.ArpSuppressionCache().clearHolderSlice() - for _, item := range obj.obj.ArpSuppressionCache { - obj.ArpSuppressionCache().appendHolderSlice(&vxlanTunnelDestinationIPModeUnicastArpSuppressionCache{obj: item}) - } - } - for _, item := range obj.ArpSuppressionCache().Items() { - item.validateObj(vObj, set_default) + if *obj.obj.Ttl > 225 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("0 <= BgpSrteSegmentATypeSubTlv.Ttl <= 225 but Got %d", *obj.obj.Ttl)) } } } -func (obj *vxlanV4TunnelDestinationIPModeUnicastVtep) setDefault() { +func (obj *bgpSrteSegmentATypeSubTlv) setDefault() { } -// ***** VxlanV6TunnelDestinationIPModeUnicastVtep ***** -type vxlanV6TunnelDestinationIPModeUnicastVtep struct { +// ***** BgpSrteSegmentBTypeSubTlv ***** +type bgpSrteSegmentBTypeSubTlv struct { validation - obj *otg.VxlanV6TunnelDestinationIPModeUnicastVtep - arpSuppressionCacheHolder VxlanV6TunnelDestinationIPModeUnicastVtepVxlanTunnelDestinationIPModeUnicastArpSuppressionCacheIter + obj *otg.BgpSrteSegmentBTypeSubTlv + srv6SidEndpointBehaviorHolder BgpSrteSRv6SIDEndpointBehaviorAndStructure } -func NewVxlanV6TunnelDestinationIPModeUnicastVtep() VxlanV6TunnelDestinationIPModeUnicastVtep { - obj := vxlanV6TunnelDestinationIPModeUnicastVtep{obj: &otg.VxlanV6TunnelDestinationIPModeUnicastVtep{}} +func NewBgpSrteSegmentBTypeSubTlv() BgpSrteSegmentBTypeSubTlv { + obj := bgpSrteSegmentBTypeSubTlv{obj: &otg.BgpSrteSegmentBTypeSubTlv{}} obj.setDefault() return &obj } -func (obj *vxlanV6TunnelDestinationIPModeUnicastVtep) Msg() *otg.VxlanV6TunnelDestinationIPModeUnicastVtep { +func (obj *bgpSrteSegmentBTypeSubTlv) Msg() *otg.BgpSrteSegmentBTypeSubTlv { return obj.obj } -func (obj *vxlanV6TunnelDestinationIPModeUnicastVtep) SetMsg(msg *otg.VxlanV6TunnelDestinationIPModeUnicastVtep) VxlanV6TunnelDestinationIPModeUnicastVtep { +func (obj *bgpSrteSegmentBTypeSubTlv) SetMsg(msg *otg.BgpSrteSegmentBTypeSubTlv) BgpSrteSegmentBTypeSubTlv { obj.setNil() proto.Merge(obj.obj, msg) return obj } -func (obj *vxlanV6TunnelDestinationIPModeUnicastVtep) ToProto() (*otg.VxlanV6TunnelDestinationIPModeUnicastVtep, error) { +func (obj *bgpSrteSegmentBTypeSubTlv) ToProto() (*otg.BgpSrteSegmentBTypeSubTlv, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -281049,7 +326440,7 @@ func (obj *vxlanV6TunnelDestinationIPModeUnicastVtep) ToProto() (*otg.VxlanV6Tun return obj.Msg(), nil } -func (obj *vxlanV6TunnelDestinationIPModeUnicastVtep) FromProto(msg *otg.VxlanV6TunnelDestinationIPModeUnicastVtep) (VxlanV6TunnelDestinationIPModeUnicastVtep, error) { +func (obj *bgpSrteSegmentBTypeSubTlv) FromProto(msg *otg.BgpSrteSegmentBTypeSubTlv) (BgpSrteSegmentBTypeSubTlv, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -281058,7 +326449,7 @@ func (obj *vxlanV6TunnelDestinationIPModeUnicastVtep) FromProto(msg *otg.VxlanV6 return newObj, nil } -func (obj *vxlanV6TunnelDestinationIPModeUnicastVtep) ToPbText() (string, error) { +func (obj *bgpSrteSegmentBTypeSubTlv) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -281070,7 +326461,7 @@ func (obj *vxlanV6TunnelDestinationIPModeUnicastVtep) ToPbText() (string, error) return string(protoMarshal), nil } -func (obj *vxlanV6TunnelDestinationIPModeUnicastVtep) FromPbText(value string) error { +func (obj *bgpSrteSegmentBTypeSubTlv) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj @@ -281083,7 +326474,7 @@ func (obj *vxlanV6TunnelDestinationIPModeUnicastVtep) FromPbText(value string) e return retObj } -func (obj *vxlanV6TunnelDestinationIPModeUnicastVtep) ToYaml() (string, error) { +func (obj *bgpSrteSegmentBTypeSubTlv) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -281104,7 +326495,7 @@ func (obj *vxlanV6TunnelDestinationIPModeUnicastVtep) ToYaml() (string, error) { return string(data), nil } -func (obj *vxlanV6TunnelDestinationIPModeUnicastVtep) FromYaml(value string) error { +func (obj *bgpSrteSegmentBTypeSubTlv) FromYaml(value string) error { if value == "" { value = "{}" } @@ -281129,7 +326520,7 @@ func (obj *vxlanV6TunnelDestinationIPModeUnicastVtep) FromYaml(value string) err return nil } -func (obj *vxlanV6TunnelDestinationIPModeUnicastVtep) ToJson() (string, error) { +func (obj *bgpSrteSegmentBTypeSubTlv) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -281147,7 +326538,7 @@ func (obj *vxlanV6TunnelDestinationIPModeUnicastVtep) ToJson() (string, error) { return string(data), nil } -func (obj *vxlanV6TunnelDestinationIPModeUnicastVtep) FromJson(value string) error { +func (obj *bgpSrteSegmentBTypeSubTlv) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -281168,19 +326559,19 @@ func (obj *vxlanV6TunnelDestinationIPModeUnicastVtep) FromJson(value string) err return nil } -func (obj *vxlanV6TunnelDestinationIPModeUnicastVtep) validateToAndFrom() error { +func (obj *bgpSrteSegmentBTypeSubTlv) validateToAndFrom() error { // emptyVars() obj.validateObj(&obj.validation, true) return obj.validationResult() } -func (obj *vxlanV6TunnelDestinationIPModeUnicastVtep) Validate() error { +func (obj *bgpSrteSegmentBTypeSubTlv) Validate() error { // emptyVars() obj.validateObj(&obj.validation, false) return obj.validationResult() } -func (obj *vxlanV6TunnelDestinationIPModeUnicastVtep) String() string { +func (obj *bgpSrteSegmentBTypeSubTlv) String() string { str, err := obj.ToYaml() if err != nil { return err.Error() @@ -281188,12 +326579,12 @@ func (obj *vxlanV6TunnelDestinationIPModeUnicastVtep) String() string { return str } -func (obj *vxlanV6TunnelDestinationIPModeUnicastVtep) Clone() (VxlanV6TunnelDestinationIPModeUnicastVtep, error) { +func (obj *bgpSrteSegmentBTypeSubTlv) Clone() (BgpSrteSegmentBTypeSubTlv, error) { vErr := obj.Validate() if vErr != nil { return nil, vErr } - newObj := NewVxlanV6TunnelDestinationIPModeUnicastVtep() + newObj := NewBgpSrteSegmentBTypeSubTlv() data, err := proto.Marshal(obj.Msg()) if err != nil { return nil, err @@ -281205,224 +326596,196 @@ func (obj *vxlanV6TunnelDestinationIPModeUnicastVtep) Clone() (VxlanV6TunnelDest return newObj, nil } -func (obj *vxlanV6TunnelDestinationIPModeUnicastVtep) setNil() { - obj.arpSuppressionCacheHolder = nil +func (obj *bgpSrteSegmentBTypeSubTlv) setNil() { + obj.srv6SidEndpointBehaviorHolder = nil obj.validationErrors = nil obj.warnings = nil obj.constraints = make(map[string]map[string]Constraints) } -// VxlanV6TunnelDestinationIPModeUnicastVtep is vTEP (VXLAN Tunnel End Point (VTEP)) parameters -type VxlanV6TunnelDestinationIPModeUnicastVtep interface { +// BgpSrteSegmentBTypeSubTlv is type B: SID only, in the form of IPv6 address. +type BgpSrteSegmentBTypeSubTlv interface { Validation - // Msg marshals VxlanV6TunnelDestinationIPModeUnicastVtep to protobuf object *otg.VxlanV6TunnelDestinationIPModeUnicastVtep + // Msg marshals BgpSrteSegmentBTypeSubTlv to protobuf object *otg.BgpSrteSegmentBTypeSubTlv // and doesn't set defaults - Msg() *otg.VxlanV6TunnelDestinationIPModeUnicastVtep - // SetMsg unmarshals VxlanV6TunnelDestinationIPModeUnicastVtep from protobuf object *otg.VxlanV6TunnelDestinationIPModeUnicastVtep + Msg() *otg.BgpSrteSegmentBTypeSubTlv + // SetMsg unmarshals BgpSrteSegmentBTypeSubTlv from protobuf object *otg.BgpSrteSegmentBTypeSubTlv // and doesn't set defaults - SetMsg(*otg.VxlanV6TunnelDestinationIPModeUnicastVtep) VxlanV6TunnelDestinationIPModeUnicastVtep - // ToProto marshals VxlanV6TunnelDestinationIPModeUnicastVtep to protobuf object *otg.VxlanV6TunnelDestinationIPModeUnicastVtep - ToProto() (*otg.VxlanV6TunnelDestinationIPModeUnicastVtep, error) - // ToPbText marshals VxlanV6TunnelDestinationIPModeUnicastVtep to protobuf text + SetMsg(*otg.BgpSrteSegmentBTypeSubTlv) BgpSrteSegmentBTypeSubTlv + // ToProto marshals BgpSrteSegmentBTypeSubTlv to protobuf object *otg.BgpSrteSegmentBTypeSubTlv + ToProto() (*otg.BgpSrteSegmentBTypeSubTlv, error) + // ToPbText marshals BgpSrteSegmentBTypeSubTlv to protobuf text ToPbText() (string, error) - // ToYaml marshals VxlanV6TunnelDestinationIPModeUnicastVtep to YAML text + // ToYaml marshals BgpSrteSegmentBTypeSubTlv to YAML text ToYaml() (string, error) - // ToJson marshals VxlanV6TunnelDestinationIPModeUnicastVtep to JSON text - ToJson() (string, error) - // FromProto unmarshals VxlanV6TunnelDestinationIPModeUnicastVtep from protobuf object *otg.VxlanV6TunnelDestinationIPModeUnicastVtep - FromProto(msg *otg.VxlanV6TunnelDestinationIPModeUnicastVtep) (VxlanV6TunnelDestinationIPModeUnicastVtep, error) - // FromPbText unmarshals VxlanV6TunnelDestinationIPModeUnicastVtep from protobuf text + // ToJson marshals BgpSrteSegmentBTypeSubTlv to JSON text + ToJson() (string, error) + // FromProto unmarshals BgpSrteSegmentBTypeSubTlv from protobuf object *otg.BgpSrteSegmentBTypeSubTlv + FromProto(msg *otg.BgpSrteSegmentBTypeSubTlv) (BgpSrteSegmentBTypeSubTlv, error) + // FromPbText unmarshals BgpSrteSegmentBTypeSubTlv from protobuf text FromPbText(value string) error - // FromYaml unmarshals VxlanV6TunnelDestinationIPModeUnicastVtep from YAML text + // FromYaml unmarshals BgpSrteSegmentBTypeSubTlv from YAML text FromYaml(value string) error - // FromJson unmarshals VxlanV6TunnelDestinationIPModeUnicastVtep from JSON text + // FromJson unmarshals BgpSrteSegmentBTypeSubTlv from JSON text FromJson(value string) error - // Validate validates VxlanV6TunnelDestinationIPModeUnicastVtep + // Validate validates BgpSrteSegmentBTypeSubTlv Validate() error // A stringer function String() string // Clones the object - Clone() (VxlanV6TunnelDestinationIPModeUnicastVtep, error) + Clone() (BgpSrteSegmentBTypeSubTlv, error) validateToAndFrom() error validateObj(vObj *validation, set_default bool) setDefault() - // RemoteVtepAddress returns string, set in VxlanV6TunnelDestinationIPModeUnicastVtep. - RemoteVtepAddress() string - // SetRemoteVtepAddress assigns string provided by user to VxlanV6TunnelDestinationIPModeUnicastVtep - SetRemoteVtepAddress(value string) VxlanV6TunnelDestinationIPModeUnicastVtep - // HasRemoteVtepAddress checks if RemoteVtepAddress has been set in VxlanV6TunnelDestinationIPModeUnicastVtep - HasRemoteVtepAddress() bool - // ArpSuppressionCache returns VxlanV6TunnelDestinationIPModeUnicastVtepVxlanTunnelDestinationIPModeUnicastArpSuppressionCacheIterIter, set in VxlanV6TunnelDestinationIPModeUnicastVtep - ArpSuppressionCache() VxlanV6TunnelDestinationIPModeUnicastVtepVxlanTunnelDestinationIPModeUnicastArpSuppressionCacheIter + // Flags returns string, set in BgpSrteSegmentBTypeSubTlv. + Flags() string + // SetFlags assigns string provided by user to BgpSrteSegmentBTypeSubTlv + SetFlags(value string) BgpSrteSegmentBTypeSubTlv + // HasFlags checks if Flags has been set in BgpSrteSegmentBTypeSubTlv + HasFlags() bool + // Srv6Sid returns string, set in BgpSrteSegmentBTypeSubTlv. + Srv6Sid() string + // SetSrv6Sid assigns string provided by user to BgpSrteSegmentBTypeSubTlv + SetSrv6Sid(value string) BgpSrteSegmentBTypeSubTlv + // Srv6SidEndpointBehavior returns BgpSrteSRv6SIDEndpointBehaviorAndStructure, set in BgpSrteSegmentBTypeSubTlv. + // BgpSrteSRv6SIDEndpointBehaviorAndStructure is configuration for SRv6 Endpoint Behavior and SID Structure. Its optional. Summation of lengths for Locator Block, Locator Node, Function, and Argument MUST be less than or equal to 128. + Srv6SidEndpointBehavior() BgpSrteSRv6SIDEndpointBehaviorAndStructure + // SetSrv6SidEndpointBehavior assigns BgpSrteSRv6SIDEndpointBehaviorAndStructure provided by user to BgpSrteSegmentBTypeSubTlv. + // BgpSrteSRv6SIDEndpointBehaviorAndStructure is configuration for SRv6 Endpoint Behavior and SID Structure. Its optional. Summation of lengths for Locator Block, Locator Node, Function, and Argument MUST be less than or equal to 128. + SetSrv6SidEndpointBehavior(value BgpSrteSRv6SIDEndpointBehaviorAndStructure) BgpSrteSegmentBTypeSubTlv + // HasSrv6SidEndpointBehavior checks if Srv6SidEndpointBehavior has been set in BgpSrteSegmentBTypeSubTlv + HasSrv6SidEndpointBehavior() bool setNil() } -// Remote VXLAN Tunnel End Point address -// RemoteVtepAddress returns a string -func (obj *vxlanV6TunnelDestinationIPModeUnicastVtep) RemoteVtepAddress() string { +// One octet bitmap for flags including V-Flag, A-Flag, S-Flag, B-Flag etc. as defined in https://datatracker.ietf.org/doc/html/draft-ietf-idr-segment-routing-te-policy-13#section-2.4.4.2.12 +// Flags returns a string +func (obj *bgpSrteSegmentBTypeSubTlv) Flags() string { - return *obj.obj.RemoteVtepAddress + return *obj.obj.Flags } -// Remote VXLAN Tunnel End Point address -// RemoteVtepAddress returns a string -func (obj *vxlanV6TunnelDestinationIPModeUnicastVtep) HasRemoteVtepAddress() bool { - return obj.obj.RemoteVtepAddress != nil +// One octet bitmap for flags including V-Flag, A-Flag, S-Flag, B-Flag etc. as defined in https://datatracker.ietf.org/doc/html/draft-ietf-idr-segment-routing-te-policy-13#section-2.4.4.2.12 +// Flags returns a string +func (obj *bgpSrteSegmentBTypeSubTlv) HasFlags() bool { + return obj.obj.Flags != nil } -// Remote VXLAN Tunnel End Point address -// SetRemoteVtepAddress sets the string value in the VxlanV6TunnelDestinationIPModeUnicastVtep object -func (obj *vxlanV6TunnelDestinationIPModeUnicastVtep) SetRemoteVtepAddress(value string) VxlanV6TunnelDestinationIPModeUnicastVtep { +// One octet bitmap for flags including V-Flag, A-Flag, S-Flag, B-Flag etc. as defined in https://datatracker.ietf.org/doc/html/draft-ietf-idr-segment-routing-te-policy-13#section-2.4.4.2.12 +// SetFlags sets the string value in the BgpSrteSegmentBTypeSubTlv object +func (obj *bgpSrteSegmentBTypeSubTlv) SetFlags(value string) BgpSrteSegmentBTypeSubTlv { - obj.obj.RemoteVtepAddress = &value + obj.obj.Flags = &value return obj } -// Each VTEP maintains an ARP suppression cache table for known IP hosts and their associated MAC addresses in the VNI segment. When an end host in the VNI sends an ARP request for another end-host IP address, its local VTEP intercepts the ARP request and checks for the ARP-resolved IP address in its ARP suppression cache table. If it finds a match, the local VTEP sends an ARP response on behalf of the remote end host. -// ArpSuppressionCache returns a []VxlanTunnelDestinationIPModeUnicastArpSuppressionCache -func (obj *vxlanV6TunnelDestinationIPModeUnicastVtep) ArpSuppressionCache() VxlanV6TunnelDestinationIPModeUnicastVtepVxlanTunnelDestinationIPModeUnicastArpSuppressionCacheIter { - if len(obj.obj.ArpSuppressionCache) == 0 { - obj.obj.ArpSuppressionCache = []*otg.VxlanTunnelDestinationIPModeUnicastArpSuppressionCache{} - } - if obj.arpSuppressionCacheHolder == nil { - obj.arpSuppressionCacheHolder = newVxlanV6TunnelDestinationIPModeUnicastVtepVxlanTunnelDestinationIPModeUnicastArpSuppressionCacheIter(&obj.obj.ArpSuppressionCache).setMsg(obj) - } - return obj.arpSuppressionCacheHolder -} +// SRv6 SID. +// Srv6Sid returns a string +func (obj *bgpSrteSegmentBTypeSubTlv) Srv6Sid() string { -type vxlanV6TunnelDestinationIPModeUnicastVtepVxlanTunnelDestinationIPModeUnicastArpSuppressionCacheIter struct { - obj *vxlanV6TunnelDestinationIPModeUnicastVtep - vxlanTunnelDestinationIPModeUnicastArpSuppressionCacheSlice []VxlanTunnelDestinationIPModeUnicastArpSuppressionCache - fieldPtr *[]*otg.VxlanTunnelDestinationIPModeUnicastArpSuppressionCache -} + return *obj.obj.Srv6Sid -func newVxlanV6TunnelDestinationIPModeUnicastVtepVxlanTunnelDestinationIPModeUnicastArpSuppressionCacheIter(ptr *[]*otg.VxlanTunnelDestinationIPModeUnicastArpSuppressionCache) VxlanV6TunnelDestinationIPModeUnicastVtepVxlanTunnelDestinationIPModeUnicastArpSuppressionCacheIter { - return &vxlanV6TunnelDestinationIPModeUnicastVtepVxlanTunnelDestinationIPModeUnicastArpSuppressionCacheIter{fieldPtr: ptr} } -type VxlanV6TunnelDestinationIPModeUnicastVtepVxlanTunnelDestinationIPModeUnicastArpSuppressionCacheIter interface { - setMsg(*vxlanV6TunnelDestinationIPModeUnicastVtep) VxlanV6TunnelDestinationIPModeUnicastVtepVxlanTunnelDestinationIPModeUnicastArpSuppressionCacheIter - Items() []VxlanTunnelDestinationIPModeUnicastArpSuppressionCache - Add() VxlanTunnelDestinationIPModeUnicastArpSuppressionCache - Append(items ...VxlanTunnelDestinationIPModeUnicastArpSuppressionCache) VxlanV6TunnelDestinationIPModeUnicastVtepVxlanTunnelDestinationIPModeUnicastArpSuppressionCacheIter - Set(index int, newObj VxlanTunnelDestinationIPModeUnicastArpSuppressionCache) VxlanV6TunnelDestinationIPModeUnicastVtepVxlanTunnelDestinationIPModeUnicastArpSuppressionCacheIter - Clear() VxlanV6TunnelDestinationIPModeUnicastVtepVxlanTunnelDestinationIPModeUnicastArpSuppressionCacheIter - clearHolderSlice() VxlanV6TunnelDestinationIPModeUnicastVtepVxlanTunnelDestinationIPModeUnicastArpSuppressionCacheIter - appendHolderSlice(item VxlanTunnelDestinationIPModeUnicastArpSuppressionCache) VxlanV6TunnelDestinationIPModeUnicastVtepVxlanTunnelDestinationIPModeUnicastArpSuppressionCacheIter -} +// SRv6 SID. +// SetSrv6Sid sets the string value in the BgpSrteSegmentBTypeSubTlv object +func (obj *bgpSrteSegmentBTypeSubTlv) SetSrv6Sid(value string) BgpSrteSegmentBTypeSubTlv { -func (obj *vxlanV6TunnelDestinationIPModeUnicastVtepVxlanTunnelDestinationIPModeUnicastArpSuppressionCacheIter) setMsg(msg *vxlanV6TunnelDestinationIPModeUnicastVtep) VxlanV6TunnelDestinationIPModeUnicastVtepVxlanTunnelDestinationIPModeUnicastArpSuppressionCacheIter { - obj.clearHolderSlice() - for _, val := range *obj.fieldPtr { - obj.appendHolderSlice(&vxlanTunnelDestinationIPModeUnicastArpSuppressionCache{obj: val}) - } - obj.obj = msg + obj.obj.Srv6Sid = &value return obj } -func (obj *vxlanV6TunnelDestinationIPModeUnicastVtepVxlanTunnelDestinationIPModeUnicastArpSuppressionCacheIter) Items() []VxlanTunnelDestinationIPModeUnicastArpSuppressionCache { - return obj.vxlanTunnelDestinationIPModeUnicastArpSuppressionCacheSlice +// Optional SRv6 Endpoint Behavior and SID Structure. +// Srv6SidEndpointBehavior returns a BgpSrteSRv6SIDEndpointBehaviorAndStructure +func (obj *bgpSrteSegmentBTypeSubTlv) Srv6SidEndpointBehavior() BgpSrteSRv6SIDEndpointBehaviorAndStructure { + if obj.obj.Srv6SidEndpointBehavior == nil { + obj.obj.Srv6SidEndpointBehavior = NewBgpSrteSRv6SIDEndpointBehaviorAndStructure().Msg() + } + if obj.srv6SidEndpointBehaviorHolder == nil { + obj.srv6SidEndpointBehaviorHolder = &bgpSrteSRv6SIDEndpointBehaviorAndStructure{obj: obj.obj.Srv6SidEndpointBehavior} + } + return obj.srv6SidEndpointBehaviorHolder } -func (obj *vxlanV6TunnelDestinationIPModeUnicastVtepVxlanTunnelDestinationIPModeUnicastArpSuppressionCacheIter) Add() VxlanTunnelDestinationIPModeUnicastArpSuppressionCache { - newObj := &otg.VxlanTunnelDestinationIPModeUnicastArpSuppressionCache{} - *obj.fieldPtr = append(*obj.fieldPtr, newObj) - newLibObj := &vxlanTunnelDestinationIPModeUnicastArpSuppressionCache{obj: newObj} - newLibObj.setDefault() - obj.vxlanTunnelDestinationIPModeUnicastArpSuppressionCacheSlice = append(obj.vxlanTunnelDestinationIPModeUnicastArpSuppressionCacheSlice, newLibObj) - return newLibObj +// Optional SRv6 Endpoint Behavior and SID Structure. +// Srv6SidEndpointBehavior returns a BgpSrteSRv6SIDEndpointBehaviorAndStructure +func (obj *bgpSrteSegmentBTypeSubTlv) HasSrv6SidEndpointBehavior() bool { + return obj.obj.Srv6SidEndpointBehavior != nil } -func (obj *vxlanV6TunnelDestinationIPModeUnicastVtepVxlanTunnelDestinationIPModeUnicastArpSuppressionCacheIter) Append(items ...VxlanTunnelDestinationIPModeUnicastArpSuppressionCache) VxlanV6TunnelDestinationIPModeUnicastVtepVxlanTunnelDestinationIPModeUnicastArpSuppressionCacheIter { - for _, item := range items { - newObj := item.Msg() - *obj.fieldPtr = append(*obj.fieldPtr, newObj) - obj.vxlanTunnelDestinationIPModeUnicastArpSuppressionCacheSlice = append(obj.vxlanTunnelDestinationIPModeUnicastArpSuppressionCacheSlice, item) - } - return obj -} +// Optional SRv6 Endpoint Behavior and SID Structure. +// SetSrv6SidEndpointBehavior sets the BgpSrteSRv6SIDEndpointBehaviorAndStructure value in the BgpSrteSegmentBTypeSubTlv object +func (obj *bgpSrteSegmentBTypeSubTlv) SetSrv6SidEndpointBehavior(value BgpSrteSRv6SIDEndpointBehaviorAndStructure) BgpSrteSegmentBTypeSubTlv { + + obj.srv6SidEndpointBehaviorHolder = nil + obj.obj.Srv6SidEndpointBehavior = value.Msg() -func (obj *vxlanV6TunnelDestinationIPModeUnicastVtepVxlanTunnelDestinationIPModeUnicastArpSuppressionCacheIter) Set(index int, newObj VxlanTunnelDestinationIPModeUnicastArpSuppressionCache) VxlanV6TunnelDestinationIPModeUnicastVtepVxlanTunnelDestinationIPModeUnicastArpSuppressionCacheIter { - (*obj.fieldPtr)[index] = newObj.Msg() - obj.vxlanTunnelDestinationIPModeUnicastArpSuppressionCacheSlice[index] = newObj - return obj -} -func (obj *vxlanV6TunnelDestinationIPModeUnicastVtepVxlanTunnelDestinationIPModeUnicastArpSuppressionCacheIter) Clear() VxlanV6TunnelDestinationIPModeUnicastVtepVxlanTunnelDestinationIPModeUnicastArpSuppressionCacheIter { - if len(*obj.fieldPtr) > 0 { - *obj.fieldPtr = []*otg.VxlanTunnelDestinationIPModeUnicastArpSuppressionCache{} - obj.vxlanTunnelDestinationIPModeUnicastArpSuppressionCacheSlice = []VxlanTunnelDestinationIPModeUnicastArpSuppressionCache{} - } - return obj -} -func (obj *vxlanV6TunnelDestinationIPModeUnicastVtepVxlanTunnelDestinationIPModeUnicastArpSuppressionCacheIter) clearHolderSlice() VxlanV6TunnelDestinationIPModeUnicastVtepVxlanTunnelDestinationIPModeUnicastArpSuppressionCacheIter { - if len(obj.vxlanTunnelDestinationIPModeUnicastArpSuppressionCacheSlice) > 0 { - obj.vxlanTunnelDestinationIPModeUnicastArpSuppressionCacheSlice = []VxlanTunnelDestinationIPModeUnicastArpSuppressionCache{} - } - return obj -} -func (obj *vxlanV6TunnelDestinationIPModeUnicastVtepVxlanTunnelDestinationIPModeUnicastArpSuppressionCacheIter) appendHolderSlice(item VxlanTunnelDestinationIPModeUnicastArpSuppressionCache) VxlanV6TunnelDestinationIPModeUnicastVtepVxlanTunnelDestinationIPModeUnicastArpSuppressionCacheIter { - obj.vxlanTunnelDestinationIPModeUnicastArpSuppressionCacheSlice = append(obj.vxlanTunnelDestinationIPModeUnicastArpSuppressionCacheSlice, item) return obj } -func (obj *vxlanV6TunnelDestinationIPModeUnicastVtep) validateObj(vObj *validation, set_default bool) { +func (obj *bgpSrteSegmentBTypeSubTlv) validateObj(vObj *validation, set_default bool) { if set_default { obj.setDefault() } - if obj.obj.RemoteVtepAddress != nil { + if obj.obj.Flags != nil { - err := obj.validateIpv6(obj.RemoteVtepAddress()) + err := obj.validateHex(obj.Flags()) if err != nil { - vObj.validationErrors = append(vObj.validationErrors, fmt.Sprintf("%s %s", err.Error(), "on VxlanV6TunnelDestinationIPModeUnicastVtep.RemoteVtepAddress")) + vObj.validationErrors = append(vObj.validationErrors, fmt.Sprintf("%s %s", err.Error(), "on BgpSrteSegmentBTypeSubTlv.Flags")) } } - if len(obj.obj.ArpSuppressionCache) != 0 { + // Srv6Sid is required + if obj.obj.Srv6Sid == nil { + vObj.validationErrors = append(vObj.validationErrors, "Srv6Sid is required field on interface BgpSrteSegmentBTypeSubTlv") + } + if obj.obj.Srv6Sid != nil { - if set_default { - obj.ArpSuppressionCache().clearHolderSlice() - for _, item := range obj.obj.ArpSuppressionCache { - obj.ArpSuppressionCache().appendHolderSlice(&vxlanTunnelDestinationIPModeUnicastArpSuppressionCache{obj: item}) - } - } - for _, item := range obj.ArpSuppressionCache().Items() { - item.validateObj(vObj, set_default) + err := obj.validateIpv6(obj.Srv6Sid()) + if err != nil { + vObj.validationErrors = append(vObj.validationErrors, fmt.Sprintf("%s %s", err.Error(), "on BgpSrteSegmentBTypeSubTlv.Srv6Sid")) } } + if obj.obj.Srv6SidEndpointBehavior != nil { + + obj.Srv6SidEndpointBehavior().validateObj(vObj, set_default) + } + } -func (obj *vxlanV6TunnelDestinationIPModeUnicastVtep) setDefault() { +func (obj *bgpSrteSegmentBTypeSubTlv) setDefault() { } -// ***** RsvpResourceAffinities ***** -type rsvpResourceAffinities struct { +// ***** BgpSrteSegmentCTypeSubTlv ***** +type bgpSrteSegmentCTypeSubTlv struct { validation - obj *otg.RsvpResourceAffinities + obj *otg.BgpSrteSegmentCTypeSubTlv + srMplsSidHolder BgpSrteSrMplsSid } -func NewRsvpResourceAffinities() RsvpResourceAffinities { - obj := rsvpResourceAffinities{obj: &otg.RsvpResourceAffinities{}} +func NewBgpSrteSegmentCTypeSubTlv() BgpSrteSegmentCTypeSubTlv { + obj := bgpSrteSegmentCTypeSubTlv{obj: &otg.BgpSrteSegmentCTypeSubTlv{}} obj.setDefault() return &obj } -func (obj *rsvpResourceAffinities) Msg() *otg.RsvpResourceAffinities { +func (obj *bgpSrteSegmentCTypeSubTlv) Msg() *otg.BgpSrteSegmentCTypeSubTlv { return obj.obj } -func (obj *rsvpResourceAffinities) SetMsg(msg *otg.RsvpResourceAffinities) RsvpResourceAffinities { - +func (obj *bgpSrteSegmentCTypeSubTlv) SetMsg(msg *otg.BgpSrteSegmentCTypeSubTlv) BgpSrteSegmentCTypeSubTlv { + obj.setNil() proto.Merge(obj.obj, msg) return obj } -func (obj *rsvpResourceAffinities) ToProto() (*otg.RsvpResourceAffinities, error) { +func (obj *bgpSrteSegmentCTypeSubTlv) ToProto() (*otg.BgpSrteSegmentCTypeSubTlv, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -281430,7 +326793,7 @@ func (obj *rsvpResourceAffinities) ToProto() (*otg.RsvpResourceAffinities, error return obj.Msg(), nil } -func (obj *rsvpResourceAffinities) FromProto(msg *otg.RsvpResourceAffinities) (RsvpResourceAffinities, error) { +func (obj *bgpSrteSegmentCTypeSubTlv) FromProto(msg *otg.BgpSrteSegmentCTypeSubTlv) (BgpSrteSegmentCTypeSubTlv, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -281439,7 +326802,7 @@ func (obj *rsvpResourceAffinities) FromProto(msg *otg.RsvpResourceAffinities) (R return newObj, nil } -func (obj *rsvpResourceAffinities) ToPbText() (string, error) { +func (obj *bgpSrteSegmentCTypeSubTlv) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -281451,12 +326814,12 @@ func (obj *rsvpResourceAffinities) ToPbText() (string, error) { return string(protoMarshal), nil } -func (obj *rsvpResourceAffinities) FromPbText(value string) error { +func (obj *bgpSrteSegmentCTypeSubTlv) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj } - + obj.setNil() vErr := obj.validateToAndFrom() if vErr != nil { return vErr @@ -281464,7 +326827,7 @@ func (obj *rsvpResourceAffinities) FromPbText(value string) error { return retObj } -func (obj *rsvpResourceAffinities) ToYaml() (string, error) { +func (obj *bgpSrteSegmentCTypeSubTlv) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -281485,7 +326848,7 @@ func (obj *rsvpResourceAffinities) ToYaml() (string, error) { return string(data), nil } -func (obj *rsvpResourceAffinities) FromYaml(value string) error { +func (obj *bgpSrteSegmentCTypeSubTlv) FromYaml(value string) error { if value == "" { value = "{}" } @@ -281502,7 +326865,7 @@ func (obj *rsvpResourceAffinities) FromYaml(value string) error { return fmt.Errorf("unmarshal error %s", strings.Replace( uError.Error(), "\u00a0", " ", -1)[7:]) } - + obj.setNil() vErr := obj.validateToAndFrom() if vErr != nil { return vErr @@ -281510,7 +326873,7 @@ func (obj *rsvpResourceAffinities) FromYaml(value string) error { return nil } -func (obj *rsvpResourceAffinities) ToJson() (string, error) { +func (obj *bgpSrteSegmentCTypeSubTlv) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -281528,7 +326891,7 @@ func (obj *rsvpResourceAffinities) ToJson() (string, error) { return string(data), nil } -func (obj *rsvpResourceAffinities) FromJson(value string) error { +func (obj *bgpSrteSegmentCTypeSubTlv) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -281541,7 +326904,7 @@ func (obj *rsvpResourceAffinities) FromJson(value string) error { return fmt.Errorf("unmarshal error %s", strings.Replace( uError.Error(), "\u00a0", " ", -1)[7:]) } - + obj.setNil() err := obj.validateToAndFrom() if err != nil { return err @@ -281549,19 +326912,19 @@ func (obj *rsvpResourceAffinities) FromJson(value string) error { return nil } -func (obj *rsvpResourceAffinities) validateToAndFrom() error { +func (obj *bgpSrteSegmentCTypeSubTlv) validateToAndFrom() error { // emptyVars() obj.validateObj(&obj.validation, true) return obj.validationResult() } -func (obj *rsvpResourceAffinities) Validate() error { +func (obj *bgpSrteSegmentCTypeSubTlv) Validate() error { // emptyVars() obj.validateObj(&obj.validation, false) return obj.validationResult() } -func (obj *rsvpResourceAffinities) String() string { +func (obj *bgpSrteSegmentCTypeSubTlv) String() string { str, err := obj.ToYaml() if err != nil { return err.Error() @@ -281569,12 +326932,12 @@ func (obj *rsvpResourceAffinities) String() string { return str } -func (obj *rsvpResourceAffinities) Clone() (RsvpResourceAffinities, error) { +func (obj *bgpSrteSegmentCTypeSubTlv) Clone() (BgpSrteSegmentCTypeSubTlv, error) { vErr := obj.Validate() if vErr != nil { return nil, vErr } - newObj := NewRsvpResourceAffinities() + newObj := NewBgpSrteSegmentCTypeSubTlv() data, err := proto.Marshal(obj.Msg()) if err != nil { return nil, err @@ -281586,207 +326949,237 @@ func (obj *rsvpResourceAffinities) Clone() (RsvpResourceAffinities, error) { return newObj, nil } -// RsvpResourceAffinities is this is an optional object. If included, the extended SESSION_ATTRIBUTE object is sent in the Path message containing -// the additional fields included in this object. This contains a set of three bitmaps using which further constraints can be -// set on the path calculated for the LSP based on the Admin Group settings in the IGP (e.g ISIS or OSPF interface). -type RsvpResourceAffinities interface { +func (obj *bgpSrteSegmentCTypeSubTlv) setNil() { + obj.srMplsSidHolder = nil + obj.validationErrors = nil + obj.warnings = nil + obj.constraints = make(map[string]map[string]Constraints) +} + +// BgpSrteSegmentCTypeSubTlv is type C: IPv4 Node Address with optional SID. +type BgpSrteSegmentCTypeSubTlv interface { Validation - // Msg marshals RsvpResourceAffinities to protobuf object *otg.RsvpResourceAffinities + // Msg marshals BgpSrteSegmentCTypeSubTlv to protobuf object *otg.BgpSrteSegmentCTypeSubTlv // and doesn't set defaults - Msg() *otg.RsvpResourceAffinities - // SetMsg unmarshals RsvpResourceAffinities from protobuf object *otg.RsvpResourceAffinities + Msg() *otg.BgpSrteSegmentCTypeSubTlv + // SetMsg unmarshals BgpSrteSegmentCTypeSubTlv from protobuf object *otg.BgpSrteSegmentCTypeSubTlv // and doesn't set defaults - SetMsg(*otg.RsvpResourceAffinities) RsvpResourceAffinities - // ToProto marshals RsvpResourceAffinities to protobuf object *otg.RsvpResourceAffinities - ToProto() (*otg.RsvpResourceAffinities, error) - // ToPbText marshals RsvpResourceAffinities to protobuf text + SetMsg(*otg.BgpSrteSegmentCTypeSubTlv) BgpSrteSegmentCTypeSubTlv + // ToProto marshals BgpSrteSegmentCTypeSubTlv to protobuf object *otg.BgpSrteSegmentCTypeSubTlv + ToProto() (*otg.BgpSrteSegmentCTypeSubTlv, error) + // ToPbText marshals BgpSrteSegmentCTypeSubTlv to protobuf text ToPbText() (string, error) - // ToYaml marshals RsvpResourceAffinities to YAML text + // ToYaml marshals BgpSrteSegmentCTypeSubTlv to YAML text ToYaml() (string, error) - // ToJson marshals RsvpResourceAffinities to JSON text + // ToJson marshals BgpSrteSegmentCTypeSubTlv to JSON text ToJson() (string, error) - // FromProto unmarshals RsvpResourceAffinities from protobuf object *otg.RsvpResourceAffinities - FromProto(msg *otg.RsvpResourceAffinities) (RsvpResourceAffinities, error) - // FromPbText unmarshals RsvpResourceAffinities from protobuf text + // FromProto unmarshals BgpSrteSegmentCTypeSubTlv from protobuf object *otg.BgpSrteSegmentCTypeSubTlv + FromProto(msg *otg.BgpSrteSegmentCTypeSubTlv) (BgpSrteSegmentCTypeSubTlv, error) + // FromPbText unmarshals BgpSrteSegmentCTypeSubTlv from protobuf text FromPbText(value string) error - // FromYaml unmarshals RsvpResourceAffinities from YAML text + // FromYaml unmarshals BgpSrteSegmentCTypeSubTlv from YAML text FromYaml(value string) error - // FromJson unmarshals RsvpResourceAffinities from JSON text + // FromJson unmarshals BgpSrteSegmentCTypeSubTlv from JSON text FromJson(value string) error - // Validate validates RsvpResourceAffinities + // Validate validates BgpSrteSegmentCTypeSubTlv Validate() error // A stringer function String() string // Clones the object - Clone() (RsvpResourceAffinities, error) + Clone() (BgpSrteSegmentCTypeSubTlv, error) validateToAndFrom() error validateObj(vObj *validation, set_default bool) setDefault() - // ExcludeAny returns string, set in RsvpResourceAffinities. - ExcludeAny() string - // SetExcludeAny assigns string provided by user to RsvpResourceAffinities - SetExcludeAny(value string) RsvpResourceAffinities - // HasExcludeAny checks if ExcludeAny has been set in RsvpResourceAffinities - HasExcludeAny() bool - // IncludeAny returns string, set in RsvpResourceAffinities. - IncludeAny() string - // SetIncludeAny assigns string provided by user to RsvpResourceAffinities - SetIncludeAny(value string) RsvpResourceAffinities - // HasIncludeAny checks if IncludeAny has been set in RsvpResourceAffinities - HasIncludeAny() bool - // IncludeAll returns string, set in RsvpResourceAffinities. - IncludeAll() string - // SetIncludeAll assigns string provided by user to RsvpResourceAffinities - SetIncludeAll(value string) RsvpResourceAffinities - // HasIncludeAll checks if IncludeAll has been set in RsvpResourceAffinities - HasIncludeAll() bool + // Flags returns string, set in BgpSrteSegmentCTypeSubTlv. + Flags() string + // SetFlags assigns string provided by user to BgpSrteSegmentCTypeSubTlv + SetFlags(value string) BgpSrteSegmentCTypeSubTlv + // HasFlags checks if Flags has been set in BgpSrteSegmentCTypeSubTlv + HasFlags() bool + // SrAlgorithm returns uint32, set in BgpSrteSegmentCTypeSubTlv. + SrAlgorithm() uint32 + // SetSrAlgorithm assigns uint32 provided by user to BgpSrteSegmentCTypeSubTlv + SetSrAlgorithm(value uint32) BgpSrteSegmentCTypeSubTlv + // HasSrAlgorithm checks if SrAlgorithm has been set in BgpSrteSegmentCTypeSubTlv + HasSrAlgorithm() bool + // Ipv4NodeAddress returns string, set in BgpSrteSegmentCTypeSubTlv. + Ipv4NodeAddress() string + // SetIpv4NodeAddress assigns string provided by user to BgpSrteSegmentCTypeSubTlv + SetIpv4NodeAddress(value string) BgpSrteSegmentCTypeSubTlv + // SrMplsSid returns BgpSrteSrMplsSid, set in BgpSrteSegmentCTypeSubTlv. + // BgpSrteSrMplsSid is configuration for SR-MPLS with Label, TC, Bottom-of-Stack and TTL. + SrMplsSid() BgpSrteSrMplsSid + // SetSrMplsSid assigns BgpSrteSrMplsSid provided by user to BgpSrteSegmentCTypeSubTlv. + // BgpSrteSrMplsSid is configuration for SR-MPLS with Label, TC, Bottom-of-Stack and TTL. + SetSrMplsSid(value BgpSrteSrMplsSid) BgpSrteSegmentCTypeSubTlv + // HasSrMplsSid checks if SrMplsSid has been set in BgpSrteSegmentCTypeSubTlv + HasSrMplsSid() bool + setNil() } -// A 32-bit vector representing a set of attribute filters associated with a tunnel any of which renders a link unacceptable. A null set (all bits set to zero) doesn't render the link unacceptable. The most significant byte in the hex-string is the farthest to the left in the byte sequence. Leading zero bytes in the configured value may be omitted for brevity. -// ExcludeAny returns a string -func (obj *rsvpResourceAffinities) ExcludeAny() string { +// One octet bitmap for flags including V-Flag, A-Flag, S-Flag, B-Flag etc. as defined in https://datatracker.ietf.org/doc/html/draft-ietf-idr-segment-routing-te-policy-13#section-2.4.4.2.12 +// Flags returns a string +func (obj *bgpSrteSegmentCTypeSubTlv) Flags() string { - return *obj.obj.ExcludeAny + return *obj.obj.Flags } -// A 32-bit vector representing a set of attribute filters associated with a tunnel any of which renders a link unacceptable. A null set (all bits set to zero) doesn't render the link unacceptable. The most significant byte in the hex-string is the farthest to the left in the byte sequence. Leading zero bytes in the configured value may be omitted for brevity. -// ExcludeAny returns a string -func (obj *rsvpResourceAffinities) HasExcludeAny() bool { - return obj.obj.ExcludeAny != nil +// One octet bitmap for flags including V-Flag, A-Flag, S-Flag, B-Flag etc. as defined in https://datatracker.ietf.org/doc/html/draft-ietf-idr-segment-routing-te-policy-13#section-2.4.4.2.12 +// Flags returns a string +func (obj *bgpSrteSegmentCTypeSubTlv) HasFlags() bool { + return obj.obj.Flags != nil } -// A 32-bit vector representing a set of attribute filters associated with a tunnel any of which renders a link unacceptable. A null set (all bits set to zero) doesn't render the link unacceptable. The most significant byte in the hex-string is the farthest to the left in the byte sequence. Leading zero bytes in the configured value may be omitted for brevity. -// SetExcludeAny sets the string value in the RsvpResourceAffinities object -func (obj *rsvpResourceAffinities) SetExcludeAny(value string) RsvpResourceAffinities { +// One octet bitmap for flags including V-Flag, A-Flag, S-Flag, B-Flag etc. as defined in https://datatracker.ietf.org/doc/html/draft-ietf-idr-segment-routing-te-policy-13#section-2.4.4.2.12 +// SetFlags sets the string value in the BgpSrteSegmentCTypeSubTlv object +func (obj *bgpSrteSegmentCTypeSubTlv) SetFlags(value string) BgpSrteSegmentCTypeSubTlv { - obj.obj.ExcludeAny = &value + obj.obj.Flags = &value return obj } -// A 32-bit vector representing a set of attribute filters associated with a tunnel any of which renders a link acceptable. A null set (all bits set to zero) automatically passes. The most significant byte in the hex-string is the farthest to the left in the byte sequence. Leading zero bytes in the configured value may be omitted for brevity. -// IncludeAny returns a string -func (obj *rsvpResourceAffinities) IncludeAny() string { +// SR Algorithm identifier when A-Flag in on. +// SrAlgorithm returns a uint32 +func (obj *bgpSrteSegmentCTypeSubTlv) SrAlgorithm() uint32 { - return *obj.obj.IncludeAny + return *obj.obj.SrAlgorithm } -// A 32-bit vector representing a set of attribute filters associated with a tunnel any of which renders a link acceptable. A null set (all bits set to zero) automatically passes. The most significant byte in the hex-string is the farthest to the left in the byte sequence. Leading zero bytes in the configured value may be omitted for brevity. -// IncludeAny returns a string -func (obj *rsvpResourceAffinities) HasIncludeAny() bool { - return obj.obj.IncludeAny != nil +// SR Algorithm identifier when A-Flag in on. +// SrAlgorithm returns a uint32 +func (obj *bgpSrteSegmentCTypeSubTlv) HasSrAlgorithm() bool { + return obj.obj.SrAlgorithm != nil } -// A 32-bit vector representing a set of attribute filters associated with a tunnel any of which renders a link acceptable. A null set (all bits set to zero) automatically passes. The most significant byte in the hex-string is the farthest to the left in the byte sequence. Leading zero bytes in the configured value may be omitted for brevity. -// SetIncludeAny sets the string value in the RsvpResourceAffinities object -func (obj *rsvpResourceAffinities) SetIncludeAny(value string) RsvpResourceAffinities { +// SR Algorithm identifier when A-Flag in on. +// SetSrAlgorithm sets the uint32 value in the BgpSrteSegmentCTypeSubTlv object +func (obj *bgpSrteSegmentCTypeSubTlv) SetSrAlgorithm(value uint32) BgpSrteSegmentCTypeSubTlv { - obj.obj.IncludeAny = &value + obj.obj.SrAlgorithm = &value return obj } -// A 32-bit vector representing a set of attribute filters associated with a tunnel all of which must be present for a link to be acceptable. A null set (all bits set to zero) automatically passes. The most significant byte in the hex-string is the farthest to the left in the byte sequence. Leading zero bytes in the configured value may be omitted for brevity. -// IncludeAll returns a string -func (obj *rsvpResourceAffinities) IncludeAll() string { +// IPv4 address representing a node. +// Ipv4NodeAddress returns a string +func (obj *bgpSrteSegmentCTypeSubTlv) Ipv4NodeAddress() string { - return *obj.obj.IncludeAll + return *obj.obj.Ipv4NodeAddress } -// A 32-bit vector representing a set of attribute filters associated with a tunnel all of which must be present for a link to be acceptable. A null set (all bits set to zero) automatically passes. The most significant byte in the hex-string is the farthest to the left in the byte sequence. Leading zero bytes in the configured value may be omitted for brevity. -// IncludeAll returns a string -func (obj *rsvpResourceAffinities) HasIncludeAll() bool { - return obj.obj.IncludeAll != nil +// IPv4 address representing a node. +// SetIpv4NodeAddress sets the string value in the BgpSrteSegmentCTypeSubTlv object +func (obj *bgpSrteSegmentCTypeSubTlv) SetIpv4NodeAddress(value string) BgpSrteSegmentCTypeSubTlv { + + obj.obj.Ipv4NodeAddress = &value + return obj } -// A 32-bit vector representing a set of attribute filters associated with a tunnel all of which must be present for a link to be acceptable. A null set (all bits set to zero) automatically passes. The most significant byte in the hex-string is the farthest to the left in the byte sequence. Leading zero bytes in the configured value may be omitted for brevity. -// SetIncludeAll sets the string value in the RsvpResourceAffinities object -func (obj *rsvpResourceAffinities) SetIncludeAll(value string) RsvpResourceAffinities { +// Optional SR-MPLS SID. +// SrMplsSid returns a BgpSrteSrMplsSid +func (obj *bgpSrteSegmentCTypeSubTlv) SrMplsSid() BgpSrteSrMplsSid { + if obj.obj.SrMplsSid == nil { + obj.obj.SrMplsSid = NewBgpSrteSrMplsSid().Msg() + } + if obj.srMplsSidHolder == nil { + obj.srMplsSidHolder = &bgpSrteSrMplsSid{obj: obj.obj.SrMplsSid} + } + return obj.srMplsSidHolder +} + +// Optional SR-MPLS SID. +// SrMplsSid returns a BgpSrteSrMplsSid +func (obj *bgpSrteSegmentCTypeSubTlv) HasSrMplsSid() bool { + return obj.obj.SrMplsSid != nil +} + +// Optional SR-MPLS SID. +// SetSrMplsSid sets the BgpSrteSrMplsSid value in the BgpSrteSegmentCTypeSubTlv object +func (obj *bgpSrteSegmentCTypeSubTlv) SetSrMplsSid(value BgpSrteSrMplsSid) BgpSrteSegmentCTypeSubTlv { + + obj.srMplsSidHolder = nil + obj.obj.SrMplsSid = value.Msg() - obj.obj.IncludeAll = &value return obj } -func (obj *rsvpResourceAffinities) validateObj(vObj *validation, set_default bool) { +func (obj *bgpSrteSegmentCTypeSubTlv) validateObj(vObj *validation, set_default bool) { if set_default { obj.setDefault() } - if obj.obj.ExcludeAny != nil { + if obj.obj.Flags != nil { - if len(*obj.obj.ExcludeAny) < 0 || len(*obj.obj.ExcludeAny) > 8 { - vObj.validationErrors = append( - vObj.validationErrors, - fmt.Sprintf( - "0 <= length of RsvpResourceAffinities.ExcludeAny <= 8 but Got %d", - len(*obj.obj.ExcludeAny))) + err := obj.validateHex(obj.Flags()) + if err != nil { + vObj.validationErrors = append(vObj.validationErrors, fmt.Sprintf("%s %s", err.Error(), "on BgpSrteSegmentCTypeSubTlv.Flags")) } } - if obj.obj.IncludeAny != nil { + if obj.obj.SrAlgorithm != nil { - if len(*obj.obj.IncludeAny) < 0 || len(*obj.obj.IncludeAny) > 8 { + if *obj.obj.SrAlgorithm > 255 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf( - "0 <= length of RsvpResourceAffinities.IncludeAny <= 8 but Got %d", - len(*obj.obj.IncludeAny))) + fmt.Sprintf("0 <= BgpSrteSegmentCTypeSubTlv.SrAlgorithm <= 255 but Got %d", *obj.obj.SrAlgorithm)) } } - if obj.obj.IncludeAll != nil { + // Ipv4NodeAddress is required + if obj.obj.Ipv4NodeAddress == nil { + vObj.validationErrors = append(vObj.validationErrors, "Ipv4NodeAddress is required field on interface BgpSrteSegmentCTypeSubTlv") + } + if obj.obj.Ipv4NodeAddress != nil { - if len(*obj.obj.IncludeAll) < 0 || len(*obj.obj.IncludeAll) > 8 { - vObj.validationErrors = append( - vObj.validationErrors, - fmt.Sprintf( - "0 <= length of RsvpResourceAffinities.IncludeAll <= 8 but Got %d", - len(*obj.obj.IncludeAll))) + err := obj.validateIpv4(obj.Ipv4NodeAddress()) + if err != nil { + vObj.validationErrors = append(vObj.validationErrors, fmt.Sprintf("%s %s", err.Error(), "on BgpSrteSegmentCTypeSubTlv.Ipv4NodeAddress")) } } -} + if obj.obj.SrMplsSid != nil { -func (obj *rsvpResourceAffinities) setDefault() { - if obj.obj.ExcludeAny == nil { - obj.SetExcludeAny("0") - } - if obj.obj.IncludeAny == nil { - obj.SetIncludeAny("0") + obj.SrMplsSid().validateObj(vObj, set_default) } - if obj.obj.IncludeAll == nil { - obj.SetIncludeAll("0") + +} + +func (obj *bgpSrteSegmentCTypeSubTlv) setDefault() { + if obj.obj.SrAlgorithm == nil { + obj.SetSrAlgorithm(0) } } -// ***** RsvpEroSubobject ***** -type rsvpEroSubobject struct { +// ***** BgpSrteSegmentDTypeSubTlv ***** +type bgpSrteSegmentDTypeSubTlv struct { validation - obj *otg.RsvpEroSubobject + obj *otg.BgpSrteSegmentDTypeSubTlv + srMplsSidHolder BgpSrteSrMplsSid } -func NewRsvpEroSubobject() RsvpEroSubobject { - obj := rsvpEroSubobject{obj: &otg.RsvpEroSubobject{}} +func NewBgpSrteSegmentDTypeSubTlv() BgpSrteSegmentDTypeSubTlv { + obj := bgpSrteSegmentDTypeSubTlv{obj: &otg.BgpSrteSegmentDTypeSubTlv{}} obj.setDefault() return &obj } -func (obj *rsvpEroSubobject) Msg() *otg.RsvpEroSubobject { +func (obj *bgpSrteSegmentDTypeSubTlv) Msg() *otg.BgpSrteSegmentDTypeSubTlv { return obj.obj } -func (obj *rsvpEroSubobject) SetMsg(msg *otg.RsvpEroSubobject) RsvpEroSubobject { - +func (obj *bgpSrteSegmentDTypeSubTlv) SetMsg(msg *otg.BgpSrteSegmentDTypeSubTlv) BgpSrteSegmentDTypeSubTlv { + obj.setNil() proto.Merge(obj.obj, msg) return obj } -func (obj *rsvpEroSubobject) ToProto() (*otg.RsvpEroSubobject, error) { +func (obj *bgpSrteSegmentDTypeSubTlv) ToProto() (*otg.BgpSrteSegmentDTypeSubTlv, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -281794,7 +327187,7 @@ func (obj *rsvpEroSubobject) ToProto() (*otg.RsvpEroSubobject, error) { return obj.Msg(), nil } -func (obj *rsvpEroSubobject) FromProto(msg *otg.RsvpEroSubobject) (RsvpEroSubobject, error) { +func (obj *bgpSrteSegmentDTypeSubTlv) FromProto(msg *otg.BgpSrteSegmentDTypeSubTlv) (BgpSrteSegmentDTypeSubTlv, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -281803,7 +327196,7 @@ func (obj *rsvpEroSubobject) FromProto(msg *otg.RsvpEroSubobject) (RsvpEroSubobj return newObj, nil } -func (obj *rsvpEroSubobject) ToPbText() (string, error) { +func (obj *bgpSrteSegmentDTypeSubTlv) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -281815,12 +327208,12 @@ func (obj *rsvpEroSubobject) ToPbText() (string, error) { return string(protoMarshal), nil } -func (obj *rsvpEroSubobject) FromPbText(value string) error { +func (obj *bgpSrteSegmentDTypeSubTlv) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj } - + obj.setNil() vErr := obj.validateToAndFrom() if vErr != nil { return vErr @@ -281828,7 +327221,7 @@ func (obj *rsvpEroSubobject) FromPbText(value string) error { return retObj } -func (obj *rsvpEroSubobject) ToYaml() (string, error) { +func (obj *bgpSrteSegmentDTypeSubTlv) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -281849,7 +327242,7 @@ func (obj *rsvpEroSubobject) ToYaml() (string, error) { return string(data), nil } -func (obj *rsvpEroSubobject) FromYaml(value string) error { +func (obj *bgpSrteSegmentDTypeSubTlv) FromYaml(value string) error { if value == "" { value = "{}" } @@ -281866,7 +327259,7 @@ func (obj *rsvpEroSubobject) FromYaml(value string) error { return fmt.Errorf("unmarshal error %s", strings.Replace( uError.Error(), "\u00a0", " ", -1)[7:]) } - + obj.setNil() vErr := obj.validateToAndFrom() if vErr != nil { return vErr @@ -281874,7 +327267,7 @@ func (obj *rsvpEroSubobject) FromYaml(value string) error { return nil } -func (obj *rsvpEroSubobject) ToJson() (string, error) { +func (obj *bgpSrteSegmentDTypeSubTlv) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -281892,7 +327285,7 @@ func (obj *rsvpEroSubobject) ToJson() (string, error) { return string(data), nil } -func (obj *rsvpEroSubobject) FromJson(value string) error { +func (obj *bgpSrteSegmentDTypeSubTlv) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -281905,7 +327298,7 @@ func (obj *rsvpEroSubobject) FromJson(value string) error { return fmt.Errorf("unmarshal error %s", strings.Replace( uError.Error(), "\u00a0", " ", -1)[7:]) } - + obj.setNil() err := obj.validateToAndFrom() if err != nil { return err @@ -281913,19 +327306,19 @@ func (obj *rsvpEroSubobject) FromJson(value string) error { return nil } -func (obj *rsvpEroSubobject) validateToAndFrom() error { +func (obj *bgpSrteSegmentDTypeSubTlv) validateToAndFrom() error { // emptyVars() obj.validateObj(&obj.validation, true) return obj.validationResult() } -func (obj *rsvpEroSubobject) Validate() error { +func (obj *bgpSrteSegmentDTypeSubTlv) Validate() error { // emptyVars() obj.validateObj(&obj.validation, false) return obj.validationResult() } -func (obj *rsvpEroSubobject) String() string { +func (obj *bgpSrteSegmentDTypeSubTlv) String() string { str, err := obj.ToYaml() if err != nil { return err.Error() @@ -281933,12 +327326,12 @@ func (obj *rsvpEroSubobject) String() string { return str } -func (obj *rsvpEroSubobject) Clone() (RsvpEroSubobject, error) { +func (obj *bgpSrteSegmentDTypeSubTlv) Clone() (BgpSrteSegmentDTypeSubTlv, error) { vErr := obj.Validate() if vErr != nil { return nil, vErr } - newObj := NewRsvpEroSubobject() + newObj := NewBgpSrteSegmentDTypeSubTlv() data, err := proto.Marshal(obj.Msg()) if err != nil { return nil, err @@ -281950,286 +327343,237 @@ func (obj *rsvpEroSubobject) Clone() (RsvpEroSubobject, error) { return newObj, nil } -// RsvpEroSubobject is configuration for the ERO sub-object. -type RsvpEroSubobject interface { +func (obj *bgpSrteSegmentDTypeSubTlv) setNil() { + obj.srMplsSidHolder = nil + obj.validationErrors = nil + obj.warnings = nil + obj.constraints = make(map[string]map[string]Constraints) +} + +// BgpSrteSegmentDTypeSubTlv is type D: IPv6 Node Address with optional SID for SR MPLS. +type BgpSrteSegmentDTypeSubTlv interface { Validation - // Msg marshals RsvpEroSubobject to protobuf object *otg.RsvpEroSubobject + // Msg marshals BgpSrteSegmentDTypeSubTlv to protobuf object *otg.BgpSrteSegmentDTypeSubTlv // and doesn't set defaults - Msg() *otg.RsvpEroSubobject - // SetMsg unmarshals RsvpEroSubobject from protobuf object *otg.RsvpEroSubobject + Msg() *otg.BgpSrteSegmentDTypeSubTlv + // SetMsg unmarshals BgpSrteSegmentDTypeSubTlv from protobuf object *otg.BgpSrteSegmentDTypeSubTlv // and doesn't set defaults - SetMsg(*otg.RsvpEroSubobject) RsvpEroSubobject - // ToProto marshals RsvpEroSubobject to protobuf object *otg.RsvpEroSubobject - ToProto() (*otg.RsvpEroSubobject, error) - // ToPbText marshals RsvpEroSubobject to protobuf text + SetMsg(*otg.BgpSrteSegmentDTypeSubTlv) BgpSrteSegmentDTypeSubTlv + // ToProto marshals BgpSrteSegmentDTypeSubTlv to protobuf object *otg.BgpSrteSegmentDTypeSubTlv + ToProto() (*otg.BgpSrteSegmentDTypeSubTlv, error) + // ToPbText marshals BgpSrteSegmentDTypeSubTlv to protobuf text ToPbText() (string, error) - // ToYaml marshals RsvpEroSubobject to YAML text + // ToYaml marshals BgpSrteSegmentDTypeSubTlv to YAML text ToYaml() (string, error) - // ToJson marshals RsvpEroSubobject to JSON text + // ToJson marshals BgpSrteSegmentDTypeSubTlv to JSON text ToJson() (string, error) - // FromProto unmarshals RsvpEroSubobject from protobuf object *otg.RsvpEroSubobject - FromProto(msg *otg.RsvpEroSubobject) (RsvpEroSubobject, error) - // FromPbText unmarshals RsvpEroSubobject from protobuf text + // FromProto unmarshals BgpSrteSegmentDTypeSubTlv from protobuf object *otg.BgpSrteSegmentDTypeSubTlv + FromProto(msg *otg.BgpSrteSegmentDTypeSubTlv) (BgpSrteSegmentDTypeSubTlv, error) + // FromPbText unmarshals BgpSrteSegmentDTypeSubTlv from protobuf text FromPbText(value string) error - // FromYaml unmarshals RsvpEroSubobject from YAML text + // FromYaml unmarshals BgpSrteSegmentDTypeSubTlv from YAML text FromYaml(value string) error - // FromJson unmarshals RsvpEroSubobject from JSON text + // FromJson unmarshals BgpSrteSegmentDTypeSubTlv from JSON text FromJson(value string) error - // Validate validates RsvpEroSubobject + // Validate validates BgpSrteSegmentDTypeSubTlv Validate() error // A stringer function String() string // Clones the object - Clone() (RsvpEroSubobject, error) + Clone() (BgpSrteSegmentDTypeSubTlv, error) validateToAndFrom() error validateObj(vObj *validation, set_default bool) setDefault() - // Type returns RsvpEroSubobjectTypeEnum, set in RsvpEroSubobject - Type() RsvpEroSubobjectTypeEnum - // SetType assigns RsvpEroSubobjectTypeEnum provided by user to RsvpEroSubobject - SetType(value RsvpEroSubobjectTypeEnum) RsvpEroSubobject - // HasType checks if Type has been set in RsvpEroSubobject - HasType() bool - // Ipv4Address returns string, set in RsvpEroSubobject. - Ipv4Address() string - // SetIpv4Address assigns string provided by user to RsvpEroSubobject - SetIpv4Address(value string) RsvpEroSubobject - // HasIpv4Address checks if Ipv4Address has been set in RsvpEroSubobject - HasIpv4Address() bool - // PrefixLength returns uint32, set in RsvpEroSubobject. - PrefixLength() uint32 - // SetPrefixLength assigns uint32 provided by user to RsvpEroSubobject - SetPrefixLength(value uint32) RsvpEroSubobject - // HasPrefixLength checks if PrefixLength has been set in RsvpEroSubobject - HasPrefixLength() bool - // AsNumber returns uint32, set in RsvpEroSubobject. - AsNumber() uint32 - // SetAsNumber assigns uint32 provided by user to RsvpEroSubobject - SetAsNumber(value uint32) RsvpEroSubobject - // HasAsNumber checks if AsNumber has been set in RsvpEroSubobject - HasAsNumber() bool - // HopType returns RsvpEroSubobjectHopTypeEnum, set in RsvpEroSubobject - HopType() RsvpEroSubobjectHopTypeEnum - // SetHopType assigns RsvpEroSubobjectHopTypeEnum provided by user to RsvpEroSubobject - SetHopType(value RsvpEroSubobjectHopTypeEnum) RsvpEroSubobject - // HasHopType checks if HopType has been set in RsvpEroSubobject - HasHopType() bool -} - -type RsvpEroSubobjectTypeEnum string - -// Enum of Type on RsvpEroSubobject -var RsvpEroSubobjectType = struct { - IPV4 RsvpEroSubobjectTypeEnum - AS_NUMBER RsvpEroSubobjectTypeEnum -}{ - IPV4: RsvpEroSubobjectTypeEnum("ipv4"), - AS_NUMBER: RsvpEroSubobjectTypeEnum("as_number"), -} - -func (obj *rsvpEroSubobject) Type() RsvpEroSubobjectTypeEnum { - return RsvpEroSubobjectTypeEnum(obj.obj.Type.Enum().String()) -} - -// The type of the ERO sub-object, one of IPv4 Address or AS Number. -// Type returns a string -func (obj *rsvpEroSubobject) HasType() bool { - return obj.obj.Type != nil -} - -func (obj *rsvpEroSubobject) SetType(value RsvpEroSubobjectTypeEnum) RsvpEroSubobject { - intValue, ok := otg.RsvpEroSubobject_Type_Enum_value[string(value)] - if !ok { - obj.validationErrors = append(obj.validationErrors, fmt.Sprintf( - "%s is not a valid choice on RsvpEroSubobjectTypeEnum", string(value))) - return obj - } - enumValue := otg.RsvpEroSubobject_Type_Enum(intValue) - obj.obj.Type = &enumValue - - return obj + // Flags returns string, set in BgpSrteSegmentDTypeSubTlv. + Flags() string + // SetFlags assigns string provided by user to BgpSrteSegmentDTypeSubTlv + SetFlags(value string) BgpSrteSegmentDTypeSubTlv + // HasFlags checks if Flags has been set in BgpSrteSegmentDTypeSubTlv + HasFlags() bool + // SrAlgorithm returns uint32, set in BgpSrteSegmentDTypeSubTlv. + SrAlgorithm() uint32 + // SetSrAlgorithm assigns uint32 provided by user to BgpSrteSegmentDTypeSubTlv + SetSrAlgorithm(value uint32) BgpSrteSegmentDTypeSubTlv + // HasSrAlgorithm checks if SrAlgorithm has been set in BgpSrteSegmentDTypeSubTlv + HasSrAlgorithm() bool + // Ipv6NodeAddress returns string, set in BgpSrteSegmentDTypeSubTlv. + Ipv6NodeAddress() string + // SetIpv6NodeAddress assigns string provided by user to BgpSrteSegmentDTypeSubTlv + SetIpv6NodeAddress(value string) BgpSrteSegmentDTypeSubTlv + // SrMplsSid returns BgpSrteSrMplsSid, set in BgpSrteSegmentDTypeSubTlv. + // BgpSrteSrMplsSid is configuration for SR-MPLS with Label, TC, Bottom-of-Stack and TTL. + SrMplsSid() BgpSrteSrMplsSid + // SetSrMplsSid assigns BgpSrteSrMplsSid provided by user to BgpSrteSegmentDTypeSubTlv. + // BgpSrteSrMplsSid is configuration for SR-MPLS with Label, TC, Bottom-of-Stack and TTL. + SetSrMplsSid(value BgpSrteSrMplsSid) BgpSrteSegmentDTypeSubTlv + // HasSrMplsSid checks if SrMplsSid has been set in BgpSrteSegmentDTypeSubTlv + HasSrMplsSid() bool + setNil() } -// IPv4 address that this LSP should traverse through. This field is applicable only if the value of 'type' is set to 'ipv4'. -// Ipv4Address returns a string -func (obj *rsvpEroSubobject) Ipv4Address() string { +// One octet bitmap for flags including V-Flag, A-Flag, S-Flag, B-Flag etc. as defined in https://datatracker.ietf.org/doc/html/draft-ietf-idr-segment-routing-te-policy-13#section-2.4.4.2.12 +// Flags returns a string +func (obj *bgpSrteSegmentDTypeSubTlv) Flags() string { - return *obj.obj.Ipv4Address + return *obj.obj.Flags } -// IPv4 address that this LSP should traverse through. This field is applicable only if the value of 'type' is set to 'ipv4'. -// Ipv4Address returns a string -func (obj *rsvpEroSubobject) HasIpv4Address() bool { - return obj.obj.Ipv4Address != nil +// One octet bitmap for flags including V-Flag, A-Flag, S-Flag, B-Flag etc. as defined in https://datatracker.ietf.org/doc/html/draft-ietf-idr-segment-routing-te-policy-13#section-2.4.4.2.12 +// Flags returns a string +func (obj *bgpSrteSegmentDTypeSubTlv) HasFlags() bool { + return obj.obj.Flags != nil } -// IPv4 address that this LSP should traverse through. This field is applicable only if the value of 'type' is set to 'ipv4'. -// SetIpv4Address sets the string value in the RsvpEroSubobject object -func (obj *rsvpEroSubobject) SetIpv4Address(value string) RsvpEroSubobject { +// One octet bitmap for flags including V-Flag, A-Flag, S-Flag, B-Flag etc. as defined in https://datatracker.ietf.org/doc/html/draft-ietf-idr-segment-routing-te-policy-13#section-2.4.4.2.12 +// SetFlags sets the string value in the BgpSrteSegmentDTypeSubTlv object +func (obj *bgpSrteSegmentDTypeSubTlv) SetFlags(value string) BgpSrteSegmentDTypeSubTlv { - obj.obj.Ipv4Address = &value + obj.obj.Flags = &value return obj } -// Prefix length for the IPv4 address in the ERO sub-object. This field is applicable only if the value of 'type' is set to 'ipv4'. -// PrefixLength returns a uint32 -func (obj *rsvpEroSubobject) PrefixLength() uint32 { +// specifying SR Algorithm when when A-Flag as defined in above flags. +// SrAlgorithm returns a uint32 +func (obj *bgpSrteSegmentDTypeSubTlv) SrAlgorithm() uint32 { - return *obj.obj.PrefixLength + return *obj.obj.SrAlgorithm } -// Prefix length for the IPv4 address in the ERO sub-object. This field is applicable only if the value of 'type' is set to 'ipv4'. -// PrefixLength returns a uint32 -func (obj *rsvpEroSubobject) HasPrefixLength() bool { - return obj.obj.PrefixLength != nil +// specifying SR Algorithm when when A-Flag as defined in above flags. +// SrAlgorithm returns a uint32 +func (obj *bgpSrteSegmentDTypeSubTlv) HasSrAlgorithm() bool { + return obj.obj.SrAlgorithm != nil } -// Prefix length for the IPv4 address in the ERO sub-object. This field is applicable only if the value of 'type' is set to 'ipv4'. -// SetPrefixLength sets the uint32 value in the RsvpEroSubobject object -func (obj *rsvpEroSubobject) SetPrefixLength(value uint32) RsvpEroSubobject { +// specifying SR Algorithm when when A-Flag as defined in above flags. +// SetSrAlgorithm sets the uint32 value in the BgpSrteSegmentDTypeSubTlv object +func (obj *bgpSrteSegmentDTypeSubTlv) SetSrAlgorithm(value uint32) BgpSrteSegmentDTypeSubTlv { - obj.obj.PrefixLength = &value + obj.obj.SrAlgorithm = &value return obj } -// Autonomous System number to be set in the ERO sub-object that this LSP should traverse through. This field is applicable only if the value of 'type' is set to 'as_number'. Note that as per RFC3209, 4-byte AS encoding is not supported. -// AsNumber returns a uint32 -func (obj *rsvpEroSubobject) AsNumber() uint32 { - - return *obj.obj.AsNumber +// IPv6 address representing a node. +// Ipv6NodeAddress returns a string +func (obj *bgpSrteSegmentDTypeSubTlv) Ipv6NodeAddress() string { -} + return *obj.obj.Ipv6NodeAddress -// Autonomous System number to be set in the ERO sub-object that this LSP should traverse through. This field is applicable only if the value of 'type' is set to 'as_number'. Note that as per RFC3209, 4-byte AS encoding is not supported. -// AsNumber returns a uint32 -func (obj *rsvpEroSubobject) HasAsNumber() bool { - return obj.obj.AsNumber != nil } -// Autonomous System number to be set in the ERO sub-object that this LSP should traverse through. This field is applicable only if the value of 'type' is set to 'as_number'. Note that as per RFC3209, 4-byte AS encoding is not supported. -// SetAsNumber sets the uint32 value in the RsvpEroSubobject object -func (obj *rsvpEroSubobject) SetAsNumber(value uint32) RsvpEroSubobject { +// IPv6 address representing a node. +// SetIpv6NodeAddress sets the string value in the BgpSrteSegmentDTypeSubTlv object +func (obj *bgpSrteSegmentDTypeSubTlv) SetIpv6NodeAddress(value string) BgpSrteSegmentDTypeSubTlv { - obj.obj.AsNumber = &value + obj.obj.Ipv6NodeAddress = &value return obj } -type RsvpEroSubobjectHopTypeEnum string - -// Enum of HopType on RsvpEroSubobject -var RsvpEroSubobjectHopType = struct { - STRICT RsvpEroSubobjectHopTypeEnum - LOOSE RsvpEroSubobjectHopTypeEnum -}{ - STRICT: RsvpEroSubobjectHopTypeEnum("strict"), - LOOSE: RsvpEroSubobjectHopTypeEnum("loose"), +// Optional SR-MPLS SID. +// SrMplsSid returns a BgpSrteSrMplsSid +func (obj *bgpSrteSegmentDTypeSubTlv) SrMplsSid() BgpSrteSrMplsSid { + if obj.obj.SrMplsSid == nil { + obj.obj.SrMplsSid = NewBgpSrteSrMplsSid().Msg() + } + if obj.srMplsSidHolder == nil { + obj.srMplsSidHolder = &bgpSrteSrMplsSid{obj: obj.obj.SrMplsSid} + } + return obj.srMplsSidHolder } -func (obj *rsvpEroSubobject) HopType() RsvpEroSubobjectHopTypeEnum { - return RsvpEroSubobjectHopTypeEnum(obj.obj.HopType.Enum().String()) +// Optional SR-MPLS SID. +// SrMplsSid returns a BgpSrteSrMplsSid +func (obj *bgpSrteSegmentDTypeSubTlv) HasSrMplsSid() bool { + return obj.obj.SrMplsSid != nil } -// The hop type of the ERO sub-object, one of Strict or Loose. -// HopType returns a string -func (obj *rsvpEroSubobject) HasHopType() bool { - return obj.obj.HopType != nil -} +// Optional SR-MPLS SID. +// SetSrMplsSid sets the BgpSrteSrMplsSid value in the BgpSrteSegmentDTypeSubTlv object +func (obj *bgpSrteSegmentDTypeSubTlv) SetSrMplsSid(value BgpSrteSrMplsSid) BgpSrteSegmentDTypeSubTlv { -func (obj *rsvpEroSubobject) SetHopType(value RsvpEroSubobjectHopTypeEnum) RsvpEroSubobject { - intValue, ok := otg.RsvpEroSubobject_HopType_Enum_value[string(value)] - if !ok { - obj.validationErrors = append(obj.validationErrors, fmt.Sprintf( - "%s is not a valid choice on RsvpEroSubobjectHopTypeEnum", string(value))) - return obj - } - enumValue := otg.RsvpEroSubobject_HopType_Enum(intValue) - obj.obj.HopType = &enumValue + obj.srMplsSidHolder = nil + obj.obj.SrMplsSid = value.Msg() return obj } -func (obj *rsvpEroSubobject) validateObj(vObj *validation, set_default bool) { +func (obj *bgpSrteSegmentDTypeSubTlv) validateObj(vObj *validation, set_default bool) { if set_default { obj.setDefault() } - if obj.obj.Ipv4Address != nil { + if obj.obj.Flags != nil { - err := obj.validateIpv4(obj.Ipv4Address()) + err := obj.validateHex(obj.Flags()) if err != nil { - vObj.validationErrors = append(vObj.validationErrors, fmt.Sprintf("%s %s", err.Error(), "on RsvpEroSubobject.Ipv4Address")) + vObj.validationErrors = append(vObj.validationErrors, fmt.Sprintf("%s %s", err.Error(), "on BgpSrteSegmentDTypeSubTlv.Flags")) } } - if obj.obj.PrefixLength != nil { + if obj.obj.SrAlgorithm != nil { - if *obj.obj.PrefixLength > 32 { + if *obj.obj.SrAlgorithm > 255 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("0 <= RsvpEroSubobject.PrefixLength <= 32 but Got %d", *obj.obj.PrefixLength)) + fmt.Sprintf("0 <= BgpSrteSegmentDTypeSubTlv.SrAlgorithm <= 255 but Got %d", *obj.obj.SrAlgorithm)) } } - if obj.obj.AsNumber != nil { + // Ipv6NodeAddress is required + if obj.obj.Ipv6NodeAddress == nil { + vObj.validationErrors = append(vObj.validationErrors, "Ipv6NodeAddress is required field on interface BgpSrteSegmentDTypeSubTlv") + } + if obj.obj.Ipv6NodeAddress != nil { - if *obj.obj.AsNumber > 65535 { - vObj.validationErrors = append( - vObj.validationErrors, - fmt.Sprintf("0 <= RsvpEroSubobject.AsNumber <= 65535 but Got %d", *obj.obj.AsNumber)) + err := obj.validateIpv6(obj.Ipv6NodeAddress()) + if err != nil { + vObj.validationErrors = append(vObj.validationErrors, fmt.Sprintf("%s %s", err.Error(), "on BgpSrteSegmentDTypeSubTlv.Ipv6NodeAddress")) } } -} - -func (obj *rsvpEroSubobject) setDefault() { - if obj.obj.Type == nil { - obj.SetType(RsvpEroSubobjectType.IPV4) + if obj.obj.SrMplsSid != nil { + obj.SrMplsSid().validateObj(vObj, set_default) } - if obj.obj.Ipv4Address == nil { - obj.SetIpv4Address("0.0.0.0") - } - if obj.obj.PrefixLength == nil { - obj.SetPrefixLength(32) - } - if obj.obj.AsNumber == nil { - obj.SetAsNumber(0) - } - if obj.obj.HopType == nil { - obj.SetHopType(RsvpEroSubobjectHopType.LOOSE) +} + +func (obj *bgpSrteSegmentDTypeSubTlv) setDefault() { + if obj.obj.SrAlgorithm == nil { + obj.SetSrAlgorithm(0) } } -// ***** PatternFlowIpv4PriorityRawCounter ***** -type patternFlowIpv4PriorityRawCounter struct { +// ***** BgpSrteSegmentETypeSubTlv ***** +type bgpSrteSegmentETypeSubTlv struct { validation - obj *otg.PatternFlowIpv4PriorityRawCounter + obj *otg.BgpSrteSegmentETypeSubTlv + srMplsSidHolder BgpSrteSrMplsSid } -func NewPatternFlowIpv4PriorityRawCounter() PatternFlowIpv4PriorityRawCounter { - obj := patternFlowIpv4PriorityRawCounter{obj: &otg.PatternFlowIpv4PriorityRawCounter{}} +func NewBgpSrteSegmentETypeSubTlv() BgpSrteSegmentETypeSubTlv { + obj := bgpSrteSegmentETypeSubTlv{obj: &otg.BgpSrteSegmentETypeSubTlv{}} obj.setDefault() return &obj } -func (obj *patternFlowIpv4PriorityRawCounter) Msg() *otg.PatternFlowIpv4PriorityRawCounter { +func (obj *bgpSrteSegmentETypeSubTlv) Msg() *otg.BgpSrteSegmentETypeSubTlv { return obj.obj } -func (obj *patternFlowIpv4PriorityRawCounter) SetMsg(msg *otg.PatternFlowIpv4PriorityRawCounter) PatternFlowIpv4PriorityRawCounter { - +func (obj *bgpSrteSegmentETypeSubTlv) SetMsg(msg *otg.BgpSrteSegmentETypeSubTlv) BgpSrteSegmentETypeSubTlv { + obj.setNil() proto.Merge(obj.obj, msg) return obj } -func (obj *patternFlowIpv4PriorityRawCounter) ToProto() (*otg.PatternFlowIpv4PriorityRawCounter, error) { +func (obj *bgpSrteSegmentETypeSubTlv) ToProto() (*otg.BgpSrteSegmentETypeSubTlv, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -282237,7 +327581,7 @@ func (obj *patternFlowIpv4PriorityRawCounter) ToProto() (*otg.PatternFlowIpv4Pri return obj.Msg(), nil } -func (obj *patternFlowIpv4PriorityRawCounter) FromProto(msg *otg.PatternFlowIpv4PriorityRawCounter) (PatternFlowIpv4PriorityRawCounter, error) { +func (obj *bgpSrteSegmentETypeSubTlv) FromProto(msg *otg.BgpSrteSegmentETypeSubTlv) (BgpSrteSegmentETypeSubTlv, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -282246,7 +327590,7 @@ func (obj *patternFlowIpv4PriorityRawCounter) FromProto(msg *otg.PatternFlowIpv4 return newObj, nil } -func (obj *patternFlowIpv4PriorityRawCounter) ToPbText() (string, error) { +func (obj *bgpSrteSegmentETypeSubTlv) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -282258,12 +327602,12 @@ func (obj *patternFlowIpv4PriorityRawCounter) ToPbText() (string, error) { return string(protoMarshal), nil } -func (obj *patternFlowIpv4PriorityRawCounter) FromPbText(value string) error { +func (obj *bgpSrteSegmentETypeSubTlv) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj } - + obj.setNil() vErr := obj.validateToAndFrom() if vErr != nil { return vErr @@ -282271,7 +327615,7 @@ func (obj *patternFlowIpv4PriorityRawCounter) FromPbText(value string) error { return retObj } -func (obj *patternFlowIpv4PriorityRawCounter) ToYaml() (string, error) { +func (obj *bgpSrteSegmentETypeSubTlv) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -282292,7 +327636,7 @@ func (obj *patternFlowIpv4PriorityRawCounter) ToYaml() (string, error) { return string(data), nil } -func (obj *patternFlowIpv4PriorityRawCounter) FromYaml(value string) error { +func (obj *bgpSrteSegmentETypeSubTlv) FromYaml(value string) error { if value == "" { value = "{}" } @@ -282309,7 +327653,7 @@ func (obj *patternFlowIpv4PriorityRawCounter) FromYaml(value string) error { return fmt.Errorf("unmarshal error %s", strings.Replace( uError.Error(), "\u00a0", " ", -1)[7:]) } - + obj.setNil() vErr := obj.validateToAndFrom() if vErr != nil { return vErr @@ -282317,7 +327661,7 @@ func (obj *patternFlowIpv4PriorityRawCounter) FromYaml(value string) error { return nil } -func (obj *patternFlowIpv4PriorityRawCounter) ToJson() (string, error) { +func (obj *bgpSrteSegmentETypeSubTlv) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -282335,7 +327679,7 @@ func (obj *patternFlowIpv4PriorityRawCounter) ToJson() (string, error) { return string(data), nil } -func (obj *patternFlowIpv4PriorityRawCounter) FromJson(value string) error { +func (obj *bgpSrteSegmentETypeSubTlv) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -282348,7 +327692,7 @@ func (obj *patternFlowIpv4PriorityRawCounter) FromJson(value string) error { return fmt.Errorf("unmarshal error %s", strings.Replace( uError.Error(), "\u00a0", " ", -1)[7:]) } - + obj.setNil() err := obj.validateToAndFrom() if err != nil { return err @@ -282356,19 +327700,19 @@ func (obj *patternFlowIpv4PriorityRawCounter) FromJson(value string) error { return nil } -func (obj *patternFlowIpv4PriorityRawCounter) validateToAndFrom() error { +func (obj *bgpSrteSegmentETypeSubTlv) validateToAndFrom() error { // emptyVars() obj.validateObj(&obj.validation, true) return obj.validationResult() } -func (obj *patternFlowIpv4PriorityRawCounter) Validate() error { +func (obj *bgpSrteSegmentETypeSubTlv) Validate() error { // emptyVars() obj.validateObj(&obj.validation, false) return obj.validationResult() } -func (obj *patternFlowIpv4PriorityRawCounter) String() string { +func (obj *bgpSrteSegmentETypeSubTlv) String() string { str, err := obj.ToYaml() if err != nil { return err.Error() @@ -282376,12 +327720,12 @@ func (obj *patternFlowIpv4PriorityRawCounter) String() string { return str } -func (obj *patternFlowIpv4PriorityRawCounter) Clone() (PatternFlowIpv4PriorityRawCounter, error) { +func (obj *bgpSrteSegmentETypeSubTlv) Clone() (BgpSrteSegmentETypeSubTlv, error) { vErr := obj.Validate() if vErr != nil { return nil, vErr } - newObj := NewPatternFlowIpv4PriorityRawCounter() + newObj := NewBgpSrteSegmentETypeSubTlv() data, err := proto.Marshal(obj.Msg()) if err != nil { return nil, err @@ -282393,199 +327737,227 @@ func (obj *patternFlowIpv4PriorityRawCounter) Clone() (PatternFlowIpv4PriorityRa return newObj, nil } -// PatternFlowIpv4PriorityRawCounter is integer counter pattern -type PatternFlowIpv4PriorityRawCounter interface { +func (obj *bgpSrteSegmentETypeSubTlv) setNil() { + obj.srMplsSidHolder = nil + obj.validationErrors = nil + obj.warnings = nil + obj.constraints = make(map[string]map[string]Constraints) +} + +// BgpSrteSegmentETypeSubTlv is type E: IPv4 Address and Local Interface ID with optional SID +type BgpSrteSegmentETypeSubTlv interface { Validation - // Msg marshals PatternFlowIpv4PriorityRawCounter to protobuf object *otg.PatternFlowIpv4PriorityRawCounter + // Msg marshals BgpSrteSegmentETypeSubTlv to protobuf object *otg.BgpSrteSegmentETypeSubTlv // and doesn't set defaults - Msg() *otg.PatternFlowIpv4PriorityRawCounter - // SetMsg unmarshals PatternFlowIpv4PriorityRawCounter from protobuf object *otg.PatternFlowIpv4PriorityRawCounter + Msg() *otg.BgpSrteSegmentETypeSubTlv + // SetMsg unmarshals BgpSrteSegmentETypeSubTlv from protobuf object *otg.BgpSrteSegmentETypeSubTlv // and doesn't set defaults - SetMsg(*otg.PatternFlowIpv4PriorityRawCounter) PatternFlowIpv4PriorityRawCounter - // ToProto marshals PatternFlowIpv4PriorityRawCounter to protobuf object *otg.PatternFlowIpv4PriorityRawCounter - ToProto() (*otg.PatternFlowIpv4PriorityRawCounter, error) - // ToPbText marshals PatternFlowIpv4PriorityRawCounter to protobuf text + SetMsg(*otg.BgpSrteSegmentETypeSubTlv) BgpSrteSegmentETypeSubTlv + // ToProto marshals BgpSrteSegmentETypeSubTlv to protobuf object *otg.BgpSrteSegmentETypeSubTlv + ToProto() (*otg.BgpSrteSegmentETypeSubTlv, error) + // ToPbText marshals BgpSrteSegmentETypeSubTlv to protobuf text ToPbText() (string, error) - // ToYaml marshals PatternFlowIpv4PriorityRawCounter to YAML text + // ToYaml marshals BgpSrteSegmentETypeSubTlv to YAML text ToYaml() (string, error) - // ToJson marshals PatternFlowIpv4PriorityRawCounter to JSON text + // ToJson marshals BgpSrteSegmentETypeSubTlv to JSON text ToJson() (string, error) - // FromProto unmarshals PatternFlowIpv4PriorityRawCounter from protobuf object *otg.PatternFlowIpv4PriorityRawCounter - FromProto(msg *otg.PatternFlowIpv4PriorityRawCounter) (PatternFlowIpv4PriorityRawCounter, error) - // FromPbText unmarshals PatternFlowIpv4PriorityRawCounter from protobuf text + // FromProto unmarshals BgpSrteSegmentETypeSubTlv from protobuf object *otg.BgpSrteSegmentETypeSubTlv + FromProto(msg *otg.BgpSrteSegmentETypeSubTlv) (BgpSrteSegmentETypeSubTlv, error) + // FromPbText unmarshals BgpSrteSegmentETypeSubTlv from protobuf text FromPbText(value string) error - // FromYaml unmarshals PatternFlowIpv4PriorityRawCounter from YAML text + // FromYaml unmarshals BgpSrteSegmentETypeSubTlv from YAML text FromYaml(value string) error - // FromJson unmarshals PatternFlowIpv4PriorityRawCounter from JSON text + // FromJson unmarshals BgpSrteSegmentETypeSubTlv from JSON text FromJson(value string) error - // Validate validates PatternFlowIpv4PriorityRawCounter + // Validate validates BgpSrteSegmentETypeSubTlv Validate() error // A stringer function String() string // Clones the object - Clone() (PatternFlowIpv4PriorityRawCounter, error) + Clone() (BgpSrteSegmentETypeSubTlv, error) validateToAndFrom() error validateObj(vObj *validation, set_default bool) setDefault() - // Start returns uint32, set in PatternFlowIpv4PriorityRawCounter. - Start() uint32 - // SetStart assigns uint32 provided by user to PatternFlowIpv4PriorityRawCounter - SetStart(value uint32) PatternFlowIpv4PriorityRawCounter - // HasStart checks if Start has been set in PatternFlowIpv4PriorityRawCounter - HasStart() bool - // Step returns uint32, set in PatternFlowIpv4PriorityRawCounter. - Step() uint32 - // SetStep assigns uint32 provided by user to PatternFlowIpv4PriorityRawCounter - SetStep(value uint32) PatternFlowIpv4PriorityRawCounter - // HasStep checks if Step has been set in PatternFlowIpv4PriorityRawCounter - HasStep() bool - // Count returns uint32, set in PatternFlowIpv4PriorityRawCounter. - Count() uint32 - // SetCount assigns uint32 provided by user to PatternFlowIpv4PriorityRawCounter - SetCount(value uint32) PatternFlowIpv4PriorityRawCounter - // HasCount checks if Count has been set in PatternFlowIpv4PriorityRawCounter - HasCount() bool + // Flags returns string, set in BgpSrteSegmentETypeSubTlv. + Flags() string + // SetFlags assigns string provided by user to BgpSrteSegmentETypeSubTlv + SetFlags(value string) BgpSrteSegmentETypeSubTlv + // HasFlags checks if Flags has been set in BgpSrteSegmentETypeSubTlv + HasFlags() bool + // LocalInterfaceId returns uint32, set in BgpSrteSegmentETypeSubTlv. + LocalInterfaceId() uint32 + // SetLocalInterfaceId assigns uint32 provided by user to BgpSrteSegmentETypeSubTlv + SetLocalInterfaceId(value uint32) BgpSrteSegmentETypeSubTlv + // HasLocalInterfaceId checks if LocalInterfaceId has been set in BgpSrteSegmentETypeSubTlv + HasLocalInterfaceId() bool + // Ipv4NodeAddress returns string, set in BgpSrteSegmentETypeSubTlv. + Ipv4NodeAddress() string + // SetIpv4NodeAddress assigns string provided by user to BgpSrteSegmentETypeSubTlv + SetIpv4NodeAddress(value string) BgpSrteSegmentETypeSubTlv + // SrMplsSid returns BgpSrteSrMplsSid, set in BgpSrteSegmentETypeSubTlv. + // BgpSrteSrMplsSid is configuration for SR-MPLS with Label, TC, Bottom-of-Stack and TTL. + SrMplsSid() BgpSrteSrMplsSid + // SetSrMplsSid assigns BgpSrteSrMplsSid provided by user to BgpSrteSegmentETypeSubTlv. + // BgpSrteSrMplsSid is configuration for SR-MPLS with Label, TC, Bottom-of-Stack and TTL. + SetSrMplsSid(value BgpSrteSrMplsSid) BgpSrteSegmentETypeSubTlv + // HasSrMplsSid checks if SrMplsSid has been set in BgpSrteSegmentETypeSubTlv + HasSrMplsSid() bool + setNil() } -// description is TBD -// Start returns a uint32 -func (obj *patternFlowIpv4PriorityRawCounter) Start() uint32 { +// One octet bitmap for flags including V-Flag, A-Flag, S-Flag, B-Flag etc. as defined in https://datatracker.ietf.org/doc/html/draft-ietf-idr-segment-routing-te-policy-13#section-2.4.4.2.12 +// Flags returns a string +func (obj *bgpSrteSegmentETypeSubTlv) Flags() string { - return *obj.obj.Start + return *obj.obj.Flags } -// description is TBD -// Start returns a uint32 -func (obj *patternFlowIpv4PriorityRawCounter) HasStart() bool { - return obj.obj.Start != nil +// One octet bitmap for flags including V-Flag, A-Flag, S-Flag, B-Flag etc. as defined in https://datatracker.ietf.org/doc/html/draft-ietf-idr-segment-routing-te-policy-13#section-2.4.4.2.12 +// Flags returns a string +func (obj *bgpSrteSegmentETypeSubTlv) HasFlags() bool { + return obj.obj.Flags != nil } -// description is TBD -// SetStart sets the uint32 value in the PatternFlowIpv4PriorityRawCounter object -func (obj *patternFlowIpv4PriorityRawCounter) SetStart(value uint32) PatternFlowIpv4PriorityRawCounter { +// One octet bitmap for flags including V-Flag, A-Flag, S-Flag, B-Flag etc. as defined in https://datatracker.ietf.org/doc/html/draft-ietf-idr-segment-routing-te-policy-13#section-2.4.4.2.12 +// SetFlags sets the string value in the BgpSrteSegmentETypeSubTlv object +func (obj *bgpSrteSegmentETypeSubTlv) SetFlags(value string) BgpSrteSegmentETypeSubTlv { - obj.obj.Start = &value + obj.obj.Flags = &value return obj } -// description is TBD -// Step returns a uint32 -func (obj *patternFlowIpv4PriorityRawCounter) Step() uint32 { +// Local Interface ID: The Interface Index as defined in [RFC8664]. +// LocalInterfaceId returns a uint32 +func (obj *bgpSrteSegmentETypeSubTlv) LocalInterfaceId() uint32 { - return *obj.obj.Step + return *obj.obj.LocalInterfaceId } -// description is TBD -// Step returns a uint32 -func (obj *patternFlowIpv4PriorityRawCounter) HasStep() bool { - return obj.obj.Step != nil +// Local Interface ID: The Interface Index as defined in [RFC8664]. +// LocalInterfaceId returns a uint32 +func (obj *bgpSrteSegmentETypeSubTlv) HasLocalInterfaceId() bool { + return obj.obj.LocalInterfaceId != nil } -// description is TBD -// SetStep sets the uint32 value in the PatternFlowIpv4PriorityRawCounter object -func (obj *patternFlowIpv4PriorityRawCounter) SetStep(value uint32) PatternFlowIpv4PriorityRawCounter { +// Local Interface ID: The Interface Index as defined in [RFC8664]. +// SetLocalInterfaceId sets the uint32 value in the BgpSrteSegmentETypeSubTlv object +func (obj *bgpSrteSegmentETypeSubTlv) SetLocalInterfaceId(value uint32) BgpSrteSegmentETypeSubTlv { - obj.obj.Step = &value + obj.obj.LocalInterfaceId = &value return obj } -// description is TBD -// Count returns a uint32 -func (obj *patternFlowIpv4PriorityRawCounter) Count() uint32 { +// IPv4 address representing a node. +// Ipv4NodeAddress returns a string +func (obj *bgpSrteSegmentETypeSubTlv) Ipv4NodeAddress() string { - return *obj.obj.Count + return *obj.obj.Ipv4NodeAddress + +} + +// IPv4 address representing a node. +// SetIpv4NodeAddress sets the string value in the BgpSrteSegmentETypeSubTlv object +func (obj *bgpSrteSegmentETypeSubTlv) SetIpv4NodeAddress(value string) BgpSrteSegmentETypeSubTlv { + + obj.obj.Ipv4NodeAddress = &value + return obj +} +// Optional SR-MPLS SID. +// SrMplsSid returns a BgpSrteSrMplsSid +func (obj *bgpSrteSegmentETypeSubTlv) SrMplsSid() BgpSrteSrMplsSid { + if obj.obj.SrMplsSid == nil { + obj.obj.SrMplsSid = NewBgpSrteSrMplsSid().Msg() + } + if obj.srMplsSidHolder == nil { + obj.srMplsSidHolder = &bgpSrteSrMplsSid{obj: obj.obj.SrMplsSid} + } + return obj.srMplsSidHolder } -// description is TBD -// Count returns a uint32 -func (obj *patternFlowIpv4PriorityRawCounter) HasCount() bool { - return obj.obj.Count != nil +// Optional SR-MPLS SID. +// SrMplsSid returns a BgpSrteSrMplsSid +func (obj *bgpSrteSegmentETypeSubTlv) HasSrMplsSid() bool { + return obj.obj.SrMplsSid != nil } -// description is TBD -// SetCount sets the uint32 value in the PatternFlowIpv4PriorityRawCounter object -func (obj *patternFlowIpv4PriorityRawCounter) SetCount(value uint32) PatternFlowIpv4PriorityRawCounter { +// Optional SR-MPLS SID. +// SetSrMplsSid sets the BgpSrteSrMplsSid value in the BgpSrteSegmentETypeSubTlv object +func (obj *bgpSrteSegmentETypeSubTlv) SetSrMplsSid(value BgpSrteSrMplsSid) BgpSrteSegmentETypeSubTlv { + + obj.srMplsSidHolder = nil + obj.obj.SrMplsSid = value.Msg() - obj.obj.Count = &value return obj } -func (obj *patternFlowIpv4PriorityRawCounter) validateObj(vObj *validation, set_default bool) { +func (obj *bgpSrteSegmentETypeSubTlv) validateObj(vObj *validation, set_default bool) { if set_default { obj.setDefault() } - if obj.obj.Start != nil { + if obj.obj.Flags != nil { - if *obj.obj.Start > 255 { - vObj.validationErrors = append( - vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowIpv4PriorityRawCounter.Start <= 255 but Got %d", *obj.obj.Start)) + err := obj.validateHex(obj.Flags()) + if err != nil { + vObj.validationErrors = append(vObj.validationErrors, fmt.Sprintf("%s %s", err.Error(), "on BgpSrteSegmentETypeSubTlv.Flags")) } } - if obj.obj.Step != nil { + // Ipv4NodeAddress is required + if obj.obj.Ipv4NodeAddress == nil { + vObj.validationErrors = append(vObj.validationErrors, "Ipv4NodeAddress is required field on interface BgpSrteSegmentETypeSubTlv") + } + if obj.obj.Ipv4NodeAddress != nil { - if *obj.obj.Step > 255 { - vObj.validationErrors = append( - vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowIpv4PriorityRawCounter.Step <= 255 but Got %d", *obj.obj.Step)) + err := obj.validateIpv4(obj.Ipv4NodeAddress()) + if err != nil { + vObj.validationErrors = append(vObj.validationErrors, fmt.Sprintf("%s %s", err.Error(), "on BgpSrteSegmentETypeSubTlv.Ipv4NodeAddress")) } } - if obj.obj.Count != nil { - - if *obj.obj.Count > 255 { - vObj.validationErrors = append( - vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowIpv4PriorityRawCounter.Count <= 255 but Got %d", *obj.obj.Count)) - } + if obj.obj.SrMplsSid != nil { + obj.SrMplsSid().validateObj(vObj, set_default) } } -func (obj *patternFlowIpv4PriorityRawCounter) setDefault() { - if obj.obj.Start == nil { - obj.SetStart(0) - } - if obj.obj.Step == nil { - obj.SetStep(1) - } - if obj.obj.Count == nil { - obj.SetCount(1) +func (obj *bgpSrteSegmentETypeSubTlv) setDefault() { + if obj.obj.LocalInterfaceId == nil { + obj.SetLocalInterfaceId(0) } } -// ***** PatternFlowIpv4PriorityRawMetricTag ***** -type patternFlowIpv4PriorityRawMetricTag struct { +// ***** BgpSrteSegmentFTypeSubTlv ***** +type bgpSrteSegmentFTypeSubTlv struct { validation - obj *otg.PatternFlowIpv4PriorityRawMetricTag + obj *otg.BgpSrteSegmentFTypeSubTlv + srMplsSidHolder BgpSrteSrMplsSid } -func NewPatternFlowIpv4PriorityRawMetricTag() PatternFlowIpv4PriorityRawMetricTag { - obj := patternFlowIpv4PriorityRawMetricTag{obj: &otg.PatternFlowIpv4PriorityRawMetricTag{}} +func NewBgpSrteSegmentFTypeSubTlv() BgpSrteSegmentFTypeSubTlv { + obj := bgpSrteSegmentFTypeSubTlv{obj: &otg.BgpSrteSegmentFTypeSubTlv{}} obj.setDefault() return &obj } -func (obj *patternFlowIpv4PriorityRawMetricTag) Msg() *otg.PatternFlowIpv4PriorityRawMetricTag { +func (obj *bgpSrteSegmentFTypeSubTlv) Msg() *otg.BgpSrteSegmentFTypeSubTlv { return obj.obj } -func (obj *patternFlowIpv4PriorityRawMetricTag) SetMsg(msg *otg.PatternFlowIpv4PriorityRawMetricTag) PatternFlowIpv4PriorityRawMetricTag { - +func (obj *bgpSrteSegmentFTypeSubTlv) SetMsg(msg *otg.BgpSrteSegmentFTypeSubTlv) BgpSrteSegmentFTypeSubTlv { + obj.setNil() proto.Merge(obj.obj, msg) return obj } -func (obj *patternFlowIpv4PriorityRawMetricTag) ToProto() (*otg.PatternFlowIpv4PriorityRawMetricTag, error) { +func (obj *bgpSrteSegmentFTypeSubTlv) ToProto() (*otg.BgpSrteSegmentFTypeSubTlv, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -282593,7 +327965,7 @@ func (obj *patternFlowIpv4PriorityRawMetricTag) ToProto() (*otg.PatternFlowIpv4P return obj.Msg(), nil } -func (obj *patternFlowIpv4PriorityRawMetricTag) FromProto(msg *otg.PatternFlowIpv4PriorityRawMetricTag) (PatternFlowIpv4PriorityRawMetricTag, error) { +func (obj *bgpSrteSegmentFTypeSubTlv) FromProto(msg *otg.BgpSrteSegmentFTypeSubTlv) (BgpSrteSegmentFTypeSubTlv, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -282602,7 +327974,7 @@ func (obj *patternFlowIpv4PriorityRawMetricTag) FromProto(msg *otg.PatternFlowIp return newObj, nil } -func (obj *patternFlowIpv4PriorityRawMetricTag) ToPbText() (string, error) { +func (obj *bgpSrteSegmentFTypeSubTlv) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -282614,12 +327986,12 @@ func (obj *patternFlowIpv4PriorityRawMetricTag) ToPbText() (string, error) { return string(protoMarshal), nil } -func (obj *patternFlowIpv4PriorityRawMetricTag) FromPbText(value string) error { +func (obj *bgpSrteSegmentFTypeSubTlv) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj } - + obj.setNil() vErr := obj.validateToAndFrom() if vErr != nil { return vErr @@ -282627,7 +327999,7 @@ func (obj *patternFlowIpv4PriorityRawMetricTag) FromPbText(value string) error { return retObj } -func (obj *patternFlowIpv4PriorityRawMetricTag) ToYaml() (string, error) { +func (obj *bgpSrteSegmentFTypeSubTlv) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -282648,7 +328020,7 @@ func (obj *patternFlowIpv4PriorityRawMetricTag) ToYaml() (string, error) { return string(data), nil } -func (obj *patternFlowIpv4PriorityRawMetricTag) FromYaml(value string) error { +func (obj *bgpSrteSegmentFTypeSubTlv) FromYaml(value string) error { if value == "" { value = "{}" } @@ -282665,7 +328037,7 @@ func (obj *patternFlowIpv4PriorityRawMetricTag) FromYaml(value string) error { return fmt.Errorf("unmarshal error %s", strings.Replace( uError.Error(), "\u00a0", " ", -1)[7:]) } - + obj.setNil() vErr := obj.validateToAndFrom() if vErr != nil { return vErr @@ -282673,7 +328045,7 @@ func (obj *patternFlowIpv4PriorityRawMetricTag) FromYaml(value string) error { return nil } -func (obj *patternFlowIpv4PriorityRawMetricTag) ToJson() (string, error) { +func (obj *bgpSrteSegmentFTypeSubTlv) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -282691,7 +328063,7 @@ func (obj *patternFlowIpv4PriorityRawMetricTag) ToJson() (string, error) { return string(data), nil } -func (obj *patternFlowIpv4PriorityRawMetricTag) FromJson(value string) error { +func (obj *bgpSrteSegmentFTypeSubTlv) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -282704,7 +328076,7 @@ func (obj *patternFlowIpv4PriorityRawMetricTag) FromJson(value string) error { return fmt.Errorf("unmarshal error %s", strings.Replace( uError.Error(), "\u00a0", " ", -1)[7:]) } - + obj.setNil() err := obj.validateToAndFrom() if err != nil { return err @@ -282712,19 +328084,19 @@ func (obj *patternFlowIpv4PriorityRawMetricTag) FromJson(value string) error { return nil } -func (obj *patternFlowIpv4PriorityRawMetricTag) validateToAndFrom() error { +func (obj *bgpSrteSegmentFTypeSubTlv) validateToAndFrom() error { // emptyVars() obj.validateObj(&obj.validation, true) return obj.validationResult() } -func (obj *patternFlowIpv4PriorityRawMetricTag) Validate() error { +func (obj *bgpSrteSegmentFTypeSubTlv) Validate() error { // emptyVars() obj.validateObj(&obj.validation, false) return obj.validationResult() } -func (obj *patternFlowIpv4PriorityRawMetricTag) String() string { +func (obj *bgpSrteSegmentFTypeSubTlv) String() string { str, err := obj.ToYaml() if err != nil { return err.Error() @@ -282732,12 +328104,12 @@ func (obj *patternFlowIpv4PriorityRawMetricTag) String() string { return str } -func (obj *patternFlowIpv4PriorityRawMetricTag) Clone() (PatternFlowIpv4PriorityRawMetricTag, error) { +func (obj *bgpSrteSegmentFTypeSubTlv) Clone() (BgpSrteSegmentFTypeSubTlv, error) { vErr := obj.Validate() if vErr != nil { return nil, vErr } - newObj := NewPatternFlowIpv4PriorityRawMetricTag() + newObj := NewBgpSrteSegmentFTypeSubTlv() data, err := proto.Marshal(obj.Msg()) if err != nil { return nil, err @@ -282749,186 +328121,229 @@ func (obj *patternFlowIpv4PriorityRawMetricTag) Clone() (PatternFlowIpv4Priority return newObj, nil } -// PatternFlowIpv4PriorityRawMetricTag is metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. -type PatternFlowIpv4PriorityRawMetricTag interface { +func (obj *bgpSrteSegmentFTypeSubTlv) setNil() { + obj.srMplsSidHolder = nil + obj.validationErrors = nil + obj.warnings = nil + obj.constraints = make(map[string]map[string]Constraints) +} + +// BgpSrteSegmentFTypeSubTlv is type F: IPv4 Local and Remote addresses with optional SID. +type BgpSrteSegmentFTypeSubTlv interface { Validation - // Msg marshals PatternFlowIpv4PriorityRawMetricTag to protobuf object *otg.PatternFlowIpv4PriorityRawMetricTag + // Msg marshals BgpSrteSegmentFTypeSubTlv to protobuf object *otg.BgpSrteSegmentFTypeSubTlv // and doesn't set defaults - Msg() *otg.PatternFlowIpv4PriorityRawMetricTag - // SetMsg unmarshals PatternFlowIpv4PriorityRawMetricTag from protobuf object *otg.PatternFlowIpv4PriorityRawMetricTag + Msg() *otg.BgpSrteSegmentFTypeSubTlv + // SetMsg unmarshals BgpSrteSegmentFTypeSubTlv from protobuf object *otg.BgpSrteSegmentFTypeSubTlv // and doesn't set defaults - SetMsg(*otg.PatternFlowIpv4PriorityRawMetricTag) PatternFlowIpv4PriorityRawMetricTag - // ToProto marshals PatternFlowIpv4PriorityRawMetricTag to protobuf object *otg.PatternFlowIpv4PriorityRawMetricTag - ToProto() (*otg.PatternFlowIpv4PriorityRawMetricTag, error) - // ToPbText marshals PatternFlowIpv4PriorityRawMetricTag to protobuf text + SetMsg(*otg.BgpSrteSegmentFTypeSubTlv) BgpSrteSegmentFTypeSubTlv + // ToProto marshals BgpSrteSegmentFTypeSubTlv to protobuf object *otg.BgpSrteSegmentFTypeSubTlv + ToProto() (*otg.BgpSrteSegmentFTypeSubTlv, error) + // ToPbText marshals BgpSrteSegmentFTypeSubTlv to protobuf text ToPbText() (string, error) - // ToYaml marshals PatternFlowIpv4PriorityRawMetricTag to YAML text + // ToYaml marshals BgpSrteSegmentFTypeSubTlv to YAML text ToYaml() (string, error) - // ToJson marshals PatternFlowIpv4PriorityRawMetricTag to JSON text + // ToJson marshals BgpSrteSegmentFTypeSubTlv to JSON text ToJson() (string, error) - // FromProto unmarshals PatternFlowIpv4PriorityRawMetricTag from protobuf object *otg.PatternFlowIpv4PriorityRawMetricTag - FromProto(msg *otg.PatternFlowIpv4PriorityRawMetricTag) (PatternFlowIpv4PriorityRawMetricTag, error) - // FromPbText unmarshals PatternFlowIpv4PriorityRawMetricTag from protobuf text + // FromProto unmarshals BgpSrteSegmentFTypeSubTlv from protobuf object *otg.BgpSrteSegmentFTypeSubTlv + FromProto(msg *otg.BgpSrteSegmentFTypeSubTlv) (BgpSrteSegmentFTypeSubTlv, error) + // FromPbText unmarshals BgpSrteSegmentFTypeSubTlv from protobuf text FromPbText(value string) error - // FromYaml unmarshals PatternFlowIpv4PriorityRawMetricTag from YAML text + // FromYaml unmarshals BgpSrteSegmentFTypeSubTlv from YAML text FromYaml(value string) error - // FromJson unmarshals PatternFlowIpv4PriorityRawMetricTag from JSON text + // FromJson unmarshals BgpSrteSegmentFTypeSubTlv from JSON text FromJson(value string) error - // Validate validates PatternFlowIpv4PriorityRawMetricTag + // Validate validates BgpSrteSegmentFTypeSubTlv Validate() error // A stringer function String() string // Clones the object - Clone() (PatternFlowIpv4PriorityRawMetricTag, error) + Clone() (BgpSrteSegmentFTypeSubTlv, error) validateToAndFrom() error validateObj(vObj *validation, set_default bool) setDefault() - // Name returns string, set in PatternFlowIpv4PriorityRawMetricTag. - Name() string - // SetName assigns string provided by user to PatternFlowIpv4PriorityRawMetricTag - SetName(value string) PatternFlowIpv4PriorityRawMetricTag - // Offset returns uint32, set in PatternFlowIpv4PriorityRawMetricTag. - Offset() uint32 - // SetOffset assigns uint32 provided by user to PatternFlowIpv4PriorityRawMetricTag - SetOffset(value uint32) PatternFlowIpv4PriorityRawMetricTag - // HasOffset checks if Offset has been set in PatternFlowIpv4PriorityRawMetricTag - HasOffset() bool - // Length returns uint32, set in PatternFlowIpv4PriorityRawMetricTag. - Length() uint32 - // SetLength assigns uint32 provided by user to PatternFlowIpv4PriorityRawMetricTag - SetLength(value uint32) PatternFlowIpv4PriorityRawMetricTag - // HasLength checks if Length has been set in PatternFlowIpv4PriorityRawMetricTag - HasLength() bool + // Flags returns string, set in BgpSrteSegmentFTypeSubTlv. + Flags() string + // SetFlags assigns string provided by user to BgpSrteSegmentFTypeSubTlv + SetFlags(value string) BgpSrteSegmentFTypeSubTlv + // HasFlags checks if Flags has been set in BgpSrteSegmentFTypeSubTlv + HasFlags() bool + // LocalIpv4Address returns string, set in BgpSrteSegmentFTypeSubTlv. + LocalIpv4Address() string + // SetLocalIpv4Address assigns string provided by user to BgpSrteSegmentFTypeSubTlv + SetLocalIpv4Address(value string) BgpSrteSegmentFTypeSubTlv + // RemoteIpv4Address returns string, set in BgpSrteSegmentFTypeSubTlv. + RemoteIpv4Address() string + // SetRemoteIpv4Address assigns string provided by user to BgpSrteSegmentFTypeSubTlv + SetRemoteIpv4Address(value string) BgpSrteSegmentFTypeSubTlv + // SrMplsSid returns BgpSrteSrMplsSid, set in BgpSrteSegmentFTypeSubTlv. + // BgpSrteSrMplsSid is configuration for SR-MPLS with Label, TC, Bottom-of-Stack and TTL. + SrMplsSid() BgpSrteSrMplsSid + // SetSrMplsSid assigns BgpSrteSrMplsSid provided by user to BgpSrteSegmentFTypeSubTlv. + // BgpSrteSrMplsSid is configuration for SR-MPLS with Label, TC, Bottom-of-Stack and TTL. + SetSrMplsSid(value BgpSrteSrMplsSid) BgpSrteSegmentFTypeSubTlv + // HasSrMplsSid checks if SrMplsSid has been set in BgpSrteSegmentFTypeSubTlv + HasSrMplsSid() bool + setNil() } -// Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field -// Name returns a string -func (obj *patternFlowIpv4PriorityRawMetricTag) Name() string { +// One octet bitmap for flags including V-Flag, A-Flag, S-Flag, B-Flag etc. as defined in https://datatracker.ietf.org/doc/html/draft-ietf-idr-segment-routing-te-policy-13#section-2.4.4.2.12 +// Flags returns a string +func (obj *bgpSrteSegmentFTypeSubTlv) Flags() string { - return *obj.obj.Name + return *obj.obj.Flags } -// Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field -// SetName sets the string value in the PatternFlowIpv4PriorityRawMetricTag object -func (obj *patternFlowIpv4PriorityRawMetricTag) SetName(value string) PatternFlowIpv4PriorityRawMetricTag { +// One octet bitmap for flags including V-Flag, A-Flag, S-Flag, B-Flag etc. as defined in https://datatracker.ietf.org/doc/html/draft-ietf-idr-segment-routing-te-policy-13#section-2.4.4.2.12 +// Flags returns a string +func (obj *bgpSrteSegmentFTypeSubTlv) HasFlags() bool { + return obj.obj.Flags != nil +} - obj.obj.Name = &value +// One octet bitmap for flags including V-Flag, A-Flag, S-Flag, B-Flag etc. as defined in https://datatracker.ietf.org/doc/html/draft-ietf-idr-segment-routing-te-policy-13#section-2.4.4.2.12 +// SetFlags sets the string value in the BgpSrteSegmentFTypeSubTlv object +func (obj *bgpSrteSegmentFTypeSubTlv) SetFlags(value string) BgpSrteSegmentFTypeSubTlv { + + obj.obj.Flags = &value return obj } -// Offset in bits relative to start of corresponding header field -// Offset returns a uint32 -func (obj *patternFlowIpv4PriorityRawMetricTag) Offset() uint32 { +// Local IPv4 Address. +// LocalIpv4Address returns a string +func (obj *bgpSrteSegmentFTypeSubTlv) LocalIpv4Address() string { - return *obj.obj.Offset + return *obj.obj.LocalIpv4Address } -// Offset in bits relative to start of corresponding header field -// Offset returns a uint32 -func (obj *patternFlowIpv4PriorityRawMetricTag) HasOffset() bool { - return obj.obj.Offset != nil +// Local IPv4 Address. +// SetLocalIpv4Address sets the string value in the BgpSrteSegmentFTypeSubTlv object +func (obj *bgpSrteSegmentFTypeSubTlv) SetLocalIpv4Address(value string) BgpSrteSegmentFTypeSubTlv { + + obj.obj.LocalIpv4Address = &value + return obj } -// Offset in bits relative to start of corresponding header field -// SetOffset sets the uint32 value in the PatternFlowIpv4PriorityRawMetricTag object -func (obj *patternFlowIpv4PriorityRawMetricTag) SetOffset(value uint32) PatternFlowIpv4PriorityRawMetricTag { +// Remote IPv4 Address. +// RemoteIpv4Address returns a string +func (obj *bgpSrteSegmentFTypeSubTlv) RemoteIpv4Address() string { + + return *obj.obj.RemoteIpv4Address - obj.obj.Offset = &value - return obj } -// Number of bits to track for metrics starting from configured offset of corresponding header field -// Length returns a uint32 -func (obj *patternFlowIpv4PriorityRawMetricTag) Length() uint32 { +// Remote IPv4 Address. +// SetRemoteIpv4Address sets the string value in the BgpSrteSegmentFTypeSubTlv object +func (obj *bgpSrteSegmentFTypeSubTlv) SetRemoteIpv4Address(value string) BgpSrteSegmentFTypeSubTlv { - return *obj.obj.Length + obj.obj.RemoteIpv4Address = &value + return obj +} +// Optional SR-MPLS SID. +// SrMplsSid returns a BgpSrteSrMplsSid +func (obj *bgpSrteSegmentFTypeSubTlv) SrMplsSid() BgpSrteSrMplsSid { + if obj.obj.SrMplsSid == nil { + obj.obj.SrMplsSid = NewBgpSrteSrMplsSid().Msg() + } + if obj.srMplsSidHolder == nil { + obj.srMplsSidHolder = &bgpSrteSrMplsSid{obj: obj.obj.SrMplsSid} + } + return obj.srMplsSidHolder } -// Number of bits to track for metrics starting from configured offset of corresponding header field -// Length returns a uint32 -func (obj *patternFlowIpv4PriorityRawMetricTag) HasLength() bool { - return obj.obj.Length != nil +// Optional SR-MPLS SID. +// SrMplsSid returns a BgpSrteSrMplsSid +func (obj *bgpSrteSegmentFTypeSubTlv) HasSrMplsSid() bool { + return obj.obj.SrMplsSid != nil } -// Number of bits to track for metrics starting from configured offset of corresponding header field -// SetLength sets the uint32 value in the PatternFlowIpv4PriorityRawMetricTag object -func (obj *patternFlowIpv4PriorityRawMetricTag) SetLength(value uint32) PatternFlowIpv4PriorityRawMetricTag { +// Optional SR-MPLS SID. +// SetSrMplsSid sets the BgpSrteSrMplsSid value in the BgpSrteSegmentFTypeSubTlv object +func (obj *bgpSrteSegmentFTypeSubTlv) SetSrMplsSid(value BgpSrteSrMplsSid) BgpSrteSegmentFTypeSubTlv { + + obj.srMplsSidHolder = nil + obj.obj.SrMplsSid = value.Msg() - obj.obj.Length = &value return obj } -func (obj *patternFlowIpv4PriorityRawMetricTag) validateObj(vObj *validation, set_default bool) { +func (obj *bgpSrteSegmentFTypeSubTlv) validateObj(vObj *validation, set_default bool) { if set_default { obj.setDefault() } - // Name is required - if obj.obj.Name == nil { - vObj.validationErrors = append(vObj.validationErrors, "Name is required field on interface PatternFlowIpv4PriorityRawMetricTag") + if obj.obj.Flags != nil { + + err := obj.validateHex(obj.Flags()) + if err != nil { + vObj.validationErrors = append(vObj.validationErrors, fmt.Sprintf("%s %s", err.Error(), "on BgpSrteSegmentFTypeSubTlv.Flags")) + } + } - if obj.obj.Offset != nil { + // LocalIpv4Address is required + if obj.obj.LocalIpv4Address == nil { + vObj.validationErrors = append(vObj.validationErrors, "LocalIpv4Address is required field on interface BgpSrteSegmentFTypeSubTlv") + } + if obj.obj.LocalIpv4Address != nil { - if *obj.obj.Offset > 7 { - vObj.validationErrors = append( - vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowIpv4PriorityRawMetricTag.Offset <= 7 but Got %d", *obj.obj.Offset)) + err := obj.validateIpv4(obj.LocalIpv4Address()) + if err != nil { + vObj.validationErrors = append(vObj.validationErrors, fmt.Sprintf("%s %s", err.Error(), "on BgpSrteSegmentFTypeSubTlv.LocalIpv4Address")) } } - if obj.obj.Length != nil { + // RemoteIpv4Address is required + if obj.obj.RemoteIpv4Address == nil { + vObj.validationErrors = append(vObj.validationErrors, "RemoteIpv4Address is required field on interface BgpSrteSegmentFTypeSubTlv") + } + if obj.obj.RemoteIpv4Address != nil { - if *obj.obj.Length < 1 || *obj.obj.Length > 8 { - vObj.validationErrors = append( - vObj.validationErrors, - fmt.Sprintf("1 <= PatternFlowIpv4PriorityRawMetricTag.Length <= 8 but Got %d", *obj.obj.Length)) + err := obj.validateIpv4(obj.RemoteIpv4Address()) + if err != nil { + vObj.validationErrors = append(vObj.validationErrors, fmt.Sprintf("%s %s", err.Error(), "on BgpSrteSegmentFTypeSubTlv.RemoteIpv4Address")) } } -} + if obj.obj.SrMplsSid != nil { -func (obj *patternFlowIpv4PriorityRawMetricTag) setDefault() { - if obj.obj.Offset == nil { - obj.SetOffset(0) - } - if obj.obj.Length == nil { - obj.SetLength(8) + obj.SrMplsSid().validateObj(vObj, set_default) } } -// ***** PatternFlowIpv4TosPrecedence ***** -type patternFlowIpv4TosPrecedence struct { +func (obj *bgpSrteSegmentFTypeSubTlv) setDefault() { + +} + +// ***** BgpSrteSegmentGTypeSubTlv ***** +type bgpSrteSegmentGTypeSubTlv struct { validation - obj *otg.PatternFlowIpv4TosPrecedence - incrementHolder PatternFlowIpv4TosPrecedenceCounter - decrementHolder PatternFlowIpv4TosPrecedenceCounter - metricTagsHolder PatternFlowIpv4TosPrecedencePatternFlowIpv4TosPrecedenceMetricTagIter + obj *otg.BgpSrteSegmentGTypeSubTlv + srMplsSidHolder BgpSrteSrMplsSid } -func NewPatternFlowIpv4TosPrecedence() PatternFlowIpv4TosPrecedence { - obj := patternFlowIpv4TosPrecedence{obj: &otg.PatternFlowIpv4TosPrecedence{}} +func NewBgpSrteSegmentGTypeSubTlv() BgpSrteSegmentGTypeSubTlv { + obj := bgpSrteSegmentGTypeSubTlv{obj: &otg.BgpSrteSegmentGTypeSubTlv{}} obj.setDefault() return &obj } -func (obj *patternFlowIpv4TosPrecedence) Msg() *otg.PatternFlowIpv4TosPrecedence { +func (obj *bgpSrteSegmentGTypeSubTlv) Msg() *otg.BgpSrteSegmentGTypeSubTlv { return obj.obj } -func (obj *patternFlowIpv4TosPrecedence) SetMsg(msg *otg.PatternFlowIpv4TosPrecedence) PatternFlowIpv4TosPrecedence { +func (obj *bgpSrteSegmentGTypeSubTlv) SetMsg(msg *otg.BgpSrteSegmentGTypeSubTlv) BgpSrteSegmentGTypeSubTlv { obj.setNil() proto.Merge(obj.obj, msg) return obj } -func (obj *patternFlowIpv4TosPrecedence) ToProto() (*otg.PatternFlowIpv4TosPrecedence, error) { +func (obj *bgpSrteSegmentGTypeSubTlv) ToProto() (*otg.BgpSrteSegmentGTypeSubTlv, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -282936,7 +328351,7 @@ func (obj *patternFlowIpv4TosPrecedence) ToProto() (*otg.PatternFlowIpv4TosPrece return obj.Msg(), nil } -func (obj *patternFlowIpv4TosPrecedence) FromProto(msg *otg.PatternFlowIpv4TosPrecedence) (PatternFlowIpv4TosPrecedence, error) { +func (obj *bgpSrteSegmentGTypeSubTlv) FromProto(msg *otg.BgpSrteSegmentGTypeSubTlv) (BgpSrteSegmentGTypeSubTlv, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -282945,7 +328360,7 @@ func (obj *patternFlowIpv4TosPrecedence) FromProto(msg *otg.PatternFlowIpv4TosPr return newObj, nil } -func (obj *patternFlowIpv4TosPrecedence) ToPbText() (string, error) { +func (obj *bgpSrteSegmentGTypeSubTlv) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -282957,7 +328372,7 @@ func (obj *patternFlowIpv4TosPrecedence) ToPbText() (string, error) { return string(protoMarshal), nil } -func (obj *patternFlowIpv4TosPrecedence) FromPbText(value string) error { +func (obj *bgpSrteSegmentGTypeSubTlv) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj @@ -282970,7 +328385,7 @@ func (obj *patternFlowIpv4TosPrecedence) FromPbText(value string) error { return retObj } -func (obj *patternFlowIpv4TosPrecedence) ToYaml() (string, error) { +func (obj *bgpSrteSegmentGTypeSubTlv) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -282991,7 +328406,7 @@ func (obj *patternFlowIpv4TosPrecedence) ToYaml() (string, error) { return string(data), nil } -func (obj *patternFlowIpv4TosPrecedence) FromYaml(value string) error { +func (obj *bgpSrteSegmentGTypeSubTlv) FromYaml(value string) error { if value == "" { value = "{}" } @@ -283016,7 +328431,7 @@ func (obj *patternFlowIpv4TosPrecedence) FromYaml(value string) error { return nil } -func (obj *patternFlowIpv4TosPrecedence) ToJson() (string, error) { +func (obj *bgpSrteSegmentGTypeSubTlv) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -283034,7 +328449,7 @@ func (obj *patternFlowIpv4TosPrecedence) ToJson() (string, error) { return string(data), nil } -func (obj *patternFlowIpv4TosPrecedence) FromJson(value string) error { +func (obj *bgpSrteSegmentGTypeSubTlv) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -283055,19 +328470,19 @@ func (obj *patternFlowIpv4TosPrecedence) FromJson(value string) error { return nil } -func (obj *patternFlowIpv4TosPrecedence) validateToAndFrom() error { +func (obj *bgpSrteSegmentGTypeSubTlv) validateToAndFrom() error { // emptyVars() obj.validateObj(&obj.validation, true) return obj.validationResult() } -func (obj *patternFlowIpv4TosPrecedence) Validate() error { +func (obj *bgpSrteSegmentGTypeSubTlv) Validate() error { // emptyVars() obj.validateObj(&obj.validation, false) return obj.validationResult() } -func (obj *patternFlowIpv4TosPrecedence) String() string { +func (obj *bgpSrteSegmentGTypeSubTlv) String() string { str, err := obj.ToYaml() if err != nil { return err.Error() @@ -283075,12 +328490,12 @@ func (obj *patternFlowIpv4TosPrecedence) String() string { return str } -func (obj *patternFlowIpv4TosPrecedence) Clone() (PatternFlowIpv4TosPrecedence, error) { +func (obj *bgpSrteSegmentGTypeSubTlv) Clone() (BgpSrteSegmentGTypeSubTlv, error) { vErr := obj.Validate() if vErr != nil { return nil, vErr } - newObj := NewPatternFlowIpv4TosPrecedence() + newObj := NewBgpSrteSegmentGTypeSubTlv() data, err := proto.Marshal(obj.Msg()) if err != nil { return nil, err @@ -283092,426 +328507,291 @@ func (obj *patternFlowIpv4TosPrecedence) Clone() (PatternFlowIpv4TosPrecedence, return newObj, nil } -func (obj *patternFlowIpv4TosPrecedence) setNil() { - obj.incrementHolder = nil - obj.decrementHolder = nil - obj.metricTagsHolder = nil +func (obj *bgpSrteSegmentGTypeSubTlv) setNil() { + obj.srMplsSidHolder = nil obj.validationErrors = nil obj.warnings = nil obj.constraints = make(map[string]map[string]Constraints) } -// PatternFlowIpv4TosPrecedence is precedence -type PatternFlowIpv4TosPrecedence interface { +// BgpSrteSegmentGTypeSubTlv is type G: IPv6 Address, Interface ID for local and remote pair with optional SID for SR MPLS. +type BgpSrteSegmentGTypeSubTlv interface { Validation - // Msg marshals PatternFlowIpv4TosPrecedence to protobuf object *otg.PatternFlowIpv4TosPrecedence + // Msg marshals BgpSrteSegmentGTypeSubTlv to protobuf object *otg.BgpSrteSegmentGTypeSubTlv // and doesn't set defaults - Msg() *otg.PatternFlowIpv4TosPrecedence - // SetMsg unmarshals PatternFlowIpv4TosPrecedence from protobuf object *otg.PatternFlowIpv4TosPrecedence + Msg() *otg.BgpSrteSegmentGTypeSubTlv + // SetMsg unmarshals BgpSrteSegmentGTypeSubTlv from protobuf object *otg.BgpSrteSegmentGTypeSubTlv // and doesn't set defaults - SetMsg(*otg.PatternFlowIpv4TosPrecedence) PatternFlowIpv4TosPrecedence - // ToProto marshals PatternFlowIpv4TosPrecedence to protobuf object *otg.PatternFlowIpv4TosPrecedence - ToProto() (*otg.PatternFlowIpv4TosPrecedence, error) - // ToPbText marshals PatternFlowIpv4TosPrecedence to protobuf text + SetMsg(*otg.BgpSrteSegmentGTypeSubTlv) BgpSrteSegmentGTypeSubTlv + // ToProto marshals BgpSrteSegmentGTypeSubTlv to protobuf object *otg.BgpSrteSegmentGTypeSubTlv + ToProto() (*otg.BgpSrteSegmentGTypeSubTlv, error) + // ToPbText marshals BgpSrteSegmentGTypeSubTlv to protobuf text ToPbText() (string, error) - // ToYaml marshals PatternFlowIpv4TosPrecedence to YAML text + // ToYaml marshals BgpSrteSegmentGTypeSubTlv to YAML text ToYaml() (string, error) - // ToJson marshals PatternFlowIpv4TosPrecedence to JSON text + // ToJson marshals BgpSrteSegmentGTypeSubTlv to JSON text ToJson() (string, error) - // FromProto unmarshals PatternFlowIpv4TosPrecedence from protobuf object *otg.PatternFlowIpv4TosPrecedence - FromProto(msg *otg.PatternFlowIpv4TosPrecedence) (PatternFlowIpv4TosPrecedence, error) - // FromPbText unmarshals PatternFlowIpv4TosPrecedence from protobuf text + // FromProto unmarshals BgpSrteSegmentGTypeSubTlv from protobuf object *otg.BgpSrteSegmentGTypeSubTlv + FromProto(msg *otg.BgpSrteSegmentGTypeSubTlv) (BgpSrteSegmentGTypeSubTlv, error) + // FromPbText unmarshals BgpSrteSegmentGTypeSubTlv from protobuf text FromPbText(value string) error - // FromYaml unmarshals PatternFlowIpv4TosPrecedence from YAML text + // FromYaml unmarshals BgpSrteSegmentGTypeSubTlv from YAML text FromYaml(value string) error - // FromJson unmarshals PatternFlowIpv4TosPrecedence from JSON text + // FromJson unmarshals BgpSrteSegmentGTypeSubTlv from JSON text FromJson(value string) error - // Validate validates PatternFlowIpv4TosPrecedence + // Validate validates BgpSrteSegmentGTypeSubTlv Validate() error // A stringer function String() string // Clones the object - Clone() (PatternFlowIpv4TosPrecedence, error) + Clone() (BgpSrteSegmentGTypeSubTlv, error) validateToAndFrom() error validateObj(vObj *validation, set_default bool) setDefault() - // Choice returns PatternFlowIpv4TosPrecedenceChoiceEnum, set in PatternFlowIpv4TosPrecedence - Choice() PatternFlowIpv4TosPrecedenceChoiceEnum - // SetChoice assigns PatternFlowIpv4TosPrecedenceChoiceEnum provided by user to PatternFlowIpv4TosPrecedence - SetChoice(value PatternFlowIpv4TosPrecedenceChoiceEnum) PatternFlowIpv4TosPrecedence - // HasChoice checks if Choice has been set in PatternFlowIpv4TosPrecedence - HasChoice() bool - // Value returns uint32, set in PatternFlowIpv4TosPrecedence. - Value() uint32 - // SetValue assigns uint32 provided by user to PatternFlowIpv4TosPrecedence - SetValue(value uint32) PatternFlowIpv4TosPrecedence - // HasValue checks if Value has been set in PatternFlowIpv4TosPrecedence - HasValue() bool - // Values returns []uint32, set in PatternFlowIpv4TosPrecedence. - Values() []uint32 - // SetValues assigns []uint32 provided by user to PatternFlowIpv4TosPrecedence - SetValues(value []uint32) PatternFlowIpv4TosPrecedence - // Increment returns PatternFlowIpv4TosPrecedenceCounter, set in PatternFlowIpv4TosPrecedence. - // PatternFlowIpv4TosPrecedenceCounter is integer counter pattern - Increment() PatternFlowIpv4TosPrecedenceCounter - // SetIncrement assigns PatternFlowIpv4TosPrecedenceCounter provided by user to PatternFlowIpv4TosPrecedence. - // PatternFlowIpv4TosPrecedenceCounter is integer counter pattern - SetIncrement(value PatternFlowIpv4TosPrecedenceCounter) PatternFlowIpv4TosPrecedence - // HasIncrement checks if Increment has been set in PatternFlowIpv4TosPrecedence - HasIncrement() bool - // Decrement returns PatternFlowIpv4TosPrecedenceCounter, set in PatternFlowIpv4TosPrecedence. - // PatternFlowIpv4TosPrecedenceCounter is integer counter pattern - Decrement() PatternFlowIpv4TosPrecedenceCounter - // SetDecrement assigns PatternFlowIpv4TosPrecedenceCounter provided by user to PatternFlowIpv4TosPrecedence. - // PatternFlowIpv4TosPrecedenceCounter is integer counter pattern - SetDecrement(value PatternFlowIpv4TosPrecedenceCounter) PatternFlowIpv4TosPrecedence - // HasDecrement checks if Decrement has been set in PatternFlowIpv4TosPrecedence - HasDecrement() bool - // MetricTags returns PatternFlowIpv4TosPrecedencePatternFlowIpv4TosPrecedenceMetricTagIterIter, set in PatternFlowIpv4TosPrecedence - MetricTags() PatternFlowIpv4TosPrecedencePatternFlowIpv4TosPrecedenceMetricTagIter + // Flags returns string, set in BgpSrteSegmentGTypeSubTlv. + Flags() string + // SetFlags assigns string provided by user to BgpSrteSegmentGTypeSubTlv + SetFlags(value string) BgpSrteSegmentGTypeSubTlv + // HasFlags checks if Flags has been set in BgpSrteSegmentGTypeSubTlv + HasFlags() bool + // LocalInterfaceId returns uint32, set in BgpSrteSegmentGTypeSubTlv. + LocalInterfaceId() uint32 + // SetLocalInterfaceId assigns uint32 provided by user to BgpSrteSegmentGTypeSubTlv + SetLocalInterfaceId(value uint32) BgpSrteSegmentGTypeSubTlv + // HasLocalInterfaceId checks if LocalInterfaceId has been set in BgpSrteSegmentGTypeSubTlv + HasLocalInterfaceId() bool + // LocalIpv6NodeAddress returns string, set in BgpSrteSegmentGTypeSubTlv. + LocalIpv6NodeAddress() string + // SetLocalIpv6NodeAddress assigns string provided by user to BgpSrteSegmentGTypeSubTlv + SetLocalIpv6NodeAddress(value string) BgpSrteSegmentGTypeSubTlv + // RemoteInterfaceId returns uint32, set in BgpSrteSegmentGTypeSubTlv. + RemoteInterfaceId() uint32 + // SetRemoteInterfaceId assigns uint32 provided by user to BgpSrteSegmentGTypeSubTlv + SetRemoteInterfaceId(value uint32) BgpSrteSegmentGTypeSubTlv + // HasRemoteInterfaceId checks if RemoteInterfaceId has been set in BgpSrteSegmentGTypeSubTlv + HasRemoteInterfaceId() bool + // RemoteIpv6NodeAddress returns string, set in BgpSrteSegmentGTypeSubTlv. + RemoteIpv6NodeAddress() string + // SetRemoteIpv6NodeAddress assigns string provided by user to BgpSrteSegmentGTypeSubTlv + SetRemoteIpv6NodeAddress(value string) BgpSrteSegmentGTypeSubTlv + // SrMplsSid returns BgpSrteSrMplsSid, set in BgpSrteSegmentGTypeSubTlv. + // BgpSrteSrMplsSid is configuration for SR-MPLS with Label, TC, Bottom-of-Stack and TTL. + SrMplsSid() BgpSrteSrMplsSid + // SetSrMplsSid assigns BgpSrteSrMplsSid provided by user to BgpSrteSegmentGTypeSubTlv. + // BgpSrteSrMplsSid is configuration for SR-MPLS with Label, TC, Bottom-of-Stack and TTL. + SetSrMplsSid(value BgpSrteSrMplsSid) BgpSrteSegmentGTypeSubTlv + // HasSrMplsSid checks if SrMplsSid has been set in BgpSrteSegmentGTypeSubTlv + HasSrMplsSid() bool setNil() } -type PatternFlowIpv4TosPrecedenceChoiceEnum string +// One octet bitmap for flags including V-Flag, A-Flag, S-Flag, B-Flag etc. as defined in https://datatracker.ietf.org/doc/html/draft-ietf-idr-segment-routing-te-policy-13#section-2.4.4.2.12 +// Flags returns a string +func (obj *bgpSrteSegmentGTypeSubTlv) Flags() string { -// Enum of Choice on PatternFlowIpv4TosPrecedence -var PatternFlowIpv4TosPrecedenceChoice = struct { - VALUE PatternFlowIpv4TosPrecedenceChoiceEnum - VALUES PatternFlowIpv4TosPrecedenceChoiceEnum - INCREMENT PatternFlowIpv4TosPrecedenceChoiceEnum - DECREMENT PatternFlowIpv4TosPrecedenceChoiceEnum -}{ - VALUE: PatternFlowIpv4TosPrecedenceChoiceEnum("value"), - VALUES: PatternFlowIpv4TosPrecedenceChoiceEnum("values"), - INCREMENT: PatternFlowIpv4TosPrecedenceChoiceEnum("increment"), - DECREMENT: PatternFlowIpv4TosPrecedenceChoiceEnum("decrement"), -} + return *obj.obj.Flags -func (obj *patternFlowIpv4TosPrecedence) Choice() PatternFlowIpv4TosPrecedenceChoiceEnum { - return PatternFlowIpv4TosPrecedenceChoiceEnum(obj.obj.Choice.Enum().String()) } -// description is TBD -// Choice returns a string -func (obj *patternFlowIpv4TosPrecedence) HasChoice() bool { - return obj.obj.Choice != nil +// One octet bitmap for flags including V-Flag, A-Flag, S-Flag, B-Flag etc. as defined in https://datatracker.ietf.org/doc/html/draft-ietf-idr-segment-routing-te-policy-13#section-2.4.4.2.12 +// Flags returns a string +func (obj *bgpSrteSegmentGTypeSubTlv) HasFlags() bool { + return obj.obj.Flags != nil } -func (obj *patternFlowIpv4TosPrecedence) SetChoice(value PatternFlowIpv4TosPrecedenceChoiceEnum) PatternFlowIpv4TosPrecedence { - intValue, ok := otg.PatternFlowIpv4TosPrecedence_Choice_Enum_value[string(value)] - if !ok { - obj.validationErrors = append(obj.validationErrors, fmt.Sprintf( - "%s is not a valid choice on PatternFlowIpv4TosPrecedenceChoiceEnum", string(value))) - return obj - } - enumValue := otg.PatternFlowIpv4TosPrecedence_Choice_Enum(intValue) - obj.obj.Choice = &enumValue - obj.obj.Decrement = nil - obj.decrementHolder = nil - obj.obj.Increment = nil - obj.incrementHolder = nil - obj.obj.Values = nil - obj.obj.Value = nil - - if value == PatternFlowIpv4TosPrecedenceChoice.VALUE { - defaultValue := uint32(0) - obj.obj.Value = &defaultValue - } - - if value == PatternFlowIpv4TosPrecedenceChoice.VALUES { - defaultValue := []uint32{0} - obj.obj.Values = defaultValue - } - - if value == PatternFlowIpv4TosPrecedenceChoice.INCREMENT { - obj.obj.Increment = NewPatternFlowIpv4TosPrecedenceCounter().Msg() - } - - if value == PatternFlowIpv4TosPrecedenceChoice.DECREMENT { - obj.obj.Decrement = NewPatternFlowIpv4TosPrecedenceCounter().Msg() - } +// One octet bitmap for flags including V-Flag, A-Flag, S-Flag, B-Flag etc. as defined in https://datatracker.ietf.org/doc/html/draft-ietf-idr-segment-routing-te-policy-13#section-2.4.4.2.12 +// SetFlags sets the string value in the BgpSrteSegmentGTypeSubTlv object +func (obj *bgpSrteSegmentGTypeSubTlv) SetFlags(value string) BgpSrteSegmentGTypeSubTlv { + obj.obj.Flags = &value return obj } -// description is TBD -// Value returns a uint32 -func (obj *patternFlowIpv4TosPrecedence) Value() uint32 { - - if obj.obj.Value == nil { - obj.SetChoice(PatternFlowIpv4TosPrecedenceChoice.VALUE) - } +// Local Interface ID: The Interface Index as defined in [RFC8664]. +// LocalInterfaceId returns a uint32 +func (obj *bgpSrteSegmentGTypeSubTlv) LocalInterfaceId() uint32 { - return *obj.obj.Value + return *obj.obj.LocalInterfaceId } -// description is TBD -// Value returns a uint32 -func (obj *patternFlowIpv4TosPrecedence) HasValue() bool { - return obj.obj.Value != nil +// Local Interface ID: The Interface Index as defined in [RFC8664]. +// LocalInterfaceId returns a uint32 +func (obj *bgpSrteSegmentGTypeSubTlv) HasLocalInterfaceId() bool { + return obj.obj.LocalInterfaceId != nil } -// description is TBD -// SetValue sets the uint32 value in the PatternFlowIpv4TosPrecedence object -func (obj *patternFlowIpv4TosPrecedence) SetValue(value uint32) PatternFlowIpv4TosPrecedence { - obj.SetChoice(PatternFlowIpv4TosPrecedenceChoice.VALUE) - obj.obj.Value = &value +// Local Interface ID: The Interface Index as defined in [RFC8664]. +// SetLocalInterfaceId sets the uint32 value in the BgpSrteSegmentGTypeSubTlv object +func (obj *bgpSrteSegmentGTypeSubTlv) SetLocalInterfaceId(value uint32) BgpSrteSegmentGTypeSubTlv { + + obj.obj.LocalInterfaceId = &value return obj } -// description is TBD -// Values returns a []uint32 -func (obj *patternFlowIpv4TosPrecedence) Values() []uint32 { - if obj.obj.Values == nil { - obj.SetValues([]uint32{0}) - } - return obj.obj.Values -} +// IPv6 address representing a node. +// LocalIpv6NodeAddress returns a string +func (obj *bgpSrteSegmentGTypeSubTlv) LocalIpv6NodeAddress() string { -// description is TBD -// SetValues sets the []uint32 value in the PatternFlowIpv4TosPrecedence object -func (obj *patternFlowIpv4TosPrecedence) SetValues(value []uint32) PatternFlowIpv4TosPrecedence { - obj.SetChoice(PatternFlowIpv4TosPrecedenceChoice.VALUES) - if obj.obj.Values == nil { - obj.obj.Values = make([]uint32, 0) - } - obj.obj.Values = value + return *obj.obj.LocalIpv6NodeAddress - return obj } -// description is TBD -// Increment returns a PatternFlowIpv4TosPrecedenceCounter -func (obj *patternFlowIpv4TosPrecedence) Increment() PatternFlowIpv4TosPrecedenceCounter { - if obj.obj.Increment == nil { - obj.SetChoice(PatternFlowIpv4TosPrecedenceChoice.INCREMENT) - } - if obj.incrementHolder == nil { - obj.incrementHolder = &patternFlowIpv4TosPrecedenceCounter{obj: obj.obj.Increment} - } - return obj.incrementHolder -} +// IPv6 address representing a node. +// SetLocalIpv6NodeAddress sets the string value in the BgpSrteSegmentGTypeSubTlv object +func (obj *bgpSrteSegmentGTypeSubTlv) SetLocalIpv6NodeAddress(value string) BgpSrteSegmentGTypeSubTlv { -// description is TBD -// Increment returns a PatternFlowIpv4TosPrecedenceCounter -func (obj *patternFlowIpv4TosPrecedence) HasIncrement() bool { - return obj.obj.Increment != nil + obj.obj.LocalIpv6NodeAddress = &value + return obj } -// description is TBD -// SetIncrement sets the PatternFlowIpv4TosPrecedenceCounter value in the PatternFlowIpv4TosPrecedence object -func (obj *patternFlowIpv4TosPrecedence) SetIncrement(value PatternFlowIpv4TosPrecedenceCounter) PatternFlowIpv4TosPrecedence { - obj.SetChoice(PatternFlowIpv4TosPrecedenceChoice.INCREMENT) - obj.incrementHolder = nil - obj.obj.Increment = value.Msg() +// Local Interface ID: The Interface Index as defined in [RFC8664]. +// RemoteInterfaceId returns a uint32 +func (obj *bgpSrteSegmentGTypeSubTlv) RemoteInterfaceId() uint32 { - return obj -} + return *obj.obj.RemoteInterfaceId -// description is TBD -// Decrement returns a PatternFlowIpv4TosPrecedenceCounter -func (obj *patternFlowIpv4TosPrecedence) Decrement() PatternFlowIpv4TosPrecedenceCounter { - if obj.obj.Decrement == nil { - obj.SetChoice(PatternFlowIpv4TosPrecedenceChoice.DECREMENT) - } - if obj.decrementHolder == nil { - obj.decrementHolder = &patternFlowIpv4TosPrecedenceCounter{obj: obj.obj.Decrement} - } - return obj.decrementHolder } -// description is TBD -// Decrement returns a PatternFlowIpv4TosPrecedenceCounter -func (obj *patternFlowIpv4TosPrecedence) HasDecrement() bool { - return obj.obj.Decrement != nil +// Local Interface ID: The Interface Index as defined in [RFC8664]. +// RemoteInterfaceId returns a uint32 +func (obj *bgpSrteSegmentGTypeSubTlv) HasRemoteInterfaceId() bool { + return obj.obj.RemoteInterfaceId != nil } -// description is TBD -// SetDecrement sets the PatternFlowIpv4TosPrecedenceCounter value in the PatternFlowIpv4TosPrecedence object -func (obj *patternFlowIpv4TosPrecedence) SetDecrement(value PatternFlowIpv4TosPrecedenceCounter) PatternFlowIpv4TosPrecedence { - obj.SetChoice(PatternFlowIpv4TosPrecedenceChoice.DECREMENT) - obj.decrementHolder = nil - obj.obj.Decrement = value.Msg() +// Local Interface ID: The Interface Index as defined in [RFC8664]. +// SetRemoteInterfaceId sets the uint32 value in the BgpSrteSegmentGTypeSubTlv object +func (obj *bgpSrteSegmentGTypeSubTlv) SetRemoteInterfaceId(value uint32) BgpSrteSegmentGTypeSubTlv { + obj.obj.RemoteInterfaceId = &value return obj } -// One or more metric tags can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. -// MetricTags returns a []PatternFlowIpv4TosPrecedenceMetricTag -func (obj *patternFlowIpv4TosPrecedence) MetricTags() PatternFlowIpv4TosPrecedencePatternFlowIpv4TosPrecedenceMetricTagIter { - if len(obj.obj.MetricTags) == 0 { - obj.obj.MetricTags = []*otg.PatternFlowIpv4TosPrecedenceMetricTag{} - } - if obj.metricTagsHolder == nil { - obj.metricTagsHolder = newPatternFlowIpv4TosPrecedencePatternFlowIpv4TosPrecedenceMetricTagIter(&obj.obj.MetricTags).setMsg(obj) - } - return obj.metricTagsHolder -} +// IPv6 address representing a node. +// RemoteIpv6NodeAddress returns a string +func (obj *bgpSrteSegmentGTypeSubTlv) RemoteIpv6NodeAddress() string { -type patternFlowIpv4TosPrecedencePatternFlowIpv4TosPrecedenceMetricTagIter struct { - obj *patternFlowIpv4TosPrecedence - patternFlowIpv4TosPrecedenceMetricTagSlice []PatternFlowIpv4TosPrecedenceMetricTag - fieldPtr *[]*otg.PatternFlowIpv4TosPrecedenceMetricTag -} + return *obj.obj.RemoteIpv6NodeAddress -func newPatternFlowIpv4TosPrecedencePatternFlowIpv4TosPrecedenceMetricTagIter(ptr *[]*otg.PatternFlowIpv4TosPrecedenceMetricTag) PatternFlowIpv4TosPrecedencePatternFlowIpv4TosPrecedenceMetricTagIter { - return &patternFlowIpv4TosPrecedencePatternFlowIpv4TosPrecedenceMetricTagIter{fieldPtr: ptr} } -type PatternFlowIpv4TosPrecedencePatternFlowIpv4TosPrecedenceMetricTagIter interface { - setMsg(*patternFlowIpv4TosPrecedence) PatternFlowIpv4TosPrecedencePatternFlowIpv4TosPrecedenceMetricTagIter - Items() []PatternFlowIpv4TosPrecedenceMetricTag - Add() PatternFlowIpv4TosPrecedenceMetricTag - Append(items ...PatternFlowIpv4TosPrecedenceMetricTag) PatternFlowIpv4TosPrecedencePatternFlowIpv4TosPrecedenceMetricTagIter - Set(index int, newObj PatternFlowIpv4TosPrecedenceMetricTag) PatternFlowIpv4TosPrecedencePatternFlowIpv4TosPrecedenceMetricTagIter - Clear() PatternFlowIpv4TosPrecedencePatternFlowIpv4TosPrecedenceMetricTagIter - clearHolderSlice() PatternFlowIpv4TosPrecedencePatternFlowIpv4TosPrecedenceMetricTagIter - appendHolderSlice(item PatternFlowIpv4TosPrecedenceMetricTag) PatternFlowIpv4TosPrecedencePatternFlowIpv4TosPrecedenceMetricTagIter -} +// IPv6 address representing a node. +// SetRemoteIpv6NodeAddress sets the string value in the BgpSrteSegmentGTypeSubTlv object +func (obj *bgpSrteSegmentGTypeSubTlv) SetRemoteIpv6NodeAddress(value string) BgpSrteSegmentGTypeSubTlv { -func (obj *patternFlowIpv4TosPrecedencePatternFlowIpv4TosPrecedenceMetricTagIter) setMsg(msg *patternFlowIpv4TosPrecedence) PatternFlowIpv4TosPrecedencePatternFlowIpv4TosPrecedenceMetricTagIter { - obj.clearHolderSlice() - for _, val := range *obj.fieldPtr { - obj.appendHolderSlice(&patternFlowIpv4TosPrecedenceMetricTag{obj: val}) - } - obj.obj = msg + obj.obj.RemoteIpv6NodeAddress = &value return obj } -func (obj *patternFlowIpv4TosPrecedencePatternFlowIpv4TosPrecedenceMetricTagIter) Items() []PatternFlowIpv4TosPrecedenceMetricTag { - return obj.patternFlowIpv4TosPrecedenceMetricTagSlice +// Optional SR-MPLS SID. +// SrMplsSid returns a BgpSrteSrMplsSid +func (obj *bgpSrteSegmentGTypeSubTlv) SrMplsSid() BgpSrteSrMplsSid { + if obj.obj.SrMplsSid == nil { + obj.obj.SrMplsSid = NewBgpSrteSrMplsSid().Msg() + } + if obj.srMplsSidHolder == nil { + obj.srMplsSidHolder = &bgpSrteSrMplsSid{obj: obj.obj.SrMplsSid} + } + return obj.srMplsSidHolder } -func (obj *patternFlowIpv4TosPrecedencePatternFlowIpv4TosPrecedenceMetricTagIter) Add() PatternFlowIpv4TosPrecedenceMetricTag { - newObj := &otg.PatternFlowIpv4TosPrecedenceMetricTag{} - *obj.fieldPtr = append(*obj.fieldPtr, newObj) - newLibObj := &patternFlowIpv4TosPrecedenceMetricTag{obj: newObj} - newLibObj.setDefault() - obj.patternFlowIpv4TosPrecedenceMetricTagSlice = append(obj.patternFlowIpv4TosPrecedenceMetricTagSlice, newLibObj) - return newLibObj +// Optional SR-MPLS SID. +// SrMplsSid returns a BgpSrteSrMplsSid +func (obj *bgpSrteSegmentGTypeSubTlv) HasSrMplsSid() bool { + return obj.obj.SrMplsSid != nil } -func (obj *patternFlowIpv4TosPrecedencePatternFlowIpv4TosPrecedenceMetricTagIter) Append(items ...PatternFlowIpv4TosPrecedenceMetricTag) PatternFlowIpv4TosPrecedencePatternFlowIpv4TosPrecedenceMetricTagIter { - for _, item := range items { - newObj := item.Msg() - *obj.fieldPtr = append(*obj.fieldPtr, newObj) - obj.patternFlowIpv4TosPrecedenceMetricTagSlice = append(obj.patternFlowIpv4TosPrecedenceMetricTagSlice, item) - } - return obj -} +// Optional SR-MPLS SID. +// SetSrMplsSid sets the BgpSrteSrMplsSid value in the BgpSrteSegmentGTypeSubTlv object +func (obj *bgpSrteSegmentGTypeSubTlv) SetSrMplsSid(value BgpSrteSrMplsSid) BgpSrteSegmentGTypeSubTlv { + + obj.srMplsSidHolder = nil + obj.obj.SrMplsSid = value.Msg() -func (obj *patternFlowIpv4TosPrecedencePatternFlowIpv4TosPrecedenceMetricTagIter) Set(index int, newObj PatternFlowIpv4TosPrecedenceMetricTag) PatternFlowIpv4TosPrecedencePatternFlowIpv4TosPrecedenceMetricTagIter { - (*obj.fieldPtr)[index] = newObj.Msg() - obj.patternFlowIpv4TosPrecedenceMetricTagSlice[index] = newObj - return obj -} -func (obj *patternFlowIpv4TosPrecedencePatternFlowIpv4TosPrecedenceMetricTagIter) Clear() PatternFlowIpv4TosPrecedencePatternFlowIpv4TosPrecedenceMetricTagIter { - if len(*obj.fieldPtr) > 0 { - *obj.fieldPtr = []*otg.PatternFlowIpv4TosPrecedenceMetricTag{} - obj.patternFlowIpv4TosPrecedenceMetricTagSlice = []PatternFlowIpv4TosPrecedenceMetricTag{} - } - return obj -} -func (obj *patternFlowIpv4TosPrecedencePatternFlowIpv4TosPrecedenceMetricTagIter) clearHolderSlice() PatternFlowIpv4TosPrecedencePatternFlowIpv4TosPrecedenceMetricTagIter { - if len(obj.patternFlowIpv4TosPrecedenceMetricTagSlice) > 0 { - obj.patternFlowIpv4TosPrecedenceMetricTagSlice = []PatternFlowIpv4TosPrecedenceMetricTag{} - } - return obj -} -func (obj *patternFlowIpv4TosPrecedencePatternFlowIpv4TosPrecedenceMetricTagIter) appendHolderSlice(item PatternFlowIpv4TosPrecedenceMetricTag) PatternFlowIpv4TosPrecedencePatternFlowIpv4TosPrecedenceMetricTagIter { - obj.patternFlowIpv4TosPrecedenceMetricTagSlice = append(obj.patternFlowIpv4TosPrecedenceMetricTagSlice, item) return obj } -func (obj *patternFlowIpv4TosPrecedence) validateObj(vObj *validation, set_default bool) { +func (obj *bgpSrteSegmentGTypeSubTlv) validateObj(vObj *validation, set_default bool) { if set_default { obj.setDefault() } - if obj.obj.Value != nil { + if obj.obj.Flags != nil { - if *obj.obj.Value > 7 { - vObj.validationErrors = append( - vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowIpv4TosPrecedence.Value <= 7 but Got %d", *obj.obj.Value)) + err := obj.validateHex(obj.Flags()) + if err != nil { + vObj.validationErrors = append(vObj.validationErrors, fmt.Sprintf("%s %s", err.Error(), "on BgpSrteSegmentGTypeSubTlv.Flags")) } } - if obj.obj.Values != nil { - - for _, item := range obj.obj.Values { - if item > 7 { - vObj.validationErrors = append( - vObj.validationErrors, - fmt.Sprintf("min(uint32) <= PatternFlowIpv4TosPrecedence.Values <= 7 but Got %d", item)) - } + // LocalIpv6NodeAddress is required + if obj.obj.LocalIpv6NodeAddress == nil { + vObj.validationErrors = append(vObj.validationErrors, "LocalIpv6NodeAddress is required field on interface BgpSrteSegmentGTypeSubTlv") + } + if obj.obj.LocalIpv6NodeAddress != nil { + err := obj.validateIpv6(obj.LocalIpv6NodeAddress()) + if err != nil { + vObj.validationErrors = append(vObj.validationErrors, fmt.Sprintf("%s %s", err.Error(), "on BgpSrteSegmentGTypeSubTlv.LocalIpv6NodeAddress")) } } - if obj.obj.Increment != nil { - - obj.Increment().validateObj(vObj, set_default) + // RemoteIpv6NodeAddress is required + if obj.obj.RemoteIpv6NodeAddress == nil { + vObj.validationErrors = append(vObj.validationErrors, "RemoteIpv6NodeAddress is required field on interface BgpSrteSegmentGTypeSubTlv") } + if obj.obj.RemoteIpv6NodeAddress != nil { - if obj.obj.Decrement != nil { + err := obj.validateIpv6(obj.RemoteIpv6NodeAddress()) + if err != nil { + vObj.validationErrors = append(vObj.validationErrors, fmt.Sprintf("%s %s", err.Error(), "on BgpSrteSegmentGTypeSubTlv.RemoteIpv6NodeAddress")) + } - obj.Decrement().validateObj(vObj, set_default) } - if len(obj.obj.MetricTags) != 0 { - - if set_default { - obj.MetricTags().clearHolderSlice() - for _, item := range obj.obj.MetricTags { - obj.MetricTags().appendHolderSlice(&patternFlowIpv4TosPrecedenceMetricTag{obj: item}) - } - } - for _, item := range obj.MetricTags().Items() { - item.validateObj(vObj, set_default) - } + if obj.obj.SrMplsSid != nil { + obj.SrMplsSid().validateObj(vObj, set_default) } } -func (obj *patternFlowIpv4TosPrecedence) setDefault() { - if obj.obj.Choice == nil { - obj.SetChoice(PatternFlowIpv4TosPrecedenceChoice.VALUE) - +func (obj *bgpSrteSegmentGTypeSubTlv) setDefault() { + if obj.obj.LocalInterfaceId == nil { + obj.SetLocalInterfaceId(0) + } + if obj.obj.RemoteInterfaceId == nil { + obj.SetRemoteInterfaceId(0) } } -// ***** PatternFlowIpv4TosDelay ***** -type patternFlowIpv4TosDelay struct { +// ***** BgpSrteSegmentHTypeSubTlv ***** +type bgpSrteSegmentHTypeSubTlv struct { validation - obj *otg.PatternFlowIpv4TosDelay - incrementHolder PatternFlowIpv4TosDelayCounter - decrementHolder PatternFlowIpv4TosDelayCounter - metricTagsHolder PatternFlowIpv4TosDelayPatternFlowIpv4TosDelayMetricTagIter + obj *otg.BgpSrteSegmentHTypeSubTlv + srMplsSidHolder BgpSrteSrMplsSid } -func NewPatternFlowIpv4TosDelay() PatternFlowIpv4TosDelay { - obj := patternFlowIpv4TosDelay{obj: &otg.PatternFlowIpv4TosDelay{}} +func NewBgpSrteSegmentHTypeSubTlv() BgpSrteSegmentHTypeSubTlv { + obj := bgpSrteSegmentHTypeSubTlv{obj: &otg.BgpSrteSegmentHTypeSubTlv{}} obj.setDefault() return &obj } -func (obj *patternFlowIpv4TosDelay) Msg() *otg.PatternFlowIpv4TosDelay { +func (obj *bgpSrteSegmentHTypeSubTlv) Msg() *otg.BgpSrteSegmentHTypeSubTlv { return obj.obj } -func (obj *patternFlowIpv4TosDelay) SetMsg(msg *otg.PatternFlowIpv4TosDelay) PatternFlowIpv4TosDelay { +func (obj *bgpSrteSegmentHTypeSubTlv) SetMsg(msg *otg.BgpSrteSegmentHTypeSubTlv) BgpSrteSegmentHTypeSubTlv { obj.setNil() proto.Merge(obj.obj, msg) return obj } -func (obj *patternFlowIpv4TosDelay) ToProto() (*otg.PatternFlowIpv4TosDelay, error) { +func (obj *bgpSrteSegmentHTypeSubTlv) ToProto() (*otg.BgpSrteSegmentHTypeSubTlv, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -283519,7 +328799,7 @@ func (obj *patternFlowIpv4TosDelay) ToProto() (*otg.PatternFlowIpv4TosDelay, err return obj.Msg(), nil } -func (obj *patternFlowIpv4TosDelay) FromProto(msg *otg.PatternFlowIpv4TosDelay) (PatternFlowIpv4TosDelay, error) { +func (obj *bgpSrteSegmentHTypeSubTlv) FromProto(msg *otg.BgpSrteSegmentHTypeSubTlv) (BgpSrteSegmentHTypeSubTlv, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -283528,7 +328808,7 @@ func (obj *patternFlowIpv4TosDelay) FromProto(msg *otg.PatternFlowIpv4TosDelay) return newObj, nil } -func (obj *patternFlowIpv4TosDelay) ToPbText() (string, error) { +func (obj *bgpSrteSegmentHTypeSubTlv) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -283540,7 +328820,7 @@ func (obj *patternFlowIpv4TosDelay) ToPbText() (string, error) { return string(protoMarshal), nil } -func (obj *patternFlowIpv4TosDelay) FromPbText(value string) error { +func (obj *bgpSrteSegmentHTypeSubTlv) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj @@ -283553,7 +328833,7 @@ func (obj *patternFlowIpv4TosDelay) FromPbText(value string) error { return retObj } -func (obj *patternFlowIpv4TosDelay) ToYaml() (string, error) { +func (obj *bgpSrteSegmentHTypeSubTlv) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -283574,7 +328854,7 @@ func (obj *patternFlowIpv4TosDelay) ToYaml() (string, error) { return string(data), nil } -func (obj *patternFlowIpv4TosDelay) FromYaml(value string) error { +func (obj *bgpSrteSegmentHTypeSubTlv) FromYaml(value string) error { if value == "" { value = "{}" } @@ -283599,7 +328879,7 @@ func (obj *patternFlowIpv4TosDelay) FromYaml(value string) error { return nil } -func (obj *patternFlowIpv4TosDelay) ToJson() (string, error) { +func (obj *bgpSrteSegmentHTypeSubTlv) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -283617,7 +328897,7 @@ func (obj *patternFlowIpv4TosDelay) ToJson() (string, error) { return string(data), nil } -func (obj *patternFlowIpv4TosDelay) FromJson(value string) error { +func (obj *bgpSrteSegmentHTypeSubTlv) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -283638,19 +328918,19 @@ func (obj *patternFlowIpv4TosDelay) FromJson(value string) error { return nil } -func (obj *patternFlowIpv4TosDelay) validateToAndFrom() error { +func (obj *bgpSrteSegmentHTypeSubTlv) validateToAndFrom() error { // emptyVars() obj.validateObj(&obj.validation, true) return obj.validationResult() } -func (obj *patternFlowIpv4TosDelay) Validate() error { +func (obj *bgpSrteSegmentHTypeSubTlv) Validate() error { // emptyVars() obj.validateObj(&obj.validation, false) return obj.validationResult() } -func (obj *patternFlowIpv4TosDelay) String() string { +func (obj *bgpSrteSegmentHTypeSubTlv) String() string { str, err := obj.ToYaml() if err != nil { return err.Error() @@ -283658,12 +328938,12 @@ func (obj *patternFlowIpv4TosDelay) String() string { return str } -func (obj *patternFlowIpv4TosDelay) Clone() (PatternFlowIpv4TosDelay, error) { +func (obj *bgpSrteSegmentHTypeSubTlv) Clone() (BgpSrteSegmentHTypeSubTlv, error) { vErr := obj.Validate() if vErr != nil { return nil, vErr } - newObj := NewPatternFlowIpv4TosDelay() + newObj := NewBgpSrteSegmentHTypeSubTlv() data, err := proto.Marshal(obj.Msg()) if err != nil { return nil, err @@ -283675,426 +328955,229 @@ func (obj *patternFlowIpv4TosDelay) Clone() (PatternFlowIpv4TosDelay, error) { return newObj, nil } -func (obj *patternFlowIpv4TosDelay) setNil() { - obj.incrementHolder = nil - obj.decrementHolder = nil - obj.metricTagsHolder = nil +func (obj *bgpSrteSegmentHTypeSubTlv) setNil() { + obj.srMplsSidHolder = nil obj.validationErrors = nil obj.warnings = nil obj.constraints = make(map[string]map[string]Constraints) } -// PatternFlowIpv4TosDelay is delay -type PatternFlowIpv4TosDelay interface { +// BgpSrteSegmentHTypeSubTlv is type H: IPv6 Local and Remote addresses with optional SID for SR MPLS. +type BgpSrteSegmentHTypeSubTlv interface { Validation - // Msg marshals PatternFlowIpv4TosDelay to protobuf object *otg.PatternFlowIpv4TosDelay + // Msg marshals BgpSrteSegmentHTypeSubTlv to protobuf object *otg.BgpSrteSegmentHTypeSubTlv // and doesn't set defaults - Msg() *otg.PatternFlowIpv4TosDelay - // SetMsg unmarshals PatternFlowIpv4TosDelay from protobuf object *otg.PatternFlowIpv4TosDelay + Msg() *otg.BgpSrteSegmentHTypeSubTlv + // SetMsg unmarshals BgpSrteSegmentHTypeSubTlv from protobuf object *otg.BgpSrteSegmentHTypeSubTlv // and doesn't set defaults - SetMsg(*otg.PatternFlowIpv4TosDelay) PatternFlowIpv4TosDelay - // ToProto marshals PatternFlowIpv4TosDelay to protobuf object *otg.PatternFlowIpv4TosDelay - ToProto() (*otg.PatternFlowIpv4TosDelay, error) - // ToPbText marshals PatternFlowIpv4TosDelay to protobuf text + SetMsg(*otg.BgpSrteSegmentHTypeSubTlv) BgpSrteSegmentHTypeSubTlv + // ToProto marshals BgpSrteSegmentHTypeSubTlv to protobuf object *otg.BgpSrteSegmentHTypeSubTlv + ToProto() (*otg.BgpSrteSegmentHTypeSubTlv, error) + // ToPbText marshals BgpSrteSegmentHTypeSubTlv to protobuf text ToPbText() (string, error) - // ToYaml marshals PatternFlowIpv4TosDelay to YAML text + // ToYaml marshals BgpSrteSegmentHTypeSubTlv to YAML text ToYaml() (string, error) - // ToJson marshals PatternFlowIpv4TosDelay to JSON text + // ToJson marshals BgpSrteSegmentHTypeSubTlv to JSON text ToJson() (string, error) - // FromProto unmarshals PatternFlowIpv4TosDelay from protobuf object *otg.PatternFlowIpv4TosDelay - FromProto(msg *otg.PatternFlowIpv4TosDelay) (PatternFlowIpv4TosDelay, error) - // FromPbText unmarshals PatternFlowIpv4TosDelay from protobuf text + // FromProto unmarshals BgpSrteSegmentHTypeSubTlv from protobuf object *otg.BgpSrteSegmentHTypeSubTlv + FromProto(msg *otg.BgpSrteSegmentHTypeSubTlv) (BgpSrteSegmentHTypeSubTlv, error) + // FromPbText unmarshals BgpSrteSegmentHTypeSubTlv from protobuf text FromPbText(value string) error - // FromYaml unmarshals PatternFlowIpv4TosDelay from YAML text + // FromYaml unmarshals BgpSrteSegmentHTypeSubTlv from YAML text FromYaml(value string) error - // FromJson unmarshals PatternFlowIpv4TosDelay from JSON text + // FromJson unmarshals BgpSrteSegmentHTypeSubTlv from JSON text FromJson(value string) error - // Validate validates PatternFlowIpv4TosDelay + // Validate validates BgpSrteSegmentHTypeSubTlv Validate() error // A stringer function String() string // Clones the object - Clone() (PatternFlowIpv4TosDelay, error) + Clone() (BgpSrteSegmentHTypeSubTlv, error) validateToAndFrom() error validateObj(vObj *validation, set_default bool) setDefault() - // Choice returns PatternFlowIpv4TosDelayChoiceEnum, set in PatternFlowIpv4TosDelay - Choice() PatternFlowIpv4TosDelayChoiceEnum - // SetChoice assigns PatternFlowIpv4TosDelayChoiceEnum provided by user to PatternFlowIpv4TosDelay - SetChoice(value PatternFlowIpv4TosDelayChoiceEnum) PatternFlowIpv4TosDelay - // HasChoice checks if Choice has been set in PatternFlowIpv4TosDelay - HasChoice() bool - // Value returns uint32, set in PatternFlowIpv4TosDelay. - Value() uint32 - // SetValue assigns uint32 provided by user to PatternFlowIpv4TosDelay - SetValue(value uint32) PatternFlowIpv4TosDelay - // HasValue checks if Value has been set in PatternFlowIpv4TosDelay - HasValue() bool - // Values returns []uint32, set in PatternFlowIpv4TosDelay. - Values() []uint32 - // SetValues assigns []uint32 provided by user to PatternFlowIpv4TosDelay - SetValues(value []uint32) PatternFlowIpv4TosDelay - // Increment returns PatternFlowIpv4TosDelayCounter, set in PatternFlowIpv4TosDelay. - // PatternFlowIpv4TosDelayCounter is integer counter pattern - Increment() PatternFlowIpv4TosDelayCounter - // SetIncrement assigns PatternFlowIpv4TosDelayCounter provided by user to PatternFlowIpv4TosDelay. - // PatternFlowIpv4TosDelayCounter is integer counter pattern - SetIncrement(value PatternFlowIpv4TosDelayCounter) PatternFlowIpv4TosDelay - // HasIncrement checks if Increment has been set in PatternFlowIpv4TosDelay - HasIncrement() bool - // Decrement returns PatternFlowIpv4TosDelayCounter, set in PatternFlowIpv4TosDelay. - // PatternFlowIpv4TosDelayCounter is integer counter pattern - Decrement() PatternFlowIpv4TosDelayCounter - // SetDecrement assigns PatternFlowIpv4TosDelayCounter provided by user to PatternFlowIpv4TosDelay. - // PatternFlowIpv4TosDelayCounter is integer counter pattern - SetDecrement(value PatternFlowIpv4TosDelayCounter) PatternFlowIpv4TosDelay - // HasDecrement checks if Decrement has been set in PatternFlowIpv4TosDelay - HasDecrement() bool - // MetricTags returns PatternFlowIpv4TosDelayPatternFlowIpv4TosDelayMetricTagIterIter, set in PatternFlowIpv4TosDelay - MetricTags() PatternFlowIpv4TosDelayPatternFlowIpv4TosDelayMetricTagIter - setNil() -} - -type PatternFlowIpv4TosDelayChoiceEnum string - -// Enum of Choice on PatternFlowIpv4TosDelay -var PatternFlowIpv4TosDelayChoice = struct { - VALUE PatternFlowIpv4TosDelayChoiceEnum - VALUES PatternFlowIpv4TosDelayChoiceEnum - INCREMENT PatternFlowIpv4TosDelayChoiceEnum - DECREMENT PatternFlowIpv4TosDelayChoiceEnum -}{ - VALUE: PatternFlowIpv4TosDelayChoiceEnum("value"), - VALUES: PatternFlowIpv4TosDelayChoiceEnum("values"), - INCREMENT: PatternFlowIpv4TosDelayChoiceEnum("increment"), - DECREMENT: PatternFlowIpv4TosDelayChoiceEnum("decrement"), -} - -func (obj *patternFlowIpv4TosDelay) Choice() PatternFlowIpv4TosDelayChoiceEnum { - return PatternFlowIpv4TosDelayChoiceEnum(obj.obj.Choice.Enum().String()) -} - -// description is TBD -// Choice returns a string -func (obj *patternFlowIpv4TosDelay) HasChoice() bool { - return obj.obj.Choice != nil -} - -func (obj *patternFlowIpv4TosDelay) SetChoice(value PatternFlowIpv4TosDelayChoiceEnum) PatternFlowIpv4TosDelay { - intValue, ok := otg.PatternFlowIpv4TosDelay_Choice_Enum_value[string(value)] - if !ok { - obj.validationErrors = append(obj.validationErrors, fmt.Sprintf( - "%s is not a valid choice on PatternFlowIpv4TosDelayChoiceEnum", string(value))) - return obj - } - enumValue := otg.PatternFlowIpv4TosDelay_Choice_Enum(intValue) - obj.obj.Choice = &enumValue - obj.obj.Decrement = nil - obj.decrementHolder = nil - obj.obj.Increment = nil - obj.incrementHolder = nil - obj.obj.Values = nil - obj.obj.Value = nil - - if value == PatternFlowIpv4TosDelayChoice.VALUE { - defaultValue := uint32(0) - obj.obj.Value = &defaultValue - } - - if value == PatternFlowIpv4TosDelayChoice.VALUES { - defaultValue := []uint32{0} - obj.obj.Values = defaultValue - } - - if value == PatternFlowIpv4TosDelayChoice.INCREMENT { - obj.obj.Increment = NewPatternFlowIpv4TosDelayCounter().Msg() - } - - if value == PatternFlowIpv4TosDelayChoice.DECREMENT { - obj.obj.Decrement = NewPatternFlowIpv4TosDelayCounter().Msg() - } - - return obj + // Flags returns string, set in BgpSrteSegmentHTypeSubTlv. + Flags() string + // SetFlags assigns string provided by user to BgpSrteSegmentHTypeSubTlv + SetFlags(value string) BgpSrteSegmentHTypeSubTlv + // HasFlags checks if Flags has been set in BgpSrteSegmentHTypeSubTlv + HasFlags() bool + // LocalIpv6Address returns string, set in BgpSrteSegmentHTypeSubTlv. + LocalIpv6Address() string + // SetLocalIpv6Address assigns string provided by user to BgpSrteSegmentHTypeSubTlv + SetLocalIpv6Address(value string) BgpSrteSegmentHTypeSubTlv + // RemoteIpv6Address returns string, set in BgpSrteSegmentHTypeSubTlv. + RemoteIpv6Address() string + // SetRemoteIpv6Address assigns string provided by user to BgpSrteSegmentHTypeSubTlv + SetRemoteIpv6Address(value string) BgpSrteSegmentHTypeSubTlv + // SrMplsSid returns BgpSrteSrMplsSid, set in BgpSrteSegmentHTypeSubTlv. + // BgpSrteSrMplsSid is configuration for SR-MPLS with Label, TC, Bottom-of-Stack and TTL. + SrMplsSid() BgpSrteSrMplsSid + // SetSrMplsSid assigns BgpSrteSrMplsSid provided by user to BgpSrteSegmentHTypeSubTlv. + // BgpSrteSrMplsSid is configuration for SR-MPLS with Label, TC, Bottom-of-Stack and TTL. + SetSrMplsSid(value BgpSrteSrMplsSid) BgpSrteSegmentHTypeSubTlv + // HasSrMplsSid checks if SrMplsSid has been set in BgpSrteSegmentHTypeSubTlv + HasSrMplsSid() bool + setNil() } -// description is TBD -// Value returns a uint32 -func (obj *patternFlowIpv4TosDelay) Value() uint32 { - - if obj.obj.Value == nil { - obj.SetChoice(PatternFlowIpv4TosDelayChoice.VALUE) - } - - return *obj.obj.Value - -} +// One octet bitmap for flags including V-Flag, A-Flag, S-Flag, B-Flag etc. as defined in https://datatracker.ietf.org/doc/html/draft-ietf-idr-segment-routing-te-policy-13#section-2.4.4.2.12 +// Flags returns a string +func (obj *bgpSrteSegmentHTypeSubTlv) Flags() string { -// description is TBD -// Value returns a uint32 -func (obj *patternFlowIpv4TosDelay) HasValue() bool { - return obj.obj.Value != nil -} + return *obj.obj.Flags -// description is TBD -// SetValue sets the uint32 value in the PatternFlowIpv4TosDelay object -func (obj *patternFlowIpv4TosDelay) SetValue(value uint32) PatternFlowIpv4TosDelay { - obj.SetChoice(PatternFlowIpv4TosDelayChoice.VALUE) - obj.obj.Value = &value - return obj } -// description is TBD -// Values returns a []uint32 -func (obj *patternFlowIpv4TosDelay) Values() []uint32 { - if obj.obj.Values == nil { - obj.SetValues([]uint32{0}) - } - return obj.obj.Values +// One octet bitmap for flags including V-Flag, A-Flag, S-Flag, B-Flag etc. as defined in https://datatracker.ietf.org/doc/html/draft-ietf-idr-segment-routing-te-policy-13#section-2.4.4.2.12 +// Flags returns a string +func (obj *bgpSrteSegmentHTypeSubTlv) HasFlags() bool { + return obj.obj.Flags != nil } -// description is TBD -// SetValues sets the []uint32 value in the PatternFlowIpv4TosDelay object -func (obj *patternFlowIpv4TosDelay) SetValues(value []uint32) PatternFlowIpv4TosDelay { - obj.SetChoice(PatternFlowIpv4TosDelayChoice.VALUES) - if obj.obj.Values == nil { - obj.obj.Values = make([]uint32, 0) - } - obj.obj.Values = value +// One octet bitmap for flags including V-Flag, A-Flag, S-Flag, B-Flag etc. as defined in https://datatracker.ietf.org/doc/html/draft-ietf-idr-segment-routing-te-policy-13#section-2.4.4.2.12 +// SetFlags sets the string value in the BgpSrteSegmentHTypeSubTlv object +func (obj *bgpSrteSegmentHTypeSubTlv) SetFlags(value string) BgpSrteSegmentHTypeSubTlv { + obj.obj.Flags = &value return obj } -// description is TBD -// Increment returns a PatternFlowIpv4TosDelayCounter -func (obj *patternFlowIpv4TosDelay) Increment() PatternFlowIpv4TosDelayCounter { - if obj.obj.Increment == nil { - obj.SetChoice(PatternFlowIpv4TosDelayChoice.INCREMENT) - } - if obj.incrementHolder == nil { - obj.incrementHolder = &patternFlowIpv4TosDelayCounter{obj: obj.obj.Increment} - } - return obj.incrementHolder -} +// Local IPv6 Address. +// LocalIpv6Address returns a string +func (obj *bgpSrteSegmentHTypeSubTlv) LocalIpv6Address() string { + + return *obj.obj.LocalIpv6Address -// description is TBD -// Increment returns a PatternFlowIpv4TosDelayCounter -func (obj *patternFlowIpv4TosDelay) HasIncrement() bool { - return obj.obj.Increment != nil } -// description is TBD -// SetIncrement sets the PatternFlowIpv4TosDelayCounter value in the PatternFlowIpv4TosDelay object -func (obj *patternFlowIpv4TosDelay) SetIncrement(value PatternFlowIpv4TosDelayCounter) PatternFlowIpv4TosDelay { - obj.SetChoice(PatternFlowIpv4TosDelayChoice.INCREMENT) - obj.incrementHolder = nil - obj.obj.Increment = value.Msg() +// Local IPv6 Address. +// SetLocalIpv6Address sets the string value in the BgpSrteSegmentHTypeSubTlv object +func (obj *bgpSrteSegmentHTypeSubTlv) SetLocalIpv6Address(value string) BgpSrteSegmentHTypeSubTlv { + obj.obj.LocalIpv6Address = &value return obj } -// description is TBD -// Decrement returns a PatternFlowIpv4TosDelayCounter -func (obj *patternFlowIpv4TosDelay) Decrement() PatternFlowIpv4TosDelayCounter { - if obj.obj.Decrement == nil { - obj.SetChoice(PatternFlowIpv4TosDelayChoice.DECREMENT) - } - if obj.decrementHolder == nil { - obj.decrementHolder = &patternFlowIpv4TosDelayCounter{obj: obj.obj.Decrement} - } - return obj.decrementHolder -} +// Remote IPv6 Address. +// RemoteIpv6Address returns a string +func (obj *bgpSrteSegmentHTypeSubTlv) RemoteIpv6Address() string { + + return *obj.obj.RemoteIpv6Address -// description is TBD -// Decrement returns a PatternFlowIpv4TosDelayCounter -func (obj *patternFlowIpv4TosDelay) HasDecrement() bool { - return obj.obj.Decrement != nil } -// description is TBD -// SetDecrement sets the PatternFlowIpv4TosDelayCounter value in the PatternFlowIpv4TosDelay object -func (obj *patternFlowIpv4TosDelay) SetDecrement(value PatternFlowIpv4TosDelayCounter) PatternFlowIpv4TosDelay { - obj.SetChoice(PatternFlowIpv4TosDelayChoice.DECREMENT) - obj.decrementHolder = nil - obj.obj.Decrement = value.Msg() +// Remote IPv6 Address. +// SetRemoteIpv6Address sets the string value in the BgpSrteSegmentHTypeSubTlv object +func (obj *bgpSrteSegmentHTypeSubTlv) SetRemoteIpv6Address(value string) BgpSrteSegmentHTypeSubTlv { + obj.obj.RemoteIpv6Address = &value return obj } -// One or more metric tags can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. -// MetricTags returns a []PatternFlowIpv4TosDelayMetricTag -func (obj *patternFlowIpv4TosDelay) MetricTags() PatternFlowIpv4TosDelayPatternFlowIpv4TosDelayMetricTagIter { - if len(obj.obj.MetricTags) == 0 { - obj.obj.MetricTags = []*otg.PatternFlowIpv4TosDelayMetricTag{} - } - if obj.metricTagsHolder == nil { - obj.metricTagsHolder = newPatternFlowIpv4TosDelayPatternFlowIpv4TosDelayMetricTagIter(&obj.obj.MetricTags).setMsg(obj) +// Optional SR-MPLS SID. +// SrMplsSid returns a BgpSrteSrMplsSid +func (obj *bgpSrteSegmentHTypeSubTlv) SrMplsSid() BgpSrteSrMplsSid { + if obj.obj.SrMplsSid == nil { + obj.obj.SrMplsSid = NewBgpSrteSrMplsSid().Msg() } - return obj.metricTagsHolder -} - -type patternFlowIpv4TosDelayPatternFlowIpv4TosDelayMetricTagIter struct { - obj *patternFlowIpv4TosDelay - patternFlowIpv4TosDelayMetricTagSlice []PatternFlowIpv4TosDelayMetricTag - fieldPtr *[]*otg.PatternFlowIpv4TosDelayMetricTag -} - -func newPatternFlowIpv4TosDelayPatternFlowIpv4TosDelayMetricTagIter(ptr *[]*otg.PatternFlowIpv4TosDelayMetricTag) PatternFlowIpv4TosDelayPatternFlowIpv4TosDelayMetricTagIter { - return &patternFlowIpv4TosDelayPatternFlowIpv4TosDelayMetricTagIter{fieldPtr: ptr} -} - -type PatternFlowIpv4TosDelayPatternFlowIpv4TosDelayMetricTagIter interface { - setMsg(*patternFlowIpv4TosDelay) PatternFlowIpv4TosDelayPatternFlowIpv4TosDelayMetricTagIter - Items() []PatternFlowIpv4TosDelayMetricTag - Add() PatternFlowIpv4TosDelayMetricTag - Append(items ...PatternFlowIpv4TosDelayMetricTag) PatternFlowIpv4TosDelayPatternFlowIpv4TosDelayMetricTagIter - Set(index int, newObj PatternFlowIpv4TosDelayMetricTag) PatternFlowIpv4TosDelayPatternFlowIpv4TosDelayMetricTagIter - Clear() PatternFlowIpv4TosDelayPatternFlowIpv4TosDelayMetricTagIter - clearHolderSlice() PatternFlowIpv4TosDelayPatternFlowIpv4TosDelayMetricTagIter - appendHolderSlice(item PatternFlowIpv4TosDelayMetricTag) PatternFlowIpv4TosDelayPatternFlowIpv4TosDelayMetricTagIter -} - -func (obj *patternFlowIpv4TosDelayPatternFlowIpv4TosDelayMetricTagIter) setMsg(msg *patternFlowIpv4TosDelay) PatternFlowIpv4TosDelayPatternFlowIpv4TosDelayMetricTagIter { - obj.clearHolderSlice() - for _, val := range *obj.fieldPtr { - obj.appendHolderSlice(&patternFlowIpv4TosDelayMetricTag{obj: val}) + if obj.srMplsSidHolder == nil { + obj.srMplsSidHolder = &bgpSrteSrMplsSid{obj: obj.obj.SrMplsSid} } - obj.obj = msg - return obj + return obj.srMplsSidHolder } -func (obj *patternFlowIpv4TosDelayPatternFlowIpv4TosDelayMetricTagIter) Items() []PatternFlowIpv4TosDelayMetricTag { - return obj.patternFlowIpv4TosDelayMetricTagSlice +// Optional SR-MPLS SID. +// SrMplsSid returns a BgpSrteSrMplsSid +func (obj *bgpSrteSegmentHTypeSubTlv) HasSrMplsSid() bool { + return obj.obj.SrMplsSid != nil } -func (obj *patternFlowIpv4TosDelayPatternFlowIpv4TosDelayMetricTagIter) Add() PatternFlowIpv4TosDelayMetricTag { - newObj := &otg.PatternFlowIpv4TosDelayMetricTag{} - *obj.fieldPtr = append(*obj.fieldPtr, newObj) - newLibObj := &patternFlowIpv4TosDelayMetricTag{obj: newObj} - newLibObj.setDefault() - obj.patternFlowIpv4TosDelayMetricTagSlice = append(obj.patternFlowIpv4TosDelayMetricTagSlice, newLibObj) - return newLibObj -} +// Optional SR-MPLS SID. +// SetSrMplsSid sets the BgpSrteSrMplsSid value in the BgpSrteSegmentHTypeSubTlv object +func (obj *bgpSrteSegmentHTypeSubTlv) SetSrMplsSid(value BgpSrteSrMplsSid) BgpSrteSegmentHTypeSubTlv { -func (obj *patternFlowIpv4TosDelayPatternFlowIpv4TosDelayMetricTagIter) Append(items ...PatternFlowIpv4TosDelayMetricTag) PatternFlowIpv4TosDelayPatternFlowIpv4TosDelayMetricTagIter { - for _, item := range items { - newObj := item.Msg() - *obj.fieldPtr = append(*obj.fieldPtr, newObj) - obj.patternFlowIpv4TosDelayMetricTagSlice = append(obj.patternFlowIpv4TosDelayMetricTagSlice, item) - } - return obj -} + obj.srMplsSidHolder = nil + obj.obj.SrMplsSid = value.Msg() -func (obj *patternFlowIpv4TosDelayPatternFlowIpv4TosDelayMetricTagIter) Set(index int, newObj PatternFlowIpv4TosDelayMetricTag) PatternFlowIpv4TosDelayPatternFlowIpv4TosDelayMetricTagIter { - (*obj.fieldPtr)[index] = newObj.Msg() - obj.patternFlowIpv4TosDelayMetricTagSlice[index] = newObj - return obj -} -func (obj *patternFlowIpv4TosDelayPatternFlowIpv4TosDelayMetricTagIter) Clear() PatternFlowIpv4TosDelayPatternFlowIpv4TosDelayMetricTagIter { - if len(*obj.fieldPtr) > 0 { - *obj.fieldPtr = []*otg.PatternFlowIpv4TosDelayMetricTag{} - obj.patternFlowIpv4TosDelayMetricTagSlice = []PatternFlowIpv4TosDelayMetricTag{} - } - return obj -} -func (obj *patternFlowIpv4TosDelayPatternFlowIpv4TosDelayMetricTagIter) clearHolderSlice() PatternFlowIpv4TosDelayPatternFlowIpv4TosDelayMetricTagIter { - if len(obj.patternFlowIpv4TosDelayMetricTagSlice) > 0 { - obj.patternFlowIpv4TosDelayMetricTagSlice = []PatternFlowIpv4TosDelayMetricTag{} - } - return obj -} -func (obj *patternFlowIpv4TosDelayPatternFlowIpv4TosDelayMetricTagIter) appendHolderSlice(item PatternFlowIpv4TosDelayMetricTag) PatternFlowIpv4TosDelayPatternFlowIpv4TosDelayMetricTagIter { - obj.patternFlowIpv4TosDelayMetricTagSlice = append(obj.patternFlowIpv4TosDelayMetricTagSlice, item) return obj } -func (obj *patternFlowIpv4TosDelay) validateObj(vObj *validation, set_default bool) { +func (obj *bgpSrteSegmentHTypeSubTlv) validateObj(vObj *validation, set_default bool) { if set_default { obj.setDefault() } - if obj.obj.Value != nil { + if obj.obj.Flags != nil { - if *obj.obj.Value > 1 { - vObj.validationErrors = append( - vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowIpv4TosDelay.Value <= 1 but Got %d", *obj.obj.Value)) + err := obj.validateHex(obj.Flags()) + if err != nil { + vObj.validationErrors = append(vObj.validationErrors, fmt.Sprintf("%s %s", err.Error(), "on BgpSrteSegmentHTypeSubTlv.Flags")) } } - if obj.obj.Values != nil { - - for _, item := range obj.obj.Values { - if item > 1 { - vObj.validationErrors = append( - vObj.validationErrors, - fmt.Sprintf("min(uint32) <= PatternFlowIpv4TosDelay.Values <= 1 but Got %d", item)) - } + // LocalIpv6Address is required + if obj.obj.LocalIpv6Address == nil { + vObj.validationErrors = append(vObj.validationErrors, "LocalIpv6Address is required field on interface BgpSrteSegmentHTypeSubTlv") + } + if obj.obj.LocalIpv6Address != nil { + err := obj.validateIpv6(obj.LocalIpv6Address()) + if err != nil { + vObj.validationErrors = append(vObj.validationErrors, fmt.Sprintf("%s %s", err.Error(), "on BgpSrteSegmentHTypeSubTlv.LocalIpv6Address")) } } - if obj.obj.Increment != nil { - - obj.Increment().validateObj(vObj, set_default) + // RemoteIpv6Address is required + if obj.obj.RemoteIpv6Address == nil { + vObj.validationErrors = append(vObj.validationErrors, "RemoteIpv6Address is required field on interface BgpSrteSegmentHTypeSubTlv") } + if obj.obj.RemoteIpv6Address != nil { - if obj.obj.Decrement != nil { + err := obj.validateIpv6(obj.RemoteIpv6Address()) + if err != nil { + vObj.validationErrors = append(vObj.validationErrors, fmt.Sprintf("%s %s", err.Error(), "on BgpSrteSegmentHTypeSubTlv.RemoteIpv6Address")) + } - obj.Decrement().validateObj(vObj, set_default) } - if len(obj.obj.MetricTags) != 0 { - - if set_default { - obj.MetricTags().clearHolderSlice() - for _, item := range obj.obj.MetricTags { - obj.MetricTags().appendHolderSlice(&patternFlowIpv4TosDelayMetricTag{obj: item}) - } - } - for _, item := range obj.MetricTags().Items() { - item.validateObj(vObj, set_default) - } + if obj.obj.SrMplsSid != nil { + obj.SrMplsSid().validateObj(vObj, set_default) } } -func (obj *patternFlowIpv4TosDelay) setDefault() { - if obj.obj.Choice == nil { - obj.SetChoice(PatternFlowIpv4TosDelayChoice.VALUE) - - } +func (obj *bgpSrteSegmentHTypeSubTlv) setDefault() { } -// ***** PatternFlowIpv4TosThroughput ***** -type patternFlowIpv4TosThroughput struct { +// ***** BgpSrteSegmentITypeSubTlv ***** +type bgpSrteSegmentITypeSubTlv struct { validation - obj *otg.PatternFlowIpv4TosThroughput - incrementHolder PatternFlowIpv4TosThroughputCounter - decrementHolder PatternFlowIpv4TosThroughputCounter - metricTagsHolder PatternFlowIpv4TosThroughputPatternFlowIpv4TosThroughputMetricTagIter + obj *otg.BgpSrteSegmentITypeSubTlv + srv6SidEndpointBehaviorHolder BgpSrteSRv6SIDEndpointBehaviorAndStructure } -func NewPatternFlowIpv4TosThroughput() PatternFlowIpv4TosThroughput { - obj := patternFlowIpv4TosThroughput{obj: &otg.PatternFlowIpv4TosThroughput{}} +func NewBgpSrteSegmentITypeSubTlv() BgpSrteSegmentITypeSubTlv { + obj := bgpSrteSegmentITypeSubTlv{obj: &otg.BgpSrteSegmentITypeSubTlv{}} obj.setDefault() return &obj } -func (obj *patternFlowIpv4TosThroughput) Msg() *otg.PatternFlowIpv4TosThroughput { +func (obj *bgpSrteSegmentITypeSubTlv) Msg() *otg.BgpSrteSegmentITypeSubTlv { return obj.obj } -func (obj *patternFlowIpv4TosThroughput) SetMsg(msg *otg.PatternFlowIpv4TosThroughput) PatternFlowIpv4TosThroughput { +func (obj *bgpSrteSegmentITypeSubTlv) SetMsg(msg *otg.BgpSrteSegmentITypeSubTlv) BgpSrteSegmentITypeSubTlv { obj.setNil() proto.Merge(obj.obj, msg) return obj } -func (obj *patternFlowIpv4TosThroughput) ToProto() (*otg.PatternFlowIpv4TosThroughput, error) { +func (obj *bgpSrteSegmentITypeSubTlv) ToProto() (*otg.BgpSrteSegmentITypeSubTlv, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -284102,7 +329185,7 @@ func (obj *patternFlowIpv4TosThroughput) ToProto() (*otg.PatternFlowIpv4TosThrou return obj.Msg(), nil } -func (obj *patternFlowIpv4TosThroughput) FromProto(msg *otg.PatternFlowIpv4TosThroughput) (PatternFlowIpv4TosThroughput, error) { +func (obj *bgpSrteSegmentITypeSubTlv) FromProto(msg *otg.BgpSrteSegmentITypeSubTlv) (BgpSrteSegmentITypeSubTlv, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -284111,7 +329194,7 @@ func (obj *patternFlowIpv4TosThroughput) FromProto(msg *otg.PatternFlowIpv4TosTh return newObj, nil } -func (obj *patternFlowIpv4TosThroughput) ToPbText() (string, error) { +func (obj *bgpSrteSegmentITypeSubTlv) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -284123,7 +329206,7 @@ func (obj *patternFlowIpv4TosThroughput) ToPbText() (string, error) { return string(protoMarshal), nil } -func (obj *patternFlowIpv4TosThroughput) FromPbText(value string) error { +func (obj *bgpSrteSegmentITypeSubTlv) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj @@ -284136,7 +329219,7 @@ func (obj *patternFlowIpv4TosThroughput) FromPbText(value string) error { return retObj } -func (obj *patternFlowIpv4TosThroughput) ToYaml() (string, error) { +func (obj *bgpSrteSegmentITypeSubTlv) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -284157,7 +329240,7 @@ func (obj *patternFlowIpv4TosThroughput) ToYaml() (string, error) { return string(data), nil } -func (obj *patternFlowIpv4TosThroughput) FromYaml(value string) error { +func (obj *bgpSrteSegmentITypeSubTlv) FromYaml(value string) error { if value == "" { value = "{}" } @@ -284182,7 +329265,7 @@ func (obj *patternFlowIpv4TosThroughput) FromYaml(value string) error { return nil } -func (obj *patternFlowIpv4TosThroughput) ToJson() (string, error) { +func (obj *bgpSrteSegmentITypeSubTlv) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -284200,7 +329283,7 @@ func (obj *patternFlowIpv4TosThroughput) ToJson() (string, error) { return string(data), nil } -func (obj *patternFlowIpv4TosThroughput) FromJson(value string) error { +func (obj *bgpSrteSegmentITypeSubTlv) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -284221,19 +329304,19 @@ func (obj *patternFlowIpv4TosThroughput) FromJson(value string) error { return nil } -func (obj *patternFlowIpv4TosThroughput) validateToAndFrom() error { +func (obj *bgpSrteSegmentITypeSubTlv) validateToAndFrom() error { // emptyVars() obj.validateObj(&obj.validation, true) return obj.validationResult() } -func (obj *patternFlowIpv4TosThroughput) Validate() error { +func (obj *bgpSrteSegmentITypeSubTlv) Validate() error { // emptyVars() obj.validateObj(&obj.validation, false) return obj.validationResult() } -func (obj *patternFlowIpv4TosThroughput) String() string { +func (obj *bgpSrteSegmentITypeSubTlv) String() string { str, err := obj.ToYaml() if err != nil { return err.Error() @@ -284241,12 +329324,12 @@ func (obj *patternFlowIpv4TosThroughput) String() string { return str } -func (obj *patternFlowIpv4TosThroughput) Clone() (PatternFlowIpv4TosThroughput, error) { +func (obj *bgpSrteSegmentITypeSubTlv) Clone() (BgpSrteSegmentITypeSubTlv, error) { vErr := obj.Validate() if vErr != nil { return nil, vErr } - newObj := NewPatternFlowIpv4TosThroughput() + newObj := NewBgpSrteSegmentITypeSubTlv() data, err := proto.Marshal(obj.Msg()) if err != nil { return nil, err @@ -284258,426 +329341,233 @@ func (obj *patternFlowIpv4TosThroughput) Clone() (PatternFlowIpv4TosThroughput, return newObj, nil } -func (obj *patternFlowIpv4TosThroughput) setNil() { - obj.incrementHolder = nil - obj.decrementHolder = nil - obj.metricTagsHolder = nil +func (obj *bgpSrteSegmentITypeSubTlv) setNil() { + obj.srv6SidEndpointBehaviorHolder = nil obj.validationErrors = nil obj.warnings = nil obj.constraints = make(map[string]map[string]Constraints) } -// PatternFlowIpv4TosThroughput is throughput -type PatternFlowIpv4TosThroughput interface { +// BgpSrteSegmentITypeSubTlv is type I: IPv6 Node Address with optional SRv6 SID. +type BgpSrteSegmentITypeSubTlv interface { Validation - // Msg marshals PatternFlowIpv4TosThroughput to protobuf object *otg.PatternFlowIpv4TosThroughput + // Msg marshals BgpSrteSegmentITypeSubTlv to protobuf object *otg.BgpSrteSegmentITypeSubTlv // and doesn't set defaults - Msg() *otg.PatternFlowIpv4TosThroughput - // SetMsg unmarshals PatternFlowIpv4TosThroughput from protobuf object *otg.PatternFlowIpv4TosThroughput + Msg() *otg.BgpSrteSegmentITypeSubTlv + // SetMsg unmarshals BgpSrteSegmentITypeSubTlv from protobuf object *otg.BgpSrteSegmentITypeSubTlv // and doesn't set defaults - SetMsg(*otg.PatternFlowIpv4TosThroughput) PatternFlowIpv4TosThroughput - // ToProto marshals PatternFlowIpv4TosThroughput to protobuf object *otg.PatternFlowIpv4TosThroughput - ToProto() (*otg.PatternFlowIpv4TosThroughput, error) - // ToPbText marshals PatternFlowIpv4TosThroughput to protobuf text + SetMsg(*otg.BgpSrteSegmentITypeSubTlv) BgpSrteSegmentITypeSubTlv + // ToProto marshals BgpSrteSegmentITypeSubTlv to protobuf object *otg.BgpSrteSegmentITypeSubTlv + ToProto() (*otg.BgpSrteSegmentITypeSubTlv, error) + // ToPbText marshals BgpSrteSegmentITypeSubTlv to protobuf text ToPbText() (string, error) - // ToYaml marshals PatternFlowIpv4TosThroughput to YAML text + // ToYaml marshals BgpSrteSegmentITypeSubTlv to YAML text ToYaml() (string, error) - // ToJson marshals PatternFlowIpv4TosThroughput to JSON text + // ToJson marshals BgpSrteSegmentITypeSubTlv to JSON text ToJson() (string, error) - // FromProto unmarshals PatternFlowIpv4TosThroughput from protobuf object *otg.PatternFlowIpv4TosThroughput - FromProto(msg *otg.PatternFlowIpv4TosThroughput) (PatternFlowIpv4TosThroughput, error) - // FromPbText unmarshals PatternFlowIpv4TosThroughput from protobuf text + // FromProto unmarshals BgpSrteSegmentITypeSubTlv from protobuf object *otg.BgpSrteSegmentITypeSubTlv + FromProto(msg *otg.BgpSrteSegmentITypeSubTlv) (BgpSrteSegmentITypeSubTlv, error) + // FromPbText unmarshals BgpSrteSegmentITypeSubTlv from protobuf text FromPbText(value string) error - // FromYaml unmarshals PatternFlowIpv4TosThroughput from YAML text + // FromYaml unmarshals BgpSrteSegmentITypeSubTlv from YAML text FromYaml(value string) error - // FromJson unmarshals PatternFlowIpv4TosThroughput from JSON text + // FromJson unmarshals BgpSrteSegmentITypeSubTlv from JSON text FromJson(value string) error - // Validate validates PatternFlowIpv4TosThroughput + // Validate validates BgpSrteSegmentITypeSubTlv Validate() error // A stringer function String() string // Clones the object - Clone() (PatternFlowIpv4TosThroughput, error) + Clone() (BgpSrteSegmentITypeSubTlv, error) validateToAndFrom() error validateObj(vObj *validation, set_default bool) setDefault() - // Choice returns PatternFlowIpv4TosThroughputChoiceEnum, set in PatternFlowIpv4TosThroughput - Choice() PatternFlowIpv4TosThroughputChoiceEnum - // SetChoice assigns PatternFlowIpv4TosThroughputChoiceEnum provided by user to PatternFlowIpv4TosThroughput - SetChoice(value PatternFlowIpv4TosThroughputChoiceEnum) PatternFlowIpv4TosThroughput - // HasChoice checks if Choice has been set in PatternFlowIpv4TosThroughput - HasChoice() bool - // Value returns uint32, set in PatternFlowIpv4TosThroughput. - Value() uint32 - // SetValue assigns uint32 provided by user to PatternFlowIpv4TosThroughput - SetValue(value uint32) PatternFlowIpv4TosThroughput - // HasValue checks if Value has been set in PatternFlowIpv4TosThroughput - HasValue() bool - // Values returns []uint32, set in PatternFlowIpv4TosThroughput. - Values() []uint32 - // SetValues assigns []uint32 provided by user to PatternFlowIpv4TosThroughput - SetValues(value []uint32) PatternFlowIpv4TosThroughput - // Increment returns PatternFlowIpv4TosThroughputCounter, set in PatternFlowIpv4TosThroughput. - // PatternFlowIpv4TosThroughputCounter is integer counter pattern - Increment() PatternFlowIpv4TosThroughputCounter - // SetIncrement assigns PatternFlowIpv4TosThroughputCounter provided by user to PatternFlowIpv4TosThroughput. - // PatternFlowIpv4TosThroughputCounter is integer counter pattern - SetIncrement(value PatternFlowIpv4TosThroughputCounter) PatternFlowIpv4TosThroughput - // HasIncrement checks if Increment has been set in PatternFlowIpv4TosThroughput - HasIncrement() bool - // Decrement returns PatternFlowIpv4TosThroughputCounter, set in PatternFlowIpv4TosThroughput. - // PatternFlowIpv4TosThroughputCounter is integer counter pattern - Decrement() PatternFlowIpv4TosThroughputCounter - // SetDecrement assigns PatternFlowIpv4TosThroughputCounter provided by user to PatternFlowIpv4TosThroughput. - // PatternFlowIpv4TosThroughputCounter is integer counter pattern - SetDecrement(value PatternFlowIpv4TosThroughputCounter) PatternFlowIpv4TosThroughput - // HasDecrement checks if Decrement has been set in PatternFlowIpv4TosThroughput - HasDecrement() bool - // MetricTags returns PatternFlowIpv4TosThroughputPatternFlowIpv4TosThroughputMetricTagIterIter, set in PatternFlowIpv4TosThroughput - MetricTags() PatternFlowIpv4TosThroughputPatternFlowIpv4TosThroughputMetricTagIter + // Flags returns string, set in BgpSrteSegmentITypeSubTlv. + Flags() string + // SetFlags assigns string provided by user to BgpSrteSegmentITypeSubTlv + SetFlags(value string) BgpSrteSegmentITypeSubTlv + // HasFlags checks if Flags has been set in BgpSrteSegmentITypeSubTlv + HasFlags() bool + // Ipv6NodeAddress returns string, set in BgpSrteSegmentITypeSubTlv. + Ipv6NodeAddress() string + // SetIpv6NodeAddress assigns string provided by user to BgpSrteSegmentITypeSubTlv + SetIpv6NodeAddress(value string) BgpSrteSegmentITypeSubTlv + // Srv6Sid returns string, set in BgpSrteSegmentITypeSubTlv. + Srv6Sid() string + // SetSrv6Sid assigns string provided by user to BgpSrteSegmentITypeSubTlv + SetSrv6Sid(value string) BgpSrteSegmentITypeSubTlv + // HasSrv6Sid checks if Srv6Sid has been set in BgpSrteSegmentITypeSubTlv + HasSrv6Sid() bool + // Srv6SidEndpointBehavior returns BgpSrteSRv6SIDEndpointBehaviorAndStructure, set in BgpSrteSegmentITypeSubTlv. + // BgpSrteSRv6SIDEndpointBehaviorAndStructure is configuration for SRv6 Endpoint Behavior and SID Structure. Its optional. Summation of lengths for Locator Block, Locator Node, Function, and Argument MUST be less than or equal to 128. + Srv6SidEndpointBehavior() BgpSrteSRv6SIDEndpointBehaviorAndStructure + // SetSrv6SidEndpointBehavior assigns BgpSrteSRv6SIDEndpointBehaviorAndStructure provided by user to BgpSrteSegmentITypeSubTlv. + // BgpSrteSRv6SIDEndpointBehaviorAndStructure is configuration for SRv6 Endpoint Behavior and SID Structure. Its optional. Summation of lengths for Locator Block, Locator Node, Function, and Argument MUST be less than or equal to 128. + SetSrv6SidEndpointBehavior(value BgpSrteSRv6SIDEndpointBehaviorAndStructure) BgpSrteSegmentITypeSubTlv + // HasSrv6SidEndpointBehavior checks if Srv6SidEndpointBehavior has been set in BgpSrteSegmentITypeSubTlv + HasSrv6SidEndpointBehavior() bool setNil() } -type PatternFlowIpv4TosThroughputChoiceEnum string +// One octet bitmap for flags including V-Flag, A-Flag, S-Flag, B-Flag etc. as defined in https://datatracker.ietf.org/doc/html/draft-ietf-idr-segment-routing-te-policy-13#section-2.4.4.2.12 +// Flags returns a string +func (obj *bgpSrteSegmentITypeSubTlv) Flags() string { -// Enum of Choice on PatternFlowIpv4TosThroughput -var PatternFlowIpv4TosThroughputChoice = struct { - VALUE PatternFlowIpv4TosThroughputChoiceEnum - VALUES PatternFlowIpv4TosThroughputChoiceEnum - INCREMENT PatternFlowIpv4TosThroughputChoiceEnum - DECREMENT PatternFlowIpv4TosThroughputChoiceEnum -}{ - VALUE: PatternFlowIpv4TosThroughputChoiceEnum("value"), - VALUES: PatternFlowIpv4TosThroughputChoiceEnum("values"), - INCREMENT: PatternFlowIpv4TosThroughputChoiceEnum("increment"), - DECREMENT: PatternFlowIpv4TosThroughputChoiceEnum("decrement"), -} + return *obj.obj.Flags -func (obj *patternFlowIpv4TosThroughput) Choice() PatternFlowIpv4TosThroughputChoiceEnum { - return PatternFlowIpv4TosThroughputChoiceEnum(obj.obj.Choice.Enum().String()) } -// description is TBD -// Choice returns a string -func (obj *patternFlowIpv4TosThroughput) HasChoice() bool { - return obj.obj.Choice != nil +// One octet bitmap for flags including V-Flag, A-Flag, S-Flag, B-Flag etc. as defined in https://datatracker.ietf.org/doc/html/draft-ietf-idr-segment-routing-te-policy-13#section-2.4.4.2.12 +// Flags returns a string +func (obj *bgpSrteSegmentITypeSubTlv) HasFlags() bool { + return obj.obj.Flags != nil } -func (obj *patternFlowIpv4TosThroughput) SetChoice(value PatternFlowIpv4TosThroughputChoiceEnum) PatternFlowIpv4TosThroughput { - intValue, ok := otg.PatternFlowIpv4TosThroughput_Choice_Enum_value[string(value)] - if !ok { - obj.validationErrors = append(obj.validationErrors, fmt.Sprintf( - "%s is not a valid choice on PatternFlowIpv4TosThroughputChoiceEnum", string(value))) - return obj - } - enumValue := otg.PatternFlowIpv4TosThroughput_Choice_Enum(intValue) - obj.obj.Choice = &enumValue - obj.obj.Decrement = nil - obj.decrementHolder = nil - obj.obj.Increment = nil - obj.incrementHolder = nil - obj.obj.Values = nil - obj.obj.Value = nil - - if value == PatternFlowIpv4TosThroughputChoice.VALUE { - defaultValue := uint32(0) - obj.obj.Value = &defaultValue - } - - if value == PatternFlowIpv4TosThroughputChoice.VALUES { - defaultValue := []uint32{0} - obj.obj.Values = defaultValue - } - - if value == PatternFlowIpv4TosThroughputChoice.INCREMENT { - obj.obj.Increment = NewPatternFlowIpv4TosThroughputCounter().Msg() - } - - if value == PatternFlowIpv4TosThroughputChoice.DECREMENT { - obj.obj.Decrement = NewPatternFlowIpv4TosThroughputCounter().Msg() - } +// One octet bitmap for flags including V-Flag, A-Flag, S-Flag, B-Flag etc. as defined in https://datatracker.ietf.org/doc/html/draft-ietf-idr-segment-routing-te-policy-13#section-2.4.4.2.12 +// SetFlags sets the string value in the BgpSrteSegmentITypeSubTlv object +func (obj *bgpSrteSegmentITypeSubTlv) SetFlags(value string) BgpSrteSegmentITypeSubTlv { + obj.obj.Flags = &value return obj } -// description is TBD -// Value returns a uint32 -func (obj *patternFlowIpv4TosThroughput) Value() uint32 { - - if obj.obj.Value == nil { - obj.SetChoice(PatternFlowIpv4TosThroughputChoice.VALUE) - } - - return *obj.obj.Value - -} - -// description is TBD -// Value returns a uint32 -func (obj *patternFlowIpv4TosThroughput) HasValue() bool { - return obj.obj.Value != nil -} +// IPv6 address representing a node. +// Ipv6NodeAddress returns a string +func (obj *bgpSrteSegmentITypeSubTlv) Ipv6NodeAddress() string { -// description is TBD -// SetValue sets the uint32 value in the PatternFlowIpv4TosThroughput object -func (obj *patternFlowIpv4TosThroughput) SetValue(value uint32) PatternFlowIpv4TosThroughput { - obj.SetChoice(PatternFlowIpv4TosThroughputChoice.VALUE) - obj.obj.Value = &value - return obj -} + return *obj.obj.Ipv6NodeAddress -// description is TBD -// Values returns a []uint32 -func (obj *patternFlowIpv4TosThroughput) Values() []uint32 { - if obj.obj.Values == nil { - obj.SetValues([]uint32{0}) - } - return obj.obj.Values } -// description is TBD -// SetValues sets the []uint32 value in the PatternFlowIpv4TosThroughput object -func (obj *patternFlowIpv4TosThroughput) SetValues(value []uint32) PatternFlowIpv4TosThroughput { - obj.SetChoice(PatternFlowIpv4TosThroughputChoice.VALUES) - if obj.obj.Values == nil { - obj.obj.Values = make([]uint32, 0) - } - obj.obj.Values = value +// IPv6 address representing a node. +// SetIpv6NodeAddress sets the string value in the BgpSrteSegmentITypeSubTlv object +func (obj *bgpSrteSegmentITypeSubTlv) SetIpv6NodeAddress(value string) BgpSrteSegmentITypeSubTlv { + obj.obj.Ipv6NodeAddress = &value return obj } -// description is TBD -// Increment returns a PatternFlowIpv4TosThroughputCounter -func (obj *patternFlowIpv4TosThroughput) Increment() PatternFlowIpv4TosThroughputCounter { - if obj.obj.Increment == nil { - obj.SetChoice(PatternFlowIpv4TosThroughputChoice.INCREMENT) - } - if obj.incrementHolder == nil { - obj.incrementHolder = &patternFlowIpv4TosThroughputCounter{obj: obj.obj.Increment} - } - return obj.incrementHolder -} - -// description is TBD -// Increment returns a PatternFlowIpv4TosThroughputCounter -func (obj *patternFlowIpv4TosThroughput) HasIncrement() bool { - return obj.obj.Increment != nil -} - -// description is TBD -// SetIncrement sets the PatternFlowIpv4TosThroughputCounter value in the PatternFlowIpv4TosThroughput object -func (obj *patternFlowIpv4TosThroughput) SetIncrement(value PatternFlowIpv4TosThroughputCounter) PatternFlowIpv4TosThroughput { - obj.SetChoice(PatternFlowIpv4TosThroughputChoice.INCREMENT) - obj.incrementHolder = nil - obj.obj.Increment = value.Msg() +// Optional SRv6 SID. +// Srv6Sid returns a string +func (obj *bgpSrteSegmentITypeSubTlv) Srv6Sid() string { - return obj -} + return *obj.obj.Srv6Sid -// description is TBD -// Decrement returns a PatternFlowIpv4TosThroughputCounter -func (obj *patternFlowIpv4TosThroughput) Decrement() PatternFlowIpv4TosThroughputCounter { - if obj.obj.Decrement == nil { - obj.SetChoice(PatternFlowIpv4TosThroughputChoice.DECREMENT) - } - if obj.decrementHolder == nil { - obj.decrementHolder = &patternFlowIpv4TosThroughputCounter{obj: obj.obj.Decrement} - } - return obj.decrementHolder } -// description is TBD -// Decrement returns a PatternFlowIpv4TosThroughputCounter -func (obj *patternFlowIpv4TosThroughput) HasDecrement() bool { - return obj.obj.Decrement != nil +// Optional SRv6 SID. +// Srv6Sid returns a string +func (obj *bgpSrteSegmentITypeSubTlv) HasSrv6Sid() bool { + return obj.obj.Srv6Sid != nil } -// description is TBD -// SetDecrement sets the PatternFlowIpv4TosThroughputCounter value in the PatternFlowIpv4TosThroughput object -func (obj *patternFlowIpv4TosThroughput) SetDecrement(value PatternFlowIpv4TosThroughputCounter) PatternFlowIpv4TosThroughput { - obj.SetChoice(PatternFlowIpv4TosThroughputChoice.DECREMENT) - obj.decrementHolder = nil - obj.obj.Decrement = value.Msg() +// Optional SRv6 SID. +// SetSrv6Sid sets the string value in the BgpSrteSegmentITypeSubTlv object +func (obj *bgpSrteSegmentITypeSubTlv) SetSrv6Sid(value string) BgpSrteSegmentITypeSubTlv { + obj.obj.Srv6Sid = &value return obj } -// One or more metric tags can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. -// MetricTags returns a []PatternFlowIpv4TosThroughputMetricTag -func (obj *patternFlowIpv4TosThroughput) MetricTags() PatternFlowIpv4TosThroughputPatternFlowIpv4TosThroughputMetricTagIter { - if len(obj.obj.MetricTags) == 0 { - obj.obj.MetricTags = []*otg.PatternFlowIpv4TosThroughputMetricTag{} - } - if obj.metricTagsHolder == nil { - obj.metricTagsHolder = newPatternFlowIpv4TosThroughputPatternFlowIpv4TosThroughputMetricTagIter(&obj.obj.MetricTags).setMsg(obj) +// Optional SRv6 Endpoint Behavior and SID Structure. +// Srv6SidEndpointBehavior returns a BgpSrteSRv6SIDEndpointBehaviorAndStructure +func (obj *bgpSrteSegmentITypeSubTlv) Srv6SidEndpointBehavior() BgpSrteSRv6SIDEndpointBehaviorAndStructure { + if obj.obj.Srv6SidEndpointBehavior == nil { + obj.obj.Srv6SidEndpointBehavior = NewBgpSrteSRv6SIDEndpointBehaviorAndStructure().Msg() } - return obj.metricTagsHolder -} - -type patternFlowIpv4TosThroughputPatternFlowIpv4TosThroughputMetricTagIter struct { - obj *patternFlowIpv4TosThroughput - patternFlowIpv4TosThroughputMetricTagSlice []PatternFlowIpv4TosThroughputMetricTag - fieldPtr *[]*otg.PatternFlowIpv4TosThroughputMetricTag -} - -func newPatternFlowIpv4TosThroughputPatternFlowIpv4TosThroughputMetricTagIter(ptr *[]*otg.PatternFlowIpv4TosThroughputMetricTag) PatternFlowIpv4TosThroughputPatternFlowIpv4TosThroughputMetricTagIter { - return &patternFlowIpv4TosThroughputPatternFlowIpv4TosThroughputMetricTagIter{fieldPtr: ptr} -} - -type PatternFlowIpv4TosThroughputPatternFlowIpv4TosThroughputMetricTagIter interface { - setMsg(*patternFlowIpv4TosThroughput) PatternFlowIpv4TosThroughputPatternFlowIpv4TosThroughputMetricTagIter - Items() []PatternFlowIpv4TosThroughputMetricTag - Add() PatternFlowIpv4TosThroughputMetricTag - Append(items ...PatternFlowIpv4TosThroughputMetricTag) PatternFlowIpv4TosThroughputPatternFlowIpv4TosThroughputMetricTagIter - Set(index int, newObj PatternFlowIpv4TosThroughputMetricTag) PatternFlowIpv4TosThroughputPatternFlowIpv4TosThroughputMetricTagIter - Clear() PatternFlowIpv4TosThroughputPatternFlowIpv4TosThroughputMetricTagIter - clearHolderSlice() PatternFlowIpv4TosThroughputPatternFlowIpv4TosThroughputMetricTagIter - appendHolderSlice(item PatternFlowIpv4TosThroughputMetricTag) PatternFlowIpv4TosThroughputPatternFlowIpv4TosThroughputMetricTagIter -} - -func (obj *patternFlowIpv4TosThroughputPatternFlowIpv4TosThroughputMetricTagIter) setMsg(msg *patternFlowIpv4TosThroughput) PatternFlowIpv4TosThroughputPatternFlowIpv4TosThroughputMetricTagIter { - obj.clearHolderSlice() - for _, val := range *obj.fieldPtr { - obj.appendHolderSlice(&patternFlowIpv4TosThroughputMetricTag{obj: val}) + if obj.srv6SidEndpointBehaviorHolder == nil { + obj.srv6SidEndpointBehaviorHolder = &bgpSrteSRv6SIDEndpointBehaviorAndStructure{obj: obj.obj.Srv6SidEndpointBehavior} } - obj.obj = msg - return obj + return obj.srv6SidEndpointBehaviorHolder } -func (obj *patternFlowIpv4TosThroughputPatternFlowIpv4TosThroughputMetricTagIter) Items() []PatternFlowIpv4TosThroughputMetricTag { - return obj.patternFlowIpv4TosThroughputMetricTagSlice +// Optional SRv6 Endpoint Behavior and SID Structure. +// Srv6SidEndpointBehavior returns a BgpSrteSRv6SIDEndpointBehaviorAndStructure +func (obj *bgpSrteSegmentITypeSubTlv) HasSrv6SidEndpointBehavior() bool { + return obj.obj.Srv6SidEndpointBehavior != nil } -func (obj *patternFlowIpv4TosThroughputPatternFlowIpv4TosThroughputMetricTagIter) Add() PatternFlowIpv4TosThroughputMetricTag { - newObj := &otg.PatternFlowIpv4TosThroughputMetricTag{} - *obj.fieldPtr = append(*obj.fieldPtr, newObj) - newLibObj := &patternFlowIpv4TosThroughputMetricTag{obj: newObj} - newLibObj.setDefault() - obj.patternFlowIpv4TosThroughputMetricTagSlice = append(obj.patternFlowIpv4TosThroughputMetricTagSlice, newLibObj) - return newLibObj -} +// Optional SRv6 Endpoint Behavior and SID Structure. +// SetSrv6SidEndpointBehavior sets the BgpSrteSRv6SIDEndpointBehaviorAndStructure value in the BgpSrteSegmentITypeSubTlv object +func (obj *bgpSrteSegmentITypeSubTlv) SetSrv6SidEndpointBehavior(value BgpSrteSRv6SIDEndpointBehaviorAndStructure) BgpSrteSegmentITypeSubTlv { -func (obj *patternFlowIpv4TosThroughputPatternFlowIpv4TosThroughputMetricTagIter) Append(items ...PatternFlowIpv4TosThroughputMetricTag) PatternFlowIpv4TosThroughputPatternFlowIpv4TosThroughputMetricTagIter { - for _, item := range items { - newObj := item.Msg() - *obj.fieldPtr = append(*obj.fieldPtr, newObj) - obj.patternFlowIpv4TosThroughputMetricTagSlice = append(obj.patternFlowIpv4TosThroughputMetricTagSlice, item) - } - return obj -} + obj.srv6SidEndpointBehaviorHolder = nil + obj.obj.Srv6SidEndpointBehavior = value.Msg() -func (obj *patternFlowIpv4TosThroughputPatternFlowIpv4TosThroughputMetricTagIter) Set(index int, newObj PatternFlowIpv4TosThroughputMetricTag) PatternFlowIpv4TosThroughputPatternFlowIpv4TosThroughputMetricTagIter { - (*obj.fieldPtr)[index] = newObj.Msg() - obj.patternFlowIpv4TosThroughputMetricTagSlice[index] = newObj - return obj -} -func (obj *patternFlowIpv4TosThroughputPatternFlowIpv4TosThroughputMetricTagIter) Clear() PatternFlowIpv4TosThroughputPatternFlowIpv4TosThroughputMetricTagIter { - if len(*obj.fieldPtr) > 0 { - *obj.fieldPtr = []*otg.PatternFlowIpv4TosThroughputMetricTag{} - obj.patternFlowIpv4TosThroughputMetricTagSlice = []PatternFlowIpv4TosThroughputMetricTag{} - } - return obj -} -func (obj *patternFlowIpv4TosThroughputPatternFlowIpv4TosThroughputMetricTagIter) clearHolderSlice() PatternFlowIpv4TosThroughputPatternFlowIpv4TosThroughputMetricTagIter { - if len(obj.patternFlowIpv4TosThroughputMetricTagSlice) > 0 { - obj.patternFlowIpv4TosThroughputMetricTagSlice = []PatternFlowIpv4TosThroughputMetricTag{} - } - return obj -} -func (obj *patternFlowIpv4TosThroughputPatternFlowIpv4TosThroughputMetricTagIter) appendHolderSlice(item PatternFlowIpv4TosThroughputMetricTag) PatternFlowIpv4TosThroughputPatternFlowIpv4TosThroughputMetricTagIter { - obj.patternFlowIpv4TosThroughputMetricTagSlice = append(obj.patternFlowIpv4TosThroughputMetricTagSlice, item) return obj } -func (obj *patternFlowIpv4TosThroughput) validateObj(vObj *validation, set_default bool) { +func (obj *bgpSrteSegmentITypeSubTlv) validateObj(vObj *validation, set_default bool) { if set_default { obj.setDefault() } - if obj.obj.Value != nil { + if obj.obj.Flags != nil { - if *obj.obj.Value > 1 { - vObj.validationErrors = append( - vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowIpv4TosThroughput.Value <= 1 but Got %d", *obj.obj.Value)) + err := obj.validateHex(obj.Flags()) + if err != nil { + vObj.validationErrors = append(vObj.validationErrors, fmt.Sprintf("%s %s", err.Error(), "on BgpSrteSegmentITypeSubTlv.Flags")) } } - if obj.obj.Values != nil { - - for _, item := range obj.obj.Values { - if item > 1 { - vObj.validationErrors = append( - vObj.validationErrors, - fmt.Sprintf("min(uint32) <= PatternFlowIpv4TosThroughput.Values <= 1 but Got %d", item)) - } + // Ipv6NodeAddress is required + if obj.obj.Ipv6NodeAddress == nil { + vObj.validationErrors = append(vObj.validationErrors, "Ipv6NodeAddress is required field on interface BgpSrteSegmentITypeSubTlv") + } + if obj.obj.Ipv6NodeAddress != nil { + err := obj.validateIpv6(obj.Ipv6NodeAddress()) + if err != nil { + vObj.validationErrors = append(vObj.validationErrors, fmt.Sprintf("%s %s", err.Error(), "on BgpSrteSegmentITypeSubTlv.Ipv6NodeAddress")) } } - if obj.obj.Increment != nil { - - obj.Increment().validateObj(vObj, set_default) - } + if obj.obj.Srv6Sid != nil { - if obj.obj.Decrement != nil { + err := obj.validateIpv6(obj.Srv6Sid()) + if err != nil { + vObj.validationErrors = append(vObj.validationErrors, fmt.Sprintf("%s %s", err.Error(), "on BgpSrteSegmentITypeSubTlv.Srv6Sid")) + } - obj.Decrement().validateObj(vObj, set_default) } - if len(obj.obj.MetricTags) != 0 { - - if set_default { - obj.MetricTags().clearHolderSlice() - for _, item := range obj.obj.MetricTags { - obj.MetricTags().appendHolderSlice(&patternFlowIpv4TosThroughputMetricTag{obj: item}) - } - } - for _, item := range obj.MetricTags().Items() { - item.validateObj(vObj, set_default) - } + if obj.obj.Srv6SidEndpointBehavior != nil { + obj.Srv6SidEndpointBehavior().validateObj(vObj, set_default) } } -func (obj *patternFlowIpv4TosThroughput) setDefault() { - if obj.obj.Choice == nil { - obj.SetChoice(PatternFlowIpv4TosThroughputChoice.VALUE) - - } +func (obj *bgpSrteSegmentITypeSubTlv) setDefault() { } -// ***** PatternFlowIpv4TosReliability ***** -type patternFlowIpv4TosReliability struct { +// ***** BgpSrteSegmentJTypeSubTlv ***** +type bgpSrteSegmentJTypeSubTlv struct { validation - obj *otg.PatternFlowIpv4TosReliability - incrementHolder PatternFlowIpv4TosReliabilityCounter - decrementHolder PatternFlowIpv4TosReliabilityCounter - metricTagsHolder PatternFlowIpv4TosReliabilityPatternFlowIpv4TosReliabilityMetricTagIter + obj *otg.BgpSrteSegmentJTypeSubTlv + srv6SidEndpointBehaviorHolder BgpSrteSRv6SIDEndpointBehaviorAndStructure } -func NewPatternFlowIpv4TosReliability() PatternFlowIpv4TosReliability { - obj := patternFlowIpv4TosReliability{obj: &otg.PatternFlowIpv4TosReliability{}} +func NewBgpSrteSegmentJTypeSubTlv() BgpSrteSegmentJTypeSubTlv { + obj := bgpSrteSegmentJTypeSubTlv{obj: &otg.BgpSrteSegmentJTypeSubTlv{}} obj.setDefault() return &obj } -func (obj *patternFlowIpv4TosReliability) Msg() *otg.PatternFlowIpv4TosReliability { +func (obj *bgpSrteSegmentJTypeSubTlv) Msg() *otg.BgpSrteSegmentJTypeSubTlv { return obj.obj } -func (obj *patternFlowIpv4TosReliability) SetMsg(msg *otg.PatternFlowIpv4TosReliability) PatternFlowIpv4TosReliability { +func (obj *bgpSrteSegmentJTypeSubTlv) SetMsg(msg *otg.BgpSrteSegmentJTypeSubTlv) BgpSrteSegmentJTypeSubTlv { obj.setNil() proto.Merge(obj.obj, msg) return obj } -func (obj *patternFlowIpv4TosReliability) ToProto() (*otg.PatternFlowIpv4TosReliability, error) { +func (obj *bgpSrteSegmentJTypeSubTlv) ToProto() (*otg.BgpSrteSegmentJTypeSubTlv, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -284685,7 +329575,7 @@ func (obj *patternFlowIpv4TosReliability) ToProto() (*otg.PatternFlowIpv4TosReli return obj.Msg(), nil } -func (obj *patternFlowIpv4TosReliability) FromProto(msg *otg.PatternFlowIpv4TosReliability) (PatternFlowIpv4TosReliability, error) { +func (obj *bgpSrteSegmentJTypeSubTlv) FromProto(msg *otg.BgpSrteSegmentJTypeSubTlv) (BgpSrteSegmentJTypeSubTlv, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -284694,7 +329584,7 @@ func (obj *patternFlowIpv4TosReliability) FromProto(msg *otg.PatternFlowIpv4TosR return newObj, nil } -func (obj *patternFlowIpv4TosReliability) ToPbText() (string, error) { +func (obj *bgpSrteSegmentJTypeSubTlv) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -284706,7 +329596,7 @@ func (obj *patternFlowIpv4TosReliability) ToPbText() (string, error) { return string(protoMarshal), nil } -func (obj *patternFlowIpv4TosReliability) FromPbText(value string) error { +func (obj *bgpSrteSegmentJTypeSubTlv) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj @@ -284719,7 +329609,7 @@ func (obj *patternFlowIpv4TosReliability) FromPbText(value string) error { return retObj } -func (obj *patternFlowIpv4TosReliability) ToYaml() (string, error) { +func (obj *bgpSrteSegmentJTypeSubTlv) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -284740,7 +329630,7 @@ func (obj *patternFlowIpv4TosReliability) ToYaml() (string, error) { return string(data), nil } -func (obj *patternFlowIpv4TosReliability) FromYaml(value string) error { +func (obj *bgpSrteSegmentJTypeSubTlv) FromYaml(value string) error { if value == "" { value = "{}" } @@ -284765,7 +329655,7 @@ func (obj *patternFlowIpv4TosReliability) FromYaml(value string) error { return nil } -func (obj *patternFlowIpv4TosReliability) ToJson() (string, error) { +func (obj *bgpSrteSegmentJTypeSubTlv) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -284783,7 +329673,7 @@ func (obj *patternFlowIpv4TosReliability) ToJson() (string, error) { return string(data), nil } -func (obj *patternFlowIpv4TosReliability) FromJson(value string) error { +func (obj *bgpSrteSegmentJTypeSubTlv) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -284804,19 +329694,19 @@ func (obj *patternFlowIpv4TosReliability) FromJson(value string) error { return nil } -func (obj *patternFlowIpv4TosReliability) validateToAndFrom() error { +func (obj *bgpSrteSegmentJTypeSubTlv) validateToAndFrom() error { // emptyVars() obj.validateObj(&obj.validation, true) return obj.validationResult() } -func (obj *patternFlowIpv4TosReliability) Validate() error { +func (obj *bgpSrteSegmentJTypeSubTlv) Validate() error { // emptyVars() obj.validateObj(&obj.validation, false) return obj.validationResult() } -func (obj *patternFlowIpv4TosReliability) String() string { +func (obj *bgpSrteSegmentJTypeSubTlv) String() string { str, err := obj.ToYaml() if err != nil { return err.Error() @@ -284824,12 +329714,12 @@ func (obj *patternFlowIpv4TosReliability) String() string { return str } -func (obj *patternFlowIpv4TosReliability) Clone() (PatternFlowIpv4TosReliability, error) { +func (obj *bgpSrteSegmentJTypeSubTlv) Clone() (BgpSrteSegmentJTypeSubTlv, error) { vErr := obj.Validate() if vErr != nil { return nil, vErr } - newObj := NewPatternFlowIpv4TosReliability() + newObj := NewBgpSrteSegmentJTypeSubTlv() data, err := proto.Marshal(obj.Msg()) if err != nil { return nil, err @@ -284841,426 +329731,359 @@ func (obj *patternFlowIpv4TosReliability) Clone() (PatternFlowIpv4TosReliability return newObj, nil } -func (obj *patternFlowIpv4TosReliability) setNil() { - obj.incrementHolder = nil - obj.decrementHolder = nil - obj.metricTagsHolder = nil +func (obj *bgpSrteSegmentJTypeSubTlv) setNil() { + obj.srv6SidEndpointBehaviorHolder = nil obj.validationErrors = nil obj.warnings = nil obj.constraints = make(map[string]map[string]Constraints) } -// PatternFlowIpv4TosReliability is reliability -type PatternFlowIpv4TosReliability interface { +// BgpSrteSegmentJTypeSubTlv is type J: IPv6 Address, Interface ID for local and remote pair for SRv6 with optional SID. +type BgpSrteSegmentJTypeSubTlv interface { Validation - // Msg marshals PatternFlowIpv4TosReliability to protobuf object *otg.PatternFlowIpv4TosReliability + // Msg marshals BgpSrteSegmentJTypeSubTlv to protobuf object *otg.BgpSrteSegmentJTypeSubTlv // and doesn't set defaults - Msg() *otg.PatternFlowIpv4TosReliability - // SetMsg unmarshals PatternFlowIpv4TosReliability from protobuf object *otg.PatternFlowIpv4TosReliability + Msg() *otg.BgpSrteSegmentJTypeSubTlv + // SetMsg unmarshals BgpSrteSegmentJTypeSubTlv from protobuf object *otg.BgpSrteSegmentJTypeSubTlv // and doesn't set defaults - SetMsg(*otg.PatternFlowIpv4TosReliability) PatternFlowIpv4TosReliability - // ToProto marshals PatternFlowIpv4TosReliability to protobuf object *otg.PatternFlowIpv4TosReliability - ToProto() (*otg.PatternFlowIpv4TosReliability, error) - // ToPbText marshals PatternFlowIpv4TosReliability to protobuf text + SetMsg(*otg.BgpSrteSegmentJTypeSubTlv) BgpSrteSegmentJTypeSubTlv + // ToProto marshals BgpSrteSegmentJTypeSubTlv to protobuf object *otg.BgpSrteSegmentJTypeSubTlv + ToProto() (*otg.BgpSrteSegmentJTypeSubTlv, error) + // ToPbText marshals BgpSrteSegmentJTypeSubTlv to protobuf text ToPbText() (string, error) - // ToYaml marshals PatternFlowIpv4TosReliability to YAML text + // ToYaml marshals BgpSrteSegmentJTypeSubTlv to YAML text ToYaml() (string, error) - // ToJson marshals PatternFlowIpv4TosReliability to JSON text + // ToJson marshals BgpSrteSegmentJTypeSubTlv to JSON text ToJson() (string, error) - // FromProto unmarshals PatternFlowIpv4TosReliability from protobuf object *otg.PatternFlowIpv4TosReliability - FromProto(msg *otg.PatternFlowIpv4TosReliability) (PatternFlowIpv4TosReliability, error) - // FromPbText unmarshals PatternFlowIpv4TosReliability from protobuf text + // FromProto unmarshals BgpSrteSegmentJTypeSubTlv from protobuf object *otg.BgpSrteSegmentJTypeSubTlv + FromProto(msg *otg.BgpSrteSegmentJTypeSubTlv) (BgpSrteSegmentJTypeSubTlv, error) + // FromPbText unmarshals BgpSrteSegmentJTypeSubTlv from protobuf text FromPbText(value string) error - // FromYaml unmarshals PatternFlowIpv4TosReliability from YAML text + // FromYaml unmarshals BgpSrteSegmentJTypeSubTlv from YAML text FromYaml(value string) error - // FromJson unmarshals PatternFlowIpv4TosReliability from JSON text + // FromJson unmarshals BgpSrteSegmentJTypeSubTlv from JSON text FromJson(value string) error - // Validate validates PatternFlowIpv4TosReliability + // Validate validates BgpSrteSegmentJTypeSubTlv Validate() error // A stringer function String() string // Clones the object - Clone() (PatternFlowIpv4TosReliability, error) + Clone() (BgpSrteSegmentJTypeSubTlv, error) validateToAndFrom() error validateObj(vObj *validation, set_default bool) setDefault() - // Choice returns PatternFlowIpv4TosReliabilityChoiceEnum, set in PatternFlowIpv4TosReliability - Choice() PatternFlowIpv4TosReliabilityChoiceEnum - // SetChoice assigns PatternFlowIpv4TosReliabilityChoiceEnum provided by user to PatternFlowIpv4TosReliability - SetChoice(value PatternFlowIpv4TosReliabilityChoiceEnum) PatternFlowIpv4TosReliability - // HasChoice checks if Choice has been set in PatternFlowIpv4TosReliability - HasChoice() bool - // Value returns uint32, set in PatternFlowIpv4TosReliability. - Value() uint32 - // SetValue assigns uint32 provided by user to PatternFlowIpv4TosReliability - SetValue(value uint32) PatternFlowIpv4TosReliability - // HasValue checks if Value has been set in PatternFlowIpv4TosReliability - HasValue() bool - // Values returns []uint32, set in PatternFlowIpv4TosReliability. - Values() []uint32 - // SetValues assigns []uint32 provided by user to PatternFlowIpv4TosReliability - SetValues(value []uint32) PatternFlowIpv4TosReliability - // Increment returns PatternFlowIpv4TosReliabilityCounter, set in PatternFlowIpv4TosReliability. - // PatternFlowIpv4TosReliabilityCounter is integer counter pattern - Increment() PatternFlowIpv4TosReliabilityCounter - // SetIncrement assigns PatternFlowIpv4TosReliabilityCounter provided by user to PatternFlowIpv4TosReliability. - // PatternFlowIpv4TosReliabilityCounter is integer counter pattern - SetIncrement(value PatternFlowIpv4TosReliabilityCounter) PatternFlowIpv4TosReliability - // HasIncrement checks if Increment has been set in PatternFlowIpv4TosReliability - HasIncrement() bool - // Decrement returns PatternFlowIpv4TosReliabilityCounter, set in PatternFlowIpv4TosReliability. - // PatternFlowIpv4TosReliabilityCounter is integer counter pattern - Decrement() PatternFlowIpv4TosReliabilityCounter - // SetDecrement assigns PatternFlowIpv4TosReliabilityCounter provided by user to PatternFlowIpv4TosReliability. - // PatternFlowIpv4TosReliabilityCounter is integer counter pattern - SetDecrement(value PatternFlowIpv4TosReliabilityCounter) PatternFlowIpv4TosReliability - // HasDecrement checks if Decrement has been set in PatternFlowIpv4TosReliability - HasDecrement() bool - // MetricTags returns PatternFlowIpv4TosReliabilityPatternFlowIpv4TosReliabilityMetricTagIterIter, set in PatternFlowIpv4TosReliability - MetricTags() PatternFlowIpv4TosReliabilityPatternFlowIpv4TosReliabilityMetricTagIter + // Flags returns string, set in BgpSrteSegmentJTypeSubTlv. + Flags() string + // SetFlags assigns string provided by user to BgpSrteSegmentJTypeSubTlv + SetFlags(value string) BgpSrteSegmentJTypeSubTlv + // HasFlags checks if Flags has been set in BgpSrteSegmentJTypeSubTlv + HasFlags() bool + // SrAlgorithm returns uint32, set in BgpSrteSegmentJTypeSubTlv. + SrAlgorithm() uint32 + // SetSrAlgorithm assigns uint32 provided by user to BgpSrteSegmentJTypeSubTlv + SetSrAlgorithm(value uint32) BgpSrteSegmentJTypeSubTlv + // HasSrAlgorithm checks if SrAlgorithm has been set in BgpSrteSegmentJTypeSubTlv + HasSrAlgorithm() bool + // LocalInterfaceId returns uint32, set in BgpSrteSegmentJTypeSubTlv. + LocalInterfaceId() uint32 + // SetLocalInterfaceId assigns uint32 provided by user to BgpSrteSegmentJTypeSubTlv + SetLocalInterfaceId(value uint32) BgpSrteSegmentJTypeSubTlv + // HasLocalInterfaceId checks if LocalInterfaceId has been set in BgpSrteSegmentJTypeSubTlv + HasLocalInterfaceId() bool + // LocalIpv6NodeAddress returns string, set in BgpSrteSegmentJTypeSubTlv. + LocalIpv6NodeAddress() string + // SetLocalIpv6NodeAddress assigns string provided by user to BgpSrteSegmentJTypeSubTlv + SetLocalIpv6NodeAddress(value string) BgpSrteSegmentJTypeSubTlv + // RemoteInterfaceId returns uint32, set in BgpSrteSegmentJTypeSubTlv. + RemoteInterfaceId() uint32 + // SetRemoteInterfaceId assigns uint32 provided by user to BgpSrteSegmentJTypeSubTlv + SetRemoteInterfaceId(value uint32) BgpSrteSegmentJTypeSubTlv + // HasRemoteInterfaceId checks if RemoteInterfaceId has been set in BgpSrteSegmentJTypeSubTlv + HasRemoteInterfaceId() bool + // RemoteIpv6NodeAddress returns string, set in BgpSrteSegmentJTypeSubTlv. + RemoteIpv6NodeAddress() string + // SetRemoteIpv6NodeAddress assigns string provided by user to BgpSrteSegmentJTypeSubTlv + SetRemoteIpv6NodeAddress(value string) BgpSrteSegmentJTypeSubTlv + // Srv6Sid returns string, set in BgpSrteSegmentJTypeSubTlv. + Srv6Sid() string + // SetSrv6Sid assigns string provided by user to BgpSrteSegmentJTypeSubTlv + SetSrv6Sid(value string) BgpSrteSegmentJTypeSubTlv + // HasSrv6Sid checks if Srv6Sid has been set in BgpSrteSegmentJTypeSubTlv + HasSrv6Sid() bool + // Srv6SidEndpointBehavior returns BgpSrteSRv6SIDEndpointBehaviorAndStructure, set in BgpSrteSegmentJTypeSubTlv. + // BgpSrteSRv6SIDEndpointBehaviorAndStructure is configuration for SRv6 Endpoint Behavior and SID Structure. Its optional. Summation of lengths for Locator Block, Locator Node, Function, and Argument MUST be less than or equal to 128. + Srv6SidEndpointBehavior() BgpSrteSRv6SIDEndpointBehaviorAndStructure + // SetSrv6SidEndpointBehavior assigns BgpSrteSRv6SIDEndpointBehaviorAndStructure provided by user to BgpSrteSegmentJTypeSubTlv. + // BgpSrteSRv6SIDEndpointBehaviorAndStructure is configuration for SRv6 Endpoint Behavior and SID Structure. Its optional. Summation of lengths for Locator Block, Locator Node, Function, and Argument MUST be less than or equal to 128. + SetSrv6SidEndpointBehavior(value BgpSrteSRv6SIDEndpointBehaviorAndStructure) BgpSrteSegmentJTypeSubTlv + // HasSrv6SidEndpointBehavior checks if Srv6SidEndpointBehavior has been set in BgpSrteSegmentJTypeSubTlv + HasSrv6SidEndpointBehavior() bool setNil() } -type PatternFlowIpv4TosReliabilityChoiceEnum string +// One octet bitmap for flags including V-Flag, A-Flag, S-Flag, B-Flag etc. as defined in https://datatracker.ietf.org/doc/html/draft-ietf-idr-segment-routing-te-policy-13#section-2.4.4.2.12 +// Flags returns a string +func (obj *bgpSrteSegmentJTypeSubTlv) Flags() string { -// Enum of Choice on PatternFlowIpv4TosReliability -var PatternFlowIpv4TosReliabilityChoice = struct { - VALUE PatternFlowIpv4TosReliabilityChoiceEnum - VALUES PatternFlowIpv4TosReliabilityChoiceEnum - INCREMENT PatternFlowIpv4TosReliabilityChoiceEnum - DECREMENT PatternFlowIpv4TosReliabilityChoiceEnum -}{ - VALUE: PatternFlowIpv4TosReliabilityChoiceEnum("value"), - VALUES: PatternFlowIpv4TosReliabilityChoiceEnum("values"), - INCREMENT: PatternFlowIpv4TosReliabilityChoiceEnum("increment"), - DECREMENT: PatternFlowIpv4TosReliabilityChoiceEnum("decrement"), -} + return *obj.obj.Flags -func (obj *patternFlowIpv4TosReliability) Choice() PatternFlowIpv4TosReliabilityChoiceEnum { - return PatternFlowIpv4TosReliabilityChoiceEnum(obj.obj.Choice.Enum().String()) } -// description is TBD -// Choice returns a string -func (obj *patternFlowIpv4TosReliability) HasChoice() bool { - return obj.obj.Choice != nil +// One octet bitmap for flags including V-Flag, A-Flag, S-Flag, B-Flag etc. as defined in https://datatracker.ietf.org/doc/html/draft-ietf-idr-segment-routing-te-policy-13#section-2.4.4.2.12 +// Flags returns a string +func (obj *bgpSrteSegmentJTypeSubTlv) HasFlags() bool { + return obj.obj.Flags != nil } -func (obj *patternFlowIpv4TosReliability) SetChoice(value PatternFlowIpv4TosReliabilityChoiceEnum) PatternFlowIpv4TosReliability { - intValue, ok := otg.PatternFlowIpv4TosReliability_Choice_Enum_value[string(value)] - if !ok { - obj.validationErrors = append(obj.validationErrors, fmt.Sprintf( - "%s is not a valid choice on PatternFlowIpv4TosReliabilityChoiceEnum", string(value))) - return obj - } - enumValue := otg.PatternFlowIpv4TosReliability_Choice_Enum(intValue) - obj.obj.Choice = &enumValue - obj.obj.Decrement = nil - obj.decrementHolder = nil - obj.obj.Increment = nil - obj.incrementHolder = nil - obj.obj.Values = nil - obj.obj.Value = nil - - if value == PatternFlowIpv4TosReliabilityChoice.VALUE { - defaultValue := uint32(0) - obj.obj.Value = &defaultValue - } - - if value == PatternFlowIpv4TosReliabilityChoice.VALUES { - defaultValue := []uint32{0} - obj.obj.Values = defaultValue - } - - if value == PatternFlowIpv4TosReliabilityChoice.INCREMENT { - obj.obj.Increment = NewPatternFlowIpv4TosReliabilityCounter().Msg() - } - - if value == PatternFlowIpv4TosReliabilityChoice.DECREMENT { - obj.obj.Decrement = NewPatternFlowIpv4TosReliabilityCounter().Msg() - } +// One octet bitmap for flags including V-Flag, A-Flag, S-Flag, B-Flag etc. as defined in https://datatracker.ietf.org/doc/html/draft-ietf-idr-segment-routing-te-policy-13#section-2.4.4.2.12 +// SetFlags sets the string value in the BgpSrteSegmentJTypeSubTlv object +func (obj *bgpSrteSegmentJTypeSubTlv) SetFlags(value string) BgpSrteSegmentJTypeSubTlv { + obj.obj.Flags = &value return obj } -// description is TBD -// Value returns a uint32 -func (obj *patternFlowIpv4TosReliability) Value() uint32 { - - if obj.obj.Value == nil { - obj.SetChoice(PatternFlowIpv4TosReliabilityChoice.VALUE) - } +// SR Algorithm identifier when A-Flag in on. +// SrAlgorithm returns a uint32 +func (obj *bgpSrteSegmentJTypeSubTlv) SrAlgorithm() uint32 { - return *obj.obj.Value + return *obj.obj.SrAlgorithm } -// description is TBD -// Value returns a uint32 -func (obj *patternFlowIpv4TosReliability) HasValue() bool { - return obj.obj.Value != nil +// SR Algorithm identifier when A-Flag in on. +// SrAlgorithm returns a uint32 +func (obj *bgpSrteSegmentJTypeSubTlv) HasSrAlgorithm() bool { + return obj.obj.SrAlgorithm != nil } -// description is TBD -// SetValue sets the uint32 value in the PatternFlowIpv4TosReliability object -func (obj *patternFlowIpv4TosReliability) SetValue(value uint32) PatternFlowIpv4TosReliability { - obj.SetChoice(PatternFlowIpv4TosReliabilityChoice.VALUE) - obj.obj.Value = &value +// SR Algorithm identifier when A-Flag in on. +// SetSrAlgorithm sets the uint32 value in the BgpSrteSegmentJTypeSubTlv object +func (obj *bgpSrteSegmentJTypeSubTlv) SetSrAlgorithm(value uint32) BgpSrteSegmentJTypeSubTlv { + + obj.obj.SrAlgorithm = &value return obj } -// description is TBD -// Values returns a []uint32 -func (obj *patternFlowIpv4TosReliability) Values() []uint32 { - if obj.obj.Values == nil { - obj.SetValues([]uint32{0}) - } - return obj.obj.Values +// Local Interface ID: The Interface Index as defined in [RFC8664]. +// LocalInterfaceId returns a uint32 +func (obj *bgpSrteSegmentJTypeSubTlv) LocalInterfaceId() uint32 { + + return *obj.obj.LocalInterfaceId + } -// description is TBD -// SetValues sets the []uint32 value in the PatternFlowIpv4TosReliability object -func (obj *patternFlowIpv4TosReliability) SetValues(value []uint32) PatternFlowIpv4TosReliability { - obj.SetChoice(PatternFlowIpv4TosReliabilityChoice.VALUES) - if obj.obj.Values == nil { - obj.obj.Values = make([]uint32, 0) - } - obj.obj.Values = value +// Local Interface ID: The Interface Index as defined in [RFC8664]. +// LocalInterfaceId returns a uint32 +func (obj *bgpSrteSegmentJTypeSubTlv) HasLocalInterfaceId() bool { + return obj.obj.LocalInterfaceId != nil +} + +// Local Interface ID: The Interface Index as defined in [RFC8664]. +// SetLocalInterfaceId sets the uint32 value in the BgpSrteSegmentJTypeSubTlv object +func (obj *bgpSrteSegmentJTypeSubTlv) SetLocalInterfaceId(value uint32) BgpSrteSegmentJTypeSubTlv { + obj.obj.LocalInterfaceId = &value return obj } -// description is TBD -// Increment returns a PatternFlowIpv4TosReliabilityCounter -func (obj *patternFlowIpv4TosReliability) Increment() PatternFlowIpv4TosReliabilityCounter { - if obj.obj.Increment == nil { - obj.SetChoice(PatternFlowIpv4TosReliabilityChoice.INCREMENT) - } - if obj.incrementHolder == nil { - obj.incrementHolder = &patternFlowIpv4TosReliabilityCounter{obj: obj.obj.Increment} - } - return obj.incrementHolder -} +// IPv6 address representing a node. +// LocalIpv6NodeAddress returns a string +func (obj *bgpSrteSegmentJTypeSubTlv) LocalIpv6NodeAddress() string { + + return *obj.obj.LocalIpv6NodeAddress -// description is TBD -// Increment returns a PatternFlowIpv4TosReliabilityCounter -func (obj *patternFlowIpv4TosReliability) HasIncrement() bool { - return obj.obj.Increment != nil } -// description is TBD -// SetIncrement sets the PatternFlowIpv4TosReliabilityCounter value in the PatternFlowIpv4TosReliability object -func (obj *patternFlowIpv4TosReliability) SetIncrement(value PatternFlowIpv4TosReliabilityCounter) PatternFlowIpv4TosReliability { - obj.SetChoice(PatternFlowIpv4TosReliabilityChoice.INCREMENT) - obj.incrementHolder = nil - obj.obj.Increment = value.Msg() +// IPv6 address representing a node. +// SetLocalIpv6NodeAddress sets the string value in the BgpSrteSegmentJTypeSubTlv object +func (obj *bgpSrteSegmentJTypeSubTlv) SetLocalIpv6NodeAddress(value string) BgpSrteSegmentJTypeSubTlv { + obj.obj.LocalIpv6NodeAddress = &value return obj } -// description is TBD -// Decrement returns a PatternFlowIpv4TosReliabilityCounter -func (obj *patternFlowIpv4TosReliability) Decrement() PatternFlowIpv4TosReliabilityCounter { - if obj.obj.Decrement == nil { - obj.SetChoice(PatternFlowIpv4TosReliabilityChoice.DECREMENT) - } - if obj.decrementHolder == nil { - obj.decrementHolder = &patternFlowIpv4TosReliabilityCounter{obj: obj.obj.Decrement} - } - return obj.decrementHolder +// Local Interface ID: The Interface Index as defined in [RFC8664]. +// RemoteInterfaceId returns a uint32 +func (obj *bgpSrteSegmentJTypeSubTlv) RemoteInterfaceId() uint32 { + + return *obj.obj.RemoteInterfaceId + } -// description is TBD -// Decrement returns a PatternFlowIpv4TosReliabilityCounter -func (obj *patternFlowIpv4TosReliability) HasDecrement() bool { - return obj.obj.Decrement != nil +// Local Interface ID: The Interface Index as defined in [RFC8664]. +// RemoteInterfaceId returns a uint32 +func (obj *bgpSrteSegmentJTypeSubTlv) HasRemoteInterfaceId() bool { + return obj.obj.RemoteInterfaceId != nil } -// description is TBD -// SetDecrement sets the PatternFlowIpv4TosReliabilityCounter value in the PatternFlowIpv4TosReliability object -func (obj *patternFlowIpv4TosReliability) SetDecrement(value PatternFlowIpv4TosReliabilityCounter) PatternFlowIpv4TosReliability { - obj.SetChoice(PatternFlowIpv4TosReliabilityChoice.DECREMENT) - obj.decrementHolder = nil - obj.obj.Decrement = value.Msg() +// Local Interface ID: The Interface Index as defined in [RFC8664]. +// SetRemoteInterfaceId sets the uint32 value in the BgpSrteSegmentJTypeSubTlv object +func (obj *bgpSrteSegmentJTypeSubTlv) SetRemoteInterfaceId(value uint32) BgpSrteSegmentJTypeSubTlv { + obj.obj.RemoteInterfaceId = &value return obj } -// One or more metric tags can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. -// MetricTags returns a []PatternFlowIpv4TosReliabilityMetricTag -func (obj *patternFlowIpv4TosReliability) MetricTags() PatternFlowIpv4TosReliabilityPatternFlowIpv4TosReliabilityMetricTagIter { - if len(obj.obj.MetricTags) == 0 { - obj.obj.MetricTags = []*otg.PatternFlowIpv4TosReliabilityMetricTag{} - } - if obj.metricTagsHolder == nil { - obj.metricTagsHolder = newPatternFlowIpv4TosReliabilityPatternFlowIpv4TosReliabilityMetricTagIter(&obj.obj.MetricTags).setMsg(obj) - } - return obj.metricTagsHolder -} +// IPv6 address representing a node. +// RemoteIpv6NodeAddress returns a string +func (obj *bgpSrteSegmentJTypeSubTlv) RemoteIpv6NodeAddress() string { -type patternFlowIpv4TosReliabilityPatternFlowIpv4TosReliabilityMetricTagIter struct { - obj *patternFlowIpv4TosReliability - patternFlowIpv4TosReliabilityMetricTagSlice []PatternFlowIpv4TosReliabilityMetricTag - fieldPtr *[]*otg.PatternFlowIpv4TosReliabilityMetricTag -} + return *obj.obj.RemoteIpv6NodeAddress -func newPatternFlowIpv4TosReliabilityPatternFlowIpv4TosReliabilityMetricTagIter(ptr *[]*otg.PatternFlowIpv4TosReliabilityMetricTag) PatternFlowIpv4TosReliabilityPatternFlowIpv4TosReliabilityMetricTagIter { - return &patternFlowIpv4TosReliabilityPatternFlowIpv4TosReliabilityMetricTagIter{fieldPtr: ptr} } -type PatternFlowIpv4TosReliabilityPatternFlowIpv4TosReliabilityMetricTagIter interface { - setMsg(*patternFlowIpv4TosReliability) PatternFlowIpv4TosReliabilityPatternFlowIpv4TosReliabilityMetricTagIter - Items() []PatternFlowIpv4TosReliabilityMetricTag - Add() PatternFlowIpv4TosReliabilityMetricTag - Append(items ...PatternFlowIpv4TosReliabilityMetricTag) PatternFlowIpv4TosReliabilityPatternFlowIpv4TosReliabilityMetricTagIter - Set(index int, newObj PatternFlowIpv4TosReliabilityMetricTag) PatternFlowIpv4TosReliabilityPatternFlowIpv4TosReliabilityMetricTagIter - Clear() PatternFlowIpv4TosReliabilityPatternFlowIpv4TosReliabilityMetricTagIter - clearHolderSlice() PatternFlowIpv4TosReliabilityPatternFlowIpv4TosReliabilityMetricTagIter - appendHolderSlice(item PatternFlowIpv4TosReliabilityMetricTag) PatternFlowIpv4TosReliabilityPatternFlowIpv4TosReliabilityMetricTagIter -} +// IPv6 address representing a node. +// SetRemoteIpv6NodeAddress sets the string value in the BgpSrteSegmentJTypeSubTlv object +func (obj *bgpSrteSegmentJTypeSubTlv) SetRemoteIpv6NodeAddress(value string) BgpSrteSegmentJTypeSubTlv { -func (obj *patternFlowIpv4TosReliabilityPatternFlowIpv4TosReliabilityMetricTagIter) setMsg(msg *patternFlowIpv4TosReliability) PatternFlowIpv4TosReliabilityPatternFlowIpv4TosReliabilityMetricTagIter { - obj.clearHolderSlice() - for _, val := range *obj.fieldPtr { - obj.appendHolderSlice(&patternFlowIpv4TosReliabilityMetricTag{obj: val}) - } - obj.obj = msg + obj.obj.RemoteIpv6NodeAddress = &value return obj } -func (obj *patternFlowIpv4TosReliabilityPatternFlowIpv4TosReliabilityMetricTagIter) Items() []PatternFlowIpv4TosReliabilityMetricTag { - return obj.patternFlowIpv4TosReliabilityMetricTagSlice -} +// Optional SRv6 SID. +// Srv6Sid returns a string +func (obj *bgpSrteSegmentJTypeSubTlv) Srv6Sid() string { + + return *obj.obj.Srv6Sid -func (obj *patternFlowIpv4TosReliabilityPatternFlowIpv4TosReliabilityMetricTagIter) Add() PatternFlowIpv4TosReliabilityMetricTag { - newObj := &otg.PatternFlowIpv4TosReliabilityMetricTag{} - *obj.fieldPtr = append(*obj.fieldPtr, newObj) - newLibObj := &patternFlowIpv4TosReliabilityMetricTag{obj: newObj} - newLibObj.setDefault() - obj.patternFlowIpv4TosReliabilityMetricTagSlice = append(obj.patternFlowIpv4TosReliabilityMetricTagSlice, newLibObj) - return newLibObj } -func (obj *patternFlowIpv4TosReliabilityPatternFlowIpv4TosReliabilityMetricTagIter) Append(items ...PatternFlowIpv4TosReliabilityMetricTag) PatternFlowIpv4TosReliabilityPatternFlowIpv4TosReliabilityMetricTagIter { - for _, item := range items { - newObj := item.Msg() - *obj.fieldPtr = append(*obj.fieldPtr, newObj) - obj.patternFlowIpv4TosReliabilityMetricTagSlice = append(obj.patternFlowIpv4TosReliabilityMetricTagSlice, item) - } - return obj +// Optional SRv6 SID. +// Srv6Sid returns a string +func (obj *bgpSrteSegmentJTypeSubTlv) HasSrv6Sid() bool { + return obj.obj.Srv6Sid != nil } -func (obj *patternFlowIpv4TosReliabilityPatternFlowIpv4TosReliabilityMetricTagIter) Set(index int, newObj PatternFlowIpv4TosReliabilityMetricTag) PatternFlowIpv4TosReliabilityPatternFlowIpv4TosReliabilityMetricTagIter { - (*obj.fieldPtr)[index] = newObj.Msg() - obj.patternFlowIpv4TosReliabilityMetricTagSlice[index] = newObj +// Optional SRv6 SID. +// SetSrv6Sid sets the string value in the BgpSrteSegmentJTypeSubTlv object +func (obj *bgpSrteSegmentJTypeSubTlv) SetSrv6Sid(value string) BgpSrteSegmentJTypeSubTlv { + + obj.obj.Srv6Sid = &value return obj } -func (obj *patternFlowIpv4TosReliabilityPatternFlowIpv4TosReliabilityMetricTagIter) Clear() PatternFlowIpv4TosReliabilityPatternFlowIpv4TosReliabilityMetricTagIter { - if len(*obj.fieldPtr) > 0 { - *obj.fieldPtr = []*otg.PatternFlowIpv4TosReliabilityMetricTag{} - obj.patternFlowIpv4TosReliabilityMetricTagSlice = []PatternFlowIpv4TosReliabilityMetricTag{} + +// Optional SRv6 Endpoint Behavior and SID Structure. +// Srv6SidEndpointBehavior returns a BgpSrteSRv6SIDEndpointBehaviorAndStructure +func (obj *bgpSrteSegmentJTypeSubTlv) Srv6SidEndpointBehavior() BgpSrteSRv6SIDEndpointBehaviorAndStructure { + if obj.obj.Srv6SidEndpointBehavior == nil { + obj.obj.Srv6SidEndpointBehavior = NewBgpSrteSRv6SIDEndpointBehaviorAndStructure().Msg() } - return obj -} -func (obj *patternFlowIpv4TosReliabilityPatternFlowIpv4TosReliabilityMetricTagIter) clearHolderSlice() PatternFlowIpv4TosReliabilityPatternFlowIpv4TosReliabilityMetricTagIter { - if len(obj.patternFlowIpv4TosReliabilityMetricTagSlice) > 0 { - obj.patternFlowIpv4TosReliabilityMetricTagSlice = []PatternFlowIpv4TosReliabilityMetricTag{} + if obj.srv6SidEndpointBehaviorHolder == nil { + obj.srv6SidEndpointBehaviorHolder = &bgpSrteSRv6SIDEndpointBehaviorAndStructure{obj: obj.obj.Srv6SidEndpointBehavior} } - return obj + return obj.srv6SidEndpointBehaviorHolder } -func (obj *patternFlowIpv4TosReliabilityPatternFlowIpv4TosReliabilityMetricTagIter) appendHolderSlice(item PatternFlowIpv4TosReliabilityMetricTag) PatternFlowIpv4TosReliabilityPatternFlowIpv4TosReliabilityMetricTagIter { - obj.patternFlowIpv4TosReliabilityMetricTagSlice = append(obj.patternFlowIpv4TosReliabilityMetricTagSlice, item) + +// Optional SRv6 Endpoint Behavior and SID Structure. +// Srv6SidEndpointBehavior returns a BgpSrteSRv6SIDEndpointBehaviorAndStructure +func (obj *bgpSrteSegmentJTypeSubTlv) HasSrv6SidEndpointBehavior() bool { + return obj.obj.Srv6SidEndpointBehavior != nil +} + +// Optional SRv6 Endpoint Behavior and SID Structure. +// SetSrv6SidEndpointBehavior sets the BgpSrteSRv6SIDEndpointBehaviorAndStructure value in the BgpSrteSegmentJTypeSubTlv object +func (obj *bgpSrteSegmentJTypeSubTlv) SetSrv6SidEndpointBehavior(value BgpSrteSRv6SIDEndpointBehaviorAndStructure) BgpSrteSegmentJTypeSubTlv { + + obj.srv6SidEndpointBehaviorHolder = nil + obj.obj.Srv6SidEndpointBehavior = value.Msg() + return obj } -func (obj *patternFlowIpv4TosReliability) validateObj(vObj *validation, set_default bool) { +func (obj *bgpSrteSegmentJTypeSubTlv) validateObj(vObj *validation, set_default bool) { if set_default { obj.setDefault() } - if obj.obj.Value != nil { + if obj.obj.Flags != nil { - if *obj.obj.Value > 1 { - vObj.validationErrors = append( - vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowIpv4TosReliability.Value <= 1 but Got %d", *obj.obj.Value)) + err := obj.validateHex(obj.Flags()) + if err != nil { + vObj.validationErrors = append(vObj.validationErrors, fmt.Sprintf("%s %s", err.Error(), "on BgpSrteSegmentJTypeSubTlv.Flags")) } } - if obj.obj.Values != nil { - - for _, item := range obj.obj.Values { - if item > 1 { - vObj.validationErrors = append( - vObj.validationErrors, - fmt.Sprintf("min(uint32) <= PatternFlowIpv4TosReliability.Values <= 1 but Got %d", item)) - } + // LocalIpv6NodeAddress is required + if obj.obj.LocalIpv6NodeAddress == nil { + vObj.validationErrors = append(vObj.validationErrors, "LocalIpv6NodeAddress is required field on interface BgpSrteSegmentJTypeSubTlv") + } + if obj.obj.LocalIpv6NodeAddress != nil { + err := obj.validateIpv6(obj.LocalIpv6NodeAddress()) + if err != nil { + vObj.validationErrors = append(vObj.validationErrors, fmt.Sprintf("%s %s", err.Error(), "on BgpSrteSegmentJTypeSubTlv.LocalIpv6NodeAddress")) } } - if obj.obj.Increment != nil { - - obj.Increment().validateObj(vObj, set_default) + // RemoteIpv6NodeAddress is required + if obj.obj.RemoteIpv6NodeAddress == nil { + vObj.validationErrors = append(vObj.validationErrors, "RemoteIpv6NodeAddress is required field on interface BgpSrteSegmentJTypeSubTlv") } + if obj.obj.RemoteIpv6NodeAddress != nil { - if obj.obj.Decrement != nil { + err := obj.validateIpv6(obj.RemoteIpv6NodeAddress()) + if err != nil { + vObj.validationErrors = append(vObj.validationErrors, fmt.Sprintf("%s %s", err.Error(), "on BgpSrteSegmentJTypeSubTlv.RemoteIpv6NodeAddress")) + } - obj.Decrement().validateObj(vObj, set_default) } - if len(obj.obj.MetricTags) != 0 { + if obj.obj.Srv6Sid != nil { - if set_default { - obj.MetricTags().clearHolderSlice() - for _, item := range obj.obj.MetricTags { - obj.MetricTags().appendHolderSlice(&patternFlowIpv4TosReliabilityMetricTag{obj: item}) - } - } - for _, item := range obj.MetricTags().Items() { - item.validateObj(vObj, set_default) + err := obj.validateIpv6(obj.Srv6Sid()) + if err != nil { + vObj.validationErrors = append(vObj.validationErrors, fmt.Sprintf("%s %s", err.Error(), "on BgpSrteSegmentJTypeSubTlv.Srv6Sid")) } } -} + if obj.obj.Srv6SidEndpointBehavior != nil { -func (obj *patternFlowIpv4TosReliability) setDefault() { - if obj.obj.Choice == nil { - obj.SetChoice(PatternFlowIpv4TosReliabilityChoice.VALUE) + obj.Srv6SidEndpointBehavior().validateObj(vObj, set_default) + } + +} +func (obj *bgpSrteSegmentJTypeSubTlv) setDefault() { + if obj.obj.SrAlgorithm == nil { + obj.SetSrAlgorithm(0) + } + if obj.obj.LocalInterfaceId == nil { + obj.SetLocalInterfaceId(0) + } + if obj.obj.RemoteInterfaceId == nil { + obj.SetRemoteInterfaceId(0) } } -// ***** PatternFlowIpv4TosMonetary ***** -type patternFlowIpv4TosMonetary struct { +// ***** BgpSrteSegmentKTypeSubTlv ***** +type bgpSrteSegmentKTypeSubTlv struct { validation - obj *otg.PatternFlowIpv4TosMonetary - incrementHolder PatternFlowIpv4TosMonetaryCounter - decrementHolder PatternFlowIpv4TosMonetaryCounter - metricTagsHolder PatternFlowIpv4TosMonetaryPatternFlowIpv4TosMonetaryMetricTagIter + obj *otg.BgpSrteSegmentKTypeSubTlv + srv6SidEndpointBehaviorHolder BgpSrteSRv6SIDEndpointBehaviorAndStructure } -func NewPatternFlowIpv4TosMonetary() PatternFlowIpv4TosMonetary { - obj := patternFlowIpv4TosMonetary{obj: &otg.PatternFlowIpv4TosMonetary{}} +func NewBgpSrteSegmentKTypeSubTlv() BgpSrteSegmentKTypeSubTlv { + obj := bgpSrteSegmentKTypeSubTlv{obj: &otg.BgpSrteSegmentKTypeSubTlv{}} obj.setDefault() return &obj } -func (obj *patternFlowIpv4TosMonetary) Msg() *otg.PatternFlowIpv4TosMonetary { +func (obj *bgpSrteSegmentKTypeSubTlv) Msg() *otg.BgpSrteSegmentKTypeSubTlv { return obj.obj } -func (obj *patternFlowIpv4TosMonetary) SetMsg(msg *otg.PatternFlowIpv4TosMonetary) PatternFlowIpv4TosMonetary { +func (obj *bgpSrteSegmentKTypeSubTlv) SetMsg(msg *otg.BgpSrteSegmentKTypeSubTlv) BgpSrteSegmentKTypeSubTlv { obj.setNil() proto.Merge(obj.obj, msg) return obj } -func (obj *patternFlowIpv4TosMonetary) ToProto() (*otg.PatternFlowIpv4TosMonetary, error) { +func (obj *bgpSrteSegmentKTypeSubTlv) ToProto() (*otg.BgpSrteSegmentKTypeSubTlv, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -285268,7 +330091,7 @@ func (obj *patternFlowIpv4TosMonetary) ToProto() (*otg.PatternFlowIpv4TosMonetar return obj.Msg(), nil } -func (obj *patternFlowIpv4TosMonetary) FromProto(msg *otg.PatternFlowIpv4TosMonetary) (PatternFlowIpv4TosMonetary, error) { +func (obj *bgpSrteSegmentKTypeSubTlv) FromProto(msg *otg.BgpSrteSegmentKTypeSubTlv) (BgpSrteSegmentKTypeSubTlv, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -285277,7 +330100,7 @@ func (obj *patternFlowIpv4TosMonetary) FromProto(msg *otg.PatternFlowIpv4TosMone return newObj, nil } -func (obj *patternFlowIpv4TosMonetary) ToPbText() (string, error) { +func (obj *bgpSrteSegmentKTypeSubTlv) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -285289,7 +330112,7 @@ func (obj *patternFlowIpv4TosMonetary) ToPbText() (string, error) { return string(protoMarshal), nil } -func (obj *patternFlowIpv4TosMonetary) FromPbText(value string) error { +func (obj *bgpSrteSegmentKTypeSubTlv) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj @@ -285302,7 +330125,7 @@ func (obj *patternFlowIpv4TosMonetary) FromPbText(value string) error { return retObj } -func (obj *patternFlowIpv4TosMonetary) ToYaml() (string, error) { +func (obj *bgpSrteSegmentKTypeSubTlv) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -285323,7 +330146,7 @@ func (obj *patternFlowIpv4TosMonetary) ToYaml() (string, error) { return string(data), nil } -func (obj *patternFlowIpv4TosMonetary) FromYaml(value string) error { +func (obj *bgpSrteSegmentKTypeSubTlv) FromYaml(value string) error { if value == "" { value = "{}" } @@ -285348,7 +330171,7 @@ func (obj *patternFlowIpv4TosMonetary) FromYaml(value string) error { return nil } -func (obj *patternFlowIpv4TosMonetary) ToJson() (string, error) { +func (obj *bgpSrteSegmentKTypeSubTlv) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -285366,7 +330189,7 @@ func (obj *patternFlowIpv4TosMonetary) ToJson() (string, error) { return string(data), nil } -func (obj *patternFlowIpv4TosMonetary) FromJson(value string) error { +func (obj *bgpSrteSegmentKTypeSubTlv) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -285387,19 +330210,19 @@ func (obj *patternFlowIpv4TosMonetary) FromJson(value string) error { return nil } -func (obj *patternFlowIpv4TosMonetary) validateToAndFrom() error { +func (obj *bgpSrteSegmentKTypeSubTlv) validateToAndFrom() error { // emptyVars() obj.validateObj(&obj.validation, true) return obj.validationResult() } -func (obj *patternFlowIpv4TosMonetary) Validate() error { +func (obj *bgpSrteSegmentKTypeSubTlv) Validate() error { // emptyVars() obj.validateObj(&obj.validation, false) return obj.validationResult() } -func (obj *patternFlowIpv4TosMonetary) String() string { +func (obj *bgpSrteSegmentKTypeSubTlv) String() string { str, err := obj.ToYaml() if err != nil { return err.Error() @@ -285407,12 +330230,12 @@ func (obj *patternFlowIpv4TosMonetary) String() string { return str } -func (obj *patternFlowIpv4TosMonetary) Clone() (PatternFlowIpv4TosMonetary, error) { +func (obj *bgpSrteSegmentKTypeSubTlv) Clone() (BgpSrteSegmentKTypeSubTlv, error) { vErr := obj.Validate() if vErr != nil { return nil, vErr } - newObj := NewPatternFlowIpv4TosMonetary() + newObj := NewBgpSrteSegmentKTypeSubTlv() data, err := proto.Marshal(obj.Msg()) if err != nil { return nil, err @@ -285424,426 +330247,297 @@ func (obj *patternFlowIpv4TosMonetary) Clone() (PatternFlowIpv4TosMonetary, erro return newObj, nil } -func (obj *patternFlowIpv4TosMonetary) setNil() { - obj.incrementHolder = nil - obj.decrementHolder = nil - obj.metricTagsHolder = nil +func (obj *bgpSrteSegmentKTypeSubTlv) setNil() { + obj.srv6SidEndpointBehaviorHolder = nil obj.validationErrors = nil obj.warnings = nil obj.constraints = make(map[string]map[string]Constraints) } -// PatternFlowIpv4TosMonetary is monetary -type PatternFlowIpv4TosMonetary interface { +// BgpSrteSegmentKTypeSubTlv is type K: IPv6 Local and Remote addresses for SRv6 with optional SID. +type BgpSrteSegmentKTypeSubTlv interface { Validation - // Msg marshals PatternFlowIpv4TosMonetary to protobuf object *otg.PatternFlowIpv4TosMonetary + // Msg marshals BgpSrteSegmentKTypeSubTlv to protobuf object *otg.BgpSrteSegmentKTypeSubTlv // and doesn't set defaults - Msg() *otg.PatternFlowIpv4TosMonetary - // SetMsg unmarshals PatternFlowIpv4TosMonetary from protobuf object *otg.PatternFlowIpv4TosMonetary + Msg() *otg.BgpSrteSegmentKTypeSubTlv + // SetMsg unmarshals BgpSrteSegmentKTypeSubTlv from protobuf object *otg.BgpSrteSegmentKTypeSubTlv // and doesn't set defaults - SetMsg(*otg.PatternFlowIpv4TosMonetary) PatternFlowIpv4TosMonetary - // ToProto marshals PatternFlowIpv4TosMonetary to protobuf object *otg.PatternFlowIpv4TosMonetary - ToProto() (*otg.PatternFlowIpv4TosMonetary, error) - // ToPbText marshals PatternFlowIpv4TosMonetary to protobuf text + SetMsg(*otg.BgpSrteSegmentKTypeSubTlv) BgpSrteSegmentKTypeSubTlv + // ToProto marshals BgpSrteSegmentKTypeSubTlv to protobuf object *otg.BgpSrteSegmentKTypeSubTlv + ToProto() (*otg.BgpSrteSegmentKTypeSubTlv, error) + // ToPbText marshals BgpSrteSegmentKTypeSubTlv to protobuf text ToPbText() (string, error) - // ToYaml marshals PatternFlowIpv4TosMonetary to YAML text + // ToYaml marshals BgpSrteSegmentKTypeSubTlv to YAML text ToYaml() (string, error) - // ToJson marshals PatternFlowIpv4TosMonetary to JSON text + // ToJson marshals BgpSrteSegmentKTypeSubTlv to JSON text ToJson() (string, error) - // FromProto unmarshals PatternFlowIpv4TosMonetary from protobuf object *otg.PatternFlowIpv4TosMonetary - FromProto(msg *otg.PatternFlowIpv4TosMonetary) (PatternFlowIpv4TosMonetary, error) - // FromPbText unmarshals PatternFlowIpv4TosMonetary from protobuf text + // FromProto unmarshals BgpSrteSegmentKTypeSubTlv from protobuf object *otg.BgpSrteSegmentKTypeSubTlv + FromProto(msg *otg.BgpSrteSegmentKTypeSubTlv) (BgpSrteSegmentKTypeSubTlv, error) + // FromPbText unmarshals BgpSrteSegmentKTypeSubTlv from protobuf text FromPbText(value string) error - // FromYaml unmarshals PatternFlowIpv4TosMonetary from YAML text + // FromYaml unmarshals BgpSrteSegmentKTypeSubTlv from YAML text FromYaml(value string) error - // FromJson unmarshals PatternFlowIpv4TosMonetary from JSON text + // FromJson unmarshals BgpSrteSegmentKTypeSubTlv from JSON text FromJson(value string) error - // Validate validates PatternFlowIpv4TosMonetary + // Validate validates BgpSrteSegmentKTypeSubTlv Validate() error // A stringer function String() string // Clones the object - Clone() (PatternFlowIpv4TosMonetary, error) + Clone() (BgpSrteSegmentKTypeSubTlv, error) validateToAndFrom() error validateObj(vObj *validation, set_default bool) setDefault() - // Choice returns PatternFlowIpv4TosMonetaryChoiceEnum, set in PatternFlowIpv4TosMonetary - Choice() PatternFlowIpv4TosMonetaryChoiceEnum - // SetChoice assigns PatternFlowIpv4TosMonetaryChoiceEnum provided by user to PatternFlowIpv4TosMonetary - SetChoice(value PatternFlowIpv4TosMonetaryChoiceEnum) PatternFlowIpv4TosMonetary - // HasChoice checks if Choice has been set in PatternFlowIpv4TosMonetary - HasChoice() bool - // Value returns uint32, set in PatternFlowIpv4TosMonetary. - Value() uint32 - // SetValue assigns uint32 provided by user to PatternFlowIpv4TosMonetary - SetValue(value uint32) PatternFlowIpv4TosMonetary - // HasValue checks if Value has been set in PatternFlowIpv4TosMonetary - HasValue() bool - // Values returns []uint32, set in PatternFlowIpv4TosMonetary. - Values() []uint32 - // SetValues assigns []uint32 provided by user to PatternFlowIpv4TosMonetary - SetValues(value []uint32) PatternFlowIpv4TosMonetary - // Increment returns PatternFlowIpv4TosMonetaryCounter, set in PatternFlowIpv4TosMonetary. - // PatternFlowIpv4TosMonetaryCounter is integer counter pattern - Increment() PatternFlowIpv4TosMonetaryCounter - // SetIncrement assigns PatternFlowIpv4TosMonetaryCounter provided by user to PatternFlowIpv4TosMonetary. - // PatternFlowIpv4TosMonetaryCounter is integer counter pattern - SetIncrement(value PatternFlowIpv4TosMonetaryCounter) PatternFlowIpv4TosMonetary - // HasIncrement checks if Increment has been set in PatternFlowIpv4TosMonetary - HasIncrement() bool - // Decrement returns PatternFlowIpv4TosMonetaryCounter, set in PatternFlowIpv4TosMonetary. - // PatternFlowIpv4TosMonetaryCounter is integer counter pattern - Decrement() PatternFlowIpv4TosMonetaryCounter - // SetDecrement assigns PatternFlowIpv4TosMonetaryCounter provided by user to PatternFlowIpv4TosMonetary. - // PatternFlowIpv4TosMonetaryCounter is integer counter pattern - SetDecrement(value PatternFlowIpv4TosMonetaryCounter) PatternFlowIpv4TosMonetary - // HasDecrement checks if Decrement has been set in PatternFlowIpv4TosMonetary - HasDecrement() bool - // MetricTags returns PatternFlowIpv4TosMonetaryPatternFlowIpv4TosMonetaryMetricTagIterIter, set in PatternFlowIpv4TosMonetary - MetricTags() PatternFlowIpv4TosMonetaryPatternFlowIpv4TosMonetaryMetricTagIter + // Flags returns string, set in BgpSrteSegmentKTypeSubTlv. + Flags() string + // SetFlags assigns string provided by user to BgpSrteSegmentKTypeSubTlv + SetFlags(value string) BgpSrteSegmentKTypeSubTlv + // HasFlags checks if Flags has been set in BgpSrteSegmentKTypeSubTlv + HasFlags() bool + // SrAlgorithm returns uint32, set in BgpSrteSegmentKTypeSubTlv. + SrAlgorithm() uint32 + // SetSrAlgorithm assigns uint32 provided by user to BgpSrteSegmentKTypeSubTlv + SetSrAlgorithm(value uint32) BgpSrteSegmentKTypeSubTlv + // HasSrAlgorithm checks if SrAlgorithm has been set in BgpSrteSegmentKTypeSubTlv + HasSrAlgorithm() bool + // LocalIpv6Address returns string, set in BgpSrteSegmentKTypeSubTlv. + LocalIpv6Address() string + // SetLocalIpv6Address assigns string provided by user to BgpSrteSegmentKTypeSubTlv + SetLocalIpv6Address(value string) BgpSrteSegmentKTypeSubTlv + // RemoteIpv6Address returns string, set in BgpSrteSegmentKTypeSubTlv. + RemoteIpv6Address() string + // SetRemoteIpv6Address assigns string provided by user to BgpSrteSegmentKTypeSubTlv + SetRemoteIpv6Address(value string) BgpSrteSegmentKTypeSubTlv + // Srv6Sid returns string, set in BgpSrteSegmentKTypeSubTlv. + Srv6Sid() string + // SetSrv6Sid assigns string provided by user to BgpSrteSegmentKTypeSubTlv + SetSrv6Sid(value string) BgpSrteSegmentKTypeSubTlv + // HasSrv6Sid checks if Srv6Sid has been set in BgpSrteSegmentKTypeSubTlv + HasSrv6Sid() bool + // Srv6SidEndpointBehavior returns BgpSrteSRv6SIDEndpointBehaviorAndStructure, set in BgpSrteSegmentKTypeSubTlv. + // BgpSrteSRv6SIDEndpointBehaviorAndStructure is configuration for SRv6 Endpoint Behavior and SID Structure. Its optional. Summation of lengths for Locator Block, Locator Node, Function, and Argument MUST be less than or equal to 128. + Srv6SidEndpointBehavior() BgpSrteSRv6SIDEndpointBehaviorAndStructure + // SetSrv6SidEndpointBehavior assigns BgpSrteSRv6SIDEndpointBehaviorAndStructure provided by user to BgpSrteSegmentKTypeSubTlv. + // BgpSrteSRv6SIDEndpointBehaviorAndStructure is configuration for SRv6 Endpoint Behavior and SID Structure. Its optional. Summation of lengths for Locator Block, Locator Node, Function, and Argument MUST be less than or equal to 128. + SetSrv6SidEndpointBehavior(value BgpSrteSRv6SIDEndpointBehaviorAndStructure) BgpSrteSegmentKTypeSubTlv + // HasSrv6SidEndpointBehavior checks if Srv6SidEndpointBehavior has been set in BgpSrteSegmentKTypeSubTlv + HasSrv6SidEndpointBehavior() bool setNil() } -type PatternFlowIpv4TosMonetaryChoiceEnum string +// One octet bitmap for flags including V-Flag, A-Flag, S-Flag, B-Flag etc. as defined in https://datatracker.ietf.org/doc/html/draft-ietf-idr-segment-routing-te-policy-13#section-2.4.4.2.12 +// Flags returns a string +func (obj *bgpSrteSegmentKTypeSubTlv) Flags() string { -// Enum of Choice on PatternFlowIpv4TosMonetary -var PatternFlowIpv4TosMonetaryChoice = struct { - VALUE PatternFlowIpv4TosMonetaryChoiceEnum - VALUES PatternFlowIpv4TosMonetaryChoiceEnum - INCREMENT PatternFlowIpv4TosMonetaryChoiceEnum - DECREMENT PatternFlowIpv4TosMonetaryChoiceEnum -}{ - VALUE: PatternFlowIpv4TosMonetaryChoiceEnum("value"), - VALUES: PatternFlowIpv4TosMonetaryChoiceEnum("values"), - INCREMENT: PatternFlowIpv4TosMonetaryChoiceEnum("increment"), - DECREMENT: PatternFlowIpv4TosMonetaryChoiceEnum("decrement"), -} + return *obj.obj.Flags -func (obj *patternFlowIpv4TosMonetary) Choice() PatternFlowIpv4TosMonetaryChoiceEnum { - return PatternFlowIpv4TosMonetaryChoiceEnum(obj.obj.Choice.Enum().String()) } -// description is TBD -// Choice returns a string -func (obj *patternFlowIpv4TosMonetary) HasChoice() bool { - return obj.obj.Choice != nil +// One octet bitmap for flags including V-Flag, A-Flag, S-Flag, B-Flag etc. as defined in https://datatracker.ietf.org/doc/html/draft-ietf-idr-segment-routing-te-policy-13#section-2.4.4.2.12 +// Flags returns a string +func (obj *bgpSrteSegmentKTypeSubTlv) HasFlags() bool { + return obj.obj.Flags != nil } -func (obj *patternFlowIpv4TosMonetary) SetChoice(value PatternFlowIpv4TosMonetaryChoiceEnum) PatternFlowIpv4TosMonetary { - intValue, ok := otg.PatternFlowIpv4TosMonetary_Choice_Enum_value[string(value)] - if !ok { - obj.validationErrors = append(obj.validationErrors, fmt.Sprintf( - "%s is not a valid choice on PatternFlowIpv4TosMonetaryChoiceEnum", string(value))) - return obj - } - enumValue := otg.PatternFlowIpv4TosMonetary_Choice_Enum(intValue) - obj.obj.Choice = &enumValue - obj.obj.Decrement = nil - obj.decrementHolder = nil - obj.obj.Increment = nil - obj.incrementHolder = nil - obj.obj.Values = nil - obj.obj.Value = nil - - if value == PatternFlowIpv4TosMonetaryChoice.VALUE { - defaultValue := uint32(0) - obj.obj.Value = &defaultValue - } - - if value == PatternFlowIpv4TosMonetaryChoice.VALUES { - defaultValue := []uint32{0} - obj.obj.Values = defaultValue - } - - if value == PatternFlowIpv4TosMonetaryChoice.INCREMENT { - obj.obj.Increment = NewPatternFlowIpv4TosMonetaryCounter().Msg() - } - - if value == PatternFlowIpv4TosMonetaryChoice.DECREMENT { - obj.obj.Decrement = NewPatternFlowIpv4TosMonetaryCounter().Msg() - } +// One octet bitmap for flags including V-Flag, A-Flag, S-Flag, B-Flag etc. as defined in https://datatracker.ietf.org/doc/html/draft-ietf-idr-segment-routing-te-policy-13#section-2.4.4.2.12 +// SetFlags sets the string value in the BgpSrteSegmentKTypeSubTlv object +func (obj *bgpSrteSegmentKTypeSubTlv) SetFlags(value string) BgpSrteSegmentKTypeSubTlv { + obj.obj.Flags = &value return obj } -// description is TBD -// Value returns a uint32 -func (obj *patternFlowIpv4TosMonetary) Value() uint32 { - - if obj.obj.Value == nil { - obj.SetChoice(PatternFlowIpv4TosMonetaryChoice.VALUE) - } - - return *obj.obj.Value - -} +// SR Algorithm identifier when A-Flag in on. +// SrAlgorithm returns a uint32 +func (obj *bgpSrteSegmentKTypeSubTlv) SrAlgorithm() uint32 { -// description is TBD -// Value returns a uint32 -func (obj *patternFlowIpv4TosMonetary) HasValue() bool { - return obj.obj.Value != nil -} + return *obj.obj.SrAlgorithm -// description is TBD -// SetValue sets the uint32 value in the PatternFlowIpv4TosMonetary object -func (obj *patternFlowIpv4TosMonetary) SetValue(value uint32) PatternFlowIpv4TosMonetary { - obj.SetChoice(PatternFlowIpv4TosMonetaryChoice.VALUE) - obj.obj.Value = &value - return obj } -// description is TBD -// Values returns a []uint32 -func (obj *patternFlowIpv4TosMonetary) Values() []uint32 { - if obj.obj.Values == nil { - obj.SetValues([]uint32{0}) - } - return obj.obj.Values +// SR Algorithm identifier when A-Flag in on. +// SrAlgorithm returns a uint32 +func (obj *bgpSrteSegmentKTypeSubTlv) HasSrAlgorithm() bool { + return obj.obj.SrAlgorithm != nil } -// description is TBD -// SetValues sets the []uint32 value in the PatternFlowIpv4TosMonetary object -func (obj *patternFlowIpv4TosMonetary) SetValues(value []uint32) PatternFlowIpv4TosMonetary { - obj.SetChoice(PatternFlowIpv4TosMonetaryChoice.VALUES) - if obj.obj.Values == nil { - obj.obj.Values = make([]uint32, 0) - } - obj.obj.Values = value +// SR Algorithm identifier when A-Flag in on. +// SetSrAlgorithm sets the uint32 value in the BgpSrteSegmentKTypeSubTlv object +func (obj *bgpSrteSegmentKTypeSubTlv) SetSrAlgorithm(value uint32) BgpSrteSegmentKTypeSubTlv { + obj.obj.SrAlgorithm = &value return obj } -// description is TBD -// Increment returns a PatternFlowIpv4TosMonetaryCounter -func (obj *patternFlowIpv4TosMonetary) Increment() PatternFlowIpv4TosMonetaryCounter { - if obj.obj.Increment == nil { - obj.SetChoice(PatternFlowIpv4TosMonetaryChoice.INCREMENT) - } - if obj.incrementHolder == nil { - obj.incrementHolder = &patternFlowIpv4TosMonetaryCounter{obj: obj.obj.Increment} - } - return obj.incrementHolder -} +// IPv6 address representing a node. +// LocalIpv6Address returns a string +func (obj *bgpSrteSegmentKTypeSubTlv) LocalIpv6Address() string { + + return *obj.obj.LocalIpv6Address -// description is TBD -// Increment returns a PatternFlowIpv4TosMonetaryCounter -func (obj *patternFlowIpv4TosMonetary) HasIncrement() bool { - return obj.obj.Increment != nil } -// description is TBD -// SetIncrement sets the PatternFlowIpv4TosMonetaryCounter value in the PatternFlowIpv4TosMonetary object -func (obj *patternFlowIpv4TosMonetary) SetIncrement(value PatternFlowIpv4TosMonetaryCounter) PatternFlowIpv4TosMonetary { - obj.SetChoice(PatternFlowIpv4TosMonetaryChoice.INCREMENT) - obj.incrementHolder = nil - obj.obj.Increment = value.Msg() +// IPv6 address representing a node. +// SetLocalIpv6Address sets the string value in the BgpSrteSegmentKTypeSubTlv object +func (obj *bgpSrteSegmentKTypeSubTlv) SetLocalIpv6Address(value string) BgpSrteSegmentKTypeSubTlv { + obj.obj.LocalIpv6Address = &value return obj } -// description is TBD -// Decrement returns a PatternFlowIpv4TosMonetaryCounter -func (obj *patternFlowIpv4TosMonetary) Decrement() PatternFlowIpv4TosMonetaryCounter { - if obj.obj.Decrement == nil { - obj.SetChoice(PatternFlowIpv4TosMonetaryChoice.DECREMENT) - } - if obj.decrementHolder == nil { - obj.decrementHolder = &patternFlowIpv4TosMonetaryCounter{obj: obj.obj.Decrement} - } - return obj.decrementHolder -} +// IPv6 address representing a node. +// RemoteIpv6Address returns a string +func (obj *bgpSrteSegmentKTypeSubTlv) RemoteIpv6Address() string { + + return *obj.obj.RemoteIpv6Address -// description is TBD -// Decrement returns a PatternFlowIpv4TosMonetaryCounter -func (obj *patternFlowIpv4TosMonetary) HasDecrement() bool { - return obj.obj.Decrement != nil } -// description is TBD -// SetDecrement sets the PatternFlowIpv4TosMonetaryCounter value in the PatternFlowIpv4TosMonetary object -func (obj *patternFlowIpv4TosMonetary) SetDecrement(value PatternFlowIpv4TosMonetaryCounter) PatternFlowIpv4TosMonetary { - obj.SetChoice(PatternFlowIpv4TosMonetaryChoice.DECREMENT) - obj.decrementHolder = nil - obj.obj.Decrement = value.Msg() +// IPv6 address representing a node. +// SetRemoteIpv6Address sets the string value in the BgpSrteSegmentKTypeSubTlv object +func (obj *bgpSrteSegmentKTypeSubTlv) SetRemoteIpv6Address(value string) BgpSrteSegmentKTypeSubTlv { + obj.obj.RemoteIpv6Address = &value return obj } -// One or more metric tags can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. -// MetricTags returns a []PatternFlowIpv4TosMonetaryMetricTag -func (obj *patternFlowIpv4TosMonetary) MetricTags() PatternFlowIpv4TosMonetaryPatternFlowIpv4TosMonetaryMetricTagIter { - if len(obj.obj.MetricTags) == 0 { - obj.obj.MetricTags = []*otg.PatternFlowIpv4TosMonetaryMetricTag{} - } - if obj.metricTagsHolder == nil { - obj.metricTagsHolder = newPatternFlowIpv4TosMonetaryPatternFlowIpv4TosMonetaryMetricTagIter(&obj.obj.MetricTags).setMsg(obj) - } - return obj.metricTagsHolder -} +// Optional SRv6 SID. +// Srv6Sid returns a string +func (obj *bgpSrteSegmentKTypeSubTlv) Srv6Sid() string { -type patternFlowIpv4TosMonetaryPatternFlowIpv4TosMonetaryMetricTagIter struct { - obj *patternFlowIpv4TosMonetary - patternFlowIpv4TosMonetaryMetricTagSlice []PatternFlowIpv4TosMonetaryMetricTag - fieldPtr *[]*otg.PatternFlowIpv4TosMonetaryMetricTag -} + return *obj.obj.Srv6Sid -func newPatternFlowIpv4TosMonetaryPatternFlowIpv4TosMonetaryMetricTagIter(ptr *[]*otg.PatternFlowIpv4TosMonetaryMetricTag) PatternFlowIpv4TosMonetaryPatternFlowIpv4TosMonetaryMetricTagIter { - return &patternFlowIpv4TosMonetaryPatternFlowIpv4TosMonetaryMetricTagIter{fieldPtr: ptr} } -type PatternFlowIpv4TosMonetaryPatternFlowIpv4TosMonetaryMetricTagIter interface { - setMsg(*patternFlowIpv4TosMonetary) PatternFlowIpv4TosMonetaryPatternFlowIpv4TosMonetaryMetricTagIter - Items() []PatternFlowIpv4TosMonetaryMetricTag - Add() PatternFlowIpv4TosMonetaryMetricTag - Append(items ...PatternFlowIpv4TosMonetaryMetricTag) PatternFlowIpv4TosMonetaryPatternFlowIpv4TosMonetaryMetricTagIter - Set(index int, newObj PatternFlowIpv4TosMonetaryMetricTag) PatternFlowIpv4TosMonetaryPatternFlowIpv4TosMonetaryMetricTagIter - Clear() PatternFlowIpv4TosMonetaryPatternFlowIpv4TosMonetaryMetricTagIter - clearHolderSlice() PatternFlowIpv4TosMonetaryPatternFlowIpv4TosMonetaryMetricTagIter - appendHolderSlice(item PatternFlowIpv4TosMonetaryMetricTag) PatternFlowIpv4TosMonetaryPatternFlowIpv4TosMonetaryMetricTagIter +// Optional SRv6 SID. +// Srv6Sid returns a string +func (obj *bgpSrteSegmentKTypeSubTlv) HasSrv6Sid() bool { + return obj.obj.Srv6Sid != nil } -func (obj *patternFlowIpv4TosMonetaryPatternFlowIpv4TosMonetaryMetricTagIter) setMsg(msg *patternFlowIpv4TosMonetary) PatternFlowIpv4TosMonetaryPatternFlowIpv4TosMonetaryMetricTagIter { - obj.clearHolderSlice() - for _, val := range *obj.fieldPtr { - obj.appendHolderSlice(&patternFlowIpv4TosMonetaryMetricTag{obj: val}) - } - obj.obj = msg +// Optional SRv6 SID. +// SetSrv6Sid sets the string value in the BgpSrteSegmentKTypeSubTlv object +func (obj *bgpSrteSegmentKTypeSubTlv) SetSrv6Sid(value string) BgpSrteSegmentKTypeSubTlv { + + obj.obj.Srv6Sid = &value return obj } -func (obj *patternFlowIpv4TosMonetaryPatternFlowIpv4TosMonetaryMetricTagIter) Items() []PatternFlowIpv4TosMonetaryMetricTag { - return obj.patternFlowIpv4TosMonetaryMetricTagSlice +// Optional SRv6 Endpoint Behavior and SID Structure. +// Srv6SidEndpointBehavior returns a BgpSrteSRv6SIDEndpointBehaviorAndStructure +func (obj *bgpSrteSegmentKTypeSubTlv) Srv6SidEndpointBehavior() BgpSrteSRv6SIDEndpointBehaviorAndStructure { + if obj.obj.Srv6SidEndpointBehavior == nil { + obj.obj.Srv6SidEndpointBehavior = NewBgpSrteSRv6SIDEndpointBehaviorAndStructure().Msg() + } + if obj.srv6SidEndpointBehaviorHolder == nil { + obj.srv6SidEndpointBehaviorHolder = &bgpSrteSRv6SIDEndpointBehaviorAndStructure{obj: obj.obj.Srv6SidEndpointBehavior} + } + return obj.srv6SidEndpointBehaviorHolder } -func (obj *patternFlowIpv4TosMonetaryPatternFlowIpv4TosMonetaryMetricTagIter) Add() PatternFlowIpv4TosMonetaryMetricTag { - newObj := &otg.PatternFlowIpv4TosMonetaryMetricTag{} - *obj.fieldPtr = append(*obj.fieldPtr, newObj) - newLibObj := &patternFlowIpv4TosMonetaryMetricTag{obj: newObj} - newLibObj.setDefault() - obj.patternFlowIpv4TosMonetaryMetricTagSlice = append(obj.patternFlowIpv4TosMonetaryMetricTagSlice, newLibObj) - return newLibObj +// Optional SRv6 Endpoint Behavior and SID Structure. +// Srv6SidEndpointBehavior returns a BgpSrteSRv6SIDEndpointBehaviorAndStructure +func (obj *bgpSrteSegmentKTypeSubTlv) HasSrv6SidEndpointBehavior() bool { + return obj.obj.Srv6SidEndpointBehavior != nil } -func (obj *patternFlowIpv4TosMonetaryPatternFlowIpv4TosMonetaryMetricTagIter) Append(items ...PatternFlowIpv4TosMonetaryMetricTag) PatternFlowIpv4TosMonetaryPatternFlowIpv4TosMonetaryMetricTagIter { - for _, item := range items { - newObj := item.Msg() - *obj.fieldPtr = append(*obj.fieldPtr, newObj) - obj.patternFlowIpv4TosMonetaryMetricTagSlice = append(obj.patternFlowIpv4TosMonetaryMetricTagSlice, item) - } - return obj -} +// Optional SRv6 Endpoint Behavior and SID Structure. +// SetSrv6SidEndpointBehavior sets the BgpSrteSRv6SIDEndpointBehaviorAndStructure value in the BgpSrteSegmentKTypeSubTlv object +func (obj *bgpSrteSegmentKTypeSubTlv) SetSrv6SidEndpointBehavior(value BgpSrteSRv6SIDEndpointBehaviorAndStructure) BgpSrteSegmentKTypeSubTlv { + + obj.srv6SidEndpointBehaviorHolder = nil + obj.obj.Srv6SidEndpointBehavior = value.Msg() -func (obj *patternFlowIpv4TosMonetaryPatternFlowIpv4TosMonetaryMetricTagIter) Set(index int, newObj PatternFlowIpv4TosMonetaryMetricTag) PatternFlowIpv4TosMonetaryPatternFlowIpv4TosMonetaryMetricTagIter { - (*obj.fieldPtr)[index] = newObj.Msg() - obj.patternFlowIpv4TosMonetaryMetricTagSlice[index] = newObj - return obj -} -func (obj *patternFlowIpv4TosMonetaryPatternFlowIpv4TosMonetaryMetricTagIter) Clear() PatternFlowIpv4TosMonetaryPatternFlowIpv4TosMonetaryMetricTagIter { - if len(*obj.fieldPtr) > 0 { - *obj.fieldPtr = []*otg.PatternFlowIpv4TosMonetaryMetricTag{} - obj.patternFlowIpv4TosMonetaryMetricTagSlice = []PatternFlowIpv4TosMonetaryMetricTag{} - } - return obj -} -func (obj *patternFlowIpv4TosMonetaryPatternFlowIpv4TosMonetaryMetricTagIter) clearHolderSlice() PatternFlowIpv4TosMonetaryPatternFlowIpv4TosMonetaryMetricTagIter { - if len(obj.patternFlowIpv4TosMonetaryMetricTagSlice) > 0 { - obj.patternFlowIpv4TosMonetaryMetricTagSlice = []PatternFlowIpv4TosMonetaryMetricTag{} - } - return obj -} -func (obj *patternFlowIpv4TosMonetaryPatternFlowIpv4TosMonetaryMetricTagIter) appendHolderSlice(item PatternFlowIpv4TosMonetaryMetricTag) PatternFlowIpv4TosMonetaryPatternFlowIpv4TosMonetaryMetricTagIter { - obj.patternFlowIpv4TosMonetaryMetricTagSlice = append(obj.patternFlowIpv4TosMonetaryMetricTagSlice, item) return obj } -func (obj *patternFlowIpv4TosMonetary) validateObj(vObj *validation, set_default bool) { +func (obj *bgpSrteSegmentKTypeSubTlv) validateObj(vObj *validation, set_default bool) { if set_default { obj.setDefault() } - if obj.obj.Value != nil { + if obj.obj.Flags != nil { - if *obj.obj.Value > 1 { - vObj.validationErrors = append( - vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowIpv4TosMonetary.Value <= 1 but Got %d", *obj.obj.Value)) + err := obj.validateHex(obj.Flags()) + if err != nil { + vObj.validationErrors = append(vObj.validationErrors, fmt.Sprintf("%s %s", err.Error(), "on BgpSrteSegmentKTypeSubTlv.Flags")) } } - if obj.obj.Values != nil { - - for _, item := range obj.obj.Values { - if item > 1 { - vObj.validationErrors = append( - vObj.validationErrors, - fmt.Sprintf("min(uint32) <= PatternFlowIpv4TosMonetary.Values <= 1 but Got %d", item)) - } + // LocalIpv6Address is required + if obj.obj.LocalIpv6Address == nil { + vObj.validationErrors = append(vObj.validationErrors, "LocalIpv6Address is required field on interface BgpSrteSegmentKTypeSubTlv") + } + if obj.obj.LocalIpv6Address != nil { + err := obj.validateIpv6(obj.LocalIpv6Address()) + if err != nil { + vObj.validationErrors = append(vObj.validationErrors, fmt.Sprintf("%s %s", err.Error(), "on BgpSrteSegmentKTypeSubTlv.LocalIpv6Address")) } } - if obj.obj.Increment != nil { - - obj.Increment().validateObj(vObj, set_default) + // RemoteIpv6Address is required + if obj.obj.RemoteIpv6Address == nil { + vObj.validationErrors = append(vObj.validationErrors, "RemoteIpv6Address is required field on interface BgpSrteSegmentKTypeSubTlv") } + if obj.obj.RemoteIpv6Address != nil { - if obj.obj.Decrement != nil { + err := obj.validateIpv6(obj.RemoteIpv6Address()) + if err != nil { + vObj.validationErrors = append(vObj.validationErrors, fmt.Sprintf("%s %s", err.Error(), "on BgpSrteSegmentKTypeSubTlv.RemoteIpv6Address")) + } - obj.Decrement().validateObj(vObj, set_default) } - if len(obj.obj.MetricTags) != 0 { + if obj.obj.Srv6Sid != nil { - if set_default { - obj.MetricTags().clearHolderSlice() - for _, item := range obj.obj.MetricTags { - obj.MetricTags().appendHolderSlice(&patternFlowIpv4TosMonetaryMetricTag{obj: item}) - } - } - for _, item := range obj.MetricTags().Items() { - item.validateObj(vObj, set_default) + err := obj.validateIpv6(obj.Srv6Sid()) + if err != nil { + vObj.validationErrors = append(vObj.validationErrors, fmt.Sprintf("%s %s", err.Error(), "on BgpSrteSegmentKTypeSubTlv.Srv6Sid")) } } -} + if obj.obj.Srv6SidEndpointBehavior != nil { -func (obj *patternFlowIpv4TosMonetary) setDefault() { - if obj.obj.Choice == nil { - obj.SetChoice(PatternFlowIpv4TosMonetaryChoice.VALUE) + obj.Srv6SidEndpointBehavior().validateObj(vObj, set_default) + } + +} +func (obj *bgpSrteSegmentKTypeSubTlv) setDefault() { + if obj.obj.SrAlgorithm == nil { + obj.SetSrAlgorithm(0) } } -// ***** PatternFlowIpv4TosUnused ***** -type patternFlowIpv4TosUnused struct { +// ***** FlowRSVPPathObjectsSessionCType ***** +type flowRSVPPathObjectsSessionCType struct { validation - obj *otg.PatternFlowIpv4TosUnused - incrementHolder PatternFlowIpv4TosUnusedCounter - decrementHolder PatternFlowIpv4TosUnusedCounter - metricTagsHolder PatternFlowIpv4TosUnusedPatternFlowIpv4TosUnusedMetricTagIter + obj *otg.FlowRSVPPathObjectsSessionCType + lspTunnelIpv4Holder FlowRSVPPathSessionLspTunnelIpv4 } -func NewPatternFlowIpv4TosUnused() PatternFlowIpv4TosUnused { - obj := patternFlowIpv4TosUnused{obj: &otg.PatternFlowIpv4TosUnused{}} +func NewFlowRSVPPathObjectsSessionCType() FlowRSVPPathObjectsSessionCType { + obj := flowRSVPPathObjectsSessionCType{obj: &otg.FlowRSVPPathObjectsSessionCType{}} obj.setDefault() return &obj } -func (obj *patternFlowIpv4TosUnused) Msg() *otg.PatternFlowIpv4TosUnused { +func (obj *flowRSVPPathObjectsSessionCType) Msg() *otg.FlowRSVPPathObjectsSessionCType { return obj.obj } -func (obj *patternFlowIpv4TosUnused) SetMsg(msg *otg.PatternFlowIpv4TosUnused) PatternFlowIpv4TosUnused { +func (obj *flowRSVPPathObjectsSessionCType) SetMsg(msg *otg.FlowRSVPPathObjectsSessionCType) FlowRSVPPathObjectsSessionCType { obj.setNil() proto.Merge(obj.obj, msg) return obj } -func (obj *patternFlowIpv4TosUnused) ToProto() (*otg.PatternFlowIpv4TosUnused, error) { +func (obj *flowRSVPPathObjectsSessionCType) ToProto() (*otg.FlowRSVPPathObjectsSessionCType, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -285851,7 +330545,7 @@ func (obj *patternFlowIpv4TosUnused) ToProto() (*otg.PatternFlowIpv4TosUnused, e return obj.Msg(), nil } -func (obj *patternFlowIpv4TosUnused) FromProto(msg *otg.PatternFlowIpv4TosUnused) (PatternFlowIpv4TosUnused, error) { +func (obj *flowRSVPPathObjectsSessionCType) FromProto(msg *otg.FlowRSVPPathObjectsSessionCType) (FlowRSVPPathObjectsSessionCType, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -285860,7 +330554,7 @@ func (obj *patternFlowIpv4TosUnused) FromProto(msg *otg.PatternFlowIpv4TosUnused return newObj, nil } -func (obj *patternFlowIpv4TosUnused) ToPbText() (string, error) { +func (obj *flowRSVPPathObjectsSessionCType) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -285872,7 +330566,7 @@ func (obj *patternFlowIpv4TosUnused) ToPbText() (string, error) { return string(protoMarshal), nil } -func (obj *patternFlowIpv4TosUnused) FromPbText(value string) error { +func (obj *flowRSVPPathObjectsSessionCType) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj @@ -285885,7 +330579,7 @@ func (obj *patternFlowIpv4TosUnused) FromPbText(value string) error { return retObj } -func (obj *patternFlowIpv4TosUnused) ToYaml() (string, error) { +func (obj *flowRSVPPathObjectsSessionCType) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -285906,7 +330600,7 @@ func (obj *patternFlowIpv4TosUnused) ToYaml() (string, error) { return string(data), nil } -func (obj *patternFlowIpv4TosUnused) FromYaml(value string) error { +func (obj *flowRSVPPathObjectsSessionCType) FromYaml(value string) error { if value == "" { value = "{}" } @@ -285931,7 +330625,7 @@ func (obj *patternFlowIpv4TosUnused) FromYaml(value string) error { return nil } -func (obj *patternFlowIpv4TosUnused) ToJson() (string, error) { +func (obj *flowRSVPPathObjectsSessionCType) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -285949,7 +330643,7 @@ func (obj *patternFlowIpv4TosUnused) ToJson() (string, error) { return string(data), nil } -func (obj *patternFlowIpv4TosUnused) FromJson(value string) error { +func (obj *flowRSVPPathObjectsSessionCType) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -285970,19 +330664,19 @@ func (obj *patternFlowIpv4TosUnused) FromJson(value string) error { return nil } -func (obj *patternFlowIpv4TosUnused) validateToAndFrom() error { +func (obj *flowRSVPPathObjectsSessionCType) validateToAndFrom() error { // emptyVars() obj.validateObj(&obj.validation, true) return obj.validationResult() } -func (obj *patternFlowIpv4TosUnused) Validate() error { +func (obj *flowRSVPPathObjectsSessionCType) Validate() error { // emptyVars() obj.validateObj(&obj.validation, false) return obj.validationResult() } -func (obj *patternFlowIpv4TosUnused) String() string { +func (obj *flowRSVPPathObjectsSessionCType) String() string { str, err := obj.ToYaml() if err != nil { return err.Error() @@ -285990,12 +330684,12 @@ func (obj *patternFlowIpv4TosUnused) String() string { return str } -func (obj *patternFlowIpv4TosUnused) Clone() (PatternFlowIpv4TosUnused, error) { +func (obj *flowRSVPPathObjectsSessionCType) Clone() (FlowRSVPPathObjectsSessionCType, error) { vErr := obj.Validate() if vErr != nil { return nil, vErr } - newObj := NewPatternFlowIpv4TosUnused() + newObj := NewFlowRSVPPathObjectsSessionCType() data, err := proto.Marshal(obj.Msg()) if err != nil { return nil, err @@ -286007,426 +330701,174 @@ func (obj *patternFlowIpv4TosUnused) Clone() (PatternFlowIpv4TosUnused, error) { return newObj, nil } -func (obj *patternFlowIpv4TosUnused) setNil() { - obj.incrementHolder = nil - obj.decrementHolder = nil - obj.metricTagsHolder = nil +func (obj *flowRSVPPathObjectsSessionCType) setNil() { + obj.lspTunnelIpv4Holder = nil obj.validationErrors = nil obj.warnings = nil obj.constraints = make(map[string]map[string]Constraints) } -// PatternFlowIpv4TosUnused is unused -type PatternFlowIpv4TosUnused interface { +// FlowRSVPPathObjectsSessionCType is the body of an object corresponding to the class number and c-type. Currently supported c-type for SESSION object is LSP Tunnel IPv4 (7). +type FlowRSVPPathObjectsSessionCType interface { Validation - // Msg marshals PatternFlowIpv4TosUnused to protobuf object *otg.PatternFlowIpv4TosUnused + // Msg marshals FlowRSVPPathObjectsSessionCType to protobuf object *otg.FlowRSVPPathObjectsSessionCType // and doesn't set defaults - Msg() *otg.PatternFlowIpv4TosUnused - // SetMsg unmarshals PatternFlowIpv4TosUnused from protobuf object *otg.PatternFlowIpv4TosUnused + Msg() *otg.FlowRSVPPathObjectsSessionCType + // SetMsg unmarshals FlowRSVPPathObjectsSessionCType from protobuf object *otg.FlowRSVPPathObjectsSessionCType // and doesn't set defaults - SetMsg(*otg.PatternFlowIpv4TosUnused) PatternFlowIpv4TosUnused - // ToProto marshals PatternFlowIpv4TosUnused to protobuf object *otg.PatternFlowIpv4TosUnused - ToProto() (*otg.PatternFlowIpv4TosUnused, error) - // ToPbText marshals PatternFlowIpv4TosUnused to protobuf text + SetMsg(*otg.FlowRSVPPathObjectsSessionCType) FlowRSVPPathObjectsSessionCType + // ToProto marshals FlowRSVPPathObjectsSessionCType to protobuf object *otg.FlowRSVPPathObjectsSessionCType + ToProto() (*otg.FlowRSVPPathObjectsSessionCType, error) + // ToPbText marshals FlowRSVPPathObjectsSessionCType to protobuf text ToPbText() (string, error) - // ToYaml marshals PatternFlowIpv4TosUnused to YAML text + // ToYaml marshals FlowRSVPPathObjectsSessionCType to YAML text ToYaml() (string, error) - // ToJson marshals PatternFlowIpv4TosUnused to JSON text + // ToJson marshals FlowRSVPPathObjectsSessionCType to JSON text ToJson() (string, error) - // FromProto unmarshals PatternFlowIpv4TosUnused from protobuf object *otg.PatternFlowIpv4TosUnused - FromProto(msg *otg.PatternFlowIpv4TosUnused) (PatternFlowIpv4TosUnused, error) - // FromPbText unmarshals PatternFlowIpv4TosUnused from protobuf text + // FromProto unmarshals FlowRSVPPathObjectsSessionCType from protobuf object *otg.FlowRSVPPathObjectsSessionCType + FromProto(msg *otg.FlowRSVPPathObjectsSessionCType) (FlowRSVPPathObjectsSessionCType, error) + // FromPbText unmarshals FlowRSVPPathObjectsSessionCType from protobuf text FromPbText(value string) error - // FromYaml unmarshals PatternFlowIpv4TosUnused from YAML text + // FromYaml unmarshals FlowRSVPPathObjectsSessionCType from YAML text FromYaml(value string) error - // FromJson unmarshals PatternFlowIpv4TosUnused from JSON text + // FromJson unmarshals FlowRSVPPathObjectsSessionCType from JSON text FromJson(value string) error - // Validate validates PatternFlowIpv4TosUnused + // Validate validates FlowRSVPPathObjectsSessionCType Validate() error // A stringer function String() string // Clones the object - Clone() (PatternFlowIpv4TosUnused, error) + Clone() (FlowRSVPPathObjectsSessionCType, error) validateToAndFrom() error validateObj(vObj *validation, set_default bool) setDefault() - // Choice returns PatternFlowIpv4TosUnusedChoiceEnum, set in PatternFlowIpv4TosUnused - Choice() PatternFlowIpv4TosUnusedChoiceEnum - // SetChoice assigns PatternFlowIpv4TosUnusedChoiceEnum provided by user to PatternFlowIpv4TosUnused - SetChoice(value PatternFlowIpv4TosUnusedChoiceEnum) PatternFlowIpv4TosUnused - // HasChoice checks if Choice has been set in PatternFlowIpv4TosUnused + // Choice returns FlowRSVPPathObjectsSessionCTypeChoiceEnum, set in FlowRSVPPathObjectsSessionCType + Choice() FlowRSVPPathObjectsSessionCTypeChoiceEnum + // SetChoice assigns FlowRSVPPathObjectsSessionCTypeChoiceEnum provided by user to FlowRSVPPathObjectsSessionCType + SetChoice(value FlowRSVPPathObjectsSessionCTypeChoiceEnum) FlowRSVPPathObjectsSessionCType + // HasChoice checks if Choice has been set in FlowRSVPPathObjectsSessionCType HasChoice() bool - // Value returns uint32, set in PatternFlowIpv4TosUnused. - Value() uint32 - // SetValue assigns uint32 provided by user to PatternFlowIpv4TosUnused - SetValue(value uint32) PatternFlowIpv4TosUnused - // HasValue checks if Value has been set in PatternFlowIpv4TosUnused - HasValue() bool - // Values returns []uint32, set in PatternFlowIpv4TosUnused. - Values() []uint32 - // SetValues assigns []uint32 provided by user to PatternFlowIpv4TosUnused - SetValues(value []uint32) PatternFlowIpv4TosUnused - // Increment returns PatternFlowIpv4TosUnusedCounter, set in PatternFlowIpv4TosUnused. - // PatternFlowIpv4TosUnusedCounter is integer counter pattern - Increment() PatternFlowIpv4TosUnusedCounter - // SetIncrement assigns PatternFlowIpv4TosUnusedCounter provided by user to PatternFlowIpv4TosUnused. - // PatternFlowIpv4TosUnusedCounter is integer counter pattern - SetIncrement(value PatternFlowIpv4TosUnusedCounter) PatternFlowIpv4TosUnused - // HasIncrement checks if Increment has been set in PatternFlowIpv4TosUnused - HasIncrement() bool - // Decrement returns PatternFlowIpv4TosUnusedCounter, set in PatternFlowIpv4TosUnused. - // PatternFlowIpv4TosUnusedCounter is integer counter pattern - Decrement() PatternFlowIpv4TosUnusedCounter - // SetDecrement assigns PatternFlowIpv4TosUnusedCounter provided by user to PatternFlowIpv4TosUnused. - // PatternFlowIpv4TosUnusedCounter is integer counter pattern - SetDecrement(value PatternFlowIpv4TosUnusedCounter) PatternFlowIpv4TosUnused - // HasDecrement checks if Decrement has been set in PatternFlowIpv4TosUnused - HasDecrement() bool - // MetricTags returns PatternFlowIpv4TosUnusedPatternFlowIpv4TosUnusedMetricTagIterIter, set in PatternFlowIpv4TosUnused - MetricTags() PatternFlowIpv4TosUnusedPatternFlowIpv4TosUnusedMetricTagIter + // LspTunnelIpv4 returns FlowRSVPPathSessionLspTunnelIpv4, set in FlowRSVPPathObjectsSessionCType. + // FlowRSVPPathSessionLspTunnelIpv4 is class = SESSION, LSP_TUNNEL_IPv4 C-Type = 7. + LspTunnelIpv4() FlowRSVPPathSessionLspTunnelIpv4 + // SetLspTunnelIpv4 assigns FlowRSVPPathSessionLspTunnelIpv4 provided by user to FlowRSVPPathObjectsSessionCType. + // FlowRSVPPathSessionLspTunnelIpv4 is class = SESSION, LSP_TUNNEL_IPv4 C-Type = 7. + SetLspTunnelIpv4(value FlowRSVPPathSessionLspTunnelIpv4) FlowRSVPPathObjectsSessionCType + // HasLspTunnelIpv4 checks if LspTunnelIpv4 has been set in FlowRSVPPathObjectsSessionCType + HasLspTunnelIpv4() bool setNil() } -type PatternFlowIpv4TosUnusedChoiceEnum string - -// Enum of Choice on PatternFlowIpv4TosUnused -var PatternFlowIpv4TosUnusedChoice = struct { - VALUE PatternFlowIpv4TosUnusedChoiceEnum - VALUES PatternFlowIpv4TosUnusedChoiceEnum - INCREMENT PatternFlowIpv4TosUnusedChoiceEnum - DECREMENT PatternFlowIpv4TosUnusedChoiceEnum -}{ - VALUE: PatternFlowIpv4TosUnusedChoiceEnum("value"), - VALUES: PatternFlowIpv4TosUnusedChoiceEnum("values"), - INCREMENT: PatternFlowIpv4TosUnusedChoiceEnum("increment"), - DECREMENT: PatternFlowIpv4TosUnusedChoiceEnum("decrement"), -} - -func (obj *patternFlowIpv4TosUnused) Choice() PatternFlowIpv4TosUnusedChoiceEnum { - return PatternFlowIpv4TosUnusedChoiceEnum(obj.obj.Choice.Enum().String()) -} - -// description is TBD -// Choice returns a string -func (obj *patternFlowIpv4TosUnused) HasChoice() bool { - return obj.obj.Choice != nil -} - -func (obj *patternFlowIpv4TosUnused) SetChoice(value PatternFlowIpv4TosUnusedChoiceEnum) PatternFlowIpv4TosUnused { - intValue, ok := otg.PatternFlowIpv4TosUnused_Choice_Enum_value[string(value)] - if !ok { - obj.validationErrors = append(obj.validationErrors, fmt.Sprintf( - "%s is not a valid choice on PatternFlowIpv4TosUnusedChoiceEnum", string(value))) - return obj - } - enumValue := otg.PatternFlowIpv4TosUnused_Choice_Enum(intValue) - obj.obj.Choice = &enumValue - obj.obj.Decrement = nil - obj.decrementHolder = nil - obj.obj.Increment = nil - obj.incrementHolder = nil - obj.obj.Values = nil - obj.obj.Value = nil - - if value == PatternFlowIpv4TosUnusedChoice.VALUE { - defaultValue := uint32(0) - obj.obj.Value = &defaultValue - } - - if value == PatternFlowIpv4TosUnusedChoice.VALUES { - defaultValue := []uint32{0} - obj.obj.Values = defaultValue - } - - if value == PatternFlowIpv4TosUnusedChoice.INCREMENT { - obj.obj.Increment = NewPatternFlowIpv4TosUnusedCounter().Msg() - } - - if value == PatternFlowIpv4TosUnusedChoice.DECREMENT { - obj.obj.Decrement = NewPatternFlowIpv4TosUnusedCounter().Msg() - } - - return obj -} - -// description is TBD -// Value returns a uint32 -func (obj *patternFlowIpv4TosUnused) Value() uint32 { - - if obj.obj.Value == nil { - obj.SetChoice(PatternFlowIpv4TosUnusedChoice.VALUE) - } - - return *obj.obj.Value - -} - -// description is TBD -// Value returns a uint32 -func (obj *patternFlowIpv4TosUnused) HasValue() bool { - return obj.obj.Value != nil -} - -// description is TBD -// SetValue sets the uint32 value in the PatternFlowIpv4TosUnused object -func (obj *patternFlowIpv4TosUnused) SetValue(value uint32) PatternFlowIpv4TosUnused { - obj.SetChoice(PatternFlowIpv4TosUnusedChoice.VALUE) - obj.obj.Value = &value - return obj -} - -// description is TBD -// Values returns a []uint32 -func (obj *patternFlowIpv4TosUnused) Values() []uint32 { - if obj.obj.Values == nil { - obj.SetValues([]uint32{0}) - } - return obj.obj.Values -} - -// description is TBD -// SetValues sets the []uint32 value in the PatternFlowIpv4TosUnused object -func (obj *patternFlowIpv4TosUnused) SetValues(value []uint32) PatternFlowIpv4TosUnused { - obj.SetChoice(PatternFlowIpv4TosUnusedChoice.VALUES) - if obj.obj.Values == nil { - obj.obj.Values = make([]uint32, 0) - } - obj.obj.Values = value - - return obj -} - -// description is TBD -// Increment returns a PatternFlowIpv4TosUnusedCounter -func (obj *patternFlowIpv4TosUnused) Increment() PatternFlowIpv4TosUnusedCounter { - if obj.obj.Increment == nil { - obj.SetChoice(PatternFlowIpv4TosUnusedChoice.INCREMENT) - } - if obj.incrementHolder == nil { - obj.incrementHolder = &patternFlowIpv4TosUnusedCounter{obj: obj.obj.Increment} - } - return obj.incrementHolder -} - -// description is TBD -// Increment returns a PatternFlowIpv4TosUnusedCounter -func (obj *patternFlowIpv4TosUnused) HasIncrement() bool { - return obj.obj.Increment != nil -} - -// description is TBD -// SetIncrement sets the PatternFlowIpv4TosUnusedCounter value in the PatternFlowIpv4TosUnused object -func (obj *patternFlowIpv4TosUnused) SetIncrement(value PatternFlowIpv4TosUnusedCounter) PatternFlowIpv4TosUnused { - obj.SetChoice(PatternFlowIpv4TosUnusedChoice.INCREMENT) - obj.incrementHolder = nil - obj.obj.Increment = value.Msg() - - return obj -} - -// description is TBD -// Decrement returns a PatternFlowIpv4TosUnusedCounter -func (obj *patternFlowIpv4TosUnused) Decrement() PatternFlowIpv4TosUnusedCounter { - if obj.obj.Decrement == nil { - obj.SetChoice(PatternFlowIpv4TosUnusedChoice.DECREMENT) - } - if obj.decrementHolder == nil { - obj.decrementHolder = &patternFlowIpv4TosUnusedCounter{obj: obj.obj.Decrement} - } - return obj.decrementHolder -} - -// description is TBD -// Decrement returns a PatternFlowIpv4TosUnusedCounter -func (obj *patternFlowIpv4TosUnused) HasDecrement() bool { - return obj.obj.Decrement != nil -} - -// description is TBD -// SetDecrement sets the PatternFlowIpv4TosUnusedCounter value in the PatternFlowIpv4TosUnused object -func (obj *patternFlowIpv4TosUnused) SetDecrement(value PatternFlowIpv4TosUnusedCounter) PatternFlowIpv4TosUnused { - obj.SetChoice(PatternFlowIpv4TosUnusedChoice.DECREMENT) - obj.decrementHolder = nil - obj.obj.Decrement = value.Msg() - - return obj -} - -// One or more metric tags can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. -// MetricTags returns a []PatternFlowIpv4TosUnusedMetricTag -func (obj *patternFlowIpv4TosUnused) MetricTags() PatternFlowIpv4TosUnusedPatternFlowIpv4TosUnusedMetricTagIter { - if len(obj.obj.MetricTags) == 0 { - obj.obj.MetricTags = []*otg.PatternFlowIpv4TosUnusedMetricTag{} - } - if obj.metricTagsHolder == nil { - obj.metricTagsHolder = newPatternFlowIpv4TosUnusedPatternFlowIpv4TosUnusedMetricTagIter(&obj.obj.MetricTags).setMsg(obj) - } - return obj.metricTagsHolder -} - -type patternFlowIpv4TosUnusedPatternFlowIpv4TosUnusedMetricTagIter struct { - obj *patternFlowIpv4TosUnused - patternFlowIpv4TosUnusedMetricTagSlice []PatternFlowIpv4TosUnusedMetricTag - fieldPtr *[]*otg.PatternFlowIpv4TosUnusedMetricTag -} - -func newPatternFlowIpv4TosUnusedPatternFlowIpv4TosUnusedMetricTagIter(ptr *[]*otg.PatternFlowIpv4TosUnusedMetricTag) PatternFlowIpv4TosUnusedPatternFlowIpv4TosUnusedMetricTagIter { - return &patternFlowIpv4TosUnusedPatternFlowIpv4TosUnusedMetricTagIter{fieldPtr: ptr} -} - -type PatternFlowIpv4TosUnusedPatternFlowIpv4TosUnusedMetricTagIter interface { - setMsg(*patternFlowIpv4TosUnused) PatternFlowIpv4TosUnusedPatternFlowIpv4TosUnusedMetricTagIter - Items() []PatternFlowIpv4TosUnusedMetricTag - Add() PatternFlowIpv4TosUnusedMetricTag - Append(items ...PatternFlowIpv4TosUnusedMetricTag) PatternFlowIpv4TosUnusedPatternFlowIpv4TosUnusedMetricTagIter - Set(index int, newObj PatternFlowIpv4TosUnusedMetricTag) PatternFlowIpv4TosUnusedPatternFlowIpv4TosUnusedMetricTagIter - Clear() PatternFlowIpv4TosUnusedPatternFlowIpv4TosUnusedMetricTagIter - clearHolderSlice() PatternFlowIpv4TosUnusedPatternFlowIpv4TosUnusedMetricTagIter - appendHolderSlice(item PatternFlowIpv4TosUnusedMetricTag) PatternFlowIpv4TosUnusedPatternFlowIpv4TosUnusedMetricTagIter -} - -func (obj *patternFlowIpv4TosUnusedPatternFlowIpv4TosUnusedMetricTagIter) setMsg(msg *patternFlowIpv4TosUnused) PatternFlowIpv4TosUnusedPatternFlowIpv4TosUnusedMetricTagIter { - obj.clearHolderSlice() - for _, val := range *obj.fieldPtr { - obj.appendHolderSlice(&patternFlowIpv4TosUnusedMetricTag{obj: val}) - } - obj.obj = msg - return obj -} +type FlowRSVPPathObjectsSessionCTypeChoiceEnum string -func (obj *patternFlowIpv4TosUnusedPatternFlowIpv4TosUnusedMetricTagIter) Items() []PatternFlowIpv4TosUnusedMetricTag { - return obj.patternFlowIpv4TosUnusedMetricTagSlice +// Enum of Choice on FlowRSVPPathObjectsSessionCType +var FlowRSVPPathObjectsSessionCTypeChoice = struct { + LSP_TUNNEL_IPV4 FlowRSVPPathObjectsSessionCTypeChoiceEnum +}{ + LSP_TUNNEL_IPV4: FlowRSVPPathObjectsSessionCTypeChoiceEnum("lsp_tunnel_ipv4"), } -func (obj *patternFlowIpv4TosUnusedPatternFlowIpv4TosUnusedMetricTagIter) Add() PatternFlowIpv4TosUnusedMetricTag { - newObj := &otg.PatternFlowIpv4TosUnusedMetricTag{} - *obj.fieldPtr = append(*obj.fieldPtr, newObj) - newLibObj := &patternFlowIpv4TosUnusedMetricTag{obj: newObj} - newLibObj.setDefault() - obj.patternFlowIpv4TosUnusedMetricTagSlice = append(obj.patternFlowIpv4TosUnusedMetricTagSlice, newLibObj) - return newLibObj +func (obj *flowRSVPPathObjectsSessionCType) Choice() FlowRSVPPathObjectsSessionCTypeChoiceEnum { + return FlowRSVPPathObjectsSessionCTypeChoiceEnum(obj.obj.Choice.Enum().String()) } -func (obj *patternFlowIpv4TosUnusedPatternFlowIpv4TosUnusedMetricTagIter) Append(items ...PatternFlowIpv4TosUnusedMetricTag) PatternFlowIpv4TosUnusedPatternFlowIpv4TosUnusedMetricTagIter { - for _, item := range items { - newObj := item.Msg() - *obj.fieldPtr = append(*obj.fieldPtr, newObj) - obj.patternFlowIpv4TosUnusedMetricTagSlice = append(obj.patternFlowIpv4TosUnusedMetricTagSlice, item) - } - return obj +// description is TBD +// Choice returns a string +func (obj *flowRSVPPathObjectsSessionCType) HasChoice() bool { + return obj.obj.Choice != nil } -func (obj *patternFlowIpv4TosUnusedPatternFlowIpv4TosUnusedMetricTagIter) Set(index int, newObj PatternFlowIpv4TosUnusedMetricTag) PatternFlowIpv4TosUnusedPatternFlowIpv4TosUnusedMetricTagIter { - (*obj.fieldPtr)[index] = newObj.Msg() - obj.patternFlowIpv4TosUnusedMetricTagSlice[index] = newObj - return obj -} -func (obj *patternFlowIpv4TosUnusedPatternFlowIpv4TosUnusedMetricTagIter) Clear() PatternFlowIpv4TosUnusedPatternFlowIpv4TosUnusedMetricTagIter { - if len(*obj.fieldPtr) > 0 { - *obj.fieldPtr = []*otg.PatternFlowIpv4TosUnusedMetricTag{} - obj.patternFlowIpv4TosUnusedMetricTagSlice = []PatternFlowIpv4TosUnusedMetricTag{} - } - return obj -} -func (obj *patternFlowIpv4TosUnusedPatternFlowIpv4TosUnusedMetricTagIter) clearHolderSlice() PatternFlowIpv4TosUnusedPatternFlowIpv4TosUnusedMetricTagIter { - if len(obj.patternFlowIpv4TosUnusedMetricTagSlice) > 0 { - obj.patternFlowIpv4TosUnusedMetricTagSlice = []PatternFlowIpv4TosUnusedMetricTag{} +func (obj *flowRSVPPathObjectsSessionCType) SetChoice(value FlowRSVPPathObjectsSessionCTypeChoiceEnum) FlowRSVPPathObjectsSessionCType { + intValue, ok := otg.FlowRSVPPathObjectsSessionCType_Choice_Enum_value[string(value)] + if !ok { + obj.validationErrors = append(obj.validationErrors, fmt.Sprintf( + "%s is not a valid choice on FlowRSVPPathObjectsSessionCTypeChoiceEnum", string(value))) + return obj } - return obj -} -func (obj *patternFlowIpv4TosUnusedPatternFlowIpv4TosUnusedMetricTagIter) appendHolderSlice(item PatternFlowIpv4TosUnusedMetricTag) PatternFlowIpv4TosUnusedPatternFlowIpv4TosUnusedMetricTagIter { - obj.patternFlowIpv4TosUnusedMetricTagSlice = append(obj.patternFlowIpv4TosUnusedMetricTagSlice, item) - return obj -} + enumValue := otg.FlowRSVPPathObjectsSessionCType_Choice_Enum(intValue) + obj.obj.Choice = &enumValue + obj.obj.LspTunnelIpv4 = nil + obj.lspTunnelIpv4Holder = nil -func (obj *patternFlowIpv4TosUnused) validateObj(vObj *validation, set_default bool) { - if set_default { - obj.setDefault() + if value == FlowRSVPPathObjectsSessionCTypeChoice.LSP_TUNNEL_IPV4 { + obj.obj.LspTunnelIpv4 = NewFlowRSVPPathSessionLspTunnelIpv4().Msg() } - if obj.obj.Value != nil { - - if *obj.obj.Value > 1 { - vObj.validationErrors = append( - vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowIpv4TosUnused.Value <= 1 but Got %d", *obj.obj.Value)) - } + return obj +} +// description is TBD +// LspTunnelIpv4 returns a FlowRSVPPathSessionLspTunnelIpv4 +func (obj *flowRSVPPathObjectsSessionCType) LspTunnelIpv4() FlowRSVPPathSessionLspTunnelIpv4 { + if obj.obj.LspTunnelIpv4 == nil { + obj.SetChoice(FlowRSVPPathObjectsSessionCTypeChoice.LSP_TUNNEL_IPV4) } - - if obj.obj.Values != nil { - - for _, item := range obj.obj.Values { - if item > 1 { - vObj.validationErrors = append( - vObj.validationErrors, - fmt.Sprintf("min(uint32) <= PatternFlowIpv4TosUnused.Values <= 1 but Got %d", item)) - } - - } - + if obj.lspTunnelIpv4Holder == nil { + obj.lspTunnelIpv4Holder = &flowRSVPPathSessionLspTunnelIpv4{obj: obj.obj.LspTunnelIpv4} } + return obj.lspTunnelIpv4Holder +} - if obj.obj.Increment != nil { +// description is TBD +// LspTunnelIpv4 returns a FlowRSVPPathSessionLspTunnelIpv4 +func (obj *flowRSVPPathObjectsSessionCType) HasLspTunnelIpv4() bool { + return obj.obj.LspTunnelIpv4 != nil +} - obj.Increment().validateObj(vObj, set_default) - } +// description is TBD +// SetLspTunnelIpv4 sets the FlowRSVPPathSessionLspTunnelIpv4 value in the FlowRSVPPathObjectsSessionCType object +func (obj *flowRSVPPathObjectsSessionCType) SetLspTunnelIpv4(value FlowRSVPPathSessionLspTunnelIpv4) FlowRSVPPathObjectsSessionCType { + obj.SetChoice(FlowRSVPPathObjectsSessionCTypeChoice.LSP_TUNNEL_IPV4) + obj.lspTunnelIpv4Holder = nil + obj.obj.LspTunnelIpv4 = value.Msg() - if obj.obj.Decrement != nil { + return obj +} - obj.Decrement().validateObj(vObj, set_default) +func (obj *flowRSVPPathObjectsSessionCType) validateObj(vObj *validation, set_default bool) { + if set_default { + obj.setDefault() } - if len(obj.obj.MetricTags) != 0 { - - if set_default { - obj.MetricTags().clearHolderSlice() - for _, item := range obj.obj.MetricTags { - obj.MetricTags().appendHolderSlice(&patternFlowIpv4TosUnusedMetricTag{obj: item}) - } - } - for _, item := range obj.MetricTags().Items() { - item.validateObj(vObj, set_default) - } + if obj.obj.LspTunnelIpv4 != nil { + obj.LspTunnelIpv4().validateObj(vObj, set_default) } } -func (obj *patternFlowIpv4TosUnused) setDefault() { +func (obj *flowRSVPPathObjectsSessionCType) setDefault() { if obj.obj.Choice == nil { - obj.SetChoice(PatternFlowIpv4TosUnusedChoice.VALUE) + obj.SetChoice(FlowRSVPPathObjectsSessionCTypeChoice.LSP_TUNNEL_IPV4) } } -// ***** PatternFlowIpv4DscpPhb ***** -type patternFlowIpv4DscpPhb struct { +// ***** FlowRSVPPathObjectsRsvpHopCType ***** +type flowRSVPPathObjectsRsvpHopCType struct { validation - obj *otg.PatternFlowIpv4DscpPhb - incrementHolder PatternFlowIpv4DscpPhbCounter - decrementHolder PatternFlowIpv4DscpPhbCounter - metricTagsHolder PatternFlowIpv4DscpPhbPatternFlowIpv4DscpPhbMetricTagIter + obj *otg.FlowRSVPPathObjectsRsvpHopCType + ipv4Holder FlowRSVPPathRsvpHopIpv4 } -func NewPatternFlowIpv4DscpPhb() PatternFlowIpv4DscpPhb { - obj := patternFlowIpv4DscpPhb{obj: &otg.PatternFlowIpv4DscpPhb{}} +func NewFlowRSVPPathObjectsRsvpHopCType() FlowRSVPPathObjectsRsvpHopCType { + obj := flowRSVPPathObjectsRsvpHopCType{obj: &otg.FlowRSVPPathObjectsRsvpHopCType{}} obj.setDefault() return &obj } -func (obj *patternFlowIpv4DscpPhb) Msg() *otg.PatternFlowIpv4DscpPhb { +func (obj *flowRSVPPathObjectsRsvpHopCType) Msg() *otg.FlowRSVPPathObjectsRsvpHopCType { return obj.obj } -func (obj *patternFlowIpv4DscpPhb) SetMsg(msg *otg.PatternFlowIpv4DscpPhb) PatternFlowIpv4DscpPhb { +func (obj *flowRSVPPathObjectsRsvpHopCType) SetMsg(msg *otg.FlowRSVPPathObjectsRsvpHopCType) FlowRSVPPathObjectsRsvpHopCType { obj.setNil() proto.Merge(obj.obj, msg) return obj } -func (obj *patternFlowIpv4DscpPhb) ToProto() (*otg.PatternFlowIpv4DscpPhb, error) { +func (obj *flowRSVPPathObjectsRsvpHopCType) ToProto() (*otg.FlowRSVPPathObjectsRsvpHopCType, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -286434,7 +330876,7 @@ func (obj *patternFlowIpv4DscpPhb) ToProto() (*otg.PatternFlowIpv4DscpPhb, error return obj.Msg(), nil } -func (obj *patternFlowIpv4DscpPhb) FromProto(msg *otg.PatternFlowIpv4DscpPhb) (PatternFlowIpv4DscpPhb, error) { +func (obj *flowRSVPPathObjectsRsvpHopCType) FromProto(msg *otg.FlowRSVPPathObjectsRsvpHopCType) (FlowRSVPPathObjectsRsvpHopCType, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -286443,7 +330885,7 @@ func (obj *patternFlowIpv4DscpPhb) FromProto(msg *otg.PatternFlowIpv4DscpPhb) (P return newObj, nil } -func (obj *patternFlowIpv4DscpPhb) ToPbText() (string, error) { +func (obj *flowRSVPPathObjectsRsvpHopCType) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -286455,7 +330897,7 @@ func (obj *patternFlowIpv4DscpPhb) ToPbText() (string, error) { return string(protoMarshal), nil } -func (obj *patternFlowIpv4DscpPhb) FromPbText(value string) error { +func (obj *flowRSVPPathObjectsRsvpHopCType) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj @@ -286468,7 +330910,7 @@ func (obj *patternFlowIpv4DscpPhb) FromPbText(value string) error { return retObj } -func (obj *patternFlowIpv4DscpPhb) ToYaml() (string, error) { +func (obj *flowRSVPPathObjectsRsvpHopCType) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -286489,7 +330931,7 @@ func (obj *patternFlowIpv4DscpPhb) ToYaml() (string, error) { return string(data), nil } -func (obj *patternFlowIpv4DscpPhb) FromYaml(value string) error { +func (obj *flowRSVPPathObjectsRsvpHopCType) FromYaml(value string) error { if value == "" { value = "{}" } @@ -286514,7 +330956,7 @@ func (obj *patternFlowIpv4DscpPhb) FromYaml(value string) error { return nil } -func (obj *patternFlowIpv4DscpPhb) ToJson() (string, error) { +func (obj *flowRSVPPathObjectsRsvpHopCType) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -286532,7 +330974,7 @@ func (obj *patternFlowIpv4DscpPhb) ToJson() (string, error) { return string(data), nil } -func (obj *patternFlowIpv4DscpPhb) FromJson(value string) error { +func (obj *flowRSVPPathObjectsRsvpHopCType) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -286553,19 +330995,19 @@ func (obj *patternFlowIpv4DscpPhb) FromJson(value string) error { return nil } -func (obj *patternFlowIpv4DscpPhb) validateToAndFrom() error { +func (obj *flowRSVPPathObjectsRsvpHopCType) validateToAndFrom() error { // emptyVars() obj.validateObj(&obj.validation, true) return obj.validationResult() } -func (obj *patternFlowIpv4DscpPhb) Validate() error { +func (obj *flowRSVPPathObjectsRsvpHopCType) Validate() error { // emptyVars() obj.validateObj(&obj.validation, false) return obj.validationResult() } -func (obj *patternFlowIpv4DscpPhb) String() string { +func (obj *flowRSVPPathObjectsRsvpHopCType) String() string { str, err := obj.ToYaml() if err != nil { return err.Error() @@ -286573,12 +331015,12 @@ func (obj *patternFlowIpv4DscpPhb) String() string { return str } -func (obj *patternFlowIpv4DscpPhb) Clone() (PatternFlowIpv4DscpPhb, error) { +func (obj *flowRSVPPathObjectsRsvpHopCType) Clone() (FlowRSVPPathObjectsRsvpHopCType, error) { vErr := obj.Validate() if vErr != nil { return nil, vErr } - newObj := NewPatternFlowIpv4DscpPhb() + newObj := NewFlowRSVPPathObjectsRsvpHopCType() data, err := proto.Marshal(obj.Msg()) if err != nil { return nil, err @@ -286590,426 +331032,174 @@ func (obj *patternFlowIpv4DscpPhb) Clone() (PatternFlowIpv4DscpPhb, error) { return newObj, nil } -func (obj *patternFlowIpv4DscpPhb) setNil() { - obj.incrementHolder = nil - obj.decrementHolder = nil - obj.metricTagsHolder = nil +func (obj *flowRSVPPathObjectsRsvpHopCType) setNil() { + obj.ipv4Holder = nil obj.validationErrors = nil obj.warnings = nil obj.constraints = make(map[string]map[string]Constraints) } -// PatternFlowIpv4DscpPhb is per hop behavior -type PatternFlowIpv4DscpPhb interface { +// FlowRSVPPathObjectsRsvpHopCType is object for RSVP_HOP class. Currently supported c-type is IPv4 (1). +type FlowRSVPPathObjectsRsvpHopCType interface { Validation - // Msg marshals PatternFlowIpv4DscpPhb to protobuf object *otg.PatternFlowIpv4DscpPhb + // Msg marshals FlowRSVPPathObjectsRsvpHopCType to protobuf object *otg.FlowRSVPPathObjectsRsvpHopCType // and doesn't set defaults - Msg() *otg.PatternFlowIpv4DscpPhb - // SetMsg unmarshals PatternFlowIpv4DscpPhb from protobuf object *otg.PatternFlowIpv4DscpPhb + Msg() *otg.FlowRSVPPathObjectsRsvpHopCType + // SetMsg unmarshals FlowRSVPPathObjectsRsvpHopCType from protobuf object *otg.FlowRSVPPathObjectsRsvpHopCType // and doesn't set defaults - SetMsg(*otg.PatternFlowIpv4DscpPhb) PatternFlowIpv4DscpPhb - // ToProto marshals PatternFlowIpv4DscpPhb to protobuf object *otg.PatternFlowIpv4DscpPhb - ToProto() (*otg.PatternFlowIpv4DscpPhb, error) - // ToPbText marshals PatternFlowIpv4DscpPhb to protobuf text + SetMsg(*otg.FlowRSVPPathObjectsRsvpHopCType) FlowRSVPPathObjectsRsvpHopCType + // ToProto marshals FlowRSVPPathObjectsRsvpHopCType to protobuf object *otg.FlowRSVPPathObjectsRsvpHopCType + ToProto() (*otg.FlowRSVPPathObjectsRsvpHopCType, error) + // ToPbText marshals FlowRSVPPathObjectsRsvpHopCType to protobuf text ToPbText() (string, error) - // ToYaml marshals PatternFlowIpv4DscpPhb to YAML text + // ToYaml marshals FlowRSVPPathObjectsRsvpHopCType to YAML text ToYaml() (string, error) - // ToJson marshals PatternFlowIpv4DscpPhb to JSON text + // ToJson marshals FlowRSVPPathObjectsRsvpHopCType to JSON text ToJson() (string, error) - // FromProto unmarshals PatternFlowIpv4DscpPhb from protobuf object *otg.PatternFlowIpv4DscpPhb - FromProto(msg *otg.PatternFlowIpv4DscpPhb) (PatternFlowIpv4DscpPhb, error) - // FromPbText unmarshals PatternFlowIpv4DscpPhb from protobuf text + // FromProto unmarshals FlowRSVPPathObjectsRsvpHopCType from protobuf object *otg.FlowRSVPPathObjectsRsvpHopCType + FromProto(msg *otg.FlowRSVPPathObjectsRsvpHopCType) (FlowRSVPPathObjectsRsvpHopCType, error) + // FromPbText unmarshals FlowRSVPPathObjectsRsvpHopCType from protobuf text FromPbText(value string) error - // FromYaml unmarshals PatternFlowIpv4DscpPhb from YAML text + // FromYaml unmarshals FlowRSVPPathObjectsRsvpHopCType from YAML text FromYaml(value string) error - // FromJson unmarshals PatternFlowIpv4DscpPhb from JSON text + // FromJson unmarshals FlowRSVPPathObjectsRsvpHopCType from JSON text FromJson(value string) error - // Validate validates PatternFlowIpv4DscpPhb + // Validate validates FlowRSVPPathObjectsRsvpHopCType Validate() error // A stringer function String() string // Clones the object - Clone() (PatternFlowIpv4DscpPhb, error) + Clone() (FlowRSVPPathObjectsRsvpHopCType, error) validateToAndFrom() error validateObj(vObj *validation, set_default bool) setDefault() - // Choice returns PatternFlowIpv4DscpPhbChoiceEnum, set in PatternFlowIpv4DscpPhb - Choice() PatternFlowIpv4DscpPhbChoiceEnum - // SetChoice assigns PatternFlowIpv4DscpPhbChoiceEnum provided by user to PatternFlowIpv4DscpPhb - SetChoice(value PatternFlowIpv4DscpPhbChoiceEnum) PatternFlowIpv4DscpPhb - // HasChoice checks if Choice has been set in PatternFlowIpv4DscpPhb + // Choice returns FlowRSVPPathObjectsRsvpHopCTypeChoiceEnum, set in FlowRSVPPathObjectsRsvpHopCType + Choice() FlowRSVPPathObjectsRsvpHopCTypeChoiceEnum + // SetChoice assigns FlowRSVPPathObjectsRsvpHopCTypeChoiceEnum provided by user to FlowRSVPPathObjectsRsvpHopCType + SetChoice(value FlowRSVPPathObjectsRsvpHopCTypeChoiceEnum) FlowRSVPPathObjectsRsvpHopCType + // HasChoice checks if Choice has been set in FlowRSVPPathObjectsRsvpHopCType HasChoice() bool - // Value returns uint32, set in PatternFlowIpv4DscpPhb. - Value() uint32 - // SetValue assigns uint32 provided by user to PatternFlowIpv4DscpPhb - SetValue(value uint32) PatternFlowIpv4DscpPhb - // HasValue checks if Value has been set in PatternFlowIpv4DscpPhb - HasValue() bool - // Values returns []uint32, set in PatternFlowIpv4DscpPhb. - Values() []uint32 - // SetValues assigns []uint32 provided by user to PatternFlowIpv4DscpPhb - SetValues(value []uint32) PatternFlowIpv4DscpPhb - // Increment returns PatternFlowIpv4DscpPhbCounter, set in PatternFlowIpv4DscpPhb. - // PatternFlowIpv4DscpPhbCounter is integer counter pattern - Increment() PatternFlowIpv4DscpPhbCounter - // SetIncrement assigns PatternFlowIpv4DscpPhbCounter provided by user to PatternFlowIpv4DscpPhb. - // PatternFlowIpv4DscpPhbCounter is integer counter pattern - SetIncrement(value PatternFlowIpv4DscpPhbCounter) PatternFlowIpv4DscpPhb - // HasIncrement checks if Increment has been set in PatternFlowIpv4DscpPhb - HasIncrement() bool - // Decrement returns PatternFlowIpv4DscpPhbCounter, set in PatternFlowIpv4DscpPhb. - // PatternFlowIpv4DscpPhbCounter is integer counter pattern - Decrement() PatternFlowIpv4DscpPhbCounter - // SetDecrement assigns PatternFlowIpv4DscpPhbCounter provided by user to PatternFlowIpv4DscpPhb. - // PatternFlowIpv4DscpPhbCounter is integer counter pattern - SetDecrement(value PatternFlowIpv4DscpPhbCounter) PatternFlowIpv4DscpPhb - // HasDecrement checks if Decrement has been set in PatternFlowIpv4DscpPhb - HasDecrement() bool - // MetricTags returns PatternFlowIpv4DscpPhbPatternFlowIpv4DscpPhbMetricTagIterIter, set in PatternFlowIpv4DscpPhb - MetricTags() PatternFlowIpv4DscpPhbPatternFlowIpv4DscpPhbMetricTagIter + // Ipv4 returns FlowRSVPPathRsvpHopIpv4, set in FlowRSVPPathObjectsRsvpHopCType. + // FlowRSVPPathRsvpHopIpv4 is iPv4 RSVP_HOP object: Class = 3, C-Type = 1 + Ipv4() FlowRSVPPathRsvpHopIpv4 + // SetIpv4 assigns FlowRSVPPathRsvpHopIpv4 provided by user to FlowRSVPPathObjectsRsvpHopCType. + // FlowRSVPPathRsvpHopIpv4 is iPv4 RSVP_HOP object: Class = 3, C-Type = 1 + SetIpv4(value FlowRSVPPathRsvpHopIpv4) FlowRSVPPathObjectsRsvpHopCType + // HasIpv4 checks if Ipv4 has been set in FlowRSVPPathObjectsRsvpHopCType + HasIpv4() bool setNil() } -type PatternFlowIpv4DscpPhbChoiceEnum string +type FlowRSVPPathObjectsRsvpHopCTypeChoiceEnum string -// Enum of Choice on PatternFlowIpv4DscpPhb -var PatternFlowIpv4DscpPhbChoice = struct { - VALUE PatternFlowIpv4DscpPhbChoiceEnum - VALUES PatternFlowIpv4DscpPhbChoiceEnum - INCREMENT PatternFlowIpv4DscpPhbChoiceEnum - DECREMENT PatternFlowIpv4DscpPhbChoiceEnum +// Enum of Choice on FlowRSVPPathObjectsRsvpHopCType +var FlowRSVPPathObjectsRsvpHopCTypeChoice = struct { + IPV4 FlowRSVPPathObjectsRsvpHopCTypeChoiceEnum }{ - VALUE: PatternFlowIpv4DscpPhbChoiceEnum("value"), - VALUES: PatternFlowIpv4DscpPhbChoiceEnum("values"), - INCREMENT: PatternFlowIpv4DscpPhbChoiceEnum("increment"), - DECREMENT: PatternFlowIpv4DscpPhbChoiceEnum("decrement"), + IPV4: FlowRSVPPathObjectsRsvpHopCTypeChoiceEnum("ipv4"), } -func (obj *patternFlowIpv4DscpPhb) Choice() PatternFlowIpv4DscpPhbChoiceEnum { - return PatternFlowIpv4DscpPhbChoiceEnum(obj.obj.Choice.Enum().String()) +func (obj *flowRSVPPathObjectsRsvpHopCType) Choice() FlowRSVPPathObjectsRsvpHopCTypeChoiceEnum { + return FlowRSVPPathObjectsRsvpHopCTypeChoiceEnum(obj.obj.Choice.Enum().String()) } // description is TBD // Choice returns a string -func (obj *patternFlowIpv4DscpPhb) HasChoice() bool { +func (obj *flowRSVPPathObjectsRsvpHopCType) HasChoice() bool { return obj.obj.Choice != nil } -func (obj *patternFlowIpv4DscpPhb) SetChoice(value PatternFlowIpv4DscpPhbChoiceEnum) PatternFlowIpv4DscpPhb { - intValue, ok := otg.PatternFlowIpv4DscpPhb_Choice_Enum_value[string(value)] +func (obj *flowRSVPPathObjectsRsvpHopCType) SetChoice(value FlowRSVPPathObjectsRsvpHopCTypeChoiceEnum) FlowRSVPPathObjectsRsvpHopCType { + intValue, ok := otg.FlowRSVPPathObjectsRsvpHopCType_Choice_Enum_value[string(value)] if !ok { obj.validationErrors = append(obj.validationErrors, fmt.Sprintf( - "%s is not a valid choice on PatternFlowIpv4DscpPhbChoiceEnum", string(value))) + "%s is not a valid choice on FlowRSVPPathObjectsRsvpHopCTypeChoiceEnum", string(value))) return obj } - enumValue := otg.PatternFlowIpv4DscpPhb_Choice_Enum(intValue) + enumValue := otg.FlowRSVPPathObjectsRsvpHopCType_Choice_Enum(intValue) obj.obj.Choice = &enumValue - obj.obj.Decrement = nil - obj.decrementHolder = nil - obj.obj.Increment = nil - obj.incrementHolder = nil - obj.obj.Values = nil - obj.obj.Value = nil - - if value == PatternFlowIpv4DscpPhbChoice.VALUE { - defaultValue := uint32(0) - obj.obj.Value = &defaultValue - } - - if value == PatternFlowIpv4DscpPhbChoice.VALUES { - defaultValue := []uint32{0} - obj.obj.Values = defaultValue - } - - if value == PatternFlowIpv4DscpPhbChoice.INCREMENT { - obj.obj.Increment = NewPatternFlowIpv4DscpPhbCounter().Msg() - } - - if value == PatternFlowIpv4DscpPhbChoice.DECREMENT { - obj.obj.Decrement = NewPatternFlowIpv4DscpPhbCounter().Msg() - } - - return obj -} - -// description is TBD -// Value returns a uint32 -func (obj *patternFlowIpv4DscpPhb) Value() uint32 { - - if obj.obj.Value == nil { - obj.SetChoice(PatternFlowIpv4DscpPhbChoice.VALUE) - } - - return *obj.obj.Value - -} - -// description is TBD -// Value returns a uint32 -func (obj *patternFlowIpv4DscpPhb) HasValue() bool { - return obj.obj.Value != nil -} - -// description is TBD -// SetValue sets the uint32 value in the PatternFlowIpv4DscpPhb object -func (obj *patternFlowIpv4DscpPhb) SetValue(value uint32) PatternFlowIpv4DscpPhb { - obj.SetChoice(PatternFlowIpv4DscpPhbChoice.VALUE) - obj.obj.Value = &value - return obj -} - -// description is TBD -// Values returns a []uint32 -func (obj *patternFlowIpv4DscpPhb) Values() []uint32 { - if obj.obj.Values == nil { - obj.SetValues([]uint32{0}) - } - return obj.obj.Values -} - -// description is TBD -// SetValues sets the []uint32 value in the PatternFlowIpv4DscpPhb object -func (obj *patternFlowIpv4DscpPhb) SetValues(value []uint32) PatternFlowIpv4DscpPhb { - obj.SetChoice(PatternFlowIpv4DscpPhbChoice.VALUES) - if obj.obj.Values == nil { - obj.obj.Values = make([]uint32, 0) - } - obj.obj.Values = value - - return obj -} + obj.obj.Ipv4 = nil + obj.ipv4Holder = nil -// description is TBD -// Increment returns a PatternFlowIpv4DscpPhbCounter -func (obj *patternFlowIpv4DscpPhb) Increment() PatternFlowIpv4DscpPhbCounter { - if obj.obj.Increment == nil { - obj.SetChoice(PatternFlowIpv4DscpPhbChoice.INCREMENT) - } - if obj.incrementHolder == nil { - obj.incrementHolder = &patternFlowIpv4DscpPhbCounter{obj: obj.obj.Increment} + if value == FlowRSVPPathObjectsRsvpHopCTypeChoice.IPV4 { + obj.obj.Ipv4 = NewFlowRSVPPathRsvpHopIpv4().Msg() } - return obj.incrementHolder -} - -// description is TBD -// Increment returns a PatternFlowIpv4DscpPhbCounter -func (obj *patternFlowIpv4DscpPhb) HasIncrement() bool { - return obj.obj.Increment != nil -} - -// description is TBD -// SetIncrement sets the PatternFlowIpv4DscpPhbCounter value in the PatternFlowIpv4DscpPhb object -func (obj *patternFlowIpv4DscpPhb) SetIncrement(value PatternFlowIpv4DscpPhbCounter) PatternFlowIpv4DscpPhb { - obj.SetChoice(PatternFlowIpv4DscpPhbChoice.INCREMENT) - obj.incrementHolder = nil - obj.obj.Increment = value.Msg() return obj } // description is TBD -// Decrement returns a PatternFlowIpv4DscpPhbCounter -func (obj *patternFlowIpv4DscpPhb) Decrement() PatternFlowIpv4DscpPhbCounter { - if obj.obj.Decrement == nil { - obj.SetChoice(PatternFlowIpv4DscpPhbChoice.DECREMENT) +// Ipv4 returns a FlowRSVPPathRsvpHopIpv4 +func (obj *flowRSVPPathObjectsRsvpHopCType) Ipv4() FlowRSVPPathRsvpHopIpv4 { + if obj.obj.Ipv4 == nil { + obj.SetChoice(FlowRSVPPathObjectsRsvpHopCTypeChoice.IPV4) } - if obj.decrementHolder == nil { - obj.decrementHolder = &patternFlowIpv4DscpPhbCounter{obj: obj.obj.Decrement} + if obj.ipv4Holder == nil { + obj.ipv4Holder = &flowRSVPPathRsvpHopIpv4{obj: obj.obj.Ipv4} } - return obj.decrementHolder + return obj.ipv4Holder } // description is TBD -// Decrement returns a PatternFlowIpv4DscpPhbCounter -func (obj *patternFlowIpv4DscpPhb) HasDecrement() bool { - return obj.obj.Decrement != nil +// Ipv4 returns a FlowRSVPPathRsvpHopIpv4 +func (obj *flowRSVPPathObjectsRsvpHopCType) HasIpv4() bool { + return obj.obj.Ipv4 != nil } // description is TBD -// SetDecrement sets the PatternFlowIpv4DscpPhbCounter value in the PatternFlowIpv4DscpPhb object -func (obj *patternFlowIpv4DscpPhb) SetDecrement(value PatternFlowIpv4DscpPhbCounter) PatternFlowIpv4DscpPhb { - obj.SetChoice(PatternFlowIpv4DscpPhbChoice.DECREMENT) - obj.decrementHolder = nil - obj.obj.Decrement = value.Msg() - - return obj -} - -// One or more metric tags can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. -// MetricTags returns a []PatternFlowIpv4DscpPhbMetricTag -func (obj *patternFlowIpv4DscpPhb) MetricTags() PatternFlowIpv4DscpPhbPatternFlowIpv4DscpPhbMetricTagIter { - if len(obj.obj.MetricTags) == 0 { - obj.obj.MetricTags = []*otg.PatternFlowIpv4DscpPhbMetricTag{} - } - if obj.metricTagsHolder == nil { - obj.metricTagsHolder = newPatternFlowIpv4DscpPhbPatternFlowIpv4DscpPhbMetricTagIter(&obj.obj.MetricTags).setMsg(obj) - } - return obj.metricTagsHolder -} - -type patternFlowIpv4DscpPhbPatternFlowIpv4DscpPhbMetricTagIter struct { - obj *patternFlowIpv4DscpPhb - patternFlowIpv4DscpPhbMetricTagSlice []PatternFlowIpv4DscpPhbMetricTag - fieldPtr *[]*otg.PatternFlowIpv4DscpPhbMetricTag -} - -func newPatternFlowIpv4DscpPhbPatternFlowIpv4DscpPhbMetricTagIter(ptr *[]*otg.PatternFlowIpv4DscpPhbMetricTag) PatternFlowIpv4DscpPhbPatternFlowIpv4DscpPhbMetricTagIter { - return &patternFlowIpv4DscpPhbPatternFlowIpv4DscpPhbMetricTagIter{fieldPtr: ptr} -} - -type PatternFlowIpv4DscpPhbPatternFlowIpv4DscpPhbMetricTagIter interface { - setMsg(*patternFlowIpv4DscpPhb) PatternFlowIpv4DscpPhbPatternFlowIpv4DscpPhbMetricTagIter - Items() []PatternFlowIpv4DscpPhbMetricTag - Add() PatternFlowIpv4DscpPhbMetricTag - Append(items ...PatternFlowIpv4DscpPhbMetricTag) PatternFlowIpv4DscpPhbPatternFlowIpv4DscpPhbMetricTagIter - Set(index int, newObj PatternFlowIpv4DscpPhbMetricTag) PatternFlowIpv4DscpPhbPatternFlowIpv4DscpPhbMetricTagIter - Clear() PatternFlowIpv4DscpPhbPatternFlowIpv4DscpPhbMetricTagIter - clearHolderSlice() PatternFlowIpv4DscpPhbPatternFlowIpv4DscpPhbMetricTagIter - appendHolderSlice(item PatternFlowIpv4DscpPhbMetricTag) PatternFlowIpv4DscpPhbPatternFlowIpv4DscpPhbMetricTagIter -} - -func (obj *patternFlowIpv4DscpPhbPatternFlowIpv4DscpPhbMetricTagIter) setMsg(msg *patternFlowIpv4DscpPhb) PatternFlowIpv4DscpPhbPatternFlowIpv4DscpPhbMetricTagIter { - obj.clearHolderSlice() - for _, val := range *obj.fieldPtr { - obj.appendHolderSlice(&patternFlowIpv4DscpPhbMetricTag{obj: val}) - } - obj.obj = msg - return obj -} - -func (obj *patternFlowIpv4DscpPhbPatternFlowIpv4DscpPhbMetricTagIter) Items() []PatternFlowIpv4DscpPhbMetricTag { - return obj.patternFlowIpv4DscpPhbMetricTagSlice -} - -func (obj *patternFlowIpv4DscpPhbPatternFlowIpv4DscpPhbMetricTagIter) Add() PatternFlowIpv4DscpPhbMetricTag { - newObj := &otg.PatternFlowIpv4DscpPhbMetricTag{} - *obj.fieldPtr = append(*obj.fieldPtr, newObj) - newLibObj := &patternFlowIpv4DscpPhbMetricTag{obj: newObj} - newLibObj.setDefault() - obj.patternFlowIpv4DscpPhbMetricTagSlice = append(obj.patternFlowIpv4DscpPhbMetricTagSlice, newLibObj) - return newLibObj -} - -func (obj *patternFlowIpv4DscpPhbPatternFlowIpv4DscpPhbMetricTagIter) Append(items ...PatternFlowIpv4DscpPhbMetricTag) PatternFlowIpv4DscpPhbPatternFlowIpv4DscpPhbMetricTagIter { - for _, item := range items { - newObj := item.Msg() - *obj.fieldPtr = append(*obj.fieldPtr, newObj) - obj.patternFlowIpv4DscpPhbMetricTagSlice = append(obj.patternFlowIpv4DscpPhbMetricTagSlice, item) - } - return obj -} +// SetIpv4 sets the FlowRSVPPathRsvpHopIpv4 value in the FlowRSVPPathObjectsRsvpHopCType object +func (obj *flowRSVPPathObjectsRsvpHopCType) SetIpv4(value FlowRSVPPathRsvpHopIpv4) FlowRSVPPathObjectsRsvpHopCType { + obj.SetChoice(FlowRSVPPathObjectsRsvpHopCTypeChoice.IPV4) + obj.ipv4Holder = nil + obj.obj.Ipv4 = value.Msg() -func (obj *patternFlowIpv4DscpPhbPatternFlowIpv4DscpPhbMetricTagIter) Set(index int, newObj PatternFlowIpv4DscpPhbMetricTag) PatternFlowIpv4DscpPhbPatternFlowIpv4DscpPhbMetricTagIter { - (*obj.fieldPtr)[index] = newObj.Msg() - obj.patternFlowIpv4DscpPhbMetricTagSlice[index] = newObj - return obj -} -func (obj *patternFlowIpv4DscpPhbPatternFlowIpv4DscpPhbMetricTagIter) Clear() PatternFlowIpv4DscpPhbPatternFlowIpv4DscpPhbMetricTagIter { - if len(*obj.fieldPtr) > 0 { - *obj.fieldPtr = []*otg.PatternFlowIpv4DscpPhbMetricTag{} - obj.patternFlowIpv4DscpPhbMetricTagSlice = []PatternFlowIpv4DscpPhbMetricTag{} - } - return obj -} -func (obj *patternFlowIpv4DscpPhbPatternFlowIpv4DscpPhbMetricTagIter) clearHolderSlice() PatternFlowIpv4DscpPhbPatternFlowIpv4DscpPhbMetricTagIter { - if len(obj.patternFlowIpv4DscpPhbMetricTagSlice) > 0 { - obj.patternFlowIpv4DscpPhbMetricTagSlice = []PatternFlowIpv4DscpPhbMetricTag{} - } - return obj -} -func (obj *patternFlowIpv4DscpPhbPatternFlowIpv4DscpPhbMetricTagIter) appendHolderSlice(item PatternFlowIpv4DscpPhbMetricTag) PatternFlowIpv4DscpPhbPatternFlowIpv4DscpPhbMetricTagIter { - obj.patternFlowIpv4DscpPhbMetricTagSlice = append(obj.patternFlowIpv4DscpPhbMetricTagSlice, item) return obj } -func (obj *patternFlowIpv4DscpPhb) validateObj(vObj *validation, set_default bool) { +func (obj *flowRSVPPathObjectsRsvpHopCType) validateObj(vObj *validation, set_default bool) { if set_default { obj.setDefault() } - if obj.obj.Value != nil { - - if *obj.obj.Value > 63 { - vObj.validationErrors = append( - vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowIpv4DscpPhb.Value <= 63 but Got %d", *obj.obj.Value)) - } - - } - - if obj.obj.Values != nil { - - for _, item := range obj.obj.Values { - if item > 63 { - vObj.validationErrors = append( - vObj.validationErrors, - fmt.Sprintf("min(uint32) <= PatternFlowIpv4DscpPhb.Values <= 63 but Got %d", item)) - } - - } - - } - - if obj.obj.Increment != nil { - - obj.Increment().validateObj(vObj, set_default) - } - - if obj.obj.Decrement != nil { - - obj.Decrement().validateObj(vObj, set_default) - } - - if len(obj.obj.MetricTags) != 0 { - - if set_default { - obj.MetricTags().clearHolderSlice() - for _, item := range obj.obj.MetricTags { - obj.MetricTags().appendHolderSlice(&patternFlowIpv4DscpPhbMetricTag{obj: item}) - } - } - for _, item := range obj.MetricTags().Items() { - item.validateObj(vObj, set_default) - } + if obj.obj.Ipv4 != nil { + obj.Ipv4().validateObj(vObj, set_default) } } -func (obj *patternFlowIpv4DscpPhb) setDefault() { +func (obj *flowRSVPPathObjectsRsvpHopCType) setDefault() { if obj.obj.Choice == nil { - obj.SetChoice(PatternFlowIpv4DscpPhbChoice.VALUE) + obj.SetChoice(FlowRSVPPathObjectsRsvpHopCTypeChoice.IPV4) } } -// ***** PatternFlowIpv4DscpEcn ***** -type patternFlowIpv4DscpEcn struct { +// ***** FlowRSVPPathObjectsTimeValuesCType ***** +type flowRSVPPathObjectsTimeValuesCType struct { validation - obj *otg.PatternFlowIpv4DscpEcn - incrementHolder PatternFlowIpv4DscpEcnCounter - decrementHolder PatternFlowIpv4DscpEcnCounter - metricTagsHolder PatternFlowIpv4DscpEcnPatternFlowIpv4DscpEcnMetricTagIter + obj *otg.FlowRSVPPathObjectsTimeValuesCType + type_1TimeValueHolder FlowRSVPPathTimeValuesType1 } -func NewPatternFlowIpv4DscpEcn() PatternFlowIpv4DscpEcn { - obj := patternFlowIpv4DscpEcn{obj: &otg.PatternFlowIpv4DscpEcn{}} +func NewFlowRSVPPathObjectsTimeValuesCType() FlowRSVPPathObjectsTimeValuesCType { + obj := flowRSVPPathObjectsTimeValuesCType{obj: &otg.FlowRSVPPathObjectsTimeValuesCType{}} obj.setDefault() return &obj } -func (obj *patternFlowIpv4DscpEcn) Msg() *otg.PatternFlowIpv4DscpEcn { +func (obj *flowRSVPPathObjectsTimeValuesCType) Msg() *otg.FlowRSVPPathObjectsTimeValuesCType { return obj.obj } -func (obj *patternFlowIpv4DscpEcn) SetMsg(msg *otg.PatternFlowIpv4DscpEcn) PatternFlowIpv4DscpEcn { +func (obj *flowRSVPPathObjectsTimeValuesCType) SetMsg(msg *otg.FlowRSVPPathObjectsTimeValuesCType) FlowRSVPPathObjectsTimeValuesCType { obj.setNil() proto.Merge(obj.obj, msg) return obj } -func (obj *patternFlowIpv4DscpEcn) ToProto() (*otg.PatternFlowIpv4DscpEcn, error) { +func (obj *flowRSVPPathObjectsTimeValuesCType) ToProto() (*otg.FlowRSVPPathObjectsTimeValuesCType, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -287017,7 +331207,7 @@ func (obj *patternFlowIpv4DscpEcn) ToProto() (*otg.PatternFlowIpv4DscpEcn, error return obj.Msg(), nil } -func (obj *patternFlowIpv4DscpEcn) FromProto(msg *otg.PatternFlowIpv4DscpEcn) (PatternFlowIpv4DscpEcn, error) { +func (obj *flowRSVPPathObjectsTimeValuesCType) FromProto(msg *otg.FlowRSVPPathObjectsTimeValuesCType) (FlowRSVPPathObjectsTimeValuesCType, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -287026,7 +331216,7 @@ func (obj *patternFlowIpv4DscpEcn) FromProto(msg *otg.PatternFlowIpv4DscpEcn) (P return newObj, nil } -func (obj *patternFlowIpv4DscpEcn) ToPbText() (string, error) { +func (obj *flowRSVPPathObjectsTimeValuesCType) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -287038,7 +331228,7 @@ func (obj *patternFlowIpv4DscpEcn) ToPbText() (string, error) { return string(protoMarshal), nil } -func (obj *patternFlowIpv4DscpEcn) FromPbText(value string) error { +func (obj *flowRSVPPathObjectsTimeValuesCType) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj @@ -287051,7 +331241,7 @@ func (obj *patternFlowIpv4DscpEcn) FromPbText(value string) error { return retObj } -func (obj *patternFlowIpv4DscpEcn) ToYaml() (string, error) { +func (obj *flowRSVPPathObjectsTimeValuesCType) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -287072,7 +331262,7 @@ func (obj *patternFlowIpv4DscpEcn) ToYaml() (string, error) { return string(data), nil } -func (obj *patternFlowIpv4DscpEcn) FromYaml(value string) error { +func (obj *flowRSVPPathObjectsTimeValuesCType) FromYaml(value string) error { if value == "" { value = "{}" } @@ -287097,7 +331287,7 @@ func (obj *patternFlowIpv4DscpEcn) FromYaml(value string) error { return nil } -func (obj *patternFlowIpv4DscpEcn) ToJson() (string, error) { +func (obj *flowRSVPPathObjectsTimeValuesCType) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -287115,7 +331305,7 @@ func (obj *patternFlowIpv4DscpEcn) ToJson() (string, error) { return string(data), nil } -func (obj *patternFlowIpv4DscpEcn) FromJson(value string) error { +func (obj *flowRSVPPathObjectsTimeValuesCType) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -287136,19 +331326,19 @@ func (obj *patternFlowIpv4DscpEcn) FromJson(value string) error { return nil } -func (obj *patternFlowIpv4DscpEcn) validateToAndFrom() error { +func (obj *flowRSVPPathObjectsTimeValuesCType) validateToAndFrom() error { // emptyVars() obj.validateObj(&obj.validation, true) return obj.validationResult() } -func (obj *patternFlowIpv4DscpEcn) Validate() error { +func (obj *flowRSVPPathObjectsTimeValuesCType) Validate() error { // emptyVars() obj.validateObj(&obj.validation, false) return obj.validationResult() } -func (obj *patternFlowIpv4DscpEcn) String() string { +func (obj *flowRSVPPathObjectsTimeValuesCType) String() string { str, err := obj.ToYaml() if err != nil { return err.Error() @@ -287156,12 +331346,12 @@ func (obj *patternFlowIpv4DscpEcn) String() string { return str } -func (obj *patternFlowIpv4DscpEcn) Clone() (PatternFlowIpv4DscpEcn, error) { +func (obj *flowRSVPPathObjectsTimeValuesCType) Clone() (FlowRSVPPathObjectsTimeValuesCType, error) { vErr := obj.Validate() if vErr != nil { return nil, vErr } - newObj := NewPatternFlowIpv4DscpEcn() + newObj := NewFlowRSVPPathObjectsTimeValuesCType() data, err := proto.Marshal(obj.Msg()) if err != nil { return nil, err @@ -287173,423 +331363,505 @@ func (obj *patternFlowIpv4DscpEcn) Clone() (PatternFlowIpv4DscpEcn, error) { return newObj, nil } -func (obj *patternFlowIpv4DscpEcn) setNil() { - obj.incrementHolder = nil - obj.decrementHolder = nil - obj.metricTagsHolder = nil +func (obj *flowRSVPPathObjectsTimeValuesCType) setNil() { + obj.type_1TimeValueHolder = nil obj.validationErrors = nil obj.warnings = nil obj.constraints = make(map[string]map[string]Constraints) } -// PatternFlowIpv4DscpEcn is explicit congestion notification -type PatternFlowIpv4DscpEcn interface { +// FlowRSVPPathObjectsTimeValuesCType is object for TIME_VALUES class. Currently supported c-type is Type 1 Time Value (1). +type FlowRSVPPathObjectsTimeValuesCType interface { Validation - // Msg marshals PatternFlowIpv4DscpEcn to protobuf object *otg.PatternFlowIpv4DscpEcn + // Msg marshals FlowRSVPPathObjectsTimeValuesCType to protobuf object *otg.FlowRSVPPathObjectsTimeValuesCType // and doesn't set defaults - Msg() *otg.PatternFlowIpv4DscpEcn - // SetMsg unmarshals PatternFlowIpv4DscpEcn from protobuf object *otg.PatternFlowIpv4DscpEcn + Msg() *otg.FlowRSVPPathObjectsTimeValuesCType + // SetMsg unmarshals FlowRSVPPathObjectsTimeValuesCType from protobuf object *otg.FlowRSVPPathObjectsTimeValuesCType // and doesn't set defaults - SetMsg(*otg.PatternFlowIpv4DscpEcn) PatternFlowIpv4DscpEcn - // ToProto marshals PatternFlowIpv4DscpEcn to protobuf object *otg.PatternFlowIpv4DscpEcn - ToProto() (*otg.PatternFlowIpv4DscpEcn, error) - // ToPbText marshals PatternFlowIpv4DscpEcn to protobuf text + SetMsg(*otg.FlowRSVPPathObjectsTimeValuesCType) FlowRSVPPathObjectsTimeValuesCType + // ToProto marshals FlowRSVPPathObjectsTimeValuesCType to protobuf object *otg.FlowRSVPPathObjectsTimeValuesCType + ToProto() (*otg.FlowRSVPPathObjectsTimeValuesCType, error) + // ToPbText marshals FlowRSVPPathObjectsTimeValuesCType to protobuf text ToPbText() (string, error) - // ToYaml marshals PatternFlowIpv4DscpEcn to YAML text + // ToYaml marshals FlowRSVPPathObjectsTimeValuesCType to YAML text ToYaml() (string, error) - // ToJson marshals PatternFlowIpv4DscpEcn to JSON text + // ToJson marshals FlowRSVPPathObjectsTimeValuesCType to JSON text ToJson() (string, error) - // FromProto unmarshals PatternFlowIpv4DscpEcn from protobuf object *otg.PatternFlowIpv4DscpEcn - FromProto(msg *otg.PatternFlowIpv4DscpEcn) (PatternFlowIpv4DscpEcn, error) - // FromPbText unmarshals PatternFlowIpv4DscpEcn from protobuf text + // FromProto unmarshals FlowRSVPPathObjectsTimeValuesCType from protobuf object *otg.FlowRSVPPathObjectsTimeValuesCType + FromProto(msg *otg.FlowRSVPPathObjectsTimeValuesCType) (FlowRSVPPathObjectsTimeValuesCType, error) + // FromPbText unmarshals FlowRSVPPathObjectsTimeValuesCType from protobuf text FromPbText(value string) error - // FromYaml unmarshals PatternFlowIpv4DscpEcn from YAML text + // FromYaml unmarshals FlowRSVPPathObjectsTimeValuesCType from YAML text FromYaml(value string) error - // FromJson unmarshals PatternFlowIpv4DscpEcn from JSON text + // FromJson unmarshals FlowRSVPPathObjectsTimeValuesCType from JSON text FromJson(value string) error - // Validate validates PatternFlowIpv4DscpEcn + // Validate validates FlowRSVPPathObjectsTimeValuesCType Validate() error // A stringer function String() string // Clones the object - Clone() (PatternFlowIpv4DscpEcn, error) + Clone() (FlowRSVPPathObjectsTimeValuesCType, error) validateToAndFrom() error validateObj(vObj *validation, set_default bool) setDefault() - // Choice returns PatternFlowIpv4DscpEcnChoiceEnum, set in PatternFlowIpv4DscpEcn - Choice() PatternFlowIpv4DscpEcnChoiceEnum - // SetChoice assigns PatternFlowIpv4DscpEcnChoiceEnum provided by user to PatternFlowIpv4DscpEcn - SetChoice(value PatternFlowIpv4DscpEcnChoiceEnum) PatternFlowIpv4DscpEcn - // HasChoice checks if Choice has been set in PatternFlowIpv4DscpEcn + // Choice returns FlowRSVPPathObjectsTimeValuesCTypeChoiceEnum, set in FlowRSVPPathObjectsTimeValuesCType + Choice() FlowRSVPPathObjectsTimeValuesCTypeChoiceEnum + // SetChoice assigns FlowRSVPPathObjectsTimeValuesCTypeChoiceEnum provided by user to FlowRSVPPathObjectsTimeValuesCType + SetChoice(value FlowRSVPPathObjectsTimeValuesCTypeChoiceEnum) FlowRSVPPathObjectsTimeValuesCType + // HasChoice checks if Choice has been set in FlowRSVPPathObjectsTimeValuesCType HasChoice() bool - // Value returns uint32, set in PatternFlowIpv4DscpEcn. - Value() uint32 - // SetValue assigns uint32 provided by user to PatternFlowIpv4DscpEcn - SetValue(value uint32) PatternFlowIpv4DscpEcn - // HasValue checks if Value has been set in PatternFlowIpv4DscpEcn - HasValue() bool - // Values returns []uint32, set in PatternFlowIpv4DscpEcn. - Values() []uint32 - // SetValues assigns []uint32 provided by user to PatternFlowIpv4DscpEcn - SetValues(value []uint32) PatternFlowIpv4DscpEcn - // Increment returns PatternFlowIpv4DscpEcnCounter, set in PatternFlowIpv4DscpEcn. - // PatternFlowIpv4DscpEcnCounter is integer counter pattern - Increment() PatternFlowIpv4DscpEcnCounter - // SetIncrement assigns PatternFlowIpv4DscpEcnCounter provided by user to PatternFlowIpv4DscpEcn. - // PatternFlowIpv4DscpEcnCounter is integer counter pattern - SetIncrement(value PatternFlowIpv4DscpEcnCounter) PatternFlowIpv4DscpEcn - // HasIncrement checks if Increment has been set in PatternFlowIpv4DscpEcn - HasIncrement() bool - // Decrement returns PatternFlowIpv4DscpEcnCounter, set in PatternFlowIpv4DscpEcn. - // PatternFlowIpv4DscpEcnCounter is integer counter pattern - Decrement() PatternFlowIpv4DscpEcnCounter - // SetDecrement assigns PatternFlowIpv4DscpEcnCounter provided by user to PatternFlowIpv4DscpEcn. - // PatternFlowIpv4DscpEcnCounter is integer counter pattern - SetDecrement(value PatternFlowIpv4DscpEcnCounter) PatternFlowIpv4DscpEcn - // HasDecrement checks if Decrement has been set in PatternFlowIpv4DscpEcn - HasDecrement() bool - // MetricTags returns PatternFlowIpv4DscpEcnPatternFlowIpv4DscpEcnMetricTagIterIter, set in PatternFlowIpv4DscpEcn - MetricTags() PatternFlowIpv4DscpEcnPatternFlowIpv4DscpEcnMetricTagIter + // Type1TimeValue returns FlowRSVPPathTimeValuesType1, set in FlowRSVPPathObjectsTimeValuesCType. + // FlowRSVPPathTimeValuesType1 is tIME_VALUES Object: Class = 5, C-Type = 1 + Type1TimeValue() FlowRSVPPathTimeValuesType1 + // SetType1TimeValue assigns FlowRSVPPathTimeValuesType1 provided by user to FlowRSVPPathObjectsTimeValuesCType. + // FlowRSVPPathTimeValuesType1 is tIME_VALUES Object: Class = 5, C-Type = 1 + SetType1TimeValue(value FlowRSVPPathTimeValuesType1) FlowRSVPPathObjectsTimeValuesCType + // HasType1TimeValue checks if Type1TimeValue has been set in FlowRSVPPathObjectsTimeValuesCType + HasType1TimeValue() bool setNil() } -type PatternFlowIpv4DscpEcnChoiceEnum string +type FlowRSVPPathObjectsTimeValuesCTypeChoiceEnum string -// Enum of Choice on PatternFlowIpv4DscpEcn -var PatternFlowIpv4DscpEcnChoice = struct { - VALUE PatternFlowIpv4DscpEcnChoiceEnum - VALUES PatternFlowIpv4DscpEcnChoiceEnum - INCREMENT PatternFlowIpv4DscpEcnChoiceEnum - DECREMENT PatternFlowIpv4DscpEcnChoiceEnum +// Enum of Choice on FlowRSVPPathObjectsTimeValuesCType +var FlowRSVPPathObjectsTimeValuesCTypeChoice = struct { + TYPE_1_TIME_VALUE FlowRSVPPathObjectsTimeValuesCTypeChoiceEnum }{ - VALUE: PatternFlowIpv4DscpEcnChoiceEnum("value"), - VALUES: PatternFlowIpv4DscpEcnChoiceEnum("values"), - INCREMENT: PatternFlowIpv4DscpEcnChoiceEnum("increment"), - DECREMENT: PatternFlowIpv4DscpEcnChoiceEnum("decrement"), + TYPE_1_TIME_VALUE: FlowRSVPPathObjectsTimeValuesCTypeChoiceEnum("type_1_time_value"), } -func (obj *patternFlowIpv4DscpEcn) Choice() PatternFlowIpv4DscpEcnChoiceEnum { - return PatternFlowIpv4DscpEcnChoiceEnum(obj.obj.Choice.Enum().String()) +func (obj *flowRSVPPathObjectsTimeValuesCType) Choice() FlowRSVPPathObjectsTimeValuesCTypeChoiceEnum { + return FlowRSVPPathObjectsTimeValuesCTypeChoiceEnum(obj.obj.Choice.Enum().String()) } // description is TBD // Choice returns a string -func (obj *patternFlowIpv4DscpEcn) HasChoice() bool { +func (obj *flowRSVPPathObjectsTimeValuesCType) HasChoice() bool { return obj.obj.Choice != nil } -func (obj *patternFlowIpv4DscpEcn) SetChoice(value PatternFlowIpv4DscpEcnChoiceEnum) PatternFlowIpv4DscpEcn { - intValue, ok := otg.PatternFlowIpv4DscpEcn_Choice_Enum_value[string(value)] +func (obj *flowRSVPPathObjectsTimeValuesCType) SetChoice(value FlowRSVPPathObjectsTimeValuesCTypeChoiceEnum) FlowRSVPPathObjectsTimeValuesCType { + intValue, ok := otg.FlowRSVPPathObjectsTimeValuesCType_Choice_Enum_value[string(value)] if !ok { obj.validationErrors = append(obj.validationErrors, fmt.Sprintf( - "%s is not a valid choice on PatternFlowIpv4DscpEcnChoiceEnum", string(value))) + "%s is not a valid choice on FlowRSVPPathObjectsTimeValuesCTypeChoiceEnum", string(value))) return obj } - enumValue := otg.PatternFlowIpv4DscpEcn_Choice_Enum(intValue) + enumValue := otg.FlowRSVPPathObjectsTimeValuesCType_Choice_Enum(intValue) obj.obj.Choice = &enumValue - obj.obj.Decrement = nil - obj.decrementHolder = nil - obj.obj.Increment = nil - obj.incrementHolder = nil - obj.obj.Values = nil - obj.obj.Value = nil + obj.obj.Type_1TimeValue = nil + obj.type_1TimeValueHolder = nil - if value == PatternFlowIpv4DscpEcnChoice.VALUE { - defaultValue := uint32(0) - obj.obj.Value = &defaultValue - } - - if value == PatternFlowIpv4DscpEcnChoice.VALUES { - defaultValue := []uint32{0} - obj.obj.Values = defaultValue - } - - if value == PatternFlowIpv4DscpEcnChoice.INCREMENT { - obj.obj.Increment = NewPatternFlowIpv4DscpEcnCounter().Msg() - } - - if value == PatternFlowIpv4DscpEcnChoice.DECREMENT { - obj.obj.Decrement = NewPatternFlowIpv4DscpEcnCounter().Msg() + if value == FlowRSVPPathObjectsTimeValuesCTypeChoice.TYPE_1_TIME_VALUE { + obj.obj.Type_1TimeValue = NewFlowRSVPPathTimeValuesType1().Msg() } return obj } // description is TBD -// Value returns a uint32 -func (obj *patternFlowIpv4DscpEcn) Value() uint32 { - - if obj.obj.Value == nil { - obj.SetChoice(PatternFlowIpv4DscpEcnChoice.VALUE) +// Type1TimeValue returns a FlowRSVPPathTimeValuesType1 +func (obj *flowRSVPPathObjectsTimeValuesCType) Type1TimeValue() FlowRSVPPathTimeValuesType1 { + if obj.obj.Type_1TimeValue == nil { + obj.SetChoice(FlowRSVPPathObjectsTimeValuesCTypeChoice.TYPE_1_TIME_VALUE) } - - return *obj.obj.Value - + if obj.type_1TimeValueHolder == nil { + obj.type_1TimeValueHolder = &flowRSVPPathTimeValuesType1{obj: obj.obj.Type_1TimeValue} + } + return obj.type_1TimeValueHolder } // description is TBD -// Value returns a uint32 -func (obj *patternFlowIpv4DscpEcn) HasValue() bool { - return obj.obj.Value != nil +// Type1TimeValue returns a FlowRSVPPathTimeValuesType1 +func (obj *flowRSVPPathObjectsTimeValuesCType) HasType1TimeValue() bool { + return obj.obj.Type_1TimeValue != nil } // description is TBD -// SetValue sets the uint32 value in the PatternFlowIpv4DscpEcn object -func (obj *patternFlowIpv4DscpEcn) SetValue(value uint32) PatternFlowIpv4DscpEcn { - obj.SetChoice(PatternFlowIpv4DscpEcnChoice.VALUE) - obj.obj.Value = &value +// SetType1TimeValue sets the FlowRSVPPathTimeValuesType1 value in the FlowRSVPPathObjectsTimeValuesCType object +func (obj *flowRSVPPathObjectsTimeValuesCType) SetType1TimeValue(value FlowRSVPPathTimeValuesType1) FlowRSVPPathObjectsTimeValuesCType { + obj.SetChoice(FlowRSVPPathObjectsTimeValuesCTypeChoice.TYPE_1_TIME_VALUE) + obj.type_1TimeValueHolder = nil + obj.obj.Type_1TimeValue = value.Msg() + return obj } -// description is TBD -// Values returns a []uint32 -func (obj *patternFlowIpv4DscpEcn) Values() []uint32 { - if obj.obj.Values == nil { - obj.SetValues([]uint32{0}) +func (obj *flowRSVPPathObjectsTimeValuesCType) validateObj(vObj *validation, set_default bool) { + if set_default { + obj.setDefault() } - return obj.obj.Values -} -// description is TBD -// SetValues sets the []uint32 value in the PatternFlowIpv4DscpEcn object -func (obj *patternFlowIpv4DscpEcn) SetValues(value []uint32) PatternFlowIpv4DscpEcn { - obj.SetChoice(PatternFlowIpv4DscpEcnChoice.VALUES) - if obj.obj.Values == nil { - obj.obj.Values = make([]uint32, 0) + if obj.obj.Type_1TimeValue != nil { + + obj.Type1TimeValue().validateObj(vObj, set_default) } - obj.obj.Values = value - return obj } -// description is TBD -// Increment returns a PatternFlowIpv4DscpEcnCounter -func (obj *patternFlowIpv4DscpEcn) Increment() PatternFlowIpv4DscpEcnCounter { - if obj.obj.Increment == nil { - obj.SetChoice(PatternFlowIpv4DscpEcnChoice.INCREMENT) - } - if obj.incrementHolder == nil { - obj.incrementHolder = &patternFlowIpv4DscpEcnCounter{obj: obj.obj.Increment} +func (obj *flowRSVPPathObjectsTimeValuesCType) setDefault() { + if obj.obj.Choice == nil { + obj.SetChoice(FlowRSVPPathObjectsTimeValuesCTypeChoice.TYPE_1_TIME_VALUE) + } - return obj.incrementHolder + } -// description is TBD -// Increment returns a PatternFlowIpv4DscpEcnCounter -func (obj *patternFlowIpv4DscpEcn) HasIncrement() bool { - return obj.obj.Increment != nil +// ***** FlowRSVPPathObjectsClassExplicitRouteCType ***** +type flowRSVPPathObjectsClassExplicitRouteCType struct { + validation + obj *otg.FlowRSVPPathObjectsClassExplicitRouteCType + type_1ExplicitRouteHolder FlowRSVPPathExplicitRouteType1 } -// description is TBD -// SetIncrement sets the PatternFlowIpv4DscpEcnCounter value in the PatternFlowIpv4DscpEcn object -func (obj *patternFlowIpv4DscpEcn) SetIncrement(value PatternFlowIpv4DscpEcnCounter) PatternFlowIpv4DscpEcn { - obj.SetChoice(PatternFlowIpv4DscpEcnChoice.INCREMENT) - obj.incrementHolder = nil - obj.obj.Increment = value.Msg() +func NewFlowRSVPPathObjectsClassExplicitRouteCType() FlowRSVPPathObjectsClassExplicitRouteCType { + obj := flowRSVPPathObjectsClassExplicitRouteCType{obj: &otg.FlowRSVPPathObjectsClassExplicitRouteCType{}} + obj.setDefault() + return &obj +} + +func (obj *flowRSVPPathObjectsClassExplicitRouteCType) Msg() *otg.FlowRSVPPathObjectsClassExplicitRouteCType { + return obj.obj +} +func (obj *flowRSVPPathObjectsClassExplicitRouteCType) SetMsg(msg *otg.FlowRSVPPathObjectsClassExplicitRouteCType) FlowRSVPPathObjectsClassExplicitRouteCType { + obj.setNil() + proto.Merge(obj.obj, msg) return obj } -// description is TBD -// Decrement returns a PatternFlowIpv4DscpEcnCounter -func (obj *patternFlowIpv4DscpEcn) Decrement() PatternFlowIpv4DscpEcnCounter { - if obj.obj.Decrement == nil { - obj.SetChoice(PatternFlowIpv4DscpEcnChoice.DECREMENT) - } - if obj.decrementHolder == nil { - obj.decrementHolder = &patternFlowIpv4DscpEcnCounter{obj: obj.obj.Decrement} +func (obj *flowRSVPPathObjectsClassExplicitRouteCType) ToProto() (*otg.FlowRSVPPathObjectsClassExplicitRouteCType, error) { + err := obj.validateToAndFrom() + if err != nil { + return nil, err } - return obj.decrementHolder + return obj.Msg(), nil } -// description is TBD -// Decrement returns a PatternFlowIpv4DscpEcnCounter -func (obj *patternFlowIpv4DscpEcn) HasDecrement() bool { - return obj.obj.Decrement != nil +func (obj *flowRSVPPathObjectsClassExplicitRouteCType) FromProto(msg *otg.FlowRSVPPathObjectsClassExplicitRouteCType) (FlowRSVPPathObjectsClassExplicitRouteCType, error) { + newObj := obj.SetMsg(msg) + err := newObj.validateToAndFrom() + if err != nil { + return nil, err + } + return newObj, nil } -// description is TBD -// SetDecrement sets the PatternFlowIpv4DscpEcnCounter value in the PatternFlowIpv4DscpEcn object -func (obj *patternFlowIpv4DscpEcn) SetDecrement(value PatternFlowIpv4DscpEcnCounter) PatternFlowIpv4DscpEcn { - obj.SetChoice(PatternFlowIpv4DscpEcnChoice.DECREMENT) - obj.decrementHolder = nil - obj.obj.Decrement = value.Msg() - - return obj +func (obj *flowRSVPPathObjectsClassExplicitRouteCType) ToPbText() (string, error) { + vErr := obj.validateToAndFrom() + if vErr != nil { + return "", vErr + } + protoMarshal, err := proto.Marshal(obj.Msg()) + if err != nil { + return "", err + } + return string(protoMarshal), nil } -// One or more metric tags can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. -// MetricTags returns a []PatternFlowIpv4DscpEcnMetricTag -func (obj *patternFlowIpv4DscpEcn) MetricTags() PatternFlowIpv4DscpEcnPatternFlowIpv4DscpEcnMetricTagIter { - if len(obj.obj.MetricTags) == 0 { - obj.obj.MetricTags = []*otg.PatternFlowIpv4DscpEcnMetricTag{} +func (obj *flowRSVPPathObjectsClassExplicitRouteCType) FromPbText(value string) error { + retObj := proto.Unmarshal([]byte(value), obj.Msg()) + if retObj != nil { + return retObj } - if obj.metricTagsHolder == nil { - obj.metricTagsHolder = newPatternFlowIpv4DscpEcnPatternFlowIpv4DscpEcnMetricTagIter(&obj.obj.MetricTags).setMsg(obj) + obj.setNil() + vErr := obj.validateToAndFrom() + if vErr != nil { + return vErr } - return obj.metricTagsHolder + return retObj } -type patternFlowIpv4DscpEcnPatternFlowIpv4DscpEcnMetricTagIter struct { - obj *patternFlowIpv4DscpEcn - patternFlowIpv4DscpEcnMetricTagSlice []PatternFlowIpv4DscpEcnMetricTag - fieldPtr *[]*otg.PatternFlowIpv4DscpEcnMetricTag +func (obj *flowRSVPPathObjectsClassExplicitRouteCType) ToYaml() (string, error) { + vErr := obj.validateToAndFrom() + if vErr != nil { + return "", vErr + } + opts := protojson.MarshalOptions{ + UseProtoNames: true, + AllowPartial: true, + EmitUnpopulated: false, + } + data, err := opts.Marshal(obj.Msg()) + if err != nil { + return "", err + } + data, err = yaml.JSONToYAML(data) + if err != nil { + return "", err + } + return string(data), nil } -func newPatternFlowIpv4DscpEcnPatternFlowIpv4DscpEcnMetricTagIter(ptr *[]*otg.PatternFlowIpv4DscpEcnMetricTag) PatternFlowIpv4DscpEcnPatternFlowIpv4DscpEcnMetricTagIter { - return &patternFlowIpv4DscpEcnPatternFlowIpv4DscpEcnMetricTagIter{fieldPtr: ptr} +func (obj *flowRSVPPathObjectsClassExplicitRouteCType) FromYaml(value string) error { + if value == "" { + value = "{}" + } + data, err := yaml.YAMLToJSON([]byte(value)) + if err != nil { + return err + } + opts := protojson.UnmarshalOptions{ + AllowPartial: true, + DiscardUnknown: false, + } + uError := opts.Unmarshal([]byte(data), obj.Msg()) + if uError != nil { + return fmt.Errorf("unmarshal error %s", strings.Replace( + uError.Error(), "\u00a0", " ", -1)[7:]) + } + obj.setNil() + vErr := obj.validateToAndFrom() + if vErr != nil { + return vErr + } + return nil } -type PatternFlowIpv4DscpEcnPatternFlowIpv4DscpEcnMetricTagIter interface { - setMsg(*patternFlowIpv4DscpEcn) PatternFlowIpv4DscpEcnPatternFlowIpv4DscpEcnMetricTagIter - Items() []PatternFlowIpv4DscpEcnMetricTag - Add() PatternFlowIpv4DscpEcnMetricTag - Append(items ...PatternFlowIpv4DscpEcnMetricTag) PatternFlowIpv4DscpEcnPatternFlowIpv4DscpEcnMetricTagIter - Set(index int, newObj PatternFlowIpv4DscpEcnMetricTag) PatternFlowIpv4DscpEcnPatternFlowIpv4DscpEcnMetricTagIter - Clear() PatternFlowIpv4DscpEcnPatternFlowIpv4DscpEcnMetricTagIter - clearHolderSlice() PatternFlowIpv4DscpEcnPatternFlowIpv4DscpEcnMetricTagIter - appendHolderSlice(item PatternFlowIpv4DscpEcnMetricTag) PatternFlowIpv4DscpEcnPatternFlowIpv4DscpEcnMetricTagIter +func (obj *flowRSVPPathObjectsClassExplicitRouteCType) ToJson() (string, error) { + vErr := obj.validateToAndFrom() + if vErr != nil { + return "", vErr + } + opts := protojson.MarshalOptions{ + UseProtoNames: true, + AllowPartial: true, + EmitUnpopulated: false, + Indent: " ", + } + data, err := opts.Marshal(obj.Msg()) + if err != nil { + return "", err + } + return string(data), nil } -func (obj *patternFlowIpv4DscpEcnPatternFlowIpv4DscpEcnMetricTagIter) setMsg(msg *patternFlowIpv4DscpEcn) PatternFlowIpv4DscpEcnPatternFlowIpv4DscpEcnMetricTagIter { - obj.clearHolderSlice() - for _, val := range *obj.fieldPtr { - obj.appendHolderSlice(&patternFlowIpv4DscpEcnMetricTag{obj: val}) +func (obj *flowRSVPPathObjectsClassExplicitRouteCType) FromJson(value string) error { + opts := protojson.UnmarshalOptions{ + AllowPartial: true, + DiscardUnknown: false, } - obj.obj = msg - return obj + if value == "" { + value = "{}" + } + uError := opts.Unmarshal([]byte(value), obj.Msg()) + if uError != nil { + return fmt.Errorf("unmarshal error %s", strings.Replace( + uError.Error(), "\u00a0", " ", -1)[7:]) + } + obj.setNil() + err := obj.validateToAndFrom() + if err != nil { + return err + } + return nil } -func (obj *patternFlowIpv4DscpEcnPatternFlowIpv4DscpEcnMetricTagIter) Items() []PatternFlowIpv4DscpEcnMetricTag { - return obj.patternFlowIpv4DscpEcnMetricTagSlice +func (obj *flowRSVPPathObjectsClassExplicitRouteCType) validateToAndFrom() error { + // emptyVars() + obj.validateObj(&obj.validation, true) + return obj.validationResult() } -func (obj *patternFlowIpv4DscpEcnPatternFlowIpv4DscpEcnMetricTagIter) Add() PatternFlowIpv4DscpEcnMetricTag { - newObj := &otg.PatternFlowIpv4DscpEcnMetricTag{} - *obj.fieldPtr = append(*obj.fieldPtr, newObj) - newLibObj := &patternFlowIpv4DscpEcnMetricTag{obj: newObj} - newLibObj.setDefault() - obj.patternFlowIpv4DscpEcnMetricTagSlice = append(obj.patternFlowIpv4DscpEcnMetricTagSlice, newLibObj) - return newLibObj +func (obj *flowRSVPPathObjectsClassExplicitRouteCType) Validate() error { + // emptyVars() + obj.validateObj(&obj.validation, false) + return obj.validationResult() } -func (obj *patternFlowIpv4DscpEcnPatternFlowIpv4DscpEcnMetricTagIter) Append(items ...PatternFlowIpv4DscpEcnMetricTag) PatternFlowIpv4DscpEcnPatternFlowIpv4DscpEcnMetricTagIter { - for _, item := range items { - newObj := item.Msg() - *obj.fieldPtr = append(*obj.fieldPtr, newObj) - obj.patternFlowIpv4DscpEcnMetricTagSlice = append(obj.patternFlowIpv4DscpEcnMetricTagSlice, item) +func (obj *flowRSVPPathObjectsClassExplicitRouteCType) String() string { + str, err := obj.ToYaml() + if err != nil { + return err.Error() } - return obj + return str } -func (obj *patternFlowIpv4DscpEcnPatternFlowIpv4DscpEcnMetricTagIter) Set(index int, newObj PatternFlowIpv4DscpEcnMetricTag) PatternFlowIpv4DscpEcnPatternFlowIpv4DscpEcnMetricTagIter { - (*obj.fieldPtr)[index] = newObj.Msg() - obj.patternFlowIpv4DscpEcnMetricTagSlice[index] = newObj - return obj -} -func (obj *patternFlowIpv4DscpEcnPatternFlowIpv4DscpEcnMetricTagIter) Clear() PatternFlowIpv4DscpEcnPatternFlowIpv4DscpEcnMetricTagIter { - if len(*obj.fieldPtr) > 0 { - *obj.fieldPtr = []*otg.PatternFlowIpv4DscpEcnMetricTag{} - obj.patternFlowIpv4DscpEcnMetricTagSlice = []PatternFlowIpv4DscpEcnMetricTag{} +func (obj *flowRSVPPathObjectsClassExplicitRouteCType) Clone() (FlowRSVPPathObjectsClassExplicitRouteCType, error) { + vErr := obj.Validate() + if vErr != nil { + return nil, vErr } - return obj -} -func (obj *patternFlowIpv4DscpEcnPatternFlowIpv4DscpEcnMetricTagIter) clearHolderSlice() PatternFlowIpv4DscpEcnPatternFlowIpv4DscpEcnMetricTagIter { - if len(obj.patternFlowIpv4DscpEcnMetricTagSlice) > 0 { - obj.patternFlowIpv4DscpEcnMetricTagSlice = []PatternFlowIpv4DscpEcnMetricTag{} + newObj := NewFlowRSVPPathObjectsClassExplicitRouteCType() + data, err := proto.Marshal(obj.Msg()) + if err != nil { + return nil, err } - return obj -} -func (obj *patternFlowIpv4DscpEcnPatternFlowIpv4DscpEcnMetricTagIter) appendHolderSlice(item PatternFlowIpv4DscpEcnMetricTag) PatternFlowIpv4DscpEcnPatternFlowIpv4DscpEcnMetricTagIter { - obj.patternFlowIpv4DscpEcnMetricTagSlice = append(obj.patternFlowIpv4DscpEcnMetricTagSlice, item) - return obj + pbErr := proto.Unmarshal(data, newObj.Msg()) + if pbErr != nil { + return nil, pbErr + } + return newObj, nil } -func (obj *patternFlowIpv4DscpEcn) validateObj(vObj *validation, set_default bool) { - if set_default { - obj.setDefault() - } +func (obj *flowRSVPPathObjectsClassExplicitRouteCType) setNil() { + obj.type_1ExplicitRouteHolder = nil + obj.validationErrors = nil + obj.warnings = nil + obj.constraints = make(map[string]map[string]Constraints) +} - if obj.obj.Value != nil { +// FlowRSVPPathObjectsClassExplicitRouteCType is object for EXPLICIT_ROUTE class and c-type is Type 1 Explicit Route (1). +type FlowRSVPPathObjectsClassExplicitRouteCType interface { + Validation + // Msg marshals FlowRSVPPathObjectsClassExplicitRouteCType to protobuf object *otg.FlowRSVPPathObjectsClassExplicitRouteCType + // and doesn't set defaults + Msg() *otg.FlowRSVPPathObjectsClassExplicitRouteCType + // SetMsg unmarshals FlowRSVPPathObjectsClassExplicitRouteCType from protobuf object *otg.FlowRSVPPathObjectsClassExplicitRouteCType + // and doesn't set defaults + SetMsg(*otg.FlowRSVPPathObjectsClassExplicitRouteCType) FlowRSVPPathObjectsClassExplicitRouteCType + // ToProto marshals FlowRSVPPathObjectsClassExplicitRouteCType to protobuf object *otg.FlowRSVPPathObjectsClassExplicitRouteCType + ToProto() (*otg.FlowRSVPPathObjectsClassExplicitRouteCType, error) + // ToPbText marshals FlowRSVPPathObjectsClassExplicitRouteCType to protobuf text + ToPbText() (string, error) + // ToYaml marshals FlowRSVPPathObjectsClassExplicitRouteCType to YAML text + ToYaml() (string, error) + // ToJson marshals FlowRSVPPathObjectsClassExplicitRouteCType to JSON text + ToJson() (string, error) + // FromProto unmarshals FlowRSVPPathObjectsClassExplicitRouteCType from protobuf object *otg.FlowRSVPPathObjectsClassExplicitRouteCType + FromProto(msg *otg.FlowRSVPPathObjectsClassExplicitRouteCType) (FlowRSVPPathObjectsClassExplicitRouteCType, error) + // FromPbText unmarshals FlowRSVPPathObjectsClassExplicitRouteCType from protobuf text + FromPbText(value string) error + // FromYaml unmarshals FlowRSVPPathObjectsClassExplicitRouteCType from YAML text + FromYaml(value string) error + // FromJson unmarshals FlowRSVPPathObjectsClassExplicitRouteCType from JSON text + FromJson(value string) error + // Validate validates FlowRSVPPathObjectsClassExplicitRouteCType + Validate() error + // A stringer function + String() string + // Clones the object + Clone() (FlowRSVPPathObjectsClassExplicitRouteCType, error) + validateToAndFrom() error + validateObj(vObj *validation, set_default bool) + setDefault() + // Choice returns FlowRSVPPathObjectsClassExplicitRouteCTypeChoiceEnum, set in FlowRSVPPathObjectsClassExplicitRouteCType + Choice() FlowRSVPPathObjectsClassExplicitRouteCTypeChoiceEnum + // SetChoice assigns FlowRSVPPathObjectsClassExplicitRouteCTypeChoiceEnum provided by user to FlowRSVPPathObjectsClassExplicitRouteCType + SetChoice(value FlowRSVPPathObjectsClassExplicitRouteCTypeChoiceEnum) FlowRSVPPathObjectsClassExplicitRouteCType + // HasChoice checks if Choice has been set in FlowRSVPPathObjectsClassExplicitRouteCType + HasChoice() bool + // Type1ExplicitRoute returns FlowRSVPPathExplicitRouteType1, set in FlowRSVPPathObjectsClassExplicitRouteCType. + // FlowRSVPPathExplicitRouteType1 is type1 Explicit Route has subobjects. Currently supported subobjects are IPv4 prefix and 4-byte AS number. + Type1ExplicitRoute() FlowRSVPPathExplicitRouteType1 + // SetType1ExplicitRoute assigns FlowRSVPPathExplicitRouteType1 provided by user to FlowRSVPPathObjectsClassExplicitRouteCType. + // FlowRSVPPathExplicitRouteType1 is type1 Explicit Route has subobjects. Currently supported subobjects are IPv4 prefix and 4-byte AS number. + SetType1ExplicitRoute(value FlowRSVPPathExplicitRouteType1) FlowRSVPPathObjectsClassExplicitRouteCType + // HasType1ExplicitRoute checks if Type1ExplicitRoute has been set in FlowRSVPPathObjectsClassExplicitRouteCType + HasType1ExplicitRoute() bool + setNil() +} - if *obj.obj.Value > 3 { - vObj.validationErrors = append( - vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowIpv4DscpEcn.Value <= 3 but Got %d", *obj.obj.Value)) - } +type FlowRSVPPathObjectsClassExplicitRouteCTypeChoiceEnum string - } +// Enum of Choice on FlowRSVPPathObjectsClassExplicitRouteCType +var FlowRSVPPathObjectsClassExplicitRouteCTypeChoice = struct { + TYPE_1_EXPLICIT_ROUTE FlowRSVPPathObjectsClassExplicitRouteCTypeChoiceEnum +}{ + TYPE_1_EXPLICIT_ROUTE: FlowRSVPPathObjectsClassExplicitRouteCTypeChoiceEnum("type_1_explicit_route"), +} - if obj.obj.Values != nil { +func (obj *flowRSVPPathObjectsClassExplicitRouteCType) Choice() FlowRSVPPathObjectsClassExplicitRouteCTypeChoiceEnum { + return FlowRSVPPathObjectsClassExplicitRouteCTypeChoiceEnum(obj.obj.Choice.Enum().String()) +} - for _, item := range obj.obj.Values { - if item > 3 { - vObj.validationErrors = append( - vObj.validationErrors, - fmt.Sprintf("min(uint32) <= PatternFlowIpv4DscpEcn.Values <= 3 but Got %d", item)) - } +// description is TBD +// Choice returns a string +func (obj *flowRSVPPathObjectsClassExplicitRouteCType) HasChoice() bool { + return obj.obj.Choice != nil +} - } +func (obj *flowRSVPPathObjectsClassExplicitRouteCType) SetChoice(value FlowRSVPPathObjectsClassExplicitRouteCTypeChoiceEnum) FlowRSVPPathObjectsClassExplicitRouteCType { + intValue, ok := otg.FlowRSVPPathObjectsClassExplicitRouteCType_Choice_Enum_value[string(value)] + if !ok { + obj.validationErrors = append(obj.validationErrors, fmt.Sprintf( + "%s is not a valid choice on FlowRSVPPathObjectsClassExplicitRouteCTypeChoiceEnum", string(value))) + return obj + } + enumValue := otg.FlowRSVPPathObjectsClassExplicitRouteCType_Choice_Enum(intValue) + obj.obj.Choice = &enumValue + obj.obj.Type_1ExplicitRoute = nil + obj.type_1ExplicitRouteHolder = nil + if value == FlowRSVPPathObjectsClassExplicitRouteCTypeChoice.TYPE_1_EXPLICIT_ROUTE { + obj.obj.Type_1ExplicitRoute = NewFlowRSVPPathExplicitRouteType1().Msg() } - if obj.obj.Increment != nil { + return obj +} - obj.Increment().validateObj(vObj, set_default) +// description is TBD +// Type1ExplicitRoute returns a FlowRSVPPathExplicitRouteType1 +func (obj *flowRSVPPathObjectsClassExplicitRouteCType) Type1ExplicitRoute() FlowRSVPPathExplicitRouteType1 { + if obj.obj.Type_1ExplicitRoute == nil { + obj.SetChoice(FlowRSVPPathObjectsClassExplicitRouteCTypeChoice.TYPE_1_EXPLICIT_ROUTE) + } + if obj.type_1ExplicitRouteHolder == nil { + obj.type_1ExplicitRouteHolder = &flowRSVPPathExplicitRouteType1{obj: obj.obj.Type_1ExplicitRoute} } + return obj.type_1ExplicitRouteHolder +} - if obj.obj.Decrement != nil { +// description is TBD +// Type1ExplicitRoute returns a FlowRSVPPathExplicitRouteType1 +func (obj *flowRSVPPathObjectsClassExplicitRouteCType) HasType1ExplicitRoute() bool { + return obj.obj.Type_1ExplicitRoute != nil +} - obj.Decrement().validateObj(vObj, set_default) - } +// description is TBD +// SetType1ExplicitRoute sets the FlowRSVPPathExplicitRouteType1 value in the FlowRSVPPathObjectsClassExplicitRouteCType object +func (obj *flowRSVPPathObjectsClassExplicitRouteCType) SetType1ExplicitRoute(value FlowRSVPPathExplicitRouteType1) FlowRSVPPathObjectsClassExplicitRouteCType { + obj.SetChoice(FlowRSVPPathObjectsClassExplicitRouteCTypeChoice.TYPE_1_EXPLICIT_ROUTE) + obj.type_1ExplicitRouteHolder = nil + obj.obj.Type_1ExplicitRoute = value.Msg() - if len(obj.obj.MetricTags) != 0 { + return obj +} - if set_default { - obj.MetricTags().clearHolderSlice() - for _, item := range obj.obj.MetricTags { - obj.MetricTags().appendHolderSlice(&patternFlowIpv4DscpEcnMetricTag{obj: item}) - } - } - for _, item := range obj.MetricTags().Items() { - item.validateObj(vObj, set_default) - } +func (obj *flowRSVPPathObjectsClassExplicitRouteCType) validateObj(vObj *validation, set_default bool) { + if set_default { + obj.setDefault() + } + if obj.obj.Type_1ExplicitRoute != nil { + + obj.Type1ExplicitRoute().validateObj(vObj, set_default) } } -func (obj *patternFlowIpv4DscpEcn) setDefault() { +func (obj *flowRSVPPathObjectsClassExplicitRouteCType) setDefault() { if obj.obj.Choice == nil { - obj.SetChoice(PatternFlowIpv4DscpEcnChoice.VALUE) + obj.SetChoice(FlowRSVPPathObjectsClassExplicitRouteCTypeChoice.TYPE_1_EXPLICIT_ROUTE) } } -// ***** PatternFlowGtpExtensionExtensionLengthCounter ***** -type patternFlowGtpExtensionExtensionLengthCounter struct { +// ***** FlowRSVPPathObjectsLabelRequestCType ***** +type flowRSVPPathObjectsLabelRequestCType struct { validation - obj *otg.PatternFlowGtpExtensionExtensionLengthCounter + obj *otg.FlowRSVPPathObjectsLabelRequestCType + withoutLabelRangeHolder FlowRSVPPathLabelRequestWithoutLabelRange } -func NewPatternFlowGtpExtensionExtensionLengthCounter() PatternFlowGtpExtensionExtensionLengthCounter { - obj := patternFlowGtpExtensionExtensionLengthCounter{obj: &otg.PatternFlowGtpExtensionExtensionLengthCounter{}} +func NewFlowRSVPPathObjectsLabelRequestCType() FlowRSVPPathObjectsLabelRequestCType { + obj := flowRSVPPathObjectsLabelRequestCType{obj: &otg.FlowRSVPPathObjectsLabelRequestCType{}} obj.setDefault() return &obj } -func (obj *patternFlowGtpExtensionExtensionLengthCounter) Msg() *otg.PatternFlowGtpExtensionExtensionLengthCounter { +func (obj *flowRSVPPathObjectsLabelRequestCType) Msg() *otg.FlowRSVPPathObjectsLabelRequestCType { return obj.obj } -func (obj *patternFlowGtpExtensionExtensionLengthCounter) SetMsg(msg *otg.PatternFlowGtpExtensionExtensionLengthCounter) PatternFlowGtpExtensionExtensionLengthCounter { - +func (obj *flowRSVPPathObjectsLabelRequestCType) SetMsg(msg *otg.FlowRSVPPathObjectsLabelRequestCType) FlowRSVPPathObjectsLabelRequestCType { + obj.setNil() proto.Merge(obj.obj, msg) return obj } -func (obj *patternFlowGtpExtensionExtensionLengthCounter) ToProto() (*otg.PatternFlowGtpExtensionExtensionLengthCounter, error) { +func (obj *flowRSVPPathObjectsLabelRequestCType) ToProto() (*otg.FlowRSVPPathObjectsLabelRequestCType, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -287597,7 +331869,7 @@ func (obj *patternFlowGtpExtensionExtensionLengthCounter) ToProto() (*otg.Patter return obj.Msg(), nil } -func (obj *patternFlowGtpExtensionExtensionLengthCounter) FromProto(msg *otg.PatternFlowGtpExtensionExtensionLengthCounter) (PatternFlowGtpExtensionExtensionLengthCounter, error) { +func (obj *flowRSVPPathObjectsLabelRequestCType) FromProto(msg *otg.FlowRSVPPathObjectsLabelRequestCType) (FlowRSVPPathObjectsLabelRequestCType, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -287606,7 +331878,7 @@ func (obj *patternFlowGtpExtensionExtensionLengthCounter) FromProto(msg *otg.Pat return newObj, nil } -func (obj *patternFlowGtpExtensionExtensionLengthCounter) ToPbText() (string, error) { +func (obj *flowRSVPPathObjectsLabelRequestCType) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -287618,12 +331890,12 @@ func (obj *patternFlowGtpExtensionExtensionLengthCounter) ToPbText() (string, er return string(protoMarshal), nil } -func (obj *patternFlowGtpExtensionExtensionLengthCounter) FromPbText(value string) error { +func (obj *flowRSVPPathObjectsLabelRequestCType) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj } - + obj.setNil() vErr := obj.validateToAndFrom() if vErr != nil { return vErr @@ -287631,7 +331903,7 @@ func (obj *patternFlowGtpExtensionExtensionLengthCounter) FromPbText(value strin return retObj } -func (obj *patternFlowGtpExtensionExtensionLengthCounter) ToYaml() (string, error) { +func (obj *flowRSVPPathObjectsLabelRequestCType) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -287652,7 +331924,7 @@ func (obj *patternFlowGtpExtensionExtensionLengthCounter) ToYaml() (string, erro return string(data), nil } -func (obj *patternFlowGtpExtensionExtensionLengthCounter) FromYaml(value string) error { +func (obj *flowRSVPPathObjectsLabelRequestCType) FromYaml(value string) error { if value == "" { value = "{}" } @@ -287669,7 +331941,7 @@ func (obj *patternFlowGtpExtensionExtensionLengthCounter) FromYaml(value string) return fmt.Errorf("unmarshal error %s", strings.Replace( uError.Error(), "\u00a0", " ", -1)[7:]) } - + obj.setNil() vErr := obj.validateToAndFrom() if vErr != nil { return vErr @@ -287677,7 +331949,7 @@ func (obj *patternFlowGtpExtensionExtensionLengthCounter) FromYaml(value string) return nil } -func (obj *patternFlowGtpExtensionExtensionLengthCounter) ToJson() (string, error) { +func (obj *flowRSVPPathObjectsLabelRequestCType) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -287695,7 +331967,7 @@ func (obj *patternFlowGtpExtensionExtensionLengthCounter) ToJson() (string, erro return string(data), nil } -func (obj *patternFlowGtpExtensionExtensionLengthCounter) FromJson(value string) error { +func (obj *flowRSVPPathObjectsLabelRequestCType) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -287708,7 +331980,7 @@ func (obj *patternFlowGtpExtensionExtensionLengthCounter) FromJson(value string) return fmt.Errorf("unmarshal error %s", strings.Replace( uError.Error(), "\u00a0", " ", -1)[7:]) } - + obj.setNil() err := obj.validateToAndFrom() if err != nil { return err @@ -287716,19 +331988,19 @@ func (obj *patternFlowGtpExtensionExtensionLengthCounter) FromJson(value string) return nil } -func (obj *patternFlowGtpExtensionExtensionLengthCounter) validateToAndFrom() error { +func (obj *flowRSVPPathObjectsLabelRequestCType) validateToAndFrom() error { // emptyVars() obj.validateObj(&obj.validation, true) return obj.validationResult() } -func (obj *patternFlowGtpExtensionExtensionLengthCounter) Validate() error { +func (obj *flowRSVPPathObjectsLabelRequestCType) Validate() error { // emptyVars() obj.validateObj(&obj.validation, false) return obj.validationResult() } -func (obj *patternFlowGtpExtensionExtensionLengthCounter) String() string { +func (obj *flowRSVPPathObjectsLabelRequestCType) String() string { str, err := obj.ToYaml() if err != nil { return err.Error() @@ -287736,12 +332008,12 @@ func (obj *patternFlowGtpExtensionExtensionLengthCounter) String() string { return str } -func (obj *patternFlowGtpExtensionExtensionLengthCounter) Clone() (PatternFlowGtpExtensionExtensionLengthCounter, error) { +func (obj *flowRSVPPathObjectsLabelRequestCType) Clone() (FlowRSVPPathObjectsLabelRequestCType, error) { vErr := obj.Validate() if vErr != nil { return nil, vErr } - newObj := NewPatternFlowGtpExtensionExtensionLengthCounter() + newObj := NewFlowRSVPPathObjectsLabelRequestCType() data, err := proto.Marshal(obj.Msg()) if err != nil { return nil, err @@ -287753,199 +332025,175 @@ func (obj *patternFlowGtpExtensionExtensionLengthCounter) Clone() (PatternFlowGt return newObj, nil } -// PatternFlowGtpExtensionExtensionLengthCounter is integer counter pattern -type PatternFlowGtpExtensionExtensionLengthCounter interface { +func (obj *flowRSVPPathObjectsLabelRequestCType) setNil() { + obj.withoutLabelRangeHolder = nil + obj.validationErrors = nil + obj.warnings = nil + obj.constraints = make(map[string]map[string]Constraints) +} + +// FlowRSVPPathObjectsLabelRequestCType is object for LABEL_REQUEST class. Currently supported c-type is Without Label Range (1). +type FlowRSVPPathObjectsLabelRequestCType interface { Validation - // Msg marshals PatternFlowGtpExtensionExtensionLengthCounter to protobuf object *otg.PatternFlowGtpExtensionExtensionLengthCounter + // Msg marshals FlowRSVPPathObjectsLabelRequestCType to protobuf object *otg.FlowRSVPPathObjectsLabelRequestCType // and doesn't set defaults - Msg() *otg.PatternFlowGtpExtensionExtensionLengthCounter - // SetMsg unmarshals PatternFlowGtpExtensionExtensionLengthCounter from protobuf object *otg.PatternFlowGtpExtensionExtensionLengthCounter + Msg() *otg.FlowRSVPPathObjectsLabelRequestCType + // SetMsg unmarshals FlowRSVPPathObjectsLabelRequestCType from protobuf object *otg.FlowRSVPPathObjectsLabelRequestCType // and doesn't set defaults - SetMsg(*otg.PatternFlowGtpExtensionExtensionLengthCounter) PatternFlowGtpExtensionExtensionLengthCounter - // ToProto marshals PatternFlowGtpExtensionExtensionLengthCounter to protobuf object *otg.PatternFlowGtpExtensionExtensionLengthCounter - ToProto() (*otg.PatternFlowGtpExtensionExtensionLengthCounter, error) - // ToPbText marshals PatternFlowGtpExtensionExtensionLengthCounter to protobuf text + SetMsg(*otg.FlowRSVPPathObjectsLabelRequestCType) FlowRSVPPathObjectsLabelRequestCType + // ToProto marshals FlowRSVPPathObjectsLabelRequestCType to protobuf object *otg.FlowRSVPPathObjectsLabelRequestCType + ToProto() (*otg.FlowRSVPPathObjectsLabelRequestCType, error) + // ToPbText marshals FlowRSVPPathObjectsLabelRequestCType to protobuf text ToPbText() (string, error) - // ToYaml marshals PatternFlowGtpExtensionExtensionLengthCounter to YAML text + // ToYaml marshals FlowRSVPPathObjectsLabelRequestCType to YAML text ToYaml() (string, error) - // ToJson marshals PatternFlowGtpExtensionExtensionLengthCounter to JSON text + // ToJson marshals FlowRSVPPathObjectsLabelRequestCType to JSON text ToJson() (string, error) - // FromProto unmarshals PatternFlowGtpExtensionExtensionLengthCounter from protobuf object *otg.PatternFlowGtpExtensionExtensionLengthCounter - FromProto(msg *otg.PatternFlowGtpExtensionExtensionLengthCounter) (PatternFlowGtpExtensionExtensionLengthCounter, error) - // FromPbText unmarshals PatternFlowGtpExtensionExtensionLengthCounter from protobuf text + // FromProto unmarshals FlowRSVPPathObjectsLabelRequestCType from protobuf object *otg.FlowRSVPPathObjectsLabelRequestCType + FromProto(msg *otg.FlowRSVPPathObjectsLabelRequestCType) (FlowRSVPPathObjectsLabelRequestCType, error) + // FromPbText unmarshals FlowRSVPPathObjectsLabelRequestCType from protobuf text FromPbText(value string) error - // FromYaml unmarshals PatternFlowGtpExtensionExtensionLengthCounter from YAML text + // FromYaml unmarshals FlowRSVPPathObjectsLabelRequestCType from YAML text FromYaml(value string) error - // FromJson unmarshals PatternFlowGtpExtensionExtensionLengthCounter from JSON text + // FromJson unmarshals FlowRSVPPathObjectsLabelRequestCType from JSON text FromJson(value string) error - // Validate validates PatternFlowGtpExtensionExtensionLengthCounter + // Validate validates FlowRSVPPathObjectsLabelRequestCType Validate() error // A stringer function String() string // Clones the object - Clone() (PatternFlowGtpExtensionExtensionLengthCounter, error) + Clone() (FlowRSVPPathObjectsLabelRequestCType, error) validateToAndFrom() error - validateObj(vObj *validation, set_default bool) - setDefault() - // Start returns uint32, set in PatternFlowGtpExtensionExtensionLengthCounter. - Start() uint32 - // SetStart assigns uint32 provided by user to PatternFlowGtpExtensionExtensionLengthCounter - SetStart(value uint32) PatternFlowGtpExtensionExtensionLengthCounter - // HasStart checks if Start has been set in PatternFlowGtpExtensionExtensionLengthCounter - HasStart() bool - // Step returns uint32, set in PatternFlowGtpExtensionExtensionLengthCounter. - Step() uint32 - // SetStep assigns uint32 provided by user to PatternFlowGtpExtensionExtensionLengthCounter - SetStep(value uint32) PatternFlowGtpExtensionExtensionLengthCounter - // HasStep checks if Step has been set in PatternFlowGtpExtensionExtensionLengthCounter - HasStep() bool - // Count returns uint32, set in PatternFlowGtpExtensionExtensionLengthCounter. - Count() uint32 - // SetCount assigns uint32 provided by user to PatternFlowGtpExtensionExtensionLengthCounter - SetCount(value uint32) PatternFlowGtpExtensionExtensionLengthCounter - // HasCount checks if Count has been set in PatternFlowGtpExtensionExtensionLengthCounter - HasCount() bool -} - -// description is TBD -// Start returns a uint32 -func (obj *patternFlowGtpExtensionExtensionLengthCounter) Start() uint32 { - - return *obj.obj.Start - -} - -// description is TBD -// Start returns a uint32 -func (obj *patternFlowGtpExtensionExtensionLengthCounter) HasStart() bool { - return obj.obj.Start != nil -} - -// description is TBD -// SetStart sets the uint32 value in the PatternFlowGtpExtensionExtensionLengthCounter object -func (obj *patternFlowGtpExtensionExtensionLengthCounter) SetStart(value uint32) PatternFlowGtpExtensionExtensionLengthCounter { - - obj.obj.Start = &value - return obj + validateObj(vObj *validation, set_default bool) + setDefault() + // Choice returns FlowRSVPPathObjectsLabelRequestCTypeChoiceEnum, set in FlowRSVPPathObjectsLabelRequestCType + Choice() FlowRSVPPathObjectsLabelRequestCTypeChoiceEnum + // SetChoice assigns FlowRSVPPathObjectsLabelRequestCTypeChoiceEnum provided by user to FlowRSVPPathObjectsLabelRequestCType + SetChoice(value FlowRSVPPathObjectsLabelRequestCTypeChoiceEnum) FlowRSVPPathObjectsLabelRequestCType + // HasChoice checks if Choice has been set in FlowRSVPPathObjectsLabelRequestCType + HasChoice() bool + // WithoutLabelRange returns FlowRSVPPathLabelRequestWithoutLabelRange, set in FlowRSVPPathObjectsLabelRequestCType. + // FlowRSVPPathLabelRequestWithoutLabelRange is class = LABEL_REQUEST, Without Label Range C-Type = 1 + WithoutLabelRange() FlowRSVPPathLabelRequestWithoutLabelRange + // SetWithoutLabelRange assigns FlowRSVPPathLabelRequestWithoutLabelRange provided by user to FlowRSVPPathObjectsLabelRequestCType. + // FlowRSVPPathLabelRequestWithoutLabelRange is class = LABEL_REQUEST, Without Label Range C-Type = 1 + SetWithoutLabelRange(value FlowRSVPPathLabelRequestWithoutLabelRange) FlowRSVPPathObjectsLabelRequestCType + // HasWithoutLabelRange checks if WithoutLabelRange has been set in FlowRSVPPathObjectsLabelRequestCType + HasWithoutLabelRange() bool + setNil() } -// description is TBD -// Step returns a uint32 -func (obj *patternFlowGtpExtensionExtensionLengthCounter) Step() uint32 { +type FlowRSVPPathObjectsLabelRequestCTypeChoiceEnum string - return *obj.obj.Step +// Enum of Choice on FlowRSVPPathObjectsLabelRequestCType +var FlowRSVPPathObjectsLabelRequestCTypeChoice = struct { + WITHOUT_LABEL_RANGE FlowRSVPPathObjectsLabelRequestCTypeChoiceEnum +}{ + WITHOUT_LABEL_RANGE: FlowRSVPPathObjectsLabelRequestCTypeChoiceEnum("without_label_range"), +} +func (obj *flowRSVPPathObjectsLabelRequestCType) Choice() FlowRSVPPathObjectsLabelRequestCTypeChoiceEnum { + return FlowRSVPPathObjectsLabelRequestCTypeChoiceEnum(obj.obj.Choice.Enum().String()) } // description is TBD -// Step returns a uint32 -func (obj *patternFlowGtpExtensionExtensionLengthCounter) HasStep() bool { - return obj.obj.Step != nil +// Choice returns a string +func (obj *flowRSVPPathObjectsLabelRequestCType) HasChoice() bool { + return obj.obj.Choice != nil } -// description is TBD -// SetStep sets the uint32 value in the PatternFlowGtpExtensionExtensionLengthCounter object -func (obj *patternFlowGtpExtensionExtensionLengthCounter) SetStep(value uint32) PatternFlowGtpExtensionExtensionLengthCounter { +func (obj *flowRSVPPathObjectsLabelRequestCType) SetChoice(value FlowRSVPPathObjectsLabelRequestCTypeChoiceEnum) FlowRSVPPathObjectsLabelRequestCType { + intValue, ok := otg.FlowRSVPPathObjectsLabelRequestCType_Choice_Enum_value[string(value)] + if !ok { + obj.validationErrors = append(obj.validationErrors, fmt.Sprintf( + "%s is not a valid choice on FlowRSVPPathObjectsLabelRequestCTypeChoiceEnum", string(value))) + return obj + } + enumValue := otg.FlowRSVPPathObjectsLabelRequestCType_Choice_Enum(intValue) + obj.obj.Choice = &enumValue + obj.obj.WithoutLabelRange = nil + obj.withoutLabelRangeHolder = nil + + if value == FlowRSVPPathObjectsLabelRequestCTypeChoice.WITHOUT_LABEL_RANGE { + obj.obj.WithoutLabelRange = NewFlowRSVPPathLabelRequestWithoutLabelRange().Msg() + } - obj.obj.Step = &value return obj } // description is TBD -// Count returns a uint32 -func (obj *patternFlowGtpExtensionExtensionLengthCounter) Count() uint32 { - - return *obj.obj.Count - +// WithoutLabelRange returns a FlowRSVPPathLabelRequestWithoutLabelRange +func (obj *flowRSVPPathObjectsLabelRequestCType) WithoutLabelRange() FlowRSVPPathLabelRequestWithoutLabelRange { + if obj.obj.WithoutLabelRange == nil { + obj.SetChoice(FlowRSVPPathObjectsLabelRequestCTypeChoice.WITHOUT_LABEL_RANGE) + } + if obj.withoutLabelRangeHolder == nil { + obj.withoutLabelRangeHolder = &flowRSVPPathLabelRequestWithoutLabelRange{obj: obj.obj.WithoutLabelRange} + } + return obj.withoutLabelRangeHolder } // description is TBD -// Count returns a uint32 -func (obj *patternFlowGtpExtensionExtensionLengthCounter) HasCount() bool { - return obj.obj.Count != nil +// WithoutLabelRange returns a FlowRSVPPathLabelRequestWithoutLabelRange +func (obj *flowRSVPPathObjectsLabelRequestCType) HasWithoutLabelRange() bool { + return obj.obj.WithoutLabelRange != nil } // description is TBD -// SetCount sets the uint32 value in the PatternFlowGtpExtensionExtensionLengthCounter object -func (obj *patternFlowGtpExtensionExtensionLengthCounter) SetCount(value uint32) PatternFlowGtpExtensionExtensionLengthCounter { +// SetWithoutLabelRange sets the FlowRSVPPathLabelRequestWithoutLabelRange value in the FlowRSVPPathObjectsLabelRequestCType object +func (obj *flowRSVPPathObjectsLabelRequestCType) SetWithoutLabelRange(value FlowRSVPPathLabelRequestWithoutLabelRange) FlowRSVPPathObjectsLabelRequestCType { + obj.SetChoice(FlowRSVPPathObjectsLabelRequestCTypeChoice.WITHOUT_LABEL_RANGE) + obj.withoutLabelRangeHolder = nil + obj.obj.WithoutLabelRange = value.Msg() - obj.obj.Count = &value return obj } -func (obj *patternFlowGtpExtensionExtensionLengthCounter) validateObj(vObj *validation, set_default bool) { +func (obj *flowRSVPPathObjectsLabelRequestCType) validateObj(vObj *validation, set_default bool) { if set_default { obj.setDefault() } - if obj.obj.Start != nil { - - if *obj.obj.Start > 255 { - vObj.validationErrors = append( - vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowGtpExtensionExtensionLengthCounter.Start <= 255 but Got %d", *obj.obj.Start)) - } - - } - - if obj.obj.Step != nil { - - if *obj.obj.Step > 255 { - vObj.validationErrors = append( - vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowGtpExtensionExtensionLengthCounter.Step <= 255 but Got %d", *obj.obj.Step)) - } - - } - - if obj.obj.Count != nil { - - if *obj.obj.Count > 255 { - vObj.validationErrors = append( - vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowGtpExtensionExtensionLengthCounter.Count <= 255 but Got %d", *obj.obj.Count)) - } + if obj.obj.WithoutLabelRange != nil { + obj.WithoutLabelRange().validateObj(vObj, set_default) } } -func (obj *patternFlowGtpExtensionExtensionLengthCounter) setDefault() { - if obj.obj.Start == nil { - obj.SetStart(0) - } - if obj.obj.Step == nil { - obj.SetStep(1) - } - if obj.obj.Count == nil { - obj.SetCount(1) +func (obj *flowRSVPPathObjectsLabelRequestCType) setDefault() { + if obj.obj.Choice == nil { + obj.SetChoice(FlowRSVPPathObjectsLabelRequestCTypeChoice.WITHOUT_LABEL_RANGE) + } } -// ***** PatternFlowGtpExtensionExtensionLengthMetricTag ***** -type patternFlowGtpExtensionExtensionLengthMetricTag struct { +// ***** FlowRSVPPathObjectsSessionAttributeCType ***** +type flowRSVPPathObjectsSessionAttributeCType struct { validation - obj *otg.PatternFlowGtpExtensionExtensionLengthMetricTag + obj *otg.FlowRSVPPathObjectsSessionAttributeCType + lspTunnelHolder FlowRSVPPathSessionAttributeLspTunnel + lspTunnelRaHolder FlowRSVPPathSessionAttributeLspTunnelRa } -func NewPatternFlowGtpExtensionExtensionLengthMetricTag() PatternFlowGtpExtensionExtensionLengthMetricTag { - obj := patternFlowGtpExtensionExtensionLengthMetricTag{obj: &otg.PatternFlowGtpExtensionExtensionLengthMetricTag{}} +func NewFlowRSVPPathObjectsSessionAttributeCType() FlowRSVPPathObjectsSessionAttributeCType { + obj := flowRSVPPathObjectsSessionAttributeCType{obj: &otg.FlowRSVPPathObjectsSessionAttributeCType{}} obj.setDefault() return &obj } -func (obj *patternFlowGtpExtensionExtensionLengthMetricTag) Msg() *otg.PatternFlowGtpExtensionExtensionLengthMetricTag { +func (obj *flowRSVPPathObjectsSessionAttributeCType) Msg() *otg.FlowRSVPPathObjectsSessionAttributeCType { return obj.obj } -func (obj *patternFlowGtpExtensionExtensionLengthMetricTag) SetMsg(msg *otg.PatternFlowGtpExtensionExtensionLengthMetricTag) PatternFlowGtpExtensionExtensionLengthMetricTag { - +func (obj *flowRSVPPathObjectsSessionAttributeCType) SetMsg(msg *otg.FlowRSVPPathObjectsSessionAttributeCType) FlowRSVPPathObjectsSessionAttributeCType { + obj.setNil() proto.Merge(obj.obj, msg) return obj } -func (obj *patternFlowGtpExtensionExtensionLengthMetricTag) ToProto() (*otg.PatternFlowGtpExtensionExtensionLengthMetricTag, error) { +func (obj *flowRSVPPathObjectsSessionAttributeCType) ToProto() (*otg.FlowRSVPPathObjectsSessionAttributeCType, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -287953,7 +332201,7 @@ func (obj *patternFlowGtpExtensionExtensionLengthMetricTag) ToProto() (*otg.Patt return obj.Msg(), nil } -func (obj *patternFlowGtpExtensionExtensionLengthMetricTag) FromProto(msg *otg.PatternFlowGtpExtensionExtensionLengthMetricTag) (PatternFlowGtpExtensionExtensionLengthMetricTag, error) { +func (obj *flowRSVPPathObjectsSessionAttributeCType) FromProto(msg *otg.FlowRSVPPathObjectsSessionAttributeCType) (FlowRSVPPathObjectsSessionAttributeCType, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -287962,7 +332210,7 @@ func (obj *patternFlowGtpExtensionExtensionLengthMetricTag) FromProto(msg *otg.P return newObj, nil } -func (obj *patternFlowGtpExtensionExtensionLengthMetricTag) ToPbText() (string, error) { +func (obj *flowRSVPPathObjectsSessionAttributeCType) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -287974,12 +332222,12 @@ func (obj *patternFlowGtpExtensionExtensionLengthMetricTag) ToPbText() (string, return string(protoMarshal), nil } -func (obj *patternFlowGtpExtensionExtensionLengthMetricTag) FromPbText(value string) error { +func (obj *flowRSVPPathObjectsSessionAttributeCType) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj } - + obj.setNil() vErr := obj.validateToAndFrom() if vErr != nil { return vErr @@ -287987,7 +332235,7 @@ func (obj *patternFlowGtpExtensionExtensionLengthMetricTag) FromPbText(value str return retObj } -func (obj *patternFlowGtpExtensionExtensionLengthMetricTag) ToYaml() (string, error) { +func (obj *flowRSVPPathObjectsSessionAttributeCType) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -288008,7 +332256,7 @@ func (obj *patternFlowGtpExtensionExtensionLengthMetricTag) ToYaml() (string, er return string(data), nil } -func (obj *patternFlowGtpExtensionExtensionLengthMetricTag) FromYaml(value string) error { +func (obj *flowRSVPPathObjectsSessionAttributeCType) FromYaml(value string) error { if value == "" { value = "{}" } @@ -288025,7 +332273,7 @@ func (obj *patternFlowGtpExtensionExtensionLengthMetricTag) FromYaml(value strin return fmt.Errorf("unmarshal error %s", strings.Replace( uError.Error(), "\u00a0", " ", -1)[7:]) } - + obj.setNil() vErr := obj.validateToAndFrom() if vErr != nil { return vErr @@ -288033,7 +332281,7 @@ func (obj *patternFlowGtpExtensionExtensionLengthMetricTag) FromYaml(value strin return nil } -func (obj *patternFlowGtpExtensionExtensionLengthMetricTag) ToJson() (string, error) { +func (obj *flowRSVPPathObjectsSessionAttributeCType) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -288051,7 +332299,7 @@ func (obj *patternFlowGtpExtensionExtensionLengthMetricTag) ToJson() (string, er return string(data), nil } -func (obj *patternFlowGtpExtensionExtensionLengthMetricTag) FromJson(value string) error { +func (obj *flowRSVPPathObjectsSessionAttributeCType) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -288064,7 +332312,7 @@ func (obj *patternFlowGtpExtensionExtensionLengthMetricTag) FromJson(value strin return fmt.Errorf("unmarshal error %s", strings.Replace( uError.Error(), "\u00a0", " ", -1)[7:]) } - + obj.setNil() err := obj.validateToAndFrom() if err != nil { return err @@ -288072,19 +332320,19 @@ func (obj *patternFlowGtpExtensionExtensionLengthMetricTag) FromJson(value strin return nil } -func (obj *patternFlowGtpExtensionExtensionLengthMetricTag) validateToAndFrom() error { +func (obj *flowRSVPPathObjectsSessionAttributeCType) validateToAndFrom() error { // emptyVars() obj.validateObj(&obj.validation, true) return obj.validationResult() } -func (obj *patternFlowGtpExtensionExtensionLengthMetricTag) Validate() error { +func (obj *flowRSVPPathObjectsSessionAttributeCType) Validate() error { // emptyVars() obj.validateObj(&obj.validation, false) return obj.validationResult() } -func (obj *patternFlowGtpExtensionExtensionLengthMetricTag) String() string { +func (obj *flowRSVPPathObjectsSessionAttributeCType) String() string { str, err := obj.ToYaml() if err != nil { return err.Error() @@ -288092,12 +332340,12 @@ func (obj *patternFlowGtpExtensionExtensionLengthMetricTag) String() string { return str } -func (obj *patternFlowGtpExtensionExtensionLengthMetricTag) Clone() (PatternFlowGtpExtensionExtensionLengthMetricTag, error) { +func (obj *flowRSVPPathObjectsSessionAttributeCType) Clone() (FlowRSVPPathObjectsSessionAttributeCType, error) { vErr := obj.Validate() if vErr != nil { return nil, vErr } - newObj := NewPatternFlowGtpExtensionExtensionLengthMetricTag() + newObj := NewFlowRSVPPathObjectsSessionAttributeCType() data, err := proto.Marshal(obj.Msg()) if err != nil { return nil, err @@ -288109,183 +332357,224 @@ func (obj *patternFlowGtpExtensionExtensionLengthMetricTag) Clone() (PatternFlow return newObj, nil } -// PatternFlowGtpExtensionExtensionLengthMetricTag is metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. -type PatternFlowGtpExtensionExtensionLengthMetricTag interface { +func (obj *flowRSVPPathObjectsSessionAttributeCType) setNil() { + obj.lspTunnelHolder = nil + obj.lspTunnelRaHolder = nil + obj.validationErrors = nil + obj.warnings = nil + obj.constraints = make(map[string]map[string]Constraints) +} + +// FlowRSVPPathObjectsSessionAttributeCType is object for SESSION_ATTRIBUTE class. Currently supported c-type is LSP_Tunnel (1) and LSP_Tunnel (7). +type FlowRSVPPathObjectsSessionAttributeCType interface { Validation - // Msg marshals PatternFlowGtpExtensionExtensionLengthMetricTag to protobuf object *otg.PatternFlowGtpExtensionExtensionLengthMetricTag + // Msg marshals FlowRSVPPathObjectsSessionAttributeCType to protobuf object *otg.FlowRSVPPathObjectsSessionAttributeCType // and doesn't set defaults - Msg() *otg.PatternFlowGtpExtensionExtensionLengthMetricTag - // SetMsg unmarshals PatternFlowGtpExtensionExtensionLengthMetricTag from protobuf object *otg.PatternFlowGtpExtensionExtensionLengthMetricTag + Msg() *otg.FlowRSVPPathObjectsSessionAttributeCType + // SetMsg unmarshals FlowRSVPPathObjectsSessionAttributeCType from protobuf object *otg.FlowRSVPPathObjectsSessionAttributeCType // and doesn't set defaults - SetMsg(*otg.PatternFlowGtpExtensionExtensionLengthMetricTag) PatternFlowGtpExtensionExtensionLengthMetricTag - // ToProto marshals PatternFlowGtpExtensionExtensionLengthMetricTag to protobuf object *otg.PatternFlowGtpExtensionExtensionLengthMetricTag - ToProto() (*otg.PatternFlowGtpExtensionExtensionLengthMetricTag, error) - // ToPbText marshals PatternFlowGtpExtensionExtensionLengthMetricTag to protobuf text + SetMsg(*otg.FlowRSVPPathObjectsSessionAttributeCType) FlowRSVPPathObjectsSessionAttributeCType + // ToProto marshals FlowRSVPPathObjectsSessionAttributeCType to protobuf object *otg.FlowRSVPPathObjectsSessionAttributeCType + ToProto() (*otg.FlowRSVPPathObjectsSessionAttributeCType, error) + // ToPbText marshals FlowRSVPPathObjectsSessionAttributeCType to protobuf text ToPbText() (string, error) - // ToYaml marshals PatternFlowGtpExtensionExtensionLengthMetricTag to YAML text + // ToYaml marshals FlowRSVPPathObjectsSessionAttributeCType to YAML text ToYaml() (string, error) - // ToJson marshals PatternFlowGtpExtensionExtensionLengthMetricTag to JSON text + // ToJson marshals FlowRSVPPathObjectsSessionAttributeCType to JSON text ToJson() (string, error) - // FromProto unmarshals PatternFlowGtpExtensionExtensionLengthMetricTag from protobuf object *otg.PatternFlowGtpExtensionExtensionLengthMetricTag - FromProto(msg *otg.PatternFlowGtpExtensionExtensionLengthMetricTag) (PatternFlowGtpExtensionExtensionLengthMetricTag, error) - // FromPbText unmarshals PatternFlowGtpExtensionExtensionLengthMetricTag from protobuf text + // FromProto unmarshals FlowRSVPPathObjectsSessionAttributeCType from protobuf object *otg.FlowRSVPPathObjectsSessionAttributeCType + FromProto(msg *otg.FlowRSVPPathObjectsSessionAttributeCType) (FlowRSVPPathObjectsSessionAttributeCType, error) + // FromPbText unmarshals FlowRSVPPathObjectsSessionAttributeCType from protobuf text FromPbText(value string) error - // FromYaml unmarshals PatternFlowGtpExtensionExtensionLengthMetricTag from YAML text + // FromYaml unmarshals FlowRSVPPathObjectsSessionAttributeCType from YAML text FromYaml(value string) error - // FromJson unmarshals PatternFlowGtpExtensionExtensionLengthMetricTag from JSON text + // FromJson unmarshals FlowRSVPPathObjectsSessionAttributeCType from JSON text FromJson(value string) error - // Validate validates PatternFlowGtpExtensionExtensionLengthMetricTag + // Validate validates FlowRSVPPathObjectsSessionAttributeCType Validate() error // A stringer function String() string // Clones the object - Clone() (PatternFlowGtpExtensionExtensionLengthMetricTag, error) + Clone() (FlowRSVPPathObjectsSessionAttributeCType, error) validateToAndFrom() error validateObj(vObj *validation, set_default bool) setDefault() - // Name returns string, set in PatternFlowGtpExtensionExtensionLengthMetricTag. - Name() string - // SetName assigns string provided by user to PatternFlowGtpExtensionExtensionLengthMetricTag - SetName(value string) PatternFlowGtpExtensionExtensionLengthMetricTag - // Offset returns uint32, set in PatternFlowGtpExtensionExtensionLengthMetricTag. - Offset() uint32 - // SetOffset assigns uint32 provided by user to PatternFlowGtpExtensionExtensionLengthMetricTag - SetOffset(value uint32) PatternFlowGtpExtensionExtensionLengthMetricTag - // HasOffset checks if Offset has been set in PatternFlowGtpExtensionExtensionLengthMetricTag - HasOffset() bool - // Length returns uint32, set in PatternFlowGtpExtensionExtensionLengthMetricTag. - Length() uint32 - // SetLength assigns uint32 provided by user to PatternFlowGtpExtensionExtensionLengthMetricTag - SetLength(value uint32) PatternFlowGtpExtensionExtensionLengthMetricTag - // HasLength checks if Length has been set in PatternFlowGtpExtensionExtensionLengthMetricTag - HasLength() bool + // Choice returns FlowRSVPPathObjectsSessionAttributeCTypeChoiceEnum, set in FlowRSVPPathObjectsSessionAttributeCType + Choice() FlowRSVPPathObjectsSessionAttributeCTypeChoiceEnum + // SetChoice assigns FlowRSVPPathObjectsSessionAttributeCTypeChoiceEnum provided by user to FlowRSVPPathObjectsSessionAttributeCType + SetChoice(value FlowRSVPPathObjectsSessionAttributeCTypeChoiceEnum) FlowRSVPPathObjectsSessionAttributeCType + // HasChoice checks if Choice has been set in FlowRSVPPathObjectsSessionAttributeCType + HasChoice() bool + // LspTunnel returns FlowRSVPPathSessionAttributeLspTunnel, set in FlowRSVPPathObjectsSessionAttributeCType. + // FlowRSVPPathSessionAttributeLspTunnel is sESSION_ATTRIBUTE class = 207, LSP_TUNNEL_RA C-Type = 7, resource affinity information. + LspTunnel() FlowRSVPPathSessionAttributeLspTunnel + // SetLspTunnel assigns FlowRSVPPathSessionAttributeLspTunnel provided by user to FlowRSVPPathObjectsSessionAttributeCType. + // FlowRSVPPathSessionAttributeLspTunnel is sESSION_ATTRIBUTE class = 207, LSP_TUNNEL_RA C-Type = 7, resource affinity information. + SetLspTunnel(value FlowRSVPPathSessionAttributeLspTunnel) FlowRSVPPathObjectsSessionAttributeCType + // HasLspTunnel checks if LspTunnel has been set in FlowRSVPPathObjectsSessionAttributeCType + HasLspTunnel() bool + // LspTunnelRa returns FlowRSVPPathSessionAttributeLspTunnelRa, set in FlowRSVPPathObjectsSessionAttributeCType. + // FlowRSVPPathSessionAttributeLspTunnelRa is sESSION_ATTRIBUTE class = 207, LSP_TUNNEL_RA C-Type = 1, it carries resource affinity information. + LspTunnelRa() FlowRSVPPathSessionAttributeLspTunnelRa + // SetLspTunnelRa assigns FlowRSVPPathSessionAttributeLspTunnelRa provided by user to FlowRSVPPathObjectsSessionAttributeCType. + // FlowRSVPPathSessionAttributeLspTunnelRa is sESSION_ATTRIBUTE class = 207, LSP_TUNNEL_RA C-Type = 1, it carries resource affinity information. + SetLspTunnelRa(value FlowRSVPPathSessionAttributeLspTunnelRa) FlowRSVPPathObjectsSessionAttributeCType + // HasLspTunnelRa checks if LspTunnelRa has been set in FlowRSVPPathObjectsSessionAttributeCType + HasLspTunnelRa() bool + setNil() } -// Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field -// Name returns a string -func (obj *patternFlowGtpExtensionExtensionLengthMetricTag) Name() string { - - return *obj.obj.Name +type FlowRSVPPathObjectsSessionAttributeCTypeChoiceEnum string +// Enum of Choice on FlowRSVPPathObjectsSessionAttributeCType +var FlowRSVPPathObjectsSessionAttributeCTypeChoice = struct { + LSP_TUNNEL FlowRSVPPathObjectsSessionAttributeCTypeChoiceEnum + LSP_TUNNEL_RA FlowRSVPPathObjectsSessionAttributeCTypeChoiceEnum +}{ + LSP_TUNNEL: FlowRSVPPathObjectsSessionAttributeCTypeChoiceEnum("lsp_tunnel"), + LSP_TUNNEL_RA: FlowRSVPPathObjectsSessionAttributeCTypeChoiceEnum("lsp_tunnel_ra"), } -// Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field -// SetName sets the string value in the PatternFlowGtpExtensionExtensionLengthMetricTag object -func (obj *patternFlowGtpExtensionExtensionLengthMetricTag) SetName(value string) PatternFlowGtpExtensionExtensionLengthMetricTag { +func (obj *flowRSVPPathObjectsSessionAttributeCType) Choice() FlowRSVPPathObjectsSessionAttributeCTypeChoiceEnum { + return FlowRSVPPathObjectsSessionAttributeCTypeChoiceEnum(obj.obj.Choice.Enum().String()) +} - obj.obj.Name = &value - return obj +// description is TBD +// Choice returns a string +func (obj *flowRSVPPathObjectsSessionAttributeCType) HasChoice() bool { + return obj.obj.Choice != nil } -// Offset in bits relative to start of corresponding header field -// Offset returns a uint32 -func (obj *patternFlowGtpExtensionExtensionLengthMetricTag) Offset() uint32 { +func (obj *flowRSVPPathObjectsSessionAttributeCType) SetChoice(value FlowRSVPPathObjectsSessionAttributeCTypeChoiceEnum) FlowRSVPPathObjectsSessionAttributeCType { + intValue, ok := otg.FlowRSVPPathObjectsSessionAttributeCType_Choice_Enum_value[string(value)] + if !ok { + obj.validationErrors = append(obj.validationErrors, fmt.Sprintf( + "%s is not a valid choice on FlowRSVPPathObjectsSessionAttributeCTypeChoiceEnum", string(value))) + return obj + } + enumValue := otg.FlowRSVPPathObjectsSessionAttributeCType_Choice_Enum(intValue) + obj.obj.Choice = &enumValue + obj.obj.LspTunnelRa = nil + obj.lspTunnelRaHolder = nil + obj.obj.LspTunnel = nil + obj.lspTunnelHolder = nil - return *obj.obj.Offset + if value == FlowRSVPPathObjectsSessionAttributeCTypeChoice.LSP_TUNNEL { + obj.obj.LspTunnel = NewFlowRSVPPathSessionAttributeLspTunnel().Msg() + } -} + if value == FlowRSVPPathObjectsSessionAttributeCTypeChoice.LSP_TUNNEL_RA { + obj.obj.LspTunnelRa = NewFlowRSVPPathSessionAttributeLspTunnelRa().Msg() + } -// Offset in bits relative to start of corresponding header field -// Offset returns a uint32 -func (obj *patternFlowGtpExtensionExtensionLengthMetricTag) HasOffset() bool { - return obj.obj.Offset != nil + return obj } -// Offset in bits relative to start of corresponding header field -// SetOffset sets the uint32 value in the PatternFlowGtpExtensionExtensionLengthMetricTag object -func (obj *patternFlowGtpExtensionExtensionLengthMetricTag) SetOffset(value uint32) PatternFlowGtpExtensionExtensionLengthMetricTag { +// description is TBD +// LspTunnel returns a FlowRSVPPathSessionAttributeLspTunnel +func (obj *flowRSVPPathObjectsSessionAttributeCType) LspTunnel() FlowRSVPPathSessionAttributeLspTunnel { + if obj.obj.LspTunnel == nil { + obj.SetChoice(FlowRSVPPathObjectsSessionAttributeCTypeChoice.LSP_TUNNEL) + } + if obj.lspTunnelHolder == nil { + obj.lspTunnelHolder = &flowRSVPPathSessionAttributeLspTunnel{obj: obj.obj.LspTunnel} + } + return obj.lspTunnelHolder +} - obj.obj.Offset = &value - return obj +// description is TBD +// LspTunnel returns a FlowRSVPPathSessionAttributeLspTunnel +func (obj *flowRSVPPathObjectsSessionAttributeCType) HasLspTunnel() bool { + return obj.obj.LspTunnel != nil } -// Number of bits to track for metrics starting from configured offset of corresponding header field -// Length returns a uint32 -func (obj *patternFlowGtpExtensionExtensionLengthMetricTag) Length() uint32 { +// description is TBD +// SetLspTunnel sets the FlowRSVPPathSessionAttributeLspTunnel value in the FlowRSVPPathObjectsSessionAttributeCType object +func (obj *flowRSVPPathObjectsSessionAttributeCType) SetLspTunnel(value FlowRSVPPathSessionAttributeLspTunnel) FlowRSVPPathObjectsSessionAttributeCType { + obj.SetChoice(FlowRSVPPathObjectsSessionAttributeCTypeChoice.LSP_TUNNEL) + obj.lspTunnelHolder = nil + obj.obj.LspTunnel = value.Msg() - return *obj.obj.Length + return obj +} +// description is TBD +// LspTunnelRa returns a FlowRSVPPathSessionAttributeLspTunnelRa +func (obj *flowRSVPPathObjectsSessionAttributeCType) LspTunnelRa() FlowRSVPPathSessionAttributeLspTunnelRa { + if obj.obj.LspTunnelRa == nil { + obj.SetChoice(FlowRSVPPathObjectsSessionAttributeCTypeChoice.LSP_TUNNEL_RA) + } + if obj.lspTunnelRaHolder == nil { + obj.lspTunnelRaHolder = &flowRSVPPathSessionAttributeLspTunnelRa{obj: obj.obj.LspTunnelRa} + } + return obj.lspTunnelRaHolder } -// Number of bits to track for metrics starting from configured offset of corresponding header field -// Length returns a uint32 -func (obj *patternFlowGtpExtensionExtensionLengthMetricTag) HasLength() bool { - return obj.obj.Length != nil +// description is TBD +// LspTunnelRa returns a FlowRSVPPathSessionAttributeLspTunnelRa +func (obj *flowRSVPPathObjectsSessionAttributeCType) HasLspTunnelRa() bool { + return obj.obj.LspTunnelRa != nil } -// Number of bits to track for metrics starting from configured offset of corresponding header field -// SetLength sets the uint32 value in the PatternFlowGtpExtensionExtensionLengthMetricTag object -func (obj *patternFlowGtpExtensionExtensionLengthMetricTag) SetLength(value uint32) PatternFlowGtpExtensionExtensionLengthMetricTag { +// description is TBD +// SetLspTunnelRa sets the FlowRSVPPathSessionAttributeLspTunnelRa value in the FlowRSVPPathObjectsSessionAttributeCType object +func (obj *flowRSVPPathObjectsSessionAttributeCType) SetLspTunnelRa(value FlowRSVPPathSessionAttributeLspTunnelRa) FlowRSVPPathObjectsSessionAttributeCType { + obj.SetChoice(FlowRSVPPathObjectsSessionAttributeCTypeChoice.LSP_TUNNEL_RA) + obj.lspTunnelRaHolder = nil + obj.obj.LspTunnelRa = value.Msg() - obj.obj.Length = &value return obj } -func (obj *patternFlowGtpExtensionExtensionLengthMetricTag) validateObj(vObj *validation, set_default bool) { +func (obj *flowRSVPPathObjectsSessionAttributeCType) validateObj(vObj *validation, set_default bool) { if set_default { obj.setDefault() } - // Name is required - if obj.obj.Name == nil { - vObj.validationErrors = append(vObj.validationErrors, "Name is required field on interface PatternFlowGtpExtensionExtensionLengthMetricTag") - } - - if obj.obj.Offset != nil { - - if *obj.obj.Offset > 7 { - vObj.validationErrors = append( - vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowGtpExtensionExtensionLengthMetricTag.Offset <= 7 but Got %d", *obj.obj.Offset)) - } + if obj.obj.LspTunnel != nil { + obj.LspTunnel().validateObj(vObj, set_default) } - if obj.obj.Length != nil { - - if *obj.obj.Length < 1 || *obj.obj.Length > 8 { - vObj.validationErrors = append( - vObj.validationErrors, - fmt.Sprintf("1 <= PatternFlowGtpExtensionExtensionLengthMetricTag.Length <= 8 but Got %d", *obj.obj.Length)) - } + if obj.obj.LspTunnelRa != nil { + obj.LspTunnelRa().validateObj(vObj, set_default) } } -func (obj *patternFlowGtpExtensionExtensionLengthMetricTag) setDefault() { - if obj.obj.Offset == nil { - obj.SetOffset(0) - } - if obj.obj.Length == nil { - obj.SetLength(8) +func (obj *flowRSVPPathObjectsSessionAttributeCType) setDefault() { + if obj.obj.Choice == nil { + obj.SetChoice(FlowRSVPPathObjectsSessionAttributeCTypeChoice.LSP_TUNNEL) + } } -// ***** PatternFlowGtpExtensionContentsCounter ***** -type patternFlowGtpExtensionContentsCounter struct { +// ***** FlowRSVPPathObjectsSenderTemplateCType ***** +type flowRSVPPathObjectsSenderTemplateCType struct { validation - obj *otg.PatternFlowGtpExtensionContentsCounter + obj *otg.FlowRSVPPathObjectsSenderTemplateCType + lspTunnelIpv4Holder FlowRSVPPathSenderTemplateLspTunnelIpv4 } -func NewPatternFlowGtpExtensionContentsCounter() PatternFlowGtpExtensionContentsCounter { - obj := patternFlowGtpExtensionContentsCounter{obj: &otg.PatternFlowGtpExtensionContentsCounter{}} +func NewFlowRSVPPathObjectsSenderTemplateCType() FlowRSVPPathObjectsSenderTemplateCType { + obj := flowRSVPPathObjectsSenderTemplateCType{obj: &otg.FlowRSVPPathObjectsSenderTemplateCType{}} obj.setDefault() return &obj } -func (obj *patternFlowGtpExtensionContentsCounter) Msg() *otg.PatternFlowGtpExtensionContentsCounter { +func (obj *flowRSVPPathObjectsSenderTemplateCType) Msg() *otg.FlowRSVPPathObjectsSenderTemplateCType { return obj.obj } -func (obj *patternFlowGtpExtensionContentsCounter) SetMsg(msg *otg.PatternFlowGtpExtensionContentsCounter) PatternFlowGtpExtensionContentsCounter { - +func (obj *flowRSVPPathObjectsSenderTemplateCType) SetMsg(msg *otg.FlowRSVPPathObjectsSenderTemplateCType) FlowRSVPPathObjectsSenderTemplateCType { + obj.setNil() proto.Merge(obj.obj, msg) return obj } -func (obj *patternFlowGtpExtensionContentsCounter) ToProto() (*otg.PatternFlowGtpExtensionContentsCounter, error) { +func (obj *flowRSVPPathObjectsSenderTemplateCType) ToProto() (*otg.FlowRSVPPathObjectsSenderTemplateCType, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -288293,7 +332582,7 @@ func (obj *patternFlowGtpExtensionContentsCounter) ToProto() (*otg.PatternFlowGt return obj.Msg(), nil } -func (obj *patternFlowGtpExtensionContentsCounter) FromProto(msg *otg.PatternFlowGtpExtensionContentsCounter) (PatternFlowGtpExtensionContentsCounter, error) { +func (obj *flowRSVPPathObjectsSenderTemplateCType) FromProto(msg *otg.FlowRSVPPathObjectsSenderTemplateCType) (FlowRSVPPathObjectsSenderTemplateCType, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -288302,7 +332591,7 @@ func (obj *patternFlowGtpExtensionContentsCounter) FromProto(msg *otg.PatternFlo return newObj, nil } -func (obj *patternFlowGtpExtensionContentsCounter) ToPbText() (string, error) { +func (obj *flowRSVPPathObjectsSenderTemplateCType) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -288314,12 +332603,12 @@ func (obj *patternFlowGtpExtensionContentsCounter) ToPbText() (string, error) { return string(protoMarshal), nil } -func (obj *patternFlowGtpExtensionContentsCounter) FromPbText(value string) error { +func (obj *flowRSVPPathObjectsSenderTemplateCType) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj } - + obj.setNil() vErr := obj.validateToAndFrom() if vErr != nil { return vErr @@ -288327,7 +332616,7 @@ func (obj *patternFlowGtpExtensionContentsCounter) FromPbText(value string) erro return retObj } -func (obj *patternFlowGtpExtensionContentsCounter) ToYaml() (string, error) { +func (obj *flowRSVPPathObjectsSenderTemplateCType) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -288348,7 +332637,7 @@ func (obj *patternFlowGtpExtensionContentsCounter) ToYaml() (string, error) { return string(data), nil } -func (obj *patternFlowGtpExtensionContentsCounter) FromYaml(value string) error { +func (obj *flowRSVPPathObjectsSenderTemplateCType) FromYaml(value string) error { if value == "" { value = "{}" } @@ -288365,7 +332654,7 @@ func (obj *patternFlowGtpExtensionContentsCounter) FromYaml(value string) error return fmt.Errorf("unmarshal error %s", strings.Replace( uError.Error(), "\u00a0", " ", -1)[7:]) } - + obj.setNil() vErr := obj.validateToAndFrom() if vErr != nil { return vErr @@ -288373,7 +332662,7 @@ func (obj *patternFlowGtpExtensionContentsCounter) FromYaml(value string) error return nil } -func (obj *patternFlowGtpExtensionContentsCounter) ToJson() (string, error) { +func (obj *flowRSVPPathObjectsSenderTemplateCType) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -288391,7 +332680,7 @@ func (obj *patternFlowGtpExtensionContentsCounter) ToJson() (string, error) { return string(data), nil } -func (obj *patternFlowGtpExtensionContentsCounter) FromJson(value string) error { +func (obj *flowRSVPPathObjectsSenderTemplateCType) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -288404,7 +332693,7 @@ func (obj *patternFlowGtpExtensionContentsCounter) FromJson(value string) error return fmt.Errorf("unmarshal error %s", strings.Replace( uError.Error(), "\u00a0", " ", -1)[7:]) } - + obj.setNil() err := obj.validateToAndFrom() if err != nil { return err @@ -288412,19 +332701,19 @@ func (obj *patternFlowGtpExtensionContentsCounter) FromJson(value string) error return nil } -func (obj *patternFlowGtpExtensionContentsCounter) validateToAndFrom() error { +func (obj *flowRSVPPathObjectsSenderTemplateCType) validateToAndFrom() error { // emptyVars() obj.validateObj(&obj.validation, true) return obj.validationResult() } -func (obj *patternFlowGtpExtensionContentsCounter) Validate() error { +func (obj *flowRSVPPathObjectsSenderTemplateCType) Validate() error { // emptyVars() obj.validateObj(&obj.validation, false) return obj.validationResult() } -func (obj *patternFlowGtpExtensionContentsCounter) String() string { +func (obj *flowRSVPPathObjectsSenderTemplateCType) String() string { str, err := obj.ToYaml() if err != nil { return err.Error() @@ -288432,12 +332721,12 @@ func (obj *patternFlowGtpExtensionContentsCounter) String() string { return str } -func (obj *patternFlowGtpExtensionContentsCounter) Clone() (PatternFlowGtpExtensionContentsCounter, error) { +func (obj *flowRSVPPathObjectsSenderTemplateCType) Clone() (FlowRSVPPathObjectsSenderTemplateCType, error) { vErr := obj.Validate() if vErr != nil { return nil, vErr } - newObj := NewPatternFlowGtpExtensionContentsCounter() + newObj := NewFlowRSVPPathObjectsSenderTemplateCType() data, err := proto.Marshal(obj.Msg()) if err != nil { return nil, err @@ -288449,199 +332738,174 @@ func (obj *patternFlowGtpExtensionContentsCounter) Clone() (PatternFlowGtpExtens return newObj, nil } -// PatternFlowGtpExtensionContentsCounter is integer counter pattern -type PatternFlowGtpExtensionContentsCounter interface { +func (obj *flowRSVPPathObjectsSenderTemplateCType) setNil() { + obj.lspTunnelIpv4Holder = nil + obj.validationErrors = nil + obj.warnings = nil + obj.constraints = make(map[string]map[string]Constraints) +} + +// FlowRSVPPathObjectsSenderTemplateCType is object for SENDER_TEMPLATE class. Currently supported c-type is LSP Tunnel IPv4 (7). +type FlowRSVPPathObjectsSenderTemplateCType interface { Validation - // Msg marshals PatternFlowGtpExtensionContentsCounter to protobuf object *otg.PatternFlowGtpExtensionContentsCounter + // Msg marshals FlowRSVPPathObjectsSenderTemplateCType to protobuf object *otg.FlowRSVPPathObjectsSenderTemplateCType // and doesn't set defaults - Msg() *otg.PatternFlowGtpExtensionContentsCounter - // SetMsg unmarshals PatternFlowGtpExtensionContentsCounter from protobuf object *otg.PatternFlowGtpExtensionContentsCounter + Msg() *otg.FlowRSVPPathObjectsSenderTemplateCType + // SetMsg unmarshals FlowRSVPPathObjectsSenderTemplateCType from protobuf object *otg.FlowRSVPPathObjectsSenderTemplateCType // and doesn't set defaults - SetMsg(*otg.PatternFlowGtpExtensionContentsCounter) PatternFlowGtpExtensionContentsCounter - // ToProto marshals PatternFlowGtpExtensionContentsCounter to protobuf object *otg.PatternFlowGtpExtensionContentsCounter - ToProto() (*otg.PatternFlowGtpExtensionContentsCounter, error) - // ToPbText marshals PatternFlowGtpExtensionContentsCounter to protobuf text + SetMsg(*otg.FlowRSVPPathObjectsSenderTemplateCType) FlowRSVPPathObjectsSenderTemplateCType + // ToProto marshals FlowRSVPPathObjectsSenderTemplateCType to protobuf object *otg.FlowRSVPPathObjectsSenderTemplateCType + ToProto() (*otg.FlowRSVPPathObjectsSenderTemplateCType, error) + // ToPbText marshals FlowRSVPPathObjectsSenderTemplateCType to protobuf text ToPbText() (string, error) - // ToYaml marshals PatternFlowGtpExtensionContentsCounter to YAML text + // ToYaml marshals FlowRSVPPathObjectsSenderTemplateCType to YAML text ToYaml() (string, error) - // ToJson marshals PatternFlowGtpExtensionContentsCounter to JSON text + // ToJson marshals FlowRSVPPathObjectsSenderTemplateCType to JSON text ToJson() (string, error) - // FromProto unmarshals PatternFlowGtpExtensionContentsCounter from protobuf object *otg.PatternFlowGtpExtensionContentsCounter - FromProto(msg *otg.PatternFlowGtpExtensionContentsCounter) (PatternFlowGtpExtensionContentsCounter, error) - // FromPbText unmarshals PatternFlowGtpExtensionContentsCounter from protobuf text + // FromProto unmarshals FlowRSVPPathObjectsSenderTemplateCType from protobuf object *otg.FlowRSVPPathObjectsSenderTemplateCType + FromProto(msg *otg.FlowRSVPPathObjectsSenderTemplateCType) (FlowRSVPPathObjectsSenderTemplateCType, error) + // FromPbText unmarshals FlowRSVPPathObjectsSenderTemplateCType from protobuf text FromPbText(value string) error - // FromYaml unmarshals PatternFlowGtpExtensionContentsCounter from YAML text + // FromYaml unmarshals FlowRSVPPathObjectsSenderTemplateCType from YAML text FromYaml(value string) error - // FromJson unmarshals PatternFlowGtpExtensionContentsCounter from JSON text + // FromJson unmarshals FlowRSVPPathObjectsSenderTemplateCType from JSON text FromJson(value string) error - // Validate validates PatternFlowGtpExtensionContentsCounter + // Validate validates FlowRSVPPathObjectsSenderTemplateCType Validate() error // A stringer function String() string // Clones the object - Clone() (PatternFlowGtpExtensionContentsCounter, error) + Clone() (FlowRSVPPathObjectsSenderTemplateCType, error) validateToAndFrom() error validateObj(vObj *validation, set_default bool) setDefault() - // Start returns uint64, set in PatternFlowGtpExtensionContentsCounter. - Start() uint64 - // SetStart assigns uint64 provided by user to PatternFlowGtpExtensionContentsCounter - SetStart(value uint64) PatternFlowGtpExtensionContentsCounter - // HasStart checks if Start has been set in PatternFlowGtpExtensionContentsCounter - HasStart() bool - // Step returns uint64, set in PatternFlowGtpExtensionContentsCounter. - Step() uint64 - // SetStep assigns uint64 provided by user to PatternFlowGtpExtensionContentsCounter - SetStep(value uint64) PatternFlowGtpExtensionContentsCounter - // HasStep checks if Step has been set in PatternFlowGtpExtensionContentsCounter - HasStep() bool - // Count returns uint64, set in PatternFlowGtpExtensionContentsCounter. - Count() uint64 - // SetCount assigns uint64 provided by user to PatternFlowGtpExtensionContentsCounter - SetCount(value uint64) PatternFlowGtpExtensionContentsCounter - // HasCount checks if Count has been set in PatternFlowGtpExtensionContentsCounter - HasCount() bool + // Choice returns FlowRSVPPathObjectsSenderTemplateCTypeChoiceEnum, set in FlowRSVPPathObjectsSenderTemplateCType + Choice() FlowRSVPPathObjectsSenderTemplateCTypeChoiceEnum + // SetChoice assigns FlowRSVPPathObjectsSenderTemplateCTypeChoiceEnum provided by user to FlowRSVPPathObjectsSenderTemplateCType + SetChoice(value FlowRSVPPathObjectsSenderTemplateCTypeChoiceEnum) FlowRSVPPathObjectsSenderTemplateCType + // HasChoice checks if Choice has been set in FlowRSVPPathObjectsSenderTemplateCType + HasChoice() bool + // LspTunnelIpv4 returns FlowRSVPPathSenderTemplateLspTunnelIpv4, set in FlowRSVPPathObjectsSenderTemplateCType. + // FlowRSVPPathSenderTemplateLspTunnelIpv4 is class = SENDER_TEMPLATE, LSP_TUNNEL_IPv4 C-Type = 7 + LspTunnelIpv4() FlowRSVPPathSenderTemplateLspTunnelIpv4 + // SetLspTunnelIpv4 assigns FlowRSVPPathSenderTemplateLspTunnelIpv4 provided by user to FlowRSVPPathObjectsSenderTemplateCType. + // FlowRSVPPathSenderTemplateLspTunnelIpv4 is class = SENDER_TEMPLATE, LSP_TUNNEL_IPv4 C-Type = 7 + SetLspTunnelIpv4(value FlowRSVPPathSenderTemplateLspTunnelIpv4) FlowRSVPPathObjectsSenderTemplateCType + // HasLspTunnelIpv4 checks if LspTunnelIpv4 has been set in FlowRSVPPathObjectsSenderTemplateCType + HasLspTunnelIpv4() bool + setNil() } -// description is TBD -// Start returns a uint64 -func (obj *patternFlowGtpExtensionContentsCounter) Start() uint64 { - - return *obj.obj.Start - -} +type FlowRSVPPathObjectsSenderTemplateCTypeChoiceEnum string -// description is TBD -// Start returns a uint64 -func (obj *patternFlowGtpExtensionContentsCounter) HasStart() bool { - return obj.obj.Start != nil +// Enum of Choice on FlowRSVPPathObjectsSenderTemplateCType +var FlowRSVPPathObjectsSenderTemplateCTypeChoice = struct { + LSP_TUNNEL_IPV4 FlowRSVPPathObjectsSenderTemplateCTypeChoiceEnum +}{ + LSP_TUNNEL_IPV4: FlowRSVPPathObjectsSenderTemplateCTypeChoiceEnum("lsp_tunnel_ipv4"), } -// description is TBD -// SetStart sets the uint64 value in the PatternFlowGtpExtensionContentsCounter object -func (obj *patternFlowGtpExtensionContentsCounter) SetStart(value uint64) PatternFlowGtpExtensionContentsCounter { - - obj.obj.Start = &value - return obj +func (obj *flowRSVPPathObjectsSenderTemplateCType) Choice() FlowRSVPPathObjectsSenderTemplateCTypeChoiceEnum { + return FlowRSVPPathObjectsSenderTemplateCTypeChoiceEnum(obj.obj.Choice.Enum().String()) } // description is TBD -// Step returns a uint64 -func (obj *patternFlowGtpExtensionContentsCounter) Step() uint64 { - - return *obj.obj.Step - +// Choice returns a string +func (obj *flowRSVPPathObjectsSenderTemplateCType) HasChoice() bool { + return obj.obj.Choice != nil } -// description is TBD -// Step returns a uint64 -func (obj *patternFlowGtpExtensionContentsCounter) HasStep() bool { - return obj.obj.Step != nil -} +func (obj *flowRSVPPathObjectsSenderTemplateCType) SetChoice(value FlowRSVPPathObjectsSenderTemplateCTypeChoiceEnum) FlowRSVPPathObjectsSenderTemplateCType { + intValue, ok := otg.FlowRSVPPathObjectsSenderTemplateCType_Choice_Enum_value[string(value)] + if !ok { + obj.validationErrors = append(obj.validationErrors, fmt.Sprintf( + "%s is not a valid choice on FlowRSVPPathObjectsSenderTemplateCTypeChoiceEnum", string(value))) + return obj + } + enumValue := otg.FlowRSVPPathObjectsSenderTemplateCType_Choice_Enum(intValue) + obj.obj.Choice = &enumValue + obj.obj.LspTunnelIpv4 = nil + obj.lspTunnelIpv4Holder = nil -// description is TBD -// SetStep sets the uint64 value in the PatternFlowGtpExtensionContentsCounter object -func (obj *patternFlowGtpExtensionContentsCounter) SetStep(value uint64) PatternFlowGtpExtensionContentsCounter { + if value == FlowRSVPPathObjectsSenderTemplateCTypeChoice.LSP_TUNNEL_IPV4 { + obj.obj.LspTunnelIpv4 = NewFlowRSVPPathSenderTemplateLspTunnelIpv4().Msg() + } - obj.obj.Step = &value return obj } // description is TBD -// Count returns a uint64 -func (obj *patternFlowGtpExtensionContentsCounter) Count() uint64 { - - return *obj.obj.Count - +// LspTunnelIpv4 returns a FlowRSVPPathSenderTemplateLspTunnelIpv4 +func (obj *flowRSVPPathObjectsSenderTemplateCType) LspTunnelIpv4() FlowRSVPPathSenderTemplateLspTunnelIpv4 { + if obj.obj.LspTunnelIpv4 == nil { + obj.SetChoice(FlowRSVPPathObjectsSenderTemplateCTypeChoice.LSP_TUNNEL_IPV4) + } + if obj.lspTunnelIpv4Holder == nil { + obj.lspTunnelIpv4Holder = &flowRSVPPathSenderTemplateLspTunnelIpv4{obj: obj.obj.LspTunnelIpv4} + } + return obj.lspTunnelIpv4Holder } // description is TBD -// Count returns a uint64 -func (obj *patternFlowGtpExtensionContentsCounter) HasCount() bool { - return obj.obj.Count != nil +// LspTunnelIpv4 returns a FlowRSVPPathSenderTemplateLspTunnelIpv4 +func (obj *flowRSVPPathObjectsSenderTemplateCType) HasLspTunnelIpv4() bool { + return obj.obj.LspTunnelIpv4 != nil } // description is TBD -// SetCount sets the uint64 value in the PatternFlowGtpExtensionContentsCounter object -func (obj *patternFlowGtpExtensionContentsCounter) SetCount(value uint64) PatternFlowGtpExtensionContentsCounter { +// SetLspTunnelIpv4 sets the FlowRSVPPathSenderTemplateLspTunnelIpv4 value in the FlowRSVPPathObjectsSenderTemplateCType object +func (obj *flowRSVPPathObjectsSenderTemplateCType) SetLspTunnelIpv4(value FlowRSVPPathSenderTemplateLspTunnelIpv4) FlowRSVPPathObjectsSenderTemplateCType { + obj.SetChoice(FlowRSVPPathObjectsSenderTemplateCTypeChoice.LSP_TUNNEL_IPV4) + obj.lspTunnelIpv4Holder = nil + obj.obj.LspTunnelIpv4 = value.Msg() - obj.obj.Count = &value return obj } -func (obj *patternFlowGtpExtensionContentsCounter) validateObj(vObj *validation, set_default bool) { +func (obj *flowRSVPPathObjectsSenderTemplateCType) validateObj(vObj *validation, set_default bool) { if set_default { obj.setDefault() } - if obj.obj.Start != nil { - - if *obj.obj.Start > 281474976710655 { - vObj.validationErrors = append( - vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowGtpExtensionContentsCounter.Start <= 281474976710655 but Got %d", *obj.obj.Start)) - } - - } - - if obj.obj.Step != nil { - - if *obj.obj.Step > 281474976710655 { - vObj.validationErrors = append( - vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowGtpExtensionContentsCounter.Step <= 281474976710655 but Got %d", *obj.obj.Step)) - } - - } - - if obj.obj.Count != nil { - - if *obj.obj.Count > 281474976710655 { - vObj.validationErrors = append( - vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowGtpExtensionContentsCounter.Count <= 281474976710655 but Got %d", *obj.obj.Count)) - } + if obj.obj.LspTunnelIpv4 != nil { + obj.LspTunnelIpv4().validateObj(vObj, set_default) } } -func (obj *patternFlowGtpExtensionContentsCounter) setDefault() { - if obj.obj.Start == nil { - obj.SetStart(0) - } - if obj.obj.Step == nil { - obj.SetStep(1) - } - if obj.obj.Count == nil { - obj.SetCount(1) +func (obj *flowRSVPPathObjectsSenderTemplateCType) setDefault() { + if obj.obj.Choice == nil { + obj.SetChoice(FlowRSVPPathObjectsSenderTemplateCTypeChoice.LSP_TUNNEL_IPV4) + } } -// ***** PatternFlowGtpExtensionContentsMetricTag ***** -type patternFlowGtpExtensionContentsMetricTag struct { +// ***** FlowRSVPPathObjectsSenderTspecCType ***** +type flowRSVPPathObjectsSenderTspecCType struct { validation - obj *otg.PatternFlowGtpExtensionContentsMetricTag + obj *otg.FlowRSVPPathObjectsSenderTspecCType + intServHolder FlowRSVPPathSenderTspecIntServ } -func NewPatternFlowGtpExtensionContentsMetricTag() PatternFlowGtpExtensionContentsMetricTag { - obj := patternFlowGtpExtensionContentsMetricTag{obj: &otg.PatternFlowGtpExtensionContentsMetricTag{}} +func NewFlowRSVPPathObjectsSenderTspecCType() FlowRSVPPathObjectsSenderTspecCType { + obj := flowRSVPPathObjectsSenderTspecCType{obj: &otg.FlowRSVPPathObjectsSenderTspecCType{}} obj.setDefault() return &obj } -func (obj *patternFlowGtpExtensionContentsMetricTag) Msg() *otg.PatternFlowGtpExtensionContentsMetricTag { +func (obj *flowRSVPPathObjectsSenderTspecCType) Msg() *otg.FlowRSVPPathObjectsSenderTspecCType { return obj.obj } -func (obj *patternFlowGtpExtensionContentsMetricTag) SetMsg(msg *otg.PatternFlowGtpExtensionContentsMetricTag) PatternFlowGtpExtensionContentsMetricTag { - +func (obj *flowRSVPPathObjectsSenderTspecCType) SetMsg(msg *otg.FlowRSVPPathObjectsSenderTspecCType) FlowRSVPPathObjectsSenderTspecCType { + obj.setNil() proto.Merge(obj.obj, msg) return obj } -func (obj *patternFlowGtpExtensionContentsMetricTag) ToProto() (*otg.PatternFlowGtpExtensionContentsMetricTag, error) { +func (obj *flowRSVPPathObjectsSenderTspecCType) ToProto() (*otg.FlowRSVPPathObjectsSenderTspecCType, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -288649,7 +332913,7 @@ func (obj *patternFlowGtpExtensionContentsMetricTag) ToProto() (*otg.PatternFlow return obj.Msg(), nil } -func (obj *patternFlowGtpExtensionContentsMetricTag) FromProto(msg *otg.PatternFlowGtpExtensionContentsMetricTag) (PatternFlowGtpExtensionContentsMetricTag, error) { +func (obj *flowRSVPPathObjectsSenderTspecCType) FromProto(msg *otg.FlowRSVPPathObjectsSenderTspecCType) (FlowRSVPPathObjectsSenderTspecCType, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -288658,7 +332922,7 @@ func (obj *patternFlowGtpExtensionContentsMetricTag) FromProto(msg *otg.PatternF return newObj, nil } -func (obj *patternFlowGtpExtensionContentsMetricTag) ToPbText() (string, error) { +func (obj *flowRSVPPathObjectsSenderTspecCType) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -288670,12 +332934,12 @@ func (obj *patternFlowGtpExtensionContentsMetricTag) ToPbText() (string, error) return string(protoMarshal), nil } -func (obj *patternFlowGtpExtensionContentsMetricTag) FromPbText(value string) error { +func (obj *flowRSVPPathObjectsSenderTspecCType) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj } - + obj.setNil() vErr := obj.validateToAndFrom() if vErr != nil { return vErr @@ -288683,7 +332947,7 @@ func (obj *patternFlowGtpExtensionContentsMetricTag) FromPbText(value string) er return retObj } -func (obj *patternFlowGtpExtensionContentsMetricTag) ToYaml() (string, error) { +func (obj *flowRSVPPathObjectsSenderTspecCType) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -288704,7 +332968,7 @@ func (obj *patternFlowGtpExtensionContentsMetricTag) ToYaml() (string, error) { return string(data), nil } -func (obj *patternFlowGtpExtensionContentsMetricTag) FromYaml(value string) error { +func (obj *flowRSVPPathObjectsSenderTspecCType) FromYaml(value string) error { if value == "" { value = "{}" } @@ -288721,7 +332985,7 @@ func (obj *patternFlowGtpExtensionContentsMetricTag) FromYaml(value string) erro return fmt.Errorf("unmarshal error %s", strings.Replace( uError.Error(), "\u00a0", " ", -1)[7:]) } - + obj.setNil() vErr := obj.validateToAndFrom() if vErr != nil { return vErr @@ -288729,7 +332993,7 @@ func (obj *patternFlowGtpExtensionContentsMetricTag) FromYaml(value string) erro return nil } -func (obj *patternFlowGtpExtensionContentsMetricTag) ToJson() (string, error) { +func (obj *flowRSVPPathObjectsSenderTspecCType) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -288747,7 +333011,7 @@ func (obj *patternFlowGtpExtensionContentsMetricTag) ToJson() (string, error) { return string(data), nil } -func (obj *patternFlowGtpExtensionContentsMetricTag) FromJson(value string) error { +func (obj *flowRSVPPathObjectsSenderTspecCType) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -288760,7 +333024,7 @@ func (obj *patternFlowGtpExtensionContentsMetricTag) FromJson(value string) erro return fmt.Errorf("unmarshal error %s", strings.Replace( uError.Error(), "\u00a0", " ", -1)[7:]) } - + obj.setNil() err := obj.validateToAndFrom() if err != nil { return err @@ -288768,19 +333032,19 @@ func (obj *patternFlowGtpExtensionContentsMetricTag) FromJson(value string) erro return nil } -func (obj *patternFlowGtpExtensionContentsMetricTag) validateToAndFrom() error { +func (obj *flowRSVPPathObjectsSenderTspecCType) validateToAndFrom() error { // emptyVars() obj.validateObj(&obj.validation, true) return obj.validationResult() } -func (obj *patternFlowGtpExtensionContentsMetricTag) Validate() error { +func (obj *flowRSVPPathObjectsSenderTspecCType) Validate() error { // emptyVars() obj.validateObj(&obj.validation, false) return obj.validationResult() } -func (obj *patternFlowGtpExtensionContentsMetricTag) String() string { +func (obj *flowRSVPPathObjectsSenderTspecCType) String() string { str, err := obj.ToYaml() if err != nil { return err.Error() @@ -288788,12 +333052,12 @@ func (obj *patternFlowGtpExtensionContentsMetricTag) String() string { return str } -func (obj *patternFlowGtpExtensionContentsMetricTag) Clone() (PatternFlowGtpExtensionContentsMetricTag, error) { +func (obj *flowRSVPPathObjectsSenderTspecCType) Clone() (FlowRSVPPathObjectsSenderTspecCType, error) { vErr := obj.Validate() if vErr != nil { return nil, vErr } - newObj := NewPatternFlowGtpExtensionContentsMetricTag() + newObj := NewFlowRSVPPathObjectsSenderTspecCType() data, err := proto.Marshal(obj.Msg()) if err != nil { return nil, err @@ -288805,183 +333069,174 @@ func (obj *patternFlowGtpExtensionContentsMetricTag) Clone() (PatternFlowGtpExte return newObj, nil } -// PatternFlowGtpExtensionContentsMetricTag is metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. -type PatternFlowGtpExtensionContentsMetricTag interface { +func (obj *flowRSVPPathObjectsSenderTspecCType) setNil() { + obj.intServHolder = nil + obj.validationErrors = nil + obj.warnings = nil + obj.constraints = make(map[string]map[string]Constraints) +} + +// FlowRSVPPathObjectsSenderTspecCType is object for SENDER_TSPEC class. Currently supported c-type is int-serv (2). +type FlowRSVPPathObjectsSenderTspecCType interface { Validation - // Msg marshals PatternFlowGtpExtensionContentsMetricTag to protobuf object *otg.PatternFlowGtpExtensionContentsMetricTag + // Msg marshals FlowRSVPPathObjectsSenderTspecCType to protobuf object *otg.FlowRSVPPathObjectsSenderTspecCType // and doesn't set defaults - Msg() *otg.PatternFlowGtpExtensionContentsMetricTag - // SetMsg unmarshals PatternFlowGtpExtensionContentsMetricTag from protobuf object *otg.PatternFlowGtpExtensionContentsMetricTag + Msg() *otg.FlowRSVPPathObjectsSenderTspecCType + // SetMsg unmarshals FlowRSVPPathObjectsSenderTspecCType from protobuf object *otg.FlowRSVPPathObjectsSenderTspecCType // and doesn't set defaults - SetMsg(*otg.PatternFlowGtpExtensionContentsMetricTag) PatternFlowGtpExtensionContentsMetricTag - // ToProto marshals PatternFlowGtpExtensionContentsMetricTag to protobuf object *otg.PatternFlowGtpExtensionContentsMetricTag - ToProto() (*otg.PatternFlowGtpExtensionContentsMetricTag, error) - // ToPbText marshals PatternFlowGtpExtensionContentsMetricTag to protobuf text + SetMsg(*otg.FlowRSVPPathObjectsSenderTspecCType) FlowRSVPPathObjectsSenderTspecCType + // ToProto marshals FlowRSVPPathObjectsSenderTspecCType to protobuf object *otg.FlowRSVPPathObjectsSenderTspecCType + ToProto() (*otg.FlowRSVPPathObjectsSenderTspecCType, error) + // ToPbText marshals FlowRSVPPathObjectsSenderTspecCType to protobuf text ToPbText() (string, error) - // ToYaml marshals PatternFlowGtpExtensionContentsMetricTag to YAML text + // ToYaml marshals FlowRSVPPathObjectsSenderTspecCType to YAML text ToYaml() (string, error) - // ToJson marshals PatternFlowGtpExtensionContentsMetricTag to JSON text + // ToJson marshals FlowRSVPPathObjectsSenderTspecCType to JSON text ToJson() (string, error) - // FromProto unmarshals PatternFlowGtpExtensionContentsMetricTag from protobuf object *otg.PatternFlowGtpExtensionContentsMetricTag - FromProto(msg *otg.PatternFlowGtpExtensionContentsMetricTag) (PatternFlowGtpExtensionContentsMetricTag, error) - // FromPbText unmarshals PatternFlowGtpExtensionContentsMetricTag from protobuf text + // FromProto unmarshals FlowRSVPPathObjectsSenderTspecCType from protobuf object *otg.FlowRSVPPathObjectsSenderTspecCType + FromProto(msg *otg.FlowRSVPPathObjectsSenderTspecCType) (FlowRSVPPathObjectsSenderTspecCType, error) + // FromPbText unmarshals FlowRSVPPathObjectsSenderTspecCType from protobuf text FromPbText(value string) error - // FromYaml unmarshals PatternFlowGtpExtensionContentsMetricTag from YAML text + // FromYaml unmarshals FlowRSVPPathObjectsSenderTspecCType from YAML text FromYaml(value string) error - // FromJson unmarshals PatternFlowGtpExtensionContentsMetricTag from JSON text + // FromJson unmarshals FlowRSVPPathObjectsSenderTspecCType from JSON text FromJson(value string) error - // Validate validates PatternFlowGtpExtensionContentsMetricTag + // Validate validates FlowRSVPPathObjectsSenderTspecCType Validate() error // A stringer function String() string // Clones the object - Clone() (PatternFlowGtpExtensionContentsMetricTag, error) + Clone() (FlowRSVPPathObjectsSenderTspecCType, error) validateToAndFrom() error validateObj(vObj *validation, set_default bool) setDefault() - // Name returns string, set in PatternFlowGtpExtensionContentsMetricTag. - Name() string - // SetName assigns string provided by user to PatternFlowGtpExtensionContentsMetricTag - SetName(value string) PatternFlowGtpExtensionContentsMetricTag - // Offset returns uint64, set in PatternFlowGtpExtensionContentsMetricTag. - Offset() uint64 - // SetOffset assigns uint64 provided by user to PatternFlowGtpExtensionContentsMetricTag - SetOffset(value uint64) PatternFlowGtpExtensionContentsMetricTag - // HasOffset checks if Offset has been set in PatternFlowGtpExtensionContentsMetricTag - HasOffset() bool - // Length returns uint64, set in PatternFlowGtpExtensionContentsMetricTag. - Length() uint64 - // SetLength assigns uint64 provided by user to PatternFlowGtpExtensionContentsMetricTag - SetLength(value uint64) PatternFlowGtpExtensionContentsMetricTag - // HasLength checks if Length has been set in PatternFlowGtpExtensionContentsMetricTag - HasLength() bool + // Choice returns FlowRSVPPathObjectsSenderTspecCTypeChoiceEnum, set in FlowRSVPPathObjectsSenderTspecCType + Choice() FlowRSVPPathObjectsSenderTspecCTypeChoiceEnum + // SetChoice assigns FlowRSVPPathObjectsSenderTspecCTypeChoiceEnum provided by user to FlowRSVPPathObjectsSenderTspecCType + SetChoice(value FlowRSVPPathObjectsSenderTspecCTypeChoiceEnum) FlowRSVPPathObjectsSenderTspecCType + // HasChoice checks if Choice has been set in FlowRSVPPathObjectsSenderTspecCType + HasChoice() bool + // IntServ returns FlowRSVPPathSenderTspecIntServ, set in FlowRSVPPathObjectsSenderTspecCType. + // FlowRSVPPathSenderTspecIntServ is int-serv SENDER_TSPEC object: Class = 12, C-Type = 2 + IntServ() FlowRSVPPathSenderTspecIntServ + // SetIntServ assigns FlowRSVPPathSenderTspecIntServ provided by user to FlowRSVPPathObjectsSenderTspecCType. + // FlowRSVPPathSenderTspecIntServ is int-serv SENDER_TSPEC object: Class = 12, C-Type = 2 + SetIntServ(value FlowRSVPPathSenderTspecIntServ) FlowRSVPPathObjectsSenderTspecCType + // HasIntServ checks if IntServ has been set in FlowRSVPPathObjectsSenderTspecCType + HasIntServ() bool + setNil() } -// Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field -// Name returns a string -func (obj *patternFlowGtpExtensionContentsMetricTag) Name() string { - - return *obj.obj.Name +type FlowRSVPPathObjectsSenderTspecCTypeChoiceEnum string +// Enum of Choice on FlowRSVPPathObjectsSenderTspecCType +var FlowRSVPPathObjectsSenderTspecCTypeChoice = struct { + INT_SERV FlowRSVPPathObjectsSenderTspecCTypeChoiceEnum +}{ + INT_SERV: FlowRSVPPathObjectsSenderTspecCTypeChoiceEnum("int_serv"), } -// Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field -// SetName sets the string value in the PatternFlowGtpExtensionContentsMetricTag object -func (obj *patternFlowGtpExtensionContentsMetricTag) SetName(value string) PatternFlowGtpExtensionContentsMetricTag { - - obj.obj.Name = &value - return obj +func (obj *flowRSVPPathObjectsSenderTspecCType) Choice() FlowRSVPPathObjectsSenderTspecCTypeChoiceEnum { + return FlowRSVPPathObjectsSenderTspecCTypeChoiceEnum(obj.obj.Choice.Enum().String()) } -// Offset in bits relative to start of corresponding header field -// Offset returns a uint64 -func (obj *patternFlowGtpExtensionContentsMetricTag) Offset() uint64 { - - return *obj.obj.Offset - +// description is TBD +// Choice returns a string +func (obj *flowRSVPPathObjectsSenderTspecCType) HasChoice() bool { + return obj.obj.Choice != nil } -// Offset in bits relative to start of corresponding header field -// Offset returns a uint64 -func (obj *patternFlowGtpExtensionContentsMetricTag) HasOffset() bool { - return obj.obj.Offset != nil -} +func (obj *flowRSVPPathObjectsSenderTspecCType) SetChoice(value FlowRSVPPathObjectsSenderTspecCTypeChoiceEnum) FlowRSVPPathObjectsSenderTspecCType { + intValue, ok := otg.FlowRSVPPathObjectsSenderTspecCType_Choice_Enum_value[string(value)] + if !ok { + obj.validationErrors = append(obj.validationErrors, fmt.Sprintf( + "%s is not a valid choice on FlowRSVPPathObjectsSenderTspecCTypeChoiceEnum", string(value))) + return obj + } + enumValue := otg.FlowRSVPPathObjectsSenderTspecCType_Choice_Enum(intValue) + obj.obj.Choice = &enumValue + obj.obj.IntServ = nil + obj.intServHolder = nil -// Offset in bits relative to start of corresponding header field -// SetOffset sets the uint64 value in the PatternFlowGtpExtensionContentsMetricTag object -func (obj *patternFlowGtpExtensionContentsMetricTag) SetOffset(value uint64) PatternFlowGtpExtensionContentsMetricTag { + if value == FlowRSVPPathObjectsSenderTspecCTypeChoice.INT_SERV { + obj.obj.IntServ = NewFlowRSVPPathSenderTspecIntServ().Msg() + } - obj.obj.Offset = &value return obj } -// Number of bits to track for metrics starting from configured offset of corresponding header field -// Length returns a uint64 -func (obj *patternFlowGtpExtensionContentsMetricTag) Length() uint64 { - - return *obj.obj.Length - +// description is TBD +// IntServ returns a FlowRSVPPathSenderTspecIntServ +func (obj *flowRSVPPathObjectsSenderTspecCType) IntServ() FlowRSVPPathSenderTspecIntServ { + if obj.obj.IntServ == nil { + obj.SetChoice(FlowRSVPPathObjectsSenderTspecCTypeChoice.INT_SERV) + } + if obj.intServHolder == nil { + obj.intServHolder = &flowRSVPPathSenderTspecIntServ{obj: obj.obj.IntServ} + } + return obj.intServHolder } -// Number of bits to track for metrics starting from configured offset of corresponding header field -// Length returns a uint64 -func (obj *patternFlowGtpExtensionContentsMetricTag) HasLength() bool { - return obj.obj.Length != nil +// description is TBD +// IntServ returns a FlowRSVPPathSenderTspecIntServ +func (obj *flowRSVPPathObjectsSenderTspecCType) HasIntServ() bool { + return obj.obj.IntServ != nil } -// Number of bits to track for metrics starting from configured offset of corresponding header field -// SetLength sets the uint64 value in the PatternFlowGtpExtensionContentsMetricTag object -func (obj *patternFlowGtpExtensionContentsMetricTag) SetLength(value uint64) PatternFlowGtpExtensionContentsMetricTag { +// description is TBD +// SetIntServ sets the FlowRSVPPathSenderTspecIntServ value in the FlowRSVPPathObjectsSenderTspecCType object +func (obj *flowRSVPPathObjectsSenderTspecCType) SetIntServ(value FlowRSVPPathSenderTspecIntServ) FlowRSVPPathObjectsSenderTspecCType { + obj.SetChoice(FlowRSVPPathObjectsSenderTspecCTypeChoice.INT_SERV) + obj.intServHolder = nil + obj.obj.IntServ = value.Msg() - obj.obj.Length = &value return obj } -func (obj *patternFlowGtpExtensionContentsMetricTag) validateObj(vObj *validation, set_default bool) { +func (obj *flowRSVPPathObjectsSenderTspecCType) validateObj(vObj *validation, set_default bool) { if set_default { obj.setDefault() } - // Name is required - if obj.obj.Name == nil { - vObj.validationErrors = append(vObj.validationErrors, "Name is required field on interface PatternFlowGtpExtensionContentsMetricTag") - } - - if obj.obj.Offset != nil { - - if *obj.obj.Offset > 47 { - vObj.validationErrors = append( - vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowGtpExtensionContentsMetricTag.Offset <= 47 but Got %d", *obj.obj.Offset)) - } - - } - - if obj.obj.Length != nil { - - if *obj.obj.Length < 1 || *obj.obj.Length > 48 { - vObj.validationErrors = append( - vObj.validationErrors, - fmt.Sprintf("1 <= PatternFlowGtpExtensionContentsMetricTag.Length <= 48 but Got %d", *obj.obj.Length)) - } + if obj.obj.IntServ != nil { + obj.IntServ().validateObj(vObj, set_default) } } -func (obj *patternFlowGtpExtensionContentsMetricTag) setDefault() { - if obj.obj.Offset == nil { - obj.SetOffset(0) - } - if obj.obj.Length == nil { - obj.SetLength(48) +func (obj *flowRSVPPathObjectsSenderTspecCType) setDefault() { + if obj.obj.Choice == nil { + obj.SetChoice(FlowRSVPPathObjectsSenderTspecCTypeChoice.INT_SERV) + } } -// ***** PatternFlowGtpExtensionNextExtensionHeaderCounter ***** -type patternFlowGtpExtensionNextExtensionHeaderCounter struct { +// ***** FlowRSVPPathObjectsRecordRouteCType ***** +type flowRSVPPathObjectsRecordRouteCType struct { validation - obj *otg.PatternFlowGtpExtensionNextExtensionHeaderCounter + obj *otg.FlowRSVPPathObjectsRecordRouteCType + type_1RouteRecordHolder FlowRSVPPathRecordRouteType1 } -func NewPatternFlowGtpExtensionNextExtensionHeaderCounter() PatternFlowGtpExtensionNextExtensionHeaderCounter { - obj := patternFlowGtpExtensionNextExtensionHeaderCounter{obj: &otg.PatternFlowGtpExtensionNextExtensionHeaderCounter{}} +func NewFlowRSVPPathObjectsRecordRouteCType() FlowRSVPPathObjectsRecordRouteCType { + obj := flowRSVPPathObjectsRecordRouteCType{obj: &otg.FlowRSVPPathObjectsRecordRouteCType{}} obj.setDefault() return &obj } -func (obj *patternFlowGtpExtensionNextExtensionHeaderCounter) Msg() *otg.PatternFlowGtpExtensionNextExtensionHeaderCounter { +func (obj *flowRSVPPathObjectsRecordRouteCType) Msg() *otg.FlowRSVPPathObjectsRecordRouteCType { return obj.obj } -func (obj *patternFlowGtpExtensionNextExtensionHeaderCounter) SetMsg(msg *otg.PatternFlowGtpExtensionNextExtensionHeaderCounter) PatternFlowGtpExtensionNextExtensionHeaderCounter { - +func (obj *flowRSVPPathObjectsRecordRouteCType) SetMsg(msg *otg.FlowRSVPPathObjectsRecordRouteCType) FlowRSVPPathObjectsRecordRouteCType { + obj.setNil() proto.Merge(obj.obj, msg) return obj } -func (obj *patternFlowGtpExtensionNextExtensionHeaderCounter) ToProto() (*otg.PatternFlowGtpExtensionNextExtensionHeaderCounter, error) { +func (obj *flowRSVPPathObjectsRecordRouteCType) ToProto() (*otg.FlowRSVPPathObjectsRecordRouteCType, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -288989,7 +333244,7 @@ func (obj *patternFlowGtpExtensionNextExtensionHeaderCounter) ToProto() (*otg.Pa return obj.Msg(), nil } -func (obj *patternFlowGtpExtensionNextExtensionHeaderCounter) FromProto(msg *otg.PatternFlowGtpExtensionNextExtensionHeaderCounter) (PatternFlowGtpExtensionNextExtensionHeaderCounter, error) { +func (obj *flowRSVPPathObjectsRecordRouteCType) FromProto(msg *otg.FlowRSVPPathObjectsRecordRouteCType) (FlowRSVPPathObjectsRecordRouteCType, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -288998,7 +333253,7 @@ func (obj *patternFlowGtpExtensionNextExtensionHeaderCounter) FromProto(msg *otg return newObj, nil } -func (obj *patternFlowGtpExtensionNextExtensionHeaderCounter) ToPbText() (string, error) { +func (obj *flowRSVPPathObjectsRecordRouteCType) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -289010,12 +333265,12 @@ func (obj *patternFlowGtpExtensionNextExtensionHeaderCounter) ToPbText() (string return string(protoMarshal), nil } -func (obj *patternFlowGtpExtensionNextExtensionHeaderCounter) FromPbText(value string) error { +func (obj *flowRSVPPathObjectsRecordRouteCType) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj } - + obj.setNil() vErr := obj.validateToAndFrom() if vErr != nil { return vErr @@ -289023,7 +333278,7 @@ func (obj *patternFlowGtpExtensionNextExtensionHeaderCounter) FromPbText(value s return retObj } -func (obj *patternFlowGtpExtensionNextExtensionHeaderCounter) ToYaml() (string, error) { +func (obj *flowRSVPPathObjectsRecordRouteCType) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -289044,7 +333299,7 @@ func (obj *patternFlowGtpExtensionNextExtensionHeaderCounter) ToYaml() (string, return string(data), nil } -func (obj *patternFlowGtpExtensionNextExtensionHeaderCounter) FromYaml(value string) error { +func (obj *flowRSVPPathObjectsRecordRouteCType) FromYaml(value string) error { if value == "" { value = "{}" } @@ -289061,7 +333316,7 @@ func (obj *patternFlowGtpExtensionNextExtensionHeaderCounter) FromYaml(value str return fmt.Errorf("unmarshal error %s", strings.Replace( uError.Error(), "\u00a0", " ", -1)[7:]) } - + obj.setNil() vErr := obj.validateToAndFrom() if vErr != nil { return vErr @@ -289069,7 +333324,7 @@ func (obj *patternFlowGtpExtensionNextExtensionHeaderCounter) FromYaml(value str return nil } -func (obj *patternFlowGtpExtensionNextExtensionHeaderCounter) ToJson() (string, error) { +func (obj *flowRSVPPathObjectsRecordRouteCType) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -289087,7 +333342,7 @@ func (obj *patternFlowGtpExtensionNextExtensionHeaderCounter) ToJson() (string, return string(data), nil } -func (obj *patternFlowGtpExtensionNextExtensionHeaderCounter) FromJson(value string) error { +func (obj *flowRSVPPathObjectsRecordRouteCType) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -289100,7 +333355,7 @@ func (obj *patternFlowGtpExtensionNextExtensionHeaderCounter) FromJson(value str return fmt.Errorf("unmarshal error %s", strings.Replace( uError.Error(), "\u00a0", " ", -1)[7:]) } - + obj.setNil() err := obj.validateToAndFrom() if err != nil { return err @@ -289108,19 +333363,19 @@ func (obj *patternFlowGtpExtensionNextExtensionHeaderCounter) FromJson(value str return nil } -func (obj *patternFlowGtpExtensionNextExtensionHeaderCounter) validateToAndFrom() error { +func (obj *flowRSVPPathObjectsRecordRouteCType) validateToAndFrom() error { // emptyVars() obj.validateObj(&obj.validation, true) return obj.validationResult() } -func (obj *patternFlowGtpExtensionNextExtensionHeaderCounter) Validate() error { +func (obj *flowRSVPPathObjectsRecordRouteCType) Validate() error { // emptyVars() obj.validateObj(&obj.validation, false) return obj.validationResult() } -func (obj *patternFlowGtpExtensionNextExtensionHeaderCounter) String() string { +func (obj *flowRSVPPathObjectsRecordRouteCType) String() string { str, err := obj.ToYaml() if err != nil { return err.Error() @@ -289128,12 +333383,12 @@ func (obj *patternFlowGtpExtensionNextExtensionHeaderCounter) String() string { return str } -func (obj *patternFlowGtpExtensionNextExtensionHeaderCounter) Clone() (PatternFlowGtpExtensionNextExtensionHeaderCounter, error) { +func (obj *flowRSVPPathObjectsRecordRouteCType) Clone() (FlowRSVPPathObjectsRecordRouteCType, error) { vErr := obj.Validate() if vErr != nil { return nil, vErr } - newObj := NewPatternFlowGtpExtensionNextExtensionHeaderCounter() + newObj := NewFlowRSVPPathObjectsRecordRouteCType() data, err := proto.Marshal(obj.Msg()) if err != nil { return nil, err @@ -289145,199 +333400,175 @@ func (obj *patternFlowGtpExtensionNextExtensionHeaderCounter) Clone() (PatternFl return newObj, nil } -// PatternFlowGtpExtensionNextExtensionHeaderCounter is integer counter pattern -type PatternFlowGtpExtensionNextExtensionHeaderCounter interface { +func (obj *flowRSVPPathObjectsRecordRouteCType) setNil() { + obj.type_1RouteRecordHolder = nil + obj.validationErrors = nil + obj.warnings = nil + obj.constraints = make(map[string]map[string]Constraints) +} + +// FlowRSVPPathObjectsRecordRouteCType is object for RECORD_ROUTE class. c-type is Type 1 Route Record (1). +type FlowRSVPPathObjectsRecordRouteCType interface { Validation - // Msg marshals PatternFlowGtpExtensionNextExtensionHeaderCounter to protobuf object *otg.PatternFlowGtpExtensionNextExtensionHeaderCounter + // Msg marshals FlowRSVPPathObjectsRecordRouteCType to protobuf object *otg.FlowRSVPPathObjectsRecordRouteCType // and doesn't set defaults - Msg() *otg.PatternFlowGtpExtensionNextExtensionHeaderCounter - // SetMsg unmarshals PatternFlowGtpExtensionNextExtensionHeaderCounter from protobuf object *otg.PatternFlowGtpExtensionNextExtensionHeaderCounter + Msg() *otg.FlowRSVPPathObjectsRecordRouteCType + // SetMsg unmarshals FlowRSVPPathObjectsRecordRouteCType from protobuf object *otg.FlowRSVPPathObjectsRecordRouteCType // and doesn't set defaults - SetMsg(*otg.PatternFlowGtpExtensionNextExtensionHeaderCounter) PatternFlowGtpExtensionNextExtensionHeaderCounter - // ToProto marshals PatternFlowGtpExtensionNextExtensionHeaderCounter to protobuf object *otg.PatternFlowGtpExtensionNextExtensionHeaderCounter - ToProto() (*otg.PatternFlowGtpExtensionNextExtensionHeaderCounter, error) - // ToPbText marshals PatternFlowGtpExtensionNextExtensionHeaderCounter to protobuf text + SetMsg(*otg.FlowRSVPPathObjectsRecordRouteCType) FlowRSVPPathObjectsRecordRouteCType + // ToProto marshals FlowRSVPPathObjectsRecordRouteCType to protobuf object *otg.FlowRSVPPathObjectsRecordRouteCType + ToProto() (*otg.FlowRSVPPathObjectsRecordRouteCType, error) + // ToPbText marshals FlowRSVPPathObjectsRecordRouteCType to protobuf text ToPbText() (string, error) - // ToYaml marshals PatternFlowGtpExtensionNextExtensionHeaderCounter to YAML text + // ToYaml marshals FlowRSVPPathObjectsRecordRouteCType to YAML text ToYaml() (string, error) - // ToJson marshals PatternFlowGtpExtensionNextExtensionHeaderCounter to JSON text + // ToJson marshals FlowRSVPPathObjectsRecordRouteCType to JSON text ToJson() (string, error) - // FromProto unmarshals PatternFlowGtpExtensionNextExtensionHeaderCounter from protobuf object *otg.PatternFlowGtpExtensionNextExtensionHeaderCounter - FromProto(msg *otg.PatternFlowGtpExtensionNextExtensionHeaderCounter) (PatternFlowGtpExtensionNextExtensionHeaderCounter, error) - // FromPbText unmarshals PatternFlowGtpExtensionNextExtensionHeaderCounter from protobuf text + // FromProto unmarshals FlowRSVPPathObjectsRecordRouteCType from protobuf object *otg.FlowRSVPPathObjectsRecordRouteCType + FromProto(msg *otg.FlowRSVPPathObjectsRecordRouteCType) (FlowRSVPPathObjectsRecordRouteCType, error) + // FromPbText unmarshals FlowRSVPPathObjectsRecordRouteCType from protobuf text FromPbText(value string) error - // FromYaml unmarshals PatternFlowGtpExtensionNextExtensionHeaderCounter from YAML text + // FromYaml unmarshals FlowRSVPPathObjectsRecordRouteCType from YAML text FromYaml(value string) error - // FromJson unmarshals PatternFlowGtpExtensionNextExtensionHeaderCounter from JSON text + // FromJson unmarshals FlowRSVPPathObjectsRecordRouteCType from JSON text FromJson(value string) error - // Validate validates PatternFlowGtpExtensionNextExtensionHeaderCounter + // Validate validates FlowRSVPPathObjectsRecordRouteCType Validate() error // A stringer function String() string // Clones the object - Clone() (PatternFlowGtpExtensionNextExtensionHeaderCounter, error) + Clone() (FlowRSVPPathObjectsRecordRouteCType, error) validateToAndFrom() error validateObj(vObj *validation, set_default bool) setDefault() - // Start returns uint32, set in PatternFlowGtpExtensionNextExtensionHeaderCounter. - Start() uint32 - // SetStart assigns uint32 provided by user to PatternFlowGtpExtensionNextExtensionHeaderCounter - SetStart(value uint32) PatternFlowGtpExtensionNextExtensionHeaderCounter - // HasStart checks if Start has been set in PatternFlowGtpExtensionNextExtensionHeaderCounter - HasStart() bool - // Step returns uint32, set in PatternFlowGtpExtensionNextExtensionHeaderCounter. - Step() uint32 - // SetStep assigns uint32 provided by user to PatternFlowGtpExtensionNextExtensionHeaderCounter - SetStep(value uint32) PatternFlowGtpExtensionNextExtensionHeaderCounter - // HasStep checks if Step has been set in PatternFlowGtpExtensionNextExtensionHeaderCounter - HasStep() bool - // Count returns uint32, set in PatternFlowGtpExtensionNextExtensionHeaderCounter. - Count() uint32 - // SetCount assigns uint32 provided by user to PatternFlowGtpExtensionNextExtensionHeaderCounter - SetCount(value uint32) PatternFlowGtpExtensionNextExtensionHeaderCounter - // HasCount checks if Count has been set in PatternFlowGtpExtensionNextExtensionHeaderCounter - HasCount() bool + // Choice returns FlowRSVPPathObjectsRecordRouteCTypeChoiceEnum, set in FlowRSVPPathObjectsRecordRouteCType + Choice() FlowRSVPPathObjectsRecordRouteCTypeChoiceEnum + // SetChoice assigns FlowRSVPPathObjectsRecordRouteCTypeChoiceEnum provided by user to FlowRSVPPathObjectsRecordRouteCType + SetChoice(value FlowRSVPPathObjectsRecordRouteCTypeChoiceEnum) FlowRSVPPathObjectsRecordRouteCType + // HasChoice checks if Choice has been set in FlowRSVPPathObjectsRecordRouteCType + HasChoice() bool + // Type1RouteRecord returns FlowRSVPPathRecordRouteType1, set in FlowRSVPPathObjectsRecordRouteCType. + // FlowRSVPPathRecordRouteType1 is type1 record route has list of subobjects. Currently supported subobjects are IPv4 address(1) and Label(3). + Type1RouteRecord() FlowRSVPPathRecordRouteType1 + // SetType1RouteRecord assigns FlowRSVPPathRecordRouteType1 provided by user to FlowRSVPPathObjectsRecordRouteCType. + // FlowRSVPPathRecordRouteType1 is type1 record route has list of subobjects. Currently supported subobjects are IPv4 address(1) and Label(3). + SetType1RouteRecord(value FlowRSVPPathRecordRouteType1) FlowRSVPPathObjectsRecordRouteCType + // HasType1RouteRecord checks if Type1RouteRecord has been set in FlowRSVPPathObjectsRecordRouteCType + HasType1RouteRecord() bool + setNil() } -// description is TBD -// Start returns a uint32 -func (obj *patternFlowGtpExtensionNextExtensionHeaderCounter) Start() uint32 { - - return *obj.obj.Start - -} +type FlowRSVPPathObjectsRecordRouteCTypeChoiceEnum string -// description is TBD -// Start returns a uint32 -func (obj *patternFlowGtpExtensionNextExtensionHeaderCounter) HasStart() bool { - return obj.obj.Start != nil +// Enum of Choice on FlowRSVPPathObjectsRecordRouteCType +var FlowRSVPPathObjectsRecordRouteCTypeChoice = struct { + TYPE_1_ROUTE_RECORD FlowRSVPPathObjectsRecordRouteCTypeChoiceEnum +}{ + TYPE_1_ROUTE_RECORD: FlowRSVPPathObjectsRecordRouteCTypeChoiceEnum("type_1_route_record"), } -// description is TBD -// SetStart sets the uint32 value in the PatternFlowGtpExtensionNextExtensionHeaderCounter object -func (obj *patternFlowGtpExtensionNextExtensionHeaderCounter) SetStart(value uint32) PatternFlowGtpExtensionNextExtensionHeaderCounter { - - obj.obj.Start = &value - return obj +func (obj *flowRSVPPathObjectsRecordRouteCType) Choice() FlowRSVPPathObjectsRecordRouteCTypeChoiceEnum { + return FlowRSVPPathObjectsRecordRouteCTypeChoiceEnum(obj.obj.Choice.Enum().String()) } // description is TBD -// Step returns a uint32 -func (obj *patternFlowGtpExtensionNextExtensionHeaderCounter) Step() uint32 { - - return *obj.obj.Step - +// Choice returns a string +func (obj *flowRSVPPathObjectsRecordRouteCType) HasChoice() bool { + return obj.obj.Choice != nil } -// description is TBD -// Step returns a uint32 -func (obj *patternFlowGtpExtensionNextExtensionHeaderCounter) HasStep() bool { - return obj.obj.Step != nil -} +func (obj *flowRSVPPathObjectsRecordRouteCType) SetChoice(value FlowRSVPPathObjectsRecordRouteCTypeChoiceEnum) FlowRSVPPathObjectsRecordRouteCType { + intValue, ok := otg.FlowRSVPPathObjectsRecordRouteCType_Choice_Enum_value[string(value)] + if !ok { + obj.validationErrors = append(obj.validationErrors, fmt.Sprintf( + "%s is not a valid choice on FlowRSVPPathObjectsRecordRouteCTypeChoiceEnum", string(value))) + return obj + } + enumValue := otg.FlowRSVPPathObjectsRecordRouteCType_Choice_Enum(intValue) + obj.obj.Choice = &enumValue + obj.obj.Type_1RouteRecord = nil + obj.type_1RouteRecordHolder = nil -// description is TBD -// SetStep sets the uint32 value in the PatternFlowGtpExtensionNextExtensionHeaderCounter object -func (obj *patternFlowGtpExtensionNextExtensionHeaderCounter) SetStep(value uint32) PatternFlowGtpExtensionNextExtensionHeaderCounter { + if value == FlowRSVPPathObjectsRecordRouteCTypeChoice.TYPE_1_ROUTE_RECORD { + obj.obj.Type_1RouteRecord = NewFlowRSVPPathRecordRouteType1().Msg() + } - obj.obj.Step = &value return obj } // description is TBD -// Count returns a uint32 -func (obj *patternFlowGtpExtensionNextExtensionHeaderCounter) Count() uint32 { - - return *obj.obj.Count - +// Type1RouteRecord returns a FlowRSVPPathRecordRouteType1 +func (obj *flowRSVPPathObjectsRecordRouteCType) Type1RouteRecord() FlowRSVPPathRecordRouteType1 { + if obj.obj.Type_1RouteRecord == nil { + obj.SetChoice(FlowRSVPPathObjectsRecordRouteCTypeChoice.TYPE_1_ROUTE_RECORD) + } + if obj.type_1RouteRecordHolder == nil { + obj.type_1RouteRecordHolder = &flowRSVPPathRecordRouteType1{obj: obj.obj.Type_1RouteRecord} + } + return obj.type_1RouteRecordHolder } // description is TBD -// Count returns a uint32 -func (obj *patternFlowGtpExtensionNextExtensionHeaderCounter) HasCount() bool { - return obj.obj.Count != nil +// Type1RouteRecord returns a FlowRSVPPathRecordRouteType1 +func (obj *flowRSVPPathObjectsRecordRouteCType) HasType1RouteRecord() bool { + return obj.obj.Type_1RouteRecord != nil } // description is TBD -// SetCount sets the uint32 value in the PatternFlowGtpExtensionNextExtensionHeaderCounter object -func (obj *patternFlowGtpExtensionNextExtensionHeaderCounter) SetCount(value uint32) PatternFlowGtpExtensionNextExtensionHeaderCounter { +// SetType1RouteRecord sets the FlowRSVPPathRecordRouteType1 value in the FlowRSVPPathObjectsRecordRouteCType object +func (obj *flowRSVPPathObjectsRecordRouteCType) SetType1RouteRecord(value FlowRSVPPathRecordRouteType1) FlowRSVPPathObjectsRecordRouteCType { + obj.SetChoice(FlowRSVPPathObjectsRecordRouteCTypeChoice.TYPE_1_ROUTE_RECORD) + obj.type_1RouteRecordHolder = nil + obj.obj.Type_1RouteRecord = value.Msg() - obj.obj.Count = &value return obj } -func (obj *patternFlowGtpExtensionNextExtensionHeaderCounter) validateObj(vObj *validation, set_default bool) { +func (obj *flowRSVPPathObjectsRecordRouteCType) validateObj(vObj *validation, set_default bool) { if set_default { obj.setDefault() } - if obj.obj.Start != nil { - - if *obj.obj.Start > 255 { - vObj.validationErrors = append( - vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowGtpExtensionNextExtensionHeaderCounter.Start <= 255 but Got %d", *obj.obj.Start)) - } - - } - - if obj.obj.Step != nil { - - if *obj.obj.Step > 255 { - vObj.validationErrors = append( - vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowGtpExtensionNextExtensionHeaderCounter.Step <= 255 but Got %d", *obj.obj.Step)) - } - - } - - if obj.obj.Count != nil { - - if *obj.obj.Count > 255 { - vObj.validationErrors = append( - vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowGtpExtensionNextExtensionHeaderCounter.Count <= 255 but Got %d", *obj.obj.Count)) - } + if obj.obj.Type_1RouteRecord != nil { + obj.Type1RouteRecord().validateObj(vObj, set_default) } } -func (obj *patternFlowGtpExtensionNextExtensionHeaderCounter) setDefault() { - if obj.obj.Start == nil { - obj.SetStart(0) - } - if obj.obj.Step == nil { - obj.SetStep(1) - } - if obj.obj.Count == nil { - obj.SetCount(1) +func (obj *flowRSVPPathObjectsRecordRouteCType) setDefault() { + if obj.obj.Choice == nil { + obj.SetChoice(FlowRSVPPathObjectsRecordRouteCTypeChoice.TYPE_1_ROUTE_RECORD) + } } -// ***** PatternFlowGtpExtensionNextExtensionHeaderMetricTag ***** -type patternFlowGtpExtensionNextExtensionHeaderMetricTag struct { +// ***** PatternFlowRSVPPathObjectsCustomType ***** +type patternFlowRSVPPathObjectsCustomType struct { validation - obj *otg.PatternFlowGtpExtensionNextExtensionHeaderMetricTag + obj *otg.PatternFlowRSVPPathObjectsCustomType + incrementHolder PatternFlowRSVPPathObjectsCustomTypeCounter + decrementHolder PatternFlowRSVPPathObjectsCustomTypeCounter } -func NewPatternFlowGtpExtensionNextExtensionHeaderMetricTag() PatternFlowGtpExtensionNextExtensionHeaderMetricTag { - obj := patternFlowGtpExtensionNextExtensionHeaderMetricTag{obj: &otg.PatternFlowGtpExtensionNextExtensionHeaderMetricTag{}} +func NewPatternFlowRSVPPathObjectsCustomType() PatternFlowRSVPPathObjectsCustomType { + obj := patternFlowRSVPPathObjectsCustomType{obj: &otg.PatternFlowRSVPPathObjectsCustomType{}} obj.setDefault() return &obj } -func (obj *patternFlowGtpExtensionNextExtensionHeaderMetricTag) Msg() *otg.PatternFlowGtpExtensionNextExtensionHeaderMetricTag { +func (obj *patternFlowRSVPPathObjectsCustomType) Msg() *otg.PatternFlowRSVPPathObjectsCustomType { return obj.obj } -func (obj *patternFlowGtpExtensionNextExtensionHeaderMetricTag) SetMsg(msg *otg.PatternFlowGtpExtensionNextExtensionHeaderMetricTag) PatternFlowGtpExtensionNextExtensionHeaderMetricTag { - +func (obj *patternFlowRSVPPathObjectsCustomType) SetMsg(msg *otg.PatternFlowRSVPPathObjectsCustomType) PatternFlowRSVPPathObjectsCustomType { + obj.setNil() proto.Merge(obj.obj, msg) return obj } -func (obj *patternFlowGtpExtensionNextExtensionHeaderMetricTag) ToProto() (*otg.PatternFlowGtpExtensionNextExtensionHeaderMetricTag, error) { +func (obj *patternFlowRSVPPathObjectsCustomType) ToProto() (*otg.PatternFlowRSVPPathObjectsCustomType, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -289345,7 +333576,7 @@ func (obj *patternFlowGtpExtensionNextExtensionHeaderMetricTag) ToProto() (*otg. return obj.Msg(), nil } -func (obj *patternFlowGtpExtensionNextExtensionHeaderMetricTag) FromProto(msg *otg.PatternFlowGtpExtensionNextExtensionHeaderMetricTag) (PatternFlowGtpExtensionNextExtensionHeaderMetricTag, error) { +func (obj *patternFlowRSVPPathObjectsCustomType) FromProto(msg *otg.PatternFlowRSVPPathObjectsCustomType) (PatternFlowRSVPPathObjectsCustomType, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -289354,7 +333585,7 @@ func (obj *patternFlowGtpExtensionNextExtensionHeaderMetricTag) FromProto(msg *o return newObj, nil } -func (obj *patternFlowGtpExtensionNextExtensionHeaderMetricTag) ToPbText() (string, error) { +func (obj *patternFlowRSVPPathObjectsCustomType) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -289366,12 +333597,12 @@ func (obj *patternFlowGtpExtensionNextExtensionHeaderMetricTag) ToPbText() (stri return string(protoMarshal), nil } -func (obj *patternFlowGtpExtensionNextExtensionHeaderMetricTag) FromPbText(value string) error { +func (obj *patternFlowRSVPPathObjectsCustomType) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj } - + obj.setNil() vErr := obj.validateToAndFrom() if vErr != nil { return vErr @@ -289379,7 +333610,7 @@ func (obj *patternFlowGtpExtensionNextExtensionHeaderMetricTag) FromPbText(value return retObj } -func (obj *patternFlowGtpExtensionNextExtensionHeaderMetricTag) ToYaml() (string, error) { +func (obj *patternFlowRSVPPathObjectsCustomType) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -289400,7 +333631,7 @@ func (obj *patternFlowGtpExtensionNextExtensionHeaderMetricTag) ToYaml() (string return string(data), nil } -func (obj *patternFlowGtpExtensionNextExtensionHeaderMetricTag) FromYaml(value string) error { +func (obj *patternFlowRSVPPathObjectsCustomType) FromYaml(value string) error { if value == "" { value = "{}" } @@ -289417,7 +333648,7 @@ func (obj *patternFlowGtpExtensionNextExtensionHeaderMetricTag) FromYaml(value s return fmt.Errorf("unmarshal error %s", strings.Replace( uError.Error(), "\u00a0", " ", -1)[7:]) } - + obj.setNil() vErr := obj.validateToAndFrom() if vErr != nil { return vErr @@ -289425,7 +333656,7 @@ func (obj *patternFlowGtpExtensionNextExtensionHeaderMetricTag) FromYaml(value s return nil } -func (obj *patternFlowGtpExtensionNextExtensionHeaderMetricTag) ToJson() (string, error) { +func (obj *patternFlowRSVPPathObjectsCustomType) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -289443,7 +333674,7 @@ func (obj *patternFlowGtpExtensionNextExtensionHeaderMetricTag) ToJson() (string return string(data), nil } -func (obj *patternFlowGtpExtensionNextExtensionHeaderMetricTag) FromJson(value string) error { +func (obj *patternFlowRSVPPathObjectsCustomType) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -289456,7 +333687,7 @@ func (obj *patternFlowGtpExtensionNextExtensionHeaderMetricTag) FromJson(value s return fmt.Errorf("unmarshal error %s", strings.Replace( uError.Error(), "\u00a0", " ", -1)[7:]) } - + obj.setNil() err := obj.validateToAndFrom() if err != nil { return err @@ -289464,19 +333695,19 @@ func (obj *patternFlowGtpExtensionNextExtensionHeaderMetricTag) FromJson(value s return nil } -func (obj *patternFlowGtpExtensionNextExtensionHeaderMetricTag) validateToAndFrom() error { +func (obj *patternFlowRSVPPathObjectsCustomType) validateToAndFrom() error { // emptyVars() obj.validateObj(&obj.validation, true) return obj.validationResult() } -func (obj *patternFlowGtpExtensionNextExtensionHeaderMetricTag) Validate() error { +func (obj *patternFlowRSVPPathObjectsCustomType) Validate() error { // emptyVars() obj.validateObj(&obj.validation, false) return obj.validationResult() } -func (obj *patternFlowGtpExtensionNextExtensionHeaderMetricTag) String() string { +func (obj *patternFlowRSVPPathObjectsCustomType) String() string { str, err := obj.ToYaml() if err != nil { return err.Error() @@ -289484,12 +333715,12 @@ func (obj *patternFlowGtpExtensionNextExtensionHeaderMetricTag) String() string return str } -func (obj *patternFlowGtpExtensionNextExtensionHeaderMetricTag) Clone() (PatternFlowGtpExtensionNextExtensionHeaderMetricTag, error) { +func (obj *patternFlowRSVPPathObjectsCustomType) Clone() (PatternFlowRSVPPathObjectsCustomType, error) { vErr := obj.Validate() if vErr != nil { return nil, vErr } - newObj := NewPatternFlowGtpExtensionNextExtensionHeaderMetricTag() + newObj := NewPatternFlowRSVPPathObjectsCustomType() data, err := proto.Marshal(obj.Msg()) if err != nil { return nil, err @@ -289501,183 +333732,319 @@ func (obj *patternFlowGtpExtensionNextExtensionHeaderMetricTag) Clone() (Pattern return newObj, nil } -// PatternFlowGtpExtensionNextExtensionHeaderMetricTag is metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. -type PatternFlowGtpExtensionNextExtensionHeaderMetricTag interface { +func (obj *patternFlowRSVPPathObjectsCustomType) setNil() { + obj.incrementHolder = nil + obj.decrementHolder = nil + obj.validationErrors = nil + obj.warnings = nil + obj.constraints = make(map[string]map[string]Constraints) +} + +// PatternFlowRSVPPathObjectsCustomType is user defined object type. +type PatternFlowRSVPPathObjectsCustomType interface { Validation - // Msg marshals PatternFlowGtpExtensionNextExtensionHeaderMetricTag to protobuf object *otg.PatternFlowGtpExtensionNextExtensionHeaderMetricTag + // Msg marshals PatternFlowRSVPPathObjectsCustomType to protobuf object *otg.PatternFlowRSVPPathObjectsCustomType // and doesn't set defaults - Msg() *otg.PatternFlowGtpExtensionNextExtensionHeaderMetricTag - // SetMsg unmarshals PatternFlowGtpExtensionNextExtensionHeaderMetricTag from protobuf object *otg.PatternFlowGtpExtensionNextExtensionHeaderMetricTag + Msg() *otg.PatternFlowRSVPPathObjectsCustomType + // SetMsg unmarshals PatternFlowRSVPPathObjectsCustomType from protobuf object *otg.PatternFlowRSVPPathObjectsCustomType // and doesn't set defaults - SetMsg(*otg.PatternFlowGtpExtensionNextExtensionHeaderMetricTag) PatternFlowGtpExtensionNextExtensionHeaderMetricTag - // ToProto marshals PatternFlowGtpExtensionNextExtensionHeaderMetricTag to protobuf object *otg.PatternFlowGtpExtensionNextExtensionHeaderMetricTag - ToProto() (*otg.PatternFlowGtpExtensionNextExtensionHeaderMetricTag, error) - // ToPbText marshals PatternFlowGtpExtensionNextExtensionHeaderMetricTag to protobuf text + SetMsg(*otg.PatternFlowRSVPPathObjectsCustomType) PatternFlowRSVPPathObjectsCustomType + // ToProto marshals PatternFlowRSVPPathObjectsCustomType to protobuf object *otg.PatternFlowRSVPPathObjectsCustomType + ToProto() (*otg.PatternFlowRSVPPathObjectsCustomType, error) + // ToPbText marshals PatternFlowRSVPPathObjectsCustomType to protobuf text ToPbText() (string, error) - // ToYaml marshals PatternFlowGtpExtensionNextExtensionHeaderMetricTag to YAML text + // ToYaml marshals PatternFlowRSVPPathObjectsCustomType to YAML text ToYaml() (string, error) - // ToJson marshals PatternFlowGtpExtensionNextExtensionHeaderMetricTag to JSON text + // ToJson marshals PatternFlowRSVPPathObjectsCustomType to JSON text ToJson() (string, error) - // FromProto unmarshals PatternFlowGtpExtensionNextExtensionHeaderMetricTag from protobuf object *otg.PatternFlowGtpExtensionNextExtensionHeaderMetricTag - FromProto(msg *otg.PatternFlowGtpExtensionNextExtensionHeaderMetricTag) (PatternFlowGtpExtensionNextExtensionHeaderMetricTag, error) - // FromPbText unmarshals PatternFlowGtpExtensionNextExtensionHeaderMetricTag from protobuf text + // FromProto unmarshals PatternFlowRSVPPathObjectsCustomType from protobuf object *otg.PatternFlowRSVPPathObjectsCustomType + FromProto(msg *otg.PatternFlowRSVPPathObjectsCustomType) (PatternFlowRSVPPathObjectsCustomType, error) + // FromPbText unmarshals PatternFlowRSVPPathObjectsCustomType from protobuf text FromPbText(value string) error - // FromYaml unmarshals PatternFlowGtpExtensionNextExtensionHeaderMetricTag from YAML text + // FromYaml unmarshals PatternFlowRSVPPathObjectsCustomType from YAML text FromYaml(value string) error - // FromJson unmarshals PatternFlowGtpExtensionNextExtensionHeaderMetricTag from JSON text + // FromJson unmarshals PatternFlowRSVPPathObjectsCustomType from JSON text FromJson(value string) error - // Validate validates PatternFlowGtpExtensionNextExtensionHeaderMetricTag + // Validate validates PatternFlowRSVPPathObjectsCustomType Validate() error // A stringer function String() string // Clones the object - Clone() (PatternFlowGtpExtensionNextExtensionHeaderMetricTag, error) + Clone() (PatternFlowRSVPPathObjectsCustomType, error) validateToAndFrom() error validateObj(vObj *validation, set_default bool) setDefault() - // Name returns string, set in PatternFlowGtpExtensionNextExtensionHeaderMetricTag. - Name() string - // SetName assigns string provided by user to PatternFlowGtpExtensionNextExtensionHeaderMetricTag - SetName(value string) PatternFlowGtpExtensionNextExtensionHeaderMetricTag - // Offset returns uint32, set in PatternFlowGtpExtensionNextExtensionHeaderMetricTag. - Offset() uint32 - // SetOffset assigns uint32 provided by user to PatternFlowGtpExtensionNextExtensionHeaderMetricTag - SetOffset(value uint32) PatternFlowGtpExtensionNextExtensionHeaderMetricTag - // HasOffset checks if Offset has been set in PatternFlowGtpExtensionNextExtensionHeaderMetricTag - HasOffset() bool - // Length returns uint32, set in PatternFlowGtpExtensionNextExtensionHeaderMetricTag. - Length() uint32 - // SetLength assigns uint32 provided by user to PatternFlowGtpExtensionNextExtensionHeaderMetricTag - SetLength(value uint32) PatternFlowGtpExtensionNextExtensionHeaderMetricTag - // HasLength checks if Length has been set in PatternFlowGtpExtensionNextExtensionHeaderMetricTag - HasLength() bool + // Choice returns PatternFlowRSVPPathObjectsCustomTypeChoiceEnum, set in PatternFlowRSVPPathObjectsCustomType + Choice() PatternFlowRSVPPathObjectsCustomTypeChoiceEnum + // SetChoice assigns PatternFlowRSVPPathObjectsCustomTypeChoiceEnum provided by user to PatternFlowRSVPPathObjectsCustomType + SetChoice(value PatternFlowRSVPPathObjectsCustomTypeChoiceEnum) PatternFlowRSVPPathObjectsCustomType + // HasChoice checks if Choice has been set in PatternFlowRSVPPathObjectsCustomType + HasChoice() bool + // Value returns uint32, set in PatternFlowRSVPPathObjectsCustomType. + Value() uint32 + // SetValue assigns uint32 provided by user to PatternFlowRSVPPathObjectsCustomType + SetValue(value uint32) PatternFlowRSVPPathObjectsCustomType + // HasValue checks if Value has been set in PatternFlowRSVPPathObjectsCustomType + HasValue() bool + // Values returns []uint32, set in PatternFlowRSVPPathObjectsCustomType. + Values() []uint32 + // SetValues assigns []uint32 provided by user to PatternFlowRSVPPathObjectsCustomType + SetValues(value []uint32) PatternFlowRSVPPathObjectsCustomType + // Increment returns PatternFlowRSVPPathObjectsCustomTypeCounter, set in PatternFlowRSVPPathObjectsCustomType. + // PatternFlowRSVPPathObjectsCustomTypeCounter is integer counter pattern + Increment() PatternFlowRSVPPathObjectsCustomTypeCounter + // SetIncrement assigns PatternFlowRSVPPathObjectsCustomTypeCounter provided by user to PatternFlowRSVPPathObjectsCustomType. + // PatternFlowRSVPPathObjectsCustomTypeCounter is integer counter pattern + SetIncrement(value PatternFlowRSVPPathObjectsCustomTypeCounter) PatternFlowRSVPPathObjectsCustomType + // HasIncrement checks if Increment has been set in PatternFlowRSVPPathObjectsCustomType + HasIncrement() bool + // Decrement returns PatternFlowRSVPPathObjectsCustomTypeCounter, set in PatternFlowRSVPPathObjectsCustomType. + // PatternFlowRSVPPathObjectsCustomTypeCounter is integer counter pattern + Decrement() PatternFlowRSVPPathObjectsCustomTypeCounter + // SetDecrement assigns PatternFlowRSVPPathObjectsCustomTypeCounter provided by user to PatternFlowRSVPPathObjectsCustomType. + // PatternFlowRSVPPathObjectsCustomTypeCounter is integer counter pattern + SetDecrement(value PatternFlowRSVPPathObjectsCustomTypeCounter) PatternFlowRSVPPathObjectsCustomType + // HasDecrement checks if Decrement has been set in PatternFlowRSVPPathObjectsCustomType + HasDecrement() bool + setNil() } -// Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field -// Name returns a string -func (obj *patternFlowGtpExtensionNextExtensionHeaderMetricTag) Name() string { +type PatternFlowRSVPPathObjectsCustomTypeChoiceEnum string - return *obj.obj.Name +// Enum of Choice on PatternFlowRSVPPathObjectsCustomType +var PatternFlowRSVPPathObjectsCustomTypeChoice = struct { + VALUE PatternFlowRSVPPathObjectsCustomTypeChoiceEnum + VALUES PatternFlowRSVPPathObjectsCustomTypeChoiceEnum + INCREMENT PatternFlowRSVPPathObjectsCustomTypeChoiceEnum + DECREMENT PatternFlowRSVPPathObjectsCustomTypeChoiceEnum +}{ + VALUE: PatternFlowRSVPPathObjectsCustomTypeChoiceEnum("value"), + VALUES: PatternFlowRSVPPathObjectsCustomTypeChoiceEnum("values"), + INCREMENT: PatternFlowRSVPPathObjectsCustomTypeChoiceEnum("increment"), + DECREMENT: PatternFlowRSVPPathObjectsCustomTypeChoiceEnum("decrement"), +} +func (obj *patternFlowRSVPPathObjectsCustomType) Choice() PatternFlowRSVPPathObjectsCustomTypeChoiceEnum { + return PatternFlowRSVPPathObjectsCustomTypeChoiceEnum(obj.obj.Choice.Enum().String()) } -// Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field -// SetName sets the string value in the PatternFlowGtpExtensionNextExtensionHeaderMetricTag object -func (obj *patternFlowGtpExtensionNextExtensionHeaderMetricTag) SetName(value string) PatternFlowGtpExtensionNextExtensionHeaderMetricTag { +// description is TBD +// Choice returns a string +func (obj *patternFlowRSVPPathObjectsCustomType) HasChoice() bool { + return obj.obj.Choice != nil +} + +func (obj *patternFlowRSVPPathObjectsCustomType) SetChoice(value PatternFlowRSVPPathObjectsCustomTypeChoiceEnum) PatternFlowRSVPPathObjectsCustomType { + intValue, ok := otg.PatternFlowRSVPPathObjectsCustomType_Choice_Enum_value[string(value)] + if !ok { + obj.validationErrors = append(obj.validationErrors, fmt.Sprintf( + "%s is not a valid choice on PatternFlowRSVPPathObjectsCustomTypeChoiceEnum", string(value))) + return obj + } + enumValue := otg.PatternFlowRSVPPathObjectsCustomType_Choice_Enum(intValue) + obj.obj.Choice = &enumValue + obj.obj.Decrement = nil + obj.decrementHolder = nil + obj.obj.Increment = nil + obj.incrementHolder = nil + obj.obj.Values = nil + obj.obj.Value = nil + + if value == PatternFlowRSVPPathObjectsCustomTypeChoice.VALUE { + defaultValue := uint32(0) + obj.obj.Value = &defaultValue + } + + if value == PatternFlowRSVPPathObjectsCustomTypeChoice.VALUES { + defaultValue := []uint32{0} + obj.obj.Values = defaultValue + } + + if value == PatternFlowRSVPPathObjectsCustomTypeChoice.INCREMENT { + obj.obj.Increment = NewPatternFlowRSVPPathObjectsCustomTypeCounter().Msg() + } + + if value == PatternFlowRSVPPathObjectsCustomTypeChoice.DECREMENT { + obj.obj.Decrement = NewPatternFlowRSVPPathObjectsCustomTypeCounter().Msg() + } - obj.obj.Name = &value return obj } -// Offset in bits relative to start of corresponding header field -// Offset returns a uint32 -func (obj *patternFlowGtpExtensionNextExtensionHeaderMetricTag) Offset() uint32 { +// description is TBD +// Value returns a uint32 +func (obj *patternFlowRSVPPathObjectsCustomType) Value() uint32 { - return *obj.obj.Offset + if obj.obj.Value == nil { + obj.SetChoice(PatternFlowRSVPPathObjectsCustomTypeChoice.VALUE) + } + + return *obj.obj.Value } -// Offset in bits relative to start of corresponding header field -// Offset returns a uint32 -func (obj *patternFlowGtpExtensionNextExtensionHeaderMetricTag) HasOffset() bool { - return obj.obj.Offset != nil +// description is TBD +// Value returns a uint32 +func (obj *patternFlowRSVPPathObjectsCustomType) HasValue() bool { + return obj.obj.Value != nil } -// Offset in bits relative to start of corresponding header field -// SetOffset sets the uint32 value in the PatternFlowGtpExtensionNextExtensionHeaderMetricTag object -func (obj *patternFlowGtpExtensionNextExtensionHeaderMetricTag) SetOffset(value uint32) PatternFlowGtpExtensionNextExtensionHeaderMetricTag { +// description is TBD +// SetValue sets the uint32 value in the PatternFlowRSVPPathObjectsCustomType object +func (obj *patternFlowRSVPPathObjectsCustomType) SetValue(value uint32) PatternFlowRSVPPathObjectsCustomType { + obj.SetChoice(PatternFlowRSVPPathObjectsCustomTypeChoice.VALUE) + obj.obj.Value = &value + return obj +} + +// description is TBD +// Values returns a []uint32 +func (obj *patternFlowRSVPPathObjectsCustomType) Values() []uint32 { + if obj.obj.Values == nil { + obj.SetValues([]uint32{0}) + } + return obj.obj.Values +} + +// description is TBD +// SetValues sets the []uint32 value in the PatternFlowRSVPPathObjectsCustomType object +func (obj *patternFlowRSVPPathObjectsCustomType) SetValues(value []uint32) PatternFlowRSVPPathObjectsCustomType { + obj.SetChoice(PatternFlowRSVPPathObjectsCustomTypeChoice.VALUES) + if obj.obj.Values == nil { + obj.obj.Values = make([]uint32, 0) + } + obj.obj.Values = value - obj.obj.Offset = &value return obj } -// Number of bits to track for metrics starting from configured offset of corresponding header field -// Length returns a uint32 -func (obj *patternFlowGtpExtensionNextExtensionHeaderMetricTag) Length() uint32 { +// description is TBD +// Increment returns a PatternFlowRSVPPathObjectsCustomTypeCounter +func (obj *patternFlowRSVPPathObjectsCustomType) Increment() PatternFlowRSVPPathObjectsCustomTypeCounter { + if obj.obj.Increment == nil { + obj.SetChoice(PatternFlowRSVPPathObjectsCustomTypeChoice.INCREMENT) + } + if obj.incrementHolder == nil { + obj.incrementHolder = &patternFlowRSVPPathObjectsCustomTypeCounter{obj: obj.obj.Increment} + } + return obj.incrementHolder +} - return *obj.obj.Length +// description is TBD +// Increment returns a PatternFlowRSVPPathObjectsCustomTypeCounter +func (obj *patternFlowRSVPPathObjectsCustomType) HasIncrement() bool { + return obj.obj.Increment != nil +} + +// description is TBD +// SetIncrement sets the PatternFlowRSVPPathObjectsCustomTypeCounter value in the PatternFlowRSVPPathObjectsCustomType object +func (obj *patternFlowRSVPPathObjectsCustomType) SetIncrement(value PatternFlowRSVPPathObjectsCustomTypeCounter) PatternFlowRSVPPathObjectsCustomType { + obj.SetChoice(PatternFlowRSVPPathObjectsCustomTypeChoice.INCREMENT) + obj.incrementHolder = nil + obj.obj.Increment = value.Msg() + return obj } -// Number of bits to track for metrics starting from configured offset of corresponding header field -// Length returns a uint32 -func (obj *patternFlowGtpExtensionNextExtensionHeaderMetricTag) HasLength() bool { - return obj.obj.Length != nil +// description is TBD +// Decrement returns a PatternFlowRSVPPathObjectsCustomTypeCounter +func (obj *patternFlowRSVPPathObjectsCustomType) Decrement() PatternFlowRSVPPathObjectsCustomTypeCounter { + if obj.obj.Decrement == nil { + obj.SetChoice(PatternFlowRSVPPathObjectsCustomTypeChoice.DECREMENT) + } + if obj.decrementHolder == nil { + obj.decrementHolder = &patternFlowRSVPPathObjectsCustomTypeCounter{obj: obj.obj.Decrement} + } + return obj.decrementHolder } -// Number of bits to track for metrics starting from configured offset of corresponding header field -// SetLength sets the uint32 value in the PatternFlowGtpExtensionNextExtensionHeaderMetricTag object -func (obj *patternFlowGtpExtensionNextExtensionHeaderMetricTag) SetLength(value uint32) PatternFlowGtpExtensionNextExtensionHeaderMetricTag { +// description is TBD +// Decrement returns a PatternFlowRSVPPathObjectsCustomTypeCounter +func (obj *patternFlowRSVPPathObjectsCustomType) HasDecrement() bool { + return obj.obj.Decrement != nil +} + +// description is TBD +// SetDecrement sets the PatternFlowRSVPPathObjectsCustomTypeCounter value in the PatternFlowRSVPPathObjectsCustomType object +func (obj *patternFlowRSVPPathObjectsCustomType) SetDecrement(value PatternFlowRSVPPathObjectsCustomTypeCounter) PatternFlowRSVPPathObjectsCustomType { + obj.SetChoice(PatternFlowRSVPPathObjectsCustomTypeChoice.DECREMENT) + obj.decrementHolder = nil + obj.obj.Decrement = value.Msg() - obj.obj.Length = &value return obj } -func (obj *patternFlowGtpExtensionNextExtensionHeaderMetricTag) validateObj(vObj *validation, set_default bool) { +func (obj *patternFlowRSVPPathObjectsCustomType) validateObj(vObj *validation, set_default bool) { if set_default { obj.setDefault() } - // Name is required - if obj.obj.Name == nil { - vObj.validationErrors = append(vObj.validationErrors, "Name is required field on interface PatternFlowGtpExtensionNextExtensionHeaderMetricTag") - } - - if obj.obj.Offset != nil { + if obj.obj.Value != nil { - if *obj.obj.Offset > 7 { + if *obj.obj.Value > 255 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowGtpExtensionNextExtensionHeaderMetricTag.Offset <= 7 but Got %d", *obj.obj.Offset)) + fmt.Sprintf("0 <= PatternFlowRSVPPathObjectsCustomType.Value <= 255 but Got %d", *obj.obj.Value)) } } - if obj.obj.Length != nil { + if obj.obj.Values != nil { + + for _, item := range obj.obj.Values { + if item > 255 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("min(uint32) <= PatternFlowRSVPPathObjectsCustomType.Values <= 255 but Got %d", item)) + } - if *obj.obj.Length < 1 || *obj.obj.Length > 8 { - vObj.validationErrors = append( - vObj.validationErrors, - fmt.Sprintf("1 <= PatternFlowGtpExtensionNextExtensionHeaderMetricTag.Length <= 8 but Got %d", *obj.obj.Length)) } } -} + if obj.obj.Increment != nil { -func (obj *patternFlowGtpExtensionNextExtensionHeaderMetricTag) setDefault() { - if obj.obj.Offset == nil { - obj.SetOffset(0) + obj.Increment().validateObj(vObj, set_default) } - if obj.obj.Length == nil { - obj.SetLength(8) + + if obj.obj.Decrement != nil { + + obj.Decrement().validateObj(vObj, set_default) } } -// ***** PatternFlowIcmpEchoTypeCounter ***** -type patternFlowIcmpEchoTypeCounter struct { +func (obj *patternFlowRSVPPathObjectsCustomType) setDefault() { + if obj.obj.Choice == nil { + obj.SetChoice(PatternFlowRSVPPathObjectsCustomTypeChoice.VALUE) + + } + +} + +// ***** FlowRSVPObjectOptionsCustomLength ***** +type flowRSVPObjectOptionsCustomLength struct { validation - obj *otg.PatternFlowIcmpEchoTypeCounter + obj *otg.FlowRSVPObjectOptionsCustomLength } -func NewPatternFlowIcmpEchoTypeCounter() PatternFlowIcmpEchoTypeCounter { - obj := patternFlowIcmpEchoTypeCounter{obj: &otg.PatternFlowIcmpEchoTypeCounter{}} +func NewFlowRSVPObjectOptionsCustomLength() FlowRSVPObjectOptionsCustomLength { + obj := flowRSVPObjectOptionsCustomLength{obj: &otg.FlowRSVPObjectOptionsCustomLength{}} obj.setDefault() return &obj } -func (obj *patternFlowIcmpEchoTypeCounter) Msg() *otg.PatternFlowIcmpEchoTypeCounter { +func (obj *flowRSVPObjectOptionsCustomLength) Msg() *otg.FlowRSVPObjectOptionsCustomLength { return obj.obj } -func (obj *patternFlowIcmpEchoTypeCounter) SetMsg(msg *otg.PatternFlowIcmpEchoTypeCounter) PatternFlowIcmpEchoTypeCounter { +func (obj *flowRSVPObjectOptionsCustomLength) SetMsg(msg *otg.FlowRSVPObjectOptionsCustomLength) FlowRSVPObjectOptionsCustomLength { proto.Merge(obj.obj, msg) return obj } -func (obj *patternFlowIcmpEchoTypeCounter) ToProto() (*otg.PatternFlowIcmpEchoTypeCounter, error) { +func (obj *flowRSVPObjectOptionsCustomLength) ToProto() (*otg.FlowRSVPObjectOptionsCustomLength, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -289685,7 +334052,7 @@ func (obj *patternFlowIcmpEchoTypeCounter) ToProto() (*otg.PatternFlowIcmpEchoTy return obj.Msg(), nil } -func (obj *patternFlowIcmpEchoTypeCounter) FromProto(msg *otg.PatternFlowIcmpEchoTypeCounter) (PatternFlowIcmpEchoTypeCounter, error) { +func (obj *flowRSVPObjectOptionsCustomLength) FromProto(msg *otg.FlowRSVPObjectOptionsCustomLength) (FlowRSVPObjectOptionsCustomLength, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -289694,7 +334061,7 @@ func (obj *patternFlowIcmpEchoTypeCounter) FromProto(msg *otg.PatternFlowIcmpEch return newObj, nil } -func (obj *patternFlowIcmpEchoTypeCounter) ToPbText() (string, error) { +func (obj *flowRSVPObjectOptionsCustomLength) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -289706,7 +334073,7 @@ func (obj *patternFlowIcmpEchoTypeCounter) ToPbText() (string, error) { return string(protoMarshal), nil } -func (obj *patternFlowIcmpEchoTypeCounter) FromPbText(value string) error { +func (obj *flowRSVPObjectOptionsCustomLength) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj @@ -289719,7 +334086,7 @@ func (obj *patternFlowIcmpEchoTypeCounter) FromPbText(value string) error { return retObj } -func (obj *patternFlowIcmpEchoTypeCounter) ToYaml() (string, error) { +func (obj *flowRSVPObjectOptionsCustomLength) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -289740,7 +334107,7 @@ func (obj *patternFlowIcmpEchoTypeCounter) ToYaml() (string, error) { return string(data), nil } -func (obj *patternFlowIcmpEchoTypeCounter) FromYaml(value string) error { +func (obj *flowRSVPObjectOptionsCustomLength) FromYaml(value string) error { if value == "" { value = "{}" } @@ -289765,7 +334132,7 @@ func (obj *patternFlowIcmpEchoTypeCounter) FromYaml(value string) error { return nil } -func (obj *patternFlowIcmpEchoTypeCounter) ToJson() (string, error) { +func (obj *flowRSVPObjectOptionsCustomLength) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -289783,7 +334150,7 @@ func (obj *patternFlowIcmpEchoTypeCounter) ToJson() (string, error) { return string(data), nil } -func (obj *patternFlowIcmpEchoTypeCounter) FromJson(value string) error { +func (obj *flowRSVPObjectOptionsCustomLength) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -289804,19 +334171,19 @@ func (obj *patternFlowIcmpEchoTypeCounter) FromJson(value string) error { return nil } -func (obj *patternFlowIcmpEchoTypeCounter) validateToAndFrom() error { +func (obj *flowRSVPObjectOptionsCustomLength) validateToAndFrom() error { // emptyVars() obj.validateObj(&obj.validation, true) return obj.validationResult() } -func (obj *patternFlowIcmpEchoTypeCounter) Validate() error { +func (obj *flowRSVPObjectOptionsCustomLength) Validate() error { // emptyVars() obj.validateObj(&obj.validation, false) return obj.validationResult() } -func (obj *patternFlowIcmpEchoTypeCounter) String() string { +func (obj *flowRSVPObjectOptionsCustomLength) String() string { str, err := obj.ToYaml() if err != nil { return err.Error() @@ -289824,12 +334191,12 @@ func (obj *patternFlowIcmpEchoTypeCounter) String() string { return str } -func (obj *patternFlowIcmpEchoTypeCounter) Clone() (PatternFlowIcmpEchoTypeCounter, error) { +func (obj *flowRSVPObjectOptionsCustomLength) Clone() (FlowRSVPObjectOptionsCustomLength, error) { vErr := obj.Validate() if vErr != nil { return nil, vErr } - newObj := NewPatternFlowIcmpEchoTypeCounter() + newObj := NewFlowRSVPObjectOptionsCustomLength() data, err := proto.Marshal(obj.Msg()) if err != nil { return nil, err @@ -289841,199 +334208,186 @@ func (obj *patternFlowIcmpEchoTypeCounter) Clone() (PatternFlowIcmpEchoTypeCount return newObj, nil } -// PatternFlowIcmpEchoTypeCounter is integer counter pattern -type PatternFlowIcmpEchoTypeCounter interface { +// FlowRSVPObjectOptionsCustomLength is length for custom options. +type FlowRSVPObjectOptionsCustomLength interface { Validation - // Msg marshals PatternFlowIcmpEchoTypeCounter to protobuf object *otg.PatternFlowIcmpEchoTypeCounter + // Msg marshals FlowRSVPObjectOptionsCustomLength to protobuf object *otg.FlowRSVPObjectOptionsCustomLength // and doesn't set defaults - Msg() *otg.PatternFlowIcmpEchoTypeCounter - // SetMsg unmarshals PatternFlowIcmpEchoTypeCounter from protobuf object *otg.PatternFlowIcmpEchoTypeCounter + Msg() *otg.FlowRSVPObjectOptionsCustomLength + // SetMsg unmarshals FlowRSVPObjectOptionsCustomLength from protobuf object *otg.FlowRSVPObjectOptionsCustomLength // and doesn't set defaults - SetMsg(*otg.PatternFlowIcmpEchoTypeCounter) PatternFlowIcmpEchoTypeCounter - // ToProto marshals PatternFlowIcmpEchoTypeCounter to protobuf object *otg.PatternFlowIcmpEchoTypeCounter - ToProto() (*otg.PatternFlowIcmpEchoTypeCounter, error) - // ToPbText marshals PatternFlowIcmpEchoTypeCounter to protobuf text + SetMsg(*otg.FlowRSVPObjectOptionsCustomLength) FlowRSVPObjectOptionsCustomLength + // ToProto marshals FlowRSVPObjectOptionsCustomLength to protobuf object *otg.FlowRSVPObjectOptionsCustomLength + ToProto() (*otg.FlowRSVPObjectOptionsCustomLength, error) + // ToPbText marshals FlowRSVPObjectOptionsCustomLength to protobuf text ToPbText() (string, error) - // ToYaml marshals PatternFlowIcmpEchoTypeCounter to YAML text + // ToYaml marshals FlowRSVPObjectOptionsCustomLength to YAML text ToYaml() (string, error) - // ToJson marshals PatternFlowIcmpEchoTypeCounter to JSON text + // ToJson marshals FlowRSVPObjectOptionsCustomLength to JSON text ToJson() (string, error) - // FromProto unmarshals PatternFlowIcmpEchoTypeCounter from protobuf object *otg.PatternFlowIcmpEchoTypeCounter - FromProto(msg *otg.PatternFlowIcmpEchoTypeCounter) (PatternFlowIcmpEchoTypeCounter, error) - // FromPbText unmarshals PatternFlowIcmpEchoTypeCounter from protobuf text + // FromProto unmarshals FlowRSVPObjectOptionsCustomLength from protobuf object *otg.FlowRSVPObjectOptionsCustomLength + FromProto(msg *otg.FlowRSVPObjectOptionsCustomLength) (FlowRSVPObjectOptionsCustomLength, error) + // FromPbText unmarshals FlowRSVPObjectOptionsCustomLength from protobuf text FromPbText(value string) error - // FromYaml unmarshals PatternFlowIcmpEchoTypeCounter from YAML text + // FromYaml unmarshals FlowRSVPObjectOptionsCustomLength from YAML text FromYaml(value string) error - // FromJson unmarshals PatternFlowIcmpEchoTypeCounter from JSON text + // FromJson unmarshals FlowRSVPObjectOptionsCustomLength from JSON text FromJson(value string) error - // Validate validates PatternFlowIcmpEchoTypeCounter + // Validate validates FlowRSVPObjectOptionsCustomLength Validate() error // A stringer function String() string // Clones the object - Clone() (PatternFlowIcmpEchoTypeCounter, error) + Clone() (FlowRSVPObjectOptionsCustomLength, error) validateToAndFrom() error validateObj(vObj *validation, set_default bool) setDefault() - // Start returns uint32, set in PatternFlowIcmpEchoTypeCounter. - Start() uint32 - // SetStart assigns uint32 provided by user to PatternFlowIcmpEchoTypeCounter - SetStart(value uint32) PatternFlowIcmpEchoTypeCounter - // HasStart checks if Start has been set in PatternFlowIcmpEchoTypeCounter - HasStart() bool - // Step returns uint32, set in PatternFlowIcmpEchoTypeCounter. - Step() uint32 - // SetStep assigns uint32 provided by user to PatternFlowIcmpEchoTypeCounter - SetStep(value uint32) PatternFlowIcmpEchoTypeCounter - // HasStep checks if Step has been set in PatternFlowIcmpEchoTypeCounter - HasStep() bool - // Count returns uint32, set in PatternFlowIcmpEchoTypeCounter. - Count() uint32 - // SetCount assigns uint32 provided by user to PatternFlowIcmpEchoTypeCounter - SetCount(value uint32) PatternFlowIcmpEchoTypeCounter - // HasCount checks if Count has been set in PatternFlowIcmpEchoTypeCounter - HasCount() bool + // Choice returns FlowRSVPObjectOptionsCustomLengthChoiceEnum, set in FlowRSVPObjectOptionsCustomLength + Choice() FlowRSVPObjectOptionsCustomLengthChoiceEnum + // SetChoice assigns FlowRSVPObjectOptionsCustomLengthChoiceEnum provided by user to FlowRSVPObjectOptionsCustomLength + SetChoice(value FlowRSVPObjectOptionsCustomLengthChoiceEnum) FlowRSVPObjectOptionsCustomLength + // HasChoice checks if Choice has been set in FlowRSVPObjectOptionsCustomLength + HasChoice() bool + // Auto returns uint32, set in FlowRSVPObjectOptionsCustomLength. + Auto() uint32 + // HasAuto checks if Auto has been set in FlowRSVPObjectOptionsCustomLength + HasAuto() bool + // Value returns uint32, set in FlowRSVPObjectOptionsCustomLength. + Value() uint32 + // SetValue assigns uint32 provided by user to FlowRSVPObjectOptionsCustomLength + SetValue(value uint32) FlowRSVPObjectOptionsCustomLength + // HasValue checks if Value has been set in FlowRSVPObjectOptionsCustomLength + HasValue() bool } -// description is TBD -// Start returns a uint32 -func (obj *patternFlowIcmpEchoTypeCounter) Start() uint32 { +type FlowRSVPObjectOptionsCustomLengthChoiceEnum string - return *obj.obj.Start +// Enum of Choice on FlowRSVPObjectOptionsCustomLength +var FlowRSVPObjectOptionsCustomLengthChoice = struct { + AUTO FlowRSVPObjectOptionsCustomLengthChoiceEnum + VALUE FlowRSVPObjectOptionsCustomLengthChoiceEnum +}{ + AUTO: FlowRSVPObjectOptionsCustomLengthChoiceEnum("auto"), + VALUE: FlowRSVPObjectOptionsCustomLengthChoiceEnum("value"), +} +func (obj *flowRSVPObjectOptionsCustomLength) Choice() FlowRSVPObjectOptionsCustomLengthChoiceEnum { + return FlowRSVPObjectOptionsCustomLengthChoiceEnum(obj.obj.Choice.Enum().String()) } -// description is TBD -// Start returns a uint32 -func (obj *patternFlowIcmpEchoTypeCounter) HasStart() bool { - return obj.obj.Start != nil +// auto or configured value. +// Choice returns a string +func (obj *flowRSVPObjectOptionsCustomLength) HasChoice() bool { + return obj.obj.Choice != nil } -// description is TBD -// SetStart sets the uint32 value in the PatternFlowIcmpEchoTypeCounter object -func (obj *patternFlowIcmpEchoTypeCounter) SetStart(value uint32) PatternFlowIcmpEchoTypeCounter { +func (obj *flowRSVPObjectOptionsCustomLength) SetChoice(value FlowRSVPObjectOptionsCustomLengthChoiceEnum) FlowRSVPObjectOptionsCustomLength { + intValue, ok := otg.FlowRSVPObjectOptionsCustomLength_Choice_Enum_value[string(value)] + if !ok { + obj.validationErrors = append(obj.validationErrors, fmt.Sprintf( + "%s is not a valid choice on FlowRSVPObjectOptionsCustomLengthChoiceEnum", string(value))) + return obj + } + enumValue := otg.FlowRSVPObjectOptionsCustomLength_Choice_Enum(intValue) + obj.obj.Choice = &enumValue + obj.obj.Value = nil + obj.obj.Auto = nil + + if value == FlowRSVPObjectOptionsCustomLengthChoice.AUTO { + defaultValue := uint32(4) + obj.obj.Auto = &defaultValue + } + + if value == FlowRSVPObjectOptionsCustomLengthChoice.VALUE { + defaultValue := uint32(4) + obj.obj.Value = &defaultValue + } - obj.obj.Start = &value return obj } -// description is TBD -// Step returns a uint32 -func (obj *patternFlowIcmpEchoTypeCounter) Step() uint32 { +// The OTG implementation can provide a system generated value for this property. If the OTG is unable to generate a value the default value must be used. +// Auto returns a uint32 +func (obj *flowRSVPObjectOptionsCustomLength) Auto() uint32 { - return *obj.obj.Step + if obj.obj.Auto == nil { + obj.SetChoice(FlowRSVPObjectOptionsCustomLengthChoice.AUTO) + } -} + return *obj.obj.Auto -// description is TBD -// Step returns a uint32 -func (obj *patternFlowIcmpEchoTypeCounter) HasStep() bool { - return obj.obj.Step != nil } -// description is TBD -// SetStep sets the uint32 value in the PatternFlowIcmpEchoTypeCounter object -func (obj *patternFlowIcmpEchoTypeCounter) SetStep(value uint32) PatternFlowIcmpEchoTypeCounter { - - obj.obj.Step = &value - return obj +// The OTG implementation can provide a system generated value for this property. If the OTG is unable to generate a value the default value must be used. +// Auto returns a uint32 +func (obj *flowRSVPObjectOptionsCustomLength) HasAuto() bool { + return obj.obj.Auto != nil } // description is TBD -// Count returns a uint32 -func (obj *patternFlowIcmpEchoTypeCounter) Count() uint32 { +// Value returns a uint32 +func (obj *flowRSVPObjectOptionsCustomLength) Value() uint32 { - return *obj.obj.Count + if obj.obj.Value == nil { + obj.SetChoice(FlowRSVPObjectOptionsCustomLengthChoice.VALUE) + } + + return *obj.obj.Value } // description is TBD -// Count returns a uint32 -func (obj *patternFlowIcmpEchoTypeCounter) HasCount() bool { - return obj.obj.Count != nil +// Value returns a uint32 +func (obj *flowRSVPObjectOptionsCustomLength) HasValue() bool { + return obj.obj.Value != nil } // description is TBD -// SetCount sets the uint32 value in the PatternFlowIcmpEchoTypeCounter object -func (obj *patternFlowIcmpEchoTypeCounter) SetCount(value uint32) PatternFlowIcmpEchoTypeCounter { - - obj.obj.Count = &value +// SetValue sets the uint32 value in the FlowRSVPObjectOptionsCustomLength object +func (obj *flowRSVPObjectOptionsCustomLength) SetValue(value uint32) FlowRSVPObjectOptionsCustomLength { + obj.SetChoice(FlowRSVPObjectOptionsCustomLengthChoice.VALUE) + obj.obj.Value = &value return obj } -func (obj *patternFlowIcmpEchoTypeCounter) validateObj(vObj *validation, set_default bool) { +func (obj *flowRSVPObjectOptionsCustomLength) validateObj(vObj *validation, set_default bool) { if set_default { obj.setDefault() } - if obj.obj.Start != nil { - - if *obj.obj.Start > 255 { - vObj.validationErrors = append( - vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowIcmpEchoTypeCounter.Start <= 255 but Got %d", *obj.obj.Start)) - } - - } - - if obj.obj.Step != nil { - - if *obj.obj.Step > 255 { - vObj.validationErrors = append( - vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowIcmpEchoTypeCounter.Step <= 255 but Got %d", *obj.obj.Step)) - } - - } - - if obj.obj.Count != nil { - - if *obj.obj.Count > 255 { - vObj.validationErrors = append( - vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowIcmpEchoTypeCounter.Count <= 255 but Got %d", *obj.obj.Count)) - } - - } - } -func (obj *patternFlowIcmpEchoTypeCounter) setDefault() { - if obj.obj.Start == nil { - obj.SetStart(8) - } - if obj.obj.Step == nil { - obj.SetStep(1) - } - if obj.obj.Count == nil { - obj.SetCount(1) +func (obj *flowRSVPObjectOptionsCustomLength) setDefault() { + if obj.obj.Choice == nil { + obj.SetChoice(FlowRSVPObjectOptionsCustomLengthChoice.AUTO) + } } -// ***** PatternFlowIcmpEchoTypeMetricTag ***** -type patternFlowIcmpEchoTypeMetricTag struct { +// ***** MACRouteAddress ***** +type mACRouteAddress struct { validation - obj *otg.PatternFlowIcmpEchoTypeMetricTag + obj *otg.MACRouteAddress } -func NewPatternFlowIcmpEchoTypeMetricTag() PatternFlowIcmpEchoTypeMetricTag { - obj := patternFlowIcmpEchoTypeMetricTag{obj: &otg.PatternFlowIcmpEchoTypeMetricTag{}} +func NewMACRouteAddress() MACRouteAddress { + obj := mACRouteAddress{obj: &otg.MACRouteAddress{}} obj.setDefault() return &obj } -func (obj *patternFlowIcmpEchoTypeMetricTag) Msg() *otg.PatternFlowIcmpEchoTypeMetricTag { +func (obj *mACRouteAddress) Msg() *otg.MACRouteAddress { return obj.obj } -func (obj *patternFlowIcmpEchoTypeMetricTag) SetMsg(msg *otg.PatternFlowIcmpEchoTypeMetricTag) PatternFlowIcmpEchoTypeMetricTag { +func (obj *mACRouteAddress) SetMsg(msg *otg.MACRouteAddress) MACRouteAddress { proto.Merge(obj.obj, msg) return obj } -func (obj *patternFlowIcmpEchoTypeMetricTag) ToProto() (*otg.PatternFlowIcmpEchoTypeMetricTag, error) { +func (obj *mACRouteAddress) ToProto() (*otg.MACRouteAddress, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -290041,7 +334395,7 @@ func (obj *patternFlowIcmpEchoTypeMetricTag) ToProto() (*otg.PatternFlowIcmpEcho return obj.Msg(), nil } -func (obj *patternFlowIcmpEchoTypeMetricTag) FromProto(msg *otg.PatternFlowIcmpEchoTypeMetricTag) (PatternFlowIcmpEchoTypeMetricTag, error) { +func (obj *mACRouteAddress) FromProto(msg *otg.MACRouteAddress) (MACRouteAddress, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -290050,7 +334404,7 @@ func (obj *patternFlowIcmpEchoTypeMetricTag) FromProto(msg *otg.PatternFlowIcmpE return newObj, nil } -func (obj *patternFlowIcmpEchoTypeMetricTag) ToPbText() (string, error) { +func (obj *mACRouteAddress) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -290062,7 +334416,7 @@ func (obj *patternFlowIcmpEchoTypeMetricTag) ToPbText() (string, error) { return string(protoMarshal), nil } -func (obj *patternFlowIcmpEchoTypeMetricTag) FromPbText(value string) error { +func (obj *mACRouteAddress) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj @@ -290075,7 +334429,7 @@ func (obj *patternFlowIcmpEchoTypeMetricTag) FromPbText(value string) error { return retObj } -func (obj *patternFlowIcmpEchoTypeMetricTag) ToYaml() (string, error) { +func (obj *mACRouteAddress) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -290096,7 +334450,7 @@ func (obj *patternFlowIcmpEchoTypeMetricTag) ToYaml() (string, error) { return string(data), nil } -func (obj *patternFlowIcmpEchoTypeMetricTag) FromYaml(value string) error { +func (obj *mACRouteAddress) FromYaml(value string) error { if value == "" { value = "{}" } @@ -290121,7 +334475,7 @@ func (obj *patternFlowIcmpEchoTypeMetricTag) FromYaml(value string) error { return nil } -func (obj *patternFlowIcmpEchoTypeMetricTag) ToJson() (string, error) { +func (obj *mACRouteAddress) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -290139,7 +334493,7 @@ func (obj *patternFlowIcmpEchoTypeMetricTag) ToJson() (string, error) { return string(data), nil } -func (obj *patternFlowIcmpEchoTypeMetricTag) FromJson(value string) error { +func (obj *mACRouteAddress) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -290160,19 +334514,19 @@ func (obj *patternFlowIcmpEchoTypeMetricTag) FromJson(value string) error { return nil } -func (obj *patternFlowIcmpEchoTypeMetricTag) validateToAndFrom() error { +func (obj *mACRouteAddress) validateToAndFrom() error { // emptyVars() obj.validateObj(&obj.validation, true) return obj.validationResult() } -func (obj *patternFlowIcmpEchoTypeMetricTag) Validate() error { +func (obj *mACRouteAddress) Validate() error { // emptyVars() obj.validateObj(&obj.validation, false) return obj.validationResult() } -func (obj *patternFlowIcmpEchoTypeMetricTag) String() string { +func (obj *mACRouteAddress) String() string { str, err := obj.ToYaml() if err != nil { return err.Error() @@ -290180,12 +334534,12 @@ func (obj *patternFlowIcmpEchoTypeMetricTag) String() string { return str } -func (obj *patternFlowIcmpEchoTypeMetricTag) Clone() (PatternFlowIcmpEchoTypeMetricTag, error) { +func (obj *mACRouteAddress) Clone() (MACRouteAddress, error) { vErr := obj.Validate() if vErr != nil { return nil, vErr } - newObj := NewPatternFlowIcmpEchoTypeMetricTag() + newObj := NewMACRouteAddress() data, err := proto.Marshal(obj.Msg()) if err != nil { return nil, err @@ -290197,183 +334551,232 @@ func (obj *patternFlowIcmpEchoTypeMetricTag) Clone() (PatternFlowIcmpEchoTypeMet return newObj, nil } -// PatternFlowIcmpEchoTypeMetricTag is metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. -type PatternFlowIcmpEchoTypeMetricTag interface { +// MACRouteAddress is a container for MAC route addresses. +type MACRouteAddress interface { Validation - // Msg marshals PatternFlowIcmpEchoTypeMetricTag to protobuf object *otg.PatternFlowIcmpEchoTypeMetricTag + // Msg marshals MACRouteAddress to protobuf object *otg.MACRouteAddress // and doesn't set defaults - Msg() *otg.PatternFlowIcmpEchoTypeMetricTag - // SetMsg unmarshals PatternFlowIcmpEchoTypeMetricTag from protobuf object *otg.PatternFlowIcmpEchoTypeMetricTag + Msg() *otg.MACRouteAddress + // SetMsg unmarshals MACRouteAddress from protobuf object *otg.MACRouteAddress // and doesn't set defaults - SetMsg(*otg.PatternFlowIcmpEchoTypeMetricTag) PatternFlowIcmpEchoTypeMetricTag - // ToProto marshals PatternFlowIcmpEchoTypeMetricTag to protobuf object *otg.PatternFlowIcmpEchoTypeMetricTag - ToProto() (*otg.PatternFlowIcmpEchoTypeMetricTag, error) - // ToPbText marshals PatternFlowIcmpEchoTypeMetricTag to protobuf text + SetMsg(*otg.MACRouteAddress) MACRouteAddress + // ToProto marshals MACRouteAddress to protobuf object *otg.MACRouteAddress + ToProto() (*otg.MACRouteAddress, error) + // ToPbText marshals MACRouteAddress to protobuf text ToPbText() (string, error) - // ToYaml marshals PatternFlowIcmpEchoTypeMetricTag to YAML text + // ToYaml marshals MACRouteAddress to YAML text ToYaml() (string, error) - // ToJson marshals PatternFlowIcmpEchoTypeMetricTag to JSON text + // ToJson marshals MACRouteAddress to JSON text ToJson() (string, error) - // FromProto unmarshals PatternFlowIcmpEchoTypeMetricTag from protobuf object *otg.PatternFlowIcmpEchoTypeMetricTag - FromProto(msg *otg.PatternFlowIcmpEchoTypeMetricTag) (PatternFlowIcmpEchoTypeMetricTag, error) - // FromPbText unmarshals PatternFlowIcmpEchoTypeMetricTag from protobuf text + // FromProto unmarshals MACRouteAddress from protobuf object *otg.MACRouteAddress + FromProto(msg *otg.MACRouteAddress) (MACRouteAddress, error) + // FromPbText unmarshals MACRouteAddress from protobuf text FromPbText(value string) error - // FromYaml unmarshals PatternFlowIcmpEchoTypeMetricTag from YAML text + // FromYaml unmarshals MACRouteAddress from YAML text FromYaml(value string) error - // FromJson unmarshals PatternFlowIcmpEchoTypeMetricTag from JSON text + // FromJson unmarshals MACRouteAddress from JSON text FromJson(value string) error - // Validate validates PatternFlowIcmpEchoTypeMetricTag + // Validate validates MACRouteAddress Validate() error // A stringer function String() string // Clones the object - Clone() (PatternFlowIcmpEchoTypeMetricTag, error) + Clone() (MACRouteAddress, error) validateToAndFrom() error validateObj(vObj *validation, set_default bool) setDefault() - // Name returns string, set in PatternFlowIcmpEchoTypeMetricTag. - Name() string - // SetName assigns string provided by user to PatternFlowIcmpEchoTypeMetricTag - SetName(value string) PatternFlowIcmpEchoTypeMetricTag - // Offset returns uint32, set in PatternFlowIcmpEchoTypeMetricTag. - Offset() uint32 - // SetOffset assigns uint32 provided by user to PatternFlowIcmpEchoTypeMetricTag - SetOffset(value uint32) PatternFlowIcmpEchoTypeMetricTag - // HasOffset checks if Offset has been set in PatternFlowIcmpEchoTypeMetricTag - HasOffset() bool - // Length returns uint32, set in PatternFlowIcmpEchoTypeMetricTag. - Length() uint32 - // SetLength assigns uint32 provided by user to PatternFlowIcmpEchoTypeMetricTag - SetLength(value uint32) PatternFlowIcmpEchoTypeMetricTag - // HasLength checks if Length has been set in PatternFlowIcmpEchoTypeMetricTag - HasLength() bool + // Address returns string, set in MACRouteAddress. + Address() string + // SetAddress assigns string provided by user to MACRouteAddress + SetAddress(value string) MACRouteAddress + // Prefix returns uint32, set in MACRouteAddress. + Prefix() uint32 + // SetPrefix assigns uint32 provided by user to MACRouteAddress + SetPrefix(value uint32) MACRouteAddress + // HasPrefix checks if Prefix has been set in MACRouteAddress + HasPrefix() bool + // Count returns uint32, set in MACRouteAddress. + Count() uint32 + // SetCount assigns uint32 provided by user to MACRouteAddress + SetCount(value uint32) MACRouteAddress + // HasCount checks if Count has been set in MACRouteAddress + HasCount() bool + // Step returns uint32, set in MACRouteAddress. + Step() uint32 + // SetStep assigns uint32 provided by user to MACRouteAddress + SetStep(value uint32) MACRouteAddress + // HasStep checks if Step has been set in MACRouteAddress + HasStep() bool } -// Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field -// Name returns a string -func (obj *patternFlowIcmpEchoTypeMetricTag) Name() string { +// The starting address of the MAC Range. +// Address returns a string +func (obj *mACRouteAddress) Address() string { - return *obj.obj.Name + return *obj.obj.Address } -// Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field -// SetName sets the string value in the PatternFlowIcmpEchoTypeMetricTag object -func (obj *patternFlowIcmpEchoTypeMetricTag) SetName(value string) PatternFlowIcmpEchoTypeMetricTag { +// The starting address of the MAC Range. +// SetAddress sets the string value in the MACRouteAddress object +func (obj *mACRouteAddress) SetAddress(value string) MACRouteAddress { - obj.obj.Name = &value + obj.obj.Address = &value return obj } -// Offset in bits relative to start of corresponding header field -// Offset returns a uint32 -func (obj *patternFlowIcmpEchoTypeMetricTag) Offset() uint32 { +// The MAC prefix length to be applied to the address. +// Prefix returns a uint32 +func (obj *mACRouteAddress) Prefix() uint32 { - return *obj.obj.Offset + return *obj.obj.Prefix } -// Offset in bits relative to start of corresponding header field -// Offset returns a uint32 -func (obj *patternFlowIcmpEchoTypeMetricTag) HasOffset() bool { - return obj.obj.Offset != nil +// The MAC prefix length to be applied to the address. +// Prefix returns a uint32 +func (obj *mACRouteAddress) HasPrefix() bool { + return obj.obj.Prefix != nil } -// Offset in bits relative to start of corresponding header field -// SetOffset sets the uint32 value in the PatternFlowIcmpEchoTypeMetricTag object -func (obj *patternFlowIcmpEchoTypeMetricTag) SetOffset(value uint32) PatternFlowIcmpEchoTypeMetricTag { +// The MAC prefix length to be applied to the address. +// SetPrefix sets the uint32 value in the MACRouteAddress object +func (obj *mACRouteAddress) SetPrefix(value uint32) MACRouteAddress { - obj.obj.Offset = &value + obj.obj.Prefix = &value return obj } -// Number of bits to track for metrics starting from configured offset of corresponding header field -// Length returns a uint32 -func (obj *patternFlowIcmpEchoTypeMetricTag) Length() uint32 { +// The total number of mac addresses in the range. +// Count returns a uint32 +func (obj *mACRouteAddress) Count() uint32 { - return *obj.obj.Length + return *obj.obj.Count } -// Number of bits to track for metrics starting from configured offset of corresponding header field -// Length returns a uint32 -func (obj *patternFlowIcmpEchoTypeMetricTag) HasLength() bool { - return obj.obj.Length != nil +// The total number of mac addresses in the range. +// Count returns a uint32 +func (obj *mACRouteAddress) HasCount() bool { + return obj.obj.Count != nil } -// Number of bits to track for metrics starting from configured offset of corresponding header field -// SetLength sets the uint32 value in the PatternFlowIcmpEchoTypeMetricTag object -func (obj *patternFlowIcmpEchoTypeMetricTag) SetLength(value uint32) PatternFlowIcmpEchoTypeMetricTag { +// The total number of mac addresses in the range. +// SetCount sets the uint32 value in the MACRouteAddress object +func (obj *mACRouteAddress) SetCount(value uint32) MACRouteAddress { - obj.obj.Length = &value + obj.obj.Count = &value return obj } -func (obj *patternFlowIcmpEchoTypeMetricTag) validateObj(vObj *validation, set_default bool) { +// Increments the mac address prefixes within a mac range where multiple routes are present. The value is incremented according to the mac prefix Length and Step. +// Step returns a uint32 +func (obj *mACRouteAddress) Step() uint32 { + + return *obj.obj.Step + +} + +// Increments the mac address prefixes within a mac range where multiple routes are present. The value is incremented according to the mac prefix Length and Step. +// Step returns a uint32 +func (obj *mACRouteAddress) HasStep() bool { + return obj.obj.Step != nil +} + +// Increments the mac address prefixes within a mac range where multiple routes are present. The value is incremented according to the mac prefix Length and Step. +// SetStep sets the uint32 value in the MACRouteAddress object +func (obj *mACRouteAddress) SetStep(value uint32) MACRouteAddress { + + obj.obj.Step = &value + return obj +} + +func (obj *mACRouteAddress) validateObj(vObj *validation, set_default bool) { if set_default { obj.setDefault() } - // Name is required - if obj.obj.Name == nil { - vObj.validationErrors = append(vObj.validationErrors, "Name is required field on interface PatternFlowIcmpEchoTypeMetricTag") + // Address is required + if obj.obj.Address == nil { + vObj.validationErrors = append(vObj.validationErrors, "Address is required field on interface MACRouteAddress") } + if obj.obj.Address != nil { - if obj.obj.Offset != nil { + err := obj.validateMac(obj.Address()) + if err != nil { + vObj.validationErrors = append(vObj.validationErrors, fmt.Sprintf("%s %s", err.Error(), "on MACRouteAddress.Address")) + } - if *obj.obj.Offset > 7 { + } + + if obj.obj.Prefix != nil { + + if *obj.obj.Prefix > 48 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowIcmpEchoTypeMetricTag.Offset <= 7 but Got %d", *obj.obj.Offset)) + fmt.Sprintf("0 <= MACRouteAddress.Prefix <= 48 but Got %d", *obj.obj.Prefix)) } } - if obj.obj.Length != nil { + if obj.obj.Count != nil { - if *obj.obj.Length < 1 || *obj.obj.Length > 8 { + if *obj.obj.Count < 1 || *obj.obj.Count > 4294967295 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("1 <= PatternFlowIcmpEchoTypeMetricTag.Length <= 8 but Got %d", *obj.obj.Length)) + fmt.Sprintf("1 <= MACRouteAddress.Count <= 4294967295 but Got %d", *obj.obj.Count)) + } + + } + + if obj.obj.Step != nil { + + if *obj.obj.Step < 1 || *obj.obj.Step > 4294967295 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("1 <= MACRouteAddress.Step <= 4294967295 but Got %d", *obj.obj.Step)) } } } -func (obj *patternFlowIcmpEchoTypeMetricTag) setDefault() { - if obj.obj.Offset == nil { - obj.SetOffset(0) +func (obj *mACRouteAddress) setDefault() { + if obj.obj.Prefix == nil { + obj.SetPrefix(48) } - if obj.obj.Length == nil { - obj.SetLength(8) + if obj.obj.Count == nil { + obj.SetCount(1) + } + if obj.obj.Step == nil { + obj.SetStep(1) } } -// ***** PatternFlowIcmpEchoCodeCounter ***** -type patternFlowIcmpEchoCodeCounter struct { +// ***** BgpSrteSRv6SIDEndpointBehaviorAndStructure ***** +type bgpSrteSRv6SIDEndpointBehaviorAndStructure struct { validation - obj *otg.PatternFlowIcmpEchoCodeCounter + obj *otg.BgpSrteSRv6SIDEndpointBehaviorAndStructure } -func NewPatternFlowIcmpEchoCodeCounter() PatternFlowIcmpEchoCodeCounter { - obj := patternFlowIcmpEchoCodeCounter{obj: &otg.PatternFlowIcmpEchoCodeCounter{}} +func NewBgpSrteSRv6SIDEndpointBehaviorAndStructure() BgpSrteSRv6SIDEndpointBehaviorAndStructure { + obj := bgpSrteSRv6SIDEndpointBehaviorAndStructure{obj: &otg.BgpSrteSRv6SIDEndpointBehaviorAndStructure{}} obj.setDefault() return &obj } -func (obj *patternFlowIcmpEchoCodeCounter) Msg() *otg.PatternFlowIcmpEchoCodeCounter { +func (obj *bgpSrteSRv6SIDEndpointBehaviorAndStructure) Msg() *otg.BgpSrteSRv6SIDEndpointBehaviorAndStructure { return obj.obj } -func (obj *patternFlowIcmpEchoCodeCounter) SetMsg(msg *otg.PatternFlowIcmpEchoCodeCounter) PatternFlowIcmpEchoCodeCounter { +func (obj *bgpSrteSRv6SIDEndpointBehaviorAndStructure) SetMsg(msg *otg.BgpSrteSRv6SIDEndpointBehaviorAndStructure) BgpSrteSRv6SIDEndpointBehaviorAndStructure { proto.Merge(obj.obj, msg) return obj } -func (obj *patternFlowIcmpEchoCodeCounter) ToProto() (*otg.PatternFlowIcmpEchoCodeCounter, error) { +func (obj *bgpSrteSRv6SIDEndpointBehaviorAndStructure) ToProto() (*otg.BgpSrteSRv6SIDEndpointBehaviorAndStructure, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -290381,7 +334784,7 @@ func (obj *patternFlowIcmpEchoCodeCounter) ToProto() (*otg.PatternFlowIcmpEchoCo return obj.Msg(), nil } -func (obj *patternFlowIcmpEchoCodeCounter) FromProto(msg *otg.PatternFlowIcmpEchoCodeCounter) (PatternFlowIcmpEchoCodeCounter, error) { +func (obj *bgpSrteSRv6SIDEndpointBehaviorAndStructure) FromProto(msg *otg.BgpSrteSRv6SIDEndpointBehaviorAndStructure) (BgpSrteSRv6SIDEndpointBehaviorAndStructure, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -290390,7 +334793,7 @@ func (obj *patternFlowIcmpEchoCodeCounter) FromProto(msg *otg.PatternFlowIcmpEch return newObj, nil } -func (obj *patternFlowIcmpEchoCodeCounter) ToPbText() (string, error) { +func (obj *bgpSrteSRv6SIDEndpointBehaviorAndStructure) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -290402,7 +334805,7 @@ func (obj *patternFlowIcmpEchoCodeCounter) ToPbText() (string, error) { return string(protoMarshal), nil } -func (obj *patternFlowIcmpEchoCodeCounter) FromPbText(value string) error { +func (obj *bgpSrteSRv6SIDEndpointBehaviorAndStructure) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj @@ -290415,7 +334818,7 @@ func (obj *patternFlowIcmpEchoCodeCounter) FromPbText(value string) error { return retObj } -func (obj *patternFlowIcmpEchoCodeCounter) ToYaml() (string, error) { +func (obj *bgpSrteSRv6SIDEndpointBehaviorAndStructure) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -290436,7 +334839,7 @@ func (obj *patternFlowIcmpEchoCodeCounter) ToYaml() (string, error) { return string(data), nil } -func (obj *patternFlowIcmpEchoCodeCounter) FromYaml(value string) error { +func (obj *bgpSrteSRv6SIDEndpointBehaviorAndStructure) FromYaml(value string) error { if value == "" { value = "{}" } @@ -290461,7 +334864,7 @@ func (obj *patternFlowIcmpEchoCodeCounter) FromYaml(value string) error { return nil } -func (obj *patternFlowIcmpEchoCodeCounter) ToJson() (string, error) { +func (obj *bgpSrteSRv6SIDEndpointBehaviorAndStructure) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -290479,7 +334882,7 @@ func (obj *patternFlowIcmpEchoCodeCounter) ToJson() (string, error) { return string(data), nil } -func (obj *patternFlowIcmpEchoCodeCounter) FromJson(value string) error { +func (obj *bgpSrteSRv6SIDEndpointBehaviorAndStructure) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -290500,19 +334903,19 @@ func (obj *patternFlowIcmpEchoCodeCounter) FromJson(value string) error { return nil } -func (obj *patternFlowIcmpEchoCodeCounter) validateToAndFrom() error { +func (obj *bgpSrteSRv6SIDEndpointBehaviorAndStructure) validateToAndFrom() error { // emptyVars() obj.validateObj(&obj.validation, true) return obj.validationResult() } -func (obj *patternFlowIcmpEchoCodeCounter) Validate() error { +func (obj *bgpSrteSRv6SIDEndpointBehaviorAndStructure) Validate() error { // emptyVars() obj.validateObj(&obj.validation, false) return obj.validationResult() } -func (obj *patternFlowIcmpEchoCodeCounter) String() string { +func (obj *bgpSrteSRv6SIDEndpointBehaviorAndStructure) String() string { str, err := obj.ToYaml() if err != nil { return err.Error() @@ -290520,12 +334923,12 @@ func (obj *patternFlowIcmpEchoCodeCounter) String() string { return str } -func (obj *patternFlowIcmpEchoCodeCounter) Clone() (PatternFlowIcmpEchoCodeCounter, error) { +func (obj *bgpSrteSRv6SIDEndpointBehaviorAndStructure) Clone() (BgpSrteSRv6SIDEndpointBehaviorAndStructure, error) { vErr := obj.Validate() if vErr != nil { return nil, vErr } - newObj := NewPatternFlowIcmpEchoCodeCounter() + newObj := NewBgpSrteSRv6SIDEndpointBehaviorAndStructure() data, err := proto.Marshal(obj.Msg()) if err != nil { return nil, err @@ -290537,199 +334940,240 @@ func (obj *patternFlowIcmpEchoCodeCounter) Clone() (PatternFlowIcmpEchoCodeCount return newObj, nil } -// PatternFlowIcmpEchoCodeCounter is integer counter pattern -type PatternFlowIcmpEchoCodeCounter interface { +// BgpSrteSRv6SIDEndpointBehaviorAndStructure is configuration for SRv6 Endpoint Behavior and SID Structure. Its optional. Summation of lengths for Locator Block, Locator Node, Function, and Argument MUST be less than or equal to 128. +type BgpSrteSRv6SIDEndpointBehaviorAndStructure interface { Validation - // Msg marshals PatternFlowIcmpEchoCodeCounter to protobuf object *otg.PatternFlowIcmpEchoCodeCounter + // Msg marshals BgpSrteSRv6SIDEndpointBehaviorAndStructure to protobuf object *otg.BgpSrteSRv6SIDEndpointBehaviorAndStructure // and doesn't set defaults - Msg() *otg.PatternFlowIcmpEchoCodeCounter - // SetMsg unmarshals PatternFlowIcmpEchoCodeCounter from protobuf object *otg.PatternFlowIcmpEchoCodeCounter + Msg() *otg.BgpSrteSRv6SIDEndpointBehaviorAndStructure + // SetMsg unmarshals BgpSrteSRv6SIDEndpointBehaviorAndStructure from protobuf object *otg.BgpSrteSRv6SIDEndpointBehaviorAndStructure // and doesn't set defaults - SetMsg(*otg.PatternFlowIcmpEchoCodeCounter) PatternFlowIcmpEchoCodeCounter - // ToProto marshals PatternFlowIcmpEchoCodeCounter to protobuf object *otg.PatternFlowIcmpEchoCodeCounter - ToProto() (*otg.PatternFlowIcmpEchoCodeCounter, error) - // ToPbText marshals PatternFlowIcmpEchoCodeCounter to protobuf text + SetMsg(*otg.BgpSrteSRv6SIDEndpointBehaviorAndStructure) BgpSrteSRv6SIDEndpointBehaviorAndStructure + // ToProto marshals BgpSrteSRv6SIDEndpointBehaviorAndStructure to protobuf object *otg.BgpSrteSRv6SIDEndpointBehaviorAndStructure + ToProto() (*otg.BgpSrteSRv6SIDEndpointBehaviorAndStructure, error) + // ToPbText marshals BgpSrteSRv6SIDEndpointBehaviorAndStructure to protobuf text ToPbText() (string, error) - // ToYaml marshals PatternFlowIcmpEchoCodeCounter to YAML text + // ToYaml marshals BgpSrteSRv6SIDEndpointBehaviorAndStructure to YAML text ToYaml() (string, error) - // ToJson marshals PatternFlowIcmpEchoCodeCounter to JSON text + // ToJson marshals BgpSrteSRv6SIDEndpointBehaviorAndStructure to JSON text ToJson() (string, error) - // FromProto unmarshals PatternFlowIcmpEchoCodeCounter from protobuf object *otg.PatternFlowIcmpEchoCodeCounter - FromProto(msg *otg.PatternFlowIcmpEchoCodeCounter) (PatternFlowIcmpEchoCodeCounter, error) - // FromPbText unmarshals PatternFlowIcmpEchoCodeCounter from protobuf text + // FromProto unmarshals BgpSrteSRv6SIDEndpointBehaviorAndStructure from protobuf object *otg.BgpSrteSRv6SIDEndpointBehaviorAndStructure + FromProto(msg *otg.BgpSrteSRv6SIDEndpointBehaviorAndStructure) (BgpSrteSRv6SIDEndpointBehaviorAndStructure, error) + // FromPbText unmarshals BgpSrteSRv6SIDEndpointBehaviorAndStructure from protobuf text FromPbText(value string) error - // FromYaml unmarshals PatternFlowIcmpEchoCodeCounter from YAML text + // FromYaml unmarshals BgpSrteSRv6SIDEndpointBehaviorAndStructure from YAML text FromYaml(value string) error - // FromJson unmarshals PatternFlowIcmpEchoCodeCounter from JSON text + // FromJson unmarshals BgpSrteSRv6SIDEndpointBehaviorAndStructure from JSON text FromJson(value string) error - // Validate validates PatternFlowIcmpEchoCodeCounter + // Validate validates BgpSrteSRv6SIDEndpointBehaviorAndStructure Validate() error // A stringer function String() string // Clones the object - Clone() (PatternFlowIcmpEchoCodeCounter, error) + Clone() (BgpSrteSRv6SIDEndpointBehaviorAndStructure, error) validateToAndFrom() error validateObj(vObj *validation, set_default bool) setDefault() - // Start returns uint32, set in PatternFlowIcmpEchoCodeCounter. - Start() uint32 - // SetStart assigns uint32 provided by user to PatternFlowIcmpEchoCodeCounter - SetStart(value uint32) PatternFlowIcmpEchoCodeCounter - // HasStart checks if Start has been set in PatternFlowIcmpEchoCodeCounter - HasStart() bool - // Step returns uint32, set in PatternFlowIcmpEchoCodeCounter. - Step() uint32 - // SetStep assigns uint32 provided by user to PatternFlowIcmpEchoCodeCounter - SetStep(value uint32) PatternFlowIcmpEchoCodeCounter - // HasStep checks if Step has been set in PatternFlowIcmpEchoCodeCounter - HasStep() bool - // Count returns uint32, set in PatternFlowIcmpEchoCodeCounter. - Count() uint32 - // SetCount assigns uint32 provided by user to PatternFlowIcmpEchoCodeCounter - SetCount(value uint32) PatternFlowIcmpEchoCodeCounter - // HasCount checks if Count has been set in PatternFlowIcmpEchoCodeCounter - HasCount() bool + // LbLength returns uint32, set in BgpSrteSRv6SIDEndpointBehaviorAndStructure. + LbLength() uint32 + // SetLbLength assigns uint32 provided by user to BgpSrteSRv6SIDEndpointBehaviorAndStructure + SetLbLength(value uint32) BgpSrteSRv6SIDEndpointBehaviorAndStructure + // HasLbLength checks if LbLength has been set in BgpSrteSRv6SIDEndpointBehaviorAndStructure + HasLbLength() bool + // LnLength returns uint32, set in BgpSrteSRv6SIDEndpointBehaviorAndStructure. + LnLength() uint32 + // SetLnLength assigns uint32 provided by user to BgpSrteSRv6SIDEndpointBehaviorAndStructure + SetLnLength(value uint32) BgpSrteSRv6SIDEndpointBehaviorAndStructure + // HasLnLength checks if LnLength has been set in BgpSrteSRv6SIDEndpointBehaviorAndStructure + HasLnLength() bool + // FuncLength returns uint32, set in BgpSrteSRv6SIDEndpointBehaviorAndStructure. + FuncLength() uint32 + // SetFuncLength assigns uint32 provided by user to BgpSrteSRv6SIDEndpointBehaviorAndStructure + SetFuncLength(value uint32) BgpSrteSRv6SIDEndpointBehaviorAndStructure + // HasFuncLength checks if FuncLength has been set in BgpSrteSRv6SIDEndpointBehaviorAndStructure + HasFuncLength() bool + // ArgLength returns uint32, set in BgpSrteSRv6SIDEndpointBehaviorAndStructure. + ArgLength() uint32 + // SetArgLength assigns uint32 provided by user to BgpSrteSRv6SIDEndpointBehaviorAndStructure + SetArgLength(value uint32) BgpSrteSRv6SIDEndpointBehaviorAndStructure + // HasArgLength checks if ArgLength has been set in BgpSrteSRv6SIDEndpointBehaviorAndStructure + HasArgLength() bool } -// description is TBD -// Start returns a uint32 -func (obj *patternFlowIcmpEchoCodeCounter) Start() uint32 { +// SRv6 SID Locator Block length in bits. +// LbLength returns a uint32 +func (obj *bgpSrteSRv6SIDEndpointBehaviorAndStructure) LbLength() uint32 { - return *obj.obj.Start + return *obj.obj.LbLength } -// description is TBD -// Start returns a uint32 -func (obj *patternFlowIcmpEchoCodeCounter) HasStart() bool { - return obj.obj.Start != nil +// SRv6 SID Locator Block length in bits. +// LbLength returns a uint32 +func (obj *bgpSrteSRv6SIDEndpointBehaviorAndStructure) HasLbLength() bool { + return obj.obj.LbLength != nil } -// description is TBD -// SetStart sets the uint32 value in the PatternFlowIcmpEchoCodeCounter object -func (obj *patternFlowIcmpEchoCodeCounter) SetStart(value uint32) PatternFlowIcmpEchoCodeCounter { +// SRv6 SID Locator Block length in bits. +// SetLbLength sets the uint32 value in the BgpSrteSRv6SIDEndpointBehaviorAndStructure object +func (obj *bgpSrteSRv6SIDEndpointBehaviorAndStructure) SetLbLength(value uint32) BgpSrteSRv6SIDEndpointBehaviorAndStructure { - obj.obj.Start = &value + obj.obj.LbLength = &value return obj } -// description is TBD -// Step returns a uint32 -func (obj *patternFlowIcmpEchoCodeCounter) Step() uint32 { +// SRv6 SID Locator Node length in bits. +// LnLength returns a uint32 +func (obj *bgpSrteSRv6SIDEndpointBehaviorAndStructure) LnLength() uint32 { - return *obj.obj.Step + return *obj.obj.LnLength } -// description is TBD -// Step returns a uint32 -func (obj *patternFlowIcmpEchoCodeCounter) HasStep() bool { - return obj.obj.Step != nil +// SRv6 SID Locator Node length in bits. +// LnLength returns a uint32 +func (obj *bgpSrteSRv6SIDEndpointBehaviorAndStructure) HasLnLength() bool { + return obj.obj.LnLength != nil } -// description is TBD -// SetStep sets the uint32 value in the PatternFlowIcmpEchoCodeCounter object -func (obj *patternFlowIcmpEchoCodeCounter) SetStep(value uint32) PatternFlowIcmpEchoCodeCounter { +// SRv6 SID Locator Node length in bits. +// SetLnLength sets the uint32 value in the BgpSrteSRv6SIDEndpointBehaviorAndStructure object +func (obj *bgpSrteSRv6SIDEndpointBehaviorAndStructure) SetLnLength(value uint32) BgpSrteSRv6SIDEndpointBehaviorAndStructure { - obj.obj.Step = &value + obj.obj.LnLength = &value return obj } -// description is TBD -// Count returns a uint32 -func (obj *patternFlowIcmpEchoCodeCounter) Count() uint32 { +// SRv6 SID Function length in bits. +// FuncLength returns a uint32 +func (obj *bgpSrteSRv6SIDEndpointBehaviorAndStructure) FuncLength() uint32 { - return *obj.obj.Count + return *obj.obj.FuncLength } -// description is TBD -// Count returns a uint32 -func (obj *patternFlowIcmpEchoCodeCounter) HasCount() bool { - return obj.obj.Count != nil +// SRv6 SID Function length in bits. +// FuncLength returns a uint32 +func (obj *bgpSrteSRv6SIDEndpointBehaviorAndStructure) HasFuncLength() bool { + return obj.obj.FuncLength != nil } -// description is TBD -// SetCount sets the uint32 value in the PatternFlowIcmpEchoCodeCounter object -func (obj *patternFlowIcmpEchoCodeCounter) SetCount(value uint32) PatternFlowIcmpEchoCodeCounter { +// SRv6 SID Function length in bits. +// SetFuncLength sets the uint32 value in the BgpSrteSRv6SIDEndpointBehaviorAndStructure object +func (obj *bgpSrteSRv6SIDEndpointBehaviorAndStructure) SetFuncLength(value uint32) BgpSrteSRv6SIDEndpointBehaviorAndStructure { - obj.obj.Count = &value + obj.obj.FuncLength = &value return obj } -func (obj *patternFlowIcmpEchoCodeCounter) validateObj(vObj *validation, set_default bool) { +// SRv6 SID Arguments length in bits. +// ArgLength returns a uint32 +func (obj *bgpSrteSRv6SIDEndpointBehaviorAndStructure) ArgLength() uint32 { + + return *obj.obj.ArgLength + +} + +// SRv6 SID Arguments length in bits. +// ArgLength returns a uint32 +func (obj *bgpSrteSRv6SIDEndpointBehaviorAndStructure) HasArgLength() bool { + return obj.obj.ArgLength != nil +} + +// SRv6 SID Arguments length in bits. +// SetArgLength sets the uint32 value in the BgpSrteSRv6SIDEndpointBehaviorAndStructure object +func (obj *bgpSrteSRv6SIDEndpointBehaviorAndStructure) SetArgLength(value uint32) BgpSrteSRv6SIDEndpointBehaviorAndStructure { + + obj.obj.ArgLength = &value + return obj +} + +func (obj *bgpSrteSRv6SIDEndpointBehaviorAndStructure) validateObj(vObj *validation, set_default bool) { if set_default { obj.setDefault() } - if obj.obj.Start != nil { + if obj.obj.LbLength != nil { - if *obj.obj.Start > 255 { + if *obj.obj.LbLength > 128 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowIcmpEchoCodeCounter.Start <= 255 but Got %d", *obj.obj.Start)) + fmt.Sprintf("0 <= BgpSrteSRv6SIDEndpointBehaviorAndStructure.LbLength <= 128 but Got %d", *obj.obj.LbLength)) } } - if obj.obj.Step != nil { + if obj.obj.LnLength != nil { - if *obj.obj.Step > 255 { + if *obj.obj.LnLength > 128 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowIcmpEchoCodeCounter.Step <= 255 but Got %d", *obj.obj.Step)) + fmt.Sprintf("0 <= BgpSrteSRv6SIDEndpointBehaviorAndStructure.LnLength <= 128 but Got %d", *obj.obj.LnLength)) } } - if obj.obj.Count != nil { + if obj.obj.FuncLength != nil { - if *obj.obj.Count > 255 { + if *obj.obj.FuncLength > 128 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowIcmpEchoCodeCounter.Count <= 255 but Got %d", *obj.obj.Count)) + fmt.Sprintf("0 <= BgpSrteSRv6SIDEndpointBehaviorAndStructure.FuncLength <= 128 but Got %d", *obj.obj.FuncLength)) + } + + } + + if obj.obj.ArgLength != nil { + + if *obj.obj.ArgLength > 128 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("0 <= BgpSrteSRv6SIDEndpointBehaviorAndStructure.ArgLength <= 128 but Got %d", *obj.obj.ArgLength)) } } } -func (obj *patternFlowIcmpEchoCodeCounter) setDefault() { - if obj.obj.Start == nil { - obj.SetStart(0) +func (obj *bgpSrteSRv6SIDEndpointBehaviorAndStructure) setDefault() { + if obj.obj.LbLength == nil { + obj.SetLbLength(0) } - if obj.obj.Step == nil { - obj.SetStep(1) + if obj.obj.LnLength == nil { + obj.SetLnLength(0) } - if obj.obj.Count == nil { - obj.SetCount(1) + if obj.obj.FuncLength == nil { + obj.SetFuncLength(0) + } + if obj.obj.ArgLength == nil { + obj.SetArgLength(0) } } -// ***** PatternFlowIcmpEchoCodeMetricTag ***** -type patternFlowIcmpEchoCodeMetricTag struct { +// ***** BgpSrteSrMplsSid ***** +type bgpSrteSrMplsSid struct { validation - obj *otg.PatternFlowIcmpEchoCodeMetricTag + obj *otg.BgpSrteSrMplsSid } -func NewPatternFlowIcmpEchoCodeMetricTag() PatternFlowIcmpEchoCodeMetricTag { - obj := patternFlowIcmpEchoCodeMetricTag{obj: &otg.PatternFlowIcmpEchoCodeMetricTag{}} +func NewBgpSrteSrMplsSid() BgpSrteSrMplsSid { + obj := bgpSrteSrMplsSid{obj: &otg.BgpSrteSrMplsSid{}} obj.setDefault() return &obj } -func (obj *patternFlowIcmpEchoCodeMetricTag) Msg() *otg.PatternFlowIcmpEchoCodeMetricTag { +func (obj *bgpSrteSrMplsSid) Msg() *otg.BgpSrteSrMplsSid { return obj.obj } -func (obj *patternFlowIcmpEchoCodeMetricTag) SetMsg(msg *otg.PatternFlowIcmpEchoCodeMetricTag) PatternFlowIcmpEchoCodeMetricTag { +func (obj *bgpSrteSrMplsSid) SetMsg(msg *otg.BgpSrteSrMplsSid) BgpSrteSrMplsSid { proto.Merge(obj.obj, msg) return obj } -func (obj *patternFlowIcmpEchoCodeMetricTag) ToProto() (*otg.PatternFlowIcmpEchoCodeMetricTag, error) { +func (obj *bgpSrteSrMplsSid) ToProto() (*otg.BgpSrteSrMplsSid, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -290737,7 +335181,7 @@ func (obj *patternFlowIcmpEchoCodeMetricTag) ToProto() (*otg.PatternFlowIcmpEcho return obj.Msg(), nil } -func (obj *patternFlowIcmpEchoCodeMetricTag) FromProto(msg *otg.PatternFlowIcmpEchoCodeMetricTag) (PatternFlowIcmpEchoCodeMetricTag, error) { +func (obj *bgpSrteSrMplsSid) FromProto(msg *otg.BgpSrteSrMplsSid) (BgpSrteSrMplsSid, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -290746,7 +335190,7 @@ func (obj *patternFlowIcmpEchoCodeMetricTag) FromProto(msg *otg.PatternFlowIcmpE return newObj, nil } -func (obj *patternFlowIcmpEchoCodeMetricTag) ToPbText() (string, error) { +func (obj *bgpSrteSrMplsSid) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -290758,7 +335202,7 @@ func (obj *patternFlowIcmpEchoCodeMetricTag) ToPbText() (string, error) { return string(protoMarshal), nil } -func (obj *patternFlowIcmpEchoCodeMetricTag) FromPbText(value string) error { +func (obj *bgpSrteSrMplsSid) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj @@ -290771,7 +335215,7 @@ func (obj *patternFlowIcmpEchoCodeMetricTag) FromPbText(value string) error { return retObj } -func (obj *patternFlowIcmpEchoCodeMetricTag) ToYaml() (string, error) { +func (obj *bgpSrteSrMplsSid) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -290792,7 +335236,7 @@ func (obj *patternFlowIcmpEchoCodeMetricTag) ToYaml() (string, error) { return string(data), nil } -func (obj *patternFlowIcmpEchoCodeMetricTag) FromYaml(value string) error { +func (obj *bgpSrteSrMplsSid) FromYaml(value string) error { if value == "" { value = "{}" } @@ -290817,7 +335261,7 @@ func (obj *patternFlowIcmpEchoCodeMetricTag) FromYaml(value string) error { return nil } -func (obj *patternFlowIcmpEchoCodeMetricTag) ToJson() (string, error) { +func (obj *bgpSrteSrMplsSid) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -290835,7 +335279,7 @@ func (obj *patternFlowIcmpEchoCodeMetricTag) ToJson() (string, error) { return string(data), nil } -func (obj *patternFlowIcmpEchoCodeMetricTag) FromJson(value string) error { +func (obj *bgpSrteSrMplsSid) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -290856,19 +335300,19 @@ func (obj *patternFlowIcmpEchoCodeMetricTag) FromJson(value string) error { return nil } -func (obj *patternFlowIcmpEchoCodeMetricTag) validateToAndFrom() error { +func (obj *bgpSrteSrMplsSid) validateToAndFrom() error { // emptyVars() obj.validateObj(&obj.validation, true) return obj.validationResult() } -func (obj *patternFlowIcmpEchoCodeMetricTag) Validate() error { +func (obj *bgpSrteSrMplsSid) Validate() error { // emptyVars() obj.validateObj(&obj.validation, false) return obj.validationResult() } -func (obj *patternFlowIcmpEchoCodeMetricTag) String() string { +func (obj *bgpSrteSrMplsSid) String() string { str, err := obj.ToYaml() if err != nil { return err.Error() @@ -290876,12 +335320,12 @@ func (obj *patternFlowIcmpEchoCodeMetricTag) String() string { return str } -func (obj *patternFlowIcmpEchoCodeMetricTag) Clone() (PatternFlowIcmpEchoCodeMetricTag, error) { +func (obj *bgpSrteSrMplsSid) Clone() (BgpSrteSrMplsSid, error) { vErr := obj.Validate() if vErr != nil { return nil, vErr } - newObj := NewPatternFlowIcmpEchoCodeMetricTag() + newObj := NewBgpSrteSrMplsSid() data, err := proto.Marshal(obj.Msg()) if err != nil { return nil, err @@ -290893,183 +335337,222 @@ func (obj *patternFlowIcmpEchoCodeMetricTag) Clone() (PatternFlowIcmpEchoCodeMet return newObj, nil } -// PatternFlowIcmpEchoCodeMetricTag is metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. -type PatternFlowIcmpEchoCodeMetricTag interface { +// BgpSrteSrMplsSid is configuration for SR-MPLS with Label, TC, Bottom-of-Stack and TTL. +type BgpSrteSrMplsSid interface { Validation - // Msg marshals PatternFlowIcmpEchoCodeMetricTag to protobuf object *otg.PatternFlowIcmpEchoCodeMetricTag + // Msg marshals BgpSrteSrMplsSid to protobuf object *otg.BgpSrteSrMplsSid // and doesn't set defaults - Msg() *otg.PatternFlowIcmpEchoCodeMetricTag - // SetMsg unmarshals PatternFlowIcmpEchoCodeMetricTag from protobuf object *otg.PatternFlowIcmpEchoCodeMetricTag + Msg() *otg.BgpSrteSrMplsSid + // SetMsg unmarshals BgpSrteSrMplsSid from protobuf object *otg.BgpSrteSrMplsSid // and doesn't set defaults - SetMsg(*otg.PatternFlowIcmpEchoCodeMetricTag) PatternFlowIcmpEchoCodeMetricTag - // ToProto marshals PatternFlowIcmpEchoCodeMetricTag to protobuf object *otg.PatternFlowIcmpEchoCodeMetricTag - ToProto() (*otg.PatternFlowIcmpEchoCodeMetricTag, error) - // ToPbText marshals PatternFlowIcmpEchoCodeMetricTag to protobuf text + SetMsg(*otg.BgpSrteSrMplsSid) BgpSrteSrMplsSid + // ToProto marshals BgpSrteSrMplsSid to protobuf object *otg.BgpSrteSrMplsSid + ToProto() (*otg.BgpSrteSrMplsSid, error) + // ToPbText marshals BgpSrteSrMplsSid to protobuf text ToPbText() (string, error) - // ToYaml marshals PatternFlowIcmpEchoCodeMetricTag to YAML text + // ToYaml marshals BgpSrteSrMplsSid to YAML text ToYaml() (string, error) - // ToJson marshals PatternFlowIcmpEchoCodeMetricTag to JSON text + // ToJson marshals BgpSrteSrMplsSid to JSON text ToJson() (string, error) - // FromProto unmarshals PatternFlowIcmpEchoCodeMetricTag from protobuf object *otg.PatternFlowIcmpEchoCodeMetricTag - FromProto(msg *otg.PatternFlowIcmpEchoCodeMetricTag) (PatternFlowIcmpEchoCodeMetricTag, error) - // FromPbText unmarshals PatternFlowIcmpEchoCodeMetricTag from protobuf text + // FromProto unmarshals BgpSrteSrMplsSid from protobuf object *otg.BgpSrteSrMplsSid + FromProto(msg *otg.BgpSrteSrMplsSid) (BgpSrteSrMplsSid, error) + // FromPbText unmarshals BgpSrteSrMplsSid from protobuf text FromPbText(value string) error - // FromYaml unmarshals PatternFlowIcmpEchoCodeMetricTag from YAML text + // FromYaml unmarshals BgpSrteSrMplsSid from YAML text FromYaml(value string) error - // FromJson unmarshals PatternFlowIcmpEchoCodeMetricTag from JSON text + // FromJson unmarshals BgpSrteSrMplsSid from JSON text FromJson(value string) error - // Validate validates PatternFlowIcmpEchoCodeMetricTag + // Validate validates BgpSrteSrMplsSid Validate() error // A stringer function String() string // Clones the object - Clone() (PatternFlowIcmpEchoCodeMetricTag, error) + Clone() (BgpSrteSrMplsSid, error) validateToAndFrom() error validateObj(vObj *validation, set_default bool) setDefault() - // Name returns string, set in PatternFlowIcmpEchoCodeMetricTag. - Name() string - // SetName assigns string provided by user to PatternFlowIcmpEchoCodeMetricTag - SetName(value string) PatternFlowIcmpEchoCodeMetricTag - // Offset returns uint32, set in PatternFlowIcmpEchoCodeMetricTag. - Offset() uint32 - // SetOffset assigns uint32 provided by user to PatternFlowIcmpEchoCodeMetricTag - SetOffset(value uint32) PatternFlowIcmpEchoCodeMetricTag - // HasOffset checks if Offset has been set in PatternFlowIcmpEchoCodeMetricTag - HasOffset() bool - // Length returns uint32, set in PatternFlowIcmpEchoCodeMetricTag. - Length() uint32 - // SetLength assigns uint32 provided by user to PatternFlowIcmpEchoCodeMetricTag - SetLength(value uint32) PatternFlowIcmpEchoCodeMetricTag - // HasLength checks if Length has been set in PatternFlowIcmpEchoCodeMetricTag - HasLength() bool + // Label returns uint32, set in BgpSrteSrMplsSid. + Label() uint32 + // SetLabel assigns uint32 provided by user to BgpSrteSrMplsSid + SetLabel(value uint32) BgpSrteSrMplsSid + // HasLabel checks if Label has been set in BgpSrteSrMplsSid + HasLabel() bool + // Tc returns uint32, set in BgpSrteSrMplsSid. + Tc() uint32 + // SetTc assigns uint32 provided by user to BgpSrteSrMplsSid + SetTc(value uint32) BgpSrteSrMplsSid + // HasTc checks if Tc has been set in BgpSrteSrMplsSid + HasTc() bool + // SBit returns bool, set in BgpSrteSrMplsSid. + SBit() bool + // SetSBit assigns bool provided by user to BgpSrteSrMplsSid + SetSBit(value bool) BgpSrteSrMplsSid + // HasSBit checks if SBit has been set in BgpSrteSrMplsSid + HasSBit() bool + // Ttl returns uint32, set in BgpSrteSrMplsSid. + Ttl() uint32 + // SetTtl assigns uint32 provided by user to BgpSrteSrMplsSid + SetTtl(value uint32) BgpSrteSrMplsSid + // HasTtl checks if Ttl has been set in BgpSrteSrMplsSid + HasTtl() bool } -// Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field -// Name returns a string -func (obj *patternFlowIcmpEchoCodeMetricTag) Name() string { +// Label value in [0, 2^20 -1]. +// Label returns a uint32 +func (obj *bgpSrteSrMplsSid) Label() uint32 { - return *obj.obj.Name + return *obj.obj.Label } -// Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field -// SetName sets the string value in the PatternFlowIcmpEchoCodeMetricTag object -func (obj *patternFlowIcmpEchoCodeMetricTag) SetName(value string) PatternFlowIcmpEchoCodeMetricTag { +// Label value in [0, 2^20 -1]. +// Label returns a uint32 +func (obj *bgpSrteSrMplsSid) HasLabel() bool { + return obj.obj.Label != nil +} - obj.obj.Name = &value +// Label value in [0, 2^20 -1]. +// SetLabel sets the uint32 value in the BgpSrteSrMplsSid object +func (obj *bgpSrteSrMplsSid) SetLabel(value uint32) BgpSrteSrMplsSid { + + obj.obj.Label = &value return obj } -// Offset in bits relative to start of corresponding header field -// Offset returns a uint32 -func (obj *patternFlowIcmpEchoCodeMetricTag) Offset() uint32 { +// Traffic class in bits. +// Tc returns a uint32 +func (obj *bgpSrteSrMplsSid) Tc() uint32 { - return *obj.obj.Offset + return *obj.obj.Tc } -// Offset in bits relative to start of corresponding header field -// Offset returns a uint32 -func (obj *patternFlowIcmpEchoCodeMetricTag) HasOffset() bool { - return obj.obj.Offset != nil +// Traffic class in bits. +// Tc returns a uint32 +func (obj *bgpSrteSrMplsSid) HasTc() bool { + return obj.obj.Tc != nil } -// Offset in bits relative to start of corresponding header field -// SetOffset sets the uint32 value in the PatternFlowIcmpEchoCodeMetricTag object -func (obj *patternFlowIcmpEchoCodeMetricTag) SetOffset(value uint32) PatternFlowIcmpEchoCodeMetricTag { +// Traffic class in bits. +// SetTc sets the uint32 value in the BgpSrteSrMplsSid object +func (obj *bgpSrteSrMplsSid) SetTc(value uint32) BgpSrteSrMplsSid { - obj.obj.Offset = &value + obj.obj.Tc = &value return obj } -// Number of bits to track for metrics starting from configured offset of corresponding header field -// Length returns a uint32 -func (obj *patternFlowIcmpEchoCodeMetricTag) Length() uint32 { +// Bottom-of-Stack bit. +// SBit returns a bool +func (obj *bgpSrteSrMplsSid) SBit() bool { - return *obj.obj.Length + return *obj.obj.SBit } -// Number of bits to track for metrics starting from configured offset of corresponding header field -// Length returns a uint32 -func (obj *patternFlowIcmpEchoCodeMetricTag) HasLength() bool { - return obj.obj.Length != nil +// Bottom-of-Stack bit. +// SBit returns a bool +func (obj *bgpSrteSrMplsSid) HasSBit() bool { + return obj.obj.SBit != nil } -// Number of bits to track for metrics starting from configured offset of corresponding header field -// SetLength sets the uint32 value in the PatternFlowIcmpEchoCodeMetricTag object -func (obj *patternFlowIcmpEchoCodeMetricTag) SetLength(value uint32) PatternFlowIcmpEchoCodeMetricTag { +// Bottom-of-Stack bit. +// SetSBit sets the bool value in the BgpSrteSrMplsSid object +func (obj *bgpSrteSrMplsSid) SetSBit(value bool) BgpSrteSrMplsSid { - obj.obj.Length = &value + obj.obj.SBit = &value return obj } -func (obj *patternFlowIcmpEchoCodeMetricTag) validateObj(vObj *validation, set_default bool) { +// Time To Live. +// Ttl returns a uint32 +func (obj *bgpSrteSrMplsSid) Ttl() uint32 { + + return *obj.obj.Ttl + +} + +// Time To Live. +// Ttl returns a uint32 +func (obj *bgpSrteSrMplsSid) HasTtl() bool { + return obj.obj.Ttl != nil +} + +// Time To Live. +// SetTtl sets the uint32 value in the BgpSrteSrMplsSid object +func (obj *bgpSrteSrMplsSid) SetTtl(value uint32) BgpSrteSrMplsSid { + + obj.obj.Ttl = &value + return obj +} + +func (obj *bgpSrteSrMplsSid) validateObj(vObj *validation, set_default bool) { if set_default { obj.setDefault() } - // Name is required - if obj.obj.Name == nil { - vObj.validationErrors = append(vObj.validationErrors, "Name is required field on interface PatternFlowIcmpEchoCodeMetricTag") + if obj.obj.Label != nil { + + if *obj.obj.Label > 1048575 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("0 <= BgpSrteSrMplsSid.Label <= 1048575 but Got %d", *obj.obj.Label)) + } + } - if obj.obj.Offset != nil { + if obj.obj.Tc != nil { - if *obj.obj.Offset > 7 { + if *obj.obj.Tc > 7 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowIcmpEchoCodeMetricTag.Offset <= 7 but Got %d", *obj.obj.Offset)) + fmt.Sprintf("0 <= BgpSrteSrMplsSid.Tc <= 7 but Got %d", *obj.obj.Tc)) } } - if obj.obj.Length != nil { + if obj.obj.Ttl != nil { - if *obj.obj.Length < 1 || *obj.obj.Length > 8 { + if *obj.obj.Ttl > 225 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("1 <= PatternFlowIcmpEchoCodeMetricTag.Length <= 8 but Got %d", *obj.obj.Length)) + fmt.Sprintf("0 <= BgpSrteSrMplsSid.Ttl <= 225 but Got %d", *obj.obj.Ttl)) } } } -func (obj *patternFlowIcmpEchoCodeMetricTag) setDefault() { - if obj.obj.Offset == nil { - obj.SetOffset(0) - } - if obj.obj.Length == nil { - obj.SetLength(8) - } +func (obj *bgpSrteSrMplsSid) setDefault() { } -// ***** PatternFlowIcmpEchoIdentifierCounter ***** -type patternFlowIcmpEchoIdentifierCounter struct { +// ***** FlowRSVPPathSessionLspTunnelIpv4 ***** +type flowRSVPPathSessionLspTunnelIpv4 struct { validation - obj *otg.PatternFlowIcmpEchoIdentifierCounter + obj *otg.FlowRSVPPathSessionLspTunnelIpv4 + ipv4TunnelEndPointAddressHolder PatternFlowRSVPPathSessionLspTunnelIpv4Ipv4TunnelEndPointAddress + reservedHolder PatternFlowRSVPPathSessionLspTunnelIpv4Reserved + tunnelIdHolder PatternFlowRSVPPathSessionLspTunnelIpv4TunnelId + extendedTunnelIdHolder PatternFlowRSVPPathSessionLspTunnelIpv4ExtendedTunnelId } -func NewPatternFlowIcmpEchoIdentifierCounter() PatternFlowIcmpEchoIdentifierCounter { - obj := patternFlowIcmpEchoIdentifierCounter{obj: &otg.PatternFlowIcmpEchoIdentifierCounter{}} +func NewFlowRSVPPathSessionLspTunnelIpv4() FlowRSVPPathSessionLspTunnelIpv4 { + obj := flowRSVPPathSessionLspTunnelIpv4{obj: &otg.FlowRSVPPathSessionLspTunnelIpv4{}} obj.setDefault() return &obj } -func (obj *patternFlowIcmpEchoIdentifierCounter) Msg() *otg.PatternFlowIcmpEchoIdentifierCounter { +func (obj *flowRSVPPathSessionLspTunnelIpv4) Msg() *otg.FlowRSVPPathSessionLspTunnelIpv4 { return obj.obj } -func (obj *patternFlowIcmpEchoIdentifierCounter) SetMsg(msg *otg.PatternFlowIcmpEchoIdentifierCounter) PatternFlowIcmpEchoIdentifierCounter { - +func (obj *flowRSVPPathSessionLspTunnelIpv4) SetMsg(msg *otg.FlowRSVPPathSessionLspTunnelIpv4) FlowRSVPPathSessionLspTunnelIpv4 { + obj.setNil() proto.Merge(obj.obj, msg) return obj } -func (obj *patternFlowIcmpEchoIdentifierCounter) ToProto() (*otg.PatternFlowIcmpEchoIdentifierCounter, error) { +func (obj *flowRSVPPathSessionLspTunnelIpv4) ToProto() (*otg.FlowRSVPPathSessionLspTunnelIpv4, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -291077,7 +335560,7 @@ func (obj *patternFlowIcmpEchoIdentifierCounter) ToProto() (*otg.PatternFlowIcmp return obj.Msg(), nil } -func (obj *patternFlowIcmpEchoIdentifierCounter) FromProto(msg *otg.PatternFlowIcmpEchoIdentifierCounter) (PatternFlowIcmpEchoIdentifierCounter, error) { +func (obj *flowRSVPPathSessionLspTunnelIpv4) FromProto(msg *otg.FlowRSVPPathSessionLspTunnelIpv4) (FlowRSVPPathSessionLspTunnelIpv4, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -291086,7 +335569,7 @@ func (obj *patternFlowIcmpEchoIdentifierCounter) FromProto(msg *otg.PatternFlowI return newObj, nil } -func (obj *patternFlowIcmpEchoIdentifierCounter) ToPbText() (string, error) { +func (obj *flowRSVPPathSessionLspTunnelIpv4) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -291098,12 +335581,12 @@ func (obj *patternFlowIcmpEchoIdentifierCounter) ToPbText() (string, error) { return string(protoMarshal), nil } -func (obj *patternFlowIcmpEchoIdentifierCounter) FromPbText(value string) error { +func (obj *flowRSVPPathSessionLspTunnelIpv4) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj } - + obj.setNil() vErr := obj.validateToAndFrom() if vErr != nil { return vErr @@ -291111,7 +335594,7 @@ func (obj *patternFlowIcmpEchoIdentifierCounter) FromPbText(value string) error return retObj } -func (obj *patternFlowIcmpEchoIdentifierCounter) ToYaml() (string, error) { +func (obj *flowRSVPPathSessionLspTunnelIpv4) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -291132,7 +335615,7 @@ func (obj *patternFlowIcmpEchoIdentifierCounter) ToYaml() (string, error) { return string(data), nil } -func (obj *patternFlowIcmpEchoIdentifierCounter) FromYaml(value string) error { +func (obj *flowRSVPPathSessionLspTunnelIpv4) FromYaml(value string) error { if value == "" { value = "{}" } @@ -291149,7 +335632,7 @@ func (obj *patternFlowIcmpEchoIdentifierCounter) FromYaml(value string) error { return fmt.Errorf("unmarshal error %s", strings.Replace( uError.Error(), "\u00a0", " ", -1)[7:]) } - + obj.setNil() vErr := obj.validateToAndFrom() if vErr != nil { return vErr @@ -291157,7 +335640,7 @@ func (obj *patternFlowIcmpEchoIdentifierCounter) FromYaml(value string) error { return nil } -func (obj *patternFlowIcmpEchoIdentifierCounter) ToJson() (string, error) { +func (obj *flowRSVPPathSessionLspTunnelIpv4) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -291175,7 +335658,7 @@ func (obj *patternFlowIcmpEchoIdentifierCounter) ToJson() (string, error) { return string(data), nil } -func (obj *patternFlowIcmpEchoIdentifierCounter) FromJson(value string) error { +func (obj *flowRSVPPathSessionLspTunnelIpv4) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -291188,7 +335671,7 @@ func (obj *patternFlowIcmpEchoIdentifierCounter) FromJson(value string) error { return fmt.Errorf("unmarshal error %s", strings.Replace( uError.Error(), "\u00a0", " ", -1)[7:]) } - + obj.setNil() err := obj.validateToAndFrom() if err != nil { return err @@ -291196,19 +335679,19 @@ func (obj *patternFlowIcmpEchoIdentifierCounter) FromJson(value string) error { return nil } -func (obj *patternFlowIcmpEchoIdentifierCounter) validateToAndFrom() error { +func (obj *flowRSVPPathSessionLspTunnelIpv4) validateToAndFrom() error { // emptyVars() obj.validateObj(&obj.validation, true) return obj.validationResult() } -func (obj *patternFlowIcmpEchoIdentifierCounter) Validate() error { +func (obj *flowRSVPPathSessionLspTunnelIpv4) Validate() error { // emptyVars() obj.validateObj(&obj.validation, false) return obj.validationResult() } -func (obj *patternFlowIcmpEchoIdentifierCounter) String() string { +func (obj *flowRSVPPathSessionLspTunnelIpv4) String() string { str, err := obj.ToYaml() if err != nil { return err.Error() @@ -291216,12 +335699,12 @@ func (obj *patternFlowIcmpEchoIdentifierCounter) String() string { return str } -func (obj *patternFlowIcmpEchoIdentifierCounter) Clone() (PatternFlowIcmpEchoIdentifierCounter, error) { +func (obj *flowRSVPPathSessionLspTunnelIpv4) Clone() (FlowRSVPPathSessionLspTunnelIpv4, error) { vErr := obj.Validate() if vErr != nil { return nil, vErr } - newObj := NewPatternFlowIcmpEchoIdentifierCounter() + newObj := NewFlowRSVPPathSessionLspTunnelIpv4() data, err := proto.Marshal(obj.Msg()) if err != nil { return nil, err @@ -291233,199 +335716,253 @@ func (obj *patternFlowIcmpEchoIdentifierCounter) Clone() (PatternFlowIcmpEchoIde return newObj, nil } -// PatternFlowIcmpEchoIdentifierCounter is integer counter pattern -type PatternFlowIcmpEchoIdentifierCounter interface { +func (obj *flowRSVPPathSessionLspTunnelIpv4) setNil() { + obj.ipv4TunnelEndPointAddressHolder = nil + obj.reservedHolder = nil + obj.tunnelIdHolder = nil + obj.extendedTunnelIdHolder = nil + obj.validationErrors = nil + obj.warnings = nil + obj.constraints = make(map[string]map[string]Constraints) +} + +// FlowRSVPPathSessionLspTunnelIpv4 is class = SESSION, LSP_TUNNEL_IPv4 C-Type = 7. +type FlowRSVPPathSessionLspTunnelIpv4 interface { Validation - // Msg marshals PatternFlowIcmpEchoIdentifierCounter to protobuf object *otg.PatternFlowIcmpEchoIdentifierCounter + // Msg marshals FlowRSVPPathSessionLspTunnelIpv4 to protobuf object *otg.FlowRSVPPathSessionLspTunnelIpv4 // and doesn't set defaults - Msg() *otg.PatternFlowIcmpEchoIdentifierCounter - // SetMsg unmarshals PatternFlowIcmpEchoIdentifierCounter from protobuf object *otg.PatternFlowIcmpEchoIdentifierCounter + Msg() *otg.FlowRSVPPathSessionLspTunnelIpv4 + // SetMsg unmarshals FlowRSVPPathSessionLspTunnelIpv4 from protobuf object *otg.FlowRSVPPathSessionLspTunnelIpv4 // and doesn't set defaults - SetMsg(*otg.PatternFlowIcmpEchoIdentifierCounter) PatternFlowIcmpEchoIdentifierCounter - // ToProto marshals PatternFlowIcmpEchoIdentifierCounter to protobuf object *otg.PatternFlowIcmpEchoIdentifierCounter - ToProto() (*otg.PatternFlowIcmpEchoIdentifierCounter, error) - // ToPbText marshals PatternFlowIcmpEchoIdentifierCounter to protobuf text + SetMsg(*otg.FlowRSVPPathSessionLspTunnelIpv4) FlowRSVPPathSessionLspTunnelIpv4 + // ToProto marshals FlowRSVPPathSessionLspTunnelIpv4 to protobuf object *otg.FlowRSVPPathSessionLspTunnelIpv4 + ToProto() (*otg.FlowRSVPPathSessionLspTunnelIpv4, error) + // ToPbText marshals FlowRSVPPathSessionLspTunnelIpv4 to protobuf text ToPbText() (string, error) - // ToYaml marshals PatternFlowIcmpEchoIdentifierCounter to YAML text + // ToYaml marshals FlowRSVPPathSessionLspTunnelIpv4 to YAML text ToYaml() (string, error) - // ToJson marshals PatternFlowIcmpEchoIdentifierCounter to JSON text + // ToJson marshals FlowRSVPPathSessionLspTunnelIpv4 to JSON text ToJson() (string, error) - // FromProto unmarshals PatternFlowIcmpEchoIdentifierCounter from protobuf object *otg.PatternFlowIcmpEchoIdentifierCounter - FromProto(msg *otg.PatternFlowIcmpEchoIdentifierCounter) (PatternFlowIcmpEchoIdentifierCounter, error) - // FromPbText unmarshals PatternFlowIcmpEchoIdentifierCounter from protobuf text + // FromProto unmarshals FlowRSVPPathSessionLspTunnelIpv4 from protobuf object *otg.FlowRSVPPathSessionLspTunnelIpv4 + FromProto(msg *otg.FlowRSVPPathSessionLspTunnelIpv4) (FlowRSVPPathSessionLspTunnelIpv4, error) + // FromPbText unmarshals FlowRSVPPathSessionLspTunnelIpv4 from protobuf text FromPbText(value string) error - // FromYaml unmarshals PatternFlowIcmpEchoIdentifierCounter from YAML text + // FromYaml unmarshals FlowRSVPPathSessionLspTunnelIpv4 from YAML text FromYaml(value string) error - // FromJson unmarshals PatternFlowIcmpEchoIdentifierCounter from JSON text + // FromJson unmarshals FlowRSVPPathSessionLspTunnelIpv4 from JSON text FromJson(value string) error - // Validate validates PatternFlowIcmpEchoIdentifierCounter + // Validate validates FlowRSVPPathSessionLspTunnelIpv4 Validate() error // A stringer function String() string // Clones the object - Clone() (PatternFlowIcmpEchoIdentifierCounter, error) + Clone() (FlowRSVPPathSessionLspTunnelIpv4, error) validateToAndFrom() error validateObj(vObj *validation, set_default bool) setDefault() - // Start returns uint32, set in PatternFlowIcmpEchoIdentifierCounter. - Start() uint32 - // SetStart assigns uint32 provided by user to PatternFlowIcmpEchoIdentifierCounter - SetStart(value uint32) PatternFlowIcmpEchoIdentifierCounter - // HasStart checks if Start has been set in PatternFlowIcmpEchoIdentifierCounter - HasStart() bool - // Step returns uint32, set in PatternFlowIcmpEchoIdentifierCounter. - Step() uint32 - // SetStep assigns uint32 provided by user to PatternFlowIcmpEchoIdentifierCounter - SetStep(value uint32) PatternFlowIcmpEchoIdentifierCounter - // HasStep checks if Step has been set in PatternFlowIcmpEchoIdentifierCounter - HasStep() bool - // Count returns uint32, set in PatternFlowIcmpEchoIdentifierCounter. - Count() uint32 - // SetCount assigns uint32 provided by user to PatternFlowIcmpEchoIdentifierCounter - SetCount(value uint32) PatternFlowIcmpEchoIdentifierCounter - // HasCount checks if Count has been set in PatternFlowIcmpEchoIdentifierCounter - HasCount() bool + // Ipv4TunnelEndPointAddress returns PatternFlowRSVPPathSessionLspTunnelIpv4Ipv4TunnelEndPointAddress, set in FlowRSVPPathSessionLspTunnelIpv4. + // PatternFlowRSVPPathSessionLspTunnelIpv4Ipv4TunnelEndPointAddress is iPv4 address of the egress node for the tunnel. + Ipv4TunnelEndPointAddress() PatternFlowRSVPPathSessionLspTunnelIpv4Ipv4TunnelEndPointAddress + // SetIpv4TunnelEndPointAddress assigns PatternFlowRSVPPathSessionLspTunnelIpv4Ipv4TunnelEndPointAddress provided by user to FlowRSVPPathSessionLspTunnelIpv4. + // PatternFlowRSVPPathSessionLspTunnelIpv4Ipv4TunnelEndPointAddress is iPv4 address of the egress node for the tunnel. + SetIpv4TunnelEndPointAddress(value PatternFlowRSVPPathSessionLspTunnelIpv4Ipv4TunnelEndPointAddress) FlowRSVPPathSessionLspTunnelIpv4 + // HasIpv4TunnelEndPointAddress checks if Ipv4TunnelEndPointAddress has been set in FlowRSVPPathSessionLspTunnelIpv4 + HasIpv4TunnelEndPointAddress() bool + // Reserved returns PatternFlowRSVPPathSessionLspTunnelIpv4Reserved, set in FlowRSVPPathSessionLspTunnelIpv4. + // PatternFlowRSVPPathSessionLspTunnelIpv4Reserved is reserved field, MUST be zero. + Reserved() PatternFlowRSVPPathSessionLspTunnelIpv4Reserved + // SetReserved assigns PatternFlowRSVPPathSessionLspTunnelIpv4Reserved provided by user to FlowRSVPPathSessionLspTunnelIpv4. + // PatternFlowRSVPPathSessionLspTunnelIpv4Reserved is reserved field, MUST be zero. + SetReserved(value PatternFlowRSVPPathSessionLspTunnelIpv4Reserved) FlowRSVPPathSessionLspTunnelIpv4 + // HasReserved checks if Reserved has been set in FlowRSVPPathSessionLspTunnelIpv4 + HasReserved() bool + // TunnelId returns PatternFlowRSVPPathSessionLspTunnelIpv4TunnelId, set in FlowRSVPPathSessionLspTunnelIpv4. + // PatternFlowRSVPPathSessionLspTunnelIpv4TunnelId is a 16-bit identifier used in the SESSION that remains constant over the life of the tunnel. + TunnelId() PatternFlowRSVPPathSessionLspTunnelIpv4TunnelId + // SetTunnelId assigns PatternFlowRSVPPathSessionLspTunnelIpv4TunnelId provided by user to FlowRSVPPathSessionLspTunnelIpv4. + // PatternFlowRSVPPathSessionLspTunnelIpv4TunnelId is a 16-bit identifier used in the SESSION that remains constant over the life of the tunnel. + SetTunnelId(value PatternFlowRSVPPathSessionLspTunnelIpv4TunnelId) FlowRSVPPathSessionLspTunnelIpv4 + // HasTunnelId checks if TunnelId has been set in FlowRSVPPathSessionLspTunnelIpv4 + HasTunnelId() bool + // ExtendedTunnelId returns PatternFlowRSVPPathSessionLspTunnelIpv4ExtendedTunnelId, set in FlowRSVPPathSessionLspTunnelIpv4. + // PatternFlowRSVPPathSessionLspTunnelIpv4ExtendedTunnelId is a 32-bit identifier used in the SESSION that remains constant over the life of the tunnel. Normally set to all zeros. Ingress nodes that wish to narrow the scope of a SESSION to the ingress-egress pair may place their IPv4 address here as a globally unique identifier. + ExtendedTunnelId() PatternFlowRSVPPathSessionLspTunnelIpv4ExtendedTunnelId + // SetExtendedTunnelId assigns PatternFlowRSVPPathSessionLspTunnelIpv4ExtendedTunnelId provided by user to FlowRSVPPathSessionLspTunnelIpv4. + // PatternFlowRSVPPathSessionLspTunnelIpv4ExtendedTunnelId is a 32-bit identifier used in the SESSION that remains constant over the life of the tunnel. Normally set to all zeros. Ingress nodes that wish to narrow the scope of a SESSION to the ingress-egress pair may place their IPv4 address here as a globally unique identifier. + SetExtendedTunnelId(value PatternFlowRSVPPathSessionLspTunnelIpv4ExtendedTunnelId) FlowRSVPPathSessionLspTunnelIpv4 + // HasExtendedTunnelId checks if ExtendedTunnelId has been set in FlowRSVPPathSessionLspTunnelIpv4 + HasExtendedTunnelId() bool + setNil() } // description is TBD -// Start returns a uint32 -func (obj *patternFlowIcmpEchoIdentifierCounter) Start() uint32 { - - return *obj.obj.Start - +// Ipv4TunnelEndPointAddress returns a PatternFlowRSVPPathSessionLspTunnelIpv4Ipv4TunnelEndPointAddress +func (obj *flowRSVPPathSessionLspTunnelIpv4) Ipv4TunnelEndPointAddress() PatternFlowRSVPPathSessionLspTunnelIpv4Ipv4TunnelEndPointAddress { + if obj.obj.Ipv4TunnelEndPointAddress == nil { + obj.obj.Ipv4TunnelEndPointAddress = NewPatternFlowRSVPPathSessionLspTunnelIpv4Ipv4TunnelEndPointAddress().Msg() + } + if obj.ipv4TunnelEndPointAddressHolder == nil { + obj.ipv4TunnelEndPointAddressHolder = &patternFlowRSVPPathSessionLspTunnelIpv4Ipv4TunnelEndPointAddress{obj: obj.obj.Ipv4TunnelEndPointAddress} + } + return obj.ipv4TunnelEndPointAddressHolder } // description is TBD -// Start returns a uint32 -func (obj *patternFlowIcmpEchoIdentifierCounter) HasStart() bool { - return obj.obj.Start != nil +// Ipv4TunnelEndPointAddress returns a PatternFlowRSVPPathSessionLspTunnelIpv4Ipv4TunnelEndPointAddress +func (obj *flowRSVPPathSessionLspTunnelIpv4) HasIpv4TunnelEndPointAddress() bool { + return obj.obj.Ipv4TunnelEndPointAddress != nil } // description is TBD -// SetStart sets the uint32 value in the PatternFlowIcmpEchoIdentifierCounter object -func (obj *patternFlowIcmpEchoIdentifierCounter) SetStart(value uint32) PatternFlowIcmpEchoIdentifierCounter { +// SetIpv4TunnelEndPointAddress sets the PatternFlowRSVPPathSessionLspTunnelIpv4Ipv4TunnelEndPointAddress value in the FlowRSVPPathSessionLspTunnelIpv4 object +func (obj *flowRSVPPathSessionLspTunnelIpv4) SetIpv4TunnelEndPointAddress(value PatternFlowRSVPPathSessionLspTunnelIpv4Ipv4TunnelEndPointAddress) FlowRSVPPathSessionLspTunnelIpv4 { + + obj.ipv4TunnelEndPointAddressHolder = nil + obj.obj.Ipv4TunnelEndPointAddress = value.Msg() - obj.obj.Start = &value return obj } // description is TBD -// Step returns a uint32 -func (obj *patternFlowIcmpEchoIdentifierCounter) Step() uint32 { - - return *obj.obj.Step - +// Reserved returns a PatternFlowRSVPPathSessionLspTunnelIpv4Reserved +func (obj *flowRSVPPathSessionLspTunnelIpv4) Reserved() PatternFlowRSVPPathSessionLspTunnelIpv4Reserved { + if obj.obj.Reserved == nil { + obj.obj.Reserved = NewPatternFlowRSVPPathSessionLspTunnelIpv4Reserved().Msg() + } + if obj.reservedHolder == nil { + obj.reservedHolder = &patternFlowRSVPPathSessionLspTunnelIpv4Reserved{obj: obj.obj.Reserved} + } + return obj.reservedHolder } // description is TBD -// Step returns a uint32 -func (obj *patternFlowIcmpEchoIdentifierCounter) HasStep() bool { - return obj.obj.Step != nil +// Reserved returns a PatternFlowRSVPPathSessionLspTunnelIpv4Reserved +func (obj *flowRSVPPathSessionLspTunnelIpv4) HasReserved() bool { + return obj.obj.Reserved != nil } // description is TBD -// SetStep sets the uint32 value in the PatternFlowIcmpEchoIdentifierCounter object -func (obj *patternFlowIcmpEchoIdentifierCounter) SetStep(value uint32) PatternFlowIcmpEchoIdentifierCounter { +// SetReserved sets the PatternFlowRSVPPathSessionLspTunnelIpv4Reserved value in the FlowRSVPPathSessionLspTunnelIpv4 object +func (obj *flowRSVPPathSessionLspTunnelIpv4) SetReserved(value PatternFlowRSVPPathSessionLspTunnelIpv4Reserved) FlowRSVPPathSessionLspTunnelIpv4 { + + obj.reservedHolder = nil + obj.obj.Reserved = value.Msg() - obj.obj.Step = &value return obj } // description is TBD -// Count returns a uint32 -func (obj *patternFlowIcmpEchoIdentifierCounter) Count() uint32 { +// TunnelId returns a PatternFlowRSVPPathSessionLspTunnelIpv4TunnelId +func (obj *flowRSVPPathSessionLspTunnelIpv4) TunnelId() PatternFlowRSVPPathSessionLspTunnelIpv4TunnelId { + if obj.obj.TunnelId == nil { + obj.obj.TunnelId = NewPatternFlowRSVPPathSessionLspTunnelIpv4TunnelId().Msg() + } + if obj.tunnelIdHolder == nil { + obj.tunnelIdHolder = &patternFlowRSVPPathSessionLspTunnelIpv4TunnelId{obj: obj.obj.TunnelId} + } + return obj.tunnelIdHolder +} - return *obj.obj.Count +// description is TBD +// TunnelId returns a PatternFlowRSVPPathSessionLspTunnelIpv4TunnelId +func (obj *flowRSVPPathSessionLspTunnelIpv4) HasTunnelId() bool { + return obj.obj.TunnelId != nil +} + +// description is TBD +// SetTunnelId sets the PatternFlowRSVPPathSessionLspTunnelIpv4TunnelId value in the FlowRSVPPathSessionLspTunnelIpv4 object +func (obj *flowRSVPPathSessionLspTunnelIpv4) SetTunnelId(value PatternFlowRSVPPathSessionLspTunnelIpv4TunnelId) FlowRSVPPathSessionLspTunnelIpv4 { + + obj.tunnelIdHolder = nil + obj.obj.TunnelId = value.Msg() + + return obj +} +// description is TBD +// ExtendedTunnelId returns a PatternFlowRSVPPathSessionLspTunnelIpv4ExtendedTunnelId +func (obj *flowRSVPPathSessionLspTunnelIpv4) ExtendedTunnelId() PatternFlowRSVPPathSessionLspTunnelIpv4ExtendedTunnelId { + if obj.obj.ExtendedTunnelId == nil { + obj.obj.ExtendedTunnelId = NewPatternFlowRSVPPathSessionLspTunnelIpv4ExtendedTunnelId().Msg() + } + if obj.extendedTunnelIdHolder == nil { + obj.extendedTunnelIdHolder = &patternFlowRSVPPathSessionLspTunnelIpv4ExtendedTunnelId{obj: obj.obj.ExtendedTunnelId} + } + return obj.extendedTunnelIdHolder } // description is TBD -// Count returns a uint32 -func (obj *patternFlowIcmpEchoIdentifierCounter) HasCount() bool { - return obj.obj.Count != nil +// ExtendedTunnelId returns a PatternFlowRSVPPathSessionLspTunnelIpv4ExtendedTunnelId +func (obj *flowRSVPPathSessionLspTunnelIpv4) HasExtendedTunnelId() bool { + return obj.obj.ExtendedTunnelId != nil } // description is TBD -// SetCount sets the uint32 value in the PatternFlowIcmpEchoIdentifierCounter object -func (obj *patternFlowIcmpEchoIdentifierCounter) SetCount(value uint32) PatternFlowIcmpEchoIdentifierCounter { +// SetExtendedTunnelId sets the PatternFlowRSVPPathSessionLspTunnelIpv4ExtendedTunnelId value in the FlowRSVPPathSessionLspTunnelIpv4 object +func (obj *flowRSVPPathSessionLspTunnelIpv4) SetExtendedTunnelId(value PatternFlowRSVPPathSessionLspTunnelIpv4ExtendedTunnelId) FlowRSVPPathSessionLspTunnelIpv4 { + + obj.extendedTunnelIdHolder = nil + obj.obj.ExtendedTunnelId = value.Msg() - obj.obj.Count = &value return obj } -func (obj *patternFlowIcmpEchoIdentifierCounter) validateObj(vObj *validation, set_default bool) { +func (obj *flowRSVPPathSessionLspTunnelIpv4) validateObj(vObj *validation, set_default bool) { if set_default { obj.setDefault() } - if obj.obj.Start != nil { - - if *obj.obj.Start > 65535 { - vObj.validationErrors = append( - vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowIcmpEchoIdentifierCounter.Start <= 65535 but Got %d", *obj.obj.Start)) - } + if obj.obj.Ipv4TunnelEndPointAddress != nil { + obj.Ipv4TunnelEndPointAddress().validateObj(vObj, set_default) } - if obj.obj.Step != nil { - - if *obj.obj.Step > 65535 { - vObj.validationErrors = append( - vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowIcmpEchoIdentifierCounter.Step <= 65535 but Got %d", *obj.obj.Step)) - } + if obj.obj.Reserved != nil { + obj.Reserved().validateObj(vObj, set_default) } - if obj.obj.Count != nil { + if obj.obj.TunnelId != nil { - if *obj.obj.Count > 65535 { - vObj.validationErrors = append( - vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowIcmpEchoIdentifierCounter.Count <= 65535 but Got %d", *obj.obj.Count)) - } + obj.TunnelId().validateObj(vObj, set_default) + } + + if obj.obj.ExtendedTunnelId != nil { + obj.ExtendedTunnelId().validateObj(vObj, set_default) } } -func (obj *patternFlowIcmpEchoIdentifierCounter) setDefault() { - if obj.obj.Start == nil { - obj.SetStart(0) - } - if obj.obj.Step == nil { - obj.SetStep(1) - } - if obj.obj.Count == nil { - obj.SetCount(1) - } +func (obj *flowRSVPPathSessionLspTunnelIpv4) setDefault() { } -// ***** PatternFlowIcmpEchoIdentifierMetricTag ***** -type patternFlowIcmpEchoIdentifierMetricTag struct { +// ***** FlowRSVPPathRsvpHopIpv4 ***** +type flowRSVPPathRsvpHopIpv4 struct { validation - obj *otg.PatternFlowIcmpEchoIdentifierMetricTag + obj *otg.FlowRSVPPathRsvpHopIpv4 + ipv4NextPreviousHopAddressHolder PatternFlowRSVPPathRsvpHopIpv4Ipv4NextPreviousHopAddress + logicalInterfaceHandleHolder PatternFlowRSVPPathRsvpHopIpv4LogicalInterfaceHandle } -func NewPatternFlowIcmpEchoIdentifierMetricTag() PatternFlowIcmpEchoIdentifierMetricTag { - obj := patternFlowIcmpEchoIdentifierMetricTag{obj: &otg.PatternFlowIcmpEchoIdentifierMetricTag{}} +func NewFlowRSVPPathRsvpHopIpv4() FlowRSVPPathRsvpHopIpv4 { + obj := flowRSVPPathRsvpHopIpv4{obj: &otg.FlowRSVPPathRsvpHopIpv4{}} obj.setDefault() return &obj } -func (obj *patternFlowIcmpEchoIdentifierMetricTag) Msg() *otg.PatternFlowIcmpEchoIdentifierMetricTag { +func (obj *flowRSVPPathRsvpHopIpv4) Msg() *otg.FlowRSVPPathRsvpHopIpv4 { return obj.obj } -func (obj *patternFlowIcmpEchoIdentifierMetricTag) SetMsg(msg *otg.PatternFlowIcmpEchoIdentifierMetricTag) PatternFlowIcmpEchoIdentifierMetricTag { - +func (obj *flowRSVPPathRsvpHopIpv4) SetMsg(msg *otg.FlowRSVPPathRsvpHopIpv4) FlowRSVPPathRsvpHopIpv4 { + obj.setNil() proto.Merge(obj.obj, msg) return obj } -func (obj *patternFlowIcmpEchoIdentifierMetricTag) ToProto() (*otg.PatternFlowIcmpEchoIdentifierMetricTag, error) { +func (obj *flowRSVPPathRsvpHopIpv4) ToProto() (*otg.FlowRSVPPathRsvpHopIpv4, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -291433,7 +335970,7 @@ func (obj *patternFlowIcmpEchoIdentifierMetricTag) ToProto() (*otg.PatternFlowIc return obj.Msg(), nil } -func (obj *patternFlowIcmpEchoIdentifierMetricTag) FromProto(msg *otg.PatternFlowIcmpEchoIdentifierMetricTag) (PatternFlowIcmpEchoIdentifierMetricTag, error) { +func (obj *flowRSVPPathRsvpHopIpv4) FromProto(msg *otg.FlowRSVPPathRsvpHopIpv4) (FlowRSVPPathRsvpHopIpv4, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -291442,7 +335979,7 @@ func (obj *patternFlowIcmpEchoIdentifierMetricTag) FromProto(msg *otg.PatternFlo return newObj, nil } -func (obj *patternFlowIcmpEchoIdentifierMetricTag) ToPbText() (string, error) { +func (obj *flowRSVPPathRsvpHopIpv4) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -291454,12 +335991,12 @@ func (obj *patternFlowIcmpEchoIdentifierMetricTag) ToPbText() (string, error) { return string(protoMarshal), nil } -func (obj *patternFlowIcmpEchoIdentifierMetricTag) FromPbText(value string) error { +func (obj *flowRSVPPathRsvpHopIpv4) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj } - + obj.setNil() vErr := obj.validateToAndFrom() if vErr != nil { return vErr @@ -291467,7 +336004,7 @@ func (obj *patternFlowIcmpEchoIdentifierMetricTag) FromPbText(value string) erro return retObj } -func (obj *patternFlowIcmpEchoIdentifierMetricTag) ToYaml() (string, error) { +func (obj *flowRSVPPathRsvpHopIpv4) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -291488,7 +336025,7 @@ func (obj *patternFlowIcmpEchoIdentifierMetricTag) ToYaml() (string, error) { return string(data), nil } -func (obj *patternFlowIcmpEchoIdentifierMetricTag) FromYaml(value string) error { +func (obj *flowRSVPPathRsvpHopIpv4) FromYaml(value string) error { if value == "" { value = "{}" } @@ -291505,7 +336042,7 @@ func (obj *patternFlowIcmpEchoIdentifierMetricTag) FromYaml(value string) error return fmt.Errorf("unmarshal error %s", strings.Replace( uError.Error(), "\u00a0", " ", -1)[7:]) } - + obj.setNil() vErr := obj.validateToAndFrom() if vErr != nil { return vErr @@ -291513,7 +336050,7 @@ func (obj *patternFlowIcmpEchoIdentifierMetricTag) FromYaml(value string) error return nil } -func (obj *patternFlowIcmpEchoIdentifierMetricTag) ToJson() (string, error) { +func (obj *flowRSVPPathRsvpHopIpv4) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -291531,7 +336068,7 @@ func (obj *patternFlowIcmpEchoIdentifierMetricTag) ToJson() (string, error) { return string(data), nil } -func (obj *patternFlowIcmpEchoIdentifierMetricTag) FromJson(value string) error { +func (obj *flowRSVPPathRsvpHopIpv4) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -291544,7 +336081,7 @@ func (obj *patternFlowIcmpEchoIdentifierMetricTag) FromJson(value string) error return fmt.Errorf("unmarshal error %s", strings.Replace( uError.Error(), "\u00a0", " ", -1)[7:]) } - + obj.setNil() err := obj.validateToAndFrom() if err != nil { return err @@ -291552,19 +336089,19 @@ func (obj *patternFlowIcmpEchoIdentifierMetricTag) FromJson(value string) error return nil } -func (obj *patternFlowIcmpEchoIdentifierMetricTag) validateToAndFrom() error { +func (obj *flowRSVPPathRsvpHopIpv4) validateToAndFrom() error { // emptyVars() obj.validateObj(&obj.validation, true) return obj.validationResult() } -func (obj *patternFlowIcmpEchoIdentifierMetricTag) Validate() error { +func (obj *flowRSVPPathRsvpHopIpv4) Validate() error { // emptyVars() obj.validateObj(&obj.validation, false) return obj.validationResult() } -func (obj *patternFlowIcmpEchoIdentifierMetricTag) String() string { +func (obj *flowRSVPPathRsvpHopIpv4) String() string { str, err := obj.ToYaml() if err != nil { return err.Error() @@ -291572,12 +336109,12 @@ func (obj *patternFlowIcmpEchoIdentifierMetricTag) String() string { return str } -func (obj *patternFlowIcmpEchoIdentifierMetricTag) Clone() (PatternFlowIcmpEchoIdentifierMetricTag, error) { +func (obj *flowRSVPPathRsvpHopIpv4) Clone() (FlowRSVPPathRsvpHopIpv4, error) { vErr := obj.Validate() if vErr != nil { return nil, vErr } - newObj := NewPatternFlowIcmpEchoIdentifierMetricTag() + newObj := NewFlowRSVPPathRsvpHopIpv4() data, err := proto.Marshal(obj.Msg()) if err != nil { return nil, err @@ -291589,183 +336126,168 @@ func (obj *patternFlowIcmpEchoIdentifierMetricTag) Clone() (PatternFlowIcmpEchoI return newObj, nil } -// PatternFlowIcmpEchoIdentifierMetricTag is metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. -type PatternFlowIcmpEchoIdentifierMetricTag interface { +func (obj *flowRSVPPathRsvpHopIpv4) setNil() { + obj.ipv4NextPreviousHopAddressHolder = nil + obj.logicalInterfaceHandleHolder = nil + obj.validationErrors = nil + obj.warnings = nil + obj.constraints = make(map[string]map[string]Constraints) +} + +// FlowRSVPPathRsvpHopIpv4 is iPv4 RSVP_HOP object: Class = 3, C-Type = 1 +type FlowRSVPPathRsvpHopIpv4 interface { Validation - // Msg marshals PatternFlowIcmpEchoIdentifierMetricTag to protobuf object *otg.PatternFlowIcmpEchoIdentifierMetricTag + // Msg marshals FlowRSVPPathRsvpHopIpv4 to protobuf object *otg.FlowRSVPPathRsvpHopIpv4 // and doesn't set defaults - Msg() *otg.PatternFlowIcmpEchoIdentifierMetricTag - // SetMsg unmarshals PatternFlowIcmpEchoIdentifierMetricTag from protobuf object *otg.PatternFlowIcmpEchoIdentifierMetricTag + Msg() *otg.FlowRSVPPathRsvpHopIpv4 + // SetMsg unmarshals FlowRSVPPathRsvpHopIpv4 from protobuf object *otg.FlowRSVPPathRsvpHopIpv4 // and doesn't set defaults - SetMsg(*otg.PatternFlowIcmpEchoIdentifierMetricTag) PatternFlowIcmpEchoIdentifierMetricTag - // ToProto marshals PatternFlowIcmpEchoIdentifierMetricTag to protobuf object *otg.PatternFlowIcmpEchoIdentifierMetricTag - ToProto() (*otg.PatternFlowIcmpEchoIdentifierMetricTag, error) - // ToPbText marshals PatternFlowIcmpEchoIdentifierMetricTag to protobuf text + SetMsg(*otg.FlowRSVPPathRsvpHopIpv4) FlowRSVPPathRsvpHopIpv4 + // ToProto marshals FlowRSVPPathRsvpHopIpv4 to protobuf object *otg.FlowRSVPPathRsvpHopIpv4 + ToProto() (*otg.FlowRSVPPathRsvpHopIpv4, error) + // ToPbText marshals FlowRSVPPathRsvpHopIpv4 to protobuf text ToPbText() (string, error) - // ToYaml marshals PatternFlowIcmpEchoIdentifierMetricTag to YAML text + // ToYaml marshals FlowRSVPPathRsvpHopIpv4 to YAML text ToYaml() (string, error) - // ToJson marshals PatternFlowIcmpEchoIdentifierMetricTag to JSON text + // ToJson marshals FlowRSVPPathRsvpHopIpv4 to JSON text ToJson() (string, error) - // FromProto unmarshals PatternFlowIcmpEchoIdentifierMetricTag from protobuf object *otg.PatternFlowIcmpEchoIdentifierMetricTag - FromProto(msg *otg.PatternFlowIcmpEchoIdentifierMetricTag) (PatternFlowIcmpEchoIdentifierMetricTag, error) - // FromPbText unmarshals PatternFlowIcmpEchoIdentifierMetricTag from protobuf text + // FromProto unmarshals FlowRSVPPathRsvpHopIpv4 from protobuf object *otg.FlowRSVPPathRsvpHopIpv4 + FromProto(msg *otg.FlowRSVPPathRsvpHopIpv4) (FlowRSVPPathRsvpHopIpv4, error) + // FromPbText unmarshals FlowRSVPPathRsvpHopIpv4 from protobuf text FromPbText(value string) error - // FromYaml unmarshals PatternFlowIcmpEchoIdentifierMetricTag from YAML text + // FromYaml unmarshals FlowRSVPPathRsvpHopIpv4 from YAML text FromYaml(value string) error - // FromJson unmarshals PatternFlowIcmpEchoIdentifierMetricTag from JSON text + // FromJson unmarshals FlowRSVPPathRsvpHopIpv4 from JSON text FromJson(value string) error - // Validate validates PatternFlowIcmpEchoIdentifierMetricTag + // Validate validates FlowRSVPPathRsvpHopIpv4 Validate() error // A stringer function String() string // Clones the object - Clone() (PatternFlowIcmpEchoIdentifierMetricTag, error) + Clone() (FlowRSVPPathRsvpHopIpv4, error) validateToAndFrom() error validateObj(vObj *validation, set_default bool) setDefault() - // Name returns string, set in PatternFlowIcmpEchoIdentifierMetricTag. - Name() string - // SetName assigns string provided by user to PatternFlowIcmpEchoIdentifierMetricTag - SetName(value string) PatternFlowIcmpEchoIdentifierMetricTag - // Offset returns uint32, set in PatternFlowIcmpEchoIdentifierMetricTag. - Offset() uint32 - // SetOffset assigns uint32 provided by user to PatternFlowIcmpEchoIdentifierMetricTag - SetOffset(value uint32) PatternFlowIcmpEchoIdentifierMetricTag - // HasOffset checks if Offset has been set in PatternFlowIcmpEchoIdentifierMetricTag - HasOffset() bool - // Length returns uint32, set in PatternFlowIcmpEchoIdentifierMetricTag. - Length() uint32 - // SetLength assigns uint32 provided by user to PatternFlowIcmpEchoIdentifierMetricTag - SetLength(value uint32) PatternFlowIcmpEchoIdentifierMetricTag - // HasLength checks if Length has been set in PatternFlowIcmpEchoIdentifierMetricTag - HasLength() bool -} - -// Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field -// Name returns a string -func (obj *patternFlowIcmpEchoIdentifierMetricTag) Name() string { - - return *obj.obj.Name - + // Ipv4NextPreviousHopAddress returns PatternFlowRSVPPathRsvpHopIpv4Ipv4NextPreviousHopAddress, set in FlowRSVPPathRsvpHopIpv4. + // PatternFlowRSVPPathRsvpHopIpv4Ipv4NextPreviousHopAddress is the IPv4 address of the interface through which the last RSVP-knowledgeable hop forwarded this message. + Ipv4NextPreviousHopAddress() PatternFlowRSVPPathRsvpHopIpv4Ipv4NextPreviousHopAddress + // SetIpv4NextPreviousHopAddress assigns PatternFlowRSVPPathRsvpHopIpv4Ipv4NextPreviousHopAddress provided by user to FlowRSVPPathRsvpHopIpv4. + // PatternFlowRSVPPathRsvpHopIpv4Ipv4NextPreviousHopAddress is the IPv4 address of the interface through which the last RSVP-knowledgeable hop forwarded this message. + SetIpv4NextPreviousHopAddress(value PatternFlowRSVPPathRsvpHopIpv4Ipv4NextPreviousHopAddress) FlowRSVPPathRsvpHopIpv4 + // HasIpv4NextPreviousHopAddress checks if Ipv4NextPreviousHopAddress has been set in FlowRSVPPathRsvpHopIpv4 + HasIpv4NextPreviousHopAddress() bool + // LogicalInterfaceHandle returns PatternFlowRSVPPathRsvpHopIpv4LogicalInterfaceHandle, set in FlowRSVPPathRsvpHopIpv4. + // PatternFlowRSVPPathRsvpHopIpv4LogicalInterfaceHandle is logical Interface Handle (LIH) is used to distinguish logical outgoing interfaces. A node receiving an LIH in a Path message saves its value and returns it in the HOP objects of subsequent Resv messages sent to the node that originated the LIH. The LIH should be identically zero if there is no logical interface handle. + LogicalInterfaceHandle() PatternFlowRSVPPathRsvpHopIpv4LogicalInterfaceHandle + // SetLogicalInterfaceHandle assigns PatternFlowRSVPPathRsvpHopIpv4LogicalInterfaceHandle provided by user to FlowRSVPPathRsvpHopIpv4. + // PatternFlowRSVPPathRsvpHopIpv4LogicalInterfaceHandle is logical Interface Handle (LIH) is used to distinguish logical outgoing interfaces. A node receiving an LIH in a Path message saves its value and returns it in the HOP objects of subsequent Resv messages sent to the node that originated the LIH. The LIH should be identically zero if there is no logical interface handle. + SetLogicalInterfaceHandle(value PatternFlowRSVPPathRsvpHopIpv4LogicalInterfaceHandle) FlowRSVPPathRsvpHopIpv4 + // HasLogicalInterfaceHandle checks if LogicalInterfaceHandle has been set in FlowRSVPPathRsvpHopIpv4 + HasLogicalInterfaceHandle() bool + setNil() } -// Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field -// SetName sets the string value in the PatternFlowIcmpEchoIdentifierMetricTag object -func (obj *patternFlowIcmpEchoIdentifierMetricTag) SetName(value string) PatternFlowIcmpEchoIdentifierMetricTag { - - obj.obj.Name = &value - return obj +// description is TBD +// Ipv4NextPreviousHopAddress returns a PatternFlowRSVPPathRsvpHopIpv4Ipv4NextPreviousHopAddress +func (obj *flowRSVPPathRsvpHopIpv4) Ipv4NextPreviousHopAddress() PatternFlowRSVPPathRsvpHopIpv4Ipv4NextPreviousHopAddress { + if obj.obj.Ipv4NextPreviousHopAddress == nil { + obj.obj.Ipv4NextPreviousHopAddress = NewPatternFlowRSVPPathRsvpHopIpv4Ipv4NextPreviousHopAddress().Msg() + } + if obj.ipv4NextPreviousHopAddressHolder == nil { + obj.ipv4NextPreviousHopAddressHolder = &patternFlowRSVPPathRsvpHopIpv4Ipv4NextPreviousHopAddress{obj: obj.obj.Ipv4NextPreviousHopAddress} + } + return obj.ipv4NextPreviousHopAddressHolder } -// Offset in bits relative to start of corresponding header field -// Offset returns a uint32 -func (obj *patternFlowIcmpEchoIdentifierMetricTag) Offset() uint32 { - - return *obj.obj.Offset - +// description is TBD +// Ipv4NextPreviousHopAddress returns a PatternFlowRSVPPathRsvpHopIpv4Ipv4NextPreviousHopAddress +func (obj *flowRSVPPathRsvpHopIpv4) HasIpv4NextPreviousHopAddress() bool { + return obj.obj.Ipv4NextPreviousHopAddress != nil } -// Offset in bits relative to start of corresponding header field -// Offset returns a uint32 -func (obj *patternFlowIcmpEchoIdentifierMetricTag) HasOffset() bool { - return obj.obj.Offset != nil -} +// description is TBD +// SetIpv4NextPreviousHopAddress sets the PatternFlowRSVPPathRsvpHopIpv4Ipv4NextPreviousHopAddress value in the FlowRSVPPathRsvpHopIpv4 object +func (obj *flowRSVPPathRsvpHopIpv4) SetIpv4NextPreviousHopAddress(value PatternFlowRSVPPathRsvpHopIpv4Ipv4NextPreviousHopAddress) FlowRSVPPathRsvpHopIpv4 { -// Offset in bits relative to start of corresponding header field -// SetOffset sets the uint32 value in the PatternFlowIcmpEchoIdentifierMetricTag object -func (obj *patternFlowIcmpEchoIdentifierMetricTag) SetOffset(value uint32) PatternFlowIcmpEchoIdentifierMetricTag { + obj.ipv4NextPreviousHopAddressHolder = nil + obj.obj.Ipv4NextPreviousHopAddress = value.Msg() - obj.obj.Offset = &value return obj } -// Number of bits to track for metrics starting from configured offset of corresponding header field -// Length returns a uint32 -func (obj *patternFlowIcmpEchoIdentifierMetricTag) Length() uint32 { - - return *obj.obj.Length - +// description is TBD +// LogicalInterfaceHandle returns a PatternFlowRSVPPathRsvpHopIpv4LogicalInterfaceHandle +func (obj *flowRSVPPathRsvpHopIpv4) LogicalInterfaceHandle() PatternFlowRSVPPathRsvpHopIpv4LogicalInterfaceHandle { + if obj.obj.LogicalInterfaceHandle == nil { + obj.obj.LogicalInterfaceHandle = NewPatternFlowRSVPPathRsvpHopIpv4LogicalInterfaceHandle().Msg() + } + if obj.logicalInterfaceHandleHolder == nil { + obj.logicalInterfaceHandleHolder = &patternFlowRSVPPathRsvpHopIpv4LogicalInterfaceHandle{obj: obj.obj.LogicalInterfaceHandle} + } + return obj.logicalInterfaceHandleHolder } -// Number of bits to track for metrics starting from configured offset of corresponding header field -// Length returns a uint32 -func (obj *patternFlowIcmpEchoIdentifierMetricTag) HasLength() bool { - return obj.obj.Length != nil +// description is TBD +// LogicalInterfaceHandle returns a PatternFlowRSVPPathRsvpHopIpv4LogicalInterfaceHandle +func (obj *flowRSVPPathRsvpHopIpv4) HasLogicalInterfaceHandle() bool { + return obj.obj.LogicalInterfaceHandle != nil } -// Number of bits to track for metrics starting from configured offset of corresponding header field -// SetLength sets the uint32 value in the PatternFlowIcmpEchoIdentifierMetricTag object -func (obj *patternFlowIcmpEchoIdentifierMetricTag) SetLength(value uint32) PatternFlowIcmpEchoIdentifierMetricTag { +// description is TBD +// SetLogicalInterfaceHandle sets the PatternFlowRSVPPathRsvpHopIpv4LogicalInterfaceHandle value in the FlowRSVPPathRsvpHopIpv4 object +func (obj *flowRSVPPathRsvpHopIpv4) SetLogicalInterfaceHandle(value PatternFlowRSVPPathRsvpHopIpv4LogicalInterfaceHandle) FlowRSVPPathRsvpHopIpv4 { + + obj.logicalInterfaceHandleHolder = nil + obj.obj.LogicalInterfaceHandle = value.Msg() - obj.obj.Length = &value return obj } -func (obj *patternFlowIcmpEchoIdentifierMetricTag) validateObj(vObj *validation, set_default bool) { +func (obj *flowRSVPPathRsvpHopIpv4) validateObj(vObj *validation, set_default bool) { if set_default { obj.setDefault() } - // Name is required - if obj.obj.Name == nil { - vObj.validationErrors = append(vObj.validationErrors, "Name is required field on interface PatternFlowIcmpEchoIdentifierMetricTag") - } - - if obj.obj.Offset != nil { - - if *obj.obj.Offset > 15 { - vObj.validationErrors = append( - vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowIcmpEchoIdentifierMetricTag.Offset <= 15 but Got %d", *obj.obj.Offset)) - } + if obj.obj.Ipv4NextPreviousHopAddress != nil { + obj.Ipv4NextPreviousHopAddress().validateObj(vObj, set_default) } - if obj.obj.Length != nil { - - if *obj.obj.Length < 1 || *obj.obj.Length > 16 { - vObj.validationErrors = append( - vObj.validationErrors, - fmt.Sprintf("1 <= PatternFlowIcmpEchoIdentifierMetricTag.Length <= 16 but Got %d", *obj.obj.Length)) - } + if obj.obj.LogicalInterfaceHandle != nil { + obj.LogicalInterfaceHandle().validateObj(vObj, set_default) } } -func (obj *patternFlowIcmpEchoIdentifierMetricTag) setDefault() { - if obj.obj.Offset == nil { - obj.SetOffset(0) - } - if obj.obj.Length == nil { - obj.SetLength(16) - } +func (obj *flowRSVPPathRsvpHopIpv4) setDefault() { } -// ***** PatternFlowIcmpEchoSequenceNumberCounter ***** -type patternFlowIcmpEchoSequenceNumberCounter struct { +// ***** FlowRSVPPathTimeValuesType1 ***** +type flowRSVPPathTimeValuesType1 struct { validation - obj *otg.PatternFlowIcmpEchoSequenceNumberCounter + obj *otg.FlowRSVPPathTimeValuesType1 + refreshPeriodRHolder PatternFlowRSVPPathTimeValuesType1RefreshPeriodR } -func NewPatternFlowIcmpEchoSequenceNumberCounter() PatternFlowIcmpEchoSequenceNumberCounter { - obj := patternFlowIcmpEchoSequenceNumberCounter{obj: &otg.PatternFlowIcmpEchoSequenceNumberCounter{}} +func NewFlowRSVPPathTimeValuesType1() FlowRSVPPathTimeValuesType1 { + obj := flowRSVPPathTimeValuesType1{obj: &otg.FlowRSVPPathTimeValuesType1{}} obj.setDefault() return &obj } -func (obj *patternFlowIcmpEchoSequenceNumberCounter) Msg() *otg.PatternFlowIcmpEchoSequenceNumberCounter { +func (obj *flowRSVPPathTimeValuesType1) Msg() *otg.FlowRSVPPathTimeValuesType1 { return obj.obj } -func (obj *patternFlowIcmpEchoSequenceNumberCounter) SetMsg(msg *otg.PatternFlowIcmpEchoSequenceNumberCounter) PatternFlowIcmpEchoSequenceNumberCounter { - +func (obj *flowRSVPPathTimeValuesType1) SetMsg(msg *otg.FlowRSVPPathTimeValuesType1) FlowRSVPPathTimeValuesType1 { + obj.setNil() proto.Merge(obj.obj, msg) return obj } -func (obj *patternFlowIcmpEchoSequenceNumberCounter) ToProto() (*otg.PatternFlowIcmpEchoSequenceNumberCounter, error) { +func (obj *flowRSVPPathTimeValuesType1) ToProto() (*otg.FlowRSVPPathTimeValuesType1, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -291773,7 +336295,7 @@ func (obj *patternFlowIcmpEchoSequenceNumberCounter) ToProto() (*otg.PatternFlow return obj.Msg(), nil } -func (obj *patternFlowIcmpEchoSequenceNumberCounter) FromProto(msg *otg.PatternFlowIcmpEchoSequenceNumberCounter) (PatternFlowIcmpEchoSequenceNumberCounter, error) { +func (obj *flowRSVPPathTimeValuesType1) FromProto(msg *otg.FlowRSVPPathTimeValuesType1) (FlowRSVPPathTimeValuesType1, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -291782,7 +336304,7 @@ func (obj *patternFlowIcmpEchoSequenceNumberCounter) FromProto(msg *otg.PatternF return newObj, nil } -func (obj *patternFlowIcmpEchoSequenceNumberCounter) ToPbText() (string, error) { +func (obj *flowRSVPPathTimeValuesType1) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -291794,12 +336316,12 @@ func (obj *patternFlowIcmpEchoSequenceNumberCounter) ToPbText() (string, error) return string(protoMarshal), nil } -func (obj *patternFlowIcmpEchoSequenceNumberCounter) FromPbText(value string) error { +func (obj *flowRSVPPathTimeValuesType1) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj } - + obj.setNil() vErr := obj.validateToAndFrom() if vErr != nil { return vErr @@ -291807,7 +336329,7 @@ func (obj *patternFlowIcmpEchoSequenceNumberCounter) FromPbText(value string) er return retObj } -func (obj *patternFlowIcmpEchoSequenceNumberCounter) ToYaml() (string, error) { +func (obj *flowRSVPPathTimeValuesType1) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -291828,7 +336350,7 @@ func (obj *patternFlowIcmpEchoSequenceNumberCounter) ToYaml() (string, error) { return string(data), nil } -func (obj *patternFlowIcmpEchoSequenceNumberCounter) FromYaml(value string) error { +func (obj *flowRSVPPathTimeValuesType1) FromYaml(value string) error { if value == "" { value = "{}" } @@ -291845,7 +336367,7 @@ func (obj *patternFlowIcmpEchoSequenceNumberCounter) FromYaml(value string) erro return fmt.Errorf("unmarshal error %s", strings.Replace( uError.Error(), "\u00a0", " ", -1)[7:]) } - + obj.setNil() vErr := obj.validateToAndFrom() if vErr != nil { return vErr @@ -291853,7 +336375,7 @@ func (obj *patternFlowIcmpEchoSequenceNumberCounter) FromYaml(value string) erro return nil } -func (obj *patternFlowIcmpEchoSequenceNumberCounter) ToJson() (string, error) { +func (obj *flowRSVPPathTimeValuesType1) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -291871,7 +336393,7 @@ func (obj *patternFlowIcmpEchoSequenceNumberCounter) ToJson() (string, error) { return string(data), nil } -func (obj *patternFlowIcmpEchoSequenceNumberCounter) FromJson(value string) error { +func (obj *flowRSVPPathTimeValuesType1) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -291884,7 +336406,7 @@ func (obj *patternFlowIcmpEchoSequenceNumberCounter) FromJson(value string) erro return fmt.Errorf("unmarshal error %s", strings.Replace( uError.Error(), "\u00a0", " ", -1)[7:]) } - + obj.setNil() err := obj.validateToAndFrom() if err != nil { return err @@ -291892,19 +336414,19 @@ func (obj *patternFlowIcmpEchoSequenceNumberCounter) FromJson(value string) erro return nil } -func (obj *patternFlowIcmpEchoSequenceNumberCounter) validateToAndFrom() error { +func (obj *flowRSVPPathTimeValuesType1) validateToAndFrom() error { // emptyVars() obj.validateObj(&obj.validation, true) return obj.validationResult() } -func (obj *patternFlowIcmpEchoSequenceNumberCounter) Validate() error { +func (obj *flowRSVPPathTimeValuesType1) Validate() error { // emptyVars() obj.validateObj(&obj.validation, false) return obj.validationResult() } -func (obj *patternFlowIcmpEchoSequenceNumberCounter) String() string { +func (obj *flowRSVPPathTimeValuesType1) String() string { str, err := obj.ToYaml() if err != nil { return err.Error() @@ -291912,12 +336434,12 @@ func (obj *patternFlowIcmpEchoSequenceNumberCounter) String() string { return str } -func (obj *patternFlowIcmpEchoSequenceNumberCounter) Clone() (PatternFlowIcmpEchoSequenceNumberCounter, error) { +func (obj *flowRSVPPathTimeValuesType1) Clone() (FlowRSVPPathTimeValuesType1, error) { vErr := obj.Validate() if vErr != nil { return nil, vErr } - newObj := NewPatternFlowIcmpEchoSequenceNumberCounter() + newObj := NewFlowRSVPPathTimeValuesType1() data, err := proto.Marshal(obj.Msg()) if err != nil { return nil, err @@ -291929,199 +336451,126 @@ func (obj *patternFlowIcmpEchoSequenceNumberCounter) Clone() (PatternFlowIcmpEch return newObj, nil } -// PatternFlowIcmpEchoSequenceNumberCounter is integer counter pattern -type PatternFlowIcmpEchoSequenceNumberCounter interface { +func (obj *flowRSVPPathTimeValuesType1) setNil() { + obj.refreshPeriodRHolder = nil + obj.validationErrors = nil + obj.warnings = nil + obj.constraints = make(map[string]map[string]Constraints) +} + +// FlowRSVPPathTimeValuesType1 is tIME_VALUES Object: Class = 5, C-Type = 1 +type FlowRSVPPathTimeValuesType1 interface { Validation - // Msg marshals PatternFlowIcmpEchoSequenceNumberCounter to protobuf object *otg.PatternFlowIcmpEchoSequenceNumberCounter + // Msg marshals FlowRSVPPathTimeValuesType1 to protobuf object *otg.FlowRSVPPathTimeValuesType1 // and doesn't set defaults - Msg() *otg.PatternFlowIcmpEchoSequenceNumberCounter - // SetMsg unmarshals PatternFlowIcmpEchoSequenceNumberCounter from protobuf object *otg.PatternFlowIcmpEchoSequenceNumberCounter + Msg() *otg.FlowRSVPPathTimeValuesType1 + // SetMsg unmarshals FlowRSVPPathTimeValuesType1 from protobuf object *otg.FlowRSVPPathTimeValuesType1 // and doesn't set defaults - SetMsg(*otg.PatternFlowIcmpEchoSequenceNumberCounter) PatternFlowIcmpEchoSequenceNumberCounter - // ToProto marshals PatternFlowIcmpEchoSequenceNumberCounter to protobuf object *otg.PatternFlowIcmpEchoSequenceNumberCounter - ToProto() (*otg.PatternFlowIcmpEchoSequenceNumberCounter, error) - // ToPbText marshals PatternFlowIcmpEchoSequenceNumberCounter to protobuf text + SetMsg(*otg.FlowRSVPPathTimeValuesType1) FlowRSVPPathTimeValuesType1 + // ToProto marshals FlowRSVPPathTimeValuesType1 to protobuf object *otg.FlowRSVPPathTimeValuesType1 + ToProto() (*otg.FlowRSVPPathTimeValuesType1, error) + // ToPbText marshals FlowRSVPPathTimeValuesType1 to protobuf text ToPbText() (string, error) - // ToYaml marshals PatternFlowIcmpEchoSequenceNumberCounter to YAML text + // ToYaml marshals FlowRSVPPathTimeValuesType1 to YAML text ToYaml() (string, error) - // ToJson marshals PatternFlowIcmpEchoSequenceNumberCounter to JSON text + // ToJson marshals FlowRSVPPathTimeValuesType1 to JSON text ToJson() (string, error) - // FromProto unmarshals PatternFlowIcmpEchoSequenceNumberCounter from protobuf object *otg.PatternFlowIcmpEchoSequenceNumberCounter - FromProto(msg *otg.PatternFlowIcmpEchoSequenceNumberCounter) (PatternFlowIcmpEchoSequenceNumberCounter, error) - // FromPbText unmarshals PatternFlowIcmpEchoSequenceNumberCounter from protobuf text + // FromProto unmarshals FlowRSVPPathTimeValuesType1 from protobuf object *otg.FlowRSVPPathTimeValuesType1 + FromProto(msg *otg.FlowRSVPPathTimeValuesType1) (FlowRSVPPathTimeValuesType1, error) + // FromPbText unmarshals FlowRSVPPathTimeValuesType1 from protobuf text FromPbText(value string) error - // FromYaml unmarshals PatternFlowIcmpEchoSequenceNumberCounter from YAML text + // FromYaml unmarshals FlowRSVPPathTimeValuesType1 from YAML text FromYaml(value string) error - // FromJson unmarshals PatternFlowIcmpEchoSequenceNumberCounter from JSON text + // FromJson unmarshals FlowRSVPPathTimeValuesType1 from JSON text FromJson(value string) error - // Validate validates PatternFlowIcmpEchoSequenceNumberCounter + // Validate validates FlowRSVPPathTimeValuesType1 Validate() error // A stringer function String() string // Clones the object - Clone() (PatternFlowIcmpEchoSequenceNumberCounter, error) + Clone() (FlowRSVPPathTimeValuesType1, error) validateToAndFrom() error validateObj(vObj *validation, set_default bool) setDefault() - // Start returns uint32, set in PatternFlowIcmpEchoSequenceNumberCounter. - Start() uint32 - // SetStart assigns uint32 provided by user to PatternFlowIcmpEchoSequenceNumberCounter - SetStart(value uint32) PatternFlowIcmpEchoSequenceNumberCounter - // HasStart checks if Start has been set in PatternFlowIcmpEchoSequenceNumberCounter - HasStart() bool - // Step returns uint32, set in PatternFlowIcmpEchoSequenceNumberCounter. - Step() uint32 - // SetStep assigns uint32 provided by user to PatternFlowIcmpEchoSequenceNumberCounter - SetStep(value uint32) PatternFlowIcmpEchoSequenceNumberCounter - // HasStep checks if Step has been set in PatternFlowIcmpEchoSequenceNumberCounter - HasStep() bool - // Count returns uint32, set in PatternFlowIcmpEchoSequenceNumberCounter. - Count() uint32 - // SetCount assigns uint32 provided by user to PatternFlowIcmpEchoSequenceNumberCounter - SetCount(value uint32) PatternFlowIcmpEchoSequenceNumberCounter - // HasCount checks if Count has been set in PatternFlowIcmpEchoSequenceNumberCounter - HasCount() bool -} - -// description is TBD -// Start returns a uint32 -func (obj *patternFlowIcmpEchoSequenceNumberCounter) Start() uint32 { - - return *obj.obj.Start - -} - -// description is TBD -// Start returns a uint32 -func (obj *patternFlowIcmpEchoSequenceNumberCounter) HasStart() bool { - return obj.obj.Start != nil -} - -// description is TBD -// SetStart sets the uint32 value in the PatternFlowIcmpEchoSequenceNumberCounter object -func (obj *patternFlowIcmpEchoSequenceNumberCounter) SetStart(value uint32) PatternFlowIcmpEchoSequenceNumberCounter { - - obj.obj.Start = &value - return obj -} - -// description is TBD -// Step returns a uint32 -func (obj *patternFlowIcmpEchoSequenceNumberCounter) Step() uint32 { - - return *obj.obj.Step - -} - -// description is TBD -// Step returns a uint32 -func (obj *patternFlowIcmpEchoSequenceNumberCounter) HasStep() bool { - return obj.obj.Step != nil + // RefreshPeriodR returns PatternFlowRSVPPathTimeValuesType1RefreshPeriodR, set in FlowRSVPPathTimeValuesType1. + // PatternFlowRSVPPathTimeValuesType1RefreshPeriodR is the refresh timeout period R used to generate this message;in milliseconds. + RefreshPeriodR() PatternFlowRSVPPathTimeValuesType1RefreshPeriodR + // SetRefreshPeriodR assigns PatternFlowRSVPPathTimeValuesType1RefreshPeriodR provided by user to FlowRSVPPathTimeValuesType1. + // PatternFlowRSVPPathTimeValuesType1RefreshPeriodR is the refresh timeout period R used to generate this message;in milliseconds. + SetRefreshPeriodR(value PatternFlowRSVPPathTimeValuesType1RefreshPeriodR) FlowRSVPPathTimeValuesType1 + // HasRefreshPeriodR checks if RefreshPeriodR has been set in FlowRSVPPathTimeValuesType1 + HasRefreshPeriodR() bool + setNil() } // description is TBD -// SetStep sets the uint32 value in the PatternFlowIcmpEchoSequenceNumberCounter object -func (obj *patternFlowIcmpEchoSequenceNumberCounter) SetStep(value uint32) PatternFlowIcmpEchoSequenceNumberCounter { - - obj.obj.Step = &value - return obj +// RefreshPeriodR returns a PatternFlowRSVPPathTimeValuesType1RefreshPeriodR +func (obj *flowRSVPPathTimeValuesType1) RefreshPeriodR() PatternFlowRSVPPathTimeValuesType1RefreshPeriodR { + if obj.obj.RefreshPeriodR == nil { + obj.obj.RefreshPeriodR = NewPatternFlowRSVPPathTimeValuesType1RefreshPeriodR().Msg() + } + if obj.refreshPeriodRHolder == nil { + obj.refreshPeriodRHolder = &patternFlowRSVPPathTimeValuesType1RefreshPeriodR{obj: obj.obj.RefreshPeriodR} + } + return obj.refreshPeriodRHolder } // description is TBD -// Count returns a uint32 -func (obj *patternFlowIcmpEchoSequenceNumberCounter) Count() uint32 { - - return *obj.obj.Count - +// RefreshPeriodR returns a PatternFlowRSVPPathTimeValuesType1RefreshPeriodR +func (obj *flowRSVPPathTimeValuesType1) HasRefreshPeriodR() bool { + return obj.obj.RefreshPeriodR != nil } // description is TBD -// Count returns a uint32 -func (obj *patternFlowIcmpEchoSequenceNumberCounter) HasCount() bool { - return obj.obj.Count != nil -} +// SetRefreshPeriodR sets the PatternFlowRSVPPathTimeValuesType1RefreshPeriodR value in the FlowRSVPPathTimeValuesType1 object +func (obj *flowRSVPPathTimeValuesType1) SetRefreshPeriodR(value PatternFlowRSVPPathTimeValuesType1RefreshPeriodR) FlowRSVPPathTimeValuesType1 { -// description is TBD -// SetCount sets the uint32 value in the PatternFlowIcmpEchoSequenceNumberCounter object -func (obj *patternFlowIcmpEchoSequenceNumberCounter) SetCount(value uint32) PatternFlowIcmpEchoSequenceNumberCounter { + obj.refreshPeriodRHolder = nil + obj.obj.RefreshPeriodR = value.Msg() - obj.obj.Count = &value return obj } -func (obj *patternFlowIcmpEchoSequenceNumberCounter) validateObj(vObj *validation, set_default bool) { +func (obj *flowRSVPPathTimeValuesType1) validateObj(vObj *validation, set_default bool) { if set_default { obj.setDefault() } - if obj.obj.Start != nil { - - if *obj.obj.Start > 65535 { - vObj.validationErrors = append( - vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowIcmpEchoSequenceNumberCounter.Start <= 65535 but Got %d", *obj.obj.Start)) - } - - } - - if obj.obj.Step != nil { - - if *obj.obj.Step > 65535 { - vObj.validationErrors = append( - vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowIcmpEchoSequenceNumberCounter.Step <= 65535 but Got %d", *obj.obj.Step)) - } - - } - - if obj.obj.Count != nil { - - if *obj.obj.Count > 65535 { - vObj.validationErrors = append( - vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowIcmpEchoSequenceNumberCounter.Count <= 65535 but Got %d", *obj.obj.Count)) - } + if obj.obj.RefreshPeriodR != nil { + obj.RefreshPeriodR().validateObj(vObj, set_default) } } -func (obj *patternFlowIcmpEchoSequenceNumberCounter) setDefault() { - if obj.obj.Start == nil { - obj.SetStart(0) - } - if obj.obj.Step == nil { - obj.SetStep(1) - } - if obj.obj.Count == nil { - obj.SetCount(1) - } +func (obj *flowRSVPPathTimeValuesType1) setDefault() { } -// ***** PatternFlowIcmpEchoSequenceNumberMetricTag ***** -type patternFlowIcmpEchoSequenceNumberMetricTag struct { +// ***** FlowRSVPPathExplicitRouteType1 ***** +type flowRSVPPathExplicitRouteType1 struct { validation - obj *otg.PatternFlowIcmpEchoSequenceNumberMetricTag + obj *otg.FlowRSVPPathExplicitRouteType1 + subobjectsHolder FlowRSVPPathExplicitRouteType1FlowRSVPType1ExplicitRouteSubobjectsIter } -func NewPatternFlowIcmpEchoSequenceNumberMetricTag() PatternFlowIcmpEchoSequenceNumberMetricTag { - obj := patternFlowIcmpEchoSequenceNumberMetricTag{obj: &otg.PatternFlowIcmpEchoSequenceNumberMetricTag{}} +func NewFlowRSVPPathExplicitRouteType1() FlowRSVPPathExplicitRouteType1 { + obj := flowRSVPPathExplicitRouteType1{obj: &otg.FlowRSVPPathExplicitRouteType1{}} obj.setDefault() return &obj } -func (obj *patternFlowIcmpEchoSequenceNumberMetricTag) Msg() *otg.PatternFlowIcmpEchoSequenceNumberMetricTag { +func (obj *flowRSVPPathExplicitRouteType1) Msg() *otg.FlowRSVPPathExplicitRouteType1 { return obj.obj } -func (obj *patternFlowIcmpEchoSequenceNumberMetricTag) SetMsg(msg *otg.PatternFlowIcmpEchoSequenceNumberMetricTag) PatternFlowIcmpEchoSequenceNumberMetricTag { - +func (obj *flowRSVPPathExplicitRouteType1) SetMsg(msg *otg.FlowRSVPPathExplicitRouteType1) FlowRSVPPathExplicitRouteType1 { + obj.setNil() proto.Merge(obj.obj, msg) return obj } -func (obj *patternFlowIcmpEchoSequenceNumberMetricTag) ToProto() (*otg.PatternFlowIcmpEchoSequenceNumberMetricTag, error) { +func (obj *flowRSVPPathExplicitRouteType1) ToProto() (*otg.FlowRSVPPathExplicitRouteType1, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -292129,7 +336578,7 @@ func (obj *patternFlowIcmpEchoSequenceNumberMetricTag) ToProto() (*otg.PatternFl return obj.Msg(), nil } -func (obj *patternFlowIcmpEchoSequenceNumberMetricTag) FromProto(msg *otg.PatternFlowIcmpEchoSequenceNumberMetricTag) (PatternFlowIcmpEchoSequenceNumberMetricTag, error) { +func (obj *flowRSVPPathExplicitRouteType1) FromProto(msg *otg.FlowRSVPPathExplicitRouteType1) (FlowRSVPPathExplicitRouteType1, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -292138,7 +336587,7 @@ func (obj *patternFlowIcmpEchoSequenceNumberMetricTag) FromProto(msg *otg.Patter return newObj, nil } -func (obj *patternFlowIcmpEchoSequenceNumberMetricTag) ToPbText() (string, error) { +func (obj *flowRSVPPathExplicitRouteType1) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -292150,12 +336599,12 @@ func (obj *patternFlowIcmpEchoSequenceNumberMetricTag) ToPbText() (string, error return string(protoMarshal), nil } -func (obj *patternFlowIcmpEchoSequenceNumberMetricTag) FromPbText(value string) error { +func (obj *flowRSVPPathExplicitRouteType1) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj } - + obj.setNil() vErr := obj.validateToAndFrom() if vErr != nil { return vErr @@ -292163,7 +336612,7 @@ func (obj *patternFlowIcmpEchoSequenceNumberMetricTag) FromPbText(value string) return retObj } -func (obj *patternFlowIcmpEchoSequenceNumberMetricTag) ToYaml() (string, error) { +func (obj *flowRSVPPathExplicitRouteType1) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -292184,7 +336633,7 @@ func (obj *patternFlowIcmpEchoSequenceNumberMetricTag) ToYaml() (string, error) return string(data), nil } -func (obj *patternFlowIcmpEchoSequenceNumberMetricTag) FromYaml(value string) error { +func (obj *flowRSVPPathExplicitRouteType1) FromYaml(value string) error { if value == "" { value = "{}" } @@ -292201,7 +336650,7 @@ func (obj *patternFlowIcmpEchoSequenceNumberMetricTag) FromYaml(value string) er return fmt.Errorf("unmarshal error %s", strings.Replace( uError.Error(), "\u00a0", " ", -1)[7:]) } - + obj.setNil() vErr := obj.validateToAndFrom() if vErr != nil { return vErr @@ -292209,7 +336658,7 @@ func (obj *patternFlowIcmpEchoSequenceNumberMetricTag) FromYaml(value string) er return nil } -func (obj *patternFlowIcmpEchoSequenceNumberMetricTag) ToJson() (string, error) { +func (obj *flowRSVPPathExplicitRouteType1) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -292227,7 +336676,7 @@ func (obj *patternFlowIcmpEchoSequenceNumberMetricTag) ToJson() (string, error) return string(data), nil } -func (obj *patternFlowIcmpEchoSequenceNumberMetricTag) FromJson(value string) error { +func (obj *flowRSVPPathExplicitRouteType1) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -292240,7 +336689,7 @@ func (obj *patternFlowIcmpEchoSequenceNumberMetricTag) FromJson(value string) er return fmt.Errorf("unmarshal error %s", strings.Replace( uError.Error(), "\u00a0", " ", -1)[7:]) } - + obj.setNil() err := obj.validateToAndFrom() if err != nil { return err @@ -292248,19 +336697,19 @@ func (obj *patternFlowIcmpEchoSequenceNumberMetricTag) FromJson(value string) er return nil } -func (obj *patternFlowIcmpEchoSequenceNumberMetricTag) validateToAndFrom() error { +func (obj *flowRSVPPathExplicitRouteType1) validateToAndFrom() error { // emptyVars() obj.validateObj(&obj.validation, true) return obj.validationResult() } -func (obj *patternFlowIcmpEchoSequenceNumberMetricTag) Validate() error { +func (obj *flowRSVPPathExplicitRouteType1) Validate() error { // emptyVars() obj.validateObj(&obj.validation, false) return obj.validationResult() } -func (obj *patternFlowIcmpEchoSequenceNumberMetricTag) String() string { +func (obj *flowRSVPPathExplicitRouteType1) String() string { str, err := obj.ToYaml() if err != nil { return err.Error() @@ -292268,12 +336717,12 @@ func (obj *patternFlowIcmpEchoSequenceNumberMetricTag) String() string { return str } -func (obj *patternFlowIcmpEchoSequenceNumberMetricTag) Clone() (PatternFlowIcmpEchoSequenceNumberMetricTag, error) { +func (obj *flowRSVPPathExplicitRouteType1) Clone() (FlowRSVPPathExplicitRouteType1, error) { vErr := obj.Validate() if vErr != nil { return nil, vErr } - newObj := NewPatternFlowIcmpEchoSequenceNumberMetricTag() + newObj := NewFlowRSVPPathExplicitRouteType1() data, err := proto.Marshal(obj.Msg()) if err != nil { return nil, err @@ -292285,183 +336734,189 @@ func (obj *patternFlowIcmpEchoSequenceNumberMetricTag) Clone() (PatternFlowIcmpE return newObj, nil } -// PatternFlowIcmpEchoSequenceNumberMetricTag is metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. -type PatternFlowIcmpEchoSequenceNumberMetricTag interface { +func (obj *flowRSVPPathExplicitRouteType1) setNil() { + obj.subobjectsHolder = nil + obj.validationErrors = nil + obj.warnings = nil + obj.constraints = make(map[string]map[string]Constraints) +} + +// FlowRSVPPathExplicitRouteType1 is type1 Explicit Route has subobjects. Currently supported subobjects are IPv4 prefix and 4-byte AS number. +type FlowRSVPPathExplicitRouteType1 interface { Validation - // Msg marshals PatternFlowIcmpEchoSequenceNumberMetricTag to protobuf object *otg.PatternFlowIcmpEchoSequenceNumberMetricTag + // Msg marshals FlowRSVPPathExplicitRouteType1 to protobuf object *otg.FlowRSVPPathExplicitRouteType1 // and doesn't set defaults - Msg() *otg.PatternFlowIcmpEchoSequenceNumberMetricTag - // SetMsg unmarshals PatternFlowIcmpEchoSequenceNumberMetricTag from protobuf object *otg.PatternFlowIcmpEchoSequenceNumberMetricTag + Msg() *otg.FlowRSVPPathExplicitRouteType1 + // SetMsg unmarshals FlowRSVPPathExplicitRouteType1 from protobuf object *otg.FlowRSVPPathExplicitRouteType1 // and doesn't set defaults - SetMsg(*otg.PatternFlowIcmpEchoSequenceNumberMetricTag) PatternFlowIcmpEchoSequenceNumberMetricTag - // ToProto marshals PatternFlowIcmpEchoSequenceNumberMetricTag to protobuf object *otg.PatternFlowIcmpEchoSequenceNumberMetricTag - ToProto() (*otg.PatternFlowIcmpEchoSequenceNumberMetricTag, error) - // ToPbText marshals PatternFlowIcmpEchoSequenceNumberMetricTag to protobuf text + SetMsg(*otg.FlowRSVPPathExplicitRouteType1) FlowRSVPPathExplicitRouteType1 + // ToProto marshals FlowRSVPPathExplicitRouteType1 to protobuf object *otg.FlowRSVPPathExplicitRouteType1 + ToProto() (*otg.FlowRSVPPathExplicitRouteType1, error) + // ToPbText marshals FlowRSVPPathExplicitRouteType1 to protobuf text ToPbText() (string, error) - // ToYaml marshals PatternFlowIcmpEchoSequenceNumberMetricTag to YAML text + // ToYaml marshals FlowRSVPPathExplicitRouteType1 to YAML text ToYaml() (string, error) - // ToJson marshals PatternFlowIcmpEchoSequenceNumberMetricTag to JSON text + // ToJson marshals FlowRSVPPathExplicitRouteType1 to JSON text ToJson() (string, error) - // FromProto unmarshals PatternFlowIcmpEchoSequenceNumberMetricTag from protobuf object *otg.PatternFlowIcmpEchoSequenceNumberMetricTag - FromProto(msg *otg.PatternFlowIcmpEchoSequenceNumberMetricTag) (PatternFlowIcmpEchoSequenceNumberMetricTag, error) - // FromPbText unmarshals PatternFlowIcmpEchoSequenceNumberMetricTag from protobuf text + // FromProto unmarshals FlowRSVPPathExplicitRouteType1 from protobuf object *otg.FlowRSVPPathExplicitRouteType1 + FromProto(msg *otg.FlowRSVPPathExplicitRouteType1) (FlowRSVPPathExplicitRouteType1, error) + // FromPbText unmarshals FlowRSVPPathExplicitRouteType1 from protobuf text FromPbText(value string) error - // FromYaml unmarshals PatternFlowIcmpEchoSequenceNumberMetricTag from YAML text + // FromYaml unmarshals FlowRSVPPathExplicitRouteType1 from YAML text FromYaml(value string) error - // FromJson unmarshals PatternFlowIcmpEchoSequenceNumberMetricTag from JSON text + // FromJson unmarshals FlowRSVPPathExplicitRouteType1 from JSON text FromJson(value string) error - // Validate validates PatternFlowIcmpEchoSequenceNumberMetricTag + // Validate validates FlowRSVPPathExplicitRouteType1 Validate() error // A stringer function String() string // Clones the object - Clone() (PatternFlowIcmpEchoSequenceNumberMetricTag, error) + Clone() (FlowRSVPPathExplicitRouteType1, error) validateToAndFrom() error validateObj(vObj *validation, set_default bool) setDefault() - // Name returns string, set in PatternFlowIcmpEchoSequenceNumberMetricTag. - Name() string - // SetName assigns string provided by user to PatternFlowIcmpEchoSequenceNumberMetricTag - SetName(value string) PatternFlowIcmpEchoSequenceNumberMetricTag - // Offset returns uint32, set in PatternFlowIcmpEchoSequenceNumberMetricTag. - Offset() uint32 - // SetOffset assigns uint32 provided by user to PatternFlowIcmpEchoSequenceNumberMetricTag - SetOffset(value uint32) PatternFlowIcmpEchoSequenceNumberMetricTag - // HasOffset checks if Offset has been set in PatternFlowIcmpEchoSequenceNumberMetricTag - HasOffset() bool - // Length returns uint32, set in PatternFlowIcmpEchoSequenceNumberMetricTag. - Length() uint32 - // SetLength assigns uint32 provided by user to PatternFlowIcmpEchoSequenceNumberMetricTag - SetLength(value uint32) PatternFlowIcmpEchoSequenceNumberMetricTag - // HasLength checks if Length has been set in PatternFlowIcmpEchoSequenceNumberMetricTag - HasLength() bool + // Subobjects returns FlowRSVPPathExplicitRouteType1FlowRSVPType1ExplicitRouteSubobjectsIterIter, set in FlowRSVPPathExplicitRouteType1 + Subobjects() FlowRSVPPathExplicitRouteType1FlowRSVPType1ExplicitRouteSubobjectsIter + setNil() } -// Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field -// Name returns a string -func (obj *patternFlowIcmpEchoSequenceNumberMetricTag) Name() string { +// description is TBD +// Subobjects returns a []FlowRSVPType1ExplicitRouteSubobjects +func (obj *flowRSVPPathExplicitRouteType1) Subobjects() FlowRSVPPathExplicitRouteType1FlowRSVPType1ExplicitRouteSubobjectsIter { + if len(obj.obj.Subobjects) == 0 { + obj.obj.Subobjects = []*otg.FlowRSVPType1ExplicitRouteSubobjects{} + } + if obj.subobjectsHolder == nil { + obj.subobjectsHolder = newFlowRSVPPathExplicitRouteType1FlowRSVPType1ExplicitRouteSubobjectsIter(&obj.obj.Subobjects).setMsg(obj) + } + return obj.subobjectsHolder +} - return *obj.obj.Name +type flowRSVPPathExplicitRouteType1FlowRSVPType1ExplicitRouteSubobjectsIter struct { + obj *flowRSVPPathExplicitRouteType1 + flowRSVPType1ExplicitRouteSubobjectsSlice []FlowRSVPType1ExplicitRouteSubobjects + fieldPtr *[]*otg.FlowRSVPType1ExplicitRouteSubobjects +} +func newFlowRSVPPathExplicitRouteType1FlowRSVPType1ExplicitRouteSubobjectsIter(ptr *[]*otg.FlowRSVPType1ExplicitRouteSubobjects) FlowRSVPPathExplicitRouteType1FlowRSVPType1ExplicitRouteSubobjectsIter { + return &flowRSVPPathExplicitRouteType1FlowRSVPType1ExplicitRouteSubobjectsIter{fieldPtr: ptr} } -// Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field -// SetName sets the string value in the PatternFlowIcmpEchoSequenceNumberMetricTag object -func (obj *patternFlowIcmpEchoSequenceNumberMetricTag) SetName(value string) PatternFlowIcmpEchoSequenceNumberMetricTag { +type FlowRSVPPathExplicitRouteType1FlowRSVPType1ExplicitRouteSubobjectsIter interface { + setMsg(*flowRSVPPathExplicitRouteType1) FlowRSVPPathExplicitRouteType1FlowRSVPType1ExplicitRouteSubobjectsIter + Items() []FlowRSVPType1ExplicitRouteSubobjects + Add() FlowRSVPType1ExplicitRouteSubobjects + Append(items ...FlowRSVPType1ExplicitRouteSubobjects) FlowRSVPPathExplicitRouteType1FlowRSVPType1ExplicitRouteSubobjectsIter + Set(index int, newObj FlowRSVPType1ExplicitRouteSubobjects) FlowRSVPPathExplicitRouteType1FlowRSVPType1ExplicitRouteSubobjectsIter + Clear() FlowRSVPPathExplicitRouteType1FlowRSVPType1ExplicitRouteSubobjectsIter + clearHolderSlice() FlowRSVPPathExplicitRouteType1FlowRSVPType1ExplicitRouteSubobjectsIter + appendHolderSlice(item FlowRSVPType1ExplicitRouteSubobjects) FlowRSVPPathExplicitRouteType1FlowRSVPType1ExplicitRouteSubobjectsIter +} - obj.obj.Name = &value +func (obj *flowRSVPPathExplicitRouteType1FlowRSVPType1ExplicitRouteSubobjectsIter) setMsg(msg *flowRSVPPathExplicitRouteType1) FlowRSVPPathExplicitRouteType1FlowRSVPType1ExplicitRouteSubobjectsIter { + obj.clearHolderSlice() + for _, val := range *obj.fieldPtr { + obj.appendHolderSlice(&flowRSVPType1ExplicitRouteSubobjects{obj: val}) + } + obj.obj = msg return obj } -// Offset in bits relative to start of corresponding header field -// Offset returns a uint32 -func (obj *patternFlowIcmpEchoSequenceNumberMetricTag) Offset() uint32 { - - return *obj.obj.Offset - +func (obj *flowRSVPPathExplicitRouteType1FlowRSVPType1ExplicitRouteSubobjectsIter) Items() []FlowRSVPType1ExplicitRouteSubobjects { + return obj.flowRSVPType1ExplicitRouteSubobjectsSlice } -// Offset in bits relative to start of corresponding header field -// Offset returns a uint32 -func (obj *patternFlowIcmpEchoSequenceNumberMetricTag) HasOffset() bool { - return obj.obj.Offset != nil +func (obj *flowRSVPPathExplicitRouteType1FlowRSVPType1ExplicitRouteSubobjectsIter) Add() FlowRSVPType1ExplicitRouteSubobjects { + newObj := &otg.FlowRSVPType1ExplicitRouteSubobjects{} + *obj.fieldPtr = append(*obj.fieldPtr, newObj) + newLibObj := &flowRSVPType1ExplicitRouteSubobjects{obj: newObj} + newLibObj.setDefault() + obj.flowRSVPType1ExplicitRouteSubobjectsSlice = append(obj.flowRSVPType1ExplicitRouteSubobjectsSlice, newLibObj) + return newLibObj } -// Offset in bits relative to start of corresponding header field -// SetOffset sets the uint32 value in the PatternFlowIcmpEchoSequenceNumberMetricTag object -func (obj *patternFlowIcmpEchoSequenceNumberMetricTag) SetOffset(value uint32) PatternFlowIcmpEchoSequenceNumberMetricTag { - - obj.obj.Offset = &value +func (obj *flowRSVPPathExplicitRouteType1FlowRSVPType1ExplicitRouteSubobjectsIter) Append(items ...FlowRSVPType1ExplicitRouteSubobjects) FlowRSVPPathExplicitRouteType1FlowRSVPType1ExplicitRouteSubobjectsIter { + for _, item := range items { + newObj := item.Msg() + *obj.fieldPtr = append(*obj.fieldPtr, newObj) + obj.flowRSVPType1ExplicitRouteSubobjectsSlice = append(obj.flowRSVPType1ExplicitRouteSubobjectsSlice, item) + } return obj } -// Number of bits to track for metrics starting from configured offset of corresponding header field -// Length returns a uint32 -func (obj *patternFlowIcmpEchoSequenceNumberMetricTag) Length() uint32 { - - return *obj.obj.Length - +func (obj *flowRSVPPathExplicitRouteType1FlowRSVPType1ExplicitRouteSubobjectsIter) Set(index int, newObj FlowRSVPType1ExplicitRouteSubobjects) FlowRSVPPathExplicitRouteType1FlowRSVPType1ExplicitRouteSubobjectsIter { + (*obj.fieldPtr)[index] = newObj.Msg() + obj.flowRSVPType1ExplicitRouteSubobjectsSlice[index] = newObj + return obj } - -// Number of bits to track for metrics starting from configured offset of corresponding header field -// Length returns a uint32 -func (obj *patternFlowIcmpEchoSequenceNumberMetricTag) HasLength() bool { - return obj.obj.Length != nil +func (obj *flowRSVPPathExplicitRouteType1FlowRSVPType1ExplicitRouteSubobjectsIter) Clear() FlowRSVPPathExplicitRouteType1FlowRSVPType1ExplicitRouteSubobjectsIter { + if len(*obj.fieldPtr) > 0 { + *obj.fieldPtr = []*otg.FlowRSVPType1ExplicitRouteSubobjects{} + obj.flowRSVPType1ExplicitRouteSubobjectsSlice = []FlowRSVPType1ExplicitRouteSubobjects{} + } + return obj } - -// Number of bits to track for metrics starting from configured offset of corresponding header field -// SetLength sets the uint32 value in the PatternFlowIcmpEchoSequenceNumberMetricTag object -func (obj *patternFlowIcmpEchoSequenceNumberMetricTag) SetLength(value uint32) PatternFlowIcmpEchoSequenceNumberMetricTag { - - obj.obj.Length = &value +func (obj *flowRSVPPathExplicitRouteType1FlowRSVPType1ExplicitRouteSubobjectsIter) clearHolderSlice() FlowRSVPPathExplicitRouteType1FlowRSVPType1ExplicitRouteSubobjectsIter { + if len(obj.flowRSVPType1ExplicitRouteSubobjectsSlice) > 0 { + obj.flowRSVPType1ExplicitRouteSubobjectsSlice = []FlowRSVPType1ExplicitRouteSubobjects{} + } + return obj +} +func (obj *flowRSVPPathExplicitRouteType1FlowRSVPType1ExplicitRouteSubobjectsIter) appendHolderSlice(item FlowRSVPType1ExplicitRouteSubobjects) FlowRSVPPathExplicitRouteType1FlowRSVPType1ExplicitRouteSubobjectsIter { + obj.flowRSVPType1ExplicitRouteSubobjectsSlice = append(obj.flowRSVPType1ExplicitRouteSubobjectsSlice, item) return obj } -func (obj *patternFlowIcmpEchoSequenceNumberMetricTag) validateObj(vObj *validation, set_default bool) { +func (obj *flowRSVPPathExplicitRouteType1) validateObj(vObj *validation, set_default bool) { if set_default { obj.setDefault() } - // Name is required - if obj.obj.Name == nil { - vObj.validationErrors = append(vObj.validationErrors, "Name is required field on interface PatternFlowIcmpEchoSequenceNumberMetricTag") - } - - if obj.obj.Offset != nil { + if len(obj.obj.Subobjects) != 0 { - if *obj.obj.Offset > 15 { - vObj.validationErrors = append( - vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowIcmpEchoSequenceNumberMetricTag.Offset <= 15 but Got %d", *obj.obj.Offset)) + if set_default { + obj.Subobjects().clearHolderSlice() + for _, item := range obj.obj.Subobjects { + obj.Subobjects().appendHolderSlice(&flowRSVPType1ExplicitRouteSubobjects{obj: item}) + } } - - } - - if obj.obj.Length != nil { - - if *obj.obj.Length < 1 || *obj.obj.Length > 16 { - vObj.validationErrors = append( - vObj.validationErrors, - fmt.Sprintf("1 <= PatternFlowIcmpEchoSequenceNumberMetricTag.Length <= 16 but Got %d", *obj.obj.Length)) + for _, item := range obj.Subobjects().Items() { + item.validateObj(vObj, set_default) } } } -func (obj *patternFlowIcmpEchoSequenceNumberMetricTag) setDefault() { - if obj.obj.Offset == nil { - obj.SetOffset(0) - } - if obj.obj.Length == nil { - obj.SetLength(16) - } +func (obj *flowRSVPPathExplicitRouteType1) setDefault() { } -// ***** PatternFlowIcmpv6EchoTypeCounter ***** -type patternFlowIcmpv6EchoTypeCounter struct { +// ***** FlowRSVPPathLabelRequestWithoutLabelRange ***** +type flowRSVPPathLabelRequestWithoutLabelRange struct { validation - obj *otg.PatternFlowIcmpv6EchoTypeCounter + obj *otg.FlowRSVPPathLabelRequestWithoutLabelRange + reservedHolder PatternFlowRSVPPathLabelRequestWithoutLabelRangeReserved + l3PidHolder PatternFlowRSVPPathLabelRequestWithoutLabelRangeL3Pid } -func NewPatternFlowIcmpv6EchoTypeCounter() PatternFlowIcmpv6EchoTypeCounter { - obj := patternFlowIcmpv6EchoTypeCounter{obj: &otg.PatternFlowIcmpv6EchoTypeCounter{}} +func NewFlowRSVPPathLabelRequestWithoutLabelRange() FlowRSVPPathLabelRequestWithoutLabelRange { + obj := flowRSVPPathLabelRequestWithoutLabelRange{obj: &otg.FlowRSVPPathLabelRequestWithoutLabelRange{}} obj.setDefault() return &obj } -func (obj *patternFlowIcmpv6EchoTypeCounter) Msg() *otg.PatternFlowIcmpv6EchoTypeCounter { +func (obj *flowRSVPPathLabelRequestWithoutLabelRange) Msg() *otg.FlowRSVPPathLabelRequestWithoutLabelRange { return obj.obj } -func (obj *patternFlowIcmpv6EchoTypeCounter) SetMsg(msg *otg.PatternFlowIcmpv6EchoTypeCounter) PatternFlowIcmpv6EchoTypeCounter { - +func (obj *flowRSVPPathLabelRequestWithoutLabelRange) SetMsg(msg *otg.FlowRSVPPathLabelRequestWithoutLabelRange) FlowRSVPPathLabelRequestWithoutLabelRange { + obj.setNil() proto.Merge(obj.obj, msg) return obj } -func (obj *patternFlowIcmpv6EchoTypeCounter) ToProto() (*otg.PatternFlowIcmpv6EchoTypeCounter, error) { +func (obj *flowRSVPPathLabelRequestWithoutLabelRange) ToProto() (*otg.FlowRSVPPathLabelRequestWithoutLabelRange, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -292469,7 +336924,7 @@ func (obj *patternFlowIcmpv6EchoTypeCounter) ToProto() (*otg.PatternFlowIcmpv6Ec return obj.Msg(), nil } -func (obj *patternFlowIcmpv6EchoTypeCounter) FromProto(msg *otg.PatternFlowIcmpv6EchoTypeCounter) (PatternFlowIcmpv6EchoTypeCounter, error) { +func (obj *flowRSVPPathLabelRequestWithoutLabelRange) FromProto(msg *otg.FlowRSVPPathLabelRequestWithoutLabelRange) (FlowRSVPPathLabelRequestWithoutLabelRange, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -292478,7 +336933,7 @@ func (obj *patternFlowIcmpv6EchoTypeCounter) FromProto(msg *otg.PatternFlowIcmpv return newObj, nil } -func (obj *patternFlowIcmpv6EchoTypeCounter) ToPbText() (string, error) { +func (obj *flowRSVPPathLabelRequestWithoutLabelRange) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -292490,12 +336945,12 @@ func (obj *patternFlowIcmpv6EchoTypeCounter) ToPbText() (string, error) { return string(protoMarshal), nil } -func (obj *patternFlowIcmpv6EchoTypeCounter) FromPbText(value string) error { +func (obj *flowRSVPPathLabelRequestWithoutLabelRange) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj } - + obj.setNil() vErr := obj.validateToAndFrom() if vErr != nil { return vErr @@ -292503,7 +336958,7 @@ func (obj *patternFlowIcmpv6EchoTypeCounter) FromPbText(value string) error { return retObj } -func (obj *patternFlowIcmpv6EchoTypeCounter) ToYaml() (string, error) { +func (obj *flowRSVPPathLabelRequestWithoutLabelRange) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -292524,7 +336979,7 @@ func (obj *patternFlowIcmpv6EchoTypeCounter) ToYaml() (string, error) { return string(data), nil } -func (obj *patternFlowIcmpv6EchoTypeCounter) FromYaml(value string) error { +func (obj *flowRSVPPathLabelRequestWithoutLabelRange) FromYaml(value string) error { if value == "" { value = "{}" } @@ -292541,7 +336996,7 @@ func (obj *patternFlowIcmpv6EchoTypeCounter) FromYaml(value string) error { return fmt.Errorf("unmarshal error %s", strings.Replace( uError.Error(), "\u00a0", " ", -1)[7:]) } - + obj.setNil() vErr := obj.validateToAndFrom() if vErr != nil { return vErr @@ -292549,7 +337004,7 @@ func (obj *patternFlowIcmpv6EchoTypeCounter) FromYaml(value string) error { return nil } -func (obj *patternFlowIcmpv6EchoTypeCounter) ToJson() (string, error) { +func (obj *flowRSVPPathLabelRequestWithoutLabelRange) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -292567,7 +337022,7 @@ func (obj *patternFlowIcmpv6EchoTypeCounter) ToJson() (string, error) { return string(data), nil } -func (obj *patternFlowIcmpv6EchoTypeCounter) FromJson(value string) error { +func (obj *flowRSVPPathLabelRequestWithoutLabelRange) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -292580,7 +337035,7 @@ func (obj *patternFlowIcmpv6EchoTypeCounter) FromJson(value string) error { return fmt.Errorf("unmarshal error %s", strings.Replace( uError.Error(), "\u00a0", " ", -1)[7:]) } - + obj.setNil() err := obj.validateToAndFrom() if err != nil { return err @@ -292588,19 +337043,19 @@ func (obj *patternFlowIcmpv6EchoTypeCounter) FromJson(value string) error { return nil } -func (obj *patternFlowIcmpv6EchoTypeCounter) validateToAndFrom() error { +func (obj *flowRSVPPathLabelRequestWithoutLabelRange) validateToAndFrom() error { // emptyVars() obj.validateObj(&obj.validation, true) return obj.validationResult() } -func (obj *patternFlowIcmpv6EchoTypeCounter) Validate() error { +func (obj *flowRSVPPathLabelRequestWithoutLabelRange) Validate() error { // emptyVars() obj.validateObj(&obj.validation, false) return obj.validationResult() } -func (obj *patternFlowIcmpv6EchoTypeCounter) String() string { +func (obj *flowRSVPPathLabelRequestWithoutLabelRange) String() string { str, err := obj.ToYaml() if err != nil { return err.Error() @@ -292608,12 +337063,12 @@ func (obj *patternFlowIcmpv6EchoTypeCounter) String() string { return str } -func (obj *patternFlowIcmpv6EchoTypeCounter) Clone() (PatternFlowIcmpv6EchoTypeCounter, error) { +func (obj *flowRSVPPathLabelRequestWithoutLabelRange) Clone() (FlowRSVPPathLabelRequestWithoutLabelRange, error) { vErr := obj.Validate() if vErr != nil { return nil, vErr } - newObj := NewPatternFlowIcmpv6EchoTypeCounter() + newObj := NewFlowRSVPPathLabelRequestWithoutLabelRange() data, err := proto.Marshal(obj.Msg()) if err != nil { return nil, err @@ -292625,199 +337080,166 @@ func (obj *patternFlowIcmpv6EchoTypeCounter) Clone() (PatternFlowIcmpv6EchoTypeC return newObj, nil } -// PatternFlowIcmpv6EchoTypeCounter is integer counter pattern -type PatternFlowIcmpv6EchoTypeCounter interface { +func (obj *flowRSVPPathLabelRequestWithoutLabelRange) setNil() { + obj.reservedHolder = nil + obj.l3PidHolder = nil + obj.validationErrors = nil + obj.warnings = nil + obj.constraints = make(map[string]map[string]Constraints) +} + +// FlowRSVPPathLabelRequestWithoutLabelRange is class = LABEL_REQUEST, Without Label Range C-Type = 1 +type FlowRSVPPathLabelRequestWithoutLabelRange interface { Validation - // Msg marshals PatternFlowIcmpv6EchoTypeCounter to protobuf object *otg.PatternFlowIcmpv6EchoTypeCounter + // Msg marshals FlowRSVPPathLabelRequestWithoutLabelRange to protobuf object *otg.FlowRSVPPathLabelRequestWithoutLabelRange // and doesn't set defaults - Msg() *otg.PatternFlowIcmpv6EchoTypeCounter - // SetMsg unmarshals PatternFlowIcmpv6EchoTypeCounter from protobuf object *otg.PatternFlowIcmpv6EchoTypeCounter + Msg() *otg.FlowRSVPPathLabelRequestWithoutLabelRange + // SetMsg unmarshals FlowRSVPPathLabelRequestWithoutLabelRange from protobuf object *otg.FlowRSVPPathLabelRequestWithoutLabelRange // and doesn't set defaults - SetMsg(*otg.PatternFlowIcmpv6EchoTypeCounter) PatternFlowIcmpv6EchoTypeCounter - // ToProto marshals PatternFlowIcmpv6EchoTypeCounter to protobuf object *otg.PatternFlowIcmpv6EchoTypeCounter - ToProto() (*otg.PatternFlowIcmpv6EchoTypeCounter, error) - // ToPbText marshals PatternFlowIcmpv6EchoTypeCounter to protobuf text + SetMsg(*otg.FlowRSVPPathLabelRequestWithoutLabelRange) FlowRSVPPathLabelRequestWithoutLabelRange + // ToProto marshals FlowRSVPPathLabelRequestWithoutLabelRange to protobuf object *otg.FlowRSVPPathLabelRequestWithoutLabelRange + ToProto() (*otg.FlowRSVPPathLabelRequestWithoutLabelRange, error) + // ToPbText marshals FlowRSVPPathLabelRequestWithoutLabelRange to protobuf text ToPbText() (string, error) - // ToYaml marshals PatternFlowIcmpv6EchoTypeCounter to YAML text + // ToYaml marshals FlowRSVPPathLabelRequestWithoutLabelRange to YAML text ToYaml() (string, error) - // ToJson marshals PatternFlowIcmpv6EchoTypeCounter to JSON text + // ToJson marshals FlowRSVPPathLabelRequestWithoutLabelRange to JSON text ToJson() (string, error) - // FromProto unmarshals PatternFlowIcmpv6EchoTypeCounter from protobuf object *otg.PatternFlowIcmpv6EchoTypeCounter - FromProto(msg *otg.PatternFlowIcmpv6EchoTypeCounter) (PatternFlowIcmpv6EchoTypeCounter, error) - // FromPbText unmarshals PatternFlowIcmpv6EchoTypeCounter from protobuf text + // FromProto unmarshals FlowRSVPPathLabelRequestWithoutLabelRange from protobuf object *otg.FlowRSVPPathLabelRequestWithoutLabelRange + FromProto(msg *otg.FlowRSVPPathLabelRequestWithoutLabelRange) (FlowRSVPPathLabelRequestWithoutLabelRange, error) + // FromPbText unmarshals FlowRSVPPathLabelRequestWithoutLabelRange from protobuf text FromPbText(value string) error - // FromYaml unmarshals PatternFlowIcmpv6EchoTypeCounter from YAML text + // FromYaml unmarshals FlowRSVPPathLabelRequestWithoutLabelRange from YAML text FromYaml(value string) error - // FromJson unmarshals PatternFlowIcmpv6EchoTypeCounter from JSON text + // FromJson unmarshals FlowRSVPPathLabelRequestWithoutLabelRange from JSON text FromJson(value string) error - // Validate validates PatternFlowIcmpv6EchoTypeCounter + // Validate validates FlowRSVPPathLabelRequestWithoutLabelRange Validate() error // A stringer function String() string // Clones the object - Clone() (PatternFlowIcmpv6EchoTypeCounter, error) + Clone() (FlowRSVPPathLabelRequestWithoutLabelRange, error) validateToAndFrom() error validateObj(vObj *validation, set_default bool) setDefault() - // Start returns uint32, set in PatternFlowIcmpv6EchoTypeCounter. - Start() uint32 - // SetStart assigns uint32 provided by user to PatternFlowIcmpv6EchoTypeCounter - SetStart(value uint32) PatternFlowIcmpv6EchoTypeCounter - // HasStart checks if Start has been set in PatternFlowIcmpv6EchoTypeCounter - HasStart() bool - // Step returns uint32, set in PatternFlowIcmpv6EchoTypeCounter. - Step() uint32 - // SetStep assigns uint32 provided by user to PatternFlowIcmpv6EchoTypeCounter - SetStep(value uint32) PatternFlowIcmpv6EchoTypeCounter - // HasStep checks if Step has been set in PatternFlowIcmpv6EchoTypeCounter - HasStep() bool - // Count returns uint32, set in PatternFlowIcmpv6EchoTypeCounter. - Count() uint32 - // SetCount assigns uint32 provided by user to PatternFlowIcmpv6EchoTypeCounter - SetCount(value uint32) PatternFlowIcmpv6EchoTypeCounter - // HasCount checks if Count has been set in PatternFlowIcmpv6EchoTypeCounter - HasCount() bool -} - -// description is TBD -// Start returns a uint32 -func (obj *patternFlowIcmpv6EchoTypeCounter) Start() uint32 { - - return *obj.obj.Start - -} - -// description is TBD -// Start returns a uint32 -func (obj *patternFlowIcmpv6EchoTypeCounter) HasStart() bool { - return obj.obj.Start != nil + // Reserved returns PatternFlowRSVPPathLabelRequestWithoutLabelRangeReserved, set in FlowRSVPPathLabelRequestWithoutLabelRange. + // PatternFlowRSVPPathLabelRequestWithoutLabelRangeReserved is this field is reserved. It MUST be set to zero on transmission and MUST be ignored on receipt. + Reserved() PatternFlowRSVPPathLabelRequestWithoutLabelRangeReserved + // SetReserved assigns PatternFlowRSVPPathLabelRequestWithoutLabelRangeReserved provided by user to FlowRSVPPathLabelRequestWithoutLabelRange. + // PatternFlowRSVPPathLabelRequestWithoutLabelRangeReserved is this field is reserved. It MUST be set to zero on transmission and MUST be ignored on receipt. + SetReserved(value PatternFlowRSVPPathLabelRequestWithoutLabelRangeReserved) FlowRSVPPathLabelRequestWithoutLabelRange + // HasReserved checks if Reserved has been set in FlowRSVPPathLabelRequestWithoutLabelRange + HasReserved() bool + // L3Pid returns PatternFlowRSVPPathLabelRequestWithoutLabelRangeL3Pid, set in FlowRSVPPathLabelRequestWithoutLabelRange. + L3Pid() PatternFlowRSVPPathLabelRequestWithoutLabelRangeL3Pid + // SetL3Pid assigns PatternFlowRSVPPathLabelRequestWithoutLabelRangeL3Pid provided by user to FlowRSVPPathLabelRequestWithoutLabelRange. + SetL3Pid(value PatternFlowRSVPPathLabelRequestWithoutLabelRangeL3Pid) FlowRSVPPathLabelRequestWithoutLabelRange + // HasL3Pid checks if L3Pid has been set in FlowRSVPPathLabelRequestWithoutLabelRange + HasL3Pid() bool + setNil() } // description is TBD -// SetStart sets the uint32 value in the PatternFlowIcmpv6EchoTypeCounter object -func (obj *patternFlowIcmpv6EchoTypeCounter) SetStart(value uint32) PatternFlowIcmpv6EchoTypeCounter { - - obj.obj.Start = &value - return obj +// Reserved returns a PatternFlowRSVPPathLabelRequestWithoutLabelRangeReserved +func (obj *flowRSVPPathLabelRequestWithoutLabelRange) Reserved() PatternFlowRSVPPathLabelRequestWithoutLabelRangeReserved { + if obj.obj.Reserved == nil { + obj.obj.Reserved = NewPatternFlowRSVPPathLabelRequestWithoutLabelRangeReserved().Msg() + } + if obj.reservedHolder == nil { + obj.reservedHolder = &patternFlowRSVPPathLabelRequestWithoutLabelRangeReserved{obj: obj.obj.Reserved} + } + return obj.reservedHolder } // description is TBD -// Step returns a uint32 -func (obj *patternFlowIcmpv6EchoTypeCounter) Step() uint32 { - - return *obj.obj.Step - +// Reserved returns a PatternFlowRSVPPathLabelRequestWithoutLabelRangeReserved +func (obj *flowRSVPPathLabelRequestWithoutLabelRange) HasReserved() bool { + return obj.obj.Reserved != nil } // description is TBD -// Step returns a uint32 -func (obj *patternFlowIcmpv6EchoTypeCounter) HasStep() bool { - return obj.obj.Step != nil -} +// SetReserved sets the PatternFlowRSVPPathLabelRequestWithoutLabelRangeReserved value in the FlowRSVPPathLabelRequestWithoutLabelRange object +func (obj *flowRSVPPathLabelRequestWithoutLabelRange) SetReserved(value PatternFlowRSVPPathLabelRequestWithoutLabelRangeReserved) FlowRSVPPathLabelRequestWithoutLabelRange { -// description is TBD -// SetStep sets the uint32 value in the PatternFlowIcmpv6EchoTypeCounter object -func (obj *patternFlowIcmpv6EchoTypeCounter) SetStep(value uint32) PatternFlowIcmpv6EchoTypeCounter { + obj.reservedHolder = nil + obj.obj.Reserved = value.Msg() - obj.obj.Step = &value return obj } // description is TBD -// Count returns a uint32 -func (obj *patternFlowIcmpv6EchoTypeCounter) Count() uint32 { - - return *obj.obj.Count - +// L3Pid returns a PatternFlowRSVPPathLabelRequestWithoutLabelRangeL3Pid +func (obj *flowRSVPPathLabelRequestWithoutLabelRange) L3Pid() PatternFlowRSVPPathLabelRequestWithoutLabelRangeL3Pid { + if obj.obj.L3Pid == nil { + obj.obj.L3Pid = NewPatternFlowRSVPPathLabelRequestWithoutLabelRangeL3Pid().Msg() + } + if obj.l3PidHolder == nil { + obj.l3PidHolder = &patternFlowRSVPPathLabelRequestWithoutLabelRangeL3Pid{obj: obj.obj.L3Pid} + } + return obj.l3PidHolder } // description is TBD -// Count returns a uint32 -func (obj *patternFlowIcmpv6EchoTypeCounter) HasCount() bool { - return obj.obj.Count != nil +// L3Pid returns a PatternFlowRSVPPathLabelRequestWithoutLabelRangeL3Pid +func (obj *flowRSVPPathLabelRequestWithoutLabelRange) HasL3Pid() bool { + return obj.obj.L3Pid != nil } // description is TBD -// SetCount sets the uint32 value in the PatternFlowIcmpv6EchoTypeCounter object -func (obj *patternFlowIcmpv6EchoTypeCounter) SetCount(value uint32) PatternFlowIcmpv6EchoTypeCounter { +// SetL3Pid sets the PatternFlowRSVPPathLabelRequestWithoutLabelRangeL3Pid value in the FlowRSVPPathLabelRequestWithoutLabelRange object +func (obj *flowRSVPPathLabelRequestWithoutLabelRange) SetL3Pid(value PatternFlowRSVPPathLabelRequestWithoutLabelRangeL3Pid) FlowRSVPPathLabelRequestWithoutLabelRange { + + obj.l3PidHolder = nil + obj.obj.L3Pid = value.Msg() - obj.obj.Count = &value return obj } -func (obj *patternFlowIcmpv6EchoTypeCounter) validateObj(vObj *validation, set_default bool) { +func (obj *flowRSVPPathLabelRequestWithoutLabelRange) validateObj(vObj *validation, set_default bool) { if set_default { obj.setDefault() } - if obj.obj.Start != nil { - - if *obj.obj.Start > 255 { - vObj.validationErrors = append( - vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowIcmpv6EchoTypeCounter.Start <= 255 but Got %d", *obj.obj.Start)) - } - - } - - if obj.obj.Step != nil { - - if *obj.obj.Step > 255 { - vObj.validationErrors = append( - vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowIcmpv6EchoTypeCounter.Step <= 255 but Got %d", *obj.obj.Step)) - } + if obj.obj.Reserved != nil { + obj.Reserved().validateObj(vObj, set_default) } - if obj.obj.Count != nil { - - if *obj.obj.Count > 255 { - vObj.validationErrors = append( - vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowIcmpv6EchoTypeCounter.Count <= 255 but Got %d", *obj.obj.Count)) - } + if obj.obj.L3Pid != nil { + obj.L3Pid().validateObj(vObj, set_default) } } -func (obj *patternFlowIcmpv6EchoTypeCounter) setDefault() { - if obj.obj.Start == nil { - obj.SetStart(128) - } - if obj.obj.Step == nil { - obj.SetStep(1) - } - if obj.obj.Count == nil { - obj.SetCount(1) - } +func (obj *flowRSVPPathLabelRequestWithoutLabelRange) setDefault() { } -// ***** PatternFlowIcmpv6EchoTypeMetricTag ***** -type patternFlowIcmpv6EchoTypeMetricTag struct { +// ***** FlowRSVPPathSessionAttributeLspTunnel ***** +type flowRSVPPathSessionAttributeLspTunnel struct { validation - obj *otg.PatternFlowIcmpv6EchoTypeMetricTag + obj *otg.FlowRSVPPathSessionAttributeLspTunnel + flagsHolder FlowRSVPLspTunnelFlag } -func NewPatternFlowIcmpv6EchoTypeMetricTag() PatternFlowIcmpv6EchoTypeMetricTag { - obj := patternFlowIcmpv6EchoTypeMetricTag{obj: &otg.PatternFlowIcmpv6EchoTypeMetricTag{}} +func NewFlowRSVPPathSessionAttributeLspTunnel() FlowRSVPPathSessionAttributeLspTunnel { + obj := flowRSVPPathSessionAttributeLspTunnel{obj: &otg.FlowRSVPPathSessionAttributeLspTunnel{}} obj.setDefault() return &obj } -func (obj *patternFlowIcmpv6EchoTypeMetricTag) Msg() *otg.PatternFlowIcmpv6EchoTypeMetricTag { +func (obj *flowRSVPPathSessionAttributeLspTunnel) Msg() *otg.FlowRSVPPathSessionAttributeLspTunnel { return obj.obj } -func (obj *patternFlowIcmpv6EchoTypeMetricTag) SetMsg(msg *otg.PatternFlowIcmpv6EchoTypeMetricTag) PatternFlowIcmpv6EchoTypeMetricTag { - +func (obj *flowRSVPPathSessionAttributeLspTunnel) SetMsg(msg *otg.FlowRSVPPathSessionAttributeLspTunnel) FlowRSVPPathSessionAttributeLspTunnel { + obj.setNil() proto.Merge(obj.obj, msg) return obj } -func (obj *patternFlowIcmpv6EchoTypeMetricTag) ToProto() (*otg.PatternFlowIcmpv6EchoTypeMetricTag, error) { +func (obj *flowRSVPPathSessionAttributeLspTunnel) ToProto() (*otg.FlowRSVPPathSessionAttributeLspTunnel, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -292825,7 +337247,7 @@ func (obj *patternFlowIcmpv6EchoTypeMetricTag) ToProto() (*otg.PatternFlowIcmpv6 return obj.Msg(), nil } -func (obj *patternFlowIcmpv6EchoTypeMetricTag) FromProto(msg *otg.PatternFlowIcmpv6EchoTypeMetricTag) (PatternFlowIcmpv6EchoTypeMetricTag, error) { +func (obj *flowRSVPPathSessionAttributeLspTunnel) FromProto(msg *otg.FlowRSVPPathSessionAttributeLspTunnel) (FlowRSVPPathSessionAttributeLspTunnel, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -292834,7 +337256,7 @@ func (obj *patternFlowIcmpv6EchoTypeMetricTag) FromProto(msg *otg.PatternFlowIcm return newObj, nil } -func (obj *patternFlowIcmpv6EchoTypeMetricTag) ToPbText() (string, error) { +func (obj *flowRSVPPathSessionAttributeLspTunnel) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -292846,12 +337268,12 @@ func (obj *patternFlowIcmpv6EchoTypeMetricTag) ToPbText() (string, error) { return string(protoMarshal), nil } -func (obj *patternFlowIcmpv6EchoTypeMetricTag) FromPbText(value string) error { +func (obj *flowRSVPPathSessionAttributeLspTunnel) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj } - + obj.setNil() vErr := obj.validateToAndFrom() if vErr != nil { return vErr @@ -292859,7 +337281,7 @@ func (obj *patternFlowIcmpv6EchoTypeMetricTag) FromPbText(value string) error { return retObj } -func (obj *patternFlowIcmpv6EchoTypeMetricTag) ToYaml() (string, error) { +func (obj *flowRSVPPathSessionAttributeLspTunnel) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -292880,7 +337302,7 @@ func (obj *patternFlowIcmpv6EchoTypeMetricTag) ToYaml() (string, error) { return string(data), nil } -func (obj *patternFlowIcmpv6EchoTypeMetricTag) FromYaml(value string) error { +func (obj *flowRSVPPathSessionAttributeLspTunnel) FromYaml(value string) error { if value == "" { value = "{}" } @@ -292897,7 +337319,7 @@ func (obj *patternFlowIcmpv6EchoTypeMetricTag) FromYaml(value string) error { return fmt.Errorf("unmarshal error %s", strings.Replace( uError.Error(), "\u00a0", " ", -1)[7:]) } - + obj.setNil() vErr := obj.validateToAndFrom() if vErr != nil { return vErr @@ -292905,7 +337327,7 @@ func (obj *patternFlowIcmpv6EchoTypeMetricTag) FromYaml(value string) error { return nil } -func (obj *patternFlowIcmpv6EchoTypeMetricTag) ToJson() (string, error) { +func (obj *flowRSVPPathSessionAttributeLspTunnel) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -292923,7 +337345,7 @@ func (obj *patternFlowIcmpv6EchoTypeMetricTag) ToJson() (string, error) { return string(data), nil } -func (obj *patternFlowIcmpv6EchoTypeMetricTag) FromJson(value string) error { +func (obj *flowRSVPPathSessionAttributeLspTunnel) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -292936,7 +337358,7 @@ func (obj *patternFlowIcmpv6EchoTypeMetricTag) FromJson(value string) error { return fmt.Errorf("unmarshal error %s", strings.Replace( uError.Error(), "\u00a0", " ", -1)[7:]) } - + obj.setNil() err := obj.validateToAndFrom() if err != nil { return err @@ -292944,19 +337366,19 @@ func (obj *patternFlowIcmpv6EchoTypeMetricTag) FromJson(value string) error { return nil } -func (obj *patternFlowIcmpv6EchoTypeMetricTag) validateToAndFrom() error { +func (obj *flowRSVPPathSessionAttributeLspTunnel) validateToAndFrom() error { // emptyVars() obj.validateObj(&obj.validation, true) return obj.validationResult() } -func (obj *patternFlowIcmpv6EchoTypeMetricTag) Validate() error { +func (obj *flowRSVPPathSessionAttributeLspTunnel) Validate() error { // emptyVars() obj.validateObj(&obj.validation, false) return obj.validationResult() } -func (obj *patternFlowIcmpv6EchoTypeMetricTag) String() string { +func (obj *flowRSVPPathSessionAttributeLspTunnel) String() string { str, err := obj.ToYaml() if err != nil { return err.Error() @@ -292964,12 +337386,12 @@ func (obj *patternFlowIcmpv6EchoTypeMetricTag) String() string { return str } -func (obj *patternFlowIcmpv6EchoTypeMetricTag) Clone() (PatternFlowIcmpv6EchoTypeMetricTag, error) { +func (obj *flowRSVPPathSessionAttributeLspTunnel) Clone() (FlowRSVPPathSessionAttributeLspTunnel, error) { vErr := obj.Validate() if vErr != nil { return nil, vErr } - newObj := NewPatternFlowIcmpv6EchoTypeMetricTag() + newObj := NewFlowRSVPPathSessionAttributeLspTunnel() data, err := proto.Marshal(obj.Msg()) if err != nil { return nil, err @@ -292981,183 +337403,291 @@ func (obj *patternFlowIcmpv6EchoTypeMetricTag) Clone() (PatternFlowIcmpv6EchoTyp return newObj, nil } -// PatternFlowIcmpv6EchoTypeMetricTag is metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. -type PatternFlowIcmpv6EchoTypeMetricTag interface { +func (obj *flowRSVPPathSessionAttributeLspTunnel) setNil() { + obj.flagsHolder = nil + obj.validationErrors = nil + obj.warnings = nil + obj.constraints = make(map[string]map[string]Constraints) +} + +// FlowRSVPPathSessionAttributeLspTunnel is sESSION_ATTRIBUTE class = 207, LSP_TUNNEL_RA C-Type = 7, resource affinity information. +type FlowRSVPPathSessionAttributeLspTunnel interface { Validation - // Msg marshals PatternFlowIcmpv6EchoTypeMetricTag to protobuf object *otg.PatternFlowIcmpv6EchoTypeMetricTag + // Msg marshals FlowRSVPPathSessionAttributeLspTunnel to protobuf object *otg.FlowRSVPPathSessionAttributeLspTunnel // and doesn't set defaults - Msg() *otg.PatternFlowIcmpv6EchoTypeMetricTag - // SetMsg unmarshals PatternFlowIcmpv6EchoTypeMetricTag from protobuf object *otg.PatternFlowIcmpv6EchoTypeMetricTag + Msg() *otg.FlowRSVPPathSessionAttributeLspTunnel + // SetMsg unmarshals FlowRSVPPathSessionAttributeLspTunnel from protobuf object *otg.FlowRSVPPathSessionAttributeLspTunnel // and doesn't set defaults - SetMsg(*otg.PatternFlowIcmpv6EchoTypeMetricTag) PatternFlowIcmpv6EchoTypeMetricTag - // ToProto marshals PatternFlowIcmpv6EchoTypeMetricTag to protobuf object *otg.PatternFlowIcmpv6EchoTypeMetricTag - ToProto() (*otg.PatternFlowIcmpv6EchoTypeMetricTag, error) - // ToPbText marshals PatternFlowIcmpv6EchoTypeMetricTag to protobuf text + SetMsg(*otg.FlowRSVPPathSessionAttributeLspTunnel) FlowRSVPPathSessionAttributeLspTunnel + // ToProto marshals FlowRSVPPathSessionAttributeLspTunnel to protobuf object *otg.FlowRSVPPathSessionAttributeLspTunnel + ToProto() (*otg.FlowRSVPPathSessionAttributeLspTunnel, error) + // ToPbText marshals FlowRSVPPathSessionAttributeLspTunnel to protobuf text ToPbText() (string, error) - // ToYaml marshals PatternFlowIcmpv6EchoTypeMetricTag to YAML text + // ToYaml marshals FlowRSVPPathSessionAttributeLspTunnel to YAML text ToYaml() (string, error) - // ToJson marshals PatternFlowIcmpv6EchoTypeMetricTag to JSON text + // ToJson marshals FlowRSVPPathSessionAttributeLspTunnel to JSON text ToJson() (string, error) - // FromProto unmarshals PatternFlowIcmpv6EchoTypeMetricTag from protobuf object *otg.PatternFlowIcmpv6EchoTypeMetricTag - FromProto(msg *otg.PatternFlowIcmpv6EchoTypeMetricTag) (PatternFlowIcmpv6EchoTypeMetricTag, error) - // FromPbText unmarshals PatternFlowIcmpv6EchoTypeMetricTag from protobuf text + // FromProto unmarshals FlowRSVPPathSessionAttributeLspTunnel from protobuf object *otg.FlowRSVPPathSessionAttributeLspTunnel + FromProto(msg *otg.FlowRSVPPathSessionAttributeLspTunnel) (FlowRSVPPathSessionAttributeLspTunnel, error) + // FromPbText unmarshals FlowRSVPPathSessionAttributeLspTunnel from protobuf text FromPbText(value string) error - // FromYaml unmarshals PatternFlowIcmpv6EchoTypeMetricTag from YAML text + // FromYaml unmarshals FlowRSVPPathSessionAttributeLspTunnel from YAML text FromYaml(value string) error - // FromJson unmarshals PatternFlowIcmpv6EchoTypeMetricTag from JSON text + // FromJson unmarshals FlowRSVPPathSessionAttributeLspTunnel from JSON text FromJson(value string) error - // Validate validates PatternFlowIcmpv6EchoTypeMetricTag + // Validate validates FlowRSVPPathSessionAttributeLspTunnel Validate() error // A stringer function String() string // Clones the object - Clone() (PatternFlowIcmpv6EchoTypeMetricTag, error) + Clone() (FlowRSVPPathSessionAttributeLspTunnel, error) validateToAndFrom() error validateObj(vObj *validation, set_default bool) setDefault() - // Name returns string, set in PatternFlowIcmpv6EchoTypeMetricTag. - Name() string - // SetName assigns string provided by user to PatternFlowIcmpv6EchoTypeMetricTag - SetName(value string) PatternFlowIcmpv6EchoTypeMetricTag - // Offset returns uint32, set in PatternFlowIcmpv6EchoTypeMetricTag. - Offset() uint32 - // SetOffset assigns uint32 provided by user to PatternFlowIcmpv6EchoTypeMetricTag - SetOffset(value uint32) PatternFlowIcmpv6EchoTypeMetricTag - // HasOffset checks if Offset has been set in PatternFlowIcmpv6EchoTypeMetricTag - HasOffset() bool - // Length returns uint32, set in PatternFlowIcmpv6EchoTypeMetricTag. - Length() uint32 - // SetLength assigns uint32 provided by user to PatternFlowIcmpv6EchoTypeMetricTag - SetLength(value uint32) PatternFlowIcmpv6EchoTypeMetricTag - // HasLength checks if Length has been set in PatternFlowIcmpv6EchoTypeMetricTag - HasLength() bool + // SetupPriority returns uint32, set in FlowRSVPPathSessionAttributeLspTunnel. + SetupPriority() uint32 + // SetSetupPriority assigns uint32 provided by user to FlowRSVPPathSessionAttributeLspTunnel + SetSetupPriority(value uint32) FlowRSVPPathSessionAttributeLspTunnel + // HasSetupPriority checks if SetupPriority has been set in FlowRSVPPathSessionAttributeLspTunnel + HasSetupPriority() bool + // HoldingPriority returns uint32, set in FlowRSVPPathSessionAttributeLspTunnel. + HoldingPriority() uint32 + // SetHoldingPriority assigns uint32 provided by user to FlowRSVPPathSessionAttributeLspTunnel + SetHoldingPriority(value uint32) FlowRSVPPathSessionAttributeLspTunnel + // HasHoldingPriority checks if HoldingPriority has been set in FlowRSVPPathSessionAttributeLspTunnel + HasHoldingPriority() bool + // Flags returns FlowRSVPLspTunnelFlag, set in FlowRSVPPathSessionAttributeLspTunnel. + // FlowRSVPLspTunnelFlag is description is TBD + Flags() FlowRSVPLspTunnelFlag + // SetFlags assigns FlowRSVPLspTunnelFlag provided by user to FlowRSVPPathSessionAttributeLspTunnel. + // FlowRSVPLspTunnelFlag is description is TBD + SetFlags(value FlowRSVPLspTunnelFlag) FlowRSVPPathSessionAttributeLspTunnel + // HasFlags checks if Flags has been set in FlowRSVPPathSessionAttributeLspTunnel + HasFlags() bool + // NameLength returns string, set in FlowRSVPPathSessionAttributeLspTunnel. + NameLength() string + // SetNameLength assigns string provided by user to FlowRSVPPathSessionAttributeLspTunnel + SetNameLength(value string) FlowRSVPPathSessionAttributeLspTunnel + // HasNameLength checks if NameLength has been set in FlowRSVPPathSessionAttributeLspTunnel + HasNameLength() bool + // SessionName returns string, set in FlowRSVPPathSessionAttributeLspTunnel. + SessionName() string + // SetSessionName assigns string provided by user to FlowRSVPPathSessionAttributeLspTunnel + SetSessionName(value string) FlowRSVPPathSessionAttributeLspTunnel + // HasSessionName checks if SessionName has been set in FlowRSVPPathSessionAttributeLspTunnel + HasSessionName() bool + setNil() } -// Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field -// Name returns a string -func (obj *patternFlowIcmpv6EchoTypeMetricTag) Name() string { +// The priority of the session with respect to taking resources,in the range of 0 to 7. The value 0 is the highest priority. The Setup Priority is used in deciding whether this session can preempt another session. +// SetupPriority returns a uint32 +func (obj *flowRSVPPathSessionAttributeLspTunnel) SetupPriority() uint32 { - return *obj.obj.Name + return *obj.obj.SetupPriority } -// Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field -// SetName sets the string value in the PatternFlowIcmpv6EchoTypeMetricTag object -func (obj *patternFlowIcmpv6EchoTypeMetricTag) SetName(value string) PatternFlowIcmpv6EchoTypeMetricTag { +// The priority of the session with respect to taking resources,in the range of 0 to 7. The value 0 is the highest priority. The Setup Priority is used in deciding whether this session can preempt another session. +// SetupPriority returns a uint32 +func (obj *flowRSVPPathSessionAttributeLspTunnel) HasSetupPriority() bool { + return obj.obj.SetupPriority != nil +} - obj.obj.Name = &value +// The priority of the session with respect to taking resources,in the range of 0 to 7. The value 0 is the highest priority. The Setup Priority is used in deciding whether this session can preempt another session. +// SetSetupPriority sets the uint32 value in the FlowRSVPPathSessionAttributeLspTunnel object +func (obj *flowRSVPPathSessionAttributeLspTunnel) SetSetupPriority(value uint32) FlowRSVPPathSessionAttributeLspTunnel { + + obj.obj.SetupPriority = &value return obj } -// Offset in bits relative to start of corresponding header field -// Offset returns a uint32 -func (obj *patternFlowIcmpv6EchoTypeMetricTag) Offset() uint32 { +// The priority of the session with respect to holding resources,in the range of 0 to 7. The value 0 is the highest priority. The Setup Priority is used in deciding whether this session can preempt another session. +// HoldingPriority returns a uint32 +func (obj *flowRSVPPathSessionAttributeLspTunnel) HoldingPriority() uint32 { - return *obj.obj.Offset + return *obj.obj.HoldingPriority } -// Offset in bits relative to start of corresponding header field -// Offset returns a uint32 -func (obj *patternFlowIcmpv6EchoTypeMetricTag) HasOffset() bool { - return obj.obj.Offset != nil +// The priority of the session with respect to holding resources,in the range of 0 to 7. The value 0 is the highest priority. The Setup Priority is used in deciding whether this session can preempt another session. +// HoldingPriority returns a uint32 +func (obj *flowRSVPPathSessionAttributeLspTunnel) HasHoldingPriority() bool { + return obj.obj.HoldingPriority != nil } -// Offset in bits relative to start of corresponding header field -// SetOffset sets the uint32 value in the PatternFlowIcmpv6EchoTypeMetricTag object -func (obj *patternFlowIcmpv6EchoTypeMetricTag) SetOffset(value uint32) PatternFlowIcmpv6EchoTypeMetricTag { +// The priority of the session with respect to holding resources,in the range of 0 to 7. The value 0 is the highest priority. The Setup Priority is used in deciding whether this session can preempt another session. +// SetHoldingPriority sets the uint32 value in the FlowRSVPPathSessionAttributeLspTunnel object +func (obj *flowRSVPPathSessionAttributeLspTunnel) SetHoldingPriority(value uint32) FlowRSVPPathSessionAttributeLspTunnel { - obj.obj.Offset = &value + obj.obj.HoldingPriority = &value return obj } -// Number of bits to track for metrics starting from configured offset of corresponding header field -// Length returns a uint32 -func (obj *patternFlowIcmpv6EchoTypeMetricTag) Length() uint32 { +// 0x01 Local protection desired, 0x02 Label recording desired, 0x04 SE Style desired +// Flags returns a FlowRSVPLspTunnelFlag +func (obj *flowRSVPPathSessionAttributeLspTunnel) Flags() FlowRSVPLspTunnelFlag { + if obj.obj.Flags == nil { + obj.obj.Flags = NewFlowRSVPLspTunnelFlag().Msg() + } + if obj.flagsHolder == nil { + obj.flagsHolder = &flowRSVPLspTunnelFlag{obj: obj.obj.Flags} + } + return obj.flagsHolder +} - return *obj.obj.Length +// 0x01 Local protection desired, 0x02 Label recording desired, 0x04 SE Style desired +// Flags returns a FlowRSVPLspTunnelFlag +func (obj *flowRSVPPathSessionAttributeLspTunnel) HasFlags() bool { + return obj.obj.Flags != nil +} + +// 0x01 Local protection desired, 0x02 Label recording desired, 0x04 SE Style desired +// SetFlags sets the FlowRSVPLspTunnelFlag value in the FlowRSVPPathSessionAttributeLspTunnel object +func (obj *flowRSVPPathSessionAttributeLspTunnel) SetFlags(value FlowRSVPLspTunnelFlag) FlowRSVPPathSessionAttributeLspTunnel { + obj.flagsHolder = nil + obj.obj.Flags = value.Msg() + + return obj } -// Number of bits to track for metrics starting from configured offset of corresponding header field -// Length returns a uint32 -func (obj *patternFlowIcmpv6EchoTypeMetricTag) HasLength() bool { - return obj.obj.Length != nil +// The length of the display string before padding, in bytes. +// NameLength returns a string +func (obj *flowRSVPPathSessionAttributeLspTunnel) NameLength() string { + + return *obj.obj.NameLength + } -// Number of bits to track for metrics starting from configured offset of corresponding header field -// SetLength sets the uint32 value in the PatternFlowIcmpv6EchoTypeMetricTag object -func (obj *patternFlowIcmpv6EchoTypeMetricTag) SetLength(value uint32) PatternFlowIcmpv6EchoTypeMetricTag { +// The length of the display string before padding, in bytes. +// NameLength returns a string +func (obj *flowRSVPPathSessionAttributeLspTunnel) HasNameLength() bool { + return obj.obj.NameLength != nil +} - obj.obj.Length = &value +// The length of the display string before padding, in bytes. +// SetNameLength sets the string value in the FlowRSVPPathSessionAttributeLspTunnel object +func (obj *flowRSVPPathSessionAttributeLspTunnel) SetNameLength(value string) FlowRSVPPathSessionAttributeLspTunnel { + + obj.obj.NameLength = &value return obj } -func (obj *patternFlowIcmpv6EchoTypeMetricTag) validateObj(vObj *validation, set_default bool) { +// A null padded string of characters. +// SessionName returns a string +func (obj *flowRSVPPathSessionAttributeLspTunnel) SessionName() string { + + return *obj.obj.SessionName + +} + +// A null padded string of characters. +// SessionName returns a string +func (obj *flowRSVPPathSessionAttributeLspTunnel) HasSessionName() bool { + return obj.obj.SessionName != nil +} + +// A null padded string of characters. +// SetSessionName sets the string value in the FlowRSVPPathSessionAttributeLspTunnel object +func (obj *flowRSVPPathSessionAttributeLspTunnel) SetSessionName(value string) FlowRSVPPathSessionAttributeLspTunnel { + + obj.obj.SessionName = &value + return obj +} + +func (obj *flowRSVPPathSessionAttributeLspTunnel) validateObj(vObj *validation, set_default bool) { if set_default { obj.setDefault() } - // Name is required - if obj.obj.Name == nil { - vObj.validationErrors = append(vObj.validationErrors, "Name is required field on interface PatternFlowIcmpv6EchoTypeMetricTag") + if obj.obj.SetupPriority != nil { + + if *obj.obj.SetupPriority > 7 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("0 <= FlowRSVPPathSessionAttributeLspTunnel.SetupPriority <= 7 but Got %d", *obj.obj.SetupPriority)) + } + } - if obj.obj.Offset != nil { + if obj.obj.HoldingPriority != nil { - if *obj.obj.Offset > 7 { + if *obj.obj.HoldingPriority > 7 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowIcmpv6EchoTypeMetricTag.Offset <= 7 but Got %d", *obj.obj.Offset)) + fmt.Sprintf("0 <= FlowRSVPPathSessionAttributeLspTunnel.HoldingPriority <= 7 but Got %d", *obj.obj.HoldingPriority)) } } - if obj.obj.Length != nil { + if obj.obj.Flags != nil { - if *obj.obj.Length < 1 || *obj.obj.Length > 8 { + obj.Flags().validateObj(vObj, set_default) + } + + if obj.obj.NameLength != nil { + + if len(*obj.obj.NameLength) > 2 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("1 <= PatternFlowIcmpv6EchoTypeMetricTag.Length <= 8 but Got %d", *obj.obj.Length)) + fmt.Sprintf( + "None <= length of FlowRSVPPathSessionAttributeLspTunnel.NameLength <= 2 but Got %d", + len(*obj.obj.NameLength))) + } + + } + + if obj.obj.SessionName != nil { + + if len(*obj.obj.SessionName) < 0 || len(*obj.obj.SessionName) > 254 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf( + "0 <= length of FlowRSVPPathSessionAttributeLspTunnel.SessionName <= 254 but Got %d", + len(*obj.obj.SessionName))) } } } -func (obj *patternFlowIcmpv6EchoTypeMetricTag) setDefault() { - if obj.obj.Offset == nil { - obj.SetOffset(0) +func (obj *flowRSVPPathSessionAttributeLspTunnel) setDefault() { + if obj.obj.SetupPriority == nil { + obj.SetSetupPriority(7) } - if obj.obj.Length == nil { - obj.SetLength(8) + if obj.obj.HoldingPriority == nil { + obj.SetHoldingPriority(7) + } + if obj.obj.NameLength == nil { + obj.SetNameLength("0") } } -// ***** PatternFlowIcmpv6EchoCodeCounter ***** -type patternFlowIcmpv6EchoCodeCounter struct { +// ***** FlowRSVPPathSessionAttributeLspTunnelRa ***** +type flowRSVPPathSessionAttributeLspTunnelRa struct { validation - obj *otg.PatternFlowIcmpv6EchoCodeCounter + obj *otg.FlowRSVPPathSessionAttributeLspTunnelRa + flagsHolder FlowRSVPLspTunnelFlag } -func NewPatternFlowIcmpv6EchoCodeCounter() PatternFlowIcmpv6EchoCodeCounter { - obj := patternFlowIcmpv6EchoCodeCounter{obj: &otg.PatternFlowIcmpv6EchoCodeCounter{}} +func NewFlowRSVPPathSessionAttributeLspTunnelRa() FlowRSVPPathSessionAttributeLspTunnelRa { + obj := flowRSVPPathSessionAttributeLspTunnelRa{obj: &otg.FlowRSVPPathSessionAttributeLspTunnelRa{}} obj.setDefault() return &obj } -func (obj *patternFlowIcmpv6EchoCodeCounter) Msg() *otg.PatternFlowIcmpv6EchoCodeCounter { +func (obj *flowRSVPPathSessionAttributeLspTunnelRa) Msg() *otg.FlowRSVPPathSessionAttributeLspTunnelRa { return obj.obj } -func (obj *patternFlowIcmpv6EchoCodeCounter) SetMsg(msg *otg.PatternFlowIcmpv6EchoCodeCounter) PatternFlowIcmpv6EchoCodeCounter { - +func (obj *flowRSVPPathSessionAttributeLspTunnelRa) SetMsg(msg *otg.FlowRSVPPathSessionAttributeLspTunnelRa) FlowRSVPPathSessionAttributeLspTunnelRa { + obj.setNil() proto.Merge(obj.obj, msg) return obj } -func (obj *patternFlowIcmpv6EchoCodeCounter) ToProto() (*otg.PatternFlowIcmpv6EchoCodeCounter, error) { +func (obj *flowRSVPPathSessionAttributeLspTunnelRa) ToProto() (*otg.FlowRSVPPathSessionAttributeLspTunnelRa, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -293165,7 +337695,7 @@ func (obj *patternFlowIcmpv6EchoCodeCounter) ToProto() (*otg.PatternFlowIcmpv6Ec return obj.Msg(), nil } -func (obj *patternFlowIcmpv6EchoCodeCounter) FromProto(msg *otg.PatternFlowIcmpv6EchoCodeCounter) (PatternFlowIcmpv6EchoCodeCounter, error) { +func (obj *flowRSVPPathSessionAttributeLspTunnelRa) FromProto(msg *otg.FlowRSVPPathSessionAttributeLspTunnelRa) (FlowRSVPPathSessionAttributeLspTunnelRa, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -293174,7 +337704,7 @@ func (obj *patternFlowIcmpv6EchoCodeCounter) FromProto(msg *otg.PatternFlowIcmpv return newObj, nil } -func (obj *patternFlowIcmpv6EchoCodeCounter) ToPbText() (string, error) { +func (obj *flowRSVPPathSessionAttributeLspTunnelRa) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -293186,12 +337716,12 @@ func (obj *patternFlowIcmpv6EchoCodeCounter) ToPbText() (string, error) { return string(protoMarshal), nil } -func (obj *patternFlowIcmpv6EchoCodeCounter) FromPbText(value string) error { +func (obj *flowRSVPPathSessionAttributeLspTunnelRa) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj } - + obj.setNil() vErr := obj.validateToAndFrom() if vErr != nil { return vErr @@ -293199,7 +337729,7 @@ func (obj *patternFlowIcmpv6EchoCodeCounter) FromPbText(value string) error { return retObj } -func (obj *patternFlowIcmpv6EchoCodeCounter) ToYaml() (string, error) { +func (obj *flowRSVPPathSessionAttributeLspTunnelRa) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -293220,7 +337750,7 @@ func (obj *patternFlowIcmpv6EchoCodeCounter) ToYaml() (string, error) { return string(data), nil } -func (obj *patternFlowIcmpv6EchoCodeCounter) FromYaml(value string) error { +func (obj *flowRSVPPathSessionAttributeLspTunnelRa) FromYaml(value string) error { if value == "" { value = "{}" } @@ -293237,7 +337767,7 @@ func (obj *patternFlowIcmpv6EchoCodeCounter) FromYaml(value string) error { return fmt.Errorf("unmarshal error %s", strings.Replace( uError.Error(), "\u00a0", " ", -1)[7:]) } - + obj.setNil() vErr := obj.validateToAndFrom() if vErr != nil { return vErr @@ -293245,7 +337775,7 @@ func (obj *patternFlowIcmpv6EchoCodeCounter) FromYaml(value string) error { return nil } -func (obj *patternFlowIcmpv6EchoCodeCounter) ToJson() (string, error) { +func (obj *flowRSVPPathSessionAttributeLspTunnelRa) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -293263,7 +337793,7 @@ func (obj *patternFlowIcmpv6EchoCodeCounter) ToJson() (string, error) { return string(data), nil } -func (obj *patternFlowIcmpv6EchoCodeCounter) FromJson(value string) error { +func (obj *flowRSVPPathSessionAttributeLspTunnelRa) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -293276,7 +337806,7 @@ func (obj *patternFlowIcmpv6EchoCodeCounter) FromJson(value string) error { return fmt.Errorf("unmarshal error %s", strings.Replace( uError.Error(), "\u00a0", " ", -1)[7:]) } - + obj.setNil() err := obj.validateToAndFrom() if err != nil { return err @@ -293284,19 +337814,19 @@ func (obj *patternFlowIcmpv6EchoCodeCounter) FromJson(value string) error { return nil } -func (obj *patternFlowIcmpv6EchoCodeCounter) validateToAndFrom() error { +func (obj *flowRSVPPathSessionAttributeLspTunnelRa) validateToAndFrom() error { // emptyVars() obj.validateObj(&obj.validation, true) return obj.validationResult() } -func (obj *patternFlowIcmpv6EchoCodeCounter) Validate() error { +func (obj *flowRSVPPathSessionAttributeLspTunnelRa) Validate() error { // emptyVars() obj.validateObj(&obj.validation, false) return obj.validationResult() } -func (obj *patternFlowIcmpv6EchoCodeCounter) String() string { +func (obj *flowRSVPPathSessionAttributeLspTunnelRa) String() string { str, err := obj.ToYaml() if err != nil { return err.Error() @@ -293304,12 +337834,12 @@ func (obj *patternFlowIcmpv6EchoCodeCounter) String() string { return str } -func (obj *patternFlowIcmpv6EchoCodeCounter) Clone() (PatternFlowIcmpv6EchoCodeCounter, error) { +func (obj *flowRSVPPathSessionAttributeLspTunnelRa) Clone() (FlowRSVPPathSessionAttributeLspTunnelRa, error) { vErr := obj.Validate() if vErr != nil { return nil, vErr } - newObj := NewPatternFlowIcmpv6EchoCodeCounter() + newObj := NewFlowRSVPPathSessionAttributeLspTunnelRa() data, err := proto.Marshal(obj.Msg()) if err != nil { return nil, err @@ -293321,199 +337851,422 @@ func (obj *patternFlowIcmpv6EchoCodeCounter) Clone() (PatternFlowIcmpv6EchoCodeC return newObj, nil } -// PatternFlowIcmpv6EchoCodeCounter is integer counter pattern -type PatternFlowIcmpv6EchoCodeCounter interface { +func (obj *flowRSVPPathSessionAttributeLspTunnelRa) setNil() { + obj.flagsHolder = nil + obj.validationErrors = nil + obj.warnings = nil + obj.constraints = make(map[string]map[string]Constraints) +} + +// FlowRSVPPathSessionAttributeLspTunnelRa is sESSION_ATTRIBUTE class = 207, LSP_TUNNEL_RA C-Type = 1, it carries resource affinity information. +type FlowRSVPPathSessionAttributeLspTunnelRa interface { Validation - // Msg marshals PatternFlowIcmpv6EchoCodeCounter to protobuf object *otg.PatternFlowIcmpv6EchoCodeCounter + // Msg marshals FlowRSVPPathSessionAttributeLspTunnelRa to protobuf object *otg.FlowRSVPPathSessionAttributeLspTunnelRa // and doesn't set defaults - Msg() *otg.PatternFlowIcmpv6EchoCodeCounter - // SetMsg unmarshals PatternFlowIcmpv6EchoCodeCounter from protobuf object *otg.PatternFlowIcmpv6EchoCodeCounter + Msg() *otg.FlowRSVPPathSessionAttributeLspTunnelRa + // SetMsg unmarshals FlowRSVPPathSessionAttributeLspTunnelRa from protobuf object *otg.FlowRSVPPathSessionAttributeLspTunnelRa // and doesn't set defaults - SetMsg(*otg.PatternFlowIcmpv6EchoCodeCounter) PatternFlowIcmpv6EchoCodeCounter - // ToProto marshals PatternFlowIcmpv6EchoCodeCounter to protobuf object *otg.PatternFlowIcmpv6EchoCodeCounter - ToProto() (*otg.PatternFlowIcmpv6EchoCodeCounter, error) - // ToPbText marshals PatternFlowIcmpv6EchoCodeCounter to protobuf text + SetMsg(*otg.FlowRSVPPathSessionAttributeLspTunnelRa) FlowRSVPPathSessionAttributeLspTunnelRa + // ToProto marshals FlowRSVPPathSessionAttributeLspTunnelRa to protobuf object *otg.FlowRSVPPathSessionAttributeLspTunnelRa + ToProto() (*otg.FlowRSVPPathSessionAttributeLspTunnelRa, error) + // ToPbText marshals FlowRSVPPathSessionAttributeLspTunnelRa to protobuf text ToPbText() (string, error) - // ToYaml marshals PatternFlowIcmpv6EchoCodeCounter to YAML text + // ToYaml marshals FlowRSVPPathSessionAttributeLspTunnelRa to YAML text ToYaml() (string, error) - // ToJson marshals PatternFlowIcmpv6EchoCodeCounter to JSON text + // ToJson marshals FlowRSVPPathSessionAttributeLspTunnelRa to JSON text ToJson() (string, error) - // FromProto unmarshals PatternFlowIcmpv6EchoCodeCounter from protobuf object *otg.PatternFlowIcmpv6EchoCodeCounter - FromProto(msg *otg.PatternFlowIcmpv6EchoCodeCounter) (PatternFlowIcmpv6EchoCodeCounter, error) - // FromPbText unmarshals PatternFlowIcmpv6EchoCodeCounter from protobuf text + // FromProto unmarshals FlowRSVPPathSessionAttributeLspTunnelRa from protobuf object *otg.FlowRSVPPathSessionAttributeLspTunnelRa + FromProto(msg *otg.FlowRSVPPathSessionAttributeLspTunnelRa) (FlowRSVPPathSessionAttributeLspTunnelRa, error) + // FromPbText unmarshals FlowRSVPPathSessionAttributeLspTunnelRa from protobuf text FromPbText(value string) error - // FromYaml unmarshals PatternFlowIcmpv6EchoCodeCounter from YAML text + // FromYaml unmarshals FlowRSVPPathSessionAttributeLspTunnelRa from YAML text FromYaml(value string) error - // FromJson unmarshals PatternFlowIcmpv6EchoCodeCounter from JSON text + // FromJson unmarshals FlowRSVPPathSessionAttributeLspTunnelRa from JSON text FromJson(value string) error - // Validate validates PatternFlowIcmpv6EchoCodeCounter + // Validate validates FlowRSVPPathSessionAttributeLspTunnelRa Validate() error // A stringer function String() string // Clones the object - Clone() (PatternFlowIcmpv6EchoCodeCounter, error) + Clone() (FlowRSVPPathSessionAttributeLspTunnelRa, error) validateToAndFrom() error validateObj(vObj *validation, set_default bool) setDefault() - // Start returns uint32, set in PatternFlowIcmpv6EchoCodeCounter. - Start() uint32 - // SetStart assigns uint32 provided by user to PatternFlowIcmpv6EchoCodeCounter - SetStart(value uint32) PatternFlowIcmpv6EchoCodeCounter - // HasStart checks if Start has been set in PatternFlowIcmpv6EchoCodeCounter - HasStart() bool - // Step returns uint32, set in PatternFlowIcmpv6EchoCodeCounter. - Step() uint32 - // SetStep assigns uint32 provided by user to PatternFlowIcmpv6EchoCodeCounter - SetStep(value uint32) PatternFlowIcmpv6EchoCodeCounter - // HasStep checks if Step has been set in PatternFlowIcmpv6EchoCodeCounter - HasStep() bool - // Count returns uint32, set in PatternFlowIcmpv6EchoCodeCounter. - Count() uint32 - // SetCount assigns uint32 provided by user to PatternFlowIcmpv6EchoCodeCounter - SetCount(value uint32) PatternFlowIcmpv6EchoCodeCounter - // HasCount checks if Count has been set in PatternFlowIcmpv6EchoCodeCounter - HasCount() bool + // ExcludeAny returns string, set in FlowRSVPPathSessionAttributeLspTunnelRa. + ExcludeAny() string + // SetExcludeAny assigns string provided by user to FlowRSVPPathSessionAttributeLspTunnelRa + SetExcludeAny(value string) FlowRSVPPathSessionAttributeLspTunnelRa + // HasExcludeAny checks if ExcludeAny has been set in FlowRSVPPathSessionAttributeLspTunnelRa + HasExcludeAny() bool + // IncludeAny returns string, set in FlowRSVPPathSessionAttributeLspTunnelRa. + IncludeAny() string + // SetIncludeAny assigns string provided by user to FlowRSVPPathSessionAttributeLspTunnelRa + SetIncludeAny(value string) FlowRSVPPathSessionAttributeLspTunnelRa + // HasIncludeAny checks if IncludeAny has been set in FlowRSVPPathSessionAttributeLspTunnelRa + HasIncludeAny() bool + // IncludeAll returns string, set in FlowRSVPPathSessionAttributeLspTunnelRa. + IncludeAll() string + // SetIncludeAll assigns string provided by user to FlowRSVPPathSessionAttributeLspTunnelRa + SetIncludeAll(value string) FlowRSVPPathSessionAttributeLspTunnelRa + // HasIncludeAll checks if IncludeAll has been set in FlowRSVPPathSessionAttributeLspTunnelRa + HasIncludeAll() bool + // SetupPriority returns uint32, set in FlowRSVPPathSessionAttributeLspTunnelRa. + SetupPriority() uint32 + // SetSetupPriority assigns uint32 provided by user to FlowRSVPPathSessionAttributeLspTunnelRa + SetSetupPriority(value uint32) FlowRSVPPathSessionAttributeLspTunnelRa + // HasSetupPriority checks if SetupPriority has been set in FlowRSVPPathSessionAttributeLspTunnelRa + HasSetupPriority() bool + // HoldingPriority returns uint32, set in FlowRSVPPathSessionAttributeLspTunnelRa. + HoldingPriority() uint32 + // SetHoldingPriority assigns uint32 provided by user to FlowRSVPPathSessionAttributeLspTunnelRa + SetHoldingPriority(value uint32) FlowRSVPPathSessionAttributeLspTunnelRa + // HasHoldingPriority checks if HoldingPriority has been set in FlowRSVPPathSessionAttributeLspTunnelRa + HasHoldingPriority() bool + // Flags returns FlowRSVPLspTunnelFlag, set in FlowRSVPPathSessionAttributeLspTunnelRa. + // FlowRSVPLspTunnelFlag is description is TBD + Flags() FlowRSVPLspTunnelFlag + // SetFlags assigns FlowRSVPLspTunnelFlag provided by user to FlowRSVPPathSessionAttributeLspTunnelRa. + // FlowRSVPLspTunnelFlag is description is TBD + SetFlags(value FlowRSVPLspTunnelFlag) FlowRSVPPathSessionAttributeLspTunnelRa + // HasFlags checks if Flags has been set in FlowRSVPPathSessionAttributeLspTunnelRa + HasFlags() bool + // NameLength returns string, set in FlowRSVPPathSessionAttributeLspTunnelRa. + NameLength() string + // SetNameLength assigns string provided by user to FlowRSVPPathSessionAttributeLspTunnelRa + SetNameLength(value string) FlowRSVPPathSessionAttributeLspTunnelRa + // HasNameLength checks if NameLength has been set in FlowRSVPPathSessionAttributeLspTunnelRa + HasNameLength() bool + // SessionName returns string, set in FlowRSVPPathSessionAttributeLspTunnelRa. + SessionName() string + // SetSessionName assigns string provided by user to FlowRSVPPathSessionAttributeLspTunnelRa + SetSessionName(value string) FlowRSVPPathSessionAttributeLspTunnelRa + // HasSessionName checks if SessionName has been set in FlowRSVPPathSessionAttributeLspTunnelRa + HasSessionName() bool + setNil() } -// description is TBD -// Start returns a uint32 -func (obj *patternFlowIcmpv6EchoCodeCounter) Start() uint32 { +// A 32-bit vector representing a set of attribute filters associated with a tunnel any of which renders a link unacceptable. A null set (all bits set to zero) doesn't render the link unacceptable. The most significant byte in the hex-string is the farthest to the left in the byte sequence. Leading zero bytes in the configured value may be omitted for brevity. +// ExcludeAny returns a string +func (obj *flowRSVPPathSessionAttributeLspTunnelRa) ExcludeAny() string { - return *obj.obj.Start + return *obj.obj.ExcludeAny } -// description is TBD -// Start returns a uint32 -func (obj *patternFlowIcmpv6EchoCodeCounter) HasStart() bool { - return obj.obj.Start != nil +// A 32-bit vector representing a set of attribute filters associated with a tunnel any of which renders a link unacceptable. A null set (all bits set to zero) doesn't render the link unacceptable. The most significant byte in the hex-string is the farthest to the left in the byte sequence. Leading zero bytes in the configured value may be omitted for brevity. +// ExcludeAny returns a string +func (obj *flowRSVPPathSessionAttributeLspTunnelRa) HasExcludeAny() bool { + return obj.obj.ExcludeAny != nil +} + +// A 32-bit vector representing a set of attribute filters associated with a tunnel any of which renders a link unacceptable. A null set (all bits set to zero) doesn't render the link unacceptable. The most significant byte in the hex-string is the farthest to the left in the byte sequence. Leading zero bytes in the configured value may be omitted for brevity. +// SetExcludeAny sets the string value in the FlowRSVPPathSessionAttributeLspTunnelRa object +func (obj *flowRSVPPathSessionAttributeLspTunnelRa) SetExcludeAny(value string) FlowRSVPPathSessionAttributeLspTunnelRa { + + obj.obj.ExcludeAny = &value + return obj +} + +// A 32-bit vector representing a set of attribute filters associated with a tunnel any of which renders a link acceptable. A null set (all bits set to zero) automatically passes. The most significant byte in the hex-string is the farthest to the left in the byte sequence. Leading zero bytes in the configured value may be omitted for brevity. +// IncludeAny returns a string +func (obj *flowRSVPPathSessionAttributeLspTunnelRa) IncludeAny() string { + + return *obj.obj.IncludeAny + +} + +// A 32-bit vector representing a set of attribute filters associated with a tunnel any of which renders a link acceptable. A null set (all bits set to zero) automatically passes. The most significant byte in the hex-string is the farthest to the left in the byte sequence. Leading zero bytes in the configured value may be omitted for brevity. +// IncludeAny returns a string +func (obj *flowRSVPPathSessionAttributeLspTunnelRa) HasIncludeAny() bool { + return obj.obj.IncludeAny != nil +} + +// A 32-bit vector representing a set of attribute filters associated with a tunnel any of which renders a link acceptable. A null set (all bits set to zero) automatically passes. The most significant byte in the hex-string is the farthest to the left in the byte sequence. Leading zero bytes in the configured value may be omitted for brevity. +// SetIncludeAny sets the string value in the FlowRSVPPathSessionAttributeLspTunnelRa object +func (obj *flowRSVPPathSessionAttributeLspTunnelRa) SetIncludeAny(value string) FlowRSVPPathSessionAttributeLspTunnelRa { + + obj.obj.IncludeAny = &value + return obj +} + +// A 32-bit vector representing a set of attribute filters associated with a tunnel all of which must be present for a link to be acceptable. A null set (all bits set to zero) automatically passes. The most significant byte in the hex-string is the farthest to the left in the byte sequence. Leading zero bytes in the configured value may be omitted for brevity. +// IncludeAll returns a string +func (obj *flowRSVPPathSessionAttributeLspTunnelRa) IncludeAll() string { + + return *obj.obj.IncludeAll + +} + +// A 32-bit vector representing a set of attribute filters associated with a tunnel all of which must be present for a link to be acceptable. A null set (all bits set to zero) automatically passes. The most significant byte in the hex-string is the farthest to the left in the byte sequence. Leading zero bytes in the configured value may be omitted for brevity. +// IncludeAll returns a string +func (obj *flowRSVPPathSessionAttributeLspTunnelRa) HasIncludeAll() bool { + return obj.obj.IncludeAll != nil +} + +// A 32-bit vector representing a set of attribute filters associated with a tunnel all of which must be present for a link to be acceptable. A null set (all bits set to zero) automatically passes. The most significant byte in the hex-string is the farthest to the left in the byte sequence. Leading zero bytes in the configured value may be omitted for brevity. +// SetIncludeAll sets the string value in the FlowRSVPPathSessionAttributeLspTunnelRa object +func (obj *flowRSVPPathSessionAttributeLspTunnelRa) SetIncludeAll(value string) FlowRSVPPathSessionAttributeLspTunnelRa { + + obj.obj.IncludeAll = &value + return obj +} + +// The priority of the session with respect to taking resources,in the range of 0 to 7. The value 0 is the highest priority. The Setup Priority is used in deciding whether this session can preempt another session. +// SetupPriority returns a uint32 +func (obj *flowRSVPPathSessionAttributeLspTunnelRa) SetupPriority() uint32 { + + return *obj.obj.SetupPriority + +} + +// The priority of the session with respect to taking resources,in the range of 0 to 7. The value 0 is the highest priority. The Setup Priority is used in deciding whether this session can preempt another session. +// SetupPriority returns a uint32 +func (obj *flowRSVPPathSessionAttributeLspTunnelRa) HasSetupPriority() bool { + return obj.obj.SetupPriority != nil +} + +// The priority of the session with respect to taking resources,in the range of 0 to 7. The value 0 is the highest priority. The Setup Priority is used in deciding whether this session can preempt another session. +// SetSetupPriority sets the uint32 value in the FlowRSVPPathSessionAttributeLspTunnelRa object +func (obj *flowRSVPPathSessionAttributeLspTunnelRa) SetSetupPriority(value uint32) FlowRSVPPathSessionAttributeLspTunnelRa { + + obj.obj.SetupPriority = &value + return obj +} + +// The priority of the session with respect to holding resources,in the range of 0 to 7. The value 0 is the highest priority. The Setup Priority is used in deciding whether this session can preempt another session. +// HoldingPriority returns a uint32 +func (obj *flowRSVPPathSessionAttributeLspTunnelRa) HoldingPriority() uint32 { + + return *obj.obj.HoldingPriority + +} + +// The priority of the session with respect to holding resources,in the range of 0 to 7. The value 0 is the highest priority. The Setup Priority is used in deciding whether this session can preempt another session. +// HoldingPriority returns a uint32 +func (obj *flowRSVPPathSessionAttributeLspTunnelRa) HasHoldingPriority() bool { + return obj.obj.HoldingPriority != nil +} + +// The priority of the session with respect to holding resources,in the range of 0 to 7. The value 0 is the highest priority. The Setup Priority is used in deciding whether this session can preempt another session. +// SetHoldingPriority sets the uint32 value in the FlowRSVPPathSessionAttributeLspTunnelRa object +func (obj *flowRSVPPathSessionAttributeLspTunnelRa) SetHoldingPriority(value uint32) FlowRSVPPathSessionAttributeLspTunnelRa { + + obj.obj.HoldingPriority = &value + return obj +} + +// 0x01 Local protection desired, 0x02 Label recording desired, 0x04 SE Style desired +// Flags returns a FlowRSVPLspTunnelFlag +func (obj *flowRSVPPathSessionAttributeLspTunnelRa) Flags() FlowRSVPLspTunnelFlag { + if obj.obj.Flags == nil { + obj.obj.Flags = NewFlowRSVPLspTunnelFlag().Msg() + } + if obj.flagsHolder == nil { + obj.flagsHolder = &flowRSVPLspTunnelFlag{obj: obj.obj.Flags} + } + return obj.flagsHolder +} + +// 0x01 Local protection desired, 0x02 Label recording desired, 0x04 SE Style desired +// Flags returns a FlowRSVPLspTunnelFlag +func (obj *flowRSVPPathSessionAttributeLspTunnelRa) HasFlags() bool { + return obj.obj.Flags != nil } -// description is TBD -// SetStart sets the uint32 value in the PatternFlowIcmpv6EchoCodeCounter object -func (obj *patternFlowIcmpv6EchoCodeCounter) SetStart(value uint32) PatternFlowIcmpv6EchoCodeCounter { +// 0x01 Local protection desired, 0x02 Label recording desired, 0x04 SE Style desired +// SetFlags sets the FlowRSVPLspTunnelFlag value in the FlowRSVPPathSessionAttributeLspTunnelRa object +func (obj *flowRSVPPathSessionAttributeLspTunnelRa) SetFlags(value FlowRSVPLspTunnelFlag) FlowRSVPPathSessionAttributeLspTunnelRa { + + obj.flagsHolder = nil + obj.obj.Flags = value.Msg() - obj.obj.Start = &value return obj } -// description is TBD -// Step returns a uint32 -func (obj *patternFlowIcmpv6EchoCodeCounter) Step() uint32 { +// The length of the display string before padding, in bytes. +// NameLength returns a string +func (obj *flowRSVPPathSessionAttributeLspTunnelRa) NameLength() string { - return *obj.obj.Step + return *obj.obj.NameLength } -// description is TBD -// Step returns a uint32 -func (obj *patternFlowIcmpv6EchoCodeCounter) HasStep() bool { - return obj.obj.Step != nil +// The length of the display string before padding, in bytes. +// NameLength returns a string +func (obj *flowRSVPPathSessionAttributeLspTunnelRa) HasNameLength() bool { + return obj.obj.NameLength != nil } -// description is TBD -// SetStep sets the uint32 value in the PatternFlowIcmpv6EchoCodeCounter object -func (obj *patternFlowIcmpv6EchoCodeCounter) SetStep(value uint32) PatternFlowIcmpv6EchoCodeCounter { +// The length of the display string before padding, in bytes. +// SetNameLength sets the string value in the FlowRSVPPathSessionAttributeLspTunnelRa object +func (obj *flowRSVPPathSessionAttributeLspTunnelRa) SetNameLength(value string) FlowRSVPPathSessionAttributeLspTunnelRa { - obj.obj.Step = &value + obj.obj.NameLength = &value return obj } -// description is TBD -// Count returns a uint32 -func (obj *patternFlowIcmpv6EchoCodeCounter) Count() uint32 { +// A null padded string of characters. +// SessionName returns a string +func (obj *flowRSVPPathSessionAttributeLspTunnelRa) SessionName() string { - return *obj.obj.Count + return *obj.obj.SessionName } -// description is TBD -// Count returns a uint32 -func (obj *patternFlowIcmpv6EchoCodeCounter) HasCount() bool { - return obj.obj.Count != nil +// A null padded string of characters. +// SessionName returns a string +func (obj *flowRSVPPathSessionAttributeLspTunnelRa) HasSessionName() bool { + return obj.obj.SessionName != nil } -// description is TBD -// SetCount sets the uint32 value in the PatternFlowIcmpv6EchoCodeCounter object -func (obj *patternFlowIcmpv6EchoCodeCounter) SetCount(value uint32) PatternFlowIcmpv6EchoCodeCounter { +// A null padded string of characters. +// SetSessionName sets the string value in the FlowRSVPPathSessionAttributeLspTunnelRa object +func (obj *flowRSVPPathSessionAttributeLspTunnelRa) SetSessionName(value string) FlowRSVPPathSessionAttributeLspTunnelRa { - obj.obj.Count = &value + obj.obj.SessionName = &value return obj } -func (obj *patternFlowIcmpv6EchoCodeCounter) validateObj(vObj *validation, set_default bool) { +func (obj *flowRSVPPathSessionAttributeLspTunnelRa) validateObj(vObj *validation, set_default bool) { if set_default { obj.setDefault() } - if obj.obj.Start != nil { + if obj.obj.ExcludeAny != nil { - if *obj.obj.Start > 255 { + if len(*obj.obj.ExcludeAny) < 0 || len(*obj.obj.ExcludeAny) > 8 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowIcmpv6EchoCodeCounter.Start <= 255 but Got %d", *obj.obj.Start)) + fmt.Sprintf( + "0 <= length of FlowRSVPPathSessionAttributeLspTunnelRa.ExcludeAny <= 8 but Got %d", + len(*obj.obj.ExcludeAny))) } } - if obj.obj.Step != nil { + if obj.obj.IncludeAny != nil { - if *obj.obj.Step > 255 { + if len(*obj.obj.IncludeAny) < 0 || len(*obj.obj.IncludeAny) > 8 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowIcmpv6EchoCodeCounter.Step <= 255 but Got %d", *obj.obj.Step)) + fmt.Sprintf( + "0 <= length of FlowRSVPPathSessionAttributeLspTunnelRa.IncludeAny <= 8 but Got %d", + len(*obj.obj.IncludeAny))) } } - if obj.obj.Count != nil { + if obj.obj.IncludeAll != nil { - if *obj.obj.Count > 255 { + if len(*obj.obj.IncludeAll) < 0 || len(*obj.obj.IncludeAll) > 8 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowIcmpv6EchoCodeCounter.Count <= 255 but Got %d", *obj.obj.Count)) + fmt.Sprintf( + "0 <= length of FlowRSVPPathSessionAttributeLspTunnelRa.IncludeAll <= 8 but Got %d", + len(*obj.obj.IncludeAll))) + } + + } + + if obj.obj.SetupPriority != nil { + + if *obj.obj.SetupPriority > 7 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("0 <= FlowRSVPPathSessionAttributeLspTunnelRa.SetupPriority <= 7 but Got %d", *obj.obj.SetupPriority)) + } + + } + + if obj.obj.HoldingPriority != nil { + + if *obj.obj.HoldingPriority > 7 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("0 <= FlowRSVPPathSessionAttributeLspTunnelRa.HoldingPriority <= 7 but Got %d", *obj.obj.HoldingPriority)) + } + + } + + if obj.obj.Flags != nil { + + obj.Flags().validateObj(vObj, set_default) + } + + if obj.obj.NameLength != nil { + + if len(*obj.obj.NameLength) > 2 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf( + "None <= length of FlowRSVPPathSessionAttributeLspTunnelRa.NameLength <= 2 but Got %d", + len(*obj.obj.NameLength))) + } + + } + + if obj.obj.SessionName != nil { + + if len(*obj.obj.SessionName) < 0 || len(*obj.obj.SessionName) > 254 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf( + "0 <= length of FlowRSVPPathSessionAttributeLspTunnelRa.SessionName <= 254 but Got %d", + len(*obj.obj.SessionName))) } } } -func (obj *patternFlowIcmpv6EchoCodeCounter) setDefault() { - if obj.obj.Start == nil { - obj.SetStart(0) +func (obj *flowRSVPPathSessionAttributeLspTunnelRa) setDefault() { + if obj.obj.ExcludeAny == nil { + obj.SetExcludeAny("0") } - if obj.obj.Step == nil { - obj.SetStep(1) + if obj.obj.IncludeAny == nil { + obj.SetIncludeAny("0") } - if obj.obj.Count == nil { - obj.SetCount(1) + if obj.obj.IncludeAll == nil { + obj.SetIncludeAll("0") + } + if obj.obj.SetupPriority == nil { + obj.SetSetupPriority(7) + } + if obj.obj.HoldingPriority == nil { + obj.SetHoldingPriority(7) + } + if obj.obj.NameLength == nil { + obj.SetNameLength("0") } } -// ***** PatternFlowIcmpv6EchoCodeMetricTag ***** -type patternFlowIcmpv6EchoCodeMetricTag struct { +// ***** FlowRSVPPathSenderTemplateLspTunnelIpv4 ***** +type flowRSVPPathSenderTemplateLspTunnelIpv4 struct { validation - obj *otg.PatternFlowIcmpv6EchoCodeMetricTag + obj *otg.FlowRSVPPathSenderTemplateLspTunnelIpv4 + ipv4TunnelSenderAddressHolder PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Ipv4TunnelSenderAddress + reservedHolder PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Reserved + lspIdHolder PatternFlowRSVPPathSenderTemplateLspTunnelIpv4LspId } -func NewPatternFlowIcmpv6EchoCodeMetricTag() PatternFlowIcmpv6EchoCodeMetricTag { - obj := patternFlowIcmpv6EchoCodeMetricTag{obj: &otg.PatternFlowIcmpv6EchoCodeMetricTag{}} +func NewFlowRSVPPathSenderTemplateLspTunnelIpv4() FlowRSVPPathSenderTemplateLspTunnelIpv4 { + obj := flowRSVPPathSenderTemplateLspTunnelIpv4{obj: &otg.FlowRSVPPathSenderTemplateLspTunnelIpv4{}} obj.setDefault() return &obj } -func (obj *patternFlowIcmpv6EchoCodeMetricTag) Msg() *otg.PatternFlowIcmpv6EchoCodeMetricTag { +func (obj *flowRSVPPathSenderTemplateLspTunnelIpv4) Msg() *otg.FlowRSVPPathSenderTemplateLspTunnelIpv4 { return obj.obj } -func (obj *patternFlowIcmpv6EchoCodeMetricTag) SetMsg(msg *otg.PatternFlowIcmpv6EchoCodeMetricTag) PatternFlowIcmpv6EchoCodeMetricTag { - +func (obj *flowRSVPPathSenderTemplateLspTunnelIpv4) SetMsg(msg *otg.FlowRSVPPathSenderTemplateLspTunnelIpv4) FlowRSVPPathSenderTemplateLspTunnelIpv4 { + obj.setNil() proto.Merge(obj.obj, msg) return obj } -func (obj *patternFlowIcmpv6EchoCodeMetricTag) ToProto() (*otg.PatternFlowIcmpv6EchoCodeMetricTag, error) { +func (obj *flowRSVPPathSenderTemplateLspTunnelIpv4) ToProto() (*otg.FlowRSVPPathSenderTemplateLspTunnelIpv4, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -293521,7 +338274,7 @@ func (obj *patternFlowIcmpv6EchoCodeMetricTag) ToProto() (*otg.PatternFlowIcmpv6 return obj.Msg(), nil } -func (obj *patternFlowIcmpv6EchoCodeMetricTag) FromProto(msg *otg.PatternFlowIcmpv6EchoCodeMetricTag) (PatternFlowIcmpv6EchoCodeMetricTag, error) { +func (obj *flowRSVPPathSenderTemplateLspTunnelIpv4) FromProto(msg *otg.FlowRSVPPathSenderTemplateLspTunnelIpv4) (FlowRSVPPathSenderTemplateLspTunnelIpv4, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -293530,7 +338283,7 @@ func (obj *patternFlowIcmpv6EchoCodeMetricTag) FromProto(msg *otg.PatternFlowIcm return newObj, nil } -func (obj *patternFlowIcmpv6EchoCodeMetricTag) ToPbText() (string, error) { +func (obj *flowRSVPPathSenderTemplateLspTunnelIpv4) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -293542,12 +338295,12 @@ func (obj *patternFlowIcmpv6EchoCodeMetricTag) ToPbText() (string, error) { return string(protoMarshal), nil } -func (obj *patternFlowIcmpv6EchoCodeMetricTag) FromPbText(value string) error { +func (obj *flowRSVPPathSenderTemplateLspTunnelIpv4) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj } - + obj.setNil() vErr := obj.validateToAndFrom() if vErr != nil { return vErr @@ -293555,7 +338308,7 @@ func (obj *patternFlowIcmpv6EchoCodeMetricTag) FromPbText(value string) error { return retObj } -func (obj *patternFlowIcmpv6EchoCodeMetricTag) ToYaml() (string, error) { +func (obj *flowRSVPPathSenderTemplateLspTunnelIpv4) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -293576,7 +338329,7 @@ func (obj *patternFlowIcmpv6EchoCodeMetricTag) ToYaml() (string, error) { return string(data), nil } -func (obj *patternFlowIcmpv6EchoCodeMetricTag) FromYaml(value string) error { +func (obj *flowRSVPPathSenderTemplateLspTunnelIpv4) FromYaml(value string) error { if value == "" { value = "{}" } @@ -293593,7 +338346,7 @@ func (obj *patternFlowIcmpv6EchoCodeMetricTag) FromYaml(value string) error { return fmt.Errorf("unmarshal error %s", strings.Replace( uError.Error(), "\u00a0", " ", -1)[7:]) } - + obj.setNil() vErr := obj.validateToAndFrom() if vErr != nil { return vErr @@ -293601,7 +338354,7 @@ func (obj *patternFlowIcmpv6EchoCodeMetricTag) FromYaml(value string) error { return nil } -func (obj *patternFlowIcmpv6EchoCodeMetricTag) ToJson() (string, error) { +func (obj *flowRSVPPathSenderTemplateLspTunnelIpv4) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -293619,7 +338372,7 @@ func (obj *patternFlowIcmpv6EchoCodeMetricTag) ToJson() (string, error) { return string(data), nil } -func (obj *patternFlowIcmpv6EchoCodeMetricTag) FromJson(value string) error { +func (obj *flowRSVPPathSenderTemplateLspTunnelIpv4) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -293632,7 +338385,7 @@ func (obj *patternFlowIcmpv6EchoCodeMetricTag) FromJson(value string) error { return fmt.Errorf("unmarshal error %s", strings.Replace( uError.Error(), "\u00a0", " ", -1)[7:]) } - + obj.setNil() err := obj.validateToAndFrom() if err != nil { return err @@ -293640,19 +338393,19 @@ func (obj *patternFlowIcmpv6EchoCodeMetricTag) FromJson(value string) error { return nil } -func (obj *patternFlowIcmpv6EchoCodeMetricTag) validateToAndFrom() error { +func (obj *flowRSVPPathSenderTemplateLspTunnelIpv4) validateToAndFrom() error { // emptyVars() obj.validateObj(&obj.validation, true) return obj.validationResult() } -func (obj *patternFlowIcmpv6EchoCodeMetricTag) Validate() error { +func (obj *flowRSVPPathSenderTemplateLspTunnelIpv4) Validate() error { // emptyVars() obj.validateObj(&obj.validation, false) return obj.validationResult() } -func (obj *patternFlowIcmpv6EchoCodeMetricTag) String() string { +func (obj *flowRSVPPathSenderTemplateLspTunnelIpv4) String() string { str, err := obj.ToYaml() if err != nil { return err.Error() @@ -293660,12 +338413,12 @@ func (obj *patternFlowIcmpv6EchoCodeMetricTag) String() string { return str } -func (obj *patternFlowIcmpv6EchoCodeMetricTag) Clone() (PatternFlowIcmpv6EchoCodeMetricTag, error) { +func (obj *flowRSVPPathSenderTemplateLspTunnelIpv4) Clone() (FlowRSVPPathSenderTemplateLspTunnelIpv4, error) { vErr := obj.Validate() if vErr != nil { return nil, vErr } - newObj := NewPatternFlowIcmpv6EchoCodeMetricTag() + newObj := NewFlowRSVPPathSenderTemplateLspTunnelIpv4() data, err := proto.Marshal(obj.Msg()) if err != nil { return nil, err @@ -293677,183 +338430,221 @@ func (obj *patternFlowIcmpv6EchoCodeMetricTag) Clone() (PatternFlowIcmpv6EchoCod return newObj, nil } -// PatternFlowIcmpv6EchoCodeMetricTag is metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. -type PatternFlowIcmpv6EchoCodeMetricTag interface { +func (obj *flowRSVPPathSenderTemplateLspTunnelIpv4) setNil() { + obj.ipv4TunnelSenderAddressHolder = nil + obj.reservedHolder = nil + obj.lspIdHolder = nil + obj.validationErrors = nil + obj.warnings = nil + obj.constraints = make(map[string]map[string]Constraints) +} + +// FlowRSVPPathSenderTemplateLspTunnelIpv4 is class = SENDER_TEMPLATE, LSP_TUNNEL_IPv4 C-Type = 7 +type FlowRSVPPathSenderTemplateLspTunnelIpv4 interface { Validation - // Msg marshals PatternFlowIcmpv6EchoCodeMetricTag to protobuf object *otg.PatternFlowIcmpv6EchoCodeMetricTag + // Msg marshals FlowRSVPPathSenderTemplateLspTunnelIpv4 to protobuf object *otg.FlowRSVPPathSenderTemplateLspTunnelIpv4 // and doesn't set defaults - Msg() *otg.PatternFlowIcmpv6EchoCodeMetricTag - // SetMsg unmarshals PatternFlowIcmpv6EchoCodeMetricTag from protobuf object *otg.PatternFlowIcmpv6EchoCodeMetricTag + Msg() *otg.FlowRSVPPathSenderTemplateLspTunnelIpv4 + // SetMsg unmarshals FlowRSVPPathSenderTemplateLspTunnelIpv4 from protobuf object *otg.FlowRSVPPathSenderTemplateLspTunnelIpv4 // and doesn't set defaults - SetMsg(*otg.PatternFlowIcmpv6EchoCodeMetricTag) PatternFlowIcmpv6EchoCodeMetricTag - // ToProto marshals PatternFlowIcmpv6EchoCodeMetricTag to protobuf object *otg.PatternFlowIcmpv6EchoCodeMetricTag - ToProto() (*otg.PatternFlowIcmpv6EchoCodeMetricTag, error) - // ToPbText marshals PatternFlowIcmpv6EchoCodeMetricTag to protobuf text + SetMsg(*otg.FlowRSVPPathSenderTemplateLspTunnelIpv4) FlowRSVPPathSenderTemplateLspTunnelIpv4 + // ToProto marshals FlowRSVPPathSenderTemplateLspTunnelIpv4 to protobuf object *otg.FlowRSVPPathSenderTemplateLspTunnelIpv4 + ToProto() (*otg.FlowRSVPPathSenderTemplateLspTunnelIpv4, error) + // ToPbText marshals FlowRSVPPathSenderTemplateLspTunnelIpv4 to protobuf text ToPbText() (string, error) - // ToYaml marshals PatternFlowIcmpv6EchoCodeMetricTag to YAML text + // ToYaml marshals FlowRSVPPathSenderTemplateLspTunnelIpv4 to YAML text ToYaml() (string, error) - // ToJson marshals PatternFlowIcmpv6EchoCodeMetricTag to JSON text + // ToJson marshals FlowRSVPPathSenderTemplateLspTunnelIpv4 to JSON text ToJson() (string, error) - // FromProto unmarshals PatternFlowIcmpv6EchoCodeMetricTag from protobuf object *otg.PatternFlowIcmpv6EchoCodeMetricTag - FromProto(msg *otg.PatternFlowIcmpv6EchoCodeMetricTag) (PatternFlowIcmpv6EchoCodeMetricTag, error) - // FromPbText unmarshals PatternFlowIcmpv6EchoCodeMetricTag from protobuf text + // FromProto unmarshals FlowRSVPPathSenderTemplateLspTunnelIpv4 from protobuf object *otg.FlowRSVPPathSenderTemplateLspTunnelIpv4 + FromProto(msg *otg.FlowRSVPPathSenderTemplateLspTunnelIpv4) (FlowRSVPPathSenderTemplateLspTunnelIpv4, error) + // FromPbText unmarshals FlowRSVPPathSenderTemplateLspTunnelIpv4 from protobuf text FromPbText(value string) error - // FromYaml unmarshals PatternFlowIcmpv6EchoCodeMetricTag from YAML text + // FromYaml unmarshals FlowRSVPPathSenderTemplateLspTunnelIpv4 from YAML text FromYaml(value string) error - // FromJson unmarshals PatternFlowIcmpv6EchoCodeMetricTag from JSON text + // FromJson unmarshals FlowRSVPPathSenderTemplateLspTunnelIpv4 from JSON text FromJson(value string) error - // Validate validates PatternFlowIcmpv6EchoCodeMetricTag + // Validate validates FlowRSVPPathSenderTemplateLspTunnelIpv4 Validate() error // A stringer function String() string // Clones the object - Clone() (PatternFlowIcmpv6EchoCodeMetricTag, error) + Clone() (FlowRSVPPathSenderTemplateLspTunnelIpv4, error) validateToAndFrom() error validateObj(vObj *validation, set_default bool) setDefault() - // Name returns string, set in PatternFlowIcmpv6EchoCodeMetricTag. - Name() string - // SetName assigns string provided by user to PatternFlowIcmpv6EchoCodeMetricTag - SetName(value string) PatternFlowIcmpv6EchoCodeMetricTag - // Offset returns uint32, set in PatternFlowIcmpv6EchoCodeMetricTag. - Offset() uint32 - // SetOffset assigns uint32 provided by user to PatternFlowIcmpv6EchoCodeMetricTag - SetOffset(value uint32) PatternFlowIcmpv6EchoCodeMetricTag - // HasOffset checks if Offset has been set in PatternFlowIcmpv6EchoCodeMetricTag - HasOffset() bool - // Length returns uint32, set in PatternFlowIcmpv6EchoCodeMetricTag. - Length() uint32 - // SetLength assigns uint32 provided by user to PatternFlowIcmpv6EchoCodeMetricTag - SetLength(value uint32) PatternFlowIcmpv6EchoCodeMetricTag - // HasLength checks if Length has been set in PatternFlowIcmpv6EchoCodeMetricTag - HasLength() bool + // Ipv4TunnelSenderAddress returns PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Ipv4TunnelSenderAddress, set in FlowRSVPPathSenderTemplateLspTunnelIpv4. + // PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Ipv4TunnelSenderAddress is iPv4 address for a sender node. + Ipv4TunnelSenderAddress() PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Ipv4TunnelSenderAddress + // SetIpv4TunnelSenderAddress assigns PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Ipv4TunnelSenderAddress provided by user to FlowRSVPPathSenderTemplateLspTunnelIpv4. + // PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Ipv4TunnelSenderAddress is iPv4 address for a sender node. + SetIpv4TunnelSenderAddress(value PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Ipv4TunnelSenderAddress) FlowRSVPPathSenderTemplateLspTunnelIpv4 + // HasIpv4TunnelSenderAddress checks if Ipv4TunnelSenderAddress has been set in FlowRSVPPathSenderTemplateLspTunnelIpv4 + HasIpv4TunnelSenderAddress() bool + // Reserved returns PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Reserved, set in FlowRSVPPathSenderTemplateLspTunnelIpv4. + // PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Reserved is reserved field, MUST be zero. + Reserved() PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Reserved + // SetReserved assigns PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Reserved provided by user to FlowRSVPPathSenderTemplateLspTunnelIpv4. + // PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Reserved is reserved field, MUST be zero. + SetReserved(value PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Reserved) FlowRSVPPathSenderTemplateLspTunnelIpv4 + // HasReserved checks if Reserved has been set in FlowRSVPPathSenderTemplateLspTunnelIpv4 + HasReserved() bool + // LspId returns PatternFlowRSVPPathSenderTemplateLspTunnelIpv4LspId, set in FlowRSVPPathSenderTemplateLspTunnelIpv4. + // PatternFlowRSVPPathSenderTemplateLspTunnelIpv4LspId is a 16-bit identifier used in the SENDER_TEMPLATE that can be changed to allow a sender to share resources with itself. + LspId() PatternFlowRSVPPathSenderTemplateLspTunnelIpv4LspId + // SetLspId assigns PatternFlowRSVPPathSenderTemplateLspTunnelIpv4LspId provided by user to FlowRSVPPathSenderTemplateLspTunnelIpv4. + // PatternFlowRSVPPathSenderTemplateLspTunnelIpv4LspId is a 16-bit identifier used in the SENDER_TEMPLATE that can be changed to allow a sender to share resources with itself. + SetLspId(value PatternFlowRSVPPathSenderTemplateLspTunnelIpv4LspId) FlowRSVPPathSenderTemplateLspTunnelIpv4 + // HasLspId checks if LspId has been set in FlowRSVPPathSenderTemplateLspTunnelIpv4 + HasLspId() bool + setNil() } -// Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field -// Name returns a string -func (obj *patternFlowIcmpv6EchoCodeMetricTag) Name() string { - - return *obj.obj.Name +// description is TBD +// Ipv4TunnelSenderAddress returns a PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Ipv4TunnelSenderAddress +func (obj *flowRSVPPathSenderTemplateLspTunnelIpv4) Ipv4TunnelSenderAddress() PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Ipv4TunnelSenderAddress { + if obj.obj.Ipv4TunnelSenderAddress == nil { + obj.obj.Ipv4TunnelSenderAddress = NewPatternFlowRSVPPathSenderTemplateLspTunnelIpv4Ipv4TunnelSenderAddress().Msg() + } + if obj.ipv4TunnelSenderAddressHolder == nil { + obj.ipv4TunnelSenderAddressHolder = &patternFlowRSVPPathSenderTemplateLspTunnelIpv4Ipv4TunnelSenderAddress{obj: obj.obj.Ipv4TunnelSenderAddress} + } + return obj.ipv4TunnelSenderAddressHolder +} +// description is TBD +// Ipv4TunnelSenderAddress returns a PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Ipv4TunnelSenderAddress +func (obj *flowRSVPPathSenderTemplateLspTunnelIpv4) HasIpv4TunnelSenderAddress() bool { + return obj.obj.Ipv4TunnelSenderAddress != nil } -// Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field -// SetName sets the string value in the PatternFlowIcmpv6EchoCodeMetricTag object -func (obj *patternFlowIcmpv6EchoCodeMetricTag) SetName(value string) PatternFlowIcmpv6EchoCodeMetricTag { +// description is TBD +// SetIpv4TunnelSenderAddress sets the PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Ipv4TunnelSenderAddress value in the FlowRSVPPathSenderTemplateLspTunnelIpv4 object +func (obj *flowRSVPPathSenderTemplateLspTunnelIpv4) SetIpv4TunnelSenderAddress(value PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Ipv4TunnelSenderAddress) FlowRSVPPathSenderTemplateLspTunnelIpv4 { + + obj.ipv4TunnelSenderAddressHolder = nil + obj.obj.Ipv4TunnelSenderAddress = value.Msg() - obj.obj.Name = &value return obj } -// Offset in bits relative to start of corresponding header field -// Offset returns a uint32 -func (obj *patternFlowIcmpv6EchoCodeMetricTag) Offset() uint32 { - - return *obj.obj.Offset - +// description is TBD +// Reserved returns a PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Reserved +func (obj *flowRSVPPathSenderTemplateLspTunnelIpv4) Reserved() PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Reserved { + if obj.obj.Reserved == nil { + obj.obj.Reserved = NewPatternFlowRSVPPathSenderTemplateLspTunnelIpv4Reserved().Msg() + } + if obj.reservedHolder == nil { + obj.reservedHolder = &patternFlowRSVPPathSenderTemplateLspTunnelIpv4Reserved{obj: obj.obj.Reserved} + } + return obj.reservedHolder } -// Offset in bits relative to start of corresponding header field -// Offset returns a uint32 -func (obj *patternFlowIcmpv6EchoCodeMetricTag) HasOffset() bool { - return obj.obj.Offset != nil +// description is TBD +// Reserved returns a PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Reserved +func (obj *flowRSVPPathSenderTemplateLspTunnelIpv4) HasReserved() bool { + return obj.obj.Reserved != nil } -// Offset in bits relative to start of corresponding header field -// SetOffset sets the uint32 value in the PatternFlowIcmpv6EchoCodeMetricTag object -func (obj *patternFlowIcmpv6EchoCodeMetricTag) SetOffset(value uint32) PatternFlowIcmpv6EchoCodeMetricTag { +// description is TBD +// SetReserved sets the PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Reserved value in the FlowRSVPPathSenderTemplateLspTunnelIpv4 object +func (obj *flowRSVPPathSenderTemplateLspTunnelIpv4) SetReserved(value PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Reserved) FlowRSVPPathSenderTemplateLspTunnelIpv4 { + + obj.reservedHolder = nil + obj.obj.Reserved = value.Msg() - obj.obj.Offset = &value return obj } -// Number of bits to track for metrics starting from configured offset of corresponding header field -// Length returns a uint32 -func (obj *patternFlowIcmpv6EchoCodeMetricTag) Length() uint32 { - - return *obj.obj.Length - +// description is TBD +// LspId returns a PatternFlowRSVPPathSenderTemplateLspTunnelIpv4LspId +func (obj *flowRSVPPathSenderTemplateLspTunnelIpv4) LspId() PatternFlowRSVPPathSenderTemplateLspTunnelIpv4LspId { + if obj.obj.LspId == nil { + obj.obj.LspId = NewPatternFlowRSVPPathSenderTemplateLspTunnelIpv4LspId().Msg() + } + if obj.lspIdHolder == nil { + obj.lspIdHolder = &patternFlowRSVPPathSenderTemplateLspTunnelIpv4LspId{obj: obj.obj.LspId} + } + return obj.lspIdHolder } -// Number of bits to track for metrics starting from configured offset of corresponding header field -// Length returns a uint32 -func (obj *patternFlowIcmpv6EchoCodeMetricTag) HasLength() bool { - return obj.obj.Length != nil +// description is TBD +// LspId returns a PatternFlowRSVPPathSenderTemplateLspTunnelIpv4LspId +func (obj *flowRSVPPathSenderTemplateLspTunnelIpv4) HasLspId() bool { + return obj.obj.LspId != nil } -// Number of bits to track for metrics starting from configured offset of corresponding header field -// SetLength sets the uint32 value in the PatternFlowIcmpv6EchoCodeMetricTag object -func (obj *patternFlowIcmpv6EchoCodeMetricTag) SetLength(value uint32) PatternFlowIcmpv6EchoCodeMetricTag { +// description is TBD +// SetLspId sets the PatternFlowRSVPPathSenderTemplateLspTunnelIpv4LspId value in the FlowRSVPPathSenderTemplateLspTunnelIpv4 object +func (obj *flowRSVPPathSenderTemplateLspTunnelIpv4) SetLspId(value PatternFlowRSVPPathSenderTemplateLspTunnelIpv4LspId) FlowRSVPPathSenderTemplateLspTunnelIpv4 { + + obj.lspIdHolder = nil + obj.obj.LspId = value.Msg() - obj.obj.Length = &value return obj } -func (obj *patternFlowIcmpv6EchoCodeMetricTag) validateObj(vObj *validation, set_default bool) { +func (obj *flowRSVPPathSenderTemplateLspTunnelIpv4) validateObj(vObj *validation, set_default bool) { if set_default { obj.setDefault() } - // Name is required - if obj.obj.Name == nil { - vObj.validationErrors = append(vObj.validationErrors, "Name is required field on interface PatternFlowIcmpv6EchoCodeMetricTag") - } + if obj.obj.Ipv4TunnelSenderAddress != nil { - if obj.obj.Offset != nil { + obj.Ipv4TunnelSenderAddress().validateObj(vObj, set_default) + } - if *obj.obj.Offset > 7 { - vObj.validationErrors = append( - vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowIcmpv6EchoCodeMetricTag.Offset <= 7 but Got %d", *obj.obj.Offset)) - } + if obj.obj.Reserved != nil { + obj.Reserved().validateObj(vObj, set_default) } - if obj.obj.Length != nil { - - if *obj.obj.Length < 1 || *obj.obj.Length > 8 { - vObj.validationErrors = append( - vObj.validationErrors, - fmt.Sprintf("1 <= PatternFlowIcmpv6EchoCodeMetricTag.Length <= 8 but Got %d", *obj.obj.Length)) - } + if obj.obj.LspId != nil { + obj.LspId().validateObj(vObj, set_default) } } -func (obj *patternFlowIcmpv6EchoCodeMetricTag) setDefault() { - if obj.obj.Offset == nil { - obj.SetOffset(0) - } - if obj.obj.Length == nil { - obj.SetLength(8) - } +func (obj *flowRSVPPathSenderTemplateLspTunnelIpv4) setDefault() { } -// ***** PatternFlowIcmpv6EchoIdentifierCounter ***** -type patternFlowIcmpv6EchoIdentifierCounter struct { +// ***** FlowRSVPPathSenderTspecIntServ ***** +type flowRSVPPathSenderTspecIntServ struct { validation - obj *otg.PatternFlowIcmpv6EchoIdentifierCounter -} - -func NewPatternFlowIcmpv6EchoIdentifierCounter() PatternFlowIcmpv6EchoIdentifierCounter { - obj := patternFlowIcmpv6EchoIdentifierCounter{obj: &otg.PatternFlowIcmpv6EchoIdentifierCounter{}} + obj *otg.FlowRSVPPathSenderTspecIntServ + versionHolder PatternFlowRSVPPathSenderTspecIntServVersion + reserved1Holder PatternFlowRSVPPathSenderTspecIntServReserved1 + overallLengthHolder PatternFlowRSVPPathSenderTspecIntServOverallLength + serviceHeaderHolder PatternFlowRSVPPathSenderTspecIntServServiceHeader + zeroBitHolder PatternFlowRSVPPathSenderTspecIntServZeroBit + reserved2Holder PatternFlowRSVPPathSenderTspecIntServReserved2 + lengthOfServiceDataHolder PatternFlowRSVPPathSenderTspecIntServLengthOfServiceData + parameterIdTokenBucketTspecHolder PatternFlowRSVPPathSenderTspecIntServParameterIdTokenBucketTspec + parameter_127FlagHolder PatternFlowRSVPPathSenderTspecIntServParameter127Flag + parameter_127LengthHolder PatternFlowRSVPPathSenderTspecIntServParameter127Length + minimumPolicedUnitHolder PatternFlowRSVPPathSenderTspecIntServMinimumPolicedUnit + maximumPacketSizeHolder PatternFlowRSVPPathSenderTspecIntServMaximumPacketSize +} + +func NewFlowRSVPPathSenderTspecIntServ() FlowRSVPPathSenderTspecIntServ { + obj := flowRSVPPathSenderTspecIntServ{obj: &otg.FlowRSVPPathSenderTspecIntServ{}} obj.setDefault() return &obj } -func (obj *patternFlowIcmpv6EchoIdentifierCounter) Msg() *otg.PatternFlowIcmpv6EchoIdentifierCounter { +func (obj *flowRSVPPathSenderTspecIntServ) Msg() *otg.FlowRSVPPathSenderTspecIntServ { return obj.obj } -func (obj *patternFlowIcmpv6EchoIdentifierCounter) SetMsg(msg *otg.PatternFlowIcmpv6EchoIdentifierCounter) PatternFlowIcmpv6EchoIdentifierCounter { - +func (obj *flowRSVPPathSenderTspecIntServ) SetMsg(msg *otg.FlowRSVPPathSenderTspecIntServ) FlowRSVPPathSenderTspecIntServ { + obj.setNil() proto.Merge(obj.obj, msg) return obj } -func (obj *patternFlowIcmpv6EchoIdentifierCounter) ToProto() (*otg.PatternFlowIcmpv6EchoIdentifierCounter, error) { +func (obj *flowRSVPPathSenderTspecIntServ) ToProto() (*otg.FlowRSVPPathSenderTspecIntServ, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -293861,7 +338652,7 @@ func (obj *patternFlowIcmpv6EchoIdentifierCounter) ToProto() (*otg.PatternFlowIc return obj.Msg(), nil } -func (obj *patternFlowIcmpv6EchoIdentifierCounter) FromProto(msg *otg.PatternFlowIcmpv6EchoIdentifierCounter) (PatternFlowIcmpv6EchoIdentifierCounter, error) { +func (obj *flowRSVPPathSenderTspecIntServ) FromProto(msg *otg.FlowRSVPPathSenderTspecIntServ) (FlowRSVPPathSenderTspecIntServ, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -293870,7 +338661,7 @@ func (obj *patternFlowIcmpv6EchoIdentifierCounter) FromProto(msg *otg.PatternFlo return newObj, nil } -func (obj *patternFlowIcmpv6EchoIdentifierCounter) ToPbText() (string, error) { +func (obj *flowRSVPPathSenderTspecIntServ) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -293882,12 +338673,12 @@ func (obj *patternFlowIcmpv6EchoIdentifierCounter) ToPbText() (string, error) { return string(protoMarshal), nil } -func (obj *patternFlowIcmpv6EchoIdentifierCounter) FromPbText(value string) error { +func (obj *flowRSVPPathSenderTspecIntServ) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj } - + obj.setNil() vErr := obj.validateToAndFrom() if vErr != nil { return vErr @@ -293895,7 +338686,7 @@ func (obj *patternFlowIcmpv6EchoIdentifierCounter) FromPbText(value string) erro return retObj } -func (obj *patternFlowIcmpv6EchoIdentifierCounter) ToYaml() (string, error) { +func (obj *flowRSVPPathSenderTspecIntServ) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -293916,7 +338707,7 @@ func (obj *patternFlowIcmpv6EchoIdentifierCounter) ToYaml() (string, error) { return string(data), nil } -func (obj *patternFlowIcmpv6EchoIdentifierCounter) FromYaml(value string) error { +func (obj *flowRSVPPathSenderTspecIntServ) FromYaml(value string) error { if value == "" { value = "{}" } @@ -293933,7 +338724,7 @@ func (obj *patternFlowIcmpv6EchoIdentifierCounter) FromYaml(value string) error return fmt.Errorf("unmarshal error %s", strings.Replace( uError.Error(), "\u00a0", " ", -1)[7:]) } - + obj.setNil() vErr := obj.validateToAndFrom() if vErr != nil { return vErr @@ -293941,7 +338732,7 @@ func (obj *patternFlowIcmpv6EchoIdentifierCounter) FromYaml(value string) error return nil } -func (obj *patternFlowIcmpv6EchoIdentifierCounter) ToJson() (string, error) { +func (obj *flowRSVPPathSenderTspecIntServ) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -293959,7 +338750,7 @@ func (obj *patternFlowIcmpv6EchoIdentifierCounter) ToJson() (string, error) { return string(data), nil } -func (obj *patternFlowIcmpv6EchoIdentifierCounter) FromJson(value string) error { +func (obj *flowRSVPPathSenderTspecIntServ) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -293972,7 +338763,7 @@ func (obj *patternFlowIcmpv6EchoIdentifierCounter) FromJson(value string) error return fmt.Errorf("unmarshal error %s", strings.Replace( uError.Error(), "\u00a0", " ", -1)[7:]) } - + obj.setNil() err := obj.validateToAndFrom() if err != nil { return err @@ -293980,19 +338771,19 @@ func (obj *patternFlowIcmpv6EchoIdentifierCounter) FromJson(value string) error return nil } -func (obj *patternFlowIcmpv6EchoIdentifierCounter) validateToAndFrom() error { +func (obj *flowRSVPPathSenderTspecIntServ) validateToAndFrom() error { // emptyVars() obj.validateObj(&obj.validation, true) return obj.validationResult() } -func (obj *patternFlowIcmpv6EchoIdentifierCounter) Validate() error { +func (obj *flowRSVPPathSenderTspecIntServ) Validate() error { // emptyVars() obj.validateObj(&obj.validation, false) return obj.validationResult() } -func (obj *patternFlowIcmpv6EchoIdentifierCounter) String() string { +func (obj *flowRSVPPathSenderTspecIntServ) String() string { str, err := obj.ToYaml() if err != nil { return err.Error() @@ -294000,12 +338791,12 @@ func (obj *patternFlowIcmpv6EchoIdentifierCounter) String() string { return str } -func (obj *patternFlowIcmpv6EchoIdentifierCounter) Clone() (PatternFlowIcmpv6EchoIdentifierCounter, error) { +func (obj *flowRSVPPathSenderTspecIntServ) Clone() (FlowRSVPPathSenderTspecIntServ, error) { vErr := obj.Validate() if vErr != nil { return nil, vErr } - newObj := NewPatternFlowIcmpv6EchoIdentifierCounter() + newObj := NewFlowRSVPPathSenderTspecIntServ() data, err := proto.Marshal(obj.Msg()) if err != nil { return nil, err @@ -294017,199 +338808,681 @@ func (obj *patternFlowIcmpv6EchoIdentifierCounter) Clone() (PatternFlowIcmpv6Ech return newObj, nil } -// PatternFlowIcmpv6EchoIdentifierCounter is integer counter pattern -type PatternFlowIcmpv6EchoIdentifierCounter interface { +func (obj *flowRSVPPathSenderTspecIntServ) setNil() { + obj.versionHolder = nil + obj.reserved1Holder = nil + obj.overallLengthHolder = nil + obj.serviceHeaderHolder = nil + obj.zeroBitHolder = nil + obj.reserved2Holder = nil + obj.lengthOfServiceDataHolder = nil + obj.parameterIdTokenBucketTspecHolder = nil + obj.parameter_127FlagHolder = nil + obj.parameter_127LengthHolder = nil + obj.minimumPolicedUnitHolder = nil + obj.maximumPacketSizeHolder = nil + obj.validationErrors = nil + obj.warnings = nil + obj.constraints = make(map[string]map[string]Constraints) +} + +// FlowRSVPPathSenderTspecIntServ is int-serv SENDER_TSPEC object: Class = 12, C-Type = 2 +type FlowRSVPPathSenderTspecIntServ interface { Validation - // Msg marshals PatternFlowIcmpv6EchoIdentifierCounter to protobuf object *otg.PatternFlowIcmpv6EchoIdentifierCounter + // Msg marshals FlowRSVPPathSenderTspecIntServ to protobuf object *otg.FlowRSVPPathSenderTspecIntServ // and doesn't set defaults - Msg() *otg.PatternFlowIcmpv6EchoIdentifierCounter - // SetMsg unmarshals PatternFlowIcmpv6EchoIdentifierCounter from protobuf object *otg.PatternFlowIcmpv6EchoIdentifierCounter + Msg() *otg.FlowRSVPPathSenderTspecIntServ + // SetMsg unmarshals FlowRSVPPathSenderTspecIntServ from protobuf object *otg.FlowRSVPPathSenderTspecIntServ // and doesn't set defaults - SetMsg(*otg.PatternFlowIcmpv6EchoIdentifierCounter) PatternFlowIcmpv6EchoIdentifierCounter - // ToProto marshals PatternFlowIcmpv6EchoIdentifierCounter to protobuf object *otg.PatternFlowIcmpv6EchoIdentifierCounter - ToProto() (*otg.PatternFlowIcmpv6EchoIdentifierCounter, error) - // ToPbText marshals PatternFlowIcmpv6EchoIdentifierCounter to protobuf text + SetMsg(*otg.FlowRSVPPathSenderTspecIntServ) FlowRSVPPathSenderTspecIntServ + // ToProto marshals FlowRSVPPathSenderTspecIntServ to protobuf object *otg.FlowRSVPPathSenderTspecIntServ + ToProto() (*otg.FlowRSVPPathSenderTspecIntServ, error) + // ToPbText marshals FlowRSVPPathSenderTspecIntServ to protobuf text ToPbText() (string, error) - // ToYaml marshals PatternFlowIcmpv6EchoIdentifierCounter to YAML text + // ToYaml marshals FlowRSVPPathSenderTspecIntServ to YAML text ToYaml() (string, error) - // ToJson marshals PatternFlowIcmpv6EchoIdentifierCounter to JSON text + // ToJson marshals FlowRSVPPathSenderTspecIntServ to JSON text ToJson() (string, error) - // FromProto unmarshals PatternFlowIcmpv6EchoIdentifierCounter from protobuf object *otg.PatternFlowIcmpv6EchoIdentifierCounter - FromProto(msg *otg.PatternFlowIcmpv6EchoIdentifierCounter) (PatternFlowIcmpv6EchoIdentifierCounter, error) - // FromPbText unmarshals PatternFlowIcmpv6EchoIdentifierCounter from protobuf text + // FromProto unmarshals FlowRSVPPathSenderTspecIntServ from protobuf object *otg.FlowRSVPPathSenderTspecIntServ + FromProto(msg *otg.FlowRSVPPathSenderTspecIntServ) (FlowRSVPPathSenderTspecIntServ, error) + // FromPbText unmarshals FlowRSVPPathSenderTspecIntServ from protobuf text FromPbText(value string) error - // FromYaml unmarshals PatternFlowIcmpv6EchoIdentifierCounter from YAML text + // FromYaml unmarshals FlowRSVPPathSenderTspecIntServ from YAML text FromYaml(value string) error - // FromJson unmarshals PatternFlowIcmpv6EchoIdentifierCounter from JSON text + // FromJson unmarshals FlowRSVPPathSenderTspecIntServ from JSON text FromJson(value string) error - // Validate validates PatternFlowIcmpv6EchoIdentifierCounter + // Validate validates FlowRSVPPathSenderTspecIntServ Validate() error // A stringer function String() string // Clones the object - Clone() (PatternFlowIcmpv6EchoIdentifierCounter, error) + Clone() (FlowRSVPPathSenderTspecIntServ, error) validateToAndFrom() error validateObj(vObj *validation, set_default bool) setDefault() - // Start returns uint32, set in PatternFlowIcmpv6EchoIdentifierCounter. - Start() uint32 - // SetStart assigns uint32 provided by user to PatternFlowIcmpv6EchoIdentifierCounter - SetStart(value uint32) PatternFlowIcmpv6EchoIdentifierCounter - // HasStart checks if Start has been set in PatternFlowIcmpv6EchoIdentifierCounter - HasStart() bool - // Step returns uint32, set in PatternFlowIcmpv6EchoIdentifierCounter. - Step() uint32 - // SetStep assigns uint32 provided by user to PatternFlowIcmpv6EchoIdentifierCounter - SetStep(value uint32) PatternFlowIcmpv6EchoIdentifierCounter - // HasStep checks if Step has been set in PatternFlowIcmpv6EchoIdentifierCounter - HasStep() bool - // Count returns uint32, set in PatternFlowIcmpv6EchoIdentifierCounter. - Count() uint32 - // SetCount assigns uint32 provided by user to PatternFlowIcmpv6EchoIdentifierCounter - SetCount(value uint32) PatternFlowIcmpv6EchoIdentifierCounter - // HasCount checks if Count has been set in PatternFlowIcmpv6EchoIdentifierCounter - HasCount() bool + // Version returns PatternFlowRSVPPathSenderTspecIntServVersion, set in FlowRSVPPathSenderTspecIntServ. + // PatternFlowRSVPPathSenderTspecIntServVersion is message format version number. + Version() PatternFlowRSVPPathSenderTspecIntServVersion + // SetVersion assigns PatternFlowRSVPPathSenderTspecIntServVersion provided by user to FlowRSVPPathSenderTspecIntServ. + // PatternFlowRSVPPathSenderTspecIntServVersion is message format version number. + SetVersion(value PatternFlowRSVPPathSenderTspecIntServVersion) FlowRSVPPathSenderTspecIntServ + // HasVersion checks if Version has been set in FlowRSVPPathSenderTspecIntServ + HasVersion() bool + // Reserved1 returns PatternFlowRSVPPathSenderTspecIntServReserved1, set in FlowRSVPPathSenderTspecIntServ. + // PatternFlowRSVPPathSenderTspecIntServReserved1 is reserved. + Reserved1() PatternFlowRSVPPathSenderTspecIntServReserved1 + // SetReserved1 assigns PatternFlowRSVPPathSenderTspecIntServReserved1 provided by user to FlowRSVPPathSenderTspecIntServ. + // PatternFlowRSVPPathSenderTspecIntServReserved1 is reserved. + SetReserved1(value PatternFlowRSVPPathSenderTspecIntServReserved1) FlowRSVPPathSenderTspecIntServ + // HasReserved1 checks if Reserved1 has been set in FlowRSVPPathSenderTspecIntServ + HasReserved1() bool + // OverallLength returns PatternFlowRSVPPathSenderTspecIntServOverallLength, set in FlowRSVPPathSenderTspecIntServ. + // PatternFlowRSVPPathSenderTspecIntServOverallLength is overall length (7 words not including header). + OverallLength() PatternFlowRSVPPathSenderTspecIntServOverallLength + // SetOverallLength assigns PatternFlowRSVPPathSenderTspecIntServOverallLength provided by user to FlowRSVPPathSenderTspecIntServ. + // PatternFlowRSVPPathSenderTspecIntServOverallLength is overall length (7 words not including header). + SetOverallLength(value PatternFlowRSVPPathSenderTspecIntServOverallLength) FlowRSVPPathSenderTspecIntServ + // HasOverallLength checks if OverallLength has been set in FlowRSVPPathSenderTspecIntServ + HasOverallLength() bool + // ServiceHeader returns PatternFlowRSVPPathSenderTspecIntServServiceHeader, set in FlowRSVPPathSenderTspecIntServ. + // PatternFlowRSVPPathSenderTspecIntServServiceHeader is service header, service number - '1' (Generic information) if in a PATH message. + ServiceHeader() PatternFlowRSVPPathSenderTspecIntServServiceHeader + // SetServiceHeader assigns PatternFlowRSVPPathSenderTspecIntServServiceHeader provided by user to FlowRSVPPathSenderTspecIntServ. + // PatternFlowRSVPPathSenderTspecIntServServiceHeader is service header, service number - '1' (Generic information) if in a PATH message. + SetServiceHeader(value PatternFlowRSVPPathSenderTspecIntServServiceHeader) FlowRSVPPathSenderTspecIntServ + // HasServiceHeader checks if ServiceHeader has been set in FlowRSVPPathSenderTspecIntServ + HasServiceHeader() bool + // ZeroBit returns PatternFlowRSVPPathSenderTspecIntServZeroBit, set in FlowRSVPPathSenderTspecIntServ. + // PatternFlowRSVPPathSenderTspecIntServZeroBit is mUST be 0. + ZeroBit() PatternFlowRSVPPathSenderTspecIntServZeroBit + // SetZeroBit assigns PatternFlowRSVPPathSenderTspecIntServZeroBit provided by user to FlowRSVPPathSenderTspecIntServ. + // PatternFlowRSVPPathSenderTspecIntServZeroBit is mUST be 0. + SetZeroBit(value PatternFlowRSVPPathSenderTspecIntServZeroBit) FlowRSVPPathSenderTspecIntServ + // HasZeroBit checks if ZeroBit has been set in FlowRSVPPathSenderTspecIntServ + HasZeroBit() bool + // Reserved2 returns PatternFlowRSVPPathSenderTspecIntServReserved2, set in FlowRSVPPathSenderTspecIntServ. + // PatternFlowRSVPPathSenderTspecIntServReserved2 is reserved. + Reserved2() PatternFlowRSVPPathSenderTspecIntServReserved2 + // SetReserved2 assigns PatternFlowRSVPPathSenderTspecIntServReserved2 provided by user to FlowRSVPPathSenderTspecIntServ. + // PatternFlowRSVPPathSenderTspecIntServReserved2 is reserved. + SetReserved2(value PatternFlowRSVPPathSenderTspecIntServReserved2) FlowRSVPPathSenderTspecIntServ + // HasReserved2 checks if Reserved2 has been set in FlowRSVPPathSenderTspecIntServ + HasReserved2() bool + // LengthOfServiceData returns PatternFlowRSVPPathSenderTspecIntServLengthOfServiceData, set in FlowRSVPPathSenderTspecIntServ. + // PatternFlowRSVPPathSenderTspecIntServLengthOfServiceData is length of service data, 6 words not including per-service header. + LengthOfServiceData() PatternFlowRSVPPathSenderTspecIntServLengthOfServiceData + // SetLengthOfServiceData assigns PatternFlowRSVPPathSenderTspecIntServLengthOfServiceData provided by user to FlowRSVPPathSenderTspecIntServ. + // PatternFlowRSVPPathSenderTspecIntServLengthOfServiceData is length of service data, 6 words not including per-service header. + SetLengthOfServiceData(value PatternFlowRSVPPathSenderTspecIntServLengthOfServiceData) FlowRSVPPathSenderTspecIntServ + // HasLengthOfServiceData checks if LengthOfServiceData has been set in FlowRSVPPathSenderTspecIntServ + HasLengthOfServiceData() bool + // ParameterIdTokenBucketTspec returns PatternFlowRSVPPathSenderTspecIntServParameterIdTokenBucketTspec, set in FlowRSVPPathSenderTspecIntServ. + // PatternFlowRSVPPathSenderTspecIntServParameterIdTokenBucketTspec is parameter ID, parameter 127 (Token Bucket TSpec) + ParameterIdTokenBucketTspec() PatternFlowRSVPPathSenderTspecIntServParameterIdTokenBucketTspec + // SetParameterIdTokenBucketTspec assigns PatternFlowRSVPPathSenderTspecIntServParameterIdTokenBucketTspec provided by user to FlowRSVPPathSenderTspecIntServ. + // PatternFlowRSVPPathSenderTspecIntServParameterIdTokenBucketTspec is parameter ID, parameter 127 (Token Bucket TSpec) + SetParameterIdTokenBucketTspec(value PatternFlowRSVPPathSenderTspecIntServParameterIdTokenBucketTspec) FlowRSVPPathSenderTspecIntServ + // HasParameterIdTokenBucketTspec checks if ParameterIdTokenBucketTspec has been set in FlowRSVPPathSenderTspecIntServ + HasParameterIdTokenBucketTspec() bool + // Parameter127Flag returns PatternFlowRSVPPathSenderTspecIntServParameter127Flag, set in FlowRSVPPathSenderTspecIntServ. + // PatternFlowRSVPPathSenderTspecIntServParameter127Flag is parameter 127 flags (none set) + Parameter127Flag() PatternFlowRSVPPathSenderTspecIntServParameter127Flag + // SetParameter127Flag assigns PatternFlowRSVPPathSenderTspecIntServParameter127Flag provided by user to FlowRSVPPathSenderTspecIntServ. + // PatternFlowRSVPPathSenderTspecIntServParameter127Flag is parameter 127 flags (none set) + SetParameter127Flag(value PatternFlowRSVPPathSenderTspecIntServParameter127Flag) FlowRSVPPathSenderTspecIntServ + // HasParameter127Flag checks if Parameter127Flag has been set in FlowRSVPPathSenderTspecIntServ + HasParameter127Flag() bool + // Parameter127Length returns PatternFlowRSVPPathSenderTspecIntServParameter127Length, set in FlowRSVPPathSenderTspecIntServ. + // PatternFlowRSVPPathSenderTspecIntServParameter127Length is parameter 127 length, 5 words not including per-service header + Parameter127Length() PatternFlowRSVPPathSenderTspecIntServParameter127Length + // SetParameter127Length assigns PatternFlowRSVPPathSenderTspecIntServParameter127Length provided by user to FlowRSVPPathSenderTspecIntServ. + // PatternFlowRSVPPathSenderTspecIntServParameter127Length is parameter 127 length, 5 words not including per-service header + SetParameter127Length(value PatternFlowRSVPPathSenderTspecIntServParameter127Length) FlowRSVPPathSenderTspecIntServ + // HasParameter127Length checks if Parameter127Length has been set in FlowRSVPPathSenderTspecIntServ + HasParameter127Length() bool + // TokenBucketRate returns float32, set in FlowRSVPPathSenderTspecIntServ. + TokenBucketRate() float32 + // SetTokenBucketRate assigns float32 provided by user to FlowRSVPPathSenderTspecIntServ + SetTokenBucketRate(value float32) FlowRSVPPathSenderTspecIntServ + // HasTokenBucketRate checks if TokenBucketRate has been set in FlowRSVPPathSenderTspecIntServ + HasTokenBucketRate() bool + // TokenBucketSize returns float32, set in FlowRSVPPathSenderTspecIntServ. + TokenBucketSize() float32 + // SetTokenBucketSize assigns float32 provided by user to FlowRSVPPathSenderTspecIntServ + SetTokenBucketSize(value float32) FlowRSVPPathSenderTspecIntServ + // HasTokenBucketSize checks if TokenBucketSize has been set in FlowRSVPPathSenderTspecIntServ + HasTokenBucketSize() bool + // PeakDataRate returns float32, set in FlowRSVPPathSenderTspecIntServ. + PeakDataRate() float32 + // SetPeakDataRate assigns float32 provided by user to FlowRSVPPathSenderTspecIntServ + SetPeakDataRate(value float32) FlowRSVPPathSenderTspecIntServ + // HasPeakDataRate checks if PeakDataRate has been set in FlowRSVPPathSenderTspecIntServ + HasPeakDataRate() bool + // MinimumPolicedUnit returns PatternFlowRSVPPathSenderTspecIntServMinimumPolicedUnit, set in FlowRSVPPathSenderTspecIntServ. + // PatternFlowRSVPPathSenderTspecIntServMinimumPolicedUnit is the minimum policed unit parameter should generally be set equal to the size of the smallest packet generated by the application. + MinimumPolicedUnit() PatternFlowRSVPPathSenderTspecIntServMinimumPolicedUnit + // SetMinimumPolicedUnit assigns PatternFlowRSVPPathSenderTspecIntServMinimumPolicedUnit provided by user to FlowRSVPPathSenderTspecIntServ. + // PatternFlowRSVPPathSenderTspecIntServMinimumPolicedUnit is the minimum policed unit parameter should generally be set equal to the size of the smallest packet generated by the application. + SetMinimumPolicedUnit(value PatternFlowRSVPPathSenderTspecIntServMinimumPolicedUnit) FlowRSVPPathSenderTspecIntServ + // HasMinimumPolicedUnit checks if MinimumPolicedUnit has been set in FlowRSVPPathSenderTspecIntServ + HasMinimumPolicedUnit() bool + // MaximumPacketSize returns PatternFlowRSVPPathSenderTspecIntServMaximumPacketSize, set in FlowRSVPPathSenderTspecIntServ. + // PatternFlowRSVPPathSenderTspecIntServMaximumPacketSize is the maximum packet size parameter should be set to the size of the largest packet the application might wish to generate. This value must, by definition, be equal to or larger than the value of The minimum policed unit. + MaximumPacketSize() PatternFlowRSVPPathSenderTspecIntServMaximumPacketSize + // SetMaximumPacketSize assigns PatternFlowRSVPPathSenderTspecIntServMaximumPacketSize provided by user to FlowRSVPPathSenderTspecIntServ. + // PatternFlowRSVPPathSenderTspecIntServMaximumPacketSize is the maximum packet size parameter should be set to the size of the largest packet the application might wish to generate. This value must, by definition, be equal to or larger than the value of The minimum policed unit. + SetMaximumPacketSize(value PatternFlowRSVPPathSenderTspecIntServMaximumPacketSize) FlowRSVPPathSenderTspecIntServ + // HasMaximumPacketSize checks if MaximumPacketSize has been set in FlowRSVPPathSenderTspecIntServ + HasMaximumPacketSize() bool + setNil() } // description is TBD -// Start returns a uint32 -func (obj *patternFlowIcmpv6EchoIdentifierCounter) Start() uint32 { +// Version returns a PatternFlowRSVPPathSenderTspecIntServVersion +func (obj *flowRSVPPathSenderTspecIntServ) Version() PatternFlowRSVPPathSenderTspecIntServVersion { + if obj.obj.Version == nil { + obj.obj.Version = NewPatternFlowRSVPPathSenderTspecIntServVersion().Msg() + } + if obj.versionHolder == nil { + obj.versionHolder = &patternFlowRSVPPathSenderTspecIntServVersion{obj: obj.obj.Version} + } + return obj.versionHolder +} - return *obj.obj.Start +// description is TBD +// Version returns a PatternFlowRSVPPathSenderTspecIntServVersion +func (obj *flowRSVPPathSenderTspecIntServ) HasVersion() bool { + return obj.obj.Version != nil +} + +// description is TBD +// SetVersion sets the PatternFlowRSVPPathSenderTspecIntServVersion value in the FlowRSVPPathSenderTspecIntServ object +func (obj *flowRSVPPathSenderTspecIntServ) SetVersion(value PatternFlowRSVPPathSenderTspecIntServVersion) FlowRSVPPathSenderTspecIntServ { + + obj.versionHolder = nil + obj.obj.Version = value.Msg() + return obj } // description is TBD -// Start returns a uint32 -func (obj *patternFlowIcmpv6EchoIdentifierCounter) HasStart() bool { - return obj.obj.Start != nil +// Reserved1 returns a PatternFlowRSVPPathSenderTspecIntServReserved1 +func (obj *flowRSVPPathSenderTspecIntServ) Reserved1() PatternFlowRSVPPathSenderTspecIntServReserved1 { + if obj.obj.Reserved1 == nil { + obj.obj.Reserved1 = NewPatternFlowRSVPPathSenderTspecIntServReserved1().Msg() + } + if obj.reserved1Holder == nil { + obj.reserved1Holder = &patternFlowRSVPPathSenderTspecIntServReserved1{obj: obj.obj.Reserved1} + } + return obj.reserved1Holder } // description is TBD -// SetStart sets the uint32 value in the PatternFlowIcmpv6EchoIdentifierCounter object -func (obj *patternFlowIcmpv6EchoIdentifierCounter) SetStart(value uint32) PatternFlowIcmpv6EchoIdentifierCounter { +// Reserved1 returns a PatternFlowRSVPPathSenderTspecIntServReserved1 +func (obj *flowRSVPPathSenderTspecIntServ) HasReserved1() bool { + return obj.obj.Reserved1 != nil +} + +// description is TBD +// SetReserved1 sets the PatternFlowRSVPPathSenderTspecIntServReserved1 value in the FlowRSVPPathSenderTspecIntServ object +func (obj *flowRSVPPathSenderTspecIntServ) SetReserved1(value PatternFlowRSVPPathSenderTspecIntServReserved1) FlowRSVPPathSenderTspecIntServ { + + obj.reserved1Holder = nil + obj.obj.Reserved1 = value.Msg() - obj.obj.Start = &value return obj } // description is TBD -// Step returns a uint32 -func (obj *patternFlowIcmpv6EchoIdentifierCounter) Step() uint32 { +// OverallLength returns a PatternFlowRSVPPathSenderTspecIntServOverallLength +func (obj *flowRSVPPathSenderTspecIntServ) OverallLength() PatternFlowRSVPPathSenderTspecIntServOverallLength { + if obj.obj.OverallLength == nil { + obj.obj.OverallLength = NewPatternFlowRSVPPathSenderTspecIntServOverallLength().Msg() + } + if obj.overallLengthHolder == nil { + obj.overallLengthHolder = &patternFlowRSVPPathSenderTspecIntServOverallLength{obj: obj.obj.OverallLength} + } + return obj.overallLengthHolder +} - return *obj.obj.Step +// description is TBD +// OverallLength returns a PatternFlowRSVPPathSenderTspecIntServOverallLength +func (obj *flowRSVPPathSenderTspecIntServ) HasOverallLength() bool { + return obj.obj.OverallLength != nil +} + +// description is TBD +// SetOverallLength sets the PatternFlowRSVPPathSenderTspecIntServOverallLength value in the FlowRSVPPathSenderTspecIntServ object +func (obj *flowRSVPPathSenderTspecIntServ) SetOverallLength(value PatternFlowRSVPPathSenderTspecIntServOverallLength) FlowRSVPPathSenderTspecIntServ { + + obj.overallLengthHolder = nil + obj.obj.OverallLength = value.Msg() + + return obj +} +// description is TBD +// ServiceHeader returns a PatternFlowRSVPPathSenderTspecIntServServiceHeader +func (obj *flowRSVPPathSenderTspecIntServ) ServiceHeader() PatternFlowRSVPPathSenderTspecIntServServiceHeader { + if obj.obj.ServiceHeader == nil { + obj.obj.ServiceHeader = NewPatternFlowRSVPPathSenderTspecIntServServiceHeader().Msg() + } + if obj.serviceHeaderHolder == nil { + obj.serviceHeaderHolder = &patternFlowRSVPPathSenderTspecIntServServiceHeader{obj: obj.obj.ServiceHeader} + } + return obj.serviceHeaderHolder } // description is TBD -// Step returns a uint32 -func (obj *patternFlowIcmpv6EchoIdentifierCounter) HasStep() bool { - return obj.obj.Step != nil +// ServiceHeader returns a PatternFlowRSVPPathSenderTspecIntServServiceHeader +func (obj *flowRSVPPathSenderTspecIntServ) HasServiceHeader() bool { + return obj.obj.ServiceHeader != nil } // description is TBD -// SetStep sets the uint32 value in the PatternFlowIcmpv6EchoIdentifierCounter object -func (obj *patternFlowIcmpv6EchoIdentifierCounter) SetStep(value uint32) PatternFlowIcmpv6EchoIdentifierCounter { +// SetServiceHeader sets the PatternFlowRSVPPathSenderTspecIntServServiceHeader value in the FlowRSVPPathSenderTspecIntServ object +func (obj *flowRSVPPathSenderTspecIntServ) SetServiceHeader(value PatternFlowRSVPPathSenderTspecIntServServiceHeader) FlowRSVPPathSenderTspecIntServ { + + obj.serviceHeaderHolder = nil + obj.obj.ServiceHeader = value.Msg() - obj.obj.Step = &value return obj } // description is TBD -// Count returns a uint32 -func (obj *patternFlowIcmpv6EchoIdentifierCounter) Count() uint32 { +// ZeroBit returns a PatternFlowRSVPPathSenderTspecIntServZeroBit +func (obj *flowRSVPPathSenderTspecIntServ) ZeroBit() PatternFlowRSVPPathSenderTspecIntServZeroBit { + if obj.obj.ZeroBit == nil { + obj.obj.ZeroBit = NewPatternFlowRSVPPathSenderTspecIntServZeroBit().Msg() + } + if obj.zeroBitHolder == nil { + obj.zeroBitHolder = &patternFlowRSVPPathSenderTspecIntServZeroBit{obj: obj.obj.ZeroBit} + } + return obj.zeroBitHolder +} - return *obj.obj.Count +// description is TBD +// ZeroBit returns a PatternFlowRSVPPathSenderTspecIntServZeroBit +func (obj *flowRSVPPathSenderTspecIntServ) HasZeroBit() bool { + return obj.obj.ZeroBit != nil +} +// description is TBD +// SetZeroBit sets the PatternFlowRSVPPathSenderTspecIntServZeroBit value in the FlowRSVPPathSenderTspecIntServ object +func (obj *flowRSVPPathSenderTspecIntServ) SetZeroBit(value PatternFlowRSVPPathSenderTspecIntServZeroBit) FlowRSVPPathSenderTspecIntServ { + + obj.zeroBitHolder = nil + obj.obj.ZeroBit = value.Msg() + + return obj } // description is TBD -// Count returns a uint32 -func (obj *patternFlowIcmpv6EchoIdentifierCounter) HasCount() bool { - return obj.obj.Count != nil +// Reserved2 returns a PatternFlowRSVPPathSenderTspecIntServReserved2 +func (obj *flowRSVPPathSenderTspecIntServ) Reserved2() PatternFlowRSVPPathSenderTspecIntServReserved2 { + if obj.obj.Reserved2 == nil { + obj.obj.Reserved2 = NewPatternFlowRSVPPathSenderTspecIntServReserved2().Msg() + } + if obj.reserved2Holder == nil { + obj.reserved2Holder = &patternFlowRSVPPathSenderTspecIntServReserved2{obj: obj.obj.Reserved2} + } + return obj.reserved2Holder } // description is TBD -// SetCount sets the uint32 value in the PatternFlowIcmpv6EchoIdentifierCounter object -func (obj *patternFlowIcmpv6EchoIdentifierCounter) SetCount(value uint32) PatternFlowIcmpv6EchoIdentifierCounter { +// Reserved2 returns a PatternFlowRSVPPathSenderTspecIntServReserved2 +func (obj *flowRSVPPathSenderTspecIntServ) HasReserved2() bool { + return obj.obj.Reserved2 != nil +} + +// description is TBD +// SetReserved2 sets the PatternFlowRSVPPathSenderTspecIntServReserved2 value in the FlowRSVPPathSenderTspecIntServ object +func (obj *flowRSVPPathSenderTspecIntServ) SetReserved2(value PatternFlowRSVPPathSenderTspecIntServReserved2) FlowRSVPPathSenderTspecIntServ { + + obj.reserved2Holder = nil + obj.obj.Reserved2 = value.Msg() - obj.obj.Count = &value return obj } -func (obj *patternFlowIcmpv6EchoIdentifierCounter) validateObj(vObj *validation, set_default bool) { +// description is TBD +// LengthOfServiceData returns a PatternFlowRSVPPathSenderTspecIntServLengthOfServiceData +func (obj *flowRSVPPathSenderTspecIntServ) LengthOfServiceData() PatternFlowRSVPPathSenderTspecIntServLengthOfServiceData { + if obj.obj.LengthOfServiceData == nil { + obj.obj.LengthOfServiceData = NewPatternFlowRSVPPathSenderTspecIntServLengthOfServiceData().Msg() + } + if obj.lengthOfServiceDataHolder == nil { + obj.lengthOfServiceDataHolder = &patternFlowRSVPPathSenderTspecIntServLengthOfServiceData{obj: obj.obj.LengthOfServiceData} + } + return obj.lengthOfServiceDataHolder +} + +// description is TBD +// LengthOfServiceData returns a PatternFlowRSVPPathSenderTspecIntServLengthOfServiceData +func (obj *flowRSVPPathSenderTspecIntServ) HasLengthOfServiceData() bool { + return obj.obj.LengthOfServiceData != nil +} + +// description is TBD +// SetLengthOfServiceData sets the PatternFlowRSVPPathSenderTspecIntServLengthOfServiceData value in the FlowRSVPPathSenderTspecIntServ object +func (obj *flowRSVPPathSenderTspecIntServ) SetLengthOfServiceData(value PatternFlowRSVPPathSenderTspecIntServLengthOfServiceData) FlowRSVPPathSenderTspecIntServ { + + obj.lengthOfServiceDataHolder = nil + obj.obj.LengthOfServiceData = value.Msg() + + return obj +} + +// description is TBD +// ParameterIdTokenBucketTspec returns a PatternFlowRSVPPathSenderTspecIntServParameterIdTokenBucketTspec +func (obj *flowRSVPPathSenderTspecIntServ) ParameterIdTokenBucketTspec() PatternFlowRSVPPathSenderTspecIntServParameterIdTokenBucketTspec { + if obj.obj.ParameterIdTokenBucketTspec == nil { + obj.obj.ParameterIdTokenBucketTspec = NewPatternFlowRSVPPathSenderTspecIntServParameterIdTokenBucketTspec().Msg() + } + if obj.parameterIdTokenBucketTspecHolder == nil { + obj.parameterIdTokenBucketTspecHolder = &patternFlowRSVPPathSenderTspecIntServParameterIdTokenBucketTspec{obj: obj.obj.ParameterIdTokenBucketTspec} + } + return obj.parameterIdTokenBucketTspecHolder +} + +// description is TBD +// ParameterIdTokenBucketTspec returns a PatternFlowRSVPPathSenderTspecIntServParameterIdTokenBucketTspec +func (obj *flowRSVPPathSenderTspecIntServ) HasParameterIdTokenBucketTspec() bool { + return obj.obj.ParameterIdTokenBucketTspec != nil +} + +// description is TBD +// SetParameterIdTokenBucketTspec sets the PatternFlowRSVPPathSenderTspecIntServParameterIdTokenBucketTspec value in the FlowRSVPPathSenderTspecIntServ object +func (obj *flowRSVPPathSenderTspecIntServ) SetParameterIdTokenBucketTspec(value PatternFlowRSVPPathSenderTspecIntServParameterIdTokenBucketTspec) FlowRSVPPathSenderTspecIntServ { + + obj.parameterIdTokenBucketTspecHolder = nil + obj.obj.ParameterIdTokenBucketTspec = value.Msg() + + return obj +} + +// description is TBD +// Parameter127Flag returns a PatternFlowRSVPPathSenderTspecIntServParameter127Flag +func (obj *flowRSVPPathSenderTspecIntServ) Parameter127Flag() PatternFlowRSVPPathSenderTspecIntServParameter127Flag { + if obj.obj.Parameter_127Flag == nil { + obj.obj.Parameter_127Flag = NewPatternFlowRSVPPathSenderTspecIntServParameter127Flag().Msg() + } + if obj.parameter_127FlagHolder == nil { + obj.parameter_127FlagHolder = &patternFlowRSVPPathSenderTspecIntServParameter127Flag{obj: obj.obj.Parameter_127Flag} + } + return obj.parameter_127FlagHolder +} + +// description is TBD +// Parameter127Flag returns a PatternFlowRSVPPathSenderTspecIntServParameter127Flag +func (obj *flowRSVPPathSenderTspecIntServ) HasParameter127Flag() bool { + return obj.obj.Parameter_127Flag != nil +} + +// description is TBD +// SetParameter127Flag sets the PatternFlowRSVPPathSenderTspecIntServParameter127Flag value in the FlowRSVPPathSenderTspecIntServ object +func (obj *flowRSVPPathSenderTspecIntServ) SetParameter127Flag(value PatternFlowRSVPPathSenderTspecIntServParameter127Flag) FlowRSVPPathSenderTspecIntServ { + + obj.parameter_127FlagHolder = nil + obj.obj.Parameter_127Flag = value.Msg() + + return obj +} + +// description is TBD +// Parameter127Length returns a PatternFlowRSVPPathSenderTspecIntServParameter127Length +func (obj *flowRSVPPathSenderTspecIntServ) Parameter127Length() PatternFlowRSVPPathSenderTspecIntServParameter127Length { + if obj.obj.Parameter_127Length == nil { + obj.obj.Parameter_127Length = NewPatternFlowRSVPPathSenderTspecIntServParameter127Length().Msg() + } + if obj.parameter_127LengthHolder == nil { + obj.parameter_127LengthHolder = &patternFlowRSVPPathSenderTspecIntServParameter127Length{obj: obj.obj.Parameter_127Length} + } + return obj.parameter_127LengthHolder +} + +// description is TBD +// Parameter127Length returns a PatternFlowRSVPPathSenderTspecIntServParameter127Length +func (obj *flowRSVPPathSenderTspecIntServ) HasParameter127Length() bool { + return obj.obj.Parameter_127Length != nil +} + +// description is TBD +// SetParameter127Length sets the PatternFlowRSVPPathSenderTspecIntServParameter127Length value in the FlowRSVPPathSenderTspecIntServ object +func (obj *flowRSVPPathSenderTspecIntServ) SetParameter127Length(value PatternFlowRSVPPathSenderTspecIntServParameter127Length) FlowRSVPPathSenderTspecIntServ { + + obj.parameter_127LengthHolder = nil + obj.obj.Parameter_127Length = value.Msg() + + return obj +} + +// Token bucket rate is set to sender's view of its generated traffic. +// TokenBucketRate returns a float32 +func (obj *flowRSVPPathSenderTspecIntServ) TokenBucketRate() float32 { + + return *obj.obj.TokenBucketRate + +} + +// Token bucket rate is set to sender's view of its generated traffic. +// TokenBucketRate returns a float32 +func (obj *flowRSVPPathSenderTspecIntServ) HasTokenBucketRate() bool { + return obj.obj.TokenBucketRate != nil +} + +// Token bucket rate is set to sender's view of its generated traffic. +// SetTokenBucketRate sets the float32 value in the FlowRSVPPathSenderTspecIntServ object +func (obj *flowRSVPPathSenderTspecIntServ) SetTokenBucketRate(value float32) FlowRSVPPathSenderTspecIntServ { + + obj.obj.TokenBucketRate = &value + return obj +} + +// Token bucket size is set to sender's view of its generated traffic. +// TokenBucketSize returns a float32 +func (obj *flowRSVPPathSenderTspecIntServ) TokenBucketSize() float32 { + + return *obj.obj.TokenBucketSize + +} + +// Token bucket size is set to sender's view of its generated traffic. +// TokenBucketSize returns a float32 +func (obj *flowRSVPPathSenderTspecIntServ) HasTokenBucketSize() bool { + return obj.obj.TokenBucketSize != nil +} + +// Token bucket size is set to sender's view of its generated traffic. +// SetTokenBucketSize sets the float32 value in the FlowRSVPPathSenderTspecIntServ object +func (obj *flowRSVPPathSenderTspecIntServ) SetTokenBucketSize(value float32) FlowRSVPPathSenderTspecIntServ { + + obj.obj.TokenBucketSize = &value + return obj +} + +// The peak rate may be set to the sender's peak traffic generation rate (if known and controlled), the physical interface line rate (if known), or positive infinity (if no better value is available). +// PeakDataRate returns a float32 +func (obj *flowRSVPPathSenderTspecIntServ) PeakDataRate() float32 { + + return *obj.obj.PeakDataRate + +} + +// The peak rate may be set to the sender's peak traffic generation rate (if known and controlled), the physical interface line rate (if known), or positive infinity (if no better value is available). +// PeakDataRate returns a float32 +func (obj *flowRSVPPathSenderTspecIntServ) HasPeakDataRate() bool { + return obj.obj.PeakDataRate != nil +} + +// The peak rate may be set to the sender's peak traffic generation rate (if known and controlled), the physical interface line rate (if known), or positive infinity (if no better value is available). +// SetPeakDataRate sets the float32 value in the FlowRSVPPathSenderTspecIntServ object +func (obj *flowRSVPPathSenderTspecIntServ) SetPeakDataRate(value float32) FlowRSVPPathSenderTspecIntServ { + + obj.obj.PeakDataRate = &value + return obj +} + +// description is TBD +// MinimumPolicedUnit returns a PatternFlowRSVPPathSenderTspecIntServMinimumPolicedUnit +func (obj *flowRSVPPathSenderTspecIntServ) MinimumPolicedUnit() PatternFlowRSVPPathSenderTspecIntServMinimumPolicedUnit { + if obj.obj.MinimumPolicedUnit == nil { + obj.obj.MinimumPolicedUnit = NewPatternFlowRSVPPathSenderTspecIntServMinimumPolicedUnit().Msg() + } + if obj.minimumPolicedUnitHolder == nil { + obj.minimumPolicedUnitHolder = &patternFlowRSVPPathSenderTspecIntServMinimumPolicedUnit{obj: obj.obj.MinimumPolicedUnit} + } + return obj.minimumPolicedUnitHolder +} + +// description is TBD +// MinimumPolicedUnit returns a PatternFlowRSVPPathSenderTspecIntServMinimumPolicedUnit +func (obj *flowRSVPPathSenderTspecIntServ) HasMinimumPolicedUnit() bool { + return obj.obj.MinimumPolicedUnit != nil +} + +// description is TBD +// SetMinimumPolicedUnit sets the PatternFlowRSVPPathSenderTspecIntServMinimumPolicedUnit value in the FlowRSVPPathSenderTspecIntServ object +func (obj *flowRSVPPathSenderTspecIntServ) SetMinimumPolicedUnit(value PatternFlowRSVPPathSenderTspecIntServMinimumPolicedUnit) FlowRSVPPathSenderTspecIntServ { + + obj.minimumPolicedUnitHolder = nil + obj.obj.MinimumPolicedUnit = value.Msg() + + return obj +} + +// description is TBD +// MaximumPacketSize returns a PatternFlowRSVPPathSenderTspecIntServMaximumPacketSize +func (obj *flowRSVPPathSenderTspecIntServ) MaximumPacketSize() PatternFlowRSVPPathSenderTspecIntServMaximumPacketSize { + if obj.obj.MaximumPacketSize == nil { + obj.obj.MaximumPacketSize = NewPatternFlowRSVPPathSenderTspecIntServMaximumPacketSize().Msg() + } + if obj.maximumPacketSizeHolder == nil { + obj.maximumPacketSizeHolder = &patternFlowRSVPPathSenderTspecIntServMaximumPacketSize{obj: obj.obj.MaximumPacketSize} + } + return obj.maximumPacketSizeHolder +} + +// description is TBD +// MaximumPacketSize returns a PatternFlowRSVPPathSenderTspecIntServMaximumPacketSize +func (obj *flowRSVPPathSenderTspecIntServ) HasMaximumPacketSize() bool { + return obj.obj.MaximumPacketSize != nil +} + +// description is TBD +// SetMaximumPacketSize sets the PatternFlowRSVPPathSenderTspecIntServMaximumPacketSize value in the FlowRSVPPathSenderTspecIntServ object +func (obj *flowRSVPPathSenderTspecIntServ) SetMaximumPacketSize(value PatternFlowRSVPPathSenderTspecIntServMaximumPacketSize) FlowRSVPPathSenderTspecIntServ { + + obj.maximumPacketSizeHolder = nil + obj.obj.MaximumPacketSize = value.Msg() + + return obj +} + +func (obj *flowRSVPPathSenderTspecIntServ) validateObj(vObj *validation, set_default bool) { if set_default { obj.setDefault() } - if obj.obj.Start != nil { + if obj.obj.Version != nil { - if *obj.obj.Start > 65535 { - vObj.validationErrors = append( - vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowIcmpv6EchoIdentifierCounter.Start <= 65535 but Got %d", *obj.obj.Start)) - } + obj.Version().validateObj(vObj, set_default) + } + + if obj.obj.Reserved1 != nil { + obj.Reserved1().validateObj(vObj, set_default) } - if obj.obj.Step != nil { + if obj.obj.OverallLength != nil { - if *obj.obj.Step > 65535 { - vObj.validationErrors = append( - vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowIcmpv6EchoIdentifierCounter.Step <= 65535 but Got %d", *obj.obj.Step)) - } + obj.OverallLength().validateObj(vObj, set_default) + } + + if obj.obj.ServiceHeader != nil { + obj.ServiceHeader().validateObj(vObj, set_default) } - if obj.obj.Count != nil { + if obj.obj.ZeroBit != nil { - if *obj.obj.Count > 65535 { - vObj.validationErrors = append( - vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowIcmpv6EchoIdentifierCounter.Count <= 65535 but Got %d", *obj.obj.Count)) - } + obj.ZeroBit().validateObj(vObj, set_default) + } + + if obj.obj.Reserved2 != nil { + + obj.Reserved2().validateObj(vObj, set_default) + } + + if obj.obj.LengthOfServiceData != nil { + + obj.LengthOfServiceData().validateObj(vObj, set_default) + } + + if obj.obj.ParameterIdTokenBucketTspec != nil { + + obj.ParameterIdTokenBucketTspec().validateObj(vObj, set_default) + } + + if obj.obj.Parameter_127Flag != nil { + + obj.Parameter127Flag().validateObj(vObj, set_default) + } + + if obj.obj.Parameter_127Length != nil { + obj.Parameter127Length().validateObj(vObj, set_default) + } + + if obj.obj.MinimumPolicedUnit != nil { + + obj.MinimumPolicedUnit().validateObj(vObj, set_default) + } + + if obj.obj.MaximumPacketSize != nil { + + obj.MaximumPacketSize().validateObj(vObj, set_default) } } -func (obj *patternFlowIcmpv6EchoIdentifierCounter) setDefault() { - if obj.obj.Start == nil { - obj.SetStart(0) +func (obj *flowRSVPPathSenderTspecIntServ) setDefault() { + if obj.obj.TokenBucketRate == nil { + obj.SetTokenBucketRate(0) } - if obj.obj.Step == nil { - obj.SetStep(1) + if obj.obj.TokenBucketSize == nil { + obj.SetTokenBucketSize(0) } - if obj.obj.Count == nil { - obj.SetCount(1) + if obj.obj.PeakDataRate == nil { + obj.SetPeakDataRate(0) } } -// ***** PatternFlowIcmpv6EchoIdentifierMetricTag ***** -type patternFlowIcmpv6EchoIdentifierMetricTag struct { +// ***** FlowRSVPPathRecordRouteType1 ***** +type flowRSVPPathRecordRouteType1 struct { validation - obj *otg.PatternFlowIcmpv6EchoIdentifierMetricTag + obj *otg.FlowRSVPPathRecordRouteType1 + subobjectsHolder FlowRSVPPathRecordRouteType1FlowRSVPType1RecordRouteSubobjectsIter } -func NewPatternFlowIcmpv6EchoIdentifierMetricTag() PatternFlowIcmpv6EchoIdentifierMetricTag { - obj := patternFlowIcmpv6EchoIdentifierMetricTag{obj: &otg.PatternFlowIcmpv6EchoIdentifierMetricTag{}} +func NewFlowRSVPPathRecordRouteType1() FlowRSVPPathRecordRouteType1 { + obj := flowRSVPPathRecordRouteType1{obj: &otg.FlowRSVPPathRecordRouteType1{}} obj.setDefault() return &obj } -func (obj *patternFlowIcmpv6EchoIdentifierMetricTag) Msg() *otg.PatternFlowIcmpv6EchoIdentifierMetricTag { +func (obj *flowRSVPPathRecordRouteType1) Msg() *otg.FlowRSVPPathRecordRouteType1 { return obj.obj } -func (obj *patternFlowIcmpv6EchoIdentifierMetricTag) SetMsg(msg *otg.PatternFlowIcmpv6EchoIdentifierMetricTag) PatternFlowIcmpv6EchoIdentifierMetricTag { - +func (obj *flowRSVPPathRecordRouteType1) SetMsg(msg *otg.FlowRSVPPathRecordRouteType1) FlowRSVPPathRecordRouteType1 { + obj.setNil() proto.Merge(obj.obj, msg) return obj } -func (obj *patternFlowIcmpv6EchoIdentifierMetricTag) ToProto() (*otg.PatternFlowIcmpv6EchoIdentifierMetricTag, error) { +func (obj *flowRSVPPathRecordRouteType1) ToProto() (*otg.FlowRSVPPathRecordRouteType1, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -294217,7 +339490,7 @@ func (obj *patternFlowIcmpv6EchoIdentifierMetricTag) ToProto() (*otg.PatternFlow return obj.Msg(), nil } -func (obj *patternFlowIcmpv6EchoIdentifierMetricTag) FromProto(msg *otg.PatternFlowIcmpv6EchoIdentifierMetricTag) (PatternFlowIcmpv6EchoIdentifierMetricTag, error) { +func (obj *flowRSVPPathRecordRouteType1) FromProto(msg *otg.FlowRSVPPathRecordRouteType1) (FlowRSVPPathRecordRouteType1, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -294226,7 +339499,7 @@ func (obj *patternFlowIcmpv6EchoIdentifierMetricTag) FromProto(msg *otg.PatternF return newObj, nil } -func (obj *patternFlowIcmpv6EchoIdentifierMetricTag) ToPbText() (string, error) { +func (obj *flowRSVPPathRecordRouteType1) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -294238,12 +339511,12 @@ func (obj *patternFlowIcmpv6EchoIdentifierMetricTag) ToPbText() (string, error) return string(protoMarshal), nil } -func (obj *patternFlowIcmpv6EchoIdentifierMetricTag) FromPbText(value string) error { +func (obj *flowRSVPPathRecordRouteType1) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj } - + obj.setNil() vErr := obj.validateToAndFrom() if vErr != nil { return vErr @@ -294251,7 +339524,7 @@ func (obj *patternFlowIcmpv6EchoIdentifierMetricTag) FromPbText(value string) er return retObj } -func (obj *patternFlowIcmpv6EchoIdentifierMetricTag) ToYaml() (string, error) { +func (obj *flowRSVPPathRecordRouteType1) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -294272,7 +339545,7 @@ func (obj *patternFlowIcmpv6EchoIdentifierMetricTag) ToYaml() (string, error) { return string(data), nil } -func (obj *patternFlowIcmpv6EchoIdentifierMetricTag) FromYaml(value string) error { +func (obj *flowRSVPPathRecordRouteType1) FromYaml(value string) error { if value == "" { value = "{}" } @@ -294289,7 +339562,7 @@ func (obj *patternFlowIcmpv6EchoIdentifierMetricTag) FromYaml(value string) erro return fmt.Errorf("unmarshal error %s", strings.Replace( uError.Error(), "\u00a0", " ", -1)[7:]) } - + obj.setNil() vErr := obj.validateToAndFrom() if vErr != nil { return vErr @@ -294297,7 +339570,7 @@ func (obj *patternFlowIcmpv6EchoIdentifierMetricTag) FromYaml(value string) erro return nil } -func (obj *patternFlowIcmpv6EchoIdentifierMetricTag) ToJson() (string, error) { +func (obj *flowRSVPPathRecordRouteType1) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -294315,7 +339588,7 @@ func (obj *patternFlowIcmpv6EchoIdentifierMetricTag) ToJson() (string, error) { return string(data), nil } -func (obj *patternFlowIcmpv6EchoIdentifierMetricTag) FromJson(value string) error { +func (obj *flowRSVPPathRecordRouteType1) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -294328,7 +339601,7 @@ func (obj *patternFlowIcmpv6EchoIdentifierMetricTag) FromJson(value string) erro return fmt.Errorf("unmarshal error %s", strings.Replace( uError.Error(), "\u00a0", " ", -1)[7:]) } - + obj.setNil() err := obj.validateToAndFrom() if err != nil { return err @@ -294336,19 +339609,19 @@ func (obj *patternFlowIcmpv6EchoIdentifierMetricTag) FromJson(value string) erro return nil } -func (obj *patternFlowIcmpv6EchoIdentifierMetricTag) validateToAndFrom() error { +func (obj *flowRSVPPathRecordRouteType1) validateToAndFrom() error { // emptyVars() obj.validateObj(&obj.validation, true) return obj.validationResult() } -func (obj *patternFlowIcmpv6EchoIdentifierMetricTag) Validate() error { +func (obj *flowRSVPPathRecordRouteType1) Validate() error { // emptyVars() obj.validateObj(&obj.validation, false) return obj.validationResult() } -func (obj *patternFlowIcmpv6EchoIdentifierMetricTag) String() string { +func (obj *flowRSVPPathRecordRouteType1) String() string { str, err := obj.ToYaml() if err != nil { return err.Error() @@ -294356,12 +339629,12 @@ func (obj *patternFlowIcmpv6EchoIdentifierMetricTag) String() string { return str } -func (obj *patternFlowIcmpv6EchoIdentifierMetricTag) Clone() (PatternFlowIcmpv6EchoIdentifierMetricTag, error) { +func (obj *flowRSVPPathRecordRouteType1) Clone() (FlowRSVPPathRecordRouteType1, error) { vErr := obj.Validate() if vErr != nil { return nil, vErr } - newObj := NewPatternFlowIcmpv6EchoIdentifierMetricTag() + newObj := NewFlowRSVPPathRecordRouteType1() data, err := proto.Marshal(obj.Msg()) if err != nil { return nil, err @@ -294373,183 +339646,187 @@ func (obj *patternFlowIcmpv6EchoIdentifierMetricTag) Clone() (PatternFlowIcmpv6E return newObj, nil } -// PatternFlowIcmpv6EchoIdentifierMetricTag is metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. -type PatternFlowIcmpv6EchoIdentifierMetricTag interface { +func (obj *flowRSVPPathRecordRouteType1) setNil() { + obj.subobjectsHolder = nil + obj.validationErrors = nil + obj.warnings = nil + obj.constraints = make(map[string]map[string]Constraints) +} + +// FlowRSVPPathRecordRouteType1 is type1 record route has list of subobjects. Currently supported subobjects are IPv4 address(1) and Label(3). +type FlowRSVPPathRecordRouteType1 interface { Validation - // Msg marshals PatternFlowIcmpv6EchoIdentifierMetricTag to protobuf object *otg.PatternFlowIcmpv6EchoIdentifierMetricTag + // Msg marshals FlowRSVPPathRecordRouteType1 to protobuf object *otg.FlowRSVPPathRecordRouteType1 // and doesn't set defaults - Msg() *otg.PatternFlowIcmpv6EchoIdentifierMetricTag - // SetMsg unmarshals PatternFlowIcmpv6EchoIdentifierMetricTag from protobuf object *otg.PatternFlowIcmpv6EchoIdentifierMetricTag + Msg() *otg.FlowRSVPPathRecordRouteType1 + // SetMsg unmarshals FlowRSVPPathRecordRouteType1 from protobuf object *otg.FlowRSVPPathRecordRouteType1 // and doesn't set defaults - SetMsg(*otg.PatternFlowIcmpv6EchoIdentifierMetricTag) PatternFlowIcmpv6EchoIdentifierMetricTag - // ToProto marshals PatternFlowIcmpv6EchoIdentifierMetricTag to protobuf object *otg.PatternFlowIcmpv6EchoIdentifierMetricTag - ToProto() (*otg.PatternFlowIcmpv6EchoIdentifierMetricTag, error) - // ToPbText marshals PatternFlowIcmpv6EchoIdentifierMetricTag to protobuf text + SetMsg(*otg.FlowRSVPPathRecordRouteType1) FlowRSVPPathRecordRouteType1 + // ToProto marshals FlowRSVPPathRecordRouteType1 to protobuf object *otg.FlowRSVPPathRecordRouteType1 + ToProto() (*otg.FlowRSVPPathRecordRouteType1, error) + // ToPbText marshals FlowRSVPPathRecordRouteType1 to protobuf text ToPbText() (string, error) - // ToYaml marshals PatternFlowIcmpv6EchoIdentifierMetricTag to YAML text + // ToYaml marshals FlowRSVPPathRecordRouteType1 to YAML text ToYaml() (string, error) - // ToJson marshals PatternFlowIcmpv6EchoIdentifierMetricTag to JSON text + // ToJson marshals FlowRSVPPathRecordRouteType1 to JSON text ToJson() (string, error) - // FromProto unmarshals PatternFlowIcmpv6EchoIdentifierMetricTag from protobuf object *otg.PatternFlowIcmpv6EchoIdentifierMetricTag - FromProto(msg *otg.PatternFlowIcmpv6EchoIdentifierMetricTag) (PatternFlowIcmpv6EchoIdentifierMetricTag, error) - // FromPbText unmarshals PatternFlowIcmpv6EchoIdentifierMetricTag from protobuf text + // FromProto unmarshals FlowRSVPPathRecordRouteType1 from protobuf object *otg.FlowRSVPPathRecordRouteType1 + FromProto(msg *otg.FlowRSVPPathRecordRouteType1) (FlowRSVPPathRecordRouteType1, error) + // FromPbText unmarshals FlowRSVPPathRecordRouteType1 from protobuf text FromPbText(value string) error - // FromYaml unmarshals PatternFlowIcmpv6EchoIdentifierMetricTag from YAML text + // FromYaml unmarshals FlowRSVPPathRecordRouteType1 from YAML text FromYaml(value string) error - // FromJson unmarshals PatternFlowIcmpv6EchoIdentifierMetricTag from JSON text + // FromJson unmarshals FlowRSVPPathRecordRouteType1 from JSON text FromJson(value string) error - // Validate validates PatternFlowIcmpv6EchoIdentifierMetricTag + // Validate validates FlowRSVPPathRecordRouteType1 Validate() error // A stringer function String() string // Clones the object - Clone() (PatternFlowIcmpv6EchoIdentifierMetricTag, error) + Clone() (FlowRSVPPathRecordRouteType1, error) validateToAndFrom() error validateObj(vObj *validation, set_default bool) setDefault() - // Name returns string, set in PatternFlowIcmpv6EchoIdentifierMetricTag. - Name() string - // SetName assigns string provided by user to PatternFlowIcmpv6EchoIdentifierMetricTag - SetName(value string) PatternFlowIcmpv6EchoIdentifierMetricTag - // Offset returns uint32, set in PatternFlowIcmpv6EchoIdentifierMetricTag. - Offset() uint32 - // SetOffset assigns uint32 provided by user to PatternFlowIcmpv6EchoIdentifierMetricTag - SetOffset(value uint32) PatternFlowIcmpv6EchoIdentifierMetricTag - // HasOffset checks if Offset has been set in PatternFlowIcmpv6EchoIdentifierMetricTag - HasOffset() bool - // Length returns uint32, set in PatternFlowIcmpv6EchoIdentifierMetricTag. - Length() uint32 - // SetLength assigns uint32 provided by user to PatternFlowIcmpv6EchoIdentifierMetricTag - SetLength(value uint32) PatternFlowIcmpv6EchoIdentifierMetricTag - // HasLength checks if Length has been set in PatternFlowIcmpv6EchoIdentifierMetricTag - HasLength() bool + // Subobjects returns FlowRSVPPathRecordRouteType1FlowRSVPType1RecordRouteSubobjectsIterIter, set in FlowRSVPPathRecordRouteType1 + Subobjects() FlowRSVPPathRecordRouteType1FlowRSVPType1RecordRouteSubobjectsIter + setNil() } -// Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field -// Name returns a string -func (obj *patternFlowIcmpv6EchoIdentifierMetricTag) Name() string { +// description is TBD +// Subobjects returns a []FlowRSVPType1RecordRouteSubobjects +func (obj *flowRSVPPathRecordRouteType1) Subobjects() FlowRSVPPathRecordRouteType1FlowRSVPType1RecordRouteSubobjectsIter { + if len(obj.obj.Subobjects) == 0 { + obj.obj.Subobjects = []*otg.FlowRSVPType1RecordRouteSubobjects{} + } + if obj.subobjectsHolder == nil { + obj.subobjectsHolder = newFlowRSVPPathRecordRouteType1FlowRSVPType1RecordRouteSubobjectsIter(&obj.obj.Subobjects).setMsg(obj) + } + return obj.subobjectsHolder +} - return *obj.obj.Name +type flowRSVPPathRecordRouteType1FlowRSVPType1RecordRouteSubobjectsIter struct { + obj *flowRSVPPathRecordRouteType1 + flowRSVPType1RecordRouteSubobjectsSlice []FlowRSVPType1RecordRouteSubobjects + fieldPtr *[]*otg.FlowRSVPType1RecordRouteSubobjects +} +func newFlowRSVPPathRecordRouteType1FlowRSVPType1RecordRouteSubobjectsIter(ptr *[]*otg.FlowRSVPType1RecordRouteSubobjects) FlowRSVPPathRecordRouteType1FlowRSVPType1RecordRouteSubobjectsIter { + return &flowRSVPPathRecordRouteType1FlowRSVPType1RecordRouteSubobjectsIter{fieldPtr: ptr} } -// Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field -// SetName sets the string value in the PatternFlowIcmpv6EchoIdentifierMetricTag object -func (obj *patternFlowIcmpv6EchoIdentifierMetricTag) SetName(value string) PatternFlowIcmpv6EchoIdentifierMetricTag { +type FlowRSVPPathRecordRouteType1FlowRSVPType1RecordRouteSubobjectsIter interface { + setMsg(*flowRSVPPathRecordRouteType1) FlowRSVPPathRecordRouteType1FlowRSVPType1RecordRouteSubobjectsIter + Items() []FlowRSVPType1RecordRouteSubobjects + Add() FlowRSVPType1RecordRouteSubobjects + Append(items ...FlowRSVPType1RecordRouteSubobjects) FlowRSVPPathRecordRouteType1FlowRSVPType1RecordRouteSubobjectsIter + Set(index int, newObj FlowRSVPType1RecordRouteSubobjects) FlowRSVPPathRecordRouteType1FlowRSVPType1RecordRouteSubobjectsIter + Clear() FlowRSVPPathRecordRouteType1FlowRSVPType1RecordRouteSubobjectsIter + clearHolderSlice() FlowRSVPPathRecordRouteType1FlowRSVPType1RecordRouteSubobjectsIter + appendHolderSlice(item FlowRSVPType1RecordRouteSubobjects) FlowRSVPPathRecordRouteType1FlowRSVPType1RecordRouteSubobjectsIter +} - obj.obj.Name = &value +func (obj *flowRSVPPathRecordRouteType1FlowRSVPType1RecordRouteSubobjectsIter) setMsg(msg *flowRSVPPathRecordRouteType1) FlowRSVPPathRecordRouteType1FlowRSVPType1RecordRouteSubobjectsIter { + obj.clearHolderSlice() + for _, val := range *obj.fieldPtr { + obj.appendHolderSlice(&flowRSVPType1RecordRouteSubobjects{obj: val}) + } + obj.obj = msg return obj } -// Offset in bits relative to start of corresponding header field -// Offset returns a uint32 -func (obj *patternFlowIcmpv6EchoIdentifierMetricTag) Offset() uint32 { - - return *obj.obj.Offset - +func (obj *flowRSVPPathRecordRouteType1FlowRSVPType1RecordRouteSubobjectsIter) Items() []FlowRSVPType1RecordRouteSubobjects { + return obj.flowRSVPType1RecordRouteSubobjectsSlice } -// Offset in bits relative to start of corresponding header field -// Offset returns a uint32 -func (obj *patternFlowIcmpv6EchoIdentifierMetricTag) HasOffset() bool { - return obj.obj.Offset != nil +func (obj *flowRSVPPathRecordRouteType1FlowRSVPType1RecordRouteSubobjectsIter) Add() FlowRSVPType1RecordRouteSubobjects { + newObj := &otg.FlowRSVPType1RecordRouteSubobjects{} + *obj.fieldPtr = append(*obj.fieldPtr, newObj) + newLibObj := &flowRSVPType1RecordRouteSubobjects{obj: newObj} + newLibObj.setDefault() + obj.flowRSVPType1RecordRouteSubobjectsSlice = append(obj.flowRSVPType1RecordRouteSubobjectsSlice, newLibObj) + return newLibObj } -// Offset in bits relative to start of corresponding header field -// SetOffset sets the uint32 value in the PatternFlowIcmpv6EchoIdentifierMetricTag object -func (obj *patternFlowIcmpv6EchoIdentifierMetricTag) SetOffset(value uint32) PatternFlowIcmpv6EchoIdentifierMetricTag { - - obj.obj.Offset = &value +func (obj *flowRSVPPathRecordRouteType1FlowRSVPType1RecordRouteSubobjectsIter) Append(items ...FlowRSVPType1RecordRouteSubobjects) FlowRSVPPathRecordRouteType1FlowRSVPType1RecordRouteSubobjectsIter { + for _, item := range items { + newObj := item.Msg() + *obj.fieldPtr = append(*obj.fieldPtr, newObj) + obj.flowRSVPType1RecordRouteSubobjectsSlice = append(obj.flowRSVPType1RecordRouteSubobjectsSlice, item) + } return obj } -// Number of bits to track for metrics starting from configured offset of corresponding header field -// Length returns a uint32 -func (obj *patternFlowIcmpv6EchoIdentifierMetricTag) Length() uint32 { - - return *obj.obj.Length - +func (obj *flowRSVPPathRecordRouteType1FlowRSVPType1RecordRouteSubobjectsIter) Set(index int, newObj FlowRSVPType1RecordRouteSubobjects) FlowRSVPPathRecordRouteType1FlowRSVPType1RecordRouteSubobjectsIter { + (*obj.fieldPtr)[index] = newObj.Msg() + obj.flowRSVPType1RecordRouteSubobjectsSlice[index] = newObj + return obj } - -// Number of bits to track for metrics starting from configured offset of corresponding header field -// Length returns a uint32 -func (obj *patternFlowIcmpv6EchoIdentifierMetricTag) HasLength() bool { - return obj.obj.Length != nil +func (obj *flowRSVPPathRecordRouteType1FlowRSVPType1RecordRouteSubobjectsIter) Clear() FlowRSVPPathRecordRouteType1FlowRSVPType1RecordRouteSubobjectsIter { + if len(*obj.fieldPtr) > 0 { + *obj.fieldPtr = []*otg.FlowRSVPType1RecordRouteSubobjects{} + obj.flowRSVPType1RecordRouteSubobjectsSlice = []FlowRSVPType1RecordRouteSubobjects{} + } + return obj } - -// Number of bits to track for metrics starting from configured offset of corresponding header field -// SetLength sets the uint32 value in the PatternFlowIcmpv6EchoIdentifierMetricTag object -func (obj *patternFlowIcmpv6EchoIdentifierMetricTag) SetLength(value uint32) PatternFlowIcmpv6EchoIdentifierMetricTag { - - obj.obj.Length = &value +func (obj *flowRSVPPathRecordRouteType1FlowRSVPType1RecordRouteSubobjectsIter) clearHolderSlice() FlowRSVPPathRecordRouteType1FlowRSVPType1RecordRouteSubobjectsIter { + if len(obj.flowRSVPType1RecordRouteSubobjectsSlice) > 0 { + obj.flowRSVPType1RecordRouteSubobjectsSlice = []FlowRSVPType1RecordRouteSubobjects{} + } + return obj +} +func (obj *flowRSVPPathRecordRouteType1FlowRSVPType1RecordRouteSubobjectsIter) appendHolderSlice(item FlowRSVPType1RecordRouteSubobjects) FlowRSVPPathRecordRouteType1FlowRSVPType1RecordRouteSubobjectsIter { + obj.flowRSVPType1RecordRouteSubobjectsSlice = append(obj.flowRSVPType1RecordRouteSubobjectsSlice, item) return obj } -func (obj *patternFlowIcmpv6EchoIdentifierMetricTag) validateObj(vObj *validation, set_default bool) { +func (obj *flowRSVPPathRecordRouteType1) validateObj(vObj *validation, set_default bool) { if set_default { obj.setDefault() } - // Name is required - if obj.obj.Name == nil { - vObj.validationErrors = append(vObj.validationErrors, "Name is required field on interface PatternFlowIcmpv6EchoIdentifierMetricTag") - } - - if obj.obj.Offset != nil { + if len(obj.obj.Subobjects) != 0 { - if *obj.obj.Offset > 15 { - vObj.validationErrors = append( - vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowIcmpv6EchoIdentifierMetricTag.Offset <= 15 but Got %d", *obj.obj.Offset)) + if set_default { + obj.Subobjects().clearHolderSlice() + for _, item := range obj.obj.Subobjects { + obj.Subobjects().appendHolderSlice(&flowRSVPType1RecordRouteSubobjects{obj: item}) + } } - - } - - if obj.obj.Length != nil { - - if *obj.obj.Length < 1 || *obj.obj.Length > 16 { - vObj.validationErrors = append( - vObj.validationErrors, - fmt.Sprintf("1 <= PatternFlowIcmpv6EchoIdentifierMetricTag.Length <= 16 but Got %d", *obj.obj.Length)) + for _, item := range obj.Subobjects().Items() { + item.validateObj(vObj, set_default) } } } -func (obj *patternFlowIcmpv6EchoIdentifierMetricTag) setDefault() { - if obj.obj.Offset == nil { - obj.SetOffset(0) - } - if obj.obj.Length == nil { - obj.SetLength(16) - } +func (obj *flowRSVPPathRecordRouteType1) setDefault() { } -// ***** PatternFlowIcmpv6EchoSequenceNumberCounter ***** -type patternFlowIcmpv6EchoSequenceNumberCounter struct { +// ***** PatternFlowRSVPPathObjectsCustomTypeCounter ***** +type patternFlowRSVPPathObjectsCustomTypeCounter struct { validation - obj *otg.PatternFlowIcmpv6EchoSequenceNumberCounter + obj *otg.PatternFlowRSVPPathObjectsCustomTypeCounter } -func NewPatternFlowIcmpv6EchoSequenceNumberCounter() PatternFlowIcmpv6EchoSequenceNumberCounter { - obj := patternFlowIcmpv6EchoSequenceNumberCounter{obj: &otg.PatternFlowIcmpv6EchoSequenceNumberCounter{}} +func NewPatternFlowRSVPPathObjectsCustomTypeCounter() PatternFlowRSVPPathObjectsCustomTypeCounter { + obj := patternFlowRSVPPathObjectsCustomTypeCounter{obj: &otg.PatternFlowRSVPPathObjectsCustomTypeCounter{}} obj.setDefault() return &obj } -func (obj *patternFlowIcmpv6EchoSequenceNumberCounter) Msg() *otg.PatternFlowIcmpv6EchoSequenceNumberCounter { +func (obj *patternFlowRSVPPathObjectsCustomTypeCounter) Msg() *otg.PatternFlowRSVPPathObjectsCustomTypeCounter { return obj.obj } -func (obj *patternFlowIcmpv6EchoSequenceNumberCounter) SetMsg(msg *otg.PatternFlowIcmpv6EchoSequenceNumberCounter) PatternFlowIcmpv6EchoSequenceNumberCounter { +func (obj *patternFlowRSVPPathObjectsCustomTypeCounter) SetMsg(msg *otg.PatternFlowRSVPPathObjectsCustomTypeCounter) PatternFlowRSVPPathObjectsCustomTypeCounter { proto.Merge(obj.obj, msg) return obj } -func (obj *patternFlowIcmpv6EchoSequenceNumberCounter) ToProto() (*otg.PatternFlowIcmpv6EchoSequenceNumberCounter, error) { +func (obj *patternFlowRSVPPathObjectsCustomTypeCounter) ToProto() (*otg.PatternFlowRSVPPathObjectsCustomTypeCounter, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -294557,7 +339834,7 @@ func (obj *patternFlowIcmpv6EchoSequenceNumberCounter) ToProto() (*otg.PatternFl return obj.Msg(), nil } -func (obj *patternFlowIcmpv6EchoSequenceNumberCounter) FromProto(msg *otg.PatternFlowIcmpv6EchoSequenceNumberCounter) (PatternFlowIcmpv6EchoSequenceNumberCounter, error) { +func (obj *patternFlowRSVPPathObjectsCustomTypeCounter) FromProto(msg *otg.PatternFlowRSVPPathObjectsCustomTypeCounter) (PatternFlowRSVPPathObjectsCustomTypeCounter, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -294566,7 +339843,7 @@ func (obj *patternFlowIcmpv6EchoSequenceNumberCounter) FromProto(msg *otg.Patter return newObj, nil } -func (obj *patternFlowIcmpv6EchoSequenceNumberCounter) ToPbText() (string, error) { +func (obj *patternFlowRSVPPathObjectsCustomTypeCounter) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -294578,7 +339855,7 @@ func (obj *patternFlowIcmpv6EchoSequenceNumberCounter) ToPbText() (string, error return string(protoMarshal), nil } -func (obj *patternFlowIcmpv6EchoSequenceNumberCounter) FromPbText(value string) error { +func (obj *patternFlowRSVPPathObjectsCustomTypeCounter) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj @@ -294591,7 +339868,7 @@ func (obj *patternFlowIcmpv6EchoSequenceNumberCounter) FromPbText(value string) return retObj } -func (obj *patternFlowIcmpv6EchoSequenceNumberCounter) ToYaml() (string, error) { +func (obj *patternFlowRSVPPathObjectsCustomTypeCounter) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -294612,7 +339889,7 @@ func (obj *patternFlowIcmpv6EchoSequenceNumberCounter) ToYaml() (string, error) return string(data), nil } -func (obj *patternFlowIcmpv6EchoSequenceNumberCounter) FromYaml(value string) error { +func (obj *patternFlowRSVPPathObjectsCustomTypeCounter) FromYaml(value string) error { if value == "" { value = "{}" } @@ -294637,7 +339914,7 @@ func (obj *patternFlowIcmpv6EchoSequenceNumberCounter) FromYaml(value string) er return nil } -func (obj *patternFlowIcmpv6EchoSequenceNumberCounter) ToJson() (string, error) { +func (obj *patternFlowRSVPPathObjectsCustomTypeCounter) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -294655,7 +339932,7 @@ func (obj *patternFlowIcmpv6EchoSequenceNumberCounter) ToJson() (string, error) return string(data), nil } -func (obj *patternFlowIcmpv6EchoSequenceNumberCounter) FromJson(value string) error { +func (obj *patternFlowRSVPPathObjectsCustomTypeCounter) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -294676,19 +339953,19 @@ func (obj *patternFlowIcmpv6EchoSequenceNumberCounter) FromJson(value string) er return nil } -func (obj *patternFlowIcmpv6EchoSequenceNumberCounter) validateToAndFrom() error { +func (obj *patternFlowRSVPPathObjectsCustomTypeCounter) validateToAndFrom() error { // emptyVars() obj.validateObj(&obj.validation, true) return obj.validationResult() } -func (obj *patternFlowIcmpv6EchoSequenceNumberCounter) Validate() error { +func (obj *patternFlowRSVPPathObjectsCustomTypeCounter) Validate() error { // emptyVars() obj.validateObj(&obj.validation, false) return obj.validationResult() } -func (obj *patternFlowIcmpv6EchoSequenceNumberCounter) String() string { +func (obj *patternFlowRSVPPathObjectsCustomTypeCounter) String() string { str, err := obj.ToYaml() if err != nil { return err.Error() @@ -294696,12 +339973,12 @@ func (obj *patternFlowIcmpv6EchoSequenceNumberCounter) String() string { return str } -func (obj *patternFlowIcmpv6EchoSequenceNumberCounter) Clone() (PatternFlowIcmpv6EchoSequenceNumberCounter, error) { +func (obj *patternFlowRSVPPathObjectsCustomTypeCounter) Clone() (PatternFlowRSVPPathObjectsCustomTypeCounter, error) { vErr := obj.Validate() if vErr != nil { return nil, vErr } - newObj := NewPatternFlowIcmpv6EchoSequenceNumberCounter() + newObj := NewPatternFlowRSVPPathObjectsCustomTypeCounter() data, err := proto.Marshal(obj.Msg()) if err != nil { return nil, err @@ -294713,63 +339990,63 @@ func (obj *patternFlowIcmpv6EchoSequenceNumberCounter) Clone() (PatternFlowIcmpv return newObj, nil } -// PatternFlowIcmpv6EchoSequenceNumberCounter is integer counter pattern -type PatternFlowIcmpv6EchoSequenceNumberCounter interface { +// PatternFlowRSVPPathObjectsCustomTypeCounter is integer counter pattern +type PatternFlowRSVPPathObjectsCustomTypeCounter interface { Validation - // Msg marshals PatternFlowIcmpv6EchoSequenceNumberCounter to protobuf object *otg.PatternFlowIcmpv6EchoSequenceNumberCounter + // Msg marshals PatternFlowRSVPPathObjectsCustomTypeCounter to protobuf object *otg.PatternFlowRSVPPathObjectsCustomTypeCounter // and doesn't set defaults - Msg() *otg.PatternFlowIcmpv6EchoSequenceNumberCounter - // SetMsg unmarshals PatternFlowIcmpv6EchoSequenceNumberCounter from protobuf object *otg.PatternFlowIcmpv6EchoSequenceNumberCounter + Msg() *otg.PatternFlowRSVPPathObjectsCustomTypeCounter + // SetMsg unmarshals PatternFlowRSVPPathObjectsCustomTypeCounter from protobuf object *otg.PatternFlowRSVPPathObjectsCustomTypeCounter // and doesn't set defaults - SetMsg(*otg.PatternFlowIcmpv6EchoSequenceNumberCounter) PatternFlowIcmpv6EchoSequenceNumberCounter - // ToProto marshals PatternFlowIcmpv6EchoSequenceNumberCounter to protobuf object *otg.PatternFlowIcmpv6EchoSequenceNumberCounter - ToProto() (*otg.PatternFlowIcmpv6EchoSequenceNumberCounter, error) - // ToPbText marshals PatternFlowIcmpv6EchoSequenceNumberCounter to protobuf text + SetMsg(*otg.PatternFlowRSVPPathObjectsCustomTypeCounter) PatternFlowRSVPPathObjectsCustomTypeCounter + // ToProto marshals PatternFlowRSVPPathObjectsCustomTypeCounter to protobuf object *otg.PatternFlowRSVPPathObjectsCustomTypeCounter + ToProto() (*otg.PatternFlowRSVPPathObjectsCustomTypeCounter, error) + // ToPbText marshals PatternFlowRSVPPathObjectsCustomTypeCounter to protobuf text ToPbText() (string, error) - // ToYaml marshals PatternFlowIcmpv6EchoSequenceNumberCounter to YAML text + // ToYaml marshals PatternFlowRSVPPathObjectsCustomTypeCounter to YAML text ToYaml() (string, error) - // ToJson marshals PatternFlowIcmpv6EchoSequenceNumberCounter to JSON text + // ToJson marshals PatternFlowRSVPPathObjectsCustomTypeCounter to JSON text ToJson() (string, error) - // FromProto unmarshals PatternFlowIcmpv6EchoSequenceNumberCounter from protobuf object *otg.PatternFlowIcmpv6EchoSequenceNumberCounter - FromProto(msg *otg.PatternFlowIcmpv6EchoSequenceNumberCounter) (PatternFlowIcmpv6EchoSequenceNumberCounter, error) - // FromPbText unmarshals PatternFlowIcmpv6EchoSequenceNumberCounter from protobuf text + // FromProto unmarshals PatternFlowRSVPPathObjectsCustomTypeCounter from protobuf object *otg.PatternFlowRSVPPathObjectsCustomTypeCounter + FromProto(msg *otg.PatternFlowRSVPPathObjectsCustomTypeCounter) (PatternFlowRSVPPathObjectsCustomTypeCounter, error) + // FromPbText unmarshals PatternFlowRSVPPathObjectsCustomTypeCounter from protobuf text FromPbText(value string) error - // FromYaml unmarshals PatternFlowIcmpv6EchoSequenceNumberCounter from YAML text + // FromYaml unmarshals PatternFlowRSVPPathObjectsCustomTypeCounter from YAML text FromYaml(value string) error - // FromJson unmarshals PatternFlowIcmpv6EchoSequenceNumberCounter from JSON text + // FromJson unmarshals PatternFlowRSVPPathObjectsCustomTypeCounter from JSON text FromJson(value string) error - // Validate validates PatternFlowIcmpv6EchoSequenceNumberCounter + // Validate validates PatternFlowRSVPPathObjectsCustomTypeCounter Validate() error // A stringer function String() string // Clones the object - Clone() (PatternFlowIcmpv6EchoSequenceNumberCounter, error) + Clone() (PatternFlowRSVPPathObjectsCustomTypeCounter, error) validateToAndFrom() error validateObj(vObj *validation, set_default bool) setDefault() - // Start returns uint32, set in PatternFlowIcmpv6EchoSequenceNumberCounter. + // Start returns uint32, set in PatternFlowRSVPPathObjectsCustomTypeCounter. Start() uint32 - // SetStart assigns uint32 provided by user to PatternFlowIcmpv6EchoSequenceNumberCounter - SetStart(value uint32) PatternFlowIcmpv6EchoSequenceNumberCounter - // HasStart checks if Start has been set in PatternFlowIcmpv6EchoSequenceNumberCounter + // SetStart assigns uint32 provided by user to PatternFlowRSVPPathObjectsCustomTypeCounter + SetStart(value uint32) PatternFlowRSVPPathObjectsCustomTypeCounter + // HasStart checks if Start has been set in PatternFlowRSVPPathObjectsCustomTypeCounter HasStart() bool - // Step returns uint32, set in PatternFlowIcmpv6EchoSequenceNumberCounter. + // Step returns uint32, set in PatternFlowRSVPPathObjectsCustomTypeCounter. Step() uint32 - // SetStep assigns uint32 provided by user to PatternFlowIcmpv6EchoSequenceNumberCounter - SetStep(value uint32) PatternFlowIcmpv6EchoSequenceNumberCounter - // HasStep checks if Step has been set in PatternFlowIcmpv6EchoSequenceNumberCounter + // SetStep assigns uint32 provided by user to PatternFlowRSVPPathObjectsCustomTypeCounter + SetStep(value uint32) PatternFlowRSVPPathObjectsCustomTypeCounter + // HasStep checks if Step has been set in PatternFlowRSVPPathObjectsCustomTypeCounter HasStep() bool - // Count returns uint32, set in PatternFlowIcmpv6EchoSequenceNumberCounter. + // Count returns uint32, set in PatternFlowRSVPPathObjectsCustomTypeCounter. Count() uint32 - // SetCount assigns uint32 provided by user to PatternFlowIcmpv6EchoSequenceNumberCounter - SetCount(value uint32) PatternFlowIcmpv6EchoSequenceNumberCounter - // HasCount checks if Count has been set in PatternFlowIcmpv6EchoSequenceNumberCounter + // SetCount assigns uint32 provided by user to PatternFlowRSVPPathObjectsCustomTypeCounter + SetCount(value uint32) PatternFlowRSVPPathObjectsCustomTypeCounter + // HasCount checks if Count has been set in PatternFlowRSVPPathObjectsCustomTypeCounter HasCount() bool } // description is TBD // Start returns a uint32 -func (obj *patternFlowIcmpv6EchoSequenceNumberCounter) Start() uint32 { +func (obj *patternFlowRSVPPathObjectsCustomTypeCounter) Start() uint32 { return *obj.obj.Start @@ -294777,13 +340054,13 @@ func (obj *patternFlowIcmpv6EchoSequenceNumberCounter) Start() uint32 { // description is TBD // Start returns a uint32 -func (obj *patternFlowIcmpv6EchoSequenceNumberCounter) HasStart() bool { +func (obj *patternFlowRSVPPathObjectsCustomTypeCounter) HasStart() bool { return obj.obj.Start != nil } // description is TBD -// SetStart sets the uint32 value in the PatternFlowIcmpv6EchoSequenceNumberCounter object -func (obj *patternFlowIcmpv6EchoSequenceNumberCounter) SetStart(value uint32) PatternFlowIcmpv6EchoSequenceNumberCounter { +// SetStart sets the uint32 value in the PatternFlowRSVPPathObjectsCustomTypeCounter object +func (obj *patternFlowRSVPPathObjectsCustomTypeCounter) SetStart(value uint32) PatternFlowRSVPPathObjectsCustomTypeCounter { obj.obj.Start = &value return obj @@ -294791,7 +340068,7 @@ func (obj *patternFlowIcmpv6EchoSequenceNumberCounter) SetStart(value uint32) Pa // description is TBD // Step returns a uint32 -func (obj *patternFlowIcmpv6EchoSequenceNumberCounter) Step() uint32 { +func (obj *patternFlowRSVPPathObjectsCustomTypeCounter) Step() uint32 { return *obj.obj.Step @@ -294799,13 +340076,13 @@ func (obj *patternFlowIcmpv6EchoSequenceNumberCounter) Step() uint32 { // description is TBD // Step returns a uint32 -func (obj *patternFlowIcmpv6EchoSequenceNumberCounter) HasStep() bool { +func (obj *patternFlowRSVPPathObjectsCustomTypeCounter) HasStep() bool { return obj.obj.Step != nil } // description is TBD -// SetStep sets the uint32 value in the PatternFlowIcmpv6EchoSequenceNumberCounter object -func (obj *patternFlowIcmpv6EchoSequenceNumberCounter) SetStep(value uint32) PatternFlowIcmpv6EchoSequenceNumberCounter { +// SetStep sets the uint32 value in the PatternFlowRSVPPathObjectsCustomTypeCounter object +func (obj *patternFlowRSVPPathObjectsCustomTypeCounter) SetStep(value uint32) PatternFlowRSVPPathObjectsCustomTypeCounter { obj.obj.Step = &value return obj @@ -294813,7 +340090,7 @@ func (obj *patternFlowIcmpv6EchoSequenceNumberCounter) SetStep(value uint32) Pat // description is TBD // Count returns a uint32 -func (obj *patternFlowIcmpv6EchoSequenceNumberCounter) Count() uint32 { +func (obj *patternFlowRSVPPathObjectsCustomTypeCounter) Count() uint32 { return *obj.obj.Count @@ -294821,56 +340098,56 @@ func (obj *patternFlowIcmpv6EchoSequenceNumberCounter) Count() uint32 { // description is TBD // Count returns a uint32 -func (obj *patternFlowIcmpv6EchoSequenceNumberCounter) HasCount() bool { +func (obj *patternFlowRSVPPathObjectsCustomTypeCounter) HasCount() bool { return obj.obj.Count != nil } // description is TBD -// SetCount sets the uint32 value in the PatternFlowIcmpv6EchoSequenceNumberCounter object -func (obj *patternFlowIcmpv6EchoSequenceNumberCounter) SetCount(value uint32) PatternFlowIcmpv6EchoSequenceNumberCounter { +// SetCount sets the uint32 value in the PatternFlowRSVPPathObjectsCustomTypeCounter object +func (obj *patternFlowRSVPPathObjectsCustomTypeCounter) SetCount(value uint32) PatternFlowRSVPPathObjectsCustomTypeCounter { obj.obj.Count = &value return obj } -func (obj *patternFlowIcmpv6EchoSequenceNumberCounter) validateObj(vObj *validation, set_default bool) { +func (obj *patternFlowRSVPPathObjectsCustomTypeCounter) validateObj(vObj *validation, set_default bool) { if set_default { obj.setDefault() } if obj.obj.Start != nil { - if *obj.obj.Start > 65535 { + if *obj.obj.Start > 255 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowIcmpv6EchoSequenceNumberCounter.Start <= 65535 but Got %d", *obj.obj.Start)) + fmt.Sprintf("0 <= PatternFlowRSVPPathObjectsCustomTypeCounter.Start <= 255 but Got %d", *obj.obj.Start)) } } if obj.obj.Step != nil { - if *obj.obj.Step > 65535 { + if *obj.obj.Step > 255 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowIcmpv6EchoSequenceNumberCounter.Step <= 65535 but Got %d", *obj.obj.Step)) + fmt.Sprintf("0 <= PatternFlowRSVPPathObjectsCustomTypeCounter.Step <= 255 but Got %d", *obj.obj.Step)) } } if obj.obj.Count != nil { - if *obj.obj.Count > 65535 { + if *obj.obj.Count > 255 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowIcmpv6EchoSequenceNumberCounter.Count <= 65535 but Got %d", *obj.obj.Count)) + fmt.Sprintf("0 <= PatternFlowRSVPPathObjectsCustomTypeCounter.Count <= 255 but Got %d", *obj.obj.Count)) } } } -func (obj *patternFlowIcmpv6EchoSequenceNumberCounter) setDefault() { +func (obj *patternFlowRSVPPathObjectsCustomTypeCounter) setDefault() { if obj.obj.Start == nil { obj.SetStart(0) } @@ -294883,29 +340160,31 @@ func (obj *patternFlowIcmpv6EchoSequenceNumberCounter) setDefault() { } -// ***** PatternFlowIcmpv6EchoSequenceNumberMetricTag ***** -type patternFlowIcmpv6EchoSequenceNumberMetricTag struct { +// ***** PatternFlowRSVPPathSessionLspTunnelIpv4Ipv4TunnelEndPointAddress ***** +type patternFlowRSVPPathSessionLspTunnelIpv4Ipv4TunnelEndPointAddress struct { validation - obj *otg.PatternFlowIcmpv6EchoSequenceNumberMetricTag + obj *otg.PatternFlowRSVPPathSessionLspTunnelIpv4Ipv4TunnelEndPointAddress + incrementHolder PatternFlowRSVPPathSessionLspTunnelIpv4Ipv4TunnelEndPointAddressCounter + decrementHolder PatternFlowRSVPPathSessionLspTunnelIpv4Ipv4TunnelEndPointAddressCounter } -func NewPatternFlowIcmpv6EchoSequenceNumberMetricTag() PatternFlowIcmpv6EchoSequenceNumberMetricTag { - obj := patternFlowIcmpv6EchoSequenceNumberMetricTag{obj: &otg.PatternFlowIcmpv6EchoSequenceNumberMetricTag{}} +func NewPatternFlowRSVPPathSessionLspTunnelIpv4Ipv4TunnelEndPointAddress() PatternFlowRSVPPathSessionLspTunnelIpv4Ipv4TunnelEndPointAddress { + obj := patternFlowRSVPPathSessionLspTunnelIpv4Ipv4TunnelEndPointAddress{obj: &otg.PatternFlowRSVPPathSessionLspTunnelIpv4Ipv4TunnelEndPointAddress{}} obj.setDefault() return &obj } -func (obj *patternFlowIcmpv6EchoSequenceNumberMetricTag) Msg() *otg.PatternFlowIcmpv6EchoSequenceNumberMetricTag { +func (obj *patternFlowRSVPPathSessionLspTunnelIpv4Ipv4TunnelEndPointAddress) Msg() *otg.PatternFlowRSVPPathSessionLspTunnelIpv4Ipv4TunnelEndPointAddress { return obj.obj } -func (obj *patternFlowIcmpv6EchoSequenceNumberMetricTag) SetMsg(msg *otg.PatternFlowIcmpv6EchoSequenceNumberMetricTag) PatternFlowIcmpv6EchoSequenceNumberMetricTag { - +func (obj *patternFlowRSVPPathSessionLspTunnelIpv4Ipv4TunnelEndPointAddress) SetMsg(msg *otg.PatternFlowRSVPPathSessionLspTunnelIpv4Ipv4TunnelEndPointAddress) PatternFlowRSVPPathSessionLspTunnelIpv4Ipv4TunnelEndPointAddress { + obj.setNil() proto.Merge(obj.obj, msg) return obj } -func (obj *patternFlowIcmpv6EchoSequenceNumberMetricTag) ToProto() (*otg.PatternFlowIcmpv6EchoSequenceNumberMetricTag, error) { +func (obj *patternFlowRSVPPathSessionLspTunnelIpv4Ipv4TunnelEndPointAddress) ToProto() (*otg.PatternFlowRSVPPathSessionLspTunnelIpv4Ipv4TunnelEndPointAddress, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -294913,7 +340192,7 @@ func (obj *patternFlowIcmpv6EchoSequenceNumberMetricTag) ToProto() (*otg.Pattern return obj.Msg(), nil } -func (obj *patternFlowIcmpv6EchoSequenceNumberMetricTag) FromProto(msg *otg.PatternFlowIcmpv6EchoSequenceNumberMetricTag) (PatternFlowIcmpv6EchoSequenceNumberMetricTag, error) { +func (obj *patternFlowRSVPPathSessionLspTunnelIpv4Ipv4TunnelEndPointAddress) FromProto(msg *otg.PatternFlowRSVPPathSessionLspTunnelIpv4Ipv4TunnelEndPointAddress) (PatternFlowRSVPPathSessionLspTunnelIpv4Ipv4TunnelEndPointAddress, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -294922,7 +340201,7 @@ func (obj *patternFlowIcmpv6EchoSequenceNumberMetricTag) FromProto(msg *otg.Patt return newObj, nil } -func (obj *patternFlowIcmpv6EchoSequenceNumberMetricTag) ToPbText() (string, error) { +func (obj *patternFlowRSVPPathSessionLspTunnelIpv4Ipv4TunnelEndPointAddress) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -294934,12 +340213,12 @@ func (obj *patternFlowIcmpv6EchoSequenceNumberMetricTag) ToPbText() (string, err return string(protoMarshal), nil } -func (obj *patternFlowIcmpv6EchoSequenceNumberMetricTag) FromPbText(value string) error { +func (obj *patternFlowRSVPPathSessionLspTunnelIpv4Ipv4TunnelEndPointAddress) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj } - + obj.setNil() vErr := obj.validateToAndFrom() if vErr != nil { return vErr @@ -294947,7 +340226,7 @@ func (obj *patternFlowIcmpv6EchoSequenceNumberMetricTag) FromPbText(value string return retObj } -func (obj *patternFlowIcmpv6EchoSequenceNumberMetricTag) ToYaml() (string, error) { +func (obj *patternFlowRSVPPathSessionLspTunnelIpv4Ipv4TunnelEndPointAddress) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -294968,7 +340247,7 @@ func (obj *patternFlowIcmpv6EchoSequenceNumberMetricTag) ToYaml() (string, error return string(data), nil } -func (obj *patternFlowIcmpv6EchoSequenceNumberMetricTag) FromYaml(value string) error { +func (obj *patternFlowRSVPPathSessionLspTunnelIpv4Ipv4TunnelEndPointAddress) FromYaml(value string) error { if value == "" { value = "{}" } @@ -294985,7 +340264,7 @@ func (obj *patternFlowIcmpv6EchoSequenceNumberMetricTag) FromYaml(value string) return fmt.Errorf("unmarshal error %s", strings.Replace( uError.Error(), "\u00a0", " ", -1)[7:]) } - + obj.setNil() vErr := obj.validateToAndFrom() if vErr != nil { return vErr @@ -294993,7 +340272,7 @@ func (obj *patternFlowIcmpv6EchoSequenceNumberMetricTag) FromYaml(value string) return nil } -func (obj *patternFlowIcmpv6EchoSequenceNumberMetricTag) ToJson() (string, error) { +func (obj *patternFlowRSVPPathSessionLspTunnelIpv4Ipv4TunnelEndPointAddress) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -295011,7 +340290,7 @@ func (obj *patternFlowIcmpv6EchoSequenceNumberMetricTag) ToJson() (string, error return string(data), nil } -func (obj *patternFlowIcmpv6EchoSequenceNumberMetricTag) FromJson(value string) error { +func (obj *patternFlowRSVPPathSessionLspTunnelIpv4Ipv4TunnelEndPointAddress) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -295024,7 +340303,7 @@ func (obj *patternFlowIcmpv6EchoSequenceNumberMetricTag) FromJson(value string) return fmt.Errorf("unmarshal error %s", strings.Replace( uError.Error(), "\u00a0", " ", -1)[7:]) } - + obj.setNil() err := obj.validateToAndFrom() if err != nil { return err @@ -295032,19 +340311,19 @@ func (obj *patternFlowIcmpv6EchoSequenceNumberMetricTag) FromJson(value string) return nil } -func (obj *patternFlowIcmpv6EchoSequenceNumberMetricTag) validateToAndFrom() error { +func (obj *patternFlowRSVPPathSessionLspTunnelIpv4Ipv4TunnelEndPointAddress) validateToAndFrom() error { // emptyVars() obj.validateObj(&obj.validation, true) return obj.validationResult() } -func (obj *patternFlowIcmpv6EchoSequenceNumberMetricTag) Validate() error { +func (obj *patternFlowRSVPPathSessionLspTunnelIpv4Ipv4TunnelEndPointAddress) Validate() error { // emptyVars() obj.validateObj(&obj.validation, false) return obj.validationResult() } -func (obj *patternFlowIcmpv6EchoSequenceNumberMetricTag) String() string { +func (obj *patternFlowRSVPPathSessionLspTunnelIpv4Ipv4TunnelEndPointAddress) String() string { str, err := obj.ToYaml() if err != nil { return err.Error() @@ -295052,12 +340331,12 @@ func (obj *patternFlowIcmpv6EchoSequenceNumberMetricTag) String() string { return str } -func (obj *patternFlowIcmpv6EchoSequenceNumberMetricTag) Clone() (PatternFlowIcmpv6EchoSequenceNumberMetricTag, error) { +func (obj *patternFlowRSVPPathSessionLspTunnelIpv4Ipv4TunnelEndPointAddress) Clone() (PatternFlowRSVPPathSessionLspTunnelIpv4Ipv4TunnelEndPointAddress, error) { vErr := obj.Validate() if vErr != nil { return nil, vErr } - newObj := NewPatternFlowIcmpv6EchoSequenceNumberMetricTag() + newObj := NewPatternFlowRSVPPathSessionLspTunnelIpv4Ipv4TunnelEndPointAddress() data, err := proto.Marshal(obj.Msg()) if err != nil { return nil, err @@ -295069,183 +340348,316 @@ func (obj *patternFlowIcmpv6EchoSequenceNumberMetricTag) Clone() (PatternFlowIcm return newObj, nil } -// PatternFlowIcmpv6EchoSequenceNumberMetricTag is metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. -type PatternFlowIcmpv6EchoSequenceNumberMetricTag interface { +func (obj *patternFlowRSVPPathSessionLspTunnelIpv4Ipv4TunnelEndPointAddress) setNil() { + obj.incrementHolder = nil + obj.decrementHolder = nil + obj.validationErrors = nil + obj.warnings = nil + obj.constraints = make(map[string]map[string]Constraints) +} + +// PatternFlowRSVPPathSessionLspTunnelIpv4Ipv4TunnelEndPointAddress is iPv4 address of the egress node for the tunnel. +type PatternFlowRSVPPathSessionLspTunnelIpv4Ipv4TunnelEndPointAddress interface { Validation - // Msg marshals PatternFlowIcmpv6EchoSequenceNumberMetricTag to protobuf object *otg.PatternFlowIcmpv6EchoSequenceNumberMetricTag + // Msg marshals PatternFlowRSVPPathSessionLspTunnelIpv4Ipv4TunnelEndPointAddress to protobuf object *otg.PatternFlowRSVPPathSessionLspTunnelIpv4Ipv4TunnelEndPointAddress // and doesn't set defaults - Msg() *otg.PatternFlowIcmpv6EchoSequenceNumberMetricTag - // SetMsg unmarshals PatternFlowIcmpv6EchoSequenceNumberMetricTag from protobuf object *otg.PatternFlowIcmpv6EchoSequenceNumberMetricTag + Msg() *otg.PatternFlowRSVPPathSessionLspTunnelIpv4Ipv4TunnelEndPointAddress + // SetMsg unmarshals PatternFlowRSVPPathSessionLspTunnelIpv4Ipv4TunnelEndPointAddress from protobuf object *otg.PatternFlowRSVPPathSessionLspTunnelIpv4Ipv4TunnelEndPointAddress // and doesn't set defaults - SetMsg(*otg.PatternFlowIcmpv6EchoSequenceNumberMetricTag) PatternFlowIcmpv6EchoSequenceNumberMetricTag - // ToProto marshals PatternFlowIcmpv6EchoSequenceNumberMetricTag to protobuf object *otg.PatternFlowIcmpv6EchoSequenceNumberMetricTag - ToProto() (*otg.PatternFlowIcmpv6EchoSequenceNumberMetricTag, error) - // ToPbText marshals PatternFlowIcmpv6EchoSequenceNumberMetricTag to protobuf text + SetMsg(*otg.PatternFlowRSVPPathSessionLspTunnelIpv4Ipv4TunnelEndPointAddress) PatternFlowRSVPPathSessionLspTunnelIpv4Ipv4TunnelEndPointAddress + // ToProto marshals PatternFlowRSVPPathSessionLspTunnelIpv4Ipv4TunnelEndPointAddress to protobuf object *otg.PatternFlowRSVPPathSessionLspTunnelIpv4Ipv4TunnelEndPointAddress + ToProto() (*otg.PatternFlowRSVPPathSessionLspTunnelIpv4Ipv4TunnelEndPointAddress, error) + // ToPbText marshals PatternFlowRSVPPathSessionLspTunnelIpv4Ipv4TunnelEndPointAddress to protobuf text ToPbText() (string, error) - // ToYaml marshals PatternFlowIcmpv6EchoSequenceNumberMetricTag to YAML text + // ToYaml marshals PatternFlowRSVPPathSessionLspTunnelIpv4Ipv4TunnelEndPointAddress to YAML text ToYaml() (string, error) - // ToJson marshals PatternFlowIcmpv6EchoSequenceNumberMetricTag to JSON text + // ToJson marshals PatternFlowRSVPPathSessionLspTunnelIpv4Ipv4TunnelEndPointAddress to JSON text ToJson() (string, error) - // FromProto unmarshals PatternFlowIcmpv6EchoSequenceNumberMetricTag from protobuf object *otg.PatternFlowIcmpv6EchoSequenceNumberMetricTag - FromProto(msg *otg.PatternFlowIcmpv6EchoSequenceNumberMetricTag) (PatternFlowIcmpv6EchoSequenceNumberMetricTag, error) - // FromPbText unmarshals PatternFlowIcmpv6EchoSequenceNumberMetricTag from protobuf text + // FromProto unmarshals PatternFlowRSVPPathSessionLspTunnelIpv4Ipv4TunnelEndPointAddress from protobuf object *otg.PatternFlowRSVPPathSessionLspTunnelIpv4Ipv4TunnelEndPointAddress + FromProto(msg *otg.PatternFlowRSVPPathSessionLspTunnelIpv4Ipv4TunnelEndPointAddress) (PatternFlowRSVPPathSessionLspTunnelIpv4Ipv4TunnelEndPointAddress, error) + // FromPbText unmarshals PatternFlowRSVPPathSessionLspTunnelIpv4Ipv4TunnelEndPointAddress from protobuf text FromPbText(value string) error - // FromYaml unmarshals PatternFlowIcmpv6EchoSequenceNumberMetricTag from YAML text + // FromYaml unmarshals PatternFlowRSVPPathSessionLspTunnelIpv4Ipv4TunnelEndPointAddress from YAML text FromYaml(value string) error - // FromJson unmarshals PatternFlowIcmpv6EchoSequenceNumberMetricTag from JSON text + // FromJson unmarshals PatternFlowRSVPPathSessionLspTunnelIpv4Ipv4TunnelEndPointAddress from JSON text FromJson(value string) error - // Validate validates PatternFlowIcmpv6EchoSequenceNumberMetricTag + // Validate validates PatternFlowRSVPPathSessionLspTunnelIpv4Ipv4TunnelEndPointAddress Validate() error // A stringer function String() string // Clones the object - Clone() (PatternFlowIcmpv6EchoSequenceNumberMetricTag, error) + Clone() (PatternFlowRSVPPathSessionLspTunnelIpv4Ipv4TunnelEndPointAddress, error) validateToAndFrom() error validateObj(vObj *validation, set_default bool) setDefault() - // Name returns string, set in PatternFlowIcmpv6EchoSequenceNumberMetricTag. - Name() string - // SetName assigns string provided by user to PatternFlowIcmpv6EchoSequenceNumberMetricTag - SetName(value string) PatternFlowIcmpv6EchoSequenceNumberMetricTag - // Offset returns uint32, set in PatternFlowIcmpv6EchoSequenceNumberMetricTag. - Offset() uint32 - // SetOffset assigns uint32 provided by user to PatternFlowIcmpv6EchoSequenceNumberMetricTag - SetOffset(value uint32) PatternFlowIcmpv6EchoSequenceNumberMetricTag - // HasOffset checks if Offset has been set in PatternFlowIcmpv6EchoSequenceNumberMetricTag - HasOffset() bool - // Length returns uint32, set in PatternFlowIcmpv6EchoSequenceNumberMetricTag. - Length() uint32 - // SetLength assigns uint32 provided by user to PatternFlowIcmpv6EchoSequenceNumberMetricTag - SetLength(value uint32) PatternFlowIcmpv6EchoSequenceNumberMetricTag - // HasLength checks if Length has been set in PatternFlowIcmpv6EchoSequenceNumberMetricTag - HasLength() bool + // Choice returns PatternFlowRSVPPathSessionLspTunnelIpv4Ipv4TunnelEndPointAddressChoiceEnum, set in PatternFlowRSVPPathSessionLspTunnelIpv4Ipv4TunnelEndPointAddress + Choice() PatternFlowRSVPPathSessionLspTunnelIpv4Ipv4TunnelEndPointAddressChoiceEnum + // SetChoice assigns PatternFlowRSVPPathSessionLspTunnelIpv4Ipv4TunnelEndPointAddressChoiceEnum provided by user to PatternFlowRSVPPathSessionLspTunnelIpv4Ipv4TunnelEndPointAddress + SetChoice(value PatternFlowRSVPPathSessionLspTunnelIpv4Ipv4TunnelEndPointAddressChoiceEnum) PatternFlowRSVPPathSessionLspTunnelIpv4Ipv4TunnelEndPointAddress + // HasChoice checks if Choice has been set in PatternFlowRSVPPathSessionLspTunnelIpv4Ipv4TunnelEndPointAddress + HasChoice() bool + // Value returns string, set in PatternFlowRSVPPathSessionLspTunnelIpv4Ipv4TunnelEndPointAddress. + Value() string + // SetValue assigns string provided by user to PatternFlowRSVPPathSessionLspTunnelIpv4Ipv4TunnelEndPointAddress + SetValue(value string) PatternFlowRSVPPathSessionLspTunnelIpv4Ipv4TunnelEndPointAddress + // HasValue checks if Value has been set in PatternFlowRSVPPathSessionLspTunnelIpv4Ipv4TunnelEndPointAddress + HasValue() bool + // Values returns []string, set in PatternFlowRSVPPathSessionLspTunnelIpv4Ipv4TunnelEndPointAddress. + Values() []string + // SetValues assigns []string provided by user to PatternFlowRSVPPathSessionLspTunnelIpv4Ipv4TunnelEndPointAddress + SetValues(value []string) PatternFlowRSVPPathSessionLspTunnelIpv4Ipv4TunnelEndPointAddress + // Increment returns PatternFlowRSVPPathSessionLspTunnelIpv4Ipv4TunnelEndPointAddressCounter, set in PatternFlowRSVPPathSessionLspTunnelIpv4Ipv4TunnelEndPointAddress. + // PatternFlowRSVPPathSessionLspTunnelIpv4Ipv4TunnelEndPointAddressCounter is ipv4 counter pattern + Increment() PatternFlowRSVPPathSessionLspTunnelIpv4Ipv4TunnelEndPointAddressCounter + // SetIncrement assigns PatternFlowRSVPPathSessionLspTunnelIpv4Ipv4TunnelEndPointAddressCounter provided by user to PatternFlowRSVPPathSessionLspTunnelIpv4Ipv4TunnelEndPointAddress. + // PatternFlowRSVPPathSessionLspTunnelIpv4Ipv4TunnelEndPointAddressCounter is ipv4 counter pattern + SetIncrement(value PatternFlowRSVPPathSessionLspTunnelIpv4Ipv4TunnelEndPointAddressCounter) PatternFlowRSVPPathSessionLspTunnelIpv4Ipv4TunnelEndPointAddress + // HasIncrement checks if Increment has been set in PatternFlowRSVPPathSessionLspTunnelIpv4Ipv4TunnelEndPointAddress + HasIncrement() bool + // Decrement returns PatternFlowRSVPPathSessionLspTunnelIpv4Ipv4TunnelEndPointAddressCounter, set in PatternFlowRSVPPathSessionLspTunnelIpv4Ipv4TunnelEndPointAddress. + // PatternFlowRSVPPathSessionLspTunnelIpv4Ipv4TunnelEndPointAddressCounter is ipv4 counter pattern + Decrement() PatternFlowRSVPPathSessionLspTunnelIpv4Ipv4TunnelEndPointAddressCounter + // SetDecrement assigns PatternFlowRSVPPathSessionLspTunnelIpv4Ipv4TunnelEndPointAddressCounter provided by user to PatternFlowRSVPPathSessionLspTunnelIpv4Ipv4TunnelEndPointAddress. + // PatternFlowRSVPPathSessionLspTunnelIpv4Ipv4TunnelEndPointAddressCounter is ipv4 counter pattern + SetDecrement(value PatternFlowRSVPPathSessionLspTunnelIpv4Ipv4TunnelEndPointAddressCounter) PatternFlowRSVPPathSessionLspTunnelIpv4Ipv4TunnelEndPointAddress + // HasDecrement checks if Decrement has been set in PatternFlowRSVPPathSessionLspTunnelIpv4Ipv4TunnelEndPointAddress + HasDecrement() bool + setNil() } -// Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field -// Name returns a string -func (obj *patternFlowIcmpv6EchoSequenceNumberMetricTag) Name() string { +type PatternFlowRSVPPathSessionLspTunnelIpv4Ipv4TunnelEndPointAddressChoiceEnum string - return *obj.obj.Name +// Enum of Choice on PatternFlowRSVPPathSessionLspTunnelIpv4Ipv4TunnelEndPointAddress +var PatternFlowRSVPPathSessionLspTunnelIpv4Ipv4TunnelEndPointAddressChoice = struct { + VALUE PatternFlowRSVPPathSessionLspTunnelIpv4Ipv4TunnelEndPointAddressChoiceEnum + VALUES PatternFlowRSVPPathSessionLspTunnelIpv4Ipv4TunnelEndPointAddressChoiceEnum + INCREMENT PatternFlowRSVPPathSessionLspTunnelIpv4Ipv4TunnelEndPointAddressChoiceEnum + DECREMENT PatternFlowRSVPPathSessionLspTunnelIpv4Ipv4TunnelEndPointAddressChoiceEnum +}{ + VALUE: PatternFlowRSVPPathSessionLspTunnelIpv4Ipv4TunnelEndPointAddressChoiceEnum("value"), + VALUES: PatternFlowRSVPPathSessionLspTunnelIpv4Ipv4TunnelEndPointAddressChoiceEnum("values"), + INCREMENT: PatternFlowRSVPPathSessionLspTunnelIpv4Ipv4TunnelEndPointAddressChoiceEnum("increment"), + DECREMENT: PatternFlowRSVPPathSessionLspTunnelIpv4Ipv4TunnelEndPointAddressChoiceEnum("decrement"), +} + +func (obj *patternFlowRSVPPathSessionLspTunnelIpv4Ipv4TunnelEndPointAddress) Choice() PatternFlowRSVPPathSessionLspTunnelIpv4Ipv4TunnelEndPointAddressChoiceEnum { + return PatternFlowRSVPPathSessionLspTunnelIpv4Ipv4TunnelEndPointAddressChoiceEnum(obj.obj.Choice.Enum().String()) +} + +// description is TBD +// Choice returns a string +func (obj *patternFlowRSVPPathSessionLspTunnelIpv4Ipv4TunnelEndPointAddress) HasChoice() bool { + return obj.obj.Choice != nil +} + +func (obj *patternFlowRSVPPathSessionLspTunnelIpv4Ipv4TunnelEndPointAddress) SetChoice(value PatternFlowRSVPPathSessionLspTunnelIpv4Ipv4TunnelEndPointAddressChoiceEnum) PatternFlowRSVPPathSessionLspTunnelIpv4Ipv4TunnelEndPointAddress { + intValue, ok := otg.PatternFlowRSVPPathSessionLspTunnelIpv4Ipv4TunnelEndPointAddress_Choice_Enum_value[string(value)] + if !ok { + obj.validationErrors = append(obj.validationErrors, fmt.Sprintf( + "%s is not a valid choice on PatternFlowRSVPPathSessionLspTunnelIpv4Ipv4TunnelEndPointAddressChoiceEnum", string(value))) + return obj + } + enumValue := otg.PatternFlowRSVPPathSessionLspTunnelIpv4Ipv4TunnelEndPointAddress_Choice_Enum(intValue) + obj.obj.Choice = &enumValue + obj.obj.Decrement = nil + obj.decrementHolder = nil + obj.obj.Increment = nil + obj.incrementHolder = nil + obj.obj.Values = nil + obj.obj.Value = nil + + if value == PatternFlowRSVPPathSessionLspTunnelIpv4Ipv4TunnelEndPointAddressChoice.VALUE { + defaultValue := "0.0.0.0" + obj.obj.Value = &defaultValue + } + + if value == PatternFlowRSVPPathSessionLspTunnelIpv4Ipv4TunnelEndPointAddressChoice.VALUES { + defaultValue := []string{"0.0.0.0"} + obj.obj.Values = defaultValue + } + + if value == PatternFlowRSVPPathSessionLspTunnelIpv4Ipv4TunnelEndPointAddressChoice.INCREMENT { + obj.obj.Increment = NewPatternFlowRSVPPathSessionLspTunnelIpv4Ipv4TunnelEndPointAddressCounter().Msg() + } + + if value == PatternFlowRSVPPathSessionLspTunnelIpv4Ipv4TunnelEndPointAddressChoice.DECREMENT { + obj.obj.Decrement = NewPatternFlowRSVPPathSessionLspTunnelIpv4Ipv4TunnelEndPointAddressCounter().Msg() + } + + return obj +} + +// description is TBD +// Value returns a string +func (obj *patternFlowRSVPPathSessionLspTunnelIpv4Ipv4TunnelEndPointAddress) Value() string { + + if obj.obj.Value == nil { + obj.SetChoice(PatternFlowRSVPPathSessionLspTunnelIpv4Ipv4TunnelEndPointAddressChoice.VALUE) + } + + return *obj.obj.Value + +} + +// description is TBD +// Value returns a string +func (obj *patternFlowRSVPPathSessionLspTunnelIpv4Ipv4TunnelEndPointAddress) HasValue() bool { + return obj.obj.Value != nil +} + +// description is TBD +// SetValue sets the string value in the PatternFlowRSVPPathSessionLspTunnelIpv4Ipv4TunnelEndPointAddress object +func (obj *patternFlowRSVPPathSessionLspTunnelIpv4Ipv4TunnelEndPointAddress) SetValue(value string) PatternFlowRSVPPathSessionLspTunnelIpv4Ipv4TunnelEndPointAddress { + obj.SetChoice(PatternFlowRSVPPathSessionLspTunnelIpv4Ipv4TunnelEndPointAddressChoice.VALUE) + obj.obj.Value = &value + return obj +} +// description is TBD +// Values returns a []string +func (obj *patternFlowRSVPPathSessionLspTunnelIpv4Ipv4TunnelEndPointAddress) Values() []string { + if obj.obj.Values == nil { + obj.SetValues([]string{"0.0.0.0"}) + } + return obj.obj.Values } -// Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field -// SetName sets the string value in the PatternFlowIcmpv6EchoSequenceNumberMetricTag object -func (obj *patternFlowIcmpv6EchoSequenceNumberMetricTag) SetName(value string) PatternFlowIcmpv6EchoSequenceNumberMetricTag { +// description is TBD +// SetValues sets the []string value in the PatternFlowRSVPPathSessionLspTunnelIpv4Ipv4TunnelEndPointAddress object +func (obj *patternFlowRSVPPathSessionLspTunnelIpv4Ipv4TunnelEndPointAddress) SetValues(value []string) PatternFlowRSVPPathSessionLspTunnelIpv4Ipv4TunnelEndPointAddress { + obj.SetChoice(PatternFlowRSVPPathSessionLspTunnelIpv4Ipv4TunnelEndPointAddressChoice.VALUES) + if obj.obj.Values == nil { + obj.obj.Values = make([]string, 0) + } + obj.obj.Values = value - obj.obj.Name = &value return obj } -// Offset in bits relative to start of corresponding header field -// Offset returns a uint32 -func (obj *patternFlowIcmpv6EchoSequenceNumberMetricTag) Offset() uint32 { - - return *obj.obj.Offset - +// description is TBD +// Increment returns a PatternFlowRSVPPathSessionLspTunnelIpv4Ipv4TunnelEndPointAddressCounter +func (obj *patternFlowRSVPPathSessionLspTunnelIpv4Ipv4TunnelEndPointAddress) Increment() PatternFlowRSVPPathSessionLspTunnelIpv4Ipv4TunnelEndPointAddressCounter { + if obj.obj.Increment == nil { + obj.SetChoice(PatternFlowRSVPPathSessionLspTunnelIpv4Ipv4TunnelEndPointAddressChoice.INCREMENT) + } + if obj.incrementHolder == nil { + obj.incrementHolder = &patternFlowRSVPPathSessionLspTunnelIpv4Ipv4TunnelEndPointAddressCounter{obj: obj.obj.Increment} + } + return obj.incrementHolder } -// Offset in bits relative to start of corresponding header field -// Offset returns a uint32 -func (obj *patternFlowIcmpv6EchoSequenceNumberMetricTag) HasOffset() bool { - return obj.obj.Offset != nil +// description is TBD +// Increment returns a PatternFlowRSVPPathSessionLspTunnelIpv4Ipv4TunnelEndPointAddressCounter +func (obj *patternFlowRSVPPathSessionLspTunnelIpv4Ipv4TunnelEndPointAddress) HasIncrement() bool { + return obj.obj.Increment != nil } -// Offset in bits relative to start of corresponding header field -// SetOffset sets the uint32 value in the PatternFlowIcmpv6EchoSequenceNumberMetricTag object -func (obj *patternFlowIcmpv6EchoSequenceNumberMetricTag) SetOffset(value uint32) PatternFlowIcmpv6EchoSequenceNumberMetricTag { +// description is TBD +// SetIncrement sets the PatternFlowRSVPPathSessionLspTunnelIpv4Ipv4TunnelEndPointAddressCounter value in the PatternFlowRSVPPathSessionLspTunnelIpv4Ipv4TunnelEndPointAddress object +func (obj *patternFlowRSVPPathSessionLspTunnelIpv4Ipv4TunnelEndPointAddress) SetIncrement(value PatternFlowRSVPPathSessionLspTunnelIpv4Ipv4TunnelEndPointAddressCounter) PatternFlowRSVPPathSessionLspTunnelIpv4Ipv4TunnelEndPointAddress { + obj.SetChoice(PatternFlowRSVPPathSessionLspTunnelIpv4Ipv4TunnelEndPointAddressChoice.INCREMENT) + obj.incrementHolder = nil + obj.obj.Increment = value.Msg() - obj.obj.Offset = &value return obj } -// Number of bits to track for metrics starting from configured offset of corresponding header field -// Length returns a uint32 -func (obj *patternFlowIcmpv6EchoSequenceNumberMetricTag) Length() uint32 { - - return *obj.obj.Length - +// description is TBD +// Decrement returns a PatternFlowRSVPPathSessionLspTunnelIpv4Ipv4TunnelEndPointAddressCounter +func (obj *patternFlowRSVPPathSessionLspTunnelIpv4Ipv4TunnelEndPointAddress) Decrement() PatternFlowRSVPPathSessionLspTunnelIpv4Ipv4TunnelEndPointAddressCounter { + if obj.obj.Decrement == nil { + obj.SetChoice(PatternFlowRSVPPathSessionLspTunnelIpv4Ipv4TunnelEndPointAddressChoice.DECREMENT) + } + if obj.decrementHolder == nil { + obj.decrementHolder = &patternFlowRSVPPathSessionLspTunnelIpv4Ipv4TunnelEndPointAddressCounter{obj: obj.obj.Decrement} + } + return obj.decrementHolder } -// Number of bits to track for metrics starting from configured offset of corresponding header field -// Length returns a uint32 -func (obj *patternFlowIcmpv6EchoSequenceNumberMetricTag) HasLength() bool { - return obj.obj.Length != nil +// description is TBD +// Decrement returns a PatternFlowRSVPPathSessionLspTunnelIpv4Ipv4TunnelEndPointAddressCounter +func (obj *patternFlowRSVPPathSessionLspTunnelIpv4Ipv4TunnelEndPointAddress) HasDecrement() bool { + return obj.obj.Decrement != nil } -// Number of bits to track for metrics starting from configured offset of corresponding header field -// SetLength sets the uint32 value in the PatternFlowIcmpv6EchoSequenceNumberMetricTag object -func (obj *patternFlowIcmpv6EchoSequenceNumberMetricTag) SetLength(value uint32) PatternFlowIcmpv6EchoSequenceNumberMetricTag { +// description is TBD +// SetDecrement sets the PatternFlowRSVPPathSessionLspTunnelIpv4Ipv4TunnelEndPointAddressCounter value in the PatternFlowRSVPPathSessionLspTunnelIpv4Ipv4TunnelEndPointAddress object +func (obj *patternFlowRSVPPathSessionLspTunnelIpv4Ipv4TunnelEndPointAddress) SetDecrement(value PatternFlowRSVPPathSessionLspTunnelIpv4Ipv4TunnelEndPointAddressCounter) PatternFlowRSVPPathSessionLspTunnelIpv4Ipv4TunnelEndPointAddress { + obj.SetChoice(PatternFlowRSVPPathSessionLspTunnelIpv4Ipv4TunnelEndPointAddressChoice.DECREMENT) + obj.decrementHolder = nil + obj.obj.Decrement = value.Msg() - obj.obj.Length = &value return obj } -func (obj *patternFlowIcmpv6EchoSequenceNumberMetricTag) validateObj(vObj *validation, set_default bool) { +func (obj *patternFlowRSVPPathSessionLspTunnelIpv4Ipv4TunnelEndPointAddress) validateObj(vObj *validation, set_default bool) { if set_default { obj.setDefault() } - // Name is required - if obj.obj.Name == nil { - vObj.validationErrors = append(vObj.validationErrors, "Name is required field on interface PatternFlowIcmpv6EchoSequenceNumberMetricTag") + if obj.obj.Value != nil { + + err := obj.validateIpv4(obj.Value()) + if err != nil { + vObj.validationErrors = append(vObj.validationErrors, fmt.Sprintf("%s %s", err.Error(), "on PatternFlowRSVPPathSessionLspTunnelIpv4Ipv4TunnelEndPointAddress.Value")) + } + } - if obj.obj.Offset != nil { + if obj.obj.Values != nil { - if *obj.obj.Offset > 15 { - vObj.validationErrors = append( - vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowIcmpv6EchoSequenceNumberMetricTag.Offset <= 15 but Got %d", *obj.obj.Offset)) + err := obj.validateIpv4Slice(obj.Values()) + if err != nil { + vObj.validationErrors = append(vObj.validationErrors, fmt.Sprintf("%s %s", err.Error(), "on PatternFlowRSVPPathSessionLspTunnelIpv4Ipv4TunnelEndPointAddress.Values")) } } - if obj.obj.Length != nil { + if obj.obj.Increment != nil { - if *obj.obj.Length < 1 || *obj.obj.Length > 16 { - vObj.validationErrors = append( - vObj.validationErrors, - fmt.Sprintf("1 <= PatternFlowIcmpv6EchoSequenceNumberMetricTag.Length <= 16 but Got %d", *obj.obj.Length)) - } + obj.Increment().validateObj(vObj, set_default) + } + if obj.obj.Decrement != nil { + + obj.Decrement().validateObj(vObj, set_default) } } -func (obj *patternFlowIcmpv6EchoSequenceNumberMetricTag) setDefault() { - if obj.obj.Offset == nil { - obj.SetOffset(0) - } - if obj.obj.Length == nil { - obj.SetLength(16) +func (obj *patternFlowRSVPPathSessionLspTunnelIpv4Ipv4TunnelEndPointAddress) setDefault() { + if obj.obj.Choice == nil { + obj.SetChoice(PatternFlowRSVPPathSessionLspTunnelIpv4Ipv4TunnelEndPointAddressChoice.VALUE) + } } -// ***** ActionResponseProtocolIpv4PingResponse ***** -type actionResponseProtocolIpv4PingResponse struct { +// ***** PatternFlowRSVPPathSessionLspTunnelIpv4Reserved ***** +type patternFlowRSVPPathSessionLspTunnelIpv4Reserved struct { validation - obj *otg.ActionResponseProtocolIpv4PingResponse + obj *otg.PatternFlowRSVPPathSessionLspTunnelIpv4Reserved + incrementHolder PatternFlowRSVPPathSessionLspTunnelIpv4ReservedCounter + decrementHolder PatternFlowRSVPPathSessionLspTunnelIpv4ReservedCounter } -func NewActionResponseProtocolIpv4PingResponse() ActionResponseProtocolIpv4PingResponse { - obj := actionResponseProtocolIpv4PingResponse{obj: &otg.ActionResponseProtocolIpv4PingResponse{}} +func NewPatternFlowRSVPPathSessionLspTunnelIpv4Reserved() PatternFlowRSVPPathSessionLspTunnelIpv4Reserved { + obj := patternFlowRSVPPathSessionLspTunnelIpv4Reserved{obj: &otg.PatternFlowRSVPPathSessionLspTunnelIpv4Reserved{}} obj.setDefault() return &obj } -func (obj *actionResponseProtocolIpv4PingResponse) Msg() *otg.ActionResponseProtocolIpv4PingResponse { +func (obj *patternFlowRSVPPathSessionLspTunnelIpv4Reserved) Msg() *otg.PatternFlowRSVPPathSessionLspTunnelIpv4Reserved { return obj.obj } -func (obj *actionResponseProtocolIpv4PingResponse) SetMsg(msg *otg.ActionResponseProtocolIpv4PingResponse) ActionResponseProtocolIpv4PingResponse { - +func (obj *patternFlowRSVPPathSessionLspTunnelIpv4Reserved) SetMsg(msg *otg.PatternFlowRSVPPathSessionLspTunnelIpv4Reserved) PatternFlowRSVPPathSessionLspTunnelIpv4Reserved { + obj.setNil() proto.Merge(obj.obj, msg) return obj } -func (obj *actionResponseProtocolIpv4PingResponse) ToProto() (*otg.ActionResponseProtocolIpv4PingResponse, error) { +func (obj *patternFlowRSVPPathSessionLspTunnelIpv4Reserved) ToProto() (*otg.PatternFlowRSVPPathSessionLspTunnelIpv4Reserved, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -295253,7 +340665,7 @@ func (obj *actionResponseProtocolIpv4PingResponse) ToProto() (*otg.ActionRespons return obj.Msg(), nil } -func (obj *actionResponseProtocolIpv4PingResponse) FromProto(msg *otg.ActionResponseProtocolIpv4PingResponse) (ActionResponseProtocolIpv4PingResponse, error) { +func (obj *patternFlowRSVPPathSessionLspTunnelIpv4Reserved) FromProto(msg *otg.PatternFlowRSVPPathSessionLspTunnelIpv4Reserved) (PatternFlowRSVPPathSessionLspTunnelIpv4Reserved, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -295262,7 +340674,7 @@ func (obj *actionResponseProtocolIpv4PingResponse) FromProto(msg *otg.ActionResp return newObj, nil } -func (obj *actionResponseProtocolIpv4PingResponse) ToPbText() (string, error) { +func (obj *patternFlowRSVPPathSessionLspTunnelIpv4Reserved) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -295274,12 +340686,12 @@ func (obj *actionResponseProtocolIpv4PingResponse) ToPbText() (string, error) { return string(protoMarshal), nil } -func (obj *actionResponseProtocolIpv4PingResponse) FromPbText(value string) error { +func (obj *patternFlowRSVPPathSessionLspTunnelIpv4Reserved) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj } - + obj.setNil() vErr := obj.validateToAndFrom() if vErr != nil { return vErr @@ -295287,7 +340699,7 @@ func (obj *actionResponseProtocolIpv4PingResponse) FromPbText(value string) erro return retObj } -func (obj *actionResponseProtocolIpv4PingResponse) ToYaml() (string, error) { +func (obj *patternFlowRSVPPathSessionLspTunnelIpv4Reserved) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -295308,7 +340720,7 @@ func (obj *actionResponseProtocolIpv4PingResponse) ToYaml() (string, error) { return string(data), nil } -func (obj *actionResponseProtocolIpv4PingResponse) FromYaml(value string) error { +func (obj *patternFlowRSVPPathSessionLspTunnelIpv4Reserved) FromYaml(value string) error { if value == "" { value = "{}" } @@ -295325,7 +340737,7 @@ func (obj *actionResponseProtocolIpv4PingResponse) FromYaml(value string) error return fmt.Errorf("unmarshal error %s", strings.Replace( uError.Error(), "\u00a0", " ", -1)[7:]) } - + obj.setNil() vErr := obj.validateToAndFrom() if vErr != nil { return vErr @@ -295333,7 +340745,7 @@ func (obj *actionResponseProtocolIpv4PingResponse) FromYaml(value string) error return nil } -func (obj *actionResponseProtocolIpv4PingResponse) ToJson() (string, error) { +func (obj *patternFlowRSVPPathSessionLspTunnelIpv4Reserved) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -295351,7 +340763,7 @@ func (obj *actionResponseProtocolIpv4PingResponse) ToJson() (string, error) { return string(data), nil } -func (obj *actionResponseProtocolIpv4PingResponse) FromJson(value string) error { +func (obj *patternFlowRSVPPathSessionLspTunnelIpv4Reserved) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -295364,7 +340776,7 @@ func (obj *actionResponseProtocolIpv4PingResponse) FromJson(value string) error return fmt.Errorf("unmarshal error %s", strings.Replace( uError.Error(), "\u00a0", " ", -1)[7:]) } - + obj.setNil() err := obj.validateToAndFrom() if err != nil { return err @@ -295372,19 +340784,19 @@ func (obj *actionResponseProtocolIpv4PingResponse) FromJson(value string) error return nil } -func (obj *actionResponseProtocolIpv4PingResponse) validateToAndFrom() error { +func (obj *patternFlowRSVPPathSessionLspTunnelIpv4Reserved) validateToAndFrom() error { // emptyVars() obj.validateObj(&obj.validation, true) return obj.validationResult() } -func (obj *actionResponseProtocolIpv4PingResponse) Validate() error { +func (obj *patternFlowRSVPPathSessionLspTunnelIpv4Reserved) Validate() error { // emptyVars() obj.validateObj(&obj.validation, false) return obj.validationResult() } -func (obj *actionResponseProtocolIpv4PingResponse) String() string { +func (obj *patternFlowRSVPPathSessionLspTunnelIpv4Reserved) String() string { str, err := obj.ToYaml() if err != nil { return err.Error() @@ -295392,12 +340804,12 @@ func (obj *actionResponseProtocolIpv4PingResponse) String() string { return str } -func (obj *actionResponseProtocolIpv4PingResponse) Clone() (ActionResponseProtocolIpv4PingResponse, error) { +func (obj *patternFlowRSVPPathSessionLspTunnelIpv4Reserved) Clone() (PatternFlowRSVPPathSessionLspTunnelIpv4Reserved, error) { vErr := obj.Validate() if vErr != nil { return nil, vErr } - newObj := NewActionResponseProtocolIpv4PingResponse() + newObj := NewPatternFlowRSVPPathSessionLspTunnelIpv4Reserved() data, err := proto.Marshal(obj.Msg()) if err != nil { return nil, err @@ -295409,184 +340821,321 @@ func (obj *actionResponseProtocolIpv4PingResponse) Clone() (ActionResponseProtoc return newObj, nil } -// ActionResponseProtocolIpv4PingResponse is response for ping initiated between a single source and destination pair. -type ActionResponseProtocolIpv4PingResponse interface { +func (obj *patternFlowRSVPPathSessionLspTunnelIpv4Reserved) setNil() { + obj.incrementHolder = nil + obj.decrementHolder = nil + obj.validationErrors = nil + obj.warnings = nil + obj.constraints = make(map[string]map[string]Constraints) +} + +// PatternFlowRSVPPathSessionLspTunnelIpv4Reserved is reserved field, MUST be zero. +type PatternFlowRSVPPathSessionLspTunnelIpv4Reserved interface { Validation - // Msg marshals ActionResponseProtocolIpv4PingResponse to protobuf object *otg.ActionResponseProtocolIpv4PingResponse + // Msg marshals PatternFlowRSVPPathSessionLspTunnelIpv4Reserved to protobuf object *otg.PatternFlowRSVPPathSessionLspTunnelIpv4Reserved // and doesn't set defaults - Msg() *otg.ActionResponseProtocolIpv4PingResponse - // SetMsg unmarshals ActionResponseProtocolIpv4PingResponse from protobuf object *otg.ActionResponseProtocolIpv4PingResponse + Msg() *otg.PatternFlowRSVPPathSessionLspTunnelIpv4Reserved + // SetMsg unmarshals PatternFlowRSVPPathSessionLspTunnelIpv4Reserved from protobuf object *otg.PatternFlowRSVPPathSessionLspTunnelIpv4Reserved // and doesn't set defaults - SetMsg(*otg.ActionResponseProtocolIpv4PingResponse) ActionResponseProtocolIpv4PingResponse - // ToProto marshals ActionResponseProtocolIpv4PingResponse to protobuf object *otg.ActionResponseProtocolIpv4PingResponse - ToProto() (*otg.ActionResponseProtocolIpv4PingResponse, error) - // ToPbText marshals ActionResponseProtocolIpv4PingResponse to protobuf text + SetMsg(*otg.PatternFlowRSVPPathSessionLspTunnelIpv4Reserved) PatternFlowRSVPPathSessionLspTunnelIpv4Reserved + // ToProto marshals PatternFlowRSVPPathSessionLspTunnelIpv4Reserved to protobuf object *otg.PatternFlowRSVPPathSessionLspTunnelIpv4Reserved + ToProto() (*otg.PatternFlowRSVPPathSessionLspTunnelIpv4Reserved, error) + // ToPbText marshals PatternFlowRSVPPathSessionLspTunnelIpv4Reserved to protobuf text ToPbText() (string, error) - // ToYaml marshals ActionResponseProtocolIpv4PingResponse to YAML text + // ToYaml marshals PatternFlowRSVPPathSessionLspTunnelIpv4Reserved to YAML text ToYaml() (string, error) - // ToJson marshals ActionResponseProtocolIpv4PingResponse to JSON text + // ToJson marshals PatternFlowRSVPPathSessionLspTunnelIpv4Reserved to JSON text ToJson() (string, error) - // FromProto unmarshals ActionResponseProtocolIpv4PingResponse from protobuf object *otg.ActionResponseProtocolIpv4PingResponse - FromProto(msg *otg.ActionResponseProtocolIpv4PingResponse) (ActionResponseProtocolIpv4PingResponse, error) - // FromPbText unmarshals ActionResponseProtocolIpv4PingResponse from protobuf text + // FromProto unmarshals PatternFlowRSVPPathSessionLspTunnelIpv4Reserved from protobuf object *otg.PatternFlowRSVPPathSessionLspTunnelIpv4Reserved + FromProto(msg *otg.PatternFlowRSVPPathSessionLspTunnelIpv4Reserved) (PatternFlowRSVPPathSessionLspTunnelIpv4Reserved, error) + // FromPbText unmarshals PatternFlowRSVPPathSessionLspTunnelIpv4Reserved from protobuf text FromPbText(value string) error - // FromYaml unmarshals ActionResponseProtocolIpv4PingResponse from YAML text + // FromYaml unmarshals PatternFlowRSVPPathSessionLspTunnelIpv4Reserved from YAML text FromYaml(value string) error - // FromJson unmarshals ActionResponseProtocolIpv4PingResponse from JSON text + // FromJson unmarshals PatternFlowRSVPPathSessionLspTunnelIpv4Reserved from JSON text FromJson(value string) error - // Validate validates ActionResponseProtocolIpv4PingResponse + // Validate validates PatternFlowRSVPPathSessionLspTunnelIpv4Reserved Validate() error // A stringer function String() string // Clones the object - Clone() (ActionResponseProtocolIpv4PingResponse, error) + Clone() (PatternFlowRSVPPathSessionLspTunnelIpv4Reserved, error) validateToAndFrom() error validateObj(vObj *validation, set_default bool) setDefault() - // SrcName returns string, set in ActionResponseProtocolIpv4PingResponse. - SrcName() string - // SetSrcName assigns string provided by user to ActionResponseProtocolIpv4PingResponse - SetSrcName(value string) ActionResponseProtocolIpv4PingResponse - // DstIp returns string, set in ActionResponseProtocolIpv4PingResponse. - DstIp() string - // SetDstIp assigns string provided by user to ActionResponseProtocolIpv4PingResponse - SetDstIp(value string) ActionResponseProtocolIpv4PingResponse - // Result returns ActionResponseProtocolIpv4PingResponseResultEnum, set in ActionResponseProtocolIpv4PingResponse - Result() ActionResponseProtocolIpv4PingResponseResultEnum - // SetResult assigns ActionResponseProtocolIpv4PingResponseResultEnum provided by user to ActionResponseProtocolIpv4PingResponse - SetResult(value ActionResponseProtocolIpv4PingResponseResultEnum) ActionResponseProtocolIpv4PingResponse + // Choice returns PatternFlowRSVPPathSessionLspTunnelIpv4ReservedChoiceEnum, set in PatternFlowRSVPPathSessionLspTunnelIpv4Reserved + Choice() PatternFlowRSVPPathSessionLspTunnelIpv4ReservedChoiceEnum + // SetChoice assigns PatternFlowRSVPPathSessionLspTunnelIpv4ReservedChoiceEnum provided by user to PatternFlowRSVPPathSessionLspTunnelIpv4Reserved + SetChoice(value PatternFlowRSVPPathSessionLspTunnelIpv4ReservedChoiceEnum) PatternFlowRSVPPathSessionLspTunnelIpv4Reserved + // HasChoice checks if Choice has been set in PatternFlowRSVPPathSessionLspTunnelIpv4Reserved + HasChoice() bool + // Value returns uint32, set in PatternFlowRSVPPathSessionLspTunnelIpv4Reserved. + Value() uint32 + // SetValue assigns uint32 provided by user to PatternFlowRSVPPathSessionLspTunnelIpv4Reserved + SetValue(value uint32) PatternFlowRSVPPathSessionLspTunnelIpv4Reserved + // HasValue checks if Value has been set in PatternFlowRSVPPathSessionLspTunnelIpv4Reserved + HasValue() bool + // Values returns []uint32, set in PatternFlowRSVPPathSessionLspTunnelIpv4Reserved. + Values() []uint32 + // SetValues assigns []uint32 provided by user to PatternFlowRSVPPathSessionLspTunnelIpv4Reserved + SetValues(value []uint32) PatternFlowRSVPPathSessionLspTunnelIpv4Reserved + // Increment returns PatternFlowRSVPPathSessionLspTunnelIpv4ReservedCounter, set in PatternFlowRSVPPathSessionLspTunnelIpv4Reserved. + // PatternFlowRSVPPathSessionLspTunnelIpv4ReservedCounter is integer counter pattern + Increment() PatternFlowRSVPPathSessionLspTunnelIpv4ReservedCounter + // SetIncrement assigns PatternFlowRSVPPathSessionLspTunnelIpv4ReservedCounter provided by user to PatternFlowRSVPPathSessionLspTunnelIpv4Reserved. + // PatternFlowRSVPPathSessionLspTunnelIpv4ReservedCounter is integer counter pattern + SetIncrement(value PatternFlowRSVPPathSessionLspTunnelIpv4ReservedCounter) PatternFlowRSVPPathSessionLspTunnelIpv4Reserved + // HasIncrement checks if Increment has been set in PatternFlowRSVPPathSessionLspTunnelIpv4Reserved + HasIncrement() bool + // Decrement returns PatternFlowRSVPPathSessionLspTunnelIpv4ReservedCounter, set in PatternFlowRSVPPathSessionLspTunnelIpv4Reserved. + // PatternFlowRSVPPathSessionLspTunnelIpv4ReservedCounter is integer counter pattern + Decrement() PatternFlowRSVPPathSessionLspTunnelIpv4ReservedCounter + // SetDecrement assigns PatternFlowRSVPPathSessionLspTunnelIpv4ReservedCounter provided by user to PatternFlowRSVPPathSessionLspTunnelIpv4Reserved. + // PatternFlowRSVPPathSessionLspTunnelIpv4ReservedCounter is integer counter pattern + SetDecrement(value PatternFlowRSVPPathSessionLspTunnelIpv4ReservedCounter) PatternFlowRSVPPathSessionLspTunnelIpv4Reserved + // HasDecrement checks if Decrement has been set in PatternFlowRSVPPathSessionLspTunnelIpv4Reserved + HasDecrement() bool + setNil() } -// Name of source IPv4 interface used for ping. -// -// x-constraint: -// - /components/schemas/Device.Ipv4/properties/name -// -// x-constraint: -// - /components/schemas/Device.Ipv4/properties/name -// -// SrcName returns a string -func (obj *actionResponseProtocolIpv4PingResponse) SrcName() string { +type PatternFlowRSVPPathSessionLspTunnelIpv4ReservedChoiceEnum string - return *obj.obj.SrcName +// Enum of Choice on PatternFlowRSVPPathSessionLspTunnelIpv4Reserved +var PatternFlowRSVPPathSessionLspTunnelIpv4ReservedChoice = struct { + VALUE PatternFlowRSVPPathSessionLspTunnelIpv4ReservedChoiceEnum + VALUES PatternFlowRSVPPathSessionLspTunnelIpv4ReservedChoiceEnum + INCREMENT PatternFlowRSVPPathSessionLspTunnelIpv4ReservedChoiceEnum + DECREMENT PatternFlowRSVPPathSessionLspTunnelIpv4ReservedChoiceEnum +}{ + VALUE: PatternFlowRSVPPathSessionLspTunnelIpv4ReservedChoiceEnum("value"), + VALUES: PatternFlowRSVPPathSessionLspTunnelIpv4ReservedChoiceEnum("values"), + INCREMENT: PatternFlowRSVPPathSessionLspTunnelIpv4ReservedChoiceEnum("increment"), + DECREMENT: PatternFlowRSVPPathSessionLspTunnelIpv4ReservedChoiceEnum("decrement"), +} +func (obj *patternFlowRSVPPathSessionLspTunnelIpv4Reserved) Choice() PatternFlowRSVPPathSessionLspTunnelIpv4ReservedChoiceEnum { + return PatternFlowRSVPPathSessionLspTunnelIpv4ReservedChoiceEnum(obj.obj.Choice.Enum().String()) } -// Name of source IPv4 interface used for ping. -// -// x-constraint: -// - /components/schemas/Device.Ipv4/properties/name -// -// x-constraint: -// - /components/schemas/Device.Ipv4/properties/name -// -// SetSrcName sets the string value in the ActionResponseProtocolIpv4PingResponse object -func (obj *actionResponseProtocolIpv4PingResponse) SetSrcName(value string) ActionResponseProtocolIpv4PingResponse { +// description is TBD +// Choice returns a string +func (obj *patternFlowRSVPPathSessionLspTunnelIpv4Reserved) HasChoice() bool { + return obj.obj.Choice != nil +} + +func (obj *patternFlowRSVPPathSessionLspTunnelIpv4Reserved) SetChoice(value PatternFlowRSVPPathSessionLspTunnelIpv4ReservedChoiceEnum) PatternFlowRSVPPathSessionLspTunnelIpv4Reserved { + intValue, ok := otg.PatternFlowRSVPPathSessionLspTunnelIpv4Reserved_Choice_Enum_value[string(value)] + if !ok { + obj.validationErrors = append(obj.validationErrors, fmt.Sprintf( + "%s is not a valid choice on PatternFlowRSVPPathSessionLspTunnelIpv4ReservedChoiceEnum", string(value))) + return obj + } + enumValue := otg.PatternFlowRSVPPathSessionLspTunnelIpv4Reserved_Choice_Enum(intValue) + obj.obj.Choice = &enumValue + obj.obj.Decrement = nil + obj.decrementHolder = nil + obj.obj.Increment = nil + obj.incrementHolder = nil + obj.obj.Values = nil + obj.obj.Value = nil + + if value == PatternFlowRSVPPathSessionLspTunnelIpv4ReservedChoice.VALUE { + defaultValue := uint32(0) + obj.obj.Value = &defaultValue + } + + if value == PatternFlowRSVPPathSessionLspTunnelIpv4ReservedChoice.VALUES { + defaultValue := []uint32{0} + obj.obj.Values = defaultValue + } + + if value == PatternFlowRSVPPathSessionLspTunnelIpv4ReservedChoice.INCREMENT { + obj.obj.Increment = NewPatternFlowRSVPPathSessionLspTunnelIpv4ReservedCounter().Msg() + } + + if value == PatternFlowRSVPPathSessionLspTunnelIpv4ReservedChoice.DECREMENT { + obj.obj.Decrement = NewPatternFlowRSVPPathSessionLspTunnelIpv4ReservedCounter().Msg() + } - obj.obj.SrcName = &value return obj } -// Destination IPv4 address used for ping. -// DstIp returns a string -func (obj *actionResponseProtocolIpv4PingResponse) DstIp() string { +// description is TBD +// Value returns a uint32 +func (obj *patternFlowRSVPPathSessionLspTunnelIpv4Reserved) Value() uint32 { - return *obj.obj.DstIp + if obj.obj.Value == nil { + obj.SetChoice(PatternFlowRSVPPathSessionLspTunnelIpv4ReservedChoice.VALUE) + } + + return *obj.obj.Value } -// Destination IPv4 address used for ping. -// SetDstIp sets the string value in the ActionResponseProtocolIpv4PingResponse object -func (obj *actionResponseProtocolIpv4PingResponse) SetDstIp(value string) ActionResponseProtocolIpv4PingResponse { +// description is TBD +// Value returns a uint32 +func (obj *patternFlowRSVPPathSessionLspTunnelIpv4Reserved) HasValue() bool { + return obj.obj.Value != nil +} - obj.obj.DstIp = &value +// description is TBD +// SetValue sets the uint32 value in the PatternFlowRSVPPathSessionLspTunnelIpv4Reserved object +func (obj *patternFlowRSVPPathSessionLspTunnelIpv4Reserved) SetValue(value uint32) PatternFlowRSVPPathSessionLspTunnelIpv4Reserved { + obj.SetChoice(PatternFlowRSVPPathSessionLspTunnelIpv4ReservedChoice.VALUE) + obj.obj.Value = &value return obj } -type ActionResponseProtocolIpv4PingResponseResultEnum string +// description is TBD +// Values returns a []uint32 +func (obj *patternFlowRSVPPathSessionLspTunnelIpv4Reserved) Values() []uint32 { + if obj.obj.Values == nil { + obj.SetValues([]uint32{0}) + } + return obj.obj.Values +} -// Enum of Result on ActionResponseProtocolIpv4PingResponse -var ActionResponseProtocolIpv4PingResponseResult = struct { - SUCCEEDED ActionResponseProtocolIpv4PingResponseResultEnum - FAILED ActionResponseProtocolIpv4PingResponseResultEnum -}{ - SUCCEEDED: ActionResponseProtocolIpv4PingResponseResultEnum("succeeded"), - FAILED: ActionResponseProtocolIpv4PingResponseResultEnum("failed"), +// description is TBD +// SetValues sets the []uint32 value in the PatternFlowRSVPPathSessionLspTunnelIpv4Reserved object +func (obj *patternFlowRSVPPathSessionLspTunnelIpv4Reserved) SetValues(value []uint32) PatternFlowRSVPPathSessionLspTunnelIpv4Reserved { + obj.SetChoice(PatternFlowRSVPPathSessionLspTunnelIpv4ReservedChoice.VALUES) + if obj.obj.Values == nil { + obj.obj.Values = make([]uint32, 0) + } + obj.obj.Values = value + + return obj } -func (obj *actionResponseProtocolIpv4PingResponse) Result() ActionResponseProtocolIpv4PingResponseResultEnum { - return ActionResponseProtocolIpv4PingResponseResultEnum(obj.obj.Result.Enum().String()) +// description is TBD +// Increment returns a PatternFlowRSVPPathSessionLspTunnelIpv4ReservedCounter +func (obj *patternFlowRSVPPathSessionLspTunnelIpv4Reserved) Increment() PatternFlowRSVPPathSessionLspTunnelIpv4ReservedCounter { + if obj.obj.Increment == nil { + obj.SetChoice(PatternFlowRSVPPathSessionLspTunnelIpv4ReservedChoice.INCREMENT) + } + if obj.incrementHolder == nil { + obj.incrementHolder = &patternFlowRSVPPathSessionLspTunnelIpv4ReservedCounter{obj: obj.obj.Increment} + } + return obj.incrementHolder } -func (obj *actionResponseProtocolIpv4PingResponse) SetResult(value ActionResponseProtocolIpv4PingResponseResultEnum) ActionResponseProtocolIpv4PingResponse { - intValue, ok := otg.ActionResponseProtocolIpv4PingResponse_Result_Enum_value[string(value)] - if !ok { - obj.validationErrors = append(obj.validationErrors, fmt.Sprintf( - "%s is not a valid choice on ActionResponseProtocolIpv4PingResponseResultEnum", string(value))) - return obj +// description is TBD +// Increment returns a PatternFlowRSVPPathSessionLspTunnelIpv4ReservedCounter +func (obj *patternFlowRSVPPathSessionLspTunnelIpv4Reserved) HasIncrement() bool { + return obj.obj.Increment != nil +} + +// description is TBD +// SetIncrement sets the PatternFlowRSVPPathSessionLspTunnelIpv4ReservedCounter value in the PatternFlowRSVPPathSessionLspTunnelIpv4Reserved object +func (obj *patternFlowRSVPPathSessionLspTunnelIpv4Reserved) SetIncrement(value PatternFlowRSVPPathSessionLspTunnelIpv4ReservedCounter) PatternFlowRSVPPathSessionLspTunnelIpv4Reserved { + obj.SetChoice(PatternFlowRSVPPathSessionLspTunnelIpv4ReservedChoice.INCREMENT) + obj.incrementHolder = nil + obj.obj.Increment = value.Msg() + + return obj +} + +// description is TBD +// Decrement returns a PatternFlowRSVPPathSessionLspTunnelIpv4ReservedCounter +func (obj *patternFlowRSVPPathSessionLspTunnelIpv4Reserved) Decrement() PatternFlowRSVPPathSessionLspTunnelIpv4ReservedCounter { + if obj.obj.Decrement == nil { + obj.SetChoice(PatternFlowRSVPPathSessionLspTunnelIpv4ReservedChoice.DECREMENT) } - enumValue := otg.ActionResponseProtocolIpv4PingResponse_Result_Enum(intValue) - obj.obj.Result = &enumValue + if obj.decrementHolder == nil { + obj.decrementHolder = &patternFlowRSVPPathSessionLspTunnelIpv4ReservedCounter{obj: obj.obj.Decrement} + } + return obj.decrementHolder +} + +// description is TBD +// Decrement returns a PatternFlowRSVPPathSessionLspTunnelIpv4ReservedCounter +func (obj *patternFlowRSVPPathSessionLspTunnelIpv4Reserved) HasDecrement() bool { + return obj.obj.Decrement != nil +} + +// description is TBD +// SetDecrement sets the PatternFlowRSVPPathSessionLspTunnelIpv4ReservedCounter value in the PatternFlowRSVPPathSessionLspTunnelIpv4Reserved object +func (obj *patternFlowRSVPPathSessionLspTunnelIpv4Reserved) SetDecrement(value PatternFlowRSVPPathSessionLspTunnelIpv4ReservedCounter) PatternFlowRSVPPathSessionLspTunnelIpv4Reserved { + obj.SetChoice(PatternFlowRSVPPathSessionLspTunnelIpv4ReservedChoice.DECREMENT) + obj.decrementHolder = nil + obj.obj.Decrement = value.Msg() return obj } -func (obj *actionResponseProtocolIpv4PingResponse) validateObj(vObj *validation, set_default bool) { +func (obj *patternFlowRSVPPathSessionLspTunnelIpv4Reserved) validateObj(vObj *validation, set_default bool) { if set_default { obj.setDefault() } - // SrcName is required - if obj.obj.SrcName == nil { - vObj.validationErrors = append(vObj.validationErrors, "SrcName is required field on interface ActionResponseProtocolIpv4PingResponse") - } + if obj.obj.Value != nil { + + if *obj.obj.Value > 65535 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("0 <= PatternFlowRSVPPathSessionLspTunnelIpv4Reserved.Value <= 65535 but Got %d", *obj.obj.Value)) + } - // DstIp is required - if obj.obj.DstIp == nil { - vObj.validationErrors = append(vObj.validationErrors, "DstIp is required field on interface ActionResponseProtocolIpv4PingResponse") } - if obj.obj.DstIp != nil { - err := obj.validateIpv4(obj.DstIp()) - if err != nil { - vObj.validationErrors = append(vObj.validationErrors, fmt.Sprintf("%s %s", err.Error(), "on ActionResponseProtocolIpv4PingResponse.DstIp")) + if obj.obj.Values != nil { + + for _, item := range obj.obj.Values { + if item > 65535 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("min(uint32) <= PatternFlowRSVPPathSessionLspTunnelIpv4Reserved.Values <= 65535 but Got %d", item)) + } + } } - // Result is required - if obj.obj.Result == nil { - vObj.validationErrors = append(vObj.validationErrors, "Result is required field on interface ActionResponseProtocolIpv4PingResponse") + if obj.obj.Increment != nil { + + obj.Increment().validateObj(vObj, set_default) + } + + if obj.obj.Decrement != nil { + + obj.Decrement().validateObj(vObj, set_default) } + } -func (obj *actionResponseProtocolIpv4PingResponse) setDefault() { +func (obj *patternFlowRSVPPathSessionLspTunnelIpv4Reserved) setDefault() { + if obj.obj.Choice == nil { + obj.SetChoice(PatternFlowRSVPPathSessionLspTunnelIpv4ReservedChoice.VALUE) + + } } -// ***** ActionResponseProtocolIpv6PingResponse ***** -type actionResponseProtocolIpv6PingResponse struct { +// ***** PatternFlowRSVPPathSessionLspTunnelIpv4TunnelId ***** +type patternFlowRSVPPathSessionLspTunnelIpv4TunnelId struct { validation - obj *otg.ActionResponseProtocolIpv6PingResponse + obj *otg.PatternFlowRSVPPathSessionLspTunnelIpv4TunnelId + incrementHolder PatternFlowRSVPPathSessionLspTunnelIpv4TunnelIdCounter + decrementHolder PatternFlowRSVPPathSessionLspTunnelIpv4TunnelIdCounter } -func NewActionResponseProtocolIpv6PingResponse() ActionResponseProtocolIpv6PingResponse { - obj := actionResponseProtocolIpv6PingResponse{obj: &otg.ActionResponseProtocolIpv6PingResponse{}} +func NewPatternFlowRSVPPathSessionLspTunnelIpv4TunnelId() PatternFlowRSVPPathSessionLspTunnelIpv4TunnelId { + obj := patternFlowRSVPPathSessionLspTunnelIpv4TunnelId{obj: &otg.PatternFlowRSVPPathSessionLspTunnelIpv4TunnelId{}} obj.setDefault() return &obj } -func (obj *actionResponseProtocolIpv6PingResponse) Msg() *otg.ActionResponseProtocolIpv6PingResponse { +func (obj *patternFlowRSVPPathSessionLspTunnelIpv4TunnelId) Msg() *otg.PatternFlowRSVPPathSessionLspTunnelIpv4TunnelId { return obj.obj } -func (obj *actionResponseProtocolIpv6PingResponse) SetMsg(msg *otg.ActionResponseProtocolIpv6PingResponse) ActionResponseProtocolIpv6PingResponse { - +func (obj *patternFlowRSVPPathSessionLspTunnelIpv4TunnelId) SetMsg(msg *otg.PatternFlowRSVPPathSessionLspTunnelIpv4TunnelId) PatternFlowRSVPPathSessionLspTunnelIpv4TunnelId { + obj.setNil() proto.Merge(obj.obj, msg) return obj } -func (obj *actionResponseProtocolIpv6PingResponse) ToProto() (*otg.ActionResponseProtocolIpv6PingResponse, error) { +func (obj *patternFlowRSVPPathSessionLspTunnelIpv4TunnelId) ToProto() (*otg.PatternFlowRSVPPathSessionLspTunnelIpv4TunnelId, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -295594,7 +341143,7 @@ func (obj *actionResponseProtocolIpv6PingResponse) ToProto() (*otg.ActionRespons return obj.Msg(), nil } -func (obj *actionResponseProtocolIpv6PingResponse) FromProto(msg *otg.ActionResponseProtocolIpv6PingResponse) (ActionResponseProtocolIpv6PingResponse, error) { +func (obj *patternFlowRSVPPathSessionLspTunnelIpv4TunnelId) FromProto(msg *otg.PatternFlowRSVPPathSessionLspTunnelIpv4TunnelId) (PatternFlowRSVPPathSessionLspTunnelIpv4TunnelId, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -295603,7 +341152,7 @@ func (obj *actionResponseProtocolIpv6PingResponse) FromProto(msg *otg.ActionResp return newObj, nil } -func (obj *actionResponseProtocolIpv6PingResponse) ToPbText() (string, error) { +func (obj *patternFlowRSVPPathSessionLspTunnelIpv4TunnelId) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -295615,12 +341164,12 @@ func (obj *actionResponseProtocolIpv6PingResponse) ToPbText() (string, error) { return string(protoMarshal), nil } -func (obj *actionResponseProtocolIpv6PingResponse) FromPbText(value string) error { +func (obj *patternFlowRSVPPathSessionLspTunnelIpv4TunnelId) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj } - + obj.setNil() vErr := obj.validateToAndFrom() if vErr != nil { return vErr @@ -295628,7 +341177,7 @@ func (obj *actionResponseProtocolIpv6PingResponse) FromPbText(value string) erro return retObj } -func (obj *actionResponseProtocolIpv6PingResponse) ToYaml() (string, error) { +func (obj *patternFlowRSVPPathSessionLspTunnelIpv4TunnelId) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -295649,7 +341198,7 @@ func (obj *actionResponseProtocolIpv6PingResponse) ToYaml() (string, error) { return string(data), nil } -func (obj *actionResponseProtocolIpv6PingResponse) FromYaml(value string) error { +func (obj *patternFlowRSVPPathSessionLspTunnelIpv4TunnelId) FromYaml(value string) error { if value == "" { value = "{}" } @@ -295666,7 +341215,7 @@ func (obj *actionResponseProtocolIpv6PingResponse) FromYaml(value string) error return fmt.Errorf("unmarshal error %s", strings.Replace( uError.Error(), "\u00a0", " ", -1)[7:]) } - + obj.setNil() vErr := obj.validateToAndFrom() if vErr != nil { return vErr @@ -295674,7 +341223,7 @@ func (obj *actionResponseProtocolIpv6PingResponse) FromYaml(value string) error return nil } -func (obj *actionResponseProtocolIpv6PingResponse) ToJson() (string, error) { +func (obj *patternFlowRSVPPathSessionLspTunnelIpv4TunnelId) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -295692,7 +341241,7 @@ func (obj *actionResponseProtocolIpv6PingResponse) ToJson() (string, error) { return string(data), nil } -func (obj *actionResponseProtocolIpv6PingResponse) FromJson(value string) error { +func (obj *patternFlowRSVPPathSessionLspTunnelIpv4TunnelId) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -295705,7 +341254,7 @@ func (obj *actionResponseProtocolIpv6PingResponse) FromJson(value string) error return fmt.Errorf("unmarshal error %s", strings.Replace( uError.Error(), "\u00a0", " ", -1)[7:]) } - + obj.setNil() err := obj.validateToAndFrom() if err != nil { return err @@ -295713,19 +341262,19 @@ func (obj *actionResponseProtocolIpv6PingResponse) FromJson(value string) error return nil } -func (obj *actionResponseProtocolIpv6PingResponse) validateToAndFrom() error { +func (obj *patternFlowRSVPPathSessionLspTunnelIpv4TunnelId) validateToAndFrom() error { // emptyVars() obj.validateObj(&obj.validation, true) return obj.validationResult() } -func (obj *actionResponseProtocolIpv6PingResponse) Validate() error { +func (obj *patternFlowRSVPPathSessionLspTunnelIpv4TunnelId) Validate() error { // emptyVars() obj.validateObj(&obj.validation, false) return obj.validationResult() } -func (obj *actionResponseProtocolIpv6PingResponse) String() string { +func (obj *patternFlowRSVPPathSessionLspTunnelIpv4TunnelId) String() string { str, err := obj.ToYaml() if err != nil { return err.Error() @@ -295733,12 +341282,12 @@ func (obj *actionResponseProtocolIpv6PingResponse) String() string { return str } -func (obj *actionResponseProtocolIpv6PingResponse) Clone() (ActionResponseProtocolIpv6PingResponse, error) { +func (obj *patternFlowRSVPPathSessionLspTunnelIpv4TunnelId) Clone() (PatternFlowRSVPPathSessionLspTunnelIpv4TunnelId, error) { vErr := obj.Validate() if vErr != nil { return nil, vErr } - newObj := NewActionResponseProtocolIpv6PingResponse() + newObj := NewPatternFlowRSVPPathSessionLspTunnelIpv4TunnelId() data, err := proto.Marshal(obj.Msg()) if err != nil { return nil, err @@ -295750,184 +341299,321 @@ func (obj *actionResponseProtocolIpv6PingResponse) Clone() (ActionResponseProtoc return newObj, nil } -// ActionResponseProtocolIpv6PingResponse is response for ping initiated between a single source and destination pair. -type ActionResponseProtocolIpv6PingResponse interface { +func (obj *patternFlowRSVPPathSessionLspTunnelIpv4TunnelId) setNil() { + obj.incrementHolder = nil + obj.decrementHolder = nil + obj.validationErrors = nil + obj.warnings = nil + obj.constraints = make(map[string]map[string]Constraints) +} + +// PatternFlowRSVPPathSessionLspTunnelIpv4TunnelId is a 16-bit identifier used in the SESSION that remains constant over the life of the tunnel. +type PatternFlowRSVPPathSessionLspTunnelIpv4TunnelId interface { Validation - // Msg marshals ActionResponseProtocolIpv6PingResponse to protobuf object *otg.ActionResponseProtocolIpv6PingResponse + // Msg marshals PatternFlowRSVPPathSessionLspTunnelIpv4TunnelId to protobuf object *otg.PatternFlowRSVPPathSessionLspTunnelIpv4TunnelId // and doesn't set defaults - Msg() *otg.ActionResponseProtocolIpv6PingResponse - // SetMsg unmarshals ActionResponseProtocolIpv6PingResponse from protobuf object *otg.ActionResponseProtocolIpv6PingResponse + Msg() *otg.PatternFlowRSVPPathSessionLspTunnelIpv4TunnelId + // SetMsg unmarshals PatternFlowRSVPPathSessionLspTunnelIpv4TunnelId from protobuf object *otg.PatternFlowRSVPPathSessionLspTunnelIpv4TunnelId // and doesn't set defaults - SetMsg(*otg.ActionResponseProtocolIpv6PingResponse) ActionResponseProtocolIpv6PingResponse - // ToProto marshals ActionResponseProtocolIpv6PingResponse to protobuf object *otg.ActionResponseProtocolIpv6PingResponse - ToProto() (*otg.ActionResponseProtocolIpv6PingResponse, error) - // ToPbText marshals ActionResponseProtocolIpv6PingResponse to protobuf text + SetMsg(*otg.PatternFlowRSVPPathSessionLspTunnelIpv4TunnelId) PatternFlowRSVPPathSessionLspTunnelIpv4TunnelId + // ToProto marshals PatternFlowRSVPPathSessionLspTunnelIpv4TunnelId to protobuf object *otg.PatternFlowRSVPPathSessionLspTunnelIpv4TunnelId + ToProto() (*otg.PatternFlowRSVPPathSessionLspTunnelIpv4TunnelId, error) + // ToPbText marshals PatternFlowRSVPPathSessionLspTunnelIpv4TunnelId to protobuf text ToPbText() (string, error) - // ToYaml marshals ActionResponseProtocolIpv6PingResponse to YAML text + // ToYaml marshals PatternFlowRSVPPathSessionLspTunnelIpv4TunnelId to YAML text ToYaml() (string, error) - // ToJson marshals ActionResponseProtocolIpv6PingResponse to JSON text + // ToJson marshals PatternFlowRSVPPathSessionLspTunnelIpv4TunnelId to JSON text ToJson() (string, error) - // FromProto unmarshals ActionResponseProtocolIpv6PingResponse from protobuf object *otg.ActionResponseProtocolIpv6PingResponse - FromProto(msg *otg.ActionResponseProtocolIpv6PingResponse) (ActionResponseProtocolIpv6PingResponse, error) - // FromPbText unmarshals ActionResponseProtocolIpv6PingResponse from protobuf text + // FromProto unmarshals PatternFlowRSVPPathSessionLspTunnelIpv4TunnelId from protobuf object *otg.PatternFlowRSVPPathSessionLspTunnelIpv4TunnelId + FromProto(msg *otg.PatternFlowRSVPPathSessionLspTunnelIpv4TunnelId) (PatternFlowRSVPPathSessionLspTunnelIpv4TunnelId, error) + // FromPbText unmarshals PatternFlowRSVPPathSessionLspTunnelIpv4TunnelId from protobuf text FromPbText(value string) error - // FromYaml unmarshals ActionResponseProtocolIpv6PingResponse from YAML text + // FromYaml unmarshals PatternFlowRSVPPathSessionLspTunnelIpv4TunnelId from YAML text FromYaml(value string) error - // FromJson unmarshals ActionResponseProtocolIpv6PingResponse from JSON text + // FromJson unmarshals PatternFlowRSVPPathSessionLspTunnelIpv4TunnelId from JSON text FromJson(value string) error - // Validate validates ActionResponseProtocolIpv6PingResponse + // Validate validates PatternFlowRSVPPathSessionLspTunnelIpv4TunnelId Validate() error // A stringer function String() string // Clones the object - Clone() (ActionResponseProtocolIpv6PingResponse, error) + Clone() (PatternFlowRSVPPathSessionLspTunnelIpv4TunnelId, error) validateToAndFrom() error validateObj(vObj *validation, set_default bool) setDefault() - // SrcName returns string, set in ActionResponseProtocolIpv6PingResponse. - SrcName() string - // SetSrcName assigns string provided by user to ActionResponseProtocolIpv6PingResponse - SetSrcName(value string) ActionResponseProtocolIpv6PingResponse - // DstIp returns string, set in ActionResponseProtocolIpv6PingResponse. - DstIp() string - // SetDstIp assigns string provided by user to ActionResponseProtocolIpv6PingResponse - SetDstIp(value string) ActionResponseProtocolIpv6PingResponse - // Result returns ActionResponseProtocolIpv6PingResponseResultEnum, set in ActionResponseProtocolIpv6PingResponse - Result() ActionResponseProtocolIpv6PingResponseResultEnum - // SetResult assigns ActionResponseProtocolIpv6PingResponseResultEnum provided by user to ActionResponseProtocolIpv6PingResponse - SetResult(value ActionResponseProtocolIpv6PingResponseResultEnum) ActionResponseProtocolIpv6PingResponse + // Choice returns PatternFlowRSVPPathSessionLspTunnelIpv4TunnelIdChoiceEnum, set in PatternFlowRSVPPathSessionLspTunnelIpv4TunnelId + Choice() PatternFlowRSVPPathSessionLspTunnelIpv4TunnelIdChoiceEnum + // SetChoice assigns PatternFlowRSVPPathSessionLspTunnelIpv4TunnelIdChoiceEnum provided by user to PatternFlowRSVPPathSessionLspTunnelIpv4TunnelId + SetChoice(value PatternFlowRSVPPathSessionLspTunnelIpv4TunnelIdChoiceEnum) PatternFlowRSVPPathSessionLspTunnelIpv4TunnelId + // HasChoice checks if Choice has been set in PatternFlowRSVPPathSessionLspTunnelIpv4TunnelId + HasChoice() bool + // Value returns uint32, set in PatternFlowRSVPPathSessionLspTunnelIpv4TunnelId. + Value() uint32 + // SetValue assigns uint32 provided by user to PatternFlowRSVPPathSessionLspTunnelIpv4TunnelId + SetValue(value uint32) PatternFlowRSVPPathSessionLspTunnelIpv4TunnelId + // HasValue checks if Value has been set in PatternFlowRSVPPathSessionLspTunnelIpv4TunnelId + HasValue() bool + // Values returns []uint32, set in PatternFlowRSVPPathSessionLspTunnelIpv4TunnelId. + Values() []uint32 + // SetValues assigns []uint32 provided by user to PatternFlowRSVPPathSessionLspTunnelIpv4TunnelId + SetValues(value []uint32) PatternFlowRSVPPathSessionLspTunnelIpv4TunnelId + // Increment returns PatternFlowRSVPPathSessionLspTunnelIpv4TunnelIdCounter, set in PatternFlowRSVPPathSessionLspTunnelIpv4TunnelId. + // PatternFlowRSVPPathSessionLspTunnelIpv4TunnelIdCounter is integer counter pattern + Increment() PatternFlowRSVPPathSessionLspTunnelIpv4TunnelIdCounter + // SetIncrement assigns PatternFlowRSVPPathSessionLspTunnelIpv4TunnelIdCounter provided by user to PatternFlowRSVPPathSessionLspTunnelIpv4TunnelId. + // PatternFlowRSVPPathSessionLspTunnelIpv4TunnelIdCounter is integer counter pattern + SetIncrement(value PatternFlowRSVPPathSessionLspTunnelIpv4TunnelIdCounter) PatternFlowRSVPPathSessionLspTunnelIpv4TunnelId + // HasIncrement checks if Increment has been set in PatternFlowRSVPPathSessionLspTunnelIpv4TunnelId + HasIncrement() bool + // Decrement returns PatternFlowRSVPPathSessionLspTunnelIpv4TunnelIdCounter, set in PatternFlowRSVPPathSessionLspTunnelIpv4TunnelId. + // PatternFlowRSVPPathSessionLspTunnelIpv4TunnelIdCounter is integer counter pattern + Decrement() PatternFlowRSVPPathSessionLspTunnelIpv4TunnelIdCounter + // SetDecrement assigns PatternFlowRSVPPathSessionLspTunnelIpv4TunnelIdCounter provided by user to PatternFlowRSVPPathSessionLspTunnelIpv4TunnelId. + // PatternFlowRSVPPathSessionLspTunnelIpv4TunnelIdCounter is integer counter pattern + SetDecrement(value PatternFlowRSVPPathSessionLspTunnelIpv4TunnelIdCounter) PatternFlowRSVPPathSessionLspTunnelIpv4TunnelId + // HasDecrement checks if Decrement has been set in PatternFlowRSVPPathSessionLspTunnelIpv4TunnelId + HasDecrement() bool + setNil() } -// Name of source IPv6 interface used for ping. -// -// x-constraint: -// - /components/schemas/Device.Ipv6/properties/name -// -// x-constraint: -// - /components/schemas/Device.Ipv6/properties/name -// -// SrcName returns a string -func (obj *actionResponseProtocolIpv6PingResponse) SrcName() string { +type PatternFlowRSVPPathSessionLspTunnelIpv4TunnelIdChoiceEnum string - return *obj.obj.SrcName +// Enum of Choice on PatternFlowRSVPPathSessionLspTunnelIpv4TunnelId +var PatternFlowRSVPPathSessionLspTunnelIpv4TunnelIdChoice = struct { + VALUE PatternFlowRSVPPathSessionLspTunnelIpv4TunnelIdChoiceEnum + VALUES PatternFlowRSVPPathSessionLspTunnelIpv4TunnelIdChoiceEnum + INCREMENT PatternFlowRSVPPathSessionLspTunnelIpv4TunnelIdChoiceEnum + DECREMENT PatternFlowRSVPPathSessionLspTunnelIpv4TunnelIdChoiceEnum +}{ + VALUE: PatternFlowRSVPPathSessionLspTunnelIpv4TunnelIdChoiceEnum("value"), + VALUES: PatternFlowRSVPPathSessionLspTunnelIpv4TunnelIdChoiceEnum("values"), + INCREMENT: PatternFlowRSVPPathSessionLspTunnelIpv4TunnelIdChoiceEnum("increment"), + DECREMENT: PatternFlowRSVPPathSessionLspTunnelIpv4TunnelIdChoiceEnum("decrement"), +} +func (obj *patternFlowRSVPPathSessionLspTunnelIpv4TunnelId) Choice() PatternFlowRSVPPathSessionLspTunnelIpv4TunnelIdChoiceEnum { + return PatternFlowRSVPPathSessionLspTunnelIpv4TunnelIdChoiceEnum(obj.obj.Choice.Enum().String()) } -// Name of source IPv6 interface used for ping. -// -// x-constraint: -// - /components/schemas/Device.Ipv6/properties/name -// -// x-constraint: -// - /components/schemas/Device.Ipv6/properties/name -// -// SetSrcName sets the string value in the ActionResponseProtocolIpv6PingResponse object -func (obj *actionResponseProtocolIpv6PingResponse) SetSrcName(value string) ActionResponseProtocolIpv6PingResponse { +// description is TBD +// Choice returns a string +func (obj *patternFlowRSVPPathSessionLspTunnelIpv4TunnelId) HasChoice() bool { + return obj.obj.Choice != nil +} + +func (obj *patternFlowRSVPPathSessionLspTunnelIpv4TunnelId) SetChoice(value PatternFlowRSVPPathSessionLspTunnelIpv4TunnelIdChoiceEnum) PatternFlowRSVPPathSessionLspTunnelIpv4TunnelId { + intValue, ok := otg.PatternFlowRSVPPathSessionLspTunnelIpv4TunnelId_Choice_Enum_value[string(value)] + if !ok { + obj.validationErrors = append(obj.validationErrors, fmt.Sprintf( + "%s is not a valid choice on PatternFlowRSVPPathSessionLspTunnelIpv4TunnelIdChoiceEnum", string(value))) + return obj + } + enumValue := otg.PatternFlowRSVPPathSessionLspTunnelIpv4TunnelId_Choice_Enum(intValue) + obj.obj.Choice = &enumValue + obj.obj.Decrement = nil + obj.decrementHolder = nil + obj.obj.Increment = nil + obj.incrementHolder = nil + obj.obj.Values = nil + obj.obj.Value = nil + + if value == PatternFlowRSVPPathSessionLspTunnelIpv4TunnelIdChoice.VALUE { + defaultValue := uint32(0) + obj.obj.Value = &defaultValue + } + + if value == PatternFlowRSVPPathSessionLspTunnelIpv4TunnelIdChoice.VALUES { + defaultValue := []uint32{0} + obj.obj.Values = defaultValue + } + + if value == PatternFlowRSVPPathSessionLspTunnelIpv4TunnelIdChoice.INCREMENT { + obj.obj.Increment = NewPatternFlowRSVPPathSessionLspTunnelIpv4TunnelIdCounter().Msg() + } + + if value == PatternFlowRSVPPathSessionLspTunnelIpv4TunnelIdChoice.DECREMENT { + obj.obj.Decrement = NewPatternFlowRSVPPathSessionLspTunnelIpv4TunnelIdCounter().Msg() + } - obj.obj.SrcName = &value return obj } -// Destination IPv6 address used for ping. -// DstIp returns a string -func (obj *actionResponseProtocolIpv6PingResponse) DstIp() string { +// description is TBD +// Value returns a uint32 +func (obj *patternFlowRSVPPathSessionLspTunnelIpv4TunnelId) Value() uint32 { - return *obj.obj.DstIp + if obj.obj.Value == nil { + obj.SetChoice(PatternFlowRSVPPathSessionLspTunnelIpv4TunnelIdChoice.VALUE) + } + + return *obj.obj.Value } -// Destination IPv6 address used for ping. -// SetDstIp sets the string value in the ActionResponseProtocolIpv6PingResponse object -func (obj *actionResponseProtocolIpv6PingResponse) SetDstIp(value string) ActionResponseProtocolIpv6PingResponse { +// description is TBD +// Value returns a uint32 +func (obj *patternFlowRSVPPathSessionLspTunnelIpv4TunnelId) HasValue() bool { + return obj.obj.Value != nil +} - obj.obj.DstIp = &value +// description is TBD +// SetValue sets the uint32 value in the PatternFlowRSVPPathSessionLspTunnelIpv4TunnelId object +func (obj *patternFlowRSVPPathSessionLspTunnelIpv4TunnelId) SetValue(value uint32) PatternFlowRSVPPathSessionLspTunnelIpv4TunnelId { + obj.SetChoice(PatternFlowRSVPPathSessionLspTunnelIpv4TunnelIdChoice.VALUE) + obj.obj.Value = &value return obj } -type ActionResponseProtocolIpv6PingResponseResultEnum string +// description is TBD +// Values returns a []uint32 +func (obj *patternFlowRSVPPathSessionLspTunnelIpv4TunnelId) Values() []uint32 { + if obj.obj.Values == nil { + obj.SetValues([]uint32{0}) + } + return obj.obj.Values +} -// Enum of Result on ActionResponseProtocolIpv6PingResponse -var ActionResponseProtocolIpv6PingResponseResult = struct { - SUCCEEDED ActionResponseProtocolIpv6PingResponseResultEnum - FAILED ActionResponseProtocolIpv6PingResponseResultEnum -}{ - SUCCEEDED: ActionResponseProtocolIpv6PingResponseResultEnum("succeeded"), - FAILED: ActionResponseProtocolIpv6PingResponseResultEnum("failed"), +// description is TBD +// SetValues sets the []uint32 value in the PatternFlowRSVPPathSessionLspTunnelIpv4TunnelId object +func (obj *patternFlowRSVPPathSessionLspTunnelIpv4TunnelId) SetValues(value []uint32) PatternFlowRSVPPathSessionLspTunnelIpv4TunnelId { + obj.SetChoice(PatternFlowRSVPPathSessionLspTunnelIpv4TunnelIdChoice.VALUES) + if obj.obj.Values == nil { + obj.obj.Values = make([]uint32, 0) + } + obj.obj.Values = value + + return obj } -func (obj *actionResponseProtocolIpv6PingResponse) Result() ActionResponseProtocolIpv6PingResponseResultEnum { - return ActionResponseProtocolIpv6PingResponseResultEnum(obj.obj.Result.Enum().String()) +// description is TBD +// Increment returns a PatternFlowRSVPPathSessionLspTunnelIpv4TunnelIdCounter +func (obj *patternFlowRSVPPathSessionLspTunnelIpv4TunnelId) Increment() PatternFlowRSVPPathSessionLspTunnelIpv4TunnelIdCounter { + if obj.obj.Increment == nil { + obj.SetChoice(PatternFlowRSVPPathSessionLspTunnelIpv4TunnelIdChoice.INCREMENT) + } + if obj.incrementHolder == nil { + obj.incrementHolder = &patternFlowRSVPPathSessionLspTunnelIpv4TunnelIdCounter{obj: obj.obj.Increment} + } + return obj.incrementHolder } -func (obj *actionResponseProtocolIpv6PingResponse) SetResult(value ActionResponseProtocolIpv6PingResponseResultEnum) ActionResponseProtocolIpv6PingResponse { - intValue, ok := otg.ActionResponseProtocolIpv6PingResponse_Result_Enum_value[string(value)] - if !ok { - obj.validationErrors = append(obj.validationErrors, fmt.Sprintf( - "%s is not a valid choice on ActionResponseProtocolIpv6PingResponseResultEnum", string(value))) - return obj +// description is TBD +// Increment returns a PatternFlowRSVPPathSessionLspTunnelIpv4TunnelIdCounter +func (obj *patternFlowRSVPPathSessionLspTunnelIpv4TunnelId) HasIncrement() bool { + return obj.obj.Increment != nil +} + +// description is TBD +// SetIncrement sets the PatternFlowRSVPPathSessionLspTunnelIpv4TunnelIdCounter value in the PatternFlowRSVPPathSessionLspTunnelIpv4TunnelId object +func (obj *patternFlowRSVPPathSessionLspTunnelIpv4TunnelId) SetIncrement(value PatternFlowRSVPPathSessionLspTunnelIpv4TunnelIdCounter) PatternFlowRSVPPathSessionLspTunnelIpv4TunnelId { + obj.SetChoice(PatternFlowRSVPPathSessionLspTunnelIpv4TunnelIdChoice.INCREMENT) + obj.incrementHolder = nil + obj.obj.Increment = value.Msg() + + return obj +} + +// description is TBD +// Decrement returns a PatternFlowRSVPPathSessionLspTunnelIpv4TunnelIdCounter +func (obj *patternFlowRSVPPathSessionLspTunnelIpv4TunnelId) Decrement() PatternFlowRSVPPathSessionLspTunnelIpv4TunnelIdCounter { + if obj.obj.Decrement == nil { + obj.SetChoice(PatternFlowRSVPPathSessionLspTunnelIpv4TunnelIdChoice.DECREMENT) } - enumValue := otg.ActionResponseProtocolIpv6PingResponse_Result_Enum(intValue) - obj.obj.Result = &enumValue + if obj.decrementHolder == nil { + obj.decrementHolder = &patternFlowRSVPPathSessionLspTunnelIpv4TunnelIdCounter{obj: obj.obj.Decrement} + } + return obj.decrementHolder +} + +// description is TBD +// Decrement returns a PatternFlowRSVPPathSessionLspTunnelIpv4TunnelIdCounter +func (obj *patternFlowRSVPPathSessionLspTunnelIpv4TunnelId) HasDecrement() bool { + return obj.obj.Decrement != nil +} + +// description is TBD +// SetDecrement sets the PatternFlowRSVPPathSessionLspTunnelIpv4TunnelIdCounter value in the PatternFlowRSVPPathSessionLspTunnelIpv4TunnelId object +func (obj *patternFlowRSVPPathSessionLspTunnelIpv4TunnelId) SetDecrement(value PatternFlowRSVPPathSessionLspTunnelIpv4TunnelIdCounter) PatternFlowRSVPPathSessionLspTunnelIpv4TunnelId { + obj.SetChoice(PatternFlowRSVPPathSessionLspTunnelIpv4TunnelIdChoice.DECREMENT) + obj.decrementHolder = nil + obj.obj.Decrement = value.Msg() return obj } -func (obj *actionResponseProtocolIpv6PingResponse) validateObj(vObj *validation, set_default bool) { +func (obj *patternFlowRSVPPathSessionLspTunnelIpv4TunnelId) validateObj(vObj *validation, set_default bool) { if set_default { obj.setDefault() } - // SrcName is required - if obj.obj.SrcName == nil { - vObj.validationErrors = append(vObj.validationErrors, "SrcName is required field on interface ActionResponseProtocolIpv6PingResponse") - } + if obj.obj.Value != nil { + + if *obj.obj.Value > 65535 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("0 <= PatternFlowRSVPPathSessionLspTunnelIpv4TunnelId.Value <= 65535 but Got %d", *obj.obj.Value)) + } - // DstIp is required - if obj.obj.DstIp == nil { - vObj.validationErrors = append(vObj.validationErrors, "DstIp is required field on interface ActionResponseProtocolIpv6PingResponse") } - if obj.obj.DstIp != nil { - err := obj.validateIpv6(obj.DstIp()) - if err != nil { - vObj.validationErrors = append(vObj.validationErrors, fmt.Sprintf("%s %s", err.Error(), "on ActionResponseProtocolIpv6PingResponse.DstIp")) + if obj.obj.Values != nil { + + for _, item := range obj.obj.Values { + if item > 65535 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("min(uint32) <= PatternFlowRSVPPathSessionLspTunnelIpv4TunnelId.Values <= 65535 but Got %d", item)) + } + } } - // Result is required - if obj.obj.Result == nil { - vObj.validationErrors = append(vObj.validationErrors, "Result is required field on interface ActionResponseProtocolIpv6PingResponse") + if obj.obj.Increment != nil { + + obj.Increment().validateObj(vObj, set_default) + } + + if obj.obj.Decrement != nil { + + obj.Decrement().validateObj(vObj, set_default) } + } -func (obj *actionResponseProtocolIpv6PingResponse) setDefault() { +func (obj *patternFlowRSVPPathSessionLspTunnelIpv4TunnelId) setDefault() { + if obj.obj.Choice == nil { + obj.SetChoice(PatternFlowRSVPPathSessionLspTunnelIpv4TunnelIdChoice.VALUE) + + } } -// ***** IsisLspneighbor ***** -type isisLspneighbor struct { +// ***** PatternFlowRSVPPathSessionLspTunnelIpv4ExtendedTunnelId ***** +type patternFlowRSVPPathSessionLspTunnelIpv4ExtendedTunnelId struct { validation - obj *otg.IsisLspneighbor + obj *otg.PatternFlowRSVPPathSessionLspTunnelIpv4ExtendedTunnelId + incrementHolder PatternFlowRSVPPathSessionLspTunnelIpv4ExtendedTunnelIdCounter + decrementHolder PatternFlowRSVPPathSessionLspTunnelIpv4ExtendedTunnelIdCounter } -func NewIsisLspneighbor() IsisLspneighbor { - obj := isisLspneighbor{obj: &otg.IsisLspneighbor{}} +func NewPatternFlowRSVPPathSessionLspTunnelIpv4ExtendedTunnelId() PatternFlowRSVPPathSessionLspTunnelIpv4ExtendedTunnelId { + obj := patternFlowRSVPPathSessionLspTunnelIpv4ExtendedTunnelId{obj: &otg.PatternFlowRSVPPathSessionLspTunnelIpv4ExtendedTunnelId{}} obj.setDefault() return &obj } -func (obj *isisLspneighbor) Msg() *otg.IsisLspneighbor { +func (obj *patternFlowRSVPPathSessionLspTunnelIpv4ExtendedTunnelId) Msg() *otg.PatternFlowRSVPPathSessionLspTunnelIpv4ExtendedTunnelId { return obj.obj } -func (obj *isisLspneighbor) SetMsg(msg *otg.IsisLspneighbor) IsisLspneighbor { - +func (obj *patternFlowRSVPPathSessionLspTunnelIpv4ExtendedTunnelId) SetMsg(msg *otg.PatternFlowRSVPPathSessionLspTunnelIpv4ExtendedTunnelId) PatternFlowRSVPPathSessionLspTunnelIpv4ExtendedTunnelId { + obj.setNil() proto.Merge(obj.obj, msg) return obj } -func (obj *isisLspneighbor) ToProto() (*otg.IsisLspneighbor, error) { +func (obj *patternFlowRSVPPathSessionLspTunnelIpv4ExtendedTunnelId) ToProto() (*otg.PatternFlowRSVPPathSessionLspTunnelIpv4ExtendedTunnelId, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -295935,7 +341621,7 @@ func (obj *isisLspneighbor) ToProto() (*otg.IsisLspneighbor, error) { return obj.Msg(), nil } -func (obj *isisLspneighbor) FromProto(msg *otg.IsisLspneighbor) (IsisLspneighbor, error) { +func (obj *patternFlowRSVPPathSessionLspTunnelIpv4ExtendedTunnelId) FromProto(msg *otg.PatternFlowRSVPPathSessionLspTunnelIpv4ExtendedTunnelId) (PatternFlowRSVPPathSessionLspTunnelIpv4ExtendedTunnelId, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -295944,7 +341630,7 @@ func (obj *isisLspneighbor) FromProto(msg *otg.IsisLspneighbor) (IsisLspneighbor return newObj, nil } -func (obj *isisLspneighbor) ToPbText() (string, error) { +func (obj *patternFlowRSVPPathSessionLspTunnelIpv4ExtendedTunnelId) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -295956,12 +341642,12 @@ func (obj *isisLspneighbor) ToPbText() (string, error) { return string(protoMarshal), nil } -func (obj *isisLspneighbor) FromPbText(value string) error { +func (obj *patternFlowRSVPPathSessionLspTunnelIpv4ExtendedTunnelId) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj } - + obj.setNil() vErr := obj.validateToAndFrom() if vErr != nil { return vErr @@ -295969,7 +341655,7 @@ func (obj *isisLspneighbor) FromPbText(value string) error { return retObj } -func (obj *isisLspneighbor) ToYaml() (string, error) { +func (obj *patternFlowRSVPPathSessionLspTunnelIpv4ExtendedTunnelId) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -295990,7 +341676,7 @@ func (obj *isisLspneighbor) ToYaml() (string, error) { return string(data), nil } -func (obj *isisLspneighbor) FromYaml(value string) error { +func (obj *patternFlowRSVPPathSessionLspTunnelIpv4ExtendedTunnelId) FromYaml(value string) error { if value == "" { value = "{}" } @@ -296007,7 +341693,7 @@ func (obj *isisLspneighbor) FromYaml(value string) error { return fmt.Errorf("unmarshal error %s", strings.Replace( uError.Error(), "\u00a0", " ", -1)[7:]) } - + obj.setNil() vErr := obj.validateToAndFrom() if vErr != nil { return vErr @@ -296015,7 +341701,7 @@ func (obj *isisLspneighbor) FromYaml(value string) error { return nil } -func (obj *isisLspneighbor) ToJson() (string, error) { +func (obj *patternFlowRSVPPathSessionLspTunnelIpv4ExtendedTunnelId) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -296033,7 +341719,7 @@ func (obj *isisLspneighbor) ToJson() (string, error) { return string(data), nil } -func (obj *isisLspneighbor) FromJson(value string) error { +func (obj *patternFlowRSVPPathSessionLspTunnelIpv4ExtendedTunnelId) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -296046,7 +341732,7 @@ func (obj *isisLspneighbor) FromJson(value string) error { return fmt.Errorf("unmarshal error %s", strings.Replace( uError.Error(), "\u00a0", " ", -1)[7:]) } - + obj.setNil() err := obj.validateToAndFrom() if err != nil { return err @@ -296054,19 +341740,19 @@ func (obj *isisLspneighbor) FromJson(value string) error { return nil } -func (obj *isisLspneighbor) validateToAndFrom() error { +func (obj *patternFlowRSVPPathSessionLspTunnelIpv4ExtendedTunnelId) validateToAndFrom() error { // emptyVars() obj.validateObj(&obj.validation, true) return obj.validationResult() } -func (obj *isisLspneighbor) Validate() error { +func (obj *patternFlowRSVPPathSessionLspTunnelIpv4ExtendedTunnelId) Validate() error { // emptyVars() obj.validateObj(&obj.validation, false) return obj.validationResult() } -func (obj *isisLspneighbor) String() string { +func (obj *patternFlowRSVPPathSessionLspTunnelIpv4ExtendedTunnelId) String() string { str, err := obj.ToYaml() if err != nil { return err.Error() @@ -296074,12 +341760,12 @@ func (obj *isisLspneighbor) String() string { return str } -func (obj *isisLspneighbor) Clone() (IsisLspneighbor, error) { +func (obj *patternFlowRSVPPathSessionLspTunnelIpv4ExtendedTunnelId) Clone() (PatternFlowRSVPPathSessionLspTunnelIpv4ExtendedTunnelId, error) { vErr := obj.Validate() if vErr != nil { return nil, vErr } - newObj := NewIsisLspneighbor() + newObj := NewPatternFlowRSVPPathSessionLspTunnelIpv4ExtendedTunnelId() data, err := proto.Marshal(obj.Msg()) if err != nil { return nil, err @@ -296091,113 +341777,298 @@ func (obj *isisLspneighbor) Clone() (IsisLspneighbor, error) { return newObj, nil } -// IsisLspneighbor is this contains IS neighbors. -type IsisLspneighbor interface { +func (obj *patternFlowRSVPPathSessionLspTunnelIpv4ExtendedTunnelId) setNil() { + obj.incrementHolder = nil + obj.decrementHolder = nil + obj.validationErrors = nil + obj.warnings = nil + obj.constraints = make(map[string]map[string]Constraints) +} + +// PatternFlowRSVPPathSessionLspTunnelIpv4ExtendedTunnelId is a 32-bit identifier used in the SESSION that remains constant over the life of the tunnel. Normally set to all zeros. Ingress nodes that wish to narrow the scope of a SESSION to the ingress-egress pair may place their IPv4 address here as a globally unique identifier. +type PatternFlowRSVPPathSessionLspTunnelIpv4ExtendedTunnelId interface { Validation - // Msg marshals IsisLspneighbor to protobuf object *otg.IsisLspneighbor + // Msg marshals PatternFlowRSVPPathSessionLspTunnelIpv4ExtendedTunnelId to protobuf object *otg.PatternFlowRSVPPathSessionLspTunnelIpv4ExtendedTunnelId // and doesn't set defaults - Msg() *otg.IsisLspneighbor - // SetMsg unmarshals IsisLspneighbor from protobuf object *otg.IsisLspneighbor + Msg() *otg.PatternFlowRSVPPathSessionLspTunnelIpv4ExtendedTunnelId + // SetMsg unmarshals PatternFlowRSVPPathSessionLspTunnelIpv4ExtendedTunnelId from protobuf object *otg.PatternFlowRSVPPathSessionLspTunnelIpv4ExtendedTunnelId // and doesn't set defaults - SetMsg(*otg.IsisLspneighbor) IsisLspneighbor - // ToProto marshals IsisLspneighbor to protobuf object *otg.IsisLspneighbor - ToProto() (*otg.IsisLspneighbor, error) - // ToPbText marshals IsisLspneighbor to protobuf text + SetMsg(*otg.PatternFlowRSVPPathSessionLspTunnelIpv4ExtendedTunnelId) PatternFlowRSVPPathSessionLspTunnelIpv4ExtendedTunnelId + // ToProto marshals PatternFlowRSVPPathSessionLspTunnelIpv4ExtendedTunnelId to protobuf object *otg.PatternFlowRSVPPathSessionLspTunnelIpv4ExtendedTunnelId + ToProto() (*otg.PatternFlowRSVPPathSessionLspTunnelIpv4ExtendedTunnelId, error) + // ToPbText marshals PatternFlowRSVPPathSessionLspTunnelIpv4ExtendedTunnelId to protobuf text ToPbText() (string, error) - // ToYaml marshals IsisLspneighbor to YAML text + // ToYaml marshals PatternFlowRSVPPathSessionLspTunnelIpv4ExtendedTunnelId to YAML text ToYaml() (string, error) - // ToJson marshals IsisLspneighbor to JSON text + // ToJson marshals PatternFlowRSVPPathSessionLspTunnelIpv4ExtendedTunnelId to JSON text ToJson() (string, error) - // FromProto unmarshals IsisLspneighbor from protobuf object *otg.IsisLspneighbor - FromProto(msg *otg.IsisLspneighbor) (IsisLspneighbor, error) - // FromPbText unmarshals IsisLspneighbor from protobuf text + // FromProto unmarshals PatternFlowRSVPPathSessionLspTunnelIpv4ExtendedTunnelId from protobuf object *otg.PatternFlowRSVPPathSessionLspTunnelIpv4ExtendedTunnelId + FromProto(msg *otg.PatternFlowRSVPPathSessionLspTunnelIpv4ExtendedTunnelId) (PatternFlowRSVPPathSessionLspTunnelIpv4ExtendedTunnelId, error) + // FromPbText unmarshals PatternFlowRSVPPathSessionLspTunnelIpv4ExtendedTunnelId from protobuf text FromPbText(value string) error - // FromYaml unmarshals IsisLspneighbor from YAML text + // FromYaml unmarshals PatternFlowRSVPPathSessionLspTunnelIpv4ExtendedTunnelId from YAML text FromYaml(value string) error - // FromJson unmarshals IsisLspneighbor from JSON text + // FromJson unmarshals PatternFlowRSVPPathSessionLspTunnelIpv4ExtendedTunnelId from JSON text FromJson(value string) error - // Validate validates IsisLspneighbor + // Validate validates PatternFlowRSVPPathSessionLspTunnelIpv4ExtendedTunnelId Validate() error // A stringer function String() string // Clones the object - Clone() (IsisLspneighbor, error) + Clone() (PatternFlowRSVPPathSessionLspTunnelIpv4ExtendedTunnelId, error) validateToAndFrom() error validateObj(vObj *validation, set_default bool) setDefault() - // SystemId returns string, set in IsisLspneighbor. - SystemId() string - // SetSystemId assigns string provided by user to IsisLspneighbor - SetSystemId(value string) IsisLspneighbor - // HasSystemId checks if SystemId has been set in IsisLspneighbor - HasSystemId() bool + // Choice returns PatternFlowRSVPPathSessionLspTunnelIpv4ExtendedTunnelIdChoiceEnum, set in PatternFlowRSVPPathSessionLspTunnelIpv4ExtendedTunnelId + Choice() PatternFlowRSVPPathSessionLspTunnelIpv4ExtendedTunnelIdChoiceEnum + // SetChoice assigns PatternFlowRSVPPathSessionLspTunnelIpv4ExtendedTunnelIdChoiceEnum provided by user to PatternFlowRSVPPathSessionLspTunnelIpv4ExtendedTunnelId + SetChoice(value PatternFlowRSVPPathSessionLspTunnelIpv4ExtendedTunnelIdChoiceEnum) PatternFlowRSVPPathSessionLspTunnelIpv4ExtendedTunnelId + // HasChoice checks if Choice has been set in PatternFlowRSVPPathSessionLspTunnelIpv4ExtendedTunnelId + HasChoice() bool + // Value returns uint32, set in PatternFlowRSVPPathSessionLspTunnelIpv4ExtendedTunnelId. + Value() uint32 + // SetValue assigns uint32 provided by user to PatternFlowRSVPPathSessionLspTunnelIpv4ExtendedTunnelId + SetValue(value uint32) PatternFlowRSVPPathSessionLspTunnelIpv4ExtendedTunnelId + // HasValue checks if Value has been set in PatternFlowRSVPPathSessionLspTunnelIpv4ExtendedTunnelId + HasValue() bool + // Values returns []uint32, set in PatternFlowRSVPPathSessionLspTunnelIpv4ExtendedTunnelId. + Values() []uint32 + // SetValues assigns []uint32 provided by user to PatternFlowRSVPPathSessionLspTunnelIpv4ExtendedTunnelId + SetValues(value []uint32) PatternFlowRSVPPathSessionLspTunnelIpv4ExtendedTunnelId + // Increment returns PatternFlowRSVPPathSessionLspTunnelIpv4ExtendedTunnelIdCounter, set in PatternFlowRSVPPathSessionLspTunnelIpv4ExtendedTunnelId. + // PatternFlowRSVPPathSessionLspTunnelIpv4ExtendedTunnelIdCounter is integer counter pattern + Increment() PatternFlowRSVPPathSessionLspTunnelIpv4ExtendedTunnelIdCounter + // SetIncrement assigns PatternFlowRSVPPathSessionLspTunnelIpv4ExtendedTunnelIdCounter provided by user to PatternFlowRSVPPathSessionLspTunnelIpv4ExtendedTunnelId. + // PatternFlowRSVPPathSessionLspTunnelIpv4ExtendedTunnelIdCounter is integer counter pattern + SetIncrement(value PatternFlowRSVPPathSessionLspTunnelIpv4ExtendedTunnelIdCounter) PatternFlowRSVPPathSessionLspTunnelIpv4ExtendedTunnelId + // HasIncrement checks if Increment has been set in PatternFlowRSVPPathSessionLspTunnelIpv4ExtendedTunnelId + HasIncrement() bool + // Decrement returns PatternFlowRSVPPathSessionLspTunnelIpv4ExtendedTunnelIdCounter, set in PatternFlowRSVPPathSessionLspTunnelIpv4ExtendedTunnelId. + // PatternFlowRSVPPathSessionLspTunnelIpv4ExtendedTunnelIdCounter is integer counter pattern + Decrement() PatternFlowRSVPPathSessionLspTunnelIpv4ExtendedTunnelIdCounter + // SetDecrement assigns PatternFlowRSVPPathSessionLspTunnelIpv4ExtendedTunnelIdCounter provided by user to PatternFlowRSVPPathSessionLspTunnelIpv4ExtendedTunnelId. + // PatternFlowRSVPPathSessionLspTunnelIpv4ExtendedTunnelIdCounter is integer counter pattern + SetDecrement(value PatternFlowRSVPPathSessionLspTunnelIpv4ExtendedTunnelIdCounter) PatternFlowRSVPPathSessionLspTunnelIpv4ExtendedTunnelId + // HasDecrement checks if Decrement has been set in PatternFlowRSVPPathSessionLspTunnelIpv4ExtendedTunnelId + HasDecrement() bool + setNil() } -// The System ID for this emulated ISIS router, e.g. "640100010000". -// SystemId returns a string -func (obj *isisLspneighbor) SystemId() string { +type PatternFlowRSVPPathSessionLspTunnelIpv4ExtendedTunnelIdChoiceEnum string - return *obj.obj.SystemId +// Enum of Choice on PatternFlowRSVPPathSessionLspTunnelIpv4ExtendedTunnelId +var PatternFlowRSVPPathSessionLspTunnelIpv4ExtendedTunnelIdChoice = struct { + VALUE PatternFlowRSVPPathSessionLspTunnelIpv4ExtendedTunnelIdChoiceEnum + VALUES PatternFlowRSVPPathSessionLspTunnelIpv4ExtendedTunnelIdChoiceEnum + INCREMENT PatternFlowRSVPPathSessionLspTunnelIpv4ExtendedTunnelIdChoiceEnum + DECREMENT PatternFlowRSVPPathSessionLspTunnelIpv4ExtendedTunnelIdChoiceEnum +}{ + VALUE: PatternFlowRSVPPathSessionLspTunnelIpv4ExtendedTunnelIdChoiceEnum("value"), + VALUES: PatternFlowRSVPPathSessionLspTunnelIpv4ExtendedTunnelIdChoiceEnum("values"), + INCREMENT: PatternFlowRSVPPathSessionLspTunnelIpv4ExtendedTunnelIdChoiceEnum("increment"), + DECREMENT: PatternFlowRSVPPathSessionLspTunnelIpv4ExtendedTunnelIdChoiceEnum("decrement"), +} +func (obj *patternFlowRSVPPathSessionLspTunnelIpv4ExtendedTunnelId) Choice() PatternFlowRSVPPathSessionLspTunnelIpv4ExtendedTunnelIdChoiceEnum { + return PatternFlowRSVPPathSessionLspTunnelIpv4ExtendedTunnelIdChoiceEnum(obj.obj.Choice.Enum().String()) } -// The System ID for this emulated ISIS router, e.g. "640100010000". -// SystemId returns a string -func (obj *isisLspneighbor) HasSystemId() bool { - return obj.obj.SystemId != nil +// description is TBD +// Choice returns a string +func (obj *patternFlowRSVPPathSessionLspTunnelIpv4ExtendedTunnelId) HasChoice() bool { + return obj.obj.Choice != nil } -// The System ID for this emulated ISIS router, e.g. "640100010000". -// SetSystemId sets the string value in the IsisLspneighbor object -func (obj *isisLspneighbor) SetSystemId(value string) IsisLspneighbor { +func (obj *patternFlowRSVPPathSessionLspTunnelIpv4ExtendedTunnelId) SetChoice(value PatternFlowRSVPPathSessionLspTunnelIpv4ExtendedTunnelIdChoiceEnum) PatternFlowRSVPPathSessionLspTunnelIpv4ExtendedTunnelId { + intValue, ok := otg.PatternFlowRSVPPathSessionLspTunnelIpv4ExtendedTunnelId_Choice_Enum_value[string(value)] + if !ok { + obj.validationErrors = append(obj.validationErrors, fmt.Sprintf( + "%s is not a valid choice on PatternFlowRSVPPathSessionLspTunnelIpv4ExtendedTunnelIdChoiceEnum", string(value))) + return obj + } + enumValue := otg.PatternFlowRSVPPathSessionLspTunnelIpv4ExtendedTunnelId_Choice_Enum(intValue) + obj.obj.Choice = &enumValue + obj.obj.Decrement = nil + obj.decrementHolder = nil + obj.obj.Increment = nil + obj.incrementHolder = nil + obj.obj.Values = nil + obj.obj.Value = nil + + if value == PatternFlowRSVPPathSessionLspTunnelIpv4ExtendedTunnelIdChoice.VALUE { + defaultValue := uint32(0) + obj.obj.Value = &defaultValue + } + + if value == PatternFlowRSVPPathSessionLspTunnelIpv4ExtendedTunnelIdChoice.VALUES { + defaultValue := []uint32{0} + obj.obj.Values = defaultValue + } + + if value == PatternFlowRSVPPathSessionLspTunnelIpv4ExtendedTunnelIdChoice.INCREMENT { + obj.obj.Increment = NewPatternFlowRSVPPathSessionLspTunnelIpv4ExtendedTunnelIdCounter().Msg() + } + + if value == PatternFlowRSVPPathSessionLspTunnelIpv4ExtendedTunnelIdChoice.DECREMENT { + obj.obj.Decrement = NewPatternFlowRSVPPathSessionLspTunnelIpv4ExtendedTunnelIdCounter().Msg() + } - obj.obj.SystemId = &value return obj } -func (obj *isisLspneighbor) validateObj(vObj *validation, set_default bool) { +// description is TBD +// Value returns a uint32 +func (obj *patternFlowRSVPPathSessionLspTunnelIpv4ExtendedTunnelId) Value() uint32 { + + if obj.obj.Value == nil { + obj.SetChoice(PatternFlowRSVPPathSessionLspTunnelIpv4ExtendedTunnelIdChoice.VALUE) + } + + return *obj.obj.Value + +} + +// description is TBD +// Value returns a uint32 +func (obj *patternFlowRSVPPathSessionLspTunnelIpv4ExtendedTunnelId) HasValue() bool { + return obj.obj.Value != nil +} + +// description is TBD +// SetValue sets the uint32 value in the PatternFlowRSVPPathSessionLspTunnelIpv4ExtendedTunnelId object +func (obj *patternFlowRSVPPathSessionLspTunnelIpv4ExtendedTunnelId) SetValue(value uint32) PatternFlowRSVPPathSessionLspTunnelIpv4ExtendedTunnelId { + obj.SetChoice(PatternFlowRSVPPathSessionLspTunnelIpv4ExtendedTunnelIdChoice.VALUE) + obj.obj.Value = &value + return obj +} + +// description is TBD +// Values returns a []uint32 +func (obj *patternFlowRSVPPathSessionLspTunnelIpv4ExtendedTunnelId) Values() []uint32 { + if obj.obj.Values == nil { + obj.SetValues([]uint32{0}) + } + return obj.obj.Values +} + +// description is TBD +// SetValues sets the []uint32 value in the PatternFlowRSVPPathSessionLspTunnelIpv4ExtendedTunnelId object +func (obj *patternFlowRSVPPathSessionLspTunnelIpv4ExtendedTunnelId) SetValues(value []uint32) PatternFlowRSVPPathSessionLspTunnelIpv4ExtendedTunnelId { + obj.SetChoice(PatternFlowRSVPPathSessionLspTunnelIpv4ExtendedTunnelIdChoice.VALUES) + if obj.obj.Values == nil { + obj.obj.Values = make([]uint32, 0) + } + obj.obj.Values = value + + return obj +} + +// description is TBD +// Increment returns a PatternFlowRSVPPathSessionLspTunnelIpv4ExtendedTunnelIdCounter +func (obj *patternFlowRSVPPathSessionLspTunnelIpv4ExtendedTunnelId) Increment() PatternFlowRSVPPathSessionLspTunnelIpv4ExtendedTunnelIdCounter { + if obj.obj.Increment == nil { + obj.SetChoice(PatternFlowRSVPPathSessionLspTunnelIpv4ExtendedTunnelIdChoice.INCREMENT) + } + if obj.incrementHolder == nil { + obj.incrementHolder = &patternFlowRSVPPathSessionLspTunnelIpv4ExtendedTunnelIdCounter{obj: obj.obj.Increment} + } + return obj.incrementHolder +} + +// description is TBD +// Increment returns a PatternFlowRSVPPathSessionLspTunnelIpv4ExtendedTunnelIdCounter +func (obj *patternFlowRSVPPathSessionLspTunnelIpv4ExtendedTunnelId) HasIncrement() bool { + return obj.obj.Increment != nil +} + +// description is TBD +// SetIncrement sets the PatternFlowRSVPPathSessionLspTunnelIpv4ExtendedTunnelIdCounter value in the PatternFlowRSVPPathSessionLspTunnelIpv4ExtendedTunnelId object +func (obj *patternFlowRSVPPathSessionLspTunnelIpv4ExtendedTunnelId) SetIncrement(value PatternFlowRSVPPathSessionLspTunnelIpv4ExtendedTunnelIdCounter) PatternFlowRSVPPathSessionLspTunnelIpv4ExtendedTunnelId { + obj.SetChoice(PatternFlowRSVPPathSessionLspTunnelIpv4ExtendedTunnelIdChoice.INCREMENT) + obj.incrementHolder = nil + obj.obj.Increment = value.Msg() + + return obj +} + +// description is TBD +// Decrement returns a PatternFlowRSVPPathSessionLspTunnelIpv4ExtendedTunnelIdCounter +func (obj *patternFlowRSVPPathSessionLspTunnelIpv4ExtendedTunnelId) Decrement() PatternFlowRSVPPathSessionLspTunnelIpv4ExtendedTunnelIdCounter { + if obj.obj.Decrement == nil { + obj.SetChoice(PatternFlowRSVPPathSessionLspTunnelIpv4ExtendedTunnelIdChoice.DECREMENT) + } + if obj.decrementHolder == nil { + obj.decrementHolder = &patternFlowRSVPPathSessionLspTunnelIpv4ExtendedTunnelIdCounter{obj: obj.obj.Decrement} + } + return obj.decrementHolder +} + +// description is TBD +// Decrement returns a PatternFlowRSVPPathSessionLspTunnelIpv4ExtendedTunnelIdCounter +func (obj *patternFlowRSVPPathSessionLspTunnelIpv4ExtendedTunnelId) HasDecrement() bool { + return obj.obj.Decrement != nil +} + +// description is TBD +// SetDecrement sets the PatternFlowRSVPPathSessionLspTunnelIpv4ExtendedTunnelIdCounter value in the PatternFlowRSVPPathSessionLspTunnelIpv4ExtendedTunnelId object +func (obj *patternFlowRSVPPathSessionLspTunnelIpv4ExtendedTunnelId) SetDecrement(value PatternFlowRSVPPathSessionLspTunnelIpv4ExtendedTunnelIdCounter) PatternFlowRSVPPathSessionLspTunnelIpv4ExtendedTunnelId { + obj.SetChoice(PatternFlowRSVPPathSessionLspTunnelIpv4ExtendedTunnelIdChoice.DECREMENT) + obj.decrementHolder = nil + obj.obj.Decrement = value.Msg() + + return obj +} + +func (obj *patternFlowRSVPPathSessionLspTunnelIpv4ExtendedTunnelId) validateObj(vObj *validation, set_default bool) { if set_default { obj.setDefault() } - if obj.obj.SystemId != nil { + if obj.obj.Increment != nil { - err := obj.validateHex(obj.SystemId()) - if err != nil { - vObj.validationErrors = append(vObj.validationErrors, fmt.Sprintf("%s %s", err.Error(), "on IsisLspneighbor.SystemId")) - } + obj.Increment().validateObj(vObj, set_default) + } + + if obj.obj.Decrement != nil { + obj.Decrement().validateObj(vObj, set_default) } } -func (obj *isisLspneighbor) setDefault() { +func (obj *patternFlowRSVPPathSessionLspTunnelIpv4ExtendedTunnelId) setDefault() { + if obj.obj.Choice == nil { + obj.SetChoice(PatternFlowRSVPPathSessionLspTunnelIpv4ExtendedTunnelIdChoice.VALUE) + + } } -// ***** IsisLspV4Prefix ***** -type isisLspV4Prefix struct { +// ***** PatternFlowRSVPPathRsvpHopIpv4Ipv4NextPreviousHopAddress ***** +type patternFlowRSVPPathRsvpHopIpv4Ipv4NextPreviousHopAddress struct { validation - obj *otg.IsisLspV4Prefix + obj *otg.PatternFlowRSVPPathRsvpHopIpv4Ipv4NextPreviousHopAddress + incrementHolder PatternFlowRSVPPathRsvpHopIpv4Ipv4NextPreviousHopAddressCounter + decrementHolder PatternFlowRSVPPathRsvpHopIpv4Ipv4NextPreviousHopAddressCounter } -func NewIsisLspV4Prefix() IsisLspV4Prefix { - obj := isisLspV4Prefix{obj: &otg.IsisLspV4Prefix{}} +func NewPatternFlowRSVPPathRsvpHopIpv4Ipv4NextPreviousHopAddress() PatternFlowRSVPPathRsvpHopIpv4Ipv4NextPreviousHopAddress { + obj := patternFlowRSVPPathRsvpHopIpv4Ipv4NextPreviousHopAddress{obj: &otg.PatternFlowRSVPPathRsvpHopIpv4Ipv4NextPreviousHopAddress{}} obj.setDefault() return &obj } -func (obj *isisLspV4Prefix) Msg() *otg.IsisLspV4Prefix { +func (obj *patternFlowRSVPPathRsvpHopIpv4Ipv4NextPreviousHopAddress) Msg() *otg.PatternFlowRSVPPathRsvpHopIpv4Ipv4NextPreviousHopAddress { return obj.obj } -func (obj *isisLspV4Prefix) SetMsg(msg *otg.IsisLspV4Prefix) IsisLspV4Prefix { - +func (obj *patternFlowRSVPPathRsvpHopIpv4Ipv4NextPreviousHopAddress) SetMsg(msg *otg.PatternFlowRSVPPathRsvpHopIpv4Ipv4NextPreviousHopAddress) PatternFlowRSVPPathRsvpHopIpv4Ipv4NextPreviousHopAddress { + obj.setNil() proto.Merge(obj.obj, msg) return obj } -func (obj *isisLspV4Prefix) ToProto() (*otg.IsisLspV4Prefix, error) { +func (obj *patternFlowRSVPPathRsvpHopIpv4Ipv4NextPreviousHopAddress) ToProto() (*otg.PatternFlowRSVPPathRsvpHopIpv4Ipv4NextPreviousHopAddress, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -296205,7 +342076,7 @@ func (obj *isisLspV4Prefix) ToProto() (*otg.IsisLspV4Prefix, error) { return obj.Msg(), nil } -func (obj *isisLspV4Prefix) FromProto(msg *otg.IsisLspV4Prefix) (IsisLspV4Prefix, error) { +func (obj *patternFlowRSVPPathRsvpHopIpv4Ipv4NextPreviousHopAddress) FromProto(msg *otg.PatternFlowRSVPPathRsvpHopIpv4Ipv4NextPreviousHopAddress) (PatternFlowRSVPPathRsvpHopIpv4Ipv4NextPreviousHopAddress, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -296214,7 +342085,7 @@ func (obj *isisLspV4Prefix) FromProto(msg *otg.IsisLspV4Prefix) (IsisLspV4Prefix return newObj, nil } -func (obj *isisLspV4Prefix) ToPbText() (string, error) { +func (obj *patternFlowRSVPPathRsvpHopIpv4Ipv4NextPreviousHopAddress) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -296226,12 +342097,12 @@ func (obj *isisLspV4Prefix) ToPbText() (string, error) { return string(protoMarshal), nil } -func (obj *isisLspV4Prefix) FromPbText(value string) error { +func (obj *patternFlowRSVPPathRsvpHopIpv4Ipv4NextPreviousHopAddress) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj } - + obj.setNil() vErr := obj.validateToAndFrom() if vErr != nil { return vErr @@ -296239,7 +342110,7 @@ func (obj *isisLspV4Prefix) FromPbText(value string) error { return retObj } -func (obj *isisLspV4Prefix) ToYaml() (string, error) { +func (obj *patternFlowRSVPPathRsvpHopIpv4Ipv4NextPreviousHopAddress) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -296260,7 +342131,7 @@ func (obj *isisLspV4Prefix) ToYaml() (string, error) { return string(data), nil } -func (obj *isisLspV4Prefix) FromYaml(value string) error { +func (obj *patternFlowRSVPPathRsvpHopIpv4Ipv4NextPreviousHopAddress) FromYaml(value string) error { if value == "" { value = "{}" } @@ -296277,7 +342148,7 @@ func (obj *isisLspV4Prefix) FromYaml(value string) error { return fmt.Errorf("unmarshal error %s", strings.Replace( uError.Error(), "\u00a0", " ", -1)[7:]) } - + obj.setNil() vErr := obj.validateToAndFrom() if vErr != nil { return vErr @@ -296285,7 +342156,7 @@ func (obj *isisLspV4Prefix) FromYaml(value string) error { return nil } -func (obj *isisLspV4Prefix) ToJson() (string, error) { +func (obj *patternFlowRSVPPathRsvpHopIpv4Ipv4NextPreviousHopAddress) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -296303,7 +342174,7 @@ func (obj *isisLspV4Prefix) ToJson() (string, error) { return string(data), nil } -func (obj *isisLspV4Prefix) FromJson(value string) error { +func (obj *patternFlowRSVPPathRsvpHopIpv4Ipv4NextPreviousHopAddress) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -296316,7 +342187,7 @@ func (obj *isisLspV4Prefix) FromJson(value string) error { return fmt.Errorf("unmarshal error %s", strings.Replace( uError.Error(), "\u00a0", " ", -1)[7:]) } - + obj.setNil() err := obj.validateToAndFrom() if err != nil { return err @@ -296324,19 +342195,19 @@ func (obj *isisLspV4Prefix) FromJson(value string) error { return nil } -func (obj *isisLspV4Prefix) validateToAndFrom() error { +func (obj *patternFlowRSVPPathRsvpHopIpv4Ipv4NextPreviousHopAddress) validateToAndFrom() error { // emptyVars() obj.validateObj(&obj.validation, true) return obj.validationResult() } -func (obj *isisLspV4Prefix) Validate() error { +func (obj *patternFlowRSVPPathRsvpHopIpv4Ipv4NextPreviousHopAddress) Validate() error { // emptyVars() obj.validateObj(&obj.validation, false) return obj.validationResult() } -func (obj *isisLspV4Prefix) String() string { +func (obj *patternFlowRSVPPathRsvpHopIpv4Ipv4NextPreviousHopAddress) String() string { str, err := obj.ToYaml() if err != nil { return err.Error() @@ -296344,12 +342215,12 @@ func (obj *isisLspV4Prefix) String() string { return str } -func (obj *isisLspV4Prefix) Clone() (IsisLspV4Prefix, error) { +func (obj *patternFlowRSVPPathRsvpHopIpv4Ipv4NextPreviousHopAddress) Clone() (PatternFlowRSVPPathRsvpHopIpv4Ipv4NextPreviousHopAddress, error) { vErr := obj.Validate() if vErr != nil { return nil, vErr } - newObj := NewIsisLspV4Prefix() + newObj := NewPatternFlowRSVPPathRsvpHopIpv4Ipv4NextPreviousHopAddress() data, err := proto.Marshal(obj.Msg()) if err != nil { return nil, err @@ -296361,257 +342232,316 @@ func (obj *isisLspV4Prefix) Clone() (IsisLspV4Prefix, error) { return newObj, nil } -// IsisLspV4Prefix is this group defines attributes of an IPv4 standard prefix. -type IsisLspV4Prefix interface { +func (obj *patternFlowRSVPPathRsvpHopIpv4Ipv4NextPreviousHopAddress) setNil() { + obj.incrementHolder = nil + obj.decrementHolder = nil + obj.validationErrors = nil + obj.warnings = nil + obj.constraints = make(map[string]map[string]Constraints) +} + +// PatternFlowRSVPPathRsvpHopIpv4Ipv4NextPreviousHopAddress is the IPv4 address of the interface through which the last RSVP-knowledgeable hop forwarded this message. +type PatternFlowRSVPPathRsvpHopIpv4Ipv4NextPreviousHopAddress interface { Validation - // Msg marshals IsisLspV4Prefix to protobuf object *otg.IsisLspV4Prefix + // Msg marshals PatternFlowRSVPPathRsvpHopIpv4Ipv4NextPreviousHopAddress to protobuf object *otg.PatternFlowRSVPPathRsvpHopIpv4Ipv4NextPreviousHopAddress // and doesn't set defaults - Msg() *otg.IsisLspV4Prefix - // SetMsg unmarshals IsisLspV4Prefix from protobuf object *otg.IsisLspV4Prefix + Msg() *otg.PatternFlowRSVPPathRsvpHopIpv4Ipv4NextPreviousHopAddress + // SetMsg unmarshals PatternFlowRSVPPathRsvpHopIpv4Ipv4NextPreviousHopAddress from protobuf object *otg.PatternFlowRSVPPathRsvpHopIpv4Ipv4NextPreviousHopAddress // and doesn't set defaults - SetMsg(*otg.IsisLspV4Prefix) IsisLspV4Prefix - // ToProto marshals IsisLspV4Prefix to protobuf object *otg.IsisLspV4Prefix - ToProto() (*otg.IsisLspV4Prefix, error) - // ToPbText marshals IsisLspV4Prefix to protobuf text + SetMsg(*otg.PatternFlowRSVPPathRsvpHopIpv4Ipv4NextPreviousHopAddress) PatternFlowRSVPPathRsvpHopIpv4Ipv4NextPreviousHopAddress + // ToProto marshals PatternFlowRSVPPathRsvpHopIpv4Ipv4NextPreviousHopAddress to protobuf object *otg.PatternFlowRSVPPathRsvpHopIpv4Ipv4NextPreviousHopAddress + ToProto() (*otg.PatternFlowRSVPPathRsvpHopIpv4Ipv4NextPreviousHopAddress, error) + // ToPbText marshals PatternFlowRSVPPathRsvpHopIpv4Ipv4NextPreviousHopAddress to protobuf text ToPbText() (string, error) - // ToYaml marshals IsisLspV4Prefix to YAML text + // ToYaml marshals PatternFlowRSVPPathRsvpHopIpv4Ipv4NextPreviousHopAddress to YAML text ToYaml() (string, error) - // ToJson marshals IsisLspV4Prefix to JSON text + // ToJson marshals PatternFlowRSVPPathRsvpHopIpv4Ipv4NextPreviousHopAddress to JSON text ToJson() (string, error) - // FromProto unmarshals IsisLspV4Prefix from protobuf object *otg.IsisLspV4Prefix - FromProto(msg *otg.IsisLspV4Prefix) (IsisLspV4Prefix, error) - // FromPbText unmarshals IsisLspV4Prefix from protobuf text + // FromProto unmarshals PatternFlowRSVPPathRsvpHopIpv4Ipv4NextPreviousHopAddress from protobuf object *otg.PatternFlowRSVPPathRsvpHopIpv4Ipv4NextPreviousHopAddress + FromProto(msg *otg.PatternFlowRSVPPathRsvpHopIpv4Ipv4NextPreviousHopAddress) (PatternFlowRSVPPathRsvpHopIpv4Ipv4NextPreviousHopAddress, error) + // FromPbText unmarshals PatternFlowRSVPPathRsvpHopIpv4Ipv4NextPreviousHopAddress from protobuf text FromPbText(value string) error - // FromYaml unmarshals IsisLspV4Prefix from YAML text + // FromYaml unmarshals PatternFlowRSVPPathRsvpHopIpv4Ipv4NextPreviousHopAddress from YAML text FromYaml(value string) error - // FromJson unmarshals IsisLspV4Prefix from JSON text + // FromJson unmarshals PatternFlowRSVPPathRsvpHopIpv4Ipv4NextPreviousHopAddress from JSON text FromJson(value string) error - // Validate validates IsisLspV4Prefix + // Validate validates PatternFlowRSVPPathRsvpHopIpv4Ipv4NextPreviousHopAddress Validate() error // A stringer function String() string // Clones the object - Clone() (IsisLspV4Prefix, error) + Clone() (PatternFlowRSVPPathRsvpHopIpv4Ipv4NextPreviousHopAddress, error) validateToAndFrom() error validateObj(vObj *validation, set_default bool) setDefault() - // Ipv4Address returns string, set in IsisLspV4Prefix. - Ipv4Address() string - // SetIpv4Address assigns string provided by user to IsisLspV4Prefix - SetIpv4Address(value string) IsisLspV4Prefix - // HasIpv4Address checks if Ipv4Address has been set in IsisLspV4Prefix - HasIpv4Address() bool - // PrefixLength returns uint32, set in IsisLspV4Prefix. - PrefixLength() uint32 - // SetPrefixLength assigns uint32 provided by user to IsisLspV4Prefix - SetPrefixLength(value uint32) IsisLspV4Prefix - // HasPrefixLength checks if PrefixLength has been set in IsisLspV4Prefix - HasPrefixLength() bool - // RedistributionType returns IsisLspV4PrefixRedistributionTypeEnum, set in IsisLspV4Prefix - RedistributionType() IsisLspV4PrefixRedistributionTypeEnum - // SetRedistributionType assigns IsisLspV4PrefixRedistributionTypeEnum provided by user to IsisLspV4Prefix - SetRedistributionType(value IsisLspV4PrefixRedistributionTypeEnum) IsisLspV4Prefix - // HasRedistributionType checks if RedistributionType has been set in IsisLspV4Prefix - HasRedistributionType() bool - // DefaultMetric returns uint32, set in IsisLspV4Prefix. - DefaultMetric() uint32 - // SetDefaultMetric assigns uint32 provided by user to IsisLspV4Prefix - SetDefaultMetric(value uint32) IsisLspV4Prefix - // HasDefaultMetric checks if DefaultMetric has been set in IsisLspV4Prefix - HasDefaultMetric() bool - // OriginType returns IsisLspV4PrefixOriginTypeEnum, set in IsisLspV4Prefix - OriginType() IsisLspV4PrefixOriginTypeEnum - // SetOriginType assigns IsisLspV4PrefixOriginTypeEnum provided by user to IsisLspV4Prefix - SetOriginType(value IsisLspV4PrefixOriginTypeEnum) IsisLspV4Prefix - // HasOriginType checks if OriginType has been set in IsisLspV4Prefix - HasOriginType() bool + // Choice returns PatternFlowRSVPPathRsvpHopIpv4Ipv4NextPreviousHopAddressChoiceEnum, set in PatternFlowRSVPPathRsvpHopIpv4Ipv4NextPreviousHopAddress + Choice() PatternFlowRSVPPathRsvpHopIpv4Ipv4NextPreviousHopAddressChoiceEnum + // SetChoice assigns PatternFlowRSVPPathRsvpHopIpv4Ipv4NextPreviousHopAddressChoiceEnum provided by user to PatternFlowRSVPPathRsvpHopIpv4Ipv4NextPreviousHopAddress + SetChoice(value PatternFlowRSVPPathRsvpHopIpv4Ipv4NextPreviousHopAddressChoiceEnum) PatternFlowRSVPPathRsvpHopIpv4Ipv4NextPreviousHopAddress + // HasChoice checks if Choice has been set in PatternFlowRSVPPathRsvpHopIpv4Ipv4NextPreviousHopAddress + HasChoice() bool + // Value returns string, set in PatternFlowRSVPPathRsvpHopIpv4Ipv4NextPreviousHopAddress. + Value() string + // SetValue assigns string provided by user to PatternFlowRSVPPathRsvpHopIpv4Ipv4NextPreviousHopAddress + SetValue(value string) PatternFlowRSVPPathRsvpHopIpv4Ipv4NextPreviousHopAddress + // HasValue checks if Value has been set in PatternFlowRSVPPathRsvpHopIpv4Ipv4NextPreviousHopAddress + HasValue() bool + // Values returns []string, set in PatternFlowRSVPPathRsvpHopIpv4Ipv4NextPreviousHopAddress. + Values() []string + // SetValues assigns []string provided by user to PatternFlowRSVPPathRsvpHopIpv4Ipv4NextPreviousHopAddress + SetValues(value []string) PatternFlowRSVPPathRsvpHopIpv4Ipv4NextPreviousHopAddress + // Increment returns PatternFlowRSVPPathRsvpHopIpv4Ipv4NextPreviousHopAddressCounter, set in PatternFlowRSVPPathRsvpHopIpv4Ipv4NextPreviousHopAddress. + // PatternFlowRSVPPathRsvpHopIpv4Ipv4NextPreviousHopAddressCounter is ipv4 counter pattern + Increment() PatternFlowRSVPPathRsvpHopIpv4Ipv4NextPreviousHopAddressCounter + // SetIncrement assigns PatternFlowRSVPPathRsvpHopIpv4Ipv4NextPreviousHopAddressCounter provided by user to PatternFlowRSVPPathRsvpHopIpv4Ipv4NextPreviousHopAddress. + // PatternFlowRSVPPathRsvpHopIpv4Ipv4NextPreviousHopAddressCounter is ipv4 counter pattern + SetIncrement(value PatternFlowRSVPPathRsvpHopIpv4Ipv4NextPreviousHopAddressCounter) PatternFlowRSVPPathRsvpHopIpv4Ipv4NextPreviousHopAddress + // HasIncrement checks if Increment has been set in PatternFlowRSVPPathRsvpHopIpv4Ipv4NextPreviousHopAddress + HasIncrement() bool + // Decrement returns PatternFlowRSVPPathRsvpHopIpv4Ipv4NextPreviousHopAddressCounter, set in PatternFlowRSVPPathRsvpHopIpv4Ipv4NextPreviousHopAddress. + // PatternFlowRSVPPathRsvpHopIpv4Ipv4NextPreviousHopAddressCounter is ipv4 counter pattern + Decrement() PatternFlowRSVPPathRsvpHopIpv4Ipv4NextPreviousHopAddressCounter + // SetDecrement assigns PatternFlowRSVPPathRsvpHopIpv4Ipv4NextPreviousHopAddressCounter provided by user to PatternFlowRSVPPathRsvpHopIpv4Ipv4NextPreviousHopAddress. + // PatternFlowRSVPPathRsvpHopIpv4Ipv4NextPreviousHopAddressCounter is ipv4 counter pattern + SetDecrement(value PatternFlowRSVPPathRsvpHopIpv4Ipv4NextPreviousHopAddressCounter) PatternFlowRSVPPathRsvpHopIpv4Ipv4NextPreviousHopAddress + // HasDecrement checks if Decrement has been set in PatternFlowRSVPPathRsvpHopIpv4Ipv4NextPreviousHopAddress + HasDecrement() bool + setNil() } -// An IPv4 unicast prefix reachable via the originator of this LSP. -// Ipv4Address returns a string -func (obj *isisLspV4Prefix) Ipv4Address() string { - - return *obj.obj.Ipv4Address +type PatternFlowRSVPPathRsvpHopIpv4Ipv4NextPreviousHopAddressChoiceEnum string +// Enum of Choice on PatternFlowRSVPPathRsvpHopIpv4Ipv4NextPreviousHopAddress +var PatternFlowRSVPPathRsvpHopIpv4Ipv4NextPreviousHopAddressChoice = struct { + VALUE PatternFlowRSVPPathRsvpHopIpv4Ipv4NextPreviousHopAddressChoiceEnum + VALUES PatternFlowRSVPPathRsvpHopIpv4Ipv4NextPreviousHopAddressChoiceEnum + INCREMENT PatternFlowRSVPPathRsvpHopIpv4Ipv4NextPreviousHopAddressChoiceEnum + DECREMENT PatternFlowRSVPPathRsvpHopIpv4Ipv4NextPreviousHopAddressChoiceEnum +}{ + VALUE: PatternFlowRSVPPathRsvpHopIpv4Ipv4NextPreviousHopAddressChoiceEnum("value"), + VALUES: PatternFlowRSVPPathRsvpHopIpv4Ipv4NextPreviousHopAddressChoiceEnum("values"), + INCREMENT: PatternFlowRSVPPathRsvpHopIpv4Ipv4NextPreviousHopAddressChoiceEnum("increment"), + DECREMENT: PatternFlowRSVPPathRsvpHopIpv4Ipv4NextPreviousHopAddressChoiceEnum("decrement"), } -// An IPv4 unicast prefix reachable via the originator of this LSP. -// Ipv4Address returns a string -func (obj *isisLspV4Prefix) HasIpv4Address() bool { - return obj.obj.Ipv4Address != nil +func (obj *patternFlowRSVPPathRsvpHopIpv4Ipv4NextPreviousHopAddress) Choice() PatternFlowRSVPPathRsvpHopIpv4Ipv4NextPreviousHopAddressChoiceEnum { + return PatternFlowRSVPPathRsvpHopIpv4Ipv4NextPreviousHopAddressChoiceEnum(obj.obj.Choice.Enum().String()) } -// An IPv4 unicast prefix reachable via the originator of this LSP. -// SetIpv4Address sets the string value in the IsisLspV4Prefix object -func (obj *isisLspV4Prefix) SetIpv4Address(value string) IsisLspV4Prefix { - - obj.obj.Ipv4Address = &value - return obj +// description is TBD +// Choice returns a string +func (obj *patternFlowRSVPPathRsvpHopIpv4Ipv4NextPreviousHopAddress) HasChoice() bool { + return obj.obj.Choice != nil } -// The length of the IPv4 prefix. -// PrefixLength returns a uint32 -func (obj *isisLspV4Prefix) PrefixLength() uint32 { +func (obj *patternFlowRSVPPathRsvpHopIpv4Ipv4NextPreviousHopAddress) SetChoice(value PatternFlowRSVPPathRsvpHopIpv4Ipv4NextPreviousHopAddressChoiceEnum) PatternFlowRSVPPathRsvpHopIpv4Ipv4NextPreviousHopAddress { + intValue, ok := otg.PatternFlowRSVPPathRsvpHopIpv4Ipv4NextPreviousHopAddress_Choice_Enum_value[string(value)] + if !ok { + obj.validationErrors = append(obj.validationErrors, fmt.Sprintf( + "%s is not a valid choice on PatternFlowRSVPPathRsvpHopIpv4Ipv4NextPreviousHopAddressChoiceEnum", string(value))) + return obj + } + enumValue := otg.PatternFlowRSVPPathRsvpHopIpv4Ipv4NextPreviousHopAddress_Choice_Enum(intValue) + obj.obj.Choice = &enumValue + obj.obj.Decrement = nil + obj.decrementHolder = nil + obj.obj.Increment = nil + obj.incrementHolder = nil + obj.obj.Values = nil + obj.obj.Value = nil - return *obj.obj.PrefixLength + if value == PatternFlowRSVPPathRsvpHopIpv4Ipv4NextPreviousHopAddressChoice.VALUE { + defaultValue := "0.0.0.0" + obj.obj.Value = &defaultValue + } -} + if value == PatternFlowRSVPPathRsvpHopIpv4Ipv4NextPreviousHopAddressChoice.VALUES { + defaultValue := []string{"0.0.0.0"} + obj.obj.Values = defaultValue + } -// The length of the IPv4 prefix. -// PrefixLength returns a uint32 -func (obj *isisLspV4Prefix) HasPrefixLength() bool { - return obj.obj.PrefixLength != nil -} + if value == PatternFlowRSVPPathRsvpHopIpv4Ipv4NextPreviousHopAddressChoice.INCREMENT { + obj.obj.Increment = NewPatternFlowRSVPPathRsvpHopIpv4Ipv4NextPreviousHopAddressCounter().Msg() + } -// The length of the IPv4 prefix. -// SetPrefixLength sets the uint32 value in the IsisLspV4Prefix object -func (obj *isisLspV4Prefix) SetPrefixLength(value uint32) IsisLspV4Prefix { + if value == PatternFlowRSVPPathRsvpHopIpv4Ipv4NextPreviousHopAddressChoice.DECREMENT { + obj.obj.Decrement = NewPatternFlowRSVPPathRsvpHopIpv4Ipv4NextPreviousHopAddressCounter().Msg() + } - obj.obj.PrefixLength = &value return obj } -type IsisLspV4PrefixRedistributionTypeEnum string +// description is TBD +// Value returns a string +func (obj *patternFlowRSVPPathRsvpHopIpv4Ipv4NextPreviousHopAddress) Value() string { -// Enum of RedistributionType on IsisLspV4Prefix -var IsisLspV4PrefixRedistributionType = struct { - UP IsisLspV4PrefixRedistributionTypeEnum - DOWN IsisLspV4PrefixRedistributionTypeEnum -}{ - UP: IsisLspV4PrefixRedistributionTypeEnum("up"), - DOWN: IsisLspV4PrefixRedistributionTypeEnum("down"), -} + if obj.obj.Value == nil { + obj.SetChoice(PatternFlowRSVPPathRsvpHopIpv4Ipv4NextPreviousHopAddressChoice.VALUE) + } -func (obj *isisLspV4Prefix) RedistributionType() IsisLspV4PrefixRedistributionTypeEnum { - return IsisLspV4PrefixRedistributionTypeEnum(obj.obj.RedistributionType.Enum().String()) -} + return *obj.obj.Value -// Up (0)-used when a prefix is initially advertised within the ISIS L3 hierarchy, -// and for all other prefixes in L1 and L2 LSPs. (default) -// Down (1)-used when an L1/L2 router advertises L2 prefixes in L1 LSPs. -// The prefixes are being advertised from a higher level (L2) down to a lower level (L1). -// RedistributionType returns a string -func (obj *isisLspV4Prefix) HasRedistributionType() bool { - return obj.obj.RedistributionType != nil } -func (obj *isisLspV4Prefix) SetRedistributionType(value IsisLspV4PrefixRedistributionTypeEnum) IsisLspV4Prefix { - intValue, ok := otg.IsisLspV4Prefix_RedistributionType_Enum_value[string(value)] - if !ok { - obj.validationErrors = append(obj.validationErrors, fmt.Sprintf( - "%s is not a valid choice on IsisLspV4PrefixRedistributionTypeEnum", string(value))) - return obj - } - enumValue := otg.IsisLspV4Prefix_RedistributionType_Enum(intValue) - obj.obj.RedistributionType = &enumValue +// description is TBD +// Value returns a string +func (obj *patternFlowRSVPPathRsvpHopIpv4Ipv4NextPreviousHopAddress) HasValue() bool { + return obj.obj.Value != nil +} +// description is TBD +// SetValue sets the string value in the PatternFlowRSVPPathRsvpHopIpv4Ipv4NextPreviousHopAddress object +func (obj *patternFlowRSVPPathRsvpHopIpv4Ipv4NextPreviousHopAddress) SetValue(value string) PatternFlowRSVPPathRsvpHopIpv4Ipv4NextPreviousHopAddress { + obj.SetChoice(PatternFlowRSVPPathRsvpHopIpv4Ipv4NextPreviousHopAddressChoice.VALUE) + obj.obj.Value = &value return obj } -// ISIS default metric value. -// DefaultMetric returns a uint32 -func (obj *isisLspV4Prefix) DefaultMetric() uint32 { +// description is TBD +// Values returns a []string +func (obj *patternFlowRSVPPathRsvpHopIpv4Ipv4NextPreviousHopAddress) Values() []string { + if obj.obj.Values == nil { + obj.SetValues([]string{"0.0.0.0"}) + } + return obj.obj.Values +} - return *obj.obj.DefaultMetric +// description is TBD +// SetValues sets the []string value in the PatternFlowRSVPPathRsvpHopIpv4Ipv4NextPreviousHopAddress object +func (obj *patternFlowRSVPPathRsvpHopIpv4Ipv4NextPreviousHopAddress) SetValues(value []string) PatternFlowRSVPPathRsvpHopIpv4Ipv4NextPreviousHopAddress { + obj.SetChoice(PatternFlowRSVPPathRsvpHopIpv4Ipv4NextPreviousHopAddressChoice.VALUES) + if obj.obj.Values == nil { + obj.obj.Values = make([]string, 0) + } + obj.obj.Values = value + return obj } -// ISIS default metric value. -// DefaultMetric returns a uint32 -func (obj *isisLspV4Prefix) HasDefaultMetric() bool { - return obj.obj.DefaultMetric != nil +// description is TBD +// Increment returns a PatternFlowRSVPPathRsvpHopIpv4Ipv4NextPreviousHopAddressCounter +func (obj *patternFlowRSVPPathRsvpHopIpv4Ipv4NextPreviousHopAddress) Increment() PatternFlowRSVPPathRsvpHopIpv4Ipv4NextPreviousHopAddressCounter { + if obj.obj.Increment == nil { + obj.SetChoice(PatternFlowRSVPPathRsvpHopIpv4Ipv4NextPreviousHopAddressChoice.INCREMENT) + } + if obj.incrementHolder == nil { + obj.incrementHolder = &patternFlowRSVPPathRsvpHopIpv4Ipv4NextPreviousHopAddressCounter{obj: obj.obj.Increment} + } + return obj.incrementHolder } -// ISIS default metric value. -// SetDefaultMetric sets the uint32 value in the IsisLspV4Prefix object -func (obj *isisLspV4Prefix) SetDefaultMetric(value uint32) IsisLspV4Prefix { - - obj.obj.DefaultMetric = &value - return obj +// description is TBD +// Increment returns a PatternFlowRSVPPathRsvpHopIpv4Ipv4NextPreviousHopAddressCounter +func (obj *patternFlowRSVPPathRsvpHopIpv4Ipv4NextPreviousHopAddress) HasIncrement() bool { + return obj.obj.Increment != nil } -type IsisLspV4PrefixOriginTypeEnum string - -// Enum of OriginType on IsisLspV4Prefix -var IsisLspV4PrefixOriginType = struct { - INTERNAL IsisLspV4PrefixOriginTypeEnum - EXTERNAL IsisLspV4PrefixOriginTypeEnum -}{ - INTERNAL: IsisLspV4PrefixOriginTypeEnum("internal"), - EXTERNAL: IsisLspV4PrefixOriginTypeEnum("external"), +// description is TBD +// SetIncrement sets the PatternFlowRSVPPathRsvpHopIpv4Ipv4NextPreviousHopAddressCounter value in the PatternFlowRSVPPathRsvpHopIpv4Ipv4NextPreviousHopAddress object +func (obj *patternFlowRSVPPathRsvpHopIpv4Ipv4NextPreviousHopAddress) SetIncrement(value PatternFlowRSVPPathRsvpHopIpv4Ipv4NextPreviousHopAddressCounter) PatternFlowRSVPPathRsvpHopIpv4Ipv4NextPreviousHopAddress { + obj.SetChoice(PatternFlowRSVPPathRsvpHopIpv4Ipv4NextPreviousHopAddressChoice.INCREMENT) + obj.incrementHolder = nil + obj.obj.Increment = value.Msg() + + return obj } -func (obj *isisLspV4Prefix) OriginType() IsisLspV4PrefixOriginTypeEnum { - return IsisLspV4PrefixOriginTypeEnum(obj.obj.OriginType.Enum().String()) +// description is TBD +// Decrement returns a PatternFlowRSVPPathRsvpHopIpv4Ipv4NextPreviousHopAddressCounter +func (obj *patternFlowRSVPPathRsvpHopIpv4Ipv4NextPreviousHopAddress) Decrement() PatternFlowRSVPPathRsvpHopIpv4Ipv4NextPreviousHopAddressCounter { + if obj.obj.Decrement == nil { + obj.SetChoice(PatternFlowRSVPPathRsvpHopIpv4Ipv4NextPreviousHopAddressChoice.DECREMENT) + } + if obj.decrementHolder == nil { + obj.decrementHolder = &patternFlowRSVPPathRsvpHopIpv4Ipv4NextPreviousHopAddressCounter{obj: obj.obj.Decrement} + } + return obj.decrementHolder } -// The origin of the advertised route-internal or external to the ISIS area. Options include the following: -// Internal-for intra-area routes, through Level 1 LSPs. -// External-for inter-area routes redistributed within L1, through Level -// 1 LSPs. -// OriginType returns a string -func (obj *isisLspV4Prefix) HasOriginType() bool { - return obj.obj.OriginType != nil +// description is TBD +// Decrement returns a PatternFlowRSVPPathRsvpHopIpv4Ipv4NextPreviousHopAddressCounter +func (obj *patternFlowRSVPPathRsvpHopIpv4Ipv4NextPreviousHopAddress) HasDecrement() bool { + return obj.obj.Decrement != nil } -func (obj *isisLspV4Prefix) SetOriginType(value IsisLspV4PrefixOriginTypeEnum) IsisLspV4Prefix { - intValue, ok := otg.IsisLspV4Prefix_OriginType_Enum_value[string(value)] - if !ok { - obj.validationErrors = append(obj.validationErrors, fmt.Sprintf( - "%s is not a valid choice on IsisLspV4PrefixOriginTypeEnum", string(value))) - return obj - } - enumValue := otg.IsisLspV4Prefix_OriginType_Enum(intValue) - obj.obj.OriginType = &enumValue +// description is TBD +// SetDecrement sets the PatternFlowRSVPPathRsvpHopIpv4Ipv4NextPreviousHopAddressCounter value in the PatternFlowRSVPPathRsvpHopIpv4Ipv4NextPreviousHopAddress object +func (obj *patternFlowRSVPPathRsvpHopIpv4Ipv4NextPreviousHopAddress) SetDecrement(value PatternFlowRSVPPathRsvpHopIpv4Ipv4NextPreviousHopAddressCounter) PatternFlowRSVPPathRsvpHopIpv4Ipv4NextPreviousHopAddress { + obj.SetChoice(PatternFlowRSVPPathRsvpHopIpv4Ipv4NextPreviousHopAddressChoice.DECREMENT) + obj.decrementHolder = nil + obj.obj.Decrement = value.Msg() return obj } -func (obj *isisLspV4Prefix) validateObj(vObj *validation, set_default bool) { +func (obj *patternFlowRSVPPathRsvpHopIpv4Ipv4NextPreviousHopAddress) validateObj(vObj *validation, set_default bool) { if set_default { obj.setDefault() } - if obj.obj.PrefixLength != nil { + if obj.obj.Value != nil { - if *obj.obj.PrefixLength > 32 { - vObj.validationErrors = append( - vObj.validationErrors, - fmt.Sprintf("0 <= IsisLspV4Prefix.PrefixLength <= 32 but Got %d", *obj.obj.PrefixLength)) + err := obj.validateIpv4(obj.Value()) + if err != nil { + vObj.validationErrors = append(vObj.validationErrors, fmt.Sprintf("%s %s", err.Error(), "on PatternFlowRSVPPathRsvpHopIpv4Ipv4NextPreviousHopAddress.Value")) + } + + } + + if obj.obj.Values != nil { + + err := obj.validateIpv4Slice(obj.Values()) + if err != nil { + vObj.validationErrors = append(vObj.validationErrors, fmt.Sprintf("%s %s", err.Error(), "on PatternFlowRSVPPathRsvpHopIpv4Ipv4NextPreviousHopAddress.Values")) } } + if obj.obj.Increment != nil { + + obj.Increment().validateObj(vObj, set_default) + } + + if obj.obj.Decrement != nil { + + obj.Decrement().validateObj(vObj, set_default) + } + } -func (obj *isisLspV4Prefix) setDefault() { +func (obj *patternFlowRSVPPathRsvpHopIpv4Ipv4NextPreviousHopAddress) setDefault() { + if obj.obj.Choice == nil { + obj.SetChoice(PatternFlowRSVPPathRsvpHopIpv4Ipv4NextPreviousHopAddressChoice.VALUE) + + } } -// ***** IsisLspExtendedV4Prefix ***** -type isisLspExtendedV4Prefix struct { +// ***** PatternFlowRSVPPathRsvpHopIpv4LogicalInterfaceHandle ***** +type patternFlowRSVPPathRsvpHopIpv4LogicalInterfaceHandle struct { validation - obj *otg.IsisLspExtendedV4Prefix - prefixAttributesHolder IsisLspPrefixAttributes + obj *otg.PatternFlowRSVPPathRsvpHopIpv4LogicalInterfaceHandle + incrementHolder PatternFlowRSVPPathRsvpHopIpv4LogicalInterfaceHandleCounter + decrementHolder PatternFlowRSVPPathRsvpHopIpv4LogicalInterfaceHandleCounter } -func NewIsisLspExtendedV4Prefix() IsisLspExtendedV4Prefix { - obj := isisLspExtendedV4Prefix{obj: &otg.IsisLspExtendedV4Prefix{}} +func NewPatternFlowRSVPPathRsvpHopIpv4LogicalInterfaceHandle() PatternFlowRSVPPathRsvpHopIpv4LogicalInterfaceHandle { + obj := patternFlowRSVPPathRsvpHopIpv4LogicalInterfaceHandle{obj: &otg.PatternFlowRSVPPathRsvpHopIpv4LogicalInterfaceHandle{}} obj.setDefault() return &obj } -func (obj *isisLspExtendedV4Prefix) Msg() *otg.IsisLspExtendedV4Prefix { +func (obj *patternFlowRSVPPathRsvpHopIpv4LogicalInterfaceHandle) Msg() *otg.PatternFlowRSVPPathRsvpHopIpv4LogicalInterfaceHandle { return obj.obj } -func (obj *isisLspExtendedV4Prefix) SetMsg(msg *otg.IsisLspExtendedV4Prefix) IsisLspExtendedV4Prefix { +func (obj *patternFlowRSVPPathRsvpHopIpv4LogicalInterfaceHandle) SetMsg(msg *otg.PatternFlowRSVPPathRsvpHopIpv4LogicalInterfaceHandle) PatternFlowRSVPPathRsvpHopIpv4LogicalInterfaceHandle { obj.setNil() proto.Merge(obj.obj, msg) return obj } -func (obj *isisLspExtendedV4Prefix) ToProto() (*otg.IsisLspExtendedV4Prefix, error) { +func (obj *patternFlowRSVPPathRsvpHopIpv4LogicalInterfaceHandle) ToProto() (*otg.PatternFlowRSVPPathRsvpHopIpv4LogicalInterfaceHandle, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -296619,7 +342549,7 @@ func (obj *isisLspExtendedV4Prefix) ToProto() (*otg.IsisLspExtendedV4Prefix, err return obj.Msg(), nil } -func (obj *isisLspExtendedV4Prefix) FromProto(msg *otg.IsisLspExtendedV4Prefix) (IsisLspExtendedV4Prefix, error) { +func (obj *patternFlowRSVPPathRsvpHopIpv4LogicalInterfaceHandle) FromProto(msg *otg.PatternFlowRSVPPathRsvpHopIpv4LogicalInterfaceHandle) (PatternFlowRSVPPathRsvpHopIpv4LogicalInterfaceHandle, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -296628,7 +342558,7 @@ func (obj *isisLspExtendedV4Prefix) FromProto(msg *otg.IsisLspExtendedV4Prefix) return newObj, nil } -func (obj *isisLspExtendedV4Prefix) ToPbText() (string, error) { +func (obj *patternFlowRSVPPathRsvpHopIpv4LogicalInterfaceHandle) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -296640,7 +342570,7 @@ func (obj *isisLspExtendedV4Prefix) ToPbText() (string, error) { return string(protoMarshal), nil } -func (obj *isisLspExtendedV4Prefix) FromPbText(value string) error { +func (obj *patternFlowRSVPPathRsvpHopIpv4LogicalInterfaceHandle) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj @@ -296653,7 +342583,7 @@ func (obj *isisLspExtendedV4Prefix) FromPbText(value string) error { return retObj } -func (obj *isisLspExtendedV4Prefix) ToYaml() (string, error) { +func (obj *patternFlowRSVPPathRsvpHopIpv4LogicalInterfaceHandle) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -296674,7 +342604,7 @@ func (obj *isisLspExtendedV4Prefix) ToYaml() (string, error) { return string(data), nil } -func (obj *isisLspExtendedV4Prefix) FromYaml(value string) error { +func (obj *patternFlowRSVPPathRsvpHopIpv4LogicalInterfaceHandle) FromYaml(value string) error { if value == "" { value = "{}" } @@ -296699,7 +342629,7 @@ func (obj *isisLspExtendedV4Prefix) FromYaml(value string) error { return nil } -func (obj *isisLspExtendedV4Prefix) ToJson() (string, error) { +func (obj *patternFlowRSVPPathRsvpHopIpv4LogicalInterfaceHandle) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -296717,7 +342647,7 @@ func (obj *isisLspExtendedV4Prefix) ToJson() (string, error) { return string(data), nil } -func (obj *isisLspExtendedV4Prefix) FromJson(value string) error { +func (obj *patternFlowRSVPPathRsvpHopIpv4LogicalInterfaceHandle) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -296738,19 +342668,19 @@ func (obj *isisLspExtendedV4Prefix) FromJson(value string) error { return nil } -func (obj *isisLspExtendedV4Prefix) validateToAndFrom() error { +func (obj *patternFlowRSVPPathRsvpHopIpv4LogicalInterfaceHandle) validateToAndFrom() error { // emptyVars() obj.validateObj(&obj.validation, true) return obj.validationResult() } -func (obj *isisLspExtendedV4Prefix) Validate() error { +func (obj *patternFlowRSVPPathRsvpHopIpv4LogicalInterfaceHandle) Validate() error { // emptyVars() obj.validateObj(&obj.validation, false) return obj.validationResult() } -func (obj *isisLspExtendedV4Prefix) String() string { +func (obj *patternFlowRSVPPathRsvpHopIpv4LogicalInterfaceHandle) String() string { str, err := obj.ToYaml() if err != nil { return err.Error() @@ -296758,12 +342688,12 @@ func (obj *isisLspExtendedV4Prefix) String() string { return str } -func (obj *isisLspExtendedV4Prefix) Clone() (IsisLspExtendedV4Prefix, error) { +func (obj *patternFlowRSVPPathRsvpHopIpv4LogicalInterfaceHandle) Clone() (PatternFlowRSVPPathRsvpHopIpv4LogicalInterfaceHandle, error) { vErr := obj.Validate() if vErr != nil { return nil, vErr } - newObj := NewIsisLspExtendedV4Prefix() + newObj := NewPatternFlowRSVPPathRsvpHopIpv4LogicalInterfaceHandle() data, err := proto.Marshal(obj.Msg()) if err != nil { return nil, err @@ -296775,272 +342705,298 @@ func (obj *isisLspExtendedV4Prefix) Clone() (IsisLspExtendedV4Prefix, error) { return newObj, nil } -func (obj *isisLspExtendedV4Prefix) setNil() { - obj.prefixAttributesHolder = nil +func (obj *patternFlowRSVPPathRsvpHopIpv4LogicalInterfaceHandle) setNil() { + obj.incrementHolder = nil + obj.decrementHolder = nil obj.validationErrors = nil obj.warnings = nil obj.constraints = make(map[string]map[string]Constraints) } -// IsisLspExtendedV4Prefix is this group defines attributes of an IPv4 standard prefix. -type IsisLspExtendedV4Prefix interface { +// PatternFlowRSVPPathRsvpHopIpv4LogicalInterfaceHandle is logical Interface Handle (LIH) is used to distinguish logical outgoing interfaces. A node receiving an LIH in a Path message saves its value and returns it in the HOP objects of subsequent Resv messages sent to the node that originated the LIH. The LIH should be identically zero if there is no logical interface handle. +type PatternFlowRSVPPathRsvpHopIpv4LogicalInterfaceHandle interface { Validation - // Msg marshals IsisLspExtendedV4Prefix to protobuf object *otg.IsisLspExtendedV4Prefix + // Msg marshals PatternFlowRSVPPathRsvpHopIpv4LogicalInterfaceHandle to protobuf object *otg.PatternFlowRSVPPathRsvpHopIpv4LogicalInterfaceHandle // and doesn't set defaults - Msg() *otg.IsisLspExtendedV4Prefix - // SetMsg unmarshals IsisLspExtendedV4Prefix from protobuf object *otg.IsisLspExtendedV4Prefix + Msg() *otg.PatternFlowRSVPPathRsvpHopIpv4LogicalInterfaceHandle + // SetMsg unmarshals PatternFlowRSVPPathRsvpHopIpv4LogicalInterfaceHandle from protobuf object *otg.PatternFlowRSVPPathRsvpHopIpv4LogicalInterfaceHandle // and doesn't set defaults - SetMsg(*otg.IsisLspExtendedV4Prefix) IsisLspExtendedV4Prefix - // ToProto marshals IsisLspExtendedV4Prefix to protobuf object *otg.IsisLspExtendedV4Prefix - ToProto() (*otg.IsisLspExtendedV4Prefix, error) - // ToPbText marshals IsisLspExtendedV4Prefix to protobuf text + SetMsg(*otg.PatternFlowRSVPPathRsvpHopIpv4LogicalInterfaceHandle) PatternFlowRSVPPathRsvpHopIpv4LogicalInterfaceHandle + // ToProto marshals PatternFlowRSVPPathRsvpHopIpv4LogicalInterfaceHandle to protobuf object *otg.PatternFlowRSVPPathRsvpHopIpv4LogicalInterfaceHandle + ToProto() (*otg.PatternFlowRSVPPathRsvpHopIpv4LogicalInterfaceHandle, error) + // ToPbText marshals PatternFlowRSVPPathRsvpHopIpv4LogicalInterfaceHandle to protobuf text ToPbText() (string, error) - // ToYaml marshals IsisLspExtendedV4Prefix to YAML text + // ToYaml marshals PatternFlowRSVPPathRsvpHopIpv4LogicalInterfaceHandle to YAML text ToYaml() (string, error) - // ToJson marshals IsisLspExtendedV4Prefix to JSON text + // ToJson marshals PatternFlowRSVPPathRsvpHopIpv4LogicalInterfaceHandle to JSON text ToJson() (string, error) - // FromProto unmarshals IsisLspExtendedV4Prefix from protobuf object *otg.IsisLspExtendedV4Prefix - FromProto(msg *otg.IsisLspExtendedV4Prefix) (IsisLspExtendedV4Prefix, error) - // FromPbText unmarshals IsisLspExtendedV4Prefix from protobuf text + // FromProto unmarshals PatternFlowRSVPPathRsvpHopIpv4LogicalInterfaceHandle from protobuf object *otg.PatternFlowRSVPPathRsvpHopIpv4LogicalInterfaceHandle + FromProto(msg *otg.PatternFlowRSVPPathRsvpHopIpv4LogicalInterfaceHandle) (PatternFlowRSVPPathRsvpHopIpv4LogicalInterfaceHandle, error) + // FromPbText unmarshals PatternFlowRSVPPathRsvpHopIpv4LogicalInterfaceHandle from protobuf text FromPbText(value string) error - // FromYaml unmarshals IsisLspExtendedV4Prefix from YAML text + // FromYaml unmarshals PatternFlowRSVPPathRsvpHopIpv4LogicalInterfaceHandle from YAML text FromYaml(value string) error - // FromJson unmarshals IsisLspExtendedV4Prefix from JSON text + // FromJson unmarshals PatternFlowRSVPPathRsvpHopIpv4LogicalInterfaceHandle from JSON text FromJson(value string) error - // Validate validates IsisLspExtendedV4Prefix + // Validate validates PatternFlowRSVPPathRsvpHopIpv4LogicalInterfaceHandle Validate() error // A stringer function String() string // Clones the object - Clone() (IsisLspExtendedV4Prefix, error) + Clone() (PatternFlowRSVPPathRsvpHopIpv4LogicalInterfaceHandle, error) validateToAndFrom() error validateObj(vObj *validation, set_default bool) setDefault() - // Ipv4Address returns string, set in IsisLspExtendedV4Prefix. - Ipv4Address() string - // SetIpv4Address assigns string provided by user to IsisLspExtendedV4Prefix - SetIpv4Address(value string) IsisLspExtendedV4Prefix - // HasIpv4Address checks if Ipv4Address has been set in IsisLspExtendedV4Prefix - HasIpv4Address() bool - // PrefixLength returns uint32, set in IsisLspExtendedV4Prefix. - PrefixLength() uint32 - // SetPrefixLength assigns uint32 provided by user to IsisLspExtendedV4Prefix - SetPrefixLength(value uint32) IsisLspExtendedV4Prefix - // HasPrefixLength checks if PrefixLength has been set in IsisLspExtendedV4Prefix - HasPrefixLength() bool - // Metric returns uint32, set in IsisLspExtendedV4Prefix. - Metric() uint32 - // SetMetric assigns uint32 provided by user to IsisLspExtendedV4Prefix - SetMetric(value uint32) IsisLspExtendedV4Prefix - // HasMetric checks if Metric has been set in IsisLspExtendedV4Prefix - HasMetric() bool - // RedistributionType returns IsisLspExtendedV4PrefixRedistributionTypeEnum, set in IsisLspExtendedV4Prefix - RedistributionType() IsisLspExtendedV4PrefixRedistributionTypeEnum - // SetRedistributionType assigns IsisLspExtendedV4PrefixRedistributionTypeEnum provided by user to IsisLspExtendedV4Prefix - SetRedistributionType(value IsisLspExtendedV4PrefixRedistributionTypeEnum) IsisLspExtendedV4Prefix - // HasRedistributionType checks if RedistributionType has been set in IsisLspExtendedV4Prefix - HasRedistributionType() bool - // PrefixAttributes returns IsisLspPrefixAttributes, set in IsisLspExtendedV4Prefix. - // IsisLspPrefixAttributes is this contains the properties of ISIS Prefix attributes for the extended IPv4 and IPv6 reachability. https://www.rfc-editor.org/rfc/rfc7794.html - PrefixAttributes() IsisLspPrefixAttributes - // SetPrefixAttributes assigns IsisLspPrefixAttributes provided by user to IsisLspExtendedV4Prefix. - // IsisLspPrefixAttributes is this contains the properties of ISIS Prefix attributes for the extended IPv4 and IPv6 reachability. https://www.rfc-editor.org/rfc/rfc7794.html - SetPrefixAttributes(value IsisLspPrefixAttributes) IsisLspExtendedV4Prefix - // HasPrefixAttributes checks if PrefixAttributes has been set in IsisLspExtendedV4Prefix - HasPrefixAttributes() bool + // Choice returns PatternFlowRSVPPathRsvpHopIpv4LogicalInterfaceHandleChoiceEnum, set in PatternFlowRSVPPathRsvpHopIpv4LogicalInterfaceHandle + Choice() PatternFlowRSVPPathRsvpHopIpv4LogicalInterfaceHandleChoiceEnum + // SetChoice assigns PatternFlowRSVPPathRsvpHopIpv4LogicalInterfaceHandleChoiceEnum provided by user to PatternFlowRSVPPathRsvpHopIpv4LogicalInterfaceHandle + SetChoice(value PatternFlowRSVPPathRsvpHopIpv4LogicalInterfaceHandleChoiceEnum) PatternFlowRSVPPathRsvpHopIpv4LogicalInterfaceHandle + // HasChoice checks if Choice has been set in PatternFlowRSVPPathRsvpHopIpv4LogicalInterfaceHandle + HasChoice() bool + // Value returns uint32, set in PatternFlowRSVPPathRsvpHopIpv4LogicalInterfaceHandle. + Value() uint32 + // SetValue assigns uint32 provided by user to PatternFlowRSVPPathRsvpHopIpv4LogicalInterfaceHandle + SetValue(value uint32) PatternFlowRSVPPathRsvpHopIpv4LogicalInterfaceHandle + // HasValue checks if Value has been set in PatternFlowRSVPPathRsvpHopIpv4LogicalInterfaceHandle + HasValue() bool + // Values returns []uint32, set in PatternFlowRSVPPathRsvpHopIpv4LogicalInterfaceHandle. + Values() []uint32 + // SetValues assigns []uint32 provided by user to PatternFlowRSVPPathRsvpHopIpv4LogicalInterfaceHandle + SetValues(value []uint32) PatternFlowRSVPPathRsvpHopIpv4LogicalInterfaceHandle + // Increment returns PatternFlowRSVPPathRsvpHopIpv4LogicalInterfaceHandleCounter, set in PatternFlowRSVPPathRsvpHopIpv4LogicalInterfaceHandle. + // PatternFlowRSVPPathRsvpHopIpv4LogicalInterfaceHandleCounter is integer counter pattern + Increment() PatternFlowRSVPPathRsvpHopIpv4LogicalInterfaceHandleCounter + // SetIncrement assigns PatternFlowRSVPPathRsvpHopIpv4LogicalInterfaceHandleCounter provided by user to PatternFlowRSVPPathRsvpHopIpv4LogicalInterfaceHandle. + // PatternFlowRSVPPathRsvpHopIpv4LogicalInterfaceHandleCounter is integer counter pattern + SetIncrement(value PatternFlowRSVPPathRsvpHopIpv4LogicalInterfaceHandleCounter) PatternFlowRSVPPathRsvpHopIpv4LogicalInterfaceHandle + // HasIncrement checks if Increment has been set in PatternFlowRSVPPathRsvpHopIpv4LogicalInterfaceHandle + HasIncrement() bool + // Decrement returns PatternFlowRSVPPathRsvpHopIpv4LogicalInterfaceHandleCounter, set in PatternFlowRSVPPathRsvpHopIpv4LogicalInterfaceHandle. + // PatternFlowRSVPPathRsvpHopIpv4LogicalInterfaceHandleCounter is integer counter pattern + Decrement() PatternFlowRSVPPathRsvpHopIpv4LogicalInterfaceHandleCounter + // SetDecrement assigns PatternFlowRSVPPathRsvpHopIpv4LogicalInterfaceHandleCounter provided by user to PatternFlowRSVPPathRsvpHopIpv4LogicalInterfaceHandle. + // PatternFlowRSVPPathRsvpHopIpv4LogicalInterfaceHandleCounter is integer counter pattern + SetDecrement(value PatternFlowRSVPPathRsvpHopIpv4LogicalInterfaceHandleCounter) PatternFlowRSVPPathRsvpHopIpv4LogicalInterfaceHandle + // HasDecrement checks if Decrement has been set in PatternFlowRSVPPathRsvpHopIpv4LogicalInterfaceHandle + HasDecrement() bool setNil() } -// An IPv4 unicast prefix reachable via the originator of this LSP. -// Ipv4Address returns a string -func (obj *isisLspExtendedV4Prefix) Ipv4Address() string { - - return *obj.obj.Ipv4Address +type PatternFlowRSVPPathRsvpHopIpv4LogicalInterfaceHandleChoiceEnum string +// Enum of Choice on PatternFlowRSVPPathRsvpHopIpv4LogicalInterfaceHandle +var PatternFlowRSVPPathRsvpHopIpv4LogicalInterfaceHandleChoice = struct { + VALUE PatternFlowRSVPPathRsvpHopIpv4LogicalInterfaceHandleChoiceEnum + VALUES PatternFlowRSVPPathRsvpHopIpv4LogicalInterfaceHandleChoiceEnum + INCREMENT PatternFlowRSVPPathRsvpHopIpv4LogicalInterfaceHandleChoiceEnum + DECREMENT PatternFlowRSVPPathRsvpHopIpv4LogicalInterfaceHandleChoiceEnum +}{ + VALUE: PatternFlowRSVPPathRsvpHopIpv4LogicalInterfaceHandleChoiceEnum("value"), + VALUES: PatternFlowRSVPPathRsvpHopIpv4LogicalInterfaceHandleChoiceEnum("values"), + INCREMENT: PatternFlowRSVPPathRsvpHopIpv4LogicalInterfaceHandleChoiceEnum("increment"), + DECREMENT: PatternFlowRSVPPathRsvpHopIpv4LogicalInterfaceHandleChoiceEnum("decrement"), } -// An IPv4 unicast prefix reachable via the originator of this LSP. -// Ipv4Address returns a string -func (obj *isisLspExtendedV4Prefix) HasIpv4Address() bool { - return obj.obj.Ipv4Address != nil +func (obj *patternFlowRSVPPathRsvpHopIpv4LogicalInterfaceHandle) Choice() PatternFlowRSVPPathRsvpHopIpv4LogicalInterfaceHandleChoiceEnum { + return PatternFlowRSVPPathRsvpHopIpv4LogicalInterfaceHandleChoiceEnum(obj.obj.Choice.Enum().String()) } -// An IPv4 unicast prefix reachable via the originator of this LSP. -// SetIpv4Address sets the string value in the IsisLspExtendedV4Prefix object -func (obj *isisLspExtendedV4Prefix) SetIpv4Address(value string) IsisLspExtendedV4Prefix { - - obj.obj.Ipv4Address = &value - return obj +// description is TBD +// Choice returns a string +func (obj *patternFlowRSVPPathRsvpHopIpv4LogicalInterfaceHandle) HasChoice() bool { + return obj.obj.Choice != nil } -// The length of the IPv4 prefix. -// PrefixLength returns a uint32 -func (obj *isisLspExtendedV4Prefix) PrefixLength() uint32 { +func (obj *patternFlowRSVPPathRsvpHopIpv4LogicalInterfaceHandle) SetChoice(value PatternFlowRSVPPathRsvpHopIpv4LogicalInterfaceHandleChoiceEnum) PatternFlowRSVPPathRsvpHopIpv4LogicalInterfaceHandle { + intValue, ok := otg.PatternFlowRSVPPathRsvpHopIpv4LogicalInterfaceHandle_Choice_Enum_value[string(value)] + if !ok { + obj.validationErrors = append(obj.validationErrors, fmt.Sprintf( + "%s is not a valid choice on PatternFlowRSVPPathRsvpHopIpv4LogicalInterfaceHandleChoiceEnum", string(value))) + return obj + } + enumValue := otg.PatternFlowRSVPPathRsvpHopIpv4LogicalInterfaceHandle_Choice_Enum(intValue) + obj.obj.Choice = &enumValue + obj.obj.Decrement = nil + obj.decrementHolder = nil + obj.obj.Increment = nil + obj.incrementHolder = nil + obj.obj.Values = nil + obj.obj.Value = nil - return *obj.obj.PrefixLength + if value == PatternFlowRSVPPathRsvpHopIpv4LogicalInterfaceHandleChoice.VALUE { + defaultValue := uint32(0) + obj.obj.Value = &defaultValue + } -} + if value == PatternFlowRSVPPathRsvpHopIpv4LogicalInterfaceHandleChoice.VALUES { + defaultValue := []uint32{0} + obj.obj.Values = defaultValue + } -// The length of the IPv4 prefix. -// PrefixLength returns a uint32 -func (obj *isisLspExtendedV4Prefix) HasPrefixLength() bool { - return obj.obj.PrefixLength != nil -} + if value == PatternFlowRSVPPathRsvpHopIpv4LogicalInterfaceHandleChoice.INCREMENT { + obj.obj.Increment = NewPatternFlowRSVPPathRsvpHopIpv4LogicalInterfaceHandleCounter().Msg() + } -// The length of the IPv4 prefix. -// SetPrefixLength sets the uint32 value in the IsisLspExtendedV4Prefix object -func (obj *isisLspExtendedV4Prefix) SetPrefixLength(value uint32) IsisLspExtendedV4Prefix { + if value == PatternFlowRSVPPathRsvpHopIpv4LogicalInterfaceHandleChoice.DECREMENT { + obj.obj.Decrement = NewPatternFlowRSVPPathRsvpHopIpv4LogicalInterfaceHandleCounter().Msg() + } - obj.obj.PrefixLength = &value return obj } -// ISIS wide metric. -// Metric returns a uint32 -func (obj *isisLspExtendedV4Prefix) Metric() uint32 { +// description is TBD +// Value returns a uint32 +func (obj *patternFlowRSVPPathRsvpHopIpv4LogicalInterfaceHandle) Value() uint32 { - return *obj.obj.Metric + if obj.obj.Value == nil { + obj.SetChoice(PatternFlowRSVPPathRsvpHopIpv4LogicalInterfaceHandleChoice.VALUE) + } -} + return *obj.obj.Value -// ISIS wide metric. -// Metric returns a uint32 -func (obj *isisLspExtendedV4Prefix) HasMetric() bool { - return obj.obj.Metric != nil } -// ISIS wide metric. -// SetMetric sets the uint32 value in the IsisLspExtendedV4Prefix object -func (obj *isisLspExtendedV4Prefix) SetMetric(value uint32) IsisLspExtendedV4Prefix { +// description is TBD +// Value returns a uint32 +func (obj *patternFlowRSVPPathRsvpHopIpv4LogicalInterfaceHandle) HasValue() bool { + return obj.obj.Value != nil +} - obj.obj.Metric = &value +// description is TBD +// SetValue sets the uint32 value in the PatternFlowRSVPPathRsvpHopIpv4LogicalInterfaceHandle object +func (obj *patternFlowRSVPPathRsvpHopIpv4LogicalInterfaceHandle) SetValue(value uint32) PatternFlowRSVPPathRsvpHopIpv4LogicalInterfaceHandle { + obj.SetChoice(PatternFlowRSVPPathRsvpHopIpv4LogicalInterfaceHandleChoice.VALUE) + obj.obj.Value = &value return obj } -type IsisLspExtendedV4PrefixRedistributionTypeEnum string +// description is TBD +// Values returns a []uint32 +func (obj *patternFlowRSVPPathRsvpHopIpv4LogicalInterfaceHandle) Values() []uint32 { + if obj.obj.Values == nil { + obj.SetValues([]uint32{0}) + } + return obj.obj.Values +} -// Enum of RedistributionType on IsisLspExtendedV4Prefix -var IsisLspExtendedV4PrefixRedistributionType = struct { - UP IsisLspExtendedV4PrefixRedistributionTypeEnum - DOWN IsisLspExtendedV4PrefixRedistributionTypeEnum -}{ - UP: IsisLspExtendedV4PrefixRedistributionTypeEnum("up"), - DOWN: IsisLspExtendedV4PrefixRedistributionTypeEnum("down"), +// description is TBD +// SetValues sets the []uint32 value in the PatternFlowRSVPPathRsvpHopIpv4LogicalInterfaceHandle object +func (obj *patternFlowRSVPPathRsvpHopIpv4LogicalInterfaceHandle) SetValues(value []uint32) PatternFlowRSVPPathRsvpHopIpv4LogicalInterfaceHandle { + obj.SetChoice(PatternFlowRSVPPathRsvpHopIpv4LogicalInterfaceHandleChoice.VALUES) + if obj.obj.Values == nil { + obj.obj.Values = make([]uint32, 0) + } + obj.obj.Values = value + + return obj } -func (obj *isisLspExtendedV4Prefix) RedistributionType() IsisLspExtendedV4PrefixRedistributionTypeEnum { - return IsisLspExtendedV4PrefixRedistributionTypeEnum(obj.obj.RedistributionType.Enum().String()) +// description is TBD +// Increment returns a PatternFlowRSVPPathRsvpHopIpv4LogicalInterfaceHandleCounter +func (obj *patternFlowRSVPPathRsvpHopIpv4LogicalInterfaceHandle) Increment() PatternFlowRSVPPathRsvpHopIpv4LogicalInterfaceHandleCounter { + if obj.obj.Increment == nil { + obj.SetChoice(PatternFlowRSVPPathRsvpHopIpv4LogicalInterfaceHandleChoice.INCREMENT) + } + if obj.incrementHolder == nil { + obj.incrementHolder = &patternFlowRSVPPathRsvpHopIpv4LogicalInterfaceHandleCounter{obj: obj.obj.Increment} + } + return obj.incrementHolder } -// Up (0)-used when a prefix is initially advertised within the ISIS L3 hierarchy, -// and for all other prefixes in L1 and L2 LSPs. (default) -// Down (1)-used when an L1/L2 router advertises L2 prefixes in L1 LSPs. -// The prefixes are being advertised from a higher level (L2) down to a lower level (L1). -// RedistributionType returns a string -func (obj *isisLspExtendedV4Prefix) HasRedistributionType() bool { - return obj.obj.RedistributionType != nil +// description is TBD +// Increment returns a PatternFlowRSVPPathRsvpHopIpv4LogicalInterfaceHandleCounter +func (obj *patternFlowRSVPPathRsvpHopIpv4LogicalInterfaceHandle) HasIncrement() bool { + return obj.obj.Increment != nil } -func (obj *isisLspExtendedV4Prefix) SetRedistributionType(value IsisLspExtendedV4PrefixRedistributionTypeEnum) IsisLspExtendedV4Prefix { - intValue, ok := otg.IsisLspExtendedV4Prefix_RedistributionType_Enum_value[string(value)] - if !ok { - obj.validationErrors = append(obj.validationErrors, fmt.Sprintf( - "%s is not a valid choice on IsisLspExtendedV4PrefixRedistributionTypeEnum", string(value))) - return obj - } - enumValue := otg.IsisLspExtendedV4Prefix_RedistributionType_Enum(intValue) - obj.obj.RedistributionType = &enumValue +// description is TBD +// SetIncrement sets the PatternFlowRSVPPathRsvpHopIpv4LogicalInterfaceHandleCounter value in the PatternFlowRSVPPathRsvpHopIpv4LogicalInterfaceHandle object +func (obj *patternFlowRSVPPathRsvpHopIpv4LogicalInterfaceHandle) SetIncrement(value PatternFlowRSVPPathRsvpHopIpv4LogicalInterfaceHandleCounter) PatternFlowRSVPPathRsvpHopIpv4LogicalInterfaceHandle { + obj.SetChoice(PatternFlowRSVPPathRsvpHopIpv4LogicalInterfaceHandleChoice.INCREMENT) + obj.incrementHolder = nil + obj.obj.Increment = value.Msg() return obj } // description is TBD -// PrefixAttributes returns a IsisLspPrefixAttributes -func (obj *isisLspExtendedV4Prefix) PrefixAttributes() IsisLspPrefixAttributes { - if obj.obj.PrefixAttributes == nil { - obj.obj.PrefixAttributes = NewIsisLspPrefixAttributes().Msg() +// Decrement returns a PatternFlowRSVPPathRsvpHopIpv4LogicalInterfaceHandleCounter +func (obj *patternFlowRSVPPathRsvpHopIpv4LogicalInterfaceHandle) Decrement() PatternFlowRSVPPathRsvpHopIpv4LogicalInterfaceHandleCounter { + if obj.obj.Decrement == nil { + obj.SetChoice(PatternFlowRSVPPathRsvpHopIpv4LogicalInterfaceHandleChoice.DECREMENT) } - if obj.prefixAttributesHolder == nil { - obj.prefixAttributesHolder = &isisLspPrefixAttributes{obj: obj.obj.PrefixAttributes} + if obj.decrementHolder == nil { + obj.decrementHolder = &patternFlowRSVPPathRsvpHopIpv4LogicalInterfaceHandleCounter{obj: obj.obj.Decrement} } - return obj.prefixAttributesHolder + return obj.decrementHolder } // description is TBD -// PrefixAttributes returns a IsisLspPrefixAttributes -func (obj *isisLspExtendedV4Prefix) HasPrefixAttributes() bool { - return obj.obj.PrefixAttributes != nil +// Decrement returns a PatternFlowRSVPPathRsvpHopIpv4LogicalInterfaceHandleCounter +func (obj *patternFlowRSVPPathRsvpHopIpv4LogicalInterfaceHandle) HasDecrement() bool { + return obj.obj.Decrement != nil } // description is TBD -// SetPrefixAttributes sets the IsisLspPrefixAttributes value in the IsisLspExtendedV4Prefix object -func (obj *isisLspExtendedV4Prefix) SetPrefixAttributes(value IsisLspPrefixAttributes) IsisLspExtendedV4Prefix { - - obj.prefixAttributesHolder = nil - obj.obj.PrefixAttributes = value.Msg() +// SetDecrement sets the PatternFlowRSVPPathRsvpHopIpv4LogicalInterfaceHandleCounter value in the PatternFlowRSVPPathRsvpHopIpv4LogicalInterfaceHandle object +func (obj *patternFlowRSVPPathRsvpHopIpv4LogicalInterfaceHandle) SetDecrement(value PatternFlowRSVPPathRsvpHopIpv4LogicalInterfaceHandleCounter) PatternFlowRSVPPathRsvpHopIpv4LogicalInterfaceHandle { + obj.SetChoice(PatternFlowRSVPPathRsvpHopIpv4LogicalInterfaceHandleChoice.DECREMENT) + obj.decrementHolder = nil + obj.obj.Decrement = value.Msg() return obj } -func (obj *isisLspExtendedV4Prefix) validateObj(vObj *validation, set_default bool) { +func (obj *patternFlowRSVPPathRsvpHopIpv4LogicalInterfaceHandle) validateObj(vObj *validation, set_default bool) { if set_default { obj.setDefault() } - if obj.obj.Ipv4Address != nil { - - err := obj.validateIpv4(obj.Ipv4Address()) - if err != nil { - vObj.validationErrors = append(vObj.validationErrors, fmt.Sprintf("%s %s", err.Error(), "on IsisLspExtendedV4Prefix.Ipv4Address")) - } - - } - - if obj.obj.PrefixLength != nil { - - if *obj.obj.PrefixLength > 32 { - vObj.validationErrors = append( - vObj.validationErrors, - fmt.Sprintf("0 <= IsisLspExtendedV4Prefix.PrefixLength <= 32 but Got %d", *obj.obj.PrefixLength)) - } + if obj.obj.Increment != nil { + obj.Increment().validateObj(vObj, set_default) } - if obj.obj.PrefixAttributes != nil { + if obj.obj.Decrement != nil { - obj.PrefixAttributes().validateObj(vObj, set_default) + obj.Decrement().validateObj(vObj, set_default) } } -func (obj *isisLspExtendedV4Prefix) setDefault() { +func (obj *patternFlowRSVPPathRsvpHopIpv4LogicalInterfaceHandle) setDefault() { + if obj.obj.Choice == nil { + obj.SetChoice(PatternFlowRSVPPathRsvpHopIpv4LogicalInterfaceHandleChoice.VALUE) + + } } -// ***** IsisLspV6Prefix ***** -type isisLspV6Prefix struct { +// ***** PatternFlowRSVPPathTimeValuesType1RefreshPeriodR ***** +type patternFlowRSVPPathTimeValuesType1RefreshPeriodR struct { validation - obj *otg.IsisLspV6Prefix - prefixAttributesHolder IsisLspPrefixAttributes + obj *otg.PatternFlowRSVPPathTimeValuesType1RefreshPeriodR + incrementHolder PatternFlowRSVPPathTimeValuesType1RefreshPeriodRCounter + decrementHolder PatternFlowRSVPPathTimeValuesType1RefreshPeriodRCounter } -func NewIsisLspV6Prefix() IsisLspV6Prefix { - obj := isisLspV6Prefix{obj: &otg.IsisLspV6Prefix{}} +func NewPatternFlowRSVPPathTimeValuesType1RefreshPeriodR() PatternFlowRSVPPathTimeValuesType1RefreshPeriodR { + obj := patternFlowRSVPPathTimeValuesType1RefreshPeriodR{obj: &otg.PatternFlowRSVPPathTimeValuesType1RefreshPeriodR{}} obj.setDefault() return &obj } -func (obj *isisLspV6Prefix) Msg() *otg.IsisLspV6Prefix { +func (obj *patternFlowRSVPPathTimeValuesType1RefreshPeriodR) Msg() *otg.PatternFlowRSVPPathTimeValuesType1RefreshPeriodR { return obj.obj } -func (obj *isisLspV6Prefix) SetMsg(msg *otg.IsisLspV6Prefix) IsisLspV6Prefix { +func (obj *patternFlowRSVPPathTimeValuesType1RefreshPeriodR) SetMsg(msg *otg.PatternFlowRSVPPathTimeValuesType1RefreshPeriodR) PatternFlowRSVPPathTimeValuesType1RefreshPeriodR { obj.setNil() proto.Merge(obj.obj, msg) return obj } -func (obj *isisLspV6Prefix) ToProto() (*otg.IsisLspV6Prefix, error) { +func (obj *patternFlowRSVPPathTimeValuesType1RefreshPeriodR) ToProto() (*otg.PatternFlowRSVPPathTimeValuesType1RefreshPeriodR, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -297048,7 +343004,7 @@ func (obj *isisLspV6Prefix) ToProto() (*otg.IsisLspV6Prefix, error) { return obj.Msg(), nil } -func (obj *isisLspV6Prefix) FromProto(msg *otg.IsisLspV6Prefix) (IsisLspV6Prefix, error) { +func (obj *patternFlowRSVPPathTimeValuesType1RefreshPeriodR) FromProto(msg *otg.PatternFlowRSVPPathTimeValuesType1RefreshPeriodR) (PatternFlowRSVPPathTimeValuesType1RefreshPeriodR, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -297057,7 +343013,7 @@ func (obj *isisLspV6Prefix) FromProto(msg *otg.IsisLspV6Prefix) (IsisLspV6Prefix return newObj, nil } -func (obj *isisLspV6Prefix) ToPbText() (string, error) { +func (obj *patternFlowRSVPPathTimeValuesType1RefreshPeriodR) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -297069,7 +343025,7 @@ func (obj *isisLspV6Prefix) ToPbText() (string, error) { return string(protoMarshal), nil } -func (obj *isisLspV6Prefix) FromPbText(value string) error { +func (obj *patternFlowRSVPPathTimeValuesType1RefreshPeriodR) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj @@ -297082,7 +343038,7 @@ func (obj *isisLspV6Prefix) FromPbText(value string) error { return retObj } -func (obj *isisLspV6Prefix) ToYaml() (string, error) { +func (obj *patternFlowRSVPPathTimeValuesType1RefreshPeriodR) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -297103,7 +343059,7 @@ func (obj *isisLspV6Prefix) ToYaml() (string, error) { return string(data), nil } -func (obj *isisLspV6Prefix) FromYaml(value string) error { +func (obj *patternFlowRSVPPathTimeValuesType1RefreshPeriodR) FromYaml(value string) error { if value == "" { value = "{}" } @@ -297128,7 +343084,7 @@ func (obj *isisLspV6Prefix) FromYaml(value string) error { return nil } -func (obj *isisLspV6Prefix) ToJson() (string, error) { +func (obj *patternFlowRSVPPathTimeValuesType1RefreshPeriodR) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -297146,7 +343102,7 @@ func (obj *isisLspV6Prefix) ToJson() (string, error) { return string(data), nil } -func (obj *isisLspV6Prefix) FromJson(value string) error { +func (obj *patternFlowRSVPPathTimeValuesType1RefreshPeriodR) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -297167,19 +343123,19 @@ func (obj *isisLspV6Prefix) FromJson(value string) error { return nil } -func (obj *isisLspV6Prefix) validateToAndFrom() error { +func (obj *patternFlowRSVPPathTimeValuesType1RefreshPeriodR) validateToAndFrom() error { // emptyVars() obj.validateObj(&obj.validation, true) return obj.validationResult() } -func (obj *isisLspV6Prefix) Validate() error { +func (obj *patternFlowRSVPPathTimeValuesType1RefreshPeriodR) Validate() error { // emptyVars() obj.validateObj(&obj.validation, false) return obj.validationResult() } -func (obj *isisLspV6Prefix) String() string { +func (obj *patternFlowRSVPPathTimeValuesType1RefreshPeriodR) String() string { str, err := obj.ToYaml() if err != nil { return err.Error() @@ -297187,12 +343143,12 @@ func (obj *isisLspV6Prefix) String() string { return str } -func (obj *isisLspV6Prefix) Clone() (IsisLspV6Prefix, error) { +func (obj *patternFlowRSVPPathTimeValuesType1RefreshPeriodR) Clone() (PatternFlowRSVPPathTimeValuesType1RefreshPeriodR, error) { vErr := obj.Validate() if vErr != nil { return nil, vErr } - newObj := NewIsisLspV6Prefix() + newObj := NewPatternFlowRSVPPathTimeValuesType1RefreshPeriodR() data, err := proto.Marshal(obj.Msg()) if err != nil { return nil, err @@ -297204,324 +343160,297 @@ func (obj *isisLspV6Prefix) Clone() (IsisLspV6Prefix, error) { return newObj, nil } -func (obj *isisLspV6Prefix) setNil() { - obj.prefixAttributesHolder = nil +func (obj *patternFlowRSVPPathTimeValuesType1RefreshPeriodR) setNil() { + obj.incrementHolder = nil + obj.decrementHolder = nil obj.validationErrors = nil obj.warnings = nil obj.constraints = make(map[string]map[string]Constraints) } -// IsisLspV6Prefix is it defines attributes of an IPv6 standard prefix. -type IsisLspV6Prefix interface { +// PatternFlowRSVPPathTimeValuesType1RefreshPeriodR is the refresh timeout period R used to generate this message;in milliseconds. +type PatternFlowRSVPPathTimeValuesType1RefreshPeriodR interface { Validation - // Msg marshals IsisLspV6Prefix to protobuf object *otg.IsisLspV6Prefix + // Msg marshals PatternFlowRSVPPathTimeValuesType1RefreshPeriodR to protobuf object *otg.PatternFlowRSVPPathTimeValuesType1RefreshPeriodR // and doesn't set defaults - Msg() *otg.IsisLspV6Prefix - // SetMsg unmarshals IsisLspV6Prefix from protobuf object *otg.IsisLspV6Prefix + Msg() *otg.PatternFlowRSVPPathTimeValuesType1RefreshPeriodR + // SetMsg unmarshals PatternFlowRSVPPathTimeValuesType1RefreshPeriodR from protobuf object *otg.PatternFlowRSVPPathTimeValuesType1RefreshPeriodR // and doesn't set defaults - SetMsg(*otg.IsisLspV6Prefix) IsisLspV6Prefix - // ToProto marshals IsisLspV6Prefix to protobuf object *otg.IsisLspV6Prefix - ToProto() (*otg.IsisLspV6Prefix, error) - // ToPbText marshals IsisLspV6Prefix to protobuf text + SetMsg(*otg.PatternFlowRSVPPathTimeValuesType1RefreshPeriodR) PatternFlowRSVPPathTimeValuesType1RefreshPeriodR + // ToProto marshals PatternFlowRSVPPathTimeValuesType1RefreshPeriodR to protobuf object *otg.PatternFlowRSVPPathTimeValuesType1RefreshPeriodR + ToProto() (*otg.PatternFlowRSVPPathTimeValuesType1RefreshPeriodR, error) + // ToPbText marshals PatternFlowRSVPPathTimeValuesType1RefreshPeriodR to protobuf text ToPbText() (string, error) - // ToYaml marshals IsisLspV6Prefix to YAML text + // ToYaml marshals PatternFlowRSVPPathTimeValuesType1RefreshPeriodR to YAML text ToYaml() (string, error) - // ToJson marshals IsisLspV6Prefix to JSON text + // ToJson marshals PatternFlowRSVPPathTimeValuesType1RefreshPeriodR to JSON text ToJson() (string, error) - // FromProto unmarshals IsisLspV6Prefix from protobuf object *otg.IsisLspV6Prefix - FromProto(msg *otg.IsisLspV6Prefix) (IsisLspV6Prefix, error) - // FromPbText unmarshals IsisLspV6Prefix from protobuf text + // FromProto unmarshals PatternFlowRSVPPathTimeValuesType1RefreshPeriodR from protobuf object *otg.PatternFlowRSVPPathTimeValuesType1RefreshPeriodR + FromProto(msg *otg.PatternFlowRSVPPathTimeValuesType1RefreshPeriodR) (PatternFlowRSVPPathTimeValuesType1RefreshPeriodR, error) + // FromPbText unmarshals PatternFlowRSVPPathTimeValuesType1RefreshPeriodR from protobuf text FromPbText(value string) error - // FromYaml unmarshals IsisLspV6Prefix from YAML text + // FromYaml unmarshals PatternFlowRSVPPathTimeValuesType1RefreshPeriodR from YAML text FromYaml(value string) error - // FromJson unmarshals IsisLspV6Prefix from JSON text + // FromJson unmarshals PatternFlowRSVPPathTimeValuesType1RefreshPeriodR from JSON text FromJson(value string) error - // Validate validates IsisLspV6Prefix + // Validate validates PatternFlowRSVPPathTimeValuesType1RefreshPeriodR Validate() error // A stringer function String() string // Clones the object - Clone() (IsisLspV6Prefix, error) + Clone() (PatternFlowRSVPPathTimeValuesType1RefreshPeriodR, error) validateToAndFrom() error validateObj(vObj *validation, set_default bool) setDefault() - // Ipv6Address returns string, set in IsisLspV6Prefix. - Ipv6Address() string - // SetIpv6Address assigns string provided by user to IsisLspV6Prefix - SetIpv6Address(value string) IsisLspV6Prefix - // HasIpv6Address checks if Ipv6Address has been set in IsisLspV6Prefix - HasIpv6Address() bool - // PrefixLength returns uint32, set in IsisLspV6Prefix. - PrefixLength() uint32 - // SetPrefixLength assigns uint32 provided by user to IsisLspV6Prefix - SetPrefixLength(value uint32) IsisLspV6Prefix - // HasPrefixLength checks if PrefixLength has been set in IsisLspV6Prefix - HasPrefixLength() bool - // Metric returns uint32, set in IsisLspV6Prefix. - Metric() uint32 - // SetMetric assigns uint32 provided by user to IsisLspV6Prefix - SetMetric(value uint32) IsisLspV6Prefix - // HasMetric checks if Metric has been set in IsisLspV6Prefix - HasMetric() bool - // RedistributionType returns IsisLspV6PrefixRedistributionTypeEnum, set in IsisLspV6Prefix - RedistributionType() IsisLspV6PrefixRedistributionTypeEnum - // SetRedistributionType assigns IsisLspV6PrefixRedistributionTypeEnum provided by user to IsisLspV6Prefix - SetRedistributionType(value IsisLspV6PrefixRedistributionTypeEnum) IsisLspV6Prefix - // HasRedistributionType checks if RedistributionType has been set in IsisLspV6Prefix - HasRedistributionType() bool - // OriginType returns IsisLspV6PrefixOriginTypeEnum, set in IsisLspV6Prefix - OriginType() IsisLspV6PrefixOriginTypeEnum - // SetOriginType assigns IsisLspV6PrefixOriginTypeEnum provided by user to IsisLspV6Prefix - SetOriginType(value IsisLspV6PrefixOriginTypeEnum) IsisLspV6Prefix - // HasOriginType checks if OriginType has been set in IsisLspV6Prefix - HasOriginType() bool - // PrefixAttributes returns IsisLspPrefixAttributes, set in IsisLspV6Prefix. - // IsisLspPrefixAttributes is this contains the properties of ISIS Prefix attributes for the extended IPv4 and IPv6 reachability. https://www.rfc-editor.org/rfc/rfc7794.html - PrefixAttributes() IsisLspPrefixAttributes - // SetPrefixAttributes assigns IsisLspPrefixAttributes provided by user to IsisLspV6Prefix. - // IsisLspPrefixAttributes is this contains the properties of ISIS Prefix attributes for the extended IPv4 and IPv6 reachability. https://www.rfc-editor.org/rfc/rfc7794.html - SetPrefixAttributes(value IsisLspPrefixAttributes) IsisLspV6Prefix - // HasPrefixAttributes checks if PrefixAttributes has been set in IsisLspV6Prefix - HasPrefixAttributes() bool + // Choice returns PatternFlowRSVPPathTimeValuesType1RefreshPeriodRChoiceEnum, set in PatternFlowRSVPPathTimeValuesType1RefreshPeriodR + Choice() PatternFlowRSVPPathTimeValuesType1RefreshPeriodRChoiceEnum + // SetChoice assigns PatternFlowRSVPPathTimeValuesType1RefreshPeriodRChoiceEnum provided by user to PatternFlowRSVPPathTimeValuesType1RefreshPeriodR + SetChoice(value PatternFlowRSVPPathTimeValuesType1RefreshPeriodRChoiceEnum) PatternFlowRSVPPathTimeValuesType1RefreshPeriodR + // HasChoice checks if Choice has been set in PatternFlowRSVPPathTimeValuesType1RefreshPeriodR + HasChoice() bool + // Value returns uint32, set in PatternFlowRSVPPathTimeValuesType1RefreshPeriodR. + Value() uint32 + // SetValue assigns uint32 provided by user to PatternFlowRSVPPathTimeValuesType1RefreshPeriodR + SetValue(value uint32) PatternFlowRSVPPathTimeValuesType1RefreshPeriodR + // HasValue checks if Value has been set in PatternFlowRSVPPathTimeValuesType1RefreshPeriodR + HasValue() bool + // Values returns []uint32, set in PatternFlowRSVPPathTimeValuesType1RefreshPeriodR. + Values() []uint32 + // SetValues assigns []uint32 provided by user to PatternFlowRSVPPathTimeValuesType1RefreshPeriodR + SetValues(value []uint32) PatternFlowRSVPPathTimeValuesType1RefreshPeriodR + // Increment returns PatternFlowRSVPPathTimeValuesType1RefreshPeriodRCounter, set in PatternFlowRSVPPathTimeValuesType1RefreshPeriodR. + // PatternFlowRSVPPathTimeValuesType1RefreshPeriodRCounter is integer counter pattern + Increment() PatternFlowRSVPPathTimeValuesType1RefreshPeriodRCounter + // SetIncrement assigns PatternFlowRSVPPathTimeValuesType1RefreshPeriodRCounter provided by user to PatternFlowRSVPPathTimeValuesType1RefreshPeriodR. + // PatternFlowRSVPPathTimeValuesType1RefreshPeriodRCounter is integer counter pattern + SetIncrement(value PatternFlowRSVPPathTimeValuesType1RefreshPeriodRCounter) PatternFlowRSVPPathTimeValuesType1RefreshPeriodR + // HasIncrement checks if Increment has been set in PatternFlowRSVPPathTimeValuesType1RefreshPeriodR + HasIncrement() bool + // Decrement returns PatternFlowRSVPPathTimeValuesType1RefreshPeriodRCounter, set in PatternFlowRSVPPathTimeValuesType1RefreshPeriodR. + // PatternFlowRSVPPathTimeValuesType1RefreshPeriodRCounter is integer counter pattern + Decrement() PatternFlowRSVPPathTimeValuesType1RefreshPeriodRCounter + // SetDecrement assigns PatternFlowRSVPPathTimeValuesType1RefreshPeriodRCounter provided by user to PatternFlowRSVPPathTimeValuesType1RefreshPeriodR. + // PatternFlowRSVPPathTimeValuesType1RefreshPeriodRCounter is integer counter pattern + SetDecrement(value PatternFlowRSVPPathTimeValuesType1RefreshPeriodRCounter) PatternFlowRSVPPathTimeValuesType1RefreshPeriodR + // HasDecrement checks if Decrement has been set in PatternFlowRSVPPathTimeValuesType1RefreshPeriodR + HasDecrement() bool setNil() } -// An IPv6 unicast prefix reachable via the originator of this LSP. -// Ipv6Address returns a string -func (obj *isisLspV6Prefix) Ipv6Address() string { - - return *obj.obj.Ipv6Address +type PatternFlowRSVPPathTimeValuesType1RefreshPeriodRChoiceEnum string +// Enum of Choice on PatternFlowRSVPPathTimeValuesType1RefreshPeriodR +var PatternFlowRSVPPathTimeValuesType1RefreshPeriodRChoice = struct { + VALUE PatternFlowRSVPPathTimeValuesType1RefreshPeriodRChoiceEnum + VALUES PatternFlowRSVPPathTimeValuesType1RefreshPeriodRChoiceEnum + INCREMENT PatternFlowRSVPPathTimeValuesType1RefreshPeriodRChoiceEnum + DECREMENT PatternFlowRSVPPathTimeValuesType1RefreshPeriodRChoiceEnum +}{ + VALUE: PatternFlowRSVPPathTimeValuesType1RefreshPeriodRChoiceEnum("value"), + VALUES: PatternFlowRSVPPathTimeValuesType1RefreshPeriodRChoiceEnum("values"), + INCREMENT: PatternFlowRSVPPathTimeValuesType1RefreshPeriodRChoiceEnum("increment"), + DECREMENT: PatternFlowRSVPPathTimeValuesType1RefreshPeriodRChoiceEnum("decrement"), } -// An IPv6 unicast prefix reachable via the originator of this LSP. -// Ipv6Address returns a string -func (obj *isisLspV6Prefix) HasIpv6Address() bool { - return obj.obj.Ipv6Address != nil +func (obj *patternFlowRSVPPathTimeValuesType1RefreshPeriodR) Choice() PatternFlowRSVPPathTimeValuesType1RefreshPeriodRChoiceEnum { + return PatternFlowRSVPPathTimeValuesType1RefreshPeriodRChoiceEnum(obj.obj.Choice.Enum().String()) } -// An IPv6 unicast prefix reachable via the originator of this LSP. -// SetIpv6Address sets the string value in the IsisLspV6Prefix object -func (obj *isisLspV6Prefix) SetIpv6Address(value string) IsisLspV6Prefix { - - obj.obj.Ipv6Address = &value - return obj +// description is TBD +// Choice returns a string +func (obj *patternFlowRSVPPathTimeValuesType1RefreshPeriodR) HasChoice() bool { + return obj.obj.Choice != nil } -// The length of the IPv6 prefix. -// PrefixLength returns a uint32 -func (obj *isisLspV6Prefix) PrefixLength() uint32 { +func (obj *patternFlowRSVPPathTimeValuesType1RefreshPeriodR) SetChoice(value PatternFlowRSVPPathTimeValuesType1RefreshPeriodRChoiceEnum) PatternFlowRSVPPathTimeValuesType1RefreshPeriodR { + intValue, ok := otg.PatternFlowRSVPPathTimeValuesType1RefreshPeriodR_Choice_Enum_value[string(value)] + if !ok { + obj.validationErrors = append(obj.validationErrors, fmt.Sprintf( + "%s is not a valid choice on PatternFlowRSVPPathTimeValuesType1RefreshPeriodRChoiceEnum", string(value))) + return obj + } + enumValue := otg.PatternFlowRSVPPathTimeValuesType1RefreshPeriodR_Choice_Enum(intValue) + obj.obj.Choice = &enumValue + obj.obj.Decrement = nil + obj.decrementHolder = nil + obj.obj.Increment = nil + obj.incrementHolder = nil + obj.obj.Values = nil + obj.obj.Value = nil - return *obj.obj.PrefixLength + if value == PatternFlowRSVPPathTimeValuesType1RefreshPeriodRChoice.VALUE { + defaultValue := uint32(0) + obj.obj.Value = &defaultValue + } -} + if value == PatternFlowRSVPPathTimeValuesType1RefreshPeriodRChoice.VALUES { + defaultValue := []uint32{0} + obj.obj.Values = defaultValue + } -// The length of the IPv6 prefix. -// PrefixLength returns a uint32 -func (obj *isisLspV6Prefix) HasPrefixLength() bool { - return obj.obj.PrefixLength != nil -} + if value == PatternFlowRSVPPathTimeValuesType1RefreshPeriodRChoice.INCREMENT { + obj.obj.Increment = NewPatternFlowRSVPPathTimeValuesType1RefreshPeriodRCounter().Msg() + } -// The length of the IPv6 prefix. -// SetPrefixLength sets the uint32 value in the IsisLspV6Prefix object -func (obj *isisLspV6Prefix) SetPrefixLength(value uint32) IsisLspV6Prefix { + if value == PatternFlowRSVPPathTimeValuesType1RefreshPeriodRChoice.DECREMENT { + obj.obj.Decrement = NewPatternFlowRSVPPathTimeValuesType1RefreshPeriodRCounter().Msg() + } - obj.obj.PrefixLength = &value return obj } -// ISIS wide metric. -// Metric returns a uint32 -func (obj *isisLspV6Prefix) Metric() uint32 { - - return *obj.obj.Metric - -} +// description is TBD +// Value returns a uint32 +func (obj *patternFlowRSVPPathTimeValuesType1RefreshPeriodR) Value() uint32 { -// ISIS wide metric. -// Metric returns a uint32 -func (obj *isisLspV6Prefix) HasMetric() bool { - return obj.obj.Metric != nil -} + if obj.obj.Value == nil { + obj.SetChoice(PatternFlowRSVPPathTimeValuesType1RefreshPeriodRChoice.VALUE) + } -// ISIS wide metric. -// SetMetric sets the uint32 value in the IsisLspV6Prefix object -func (obj *isisLspV6Prefix) SetMetric(value uint32) IsisLspV6Prefix { + return *obj.obj.Value - obj.obj.Metric = &value - return obj } -type IsisLspV6PrefixRedistributionTypeEnum string - -// Enum of RedistributionType on IsisLspV6Prefix -var IsisLspV6PrefixRedistributionType = struct { - UP IsisLspV6PrefixRedistributionTypeEnum - DOWN IsisLspV6PrefixRedistributionTypeEnum -}{ - UP: IsisLspV6PrefixRedistributionTypeEnum("up"), - DOWN: IsisLspV6PrefixRedistributionTypeEnum("down"), +// description is TBD +// Value returns a uint32 +func (obj *patternFlowRSVPPathTimeValuesType1RefreshPeriodR) HasValue() bool { + return obj.obj.Value != nil } -func (obj *isisLspV6Prefix) RedistributionType() IsisLspV6PrefixRedistributionTypeEnum { - return IsisLspV6PrefixRedistributionTypeEnum(obj.obj.RedistributionType.Enum().String()) +// description is TBD +// SetValue sets the uint32 value in the PatternFlowRSVPPathTimeValuesType1RefreshPeriodR object +func (obj *patternFlowRSVPPathTimeValuesType1RefreshPeriodR) SetValue(value uint32) PatternFlowRSVPPathTimeValuesType1RefreshPeriodR { + obj.SetChoice(PatternFlowRSVPPathTimeValuesType1RefreshPeriodRChoice.VALUE) + obj.obj.Value = &value + return obj } -// Up (0)-used when a prefix is initially advertised within the ISIS L3 hierarchy, -// and for all other prefixes in L1 and L2 LSPs. (default) -// Down (1)-used when an L1/L2 router advertises L2 prefixes in L1 LSPs. -// The prefixes are being advertised from a higher level (L2) down to a lower level (L1). -// RedistributionType returns a string -func (obj *isisLspV6Prefix) HasRedistributionType() bool { - return obj.obj.RedistributionType != nil +// description is TBD +// Values returns a []uint32 +func (obj *patternFlowRSVPPathTimeValuesType1RefreshPeriodR) Values() []uint32 { + if obj.obj.Values == nil { + obj.SetValues([]uint32{0}) + } + return obj.obj.Values } -func (obj *isisLspV6Prefix) SetRedistributionType(value IsisLspV6PrefixRedistributionTypeEnum) IsisLspV6Prefix { - intValue, ok := otg.IsisLspV6Prefix_RedistributionType_Enum_value[string(value)] - if !ok { - obj.validationErrors = append(obj.validationErrors, fmt.Sprintf( - "%s is not a valid choice on IsisLspV6PrefixRedistributionTypeEnum", string(value))) - return obj +// description is TBD +// SetValues sets the []uint32 value in the PatternFlowRSVPPathTimeValuesType1RefreshPeriodR object +func (obj *patternFlowRSVPPathTimeValuesType1RefreshPeriodR) SetValues(value []uint32) PatternFlowRSVPPathTimeValuesType1RefreshPeriodR { + obj.SetChoice(PatternFlowRSVPPathTimeValuesType1RefreshPeriodRChoice.VALUES) + if obj.obj.Values == nil { + obj.obj.Values = make([]uint32, 0) } - enumValue := otg.IsisLspV6Prefix_RedistributionType_Enum(intValue) - obj.obj.RedistributionType = &enumValue + obj.obj.Values = value return obj } -type IsisLspV6PrefixOriginTypeEnum string - -// Enum of OriginType on IsisLspV6Prefix -var IsisLspV6PrefixOriginType = struct { - INTERNAL IsisLspV6PrefixOriginTypeEnum - EXTERNAL IsisLspV6PrefixOriginTypeEnum -}{ - INTERNAL: IsisLspV6PrefixOriginTypeEnum("internal"), - EXTERNAL: IsisLspV6PrefixOriginTypeEnum("external"), -} - -func (obj *isisLspV6Prefix) OriginType() IsisLspV6PrefixOriginTypeEnum { - return IsisLspV6PrefixOriginTypeEnum(obj.obj.OriginType.Enum().String()) +// description is TBD +// Increment returns a PatternFlowRSVPPathTimeValuesType1RefreshPeriodRCounter +func (obj *patternFlowRSVPPathTimeValuesType1RefreshPeriodR) Increment() PatternFlowRSVPPathTimeValuesType1RefreshPeriodRCounter { + if obj.obj.Increment == nil { + obj.SetChoice(PatternFlowRSVPPathTimeValuesType1RefreshPeriodRChoice.INCREMENT) + } + if obj.incrementHolder == nil { + obj.incrementHolder = &patternFlowRSVPPathTimeValuesType1RefreshPeriodRCounter{obj: obj.obj.Increment} + } + return obj.incrementHolder } -// The origin of the advertised route-internal or external to the ISIS area. Options include the following: -// Internal-for intra-area routes, through Level 1 LSPs. -// External-for inter-area routes redistributed within L1, through Level -// 1 LSPs. -// OriginType returns a string -func (obj *isisLspV6Prefix) HasOriginType() bool { - return obj.obj.OriginType != nil +// description is TBD +// Increment returns a PatternFlowRSVPPathTimeValuesType1RefreshPeriodRCounter +func (obj *patternFlowRSVPPathTimeValuesType1RefreshPeriodR) HasIncrement() bool { + return obj.obj.Increment != nil } -func (obj *isisLspV6Prefix) SetOriginType(value IsisLspV6PrefixOriginTypeEnum) IsisLspV6Prefix { - intValue, ok := otg.IsisLspV6Prefix_OriginType_Enum_value[string(value)] - if !ok { - obj.validationErrors = append(obj.validationErrors, fmt.Sprintf( - "%s is not a valid choice on IsisLspV6PrefixOriginTypeEnum", string(value))) - return obj - } - enumValue := otg.IsisLspV6Prefix_OriginType_Enum(intValue) - obj.obj.OriginType = &enumValue +// description is TBD +// SetIncrement sets the PatternFlowRSVPPathTimeValuesType1RefreshPeriodRCounter value in the PatternFlowRSVPPathTimeValuesType1RefreshPeriodR object +func (obj *patternFlowRSVPPathTimeValuesType1RefreshPeriodR) SetIncrement(value PatternFlowRSVPPathTimeValuesType1RefreshPeriodRCounter) PatternFlowRSVPPathTimeValuesType1RefreshPeriodR { + obj.SetChoice(PatternFlowRSVPPathTimeValuesType1RefreshPeriodRChoice.INCREMENT) + obj.incrementHolder = nil + obj.obj.Increment = value.Msg() return obj } // description is TBD -// PrefixAttributes returns a IsisLspPrefixAttributes -func (obj *isisLspV6Prefix) PrefixAttributes() IsisLspPrefixAttributes { - if obj.obj.PrefixAttributes == nil { - obj.obj.PrefixAttributes = NewIsisLspPrefixAttributes().Msg() +// Decrement returns a PatternFlowRSVPPathTimeValuesType1RefreshPeriodRCounter +func (obj *patternFlowRSVPPathTimeValuesType1RefreshPeriodR) Decrement() PatternFlowRSVPPathTimeValuesType1RefreshPeriodRCounter { + if obj.obj.Decrement == nil { + obj.SetChoice(PatternFlowRSVPPathTimeValuesType1RefreshPeriodRChoice.DECREMENT) } - if obj.prefixAttributesHolder == nil { - obj.prefixAttributesHolder = &isisLspPrefixAttributes{obj: obj.obj.PrefixAttributes} + if obj.decrementHolder == nil { + obj.decrementHolder = &patternFlowRSVPPathTimeValuesType1RefreshPeriodRCounter{obj: obj.obj.Decrement} } - return obj.prefixAttributesHolder + return obj.decrementHolder } // description is TBD -// PrefixAttributes returns a IsisLspPrefixAttributes -func (obj *isisLspV6Prefix) HasPrefixAttributes() bool { - return obj.obj.PrefixAttributes != nil +// Decrement returns a PatternFlowRSVPPathTimeValuesType1RefreshPeriodRCounter +func (obj *patternFlowRSVPPathTimeValuesType1RefreshPeriodR) HasDecrement() bool { + return obj.obj.Decrement != nil } // description is TBD -// SetPrefixAttributes sets the IsisLspPrefixAttributes value in the IsisLspV6Prefix object -func (obj *isisLspV6Prefix) SetPrefixAttributes(value IsisLspPrefixAttributes) IsisLspV6Prefix { - - obj.prefixAttributesHolder = nil - obj.obj.PrefixAttributes = value.Msg() +// SetDecrement sets the PatternFlowRSVPPathTimeValuesType1RefreshPeriodRCounter value in the PatternFlowRSVPPathTimeValuesType1RefreshPeriodR object +func (obj *patternFlowRSVPPathTimeValuesType1RefreshPeriodR) SetDecrement(value PatternFlowRSVPPathTimeValuesType1RefreshPeriodRCounter) PatternFlowRSVPPathTimeValuesType1RefreshPeriodR { + obj.SetChoice(PatternFlowRSVPPathTimeValuesType1RefreshPeriodRChoice.DECREMENT) + obj.decrementHolder = nil + obj.obj.Decrement = value.Msg() return obj } -func (obj *isisLspV6Prefix) validateObj(vObj *validation, set_default bool) { +func (obj *patternFlowRSVPPathTimeValuesType1RefreshPeriodR) validateObj(vObj *validation, set_default bool) { if set_default { obj.setDefault() } - if obj.obj.Ipv6Address != nil { - - err := obj.validateIpv6(obj.Ipv6Address()) - if err != nil { - vObj.validationErrors = append(vObj.validationErrors, fmt.Sprintf("%s %s", err.Error(), "on IsisLspV6Prefix.Ipv6Address")) - } - - } - - if obj.obj.PrefixLength != nil { - - if *obj.obj.PrefixLength > 128 { - vObj.validationErrors = append( - vObj.validationErrors, - fmt.Sprintf("0 <= IsisLspV6Prefix.PrefixLength <= 128 but Got %d", *obj.obj.PrefixLength)) - } + if obj.obj.Increment != nil { + obj.Increment().validateObj(vObj, set_default) } - if obj.obj.PrefixAttributes != nil { + if obj.obj.Decrement != nil { - obj.PrefixAttributes().validateObj(vObj, set_default) + obj.Decrement().validateObj(vObj, set_default) } } -func (obj *isisLspV6Prefix) setDefault() { +func (obj *patternFlowRSVPPathTimeValuesType1RefreshPeriodR) setDefault() { + if obj.obj.Choice == nil { + obj.SetChoice(PatternFlowRSVPPathTimeValuesType1RefreshPeriodRChoice.VALUE) + + } } -// ***** BgpV4EviVxlan ***** -type bgpV4EviVxlan struct { +// ***** FlowRSVPType1ExplicitRouteSubobjects ***** +type flowRSVPType1ExplicitRouteSubobjects struct { validation - obj *otg.BgpV4EviVxlan - broadcastDomainsHolder BgpV4EviVxlanBgpV4EviVxlanBroadcastDomainIter - routeDistinguisherHolder BgpRouteDistinguisher - routeTargetExportHolder BgpV4EviVxlanBgpRouteTargetIter - routeTargetImportHolder BgpV4EviVxlanBgpRouteTargetIter - l3RouteTargetExportHolder BgpV4EviVxlanBgpRouteTargetIter - l3RouteTargetImportHolder BgpV4EviVxlanBgpRouteTargetIter - advancedHolder BgpRouteAdvanced - communitiesHolder BgpV4EviVxlanBgpCommunityIter - extCommunitiesHolder BgpV4EviVxlanBgpExtCommunityIter - asPathHolder BgpAsPath + obj *otg.FlowRSVPType1ExplicitRouteSubobjects + typeHolder FlowRSVPType1ExplicitRouteSubobjectsType } -func NewBgpV4EviVxlan() BgpV4EviVxlan { - obj := bgpV4EviVxlan{obj: &otg.BgpV4EviVxlan{}} +func NewFlowRSVPType1ExplicitRouteSubobjects() FlowRSVPType1ExplicitRouteSubobjects { + obj := flowRSVPType1ExplicitRouteSubobjects{obj: &otg.FlowRSVPType1ExplicitRouteSubobjects{}} obj.setDefault() return &obj } -func (obj *bgpV4EviVxlan) Msg() *otg.BgpV4EviVxlan { +func (obj *flowRSVPType1ExplicitRouteSubobjects) Msg() *otg.FlowRSVPType1ExplicitRouteSubobjects { return obj.obj } -func (obj *bgpV4EviVxlan) SetMsg(msg *otg.BgpV4EviVxlan) BgpV4EviVxlan { +func (obj *flowRSVPType1ExplicitRouteSubobjects) SetMsg(msg *otg.FlowRSVPType1ExplicitRouteSubobjects) FlowRSVPType1ExplicitRouteSubobjects { obj.setNil() proto.Merge(obj.obj, msg) return obj } -func (obj *bgpV4EviVxlan) ToProto() (*otg.BgpV4EviVxlan, error) { +func (obj *flowRSVPType1ExplicitRouteSubobjects) ToProto() (*otg.FlowRSVPType1ExplicitRouteSubobjects, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -297529,7 +343458,7 @@ func (obj *bgpV4EviVxlan) ToProto() (*otg.BgpV4EviVxlan, error) { return obj.Msg(), nil } -func (obj *bgpV4EviVxlan) FromProto(msg *otg.BgpV4EviVxlan) (BgpV4EviVxlan, error) { +func (obj *flowRSVPType1ExplicitRouteSubobjects) FromProto(msg *otg.FlowRSVPType1ExplicitRouteSubobjects) (FlowRSVPType1ExplicitRouteSubobjects, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -297538,7 +343467,7 @@ func (obj *bgpV4EviVxlan) FromProto(msg *otg.BgpV4EviVxlan) (BgpV4EviVxlan, erro return newObj, nil } -func (obj *bgpV4EviVxlan) ToPbText() (string, error) { +func (obj *flowRSVPType1ExplicitRouteSubobjects) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -297550,7 +343479,7 @@ func (obj *bgpV4EviVxlan) ToPbText() (string, error) { return string(protoMarshal), nil } -func (obj *bgpV4EviVxlan) FromPbText(value string) error { +func (obj *flowRSVPType1ExplicitRouteSubobjects) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj @@ -297563,7 +343492,7 @@ func (obj *bgpV4EviVxlan) FromPbText(value string) error { return retObj } -func (obj *bgpV4EviVxlan) ToYaml() (string, error) { +func (obj *flowRSVPType1ExplicitRouteSubobjects) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -297584,7 +343513,7 @@ func (obj *bgpV4EviVxlan) ToYaml() (string, error) { return string(data), nil } -func (obj *bgpV4EviVxlan) FromYaml(value string) error { +func (obj *flowRSVPType1ExplicitRouteSubobjects) FromYaml(value string) error { if value == "" { value = "{}" } @@ -297609,7 +343538,7 @@ func (obj *bgpV4EviVxlan) FromYaml(value string) error { return nil } -func (obj *bgpV4EviVxlan) ToJson() (string, error) { +func (obj *flowRSVPType1ExplicitRouteSubobjects) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -297627,7 +343556,7 @@ func (obj *bgpV4EviVxlan) ToJson() (string, error) { return string(data), nil } -func (obj *bgpV4EviVxlan) FromJson(value string) error { +func (obj *flowRSVPType1ExplicitRouteSubobjects) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -297648,19 +343577,19 @@ func (obj *bgpV4EviVxlan) FromJson(value string) error { return nil } -func (obj *bgpV4EviVxlan) validateToAndFrom() error { +func (obj *flowRSVPType1ExplicitRouteSubobjects) validateToAndFrom() error { // emptyVars() obj.validateObj(&obj.validation, true) return obj.validationResult() } -func (obj *bgpV4EviVxlan) Validate() error { +func (obj *flowRSVPType1ExplicitRouteSubobjects) Validate() error { // emptyVars() obj.validateObj(&obj.validation, false) return obj.validationResult() } -func (obj *bgpV4EviVxlan) String() string { +func (obj *flowRSVPType1ExplicitRouteSubobjects) String() string { str, err := obj.ToYaml() if err != nil { return err.Error() @@ -297668,12 +343597,12 @@ func (obj *bgpV4EviVxlan) String() string { return str } -func (obj *bgpV4EviVxlan) Clone() (BgpV4EviVxlan, error) { +func (obj *flowRSVPType1ExplicitRouteSubobjects) Clone() (FlowRSVPType1ExplicitRouteSubobjects, error) { vErr := obj.Validate() if vErr != nil { return nil, vErr } - newObj := NewBgpV4EviVxlan() + newObj := NewFlowRSVPType1ExplicitRouteSubobjects() data, err := proto.Marshal(obj.Msg()) if err != nil { return nil, err @@ -297685,842 +343614,605 @@ func (obj *bgpV4EviVxlan) Clone() (BgpV4EviVxlan, error) { return newObj, nil } -func (obj *bgpV4EviVxlan) setNil() { - obj.broadcastDomainsHolder = nil - obj.routeDistinguisherHolder = nil - obj.routeTargetExportHolder = nil - obj.routeTargetImportHolder = nil - obj.l3RouteTargetExportHolder = nil - obj.l3RouteTargetImportHolder = nil - obj.advancedHolder = nil - obj.communitiesHolder = nil - obj.extCommunitiesHolder = nil - obj.asPathHolder = nil +func (obj *flowRSVPType1ExplicitRouteSubobjects) setNil() { + obj.typeHolder = nil obj.validationErrors = nil obj.warnings = nil obj.constraints = make(map[string]map[string]Constraints) } -// BgpV4EviVxlan is configuration for BGP EVPN EVI. Advertises following routes - -// -// # Type 3 - Inclusive Multicast Ethernet Tag Route -// -// Type 1 - Ethernet Auto-discovery Route (Per EVI) -// -// Type 1 - Ethernet Auto-discovery Route (Per ES) -type BgpV4EviVxlan interface { +// FlowRSVPType1ExplicitRouteSubobjects is type is specific to a subobject. +type FlowRSVPType1ExplicitRouteSubobjects interface { Validation - // Msg marshals BgpV4EviVxlan to protobuf object *otg.BgpV4EviVxlan + // Msg marshals FlowRSVPType1ExplicitRouteSubobjects to protobuf object *otg.FlowRSVPType1ExplicitRouteSubobjects // and doesn't set defaults - Msg() *otg.BgpV4EviVxlan - // SetMsg unmarshals BgpV4EviVxlan from protobuf object *otg.BgpV4EviVxlan + Msg() *otg.FlowRSVPType1ExplicitRouteSubobjects + // SetMsg unmarshals FlowRSVPType1ExplicitRouteSubobjects from protobuf object *otg.FlowRSVPType1ExplicitRouteSubobjects // and doesn't set defaults - SetMsg(*otg.BgpV4EviVxlan) BgpV4EviVxlan - // ToProto marshals BgpV4EviVxlan to protobuf object *otg.BgpV4EviVxlan - ToProto() (*otg.BgpV4EviVxlan, error) - // ToPbText marshals BgpV4EviVxlan to protobuf text + SetMsg(*otg.FlowRSVPType1ExplicitRouteSubobjects) FlowRSVPType1ExplicitRouteSubobjects + // ToProto marshals FlowRSVPType1ExplicitRouteSubobjects to protobuf object *otg.FlowRSVPType1ExplicitRouteSubobjects + ToProto() (*otg.FlowRSVPType1ExplicitRouteSubobjects, error) + // ToPbText marshals FlowRSVPType1ExplicitRouteSubobjects to protobuf text ToPbText() (string, error) - // ToYaml marshals BgpV4EviVxlan to YAML text + // ToYaml marshals FlowRSVPType1ExplicitRouteSubobjects to YAML text ToYaml() (string, error) - // ToJson marshals BgpV4EviVxlan to JSON text + // ToJson marshals FlowRSVPType1ExplicitRouteSubobjects to JSON text ToJson() (string, error) - // FromProto unmarshals BgpV4EviVxlan from protobuf object *otg.BgpV4EviVxlan - FromProto(msg *otg.BgpV4EviVxlan) (BgpV4EviVxlan, error) - // FromPbText unmarshals BgpV4EviVxlan from protobuf text + // FromProto unmarshals FlowRSVPType1ExplicitRouteSubobjects from protobuf object *otg.FlowRSVPType1ExplicitRouteSubobjects + FromProto(msg *otg.FlowRSVPType1ExplicitRouteSubobjects) (FlowRSVPType1ExplicitRouteSubobjects, error) + // FromPbText unmarshals FlowRSVPType1ExplicitRouteSubobjects from protobuf text FromPbText(value string) error - // FromYaml unmarshals BgpV4EviVxlan from YAML text + // FromYaml unmarshals FlowRSVPType1ExplicitRouteSubobjects from YAML text FromYaml(value string) error - // FromJson unmarshals BgpV4EviVxlan from JSON text + // FromJson unmarshals FlowRSVPType1ExplicitRouteSubobjects from JSON text FromJson(value string) error - // Validate validates BgpV4EviVxlan + // Validate validates FlowRSVPType1ExplicitRouteSubobjects Validate() error // A stringer function String() string // Clones the object - Clone() (BgpV4EviVxlan, error) + Clone() (FlowRSVPType1ExplicitRouteSubobjects, error) validateToAndFrom() error validateObj(vObj *validation, set_default bool) setDefault() - // BroadcastDomains returns BgpV4EviVxlanBgpV4EviVxlanBroadcastDomainIterIter, set in BgpV4EviVxlan - BroadcastDomains() BgpV4EviVxlanBgpV4EviVxlanBroadcastDomainIter - // ReplicationType returns BgpV4EviVxlanReplicationTypeEnum, set in BgpV4EviVxlan - ReplicationType() BgpV4EviVxlanReplicationTypeEnum - // SetReplicationType assigns BgpV4EviVxlanReplicationTypeEnum provided by user to BgpV4EviVxlan - SetReplicationType(value BgpV4EviVxlanReplicationTypeEnum) BgpV4EviVxlan - // HasReplicationType checks if ReplicationType has been set in BgpV4EviVxlan - HasReplicationType() bool - // PmsiLabel returns uint32, set in BgpV4EviVxlan. - PmsiLabel() uint32 - // SetPmsiLabel assigns uint32 provided by user to BgpV4EviVxlan - SetPmsiLabel(value uint32) BgpV4EviVxlan - // HasPmsiLabel checks if PmsiLabel has been set in BgpV4EviVxlan - HasPmsiLabel() bool - // AdLabel returns uint32, set in BgpV4EviVxlan. - AdLabel() uint32 - // SetAdLabel assigns uint32 provided by user to BgpV4EviVxlan - SetAdLabel(value uint32) BgpV4EviVxlan - // HasAdLabel checks if AdLabel has been set in BgpV4EviVxlan - HasAdLabel() bool - // RouteDistinguisher returns BgpRouteDistinguisher, set in BgpV4EviVxlan. - // BgpRouteDistinguisher is bGP Route Distinguisher. - RouteDistinguisher() BgpRouteDistinguisher - // SetRouteDistinguisher assigns BgpRouteDistinguisher provided by user to BgpV4EviVxlan. - // BgpRouteDistinguisher is bGP Route Distinguisher. - SetRouteDistinguisher(value BgpRouteDistinguisher) BgpV4EviVxlan - // HasRouteDistinguisher checks if RouteDistinguisher has been set in BgpV4EviVxlan - HasRouteDistinguisher() bool - // RouteTargetExport returns BgpV4EviVxlanBgpRouteTargetIterIter, set in BgpV4EviVxlan - RouteTargetExport() BgpV4EviVxlanBgpRouteTargetIter - // RouteTargetImport returns BgpV4EviVxlanBgpRouteTargetIterIter, set in BgpV4EviVxlan - RouteTargetImport() BgpV4EviVxlanBgpRouteTargetIter - // L3RouteTargetExport returns BgpV4EviVxlanBgpRouteTargetIterIter, set in BgpV4EviVxlan - L3RouteTargetExport() BgpV4EviVxlanBgpRouteTargetIter - // L3RouteTargetImport returns BgpV4EviVxlanBgpRouteTargetIterIter, set in BgpV4EviVxlan - L3RouteTargetImport() BgpV4EviVxlanBgpRouteTargetIter - // Advanced returns BgpRouteAdvanced, set in BgpV4EviVxlan. - // BgpRouteAdvanced is configuration for advanced BGP route range settings. - Advanced() BgpRouteAdvanced - // SetAdvanced assigns BgpRouteAdvanced provided by user to BgpV4EviVxlan. - // BgpRouteAdvanced is configuration for advanced BGP route range settings. - SetAdvanced(value BgpRouteAdvanced) BgpV4EviVxlan - // HasAdvanced checks if Advanced has been set in BgpV4EviVxlan - HasAdvanced() bool - // Communities returns BgpV4EviVxlanBgpCommunityIterIter, set in BgpV4EviVxlan - Communities() BgpV4EviVxlanBgpCommunityIter - // ExtCommunities returns BgpV4EviVxlanBgpExtCommunityIterIter, set in BgpV4EviVxlan - ExtCommunities() BgpV4EviVxlanBgpExtCommunityIter - // AsPath returns BgpAsPath, set in BgpV4EviVxlan. - // BgpAsPath is this attribute identifies the autonomous systems through which routing information carried in this UPDATE message has passed. This contains the configuration of how to include the Local AS in the AS path attribute of the MP REACH NLRI. It also contains optional configuration of additional AS Path Segments that can be included in the AS Path attribute. The AS Path consists of a Set or Sequence of Autonomous Systems (AS) numbers that a routing information passes through to reach the destination. - AsPath() BgpAsPath - // SetAsPath assigns BgpAsPath provided by user to BgpV4EviVxlan. - // BgpAsPath is this attribute identifies the autonomous systems through which routing information carried in this UPDATE message has passed. This contains the configuration of how to include the Local AS in the AS path attribute of the MP REACH NLRI. It also contains optional configuration of additional AS Path Segments that can be included in the AS Path attribute. The AS Path consists of a Set or Sequence of Autonomous Systems (AS) numbers that a routing information passes through to reach the destination. - SetAsPath(value BgpAsPath) BgpV4EviVxlan - // HasAsPath checks if AsPath has been set in BgpV4EviVxlan - HasAsPath() bool + // Type returns FlowRSVPType1ExplicitRouteSubobjectsType, set in FlowRSVPType1ExplicitRouteSubobjects. + // FlowRSVPType1ExplicitRouteSubobjectsType is currently supported subobjects are IPv4 address(1) and 4-byte AS number(5). + Type() FlowRSVPType1ExplicitRouteSubobjectsType + // SetType assigns FlowRSVPType1ExplicitRouteSubobjectsType provided by user to FlowRSVPType1ExplicitRouteSubobjects. + // FlowRSVPType1ExplicitRouteSubobjectsType is currently supported subobjects are IPv4 address(1) and 4-byte AS number(5). + SetType(value FlowRSVPType1ExplicitRouteSubobjectsType) FlowRSVPType1ExplicitRouteSubobjects + // HasType checks if Type has been set in FlowRSVPType1ExplicitRouteSubobjects + HasType() bool setNil() } -// This contains the list of Broadcast Domains to be configured per EVI. -// BroadcastDomains returns a []BgpV4EviVxlanBroadcastDomain -func (obj *bgpV4EviVxlan) BroadcastDomains() BgpV4EviVxlanBgpV4EviVxlanBroadcastDomainIter { - if len(obj.obj.BroadcastDomains) == 0 { - obj.obj.BroadcastDomains = []*otg.BgpV4EviVxlanBroadcastDomain{} +// description is TBD +// Type returns a FlowRSVPType1ExplicitRouteSubobjectsType +func (obj *flowRSVPType1ExplicitRouteSubobjects) Type() FlowRSVPType1ExplicitRouteSubobjectsType { + if obj.obj.Type == nil { + obj.obj.Type = NewFlowRSVPType1ExplicitRouteSubobjectsType().Msg() } - if obj.broadcastDomainsHolder == nil { - obj.broadcastDomainsHolder = newBgpV4EviVxlanBgpV4EviVxlanBroadcastDomainIter(&obj.obj.BroadcastDomains).setMsg(obj) + if obj.typeHolder == nil { + obj.typeHolder = &flowRSVPType1ExplicitRouteSubobjectsType{obj: obj.obj.Type} } - return obj.broadcastDomainsHolder -} - -type bgpV4EviVxlanBgpV4EviVxlanBroadcastDomainIter struct { - obj *bgpV4EviVxlan - bgpV4EviVxlanBroadcastDomainSlice []BgpV4EviVxlanBroadcastDomain - fieldPtr *[]*otg.BgpV4EviVxlanBroadcastDomain -} - -func newBgpV4EviVxlanBgpV4EviVxlanBroadcastDomainIter(ptr *[]*otg.BgpV4EviVxlanBroadcastDomain) BgpV4EviVxlanBgpV4EviVxlanBroadcastDomainIter { - return &bgpV4EviVxlanBgpV4EviVxlanBroadcastDomainIter{fieldPtr: ptr} -} - -type BgpV4EviVxlanBgpV4EviVxlanBroadcastDomainIter interface { - setMsg(*bgpV4EviVxlan) BgpV4EviVxlanBgpV4EviVxlanBroadcastDomainIter - Items() []BgpV4EviVxlanBroadcastDomain - Add() BgpV4EviVxlanBroadcastDomain - Append(items ...BgpV4EviVxlanBroadcastDomain) BgpV4EviVxlanBgpV4EviVxlanBroadcastDomainIter - Set(index int, newObj BgpV4EviVxlanBroadcastDomain) BgpV4EviVxlanBgpV4EviVxlanBroadcastDomainIter - Clear() BgpV4EviVxlanBgpV4EviVxlanBroadcastDomainIter - clearHolderSlice() BgpV4EviVxlanBgpV4EviVxlanBroadcastDomainIter - appendHolderSlice(item BgpV4EviVxlanBroadcastDomain) BgpV4EviVxlanBgpV4EviVxlanBroadcastDomainIter + return obj.typeHolder } -func (obj *bgpV4EviVxlanBgpV4EviVxlanBroadcastDomainIter) setMsg(msg *bgpV4EviVxlan) BgpV4EviVxlanBgpV4EviVxlanBroadcastDomainIter { - obj.clearHolderSlice() - for _, val := range *obj.fieldPtr { - obj.appendHolderSlice(&bgpV4EviVxlanBroadcastDomain{obj: val}) - } - obj.obj = msg - return obj +// description is TBD +// Type returns a FlowRSVPType1ExplicitRouteSubobjectsType +func (obj *flowRSVPType1ExplicitRouteSubobjects) HasType() bool { + return obj.obj.Type != nil } -func (obj *bgpV4EviVxlanBgpV4EviVxlanBroadcastDomainIter) Items() []BgpV4EviVxlanBroadcastDomain { - return obj.bgpV4EviVxlanBroadcastDomainSlice -} +// description is TBD +// SetType sets the FlowRSVPType1ExplicitRouteSubobjectsType value in the FlowRSVPType1ExplicitRouteSubobjects object +func (obj *flowRSVPType1ExplicitRouteSubobjects) SetType(value FlowRSVPType1ExplicitRouteSubobjectsType) FlowRSVPType1ExplicitRouteSubobjects { -func (obj *bgpV4EviVxlanBgpV4EviVxlanBroadcastDomainIter) Add() BgpV4EviVxlanBroadcastDomain { - newObj := &otg.BgpV4EviVxlanBroadcastDomain{} - *obj.fieldPtr = append(*obj.fieldPtr, newObj) - newLibObj := &bgpV4EviVxlanBroadcastDomain{obj: newObj} - newLibObj.setDefault() - obj.bgpV4EviVxlanBroadcastDomainSlice = append(obj.bgpV4EviVxlanBroadcastDomainSlice, newLibObj) - return newLibObj -} + obj.typeHolder = nil + obj.obj.Type = value.Msg() -func (obj *bgpV4EviVxlanBgpV4EviVxlanBroadcastDomainIter) Append(items ...BgpV4EviVxlanBroadcastDomain) BgpV4EviVxlanBgpV4EviVxlanBroadcastDomainIter { - for _, item := range items { - newObj := item.Msg() - *obj.fieldPtr = append(*obj.fieldPtr, newObj) - obj.bgpV4EviVxlanBroadcastDomainSlice = append(obj.bgpV4EviVxlanBroadcastDomainSlice, item) - } return obj } -func (obj *bgpV4EviVxlanBgpV4EviVxlanBroadcastDomainIter) Set(index int, newObj BgpV4EviVxlanBroadcastDomain) BgpV4EviVxlanBgpV4EviVxlanBroadcastDomainIter { - (*obj.fieldPtr)[index] = newObj.Msg() - obj.bgpV4EviVxlanBroadcastDomainSlice[index] = newObj - return obj -} -func (obj *bgpV4EviVxlanBgpV4EviVxlanBroadcastDomainIter) Clear() BgpV4EviVxlanBgpV4EviVxlanBroadcastDomainIter { - if len(*obj.fieldPtr) > 0 { - *obj.fieldPtr = []*otg.BgpV4EviVxlanBroadcastDomain{} - obj.bgpV4EviVxlanBroadcastDomainSlice = []BgpV4EviVxlanBroadcastDomain{} - } - return obj -} -func (obj *bgpV4EviVxlanBgpV4EviVxlanBroadcastDomainIter) clearHolderSlice() BgpV4EviVxlanBgpV4EviVxlanBroadcastDomainIter { - if len(obj.bgpV4EviVxlanBroadcastDomainSlice) > 0 { - obj.bgpV4EviVxlanBroadcastDomainSlice = []BgpV4EviVxlanBroadcastDomain{} +func (obj *flowRSVPType1ExplicitRouteSubobjects) validateObj(vObj *validation, set_default bool) { + if set_default { + obj.setDefault() } - return obj -} -func (obj *bgpV4EviVxlanBgpV4EviVxlanBroadcastDomainIter) appendHolderSlice(item BgpV4EviVxlanBroadcastDomain) BgpV4EviVxlanBgpV4EviVxlanBroadcastDomainIter { - obj.bgpV4EviVxlanBroadcastDomainSlice = append(obj.bgpV4EviVxlanBroadcastDomainSlice, item) - return obj -} - -type BgpV4EviVxlanReplicationTypeEnum string - -// Enum of ReplicationType on BgpV4EviVxlan -var BgpV4EviVxlanReplicationType = struct { - INGRESS_REPLICATION BgpV4EviVxlanReplicationTypeEnum -}{ - INGRESS_REPLICATION: BgpV4EviVxlanReplicationTypeEnum("ingress_replication"), -} - -func (obj *bgpV4EviVxlan) ReplicationType() BgpV4EviVxlanReplicationTypeEnum { - return BgpV4EviVxlanReplicationTypeEnum(obj.obj.ReplicationType.Enum().String()) -} -// This model only supports Ingress Replication -// ReplicationType returns a string -func (obj *bgpV4EviVxlan) HasReplicationType() bool { - return obj.obj.ReplicationType != nil -} + if obj.obj.Type != nil { -func (obj *bgpV4EviVxlan) SetReplicationType(value BgpV4EviVxlanReplicationTypeEnum) BgpV4EviVxlan { - intValue, ok := otg.BgpV4EviVxlan_ReplicationType_Enum_value[string(value)] - if !ok { - obj.validationErrors = append(obj.validationErrors, fmt.Sprintf( - "%s is not a valid choice on BgpV4EviVxlanReplicationTypeEnum", string(value))) - return obj + obj.Type().validateObj(vObj, set_default) } - enumValue := otg.BgpV4EviVxlan_ReplicationType_Enum(intValue) - obj.obj.ReplicationType = &enumValue - return obj } -// Downstream assigned VNI to be carried as Part of P-Multicast Service Interface Tunnel attribute (PMSI Tunnel Attribute) in Type 3 Inclusive Multicast Ethernet Tag Route. -// PmsiLabel returns a uint32 -func (obj *bgpV4EviVxlan) PmsiLabel() uint32 { - - return *obj.obj.PmsiLabel - -} +func (obj *flowRSVPType1ExplicitRouteSubobjects) setDefault() { -// Downstream assigned VNI to be carried as Part of P-Multicast Service Interface Tunnel attribute (PMSI Tunnel Attribute) in Type 3 Inclusive Multicast Ethernet Tag Route. -// PmsiLabel returns a uint32 -func (obj *bgpV4EviVxlan) HasPmsiLabel() bool { - return obj.obj.PmsiLabel != nil } -// Downstream assigned VNI to be carried as Part of P-Multicast Service Interface Tunnel attribute (PMSI Tunnel Attribute) in Type 3 Inclusive Multicast Ethernet Tag Route. -// SetPmsiLabel sets the uint32 value in the BgpV4EviVxlan object -func (obj *bgpV4EviVxlan) SetPmsiLabel(value uint32) BgpV4EviVxlan { - - obj.obj.PmsiLabel = &value - return obj +// ***** PatternFlowRSVPPathLabelRequestWithoutLabelRangeReserved ***** +type patternFlowRSVPPathLabelRequestWithoutLabelRangeReserved struct { + validation + obj *otg.PatternFlowRSVPPathLabelRequestWithoutLabelRangeReserved + incrementHolder PatternFlowRSVPPathLabelRequestWithoutLabelRangeReservedCounter + decrementHolder PatternFlowRSVPPathLabelRequestWithoutLabelRangeReservedCounter } -// The Auto-discovery Route label (AD label) value, which gets advertised in the Ethernet Auto-discovery Route per -// AdLabel returns a uint32 -func (obj *bgpV4EviVxlan) AdLabel() uint32 { - - return *obj.obj.AdLabel - +func NewPatternFlowRSVPPathLabelRequestWithoutLabelRangeReserved() PatternFlowRSVPPathLabelRequestWithoutLabelRangeReserved { + obj := patternFlowRSVPPathLabelRequestWithoutLabelRangeReserved{obj: &otg.PatternFlowRSVPPathLabelRequestWithoutLabelRangeReserved{}} + obj.setDefault() + return &obj } -// The Auto-discovery Route label (AD label) value, which gets advertised in the Ethernet Auto-discovery Route per -// AdLabel returns a uint32 -func (obj *bgpV4EviVxlan) HasAdLabel() bool { - return obj.obj.AdLabel != nil +func (obj *patternFlowRSVPPathLabelRequestWithoutLabelRangeReserved) Msg() *otg.PatternFlowRSVPPathLabelRequestWithoutLabelRangeReserved { + return obj.obj } -// The Auto-discovery Route label (AD label) value, which gets advertised in the Ethernet Auto-discovery Route per -// SetAdLabel sets the uint32 value in the BgpV4EviVxlan object -func (obj *bgpV4EviVxlan) SetAdLabel(value uint32) BgpV4EviVxlan { - - obj.obj.AdLabel = &value +func (obj *patternFlowRSVPPathLabelRequestWithoutLabelRangeReserved) SetMsg(msg *otg.PatternFlowRSVPPathLabelRequestWithoutLabelRangeReserved) PatternFlowRSVPPathLabelRequestWithoutLabelRangeReserved { + obj.setNil() + proto.Merge(obj.obj, msg) return obj } -// Colon separated Extended Community value of 6 Bytes - "AS number: Value" identifying an EVI. Example - for the as_2octet "60005:100". -// RouteDistinguisher returns a BgpRouteDistinguisher -func (obj *bgpV4EviVxlan) RouteDistinguisher() BgpRouteDistinguisher { - if obj.obj.RouteDistinguisher == nil { - obj.obj.RouteDistinguisher = NewBgpRouteDistinguisher().Msg() - } - if obj.routeDistinguisherHolder == nil { - obj.routeDistinguisherHolder = &bgpRouteDistinguisher{obj: obj.obj.RouteDistinguisher} +func (obj *patternFlowRSVPPathLabelRequestWithoutLabelRangeReserved) ToProto() (*otg.PatternFlowRSVPPathLabelRequestWithoutLabelRangeReserved, error) { + err := obj.validateToAndFrom() + if err != nil { + return nil, err } - return obj.routeDistinguisherHolder -} - -// Colon separated Extended Community value of 6 Bytes - "AS number: Value" identifying an EVI. Example - for the as_2octet "60005:100". -// RouteDistinguisher returns a BgpRouteDistinguisher -func (obj *bgpV4EviVxlan) HasRouteDistinguisher() bool { - return obj.obj.RouteDistinguisher != nil -} - -// Colon separated Extended Community value of 6 Bytes - "AS number: Value" identifying an EVI. Example - for the as_2octet "60005:100". -// SetRouteDistinguisher sets the BgpRouteDistinguisher value in the BgpV4EviVxlan object -func (obj *bgpV4EviVxlan) SetRouteDistinguisher(value BgpRouteDistinguisher) BgpV4EviVxlan { - - obj.routeDistinguisherHolder = nil - obj.obj.RouteDistinguisher = value.Msg() - - return obj + return obj.Msg(), nil } -// List of Layer 2 Virtual Network Identifier (L2VNI) export targets associated with this EVI. -// RouteTargetExport returns a []BgpRouteTarget -func (obj *bgpV4EviVxlan) RouteTargetExport() BgpV4EviVxlanBgpRouteTargetIter { - if len(obj.obj.RouteTargetExport) == 0 { - obj.obj.RouteTargetExport = []*otg.BgpRouteTarget{} - } - if obj.routeTargetExportHolder == nil { - obj.routeTargetExportHolder = newBgpV4EviVxlanBgpRouteTargetIter(&obj.obj.RouteTargetExport).setMsg(obj) +func (obj *patternFlowRSVPPathLabelRequestWithoutLabelRangeReserved) FromProto(msg *otg.PatternFlowRSVPPathLabelRequestWithoutLabelRangeReserved) (PatternFlowRSVPPathLabelRequestWithoutLabelRangeReserved, error) { + newObj := obj.SetMsg(msg) + err := newObj.validateToAndFrom() + if err != nil { + return nil, err } - return obj.routeTargetExportHolder -} - -type bgpV4EviVxlanBgpRouteTargetIter struct { - obj *bgpV4EviVxlan - bgpRouteTargetSlice []BgpRouteTarget - fieldPtr *[]*otg.BgpRouteTarget -} - -func newBgpV4EviVxlanBgpRouteTargetIter(ptr *[]*otg.BgpRouteTarget) BgpV4EviVxlanBgpRouteTargetIter { - return &bgpV4EviVxlanBgpRouteTargetIter{fieldPtr: ptr} -} - -type BgpV4EviVxlanBgpRouteTargetIter interface { - setMsg(*bgpV4EviVxlan) BgpV4EviVxlanBgpRouteTargetIter - Items() []BgpRouteTarget - Add() BgpRouteTarget - Append(items ...BgpRouteTarget) BgpV4EviVxlanBgpRouteTargetIter - Set(index int, newObj BgpRouteTarget) BgpV4EviVxlanBgpRouteTargetIter - Clear() BgpV4EviVxlanBgpRouteTargetIter - clearHolderSlice() BgpV4EviVxlanBgpRouteTargetIter - appendHolderSlice(item BgpRouteTarget) BgpV4EviVxlanBgpRouteTargetIter + return newObj, nil } -func (obj *bgpV4EviVxlanBgpRouteTargetIter) setMsg(msg *bgpV4EviVxlan) BgpV4EviVxlanBgpRouteTargetIter { - obj.clearHolderSlice() - for _, val := range *obj.fieldPtr { - obj.appendHolderSlice(&bgpRouteTarget{obj: val}) +func (obj *patternFlowRSVPPathLabelRequestWithoutLabelRangeReserved) ToPbText() (string, error) { + vErr := obj.validateToAndFrom() + if vErr != nil { + return "", vErr } - obj.obj = msg - return obj -} - -func (obj *bgpV4EviVxlanBgpRouteTargetIter) Items() []BgpRouteTarget { - return obj.bgpRouteTargetSlice -} - -func (obj *bgpV4EviVxlanBgpRouteTargetIter) Add() BgpRouteTarget { - newObj := &otg.BgpRouteTarget{} - *obj.fieldPtr = append(*obj.fieldPtr, newObj) - newLibObj := &bgpRouteTarget{obj: newObj} - newLibObj.setDefault() - obj.bgpRouteTargetSlice = append(obj.bgpRouteTargetSlice, newLibObj) - return newLibObj -} - -func (obj *bgpV4EviVxlanBgpRouteTargetIter) Append(items ...BgpRouteTarget) BgpV4EviVxlanBgpRouteTargetIter { - for _, item := range items { - newObj := item.Msg() - *obj.fieldPtr = append(*obj.fieldPtr, newObj) - obj.bgpRouteTargetSlice = append(obj.bgpRouteTargetSlice, item) + protoMarshal, err := proto.Marshal(obj.Msg()) + if err != nil { + return "", err } - return obj + return string(protoMarshal), nil } -func (obj *bgpV4EviVxlanBgpRouteTargetIter) Set(index int, newObj BgpRouteTarget) BgpV4EviVxlanBgpRouteTargetIter { - (*obj.fieldPtr)[index] = newObj.Msg() - obj.bgpRouteTargetSlice[index] = newObj - return obj -} -func (obj *bgpV4EviVxlanBgpRouteTargetIter) Clear() BgpV4EviVxlanBgpRouteTargetIter { - if len(*obj.fieldPtr) > 0 { - *obj.fieldPtr = []*otg.BgpRouteTarget{} - obj.bgpRouteTargetSlice = []BgpRouteTarget{} +func (obj *patternFlowRSVPPathLabelRequestWithoutLabelRangeReserved) FromPbText(value string) error { + retObj := proto.Unmarshal([]byte(value), obj.Msg()) + if retObj != nil { + return retObj } - return obj -} -func (obj *bgpV4EviVxlanBgpRouteTargetIter) clearHolderSlice() BgpV4EviVxlanBgpRouteTargetIter { - if len(obj.bgpRouteTargetSlice) > 0 { - obj.bgpRouteTargetSlice = []BgpRouteTarget{} + obj.setNil() + vErr := obj.validateToAndFrom() + if vErr != nil { + return vErr } - return obj -} -func (obj *bgpV4EviVxlanBgpRouteTargetIter) appendHolderSlice(item BgpRouteTarget) BgpV4EviVxlanBgpRouteTargetIter { - obj.bgpRouteTargetSlice = append(obj.bgpRouteTargetSlice, item) - return obj + return retObj } -// List of L2VNI import targets associated with this EVI. -// RouteTargetImport returns a []BgpRouteTarget -func (obj *bgpV4EviVxlan) RouteTargetImport() BgpV4EviVxlanBgpRouteTargetIter { - if len(obj.obj.RouteTargetImport) == 0 { - obj.obj.RouteTargetImport = []*otg.BgpRouteTarget{} +func (obj *patternFlowRSVPPathLabelRequestWithoutLabelRangeReserved) ToYaml() (string, error) { + vErr := obj.validateToAndFrom() + if vErr != nil { + return "", vErr + } + opts := protojson.MarshalOptions{ + UseProtoNames: true, + AllowPartial: true, + EmitUnpopulated: false, } - if obj.routeTargetImportHolder == nil { - obj.routeTargetImportHolder = newBgpV4EviVxlanBgpRouteTargetIter(&obj.obj.RouteTargetImport).setMsg(obj) + data, err := opts.Marshal(obj.Msg()) + if err != nil { + return "", err } - return obj.routeTargetImportHolder + data, err = yaml.JSONToYAML(data) + if err != nil { + return "", err + } + return string(data), nil } -// List of Layer 3 Virtual Network Identifier (L3VNI) Export Route Targets. -// L3RouteTargetExport returns a []BgpRouteTarget -func (obj *bgpV4EviVxlan) L3RouteTargetExport() BgpV4EviVxlanBgpRouteTargetIter { - if len(obj.obj.L3RouteTargetExport) == 0 { - obj.obj.L3RouteTargetExport = []*otg.BgpRouteTarget{} +func (obj *patternFlowRSVPPathLabelRequestWithoutLabelRangeReserved) FromYaml(value string) error { + if value == "" { + value = "{}" } - if obj.l3RouteTargetExportHolder == nil { - obj.l3RouteTargetExportHolder = newBgpV4EviVxlanBgpRouteTargetIter(&obj.obj.L3RouteTargetExport).setMsg(obj) + data, err := yaml.YAMLToJSON([]byte(value)) + if err != nil { + return err } - return obj.l3RouteTargetExportHolder + opts := protojson.UnmarshalOptions{ + AllowPartial: true, + DiscardUnknown: false, + } + uError := opts.Unmarshal([]byte(data), obj.Msg()) + if uError != nil { + return fmt.Errorf("unmarshal error %s", strings.Replace( + uError.Error(), "\u00a0", " ", -1)[7:]) + } + obj.setNil() + vErr := obj.validateToAndFrom() + if vErr != nil { + return vErr + } + return nil } -// List of L3VNI Import Route Targets. -// L3RouteTargetImport returns a []BgpRouteTarget -func (obj *bgpV4EviVxlan) L3RouteTargetImport() BgpV4EviVxlanBgpRouteTargetIter { - if len(obj.obj.L3RouteTargetImport) == 0 { - obj.obj.L3RouteTargetImport = []*otg.BgpRouteTarget{} +func (obj *patternFlowRSVPPathLabelRequestWithoutLabelRangeReserved) ToJson() (string, error) { + vErr := obj.validateToAndFrom() + if vErr != nil { + return "", vErr } - if obj.l3RouteTargetImportHolder == nil { - obj.l3RouteTargetImportHolder = newBgpV4EviVxlanBgpRouteTargetIter(&obj.obj.L3RouteTargetImport).setMsg(obj) + opts := protojson.MarshalOptions{ + UseProtoNames: true, + AllowPartial: true, + EmitUnpopulated: false, + Indent: " ", } - return obj.l3RouteTargetImportHolder + data, err := opts.Marshal(obj.Msg()) + if err != nil { + return "", err + } + return string(data), nil } -// description is TBD -// Advanced returns a BgpRouteAdvanced -func (obj *bgpV4EviVxlan) Advanced() BgpRouteAdvanced { - if obj.obj.Advanced == nil { - obj.obj.Advanced = NewBgpRouteAdvanced().Msg() +func (obj *patternFlowRSVPPathLabelRequestWithoutLabelRangeReserved) FromJson(value string) error { + opts := protojson.UnmarshalOptions{ + AllowPartial: true, + DiscardUnknown: false, } - if obj.advancedHolder == nil { - obj.advancedHolder = &bgpRouteAdvanced{obj: obj.obj.Advanced} + if value == "" { + value = "{}" } - return obj.advancedHolder + uError := opts.Unmarshal([]byte(value), obj.Msg()) + if uError != nil { + return fmt.Errorf("unmarshal error %s", strings.Replace( + uError.Error(), "\u00a0", " ", -1)[7:]) + } + obj.setNil() + err := obj.validateToAndFrom() + if err != nil { + return err + } + return nil } -// description is TBD -// Advanced returns a BgpRouteAdvanced -func (obj *bgpV4EviVxlan) HasAdvanced() bool { - return obj.obj.Advanced != nil +func (obj *patternFlowRSVPPathLabelRequestWithoutLabelRangeReserved) validateToAndFrom() error { + // emptyVars() + obj.validateObj(&obj.validation, true) + return obj.validationResult() } -// description is TBD -// SetAdvanced sets the BgpRouteAdvanced value in the BgpV4EviVxlan object -func (obj *bgpV4EviVxlan) SetAdvanced(value BgpRouteAdvanced) BgpV4EviVxlan { - - obj.advancedHolder = nil - obj.obj.Advanced = value.Msg() +func (obj *patternFlowRSVPPathLabelRequestWithoutLabelRangeReserved) Validate() error { + // emptyVars() + obj.validateObj(&obj.validation, false) + return obj.validationResult() +} - return obj +func (obj *patternFlowRSVPPathLabelRequestWithoutLabelRangeReserved) String() string { + str, err := obj.ToYaml() + if err != nil { + return err.Error() + } + return str } -// Optional community settings. -// Communities returns a []BgpCommunity -func (obj *bgpV4EviVxlan) Communities() BgpV4EviVxlanBgpCommunityIter { - if len(obj.obj.Communities) == 0 { - obj.obj.Communities = []*otg.BgpCommunity{} +func (obj *patternFlowRSVPPathLabelRequestWithoutLabelRangeReserved) Clone() (PatternFlowRSVPPathLabelRequestWithoutLabelRangeReserved, error) { + vErr := obj.Validate() + if vErr != nil { + return nil, vErr } - if obj.communitiesHolder == nil { - obj.communitiesHolder = newBgpV4EviVxlanBgpCommunityIter(&obj.obj.Communities).setMsg(obj) + newObj := NewPatternFlowRSVPPathLabelRequestWithoutLabelRangeReserved() + data, err := proto.Marshal(obj.Msg()) + if err != nil { + return nil, err } - return obj.communitiesHolder + pbErr := proto.Unmarshal(data, newObj.Msg()) + if pbErr != nil { + return nil, pbErr + } + return newObj, nil } -type bgpV4EviVxlanBgpCommunityIter struct { - obj *bgpV4EviVxlan - bgpCommunitySlice []BgpCommunity - fieldPtr *[]*otg.BgpCommunity +func (obj *patternFlowRSVPPathLabelRequestWithoutLabelRangeReserved) setNil() { + obj.incrementHolder = nil + obj.decrementHolder = nil + obj.validationErrors = nil + obj.warnings = nil + obj.constraints = make(map[string]map[string]Constraints) } -func newBgpV4EviVxlanBgpCommunityIter(ptr *[]*otg.BgpCommunity) BgpV4EviVxlanBgpCommunityIter { - return &bgpV4EviVxlanBgpCommunityIter{fieldPtr: ptr} +// PatternFlowRSVPPathLabelRequestWithoutLabelRangeReserved is this field is reserved. It MUST be set to zero on transmission and MUST be ignored on receipt. +type PatternFlowRSVPPathLabelRequestWithoutLabelRangeReserved interface { + Validation + // Msg marshals PatternFlowRSVPPathLabelRequestWithoutLabelRangeReserved to protobuf object *otg.PatternFlowRSVPPathLabelRequestWithoutLabelRangeReserved + // and doesn't set defaults + Msg() *otg.PatternFlowRSVPPathLabelRequestWithoutLabelRangeReserved + // SetMsg unmarshals PatternFlowRSVPPathLabelRequestWithoutLabelRangeReserved from protobuf object *otg.PatternFlowRSVPPathLabelRequestWithoutLabelRangeReserved + // and doesn't set defaults + SetMsg(*otg.PatternFlowRSVPPathLabelRequestWithoutLabelRangeReserved) PatternFlowRSVPPathLabelRequestWithoutLabelRangeReserved + // ToProto marshals PatternFlowRSVPPathLabelRequestWithoutLabelRangeReserved to protobuf object *otg.PatternFlowRSVPPathLabelRequestWithoutLabelRangeReserved + ToProto() (*otg.PatternFlowRSVPPathLabelRequestWithoutLabelRangeReserved, error) + // ToPbText marshals PatternFlowRSVPPathLabelRequestWithoutLabelRangeReserved to protobuf text + ToPbText() (string, error) + // ToYaml marshals PatternFlowRSVPPathLabelRequestWithoutLabelRangeReserved to YAML text + ToYaml() (string, error) + // ToJson marshals PatternFlowRSVPPathLabelRequestWithoutLabelRangeReserved to JSON text + ToJson() (string, error) + // FromProto unmarshals PatternFlowRSVPPathLabelRequestWithoutLabelRangeReserved from protobuf object *otg.PatternFlowRSVPPathLabelRequestWithoutLabelRangeReserved + FromProto(msg *otg.PatternFlowRSVPPathLabelRequestWithoutLabelRangeReserved) (PatternFlowRSVPPathLabelRequestWithoutLabelRangeReserved, error) + // FromPbText unmarshals PatternFlowRSVPPathLabelRequestWithoutLabelRangeReserved from protobuf text + FromPbText(value string) error + // FromYaml unmarshals PatternFlowRSVPPathLabelRequestWithoutLabelRangeReserved from YAML text + FromYaml(value string) error + // FromJson unmarshals PatternFlowRSVPPathLabelRequestWithoutLabelRangeReserved from JSON text + FromJson(value string) error + // Validate validates PatternFlowRSVPPathLabelRequestWithoutLabelRangeReserved + Validate() error + // A stringer function + String() string + // Clones the object + Clone() (PatternFlowRSVPPathLabelRequestWithoutLabelRangeReserved, error) + validateToAndFrom() error + validateObj(vObj *validation, set_default bool) + setDefault() + // Choice returns PatternFlowRSVPPathLabelRequestWithoutLabelRangeReservedChoiceEnum, set in PatternFlowRSVPPathLabelRequestWithoutLabelRangeReserved + Choice() PatternFlowRSVPPathLabelRequestWithoutLabelRangeReservedChoiceEnum + // SetChoice assigns PatternFlowRSVPPathLabelRequestWithoutLabelRangeReservedChoiceEnum provided by user to PatternFlowRSVPPathLabelRequestWithoutLabelRangeReserved + SetChoice(value PatternFlowRSVPPathLabelRequestWithoutLabelRangeReservedChoiceEnum) PatternFlowRSVPPathLabelRequestWithoutLabelRangeReserved + // HasChoice checks if Choice has been set in PatternFlowRSVPPathLabelRequestWithoutLabelRangeReserved + HasChoice() bool + // Value returns uint32, set in PatternFlowRSVPPathLabelRequestWithoutLabelRangeReserved. + Value() uint32 + // SetValue assigns uint32 provided by user to PatternFlowRSVPPathLabelRequestWithoutLabelRangeReserved + SetValue(value uint32) PatternFlowRSVPPathLabelRequestWithoutLabelRangeReserved + // HasValue checks if Value has been set in PatternFlowRSVPPathLabelRequestWithoutLabelRangeReserved + HasValue() bool + // Values returns []uint32, set in PatternFlowRSVPPathLabelRequestWithoutLabelRangeReserved. + Values() []uint32 + // SetValues assigns []uint32 provided by user to PatternFlowRSVPPathLabelRequestWithoutLabelRangeReserved + SetValues(value []uint32) PatternFlowRSVPPathLabelRequestWithoutLabelRangeReserved + // Increment returns PatternFlowRSVPPathLabelRequestWithoutLabelRangeReservedCounter, set in PatternFlowRSVPPathLabelRequestWithoutLabelRangeReserved. + // PatternFlowRSVPPathLabelRequestWithoutLabelRangeReservedCounter is integer counter pattern + Increment() PatternFlowRSVPPathLabelRequestWithoutLabelRangeReservedCounter + // SetIncrement assigns PatternFlowRSVPPathLabelRequestWithoutLabelRangeReservedCounter provided by user to PatternFlowRSVPPathLabelRequestWithoutLabelRangeReserved. + // PatternFlowRSVPPathLabelRequestWithoutLabelRangeReservedCounter is integer counter pattern + SetIncrement(value PatternFlowRSVPPathLabelRequestWithoutLabelRangeReservedCounter) PatternFlowRSVPPathLabelRequestWithoutLabelRangeReserved + // HasIncrement checks if Increment has been set in PatternFlowRSVPPathLabelRequestWithoutLabelRangeReserved + HasIncrement() bool + // Decrement returns PatternFlowRSVPPathLabelRequestWithoutLabelRangeReservedCounter, set in PatternFlowRSVPPathLabelRequestWithoutLabelRangeReserved. + // PatternFlowRSVPPathLabelRequestWithoutLabelRangeReservedCounter is integer counter pattern + Decrement() PatternFlowRSVPPathLabelRequestWithoutLabelRangeReservedCounter + // SetDecrement assigns PatternFlowRSVPPathLabelRequestWithoutLabelRangeReservedCounter provided by user to PatternFlowRSVPPathLabelRequestWithoutLabelRangeReserved. + // PatternFlowRSVPPathLabelRequestWithoutLabelRangeReservedCounter is integer counter pattern + SetDecrement(value PatternFlowRSVPPathLabelRequestWithoutLabelRangeReservedCounter) PatternFlowRSVPPathLabelRequestWithoutLabelRangeReserved + // HasDecrement checks if Decrement has been set in PatternFlowRSVPPathLabelRequestWithoutLabelRangeReserved + HasDecrement() bool + setNil() } -type BgpV4EviVxlanBgpCommunityIter interface { - setMsg(*bgpV4EviVxlan) BgpV4EviVxlanBgpCommunityIter - Items() []BgpCommunity - Add() BgpCommunity - Append(items ...BgpCommunity) BgpV4EviVxlanBgpCommunityIter - Set(index int, newObj BgpCommunity) BgpV4EviVxlanBgpCommunityIter - Clear() BgpV4EviVxlanBgpCommunityIter - clearHolderSlice() BgpV4EviVxlanBgpCommunityIter - appendHolderSlice(item BgpCommunity) BgpV4EviVxlanBgpCommunityIter -} +type PatternFlowRSVPPathLabelRequestWithoutLabelRangeReservedChoiceEnum string -func (obj *bgpV4EviVxlanBgpCommunityIter) setMsg(msg *bgpV4EviVxlan) BgpV4EviVxlanBgpCommunityIter { - obj.clearHolderSlice() - for _, val := range *obj.fieldPtr { - obj.appendHolderSlice(&bgpCommunity{obj: val}) - } - obj.obj = msg - return obj +// Enum of Choice on PatternFlowRSVPPathLabelRequestWithoutLabelRangeReserved +var PatternFlowRSVPPathLabelRequestWithoutLabelRangeReservedChoice = struct { + VALUE PatternFlowRSVPPathLabelRequestWithoutLabelRangeReservedChoiceEnum + VALUES PatternFlowRSVPPathLabelRequestWithoutLabelRangeReservedChoiceEnum + INCREMENT PatternFlowRSVPPathLabelRequestWithoutLabelRangeReservedChoiceEnum + DECREMENT PatternFlowRSVPPathLabelRequestWithoutLabelRangeReservedChoiceEnum +}{ + VALUE: PatternFlowRSVPPathLabelRequestWithoutLabelRangeReservedChoiceEnum("value"), + VALUES: PatternFlowRSVPPathLabelRequestWithoutLabelRangeReservedChoiceEnum("values"), + INCREMENT: PatternFlowRSVPPathLabelRequestWithoutLabelRangeReservedChoiceEnum("increment"), + DECREMENT: PatternFlowRSVPPathLabelRequestWithoutLabelRangeReservedChoiceEnum("decrement"), } -func (obj *bgpV4EviVxlanBgpCommunityIter) Items() []BgpCommunity { - return obj.bgpCommunitySlice +func (obj *patternFlowRSVPPathLabelRequestWithoutLabelRangeReserved) Choice() PatternFlowRSVPPathLabelRequestWithoutLabelRangeReservedChoiceEnum { + return PatternFlowRSVPPathLabelRequestWithoutLabelRangeReservedChoiceEnum(obj.obj.Choice.Enum().String()) } -func (obj *bgpV4EviVxlanBgpCommunityIter) Add() BgpCommunity { - newObj := &otg.BgpCommunity{} - *obj.fieldPtr = append(*obj.fieldPtr, newObj) - newLibObj := &bgpCommunity{obj: newObj} - newLibObj.setDefault() - obj.bgpCommunitySlice = append(obj.bgpCommunitySlice, newLibObj) - return newLibObj +// description is TBD +// Choice returns a string +func (obj *patternFlowRSVPPathLabelRequestWithoutLabelRangeReserved) HasChoice() bool { + return obj.obj.Choice != nil } -func (obj *bgpV4EviVxlanBgpCommunityIter) Append(items ...BgpCommunity) BgpV4EviVxlanBgpCommunityIter { - for _, item := range items { - newObj := item.Msg() - *obj.fieldPtr = append(*obj.fieldPtr, newObj) - obj.bgpCommunitySlice = append(obj.bgpCommunitySlice, item) +func (obj *patternFlowRSVPPathLabelRequestWithoutLabelRangeReserved) SetChoice(value PatternFlowRSVPPathLabelRequestWithoutLabelRangeReservedChoiceEnum) PatternFlowRSVPPathLabelRequestWithoutLabelRangeReserved { + intValue, ok := otg.PatternFlowRSVPPathLabelRequestWithoutLabelRangeReserved_Choice_Enum_value[string(value)] + if !ok { + obj.validationErrors = append(obj.validationErrors, fmt.Sprintf( + "%s is not a valid choice on PatternFlowRSVPPathLabelRequestWithoutLabelRangeReservedChoiceEnum", string(value))) + return obj } - return obj -} + enumValue := otg.PatternFlowRSVPPathLabelRequestWithoutLabelRangeReserved_Choice_Enum(intValue) + obj.obj.Choice = &enumValue + obj.obj.Decrement = nil + obj.decrementHolder = nil + obj.obj.Increment = nil + obj.incrementHolder = nil + obj.obj.Values = nil + obj.obj.Value = nil -func (obj *bgpV4EviVxlanBgpCommunityIter) Set(index int, newObj BgpCommunity) BgpV4EviVxlanBgpCommunityIter { - (*obj.fieldPtr)[index] = newObj.Msg() - obj.bgpCommunitySlice[index] = newObj - return obj -} -func (obj *bgpV4EviVxlanBgpCommunityIter) Clear() BgpV4EviVxlanBgpCommunityIter { - if len(*obj.fieldPtr) > 0 { - *obj.fieldPtr = []*otg.BgpCommunity{} - obj.bgpCommunitySlice = []BgpCommunity{} - } - return obj -} -func (obj *bgpV4EviVxlanBgpCommunityIter) clearHolderSlice() BgpV4EviVxlanBgpCommunityIter { - if len(obj.bgpCommunitySlice) > 0 { - obj.bgpCommunitySlice = []BgpCommunity{} + if value == PatternFlowRSVPPathLabelRequestWithoutLabelRangeReservedChoice.VALUE { + defaultValue := uint32(0) + obj.obj.Value = &defaultValue } - return obj -} -func (obj *bgpV4EviVxlanBgpCommunityIter) appendHolderSlice(item BgpCommunity) BgpV4EviVxlanBgpCommunityIter { - obj.bgpCommunitySlice = append(obj.bgpCommunitySlice, item) - return obj -} -// Optional Extended Community settings. The Extended Communities Attribute is a transitive optional BGP attribute, with the Type Code 16. Community and Extended Communities attributes are utilized to trigger routing decisions, such as acceptance, rejection, preference, or redistribution. An extended community is an 8-Bytes value. It is divided into two main parts. The first 2 Bytes of the community encode a type and sub-type fields and the last 6 Bytes carry a unique set of data in a format defined by the type and sub-type field. Extended communities provide a larger range for grouping or categorizing communities. When type is administrator_as_2octet or administrator_as_4octet, the valid sub types are route target and origin. The valid value for administrator_as_2octet and administrator_as_4octet type is either two byte AS followed by four byte local administrator id or four byte AS followed by two byte local administrator id. When type is administrator_ipv4_address the valid sub types are route target and origin. The valid value for administrator_ipv4_address is a four byte IPv4 address followed by a two byte local administrator id. When type is opaque, valid sub types are color and encapsulation. When sub type is color, first two bytes of the value field contain flags and last four bytes contains the value of the color. When sub type is encapsulation the first four bytes of value field are reserved and last two bytes carries the tunnel type from IANA's "ETHER TYPES" registry e.g IPv4 (protocol type = 0x0800), IPv6 (protocol type = 0x86dd), and MPLS (protocol type = 0x8847). When type is administrator_as_2octet_link_bandwidth the valid sub type is extended_bandwidth. The first two bytes of the value field contains the AS number and the last four bytes contains the bandwidth in IEEE floating point format. When type is evpn the valid subtype is mac_address. In the value field the low-order bit of the first byte(Flags) is defined as the "Sticky/static" flag and may be set to 1, indicating the MAC address is static and cannot move. The second byte is reserved and the last four bytes contain the sequence number which is used to ensure that PEs retain the correct MAC/IP Advertisement route when multiple updates occur for the same MAC address. -// ExtCommunities returns a []BgpExtCommunity -func (obj *bgpV4EviVxlan) ExtCommunities() BgpV4EviVxlanBgpExtCommunityIter { - if len(obj.obj.ExtCommunities) == 0 { - obj.obj.ExtCommunities = []*otg.BgpExtCommunity{} + if value == PatternFlowRSVPPathLabelRequestWithoutLabelRangeReservedChoice.VALUES { + defaultValue := []uint32{0} + obj.obj.Values = defaultValue } - if obj.extCommunitiesHolder == nil { - obj.extCommunitiesHolder = newBgpV4EviVxlanBgpExtCommunityIter(&obj.obj.ExtCommunities).setMsg(obj) + + if value == PatternFlowRSVPPathLabelRequestWithoutLabelRangeReservedChoice.INCREMENT { + obj.obj.Increment = NewPatternFlowRSVPPathLabelRequestWithoutLabelRangeReservedCounter().Msg() } - return obj.extCommunitiesHolder -} -type bgpV4EviVxlanBgpExtCommunityIter struct { - obj *bgpV4EviVxlan - bgpExtCommunitySlice []BgpExtCommunity - fieldPtr *[]*otg.BgpExtCommunity -} + if value == PatternFlowRSVPPathLabelRequestWithoutLabelRangeReservedChoice.DECREMENT { + obj.obj.Decrement = NewPatternFlowRSVPPathLabelRequestWithoutLabelRangeReservedCounter().Msg() + } -func newBgpV4EviVxlanBgpExtCommunityIter(ptr *[]*otg.BgpExtCommunity) BgpV4EviVxlanBgpExtCommunityIter { - return &bgpV4EviVxlanBgpExtCommunityIter{fieldPtr: ptr} + return obj } -type BgpV4EviVxlanBgpExtCommunityIter interface { - setMsg(*bgpV4EviVxlan) BgpV4EviVxlanBgpExtCommunityIter - Items() []BgpExtCommunity - Add() BgpExtCommunity - Append(items ...BgpExtCommunity) BgpV4EviVxlanBgpExtCommunityIter - Set(index int, newObj BgpExtCommunity) BgpV4EviVxlanBgpExtCommunityIter - Clear() BgpV4EviVxlanBgpExtCommunityIter - clearHolderSlice() BgpV4EviVxlanBgpExtCommunityIter - appendHolderSlice(item BgpExtCommunity) BgpV4EviVxlanBgpExtCommunityIter -} +// description is TBD +// Value returns a uint32 +func (obj *patternFlowRSVPPathLabelRequestWithoutLabelRangeReserved) Value() uint32 { -func (obj *bgpV4EviVxlanBgpExtCommunityIter) setMsg(msg *bgpV4EviVxlan) BgpV4EviVxlanBgpExtCommunityIter { - obj.clearHolderSlice() - for _, val := range *obj.fieldPtr { - obj.appendHolderSlice(&bgpExtCommunity{obj: val}) + if obj.obj.Value == nil { + obj.SetChoice(PatternFlowRSVPPathLabelRequestWithoutLabelRangeReservedChoice.VALUE) } - obj.obj = msg - return obj -} -func (obj *bgpV4EviVxlanBgpExtCommunityIter) Items() []BgpExtCommunity { - return obj.bgpExtCommunitySlice -} + return *obj.obj.Value -func (obj *bgpV4EviVxlanBgpExtCommunityIter) Add() BgpExtCommunity { - newObj := &otg.BgpExtCommunity{} - *obj.fieldPtr = append(*obj.fieldPtr, newObj) - newLibObj := &bgpExtCommunity{obj: newObj} - newLibObj.setDefault() - obj.bgpExtCommunitySlice = append(obj.bgpExtCommunitySlice, newLibObj) - return newLibObj } -func (obj *bgpV4EviVxlanBgpExtCommunityIter) Append(items ...BgpExtCommunity) BgpV4EviVxlanBgpExtCommunityIter { - for _, item := range items { - newObj := item.Msg() - *obj.fieldPtr = append(*obj.fieldPtr, newObj) - obj.bgpExtCommunitySlice = append(obj.bgpExtCommunitySlice, item) - } - return obj +// description is TBD +// Value returns a uint32 +func (obj *patternFlowRSVPPathLabelRequestWithoutLabelRangeReserved) HasValue() bool { + return obj.obj.Value != nil } -func (obj *bgpV4EviVxlanBgpExtCommunityIter) Set(index int, newObj BgpExtCommunity) BgpV4EviVxlanBgpExtCommunityIter { - (*obj.fieldPtr)[index] = newObj.Msg() - obj.bgpExtCommunitySlice[index] = newObj +// description is TBD +// SetValue sets the uint32 value in the PatternFlowRSVPPathLabelRequestWithoutLabelRangeReserved object +func (obj *patternFlowRSVPPathLabelRequestWithoutLabelRangeReserved) SetValue(value uint32) PatternFlowRSVPPathLabelRequestWithoutLabelRangeReserved { + obj.SetChoice(PatternFlowRSVPPathLabelRequestWithoutLabelRangeReservedChoice.VALUE) + obj.obj.Value = &value return obj } -func (obj *bgpV4EviVxlanBgpExtCommunityIter) Clear() BgpV4EviVxlanBgpExtCommunityIter { - if len(*obj.fieldPtr) > 0 { - *obj.fieldPtr = []*otg.BgpExtCommunity{} - obj.bgpExtCommunitySlice = []BgpExtCommunity{} + +// description is TBD +// Values returns a []uint32 +func (obj *patternFlowRSVPPathLabelRequestWithoutLabelRangeReserved) Values() []uint32 { + if obj.obj.Values == nil { + obj.SetValues([]uint32{0}) } - return obj + return obj.obj.Values } -func (obj *bgpV4EviVxlanBgpExtCommunityIter) clearHolderSlice() BgpV4EviVxlanBgpExtCommunityIter { - if len(obj.bgpExtCommunitySlice) > 0 { - obj.bgpExtCommunitySlice = []BgpExtCommunity{} + +// description is TBD +// SetValues sets the []uint32 value in the PatternFlowRSVPPathLabelRequestWithoutLabelRangeReserved object +func (obj *patternFlowRSVPPathLabelRequestWithoutLabelRangeReserved) SetValues(value []uint32) PatternFlowRSVPPathLabelRequestWithoutLabelRangeReserved { + obj.SetChoice(PatternFlowRSVPPathLabelRequestWithoutLabelRangeReservedChoice.VALUES) + if obj.obj.Values == nil { + obj.obj.Values = make([]uint32, 0) } - return obj -} -func (obj *bgpV4EviVxlanBgpExtCommunityIter) appendHolderSlice(item BgpExtCommunity) BgpV4EviVxlanBgpExtCommunityIter { - obj.bgpExtCommunitySlice = append(obj.bgpExtCommunitySlice, item) + obj.obj.Values = value + return obj } -// Optional AS PATH settings. -// AsPath returns a BgpAsPath -func (obj *bgpV4EviVxlan) AsPath() BgpAsPath { - if obj.obj.AsPath == nil { - obj.obj.AsPath = NewBgpAsPath().Msg() +// description is TBD +// Increment returns a PatternFlowRSVPPathLabelRequestWithoutLabelRangeReservedCounter +func (obj *patternFlowRSVPPathLabelRequestWithoutLabelRangeReserved) Increment() PatternFlowRSVPPathLabelRequestWithoutLabelRangeReservedCounter { + if obj.obj.Increment == nil { + obj.SetChoice(PatternFlowRSVPPathLabelRequestWithoutLabelRangeReservedChoice.INCREMENT) } - if obj.asPathHolder == nil { - obj.asPathHolder = &bgpAsPath{obj: obj.obj.AsPath} + if obj.incrementHolder == nil { + obj.incrementHolder = &patternFlowRSVPPathLabelRequestWithoutLabelRangeReservedCounter{obj: obj.obj.Increment} } - return obj.asPathHolder + return obj.incrementHolder } -// Optional AS PATH settings. -// AsPath returns a BgpAsPath -func (obj *bgpV4EviVxlan) HasAsPath() bool { - return obj.obj.AsPath != nil +// description is TBD +// Increment returns a PatternFlowRSVPPathLabelRequestWithoutLabelRangeReservedCounter +func (obj *patternFlowRSVPPathLabelRequestWithoutLabelRangeReserved) HasIncrement() bool { + return obj.obj.Increment != nil } -// Optional AS PATH settings. -// SetAsPath sets the BgpAsPath value in the BgpV4EviVxlan object -func (obj *bgpV4EviVxlan) SetAsPath(value BgpAsPath) BgpV4EviVxlan { - - obj.asPathHolder = nil - obj.obj.AsPath = value.Msg() +// description is TBD +// SetIncrement sets the PatternFlowRSVPPathLabelRequestWithoutLabelRangeReservedCounter value in the PatternFlowRSVPPathLabelRequestWithoutLabelRangeReserved object +func (obj *patternFlowRSVPPathLabelRequestWithoutLabelRangeReserved) SetIncrement(value PatternFlowRSVPPathLabelRequestWithoutLabelRangeReservedCounter) PatternFlowRSVPPathLabelRequestWithoutLabelRangeReserved { + obj.SetChoice(PatternFlowRSVPPathLabelRequestWithoutLabelRangeReservedChoice.INCREMENT) + obj.incrementHolder = nil + obj.obj.Increment = value.Msg() return obj } -func (obj *bgpV4EviVxlan) validateObj(vObj *validation, set_default bool) { - if set_default { - obj.setDefault() +// description is TBD +// Decrement returns a PatternFlowRSVPPathLabelRequestWithoutLabelRangeReservedCounter +func (obj *patternFlowRSVPPathLabelRequestWithoutLabelRangeReserved) Decrement() PatternFlowRSVPPathLabelRequestWithoutLabelRangeReservedCounter { + if obj.obj.Decrement == nil { + obj.SetChoice(PatternFlowRSVPPathLabelRequestWithoutLabelRangeReservedChoice.DECREMENT) } - - if len(obj.obj.BroadcastDomains) != 0 { - - if set_default { - obj.BroadcastDomains().clearHolderSlice() - for _, item := range obj.obj.BroadcastDomains { - obj.BroadcastDomains().appendHolderSlice(&bgpV4EviVxlanBroadcastDomain{obj: item}) - } - } - for _, item := range obj.BroadcastDomains().Items() { - item.validateObj(vObj, set_default) - } - + if obj.decrementHolder == nil { + obj.decrementHolder = &patternFlowRSVPPathLabelRequestWithoutLabelRangeReservedCounter{obj: obj.obj.Decrement} } + return obj.decrementHolder +} - if obj.obj.PmsiLabel != nil { +// description is TBD +// Decrement returns a PatternFlowRSVPPathLabelRequestWithoutLabelRangeReservedCounter +func (obj *patternFlowRSVPPathLabelRequestWithoutLabelRangeReserved) HasDecrement() bool { + return obj.obj.Decrement != nil +} - if *obj.obj.PmsiLabel > 16777215 { - vObj.validationErrors = append( - vObj.validationErrors, - fmt.Sprintf("0 <= BgpV4EviVxlan.PmsiLabel <= 16777215 but Got %d", *obj.obj.PmsiLabel)) - } +// description is TBD +// SetDecrement sets the PatternFlowRSVPPathLabelRequestWithoutLabelRangeReservedCounter value in the PatternFlowRSVPPathLabelRequestWithoutLabelRangeReserved object +func (obj *patternFlowRSVPPathLabelRequestWithoutLabelRangeReserved) SetDecrement(value PatternFlowRSVPPathLabelRequestWithoutLabelRangeReservedCounter) PatternFlowRSVPPathLabelRequestWithoutLabelRangeReserved { + obj.SetChoice(PatternFlowRSVPPathLabelRequestWithoutLabelRangeReservedChoice.DECREMENT) + obj.decrementHolder = nil + obj.obj.Decrement = value.Msg() + + return obj +} +func (obj *patternFlowRSVPPathLabelRequestWithoutLabelRangeReserved) validateObj(vObj *validation, set_default bool) { + if set_default { + obj.setDefault() } - if obj.obj.AdLabel != nil { + if obj.obj.Value != nil { - if *obj.obj.AdLabel > 16777215 { + if *obj.obj.Value > 65535 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("0 <= BgpV4EviVxlan.AdLabel <= 16777215 but Got %d", *obj.obj.AdLabel)) - } - - } - - if obj.obj.RouteDistinguisher != nil { - - obj.RouteDistinguisher().validateObj(vObj, set_default) - } - - if len(obj.obj.RouteTargetExport) != 0 { - - if set_default { - obj.RouteTargetExport().clearHolderSlice() - for _, item := range obj.obj.RouteTargetExport { - obj.RouteTargetExport().appendHolderSlice(&bgpRouteTarget{obj: item}) - } - } - for _, item := range obj.RouteTargetExport().Items() { - item.validateObj(vObj, set_default) - } - - } - - if len(obj.obj.RouteTargetImport) != 0 { - - if set_default { - obj.RouteTargetImport().clearHolderSlice() - for _, item := range obj.obj.RouteTargetImport { - obj.RouteTargetImport().appendHolderSlice(&bgpRouteTarget{obj: item}) - } - } - for _, item := range obj.RouteTargetImport().Items() { - item.validateObj(vObj, set_default) - } - - } - - if len(obj.obj.L3RouteTargetExport) != 0 { - - if set_default { - obj.L3RouteTargetExport().clearHolderSlice() - for _, item := range obj.obj.L3RouteTargetExport { - obj.L3RouteTargetExport().appendHolderSlice(&bgpRouteTarget{obj: item}) - } - } - for _, item := range obj.L3RouteTargetExport().Items() { - item.validateObj(vObj, set_default) + fmt.Sprintf("0 <= PatternFlowRSVPPathLabelRequestWithoutLabelRangeReserved.Value <= 65535 but Got %d", *obj.obj.Value)) } } - if len(obj.obj.L3RouteTargetImport) != 0 { + if obj.obj.Values != nil { - if set_default { - obj.L3RouteTargetImport().clearHolderSlice() - for _, item := range obj.obj.L3RouteTargetImport { - obj.L3RouteTargetImport().appendHolderSlice(&bgpRouteTarget{obj: item}) + for _, item := range obj.obj.Values { + if item > 65535 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("min(uint32) <= PatternFlowRSVPPathLabelRequestWithoutLabelRangeReserved.Values <= 65535 but Got %d", item)) } - } - for _, item := range obj.L3RouteTargetImport().Items() { - item.validateObj(vObj, set_default) - } - - } - - if obj.obj.Advanced != nil { - obj.Advanced().validateObj(vObj, set_default) - } - - if len(obj.obj.Communities) != 0 { - - if set_default { - obj.Communities().clearHolderSlice() - for _, item := range obj.obj.Communities { - obj.Communities().appendHolderSlice(&bgpCommunity{obj: item}) - } - } - for _, item := range obj.Communities().Items() { - item.validateObj(vObj, set_default) } } - if len(obj.obj.ExtCommunities) != 0 { - - if set_default { - obj.ExtCommunities().clearHolderSlice() - for _, item := range obj.obj.ExtCommunities { - obj.ExtCommunities().appendHolderSlice(&bgpExtCommunity{obj: item}) - } - } - for _, item := range obj.ExtCommunities().Items() { - item.validateObj(vObj, set_default) - } + if obj.obj.Increment != nil { + obj.Increment().validateObj(vObj, set_default) } - if obj.obj.AsPath != nil { + if obj.obj.Decrement != nil { - obj.AsPath().validateObj(vObj, set_default) + obj.Decrement().validateObj(vObj, set_default) } } -func (obj *bgpV4EviVxlan) setDefault() { - if obj.obj.ReplicationType == nil { - obj.SetReplicationType(BgpV4EviVxlanReplicationType.INGRESS_REPLICATION) +func (obj *patternFlowRSVPPathLabelRequestWithoutLabelRangeReserved) setDefault() { + if obj.obj.Choice == nil { + obj.SetChoice(PatternFlowRSVPPathLabelRequestWithoutLabelRangeReservedChoice.VALUE) } - if obj.obj.PmsiLabel == nil { - obj.SetPmsiLabel(16) - } - if obj.obj.AdLabel == nil { - obj.SetAdLabel(0) - } } -// ***** BgpAsPathSegment ***** -type bgpAsPathSegment struct { +// ***** PatternFlowRSVPPathLabelRequestWithoutLabelRangeL3Pid ***** +type patternFlowRSVPPathLabelRequestWithoutLabelRangeL3Pid struct { validation - obj *otg.BgpAsPathSegment + obj *otg.PatternFlowRSVPPathLabelRequestWithoutLabelRangeL3Pid + incrementHolder PatternFlowRSVPPathLabelRequestWithoutLabelRangeL3PidCounter + decrementHolder PatternFlowRSVPPathLabelRequestWithoutLabelRangeL3PidCounter } -func NewBgpAsPathSegment() BgpAsPathSegment { - obj := bgpAsPathSegment{obj: &otg.BgpAsPathSegment{}} +func NewPatternFlowRSVPPathLabelRequestWithoutLabelRangeL3Pid() PatternFlowRSVPPathLabelRequestWithoutLabelRangeL3Pid { + obj := patternFlowRSVPPathLabelRequestWithoutLabelRangeL3Pid{obj: &otg.PatternFlowRSVPPathLabelRequestWithoutLabelRangeL3Pid{}} obj.setDefault() return &obj } -func (obj *bgpAsPathSegment) Msg() *otg.BgpAsPathSegment { +func (obj *patternFlowRSVPPathLabelRequestWithoutLabelRangeL3Pid) Msg() *otg.PatternFlowRSVPPathLabelRequestWithoutLabelRangeL3Pid { return obj.obj } -func (obj *bgpAsPathSegment) SetMsg(msg *otg.BgpAsPathSegment) BgpAsPathSegment { - +func (obj *patternFlowRSVPPathLabelRequestWithoutLabelRangeL3Pid) SetMsg(msg *otg.PatternFlowRSVPPathLabelRequestWithoutLabelRangeL3Pid) PatternFlowRSVPPathLabelRequestWithoutLabelRangeL3Pid { + obj.setNil() proto.Merge(obj.obj, msg) return obj } -func (obj *bgpAsPathSegment) ToProto() (*otg.BgpAsPathSegment, error) { +func (obj *patternFlowRSVPPathLabelRequestWithoutLabelRangeL3Pid) ToProto() (*otg.PatternFlowRSVPPathLabelRequestWithoutLabelRangeL3Pid, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -298528,7 +344220,7 @@ func (obj *bgpAsPathSegment) ToProto() (*otg.BgpAsPathSegment, error) { return obj.Msg(), nil } -func (obj *bgpAsPathSegment) FromProto(msg *otg.BgpAsPathSegment) (BgpAsPathSegment, error) { +func (obj *patternFlowRSVPPathLabelRequestWithoutLabelRangeL3Pid) FromProto(msg *otg.PatternFlowRSVPPathLabelRequestWithoutLabelRangeL3Pid) (PatternFlowRSVPPathLabelRequestWithoutLabelRangeL3Pid, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -298537,7 +344229,7 @@ func (obj *bgpAsPathSegment) FromProto(msg *otg.BgpAsPathSegment) (BgpAsPathSegm return newObj, nil } -func (obj *bgpAsPathSegment) ToPbText() (string, error) { +func (obj *patternFlowRSVPPathLabelRequestWithoutLabelRangeL3Pid) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -298549,12 +344241,12 @@ func (obj *bgpAsPathSegment) ToPbText() (string, error) { return string(protoMarshal), nil } -func (obj *bgpAsPathSegment) FromPbText(value string) error { +func (obj *patternFlowRSVPPathLabelRequestWithoutLabelRangeL3Pid) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj } - + obj.setNil() vErr := obj.validateToAndFrom() if vErr != nil { return vErr @@ -298562,7 +344254,7 @@ func (obj *bgpAsPathSegment) FromPbText(value string) error { return retObj } -func (obj *bgpAsPathSegment) ToYaml() (string, error) { +func (obj *patternFlowRSVPPathLabelRequestWithoutLabelRangeL3Pid) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -298583,7 +344275,7 @@ func (obj *bgpAsPathSegment) ToYaml() (string, error) { return string(data), nil } -func (obj *bgpAsPathSegment) FromYaml(value string) error { +func (obj *patternFlowRSVPPathLabelRequestWithoutLabelRangeL3Pid) FromYaml(value string) error { if value == "" { value = "{}" } @@ -298600,7 +344292,7 @@ func (obj *bgpAsPathSegment) FromYaml(value string) error { return fmt.Errorf("unmarshal error %s", strings.Replace( uError.Error(), "\u00a0", " ", -1)[7:]) } - + obj.setNil() vErr := obj.validateToAndFrom() if vErr != nil { return vErr @@ -298608,7 +344300,7 @@ func (obj *bgpAsPathSegment) FromYaml(value string) error { return nil } -func (obj *bgpAsPathSegment) ToJson() (string, error) { +func (obj *patternFlowRSVPPathLabelRequestWithoutLabelRangeL3Pid) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -298626,7 +344318,7 @@ func (obj *bgpAsPathSegment) ToJson() (string, error) { return string(data), nil } -func (obj *bgpAsPathSegment) FromJson(value string) error { +func (obj *patternFlowRSVPPathLabelRequestWithoutLabelRangeL3Pid) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -298639,7 +344331,7 @@ func (obj *bgpAsPathSegment) FromJson(value string) error { return fmt.Errorf("unmarshal error %s", strings.Replace( uError.Error(), "\u00a0", " ", -1)[7:]) } - + obj.setNil() err := obj.validateToAndFrom() if err != nil { return err @@ -298647,19 +344339,19 @@ func (obj *bgpAsPathSegment) FromJson(value string) error { return nil } -func (obj *bgpAsPathSegment) validateToAndFrom() error { +func (obj *patternFlowRSVPPathLabelRequestWithoutLabelRangeL3Pid) validateToAndFrom() error { // emptyVars() obj.validateObj(&obj.validation, true) return obj.validationResult() } -func (obj *bgpAsPathSegment) Validate() error { +func (obj *patternFlowRSVPPathLabelRequestWithoutLabelRangeL3Pid) Validate() error { // emptyVars() obj.validateObj(&obj.validation, false) return obj.validationResult() } -func (obj *bgpAsPathSegment) String() string { +func (obj *patternFlowRSVPPathLabelRequestWithoutLabelRangeL3Pid) String() string { str, err := obj.ToYaml() if err != nil { return err.Error() @@ -298667,12 +344359,12 @@ func (obj *bgpAsPathSegment) String() string { return str } -func (obj *bgpAsPathSegment) Clone() (BgpAsPathSegment, error) { +func (obj *patternFlowRSVPPathLabelRequestWithoutLabelRangeL3Pid) Clone() (PatternFlowRSVPPathLabelRequestWithoutLabelRangeL3Pid, error) { vErr := obj.Validate() if vErr != nil { return nil, vErr } - newObj := NewBgpAsPathSegment() + newObj := NewPatternFlowRSVPPathLabelRequestWithoutLabelRangeL3Pid() data, err := proto.Marshal(obj.Msg()) if err != nil { return nil, err @@ -298684,152 +344376,315 @@ func (obj *bgpAsPathSegment) Clone() (BgpAsPathSegment, error) { return newObj, nil } -// BgpAsPathSegment is configuration for a single BGP AS path segment -type BgpAsPathSegment interface { +func (obj *patternFlowRSVPPathLabelRequestWithoutLabelRangeL3Pid) setNil() { + obj.incrementHolder = nil + obj.decrementHolder = nil + obj.validationErrors = nil + obj.warnings = nil + obj.constraints = make(map[string]map[string]Constraints) +} + +// PatternFlowRSVPPathLabelRequestWithoutLabelRangeL3Pid is an identifier of the layer 3 protocol using this path. Standard Ethertype values are used. +type PatternFlowRSVPPathLabelRequestWithoutLabelRangeL3Pid interface { Validation - // Msg marshals BgpAsPathSegment to protobuf object *otg.BgpAsPathSegment + // Msg marshals PatternFlowRSVPPathLabelRequestWithoutLabelRangeL3Pid to protobuf object *otg.PatternFlowRSVPPathLabelRequestWithoutLabelRangeL3Pid // and doesn't set defaults - Msg() *otg.BgpAsPathSegment - // SetMsg unmarshals BgpAsPathSegment from protobuf object *otg.BgpAsPathSegment + Msg() *otg.PatternFlowRSVPPathLabelRequestWithoutLabelRangeL3Pid + // SetMsg unmarshals PatternFlowRSVPPathLabelRequestWithoutLabelRangeL3Pid from protobuf object *otg.PatternFlowRSVPPathLabelRequestWithoutLabelRangeL3Pid // and doesn't set defaults - SetMsg(*otg.BgpAsPathSegment) BgpAsPathSegment - // ToProto marshals BgpAsPathSegment to protobuf object *otg.BgpAsPathSegment - ToProto() (*otg.BgpAsPathSegment, error) - // ToPbText marshals BgpAsPathSegment to protobuf text + SetMsg(*otg.PatternFlowRSVPPathLabelRequestWithoutLabelRangeL3Pid) PatternFlowRSVPPathLabelRequestWithoutLabelRangeL3Pid + // ToProto marshals PatternFlowRSVPPathLabelRequestWithoutLabelRangeL3Pid to protobuf object *otg.PatternFlowRSVPPathLabelRequestWithoutLabelRangeL3Pid + ToProto() (*otg.PatternFlowRSVPPathLabelRequestWithoutLabelRangeL3Pid, error) + // ToPbText marshals PatternFlowRSVPPathLabelRequestWithoutLabelRangeL3Pid to protobuf text ToPbText() (string, error) - // ToYaml marshals BgpAsPathSegment to YAML text + // ToYaml marshals PatternFlowRSVPPathLabelRequestWithoutLabelRangeL3Pid to YAML text ToYaml() (string, error) - // ToJson marshals BgpAsPathSegment to JSON text + // ToJson marshals PatternFlowRSVPPathLabelRequestWithoutLabelRangeL3Pid to JSON text ToJson() (string, error) - // FromProto unmarshals BgpAsPathSegment from protobuf object *otg.BgpAsPathSegment - FromProto(msg *otg.BgpAsPathSegment) (BgpAsPathSegment, error) - // FromPbText unmarshals BgpAsPathSegment from protobuf text + // FromProto unmarshals PatternFlowRSVPPathLabelRequestWithoutLabelRangeL3Pid from protobuf object *otg.PatternFlowRSVPPathLabelRequestWithoutLabelRangeL3Pid + FromProto(msg *otg.PatternFlowRSVPPathLabelRequestWithoutLabelRangeL3Pid) (PatternFlowRSVPPathLabelRequestWithoutLabelRangeL3Pid, error) + // FromPbText unmarshals PatternFlowRSVPPathLabelRequestWithoutLabelRangeL3Pid from protobuf text FromPbText(value string) error - // FromYaml unmarshals BgpAsPathSegment from YAML text + // FromYaml unmarshals PatternFlowRSVPPathLabelRequestWithoutLabelRangeL3Pid from YAML text FromYaml(value string) error - // FromJson unmarshals BgpAsPathSegment from JSON text + // FromJson unmarshals PatternFlowRSVPPathLabelRequestWithoutLabelRangeL3Pid from JSON text FromJson(value string) error - // Validate validates BgpAsPathSegment + // Validate validates PatternFlowRSVPPathLabelRequestWithoutLabelRangeL3Pid Validate() error // A stringer function String() string // Clones the object - Clone() (BgpAsPathSegment, error) + Clone() (PatternFlowRSVPPathLabelRequestWithoutLabelRangeL3Pid, error) validateToAndFrom() error validateObj(vObj *validation, set_default bool) setDefault() - // Type returns BgpAsPathSegmentTypeEnum, set in BgpAsPathSegment - Type() BgpAsPathSegmentTypeEnum - // SetType assigns BgpAsPathSegmentTypeEnum provided by user to BgpAsPathSegment - SetType(value BgpAsPathSegmentTypeEnum) BgpAsPathSegment - // HasType checks if Type has been set in BgpAsPathSegment - HasType() bool - // AsNumbers returns []uint32, set in BgpAsPathSegment. - AsNumbers() []uint32 - // SetAsNumbers assigns []uint32 provided by user to BgpAsPathSegment - SetAsNumbers(value []uint32) BgpAsPathSegment + // Choice returns PatternFlowRSVPPathLabelRequestWithoutLabelRangeL3PidChoiceEnum, set in PatternFlowRSVPPathLabelRequestWithoutLabelRangeL3Pid + Choice() PatternFlowRSVPPathLabelRequestWithoutLabelRangeL3PidChoiceEnum + // SetChoice assigns PatternFlowRSVPPathLabelRequestWithoutLabelRangeL3PidChoiceEnum provided by user to PatternFlowRSVPPathLabelRequestWithoutLabelRangeL3Pid + SetChoice(value PatternFlowRSVPPathLabelRequestWithoutLabelRangeL3PidChoiceEnum) PatternFlowRSVPPathLabelRequestWithoutLabelRangeL3Pid + // HasChoice checks if Choice has been set in PatternFlowRSVPPathLabelRequestWithoutLabelRangeL3Pid + HasChoice() bool + // Value returns uint32, set in PatternFlowRSVPPathLabelRequestWithoutLabelRangeL3Pid. + Value() uint32 + // SetValue assigns uint32 provided by user to PatternFlowRSVPPathLabelRequestWithoutLabelRangeL3Pid + SetValue(value uint32) PatternFlowRSVPPathLabelRequestWithoutLabelRangeL3Pid + // HasValue checks if Value has been set in PatternFlowRSVPPathLabelRequestWithoutLabelRangeL3Pid + HasValue() bool + // Values returns []uint32, set in PatternFlowRSVPPathLabelRequestWithoutLabelRangeL3Pid. + Values() []uint32 + // SetValues assigns []uint32 provided by user to PatternFlowRSVPPathLabelRequestWithoutLabelRangeL3Pid + SetValues(value []uint32) PatternFlowRSVPPathLabelRequestWithoutLabelRangeL3Pid + // Increment returns PatternFlowRSVPPathLabelRequestWithoutLabelRangeL3PidCounter, set in PatternFlowRSVPPathLabelRequestWithoutLabelRangeL3Pid. + Increment() PatternFlowRSVPPathLabelRequestWithoutLabelRangeL3PidCounter + // SetIncrement assigns PatternFlowRSVPPathLabelRequestWithoutLabelRangeL3PidCounter provided by user to PatternFlowRSVPPathLabelRequestWithoutLabelRangeL3Pid. + SetIncrement(value PatternFlowRSVPPathLabelRequestWithoutLabelRangeL3PidCounter) PatternFlowRSVPPathLabelRequestWithoutLabelRangeL3Pid + // HasIncrement checks if Increment has been set in PatternFlowRSVPPathLabelRequestWithoutLabelRangeL3Pid + HasIncrement() bool + // Decrement returns PatternFlowRSVPPathLabelRequestWithoutLabelRangeL3PidCounter, set in PatternFlowRSVPPathLabelRequestWithoutLabelRangeL3Pid. + Decrement() PatternFlowRSVPPathLabelRequestWithoutLabelRangeL3PidCounter + // SetDecrement assigns PatternFlowRSVPPathLabelRequestWithoutLabelRangeL3PidCounter provided by user to PatternFlowRSVPPathLabelRequestWithoutLabelRangeL3Pid. + SetDecrement(value PatternFlowRSVPPathLabelRequestWithoutLabelRangeL3PidCounter) PatternFlowRSVPPathLabelRequestWithoutLabelRangeL3Pid + // HasDecrement checks if Decrement has been set in PatternFlowRSVPPathLabelRequestWithoutLabelRangeL3Pid + HasDecrement() bool + setNil() } -type BgpAsPathSegmentTypeEnum string +type PatternFlowRSVPPathLabelRequestWithoutLabelRangeL3PidChoiceEnum string -// Enum of Type on BgpAsPathSegment -var BgpAsPathSegmentType = struct { - AS_SEQ BgpAsPathSegmentTypeEnum - AS_SET BgpAsPathSegmentTypeEnum - AS_CONFED_SEQ BgpAsPathSegmentTypeEnum - AS_CONFED_SET BgpAsPathSegmentTypeEnum +// Enum of Choice on PatternFlowRSVPPathLabelRequestWithoutLabelRangeL3Pid +var PatternFlowRSVPPathLabelRequestWithoutLabelRangeL3PidChoice = struct { + VALUE PatternFlowRSVPPathLabelRequestWithoutLabelRangeL3PidChoiceEnum + VALUES PatternFlowRSVPPathLabelRequestWithoutLabelRangeL3PidChoiceEnum + INCREMENT PatternFlowRSVPPathLabelRequestWithoutLabelRangeL3PidChoiceEnum + DECREMENT PatternFlowRSVPPathLabelRequestWithoutLabelRangeL3PidChoiceEnum }{ - AS_SEQ: BgpAsPathSegmentTypeEnum("as_seq"), - AS_SET: BgpAsPathSegmentTypeEnum("as_set"), - AS_CONFED_SEQ: BgpAsPathSegmentTypeEnum("as_confed_seq"), - AS_CONFED_SET: BgpAsPathSegmentTypeEnum("as_confed_set"), + VALUE: PatternFlowRSVPPathLabelRequestWithoutLabelRangeL3PidChoiceEnum("value"), + VALUES: PatternFlowRSVPPathLabelRequestWithoutLabelRangeL3PidChoiceEnum("values"), + INCREMENT: PatternFlowRSVPPathLabelRequestWithoutLabelRangeL3PidChoiceEnum("increment"), + DECREMENT: PatternFlowRSVPPathLabelRequestWithoutLabelRangeL3PidChoiceEnum("decrement"), } -func (obj *bgpAsPathSegment) Type() BgpAsPathSegmentTypeEnum { - return BgpAsPathSegmentTypeEnum(obj.obj.Type.Enum().String()) +func (obj *patternFlowRSVPPathLabelRequestWithoutLabelRangeL3Pid) Choice() PatternFlowRSVPPathLabelRequestWithoutLabelRangeL3PidChoiceEnum { + return PatternFlowRSVPPathLabelRequestWithoutLabelRangeL3PidChoiceEnum(obj.obj.Choice.Enum().String()) } -// AS sequence is the most common type of AS_PATH, it contains the list of ASNs starting with the most recent ASN being added read from left to right. -// The other three AS_PATH types are used for Confederations - AS_SET is the type of AS_PATH attribute that summarizes routes using using the aggregate-address command, allowing AS_PATHs to be summarized in the update as well. - AS_CONFED_SEQ gives the list of ASNs in the path starting with the most recent ASN to be added reading left to right - AS_CONFED_SET will allow summarization of multiple AS PATHs to be sent in BGP Updates. -// Type returns a string -func (obj *bgpAsPathSegment) HasType() bool { - return obj.obj.Type != nil +// description is TBD +// Choice returns a string +func (obj *patternFlowRSVPPathLabelRequestWithoutLabelRangeL3Pid) HasChoice() bool { + return obj.obj.Choice != nil } -func (obj *bgpAsPathSegment) SetType(value BgpAsPathSegmentTypeEnum) BgpAsPathSegment { - intValue, ok := otg.BgpAsPathSegment_Type_Enum_value[string(value)] +func (obj *patternFlowRSVPPathLabelRequestWithoutLabelRangeL3Pid) SetChoice(value PatternFlowRSVPPathLabelRequestWithoutLabelRangeL3PidChoiceEnum) PatternFlowRSVPPathLabelRequestWithoutLabelRangeL3Pid { + intValue, ok := otg.PatternFlowRSVPPathLabelRequestWithoutLabelRangeL3Pid_Choice_Enum_value[string(value)] if !ok { obj.validationErrors = append(obj.validationErrors, fmt.Sprintf( - "%s is not a valid choice on BgpAsPathSegmentTypeEnum", string(value))) + "%s is not a valid choice on PatternFlowRSVPPathLabelRequestWithoutLabelRangeL3PidChoiceEnum", string(value))) return obj } - enumValue := otg.BgpAsPathSegment_Type_Enum(intValue) - obj.obj.Type = &enumValue + enumValue := otg.PatternFlowRSVPPathLabelRequestWithoutLabelRangeL3Pid_Choice_Enum(intValue) + obj.obj.Choice = &enumValue + obj.obj.Decrement = nil + obj.decrementHolder = nil + obj.obj.Increment = nil + obj.incrementHolder = nil + obj.obj.Values = nil + obj.obj.Value = nil + + if value == PatternFlowRSVPPathLabelRequestWithoutLabelRangeL3PidChoice.VALUE { + defaultValue := uint32(0) + obj.obj.Value = &defaultValue + } + + if value == PatternFlowRSVPPathLabelRequestWithoutLabelRangeL3PidChoice.VALUES { + defaultValue := []uint32{0} + obj.obj.Values = defaultValue + } + + if value == PatternFlowRSVPPathLabelRequestWithoutLabelRangeL3PidChoice.INCREMENT { + obj.obj.Increment = NewPatternFlowRSVPPathLabelRequestWithoutLabelRangeL3PidCounter().Msg() + } + + if value == PatternFlowRSVPPathLabelRequestWithoutLabelRangeL3PidChoice.DECREMENT { + obj.obj.Decrement = NewPatternFlowRSVPPathLabelRequestWithoutLabelRangeL3PidCounter().Msg() + } return obj } -// The AS numbers in this AS path segment. -// AsNumbers returns a []uint32 -func (obj *bgpAsPathSegment) AsNumbers() []uint32 { - if obj.obj.AsNumbers == nil { - obj.obj.AsNumbers = make([]uint32, 0) +// description is TBD +// Value returns a uint32 +func (obj *patternFlowRSVPPathLabelRequestWithoutLabelRangeL3Pid) Value() uint32 { + + if obj.obj.Value == nil { + obj.SetChoice(PatternFlowRSVPPathLabelRequestWithoutLabelRangeL3PidChoice.VALUE) } - return obj.obj.AsNumbers + + return *obj.obj.Value + } -// The AS numbers in this AS path segment. -// SetAsNumbers sets the []uint32 value in the BgpAsPathSegment object -func (obj *bgpAsPathSegment) SetAsNumbers(value []uint32) BgpAsPathSegment { +// description is TBD +// Value returns a uint32 +func (obj *patternFlowRSVPPathLabelRequestWithoutLabelRangeL3Pid) HasValue() bool { + return obj.obj.Value != nil +} - if obj.obj.AsNumbers == nil { - obj.obj.AsNumbers = make([]uint32, 0) +// description is TBD +// SetValue sets the uint32 value in the PatternFlowRSVPPathLabelRequestWithoutLabelRangeL3Pid object +func (obj *patternFlowRSVPPathLabelRequestWithoutLabelRangeL3Pid) SetValue(value uint32) PatternFlowRSVPPathLabelRequestWithoutLabelRangeL3Pid { + obj.SetChoice(PatternFlowRSVPPathLabelRequestWithoutLabelRangeL3PidChoice.VALUE) + obj.obj.Value = &value + return obj +} + +// description is TBD +// Values returns a []uint32 +func (obj *patternFlowRSVPPathLabelRequestWithoutLabelRangeL3Pid) Values() []uint32 { + if obj.obj.Values == nil { + obj.SetValues([]uint32{0}) } - obj.obj.AsNumbers = value + return obj.obj.Values +} + +// description is TBD +// SetValues sets the []uint32 value in the PatternFlowRSVPPathLabelRequestWithoutLabelRangeL3Pid object +func (obj *patternFlowRSVPPathLabelRequestWithoutLabelRangeL3Pid) SetValues(value []uint32) PatternFlowRSVPPathLabelRequestWithoutLabelRangeL3Pid { + obj.SetChoice(PatternFlowRSVPPathLabelRequestWithoutLabelRangeL3PidChoice.VALUES) + if obj.obj.Values == nil { + obj.obj.Values = make([]uint32, 0) + } + obj.obj.Values = value return obj } -func (obj *bgpAsPathSegment) validateObj(vObj *validation, set_default bool) { +// description is TBD +// Increment returns a PatternFlowRSVPPathLabelRequestWithoutLabelRangeL3PidCounter +func (obj *patternFlowRSVPPathLabelRequestWithoutLabelRangeL3Pid) Increment() PatternFlowRSVPPathLabelRequestWithoutLabelRangeL3PidCounter { + if obj.obj.Increment == nil { + obj.SetChoice(PatternFlowRSVPPathLabelRequestWithoutLabelRangeL3PidChoice.INCREMENT) + } + if obj.incrementHolder == nil { + obj.incrementHolder = &patternFlowRSVPPathLabelRequestWithoutLabelRangeL3PidCounter{obj: obj.obj.Increment} + } + return obj.incrementHolder +} + +// description is TBD +// Increment returns a PatternFlowRSVPPathLabelRequestWithoutLabelRangeL3PidCounter +func (obj *patternFlowRSVPPathLabelRequestWithoutLabelRangeL3Pid) HasIncrement() bool { + return obj.obj.Increment != nil +} + +// description is TBD +// SetIncrement sets the PatternFlowRSVPPathLabelRequestWithoutLabelRangeL3PidCounter value in the PatternFlowRSVPPathLabelRequestWithoutLabelRangeL3Pid object +func (obj *patternFlowRSVPPathLabelRequestWithoutLabelRangeL3Pid) SetIncrement(value PatternFlowRSVPPathLabelRequestWithoutLabelRangeL3PidCounter) PatternFlowRSVPPathLabelRequestWithoutLabelRangeL3Pid { + obj.SetChoice(PatternFlowRSVPPathLabelRequestWithoutLabelRangeL3PidChoice.INCREMENT) + obj.incrementHolder = nil + obj.obj.Increment = value.Msg() + + return obj +} + +// description is TBD +// Decrement returns a PatternFlowRSVPPathLabelRequestWithoutLabelRangeL3PidCounter +func (obj *patternFlowRSVPPathLabelRequestWithoutLabelRangeL3Pid) Decrement() PatternFlowRSVPPathLabelRequestWithoutLabelRangeL3PidCounter { + if obj.obj.Decrement == nil { + obj.SetChoice(PatternFlowRSVPPathLabelRequestWithoutLabelRangeL3PidChoice.DECREMENT) + } + if obj.decrementHolder == nil { + obj.decrementHolder = &patternFlowRSVPPathLabelRequestWithoutLabelRangeL3PidCounter{obj: obj.obj.Decrement} + } + return obj.decrementHolder +} + +// description is TBD +// Decrement returns a PatternFlowRSVPPathLabelRequestWithoutLabelRangeL3PidCounter +func (obj *patternFlowRSVPPathLabelRequestWithoutLabelRangeL3Pid) HasDecrement() bool { + return obj.obj.Decrement != nil +} + +// description is TBD +// SetDecrement sets the PatternFlowRSVPPathLabelRequestWithoutLabelRangeL3PidCounter value in the PatternFlowRSVPPathLabelRequestWithoutLabelRangeL3Pid object +func (obj *patternFlowRSVPPathLabelRequestWithoutLabelRangeL3Pid) SetDecrement(value PatternFlowRSVPPathLabelRequestWithoutLabelRangeL3PidCounter) PatternFlowRSVPPathLabelRequestWithoutLabelRangeL3Pid { + obj.SetChoice(PatternFlowRSVPPathLabelRequestWithoutLabelRangeL3PidChoice.DECREMENT) + obj.decrementHolder = nil + obj.obj.Decrement = value.Msg() + + return obj +} + +func (obj *patternFlowRSVPPathLabelRequestWithoutLabelRangeL3Pid) validateObj(vObj *validation, set_default bool) { if set_default { obj.setDefault() } + if obj.obj.Value != nil { + + if *obj.obj.Value > 65535 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("0 <= PatternFlowRSVPPathLabelRequestWithoutLabelRangeL3Pid.Value <= 65535 but Got %d", *obj.obj.Value)) + } + + } + + if obj.obj.Values != nil { + + for _, item := range obj.obj.Values { + if item > 65535 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("min(uint32) <= PatternFlowRSVPPathLabelRequestWithoutLabelRangeL3Pid.Values <= 65535 but Got %d", item)) + } + + } + + } + + if obj.obj.Increment != nil { + + obj.Increment().validateObj(vObj, set_default) + } + + if obj.obj.Decrement != nil { + + obj.Decrement().validateObj(vObj, set_default) + } + } -func (obj *bgpAsPathSegment) setDefault() { - if obj.obj.Type == nil { - obj.SetType(BgpAsPathSegmentType.AS_SEQ) +func (obj *patternFlowRSVPPathLabelRequestWithoutLabelRangeL3Pid) setDefault() { + if obj.obj.Choice == nil { + obj.SetChoice(PatternFlowRSVPPathLabelRequestWithoutLabelRangeL3PidChoice.VALUE) } } -// ***** BgpExtendedCommunityTransitive2OctetAsType ***** -type bgpExtendedCommunityTransitive2OctetAsType struct { +// ***** FlowRSVPLspTunnelFlag ***** +type flowRSVPLspTunnelFlag struct { validation - obj *otg.BgpExtendedCommunityTransitive2OctetAsType - routeTargetSubtypeHolder BgpExtendedCommunityTransitive2OctetAsTypeRouteTarget - routeOriginSubtypeHolder BgpExtendedCommunityTransitive2OctetAsTypeRouteOrigin + obj *otg.FlowRSVPLspTunnelFlag } -func NewBgpExtendedCommunityTransitive2OctetAsType() BgpExtendedCommunityTransitive2OctetAsType { - obj := bgpExtendedCommunityTransitive2OctetAsType{obj: &otg.BgpExtendedCommunityTransitive2OctetAsType{}} +func NewFlowRSVPLspTunnelFlag() FlowRSVPLspTunnelFlag { + obj := flowRSVPLspTunnelFlag{obj: &otg.FlowRSVPLspTunnelFlag{}} obj.setDefault() return &obj } -func (obj *bgpExtendedCommunityTransitive2OctetAsType) Msg() *otg.BgpExtendedCommunityTransitive2OctetAsType { +func (obj *flowRSVPLspTunnelFlag) Msg() *otg.FlowRSVPLspTunnelFlag { return obj.obj } -func (obj *bgpExtendedCommunityTransitive2OctetAsType) SetMsg(msg *otg.BgpExtendedCommunityTransitive2OctetAsType) BgpExtendedCommunityTransitive2OctetAsType { - obj.setNil() +func (obj *flowRSVPLspTunnelFlag) SetMsg(msg *otg.FlowRSVPLspTunnelFlag) FlowRSVPLspTunnelFlag { + proto.Merge(obj.obj, msg) return obj } -func (obj *bgpExtendedCommunityTransitive2OctetAsType) ToProto() (*otg.BgpExtendedCommunityTransitive2OctetAsType, error) { +func (obj *flowRSVPLspTunnelFlag) ToProto() (*otg.FlowRSVPLspTunnelFlag, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -298837,7 +344692,7 @@ func (obj *bgpExtendedCommunityTransitive2OctetAsType) ToProto() (*otg.BgpExtend return obj.Msg(), nil } -func (obj *bgpExtendedCommunityTransitive2OctetAsType) FromProto(msg *otg.BgpExtendedCommunityTransitive2OctetAsType) (BgpExtendedCommunityTransitive2OctetAsType, error) { +func (obj *flowRSVPLspTunnelFlag) FromProto(msg *otg.FlowRSVPLspTunnelFlag) (FlowRSVPLspTunnelFlag, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -298846,7 +344701,7 @@ func (obj *bgpExtendedCommunityTransitive2OctetAsType) FromProto(msg *otg.BgpExt return newObj, nil } -func (obj *bgpExtendedCommunityTransitive2OctetAsType) ToPbText() (string, error) { +func (obj *flowRSVPLspTunnelFlag) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -298858,12 +344713,12 @@ func (obj *bgpExtendedCommunityTransitive2OctetAsType) ToPbText() (string, error return string(protoMarshal), nil } -func (obj *bgpExtendedCommunityTransitive2OctetAsType) FromPbText(value string) error { +func (obj *flowRSVPLspTunnelFlag) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj } - obj.setNil() + vErr := obj.validateToAndFrom() if vErr != nil { return vErr @@ -298871,7 +344726,7 @@ func (obj *bgpExtendedCommunityTransitive2OctetAsType) FromPbText(value string) return retObj } -func (obj *bgpExtendedCommunityTransitive2OctetAsType) ToYaml() (string, error) { +func (obj *flowRSVPLspTunnelFlag) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -298892,7 +344747,7 @@ func (obj *bgpExtendedCommunityTransitive2OctetAsType) ToYaml() (string, error) return string(data), nil } -func (obj *bgpExtendedCommunityTransitive2OctetAsType) FromYaml(value string) error { +func (obj *flowRSVPLspTunnelFlag) FromYaml(value string) error { if value == "" { value = "{}" } @@ -298909,7 +344764,7 @@ func (obj *bgpExtendedCommunityTransitive2OctetAsType) FromYaml(value string) er return fmt.Errorf("unmarshal error %s", strings.Replace( uError.Error(), "\u00a0", " ", -1)[7:]) } - obj.setNil() + vErr := obj.validateToAndFrom() if vErr != nil { return vErr @@ -298917,7 +344772,7 @@ func (obj *bgpExtendedCommunityTransitive2OctetAsType) FromYaml(value string) er return nil } -func (obj *bgpExtendedCommunityTransitive2OctetAsType) ToJson() (string, error) { +func (obj *flowRSVPLspTunnelFlag) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -298935,7 +344790,7 @@ func (obj *bgpExtendedCommunityTransitive2OctetAsType) ToJson() (string, error) return string(data), nil } -func (obj *bgpExtendedCommunityTransitive2OctetAsType) FromJson(value string) error { +func (obj *flowRSVPLspTunnelFlag) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -298948,7 +344803,7 @@ func (obj *bgpExtendedCommunityTransitive2OctetAsType) FromJson(value string) er return fmt.Errorf("unmarshal error %s", strings.Replace( uError.Error(), "\u00a0", " ", -1)[7:]) } - obj.setNil() + err := obj.validateToAndFrom() if err != nil { return err @@ -298956,19 +344811,19 @@ func (obj *bgpExtendedCommunityTransitive2OctetAsType) FromJson(value string) er return nil } -func (obj *bgpExtendedCommunityTransitive2OctetAsType) validateToAndFrom() error { +func (obj *flowRSVPLspTunnelFlag) validateToAndFrom() error { // emptyVars() obj.validateObj(&obj.validation, true) return obj.validationResult() } -func (obj *bgpExtendedCommunityTransitive2OctetAsType) Validate() error { +func (obj *flowRSVPLspTunnelFlag) Validate() error { // emptyVars() obj.validateObj(&obj.validation, false) return obj.validationResult() } -func (obj *bgpExtendedCommunityTransitive2OctetAsType) String() string { +func (obj *flowRSVPLspTunnelFlag) String() string { str, err := obj.ToYaml() if err != nil { return err.Error() @@ -298976,12 +344831,12 @@ func (obj *bgpExtendedCommunityTransitive2OctetAsType) String() string { return str } -func (obj *bgpExtendedCommunityTransitive2OctetAsType) Clone() (BgpExtendedCommunityTransitive2OctetAsType, error) { +func (obj *flowRSVPLspTunnelFlag) Clone() (FlowRSVPLspTunnelFlag, error) { vErr := obj.Validate() if vErr != nil { return nil, vErr } - newObj := NewBgpExtendedCommunityTransitive2OctetAsType() + newObj := NewFlowRSVPLspTunnelFlag() data, err := proto.Marshal(obj.Msg()) if err != nil { return nil, err @@ -298993,225 +344848,124 @@ func (obj *bgpExtendedCommunityTransitive2OctetAsType) Clone() (BgpExtendedCommu return newObj, nil } -func (obj *bgpExtendedCommunityTransitive2OctetAsType) setNil() { - obj.routeTargetSubtypeHolder = nil - obj.routeOriginSubtypeHolder = nil - obj.validationErrors = nil - obj.warnings = nil - obj.constraints = make(map[string]map[string]Constraints) -} - -// BgpExtendedCommunityTransitive2OctetAsType is the Transitive Two-Octet AS-Specific Extended Community is sent as type 0x00 . -type BgpExtendedCommunityTransitive2OctetAsType interface { +// FlowRSVPLspTunnelFlag is description is TBD +type FlowRSVPLspTunnelFlag interface { Validation - // Msg marshals BgpExtendedCommunityTransitive2OctetAsType to protobuf object *otg.BgpExtendedCommunityTransitive2OctetAsType + // Msg marshals FlowRSVPLspTunnelFlag to protobuf object *otg.FlowRSVPLspTunnelFlag // and doesn't set defaults - Msg() *otg.BgpExtendedCommunityTransitive2OctetAsType - // SetMsg unmarshals BgpExtendedCommunityTransitive2OctetAsType from protobuf object *otg.BgpExtendedCommunityTransitive2OctetAsType + Msg() *otg.FlowRSVPLspTunnelFlag + // SetMsg unmarshals FlowRSVPLspTunnelFlag from protobuf object *otg.FlowRSVPLspTunnelFlag // and doesn't set defaults - SetMsg(*otg.BgpExtendedCommunityTransitive2OctetAsType) BgpExtendedCommunityTransitive2OctetAsType - // ToProto marshals BgpExtendedCommunityTransitive2OctetAsType to protobuf object *otg.BgpExtendedCommunityTransitive2OctetAsType - ToProto() (*otg.BgpExtendedCommunityTransitive2OctetAsType, error) - // ToPbText marshals BgpExtendedCommunityTransitive2OctetAsType to protobuf text + SetMsg(*otg.FlowRSVPLspTunnelFlag) FlowRSVPLspTunnelFlag + // ToProto marshals FlowRSVPLspTunnelFlag to protobuf object *otg.FlowRSVPLspTunnelFlag + ToProto() (*otg.FlowRSVPLspTunnelFlag, error) + // ToPbText marshals FlowRSVPLspTunnelFlag to protobuf text ToPbText() (string, error) - // ToYaml marshals BgpExtendedCommunityTransitive2OctetAsType to YAML text + // ToYaml marshals FlowRSVPLspTunnelFlag to YAML text ToYaml() (string, error) - // ToJson marshals BgpExtendedCommunityTransitive2OctetAsType to JSON text + // ToJson marshals FlowRSVPLspTunnelFlag to JSON text ToJson() (string, error) - // FromProto unmarshals BgpExtendedCommunityTransitive2OctetAsType from protobuf object *otg.BgpExtendedCommunityTransitive2OctetAsType - FromProto(msg *otg.BgpExtendedCommunityTransitive2OctetAsType) (BgpExtendedCommunityTransitive2OctetAsType, error) - // FromPbText unmarshals BgpExtendedCommunityTransitive2OctetAsType from protobuf text + // FromProto unmarshals FlowRSVPLspTunnelFlag from protobuf object *otg.FlowRSVPLspTunnelFlag + FromProto(msg *otg.FlowRSVPLspTunnelFlag) (FlowRSVPLspTunnelFlag, error) + // FromPbText unmarshals FlowRSVPLspTunnelFlag from protobuf text FromPbText(value string) error - // FromYaml unmarshals BgpExtendedCommunityTransitive2OctetAsType from YAML text + // FromYaml unmarshals FlowRSVPLspTunnelFlag from YAML text FromYaml(value string) error - // FromJson unmarshals BgpExtendedCommunityTransitive2OctetAsType from JSON text + // FromJson unmarshals FlowRSVPLspTunnelFlag from JSON text FromJson(value string) error - // Validate validates BgpExtendedCommunityTransitive2OctetAsType + // Validate validates FlowRSVPLspTunnelFlag Validate() error // A stringer function String() string // Clones the object - Clone() (BgpExtendedCommunityTransitive2OctetAsType, error) + Clone() (FlowRSVPLspTunnelFlag, error) validateToAndFrom() error validateObj(vObj *validation, set_default bool) setDefault() - // Choice returns BgpExtendedCommunityTransitive2OctetAsTypeChoiceEnum, set in BgpExtendedCommunityTransitive2OctetAsType - Choice() BgpExtendedCommunityTransitive2OctetAsTypeChoiceEnum - // SetChoice assigns BgpExtendedCommunityTransitive2OctetAsTypeChoiceEnum provided by user to BgpExtendedCommunityTransitive2OctetAsType - SetChoice(value BgpExtendedCommunityTransitive2OctetAsTypeChoiceEnum) BgpExtendedCommunityTransitive2OctetAsType - // HasChoice checks if Choice has been set in BgpExtendedCommunityTransitive2OctetAsType + // Choice returns FlowRSVPLspTunnelFlagChoiceEnum, set in FlowRSVPLspTunnelFlag + Choice() FlowRSVPLspTunnelFlagChoiceEnum + // SetChoice assigns FlowRSVPLspTunnelFlagChoiceEnum provided by user to FlowRSVPLspTunnelFlag + SetChoice(value FlowRSVPLspTunnelFlagChoiceEnum) FlowRSVPLspTunnelFlag + // HasChoice checks if Choice has been set in FlowRSVPLspTunnelFlag HasChoice() bool - // RouteTargetSubtype returns BgpExtendedCommunityTransitive2OctetAsTypeRouteTarget, set in BgpExtendedCommunityTransitive2OctetAsType. - // BgpExtendedCommunityTransitive2OctetAsTypeRouteTarget is the Route Target Community identifies one or more routers that may receive a set of routes (that carry this Community) carried by BGP. It is sent with sub-type as 0x02. - RouteTargetSubtype() BgpExtendedCommunityTransitive2OctetAsTypeRouteTarget - // SetRouteTargetSubtype assigns BgpExtendedCommunityTransitive2OctetAsTypeRouteTarget provided by user to BgpExtendedCommunityTransitive2OctetAsType. - // BgpExtendedCommunityTransitive2OctetAsTypeRouteTarget is the Route Target Community identifies one or more routers that may receive a set of routes (that carry this Community) carried by BGP. It is sent with sub-type as 0x02. - SetRouteTargetSubtype(value BgpExtendedCommunityTransitive2OctetAsTypeRouteTarget) BgpExtendedCommunityTransitive2OctetAsType - // HasRouteTargetSubtype checks if RouteTargetSubtype has been set in BgpExtendedCommunityTransitive2OctetAsType - HasRouteTargetSubtype() bool - // RouteOriginSubtype returns BgpExtendedCommunityTransitive2OctetAsTypeRouteOrigin, set in BgpExtendedCommunityTransitive2OctetAsType. - // BgpExtendedCommunityTransitive2OctetAsTypeRouteOrigin is the Route Origin Community identifies one or more routers that inject a set of routes (that carry this Community) into BGP. It is sent with sub-type as 0x03 . - RouteOriginSubtype() BgpExtendedCommunityTransitive2OctetAsTypeRouteOrigin - // SetRouteOriginSubtype assigns BgpExtendedCommunityTransitive2OctetAsTypeRouteOrigin provided by user to BgpExtendedCommunityTransitive2OctetAsType. - // BgpExtendedCommunityTransitive2OctetAsTypeRouteOrigin is the Route Origin Community identifies one or more routers that inject a set of routes (that carry this Community) into BGP. It is sent with sub-type as 0x03 . - SetRouteOriginSubtype(value BgpExtendedCommunityTransitive2OctetAsTypeRouteOrigin) BgpExtendedCommunityTransitive2OctetAsType - // HasRouteOriginSubtype checks if RouteOriginSubtype has been set in BgpExtendedCommunityTransitive2OctetAsType - HasRouteOriginSubtype() bool - setNil() } -type BgpExtendedCommunityTransitive2OctetAsTypeChoiceEnum string +type FlowRSVPLspTunnelFlagChoiceEnum string -// Enum of Choice on BgpExtendedCommunityTransitive2OctetAsType -var BgpExtendedCommunityTransitive2OctetAsTypeChoice = struct { - ROUTE_TARGET_SUBTYPE BgpExtendedCommunityTransitive2OctetAsTypeChoiceEnum - ROUTE_ORIGIN_SUBTYPE BgpExtendedCommunityTransitive2OctetAsTypeChoiceEnum +// Enum of Choice on FlowRSVPLspTunnelFlag +var FlowRSVPLspTunnelFlagChoice = struct { + LOCAL_PROTECTION_DESIRED FlowRSVPLspTunnelFlagChoiceEnum + LABEL_RECORDING_DESIRED FlowRSVPLspTunnelFlagChoiceEnum + SE_STYLE_DESIRED FlowRSVPLspTunnelFlagChoiceEnum }{ - ROUTE_TARGET_SUBTYPE: BgpExtendedCommunityTransitive2OctetAsTypeChoiceEnum("route_target_subtype"), - ROUTE_ORIGIN_SUBTYPE: BgpExtendedCommunityTransitive2OctetAsTypeChoiceEnum("route_origin_subtype"), + LOCAL_PROTECTION_DESIRED: FlowRSVPLspTunnelFlagChoiceEnum("local_protection_desired"), + LABEL_RECORDING_DESIRED: FlowRSVPLspTunnelFlagChoiceEnum("label_recording_desired"), + SE_STYLE_DESIRED: FlowRSVPLspTunnelFlagChoiceEnum("se_style_desired"), } -func (obj *bgpExtendedCommunityTransitive2OctetAsType) Choice() BgpExtendedCommunityTransitive2OctetAsTypeChoiceEnum { - return BgpExtendedCommunityTransitive2OctetAsTypeChoiceEnum(obj.obj.Choice.Enum().String()) +func (obj *flowRSVPLspTunnelFlag) Choice() FlowRSVPLspTunnelFlagChoiceEnum { + return FlowRSVPLspTunnelFlagChoiceEnum(obj.obj.Choice.Enum().String()) } // description is TBD // Choice returns a string -func (obj *bgpExtendedCommunityTransitive2OctetAsType) HasChoice() bool { +func (obj *flowRSVPLspTunnelFlag) HasChoice() bool { return obj.obj.Choice != nil } -func (obj *bgpExtendedCommunityTransitive2OctetAsType) SetChoice(value BgpExtendedCommunityTransitive2OctetAsTypeChoiceEnum) BgpExtendedCommunityTransitive2OctetAsType { - intValue, ok := otg.BgpExtendedCommunityTransitive2OctetAsType_Choice_Enum_value[string(value)] +func (obj *flowRSVPLspTunnelFlag) SetChoice(value FlowRSVPLspTunnelFlagChoiceEnum) FlowRSVPLspTunnelFlag { + intValue, ok := otg.FlowRSVPLspTunnelFlag_Choice_Enum_value[string(value)] if !ok { obj.validationErrors = append(obj.validationErrors, fmt.Sprintf( - "%s is not a valid choice on BgpExtendedCommunityTransitive2OctetAsTypeChoiceEnum", string(value))) + "%s is not a valid choice on FlowRSVPLspTunnelFlagChoiceEnum", string(value))) return obj } - enumValue := otg.BgpExtendedCommunityTransitive2OctetAsType_Choice_Enum(intValue) + enumValue := otg.FlowRSVPLspTunnelFlag_Choice_Enum(intValue) obj.obj.Choice = &enumValue - obj.obj.RouteOriginSubtype = nil - obj.routeOriginSubtypeHolder = nil - obj.obj.RouteTargetSubtype = nil - obj.routeTargetSubtypeHolder = nil - - if value == BgpExtendedCommunityTransitive2OctetAsTypeChoice.ROUTE_TARGET_SUBTYPE { - obj.obj.RouteTargetSubtype = NewBgpExtendedCommunityTransitive2OctetAsTypeRouteTarget().Msg() - } - - if value == BgpExtendedCommunityTransitive2OctetAsTypeChoice.ROUTE_ORIGIN_SUBTYPE { - obj.obj.RouteOriginSubtype = NewBgpExtendedCommunityTransitive2OctetAsTypeRouteOrigin().Msg() - } - - return obj -} - -// description is TBD -// RouteTargetSubtype returns a BgpExtendedCommunityTransitive2OctetAsTypeRouteTarget -func (obj *bgpExtendedCommunityTransitive2OctetAsType) RouteTargetSubtype() BgpExtendedCommunityTransitive2OctetAsTypeRouteTarget { - if obj.obj.RouteTargetSubtype == nil { - obj.SetChoice(BgpExtendedCommunityTransitive2OctetAsTypeChoice.ROUTE_TARGET_SUBTYPE) - } - if obj.routeTargetSubtypeHolder == nil { - obj.routeTargetSubtypeHolder = &bgpExtendedCommunityTransitive2OctetAsTypeRouteTarget{obj: obj.obj.RouteTargetSubtype} - } - return obj.routeTargetSubtypeHolder -} - -// description is TBD -// RouteTargetSubtype returns a BgpExtendedCommunityTransitive2OctetAsTypeRouteTarget -func (obj *bgpExtendedCommunityTransitive2OctetAsType) HasRouteTargetSubtype() bool { - return obj.obj.RouteTargetSubtype != nil -} - -// description is TBD -// SetRouteTargetSubtype sets the BgpExtendedCommunityTransitive2OctetAsTypeRouteTarget value in the BgpExtendedCommunityTransitive2OctetAsType object -func (obj *bgpExtendedCommunityTransitive2OctetAsType) SetRouteTargetSubtype(value BgpExtendedCommunityTransitive2OctetAsTypeRouteTarget) BgpExtendedCommunityTransitive2OctetAsType { - obj.SetChoice(BgpExtendedCommunityTransitive2OctetAsTypeChoice.ROUTE_TARGET_SUBTYPE) - obj.routeTargetSubtypeHolder = nil - obj.obj.RouteTargetSubtype = value.Msg() - - return obj -} - -// description is TBD -// RouteOriginSubtype returns a BgpExtendedCommunityTransitive2OctetAsTypeRouteOrigin -func (obj *bgpExtendedCommunityTransitive2OctetAsType) RouteOriginSubtype() BgpExtendedCommunityTransitive2OctetAsTypeRouteOrigin { - if obj.obj.RouteOriginSubtype == nil { - obj.SetChoice(BgpExtendedCommunityTransitive2OctetAsTypeChoice.ROUTE_ORIGIN_SUBTYPE) - } - if obj.routeOriginSubtypeHolder == nil { - obj.routeOriginSubtypeHolder = &bgpExtendedCommunityTransitive2OctetAsTypeRouteOrigin{obj: obj.obj.RouteOriginSubtype} - } - return obj.routeOriginSubtypeHolder -} - -// description is TBD -// RouteOriginSubtype returns a BgpExtendedCommunityTransitive2OctetAsTypeRouteOrigin -func (obj *bgpExtendedCommunityTransitive2OctetAsType) HasRouteOriginSubtype() bool { - return obj.obj.RouteOriginSubtype != nil -} - -// description is TBD -// SetRouteOriginSubtype sets the BgpExtendedCommunityTransitive2OctetAsTypeRouteOrigin value in the BgpExtendedCommunityTransitive2OctetAsType object -func (obj *bgpExtendedCommunityTransitive2OctetAsType) SetRouteOriginSubtype(value BgpExtendedCommunityTransitive2OctetAsTypeRouteOrigin) BgpExtendedCommunityTransitive2OctetAsType { - obj.SetChoice(BgpExtendedCommunityTransitive2OctetAsTypeChoice.ROUTE_ORIGIN_SUBTYPE) - obj.routeOriginSubtypeHolder = nil - obj.obj.RouteOriginSubtype = value.Msg() return obj } -func (obj *bgpExtendedCommunityTransitive2OctetAsType) validateObj(vObj *validation, set_default bool) { +func (obj *flowRSVPLspTunnelFlag) validateObj(vObj *validation, set_default bool) { if set_default { obj.setDefault() } - if obj.obj.RouteTargetSubtype != nil { - - obj.RouteTargetSubtype().validateObj(vObj, set_default) - } - - if obj.obj.RouteOriginSubtype != nil { - - obj.RouteOriginSubtype().validateObj(vObj, set_default) - } - } -func (obj *bgpExtendedCommunityTransitive2OctetAsType) setDefault() { +func (obj *flowRSVPLspTunnelFlag) setDefault() { if obj.obj.Choice == nil { - obj.SetChoice(BgpExtendedCommunityTransitive2OctetAsTypeChoice.ROUTE_TARGET_SUBTYPE) + obj.SetChoice(FlowRSVPLspTunnelFlagChoice.LOCAL_PROTECTION_DESIRED) } } -// ***** BgpExtendedCommunityTransitiveIpv4AddressType ***** -type bgpExtendedCommunityTransitiveIpv4AddressType struct { +// ***** PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Ipv4TunnelSenderAddress ***** +type patternFlowRSVPPathSenderTemplateLspTunnelIpv4Ipv4TunnelSenderAddress struct { validation - obj *otg.BgpExtendedCommunityTransitiveIpv4AddressType - routeTargetSubtypeHolder BgpExtendedCommunityTransitiveIpv4AddressTypeRouteTarget - routeOriginSubtypeHolder BgpExtendedCommunityTransitiveIpv4AddressTypeRouteOrigin + obj *otg.PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Ipv4TunnelSenderAddress + incrementHolder PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Ipv4TunnelSenderAddressCounter + decrementHolder PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Ipv4TunnelSenderAddressCounter } -func NewBgpExtendedCommunityTransitiveIpv4AddressType() BgpExtendedCommunityTransitiveIpv4AddressType { - obj := bgpExtendedCommunityTransitiveIpv4AddressType{obj: &otg.BgpExtendedCommunityTransitiveIpv4AddressType{}} +func NewPatternFlowRSVPPathSenderTemplateLspTunnelIpv4Ipv4TunnelSenderAddress() PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Ipv4TunnelSenderAddress { + obj := patternFlowRSVPPathSenderTemplateLspTunnelIpv4Ipv4TunnelSenderAddress{obj: &otg.PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Ipv4TunnelSenderAddress{}} obj.setDefault() return &obj } -func (obj *bgpExtendedCommunityTransitiveIpv4AddressType) Msg() *otg.BgpExtendedCommunityTransitiveIpv4AddressType { +func (obj *patternFlowRSVPPathSenderTemplateLspTunnelIpv4Ipv4TunnelSenderAddress) Msg() *otg.PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Ipv4TunnelSenderAddress { return obj.obj } -func (obj *bgpExtendedCommunityTransitiveIpv4AddressType) SetMsg(msg *otg.BgpExtendedCommunityTransitiveIpv4AddressType) BgpExtendedCommunityTransitiveIpv4AddressType { +func (obj *patternFlowRSVPPathSenderTemplateLspTunnelIpv4Ipv4TunnelSenderAddress) SetMsg(msg *otg.PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Ipv4TunnelSenderAddress) PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Ipv4TunnelSenderAddress { obj.setNil() proto.Merge(obj.obj, msg) return obj } -func (obj *bgpExtendedCommunityTransitiveIpv4AddressType) ToProto() (*otg.BgpExtendedCommunityTransitiveIpv4AddressType, error) { +func (obj *patternFlowRSVPPathSenderTemplateLspTunnelIpv4Ipv4TunnelSenderAddress) ToProto() (*otg.PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Ipv4TunnelSenderAddress, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -299219,7 +344973,7 @@ func (obj *bgpExtendedCommunityTransitiveIpv4AddressType) ToProto() (*otg.BgpExt return obj.Msg(), nil } -func (obj *bgpExtendedCommunityTransitiveIpv4AddressType) FromProto(msg *otg.BgpExtendedCommunityTransitiveIpv4AddressType) (BgpExtendedCommunityTransitiveIpv4AddressType, error) { +func (obj *patternFlowRSVPPathSenderTemplateLspTunnelIpv4Ipv4TunnelSenderAddress) FromProto(msg *otg.PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Ipv4TunnelSenderAddress) (PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Ipv4TunnelSenderAddress, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -299228,7 +344982,7 @@ func (obj *bgpExtendedCommunityTransitiveIpv4AddressType) FromProto(msg *otg.Bgp return newObj, nil } -func (obj *bgpExtendedCommunityTransitiveIpv4AddressType) ToPbText() (string, error) { +func (obj *patternFlowRSVPPathSenderTemplateLspTunnelIpv4Ipv4TunnelSenderAddress) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -299240,7 +344994,7 @@ func (obj *bgpExtendedCommunityTransitiveIpv4AddressType) ToPbText() (string, er return string(protoMarshal), nil } -func (obj *bgpExtendedCommunityTransitiveIpv4AddressType) FromPbText(value string) error { +func (obj *patternFlowRSVPPathSenderTemplateLspTunnelIpv4Ipv4TunnelSenderAddress) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj @@ -299253,7 +345007,7 @@ func (obj *bgpExtendedCommunityTransitiveIpv4AddressType) FromPbText(value strin return retObj } -func (obj *bgpExtendedCommunityTransitiveIpv4AddressType) ToYaml() (string, error) { +func (obj *patternFlowRSVPPathSenderTemplateLspTunnelIpv4Ipv4TunnelSenderAddress) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -299274,7 +345028,7 @@ func (obj *bgpExtendedCommunityTransitiveIpv4AddressType) ToYaml() (string, erro return string(data), nil } -func (obj *bgpExtendedCommunityTransitiveIpv4AddressType) FromYaml(value string) error { +func (obj *patternFlowRSVPPathSenderTemplateLspTunnelIpv4Ipv4TunnelSenderAddress) FromYaml(value string) error { if value == "" { value = "{}" } @@ -299299,7 +345053,7 @@ func (obj *bgpExtendedCommunityTransitiveIpv4AddressType) FromYaml(value string) return nil } -func (obj *bgpExtendedCommunityTransitiveIpv4AddressType) ToJson() (string, error) { +func (obj *patternFlowRSVPPathSenderTemplateLspTunnelIpv4Ipv4TunnelSenderAddress) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -299317,7 +345071,7 @@ func (obj *bgpExtendedCommunityTransitiveIpv4AddressType) ToJson() (string, erro return string(data), nil } -func (obj *bgpExtendedCommunityTransitiveIpv4AddressType) FromJson(value string) error { +func (obj *patternFlowRSVPPathSenderTemplateLspTunnelIpv4Ipv4TunnelSenderAddress) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -299338,19 +345092,19 @@ func (obj *bgpExtendedCommunityTransitiveIpv4AddressType) FromJson(value string) return nil } -func (obj *bgpExtendedCommunityTransitiveIpv4AddressType) validateToAndFrom() error { +func (obj *patternFlowRSVPPathSenderTemplateLspTunnelIpv4Ipv4TunnelSenderAddress) validateToAndFrom() error { // emptyVars() obj.validateObj(&obj.validation, true) return obj.validationResult() } -func (obj *bgpExtendedCommunityTransitiveIpv4AddressType) Validate() error { +func (obj *patternFlowRSVPPathSenderTemplateLspTunnelIpv4Ipv4TunnelSenderAddress) Validate() error { // emptyVars() obj.validateObj(&obj.validation, false) return obj.validationResult() } -func (obj *bgpExtendedCommunityTransitiveIpv4AddressType) String() string { +func (obj *patternFlowRSVPPathSenderTemplateLspTunnelIpv4Ipv4TunnelSenderAddress) String() string { str, err := obj.ToYaml() if err != nil { return err.Error() @@ -299358,12 +345112,12 @@ func (obj *bgpExtendedCommunityTransitiveIpv4AddressType) String() string { return str } -func (obj *bgpExtendedCommunityTransitiveIpv4AddressType) Clone() (BgpExtendedCommunityTransitiveIpv4AddressType, error) { +func (obj *patternFlowRSVPPathSenderTemplateLspTunnelIpv4Ipv4TunnelSenderAddress) Clone() (PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Ipv4TunnelSenderAddress, error) { vErr := obj.Validate() if vErr != nil { return nil, vErr } - newObj := NewBgpExtendedCommunityTransitiveIpv4AddressType() + newObj := NewPatternFlowRSVPPathSenderTemplateLspTunnelIpv4Ipv4TunnelSenderAddress() data, err := proto.Marshal(obj.Msg()) if err != nil { return nil, err @@ -299375,225 +345129,316 @@ func (obj *bgpExtendedCommunityTransitiveIpv4AddressType) Clone() (BgpExtendedCo return newObj, nil } -func (obj *bgpExtendedCommunityTransitiveIpv4AddressType) setNil() { - obj.routeTargetSubtypeHolder = nil - obj.routeOriginSubtypeHolder = nil +func (obj *patternFlowRSVPPathSenderTemplateLspTunnelIpv4Ipv4TunnelSenderAddress) setNil() { + obj.incrementHolder = nil + obj.decrementHolder = nil obj.validationErrors = nil obj.warnings = nil obj.constraints = make(map[string]map[string]Constraints) } -// BgpExtendedCommunityTransitiveIpv4AddressType is the Transitive IPv4 Address Specific Extended Community is sent as type 0x01. -type BgpExtendedCommunityTransitiveIpv4AddressType interface { +// PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Ipv4TunnelSenderAddress is iPv4 address for a sender node. +type PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Ipv4TunnelSenderAddress interface { Validation - // Msg marshals BgpExtendedCommunityTransitiveIpv4AddressType to protobuf object *otg.BgpExtendedCommunityTransitiveIpv4AddressType + // Msg marshals PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Ipv4TunnelSenderAddress to protobuf object *otg.PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Ipv4TunnelSenderAddress // and doesn't set defaults - Msg() *otg.BgpExtendedCommunityTransitiveIpv4AddressType - // SetMsg unmarshals BgpExtendedCommunityTransitiveIpv4AddressType from protobuf object *otg.BgpExtendedCommunityTransitiveIpv4AddressType + Msg() *otg.PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Ipv4TunnelSenderAddress + // SetMsg unmarshals PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Ipv4TunnelSenderAddress from protobuf object *otg.PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Ipv4TunnelSenderAddress // and doesn't set defaults - SetMsg(*otg.BgpExtendedCommunityTransitiveIpv4AddressType) BgpExtendedCommunityTransitiveIpv4AddressType - // ToProto marshals BgpExtendedCommunityTransitiveIpv4AddressType to protobuf object *otg.BgpExtendedCommunityTransitiveIpv4AddressType - ToProto() (*otg.BgpExtendedCommunityTransitiveIpv4AddressType, error) - // ToPbText marshals BgpExtendedCommunityTransitiveIpv4AddressType to protobuf text + SetMsg(*otg.PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Ipv4TunnelSenderAddress) PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Ipv4TunnelSenderAddress + // ToProto marshals PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Ipv4TunnelSenderAddress to protobuf object *otg.PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Ipv4TunnelSenderAddress + ToProto() (*otg.PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Ipv4TunnelSenderAddress, error) + // ToPbText marshals PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Ipv4TunnelSenderAddress to protobuf text ToPbText() (string, error) - // ToYaml marshals BgpExtendedCommunityTransitiveIpv4AddressType to YAML text + // ToYaml marshals PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Ipv4TunnelSenderAddress to YAML text ToYaml() (string, error) - // ToJson marshals BgpExtendedCommunityTransitiveIpv4AddressType to JSON text + // ToJson marshals PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Ipv4TunnelSenderAddress to JSON text ToJson() (string, error) - // FromProto unmarshals BgpExtendedCommunityTransitiveIpv4AddressType from protobuf object *otg.BgpExtendedCommunityTransitiveIpv4AddressType - FromProto(msg *otg.BgpExtendedCommunityTransitiveIpv4AddressType) (BgpExtendedCommunityTransitiveIpv4AddressType, error) - // FromPbText unmarshals BgpExtendedCommunityTransitiveIpv4AddressType from protobuf text + // FromProto unmarshals PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Ipv4TunnelSenderAddress from protobuf object *otg.PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Ipv4TunnelSenderAddress + FromProto(msg *otg.PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Ipv4TunnelSenderAddress) (PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Ipv4TunnelSenderAddress, error) + // FromPbText unmarshals PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Ipv4TunnelSenderAddress from protobuf text FromPbText(value string) error - // FromYaml unmarshals BgpExtendedCommunityTransitiveIpv4AddressType from YAML text + // FromYaml unmarshals PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Ipv4TunnelSenderAddress from YAML text FromYaml(value string) error - // FromJson unmarshals BgpExtendedCommunityTransitiveIpv4AddressType from JSON text + // FromJson unmarshals PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Ipv4TunnelSenderAddress from JSON text FromJson(value string) error - // Validate validates BgpExtendedCommunityTransitiveIpv4AddressType + // Validate validates PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Ipv4TunnelSenderAddress Validate() error // A stringer function String() string // Clones the object - Clone() (BgpExtendedCommunityTransitiveIpv4AddressType, error) + Clone() (PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Ipv4TunnelSenderAddress, error) validateToAndFrom() error validateObj(vObj *validation, set_default bool) setDefault() - // Choice returns BgpExtendedCommunityTransitiveIpv4AddressTypeChoiceEnum, set in BgpExtendedCommunityTransitiveIpv4AddressType - Choice() BgpExtendedCommunityTransitiveIpv4AddressTypeChoiceEnum - // SetChoice assigns BgpExtendedCommunityTransitiveIpv4AddressTypeChoiceEnum provided by user to BgpExtendedCommunityTransitiveIpv4AddressType - SetChoice(value BgpExtendedCommunityTransitiveIpv4AddressTypeChoiceEnum) BgpExtendedCommunityTransitiveIpv4AddressType - // HasChoice checks if Choice has been set in BgpExtendedCommunityTransitiveIpv4AddressType + // Choice returns PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Ipv4TunnelSenderAddressChoiceEnum, set in PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Ipv4TunnelSenderAddress + Choice() PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Ipv4TunnelSenderAddressChoiceEnum + // SetChoice assigns PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Ipv4TunnelSenderAddressChoiceEnum provided by user to PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Ipv4TunnelSenderAddress + SetChoice(value PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Ipv4TunnelSenderAddressChoiceEnum) PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Ipv4TunnelSenderAddress + // HasChoice checks if Choice has been set in PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Ipv4TunnelSenderAddress HasChoice() bool - // RouteTargetSubtype returns BgpExtendedCommunityTransitiveIpv4AddressTypeRouteTarget, set in BgpExtendedCommunityTransitiveIpv4AddressType. - // BgpExtendedCommunityTransitiveIpv4AddressTypeRouteTarget is the Route Target Community identifies one or more routers that may receive a set of routes (that carry this Community) carried by BGP. It is sent with sub-type as 0x02. - RouteTargetSubtype() BgpExtendedCommunityTransitiveIpv4AddressTypeRouteTarget - // SetRouteTargetSubtype assigns BgpExtendedCommunityTransitiveIpv4AddressTypeRouteTarget provided by user to BgpExtendedCommunityTransitiveIpv4AddressType. - // BgpExtendedCommunityTransitiveIpv4AddressTypeRouteTarget is the Route Target Community identifies one or more routers that may receive a set of routes (that carry this Community) carried by BGP. It is sent with sub-type as 0x02. - SetRouteTargetSubtype(value BgpExtendedCommunityTransitiveIpv4AddressTypeRouteTarget) BgpExtendedCommunityTransitiveIpv4AddressType - // HasRouteTargetSubtype checks if RouteTargetSubtype has been set in BgpExtendedCommunityTransitiveIpv4AddressType - HasRouteTargetSubtype() bool - // RouteOriginSubtype returns BgpExtendedCommunityTransitiveIpv4AddressTypeRouteOrigin, set in BgpExtendedCommunityTransitiveIpv4AddressType. - // BgpExtendedCommunityTransitiveIpv4AddressTypeRouteOrigin is the Route Origin Community identifies one or more routers that inject a set of routes (that carry this Community) into BGP It is sent with sub-type as 0x03. - RouteOriginSubtype() BgpExtendedCommunityTransitiveIpv4AddressTypeRouteOrigin - // SetRouteOriginSubtype assigns BgpExtendedCommunityTransitiveIpv4AddressTypeRouteOrigin provided by user to BgpExtendedCommunityTransitiveIpv4AddressType. - // BgpExtendedCommunityTransitiveIpv4AddressTypeRouteOrigin is the Route Origin Community identifies one or more routers that inject a set of routes (that carry this Community) into BGP It is sent with sub-type as 0x03. - SetRouteOriginSubtype(value BgpExtendedCommunityTransitiveIpv4AddressTypeRouteOrigin) BgpExtendedCommunityTransitiveIpv4AddressType - // HasRouteOriginSubtype checks if RouteOriginSubtype has been set in BgpExtendedCommunityTransitiveIpv4AddressType - HasRouteOriginSubtype() bool + // Value returns string, set in PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Ipv4TunnelSenderAddress. + Value() string + // SetValue assigns string provided by user to PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Ipv4TunnelSenderAddress + SetValue(value string) PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Ipv4TunnelSenderAddress + // HasValue checks if Value has been set in PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Ipv4TunnelSenderAddress + HasValue() bool + // Values returns []string, set in PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Ipv4TunnelSenderAddress. + Values() []string + // SetValues assigns []string provided by user to PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Ipv4TunnelSenderAddress + SetValues(value []string) PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Ipv4TunnelSenderAddress + // Increment returns PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Ipv4TunnelSenderAddressCounter, set in PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Ipv4TunnelSenderAddress. + // PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Ipv4TunnelSenderAddressCounter is ipv4 counter pattern + Increment() PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Ipv4TunnelSenderAddressCounter + // SetIncrement assigns PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Ipv4TunnelSenderAddressCounter provided by user to PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Ipv4TunnelSenderAddress. + // PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Ipv4TunnelSenderAddressCounter is ipv4 counter pattern + SetIncrement(value PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Ipv4TunnelSenderAddressCounter) PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Ipv4TunnelSenderAddress + // HasIncrement checks if Increment has been set in PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Ipv4TunnelSenderAddress + HasIncrement() bool + // Decrement returns PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Ipv4TunnelSenderAddressCounter, set in PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Ipv4TunnelSenderAddress. + // PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Ipv4TunnelSenderAddressCounter is ipv4 counter pattern + Decrement() PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Ipv4TunnelSenderAddressCounter + // SetDecrement assigns PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Ipv4TunnelSenderAddressCounter provided by user to PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Ipv4TunnelSenderAddress. + // PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Ipv4TunnelSenderAddressCounter is ipv4 counter pattern + SetDecrement(value PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Ipv4TunnelSenderAddressCounter) PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Ipv4TunnelSenderAddress + // HasDecrement checks if Decrement has been set in PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Ipv4TunnelSenderAddress + HasDecrement() bool setNil() } -type BgpExtendedCommunityTransitiveIpv4AddressTypeChoiceEnum string +type PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Ipv4TunnelSenderAddressChoiceEnum string -// Enum of Choice on BgpExtendedCommunityTransitiveIpv4AddressType -var BgpExtendedCommunityTransitiveIpv4AddressTypeChoice = struct { - ROUTE_TARGET_SUBTYPE BgpExtendedCommunityTransitiveIpv4AddressTypeChoiceEnum - ROUTE_ORIGIN_SUBTYPE BgpExtendedCommunityTransitiveIpv4AddressTypeChoiceEnum +// Enum of Choice on PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Ipv4TunnelSenderAddress +var PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Ipv4TunnelSenderAddressChoice = struct { + VALUE PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Ipv4TunnelSenderAddressChoiceEnum + VALUES PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Ipv4TunnelSenderAddressChoiceEnum + INCREMENT PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Ipv4TunnelSenderAddressChoiceEnum + DECREMENT PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Ipv4TunnelSenderAddressChoiceEnum }{ - ROUTE_TARGET_SUBTYPE: BgpExtendedCommunityTransitiveIpv4AddressTypeChoiceEnum("route_target_subtype"), - ROUTE_ORIGIN_SUBTYPE: BgpExtendedCommunityTransitiveIpv4AddressTypeChoiceEnum("route_origin_subtype"), + VALUE: PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Ipv4TunnelSenderAddressChoiceEnum("value"), + VALUES: PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Ipv4TunnelSenderAddressChoiceEnum("values"), + INCREMENT: PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Ipv4TunnelSenderAddressChoiceEnum("increment"), + DECREMENT: PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Ipv4TunnelSenderAddressChoiceEnum("decrement"), } -func (obj *bgpExtendedCommunityTransitiveIpv4AddressType) Choice() BgpExtendedCommunityTransitiveIpv4AddressTypeChoiceEnum { - return BgpExtendedCommunityTransitiveIpv4AddressTypeChoiceEnum(obj.obj.Choice.Enum().String()) +func (obj *patternFlowRSVPPathSenderTemplateLspTunnelIpv4Ipv4TunnelSenderAddress) Choice() PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Ipv4TunnelSenderAddressChoiceEnum { + return PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Ipv4TunnelSenderAddressChoiceEnum(obj.obj.Choice.Enum().String()) } // description is TBD // Choice returns a string -func (obj *bgpExtendedCommunityTransitiveIpv4AddressType) HasChoice() bool { +func (obj *patternFlowRSVPPathSenderTemplateLspTunnelIpv4Ipv4TunnelSenderAddress) HasChoice() bool { return obj.obj.Choice != nil } -func (obj *bgpExtendedCommunityTransitiveIpv4AddressType) SetChoice(value BgpExtendedCommunityTransitiveIpv4AddressTypeChoiceEnum) BgpExtendedCommunityTransitiveIpv4AddressType { - intValue, ok := otg.BgpExtendedCommunityTransitiveIpv4AddressType_Choice_Enum_value[string(value)] +func (obj *patternFlowRSVPPathSenderTemplateLspTunnelIpv4Ipv4TunnelSenderAddress) SetChoice(value PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Ipv4TunnelSenderAddressChoiceEnum) PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Ipv4TunnelSenderAddress { + intValue, ok := otg.PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Ipv4TunnelSenderAddress_Choice_Enum_value[string(value)] if !ok { obj.validationErrors = append(obj.validationErrors, fmt.Sprintf( - "%s is not a valid choice on BgpExtendedCommunityTransitiveIpv4AddressTypeChoiceEnum", string(value))) + "%s is not a valid choice on PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Ipv4TunnelSenderAddressChoiceEnum", string(value))) return obj } - enumValue := otg.BgpExtendedCommunityTransitiveIpv4AddressType_Choice_Enum(intValue) + enumValue := otg.PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Ipv4TunnelSenderAddress_Choice_Enum(intValue) obj.obj.Choice = &enumValue - obj.obj.RouteOriginSubtype = nil - obj.routeOriginSubtypeHolder = nil - obj.obj.RouteTargetSubtype = nil - obj.routeTargetSubtypeHolder = nil + obj.obj.Decrement = nil + obj.decrementHolder = nil + obj.obj.Increment = nil + obj.incrementHolder = nil + obj.obj.Values = nil + obj.obj.Value = nil + + if value == PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Ipv4TunnelSenderAddressChoice.VALUE { + defaultValue := "0.0.0.0" + obj.obj.Value = &defaultValue + } + + if value == PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Ipv4TunnelSenderAddressChoice.VALUES { + defaultValue := []string{"0.0.0.0"} + obj.obj.Values = defaultValue + } + + if value == PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Ipv4TunnelSenderAddressChoice.INCREMENT { + obj.obj.Increment = NewPatternFlowRSVPPathSenderTemplateLspTunnelIpv4Ipv4TunnelSenderAddressCounter().Msg() + } + + if value == PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Ipv4TunnelSenderAddressChoice.DECREMENT { + obj.obj.Decrement = NewPatternFlowRSVPPathSenderTemplateLspTunnelIpv4Ipv4TunnelSenderAddressCounter().Msg() + } + + return obj +} + +// description is TBD +// Value returns a string +func (obj *patternFlowRSVPPathSenderTemplateLspTunnelIpv4Ipv4TunnelSenderAddress) Value() string { + + if obj.obj.Value == nil { + obj.SetChoice(PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Ipv4TunnelSenderAddressChoice.VALUE) + } + + return *obj.obj.Value + +} + +// description is TBD +// Value returns a string +func (obj *patternFlowRSVPPathSenderTemplateLspTunnelIpv4Ipv4TunnelSenderAddress) HasValue() bool { + return obj.obj.Value != nil +} + +// description is TBD +// SetValue sets the string value in the PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Ipv4TunnelSenderAddress object +func (obj *patternFlowRSVPPathSenderTemplateLspTunnelIpv4Ipv4TunnelSenderAddress) SetValue(value string) PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Ipv4TunnelSenderAddress { + obj.SetChoice(PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Ipv4TunnelSenderAddressChoice.VALUE) + obj.obj.Value = &value + return obj +} - if value == BgpExtendedCommunityTransitiveIpv4AddressTypeChoice.ROUTE_TARGET_SUBTYPE { - obj.obj.RouteTargetSubtype = NewBgpExtendedCommunityTransitiveIpv4AddressTypeRouteTarget().Msg() +// description is TBD +// Values returns a []string +func (obj *patternFlowRSVPPathSenderTemplateLspTunnelIpv4Ipv4TunnelSenderAddress) Values() []string { + if obj.obj.Values == nil { + obj.SetValues([]string{"0.0.0.0"}) } + return obj.obj.Values +} - if value == BgpExtendedCommunityTransitiveIpv4AddressTypeChoice.ROUTE_ORIGIN_SUBTYPE { - obj.obj.RouteOriginSubtype = NewBgpExtendedCommunityTransitiveIpv4AddressTypeRouteOrigin().Msg() +// description is TBD +// SetValues sets the []string value in the PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Ipv4TunnelSenderAddress object +func (obj *patternFlowRSVPPathSenderTemplateLspTunnelIpv4Ipv4TunnelSenderAddress) SetValues(value []string) PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Ipv4TunnelSenderAddress { + obj.SetChoice(PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Ipv4TunnelSenderAddressChoice.VALUES) + if obj.obj.Values == nil { + obj.obj.Values = make([]string, 0) } + obj.obj.Values = value return obj } // description is TBD -// RouteTargetSubtype returns a BgpExtendedCommunityTransitiveIpv4AddressTypeRouteTarget -func (obj *bgpExtendedCommunityTransitiveIpv4AddressType) RouteTargetSubtype() BgpExtendedCommunityTransitiveIpv4AddressTypeRouteTarget { - if obj.obj.RouteTargetSubtype == nil { - obj.SetChoice(BgpExtendedCommunityTransitiveIpv4AddressTypeChoice.ROUTE_TARGET_SUBTYPE) +// Increment returns a PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Ipv4TunnelSenderAddressCounter +func (obj *patternFlowRSVPPathSenderTemplateLspTunnelIpv4Ipv4TunnelSenderAddress) Increment() PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Ipv4TunnelSenderAddressCounter { + if obj.obj.Increment == nil { + obj.SetChoice(PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Ipv4TunnelSenderAddressChoice.INCREMENT) } - if obj.routeTargetSubtypeHolder == nil { - obj.routeTargetSubtypeHolder = &bgpExtendedCommunityTransitiveIpv4AddressTypeRouteTarget{obj: obj.obj.RouteTargetSubtype} + if obj.incrementHolder == nil { + obj.incrementHolder = &patternFlowRSVPPathSenderTemplateLspTunnelIpv4Ipv4TunnelSenderAddressCounter{obj: obj.obj.Increment} } - return obj.routeTargetSubtypeHolder + return obj.incrementHolder } // description is TBD -// RouteTargetSubtype returns a BgpExtendedCommunityTransitiveIpv4AddressTypeRouteTarget -func (obj *bgpExtendedCommunityTransitiveIpv4AddressType) HasRouteTargetSubtype() bool { - return obj.obj.RouteTargetSubtype != nil +// Increment returns a PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Ipv4TunnelSenderAddressCounter +func (obj *patternFlowRSVPPathSenderTemplateLspTunnelIpv4Ipv4TunnelSenderAddress) HasIncrement() bool { + return obj.obj.Increment != nil } // description is TBD -// SetRouteTargetSubtype sets the BgpExtendedCommunityTransitiveIpv4AddressTypeRouteTarget value in the BgpExtendedCommunityTransitiveIpv4AddressType object -func (obj *bgpExtendedCommunityTransitiveIpv4AddressType) SetRouteTargetSubtype(value BgpExtendedCommunityTransitiveIpv4AddressTypeRouteTarget) BgpExtendedCommunityTransitiveIpv4AddressType { - obj.SetChoice(BgpExtendedCommunityTransitiveIpv4AddressTypeChoice.ROUTE_TARGET_SUBTYPE) - obj.routeTargetSubtypeHolder = nil - obj.obj.RouteTargetSubtype = value.Msg() +// SetIncrement sets the PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Ipv4TunnelSenderAddressCounter value in the PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Ipv4TunnelSenderAddress object +func (obj *patternFlowRSVPPathSenderTemplateLspTunnelIpv4Ipv4TunnelSenderAddress) SetIncrement(value PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Ipv4TunnelSenderAddressCounter) PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Ipv4TunnelSenderAddress { + obj.SetChoice(PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Ipv4TunnelSenderAddressChoice.INCREMENT) + obj.incrementHolder = nil + obj.obj.Increment = value.Msg() return obj } // description is TBD -// RouteOriginSubtype returns a BgpExtendedCommunityTransitiveIpv4AddressTypeRouteOrigin -func (obj *bgpExtendedCommunityTransitiveIpv4AddressType) RouteOriginSubtype() BgpExtendedCommunityTransitiveIpv4AddressTypeRouteOrigin { - if obj.obj.RouteOriginSubtype == nil { - obj.SetChoice(BgpExtendedCommunityTransitiveIpv4AddressTypeChoice.ROUTE_ORIGIN_SUBTYPE) +// Decrement returns a PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Ipv4TunnelSenderAddressCounter +func (obj *patternFlowRSVPPathSenderTemplateLspTunnelIpv4Ipv4TunnelSenderAddress) Decrement() PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Ipv4TunnelSenderAddressCounter { + if obj.obj.Decrement == nil { + obj.SetChoice(PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Ipv4TunnelSenderAddressChoice.DECREMENT) } - if obj.routeOriginSubtypeHolder == nil { - obj.routeOriginSubtypeHolder = &bgpExtendedCommunityTransitiveIpv4AddressTypeRouteOrigin{obj: obj.obj.RouteOriginSubtype} + if obj.decrementHolder == nil { + obj.decrementHolder = &patternFlowRSVPPathSenderTemplateLspTunnelIpv4Ipv4TunnelSenderAddressCounter{obj: obj.obj.Decrement} } - return obj.routeOriginSubtypeHolder + return obj.decrementHolder } // description is TBD -// RouteOriginSubtype returns a BgpExtendedCommunityTransitiveIpv4AddressTypeRouteOrigin -func (obj *bgpExtendedCommunityTransitiveIpv4AddressType) HasRouteOriginSubtype() bool { - return obj.obj.RouteOriginSubtype != nil +// Decrement returns a PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Ipv4TunnelSenderAddressCounter +func (obj *patternFlowRSVPPathSenderTemplateLspTunnelIpv4Ipv4TunnelSenderAddress) HasDecrement() bool { + return obj.obj.Decrement != nil } // description is TBD -// SetRouteOriginSubtype sets the BgpExtendedCommunityTransitiveIpv4AddressTypeRouteOrigin value in the BgpExtendedCommunityTransitiveIpv4AddressType object -func (obj *bgpExtendedCommunityTransitiveIpv4AddressType) SetRouteOriginSubtype(value BgpExtendedCommunityTransitiveIpv4AddressTypeRouteOrigin) BgpExtendedCommunityTransitiveIpv4AddressType { - obj.SetChoice(BgpExtendedCommunityTransitiveIpv4AddressTypeChoice.ROUTE_ORIGIN_SUBTYPE) - obj.routeOriginSubtypeHolder = nil - obj.obj.RouteOriginSubtype = value.Msg() +// SetDecrement sets the PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Ipv4TunnelSenderAddressCounter value in the PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Ipv4TunnelSenderAddress object +func (obj *patternFlowRSVPPathSenderTemplateLspTunnelIpv4Ipv4TunnelSenderAddress) SetDecrement(value PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Ipv4TunnelSenderAddressCounter) PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Ipv4TunnelSenderAddress { + obj.SetChoice(PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Ipv4TunnelSenderAddressChoice.DECREMENT) + obj.decrementHolder = nil + obj.obj.Decrement = value.Msg() return obj } -func (obj *bgpExtendedCommunityTransitiveIpv4AddressType) validateObj(vObj *validation, set_default bool) { +func (obj *patternFlowRSVPPathSenderTemplateLspTunnelIpv4Ipv4TunnelSenderAddress) validateObj(vObj *validation, set_default bool) { if set_default { obj.setDefault() } - if obj.obj.RouteTargetSubtype != nil { + if obj.obj.Value != nil { + + err := obj.validateIpv4(obj.Value()) + if err != nil { + vObj.validationErrors = append(vObj.validationErrors, fmt.Sprintf("%s %s", err.Error(), "on PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Ipv4TunnelSenderAddress.Value")) + } - obj.RouteTargetSubtype().validateObj(vObj, set_default) } - if obj.obj.RouteOriginSubtype != nil { + if obj.obj.Values != nil { - obj.RouteOriginSubtype().validateObj(vObj, set_default) + err := obj.validateIpv4Slice(obj.Values()) + if err != nil { + vObj.validationErrors = append(vObj.validationErrors, fmt.Sprintf("%s %s", err.Error(), "on PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Ipv4TunnelSenderAddress.Values")) + } + + } + + if obj.obj.Increment != nil { + + obj.Increment().validateObj(vObj, set_default) + } + + if obj.obj.Decrement != nil { + + obj.Decrement().validateObj(vObj, set_default) } } -func (obj *bgpExtendedCommunityTransitiveIpv4AddressType) setDefault() { +func (obj *patternFlowRSVPPathSenderTemplateLspTunnelIpv4Ipv4TunnelSenderAddress) setDefault() { if obj.obj.Choice == nil { - obj.SetChoice(BgpExtendedCommunityTransitiveIpv4AddressTypeChoice.ROUTE_TARGET_SUBTYPE) + obj.SetChoice(PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Ipv4TunnelSenderAddressChoice.VALUE) } } -// ***** BgpExtendedCommunityTransitive4OctetAsType ***** -type bgpExtendedCommunityTransitive4OctetAsType struct { +// ***** PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Reserved ***** +type patternFlowRSVPPathSenderTemplateLspTunnelIpv4Reserved struct { validation - obj *otg.BgpExtendedCommunityTransitive4OctetAsType - routeTargetSubtypeHolder BgpExtendedCommunityTransitive4OctetAsTypeRouteTarget - routeOriginSubtypeHolder BgpExtendedCommunityTransitive4OctetAsTypeRouteOrigin + obj *otg.PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Reserved + incrementHolder PatternFlowRSVPPathSenderTemplateLspTunnelIpv4ReservedCounter + decrementHolder PatternFlowRSVPPathSenderTemplateLspTunnelIpv4ReservedCounter } -func NewBgpExtendedCommunityTransitive4OctetAsType() BgpExtendedCommunityTransitive4OctetAsType { - obj := bgpExtendedCommunityTransitive4OctetAsType{obj: &otg.BgpExtendedCommunityTransitive4OctetAsType{}} +func NewPatternFlowRSVPPathSenderTemplateLspTunnelIpv4Reserved() PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Reserved { + obj := patternFlowRSVPPathSenderTemplateLspTunnelIpv4Reserved{obj: &otg.PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Reserved{}} obj.setDefault() return &obj } -func (obj *bgpExtendedCommunityTransitive4OctetAsType) Msg() *otg.BgpExtendedCommunityTransitive4OctetAsType { +func (obj *patternFlowRSVPPathSenderTemplateLspTunnelIpv4Reserved) Msg() *otg.PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Reserved { return obj.obj } -func (obj *bgpExtendedCommunityTransitive4OctetAsType) SetMsg(msg *otg.BgpExtendedCommunityTransitive4OctetAsType) BgpExtendedCommunityTransitive4OctetAsType { +func (obj *patternFlowRSVPPathSenderTemplateLspTunnelIpv4Reserved) SetMsg(msg *otg.PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Reserved) PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Reserved { obj.setNil() proto.Merge(obj.obj, msg) return obj } -func (obj *bgpExtendedCommunityTransitive4OctetAsType) ToProto() (*otg.BgpExtendedCommunityTransitive4OctetAsType, error) { +func (obj *patternFlowRSVPPathSenderTemplateLspTunnelIpv4Reserved) ToProto() (*otg.PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Reserved, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -299601,7 +345446,7 @@ func (obj *bgpExtendedCommunityTransitive4OctetAsType) ToProto() (*otg.BgpExtend return obj.Msg(), nil } -func (obj *bgpExtendedCommunityTransitive4OctetAsType) FromProto(msg *otg.BgpExtendedCommunityTransitive4OctetAsType) (BgpExtendedCommunityTransitive4OctetAsType, error) { +func (obj *patternFlowRSVPPathSenderTemplateLspTunnelIpv4Reserved) FromProto(msg *otg.PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Reserved) (PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Reserved, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -299610,7 +345455,7 @@ func (obj *bgpExtendedCommunityTransitive4OctetAsType) FromProto(msg *otg.BgpExt return newObj, nil } -func (obj *bgpExtendedCommunityTransitive4OctetAsType) ToPbText() (string, error) { +func (obj *patternFlowRSVPPathSenderTemplateLspTunnelIpv4Reserved) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -299622,7 +345467,7 @@ func (obj *bgpExtendedCommunityTransitive4OctetAsType) ToPbText() (string, error return string(protoMarshal), nil } -func (obj *bgpExtendedCommunityTransitive4OctetAsType) FromPbText(value string) error { +func (obj *patternFlowRSVPPathSenderTemplateLspTunnelIpv4Reserved) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj @@ -299635,7 +345480,7 @@ func (obj *bgpExtendedCommunityTransitive4OctetAsType) FromPbText(value string) return retObj } -func (obj *bgpExtendedCommunityTransitive4OctetAsType) ToYaml() (string, error) { +func (obj *patternFlowRSVPPathSenderTemplateLspTunnelIpv4Reserved) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -299656,7 +345501,7 @@ func (obj *bgpExtendedCommunityTransitive4OctetAsType) ToYaml() (string, error) return string(data), nil } -func (obj *bgpExtendedCommunityTransitive4OctetAsType) FromYaml(value string) error { +func (obj *patternFlowRSVPPathSenderTemplateLspTunnelIpv4Reserved) FromYaml(value string) error { if value == "" { value = "{}" } @@ -299681,7 +345526,7 @@ func (obj *bgpExtendedCommunityTransitive4OctetAsType) FromYaml(value string) er return nil } -func (obj *bgpExtendedCommunityTransitive4OctetAsType) ToJson() (string, error) { +func (obj *patternFlowRSVPPathSenderTemplateLspTunnelIpv4Reserved) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -299699,7 +345544,7 @@ func (obj *bgpExtendedCommunityTransitive4OctetAsType) ToJson() (string, error) return string(data), nil } -func (obj *bgpExtendedCommunityTransitive4OctetAsType) FromJson(value string) error { +func (obj *patternFlowRSVPPathSenderTemplateLspTunnelIpv4Reserved) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -299720,19 +345565,19 @@ func (obj *bgpExtendedCommunityTransitive4OctetAsType) FromJson(value string) er return nil } -func (obj *bgpExtendedCommunityTransitive4OctetAsType) validateToAndFrom() error { +func (obj *patternFlowRSVPPathSenderTemplateLspTunnelIpv4Reserved) validateToAndFrom() error { // emptyVars() obj.validateObj(&obj.validation, true) return obj.validationResult() } -func (obj *bgpExtendedCommunityTransitive4OctetAsType) Validate() error { +func (obj *patternFlowRSVPPathSenderTemplateLspTunnelIpv4Reserved) Validate() error { // emptyVars() obj.validateObj(&obj.validation, false) return obj.validationResult() } -func (obj *bgpExtendedCommunityTransitive4OctetAsType) String() string { +func (obj *patternFlowRSVPPathSenderTemplateLspTunnelIpv4Reserved) String() string { str, err := obj.ToYaml() if err != nil { return err.Error() @@ -299740,12 +345585,12 @@ func (obj *bgpExtendedCommunityTransitive4OctetAsType) String() string { return str } -func (obj *bgpExtendedCommunityTransitive4OctetAsType) Clone() (BgpExtendedCommunityTransitive4OctetAsType, error) { +func (obj *patternFlowRSVPPathSenderTemplateLspTunnelIpv4Reserved) Clone() (PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Reserved, error) { vErr := obj.Validate() if vErr != nil { return nil, vErr } - newObj := NewBgpExtendedCommunityTransitive4OctetAsType() + newObj := NewPatternFlowRSVPPathSenderTemplateLspTunnelIpv4Reserved() data, err := proto.Marshal(obj.Msg()) if err != nil { return nil, err @@ -299757,225 +345602,321 @@ func (obj *bgpExtendedCommunityTransitive4OctetAsType) Clone() (BgpExtendedCommu return newObj, nil } -func (obj *bgpExtendedCommunityTransitive4OctetAsType) setNil() { - obj.routeTargetSubtypeHolder = nil - obj.routeOriginSubtypeHolder = nil +func (obj *patternFlowRSVPPathSenderTemplateLspTunnelIpv4Reserved) setNil() { + obj.incrementHolder = nil + obj.decrementHolder = nil obj.validationErrors = nil obj.warnings = nil obj.constraints = make(map[string]map[string]Constraints) } -// BgpExtendedCommunityTransitive4OctetAsType is the Transitive Four-Octet AS-Specific Extended Community is sent as type 0x02. It is defined in RFC 5668. -type BgpExtendedCommunityTransitive4OctetAsType interface { +// PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Reserved is reserved field, MUST be zero. +type PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Reserved interface { Validation - // Msg marshals BgpExtendedCommunityTransitive4OctetAsType to protobuf object *otg.BgpExtendedCommunityTransitive4OctetAsType + // Msg marshals PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Reserved to protobuf object *otg.PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Reserved // and doesn't set defaults - Msg() *otg.BgpExtendedCommunityTransitive4OctetAsType - // SetMsg unmarshals BgpExtendedCommunityTransitive4OctetAsType from protobuf object *otg.BgpExtendedCommunityTransitive4OctetAsType + Msg() *otg.PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Reserved + // SetMsg unmarshals PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Reserved from protobuf object *otg.PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Reserved // and doesn't set defaults - SetMsg(*otg.BgpExtendedCommunityTransitive4OctetAsType) BgpExtendedCommunityTransitive4OctetAsType - // ToProto marshals BgpExtendedCommunityTransitive4OctetAsType to protobuf object *otg.BgpExtendedCommunityTransitive4OctetAsType - ToProto() (*otg.BgpExtendedCommunityTransitive4OctetAsType, error) - // ToPbText marshals BgpExtendedCommunityTransitive4OctetAsType to protobuf text + SetMsg(*otg.PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Reserved) PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Reserved + // ToProto marshals PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Reserved to protobuf object *otg.PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Reserved + ToProto() (*otg.PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Reserved, error) + // ToPbText marshals PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Reserved to protobuf text ToPbText() (string, error) - // ToYaml marshals BgpExtendedCommunityTransitive4OctetAsType to YAML text + // ToYaml marshals PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Reserved to YAML text ToYaml() (string, error) - // ToJson marshals BgpExtendedCommunityTransitive4OctetAsType to JSON text + // ToJson marshals PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Reserved to JSON text ToJson() (string, error) - // FromProto unmarshals BgpExtendedCommunityTransitive4OctetAsType from protobuf object *otg.BgpExtendedCommunityTransitive4OctetAsType - FromProto(msg *otg.BgpExtendedCommunityTransitive4OctetAsType) (BgpExtendedCommunityTransitive4OctetAsType, error) - // FromPbText unmarshals BgpExtendedCommunityTransitive4OctetAsType from protobuf text + // FromProto unmarshals PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Reserved from protobuf object *otg.PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Reserved + FromProto(msg *otg.PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Reserved) (PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Reserved, error) + // FromPbText unmarshals PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Reserved from protobuf text FromPbText(value string) error - // FromYaml unmarshals BgpExtendedCommunityTransitive4OctetAsType from YAML text + // FromYaml unmarshals PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Reserved from YAML text FromYaml(value string) error - // FromJson unmarshals BgpExtendedCommunityTransitive4OctetAsType from JSON text + // FromJson unmarshals PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Reserved from JSON text FromJson(value string) error - // Validate validates BgpExtendedCommunityTransitive4OctetAsType + // Validate validates PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Reserved Validate() error // A stringer function String() string // Clones the object - Clone() (BgpExtendedCommunityTransitive4OctetAsType, error) + Clone() (PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Reserved, error) validateToAndFrom() error validateObj(vObj *validation, set_default bool) setDefault() - // Choice returns BgpExtendedCommunityTransitive4OctetAsTypeChoiceEnum, set in BgpExtendedCommunityTransitive4OctetAsType - Choice() BgpExtendedCommunityTransitive4OctetAsTypeChoiceEnum - // SetChoice assigns BgpExtendedCommunityTransitive4OctetAsTypeChoiceEnum provided by user to BgpExtendedCommunityTransitive4OctetAsType - SetChoice(value BgpExtendedCommunityTransitive4OctetAsTypeChoiceEnum) BgpExtendedCommunityTransitive4OctetAsType - // HasChoice checks if Choice has been set in BgpExtendedCommunityTransitive4OctetAsType + // Choice returns PatternFlowRSVPPathSenderTemplateLspTunnelIpv4ReservedChoiceEnum, set in PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Reserved + Choice() PatternFlowRSVPPathSenderTemplateLspTunnelIpv4ReservedChoiceEnum + // SetChoice assigns PatternFlowRSVPPathSenderTemplateLspTunnelIpv4ReservedChoiceEnum provided by user to PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Reserved + SetChoice(value PatternFlowRSVPPathSenderTemplateLspTunnelIpv4ReservedChoiceEnum) PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Reserved + // HasChoice checks if Choice has been set in PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Reserved HasChoice() bool - // RouteTargetSubtype returns BgpExtendedCommunityTransitive4OctetAsTypeRouteTarget, set in BgpExtendedCommunityTransitive4OctetAsType. - // BgpExtendedCommunityTransitive4OctetAsTypeRouteTarget is the Route Target Community identifies one or more routers that may receive a set of routes (that carry this Community) carried by BGP. It is sent with sub-type as 0x02 - RouteTargetSubtype() BgpExtendedCommunityTransitive4OctetAsTypeRouteTarget - // SetRouteTargetSubtype assigns BgpExtendedCommunityTransitive4OctetAsTypeRouteTarget provided by user to BgpExtendedCommunityTransitive4OctetAsType. - // BgpExtendedCommunityTransitive4OctetAsTypeRouteTarget is the Route Target Community identifies one or more routers that may receive a set of routes (that carry this Community) carried by BGP. It is sent with sub-type as 0x02 - SetRouteTargetSubtype(value BgpExtendedCommunityTransitive4OctetAsTypeRouteTarget) BgpExtendedCommunityTransitive4OctetAsType - // HasRouteTargetSubtype checks if RouteTargetSubtype has been set in BgpExtendedCommunityTransitive4OctetAsType - HasRouteTargetSubtype() bool - // RouteOriginSubtype returns BgpExtendedCommunityTransitive4OctetAsTypeRouteOrigin, set in BgpExtendedCommunityTransitive4OctetAsType. - // BgpExtendedCommunityTransitive4OctetAsTypeRouteOrigin is the Route Origin Community identifies one or more routers that inject a set of routes (that carry this Community) into BGP. It is sent with sub-type as 0x03. - RouteOriginSubtype() BgpExtendedCommunityTransitive4OctetAsTypeRouteOrigin - // SetRouteOriginSubtype assigns BgpExtendedCommunityTransitive4OctetAsTypeRouteOrigin provided by user to BgpExtendedCommunityTransitive4OctetAsType. - // BgpExtendedCommunityTransitive4OctetAsTypeRouteOrigin is the Route Origin Community identifies one or more routers that inject a set of routes (that carry this Community) into BGP. It is sent with sub-type as 0x03. - SetRouteOriginSubtype(value BgpExtendedCommunityTransitive4OctetAsTypeRouteOrigin) BgpExtendedCommunityTransitive4OctetAsType - // HasRouteOriginSubtype checks if RouteOriginSubtype has been set in BgpExtendedCommunityTransitive4OctetAsType - HasRouteOriginSubtype() bool + // Value returns uint32, set in PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Reserved. + Value() uint32 + // SetValue assigns uint32 provided by user to PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Reserved + SetValue(value uint32) PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Reserved + // HasValue checks if Value has been set in PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Reserved + HasValue() bool + // Values returns []uint32, set in PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Reserved. + Values() []uint32 + // SetValues assigns []uint32 provided by user to PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Reserved + SetValues(value []uint32) PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Reserved + // Increment returns PatternFlowRSVPPathSenderTemplateLspTunnelIpv4ReservedCounter, set in PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Reserved. + // PatternFlowRSVPPathSenderTemplateLspTunnelIpv4ReservedCounter is integer counter pattern + Increment() PatternFlowRSVPPathSenderTemplateLspTunnelIpv4ReservedCounter + // SetIncrement assigns PatternFlowRSVPPathSenderTemplateLspTunnelIpv4ReservedCounter provided by user to PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Reserved. + // PatternFlowRSVPPathSenderTemplateLspTunnelIpv4ReservedCounter is integer counter pattern + SetIncrement(value PatternFlowRSVPPathSenderTemplateLspTunnelIpv4ReservedCounter) PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Reserved + // HasIncrement checks if Increment has been set in PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Reserved + HasIncrement() bool + // Decrement returns PatternFlowRSVPPathSenderTemplateLspTunnelIpv4ReservedCounter, set in PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Reserved. + // PatternFlowRSVPPathSenderTemplateLspTunnelIpv4ReservedCounter is integer counter pattern + Decrement() PatternFlowRSVPPathSenderTemplateLspTunnelIpv4ReservedCounter + // SetDecrement assigns PatternFlowRSVPPathSenderTemplateLspTunnelIpv4ReservedCounter provided by user to PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Reserved. + // PatternFlowRSVPPathSenderTemplateLspTunnelIpv4ReservedCounter is integer counter pattern + SetDecrement(value PatternFlowRSVPPathSenderTemplateLspTunnelIpv4ReservedCounter) PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Reserved + // HasDecrement checks if Decrement has been set in PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Reserved + HasDecrement() bool setNil() } -type BgpExtendedCommunityTransitive4OctetAsTypeChoiceEnum string +type PatternFlowRSVPPathSenderTemplateLspTunnelIpv4ReservedChoiceEnum string -// Enum of Choice on BgpExtendedCommunityTransitive4OctetAsType -var BgpExtendedCommunityTransitive4OctetAsTypeChoice = struct { - ROUTE_TARGET_SUBTYPE BgpExtendedCommunityTransitive4OctetAsTypeChoiceEnum - ROUTE_ORIGIN_SUBTYPE BgpExtendedCommunityTransitive4OctetAsTypeChoiceEnum +// Enum of Choice on PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Reserved +var PatternFlowRSVPPathSenderTemplateLspTunnelIpv4ReservedChoice = struct { + VALUE PatternFlowRSVPPathSenderTemplateLspTunnelIpv4ReservedChoiceEnum + VALUES PatternFlowRSVPPathSenderTemplateLspTunnelIpv4ReservedChoiceEnum + INCREMENT PatternFlowRSVPPathSenderTemplateLspTunnelIpv4ReservedChoiceEnum + DECREMENT PatternFlowRSVPPathSenderTemplateLspTunnelIpv4ReservedChoiceEnum }{ - ROUTE_TARGET_SUBTYPE: BgpExtendedCommunityTransitive4OctetAsTypeChoiceEnum("route_target_subtype"), - ROUTE_ORIGIN_SUBTYPE: BgpExtendedCommunityTransitive4OctetAsTypeChoiceEnum("route_origin_subtype"), + VALUE: PatternFlowRSVPPathSenderTemplateLspTunnelIpv4ReservedChoiceEnum("value"), + VALUES: PatternFlowRSVPPathSenderTemplateLspTunnelIpv4ReservedChoiceEnum("values"), + INCREMENT: PatternFlowRSVPPathSenderTemplateLspTunnelIpv4ReservedChoiceEnum("increment"), + DECREMENT: PatternFlowRSVPPathSenderTemplateLspTunnelIpv4ReservedChoiceEnum("decrement"), } -func (obj *bgpExtendedCommunityTransitive4OctetAsType) Choice() BgpExtendedCommunityTransitive4OctetAsTypeChoiceEnum { - return BgpExtendedCommunityTransitive4OctetAsTypeChoiceEnum(obj.obj.Choice.Enum().String()) +func (obj *patternFlowRSVPPathSenderTemplateLspTunnelIpv4Reserved) Choice() PatternFlowRSVPPathSenderTemplateLspTunnelIpv4ReservedChoiceEnum { + return PatternFlowRSVPPathSenderTemplateLspTunnelIpv4ReservedChoiceEnum(obj.obj.Choice.Enum().String()) } // description is TBD // Choice returns a string -func (obj *bgpExtendedCommunityTransitive4OctetAsType) HasChoice() bool { +func (obj *patternFlowRSVPPathSenderTemplateLspTunnelIpv4Reserved) HasChoice() bool { return obj.obj.Choice != nil } -func (obj *bgpExtendedCommunityTransitive4OctetAsType) SetChoice(value BgpExtendedCommunityTransitive4OctetAsTypeChoiceEnum) BgpExtendedCommunityTransitive4OctetAsType { - intValue, ok := otg.BgpExtendedCommunityTransitive4OctetAsType_Choice_Enum_value[string(value)] +func (obj *patternFlowRSVPPathSenderTemplateLspTunnelIpv4Reserved) SetChoice(value PatternFlowRSVPPathSenderTemplateLspTunnelIpv4ReservedChoiceEnum) PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Reserved { + intValue, ok := otg.PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Reserved_Choice_Enum_value[string(value)] if !ok { obj.validationErrors = append(obj.validationErrors, fmt.Sprintf( - "%s is not a valid choice on BgpExtendedCommunityTransitive4OctetAsTypeChoiceEnum", string(value))) + "%s is not a valid choice on PatternFlowRSVPPathSenderTemplateLspTunnelIpv4ReservedChoiceEnum", string(value))) return obj } - enumValue := otg.BgpExtendedCommunityTransitive4OctetAsType_Choice_Enum(intValue) + enumValue := otg.PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Reserved_Choice_Enum(intValue) obj.obj.Choice = &enumValue - obj.obj.RouteOriginSubtype = nil - obj.routeOriginSubtypeHolder = nil - obj.obj.RouteTargetSubtype = nil - obj.routeTargetSubtypeHolder = nil + obj.obj.Decrement = nil + obj.decrementHolder = nil + obj.obj.Increment = nil + obj.incrementHolder = nil + obj.obj.Values = nil + obj.obj.Value = nil - if value == BgpExtendedCommunityTransitive4OctetAsTypeChoice.ROUTE_TARGET_SUBTYPE { - obj.obj.RouteTargetSubtype = NewBgpExtendedCommunityTransitive4OctetAsTypeRouteTarget().Msg() + if value == PatternFlowRSVPPathSenderTemplateLspTunnelIpv4ReservedChoice.VALUE { + defaultValue := uint32(0) + obj.obj.Value = &defaultValue } - if value == BgpExtendedCommunityTransitive4OctetAsTypeChoice.ROUTE_ORIGIN_SUBTYPE { - obj.obj.RouteOriginSubtype = NewBgpExtendedCommunityTransitive4OctetAsTypeRouteOrigin().Msg() + if value == PatternFlowRSVPPathSenderTemplateLspTunnelIpv4ReservedChoice.VALUES { + defaultValue := []uint32{0} + obj.obj.Values = defaultValue + } + + if value == PatternFlowRSVPPathSenderTemplateLspTunnelIpv4ReservedChoice.INCREMENT { + obj.obj.Increment = NewPatternFlowRSVPPathSenderTemplateLspTunnelIpv4ReservedCounter().Msg() + } + + if value == PatternFlowRSVPPathSenderTemplateLspTunnelIpv4ReservedChoice.DECREMENT { + obj.obj.Decrement = NewPatternFlowRSVPPathSenderTemplateLspTunnelIpv4ReservedCounter().Msg() } return obj } // description is TBD -// RouteTargetSubtype returns a BgpExtendedCommunityTransitive4OctetAsTypeRouteTarget -func (obj *bgpExtendedCommunityTransitive4OctetAsType) RouteTargetSubtype() BgpExtendedCommunityTransitive4OctetAsTypeRouteTarget { - if obj.obj.RouteTargetSubtype == nil { - obj.SetChoice(BgpExtendedCommunityTransitive4OctetAsTypeChoice.ROUTE_TARGET_SUBTYPE) +// Value returns a uint32 +func (obj *patternFlowRSVPPathSenderTemplateLspTunnelIpv4Reserved) Value() uint32 { + + if obj.obj.Value == nil { + obj.SetChoice(PatternFlowRSVPPathSenderTemplateLspTunnelIpv4ReservedChoice.VALUE) } - if obj.routeTargetSubtypeHolder == nil { - obj.routeTargetSubtypeHolder = &bgpExtendedCommunityTransitive4OctetAsTypeRouteTarget{obj: obj.obj.RouteTargetSubtype} + + return *obj.obj.Value + +} + +// description is TBD +// Value returns a uint32 +func (obj *patternFlowRSVPPathSenderTemplateLspTunnelIpv4Reserved) HasValue() bool { + return obj.obj.Value != nil +} + +// description is TBD +// SetValue sets the uint32 value in the PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Reserved object +func (obj *patternFlowRSVPPathSenderTemplateLspTunnelIpv4Reserved) SetValue(value uint32) PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Reserved { + obj.SetChoice(PatternFlowRSVPPathSenderTemplateLspTunnelIpv4ReservedChoice.VALUE) + obj.obj.Value = &value + return obj +} + +// description is TBD +// Values returns a []uint32 +func (obj *patternFlowRSVPPathSenderTemplateLspTunnelIpv4Reserved) Values() []uint32 { + if obj.obj.Values == nil { + obj.SetValues([]uint32{0}) } - return obj.routeTargetSubtypeHolder + return obj.obj.Values } // description is TBD -// RouteTargetSubtype returns a BgpExtendedCommunityTransitive4OctetAsTypeRouteTarget -func (obj *bgpExtendedCommunityTransitive4OctetAsType) HasRouteTargetSubtype() bool { - return obj.obj.RouteTargetSubtype != nil +// SetValues sets the []uint32 value in the PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Reserved object +func (obj *patternFlowRSVPPathSenderTemplateLspTunnelIpv4Reserved) SetValues(value []uint32) PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Reserved { + obj.SetChoice(PatternFlowRSVPPathSenderTemplateLspTunnelIpv4ReservedChoice.VALUES) + if obj.obj.Values == nil { + obj.obj.Values = make([]uint32, 0) + } + obj.obj.Values = value + + return obj } // description is TBD -// SetRouteTargetSubtype sets the BgpExtendedCommunityTransitive4OctetAsTypeRouteTarget value in the BgpExtendedCommunityTransitive4OctetAsType object -func (obj *bgpExtendedCommunityTransitive4OctetAsType) SetRouteTargetSubtype(value BgpExtendedCommunityTransitive4OctetAsTypeRouteTarget) BgpExtendedCommunityTransitive4OctetAsType { - obj.SetChoice(BgpExtendedCommunityTransitive4OctetAsTypeChoice.ROUTE_TARGET_SUBTYPE) - obj.routeTargetSubtypeHolder = nil - obj.obj.RouteTargetSubtype = value.Msg() +// Increment returns a PatternFlowRSVPPathSenderTemplateLspTunnelIpv4ReservedCounter +func (obj *patternFlowRSVPPathSenderTemplateLspTunnelIpv4Reserved) Increment() PatternFlowRSVPPathSenderTemplateLspTunnelIpv4ReservedCounter { + if obj.obj.Increment == nil { + obj.SetChoice(PatternFlowRSVPPathSenderTemplateLspTunnelIpv4ReservedChoice.INCREMENT) + } + if obj.incrementHolder == nil { + obj.incrementHolder = &patternFlowRSVPPathSenderTemplateLspTunnelIpv4ReservedCounter{obj: obj.obj.Increment} + } + return obj.incrementHolder +} + +// description is TBD +// Increment returns a PatternFlowRSVPPathSenderTemplateLspTunnelIpv4ReservedCounter +func (obj *patternFlowRSVPPathSenderTemplateLspTunnelIpv4Reserved) HasIncrement() bool { + return obj.obj.Increment != nil +} + +// description is TBD +// SetIncrement sets the PatternFlowRSVPPathSenderTemplateLspTunnelIpv4ReservedCounter value in the PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Reserved object +func (obj *patternFlowRSVPPathSenderTemplateLspTunnelIpv4Reserved) SetIncrement(value PatternFlowRSVPPathSenderTemplateLspTunnelIpv4ReservedCounter) PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Reserved { + obj.SetChoice(PatternFlowRSVPPathSenderTemplateLspTunnelIpv4ReservedChoice.INCREMENT) + obj.incrementHolder = nil + obj.obj.Increment = value.Msg() return obj } // description is TBD -// RouteOriginSubtype returns a BgpExtendedCommunityTransitive4OctetAsTypeRouteOrigin -func (obj *bgpExtendedCommunityTransitive4OctetAsType) RouteOriginSubtype() BgpExtendedCommunityTransitive4OctetAsTypeRouteOrigin { - if obj.obj.RouteOriginSubtype == nil { - obj.SetChoice(BgpExtendedCommunityTransitive4OctetAsTypeChoice.ROUTE_ORIGIN_SUBTYPE) +// Decrement returns a PatternFlowRSVPPathSenderTemplateLspTunnelIpv4ReservedCounter +func (obj *patternFlowRSVPPathSenderTemplateLspTunnelIpv4Reserved) Decrement() PatternFlowRSVPPathSenderTemplateLspTunnelIpv4ReservedCounter { + if obj.obj.Decrement == nil { + obj.SetChoice(PatternFlowRSVPPathSenderTemplateLspTunnelIpv4ReservedChoice.DECREMENT) } - if obj.routeOriginSubtypeHolder == nil { - obj.routeOriginSubtypeHolder = &bgpExtendedCommunityTransitive4OctetAsTypeRouteOrigin{obj: obj.obj.RouteOriginSubtype} + if obj.decrementHolder == nil { + obj.decrementHolder = &patternFlowRSVPPathSenderTemplateLspTunnelIpv4ReservedCounter{obj: obj.obj.Decrement} } - return obj.routeOriginSubtypeHolder + return obj.decrementHolder } // description is TBD -// RouteOriginSubtype returns a BgpExtendedCommunityTransitive4OctetAsTypeRouteOrigin -func (obj *bgpExtendedCommunityTransitive4OctetAsType) HasRouteOriginSubtype() bool { - return obj.obj.RouteOriginSubtype != nil +// Decrement returns a PatternFlowRSVPPathSenderTemplateLspTunnelIpv4ReservedCounter +func (obj *patternFlowRSVPPathSenderTemplateLspTunnelIpv4Reserved) HasDecrement() bool { + return obj.obj.Decrement != nil } // description is TBD -// SetRouteOriginSubtype sets the BgpExtendedCommunityTransitive4OctetAsTypeRouteOrigin value in the BgpExtendedCommunityTransitive4OctetAsType object -func (obj *bgpExtendedCommunityTransitive4OctetAsType) SetRouteOriginSubtype(value BgpExtendedCommunityTransitive4OctetAsTypeRouteOrigin) BgpExtendedCommunityTransitive4OctetAsType { - obj.SetChoice(BgpExtendedCommunityTransitive4OctetAsTypeChoice.ROUTE_ORIGIN_SUBTYPE) - obj.routeOriginSubtypeHolder = nil - obj.obj.RouteOriginSubtype = value.Msg() +// SetDecrement sets the PatternFlowRSVPPathSenderTemplateLspTunnelIpv4ReservedCounter value in the PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Reserved object +func (obj *patternFlowRSVPPathSenderTemplateLspTunnelIpv4Reserved) SetDecrement(value PatternFlowRSVPPathSenderTemplateLspTunnelIpv4ReservedCounter) PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Reserved { + obj.SetChoice(PatternFlowRSVPPathSenderTemplateLspTunnelIpv4ReservedChoice.DECREMENT) + obj.decrementHolder = nil + obj.obj.Decrement = value.Msg() return obj } -func (obj *bgpExtendedCommunityTransitive4OctetAsType) validateObj(vObj *validation, set_default bool) { +func (obj *patternFlowRSVPPathSenderTemplateLspTunnelIpv4Reserved) validateObj(vObj *validation, set_default bool) { if set_default { obj.setDefault() } - if obj.obj.RouteTargetSubtype != nil { + if obj.obj.Value != nil { + + if *obj.obj.Value > 65535 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("0 <= PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Reserved.Value <= 65535 but Got %d", *obj.obj.Value)) + } - obj.RouteTargetSubtype().validateObj(vObj, set_default) } - if obj.obj.RouteOriginSubtype != nil { + if obj.obj.Values != nil { - obj.RouteOriginSubtype().validateObj(vObj, set_default) + for _, item := range obj.obj.Values { + if item > 65535 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("min(uint32) <= PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Reserved.Values <= 65535 but Got %d", item)) + } + + } + + } + + if obj.obj.Increment != nil { + + obj.Increment().validateObj(vObj, set_default) + } + + if obj.obj.Decrement != nil { + + obj.Decrement().validateObj(vObj, set_default) } } -func (obj *bgpExtendedCommunityTransitive4OctetAsType) setDefault() { +func (obj *patternFlowRSVPPathSenderTemplateLspTunnelIpv4Reserved) setDefault() { if obj.obj.Choice == nil { - obj.SetChoice(BgpExtendedCommunityTransitive4OctetAsTypeChoice.ROUTE_TARGET_SUBTYPE) + obj.SetChoice(PatternFlowRSVPPathSenderTemplateLspTunnelIpv4ReservedChoice.VALUE) } } -// ***** BgpExtendedCommunityTransitiveOpaqueType ***** -type bgpExtendedCommunityTransitiveOpaqueType struct { +// ***** PatternFlowRSVPPathSenderTemplateLspTunnelIpv4LspId ***** +type patternFlowRSVPPathSenderTemplateLspTunnelIpv4LspId struct { validation - obj *otg.BgpExtendedCommunityTransitiveOpaqueType - colorSubtypeHolder BgpExtendedCommunityTransitiveOpaqueTypeColor - encapsulationSubtypeHolder BgpExtendedCommunityTransitiveOpaqueTypeEncapsulation + obj *otg.PatternFlowRSVPPathSenderTemplateLspTunnelIpv4LspId + incrementHolder PatternFlowRSVPPathSenderTemplateLspTunnelIpv4LspIdCounter + decrementHolder PatternFlowRSVPPathSenderTemplateLspTunnelIpv4LspIdCounter } -func NewBgpExtendedCommunityTransitiveOpaqueType() BgpExtendedCommunityTransitiveOpaqueType { - obj := bgpExtendedCommunityTransitiveOpaqueType{obj: &otg.BgpExtendedCommunityTransitiveOpaqueType{}} +func NewPatternFlowRSVPPathSenderTemplateLspTunnelIpv4LspId() PatternFlowRSVPPathSenderTemplateLspTunnelIpv4LspId { + obj := patternFlowRSVPPathSenderTemplateLspTunnelIpv4LspId{obj: &otg.PatternFlowRSVPPathSenderTemplateLspTunnelIpv4LspId{}} obj.setDefault() return &obj } -func (obj *bgpExtendedCommunityTransitiveOpaqueType) Msg() *otg.BgpExtendedCommunityTransitiveOpaqueType { +func (obj *patternFlowRSVPPathSenderTemplateLspTunnelIpv4LspId) Msg() *otg.PatternFlowRSVPPathSenderTemplateLspTunnelIpv4LspId { return obj.obj } -func (obj *bgpExtendedCommunityTransitiveOpaqueType) SetMsg(msg *otg.BgpExtendedCommunityTransitiveOpaqueType) BgpExtendedCommunityTransitiveOpaqueType { +func (obj *patternFlowRSVPPathSenderTemplateLspTunnelIpv4LspId) SetMsg(msg *otg.PatternFlowRSVPPathSenderTemplateLspTunnelIpv4LspId) PatternFlowRSVPPathSenderTemplateLspTunnelIpv4LspId { obj.setNil() proto.Merge(obj.obj, msg) return obj } -func (obj *bgpExtendedCommunityTransitiveOpaqueType) ToProto() (*otg.BgpExtendedCommunityTransitiveOpaqueType, error) { +func (obj *patternFlowRSVPPathSenderTemplateLspTunnelIpv4LspId) ToProto() (*otg.PatternFlowRSVPPathSenderTemplateLspTunnelIpv4LspId, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -299983,7 +345924,7 @@ func (obj *bgpExtendedCommunityTransitiveOpaqueType) ToProto() (*otg.BgpExtended return obj.Msg(), nil } -func (obj *bgpExtendedCommunityTransitiveOpaqueType) FromProto(msg *otg.BgpExtendedCommunityTransitiveOpaqueType) (BgpExtendedCommunityTransitiveOpaqueType, error) { +func (obj *patternFlowRSVPPathSenderTemplateLspTunnelIpv4LspId) FromProto(msg *otg.PatternFlowRSVPPathSenderTemplateLspTunnelIpv4LspId) (PatternFlowRSVPPathSenderTemplateLspTunnelIpv4LspId, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -299992,7 +345933,7 @@ func (obj *bgpExtendedCommunityTransitiveOpaqueType) FromProto(msg *otg.BgpExten return newObj, nil } -func (obj *bgpExtendedCommunityTransitiveOpaqueType) ToPbText() (string, error) { +func (obj *patternFlowRSVPPathSenderTemplateLspTunnelIpv4LspId) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -300004,7 +345945,7 @@ func (obj *bgpExtendedCommunityTransitiveOpaqueType) ToPbText() (string, error) return string(protoMarshal), nil } -func (obj *bgpExtendedCommunityTransitiveOpaqueType) FromPbText(value string) error { +func (obj *patternFlowRSVPPathSenderTemplateLspTunnelIpv4LspId) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj @@ -300017,7 +345958,7 @@ func (obj *bgpExtendedCommunityTransitiveOpaqueType) FromPbText(value string) er return retObj } -func (obj *bgpExtendedCommunityTransitiveOpaqueType) ToYaml() (string, error) { +func (obj *patternFlowRSVPPathSenderTemplateLspTunnelIpv4LspId) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -300038,7 +345979,7 @@ func (obj *bgpExtendedCommunityTransitiveOpaqueType) ToYaml() (string, error) { return string(data), nil } -func (obj *bgpExtendedCommunityTransitiveOpaqueType) FromYaml(value string) error { +func (obj *patternFlowRSVPPathSenderTemplateLspTunnelIpv4LspId) FromYaml(value string) error { if value == "" { value = "{}" } @@ -300063,7 +346004,7 @@ func (obj *bgpExtendedCommunityTransitiveOpaqueType) FromYaml(value string) erro return nil } -func (obj *bgpExtendedCommunityTransitiveOpaqueType) ToJson() (string, error) { +func (obj *patternFlowRSVPPathSenderTemplateLspTunnelIpv4LspId) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -300081,7 +346022,7 @@ func (obj *bgpExtendedCommunityTransitiveOpaqueType) ToJson() (string, error) { return string(data), nil } -func (obj *bgpExtendedCommunityTransitiveOpaqueType) FromJson(value string) error { +func (obj *patternFlowRSVPPathSenderTemplateLspTunnelIpv4LspId) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -300102,19 +346043,19 @@ func (obj *bgpExtendedCommunityTransitiveOpaqueType) FromJson(value string) erro return nil } -func (obj *bgpExtendedCommunityTransitiveOpaqueType) validateToAndFrom() error { +func (obj *patternFlowRSVPPathSenderTemplateLspTunnelIpv4LspId) validateToAndFrom() error { // emptyVars() obj.validateObj(&obj.validation, true) return obj.validationResult() } -func (obj *bgpExtendedCommunityTransitiveOpaqueType) Validate() error { +func (obj *patternFlowRSVPPathSenderTemplateLspTunnelIpv4LspId) Validate() error { // emptyVars() obj.validateObj(&obj.validation, false) return obj.validationResult() } -func (obj *bgpExtendedCommunityTransitiveOpaqueType) String() string { +func (obj *patternFlowRSVPPathSenderTemplateLspTunnelIpv4LspId) String() string { str, err := obj.ToYaml() if err != nil { return err.Error() @@ -300122,12 +346063,12 @@ func (obj *bgpExtendedCommunityTransitiveOpaqueType) String() string { return str } -func (obj *bgpExtendedCommunityTransitiveOpaqueType) Clone() (BgpExtendedCommunityTransitiveOpaqueType, error) { +func (obj *patternFlowRSVPPathSenderTemplateLspTunnelIpv4LspId) Clone() (PatternFlowRSVPPathSenderTemplateLspTunnelIpv4LspId, error) { vErr := obj.Validate() if vErr != nil { return nil, vErr } - newObj := NewBgpExtendedCommunityTransitiveOpaqueType() + newObj := NewPatternFlowRSVPPathSenderTemplateLspTunnelIpv4LspId() data, err := proto.Marshal(obj.Msg()) if err != nil { return nil, err @@ -300139,224 +346080,321 @@ func (obj *bgpExtendedCommunityTransitiveOpaqueType) Clone() (BgpExtendedCommuni return newObj, nil } -func (obj *bgpExtendedCommunityTransitiveOpaqueType) setNil() { - obj.colorSubtypeHolder = nil - obj.encapsulationSubtypeHolder = nil +func (obj *patternFlowRSVPPathSenderTemplateLspTunnelIpv4LspId) setNil() { + obj.incrementHolder = nil + obj.decrementHolder = nil obj.validationErrors = nil obj.warnings = nil obj.constraints = make(map[string]map[string]Constraints) } -// BgpExtendedCommunityTransitiveOpaqueType is the Transitive Opaque Extended Community is sent as type 0x03. -type BgpExtendedCommunityTransitiveOpaqueType interface { +// PatternFlowRSVPPathSenderTemplateLspTunnelIpv4LspId is a 16-bit identifier used in the SENDER_TEMPLATE that can be changed to allow a sender to share resources with itself. +type PatternFlowRSVPPathSenderTemplateLspTunnelIpv4LspId interface { Validation - // Msg marshals BgpExtendedCommunityTransitiveOpaqueType to protobuf object *otg.BgpExtendedCommunityTransitiveOpaqueType + // Msg marshals PatternFlowRSVPPathSenderTemplateLspTunnelIpv4LspId to protobuf object *otg.PatternFlowRSVPPathSenderTemplateLspTunnelIpv4LspId // and doesn't set defaults - Msg() *otg.BgpExtendedCommunityTransitiveOpaqueType - // SetMsg unmarshals BgpExtendedCommunityTransitiveOpaqueType from protobuf object *otg.BgpExtendedCommunityTransitiveOpaqueType + Msg() *otg.PatternFlowRSVPPathSenderTemplateLspTunnelIpv4LspId + // SetMsg unmarshals PatternFlowRSVPPathSenderTemplateLspTunnelIpv4LspId from protobuf object *otg.PatternFlowRSVPPathSenderTemplateLspTunnelIpv4LspId // and doesn't set defaults - SetMsg(*otg.BgpExtendedCommunityTransitiveOpaqueType) BgpExtendedCommunityTransitiveOpaqueType - // ToProto marshals BgpExtendedCommunityTransitiveOpaqueType to protobuf object *otg.BgpExtendedCommunityTransitiveOpaqueType - ToProto() (*otg.BgpExtendedCommunityTransitiveOpaqueType, error) - // ToPbText marshals BgpExtendedCommunityTransitiveOpaqueType to protobuf text + SetMsg(*otg.PatternFlowRSVPPathSenderTemplateLspTunnelIpv4LspId) PatternFlowRSVPPathSenderTemplateLspTunnelIpv4LspId + // ToProto marshals PatternFlowRSVPPathSenderTemplateLspTunnelIpv4LspId to protobuf object *otg.PatternFlowRSVPPathSenderTemplateLspTunnelIpv4LspId + ToProto() (*otg.PatternFlowRSVPPathSenderTemplateLspTunnelIpv4LspId, error) + // ToPbText marshals PatternFlowRSVPPathSenderTemplateLspTunnelIpv4LspId to protobuf text ToPbText() (string, error) - // ToYaml marshals BgpExtendedCommunityTransitiveOpaqueType to YAML text + // ToYaml marshals PatternFlowRSVPPathSenderTemplateLspTunnelIpv4LspId to YAML text ToYaml() (string, error) - // ToJson marshals BgpExtendedCommunityTransitiveOpaqueType to JSON text + // ToJson marshals PatternFlowRSVPPathSenderTemplateLspTunnelIpv4LspId to JSON text ToJson() (string, error) - // FromProto unmarshals BgpExtendedCommunityTransitiveOpaqueType from protobuf object *otg.BgpExtendedCommunityTransitiveOpaqueType - FromProto(msg *otg.BgpExtendedCommunityTransitiveOpaqueType) (BgpExtendedCommunityTransitiveOpaqueType, error) - // FromPbText unmarshals BgpExtendedCommunityTransitiveOpaqueType from protobuf text + // FromProto unmarshals PatternFlowRSVPPathSenderTemplateLspTunnelIpv4LspId from protobuf object *otg.PatternFlowRSVPPathSenderTemplateLspTunnelIpv4LspId + FromProto(msg *otg.PatternFlowRSVPPathSenderTemplateLspTunnelIpv4LspId) (PatternFlowRSVPPathSenderTemplateLspTunnelIpv4LspId, error) + // FromPbText unmarshals PatternFlowRSVPPathSenderTemplateLspTunnelIpv4LspId from protobuf text FromPbText(value string) error - // FromYaml unmarshals BgpExtendedCommunityTransitiveOpaqueType from YAML text + // FromYaml unmarshals PatternFlowRSVPPathSenderTemplateLspTunnelIpv4LspId from YAML text FromYaml(value string) error - // FromJson unmarshals BgpExtendedCommunityTransitiveOpaqueType from JSON text + // FromJson unmarshals PatternFlowRSVPPathSenderTemplateLspTunnelIpv4LspId from JSON text FromJson(value string) error - // Validate validates BgpExtendedCommunityTransitiveOpaqueType + // Validate validates PatternFlowRSVPPathSenderTemplateLspTunnelIpv4LspId Validate() error // A stringer function String() string // Clones the object - Clone() (BgpExtendedCommunityTransitiveOpaqueType, error) + Clone() (PatternFlowRSVPPathSenderTemplateLspTunnelIpv4LspId, error) validateToAndFrom() error validateObj(vObj *validation, set_default bool) setDefault() - // Choice returns BgpExtendedCommunityTransitiveOpaqueTypeChoiceEnum, set in BgpExtendedCommunityTransitiveOpaqueType - Choice() BgpExtendedCommunityTransitiveOpaqueTypeChoiceEnum - // SetChoice assigns BgpExtendedCommunityTransitiveOpaqueTypeChoiceEnum provided by user to BgpExtendedCommunityTransitiveOpaqueType - SetChoice(value BgpExtendedCommunityTransitiveOpaqueTypeChoiceEnum) BgpExtendedCommunityTransitiveOpaqueType - // HasChoice checks if Choice has been set in BgpExtendedCommunityTransitiveOpaqueType + // Choice returns PatternFlowRSVPPathSenderTemplateLspTunnelIpv4LspIdChoiceEnum, set in PatternFlowRSVPPathSenderTemplateLspTunnelIpv4LspId + Choice() PatternFlowRSVPPathSenderTemplateLspTunnelIpv4LspIdChoiceEnum + // SetChoice assigns PatternFlowRSVPPathSenderTemplateLspTunnelIpv4LspIdChoiceEnum provided by user to PatternFlowRSVPPathSenderTemplateLspTunnelIpv4LspId + SetChoice(value PatternFlowRSVPPathSenderTemplateLspTunnelIpv4LspIdChoiceEnum) PatternFlowRSVPPathSenderTemplateLspTunnelIpv4LspId + // HasChoice checks if Choice has been set in PatternFlowRSVPPathSenderTemplateLspTunnelIpv4LspId HasChoice() bool - // ColorSubtype returns BgpExtendedCommunityTransitiveOpaqueTypeColor, set in BgpExtendedCommunityTransitiveOpaqueType. - // BgpExtendedCommunityTransitiveOpaqueTypeColor is the Color Community contains locally administrator defined 'color' value which is used in conjunction with Encapsulation attribute to decide whether a data packet can be transmitted on a certain tunnel or not. It is defined in RFC9012 and sent with sub-type as 0x0b. - ColorSubtype() BgpExtendedCommunityTransitiveOpaqueTypeColor - // SetColorSubtype assigns BgpExtendedCommunityTransitiveOpaqueTypeColor provided by user to BgpExtendedCommunityTransitiveOpaqueType. - // BgpExtendedCommunityTransitiveOpaqueTypeColor is the Color Community contains locally administrator defined 'color' value which is used in conjunction with Encapsulation attribute to decide whether a data packet can be transmitted on a certain tunnel or not. It is defined in RFC9012 and sent with sub-type as 0x0b. - SetColorSubtype(value BgpExtendedCommunityTransitiveOpaqueTypeColor) BgpExtendedCommunityTransitiveOpaqueType - // HasColorSubtype checks if ColorSubtype has been set in BgpExtendedCommunityTransitiveOpaqueType - HasColorSubtype() bool - // EncapsulationSubtype returns BgpExtendedCommunityTransitiveOpaqueTypeEncapsulation, set in BgpExtendedCommunityTransitiveOpaqueType. - // BgpExtendedCommunityTransitiveOpaqueTypeEncapsulation is this identifies the type of tunneling technology being signalled. It is defined in RFC9012 and sent with sub-type as 0x0c. - EncapsulationSubtype() BgpExtendedCommunityTransitiveOpaqueTypeEncapsulation - // SetEncapsulationSubtype assigns BgpExtendedCommunityTransitiveOpaqueTypeEncapsulation provided by user to BgpExtendedCommunityTransitiveOpaqueType. - // BgpExtendedCommunityTransitiveOpaqueTypeEncapsulation is this identifies the type of tunneling technology being signalled. It is defined in RFC9012 and sent with sub-type as 0x0c. - SetEncapsulationSubtype(value BgpExtendedCommunityTransitiveOpaqueTypeEncapsulation) BgpExtendedCommunityTransitiveOpaqueType - // HasEncapsulationSubtype checks if EncapsulationSubtype has been set in BgpExtendedCommunityTransitiveOpaqueType - HasEncapsulationSubtype() bool + // Value returns uint32, set in PatternFlowRSVPPathSenderTemplateLspTunnelIpv4LspId. + Value() uint32 + // SetValue assigns uint32 provided by user to PatternFlowRSVPPathSenderTemplateLspTunnelIpv4LspId + SetValue(value uint32) PatternFlowRSVPPathSenderTemplateLspTunnelIpv4LspId + // HasValue checks if Value has been set in PatternFlowRSVPPathSenderTemplateLspTunnelIpv4LspId + HasValue() bool + // Values returns []uint32, set in PatternFlowRSVPPathSenderTemplateLspTunnelIpv4LspId. + Values() []uint32 + // SetValues assigns []uint32 provided by user to PatternFlowRSVPPathSenderTemplateLspTunnelIpv4LspId + SetValues(value []uint32) PatternFlowRSVPPathSenderTemplateLspTunnelIpv4LspId + // Increment returns PatternFlowRSVPPathSenderTemplateLspTunnelIpv4LspIdCounter, set in PatternFlowRSVPPathSenderTemplateLspTunnelIpv4LspId. + // PatternFlowRSVPPathSenderTemplateLspTunnelIpv4LspIdCounter is integer counter pattern + Increment() PatternFlowRSVPPathSenderTemplateLspTunnelIpv4LspIdCounter + // SetIncrement assigns PatternFlowRSVPPathSenderTemplateLspTunnelIpv4LspIdCounter provided by user to PatternFlowRSVPPathSenderTemplateLspTunnelIpv4LspId. + // PatternFlowRSVPPathSenderTemplateLspTunnelIpv4LspIdCounter is integer counter pattern + SetIncrement(value PatternFlowRSVPPathSenderTemplateLspTunnelIpv4LspIdCounter) PatternFlowRSVPPathSenderTemplateLspTunnelIpv4LspId + // HasIncrement checks if Increment has been set in PatternFlowRSVPPathSenderTemplateLspTunnelIpv4LspId + HasIncrement() bool + // Decrement returns PatternFlowRSVPPathSenderTemplateLspTunnelIpv4LspIdCounter, set in PatternFlowRSVPPathSenderTemplateLspTunnelIpv4LspId. + // PatternFlowRSVPPathSenderTemplateLspTunnelIpv4LspIdCounter is integer counter pattern + Decrement() PatternFlowRSVPPathSenderTemplateLspTunnelIpv4LspIdCounter + // SetDecrement assigns PatternFlowRSVPPathSenderTemplateLspTunnelIpv4LspIdCounter provided by user to PatternFlowRSVPPathSenderTemplateLspTunnelIpv4LspId. + // PatternFlowRSVPPathSenderTemplateLspTunnelIpv4LspIdCounter is integer counter pattern + SetDecrement(value PatternFlowRSVPPathSenderTemplateLspTunnelIpv4LspIdCounter) PatternFlowRSVPPathSenderTemplateLspTunnelIpv4LspId + // HasDecrement checks if Decrement has been set in PatternFlowRSVPPathSenderTemplateLspTunnelIpv4LspId + HasDecrement() bool setNil() } -type BgpExtendedCommunityTransitiveOpaqueTypeChoiceEnum string +type PatternFlowRSVPPathSenderTemplateLspTunnelIpv4LspIdChoiceEnum string -// Enum of Choice on BgpExtendedCommunityTransitiveOpaqueType -var BgpExtendedCommunityTransitiveOpaqueTypeChoice = struct { - COLOR_SUBTYPE BgpExtendedCommunityTransitiveOpaqueTypeChoiceEnum - ENCAPSULATION_SUBTYPE BgpExtendedCommunityTransitiveOpaqueTypeChoiceEnum +// Enum of Choice on PatternFlowRSVPPathSenderTemplateLspTunnelIpv4LspId +var PatternFlowRSVPPathSenderTemplateLspTunnelIpv4LspIdChoice = struct { + VALUE PatternFlowRSVPPathSenderTemplateLspTunnelIpv4LspIdChoiceEnum + VALUES PatternFlowRSVPPathSenderTemplateLspTunnelIpv4LspIdChoiceEnum + INCREMENT PatternFlowRSVPPathSenderTemplateLspTunnelIpv4LspIdChoiceEnum + DECREMENT PatternFlowRSVPPathSenderTemplateLspTunnelIpv4LspIdChoiceEnum }{ - COLOR_SUBTYPE: BgpExtendedCommunityTransitiveOpaqueTypeChoiceEnum("color_subtype"), - ENCAPSULATION_SUBTYPE: BgpExtendedCommunityTransitiveOpaqueTypeChoiceEnum("encapsulation_subtype"), + VALUE: PatternFlowRSVPPathSenderTemplateLspTunnelIpv4LspIdChoiceEnum("value"), + VALUES: PatternFlowRSVPPathSenderTemplateLspTunnelIpv4LspIdChoiceEnum("values"), + INCREMENT: PatternFlowRSVPPathSenderTemplateLspTunnelIpv4LspIdChoiceEnum("increment"), + DECREMENT: PatternFlowRSVPPathSenderTemplateLspTunnelIpv4LspIdChoiceEnum("decrement"), } -func (obj *bgpExtendedCommunityTransitiveOpaqueType) Choice() BgpExtendedCommunityTransitiveOpaqueTypeChoiceEnum { - return BgpExtendedCommunityTransitiveOpaqueTypeChoiceEnum(obj.obj.Choice.Enum().String()) +func (obj *patternFlowRSVPPathSenderTemplateLspTunnelIpv4LspId) Choice() PatternFlowRSVPPathSenderTemplateLspTunnelIpv4LspIdChoiceEnum { + return PatternFlowRSVPPathSenderTemplateLspTunnelIpv4LspIdChoiceEnum(obj.obj.Choice.Enum().String()) } // description is TBD // Choice returns a string -func (obj *bgpExtendedCommunityTransitiveOpaqueType) HasChoice() bool { +func (obj *patternFlowRSVPPathSenderTemplateLspTunnelIpv4LspId) HasChoice() bool { return obj.obj.Choice != nil } -func (obj *bgpExtendedCommunityTransitiveOpaqueType) SetChoice(value BgpExtendedCommunityTransitiveOpaqueTypeChoiceEnum) BgpExtendedCommunityTransitiveOpaqueType { - intValue, ok := otg.BgpExtendedCommunityTransitiveOpaqueType_Choice_Enum_value[string(value)] +func (obj *patternFlowRSVPPathSenderTemplateLspTunnelIpv4LspId) SetChoice(value PatternFlowRSVPPathSenderTemplateLspTunnelIpv4LspIdChoiceEnum) PatternFlowRSVPPathSenderTemplateLspTunnelIpv4LspId { + intValue, ok := otg.PatternFlowRSVPPathSenderTemplateLspTunnelIpv4LspId_Choice_Enum_value[string(value)] if !ok { obj.validationErrors = append(obj.validationErrors, fmt.Sprintf( - "%s is not a valid choice on BgpExtendedCommunityTransitiveOpaqueTypeChoiceEnum", string(value))) + "%s is not a valid choice on PatternFlowRSVPPathSenderTemplateLspTunnelIpv4LspIdChoiceEnum", string(value))) return obj } - enumValue := otg.BgpExtendedCommunityTransitiveOpaqueType_Choice_Enum(intValue) + enumValue := otg.PatternFlowRSVPPathSenderTemplateLspTunnelIpv4LspId_Choice_Enum(intValue) obj.obj.Choice = &enumValue - obj.obj.EncapsulationSubtype = nil - obj.encapsulationSubtypeHolder = nil - obj.obj.ColorSubtype = nil - obj.colorSubtypeHolder = nil + obj.obj.Decrement = nil + obj.decrementHolder = nil + obj.obj.Increment = nil + obj.incrementHolder = nil + obj.obj.Values = nil + obj.obj.Value = nil - if value == BgpExtendedCommunityTransitiveOpaqueTypeChoice.COLOR_SUBTYPE { - obj.obj.ColorSubtype = NewBgpExtendedCommunityTransitiveOpaqueTypeColor().Msg() + if value == PatternFlowRSVPPathSenderTemplateLspTunnelIpv4LspIdChoice.VALUE { + defaultValue := uint32(0) + obj.obj.Value = &defaultValue } - if value == BgpExtendedCommunityTransitiveOpaqueTypeChoice.ENCAPSULATION_SUBTYPE { - obj.obj.EncapsulationSubtype = NewBgpExtendedCommunityTransitiveOpaqueTypeEncapsulation().Msg() + if value == PatternFlowRSVPPathSenderTemplateLspTunnelIpv4LspIdChoice.VALUES { + defaultValue := []uint32{0} + obj.obj.Values = defaultValue + } + + if value == PatternFlowRSVPPathSenderTemplateLspTunnelIpv4LspIdChoice.INCREMENT { + obj.obj.Increment = NewPatternFlowRSVPPathSenderTemplateLspTunnelIpv4LspIdCounter().Msg() + } + + if value == PatternFlowRSVPPathSenderTemplateLspTunnelIpv4LspIdChoice.DECREMENT { + obj.obj.Decrement = NewPatternFlowRSVPPathSenderTemplateLspTunnelIpv4LspIdCounter().Msg() } return obj } // description is TBD -// ColorSubtype returns a BgpExtendedCommunityTransitiveOpaqueTypeColor -func (obj *bgpExtendedCommunityTransitiveOpaqueType) ColorSubtype() BgpExtendedCommunityTransitiveOpaqueTypeColor { - if obj.obj.ColorSubtype == nil { - obj.SetChoice(BgpExtendedCommunityTransitiveOpaqueTypeChoice.COLOR_SUBTYPE) +// Value returns a uint32 +func (obj *patternFlowRSVPPathSenderTemplateLspTunnelIpv4LspId) Value() uint32 { + + if obj.obj.Value == nil { + obj.SetChoice(PatternFlowRSVPPathSenderTemplateLspTunnelIpv4LspIdChoice.VALUE) } - if obj.colorSubtypeHolder == nil { - obj.colorSubtypeHolder = &bgpExtendedCommunityTransitiveOpaqueTypeColor{obj: obj.obj.ColorSubtype} + + return *obj.obj.Value + +} + +// description is TBD +// Value returns a uint32 +func (obj *patternFlowRSVPPathSenderTemplateLspTunnelIpv4LspId) HasValue() bool { + return obj.obj.Value != nil +} + +// description is TBD +// SetValue sets the uint32 value in the PatternFlowRSVPPathSenderTemplateLspTunnelIpv4LspId object +func (obj *patternFlowRSVPPathSenderTemplateLspTunnelIpv4LspId) SetValue(value uint32) PatternFlowRSVPPathSenderTemplateLspTunnelIpv4LspId { + obj.SetChoice(PatternFlowRSVPPathSenderTemplateLspTunnelIpv4LspIdChoice.VALUE) + obj.obj.Value = &value + return obj +} + +// description is TBD +// Values returns a []uint32 +func (obj *patternFlowRSVPPathSenderTemplateLspTunnelIpv4LspId) Values() []uint32 { + if obj.obj.Values == nil { + obj.SetValues([]uint32{0}) } - return obj.colorSubtypeHolder + return obj.obj.Values } // description is TBD -// ColorSubtype returns a BgpExtendedCommunityTransitiveOpaqueTypeColor -func (obj *bgpExtendedCommunityTransitiveOpaqueType) HasColorSubtype() bool { - return obj.obj.ColorSubtype != nil +// SetValues sets the []uint32 value in the PatternFlowRSVPPathSenderTemplateLspTunnelIpv4LspId object +func (obj *patternFlowRSVPPathSenderTemplateLspTunnelIpv4LspId) SetValues(value []uint32) PatternFlowRSVPPathSenderTemplateLspTunnelIpv4LspId { + obj.SetChoice(PatternFlowRSVPPathSenderTemplateLspTunnelIpv4LspIdChoice.VALUES) + if obj.obj.Values == nil { + obj.obj.Values = make([]uint32, 0) + } + obj.obj.Values = value + + return obj } // description is TBD -// SetColorSubtype sets the BgpExtendedCommunityTransitiveOpaqueTypeColor value in the BgpExtendedCommunityTransitiveOpaqueType object -func (obj *bgpExtendedCommunityTransitiveOpaqueType) SetColorSubtype(value BgpExtendedCommunityTransitiveOpaqueTypeColor) BgpExtendedCommunityTransitiveOpaqueType { - obj.SetChoice(BgpExtendedCommunityTransitiveOpaqueTypeChoice.COLOR_SUBTYPE) - obj.colorSubtypeHolder = nil - obj.obj.ColorSubtype = value.Msg() +// Increment returns a PatternFlowRSVPPathSenderTemplateLspTunnelIpv4LspIdCounter +func (obj *patternFlowRSVPPathSenderTemplateLspTunnelIpv4LspId) Increment() PatternFlowRSVPPathSenderTemplateLspTunnelIpv4LspIdCounter { + if obj.obj.Increment == nil { + obj.SetChoice(PatternFlowRSVPPathSenderTemplateLspTunnelIpv4LspIdChoice.INCREMENT) + } + if obj.incrementHolder == nil { + obj.incrementHolder = &patternFlowRSVPPathSenderTemplateLspTunnelIpv4LspIdCounter{obj: obj.obj.Increment} + } + return obj.incrementHolder +} + +// description is TBD +// Increment returns a PatternFlowRSVPPathSenderTemplateLspTunnelIpv4LspIdCounter +func (obj *patternFlowRSVPPathSenderTemplateLspTunnelIpv4LspId) HasIncrement() bool { + return obj.obj.Increment != nil +} + +// description is TBD +// SetIncrement sets the PatternFlowRSVPPathSenderTemplateLspTunnelIpv4LspIdCounter value in the PatternFlowRSVPPathSenderTemplateLspTunnelIpv4LspId object +func (obj *patternFlowRSVPPathSenderTemplateLspTunnelIpv4LspId) SetIncrement(value PatternFlowRSVPPathSenderTemplateLspTunnelIpv4LspIdCounter) PatternFlowRSVPPathSenderTemplateLspTunnelIpv4LspId { + obj.SetChoice(PatternFlowRSVPPathSenderTemplateLspTunnelIpv4LspIdChoice.INCREMENT) + obj.incrementHolder = nil + obj.obj.Increment = value.Msg() return obj } // description is TBD -// EncapsulationSubtype returns a BgpExtendedCommunityTransitiveOpaqueTypeEncapsulation -func (obj *bgpExtendedCommunityTransitiveOpaqueType) EncapsulationSubtype() BgpExtendedCommunityTransitiveOpaqueTypeEncapsulation { - if obj.obj.EncapsulationSubtype == nil { - obj.SetChoice(BgpExtendedCommunityTransitiveOpaqueTypeChoice.ENCAPSULATION_SUBTYPE) +// Decrement returns a PatternFlowRSVPPathSenderTemplateLspTunnelIpv4LspIdCounter +func (obj *patternFlowRSVPPathSenderTemplateLspTunnelIpv4LspId) Decrement() PatternFlowRSVPPathSenderTemplateLspTunnelIpv4LspIdCounter { + if obj.obj.Decrement == nil { + obj.SetChoice(PatternFlowRSVPPathSenderTemplateLspTunnelIpv4LspIdChoice.DECREMENT) } - if obj.encapsulationSubtypeHolder == nil { - obj.encapsulationSubtypeHolder = &bgpExtendedCommunityTransitiveOpaqueTypeEncapsulation{obj: obj.obj.EncapsulationSubtype} + if obj.decrementHolder == nil { + obj.decrementHolder = &patternFlowRSVPPathSenderTemplateLspTunnelIpv4LspIdCounter{obj: obj.obj.Decrement} } - return obj.encapsulationSubtypeHolder + return obj.decrementHolder } // description is TBD -// EncapsulationSubtype returns a BgpExtendedCommunityTransitiveOpaqueTypeEncapsulation -func (obj *bgpExtendedCommunityTransitiveOpaqueType) HasEncapsulationSubtype() bool { - return obj.obj.EncapsulationSubtype != nil +// Decrement returns a PatternFlowRSVPPathSenderTemplateLspTunnelIpv4LspIdCounter +func (obj *patternFlowRSVPPathSenderTemplateLspTunnelIpv4LspId) HasDecrement() bool { + return obj.obj.Decrement != nil } // description is TBD -// SetEncapsulationSubtype sets the BgpExtendedCommunityTransitiveOpaqueTypeEncapsulation value in the BgpExtendedCommunityTransitiveOpaqueType object -func (obj *bgpExtendedCommunityTransitiveOpaqueType) SetEncapsulationSubtype(value BgpExtendedCommunityTransitiveOpaqueTypeEncapsulation) BgpExtendedCommunityTransitiveOpaqueType { - obj.SetChoice(BgpExtendedCommunityTransitiveOpaqueTypeChoice.ENCAPSULATION_SUBTYPE) - obj.encapsulationSubtypeHolder = nil - obj.obj.EncapsulationSubtype = value.Msg() +// SetDecrement sets the PatternFlowRSVPPathSenderTemplateLspTunnelIpv4LspIdCounter value in the PatternFlowRSVPPathSenderTemplateLspTunnelIpv4LspId object +func (obj *patternFlowRSVPPathSenderTemplateLspTunnelIpv4LspId) SetDecrement(value PatternFlowRSVPPathSenderTemplateLspTunnelIpv4LspIdCounter) PatternFlowRSVPPathSenderTemplateLspTunnelIpv4LspId { + obj.SetChoice(PatternFlowRSVPPathSenderTemplateLspTunnelIpv4LspIdChoice.DECREMENT) + obj.decrementHolder = nil + obj.obj.Decrement = value.Msg() return obj } -func (obj *bgpExtendedCommunityTransitiveOpaqueType) validateObj(vObj *validation, set_default bool) { +func (obj *patternFlowRSVPPathSenderTemplateLspTunnelIpv4LspId) validateObj(vObj *validation, set_default bool) { if set_default { obj.setDefault() } - if obj.obj.ColorSubtype != nil { + if obj.obj.Value != nil { + + if *obj.obj.Value > 65535 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("0 <= PatternFlowRSVPPathSenderTemplateLspTunnelIpv4LspId.Value <= 65535 but Got %d", *obj.obj.Value)) + } - obj.ColorSubtype().validateObj(vObj, set_default) } - if obj.obj.EncapsulationSubtype != nil { + if obj.obj.Values != nil { - obj.EncapsulationSubtype().validateObj(vObj, set_default) + for _, item := range obj.obj.Values { + if item > 65535 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("min(uint32) <= PatternFlowRSVPPathSenderTemplateLspTunnelIpv4LspId.Values <= 65535 but Got %d", item)) + } + + } + + } + + if obj.obj.Increment != nil { + + obj.Increment().validateObj(vObj, set_default) + } + + if obj.obj.Decrement != nil { + + obj.Decrement().validateObj(vObj, set_default) } } -func (obj *bgpExtendedCommunityTransitiveOpaqueType) setDefault() { +func (obj *patternFlowRSVPPathSenderTemplateLspTunnelIpv4LspId) setDefault() { if obj.obj.Choice == nil { - obj.SetChoice(BgpExtendedCommunityTransitiveOpaqueTypeChoice.COLOR_SUBTYPE) + obj.SetChoice(PatternFlowRSVPPathSenderTemplateLspTunnelIpv4LspIdChoice.VALUE) } } -// ***** BgpExtendedCommunityTransitiveEvpnType ***** -type bgpExtendedCommunityTransitiveEvpnType struct { +// ***** PatternFlowRSVPPathSenderTspecIntServVersion ***** +type patternFlowRSVPPathSenderTspecIntServVersion struct { validation - obj *otg.BgpExtendedCommunityTransitiveEvpnType - routerMacSubtypeHolder BgpExtendedCommunityTransitiveEvpnTypeRouterMac + obj *otg.PatternFlowRSVPPathSenderTspecIntServVersion + incrementHolder PatternFlowRSVPPathSenderTspecIntServVersionCounter + decrementHolder PatternFlowRSVPPathSenderTspecIntServVersionCounter } -func NewBgpExtendedCommunityTransitiveEvpnType() BgpExtendedCommunityTransitiveEvpnType { - obj := bgpExtendedCommunityTransitiveEvpnType{obj: &otg.BgpExtendedCommunityTransitiveEvpnType{}} +func NewPatternFlowRSVPPathSenderTspecIntServVersion() PatternFlowRSVPPathSenderTspecIntServVersion { + obj := patternFlowRSVPPathSenderTspecIntServVersion{obj: &otg.PatternFlowRSVPPathSenderTspecIntServVersion{}} obj.setDefault() return &obj } -func (obj *bgpExtendedCommunityTransitiveEvpnType) Msg() *otg.BgpExtendedCommunityTransitiveEvpnType { +func (obj *patternFlowRSVPPathSenderTspecIntServVersion) Msg() *otg.PatternFlowRSVPPathSenderTspecIntServVersion { return obj.obj } -func (obj *bgpExtendedCommunityTransitiveEvpnType) SetMsg(msg *otg.BgpExtendedCommunityTransitiveEvpnType) BgpExtendedCommunityTransitiveEvpnType { +func (obj *patternFlowRSVPPathSenderTspecIntServVersion) SetMsg(msg *otg.PatternFlowRSVPPathSenderTspecIntServVersion) PatternFlowRSVPPathSenderTspecIntServVersion { obj.setNil() proto.Merge(obj.obj, msg) return obj } -func (obj *bgpExtendedCommunityTransitiveEvpnType) ToProto() (*otg.BgpExtendedCommunityTransitiveEvpnType, error) { +func (obj *patternFlowRSVPPathSenderTspecIntServVersion) ToProto() (*otg.PatternFlowRSVPPathSenderTspecIntServVersion, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -300364,7 +346402,7 @@ func (obj *bgpExtendedCommunityTransitiveEvpnType) ToProto() (*otg.BgpExtendedCo return obj.Msg(), nil } -func (obj *bgpExtendedCommunityTransitiveEvpnType) FromProto(msg *otg.BgpExtendedCommunityTransitiveEvpnType) (BgpExtendedCommunityTransitiveEvpnType, error) { +func (obj *patternFlowRSVPPathSenderTspecIntServVersion) FromProto(msg *otg.PatternFlowRSVPPathSenderTspecIntServVersion) (PatternFlowRSVPPathSenderTspecIntServVersion, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -300373,7 +346411,7 @@ func (obj *bgpExtendedCommunityTransitiveEvpnType) FromProto(msg *otg.BgpExtende return newObj, nil } -func (obj *bgpExtendedCommunityTransitiveEvpnType) ToPbText() (string, error) { +func (obj *patternFlowRSVPPathSenderTspecIntServVersion) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -300385,7 +346423,7 @@ func (obj *bgpExtendedCommunityTransitiveEvpnType) ToPbText() (string, error) { return string(protoMarshal), nil } -func (obj *bgpExtendedCommunityTransitiveEvpnType) FromPbText(value string) error { +func (obj *patternFlowRSVPPathSenderTspecIntServVersion) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj @@ -300398,7 +346436,7 @@ func (obj *bgpExtendedCommunityTransitiveEvpnType) FromPbText(value string) erro return retObj } -func (obj *bgpExtendedCommunityTransitiveEvpnType) ToYaml() (string, error) { +func (obj *patternFlowRSVPPathSenderTspecIntServVersion) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -300419,7 +346457,7 @@ func (obj *bgpExtendedCommunityTransitiveEvpnType) ToYaml() (string, error) { return string(data), nil } -func (obj *bgpExtendedCommunityTransitiveEvpnType) FromYaml(value string) error { +func (obj *patternFlowRSVPPathSenderTspecIntServVersion) FromYaml(value string) error { if value == "" { value = "{}" } @@ -300444,7 +346482,7 @@ func (obj *bgpExtendedCommunityTransitiveEvpnType) FromYaml(value string) error return nil } -func (obj *bgpExtendedCommunityTransitiveEvpnType) ToJson() (string, error) { +func (obj *patternFlowRSVPPathSenderTspecIntServVersion) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -300462,7 +346500,7 @@ func (obj *bgpExtendedCommunityTransitiveEvpnType) ToJson() (string, error) { return string(data), nil } -func (obj *bgpExtendedCommunityTransitiveEvpnType) FromJson(value string) error { +func (obj *patternFlowRSVPPathSenderTspecIntServVersion) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -300483,19 +346521,19 @@ func (obj *bgpExtendedCommunityTransitiveEvpnType) FromJson(value string) error return nil } -func (obj *bgpExtendedCommunityTransitiveEvpnType) validateToAndFrom() error { +func (obj *patternFlowRSVPPathSenderTspecIntServVersion) validateToAndFrom() error { // emptyVars() obj.validateObj(&obj.validation, true) return obj.validationResult() } -func (obj *bgpExtendedCommunityTransitiveEvpnType) Validate() error { +func (obj *patternFlowRSVPPathSenderTspecIntServVersion) Validate() error { // emptyVars() obj.validateObj(&obj.validation, false) return obj.validationResult() } -func (obj *bgpExtendedCommunityTransitiveEvpnType) String() string { +func (obj *patternFlowRSVPPathSenderTspecIntServVersion) String() string { str, err := obj.ToYaml() if err != nil { return err.Error() @@ -300503,12 +346541,12 @@ func (obj *bgpExtendedCommunityTransitiveEvpnType) String() string { return str } -func (obj *bgpExtendedCommunityTransitiveEvpnType) Clone() (BgpExtendedCommunityTransitiveEvpnType, error) { +func (obj *patternFlowRSVPPathSenderTspecIntServVersion) Clone() (PatternFlowRSVPPathSenderTspecIntServVersion, error) { vErr := obj.Validate() if vErr != nil { return nil, vErr } - newObj := NewBgpExtendedCommunityTransitiveEvpnType() + newObj := NewPatternFlowRSVPPathSenderTspecIntServVersion() data, err := proto.Marshal(obj.Msg()) if err != nil { return nil, err @@ -300520,174 +346558,321 @@ func (obj *bgpExtendedCommunityTransitiveEvpnType) Clone() (BgpExtendedCommunity return newObj, nil } -func (obj *bgpExtendedCommunityTransitiveEvpnType) setNil() { - obj.routerMacSubtypeHolder = nil +func (obj *patternFlowRSVPPathSenderTspecIntServVersion) setNil() { + obj.incrementHolder = nil + obj.decrementHolder = nil obj.validationErrors = nil obj.warnings = nil obj.constraints = make(map[string]map[string]Constraints) } -// BgpExtendedCommunityTransitiveEvpnType is the Transitive EVPN Extended Community is sent as type 0x06 . -type BgpExtendedCommunityTransitiveEvpnType interface { +// PatternFlowRSVPPathSenderTspecIntServVersion is message format version number. +type PatternFlowRSVPPathSenderTspecIntServVersion interface { Validation - // Msg marshals BgpExtendedCommunityTransitiveEvpnType to protobuf object *otg.BgpExtendedCommunityTransitiveEvpnType + // Msg marshals PatternFlowRSVPPathSenderTspecIntServVersion to protobuf object *otg.PatternFlowRSVPPathSenderTspecIntServVersion // and doesn't set defaults - Msg() *otg.BgpExtendedCommunityTransitiveEvpnType - // SetMsg unmarshals BgpExtendedCommunityTransitiveEvpnType from protobuf object *otg.BgpExtendedCommunityTransitiveEvpnType + Msg() *otg.PatternFlowRSVPPathSenderTspecIntServVersion + // SetMsg unmarshals PatternFlowRSVPPathSenderTspecIntServVersion from protobuf object *otg.PatternFlowRSVPPathSenderTspecIntServVersion // and doesn't set defaults - SetMsg(*otg.BgpExtendedCommunityTransitiveEvpnType) BgpExtendedCommunityTransitiveEvpnType - // ToProto marshals BgpExtendedCommunityTransitiveEvpnType to protobuf object *otg.BgpExtendedCommunityTransitiveEvpnType - ToProto() (*otg.BgpExtendedCommunityTransitiveEvpnType, error) - // ToPbText marshals BgpExtendedCommunityTransitiveEvpnType to protobuf text + SetMsg(*otg.PatternFlowRSVPPathSenderTspecIntServVersion) PatternFlowRSVPPathSenderTspecIntServVersion + // ToProto marshals PatternFlowRSVPPathSenderTspecIntServVersion to protobuf object *otg.PatternFlowRSVPPathSenderTspecIntServVersion + ToProto() (*otg.PatternFlowRSVPPathSenderTspecIntServVersion, error) + // ToPbText marshals PatternFlowRSVPPathSenderTspecIntServVersion to protobuf text ToPbText() (string, error) - // ToYaml marshals BgpExtendedCommunityTransitiveEvpnType to YAML text + // ToYaml marshals PatternFlowRSVPPathSenderTspecIntServVersion to YAML text ToYaml() (string, error) - // ToJson marshals BgpExtendedCommunityTransitiveEvpnType to JSON text + // ToJson marshals PatternFlowRSVPPathSenderTspecIntServVersion to JSON text ToJson() (string, error) - // FromProto unmarshals BgpExtendedCommunityTransitiveEvpnType from protobuf object *otg.BgpExtendedCommunityTransitiveEvpnType - FromProto(msg *otg.BgpExtendedCommunityTransitiveEvpnType) (BgpExtendedCommunityTransitiveEvpnType, error) - // FromPbText unmarshals BgpExtendedCommunityTransitiveEvpnType from protobuf text + // FromProto unmarshals PatternFlowRSVPPathSenderTspecIntServVersion from protobuf object *otg.PatternFlowRSVPPathSenderTspecIntServVersion + FromProto(msg *otg.PatternFlowRSVPPathSenderTspecIntServVersion) (PatternFlowRSVPPathSenderTspecIntServVersion, error) + // FromPbText unmarshals PatternFlowRSVPPathSenderTspecIntServVersion from protobuf text FromPbText(value string) error - // FromYaml unmarshals BgpExtendedCommunityTransitiveEvpnType from YAML text + // FromYaml unmarshals PatternFlowRSVPPathSenderTspecIntServVersion from YAML text FromYaml(value string) error - // FromJson unmarshals BgpExtendedCommunityTransitiveEvpnType from JSON text + // FromJson unmarshals PatternFlowRSVPPathSenderTspecIntServVersion from JSON text FromJson(value string) error - // Validate validates BgpExtendedCommunityTransitiveEvpnType + // Validate validates PatternFlowRSVPPathSenderTspecIntServVersion Validate() error // A stringer function String() string // Clones the object - Clone() (BgpExtendedCommunityTransitiveEvpnType, error) + Clone() (PatternFlowRSVPPathSenderTspecIntServVersion, error) validateToAndFrom() error validateObj(vObj *validation, set_default bool) setDefault() - // Choice returns BgpExtendedCommunityTransitiveEvpnTypeChoiceEnum, set in BgpExtendedCommunityTransitiveEvpnType - Choice() BgpExtendedCommunityTransitiveEvpnTypeChoiceEnum - // SetChoice assigns BgpExtendedCommunityTransitiveEvpnTypeChoiceEnum provided by user to BgpExtendedCommunityTransitiveEvpnType - SetChoice(value BgpExtendedCommunityTransitiveEvpnTypeChoiceEnum) BgpExtendedCommunityTransitiveEvpnType - // HasChoice checks if Choice has been set in BgpExtendedCommunityTransitiveEvpnType + // Choice returns PatternFlowRSVPPathSenderTspecIntServVersionChoiceEnum, set in PatternFlowRSVPPathSenderTspecIntServVersion + Choice() PatternFlowRSVPPathSenderTspecIntServVersionChoiceEnum + // SetChoice assigns PatternFlowRSVPPathSenderTspecIntServVersionChoiceEnum provided by user to PatternFlowRSVPPathSenderTspecIntServVersion + SetChoice(value PatternFlowRSVPPathSenderTspecIntServVersionChoiceEnum) PatternFlowRSVPPathSenderTspecIntServVersion + // HasChoice checks if Choice has been set in PatternFlowRSVPPathSenderTspecIntServVersion HasChoice() bool - // RouterMacSubtype returns BgpExtendedCommunityTransitiveEvpnTypeRouterMac, set in BgpExtendedCommunityTransitiveEvpnType. - // BgpExtendedCommunityTransitiveEvpnTypeRouterMac is the Router MAC EVPN Community is defined in RFC9135 and normally sent only for EVPN Type-2 Routes . It is sent with sub-type 0x03. - RouterMacSubtype() BgpExtendedCommunityTransitiveEvpnTypeRouterMac - // SetRouterMacSubtype assigns BgpExtendedCommunityTransitiveEvpnTypeRouterMac provided by user to BgpExtendedCommunityTransitiveEvpnType. - // BgpExtendedCommunityTransitiveEvpnTypeRouterMac is the Router MAC EVPN Community is defined in RFC9135 and normally sent only for EVPN Type-2 Routes . It is sent with sub-type 0x03. - SetRouterMacSubtype(value BgpExtendedCommunityTransitiveEvpnTypeRouterMac) BgpExtendedCommunityTransitiveEvpnType - // HasRouterMacSubtype checks if RouterMacSubtype has been set in BgpExtendedCommunityTransitiveEvpnType - HasRouterMacSubtype() bool + // Value returns uint32, set in PatternFlowRSVPPathSenderTspecIntServVersion. + Value() uint32 + // SetValue assigns uint32 provided by user to PatternFlowRSVPPathSenderTspecIntServVersion + SetValue(value uint32) PatternFlowRSVPPathSenderTspecIntServVersion + // HasValue checks if Value has been set in PatternFlowRSVPPathSenderTspecIntServVersion + HasValue() bool + // Values returns []uint32, set in PatternFlowRSVPPathSenderTspecIntServVersion. + Values() []uint32 + // SetValues assigns []uint32 provided by user to PatternFlowRSVPPathSenderTspecIntServVersion + SetValues(value []uint32) PatternFlowRSVPPathSenderTspecIntServVersion + // Increment returns PatternFlowRSVPPathSenderTspecIntServVersionCounter, set in PatternFlowRSVPPathSenderTspecIntServVersion. + // PatternFlowRSVPPathSenderTspecIntServVersionCounter is integer counter pattern + Increment() PatternFlowRSVPPathSenderTspecIntServVersionCounter + // SetIncrement assigns PatternFlowRSVPPathSenderTspecIntServVersionCounter provided by user to PatternFlowRSVPPathSenderTspecIntServVersion. + // PatternFlowRSVPPathSenderTspecIntServVersionCounter is integer counter pattern + SetIncrement(value PatternFlowRSVPPathSenderTspecIntServVersionCounter) PatternFlowRSVPPathSenderTspecIntServVersion + // HasIncrement checks if Increment has been set in PatternFlowRSVPPathSenderTspecIntServVersion + HasIncrement() bool + // Decrement returns PatternFlowRSVPPathSenderTspecIntServVersionCounter, set in PatternFlowRSVPPathSenderTspecIntServVersion. + // PatternFlowRSVPPathSenderTspecIntServVersionCounter is integer counter pattern + Decrement() PatternFlowRSVPPathSenderTspecIntServVersionCounter + // SetDecrement assigns PatternFlowRSVPPathSenderTspecIntServVersionCounter provided by user to PatternFlowRSVPPathSenderTspecIntServVersion. + // PatternFlowRSVPPathSenderTspecIntServVersionCounter is integer counter pattern + SetDecrement(value PatternFlowRSVPPathSenderTspecIntServVersionCounter) PatternFlowRSVPPathSenderTspecIntServVersion + // HasDecrement checks if Decrement has been set in PatternFlowRSVPPathSenderTspecIntServVersion + HasDecrement() bool setNil() } -type BgpExtendedCommunityTransitiveEvpnTypeChoiceEnum string +type PatternFlowRSVPPathSenderTspecIntServVersionChoiceEnum string -// Enum of Choice on BgpExtendedCommunityTransitiveEvpnType -var BgpExtendedCommunityTransitiveEvpnTypeChoice = struct { - ROUTER_MAC_SUBTYPE BgpExtendedCommunityTransitiveEvpnTypeChoiceEnum +// Enum of Choice on PatternFlowRSVPPathSenderTspecIntServVersion +var PatternFlowRSVPPathSenderTspecIntServVersionChoice = struct { + VALUE PatternFlowRSVPPathSenderTspecIntServVersionChoiceEnum + VALUES PatternFlowRSVPPathSenderTspecIntServVersionChoiceEnum + INCREMENT PatternFlowRSVPPathSenderTspecIntServVersionChoiceEnum + DECREMENT PatternFlowRSVPPathSenderTspecIntServVersionChoiceEnum }{ - ROUTER_MAC_SUBTYPE: BgpExtendedCommunityTransitiveEvpnTypeChoiceEnum("router_mac_subtype"), + VALUE: PatternFlowRSVPPathSenderTspecIntServVersionChoiceEnum("value"), + VALUES: PatternFlowRSVPPathSenderTspecIntServVersionChoiceEnum("values"), + INCREMENT: PatternFlowRSVPPathSenderTspecIntServVersionChoiceEnum("increment"), + DECREMENT: PatternFlowRSVPPathSenderTspecIntServVersionChoiceEnum("decrement"), } -func (obj *bgpExtendedCommunityTransitiveEvpnType) Choice() BgpExtendedCommunityTransitiveEvpnTypeChoiceEnum { - return BgpExtendedCommunityTransitiveEvpnTypeChoiceEnum(obj.obj.Choice.Enum().String()) +func (obj *patternFlowRSVPPathSenderTspecIntServVersion) Choice() PatternFlowRSVPPathSenderTspecIntServVersionChoiceEnum { + return PatternFlowRSVPPathSenderTspecIntServVersionChoiceEnum(obj.obj.Choice.Enum().String()) } // description is TBD // Choice returns a string -func (obj *bgpExtendedCommunityTransitiveEvpnType) HasChoice() bool { +func (obj *patternFlowRSVPPathSenderTspecIntServVersion) HasChoice() bool { return obj.obj.Choice != nil } -func (obj *bgpExtendedCommunityTransitiveEvpnType) SetChoice(value BgpExtendedCommunityTransitiveEvpnTypeChoiceEnum) BgpExtendedCommunityTransitiveEvpnType { - intValue, ok := otg.BgpExtendedCommunityTransitiveEvpnType_Choice_Enum_value[string(value)] +func (obj *patternFlowRSVPPathSenderTspecIntServVersion) SetChoice(value PatternFlowRSVPPathSenderTspecIntServVersionChoiceEnum) PatternFlowRSVPPathSenderTspecIntServVersion { + intValue, ok := otg.PatternFlowRSVPPathSenderTspecIntServVersion_Choice_Enum_value[string(value)] if !ok { obj.validationErrors = append(obj.validationErrors, fmt.Sprintf( - "%s is not a valid choice on BgpExtendedCommunityTransitiveEvpnTypeChoiceEnum", string(value))) + "%s is not a valid choice on PatternFlowRSVPPathSenderTspecIntServVersionChoiceEnum", string(value))) return obj } - enumValue := otg.BgpExtendedCommunityTransitiveEvpnType_Choice_Enum(intValue) + enumValue := otg.PatternFlowRSVPPathSenderTspecIntServVersion_Choice_Enum(intValue) obj.obj.Choice = &enumValue - obj.obj.RouterMacSubtype = nil - obj.routerMacSubtypeHolder = nil + obj.obj.Decrement = nil + obj.decrementHolder = nil + obj.obj.Increment = nil + obj.incrementHolder = nil + obj.obj.Values = nil + obj.obj.Value = nil - if value == BgpExtendedCommunityTransitiveEvpnTypeChoice.ROUTER_MAC_SUBTYPE { - obj.obj.RouterMacSubtype = NewBgpExtendedCommunityTransitiveEvpnTypeRouterMac().Msg() + if value == PatternFlowRSVPPathSenderTspecIntServVersionChoice.VALUE { + defaultValue := uint32(0) + obj.obj.Value = &defaultValue + } + + if value == PatternFlowRSVPPathSenderTspecIntServVersionChoice.VALUES { + defaultValue := []uint32{0} + obj.obj.Values = defaultValue + } + + if value == PatternFlowRSVPPathSenderTspecIntServVersionChoice.INCREMENT { + obj.obj.Increment = NewPatternFlowRSVPPathSenderTspecIntServVersionCounter().Msg() + } + + if value == PatternFlowRSVPPathSenderTspecIntServVersionChoice.DECREMENT { + obj.obj.Decrement = NewPatternFlowRSVPPathSenderTspecIntServVersionCounter().Msg() } return obj } // description is TBD -// RouterMacSubtype returns a BgpExtendedCommunityTransitiveEvpnTypeRouterMac -func (obj *bgpExtendedCommunityTransitiveEvpnType) RouterMacSubtype() BgpExtendedCommunityTransitiveEvpnTypeRouterMac { - if obj.obj.RouterMacSubtype == nil { - obj.SetChoice(BgpExtendedCommunityTransitiveEvpnTypeChoice.ROUTER_MAC_SUBTYPE) +// Value returns a uint32 +func (obj *patternFlowRSVPPathSenderTspecIntServVersion) Value() uint32 { + + if obj.obj.Value == nil { + obj.SetChoice(PatternFlowRSVPPathSenderTspecIntServVersionChoice.VALUE) } - if obj.routerMacSubtypeHolder == nil { - obj.routerMacSubtypeHolder = &bgpExtendedCommunityTransitiveEvpnTypeRouterMac{obj: obj.obj.RouterMacSubtype} + + return *obj.obj.Value + +} + +// description is TBD +// Value returns a uint32 +func (obj *patternFlowRSVPPathSenderTspecIntServVersion) HasValue() bool { + return obj.obj.Value != nil +} + +// description is TBD +// SetValue sets the uint32 value in the PatternFlowRSVPPathSenderTspecIntServVersion object +func (obj *patternFlowRSVPPathSenderTspecIntServVersion) SetValue(value uint32) PatternFlowRSVPPathSenderTspecIntServVersion { + obj.SetChoice(PatternFlowRSVPPathSenderTspecIntServVersionChoice.VALUE) + obj.obj.Value = &value + return obj +} + +// description is TBD +// Values returns a []uint32 +func (obj *patternFlowRSVPPathSenderTspecIntServVersion) Values() []uint32 { + if obj.obj.Values == nil { + obj.SetValues([]uint32{0}) } - return obj.routerMacSubtypeHolder + return obj.obj.Values } // description is TBD -// RouterMacSubtype returns a BgpExtendedCommunityTransitiveEvpnTypeRouterMac -func (obj *bgpExtendedCommunityTransitiveEvpnType) HasRouterMacSubtype() bool { - return obj.obj.RouterMacSubtype != nil +// SetValues sets the []uint32 value in the PatternFlowRSVPPathSenderTspecIntServVersion object +func (obj *patternFlowRSVPPathSenderTspecIntServVersion) SetValues(value []uint32) PatternFlowRSVPPathSenderTspecIntServVersion { + obj.SetChoice(PatternFlowRSVPPathSenderTspecIntServVersionChoice.VALUES) + if obj.obj.Values == nil { + obj.obj.Values = make([]uint32, 0) + } + obj.obj.Values = value + + return obj } // description is TBD -// SetRouterMacSubtype sets the BgpExtendedCommunityTransitiveEvpnTypeRouterMac value in the BgpExtendedCommunityTransitiveEvpnType object -func (obj *bgpExtendedCommunityTransitiveEvpnType) SetRouterMacSubtype(value BgpExtendedCommunityTransitiveEvpnTypeRouterMac) BgpExtendedCommunityTransitiveEvpnType { - obj.SetChoice(BgpExtendedCommunityTransitiveEvpnTypeChoice.ROUTER_MAC_SUBTYPE) - obj.routerMacSubtypeHolder = nil - obj.obj.RouterMacSubtype = value.Msg() +// Increment returns a PatternFlowRSVPPathSenderTspecIntServVersionCounter +func (obj *patternFlowRSVPPathSenderTspecIntServVersion) Increment() PatternFlowRSVPPathSenderTspecIntServVersionCounter { + if obj.obj.Increment == nil { + obj.SetChoice(PatternFlowRSVPPathSenderTspecIntServVersionChoice.INCREMENT) + } + if obj.incrementHolder == nil { + obj.incrementHolder = &patternFlowRSVPPathSenderTspecIntServVersionCounter{obj: obj.obj.Increment} + } + return obj.incrementHolder +} + +// description is TBD +// Increment returns a PatternFlowRSVPPathSenderTspecIntServVersionCounter +func (obj *patternFlowRSVPPathSenderTspecIntServVersion) HasIncrement() bool { + return obj.obj.Increment != nil +} + +// description is TBD +// SetIncrement sets the PatternFlowRSVPPathSenderTspecIntServVersionCounter value in the PatternFlowRSVPPathSenderTspecIntServVersion object +func (obj *patternFlowRSVPPathSenderTspecIntServVersion) SetIncrement(value PatternFlowRSVPPathSenderTspecIntServVersionCounter) PatternFlowRSVPPathSenderTspecIntServVersion { + obj.SetChoice(PatternFlowRSVPPathSenderTspecIntServVersionChoice.INCREMENT) + obj.incrementHolder = nil + obj.obj.Increment = value.Msg() return obj } -func (obj *bgpExtendedCommunityTransitiveEvpnType) validateObj(vObj *validation, set_default bool) { +// description is TBD +// Decrement returns a PatternFlowRSVPPathSenderTspecIntServVersionCounter +func (obj *patternFlowRSVPPathSenderTspecIntServVersion) Decrement() PatternFlowRSVPPathSenderTspecIntServVersionCounter { + if obj.obj.Decrement == nil { + obj.SetChoice(PatternFlowRSVPPathSenderTspecIntServVersionChoice.DECREMENT) + } + if obj.decrementHolder == nil { + obj.decrementHolder = &patternFlowRSVPPathSenderTspecIntServVersionCounter{obj: obj.obj.Decrement} + } + return obj.decrementHolder +} + +// description is TBD +// Decrement returns a PatternFlowRSVPPathSenderTspecIntServVersionCounter +func (obj *patternFlowRSVPPathSenderTspecIntServVersion) HasDecrement() bool { + return obj.obj.Decrement != nil +} + +// description is TBD +// SetDecrement sets the PatternFlowRSVPPathSenderTspecIntServVersionCounter value in the PatternFlowRSVPPathSenderTspecIntServVersion object +func (obj *patternFlowRSVPPathSenderTspecIntServVersion) SetDecrement(value PatternFlowRSVPPathSenderTspecIntServVersionCounter) PatternFlowRSVPPathSenderTspecIntServVersion { + obj.SetChoice(PatternFlowRSVPPathSenderTspecIntServVersionChoice.DECREMENT) + obj.decrementHolder = nil + obj.obj.Decrement = value.Msg() + + return obj +} + +func (obj *patternFlowRSVPPathSenderTspecIntServVersion) validateObj(vObj *validation, set_default bool) { if set_default { obj.setDefault() } - if obj.obj.RouterMacSubtype != nil { + if obj.obj.Value != nil { - obj.RouterMacSubtype().validateObj(vObj, set_default) + if *obj.obj.Value > 15 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("0 <= PatternFlowRSVPPathSenderTspecIntServVersion.Value <= 15 but Got %d", *obj.obj.Value)) + } + + } + + if obj.obj.Values != nil { + + for _, item := range obj.obj.Values { + if item > 15 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("min(uint32) <= PatternFlowRSVPPathSenderTspecIntServVersion.Values <= 15 but Got %d", item)) + } + + } + + } + + if obj.obj.Increment != nil { + + obj.Increment().validateObj(vObj, set_default) + } + + if obj.obj.Decrement != nil { + + obj.Decrement().validateObj(vObj, set_default) } } -func (obj *bgpExtendedCommunityTransitiveEvpnType) setDefault() { +func (obj *patternFlowRSVPPathSenderTspecIntServVersion) setDefault() { if obj.obj.Choice == nil { - obj.SetChoice(BgpExtendedCommunityTransitiveEvpnTypeChoice.ROUTER_MAC_SUBTYPE) + obj.SetChoice(PatternFlowRSVPPathSenderTspecIntServVersionChoice.VALUE) } } -// ***** BgpExtendedCommunityNonTransitive2OctetAsType ***** -type bgpExtendedCommunityNonTransitive2OctetAsType struct { +// ***** PatternFlowRSVPPathSenderTspecIntServReserved1 ***** +type patternFlowRSVPPathSenderTspecIntServReserved1 struct { validation - obj *otg.BgpExtendedCommunityNonTransitive2OctetAsType - linkBandwidthSubtypeHolder BgpExtendedCommunityNonTransitive2OctetAsTypeLinkBandwidth + obj *otg.PatternFlowRSVPPathSenderTspecIntServReserved1 + incrementHolder PatternFlowRSVPPathSenderTspecIntServReserved1Counter + decrementHolder PatternFlowRSVPPathSenderTspecIntServReserved1Counter } -func NewBgpExtendedCommunityNonTransitive2OctetAsType() BgpExtendedCommunityNonTransitive2OctetAsType { - obj := bgpExtendedCommunityNonTransitive2OctetAsType{obj: &otg.BgpExtendedCommunityNonTransitive2OctetAsType{}} +func NewPatternFlowRSVPPathSenderTspecIntServReserved1() PatternFlowRSVPPathSenderTspecIntServReserved1 { + obj := patternFlowRSVPPathSenderTspecIntServReserved1{obj: &otg.PatternFlowRSVPPathSenderTspecIntServReserved1{}} obj.setDefault() return &obj } -func (obj *bgpExtendedCommunityNonTransitive2OctetAsType) Msg() *otg.BgpExtendedCommunityNonTransitive2OctetAsType { +func (obj *patternFlowRSVPPathSenderTspecIntServReserved1) Msg() *otg.PatternFlowRSVPPathSenderTspecIntServReserved1 { return obj.obj } -func (obj *bgpExtendedCommunityNonTransitive2OctetAsType) SetMsg(msg *otg.BgpExtendedCommunityNonTransitive2OctetAsType) BgpExtendedCommunityNonTransitive2OctetAsType { +func (obj *patternFlowRSVPPathSenderTspecIntServReserved1) SetMsg(msg *otg.PatternFlowRSVPPathSenderTspecIntServReserved1) PatternFlowRSVPPathSenderTspecIntServReserved1 { obj.setNil() proto.Merge(obj.obj, msg) return obj } -func (obj *bgpExtendedCommunityNonTransitive2OctetAsType) ToProto() (*otg.BgpExtendedCommunityNonTransitive2OctetAsType, error) { +func (obj *patternFlowRSVPPathSenderTspecIntServReserved1) ToProto() (*otg.PatternFlowRSVPPathSenderTspecIntServReserved1, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -300695,7 +346880,7 @@ func (obj *bgpExtendedCommunityNonTransitive2OctetAsType) ToProto() (*otg.BgpExt return obj.Msg(), nil } -func (obj *bgpExtendedCommunityNonTransitive2OctetAsType) FromProto(msg *otg.BgpExtendedCommunityNonTransitive2OctetAsType) (BgpExtendedCommunityNonTransitive2OctetAsType, error) { +func (obj *patternFlowRSVPPathSenderTspecIntServReserved1) FromProto(msg *otg.PatternFlowRSVPPathSenderTspecIntServReserved1) (PatternFlowRSVPPathSenderTspecIntServReserved1, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -300704,7 +346889,7 @@ func (obj *bgpExtendedCommunityNonTransitive2OctetAsType) FromProto(msg *otg.Bgp return newObj, nil } -func (obj *bgpExtendedCommunityNonTransitive2OctetAsType) ToPbText() (string, error) { +func (obj *patternFlowRSVPPathSenderTspecIntServReserved1) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -300716,7 +346901,7 @@ func (obj *bgpExtendedCommunityNonTransitive2OctetAsType) ToPbText() (string, er return string(protoMarshal), nil } -func (obj *bgpExtendedCommunityNonTransitive2OctetAsType) FromPbText(value string) error { +func (obj *patternFlowRSVPPathSenderTspecIntServReserved1) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj @@ -300729,7 +346914,7 @@ func (obj *bgpExtendedCommunityNonTransitive2OctetAsType) FromPbText(value strin return retObj } -func (obj *bgpExtendedCommunityNonTransitive2OctetAsType) ToYaml() (string, error) { +func (obj *patternFlowRSVPPathSenderTspecIntServReserved1) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -300750,7 +346935,7 @@ func (obj *bgpExtendedCommunityNonTransitive2OctetAsType) ToYaml() (string, erro return string(data), nil } -func (obj *bgpExtendedCommunityNonTransitive2OctetAsType) FromYaml(value string) error { +func (obj *patternFlowRSVPPathSenderTspecIntServReserved1) FromYaml(value string) error { if value == "" { value = "{}" } @@ -300775,7 +346960,7 @@ func (obj *bgpExtendedCommunityNonTransitive2OctetAsType) FromYaml(value string) return nil } -func (obj *bgpExtendedCommunityNonTransitive2OctetAsType) ToJson() (string, error) { +func (obj *patternFlowRSVPPathSenderTspecIntServReserved1) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -300793,7 +346978,7 @@ func (obj *bgpExtendedCommunityNonTransitive2OctetAsType) ToJson() (string, erro return string(data), nil } -func (obj *bgpExtendedCommunityNonTransitive2OctetAsType) FromJson(value string) error { +func (obj *patternFlowRSVPPathSenderTspecIntServReserved1) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -300814,19 +346999,19 @@ func (obj *bgpExtendedCommunityNonTransitive2OctetAsType) FromJson(value string) return nil } -func (obj *bgpExtendedCommunityNonTransitive2OctetAsType) validateToAndFrom() error { +func (obj *patternFlowRSVPPathSenderTspecIntServReserved1) validateToAndFrom() error { // emptyVars() obj.validateObj(&obj.validation, true) return obj.validationResult() } -func (obj *bgpExtendedCommunityNonTransitive2OctetAsType) Validate() error { +func (obj *patternFlowRSVPPathSenderTspecIntServReserved1) Validate() error { // emptyVars() obj.validateObj(&obj.validation, false) return obj.validationResult() } -func (obj *bgpExtendedCommunityNonTransitive2OctetAsType) String() string { +func (obj *patternFlowRSVPPathSenderTspecIntServReserved1) String() string { str, err := obj.ToYaml() if err != nil { return err.Error() @@ -300834,12 +347019,12 @@ func (obj *bgpExtendedCommunityNonTransitive2OctetAsType) String() string { return str } -func (obj *bgpExtendedCommunityNonTransitive2OctetAsType) Clone() (BgpExtendedCommunityNonTransitive2OctetAsType, error) { +func (obj *patternFlowRSVPPathSenderTspecIntServReserved1) Clone() (PatternFlowRSVPPathSenderTspecIntServReserved1, error) { vErr := obj.Validate() if vErr != nil { return nil, vErr } - newObj := NewBgpExtendedCommunityNonTransitive2OctetAsType() + newObj := NewPatternFlowRSVPPathSenderTspecIntServReserved1() data, err := proto.Marshal(obj.Msg()) if err != nil { return nil, err @@ -300851,173 +347036,321 @@ func (obj *bgpExtendedCommunityNonTransitive2OctetAsType) Clone() (BgpExtendedCo return newObj, nil } -func (obj *bgpExtendedCommunityNonTransitive2OctetAsType) setNil() { - obj.linkBandwidthSubtypeHolder = nil +func (obj *patternFlowRSVPPathSenderTspecIntServReserved1) setNil() { + obj.incrementHolder = nil + obj.decrementHolder = nil obj.validationErrors = nil obj.warnings = nil obj.constraints = make(map[string]map[string]Constraints) } -// BgpExtendedCommunityNonTransitive2OctetAsType is the Non-Transitive Two-Octet AS-Specific Extended Community is sent as type 0x40. -type BgpExtendedCommunityNonTransitive2OctetAsType interface { +// PatternFlowRSVPPathSenderTspecIntServReserved1 is reserved. +type PatternFlowRSVPPathSenderTspecIntServReserved1 interface { Validation - // Msg marshals BgpExtendedCommunityNonTransitive2OctetAsType to protobuf object *otg.BgpExtendedCommunityNonTransitive2OctetAsType + // Msg marshals PatternFlowRSVPPathSenderTspecIntServReserved1 to protobuf object *otg.PatternFlowRSVPPathSenderTspecIntServReserved1 // and doesn't set defaults - Msg() *otg.BgpExtendedCommunityNonTransitive2OctetAsType - // SetMsg unmarshals BgpExtendedCommunityNonTransitive2OctetAsType from protobuf object *otg.BgpExtendedCommunityNonTransitive2OctetAsType + Msg() *otg.PatternFlowRSVPPathSenderTspecIntServReserved1 + // SetMsg unmarshals PatternFlowRSVPPathSenderTspecIntServReserved1 from protobuf object *otg.PatternFlowRSVPPathSenderTspecIntServReserved1 // and doesn't set defaults - SetMsg(*otg.BgpExtendedCommunityNonTransitive2OctetAsType) BgpExtendedCommunityNonTransitive2OctetAsType - // ToProto marshals BgpExtendedCommunityNonTransitive2OctetAsType to protobuf object *otg.BgpExtendedCommunityNonTransitive2OctetAsType - ToProto() (*otg.BgpExtendedCommunityNonTransitive2OctetAsType, error) - // ToPbText marshals BgpExtendedCommunityNonTransitive2OctetAsType to protobuf text + SetMsg(*otg.PatternFlowRSVPPathSenderTspecIntServReserved1) PatternFlowRSVPPathSenderTspecIntServReserved1 + // ToProto marshals PatternFlowRSVPPathSenderTspecIntServReserved1 to protobuf object *otg.PatternFlowRSVPPathSenderTspecIntServReserved1 + ToProto() (*otg.PatternFlowRSVPPathSenderTspecIntServReserved1, error) + // ToPbText marshals PatternFlowRSVPPathSenderTspecIntServReserved1 to protobuf text ToPbText() (string, error) - // ToYaml marshals BgpExtendedCommunityNonTransitive2OctetAsType to YAML text + // ToYaml marshals PatternFlowRSVPPathSenderTspecIntServReserved1 to YAML text ToYaml() (string, error) - // ToJson marshals BgpExtendedCommunityNonTransitive2OctetAsType to JSON text + // ToJson marshals PatternFlowRSVPPathSenderTspecIntServReserved1 to JSON text ToJson() (string, error) - // FromProto unmarshals BgpExtendedCommunityNonTransitive2OctetAsType from protobuf object *otg.BgpExtendedCommunityNonTransitive2OctetAsType - FromProto(msg *otg.BgpExtendedCommunityNonTransitive2OctetAsType) (BgpExtendedCommunityNonTransitive2OctetAsType, error) - // FromPbText unmarshals BgpExtendedCommunityNonTransitive2OctetAsType from protobuf text + // FromProto unmarshals PatternFlowRSVPPathSenderTspecIntServReserved1 from protobuf object *otg.PatternFlowRSVPPathSenderTspecIntServReserved1 + FromProto(msg *otg.PatternFlowRSVPPathSenderTspecIntServReserved1) (PatternFlowRSVPPathSenderTspecIntServReserved1, error) + // FromPbText unmarshals PatternFlowRSVPPathSenderTspecIntServReserved1 from protobuf text FromPbText(value string) error - // FromYaml unmarshals BgpExtendedCommunityNonTransitive2OctetAsType from YAML text + // FromYaml unmarshals PatternFlowRSVPPathSenderTspecIntServReserved1 from YAML text FromYaml(value string) error - // FromJson unmarshals BgpExtendedCommunityNonTransitive2OctetAsType from JSON text + // FromJson unmarshals PatternFlowRSVPPathSenderTspecIntServReserved1 from JSON text FromJson(value string) error - // Validate validates BgpExtendedCommunityNonTransitive2OctetAsType + // Validate validates PatternFlowRSVPPathSenderTspecIntServReserved1 Validate() error // A stringer function String() string // Clones the object - Clone() (BgpExtendedCommunityNonTransitive2OctetAsType, error) + Clone() (PatternFlowRSVPPathSenderTspecIntServReserved1, error) validateToAndFrom() error validateObj(vObj *validation, set_default bool) setDefault() - // Choice returns BgpExtendedCommunityNonTransitive2OctetAsTypeChoiceEnum, set in BgpExtendedCommunityNonTransitive2OctetAsType - Choice() BgpExtendedCommunityNonTransitive2OctetAsTypeChoiceEnum - // SetChoice assigns BgpExtendedCommunityNonTransitive2OctetAsTypeChoiceEnum provided by user to BgpExtendedCommunityNonTransitive2OctetAsType - SetChoice(value BgpExtendedCommunityNonTransitive2OctetAsTypeChoiceEnum) BgpExtendedCommunityNonTransitive2OctetAsType - // HasChoice checks if Choice has been set in BgpExtendedCommunityNonTransitive2OctetAsType + // Choice returns PatternFlowRSVPPathSenderTspecIntServReserved1ChoiceEnum, set in PatternFlowRSVPPathSenderTspecIntServReserved1 + Choice() PatternFlowRSVPPathSenderTspecIntServReserved1ChoiceEnum + // SetChoice assigns PatternFlowRSVPPathSenderTspecIntServReserved1ChoiceEnum provided by user to PatternFlowRSVPPathSenderTspecIntServReserved1 + SetChoice(value PatternFlowRSVPPathSenderTspecIntServReserved1ChoiceEnum) PatternFlowRSVPPathSenderTspecIntServReserved1 + // HasChoice checks if Choice has been set in PatternFlowRSVPPathSenderTspecIntServReserved1 HasChoice() bool - // LinkBandwidthSubtype returns BgpExtendedCommunityNonTransitive2OctetAsTypeLinkBandwidth, set in BgpExtendedCommunityNonTransitive2OctetAsType. - // BgpExtendedCommunityNonTransitive2OctetAsTypeLinkBandwidth is the Link Bandwidth Extended Community attribute is defined in draft-ietf-idr-link-bandwidth. It is sent with sub-type as 0x04. - LinkBandwidthSubtype() BgpExtendedCommunityNonTransitive2OctetAsTypeLinkBandwidth - // SetLinkBandwidthSubtype assigns BgpExtendedCommunityNonTransitive2OctetAsTypeLinkBandwidth provided by user to BgpExtendedCommunityNonTransitive2OctetAsType. - // BgpExtendedCommunityNonTransitive2OctetAsTypeLinkBandwidth is the Link Bandwidth Extended Community attribute is defined in draft-ietf-idr-link-bandwidth. It is sent with sub-type as 0x04. - SetLinkBandwidthSubtype(value BgpExtendedCommunityNonTransitive2OctetAsTypeLinkBandwidth) BgpExtendedCommunityNonTransitive2OctetAsType - // HasLinkBandwidthSubtype checks if LinkBandwidthSubtype has been set in BgpExtendedCommunityNonTransitive2OctetAsType - HasLinkBandwidthSubtype() bool + // Value returns uint32, set in PatternFlowRSVPPathSenderTspecIntServReserved1. + Value() uint32 + // SetValue assigns uint32 provided by user to PatternFlowRSVPPathSenderTspecIntServReserved1 + SetValue(value uint32) PatternFlowRSVPPathSenderTspecIntServReserved1 + // HasValue checks if Value has been set in PatternFlowRSVPPathSenderTspecIntServReserved1 + HasValue() bool + // Values returns []uint32, set in PatternFlowRSVPPathSenderTspecIntServReserved1. + Values() []uint32 + // SetValues assigns []uint32 provided by user to PatternFlowRSVPPathSenderTspecIntServReserved1 + SetValues(value []uint32) PatternFlowRSVPPathSenderTspecIntServReserved1 + // Increment returns PatternFlowRSVPPathSenderTspecIntServReserved1Counter, set in PatternFlowRSVPPathSenderTspecIntServReserved1. + // PatternFlowRSVPPathSenderTspecIntServReserved1Counter is integer counter pattern + Increment() PatternFlowRSVPPathSenderTspecIntServReserved1Counter + // SetIncrement assigns PatternFlowRSVPPathSenderTspecIntServReserved1Counter provided by user to PatternFlowRSVPPathSenderTspecIntServReserved1. + // PatternFlowRSVPPathSenderTspecIntServReserved1Counter is integer counter pattern + SetIncrement(value PatternFlowRSVPPathSenderTspecIntServReserved1Counter) PatternFlowRSVPPathSenderTspecIntServReserved1 + // HasIncrement checks if Increment has been set in PatternFlowRSVPPathSenderTspecIntServReserved1 + HasIncrement() bool + // Decrement returns PatternFlowRSVPPathSenderTspecIntServReserved1Counter, set in PatternFlowRSVPPathSenderTspecIntServReserved1. + // PatternFlowRSVPPathSenderTspecIntServReserved1Counter is integer counter pattern + Decrement() PatternFlowRSVPPathSenderTspecIntServReserved1Counter + // SetDecrement assigns PatternFlowRSVPPathSenderTspecIntServReserved1Counter provided by user to PatternFlowRSVPPathSenderTspecIntServReserved1. + // PatternFlowRSVPPathSenderTspecIntServReserved1Counter is integer counter pattern + SetDecrement(value PatternFlowRSVPPathSenderTspecIntServReserved1Counter) PatternFlowRSVPPathSenderTspecIntServReserved1 + // HasDecrement checks if Decrement has been set in PatternFlowRSVPPathSenderTspecIntServReserved1 + HasDecrement() bool setNil() } -type BgpExtendedCommunityNonTransitive2OctetAsTypeChoiceEnum string +type PatternFlowRSVPPathSenderTspecIntServReserved1ChoiceEnum string -// Enum of Choice on BgpExtendedCommunityNonTransitive2OctetAsType -var BgpExtendedCommunityNonTransitive2OctetAsTypeChoice = struct { - LINK_BANDWIDTH_SUBTYPE BgpExtendedCommunityNonTransitive2OctetAsTypeChoiceEnum +// Enum of Choice on PatternFlowRSVPPathSenderTspecIntServReserved1 +var PatternFlowRSVPPathSenderTspecIntServReserved1Choice = struct { + VALUE PatternFlowRSVPPathSenderTspecIntServReserved1ChoiceEnum + VALUES PatternFlowRSVPPathSenderTspecIntServReserved1ChoiceEnum + INCREMENT PatternFlowRSVPPathSenderTspecIntServReserved1ChoiceEnum + DECREMENT PatternFlowRSVPPathSenderTspecIntServReserved1ChoiceEnum }{ - LINK_BANDWIDTH_SUBTYPE: BgpExtendedCommunityNonTransitive2OctetAsTypeChoiceEnum("link_bandwidth_subtype"), + VALUE: PatternFlowRSVPPathSenderTspecIntServReserved1ChoiceEnum("value"), + VALUES: PatternFlowRSVPPathSenderTspecIntServReserved1ChoiceEnum("values"), + INCREMENT: PatternFlowRSVPPathSenderTspecIntServReserved1ChoiceEnum("increment"), + DECREMENT: PatternFlowRSVPPathSenderTspecIntServReserved1ChoiceEnum("decrement"), } -func (obj *bgpExtendedCommunityNonTransitive2OctetAsType) Choice() BgpExtendedCommunityNonTransitive2OctetAsTypeChoiceEnum { - return BgpExtendedCommunityNonTransitive2OctetAsTypeChoiceEnum(obj.obj.Choice.Enum().String()) +func (obj *patternFlowRSVPPathSenderTspecIntServReserved1) Choice() PatternFlowRSVPPathSenderTspecIntServReserved1ChoiceEnum { + return PatternFlowRSVPPathSenderTspecIntServReserved1ChoiceEnum(obj.obj.Choice.Enum().String()) } // description is TBD // Choice returns a string -func (obj *bgpExtendedCommunityNonTransitive2OctetAsType) HasChoice() bool { +func (obj *patternFlowRSVPPathSenderTspecIntServReserved1) HasChoice() bool { return obj.obj.Choice != nil } -func (obj *bgpExtendedCommunityNonTransitive2OctetAsType) SetChoice(value BgpExtendedCommunityNonTransitive2OctetAsTypeChoiceEnum) BgpExtendedCommunityNonTransitive2OctetAsType { - intValue, ok := otg.BgpExtendedCommunityNonTransitive2OctetAsType_Choice_Enum_value[string(value)] +func (obj *patternFlowRSVPPathSenderTspecIntServReserved1) SetChoice(value PatternFlowRSVPPathSenderTspecIntServReserved1ChoiceEnum) PatternFlowRSVPPathSenderTspecIntServReserved1 { + intValue, ok := otg.PatternFlowRSVPPathSenderTspecIntServReserved1_Choice_Enum_value[string(value)] if !ok { obj.validationErrors = append(obj.validationErrors, fmt.Sprintf( - "%s is not a valid choice on BgpExtendedCommunityNonTransitive2OctetAsTypeChoiceEnum", string(value))) + "%s is not a valid choice on PatternFlowRSVPPathSenderTspecIntServReserved1ChoiceEnum", string(value))) return obj } - enumValue := otg.BgpExtendedCommunityNonTransitive2OctetAsType_Choice_Enum(intValue) + enumValue := otg.PatternFlowRSVPPathSenderTspecIntServReserved1_Choice_Enum(intValue) obj.obj.Choice = &enumValue - obj.obj.LinkBandwidthSubtype = nil - obj.linkBandwidthSubtypeHolder = nil + obj.obj.Decrement = nil + obj.decrementHolder = nil + obj.obj.Increment = nil + obj.incrementHolder = nil + obj.obj.Values = nil + obj.obj.Value = nil - if value == BgpExtendedCommunityNonTransitive2OctetAsTypeChoice.LINK_BANDWIDTH_SUBTYPE { - obj.obj.LinkBandwidthSubtype = NewBgpExtendedCommunityNonTransitive2OctetAsTypeLinkBandwidth().Msg() + if value == PatternFlowRSVPPathSenderTspecIntServReserved1Choice.VALUE { + defaultValue := uint32(0) + obj.obj.Value = &defaultValue + } + + if value == PatternFlowRSVPPathSenderTspecIntServReserved1Choice.VALUES { + defaultValue := []uint32{0} + obj.obj.Values = defaultValue + } + + if value == PatternFlowRSVPPathSenderTspecIntServReserved1Choice.INCREMENT { + obj.obj.Increment = NewPatternFlowRSVPPathSenderTspecIntServReserved1Counter().Msg() + } + + if value == PatternFlowRSVPPathSenderTspecIntServReserved1Choice.DECREMENT { + obj.obj.Decrement = NewPatternFlowRSVPPathSenderTspecIntServReserved1Counter().Msg() } return obj } // description is TBD -// LinkBandwidthSubtype returns a BgpExtendedCommunityNonTransitive2OctetAsTypeLinkBandwidth -func (obj *bgpExtendedCommunityNonTransitive2OctetAsType) LinkBandwidthSubtype() BgpExtendedCommunityNonTransitive2OctetAsTypeLinkBandwidth { - if obj.obj.LinkBandwidthSubtype == nil { - obj.SetChoice(BgpExtendedCommunityNonTransitive2OctetAsTypeChoice.LINK_BANDWIDTH_SUBTYPE) +// Value returns a uint32 +func (obj *patternFlowRSVPPathSenderTspecIntServReserved1) Value() uint32 { + + if obj.obj.Value == nil { + obj.SetChoice(PatternFlowRSVPPathSenderTspecIntServReserved1Choice.VALUE) } - if obj.linkBandwidthSubtypeHolder == nil { - obj.linkBandwidthSubtypeHolder = &bgpExtendedCommunityNonTransitive2OctetAsTypeLinkBandwidth{obj: obj.obj.LinkBandwidthSubtype} + + return *obj.obj.Value + +} + +// description is TBD +// Value returns a uint32 +func (obj *patternFlowRSVPPathSenderTspecIntServReserved1) HasValue() bool { + return obj.obj.Value != nil +} + +// description is TBD +// SetValue sets the uint32 value in the PatternFlowRSVPPathSenderTspecIntServReserved1 object +func (obj *patternFlowRSVPPathSenderTspecIntServReserved1) SetValue(value uint32) PatternFlowRSVPPathSenderTspecIntServReserved1 { + obj.SetChoice(PatternFlowRSVPPathSenderTspecIntServReserved1Choice.VALUE) + obj.obj.Value = &value + return obj +} + +// description is TBD +// Values returns a []uint32 +func (obj *patternFlowRSVPPathSenderTspecIntServReserved1) Values() []uint32 { + if obj.obj.Values == nil { + obj.SetValues([]uint32{0}) } - return obj.linkBandwidthSubtypeHolder + return obj.obj.Values } // description is TBD -// LinkBandwidthSubtype returns a BgpExtendedCommunityNonTransitive2OctetAsTypeLinkBandwidth -func (obj *bgpExtendedCommunityNonTransitive2OctetAsType) HasLinkBandwidthSubtype() bool { - return obj.obj.LinkBandwidthSubtype != nil +// SetValues sets the []uint32 value in the PatternFlowRSVPPathSenderTspecIntServReserved1 object +func (obj *patternFlowRSVPPathSenderTspecIntServReserved1) SetValues(value []uint32) PatternFlowRSVPPathSenderTspecIntServReserved1 { + obj.SetChoice(PatternFlowRSVPPathSenderTspecIntServReserved1Choice.VALUES) + if obj.obj.Values == nil { + obj.obj.Values = make([]uint32, 0) + } + obj.obj.Values = value + + return obj } // description is TBD -// SetLinkBandwidthSubtype sets the BgpExtendedCommunityNonTransitive2OctetAsTypeLinkBandwidth value in the BgpExtendedCommunityNonTransitive2OctetAsType object -func (obj *bgpExtendedCommunityNonTransitive2OctetAsType) SetLinkBandwidthSubtype(value BgpExtendedCommunityNonTransitive2OctetAsTypeLinkBandwidth) BgpExtendedCommunityNonTransitive2OctetAsType { - obj.SetChoice(BgpExtendedCommunityNonTransitive2OctetAsTypeChoice.LINK_BANDWIDTH_SUBTYPE) - obj.linkBandwidthSubtypeHolder = nil - obj.obj.LinkBandwidthSubtype = value.Msg() +// Increment returns a PatternFlowRSVPPathSenderTspecIntServReserved1Counter +func (obj *patternFlowRSVPPathSenderTspecIntServReserved1) Increment() PatternFlowRSVPPathSenderTspecIntServReserved1Counter { + if obj.obj.Increment == nil { + obj.SetChoice(PatternFlowRSVPPathSenderTspecIntServReserved1Choice.INCREMENT) + } + if obj.incrementHolder == nil { + obj.incrementHolder = &patternFlowRSVPPathSenderTspecIntServReserved1Counter{obj: obj.obj.Increment} + } + return obj.incrementHolder +} + +// description is TBD +// Increment returns a PatternFlowRSVPPathSenderTspecIntServReserved1Counter +func (obj *patternFlowRSVPPathSenderTspecIntServReserved1) HasIncrement() bool { + return obj.obj.Increment != nil +} + +// description is TBD +// SetIncrement sets the PatternFlowRSVPPathSenderTspecIntServReserved1Counter value in the PatternFlowRSVPPathSenderTspecIntServReserved1 object +func (obj *patternFlowRSVPPathSenderTspecIntServReserved1) SetIncrement(value PatternFlowRSVPPathSenderTspecIntServReserved1Counter) PatternFlowRSVPPathSenderTspecIntServReserved1 { + obj.SetChoice(PatternFlowRSVPPathSenderTspecIntServReserved1Choice.INCREMENT) + obj.incrementHolder = nil + obj.obj.Increment = value.Msg() return obj } -func (obj *bgpExtendedCommunityNonTransitive2OctetAsType) validateObj(vObj *validation, set_default bool) { +// description is TBD +// Decrement returns a PatternFlowRSVPPathSenderTspecIntServReserved1Counter +func (obj *patternFlowRSVPPathSenderTspecIntServReserved1) Decrement() PatternFlowRSVPPathSenderTspecIntServReserved1Counter { + if obj.obj.Decrement == nil { + obj.SetChoice(PatternFlowRSVPPathSenderTspecIntServReserved1Choice.DECREMENT) + } + if obj.decrementHolder == nil { + obj.decrementHolder = &patternFlowRSVPPathSenderTspecIntServReserved1Counter{obj: obj.obj.Decrement} + } + return obj.decrementHolder +} + +// description is TBD +// Decrement returns a PatternFlowRSVPPathSenderTspecIntServReserved1Counter +func (obj *patternFlowRSVPPathSenderTspecIntServReserved1) HasDecrement() bool { + return obj.obj.Decrement != nil +} + +// description is TBD +// SetDecrement sets the PatternFlowRSVPPathSenderTspecIntServReserved1Counter value in the PatternFlowRSVPPathSenderTspecIntServReserved1 object +func (obj *patternFlowRSVPPathSenderTspecIntServReserved1) SetDecrement(value PatternFlowRSVPPathSenderTspecIntServReserved1Counter) PatternFlowRSVPPathSenderTspecIntServReserved1 { + obj.SetChoice(PatternFlowRSVPPathSenderTspecIntServReserved1Choice.DECREMENT) + obj.decrementHolder = nil + obj.obj.Decrement = value.Msg() + + return obj +} + +func (obj *patternFlowRSVPPathSenderTspecIntServReserved1) validateObj(vObj *validation, set_default bool) { if set_default { obj.setDefault() } - if obj.obj.LinkBandwidthSubtype != nil { + if obj.obj.Value != nil { - obj.LinkBandwidthSubtype().validateObj(vObj, set_default) + if *obj.obj.Value > 4095 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("0 <= PatternFlowRSVPPathSenderTspecIntServReserved1.Value <= 4095 but Got %d", *obj.obj.Value)) + } + + } + + if obj.obj.Values != nil { + + for _, item := range obj.obj.Values { + if item > 4095 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("min(uint32) <= PatternFlowRSVPPathSenderTspecIntServReserved1.Values <= 4095 but Got %d", item)) + } + + } + + } + + if obj.obj.Increment != nil { + + obj.Increment().validateObj(vObj, set_default) + } + + if obj.obj.Decrement != nil { + + obj.Decrement().validateObj(vObj, set_default) } } -func (obj *bgpExtendedCommunityNonTransitive2OctetAsType) setDefault() { +func (obj *patternFlowRSVPPathSenderTspecIntServReserved1) setDefault() { if obj.obj.Choice == nil { - obj.SetChoice(BgpExtendedCommunityNonTransitive2OctetAsTypeChoice.LINK_BANDWIDTH_SUBTYPE) + obj.SetChoice(PatternFlowRSVPPathSenderTspecIntServReserved1Choice.VALUE) } } -// ***** BgpExtendedCommunityCustomType ***** -type bgpExtendedCommunityCustomType struct { +// ***** PatternFlowRSVPPathSenderTspecIntServOverallLength ***** +type patternFlowRSVPPathSenderTspecIntServOverallLength struct { validation - obj *otg.BgpExtendedCommunityCustomType + obj *otg.PatternFlowRSVPPathSenderTspecIntServOverallLength + incrementHolder PatternFlowRSVPPathSenderTspecIntServOverallLengthCounter + decrementHolder PatternFlowRSVPPathSenderTspecIntServOverallLengthCounter } -func NewBgpExtendedCommunityCustomType() BgpExtendedCommunityCustomType { - obj := bgpExtendedCommunityCustomType{obj: &otg.BgpExtendedCommunityCustomType{}} +func NewPatternFlowRSVPPathSenderTspecIntServOverallLength() PatternFlowRSVPPathSenderTspecIntServOverallLength { + obj := patternFlowRSVPPathSenderTspecIntServOverallLength{obj: &otg.PatternFlowRSVPPathSenderTspecIntServOverallLength{}} obj.setDefault() return &obj } -func (obj *bgpExtendedCommunityCustomType) Msg() *otg.BgpExtendedCommunityCustomType { +func (obj *patternFlowRSVPPathSenderTspecIntServOverallLength) Msg() *otg.PatternFlowRSVPPathSenderTspecIntServOverallLength { return obj.obj } -func (obj *bgpExtendedCommunityCustomType) SetMsg(msg *otg.BgpExtendedCommunityCustomType) BgpExtendedCommunityCustomType { - +func (obj *patternFlowRSVPPathSenderTspecIntServOverallLength) SetMsg(msg *otg.PatternFlowRSVPPathSenderTspecIntServOverallLength) PatternFlowRSVPPathSenderTspecIntServOverallLength { + obj.setNil() proto.Merge(obj.obj, msg) return obj } -func (obj *bgpExtendedCommunityCustomType) ToProto() (*otg.BgpExtendedCommunityCustomType, error) { +func (obj *patternFlowRSVPPathSenderTspecIntServOverallLength) ToProto() (*otg.PatternFlowRSVPPathSenderTspecIntServOverallLength, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -301025,7 +347358,7 @@ func (obj *bgpExtendedCommunityCustomType) ToProto() (*otg.BgpExtendedCommunityC return obj.Msg(), nil } -func (obj *bgpExtendedCommunityCustomType) FromProto(msg *otg.BgpExtendedCommunityCustomType) (BgpExtendedCommunityCustomType, error) { +func (obj *patternFlowRSVPPathSenderTspecIntServOverallLength) FromProto(msg *otg.PatternFlowRSVPPathSenderTspecIntServOverallLength) (PatternFlowRSVPPathSenderTspecIntServOverallLength, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -301034,7 +347367,7 @@ func (obj *bgpExtendedCommunityCustomType) FromProto(msg *otg.BgpExtendedCommuni return newObj, nil } -func (obj *bgpExtendedCommunityCustomType) ToPbText() (string, error) { +func (obj *patternFlowRSVPPathSenderTspecIntServOverallLength) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -301046,12 +347379,12 @@ func (obj *bgpExtendedCommunityCustomType) ToPbText() (string, error) { return string(protoMarshal), nil } -func (obj *bgpExtendedCommunityCustomType) FromPbText(value string) error { +func (obj *patternFlowRSVPPathSenderTspecIntServOverallLength) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj } - + obj.setNil() vErr := obj.validateToAndFrom() if vErr != nil { return vErr @@ -301059,7 +347392,7 @@ func (obj *bgpExtendedCommunityCustomType) FromPbText(value string) error { return retObj } -func (obj *bgpExtendedCommunityCustomType) ToYaml() (string, error) { +func (obj *patternFlowRSVPPathSenderTspecIntServOverallLength) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -301080,7 +347413,7 @@ func (obj *bgpExtendedCommunityCustomType) ToYaml() (string, error) { return string(data), nil } -func (obj *bgpExtendedCommunityCustomType) FromYaml(value string) error { +func (obj *patternFlowRSVPPathSenderTspecIntServOverallLength) FromYaml(value string) error { if value == "" { value = "{}" } @@ -301097,7 +347430,7 @@ func (obj *bgpExtendedCommunityCustomType) FromYaml(value string) error { return fmt.Errorf("unmarshal error %s", strings.Replace( uError.Error(), "\u00a0", " ", -1)[7:]) } - + obj.setNil() vErr := obj.validateToAndFrom() if vErr != nil { return vErr @@ -301105,7 +347438,7 @@ func (obj *bgpExtendedCommunityCustomType) FromYaml(value string) error { return nil } -func (obj *bgpExtendedCommunityCustomType) ToJson() (string, error) { +func (obj *patternFlowRSVPPathSenderTspecIntServOverallLength) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -301123,7 +347456,7 @@ func (obj *bgpExtendedCommunityCustomType) ToJson() (string, error) { return string(data), nil } -func (obj *bgpExtendedCommunityCustomType) FromJson(value string) error { +func (obj *patternFlowRSVPPathSenderTspecIntServOverallLength) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -301136,7 +347469,7 @@ func (obj *bgpExtendedCommunityCustomType) FromJson(value string) error { return fmt.Errorf("unmarshal error %s", strings.Replace( uError.Error(), "\u00a0", " ", -1)[7:]) } - + obj.setNil() err := obj.validateToAndFrom() if err != nil { return err @@ -301144,19 +347477,19 @@ func (obj *bgpExtendedCommunityCustomType) FromJson(value string) error { return nil } -func (obj *bgpExtendedCommunityCustomType) validateToAndFrom() error { +func (obj *patternFlowRSVPPathSenderTspecIntServOverallLength) validateToAndFrom() error { // emptyVars() obj.validateObj(&obj.validation, true) return obj.validationResult() } -func (obj *bgpExtendedCommunityCustomType) Validate() error { +func (obj *patternFlowRSVPPathSenderTspecIntServOverallLength) Validate() error { // emptyVars() obj.validateObj(&obj.validation, false) return obj.validationResult() } -func (obj *bgpExtendedCommunityCustomType) String() string { +func (obj *patternFlowRSVPPathSenderTspecIntServOverallLength) String() string { str, err := obj.ToYaml() if err != nil { return err.Error() @@ -301164,12 +347497,12 @@ func (obj *bgpExtendedCommunityCustomType) String() string { return str } -func (obj *bgpExtendedCommunityCustomType) Clone() (BgpExtendedCommunityCustomType, error) { +func (obj *patternFlowRSVPPathSenderTspecIntServOverallLength) Clone() (PatternFlowRSVPPathSenderTspecIntServOverallLength, error) { vErr := obj.Validate() if vErr != nil { return nil, vErr } - newObj := NewBgpExtendedCommunityCustomType() + newObj := NewPatternFlowRSVPPathSenderTspecIntServOverallLength() data, err := proto.Marshal(obj.Msg()) if err != nil { return nil, err @@ -301181,205 +347514,321 @@ func (obj *bgpExtendedCommunityCustomType) Clone() (BgpExtendedCommunityCustomTy return newObj, nil } -// BgpExtendedCommunityCustomType is add a custom Extended Community with a combination of types , sub-types and values not explicitly specified above or not defined yet. -type BgpExtendedCommunityCustomType interface { +func (obj *patternFlowRSVPPathSenderTspecIntServOverallLength) setNil() { + obj.incrementHolder = nil + obj.decrementHolder = nil + obj.validationErrors = nil + obj.warnings = nil + obj.constraints = make(map[string]map[string]Constraints) +} + +// PatternFlowRSVPPathSenderTspecIntServOverallLength is overall length (7 words not including header). +type PatternFlowRSVPPathSenderTspecIntServOverallLength interface { Validation - // Msg marshals BgpExtendedCommunityCustomType to protobuf object *otg.BgpExtendedCommunityCustomType + // Msg marshals PatternFlowRSVPPathSenderTspecIntServOverallLength to protobuf object *otg.PatternFlowRSVPPathSenderTspecIntServOverallLength // and doesn't set defaults - Msg() *otg.BgpExtendedCommunityCustomType - // SetMsg unmarshals BgpExtendedCommunityCustomType from protobuf object *otg.BgpExtendedCommunityCustomType + Msg() *otg.PatternFlowRSVPPathSenderTspecIntServOverallLength + // SetMsg unmarshals PatternFlowRSVPPathSenderTspecIntServOverallLength from protobuf object *otg.PatternFlowRSVPPathSenderTspecIntServOverallLength // and doesn't set defaults - SetMsg(*otg.BgpExtendedCommunityCustomType) BgpExtendedCommunityCustomType - // ToProto marshals BgpExtendedCommunityCustomType to protobuf object *otg.BgpExtendedCommunityCustomType - ToProto() (*otg.BgpExtendedCommunityCustomType, error) - // ToPbText marshals BgpExtendedCommunityCustomType to protobuf text + SetMsg(*otg.PatternFlowRSVPPathSenderTspecIntServOverallLength) PatternFlowRSVPPathSenderTspecIntServOverallLength + // ToProto marshals PatternFlowRSVPPathSenderTspecIntServOverallLength to protobuf object *otg.PatternFlowRSVPPathSenderTspecIntServOverallLength + ToProto() (*otg.PatternFlowRSVPPathSenderTspecIntServOverallLength, error) + // ToPbText marshals PatternFlowRSVPPathSenderTspecIntServOverallLength to protobuf text ToPbText() (string, error) - // ToYaml marshals BgpExtendedCommunityCustomType to YAML text + // ToYaml marshals PatternFlowRSVPPathSenderTspecIntServOverallLength to YAML text ToYaml() (string, error) - // ToJson marshals BgpExtendedCommunityCustomType to JSON text + // ToJson marshals PatternFlowRSVPPathSenderTspecIntServOverallLength to JSON text ToJson() (string, error) - // FromProto unmarshals BgpExtendedCommunityCustomType from protobuf object *otg.BgpExtendedCommunityCustomType - FromProto(msg *otg.BgpExtendedCommunityCustomType) (BgpExtendedCommunityCustomType, error) - // FromPbText unmarshals BgpExtendedCommunityCustomType from protobuf text + // FromProto unmarshals PatternFlowRSVPPathSenderTspecIntServOverallLength from protobuf object *otg.PatternFlowRSVPPathSenderTspecIntServOverallLength + FromProto(msg *otg.PatternFlowRSVPPathSenderTspecIntServOverallLength) (PatternFlowRSVPPathSenderTspecIntServOverallLength, error) + // FromPbText unmarshals PatternFlowRSVPPathSenderTspecIntServOverallLength from protobuf text FromPbText(value string) error - // FromYaml unmarshals BgpExtendedCommunityCustomType from YAML text + // FromYaml unmarshals PatternFlowRSVPPathSenderTspecIntServOverallLength from YAML text FromYaml(value string) error - // FromJson unmarshals BgpExtendedCommunityCustomType from JSON text + // FromJson unmarshals PatternFlowRSVPPathSenderTspecIntServOverallLength from JSON text FromJson(value string) error - // Validate validates BgpExtendedCommunityCustomType + // Validate validates PatternFlowRSVPPathSenderTspecIntServOverallLength Validate() error // A stringer function String() string // Clones the object - Clone() (BgpExtendedCommunityCustomType, error) + Clone() (PatternFlowRSVPPathSenderTspecIntServOverallLength, error) validateToAndFrom() error validateObj(vObj *validation, set_default bool) setDefault() - // CommunityType returns string, set in BgpExtendedCommunityCustomType. - CommunityType() string - // SetCommunityType assigns string provided by user to BgpExtendedCommunityCustomType - SetCommunityType(value string) BgpExtendedCommunityCustomType - // HasCommunityType checks if CommunityType has been set in BgpExtendedCommunityCustomType - HasCommunityType() bool - // CommunitySubtype returns string, set in BgpExtendedCommunityCustomType. - CommunitySubtype() string - // SetCommunitySubtype assigns string provided by user to BgpExtendedCommunityCustomType - SetCommunitySubtype(value string) BgpExtendedCommunityCustomType - // HasCommunitySubtype checks if CommunitySubtype has been set in BgpExtendedCommunityCustomType - HasCommunitySubtype() bool - // Value returns string, set in BgpExtendedCommunityCustomType. - Value() string - // SetValue assigns string provided by user to BgpExtendedCommunityCustomType - SetValue(value string) BgpExtendedCommunityCustomType - // HasValue checks if Value has been set in BgpExtendedCommunityCustomType + // Choice returns PatternFlowRSVPPathSenderTspecIntServOverallLengthChoiceEnum, set in PatternFlowRSVPPathSenderTspecIntServOverallLength + Choice() PatternFlowRSVPPathSenderTspecIntServOverallLengthChoiceEnum + // SetChoice assigns PatternFlowRSVPPathSenderTspecIntServOverallLengthChoiceEnum provided by user to PatternFlowRSVPPathSenderTspecIntServOverallLength + SetChoice(value PatternFlowRSVPPathSenderTspecIntServOverallLengthChoiceEnum) PatternFlowRSVPPathSenderTspecIntServOverallLength + // HasChoice checks if Choice has been set in PatternFlowRSVPPathSenderTspecIntServOverallLength + HasChoice() bool + // Value returns uint32, set in PatternFlowRSVPPathSenderTspecIntServOverallLength. + Value() uint32 + // SetValue assigns uint32 provided by user to PatternFlowRSVPPathSenderTspecIntServOverallLength + SetValue(value uint32) PatternFlowRSVPPathSenderTspecIntServOverallLength + // HasValue checks if Value has been set in PatternFlowRSVPPathSenderTspecIntServOverallLength HasValue() bool + // Values returns []uint32, set in PatternFlowRSVPPathSenderTspecIntServOverallLength. + Values() []uint32 + // SetValues assigns []uint32 provided by user to PatternFlowRSVPPathSenderTspecIntServOverallLength + SetValues(value []uint32) PatternFlowRSVPPathSenderTspecIntServOverallLength + // Increment returns PatternFlowRSVPPathSenderTspecIntServOverallLengthCounter, set in PatternFlowRSVPPathSenderTspecIntServOverallLength. + // PatternFlowRSVPPathSenderTspecIntServOverallLengthCounter is integer counter pattern + Increment() PatternFlowRSVPPathSenderTspecIntServOverallLengthCounter + // SetIncrement assigns PatternFlowRSVPPathSenderTspecIntServOverallLengthCounter provided by user to PatternFlowRSVPPathSenderTspecIntServOverallLength. + // PatternFlowRSVPPathSenderTspecIntServOverallLengthCounter is integer counter pattern + SetIncrement(value PatternFlowRSVPPathSenderTspecIntServOverallLengthCounter) PatternFlowRSVPPathSenderTspecIntServOverallLength + // HasIncrement checks if Increment has been set in PatternFlowRSVPPathSenderTspecIntServOverallLength + HasIncrement() bool + // Decrement returns PatternFlowRSVPPathSenderTspecIntServOverallLengthCounter, set in PatternFlowRSVPPathSenderTspecIntServOverallLength. + // PatternFlowRSVPPathSenderTspecIntServOverallLengthCounter is integer counter pattern + Decrement() PatternFlowRSVPPathSenderTspecIntServOverallLengthCounter + // SetDecrement assigns PatternFlowRSVPPathSenderTspecIntServOverallLengthCounter provided by user to PatternFlowRSVPPathSenderTspecIntServOverallLength. + // PatternFlowRSVPPathSenderTspecIntServOverallLengthCounter is integer counter pattern + SetDecrement(value PatternFlowRSVPPathSenderTspecIntServOverallLengthCounter) PatternFlowRSVPPathSenderTspecIntServOverallLength + // HasDecrement checks if Decrement has been set in PatternFlowRSVPPathSenderTspecIntServOverallLength + HasDecrement() bool + setNil() +} + +type PatternFlowRSVPPathSenderTspecIntServOverallLengthChoiceEnum string + +// Enum of Choice on PatternFlowRSVPPathSenderTspecIntServOverallLength +var PatternFlowRSVPPathSenderTspecIntServOverallLengthChoice = struct { + VALUE PatternFlowRSVPPathSenderTspecIntServOverallLengthChoiceEnum + VALUES PatternFlowRSVPPathSenderTspecIntServOverallLengthChoiceEnum + INCREMENT PatternFlowRSVPPathSenderTspecIntServOverallLengthChoiceEnum + DECREMENT PatternFlowRSVPPathSenderTspecIntServOverallLengthChoiceEnum +}{ + VALUE: PatternFlowRSVPPathSenderTspecIntServOverallLengthChoiceEnum("value"), + VALUES: PatternFlowRSVPPathSenderTspecIntServOverallLengthChoiceEnum("values"), + INCREMENT: PatternFlowRSVPPathSenderTspecIntServOverallLengthChoiceEnum("increment"), + DECREMENT: PatternFlowRSVPPathSenderTspecIntServOverallLengthChoiceEnum("decrement"), +} + +func (obj *patternFlowRSVPPathSenderTspecIntServOverallLength) Choice() PatternFlowRSVPPathSenderTspecIntServOverallLengthChoiceEnum { + return PatternFlowRSVPPathSenderTspecIntServOverallLengthChoiceEnum(obj.obj.Choice.Enum().String()) +} + +// description is TBD +// Choice returns a string +func (obj *patternFlowRSVPPathSenderTspecIntServOverallLength) HasChoice() bool { + return obj.obj.Choice != nil } -// The type to be set in the Extended Community attribute. Accepts hexadecimal input upto ff . -// CommunityType returns a string -func (obj *bgpExtendedCommunityCustomType) CommunityType() string { +func (obj *patternFlowRSVPPathSenderTspecIntServOverallLength) SetChoice(value PatternFlowRSVPPathSenderTspecIntServOverallLengthChoiceEnum) PatternFlowRSVPPathSenderTspecIntServOverallLength { + intValue, ok := otg.PatternFlowRSVPPathSenderTspecIntServOverallLength_Choice_Enum_value[string(value)] + if !ok { + obj.validationErrors = append(obj.validationErrors, fmt.Sprintf( + "%s is not a valid choice on PatternFlowRSVPPathSenderTspecIntServOverallLengthChoiceEnum", string(value))) + return obj + } + enumValue := otg.PatternFlowRSVPPathSenderTspecIntServOverallLength_Choice_Enum(intValue) + obj.obj.Choice = &enumValue + obj.obj.Decrement = nil + obj.decrementHolder = nil + obj.obj.Increment = nil + obj.incrementHolder = nil + obj.obj.Values = nil + obj.obj.Value = nil + + if value == PatternFlowRSVPPathSenderTspecIntServOverallLengthChoice.VALUE { + defaultValue := uint32(7) + obj.obj.Value = &defaultValue + } - return *obj.obj.CommunityType + if value == PatternFlowRSVPPathSenderTspecIntServOverallLengthChoice.VALUES { + defaultValue := []uint32{7} + obj.obj.Values = defaultValue + } + + if value == PatternFlowRSVPPathSenderTspecIntServOverallLengthChoice.INCREMENT { + obj.obj.Increment = NewPatternFlowRSVPPathSenderTspecIntServOverallLengthCounter().Msg() + } + + if value == PatternFlowRSVPPathSenderTspecIntServOverallLengthChoice.DECREMENT { + obj.obj.Decrement = NewPatternFlowRSVPPathSenderTspecIntServOverallLengthCounter().Msg() + } + return obj } -// The type to be set in the Extended Community attribute. Accepts hexadecimal input upto ff . -// CommunityType returns a string -func (obj *bgpExtendedCommunityCustomType) HasCommunityType() bool { - return obj.obj.CommunityType != nil +// description is TBD +// Value returns a uint32 +func (obj *patternFlowRSVPPathSenderTspecIntServOverallLength) Value() uint32 { + + if obj.obj.Value == nil { + obj.SetChoice(PatternFlowRSVPPathSenderTspecIntServOverallLengthChoice.VALUE) + } + + return *obj.obj.Value + } -// The type to be set in the Extended Community attribute. Accepts hexadecimal input upto ff . -// SetCommunityType sets the string value in the BgpExtendedCommunityCustomType object -func (obj *bgpExtendedCommunityCustomType) SetCommunityType(value string) BgpExtendedCommunityCustomType { +// description is TBD +// Value returns a uint32 +func (obj *patternFlowRSVPPathSenderTspecIntServOverallLength) HasValue() bool { + return obj.obj.Value != nil +} - obj.obj.CommunityType = &value +// description is TBD +// SetValue sets the uint32 value in the PatternFlowRSVPPathSenderTspecIntServOverallLength object +func (obj *patternFlowRSVPPathSenderTspecIntServOverallLength) SetValue(value uint32) PatternFlowRSVPPathSenderTspecIntServOverallLength { + obj.SetChoice(PatternFlowRSVPPathSenderTspecIntServOverallLengthChoice.VALUE) + obj.obj.Value = &value return obj } -// The sub-type to be set in the Extended Community attribute. For certain types with no sub-type this byte can also be used as part of an extended value field. Accepts hexadecimal input upto ff. -// CommunitySubtype returns a string -func (obj *bgpExtendedCommunityCustomType) CommunitySubtype() string { +// description is TBD +// Values returns a []uint32 +func (obj *patternFlowRSVPPathSenderTspecIntServOverallLength) Values() []uint32 { + if obj.obj.Values == nil { + obj.SetValues([]uint32{7}) + } + return obj.obj.Values +} - return *obj.obj.CommunitySubtype +// description is TBD +// SetValues sets the []uint32 value in the PatternFlowRSVPPathSenderTspecIntServOverallLength object +func (obj *patternFlowRSVPPathSenderTspecIntServOverallLength) SetValues(value []uint32) PatternFlowRSVPPathSenderTspecIntServOverallLength { + obj.SetChoice(PatternFlowRSVPPathSenderTspecIntServOverallLengthChoice.VALUES) + if obj.obj.Values == nil { + obj.obj.Values = make([]uint32, 0) + } + obj.obj.Values = value + return obj } -// The sub-type to be set in the Extended Community attribute. For certain types with no sub-type this byte can also be used as part of an extended value field. Accepts hexadecimal input upto ff. -// CommunitySubtype returns a string -func (obj *bgpExtendedCommunityCustomType) HasCommunitySubtype() bool { - return obj.obj.CommunitySubtype != nil +// description is TBD +// Increment returns a PatternFlowRSVPPathSenderTspecIntServOverallLengthCounter +func (obj *patternFlowRSVPPathSenderTspecIntServOverallLength) Increment() PatternFlowRSVPPathSenderTspecIntServOverallLengthCounter { + if obj.obj.Increment == nil { + obj.SetChoice(PatternFlowRSVPPathSenderTspecIntServOverallLengthChoice.INCREMENT) + } + if obj.incrementHolder == nil { + obj.incrementHolder = &patternFlowRSVPPathSenderTspecIntServOverallLengthCounter{obj: obj.obj.Increment} + } + return obj.incrementHolder } -// The sub-type to be set in the Extended Community attribute. For certain types with no sub-type this byte can also be used as part of an extended value field. Accepts hexadecimal input upto ff. -// SetCommunitySubtype sets the string value in the BgpExtendedCommunityCustomType object -func (obj *bgpExtendedCommunityCustomType) SetCommunitySubtype(value string) BgpExtendedCommunityCustomType { - - obj.obj.CommunitySubtype = &value - return obj +// description is TBD +// Increment returns a PatternFlowRSVPPathSenderTspecIntServOverallLengthCounter +func (obj *patternFlowRSVPPathSenderTspecIntServOverallLength) HasIncrement() bool { + return obj.obj.Increment != nil } -// 6 byte hex value to be carried in the last 6 bytes of the Extended Community. Accepts hexadecimal input upto ffffffffffff. -// Value returns a string -func (obj *bgpExtendedCommunityCustomType) Value() string { +// description is TBD +// SetIncrement sets the PatternFlowRSVPPathSenderTspecIntServOverallLengthCounter value in the PatternFlowRSVPPathSenderTspecIntServOverallLength object +func (obj *patternFlowRSVPPathSenderTspecIntServOverallLength) SetIncrement(value PatternFlowRSVPPathSenderTspecIntServOverallLengthCounter) PatternFlowRSVPPathSenderTspecIntServOverallLength { + obj.SetChoice(PatternFlowRSVPPathSenderTspecIntServOverallLengthChoice.INCREMENT) + obj.incrementHolder = nil + obj.obj.Increment = value.Msg() - return *obj.obj.Value + return obj +} +// description is TBD +// Decrement returns a PatternFlowRSVPPathSenderTspecIntServOverallLengthCounter +func (obj *patternFlowRSVPPathSenderTspecIntServOverallLength) Decrement() PatternFlowRSVPPathSenderTspecIntServOverallLengthCounter { + if obj.obj.Decrement == nil { + obj.SetChoice(PatternFlowRSVPPathSenderTspecIntServOverallLengthChoice.DECREMENT) + } + if obj.decrementHolder == nil { + obj.decrementHolder = &patternFlowRSVPPathSenderTspecIntServOverallLengthCounter{obj: obj.obj.Decrement} + } + return obj.decrementHolder } -// 6 byte hex value to be carried in the last 6 bytes of the Extended Community. Accepts hexadecimal input upto ffffffffffff. -// Value returns a string -func (obj *bgpExtendedCommunityCustomType) HasValue() bool { - return obj.obj.Value != nil +// description is TBD +// Decrement returns a PatternFlowRSVPPathSenderTspecIntServOverallLengthCounter +func (obj *patternFlowRSVPPathSenderTspecIntServOverallLength) HasDecrement() bool { + return obj.obj.Decrement != nil } -// 6 byte hex value to be carried in the last 6 bytes of the Extended Community. Accepts hexadecimal input upto ffffffffffff. -// SetValue sets the string value in the BgpExtendedCommunityCustomType object -func (obj *bgpExtendedCommunityCustomType) SetValue(value string) BgpExtendedCommunityCustomType { +// description is TBD +// SetDecrement sets the PatternFlowRSVPPathSenderTspecIntServOverallLengthCounter value in the PatternFlowRSVPPathSenderTspecIntServOverallLength object +func (obj *patternFlowRSVPPathSenderTspecIntServOverallLength) SetDecrement(value PatternFlowRSVPPathSenderTspecIntServOverallLengthCounter) PatternFlowRSVPPathSenderTspecIntServOverallLength { + obj.SetChoice(PatternFlowRSVPPathSenderTspecIntServOverallLengthChoice.DECREMENT) + obj.decrementHolder = nil + obj.obj.Decrement = value.Msg() - obj.obj.Value = &value return obj } -func (obj *bgpExtendedCommunityCustomType) validateObj(vObj *validation, set_default bool) { +func (obj *patternFlowRSVPPathSenderTspecIntServOverallLength) validateObj(vObj *validation, set_default bool) { if set_default { obj.setDefault() } - if obj.obj.CommunityType != nil { + if obj.obj.Value != nil { - if len(*obj.obj.CommunityType) > 2 { + if *obj.obj.Value > 65535 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf( - "None <= length of BgpExtendedCommunityCustomType.CommunityType <= 2 but Got %d", - len(*obj.obj.CommunityType))) + fmt.Sprintf("0 <= PatternFlowRSVPPathSenderTspecIntServOverallLength.Value <= 65535 but Got %d", *obj.obj.Value)) } } - if obj.obj.CommunitySubtype != nil { + if obj.obj.Values != nil { + + for _, item := range obj.obj.Values { + if item > 65535 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("min(uint32) <= PatternFlowRSVPPathSenderTspecIntServOverallLength.Values <= 65535 but Got %d", item)) + } - if len(*obj.obj.CommunitySubtype) > 2 { - vObj.validationErrors = append( - vObj.validationErrors, - fmt.Sprintf( - "None <= length of BgpExtendedCommunityCustomType.CommunitySubtype <= 2 but Got %d", - len(*obj.obj.CommunitySubtype))) } } - if obj.obj.Value != nil { + if obj.obj.Increment != nil { - if len(*obj.obj.Value) > 12 { - vObj.validationErrors = append( - vObj.validationErrors, - fmt.Sprintf( - "None <= length of BgpExtendedCommunityCustomType.Value <= 12 but Got %d", - len(*obj.obj.Value))) - } + obj.Increment().validateObj(vObj, set_default) + } + + if obj.obj.Decrement != nil { + obj.Decrement().validateObj(vObj, set_default) } } -func (obj *bgpExtendedCommunityCustomType) setDefault() { - if obj.obj.CommunityType == nil { - obj.SetCommunityType("00") - } - if obj.obj.CommunitySubtype == nil { - obj.SetCommunitySubtype("00") - } - if obj.obj.Value == nil { - obj.SetValue("000000000000") +func (obj *patternFlowRSVPPathSenderTspecIntServOverallLength) setDefault() { + if obj.obj.Choice == nil { + obj.SetChoice(PatternFlowRSVPPathSenderTspecIntServOverallLengthChoice.VALUE) + } } -// ***** BgpSrteRemoteEndpointSubTlv ***** -type bgpSrteRemoteEndpointSubTlv struct { +// ***** PatternFlowRSVPPathSenderTspecIntServServiceHeader ***** +type patternFlowRSVPPathSenderTspecIntServServiceHeader struct { validation - obj *otg.BgpSrteRemoteEndpointSubTlv + obj *otg.PatternFlowRSVPPathSenderTspecIntServServiceHeader + incrementHolder PatternFlowRSVPPathSenderTspecIntServServiceHeaderCounter + decrementHolder PatternFlowRSVPPathSenderTspecIntServServiceHeaderCounter } -func NewBgpSrteRemoteEndpointSubTlv() BgpSrteRemoteEndpointSubTlv { - obj := bgpSrteRemoteEndpointSubTlv{obj: &otg.BgpSrteRemoteEndpointSubTlv{}} +func NewPatternFlowRSVPPathSenderTspecIntServServiceHeader() PatternFlowRSVPPathSenderTspecIntServServiceHeader { + obj := patternFlowRSVPPathSenderTspecIntServServiceHeader{obj: &otg.PatternFlowRSVPPathSenderTspecIntServServiceHeader{}} obj.setDefault() return &obj } -func (obj *bgpSrteRemoteEndpointSubTlv) Msg() *otg.BgpSrteRemoteEndpointSubTlv { +func (obj *patternFlowRSVPPathSenderTspecIntServServiceHeader) Msg() *otg.PatternFlowRSVPPathSenderTspecIntServServiceHeader { return obj.obj } -func (obj *bgpSrteRemoteEndpointSubTlv) SetMsg(msg *otg.BgpSrteRemoteEndpointSubTlv) BgpSrteRemoteEndpointSubTlv { - +func (obj *patternFlowRSVPPathSenderTspecIntServServiceHeader) SetMsg(msg *otg.PatternFlowRSVPPathSenderTspecIntServServiceHeader) PatternFlowRSVPPathSenderTspecIntServServiceHeader { + obj.setNil() proto.Merge(obj.obj, msg) return obj } -func (obj *bgpSrteRemoteEndpointSubTlv) ToProto() (*otg.BgpSrteRemoteEndpointSubTlv, error) { +func (obj *patternFlowRSVPPathSenderTspecIntServServiceHeader) ToProto() (*otg.PatternFlowRSVPPathSenderTspecIntServServiceHeader, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -301387,7 +347836,7 @@ func (obj *bgpSrteRemoteEndpointSubTlv) ToProto() (*otg.BgpSrteRemoteEndpointSub return obj.Msg(), nil } -func (obj *bgpSrteRemoteEndpointSubTlv) FromProto(msg *otg.BgpSrteRemoteEndpointSubTlv) (BgpSrteRemoteEndpointSubTlv, error) { +func (obj *patternFlowRSVPPathSenderTspecIntServServiceHeader) FromProto(msg *otg.PatternFlowRSVPPathSenderTspecIntServServiceHeader) (PatternFlowRSVPPathSenderTspecIntServServiceHeader, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -301396,7 +347845,7 @@ func (obj *bgpSrteRemoteEndpointSubTlv) FromProto(msg *otg.BgpSrteRemoteEndpoint return newObj, nil } -func (obj *bgpSrteRemoteEndpointSubTlv) ToPbText() (string, error) { +func (obj *patternFlowRSVPPathSenderTspecIntServServiceHeader) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -301408,12 +347857,12 @@ func (obj *bgpSrteRemoteEndpointSubTlv) ToPbText() (string, error) { return string(protoMarshal), nil } -func (obj *bgpSrteRemoteEndpointSubTlv) FromPbText(value string) error { +func (obj *patternFlowRSVPPathSenderTspecIntServServiceHeader) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj } - + obj.setNil() vErr := obj.validateToAndFrom() if vErr != nil { return vErr @@ -301421,7 +347870,7 @@ func (obj *bgpSrteRemoteEndpointSubTlv) FromPbText(value string) error { return retObj } -func (obj *bgpSrteRemoteEndpointSubTlv) ToYaml() (string, error) { +func (obj *patternFlowRSVPPathSenderTspecIntServServiceHeader) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -301442,7 +347891,7 @@ func (obj *bgpSrteRemoteEndpointSubTlv) ToYaml() (string, error) { return string(data), nil } -func (obj *bgpSrteRemoteEndpointSubTlv) FromYaml(value string) error { +func (obj *patternFlowRSVPPathSenderTspecIntServServiceHeader) FromYaml(value string) error { if value == "" { value = "{}" } @@ -301459,7 +347908,7 @@ func (obj *bgpSrteRemoteEndpointSubTlv) FromYaml(value string) error { return fmt.Errorf("unmarshal error %s", strings.Replace( uError.Error(), "\u00a0", " ", -1)[7:]) } - + obj.setNil() vErr := obj.validateToAndFrom() if vErr != nil { return vErr @@ -301467,7 +347916,7 @@ func (obj *bgpSrteRemoteEndpointSubTlv) FromYaml(value string) error { return nil } -func (obj *bgpSrteRemoteEndpointSubTlv) ToJson() (string, error) { +func (obj *patternFlowRSVPPathSenderTspecIntServServiceHeader) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -301485,7 +347934,7 @@ func (obj *bgpSrteRemoteEndpointSubTlv) ToJson() (string, error) { return string(data), nil } -func (obj *bgpSrteRemoteEndpointSubTlv) FromJson(value string) error { +func (obj *patternFlowRSVPPathSenderTspecIntServServiceHeader) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -301498,7 +347947,7 @@ func (obj *bgpSrteRemoteEndpointSubTlv) FromJson(value string) error { return fmt.Errorf("unmarshal error %s", strings.Replace( uError.Error(), "\u00a0", " ", -1)[7:]) } - + obj.setNil() err := obj.validateToAndFrom() if err != nil { return err @@ -301506,19 +347955,19 @@ func (obj *bgpSrteRemoteEndpointSubTlv) FromJson(value string) error { return nil } -func (obj *bgpSrteRemoteEndpointSubTlv) validateToAndFrom() error { +func (obj *patternFlowRSVPPathSenderTspecIntServServiceHeader) validateToAndFrom() error { // emptyVars() obj.validateObj(&obj.validation, true) return obj.validationResult() } -func (obj *bgpSrteRemoteEndpointSubTlv) Validate() error { +func (obj *patternFlowRSVPPathSenderTspecIntServServiceHeader) Validate() error { // emptyVars() obj.validateObj(&obj.validation, false) return obj.validationResult() } -func (obj *bgpSrteRemoteEndpointSubTlv) String() string { +func (obj *patternFlowRSVPPathSenderTspecIntServServiceHeader) String() string { str, err := obj.ToYaml() if err != nil { return err.Error() @@ -301526,12 +347975,12 @@ func (obj *bgpSrteRemoteEndpointSubTlv) String() string { return str } -func (obj *bgpSrteRemoteEndpointSubTlv) Clone() (BgpSrteRemoteEndpointSubTlv, error) { +func (obj *patternFlowRSVPPathSenderTspecIntServServiceHeader) Clone() (PatternFlowRSVPPathSenderTspecIntServServiceHeader, error) { vErr := obj.Validate() if vErr != nil { return nil, vErr } - newObj := NewBgpSrteRemoteEndpointSubTlv() + newObj := NewPatternFlowRSVPPathSenderTspecIntServServiceHeader() data, err := proto.Marshal(obj.Msg()) if err != nil { return nil, err @@ -301543,231 +347992,321 @@ func (obj *bgpSrteRemoteEndpointSubTlv) Clone() (BgpSrteRemoteEndpointSubTlv, er return newObj, nil } -// BgpSrteRemoteEndpointSubTlv is configuration for the BGP remote endpoint sub TLV. -type BgpSrteRemoteEndpointSubTlv interface { +func (obj *patternFlowRSVPPathSenderTspecIntServServiceHeader) setNil() { + obj.incrementHolder = nil + obj.decrementHolder = nil + obj.validationErrors = nil + obj.warnings = nil + obj.constraints = make(map[string]map[string]Constraints) +} + +// PatternFlowRSVPPathSenderTspecIntServServiceHeader is service header, service number - '1' (Generic information) if in a PATH message. +type PatternFlowRSVPPathSenderTspecIntServServiceHeader interface { Validation - // Msg marshals BgpSrteRemoteEndpointSubTlv to protobuf object *otg.BgpSrteRemoteEndpointSubTlv + // Msg marshals PatternFlowRSVPPathSenderTspecIntServServiceHeader to protobuf object *otg.PatternFlowRSVPPathSenderTspecIntServServiceHeader // and doesn't set defaults - Msg() *otg.BgpSrteRemoteEndpointSubTlv - // SetMsg unmarshals BgpSrteRemoteEndpointSubTlv from protobuf object *otg.BgpSrteRemoteEndpointSubTlv + Msg() *otg.PatternFlowRSVPPathSenderTspecIntServServiceHeader + // SetMsg unmarshals PatternFlowRSVPPathSenderTspecIntServServiceHeader from protobuf object *otg.PatternFlowRSVPPathSenderTspecIntServServiceHeader // and doesn't set defaults - SetMsg(*otg.BgpSrteRemoteEndpointSubTlv) BgpSrteRemoteEndpointSubTlv - // ToProto marshals BgpSrteRemoteEndpointSubTlv to protobuf object *otg.BgpSrteRemoteEndpointSubTlv - ToProto() (*otg.BgpSrteRemoteEndpointSubTlv, error) - // ToPbText marshals BgpSrteRemoteEndpointSubTlv to protobuf text + SetMsg(*otg.PatternFlowRSVPPathSenderTspecIntServServiceHeader) PatternFlowRSVPPathSenderTspecIntServServiceHeader + // ToProto marshals PatternFlowRSVPPathSenderTspecIntServServiceHeader to protobuf object *otg.PatternFlowRSVPPathSenderTspecIntServServiceHeader + ToProto() (*otg.PatternFlowRSVPPathSenderTspecIntServServiceHeader, error) + // ToPbText marshals PatternFlowRSVPPathSenderTspecIntServServiceHeader to protobuf text ToPbText() (string, error) - // ToYaml marshals BgpSrteRemoteEndpointSubTlv to YAML text + // ToYaml marshals PatternFlowRSVPPathSenderTspecIntServServiceHeader to YAML text ToYaml() (string, error) - // ToJson marshals BgpSrteRemoteEndpointSubTlv to JSON text + // ToJson marshals PatternFlowRSVPPathSenderTspecIntServServiceHeader to JSON text ToJson() (string, error) - // FromProto unmarshals BgpSrteRemoteEndpointSubTlv from protobuf object *otg.BgpSrteRemoteEndpointSubTlv - FromProto(msg *otg.BgpSrteRemoteEndpointSubTlv) (BgpSrteRemoteEndpointSubTlv, error) - // FromPbText unmarshals BgpSrteRemoteEndpointSubTlv from protobuf text + // FromProto unmarshals PatternFlowRSVPPathSenderTspecIntServServiceHeader from protobuf object *otg.PatternFlowRSVPPathSenderTspecIntServServiceHeader + FromProto(msg *otg.PatternFlowRSVPPathSenderTspecIntServServiceHeader) (PatternFlowRSVPPathSenderTspecIntServServiceHeader, error) + // FromPbText unmarshals PatternFlowRSVPPathSenderTspecIntServServiceHeader from protobuf text FromPbText(value string) error - // FromYaml unmarshals BgpSrteRemoteEndpointSubTlv from YAML text + // FromYaml unmarshals PatternFlowRSVPPathSenderTspecIntServServiceHeader from YAML text FromYaml(value string) error - // FromJson unmarshals BgpSrteRemoteEndpointSubTlv from JSON text + // FromJson unmarshals PatternFlowRSVPPathSenderTspecIntServServiceHeader from JSON text FromJson(value string) error - // Validate validates BgpSrteRemoteEndpointSubTlv + // Validate validates PatternFlowRSVPPathSenderTspecIntServServiceHeader Validate() error // A stringer function String() string // Clones the object - Clone() (BgpSrteRemoteEndpointSubTlv, error) + Clone() (PatternFlowRSVPPathSenderTspecIntServServiceHeader, error) validateToAndFrom() error validateObj(vObj *validation, set_default bool) setDefault() - // AsNumber returns uint32, set in BgpSrteRemoteEndpointSubTlv. - AsNumber() uint32 - // SetAsNumber assigns uint32 provided by user to BgpSrteRemoteEndpointSubTlv - SetAsNumber(value uint32) BgpSrteRemoteEndpointSubTlv - // HasAsNumber checks if AsNumber has been set in BgpSrteRemoteEndpointSubTlv - HasAsNumber() bool - // AddressFamily returns BgpSrteRemoteEndpointSubTlvAddressFamilyEnum, set in BgpSrteRemoteEndpointSubTlv - AddressFamily() BgpSrteRemoteEndpointSubTlvAddressFamilyEnum - // SetAddressFamily assigns BgpSrteRemoteEndpointSubTlvAddressFamilyEnum provided by user to BgpSrteRemoteEndpointSubTlv - SetAddressFamily(value BgpSrteRemoteEndpointSubTlvAddressFamilyEnum) BgpSrteRemoteEndpointSubTlv - // HasAddressFamily checks if AddressFamily has been set in BgpSrteRemoteEndpointSubTlv - HasAddressFamily() bool - // Ipv4Address returns string, set in BgpSrteRemoteEndpointSubTlv. - Ipv4Address() string - // SetIpv4Address assigns string provided by user to BgpSrteRemoteEndpointSubTlv - SetIpv4Address(value string) BgpSrteRemoteEndpointSubTlv - // HasIpv4Address checks if Ipv4Address has been set in BgpSrteRemoteEndpointSubTlv - HasIpv4Address() bool - // Ipv6Address returns string, set in BgpSrteRemoteEndpointSubTlv. - Ipv6Address() string - // SetIpv6Address assigns string provided by user to BgpSrteRemoteEndpointSubTlv - SetIpv6Address(value string) BgpSrteRemoteEndpointSubTlv - // HasIpv6Address checks if Ipv6Address has been set in BgpSrteRemoteEndpointSubTlv - HasIpv6Address() bool + // Choice returns PatternFlowRSVPPathSenderTspecIntServServiceHeaderChoiceEnum, set in PatternFlowRSVPPathSenderTspecIntServServiceHeader + Choice() PatternFlowRSVPPathSenderTspecIntServServiceHeaderChoiceEnum + // SetChoice assigns PatternFlowRSVPPathSenderTspecIntServServiceHeaderChoiceEnum provided by user to PatternFlowRSVPPathSenderTspecIntServServiceHeader + SetChoice(value PatternFlowRSVPPathSenderTspecIntServServiceHeaderChoiceEnum) PatternFlowRSVPPathSenderTspecIntServServiceHeader + // HasChoice checks if Choice has been set in PatternFlowRSVPPathSenderTspecIntServServiceHeader + HasChoice() bool + // Value returns uint32, set in PatternFlowRSVPPathSenderTspecIntServServiceHeader. + Value() uint32 + // SetValue assigns uint32 provided by user to PatternFlowRSVPPathSenderTspecIntServServiceHeader + SetValue(value uint32) PatternFlowRSVPPathSenderTspecIntServServiceHeader + // HasValue checks if Value has been set in PatternFlowRSVPPathSenderTspecIntServServiceHeader + HasValue() bool + // Values returns []uint32, set in PatternFlowRSVPPathSenderTspecIntServServiceHeader. + Values() []uint32 + // SetValues assigns []uint32 provided by user to PatternFlowRSVPPathSenderTspecIntServServiceHeader + SetValues(value []uint32) PatternFlowRSVPPathSenderTspecIntServServiceHeader + // Increment returns PatternFlowRSVPPathSenderTspecIntServServiceHeaderCounter, set in PatternFlowRSVPPathSenderTspecIntServServiceHeader. + // PatternFlowRSVPPathSenderTspecIntServServiceHeaderCounter is integer counter pattern + Increment() PatternFlowRSVPPathSenderTspecIntServServiceHeaderCounter + // SetIncrement assigns PatternFlowRSVPPathSenderTspecIntServServiceHeaderCounter provided by user to PatternFlowRSVPPathSenderTspecIntServServiceHeader. + // PatternFlowRSVPPathSenderTspecIntServServiceHeaderCounter is integer counter pattern + SetIncrement(value PatternFlowRSVPPathSenderTspecIntServServiceHeaderCounter) PatternFlowRSVPPathSenderTspecIntServServiceHeader + // HasIncrement checks if Increment has been set in PatternFlowRSVPPathSenderTspecIntServServiceHeader + HasIncrement() bool + // Decrement returns PatternFlowRSVPPathSenderTspecIntServServiceHeaderCounter, set in PatternFlowRSVPPathSenderTspecIntServServiceHeader. + // PatternFlowRSVPPathSenderTspecIntServServiceHeaderCounter is integer counter pattern + Decrement() PatternFlowRSVPPathSenderTspecIntServServiceHeaderCounter + // SetDecrement assigns PatternFlowRSVPPathSenderTspecIntServServiceHeaderCounter provided by user to PatternFlowRSVPPathSenderTspecIntServServiceHeader. + // PatternFlowRSVPPathSenderTspecIntServServiceHeaderCounter is integer counter pattern + SetDecrement(value PatternFlowRSVPPathSenderTspecIntServServiceHeaderCounter) PatternFlowRSVPPathSenderTspecIntServServiceHeader + // HasDecrement checks if Decrement has been set in PatternFlowRSVPPathSenderTspecIntServServiceHeader + HasDecrement() bool + setNil() } -// Autonomous system (AS) number -// AsNumber returns a uint32 -func (obj *bgpSrteRemoteEndpointSubTlv) AsNumber() uint32 { +type PatternFlowRSVPPathSenderTspecIntServServiceHeaderChoiceEnum string - return *obj.obj.AsNumber +// Enum of Choice on PatternFlowRSVPPathSenderTspecIntServServiceHeader +var PatternFlowRSVPPathSenderTspecIntServServiceHeaderChoice = struct { + VALUE PatternFlowRSVPPathSenderTspecIntServServiceHeaderChoiceEnum + VALUES PatternFlowRSVPPathSenderTspecIntServServiceHeaderChoiceEnum + INCREMENT PatternFlowRSVPPathSenderTspecIntServServiceHeaderChoiceEnum + DECREMENT PatternFlowRSVPPathSenderTspecIntServServiceHeaderChoiceEnum +}{ + VALUE: PatternFlowRSVPPathSenderTspecIntServServiceHeaderChoiceEnum("value"), + VALUES: PatternFlowRSVPPathSenderTspecIntServServiceHeaderChoiceEnum("values"), + INCREMENT: PatternFlowRSVPPathSenderTspecIntServServiceHeaderChoiceEnum("increment"), + DECREMENT: PatternFlowRSVPPathSenderTspecIntServServiceHeaderChoiceEnum("decrement"), +} +func (obj *patternFlowRSVPPathSenderTspecIntServServiceHeader) Choice() PatternFlowRSVPPathSenderTspecIntServServiceHeaderChoiceEnum { + return PatternFlowRSVPPathSenderTspecIntServServiceHeaderChoiceEnum(obj.obj.Choice.Enum().String()) } -// Autonomous system (AS) number -// AsNumber returns a uint32 -func (obj *bgpSrteRemoteEndpointSubTlv) HasAsNumber() bool { - return obj.obj.AsNumber != nil +// description is TBD +// Choice returns a string +func (obj *patternFlowRSVPPathSenderTspecIntServServiceHeader) HasChoice() bool { + return obj.obj.Choice != nil } -// Autonomous system (AS) number -// SetAsNumber sets the uint32 value in the BgpSrteRemoteEndpointSubTlv object -func (obj *bgpSrteRemoteEndpointSubTlv) SetAsNumber(value uint32) BgpSrteRemoteEndpointSubTlv { +func (obj *patternFlowRSVPPathSenderTspecIntServServiceHeader) SetChoice(value PatternFlowRSVPPathSenderTspecIntServServiceHeaderChoiceEnum) PatternFlowRSVPPathSenderTspecIntServServiceHeader { + intValue, ok := otg.PatternFlowRSVPPathSenderTspecIntServServiceHeader_Choice_Enum_value[string(value)] + if !ok { + obj.validationErrors = append(obj.validationErrors, fmt.Sprintf( + "%s is not a valid choice on PatternFlowRSVPPathSenderTspecIntServServiceHeaderChoiceEnum", string(value))) + return obj + } + enumValue := otg.PatternFlowRSVPPathSenderTspecIntServServiceHeader_Choice_Enum(intValue) + obj.obj.Choice = &enumValue + obj.obj.Decrement = nil + obj.decrementHolder = nil + obj.obj.Increment = nil + obj.incrementHolder = nil + obj.obj.Values = nil + obj.obj.Value = nil + + if value == PatternFlowRSVPPathSenderTspecIntServServiceHeaderChoice.VALUE { + defaultValue := uint32(1) + obj.obj.Value = &defaultValue + } + + if value == PatternFlowRSVPPathSenderTspecIntServServiceHeaderChoice.VALUES { + defaultValue := []uint32{1} + obj.obj.Values = defaultValue + } + + if value == PatternFlowRSVPPathSenderTspecIntServServiceHeaderChoice.INCREMENT { + obj.obj.Increment = NewPatternFlowRSVPPathSenderTspecIntServServiceHeaderCounter().Msg() + } + + if value == PatternFlowRSVPPathSenderTspecIntServServiceHeaderChoice.DECREMENT { + obj.obj.Decrement = NewPatternFlowRSVPPathSenderTspecIntServServiceHeaderCounter().Msg() + } - obj.obj.AsNumber = &value return obj } -type BgpSrteRemoteEndpointSubTlvAddressFamilyEnum string +// description is TBD +// Value returns a uint32 +func (obj *patternFlowRSVPPathSenderTspecIntServServiceHeader) Value() uint32 { + + if obj.obj.Value == nil { + obj.SetChoice(PatternFlowRSVPPathSenderTspecIntServServiceHeaderChoice.VALUE) + } + + return *obj.obj.Value -// Enum of AddressFamily on BgpSrteRemoteEndpointSubTlv -var BgpSrteRemoteEndpointSubTlvAddressFamily = struct { - IPV4 BgpSrteRemoteEndpointSubTlvAddressFamilyEnum - IPV6 BgpSrteRemoteEndpointSubTlvAddressFamilyEnum -}{ - IPV4: BgpSrteRemoteEndpointSubTlvAddressFamilyEnum("ipv4"), - IPV6: BgpSrteRemoteEndpointSubTlvAddressFamilyEnum("ipv6"), } -func (obj *bgpSrteRemoteEndpointSubTlv) AddressFamily() BgpSrteRemoteEndpointSubTlvAddressFamilyEnum { - return BgpSrteRemoteEndpointSubTlvAddressFamilyEnum(obj.obj.AddressFamily.Enum().String()) +// description is TBD +// Value returns a uint32 +func (obj *patternFlowRSVPPathSenderTspecIntServServiceHeader) HasValue() bool { + return obj.obj.Value != nil } -// Determines the address type -// AddressFamily returns a string -func (obj *bgpSrteRemoteEndpointSubTlv) HasAddressFamily() bool { - return obj.obj.AddressFamily != nil +// description is TBD +// SetValue sets the uint32 value in the PatternFlowRSVPPathSenderTspecIntServServiceHeader object +func (obj *patternFlowRSVPPathSenderTspecIntServServiceHeader) SetValue(value uint32) PatternFlowRSVPPathSenderTspecIntServServiceHeader { + obj.SetChoice(PatternFlowRSVPPathSenderTspecIntServServiceHeaderChoice.VALUE) + obj.obj.Value = &value + return obj } -func (obj *bgpSrteRemoteEndpointSubTlv) SetAddressFamily(value BgpSrteRemoteEndpointSubTlvAddressFamilyEnum) BgpSrteRemoteEndpointSubTlv { - intValue, ok := otg.BgpSrteRemoteEndpointSubTlv_AddressFamily_Enum_value[string(value)] - if !ok { - obj.validationErrors = append(obj.validationErrors, fmt.Sprintf( - "%s is not a valid choice on BgpSrteRemoteEndpointSubTlvAddressFamilyEnum", string(value))) - return obj +// description is TBD +// Values returns a []uint32 +func (obj *patternFlowRSVPPathSenderTspecIntServServiceHeader) Values() []uint32 { + if obj.obj.Values == nil { + obj.SetValues([]uint32{1}) } - enumValue := otg.BgpSrteRemoteEndpointSubTlv_AddressFamily_Enum(intValue) - obj.obj.AddressFamily = &enumValue - - return obj + return obj.obj.Values } -// The IPv4 address of the Remote Endpoint. -// Ipv4Address returns a string -func (obj *bgpSrteRemoteEndpointSubTlv) Ipv4Address() string { +// description is TBD +// SetValues sets the []uint32 value in the PatternFlowRSVPPathSenderTspecIntServServiceHeader object +func (obj *patternFlowRSVPPathSenderTspecIntServServiceHeader) SetValues(value []uint32) PatternFlowRSVPPathSenderTspecIntServServiceHeader { + obj.SetChoice(PatternFlowRSVPPathSenderTspecIntServServiceHeaderChoice.VALUES) + if obj.obj.Values == nil { + obj.obj.Values = make([]uint32, 0) + } + obj.obj.Values = value - return *obj.obj.Ipv4Address + return obj +} +// description is TBD +// Increment returns a PatternFlowRSVPPathSenderTspecIntServServiceHeaderCounter +func (obj *patternFlowRSVPPathSenderTspecIntServServiceHeader) Increment() PatternFlowRSVPPathSenderTspecIntServServiceHeaderCounter { + if obj.obj.Increment == nil { + obj.SetChoice(PatternFlowRSVPPathSenderTspecIntServServiceHeaderChoice.INCREMENT) + } + if obj.incrementHolder == nil { + obj.incrementHolder = &patternFlowRSVPPathSenderTspecIntServServiceHeaderCounter{obj: obj.obj.Increment} + } + return obj.incrementHolder } -// The IPv4 address of the Remote Endpoint. -// Ipv4Address returns a string -func (obj *bgpSrteRemoteEndpointSubTlv) HasIpv4Address() bool { - return obj.obj.Ipv4Address != nil +// description is TBD +// Increment returns a PatternFlowRSVPPathSenderTspecIntServServiceHeaderCounter +func (obj *patternFlowRSVPPathSenderTspecIntServServiceHeader) HasIncrement() bool { + return obj.obj.Increment != nil } -// The IPv4 address of the Remote Endpoint. -// SetIpv4Address sets the string value in the BgpSrteRemoteEndpointSubTlv object -func (obj *bgpSrteRemoteEndpointSubTlv) SetIpv4Address(value string) BgpSrteRemoteEndpointSubTlv { +// description is TBD +// SetIncrement sets the PatternFlowRSVPPathSenderTspecIntServServiceHeaderCounter value in the PatternFlowRSVPPathSenderTspecIntServServiceHeader object +func (obj *patternFlowRSVPPathSenderTspecIntServServiceHeader) SetIncrement(value PatternFlowRSVPPathSenderTspecIntServServiceHeaderCounter) PatternFlowRSVPPathSenderTspecIntServServiceHeader { + obj.SetChoice(PatternFlowRSVPPathSenderTspecIntServServiceHeaderChoice.INCREMENT) + obj.incrementHolder = nil + obj.obj.Increment = value.Msg() - obj.obj.Ipv4Address = &value return obj } -// The IPv6 address of the Remote Endpoint. -// Ipv6Address returns a string -func (obj *bgpSrteRemoteEndpointSubTlv) Ipv6Address() string { - - return *obj.obj.Ipv6Address - +// description is TBD +// Decrement returns a PatternFlowRSVPPathSenderTspecIntServServiceHeaderCounter +func (obj *patternFlowRSVPPathSenderTspecIntServServiceHeader) Decrement() PatternFlowRSVPPathSenderTspecIntServServiceHeaderCounter { + if obj.obj.Decrement == nil { + obj.SetChoice(PatternFlowRSVPPathSenderTspecIntServServiceHeaderChoice.DECREMENT) + } + if obj.decrementHolder == nil { + obj.decrementHolder = &patternFlowRSVPPathSenderTspecIntServServiceHeaderCounter{obj: obj.obj.Decrement} + } + return obj.decrementHolder } -// The IPv6 address of the Remote Endpoint. -// Ipv6Address returns a string -func (obj *bgpSrteRemoteEndpointSubTlv) HasIpv6Address() bool { - return obj.obj.Ipv6Address != nil +// description is TBD +// Decrement returns a PatternFlowRSVPPathSenderTspecIntServServiceHeaderCounter +func (obj *patternFlowRSVPPathSenderTspecIntServServiceHeader) HasDecrement() bool { + return obj.obj.Decrement != nil } -// The IPv6 address of the Remote Endpoint. -// SetIpv6Address sets the string value in the BgpSrteRemoteEndpointSubTlv object -func (obj *bgpSrteRemoteEndpointSubTlv) SetIpv6Address(value string) BgpSrteRemoteEndpointSubTlv { +// description is TBD +// SetDecrement sets the PatternFlowRSVPPathSenderTspecIntServServiceHeaderCounter value in the PatternFlowRSVPPathSenderTspecIntServServiceHeader object +func (obj *patternFlowRSVPPathSenderTspecIntServServiceHeader) SetDecrement(value PatternFlowRSVPPathSenderTspecIntServServiceHeaderCounter) PatternFlowRSVPPathSenderTspecIntServServiceHeader { + obj.SetChoice(PatternFlowRSVPPathSenderTspecIntServServiceHeaderChoice.DECREMENT) + obj.decrementHolder = nil + obj.obj.Decrement = value.Msg() - obj.obj.Ipv6Address = &value return obj } -func (obj *bgpSrteRemoteEndpointSubTlv) validateObj(vObj *validation, set_default bool) { +func (obj *patternFlowRSVPPathSenderTspecIntServServiceHeader) validateObj(vObj *validation, set_default bool) { if set_default { obj.setDefault() } - if obj.obj.Ipv4Address != nil { + if obj.obj.Value != nil { - err := obj.validateIpv4(obj.Ipv4Address()) - if err != nil { - vObj.validationErrors = append(vObj.validationErrors, fmt.Sprintf("%s %s", err.Error(), "on BgpSrteRemoteEndpointSubTlv.Ipv4Address")) + if *obj.obj.Value > 255 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("0 <= PatternFlowRSVPPathSenderTspecIntServServiceHeader.Value <= 255 but Got %d", *obj.obj.Value)) } } - if obj.obj.Ipv6Address != nil { + if obj.obj.Values != nil { + + for _, item := range obj.obj.Values { + if item > 255 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("min(uint32) <= PatternFlowRSVPPathSenderTspecIntServServiceHeader.Values <= 255 but Got %d", item)) + } - err := obj.validateIpv6(obj.Ipv6Address()) - if err != nil { - vObj.validationErrors = append(vObj.validationErrors, fmt.Sprintf("%s %s", err.Error(), "on BgpSrteRemoteEndpointSubTlv.Ipv6Address")) } } -} + if obj.obj.Increment != nil { -func (obj *bgpSrteRemoteEndpointSubTlv) setDefault() { - if obj.obj.AsNumber == nil { - obj.SetAsNumber(0) + obj.Increment().validateObj(vObj, set_default) } - if obj.obj.AddressFamily == nil { - obj.SetAddressFamily(BgpSrteRemoteEndpointSubTlvAddressFamily.IPV4) + if obj.obj.Decrement != nil { + + obj.Decrement().validateObj(vObj, set_default) } - if obj.obj.Ipv4Address == nil { - obj.SetIpv4Address("0.0.0.0") - } - if obj.obj.Ipv6Address == nil { - obj.SetIpv6Address("::0") + +} + +func (obj *patternFlowRSVPPathSenderTspecIntServServiceHeader) setDefault() { + if obj.obj.Choice == nil { + obj.SetChoice(PatternFlowRSVPPathSenderTspecIntServServiceHeaderChoice.VALUE) + } } -// ***** BgpSrteColorSubTlv ***** -type bgpSrteColorSubTlv struct { +// ***** PatternFlowRSVPPathSenderTspecIntServZeroBit ***** +type patternFlowRSVPPathSenderTspecIntServZeroBit struct { validation - obj *otg.BgpSrteColorSubTlv + obj *otg.PatternFlowRSVPPathSenderTspecIntServZeroBit + incrementHolder PatternFlowRSVPPathSenderTspecIntServZeroBitCounter + decrementHolder PatternFlowRSVPPathSenderTspecIntServZeroBitCounter } -func NewBgpSrteColorSubTlv() BgpSrteColorSubTlv { - obj := bgpSrteColorSubTlv{obj: &otg.BgpSrteColorSubTlv{}} +func NewPatternFlowRSVPPathSenderTspecIntServZeroBit() PatternFlowRSVPPathSenderTspecIntServZeroBit { + obj := patternFlowRSVPPathSenderTspecIntServZeroBit{obj: &otg.PatternFlowRSVPPathSenderTspecIntServZeroBit{}} obj.setDefault() return &obj } -func (obj *bgpSrteColorSubTlv) Msg() *otg.BgpSrteColorSubTlv { +func (obj *patternFlowRSVPPathSenderTspecIntServZeroBit) Msg() *otg.PatternFlowRSVPPathSenderTspecIntServZeroBit { return obj.obj } -func (obj *bgpSrteColorSubTlv) SetMsg(msg *otg.BgpSrteColorSubTlv) BgpSrteColorSubTlv { - +func (obj *patternFlowRSVPPathSenderTspecIntServZeroBit) SetMsg(msg *otg.PatternFlowRSVPPathSenderTspecIntServZeroBit) PatternFlowRSVPPathSenderTspecIntServZeroBit { + obj.setNil() proto.Merge(obj.obj, msg) return obj } -func (obj *bgpSrteColorSubTlv) ToProto() (*otg.BgpSrteColorSubTlv, error) { +func (obj *patternFlowRSVPPathSenderTspecIntServZeroBit) ToProto() (*otg.PatternFlowRSVPPathSenderTspecIntServZeroBit, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -301775,7 +348314,7 @@ func (obj *bgpSrteColorSubTlv) ToProto() (*otg.BgpSrteColorSubTlv, error) { return obj.Msg(), nil } -func (obj *bgpSrteColorSubTlv) FromProto(msg *otg.BgpSrteColorSubTlv) (BgpSrteColorSubTlv, error) { +func (obj *patternFlowRSVPPathSenderTspecIntServZeroBit) FromProto(msg *otg.PatternFlowRSVPPathSenderTspecIntServZeroBit) (PatternFlowRSVPPathSenderTspecIntServZeroBit, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -301784,7 +348323,7 @@ func (obj *bgpSrteColorSubTlv) FromProto(msg *otg.BgpSrteColorSubTlv) (BgpSrteCo return newObj, nil } -func (obj *bgpSrteColorSubTlv) ToPbText() (string, error) { +func (obj *patternFlowRSVPPathSenderTspecIntServZeroBit) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -301796,12 +348335,12 @@ func (obj *bgpSrteColorSubTlv) ToPbText() (string, error) { return string(protoMarshal), nil } -func (obj *bgpSrteColorSubTlv) FromPbText(value string) error { +func (obj *patternFlowRSVPPathSenderTspecIntServZeroBit) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj } - + obj.setNil() vErr := obj.validateToAndFrom() if vErr != nil { return vErr @@ -301809,7 +348348,7 @@ func (obj *bgpSrteColorSubTlv) FromPbText(value string) error { return retObj } -func (obj *bgpSrteColorSubTlv) ToYaml() (string, error) { +func (obj *patternFlowRSVPPathSenderTspecIntServZeroBit) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -301830,7 +348369,7 @@ func (obj *bgpSrteColorSubTlv) ToYaml() (string, error) { return string(data), nil } -func (obj *bgpSrteColorSubTlv) FromYaml(value string) error { +func (obj *patternFlowRSVPPathSenderTspecIntServZeroBit) FromYaml(value string) error { if value == "" { value = "{}" } @@ -301847,7 +348386,7 @@ func (obj *bgpSrteColorSubTlv) FromYaml(value string) error { return fmt.Errorf("unmarshal error %s", strings.Replace( uError.Error(), "\u00a0", " ", -1)[7:]) } - + obj.setNil() vErr := obj.validateToAndFrom() if vErr != nil { return vErr @@ -301855,7 +348394,7 @@ func (obj *bgpSrteColorSubTlv) FromYaml(value string) error { return nil } -func (obj *bgpSrteColorSubTlv) ToJson() (string, error) { +func (obj *patternFlowRSVPPathSenderTspecIntServZeroBit) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -301873,7 +348412,7 @@ func (obj *bgpSrteColorSubTlv) ToJson() (string, error) { return string(data), nil } -func (obj *bgpSrteColorSubTlv) FromJson(value string) error { +func (obj *patternFlowRSVPPathSenderTspecIntServZeroBit) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -301886,7 +348425,7 @@ func (obj *bgpSrteColorSubTlv) FromJson(value string) error { return fmt.Errorf("unmarshal error %s", strings.Replace( uError.Error(), "\u00a0", " ", -1)[7:]) } - + obj.setNil() err := obj.validateToAndFrom() if err != nil { return err @@ -301894,19 +348433,19 @@ func (obj *bgpSrteColorSubTlv) FromJson(value string) error { return nil } -func (obj *bgpSrteColorSubTlv) validateToAndFrom() error { +func (obj *patternFlowRSVPPathSenderTspecIntServZeroBit) validateToAndFrom() error { // emptyVars() obj.validateObj(&obj.validation, true) return obj.validationResult() } -func (obj *bgpSrteColorSubTlv) Validate() error { +func (obj *patternFlowRSVPPathSenderTspecIntServZeroBit) Validate() error { // emptyVars() obj.validateObj(&obj.validation, false) return obj.validationResult() } -func (obj *bgpSrteColorSubTlv) String() string { +func (obj *patternFlowRSVPPathSenderTspecIntServZeroBit) String() string { str, err := obj.ToYaml() if err != nil { return err.Error() @@ -301914,12 +348453,12 @@ func (obj *bgpSrteColorSubTlv) String() string { return str } -func (obj *bgpSrteColorSubTlv) Clone() (BgpSrteColorSubTlv, error) { +func (obj *patternFlowRSVPPathSenderTspecIntServZeroBit) Clone() (PatternFlowRSVPPathSenderTspecIntServZeroBit, error) { vErr := obj.Validate() if vErr != nil { return nil, vErr } - newObj := NewBgpSrteColorSubTlv() + newObj := NewPatternFlowRSVPPathSenderTspecIntServZeroBit() data, err := proto.Marshal(obj.Msg()) if err != nil { return nil, err @@ -301931,113 +348470,321 @@ func (obj *bgpSrteColorSubTlv) Clone() (BgpSrteColorSubTlv, error) { return newObj, nil } -// BgpSrteColorSubTlv is configuration for the Policy Color attribute sub-TLV. The Color sub-TLV MAY be used as a way to "color" the corresponding Tunnel TLV. The Value field of the sub-TLV is eight octets long and consists of a Color Extended Community. First two octets of its Value field are 0x030b as type and subtype of extended community. Remaining six octets are are exposed to configure. -type BgpSrteColorSubTlv interface { +func (obj *patternFlowRSVPPathSenderTspecIntServZeroBit) setNil() { + obj.incrementHolder = nil + obj.decrementHolder = nil + obj.validationErrors = nil + obj.warnings = nil + obj.constraints = make(map[string]map[string]Constraints) +} + +// PatternFlowRSVPPathSenderTspecIntServZeroBit is mUST be 0. +type PatternFlowRSVPPathSenderTspecIntServZeroBit interface { Validation - // Msg marshals BgpSrteColorSubTlv to protobuf object *otg.BgpSrteColorSubTlv + // Msg marshals PatternFlowRSVPPathSenderTspecIntServZeroBit to protobuf object *otg.PatternFlowRSVPPathSenderTspecIntServZeroBit // and doesn't set defaults - Msg() *otg.BgpSrteColorSubTlv - // SetMsg unmarshals BgpSrteColorSubTlv from protobuf object *otg.BgpSrteColorSubTlv + Msg() *otg.PatternFlowRSVPPathSenderTspecIntServZeroBit + // SetMsg unmarshals PatternFlowRSVPPathSenderTspecIntServZeroBit from protobuf object *otg.PatternFlowRSVPPathSenderTspecIntServZeroBit // and doesn't set defaults - SetMsg(*otg.BgpSrteColorSubTlv) BgpSrteColorSubTlv - // ToProto marshals BgpSrteColorSubTlv to protobuf object *otg.BgpSrteColorSubTlv - ToProto() (*otg.BgpSrteColorSubTlv, error) - // ToPbText marshals BgpSrteColorSubTlv to protobuf text + SetMsg(*otg.PatternFlowRSVPPathSenderTspecIntServZeroBit) PatternFlowRSVPPathSenderTspecIntServZeroBit + // ToProto marshals PatternFlowRSVPPathSenderTspecIntServZeroBit to protobuf object *otg.PatternFlowRSVPPathSenderTspecIntServZeroBit + ToProto() (*otg.PatternFlowRSVPPathSenderTspecIntServZeroBit, error) + // ToPbText marshals PatternFlowRSVPPathSenderTspecIntServZeroBit to protobuf text ToPbText() (string, error) - // ToYaml marshals BgpSrteColorSubTlv to YAML text + // ToYaml marshals PatternFlowRSVPPathSenderTspecIntServZeroBit to YAML text ToYaml() (string, error) - // ToJson marshals BgpSrteColorSubTlv to JSON text + // ToJson marshals PatternFlowRSVPPathSenderTspecIntServZeroBit to JSON text ToJson() (string, error) - // FromProto unmarshals BgpSrteColorSubTlv from protobuf object *otg.BgpSrteColorSubTlv - FromProto(msg *otg.BgpSrteColorSubTlv) (BgpSrteColorSubTlv, error) - // FromPbText unmarshals BgpSrteColorSubTlv from protobuf text + // FromProto unmarshals PatternFlowRSVPPathSenderTspecIntServZeroBit from protobuf object *otg.PatternFlowRSVPPathSenderTspecIntServZeroBit + FromProto(msg *otg.PatternFlowRSVPPathSenderTspecIntServZeroBit) (PatternFlowRSVPPathSenderTspecIntServZeroBit, error) + // FromPbText unmarshals PatternFlowRSVPPathSenderTspecIntServZeroBit from protobuf text FromPbText(value string) error - // FromYaml unmarshals BgpSrteColorSubTlv from YAML text + // FromYaml unmarshals PatternFlowRSVPPathSenderTspecIntServZeroBit from YAML text FromYaml(value string) error - // FromJson unmarshals BgpSrteColorSubTlv from JSON text + // FromJson unmarshals PatternFlowRSVPPathSenderTspecIntServZeroBit from JSON text FromJson(value string) error - // Validate validates BgpSrteColorSubTlv + // Validate validates PatternFlowRSVPPathSenderTspecIntServZeroBit Validate() error // A stringer function String() string // Clones the object - Clone() (BgpSrteColorSubTlv, error) + Clone() (PatternFlowRSVPPathSenderTspecIntServZeroBit, error) validateToAndFrom() error validateObj(vObj *validation, set_default bool) setDefault() - // Color returns string, set in BgpSrteColorSubTlv. - Color() string - // SetColor assigns string provided by user to BgpSrteColorSubTlv - SetColor(value string) BgpSrteColorSubTlv - // HasColor checks if Color has been set in BgpSrteColorSubTlv - HasColor() bool + // Choice returns PatternFlowRSVPPathSenderTspecIntServZeroBitChoiceEnum, set in PatternFlowRSVPPathSenderTspecIntServZeroBit + Choice() PatternFlowRSVPPathSenderTspecIntServZeroBitChoiceEnum + // SetChoice assigns PatternFlowRSVPPathSenderTspecIntServZeroBitChoiceEnum provided by user to PatternFlowRSVPPathSenderTspecIntServZeroBit + SetChoice(value PatternFlowRSVPPathSenderTspecIntServZeroBitChoiceEnum) PatternFlowRSVPPathSenderTspecIntServZeroBit + // HasChoice checks if Choice has been set in PatternFlowRSVPPathSenderTspecIntServZeroBit + HasChoice() bool + // Value returns uint32, set in PatternFlowRSVPPathSenderTspecIntServZeroBit. + Value() uint32 + // SetValue assigns uint32 provided by user to PatternFlowRSVPPathSenderTspecIntServZeroBit + SetValue(value uint32) PatternFlowRSVPPathSenderTspecIntServZeroBit + // HasValue checks if Value has been set in PatternFlowRSVPPathSenderTspecIntServZeroBit + HasValue() bool + // Values returns []uint32, set in PatternFlowRSVPPathSenderTspecIntServZeroBit. + Values() []uint32 + // SetValues assigns []uint32 provided by user to PatternFlowRSVPPathSenderTspecIntServZeroBit + SetValues(value []uint32) PatternFlowRSVPPathSenderTspecIntServZeroBit + // Increment returns PatternFlowRSVPPathSenderTspecIntServZeroBitCounter, set in PatternFlowRSVPPathSenderTspecIntServZeroBit. + // PatternFlowRSVPPathSenderTspecIntServZeroBitCounter is integer counter pattern + Increment() PatternFlowRSVPPathSenderTspecIntServZeroBitCounter + // SetIncrement assigns PatternFlowRSVPPathSenderTspecIntServZeroBitCounter provided by user to PatternFlowRSVPPathSenderTspecIntServZeroBit. + // PatternFlowRSVPPathSenderTspecIntServZeroBitCounter is integer counter pattern + SetIncrement(value PatternFlowRSVPPathSenderTspecIntServZeroBitCounter) PatternFlowRSVPPathSenderTspecIntServZeroBit + // HasIncrement checks if Increment has been set in PatternFlowRSVPPathSenderTspecIntServZeroBit + HasIncrement() bool + // Decrement returns PatternFlowRSVPPathSenderTspecIntServZeroBitCounter, set in PatternFlowRSVPPathSenderTspecIntServZeroBit. + // PatternFlowRSVPPathSenderTspecIntServZeroBitCounter is integer counter pattern + Decrement() PatternFlowRSVPPathSenderTspecIntServZeroBitCounter + // SetDecrement assigns PatternFlowRSVPPathSenderTspecIntServZeroBitCounter provided by user to PatternFlowRSVPPathSenderTspecIntServZeroBit. + // PatternFlowRSVPPathSenderTspecIntServZeroBitCounter is integer counter pattern + SetDecrement(value PatternFlowRSVPPathSenderTspecIntServZeroBitCounter) PatternFlowRSVPPathSenderTspecIntServZeroBit + // HasDecrement checks if Decrement has been set in PatternFlowRSVPPathSenderTspecIntServZeroBit + HasDecrement() bool + setNil() } -// Six octet values. Example: 000000000064 for color value 100. -// Color returns a string -func (obj *bgpSrteColorSubTlv) Color() string { +type PatternFlowRSVPPathSenderTspecIntServZeroBitChoiceEnum string - return *obj.obj.Color +// Enum of Choice on PatternFlowRSVPPathSenderTspecIntServZeroBit +var PatternFlowRSVPPathSenderTspecIntServZeroBitChoice = struct { + VALUE PatternFlowRSVPPathSenderTspecIntServZeroBitChoiceEnum + VALUES PatternFlowRSVPPathSenderTspecIntServZeroBitChoiceEnum + INCREMENT PatternFlowRSVPPathSenderTspecIntServZeroBitChoiceEnum + DECREMENT PatternFlowRSVPPathSenderTspecIntServZeroBitChoiceEnum +}{ + VALUE: PatternFlowRSVPPathSenderTspecIntServZeroBitChoiceEnum("value"), + VALUES: PatternFlowRSVPPathSenderTspecIntServZeroBitChoiceEnum("values"), + INCREMENT: PatternFlowRSVPPathSenderTspecIntServZeroBitChoiceEnum("increment"), + DECREMENT: PatternFlowRSVPPathSenderTspecIntServZeroBitChoiceEnum("decrement"), +} +func (obj *patternFlowRSVPPathSenderTspecIntServZeroBit) Choice() PatternFlowRSVPPathSenderTspecIntServZeroBitChoiceEnum { + return PatternFlowRSVPPathSenderTspecIntServZeroBitChoiceEnum(obj.obj.Choice.Enum().String()) } -// Six octet values. Example: 000000000064 for color value 100. -// Color returns a string -func (obj *bgpSrteColorSubTlv) HasColor() bool { - return obj.obj.Color != nil +// description is TBD +// Choice returns a string +func (obj *patternFlowRSVPPathSenderTspecIntServZeroBit) HasChoice() bool { + return obj.obj.Choice != nil } -// Six octet values. Example: 000000000064 for color value 100. -// SetColor sets the string value in the BgpSrteColorSubTlv object -func (obj *bgpSrteColorSubTlv) SetColor(value string) BgpSrteColorSubTlv { +func (obj *patternFlowRSVPPathSenderTspecIntServZeroBit) SetChoice(value PatternFlowRSVPPathSenderTspecIntServZeroBitChoiceEnum) PatternFlowRSVPPathSenderTspecIntServZeroBit { + intValue, ok := otg.PatternFlowRSVPPathSenderTspecIntServZeroBit_Choice_Enum_value[string(value)] + if !ok { + obj.validationErrors = append(obj.validationErrors, fmt.Sprintf( + "%s is not a valid choice on PatternFlowRSVPPathSenderTspecIntServZeroBitChoiceEnum", string(value))) + return obj + } + enumValue := otg.PatternFlowRSVPPathSenderTspecIntServZeroBit_Choice_Enum(intValue) + obj.obj.Choice = &enumValue + obj.obj.Decrement = nil + obj.decrementHolder = nil + obj.obj.Increment = nil + obj.incrementHolder = nil + obj.obj.Values = nil + obj.obj.Value = nil + + if value == PatternFlowRSVPPathSenderTspecIntServZeroBitChoice.VALUE { + defaultValue := uint32(0) + obj.obj.Value = &defaultValue + } + + if value == PatternFlowRSVPPathSenderTspecIntServZeroBitChoice.VALUES { + defaultValue := []uint32{0} + obj.obj.Values = defaultValue + } + + if value == PatternFlowRSVPPathSenderTspecIntServZeroBitChoice.INCREMENT { + obj.obj.Increment = NewPatternFlowRSVPPathSenderTspecIntServZeroBitCounter().Msg() + } + + if value == PatternFlowRSVPPathSenderTspecIntServZeroBitChoice.DECREMENT { + obj.obj.Decrement = NewPatternFlowRSVPPathSenderTspecIntServZeroBitCounter().Msg() + } - obj.obj.Color = &value return obj } -func (obj *bgpSrteColorSubTlv) validateObj(vObj *validation, set_default bool) { +// description is TBD +// Value returns a uint32 +func (obj *patternFlowRSVPPathSenderTspecIntServZeroBit) Value() uint32 { + + if obj.obj.Value == nil { + obj.SetChoice(PatternFlowRSVPPathSenderTspecIntServZeroBitChoice.VALUE) + } + + return *obj.obj.Value + +} + +// description is TBD +// Value returns a uint32 +func (obj *patternFlowRSVPPathSenderTspecIntServZeroBit) HasValue() bool { + return obj.obj.Value != nil +} + +// description is TBD +// SetValue sets the uint32 value in the PatternFlowRSVPPathSenderTspecIntServZeroBit object +func (obj *patternFlowRSVPPathSenderTspecIntServZeroBit) SetValue(value uint32) PatternFlowRSVPPathSenderTspecIntServZeroBit { + obj.SetChoice(PatternFlowRSVPPathSenderTspecIntServZeroBitChoice.VALUE) + obj.obj.Value = &value + return obj +} + +// description is TBD +// Values returns a []uint32 +func (obj *patternFlowRSVPPathSenderTspecIntServZeroBit) Values() []uint32 { + if obj.obj.Values == nil { + obj.SetValues([]uint32{0}) + } + return obj.obj.Values +} + +// description is TBD +// SetValues sets the []uint32 value in the PatternFlowRSVPPathSenderTspecIntServZeroBit object +func (obj *patternFlowRSVPPathSenderTspecIntServZeroBit) SetValues(value []uint32) PatternFlowRSVPPathSenderTspecIntServZeroBit { + obj.SetChoice(PatternFlowRSVPPathSenderTspecIntServZeroBitChoice.VALUES) + if obj.obj.Values == nil { + obj.obj.Values = make([]uint32, 0) + } + obj.obj.Values = value + + return obj +} + +// description is TBD +// Increment returns a PatternFlowRSVPPathSenderTspecIntServZeroBitCounter +func (obj *patternFlowRSVPPathSenderTspecIntServZeroBit) Increment() PatternFlowRSVPPathSenderTspecIntServZeroBitCounter { + if obj.obj.Increment == nil { + obj.SetChoice(PatternFlowRSVPPathSenderTspecIntServZeroBitChoice.INCREMENT) + } + if obj.incrementHolder == nil { + obj.incrementHolder = &patternFlowRSVPPathSenderTspecIntServZeroBitCounter{obj: obj.obj.Increment} + } + return obj.incrementHolder +} + +// description is TBD +// Increment returns a PatternFlowRSVPPathSenderTspecIntServZeroBitCounter +func (obj *patternFlowRSVPPathSenderTspecIntServZeroBit) HasIncrement() bool { + return obj.obj.Increment != nil +} + +// description is TBD +// SetIncrement sets the PatternFlowRSVPPathSenderTspecIntServZeroBitCounter value in the PatternFlowRSVPPathSenderTspecIntServZeroBit object +func (obj *patternFlowRSVPPathSenderTspecIntServZeroBit) SetIncrement(value PatternFlowRSVPPathSenderTspecIntServZeroBitCounter) PatternFlowRSVPPathSenderTspecIntServZeroBit { + obj.SetChoice(PatternFlowRSVPPathSenderTspecIntServZeroBitChoice.INCREMENT) + obj.incrementHolder = nil + obj.obj.Increment = value.Msg() + + return obj +} + +// description is TBD +// Decrement returns a PatternFlowRSVPPathSenderTspecIntServZeroBitCounter +func (obj *patternFlowRSVPPathSenderTspecIntServZeroBit) Decrement() PatternFlowRSVPPathSenderTspecIntServZeroBitCounter { + if obj.obj.Decrement == nil { + obj.SetChoice(PatternFlowRSVPPathSenderTspecIntServZeroBitChoice.DECREMENT) + } + if obj.decrementHolder == nil { + obj.decrementHolder = &patternFlowRSVPPathSenderTspecIntServZeroBitCounter{obj: obj.obj.Decrement} + } + return obj.decrementHolder +} + +// description is TBD +// Decrement returns a PatternFlowRSVPPathSenderTspecIntServZeroBitCounter +func (obj *patternFlowRSVPPathSenderTspecIntServZeroBit) HasDecrement() bool { + return obj.obj.Decrement != nil +} + +// description is TBD +// SetDecrement sets the PatternFlowRSVPPathSenderTspecIntServZeroBitCounter value in the PatternFlowRSVPPathSenderTspecIntServZeroBit object +func (obj *patternFlowRSVPPathSenderTspecIntServZeroBit) SetDecrement(value PatternFlowRSVPPathSenderTspecIntServZeroBitCounter) PatternFlowRSVPPathSenderTspecIntServZeroBit { + obj.SetChoice(PatternFlowRSVPPathSenderTspecIntServZeroBitChoice.DECREMENT) + obj.decrementHolder = nil + obj.obj.Decrement = value.Msg() + + return obj +} + +func (obj *patternFlowRSVPPathSenderTspecIntServZeroBit) validateObj(vObj *validation, set_default bool) { if set_default { obj.setDefault() } - if obj.obj.Color != nil { + if obj.obj.Value != nil { + + if *obj.obj.Value > 1 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("0 <= PatternFlowRSVPPathSenderTspecIntServZeroBit.Value <= 1 but Got %d", *obj.obj.Value)) + } + + } + + if obj.obj.Values != nil { + + for _, item := range obj.obj.Values { + if item > 1 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("min(uint32) <= PatternFlowRSVPPathSenderTspecIntServZeroBit.Values <= 1 but Got %d", item)) + } - err := obj.validateHex(obj.Color()) - if err != nil { - vObj.validationErrors = append(vObj.validationErrors, fmt.Sprintf("%s %s", err.Error(), "on BgpSrteColorSubTlv.Color")) } } + if obj.obj.Increment != nil { + + obj.Increment().validateObj(vObj, set_default) + } + + if obj.obj.Decrement != nil { + + obj.Decrement().validateObj(vObj, set_default) + } + } -func (obj *bgpSrteColorSubTlv) setDefault() { +func (obj *patternFlowRSVPPathSenderTspecIntServZeroBit) setDefault() { + if obj.obj.Choice == nil { + obj.SetChoice(PatternFlowRSVPPathSenderTspecIntServZeroBitChoice.VALUE) + + } } -// ***** BgpSrteBindingSubTlv ***** -type bgpSrteBindingSubTlv struct { +// ***** PatternFlowRSVPPathSenderTspecIntServReserved2 ***** +type patternFlowRSVPPathSenderTspecIntServReserved2 struct { validation - obj *otg.BgpSrteBindingSubTlv + obj *otg.PatternFlowRSVPPathSenderTspecIntServReserved2 + incrementHolder PatternFlowRSVPPathSenderTspecIntServReserved2Counter + decrementHolder PatternFlowRSVPPathSenderTspecIntServReserved2Counter } -func NewBgpSrteBindingSubTlv() BgpSrteBindingSubTlv { - obj := bgpSrteBindingSubTlv{obj: &otg.BgpSrteBindingSubTlv{}} +func NewPatternFlowRSVPPathSenderTspecIntServReserved2() PatternFlowRSVPPathSenderTspecIntServReserved2 { + obj := patternFlowRSVPPathSenderTspecIntServReserved2{obj: &otg.PatternFlowRSVPPathSenderTspecIntServReserved2{}} obj.setDefault() return &obj } -func (obj *bgpSrteBindingSubTlv) Msg() *otg.BgpSrteBindingSubTlv { +func (obj *patternFlowRSVPPathSenderTspecIntServReserved2) Msg() *otg.PatternFlowRSVPPathSenderTspecIntServReserved2 { return obj.obj } -func (obj *bgpSrteBindingSubTlv) SetMsg(msg *otg.BgpSrteBindingSubTlv) BgpSrteBindingSubTlv { - +func (obj *patternFlowRSVPPathSenderTspecIntServReserved2) SetMsg(msg *otg.PatternFlowRSVPPathSenderTspecIntServReserved2) PatternFlowRSVPPathSenderTspecIntServReserved2 { + obj.setNil() proto.Merge(obj.obj, msg) return obj } -func (obj *bgpSrteBindingSubTlv) ToProto() (*otg.BgpSrteBindingSubTlv, error) { +func (obj *patternFlowRSVPPathSenderTspecIntServReserved2) ToProto() (*otg.PatternFlowRSVPPathSenderTspecIntServReserved2, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -302045,7 +348792,7 @@ func (obj *bgpSrteBindingSubTlv) ToProto() (*otg.BgpSrteBindingSubTlv, error) { return obj.Msg(), nil } -func (obj *bgpSrteBindingSubTlv) FromProto(msg *otg.BgpSrteBindingSubTlv) (BgpSrteBindingSubTlv, error) { +func (obj *patternFlowRSVPPathSenderTspecIntServReserved2) FromProto(msg *otg.PatternFlowRSVPPathSenderTspecIntServReserved2) (PatternFlowRSVPPathSenderTspecIntServReserved2, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -302054,7 +348801,7 @@ func (obj *bgpSrteBindingSubTlv) FromProto(msg *otg.BgpSrteBindingSubTlv) (BgpSr return newObj, nil } -func (obj *bgpSrteBindingSubTlv) ToPbText() (string, error) { +func (obj *patternFlowRSVPPathSenderTspecIntServReserved2) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -302066,12 +348813,12 @@ func (obj *bgpSrteBindingSubTlv) ToPbText() (string, error) { return string(protoMarshal), nil } -func (obj *bgpSrteBindingSubTlv) FromPbText(value string) error { +func (obj *patternFlowRSVPPathSenderTspecIntServReserved2) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj } - + obj.setNil() vErr := obj.validateToAndFrom() if vErr != nil { return vErr @@ -302079,7 +348826,7 @@ func (obj *bgpSrteBindingSubTlv) FromPbText(value string) error { return retObj } -func (obj *bgpSrteBindingSubTlv) ToYaml() (string, error) { +func (obj *patternFlowRSVPPathSenderTspecIntServReserved2) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -302100,7 +348847,7 @@ func (obj *bgpSrteBindingSubTlv) ToYaml() (string, error) { return string(data), nil } -func (obj *bgpSrteBindingSubTlv) FromYaml(value string) error { +func (obj *patternFlowRSVPPathSenderTspecIntServReserved2) FromYaml(value string) error { if value == "" { value = "{}" } @@ -302117,7 +348864,7 @@ func (obj *bgpSrteBindingSubTlv) FromYaml(value string) error { return fmt.Errorf("unmarshal error %s", strings.Replace( uError.Error(), "\u00a0", " ", -1)[7:]) } - + obj.setNil() vErr := obj.validateToAndFrom() if vErr != nil { return vErr @@ -302125,7 +348872,7 @@ func (obj *bgpSrteBindingSubTlv) FromYaml(value string) error { return nil } -func (obj *bgpSrteBindingSubTlv) ToJson() (string, error) { +func (obj *patternFlowRSVPPathSenderTspecIntServReserved2) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -302143,7 +348890,7 @@ func (obj *bgpSrteBindingSubTlv) ToJson() (string, error) { return string(data), nil } -func (obj *bgpSrteBindingSubTlv) FromJson(value string) error { +func (obj *patternFlowRSVPPathSenderTspecIntServReserved2) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -302156,7 +348903,7 @@ func (obj *bgpSrteBindingSubTlv) FromJson(value string) error { return fmt.Errorf("unmarshal error %s", strings.Replace( uError.Error(), "\u00a0", " ", -1)[7:]) } - + obj.setNil() err := obj.validateToAndFrom() if err != nil { return err @@ -302164,19 +348911,19 @@ func (obj *bgpSrteBindingSubTlv) FromJson(value string) error { return nil } -func (obj *bgpSrteBindingSubTlv) validateToAndFrom() error { +func (obj *patternFlowRSVPPathSenderTspecIntServReserved2) validateToAndFrom() error { // emptyVars() obj.validateObj(&obj.validation, true) return obj.validationResult() } -func (obj *bgpSrteBindingSubTlv) Validate() error { +func (obj *patternFlowRSVPPathSenderTspecIntServReserved2) Validate() error { // emptyVars() obj.validateObj(&obj.validation, false) return obj.validationResult() } -func (obj *bgpSrteBindingSubTlv) String() string { +func (obj *patternFlowRSVPPathSenderTspecIntServReserved2) String() string { str, err := obj.ToYaml() if err != nil { return err.Error() @@ -302184,12 +348931,12 @@ func (obj *bgpSrteBindingSubTlv) String() string { return str } -func (obj *bgpSrteBindingSubTlv) Clone() (BgpSrteBindingSubTlv, error) { +func (obj *patternFlowRSVPPathSenderTspecIntServReserved2) Clone() (PatternFlowRSVPPathSenderTspecIntServReserved2, error) { vErr := obj.Validate() if vErr != nil { return nil, vErr } - newObj := NewBgpSrteBindingSubTlv() + newObj := NewPatternFlowRSVPPathSenderTspecIntServReserved2() data, err := proto.Marshal(obj.Msg()) if err != nil { return nil, err @@ -302201,249 +348948,321 @@ func (obj *bgpSrteBindingSubTlv) Clone() (BgpSrteBindingSubTlv, error) { return newObj, nil } -// BgpSrteBindingSubTlv is configuration for the binding SID sub-TLV. This is used to signal the binding SID related information of the SR Policy candidate path. -type BgpSrteBindingSubTlv interface { +func (obj *patternFlowRSVPPathSenderTspecIntServReserved2) setNil() { + obj.incrementHolder = nil + obj.decrementHolder = nil + obj.validationErrors = nil + obj.warnings = nil + obj.constraints = make(map[string]map[string]Constraints) +} + +// PatternFlowRSVPPathSenderTspecIntServReserved2 is reserved. +type PatternFlowRSVPPathSenderTspecIntServReserved2 interface { Validation - // Msg marshals BgpSrteBindingSubTlv to protobuf object *otg.BgpSrteBindingSubTlv + // Msg marshals PatternFlowRSVPPathSenderTspecIntServReserved2 to protobuf object *otg.PatternFlowRSVPPathSenderTspecIntServReserved2 // and doesn't set defaults - Msg() *otg.BgpSrteBindingSubTlv - // SetMsg unmarshals BgpSrteBindingSubTlv from protobuf object *otg.BgpSrteBindingSubTlv + Msg() *otg.PatternFlowRSVPPathSenderTspecIntServReserved2 + // SetMsg unmarshals PatternFlowRSVPPathSenderTspecIntServReserved2 from protobuf object *otg.PatternFlowRSVPPathSenderTspecIntServReserved2 // and doesn't set defaults - SetMsg(*otg.BgpSrteBindingSubTlv) BgpSrteBindingSubTlv - // ToProto marshals BgpSrteBindingSubTlv to protobuf object *otg.BgpSrteBindingSubTlv - ToProto() (*otg.BgpSrteBindingSubTlv, error) - // ToPbText marshals BgpSrteBindingSubTlv to protobuf text + SetMsg(*otg.PatternFlowRSVPPathSenderTspecIntServReserved2) PatternFlowRSVPPathSenderTspecIntServReserved2 + // ToProto marshals PatternFlowRSVPPathSenderTspecIntServReserved2 to protobuf object *otg.PatternFlowRSVPPathSenderTspecIntServReserved2 + ToProto() (*otg.PatternFlowRSVPPathSenderTspecIntServReserved2, error) + // ToPbText marshals PatternFlowRSVPPathSenderTspecIntServReserved2 to protobuf text ToPbText() (string, error) - // ToYaml marshals BgpSrteBindingSubTlv to YAML text + // ToYaml marshals PatternFlowRSVPPathSenderTspecIntServReserved2 to YAML text ToYaml() (string, error) - // ToJson marshals BgpSrteBindingSubTlv to JSON text + // ToJson marshals PatternFlowRSVPPathSenderTspecIntServReserved2 to JSON text ToJson() (string, error) - // FromProto unmarshals BgpSrteBindingSubTlv from protobuf object *otg.BgpSrteBindingSubTlv - FromProto(msg *otg.BgpSrteBindingSubTlv) (BgpSrteBindingSubTlv, error) - // FromPbText unmarshals BgpSrteBindingSubTlv from protobuf text + // FromProto unmarshals PatternFlowRSVPPathSenderTspecIntServReserved2 from protobuf object *otg.PatternFlowRSVPPathSenderTspecIntServReserved2 + FromProto(msg *otg.PatternFlowRSVPPathSenderTspecIntServReserved2) (PatternFlowRSVPPathSenderTspecIntServReserved2, error) + // FromPbText unmarshals PatternFlowRSVPPathSenderTspecIntServReserved2 from protobuf text FromPbText(value string) error - // FromYaml unmarshals BgpSrteBindingSubTlv from YAML text + // FromYaml unmarshals PatternFlowRSVPPathSenderTspecIntServReserved2 from YAML text FromYaml(value string) error - // FromJson unmarshals BgpSrteBindingSubTlv from JSON text + // FromJson unmarshals PatternFlowRSVPPathSenderTspecIntServReserved2 from JSON text FromJson(value string) error - // Validate validates BgpSrteBindingSubTlv + // Validate validates PatternFlowRSVPPathSenderTspecIntServReserved2 Validate() error // A stringer function String() string // Clones the object - Clone() (BgpSrteBindingSubTlv, error) + Clone() (PatternFlowRSVPPathSenderTspecIntServReserved2, error) validateToAndFrom() error validateObj(vObj *validation, set_default bool) setDefault() - // BindingSidType returns BgpSrteBindingSubTlvBindingSidTypeEnum, set in BgpSrteBindingSubTlv - BindingSidType() BgpSrteBindingSubTlvBindingSidTypeEnum - // SetBindingSidType assigns BgpSrteBindingSubTlvBindingSidTypeEnum provided by user to BgpSrteBindingSubTlv - SetBindingSidType(value BgpSrteBindingSubTlvBindingSidTypeEnum) BgpSrteBindingSubTlv - // HasBindingSidType checks if BindingSidType has been set in BgpSrteBindingSubTlv - HasBindingSidType() bool - // FourOctetSid returns uint32, set in BgpSrteBindingSubTlv. - FourOctetSid() uint32 - // SetFourOctetSid assigns uint32 provided by user to BgpSrteBindingSubTlv - SetFourOctetSid(value uint32) BgpSrteBindingSubTlv - // HasFourOctetSid checks if FourOctetSid has been set in BgpSrteBindingSubTlv - HasFourOctetSid() bool - // Ipv6Sid returns string, set in BgpSrteBindingSubTlv. - Ipv6Sid() string - // SetIpv6Sid assigns string provided by user to BgpSrteBindingSubTlv - SetIpv6Sid(value string) BgpSrteBindingSubTlv - // HasIpv6Sid checks if Ipv6Sid has been set in BgpSrteBindingSubTlv - HasIpv6Sid() bool - // SFlag returns bool, set in BgpSrteBindingSubTlv. - SFlag() bool - // SetSFlag assigns bool provided by user to BgpSrteBindingSubTlv - SetSFlag(value bool) BgpSrteBindingSubTlv - // HasSFlag checks if SFlag has been set in BgpSrteBindingSubTlv - HasSFlag() bool - // IFlag returns bool, set in BgpSrteBindingSubTlv. - IFlag() bool - // SetIFlag assigns bool provided by user to BgpSrteBindingSubTlv - SetIFlag(value bool) BgpSrteBindingSubTlv - // HasIFlag checks if IFlag has been set in BgpSrteBindingSubTlv - HasIFlag() bool + // Choice returns PatternFlowRSVPPathSenderTspecIntServReserved2ChoiceEnum, set in PatternFlowRSVPPathSenderTspecIntServReserved2 + Choice() PatternFlowRSVPPathSenderTspecIntServReserved2ChoiceEnum + // SetChoice assigns PatternFlowRSVPPathSenderTspecIntServReserved2ChoiceEnum provided by user to PatternFlowRSVPPathSenderTspecIntServReserved2 + SetChoice(value PatternFlowRSVPPathSenderTspecIntServReserved2ChoiceEnum) PatternFlowRSVPPathSenderTspecIntServReserved2 + // HasChoice checks if Choice has been set in PatternFlowRSVPPathSenderTspecIntServReserved2 + HasChoice() bool + // Value returns uint32, set in PatternFlowRSVPPathSenderTspecIntServReserved2. + Value() uint32 + // SetValue assigns uint32 provided by user to PatternFlowRSVPPathSenderTspecIntServReserved2 + SetValue(value uint32) PatternFlowRSVPPathSenderTspecIntServReserved2 + // HasValue checks if Value has been set in PatternFlowRSVPPathSenderTspecIntServReserved2 + HasValue() bool + // Values returns []uint32, set in PatternFlowRSVPPathSenderTspecIntServReserved2. + Values() []uint32 + // SetValues assigns []uint32 provided by user to PatternFlowRSVPPathSenderTspecIntServReserved2 + SetValues(value []uint32) PatternFlowRSVPPathSenderTspecIntServReserved2 + // Increment returns PatternFlowRSVPPathSenderTspecIntServReserved2Counter, set in PatternFlowRSVPPathSenderTspecIntServReserved2. + // PatternFlowRSVPPathSenderTspecIntServReserved2Counter is integer counter pattern + Increment() PatternFlowRSVPPathSenderTspecIntServReserved2Counter + // SetIncrement assigns PatternFlowRSVPPathSenderTspecIntServReserved2Counter provided by user to PatternFlowRSVPPathSenderTspecIntServReserved2. + // PatternFlowRSVPPathSenderTspecIntServReserved2Counter is integer counter pattern + SetIncrement(value PatternFlowRSVPPathSenderTspecIntServReserved2Counter) PatternFlowRSVPPathSenderTspecIntServReserved2 + // HasIncrement checks if Increment has been set in PatternFlowRSVPPathSenderTspecIntServReserved2 + HasIncrement() bool + // Decrement returns PatternFlowRSVPPathSenderTspecIntServReserved2Counter, set in PatternFlowRSVPPathSenderTspecIntServReserved2. + // PatternFlowRSVPPathSenderTspecIntServReserved2Counter is integer counter pattern + Decrement() PatternFlowRSVPPathSenderTspecIntServReserved2Counter + // SetDecrement assigns PatternFlowRSVPPathSenderTspecIntServReserved2Counter provided by user to PatternFlowRSVPPathSenderTspecIntServReserved2. + // PatternFlowRSVPPathSenderTspecIntServReserved2Counter is integer counter pattern + SetDecrement(value PatternFlowRSVPPathSenderTspecIntServReserved2Counter) PatternFlowRSVPPathSenderTspecIntServReserved2 + // HasDecrement checks if Decrement has been set in PatternFlowRSVPPathSenderTspecIntServReserved2 + HasDecrement() bool + setNil() } -type BgpSrteBindingSubTlvBindingSidTypeEnum string +type PatternFlowRSVPPathSenderTspecIntServReserved2ChoiceEnum string -// Enum of BindingSidType on BgpSrteBindingSubTlv -var BgpSrteBindingSubTlvBindingSidType = struct { - NO_BINDING BgpSrteBindingSubTlvBindingSidTypeEnum - FOUR_OCTET_SID BgpSrteBindingSubTlvBindingSidTypeEnum - IPV6_SID BgpSrteBindingSubTlvBindingSidTypeEnum +// Enum of Choice on PatternFlowRSVPPathSenderTspecIntServReserved2 +var PatternFlowRSVPPathSenderTspecIntServReserved2Choice = struct { + VALUE PatternFlowRSVPPathSenderTspecIntServReserved2ChoiceEnum + VALUES PatternFlowRSVPPathSenderTspecIntServReserved2ChoiceEnum + INCREMENT PatternFlowRSVPPathSenderTspecIntServReserved2ChoiceEnum + DECREMENT PatternFlowRSVPPathSenderTspecIntServReserved2ChoiceEnum }{ - NO_BINDING: BgpSrteBindingSubTlvBindingSidTypeEnum("no_binding"), - FOUR_OCTET_SID: BgpSrteBindingSubTlvBindingSidTypeEnum("four_octet_sid"), - IPV6_SID: BgpSrteBindingSubTlvBindingSidTypeEnum("ipv6_sid"), + VALUE: PatternFlowRSVPPathSenderTspecIntServReserved2ChoiceEnum("value"), + VALUES: PatternFlowRSVPPathSenderTspecIntServReserved2ChoiceEnum("values"), + INCREMENT: PatternFlowRSVPPathSenderTspecIntServReserved2ChoiceEnum("increment"), + DECREMENT: PatternFlowRSVPPathSenderTspecIntServReserved2ChoiceEnum("decrement"), } -func (obj *bgpSrteBindingSubTlv) BindingSidType() BgpSrteBindingSubTlvBindingSidTypeEnum { - return BgpSrteBindingSubTlvBindingSidTypeEnum(obj.obj.BindingSidType.Enum().String()) +func (obj *patternFlowRSVPPathSenderTspecIntServReserved2) Choice() PatternFlowRSVPPathSenderTspecIntServReserved2ChoiceEnum { + return PatternFlowRSVPPathSenderTspecIntServReserved2ChoiceEnum(obj.obj.Choice.Enum().String()) } -// Type of the binding SID. Supported types are "No Binding SID" or "Four Octets Sid" or "IPv6 SID". -// BindingSidType returns a string -func (obj *bgpSrteBindingSubTlv) HasBindingSidType() bool { - return obj.obj.BindingSidType != nil +// description is TBD +// Choice returns a string +func (obj *patternFlowRSVPPathSenderTspecIntServReserved2) HasChoice() bool { + return obj.obj.Choice != nil } -func (obj *bgpSrteBindingSubTlv) SetBindingSidType(value BgpSrteBindingSubTlvBindingSidTypeEnum) BgpSrteBindingSubTlv { - intValue, ok := otg.BgpSrteBindingSubTlv_BindingSidType_Enum_value[string(value)] +func (obj *patternFlowRSVPPathSenderTspecIntServReserved2) SetChoice(value PatternFlowRSVPPathSenderTspecIntServReserved2ChoiceEnum) PatternFlowRSVPPathSenderTspecIntServReserved2 { + intValue, ok := otg.PatternFlowRSVPPathSenderTspecIntServReserved2_Choice_Enum_value[string(value)] if !ok { obj.validationErrors = append(obj.validationErrors, fmt.Sprintf( - "%s is not a valid choice on BgpSrteBindingSubTlvBindingSidTypeEnum", string(value))) + "%s is not a valid choice on PatternFlowRSVPPathSenderTspecIntServReserved2ChoiceEnum", string(value))) return obj } - enumValue := otg.BgpSrteBindingSubTlv_BindingSidType_Enum(intValue) - obj.obj.BindingSidType = &enumValue - - return obj -} - -// Binding SID is encoded in 4 octets. -// FourOctetSid returns a uint32 -func (obj *bgpSrteBindingSubTlv) FourOctetSid() uint32 { + enumValue := otg.PatternFlowRSVPPathSenderTspecIntServReserved2_Choice_Enum(intValue) + obj.obj.Choice = &enumValue + obj.obj.Decrement = nil + obj.decrementHolder = nil + obj.obj.Increment = nil + obj.incrementHolder = nil + obj.obj.Values = nil + obj.obj.Value = nil - return *obj.obj.FourOctetSid + if value == PatternFlowRSVPPathSenderTspecIntServReserved2Choice.VALUE { + defaultValue := uint32(0) + obj.obj.Value = &defaultValue + } -} + if value == PatternFlowRSVPPathSenderTspecIntServReserved2Choice.VALUES { + defaultValue := []uint32{0} + obj.obj.Values = defaultValue + } -// Binding SID is encoded in 4 octets. -// FourOctetSid returns a uint32 -func (obj *bgpSrteBindingSubTlv) HasFourOctetSid() bool { - return obj.obj.FourOctetSid != nil -} + if value == PatternFlowRSVPPathSenderTspecIntServReserved2Choice.INCREMENT { + obj.obj.Increment = NewPatternFlowRSVPPathSenderTspecIntServReserved2Counter().Msg() + } -// Binding SID is encoded in 4 octets. -// SetFourOctetSid sets the uint32 value in the BgpSrteBindingSubTlv object -func (obj *bgpSrteBindingSubTlv) SetFourOctetSid(value uint32) BgpSrteBindingSubTlv { + if value == PatternFlowRSVPPathSenderTspecIntServReserved2Choice.DECREMENT { + obj.obj.Decrement = NewPatternFlowRSVPPathSenderTspecIntServReserved2Counter().Msg() + } - obj.obj.FourOctetSid = &value return obj } -// IPv6 SID value. -// Ipv6Sid returns a string -func (obj *bgpSrteBindingSubTlv) Ipv6Sid() string { +// description is TBD +// Value returns a uint32 +func (obj *patternFlowRSVPPathSenderTspecIntServReserved2) Value() uint32 { - return *obj.obj.Ipv6Sid + if obj.obj.Value == nil { + obj.SetChoice(PatternFlowRSVPPathSenderTspecIntServReserved2Choice.VALUE) + } -} + return *obj.obj.Value -// IPv6 SID value. -// Ipv6Sid returns a string -func (obj *bgpSrteBindingSubTlv) HasIpv6Sid() bool { - return obj.obj.Ipv6Sid != nil } -// IPv6 SID value. -// SetIpv6Sid sets the string value in the BgpSrteBindingSubTlv object -func (obj *bgpSrteBindingSubTlv) SetIpv6Sid(value string) BgpSrteBindingSubTlv { +// description is TBD +// Value returns a uint32 +func (obj *patternFlowRSVPPathSenderTspecIntServReserved2) HasValue() bool { + return obj.obj.Value != nil +} - obj.obj.Ipv6Sid = &value +// description is TBD +// SetValue sets the uint32 value in the PatternFlowRSVPPathSenderTspecIntServReserved2 object +func (obj *patternFlowRSVPPathSenderTspecIntServReserved2) SetValue(value uint32) PatternFlowRSVPPathSenderTspecIntServReserved2 { + obj.SetChoice(PatternFlowRSVPPathSenderTspecIntServReserved2Choice.VALUE) + obj.obj.Value = &value return obj } -// S-Flag encodes the "Specified-BSID-only" behavior. -// SFlag returns a bool -func (obj *bgpSrteBindingSubTlv) SFlag() bool { +// description is TBD +// Values returns a []uint32 +func (obj *patternFlowRSVPPathSenderTspecIntServReserved2) Values() []uint32 { + if obj.obj.Values == nil { + obj.SetValues([]uint32{0}) + } + return obj.obj.Values +} - return *obj.obj.SFlag +// description is TBD +// SetValues sets the []uint32 value in the PatternFlowRSVPPathSenderTspecIntServReserved2 object +func (obj *patternFlowRSVPPathSenderTspecIntServReserved2) SetValues(value []uint32) PatternFlowRSVPPathSenderTspecIntServReserved2 { + obj.SetChoice(PatternFlowRSVPPathSenderTspecIntServReserved2Choice.VALUES) + if obj.obj.Values == nil { + obj.obj.Values = make([]uint32, 0) + } + obj.obj.Values = value + return obj } -// S-Flag encodes the "Specified-BSID-only" behavior. -// SFlag returns a bool -func (obj *bgpSrteBindingSubTlv) HasSFlag() bool { - return obj.obj.SFlag != nil +// description is TBD +// Increment returns a PatternFlowRSVPPathSenderTspecIntServReserved2Counter +func (obj *patternFlowRSVPPathSenderTspecIntServReserved2) Increment() PatternFlowRSVPPathSenderTspecIntServReserved2Counter { + if obj.obj.Increment == nil { + obj.SetChoice(PatternFlowRSVPPathSenderTspecIntServReserved2Choice.INCREMENT) + } + if obj.incrementHolder == nil { + obj.incrementHolder = &patternFlowRSVPPathSenderTspecIntServReserved2Counter{obj: obj.obj.Increment} + } + return obj.incrementHolder } -// S-Flag encodes the "Specified-BSID-only" behavior. -// SetSFlag sets the bool value in the BgpSrteBindingSubTlv object -func (obj *bgpSrteBindingSubTlv) SetSFlag(value bool) BgpSrteBindingSubTlv { - - obj.obj.SFlag = &value - return obj +// description is TBD +// Increment returns a PatternFlowRSVPPathSenderTspecIntServReserved2Counter +func (obj *patternFlowRSVPPathSenderTspecIntServReserved2) HasIncrement() bool { + return obj.obj.Increment != nil } -// I-Flag encodes the "Drop Upon Invalid" behavior. -// IFlag returns a bool -func (obj *bgpSrteBindingSubTlv) IFlag() bool { +// description is TBD +// SetIncrement sets the PatternFlowRSVPPathSenderTspecIntServReserved2Counter value in the PatternFlowRSVPPathSenderTspecIntServReserved2 object +func (obj *patternFlowRSVPPathSenderTspecIntServReserved2) SetIncrement(value PatternFlowRSVPPathSenderTspecIntServReserved2Counter) PatternFlowRSVPPathSenderTspecIntServReserved2 { + obj.SetChoice(PatternFlowRSVPPathSenderTspecIntServReserved2Choice.INCREMENT) + obj.incrementHolder = nil + obj.obj.Increment = value.Msg() - return *obj.obj.IFlag + return obj +} +// description is TBD +// Decrement returns a PatternFlowRSVPPathSenderTspecIntServReserved2Counter +func (obj *patternFlowRSVPPathSenderTspecIntServReserved2) Decrement() PatternFlowRSVPPathSenderTspecIntServReserved2Counter { + if obj.obj.Decrement == nil { + obj.SetChoice(PatternFlowRSVPPathSenderTspecIntServReserved2Choice.DECREMENT) + } + if obj.decrementHolder == nil { + obj.decrementHolder = &patternFlowRSVPPathSenderTspecIntServReserved2Counter{obj: obj.obj.Decrement} + } + return obj.decrementHolder } -// I-Flag encodes the "Drop Upon Invalid" behavior. -// IFlag returns a bool -func (obj *bgpSrteBindingSubTlv) HasIFlag() bool { - return obj.obj.IFlag != nil +// description is TBD +// Decrement returns a PatternFlowRSVPPathSenderTspecIntServReserved2Counter +func (obj *patternFlowRSVPPathSenderTspecIntServReserved2) HasDecrement() bool { + return obj.obj.Decrement != nil } -// I-Flag encodes the "Drop Upon Invalid" behavior. -// SetIFlag sets the bool value in the BgpSrteBindingSubTlv object -func (obj *bgpSrteBindingSubTlv) SetIFlag(value bool) BgpSrteBindingSubTlv { +// description is TBD +// SetDecrement sets the PatternFlowRSVPPathSenderTspecIntServReserved2Counter value in the PatternFlowRSVPPathSenderTspecIntServReserved2 object +func (obj *patternFlowRSVPPathSenderTspecIntServReserved2) SetDecrement(value PatternFlowRSVPPathSenderTspecIntServReserved2Counter) PatternFlowRSVPPathSenderTspecIntServReserved2 { + obj.SetChoice(PatternFlowRSVPPathSenderTspecIntServReserved2Choice.DECREMENT) + obj.decrementHolder = nil + obj.obj.Decrement = value.Msg() - obj.obj.IFlag = &value return obj } -func (obj *bgpSrteBindingSubTlv) validateObj(vObj *validation, set_default bool) { +func (obj *patternFlowRSVPPathSenderTspecIntServReserved2) validateObj(vObj *validation, set_default bool) { if set_default { obj.setDefault() } - if obj.obj.Ipv6Sid != nil { + if obj.obj.Value != nil { - err := obj.validateIpv6(obj.Ipv6Sid()) - if err != nil { - vObj.validationErrors = append(vObj.validationErrors, fmt.Sprintf("%s %s", err.Error(), "on BgpSrteBindingSubTlv.Ipv6Sid")) + if *obj.obj.Value > 127 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("0 <= PatternFlowRSVPPathSenderTspecIntServReserved2.Value <= 127 but Got %d", *obj.obj.Value)) } } -} + if obj.obj.Values != nil { -func (obj *bgpSrteBindingSubTlv) setDefault() { - if obj.obj.BindingSidType == nil { - obj.SetBindingSidType(BgpSrteBindingSubTlvBindingSidType.NO_BINDING) + for _, item := range obj.obj.Values { + if item > 127 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("min(uint32) <= PatternFlowRSVPPathSenderTspecIntServReserved2.Values <= 127 but Got %d", item)) + } + + } } - if obj.obj.SFlag == nil { - obj.SetSFlag(false) + + if obj.obj.Increment != nil { + + obj.Increment().validateObj(vObj, set_default) } - if obj.obj.IFlag == nil { - obj.SetIFlag(false) + + if obj.obj.Decrement != nil { + + obj.Decrement().validateObj(vObj, set_default) } } -// ***** BgpSrtePreferenceSubTlv ***** -type bgpSrtePreferenceSubTlv struct { +func (obj *patternFlowRSVPPathSenderTspecIntServReserved2) setDefault() { + if obj.obj.Choice == nil { + obj.SetChoice(PatternFlowRSVPPathSenderTspecIntServReserved2Choice.VALUE) + + } + +} + +// ***** PatternFlowRSVPPathSenderTspecIntServLengthOfServiceData ***** +type patternFlowRSVPPathSenderTspecIntServLengthOfServiceData struct { validation - obj *otg.BgpSrtePreferenceSubTlv + obj *otg.PatternFlowRSVPPathSenderTspecIntServLengthOfServiceData + incrementHolder PatternFlowRSVPPathSenderTspecIntServLengthOfServiceDataCounter + decrementHolder PatternFlowRSVPPathSenderTspecIntServLengthOfServiceDataCounter } -func NewBgpSrtePreferenceSubTlv() BgpSrtePreferenceSubTlv { - obj := bgpSrtePreferenceSubTlv{obj: &otg.BgpSrtePreferenceSubTlv{}} +func NewPatternFlowRSVPPathSenderTspecIntServLengthOfServiceData() PatternFlowRSVPPathSenderTspecIntServLengthOfServiceData { + obj := patternFlowRSVPPathSenderTspecIntServLengthOfServiceData{obj: &otg.PatternFlowRSVPPathSenderTspecIntServLengthOfServiceData{}} obj.setDefault() return &obj } -func (obj *bgpSrtePreferenceSubTlv) Msg() *otg.BgpSrtePreferenceSubTlv { +func (obj *patternFlowRSVPPathSenderTspecIntServLengthOfServiceData) Msg() *otg.PatternFlowRSVPPathSenderTspecIntServLengthOfServiceData { return obj.obj } -func (obj *bgpSrtePreferenceSubTlv) SetMsg(msg *otg.BgpSrtePreferenceSubTlv) BgpSrtePreferenceSubTlv { - +func (obj *patternFlowRSVPPathSenderTspecIntServLengthOfServiceData) SetMsg(msg *otg.PatternFlowRSVPPathSenderTspecIntServLengthOfServiceData) PatternFlowRSVPPathSenderTspecIntServLengthOfServiceData { + obj.setNil() proto.Merge(obj.obj, msg) return obj } -func (obj *bgpSrtePreferenceSubTlv) ToProto() (*otg.BgpSrtePreferenceSubTlv, error) { +func (obj *patternFlowRSVPPathSenderTspecIntServLengthOfServiceData) ToProto() (*otg.PatternFlowRSVPPathSenderTspecIntServLengthOfServiceData, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -302451,7 +349270,7 @@ func (obj *bgpSrtePreferenceSubTlv) ToProto() (*otg.BgpSrtePreferenceSubTlv, err return obj.Msg(), nil } -func (obj *bgpSrtePreferenceSubTlv) FromProto(msg *otg.BgpSrtePreferenceSubTlv) (BgpSrtePreferenceSubTlv, error) { +func (obj *patternFlowRSVPPathSenderTspecIntServLengthOfServiceData) FromProto(msg *otg.PatternFlowRSVPPathSenderTspecIntServLengthOfServiceData) (PatternFlowRSVPPathSenderTspecIntServLengthOfServiceData, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -302460,7 +349279,7 @@ func (obj *bgpSrtePreferenceSubTlv) FromProto(msg *otg.BgpSrtePreferenceSubTlv) return newObj, nil } -func (obj *bgpSrtePreferenceSubTlv) ToPbText() (string, error) { +func (obj *patternFlowRSVPPathSenderTspecIntServLengthOfServiceData) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -302472,12 +349291,12 @@ func (obj *bgpSrtePreferenceSubTlv) ToPbText() (string, error) { return string(protoMarshal), nil } -func (obj *bgpSrtePreferenceSubTlv) FromPbText(value string) error { +func (obj *patternFlowRSVPPathSenderTspecIntServLengthOfServiceData) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj } - + obj.setNil() vErr := obj.validateToAndFrom() if vErr != nil { return vErr @@ -302485,7 +349304,7 @@ func (obj *bgpSrtePreferenceSubTlv) FromPbText(value string) error { return retObj } -func (obj *bgpSrtePreferenceSubTlv) ToYaml() (string, error) { +func (obj *patternFlowRSVPPathSenderTspecIntServLengthOfServiceData) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -302506,7 +349325,7 @@ func (obj *bgpSrtePreferenceSubTlv) ToYaml() (string, error) { return string(data), nil } -func (obj *bgpSrtePreferenceSubTlv) FromYaml(value string) error { +func (obj *patternFlowRSVPPathSenderTspecIntServLengthOfServiceData) FromYaml(value string) error { if value == "" { value = "{}" } @@ -302523,7 +349342,7 @@ func (obj *bgpSrtePreferenceSubTlv) FromYaml(value string) error { return fmt.Errorf("unmarshal error %s", strings.Replace( uError.Error(), "\u00a0", " ", -1)[7:]) } - + obj.setNil() vErr := obj.validateToAndFrom() if vErr != nil { return vErr @@ -302531,7 +349350,7 @@ func (obj *bgpSrtePreferenceSubTlv) FromYaml(value string) error { return nil } -func (obj *bgpSrtePreferenceSubTlv) ToJson() (string, error) { +func (obj *patternFlowRSVPPathSenderTspecIntServLengthOfServiceData) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -302549,7 +349368,7 @@ func (obj *bgpSrtePreferenceSubTlv) ToJson() (string, error) { return string(data), nil } -func (obj *bgpSrtePreferenceSubTlv) FromJson(value string) error { +func (obj *patternFlowRSVPPathSenderTspecIntServLengthOfServiceData) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -302562,7 +349381,7 @@ func (obj *bgpSrtePreferenceSubTlv) FromJson(value string) error { return fmt.Errorf("unmarshal error %s", strings.Replace( uError.Error(), "\u00a0", " ", -1)[7:]) } - + obj.setNil() err := obj.validateToAndFrom() if err != nil { return err @@ -302570,19 +349389,19 @@ func (obj *bgpSrtePreferenceSubTlv) FromJson(value string) error { return nil } -func (obj *bgpSrtePreferenceSubTlv) validateToAndFrom() error { +func (obj *patternFlowRSVPPathSenderTspecIntServLengthOfServiceData) validateToAndFrom() error { // emptyVars() obj.validateObj(&obj.validation, true) return obj.validationResult() } -func (obj *bgpSrtePreferenceSubTlv) Validate() error { +func (obj *patternFlowRSVPPathSenderTspecIntServLengthOfServiceData) Validate() error { // emptyVars() obj.validateObj(&obj.validation, false) return obj.validationResult() } -func (obj *bgpSrtePreferenceSubTlv) String() string { +func (obj *patternFlowRSVPPathSenderTspecIntServLengthOfServiceData) String() string { str, err := obj.ToYaml() if err != nil { return err.Error() @@ -302590,12 +349409,12 @@ func (obj *bgpSrtePreferenceSubTlv) String() string { return str } -func (obj *bgpSrtePreferenceSubTlv) Clone() (BgpSrtePreferenceSubTlv, error) { +func (obj *patternFlowRSVPPathSenderTspecIntServLengthOfServiceData) Clone() (PatternFlowRSVPPathSenderTspecIntServLengthOfServiceData, error) { vErr := obj.Validate() if vErr != nil { return nil, vErr } - newObj := NewBgpSrtePreferenceSubTlv() + newObj := NewPatternFlowRSVPPathSenderTspecIntServLengthOfServiceData() data, err := proto.Marshal(obj.Msg()) if err != nil { return nil, err @@ -302607,107 +349426,321 @@ func (obj *bgpSrtePreferenceSubTlv) Clone() (BgpSrtePreferenceSubTlv, error) { return newObj, nil } -// BgpSrtePreferenceSubTlv is configuration for BGP preference sub TLV of the SR Policy candidate path. -type BgpSrtePreferenceSubTlv interface { +func (obj *patternFlowRSVPPathSenderTspecIntServLengthOfServiceData) setNil() { + obj.incrementHolder = nil + obj.decrementHolder = nil + obj.validationErrors = nil + obj.warnings = nil + obj.constraints = make(map[string]map[string]Constraints) +} + +// PatternFlowRSVPPathSenderTspecIntServLengthOfServiceData is length of service data, 6 words not including per-service header. +type PatternFlowRSVPPathSenderTspecIntServLengthOfServiceData interface { Validation - // Msg marshals BgpSrtePreferenceSubTlv to protobuf object *otg.BgpSrtePreferenceSubTlv + // Msg marshals PatternFlowRSVPPathSenderTspecIntServLengthOfServiceData to protobuf object *otg.PatternFlowRSVPPathSenderTspecIntServLengthOfServiceData // and doesn't set defaults - Msg() *otg.BgpSrtePreferenceSubTlv - // SetMsg unmarshals BgpSrtePreferenceSubTlv from protobuf object *otg.BgpSrtePreferenceSubTlv + Msg() *otg.PatternFlowRSVPPathSenderTspecIntServLengthOfServiceData + // SetMsg unmarshals PatternFlowRSVPPathSenderTspecIntServLengthOfServiceData from protobuf object *otg.PatternFlowRSVPPathSenderTspecIntServLengthOfServiceData // and doesn't set defaults - SetMsg(*otg.BgpSrtePreferenceSubTlv) BgpSrtePreferenceSubTlv - // ToProto marshals BgpSrtePreferenceSubTlv to protobuf object *otg.BgpSrtePreferenceSubTlv - ToProto() (*otg.BgpSrtePreferenceSubTlv, error) - // ToPbText marshals BgpSrtePreferenceSubTlv to protobuf text + SetMsg(*otg.PatternFlowRSVPPathSenderTspecIntServLengthOfServiceData) PatternFlowRSVPPathSenderTspecIntServLengthOfServiceData + // ToProto marshals PatternFlowRSVPPathSenderTspecIntServLengthOfServiceData to protobuf object *otg.PatternFlowRSVPPathSenderTspecIntServLengthOfServiceData + ToProto() (*otg.PatternFlowRSVPPathSenderTspecIntServLengthOfServiceData, error) + // ToPbText marshals PatternFlowRSVPPathSenderTspecIntServLengthOfServiceData to protobuf text ToPbText() (string, error) - // ToYaml marshals BgpSrtePreferenceSubTlv to YAML text + // ToYaml marshals PatternFlowRSVPPathSenderTspecIntServLengthOfServiceData to YAML text ToYaml() (string, error) - // ToJson marshals BgpSrtePreferenceSubTlv to JSON text + // ToJson marshals PatternFlowRSVPPathSenderTspecIntServLengthOfServiceData to JSON text ToJson() (string, error) - // FromProto unmarshals BgpSrtePreferenceSubTlv from protobuf object *otg.BgpSrtePreferenceSubTlv - FromProto(msg *otg.BgpSrtePreferenceSubTlv) (BgpSrtePreferenceSubTlv, error) - // FromPbText unmarshals BgpSrtePreferenceSubTlv from protobuf text + // FromProto unmarshals PatternFlowRSVPPathSenderTspecIntServLengthOfServiceData from protobuf object *otg.PatternFlowRSVPPathSenderTspecIntServLengthOfServiceData + FromProto(msg *otg.PatternFlowRSVPPathSenderTspecIntServLengthOfServiceData) (PatternFlowRSVPPathSenderTspecIntServLengthOfServiceData, error) + // FromPbText unmarshals PatternFlowRSVPPathSenderTspecIntServLengthOfServiceData from protobuf text FromPbText(value string) error - // FromYaml unmarshals BgpSrtePreferenceSubTlv from YAML text + // FromYaml unmarshals PatternFlowRSVPPathSenderTspecIntServLengthOfServiceData from YAML text FromYaml(value string) error - // FromJson unmarshals BgpSrtePreferenceSubTlv from JSON text + // FromJson unmarshals PatternFlowRSVPPathSenderTspecIntServLengthOfServiceData from JSON text FromJson(value string) error - // Validate validates BgpSrtePreferenceSubTlv + // Validate validates PatternFlowRSVPPathSenderTspecIntServLengthOfServiceData Validate() error // A stringer function String() string // Clones the object - Clone() (BgpSrtePreferenceSubTlv, error) + Clone() (PatternFlowRSVPPathSenderTspecIntServLengthOfServiceData, error) validateToAndFrom() error validateObj(vObj *validation, set_default bool) setDefault() - // Preference returns uint32, set in BgpSrtePreferenceSubTlv. - Preference() uint32 - // SetPreference assigns uint32 provided by user to BgpSrtePreferenceSubTlv - SetPreference(value uint32) BgpSrtePreferenceSubTlv - // HasPreference checks if Preference has been set in BgpSrtePreferenceSubTlv - HasPreference() bool + // Choice returns PatternFlowRSVPPathSenderTspecIntServLengthOfServiceDataChoiceEnum, set in PatternFlowRSVPPathSenderTspecIntServLengthOfServiceData + Choice() PatternFlowRSVPPathSenderTspecIntServLengthOfServiceDataChoiceEnum + // SetChoice assigns PatternFlowRSVPPathSenderTspecIntServLengthOfServiceDataChoiceEnum provided by user to PatternFlowRSVPPathSenderTspecIntServLengthOfServiceData + SetChoice(value PatternFlowRSVPPathSenderTspecIntServLengthOfServiceDataChoiceEnum) PatternFlowRSVPPathSenderTspecIntServLengthOfServiceData + // HasChoice checks if Choice has been set in PatternFlowRSVPPathSenderTspecIntServLengthOfServiceData + HasChoice() bool + // Value returns uint32, set in PatternFlowRSVPPathSenderTspecIntServLengthOfServiceData. + Value() uint32 + // SetValue assigns uint32 provided by user to PatternFlowRSVPPathSenderTspecIntServLengthOfServiceData + SetValue(value uint32) PatternFlowRSVPPathSenderTspecIntServLengthOfServiceData + // HasValue checks if Value has been set in PatternFlowRSVPPathSenderTspecIntServLengthOfServiceData + HasValue() bool + // Values returns []uint32, set in PatternFlowRSVPPathSenderTspecIntServLengthOfServiceData. + Values() []uint32 + // SetValues assigns []uint32 provided by user to PatternFlowRSVPPathSenderTspecIntServLengthOfServiceData + SetValues(value []uint32) PatternFlowRSVPPathSenderTspecIntServLengthOfServiceData + // Increment returns PatternFlowRSVPPathSenderTspecIntServLengthOfServiceDataCounter, set in PatternFlowRSVPPathSenderTspecIntServLengthOfServiceData. + // PatternFlowRSVPPathSenderTspecIntServLengthOfServiceDataCounter is integer counter pattern + Increment() PatternFlowRSVPPathSenderTspecIntServLengthOfServiceDataCounter + // SetIncrement assigns PatternFlowRSVPPathSenderTspecIntServLengthOfServiceDataCounter provided by user to PatternFlowRSVPPathSenderTspecIntServLengthOfServiceData. + // PatternFlowRSVPPathSenderTspecIntServLengthOfServiceDataCounter is integer counter pattern + SetIncrement(value PatternFlowRSVPPathSenderTspecIntServLengthOfServiceDataCounter) PatternFlowRSVPPathSenderTspecIntServLengthOfServiceData + // HasIncrement checks if Increment has been set in PatternFlowRSVPPathSenderTspecIntServLengthOfServiceData + HasIncrement() bool + // Decrement returns PatternFlowRSVPPathSenderTspecIntServLengthOfServiceDataCounter, set in PatternFlowRSVPPathSenderTspecIntServLengthOfServiceData. + // PatternFlowRSVPPathSenderTspecIntServLengthOfServiceDataCounter is integer counter pattern + Decrement() PatternFlowRSVPPathSenderTspecIntServLengthOfServiceDataCounter + // SetDecrement assigns PatternFlowRSVPPathSenderTspecIntServLengthOfServiceDataCounter provided by user to PatternFlowRSVPPathSenderTspecIntServLengthOfServiceData. + // PatternFlowRSVPPathSenderTspecIntServLengthOfServiceDataCounter is integer counter pattern + SetDecrement(value PatternFlowRSVPPathSenderTspecIntServLengthOfServiceDataCounter) PatternFlowRSVPPathSenderTspecIntServLengthOfServiceData + // HasDecrement checks if Decrement has been set in PatternFlowRSVPPathSenderTspecIntServLengthOfServiceData + HasDecrement() bool + setNil() +} + +type PatternFlowRSVPPathSenderTspecIntServLengthOfServiceDataChoiceEnum string + +// Enum of Choice on PatternFlowRSVPPathSenderTspecIntServLengthOfServiceData +var PatternFlowRSVPPathSenderTspecIntServLengthOfServiceDataChoice = struct { + VALUE PatternFlowRSVPPathSenderTspecIntServLengthOfServiceDataChoiceEnum + VALUES PatternFlowRSVPPathSenderTspecIntServLengthOfServiceDataChoiceEnum + INCREMENT PatternFlowRSVPPathSenderTspecIntServLengthOfServiceDataChoiceEnum + DECREMENT PatternFlowRSVPPathSenderTspecIntServLengthOfServiceDataChoiceEnum +}{ + VALUE: PatternFlowRSVPPathSenderTspecIntServLengthOfServiceDataChoiceEnum("value"), + VALUES: PatternFlowRSVPPathSenderTspecIntServLengthOfServiceDataChoiceEnum("values"), + INCREMENT: PatternFlowRSVPPathSenderTspecIntServLengthOfServiceDataChoiceEnum("increment"), + DECREMENT: PatternFlowRSVPPathSenderTspecIntServLengthOfServiceDataChoiceEnum("decrement"), +} + +func (obj *patternFlowRSVPPathSenderTspecIntServLengthOfServiceData) Choice() PatternFlowRSVPPathSenderTspecIntServLengthOfServiceDataChoiceEnum { + return PatternFlowRSVPPathSenderTspecIntServLengthOfServiceDataChoiceEnum(obj.obj.Choice.Enum().String()) +} + +// description is TBD +// Choice returns a string +func (obj *patternFlowRSVPPathSenderTspecIntServLengthOfServiceData) HasChoice() bool { + return obj.obj.Choice != nil +} + +func (obj *patternFlowRSVPPathSenderTspecIntServLengthOfServiceData) SetChoice(value PatternFlowRSVPPathSenderTspecIntServLengthOfServiceDataChoiceEnum) PatternFlowRSVPPathSenderTspecIntServLengthOfServiceData { + intValue, ok := otg.PatternFlowRSVPPathSenderTspecIntServLengthOfServiceData_Choice_Enum_value[string(value)] + if !ok { + obj.validationErrors = append(obj.validationErrors, fmt.Sprintf( + "%s is not a valid choice on PatternFlowRSVPPathSenderTspecIntServLengthOfServiceDataChoiceEnum", string(value))) + return obj + } + enumValue := otg.PatternFlowRSVPPathSenderTspecIntServLengthOfServiceData_Choice_Enum(intValue) + obj.obj.Choice = &enumValue + obj.obj.Decrement = nil + obj.decrementHolder = nil + obj.obj.Increment = nil + obj.incrementHolder = nil + obj.obj.Values = nil + obj.obj.Value = nil + + if value == PatternFlowRSVPPathSenderTspecIntServLengthOfServiceDataChoice.VALUE { + defaultValue := uint32(6) + obj.obj.Value = &defaultValue + } + + if value == PatternFlowRSVPPathSenderTspecIntServLengthOfServiceDataChoice.VALUES { + defaultValue := []uint32{6} + obj.obj.Values = defaultValue + } + + if value == PatternFlowRSVPPathSenderTspecIntServLengthOfServiceDataChoice.INCREMENT { + obj.obj.Increment = NewPatternFlowRSVPPathSenderTspecIntServLengthOfServiceDataCounter().Msg() + } + + if value == PatternFlowRSVPPathSenderTspecIntServLengthOfServiceDataChoice.DECREMENT { + obj.obj.Decrement = NewPatternFlowRSVPPathSenderTspecIntServLengthOfServiceDataCounter().Msg() + } + + return obj +} + +// description is TBD +// Value returns a uint32 +func (obj *patternFlowRSVPPathSenderTspecIntServLengthOfServiceData) Value() uint32 { + + if obj.obj.Value == nil { + obj.SetChoice(PatternFlowRSVPPathSenderTspecIntServLengthOfServiceDataChoice.VALUE) + } + + return *obj.obj.Value + +} + +// description is TBD +// Value returns a uint32 +func (obj *patternFlowRSVPPathSenderTspecIntServLengthOfServiceData) HasValue() bool { + return obj.obj.Value != nil +} + +// description is TBD +// SetValue sets the uint32 value in the PatternFlowRSVPPathSenderTspecIntServLengthOfServiceData object +func (obj *patternFlowRSVPPathSenderTspecIntServLengthOfServiceData) SetValue(value uint32) PatternFlowRSVPPathSenderTspecIntServLengthOfServiceData { + obj.SetChoice(PatternFlowRSVPPathSenderTspecIntServLengthOfServiceDataChoice.VALUE) + obj.obj.Value = &value + return obj +} + +// description is TBD +// Values returns a []uint32 +func (obj *patternFlowRSVPPathSenderTspecIntServLengthOfServiceData) Values() []uint32 { + if obj.obj.Values == nil { + obj.SetValues([]uint32{6}) + } + return obj.obj.Values } -// The preference value of the SR Policy candidate path. -// Preference returns a uint32 -func (obj *bgpSrtePreferenceSubTlv) Preference() uint32 { +// description is TBD +// SetValues sets the []uint32 value in the PatternFlowRSVPPathSenderTspecIntServLengthOfServiceData object +func (obj *patternFlowRSVPPathSenderTspecIntServLengthOfServiceData) SetValues(value []uint32) PatternFlowRSVPPathSenderTspecIntServLengthOfServiceData { + obj.SetChoice(PatternFlowRSVPPathSenderTspecIntServLengthOfServiceDataChoice.VALUES) + if obj.obj.Values == nil { + obj.obj.Values = make([]uint32, 0) + } + obj.obj.Values = value - return *obj.obj.Preference + return obj +} +// description is TBD +// Increment returns a PatternFlowRSVPPathSenderTspecIntServLengthOfServiceDataCounter +func (obj *patternFlowRSVPPathSenderTspecIntServLengthOfServiceData) Increment() PatternFlowRSVPPathSenderTspecIntServLengthOfServiceDataCounter { + if obj.obj.Increment == nil { + obj.SetChoice(PatternFlowRSVPPathSenderTspecIntServLengthOfServiceDataChoice.INCREMENT) + } + if obj.incrementHolder == nil { + obj.incrementHolder = &patternFlowRSVPPathSenderTspecIntServLengthOfServiceDataCounter{obj: obj.obj.Increment} + } + return obj.incrementHolder } -// The preference value of the SR Policy candidate path. -// Preference returns a uint32 -func (obj *bgpSrtePreferenceSubTlv) HasPreference() bool { - return obj.obj.Preference != nil +// description is TBD +// Increment returns a PatternFlowRSVPPathSenderTspecIntServLengthOfServiceDataCounter +func (obj *patternFlowRSVPPathSenderTspecIntServLengthOfServiceData) HasIncrement() bool { + return obj.obj.Increment != nil } -// The preference value of the SR Policy candidate path. -// SetPreference sets the uint32 value in the BgpSrtePreferenceSubTlv object -func (obj *bgpSrtePreferenceSubTlv) SetPreference(value uint32) BgpSrtePreferenceSubTlv { +// description is TBD +// SetIncrement sets the PatternFlowRSVPPathSenderTspecIntServLengthOfServiceDataCounter value in the PatternFlowRSVPPathSenderTspecIntServLengthOfServiceData object +func (obj *patternFlowRSVPPathSenderTspecIntServLengthOfServiceData) SetIncrement(value PatternFlowRSVPPathSenderTspecIntServLengthOfServiceDataCounter) PatternFlowRSVPPathSenderTspecIntServLengthOfServiceData { + obj.SetChoice(PatternFlowRSVPPathSenderTspecIntServLengthOfServiceDataChoice.INCREMENT) + obj.incrementHolder = nil + obj.obj.Increment = value.Msg() - obj.obj.Preference = &value return obj } -func (obj *bgpSrtePreferenceSubTlv) validateObj(vObj *validation, set_default bool) { +// description is TBD +// Decrement returns a PatternFlowRSVPPathSenderTspecIntServLengthOfServiceDataCounter +func (obj *patternFlowRSVPPathSenderTspecIntServLengthOfServiceData) Decrement() PatternFlowRSVPPathSenderTspecIntServLengthOfServiceDataCounter { + if obj.obj.Decrement == nil { + obj.SetChoice(PatternFlowRSVPPathSenderTspecIntServLengthOfServiceDataChoice.DECREMENT) + } + if obj.decrementHolder == nil { + obj.decrementHolder = &patternFlowRSVPPathSenderTspecIntServLengthOfServiceDataCounter{obj: obj.obj.Decrement} + } + return obj.decrementHolder +} + +// description is TBD +// Decrement returns a PatternFlowRSVPPathSenderTspecIntServLengthOfServiceDataCounter +func (obj *patternFlowRSVPPathSenderTspecIntServLengthOfServiceData) HasDecrement() bool { + return obj.obj.Decrement != nil +} + +// description is TBD +// SetDecrement sets the PatternFlowRSVPPathSenderTspecIntServLengthOfServiceDataCounter value in the PatternFlowRSVPPathSenderTspecIntServLengthOfServiceData object +func (obj *patternFlowRSVPPathSenderTspecIntServLengthOfServiceData) SetDecrement(value PatternFlowRSVPPathSenderTspecIntServLengthOfServiceDataCounter) PatternFlowRSVPPathSenderTspecIntServLengthOfServiceData { + obj.SetChoice(PatternFlowRSVPPathSenderTspecIntServLengthOfServiceDataChoice.DECREMENT) + obj.decrementHolder = nil + obj.obj.Decrement = value.Msg() + + return obj +} + +func (obj *patternFlowRSVPPathSenderTspecIntServLengthOfServiceData) validateObj(vObj *validation, set_default bool) { if set_default { obj.setDefault() } + if obj.obj.Value != nil { + + if *obj.obj.Value > 65535 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("0 <= PatternFlowRSVPPathSenderTspecIntServLengthOfServiceData.Value <= 65535 but Got %d", *obj.obj.Value)) + } + + } + + if obj.obj.Values != nil { + + for _, item := range obj.obj.Values { + if item > 65535 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("min(uint32) <= PatternFlowRSVPPathSenderTspecIntServLengthOfServiceData.Values <= 65535 but Got %d", item)) + } + + } + + } + + if obj.obj.Increment != nil { + + obj.Increment().validateObj(vObj, set_default) + } + + if obj.obj.Decrement != nil { + + obj.Decrement().validateObj(vObj, set_default) + } + } -func (obj *bgpSrtePreferenceSubTlv) setDefault() { - if obj.obj.Preference == nil { - obj.SetPreference(0) +func (obj *patternFlowRSVPPathSenderTspecIntServLengthOfServiceData) setDefault() { + if obj.obj.Choice == nil { + obj.SetChoice(PatternFlowRSVPPathSenderTspecIntServLengthOfServiceDataChoice.VALUE) + } } -// ***** BgpSrtePolicyPrioritySubTlv ***** -type bgpSrtePolicyPrioritySubTlv struct { +// ***** PatternFlowRSVPPathSenderTspecIntServParameterIdTokenBucketTspec ***** +type patternFlowRSVPPathSenderTspecIntServParameterIdTokenBucketTspec struct { validation - obj *otg.BgpSrtePolicyPrioritySubTlv + obj *otg.PatternFlowRSVPPathSenderTspecIntServParameterIdTokenBucketTspec + incrementHolder PatternFlowRSVPPathSenderTspecIntServParameterIdTokenBucketTspecCounter + decrementHolder PatternFlowRSVPPathSenderTspecIntServParameterIdTokenBucketTspecCounter } -func NewBgpSrtePolicyPrioritySubTlv() BgpSrtePolicyPrioritySubTlv { - obj := bgpSrtePolicyPrioritySubTlv{obj: &otg.BgpSrtePolicyPrioritySubTlv{}} +func NewPatternFlowRSVPPathSenderTspecIntServParameterIdTokenBucketTspec() PatternFlowRSVPPathSenderTspecIntServParameterIdTokenBucketTspec { + obj := patternFlowRSVPPathSenderTspecIntServParameterIdTokenBucketTspec{obj: &otg.PatternFlowRSVPPathSenderTspecIntServParameterIdTokenBucketTspec{}} obj.setDefault() return &obj } -func (obj *bgpSrtePolicyPrioritySubTlv) Msg() *otg.BgpSrtePolicyPrioritySubTlv { +func (obj *patternFlowRSVPPathSenderTspecIntServParameterIdTokenBucketTspec) Msg() *otg.PatternFlowRSVPPathSenderTspecIntServParameterIdTokenBucketTspec { return obj.obj } -func (obj *bgpSrtePolicyPrioritySubTlv) SetMsg(msg *otg.BgpSrtePolicyPrioritySubTlv) BgpSrtePolicyPrioritySubTlv { - +func (obj *patternFlowRSVPPathSenderTspecIntServParameterIdTokenBucketTspec) SetMsg(msg *otg.PatternFlowRSVPPathSenderTspecIntServParameterIdTokenBucketTspec) PatternFlowRSVPPathSenderTspecIntServParameterIdTokenBucketTspec { + obj.setNil() proto.Merge(obj.obj, msg) return obj } -func (obj *bgpSrtePolicyPrioritySubTlv) ToProto() (*otg.BgpSrtePolicyPrioritySubTlv, error) { +func (obj *patternFlowRSVPPathSenderTspecIntServParameterIdTokenBucketTspec) ToProto() (*otg.PatternFlowRSVPPathSenderTspecIntServParameterIdTokenBucketTspec, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -302715,7 +349748,7 @@ func (obj *bgpSrtePolicyPrioritySubTlv) ToProto() (*otg.BgpSrtePolicyPrioritySub return obj.Msg(), nil } -func (obj *bgpSrtePolicyPrioritySubTlv) FromProto(msg *otg.BgpSrtePolicyPrioritySubTlv) (BgpSrtePolicyPrioritySubTlv, error) { +func (obj *patternFlowRSVPPathSenderTspecIntServParameterIdTokenBucketTspec) FromProto(msg *otg.PatternFlowRSVPPathSenderTspecIntServParameterIdTokenBucketTspec) (PatternFlowRSVPPathSenderTspecIntServParameterIdTokenBucketTspec, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -302724,7 +349757,7 @@ func (obj *bgpSrtePolicyPrioritySubTlv) FromProto(msg *otg.BgpSrtePolicyPriority return newObj, nil } -func (obj *bgpSrtePolicyPrioritySubTlv) ToPbText() (string, error) { +func (obj *patternFlowRSVPPathSenderTspecIntServParameterIdTokenBucketTspec) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -302736,12 +349769,12 @@ func (obj *bgpSrtePolicyPrioritySubTlv) ToPbText() (string, error) { return string(protoMarshal), nil } -func (obj *bgpSrtePolicyPrioritySubTlv) FromPbText(value string) error { +func (obj *patternFlowRSVPPathSenderTspecIntServParameterIdTokenBucketTspec) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj } - + obj.setNil() vErr := obj.validateToAndFrom() if vErr != nil { return vErr @@ -302749,7 +349782,7 @@ func (obj *bgpSrtePolicyPrioritySubTlv) FromPbText(value string) error { return retObj } -func (obj *bgpSrtePolicyPrioritySubTlv) ToYaml() (string, error) { +func (obj *patternFlowRSVPPathSenderTspecIntServParameterIdTokenBucketTspec) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -302770,7 +349803,7 @@ func (obj *bgpSrtePolicyPrioritySubTlv) ToYaml() (string, error) { return string(data), nil } -func (obj *bgpSrtePolicyPrioritySubTlv) FromYaml(value string) error { +func (obj *patternFlowRSVPPathSenderTspecIntServParameterIdTokenBucketTspec) FromYaml(value string) error { if value == "" { value = "{}" } @@ -302787,7 +349820,7 @@ func (obj *bgpSrtePolicyPrioritySubTlv) FromYaml(value string) error { return fmt.Errorf("unmarshal error %s", strings.Replace( uError.Error(), "\u00a0", " ", -1)[7:]) } - + obj.setNil() vErr := obj.validateToAndFrom() if vErr != nil { return vErr @@ -302795,7 +349828,7 @@ func (obj *bgpSrtePolicyPrioritySubTlv) FromYaml(value string) error { return nil } -func (obj *bgpSrtePolicyPrioritySubTlv) ToJson() (string, error) { +func (obj *patternFlowRSVPPathSenderTspecIntServParameterIdTokenBucketTspec) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -302813,7 +349846,7 @@ func (obj *bgpSrtePolicyPrioritySubTlv) ToJson() (string, error) { return string(data), nil } -func (obj *bgpSrtePolicyPrioritySubTlv) FromJson(value string) error { +func (obj *patternFlowRSVPPathSenderTspecIntServParameterIdTokenBucketTspec) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -302826,7 +349859,7 @@ func (obj *bgpSrtePolicyPrioritySubTlv) FromJson(value string) error { return fmt.Errorf("unmarshal error %s", strings.Replace( uError.Error(), "\u00a0", " ", -1)[7:]) } - + obj.setNil() err := obj.validateToAndFrom() if err != nil { return err @@ -302834,19 +349867,19 @@ func (obj *bgpSrtePolicyPrioritySubTlv) FromJson(value string) error { return nil } -func (obj *bgpSrtePolicyPrioritySubTlv) validateToAndFrom() error { +func (obj *patternFlowRSVPPathSenderTspecIntServParameterIdTokenBucketTspec) validateToAndFrom() error { // emptyVars() obj.validateObj(&obj.validation, true) return obj.validationResult() } -func (obj *bgpSrtePolicyPrioritySubTlv) Validate() error { +func (obj *patternFlowRSVPPathSenderTspecIntServParameterIdTokenBucketTspec) Validate() error { // emptyVars() obj.validateObj(&obj.validation, false) return obj.validationResult() } -func (obj *bgpSrtePolicyPrioritySubTlv) String() string { +func (obj *patternFlowRSVPPathSenderTspecIntServParameterIdTokenBucketTspec) String() string { str, err := obj.ToYaml() if err != nil { return err.Error() @@ -302854,12 +349887,12 @@ func (obj *bgpSrtePolicyPrioritySubTlv) String() string { return str } -func (obj *bgpSrtePolicyPrioritySubTlv) Clone() (BgpSrtePolicyPrioritySubTlv, error) { +func (obj *patternFlowRSVPPathSenderTspecIntServParameterIdTokenBucketTspec) Clone() (PatternFlowRSVPPathSenderTspecIntServParameterIdTokenBucketTspec, error) { vErr := obj.Validate() if vErr != nil { return nil, vErr } - newObj := NewBgpSrtePolicyPrioritySubTlv() + newObj := NewPatternFlowRSVPPathSenderTspecIntServParameterIdTokenBucketTspec() data, err := proto.Marshal(obj.Msg()) if err != nil { return nil, err @@ -302871,114 +349904,321 @@ func (obj *bgpSrtePolicyPrioritySubTlv) Clone() (BgpSrtePolicyPrioritySubTlv, er return newObj, nil } -// BgpSrtePolicyPrioritySubTlv is configuration for the Policy Priority sub-TLV. The Policy Priority to indicate the order in which the SR policies are re-computed upon topological change. -type BgpSrtePolicyPrioritySubTlv interface { +func (obj *patternFlowRSVPPathSenderTspecIntServParameterIdTokenBucketTspec) setNil() { + obj.incrementHolder = nil + obj.decrementHolder = nil + obj.validationErrors = nil + obj.warnings = nil + obj.constraints = make(map[string]map[string]Constraints) +} + +// PatternFlowRSVPPathSenderTspecIntServParameterIdTokenBucketTspec is parameter ID, parameter 127 (Token Bucket TSpec) +type PatternFlowRSVPPathSenderTspecIntServParameterIdTokenBucketTspec interface { Validation - // Msg marshals BgpSrtePolicyPrioritySubTlv to protobuf object *otg.BgpSrtePolicyPrioritySubTlv + // Msg marshals PatternFlowRSVPPathSenderTspecIntServParameterIdTokenBucketTspec to protobuf object *otg.PatternFlowRSVPPathSenderTspecIntServParameterIdTokenBucketTspec // and doesn't set defaults - Msg() *otg.BgpSrtePolicyPrioritySubTlv - // SetMsg unmarshals BgpSrtePolicyPrioritySubTlv from protobuf object *otg.BgpSrtePolicyPrioritySubTlv + Msg() *otg.PatternFlowRSVPPathSenderTspecIntServParameterIdTokenBucketTspec + // SetMsg unmarshals PatternFlowRSVPPathSenderTspecIntServParameterIdTokenBucketTspec from protobuf object *otg.PatternFlowRSVPPathSenderTspecIntServParameterIdTokenBucketTspec // and doesn't set defaults - SetMsg(*otg.BgpSrtePolicyPrioritySubTlv) BgpSrtePolicyPrioritySubTlv - // ToProto marshals BgpSrtePolicyPrioritySubTlv to protobuf object *otg.BgpSrtePolicyPrioritySubTlv - ToProto() (*otg.BgpSrtePolicyPrioritySubTlv, error) - // ToPbText marshals BgpSrtePolicyPrioritySubTlv to protobuf text + SetMsg(*otg.PatternFlowRSVPPathSenderTspecIntServParameterIdTokenBucketTspec) PatternFlowRSVPPathSenderTspecIntServParameterIdTokenBucketTspec + // ToProto marshals PatternFlowRSVPPathSenderTspecIntServParameterIdTokenBucketTspec to protobuf object *otg.PatternFlowRSVPPathSenderTspecIntServParameterIdTokenBucketTspec + ToProto() (*otg.PatternFlowRSVPPathSenderTspecIntServParameterIdTokenBucketTspec, error) + // ToPbText marshals PatternFlowRSVPPathSenderTspecIntServParameterIdTokenBucketTspec to protobuf text ToPbText() (string, error) - // ToYaml marshals BgpSrtePolicyPrioritySubTlv to YAML text + // ToYaml marshals PatternFlowRSVPPathSenderTspecIntServParameterIdTokenBucketTspec to YAML text ToYaml() (string, error) - // ToJson marshals BgpSrtePolicyPrioritySubTlv to JSON text + // ToJson marshals PatternFlowRSVPPathSenderTspecIntServParameterIdTokenBucketTspec to JSON text ToJson() (string, error) - // FromProto unmarshals BgpSrtePolicyPrioritySubTlv from protobuf object *otg.BgpSrtePolicyPrioritySubTlv - FromProto(msg *otg.BgpSrtePolicyPrioritySubTlv) (BgpSrtePolicyPrioritySubTlv, error) - // FromPbText unmarshals BgpSrtePolicyPrioritySubTlv from protobuf text + // FromProto unmarshals PatternFlowRSVPPathSenderTspecIntServParameterIdTokenBucketTspec from protobuf object *otg.PatternFlowRSVPPathSenderTspecIntServParameterIdTokenBucketTspec + FromProto(msg *otg.PatternFlowRSVPPathSenderTspecIntServParameterIdTokenBucketTspec) (PatternFlowRSVPPathSenderTspecIntServParameterIdTokenBucketTspec, error) + // FromPbText unmarshals PatternFlowRSVPPathSenderTspecIntServParameterIdTokenBucketTspec from protobuf text FromPbText(value string) error - // FromYaml unmarshals BgpSrtePolicyPrioritySubTlv from YAML text + // FromYaml unmarshals PatternFlowRSVPPathSenderTspecIntServParameterIdTokenBucketTspec from YAML text FromYaml(value string) error - // FromJson unmarshals BgpSrtePolicyPrioritySubTlv from JSON text + // FromJson unmarshals PatternFlowRSVPPathSenderTspecIntServParameterIdTokenBucketTspec from JSON text FromJson(value string) error - // Validate validates BgpSrtePolicyPrioritySubTlv + // Validate validates PatternFlowRSVPPathSenderTspecIntServParameterIdTokenBucketTspec Validate() error // A stringer function String() string // Clones the object - Clone() (BgpSrtePolicyPrioritySubTlv, error) + Clone() (PatternFlowRSVPPathSenderTspecIntServParameterIdTokenBucketTspec, error) validateToAndFrom() error validateObj(vObj *validation, set_default bool) setDefault() - // PolicyPriority returns uint32, set in BgpSrtePolicyPrioritySubTlv. - PolicyPriority() uint32 - // SetPolicyPriority assigns uint32 provided by user to BgpSrtePolicyPrioritySubTlv - SetPolicyPriority(value uint32) BgpSrtePolicyPrioritySubTlv - // HasPolicyPriority checks if PolicyPriority has been set in BgpSrtePolicyPrioritySubTlv - HasPolicyPriority() bool + // Choice returns PatternFlowRSVPPathSenderTspecIntServParameterIdTokenBucketTspecChoiceEnum, set in PatternFlowRSVPPathSenderTspecIntServParameterIdTokenBucketTspec + Choice() PatternFlowRSVPPathSenderTspecIntServParameterIdTokenBucketTspecChoiceEnum + // SetChoice assigns PatternFlowRSVPPathSenderTspecIntServParameterIdTokenBucketTspecChoiceEnum provided by user to PatternFlowRSVPPathSenderTspecIntServParameterIdTokenBucketTspec + SetChoice(value PatternFlowRSVPPathSenderTspecIntServParameterIdTokenBucketTspecChoiceEnum) PatternFlowRSVPPathSenderTspecIntServParameterIdTokenBucketTspec + // HasChoice checks if Choice has been set in PatternFlowRSVPPathSenderTspecIntServParameterIdTokenBucketTspec + HasChoice() bool + // Value returns uint32, set in PatternFlowRSVPPathSenderTspecIntServParameterIdTokenBucketTspec. + Value() uint32 + // SetValue assigns uint32 provided by user to PatternFlowRSVPPathSenderTspecIntServParameterIdTokenBucketTspec + SetValue(value uint32) PatternFlowRSVPPathSenderTspecIntServParameterIdTokenBucketTspec + // HasValue checks if Value has been set in PatternFlowRSVPPathSenderTspecIntServParameterIdTokenBucketTspec + HasValue() bool + // Values returns []uint32, set in PatternFlowRSVPPathSenderTspecIntServParameterIdTokenBucketTspec. + Values() []uint32 + // SetValues assigns []uint32 provided by user to PatternFlowRSVPPathSenderTspecIntServParameterIdTokenBucketTspec + SetValues(value []uint32) PatternFlowRSVPPathSenderTspecIntServParameterIdTokenBucketTspec + // Increment returns PatternFlowRSVPPathSenderTspecIntServParameterIdTokenBucketTspecCounter, set in PatternFlowRSVPPathSenderTspecIntServParameterIdTokenBucketTspec. + // PatternFlowRSVPPathSenderTspecIntServParameterIdTokenBucketTspecCounter is integer counter pattern + Increment() PatternFlowRSVPPathSenderTspecIntServParameterIdTokenBucketTspecCounter + // SetIncrement assigns PatternFlowRSVPPathSenderTspecIntServParameterIdTokenBucketTspecCounter provided by user to PatternFlowRSVPPathSenderTspecIntServParameterIdTokenBucketTspec. + // PatternFlowRSVPPathSenderTspecIntServParameterIdTokenBucketTspecCounter is integer counter pattern + SetIncrement(value PatternFlowRSVPPathSenderTspecIntServParameterIdTokenBucketTspecCounter) PatternFlowRSVPPathSenderTspecIntServParameterIdTokenBucketTspec + // HasIncrement checks if Increment has been set in PatternFlowRSVPPathSenderTspecIntServParameterIdTokenBucketTspec + HasIncrement() bool + // Decrement returns PatternFlowRSVPPathSenderTspecIntServParameterIdTokenBucketTspecCounter, set in PatternFlowRSVPPathSenderTspecIntServParameterIdTokenBucketTspec. + // PatternFlowRSVPPathSenderTspecIntServParameterIdTokenBucketTspecCounter is integer counter pattern + Decrement() PatternFlowRSVPPathSenderTspecIntServParameterIdTokenBucketTspecCounter + // SetDecrement assigns PatternFlowRSVPPathSenderTspecIntServParameterIdTokenBucketTspecCounter provided by user to PatternFlowRSVPPathSenderTspecIntServParameterIdTokenBucketTspec. + // PatternFlowRSVPPathSenderTspecIntServParameterIdTokenBucketTspecCounter is integer counter pattern + SetDecrement(value PatternFlowRSVPPathSenderTspecIntServParameterIdTokenBucketTspecCounter) PatternFlowRSVPPathSenderTspecIntServParameterIdTokenBucketTspec + // HasDecrement checks if Decrement has been set in PatternFlowRSVPPathSenderTspecIntServParameterIdTokenBucketTspec + HasDecrement() bool + setNil() } -// One-octet Priority value. -// PolicyPriority returns a uint32 -func (obj *bgpSrtePolicyPrioritySubTlv) PolicyPriority() uint32 { +type PatternFlowRSVPPathSenderTspecIntServParameterIdTokenBucketTspecChoiceEnum string - return *obj.obj.PolicyPriority +// Enum of Choice on PatternFlowRSVPPathSenderTspecIntServParameterIdTokenBucketTspec +var PatternFlowRSVPPathSenderTspecIntServParameterIdTokenBucketTspecChoice = struct { + VALUE PatternFlowRSVPPathSenderTspecIntServParameterIdTokenBucketTspecChoiceEnum + VALUES PatternFlowRSVPPathSenderTspecIntServParameterIdTokenBucketTspecChoiceEnum + INCREMENT PatternFlowRSVPPathSenderTspecIntServParameterIdTokenBucketTspecChoiceEnum + DECREMENT PatternFlowRSVPPathSenderTspecIntServParameterIdTokenBucketTspecChoiceEnum +}{ + VALUE: PatternFlowRSVPPathSenderTspecIntServParameterIdTokenBucketTspecChoiceEnum("value"), + VALUES: PatternFlowRSVPPathSenderTspecIntServParameterIdTokenBucketTspecChoiceEnum("values"), + INCREMENT: PatternFlowRSVPPathSenderTspecIntServParameterIdTokenBucketTspecChoiceEnum("increment"), + DECREMENT: PatternFlowRSVPPathSenderTspecIntServParameterIdTokenBucketTspecChoiceEnum("decrement"), +} +func (obj *patternFlowRSVPPathSenderTspecIntServParameterIdTokenBucketTspec) Choice() PatternFlowRSVPPathSenderTspecIntServParameterIdTokenBucketTspecChoiceEnum { + return PatternFlowRSVPPathSenderTspecIntServParameterIdTokenBucketTspecChoiceEnum(obj.obj.Choice.Enum().String()) } -// One-octet Priority value. -// PolicyPriority returns a uint32 -func (obj *bgpSrtePolicyPrioritySubTlv) HasPolicyPriority() bool { - return obj.obj.PolicyPriority != nil +// description is TBD +// Choice returns a string +func (obj *patternFlowRSVPPathSenderTspecIntServParameterIdTokenBucketTspec) HasChoice() bool { + return obj.obj.Choice != nil } -// One-octet Priority value. -// SetPolicyPriority sets the uint32 value in the BgpSrtePolicyPrioritySubTlv object -func (obj *bgpSrtePolicyPrioritySubTlv) SetPolicyPriority(value uint32) BgpSrtePolicyPrioritySubTlv { +func (obj *patternFlowRSVPPathSenderTspecIntServParameterIdTokenBucketTspec) SetChoice(value PatternFlowRSVPPathSenderTspecIntServParameterIdTokenBucketTspecChoiceEnum) PatternFlowRSVPPathSenderTspecIntServParameterIdTokenBucketTspec { + intValue, ok := otg.PatternFlowRSVPPathSenderTspecIntServParameterIdTokenBucketTspec_Choice_Enum_value[string(value)] + if !ok { + obj.validationErrors = append(obj.validationErrors, fmt.Sprintf( + "%s is not a valid choice on PatternFlowRSVPPathSenderTspecIntServParameterIdTokenBucketTspecChoiceEnum", string(value))) + return obj + } + enumValue := otg.PatternFlowRSVPPathSenderTspecIntServParameterIdTokenBucketTspec_Choice_Enum(intValue) + obj.obj.Choice = &enumValue + obj.obj.Decrement = nil + obj.decrementHolder = nil + obj.obj.Increment = nil + obj.incrementHolder = nil + obj.obj.Values = nil + obj.obj.Value = nil + + if value == PatternFlowRSVPPathSenderTspecIntServParameterIdTokenBucketTspecChoice.VALUE { + defaultValue := uint32(127) + obj.obj.Value = &defaultValue + } + + if value == PatternFlowRSVPPathSenderTspecIntServParameterIdTokenBucketTspecChoice.VALUES { + defaultValue := []uint32{127} + obj.obj.Values = defaultValue + } + + if value == PatternFlowRSVPPathSenderTspecIntServParameterIdTokenBucketTspecChoice.INCREMENT { + obj.obj.Increment = NewPatternFlowRSVPPathSenderTspecIntServParameterIdTokenBucketTspecCounter().Msg() + } + + if value == PatternFlowRSVPPathSenderTspecIntServParameterIdTokenBucketTspecChoice.DECREMENT { + obj.obj.Decrement = NewPatternFlowRSVPPathSenderTspecIntServParameterIdTokenBucketTspecCounter().Msg() + } - obj.obj.PolicyPriority = &value return obj } -func (obj *bgpSrtePolicyPrioritySubTlv) validateObj(vObj *validation, set_default bool) { +// description is TBD +// Value returns a uint32 +func (obj *patternFlowRSVPPathSenderTspecIntServParameterIdTokenBucketTspec) Value() uint32 { + + if obj.obj.Value == nil { + obj.SetChoice(PatternFlowRSVPPathSenderTspecIntServParameterIdTokenBucketTspecChoice.VALUE) + } + + return *obj.obj.Value + +} + +// description is TBD +// Value returns a uint32 +func (obj *patternFlowRSVPPathSenderTspecIntServParameterIdTokenBucketTspec) HasValue() bool { + return obj.obj.Value != nil +} + +// description is TBD +// SetValue sets the uint32 value in the PatternFlowRSVPPathSenderTspecIntServParameterIdTokenBucketTspec object +func (obj *patternFlowRSVPPathSenderTspecIntServParameterIdTokenBucketTspec) SetValue(value uint32) PatternFlowRSVPPathSenderTspecIntServParameterIdTokenBucketTspec { + obj.SetChoice(PatternFlowRSVPPathSenderTspecIntServParameterIdTokenBucketTspecChoice.VALUE) + obj.obj.Value = &value + return obj +} + +// description is TBD +// Values returns a []uint32 +func (obj *patternFlowRSVPPathSenderTspecIntServParameterIdTokenBucketTspec) Values() []uint32 { + if obj.obj.Values == nil { + obj.SetValues([]uint32{127}) + } + return obj.obj.Values +} + +// description is TBD +// SetValues sets the []uint32 value in the PatternFlowRSVPPathSenderTspecIntServParameterIdTokenBucketTspec object +func (obj *patternFlowRSVPPathSenderTspecIntServParameterIdTokenBucketTspec) SetValues(value []uint32) PatternFlowRSVPPathSenderTspecIntServParameterIdTokenBucketTspec { + obj.SetChoice(PatternFlowRSVPPathSenderTspecIntServParameterIdTokenBucketTspecChoice.VALUES) + if obj.obj.Values == nil { + obj.obj.Values = make([]uint32, 0) + } + obj.obj.Values = value + + return obj +} + +// description is TBD +// Increment returns a PatternFlowRSVPPathSenderTspecIntServParameterIdTokenBucketTspecCounter +func (obj *patternFlowRSVPPathSenderTspecIntServParameterIdTokenBucketTspec) Increment() PatternFlowRSVPPathSenderTspecIntServParameterIdTokenBucketTspecCounter { + if obj.obj.Increment == nil { + obj.SetChoice(PatternFlowRSVPPathSenderTspecIntServParameterIdTokenBucketTspecChoice.INCREMENT) + } + if obj.incrementHolder == nil { + obj.incrementHolder = &patternFlowRSVPPathSenderTspecIntServParameterIdTokenBucketTspecCounter{obj: obj.obj.Increment} + } + return obj.incrementHolder +} + +// description is TBD +// Increment returns a PatternFlowRSVPPathSenderTspecIntServParameterIdTokenBucketTspecCounter +func (obj *patternFlowRSVPPathSenderTspecIntServParameterIdTokenBucketTspec) HasIncrement() bool { + return obj.obj.Increment != nil +} + +// description is TBD +// SetIncrement sets the PatternFlowRSVPPathSenderTspecIntServParameterIdTokenBucketTspecCounter value in the PatternFlowRSVPPathSenderTspecIntServParameterIdTokenBucketTspec object +func (obj *patternFlowRSVPPathSenderTspecIntServParameterIdTokenBucketTspec) SetIncrement(value PatternFlowRSVPPathSenderTspecIntServParameterIdTokenBucketTspecCounter) PatternFlowRSVPPathSenderTspecIntServParameterIdTokenBucketTspec { + obj.SetChoice(PatternFlowRSVPPathSenderTspecIntServParameterIdTokenBucketTspecChoice.INCREMENT) + obj.incrementHolder = nil + obj.obj.Increment = value.Msg() + + return obj +} + +// description is TBD +// Decrement returns a PatternFlowRSVPPathSenderTspecIntServParameterIdTokenBucketTspecCounter +func (obj *patternFlowRSVPPathSenderTspecIntServParameterIdTokenBucketTspec) Decrement() PatternFlowRSVPPathSenderTspecIntServParameterIdTokenBucketTspecCounter { + if obj.obj.Decrement == nil { + obj.SetChoice(PatternFlowRSVPPathSenderTspecIntServParameterIdTokenBucketTspecChoice.DECREMENT) + } + if obj.decrementHolder == nil { + obj.decrementHolder = &patternFlowRSVPPathSenderTspecIntServParameterIdTokenBucketTspecCounter{obj: obj.obj.Decrement} + } + return obj.decrementHolder +} + +// description is TBD +// Decrement returns a PatternFlowRSVPPathSenderTspecIntServParameterIdTokenBucketTspecCounter +func (obj *patternFlowRSVPPathSenderTspecIntServParameterIdTokenBucketTspec) HasDecrement() bool { + return obj.obj.Decrement != nil +} + +// description is TBD +// SetDecrement sets the PatternFlowRSVPPathSenderTspecIntServParameterIdTokenBucketTspecCounter value in the PatternFlowRSVPPathSenderTspecIntServParameterIdTokenBucketTspec object +func (obj *patternFlowRSVPPathSenderTspecIntServParameterIdTokenBucketTspec) SetDecrement(value PatternFlowRSVPPathSenderTspecIntServParameterIdTokenBucketTspecCounter) PatternFlowRSVPPathSenderTspecIntServParameterIdTokenBucketTspec { + obj.SetChoice(PatternFlowRSVPPathSenderTspecIntServParameterIdTokenBucketTspecChoice.DECREMENT) + obj.decrementHolder = nil + obj.obj.Decrement = value.Msg() + + return obj +} + +func (obj *patternFlowRSVPPathSenderTspecIntServParameterIdTokenBucketTspec) validateObj(vObj *validation, set_default bool) { if set_default { obj.setDefault() } - if obj.obj.PolicyPriority != nil { + if obj.obj.Value != nil { - if *obj.obj.PolicyPriority > 255 { + if *obj.obj.Value > 255 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("0 <= BgpSrtePolicyPrioritySubTlv.PolicyPriority <= 255 but Got %d", *obj.obj.PolicyPriority)) + fmt.Sprintf("0 <= PatternFlowRSVPPathSenderTspecIntServParameterIdTokenBucketTspec.Value <= 255 but Got %d", *obj.obj.Value)) + } + + } + + if obj.obj.Values != nil { + + for _, item := range obj.obj.Values { + if item > 255 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("min(uint32) <= PatternFlowRSVPPathSenderTspecIntServParameterIdTokenBucketTspec.Values <= 255 but Got %d", item)) + } + } } + if obj.obj.Increment != nil { + + obj.Increment().validateObj(vObj, set_default) + } + + if obj.obj.Decrement != nil { + + obj.Decrement().validateObj(vObj, set_default) + } + } -func (obj *bgpSrtePolicyPrioritySubTlv) setDefault() { +func (obj *patternFlowRSVPPathSenderTspecIntServParameterIdTokenBucketTspec) setDefault() { + if obj.obj.Choice == nil { + obj.SetChoice(PatternFlowRSVPPathSenderTspecIntServParameterIdTokenBucketTspecChoice.VALUE) + + } } -// ***** BgpSrtePolicyNameSubTlv ***** -type bgpSrtePolicyNameSubTlv struct { +// ***** PatternFlowRSVPPathSenderTspecIntServParameter127Flag ***** +type patternFlowRSVPPathSenderTspecIntServParameter127Flag struct { validation - obj *otg.BgpSrtePolicyNameSubTlv + obj *otg.PatternFlowRSVPPathSenderTspecIntServParameter127Flag + incrementHolder PatternFlowRSVPPathSenderTspecIntServParameter127FlagCounter + decrementHolder PatternFlowRSVPPathSenderTspecIntServParameter127FlagCounter } -func NewBgpSrtePolicyNameSubTlv() BgpSrtePolicyNameSubTlv { - obj := bgpSrtePolicyNameSubTlv{obj: &otg.BgpSrtePolicyNameSubTlv{}} +func NewPatternFlowRSVPPathSenderTspecIntServParameter127Flag() PatternFlowRSVPPathSenderTspecIntServParameter127Flag { + obj := patternFlowRSVPPathSenderTspecIntServParameter127Flag{obj: &otg.PatternFlowRSVPPathSenderTspecIntServParameter127Flag{}} obj.setDefault() return &obj } -func (obj *bgpSrtePolicyNameSubTlv) Msg() *otg.BgpSrtePolicyNameSubTlv { +func (obj *patternFlowRSVPPathSenderTspecIntServParameter127Flag) Msg() *otg.PatternFlowRSVPPathSenderTspecIntServParameter127Flag { return obj.obj } -func (obj *bgpSrtePolicyNameSubTlv) SetMsg(msg *otg.BgpSrtePolicyNameSubTlv) BgpSrtePolicyNameSubTlv { - +func (obj *patternFlowRSVPPathSenderTspecIntServParameter127Flag) SetMsg(msg *otg.PatternFlowRSVPPathSenderTspecIntServParameter127Flag) PatternFlowRSVPPathSenderTspecIntServParameter127Flag { + obj.setNil() proto.Merge(obj.obj, msg) return obj } -func (obj *bgpSrtePolicyNameSubTlv) ToProto() (*otg.BgpSrtePolicyNameSubTlv, error) { +func (obj *patternFlowRSVPPathSenderTspecIntServParameter127Flag) ToProto() (*otg.PatternFlowRSVPPathSenderTspecIntServParameter127Flag, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -302986,7 +350226,7 @@ func (obj *bgpSrtePolicyNameSubTlv) ToProto() (*otg.BgpSrtePolicyNameSubTlv, err return obj.Msg(), nil } -func (obj *bgpSrtePolicyNameSubTlv) FromProto(msg *otg.BgpSrtePolicyNameSubTlv) (BgpSrtePolicyNameSubTlv, error) { +func (obj *patternFlowRSVPPathSenderTspecIntServParameter127Flag) FromProto(msg *otg.PatternFlowRSVPPathSenderTspecIntServParameter127Flag) (PatternFlowRSVPPathSenderTspecIntServParameter127Flag, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -302995,7 +350235,7 @@ func (obj *bgpSrtePolicyNameSubTlv) FromProto(msg *otg.BgpSrtePolicyNameSubTlv) return newObj, nil } -func (obj *bgpSrtePolicyNameSubTlv) ToPbText() (string, error) { +func (obj *patternFlowRSVPPathSenderTspecIntServParameter127Flag) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -303007,12 +350247,12 @@ func (obj *bgpSrtePolicyNameSubTlv) ToPbText() (string, error) { return string(protoMarshal), nil } -func (obj *bgpSrtePolicyNameSubTlv) FromPbText(value string) error { +func (obj *patternFlowRSVPPathSenderTspecIntServParameter127Flag) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj } - + obj.setNil() vErr := obj.validateToAndFrom() if vErr != nil { return vErr @@ -303020,7 +350260,7 @@ func (obj *bgpSrtePolicyNameSubTlv) FromPbText(value string) error { return retObj } -func (obj *bgpSrtePolicyNameSubTlv) ToYaml() (string, error) { +func (obj *patternFlowRSVPPathSenderTspecIntServParameter127Flag) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -303041,7 +350281,7 @@ func (obj *bgpSrtePolicyNameSubTlv) ToYaml() (string, error) { return string(data), nil } -func (obj *bgpSrtePolicyNameSubTlv) FromYaml(value string) error { +func (obj *patternFlowRSVPPathSenderTspecIntServParameter127Flag) FromYaml(value string) error { if value == "" { value = "{}" } @@ -303058,7 +350298,7 @@ func (obj *bgpSrtePolicyNameSubTlv) FromYaml(value string) error { return fmt.Errorf("unmarshal error %s", strings.Replace( uError.Error(), "\u00a0", " ", -1)[7:]) } - + obj.setNil() vErr := obj.validateToAndFrom() if vErr != nil { return vErr @@ -303066,7 +350306,7 @@ func (obj *bgpSrtePolicyNameSubTlv) FromYaml(value string) error { return nil } -func (obj *bgpSrtePolicyNameSubTlv) ToJson() (string, error) { +func (obj *patternFlowRSVPPathSenderTspecIntServParameter127Flag) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -303084,7 +350324,7 @@ func (obj *bgpSrtePolicyNameSubTlv) ToJson() (string, error) { return string(data), nil } -func (obj *bgpSrtePolicyNameSubTlv) FromJson(value string) error { +func (obj *patternFlowRSVPPathSenderTspecIntServParameter127Flag) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -303097,7 +350337,7 @@ func (obj *bgpSrtePolicyNameSubTlv) FromJson(value string) error { return fmt.Errorf("unmarshal error %s", strings.Replace( uError.Error(), "\u00a0", " ", -1)[7:]) } - + obj.setNil() err := obj.validateToAndFrom() if err != nil { return err @@ -303105,19 +350345,19 @@ func (obj *bgpSrtePolicyNameSubTlv) FromJson(value string) error { return nil } -func (obj *bgpSrtePolicyNameSubTlv) validateToAndFrom() error { +func (obj *patternFlowRSVPPathSenderTspecIntServParameter127Flag) validateToAndFrom() error { // emptyVars() obj.validateObj(&obj.validation, true) return obj.validationResult() } -func (obj *bgpSrtePolicyNameSubTlv) Validate() error { +func (obj *patternFlowRSVPPathSenderTspecIntServParameter127Flag) Validate() error { // emptyVars() obj.validateObj(&obj.validation, false) return obj.validationResult() } -func (obj *bgpSrtePolicyNameSubTlv) String() string { +func (obj *patternFlowRSVPPathSenderTspecIntServParameter127Flag) String() string { str, err := obj.ToYaml() if err != nil { return err.Error() @@ -303125,12 +350365,12 @@ func (obj *bgpSrtePolicyNameSubTlv) String() string { return str } -func (obj *bgpSrtePolicyNameSubTlv) Clone() (BgpSrtePolicyNameSubTlv, error) { +func (obj *patternFlowRSVPPathSenderTspecIntServParameter127Flag) Clone() (PatternFlowRSVPPathSenderTspecIntServParameter127Flag, error) { vErr := obj.Validate() if vErr != nil { return nil, vErr } - newObj := NewBgpSrtePolicyNameSubTlv() + newObj := NewPatternFlowRSVPPathSenderTspecIntServParameter127Flag() data, err := proto.Marshal(obj.Msg()) if err != nil { return nil, err @@ -303142,116 +350382,321 @@ func (obj *bgpSrtePolicyNameSubTlv) Clone() (BgpSrtePolicyNameSubTlv, error) { return newObj, nil } -// BgpSrtePolicyNameSubTlv is configuration for the Policy Name sub-TLV. The Policy Name sub-TLV is used to attach a symbolic name to the SR Policy candidate path. -type BgpSrtePolicyNameSubTlv interface { +func (obj *patternFlowRSVPPathSenderTspecIntServParameter127Flag) setNil() { + obj.incrementHolder = nil + obj.decrementHolder = nil + obj.validationErrors = nil + obj.warnings = nil + obj.constraints = make(map[string]map[string]Constraints) +} + +// PatternFlowRSVPPathSenderTspecIntServParameter127Flag is parameter 127 flags (none set) +type PatternFlowRSVPPathSenderTspecIntServParameter127Flag interface { Validation - // Msg marshals BgpSrtePolicyNameSubTlv to protobuf object *otg.BgpSrtePolicyNameSubTlv + // Msg marshals PatternFlowRSVPPathSenderTspecIntServParameter127Flag to protobuf object *otg.PatternFlowRSVPPathSenderTspecIntServParameter127Flag // and doesn't set defaults - Msg() *otg.BgpSrtePolicyNameSubTlv - // SetMsg unmarshals BgpSrtePolicyNameSubTlv from protobuf object *otg.BgpSrtePolicyNameSubTlv + Msg() *otg.PatternFlowRSVPPathSenderTspecIntServParameter127Flag + // SetMsg unmarshals PatternFlowRSVPPathSenderTspecIntServParameter127Flag from protobuf object *otg.PatternFlowRSVPPathSenderTspecIntServParameter127Flag // and doesn't set defaults - SetMsg(*otg.BgpSrtePolicyNameSubTlv) BgpSrtePolicyNameSubTlv - // ToProto marshals BgpSrtePolicyNameSubTlv to protobuf object *otg.BgpSrtePolicyNameSubTlv - ToProto() (*otg.BgpSrtePolicyNameSubTlv, error) - // ToPbText marshals BgpSrtePolicyNameSubTlv to protobuf text + SetMsg(*otg.PatternFlowRSVPPathSenderTspecIntServParameter127Flag) PatternFlowRSVPPathSenderTspecIntServParameter127Flag + // ToProto marshals PatternFlowRSVPPathSenderTspecIntServParameter127Flag to protobuf object *otg.PatternFlowRSVPPathSenderTspecIntServParameter127Flag + ToProto() (*otg.PatternFlowRSVPPathSenderTspecIntServParameter127Flag, error) + // ToPbText marshals PatternFlowRSVPPathSenderTspecIntServParameter127Flag to protobuf text ToPbText() (string, error) - // ToYaml marshals BgpSrtePolicyNameSubTlv to YAML text + // ToYaml marshals PatternFlowRSVPPathSenderTspecIntServParameter127Flag to YAML text ToYaml() (string, error) - // ToJson marshals BgpSrtePolicyNameSubTlv to JSON text + // ToJson marshals PatternFlowRSVPPathSenderTspecIntServParameter127Flag to JSON text ToJson() (string, error) - // FromProto unmarshals BgpSrtePolicyNameSubTlv from protobuf object *otg.BgpSrtePolicyNameSubTlv - FromProto(msg *otg.BgpSrtePolicyNameSubTlv) (BgpSrtePolicyNameSubTlv, error) - // FromPbText unmarshals BgpSrtePolicyNameSubTlv from protobuf text + // FromProto unmarshals PatternFlowRSVPPathSenderTspecIntServParameter127Flag from protobuf object *otg.PatternFlowRSVPPathSenderTspecIntServParameter127Flag + FromProto(msg *otg.PatternFlowRSVPPathSenderTspecIntServParameter127Flag) (PatternFlowRSVPPathSenderTspecIntServParameter127Flag, error) + // FromPbText unmarshals PatternFlowRSVPPathSenderTspecIntServParameter127Flag from protobuf text FromPbText(value string) error - // FromYaml unmarshals BgpSrtePolicyNameSubTlv from YAML text + // FromYaml unmarshals PatternFlowRSVPPathSenderTspecIntServParameter127Flag from YAML text FromYaml(value string) error - // FromJson unmarshals BgpSrtePolicyNameSubTlv from JSON text + // FromJson unmarshals PatternFlowRSVPPathSenderTspecIntServParameter127Flag from JSON text FromJson(value string) error - // Validate validates BgpSrtePolicyNameSubTlv + // Validate validates PatternFlowRSVPPathSenderTspecIntServParameter127Flag Validate() error // A stringer function String() string // Clones the object - Clone() (BgpSrtePolicyNameSubTlv, error) + Clone() (PatternFlowRSVPPathSenderTspecIntServParameter127Flag, error) validateToAndFrom() error validateObj(vObj *validation, set_default bool) setDefault() - // PolicyName returns string, set in BgpSrtePolicyNameSubTlv. - PolicyName() string - // SetPolicyName assigns string provided by user to BgpSrtePolicyNameSubTlv - SetPolicyName(value string) BgpSrtePolicyNameSubTlv - // HasPolicyName checks if PolicyName has been set in BgpSrtePolicyNameSubTlv - HasPolicyName() bool + // Choice returns PatternFlowRSVPPathSenderTspecIntServParameter127FlagChoiceEnum, set in PatternFlowRSVPPathSenderTspecIntServParameter127Flag + Choice() PatternFlowRSVPPathSenderTspecIntServParameter127FlagChoiceEnum + // SetChoice assigns PatternFlowRSVPPathSenderTspecIntServParameter127FlagChoiceEnum provided by user to PatternFlowRSVPPathSenderTspecIntServParameter127Flag + SetChoice(value PatternFlowRSVPPathSenderTspecIntServParameter127FlagChoiceEnum) PatternFlowRSVPPathSenderTspecIntServParameter127Flag + // HasChoice checks if Choice has been set in PatternFlowRSVPPathSenderTspecIntServParameter127Flag + HasChoice() bool + // Value returns uint32, set in PatternFlowRSVPPathSenderTspecIntServParameter127Flag. + Value() uint32 + // SetValue assigns uint32 provided by user to PatternFlowRSVPPathSenderTspecIntServParameter127Flag + SetValue(value uint32) PatternFlowRSVPPathSenderTspecIntServParameter127Flag + // HasValue checks if Value has been set in PatternFlowRSVPPathSenderTspecIntServParameter127Flag + HasValue() bool + // Values returns []uint32, set in PatternFlowRSVPPathSenderTspecIntServParameter127Flag. + Values() []uint32 + // SetValues assigns []uint32 provided by user to PatternFlowRSVPPathSenderTspecIntServParameter127Flag + SetValues(value []uint32) PatternFlowRSVPPathSenderTspecIntServParameter127Flag + // Increment returns PatternFlowRSVPPathSenderTspecIntServParameter127FlagCounter, set in PatternFlowRSVPPathSenderTspecIntServParameter127Flag. + // PatternFlowRSVPPathSenderTspecIntServParameter127FlagCounter is integer counter pattern + Increment() PatternFlowRSVPPathSenderTspecIntServParameter127FlagCounter + // SetIncrement assigns PatternFlowRSVPPathSenderTspecIntServParameter127FlagCounter provided by user to PatternFlowRSVPPathSenderTspecIntServParameter127Flag. + // PatternFlowRSVPPathSenderTspecIntServParameter127FlagCounter is integer counter pattern + SetIncrement(value PatternFlowRSVPPathSenderTspecIntServParameter127FlagCounter) PatternFlowRSVPPathSenderTspecIntServParameter127Flag + // HasIncrement checks if Increment has been set in PatternFlowRSVPPathSenderTspecIntServParameter127Flag + HasIncrement() bool + // Decrement returns PatternFlowRSVPPathSenderTspecIntServParameter127FlagCounter, set in PatternFlowRSVPPathSenderTspecIntServParameter127Flag. + // PatternFlowRSVPPathSenderTspecIntServParameter127FlagCounter is integer counter pattern + Decrement() PatternFlowRSVPPathSenderTspecIntServParameter127FlagCounter + // SetDecrement assigns PatternFlowRSVPPathSenderTspecIntServParameter127FlagCounter provided by user to PatternFlowRSVPPathSenderTspecIntServParameter127Flag. + // PatternFlowRSVPPathSenderTspecIntServParameter127FlagCounter is integer counter pattern + SetDecrement(value PatternFlowRSVPPathSenderTspecIntServParameter127FlagCounter) PatternFlowRSVPPathSenderTspecIntServParameter127Flag + // HasDecrement checks if Decrement has been set in PatternFlowRSVPPathSenderTspecIntServParameter127Flag + HasDecrement() bool + setNil() } -// Symbolic name for the policy that should be a string of printable ASCII characters, without a NULL terminator. -// PolicyName returns a string -func (obj *bgpSrtePolicyNameSubTlv) PolicyName() string { +type PatternFlowRSVPPathSenderTspecIntServParameter127FlagChoiceEnum string - return *obj.obj.PolicyName +// Enum of Choice on PatternFlowRSVPPathSenderTspecIntServParameter127Flag +var PatternFlowRSVPPathSenderTspecIntServParameter127FlagChoice = struct { + VALUE PatternFlowRSVPPathSenderTspecIntServParameter127FlagChoiceEnum + VALUES PatternFlowRSVPPathSenderTspecIntServParameter127FlagChoiceEnum + INCREMENT PatternFlowRSVPPathSenderTspecIntServParameter127FlagChoiceEnum + DECREMENT PatternFlowRSVPPathSenderTspecIntServParameter127FlagChoiceEnum +}{ + VALUE: PatternFlowRSVPPathSenderTspecIntServParameter127FlagChoiceEnum("value"), + VALUES: PatternFlowRSVPPathSenderTspecIntServParameter127FlagChoiceEnum("values"), + INCREMENT: PatternFlowRSVPPathSenderTspecIntServParameter127FlagChoiceEnum("increment"), + DECREMENT: PatternFlowRSVPPathSenderTspecIntServParameter127FlagChoiceEnum("decrement"), +} +func (obj *patternFlowRSVPPathSenderTspecIntServParameter127Flag) Choice() PatternFlowRSVPPathSenderTspecIntServParameter127FlagChoiceEnum { + return PatternFlowRSVPPathSenderTspecIntServParameter127FlagChoiceEnum(obj.obj.Choice.Enum().String()) } -// Symbolic name for the policy that should be a string of printable ASCII characters, without a NULL terminator. -// PolicyName returns a string -func (obj *bgpSrtePolicyNameSubTlv) HasPolicyName() bool { - return obj.obj.PolicyName != nil +// description is TBD +// Choice returns a string +func (obj *patternFlowRSVPPathSenderTspecIntServParameter127Flag) HasChoice() bool { + return obj.obj.Choice != nil } -// Symbolic name for the policy that should be a string of printable ASCII characters, without a NULL terminator. -// SetPolicyName sets the string value in the BgpSrtePolicyNameSubTlv object -func (obj *bgpSrtePolicyNameSubTlv) SetPolicyName(value string) BgpSrtePolicyNameSubTlv { +func (obj *patternFlowRSVPPathSenderTspecIntServParameter127Flag) SetChoice(value PatternFlowRSVPPathSenderTspecIntServParameter127FlagChoiceEnum) PatternFlowRSVPPathSenderTspecIntServParameter127Flag { + intValue, ok := otg.PatternFlowRSVPPathSenderTspecIntServParameter127Flag_Choice_Enum_value[string(value)] + if !ok { + obj.validationErrors = append(obj.validationErrors, fmt.Sprintf( + "%s is not a valid choice on PatternFlowRSVPPathSenderTspecIntServParameter127FlagChoiceEnum", string(value))) + return obj + } + enumValue := otg.PatternFlowRSVPPathSenderTspecIntServParameter127Flag_Choice_Enum(intValue) + obj.obj.Choice = &enumValue + obj.obj.Decrement = nil + obj.decrementHolder = nil + obj.obj.Increment = nil + obj.incrementHolder = nil + obj.obj.Values = nil + obj.obj.Value = nil + + if value == PatternFlowRSVPPathSenderTspecIntServParameter127FlagChoice.VALUE { + defaultValue := uint32(0) + obj.obj.Value = &defaultValue + } + + if value == PatternFlowRSVPPathSenderTspecIntServParameter127FlagChoice.VALUES { + defaultValue := []uint32{0} + obj.obj.Values = defaultValue + } + + if value == PatternFlowRSVPPathSenderTspecIntServParameter127FlagChoice.INCREMENT { + obj.obj.Increment = NewPatternFlowRSVPPathSenderTspecIntServParameter127FlagCounter().Msg() + } + + if value == PatternFlowRSVPPathSenderTspecIntServParameter127FlagChoice.DECREMENT { + obj.obj.Decrement = NewPatternFlowRSVPPathSenderTspecIntServParameter127FlagCounter().Msg() + } - obj.obj.PolicyName = &value return obj } -func (obj *bgpSrtePolicyNameSubTlv) validateObj(vObj *validation, set_default bool) { +// description is TBD +// Value returns a uint32 +func (obj *patternFlowRSVPPathSenderTspecIntServParameter127Flag) Value() uint32 { + + if obj.obj.Value == nil { + obj.SetChoice(PatternFlowRSVPPathSenderTspecIntServParameter127FlagChoice.VALUE) + } + + return *obj.obj.Value + +} + +// description is TBD +// Value returns a uint32 +func (obj *patternFlowRSVPPathSenderTspecIntServParameter127Flag) HasValue() bool { + return obj.obj.Value != nil +} + +// description is TBD +// SetValue sets the uint32 value in the PatternFlowRSVPPathSenderTspecIntServParameter127Flag object +func (obj *patternFlowRSVPPathSenderTspecIntServParameter127Flag) SetValue(value uint32) PatternFlowRSVPPathSenderTspecIntServParameter127Flag { + obj.SetChoice(PatternFlowRSVPPathSenderTspecIntServParameter127FlagChoice.VALUE) + obj.obj.Value = &value + return obj +} + +// description is TBD +// Values returns a []uint32 +func (obj *patternFlowRSVPPathSenderTspecIntServParameter127Flag) Values() []uint32 { + if obj.obj.Values == nil { + obj.SetValues([]uint32{0}) + } + return obj.obj.Values +} + +// description is TBD +// SetValues sets the []uint32 value in the PatternFlowRSVPPathSenderTspecIntServParameter127Flag object +func (obj *patternFlowRSVPPathSenderTspecIntServParameter127Flag) SetValues(value []uint32) PatternFlowRSVPPathSenderTspecIntServParameter127Flag { + obj.SetChoice(PatternFlowRSVPPathSenderTspecIntServParameter127FlagChoice.VALUES) + if obj.obj.Values == nil { + obj.obj.Values = make([]uint32, 0) + } + obj.obj.Values = value + + return obj +} + +// description is TBD +// Increment returns a PatternFlowRSVPPathSenderTspecIntServParameter127FlagCounter +func (obj *patternFlowRSVPPathSenderTspecIntServParameter127Flag) Increment() PatternFlowRSVPPathSenderTspecIntServParameter127FlagCounter { + if obj.obj.Increment == nil { + obj.SetChoice(PatternFlowRSVPPathSenderTspecIntServParameter127FlagChoice.INCREMENT) + } + if obj.incrementHolder == nil { + obj.incrementHolder = &patternFlowRSVPPathSenderTspecIntServParameter127FlagCounter{obj: obj.obj.Increment} + } + return obj.incrementHolder +} + +// description is TBD +// Increment returns a PatternFlowRSVPPathSenderTspecIntServParameter127FlagCounter +func (obj *patternFlowRSVPPathSenderTspecIntServParameter127Flag) HasIncrement() bool { + return obj.obj.Increment != nil +} + +// description is TBD +// SetIncrement sets the PatternFlowRSVPPathSenderTspecIntServParameter127FlagCounter value in the PatternFlowRSVPPathSenderTspecIntServParameter127Flag object +func (obj *patternFlowRSVPPathSenderTspecIntServParameter127Flag) SetIncrement(value PatternFlowRSVPPathSenderTspecIntServParameter127FlagCounter) PatternFlowRSVPPathSenderTspecIntServParameter127Flag { + obj.SetChoice(PatternFlowRSVPPathSenderTspecIntServParameter127FlagChoice.INCREMENT) + obj.incrementHolder = nil + obj.obj.Increment = value.Msg() + + return obj +} + +// description is TBD +// Decrement returns a PatternFlowRSVPPathSenderTspecIntServParameter127FlagCounter +func (obj *patternFlowRSVPPathSenderTspecIntServParameter127Flag) Decrement() PatternFlowRSVPPathSenderTspecIntServParameter127FlagCounter { + if obj.obj.Decrement == nil { + obj.SetChoice(PatternFlowRSVPPathSenderTspecIntServParameter127FlagChoice.DECREMENT) + } + if obj.decrementHolder == nil { + obj.decrementHolder = &patternFlowRSVPPathSenderTspecIntServParameter127FlagCounter{obj: obj.obj.Decrement} + } + return obj.decrementHolder +} + +// description is TBD +// Decrement returns a PatternFlowRSVPPathSenderTspecIntServParameter127FlagCounter +func (obj *patternFlowRSVPPathSenderTspecIntServParameter127Flag) HasDecrement() bool { + return obj.obj.Decrement != nil +} + +// description is TBD +// SetDecrement sets the PatternFlowRSVPPathSenderTspecIntServParameter127FlagCounter value in the PatternFlowRSVPPathSenderTspecIntServParameter127Flag object +func (obj *patternFlowRSVPPathSenderTspecIntServParameter127Flag) SetDecrement(value PatternFlowRSVPPathSenderTspecIntServParameter127FlagCounter) PatternFlowRSVPPathSenderTspecIntServParameter127Flag { + obj.SetChoice(PatternFlowRSVPPathSenderTspecIntServParameter127FlagChoice.DECREMENT) + obj.decrementHolder = nil + obj.obj.Decrement = value.Msg() + + return obj +} + +func (obj *patternFlowRSVPPathSenderTspecIntServParameter127Flag) validateObj(vObj *validation, set_default bool) { if set_default { obj.setDefault() } - if obj.obj.PolicyName != nil { + if obj.obj.Value != nil { - if len(*obj.obj.PolicyName) < 1 || len(*obj.obj.PolicyName) > 32 { + if *obj.obj.Value > 255 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf( - "1 <= length of BgpSrtePolicyNameSubTlv.PolicyName <= 32 but Got %d", - len(*obj.obj.PolicyName))) + fmt.Sprintf("0 <= PatternFlowRSVPPathSenderTspecIntServParameter127Flag.Value <= 255 but Got %d", *obj.obj.Value)) + } + + } + + if obj.obj.Values != nil { + + for _, item := range obj.obj.Values { + if item > 255 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("min(uint32) <= PatternFlowRSVPPathSenderTspecIntServParameter127Flag.Values <= 255 but Got %d", item)) + } + } } + if obj.obj.Increment != nil { + + obj.Increment().validateObj(vObj, set_default) + } + + if obj.obj.Decrement != nil { + + obj.Decrement().validateObj(vObj, set_default) + } + } -func (obj *bgpSrtePolicyNameSubTlv) setDefault() { +func (obj *patternFlowRSVPPathSenderTspecIntServParameter127Flag) setDefault() { + if obj.obj.Choice == nil { + obj.SetChoice(PatternFlowRSVPPathSenderTspecIntServParameter127FlagChoice.VALUE) + + } } -// ***** BgpSrteExplicitNullLabelPolicySubTlv ***** -type bgpSrteExplicitNullLabelPolicySubTlv struct { +// ***** PatternFlowRSVPPathSenderTspecIntServParameter127Length ***** +type patternFlowRSVPPathSenderTspecIntServParameter127Length struct { validation - obj *otg.BgpSrteExplicitNullLabelPolicySubTlv + obj *otg.PatternFlowRSVPPathSenderTspecIntServParameter127Length + incrementHolder PatternFlowRSVPPathSenderTspecIntServParameter127LengthCounter + decrementHolder PatternFlowRSVPPathSenderTspecIntServParameter127LengthCounter } -func NewBgpSrteExplicitNullLabelPolicySubTlv() BgpSrteExplicitNullLabelPolicySubTlv { - obj := bgpSrteExplicitNullLabelPolicySubTlv{obj: &otg.BgpSrteExplicitNullLabelPolicySubTlv{}} +func NewPatternFlowRSVPPathSenderTspecIntServParameter127Length() PatternFlowRSVPPathSenderTspecIntServParameter127Length { + obj := patternFlowRSVPPathSenderTspecIntServParameter127Length{obj: &otg.PatternFlowRSVPPathSenderTspecIntServParameter127Length{}} obj.setDefault() return &obj } -func (obj *bgpSrteExplicitNullLabelPolicySubTlv) Msg() *otg.BgpSrteExplicitNullLabelPolicySubTlv { +func (obj *patternFlowRSVPPathSenderTspecIntServParameter127Length) Msg() *otg.PatternFlowRSVPPathSenderTspecIntServParameter127Length { return obj.obj } -func (obj *bgpSrteExplicitNullLabelPolicySubTlv) SetMsg(msg *otg.BgpSrteExplicitNullLabelPolicySubTlv) BgpSrteExplicitNullLabelPolicySubTlv { - +func (obj *patternFlowRSVPPathSenderTspecIntServParameter127Length) SetMsg(msg *otg.PatternFlowRSVPPathSenderTspecIntServParameter127Length) PatternFlowRSVPPathSenderTspecIntServParameter127Length { + obj.setNil() proto.Merge(obj.obj, msg) return obj } -func (obj *bgpSrteExplicitNullLabelPolicySubTlv) ToProto() (*otg.BgpSrteExplicitNullLabelPolicySubTlv, error) { +func (obj *patternFlowRSVPPathSenderTspecIntServParameter127Length) ToProto() (*otg.PatternFlowRSVPPathSenderTspecIntServParameter127Length, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -303259,7 +350704,7 @@ func (obj *bgpSrteExplicitNullLabelPolicySubTlv) ToProto() (*otg.BgpSrteExplicit return obj.Msg(), nil } -func (obj *bgpSrteExplicitNullLabelPolicySubTlv) FromProto(msg *otg.BgpSrteExplicitNullLabelPolicySubTlv) (BgpSrteExplicitNullLabelPolicySubTlv, error) { +func (obj *patternFlowRSVPPathSenderTspecIntServParameter127Length) FromProto(msg *otg.PatternFlowRSVPPathSenderTspecIntServParameter127Length) (PatternFlowRSVPPathSenderTspecIntServParameter127Length, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -303268,7 +350713,7 @@ func (obj *bgpSrteExplicitNullLabelPolicySubTlv) FromProto(msg *otg.BgpSrteExpli return newObj, nil } -func (obj *bgpSrteExplicitNullLabelPolicySubTlv) ToPbText() (string, error) { +func (obj *patternFlowRSVPPathSenderTspecIntServParameter127Length) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -303280,12 +350725,12 @@ func (obj *bgpSrteExplicitNullLabelPolicySubTlv) ToPbText() (string, error) { return string(protoMarshal), nil } -func (obj *bgpSrteExplicitNullLabelPolicySubTlv) FromPbText(value string) error { +func (obj *patternFlowRSVPPathSenderTspecIntServParameter127Length) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj } - + obj.setNil() vErr := obj.validateToAndFrom() if vErr != nil { return vErr @@ -303293,7 +350738,7 @@ func (obj *bgpSrteExplicitNullLabelPolicySubTlv) FromPbText(value string) error return retObj } -func (obj *bgpSrteExplicitNullLabelPolicySubTlv) ToYaml() (string, error) { +func (obj *patternFlowRSVPPathSenderTspecIntServParameter127Length) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -303314,7 +350759,7 @@ func (obj *bgpSrteExplicitNullLabelPolicySubTlv) ToYaml() (string, error) { return string(data), nil } -func (obj *bgpSrteExplicitNullLabelPolicySubTlv) FromYaml(value string) error { +func (obj *patternFlowRSVPPathSenderTspecIntServParameter127Length) FromYaml(value string) error { if value == "" { value = "{}" } @@ -303331,7 +350776,7 @@ func (obj *bgpSrteExplicitNullLabelPolicySubTlv) FromYaml(value string) error { return fmt.Errorf("unmarshal error %s", strings.Replace( uError.Error(), "\u00a0", " ", -1)[7:]) } - + obj.setNil() vErr := obj.validateToAndFrom() if vErr != nil { return vErr @@ -303339,7 +350784,7 @@ func (obj *bgpSrteExplicitNullLabelPolicySubTlv) FromYaml(value string) error { return nil } -func (obj *bgpSrteExplicitNullLabelPolicySubTlv) ToJson() (string, error) { +func (obj *patternFlowRSVPPathSenderTspecIntServParameter127Length) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -303357,7 +350802,7 @@ func (obj *bgpSrteExplicitNullLabelPolicySubTlv) ToJson() (string, error) { return string(data), nil } -func (obj *bgpSrteExplicitNullLabelPolicySubTlv) FromJson(value string) error { +func (obj *patternFlowRSVPPathSenderTspecIntServParameter127Length) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -303370,7 +350815,7 @@ func (obj *bgpSrteExplicitNullLabelPolicySubTlv) FromJson(value string) error { return fmt.Errorf("unmarshal error %s", strings.Replace( uError.Error(), "\u00a0", " ", -1)[7:]) } - + obj.setNil() err := obj.validateToAndFrom() if err != nil { return err @@ -303378,19 +350823,19 @@ func (obj *bgpSrteExplicitNullLabelPolicySubTlv) FromJson(value string) error { return nil } -func (obj *bgpSrteExplicitNullLabelPolicySubTlv) validateToAndFrom() error { +func (obj *patternFlowRSVPPathSenderTspecIntServParameter127Length) validateToAndFrom() error { // emptyVars() obj.validateObj(&obj.validation, true) return obj.validationResult() } -func (obj *bgpSrteExplicitNullLabelPolicySubTlv) Validate() error { +func (obj *patternFlowRSVPPathSenderTspecIntServParameter127Length) Validate() error { // emptyVars() obj.validateObj(&obj.validation, false) return obj.validationResult() } -func (obj *bgpSrteExplicitNullLabelPolicySubTlv) String() string { +func (obj *patternFlowRSVPPathSenderTspecIntServParameter127Length) String() string { str, err := obj.ToYaml() if err != nil { return err.Error() @@ -303398,12 +350843,12 @@ func (obj *bgpSrteExplicitNullLabelPolicySubTlv) String() string { return str } -func (obj *bgpSrteExplicitNullLabelPolicySubTlv) Clone() (BgpSrteExplicitNullLabelPolicySubTlv, error) { +func (obj *patternFlowRSVPPathSenderTspecIntServParameter127Length) Clone() (PatternFlowRSVPPathSenderTspecIntServParameter127Length, error) { vErr := obj.Validate() if vErr != nil { return nil, vErr } - newObj := NewBgpSrteExplicitNullLabelPolicySubTlv() + newObj := NewPatternFlowRSVPPathSenderTspecIntServParameter127Length() data, err := proto.Marshal(obj.Msg()) if err != nil { return nil, err @@ -303415,127 +350860,321 @@ func (obj *bgpSrteExplicitNullLabelPolicySubTlv) Clone() (BgpSrteExplicitNullLab return newObj, nil } -// BgpSrteExplicitNullLabelPolicySubTlv is configuration for BGP explicit null label policy sub TLV settings. -type BgpSrteExplicitNullLabelPolicySubTlv interface { +func (obj *patternFlowRSVPPathSenderTspecIntServParameter127Length) setNil() { + obj.incrementHolder = nil + obj.decrementHolder = nil + obj.validationErrors = nil + obj.warnings = nil + obj.constraints = make(map[string]map[string]Constraints) +} + +// PatternFlowRSVPPathSenderTspecIntServParameter127Length is parameter 127 length, 5 words not including per-service header +type PatternFlowRSVPPathSenderTspecIntServParameter127Length interface { Validation - // Msg marshals BgpSrteExplicitNullLabelPolicySubTlv to protobuf object *otg.BgpSrteExplicitNullLabelPolicySubTlv + // Msg marshals PatternFlowRSVPPathSenderTspecIntServParameter127Length to protobuf object *otg.PatternFlowRSVPPathSenderTspecIntServParameter127Length // and doesn't set defaults - Msg() *otg.BgpSrteExplicitNullLabelPolicySubTlv - // SetMsg unmarshals BgpSrteExplicitNullLabelPolicySubTlv from protobuf object *otg.BgpSrteExplicitNullLabelPolicySubTlv + Msg() *otg.PatternFlowRSVPPathSenderTspecIntServParameter127Length + // SetMsg unmarshals PatternFlowRSVPPathSenderTspecIntServParameter127Length from protobuf object *otg.PatternFlowRSVPPathSenderTspecIntServParameter127Length // and doesn't set defaults - SetMsg(*otg.BgpSrteExplicitNullLabelPolicySubTlv) BgpSrteExplicitNullLabelPolicySubTlv - // ToProto marshals BgpSrteExplicitNullLabelPolicySubTlv to protobuf object *otg.BgpSrteExplicitNullLabelPolicySubTlv - ToProto() (*otg.BgpSrteExplicitNullLabelPolicySubTlv, error) - // ToPbText marshals BgpSrteExplicitNullLabelPolicySubTlv to protobuf text + SetMsg(*otg.PatternFlowRSVPPathSenderTspecIntServParameter127Length) PatternFlowRSVPPathSenderTspecIntServParameter127Length + // ToProto marshals PatternFlowRSVPPathSenderTspecIntServParameter127Length to protobuf object *otg.PatternFlowRSVPPathSenderTspecIntServParameter127Length + ToProto() (*otg.PatternFlowRSVPPathSenderTspecIntServParameter127Length, error) + // ToPbText marshals PatternFlowRSVPPathSenderTspecIntServParameter127Length to protobuf text ToPbText() (string, error) - // ToYaml marshals BgpSrteExplicitNullLabelPolicySubTlv to YAML text + // ToYaml marshals PatternFlowRSVPPathSenderTspecIntServParameter127Length to YAML text ToYaml() (string, error) - // ToJson marshals BgpSrteExplicitNullLabelPolicySubTlv to JSON text + // ToJson marshals PatternFlowRSVPPathSenderTspecIntServParameter127Length to JSON text ToJson() (string, error) - // FromProto unmarshals BgpSrteExplicitNullLabelPolicySubTlv from protobuf object *otg.BgpSrteExplicitNullLabelPolicySubTlv - FromProto(msg *otg.BgpSrteExplicitNullLabelPolicySubTlv) (BgpSrteExplicitNullLabelPolicySubTlv, error) - // FromPbText unmarshals BgpSrteExplicitNullLabelPolicySubTlv from protobuf text + // FromProto unmarshals PatternFlowRSVPPathSenderTspecIntServParameter127Length from protobuf object *otg.PatternFlowRSVPPathSenderTspecIntServParameter127Length + FromProto(msg *otg.PatternFlowRSVPPathSenderTspecIntServParameter127Length) (PatternFlowRSVPPathSenderTspecIntServParameter127Length, error) + // FromPbText unmarshals PatternFlowRSVPPathSenderTspecIntServParameter127Length from protobuf text FromPbText(value string) error - // FromYaml unmarshals BgpSrteExplicitNullLabelPolicySubTlv from YAML text + // FromYaml unmarshals PatternFlowRSVPPathSenderTspecIntServParameter127Length from YAML text FromYaml(value string) error - // FromJson unmarshals BgpSrteExplicitNullLabelPolicySubTlv from JSON text + // FromJson unmarshals PatternFlowRSVPPathSenderTspecIntServParameter127Length from JSON text FromJson(value string) error - // Validate validates BgpSrteExplicitNullLabelPolicySubTlv + // Validate validates PatternFlowRSVPPathSenderTspecIntServParameter127Length Validate() error // A stringer function String() string // Clones the object - Clone() (BgpSrteExplicitNullLabelPolicySubTlv, error) + Clone() (PatternFlowRSVPPathSenderTspecIntServParameter127Length, error) validateToAndFrom() error validateObj(vObj *validation, set_default bool) setDefault() - // ExplicitNullLabelPolicy returns BgpSrteExplicitNullLabelPolicySubTlvExplicitNullLabelPolicyEnum, set in BgpSrteExplicitNullLabelPolicySubTlv - ExplicitNullLabelPolicy() BgpSrteExplicitNullLabelPolicySubTlvExplicitNullLabelPolicyEnum - // SetExplicitNullLabelPolicy assigns BgpSrteExplicitNullLabelPolicySubTlvExplicitNullLabelPolicyEnum provided by user to BgpSrteExplicitNullLabelPolicySubTlv - SetExplicitNullLabelPolicy(value BgpSrteExplicitNullLabelPolicySubTlvExplicitNullLabelPolicyEnum) BgpSrteExplicitNullLabelPolicySubTlv - // HasExplicitNullLabelPolicy checks if ExplicitNullLabelPolicy has been set in BgpSrteExplicitNullLabelPolicySubTlv - HasExplicitNullLabelPolicy() bool + // Choice returns PatternFlowRSVPPathSenderTspecIntServParameter127LengthChoiceEnum, set in PatternFlowRSVPPathSenderTspecIntServParameter127Length + Choice() PatternFlowRSVPPathSenderTspecIntServParameter127LengthChoiceEnum + // SetChoice assigns PatternFlowRSVPPathSenderTspecIntServParameter127LengthChoiceEnum provided by user to PatternFlowRSVPPathSenderTspecIntServParameter127Length + SetChoice(value PatternFlowRSVPPathSenderTspecIntServParameter127LengthChoiceEnum) PatternFlowRSVPPathSenderTspecIntServParameter127Length + // HasChoice checks if Choice has been set in PatternFlowRSVPPathSenderTspecIntServParameter127Length + HasChoice() bool + // Value returns uint32, set in PatternFlowRSVPPathSenderTspecIntServParameter127Length. + Value() uint32 + // SetValue assigns uint32 provided by user to PatternFlowRSVPPathSenderTspecIntServParameter127Length + SetValue(value uint32) PatternFlowRSVPPathSenderTspecIntServParameter127Length + // HasValue checks if Value has been set in PatternFlowRSVPPathSenderTspecIntServParameter127Length + HasValue() bool + // Values returns []uint32, set in PatternFlowRSVPPathSenderTspecIntServParameter127Length. + Values() []uint32 + // SetValues assigns []uint32 provided by user to PatternFlowRSVPPathSenderTspecIntServParameter127Length + SetValues(value []uint32) PatternFlowRSVPPathSenderTspecIntServParameter127Length + // Increment returns PatternFlowRSVPPathSenderTspecIntServParameter127LengthCounter, set in PatternFlowRSVPPathSenderTspecIntServParameter127Length. + // PatternFlowRSVPPathSenderTspecIntServParameter127LengthCounter is integer counter pattern + Increment() PatternFlowRSVPPathSenderTspecIntServParameter127LengthCounter + // SetIncrement assigns PatternFlowRSVPPathSenderTspecIntServParameter127LengthCounter provided by user to PatternFlowRSVPPathSenderTspecIntServParameter127Length. + // PatternFlowRSVPPathSenderTspecIntServParameter127LengthCounter is integer counter pattern + SetIncrement(value PatternFlowRSVPPathSenderTspecIntServParameter127LengthCounter) PatternFlowRSVPPathSenderTspecIntServParameter127Length + // HasIncrement checks if Increment has been set in PatternFlowRSVPPathSenderTspecIntServParameter127Length + HasIncrement() bool + // Decrement returns PatternFlowRSVPPathSenderTspecIntServParameter127LengthCounter, set in PatternFlowRSVPPathSenderTspecIntServParameter127Length. + // PatternFlowRSVPPathSenderTspecIntServParameter127LengthCounter is integer counter pattern + Decrement() PatternFlowRSVPPathSenderTspecIntServParameter127LengthCounter + // SetDecrement assigns PatternFlowRSVPPathSenderTspecIntServParameter127LengthCounter provided by user to PatternFlowRSVPPathSenderTspecIntServParameter127Length. + // PatternFlowRSVPPathSenderTspecIntServParameter127LengthCounter is integer counter pattern + SetDecrement(value PatternFlowRSVPPathSenderTspecIntServParameter127LengthCounter) PatternFlowRSVPPathSenderTspecIntServParameter127Length + // HasDecrement checks if Decrement has been set in PatternFlowRSVPPathSenderTspecIntServParameter127Length + HasDecrement() bool + setNil() } -type BgpSrteExplicitNullLabelPolicySubTlvExplicitNullLabelPolicyEnum string +type PatternFlowRSVPPathSenderTspecIntServParameter127LengthChoiceEnum string -// Enum of ExplicitNullLabelPolicy on BgpSrteExplicitNullLabelPolicySubTlv -var BgpSrteExplicitNullLabelPolicySubTlvExplicitNullLabelPolicy = struct { - RESERVED_ENLP BgpSrteExplicitNullLabelPolicySubTlvExplicitNullLabelPolicyEnum - PUSH_IPV4_ENLP BgpSrteExplicitNullLabelPolicySubTlvExplicitNullLabelPolicyEnum - PUSH_IPV6_ENLP BgpSrteExplicitNullLabelPolicySubTlvExplicitNullLabelPolicyEnum - PUSH_IPV4_IPV6_ENLP BgpSrteExplicitNullLabelPolicySubTlvExplicitNullLabelPolicyEnum - DO_NOT_PUSH_ENLP BgpSrteExplicitNullLabelPolicySubTlvExplicitNullLabelPolicyEnum +// Enum of Choice on PatternFlowRSVPPathSenderTspecIntServParameter127Length +var PatternFlowRSVPPathSenderTspecIntServParameter127LengthChoice = struct { + VALUE PatternFlowRSVPPathSenderTspecIntServParameter127LengthChoiceEnum + VALUES PatternFlowRSVPPathSenderTspecIntServParameter127LengthChoiceEnum + INCREMENT PatternFlowRSVPPathSenderTspecIntServParameter127LengthChoiceEnum + DECREMENT PatternFlowRSVPPathSenderTspecIntServParameter127LengthChoiceEnum }{ - RESERVED_ENLP: BgpSrteExplicitNullLabelPolicySubTlvExplicitNullLabelPolicyEnum("reserved_enlp"), - PUSH_IPV4_ENLP: BgpSrteExplicitNullLabelPolicySubTlvExplicitNullLabelPolicyEnum("push_ipv4_enlp"), - PUSH_IPV6_ENLP: BgpSrteExplicitNullLabelPolicySubTlvExplicitNullLabelPolicyEnum("push_ipv6_enlp"), - PUSH_IPV4_IPV6_ENLP: BgpSrteExplicitNullLabelPolicySubTlvExplicitNullLabelPolicyEnum("push_ipv4_ipv6_enlp"), - DO_NOT_PUSH_ENLP: BgpSrteExplicitNullLabelPolicySubTlvExplicitNullLabelPolicyEnum("do_not_push_enlp"), + VALUE: PatternFlowRSVPPathSenderTspecIntServParameter127LengthChoiceEnum("value"), + VALUES: PatternFlowRSVPPathSenderTspecIntServParameter127LengthChoiceEnum("values"), + INCREMENT: PatternFlowRSVPPathSenderTspecIntServParameter127LengthChoiceEnum("increment"), + DECREMENT: PatternFlowRSVPPathSenderTspecIntServParameter127LengthChoiceEnum("decrement"), } -func (obj *bgpSrteExplicitNullLabelPolicySubTlv) ExplicitNullLabelPolicy() BgpSrteExplicitNullLabelPolicySubTlvExplicitNullLabelPolicyEnum { - return BgpSrteExplicitNullLabelPolicySubTlvExplicitNullLabelPolicyEnum(obj.obj.ExplicitNullLabelPolicy.Enum().String()) +func (obj *patternFlowRSVPPathSenderTspecIntServParameter127Length) Choice() PatternFlowRSVPPathSenderTspecIntServParameter127LengthChoiceEnum { + return PatternFlowRSVPPathSenderTspecIntServParameter127LengthChoiceEnum(obj.obj.Choice.Enum().String()) } -// The value of the explicit null label policy -// ExplicitNullLabelPolicy returns a string -func (obj *bgpSrteExplicitNullLabelPolicySubTlv) HasExplicitNullLabelPolicy() bool { - return obj.obj.ExplicitNullLabelPolicy != nil +// description is TBD +// Choice returns a string +func (obj *patternFlowRSVPPathSenderTspecIntServParameter127Length) HasChoice() bool { + return obj.obj.Choice != nil } -func (obj *bgpSrteExplicitNullLabelPolicySubTlv) SetExplicitNullLabelPolicy(value BgpSrteExplicitNullLabelPolicySubTlvExplicitNullLabelPolicyEnum) BgpSrteExplicitNullLabelPolicySubTlv { - intValue, ok := otg.BgpSrteExplicitNullLabelPolicySubTlv_ExplicitNullLabelPolicy_Enum_value[string(value)] +func (obj *patternFlowRSVPPathSenderTspecIntServParameter127Length) SetChoice(value PatternFlowRSVPPathSenderTspecIntServParameter127LengthChoiceEnum) PatternFlowRSVPPathSenderTspecIntServParameter127Length { + intValue, ok := otg.PatternFlowRSVPPathSenderTspecIntServParameter127Length_Choice_Enum_value[string(value)] if !ok { obj.validationErrors = append(obj.validationErrors, fmt.Sprintf( - "%s is not a valid choice on BgpSrteExplicitNullLabelPolicySubTlvExplicitNullLabelPolicyEnum", string(value))) + "%s is not a valid choice on PatternFlowRSVPPathSenderTspecIntServParameter127LengthChoiceEnum", string(value))) return obj } - enumValue := otg.BgpSrteExplicitNullLabelPolicySubTlv_ExplicitNullLabelPolicy_Enum(intValue) - obj.obj.ExplicitNullLabelPolicy = &enumValue + enumValue := otg.PatternFlowRSVPPathSenderTspecIntServParameter127Length_Choice_Enum(intValue) + obj.obj.Choice = &enumValue + obj.obj.Decrement = nil + obj.decrementHolder = nil + obj.obj.Increment = nil + obj.incrementHolder = nil + obj.obj.Values = nil + obj.obj.Value = nil + + if value == PatternFlowRSVPPathSenderTspecIntServParameter127LengthChoice.VALUE { + defaultValue := uint32(0) + obj.obj.Value = &defaultValue + } + + if value == PatternFlowRSVPPathSenderTspecIntServParameter127LengthChoice.VALUES { + defaultValue := []uint32{0} + obj.obj.Values = defaultValue + } + + if value == PatternFlowRSVPPathSenderTspecIntServParameter127LengthChoice.INCREMENT { + obj.obj.Increment = NewPatternFlowRSVPPathSenderTspecIntServParameter127LengthCounter().Msg() + } + + if value == PatternFlowRSVPPathSenderTspecIntServParameter127LengthChoice.DECREMENT { + obj.obj.Decrement = NewPatternFlowRSVPPathSenderTspecIntServParameter127LengthCounter().Msg() + } return obj } -func (obj *bgpSrteExplicitNullLabelPolicySubTlv) validateObj(vObj *validation, set_default bool) { +// description is TBD +// Value returns a uint32 +func (obj *patternFlowRSVPPathSenderTspecIntServParameter127Length) Value() uint32 { + + if obj.obj.Value == nil { + obj.SetChoice(PatternFlowRSVPPathSenderTspecIntServParameter127LengthChoice.VALUE) + } + + return *obj.obj.Value + +} + +// description is TBD +// Value returns a uint32 +func (obj *patternFlowRSVPPathSenderTspecIntServParameter127Length) HasValue() bool { + return obj.obj.Value != nil +} + +// description is TBD +// SetValue sets the uint32 value in the PatternFlowRSVPPathSenderTspecIntServParameter127Length object +func (obj *patternFlowRSVPPathSenderTspecIntServParameter127Length) SetValue(value uint32) PatternFlowRSVPPathSenderTspecIntServParameter127Length { + obj.SetChoice(PatternFlowRSVPPathSenderTspecIntServParameter127LengthChoice.VALUE) + obj.obj.Value = &value + return obj +} + +// description is TBD +// Values returns a []uint32 +func (obj *patternFlowRSVPPathSenderTspecIntServParameter127Length) Values() []uint32 { + if obj.obj.Values == nil { + obj.SetValues([]uint32{0}) + } + return obj.obj.Values +} + +// description is TBD +// SetValues sets the []uint32 value in the PatternFlowRSVPPathSenderTspecIntServParameter127Length object +func (obj *patternFlowRSVPPathSenderTspecIntServParameter127Length) SetValues(value []uint32) PatternFlowRSVPPathSenderTspecIntServParameter127Length { + obj.SetChoice(PatternFlowRSVPPathSenderTspecIntServParameter127LengthChoice.VALUES) + if obj.obj.Values == nil { + obj.obj.Values = make([]uint32, 0) + } + obj.obj.Values = value + + return obj +} + +// description is TBD +// Increment returns a PatternFlowRSVPPathSenderTspecIntServParameter127LengthCounter +func (obj *patternFlowRSVPPathSenderTspecIntServParameter127Length) Increment() PatternFlowRSVPPathSenderTspecIntServParameter127LengthCounter { + if obj.obj.Increment == nil { + obj.SetChoice(PatternFlowRSVPPathSenderTspecIntServParameter127LengthChoice.INCREMENT) + } + if obj.incrementHolder == nil { + obj.incrementHolder = &patternFlowRSVPPathSenderTspecIntServParameter127LengthCounter{obj: obj.obj.Increment} + } + return obj.incrementHolder +} + +// description is TBD +// Increment returns a PatternFlowRSVPPathSenderTspecIntServParameter127LengthCounter +func (obj *patternFlowRSVPPathSenderTspecIntServParameter127Length) HasIncrement() bool { + return obj.obj.Increment != nil +} + +// description is TBD +// SetIncrement sets the PatternFlowRSVPPathSenderTspecIntServParameter127LengthCounter value in the PatternFlowRSVPPathSenderTspecIntServParameter127Length object +func (obj *patternFlowRSVPPathSenderTspecIntServParameter127Length) SetIncrement(value PatternFlowRSVPPathSenderTspecIntServParameter127LengthCounter) PatternFlowRSVPPathSenderTspecIntServParameter127Length { + obj.SetChoice(PatternFlowRSVPPathSenderTspecIntServParameter127LengthChoice.INCREMENT) + obj.incrementHolder = nil + obj.obj.Increment = value.Msg() + + return obj +} + +// description is TBD +// Decrement returns a PatternFlowRSVPPathSenderTspecIntServParameter127LengthCounter +func (obj *patternFlowRSVPPathSenderTspecIntServParameter127Length) Decrement() PatternFlowRSVPPathSenderTspecIntServParameter127LengthCounter { + if obj.obj.Decrement == nil { + obj.SetChoice(PatternFlowRSVPPathSenderTspecIntServParameter127LengthChoice.DECREMENT) + } + if obj.decrementHolder == nil { + obj.decrementHolder = &patternFlowRSVPPathSenderTspecIntServParameter127LengthCounter{obj: obj.obj.Decrement} + } + return obj.decrementHolder +} + +// description is TBD +// Decrement returns a PatternFlowRSVPPathSenderTspecIntServParameter127LengthCounter +func (obj *patternFlowRSVPPathSenderTspecIntServParameter127Length) HasDecrement() bool { + return obj.obj.Decrement != nil +} + +// description is TBD +// SetDecrement sets the PatternFlowRSVPPathSenderTspecIntServParameter127LengthCounter value in the PatternFlowRSVPPathSenderTspecIntServParameter127Length object +func (obj *patternFlowRSVPPathSenderTspecIntServParameter127Length) SetDecrement(value PatternFlowRSVPPathSenderTspecIntServParameter127LengthCounter) PatternFlowRSVPPathSenderTspecIntServParameter127Length { + obj.SetChoice(PatternFlowRSVPPathSenderTspecIntServParameter127LengthChoice.DECREMENT) + obj.decrementHolder = nil + obj.obj.Decrement = value.Msg() + + return obj +} + +func (obj *patternFlowRSVPPathSenderTspecIntServParameter127Length) validateObj(vObj *validation, set_default bool) { if set_default { obj.setDefault() } + if obj.obj.Value != nil { + + if *obj.obj.Value > 65535 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("0 <= PatternFlowRSVPPathSenderTspecIntServParameter127Length.Value <= 65535 but Got %d", *obj.obj.Value)) + } + + } + + if obj.obj.Values != nil { + + for _, item := range obj.obj.Values { + if item > 65535 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("min(uint32) <= PatternFlowRSVPPathSenderTspecIntServParameter127Length.Values <= 65535 but Got %d", item)) + } + + } + + } + + if obj.obj.Increment != nil { + + obj.Increment().validateObj(vObj, set_default) + } + + if obj.obj.Decrement != nil { + + obj.Decrement().validateObj(vObj, set_default) + } + } -func (obj *bgpSrteExplicitNullLabelPolicySubTlv) setDefault() { - if obj.obj.ExplicitNullLabelPolicy == nil { - obj.SetExplicitNullLabelPolicy(BgpSrteExplicitNullLabelPolicySubTlvExplicitNullLabelPolicy.DO_NOT_PUSH_ENLP) +func (obj *patternFlowRSVPPathSenderTspecIntServParameter127Length) setDefault() { + if obj.obj.Choice == nil { + obj.SetChoice(PatternFlowRSVPPathSenderTspecIntServParameter127LengthChoice.VALUE) } } -// ***** BgpSrteSegmentList ***** -type bgpSrteSegmentList struct { +// ***** PatternFlowRSVPPathSenderTspecIntServMinimumPolicedUnit ***** +type patternFlowRSVPPathSenderTspecIntServMinimumPolicedUnit struct { validation - obj *otg.BgpSrteSegmentList - segmentsHolder BgpSrteSegmentListBgpSrteSegmentIter + obj *otg.PatternFlowRSVPPathSenderTspecIntServMinimumPolicedUnit + incrementHolder PatternFlowRSVPPathSenderTspecIntServMinimumPolicedUnitCounter + decrementHolder PatternFlowRSVPPathSenderTspecIntServMinimumPolicedUnitCounter } -func NewBgpSrteSegmentList() BgpSrteSegmentList { - obj := bgpSrteSegmentList{obj: &otg.BgpSrteSegmentList{}} +func NewPatternFlowRSVPPathSenderTspecIntServMinimumPolicedUnit() PatternFlowRSVPPathSenderTspecIntServMinimumPolicedUnit { + obj := patternFlowRSVPPathSenderTspecIntServMinimumPolicedUnit{obj: &otg.PatternFlowRSVPPathSenderTspecIntServMinimumPolicedUnit{}} obj.setDefault() return &obj } -func (obj *bgpSrteSegmentList) Msg() *otg.BgpSrteSegmentList { +func (obj *patternFlowRSVPPathSenderTspecIntServMinimumPolicedUnit) Msg() *otg.PatternFlowRSVPPathSenderTspecIntServMinimumPolicedUnit { return obj.obj } -func (obj *bgpSrteSegmentList) SetMsg(msg *otg.BgpSrteSegmentList) BgpSrteSegmentList { +func (obj *patternFlowRSVPPathSenderTspecIntServMinimumPolicedUnit) SetMsg(msg *otg.PatternFlowRSVPPathSenderTspecIntServMinimumPolicedUnit) PatternFlowRSVPPathSenderTspecIntServMinimumPolicedUnit { obj.setNil() proto.Merge(obj.obj, msg) return obj } -func (obj *bgpSrteSegmentList) ToProto() (*otg.BgpSrteSegmentList, error) { +func (obj *patternFlowRSVPPathSenderTspecIntServMinimumPolicedUnit) ToProto() (*otg.PatternFlowRSVPPathSenderTspecIntServMinimumPolicedUnit, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -303543,7 +351182,7 @@ func (obj *bgpSrteSegmentList) ToProto() (*otg.BgpSrteSegmentList, error) { return obj.Msg(), nil } -func (obj *bgpSrteSegmentList) FromProto(msg *otg.BgpSrteSegmentList) (BgpSrteSegmentList, error) { +func (obj *patternFlowRSVPPathSenderTspecIntServMinimumPolicedUnit) FromProto(msg *otg.PatternFlowRSVPPathSenderTspecIntServMinimumPolicedUnit) (PatternFlowRSVPPathSenderTspecIntServMinimumPolicedUnit, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -303552,7 +351191,7 @@ func (obj *bgpSrteSegmentList) FromProto(msg *otg.BgpSrteSegmentList) (BgpSrteSe return newObj, nil } -func (obj *bgpSrteSegmentList) ToPbText() (string, error) { +func (obj *patternFlowRSVPPathSenderTspecIntServMinimumPolicedUnit) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -303564,7 +351203,7 @@ func (obj *bgpSrteSegmentList) ToPbText() (string, error) { return string(protoMarshal), nil } -func (obj *bgpSrteSegmentList) FromPbText(value string) error { +func (obj *patternFlowRSVPPathSenderTspecIntServMinimumPolicedUnit) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj @@ -303577,7 +351216,7 @@ func (obj *bgpSrteSegmentList) FromPbText(value string) error { return retObj } -func (obj *bgpSrteSegmentList) ToYaml() (string, error) { +func (obj *patternFlowRSVPPathSenderTspecIntServMinimumPolicedUnit) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -303598,7 +351237,7 @@ func (obj *bgpSrteSegmentList) ToYaml() (string, error) { return string(data), nil } -func (obj *bgpSrteSegmentList) FromYaml(value string) error { +func (obj *patternFlowRSVPPathSenderTspecIntServMinimumPolicedUnit) FromYaml(value string) error { if value == "" { value = "{}" } @@ -303623,7 +351262,7 @@ func (obj *bgpSrteSegmentList) FromYaml(value string) error { return nil } -func (obj *bgpSrteSegmentList) ToJson() (string, error) { +func (obj *patternFlowRSVPPathSenderTspecIntServMinimumPolicedUnit) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -303641,7 +351280,7 @@ func (obj *bgpSrteSegmentList) ToJson() (string, error) { return string(data), nil } -func (obj *bgpSrteSegmentList) FromJson(value string) error { +func (obj *patternFlowRSVPPathSenderTspecIntServMinimumPolicedUnit) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -303662,19 +351301,19 @@ func (obj *bgpSrteSegmentList) FromJson(value string) error { return nil } -func (obj *bgpSrteSegmentList) validateToAndFrom() error { +func (obj *patternFlowRSVPPathSenderTspecIntServMinimumPolicedUnit) validateToAndFrom() error { // emptyVars() obj.validateObj(&obj.validation, true) return obj.validationResult() } -func (obj *bgpSrteSegmentList) Validate() error { +func (obj *patternFlowRSVPPathSenderTspecIntServMinimumPolicedUnit) Validate() error { // emptyVars() obj.validateObj(&obj.validation, false) return obj.validationResult() } -func (obj *bgpSrteSegmentList) String() string { +func (obj *patternFlowRSVPPathSenderTspecIntServMinimumPolicedUnit) String() string { str, err := obj.ToYaml() if err != nil { return err.Error() @@ -303682,12 +351321,12 @@ func (obj *bgpSrteSegmentList) String() string { return str } -func (obj *bgpSrteSegmentList) Clone() (BgpSrteSegmentList, error) { +func (obj *patternFlowRSVPPathSenderTspecIntServMinimumPolicedUnit) Clone() (PatternFlowRSVPPathSenderTspecIntServMinimumPolicedUnit, error) { vErr := obj.Validate() if vErr != nil { return nil, vErr } - newObj := NewBgpSrteSegmentList() + newObj := NewPatternFlowRSVPPathSenderTspecIntServMinimumPolicedUnit() data, err := proto.Marshal(obj.Msg()) if err != nil { return nil, err @@ -303699,283 +351338,298 @@ func (obj *bgpSrteSegmentList) Clone() (BgpSrteSegmentList, error) { return newObj, nil } -func (obj *bgpSrteSegmentList) setNil() { - obj.segmentsHolder = nil +func (obj *patternFlowRSVPPathSenderTspecIntServMinimumPolicedUnit) setNil() { + obj.incrementHolder = nil + obj.decrementHolder = nil obj.validationErrors = nil obj.warnings = nil obj.constraints = make(map[string]map[string]Constraints) } -// BgpSrteSegmentList is optional configuration for BGP SR TE Policy segment list. The Segment List sub-TLV encodes a single explicit path towards the Endpoint. -type BgpSrteSegmentList interface { +// PatternFlowRSVPPathSenderTspecIntServMinimumPolicedUnit is the minimum policed unit parameter should generally be set equal to the size of the smallest packet generated by the application. +type PatternFlowRSVPPathSenderTspecIntServMinimumPolicedUnit interface { Validation - // Msg marshals BgpSrteSegmentList to protobuf object *otg.BgpSrteSegmentList + // Msg marshals PatternFlowRSVPPathSenderTspecIntServMinimumPolicedUnit to protobuf object *otg.PatternFlowRSVPPathSenderTspecIntServMinimumPolicedUnit // and doesn't set defaults - Msg() *otg.BgpSrteSegmentList - // SetMsg unmarshals BgpSrteSegmentList from protobuf object *otg.BgpSrteSegmentList + Msg() *otg.PatternFlowRSVPPathSenderTspecIntServMinimumPolicedUnit + // SetMsg unmarshals PatternFlowRSVPPathSenderTspecIntServMinimumPolicedUnit from protobuf object *otg.PatternFlowRSVPPathSenderTspecIntServMinimumPolicedUnit // and doesn't set defaults - SetMsg(*otg.BgpSrteSegmentList) BgpSrteSegmentList - // ToProto marshals BgpSrteSegmentList to protobuf object *otg.BgpSrteSegmentList - ToProto() (*otg.BgpSrteSegmentList, error) - // ToPbText marshals BgpSrteSegmentList to protobuf text + SetMsg(*otg.PatternFlowRSVPPathSenderTspecIntServMinimumPolicedUnit) PatternFlowRSVPPathSenderTspecIntServMinimumPolicedUnit + // ToProto marshals PatternFlowRSVPPathSenderTspecIntServMinimumPolicedUnit to protobuf object *otg.PatternFlowRSVPPathSenderTspecIntServMinimumPolicedUnit + ToProto() (*otg.PatternFlowRSVPPathSenderTspecIntServMinimumPolicedUnit, error) + // ToPbText marshals PatternFlowRSVPPathSenderTspecIntServMinimumPolicedUnit to protobuf text ToPbText() (string, error) - // ToYaml marshals BgpSrteSegmentList to YAML text + // ToYaml marshals PatternFlowRSVPPathSenderTspecIntServMinimumPolicedUnit to YAML text ToYaml() (string, error) - // ToJson marshals BgpSrteSegmentList to JSON text + // ToJson marshals PatternFlowRSVPPathSenderTspecIntServMinimumPolicedUnit to JSON text ToJson() (string, error) - // FromProto unmarshals BgpSrteSegmentList from protobuf object *otg.BgpSrteSegmentList - FromProto(msg *otg.BgpSrteSegmentList) (BgpSrteSegmentList, error) - // FromPbText unmarshals BgpSrteSegmentList from protobuf text + // FromProto unmarshals PatternFlowRSVPPathSenderTspecIntServMinimumPolicedUnit from protobuf object *otg.PatternFlowRSVPPathSenderTspecIntServMinimumPolicedUnit + FromProto(msg *otg.PatternFlowRSVPPathSenderTspecIntServMinimumPolicedUnit) (PatternFlowRSVPPathSenderTspecIntServMinimumPolicedUnit, error) + // FromPbText unmarshals PatternFlowRSVPPathSenderTspecIntServMinimumPolicedUnit from protobuf text FromPbText(value string) error - // FromYaml unmarshals BgpSrteSegmentList from YAML text + // FromYaml unmarshals PatternFlowRSVPPathSenderTspecIntServMinimumPolicedUnit from YAML text FromYaml(value string) error - // FromJson unmarshals BgpSrteSegmentList from JSON text + // FromJson unmarshals PatternFlowRSVPPathSenderTspecIntServMinimumPolicedUnit from JSON text FromJson(value string) error - // Validate validates BgpSrteSegmentList + // Validate validates PatternFlowRSVPPathSenderTspecIntServMinimumPolicedUnit Validate() error // A stringer function String() string // Clones the object - Clone() (BgpSrteSegmentList, error) + Clone() (PatternFlowRSVPPathSenderTspecIntServMinimumPolicedUnit, error) validateToAndFrom() error validateObj(vObj *validation, set_default bool) setDefault() - // Weight returns uint32, set in BgpSrteSegmentList. - Weight() uint32 - // SetWeight assigns uint32 provided by user to BgpSrteSegmentList - SetWeight(value uint32) BgpSrteSegmentList - // HasWeight checks if Weight has been set in BgpSrteSegmentList - HasWeight() bool - // Segments returns BgpSrteSegmentListBgpSrteSegmentIterIter, set in BgpSrteSegmentList - Segments() BgpSrteSegmentListBgpSrteSegmentIter - // Name returns string, set in BgpSrteSegmentList. - Name() string - // SetName assigns string provided by user to BgpSrteSegmentList - SetName(value string) BgpSrteSegmentList - // Active returns bool, set in BgpSrteSegmentList. - Active() bool - // SetActive assigns bool provided by user to BgpSrteSegmentList - SetActive(value bool) BgpSrteSegmentList - // HasActive checks if Active has been set in BgpSrteSegmentList - HasActive() bool + // Choice returns PatternFlowRSVPPathSenderTspecIntServMinimumPolicedUnitChoiceEnum, set in PatternFlowRSVPPathSenderTspecIntServMinimumPolicedUnit + Choice() PatternFlowRSVPPathSenderTspecIntServMinimumPolicedUnitChoiceEnum + // SetChoice assigns PatternFlowRSVPPathSenderTspecIntServMinimumPolicedUnitChoiceEnum provided by user to PatternFlowRSVPPathSenderTspecIntServMinimumPolicedUnit + SetChoice(value PatternFlowRSVPPathSenderTspecIntServMinimumPolicedUnitChoiceEnum) PatternFlowRSVPPathSenderTspecIntServMinimumPolicedUnit + // HasChoice checks if Choice has been set in PatternFlowRSVPPathSenderTspecIntServMinimumPolicedUnit + HasChoice() bool + // Value returns uint32, set in PatternFlowRSVPPathSenderTspecIntServMinimumPolicedUnit. + Value() uint32 + // SetValue assigns uint32 provided by user to PatternFlowRSVPPathSenderTspecIntServMinimumPolicedUnit + SetValue(value uint32) PatternFlowRSVPPathSenderTspecIntServMinimumPolicedUnit + // HasValue checks if Value has been set in PatternFlowRSVPPathSenderTspecIntServMinimumPolicedUnit + HasValue() bool + // Values returns []uint32, set in PatternFlowRSVPPathSenderTspecIntServMinimumPolicedUnit. + Values() []uint32 + // SetValues assigns []uint32 provided by user to PatternFlowRSVPPathSenderTspecIntServMinimumPolicedUnit + SetValues(value []uint32) PatternFlowRSVPPathSenderTspecIntServMinimumPolicedUnit + // Increment returns PatternFlowRSVPPathSenderTspecIntServMinimumPolicedUnitCounter, set in PatternFlowRSVPPathSenderTspecIntServMinimumPolicedUnit. + // PatternFlowRSVPPathSenderTspecIntServMinimumPolicedUnitCounter is integer counter pattern + Increment() PatternFlowRSVPPathSenderTspecIntServMinimumPolicedUnitCounter + // SetIncrement assigns PatternFlowRSVPPathSenderTspecIntServMinimumPolicedUnitCounter provided by user to PatternFlowRSVPPathSenderTspecIntServMinimumPolicedUnit. + // PatternFlowRSVPPathSenderTspecIntServMinimumPolicedUnitCounter is integer counter pattern + SetIncrement(value PatternFlowRSVPPathSenderTspecIntServMinimumPolicedUnitCounter) PatternFlowRSVPPathSenderTspecIntServMinimumPolicedUnit + // HasIncrement checks if Increment has been set in PatternFlowRSVPPathSenderTspecIntServMinimumPolicedUnit + HasIncrement() bool + // Decrement returns PatternFlowRSVPPathSenderTspecIntServMinimumPolicedUnitCounter, set in PatternFlowRSVPPathSenderTspecIntServMinimumPolicedUnit. + // PatternFlowRSVPPathSenderTspecIntServMinimumPolicedUnitCounter is integer counter pattern + Decrement() PatternFlowRSVPPathSenderTspecIntServMinimumPolicedUnitCounter + // SetDecrement assigns PatternFlowRSVPPathSenderTspecIntServMinimumPolicedUnitCounter provided by user to PatternFlowRSVPPathSenderTspecIntServMinimumPolicedUnit. + // PatternFlowRSVPPathSenderTspecIntServMinimumPolicedUnitCounter is integer counter pattern + SetDecrement(value PatternFlowRSVPPathSenderTspecIntServMinimumPolicedUnitCounter) PatternFlowRSVPPathSenderTspecIntServMinimumPolicedUnit + // HasDecrement checks if Decrement has been set in PatternFlowRSVPPathSenderTspecIntServMinimumPolicedUnit + HasDecrement() bool setNil() } -// The Weight associated with a given path and the sub-TLV is optional. -// Weight returns a uint32 -func (obj *bgpSrteSegmentList) Weight() uint32 { +type PatternFlowRSVPPathSenderTspecIntServMinimumPolicedUnitChoiceEnum string - return *obj.obj.Weight +// Enum of Choice on PatternFlowRSVPPathSenderTspecIntServMinimumPolicedUnit +var PatternFlowRSVPPathSenderTspecIntServMinimumPolicedUnitChoice = struct { + VALUE PatternFlowRSVPPathSenderTspecIntServMinimumPolicedUnitChoiceEnum + VALUES PatternFlowRSVPPathSenderTspecIntServMinimumPolicedUnitChoiceEnum + INCREMENT PatternFlowRSVPPathSenderTspecIntServMinimumPolicedUnitChoiceEnum + DECREMENT PatternFlowRSVPPathSenderTspecIntServMinimumPolicedUnitChoiceEnum +}{ + VALUE: PatternFlowRSVPPathSenderTspecIntServMinimumPolicedUnitChoiceEnum("value"), + VALUES: PatternFlowRSVPPathSenderTspecIntServMinimumPolicedUnitChoiceEnum("values"), + INCREMENT: PatternFlowRSVPPathSenderTspecIntServMinimumPolicedUnitChoiceEnum("increment"), + DECREMENT: PatternFlowRSVPPathSenderTspecIntServMinimumPolicedUnitChoiceEnum("decrement"), +} +func (obj *patternFlowRSVPPathSenderTspecIntServMinimumPolicedUnit) Choice() PatternFlowRSVPPathSenderTspecIntServMinimumPolicedUnitChoiceEnum { + return PatternFlowRSVPPathSenderTspecIntServMinimumPolicedUnitChoiceEnum(obj.obj.Choice.Enum().String()) } -// The Weight associated with a given path and the sub-TLV is optional. -// Weight returns a uint32 -func (obj *bgpSrteSegmentList) HasWeight() bool { - return obj.obj.Weight != nil +// description is TBD +// Choice returns a string +func (obj *patternFlowRSVPPathSenderTspecIntServMinimumPolicedUnit) HasChoice() bool { + return obj.obj.Choice != nil } -// The Weight associated with a given path and the sub-TLV is optional. -// SetWeight sets the uint32 value in the BgpSrteSegmentList object -func (obj *bgpSrteSegmentList) SetWeight(value uint32) BgpSrteSegmentList { +func (obj *patternFlowRSVPPathSenderTspecIntServMinimumPolicedUnit) SetChoice(value PatternFlowRSVPPathSenderTspecIntServMinimumPolicedUnitChoiceEnum) PatternFlowRSVPPathSenderTspecIntServMinimumPolicedUnit { + intValue, ok := otg.PatternFlowRSVPPathSenderTspecIntServMinimumPolicedUnit_Choice_Enum_value[string(value)] + if !ok { + obj.validationErrors = append(obj.validationErrors, fmt.Sprintf( + "%s is not a valid choice on PatternFlowRSVPPathSenderTspecIntServMinimumPolicedUnitChoiceEnum", string(value))) + return obj + } + enumValue := otg.PatternFlowRSVPPathSenderTspecIntServMinimumPolicedUnit_Choice_Enum(intValue) + obj.obj.Choice = &enumValue + obj.obj.Decrement = nil + obj.decrementHolder = nil + obj.obj.Increment = nil + obj.incrementHolder = nil + obj.obj.Values = nil + obj.obj.Value = nil - obj.obj.Weight = &value - return obj -} + if value == PatternFlowRSVPPathSenderTspecIntServMinimumPolicedUnitChoice.VALUE { + defaultValue := uint32(0) + obj.obj.Value = &defaultValue + } -// description is TBD -// Segments returns a []BgpSrteSegment -func (obj *bgpSrteSegmentList) Segments() BgpSrteSegmentListBgpSrteSegmentIter { - if len(obj.obj.Segments) == 0 { - obj.obj.Segments = []*otg.BgpSrteSegment{} + if value == PatternFlowRSVPPathSenderTspecIntServMinimumPolicedUnitChoice.VALUES { + defaultValue := []uint32{0} + obj.obj.Values = defaultValue } - if obj.segmentsHolder == nil { - obj.segmentsHolder = newBgpSrteSegmentListBgpSrteSegmentIter(&obj.obj.Segments).setMsg(obj) + + if value == PatternFlowRSVPPathSenderTspecIntServMinimumPolicedUnitChoice.INCREMENT { + obj.obj.Increment = NewPatternFlowRSVPPathSenderTspecIntServMinimumPolicedUnitCounter().Msg() } - return obj.segmentsHolder -} -type bgpSrteSegmentListBgpSrteSegmentIter struct { - obj *bgpSrteSegmentList - bgpSrteSegmentSlice []BgpSrteSegment - fieldPtr *[]*otg.BgpSrteSegment -} + if value == PatternFlowRSVPPathSenderTspecIntServMinimumPolicedUnitChoice.DECREMENT { + obj.obj.Decrement = NewPatternFlowRSVPPathSenderTspecIntServMinimumPolicedUnitCounter().Msg() + } -func newBgpSrteSegmentListBgpSrteSegmentIter(ptr *[]*otg.BgpSrteSegment) BgpSrteSegmentListBgpSrteSegmentIter { - return &bgpSrteSegmentListBgpSrteSegmentIter{fieldPtr: ptr} + return obj } -type BgpSrteSegmentListBgpSrteSegmentIter interface { - setMsg(*bgpSrteSegmentList) BgpSrteSegmentListBgpSrteSegmentIter - Items() []BgpSrteSegment - Add() BgpSrteSegment - Append(items ...BgpSrteSegment) BgpSrteSegmentListBgpSrteSegmentIter - Set(index int, newObj BgpSrteSegment) BgpSrteSegmentListBgpSrteSegmentIter - Clear() BgpSrteSegmentListBgpSrteSegmentIter - clearHolderSlice() BgpSrteSegmentListBgpSrteSegmentIter - appendHolderSlice(item BgpSrteSegment) BgpSrteSegmentListBgpSrteSegmentIter -} +// description is TBD +// Value returns a uint32 +func (obj *patternFlowRSVPPathSenderTspecIntServMinimumPolicedUnit) Value() uint32 { -func (obj *bgpSrteSegmentListBgpSrteSegmentIter) setMsg(msg *bgpSrteSegmentList) BgpSrteSegmentListBgpSrteSegmentIter { - obj.clearHolderSlice() - for _, val := range *obj.fieldPtr { - obj.appendHolderSlice(&bgpSrteSegment{obj: val}) + if obj.obj.Value == nil { + obj.SetChoice(PatternFlowRSVPPathSenderTspecIntServMinimumPolicedUnitChoice.VALUE) } - obj.obj = msg - return obj -} -func (obj *bgpSrteSegmentListBgpSrteSegmentIter) Items() []BgpSrteSegment { - return obj.bgpSrteSegmentSlice -} + return *obj.obj.Value -func (obj *bgpSrteSegmentListBgpSrteSegmentIter) Add() BgpSrteSegment { - newObj := &otg.BgpSrteSegment{} - *obj.fieldPtr = append(*obj.fieldPtr, newObj) - newLibObj := &bgpSrteSegment{obj: newObj} - newLibObj.setDefault() - obj.bgpSrteSegmentSlice = append(obj.bgpSrteSegmentSlice, newLibObj) - return newLibObj } -func (obj *bgpSrteSegmentListBgpSrteSegmentIter) Append(items ...BgpSrteSegment) BgpSrteSegmentListBgpSrteSegmentIter { - for _, item := range items { - newObj := item.Msg() - *obj.fieldPtr = append(*obj.fieldPtr, newObj) - obj.bgpSrteSegmentSlice = append(obj.bgpSrteSegmentSlice, item) - } - return obj +// description is TBD +// Value returns a uint32 +func (obj *patternFlowRSVPPathSenderTspecIntServMinimumPolicedUnit) HasValue() bool { + return obj.obj.Value != nil } -func (obj *bgpSrteSegmentListBgpSrteSegmentIter) Set(index int, newObj BgpSrteSegment) BgpSrteSegmentListBgpSrteSegmentIter { - (*obj.fieldPtr)[index] = newObj.Msg() - obj.bgpSrteSegmentSlice[index] = newObj +// description is TBD +// SetValue sets the uint32 value in the PatternFlowRSVPPathSenderTspecIntServMinimumPolicedUnit object +func (obj *patternFlowRSVPPathSenderTspecIntServMinimumPolicedUnit) SetValue(value uint32) PatternFlowRSVPPathSenderTspecIntServMinimumPolicedUnit { + obj.SetChoice(PatternFlowRSVPPathSenderTspecIntServMinimumPolicedUnitChoice.VALUE) + obj.obj.Value = &value return obj } -func (obj *bgpSrteSegmentListBgpSrteSegmentIter) Clear() BgpSrteSegmentListBgpSrteSegmentIter { - if len(*obj.fieldPtr) > 0 { - *obj.fieldPtr = []*otg.BgpSrteSegment{} - obj.bgpSrteSegmentSlice = []BgpSrteSegment{} + +// description is TBD +// Values returns a []uint32 +func (obj *patternFlowRSVPPathSenderTspecIntServMinimumPolicedUnit) Values() []uint32 { + if obj.obj.Values == nil { + obj.SetValues([]uint32{0}) } - return obj + return obj.obj.Values } -func (obj *bgpSrteSegmentListBgpSrteSegmentIter) clearHolderSlice() BgpSrteSegmentListBgpSrteSegmentIter { - if len(obj.bgpSrteSegmentSlice) > 0 { - obj.bgpSrteSegmentSlice = []BgpSrteSegment{} + +// description is TBD +// SetValues sets the []uint32 value in the PatternFlowRSVPPathSenderTspecIntServMinimumPolicedUnit object +func (obj *patternFlowRSVPPathSenderTspecIntServMinimumPolicedUnit) SetValues(value []uint32) PatternFlowRSVPPathSenderTspecIntServMinimumPolicedUnit { + obj.SetChoice(PatternFlowRSVPPathSenderTspecIntServMinimumPolicedUnitChoice.VALUES) + if obj.obj.Values == nil { + obj.obj.Values = make([]uint32, 0) } + obj.obj.Values = value + return obj } -func (obj *bgpSrteSegmentListBgpSrteSegmentIter) appendHolderSlice(item BgpSrteSegment) BgpSrteSegmentListBgpSrteSegmentIter { - obj.bgpSrteSegmentSlice = append(obj.bgpSrteSegmentSlice, item) - return obj -} - -// Globally unique name of an object. It also serves as the primary key for arrays of objects. -// Name returns a string -func (obj *bgpSrteSegmentList) Name() string { - return *obj.obj.Name +// description is TBD +// Increment returns a PatternFlowRSVPPathSenderTspecIntServMinimumPolicedUnitCounter +func (obj *patternFlowRSVPPathSenderTspecIntServMinimumPolicedUnit) Increment() PatternFlowRSVPPathSenderTspecIntServMinimumPolicedUnitCounter { + if obj.obj.Increment == nil { + obj.SetChoice(PatternFlowRSVPPathSenderTspecIntServMinimumPolicedUnitChoice.INCREMENT) + } + if obj.incrementHolder == nil { + obj.incrementHolder = &patternFlowRSVPPathSenderTspecIntServMinimumPolicedUnitCounter{obj: obj.obj.Increment} + } + return obj.incrementHolder +} +// description is TBD +// Increment returns a PatternFlowRSVPPathSenderTspecIntServMinimumPolicedUnitCounter +func (obj *patternFlowRSVPPathSenderTspecIntServMinimumPolicedUnit) HasIncrement() bool { + return obj.obj.Increment != nil } -// Globally unique name of an object. It also serves as the primary key for arrays of objects. -// SetName sets the string value in the BgpSrteSegmentList object -func (obj *bgpSrteSegmentList) SetName(value string) BgpSrteSegmentList { +// description is TBD +// SetIncrement sets the PatternFlowRSVPPathSenderTspecIntServMinimumPolicedUnitCounter value in the PatternFlowRSVPPathSenderTspecIntServMinimumPolicedUnit object +func (obj *patternFlowRSVPPathSenderTspecIntServMinimumPolicedUnit) SetIncrement(value PatternFlowRSVPPathSenderTspecIntServMinimumPolicedUnitCounter) PatternFlowRSVPPathSenderTspecIntServMinimumPolicedUnit { + obj.SetChoice(PatternFlowRSVPPathSenderTspecIntServMinimumPolicedUnitChoice.INCREMENT) + obj.incrementHolder = nil + obj.obj.Increment = value.Msg() - obj.obj.Name = &value return obj } -// If enabled means that this part of the configuration including any active 'children' nodes will be advertised to peer. If disabled, this means that though config is present, it is not taking any part of the test but can be activated at run-time to advertise just this part of the configuration to the peer. -// Active returns a bool -func (obj *bgpSrteSegmentList) Active() bool { - - return *obj.obj.Active - +// description is TBD +// Decrement returns a PatternFlowRSVPPathSenderTspecIntServMinimumPolicedUnitCounter +func (obj *patternFlowRSVPPathSenderTspecIntServMinimumPolicedUnit) Decrement() PatternFlowRSVPPathSenderTspecIntServMinimumPolicedUnitCounter { + if obj.obj.Decrement == nil { + obj.SetChoice(PatternFlowRSVPPathSenderTspecIntServMinimumPolicedUnitChoice.DECREMENT) + } + if obj.decrementHolder == nil { + obj.decrementHolder = &patternFlowRSVPPathSenderTspecIntServMinimumPolicedUnitCounter{obj: obj.obj.Decrement} + } + return obj.decrementHolder } -// If enabled means that this part of the configuration including any active 'children' nodes will be advertised to peer. If disabled, this means that though config is present, it is not taking any part of the test but can be activated at run-time to advertise just this part of the configuration to the peer. -// Active returns a bool -func (obj *bgpSrteSegmentList) HasActive() bool { - return obj.obj.Active != nil +// description is TBD +// Decrement returns a PatternFlowRSVPPathSenderTspecIntServMinimumPolicedUnitCounter +func (obj *patternFlowRSVPPathSenderTspecIntServMinimumPolicedUnit) HasDecrement() bool { + return obj.obj.Decrement != nil } -// If enabled means that this part of the configuration including any active 'children' nodes will be advertised to peer. If disabled, this means that though config is present, it is not taking any part of the test but can be activated at run-time to advertise just this part of the configuration to the peer. -// SetActive sets the bool value in the BgpSrteSegmentList object -func (obj *bgpSrteSegmentList) SetActive(value bool) BgpSrteSegmentList { +// description is TBD +// SetDecrement sets the PatternFlowRSVPPathSenderTspecIntServMinimumPolicedUnitCounter value in the PatternFlowRSVPPathSenderTspecIntServMinimumPolicedUnit object +func (obj *patternFlowRSVPPathSenderTspecIntServMinimumPolicedUnit) SetDecrement(value PatternFlowRSVPPathSenderTspecIntServMinimumPolicedUnitCounter) PatternFlowRSVPPathSenderTspecIntServMinimumPolicedUnit { + obj.SetChoice(PatternFlowRSVPPathSenderTspecIntServMinimumPolicedUnitChoice.DECREMENT) + obj.decrementHolder = nil + obj.obj.Decrement = value.Msg() - obj.obj.Active = &value return obj } -func (obj *bgpSrteSegmentList) validateObj(vObj *validation, set_default bool) { +func (obj *patternFlowRSVPPathSenderTspecIntServMinimumPolicedUnit) validateObj(vObj *validation, set_default bool) { if set_default { obj.setDefault() } - if len(obj.obj.Segments) != 0 { - - if set_default { - obj.Segments().clearHolderSlice() - for _, item := range obj.obj.Segments { - obj.Segments().appendHolderSlice(&bgpSrteSegment{obj: item}) - } - } - for _, item := range obj.Segments().Items() { - item.validateObj(vObj, set_default) - } + if obj.obj.Increment != nil { + obj.Increment().validateObj(vObj, set_default) } - // Name is required - if obj.obj.Name == nil { - vObj.validationErrors = append(vObj.validationErrors, "Name is required field on interface BgpSrteSegmentList") + if obj.obj.Decrement != nil { + + obj.Decrement().validateObj(vObj, set_default) } + } -func (obj *bgpSrteSegmentList) setDefault() { - if obj.obj.Weight == nil { - obj.SetWeight(0) - } - if obj.obj.Active == nil { - obj.SetActive(true) +func (obj *patternFlowRSVPPathSenderTspecIntServMinimumPolicedUnit) setDefault() { + if obj.obj.Choice == nil { + obj.SetChoice(PatternFlowRSVPPathSenderTspecIntServMinimumPolicedUnitChoice.VALUE) + } } -// ***** BgpV6EviVxlan ***** -type bgpV6EviVxlan struct { +// ***** PatternFlowRSVPPathSenderTspecIntServMaximumPacketSize ***** +type patternFlowRSVPPathSenderTspecIntServMaximumPacketSize struct { validation - obj *otg.BgpV6EviVxlan - broadcastDomainsHolder BgpV6EviVxlanBgpV6EviVxlanBroadcastDomainIter - routeDistinguisherHolder BgpRouteDistinguisher - routeTargetExportHolder BgpV6EviVxlanBgpRouteTargetIter - routeTargetImportHolder BgpV6EviVxlanBgpRouteTargetIter - l3RouteTargetExportHolder BgpV6EviVxlanBgpRouteTargetIter - l3RouteTargetImportHolder BgpV6EviVxlanBgpRouteTargetIter - advancedHolder BgpRouteAdvanced - communitiesHolder BgpV6EviVxlanBgpCommunityIter - extCommunitiesHolder BgpV6EviVxlanBgpExtCommunityIter - asPathHolder BgpAsPath + obj *otg.PatternFlowRSVPPathSenderTspecIntServMaximumPacketSize + incrementHolder PatternFlowRSVPPathSenderTspecIntServMaximumPacketSizeCounter + decrementHolder PatternFlowRSVPPathSenderTspecIntServMaximumPacketSizeCounter } -func NewBgpV6EviVxlan() BgpV6EviVxlan { - obj := bgpV6EviVxlan{obj: &otg.BgpV6EviVxlan{}} +func NewPatternFlowRSVPPathSenderTspecIntServMaximumPacketSize() PatternFlowRSVPPathSenderTspecIntServMaximumPacketSize { + obj := patternFlowRSVPPathSenderTspecIntServMaximumPacketSize{obj: &otg.PatternFlowRSVPPathSenderTspecIntServMaximumPacketSize{}} obj.setDefault() return &obj } -func (obj *bgpV6EviVxlan) Msg() *otg.BgpV6EviVxlan { +func (obj *patternFlowRSVPPathSenderTspecIntServMaximumPacketSize) Msg() *otg.PatternFlowRSVPPathSenderTspecIntServMaximumPacketSize { return obj.obj } -func (obj *bgpV6EviVxlan) SetMsg(msg *otg.BgpV6EviVxlan) BgpV6EviVxlan { +func (obj *patternFlowRSVPPathSenderTspecIntServMaximumPacketSize) SetMsg(msg *otg.PatternFlowRSVPPathSenderTspecIntServMaximumPacketSize) PatternFlowRSVPPathSenderTspecIntServMaximumPacketSize { obj.setNil() proto.Merge(obj.obj, msg) return obj } -func (obj *bgpV6EviVxlan) ToProto() (*otg.BgpV6EviVxlan, error) { +func (obj *patternFlowRSVPPathSenderTspecIntServMaximumPacketSize) ToProto() (*otg.PatternFlowRSVPPathSenderTspecIntServMaximumPacketSize, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -303983,7 +351637,7 @@ func (obj *bgpV6EviVxlan) ToProto() (*otg.BgpV6EviVxlan, error) { return obj.Msg(), nil } -func (obj *bgpV6EviVxlan) FromProto(msg *otg.BgpV6EviVxlan) (BgpV6EviVxlan, error) { +func (obj *patternFlowRSVPPathSenderTspecIntServMaximumPacketSize) FromProto(msg *otg.PatternFlowRSVPPathSenderTspecIntServMaximumPacketSize) (PatternFlowRSVPPathSenderTspecIntServMaximumPacketSize, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -303992,7 +351646,7 @@ func (obj *bgpV6EviVxlan) FromProto(msg *otg.BgpV6EviVxlan) (BgpV6EviVxlan, erro return newObj, nil } -func (obj *bgpV6EviVxlan) ToPbText() (string, error) { +func (obj *patternFlowRSVPPathSenderTspecIntServMaximumPacketSize) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -304004,7 +351658,7 @@ func (obj *bgpV6EviVxlan) ToPbText() (string, error) { return string(protoMarshal), nil } -func (obj *bgpV6EviVxlan) FromPbText(value string) error { +func (obj *patternFlowRSVPPathSenderTspecIntServMaximumPacketSize) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj @@ -304017,7 +351671,7 @@ func (obj *bgpV6EviVxlan) FromPbText(value string) error { return retObj } -func (obj *bgpV6EviVxlan) ToYaml() (string, error) { +func (obj *patternFlowRSVPPathSenderTspecIntServMaximumPacketSize) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -304038,7 +351692,7 @@ func (obj *bgpV6EviVxlan) ToYaml() (string, error) { return string(data), nil } -func (obj *bgpV6EviVxlan) FromYaml(value string) error { +func (obj *patternFlowRSVPPathSenderTspecIntServMaximumPacketSize) FromYaml(value string) error { if value == "" { value = "{}" } @@ -304063,7 +351717,7 @@ func (obj *bgpV6EviVxlan) FromYaml(value string) error { return nil } -func (obj *bgpV6EviVxlan) ToJson() (string, error) { +func (obj *patternFlowRSVPPathSenderTspecIntServMaximumPacketSize) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -304081,7 +351735,7 @@ func (obj *bgpV6EviVxlan) ToJson() (string, error) { return string(data), nil } -func (obj *bgpV6EviVxlan) FromJson(value string) error { +func (obj *patternFlowRSVPPathSenderTspecIntServMaximumPacketSize) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -304102,19 +351756,19 @@ func (obj *bgpV6EviVxlan) FromJson(value string) error { return nil } -func (obj *bgpV6EviVxlan) validateToAndFrom() error { +func (obj *patternFlowRSVPPathSenderTspecIntServMaximumPacketSize) validateToAndFrom() error { // emptyVars() obj.validateObj(&obj.validation, true) return obj.validationResult() } -func (obj *bgpV6EviVxlan) Validate() error { +func (obj *patternFlowRSVPPathSenderTspecIntServMaximumPacketSize) Validate() error { // emptyVars() obj.validateObj(&obj.validation, false) return obj.validationResult() } -func (obj *bgpV6EviVxlan) String() string { +func (obj *patternFlowRSVPPathSenderTspecIntServMaximumPacketSize) String() string { str, err := obj.ToYaml() if err != nil { return err.Error() @@ -304122,12 +351776,12 @@ func (obj *bgpV6EviVxlan) String() string { return str } -func (obj *bgpV6EviVxlan) Clone() (BgpV6EviVxlan, error) { +func (obj *patternFlowRSVPPathSenderTspecIntServMaximumPacketSize) Clone() (PatternFlowRSVPPathSenderTspecIntServMaximumPacketSize, error) { vErr := obj.Validate() if vErr != nil { return nil, vErr } - newObj := NewBgpV6EviVxlan() + newObj := NewPatternFlowRSVPPathSenderTspecIntServMaximumPacketSize() data, err := proto.Marshal(obj.Msg()) if err != nil { return nil, err @@ -304139,842 +351793,297 @@ func (obj *bgpV6EviVxlan) Clone() (BgpV6EviVxlan, error) { return newObj, nil } -func (obj *bgpV6EviVxlan) setNil() { - obj.broadcastDomainsHolder = nil - obj.routeDistinguisherHolder = nil - obj.routeTargetExportHolder = nil - obj.routeTargetImportHolder = nil - obj.l3RouteTargetExportHolder = nil - obj.l3RouteTargetImportHolder = nil - obj.advancedHolder = nil - obj.communitiesHolder = nil - obj.extCommunitiesHolder = nil - obj.asPathHolder = nil +func (obj *patternFlowRSVPPathSenderTspecIntServMaximumPacketSize) setNil() { + obj.incrementHolder = nil + obj.decrementHolder = nil obj.validationErrors = nil obj.warnings = nil obj.constraints = make(map[string]map[string]Constraints) } -// BgpV6EviVxlan is configuration for BGP EVPN EVI. Advertises following routes - -// -// # Type 3 - Inclusive Multicast Ethernet Tag Route -// -// Type 1 - Ethernet Auto-discovery Route (Per EVI) -// -// Type 1 - Ethernet Auto-discovery Route (Per ES) -type BgpV6EviVxlan interface { +// PatternFlowRSVPPathSenderTspecIntServMaximumPacketSize is the maximum packet size parameter should be set to the size of the largest packet the application might wish to generate. This value must, by definition, be equal to or larger than the value of The minimum policed unit. +type PatternFlowRSVPPathSenderTspecIntServMaximumPacketSize interface { Validation - // Msg marshals BgpV6EviVxlan to protobuf object *otg.BgpV6EviVxlan + // Msg marshals PatternFlowRSVPPathSenderTspecIntServMaximumPacketSize to protobuf object *otg.PatternFlowRSVPPathSenderTspecIntServMaximumPacketSize // and doesn't set defaults - Msg() *otg.BgpV6EviVxlan - // SetMsg unmarshals BgpV6EviVxlan from protobuf object *otg.BgpV6EviVxlan + Msg() *otg.PatternFlowRSVPPathSenderTspecIntServMaximumPacketSize + // SetMsg unmarshals PatternFlowRSVPPathSenderTspecIntServMaximumPacketSize from protobuf object *otg.PatternFlowRSVPPathSenderTspecIntServMaximumPacketSize // and doesn't set defaults - SetMsg(*otg.BgpV6EviVxlan) BgpV6EviVxlan - // ToProto marshals BgpV6EviVxlan to protobuf object *otg.BgpV6EviVxlan - ToProto() (*otg.BgpV6EviVxlan, error) - // ToPbText marshals BgpV6EviVxlan to protobuf text + SetMsg(*otg.PatternFlowRSVPPathSenderTspecIntServMaximumPacketSize) PatternFlowRSVPPathSenderTspecIntServMaximumPacketSize + // ToProto marshals PatternFlowRSVPPathSenderTspecIntServMaximumPacketSize to protobuf object *otg.PatternFlowRSVPPathSenderTspecIntServMaximumPacketSize + ToProto() (*otg.PatternFlowRSVPPathSenderTspecIntServMaximumPacketSize, error) + // ToPbText marshals PatternFlowRSVPPathSenderTspecIntServMaximumPacketSize to protobuf text ToPbText() (string, error) - // ToYaml marshals BgpV6EviVxlan to YAML text + // ToYaml marshals PatternFlowRSVPPathSenderTspecIntServMaximumPacketSize to YAML text ToYaml() (string, error) - // ToJson marshals BgpV6EviVxlan to JSON text + // ToJson marshals PatternFlowRSVPPathSenderTspecIntServMaximumPacketSize to JSON text ToJson() (string, error) - // FromProto unmarshals BgpV6EviVxlan from protobuf object *otg.BgpV6EviVxlan - FromProto(msg *otg.BgpV6EviVxlan) (BgpV6EviVxlan, error) - // FromPbText unmarshals BgpV6EviVxlan from protobuf text + // FromProto unmarshals PatternFlowRSVPPathSenderTspecIntServMaximumPacketSize from protobuf object *otg.PatternFlowRSVPPathSenderTspecIntServMaximumPacketSize + FromProto(msg *otg.PatternFlowRSVPPathSenderTspecIntServMaximumPacketSize) (PatternFlowRSVPPathSenderTspecIntServMaximumPacketSize, error) + // FromPbText unmarshals PatternFlowRSVPPathSenderTspecIntServMaximumPacketSize from protobuf text FromPbText(value string) error - // FromYaml unmarshals BgpV6EviVxlan from YAML text + // FromYaml unmarshals PatternFlowRSVPPathSenderTspecIntServMaximumPacketSize from YAML text FromYaml(value string) error - // FromJson unmarshals BgpV6EviVxlan from JSON text + // FromJson unmarshals PatternFlowRSVPPathSenderTspecIntServMaximumPacketSize from JSON text FromJson(value string) error - // Validate validates BgpV6EviVxlan + // Validate validates PatternFlowRSVPPathSenderTspecIntServMaximumPacketSize Validate() error // A stringer function String() string // Clones the object - Clone() (BgpV6EviVxlan, error) + Clone() (PatternFlowRSVPPathSenderTspecIntServMaximumPacketSize, error) validateToAndFrom() error validateObj(vObj *validation, set_default bool) setDefault() - // BroadcastDomains returns BgpV6EviVxlanBgpV6EviVxlanBroadcastDomainIterIter, set in BgpV6EviVxlan - BroadcastDomains() BgpV6EviVxlanBgpV6EviVxlanBroadcastDomainIter - // ReplicationType returns BgpV6EviVxlanReplicationTypeEnum, set in BgpV6EviVxlan - ReplicationType() BgpV6EviVxlanReplicationTypeEnum - // SetReplicationType assigns BgpV6EviVxlanReplicationTypeEnum provided by user to BgpV6EviVxlan - SetReplicationType(value BgpV6EviVxlanReplicationTypeEnum) BgpV6EviVxlan - // HasReplicationType checks if ReplicationType has been set in BgpV6EviVxlan - HasReplicationType() bool - // PmsiLabel returns uint32, set in BgpV6EviVxlan. - PmsiLabel() uint32 - // SetPmsiLabel assigns uint32 provided by user to BgpV6EviVxlan - SetPmsiLabel(value uint32) BgpV6EviVxlan - // HasPmsiLabel checks if PmsiLabel has been set in BgpV6EviVxlan - HasPmsiLabel() bool - // AdLabel returns uint32, set in BgpV6EviVxlan. - AdLabel() uint32 - // SetAdLabel assigns uint32 provided by user to BgpV6EviVxlan - SetAdLabel(value uint32) BgpV6EviVxlan - // HasAdLabel checks if AdLabel has been set in BgpV6EviVxlan - HasAdLabel() bool - // RouteDistinguisher returns BgpRouteDistinguisher, set in BgpV6EviVxlan. - // BgpRouteDistinguisher is bGP Route Distinguisher. - RouteDistinguisher() BgpRouteDistinguisher - // SetRouteDistinguisher assigns BgpRouteDistinguisher provided by user to BgpV6EviVxlan. - // BgpRouteDistinguisher is bGP Route Distinguisher. - SetRouteDistinguisher(value BgpRouteDistinguisher) BgpV6EviVxlan - // HasRouteDistinguisher checks if RouteDistinguisher has been set in BgpV6EviVxlan - HasRouteDistinguisher() bool - // RouteTargetExport returns BgpV6EviVxlanBgpRouteTargetIterIter, set in BgpV6EviVxlan - RouteTargetExport() BgpV6EviVxlanBgpRouteTargetIter - // RouteTargetImport returns BgpV6EviVxlanBgpRouteTargetIterIter, set in BgpV6EviVxlan - RouteTargetImport() BgpV6EviVxlanBgpRouteTargetIter - // L3RouteTargetExport returns BgpV6EviVxlanBgpRouteTargetIterIter, set in BgpV6EviVxlan - L3RouteTargetExport() BgpV6EviVxlanBgpRouteTargetIter - // L3RouteTargetImport returns BgpV6EviVxlanBgpRouteTargetIterIter, set in BgpV6EviVxlan - L3RouteTargetImport() BgpV6EviVxlanBgpRouteTargetIter - // Advanced returns BgpRouteAdvanced, set in BgpV6EviVxlan. - // BgpRouteAdvanced is configuration for advanced BGP route range settings. - Advanced() BgpRouteAdvanced - // SetAdvanced assigns BgpRouteAdvanced provided by user to BgpV6EviVxlan. - // BgpRouteAdvanced is configuration for advanced BGP route range settings. - SetAdvanced(value BgpRouteAdvanced) BgpV6EviVxlan - // HasAdvanced checks if Advanced has been set in BgpV6EviVxlan - HasAdvanced() bool - // Communities returns BgpV6EviVxlanBgpCommunityIterIter, set in BgpV6EviVxlan - Communities() BgpV6EviVxlanBgpCommunityIter - // ExtCommunities returns BgpV6EviVxlanBgpExtCommunityIterIter, set in BgpV6EviVxlan - ExtCommunities() BgpV6EviVxlanBgpExtCommunityIter - // AsPath returns BgpAsPath, set in BgpV6EviVxlan. - // BgpAsPath is this attribute identifies the autonomous systems through which routing information carried in this UPDATE message has passed. This contains the configuration of how to include the Local AS in the AS path attribute of the MP REACH NLRI. It also contains optional configuration of additional AS Path Segments that can be included in the AS Path attribute. The AS Path consists of a Set or Sequence of Autonomous Systems (AS) numbers that a routing information passes through to reach the destination. - AsPath() BgpAsPath - // SetAsPath assigns BgpAsPath provided by user to BgpV6EviVxlan. - // BgpAsPath is this attribute identifies the autonomous systems through which routing information carried in this UPDATE message has passed. This contains the configuration of how to include the Local AS in the AS path attribute of the MP REACH NLRI. It also contains optional configuration of additional AS Path Segments that can be included in the AS Path attribute. The AS Path consists of a Set or Sequence of Autonomous Systems (AS) numbers that a routing information passes through to reach the destination. - SetAsPath(value BgpAsPath) BgpV6EviVxlan - // HasAsPath checks if AsPath has been set in BgpV6EviVxlan - HasAsPath() bool + // Choice returns PatternFlowRSVPPathSenderTspecIntServMaximumPacketSizeChoiceEnum, set in PatternFlowRSVPPathSenderTspecIntServMaximumPacketSize + Choice() PatternFlowRSVPPathSenderTspecIntServMaximumPacketSizeChoiceEnum + // SetChoice assigns PatternFlowRSVPPathSenderTspecIntServMaximumPacketSizeChoiceEnum provided by user to PatternFlowRSVPPathSenderTspecIntServMaximumPacketSize + SetChoice(value PatternFlowRSVPPathSenderTspecIntServMaximumPacketSizeChoiceEnum) PatternFlowRSVPPathSenderTspecIntServMaximumPacketSize + // HasChoice checks if Choice has been set in PatternFlowRSVPPathSenderTspecIntServMaximumPacketSize + HasChoice() bool + // Value returns uint32, set in PatternFlowRSVPPathSenderTspecIntServMaximumPacketSize. + Value() uint32 + // SetValue assigns uint32 provided by user to PatternFlowRSVPPathSenderTspecIntServMaximumPacketSize + SetValue(value uint32) PatternFlowRSVPPathSenderTspecIntServMaximumPacketSize + // HasValue checks if Value has been set in PatternFlowRSVPPathSenderTspecIntServMaximumPacketSize + HasValue() bool + // Values returns []uint32, set in PatternFlowRSVPPathSenderTspecIntServMaximumPacketSize. + Values() []uint32 + // SetValues assigns []uint32 provided by user to PatternFlowRSVPPathSenderTspecIntServMaximumPacketSize + SetValues(value []uint32) PatternFlowRSVPPathSenderTspecIntServMaximumPacketSize + // Increment returns PatternFlowRSVPPathSenderTspecIntServMaximumPacketSizeCounter, set in PatternFlowRSVPPathSenderTspecIntServMaximumPacketSize. + // PatternFlowRSVPPathSenderTspecIntServMaximumPacketSizeCounter is integer counter pattern + Increment() PatternFlowRSVPPathSenderTspecIntServMaximumPacketSizeCounter + // SetIncrement assigns PatternFlowRSVPPathSenderTspecIntServMaximumPacketSizeCounter provided by user to PatternFlowRSVPPathSenderTspecIntServMaximumPacketSize. + // PatternFlowRSVPPathSenderTspecIntServMaximumPacketSizeCounter is integer counter pattern + SetIncrement(value PatternFlowRSVPPathSenderTspecIntServMaximumPacketSizeCounter) PatternFlowRSVPPathSenderTspecIntServMaximumPacketSize + // HasIncrement checks if Increment has been set in PatternFlowRSVPPathSenderTspecIntServMaximumPacketSize + HasIncrement() bool + // Decrement returns PatternFlowRSVPPathSenderTspecIntServMaximumPacketSizeCounter, set in PatternFlowRSVPPathSenderTspecIntServMaximumPacketSize. + // PatternFlowRSVPPathSenderTspecIntServMaximumPacketSizeCounter is integer counter pattern + Decrement() PatternFlowRSVPPathSenderTspecIntServMaximumPacketSizeCounter + // SetDecrement assigns PatternFlowRSVPPathSenderTspecIntServMaximumPacketSizeCounter provided by user to PatternFlowRSVPPathSenderTspecIntServMaximumPacketSize. + // PatternFlowRSVPPathSenderTspecIntServMaximumPacketSizeCounter is integer counter pattern + SetDecrement(value PatternFlowRSVPPathSenderTspecIntServMaximumPacketSizeCounter) PatternFlowRSVPPathSenderTspecIntServMaximumPacketSize + // HasDecrement checks if Decrement has been set in PatternFlowRSVPPathSenderTspecIntServMaximumPacketSize + HasDecrement() bool setNil() } -// This contains the list of Broadcast Domains to be configured per EVI. -// BroadcastDomains returns a []BgpV6EviVxlanBroadcastDomain -func (obj *bgpV6EviVxlan) BroadcastDomains() BgpV6EviVxlanBgpV6EviVxlanBroadcastDomainIter { - if len(obj.obj.BroadcastDomains) == 0 { - obj.obj.BroadcastDomains = []*otg.BgpV6EviVxlanBroadcastDomain{} - } - if obj.broadcastDomainsHolder == nil { - obj.broadcastDomainsHolder = newBgpV6EviVxlanBgpV6EviVxlanBroadcastDomainIter(&obj.obj.BroadcastDomains).setMsg(obj) - } - return obj.broadcastDomainsHolder -} - -type bgpV6EviVxlanBgpV6EviVxlanBroadcastDomainIter struct { - obj *bgpV6EviVxlan - bgpV6EviVxlanBroadcastDomainSlice []BgpV6EviVxlanBroadcastDomain - fieldPtr *[]*otg.BgpV6EviVxlanBroadcastDomain -} - -func newBgpV6EviVxlanBgpV6EviVxlanBroadcastDomainIter(ptr *[]*otg.BgpV6EviVxlanBroadcastDomain) BgpV6EviVxlanBgpV6EviVxlanBroadcastDomainIter { - return &bgpV6EviVxlanBgpV6EviVxlanBroadcastDomainIter{fieldPtr: ptr} -} - -type BgpV6EviVxlanBgpV6EviVxlanBroadcastDomainIter interface { - setMsg(*bgpV6EviVxlan) BgpV6EviVxlanBgpV6EviVxlanBroadcastDomainIter - Items() []BgpV6EviVxlanBroadcastDomain - Add() BgpV6EviVxlanBroadcastDomain - Append(items ...BgpV6EviVxlanBroadcastDomain) BgpV6EviVxlanBgpV6EviVxlanBroadcastDomainIter - Set(index int, newObj BgpV6EviVxlanBroadcastDomain) BgpV6EviVxlanBgpV6EviVxlanBroadcastDomainIter - Clear() BgpV6EviVxlanBgpV6EviVxlanBroadcastDomainIter - clearHolderSlice() BgpV6EviVxlanBgpV6EviVxlanBroadcastDomainIter - appendHolderSlice(item BgpV6EviVxlanBroadcastDomain) BgpV6EviVxlanBgpV6EviVxlanBroadcastDomainIter -} - -func (obj *bgpV6EviVxlanBgpV6EviVxlanBroadcastDomainIter) setMsg(msg *bgpV6EviVxlan) BgpV6EviVxlanBgpV6EviVxlanBroadcastDomainIter { - obj.clearHolderSlice() - for _, val := range *obj.fieldPtr { - obj.appendHolderSlice(&bgpV6EviVxlanBroadcastDomain{obj: val}) - } - obj.obj = msg - return obj -} - -func (obj *bgpV6EviVxlanBgpV6EviVxlanBroadcastDomainIter) Items() []BgpV6EviVxlanBroadcastDomain { - return obj.bgpV6EviVxlanBroadcastDomainSlice -} - -func (obj *bgpV6EviVxlanBgpV6EviVxlanBroadcastDomainIter) Add() BgpV6EviVxlanBroadcastDomain { - newObj := &otg.BgpV6EviVxlanBroadcastDomain{} - *obj.fieldPtr = append(*obj.fieldPtr, newObj) - newLibObj := &bgpV6EviVxlanBroadcastDomain{obj: newObj} - newLibObj.setDefault() - obj.bgpV6EviVxlanBroadcastDomainSlice = append(obj.bgpV6EviVxlanBroadcastDomainSlice, newLibObj) - return newLibObj -} - -func (obj *bgpV6EviVxlanBgpV6EviVxlanBroadcastDomainIter) Append(items ...BgpV6EviVxlanBroadcastDomain) BgpV6EviVxlanBgpV6EviVxlanBroadcastDomainIter { - for _, item := range items { - newObj := item.Msg() - *obj.fieldPtr = append(*obj.fieldPtr, newObj) - obj.bgpV6EviVxlanBroadcastDomainSlice = append(obj.bgpV6EviVxlanBroadcastDomainSlice, item) - } - return obj -} - -func (obj *bgpV6EviVxlanBgpV6EviVxlanBroadcastDomainIter) Set(index int, newObj BgpV6EviVxlanBroadcastDomain) BgpV6EviVxlanBgpV6EviVxlanBroadcastDomainIter { - (*obj.fieldPtr)[index] = newObj.Msg() - obj.bgpV6EviVxlanBroadcastDomainSlice[index] = newObj - return obj -} -func (obj *bgpV6EviVxlanBgpV6EviVxlanBroadcastDomainIter) Clear() BgpV6EviVxlanBgpV6EviVxlanBroadcastDomainIter { - if len(*obj.fieldPtr) > 0 { - *obj.fieldPtr = []*otg.BgpV6EviVxlanBroadcastDomain{} - obj.bgpV6EviVxlanBroadcastDomainSlice = []BgpV6EviVxlanBroadcastDomain{} - } - return obj -} -func (obj *bgpV6EviVxlanBgpV6EviVxlanBroadcastDomainIter) clearHolderSlice() BgpV6EviVxlanBgpV6EviVxlanBroadcastDomainIter { - if len(obj.bgpV6EviVxlanBroadcastDomainSlice) > 0 { - obj.bgpV6EviVxlanBroadcastDomainSlice = []BgpV6EviVxlanBroadcastDomain{} - } - return obj -} -func (obj *bgpV6EviVxlanBgpV6EviVxlanBroadcastDomainIter) appendHolderSlice(item BgpV6EviVxlanBroadcastDomain) BgpV6EviVxlanBgpV6EviVxlanBroadcastDomainIter { - obj.bgpV6EviVxlanBroadcastDomainSlice = append(obj.bgpV6EviVxlanBroadcastDomainSlice, item) - return obj -} - -type BgpV6EviVxlanReplicationTypeEnum string +type PatternFlowRSVPPathSenderTspecIntServMaximumPacketSizeChoiceEnum string -// Enum of ReplicationType on BgpV6EviVxlan -var BgpV6EviVxlanReplicationType = struct { - INGRESS_REPLICATION BgpV6EviVxlanReplicationTypeEnum +// Enum of Choice on PatternFlowRSVPPathSenderTspecIntServMaximumPacketSize +var PatternFlowRSVPPathSenderTspecIntServMaximumPacketSizeChoice = struct { + VALUE PatternFlowRSVPPathSenderTspecIntServMaximumPacketSizeChoiceEnum + VALUES PatternFlowRSVPPathSenderTspecIntServMaximumPacketSizeChoiceEnum + INCREMENT PatternFlowRSVPPathSenderTspecIntServMaximumPacketSizeChoiceEnum + DECREMENT PatternFlowRSVPPathSenderTspecIntServMaximumPacketSizeChoiceEnum }{ - INGRESS_REPLICATION: BgpV6EviVxlanReplicationTypeEnum("ingress_replication"), + VALUE: PatternFlowRSVPPathSenderTspecIntServMaximumPacketSizeChoiceEnum("value"), + VALUES: PatternFlowRSVPPathSenderTspecIntServMaximumPacketSizeChoiceEnum("values"), + INCREMENT: PatternFlowRSVPPathSenderTspecIntServMaximumPacketSizeChoiceEnum("increment"), + DECREMENT: PatternFlowRSVPPathSenderTspecIntServMaximumPacketSizeChoiceEnum("decrement"), } -func (obj *bgpV6EviVxlan) ReplicationType() BgpV6EviVxlanReplicationTypeEnum { - return BgpV6EviVxlanReplicationTypeEnum(obj.obj.ReplicationType.Enum().String()) +func (obj *patternFlowRSVPPathSenderTspecIntServMaximumPacketSize) Choice() PatternFlowRSVPPathSenderTspecIntServMaximumPacketSizeChoiceEnum { + return PatternFlowRSVPPathSenderTspecIntServMaximumPacketSizeChoiceEnum(obj.obj.Choice.Enum().String()) } -// This model only supports Ingress Replication -// ReplicationType returns a string -func (obj *bgpV6EviVxlan) HasReplicationType() bool { - return obj.obj.ReplicationType != nil +// description is TBD +// Choice returns a string +func (obj *patternFlowRSVPPathSenderTspecIntServMaximumPacketSize) HasChoice() bool { + return obj.obj.Choice != nil } -func (obj *bgpV6EviVxlan) SetReplicationType(value BgpV6EviVxlanReplicationTypeEnum) BgpV6EviVxlan { - intValue, ok := otg.BgpV6EviVxlan_ReplicationType_Enum_value[string(value)] +func (obj *patternFlowRSVPPathSenderTspecIntServMaximumPacketSize) SetChoice(value PatternFlowRSVPPathSenderTspecIntServMaximumPacketSizeChoiceEnum) PatternFlowRSVPPathSenderTspecIntServMaximumPacketSize { + intValue, ok := otg.PatternFlowRSVPPathSenderTspecIntServMaximumPacketSize_Choice_Enum_value[string(value)] if !ok { obj.validationErrors = append(obj.validationErrors, fmt.Sprintf( - "%s is not a valid choice on BgpV6EviVxlanReplicationTypeEnum", string(value))) + "%s is not a valid choice on PatternFlowRSVPPathSenderTspecIntServMaximumPacketSizeChoiceEnum", string(value))) return obj } - enumValue := otg.BgpV6EviVxlan_ReplicationType_Enum(intValue) - obj.obj.ReplicationType = &enumValue - - return obj -} - -// Downstream assigned VNI to be carried as Part of P-Multicast Service Interface Tunnel attribute (PMSI Tunnel Attribute) in Type 3 Inclusive Multicast Ethernet Tag Route. -// PmsiLabel returns a uint32 -func (obj *bgpV6EviVxlan) PmsiLabel() uint32 { - - return *obj.obj.PmsiLabel - -} - -// Downstream assigned VNI to be carried as Part of P-Multicast Service Interface Tunnel attribute (PMSI Tunnel Attribute) in Type 3 Inclusive Multicast Ethernet Tag Route. -// PmsiLabel returns a uint32 -func (obj *bgpV6EviVxlan) HasPmsiLabel() bool { - return obj.obj.PmsiLabel != nil -} - -// Downstream assigned VNI to be carried as Part of P-Multicast Service Interface Tunnel attribute (PMSI Tunnel Attribute) in Type 3 Inclusive Multicast Ethernet Tag Route. -// SetPmsiLabel sets the uint32 value in the BgpV6EviVxlan object -func (obj *bgpV6EviVxlan) SetPmsiLabel(value uint32) BgpV6EviVxlan { - - obj.obj.PmsiLabel = &value - return obj -} - -// The Auto-discovery Route label (AD label) value, which gets advertised in the Ethernet Auto-discovery Route per -// AdLabel returns a uint32 -func (obj *bgpV6EviVxlan) AdLabel() uint32 { - - return *obj.obj.AdLabel - -} - -// The Auto-discovery Route label (AD label) value, which gets advertised in the Ethernet Auto-discovery Route per -// AdLabel returns a uint32 -func (obj *bgpV6EviVxlan) HasAdLabel() bool { - return obj.obj.AdLabel != nil -} - -// The Auto-discovery Route label (AD label) value, which gets advertised in the Ethernet Auto-discovery Route per -// SetAdLabel sets the uint32 value in the BgpV6EviVxlan object -func (obj *bgpV6EviVxlan) SetAdLabel(value uint32) BgpV6EviVxlan { - - obj.obj.AdLabel = &value - return obj -} + enumValue := otg.PatternFlowRSVPPathSenderTspecIntServMaximumPacketSize_Choice_Enum(intValue) + obj.obj.Choice = &enumValue + obj.obj.Decrement = nil + obj.decrementHolder = nil + obj.obj.Increment = nil + obj.incrementHolder = nil + obj.obj.Values = nil + obj.obj.Value = nil -// Colon separated Extended Community value of 6 Bytes - "AS number: Value" identifying an EVI. Example - for the as_2octet "60005:100". -// RouteDistinguisher returns a BgpRouteDistinguisher -func (obj *bgpV6EviVxlan) RouteDistinguisher() BgpRouteDistinguisher { - if obj.obj.RouteDistinguisher == nil { - obj.obj.RouteDistinguisher = NewBgpRouteDistinguisher().Msg() - } - if obj.routeDistinguisherHolder == nil { - obj.routeDistinguisherHolder = &bgpRouteDistinguisher{obj: obj.obj.RouteDistinguisher} + if value == PatternFlowRSVPPathSenderTspecIntServMaximumPacketSizeChoice.VALUE { + defaultValue := uint32(0) + obj.obj.Value = &defaultValue } - return obj.routeDistinguisherHolder -} - -// Colon separated Extended Community value of 6 Bytes - "AS number: Value" identifying an EVI. Example - for the as_2octet "60005:100". -// RouteDistinguisher returns a BgpRouteDistinguisher -func (obj *bgpV6EviVxlan) HasRouteDistinguisher() bool { - return obj.obj.RouteDistinguisher != nil -} - -// Colon separated Extended Community value of 6 Bytes - "AS number: Value" identifying an EVI. Example - for the as_2octet "60005:100". -// SetRouteDistinguisher sets the BgpRouteDistinguisher value in the BgpV6EviVxlan object -func (obj *bgpV6EviVxlan) SetRouteDistinguisher(value BgpRouteDistinguisher) BgpV6EviVxlan { - - obj.routeDistinguisherHolder = nil - obj.obj.RouteDistinguisher = value.Msg() - - return obj -} -// List of Layer 2 Virtual Network Identifier (L2VNI) export targets associated with this EVI. -// RouteTargetExport returns a []BgpRouteTarget -func (obj *bgpV6EviVxlan) RouteTargetExport() BgpV6EviVxlanBgpRouteTargetIter { - if len(obj.obj.RouteTargetExport) == 0 { - obj.obj.RouteTargetExport = []*otg.BgpRouteTarget{} - } - if obj.routeTargetExportHolder == nil { - obj.routeTargetExportHolder = newBgpV6EviVxlanBgpRouteTargetIter(&obj.obj.RouteTargetExport).setMsg(obj) + if value == PatternFlowRSVPPathSenderTspecIntServMaximumPacketSizeChoice.VALUES { + defaultValue := []uint32{0} + obj.obj.Values = defaultValue } - return obj.routeTargetExportHolder -} - -type bgpV6EviVxlanBgpRouteTargetIter struct { - obj *bgpV6EviVxlan - bgpRouteTargetSlice []BgpRouteTarget - fieldPtr *[]*otg.BgpRouteTarget -} - -func newBgpV6EviVxlanBgpRouteTargetIter(ptr *[]*otg.BgpRouteTarget) BgpV6EviVxlanBgpRouteTargetIter { - return &bgpV6EviVxlanBgpRouteTargetIter{fieldPtr: ptr} -} - -type BgpV6EviVxlanBgpRouteTargetIter interface { - setMsg(*bgpV6EviVxlan) BgpV6EviVxlanBgpRouteTargetIter - Items() []BgpRouteTarget - Add() BgpRouteTarget - Append(items ...BgpRouteTarget) BgpV6EviVxlanBgpRouteTargetIter - Set(index int, newObj BgpRouteTarget) BgpV6EviVxlanBgpRouteTargetIter - Clear() BgpV6EviVxlanBgpRouteTargetIter - clearHolderSlice() BgpV6EviVxlanBgpRouteTargetIter - appendHolderSlice(item BgpRouteTarget) BgpV6EviVxlanBgpRouteTargetIter -} -func (obj *bgpV6EviVxlanBgpRouteTargetIter) setMsg(msg *bgpV6EviVxlan) BgpV6EviVxlanBgpRouteTargetIter { - obj.clearHolderSlice() - for _, val := range *obj.fieldPtr { - obj.appendHolderSlice(&bgpRouteTarget{obj: val}) + if value == PatternFlowRSVPPathSenderTspecIntServMaximumPacketSizeChoice.INCREMENT { + obj.obj.Increment = NewPatternFlowRSVPPathSenderTspecIntServMaximumPacketSizeCounter().Msg() } - obj.obj = msg - return obj -} - -func (obj *bgpV6EviVxlanBgpRouteTargetIter) Items() []BgpRouteTarget { - return obj.bgpRouteTargetSlice -} - -func (obj *bgpV6EviVxlanBgpRouteTargetIter) Add() BgpRouteTarget { - newObj := &otg.BgpRouteTarget{} - *obj.fieldPtr = append(*obj.fieldPtr, newObj) - newLibObj := &bgpRouteTarget{obj: newObj} - newLibObj.setDefault() - obj.bgpRouteTargetSlice = append(obj.bgpRouteTargetSlice, newLibObj) - return newLibObj -} -func (obj *bgpV6EviVxlanBgpRouteTargetIter) Append(items ...BgpRouteTarget) BgpV6EviVxlanBgpRouteTargetIter { - for _, item := range items { - newObj := item.Msg() - *obj.fieldPtr = append(*obj.fieldPtr, newObj) - obj.bgpRouteTargetSlice = append(obj.bgpRouteTargetSlice, item) + if value == PatternFlowRSVPPathSenderTspecIntServMaximumPacketSizeChoice.DECREMENT { + obj.obj.Decrement = NewPatternFlowRSVPPathSenderTspecIntServMaximumPacketSizeCounter().Msg() } - return obj -} -func (obj *bgpV6EviVxlanBgpRouteTargetIter) Set(index int, newObj BgpRouteTarget) BgpV6EviVxlanBgpRouteTargetIter { - (*obj.fieldPtr)[index] = newObj.Msg() - obj.bgpRouteTargetSlice[index] = newObj - return obj -} -func (obj *bgpV6EviVxlanBgpRouteTargetIter) Clear() BgpV6EviVxlanBgpRouteTargetIter { - if len(*obj.fieldPtr) > 0 { - *obj.fieldPtr = []*otg.BgpRouteTarget{} - obj.bgpRouteTargetSlice = []BgpRouteTarget{} - } - return obj -} -func (obj *bgpV6EviVxlanBgpRouteTargetIter) clearHolderSlice() BgpV6EviVxlanBgpRouteTargetIter { - if len(obj.bgpRouteTargetSlice) > 0 { - obj.bgpRouteTargetSlice = []BgpRouteTarget{} - } - return obj -} -func (obj *bgpV6EviVxlanBgpRouteTargetIter) appendHolderSlice(item BgpRouteTarget) BgpV6EviVxlanBgpRouteTargetIter { - obj.bgpRouteTargetSlice = append(obj.bgpRouteTargetSlice, item) return obj } -// List of L2VNI import targets associated with this EVI. -// RouteTargetImport returns a []BgpRouteTarget -func (obj *bgpV6EviVxlan) RouteTargetImport() BgpV6EviVxlanBgpRouteTargetIter { - if len(obj.obj.RouteTargetImport) == 0 { - obj.obj.RouteTargetImport = []*otg.BgpRouteTarget{} - } - if obj.routeTargetImportHolder == nil { - obj.routeTargetImportHolder = newBgpV6EviVxlanBgpRouteTargetIter(&obj.obj.RouteTargetImport).setMsg(obj) - } - return obj.routeTargetImportHolder -} +// description is TBD +// Value returns a uint32 +func (obj *patternFlowRSVPPathSenderTspecIntServMaximumPacketSize) Value() uint32 { -// List of Layer 3 Virtual Network Identifier (L3VNI) Export Route Targets. -// L3RouteTargetExport returns a []BgpRouteTarget -func (obj *bgpV6EviVxlan) L3RouteTargetExport() BgpV6EviVxlanBgpRouteTargetIter { - if len(obj.obj.L3RouteTargetExport) == 0 { - obj.obj.L3RouteTargetExport = []*otg.BgpRouteTarget{} - } - if obj.l3RouteTargetExportHolder == nil { - obj.l3RouteTargetExportHolder = newBgpV6EviVxlanBgpRouteTargetIter(&obj.obj.L3RouteTargetExport).setMsg(obj) + if obj.obj.Value == nil { + obj.SetChoice(PatternFlowRSVPPathSenderTspecIntServMaximumPacketSizeChoice.VALUE) } - return obj.l3RouteTargetExportHolder -} -// List of L3VNI Import Route Targets. -// L3RouteTargetImport returns a []BgpRouteTarget -func (obj *bgpV6EviVxlan) L3RouteTargetImport() BgpV6EviVxlanBgpRouteTargetIter { - if len(obj.obj.L3RouteTargetImport) == 0 { - obj.obj.L3RouteTargetImport = []*otg.BgpRouteTarget{} - } - if obj.l3RouteTargetImportHolder == nil { - obj.l3RouteTargetImportHolder = newBgpV6EviVxlanBgpRouteTargetIter(&obj.obj.L3RouteTargetImport).setMsg(obj) - } - return obj.l3RouteTargetImportHolder -} + return *obj.obj.Value -// description is TBD -// Advanced returns a BgpRouteAdvanced -func (obj *bgpV6EviVxlan) Advanced() BgpRouteAdvanced { - if obj.obj.Advanced == nil { - obj.obj.Advanced = NewBgpRouteAdvanced().Msg() - } - if obj.advancedHolder == nil { - obj.advancedHolder = &bgpRouteAdvanced{obj: obj.obj.Advanced} - } - return obj.advancedHolder } // description is TBD -// Advanced returns a BgpRouteAdvanced -func (obj *bgpV6EviVxlan) HasAdvanced() bool { - return obj.obj.Advanced != nil +// Value returns a uint32 +func (obj *patternFlowRSVPPathSenderTspecIntServMaximumPacketSize) HasValue() bool { + return obj.obj.Value != nil } // description is TBD -// SetAdvanced sets the BgpRouteAdvanced value in the BgpV6EviVxlan object -func (obj *bgpV6EviVxlan) SetAdvanced(value BgpRouteAdvanced) BgpV6EviVxlan { - - obj.advancedHolder = nil - obj.obj.Advanced = value.Msg() - +// SetValue sets the uint32 value in the PatternFlowRSVPPathSenderTspecIntServMaximumPacketSize object +func (obj *patternFlowRSVPPathSenderTspecIntServMaximumPacketSize) SetValue(value uint32) PatternFlowRSVPPathSenderTspecIntServMaximumPacketSize { + obj.SetChoice(PatternFlowRSVPPathSenderTspecIntServMaximumPacketSizeChoice.VALUE) + obj.obj.Value = &value return obj } -// Optional community settings. -// Communities returns a []BgpCommunity -func (obj *bgpV6EviVxlan) Communities() BgpV6EviVxlanBgpCommunityIter { - if len(obj.obj.Communities) == 0 { - obj.obj.Communities = []*otg.BgpCommunity{} - } - if obj.communitiesHolder == nil { - obj.communitiesHolder = newBgpV6EviVxlanBgpCommunityIter(&obj.obj.Communities).setMsg(obj) - } - return obj.communitiesHolder -} - -type bgpV6EviVxlanBgpCommunityIter struct { - obj *bgpV6EviVxlan - bgpCommunitySlice []BgpCommunity - fieldPtr *[]*otg.BgpCommunity -} - -func newBgpV6EviVxlanBgpCommunityIter(ptr *[]*otg.BgpCommunity) BgpV6EviVxlanBgpCommunityIter { - return &bgpV6EviVxlanBgpCommunityIter{fieldPtr: ptr} -} - -type BgpV6EviVxlanBgpCommunityIter interface { - setMsg(*bgpV6EviVxlan) BgpV6EviVxlanBgpCommunityIter - Items() []BgpCommunity - Add() BgpCommunity - Append(items ...BgpCommunity) BgpV6EviVxlanBgpCommunityIter - Set(index int, newObj BgpCommunity) BgpV6EviVxlanBgpCommunityIter - Clear() BgpV6EviVxlanBgpCommunityIter - clearHolderSlice() BgpV6EviVxlanBgpCommunityIter - appendHolderSlice(item BgpCommunity) BgpV6EviVxlanBgpCommunityIter -} - -func (obj *bgpV6EviVxlanBgpCommunityIter) setMsg(msg *bgpV6EviVxlan) BgpV6EviVxlanBgpCommunityIter { - obj.clearHolderSlice() - for _, val := range *obj.fieldPtr { - obj.appendHolderSlice(&bgpCommunity{obj: val}) +// description is TBD +// Values returns a []uint32 +func (obj *patternFlowRSVPPathSenderTspecIntServMaximumPacketSize) Values() []uint32 { + if obj.obj.Values == nil { + obj.SetValues([]uint32{0}) } - obj.obj = msg - return obj -} - -func (obj *bgpV6EviVxlanBgpCommunityIter) Items() []BgpCommunity { - return obj.bgpCommunitySlice -} - -func (obj *bgpV6EviVxlanBgpCommunityIter) Add() BgpCommunity { - newObj := &otg.BgpCommunity{} - *obj.fieldPtr = append(*obj.fieldPtr, newObj) - newLibObj := &bgpCommunity{obj: newObj} - newLibObj.setDefault() - obj.bgpCommunitySlice = append(obj.bgpCommunitySlice, newLibObj) - return newLibObj + return obj.obj.Values } -func (obj *bgpV6EviVxlanBgpCommunityIter) Append(items ...BgpCommunity) BgpV6EviVxlanBgpCommunityIter { - for _, item := range items { - newObj := item.Msg() - *obj.fieldPtr = append(*obj.fieldPtr, newObj) - obj.bgpCommunitySlice = append(obj.bgpCommunitySlice, item) +// description is TBD +// SetValues sets the []uint32 value in the PatternFlowRSVPPathSenderTspecIntServMaximumPacketSize object +func (obj *patternFlowRSVPPathSenderTspecIntServMaximumPacketSize) SetValues(value []uint32) PatternFlowRSVPPathSenderTspecIntServMaximumPacketSize { + obj.SetChoice(PatternFlowRSVPPathSenderTspecIntServMaximumPacketSizeChoice.VALUES) + if obj.obj.Values == nil { + obj.obj.Values = make([]uint32, 0) } - return obj -} + obj.obj.Values = value -func (obj *bgpV6EviVxlanBgpCommunityIter) Set(index int, newObj BgpCommunity) BgpV6EviVxlanBgpCommunityIter { - (*obj.fieldPtr)[index] = newObj.Msg() - obj.bgpCommunitySlice[index] = newObj - return obj -} -func (obj *bgpV6EviVxlanBgpCommunityIter) Clear() BgpV6EviVxlanBgpCommunityIter { - if len(*obj.fieldPtr) > 0 { - *obj.fieldPtr = []*otg.BgpCommunity{} - obj.bgpCommunitySlice = []BgpCommunity{} - } - return obj -} -func (obj *bgpV6EviVxlanBgpCommunityIter) clearHolderSlice() BgpV6EviVxlanBgpCommunityIter { - if len(obj.bgpCommunitySlice) > 0 { - obj.bgpCommunitySlice = []BgpCommunity{} - } - return obj -} -func (obj *bgpV6EviVxlanBgpCommunityIter) appendHolderSlice(item BgpCommunity) BgpV6EviVxlanBgpCommunityIter { - obj.bgpCommunitySlice = append(obj.bgpCommunitySlice, item) return obj } -// Optional Extended Community settings. The Extended Communities Attribute is a transitive optional BGP attribute, with the Type Code 16. Community and Extended Communities attributes are utilized to trigger routing decisions, such as acceptance, rejection, preference, or redistribution. An extended community is an 8-Bytes value. It is divided into two main parts. The first 2 Bytes of the community encode a type and sub-type fields and the last 6 Bytes carry a unique set of data in a format defined by the type and sub-type field. Extended communities provide a larger range for grouping or categorizing communities. When type is administrator_as_2octet or administrator_as_4octet, the valid sub types are route target and origin. The valid value for administrator_as_2octet and administrator_as_4octet type is either two byte AS followed by four byte local administrator id or four byte AS followed by two byte local administrator id. When type is administrator_ipv4_address the valid sub types are route target and origin. The valid value for administrator_ipv4_address is a four byte IPv4 address followed by a two byte local administrator id. When type is opaque, valid sub types are color and encapsulation. When sub type is color, first two bytes of the value field contain flags and last four bytes contains the value of the color. When sub type is encapsulation the first four bytes of value field are reserved and last two bytes carries the tunnel type from IANA's "ETHER TYPES" registry e.g IPv4 (protocol type = 0x0800), IPv6 (protocol type = 0x86dd), and MPLS (protocol type = 0x8847). When type is administrator_as_2octet_link_bandwidth the valid sub type is extended_bandwidth. The first two bytes of the value field contains the AS number and the last four bytes contains the bandwidth in IEEE floating point format. When type is evpn the valid subtype is mac_address. In the value field the low-order bit of the first byte(Flags) is defined as the "Sticky/static" flag and may be set to 1, indicating the MAC address is static and cannot move. The second byte is reserved and the last four bytes contain the sequence number which is used to ensure that PEs retain the correct MAC/IP Advertisement route when multiple updates occur for the same MAC address. -// ExtCommunities returns a []BgpExtCommunity -func (obj *bgpV6EviVxlan) ExtCommunities() BgpV6EviVxlanBgpExtCommunityIter { - if len(obj.obj.ExtCommunities) == 0 { - obj.obj.ExtCommunities = []*otg.BgpExtCommunity{} - } - if obj.extCommunitiesHolder == nil { - obj.extCommunitiesHolder = newBgpV6EviVxlanBgpExtCommunityIter(&obj.obj.ExtCommunities).setMsg(obj) +// description is TBD +// Increment returns a PatternFlowRSVPPathSenderTspecIntServMaximumPacketSizeCounter +func (obj *patternFlowRSVPPathSenderTspecIntServMaximumPacketSize) Increment() PatternFlowRSVPPathSenderTspecIntServMaximumPacketSizeCounter { + if obj.obj.Increment == nil { + obj.SetChoice(PatternFlowRSVPPathSenderTspecIntServMaximumPacketSizeChoice.INCREMENT) } - return obj.extCommunitiesHolder -} - -type bgpV6EviVxlanBgpExtCommunityIter struct { - obj *bgpV6EviVxlan - bgpExtCommunitySlice []BgpExtCommunity - fieldPtr *[]*otg.BgpExtCommunity -} - -func newBgpV6EviVxlanBgpExtCommunityIter(ptr *[]*otg.BgpExtCommunity) BgpV6EviVxlanBgpExtCommunityIter { - return &bgpV6EviVxlanBgpExtCommunityIter{fieldPtr: ptr} -} - -type BgpV6EviVxlanBgpExtCommunityIter interface { - setMsg(*bgpV6EviVxlan) BgpV6EviVxlanBgpExtCommunityIter - Items() []BgpExtCommunity - Add() BgpExtCommunity - Append(items ...BgpExtCommunity) BgpV6EviVxlanBgpExtCommunityIter - Set(index int, newObj BgpExtCommunity) BgpV6EviVxlanBgpExtCommunityIter - Clear() BgpV6EviVxlanBgpExtCommunityIter - clearHolderSlice() BgpV6EviVxlanBgpExtCommunityIter - appendHolderSlice(item BgpExtCommunity) BgpV6EviVxlanBgpExtCommunityIter -} - -func (obj *bgpV6EviVxlanBgpExtCommunityIter) setMsg(msg *bgpV6EviVxlan) BgpV6EviVxlanBgpExtCommunityIter { - obj.clearHolderSlice() - for _, val := range *obj.fieldPtr { - obj.appendHolderSlice(&bgpExtCommunity{obj: val}) + if obj.incrementHolder == nil { + obj.incrementHolder = &patternFlowRSVPPathSenderTspecIntServMaximumPacketSizeCounter{obj: obj.obj.Increment} } - obj.obj = msg - return obj -} - -func (obj *bgpV6EviVxlanBgpExtCommunityIter) Items() []BgpExtCommunity { - return obj.bgpExtCommunitySlice + return obj.incrementHolder } -func (obj *bgpV6EviVxlanBgpExtCommunityIter) Add() BgpExtCommunity { - newObj := &otg.BgpExtCommunity{} - *obj.fieldPtr = append(*obj.fieldPtr, newObj) - newLibObj := &bgpExtCommunity{obj: newObj} - newLibObj.setDefault() - obj.bgpExtCommunitySlice = append(obj.bgpExtCommunitySlice, newLibObj) - return newLibObj +// description is TBD +// Increment returns a PatternFlowRSVPPathSenderTspecIntServMaximumPacketSizeCounter +func (obj *patternFlowRSVPPathSenderTspecIntServMaximumPacketSize) HasIncrement() bool { + return obj.obj.Increment != nil } -func (obj *bgpV6EviVxlanBgpExtCommunityIter) Append(items ...BgpExtCommunity) BgpV6EviVxlanBgpExtCommunityIter { - for _, item := range items { - newObj := item.Msg() - *obj.fieldPtr = append(*obj.fieldPtr, newObj) - obj.bgpExtCommunitySlice = append(obj.bgpExtCommunitySlice, item) - } - return obj -} +// description is TBD +// SetIncrement sets the PatternFlowRSVPPathSenderTspecIntServMaximumPacketSizeCounter value in the PatternFlowRSVPPathSenderTspecIntServMaximumPacketSize object +func (obj *patternFlowRSVPPathSenderTspecIntServMaximumPacketSize) SetIncrement(value PatternFlowRSVPPathSenderTspecIntServMaximumPacketSizeCounter) PatternFlowRSVPPathSenderTspecIntServMaximumPacketSize { + obj.SetChoice(PatternFlowRSVPPathSenderTspecIntServMaximumPacketSizeChoice.INCREMENT) + obj.incrementHolder = nil + obj.obj.Increment = value.Msg() -func (obj *bgpV6EviVxlanBgpExtCommunityIter) Set(index int, newObj BgpExtCommunity) BgpV6EviVxlanBgpExtCommunityIter { - (*obj.fieldPtr)[index] = newObj.Msg() - obj.bgpExtCommunitySlice[index] = newObj - return obj -} -func (obj *bgpV6EviVxlanBgpExtCommunityIter) Clear() BgpV6EviVxlanBgpExtCommunityIter { - if len(*obj.fieldPtr) > 0 { - *obj.fieldPtr = []*otg.BgpExtCommunity{} - obj.bgpExtCommunitySlice = []BgpExtCommunity{} - } - return obj -} -func (obj *bgpV6EviVxlanBgpExtCommunityIter) clearHolderSlice() BgpV6EviVxlanBgpExtCommunityIter { - if len(obj.bgpExtCommunitySlice) > 0 { - obj.bgpExtCommunitySlice = []BgpExtCommunity{} - } - return obj -} -func (obj *bgpV6EviVxlanBgpExtCommunityIter) appendHolderSlice(item BgpExtCommunity) BgpV6EviVxlanBgpExtCommunityIter { - obj.bgpExtCommunitySlice = append(obj.bgpExtCommunitySlice, item) return obj } -// Optional AS PATH settings. -// AsPath returns a BgpAsPath -func (obj *bgpV6EviVxlan) AsPath() BgpAsPath { - if obj.obj.AsPath == nil { - obj.obj.AsPath = NewBgpAsPath().Msg() +// description is TBD +// Decrement returns a PatternFlowRSVPPathSenderTspecIntServMaximumPacketSizeCounter +func (obj *patternFlowRSVPPathSenderTspecIntServMaximumPacketSize) Decrement() PatternFlowRSVPPathSenderTspecIntServMaximumPacketSizeCounter { + if obj.obj.Decrement == nil { + obj.SetChoice(PatternFlowRSVPPathSenderTspecIntServMaximumPacketSizeChoice.DECREMENT) } - if obj.asPathHolder == nil { - obj.asPathHolder = &bgpAsPath{obj: obj.obj.AsPath} + if obj.decrementHolder == nil { + obj.decrementHolder = &patternFlowRSVPPathSenderTspecIntServMaximumPacketSizeCounter{obj: obj.obj.Decrement} } - return obj.asPathHolder + return obj.decrementHolder } -// Optional AS PATH settings. -// AsPath returns a BgpAsPath -func (obj *bgpV6EviVxlan) HasAsPath() bool { - return obj.obj.AsPath != nil +// description is TBD +// Decrement returns a PatternFlowRSVPPathSenderTspecIntServMaximumPacketSizeCounter +func (obj *patternFlowRSVPPathSenderTspecIntServMaximumPacketSize) HasDecrement() bool { + return obj.obj.Decrement != nil } -// Optional AS PATH settings. -// SetAsPath sets the BgpAsPath value in the BgpV6EviVxlan object -func (obj *bgpV6EviVxlan) SetAsPath(value BgpAsPath) BgpV6EviVxlan { - - obj.asPathHolder = nil - obj.obj.AsPath = value.Msg() +// description is TBD +// SetDecrement sets the PatternFlowRSVPPathSenderTspecIntServMaximumPacketSizeCounter value in the PatternFlowRSVPPathSenderTspecIntServMaximumPacketSize object +func (obj *patternFlowRSVPPathSenderTspecIntServMaximumPacketSize) SetDecrement(value PatternFlowRSVPPathSenderTspecIntServMaximumPacketSizeCounter) PatternFlowRSVPPathSenderTspecIntServMaximumPacketSize { + obj.SetChoice(PatternFlowRSVPPathSenderTspecIntServMaximumPacketSizeChoice.DECREMENT) + obj.decrementHolder = nil + obj.obj.Decrement = value.Msg() return obj } -func (obj *bgpV6EviVxlan) validateObj(vObj *validation, set_default bool) { +func (obj *patternFlowRSVPPathSenderTspecIntServMaximumPacketSize) validateObj(vObj *validation, set_default bool) { if set_default { obj.setDefault() } - if len(obj.obj.BroadcastDomains) != 0 { - - if set_default { - obj.BroadcastDomains().clearHolderSlice() - for _, item := range obj.obj.BroadcastDomains { - obj.BroadcastDomains().appendHolderSlice(&bgpV6EviVxlanBroadcastDomain{obj: item}) - } - } - for _, item := range obj.BroadcastDomains().Items() { - item.validateObj(vObj, set_default) - } - - } - - if obj.obj.PmsiLabel != nil { - - if *obj.obj.PmsiLabel > 16777215 { - vObj.validationErrors = append( - vObj.validationErrors, - fmt.Sprintf("0 <= BgpV6EviVxlan.PmsiLabel <= 16777215 but Got %d", *obj.obj.PmsiLabel)) - } - - } - - if obj.obj.AdLabel != nil { - - if *obj.obj.AdLabel > 16777215 { - vObj.validationErrors = append( - vObj.validationErrors, - fmt.Sprintf("0 <= BgpV6EviVxlan.AdLabel <= 16777215 but Got %d", *obj.obj.AdLabel)) - } - - } - - if obj.obj.RouteDistinguisher != nil { - - obj.RouteDistinguisher().validateObj(vObj, set_default) - } - - if len(obj.obj.RouteTargetExport) != 0 { - - if set_default { - obj.RouteTargetExport().clearHolderSlice() - for _, item := range obj.obj.RouteTargetExport { - obj.RouteTargetExport().appendHolderSlice(&bgpRouteTarget{obj: item}) - } - } - for _, item := range obj.RouteTargetExport().Items() { - item.validateObj(vObj, set_default) - } - - } - - if len(obj.obj.RouteTargetImport) != 0 { - - if set_default { - obj.RouteTargetImport().clearHolderSlice() - for _, item := range obj.obj.RouteTargetImport { - obj.RouteTargetImport().appendHolderSlice(&bgpRouteTarget{obj: item}) - } - } - for _, item := range obj.RouteTargetImport().Items() { - item.validateObj(vObj, set_default) - } - - } - - if len(obj.obj.L3RouteTargetExport) != 0 { - - if set_default { - obj.L3RouteTargetExport().clearHolderSlice() - for _, item := range obj.obj.L3RouteTargetExport { - obj.L3RouteTargetExport().appendHolderSlice(&bgpRouteTarget{obj: item}) - } - } - for _, item := range obj.L3RouteTargetExport().Items() { - item.validateObj(vObj, set_default) - } - - } - - if len(obj.obj.L3RouteTargetImport) != 0 { - - if set_default { - obj.L3RouteTargetImport().clearHolderSlice() - for _, item := range obj.obj.L3RouteTargetImport { - obj.L3RouteTargetImport().appendHolderSlice(&bgpRouteTarget{obj: item}) - } - } - for _, item := range obj.L3RouteTargetImport().Items() { - item.validateObj(vObj, set_default) - } - - } - - if obj.obj.Advanced != nil { - - obj.Advanced().validateObj(vObj, set_default) - } - - if len(obj.obj.Communities) != 0 { - - if set_default { - obj.Communities().clearHolderSlice() - for _, item := range obj.obj.Communities { - obj.Communities().appendHolderSlice(&bgpCommunity{obj: item}) - } - } - for _, item := range obj.Communities().Items() { - item.validateObj(vObj, set_default) - } - - } - - if len(obj.obj.ExtCommunities) != 0 { - - if set_default { - obj.ExtCommunities().clearHolderSlice() - for _, item := range obj.obj.ExtCommunities { - obj.ExtCommunities().appendHolderSlice(&bgpExtCommunity{obj: item}) - } - } - for _, item := range obj.ExtCommunities().Items() { - item.validateObj(vObj, set_default) - } + if obj.obj.Increment != nil { + obj.Increment().validateObj(vObj, set_default) } - if obj.obj.AsPath != nil { + if obj.obj.Decrement != nil { - obj.AsPath().validateObj(vObj, set_default) + obj.Decrement().validateObj(vObj, set_default) } } -func (obj *bgpV6EviVxlan) setDefault() { - if obj.obj.ReplicationType == nil { - obj.SetReplicationType(BgpV6EviVxlanReplicationType.INGRESS_REPLICATION) +func (obj *patternFlowRSVPPathSenderTspecIntServMaximumPacketSize) setDefault() { + if obj.obj.Choice == nil { + obj.SetChoice(PatternFlowRSVPPathSenderTspecIntServMaximumPacketSizeChoice.VALUE) } - if obj.obj.PmsiLabel == nil { - obj.SetPmsiLabel(16) - } - if obj.obj.AdLabel == nil { - obj.SetAdLabel(0) - } } -// ***** VxlanTunnelDestinationIPModeUnicastArpSuppressionCache ***** -type vxlanTunnelDestinationIPModeUnicastArpSuppressionCache struct { +// ***** FlowRSVPType1RecordRouteSubobjects ***** +type flowRSVPType1RecordRouteSubobjects struct { validation - obj *otg.VxlanTunnelDestinationIPModeUnicastArpSuppressionCache + obj *otg.FlowRSVPType1RecordRouteSubobjects + typeHolder FlowRSVPPathObjectsRecordRouteSubObjectType } -func NewVxlanTunnelDestinationIPModeUnicastArpSuppressionCache() VxlanTunnelDestinationIPModeUnicastArpSuppressionCache { - obj := vxlanTunnelDestinationIPModeUnicastArpSuppressionCache{obj: &otg.VxlanTunnelDestinationIPModeUnicastArpSuppressionCache{}} +func NewFlowRSVPType1RecordRouteSubobjects() FlowRSVPType1RecordRouteSubobjects { + obj := flowRSVPType1RecordRouteSubobjects{obj: &otg.FlowRSVPType1RecordRouteSubobjects{}} obj.setDefault() return &obj } -func (obj *vxlanTunnelDestinationIPModeUnicastArpSuppressionCache) Msg() *otg.VxlanTunnelDestinationIPModeUnicastArpSuppressionCache { +func (obj *flowRSVPType1RecordRouteSubobjects) Msg() *otg.FlowRSVPType1RecordRouteSubobjects { return obj.obj } -func (obj *vxlanTunnelDestinationIPModeUnicastArpSuppressionCache) SetMsg(msg *otg.VxlanTunnelDestinationIPModeUnicastArpSuppressionCache) VxlanTunnelDestinationIPModeUnicastArpSuppressionCache { - +func (obj *flowRSVPType1RecordRouteSubobjects) SetMsg(msg *otg.FlowRSVPType1RecordRouteSubobjects) FlowRSVPType1RecordRouteSubobjects { + obj.setNil() proto.Merge(obj.obj, msg) return obj } -func (obj *vxlanTunnelDestinationIPModeUnicastArpSuppressionCache) ToProto() (*otg.VxlanTunnelDestinationIPModeUnicastArpSuppressionCache, error) { +func (obj *flowRSVPType1RecordRouteSubobjects) ToProto() (*otg.FlowRSVPType1RecordRouteSubobjects, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -304982,7 +352091,7 @@ func (obj *vxlanTunnelDestinationIPModeUnicastArpSuppressionCache) ToProto() (*o return obj.Msg(), nil } -func (obj *vxlanTunnelDestinationIPModeUnicastArpSuppressionCache) FromProto(msg *otg.VxlanTunnelDestinationIPModeUnicastArpSuppressionCache) (VxlanTunnelDestinationIPModeUnicastArpSuppressionCache, error) { +func (obj *flowRSVPType1RecordRouteSubobjects) FromProto(msg *otg.FlowRSVPType1RecordRouteSubobjects) (FlowRSVPType1RecordRouteSubobjects, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -304991,7 +352100,7 @@ func (obj *vxlanTunnelDestinationIPModeUnicastArpSuppressionCache) FromProto(msg return newObj, nil } -func (obj *vxlanTunnelDestinationIPModeUnicastArpSuppressionCache) ToPbText() (string, error) { +func (obj *flowRSVPType1RecordRouteSubobjects) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -305003,12 +352112,12 @@ func (obj *vxlanTunnelDestinationIPModeUnicastArpSuppressionCache) ToPbText() (s return string(protoMarshal), nil } -func (obj *vxlanTunnelDestinationIPModeUnicastArpSuppressionCache) FromPbText(value string) error { +func (obj *flowRSVPType1RecordRouteSubobjects) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj } - + obj.setNil() vErr := obj.validateToAndFrom() if vErr != nil { return vErr @@ -305016,7 +352125,7 @@ func (obj *vxlanTunnelDestinationIPModeUnicastArpSuppressionCache) FromPbText(va return retObj } -func (obj *vxlanTunnelDestinationIPModeUnicastArpSuppressionCache) ToYaml() (string, error) { +func (obj *flowRSVPType1RecordRouteSubobjects) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -305037,7 +352146,7 @@ func (obj *vxlanTunnelDestinationIPModeUnicastArpSuppressionCache) ToYaml() (str return string(data), nil } -func (obj *vxlanTunnelDestinationIPModeUnicastArpSuppressionCache) FromYaml(value string) error { +func (obj *flowRSVPType1RecordRouteSubobjects) FromYaml(value string) error { if value == "" { value = "{}" } @@ -305054,7 +352163,7 @@ func (obj *vxlanTunnelDestinationIPModeUnicastArpSuppressionCache) FromYaml(valu return fmt.Errorf("unmarshal error %s", strings.Replace( uError.Error(), "\u00a0", " ", -1)[7:]) } - + obj.setNil() vErr := obj.validateToAndFrom() if vErr != nil { return vErr @@ -305062,7 +352171,7 @@ func (obj *vxlanTunnelDestinationIPModeUnicastArpSuppressionCache) FromYaml(valu return nil } -func (obj *vxlanTunnelDestinationIPModeUnicastArpSuppressionCache) ToJson() (string, error) { +func (obj *flowRSVPType1RecordRouteSubobjects) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -305080,7 +352189,7 @@ func (obj *vxlanTunnelDestinationIPModeUnicastArpSuppressionCache) ToJson() (str return string(data), nil } -func (obj *vxlanTunnelDestinationIPModeUnicastArpSuppressionCache) FromJson(value string) error { +func (obj *flowRSVPType1RecordRouteSubobjects) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -305093,7 +352202,7 @@ func (obj *vxlanTunnelDestinationIPModeUnicastArpSuppressionCache) FromJson(valu return fmt.Errorf("unmarshal error %s", strings.Replace( uError.Error(), "\u00a0", " ", -1)[7:]) } - + obj.setNil() err := obj.validateToAndFrom() if err != nil { return err @@ -305101,19 +352210,19 @@ func (obj *vxlanTunnelDestinationIPModeUnicastArpSuppressionCache) FromJson(valu return nil } -func (obj *vxlanTunnelDestinationIPModeUnicastArpSuppressionCache) validateToAndFrom() error { +func (obj *flowRSVPType1RecordRouteSubobjects) validateToAndFrom() error { // emptyVars() obj.validateObj(&obj.validation, true) return obj.validationResult() } -func (obj *vxlanTunnelDestinationIPModeUnicastArpSuppressionCache) Validate() error { +func (obj *flowRSVPType1RecordRouteSubobjects) Validate() error { // emptyVars() obj.validateObj(&obj.validation, false) return obj.validationResult() } -func (obj *vxlanTunnelDestinationIPModeUnicastArpSuppressionCache) String() string { +func (obj *flowRSVPType1RecordRouteSubobjects) String() string { str, err := obj.ToYaml() if err != nil { return err.Error() @@ -305121,12 +352230,12 @@ func (obj *vxlanTunnelDestinationIPModeUnicastArpSuppressionCache) String() stri return str } -func (obj *vxlanTunnelDestinationIPModeUnicastArpSuppressionCache) Clone() (VxlanTunnelDestinationIPModeUnicastArpSuppressionCache, error) { +func (obj *flowRSVPType1RecordRouteSubobjects) Clone() (FlowRSVPType1RecordRouteSubobjects, error) { vErr := obj.Validate() if vErr != nil { return nil, vErr } - newObj := NewVxlanTunnelDestinationIPModeUnicastArpSuppressionCache() + newObj := NewFlowRSVPType1RecordRouteSubobjects() data, err := proto.Marshal(obj.Msg()) if err != nil { return nil, err @@ -305138,150 +352247,125 @@ func (obj *vxlanTunnelDestinationIPModeUnicastArpSuppressionCache) Clone() (Vxla return newObj, nil } -// VxlanTunnelDestinationIPModeUnicastArpSuppressionCache is each VTEP maintains an ARP suppression cache table for known IP hosts and their associated MAC addresses in the VNI segment. When an end host in the VNI sends an ARP request for another end-host IP address, its local VTEP intercepts the ARP request and checks for the ARP-resolved IP address in its ARP suppression cache table. If it finds a match, the local VTEP sends an ARP response on behalf of the remote end host. -type VxlanTunnelDestinationIPModeUnicastArpSuppressionCache interface { +func (obj *flowRSVPType1RecordRouteSubobjects) setNil() { + obj.typeHolder = nil + obj.validationErrors = nil + obj.warnings = nil + obj.constraints = make(map[string]map[string]Constraints) +} + +// FlowRSVPType1RecordRouteSubobjects is type is specific to a subobject. +type FlowRSVPType1RecordRouteSubobjects interface { Validation - // Msg marshals VxlanTunnelDestinationIPModeUnicastArpSuppressionCache to protobuf object *otg.VxlanTunnelDestinationIPModeUnicastArpSuppressionCache + // Msg marshals FlowRSVPType1RecordRouteSubobjects to protobuf object *otg.FlowRSVPType1RecordRouteSubobjects // and doesn't set defaults - Msg() *otg.VxlanTunnelDestinationIPModeUnicastArpSuppressionCache - // SetMsg unmarshals VxlanTunnelDestinationIPModeUnicastArpSuppressionCache from protobuf object *otg.VxlanTunnelDestinationIPModeUnicastArpSuppressionCache + Msg() *otg.FlowRSVPType1RecordRouteSubobjects + // SetMsg unmarshals FlowRSVPType1RecordRouteSubobjects from protobuf object *otg.FlowRSVPType1RecordRouteSubobjects // and doesn't set defaults - SetMsg(*otg.VxlanTunnelDestinationIPModeUnicastArpSuppressionCache) VxlanTunnelDestinationIPModeUnicastArpSuppressionCache - // ToProto marshals VxlanTunnelDestinationIPModeUnicastArpSuppressionCache to protobuf object *otg.VxlanTunnelDestinationIPModeUnicastArpSuppressionCache - ToProto() (*otg.VxlanTunnelDestinationIPModeUnicastArpSuppressionCache, error) - // ToPbText marshals VxlanTunnelDestinationIPModeUnicastArpSuppressionCache to protobuf text + SetMsg(*otg.FlowRSVPType1RecordRouteSubobjects) FlowRSVPType1RecordRouteSubobjects + // ToProto marshals FlowRSVPType1RecordRouteSubobjects to protobuf object *otg.FlowRSVPType1RecordRouteSubobjects + ToProto() (*otg.FlowRSVPType1RecordRouteSubobjects, error) + // ToPbText marshals FlowRSVPType1RecordRouteSubobjects to protobuf text ToPbText() (string, error) - // ToYaml marshals VxlanTunnelDestinationIPModeUnicastArpSuppressionCache to YAML text + // ToYaml marshals FlowRSVPType1RecordRouteSubobjects to YAML text ToYaml() (string, error) - // ToJson marshals VxlanTunnelDestinationIPModeUnicastArpSuppressionCache to JSON text + // ToJson marshals FlowRSVPType1RecordRouteSubobjects to JSON text ToJson() (string, error) - // FromProto unmarshals VxlanTunnelDestinationIPModeUnicastArpSuppressionCache from protobuf object *otg.VxlanTunnelDestinationIPModeUnicastArpSuppressionCache - FromProto(msg *otg.VxlanTunnelDestinationIPModeUnicastArpSuppressionCache) (VxlanTunnelDestinationIPModeUnicastArpSuppressionCache, error) - // FromPbText unmarshals VxlanTunnelDestinationIPModeUnicastArpSuppressionCache from protobuf text + // FromProto unmarshals FlowRSVPType1RecordRouteSubobjects from protobuf object *otg.FlowRSVPType1RecordRouteSubobjects + FromProto(msg *otg.FlowRSVPType1RecordRouteSubobjects) (FlowRSVPType1RecordRouteSubobjects, error) + // FromPbText unmarshals FlowRSVPType1RecordRouteSubobjects from protobuf text FromPbText(value string) error - // FromYaml unmarshals VxlanTunnelDestinationIPModeUnicastArpSuppressionCache from YAML text + // FromYaml unmarshals FlowRSVPType1RecordRouteSubobjects from YAML text FromYaml(value string) error - // FromJson unmarshals VxlanTunnelDestinationIPModeUnicastArpSuppressionCache from JSON text + // FromJson unmarshals FlowRSVPType1RecordRouteSubobjects from JSON text FromJson(value string) error - // Validate validates VxlanTunnelDestinationIPModeUnicastArpSuppressionCache + // Validate validates FlowRSVPType1RecordRouteSubobjects Validate() error // A stringer function String() string // Clones the object - Clone() (VxlanTunnelDestinationIPModeUnicastArpSuppressionCache, error) + Clone() (FlowRSVPType1RecordRouteSubobjects, error) validateToAndFrom() error validateObj(vObj *validation, set_default bool) setDefault() - // RemoteVmMac returns string, set in VxlanTunnelDestinationIPModeUnicastArpSuppressionCache. - RemoteVmMac() string - // SetRemoteVmMac assigns string provided by user to VxlanTunnelDestinationIPModeUnicastArpSuppressionCache - SetRemoteVmMac(value string) VxlanTunnelDestinationIPModeUnicastArpSuppressionCache - // HasRemoteVmMac checks if RemoteVmMac has been set in VxlanTunnelDestinationIPModeUnicastArpSuppressionCache - HasRemoteVmMac() bool - // RemoteVmIpv4 returns string, set in VxlanTunnelDestinationIPModeUnicastArpSuppressionCache. - RemoteVmIpv4() string - // SetRemoteVmIpv4 assigns string provided by user to VxlanTunnelDestinationIPModeUnicastArpSuppressionCache - SetRemoteVmIpv4(value string) VxlanTunnelDestinationIPModeUnicastArpSuppressionCache - // HasRemoteVmIpv4 checks if RemoteVmIpv4 has been set in VxlanTunnelDestinationIPModeUnicastArpSuppressionCache - HasRemoteVmIpv4() bool -} - -// Remote VM MAC address bound to Remote VM IPv4 address -// RemoteVmMac returns a string -func (obj *vxlanTunnelDestinationIPModeUnicastArpSuppressionCache) RemoteVmMac() string { - - return *obj.obj.RemoteVmMac - -} - -// Remote VM MAC address bound to Remote VM IPv4 address -// RemoteVmMac returns a string -func (obj *vxlanTunnelDestinationIPModeUnicastArpSuppressionCache) HasRemoteVmMac() bool { - return obj.obj.RemoteVmMac != nil + // Type returns FlowRSVPPathObjectsRecordRouteSubObjectType, set in FlowRSVPType1RecordRouteSubobjects. + // FlowRSVPPathObjectsRecordRouteSubObjectType is currently supported subobjects are IPv4 address(1) and Label(3). + Type() FlowRSVPPathObjectsRecordRouteSubObjectType + // SetType assigns FlowRSVPPathObjectsRecordRouteSubObjectType provided by user to FlowRSVPType1RecordRouteSubobjects. + // FlowRSVPPathObjectsRecordRouteSubObjectType is currently supported subobjects are IPv4 address(1) and Label(3). + SetType(value FlowRSVPPathObjectsRecordRouteSubObjectType) FlowRSVPType1RecordRouteSubobjects + // HasType checks if Type has been set in FlowRSVPType1RecordRouteSubobjects + HasType() bool + setNil() } -// Remote VM MAC address bound to Remote VM IPv4 address -// SetRemoteVmMac sets the string value in the VxlanTunnelDestinationIPModeUnicastArpSuppressionCache object -func (obj *vxlanTunnelDestinationIPModeUnicastArpSuppressionCache) SetRemoteVmMac(value string) VxlanTunnelDestinationIPModeUnicastArpSuppressionCache { - - obj.obj.RemoteVmMac = &value - return obj +// description is TBD +// Type returns a FlowRSVPPathObjectsRecordRouteSubObjectType +func (obj *flowRSVPType1RecordRouteSubobjects) Type() FlowRSVPPathObjectsRecordRouteSubObjectType { + if obj.obj.Type == nil { + obj.obj.Type = NewFlowRSVPPathObjectsRecordRouteSubObjectType().Msg() + } + if obj.typeHolder == nil { + obj.typeHolder = &flowRSVPPathObjectsRecordRouteSubObjectType{obj: obj.obj.Type} + } + return obj.typeHolder } -// Remote VM IPv4 address -// RemoteVmIpv4 returns a string -func (obj *vxlanTunnelDestinationIPModeUnicastArpSuppressionCache) RemoteVmIpv4() string { - - return *obj.obj.RemoteVmIpv4 - +// description is TBD +// Type returns a FlowRSVPPathObjectsRecordRouteSubObjectType +func (obj *flowRSVPType1RecordRouteSubobjects) HasType() bool { + return obj.obj.Type != nil } -// Remote VM IPv4 address -// RemoteVmIpv4 returns a string -func (obj *vxlanTunnelDestinationIPModeUnicastArpSuppressionCache) HasRemoteVmIpv4() bool { - return obj.obj.RemoteVmIpv4 != nil -} +// description is TBD +// SetType sets the FlowRSVPPathObjectsRecordRouteSubObjectType value in the FlowRSVPType1RecordRouteSubobjects object +func (obj *flowRSVPType1RecordRouteSubobjects) SetType(value FlowRSVPPathObjectsRecordRouteSubObjectType) FlowRSVPType1RecordRouteSubobjects { -// Remote VM IPv4 address -// SetRemoteVmIpv4 sets the string value in the VxlanTunnelDestinationIPModeUnicastArpSuppressionCache object -func (obj *vxlanTunnelDestinationIPModeUnicastArpSuppressionCache) SetRemoteVmIpv4(value string) VxlanTunnelDestinationIPModeUnicastArpSuppressionCache { + obj.typeHolder = nil + obj.obj.Type = value.Msg() - obj.obj.RemoteVmIpv4 = &value return obj } -func (obj *vxlanTunnelDestinationIPModeUnicastArpSuppressionCache) validateObj(vObj *validation, set_default bool) { +func (obj *flowRSVPType1RecordRouteSubobjects) validateObj(vObj *validation, set_default bool) { if set_default { obj.setDefault() } - if obj.obj.RemoteVmMac != nil { - - err := obj.validateMac(obj.RemoteVmMac()) - if err != nil { - vObj.validationErrors = append(vObj.validationErrors, fmt.Sprintf("%s %s", err.Error(), "on VxlanTunnelDestinationIPModeUnicastArpSuppressionCache.RemoteVmMac")) - } - - } - - if obj.obj.RemoteVmIpv4 != nil { - - err := obj.validateIpv4(obj.RemoteVmIpv4()) - if err != nil { - vObj.validationErrors = append(vObj.validationErrors, fmt.Sprintf("%s %s", err.Error(), "on VxlanTunnelDestinationIPModeUnicastArpSuppressionCache.RemoteVmIpv4")) - } + if obj.obj.Type != nil { + obj.Type().validateObj(vObj, set_default) } } -func (obj *vxlanTunnelDestinationIPModeUnicastArpSuppressionCache) setDefault() { +func (obj *flowRSVPType1RecordRouteSubobjects) setDefault() { } -// ***** PatternFlowIpv4TosPrecedenceCounter ***** -type patternFlowIpv4TosPrecedenceCounter struct { +// ***** PatternFlowRSVPPathSessionLspTunnelIpv4Ipv4TunnelEndPointAddressCounter ***** +type patternFlowRSVPPathSessionLspTunnelIpv4Ipv4TunnelEndPointAddressCounter struct { validation - obj *otg.PatternFlowIpv4TosPrecedenceCounter + obj *otg.PatternFlowRSVPPathSessionLspTunnelIpv4Ipv4TunnelEndPointAddressCounter } -func NewPatternFlowIpv4TosPrecedenceCounter() PatternFlowIpv4TosPrecedenceCounter { - obj := patternFlowIpv4TosPrecedenceCounter{obj: &otg.PatternFlowIpv4TosPrecedenceCounter{}} +func NewPatternFlowRSVPPathSessionLspTunnelIpv4Ipv4TunnelEndPointAddressCounter() PatternFlowRSVPPathSessionLspTunnelIpv4Ipv4TunnelEndPointAddressCounter { + obj := patternFlowRSVPPathSessionLspTunnelIpv4Ipv4TunnelEndPointAddressCounter{obj: &otg.PatternFlowRSVPPathSessionLspTunnelIpv4Ipv4TunnelEndPointAddressCounter{}} obj.setDefault() return &obj } -func (obj *patternFlowIpv4TosPrecedenceCounter) Msg() *otg.PatternFlowIpv4TosPrecedenceCounter { +func (obj *patternFlowRSVPPathSessionLspTunnelIpv4Ipv4TunnelEndPointAddressCounter) Msg() *otg.PatternFlowRSVPPathSessionLspTunnelIpv4Ipv4TunnelEndPointAddressCounter { return obj.obj } -func (obj *patternFlowIpv4TosPrecedenceCounter) SetMsg(msg *otg.PatternFlowIpv4TosPrecedenceCounter) PatternFlowIpv4TosPrecedenceCounter { +func (obj *patternFlowRSVPPathSessionLspTunnelIpv4Ipv4TunnelEndPointAddressCounter) SetMsg(msg *otg.PatternFlowRSVPPathSessionLspTunnelIpv4Ipv4TunnelEndPointAddressCounter) PatternFlowRSVPPathSessionLspTunnelIpv4Ipv4TunnelEndPointAddressCounter { proto.Merge(obj.obj, msg) return obj } -func (obj *patternFlowIpv4TosPrecedenceCounter) ToProto() (*otg.PatternFlowIpv4TosPrecedenceCounter, error) { +func (obj *patternFlowRSVPPathSessionLspTunnelIpv4Ipv4TunnelEndPointAddressCounter) ToProto() (*otg.PatternFlowRSVPPathSessionLspTunnelIpv4Ipv4TunnelEndPointAddressCounter, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -305289,7 +352373,7 @@ func (obj *patternFlowIpv4TosPrecedenceCounter) ToProto() (*otg.PatternFlowIpv4T return obj.Msg(), nil } -func (obj *patternFlowIpv4TosPrecedenceCounter) FromProto(msg *otg.PatternFlowIpv4TosPrecedenceCounter) (PatternFlowIpv4TosPrecedenceCounter, error) { +func (obj *patternFlowRSVPPathSessionLspTunnelIpv4Ipv4TunnelEndPointAddressCounter) FromProto(msg *otg.PatternFlowRSVPPathSessionLspTunnelIpv4Ipv4TunnelEndPointAddressCounter) (PatternFlowRSVPPathSessionLspTunnelIpv4Ipv4TunnelEndPointAddressCounter, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -305298,7 +352382,7 @@ func (obj *patternFlowIpv4TosPrecedenceCounter) FromProto(msg *otg.PatternFlowIp return newObj, nil } -func (obj *patternFlowIpv4TosPrecedenceCounter) ToPbText() (string, error) { +func (obj *patternFlowRSVPPathSessionLspTunnelIpv4Ipv4TunnelEndPointAddressCounter) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -305310,7 +352394,7 @@ func (obj *patternFlowIpv4TosPrecedenceCounter) ToPbText() (string, error) { return string(protoMarshal), nil } -func (obj *patternFlowIpv4TosPrecedenceCounter) FromPbText(value string) error { +func (obj *patternFlowRSVPPathSessionLspTunnelIpv4Ipv4TunnelEndPointAddressCounter) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj @@ -305323,7 +352407,7 @@ func (obj *patternFlowIpv4TosPrecedenceCounter) FromPbText(value string) error { return retObj } -func (obj *patternFlowIpv4TosPrecedenceCounter) ToYaml() (string, error) { +func (obj *patternFlowRSVPPathSessionLspTunnelIpv4Ipv4TunnelEndPointAddressCounter) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -305344,7 +352428,7 @@ func (obj *patternFlowIpv4TosPrecedenceCounter) ToYaml() (string, error) { return string(data), nil } -func (obj *patternFlowIpv4TosPrecedenceCounter) FromYaml(value string) error { +func (obj *patternFlowRSVPPathSessionLspTunnelIpv4Ipv4TunnelEndPointAddressCounter) FromYaml(value string) error { if value == "" { value = "{}" } @@ -305369,7 +352453,7 @@ func (obj *patternFlowIpv4TosPrecedenceCounter) FromYaml(value string) error { return nil } -func (obj *patternFlowIpv4TosPrecedenceCounter) ToJson() (string, error) { +func (obj *patternFlowRSVPPathSessionLspTunnelIpv4Ipv4TunnelEndPointAddressCounter) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -305387,7 +352471,7 @@ func (obj *patternFlowIpv4TosPrecedenceCounter) ToJson() (string, error) { return string(data), nil } -func (obj *patternFlowIpv4TosPrecedenceCounter) FromJson(value string) error { +func (obj *patternFlowRSVPPathSessionLspTunnelIpv4Ipv4TunnelEndPointAddressCounter) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -305408,19 +352492,19 @@ func (obj *patternFlowIpv4TosPrecedenceCounter) FromJson(value string) error { return nil } -func (obj *patternFlowIpv4TosPrecedenceCounter) validateToAndFrom() error { +func (obj *patternFlowRSVPPathSessionLspTunnelIpv4Ipv4TunnelEndPointAddressCounter) validateToAndFrom() error { // emptyVars() obj.validateObj(&obj.validation, true) return obj.validationResult() } -func (obj *patternFlowIpv4TosPrecedenceCounter) Validate() error { +func (obj *patternFlowRSVPPathSessionLspTunnelIpv4Ipv4TunnelEndPointAddressCounter) Validate() error { // emptyVars() obj.validateObj(&obj.validation, false) return obj.validationResult() } -func (obj *patternFlowIpv4TosPrecedenceCounter) String() string { +func (obj *patternFlowRSVPPathSessionLspTunnelIpv4Ipv4TunnelEndPointAddressCounter) String() string { str, err := obj.ToYaml() if err != nil { return err.Error() @@ -305428,12 +352512,12 @@ func (obj *patternFlowIpv4TosPrecedenceCounter) String() string { return str } -func (obj *patternFlowIpv4TosPrecedenceCounter) Clone() (PatternFlowIpv4TosPrecedenceCounter, error) { +func (obj *patternFlowRSVPPathSessionLspTunnelIpv4Ipv4TunnelEndPointAddressCounter) Clone() (PatternFlowRSVPPathSessionLspTunnelIpv4Ipv4TunnelEndPointAddressCounter, error) { vErr := obj.Validate() if vErr != nil { return nil, vErr } - newObj := NewPatternFlowIpv4TosPrecedenceCounter() + newObj := NewPatternFlowRSVPPathSessionLspTunnelIpv4Ipv4TunnelEndPointAddressCounter() data, err := proto.Marshal(obj.Msg()) if err != nil { return nil, err @@ -305445,99 +352529,99 @@ func (obj *patternFlowIpv4TosPrecedenceCounter) Clone() (PatternFlowIpv4TosPrece return newObj, nil } -// PatternFlowIpv4TosPrecedenceCounter is integer counter pattern -type PatternFlowIpv4TosPrecedenceCounter interface { +// PatternFlowRSVPPathSessionLspTunnelIpv4Ipv4TunnelEndPointAddressCounter is ipv4 counter pattern +type PatternFlowRSVPPathSessionLspTunnelIpv4Ipv4TunnelEndPointAddressCounter interface { Validation - // Msg marshals PatternFlowIpv4TosPrecedenceCounter to protobuf object *otg.PatternFlowIpv4TosPrecedenceCounter + // Msg marshals PatternFlowRSVPPathSessionLspTunnelIpv4Ipv4TunnelEndPointAddressCounter to protobuf object *otg.PatternFlowRSVPPathSessionLspTunnelIpv4Ipv4TunnelEndPointAddressCounter // and doesn't set defaults - Msg() *otg.PatternFlowIpv4TosPrecedenceCounter - // SetMsg unmarshals PatternFlowIpv4TosPrecedenceCounter from protobuf object *otg.PatternFlowIpv4TosPrecedenceCounter + Msg() *otg.PatternFlowRSVPPathSessionLspTunnelIpv4Ipv4TunnelEndPointAddressCounter + // SetMsg unmarshals PatternFlowRSVPPathSessionLspTunnelIpv4Ipv4TunnelEndPointAddressCounter from protobuf object *otg.PatternFlowRSVPPathSessionLspTunnelIpv4Ipv4TunnelEndPointAddressCounter // and doesn't set defaults - SetMsg(*otg.PatternFlowIpv4TosPrecedenceCounter) PatternFlowIpv4TosPrecedenceCounter - // ToProto marshals PatternFlowIpv4TosPrecedenceCounter to protobuf object *otg.PatternFlowIpv4TosPrecedenceCounter - ToProto() (*otg.PatternFlowIpv4TosPrecedenceCounter, error) - // ToPbText marshals PatternFlowIpv4TosPrecedenceCounter to protobuf text + SetMsg(*otg.PatternFlowRSVPPathSessionLspTunnelIpv4Ipv4TunnelEndPointAddressCounter) PatternFlowRSVPPathSessionLspTunnelIpv4Ipv4TunnelEndPointAddressCounter + // ToProto marshals PatternFlowRSVPPathSessionLspTunnelIpv4Ipv4TunnelEndPointAddressCounter to protobuf object *otg.PatternFlowRSVPPathSessionLspTunnelIpv4Ipv4TunnelEndPointAddressCounter + ToProto() (*otg.PatternFlowRSVPPathSessionLspTunnelIpv4Ipv4TunnelEndPointAddressCounter, error) + // ToPbText marshals PatternFlowRSVPPathSessionLspTunnelIpv4Ipv4TunnelEndPointAddressCounter to protobuf text ToPbText() (string, error) - // ToYaml marshals PatternFlowIpv4TosPrecedenceCounter to YAML text + // ToYaml marshals PatternFlowRSVPPathSessionLspTunnelIpv4Ipv4TunnelEndPointAddressCounter to YAML text ToYaml() (string, error) - // ToJson marshals PatternFlowIpv4TosPrecedenceCounter to JSON text + // ToJson marshals PatternFlowRSVPPathSessionLspTunnelIpv4Ipv4TunnelEndPointAddressCounter to JSON text ToJson() (string, error) - // FromProto unmarshals PatternFlowIpv4TosPrecedenceCounter from protobuf object *otg.PatternFlowIpv4TosPrecedenceCounter - FromProto(msg *otg.PatternFlowIpv4TosPrecedenceCounter) (PatternFlowIpv4TosPrecedenceCounter, error) - // FromPbText unmarshals PatternFlowIpv4TosPrecedenceCounter from protobuf text + // FromProto unmarshals PatternFlowRSVPPathSessionLspTunnelIpv4Ipv4TunnelEndPointAddressCounter from protobuf object *otg.PatternFlowRSVPPathSessionLspTunnelIpv4Ipv4TunnelEndPointAddressCounter + FromProto(msg *otg.PatternFlowRSVPPathSessionLspTunnelIpv4Ipv4TunnelEndPointAddressCounter) (PatternFlowRSVPPathSessionLspTunnelIpv4Ipv4TunnelEndPointAddressCounter, error) + // FromPbText unmarshals PatternFlowRSVPPathSessionLspTunnelIpv4Ipv4TunnelEndPointAddressCounter from protobuf text FromPbText(value string) error - // FromYaml unmarshals PatternFlowIpv4TosPrecedenceCounter from YAML text + // FromYaml unmarshals PatternFlowRSVPPathSessionLspTunnelIpv4Ipv4TunnelEndPointAddressCounter from YAML text FromYaml(value string) error - // FromJson unmarshals PatternFlowIpv4TosPrecedenceCounter from JSON text + // FromJson unmarshals PatternFlowRSVPPathSessionLspTunnelIpv4Ipv4TunnelEndPointAddressCounter from JSON text FromJson(value string) error - // Validate validates PatternFlowIpv4TosPrecedenceCounter + // Validate validates PatternFlowRSVPPathSessionLspTunnelIpv4Ipv4TunnelEndPointAddressCounter Validate() error // A stringer function String() string // Clones the object - Clone() (PatternFlowIpv4TosPrecedenceCounter, error) + Clone() (PatternFlowRSVPPathSessionLspTunnelIpv4Ipv4TunnelEndPointAddressCounter, error) validateToAndFrom() error validateObj(vObj *validation, set_default bool) setDefault() - // Start returns uint32, set in PatternFlowIpv4TosPrecedenceCounter. - Start() uint32 - // SetStart assigns uint32 provided by user to PatternFlowIpv4TosPrecedenceCounter - SetStart(value uint32) PatternFlowIpv4TosPrecedenceCounter - // HasStart checks if Start has been set in PatternFlowIpv4TosPrecedenceCounter + // Start returns string, set in PatternFlowRSVPPathSessionLspTunnelIpv4Ipv4TunnelEndPointAddressCounter. + Start() string + // SetStart assigns string provided by user to PatternFlowRSVPPathSessionLspTunnelIpv4Ipv4TunnelEndPointAddressCounter + SetStart(value string) PatternFlowRSVPPathSessionLspTunnelIpv4Ipv4TunnelEndPointAddressCounter + // HasStart checks if Start has been set in PatternFlowRSVPPathSessionLspTunnelIpv4Ipv4TunnelEndPointAddressCounter HasStart() bool - // Step returns uint32, set in PatternFlowIpv4TosPrecedenceCounter. - Step() uint32 - // SetStep assigns uint32 provided by user to PatternFlowIpv4TosPrecedenceCounter - SetStep(value uint32) PatternFlowIpv4TosPrecedenceCounter - // HasStep checks if Step has been set in PatternFlowIpv4TosPrecedenceCounter + // Step returns string, set in PatternFlowRSVPPathSessionLspTunnelIpv4Ipv4TunnelEndPointAddressCounter. + Step() string + // SetStep assigns string provided by user to PatternFlowRSVPPathSessionLspTunnelIpv4Ipv4TunnelEndPointAddressCounter + SetStep(value string) PatternFlowRSVPPathSessionLspTunnelIpv4Ipv4TunnelEndPointAddressCounter + // HasStep checks if Step has been set in PatternFlowRSVPPathSessionLspTunnelIpv4Ipv4TunnelEndPointAddressCounter HasStep() bool - // Count returns uint32, set in PatternFlowIpv4TosPrecedenceCounter. + // Count returns uint32, set in PatternFlowRSVPPathSessionLspTunnelIpv4Ipv4TunnelEndPointAddressCounter. Count() uint32 - // SetCount assigns uint32 provided by user to PatternFlowIpv4TosPrecedenceCounter - SetCount(value uint32) PatternFlowIpv4TosPrecedenceCounter - // HasCount checks if Count has been set in PatternFlowIpv4TosPrecedenceCounter + // SetCount assigns uint32 provided by user to PatternFlowRSVPPathSessionLspTunnelIpv4Ipv4TunnelEndPointAddressCounter + SetCount(value uint32) PatternFlowRSVPPathSessionLspTunnelIpv4Ipv4TunnelEndPointAddressCounter + // HasCount checks if Count has been set in PatternFlowRSVPPathSessionLspTunnelIpv4Ipv4TunnelEndPointAddressCounter HasCount() bool } // description is TBD -// Start returns a uint32 -func (obj *patternFlowIpv4TosPrecedenceCounter) Start() uint32 { +// Start returns a string +func (obj *patternFlowRSVPPathSessionLspTunnelIpv4Ipv4TunnelEndPointAddressCounter) Start() string { return *obj.obj.Start } // description is TBD -// Start returns a uint32 -func (obj *patternFlowIpv4TosPrecedenceCounter) HasStart() bool { +// Start returns a string +func (obj *patternFlowRSVPPathSessionLspTunnelIpv4Ipv4TunnelEndPointAddressCounter) HasStart() bool { return obj.obj.Start != nil } // description is TBD -// SetStart sets the uint32 value in the PatternFlowIpv4TosPrecedenceCounter object -func (obj *patternFlowIpv4TosPrecedenceCounter) SetStart(value uint32) PatternFlowIpv4TosPrecedenceCounter { +// SetStart sets the string value in the PatternFlowRSVPPathSessionLspTunnelIpv4Ipv4TunnelEndPointAddressCounter object +func (obj *patternFlowRSVPPathSessionLspTunnelIpv4Ipv4TunnelEndPointAddressCounter) SetStart(value string) PatternFlowRSVPPathSessionLspTunnelIpv4Ipv4TunnelEndPointAddressCounter { obj.obj.Start = &value return obj } // description is TBD -// Step returns a uint32 -func (obj *patternFlowIpv4TosPrecedenceCounter) Step() uint32 { +// Step returns a string +func (obj *patternFlowRSVPPathSessionLspTunnelIpv4Ipv4TunnelEndPointAddressCounter) Step() string { return *obj.obj.Step } // description is TBD -// Step returns a uint32 -func (obj *patternFlowIpv4TosPrecedenceCounter) HasStep() bool { +// Step returns a string +func (obj *patternFlowRSVPPathSessionLspTunnelIpv4Ipv4TunnelEndPointAddressCounter) HasStep() bool { return obj.obj.Step != nil } // description is TBD -// SetStep sets the uint32 value in the PatternFlowIpv4TosPrecedenceCounter object -func (obj *patternFlowIpv4TosPrecedenceCounter) SetStep(value uint32) PatternFlowIpv4TosPrecedenceCounter { +// SetStep sets the string value in the PatternFlowRSVPPathSessionLspTunnelIpv4Ipv4TunnelEndPointAddressCounter object +func (obj *patternFlowRSVPPathSessionLspTunnelIpv4Ipv4TunnelEndPointAddressCounter) SetStep(value string) PatternFlowRSVPPathSessionLspTunnelIpv4Ipv4TunnelEndPointAddressCounter { obj.obj.Step = &value return obj @@ -305545,7 +352629,7 @@ func (obj *patternFlowIpv4TosPrecedenceCounter) SetStep(value uint32) PatternFlo // description is TBD // Count returns a uint32 -func (obj *patternFlowIpv4TosPrecedenceCounter) Count() uint32 { +func (obj *patternFlowRSVPPathSessionLspTunnelIpv4Ipv4TunnelEndPointAddressCounter) Count() uint32 { return *obj.obj.Count @@ -305553,61 +352637,49 @@ func (obj *patternFlowIpv4TosPrecedenceCounter) Count() uint32 { // description is TBD // Count returns a uint32 -func (obj *patternFlowIpv4TosPrecedenceCounter) HasCount() bool { +func (obj *patternFlowRSVPPathSessionLspTunnelIpv4Ipv4TunnelEndPointAddressCounter) HasCount() bool { return obj.obj.Count != nil } // description is TBD -// SetCount sets the uint32 value in the PatternFlowIpv4TosPrecedenceCounter object -func (obj *patternFlowIpv4TosPrecedenceCounter) SetCount(value uint32) PatternFlowIpv4TosPrecedenceCounter { +// SetCount sets the uint32 value in the PatternFlowRSVPPathSessionLspTunnelIpv4Ipv4TunnelEndPointAddressCounter object +func (obj *patternFlowRSVPPathSessionLspTunnelIpv4Ipv4TunnelEndPointAddressCounter) SetCount(value uint32) PatternFlowRSVPPathSessionLspTunnelIpv4Ipv4TunnelEndPointAddressCounter { obj.obj.Count = &value return obj } -func (obj *patternFlowIpv4TosPrecedenceCounter) validateObj(vObj *validation, set_default bool) { +func (obj *patternFlowRSVPPathSessionLspTunnelIpv4Ipv4TunnelEndPointAddressCounter) validateObj(vObj *validation, set_default bool) { if set_default { obj.setDefault() } if obj.obj.Start != nil { - if *obj.obj.Start > 7 { - vObj.validationErrors = append( - vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowIpv4TosPrecedenceCounter.Start <= 7 but Got %d", *obj.obj.Start)) + err := obj.validateIpv4(obj.Start()) + if err != nil { + vObj.validationErrors = append(vObj.validationErrors, fmt.Sprintf("%s %s", err.Error(), "on PatternFlowRSVPPathSessionLspTunnelIpv4Ipv4TunnelEndPointAddressCounter.Start")) } } if obj.obj.Step != nil { - if *obj.obj.Step > 7 { - vObj.validationErrors = append( - vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowIpv4TosPrecedenceCounter.Step <= 7 but Got %d", *obj.obj.Step)) - } - - } - - if obj.obj.Count != nil { - - if *obj.obj.Count > 7 { - vObj.validationErrors = append( - vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowIpv4TosPrecedenceCounter.Count <= 7 but Got %d", *obj.obj.Count)) + err := obj.validateIpv4(obj.Step()) + if err != nil { + vObj.validationErrors = append(vObj.validationErrors, fmt.Sprintf("%s %s", err.Error(), "on PatternFlowRSVPPathSessionLspTunnelIpv4Ipv4TunnelEndPointAddressCounter.Step")) } } } -func (obj *patternFlowIpv4TosPrecedenceCounter) setDefault() { +func (obj *patternFlowRSVPPathSessionLspTunnelIpv4Ipv4TunnelEndPointAddressCounter) setDefault() { if obj.obj.Start == nil { - obj.SetStart(0) + obj.SetStart("0.0.0.0") } if obj.obj.Step == nil { - obj.SetStep(1) + obj.SetStep("0.0.0.1") } if obj.obj.Count == nil { obj.SetCount(1) @@ -305615,29 +352687,29 @@ func (obj *patternFlowIpv4TosPrecedenceCounter) setDefault() { } -// ***** PatternFlowIpv4TosPrecedenceMetricTag ***** -type patternFlowIpv4TosPrecedenceMetricTag struct { +// ***** PatternFlowRSVPPathSessionLspTunnelIpv4ReservedCounter ***** +type patternFlowRSVPPathSessionLspTunnelIpv4ReservedCounter struct { validation - obj *otg.PatternFlowIpv4TosPrecedenceMetricTag + obj *otg.PatternFlowRSVPPathSessionLspTunnelIpv4ReservedCounter } -func NewPatternFlowIpv4TosPrecedenceMetricTag() PatternFlowIpv4TosPrecedenceMetricTag { - obj := patternFlowIpv4TosPrecedenceMetricTag{obj: &otg.PatternFlowIpv4TosPrecedenceMetricTag{}} +func NewPatternFlowRSVPPathSessionLspTunnelIpv4ReservedCounter() PatternFlowRSVPPathSessionLspTunnelIpv4ReservedCounter { + obj := patternFlowRSVPPathSessionLspTunnelIpv4ReservedCounter{obj: &otg.PatternFlowRSVPPathSessionLspTunnelIpv4ReservedCounter{}} obj.setDefault() return &obj } -func (obj *patternFlowIpv4TosPrecedenceMetricTag) Msg() *otg.PatternFlowIpv4TosPrecedenceMetricTag { +func (obj *patternFlowRSVPPathSessionLspTunnelIpv4ReservedCounter) Msg() *otg.PatternFlowRSVPPathSessionLspTunnelIpv4ReservedCounter { return obj.obj } -func (obj *patternFlowIpv4TosPrecedenceMetricTag) SetMsg(msg *otg.PatternFlowIpv4TosPrecedenceMetricTag) PatternFlowIpv4TosPrecedenceMetricTag { +func (obj *patternFlowRSVPPathSessionLspTunnelIpv4ReservedCounter) SetMsg(msg *otg.PatternFlowRSVPPathSessionLspTunnelIpv4ReservedCounter) PatternFlowRSVPPathSessionLspTunnelIpv4ReservedCounter { proto.Merge(obj.obj, msg) return obj } -func (obj *patternFlowIpv4TosPrecedenceMetricTag) ToProto() (*otg.PatternFlowIpv4TosPrecedenceMetricTag, error) { +func (obj *patternFlowRSVPPathSessionLspTunnelIpv4ReservedCounter) ToProto() (*otg.PatternFlowRSVPPathSessionLspTunnelIpv4ReservedCounter, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -305645,7 +352717,7 @@ func (obj *patternFlowIpv4TosPrecedenceMetricTag) ToProto() (*otg.PatternFlowIpv return obj.Msg(), nil } -func (obj *patternFlowIpv4TosPrecedenceMetricTag) FromProto(msg *otg.PatternFlowIpv4TosPrecedenceMetricTag) (PatternFlowIpv4TosPrecedenceMetricTag, error) { +func (obj *patternFlowRSVPPathSessionLspTunnelIpv4ReservedCounter) FromProto(msg *otg.PatternFlowRSVPPathSessionLspTunnelIpv4ReservedCounter) (PatternFlowRSVPPathSessionLspTunnelIpv4ReservedCounter, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -305654,7 +352726,7 @@ func (obj *patternFlowIpv4TosPrecedenceMetricTag) FromProto(msg *otg.PatternFlow return newObj, nil } -func (obj *patternFlowIpv4TosPrecedenceMetricTag) ToPbText() (string, error) { +func (obj *patternFlowRSVPPathSessionLspTunnelIpv4ReservedCounter) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -305666,7 +352738,7 @@ func (obj *patternFlowIpv4TosPrecedenceMetricTag) ToPbText() (string, error) { return string(protoMarshal), nil } -func (obj *patternFlowIpv4TosPrecedenceMetricTag) FromPbText(value string) error { +func (obj *patternFlowRSVPPathSessionLspTunnelIpv4ReservedCounter) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj @@ -305679,7 +352751,7 @@ func (obj *patternFlowIpv4TosPrecedenceMetricTag) FromPbText(value string) error return retObj } -func (obj *patternFlowIpv4TosPrecedenceMetricTag) ToYaml() (string, error) { +func (obj *patternFlowRSVPPathSessionLspTunnelIpv4ReservedCounter) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -305700,7 +352772,7 @@ func (obj *patternFlowIpv4TosPrecedenceMetricTag) ToYaml() (string, error) { return string(data), nil } -func (obj *patternFlowIpv4TosPrecedenceMetricTag) FromYaml(value string) error { +func (obj *patternFlowRSVPPathSessionLspTunnelIpv4ReservedCounter) FromYaml(value string) error { if value == "" { value = "{}" } @@ -305725,7 +352797,7 @@ func (obj *patternFlowIpv4TosPrecedenceMetricTag) FromYaml(value string) error { return nil } -func (obj *patternFlowIpv4TosPrecedenceMetricTag) ToJson() (string, error) { +func (obj *patternFlowRSVPPathSessionLspTunnelIpv4ReservedCounter) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -305743,7 +352815,7 @@ func (obj *patternFlowIpv4TosPrecedenceMetricTag) ToJson() (string, error) { return string(data), nil } -func (obj *patternFlowIpv4TosPrecedenceMetricTag) FromJson(value string) error { +func (obj *patternFlowRSVPPathSessionLspTunnelIpv4ReservedCounter) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -305764,19 +352836,19 @@ func (obj *patternFlowIpv4TosPrecedenceMetricTag) FromJson(value string) error { return nil } -func (obj *patternFlowIpv4TosPrecedenceMetricTag) validateToAndFrom() error { +func (obj *patternFlowRSVPPathSessionLspTunnelIpv4ReservedCounter) validateToAndFrom() error { // emptyVars() obj.validateObj(&obj.validation, true) return obj.validationResult() } -func (obj *patternFlowIpv4TosPrecedenceMetricTag) Validate() error { +func (obj *patternFlowRSVPPathSessionLspTunnelIpv4ReservedCounter) Validate() error { // emptyVars() obj.validateObj(&obj.validation, false) return obj.validationResult() } -func (obj *patternFlowIpv4TosPrecedenceMetricTag) String() string { +func (obj *patternFlowRSVPPathSessionLspTunnelIpv4ReservedCounter) String() string { str, err := obj.ToYaml() if err != nil { return err.Error() @@ -305784,12 +352856,12 @@ func (obj *patternFlowIpv4TosPrecedenceMetricTag) String() string { return str } -func (obj *patternFlowIpv4TosPrecedenceMetricTag) Clone() (PatternFlowIpv4TosPrecedenceMetricTag, error) { +func (obj *patternFlowRSVPPathSessionLspTunnelIpv4ReservedCounter) Clone() (PatternFlowRSVPPathSessionLspTunnelIpv4ReservedCounter, error) { vErr := obj.Validate() if vErr != nil { return nil, vErr } - newObj := NewPatternFlowIpv4TosPrecedenceMetricTag() + newObj := NewPatternFlowRSVPPathSessionLspTunnelIpv4ReservedCounter() data, err := proto.Marshal(obj.Msg()) if err != nil { return nil, err @@ -305801,183 +352873,199 @@ func (obj *patternFlowIpv4TosPrecedenceMetricTag) Clone() (PatternFlowIpv4TosPre return newObj, nil } -// PatternFlowIpv4TosPrecedenceMetricTag is metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. -type PatternFlowIpv4TosPrecedenceMetricTag interface { +// PatternFlowRSVPPathSessionLspTunnelIpv4ReservedCounter is integer counter pattern +type PatternFlowRSVPPathSessionLspTunnelIpv4ReservedCounter interface { Validation - // Msg marshals PatternFlowIpv4TosPrecedenceMetricTag to protobuf object *otg.PatternFlowIpv4TosPrecedenceMetricTag + // Msg marshals PatternFlowRSVPPathSessionLspTunnelIpv4ReservedCounter to protobuf object *otg.PatternFlowRSVPPathSessionLspTunnelIpv4ReservedCounter // and doesn't set defaults - Msg() *otg.PatternFlowIpv4TosPrecedenceMetricTag - // SetMsg unmarshals PatternFlowIpv4TosPrecedenceMetricTag from protobuf object *otg.PatternFlowIpv4TosPrecedenceMetricTag + Msg() *otg.PatternFlowRSVPPathSessionLspTunnelIpv4ReservedCounter + // SetMsg unmarshals PatternFlowRSVPPathSessionLspTunnelIpv4ReservedCounter from protobuf object *otg.PatternFlowRSVPPathSessionLspTunnelIpv4ReservedCounter // and doesn't set defaults - SetMsg(*otg.PatternFlowIpv4TosPrecedenceMetricTag) PatternFlowIpv4TosPrecedenceMetricTag - // ToProto marshals PatternFlowIpv4TosPrecedenceMetricTag to protobuf object *otg.PatternFlowIpv4TosPrecedenceMetricTag - ToProto() (*otg.PatternFlowIpv4TosPrecedenceMetricTag, error) - // ToPbText marshals PatternFlowIpv4TosPrecedenceMetricTag to protobuf text + SetMsg(*otg.PatternFlowRSVPPathSessionLspTunnelIpv4ReservedCounter) PatternFlowRSVPPathSessionLspTunnelIpv4ReservedCounter + // ToProto marshals PatternFlowRSVPPathSessionLspTunnelIpv4ReservedCounter to protobuf object *otg.PatternFlowRSVPPathSessionLspTunnelIpv4ReservedCounter + ToProto() (*otg.PatternFlowRSVPPathSessionLspTunnelIpv4ReservedCounter, error) + // ToPbText marshals PatternFlowRSVPPathSessionLspTunnelIpv4ReservedCounter to protobuf text ToPbText() (string, error) - // ToYaml marshals PatternFlowIpv4TosPrecedenceMetricTag to YAML text + // ToYaml marshals PatternFlowRSVPPathSessionLspTunnelIpv4ReservedCounter to YAML text ToYaml() (string, error) - // ToJson marshals PatternFlowIpv4TosPrecedenceMetricTag to JSON text + // ToJson marshals PatternFlowRSVPPathSessionLspTunnelIpv4ReservedCounter to JSON text ToJson() (string, error) - // FromProto unmarshals PatternFlowIpv4TosPrecedenceMetricTag from protobuf object *otg.PatternFlowIpv4TosPrecedenceMetricTag - FromProto(msg *otg.PatternFlowIpv4TosPrecedenceMetricTag) (PatternFlowIpv4TosPrecedenceMetricTag, error) - // FromPbText unmarshals PatternFlowIpv4TosPrecedenceMetricTag from protobuf text + // FromProto unmarshals PatternFlowRSVPPathSessionLspTunnelIpv4ReservedCounter from protobuf object *otg.PatternFlowRSVPPathSessionLspTunnelIpv4ReservedCounter + FromProto(msg *otg.PatternFlowRSVPPathSessionLspTunnelIpv4ReservedCounter) (PatternFlowRSVPPathSessionLspTunnelIpv4ReservedCounter, error) + // FromPbText unmarshals PatternFlowRSVPPathSessionLspTunnelIpv4ReservedCounter from protobuf text FromPbText(value string) error - // FromYaml unmarshals PatternFlowIpv4TosPrecedenceMetricTag from YAML text + // FromYaml unmarshals PatternFlowRSVPPathSessionLspTunnelIpv4ReservedCounter from YAML text FromYaml(value string) error - // FromJson unmarshals PatternFlowIpv4TosPrecedenceMetricTag from JSON text + // FromJson unmarshals PatternFlowRSVPPathSessionLspTunnelIpv4ReservedCounter from JSON text FromJson(value string) error - // Validate validates PatternFlowIpv4TosPrecedenceMetricTag + // Validate validates PatternFlowRSVPPathSessionLspTunnelIpv4ReservedCounter Validate() error // A stringer function String() string // Clones the object - Clone() (PatternFlowIpv4TosPrecedenceMetricTag, error) + Clone() (PatternFlowRSVPPathSessionLspTunnelIpv4ReservedCounter, error) validateToAndFrom() error validateObj(vObj *validation, set_default bool) setDefault() - // Name returns string, set in PatternFlowIpv4TosPrecedenceMetricTag. - Name() string - // SetName assigns string provided by user to PatternFlowIpv4TosPrecedenceMetricTag - SetName(value string) PatternFlowIpv4TosPrecedenceMetricTag - // Offset returns uint32, set in PatternFlowIpv4TosPrecedenceMetricTag. - Offset() uint32 - // SetOffset assigns uint32 provided by user to PatternFlowIpv4TosPrecedenceMetricTag - SetOffset(value uint32) PatternFlowIpv4TosPrecedenceMetricTag - // HasOffset checks if Offset has been set in PatternFlowIpv4TosPrecedenceMetricTag - HasOffset() bool - // Length returns uint32, set in PatternFlowIpv4TosPrecedenceMetricTag. - Length() uint32 - // SetLength assigns uint32 provided by user to PatternFlowIpv4TosPrecedenceMetricTag - SetLength(value uint32) PatternFlowIpv4TosPrecedenceMetricTag - // HasLength checks if Length has been set in PatternFlowIpv4TosPrecedenceMetricTag - HasLength() bool + // Start returns uint32, set in PatternFlowRSVPPathSessionLspTunnelIpv4ReservedCounter. + Start() uint32 + // SetStart assigns uint32 provided by user to PatternFlowRSVPPathSessionLspTunnelIpv4ReservedCounter + SetStart(value uint32) PatternFlowRSVPPathSessionLspTunnelIpv4ReservedCounter + // HasStart checks if Start has been set in PatternFlowRSVPPathSessionLspTunnelIpv4ReservedCounter + HasStart() bool + // Step returns uint32, set in PatternFlowRSVPPathSessionLspTunnelIpv4ReservedCounter. + Step() uint32 + // SetStep assigns uint32 provided by user to PatternFlowRSVPPathSessionLspTunnelIpv4ReservedCounter + SetStep(value uint32) PatternFlowRSVPPathSessionLspTunnelIpv4ReservedCounter + // HasStep checks if Step has been set in PatternFlowRSVPPathSessionLspTunnelIpv4ReservedCounter + HasStep() bool + // Count returns uint32, set in PatternFlowRSVPPathSessionLspTunnelIpv4ReservedCounter. + Count() uint32 + // SetCount assigns uint32 provided by user to PatternFlowRSVPPathSessionLspTunnelIpv4ReservedCounter + SetCount(value uint32) PatternFlowRSVPPathSessionLspTunnelIpv4ReservedCounter + // HasCount checks if Count has been set in PatternFlowRSVPPathSessionLspTunnelIpv4ReservedCounter + HasCount() bool } -// Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field -// Name returns a string -func (obj *patternFlowIpv4TosPrecedenceMetricTag) Name() string { +// description is TBD +// Start returns a uint32 +func (obj *patternFlowRSVPPathSessionLspTunnelIpv4ReservedCounter) Start() uint32 { - return *obj.obj.Name + return *obj.obj.Start } -// Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field -// SetName sets the string value in the PatternFlowIpv4TosPrecedenceMetricTag object -func (obj *patternFlowIpv4TosPrecedenceMetricTag) SetName(value string) PatternFlowIpv4TosPrecedenceMetricTag { +// description is TBD +// Start returns a uint32 +func (obj *patternFlowRSVPPathSessionLspTunnelIpv4ReservedCounter) HasStart() bool { + return obj.obj.Start != nil +} - obj.obj.Name = &value +// description is TBD +// SetStart sets the uint32 value in the PatternFlowRSVPPathSessionLspTunnelIpv4ReservedCounter object +func (obj *patternFlowRSVPPathSessionLspTunnelIpv4ReservedCounter) SetStart(value uint32) PatternFlowRSVPPathSessionLspTunnelIpv4ReservedCounter { + + obj.obj.Start = &value return obj } -// Offset in bits relative to start of corresponding header field -// Offset returns a uint32 -func (obj *patternFlowIpv4TosPrecedenceMetricTag) Offset() uint32 { +// description is TBD +// Step returns a uint32 +func (obj *patternFlowRSVPPathSessionLspTunnelIpv4ReservedCounter) Step() uint32 { - return *obj.obj.Offset + return *obj.obj.Step } -// Offset in bits relative to start of corresponding header field -// Offset returns a uint32 -func (obj *patternFlowIpv4TosPrecedenceMetricTag) HasOffset() bool { - return obj.obj.Offset != nil +// description is TBD +// Step returns a uint32 +func (obj *patternFlowRSVPPathSessionLspTunnelIpv4ReservedCounter) HasStep() bool { + return obj.obj.Step != nil } -// Offset in bits relative to start of corresponding header field -// SetOffset sets the uint32 value in the PatternFlowIpv4TosPrecedenceMetricTag object -func (obj *patternFlowIpv4TosPrecedenceMetricTag) SetOffset(value uint32) PatternFlowIpv4TosPrecedenceMetricTag { +// description is TBD +// SetStep sets the uint32 value in the PatternFlowRSVPPathSessionLspTunnelIpv4ReservedCounter object +func (obj *patternFlowRSVPPathSessionLspTunnelIpv4ReservedCounter) SetStep(value uint32) PatternFlowRSVPPathSessionLspTunnelIpv4ReservedCounter { - obj.obj.Offset = &value + obj.obj.Step = &value return obj } -// Number of bits to track for metrics starting from configured offset of corresponding header field -// Length returns a uint32 -func (obj *patternFlowIpv4TosPrecedenceMetricTag) Length() uint32 { +// description is TBD +// Count returns a uint32 +func (obj *patternFlowRSVPPathSessionLspTunnelIpv4ReservedCounter) Count() uint32 { - return *obj.obj.Length + return *obj.obj.Count } -// Number of bits to track for metrics starting from configured offset of corresponding header field -// Length returns a uint32 -func (obj *patternFlowIpv4TosPrecedenceMetricTag) HasLength() bool { - return obj.obj.Length != nil +// description is TBD +// Count returns a uint32 +func (obj *patternFlowRSVPPathSessionLspTunnelIpv4ReservedCounter) HasCount() bool { + return obj.obj.Count != nil } -// Number of bits to track for metrics starting from configured offset of corresponding header field -// SetLength sets the uint32 value in the PatternFlowIpv4TosPrecedenceMetricTag object -func (obj *patternFlowIpv4TosPrecedenceMetricTag) SetLength(value uint32) PatternFlowIpv4TosPrecedenceMetricTag { +// description is TBD +// SetCount sets the uint32 value in the PatternFlowRSVPPathSessionLspTunnelIpv4ReservedCounter object +func (obj *patternFlowRSVPPathSessionLspTunnelIpv4ReservedCounter) SetCount(value uint32) PatternFlowRSVPPathSessionLspTunnelIpv4ReservedCounter { - obj.obj.Length = &value + obj.obj.Count = &value return obj } -func (obj *patternFlowIpv4TosPrecedenceMetricTag) validateObj(vObj *validation, set_default bool) { +func (obj *patternFlowRSVPPathSessionLspTunnelIpv4ReservedCounter) validateObj(vObj *validation, set_default bool) { if set_default { obj.setDefault() } - // Name is required - if obj.obj.Name == nil { - vObj.validationErrors = append(vObj.validationErrors, "Name is required field on interface PatternFlowIpv4TosPrecedenceMetricTag") + if obj.obj.Start != nil { + + if *obj.obj.Start > 65535 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("0 <= PatternFlowRSVPPathSessionLspTunnelIpv4ReservedCounter.Start <= 65535 but Got %d", *obj.obj.Start)) + } + } - if obj.obj.Offset != nil { + if obj.obj.Step != nil { - if *obj.obj.Offset > 2 { + if *obj.obj.Step > 65535 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowIpv4TosPrecedenceMetricTag.Offset <= 2 but Got %d", *obj.obj.Offset)) + fmt.Sprintf("0 <= PatternFlowRSVPPathSessionLspTunnelIpv4ReservedCounter.Step <= 65535 but Got %d", *obj.obj.Step)) } } - if obj.obj.Length != nil { + if obj.obj.Count != nil { - if *obj.obj.Length < 1 || *obj.obj.Length > 3 { + if *obj.obj.Count > 65535 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("1 <= PatternFlowIpv4TosPrecedenceMetricTag.Length <= 3 but Got %d", *obj.obj.Length)) + fmt.Sprintf("0 <= PatternFlowRSVPPathSessionLspTunnelIpv4ReservedCounter.Count <= 65535 but Got %d", *obj.obj.Count)) } } } -func (obj *patternFlowIpv4TosPrecedenceMetricTag) setDefault() { - if obj.obj.Offset == nil { - obj.SetOffset(0) +func (obj *patternFlowRSVPPathSessionLspTunnelIpv4ReservedCounter) setDefault() { + if obj.obj.Start == nil { + obj.SetStart(0) } - if obj.obj.Length == nil { - obj.SetLength(3) + if obj.obj.Step == nil { + obj.SetStep(1) + } + if obj.obj.Count == nil { + obj.SetCount(1) } } -// ***** PatternFlowIpv4TosDelayCounter ***** -type patternFlowIpv4TosDelayCounter struct { +// ***** PatternFlowRSVPPathSessionLspTunnelIpv4TunnelIdCounter ***** +type patternFlowRSVPPathSessionLspTunnelIpv4TunnelIdCounter struct { validation - obj *otg.PatternFlowIpv4TosDelayCounter + obj *otg.PatternFlowRSVPPathSessionLspTunnelIpv4TunnelIdCounter } -func NewPatternFlowIpv4TosDelayCounter() PatternFlowIpv4TosDelayCounter { - obj := patternFlowIpv4TosDelayCounter{obj: &otg.PatternFlowIpv4TosDelayCounter{}} +func NewPatternFlowRSVPPathSessionLspTunnelIpv4TunnelIdCounter() PatternFlowRSVPPathSessionLspTunnelIpv4TunnelIdCounter { + obj := patternFlowRSVPPathSessionLspTunnelIpv4TunnelIdCounter{obj: &otg.PatternFlowRSVPPathSessionLspTunnelIpv4TunnelIdCounter{}} obj.setDefault() return &obj } -func (obj *patternFlowIpv4TosDelayCounter) Msg() *otg.PatternFlowIpv4TosDelayCounter { +func (obj *patternFlowRSVPPathSessionLspTunnelIpv4TunnelIdCounter) Msg() *otg.PatternFlowRSVPPathSessionLspTunnelIpv4TunnelIdCounter { return obj.obj } -func (obj *patternFlowIpv4TosDelayCounter) SetMsg(msg *otg.PatternFlowIpv4TosDelayCounter) PatternFlowIpv4TosDelayCounter { +func (obj *patternFlowRSVPPathSessionLspTunnelIpv4TunnelIdCounter) SetMsg(msg *otg.PatternFlowRSVPPathSessionLspTunnelIpv4TunnelIdCounter) PatternFlowRSVPPathSessionLspTunnelIpv4TunnelIdCounter { proto.Merge(obj.obj, msg) return obj } -func (obj *patternFlowIpv4TosDelayCounter) ToProto() (*otg.PatternFlowIpv4TosDelayCounter, error) { +func (obj *patternFlowRSVPPathSessionLspTunnelIpv4TunnelIdCounter) ToProto() (*otg.PatternFlowRSVPPathSessionLspTunnelIpv4TunnelIdCounter, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -305985,7 +353073,7 @@ func (obj *patternFlowIpv4TosDelayCounter) ToProto() (*otg.PatternFlowIpv4TosDel return obj.Msg(), nil } -func (obj *patternFlowIpv4TosDelayCounter) FromProto(msg *otg.PatternFlowIpv4TosDelayCounter) (PatternFlowIpv4TosDelayCounter, error) { +func (obj *patternFlowRSVPPathSessionLspTunnelIpv4TunnelIdCounter) FromProto(msg *otg.PatternFlowRSVPPathSessionLspTunnelIpv4TunnelIdCounter) (PatternFlowRSVPPathSessionLspTunnelIpv4TunnelIdCounter, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -305994,7 +353082,7 @@ func (obj *patternFlowIpv4TosDelayCounter) FromProto(msg *otg.PatternFlowIpv4Tos return newObj, nil } -func (obj *patternFlowIpv4TosDelayCounter) ToPbText() (string, error) { +func (obj *patternFlowRSVPPathSessionLspTunnelIpv4TunnelIdCounter) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -306006,7 +353094,7 @@ func (obj *patternFlowIpv4TosDelayCounter) ToPbText() (string, error) { return string(protoMarshal), nil } -func (obj *patternFlowIpv4TosDelayCounter) FromPbText(value string) error { +func (obj *patternFlowRSVPPathSessionLspTunnelIpv4TunnelIdCounter) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj @@ -306019,7 +353107,7 @@ func (obj *patternFlowIpv4TosDelayCounter) FromPbText(value string) error { return retObj } -func (obj *patternFlowIpv4TosDelayCounter) ToYaml() (string, error) { +func (obj *patternFlowRSVPPathSessionLspTunnelIpv4TunnelIdCounter) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -306040,7 +353128,7 @@ func (obj *patternFlowIpv4TosDelayCounter) ToYaml() (string, error) { return string(data), nil } -func (obj *patternFlowIpv4TosDelayCounter) FromYaml(value string) error { +func (obj *patternFlowRSVPPathSessionLspTunnelIpv4TunnelIdCounter) FromYaml(value string) error { if value == "" { value = "{}" } @@ -306065,7 +353153,7 @@ func (obj *patternFlowIpv4TosDelayCounter) FromYaml(value string) error { return nil } -func (obj *patternFlowIpv4TosDelayCounter) ToJson() (string, error) { +func (obj *patternFlowRSVPPathSessionLspTunnelIpv4TunnelIdCounter) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -306083,7 +353171,7 @@ func (obj *patternFlowIpv4TosDelayCounter) ToJson() (string, error) { return string(data), nil } -func (obj *patternFlowIpv4TosDelayCounter) FromJson(value string) error { +func (obj *patternFlowRSVPPathSessionLspTunnelIpv4TunnelIdCounter) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -306104,19 +353192,19 @@ func (obj *patternFlowIpv4TosDelayCounter) FromJson(value string) error { return nil } -func (obj *patternFlowIpv4TosDelayCounter) validateToAndFrom() error { +func (obj *patternFlowRSVPPathSessionLspTunnelIpv4TunnelIdCounter) validateToAndFrom() error { // emptyVars() obj.validateObj(&obj.validation, true) return obj.validationResult() } -func (obj *patternFlowIpv4TosDelayCounter) Validate() error { +func (obj *patternFlowRSVPPathSessionLspTunnelIpv4TunnelIdCounter) Validate() error { // emptyVars() obj.validateObj(&obj.validation, false) return obj.validationResult() } -func (obj *patternFlowIpv4TosDelayCounter) String() string { +func (obj *patternFlowRSVPPathSessionLspTunnelIpv4TunnelIdCounter) String() string { str, err := obj.ToYaml() if err != nil { return err.Error() @@ -306124,12 +353212,12 @@ func (obj *patternFlowIpv4TosDelayCounter) String() string { return str } -func (obj *patternFlowIpv4TosDelayCounter) Clone() (PatternFlowIpv4TosDelayCounter, error) { +func (obj *patternFlowRSVPPathSessionLspTunnelIpv4TunnelIdCounter) Clone() (PatternFlowRSVPPathSessionLspTunnelIpv4TunnelIdCounter, error) { vErr := obj.Validate() if vErr != nil { return nil, vErr } - newObj := NewPatternFlowIpv4TosDelayCounter() + newObj := NewPatternFlowRSVPPathSessionLspTunnelIpv4TunnelIdCounter() data, err := proto.Marshal(obj.Msg()) if err != nil { return nil, err @@ -306141,63 +353229,63 @@ func (obj *patternFlowIpv4TosDelayCounter) Clone() (PatternFlowIpv4TosDelayCount return newObj, nil } -// PatternFlowIpv4TosDelayCounter is integer counter pattern -type PatternFlowIpv4TosDelayCounter interface { +// PatternFlowRSVPPathSessionLspTunnelIpv4TunnelIdCounter is integer counter pattern +type PatternFlowRSVPPathSessionLspTunnelIpv4TunnelIdCounter interface { Validation - // Msg marshals PatternFlowIpv4TosDelayCounter to protobuf object *otg.PatternFlowIpv4TosDelayCounter + // Msg marshals PatternFlowRSVPPathSessionLspTunnelIpv4TunnelIdCounter to protobuf object *otg.PatternFlowRSVPPathSessionLspTunnelIpv4TunnelIdCounter // and doesn't set defaults - Msg() *otg.PatternFlowIpv4TosDelayCounter - // SetMsg unmarshals PatternFlowIpv4TosDelayCounter from protobuf object *otg.PatternFlowIpv4TosDelayCounter + Msg() *otg.PatternFlowRSVPPathSessionLspTunnelIpv4TunnelIdCounter + // SetMsg unmarshals PatternFlowRSVPPathSessionLspTunnelIpv4TunnelIdCounter from protobuf object *otg.PatternFlowRSVPPathSessionLspTunnelIpv4TunnelIdCounter // and doesn't set defaults - SetMsg(*otg.PatternFlowIpv4TosDelayCounter) PatternFlowIpv4TosDelayCounter - // ToProto marshals PatternFlowIpv4TosDelayCounter to protobuf object *otg.PatternFlowIpv4TosDelayCounter - ToProto() (*otg.PatternFlowIpv4TosDelayCounter, error) - // ToPbText marshals PatternFlowIpv4TosDelayCounter to protobuf text + SetMsg(*otg.PatternFlowRSVPPathSessionLspTunnelIpv4TunnelIdCounter) PatternFlowRSVPPathSessionLspTunnelIpv4TunnelIdCounter + // ToProto marshals PatternFlowRSVPPathSessionLspTunnelIpv4TunnelIdCounter to protobuf object *otg.PatternFlowRSVPPathSessionLspTunnelIpv4TunnelIdCounter + ToProto() (*otg.PatternFlowRSVPPathSessionLspTunnelIpv4TunnelIdCounter, error) + // ToPbText marshals PatternFlowRSVPPathSessionLspTunnelIpv4TunnelIdCounter to protobuf text ToPbText() (string, error) - // ToYaml marshals PatternFlowIpv4TosDelayCounter to YAML text + // ToYaml marshals PatternFlowRSVPPathSessionLspTunnelIpv4TunnelIdCounter to YAML text ToYaml() (string, error) - // ToJson marshals PatternFlowIpv4TosDelayCounter to JSON text + // ToJson marshals PatternFlowRSVPPathSessionLspTunnelIpv4TunnelIdCounter to JSON text ToJson() (string, error) - // FromProto unmarshals PatternFlowIpv4TosDelayCounter from protobuf object *otg.PatternFlowIpv4TosDelayCounter - FromProto(msg *otg.PatternFlowIpv4TosDelayCounter) (PatternFlowIpv4TosDelayCounter, error) - // FromPbText unmarshals PatternFlowIpv4TosDelayCounter from protobuf text + // FromProto unmarshals PatternFlowRSVPPathSessionLspTunnelIpv4TunnelIdCounter from protobuf object *otg.PatternFlowRSVPPathSessionLspTunnelIpv4TunnelIdCounter + FromProto(msg *otg.PatternFlowRSVPPathSessionLspTunnelIpv4TunnelIdCounter) (PatternFlowRSVPPathSessionLspTunnelIpv4TunnelIdCounter, error) + // FromPbText unmarshals PatternFlowRSVPPathSessionLspTunnelIpv4TunnelIdCounter from protobuf text FromPbText(value string) error - // FromYaml unmarshals PatternFlowIpv4TosDelayCounter from YAML text + // FromYaml unmarshals PatternFlowRSVPPathSessionLspTunnelIpv4TunnelIdCounter from YAML text FromYaml(value string) error - // FromJson unmarshals PatternFlowIpv4TosDelayCounter from JSON text + // FromJson unmarshals PatternFlowRSVPPathSessionLspTunnelIpv4TunnelIdCounter from JSON text FromJson(value string) error - // Validate validates PatternFlowIpv4TosDelayCounter + // Validate validates PatternFlowRSVPPathSessionLspTunnelIpv4TunnelIdCounter Validate() error // A stringer function String() string // Clones the object - Clone() (PatternFlowIpv4TosDelayCounter, error) + Clone() (PatternFlowRSVPPathSessionLspTunnelIpv4TunnelIdCounter, error) validateToAndFrom() error validateObj(vObj *validation, set_default bool) setDefault() - // Start returns uint32, set in PatternFlowIpv4TosDelayCounter. + // Start returns uint32, set in PatternFlowRSVPPathSessionLspTunnelIpv4TunnelIdCounter. Start() uint32 - // SetStart assigns uint32 provided by user to PatternFlowIpv4TosDelayCounter - SetStart(value uint32) PatternFlowIpv4TosDelayCounter - // HasStart checks if Start has been set in PatternFlowIpv4TosDelayCounter + // SetStart assigns uint32 provided by user to PatternFlowRSVPPathSessionLspTunnelIpv4TunnelIdCounter + SetStart(value uint32) PatternFlowRSVPPathSessionLspTunnelIpv4TunnelIdCounter + // HasStart checks if Start has been set in PatternFlowRSVPPathSessionLspTunnelIpv4TunnelIdCounter HasStart() bool - // Step returns uint32, set in PatternFlowIpv4TosDelayCounter. + // Step returns uint32, set in PatternFlowRSVPPathSessionLspTunnelIpv4TunnelIdCounter. Step() uint32 - // SetStep assigns uint32 provided by user to PatternFlowIpv4TosDelayCounter - SetStep(value uint32) PatternFlowIpv4TosDelayCounter - // HasStep checks if Step has been set in PatternFlowIpv4TosDelayCounter + // SetStep assigns uint32 provided by user to PatternFlowRSVPPathSessionLspTunnelIpv4TunnelIdCounter + SetStep(value uint32) PatternFlowRSVPPathSessionLspTunnelIpv4TunnelIdCounter + // HasStep checks if Step has been set in PatternFlowRSVPPathSessionLspTunnelIpv4TunnelIdCounter HasStep() bool - // Count returns uint32, set in PatternFlowIpv4TosDelayCounter. + // Count returns uint32, set in PatternFlowRSVPPathSessionLspTunnelIpv4TunnelIdCounter. Count() uint32 - // SetCount assigns uint32 provided by user to PatternFlowIpv4TosDelayCounter - SetCount(value uint32) PatternFlowIpv4TosDelayCounter - // HasCount checks if Count has been set in PatternFlowIpv4TosDelayCounter + // SetCount assigns uint32 provided by user to PatternFlowRSVPPathSessionLspTunnelIpv4TunnelIdCounter + SetCount(value uint32) PatternFlowRSVPPathSessionLspTunnelIpv4TunnelIdCounter + // HasCount checks if Count has been set in PatternFlowRSVPPathSessionLspTunnelIpv4TunnelIdCounter HasCount() bool } // description is TBD // Start returns a uint32 -func (obj *patternFlowIpv4TosDelayCounter) Start() uint32 { +func (obj *patternFlowRSVPPathSessionLspTunnelIpv4TunnelIdCounter) Start() uint32 { return *obj.obj.Start @@ -306205,13 +353293,13 @@ func (obj *patternFlowIpv4TosDelayCounter) Start() uint32 { // description is TBD // Start returns a uint32 -func (obj *patternFlowIpv4TosDelayCounter) HasStart() bool { +func (obj *patternFlowRSVPPathSessionLspTunnelIpv4TunnelIdCounter) HasStart() bool { return obj.obj.Start != nil } // description is TBD -// SetStart sets the uint32 value in the PatternFlowIpv4TosDelayCounter object -func (obj *patternFlowIpv4TosDelayCounter) SetStart(value uint32) PatternFlowIpv4TosDelayCounter { +// SetStart sets the uint32 value in the PatternFlowRSVPPathSessionLspTunnelIpv4TunnelIdCounter object +func (obj *patternFlowRSVPPathSessionLspTunnelIpv4TunnelIdCounter) SetStart(value uint32) PatternFlowRSVPPathSessionLspTunnelIpv4TunnelIdCounter { obj.obj.Start = &value return obj @@ -306219,7 +353307,7 @@ func (obj *patternFlowIpv4TosDelayCounter) SetStart(value uint32) PatternFlowIpv // description is TBD // Step returns a uint32 -func (obj *patternFlowIpv4TosDelayCounter) Step() uint32 { +func (obj *patternFlowRSVPPathSessionLspTunnelIpv4TunnelIdCounter) Step() uint32 { return *obj.obj.Step @@ -306227,13 +353315,13 @@ func (obj *patternFlowIpv4TosDelayCounter) Step() uint32 { // description is TBD // Step returns a uint32 -func (obj *patternFlowIpv4TosDelayCounter) HasStep() bool { +func (obj *patternFlowRSVPPathSessionLspTunnelIpv4TunnelIdCounter) HasStep() bool { return obj.obj.Step != nil } // description is TBD -// SetStep sets the uint32 value in the PatternFlowIpv4TosDelayCounter object -func (obj *patternFlowIpv4TosDelayCounter) SetStep(value uint32) PatternFlowIpv4TosDelayCounter { +// SetStep sets the uint32 value in the PatternFlowRSVPPathSessionLspTunnelIpv4TunnelIdCounter object +func (obj *patternFlowRSVPPathSessionLspTunnelIpv4TunnelIdCounter) SetStep(value uint32) PatternFlowRSVPPathSessionLspTunnelIpv4TunnelIdCounter { obj.obj.Step = &value return obj @@ -306241,7 +353329,7 @@ func (obj *patternFlowIpv4TosDelayCounter) SetStep(value uint32) PatternFlowIpv4 // description is TBD // Count returns a uint32 -func (obj *patternFlowIpv4TosDelayCounter) Count() uint32 { +func (obj *patternFlowRSVPPathSessionLspTunnelIpv4TunnelIdCounter) Count() uint32 { return *obj.obj.Count @@ -306249,56 +353337,56 @@ func (obj *patternFlowIpv4TosDelayCounter) Count() uint32 { // description is TBD // Count returns a uint32 -func (obj *patternFlowIpv4TosDelayCounter) HasCount() bool { +func (obj *patternFlowRSVPPathSessionLspTunnelIpv4TunnelIdCounter) HasCount() bool { return obj.obj.Count != nil } // description is TBD -// SetCount sets the uint32 value in the PatternFlowIpv4TosDelayCounter object -func (obj *patternFlowIpv4TosDelayCounter) SetCount(value uint32) PatternFlowIpv4TosDelayCounter { +// SetCount sets the uint32 value in the PatternFlowRSVPPathSessionLspTunnelIpv4TunnelIdCounter object +func (obj *patternFlowRSVPPathSessionLspTunnelIpv4TunnelIdCounter) SetCount(value uint32) PatternFlowRSVPPathSessionLspTunnelIpv4TunnelIdCounter { obj.obj.Count = &value return obj } -func (obj *patternFlowIpv4TosDelayCounter) validateObj(vObj *validation, set_default bool) { +func (obj *patternFlowRSVPPathSessionLspTunnelIpv4TunnelIdCounter) validateObj(vObj *validation, set_default bool) { if set_default { obj.setDefault() } if obj.obj.Start != nil { - if *obj.obj.Start > 1 { + if *obj.obj.Start > 65535 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowIpv4TosDelayCounter.Start <= 1 but Got %d", *obj.obj.Start)) + fmt.Sprintf("0 <= PatternFlowRSVPPathSessionLspTunnelIpv4TunnelIdCounter.Start <= 65535 but Got %d", *obj.obj.Start)) } } if obj.obj.Step != nil { - if *obj.obj.Step > 1 { + if *obj.obj.Step > 65535 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowIpv4TosDelayCounter.Step <= 1 but Got %d", *obj.obj.Step)) + fmt.Sprintf("0 <= PatternFlowRSVPPathSessionLspTunnelIpv4TunnelIdCounter.Step <= 65535 but Got %d", *obj.obj.Step)) } } if obj.obj.Count != nil { - if *obj.obj.Count > 1 { + if *obj.obj.Count > 65535 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowIpv4TosDelayCounter.Count <= 1 but Got %d", *obj.obj.Count)) + fmt.Sprintf("0 <= PatternFlowRSVPPathSessionLspTunnelIpv4TunnelIdCounter.Count <= 65535 but Got %d", *obj.obj.Count)) } } } -func (obj *patternFlowIpv4TosDelayCounter) setDefault() { +func (obj *patternFlowRSVPPathSessionLspTunnelIpv4TunnelIdCounter) setDefault() { if obj.obj.Start == nil { obj.SetStart(0) } @@ -306311,29 +353399,29 @@ func (obj *patternFlowIpv4TosDelayCounter) setDefault() { } -// ***** PatternFlowIpv4TosDelayMetricTag ***** -type patternFlowIpv4TosDelayMetricTag struct { +// ***** PatternFlowRSVPPathSessionLspTunnelIpv4ExtendedTunnelIdCounter ***** +type patternFlowRSVPPathSessionLspTunnelIpv4ExtendedTunnelIdCounter struct { validation - obj *otg.PatternFlowIpv4TosDelayMetricTag + obj *otg.PatternFlowRSVPPathSessionLspTunnelIpv4ExtendedTunnelIdCounter } -func NewPatternFlowIpv4TosDelayMetricTag() PatternFlowIpv4TosDelayMetricTag { - obj := patternFlowIpv4TosDelayMetricTag{obj: &otg.PatternFlowIpv4TosDelayMetricTag{}} +func NewPatternFlowRSVPPathSessionLspTunnelIpv4ExtendedTunnelIdCounter() PatternFlowRSVPPathSessionLspTunnelIpv4ExtendedTunnelIdCounter { + obj := patternFlowRSVPPathSessionLspTunnelIpv4ExtendedTunnelIdCounter{obj: &otg.PatternFlowRSVPPathSessionLspTunnelIpv4ExtendedTunnelIdCounter{}} obj.setDefault() return &obj } -func (obj *patternFlowIpv4TosDelayMetricTag) Msg() *otg.PatternFlowIpv4TosDelayMetricTag { +func (obj *patternFlowRSVPPathSessionLspTunnelIpv4ExtendedTunnelIdCounter) Msg() *otg.PatternFlowRSVPPathSessionLspTunnelIpv4ExtendedTunnelIdCounter { return obj.obj } -func (obj *patternFlowIpv4TosDelayMetricTag) SetMsg(msg *otg.PatternFlowIpv4TosDelayMetricTag) PatternFlowIpv4TosDelayMetricTag { +func (obj *patternFlowRSVPPathSessionLspTunnelIpv4ExtendedTunnelIdCounter) SetMsg(msg *otg.PatternFlowRSVPPathSessionLspTunnelIpv4ExtendedTunnelIdCounter) PatternFlowRSVPPathSessionLspTunnelIpv4ExtendedTunnelIdCounter { proto.Merge(obj.obj, msg) return obj } -func (obj *patternFlowIpv4TosDelayMetricTag) ToProto() (*otg.PatternFlowIpv4TosDelayMetricTag, error) { +func (obj *patternFlowRSVPPathSessionLspTunnelIpv4ExtendedTunnelIdCounter) ToProto() (*otg.PatternFlowRSVPPathSessionLspTunnelIpv4ExtendedTunnelIdCounter, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -306341,7 +353429,7 @@ func (obj *patternFlowIpv4TosDelayMetricTag) ToProto() (*otg.PatternFlowIpv4TosD return obj.Msg(), nil } -func (obj *patternFlowIpv4TosDelayMetricTag) FromProto(msg *otg.PatternFlowIpv4TosDelayMetricTag) (PatternFlowIpv4TosDelayMetricTag, error) { +func (obj *patternFlowRSVPPathSessionLspTunnelIpv4ExtendedTunnelIdCounter) FromProto(msg *otg.PatternFlowRSVPPathSessionLspTunnelIpv4ExtendedTunnelIdCounter) (PatternFlowRSVPPathSessionLspTunnelIpv4ExtendedTunnelIdCounter, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -306350,7 +353438,7 @@ func (obj *patternFlowIpv4TosDelayMetricTag) FromProto(msg *otg.PatternFlowIpv4T return newObj, nil } -func (obj *patternFlowIpv4TosDelayMetricTag) ToPbText() (string, error) { +func (obj *patternFlowRSVPPathSessionLspTunnelIpv4ExtendedTunnelIdCounter) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -306362,7 +353450,7 @@ func (obj *patternFlowIpv4TosDelayMetricTag) ToPbText() (string, error) { return string(protoMarshal), nil } -func (obj *patternFlowIpv4TosDelayMetricTag) FromPbText(value string) error { +func (obj *patternFlowRSVPPathSessionLspTunnelIpv4ExtendedTunnelIdCounter) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj @@ -306375,7 +353463,7 @@ func (obj *patternFlowIpv4TosDelayMetricTag) FromPbText(value string) error { return retObj } -func (obj *patternFlowIpv4TosDelayMetricTag) ToYaml() (string, error) { +func (obj *patternFlowRSVPPathSessionLspTunnelIpv4ExtendedTunnelIdCounter) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -306396,7 +353484,7 @@ func (obj *patternFlowIpv4TosDelayMetricTag) ToYaml() (string, error) { return string(data), nil } -func (obj *patternFlowIpv4TosDelayMetricTag) FromYaml(value string) error { +func (obj *patternFlowRSVPPathSessionLspTunnelIpv4ExtendedTunnelIdCounter) FromYaml(value string) error { if value == "" { value = "{}" } @@ -306421,7 +353509,7 @@ func (obj *patternFlowIpv4TosDelayMetricTag) FromYaml(value string) error { return nil } -func (obj *patternFlowIpv4TosDelayMetricTag) ToJson() (string, error) { +func (obj *patternFlowRSVPPathSessionLspTunnelIpv4ExtendedTunnelIdCounter) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -306439,7 +353527,7 @@ func (obj *patternFlowIpv4TosDelayMetricTag) ToJson() (string, error) { return string(data), nil } -func (obj *patternFlowIpv4TosDelayMetricTag) FromJson(value string) error { +func (obj *patternFlowRSVPPathSessionLspTunnelIpv4ExtendedTunnelIdCounter) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -306460,19 +353548,19 @@ func (obj *patternFlowIpv4TosDelayMetricTag) FromJson(value string) error { return nil } -func (obj *patternFlowIpv4TosDelayMetricTag) validateToAndFrom() error { +func (obj *patternFlowRSVPPathSessionLspTunnelIpv4ExtendedTunnelIdCounter) validateToAndFrom() error { // emptyVars() obj.validateObj(&obj.validation, true) return obj.validationResult() } -func (obj *patternFlowIpv4TosDelayMetricTag) Validate() error { +func (obj *patternFlowRSVPPathSessionLspTunnelIpv4ExtendedTunnelIdCounter) Validate() error { // emptyVars() obj.validateObj(&obj.validation, false) return obj.validationResult() } -func (obj *patternFlowIpv4TosDelayMetricTag) String() string { +func (obj *patternFlowRSVPPathSessionLspTunnelIpv4ExtendedTunnelIdCounter) String() string { str, err := obj.ToYaml() if err != nil { return err.Error() @@ -306480,12 +353568,12 @@ func (obj *patternFlowIpv4TosDelayMetricTag) String() string { return str } -func (obj *patternFlowIpv4TosDelayMetricTag) Clone() (PatternFlowIpv4TosDelayMetricTag, error) { +func (obj *patternFlowRSVPPathSessionLspTunnelIpv4ExtendedTunnelIdCounter) Clone() (PatternFlowRSVPPathSessionLspTunnelIpv4ExtendedTunnelIdCounter, error) { vErr := obj.Validate() if vErr != nil { return nil, vErr } - newObj := NewPatternFlowIpv4TosDelayMetricTag() + newObj := NewPatternFlowRSVPPathSessionLspTunnelIpv4ExtendedTunnelIdCounter() data, err := proto.Marshal(obj.Msg()) if err != nil { return nil, err @@ -306497,183 +353585,169 @@ func (obj *patternFlowIpv4TosDelayMetricTag) Clone() (PatternFlowIpv4TosDelayMet return newObj, nil } -// PatternFlowIpv4TosDelayMetricTag is metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. -type PatternFlowIpv4TosDelayMetricTag interface { +// PatternFlowRSVPPathSessionLspTunnelIpv4ExtendedTunnelIdCounter is integer counter pattern +type PatternFlowRSVPPathSessionLspTunnelIpv4ExtendedTunnelIdCounter interface { Validation - // Msg marshals PatternFlowIpv4TosDelayMetricTag to protobuf object *otg.PatternFlowIpv4TosDelayMetricTag + // Msg marshals PatternFlowRSVPPathSessionLspTunnelIpv4ExtendedTunnelIdCounter to protobuf object *otg.PatternFlowRSVPPathSessionLspTunnelIpv4ExtendedTunnelIdCounter // and doesn't set defaults - Msg() *otg.PatternFlowIpv4TosDelayMetricTag - // SetMsg unmarshals PatternFlowIpv4TosDelayMetricTag from protobuf object *otg.PatternFlowIpv4TosDelayMetricTag + Msg() *otg.PatternFlowRSVPPathSessionLspTunnelIpv4ExtendedTunnelIdCounter + // SetMsg unmarshals PatternFlowRSVPPathSessionLspTunnelIpv4ExtendedTunnelIdCounter from protobuf object *otg.PatternFlowRSVPPathSessionLspTunnelIpv4ExtendedTunnelIdCounter // and doesn't set defaults - SetMsg(*otg.PatternFlowIpv4TosDelayMetricTag) PatternFlowIpv4TosDelayMetricTag - // ToProto marshals PatternFlowIpv4TosDelayMetricTag to protobuf object *otg.PatternFlowIpv4TosDelayMetricTag - ToProto() (*otg.PatternFlowIpv4TosDelayMetricTag, error) - // ToPbText marshals PatternFlowIpv4TosDelayMetricTag to protobuf text + SetMsg(*otg.PatternFlowRSVPPathSessionLspTunnelIpv4ExtendedTunnelIdCounter) PatternFlowRSVPPathSessionLspTunnelIpv4ExtendedTunnelIdCounter + // ToProto marshals PatternFlowRSVPPathSessionLspTunnelIpv4ExtendedTunnelIdCounter to protobuf object *otg.PatternFlowRSVPPathSessionLspTunnelIpv4ExtendedTunnelIdCounter + ToProto() (*otg.PatternFlowRSVPPathSessionLspTunnelIpv4ExtendedTunnelIdCounter, error) + // ToPbText marshals PatternFlowRSVPPathSessionLspTunnelIpv4ExtendedTunnelIdCounter to protobuf text ToPbText() (string, error) - // ToYaml marshals PatternFlowIpv4TosDelayMetricTag to YAML text + // ToYaml marshals PatternFlowRSVPPathSessionLspTunnelIpv4ExtendedTunnelIdCounter to YAML text ToYaml() (string, error) - // ToJson marshals PatternFlowIpv4TosDelayMetricTag to JSON text + // ToJson marshals PatternFlowRSVPPathSessionLspTunnelIpv4ExtendedTunnelIdCounter to JSON text ToJson() (string, error) - // FromProto unmarshals PatternFlowIpv4TosDelayMetricTag from protobuf object *otg.PatternFlowIpv4TosDelayMetricTag - FromProto(msg *otg.PatternFlowIpv4TosDelayMetricTag) (PatternFlowIpv4TosDelayMetricTag, error) - // FromPbText unmarshals PatternFlowIpv4TosDelayMetricTag from protobuf text + // FromProto unmarshals PatternFlowRSVPPathSessionLspTunnelIpv4ExtendedTunnelIdCounter from protobuf object *otg.PatternFlowRSVPPathSessionLspTunnelIpv4ExtendedTunnelIdCounter + FromProto(msg *otg.PatternFlowRSVPPathSessionLspTunnelIpv4ExtendedTunnelIdCounter) (PatternFlowRSVPPathSessionLspTunnelIpv4ExtendedTunnelIdCounter, error) + // FromPbText unmarshals PatternFlowRSVPPathSessionLspTunnelIpv4ExtendedTunnelIdCounter from protobuf text FromPbText(value string) error - // FromYaml unmarshals PatternFlowIpv4TosDelayMetricTag from YAML text + // FromYaml unmarshals PatternFlowRSVPPathSessionLspTunnelIpv4ExtendedTunnelIdCounter from YAML text FromYaml(value string) error - // FromJson unmarshals PatternFlowIpv4TosDelayMetricTag from JSON text + // FromJson unmarshals PatternFlowRSVPPathSessionLspTunnelIpv4ExtendedTunnelIdCounter from JSON text FromJson(value string) error - // Validate validates PatternFlowIpv4TosDelayMetricTag + // Validate validates PatternFlowRSVPPathSessionLspTunnelIpv4ExtendedTunnelIdCounter Validate() error // A stringer function String() string // Clones the object - Clone() (PatternFlowIpv4TosDelayMetricTag, error) + Clone() (PatternFlowRSVPPathSessionLspTunnelIpv4ExtendedTunnelIdCounter, error) validateToAndFrom() error validateObj(vObj *validation, set_default bool) setDefault() - // Name returns string, set in PatternFlowIpv4TosDelayMetricTag. - Name() string - // SetName assigns string provided by user to PatternFlowIpv4TosDelayMetricTag - SetName(value string) PatternFlowIpv4TosDelayMetricTag - // Offset returns uint32, set in PatternFlowIpv4TosDelayMetricTag. - Offset() uint32 - // SetOffset assigns uint32 provided by user to PatternFlowIpv4TosDelayMetricTag - SetOffset(value uint32) PatternFlowIpv4TosDelayMetricTag - // HasOffset checks if Offset has been set in PatternFlowIpv4TosDelayMetricTag - HasOffset() bool - // Length returns uint32, set in PatternFlowIpv4TosDelayMetricTag. - Length() uint32 - // SetLength assigns uint32 provided by user to PatternFlowIpv4TosDelayMetricTag - SetLength(value uint32) PatternFlowIpv4TosDelayMetricTag - // HasLength checks if Length has been set in PatternFlowIpv4TosDelayMetricTag - HasLength() bool + // Start returns uint32, set in PatternFlowRSVPPathSessionLspTunnelIpv4ExtendedTunnelIdCounter. + Start() uint32 + // SetStart assigns uint32 provided by user to PatternFlowRSVPPathSessionLspTunnelIpv4ExtendedTunnelIdCounter + SetStart(value uint32) PatternFlowRSVPPathSessionLspTunnelIpv4ExtendedTunnelIdCounter + // HasStart checks if Start has been set in PatternFlowRSVPPathSessionLspTunnelIpv4ExtendedTunnelIdCounter + HasStart() bool + // Step returns uint32, set in PatternFlowRSVPPathSessionLspTunnelIpv4ExtendedTunnelIdCounter. + Step() uint32 + // SetStep assigns uint32 provided by user to PatternFlowRSVPPathSessionLspTunnelIpv4ExtendedTunnelIdCounter + SetStep(value uint32) PatternFlowRSVPPathSessionLspTunnelIpv4ExtendedTunnelIdCounter + // HasStep checks if Step has been set in PatternFlowRSVPPathSessionLspTunnelIpv4ExtendedTunnelIdCounter + HasStep() bool + // Count returns uint32, set in PatternFlowRSVPPathSessionLspTunnelIpv4ExtendedTunnelIdCounter. + Count() uint32 + // SetCount assigns uint32 provided by user to PatternFlowRSVPPathSessionLspTunnelIpv4ExtendedTunnelIdCounter + SetCount(value uint32) PatternFlowRSVPPathSessionLspTunnelIpv4ExtendedTunnelIdCounter + // HasCount checks if Count has been set in PatternFlowRSVPPathSessionLspTunnelIpv4ExtendedTunnelIdCounter + HasCount() bool } -// Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field -// Name returns a string -func (obj *patternFlowIpv4TosDelayMetricTag) Name() string { +// description is TBD +// Start returns a uint32 +func (obj *patternFlowRSVPPathSessionLspTunnelIpv4ExtendedTunnelIdCounter) Start() uint32 { - return *obj.obj.Name + return *obj.obj.Start } -// Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field -// SetName sets the string value in the PatternFlowIpv4TosDelayMetricTag object -func (obj *patternFlowIpv4TosDelayMetricTag) SetName(value string) PatternFlowIpv4TosDelayMetricTag { +// description is TBD +// Start returns a uint32 +func (obj *patternFlowRSVPPathSessionLspTunnelIpv4ExtendedTunnelIdCounter) HasStart() bool { + return obj.obj.Start != nil +} - obj.obj.Name = &value +// description is TBD +// SetStart sets the uint32 value in the PatternFlowRSVPPathSessionLspTunnelIpv4ExtendedTunnelIdCounter object +func (obj *patternFlowRSVPPathSessionLspTunnelIpv4ExtendedTunnelIdCounter) SetStart(value uint32) PatternFlowRSVPPathSessionLspTunnelIpv4ExtendedTunnelIdCounter { + + obj.obj.Start = &value return obj } -// Offset in bits relative to start of corresponding header field -// Offset returns a uint32 -func (obj *patternFlowIpv4TosDelayMetricTag) Offset() uint32 { +// description is TBD +// Step returns a uint32 +func (obj *patternFlowRSVPPathSessionLspTunnelIpv4ExtendedTunnelIdCounter) Step() uint32 { - return *obj.obj.Offset + return *obj.obj.Step } -// Offset in bits relative to start of corresponding header field -// Offset returns a uint32 -func (obj *patternFlowIpv4TosDelayMetricTag) HasOffset() bool { - return obj.obj.Offset != nil +// description is TBD +// Step returns a uint32 +func (obj *patternFlowRSVPPathSessionLspTunnelIpv4ExtendedTunnelIdCounter) HasStep() bool { + return obj.obj.Step != nil } -// Offset in bits relative to start of corresponding header field -// SetOffset sets the uint32 value in the PatternFlowIpv4TosDelayMetricTag object -func (obj *patternFlowIpv4TosDelayMetricTag) SetOffset(value uint32) PatternFlowIpv4TosDelayMetricTag { +// description is TBD +// SetStep sets the uint32 value in the PatternFlowRSVPPathSessionLspTunnelIpv4ExtendedTunnelIdCounter object +func (obj *patternFlowRSVPPathSessionLspTunnelIpv4ExtendedTunnelIdCounter) SetStep(value uint32) PatternFlowRSVPPathSessionLspTunnelIpv4ExtendedTunnelIdCounter { - obj.obj.Offset = &value + obj.obj.Step = &value return obj } -// Number of bits to track for metrics starting from configured offset of corresponding header field -// Length returns a uint32 -func (obj *patternFlowIpv4TosDelayMetricTag) Length() uint32 { +// description is TBD +// Count returns a uint32 +func (obj *patternFlowRSVPPathSessionLspTunnelIpv4ExtendedTunnelIdCounter) Count() uint32 { - return *obj.obj.Length + return *obj.obj.Count } -// Number of bits to track for metrics starting from configured offset of corresponding header field -// Length returns a uint32 -func (obj *patternFlowIpv4TosDelayMetricTag) HasLength() bool { - return obj.obj.Length != nil +// description is TBD +// Count returns a uint32 +func (obj *patternFlowRSVPPathSessionLspTunnelIpv4ExtendedTunnelIdCounter) HasCount() bool { + return obj.obj.Count != nil } -// Number of bits to track for metrics starting from configured offset of corresponding header field -// SetLength sets the uint32 value in the PatternFlowIpv4TosDelayMetricTag object -func (obj *patternFlowIpv4TosDelayMetricTag) SetLength(value uint32) PatternFlowIpv4TosDelayMetricTag { +// description is TBD +// SetCount sets the uint32 value in the PatternFlowRSVPPathSessionLspTunnelIpv4ExtendedTunnelIdCounter object +func (obj *patternFlowRSVPPathSessionLspTunnelIpv4ExtendedTunnelIdCounter) SetCount(value uint32) PatternFlowRSVPPathSessionLspTunnelIpv4ExtendedTunnelIdCounter { - obj.obj.Length = &value + obj.obj.Count = &value return obj } -func (obj *patternFlowIpv4TosDelayMetricTag) validateObj(vObj *validation, set_default bool) { +func (obj *patternFlowRSVPPathSessionLspTunnelIpv4ExtendedTunnelIdCounter) validateObj(vObj *validation, set_default bool) { if set_default { obj.setDefault() } - // Name is required - if obj.obj.Name == nil { - vObj.validationErrors = append(vObj.validationErrors, "Name is required field on interface PatternFlowIpv4TosDelayMetricTag") - } - - if obj.obj.Offset != nil { - - if *obj.obj.Offset > 0 { - vObj.validationErrors = append( - vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowIpv4TosDelayMetricTag.Offset <= 0 but Got %d", *obj.obj.Offset)) - } - - } - - if obj.obj.Length != nil { - - if *obj.obj.Length < 1 || *obj.obj.Length > 1 { - vObj.validationErrors = append( - vObj.validationErrors, - fmt.Sprintf("1 <= PatternFlowIpv4TosDelayMetricTag.Length <= 1 but Got %d", *obj.obj.Length)) - } - - } - } -func (obj *patternFlowIpv4TosDelayMetricTag) setDefault() { - if obj.obj.Offset == nil { - obj.SetOffset(0) +func (obj *patternFlowRSVPPathSessionLspTunnelIpv4ExtendedTunnelIdCounter) setDefault() { + if obj.obj.Start == nil { + obj.SetStart(0) } - if obj.obj.Length == nil { - obj.SetLength(1) + if obj.obj.Step == nil { + obj.SetStep(1) + } + if obj.obj.Count == nil { + obj.SetCount(1) } } -// ***** PatternFlowIpv4TosThroughputCounter ***** -type patternFlowIpv4TosThroughputCounter struct { +// ***** PatternFlowRSVPPathRsvpHopIpv4Ipv4NextPreviousHopAddressCounter ***** +type patternFlowRSVPPathRsvpHopIpv4Ipv4NextPreviousHopAddressCounter struct { validation - obj *otg.PatternFlowIpv4TosThroughputCounter + obj *otg.PatternFlowRSVPPathRsvpHopIpv4Ipv4NextPreviousHopAddressCounter } -func NewPatternFlowIpv4TosThroughputCounter() PatternFlowIpv4TosThroughputCounter { - obj := patternFlowIpv4TosThroughputCounter{obj: &otg.PatternFlowIpv4TosThroughputCounter{}} +func NewPatternFlowRSVPPathRsvpHopIpv4Ipv4NextPreviousHopAddressCounter() PatternFlowRSVPPathRsvpHopIpv4Ipv4NextPreviousHopAddressCounter { + obj := patternFlowRSVPPathRsvpHopIpv4Ipv4NextPreviousHopAddressCounter{obj: &otg.PatternFlowRSVPPathRsvpHopIpv4Ipv4NextPreviousHopAddressCounter{}} obj.setDefault() return &obj } -func (obj *patternFlowIpv4TosThroughputCounter) Msg() *otg.PatternFlowIpv4TosThroughputCounter { +func (obj *patternFlowRSVPPathRsvpHopIpv4Ipv4NextPreviousHopAddressCounter) Msg() *otg.PatternFlowRSVPPathRsvpHopIpv4Ipv4NextPreviousHopAddressCounter { return obj.obj } -func (obj *patternFlowIpv4TosThroughputCounter) SetMsg(msg *otg.PatternFlowIpv4TosThroughputCounter) PatternFlowIpv4TosThroughputCounter { +func (obj *patternFlowRSVPPathRsvpHopIpv4Ipv4NextPreviousHopAddressCounter) SetMsg(msg *otg.PatternFlowRSVPPathRsvpHopIpv4Ipv4NextPreviousHopAddressCounter) PatternFlowRSVPPathRsvpHopIpv4Ipv4NextPreviousHopAddressCounter { proto.Merge(obj.obj, msg) return obj } -func (obj *patternFlowIpv4TosThroughputCounter) ToProto() (*otg.PatternFlowIpv4TosThroughputCounter, error) { +func (obj *patternFlowRSVPPathRsvpHopIpv4Ipv4NextPreviousHopAddressCounter) ToProto() (*otg.PatternFlowRSVPPathRsvpHopIpv4Ipv4NextPreviousHopAddressCounter, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -306681,7 +353755,7 @@ func (obj *patternFlowIpv4TosThroughputCounter) ToProto() (*otg.PatternFlowIpv4T return obj.Msg(), nil } -func (obj *patternFlowIpv4TosThroughputCounter) FromProto(msg *otg.PatternFlowIpv4TosThroughputCounter) (PatternFlowIpv4TosThroughputCounter, error) { +func (obj *patternFlowRSVPPathRsvpHopIpv4Ipv4NextPreviousHopAddressCounter) FromProto(msg *otg.PatternFlowRSVPPathRsvpHopIpv4Ipv4NextPreviousHopAddressCounter) (PatternFlowRSVPPathRsvpHopIpv4Ipv4NextPreviousHopAddressCounter, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -306690,7 +353764,7 @@ func (obj *patternFlowIpv4TosThroughputCounter) FromProto(msg *otg.PatternFlowIp return newObj, nil } -func (obj *patternFlowIpv4TosThroughputCounter) ToPbText() (string, error) { +func (obj *patternFlowRSVPPathRsvpHopIpv4Ipv4NextPreviousHopAddressCounter) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -306702,7 +353776,7 @@ func (obj *patternFlowIpv4TosThroughputCounter) ToPbText() (string, error) { return string(protoMarshal), nil } -func (obj *patternFlowIpv4TosThroughputCounter) FromPbText(value string) error { +func (obj *patternFlowRSVPPathRsvpHopIpv4Ipv4NextPreviousHopAddressCounter) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj @@ -306715,7 +353789,7 @@ func (obj *patternFlowIpv4TosThroughputCounter) FromPbText(value string) error { return retObj } -func (obj *patternFlowIpv4TosThroughputCounter) ToYaml() (string, error) { +func (obj *patternFlowRSVPPathRsvpHopIpv4Ipv4NextPreviousHopAddressCounter) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -306736,7 +353810,7 @@ func (obj *patternFlowIpv4TosThroughputCounter) ToYaml() (string, error) { return string(data), nil } -func (obj *patternFlowIpv4TosThroughputCounter) FromYaml(value string) error { +func (obj *patternFlowRSVPPathRsvpHopIpv4Ipv4NextPreviousHopAddressCounter) FromYaml(value string) error { if value == "" { value = "{}" } @@ -306761,7 +353835,7 @@ func (obj *patternFlowIpv4TosThroughputCounter) FromYaml(value string) error { return nil } -func (obj *patternFlowIpv4TosThroughputCounter) ToJson() (string, error) { +func (obj *patternFlowRSVPPathRsvpHopIpv4Ipv4NextPreviousHopAddressCounter) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -306779,7 +353853,7 @@ func (obj *patternFlowIpv4TosThroughputCounter) ToJson() (string, error) { return string(data), nil } -func (obj *patternFlowIpv4TosThroughputCounter) FromJson(value string) error { +func (obj *patternFlowRSVPPathRsvpHopIpv4Ipv4NextPreviousHopAddressCounter) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -306800,19 +353874,19 @@ func (obj *patternFlowIpv4TosThroughputCounter) FromJson(value string) error { return nil } -func (obj *patternFlowIpv4TosThroughputCounter) validateToAndFrom() error { +func (obj *patternFlowRSVPPathRsvpHopIpv4Ipv4NextPreviousHopAddressCounter) validateToAndFrom() error { // emptyVars() obj.validateObj(&obj.validation, true) return obj.validationResult() } -func (obj *patternFlowIpv4TosThroughputCounter) Validate() error { +func (obj *patternFlowRSVPPathRsvpHopIpv4Ipv4NextPreviousHopAddressCounter) Validate() error { // emptyVars() obj.validateObj(&obj.validation, false) return obj.validationResult() } -func (obj *patternFlowIpv4TosThroughputCounter) String() string { +func (obj *patternFlowRSVPPathRsvpHopIpv4Ipv4NextPreviousHopAddressCounter) String() string { str, err := obj.ToYaml() if err != nil { return err.Error() @@ -306820,12 +353894,12 @@ func (obj *patternFlowIpv4TosThroughputCounter) String() string { return str } -func (obj *patternFlowIpv4TosThroughputCounter) Clone() (PatternFlowIpv4TosThroughputCounter, error) { +func (obj *patternFlowRSVPPathRsvpHopIpv4Ipv4NextPreviousHopAddressCounter) Clone() (PatternFlowRSVPPathRsvpHopIpv4Ipv4NextPreviousHopAddressCounter, error) { vErr := obj.Validate() if vErr != nil { return nil, vErr } - newObj := NewPatternFlowIpv4TosThroughputCounter() + newObj := NewPatternFlowRSVPPathRsvpHopIpv4Ipv4NextPreviousHopAddressCounter() data, err := proto.Marshal(obj.Msg()) if err != nil { return nil, err @@ -306837,99 +353911,99 @@ func (obj *patternFlowIpv4TosThroughputCounter) Clone() (PatternFlowIpv4TosThrou return newObj, nil } -// PatternFlowIpv4TosThroughputCounter is integer counter pattern -type PatternFlowIpv4TosThroughputCounter interface { +// PatternFlowRSVPPathRsvpHopIpv4Ipv4NextPreviousHopAddressCounter is ipv4 counter pattern +type PatternFlowRSVPPathRsvpHopIpv4Ipv4NextPreviousHopAddressCounter interface { Validation - // Msg marshals PatternFlowIpv4TosThroughputCounter to protobuf object *otg.PatternFlowIpv4TosThroughputCounter + // Msg marshals PatternFlowRSVPPathRsvpHopIpv4Ipv4NextPreviousHopAddressCounter to protobuf object *otg.PatternFlowRSVPPathRsvpHopIpv4Ipv4NextPreviousHopAddressCounter // and doesn't set defaults - Msg() *otg.PatternFlowIpv4TosThroughputCounter - // SetMsg unmarshals PatternFlowIpv4TosThroughputCounter from protobuf object *otg.PatternFlowIpv4TosThroughputCounter + Msg() *otg.PatternFlowRSVPPathRsvpHopIpv4Ipv4NextPreviousHopAddressCounter + // SetMsg unmarshals PatternFlowRSVPPathRsvpHopIpv4Ipv4NextPreviousHopAddressCounter from protobuf object *otg.PatternFlowRSVPPathRsvpHopIpv4Ipv4NextPreviousHopAddressCounter // and doesn't set defaults - SetMsg(*otg.PatternFlowIpv4TosThroughputCounter) PatternFlowIpv4TosThroughputCounter - // ToProto marshals PatternFlowIpv4TosThroughputCounter to protobuf object *otg.PatternFlowIpv4TosThroughputCounter - ToProto() (*otg.PatternFlowIpv4TosThroughputCounter, error) - // ToPbText marshals PatternFlowIpv4TosThroughputCounter to protobuf text + SetMsg(*otg.PatternFlowRSVPPathRsvpHopIpv4Ipv4NextPreviousHopAddressCounter) PatternFlowRSVPPathRsvpHopIpv4Ipv4NextPreviousHopAddressCounter + // ToProto marshals PatternFlowRSVPPathRsvpHopIpv4Ipv4NextPreviousHopAddressCounter to protobuf object *otg.PatternFlowRSVPPathRsvpHopIpv4Ipv4NextPreviousHopAddressCounter + ToProto() (*otg.PatternFlowRSVPPathRsvpHopIpv4Ipv4NextPreviousHopAddressCounter, error) + // ToPbText marshals PatternFlowRSVPPathRsvpHopIpv4Ipv4NextPreviousHopAddressCounter to protobuf text ToPbText() (string, error) - // ToYaml marshals PatternFlowIpv4TosThroughputCounter to YAML text + // ToYaml marshals PatternFlowRSVPPathRsvpHopIpv4Ipv4NextPreviousHopAddressCounter to YAML text ToYaml() (string, error) - // ToJson marshals PatternFlowIpv4TosThroughputCounter to JSON text + // ToJson marshals PatternFlowRSVPPathRsvpHopIpv4Ipv4NextPreviousHopAddressCounter to JSON text ToJson() (string, error) - // FromProto unmarshals PatternFlowIpv4TosThroughputCounter from protobuf object *otg.PatternFlowIpv4TosThroughputCounter - FromProto(msg *otg.PatternFlowIpv4TosThroughputCounter) (PatternFlowIpv4TosThroughputCounter, error) - // FromPbText unmarshals PatternFlowIpv4TosThroughputCounter from protobuf text + // FromProto unmarshals PatternFlowRSVPPathRsvpHopIpv4Ipv4NextPreviousHopAddressCounter from protobuf object *otg.PatternFlowRSVPPathRsvpHopIpv4Ipv4NextPreviousHopAddressCounter + FromProto(msg *otg.PatternFlowRSVPPathRsvpHopIpv4Ipv4NextPreviousHopAddressCounter) (PatternFlowRSVPPathRsvpHopIpv4Ipv4NextPreviousHopAddressCounter, error) + // FromPbText unmarshals PatternFlowRSVPPathRsvpHopIpv4Ipv4NextPreviousHopAddressCounter from protobuf text FromPbText(value string) error - // FromYaml unmarshals PatternFlowIpv4TosThroughputCounter from YAML text + // FromYaml unmarshals PatternFlowRSVPPathRsvpHopIpv4Ipv4NextPreviousHopAddressCounter from YAML text FromYaml(value string) error - // FromJson unmarshals PatternFlowIpv4TosThroughputCounter from JSON text + // FromJson unmarshals PatternFlowRSVPPathRsvpHopIpv4Ipv4NextPreviousHopAddressCounter from JSON text FromJson(value string) error - // Validate validates PatternFlowIpv4TosThroughputCounter + // Validate validates PatternFlowRSVPPathRsvpHopIpv4Ipv4NextPreviousHopAddressCounter Validate() error // A stringer function String() string // Clones the object - Clone() (PatternFlowIpv4TosThroughputCounter, error) + Clone() (PatternFlowRSVPPathRsvpHopIpv4Ipv4NextPreviousHopAddressCounter, error) validateToAndFrom() error validateObj(vObj *validation, set_default bool) setDefault() - // Start returns uint32, set in PatternFlowIpv4TosThroughputCounter. - Start() uint32 - // SetStart assigns uint32 provided by user to PatternFlowIpv4TosThroughputCounter - SetStart(value uint32) PatternFlowIpv4TosThroughputCounter - // HasStart checks if Start has been set in PatternFlowIpv4TosThroughputCounter + // Start returns string, set in PatternFlowRSVPPathRsvpHopIpv4Ipv4NextPreviousHopAddressCounter. + Start() string + // SetStart assigns string provided by user to PatternFlowRSVPPathRsvpHopIpv4Ipv4NextPreviousHopAddressCounter + SetStart(value string) PatternFlowRSVPPathRsvpHopIpv4Ipv4NextPreviousHopAddressCounter + // HasStart checks if Start has been set in PatternFlowRSVPPathRsvpHopIpv4Ipv4NextPreviousHopAddressCounter HasStart() bool - // Step returns uint32, set in PatternFlowIpv4TosThroughputCounter. - Step() uint32 - // SetStep assigns uint32 provided by user to PatternFlowIpv4TosThroughputCounter - SetStep(value uint32) PatternFlowIpv4TosThroughputCounter - // HasStep checks if Step has been set in PatternFlowIpv4TosThroughputCounter + // Step returns string, set in PatternFlowRSVPPathRsvpHopIpv4Ipv4NextPreviousHopAddressCounter. + Step() string + // SetStep assigns string provided by user to PatternFlowRSVPPathRsvpHopIpv4Ipv4NextPreviousHopAddressCounter + SetStep(value string) PatternFlowRSVPPathRsvpHopIpv4Ipv4NextPreviousHopAddressCounter + // HasStep checks if Step has been set in PatternFlowRSVPPathRsvpHopIpv4Ipv4NextPreviousHopAddressCounter HasStep() bool - // Count returns uint32, set in PatternFlowIpv4TosThroughputCounter. + // Count returns uint32, set in PatternFlowRSVPPathRsvpHopIpv4Ipv4NextPreviousHopAddressCounter. Count() uint32 - // SetCount assigns uint32 provided by user to PatternFlowIpv4TosThroughputCounter - SetCount(value uint32) PatternFlowIpv4TosThroughputCounter - // HasCount checks if Count has been set in PatternFlowIpv4TosThroughputCounter + // SetCount assigns uint32 provided by user to PatternFlowRSVPPathRsvpHopIpv4Ipv4NextPreviousHopAddressCounter + SetCount(value uint32) PatternFlowRSVPPathRsvpHopIpv4Ipv4NextPreviousHopAddressCounter + // HasCount checks if Count has been set in PatternFlowRSVPPathRsvpHopIpv4Ipv4NextPreviousHopAddressCounter HasCount() bool } // description is TBD -// Start returns a uint32 -func (obj *patternFlowIpv4TosThroughputCounter) Start() uint32 { +// Start returns a string +func (obj *patternFlowRSVPPathRsvpHopIpv4Ipv4NextPreviousHopAddressCounter) Start() string { return *obj.obj.Start } // description is TBD -// Start returns a uint32 -func (obj *patternFlowIpv4TosThroughputCounter) HasStart() bool { +// Start returns a string +func (obj *patternFlowRSVPPathRsvpHopIpv4Ipv4NextPreviousHopAddressCounter) HasStart() bool { return obj.obj.Start != nil } // description is TBD -// SetStart sets the uint32 value in the PatternFlowIpv4TosThroughputCounter object -func (obj *patternFlowIpv4TosThroughputCounter) SetStart(value uint32) PatternFlowIpv4TosThroughputCounter { +// SetStart sets the string value in the PatternFlowRSVPPathRsvpHopIpv4Ipv4NextPreviousHopAddressCounter object +func (obj *patternFlowRSVPPathRsvpHopIpv4Ipv4NextPreviousHopAddressCounter) SetStart(value string) PatternFlowRSVPPathRsvpHopIpv4Ipv4NextPreviousHopAddressCounter { obj.obj.Start = &value return obj } // description is TBD -// Step returns a uint32 -func (obj *patternFlowIpv4TosThroughputCounter) Step() uint32 { +// Step returns a string +func (obj *patternFlowRSVPPathRsvpHopIpv4Ipv4NextPreviousHopAddressCounter) Step() string { return *obj.obj.Step } // description is TBD -// Step returns a uint32 -func (obj *patternFlowIpv4TosThroughputCounter) HasStep() bool { +// Step returns a string +func (obj *patternFlowRSVPPathRsvpHopIpv4Ipv4NextPreviousHopAddressCounter) HasStep() bool { return obj.obj.Step != nil } // description is TBD -// SetStep sets the uint32 value in the PatternFlowIpv4TosThroughputCounter object -func (obj *patternFlowIpv4TosThroughputCounter) SetStep(value uint32) PatternFlowIpv4TosThroughputCounter { +// SetStep sets the string value in the PatternFlowRSVPPathRsvpHopIpv4Ipv4NextPreviousHopAddressCounter object +func (obj *patternFlowRSVPPathRsvpHopIpv4Ipv4NextPreviousHopAddressCounter) SetStep(value string) PatternFlowRSVPPathRsvpHopIpv4Ipv4NextPreviousHopAddressCounter { obj.obj.Step = &value return obj @@ -306937,7 +354011,7 @@ func (obj *patternFlowIpv4TosThroughputCounter) SetStep(value uint32) PatternFlo // description is TBD // Count returns a uint32 -func (obj *patternFlowIpv4TosThroughputCounter) Count() uint32 { +func (obj *patternFlowRSVPPathRsvpHopIpv4Ipv4NextPreviousHopAddressCounter) Count() uint32 { return *obj.obj.Count @@ -306945,61 +354019,49 @@ func (obj *patternFlowIpv4TosThroughputCounter) Count() uint32 { // description is TBD // Count returns a uint32 -func (obj *patternFlowIpv4TosThroughputCounter) HasCount() bool { +func (obj *patternFlowRSVPPathRsvpHopIpv4Ipv4NextPreviousHopAddressCounter) HasCount() bool { return obj.obj.Count != nil } // description is TBD -// SetCount sets the uint32 value in the PatternFlowIpv4TosThroughputCounter object -func (obj *patternFlowIpv4TosThroughputCounter) SetCount(value uint32) PatternFlowIpv4TosThroughputCounter { +// SetCount sets the uint32 value in the PatternFlowRSVPPathRsvpHopIpv4Ipv4NextPreviousHopAddressCounter object +func (obj *patternFlowRSVPPathRsvpHopIpv4Ipv4NextPreviousHopAddressCounter) SetCount(value uint32) PatternFlowRSVPPathRsvpHopIpv4Ipv4NextPreviousHopAddressCounter { obj.obj.Count = &value return obj } -func (obj *patternFlowIpv4TosThroughputCounter) validateObj(vObj *validation, set_default bool) { +func (obj *patternFlowRSVPPathRsvpHopIpv4Ipv4NextPreviousHopAddressCounter) validateObj(vObj *validation, set_default bool) { if set_default { obj.setDefault() } if obj.obj.Start != nil { - if *obj.obj.Start > 1 { - vObj.validationErrors = append( - vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowIpv4TosThroughputCounter.Start <= 1 but Got %d", *obj.obj.Start)) + err := obj.validateIpv4(obj.Start()) + if err != nil { + vObj.validationErrors = append(vObj.validationErrors, fmt.Sprintf("%s %s", err.Error(), "on PatternFlowRSVPPathRsvpHopIpv4Ipv4NextPreviousHopAddressCounter.Start")) } } if obj.obj.Step != nil { - if *obj.obj.Step > 1 { - vObj.validationErrors = append( - vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowIpv4TosThroughputCounter.Step <= 1 but Got %d", *obj.obj.Step)) - } - - } - - if obj.obj.Count != nil { - - if *obj.obj.Count > 1 { - vObj.validationErrors = append( - vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowIpv4TosThroughputCounter.Count <= 1 but Got %d", *obj.obj.Count)) + err := obj.validateIpv4(obj.Step()) + if err != nil { + vObj.validationErrors = append(vObj.validationErrors, fmt.Sprintf("%s %s", err.Error(), "on PatternFlowRSVPPathRsvpHopIpv4Ipv4NextPreviousHopAddressCounter.Step")) } } } -func (obj *patternFlowIpv4TosThroughputCounter) setDefault() { +func (obj *patternFlowRSVPPathRsvpHopIpv4Ipv4NextPreviousHopAddressCounter) setDefault() { if obj.obj.Start == nil { - obj.SetStart(0) + obj.SetStart("0.0.0.0") } if obj.obj.Step == nil { - obj.SetStep(1) + obj.SetStep("0.0.0.1") } if obj.obj.Count == nil { obj.SetCount(1) @@ -307007,29 +354069,29 @@ func (obj *patternFlowIpv4TosThroughputCounter) setDefault() { } -// ***** PatternFlowIpv4TosThroughputMetricTag ***** -type patternFlowIpv4TosThroughputMetricTag struct { +// ***** PatternFlowRSVPPathRsvpHopIpv4LogicalInterfaceHandleCounter ***** +type patternFlowRSVPPathRsvpHopIpv4LogicalInterfaceHandleCounter struct { validation - obj *otg.PatternFlowIpv4TosThroughputMetricTag + obj *otg.PatternFlowRSVPPathRsvpHopIpv4LogicalInterfaceHandleCounter } -func NewPatternFlowIpv4TosThroughputMetricTag() PatternFlowIpv4TosThroughputMetricTag { - obj := patternFlowIpv4TosThroughputMetricTag{obj: &otg.PatternFlowIpv4TosThroughputMetricTag{}} +func NewPatternFlowRSVPPathRsvpHopIpv4LogicalInterfaceHandleCounter() PatternFlowRSVPPathRsvpHopIpv4LogicalInterfaceHandleCounter { + obj := patternFlowRSVPPathRsvpHopIpv4LogicalInterfaceHandleCounter{obj: &otg.PatternFlowRSVPPathRsvpHopIpv4LogicalInterfaceHandleCounter{}} obj.setDefault() return &obj } -func (obj *patternFlowIpv4TosThroughputMetricTag) Msg() *otg.PatternFlowIpv4TosThroughputMetricTag { +func (obj *patternFlowRSVPPathRsvpHopIpv4LogicalInterfaceHandleCounter) Msg() *otg.PatternFlowRSVPPathRsvpHopIpv4LogicalInterfaceHandleCounter { return obj.obj } -func (obj *patternFlowIpv4TosThroughputMetricTag) SetMsg(msg *otg.PatternFlowIpv4TosThroughputMetricTag) PatternFlowIpv4TosThroughputMetricTag { +func (obj *patternFlowRSVPPathRsvpHopIpv4LogicalInterfaceHandleCounter) SetMsg(msg *otg.PatternFlowRSVPPathRsvpHopIpv4LogicalInterfaceHandleCounter) PatternFlowRSVPPathRsvpHopIpv4LogicalInterfaceHandleCounter { proto.Merge(obj.obj, msg) return obj } -func (obj *patternFlowIpv4TosThroughputMetricTag) ToProto() (*otg.PatternFlowIpv4TosThroughputMetricTag, error) { +func (obj *patternFlowRSVPPathRsvpHopIpv4LogicalInterfaceHandleCounter) ToProto() (*otg.PatternFlowRSVPPathRsvpHopIpv4LogicalInterfaceHandleCounter, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -307037,7 +354099,7 @@ func (obj *patternFlowIpv4TosThroughputMetricTag) ToProto() (*otg.PatternFlowIpv return obj.Msg(), nil } -func (obj *patternFlowIpv4TosThroughputMetricTag) FromProto(msg *otg.PatternFlowIpv4TosThroughputMetricTag) (PatternFlowIpv4TosThroughputMetricTag, error) { +func (obj *patternFlowRSVPPathRsvpHopIpv4LogicalInterfaceHandleCounter) FromProto(msg *otg.PatternFlowRSVPPathRsvpHopIpv4LogicalInterfaceHandleCounter) (PatternFlowRSVPPathRsvpHopIpv4LogicalInterfaceHandleCounter, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -307046,7 +354108,7 @@ func (obj *patternFlowIpv4TosThroughputMetricTag) FromProto(msg *otg.PatternFlow return newObj, nil } -func (obj *patternFlowIpv4TosThroughputMetricTag) ToPbText() (string, error) { +func (obj *patternFlowRSVPPathRsvpHopIpv4LogicalInterfaceHandleCounter) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -307058,7 +354120,7 @@ func (obj *patternFlowIpv4TosThroughputMetricTag) ToPbText() (string, error) { return string(protoMarshal), nil } -func (obj *patternFlowIpv4TosThroughputMetricTag) FromPbText(value string) error { +func (obj *patternFlowRSVPPathRsvpHopIpv4LogicalInterfaceHandleCounter) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj @@ -307071,7 +354133,7 @@ func (obj *patternFlowIpv4TosThroughputMetricTag) FromPbText(value string) error return retObj } -func (obj *patternFlowIpv4TosThroughputMetricTag) ToYaml() (string, error) { +func (obj *patternFlowRSVPPathRsvpHopIpv4LogicalInterfaceHandleCounter) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -307092,7 +354154,7 @@ func (obj *patternFlowIpv4TosThroughputMetricTag) ToYaml() (string, error) { return string(data), nil } -func (obj *patternFlowIpv4TosThroughputMetricTag) FromYaml(value string) error { +func (obj *patternFlowRSVPPathRsvpHopIpv4LogicalInterfaceHandleCounter) FromYaml(value string) error { if value == "" { value = "{}" } @@ -307117,7 +354179,7 @@ func (obj *patternFlowIpv4TosThroughputMetricTag) FromYaml(value string) error { return nil } -func (obj *patternFlowIpv4TosThroughputMetricTag) ToJson() (string, error) { +func (obj *patternFlowRSVPPathRsvpHopIpv4LogicalInterfaceHandleCounter) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -307135,7 +354197,7 @@ func (obj *patternFlowIpv4TosThroughputMetricTag) ToJson() (string, error) { return string(data), nil } -func (obj *patternFlowIpv4TosThroughputMetricTag) FromJson(value string) error { +func (obj *patternFlowRSVPPathRsvpHopIpv4LogicalInterfaceHandleCounter) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -307156,19 +354218,19 @@ func (obj *patternFlowIpv4TosThroughputMetricTag) FromJson(value string) error { return nil } -func (obj *patternFlowIpv4TosThroughputMetricTag) validateToAndFrom() error { +func (obj *patternFlowRSVPPathRsvpHopIpv4LogicalInterfaceHandleCounter) validateToAndFrom() error { // emptyVars() obj.validateObj(&obj.validation, true) return obj.validationResult() } -func (obj *patternFlowIpv4TosThroughputMetricTag) Validate() error { +func (obj *patternFlowRSVPPathRsvpHopIpv4LogicalInterfaceHandleCounter) Validate() error { // emptyVars() obj.validateObj(&obj.validation, false) return obj.validationResult() } -func (obj *patternFlowIpv4TosThroughputMetricTag) String() string { +func (obj *patternFlowRSVPPathRsvpHopIpv4LogicalInterfaceHandleCounter) String() string { str, err := obj.ToYaml() if err != nil { return err.Error() @@ -307176,12 +354238,12 @@ func (obj *patternFlowIpv4TosThroughputMetricTag) String() string { return str } -func (obj *patternFlowIpv4TosThroughputMetricTag) Clone() (PatternFlowIpv4TosThroughputMetricTag, error) { +func (obj *patternFlowRSVPPathRsvpHopIpv4LogicalInterfaceHandleCounter) Clone() (PatternFlowRSVPPathRsvpHopIpv4LogicalInterfaceHandleCounter, error) { vErr := obj.Validate() if vErr != nil { return nil, vErr } - newObj := NewPatternFlowIpv4TosThroughputMetricTag() + newObj := NewPatternFlowRSVPPathRsvpHopIpv4LogicalInterfaceHandleCounter() data, err := proto.Marshal(obj.Msg()) if err != nil { return nil, err @@ -307193,183 +354255,169 @@ func (obj *patternFlowIpv4TosThroughputMetricTag) Clone() (PatternFlowIpv4TosThr return newObj, nil } -// PatternFlowIpv4TosThroughputMetricTag is metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. -type PatternFlowIpv4TosThroughputMetricTag interface { +// PatternFlowRSVPPathRsvpHopIpv4LogicalInterfaceHandleCounter is integer counter pattern +type PatternFlowRSVPPathRsvpHopIpv4LogicalInterfaceHandleCounter interface { Validation - // Msg marshals PatternFlowIpv4TosThroughputMetricTag to protobuf object *otg.PatternFlowIpv4TosThroughputMetricTag + // Msg marshals PatternFlowRSVPPathRsvpHopIpv4LogicalInterfaceHandleCounter to protobuf object *otg.PatternFlowRSVPPathRsvpHopIpv4LogicalInterfaceHandleCounter // and doesn't set defaults - Msg() *otg.PatternFlowIpv4TosThroughputMetricTag - // SetMsg unmarshals PatternFlowIpv4TosThroughputMetricTag from protobuf object *otg.PatternFlowIpv4TosThroughputMetricTag + Msg() *otg.PatternFlowRSVPPathRsvpHopIpv4LogicalInterfaceHandleCounter + // SetMsg unmarshals PatternFlowRSVPPathRsvpHopIpv4LogicalInterfaceHandleCounter from protobuf object *otg.PatternFlowRSVPPathRsvpHopIpv4LogicalInterfaceHandleCounter // and doesn't set defaults - SetMsg(*otg.PatternFlowIpv4TosThroughputMetricTag) PatternFlowIpv4TosThroughputMetricTag - // ToProto marshals PatternFlowIpv4TosThroughputMetricTag to protobuf object *otg.PatternFlowIpv4TosThroughputMetricTag - ToProto() (*otg.PatternFlowIpv4TosThroughputMetricTag, error) - // ToPbText marshals PatternFlowIpv4TosThroughputMetricTag to protobuf text + SetMsg(*otg.PatternFlowRSVPPathRsvpHopIpv4LogicalInterfaceHandleCounter) PatternFlowRSVPPathRsvpHopIpv4LogicalInterfaceHandleCounter + // ToProto marshals PatternFlowRSVPPathRsvpHopIpv4LogicalInterfaceHandleCounter to protobuf object *otg.PatternFlowRSVPPathRsvpHopIpv4LogicalInterfaceHandleCounter + ToProto() (*otg.PatternFlowRSVPPathRsvpHopIpv4LogicalInterfaceHandleCounter, error) + // ToPbText marshals PatternFlowRSVPPathRsvpHopIpv4LogicalInterfaceHandleCounter to protobuf text ToPbText() (string, error) - // ToYaml marshals PatternFlowIpv4TosThroughputMetricTag to YAML text + // ToYaml marshals PatternFlowRSVPPathRsvpHopIpv4LogicalInterfaceHandleCounter to YAML text ToYaml() (string, error) - // ToJson marshals PatternFlowIpv4TosThroughputMetricTag to JSON text + // ToJson marshals PatternFlowRSVPPathRsvpHopIpv4LogicalInterfaceHandleCounter to JSON text ToJson() (string, error) - // FromProto unmarshals PatternFlowIpv4TosThroughputMetricTag from protobuf object *otg.PatternFlowIpv4TosThroughputMetricTag - FromProto(msg *otg.PatternFlowIpv4TosThroughputMetricTag) (PatternFlowIpv4TosThroughputMetricTag, error) - // FromPbText unmarshals PatternFlowIpv4TosThroughputMetricTag from protobuf text + // FromProto unmarshals PatternFlowRSVPPathRsvpHopIpv4LogicalInterfaceHandleCounter from protobuf object *otg.PatternFlowRSVPPathRsvpHopIpv4LogicalInterfaceHandleCounter + FromProto(msg *otg.PatternFlowRSVPPathRsvpHopIpv4LogicalInterfaceHandleCounter) (PatternFlowRSVPPathRsvpHopIpv4LogicalInterfaceHandleCounter, error) + // FromPbText unmarshals PatternFlowRSVPPathRsvpHopIpv4LogicalInterfaceHandleCounter from protobuf text FromPbText(value string) error - // FromYaml unmarshals PatternFlowIpv4TosThroughputMetricTag from YAML text + // FromYaml unmarshals PatternFlowRSVPPathRsvpHopIpv4LogicalInterfaceHandleCounter from YAML text FromYaml(value string) error - // FromJson unmarshals PatternFlowIpv4TosThroughputMetricTag from JSON text + // FromJson unmarshals PatternFlowRSVPPathRsvpHopIpv4LogicalInterfaceHandleCounter from JSON text FromJson(value string) error - // Validate validates PatternFlowIpv4TosThroughputMetricTag + // Validate validates PatternFlowRSVPPathRsvpHopIpv4LogicalInterfaceHandleCounter Validate() error // A stringer function String() string // Clones the object - Clone() (PatternFlowIpv4TosThroughputMetricTag, error) + Clone() (PatternFlowRSVPPathRsvpHopIpv4LogicalInterfaceHandleCounter, error) validateToAndFrom() error validateObj(vObj *validation, set_default bool) setDefault() - // Name returns string, set in PatternFlowIpv4TosThroughputMetricTag. - Name() string - // SetName assigns string provided by user to PatternFlowIpv4TosThroughputMetricTag - SetName(value string) PatternFlowIpv4TosThroughputMetricTag - // Offset returns uint32, set in PatternFlowIpv4TosThroughputMetricTag. - Offset() uint32 - // SetOffset assigns uint32 provided by user to PatternFlowIpv4TosThroughputMetricTag - SetOffset(value uint32) PatternFlowIpv4TosThroughputMetricTag - // HasOffset checks if Offset has been set in PatternFlowIpv4TosThroughputMetricTag - HasOffset() bool - // Length returns uint32, set in PatternFlowIpv4TosThroughputMetricTag. - Length() uint32 - // SetLength assigns uint32 provided by user to PatternFlowIpv4TosThroughputMetricTag - SetLength(value uint32) PatternFlowIpv4TosThroughputMetricTag - // HasLength checks if Length has been set in PatternFlowIpv4TosThroughputMetricTag - HasLength() bool + // Start returns uint32, set in PatternFlowRSVPPathRsvpHopIpv4LogicalInterfaceHandleCounter. + Start() uint32 + // SetStart assigns uint32 provided by user to PatternFlowRSVPPathRsvpHopIpv4LogicalInterfaceHandleCounter + SetStart(value uint32) PatternFlowRSVPPathRsvpHopIpv4LogicalInterfaceHandleCounter + // HasStart checks if Start has been set in PatternFlowRSVPPathRsvpHopIpv4LogicalInterfaceHandleCounter + HasStart() bool + // Step returns uint32, set in PatternFlowRSVPPathRsvpHopIpv4LogicalInterfaceHandleCounter. + Step() uint32 + // SetStep assigns uint32 provided by user to PatternFlowRSVPPathRsvpHopIpv4LogicalInterfaceHandleCounter + SetStep(value uint32) PatternFlowRSVPPathRsvpHopIpv4LogicalInterfaceHandleCounter + // HasStep checks if Step has been set in PatternFlowRSVPPathRsvpHopIpv4LogicalInterfaceHandleCounter + HasStep() bool + // Count returns uint32, set in PatternFlowRSVPPathRsvpHopIpv4LogicalInterfaceHandleCounter. + Count() uint32 + // SetCount assigns uint32 provided by user to PatternFlowRSVPPathRsvpHopIpv4LogicalInterfaceHandleCounter + SetCount(value uint32) PatternFlowRSVPPathRsvpHopIpv4LogicalInterfaceHandleCounter + // HasCount checks if Count has been set in PatternFlowRSVPPathRsvpHopIpv4LogicalInterfaceHandleCounter + HasCount() bool } -// Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field -// Name returns a string -func (obj *patternFlowIpv4TosThroughputMetricTag) Name() string { +// description is TBD +// Start returns a uint32 +func (obj *patternFlowRSVPPathRsvpHopIpv4LogicalInterfaceHandleCounter) Start() uint32 { - return *obj.obj.Name + return *obj.obj.Start } -// Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field -// SetName sets the string value in the PatternFlowIpv4TosThroughputMetricTag object -func (obj *patternFlowIpv4TosThroughputMetricTag) SetName(value string) PatternFlowIpv4TosThroughputMetricTag { +// description is TBD +// Start returns a uint32 +func (obj *patternFlowRSVPPathRsvpHopIpv4LogicalInterfaceHandleCounter) HasStart() bool { + return obj.obj.Start != nil +} - obj.obj.Name = &value +// description is TBD +// SetStart sets the uint32 value in the PatternFlowRSVPPathRsvpHopIpv4LogicalInterfaceHandleCounter object +func (obj *patternFlowRSVPPathRsvpHopIpv4LogicalInterfaceHandleCounter) SetStart(value uint32) PatternFlowRSVPPathRsvpHopIpv4LogicalInterfaceHandleCounter { + + obj.obj.Start = &value return obj } -// Offset in bits relative to start of corresponding header field -// Offset returns a uint32 -func (obj *patternFlowIpv4TosThroughputMetricTag) Offset() uint32 { +// description is TBD +// Step returns a uint32 +func (obj *patternFlowRSVPPathRsvpHopIpv4LogicalInterfaceHandleCounter) Step() uint32 { - return *obj.obj.Offset + return *obj.obj.Step } -// Offset in bits relative to start of corresponding header field -// Offset returns a uint32 -func (obj *patternFlowIpv4TosThroughputMetricTag) HasOffset() bool { - return obj.obj.Offset != nil +// description is TBD +// Step returns a uint32 +func (obj *patternFlowRSVPPathRsvpHopIpv4LogicalInterfaceHandleCounter) HasStep() bool { + return obj.obj.Step != nil } -// Offset in bits relative to start of corresponding header field -// SetOffset sets the uint32 value in the PatternFlowIpv4TosThroughputMetricTag object -func (obj *patternFlowIpv4TosThroughputMetricTag) SetOffset(value uint32) PatternFlowIpv4TosThroughputMetricTag { +// description is TBD +// SetStep sets the uint32 value in the PatternFlowRSVPPathRsvpHopIpv4LogicalInterfaceHandleCounter object +func (obj *patternFlowRSVPPathRsvpHopIpv4LogicalInterfaceHandleCounter) SetStep(value uint32) PatternFlowRSVPPathRsvpHopIpv4LogicalInterfaceHandleCounter { - obj.obj.Offset = &value + obj.obj.Step = &value return obj } -// Number of bits to track for metrics starting from configured offset of corresponding header field -// Length returns a uint32 -func (obj *patternFlowIpv4TosThroughputMetricTag) Length() uint32 { +// description is TBD +// Count returns a uint32 +func (obj *patternFlowRSVPPathRsvpHopIpv4LogicalInterfaceHandleCounter) Count() uint32 { - return *obj.obj.Length + return *obj.obj.Count } -// Number of bits to track for metrics starting from configured offset of corresponding header field -// Length returns a uint32 -func (obj *patternFlowIpv4TosThroughputMetricTag) HasLength() bool { - return obj.obj.Length != nil +// description is TBD +// Count returns a uint32 +func (obj *patternFlowRSVPPathRsvpHopIpv4LogicalInterfaceHandleCounter) HasCount() bool { + return obj.obj.Count != nil } -// Number of bits to track for metrics starting from configured offset of corresponding header field -// SetLength sets the uint32 value in the PatternFlowIpv4TosThroughputMetricTag object -func (obj *patternFlowIpv4TosThroughputMetricTag) SetLength(value uint32) PatternFlowIpv4TosThroughputMetricTag { +// description is TBD +// SetCount sets the uint32 value in the PatternFlowRSVPPathRsvpHopIpv4LogicalInterfaceHandleCounter object +func (obj *patternFlowRSVPPathRsvpHopIpv4LogicalInterfaceHandleCounter) SetCount(value uint32) PatternFlowRSVPPathRsvpHopIpv4LogicalInterfaceHandleCounter { - obj.obj.Length = &value + obj.obj.Count = &value return obj } -func (obj *patternFlowIpv4TosThroughputMetricTag) validateObj(vObj *validation, set_default bool) { +func (obj *patternFlowRSVPPathRsvpHopIpv4LogicalInterfaceHandleCounter) validateObj(vObj *validation, set_default bool) { if set_default { obj.setDefault() } - // Name is required - if obj.obj.Name == nil { - vObj.validationErrors = append(vObj.validationErrors, "Name is required field on interface PatternFlowIpv4TosThroughputMetricTag") - } - - if obj.obj.Offset != nil { - - if *obj.obj.Offset > 0 { - vObj.validationErrors = append( - vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowIpv4TosThroughputMetricTag.Offset <= 0 but Got %d", *obj.obj.Offset)) - } - - } - - if obj.obj.Length != nil { - - if *obj.obj.Length < 1 || *obj.obj.Length > 1 { - vObj.validationErrors = append( - vObj.validationErrors, - fmt.Sprintf("1 <= PatternFlowIpv4TosThroughputMetricTag.Length <= 1 but Got %d", *obj.obj.Length)) - } - - } - } -func (obj *patternFlowIpv4TosThroughputMetricTag) setDefault() { - if obj.obj.Offset == nil { - obj.SetOffset(0) +func (obj *patternFlowRSVPPathRsvpHopIpv4LogicalInterfaceHandleCounter) setDefault() { + if obj.obj.Start == nil { + obj.SetStart(0) } - if obj.obj.Length == nil { - obj.SetLength(1) + if obj.obj.Step == nil { + obj.SetStep(1) + } + if obj.obj.Count == nil { + obj.SetCount(1) } } -// ***** PatternFlowIpv4TosReliabilityCounter ***** -type patternFlowIpv4TosReliabilityCounter struct { +// ***** PatternFlowRSVPPathTimeValuesType1RefreshPeriodRCounter ***** +type patternFlowRSVPPathTimeValuesType1RefreshPeriodRCounter struct { validation - obj *otg.PatternFlowIpv4TosReliabilityCounter + obj *otg.PatternFlowRSVPPathTimeValuesType1RefreshPeriodRCounter } -func NewPatternFlowIpv4TosReliabilityCounter() PatternFlowIpv4TosReliabilityCounter { - obj := patternFlowIpv4TosReliabilityCounter{obj: &otg.PatternFlowIpv4TosReliabilityCounter{}} +func NewPatternFlowRSVPPathTimeValuesType1RefreshPeriodRCounter() PatternFlowRSVPPathTimeValuesType1RefreshPeriodRCounter { + obj := patternFlowRSVPPathTimeValuesType1RefreshPeriodRCounter{obj: &otg.PatternFlowRSVPPathTimeValuesType1RefreshPeriodRCounter{}} obj.setDefault() return &obj } -func (obj *patternFlowIpv4TosReliabilityCounter) Msg() *otg.PatternFlowIpv4TosReliabilityCounter { +func (obj *patternFlowRSVPPathTimeValuesType1RefreshPeriodRCounter) Msg() *otg.PatternFlowRSVPPathTimeValuesType1RefreshPeriodRCounter { return obj.obj } -func (obj *patternFlowIpv4TosReliabilityCounter) SetMsg(msg *otg.PatternFlowIpv4TosReliabilityCounter) PatternFlowIpv4TosReliabilityCounter { +func (obj *patternFlowRSVPPathTimeValuesType1RefreshPeriodRCounter) SetMsg(msg *otg.PatternFlowRSVPPathTimeValuesType1RefreshPeriodRCounter) PatternFlowRSVPPathTimeValuesType1RefreshPeriodRCounter { proto.Merge(obj.obj, msg) return obj } -func (obj *patternFlowIpv4TosReliabilityCounter) ToProto() (*otg.PatternFlowIpv4TosReliabilityCounter, error) { +func (obj *patternFlowRSVPPathTimeValuesType1RefreshPeriodRCounter) ToProto() (*otg.PatternFlowRSVPPathTimeValuesType1RefreshPeriodRCounter, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -307377,7 +354425,7 @@ func (obj *patternFlowIpv4TosReliabilityCounter) ToProto() (*otg.PatternFlowIpv4 return obj.Msg(), nil } -func (obj *patternFlowIpv4TosReliabilityCounter) FromProto(msg *otg.PatternFlowIpv4TosReliabilityCounter) (PatternFlowIpv4TosReliabilityCounter, error) { +func (obj *patternFlowRSVPPathTimeValuesType1RefreshPeriodRCounter) FromProto(msg *otg.PatternFlowRSVPPathTimeValuesType1RefreshPeriodRCounter) (PatternFlowRSVPPathTimeValuesType1RefreshPeriodRCounter, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -307386,7 +354434,7 @@ func (obj *patternFlowIpv4TosReliabilityCounter) FromProto(msg *otg.PatternFlowI return newObj, nil } -func (obj *patternFlowIpv4TosReliabilityCounter) ToPbText() (string, error) { +func (obj *patternFlowRSVPPathTimeValuesType1RefreshPeriodRCounter) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -307398,7 +354446,7 @@ func (obj *patternFlowIpv4TosReliabilityCounter) ToPbText() (string, error) { return string(protoMarshal), nil } -func (obj *patternFlowIpv4TosReliabilityCounter) FromPbText(value string) error { +func (obj *patternFlowRSVPPathTimeValuesType1RefreshPeriodRCounter) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj @@ -307411,7 +354459,7 @@ func (obj *patternFlowIpv4TosReliabilityCounter) FromPbText(value string) error return retObj } -func (obj *patternFlowIpv4TosReliabilityCounter) ToYaml() (string, error) { +func (obj *patternFlowRSVPPathTimeValuesType1RefreshPeriodRCounter) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -307432,7 +354480,7 @@ func (obj *patternFlowIpv4TosReliabilityCounter) ToYaml() (string, error) { return string(data), nil } -func (obj *patternFlowIpv4TosReliabilityCounter) FromYaml(value string) error { +func (obj *patternFlowRSVPPathTimeValuesType1RefreshPeriodRCounter) FromYaml(value string) error { if value == "" { value = "{}" } @@ -307457,7 +354505,7 @@ func (obj *patternFlowIpv4TosReliabilityCounter) FromYaml(value string) error { return nil } -func (obj *patternFlowIpv4TosReliabilityCounter) ToJson() (string, error) { +func (obj *patternFlowRSVPPathTimeValuesType1RefreshPeriodRCounter) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -307475,7 +354523,7 @@ func (obj *patternFlowIpv4TosReliabilityCounter) ToJson() (string, error) { return string(data), nil } -func (obj *patternFlowIpv4TosReliabilityCounter) FromJson(value string) error { +func (obj *patternFlowRSVPPathTimeValuesType1RefreshPeriodRCounter) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -307496,19 +354544,19 @@ func (obj *patternFlowIpv4TosReliabilityCounter) FromJson(value string) error { return nil } -func (obj *patternFlowIpv4TosReliabilityCounter) validateToAndFrom() error { +func (obj *patternFlowRSVPPathTimeValuesType1RefreshPeriodRCounter) validateToAndFrom() error { // emptyVars() obj.validateObj(&obj.validation, true) return obj.validationResult() } -func (obj *patternFlowIpv4TosReliabilityCounter) Validate() error { +func (obj *patternFlowRSVPPathTimeValuesType1RefreshPeriodRCounter) Validate() error { // emptyVars() obj.validateObj(&obj.validation, false) return obj.validationResult() } -func (obj *patternFlowIpv4TosReliabilityCounter) String() string { +func (obj *patternFlowRSVPPathTimeValuesType1RefreshPeriodRCounter) String() string { str, err := obj.ToYaml() if err != nil { return err.Error() @@ -307516,12 +354564,12 @@ func (obj *patternFlowIpv4TosReliabilityCounter) String() string { return str } -func (obj *patternFlowIpv4TosReliabilityCounter) Clone() (PatternFlowIpv4TosReliabilityCounter, error) { +func (obj *patternFlowRSVPPathTimeValuesType1RefreshPeriodRCounter) Clone() (PatternFlowRSVPPathTimeValuesType1RefreshPeriodRCounter, error) { vErr := obj.Validate() if vErr != nil { return nil, vErr } - newObj := NewPatternFlowIpv4TosReliabilityCounter() + newObj := NewPatternFlowRSVPPathTimeValuesType1RefreshPeriodRCounter() data, err := proto.Marshal(obj.Msg()) if err != nil { return nil, err @@ -307533,63 +354581,63 @@ func (obj *patternFlowIpv4TosReliabilityCounter) Clone() (PatternFlowIpv4TosReli return newObj, nil } -// PatternFlowIpv4TosReliabilityCounter is integer counter pattern -type PatternFlowIpv4TosReliabilityCounter interface { +// PatternFlowRSVPPathTimeValuesType1RefreshPeriodRCounter is integer counter pattern +type PatternFlowRSVPPathTimeValuesType1RefreshPeriodRCounter interface { Validation - // Msg marshals PatternFlowIpv4TosReliabilityCounter to protobuf object *otg.PatternFlowIpv4TosReliabilityCounter + // Msg marshals PatternFlowRSVPPathTimeValuesType1RefreshPeriodRCounter to protobuf object *otg.PatternFlowRSVPPathTimeValuesType1RefreshPeriodRCounter // and doesn't set defaults - Msg() *otg.PatternFlowIpv4TosReliabilityCounter - // SetMsg unmarshals PatternFlowIpv4TosReliabilityCounter from protobuf object *otg.PatternFlowIpv4TosReliabilityCounter + Msg() *otg.PatternFlowRSVPPathTimeValuesType1RefreshPeriodRCounter + // SetMsg unmarshals PatternFlowRSVPPathTimeValuesType1RefreshPeriodRCounter from protobuf object *otg.PatternFlowRSVPPathTimeValuesType1RefreshPeriodRCounter // and doesn't set defaults - SetMsg(*otg.PatternFlowIpv4TosReliabilityCounter) PatternFlowIpv4TosReliabilityCounter - // ToProto marshals PatternFlowIpv4TosReliabilityCounter to protobuf object *otg.PatternFlowIpv4TosReliabilityCounter - ToProto() (*otg.PatternFlowIpv4TosReliabilityCounter, error) - // ToPbText marshals PatternFlowIpv4TosReliabilityCounter to protobuf text + SetMsg(*otg.PatternFlowRSVPPathTimeValuesType1RefreshPeriodRCounter) PatternFlowRSVPPathTimeValuesType1RefreshPeriodRCounter + // ToProto marshals PatternFlowRSVPPathTimeValuesType1RefreshPeriodRCounter to protobuf object *otg.PatternFlowRSVPPathTimeValuesType1RefreshPeriodRCounter + ToProto() (*otg.PatternFlowRSVPPathTimeValuesType1RefreshPeriodRCounter, error) + // ToPbText marshals PatternFlowRSVPPathTimeValuesType1RefreshPeriodRCounter to protobuf text ToPbText() (string, error) - // ToYaml marshals PatternFlowIpv4TosReliabilityCounter to YAML text + // ToYaml marshals PatternFlowRSVPPathTimeValuesType1RefreshPeriodRCounter to YAML text ToYaml() (string, error) - // ToJson marshals PatternFlowIpv4TosReliabilityCounter to JSON text + // ToJson marshals PatternFlowRSVPPathTimeValuesType1RefreshPeriodRCounter to JSON text ToJson() (string, error) - // FromProto unmarshals PatternFlowIpv4TosReliabilityCounter from protobuf object *otg.PatternFlowIpv4TosReliabilityCounter - FromProto(msg *otg.PatternFlowIpv4TosReliabilityCounter) (PatternFlowIpv4TosReliabilityCounter, error) - // FromPbText unmarshals PatternFlowIpv4TosReliabilityCounter from protobuf text + // FromProto unmarshals PatternFlowRSVPPathTimeValuesType1RefreshPeriodRCounter from protobuf object *otg.PatternFlowRSVPPathTimeValuesType1RefreshPeriodRCounter + FromProto(msg *otg.PatternFlowRSVPPathTimeValuesType1RefreshPeriodRCounter) (PatternFlowRSVPPathTimeValuesType1RefreshPeriodRCounter, error) + // FromPbText unmarshals PatternFlowRSVPPathTimeValuesType1RefreshPeriodRCounter from protobuf text FromPbText(value string) error - // FromYaml unmarshals PatternFlowIpv4TosReliabilityCounter from YAML text + // FromYaml unmarshals PatternFlowRSVPPathTimeValuesType1RefreshPeriodRCounter from YAML text FromYaml(value string) error - // FromJson unmarshals PatternFlowIpv4TosReliabilityCounter from JSON text + // FromJson unmarshals PatternFlowRSVPPathTimeValuesType1RefreshPeriodRCounter from JSON text FromJson(value string) error - // Validate validates PatternFlowIpv4TosReliabilityCounter + // Validate validates PatternFlowRSVPPathTimeValuesType1RefreshPeriodRCounter Validate() error // A stringer function String() string // Clones the object - Clone() (PatternFlowIpv4TosReliabilityCounter, error) + Clone() (PatternFlowRSVPPathTimeValuesType1RefreshPeriodRCounter, error) validateToAndFrom() error validateObj(vObj *validation, set_default bool) setDefault() - // Start returns uint32, set in PatternFlowIpv4TosReliabilityCounter. + // Start returns uint32, set in PatternFlowRSVPPathTimeValuesType1RefreshPeriodRCounter. Start() uint32 - // SetStart assigns uint32 provided by user to PatternFlowIpv4TosReliabilityCounter - SetStart(value uint32) PatternFlowIpv4TosReliabilityCounter - // HasStart checks if Start has been set in PatternFlowIpv4TosReliabilityCounter + // SetStart assigns uint32 provided by user to PatternFlowRSVPPathTimeValuesType1RefreshPeriodRCounter + SetStart(value uint32) PatternFlowRSVPPathTimeValuesType1RefreshPeriodRCounter + // HasStart checks if Start has been set in PatternFlowRSVPPathTimeValuesType1RefreshPeriodRCounter HasStart() bool - // Step returns uint32, set in PatternFlowIpv4TosReliabilityCounter. + // Step returns uint32, set in PatternFlowRSVPPathTimeValuesType1RefreshPeriodRCounter. Step() uint32 - // SetStep assigns uint32 provided by user to PatternFlowIpv4TosReliabilityCounter - SetStep(value uint32) PatternFlowIpv4TosReliabilityCounter - // HasStep checks if Step has been set in PatternFlowIpv4TosReliabilityCounter + // SetStep assigns uint32 provided by user to PatternFlowRSVPPathTimeValuesType1RefreshPeriodRCounter + SetStep(value uint32) PatternFlowRSVPPathTimeValuesType1RefreshPeriodRCounter + // HasStep checks if Step has been set in PatternFlowRSVPPathTimeValuesType1RefreshPeriodRCounter HasStep() bool - // Count returns uint32, set in PatternFlowIpv4TosReliabilityCounter. + // Count returns uint32, set in PatternFlowRSVPPathTimeValuesType1RefreshPeriodRCounter. Count() uint32 - // SetCount assigns uint32 provided by user to PatternFlowIpv4TosReliabilityCounter - SetCount(value uint32) PatternFlowIpv4TosReliabilityCounter - // HasCount checks if Count has been set in PatternFlowIpv4TosReliabilityCounter + // SetCount assigns uint32 provided by user to PatternFlowRSVPPathTimeValuesType1RefreshPeriodRCounter + SetCount(value uint32) PatternFlowRSVPPathTimeValuesType1RefreshPeriodRCounter + // HasCount checks if Count has been set in PatternFlowRSVPPathTimeValuesType1RefreshPeriodRCounter HasCount() bool } // description is TBD // Start returns a uint32 -func (obj *patternFlowIpv4TosReliabilityCounter) Start() uint32 { +func (obj *patternFlowRSVPPathTimeValuesType1RefreshPeriodRCounter) Start() uint32 { return *obj.obj.Start @@ -307597,13 +354645,13 @@ func (obj *patternFlowIpv4TosReliabilityCounter) Start() uint32 { // description is TBD // Start returns a uint32 -func (obj *patternFlowIpv4TosReliabilityCounter) HasStart() bool { +func (obj *patternFlowRSVPPathTimeValuesType1RefreshPeriodRCounter) HasStart() bool { return obj.obj.Start != nil } // description is TBD -// SetStart sets the uint32 value in the PatternFlowIpv4TosReliabilityCounter object -func (obj *patternFlowIpv4TosReliabilityCounter) SetStart(value uint32) PatternFlowIpv4TosReliabilityCounter { +// SetStart sets the uint32 value in the PatternFlowRSVPPathTimeValuesType1RefreshPeriodRCounter object +func (obj *patternFlowRSVPPathTimeValuesType1RefreshPeriodRCounter) SetStart(value uint32) PatternFlowRSVPPathTimeValuesType1RefreshPeriodRCounter { obj.obj.Start = &value return obj @@ -307611,7 +354659,7 @@ func (obj *patternFlowIpv4TosReliabilityCounter) SetStart(value uint32) PatternF // description is TBD // Step returns a uint32 -func (obj *patternFlowIpv4TosReliabilityCounter) Step() uint32 { +func (obj *patternFlowRSVPPathTimeValuesType1RefreshPeriodRCounter) Step() uint32 { return *obj.obj.Step @@ -307619,13 +354667,13 @@ func (obj *patternFlowIpv4TosReliabilityCounter) Step() uint32 { // description is TBD // Step returns a uint32 -func (obj *patternFlowIpv4TosReliabilityCounter) HasStep() bool { +func (obj *patternFlowRSVPPathTimeValuesType1RefreshPeriodRCounter) HasStep() bool { return obj.obj.Step != nil } // description is TBD -// SetStep sets the uint32 value in the PatternFlowIpv4TosReliabilityCounter object -func (obj *patternFlowIpv4TosReliabilityCounter) SetStep(value uint32) PatternFlowIpv4TosReliabilityCounter { +// SetStep sets the uint32 value in the PatternFlowRSVPPathTimeValuesType1RefreshPeriodRCounter object +func (obj *patternFlowRSVPPathTimeValuesType1RefreshPeriodRCounter) SetStep(value uint32) PatternFlowRSVPPathTimeValuesType1RefreshPeriodRCounter { obj.obj.Step = &value return obj @@ -307633,7 +354681,7 @@ func (obj *patternFlowIpv4TosReliabilityCounter) SetStep(value uint32) PatternFl // description is TBD // Count returns a uint32 -func (obj *patternFlowIpv4TosReliabilityCounter) Count() uint32 { +func (obj *patternFlowRSVPPathTimeValuesType1RefreshPeriodRCounter) Count() uint32 { return *obj.obj.Count @@ -307641,56 +354689,26 @@ func (obj *patternFlowIpv4TosReliabilityCounter) Count() uint32 { // description is TBD // Count returns a uint32 -func (obj *patternFlowIpv4TosReliabilityCounter) HasCount() bool { +func (obj *patternFlowRSVPPathTimeValuesType1RefreshPeriodRCounter) HasCount() bool { return obj.obj.Count != nil } // description is TBD -// SetCount sets the uint32 value in the PatternFlowIpv4TosReliabilityCounter object -func (obj *patternFlowIpv4TosReliabilityCounter) SetCount(value uint32) PatternFlowIpv4TosReliabilityCounter { +// SetCount sets the uint32 value in the PatternFlowRSVPPathTimeValuesType1RefreshPeriodRCounter object +func (obj *patternFlowRSVPPathTimeValuesType1RefreshPeriodRCounter) SetCount(value uint32) PatternFlowRSVPPathTimeValuesType1RefreshPeriodRCounter { obj.obj.Count = &value return obj } -func (obj *patternFlowIpv4TosReliabilityCounter) validateObj(vObj *validation, set_default bool) { +func (obj *patternFlowRSVPPathTimeValuesType1RefreshPeriodRCounter) validateObj(vObj *validation, set_default bool) { if set_default { obj.setDefault() } - if obj.obj.Start != nil { - - if *obj.obj.Start > 1 { - vObj.validationErrors = append( - vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowIpv4TosReliabilityCounter.Start <= 1 but Got %d", *obj.obj.Start)) - } - - } - - if obj.obj.Step != nil { - - if *obj.obj.Step > 1 { - vObj.validationErrors = append( - vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowIpv4TosReliabilityCounter.Step <= 1 but Got %d", *obj.obj.Step)) - } - - } - - if obj.obj.Count != nil { - - if *obj.obj.Count > 1 { - vObj.validationErrors = append( - vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowIpv4TosReliabilityCounter.Count <= 1 but Got %d", *obj.obj.Count)) - } - - } - } -func (obj *patternFlowIpv4TosReliabilityCounter) setDefault() { +func (obj *patternFlowRSVPPathTimeValuesType1RefreshPeriodRCounter) setDefault() { if obj.obj.Start == nil { obj.SetStart(0) } @@ -307703,29 +354721,31 @@ func (obj *patternFlowIpv4TosReliabilityCounter) setDefault() { } -// ***** PatternFlowIpv4TosReliabilityMetricTag ***** -type patternFlowIpv4TosReliabilityMetricTag struct { +// ***** FlowRSVPType1ExplicitRouteSubobjectsType ***** +type flowRSVPType1ExplicitRouteSubobjectsType struct { validation - obj *otg.PatternFlowIpv4TosReliabilityMetricTag + obj *otg.FlowRSVPType1ExplicitRouteSubobjectsType + ipv4PrefixHolder FlowRSVPPathExplicitRouteType1Ipv4Prefix + fourByteAsNumberHolder FlowRSVPPathExplicitRouteType1FourByteASNumber } -func NewPatternFlowIpv4TosReliabilityMetricTag() PatternFlowIpv4TosReliabilityMetricTag { - obj := patternFlowIpv4TosReliabilityMetricTag{obj: &otg.PatternFlowIpv4TosReliabilityMetricTag{}} +func NewFlowRSVPType1ExplicitRouteSubobjectsType() FlowRSVPType1ExplicitRouteSubobjectsType { + obj := flowRSVPType1ExplicitRouteSubobjectsType{obj: &otg.FlowRSVPType1ExplicitRouteSubobjectsType{}} obj.setDefault() return &obj } -func (obj *patternFlowIpv4TosReliabilityMetricTag) Msg() *otg.PatternFlowIpv4TosReliabilityMetricTag { +func (obj *flowRSVPType1ExplicitRouteSubobjectsType) Msg() *otg.FlowRSVPType1ExplicitRouteSubobjectsType { return obj.obj } -func (obj *patternFlowIpv4TosReliabilityMetricTag) SetMsg(msg *otg.PatternFlowIpv4TosReliabilityMetricTag) PatternFlowIpv4TosReliabilityMetricTag { - +func (obj *flowRSVPType1ExplicitRouteSubobjectsType) SetMsg(msg *otg.FlowRSVPType1ExplicitRouteSubobjectsType) FlowRSVPType1ExplicitRouteSubobjectsType { + obj.setNil() proto.Merge(obj.obj, msg) return obj } -func (obj *patternFlowIpv4TosReliabilityMetricTag) ToProto() (*otg.PatternFlowIpv4TosReliabilityMetricTag, error) { +func (obj *flowRSVPType1ExplicitRouteSubobjectsType) ToProto() (*otg.FlowRSVPType1ExplicitRouteSubobjectsType, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -307733,7 +354753,7 @@ func (obj *patternFlowIpv4TosReliabilityMetricTag) ToProto() (*otg.PatternFlowIp return obj.Msg(), nil } -func (obj *patternFlowIpv4TosReliabilityMetricTag) FromProto(msg *otg.PatternFlowIpv4TosReliabilityMetricTag) (PatternFlowIpv4TosReliabilityMetricTag, error) { +func (obj *flowRSVPType1ExplicitRouteSubobjectsType) FromProto(msg *otg.FlowRSVPType1ExplicitRouteSubobjectsType) (FlowRSVPType1ExplicitRouteSubobjectsType, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -307742,7 +354762,7 @@ func (obj *patternFlowIpv4TosReliabilityMetricTag) FromProto(msg *otg.PatternFlo return newObj, nil } -func (obj *patternFlowIpv4TosReliabilityMetricTag) ToPbText() (string, error) { +func (obj *flowRSVPType1ExplicitRouteSubobjectsType) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -307754,12 +354774,12 @@ func (obj *patternFlowIpv4TosReliabilityMetricTag) ToPbText() (string, error) { return string(protoMarshal), nil } -func (obj *patternFlowIpv4TosReliabilityMetricTag) FromPbText(value string) error { +func (obj *flowRSVPType1ExplicitRouteSubobjectsType) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj } - + obj.setNil() vErr := obj.validateToAndFrom() if vErr != nil { return vErr @@ -307767,7 +354787,7 @@ func (obj *patternFlowIpv4TosReliabilityMetricTag) FromPbText(value string) erro return retObj } -func (obj *patternFlowIpv4TosReliabilityMetricTag) ToYaml() (string, error) { +func (obj *flowRSVPType1ExplicitRouteSubobjectsType) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -307788,7 +354808,7 @@ func (obj *patternFlowIpv4TosReliabilityMetricTag) ToYaml() (string, error) { return string(data), nil } -func (obj *patternFlowIpv4TosReliabilityMetricTag) FromYaml(value string) error { +func (obj *flowRSVPType1ExplicitRouteSubobjectsType) FromYaml(value string) error { if value == "" { value = "{}" } @@ -307805,7 +354825,7 @@ func (obj *patternFlowIpv4TosReliabilityMetricTag) FromYaml(value string) error return fmt.Errorf("unmarshal error %s", strings.Replace( uError.Error(), "\u00a0", " ", -1)[7:]) } - + obj.setNil() vErr := obj.validateToAndFrom() if vErr != nil { return vErr @@ -307813,7 +354833,7 @@ func (obj *patternFlowIpv4TosReliabilityMetricTag) FromYaml(value string) error return nil } -func (obj *patternFlowIpv4TosReliabilityMetricTag) ToJson() (string, error) { +func (obj *flowRSVPType1ExplicitRouteSubobjectsType) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -307831,7 +354851,7 @@ func (obj *patternFlowIpv4TosReliabilityMetricTag) ToJson() (string, error) { return string(data), nil } -func (obj *patternFlowIpv4TosReliabilityMetricTag) FromJson(value string) error { +func (obj *flowRSVPType1ExplicitRouteSubobjectsType) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -307844,7 +354864,7 @@ func (obj *patternFlowIpv4TosReliabilityMetricTag) FromJson(value string) error return fmt.Errorf("unmarshal error %s", strings.Replace( uError.Error(), "\u00a0", " ", -1)[7:]) } - + obj.setNil() err := obj.validateToAndFrom() if err != nil { return err @@ -307852,19 +354872,19 @@ func (obj *patternFlowIpv4TosReliabilityMetricTag) FromJson(value string) error return nil } -func (obj *patternFlowIpv4TosReliabilityMetricTag) validateToAndFrom() error { +func (obj *flowRSVPType1ExplicitRouteSubobjectsType) validateToAndFrom() error { // emptyVars() obj.validateObj(&obj.validation, true) return obj.validationResult() } -func (obj *patternFlowIpv4TosReliabilityMetricTag) Validate() error { +func (obj *flowRSVPType1ExplicitRouteSubobjectsType) Validate() error { // emptyVars() obj.validateObj(&obj.validation, false) return obj.validationResult() } -func (obj *patternFlowIpv4TosReliabilityMetricTag) String() string { +func (obj *flowRSVPType1ExplicitRouteSubobjectsType) String() string { str, err := obj.ToYaml() if err != nil { return err.Error() @@ -307872,12 +354892,12 @@ func (obj *patternFlowIpv4TosReliabilityMetricTag) String() string { return str } -func (obj *patternFlowIpv4TosReliabilityMetricTag) Clone() (PatternFlowIpv4TosReliabilityMetricTag, error) { +func (obj *flowRSVPType1ExplicitRouteSubobjectsType) Clone() (FlowRSVPType1ExplicitRouteSubobjectsType, error) { vErr := obj.Validate() if vErr != nil { return nil, vErr } - newObj := NewPatternFlowIpv4TosReliabilityMetricTag() + newObj := NewFlowRSVPType1ExplicitRouteSubobjectsType() data, err := proto.Marshal(obj.Msg()) if err != nil { return nil, err @@ -307889,183 +354909,223 @@ func (obj *patternFlowIpv4TosReliabilityMetricTag) Clone() (PatternFlowIpv4TosRe return newObj, nil } -// PatternFlowIpv4TosReliabilityMetricTag is metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. -type PatternFlowIpv4TosReliabilityMetricTag interface { +func (obj *flowRSVPType1ExplicitRouteSubobjectsType) setNil() { + obj.ipv4PrefixHolder = nil + obj.fourByteAsNumberHolder = nil + obj.validationErrors = nil + obj.warnings = nil + obj.constraints = make(map[string]map[string]Constraints) +} + +// FlowRSVPType1ExplicitRouteSubobjectsType is currently supported subobjects are IPv4 address(1) and 4-byte AS number(5). +type FlowRSVPType1ExplicitRouteSubobjectsType interface { Validation - // Msg marshals PatternFlowIpv4TosReliabilityMetricTag to protobuf object *otg.PatternFlowIpv4TosReliabilityMetricTag + // Msg marshals FlowRSVPType1ExplicitRouteSubobjectsType to protobuf object *otg.FlowRSVPType1ExplicitRouteSubobjectsType // and doesn't set defaults - Msg() *otg.PatternFlowIpv4TosReliabilityMetricTag - // SetMsg unmarshals PatternFlowIpv4TosReliabilityMetricTag from protobuf object *otg.PatternFlowIpv4TosReliabilityMetricTag + Msg() *otg.FlowRSVPType1ExplicitRouteSubobjectsType + // SetMsg unmarshals FlowRSVPType1ExplicitRouteSubobjectsType from protobuf object *otg.FlowRSVPType1ExplicitRouteSubobjectsType // and doesn't set defaults - SetMsg(*otg.PatternFlowIpv4TosReliabilityMetricTag) PatternFlowIpv4TosReliabilityMetricTag - // ToProto marshals PatternFlowIpv4TosReliabilityMetricTag to protobuf object *otg.PatternFlowIpv4TosReliabilityMetricTag - ToProto() (*otg.PatternFlowIpv4TosReliabilityMetricTag, error) - // ToPbText marshals PatternFlowIpv4TosReliabilityMetricTag to protobuf text + SetMsg(*otg.FlowRSVPType1ExplicitRouteSubobjectsType) FlowRSVPType1ExplicitRouteSubobjectsType + // ToProto marshals FlowRSVPType1ExplicitRouteSubobjectsType to protobuf object *otg.FlowRSVPType1ExplicitRouteSubobjectsType + ToProto() (*otg.FlowRSVPType1ExplicitRouteSubobjectsType, error) + // ToPbText marshals FlowRSVPType1ExplicitRouteSubobjectsType to protobuf text ToPbText() (string, error) - // ToYaml marshals PatternFlowIpv4TosReliabilityMetricTag to YAML text + // ToYaml marshals FlowRSVPType1ExplicitRouteSubobjectsType to YAML text ToYaml() (string, error) - // ToJson marshals PatternFlowIpv4TosReliabilityMetricTag to JSON text + // ToJson marshals FlowRSVPType1ExplicitRouteSubobjectsType to JSON text ToJson() (string, error) - // FromProto unmarshals PatternFlowIpv4TosReliabilityMetricTag from protobuf object *otg.PatternFlowIpv4TosReliabilityMetricTag - FromProto(msg *otg.PatternFlowIpv4TosReliabilityMetricTag) (PatternFlowIpv4TosReliabilityMetricTag, error) - // FromPbText unmarshals PatternFlowIpv4TosReliabilityMetricTag from protobuf text + // FromProto unmarshals FlowRSVPType1ExplicitRouteSubobjectsType from protobuf object *otg.FlowRSVPType1ExplicitRouteSubobjectsType + FromProto(msg *otg.FlowRSVPType1ExplicitRouteSubobjectsType) (FlowRSVPType1ExplicitRouteSubobjectsType, error) + // FromPbText unmarshals FlowRSVPType1ExplicitRouteSubobjectsType from protobuf text FromPbText(value string) error - // FromYaml unmarshals PatternFlowIpv4TosReliabilityMetricTag from YAML text + // FromYaml unmarshals FlowRSVPType1ExplicitRouteSubobjectsType from YAML text FromYaml(value string) error - // FromJson unmarshals PatternFlowIpv4TosReliabilityMetricTag from JSON text + // FromJson unmarshals FlowRSVPType1ExplicitRouteSubobjectsType from JSON text FromJson(value string) error - // Validate validates PatternFlowIpv4TosReliabilityMetricTag + // Validate validates FlowRSVPType1ExplicitRouteSubobjectsType Validate() error // A stringer function String() string // Clones the object - Clone() (PatternFlowIpv4TosReliabilityMetricTag, error) + Clone() (FlowRSVPType1ExplicitRouteSubobjectsType, error) validateToAndFrom() error validateObj(vObj *validation, set_default bool) setDefault() - // Name returns string, set in PatternFlowIpv4TosReliabilityMetricTag. - Name() string - // SetName assigns string provided by user to PatternFlowIpv4TosReliabilityMetricTag - SetName(value string) PatternFlowIpv4TosReliabilityMetricTag - // Offset returns uint32, set in PatternFlowIpv4TosReliabilityMetricTag. - Offset() uint32 - // SetOffset assigns uint32 provided by user to PatternFlowIpv4TosReliabilityMetricTag - SetOffset(value uint32) PatternFlowIpv4TosReliabilityMetricTag - // HasOffset checks if Offset has been set in PatternFlowIpv4TosReliabilityMetricTag - HasOffset() bool - // Length returns uint32, set in PatternFlowIpv4TosReliabilityMetricTag. - Length() uint32 - // SetLength assigns uint32 provided by user to PatternFlowIpv4TosReliabilityMetricTag - SetLength(value uint32) PatternFlowIpv4TosReliabilityMetricTag - // HasLength checks if Length has been set in PatternFlowIpv4TosReliabilityMetricTag - HasLength() bool + // Choice returns FlowRSVPType1ExplicitRouteSubobjectsTypeChoiceEnum, set in FlowRSVPType1ExplicitRouteSubobjectsType + Choice() FlowRSVPType1ExplicitRouteSubobjectsTypeChoiceEnum + // SetChoice assigns FlowRSVPType1ExplicitRouteSubobjectsTypeChoiceEnum provided by user to FlowRSVPType1ExplicitRouteSubobjectsType + SetChoice(value FlowRSVPType1ExplicitRouteSubobjectsTypeChoiceEnum) FlowRSVPType1ExplicitRouteSubobjectsType + // HasChoice checks if Choice has been set in FlowRSVPType1ExplicitRouteSubobjectsType + HasChoice() bool + // Ipv4Prefix returns FlowRSVPPathExplicitRouteType1Ipv4Prefix, set in FlowRSVPType1ExplicitRouteSubobjectsType. + // FlowRSVPPathExplicitRouteType1Ipv4Prefix is class = EXPLICIT_ROUTE, Type1 ROUTE_RECORD C-Type = 1 Subobject: IPv4 Prefix, C-Type: 1 + Ipv4Prefix() FlowRSVPPathExplicitRouteType1Ipv4Prefix + // SetIpv4Prefix assigns FlowRSVPPathExplicitRouteType1Ipv4Prefix provided by user to FlowRSVPType1ExplicitRouteSubobjectsType. + // FlowRSVPPathExplicitRouteType1Ipv4Prefix is class = EXPLICIT_ROUTE, Type1 ROUTE_RECORD C-Type = 1 Subobject: IPv4 Prefix, C-Type: 1 + SetIpv4Prefix(value FlowRSVPPathExplicitRouteType1Ipv4Prefix) FlowRSVPType1ExplicitRouteSubobjectsType + // HasIpv4Prefix checks if Ipv4Prefix has been set in FlowRSVPType1ExplicitRouteSubobjectsType + HasIpv4Prefix() bool + // FourByteAsNumber returns FlowRSVPPathExplicitRouteType1FourByteASNumber, set in FlowRSVPType1ExplicitRouteSubobjectsType. + // FlowRSVPPathExplicitRouteType1FourByteASNumber is class = EXPLICIT_ROUTE, Type1 ROUTE_RECORD C-Type = 1 Subobject: 4-byte AS number, C-Type: 32 + FourByteAsNumber() FlowRSVPPathExplicitRouteType1FourByteASNumber + // SetFourByteAsNumber assigns FlowRSVPPathExplicitRouteType1FourByteASNumber provided by user to FlowRSVPType1ExplicitRouteSubobjectsType. + // FlowRSVPPathExplicitRouteType1FourByteASNumber is class = EXPLICIT_ROUTE, Type1 ROUTE_RECORD C-Type = 1 Subobject: 4-byte AS number, C-Type: 32 + SetFourByteAsNumber(value FlowRSVPPathExplicitRouteType1FourByteASNumber) FlowRSVPType1ExplicitRouteSubobjectsType + // HasFourByteAsNumber checks if FourByteAsNumber has been set in FlowRSVPType1ExplicitRouteSubobjectsType + HasFourByteAsNumber() bool + setNil() } -// Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field -// Name returns a string -func (obj *patternFlowIpv4TosReliabilityMetricTag) Name() string { - - return *obj.obj.Name +type FlowRSVPType1ExplicitRouteSubobjectsTypeChoiceEnum string +// Enum of Choice on FlowRSVPType1ExplicitRouteSubobjectsType +var FlowRSVPType1ExplicitRouteSubobjectsTypeChoice = struct { + IPV4_PREFIX FlowRSVPType1ExplicitRouteSubobjectsTypeChoiceEnum + FOUR_BYTE_AS_NUMBER FlowRSVPType1ExplicitRouteSubobjectsTypeChoiceEnum +}{ + IPV4_PREFIX: FlowRSVPType1ExplicitRouteSubobjectsTypeChoiceEnum("ipv4_prefix"), + FOUR_BYTE_AS_NUMBER: FlowRSVPType1ExplicitRouteSubobjectsTypeChoiceEnum("four_byte_as_number"), } -// Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field -// SetName sets the string value in the PatternFlowIpv4TosReliabilityMetricTag object -func (obj *patternFlowIpv4TosReliabilityMetricTag) SetName(value string) PatternFlowIpv4TosReliabilityMetricTag { +func (obj *flowRSVPType1ExplicitRouteSubobjectsType) Choice() FlowRSVPType1ExplicitRouteSubobjectsTypeChoiceEnum { + return FlowRSVPType1ExplicitRouteSubobjectsTypeChoiceEnum(obj.obj.Choice.Enum().String()) +} - obj.obj.Name = &value - return obj +// description is TBD +// Choice returns a string +func (obj *flowRSVPType1ExplicitRouteSubobjectsType) HasChoice() bool { + return obj.obj.Choice != nil } -// Offset in bits relative to start of corresponding header field -// Offset returns a uint32 -func (obj *patternFlowIpv4TosReliabilityMetricTag) Offset() uint32 { +func (obj *flowRSVPType1ExplicitRouteSubobjectsType) SetChoice(value FlowRSVPType1ExplicitRouteSubobjectsTypeChoiceEnum) FlowRSVPType1ExplicitRouteSubobjectsType { + intValue, ok := otg.FlowRSVPType1ExplicitRouteSubobjectsType_Choice_Enum_value[string(value)] + if !ok { + obj.validationErrors = append(obj.validationErrors, fmt.Sprintf( + "%s is not a valid choice on FlowRSVPType1ExplicitRouteSubobjectsTypeChoiceEnum", string(value))) + return obj + } + enumValue := otg.FlowRSVPType1ExplicitRouteSubobjectsType_Choice_Enum(intValue) + obj.obj.Choice = &enumValue + obj.obj.FourByteAsNumber = nil + obj.fourByteAsNumberHolder = nil + obj.obj.Ipv4Prefix = nil + obj.ipv4PrefixHolder = nil - return *obj.obj.Offset + if value == FlowRSVPType1ExplicitRouteSubobjectsTypeChoice.IPV4_PREFIX { + obj.obj.Ipv4Prefix = NewFlowRSVPPathExplicitRouteType1Ipv4Prefix().Msg() + } -} + if value == FlowRSVPType1ExplicitRouteSubobjectsTypeChoice.FOUR_BYTE_AS_NUMBER { + obj.obj.FourByteAsNumber = NewFlowRSVPPathExplicitRouteType1FourByteASNumber().Msg() + } -// Offset in bits relative to start of corresponding header field -// Offset returns a uint32 -func (obj *patternFlowIpv4TosReliabilityMetricTag) HasOffset() bool { - return obj.obj.Offset != nil + return obj } -// Offset in bits relative to start of corresponding header field -// SetOffset sets the uint32 value in the PatternFlowIpv4TosReliabilityMetricTag object -func (obj *patternFlowIpv4TosReliabilityMetricTag) SetOffset(value uint32) PatternFlowIpv4TosReliabilityMetricTag { +// description is TBD +// Ipv4Prefix returns a FlowRSVPPathExplicitRouteType1Ipv4Prefix +func (obj *flowRSVPType1ExplicitRouteSubobjectsType) Ipv4Prefix() FlowRSVPPathExplicitRouteType1Ipv4Prefix { + if obj.obj.Ipv4Prefix == nil { + obj.SetChoice(FlowRSVPType1ExplicitRouteSubobjectsTypeChoice.IPV4_PREFIX) + } + if obj.ipv4PrefixHolder == nil { + obj.ipv4PrefixHolder = &flowRSVPPathExplicitRouteType1Ipv4Prefix{obj: obj.obj.Ipv4Prefix} + } + return obj.ipv4PrefixHolder +} - obj.obj.Offset = &value - return obj +// description is TBD +// Ipv4Prefix returns a FlowRSVPPathExplicitRouteType1Ipv4Prefix +func (obj *flowRSVPType1ExplicitRouteSubobjectsType) HasIpv4Prefix() bool { + return obj.obj.Ipv4Prefix != nil } -// Number of bits to track for metrics starting from configured offset of corresponding header field -// Length returns a uint32 -func (obj *patternFlowIpv4TosReliabilityMetricTag) Length() uint32 { +// description is TBD +// SetIpv4Prefix sets the FlowRSVPPathExplicitRouteType1Ipv4Prefix value in the FlowRSVPType1ExplicitRouteSubobjectsType object +func (obj *flowRSVPType1ExplicitRouteSubobjectsType) SetIpv4Prefix(value FlowRSVPPathExplicitRouteType1Ipv4Prefix) FlowRSVPType1ExplicitRouteSubobjectsType { + obj.SetChoice(FlowRSVPType1ExplicitRouteSubobjectsTypeChoice.IPV4_PREFIX) + obj.ipv4PrefixHolder = nil + obj.obj.Ipv4Prefix = value.Msg() - return *obj.obj.Length + return obj +} +// description is TBD +// FourByteAsNumber returns a FlowRSVPPathExplicitRouteType1FourByteASNumber +func (obj *flowRSVPType1ExplicitRouteSubobjectsType) FourByteAsNumber() FlowRSVPPathExplicitRouteType1FourByteASNumber { + if obj.obj.FourByteAsNumber == nil { + obj.SetChoice(FlowRSVPType1ExplicitRouteSubobjectsTypeChoice.FOUR_BYTE_AS_NUMBER) + } + if obj.fourByteAsNumberHolder == nil { + obj.fourByteAsNumberHolder = &flowRSVPPathExplicitRouteType1FourByteASNumber{obj: obj.obj.FourByteAsNumber} + } + return obj.fourByteAsNumberHolder } -// Number of bits to track for metrics starting from configured offset of corresponding header field -// Length returns a uint32 -func (obj *patternFlowIpv4TosReliabilityMetricTag) HasLength() bool { - return obj.obj.Length != nil +// description is TBD +// FourByteAsNumber returns a FlowRSVPPathExplicitRouteType1FourByteASNumber +func (obj *flowRSVPType1ExplicitRouteSubobjectsType) HasFourByteAsNumber() bool { + return obj.obj.FourByteAsNumber != nil } -// Number of bits to track for metrics starting from configured offset of corresponding header field -// SetLength sets the uint32 value in the PatternFlowIpv4TosReliabilityMetricTag object -func (obj *patternFlowIpv4TosReliabilityMetricTag) SetLength(value uint32) PatternFlowIpv4TosReliabilityMetricTag { +// description is TBD +// SetFourByteAsNumber sets the FlowRSVPPathExplicitRouteType1FourByteASNumber value in the FlowRSVPType1ExplicitRouteSubobjectsType object +func (obj *flowRSVPType1ExplicitRouteSubobjectsType) SetFourByteAsNumber(value FlowRSVPPathExplicitRouteType1FourByteASNumber) FlowRSVPType1ExplicitRouteSubobjectsType { + obj.SetChoice(FlowRSVPType1ExplicitRouteSubobjectsTypeChoice.FOUR_BYTE_AS_NUMBER) + obj.fourByteAsNumberHolder = nil + obj.obj.FourByteAsNumber = value.Msg() - obj.obj.Length = &value return obj } -func (obj *patternFlowIpv4TosReliabilityMetricTag) validateObj(vObj *validation, set_default bool) { +func (obj *flowRSVPType1ExplicitRouteSubobjectsType) validateObj(vObj *validation, set_default bool) { if set_default { obj.setDefault() } - // Name is required - if obj.obj.Name == nil { - vObj.validationErrors = append(vObj.validationErrors, "Name is required field on interface PatternFlowIpv4TosReliabilityMetricTag") - } - - if obj.obj.Offset != nil { - - if *obj.obj.Offset > 0 { - vObj.validationErrors = append( - vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowIpv4TosReliabilityMetricTag.Offset <= 0 but Got %d", *obj.obj.Offset)) - } + if obj.obj.Ipv4Prefix != nil { + obj.Ipv4Prefix().validateObj(vObj, set_default) } - if obj.obj.Length != nil { - - if *obj.obj.Length < 1 || *obj.obj.Length > 1 { - vObj.validationErrors = append( - vObj.validationErrors, - fmt.Sprintf("1 <= PatternFlowIpv4TosReliabilityMetricTag.Length <= 1 but Got %d", *obj.obj.Length)) - } + if obj.obj.FourByteAsNumber != nil { + obj.FourByteAsNumber().validateObj(vObj, set_default) } } -func (obj *patternFlowIpv4TosReliabilityMetricTag) setDefault() { - if obj.obj.Offset == nil { - obj.SetOffset(0) - } - if obj.obj.Length == nil { - obj.SetLength(1) +func (obj *flowRSVPType1ExplicitRouteSubobjectsType) setDefault() { + if obj.obj.Choice == nil { + obj.SetChoice(FlowRSVPType1ExplicitRouteSubobjectsTypeChoice.IPV4_PREFIX) + } } -// ***** PatternFlowIpv4TosMonetaryCounter ***** -type patternFlowIpv4TosMonetaryCounter struct { +// ***** PatternFlowRSVPPathLabelRequestWithoutLabelRangeReservedCounter ***** +type patternFlowRSVPPathLabelRequestWithoutLabelRangeReservedCounter struct { validation - obj *otg.PatternFlowIpv4TosMonetaryCounter + obj *otg.PatternFlowRSVPPathLabelRequestWithoutLabelRangeReservedCounter } -func NewPatternFlowIpv4TosMonetaryCounter() PatternFlowIpv4TosMonetaryCounter { - obj := patternFlowIpv4TosMonetaryCounter{obj: &otg.PatternFlowIpv4TosMonetaryCounter{}} +func NewPatternFlowRSVPPathLabelRequestWithoutLabelRangeReservedCounter() PatternFlowRSVPPathLabelRequestWithoutLabelRangeReservedCounter { + obj := patternFlowRSVPPathLabelRequestWithoutLabelRangeReservedCounter{obj: &otg.PatternFlowRSVPPathLabelRequestWithoutLabelRangeReservedCounter{}} obj.setDefault() return &obj } -func (obj *patternFlowIpv4TosMonetaryCounter) Msg() *otg.PatternFlowIpv4TosMonetaryCounter { +func (obj *patternFlowRSVPPathLabelRequestWithoutLabelRangeReservedCounter) Msg() *otg.PatternFlowRSVPPathLabelRequestWithoutLabelRangeReservedCounter { return obj.obj } -func (obj *patternFlowIpv4TosMonetaryCounter) SetMsg(msg *otg.PatternFlowIpv4TosMonetaryCounter) PatternFlowIpv4TosMonetaryCounter { +func (obj *patternFlowRSVPPathLabelRequestWithoutLabelRangeReservedCounter) SetMsg(msg *otg.PatternFlowRSVPPathLabelRequestWithoutLabelRangeReservedCounter) PatternFlowRSVPPathLabelRequestWithoutLabelRangeReservedCounter { proto.Merge(obj.obj, msg) return obj } -func (obj *patternFlowIpv4TosMonetaryCounter) ToProto() (*otg.PatternFlowIpv4TosMonetaryCounter, error) { +func (obj *patternFlowRSVPPathLabelRequestWithoutLabelRangeReservedCounter) ToProto() (*otg.PatternFlowRSVPPathLabelRequestWithoutLabelRangeReservedCounter, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -308073,7 +355133,7 @@ func (obj *patternFlowIpv4TosMonetaryCounter) ToProto() (*otg.PatternFlowIpv4Tos return obj.Msg(), nil } -func (obj *patternFlowIpv4TosMonetaryCounter) FromProto(msg *otg.PatternFlowIpv4TosMonetaryCounter) (PatternFlowIpv4TosMonetaryCounter, error) { +func (obj *patternFlowRSVPPathLabelRequestWithoutLabelRangeReservedCounter) FromProto(msg *otg.PatternFlowRSVPPathLabelRequestWithoutLabelRangeReservedCounter) (PatternFlowRSVPPathLabelRequestWithoutLabelRangeReservedCounter, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -308082,7 +355142,7 @@ func (obj *patternFlowIpv4TosMonetaryCounter) FromProto(msg *otg.PatternFlowIpv4 return newObj, nil } -func (obj *patternFlowIpv4TosMonetaryCounter) ToPbText() (string, error) { +func (obj *patternFlowRSVPPathLabelRequestWithoutLabelRangeReservedCounter) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -308094,7 +355154,7 @@ func (obj *patternFlowIpv4TosMonetaryCounter) ToPbText() (string, error) { return string(protoMarshal), nil } -func (obj *patternFlowIpv4TosMonetaryCounter) FromPbText(value string) error { +func (obj *patternFlowRSVPPathLabelRequestWithoutLabelRangeReservedCounter) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj @@ -308107,7 +355167,7 @@ func (obj *patternFlowIpv4TosMonetaryCounter) FromPbText(value string) error { return retObj } -func (obj *patternFlowIpv4TosMonetaryCounter) ToYaml() (string, error) { +func (obj *patternFlowRSVPPathLabelRequestWithoutLabelRangeReservedCounter) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -308128,7 +355188,7 @@ func (obj *patternFlowIpv4TosMonetaryCounter) ToYaml() (string, error) { return string(data), nil } -func (obj *patternFlowIpv4TosMonetaryCounter) FromYaml(value string) error { +func (obj *patternFlowRSVPPathLabelRequestWithoutLabelRangeReservedCounter) FromYaml(value string) error { if value == "" { value = "{}" } @@ -308153,7 +355213,7 @@ func (obj *patternFlowIpv4TosMonetaryCounter) FromYaml(value string) error { return nil } -func (obj *patternFlowIpv4TosMonetaryCounter) ToJson() (string, error) { +func (obj *patternFlowRSVPPathLabelRequestWithoutLabelRangeReservedCounter) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -308171,7 +355231,7 @@ func (obj *patternFlowIpv4TosMonetaryCounter) ToJson() (string, error) { return string(data), nil } -func (obj *patternFlowIpv4TosMonetaryCounter) FromJson(value string) error { +func (obj *patternFlowRSVPPathLabelRequestWithoutLabelRangeReservedCounter) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -308192,19 +355252,19 @@ func (obj *patternFlowIpv4TosMonetaryCounter) FromJson(value string) error { return nil } -func (obj *patternFlowIpv4TosMonetaryCounter) validateToAndFrom() error { +func (obj *patternFlowRSVPPathLabelRequestWithoutLabelRangeReservedCounter) validateToAndFrom() error { // emptyVars() obj.validateObj(&obj.validation, true) return obj.validationResult() } -func (obj *patternFlowIpv4TosMonetaryCounter) Validate() error { +func (obj *patternFlowRSVPPathLabelRequestWithoutLabelRangeReservedCounter) Validate() error { // emptyVars() obj.validateObj(&obj.validation, false) return obj.validationResult() } -func (obj *patternFlowIpv4TosMonetaryCounter) String() string { +func (obj *patternFlowRSVPPathLabelRequestWithoutLabelRangeReservedCounter) String() string { str, err := obj.ToYaml() if err != nil { return err.Error() @@ -308212,12 +355272,12 @@ func (obj *patternFlowIpv4TosMonetaryCounter) String() string { return str } -func (obj *patternFlowIpv4TosMonetaryCounter) Clone() (PatternFlowIpv4TosMonetaryCounter, error) { +func (obj *patternFlowRSVPPathLabelRequestWithoutLabelRangeReservedCounter) Clone() (PatternFlowRSVPPathLabelRequestWithoutLabelRangeReservedCounter, error) { vErr := obj.Validate() if vErr != nil { return nil, vErr } - newObj := NewPatternFlowIpv4TosMonetaryCounter() + newObj := NewPatternFlowRSVPPathLabelRequestWithoutLabelRangeReservedCounter() data, err := proto.Marshal(obj.Msg()) if err != nil { return nil, err @@ -308229,63 +355289,63 @@ func (obj *patternFlowIpv4TosMonetaryCounter) Clone() (PatternFlowIpv4TosMonetar return newObj, nil } -// PatternFlowIpv4TosMonetaryCounter is integer counter pattern -type PatternFlowIpv4TosMonetaryCounter interface { +// PatternFlowRSVPPathLabelRequestWithoutLabelRangeReservedCounter is integer counter pattern +type PatternFlowRSVPPathLabelRequestWithoutLabelRangeReservedCounter interface { Validation - // Msg marshals PatternFlowIpv4TosMonetaryCounter to protobuf object *otg.PatternFlowIpv4TosMonetaryCounter + // Msg marshals PatternFlowRSVPPathLabelRequestWithoutLabelRangeReservedCounter to protobuf object *otg.PatternFlowRSVPPathLabelRequestWithoutLabelRangeReservedCounter // and doesn't set defaults - Msg() *otg.PatternFlowIpv4TosMonetaryCounter - // SetMsg unmarshals PatternFlowIpv4TosMonetaryCounter from protobuf object *otg.PatternFlowIpv4TosMonetaryCounter + Msg() *otg.PatternFlowRSVPPathLabelRequestWithoutLabelRangeReservedCounter + // SetMsg unmarshals PatternFlowRSVPPathLabelRequestWithoutLabelRangeReservedCounter from protobuf object *otg.PatternFlowRSVPPathLabelRequestWithoutLabelRangeReservedCounter // and doesn't set defaults - SetMsg(*otg.PatternFlowIpv4TosMonetaryCounter) PatternFlowIpv4TosMonetaryCounter - // ToProto marshals PatternFlowIpv4TosMonetaryCounter to protobuf object *otg.PatternFlowIpv4TosMonetaryCounter - ToProto() (*otg.PatternFlowIpv4TosMonetaryCounter, error) - // ToPbText marshals PatternFlowIpv4TosMonetaryCounter to protobuf text + SetMsg(*otg.PatternFlowRSVPPathLabelRequestWithoutLabelRangeReservedCounter) PatternFlowRSVPPathLabelRequestWithoutLabelRangeReservedCounter + // ToProto marshals PatternFlowRSVPPathLabelRequestWithoutLabelRangeReservedCounter to protobuf object *otg.PatternFlowRSVPPathLabelRequestWithoutLabelRangeReservedCounter + ToProto() (*otg.PatternFlowRSVPPathLabelRequestWithoutLabelRangeReservedCounter, error) + // ToPbText marshals PatternFlowRSVPPathLabelRequestWithoutLabelRangeReservedCounter to protobuf text ToPbText() (string, error) - // ToYaml marshals PatternFlowIpv4TosMonetaryCounter to YAML text + // ToYaml marshals PatternFlowRSVPPathLabelRequestWithoutLabelRangeReservedCounter to YAML text ToYaml() (string, error) - // ToJson marshals PatternFlowIpv4TosMonetaryCounter to JSON text + // ToJson marshals PatternFlowRSVPPathLabelRequestWithoutLabelRangeReservedCounter to JSON text ToJson() (string, error) - // FromProto unmarshals PatternFlowIpv4TosMonetaryCounter from protobuf object *otg.PatternFlowIpv4TosMonetaryCounter - FromProto(msg *otg.PatternFlowIpv4TosMonetaryCounter) (PatternFlowIpv4TosMonetaryCounter, error) - // FromPbText unmarshals PatternFlowIpv4TosMonetaryCounter from protobuf text + // FromProto unmarshals PatternFlowRSVPPathLabelRequestWithoutLabelRangeReservedCounter from protobuf object *otg.PatternFlowRSVPPathLabelRequestWithoutLabelRangeReservedCounter + FromProto(msg *otg.PatternFlowRSVPPathLabelRequestWithoutLabelRangeReservedCounter) (PatternFlowRSVPPathLabelRequestWithoutLabelRangeReservedCounter, error) + // FromPbText unmarshals PatternFlowRSVPPathLabelRequestWithoutLabelRangeReservedCounter from protobuf text FromPbText(value string) error - // FromYaml unmarshals PatternFlowIpv4TosMonetaryCounter from YAML text + // FromYaml unmarshals PatternFlowRSVPPathLabelRequestWithoutLabelRangeReservedCounter from YAML text FromYaml(value string) error - // FromJson unmarshals PatternFlowIpv4TosMonetaryCounter from JSON text + // FromJson unmarshals PatternFlowRSVPPathLabelRequestWithoutLabelRangeReservedCounter from JSON text FromJson(value string) error - // Validate validates PatternFlowIpv4TosMonetaryCounter + // Validate validates PatternFlowRSVPPathLabelRequestWithoutLabelRangeReservedCounter Validate() error // A stringer function String() string // Clones the object - Clone() (PatternFlowIpv4TosMonetaryCounter, error) + Clone() (PatternFlowRSVPPathLabelRequestWithoutLabelRangeReservedCounter, error) validateToAndFrom() error validateObj(vObj *validation, set_default bool) setDefault() - // Start returns uint32, set in PatternFlowIpv4TosMonetaryCounter. + // Start returns uint32, set in PatternFlowRSVPPathLabelRequestWithoutLabelRangeReservedCounter. Start() uint32 - // SetStart assigns uint32 provided by user to PatternFlowIpv4TosMonetaryCounter - SetStart(value uint32) PatternFlowIpv4TosMonetaryCounter - // HasStart checks if Start has been set in PatternFlowIpv4TosMonetaryCounter + // SetStart assigns uint32 provided by user to PatternFlowRSVPPathLabelRequestWithoutLabelRangeReservedCounter + SetStart(value uint32) PatternFlowRSVPPathLabelRequestWithoutLabelRangeReservedCounter + // HasStart checks if Start has been set in PatternFlowRSVPPathLabelRequestWithoutLabelRangeReservedCounter HasStart() bool - // Step returns uint32, set in PatternFlowIpv4TosMonetaryCounter. + // Step returns uint32, set in PatternFlowRSVPPathLabelRequestWithoutLabelRangeReservedCounter. Step() uint32 - // SetStep assigns uint32 provided by user to PatternFlowIpv4TosMonetaryCounter - SetStep(value uint32) PatternFlowIpv4TosMonetaryCounter - // HasStep checks if Step has been set in PatternFlowIpv4TosMonetaryCounter + // SetStep assigns uint32 provided by user to PatternFlowRSVPPathLabelRequestWithoutLabelRangeReservedCounter + SetStep(value uint32) PatternFlowRSVPPathLabelRequestWithoutLabelRangeReservedCounter + // HasStep checks if Step has been set in PatternFlowRSVPPathLabelRequestWithoutLabelRangeReservedCounter HasStep() bool - // Count returns uint32, set in PatternFlowIpv4TosMonetaryCounter. + // Count returns uint32, set in PatternFlowRSVPPathLabelRequestWithoutLabelRangeReservedCounter. Count() uint32 - // SetCount assigns uint32 provided by user to PatternFlowIpv4TosMonetaryCounter - SetCount(value uint32) PatternFlowIpv4TosMonetaryCounter - // HasCount checks if Count has been set in PatternFlowIpv4TosMonetaryCounter + // SetCount assigns uint32 provided by user to PatternFlowRSVPPathLabelRequestWithoutLabelRangeReservedCounter + SetCount(value uint32) PatternFlowRSVPPathLabelRequestWithoutLabelRangeReservedCounter + // HasCount checks if Count has been set in PatternFlowRSVPPathLabelRequestWithoutLabelRangeReservedCounter HasCount() bool } // description is TBD // Start returns a uint32 -func (obj *patternFlowIpv4TosMonetaryCounter) Start() uint32 { +func (obj *patternFlowRSVPPathLabelRequestWithoutLabelRangeReservedCounter) Start() uint32 { return *obj.obj.Start @@ -308293,13 +355353,13 @@ func (obj *patternFlowIpv4TosMonetaryCounter) Start() uint32 { // description is TBD // Start returns a uint32 -func (obj *patternFlowIpv4TosMonetaryCounter) HasStart() bool { +func (obj *patternFlowRSVPPathLabelRequestWithoutLabelRangeReservedCounter) HasStart() bool { return obj.obj.Start != nil } // description is TBD -// SetStart sets the uint32 value in the PatternFlowIpv4TosMonetaryCounter object -func (obj *patternFlowIpv4TosMonetaryCounter) SetStart(value uint32) PatternFlowIpv4TosMonetaryCounter { +// SetStart sets the uint32 value in the PatternFlowRSVPPathLabelRequestWithoutLabelRangeReservedCounter object +func (obj *patternFlowRSVPPathLabelRequestWithoutLabelRangeReservedCounter) SetStart(value uint32) PatternFlowRSVPPathLabelRequestWithoutLabelRangeReservedCounter { obj.obj.Start = &value return obj @@ -308307,7 +355367,7 @@ func (obj *patternFlowIpv4TosMonetaryCounter) SetStart(value uint32) PatternFlow // description is TBD // Step returns a uint32 -func (obj *patternFlowIpv4TosMonetaryCounter) Step() uint32 { +func (obj *patternFlowRSVPPathLabelRequestWithoutLabelRangeReservedCounter) Step() uint32 { return *obj.obj.Step @@ -308315,13 +355375,13 @@ func (obj *patternFlowIpv4TosMonetaryCounter) Step() uint32 { // description is TBD // Step returns a uint32 -func (obj *patternFlowIpv4TosMonetaryCounter) HasStep() bool { +func (obj *patternFlowRSVPPathLabelRequestWithoutLabelRangeReservedCounter) HasStep() bool { return obj.obj.Step != nil } // description is TBD -// SetStep sets the uint32 value in the PatternFlowIpv4TosMonetaryCounter object -func (obj *patternFlowIpv4TosMonetaryCounter) SetStep(value uint32) PatternFlowIpv4TosMonetaryCounter { +// SetStep sets the uint32 value in the PatternFlowRSVPPathLabelRequestWithoutLabelRangeReservedCounter object +func (obj *patternFlowRSVPPathLabelRequestWithoutLabelRangeReservedCounter) SetStep(value uint32) PatternFlowRSVPPathLabelRequestWithoutLabelRangeReservedCounter { obj.obj.Step = &value return obj @@ -308329,7 +355389,7 @@ func (obj *patternFlowIpv4TosMonetaryCounter) SetStep(value uint32) PatternFlowI // description is TBD // Count returns a uint32 -func (obj *patternFlowIpv4TosMonetaryCounter) Count() uint32 { +func (obj *patternFlowRSVPPathLabelRequestWithoutLabelRangeReservedCounter) Count() uint32 { return *obj.obj.Count @@ -308337,56 +355397,56 @@ func (obj *patternFlowIpv4TosMonetaryCounter) Count() uint32 { // description is TBD // Count returns a uint32 -func (obj *patternFlowIpv4TosMonetaryCounter) HasCount() bool { +func (obj *patternFlowRSVPPathLabelRequestWithoutLabelRangeReservedCounter) HasCount() bool { return obj.obj.Count != nil } // description is TBD -// SetCount sets the uint32 value in the PatternFlowIpv4TosMonetaryCounter object -func (obj *patternFlowIpv4TosMonetaryCounter) SetCount(value uint32) PatternFlowIpv4TosMonetaryCounter { +// SetCount sets the uint32 value in the PatternFlowRSVPPathLabelRequestWithoutLabelRangeReservedCounter object +func (obj *patternFlowRSVPPathLabelRequestWithoutLabelRangeReservedCounter) SetCount(value uint32) PatternFlowRSVPPathLabelRequestWithoutLabelRangeReservedCounter { obj.obj.Count = &value return obj } -func (obj *patternFlowIpv4TosMonetaryCounter) validateObj(vObj *validation, set_default bool) { +func (obj *patternFlowRSVPPathLabelRequestWithoutLabelRangeReservedCounter) validateObj(vObj *validation, set_default bool) { if set_default { obj.setDefault() } if obj.obj.Start != nil { - if *obj.obj.Start > 1 { + if *obj.obj.Start > 65535 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowIpv4TosMonetaryCounter.Start <= 1 but Got %d", *obj.obj.Start)) + fmt.Sprintf("0 <= PatternFlowRSVPPathLabelRequestWithoutLabelRangeReservedCounter.Start <= 65535 but Got %d", *obj.obj.Start)) } } if obj.obj.Step != nil { - if *obj.obj.Step > 1 { + if *obj.obj.Step > 65535 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowIpv4TosMonetaryCounter.Step <= 1 but Got %d", *obj.obj.Step)) + fmt.Sprintf("0 <= PatternFlowRSVPPathLabelRequestWithoutLabelRangeReservedCounter.Step <= 65535 but Got %d", *obj.obj.Step)) } } if obj.obj.Count != nil { - if *obj.obj.Count > 1 { + if *obj.obj.Count > 65535 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowIpv4TosMonetaryCounter.Count <= 1 but Got %d", *obj.obj.Count)) + fmt.Sprintf("0 <= PatternFlowRSVPPathLabelRequestWithoutLabelRangeReservedCounter.Count <= 65535 but Got %d", *obj.obj.Count)) } } } -func (obj *patternFlowIpv4TosMonetaryCounter) setDefault() { +func (obj *patternFlowRSVPPathLabelRequestWithoutLabelRangeReservedCounter) setDefault() { if obj.obj.Start == nil { obj.SetStart(0) } @@ -308399,29 +355459,29 @@ func (obj *patternFlowIpv4TosMonetaryCounter) setDefault() { } -// ***** PatternFlowIpv4TosMonetaryMetricTag ***** -type patternFlowIpv4TosMonetaryMetricTag struct { +// ***** PatternFlowRSVPPathLabelRequestWithoutLabelRangeL3PidCounter ***** +type patternFlowRSVPPathLabelRequestWithoutLabelRangeL3PidCounter struct { validation - obj *otg.PatternFlowIpv4TosMonetaryMetricTag + obj *otg.PatternFlowRSVPPathLabelRequestWithoutLabelRangeL3PidCounter } -func NewPatternFlowIpv4TosMonetaryMetricTag() PatternFlowIpv4TosMonetaryMetricTag { - obj := patternFlowIpv4TosMonetaryMetricTag{obj: &otg.PatternFlowIpv4TosMonetaryMetricTag{}} +func NewPatternFlowRSVPPathLabelRequestWithoutLabelRangeL3PidCounter() PatternFlowRSVPPathLabelRequestWithoutLabelRangeL3PidCounter { + obj := patternFlowRSVPPathLabelRequestWithoutLabelRangeL3PidCounter{obj: &otg.PatternFlowRSVPPathLabelRequestWithoutLabelRangeL3PidCounter{}} obj.setDefault() return &obj } -func (obj *patternFlowIpv4TosMonetaryMetricTag) Msg() *otg.PatternFlowIpv4TosMonetaryMetricTag { +func (obj *patternFlowRSVPPathLabelRequestWithoutLabelRangeL3PidCounter) Msg() *otg.PatternFlowRSVPPathLabelRequestWithoutLabelRangeL3PidCounter { return obj.obj } -func (obj *patternFlowIpv4TosMonetaryMetricTag) SetMsg(msg *otg.PatternFlowIpv4TosMonetaryMetricTag) PatternFlowIpv4TosMonetaryMetricTag { +func (obj *patternFlowRSVPPathLabelRequestWithoutLabelRangeL3PidCounter) SetMsg(msg *otg.PatternFlowRSVPPathLabelRequestWithoutLabelRangeL3PidCounter) PatternFlowRSVPPathLabelRequestWithoutLabelRangeL3PidCounter { proto.Merge(obj.obj, msg) return obj } -func (obj *patternFlowIpv4TosMonetaryMetricTag) ToProto() (*otg.PatternFlowIpv4TosMonetaryMetricTag, error) { +func (obj *patternFlowRSVPPathLabelRequestWithoutLabelRangeL3PidCounter) ToProto() (*otg.PatternFlowRSVPPathLabelRequestWithoutLabelRangeL3PidCounter, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -308429,7 +355489,7 @@ func (obj *patternFlowIpv4TosMonetaryMetricTag) ToProto() (*otg.PatternFlowIpv4T return obj.Msg(), nil } -func (obj *patternFlowIpv4TosMonetaryMetricTag) FromProto(msg *otg.PatternFlowIpv4TosMonetaryMetricTag) (PatternFlowIpv4TosMonetaryMetricTag, error) { +func (obj *patternFlowRSVPPathLabelRequestWithoutLabelRangeL3PidCounter) FromProto(msg *otg.PatternFlowRSVPPathLabelRequestWithoutLabelRangeL3PidCounter) (PatternFlowRSVPPathLabelRequestWithoutLabelRangeL3PidCounter, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -308438,7 +355498,7 @@ func (obj *patternFlowIpv4TosMonetaryMetricTag) FromProto(msg *otg.PatternFlowIp return newObj, nil } -func (obj *patternFlowIpv4TosMonetaryMetricTag) ToPbText() (string, error) { +func (obj *patternFlowRSVPPathLabelRequestWithoutLabelRangeL3PidCounter) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -308450,7 +355510,7 @@ func (obj *patternFlowIpv4TosMonetaryMetricTag) ToPbText() (string, error) { return string(protoMarshal), nil } -func (obj *patternFlowIpv4TosMonetaryMetricTag) FromPbText(value string) error { +func (obj *patternFlowRSVPPathLabelRequestWithoutLabelRangeL3PidCounter) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj @@ -308463,7 +355523,7 @@ func (obj *patternFlowIpv4TosMonetaryMetricTag) FromPbText(value string) error { return retObj } -func (obj *patternFlowIpv4TosMonetaryMetricTag) ToYaml() (string, error) { +func (obj *patternFlowRSVPPathLabelRequestWithoutLabelRangeL3PidCounter) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -308484,7 +355544,7 @@ func (obj *patternFlowIpv4TosMonetaryMetricTag) ToYaml() (string, error) { return string(data), nil } -func (obj *patternFlowIpv4TosMonetaryMetricTag) FromYaml(value string) error { +func (obj *patternFlowRSVPPathLabelRequestWithoutLabelRangeL3PidCounter) FromYaml(value string) error { if value == "" { value = "{}" } @@ -308509,7 +355569,7 @@ func (obj *patternFlowIpv4TosMonetaryMetricTag) FromYaml(value string) error { return nil } -func (obj *patternFlowIpv4TosMonetaryMetricTag) ToJson() (string, error) { +func (obj *patternFlowRSVPPathLabelRequestWithoutLabelRangeL3PidCounter) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -308527,7 +355587,7 @@ func (obj *patternFlowIpv4TosMonetaryMetricTag) ToJson() (string, error) { return string(data), nil } -func (obj *patternFlowIpv4TosMonetaryMetricTag) FromJson(value string) error { +func (obj *patternFlowRSVPPathLabelRequestWithoutLabelRangeL3PidCounter) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -308548,19 +355608,19 @@ func (obj *patternFlowIpv4TosMonetaryMetricTag) FromJson(value string) error { return nil } -func (obj *patternFlowIpv4TosMonetaryMetricTag) validateToAndFrom() error { +func (obj *patternFlowRSVPPathLabelRequestWithoutLabelRangeL3PidCounter) validateToAndFrom() error { // emptyVars() obj.validateObj(&obj.validation, true) return obj.validationResult() } -func (obj *patternFlowIpv4TosMonetaryMetricTag) Validate() error { +func (obj *patternFlowRSVPPathLabelRequestWithoutLabelRangeL3PidCounter) Validate() error { // emptyVars() obj.validateObj(&obj.validation, false) return obj.validationResult() } -func (obj *patternFlowIpv4TosMonetaryMetricTag) String() string { +func (obj *patternFlowRSVPPathLabelRequestWithoutLabelRangeL3PidCounter) String() string { str, err := obj.ToYaml() if err != nil { return err.Error() @@ -308568,12 +355628,12 @@ func (obj *patternFlowIpv4TosMonetaryMetricTag) String() string { return str } -func (obj *patternFlowIpv4TosMonetaryMetricTag) Clone() (PatternFlowIpv4TosMonetaryMetricTag, error) { +func (obj *patternFlowRSVPPathLabelRequestWithoutLabelRangeL3PidCounter) Clone() (PatternFlowRSVPPathLabelRequestWithoutLabelRangeL3PidCounter, error) { vErr := obj.Validate() if vErr != nil { return nil, vErr } - newObj := NewPatternFlowIpv4TosMonetaryMetricTag() + newObj := NewPatternFlowRSVPPathLabelRequestWithoutLabelRangeL3PidCounter() data, err := proto.Marshal(obj.Msg()) if err != nil { return nil, err @@ -308585,183 +355645,199 @@ func (obj *patternFlowIpv4TosMonetaryMetricTag) Clone() (PatternFlowIpv4TosMonet return newObj, nil } -// PatternFlowIpv4TosMonetaryMetricTag is metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. -type PatternFlowIpv4TosMonetaryMetricTag interface { +// PatternFlowRSVPPathLabelRequestWithoutLabelRangeL3PidCounter is integer counter pattern +type PatternFlowRSVPPathLabelRequestWithoutLabelRangeL3PidCounter interface { Validation - // Msg marshals PatternFlowIpv4TosMonetaryMetricTag to protobuf object *otg.PatternFlowIpv4TosMonetaryMetricTag + // Msg marshals PatternFlowRSVPPathLabelRequestWithoutLabelRangeL3PidCounter to protobuf object *otg.PatternFlowRSVPPathLabelRequestWithoutLabelRangeL3PidCounter // and doesn't set defaults - Msg() *otg.PatternFlowIpv4TosMonetaryMetricTag - // SetMsg unmarshals PatternFlowIpv4TosMonetaryMetricTag from protobuf object *otg.PatternFlowIpv4TosMonetaryMetricTag + Msg() *otg.PatternFlowRSVPPathLabelRequestWithoutLabelRangeL3PidCounter + // SetMsg unmarshals PatternFlowRSVPPathLabelRequestWithoutLabelRangeL3PidCounter from protobuf object *otg.PatternFlowRSVPPathLabelRequestWithoutLabelRangeL3PidCounter // and doesn't set defaults - SetMsg(*otg.PatternFlowIpv4TosMonetaryMetricTag) PatternFlowIpv4TosMonetaryMetricTag - // ToProto marshals PatternFlowIpv4TosMonetaryMetricTag to protobuf object *otg.PatternFlowIpv4TosMonetaryMetricTag - ToProto() (*otg.PatternFlowIpv4TosMonetaryMetricTag, error) - // ToPbText marshals PatternFlowIpv4TosMonetaryMetricTag to protobuf text + SetMsg(*otg.PatternFlowRSVPPathLabelRequestWithoutLabelRangeL3PidCounter) PatternFlowRSVPPathLabelRequestWithoutLabelRangeL3PidCounter + // ToProto marshals PatternFlowRSVPPathLabelRequestWithoutLabelRangeL3PidCounter to protobuf object *otg.PatternFlowRSVPPathLabelRequestWithoutLabelRangeL3PidCounter + ToProto() (*otg.PatternFlowRSVPPathLabelRequestWithoutLabelRangeL3PidCounter, error) + // ToPbText marshals PatternFlowRSVPPathLabelRequestWithoutLabelRangeL3PidCounter to protobuf text ToPbText() (string, error) - // ToYaml marshals PatternFlowIpv4TosMonetaryMetricTag to YAML text + // ToYaml marshals PatternFlowRSVPPathLabelRequestWithoutLabelRangeL3PidCounter to YAML text ToYaml() (string, error) - // ToJson marshals PatternFlowIpv4TosMonetaryMetricTag to JSON text + // ToJson marshals PatternFlowRSVPPathLabelRequestWithoutLabelRangeL3PidCounter to JSON text ToJson() (string, error) - // FromProto unmarshals PatternFlowIpv4TosMonetaryMetricTag from protobuf object *otg.PatternFlowIpv4TosMonetaryMetricTag - FromProto(msg *otg.PatternFlowIpv4TosMonetaryMetricTag) (PatternFlowIpv4TosMonetaryMetricTag, error) - // FromPbText unmarshals PatternFlowIpv4TosMonetaryMetricTag from protobuf text + // FromProto unmarshals PatternFlowRSVPPathLabelRequestWithoutLabelRangeL3PidCounter from protobuf object *otg.PatternFlowRSVPPathLabelRequestWithoutLabelRangeL3PidCounter + FromProto(msg *otg.PatternFlowRSVPPathLabelRequestWithoutLabelRangeL3PidCounter) (PatternFlowRSVPPathLabelRequestWithoutLabelRangeL3PidCounter, error) + // FromPbText unmarshals PatternFlowRSVPPathLabelRequestWithoutLabelRangeL3PidCounter from protobuf text FromPbText(value string) error - // FromYaml unmarshals PatternFlowIpv4TosMonetaryMetricTag from YAML text + // FromYaml unmarshals PatternFlowRSVPPathLabelRequestWithoutLabelRangeL3PidCounter from YAML text FromYaml(value string) error - // FromJson unmarshals PatternFlowIpv4TosMonetaryMetricTag from JSON text + // FromJson unmarshals PatternFlowRSVPPathLabelRequestWithoutLabelRangeL3PidCounter from JSON text FromJson(value string) error - // Validate validates PatternFlowIpv4TosMonetaryMetricTag + // Validate validates PatternFlowRSVPPathLabelRequestWithoutLabelRangeL3PidCounter Validate() error // A stringer function String() string // Clones the object - Clone() (PatternFlowIpv4TosMonetaryMetricTag, error) + Clone() (PatternFlowRSVPPathLabelRequestWithoutLabelRangeL3PidCounter, error) validateToAndFrom() error validateObj(vObj *validation, set_default bool) setDefault() - // Name returns string, set in PatternFlowIpv4TosMonetaryMetricTag. - Name() string - // SetName assigns string provided by user to PatternFlowIpv4TosMonetaryMetricTag - SetName(value string) PatternFlowIpv4TosMonetaryMetricTag - // Offset returns uint32, set in PatternFlowIpv4TosMonetaryMetricTag. - Offset() uint32 - // SetOffset assigns uint32 provided by user to PatternFlowIpv4TosMonetaryMetricTag - SetOffset(value uint32) PatternFlowIpv4TosMonetaryMetricTag - // HasOffset checks if Offset has been set in PatternFlowIpv4TosMonetaryMetricTag - HasOffset() bool - // Length returns uint32, set in PatternFlowIpv4TosMonetaryMetricTag. - Length() uint32 - // SetLength assigns uint32 provided by user to PatternFlowIpv4TosMonetaryMetricTag - SetLength(value uint32) PatternFlowIpv4TosMonetaryMetricTag - // HasLength checks if Length has been set in PatternFlowIpv4TosMonetaryMetricTag - HasLength() bool + // Start returns uint32, set in PatternFlowRSVPPathLabelRequestWithoutLabelRangeL3PidCounter. + Start() uint32 + // SetStart assigns uint32 provided by user to PatternFlowRSVPPathLabelRequestWithoutLabelRangeL3PidCounter + SetStart(value uint32) PatternFlowRSVPPathLabelRequestWithoutLabelRangeL3PidCounter + // HasStart checks if Start has been set in PatternFlowRSVPPathLabelRequestWithoutLabelRangeL3PidCounter + HasStart() bool + // Step returns uint32, set in PatternFlowRSVPPathLabelRequestWithoutLabelRangeL3PidCounter. + Step() uint32 + // SetStep assigns uint32 provided by user to PatternFlowRSVPPathLabelRequestWithoutLabelRangeL3PidCounter + SetStep(value uint32) PatternFlowRSVPPathLabelRequestWithoutLabelRangeL3PidCounter + // HasStep checks if Step has been set in PatternFlowRSVPPathLabelRequestWithoutLabelRangeL3PidCounter + HasStep() bool + // Count returns uint32, set in PatternFlowRSVPPathLabelRequestWithoutLabelRangeL3PidCounter. + Count() uint32 + // SetCount assigns uint32 provided by user to PatternFlowRSVPPathLabelRequestWithoutLabelRangeL3PidCounter + SetCount(value uint32) PatternFlowRSVPPathLabelRequestWithoutLabelRangeL3PidCounter + // HasCount checks if Count has been set in PatternFlowRSVPPathLabelRequestWithoutLabelRangeL3PidCounter + HasCount() bool } -// Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field -// Name returns a string -func (obj *patternFlowIpv4TosMonetaryMetricTag) Name() string { +// description is TBD +// Start returns a uint32 +func (obj *patternFlowRSVPPathLabelRequestWithoutLabelRangeL3PidCounter) Start() uint32 { - return *obj.obj.Name + return *obj.obj.Start } -// Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field -// SetName sets the string value in the PatternFlowIpv4TosMonetaryMetricTag object -func (obj *patternFlowIpv4TosMonetaryMetricTag) SetName(value string) PatternFlowIpv4TosMonetaryMetricTag { +// description is TBD +// Start returns a uint32 +func (obj *patternFlowRSVPPathLabelRequestWithoutLabelRangeL3PidCounter) HasStart() bool { + return obj.obj.Start != nil +} - obj.obj.Name = &value +// description is TBD +// SetStart sets the uint32 value in the PatternFlowRSVPPathLabelRequestWithoutLabelRangeL3PidCounter object +func (obj *patternFlowRSVPPathLabelRequestWithoutLabelRangeL3PidCounter) SetStart(value uint32) PatternFlowRSVPPathLabelRequestWithoutLabelRangeL3PidCounter { + + obj.obj.Start = &value return obj } -// Offset in bits relative to start of corresponding header field -// Offset returns a uint32 -func (obj *patternFlowIpv4TosMonetaryMetricTag) Offset() uint32 { +// description is TBD +// Step returns a uint32 +func (obj *patternFlowRSVPPathLabelRequestWithoutLabelRangeL3PidCounter) Step() uint32 { - return *obj.obj.Offset + return *obj.obj.Step } -// Offset in bits relative to start of corresponding header field -// Offset returns a uint32 -func (obj *patternFlowIpv4TosMonetaryMetricTag) HasOffset() bool { - return obj.obj.Offset != nil +// description is TBD +// Step returns a uint32 +func (obj *patternFlowRSVPPathLabelRequestWithoutLabelRangeL3PidCounter) HasStep() bool { + return obj.obj.Step != nil } -// Offset in bits relative to start of corresponding header field -// SetOffset sets the uint32 value in the PatternFlowIpv4TosMonetaryMetricTag object -func (obj *patternFlowIpv4TosMonetaryMetricTag) SetOffset(value uint32) PatternFlowIpv4TosMonetaryMetricTag { +// description is TBD +// SetStep sets the uint32 value in the PatternFlowRSVPPathLabelRequestWithoutLabelRangeL3PidCounter object +func (obj *patternFlowRSVPPathLabelRequestWithoutLabelRangeL3PidCounter) SetStep(value uint32) PatternFlowRSVPPathLabelRequestWithoutLabelRangeL3PidCounter { - obj.obj.Offset = &value + obj.obj.Step = &value return obj } -// Number of bits to track for metrics starting from configured offset of corresponding header field -// Length returns a uint32 -func (obj *patternFlowIpv4TosMonetaryMetricTag) Length() uint32 { +// description is TBD +// Count returns a uint32 +func (obj *patternFlowRSVPPathLabelRequestWithoutLabelRangeL3PidCounter) Count() uint32 { - return *obj.obj.Length + return *obj.obj.Count } -// Number of bits to track for metrics starting from configured offset of corresponding header field -// Length returns a uint32 -func (obj *patternFlowIpv4TosMonetaryMetricTag) HasLength() bool { - return obj.obj.Length != nil +// description is TBD +// Count returns a uint32 +func (obj *patternFlowRSVPPathLabelRequestWithoutLabelRangeL3PidCounter) HasCount() bool { + return obj.obj.Count != nil } -// Number of bits to track for metrics starting from configured offset of corresponding header field -// SetLength sets the uint32 value in the PatternFlowIpv4TosMonetaryMetricTag object -func (obj *patternFlowIpv4TosMonetaryMetricTag) SetLength(value uint32) PatternFlowIpv4TosMonetaryMetricTag { +// description is TBD +// SetCount sets the uint32 value in the PatternFlowRSVPPathLabelRequestWithoutLabelRangeL3PidCounter object +func (obj *patternFlowRSVPPathLabelRequestWithoutLabelRangeL3PidCounter) SetCount(value uint32) PatternFlowRSVPPathLabelRequestWithoutLabelRangeL3PidCounter { - obj.obj.Length = &value + obj.obj.Count = &value return obj } -func (obj *patternFlowIpv4TosMonetaryMetricTag) validateObj(vObj *validation, set_default bool) { +func (obj *patternFlowRSVPPathLabelRequestWithoutLabelRangeL3PidCounter) validateObj(vObj *validation, set_default bool) { if set_default { obj.setDefault() } - // Name is required - if obj.obj.Name == nil { - vObj.validationErrors = append(vObj.validationErrors, "Name is required field on interface PatternFlowIpv4TosMonetaryMetricTag") + if obj.obj.Start != nil { + + if *obj.obj.Start > 65535 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("0 <= PatternFlowRSVPPathLabelRequestWithoutLabelRangeL3PidCounter.Start <= 65535 but Got %d", *obj.obj.Start)) + } + } - if obj.obj.Offset != nil { + if obj.obj.Step != nil { - if *obj.obj.Offset > 0 { + if *obj.obj.Step > 65535 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowIpv4TosMonetaryMetricTag.Offset <= 0 but Got %d", *obj.obj.Offset)) + fmt.Sprintf("0 <= PatternFlowRSVPPathLabelRequestWithoutLabelRangeL3PidCounter.Step <= 65535 but Got %d", *obj.obj.Step)) } } - if obj.obj.Length != nil { + if obj.obj.Count != nil { - if *obj.obj.Length < 1 || *obj.obj.Length > 1 { + if *obj.obj.Count > 65535 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("1 <= PatternFlowIpv4TosMonetaryMetricTag.Length <= 1 but Got %d", *obj.obj.Length)) + fmt.Sprintf("0 <= PatternFlowRSVPPathLabelRequestWithoutLabelRangeL3PidCounter.Count <= 65535 but Got %d", *obj.obj.Count)) } } } -func (obj *patternFlowIpv4TosMonetaryMetricTag) setDefault() { - if obj.obj.Offset == nil { - obj.SetOffset(0) +func (obj *patternFlowRSVPPathLabelRequestWithoutLabelRangeL3PidCounter) setDefault() { + if obj.obj.Start == nil { + obj.SetStart(0) } - if obj.obj.Length == nil { - obj.SetLength(1) + if obj.obj.Step == nil { + obj.SetStep(1) + } + if obj.obj.Count == nil { + obj.SetCount(1) } } -// ***** PatternFlowIpv4TosUnusedCounter ***** -type patternFlowIpv4TosUnusedCounter struct { +// ***** PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Ipv4TunnelSenderAddressCounter ***** +type patternFlowRSVPPathSenderTemplateLspTunnelIpv4Ipv4TunnelSenderAddressCounter struct { validation - obj *otg.PatternFlowIpv4TosUnusedCounter + obj *otg.PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Ipv4TunnelSenderAddressCounter } -func NewPatternFlowIpv4TosUnusedCounter() PatternFlowIpv4TosUnusedCounter { - obj := patternFlowIpv4TosUnusedCounter{obj: &otg.PatternFlowIpv4TosUnusedCounter{}} +func NewPatternFlowRSVPPathSenderTemplateLspTunnelIpv4Ipv4TunnelSenderAddressCounter() PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Ipv4TunnelSenderAddressCounter { + obj := patternFlowRSVPPathSenderTemplateLspTunnelIpv4Ipv4TunnelSenderAddressCounter{obj: &otg.PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Ipv4TunnelSenderAddressCounter{}} obj.setDefault() return &obj } -func (obj *patternFlowIpv4TosUnusedCounter) Msg() *otg.PatternFlowIpv4TosUnusedCounter { +func (obj *patternFlowRSVPPathSenderTemplateLspTunnelIpv4Ipv4TunnelSenderAddressCounter) Msg() *otg.PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Ipv4TunnelSenderAddressCounter { return obj.obj } -func (obj *patternFlowIpv4TosUnusedCounter) SetMsg(msg *otg.PatternFlowIpv4TosUnusedCounter) PatternFlowIpv4TosUnusedCounter { +func (obj *patternFlowRSVPPathSenderTemplateLspTunnelIpv4Ipv4TunnelSenderAddressCounter) SetMsg(msg *otg.PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Ipv4TunnelSenderAddressCounter) PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Ipv4TunnelSenderAddressCounter { proto.Merge(obj.obj, msg) return obj } -func (obj *patternFlowIpv4TosUnusedCounter) ToProto() (*otg.PatternFlowIpv4TosUnusedCounter, error) { +func (obj *patternFlowRSVPPathSenderTemplateLspTunnelIpv4Ipv4TunnelSenderAddressCounter) ToProto() (*otg.PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Ipv4TunnelSenderAddressCounter, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -308769,7 +355845,7 @@ func (obj *patternFlowIpv4TosUnusedCounter) ToProto() (*otg.PatternFlowIpv4TosUn return obj.Msg(), nil } -func (obj *patternFlowIpv4TosUnusedCounter) FromProto(msg *otg.PatternFlowIpv4TosUnusedCounter) (PatternFlowIpv4TosUnusedCounter, error) { +func (obj *patternFlowRSVPPathSenderTemplateLspTunnelIpv4Ipv4TunnelSenderAddressCounter) FromProto(msg *otg.PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Ipv4TunnelSenderAddressCounter) (PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Ipv4TunnelSenderAddressCounter, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -308778,7 +355854,7 @@ func (obj *patternFlowIpv4TosUnusedCounter) FromProto(msg *otg.PatternFlowIpv4To return newObj, nil } -func (obj *patternFlowIpv4TosUnusedCounter) ToPbText() (string, error) { +func (obj *patternFlowRSVPPathSenderTemplateLspTunnelIpv4Ipv4TunnelSenderAddressCounter) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -308790,7 +355866,7 @@ func (obj *patternFlowIpv4TosUnusedCounter) ToPbText() (string, error) { return string(protoMarshal), nil } -func (obj *patternFlowIpv4TosUnusedCounter) FromPbText(value string) error { +func (obj *patternFlowRSVPPathSenderTemplateLspTunnelIpv4Ipv4TunnelSenderAddressCounter) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj @@ -308803,7 +355879,7 @@ func (obj *patternFlowIpv4TosUnusedCounter) FromPbText(value string) error { return retObj } -func (obj *patternFlowIpv4TosUnusedCounter) ToYaml() (string, error) { +func (obj *patternFlowRSVPPathSenderTemplateLspTunnelIpv4Ipv4TunnelSenderAddressCounter) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -308824,7 +355900,7 @@ func (obj *patternFlowIpv4TosUnusedCounter) ToYaml() (string, error) { return string(data), nil } -func (obj *patternFlowIpv4TosUnusedCounter) FromYaml(value string) error { +func (obj *patternFlowRSVPPathSenderTemplateLspTunnelIpv4Ipv4TunnelSenderAddressCounter) FromYaml(value string) error { if value == "" { value = "{}" } @@ -308849,7 +355925,7 @@ func (obj *patternFlowIpv4TosUnusedCounter) FromYaml(value string) error { return nil } -func (obj *patternFlowIpv4TosUnusedCounter) ToJson() (string, error) { +func (obj *patternFlowRSVPPathSenderTemplateLspTunnelIpv4Ipv4TunnelSenderAddressCounter) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -308867,7 +355943,7 @@ func (obj *patternFlowIpv4TosUnusedCounter) ToJson() (string, error) { return string(data), nil } -func (obj *patternFlowIpv4TosUnusedCounter) FromJson(value string) error { +func (obj *patternFlowRSVPPathSenderTemplateLspTunnelIpv4Ipv4TunnelSenderAddressCounter) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -308888,19 +355964,19 @@ func (obj *patternFlowIpv4TosUnusedCounter) FromJson(value string) error { return nil } -func (obj *patternFlowIpv4TosUnusedCounter) validateToAndFrom() error { +func (obj *patternFlowRSVPPathSenderTemplateLspTunnelIpv4Ipv4TunnelSenderAddressCounter) validateToAndFrom() error { // emptyVars() obj.validateObj(&obj.validation, true) return obj.validationResult() } -func (obj *patternFlowIpv4TosUnusedCounter) Validate() error { +func (obj *patternFlowRSVPPathSenderTemplateLspTunnelIpv4Ipv4TunnelSenderAddressCounter) Validate() error { // emptyVars() obj.validateObj(&obj.validation, false) return obj.validationResult() } -func (obj *patternFlowIpv4TosUnusedCounter) String() string { +func (obj *patternFlowRSVPPathSenderTemplateLspTunnelIpv4Ipv4TunnelSenderAddressCounter) String() string { str, err := obj.ToYaml() if err != nil { return err.Error() @@ -308908,12 +355984,12 @@ func (obj *patternFlowIpv4TosUnusedCounter) String() string { return str } -func (obj *patternFlowIpv4TosUnusedCounter) Clone() (PatternFlowIpv4TosUnusedCounter, error) { +func (obj *patternFlowRSVPPathSenderTemplateLspTunnelIpv4Ipv4TunnelSenderAddressCounter) Clone() (PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Ipv4TunnelSenderAddressCounter, error) { vErr := obj.Validate() if vErr != nil { return nil, vErr } - newObj := NewPatternFlowIpv4TosUnusedCounter() + newObj := NewPatternFlowRSVPPathSenderTemplateLspTunnelIpv4Ipv4TunnelSenderAddressCounter() data, err := proto.Marshal(obj.Msg()) if err != nil { return nil, err @@ -308925,99 +356001,99 @@ func (obj *patternFlowIpv4TosUnusedCounter) Clone() (PatternFlowIpv4TosUnusedCou return newObj, nil } -// PatternFlowIpv4TosUnusedCounter is integer counter pattern -type PatternFlowIpv4TosUnusedCounter interface { +// PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Ipv4TunnelSenderAddressCounter is ipv4 counter pattern +type PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Ipv4TunnelSenderAddressCounter interface { Validation - // Msg marshals PatternFlowIpv4TosUnusedCounter to protobuf object *otg.PatternFlowIpv4TosUnusedCounter + // Msg marshals PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Ipv4TunnelSenderAddressCounter to protobuf object *otg.PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Ipv4TunnelSenderAddressCounter // and doesn't set defaults - Msg() *otg.PatternFlowIpv4TosUnusedCounter - // SetMsg unmarshals PatternFlowIpv4TosUnusedCounter from protobuf object *otg.PatternFlowIpv4TosUnusedCounter + Msg() *otg.PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Ipv4TunnelSenderAddressCounter + // SetMsg unmarshals PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Ipv4TunnelSenderAddressCounter from protobuf object *otg.PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Ipv4TunnelSenderAddressCounter // and doesn't set defaults - SetMsg(*otg.PatternFlowIpv4TosUnusedCounter) PatternFlowIpv4TosUnusedCounter - // ToProto marshals PatternFlowIpv4TosUnusedCounter to protobuf object *otg.PatternFlowIpv4TosUnusedCounter - ToProto() (*otg.PatternFlowIpv4TosUnusedCounter, error) - // ToPbText marshals PatternFlowIpv4TosUnusedCounter to protobuf text + SetMsg(*otg.PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Ipv4TunnelSenderAddressCounter) PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Ipv4TunnelSenderAddressCounter + // ToProto marshals PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Ipv4TunnelSenderAddressCounter to protobuf object *otg.PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Ipv4TunnelSenderAddressCounter + ToProto() (*otg.PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Ipv4TunnelSenderAddressCounter, error) + // ToPbText marshals PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Ipv4TunnelSenderAddressCounter to protobuf text ToPbText() (string, error) - // ToYaml marshals PatternFlowIpv4TosUnusedCounter to YAML text + // ToYaml marshals PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Ipv4TunnelSenderAddressCounter to YAML text ToYaml() (string, error) - // ToJson marshals PatternFlowIpv4TosUnusedCounter to JSON text + // ToJson marshals PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Ipv4TunnelSenderAddressCounter to JSON text ToJson() (string, error) - // FromProto unmarshals PatternFlowIpv4TosUnusedCounter from protobuf object *otg.PatternFlowIpv4TosUnusedCounter - FromProto(msg *otg.PatternFlowIpv4TosUnusedCounter) (PatternFlowIpv4TosUnusedCounter, error) - // FromPbText unmarshals PatternFlowIpv4TosUnusedCounter from protobuf text + // FromProto unmarshals PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Ipv4TunnelSenderAddressCounter from protobuf object *otg.PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Ipv4TunnelSenderAddressCounter + FromProto(msg *otg.PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Ipv4TunnelSenderAddressCounter) (PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Ipv4TunnelSenderAddressCounter, error) + // FromPbText unmarshals PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Ipv4TunnelSenderAddressCounter from protobuf text FromPbText(value string) error - // FromYaml unmarshals PatternFlowIpv4TosUnusedCounter from YAML text + // FromYaml unmarshals PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Ipv4TunnelSenderAddressCounter from YAML text FromYaml(value string) error - // FromJson unmarshals PatternFlowIpv4TosUnusedCounter from JSON text + // FromJson unmarshals PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Ipv4TunnelSenderAddressCounter from JSON text FromJson(value string) error - // Validate validates PatternFlowIpv4TosUnusedCounter + // Validate validates PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Ipv4TunnelSenderAddressCounter Validate() error // A stringer function String() string // Clones the object - Clone() (PatternFlowIpv4TosUnusedCounter, error) + Clone() (PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Ipv4TunnelSenderAddressCounter, error) validateToAndFrom() error validateObj(vObj *validation, set_default bool) setDefault() - // Start returns uint32, set in PatternFlowIpv4TosUnusedCounter. - Start() uint32 - // SetStart assigns uint32 provided by user to PatternFlowIpv4TosUnusedCounter - SetStart(value uint32) PatternFlowIpv4TosUnusedCounter - // HasStart checks if Start has been set in PatternFlowIpv4TosUnusedCounter + // Start returns string, set in PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Ipv4TunnelSenderAddressCounter. + Start() string + // SetStart assigns string provided by user to PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Ipv4TunnelSenderAddressCounter + SetStart(value string) PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Ipv4TunnelSenderAddressCounter + // HasStart checks if Start has been set in PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Ipv4TunnelSenderAddressCounter HasStart() bool - // Step returns uint32, set in PatternFlowIpv4TosUnusedCounter. - Step() uint32 - // SetStep assigns uint32 provided by user to PatternFlowIpv4TosUnusedCounter - SetStep(value uint32) PatternFlowIpv4TosUnusedCounter - // HasStep checks if Step has been set in PatternFlowIpv4TosUnusedCounter + // Step returns string, set in PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Ipv4TunnelSenderAddressCounter. + Step() string + // SetStep assigns string provided by user to PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Ipv4TunnelSenderAddressCounter + SetStep(value string) PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Ipv4TunnelSenderAddressCounter + // HasStep checks if Step has been set in PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Ipv4TunnelSenderAddressCounter HasStep() bool - // Count returns uint32, set in PatternFlowIpv4TosUnusedCounter. + // Count returns uint32, set in PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Ipv4TunnelSenderAddressCounter. Count() uint32 - // SetCount assigns uint32 provided by user to PatternFlowIpv4TosUnusedCounter - SetCount(value uint32) PatternFlowIpv4TosUnusedCounter - // HasCount checks if Count has been set in PatternFlowIpv4TosUnusedCounter + // SetCount assigns uint32 provided by user to PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Ipv4TunnelSenderAddressCounter + SetCount(value uint32) PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Ipv4TunnelSenderAddressCounter + // HasCount checks if Count has been set in PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Ipv4TunnelSenderAddressCounter HasCount() bool } // description is TBD -// Start returns a uint32 -func (obj *patternFlowIpv4TosUnusedCounter) Start() uint32 { +// Start returns a string +func (obj *patternFlowRSVPPathSenderTemplateLspTunnelIpv4Ipv4TunnelSenderAddressCounter) Start() string { return *obj.obj.Start } // description is TBD -// Start returns a uint32 -func (obj *patternFlowIpv4TosUnusedCounter) HasStart() bool { +// Start returns a string +func (obj *patternFlowRSVPPathSenderTemplateLspTunnelIpv4Ipv4TunnelSenderAddressCounter) HasStart() bool { return obj.obj.Start != nil } // description is TBD -// SetStart sets the uint32 value in the PatternFlowIpv4TosUnusedCounter object -func (obj *patternFlowIpv4TosUnusedCounter) SetStart(value uint32) PatternFlowIpv4TosUnusedCounter { +// SetStart sets the string value in the PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Ipv4TunnelSenderAddressCounter object +func (obj *patternFlowRSVPPathSenderTemplateLspTunnelIpv4Ipv4TunnelSenderAddressCounter) SetStart(value string) PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Ipv4TunnelSenderAddressCounter { obj.obj.Start = &value return obj } // description is TBD -// Step returns a uint32 -func (obj *patternFlowIpv4TosUnusedCounter) Step() uint32 { +// Step returns a string +func (obj *patternFlowRSVPPathSenderTemplateLspTunnelIpv4Ipv4TunnelSenderAddressCounter) Step() string { return *obj.obj.Step } // description is TBD -// Step returns a uint32 -func (obj *patternFlowIpv4TosUnusedCounter) HasStep() bool { +// Step returns a string +func (obj *patternFlowRSVPPathSenderTemplateLspTunnelIpv4Ipv4TunnelSenderAddressCounter) HasStep() bool { return obj.obj.Step != nil } // description is TBD -// SetStep sets the uint32 value in the PatternFlowIpv4TosUnusedCounter object -func (obj *patternFlowIpv4TosUnusedCounter) SetStep(value uint32) PatternFlowIpv4TosUnusedCounter { +// SetStep sets the string value in the PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Ipv4TunnelSenderAddressCounter object +func (obj *patternFlowRSVPPathSenderTemplateLspTunnelIpv4Ipv4TunnelSenderAddressCounter) SetStep(value string) PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Ipv4TunnelSenderAddressCounter { obj.obj.Step = &value return obj @@ -309025,7 +356101,7 @@ func (obj *patternFlowIpv4TosUnusedCounter) SetStep(value uint32) PatternFlowIpv // description is TBD // Count returns a uint32 -func (obj *patternFlowIpv4TosUnusedCounter) Count() uint32 { +func (obj *patternFlowRSVPPathSenderTemplateLspTunnelIpv4Ipv4TunnelSenderAddressCounter) Count() uint32 { return *obj.obj.Count @@ -309033,61 +356109,49 @@ func (obj *patternFlowIpv4TosUnusedCounter) Count() uint32 { // description is TBD // Count returns a uint32 -func (obj *patternFlowIpv4TosUnusedCounter) HasCount() bool { +func (obj *patternFlowRSVPPathSenderTemplateLspTunnelIpv4Ipv4TunnelSenderAddressCounter) HasCount() bool { return obj.obj.Count != nil } // description is TBD -// SetCount sets the uint32 value in the PatternFlowIpv4TosUnusedCounter object -func (obj *patternFlowIpv4TosUnusedCounter) SetCount(value uint32) PatternFlowIpv4TosUnusedCounter { +// SetCount sets the uint32 value in the PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Ipv4TunnelSenderAddressCounter object +func (obj *patternFlowRSVPPathSenderTemplateLspTunnelIpv4Ipv4TunnelSenderAddressCounter) SetCount(value uint32) PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Ipv4TunnelSenderAddressCounter { obj.obj.Count = &value return obj } -func (obj *patternFlowIpv4TosUnusedCounter) validateObj(vObj *validation, set_default bool) { +func (obj *patternFlowRSVPPathSenderTemplateLspTunnelIpv4Ipv4TunnelSenderAddressCounter) validateObj(vObj *validation, set_default bool) { if set_default { obj.setDefault() } if obj.obj.Start != nil { - if *obj.obj.Start > 1 { - vObj.validationErrors = append( - vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowIpv4TosUnusedCounter.Start <= 1 but Got %d", *obj.obj.Start)) + err := obj.validateIpv4(obj.Start()) + if err != nil { + vObj.validationErrors = append(vObj.validationErrors, fmt.Sprintf("%s %s", err.Error(), "on PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Ipv4TunnelSenderAddressCounter.Start")) } } if obj.obj.Step != nil { - if *obj.obj.Step > 1 { - vObj.validationErrors = append( - vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowIpv4TosUnusedCounter.Step <= 1 but Got %d", *obj.obj.Step)) - } - - } - - if obj.obj.Count != nil { - - if *obj.obj.Count > 1 { - vObj.validationErrors = append( - vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowIpv4TosUnusedCounter.Count <= 1 but Got %d", *obj.obj.Count)) + err := obj.validateIpv4(obj.Step()) + if err != nil { + vObj.validationErrors = append(vObj.validationErrors, fmt.Sprintf("%s %s", err.Error(), "on PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Ipv4TunnelSenderAddressCounter.Step")) } } } -func (obj *patternFlowIpv4TosUnusedCounter) setDefault() { +func (obj *patternFlowRSVPPathSenderTemplateLspTunnelIpv4Ipv4TunnelSenderAddressCounter) setDefault() { if obj.obj.Start == nil { - obj.SetStart(0) + obj.SetStart("0.0.0.0") } if obj.obj.Step == nil { - obj.SetStep(1) + obj.SetStep("0.0.0.1") } if obj.obj.Count == nil { obj.SetCount(1) @@ -309095,29 +356159,29 @@ func (obj *patternFlowIpv4TosUnusedCounter) setDefault() { } -// ***** PatternFlowIpv4TosUnusedMetricTag ***** -type patternFlowIpv4TosUnusedMetricTag struct { +// ***** PatternFlowRSVPPathSenderTemplateLspTunnelIpv4ReservedCounter ***** +type patternFlowRSVPPathSenderTemplateLspTunnelIpv4ReservedCounter struct { validation - obj *otg.PatternFlowIpv4TosUnusedMetricTag + obj *otg.PatternFlowRSVPPathSenderTemplateLspTunnelIpv4ReservedCounter } -func NewPatternFlowIpv4TosUnusedMetricTag() PatternFlowIpv4TosUnusedMetricTag { - obj := patternFlowIpv4TosUnusedMetricTag{obj: &otg.PatternFlowIpv4TosUnusedMetricTag{}} +func NewPatternFlowRSVPPathSenderTemplateLspTunnelIpv4ReservedCounter() PatternFlowRSVPPathSenderTemplateLspTunnelIpv4ReservedCounter { + obj := patternFlowRSVPPathSenderTemplateLspTunnelIpv4ReservedCounter{obj: &otg.PatternFlowRSVPPathSenderTemplateLspTunnelIpv4ReservedCounter{}} obj.setDefault() return &obj } -func (obj *patternFlowIpv4TosUnusedMetricTag) Msg() *otg.PatternFlowIpv4TosUnusedMetricTag { +func (obj *patternFlowRSVPPathSenderTemplateLspTunnelIpv4ReservedCounter) Msg() *otg.PatternFlowRSVPPathSenderTemplateLspTunnelIpv4ReservedCounter { return obj.obj } -func (obj *patternFlowIpv4TosUnusedMetricTag) SetMsg(msg *otg.PatternFlowIpv4TosUnusedMetricTag) PatternFlowIpv4TosUnusedMetricTag { +func (obj *patternFlowRSVPPathSenderTemplateLspTunnelIpv4ReservedCounter) SetMsg(msg *otg.PatternFlowRSVPPathSenderTemplateLspTunnelIpv4ReservedCounter) PatternFlowRSVPPathSenderTemplateLspTunnelIpv4ReservedCounter { proto.Merge(obj.obj, msg) return obj } -func (obj *patternFlowIpv4TosUnusedMetricTag) ToProto() (*otg.PatternFlowIpv4TosUnusedMetricTag, error) { +func (obj *patternFlowRSVPPathSenderTemplateLspTunnelIpv4ReservedCounter) ToProto() (*otg.PatternFlowRSVPPathSenderTemplateLspTunnelIpv4ReservedCounter, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -309125,7 +356189,7 @@ func (obj *patternFlowIpv4TosUnusedMetricTag) ToProto() (*otg.PatternFlowIpv4Tos return obj.Msg(), nil } -func (obj *patternFlowIpv4TosUnusedMetricTag) FromProto(msg *otg.PatternFlowIpv4TosUnusedMetricTag) (PatternFlowIpv4TosUnusedMetricTag, error) { +func (obj *patternFlowRSVPPathSenderTemplateLspTunnelIpv4ReservedCounter) FromProto(msg *otg.PatternFlowRSVPPathSenderTemplateLspTunnelIpv4ReservedCounter) (PatternFlowRSVPPathSenderTemplateLspTunnelIpv4ReservedCounter, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -309134,7 +356198,7 @@ func (obj *patternFlowIpv4TosUnusedMetricTag) FromProto(msg *otg.PatternFlowIpv4 return newObj, nil } -func (obj *patternFlowIpv4TosUnusedMetricTag) ToPbText() (string, error) { +func (obj *patternFlowRSVPPathSenderTemplateLspTunnelIpv4ReservedCounter) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -309146,7 +356210,7 @@ func (obj *patternFlowIpv4TosUnusedMetricTag) ToPbText() (string, error) { return string(protoMarshal), nil } -func (obj *patternFlowIpv4TosUnusedMetricTag) FromPbText(value string) error { +func (obj *patternFlowRSVPPathSenderTemplateLspTunnelIpv4ReservedCounter) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj @@ -309159,7 +356223,7 @@ func (obj *patternFlowIpv4TosUnusedMetricTag) FromPbText(value string) error { return retObj } -func (obj *patternFlowIpv4TosUnusedMetricTag) ToYaml() (string, error) { +func (obj *patternFlowRSVPPathSenderTemplateLspTunnelIpv4ReservedCounter) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -309180,7 +356244,7 @@ func (obj *patternFlowIpv4TosUnusedMetricTag) ToYaml() (string, error) { return string(data), nil } -func (obj *patternFlowIpv4TosUnusedMetricTag) FromYaml(value string) error { +func (obj *patternFlowRSVPPathSenderTemplateLspTunnelIpv4ReservedCounter) FromYaml(value string) error { if value == "" { value = "{}" } @@ -309205,7 +356269,7 @@ func (obj *patternFlowIpv4TosUnusedMetricTag) FromYaml(value string) error { return nil } -func (obj *patternFlowIpv4TosUnusedMetricTag) ToJson() (string, error) { +func (obj *patternFlowRSVPPathSenderTemplateLspTunnelIpv4ReservedCounter) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -309223,7 +356287,7 @@ func (obj *patternFlowIpv4TosUnusedMetricTag) ToJson() (string, error) { return string(data), nil } -func (obj *patternFlowIpv4TosUnusedMetricTag) FromJson(value string) error { +func (obj *patternFlowRSVPPathSenderTemplateLspTunnelIpv4ReservedCounter) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -309244,19 +356308,19 @@ func (obj *patternFlowIpv4TosUnusedMetricTag) FromJson(value string) error { return nil } -func (obj *patternFlowIpv4TosUnusedMetricTag) validateToAndFrom() error { +func (obj *patternFlowRSVPPathSenderTemplateLspTunnelIpv4ReservedCounter) validateToAndFrom() error { // emptyVars() obj.validateObj(&obj.validation, true) return obj.validationResult() } -func (obj *patternFlowIpv4TosUnusedMetricTag) Validate() error { +func (obj *patternFlowRSVPPathSenderTemplateLspTunnelIpv4ReservedCounter) Validate() error { // emptyVars() obj.validateObj(&obj.validation, false) return obj.validationResult() } -func (obj *patternFlowIpv4TosUnusedMetricTag) String() string { +func (obj *patternFlowRSVPPathSenderTemplateLspTunnelIpv4ReservedCounter) String() string { str, err := obj.ToYaml() if err != nil { return err.Error() @@ -309264,12 +356328,12 @@ func (obj *patternFlowIpv4TosUnusedMetricTag) String() string { return str } -func (obj *patternFlowIpv4TosUnusedMetricTag) Clone() (PatternFlowIpv4TosUnusedMetricTag, error) { +func (obj *patternFlowRSVPPathSenderTemplateLspTunnelIpv4ReservedCounter) Clone() (PatternFlowRSVPPathSenderTemplateLspTunnelIpv4ReservedCounter, error) { vErr := obj.Validate() if vErr != nil { return nil, vErr } - newObj := NewPatternFlowIpv4TosUnusedMetricTag() + newObj := NewPatternFlowRSVPPathSenderTemplateLspTunnelIpv4ReservedCounter() data, err := proto.Marshal(obj.Msg()) if err != nil { return nil, err @@ -309281,183 +356345,199 @@ func (obj *patternFlowIpv4TosUnusedMetricTag) Clone() (PatternFlowIpv4TosUnusedM return newObj, nil } -// PatternFlowIpv4TosUnusedMetricTag is metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. -type PatternFlowIpv4TosUnusedMetricTag interface { +// PatternFlowRSVPPathSenderTemplateLspTunnelIpv4ReservedCounter is integer counter pattern +type PatternFlowRSVPPathSenderTemplateLspTunnelIpv4ReservedCounter interface { Validation - // Msg marshals PatternFlowIpv4TosUnusedMetricTag to protobuf object *otg.PatternFlowIpv4TosUnusedMetricTag + // Msg marshals PatternFlowRSVPPathSenderTemplateLspTunnelIpv4ReservedCounter to protobuf object *otg.PatternFlowRSVPPathSenderTemplateLspTunnelIpv4ReservedCounter // and doesn't set defaults - Msg() *otg.PatternFlowIpv4TosUnusedMetricTag - // SetMsg unmarshals PatternFlowIpv4TosUnusedMetricTag from protobuf object *otg.PatternFlowIpv4TosUnusedMetricTag + Msg() *otg.PatternFlowRSVPPathSenderTemplateLspTunnelIpv4ReservedCounter + // SetMsg unmarshals PatternFlowRSVPPathSenderTemplateLspTunnelIpv4ReservedCounter from protobuf object *otg.PatternFlowRSVPPathSenderTemplateLspTunnelIpv4ReservedCounter // and doesn't set defaults - SetMsg(*otg.PatternFlowIpv4TosUnusedMetricTag) PatternFlowIpv4TosUnusedMetricTag - // ToProto marshals PatternFlowIpv4TosUnusedMetricTag to protobuf object *otg.PatternFlowIpv4TosUnusedMetricTag - ToProto() (*otg.PatternFlowIpv4TosUnusedMetricTag, error) - // ToPbText marshals PatternFlowIpv4TosUnusedMetricTag to protobuf text + SetMsg(*otg.PatternFlowRSVPPathSenderTemplateLspTunnelIpv4ReservedCounter) PatternFlowRSVPPathSenderTemplateLspTunnelIpv4ReservedCounter + // ToProto marshals PatternFlowRSVPPathSenderTemplateLspTunnelIpv4ReservedCounter to protobuf object *otg.PatternFlowRSVPPathSenderTemplateLspTunnelIpv4ReservedCounter + ToProto() (*otg.PatternFlowRSVPPathSenderTemplateLspTunnelIpv4ReservedCounter, error) + // ToPbText marshals PatternFlowRSVPPathSenderTemplateLspTunnelIpv4ReservedCounter to protobuf text ToPbText() (string, error) - // ToYaml marshals PatternFlowIpv4TosUnusedMetricTag to YAML text + // ToYaml marshals PatternFlowRSVPPathSenderTemplateLspTunnelIpv4ReservedCounter to YAML text ToYaml() (string, error) - // ToJson marshals PatternFlowIpv4TosUnusedMetricTag to JSON text + // ToJson marshals PatternFlowRSVPPathSenderTemplateLspTunnelIpv4ReservedCounter to JSON text ToJson() (string, error) - // FromProto unmarshals PatternFlowIpv4TosUnusedMetricTag from protobuf object *otg.PatternFlowIpv4TosUnusedMetricTag - FromProto(msg *otg.PatternFlowIpv4TosUnusedMetricTag) (PatternFlowIpv4TosUnusedMetricTag, error) - // FromPbText unmarshals PatternFlowIpv4TosUnusedMetricTag from protobuf text + // FromProto unmarshals PatternFlowRSVPPathSenderTemplateLspTunnelIpv4ReservedCounter from protobuf object *otg.PatternFlowRSVPPathSenderTemplateLspTunnelIpv4ReservedCounter + FromProto(msg *otg.PatternFlowRSVPPathSenderTemplateLspTunnelIpv4ReservedCounter) (PatternFlowRSVPPathSenderTemplateLspTunnelIpv4ReservedCounter, error) + // FromPbText unmarshals PatternFlowRSVPPathSenderTemplateLspTunnelIpv4ReservedCounter from protobuf text FromPbText(value string) error - // FromYaml unmarshals PatternFlowIpv4TosUnusedMetricTag from YAML text + // FromYaml unmarshals PatternFlowRSVPPathSenderTemplateLspTunnelIpv4ReservedCounter from YAML text FromYaml(value string) error - // FromJson unmarshals PatternFlowIpv4TosUnusedMetricTag from JSON text + // FromJson unmarshals PatternFlowRSVPPathSenderTemplateLspTunnelIpv4ReservedCounter from JSON text FromJson(value string) error - // Validate validates PatternFlowIpv4TosUnusedMetricTag + // Validate validates PatternFlowRSVPPathSenderTemplateLspTunnelIpv4ReservedCounter Validate() error // A stringer function String() string // Clones the object - Clone() (PatternFlowIpv4TosUnusedMetricTag, error) + Clone() (PatternFlowRSVPPathSenderTemplateLspTunnelIpv4ReservedCounter, error) validateToAndFrom() error validateObj(vObj *validation, set_default bool) setDefault() - // Name returns string, set in PatternFlowIpv4TosUnusedMetricTag. - Name() string - // SetName assigns string provided by user to PatternFlowIpv4TosUnusedMetricTag - SetName(value string) PatternFlowIpv4TosUnusedMetricTag - // Offset returns uint32, set in PatternFlowIpv4TosUnusedMetricTag. - Offset() uint32 - // SetOffset assigns uint32 provided by user to PatternFlowIpv4TosUnusedMetricTag - SetOffset(value uint32) PatternFlowIpv4TosUnusedMetricTag - // HasOffset checks if Offset has been set in PatternFlowIpv4TosUnusedMetricTag - HasOffset() bool - // Length returns uint32, set in PatternFlowIpv4TosUnusedMetricTag. - Length() uint32 - // SetLength assigns uint32 provided by user to PatternFlowIpv4TosUnusedMetricTag - SetLength(value uint32) PatternFlowIpv4TosUnusedMetricTag - // HasLength checks if Length has been set in PatternFlowIpv4TosUnusedMetricTag - HasLength() bool + // Start returns uint32, set in PatternFlowRSVPPathSenderTemplateLspTunnelIpv4ReservedCounter. + Start() uint32 + // SetStart assigns uint32 provided by user to PatternFlowRSVPPathSenderTemplateLspTunnelIpv4ReservedCounter + SetStart(value uint32) PatternFlowRSVPPathSenderTemplateLspTunnelIpv4ReservedCounter + // HasStart checks if Start has been set in PatternFlowRSVPPathSenderTemplateLspTunnelIpv4ReservedCounter + HasStart() bool + // Step returns uint32, set in PatternFlowRSVPPathSenderTemplateLspTunnelIpv4ReservedCounter. + Step() uint32 + // SetStep assigns uint32 provided by user to PatternFlowRSVPPathSenderTemplateLspTunnelIpv4ReservedCounter + SetStep(value uint32) PatternFlowRSVPPathSenderTemplateLspTunnelIpv4ReservedCounter + // HasStep checks if Step has been set in PatternFlowRSVPPathSenderTemplateLspTunnelIpv4ReservedCounter + HasStep() bool + // Count returns uint32, set in PatternFlowRSVPPathSenderTemplateLspTunnelIpv4ReservedCounter. + Count() uint32 + // SetCount assigns uint32 provided by user to PatternFlowRSVPPathSenderTemplateLspTunnelIpv4ReservedCounter + SetCount(value uint32) PatternFlowRSVPPathSenderTemplateLspTunnelIpv4ReservedCounter + // HasCount checks if Count has been set in PatternFlowRSVPPathSenderTemplateLspTunnelIpv4ReservedCounter + HasCount() bool } -// Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field -// Name returns a string -func (obj *patternFlowIpv4TosUnusedMetricTag) Name() string { +// description is TBD +// Start returns a uint32 +func (obj *patternFlowRSVPPathSenderTemplateLspTunnelIpv4ReservedCounter) Start() uint32 { - return *obj.obj.Name + return *obj.obj.Start } -// Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field -// SetName sets the string value in the PatternFlowIpv4TosUnusedMetricTag object -func (obj *patternFlowIpv4TosUnusedMetricTag) SetName(value string) PatternFlowIpv4TosUnusedMetricTag { +// description is TBD +// Start returns a uint32 +func (obj *patternFlowRSVPPathSenderTemplateLspTunnelIpv4ReservedCounter) HasStart() bool { + return obj.obj.Start != nil +} - obj.obj.Name = &value +// description is TBD +// SetStart sets the uint32 value in the PatternFlowRSVPPathSenderTemplateLspTunnelIpv4ReservedCounter object +func (obj *patternFlowRSVPPathSenderTemplateLspTunnelIpv4ReservedCounter) SetStart(value uint32) PatternFlowRSVPPathSenderTemplateLspTunnelIpv4ReservedCounter { + + obj.obj.Start = &value return obj } -// Offset in bits relative to start of corresponding header field -// Offset returns a uint32 -func (obj *patternFlowIpv4TosUnusedMetricTag) Offset() uint32 { +// description is TBD +// Step returns a uint32 +func (obj *patternFlowRSVPPathSenderTemplateLspTunnelIpv4ReservedCounter) Step() uint32 { - return *obj.obj.Offset + return *obj.obj.Step } -// Offset in bits relative to start of corresponding header field -// Offset returns a uint32 -func (obj *patternFlowIpv4TosUnusedMetricTag) HasOffset() bool { - return obj.obj.Offset != nil +// description is TBD +// Step returns a uint32 +func (obj *patternFlowRSVPPathSenderTemplateLspTunnelIpv4ReservedCounter) HasStep() bool { + return obj.obj.Step != nil } -// Offset in bits relative to start of corresponding header field -// SetOffset sets the uint32 value in the PatternFlowIpv4TosUnusedMetricTag object -func (obj *patternFlowIpv4TosUnusedMetricTag) SetOffset(value uint32) PatternFlowIpv4TosUnusedMetricTag { +// description is TBD +// SetStep sets the uint32 value in the PatternFlowRSVPPathSenderTemplateLspTunnelIpv4ReservedCounter object +func (obj *patternFlowRSVPPathSenderTemplateLspTunnelIpv4ReservedCounter) SetStep(value uint32) PatternFlowRSVPPathSenderTemplateLspTunnelIpv4ReservedCounter { - obj.obj.Offset = &value + obj.obj.Step = &value return obj } -// Number of bits to track for metrics starting from configured offset of corresponding header field -// Length returns a uint32 -func (obj *patternFlowIpv4TosUnusedMetricTag) Length() uint32 { +// description is TBD +// Count returns a uint32 +func (obj *patternFlowRSVPPathSenderTemplateLspTunnelIpv4ReservedCounter) Count() uint32 { - return *obj.obj.Length + return *obj.obj.Count } -// Number of bits to track for metrics starting from configured offset of corresponding header field -// Length returns a uint32 -func (obj *patternFlowIpv4TosUnusedMetricTag) HasLength() bool { - return obj.obj.Length != nil +// description is TBD +// Count returns a uint32 +func (obj *patternFlowRSVPPathSenderTemplateLspTunnelIpv4ReservedCounter) HasCount() bool { + return obj.obj.Count != nil } -// Number of bits to track for metrics starting from configured offset of corresponding header field -// SetLength sets the uint32 value in the PatternFlowIpv4TosUnusedMetricTag object -func (obj *patternFlowIpv4TosUnusedMetricTag) SetLength(value uint32) PatternFlowIpv4TosUnusedMetricTag { +// description is TBD +// SetCount sets the uint32 value in the PatternFlowRSVPPathSenderTemplateLspTunnelIpv4ReservedCounter object +func (obj *patternFlowRSVPPathSenderTemplateLspTunnelIpv4ReservedCounter) SetCount(value uint32) PatternFlowRSVPPathSenderTemplateLspTunnelIpv4ReservedCounter { - obj.obj.Length = &value + obj.obj.Count = &value return obj } -func (obj *patternFlowIpv4TosUnusedMetricTag) validateObj(vObj *validation, set_default bool) { +func (obj *patternFlowRSVPPathSenderTemplateLspTunnelIpv4ReservedCounter) validateObj(vObj *validation, set_default bool) { if set_default { obj.setDefault() } - // Name is required - if obj.obj.Name == nil { - vObj.validationErrors = append(vObj.validationErrors, "Name is required field on interface PatternFlowIpv4TosUnusedMetricTag") + if obj.obj.Start != nil { + + if *obj.obj.Start > 65535 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("0 <= PatternFlowRSVPPathSenderTemplateLspTunnelIpv4ReservedCounter.Start <= 65535 but Got %d", *obj.obj.Start)) + } + } - if obj.obj.Offset != nil { + if obj.obj.Step != nil { - if *obj.obj.Offset > 0 { + if *obj.obj.Step > 65535 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowIpv4TosUnusedMetricTag.Offset <= 0 but Got %d", *obj.obj.Offset)) + fmt.Sprintf("0 <= PatternFlowRSVPPathSenderTemplateLspTunnelIpv4ReservedCounter.Step <= 65535 but Got %d", *obj.obj.Step)) } } - if obj.obj.Length != nil { + if obj.obj.Count != nil { - if *obj.obj.Length < 1 || *obj.obj.Length > 1 { + if *obj.obj.Count > 65535 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("1 <= PatternFlowIpv4TosUnusedMetricTag.Length <= 1 but Got %d", *obj.obj.Length)) + fmt.Sprintf("0 <= PatternFlowRSVPPathSenderTemplateLspTunnelIpv4ReservedCounter.Count <= 65535 but Got %d", *obj.obj.Count)) } } } -func (obj *patternFlowIpv4TosUnusedMetricTag) setDefault() { - if obj.obj.Offset == nil { - obj.SetOffset(0) +func (obj *patternFlowRSVPPathSenderTemplateLspTunnelIpv4ReservedCounter) setDefault() { + if obj.obj.Start == nil { + obj.SetStart(0) } - if obj.obj.Length == nil { - obj.SetLength(1) + if obj.obj.Step == nil { + obj.SetStep(1) + } + if obj.obj.Count == nil { + obj.SetCount(1) } } -// ***** PatternFlowIpv4DscpPhbCounter ***** -type patternFlowIpv4DscpPhbCounter struct { +// ***** PatternFlowRSVPPathSenderTemplateLspTunnelIpv4LspIdCounter ***** +type patternFlowRSVPPathSenderTemplateLspTunnelIpv4LspIdCounter struct { validation - obj *otg.PatternFlowIpv4DscpPhbCounter + obj *otg.PatternFlowRSVPPathSenderTemplateLspTunnelIpv4LspIdCounter } -func NewPatternFlowIpv4DscpPhbCounter() PatternFlowIpv4DscpPhbCounter { - obj := patternFlowIpv4DscpPhbCounter{obj: &otg.PatternFlowIpv4DscpPhbCounter{}} +func NewPatternFlowRSVPPathSenderTemplateLspTunnelIpv4LspIdCounter() PatternFlowRSVPPathSenderTemplateLspTunnelIpv4LspIdCounter { + obj := patternFlowRSVPPathSenderTemplateLspTunnelIpv4LspIdCounter{obj: &otg.PatternFlowRSVPPathSenderTemplateLspTunnelIpv4LspIdCounter{}} obj.setDefault() return &obj } -func (obj *patternFlowIpv4DscpPhbCounter) Msg() *otg.PatternFlowIpv4DscpPhbCounter { +func (obj *patternFlowRSVPPathSenderTemplateLspTunnelIpv4LspIdCounter) Msg() *otg.PatternFlowRSVPPathSenderTemplateLspTunnelIpv4LspIdCounter { return obj.obj } -func (obj *patternFlowIpv4DscpPhbCounter) SetMsg(msg *otg.PatternFlowIpv4DscpPhbCounter) PatternFlowIpv4DscpPhbCounter { +func (obj *patternFlowRSVPPathSenderTemplateLspTunnelIpv4LspIdCounter) SetMsg(msg *otg.PatternFlowRSVPPathSenderTemplateLspTunnelIpv4LspIdCounter) PatternFlowRSVPPathSenderTemplateLspTunnelIpv4LspIdCounter { proto.Merge(obj.obj, msg) return obj } -func (obj *patternFlowIpv4DscpPhbCounter) ToProto() (*otg.PatternFlowIpv4DscpPhbCounter, error) { +func (obj *patternFlowRSVPPathSenderTemplateLspTunnelIpv4LspIdCounter) ToProto() (*otg.PatternFlowRSVPPathSenderTemplateLspTunnelIpv4LspIdCounter, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -309465,7 +356545,7 @@ func (obj *patternFlowIpv4DscpPhbCounter) ToProto() (*otg.PatternFlowIpv4DscpPhb return obj.Msg(), nil } -func (obj *patternFlowIpv4DscpPhbCounter) FromProto(msg *otg.PatternFlowIpv4DscpPhbCounter) (PatternFlowIpv4DscpPhbCounter, error) { +func (obj *patternFlowRSVPPathSenderTemplateLspTunnelIpv4LspIdCounter) FromProto(msg *otg.PatternFlowRSVPPathSenderTemplateLspTunnelIpv4LspIdCounter) (PatternFlowRSVPPathSenderTemplateLspTunnelIpv4LspIdCounter, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -309474,7 +356554,7 @@ func (obj *patternFlowIpv4DscpPhbCounter) FromProto(msg *otg.PatternFlowIpv4Dscp return newObj, nil } -func (obj *patternFlowIpv4DscpPhbCounter) ToPbText() (string, error) { +func (obj *patternFlowRSVPPathSenderTemplateLspTunnelIpv4LspIdCounter) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -309486,7 +356566,7 @@ func (obj *patternFlowIpv4DscpPhbCounter) ToPbText() (string, error) { return string(protoMarshal), nil } -func (obj *patternFlowIpv4DscpPhbCounter) FromPbText(value string) error { +func (obj *patternFlowRSVPPathSenderTemplateLspTunnelIpv4LspIdCounter) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj @@ -309499,7 +356579,7 @@ func (obj *patternFlowIpv4DscpPhbCounter) FromPbText(value string) error { return retObj } -func (obj *patternFlowIpv4DscpPhbCounter) ToYaml() (string, error) { +func (obj *patternFlowRSVPPathSenderTemplateLspTunnelIpv4LspIdCounter) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -309520,7 +356600,7 @@ func (obj *patternFlowIpv4DscpPhbCounter) ToYaml() (string, error) { return string(data), nil } -func (obj *patternFlowIpv4DscpPhbCounter) FromYaml(value string) error { +func (obj *patternFlowRSVPPathSenderTemplateLspTunnelIpv4LspIdCounter) FromYaml(value string) error { if value == "" { value = "{}" } @@ -309545,7 +356625,7 @@ func (obj *patternFlowIpv4DscpPhbCounter) FromYaml(value string) error { return nil } -func (obj *patternFlowIpv4DscpPhbCounter) ToJson() (string, error) { +func (obj *patternFlowRSVPPathSenderTemplateLspTunnelIpv4LspIdCounter) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -309563,7 +356643,7 @@ func (obj *patternFlowIpv4DscpPhbCounter) ToJson() (string, error) { return string(data), nil } -func (obj *patternFlowIpv4DscpPhbCounter) FromJson(value string) error { +func (obj *patternFlowRSVPPathSenderTemplateLspTunnelIpv4LspIdCounter) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -309584,19 +356664,19 @@ func (obj *patternFlowIpv4DscpPhbCounter) FromJson(value string) error { return nil } -func (obj *patternFlowIpv4DscpPhbCounter) validateToAndFrom() error { +func (obj *patternFlowRSVPPathSenderTemplateLspTunnelIpv4LspIdCounter) validateToAndFrom() error { // emptyVars() obj.validateObj(&obj.validation, true) return obj.validationResult() } -func (obj *patternFlowIpv4DscpPhbCounter) Validate() error { +func (obj *patternFlowRSVPPathSenderTemplateLspTunnelIpv4LspIdCounter) Validate() error { // emptyVars() obj.validateObj(&obj.validation, false) return obj.validationResult() } -func (obj *patternFlowIpv4DscpPhbCounter) String() string { +func (obj *patternFlowRSVPPathSenderTemplateLspTunnelIpv4LspIdCounter) String() string { str, err := obj.ToYaml() if err != nil { return err.Error() @@ -309604,12 +356684,12 @@ func (obj *patternFlowIpv4DscpPhbCounter) String() string { return str } -func (obj *patternFlowIpv4DscpPhbCounter) Clone() (PatternFlowIpv4DscpPhbCounter, error) { +func (obj *patternFlowRSVPPathSenderTemplateLspTunnelIpv4LspIdCounter) Clone() (PatternFlowRSVPPathSenderTemplateLspTunnelIpv4LspIdCounter, error) { vErr := obj.Validate() if vErr != nil { return nil, vErr } - newObj := NewPatternFlowIpv4DscpPhbCounter() + newObj := NewPatternFlowRSVPPathSenderTemplateLspTunnelIpv4LspIdCounter() data, err := proto.Marshal(obj.Msg()) if err != nil { return nil, err @@ -309621,63 +356701,63 @@ func (obj *patternFlowIpv4DscpPhbCounter) Clone() (PatternFlowIpv4DscpPhbCounter return newObj, nil } -// PatternFlowIpv4DscpPhbCounter is integer counter pattern -type PatternFlowIpv4DscpPhbCounter interface { +// PatternFlowRSVPPathSenderTemplateLspTunnelIpv4LspIdCounter is integer counter pattern +type PatternFlowRSVPPathSenderTemplateLspTunnelIpv4LspIdCounter interface { Validation - // Msg marshals PatternFlowIpv4DscpPhbCounter to protobuf object *otg.PatternFlowIpv4DscpPhbCounter + // Msg marshals PatternFlowRSVPPathSenderTemplateLspTunnelIpv4LspIdCounter to protobuf object *otg.PatternFlowRSVPPathSenderTemplateLspTunnelIpv4LspIdCounter // and doesn't set defaults - Msg() *otg.PatternFlowIpv4DscpPhbCounter - // SetMsg unmarshals PatternFlowIpv4DscpPhbCounter from protobuf object *otg.PatternFlowIpv4DscpPhbCounter + Msg() *otg.PatternFlowRSVPPathSenderTemplateLspTunnelIpv4LspIdCounter + // SetMsg unmarshals PatternFlowRSVPPathSenderTemplateLspTunnelIpv4LspIdCounter from protobuf object *otg.PatternFlowRSVPPathSenderTemplateLspTunnelIpv4LspIdCounter // and doesn't set defaults - SetMsg(*otg.PatternFlowIpv4DscpPhbCounter) PatternFlowIpv4DscpPhbCounter - // ToProto marshals PatternFlowIpv4DscpPhbCounter to protobuf object *otg.PatternFlowIpv4DscpPhbCounter - ToProto() (*otg.PatternFlowIpv4DscpPhbCounter, error) - // ToPbText marshals PatternFlowIpv4DscpPhbCounter to protobuf text + SetMsg(*otg.PatternFlowRSVPPathSenderTemplateLspTunnelIpv4LspIdCounter) PatternFlowRSVPPathSenderTemplateLspTunnelIpv4LspIdCounter + // ToProto marshals PatternFlowRSVPPathSenderTemplateLspTunnelIpv4LspIdCounter to protobuf object *otg.PatternFlowRSVPPathSenderTemplateLspTunnelIpv4LspIdCounter + ToProto() (*otg.PatternFlowRSVPPathSenderTemplateLspTunnelIpv4LspIdCounter, error) + // ToPbText marshals PatternFlowRSVPPathSenderTemplateLspTunnelIpv4LspIdCounter to protobuf text ToPbText() (string, error) - // ToYaml marshals PatternFlowIpv4DscpPhbCounter to YAML text + // ToYaml marshals PatternFlowRSVPPathSenderTemplateLspTunnelIpv4LspIdCounter to YAML text ToYaml() (string, error) - // ToJson marshals PatternFlowIpv4DscpPhbCounter to JSON text + // ToJson marshals PatternFlowRSVPPathSenderTemplateLspTunnelIpv4LspIdCounter to JSON text ToJson() (string, error) - // FromProto unmarshals PatternFlowIpv4DscpPhbCounter from protobuf object *otg.PatternFlowIpv4DscpPhbCounter - FromProto(msg *otg.PatternFlowIpv4DscpPhbCounter) (PatternFlowIpv4DscpPhbCounter, error) - // FromPbText unmarshals PatternFlowIpv4DscpPhbCounter from protobuf text + // FromProto unmarshals PatternFlowRSVPPathSenderTemplateLspTunnelIpv4LspIdCounter from protobuf object *otg.PatternFlowRSVPPathSenderTemplateLspTunnelIpv4LspIdCounter + FromProto(msg *otg.PatternFlowRSVPPathSenderTemplateLspTunnelIpv4LspIdCounter) (PatternFlowRSVPPathSenderTemplateLspTunnelIpv4LspIdCounter, error) + // FromPbText unmarshals PatternFlowRSVPPathSenderTemplateLspTunnelIpv4LspIdCounter from protobuf text FromPbText(value string) error - // FromYaml unmarshals PatternFlowIpv4DscpPhbCounter from YAML text + // FromYaml unmarshals PatternFlowRSVPPathSenderTemplateLspTunnelIpv4LspIdCounter from YAML text FromYaml(value string) error - // FromJson unmarshals PatternFlowIpv4DscpPhbCounter from JSON text + // FromJson unmarshals PatternFlowRSVPPathSenderTemplateLspTunnelIpv4LspIdCounter from JSON text FromJson(value string) error - // Validate validates PatternFlowIpv4DscpPhbCounter + // Validate validates PatternFlowRSVPPathSenderTemplateLspTunnelIpv4LspIdCounter Validate() error // A stringer function String() string // Clones the object - Clone() (PatternFlowIpv4DscpPhbCounter, error) + Clone() (PatternFlowRSVPPathSenderTemplateLspTunnelIpv4LspIdCounter, error) validateToAndFrom() error validateObj(vObj *validation, set_default bool) setDefault() - // Start returns uint32, set in PatternFlowIpv4DscpPhbCounter. + // Start returns uint32, set in PatternFlowRSVPPathSenderTemplateLspTunnelIpv4LspIdCounter. Start() uint32 - // SetStart assigns uint32 provided by user to PatternFlowIpv4DscpPhbCounter - SetStart(value uint32) PatternFlowIpv4DscpPhbCounter - // HasStart checks if Start has been set in PatternFlowIpv4DscpPhbCounter + // SetStart assigns uint32 provided by user to PatternFlowRSVPPathSenderTemplateLspTunnelIpv4LspIdCounter + SetStart(value uint32) PatternFlowRSVPPathSenderTemplateLspTunnelIpv4LspIdCounter + // HasStart checks if Start has been set in PatternFlowRSVPPathSenderTemplateLspTunnelIpv4LspIdCounter HasStart() bool - // Step returns uint32, set in PatternFlowIpv4DscpPhbCounter. + // Step returns uint32, set in PatternFlowRSVPPathSenderTemplateLspTunnelIpv4LspIdCounter. Step() uint32 - // SetStep assigns uint32 provided by user to PatternFlowIpv4DscpPhbCounter - SetStep(value uint32) PatternFlowIpv4DscpPhbCounter - // HasStep checks if Step has been set in PatternFlowIpv4DscpPhbCounter + // SetStep assigns uint32 provided by user to PatternFlowRSVPPathSenderTemplateLspTunnelIpv4LspIdCounter + SetStep(value uint32) PatternFlowRSVPPathSenderTemplateLspTunnelIpv4LspIdCounter + // HasStep checks if Step has been set in PatternFlowRSVPPathSenderTemplateLspTunnelIpv4LspIdCounter HasStep() bool - // Count returns uint32, set in PatternFlowIpv4DscpPhbCounter. + // Count returns uint32, set in PatternFlowRSVPPathSenderTemplateLspTunnelIpv4LspIdCounter. Count() uint32 - // SetCount assigns uint32 provided by user to PatternFlowIpv4DscpPhbCounter - SetCount(value uint32) PatternFlowIpv4DscpPhbCounter - // HasCount checks if Count has been set in PatternFlowIpv4DscpPhbCounter + // SetCount assigns uint32 provided by user to PatternFlowRSVPPathSenderTemplateLspTunnelIpv4LspIdCounter + SetCount(value uint32) PatternFlowRSVPPathSenderTemplateLspTunnelIpv4LspIdCounter + // HasCount checks if Count has been set in PatternFlowRSVPPathSenderTemplateLspTunnelIpv4LspIdCounter HasCount() bool } // description is TBD // Start returns a uint32 -func (obj *patternFlowIpv4DscpPhbCounter) Start() uint32 { +func (obj *patternFlowRSVPPathSenderTemplateLspTunnelIpv4LspIdCounter) Start() uint32 { return *obj.obj.Start @@ -309685,13 +356765,13 @@ func (obj *patternFlowIpv4DscpPhbCounter) Start() uint32 { // description is TBD // Start returns a uint32 -func (obj *patternFlowIpv4DscpPhbCounter) HasStart() bool { +func (obj *patternFlowRSVPPathSenderTemplateLspTunnelIpv4LspIdCounter) HasStart() bool { return obj.obj.Start != nil } // description is TBD -// SetStart sets the uint32 value in the PatternFlowIpv4DscpPhbCounter object -func (obj *patternFlowIpv4DscpPhbCounter) SetStart(value uint32) PatternFlowIpv4DscpPhbCounter { +// SetStart sets the uint32 value in the PatternFlowRSVPPathSenderTemplateLspTunnelIpv4LspIdCounter object +func (obj *patternFlowRSVPPathSenderTemplateLspTunnelIpv4LspIdCounter) SetStart(value uint32) PatternFlowRSVPPathSenderTemplateLspTunnelIpv4LspIdCounter { obj.obj.Start = &value return obj @@ -309699,7 +356779,7 @@ func (obj *patternFlowIpv4DscpPhbCounter) SetStart(value uint32) PatternFlowIpv4 // description is TBD // Step returns a uint32 -func (obj *patternFlowIpv4DscpPhbCounter) Step() uint32 { +func (obj *patternFlowRSVPPathSenderTemplateLspTunnelIpv4LspIdCounter) Step() uint32 { return *obj.obj.Step @@ -309707,13 +356787,13 @@ func (obj *patternFlowIpv4DscpPhbCounter) Step() uint32 { // description is TBD // Step returns a uint32 -func (obj *patternFlowIpv4DscpPhbCounter) HasStep() bool { +func (obj *patternFlowRSVPPathSenderTemplateLspTunnelIpv4LspIdCounter) HasStep() bool { return obj.obj.Step != nil } // description is TBD -// SetStep sets the uint32 value in the PatternFlowIpv4DscpPhbCounter object -func (obj *patternFlowIpv4DscpPhbCounter) SetStep(value uint32) PatternFlowIpv4DscpPhbCounter { +// SetStep sets the uint32 value in the PatternFlowRSVPPathSenderTemplateLspTunnelIpv4LspIdCounter object +func (obj *patternFlowRSVPPathSenderTemplateLspTunnelIpv4LspIdCounter) SetStep(value uint32) PatternFlowRSVPPathSenderTemplateLspTunnelIpv4LspIdCounter { obj.obj.Step = &value return obj @@ -309721,7 +356801,7 @@ func (obj *patternFlowIpv4DscpPhbCounter) SetStep(value uint32) PatternFlowIpv4D // description is TBD // Count returns a uint32 -func (obj *patternFlowIpv4DscpPhbCounter) Count() uint32 { +func (obj *patternFlowRSVPPathSenderTemplateLspTunnelIpv4LspIdCounter) Count() uint32 { return *obj.obj.Count @@ -309729,56 +356809,56 @@ func (obj *patternFlowIpv4DscpPhbCounter) Count() uint32 { // description is TBD // Count returns a uint32 -func (obj *patternFlowIpv4DscpPhbCounter) HasCount() bool { +func (obj *patternFlowRSVPPathSenderTemplateLspTunnelIpv4LspIdCounter) HasCount() bool { return obj.obj.Count != nil } // description is TBD -// SetCount sets the uint32 value in the PatternFlowIpv4DscpPhbCounter object -func (obj *patternFlowIpv4DscpPhbCounter) SetCount(value uint32) PatternFlowIpv4DscpPhbCounter { +// SetCount sets the uint32 value in the PatternFlowRSVPPathSenderTemplateLspTunnelIpv4LspIdCounter object +func (obj *patternFlowRSVPPathSenderTemplateLspTunnelIpv4LspIdCounter) SetCount(value uint32) PatternFlowRSVPPathSenderTemplateLspTunnelIpv4LspIdCounter { obj.obj.Count = &value return obj } -func (obj *patternFlowIpv4DscpPhbCounter) validateObj(vObj *validation, set_default bool) { +func (obj *patternFlowRSVPPathSenderTemplateLspTunnelIpv4LspIdCounter) validateObj(vObj *validation, set_default bool) { if set_default { obj.setDefault() } if obj.obj.Start != nil { - if *obj.obj.Start > 63 { + if *obj.obj.Start > 65535 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowIpv4DscpPhbCounter.Start <= 63 but Got %d", *obj.obj.Start)) + fmt.Sprintf("0 <= PatternFlowRSVPPathSenderTemplateLspTunnelIpv4LspIdCounter.Start <= 65535 but Got %d", *obj.obj.Start)) } } if obj.obj.Step != nil { - if *obj.obj.Step > 63 { + if *obj.obj.Step > 65535 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowIpv4DscpPhbCounter.Step <= 63 but Got %d", *obj.obj.Step)) + fmt.Sprintf("0 <= PatternFlowRSVPPathSenderTemplateLspTunnelIpv4LspIdCounter.Step <= 65535 but Got %d", *obj.obj.Step)) } } if obj.obj.Count != nil { - if *obj.obj.Count > 63 { + if *obj.obj.Count > 65535 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowIpv4DscpPhbCounter.Count <= 63 but Got %d", *obj.obj.Count)) + fmt.Sprintf("0 <= PatternFlowRSVPPathSenderTemplateLspTunnelIpv4LspIdCounter.Count <= 65535 but Got %d", *obj.obj.Count)) } } } -func (obj *patternFlowIpv4DscpPhbCounter) setDefault() { +func (obj *patternFlowRSVPPathSenderTemplateLspTunnelIpv4LspIdCounter) setDefault() { if obj.obj.Start == nil { obj.SetStart(0) } @@ -309791,29 +356871,29 @@ func (obj *patternFlowIpv4DscpPhbCounter) setDefault() { } -// ***** PatternFlowIpv4DscpPhbMetricTag ***** -type patternFlowIpv4DscpPhbMetricTag struct { +// ***** PatternFlowRSVPPathSenderTspecIntServVersionCounter ***** +type patternFlowRSVPPathSenderTspecIntServVersionCounter struct { validation - obj *otg.PatternFlowIpv4DscpPhbMetricTag + obj *otg.PatternFlowRSVPPathSenderTspecIntServVersionCounter } -func NewPatternFlowIpv4DscpPhbMetricTag() PatternFlowIpv4DscpPhbMetricTag { - obj := patternFlowIpv4DscpPhbMetricTag{obj: &otg.PatternFlowIpv4DscpPhbMetricTag{}} +func NewPatternFlowRSVPPathSenderTspecIntServVersionCounter() PatternFlowRSVPPathSenderTspecIntServVersionCounter { + obj := patternFlowRSVPPathSenderTspecIntServVersionCounter{obj: &otg.PatternFlowRSVPPathSenderTspecIntServVersionCounter{}} obj.setDefault() return &obj } -func (obj *patternFlowIpv4DscpPhbMetricTag) Msg() *otg.PatternFlowIpv4DscpPhbMetricTag { +func (obj *patternFlowRSVPPathSenderTspecIntServVersionCounter) Msg() *otg.PatternFlowRSVPPathSenderTspecIntServVersionCounter { return obj.obj } -func (obj *patternFlowIpv4DscpPhbMetricTag) SetMsg(msg *otg.PatternFlowIpv4DscpPhbMetricTag) PatternFlowIpv4DscpPhbMetricTag { +func (obj *patternFlowRSVPPathSenderTspecIntServVersionCounter) SetMsg(msg *otg.PatternFlowRSVPPathSenderTspecIntServVersionCounter) PatternFlowRSVPPathSenderTspecIntServVersionCounter { proto.Merge(obj.obj, msg) return obj } -func (obj *patternFlowIpv4DscpPhbMetricTag) ToProto() (*otg.PatternFlowIpv4DscpPhbMetricTag, error) { +func (obj *patternFlowRSVPPathSenderTspecIntServVersionCounter) ToProto() (*otg.PatternFlowRSVPPathSenderTspecIntServVersionCounter, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -309821,7 +356901,7 @@ func (obj *patternFlowIpv4DscpPhbMetricTag) ToProto() (*otg.PatternFlowIpv4DscpP return obj.Msg(), nil } -func (obj *patternFlowIpv4DscpPhbMetricTag) FromProto(msg *otg.PatternFlowIpv4DscpPhbMetricTag) (PatternFlowIpv4DscpPhbMetricTag, error) { +func (obj *patternFlowRSVPPathSenderTspecIntServVersionCounter) FromProto(msg *otg.PatternFlowRSVPPathSenderTspecIntServVersionCounter) (PatternFlowRSVPPathSenderTspecIntServVersionCounter, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -309830,7 +356910,7 @@ func (obj *patternFlowIpv4DscpPhbMetricTag) FromProto(msg *otg.PatternFlowIpv4Ds return newObj, nil } -func (obj *patternFlowIpv4DscpPhbMetricTag) ToPbText() (string, error) { +func (obj *patternFlowRSVPPathSenderTspecIntServVersionCounter) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -309842,7 +356922,7 @@ func (obj *patternFlowIpv4DscpPhbMetricTag) ToPbText() (string, error) { return string(protoMarshal), nil } -func (obj *patternFlowIpv4DscpPhbMetricTag) FromPbText(value string) error { +func (obj *patternFlowRSVPPathSenderTspecIntServVersionCounter) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj @@ -309855,7 +356935,7 @@ func (obj *patternFlowIpv4DscpPhbMetricTag) FromPbText(value string) error { return retObj } -func (obj *patternFlowIpv4DscpPhbMetricTag) ToYaml() (string, error) { +func (obj *patternFlowRSVPPathSenderTspecIntServVersionCounter) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -309876,7 +356956,7 @@ func (obj *patternFlowIpv4DscpPhbMetricTag) ToYaml() (string, error) { return string(data), nil } -func (obj *patternFlowIpv4DscpPhbMetricTag) FromYaml(value string) error { +func (obj *patternFlowRSVPPathSenderTspecIntServVersionCounter) FromYaml(value string) error { if value == "" { value = "{}" } @@ -309901,7 +356981,7 @@ func (obj *patternFlowIpv4DscpPhbMetricTag) FromYaml(value string) error { return nil } -func (obj *patternFlowIpv4DscpPhbMetricTag) ToJson() (string, error) { +func (obj *patternFlowRSVPPathSenderTspecIntServVersionCounter) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -309919,7 +356999,7 @@ func (obj *patternFlowIpv4DscpPhbMetricTag) ToJson() (string, error) { return string(data), nil } -func (obj *patternFlowIpv4DscpPhbMetricTag) FromJson(value string) error { +func (obj *patternFlowRSVPPathSenderTspecIntServVersionCounter) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -309940,19 +357020,19 @@ func (obj *patternFlowIpv4DscpPhbMetricTag) FromJson(value string) error { return nil } -func (obj *patternFlowIpv4DscpPhbMetricTag) validateToAndFrom() error { +func (obj *patternFlowRSVPPathSenderTspecIntServVersionCounter) validateToAndFrom() error { // emptyVars() obj.validateObj(&obj.validation, true) return obj.validationResult() } -func (obj *patternFlowIpv4DscpPhbMetricTag) Validate() error { +func (obj *patternFlowRSVPPathSenderTspecIntServVersionCounter) Validate() error { // emptyVars() obj.validateObj(&obj.validation, false) return obj.validationResult() } -func (obj *patternFlowIpv4DscpPhbMetricTag) String() string { +func (obj *patternFlowRSVPPathSenderTspecIntServVersionCounter) String() string { str, err := obj.ToYaml() if err != nil { return err.Error() @@ -309960,12 +357040,12 @@ func (obj *patternFlowIpv4DscpPhbMetricTag) String() string { return str } -func (obj *patternFlowIpv4DscpPhbMetricTag) Clone() (PatternFlowIpv4DscpPhbMetricTag, error) { +func (obj *patternFlowRSVPPathSenderTspecIntServVersionCounter) Clone() (PatternFlowRSVPPathSenderTspecIntServVersionCounter, error) { vErr := obj.Validate() if vErr != nil { return nil, vErr } - newObj := NewPatternFlowIpv4DscpPhbMetricTag() + newObj := NewPatternFlowRSVPPathSenderTspecIntServVersionCounter() data, err := proto.Marshal(obj.Msg()) if err != nil { return nil, err @@ -309977,183 +357057,199 @@ func (obj *patternFlowIpv4DscpPhbMetricTag) Clone() (PatternFlowIpv4DscpPhbMetri return newObj, nil } -// PatternFlowIpv4DscpPhbMetricTag is metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. -type PatternFlowIpv4DscpPhbMetricTag interface { +// PatternFlowRSVPPathSenderTspecIntServVersionCounter is integer counter pattern +type PatternFlowRSVPPathSenderTspecIntServVersionCounter interface { Validation - // Msg marshals PatternFlowIpv4DscpPhbMetricTag to protobuf object *otg.PatternFlowIpv4DscpPhbMetricTag + // Msg marshals PatternFlowRSVPPathSenderTspecIntServVersionCounter to protobuf object *otg.PatternFlowRSVPPathSenderTspecIntServVersionCounter // and doesn't set defaults - Msg() *otg.PatternFlowIpv4DscpPhbMetricTag - // SetMsg unmarshals PatternFlowIpv4DscpPhbMetricTag from protobuf object *otg.PatternFlowIpv4DscpPhbMetricTag + Msg() *otg.PatternFlowRSVPPathSenderTspecIntServVersionCounter + // SetMsg unmarshals PatternFlowRSVPPathSenderTspecIntServVersionCounter from protobuf object *otg.PatternFlowRSVPPathSenderTspecIntServVersionCounter // and doesn't set defaults - SetMsg(*otg.PatternFlowIpv4DscpPhbMetricTag) PatternFlowIpv4DscpPhbMetricTag - // ToProto marshals PatternFlowIpv4DscpPhbMetricTag to protobuf object *otg.PatternFlowIpv4DscpPhbMetricTag - ToProto() (*otg.PatternFlowIpv4DscpPhbMetricTag, error) - // ToPbText marshals PatternFlowIpv4DscpPhbMetricTag to protobuf text + SetMsg(*otg.PatternFlowRSVPPathSenderTspecIntServVersionCounter) PatternFlowRSVPPathSenderTspecIntServVersionCounter + // ToProto marshals PatternFlowRSVPPathSenderTspecIntServVersionCounter to protobuf object *otg.PatternFlowRSVPPathSenderTspecIntServVersionCounter + ToProto() (*otg.PatternFlowRSVPPathSenderTspecIntServVersionCounter, error) + // ToPbText marshals PatternFlowRSVPPathSenderTspecIntServVersionCounter to protobuf text ToPbText() (string, error) - // ToYaml marshals PatternFlowIpv4DscpPhbMetricTag to YAML text + // ToYaml marshals PatternFlowRSVPPathSenderTspecIntServVersionCounter to YAML text ToYaml() (string, error) - // ToJson marshals PatternFlowIpv4DscpPhbMetricTag to JSON text + // ToJson marshals PatternFlowRSVPPathSenderTspecIntServVersionCounter to JSON text ToJson() (string, error) - // FromProto unmarshals PatternFlowIpv4DscpPhbMetricTag from protobuf object *otg.PatternFlowIpv4DscpPhbMetricTag - FromProto(msg *otg.PatternFlowIpv4DscpPhbMetricTag) (PatternFlowIpv4DscpPhbMetricTag, error) - // FromPbText unmarshals PatternFlowIpv4DscpPhbMetricTag from protobuf text + // FromProto unmarshals PatternFlowRSVPPathSenderTspecIntServVersionCounter from protobuf object *otg.PatternFlowRSVPPathSenderTspecIntServVersionCounter + FromProto(msg *otg.PatternFlowRSVPPathSenderTspecIntServVersionCounter) (PatternFlowRSVPPathSenderTspecIntServVersionCounter, error) + // FromPbText unmarshals PatternFlowRSVPPathSenderTspecIntServVersionCounter from protobuf text FromPbText(value string) error - // FromYaml unmarshals PatternFlowIpv4DscpPhbMetricTag from YAML text + // FromYaml unmarshals PatternFlowRSVPPathSenderTspecIntServVersionCounter from YAML text FromYaml(value string) error - // FromJson unmarshals PatternFlowIpv4DscpPhbMetricTag from JSON text + // FromJson unmarshals PatternFlowRSVPPathSenderTspecIntServVersionCounter from JSON text FromJson(value string) error - // Validate validates PatternFlowIpv4DscpPhbMetricTag + // Validate validates PatternFlowRSVPPathSenderTspecIntServVersionCounter Validate() error // A stringer function String() string // Clones the object - Clone() (PatternFlowIpv4DscpPhbMetricTag, error) + Clone() (PatternFlowRSVPPathSenderTspecIntServVersionCounter, error) validateToAndFrom() error validateObj(vObj *validation, set_default bool) setDefault() - // Name returns string, set in PatternFlowIpv4DscpPhbMetricTag. - Name() string - // SetName assigns string provided by user to PatternFlowIpv4DscpPhbMetricTag - SetName(value string) PatternFlowIpv4DscpPhbMetricTag - // Offset returns uint32, set in PatternFlowIpv4DscpPhbMetricTag. - Offset() uint32 - // SetOffset assigns uint32 provided by user to PatternFlowIpv4DscpPhbMetricTag - SetOffset(value uint32) PatternFlowIpv4DscpPhbMetricTag - // HasOffset checks if Offset has been set in PatternFlowIpv4DscpPhbMetricTag - HasOffset() bool - // Length returns uint32, set in PatternFlowIpv4DscpPhbMetricTag. - Length() uint32 - // SetLength assigns uint32 provided by user to PatternFlowIpv4DscpPhbMetricTag - SetLength(value uint32) PatternFlowIpv4DscpPhbMetricTag - // HasLength checks if Length has been set in PatternFlowIpv4DscpPhbMetricTag - HasLength() bool + // Start returns uint32, set in PatternFlowRSVPPathSenderTspecIntServVersionCounter. + Start() uint32 + // SetStart assigns uint32 provided by user to PatternFlowRSVPPathSenderTspecIntServVersionCounter + SetStart(value uint32) PatternFlowRSVPPathSenderTspecIntServVersionCounter + // HasStart checks if Start has been set in PatternFlowRSVPPathSenderTspecIntServVersionCounter + HasStart() bool + // Step returns uint32, set in PatternFlowRSVPPathSenderTspecIntServVersionCounter. + Step() uint32 + // SetStep assigns uint32 provided by user to PatternFlowRSVPPathSenderTspecIntServVersionCounter + SetStep(value uint32) PatternFlowRSVPPathSenderTspecIntServVersionCounter + // HasStep checks if Step has been set in PatternFlowRSVPPathSenderTspecIntServVersionCounter + HasStep() bool + // Count returns uint32, set in PatternFlowRSVPPathSenderTspecIntServVersionCounter. + Count() uint32 + // SetCount assigns uint32 provided by user to PatternFlowRSVPPathSenderTspecIntServVersionCounter + SetCount(value uint32) PatternFlowRSVPPathSenderTspecIntServVersionCounter + // HasCount checks if Count has been set in PatternFlowRSVPPathSenderTspecIntServVersionCounter + HasCount() bool } -// Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field -// Name returns a string -func (obj *patternFlowIpv4DscpPhbMetricTag) Name() string { +// description is TBD +// Start returns a uint32 +func (obj *patternFlowRSVPPathSenderTspecIntServVersionCounter) Start() uint32 { - return *obj.obj.Name + return *obj.obj.Start } -// Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field -// SetName sets the string value in the PatternFlowIpv4DscpPhbMetricTag object -func (obj *patternFlowIpv4DscpPhbMetricTag) SetName(value string) PatternFlowIpv4DscpPhbMetricTag { +// description is TBD +// Start returns a uint32 +func (obj *patternFlowRSVPPathSenderTspecIntServVersionCounter) HasStart() bool { + return obj.obj.Start != nil +} - obj.obj.Name = &value +// description is TBD +// SetStart sets the uint32 value in the PatternFlowRSVPPathSenderTspecIntServVersionCounter object +func (obj *patternFlowRSVPPathSenderTspecIntServVersionCounter) SetStart(value uint32) PatternFlowRSVPPathSenderTspecIntServVersionCounter { + + obj.obj.Start = &value return obj } -// Offset in bits relative to start of corresponding header field -// Offset returns a uint32 -func (obj *patternFlowIpv4DscpPhbMetricTag) Offset() uint32 { +// description is TBD +// Step returns a uint32 +func (obj *patternFlowRSVPPathSenderTspecIntServVersionCounter) Step() uint32 { - return *obj.obj.Offset + return *obj.obj.Step } -// Offset in bits relative to start of corresponding header field -// Offset returns a uint32 -func (obj *patternFlowIpv4DscpPhbMetricTag) HasOffset() bool { - return obj.obj.Offset != nil +// description is TBD +// Step returns a uint32 +func (obj *patternFlowRSVPPathSenderTspecIntServVersionCounter) HasStep() bool { + return obj.obj.Step != nil } -// Offset in bits relative to start of corresponding header field -// SetOffset sets the uint32 value in the PatternFlowIpv4DscpPhbMetricTag object -func (obj *patternFlowIpv4DscpPhbMetricTag) SetOffset(value uint32) PatternFlowIpv4DscpPhbMetricTag { +// description is TBD +// SetStep sets the uint32 value in the PatternFlowRSVPPathSenderTspecIntServVersionCounter object +func (obj *patternFlowRSVPPathSenderTspecIntServVersionCounter) SetStep(value uint32) PatternFlowRSVPPathSenderTspecIntServVersionCounter { - obj.obj.Offset = &value + obj.obj.Step = &value return obj } -// Number of bits to track for metrics starting from configured offset of corresponding header field -// Length returns a uint32 -func (obj *patternFlowIpv4DscpPhbMetricTag) Length() uint32 { +// description is TBD +// Count returns a uint32 +func (obj *patternFlowRSVPPathSenderTspecIntServVersionCounter) Count() uint32 { - return *obj.obj.Length + return *obj.obj.Count } -// Number of bits to track for metrics starting from configured offset of corresponding header field -// Length returns a uint32 -func (obj *patternFlowIpv4DscpPhbMetricTag) HasLength() bool { - return obj.obj.Length != nil +// description is TBD +// Count returns a uint32 +func (obj *patternFlowRSVPPathSenderTspecIntServVersionCounter) HasCount() bool { + return obj.obj.Count != nil } -// Number of bits to track for metrics starting from configured offset of corresponding header field -// SetLength sets the uint32 value in the PatternFlowIpv4DscpPhbMetricTag object -func (obj *patternFlowIpv4DscpPhbMetricTag) SetLength(value uint32) PatternFlowIpv4DscpPhbMetricTag { +// description is TBD +// SetCount sets the uint32 value in the PatternFlowRSVPPathSenderTspecIntServVersionCounter object +func (obj *patternFlowRSVPPathSenderTspecIntServVersionCounter) SetCount(value uint32) PatternFlowRSVPPathSenderTspecIntServVersionCounter { - obj.obj.Length = &value + obj.obj.Count = &value return obj } -func (obj *patternFlowIpv4DscpPhbMetricTag) validateObj(vObj *validation, set_default bool) { +func (obj *patternFlowRSVPPathSenderTspecIntServVersionCounter) validateObj(vObj *validation, set_default bool) { if set_default { obj.setDefault() } - // Name is required - if obj.obj.Name == nil { - vObj.validationErrors = append(vObj.validationErrors, "Name is required field on interface PatternFlowIpv4DscpPhbMetricTag") + if obj.obj.Start != nil { + + if *obj.obj.Start > 15 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("0 <= PatternFlowRSVPPathSenderTspecIntServVersionCounter.Start <= 15 but Got %d", *obj.obj.Start)) + } + } - if obj.obj.Offset != nil { + if obj.obj.Step != nil { - if *obj.obj.Offset > 5 { + if *obj.obj.Step > 15 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowIpv4DscpPhbMetricTag.Offset <= 5 but Got %d", *obj.obj.Offset)) + fmt.Sprintf("0 <= PatternFlowRSVPPathSenderTspecIntServVersionCounter.Step <= 15 but Got %d", *obj.obj.Step)) } } - if obj.obj.Length != nil { + if obj.obj.Count != nil { - if *obj.obj.Length < 1 || *obj.obj.Length > 6 { + if *obj.obj.Count > 15 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("1 <= PatternFlowIpv4DscpPhbMetricTag.Length <= 6 but Got %d", *obj.obj.Length)) + fmt.Sprintf("0 <= PatternFlowRSVPPathSenderTspecIntServVersionCounter.Count <= 15 but Got %d", *obj.obj.Count)) } } } -func (obj *patternFlowIpv4DscpPhbMetricTag) setDefault() { - if obj.obj.Offset == nil { - obj.SetOffset(0) +func (obj *patternFlowRSVPPathSenderTspecIntServVersionCounter) setDefault() { + if obj.obj.Start == nil { + obj.SetStart(0) } - if obj.obj.Length == nil { - obj.SetLength(6) + if obj.obj.Step == nil { + obj.SetStep(1) + } + if obj.obj.Count == nil { + obj.SetCount(1) } } -// ***** PatternFlowIpv4DscpEcnCounter ***** -type patternFlowIpv4DscpEcnCounter struct { +// ***** PatternFlowRSVPPathSenderTspecIntServReserved1Counter ***** +type patternFlowRSVPPathSenderTspecIntServReserved1Counter struct { validation - obj *otg.PatternFlowIpv4DscpEcnCounter + obj *otg.PatternFlowRSVPPathSenderTspecIntServReserved1Counter } -func NewPatternFlowIpv4DscpEcnCounter() PatternFlowIpv4DscpEcnCounter { - obj := patternFlowIpv4DscpEcnCounter{obj: &otg.PatternFlowIpv4DscpEcnCounter{}} +func NewPatternFlowRSVPPathSenderTspecIntServReserved1Counter() PatternFlowRSVPPathSenderTspecIntServReserved1Counter { + obj := patternFlowRSVPPathSenderTspecIntServReserved1Counter{obj: &otg.PatternFlowRSVPPathSenderTspecIntServReserved1Counter{}} obj.setDefault() return &obj } -func (obj *patternFlowIpv4DscpEcnCounter) Msg() *otg.PatternFlowIpv4DscpEcnCounter { +func (obj *patternFlowRSVPPathSenderTspecIntServReserved1Counter) Msg() *otg.PatternFlowRSVPPathSenderTspecIntServReserved1Counter { return obj.obj } -func (obj *patternFlowIpv4DscpEcnCounter) SetMsg(msg *otg.PatternFlowIpv4DscpEcnCounter) PatternFlowIpv4DscpEcnCounter { +func (obj *patternFlowRSVPPathSenderTspecIntServReserved1Counter) SetMsg(msg *otg.PatternFlowRSVPPathSenderTspecIntServReserved1Counter) PatternFlowRSVPPathSenderTspecIntServReserved1Counter { proto.Merge(obj.obj, msg) return obj } -func (obj *patternFlowIpv4DscpEcnCounter) ToProto() (*otg.PatternFlowIpv4DscpEcnCounter, error) { +func (obj *patternFlowRSVPPathSenderTspecIntServReserved1Counter) ToProto() (*otg.PatternFlowRSVPPathSenderTspecIntServReserved1Counter, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -310161,7 +357257,7 @@ func (obj *patternFlowIpv4DscpEcnCounter) ToProto() (*otg.PatternFlowIpv4DscpEcn return obj.Msg(), nil } -func (obj *patternFlowIpv4DscpEcnCounter) FromProto(msg *otg.PatternFlowIpv4DscpEcnCounter) (PatternFlowIpv4DscpEcnCounter, error) { +func (obj *patternFlowRSVPPathSenderTspecIntServReserved1Counter) FromProto(msg *otg.PatternFlowRSVPPathSenderTspecIntServReserved1Counter) (PatternFlowRSVPPathSenderTspecIntServReserved1Counter, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -310170,7 +357266,7 @@ func (obj *patternFlowIpv4DscpEcnCounter) FromProto(msg *otg.PatternFlowIpv4Dscp return newObj, nil } -func (obj *patternFlowIpv4DscpEcnCounter) ToPbText() (string, error) { +func (obj *patternFlowRSVPPathSenderTspecIntServReserved1Counter) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -310182,7 +357278,7 @@ func (obj *patternFlowIpv4DscpEcnCounter) ToPbText() (string, error) { return string(protoMarshal), nil } -func (obj *patternFlowIpv4DscpEcnCounter) FromPbText(value string) error { +func (obj *patternFlowRSVPPathSenderTspecIntServReserved1Counter) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj @@ -310195,7 +357291,7 @@ func (obj *patternFlowIpv4DscpEcnCounter) FromPbText(value string) error { return retObj } -func (obj *patternFlowIpv4DscpEcnCounter) ToYaml() (string, error) { +func (obj *patternFlowRSVPPathSenderTspecIntServReserved1Counter) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -310216,7 +357312,7 @@ func (obj *patternFlowIpv4DscpEcnCounter) ToYaml() (string, error) { return string(data), nil } -func (obj *patternFlowIpv4DscpEcnCounter) FromYaml(value string) error { +func (obj *patternFlowRSVPPathSenderTspecIntServReserved1Counter) FromYaml(value string) error { if value == "" { value = "{}" } @@ -310241,7 +357337,7 @@ func (obj *patternFlowIpv4DscpEcnCounter) FromYaml(value string) error { return nil } -func (obj *patternFlowIpv4DscpEcnCounter) ToJson() (string, error) { +func (obj *patternFlowRSVPPathSenderTspecIntServReserved1Counter) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -310259,7 +357355,7 @@ func (obj *patternFlowIpv4DscpEcnCounter) ToJson() (string, error) { return string(data), nil } -func (obj *patternFlowIpv4DscpEcnCounter) FromJson(value string) error { +func (obj *patternFlowRSVPPathSenderTspecIntServReserved1Counter) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -310280,19 +357376,19 @@ func (obj *patternFlowIpv4DscpEcnCounter) FromJson(value string) error { return nil } -func (obj *patternFlowIpv4DscpEcnCounter) validateToAndFrom() error { +func (obj *patternFlowRSVPPathSenderTspecIntServReserved1Counter) validateToAndFrom() error { // emptyVars() obj.validateObj(&obj.validation, true) return obj.validationResult() } -func (obj *patternFlowIpv4DscpEcnCounter) Validate() error { +func (obj *patternFlowRSVPPathSenderTspecIntServReserved1Counter) Validate() error { // emptyVars() obj.validateObj(&obj.validation, false) return obj.validationResult() } -func (obj *patternFlowIpv4DscpEcnCounter) String() string { +func (obj *patternFlowRSVPPathSenderTspecIntServReserved1Counter) String() string { str, err := obj.ToYaml() if err != nil { return err.Error() @@ -310300,12 +357396,12 @@ func (obj *patternFlowIpv4DscpEcnCounter) String() string { return str } -func (obj *patternFlowIpv4DscpEcnCounter) Clone() (PatternFlowIpv4DscpEcnCounter, error) { +func (obj *patternFlowRSVPPathSenderTspecIntServReserved1Counter) Clone() (PatternFlowRSVPPathSenderTspecIntServReserved1Counter, error) { vErr := obj.Validate() if vErr != nil { return nil, vErr } - newObj := NewPatternFlowIpv4DscpEcnCounter() + newObj := NewPatternFlowRSVPPathSenderTspecIntServReserved1Counter() data, err := proto.Marshal(obj.Msg()) if err != nil { return nil, err @@ -310317,63 +357413,63 @@ func (obj *patternFlowIpv4DscpEcnCounter) Clone() (PatternFlowIpv4DscpEcnCounter return newObj, nil } -// PatternFlowIpv4DscpEcnCounter is integer counter pattern -type PatternFlowIpv4DscpEcnCounter interface { +// PatternFlowRSVPPathSenderTspecIntServReserved1Counter is integer counter pattern +type PatternFlowRSVPPathSenderTspecIntServReserved1Counter interface { Validation - // Msg marshals PatternFlowIpv4DscpEcnCounter to protobuf object *otg.PatternFlowIpv4DscpEcnCounter + // Msg marshals PatternFlowRSVPPathSenderTspecIntServReserved1Counter to protobuf object *otg.PatternFlowRSVPPathSenderTspecIntServReserved1Counter // and doesn't set defaults - Msg() *otg.PatternFlowIpv4DscpEcnCounter - // SetMsg unmarshals PatternFlowIpv4DscpEcnCounter from protobuf object *otg.PatternFlowIpv4DscpEcnCounter + Msg() *otg.PatternFlowRSVPPathSenderTspecIntServReserved1Counter + // SetMsg unmarshals PatternFlowRSVPPathSenderTspecIntServReserved1Counter from protobuf object *otg.PatternFlowRSVPPathSenderTspecIntServReserved1Counter // and doesn't set defaults - SetMsg(*otg.PatternFlowIpv4DscpEcnCounter) PatternFlowIpv4DscpEcnCounter - // ToProto marshals PatternFlowIpv4DscpEcnCounter to protobuf object *otg.PatternFlowIpv4DscpEcnCounter - ToProto() (*otg.PatternFlowIpv4DscpEcnCounter, error) - // ToPbText marshals PatternFlowIpv4DscpEcnCounter to protobuf text + SetMsg(*otg.PatternFlowRSVPPathSenderTspecIntServReserved1Counter) PatternFlowRSVPPathSenderTspecIntServReserved1Counter + // ToProto marshals PatternFlowRSVPPathSenderTspecIntServReserved1Counter to protobuf object *otg.PatternFlowRSVPPathSenderTspecIntServReserved1Counter + ToProto() (*otg.PatternFlowRSVPPathSenderTspecIntServReserved1Counter, error) + // ToPbText marshals PatternFlowRSVPPathSenderTspecIntServReserved1Counter to protobuf text ToPbText() (string, error) - // ToYaml marshals PatternFlowIpv4DscpEcnCounter to YAML text + // ToYaml marshals PatternFlowRSVPPathSenderTspecIntServReserved1Counter to YAML text ToYaml() (string, error) - // ToJson marshals PatternFlowIpv4DscpEcnCounter to JSON text + // ToJson marshals PatternFlowRSVPPathSenderTspecIntServReserved1Counter to JSON text ToJson() (string, error) - // FromProto unmarshals PatternFlowIpv4DscpEcnCounter from protobuf object *otg.PatternFlowIpv4DscpEcnCounter - FromProto(msg *otg.PatternFlowIpv4DscpEcnCounter) (PatternFlowIpv4DscpEcnCounter, error) - // FromPbText unmarshals PatternFlowIpv4DscpEcnCounter from protobuf text + // FromProto unmarshals PatternFlowRSVPPathSenderTspecIntServReserved1Counter from protobuf object *otg.PatternFlowRSVPPathSenderTspecIntServReserved1Counter + FromProto(msg *otg.PatternFlowRSVPPathSenderTspecIntServReserved1Counter) (PatternFlowRSVPPathSenderTspecIntServReserved1Counter, error) + // FromPbText unmarshals PatternFlowRSVPPathSenderTspecIntServReserved1Counter from protobuf text FromPbText(value string) error - // FromYaml unmarshals PatternFlowIpv4DscpEcnCounter from YAML text + // FromYaml unmarshals PatternFlowRSVPPathSenderTspecIntServReserved1Counter from YAML text FromYaml(value string) error - // FromJson unmarshals PatternFlowIpv4DscpEcnCounter from JSON text + // FromJson unmarshals PatternFlowRSVPPathSenderTspecIntServReserved1Counter from JSON text FromJson(value string) error - // Validate validates PatternFlowIpv4DscpEcnCounter + // Validate validates PatternFlowRSVPPathSenderTspecIntServReserved1Counter Validate() error // A stringer function String() string // Clones the object - Clone() (PatternFlowIpv4DscpEcnCounter, error) + Clone() (PatternFlowRSVPPathSenderTspecIntServReserved1Counter, error) validateToAndFrom() error validateObj(vObj *validation, set_default bool) setDefault() - // Start returns uint32, set in PatternFlowIpv4DscpEcnCounter. + // Start returns uint32, set in PatternFlowRSVPPathSenderTspecIntServReserved1Counter. Start() uint32 - // SetStart assigns uint32 provided by user to PatternFlowIpv4DscpEcnCounter - SetStart(value uint32) PatternFlowIpv4DscpEcnCounter - // HasStart checks if Start has been set in PatternFlowIpv4DscpEcnCounter + // SetStart assigns uint32 provided by user to PatternFlowRSVPPathSenderTspecIntServReserved1Counter + SetStart(value uint32) PatternFlowRSVPPathSenderTspecIntServReserved1Counter + // HasStart checks if Start has been set in PatternFlowRSVPPathSenderTspecIntServReserved1Counter HasStart() bool - // Step returns uint32, set in PatternFlowIpv4DscpEcnCounter. + // Step returns uint32, set in PatternFlowRSVPPathSenderTspecIntServReserved1Counter. Step() uint32 - // SetStep assigns uint32 provided by user to PatternFlowIpv4DscpEcnCounter - SetStep(value uint32) PatternFlowIpv4DscpEcnCounter - // HasStep checks if Step has been set in PatternFlowIpv4DscpEcnCounter + // SetStep assigns uint32 provided by user to PatternFlowRSVPPathSenderTspecIntServReserved1Counter + SetStep(value uint32) PatternFlowRSVPPathSenderTspecIntServReserved1Counter + // HasStep checks if Step has been set in PatternFlowRSVPPathSenderTspecIntServReserved1Counter HasStep() bool - // Count returns uint32, set in PatternFlowIpv4DscpEcnCounter. + // Count returns uint32, set in PatternFlowRSVPPathSenderTspecIntServReserved1Counter. Count() uint32 - // SetCount assigns uint32 provided by user to PatternFlowIpv4DscpEcnCounter - SetCount(value uint32) PatternFlowIpv4DscpEcnCounter - // HasCount checks if Count has been set in PatternFlowIpv4DscpEcnCounter + // SetCount assigns uint32 provided by user to PatternFlowRSVPPathSenderTspecIntServReserved1Counter + SetCount(value uint32) PatternFlowRSVPPathSenderTspecIntServReserved1Counter + // HasCount checks if Count has been set in PatternFlowRSVPPathSenderTspecIntServReserved1Counter HasCount() bool } // description is TBD // Start returns a uint32 -func (obj *patternFlowIpv4DscpEcnCounter) Start() uint32 { +func (obj *patternFlowRSVPPathSenderTspecIntServReserved1Counter) Start() uint32 { return *obj.obj.Start @@ -310381,13 +357477,13 @@ func (obj *patternFlowIpv4DscpEcnCounter) Start() uint32 { // description is TBD // Start returns a uint32 -func (obj *patternFlowIpv4DscpEcnCounter) HasStart() bool { +func (obj *patternFlowRSVPPathSenderTspecIntServReserved1Counter) HasStart() bool { return obj.obj.Start != nil } // description is TBD -// SetStart sets the uint32 value in the PatternFlowIpv4DscpEcnCounter object -func (obj *patternFlowIpv4DscpEcnCounter) SetStart(value uint32) PatternFlowIpv4DscpEcnCounter { +// SetStart sets the uint32 value in the PatternFlowRSVPPathSenderTspecIntServReserved1Counter object +func (obj *patternFlowRSVPPathSenderTspecIntServReserved1Counter) SetStart(value uint32) PatternFlowRSVPPathSenderTspecIntServReserved1Counter { obj.obj.Start = &value return obj @@ -310395,7 +357491,7 @@ func (obj *patternFlowIpv4DscpEcnCounter) SetStart(value uint32) PatternFlowIpv4 // description is TBD // Step returns a uint32 -func (obj *patternFlowIpv4DscpEcnCounter) Step() uint32 { +func (obj *patternFlowRSVPPathSenderTspecIntServReserved1Counter) Step() uint32 { return *obj.obj.Step @@ -310403,13 +357499,13 @@ func (obj *patternFlowIpv4DscpEcnCounter) Step() uint32 { // description is TBD // Step returns a uint32 -func (obj *patternFlowIpv4DscpEcnCounter) HasStep() bool { +func (obj *patternFlowRSVPPathSenderTspecIntServReserved1Counter) HasStep() bool { return obj.obj.Step != nil } // description is TBD -// SetStep sets the uint32 value in the PatternFlowIpv4DscpEcnCounter object -func (obj *patternFlowIpv4DscpEcnCounter) SetStep(value uint32) PatternFlowIpv4DscpEcnCounter { +// SetStep sets the uint32 value in the PatternFlowRSVPPathSenderTspecIntServReserved1Counter object +func (obj *patternFlowRSVPPathSenderTspecIntServReserved1Counter) SetStep(value uint32) PatternFlowRSVPPathSenderTspecIntServReserved1Counter { obj.obj.Step = &value return obj @@ -310417,7 +357513,7 @@ func (obj *patternFlowIpv4DscpEcnCounter) SetStep(value uint32) PatternFlowIpv4D // description is TBD // Count returns a uint32 -func (obj *patternFlowIpv4DscpEcnCounter) Count() uint32 { +func (obj *patternFlowRSVPPathSenderTspecIntServReserved1Counter) Count() uint32 { return *obj.obj.Count @@ -310425,56 +357521,56 @@ func (obj *patternFlowIpv4DscpEcnCounter) Count() uint32 { // description is TBD // Count returns a uint32 -func (obj *patternFlowIpv4DscpEcnCounter) HasCount() bool { +func (obj *patternFlowRSVPPathSenderTspecIntServReserved1Counter) HasCount() bool { return obj.obj.Count != nil } // description is TBD -// SetCount sets the uint32 value in the PatternFlowIpv4DscpEcnCounter object -func (obj *patternFlowIpv4DscpEcnCounter) SetCount(value uint32) PatternFlowIpv4DscpEcnCounter { +// SetCount sets the uint32 value in the PatternFlowRSVPPathSenderTspecIntServReserved1Counter object +func (obj *patternFlowRSVPPathSenderTspecIntServReserved1Counter) SetCount(value uint32) PatternFlowRSVPPathSenderTspecIntServReserved1Counter { obj.obj.Count = &value return obj } -func (obj *patternFlowIpv4DscpEcnCounter) validateObj(vObj *validation, set_default bool) { +func (obj *patternFlowRSVPPathSenderTspecIntServReserved1Counter) validateObj(vObj *validation, set_default bool) { if set_default { obj.setDefault() } if obj.obj.Start != nil { - if *obj.obj.Start > 3 { + if *obj.obj.Start > 4095 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowIpv4DscpEcnCounter.Start <= 3 but Got %d", *obj.obj.Start)) + fmt.Sprintf("0 <= PatternFlowRSVPPathSenderTspecIntServReserved1Counter.Start <= 4095 but Got %d", *obj.obj.Start)) } } if obj.obj.Step != nil { - if *obj.obj.Step > 3 { + if *obj.obj.Step > 4095 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowIpv4DscpEcnCounter.Step <= 3 but Got %d", *obj.obj.Step)) + fmt.Sprintf("0 <= PatternFlowRSVPPathSenderTspecIntServReserved1Counter.Step <= 4095 but Got %d", *obj.obj.Step)) } } if obj.obj.Count != nil { - if *obj.obj.Count > 3 { + if *obj.obj.Count > 4095 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowIpv4DscpEcnCounter.Count <= 3 but Got %d", *obj.obj.Count)) + fmt.Sprintf("0 <= PatternFlowRSVPPathSenderTspecIntServReserved1Counter.Count <= 4095 but Got %d", *obj.obj.Count)) } } } -func (obj *patternFlowIpv4DscpEcnCounter) setDefault() { +func (obj *patternFlowRSVPPathSenderTspecIntServReserved1Counter) setDefault() { if obj.obj.Start == nil { obj.SetStart(0) } @@ -310487,29 +357583,29 @@ func (obj *patternFlowIpv4DscpEcnCounter) setDefault() { } -// ***** PatternFlowIpv4DscpEcnMetricTag ***** -type patternFlowIpv4DscpEcnMetricTag struct { +// ***** PatternFlowRSVPPathSenderTspecIntServOverallLengthCounter ***** +type patternFlowRSVPPathSenderTspecIntServOverallLengthCounter struct { validation - obj *otg.PatternFlowIpv4DscpEcnMetricTag + obj *otg.PatternFlowRSVPPathSenderTspecIntServOverallLengthCounter } -func NewPatternFlowIpv4DscpEcnMetricTag() PatternFlowIpv4DscpEcnMetricTag { - obj := patternFlowIpv4DscpEcnMetricTag{obj: &otg.PatternFlowIpv4DscpEcnMetricTag{}} +func NewPatternFlowRSVPPathSenderTspecIntServOverallLengthCounter() PatternFlowRSVPPathSenderTspecIntServOverallLengthCounter { + obj := patternFlowRSVPPathSenderTspecIntServOverallLengthCounter{obj: &otg.PatternFlowRSVPPathSenderTspecIntServOverallLengthCounter{}} obj.setDefault() return &obj } -func (obj *patternFlowIpv4DscpEcnMetricTag) Msg() *otg.PatternFlowIpv4DscpEcnMetricTag { +func (obj *patternFlowRSVPPathSenderTspecIntServOverallLengthCounter) Msg() *otg.PatternFlowRSVPPathSenderTspecIntServOverallLengthCounter { return obj.obj } -func (obj *patternFlowIpv4DscpEcnMetricTag) SetMsg(msg *otg.PatternFlowIpv4DscpEcnMetricTag) PatternFlowIpv4DscpEcnMetricTag { +func (obj *patternFlowRSVPPathSenderTspecIntServOverallLengthCounter) SetMsg(msg *otg.PatternFlowRSVPPathSenderTspecIntServOverallLengthCounter) PatternFlowRSVPPathSenderTspecIntServOverallLengthCounter { proto.Merge(obj.obj, msg) return obj } -func (obj *patternFlowIpv4DscpEcnMetricTag) ToProto() (*otg.PatternFlowIpv4DscpEcnMetricTag, error) { +func (obj *patternFlowRSVPPathSenderTspecIntServOverallLengthCounter) ToProto() (*otg.PatternFlowRSVPPathSenderTspecIntServOverallLengthCounter, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -310517,7 +357613,7 @@ func (obj *patternFlowIpv4DscpEcnMetricTag) ToProto() (*otg.PatternFlowIpv4DscpE return obj.Msg(), nil } -func (obj *patternFlowIpv4DscpEcnMetricTag) FromProto(msg *otg.PatternFlowIpv4DscpEcnMetricTag) (PatternFlowIpv4DscpEcnMetricTag, error) { +func (obj *patternFlowRSVPPathSenderTspecIntServOverallLengthCounter) FromProto(msg *otg.PatternFlowRSVPPathSenderTspecIntServOverallLengthCounter) (PatternFlowRSVPPathSenderTspecIntServOverallLengthCounter, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -310526,7 +357622,7 @@ func (obj *patternFlowIpv4DscpEcnMetricTag) FromProto(msg *otg.PatternFlowIpv4Ds return newObj, nil } -func (obj *patternFlowIpv4DscpEcnMetricTag) ToPbText() (string, error) { +func (obj *patternFlowRSVPPathSenderTspecIntServOverallLengthCounter) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -310538,7 +357634,7 @@ func (obj *patternFlowIpv4DscpEcnMetricTag) ToPbText() (string, error) { return string(protoMarshal), nil } -func (obj *patternFlowIpv4DscpEcnMetricTag) FromPbText(value string) error { +func (obj *patternFlowRSVPPathSenderTspecIntServOverallLengthCounter) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj @@ -310551,7 +357647,7 @@ func (obj *patternFlowIpv4DscpEcnMetricTag) FromPbText(value string) error { return retObj } -func (obj *patternFlowIpv4DscpEcnMetricTag) ToYaml() (string, error) { +func (obj *patternFlowRSVPPathSenderTspecIntServOverallLengthCounter) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -310572,7 +357668,7 @@ func (obj *patternFlowIpv4DscpEcnMetricTag) ToYaml() (string, error) { return string(data), nil } -func (obj *patternFlowIpv4DscpEcnMetricTag) FromYaml(value string) error { +func (obj *patternFlowRSVPPathSenderTspecIntServOverallLengthCounter) FromYaml(value string) error { if value == "" { value = "{}" } @@ -310597,7 +357693,7 @@ func (obj *patternFlowIpv4DscpEcnMetricTag) FromYaml(value string) error { return nil } -func (obj *patternFlowIpv4DscpEcnMetricTag) ToJson() (string, error) { +func (obj *patternFlowRSVPPathSenderTspecIntServOverallLengthCounter) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -310615,7 +357711,7 @@ func (obj *patternFlowIpv4DscpEcnMetricTag) ToJson() (string, error) { return string(data), nil } -func (obj *patternFlowIpv4DscpEcnMetricTag) FromJson(value string) error { +func (obj *patternFlowRSVPPathSenderTspecIntServOverallLengthCounter) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -310636,19 +357732,19 @@ func (obj *patternFlowIpv4DscpEcnMetricTag) FromJson(value string) error { return nil } -func (obj *patternFlowIpv4DscpEcnMetricTag) validateToAndFrom() error { +func (obj *patternFlowRSVPPathSenderTspecIntServOverallLengthCounter) validateToAndFrom() error { // emptyVars() obj.validateObj(&obj.validation, true) return obj.validationResult() } -func (obj *patternFlowIpv4DscpEcnMetricTag) Validate() error { +func (obj *patternFlowRSVPPathSenderTspecIntServOverallLengthCounter) Validate() error { // emptyVars() obj.validateObj(&obj.validation, false) return obj.validationResult() } -func (obj *patternFlowIpv4DscpEcnMetricTag) String() string { +func (obj *patternFlowRSVPPathSenderTspecIntServOverallLengthCounter) String() string { str, err := obj.ToYaml() if err != nil { return err.Error() @@ -310656,12 +357752,12 @@ func (obj *patternFlowIpv4DscpEcnMetricTag) String() string { return str } -func (obj *patternFlowIpv4DscpEcnMetricTag) Clone() (PatternFlowIpv4DscpEcnMetricTag, error) { +func (obj *patternFlowRSVPPathSenderTspecIntServOverallLengthCounter) Clone() (PatternFlowRSVPPathSenderTspecIntServOverallLengthCounter, error) { vErr := obj.Validate() if vErr != nil { return nil, vErr } - newObj := NewPatternFlowIpv4DscpEcnMetricTag() + newObj := NewPatternFlowRSVPPathSenderTspecIntServOverallLengthCounter() data, err := proto.Marshal(obj.Msg()) if err != nil { return nil, err @@ -310673,183 +357769,199 @@ func (obj *patternFlowIpv4DscpEcnMetricTag) Clone() (PatternFlowIpv4DscpEcnMetri return newObj, nil } -// PatternFlowIpv4DscpEcnMetricTag is metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. -type PatternFlowIpv4DscpEcnMetricTag interface { +// PatternFlowRSVPPathSenderTspecIntServOverallLengthCounter is integer counter pattern +type PatternFlowRSVPPathSenderTspecIntServOverallLengthCounter interface { Validation - // Msg marshals PatternFlowIpv4DscpEcnMetricTag to protobuf object *otg.PatternFlowIpv4DscpEcnMetricTag + // Msg marshals PatternFlowRSVPPathSenderTspecIntServOverallLengthCounter to protobuf object *otg.PatternFlowRSVPPathSenderTspecIntServOverallLengthCounter // and doesn't set defaults - Msg() *otg.PatternFlowIpv4DscpEcnMetricTag - // SetMsg unmarshals PatternFlowIpv4DscpEcnMetricTag from protobuf object *otg.PatternFlowIpv4DscpEcnMetricTag + Msg() *otg.PatternFlowRSVPPathSenderTspecIntServOverallLengthCounter + // SetMsg unmarshals PatternFlowRSVPPathSenderTspecIntServOverallLengthCounter from protobuf object *otg.PatternFlowRSVPPathSenderTspecIntServOverallLengthCounter // and doesn't set defaults - SetMsg(*otg.PatternFlowIpv4DscpEcnMetricTag) PatternFlowIpv4DscpEcnMetricTag - // ToProto marshals PatternFlowIpv4DscpEcnMetricTag to protobuf object *otg.PatternFlowIpv4DscpEcnMetricTag - ToProto() (*otg.PatternFlowIpv4DscpEcnMetricTag, error) - // ToPbText marshals PatternFlowIpv4DscpEcnMetricTag to protobuf text + SetMsg(*otg.PatternFlowRSVPPathSenderTspecIntServOverallLengthCounter) PatternFlowRSVPPathSenderTspecIntServOverallLengthCounter + // ToProto marshals PatternFlowRSVPPathSenderTspecIntServOverallLengthCounter to protobuf object *otg.PatternFlowRSVPPathSenderTspecIntServOverallLengthCounter + ToProto() (*otg.PatternFlowRSVPPathSenderTspecIntServOverallLengthCounter, error) + // ToPbText marshals PatternFlowRSVPPathSenderTspecIntServOverallLengthCounter to protobuf text ToPbText() (string, error) - // ToYaml marshals PatternFlowIpv4DscpEcnMetricTag to YAML text + // ToYaml marshals PatternFlowRSVPPathSenderTspecIntServOverallLengthCounter to YAML text ToYaml() (string, error) - // ToJson marshals PatternFlowIpv4DscpEcnMetricTag to JSON text + // ToJson marshals PatternFlowRSVPPathSenderTspecIntServOverallLengthCounter to JSON text ToJson() (string, error) - // FromProto unmarshals PatternFlowIpv4DscpEcnMetricTag from protobuf object *otg.PatternFlowIpv4DscpEcnMetricTag - FromProto(msg *otg.PatternFlowIpv4DscpEcnMetricTag) (PatternFlowIpv4DscpEcnMetricTag, error) - // FromPbText unmarshals PatternFlowIpv4DscpEcnMetricTag from protobuf text + // FromProto unmarshals PatternFlowRSVPPathSenderTspecIntServOverallLengthCounter from protobuf object *otg.PatternFlowRSVPPathSenderTspecIntServOverallLengthCounter + FromProto(msg *otg.PatternFlowRSVPPathSenderTspecIntServOverallLengthCounter) (PatternFlowRSVPPathSenderTspecIntServOverallLengthCounter, error) + // FromPbText unmarshals PatternFlowRSVPPathSenderTspecIntServOverallLengthCounter from protobuf text FromPbText(value string) error - // FromYaml unmarshals PatternFlowIpv4DscpEcnMetricTag from YAML text + // FromYaml unmarshals PatternFlowRSVPPathSenderTspecIntServOverallLengthCounter from YAML text FromYaml(value string) error - // FromJson unmarshals PatternFlowIpv4DscpEcnMetricTag from JSON text + // FromJson unmarshals PatternFlowRSVPPathSenderTspecIntServOverallLengthCounter from JSON text FromJson(value string) error - // Validate validates PatternFlowIpv4DscpEcnMetricTag + // Validate validates PatternFlowRSVPPathSenderTspecIntServOverallLengthCounter Validate() error // A stringer function String() string // Clones the object - Clone() (PatternFlowIpv4DscpEcnMetricTag, error) + Clone() (PatternFlowRSVPPathSenderTspecIntServOverallLengthCounter, error) validateToAndFrom() error validateObj(vObj *validation, set_default bool) setDefault() - // Name returns string, set in PatternFlowIpv4DscpEcnMetricTag. - Name() string - // SetName assigns string provided by user to PatternFlowIpv4DscpEcnMetricTag - SetName(value string) PatternFlowIpv4DscpEcnMetricTag - // Offset returns uint32, set in PatternFlowIpv4DscpEcnMetricTag. - Offset() uint32 - // SetOffset assigns uint32 provided by user to PatternFlowIpv4DscpEcnMetricTag - SetOffset(value uint32) PatternFlowIpv4DscpEcnMetricTag - // HasOffset checks if Offset has been set in PatternFlowIpv4DscpEcnMetricTag - HasOffset() bool - // Length returns uint32, set in PatternFlowIpv4DscpEcnMetricTag. - Length() uint32 - // SetLength assigns uint32 provided by user to PatternFlowIpv4DscpEcnMetricTag - SetLength(value uint32) PatternFlowIpv4DscpEcnMetricTag - // HasLength checks if Length has been set in PatternFlowIpv4DscpEcnMetricTag - HasLength() bool + // Start returns uint32, set in PatternFlowRSVPPathSenderTspecIntServOverallLengthCounter. + Start() uint32 + // SetStart assigns uint32 provided by user to PatternFlowRSVPPathSenderTspecIntServOverallLengthCounter + SetStart(value uint32) PatternFlowRSVPPathSenderTspecIntServOverallLengthCounter + // HasStart checks if Start has been set in PatternFlowRSVPPathSenderTspecIntServOverallLengthCounter + HasStart() bool + // Step returns uint32, set in PatternFlowRSVPPathSenderTspecIntServOverallLengthCounter. + Step() uint32 + // SetStep assigns uint32 provided by user to PatternFlowRSVPPathSenderTspecIntServOverallLengthCounter + SetStep(value uint32) PatternFlowRSVPPathSenderTspecIntServOverallLengthCounter + // HasStep checks if Step has been set in PatternFlowRSVPPathSenderTspecIntServOverallLengthCounter + HasStep() bool + // Count returns uint32, set in PatternFlowRSVPPathSenderTspecIntServOverallLengthCounter. + Count() uint32 + // SetCount assigns uint32 provided by user to PatternFlowRSVPPathSenderTspecIntServOverallLengthCounter + SetCount(value uint32) PatternFlowRSVPPathSenderTspecIntServOverallLengthCounter + // HasCount checks if Count has been set in PatternFlowRSVPPathSenderTspecIntServOverallLengthCounter + HasCount() bool } -// Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field -// Name returns a string -func (obj *patternFlowIpv4DscpEcnMetricTag) Name() string { +// description is TBD +// Start returns a uint32 +func (obj *patternFlowRSVPPathSenderTspecIntServOverallLengthCounter) Start() uint32 { - return *obj.obj.Name + return *obj.obj.Start } -// Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field -// SetName sets the string value in the PatternFlowIpv4DscpEcnMetricTag object -func (obj *patternFlowIpv4DscpEcnMetricTag) SetName(value string) PatternFlowIpv4DscpEcnMetricTag { +// description is TBD +// Start returns a uint32 +func (obj *patternFlowRSVPPathSenderTspecIntServOverallLengthCounter) HasStart() bool { + return obj.obj.Start != nil +} - obj.obj.Name = &value +// description is TBD +// SetStart sets the uint32 value in the PatternFlowRSVPPathSenderTspecIntServOverallLengthCounter object +func (obj *patternFlowRSVPPathSenderTspecIntServOverallLengthCounter) SetStart(value uint32) PatternFlowRSVPPathSenderTspecIntServOverallLengthCounter { + + obj.obj.Start = &value return obj } -// Offset in bits relative to start of corresponding header field -// Offset returns a uint32 -func (obj *patternFlowIpv4DscpEcnMetricTag) Offset() uint32 { +// description is TBD +// Step returns a uint32 +func (obj *patternFlowRSVPPathSenderTspecIntServOverallLengthCounter) Step() uint32 { - return *obj.obj.Offset + return *obj.obj.Step } -// Offset in bits relative to start of corresponding header field -// Offset returns a uint32 -func (obj *patternFlowIpv4DscpEcnMetricTag) HasOffset() bool { - return obj.obj.Offset != nil +// description is TBD +// Step returns a uint32 +func (obj *patternFlowRSVPPathSenderTspecIntServOverallLengthCounter) HasStep() bool { + return obj.obj.Step != nil } -// Offset in bits relative to start of corresponding header field -// SetOffset sets the uint32 value in the PatternFlowIpv4DscpEcnMetricTag object -func (obj *patternFlowIpv4DscpEcnMetricTag) SetOffset(value uint32) PatternFlowIpv4DscpEcnMetricTag { +// description is TBD +// SetStep sets the uint32 value in the PatternFlowRSVPPathSenderTspecIntServOverallLengthCounter object +func (obj *patternFlowRSVPPathSenderTspecIntServOverallLengthCounter) SetStep(value uint32) PatternFlowRSVPPathSenderTspecIntServOverallLengthCounter { - obj.obj.Offset = &value + obj.obj.Step = &value return obj } -// Number of bits to track for metrics starting from configured offset of corresponding header field -// Length returns a uint32 -func (obj *patternFlowIpv4DscpEcnMetricTag) Length() uint32 { +// description is TBD +// Count returns a uint32 +func (obj *patternFlowRSVPPathSenderTspecIntServOverallLengthCounter) Count() uint32 { - return *obj.obj.Length + return *obj.obj.Count } -// Number of bits to track for metrics starting from configured offset of corresponding header field -// Length returns a uint32 -func (obj *patternFlowIpv4DscpEcnMetricTag) HasLength() bool { - return obj.obj.Length != nil +// description is TBD +// Count returns a uint32 +func (obj *patternFlowRSVPPathSenderTspecIntServOverallLengthCounter) HasCount() bool { + return obj.obj.Count != nil } -// Number of bits to track for metrics starting from configured offset of corresponding header field -// SetLength sets the uint32 value in the PatternFlowIpv4DscpEcnMetricTag object -func (obj *patternFlowIpv4DscpEcnMetricTag) SetLength(value uint32) PatternFlowIpv4DscpEcnMetricTag { +// description is TBD +// SetCount sets the uint32 value in the PatternFlowRSVPPathSenderTspecIntServOverallLengthCounter object +func (obj *patternFlowRSVPPathSenderTspecIntServOverallLengthCounter) SetCount(value uint32) PatternFlowRSVPPathSenderTspecIntServOverallLengthCounter { - obj.obj.Length = &value + obj.obj.Count = &value return obj } -func (obj *patternFlowIpv4DscpEcnMetricTag) validateObj(vObj *validation, set_default bool) { +func (obj *patternFlowRSVPPathSenderTspecIntServOverallLengthCounter) validateObj(vObj *validation, set_default bool) { if set_default { obj.setDefault() } - // Name is required - if obj.obj.Name == nil { - vObj.validationErrors = append(vObj.validationErrors, "Name is required field on interface PatternFlowIpv4DscpEcnMetricTag") + if obj.obj.Start != nil { + + if *obj.obj.Start > 65535 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("0 <= PatternFlowRSVPPathSenderTspecIntServOverallLengthCounter.Start <= 65535 but Got %d", *obj.obj.Start)) + } + } - if obj.obj.Offset != nil { + if obj.obj.Step != nil { - if *obj.obj.Offset > 1 { + if *obj.obj.Step > 65535 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("0 <= PatternFlowIpv4DscpEcnMetricTag.Offset <= 1 but Got %d", *obj.obj.Offset)) + fmt.Sprintf("0 <= PatternFlowRSVPPathSenderTspecIntServOverallLengthCounter.Step <= 65535 but Got %d", *obj.obj.Step)) } } - if obj.obj.Length != nil { + if obj.obj.Count != nil { - if *obj.obj.Length < 1 || *obj.obj.Length > 2 { + if *obj.obj.Count > 65535 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("1 <= PatternFlowIpv4DscpEcnMetricTag.Length <= 2 but Got %d", *obj.obj.Length)) + fmt.Sprintf("0 <= PatternFlowRSVPPathSenderTspecIntServOverallLengthCounter.Count <= 65535 but Got %d", *obj.obj.Count)) } } } -func (obj *patternFlowIpv4DscpEcnMetricTag) setDefault() { - if obj.obj.Offset == nil { - obj.SetOffset(0) +func (obj *patternFlowRSVPPathSenderTspecIntServOverallLengthCounter) setDefault() { + if obj.obj.Start == nil { + obj.SetStart(7) } - if obj.obj.Length == nil { - obj.SetLength(2) + if obj.obj.Step == nil { + obj.SetStep(1) + } + if obj.obj.Count == nil { + obj.SetCount(1) } } -// ***** IsisLspPrefixAttributes ***** -type isisLspPrefixAttributes struct { +// ***** PatternFlowRSVPPathSenderTspecIntServServiceHeaderCounter ***** +type patternFlowRSVPPathSenderTspecIntServServiceHeaderCounter struct { validation - obj *otg.IsisLspPrefixAttributes + obj *otg.PatternFlowRSVPPathSenderTspecIntServServiceHeaderCounter } - -func NewIsisLspPrefixAttributes() IsisLspPrefixAttributes { - obj := isisLspPrefixAttributes{obj: &otg.IsisLspPrefixAttributes{}} + +func NewPatternFlowRSVPPathSenderTspecIntServServiceHeaderCounter() PatternFlowRSVPPathSenderTspecIntServServiceHeaderCounter { + obj := patternFlowRSVPPathSenderTspecIntServServiceHeaderCounter{obj: &otg.PatternFlowRSVPPathSenderTspecIntServServiceHeaderCounter{}} obj.setDefault() return &obj } -func (obj *isisLspPrefixAttributes) Msg() *otg.IsisLspPrefixAttributes { +func (obj *patternFlowRSVPPathSenderTspecIntServServiceHeaderCounter) Msg() *otg.PatternFlowRSVPPathSenderTspecIntServServiceHeaderCounter { return obj.obj } -func (obj *isisLspPrefixAttributes) SetMsg(msg *otg.IsisLspPrefixAttributes) IsisLspPrefixAttributes { +func (obj *patternFlowRSVPPathSenderTspecIntServServiceHeaderCounter) SetMsg(msg *otg.PatternFlowRSVPPathSenderTspecIntServServiceHeaderCounter) PatternFlowRSVPPathSenderTspecIntServServiceHeaderCounter { proto.Merge(obj.obj, msg) return obj } -func (obj *isisLspPrefixAttributes) ToProto() (*otg.IsisLspPrefixAttributes, error) { +func (obj *patternFlowRSVPPathSenderTspecIntServServiceHeaderCounter) ToProto() (*otg.PatternFlowRSVPPathSenderTspecIntServServiceHeaderCounter, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -310857,7 +357969,7 @@ func (obj *isisLspPrefixAttributes) ToProto() (*otg.IsisLspPrefixAttributes, err return obj.Msg(), nil } -func (obj *isisLspPrefixAttributes) FromProto(msg *otg.IsisLspPrefixAttributes) (IsisLspPrefixAttributes, error) { +func (obj *patternFlowRSVPPathSenderTspecIntServServiceHeaderCounter) FromProto(msg *otg.PatternFlowRSVPPathSenderTspecIntServServiceHeaderCounter) (PatternFlowRSVPPathSenderTspecIntServServiceHeaderCounter, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -310866,7 +357978,7 @@ func (obj *isisLspPrefixAttributes) FromProto(msg *otg.IsisLspPrefixAttributes) return newObj, nil } -func (obj *isisLspPrefixAttributes) ToPbText() (string, error) { +func (obj *patternFlowRSVPPathSenderTspecIntServServiceHeaderCounter) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -310878,7 +357990,7 @@ func (obj *isisLspPrefixAttributes) ToPbText() (string, error) { return string(protoMarshal), nil } -func (obj *isisLspPrefixAttributes) FromPbText(value string) error { +func (obj *patternFlowRSVPPathSenderTspecIntServServiceHeaderCounter) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj @@ -310891,7 +358003,7 @@ func (obj *isisLspPrefixAttributes) FromPbText(value string) error { return retObj } -func (obj *isisLspPrefixAttributes) ToYaml() (string, error) { +func (obj *patternFlowRSVPPathSenderTspecIntServServiceHeaderCounter) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -310912,7 +358024,7 @@ func (obj *isisLspPrefixAttributes) ToYaml() (string, error) { return string(data), nil } -func (obj *isisLspPrefixAttributes) FromYaml(value string) error { +func (obj *patternFlowRSVPPathSenderTspecIntServServiceHeaderCounter) FromYaml(value string) error { if value == "" { value = "{}" } @@ -310937,7 +358049,7 @@ func (obj *isisLspPrefixAttributes) FromYaml(value string) error { return nil } -func (obj *isisLspPrefixAttributes) ToJson() (string, error) { +func (obj *patternFlowRSVPPathSenderTspecIntServServiceHeaderCounter) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -310955,7 +358067,7 @@ func (obj *isisLspPrefixAttributes) ToJson() (string, error) { return string(data), nil } -func (obj *isisLspPrefixAttributes) FromJson(value string) error { +func (obj *patternFlowRSVPPathSenderTspecIntServServiceHeaderCounter) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -310976,19 +358088,19 @@ func (obj *isisLspPrefixAttributes) FromJson(value string) error { return nil } -func (obj *isisLspPrefixAttributes) validateToAndFrom() error { +func (obj *patternFlowRSVPPathSenderTspecIntServServiceHeaderCounter) validateToAndFrom() error { // emptyVars() obj.validateObj(&obj.validation, true) return obj.validationResult() } -func (obj *isisLspPrefixAttributes) Validate() error { +func (obj *patternFlowRSVPPathSenderTspecIntServServiceHeaderCounter) Validate() error { // emptyVars() obj.validateObj(&obj.validation, false) return obj.validationResult() } -func (obj *isisLspPrefixAttributes) String() string { +func (obj *patternFlowRSVPPathSenderTspecIntServServiceHeaderCounter) String() string { str, err := obj.ToYaml() if err != nil { return err.Error() @@ -310996,12 +358108,12 @@ func (obj *isisLspPrefixAttributes) String() string { return str } -func (obj *isisLspPrefixAttributes) Clone() (IsisLspPrefixAttributes, error) { +func (obj *patternFlowRSVPPathSenderTspecIntServServiceHeaderCounter) Clone() (PatternFlowRSVPPathSenderTspecIntServServiceHeaderCounter, error) { vErr := obj.Validate() if vErr != nil { return nil, vErr } - newObj := NewIsisLspPrefixAttributes() + newObj := NewPatternFlowRSVPPathSenderTspecIntServServiceHeaderCounter() data, err := proto.Marshal(obj.Msg()) if err != nil { return nil, err @@ -311013,161 +358125,199 @@ func (obj *isisLspPrefixAttributes) Clone() (IsisLspPrefixAttributes, error) { return newObj, nil } -// IsisLspPrefixAttributes is this contains the properties of ISIS Prefix attributes for the extended IPv4 and IPv6 reachability. https://www.rfc-editor.org/rfc/rfc7794.html -type IsisLspPrefixAttributes interface { +// PatternFlowRSVPPathSenderTspecIntServServiceHeaderCounter is integer counter pattern +type PatternFlowRSVPPathSenderTspecIntServServiceHeaderCounter interface { Validation - // Msg marshals IsisLspPrefixAttributes to protobuf object *otg.IsisLspPrefixAttributes + // Msg marshals PatternFlowRSVPPathSenderTspecIntServServiceHeaderCounter to protobuf object *otg.PatternFlowRSVPPathSenderTspecIntServServiceHeaderCounter // and doesn't set defaults - Msg() *otg.IsisLspPrefixAttributes - // SetMsg unmarshals IsisLspPrefixAttributes from protobuf object *otg.IsisLspPrefixAttributes + Msg() *otg.PatternFlowRSVPPathSenderTspecIntServServiceHeaderCounter + // SetMsg unmarshals PatternFlowRSVPPathSenderTspecIntServServiceHeaderCounter from protobuf object *otg.PatternFlowRSVPPathSenderTspecIntServServiceHeaderCounter // and doesn't set defaults - SetMsg(*otg.IsisLspPrefixAttributes) IsisLspPrefixAttributes - // ToProto marshals IsisLspPrefixAttributes to protobuf object *otg.IsisLspPrefixAttributes - ToProto() (*otg.IsisLspPrefixAttributes, error) - // ToPbText marshals IsisLspPrefixAttributes to protobuf text + SetMsg(*otg.PatternFlowRSVPPathSenderTspecIntServServiceHeaderCounter) PatternFlowRSVPPathSenderTspecIntServServiceHeaderCounter + // ToProto marshals PatternFlowRSVPPathSenderTspecIntServServiceHeaderCounter to protobuf object *otg.PatternFlowRSVPPathSenderTspecIntServServiceHeaderCounter + ToProto() (*otg.PatternFlowRSVPPathSenderTspecIntServServiceHeaderCounter, error) + // ToPbText marshals PatternFlowRSVPPathSenderTspecIntServServiceHeaderCounter to protobuf text ToPbText() (string, error) - // ToYaml marshals IsisLspPrefixAttributes to YAML text + // ToYaml marshals PatternFlowRSVPPathSenderTspecIntServServiceHeaderCounter to YAML text ToYaml() (string, error) - // ToJson marshals IsisLspPrefixAttributes to JSON text + // ToJson marshals PatternFlowRSVPPathSenderTspecIntServServiceHeaderCounter to JSON text ToJson() (string, error) - // FromProto unmarshals IsisLspPrefixAttributes from protobuf object *otg.IsisLspPrefixAttributes - FromProto(msg *otg.IsisLspPrefixAttributes) (IsisLspPrefixAttributes, error) - // FromPbText unmarshals IsisLspPrefixAttributes from protobuf text + // FromProto unmarshals PatternFlowRSVPPathSenderTspecIntServServiceHeaderCounter from protobuf object *otg.PatternFlowRSVPPathSenderTspecIntServServiceHeaderCounter + FromProto(msg *otg.PatternFlowRSVPPathSenderTspecIntServServiceHeaderCounter) (PatternFlowRSVPPathSenderTspecIntServServiceHeaderCounter, error) + // FromPbText unmarshals PatternFlowRSVPPathSenderTspecIntServServiceHeaderCounter from protobuf text FromPbText(value string) error - // FromYaml unmarshals IsisLspPrefixAttributes from YAML text + // FromYaml unmarshals PatternFlowRSVPPathSenderTspecIntServServiceHeaderCounter from YAML text FromYaml(value string) error - // FromJson unmarshals IsisLspPrefixAttributes from JSON text + // FromJson unmarshals PatternFlowRSVPPathSenderTspecIntServServiceHeaderCounter from JSON text FromJson(value string) error - // Validate validates IsisLspPrefixAttributes + // Validate validates PatternFlowRSVPPathSenderTspecIntServServiceHeaderCounter Validate() error // A stringer function String() string // Clones the object - Clone() (IsisLspPrefixAttributes, error) + Clone() (PatternFlowRSVPPathSenderTspecIntServServiceHeaderCounter, error) validateToAndFrom() error validateObj(vObj *validation, set_default bool) setDefault() - // XFlag returns bool, set in IsisLspPrefixAttributes. - XFlag() bool - // SetXFlag assigns bool provided by user to IsisLspPrefixAttributes - SetXFlag(value bool) IsisLspPrefixAttributes - // HasXFlag checks if XFlag has been set in IsisLspPrefixAttributes - HasXFlag() bool - // RFlag returns bool, set in IsisLspPrefixAttributes. - RFlag() bool - // SetRFlag assigns bool provided by user to IsisLspPrefixAttributes - SetRFlag(value bool) IsisLspPrefixAttributes - // HasRFlag checks if RFlag has been set in IsisLspPrefixAttributes - HasRFlag() bool - // NFlag returns bool, set in IsisLspPrefixAttributes. - NFlag() bool - // SetNFlag assigns bool provided by user to IsisLspPrefixAttributes - SetNFlag(value bool) IsisLspPrefixAttributes - // HasNFlag checks if NFlag has been set in IsisLspPrefixAttributes - HasNFlag() bool + // Start returns uint32, set in PatternFlowRSVPPathSenderTspecIntServServiceHeaderCounter. + Start() uint32 + // SetStart assigns uint32 provided by user to PatternFlowRSVPPathSenderTspecIntServServiceHeaderCounter + SetStart(value uint32) PatternFlowRSVPPathSenderTspecIntServServiceHeaderCounter + // HasStart checks if Start has been set in PatternFlowRSVPPathSenderTspecIntServServiceHeaderCounter + HasStart() bool + // Step returns uint32, set in PatternFlowRSVPPathSenderTspecIntServServiceHeaderCounter. + Step() uint32 + // SetStep assigns uint32 provided by user to PatternFlowRSVPPathSenderTspecIntServServiceHeaderCounter + SetStep(value uint32) PatternFlowRSVPPathSenderTspecIntServServiceHeaderCounter + // HasStep checks if Step has been set in PatternFlowRSVPPathSenderTspecIntServServiceHeaderCounter + HasStep() bool + // Count returns uint32, set in PatternFlowRSVPPathSenderTspecIntServServiceHeaderCounter. + Count() uint32 + // SetCount assigns uint32 provided by user to PatternFlowRSVPPathSenderTspecIntServServiceHeaderCounter + SetCount(value uint32) PatternFlowRSVPPathSenderTspecIntServServiceHeaderCounter + // HasCount checks if Count has been set in PatternFlowRSVPPathSenderTspecIntServServiceHeaderCounter + HasCount() bool } -// External Prefix Flag (Bit 0) -// XFlag returns a bool -func (obj *isisLspPrefixAttributes) XFlag() bool { +// description is TBD +// Start returns a uint32 +func (obj *patternFlowRSVPPathSenderTspecIntServServiceHeaderCounter) Start() uint32 { - return *obj.obj.XFlag + return *obj.obj.Start } -// External Prefix Flag (Bit 0) -// XFlag returns a bool -func (obj *isisLspPrefixAttributes) HasXFlag() bool { - return obj.obj.XFlag != nil +// description is TBD +// Start returns a uint32 +func (obj *patternFlowRSVPPathSenderTspecIntServServiceHeaderCounter) HasStart() bool { + return obj.obj.Start != nil } -// External Prefix Flag (Bit 0) -// SetXFlag sets the bool value in the IsisLspPrefixAttributes object -func (obj *isisLspPrefixAttributes) SetXFlag(value bool) IsisLspPrefixAttributes { +// description is TBD +// SetStart sets the uint32 value in the PatternFlowRSVPPathSenderTspecIntServServiceHeaderCounter object +func (obj *patternFlowRSVPPathSenderTspecIntServServiceHeaderCounter) SetStart(value uint32) PatternFlowRSVPPathSenderTspecIntServServiceHeaderCounter { - obj.obj.XFlag = &value + obj.obj.Start = &value return obj } -// Re-advertisement Flag (Bit 1) -// RFlag returns a bool -func (obj *isisLspPrefixAttributes) RFlag() bool { +// description is TBD +// Step returns a uint32 +func (obj *patternFlowRSVPPathSenderTspecIntServServiceHeaderCounter) Step() uint32 { - return *obj.obj.RFlag + return *obj.obj.Step } -// Re-advertisement Flag (Bit 1) -// RFlag returns a bool -func (obj *isisLspPrefixAttributes) HasRFlag() bool { - return obj.obj.RFlag != nil +// description is TBD +// Step returns a uint32 +func (obj *patternFlowRSVPPathSenderTspecIntServServiceHeaderCounter) HasStep() bool { + return obj.obj.Step != nil } -// Re-advertisement Flag (Bit 1) -// SetRFlag sets the bool value in the IsisLspPrefixAttributes object -func (obj *isisLspPrefixAttributes) SetRFlag(value bool) IsisLspPrefixAttributes { +// description is TBD +// SetStep sets the uint32 value in the PatternFlowRSVPPathSenderTspecIntServServiceHeaderCounter object +func (obj *patternFlowRSVPPathSenderTspecIntServServiceHeaderCounter) SetStep(value uint32) PatternFlowRSVPPathSenderTspecIntServServiceHeaderCounter { - obj.obj.RFlag = &value + obj.obj.Step = &value return obj } -// Node Flag (Bit 2) -// NFlag returns a bool -func (obj *isisLspPrefixAttributes) NFlag() bool { +// description is TBD +// Count returns a uint32 +func (obj *patternFlowRSVPPathSenderTspecIntServServiceHeaderCounter) Count() uint32 { - return *obj.obj.NFlag + return *obj.obj.Count } -// Node Flag (Bit 2) -// NFlag returns a bool -func (obj *isisLspPrefixAttributes) HasNFlag() bool { - return obj.obj.NFlag != nil +// description is TBD +// Count returns a uint32 +func (obj *patternFlowRSVPPathSenderTspecIntServServiceHeaderCounter) HasCount() bool { + return obj.obj.Count != nil } -// Node Flag (Bit 2) -// SetNFlag sets the bool value in the IsisLspPrefixAttributes object -func (obj *isisLspPrefixAttributes) SetNFlag(value bool) IsisLspPrefixAttributes { +// description is TBD +// SetCount sets the uint32 value in the PatternFlowRSVPPathSenderTspecIntServServiceHeaderCounter object +func (obj *patternFlowRSVPPathSenderTspecIntServServiceHeaderCounter) SetCount(value uint32) PatternFlowRSVPPathSenderTspecIntServServiceHeaderCounter { - obj.obj.NFlag = &value + obj.obj.Count = &value return obj } -func (obj *isisLspPrefixAttributes) validateObj(vObj *validation, set_default bool) { +func (obj *patternFlowRSVPPathSenderTspecIntServServiceHeaderCounter) validateObj(vObj *validation, set_default bool) { if set_default { obj.setDefault() } + if obj.obj.Start != nil { + + if *obj.obj.Start > 255 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("0 <= PatternFlowRSVPPathSenderTspecIntServServiceHeaderCounter.Start <= 255 but Got %d", *obj.obj.Start)) + } + + } + + if obj.obj.Step != nil { + + if *obj.obj.Step > 255 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("0 <= PatternFlowRSVPPathSenderTspecIntServServiceHeaderCounter.Step <= 255 but Got %d", *obj.obj.Step)) + } + + } + + if obj.obj.Count != nil { + + if *obj.obj.Count > 255 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("0 <= PatternFlowRSVPPathSenderTspecIntServServiceHeaderCounter.Count <= 255 but Got %d", *obj.obj.Count)) + } + + } + } -func (obj *isisLspPrefixAttributes) setDefault() { +func (obj *patternFlowRSVPPathSenderTspecIntServServiceHeaderCounter) setDefault() { + if obj.obj.Start == nil { + obj.SetStart(1) + } + if obj.obj.Step == nil { + obj.SetStep(1) + } + if obj.obj.Count == nil { + obj.SetCount(1) + } } -// ***** BgpV4EviVxlanBroadcastDomain ***** -type bgpV4EviVxlanBroadcastDomain struct { +// ***** PatternFlowRSVPPathSenderTspecIntServZeroBitCounter ***** +type patternFlowRSVPPathSenderTspecIntServZeroBitCounter struct { validation - obj *otg.BgpV4EviVxlanBroadcastDomain - cmacIpRangeHolder BgpV4EviVxlanBroadcastDomainBgpCMacIpRangeIter + obj *otg.PatternFlowRSVPPathSenderTspecIntServZeroBitCounter } -func NewBgpV4EviVxlanBroadcastDomain() BgpV4EviVxlanBroadcastDomain { - obj := bgpV4EviVxlanBroadcastDomain{obj: &otg.BgpV4EviVxlanBroadcastDomain{}} +func NewPatternFlowRSVPPathSenderTspecIntServZeroBitCounter() PatternFlowRSVPPathSenderTspecIntServZeroBitCounter { + obj := patternFlowRSVPPathSenderTspecIntServZeroBitCounter{obj: &otg.PatternFlowRSVPPathSenderTspecIntServZeroBitCounter{}} obj.setDefault() return &obj } -func (obj *bgpV4EviVxlanBroadcastDomain) Msg() *otg.BgpV4EviVxlanBroadcastDomain { +func (obj *patternFlowRSVPPathSenderTspecIntServZeroBitCounter) Msg() *otg.PatternFlowRSVPPathSenderTspecIntServZeroBitCounter { return obj.obj } -func (obj *bgpV4EviVxlanBroadcastDomain) SetMsg(msg *otg.BgpV4EviVxlanBroadcastDomain) BgpV4EviVxlanBroadcastDomain { - obj.setNil() +func (obj *patternFlowRSVPPathSenderTspecIntServZeroBitCounter) SetMsg(msg *otg.PatternFlowRSVPPathSenderTspecIntServZeroBitCounter) PatternFlowRSVPPathSenderTspecIntServZeroBitCounter { + proto.Merge(obj.obj, msg) return obj } -func (obj *bgpV4EviVxlanBroadcastDomain) ToProto() (*otg.BgpV4EviVxlanBroadcastDomain, error) { +func (obj *patternFlowRSVPPathSenderTspecIntServZeroBitCounter) ToProto() (*otg.PatternFlowRSVPPathSenderTspecIntServZeroBitCounter, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -311175,7 +358325,7 @@ func (obj *bgpV4EviVxlanBroadcastDomain) ToProto() (*otg.BgpV4EviVxlanBroadcastD return obj.Msg(), nil } -func (obj *bgpV4EviVxlanBroadcastDomain) FromProto(msg *otg.BgpV4EviVxlanBroadcastDomain) (BgpV4EviVxlanBroadcastDomain, error) { +func (obj *patternFlowRSVPPathSenderTspecIntServZeroBitCounter) FromProto(msg *otg.PatternFlowRSVPPathSenderTspecIntServZeroBitCounter) (PatternFlowRSVPPathSenderTspecIntServZeroBitCounter, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -311184,7 +358334,7 @@ func (obj *bgpV4EviVxlanBroadcastDomain) FromProto(msg *otg.BgpV4EviVxlanBroadca return newObj, nil } -func (obj *bgpV4EviVxlanBroadcastDomain) ToPbText() (string, error) { +func (obj *patternFlowRSVPPathSenderTspecIntServZeroBitCounter) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -311196,12 +358346,12 @@ func (obj *bgpV4EviVxlanBroadcastDomain) ToPbText() (string, error) { return string(protoMarshal), nil } -func (obj *bgpV4EviVxlanBroadcastDomain) FromPbText(value string) error { +func (obj *patternFlowRSVPPathSenderTspecIntServZeroBitCounter) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj } - obj.setNil() + vErr := obj.validateToAndFrom() if vErr != nil { return vErr @@ -311209,7 +358359,7 @@ func (obj *bgpV4EviVxlanBroadcastDomain) FromPbText(value string) error { return retObj } -func (obj *bgpV4EviVxlanBroadcastDomain) ToYaml() (string, error) { +func (obj *patternFlowRSVPPathSenderTspecIntServZeroBitCounter) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -311230,7 +358380,7 @@ func (obj *bgpV4EviVxlanBroadcastDomain) ToYaml() (string, error) { return string(data), nil } -func (obj *bgpV4EviVxlanBroadcastDomain) FromYaml(value string) error { +func (obj *patternFlowRSVPPathSenderTspecIntServZeroBitCounter) FromYaml(value string) error { if value == "" { value = "{}" } @@ -311247,7 +358397,7 @@ func (obj *bgpV4EviVxlanBroadcastDomain) FromYaml(value string) error { return fmt.Errorf("unmarshal error %s", strings.Replace( uError.Error(), "\u00a0", " ", -1)[7:]) } - obj.setNil() + vErr := obj.validateToAndFrom() if vErr != nil { return vErr @@ -311255,7 +358405,7 @@ func (obj *bgpV4EviVxlanBroadcastDomain) FromYaml(value string) error { return nil } -func (obj *bgpV4EviVxlanBroadcastDomain) ToJson() (string, error) { +func (obj *patternFlowRSVPPathSenderTspecIntServZeroBitCounter) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -311273,7 +358423,7 @@ func (obj *bgpV4EviVxlanBroadcastDomain) ToJson() (string, error) { return string(data), nil } -func (obj *bgpV4EviVxlanBroadcastDomain) FromJson(value string) error { +func (obj *patternFlowRSVPPathSenderTspecIntServZeroBitCounter) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -311286,7 +358436,7 @@ func (obj *bgpV4EviVxlanBroadcastDomain) FromJson(value string) error { return fmt.Errorf("unmarshal error %s", strings.Replace( uError.Error(), "\u00a0", " ", -1)[7:]) } - obj.setNil() + err := obj.validateToAndFrom() if err != nil { return err @@ -311294,19 +358444,19 @@ func (obj *bgpV4EviVxlanBroadcastDomain) FromJson(value string) error { return nil } -func (obj *bgpV4EviVxlanBroadcastDomain) validateToAndFrom() error { +func (obj *patternFlowRSVPPathSenderTspecIntServZeroBitCounter) validateToAndFrom() error { // emptyVars() obj.validateObj(&obj.validation, true) return obj.validationResult() } -func (obj *bgpV4EviVxlanBroadcastDomain) Validate() error { +func (obj *patternFlowRSVPPathSenderTspecIntServZeroBitCounter) Validate() error { // emptyVars() obj.validateObj(&obj.validation, false) return obj.validationResult() } -func (obj *bgpV4EviVxlanBroadcastDomain) String() string { +func (obj *patternFlowRSVPPathSenderTspecIntServZeroBitCounter) String() string { str, err := obj.ToYaml() if err != nil { return err.Error() @@ -311314,12 +358464,12 @@ func (obj *bgpV4EviVxlanBroadcastDomain) String() string { return str } -func (obj *bgpV4EviVxlanBroadcastDomain) Clone() (BgpV4EviVxlanBroadcastDomain, error) { +func (obj *patternFlowRSVPPathSenderTspecIntServZeroBitCounter) Clone() (PatternFlowRSVPPathSenderTspecIntServZeroBitCounter, error) { vErr := obj.Validate() if vErr != nil { return nil, vErr } - newObj := NewBgpV4EviVxlanBroadcastDomain() + newObj := NewPatternFlowRSVPPathSenderTspecIntServZeroBitCounter() data, err := proto.Marshal(obj.Msg()) if err != nil { return nil, err @@ -311331,252 +358481,199 @@ func (obj *bgpV4EviVxlanBroadcastDomain) Clone() (BgpV4EviVxlanBroadcastDomain, return newObj, nil } -func (obj *bgpV4EviVxlanBroadcastDomain) setNil() { - obj.cmacIpRangeHolder = nil - obj.validationErrors = nil - obj.warnings = nil - obj.constraints = make(map[string]map[string]Constraints) -} - -// BgpV4EviVxlanBroadcastDomain is configuration for Broadcast Domains per EVI. -type BgpV4EviVxlanBroadcastDomain interface { +// PatternFlowRSVPPathSenderTspecIntServZeroBitCounter is integer counter pattern +type PatternFlowRSVPPathSenderTspecIntServZeroBitCounter interface { Validation - // Msg marshals BgpV4EviVxlanBroadcastDomain to protobuf object *otg.BgpV4EviVxlanBroadcastDomain + // Msg marshals PatternFlowRSVPPathSenderTspecIntServZeroBitCounter to protobuf object *otg.PatternFlowRSVPPathSenderTspecIntServZeroBitCounter // and doesn't set defaults - Msg() *otg.BgpV4EviVxlanBroadcastDomain - // SetMsg unmarshals BgpV4EviVxlanBroadcastDomain from protobuf object *otg.BgpV4EviVxlanBroadcastDomain + Msg() *otg.PatternFlowRSVPPathSenderTspecIntServZeroBitCounter + // SetMsg unmarshals PatternFlowRSVPPathSenderTspecIntServZeroBitCounter from protobuf object *otg.PatternFlowRSVPPathSenderTspecIntServZeroBitCounter // and doesn't set defaults - SetMsg(*otg.BgpV4EviVxlanBroadcastDomain) BgpV4EviVxlanBroadcastDomain - // ToProto marshals BgpV4EviVxlanBroadcastDomain to protobuf object *otg.BgpV4EviVxlanBroadcastDomain - ToProto() (*otg.BgpV4EviVxlanBroadcastDomain, error) - // ToPbText marshals BgpV4EviVxlanBroadcastDomain to protobuf text + SetMsg(*otg.PatternFlowRSVPPathSenderTspecIntServZeroBitCounter) PatternFlowRSVPPathSenderTspecIntServZeroBitCounter + // ToProto marshals PatternFlowRSVPPathSenderTspecIntServZeroBitCounter to protobuf object *otg.PatternFlowRSVPPathSenderTspecIntServZeroBitCounter + ToProto() (*otg.PatternFlowRSVPPathSenderTspecIntServZeroBitCounter, error) + // ToPbText marshals PatternFlowRSVPPathSenderTspecIntServZeroBitCounter to protobuf text ToPbText() (string, error) - // ToYaml marshals BgpV4EviVxlanBroadcastDomain to YAML text + // ToYaml marshals PatternFlowRSVPPathSenderTspecIntServZeroBitCounter to YAML text ToYaml() (string, error) - // ToJson marshals BgpV4EviVxlanBroadcastDomain to JSON text + // ToJson marshals PatternFlowRSVPPathSenderTspecIntServZeroBitCounter to JSON text ToJson() (string, error) - // FromProto unmarshals BgpV4EviVxlanBroadcastDomain from protobuf object *otg.BgpV4EviVxlanBroadcastDomain - FromProto(msg *otg.BgpV4EviVxlanBroadcastDomain) (BgpV4EviVxlanBroadcastDomain, error) - // FromPbText unmarshals BgpV4EviVxlanBroadcastDomain from protobuf text + // FromProto unmarshals PatternFlowRSVPPathSenderTspecIntServZeroBitCounter from protobuf object *otg.PatternFlowRSVPPathSenderTspecIntServZeroBitCounter + FromProto(msg *otg.PatternFlowRSVPPathSenderTspecIntServZeroBitCounter) (PatternFlowRSVPPathSenderTspecIntServZeroBitCounter, error) + // FromPbText unmarshals PatternFlowRSVPPathSenderTspecIntServZeroBitCounter from protobuf text FromPbText(value string) error - // FromYaml unmarshals BgpV4EviVxlanBroadcastDomain from YAML text + // FromYaml unmarshals PatternFlowRSVPPathSenderTspecIntServZeroBitCounter from YAML text FromYaml(value string) error - // FromJson unmarshals BgpV4EviVxlanBroadcastDomain from JSON text + // FromJson unmarshals PatternFlowRSVPPathSenderTspecIntServZeroBitCounter from JSON text FromJson(value string) error - // Validate validates BgpV4EviVxlanBroadcastDomain + // Validate validates PatternFlowRSVPPathSenderTspecIntServZeroBitCounter Validate() error // A stringer function String() string // Clones the object - Clone() (BgpV4EviVxlanBroadcastDomain, error) + Clone() (PatternFlowRSVPPathSenderTspecIntServZeroBitCounter, error) validateToAndFrom() error validateObj(vObj *validation, set_default bool) setDefault() - // CmacIpRange returns BgpV4EviVxlanBroadcastDomainBgpCMacIpRangeIterIter, set in BgpV4EviVxlanBroadcastDomain - CmacIpRange() BgpV4EviVxlanBroadcastDomainBgpCMacIpRangeIter - // EthernetTagId returns uint32, set in BgpV4EviVxlanBroadcastDomain. - EthernetTagId() uint32 - // SetEthernetTagId assigns uint32 provided by user to BgpV4EviVxlanBroadcastDomain - SetEthernetTagId(value uint32) BgpV4EviVxlanBroadcastDomain - // HasEthernetTagId checks if EthernetTagId has been set in BgpV4EviVxlanBroadcastDomain - HasEthernetTagId() bool - // VlanAwareService returns bool, set in BgpV4EviVxlanBroadcastDomain. - VlanAwareService() bool - // SetVlanAwareService assigns bool provided by user to BgpV4EviVxlanBroadcastDomain - SetVlanAwareService(value bool) BgpV4EviVxlanBroadcastDomain - // HasVlanAwareService checks if VlanAwareService has been set in BgpV4EviVxlanBroadcastDomain - HasVlanAwareService() bool - setNil() -} - -// This contains the list of Customer MAC/IP Ranges to be configured per Broadcast Domain. -// -// Advertises following route - -// Type 2 - MAC/IP Advertisement Route. -// CmacIpRange returns a []BgpCMacIpRange -func (obj *bgpV4EviVxlanBroadcastDomain) CmacIpRange() BgpV4EviVxlanBroadcastDomainBgpCMacIpRangeIter { - if len(obj.obj.CmacIpRange) == 0 { - obj.obj.CmacIpRange = []*otg.BgpCMacIpRange{} - } - if obj.cmacIpRangeHolder == nil { - obj.cmacIpRangeHolder = newBgpV4EviVxlanBroadcastDomainBgpCMacIpRangeIter(&obj.obj.CmacIpRange).setMsg(obj) - } - return obj.cmacIpRangeHolder -} - -type bgpV4EviVxlanBroadcastDomainBgpCMacIpRangeIter struct { - obj *bgpV4EviVxlanBroadcastDomain - bgpCMacIpRangeSlice []BgpCMacIpRange - fieldPtr *[]*otg.BgpCMacIpRange -} - -func newBgpV4EviVxlanBroadcastDomainBgpCMacIpRangeIter(ptr *[]*otg.BgpCMacIpRange) BgpV4EviVxlanBroadcastDomainBgpCMacIpRangeIter { - return &bgpV4EviVxlanBroadcastDomainBgpCMacIpRangeIter{fieldPtr: ptr} + // Start returns uint32, set in PatternFlowRSVPPathSenderTspecIntServZeroBitCounter. + Start() uint32 + // SetStart assigns uint32 provided by user to PatternFlowRSVPPathSenderTspecIntServZeroBitCounter + SetStart(value uint32) PatternFlowRSVPPathSenderTspecIntServZeroBitCounter + // HasStart checks if Start has been set in PatternFlowRSVPPathSenderTspecIntServZeroBitCounter + HasStart() bool + // Step returns uint32, set in PatternFlowRSVPPathSenderTspecIntServZeroBitCounter. + Step() uint32 + // SetStep assigns uint32 provided by user to PatternFlowRSVPPathSenderTspecIntServZeroBitCounter + SetStep(value uint32) PatternFlowRSVPPathSenderTspecIntServZeroBitCounter + // HasStep checks if Step has been set in PatternFlowRSVPPathSenderTspecIntServZeroBitCounter + HasStep() bool + // Count returns uint32, set in PatternFlowRSVPPathSenderTspecIntServZeroBitCounter. + Count() uint32 + // SetCount assigns uint32 provided by user to PatternFlowRSVPPathSenderTspecIntServZeroBitCounter + SetCount(value uint32) PatternFlowRSVPPathSenderTspecIntServZeroBitCounter + // HasCount checks if Count has been set in PatternFlowRSVPPathSenderTspecIntServZeroBitCounter + HasCount() bool } -type BgpV4EviVxlanBroadcastDomainBgpCMacIpRangeIter interface { - setMsg(*bgpV4EviVxlanBroadcastDomain) BgpV4EviVxlanBroadcastDomainBgpCMacIpRangeIter - Items() []BgpCMacIpRange - Add() BgpCMacIpRange - Append(items ...BgpCMacIpRange) BgpV4EviVxlanBroadcastDomainBgpCMacIpRangeIter - Set(index int, newObj BgpCMacIpRange) BgpV4EviVxlanBroadcastDomainBgpCMacIpRangeIter - Clear() BgpV4EviVxlanBroadcastDomainBgpCMacIpRangeIter - clearHolderSlice() BgpV4EviVxlanBroadcastDomainBgpCMacIpRangeIter - appendHolderSlice(item BgpCMacIpRange) BgpV4EviVxlanBroadcastDomainBgpCMacIpRangeIter -} +// description is TBD +// Start returns a uint32 +func (obj *patternFlowRSVPPathSenderTspecIntServZeroBitCounter) Start() uint32 { -func (obj *bgpV4EviVxlanBroadcastDomainBgpCMacIpRangeIter) setMsg(msg *bgpV4EviVxlanBroadcastDomain) BgpV4EviVxlanBroadcastDomainBgpCMacIpRangeIter { - obj.clearHolderSlice() - for _, val := range *obj.fieldPtr { - obj.appendHolderSlice(&bgpCMacIpRange{obj: val}) - } - obj.obj = msg - return obj -} + return *obj.obj.Start -func (obj *bgpV4EviVxlanBroadcastDomainBgpCMacIpRangeIter) Items() []BgpCMacIpRange { - return obj.bgpCMacIpRangeSlice } -func (obj *bgpV4EviVxlanBroadcastDomainBgpCMacIpRangeIter) Add() BgpCMacIpRange { - newObj := &otg.BgpCMacIpRange{} - *obj.fieldPtr = append(*obj.fieldPtr, newObj) - newLibObj := &bgpCMacIpRange{obj: newObj} - newLibObj.setDefault() - obj.bgpCMacIpRangeSlice = append(obj.bgpCMacIpRangeSlice, newLibObj) - return newLibObj +// description is TBD +// Start returns a uint32 +func (obj *patternFlowRSVPPathSenderTspecIntServZeroBitCounter) HasStart() bool { + return obj.obj.Start != nil } -func (obj *bgpV4EviVxlanBroadcastDomainBgpCMacIpRangeIter) Append(items ...BgpCMacIpRange) BgpV4EviVxlanBroadcastDomainBgpCMacIpRangeIter { - for _, item := range items { - newObj := item.Msg() - *obj.fieldPtr = append(*obj.fieldPtr, newObj) - obj.bgpCMacIpRangeSlice = append(obj.bgpCMacIpRangeSlice, item) - } - return obj -} +// description is TBD +// SetStart sets the uint32 value in the PatternFlowRSVPPathSenderTspecIntServZeroBitCounter object +func (obj *patternFlowRSVPPathSenderTspecIntServZeroBitCounter) SetStart(value uint32) PatternFlowRSVPPathSenderTspecIntServZeroBitCounter { -func (obj *bgpV4EviVxlanBroadcastDomainBgpCMacIpRangeIter) Set(index int, newObj BgpCMacIpRange) BgpV4EviVxlanBroadcastDomainBgpCMacIpRangeIter { - (*obj.fieldPtr)[index] = newObj.Msg() - obj.bgpCMacIpRangeSlice[index] = newObj - return obj -} -func (obj *bgpV4EviVxlanBroadcastDomainBgpCMacIpRangeIter) Clear() BgpV4EviVxlanBroadcastDomainBgpCMacIpRangeIter { - if len(*obj.fieldPtr) > 0 { - *obj.fieldPtr = []*otg.BgpCMacIpRange{} - obj.bgpCMacIpRangeSlice = []BgpCMacIpRange{} - } - return obj -} -func (obj *bgpV4EviVxlanBroadcastDomainBgpCMacIpRangeIter) clearHolderSlice() BgpV4EviVxlanBroadcastDomainBgpCMacIpRangeIter { - if len(obj.bgpCMacIpRangeSlice) > 0 { - obj.bgpCMacIpRangeSlice = []BgpCMacIpRange{} - } - return obj -} -func (obj *bgpV4EviVxlanBroadcastDomainBgpCMacIpRangeIter) appendHolderSlice(item BgpCMacIpRange) BgpV4EviVxlanBroadcastDomainBgpCMacIpRangeIter { - obj.bgpCMacIpRangeSlice = append(obj.bgpCMacIpRangeSlice, item) + obj.obj.Start = &value return obj } -// The Ethernet Tag ID of the Broadcast Domain. -// EthernetTagId returns a uint32 -func (obj *bgpV4EviVxlanBroadcastDomain) EthernetTagId() uint32 { +// description is TBD +// Step returns a uint32 +func (obj *patternFlowRSVPPathSenderTspecIntServZeroBitCounter) Step() uint32 { - return *obj.obj.EthernetTagId + return *obj.obj.Step } -// The Ethernet Tag ID of the Broadcast Domain. -// EthernetTagId returns a uint32 -func (obj *bgpV4EviVxlanBroadcastDomain) HasEthernetTagId() bool { - return obj.obj.EthernetTagId != nil +// description is TBD +// Step returns a uint32 +func (obj *patternFlowRSVPPathSenderTspecIntServZeroBitCounter) HasStep() bool { + return obj.obj.Step != nil } -// The Ethernet Tag ID of the Broadcast Domain. -// SetEthernetTagId sets the uint32 value in the BgpV4EviVxlanBroadcastDomain object -func (obj *bgpV4EviVxlanBroadcastDomain) SetEthernetTagId(value uint32) BgpV4EviVxlanBroadcastDomain { +// description is TBD +// SetStep sets the uint32 value in the PatternFlowRSVPPathSenderTspecIntServZeroBitCounter object +func (obj *patternFlowRSVPPathSenderTspecIntServZeroBitCounter) SetStep(value uint32) PatternFlowRSVPPathSenderTspecIntServZeroBitCounter { - obj.obj.EthernetTagId = &value + obj.obj.Step = &value return obj } -// VLAN-Aware service to be enabled or disabled. -// VlanAwareService returns a bool -func (obj *bgpV4EviVxlanBroadcastDomain) VlanAwareService() bool { +// description is TBD +// Count returns a uint32 +func (obj *patternFlowRSVPPathSenderTspecIntServZeroBitCounter) Count() uint32 { - return *obj.obj.VlanAwareService + return *obj.obj.Count } -// VLAN-Aware service to be enabled or disabled. -// VlanAwareService returns a bool -func (obj *bgpV4EviVxlanBroadcastDomain) HasVlanAwareService() bool { - return obj.obj.VlanAwareService != nil +// description is TBD +// Count returns a uint32 +func (obj *patternFlowRSVPPathSenderTspecIntServZeroBitCounter) HasCount() bool { + return obj.obj.Count != nil } -// VLAN-Aware service to be enabled or disabled. -// SetVlanAwareService sets the bool value in the BgpV4EviVxlanBroadcastDomain object -func (obj *bgpV4EviVxlanBroadcastDomain) SetVlanAwareService(value bool) BgpV4EviVxlanBroadcastDomain { +// description is TBD +// SetCount sets the uint32 value in the PatternFlowRSVPPathSenderTspecIntServZeroBitCounter object +func (obj *patternFlowRSVPPathSenderTspecIntServZeroBitCounter) SetCount(value uint32) PatternFlowRSVPPathSenderTspecIntServZeroBitCounter { - obj.obj.VlanAwareService = &value + obj.obj.Count = &value return obj } -func (obj *bgpV4EviVxlanBroadcastDomain) validateObj(vObj *validation, set_default bool) { +func (obj *patternFlowRSVPPathSenderTspecIntServZeroBitCounter) validateObj(vObj *validation, set_default bool) { if set_default { obj.setDefault() } - if len(obj.obj.CmacIpRange) != 0 { + if obj.obj.Start != nil { - if set_default { - obj.CmacIpRange().clearHolderSlice() - for _, item := range obj.obj.CmacIpRange { - obj.CmacIpRange().appendHolderSlice(&bgpCMacIpRange{obj: item}) - } + if *obj.obj.Start > 1 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("0 <= PatternFlowRSVPPathSenderTspecIntServZeroBitCounter.Start <= 1 but Got %d", *obj.obj.Start)) } - for _, item := range obj.CmacIpRange().Items() { - item.validateObj(vObj, set_default) + + } + + if obj.obj.Step != nil { + + if *obj.obj.Step > 1 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("0 <= PatternFlowRSVPPathSenderTspecIntServZeroBitCounter.Step <= 1 but Got %d", *obj.obj.Step)) + } + + } + + if obj.obj.Count != nil { + + if *obj.obj.Count > 1 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("0 <= PatternFlowRSVPPathSenderTspecIntServZeroBitCounter.Count <= 1 but Got %d", *obj.obj.Count)) } } } -func (obj *bgpV4EviVxlanBroadcastDomain) setDefault() { - if obj.obj.EthernetTagId == nil { - obj.SetEthernetTagId(0) +func (obj *patternFlowRSVPPathSenderTspecIntServZeroBitCounter) setDefault() { + if obj.obj.Start == nil { + obj.SetStart(0) } - if obj.obj.VlanAwareService == nil { - obj.SetVlanAwareService(false) + if obj.obj.Step == nil { + obj.SetStep(1) + } + if obj.obj.Count == nil { + obj.SetCount(1) } } -// ***** BgpRouteDistinguisher ***** -type bgpRouteDistinguisher struct { +// ***** PatternFlowRSVPPathSenderTspecIntServReserved2Counter ***** +type patternFlowRSVPPathSenderTspecIntServReserved2Counter struct { validation - obj *otg.BgpRouteDistinguisher + obj *otg.PatternFlowRSVPPathSenderTspecIntServReserved2Counter } -func NewBgpRouteDistinguisher() BgpRouteDistinguisher { - obj := bgpRouteDistinguisher{obj: &otg.BgpRouteDistinguisher{}} +func NewPatternFlowRSVPPathSenderTspecIntServReserved2Counter() PatternFlowRSVPPathSenderTspecIntServReserved2Counter { + obj := patternFlowRSVPPathSenderTspecIntServReserved2Counter{obj: &otg.PatternFlowRSVPPathSenderTspecIntServReserved2Counter{}} obj.setDefault() return &obj } -func (obj *bgpRouteDistinguisher) Msg() *otg.BgpRouteDistinguisher { +func (obj *patternFlowRSVPPathSenderTspecIntServReserved2Counter) Msg() *otg.PatternFlowRSVPPathSenderTspecIntServReserved2Counter { return obj.obj } -func (obj *bgpRouteDistinguisher) SetMsg(msg *otg.BgpRouteDistinguisher) BgpRouteDistinguisher { +func (obj *patternFlowRSVPPathSenderTspecIntServReserved2Counter) SetMsg(msg *otg.PatternFlowRSVPPathSenderTspecIntServReserved2Counter) PatternFlowRSVPPathSenderTspecIntServReserved2Counter { proto.Merge(obj.obj, msg) return obj } -func (obj *bgpRouteDistinguisher) ToProto() (*otg.BgpRouteDistinguisher, error) { +func (obj *patternFlowRSVPPathSenderTspecIntServReserved2Counter) ToProto() (*otg.PatternFlowRSVPPathSenderTspecIntServReserved2Counter, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -311584,7 +358681,7 @@ func (obj *bgpRouteDistinguisher) ToProto() (*otg.BgpRouteDistinguisher, error) return obj.Msg(), nil } -func (obj *bgpRouteDistinguisher) FromProto(msg *otg.BgpRouteDistinguisher) (BgpRouteDistinguisher, error) { +func (obj *patternFlowRSVPPathSenderTspecIntServReserved2Counter) FromProto(msg *otg.PatternFlowRSVPPathSenderTspecIntServReserved2Counter) (PatternFlowRSVPPathSenderTspecIntServReserved2Counter, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -311593,7 +358690,7 @@ func (obj *bgpRouteDistinguisher) FromProto(msg *otg.BgpRouteDistinguisher) (Bgp return newObj, nil } -func (obj *bgpRouteDistinguisher) ToPbText() (string, error) { +func (obj *patternFlowRSVPPathSenderTspecIntServReserved2Counter) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -311605,7 +358702,7 @@ func (obj *bgpRouteDistinguisher) ToPbText() (string, error) { return string(protoMarshal), nil } -func (obj *bgpRouteDistinguisher) FromPbText(value string) error { +func (obj *patternFlowRSVPPathSenderTspecIntServReserved2Counter) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj @@ -311618,7 +358715,7 @@ func (obj *bgpRouteDistinguisher) FromPbText(value string) error { return retObj } -func (obj *bgpRouteDistinguisher) ToYaml() (string, error) { +func (obj *patternFlowRSVPPathSenderTspecIntServReserved2Counter) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -311639,7 +358736,7 @@ func (obj *bgpRouteDistinguisher) ToYaml() (string, error) { return string(data), nil } -func (obj *bgpRouteDistinguisher) FromYaml(value string) error { +func (obj *patternFlowRSVPPathSenderTspecIntServReserved2Counter) FromYaml(value string) error { if value == "" { value = "{}" } @@ -311664,7 +358761,7 @@ func (obj *bgpRouteDistinguisher) FromYaml(value string) error { return nil } -func (obj *bgpRouteDistinguisher) ToJson() (string, error) { +func (obj *patternFlowRSVPPathSenderTspecIntServReserved2Counter) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -311682,7 +358779,7 @@ func (obj *bgpRouteDistinguisher) ToJson() (string, error) { return string(data), nil } -func (obj *bgpRouteDistinguisher) FromJson(value string) error { +func (obj *patternFlowRSVPPathSenderTspecIntServReserved2Counter) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -311703,19 +358800,19 @@ func (obj *bgpRouteDistinguisher) FromJson(value string) error { return nil } -func (obj *bgpRouteDistinguisher) validateToAndFrom() error { +func (obj *patternFlowRSVPPathSenderTspecIntServReserved2Counter) validateToAndFrom() error { // emptyVars() obj.validateObj(&obj.validation, true) return obj.validationResult() } -func (obj *bgpRouteDistinguisher) Validate() error { +func (obj *patternFlowRSVPPathSenderTspecIntServReserved2Counter) Validate() error { // emptyVars() obj.validateObj(&obj.validation, false) return obj.validationResult() } -func (obj *bgpRouteDistinguisher) String() string { +func (obj *patternFlowRSVPPathSenderTspecIntServReserved2Counter) String() string { str, err := obj.ToYaml() if err != nil { return err.Error() @@ -311723,12 +358820,12 @@ func (obj *bgpRouteDistinguisher) String() string { return str } -func (obj *bgpRouteDistinguisher) Clone() (BgpRouteDistinguisher, error) { +func (obj *patternFlowRSVPPathSenderTspecIntServReserved2Counter) Clone() (PatternFlowRSVPPathSenderTspecIntServReserved2Counter, error) { vErr := obj.Validate() if vErr != nil { return nil, vErr } - newObj := NewBgpRouteDistinguisher() + newObj := NewPatternFlowRSVPPathSenderTspecIntServReserved2Counter() data, err := proto.Marshal(obj.Msg()) if err != nil { return nil, err @@ -311740,184 +358837,199 @@ func (obj *bgpRouteDistinguisher) Clone() (BgpRouteDistinguisher, error) { return newObj, nil } -// BgpRouteDistinguisher is bGP Route Distinguisher. -type BgpRouteDistinguisher interface { +// PatternFlowRSVPPathSenderTspecIntServReserved2Counter is integer counter pattern +type PatternFlowRSVPPathSenderTspecIntServReserved2Counter interface { Validation - // Msg marshals BgpRouteDistinguisher to protobuf object *otg.BgpRouteDistinguisher + // Msg marshals PatternFlowRSVPPathSenderTspecIntServReserved2Counter to protobuf object *otg.PatternFlowRSVPPathSenderTspecIntServReserved2Counter // and doesn't set defaults - Msg() *otg.BgpRouteDistinguisher - // SetMsg unmarshals BgpRouteDistinguisher from protobuf object *otg.BgpRouteDistinguisher + Msg() *otg.PatternFlowRSVPPathSenderTspecIntServReserved2Counter + // SetMsg unmarshals PatternFlowRSVPPathSenderTspecIntServReserved2Counter from protobuf object *otg.PatternFlowRSVPPathSenderTspecIntServReserved2Counter // and doesn't set defaults - SetMsg(*otg.BgpRouteDistinguisher) BgpRouteDistinguisher - // ToProto marshals BgpRouteDistinguisher to protobuf object *otg.BgpRouteDistinguisher - ToProto() (*otg.BgpRouteDistinguisher, error) - // ToPbText marshals BgpRouteDistinguisher to protobuf text + SetMsg(*otg.PatternFlowRSVPPathSenderTspecIntServReserved2Counter) PatternFlowRSVPPathSenderTspecIntServReserved2Counter + // ToProto marshals PatternFlowRSVPPathSenderTspecIntServReserved2Counter to protobuf object *otg.PatternFlowRSVPPathSenderTspecIntServReserved2Counter + ToProto() (*otg.PatternFlowRSVPPathSenderTspecIntServReserved2Counter, error) + // ToPbText marshals PatternFlowRSVPPathSenderTspecIntServReserved2Counter to protobuf text ToPbText() (string, error) - // ToYaml marshals BgpRouteDistinguisher to YAML text + // ToYaml marshals PatternFlowRSVPPathSenderTspecIntServReserved2Counter to YAML text ToYaml() (string, error) - // ToJson marshals BgpRouteDistinguisher to JSON text + // ToJson marshals PatternFlowRSVPPathSenderTspecIntServReserved2Counter to JSON text ToJson() (string, error) - // FromProto unmarshals BgpRouteDistinguisher from protobuf object *otg.BgpRouteDistinguisher - FromProto(msg *otg.BgpRouteDistinguisher) (BgpRouteDistinguisher, error) - // FromPbText unmarshals BgpRouteDistinguisher from protobuf text + // FromProto unmarshals PatternFlowRSVPPathSenderTspecIntServReserved2Counter from protobuf object *otg.PatternFlowRSVPPathSenderTspecIntServReserved2Counter + FromProto(msg *otg.PatternFlowRSVPPathSenderTspecIntServReserved2Counter) (PatternFlowRSVPPathSenderTspecIntServReserved2Counter, error) + // FromPbText unmarshals PatternFlowRSVPPathSenderTspecIntServReserved2Counter from protobuf text FromPbText(value string) error - // FromYaml unmarshals BgpRouteDistinguisher from YAML text + // FromYaml unmarshals PatternFlowRSVPPathSenderTspecIntServReserved2Counter from YAML text FromYaml(value string) error - // FromJson unmarshals BgpRouteDistinguisher from JSON text + // FromJson unmarshals PatternFlowRSVPPathSenderTspecIntServReserved2Counter from JSON text FromJson(value string) error - // Validate validates BgpRouteDistinguisher + // Validate validates PatternFlowRSVPPathSenderTspecIntServReserved2Counter Validate() error // A stringer function String() string // Clones the object - Clone() (BgpRouteDistinguisher, error) + Clone() (PatternFlowRSVPPathSenderTspecIntServReserved2Counter, error) validateToAndFrom() error validateObj(vObj *validation, set_default bool) setDefault() - // RdType returns BgpRouteDistinguisherRdTypeEnum, set in BgpRouteDistinguisher - RdType() BgpRouteDistinguisherRdTypeEnum - // SetRdType assigns BgpRouteDistinguisherRdTypeEnum provided by user to BgpRouteDistinguisher - SetRdType(value BgpRouteDistinguisherRdTypeEnum) BgpRouteDistinguisher - // HasRdType checks if RdType has been set in BgpRouteDistinguisher - HasRdType() bool - // AutoConfigRdIpAddr returns bool, set in BgpRouteDistinguisher. - AutoConfigRdIpAddr() bool - // SetAutoConfigRdIpAddr assigns bool provided by user to BgpRouteDistinguisher - SetAutoConfigRdIpAddr(value bool) BgpRouteDistinguisher - // HasAutoConfigRdIpAddr checks if AutoConfigRdIpAddr has been set in BgpRouteDistinguisher - HasAutoConfigRdIpAddr() bool - // RdValue returns string, set in BgpRouteDistinguisher. - RdValue() string - // SetRdValue assigns string provided by user to BgpRouteDistinguisher - SetRdValue(value string) BgpRouteDistinguisher - // HasRdValue checks if RdValue has been set in BgpRouteDistinguisher - HasRdValue() bool + // Start returns uint32, set in PatternFlowRSVPPathSenderTspecIntServReserved2Counter. + Start() uint32 + // SetStart assigns uint32 provided by user to PatternFlowRSVPPathSenderTspecIntServReserved2Counter + SetStart(value uint32) PatternFlowRSVPPathSenderTspecIntServReserved2Counter + // HasStart checks if Start has been set in PatternFlowRSVPPathSenderTspecIntServReserved2Counter + HasStart() bool + // Step returns uint32, set in PatternFlowRSVPPathSenderTspecIntServReserved2Counter. + Step() uint32 + // SetStep assigns uint32 provided by user to PatternFlowRSVPPathSenderTspecIntServReserved2Counter + SetStep(value uint32) PatternFlowRSVPPathSenderTspecIntServReserved2Counter + // HasStep checks if Step has been set in PatternFlowRSVPPathSenderTspecIntServReserved2Counter + HasStep() bool + // Count returns uint32, set in PatternFlowRSVPPathSenderTspecIntServReserved2Counter. + Count() uint32 + // SetCount assigns uint32 provided by user to PatternFlowRSVPPathSenderTspecIntServReserved2Counter + SetCount(value uint32) PatternFlowRSVPPathSenderTspecIntServReserved2Counter + // HasCount checks if Count has been set in PatternFlowRSVPPathSenderTspecIntServReserved2Counter + HasCount() bool } -type BgpRouteDistinguisherRdTypeEnum string +// description is TBD +// Start returns a uint32 +func (obj *patternFlowRSVPPathSenderTspecIntServReserved2Counter) Start() uint32 { -// Enum of RdType on BgpRouteDistinguisher -var BgpRouteDistinguisherRdType = struct { - AS_2OCTET BgpRouteDistinguisherRdTypeEnum - IPV4_ADDRESS BgpRouteDistinguisherRdTypeEnum - AS_4OCTET BgpRouteDistinguisherRdTypeEnum -}{ - AS_2OCTET: BgpRouteDistinguisherRdTypeEnum("as_2octet"), - IPV4_ADDRESS: BgpRouteDistinguisherRdTypeEnum("ipv4_address"), - AS_4OCTET: BgpRouteDistinguisherRdTypeEnum("as_4octet"), -} + return *obj.obj.Start -func (obj *bgpRouteDistinguisher) RdType() BgpRouteDistinguisherRdTypeEnum { - return BgpRouteDistinguisherRdTypeEnum(obj.obj.RdType.Enum().String()) } -// Route Distinguisher Type field of 2 Byte. -// - as_2octet: Two-Octet AS Specific Extended Community (RFC 4360). -// - ipv4_address: IPv4 Address Specific Extended Community (RFC 4360). -// - as_4octet: 4-Octet AS Specific Extended Community (RFC 5668). -// RdType returns a string -func (obj *bgpRouteDistinguisher) HasRdType() bool { - return obj.obj.RdType != nil +// description is TBD +// Start returns a uint32 +func (obj *patternFlowRSVPPathSenderTspecIntServReserved2Counter) HasStart() bool { + return obj.obj.Start != nil } -func (obj *bgpRouteDistinguisher) SetRdType(value BgpRouteDistinguisherRdTypeEnum) BgpRouteDistinguisher { - intValue, ok := otg.BgpRouteDistinguisher_RdType_Enum_value[string(value)] - if !ok { - obj.validationErrors = append(obj.validationErrors, fmt.Sprintf( - "%s is not a valid choice on BgpRouteDistinguisherRdTypeEnum", string(value))) - return obj - } - enumValue := otg.BgpRouteDistinguisher_RdType_Enum(intValue) - obj.obj.RdType = &enumValue +// description is TBD +// SetStart sets the uint32 value in the PatternFlowRSVPPathSenderTspecIntServReserved2Counter object +func (obj *patternFlowRSVPPathSenderTspecIntServReserved2Counter) SetStart(value uint32) PatternFlowRSVPPathSenderTspecIntServReserved2Counter { + obj.obj.Start = &value return obj } -// Allow to automatically configure RD IP address from local ip. -// AutoConfigRdIpAddr returns a bool -func (obj *bgpRouteDistinguisher) AutoConfigRdIpAddr() bool { +// description is TBD +// Step returns a uint32 +func (obj *patternFlowRSVPPathSenderTspecIntServReserved2Counter) Step() uint32 { - return *obj.obj.AutoConfigRdIpAddr + return *obj.obj.Step } -// Allow to automatically configure RD IP address from local ip. -// AutoConfigRdIpAddr returns a bool -func (obj *bgpRouteDistinguisher) HasAutoConfigRdIpAddr() bool { - return obj.obj.AutoConfigRdIpAddr != nil +// description is TBD +// Step returns a uint32 +func (obj *patternFlowRSVPPathSenderTspecIntServReserved2Counter) HasStep() bool { + return obj.obj.Step != nil } -// Allow to automatically configure RD IP address from local ip. -// SetAutoConfigRdIpAddr sets the bool value in the BgpRouteDistinguisher object -func (obj *bgpRouteDistinguisher) SetAutoConfigRdIpAddr(value bool) BgpRouteDistinguisher { +// description is TBD +// SetStep sets the uint32 value in the PatternFlowRSVPPathSenderTspecIntServReserved2Counter object +func (obj *patternFlowRSVPPathSenderTspecIntServReserved2Counter) SetStep(value uint32) PatternFlowRSVPPathSenderTspecIntServReserved2Counter { - obj.obj.AutoConfigRdIpAddr = &value + obj.obj.Step = &value return obj } -// Colon separated Extended Community value of 6 Bytes - "AS number: Value". Example - for the as_2octet or as_4octet "60005:100", for ipv4_address "1.1.1.1:100" -// RdValue returns a string -func (obj *bgpRouteDistinguisher) RdValue() string { +// description is TBD +// Count returns a uint32 +func (obj *patternFlowRSVPPathSenderTspecIntServReserved2Counter) Count() uint32 { - return *obj.obj.RdValue + return *obj.obj.Count } -// Colon separated Extended Community value of 6 Bytes - "AS number: Value". Example - for the as_2octet or as_4octet "60005:100", for ipv4_address "1.1.1.1:100" -// RdValue returns a string -func (obj *bgpRouteDistinguisher) HasRdValue() bool { - return obj.obj.RdValue != nil +// description is TBD +// Count returns a uint32 +func (obj *patternFlowRSVPPathSenderTspecIntServReserved2Counter) HasCount() bool { + return obj.obj.Count != nil } -// Colon separated Extended Community value of 6 Bytes - "AS number: Value". Example - for the as_2octet or as_4octet "60005:100", for ipv4_address "1.1.1.1:100" -// SetRdValue sets the string value in the BgpRouteDistinguisher object -func (obj *bgpRouteDistinguisher) SetRdValue(value string) BgpRouteDistinguisher { +// description is TBD +// SetCount sets the uint32 value in the PatternFlowRSVPPathSenderTspecIntServReserved2Counter object +func (obj *patternFlowRSVPPathSenderTspecIntServReserved2Counter) SetCount(value uint32) PatternFlowRSVPPathSenderTspecIntServReserved2Counter { - obj.obj.RdValue = &value + obj.obj.Count = &value return obj } -func (obj *bgpRouteDistinguisher) validateObj(vObj *validation, set_default bool) { +func (obj *patternFlowRSVPPathSenderTspecIntServReserved2Counter) validateObj(vObj *validation, set_default bool) { if set_default { obj.setDefault() } -} + if obj.obj.Start != nil { -func (obj *bgpRouteDistinguisher) setDefault() { - if obj.obj.RdType == nil { - obj.SetRdType(BgpRouteDistinguisherRdType.AS_2OCTET) + if *obj.obj.Start > 127 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("0 <= PatternFlowRSVPPathSenderTspecIntServReserved2Counter.Start <= 127 but Got %d", *obj.obj.Start)) + } } - if obj.obj.AutoConfigRdIpAddr == nil { - obj.SetAutoConfigRdIpAddr(false) + + if obj.obj.Step != nil { + + if *obj.obj.Step > 127 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("0 <= PatternFlowRSVPPathSenderTspecIntServReserved2Counter.Step <= 127 but Got %d", *obj.obj.Step)) + } + + } + + if obj.obj.Count != nil { + + if *obj.obj.Count > 127 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("0 <= PatternFlowRSVPPathSenderTspecIntServReserved2Counter.Count <= 127 but Got %d", *obj.obj.Count)) + } + } } -// ***** BgpRouteTarget ***** -type bgpRouteTarget struct { +func (obj *patternFlowRSVPPathSenderTspecIntServReserved2Counter) setDefault() { + if obj.obj.Start == nil { + obj.SetStart(0) + } + if obj.obj.Step == nil { + obj.SetStep(1) + } + if obj.obj.Count == nil { + obj.SetCount(1) + } + +} + +// ***** PatternFlowRSVPPathSenderTspecIntServLengthOfServiceDataCounter ***** +type patternFlowRSVPPathSenderTspecIntServLengthOfServiceDataCounter struct { validation - obj *otg.BgpRouteTarget + obj *otg.PatternFlowRSVPPathSenderTspecIntServLengthOfServiceDataCounter } -func NewBgpRouteTarget() BgpRouteTarget { - obj := bgpRouteTarget{obj: &otg.BgpRouteTarget{}} +func NewPatternFlowRSVPPathSenderTspecIntServLengthOfServiceDataCounter() PatternFlowRSVPPathSenderTspecIntServLengthOfServiceDataCounter { + obj := patternFlowRSVPPathSenderTspecIntServLengthOfServiceDataCounter{obj: &otg.PatternFlowRSVPPathSenderTspecIntServLengthOfServiceDataCounter{}} obj.setDefault() return &obj } -func (obj *bgpRouteTarget) Msg() *otg.BgpRouteTarget { +func (obj *patternFlowRSVPPathSenderTspecIntServLengthOfServiceDataCounter) Msg() *otg.PatternFlowRSVPPathSenderTspecIntServLengthOfServiceDataCounter { return obj.obj } -func (obj *bgpRouteTarget) SetMsg(msg *otg.BgpRouteTarget) BgpRouteTarget { +func (obj *patternFlowRSVPPathSenderTspecIntServLengthOfServiceDataCounter) SetMsg(msg *otg.PatternFlowRSVPPathSenderTspecIntServLengthOfServiceDataCounter) PatternFlowRSVPPathSenderTspecIntServLengthOfServiceDataCounter { proto.Merge(obj.obj, msg) return obj } -func (obj *bgpRouteTarget) ToProto() (*otg.BgpRouteTarget, error) { +func (obj *patternFlowRSVPPathSenderTspecIntServLengthOfServiceDataCounter) ToProto() (*otg.PatternFlowRSVPPathSenderTspecIntServLengthOfServiceDataCounter, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -311925,7 +359037,7 @@ func (obj *bgpRouteTarget) ToProto() (*otg.BgpRouteTarget, error) { return obj.Msg(), nil } -func (obj *bgpRouteTarget) FromProto(msg *otg.BgpRouteTarget) (BgpRouteTarget, error) { +func (obj *patternFlowRSVPPathSenderTspecIntServLengthOfServiceDataCounter) FromProto(msg *otg.PatternFlowRSVPPathSenderTspecIntServLengthOfServiceDataCounter) (PatternFlowRSVPPathSenderTspecIntServLengthOfServiceDataCounter, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -311934,7 +359046,7 @@ func (obj *bgpRouteTarget) FromProto(msg *otg.BgpRouteTarget) (BgpRouteTarget, e return newObj, nil } -func (obj *bgpRouteTarget) ToPbText() (string, error) { +func (obj *patternFlowRSVPPathSenderTspecIntServLengthOfServiceDataCounter) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -311946,7 +359058,7 @@ func (obj *bgpRouteTarget) ToPbText() (string, error) { return string(protoMarshal), nil } -func (obj *bgpRouteTarget) FromPbText(value string) error { +func (obj *patternFlowRSVPPathSenderTspecIntServLengthOfServiceDataCounter) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj @@ -311959,7 +359071,7 @@ func (obj *bgpRouteTarget) FromPbText(value string) error { return retObj } -func (obj *bgpRouteTarget) ToYaml() (string, error) { +func (obj *patternFlowRSVPPathSenderTspecIntServLengthOfServiceDataCounter) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -311980,7 +359092,7 @@ func (obj *bgpRouteTarget) ToYaml() (string, error) { return string(data), nil } -func (obj *bgpRouteTarget) FromYaml(value string) error { +func (obj *patternFlowRSVPPathSenderTspecIntServLengthOfServiceDataCounter) FromYaml(value string) error { if value == "" { value = "{}" } @@ -312005,7 +359117,7 @@ func (obj *bgpRouteTarget) FromYaml(value string) error { return nil } -func (obj *bgpRouteTarget) ToJson() (string, error) { +func (obj *patternFlowRSVPPathSenderTspecIntServLengthOfServiceDataCounter) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -312023,7 +359135,7 @@ func (obj *bgpRouteTarget) ToJson() (string, error) { return string(data), nil } -func (obj *bgpRouteTarget) FromJson(value string) error { +func (obj *patternFlowRSVPPathSenderTspecIntServLengthOfServiceDataCounter) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -312044,19 +359156,19 @@ func (obj *bgpRouteTarget) FromJson(value string) error { return nil } -func (obj *bgpRouteTarget) validateToAndFrom() error { +func (obj *patternFlowRSVPPathSenderTspecIntServLengthOfServiceDataCounter) validateToAndFrom() error { // emptyVars() obj.validateObj(&obj.validation, true) return obj.validationResult() } -func (obj *bgpRouteTarget) Validate() error { +func (obj *patternFlowRSVPPathSenderTspecIntServLengthOfServiceDataCounter) Validate() error { // emptyVars() obj.validateObj(&obj.validation, false) return obj.validationResult() } -func (obj *bgpRouteTarget) String() string { +func (obj *patternFlowRSVPPathSenderTspecIntServLengthOfServiceDataCounter) String() string { str, err := obj.ToYaml() if err != nil { return err.Error() @@ -312064,12 +359176,12 @@ func (obj *bgpRouteTarget) String() string { return str } -func (obj *bgpRouteTarget) Clone() (BgpRouteTarget, error) { +func (obj *patternFlowRSVPPathSenderTspecIntServLengthOfServiceDataCounter) Clone() (PatternFlowRSVPPathSenderTspecIntServLengthOfServiceDataCounter, error) { vErr := obj.Validate() if vErr != nil { return nil, vErr } - newObj := NewBgpRouteTarget() + newObj := NewPatternFlowRSVPPathSenderTspecIntServLengthOfServiceDataCounter() data, err := proto.Marshal(obj.Msg()) if err != nil { return nil, err @@ -312081,149 +359193,199 @@ func (obj *bgpRouteTarget) Clone() (BgpRouteTarget, error) { return newObj, nil } -// BgpRouteTarget is bGP Route Target. -type BgpRouteTarget interface { +// PatternFlowRSVPPathSenderTspecIntServLengthOfServiceDataCounter is integer counter pattern +type PatternFlowRSVPPathSenderTspecIntServLengthOfServiceDataCounter interface { Validation - // Msg marshals BgpRouteTarget to protobuf object *otg.BgpRouteTarget + // Msg marshals PatternFlowRSVPPathSenderTspecIntServLengthOfServiceDataCounter to protobuf object *otg.PatternFlowRSVPPathSenderTspecIntServLengthOfServiceDataCounter // and doesn't set defaults - Msg() *otg.BgpRouteTarget - // SetMsg unmarshals BgpRouteTarget from protobuf object *otg.BgpRouteTarget + Msg() *otg.PatternFlowRSVPPathSenderTspecIntServLengthOfServiceDataCounter + // SetMsg unmarshals PatternFlowRSVPPathSenderTspecIntServLengthOfServiceDataCounter from protobuf object *otg.PatternFlowRSVPPathSenderTspecIntServLengthOfServiceDataCounter // and doesn't set defaults - SetMsg(*otg.BgpRouteTarget) BgpRouteTarget - // ToProto marshals BgpRouteTarget to protobuf object *otg.BgpRouteTarget - ToProto() (*otg.BgpRouteTarget, error) - // ToPbText marshals BgpRouteTarget to protobuf text + SetMsg(*otg.PatternFlowRSVPPathSenderTspecIntServLengthOfServiceDataCounter) PatternFlowRSVPPathSenderTspecIntServLengthOfServiceDataCounter + // ToProto marshals PatternFlowRSVPPathSenderTspecIntServLengthOfServiceDataCounter to protobuf object *otg.PatternFlowRSVPPathSenderTspecIntServLengthOfServiceDataCounter + ToProto() (*otg.PatternFlowRSVPPathSenderTspecIntServLengthOfServiceDataCounter, error) + // ToPbText marshals PatternFlowRSVPPathSenderTspecIntServLengthOfServiceDataCounter to protobuf text ToPbText() (string, error) - // ToYaml marshals BgpRouteTarget to YAML text + // ToYaml marshals PatternFlowRSVPPathSenderTspecIntServLengthOfServiceDataCounter to YAML text ToYaml() (string, error) - // ToJson marshals BgpRouteTarget to JSON text + // ToJson marshals PatternFlowRSVPPathSenderTspecIntServLengthOfServiceDataCounter to JSON text ToJson() (string, error) - // FromProto unmarshals BgpRouteTarget from protobuf object *otg.BgpRouteTarget - FromProto(msg *otg.BgpRouteTarget) (BgpRouteTarget, error) - // FromPbText unmarshals BgpRouteTarget from protobuf text + // FromProto unmarshals PatternFlowRSVPPathSenderTspecIntServLengthOfServiceDataCounter from protobuf object *otg.PatternFlowRSVPPathSenderTspecIntServLengthOfServiceDataCounter + FromProto(msg *otg.PatternFlowRSVPPathSenderTspecIntServLengthOfServiceDataCounter) (PatternFlowRSVPPathSenderTspecIntServLengthOfServiceDataCounter, error) + // FromPbText unmarshals PatternFlowRSVPPathSenderTspecIntServLengthOfServiceDataCounter from protobuf text FromPbText(value string) error - // FromYaml unmarshals BgpRouteTarget from YAML text + // FromYaml unmarshals PatternFlowRSVPPathSenderTspecIntServLengthOfServiceDataCounter from YAML text FromYaml(value string) error - // FromJson unmarshals BgpRouteTarget from JSON text + // FromJson unmarshals PatternFlowRSVPPathSenderTspecIntServLengthOfServiceDataCounter from JSON text FromJson(value string) error - // Validate validates BgpRouteTarget + // Validate validates PatternFlowRSVPPathSenderTspecIntServLengthOfServiceDataCounter Validate() error // A stringer function String() string // Clones the object - Clone() (BgpRouteTarget, error) + Clone() (PatternFlowRSVPPathSenderTspecIntServLengthOfServiceDataCounter, error) validateToAndFrom() error validateObj(vObj *validation, set_default bool) setDefault() - // RtType returns BgpRouteTargetRtTypeEnum, set in BgpRouteTarget - RtType() BgpRouteTargetRtTypeEnum - // SetRtType assigns BgpRouteTargetRtTypeEnum provided by user to BgpRouteTarget - SetRtType(value BgpRouteTargetRtTypeEnum) BgpRouteTarget - // HasRtType checks if RtType has been set in BgpRouteTarget - HasRtType() bool - // RtValue returns string, set in BgpRouteTarget. - RtValue() string - // SetRtValue assigns string provided by user to BgpRouteTarget - SetRtValue(value string) BgpRouteTarget - // HasRtValue checks if RtValue has been set in BgpRouteTarget - HasRtValue() bool + // Start returns uint32, set in PatternFlowRSVPPathSenderTspecIntServLengthOfServiceDataCounter. + Start() uint32 + // SetStart assigns uint32 provided by user to PatternFlowRSVPPathSenderTspecIntServLengthOfServiceDataCounter + SetStart(value uint32) PatternFlowRSVPPathSenderTspecIntServLengthOfServiceDataCounter + // HasStart checks if Start has been set in PatternFlowRSVPPathSenderTspecIntServLengthOfServiceDataCounter + HasStart() bool + // Step returns uint32, set in PatternFlowRSVPPathSenderTspecIntServLengthOfServiceDataCounter. + Step() uint32 + // SetStep assigns uint32 provided by user to PatternFlowRSVPPathSenderTspecIntServLengthOfServiceDataCounter + SetStep(value uint32) PatternFlowRSVPPathSenderTspecIntServLengthOfServiceDataCounter + // HasStep checks if Step has been set in PatternFlowRSVPPathSenderTspecIntServLengthOfServiceDataCounter + HasStep() bool + // Count returns uint32, set in PatternFlowRSVPPathSenderTspecIntServLengthOfServiceDataCounter. + Count() uint32 + // SetCount assigns uint32 provided by user to PatternFlowRSVPPathSenderTspecIntServLengthOfServiceDataCounter + SetCount(value uint32) PatternFlowRSVPPathSenderTspecIntServLengthOfServiceDataCounter + // HasCount checks if Count has been set in PatternFlowRSVPPathSenderTspecIntServLengthOfServiceDataCounter + HasCount() bool } -type BgpRouteTargetRtTypeEnum string +// description is TBD +// Start returns a uint32 +func (obj *patternFlowRSVPPathSenderTspecIntServLengthOfServiceDataCounter) Start() uint32 { + + return *obj.obj.Start -// Enum of RtType on BgpRouteTarget -var BgpRouteTargetRtType = struct { - AS_2OCTET BgpRouteTargetRtTypeEnum - IPV4_ADDRESS BgpRouteTargetRtTypeEnum - AS_4OCTET BgpRouteTargetRtTypeEnum -}{ - AS_2OCTET: BgpRouteTargetRtTypeEnum("as_2octet"), - IPV4_ADDRESS: BgpRouteTargetRtTypeEnum("ipv4_address"), - AS_4OCTET: BgpRouteTargetRtTypeEnum("as_4octet"), } -func (obj *bgpRouteTarget) RtType() BgpRouteTargetRtTypeEnum { - return BgpRouteTargetRtTypeEnum(obj.obj.RtType.Enum().String()) +// description is TBD +// Start returns a uint32 +func (obj *patternFlowRSVPPathSenderTspecIntServLengthOfServiceDataCounter) HasStart() bool { + return obj.obj.Start != nil } -// Extended Community Type field of 2 Byte. -// - as_2octet: Two-Octet AS Specific Extended Community (RFC 4360). -// - ipv4_address: IPv4 Address Specific Extended Community (RFC 4360). -// - as_4octet: 4-Octet AS Specific Extended Community (RFC 5668). -// RtType returns a string -func (obj *bgpRouteTarget) HasRtType() bool { - return obj.obj.RtType != nil +// description is TBD +// SetStart sets the uint32 value in the PatternFlowRSVPPathSenderTspecIntServLengthOfServiceDataCounter object +func (obj *patternFlowRSVPPathSenderTspecIntServLengthOfServiceDataCounter) SetStart(value uint32) PatternFlowRSVPPathSenderTspecIntServLengthOfServiceDataCounter { + + obj.obj.Start = &value + return obj } -func (obj *bgpRouteTarget) SetRtType(value BgpRouteTargetRtTypeEnum) BgpRouteTarget { - intValue, ok := otg.BgpRouteTarget_RtType_Enum_value[string(value)] - if !ok { - obj.validationErrors = append(obj.validationErrors, fmt.Sprintf( - "%s is not a valid choice on BgpRouteTargetRtTypeEnum", string(value))) - return obj - } - enumValue := otg.BgpRouteTarget_RtType_Enum(intValue) - obj.obj.RtType = &enumValue +// description is TBD +// Step returns a uint32 +func (obj *patternFlowRSVPPathSenderTspecIntServLengthOfServiceDataCounter) Step() uint32 { + + return *obj.obj.Step + +} + +// description is TBD +// Step returns a uint32 +func (obj *patternFlowRSVPPathSenderTspecIntServLengthOfServiceDataCounter) HasStep() bool { + return obj.obj.Step != nil +} +// description is TBD +// SetStep sets the uint32 value in the PatternFlowRSVPPathSenderTspecIntServLengthOfServiceDataCounter object +func (obj *patternFlowRSVPPathSenderTspecIntServLengthOfServiceDataCounter) SetStep(value uint32) PatternFlowRSVPPathSenderTspecIntServLengthOfServiceDataCounter { + + obj.obj.Step = &value return obj } -// Colon separated Extended Community value of 6 Bytes - AS number: Assigned Number. Example - for the as_2octet or as_4octet "60005:100", for ipv4_address "1.1.1.1:100" -// RtValue returns a string -func (obj *bgpRouteTarget) RtValue() string { +// description is TBD +// Count returns a uint32 +func (obj *patternFlowRSVPPathSenderTspecIntServLengthOfServiceDataCounter) Count() uint32 { - return *obj.obj.RtValue + return *obj.obj.Count } -// Colon separated Extended Community value of 6 Bytes - AS number: Assigned Number. Example - for the as_2octet or as_4octet "60005:100", for ipv4_address "1.1.1.1:100" -// RtValue returns a string -func (obj *bgpRouteTarget) HasRtValue() bool { - return obj.obj.RtValue != nil +// description is TBD +// Count returns a uint32 +func (obj *patternFlowRSVPPathSenderTspecIntServLengthOfServiceDataCounter) HasCount() bool { + return obj.obj.Count != nil } -// Colon separated Extended Community value of 6 Bytes - AS number: Assigned Number. Example - for the as_2octet or as_4octet "60005:100", for ipv4_address "1.1.1.1:100" -// SetRtValue sets the string value in the BgpRouteTarget object -func (obj *bgpRouteTarget) SetRtValue(value string) BgpRouteTarget { +// description is TBD +// SetCount sets the uint32 value in the PatternFlowRSVPPathSenderTspecIntServLengthOfServiceDataCounter object +func (obj *patternFlowRSVPPathSenderTspecIntServLengthOfServiceDataCounter) SetCount(value uint32) PatternFlowRSVPPathSenderTspecIntServLengthOfServiceDataCounter { - obj.obj.RtValue = &value + obj.obj.Count = &value return obj } -func (obj *bgpRouteTarget) validateObj(vObj *validation, set_default bool) { +func (obj *patternFlowRSVPPathSenderTspecIntServLengthOfServiceDataCounter) validateObj(vObj *validation, set_default bool) { if set_default { obj.setDefault() } + if obj.obj.Start != nil { + + if *obj.obj.Start > 65535 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("0 <= PatternFlowRSVPPathSenderTspecIntServLengthOfServiceDataCounter.Start <= 65535 but Got %d", *obj.obj.Start)) + } + + } + + if obj.obj.Step != nil { + + if *obj.obj.Step > 65535 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("0 <= PatternFlowRSVPPathSenderTspecIntServLengthOfServiceDataCounter.Step <= 65535 but Got %d", *obj.obj.Step)) + } + + } + + if obj.obj.Count != nil { + + if *obj.obj.Count > 65535 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("0 <= PatternFlowRSVPPathSenderTspecIntServLengthOfServiceDataCounter.Count <= 65535 but Got %d", *obj.obj.Count)) + } + + } + } -func (obj *bgpRouteTarget) setDefault() { +func (obj *patternFlowRSVPPathSenderTspecIntServLengthOfServiceDataCounter) setDefault() { + if obj.obj.Start == nil { + obj.SetStart(6) + } + if obj.obj.Step == nil { + obj.SetStep(1) + } + if obj.obj.Count == nil { + obj.SetCount(1) + } } -// ***** BgpExtendedCommunityTransitive2OctetAsTypeRouteTarget ***** -type bgpExtendedCommunityTransitive2OctetAsTypeRouteTarget struct { +// ***** PatternFlowRSVPPathSenderTspecIntServParameterIdTokenBucketTspecCounter ***** +type patternFlowRSVPPathSenderTspecIntServParameterIdTokenBucketTspecCounter struct { validation - obj *otg.BgpExtendedCommunityTransitive2OctetAsTypeRouteTarget + obj *otg.PatternFlowRSVPPathSenderTspecIntServParameterIdTokenBucketTspecCounter } -func NewBgpExtendedCommunityTransitive2OctetAsTypeRouteTarget() BgpExtendedCommunityTransitive2OctetAsTypeRouteTarget { - obj := bgpExtendedCommunityTransitive2OctetAsTypeRouteTarget{obj: &otg.BgpExtendedCommunityTransitive2OctetAsTypeRouteTarget{}} +func NewPatternFlowRSVPPathSenderTspecIntServParameterIdTokenBucketTspecCounter() PatternFlowRSVPPathSenderTspecIntServParameterIdTokenBucketTspecCounter { + obj := patternFlowRSVPPathSenderTspecIntServParameterIdTokenBucketTspecCounter{obj: &otg.PatternFlowRSVPPathSenderTspecIntServParameterIdTokenBucketTspecCounter{}} obj.setDefault() return &obj } -func (obj *bgpExtendedCommunityTransitive2OctetAsTypeRouteTarget) Msg() *otg.BgpExtendedCommunityTransitive2OctetAsTypeRouteTarget { +func (obj *patternFlowRSVPPathSenderTspecIntServParameterIdTokenBucketTspecCounter) Msg() *otg.PatternFlowRSVPPathSenderTspecIntServParameterIdTokenBucketTspecCounter { return obj.obj } -func (obj *bgpExtendedCommunityTransitive2OctetAsTypeRouteTarget) SetMsg(msg *otg.BgpExtendedCommunityTransitive2OctetAsTypeRouteTarget) BgpExtendedCommunityTransitive2OctetAsTypeRouteTarget { +func (obj *patternFlowRSVPPathSenderTspecIntServParameterIdTokenBucketTspecCounter) SetMsg(msg *otg.PatternFlowRSVPPathSenderTspecIntServParameterIdTokenBucketTspecCounter) PatternFlowRSVPPathSenderTspecIntServParameterIdTokenBucketTspecCounter { proto.Merge(obj.obj, msg) return obj } -func (obj *bgpExtendedCommunityTransitive2OctetAsTypeRouteTarget) ToProto() (*otg.BgpExtendedCommunityTransitive2OctetAsTypeRouteTarget, error) { +func (obj *patternFlowRSVPPathSenderTspecIntServParameterIdTokenBucketTspecCounter) ToProto() (*otg.PatternFlowRSVPPathSenderTspecIntServParameterIdTokenBucketTspecCounter, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -312231,7 +359393,7 @@ func (obj *bgpExtendedCommunityTransitive2OctetAsTypeRouteTarget) ToProto() (*ot return obj.Msg(), nil } -func (obj *bgpExtendedCommunityTransitive2OctetAsTypeRouteTarget) FromProto(msg *otg.BgpExtendedCommunityTransitive2OctetAsTypeRouteTarget) (BgpExtendedCommunityTransitive2OctetAsTypeRouteTarget, error) { +func (obj *patternFlowRSVPPathSenderTspecIntServParameterIdTokenBucketTspecCounter) FromProto(msg *otg.PatternFlowRSVPPathSenderTspecIntServParameterIdTokenBucketTspecCounter) (PatternFlowRSVPPathSenderTspecIntServParameterIdTokenBucketTspecCounter, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -312240,7 +359402,7 @@ func (obj *bgpExtendedCommunityTransitive2OctetAsTypeRouteTarget) FromProto(msg return newObj, nil } -func (obj *bgpExtendedCommunityTransitive2OctetAsTypeRouteTarget) ToPbText() (string, error) { +func (obj *patternFlowRSVPPathSenderTspecIntServParameterIdTokenBucketTspecCounter) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -312252,7 +359414,7 @@ func (obj *bgpExtendedCommunityTransitive2OctetAsTypeRouteTarget) ToPbText() (st return string(protoMarshal), nil } -func (obj *bgpExtendedCommunityTransitive2OctetAsTypeRouteTarget) FromPbText(value string) error { +func (obj *patternFlowRSVPPathSenderTspecIntServParameterIdTokenBucketTspecCounter) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj @@ -312265,7 +359427,7 @@ func (obj *bgpExtendedCommunityTransitive2OctetAsTypeRouteTarget) FromPbText(val return retObj } -func (obj *bgpExtendedCommunityTransitive2OctetAsTypeRouteTarget) ToYaml() (string, error) { +func (obj *patternFlowRSVPPathSenderTspecIntServParameterIdTokenBucketTspecCounter) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -312286,7 +359448,7 @@ func (obj *bgpExtendedCommunityTransitive2OctetAsTypeRouteTarget) ToYaml() (stri return string(data), nil } -func (obj *bgpExtendedCommunityTransitive2OctetAsTypeRouteTarget) FromYaml(value string) error { +func (obj *patternFlowRSVPPathSenderTspecIntServParameterIdTokenBucketTspecCounter) FromYaml(value string) error { if value == "" { value = "{}" } @@ -312311,7 +359473,7 @@ func (obj *bgpExtendedCommunityTransitive2OctetAsTypeRouteTarget) FromYaml(value return nil } -func (obj *bgpExtendedCommunityTransitive2OctetAsTypeRouteTarget) ToJson() (string, error) { +func (obj *patternFlowRSVPPathSenderTspecIntServParameterIdTokenBucketTspecCounter) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -312329,7 +359491,7 @@ func (obj *bgpExtendedCommunityTransitive2OctetAsTypeRouteTarget) ToJson() (stri return string(data), nil } -func (obj *bgpExtendedCommunityTransitive2OctetAsTypeRouteTarget) FromJson(value string) error { +func (obj *patternFlowRSVPPathSenderTspecIntServParameterIdTokenBucketTspecCounter) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -312350,19 +359512,19 @@ func (obj *bgpExtendedCommunityTransitive2OctetAsTypeRouteTarget) FromJson(value return nil } -func (obj *bgpExtendedCommunityTransitive2OctetAsTypeRouteTarget) validateToAndFrom() error { +func (obj *patternFlowRSVPPathSenderTspecIntServParameterIdTokenBucketTspecCounter) validateToAndFrom() error { // emptyVars() obj.validateObj(&obj.validation, true) return obj.validationResult() } -func (obj *bgpExtendedCommunityTransitive2OctetAsTypeRouteTarget) Validate() error { +func (obj *patternFlowRSVPPathSenderTspecIntServParameterIdTokenBucketTspecCounter) Validate() error { // emptyVars() obj.validateObj(&obj.validation, false) return obj.validationResult() } -func (obj *bgpExtendedCommunityTransitive2OctetAsTypeRouteTarget) String() string { +func (obj *patternFlowRSVPPathSenderTspecIntServParameterIdTokenBucketTspecCounter) String() string { str, err := obj.ToYaml() if err != nil { return err.Error() @@ -312370,12 +359532,12 @@ func (obj *bgpExtendedCommunityTransitive2OctetAsTypeRouteTarget) String() strin return str } -func (obj *bgpExtendedCommunityTransitive2OctetAsTypeRouteTarget) Clone() (BgpExtendedCommunityTransitive2OctetAsTypeRouteTarget, error) { +func (obj *patternFlowRSVPPathSenderTspecIntServParameterIdTokenBucketTspecCounter) Clone() (PatternFlowRSVPPathSenderTspecIntServParameterIdTokenBucketTspecCounter, error) { vErr := obj.Validate() if vErr != nil { return nil, vErr } - newObj := NewBgpExtendedCommunityTransitive2OctetAsTypeRouteTarget() + newObj := NewPatternFlowRSVPPathSenderTspecIntServParameterIdTokenBucketTspecCounter() data, err := proto.Marshal(obj.Msg()) if err != nil { return nil, err @@ -312387,148 +359549,199 @@ func (obj *bgpExtendedCommunityTransitive2OctetAsTypeRouteTarget) Clone() (BgpEx return newObj, nil } -// BgpExtendedCommunityTransitive2OctetAsTypeRouteTarget is the Route Target Community identifies one or more routers that may receive a set of routes (that carry this Community) carried by BGP. It is sent with sub-type as 0x02. -type BgpExtendedCommunityTransitive2OctetAsTypeRouteTarget interface { +// PatternFlowRSVPPathSenderTspecIntServParameterIdTokenBucketTspecCounter is integer counter pattern +type PatternFlowRSVPPathSenderTspecIntServParameterIdTokenBucketTspecCounter interface { Validation - // Msg marshals BgpExtendedCommunityTransitive2OctetAsTypeRouteTarget to protobuf object *otg.BgpExtendedCommunityTransitive2OctetAsTypeRouteTarget + // Msg marshals PatternFlowRSVPPathSenderTspecIntServParameterIdTokenBucketTspecCounter to protobuf object *otg.PatternFlowRSVPPathSenderTspecIntServParameterIdTokenBucketTspecCounter // and doesn't set defaults - Msg() *otg.BgpExtendedCommunityTransitive2OctetAsTypeRouteTarget - // SetMsg unmarshals BgpExtendedCommunityTransitive2OctetAsTypeRouteTarget from protobuf object *otg.BgpExtendedCommunityTransitive2OctetAsTypeRouteTarget + Msg() *otg.PatternFlowRSVPPathSenderTspecIntServParameterIdTokenBucketTspecCounter + // SetMsg unmarshals PatternFlowRSVPPathSenderTspecIntServParameterIdTokenBucketTspecCounter from protobuf object *otg.PatternFlowRSVPPathSenderTspecIntServParameterIdTokenBucketTspecCounter // and doesn't set defaults - SetMsg(*otg.BgpExtendedCommunityTransitive2OctetAsTypeRouteTarget) BgpExtendedCommunityTransitive2OctetAsTypeRouteTarget - // ToProto marshals BgpExtendedCommunityTransitive2OctetAsTypeRouteTarget to protobuf object *otg.BgpExtendedCommunityTransitive2OctetAsTypeRouteTarget - ToProto() (*otg.BgpExtendedCommunityTransitive2OctetAsTypeRouteTarget, error) - // ToPbText marshals BgpExtendedCommunityTransitive2OctetAsTypeRouteTarget to protobuf text + SetMsg(*otg.PatternFlowRSVPPathSenderTspecIntServParameterIdTokenBucketTspecCounter) PatternFlowRSVPPathSenderTspecIntServParameterIdTokenBucketTspecCounter + // ToProto marshals PatternFlowRSVPPathSenderTspecIntServParameterIdTokenBucketTspecCounter to protobuf object *otg.PatternFlowRSVPPathSenderTspecIntServParameterIdTokenBucketTspecCounter + ToProto() (*otg.PatternFlowRSVPPathSenderTspecIntServParameterIdTokenBucketTspecCounter, error) + // ToPbText marshals PatternFlowRSVPPathSenderTspecIntServParameterIdTokenBucketTspecCounter to protobuf text ToPbText() (string, error) - // ToYaml marshals BgpExtendedCommunityTransitive2OctetAsTypeRouteTarget to YAML text + // ToYaml marshals PatternFlowRSVPPathSenderTspecIntServParameterIdTokenBucketTspecCounter to YAML text ToYaml() (string, error) - // ToJson marshals BgpExtendedCommunityTransitive2OctetAsTypeRouteTarget to JSON text + // ToJson marshals PatternFlowRSVPPathSenderTspecIntServParameterIdTokenBucketTspecCounter to JSON text ToJson() (string, error) - // FromProto unmarshals BgpExtendedCommunityTransitive2OctetAsTypeRouteTarget from protobuf object *otg.BgpExtendedCommunityTransitive2OctetAsTypeRouteTarget - FromProto(msg *otg.BgpExtendedCommunityTransitive2OctetAsTypeRouteTarget) (BgpExtendedCommunityTransitive2OctetAsTypeRouteTarget, error) - // FromPbText unmarshals BgpExtendedCommunityTransitive2OctetAsTypeRouteTarget from protobuf text + // FromProto unmarshals PatternFlowRSVPPathSenderTspecIntServParameterIdTokenBucketTspecCounter from protobuf object *otg.PatternFlowRSVPPathSenderTspecIntServParameterIdTokenBucketTspecCounter + FromProto(msg *otg.PatternFlowRSVPPathSenderTspecIntServParameterIdTokenBucketTspecCounter) (PatternFlowRSVPPathSenderTspecIntServParameterIdTokenBucketTspecCounter, error) + // FromPbText unmarshals PatternFlowRSVPPathSenderTspecIntServParameterIdTokenBucketTspecCounter from protobuf text FromPbText(value string) error - // FromYaml unmarshals BgpExtendedCommunityTransitive2OctetAsTypeRouteTarget from YAML text + // FromYaml unmarshals PatternFlowRSVPPathSenderTspecIntServParameterIdTokenBucketTspecCounter from YAML text FromYaml(value string) error - // FromJson unmarshals BgpExtendedCommunityTransitive2OctetAsTypeRouteTarget from JSON text + // FromJson unmarshals PatternFlowRSVPPathSenderTspecIntServParameterIdTokenBucketTspecCounter from JSON text FromJson(value string) error - // Validate validates BgpExtendedCommunityTransitive2OctetAsTypeRouteTarget + // Validate validates PatternFlowRSVPPathSenderTspecIntServParameterIdTokenBucketTspecCounter Validate() error // A stringer function String() string // Clones the object - Clone() (BgpExtendedCommunityTransitive2OctetAsTypeRouteTarget, error) + Clone() (PatternFlowRSVPPathSenderTspecIntServParameterIdTokenBucketTspecCounter, error) validateToAndFrom() error validateObj(vObj *validation, set_default bool) setDefault() - // Global2ByteAs returns uint32, set in BgpExtendedCommunityTransitive2OctetAsTypeRouteTarget. - Global2ByteAs() uint32 - // SetGlobal2ByteAs assigns uint32 provided by user to BgpExtendedCommunityTransitive2OctetAsTypeRouteTarget - SetGlobal2ByteAs(value uint32) BgpExtendedCommunityTransitive2OctetAsTypeRouteTarget - // HasGlobal2ByteAs checks if Global2ByteAs has been set in BgpExtendedCommunityTransitive2OctetAsTypeRouteTarget - HasGlobal2ByteAs() bool - // Local4ByteAdmin returns uint32, set in BgpExtendedCommunityTransitive2OctetAsTypeRouteTarget. - Local4ByteAdmin() uint32 - // SetLocal4ByteAdmin assigns uint32 provided by user to BgpExtendedCommunityTransitive2OctetAsTypeRouteTarget - SetLocal4ByteAdmin(value uint32) BgpExtendedCommunityTransitive2OctetAsTypeRouteTarget - // HasLocal4ByteAdmin checks if Local4ByteAdmin has been set in BgpExtendedCommunityTransitive2OctetAsTypeRouteTarget - HasLocal4ByteAdmin() bool + // Start returns uint32, set in PatternFlowRSVPPathSenderTspecIntServParameterIdTokenBucketTspecCounter. + Start() uint32 + // SetStart assigns uint32 provided by user to PatternFlowRSVPPathSenderTspecIntServParameterIdTokenBucketTspecCounter + SetStart(value uint32) PatternFlowRSVPPathSenderTspecIntServParameterIdTokenBucketTspecCounter + // HasStart checks if Start has been set in PatternFlowRSVPPathSenderTspecIntServParameterIdTokenBucketTspecCounter + HasStart() bool + // Step returns uint32, set in PatternFlowRSVPPathSenderTspecIntServParameterIdTokenBucketTspecCounter. + Step() uint32 + // SetStep assigns uint32 provided by user to PatternFlowRSVPPathSenderTspecIntServParameterIdTokenBucketTspecCounter + SetStep(value uint32) PatternFlowRSVPPathSenderTspecIntServParameterIdTokenBucketTspecCounter + // HasStep checks if Step has been set in PatternFlowRSVPPathSenderTspecIntServParameterIdTokenBucketTspecCounter + HasStep() bool + // Count returns uint32, set in PatternFlowRSVPPathSenderTspecIntServParameterIdTokenBucketTspecCounter. + Count() uint32 + // SetCount assigns uint32 provided by user to PatternFlowRSVPPathSenderTspecIntServParameterIdTokenBucketTspecCounter + SetCount(value uint32) PatternFlowRSVPPathSenderTspecIntServParameterIdTokenBucketTspecCounter + // HasCount checks if Count has been set in PatternFlowRSVPPathSenderTspecIntServParameterIdTokenBucketTspecCounter + HasCount() bool } -// The two octet IANA assigned AS value assigned to the Autonomous System. -// Global2ByteAs returns a uint32 -func (obj *bgpExtendedCommunityTransitive2OctetAsTypeRouteTarget) Global2ByteAs() uint32 { +// description is TBD +// Start returns a uint32 +func (obj *patternFlowRSVPPathSenderTspecIntServParameterIdTokenBucketTspecCounter) Start() uint32 { - return *obj.obj.Global_2ByteAs + return *obj.obj.Start } -// The two octet IANA assigned AS value assigned to the Autonomous System. -// Global2ByteAs returns a uint32 -func (obj *bgpExtendedCommunityTransitive2OctetAsTypeRouteTarget) HasGlobal2ByteAs() bool { - return obj.obj.Global_2ByteAs != nil +// description is TBD +// Start returns a uint32 +func (obj *patternFlowRSVPPathSenderTspecIntServParameterIdTokenBucketTspecCounter) HasStart() bool { + return obj.obj.Start != nil } -// The two octet IANA assigned AS value assigned to the Autonomous System. -// SetGlobal2ByteAs sets the uint32 value in the BgpExtendedCommunityTransitive2OctetAsTypeRouteTarget object -func (obj *bgpExtendedCommunityTransitive2OctetAsTypeRouteTarget) SetGlobal2ByteAs(value uint32) BgpExtendedCommunityTransitive2OctetAsTypeRouteTarget { +// description is TBD +// SetStart sets the uint32 value in the PatternFlowRSVPPathSenderTspecIntServParameterIdTokenBucketTspecCounter object +func (obj *patternFlowRSVPPathSenderTspecIntServParameterIdTokenBucketTspecCounter) SetStart(value uint32) PatternFlowRSVPPathSenderTspecIntServParameterIdTokenBucketTspecCounter { - obj.obj.Global_2ByteAs = &value + obj.obj.Start = &value return obj } -// The Local Administrator sub-field contains a number from a numbering space that is administered by the organization to which the Autonomous System number carried in the Global Administrator sub-field has been assigned by an appropriate authority. -// Local4ByteAdmin returns a uint32 -func (obj *bgpExtendedCommunityTransitive2OctetAsTypeRouteTarget) Local4ByteAdmin() uint32 { +// description is TBD +// Step returns a uint32 +func (obj *patternFlowRSVPPathSenderTspecIntServParameterIdTokenBucketTspecCounter) Step() uint32 { - return *obj.obj.Local_4ByteAdmin + return *obj.obj.Step } -// The Local Administrator sub-field contains a number from a numbering space that is administered by the organization to which the Autonomous System number carried in the Global Administrator sub-field has been assigned by an appropriate authority. -// Local4ByteAdmin returns a uint32 -func (obj *bgpExtendedCommunityTransitive2OctetAsTypeRouteTarget) HasLocal4ByteAdmin() bool { - return obj.obj.Local_4ByteAdmin != nil +// description is TBD +// Step returns a uint32 +func (obj *patternFlowRSVPPathSenderTspecIntServParameterIdTokenBucketTspecCounter) HasStep() bool { + return obj.obj.Step != nil } -// The Local Administrator sub-field contains a number from a numbering space that is administered by the organization to which the Autonomous System number carried in the Global Administrator sub-field has been assigned by an appropriate authority. -// SetLocal4ByteAdmin sets the uint32 value in the BgpExtendedCommunityTransitive2OctetAsTypeRouteTarget object -func (obj *bgpExtendedCommunityTransitive2OctetAsTypeRouteTarget) SetLocal4ByteAdmin(value uint32) BgpExtendedCommunityTransitive2OctetAsTypeRouteTarget { +// description is TBD +// SetStep sets the uint32 value in the PatternFlowRSVPPathSenderTspecIntServParameterIdTokenBucketTspecCounter object +func (obj *patternFlowRSVPPathSenderTspecIntServParameterIdTokenBucketTspecCounter) SetStep(value uint32) PatternFlowRSVPPathSenderTspecIntServParameterIdTokenBucketTspecCounter { - obj.obj.Local_4ByteAdmin = &value + obj.obj.Step = &value return obj } -func (obj *bgpExtendedCommunityTransitive2OctetAsTypeRouteTarget) validateObj(vObj *validation, set_default bool) { +// description is TBD +// Count returns a uint32 +func (obj *patternFlowRSVPPathSenderTspecIntServParameterIdTokenBucketTspecCounter) Count() uint32 { + + return *obj.obj.Count + +} + +// description is TBD +// Count returns a uint32 +func (obj *patternFlowRSVPPathSenderTspecIntServParameterIdTokenBucketTspecCounter) HasCount() bool { + return obj.obj.Count != nil +} + +// description is TBD +// SetCount sets the uint32 value in the PatternFlowRSVPPathSenderTspecIntServParameterIdTokenBucketTspecCounter object +func (obj *patternFlowRSVPPathSenderTspecIntServParameterIdTokenBucketTspecCounter) SetCount(value uint32) PatternFlowRSVPPathSenderTspecIntServParameterIdTokenBucketTspecCounter { + + obj.obj.Count = &value + return obj +} + +func (obj *patternFlowRSVPPathSenderTspecIntServParameterIdTokenBucketTspecCounter) validateObj(vObj *validation, set_default bool) { if set_default { obj.setDefault() } - if obj.obj.Global_2ByteAs != nil { + if obj.obj.Start != nil { - if *obj.obj.Global_2ByteAs > 65535 { + if *obj.obj.Start > 255 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("0 <= BgpExtendedCommunityTransitive2OctetAsTypeRouteTarget.Global_2ByteAs <= 65535 but Got %d", *obj.obj.Global_2ByteAs)) + fmt.Sprintf("0 <= PatternFlowRSVPPathSenderTspecIntServParameterIdTokenBucketTspecCounter.Start <= 255 but Got %d", *obj.obj.Start)) + } + + } + + if obj.obj.Step != nil { + + if *obj.obj.Step > 255 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("0 <= PatternFlowRSVPPathSenderTspecIntServParameterIdTokenBucketTspecCounter.Step <= 255 but Got %d", *obj.obj.Step)) + } + + } + + if obj.obj.Count != nil { + + if *obj.obj.Count > 255 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("0 <= PatternFlowRSVPPathSenderTspecIntServParameterIdTokenBucketTspecCounter.Count <= 255 but Got %d", *obj.obj.Count)) } } } -func (obj *bgpExtendedCommunityTransitive2OctetAsTypeRouteTarget) setDefault() { - if obj.obj.Global_2ByteAs == nil { - obj.SetGlobal2ByteAs(100) +func (obj *patternFlowRSVPPathSenderTspecIntServParameterIdTokenBucketTspecCounter) setDefault() { + if obj.obj.Start == nil { + obj.SetStart(127) } - if obj.obj.Local_4ByteAdmin == nil { - obj.SetLocal4ByteAdmin(1) + if obj.obj.Step == nil { + obj.SetStep(1) + } + if obj.obj.Count == nil { + obj.SetCount(1) } } -// ***** BgpExtendedCommunityTransitive2OctetAsTypeRouteOrigin ***** -type bgpExtendedCommunityTransitive2OctetAsTypeRouteOrigin struct { +// ***** PatternFlowRSVPPathSenderTspecIntServParameter127FlagCounter ***** +type patternFlowRSVPPathSenderTspecIntServParameter127FlagCounter struct { validation - obj *otg.BgpExtendedCommunityTransitive2OctetAsTypeRouteOrigin + obj *otg.PatternFlowRSVPPathSenderTspecIntServParameter127FlagCounter } -func NewBgpExtendedCommunityTransitive2OctetAsTypeRouteOrigin() BgpExtendedCommunityTransitive2OctetAsTypeRouteOrigin { - obj := bgpExtendedCommunityTransitive2OctetAsTypeRouteOrigin{obj: &otg.BgpExtendedCommunityTransitive2OctetAsTypeRouteOrigin{}} +func NewPatternFlowRSVPPathSenderTspecIntServParameter127FlagCounter() PatternFlowRSVPPathSenderTspecIntServParameter127FlagCounter { + obj := patternFlowRSVPPathSenderTspecIntServParameter127FlagCounter{obj: &otg.PatternFlowRSVPPathSenderTspecIntServParameter127FlagCounter{}} obj.setDefault() return &obj } -func (obj *bgpExtendedCommunityTransitive2OctetAsTypeRouteOrigin) Msg() *otg.BgpExtendedCommunityTransitive2OctetAsTypeRouteOrigin { +func (obj *patternFlowRSVPPathSenderTspecIntServParameter127FlagCounter) Msg() *otg.PatternFlowRSVPPathSenderTspecIntServParameter127FlagCounter { return obj.obj } -func (obj *bgpExtendedCommunityTransitive2OctetAsTypeRouteOrigin) SetMsg(msg *otg.BgpExtendedCommunityTransitive2OctetAsTypeRouteOrigin) BgpExtendedCommunityTransitive2OctetAsTypeRouteOrigin { +func (obj *patternFlowRSVPPathSenderTspecIntServParameter127FlagCounter) SetMsg(msg *otg.PatternFlowRSVPPathSenderTspecIntServParameter127FlagCounter) PatternFlowRSVPPathSenderTspecIntServParameter127FlagCounter { proto.Merge(obj.obj, msg) return obj } -func (obj *bgpExtendedCommunityTransitive2OctetAsTypeRouteOrigin) ToProto() (*otg.BgpExtendedCommunityTransitive2OctetAsTypeRouteOrigin, error) { +func (obj *patternFlowRSVPPathSenderTspecIntServParameter127FlagCounter) ToProto() (*otg.PatternFlowRSVPPathSenderTspecIntServParameter127FlagCounter, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -312536,7 +359749,7 @@ func (obj *bgpExtendedCommunityTransitive2OctetAsTypeRouteOrigin) ToProto() (*ot return obj.Msg(), nil } -func (obj *bgpExtendedCommunityTransitive2OctetAsTypeRouteOrigin) FromProto(msg *otg.BgpExtendedCommunityTransitive2OctetAsTypeRouteOrigin) (BgpExtendedCommunityTransitive2OctetAsTypeRouteOrigin, error) { +func (obj *patternFlowRSVPPathSenderTspecIntServParameter127FlagCounter) FromProto(msg *otg.PatternFlowRSVPPathSenderTspecIntServParameter127FlagCounter) (PatternFlowRSVPPathSenderTspecIntServParameter127FlagCounter, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -312545,7 +359758,7 @@ func (obj *bgpExtendedCommunityTransitive2OctetAsTypeRouteOrigin) FromProto(msg return newObj, nil } -func (obj *bgpExtendedCommunityTransitive2OctetAsTypeRouteOrigin) ToPbText() (string, error) { +func (obj *patternFlowRSVPPathSenderTspecIntServParameter127FlagCounter) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -312557,7 +359770,7 @@ func (obj *bgpExtendedCommunityTransitive2OctetAsTypeRouteOrigin) ToPbText() (st return string(protoMarshal), nil } -func (obj *bgpExtendedCommunityTransitive2OctetAsTypeRouteOrigin) FromPbText(value string) error { +func (obj *patternFlowRSVPPathSenderTspecIntServParameter127FlagCounter) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj @@ -312570,7 +359783,7 @@ func (obj *bgpExtendedCommunityTransitive2OctetAsTypeRouteOrigin) FromPbText(val return retObj } -func (obj *bgpExtendedCommunityTransitive2OctetAsTypeRouteOrigin) ToYaml() (string, error) { +func (obj *patternFlowRSVPPathSenderTspecIntServParameter127FlagCounter) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -312591,7 +359804,7 @@ func (obj *bgpExtendedCommunityTransitive2OctetAsTypeRouteOrigin) ToYaml() (stri return string(data), nil } -func (obj *bgpExtendedCommunityTransitive2OctetAsTypeRouteOrigin) FromYaml(value string) error { +func (obj *patternFlowRSVPPathSenderTspecIntServParameter127FlagCounter) FromYaml(value string) error { if value == "" { value = "{}" } @@ -312616,7 +359829,7 @@ func (obj *bgpExtendedCommunityTransitive2OctetAsTypeRouteOrigin) FromYaml(value return nil } -func (obj *bgpExtendedCommunityTransitive2OctetAsTypeRouteOrigin) ToJson() (string, error) { +func (obj *patternFlowRSVPPathSenderTspecIntServParameter127FlagCounter) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -312634,7 +359847,7 @@ func (obj *bgpExtendedCommunityTransitive2OctetAsTypeRouteOrigin) ToJson() (stri return string(data), nil } -func (obj *bgpExtendedCommunityTransitive2OctetAsTypeRouteOrigin) FromJson(value string) error { +func (obj *patternFlowRSVPPathSenderTspecIntServParameter127FlagCounter) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -312655,19 +359868,19 @@ func (obj *bgpExtendedCommunityTransitive2OctetAsTypeRouteOrigin) FromJson(value return nil } -func (obj *bgpExtendedCommunityTransitive2OctetAsTypeRouteOrigin) validateToAndFrom() error { +func (obj *patternFlowRSVPPathSenderTspecIntServParameter127FlagCounter) validateToAndFrom() error { // emptyVars() obj.validateObj(&obj.validation, true) return obj.validationResult() } -func (obj *bgpExtendedCommunityTransitive2OctetAsTypeRouteOrigin) Validate() error { +func (obj *patternFlowRSVPPathSenderTspecIntServParameter127FlagCounter) Validate() error { // emptyVars() obj.validateObj(&obj.validation, false) return obj.validationResult() } -func (obj *bgpExtendedCommunityTransitive2OctetAsTypeRouteOrigin) String() string { +func (obj *patternFlowRSVPPathSenderTspecIntServParameter127FlagCounter) String() string { str, err := obj.ToYaml() if err != nil { return err.Error() @@ -312675,12 +359888,12 @@ func (obj *bgpExtendedCommunityTransitive2OctetAsTypeRouteOrigin) String() strin return str } -func (obj *bgpExtendedCommunityTransitive2OctetAsTypeRouteOrigin) Clone() (BgpExtendedCommunityTransitive2OctetAsTypeRouteOrigin, error) { +func (obj *patternFlowRSVPPathSenderTspecIntServParameter127FlagCounter) Clone() (PatternFlowRSVPPathSenderTspecIntServParameter127FlagCounter, error) { vErr := obj.Validate() if vErr != nil { return nil, vErr } - newObj := NewBgpExtendedCommunityTransitive2OctetAsTypeRouteOrigin() + newObj := NewPatternFlowRSVPPathSenderTspecIntServParameter127FlagCounter() data, err := proto.Marshal(obj.Msg()) if err != nil { return nil, err @@ -312692,148 +359905,199 @@ func (obj *bgpExtendedCommunityTransitive2OctetAsTypeRouteOrigin) Clone() (BgpEx return newObj, nil } -// BgpExtendedCommunityTransitive2OctetAsTypeRouteOrigin is the Route Origin Community identifies one or more routers that inject a set of routes (that carry this Community) into BGP. It is sent with sub-type as 0x03 . -type BgpExtendedCommunityTransitive2OctetAsTypeRouteOrigin interface { +// PatternFlowRSVPPathSenderTspecIntServParameter127FlagCounter is integer counter pattern +type PatternFlowRSVPPathSenderTspecIntServParameter127FlagCounter interface { Validation - // Msg marshals BgpExtendedCommunityTransitive2OctetAsTypeRouteOrigin to protobuf object *otg.BgpExtendedCommunityTransitive2OctetAsTypeRouteOrigin + // Msg marshals PatternFlowRSVPPathSenderTspecIntServParameter127FlagCounter to protobuf object *otg.PatternFlowRSVPPathSenderTspecIntServParameter127FlagCounter // and doesn't set defaults - Msg() *otg.BgpExtendedCommunityTransitive2OctetAsTypeRouteOrigin - // SetMsg unmarshals BgpExtendedCommunityTransitive2OctetAsTypeRouteOrigin from protobuf object *otg.BgpExtendedCommunityTransitive2OctetAsTypeRouteOrigin + Msg() *otg.PatternFlowRSVPPathSenderTspecIntServParameter127FlagCounter + // SetMsg unmarshals PatternFlowRSVPPathSenderTspecIntServParameter127FlagCounter from protobuf object *otg.PatternFlowRSVPPathSenderTspecIntServParameter127FlagCounter // and doesn't set defaults - SetMsg(*otg.BgpExtendedCommunityTransitive2OctetAsTypeRouteOrigin) BgpExtendedCommunityTransitive2OctetAsTypeRouteOrigin - // ToProto marshals BgpExtendedCommunityTransitive2OctetAsTypeRouteOrigin to protobuf object *otg.BgpExtendedCommunityTransitive2OctetAsTypeRouteOrigin - ToProto() (*otg.BgpExtendedCommunityTransitive2OctetAsTypeRouteOrigin, error) - // ToPbText marshals BgpExtendedCommunityTransitive2OctetAsTypeRouteOrigin to protobuf text + SetMsg(*otg.PatternFlowRSVPPathSenderTspecIntServParameter127FlagCounter) PatternFlowRSVPPathSenderTspecIntServParameter127FlagCounter + // ToProto marshals PatternFlowRSVPPathSenderTspecIntServParameter127FlagCounter to protobuf object *otg.PatternFlowRSVPPathSenderTspecIntServParameter127FlagCounter + ToProto() (*otg.PatternFlowRSVPPathSenderTspecIntServParameter127FlagCounter, error) + // ToPbText marshals PatternFlowRSVPPathSenderTspecIntServParameter127FlagCounter to protobuf text ToPbText() (string, error) - // ToYaml marshals BgpExtendedCommunityTransitive2OctetAsTypeRouteOrigin to YAML text + // ToYaml marshals PatternFlowRSVPPathSenderTspecIntServParameter127FlagCounter to YAML text ToYaml() (string, error) - // ToJson marshals BgpExtendedCommunityTransitive2OctetAsTypeRouteOrigin to JSON text + // ToJson marshals PatternFlowRSVPPathSenderTspecIntServParameter127FlagCounter to JSON text ToJson() (string, error) - // FromProto unmarshals BgpExtendedCommunityTransitive2OctetAsTypeRouteOrigin from protobuf object *otg.BgpExtendedCommunityTransitive2OctetAsTypeRouteOrigin - FromProto(msg *otg.BgpExtendedCommunityTransitive2OctetAsTypeRouteOrigin) (BgpExtendedCommunityTransitive2OctetAsTypeRouteOrigin, error) - // FromPbText unmarshals BgpExtendedCommunityTransitive2OctetAsTypeRouteOrigin from protobuf text + // FromProto unmarshals PatternFlowRSVPPathSenderTspecIntServParameter127FlagCounter from protobuf object *otg.PatternFlowRSVPPathSenderTspecIntServParameter127FlagCounter + FromProto(msg *otg.PatternFlowRSVPPathSenderTspecIntServParameter127FlagCounter) (PatternFlowRSVPPathSenderTspecIntServParameter127FlagCounter, error) + // FromPbText unmarshals PatternFlowRSVPPathSenderTspecIntServParameter127FlagCounter from protobuf text FromPbText(value string) error - // FromYaml unmarshals BgpExtendedCommunityTransitive2OctetAsTypeRouteOrigin from YAML text + // FromYaml unmarshals PatternFlowRSVPPathSenderTspecIntServParameter127FlagCounter from YAML text FromYaml(value string) error - // FromJson unmarshals BgpExtendedCommunityTransitive2OctetAsTypeRouteOrigin from JSON text + // FromJson unmarshals PatternFlowRSVPPathSenderTspecIntServParameter127FlagCounter from JSON text FromJson(value string) error - // Validate validates BgpExtendedCommunityTransitive2OctetAsTypeRouteOrigin + // Validate validates PatternFlowRSVPPathSenderTspecIntServParameter127FlagCounter Validate() error // A stringer function String() string // Clones the object - Clone() (BgpExtendedCommunityTransitive2OctetAsTypeRouteOrigin, error) + Clone() (PatternFlowRSVPPathSenderTspecIntServParameter127FlagCounter, error) validateToAndFrom() error validateObj(vObj *validation, set_default bool) setDefault() - // Global2ByteAs returns uint32, set in BgpExtendedCommunityTransitive2OctetAsTypeRouteOrigin. - Global2ByteAs() uint32 - // SetGlobal2ByteAs assigns uint32 provided by user to BgpExtendedCommunityTransitive2OctetAsTypeRouteOrigin - SetGlobal2ByteAs(value uint32) BgpExtendedCommunityTransitive2OctetAsTypeRouteOrigin - // HasGlobal2ByteAs checks if Global2ByteAs has been set in BgpExtendedCommunityTransitive2OctetAsTypeRouteOrigin - HasGlobal2ByteAs() bool - // Local4ByteAdmin returns uint32, set in BgpExtendedCommunityTransitive2OctetAsTypeRouteOrigin. - Local4ByteAdmin() uint32 - // SetLocal4ByteAdmin assigns uint32 provided by user to BgpExtendedCommunityTransitive2OctetAsTypeRouteOrigin - SetLocal4ByteAdmin(value uint32) BgpExtendedCommunityTransitive2OctetAsTypeRouteOrigin - // HasLocal4ByteAdmin checks if Local4ByteAdmin has been set in BgpExtendedCommunityTransitive2OctetAsTypeRouteOrigin - HasLocal4ByteAdmin() bool + // Start returns uint32, set in PatternFlowRSVPPathSenderTspecIntServParameter127FlagCounter. + Start() uint32 + // SetStart assigns uint32 provided by user to PatternFlowRSVPPathSenderTspecIntServParameter127FlagCounter + SetStart(value uint32) PatternFlowRSVPPathSenderTspecIntServParameter127FlagCounter + // HasStart checks if Start has been set in PatternFlowRSVPPathSenderTspecIntServParameter127FlagCounter + HasStart() bool + // Step returns uint32, set in PatternFlowRSVPPathSenderTspecIntServParameter127FlagCounter. + Step() uint32 + // SetStep assigns uint32 provided by user to PatternFlowRSVPPathSenderTspecIntServParameter127FlagCounter + SetStep(value uint32) PatternFlowRSVPPathSenderTspecIntServParameter127FlagCounter + // HasStep checks if Step has been set in PatternFlowRSVPPathSenderTspecIntServParameter127FlagCounter + HasStep() bool + // Count returns uint32, set in PatternFlowRSVPPathSenderTspecIntServParameter127FlagCounter. + Count() uint32 + // SetCount assigns uint32 provided by user to PatternFlowRSVPPathSenderTspecIntServParameter127FlagCounter + SetCount(value uint32) PatternFlowRSVPPathSenderTspecIntServParameter127FlagCounter + // HasCount checks if Count has been set in PatternFlowRSVPPathSenderTspecIntServParameter127FlagCounter + HasCount() bool } -// The two octet IANA assigned AS value assigned to the Autonomous System. -// Global2ByteAs returns a uint32 -func (obj *bgpExtendedCommunityTransitive2OctetAsTypeRouteOrigin) Global2ByteAs() uint32 { +// description is TBD +// Start returns a uint32 +func (obj *patternFlowRSVPPathSenderTspecIntServParameter127FlagCounter) Start() uint32 { - return *obj.obj.Global_2ByteAs + return *obj.obj.Start } -// The two octet IANA assigned AS value assigned to the Autonomous System. -// Global2ByteAs returns a uint32 -func (obj *bgpExtendedCommunityTransitive2OctetAsTypeRouteOrigin) HasGlobal2ByteAs() bool { - return obj.obj.Global_2ByteAs != nil +// description is TBD +// Start returns a uint32 +func (obj *patternFlowRSVPPathSenderTspecIntServParameter127FlagCounter) HasStart() bool { + return obj.obj.Start != nil } -// The two octet IANA assigned AS value assigned to the Autonomous System. -// SetGlobal2ByteAs sets the uint32 value in the BgpExtendedCommunityTransitive2OctetAsTypeRouteOrigin object -func (obj *bgpExtendedCommunityTransitive2OctetAsTypeRouteOrigin) SetGlobal2ByteAs(value uint32) BgpExtendedCommunityTransitive2OctetAsTypeRouteOrigin { +// description is TBD +// SetStart sets the uint32 value in the PatternFlowRSVPPathSenderTspecIntServParameter127FlagCounter object +func (obj *patternFlowRSVPPathSenderTspecIntServParameter127FlagCounter) SetStart(value uint32) PatternFlowRSVPPathSenderTspecIntServParameter127FlagCounter { - obj.obj.Global_2ByteAs = &value + obj.obj.Start = &value return obj } -// The Local Administrator sub-field contains a number from a numbering space that is administered by the organization to which the Autonomous System number carried in the Global Administrator sub-field has been assigned by an appropriate authority. -// Local4ByteAdmin returns a uint32 -func (obj *bgpExtendedCommunityTransitive2OctetAsTypeRouteOrigin) Local4ByteAdmin() uint32 { +// description is TBD +// Step returns a uint32 +func (obj *patternFlowRSVPPathSenderTspecIntServParameter127FlagCounter) Step() uint32 { - return *obj.obj.Local_4ByteAdmin + return *obj.obj.Step } -// The Local Administrator sub-field contains a number from a numbering space that is administered by the organization to which the Autonomous System number carried in the Global Administrator sub-field has been assigned by an appropriate authority. -// Local4ByteAdmin returns a uint32 -func (obj *bgpExtendedCommunityTransitive2OctetAsTypeRouteOrigin) HasLocal4ByteAdmin() bool { - return obj.obj.Local_4ByteAdmin != nil +// description is TBD +// Step returns a uint32 +func (obj *patternFlowRSVPPathSenderTspecIntServParameter127FlagCounter) HasStep() bool { + return obj.obj.Step != nil } -// The Local Administrator sub-field contains a number from a numbering space that is administered by the organization to which the Autonomous System number carried in the Global Administrator sub-field has been assigned by an appropriate authority. -// SetLocal4ByteAdmin sets the uint32 value in the BgpExtendedCommunityTransitive2OctetAsTypeRouteOrigin object -func (obj *bgpExtendedCommunityTransitive2OctetAsTypeRouteOrigin) SetLocal4ByteAdmin(value uint32) BgpExtendedCommunityTransitive2OctetAsTypeRouteOrigin { +// description is TBD +// SetStep sets the uint32 value in the PatternFlowRSVPPathSenderTspecIntServParameter127FlagCounter object +func (obj *patternFlowRSVPPathSenderTspecIntServParameter127FlagCounter) SetStep(value uint32) PatternFlowRSVPPathSenderTspecIntServParameter127FlagCounter { - obj.obj.Local_4ByteAdmin = &value + obj.obj.Step = &value + return obj +} + +// description is TBD +// Count returns a uint32 +func (obj *patternFlowRSVPPathSenderTspecIntServParameter127FlagCounter) Count() uint32 { + + return *obj.obj.Count + +} + +// description is TBD +// Count returns a uint32 +func (obj *patternFlowRSVPPathSenderTspecIntServParameter127FlagCounter) HasCount() bool { + return obj.obj.Count != nil +} + +// description is TBD +// SetCount sets the uint32 value in the PatternFlowRSVPPathSenderTspecIntServParameter127FlagCounter object +func (obj *patternFlowRSVPPathSenderTspecIntServParameter127FlagCounter) SetCount(value uint32) PatternFlowRSVPPathSenderTspecIntServParameter127FlagCounter { + + obj.obj.Count = &value return obj } -func (obj *bgpExtendedCommunityTransitive2OctetAsTypeRouteOrigin) validateObj(vObj *validation, set_default bool) { - if set_default { - obj.setDefault() +func (obj *patternFlowRSVPPathSenderTspecIntServParameter127FlagCounter) validateObj(vObj *validation, set_default bool) { + if set_default { + obj.setDefault() + } + + if obj.obj.Start != nil { + + if *obj.obj.Start > 255 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("0 <= PatternFlowRSVPPathSenderTspecIntServParameter127FlagCounter.Start <= 255 but Got %d", *obj.obj.Start)) + } + + } + + if obj.obj.Step != nil { + + if *obj.obj.Step > 255 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("0 <= PatternFlowRSVPPathSenderTspecIntServParameter127FlagCounter.Step <= 255 but Got %d", *obj.obj.Step)) + } + } - if obj.obj.Global_2ByteAs != nil { + if obj.obj.Count != nil { - if *obj.obj.Global_2ByteAs > 65535 { + if *obj.obj.Count > 255 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("0 <= BgpExtendedCommunityTransitive2OctetAsTypeRouteOrigin.Global_2ByteAs <= 65535 but Got %d", *obj.obj.Global_2ByteAs)) + fmt.Sprintf("0 <= PatternFlowRSVPPathSenderTspecIntServParameter127FlagCounter.Count <= 255 but Got %d", *obj.obj.Count)) } } } -func (obj *bgpExtendedCommunityTransitive2OctetAsTypeRouteOrigin) setDefault() { - if obj.obj.Global_2ByteAs == nil { - obj.SetGlobal2ByteAs(100) +func (obj *patternFlowRSVPPathSenderTspecIntServParameter127FlagCounter) setDefault() { + if obj.obj.Start == nil { + obj.SetStart(0) } - if obj.obj.Local_4ByteAdmin == nil { - obj.SetLocal4ByteAdmin(1) + if obj.obj.Step == nil { + obj.SetStep(1) + } + if obj.obj.Count == nil { + obj.SetCount(1) } } -// ***** BgpExtendedCommunityTransitiveIpv4AddressTypeRouteTarget ***** -type bgpExtendedCommunityTransitiveIpv4AddressTypeRouteTarget struct { +// ***** PatternFlowRSVPPathSenderTspecIntServParameter127LengthCounter ***** +type patternFlowRSVPPathSenderTspecIntServParameter127LengthCounter struct { validation - obj *otg.BgpExtendedCommunityTransitiveIpv4AddressTypeRouteTarget + obj *otg.PatternFlowRSVPPathSenderTspecIntServParameter127LengthCounter } -func NewBgpExtendedCommunityTransitiveIpv4AddressTypeRouteTarget() BgpExtendedCommunityTransitiveIpv4AddressTypeRouteTarget { - obj := bgpExtendedCommunityTransitiveIpv4AddressTypeRouteTarget{obj: &otg.BgpExtendedCommunityTransitiveIpv4AddressTypeRouteTarget{}} +func NewPatternFlowRSVPPathSenderTspecIntServParameter127LengthCounter() PatternFlowRSVPPathSenderTspecIntServParameter127LengthCounter { + obj := patternFlowRSVPPathSenderTspecIntServParameter127LengthCounter{obj: &otg.PatternFlowRSVPPathSenderTspecIntServParameter127LengthCounter{}} obj.setDefault() return &obj } -func (obj *bgpExtendedCommunityTransitiveIpv4AddressTypeRouteTarget) Msg() *otg.BgpExtendedCommunityTransitiveIpv4AddressTypeRouteTarget { +func (obj *patternFlowRSVPPathSenderTspecIntServParameter127LengthCounter) Msg() *otg.PatternFlowRSVPPathSenderTspecIntServParameter127LengthCounter { return obj.obj } -func (obj *bgpExtendedCommunityTransitiveIpv4AddressTypeRouteTarget) SetMsg(msg *otg.BgpExtendedCommunityTransitiveIpv4AddressTypeRouteTarget) BgpExtendedCommunityTransitiveIpv4AddressTypeRouteTarget { +func (obj *patternFlowRSVPPathSenderTspecIntServParameter127LengthCounter) SetMsg(msg *otg.PatternFlowRSVPPathSenderTspecIntServParameter127LengthCounter) PatternFlowRSVPPathSenderTspecIntServParameter127LengthCounter { proto.Merge(obj.obj, msg) return obj } -func (obj *bgpExtendedCommunityTransitiveIpv4AddressTypeRouteTarget) ToProto() (*otg.BgpExtendedCommunityTransitiveIpv4AddressTypeRouteTarget, error) { +func (obj *patternFlowRSVPPathSenderTspecIntServParameter127LengthCounter) ToProto() (*otg.PatternFlowRSVPPathSenderTspecIntServParameter127LengthCounter, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -312841,7 +360105,7 @@ func (obj *bgpExtendedCommunityTransitiveIpv4AddressTypeRouteTarget) ToProto() ( return obj.Msg(), nil } -func (obj *bgpExtendedCommunityTransitiveIpv4AddressTypeRouteTarget) FromProto(msg *otg.BgpExtendedCommunityTransitiveIpv4AddressTypeRouteTarget) (BgpExtendedCommunityTransitiveIpv4AddressTypeRouteTarget, error) { +func (obj *patternFlowRSVPPathSenderTspecIntServParameter127LengthCounter) FromProto(msg *otg.PatternFlowRSVPPathSenderTspecIntServParameter127LengthCounter) (PatternFlowRSVPPathSenderTspecIntServParameter127LengthCounter, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -312850,7 +360114,7 @@ func (obj *bgpExtendedCommunityTransitiveIpv4AddressTypeRouteTarget) FromProto(m return newObj, nil } -func (obj *bgpExtendedCommunityTransitiveIpv4AddressTypeRouteTarget) ToPbText() (string, error) { +func (obj *patternFlowRSVPPathSenderTspecIntServParameter127LengthCounter) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -312862,7 +360126,7 @@ func (obj *bgpExtendedCommunityTransitiveIpv4AddressTypeRouteTarget) ToPbText() return string(protoMarshal), nil } -func (obj *bgpExtendedCommunityTransitiveIpv4AddressTypeRouteTarget) FromPbText(value string) error { +func (obj *patternFlowRSVPPathSenderTspecIntServParameter127LengthCounter) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj @@ -312875,7 +360139,7 @@ func (obj *bgpExtendedCommunityTransitiveIpv4AddressTypeRouteTarget) FromPbText( return retObj } -func (obj *bgpExtendedCommunityTransitiveIpv4AddressTypeRouteTarget) ToYaml() (string, error) { +func (obj *patternFlowRSVPPathSenderTspecIntServParameter127LengthCounter) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -312896,7 +360160,7 @@ func (obj *bgpExtendedCommunityTransitiveIpv4AddressTypeRouteTarget) ToYaml() (s return string(data), nil } -func (obj *bgpExtendedCommunityTransitiveIpv4AddressTypeRouteTarget) FromYaml(value string) error { +func (obj *patternFlowRSVPPathSenderTspecIntServParameter127LengthCounter) FromYaml(value string) error { if value == "" { value = "{}" } @@ -312921,7 +360185,7 @@ func (obj *bgpExtendedCommunityTransitiveIpv4AddressTypeRouteTarget) FromYaml(va return nil } -func (obj *bgpExtendedCommunityTransitiveIpv4AddressTypeRouteTarget) ToJson() (string, error) { +func (obj *patternFlowRSVPPathSenderTspecIntServParameter127LengthCounter) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -312939,7 +360203,7 @@ func (obj *bgpExtendedCommunityTransitiveIpv4AddressTypeRouteTarget) ToJson() (s return string(data), nil } -func (obj *bgpExtendedCommunityTransitiveIpv4AddressTypeRouteTarget) FromJson(value string) error { +func (obj *patternFlowRSVPPathSenderTspecIntServParameter127LengthCounter) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -312960,19 +360224,19 @@ func (obj *bgpExtendedCommunityTransitiveIpv4AddressTypeRouteTarget) FromJson(va return nil } -func (obj *bgpExtendedCommunityTransitiveIpv4AddressTypeRouteTarget) validateToAndFrom() error { +func (obj *patternFlowRSVPPathSenderTspecIntServParameter127LengthCounter) validateToAndFrom() error { // emptyVars() obj.validateObj(&obj.validation, true) return obj.validationResult() } -func (obj *bgpExtendedCommunityTransitiveIpv4AddressTypeRouteTarget) Validate() error { +func (obj *patternFlowRSVPPathSenderTspecIntServParameter127LengthCounter) Validate() error { // emptyVars() obj.validateObj(&obj.validation, false) return obj.validationResult() } -func (obj *bgpExtendedCommunityTransitiveIpv4AddressTypeRouteTarget) String() string { +func (obj *patternFlowRSVPPathSenderTspecIntServParameter127LengthCounter) String() string { str, err := obj.ToYaml() if err != nil { return err.Error() @@ -312980,12 +360244,12 @@ func (obj *bgpExtendedCommunityTransitiveIpv4AddressTypeRouteTarget) String() st return str } -func (obj *bgpExtendedCommunityTransitiveIpv4AddressTypeRouteTarget) Clone() (BgpExtendedCommunityTransitiveIpv4AddressTypeRouteTarget, error) { +func (obj *patternFlowRSVPPathSenderTspecIntServParameter127LengthCounter) Clone() (PatternFlowRSVPPathSenderTspecIntServParameter127LengthCounter, error) { vErr := obj.Validate() if vErr != nil { return nil, vErr } - newObj := NewBgpExtendedCommunityTransitiveIpv4AddressTypeRouteTarget() + newObj := NewPatternFlowRSVPPathSenderTspecIntServParameter127LengthCounter() data, err := proto.Marshal(obj.Msg()) if err != nil { return nil, err @@ -312997,157 +360261,199 @@ func (obj *bgpExtendedCommunityTransitiveIpv4AddressTypeRouteTarget) Clone() (Bg return newObj, nil } -// BgpExtendedCommunityTransitiveIpv4AddressTypeRouteTarget is the Route Target Community identifies one or more routers that may receive a set of routes (that carry this Community) carried by BGP. It is sent with sub-type as 0x02. -type BgpExtendedCommunityTransitiveIpv4AddressTypeRouteTarget interface { +// PatternFlowRSVPPathSenderTspecIntServParameter127LengthCounter is integer counter pattern +type PatternFlowRSVPPathSenderTspecIntServParameter127LengthCounter interface { Validation - // Msg marshals BgpExtendedCommunityTransitiveIpv4AddressTypeRouteTarget to protobuf object *otg.BgpExtendedCommunityTransitiveIpv4AddressTypeRouteTarget + // Msg marshals PatternFlowRSVPPathSenderTspecIntServParameter127LengthCounter to protobuf object *otg.PatternFlowRSVPPathSenderTspecIntServParameter127LengthCounter // and doesn't set defaults - Msg() *otg.BgpExtendedCommunityTransitiveIpv4AddressTypeRouteTarget - // SetMsg unmarshals BgpExtendedCommunityTransitiveIpv4AddressTypeRouteTarget from protobuf object *otg.BgpExtendedCommunityTransitiveIpv4AddressTypeRouteTarget + Msg() *otg.PatternFlowRSVPPathSenderTspecIntServParameter127LengthCounter + // SetMsg unmarshals PatternFlowRSVPPathSenderTspecIntServParameter127LengthCounter from protobuf object *otg.PatternFlowRSVPPathSenderTspecIntServParameter127LengthCounter // and doesn't set defaults - SetMsg(*otg.BgpExtendedCommunityTransitiveIpv4AddressTypeRouteTarget) BgpExtendedCommunityTransitiveIpv4AddressTypeRouteTarget - // ToProto marshals BgpExtendedCommunityTransitiveIpv4AddressTypeRouteTarget to protobuf object *otg.BgpExtendedCommunityTransitiveIpv4AddressTypeRouteTarget - ToProto() (*otg.BgpExtendedCommunityTransitiveIpv4AddressTypeRouteTarget, error) - // ToPbText marshals BgpExtendedCommunityTransitiveIpv4AddressTypeRouteTarget to protobuf text + SetMsg(*otg.PatternFlowRSVPPathSenderTspecIntServParameter127LengthCounter) PatternFlowRSVPPathSenderTspecIntServParameter127LengthCounter + // ToProto marshals PatternFlowRSVPPathSenderTspecIntServParameter127LengthCounter to protobuf object *otg.PatternFlowRSVPPathSenderTspecIntServParameter127LengthCounter + ToProto() (*otg.PatternFlowRSVPPathSenderTspecIntServParameter127LengthCounter, error) + // ToPbText marshals PatternFlowRSVPPathSenderTspecIntServParameter127LengthCounter to protobuf text ToPbText() (string, error) - // ToYaml marshals BgpExtendedCommunityTransitiveIpv4AddressTypeRouteTarget to YAML text + // ToYaml marshals PatternFlowRSVPPathSenderTspecIntServParameter127LengthCounter to YAML text ToYaml() (string, error) - // ToJson marshals BgpExtendedCommunityTransitiveIpv4AddressTypeRouteTarget to JSON text + // ToJson marshals PatternFlowRSVPPathSenderTspecIntServParameter127LengthCounter to JSON text ToJson() (string, error) - // FromProto unmarshals BgpExtendedCommunityTransitiveIpv4AddressTypeRouteTarget from protobuf object *otg.BgpExtendedCommunityTransitiveIpv4AddressTypeRouteTarget - FromProto(msg *otg.BgpExtendedCommunityTransitiveIpv4AddressTypeRouteTarget) (BgpExtendedCommunityTransitiveIpv4AddressTypeRouteTarget, error) - // FromPbText unmarshals BgpExtendedCommunityTransitiveIpv4AddressTypeRouteTarget from protobuf text + // FromProto unmarshals PatternFlowRSVPPathSenderTspecIntServParameter127LengthCounter from protobuf object *otg.PatternFlowRSVPPathSenderTspecIntServParameter127LengthCounter + FromProto(msg *otg.PatternFlowRSVPPathSenderTspecIntServParameter127LengthCounter) (PatternFlowRSVPPathSenderTspecIntServParameter127LengthCounter, error) + // FromPbText unmarshals PatternFlowRSVPPathSenderTspecIntServParameter127LengthCounter from protobuf text FromPbText(value string) error - // FromYaml unmarshals BgpExtendedCommunityTransitiveIpv4AddressTypeRouteTarget from YAML text + // FromYaml unmarshals PatternFlowRSVPPathSenderTspecIntServParameter127LengthCounter from YAML text FromYaml(value string) error - // FromJson unmarshals BgpExtendedCommunityTransitiveIpv4AddressTypeRouteTarget from JSON text + // FromJson unmarshals PatternFlowRSVPPathSenderTspecIntServParameter127LengthCounter from JSON text FromJson(value string) error - // Validate validates BgpExtendedCommunityTransitiveIpv4AddressTypeRouteTarget + // Validate validates PatternFlowRSVPPathSenderTspecIntServParameter127LengthCounter Validate() error // A stringer function String() string // Clones the object - Clone() (BgpExtendedCommunityTransitiveIpv4AddressTypeRouteTarget, error) + Clone() (PatternFlowRSVPPathSenderTspecIntServParameter127LengthCounter, error) validateToAndFrom() error validateObj(vObj *validation, set_default bool) setDefault() - // GlobalIpv4Admin returns string, set in BgpExtendedCommunityTransitiveIpv4AddressTypeRouteTarget. - GlobalIpv4Admin() string - // SetGlobalIpv4Admin assigns string provided by user to BgpExtendedCommunityTransitiveIpv4AddressTypeRouteTarget - SetGlobalIpv4Admin(value string) BgpExtendedCommunityTransitiveIpv4AddressTypeRouteTarget - // HasGlobalIpv4Admin checks if GlobalIpv4Admin has been set in BgpExtendedCommunityTransitiveIpv4AddressTypeRouteTarget - HasGlobalIpv4Admin() bool - // Local2ByteAdmin returns uint32, set in BgpExtendedCommunityTransitiveIpv4AddressTypeRouteTarget. - Local2ByteAdmin() uint32 - // SetLocal2ByteAdmin assigns uint32 provided by user to BgpExtendedCommunityTransitiveIpv4AddressTypeRouteTarget - SetLocal2ByteAdmin(value uint32) BgpExtendedCommunityTransitiveIpv4AddressTypeRouteTarget - // HasLocal2ByteAdmin checks if Local2ByteAdmin has been set in BgpExtendedCommunityTransitiveIpv4AddressTypeRouteTarget - HasLocal2ByteAdmin() bool + // Start returns uint32, set in PatternFlowRSVPPathSenderTspecIntServParameter127LengthCounter. + Start() uint32 + // SetStart assigns uint32 provided by user to PatternFlowRSVPPathSenderTspecIntServParameter127LengthCounter + SetStart(value uint32) PatternFlowRSVPPathSenderTspecIntServParameter127LengthCounter + // HasStart checks if Start has been set in PatternFlowRSVPPathSenderTspecIntServParameter127LengthCounter + HasStart() bool + // Step returns uint32, set in PatternFlowRSVPPathSenderTspecIntServParameter127LengthCounter. + Step() uint32 + // SetStep assigns uint32 provided by user to PatternFlowRSVPPathSenderTspecIntServParameter127LengthCounter + SetStep(value uint32) PatternFlowRSVPPathSenderTspecIntServParameter127LengthCounter + // HasStep checks if Step has been set in PatternFlowRSVPPathSenderTspecIntServParameter127LengthCounter + HasStep() bool + // Count returns uint32, set in PatternFlowRSVPPathSenderTspecIntServParameter127LengthCounter. + Count() uint32 + // SetCount assigns uint32 provided by user to PatternFlowRSVPPathSenderTspecIntServParameter127LengthCounter + SetCount(value uint32) PatternFlowRSVPPathSenderTspecIntServParameter127LengthCounter + // HasCount checks if Count has been set in PatternFlowRSVPPathSenderTspecIntServParameter127LengthCounter + HasCount() bool } -// An IPv4 unicast address assigned by one of the Internet registries. -// GlobalIpv4Admin returns a string -func (obj *bgpExtendedCommunityTransitiveIpv4AddressTypeRouteTarget) GlobalIpv4Admin() string { +// description is TBD +// Start returns a uint32 +func (obj *patternFlowRSVPPathSenderTspecIntServParameter127LengthCounter) Start() uint32 { - return *obj.obj.GlobalIpv4Admin + return *obj.obj.Start } -// An IPv4 unicast address assigned by one of the Internet registries. -// GlobalIpv4Admin returns a string -func (obj *bgpExtendedCommunityTransitiveIpv4AddressTypeRouteTarget) HasGlobalIpv4Admin() bool { - return obj.obj.GlobalIpv4Admin != nil +// description is TBD +// Start returns a uint32 +func (obj *patternFlowRSVPPathSenderTspecIntServParameter127LengthCounter) HasStart() bool { + return obj.obj.Start != nil } -// An IPv4 unicast address assigned by one of the Internet registries. -// SetGlobalIpv4Admin sets the string value in the BgpExtendedCommunityTransitiveIpv4AddressTypeRouteTarget object -func (obj *bgpExtendedCommunityTransitiveIpv4AddressTypeRouteTarget) SetGlobalIpv4Admin(value string) BgpExtendedCommunityTransitiveIpv4AddressTypeRouteTarget { +// description is TBD +// SetStart sets the uint32 value in the PatternFlowRSVPPathSenderTspecIntServParameter127LengthCounter object +func (obj *patternFlowRSVPPathSenderTspecIntServParameter127LengthCounter) SetStart(value uint32) PatternFlowRSVPPathSenderTspecIntServParameter127LengthCounter { - obj.obj.GlobalIpv4Admin = &value + obj.obj.Start = &value return obj } -// The Local Administrator sub-field contains a number from a numbering space that is administered by the organization to which the IP address carried in the Global Administrator sub-field has been assigned by an appropriate authority. -// Local2ByteAdmin returns a uint32 -func (obj *bgpExtendedCommunityTransitiveIpv4AddressTypeRouteTarget) Local2ByteAdmin() uint32 { +// description is TBD +// Step returns a uint32 +func (obj *patternFlowRSVPPathSenderTspecIntServParameter127LengthCounter) Step() uint32 { - return *obj.obj.Local_2ByteAdmin + return *obj.obj.Step } -// The Local Administrator sub-field contains a number from a numbering space that is administered by the organization to which the IP address carried in the Global Administrator sub-field has been assigned by an appropriate authority. -// Local2ByteAdmin returns a uint32 -func (obj *bgpExtendedCommunityTransitiveIpv4AddressTypeRouteTarget) HasLocal2ByteAdmin() bool { - return obj.obj.Local_2ByteAdmin != nil +// description is TBD +// Step returns a uint32 +func (obj *patternFlowRSVPPathSenderTspecIntServParameter127LengthCounter) HasStep() bool { + return obj.obj.Step != nil } -// The Local Administrator sub-field contains a number from a numbering space that is administered by the organization to which the IP address carried in the Global Administrator sub-field has been assigned by an appropriate authority. -// SetLocal2ByteAdmin sets the uint32 value in the BgpExtendedCommunityTransitiveIpv4AddressTypeRouteTarget object -func (obj *bgpExtendedCommunityTransitiveIpv4AddressTypeRouteTarget) SetLocal2ByteAdmin(value uint32) BgpExtendedCommunityTransitiveIpv4AddressTypeRouteTarget { +// description is TBD +// SetStep sets the uint32 value in the PatternFlowRSVPPathSenderTspecIntServParameter127LengthCounter object +func (obj *patternFlowRSVPPathSenderTspecIntServParameter127LengthCounter) SetStep(value uint32) PatternFlowRSVPPathSenderTspecIntServParameter127LengthCounter { - obj.obj.Local_2ByteAdmin = &value + obj.obj.Step = &value return obj } -func (obj *bgpExtendedCommunityTransitiveIpv4AddressTypeRouteTarget) validateObj(vObj *validation, set_default bool) { +// description is TBD +// Count returns a uint32 +func (obj *patternFlowRSVPPathSenderTspecIntServParameter127LengthCounter) Count() uint32 { + + return *obj.obj.Count + +} + +// description is TBD +// Count returns a uint32 +func (obj *patternFlowRSVPPathSenderTspecIntServParameter127LengthCounter) HasCount() bool { + return obj.obj.Count != nil +} + +// description is TBD +// SetCount sets the uint32 value in the PatternFlowRSVPPathSenderTspecIntServParameter127LengthCounter object +func (obj *patternFlowRSVPPathSenderTspecIntServParameter127LengthCounter) SetCount(value uint32) PatternFlowRSVPPathSenderTspecIntServParameter127LengthCounter { + + obj.obj.Count = &value + return obj +} + +func (obj *patternFlowRSVPPathSenderTspecIntServParameter127LengthCounter) validateObj(vObj *validation, set_default bool) { if set_default { obj.setDefault() } - if obj.obj.GlobalIpv4Admin != nil { + if obj.obj.Start != nil { - err := obj.validateIpv4(obj.GlobalIpv4Admin()) - if err != nil { - vObj.validationErrors = append(vObj.validationErrors, fmt.Sprintf("%s %s", err.Error(), "on BgpExtendedCommunityTransitiveIpv4AddressTypeRouteTarget.GlobalIpv4Admin")) + if *obj.obj.Start > 65535 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("0 <= PatternFlowRSVPPathSenderTspecIntServParameter127LengthCounter.Start <= 65535 but Got %d", *obj.obj.Start)) } } - if obj.obj.Local_2ByteAdmin != nil { + if obj.obj.Step != nil { - if *obj.obj.Local_2ByteAdmin > 65535 { + if *obj.obj.Step > 65535 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("0 <= BgpExtendedCommunityTransitiveIpv4AddressTypeRouteTarget.Local_2ByteAdmin <= 65535 but Got %d", *obj.obj.Local_2ByteAdmin)) + fmt.Sprintf("0 <= PatternFlowRSVPPathSenderTspecIntServParameter127LengthCounter.Step <= 65535 but Got %d", *obj.obj.Step)) + } + + } + + if obj.obj.Count != nil { + + if *obj.obj.Count > 65535 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("0 <= PatternFlowRSVPPathSenderTspecIntServParameter127LengthCounter.Count <= 65535 but Got %d", *obj.obj.Count)) } } } -func (obj *bgpExtendedCommunityTransitiveIpv4AddressTypeRouteTarget) setDefault() { - if obj.obj.GlobalIpv4Admin == nil { - obj.SetGlobalIpv4Admin("0.0.0.0") +func (obj *patternFlowRSVPPathSenderTspecIntServParameter127LengthCounter) setDefault() { + if obj.obj.Start == nil { + obj.SetStart(0) } - if obj.obj.Local_2ByteAdmin == nil { - obj.SetLocal2ByteAdmin(1) + if obj.obj.Step == nil { + obj.SetStep(1) + } + if obj.obj.Count == nil { + obj.SetCount(1) } } -// ***** BgpExtendedCommunityTransitiveIpv4AddressTypeRouteOrigin ***** -type bgpExtendedCommunityTransitiveIpv4AddressTypeRouteOrigin struct { +// ***** PatternFlowRSVPPathSenderTspecIntServMinimumPolicedUnitCounter ***** +type patternFlowRSVPPathSenderTspecIntServMinimumPolicedUnitCounter struct { validation - obj *otg.BgpExtendedCommunityTransitiveIpv4AddressTypeRouteOrigin + obj *otg.PatternFlowRSVPPathSenderTspecIntServMinimumPolicedUnitCounter } -func NewBgpExtendedCommunityTransitiveIpv4AddressTypeRouteOrigin() BgpExtendedCommunityTransitiveIpv4AddressTypeRouteOrigin { - obj := bgpExtendedCommunityTransitiveIpv4AddressTypeRouteOrigin{obj: &otg.BgpExtendedCommunityTransitiveIpv4AddressTypeRouteOrigin{}} +func NewPatternFlowRSVPPathSenderTspecIntServMinimumPolicedUnitCounter() PatternFlowRSVPPathSenderTspecIntServMinimumPolicedUnitCounter { + obj := patternFlowRSVPPathSenderTspecIntServMinimumPolicedUnitCounter{obj: &otg.PatternFlowRSVPPathSenderTspecIntServMinimumPolicedUnitCounter{}} obj.setDefault() return &obj } -func (obj *bgpExtendedCommunityTransitiveIpv4AddressTypeRouteOrigin) Msg() *otg.BgpExtendedCommunityTransitiveIpv4AddressTypeRouteOrigin { +func (obj *patternFlowRSVPPathSenderTspecIntServMinimumPolicedUnitCounter) Msg() *otg.PatternFlowRSVPPathSenderTspecIntServMinimumPolicedUnitCounter { return obj.obj } -func (obj *bgpExtendedCommunityTransitiveIpv4AddressTypeRouteOrigin) SetMsg(msg *otg.BgpExtendedCommunityTransitiveIpv4AddressTypeRouteOrigin) BgpExtendedCommunityTransitiveIpv4AddressTypeRouteOrigin { +func (obj *patternFlowRSVPPathSenderTspecIntServMinimumPolicedUnitCounter) SetMsg(msg *otg.PatternFlowRSVPPathSenderTspecIntServMinimumPolicedUnitCounter) PatternFlowRSVPPathSenderTspecIntServMinimumPolicedUnitCounter { proto.Merge(obj.obj, msg) return obj } -func (obj *bgpExtendedCommunityTransitiveIpv4AddressTypeRouteOrigin) ToProto() (*otg.BgpExtendedCommunityTransitiveIpv4AddressTypeRouteOrigin, error) { +func (obj *patternFlowRSVPPathSenderTspecIntServMinimumPolicedUnitCounter) ToProto() (*otg.PatternFlowRSVPPathSenderTspecIntServMinimumPolicedUnitCounter, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -313155,7 +360461,7 @@ func (obj *bgpExtendedCommunityTransitiveIpv4AddressTypeRouteOrigin) ToProto() ( return obj.Msg(), nil } -func (obj *bgpExtendedCommunityTransitiveIpv4AddressTypeRouteOrigin) FromProto(msg *otg.BgpExtendedCommunityTransitiveIpv4AddressTypeRouteOrigin) (BgpExtendedCommunityTransitiveIpv4AddressTypeRouteOrigin, error) { +func (obj *patternFlowRSVPPathSenderTspecIntServMinimumPolicedUnitCounter) FromProto(msg *otg.PatternFlowRSVPPathSenderTspecIntServMinimumPolicedUnitCounter) (PatternFlowRSVPPathSenderTspecIntServMinimumPolicedUnitCounter, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -313164,7 +360470,7 @@ func (obj *bgpExtendedCommunityTransitiveIpv4AddressTypeRouteOrigin) FromProto(m return newObj, nil } -func (obj *bgpExtendedCommunityTransitiveIpv4AddressTypeRouteOrigin) ToPbText() (string, error) { +func (obj *patternFlowRSVPPathSenderTspecIntServMinimumPolicedUnitCounter) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -313176,7 +360482,7 @@ func (obj *bgpExtendedCommunityTransitiveIpv4AddressTypeRouteOrigin) ToPbText() return string(protoMarshal), nil } -func (obj *bgpExtendedCommunityTransitiveIpv4AddressTypeRouteOrigin) FromPbText(value string) error { +func (obj *patternFlowRSVPPathSenderTspecIntServMinimumPolicedUnitCounter) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj @@ -313189,7 +360495,7 @@ func (obj *bgpExtendedCommunityTransitiveIpv4AddressTypeRouteOrigin) FromPbText( return retObj } -func (obj *bgpExtendedCommunityTransitiveIpv4AddressTypeRouteOrigin) ToYaml() (string, error) { +func (obj *patternFlowRSVPPathSenderTspecIntServMinimumPolicedUnitCounter) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -313210,7 +360516,7 @@ func (obj *bgpExtendedCommunityTransitiveIpv4AddressTypeRouteOrigin) ToYaml() (s return string(data), nil } -func (obj *bgpExtendedCommunityTransitiveIpv4AddressTypeRouteOrigin) FromYaml(value string) error { +func (obj *patternFlowRSVPPathSenderTspecIntServMinimumPolicedUnitCounter) FromYaml(value string) error { if value == "" { value = "{}" } @@ -313235,7 +360541,7 @@ func (obj *bgpExtendedCommunityTransitiveIpv4AddressTypeRouteOrigin) FromYaml(va return nil } -func (obj *bgpExtendedCommunityTransitiveIpv4AddressTypeRouteOrigin) ToJson() (string, error) { +func (obj *patternFlowRSVPPathSenderTspecIntServMinimumPolicedUnitCounter) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -313253,7 +360559,7 @@ func (obj *bgpExtendedCommunityTransitiveIpv4AddressTypeRouteOrigin) ToJson() (s return string(data), nil } -func (obj *bgpExtendedCommunityTransitiveIpv4AddressTypeRouteOrigin) FromJson(value string) error { +func (obj *patternFlowRSVPPathSenderTspecIntServMinimumPolicedUnitCounter) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -313274,19 +360580,19 @@ func (obj *bgpExtendedCommunityTransitiveIpv4AddressTypeRouteOrigin) FromJson(va return nil } -func (obj *bgpExtendedCommunityTransitiveIpv4AddressTypeRouteOrigin) validateToAndFrom() error { +func (obj *patternFlowRSVPPathSenderTspecIntServMinimumPolicedUnitCounter) validateToAndFrom() error { // emptyVars() obj.validateObj(&obj.validation, true) return obj.validationResult() } -func (obj *bgpExtendedCommunityTransitiveIpv4AddressTypeRouteOrigin) Validate() error { +func (obj *patternFlowRSVPPathSenderTspecIntServMinimumPolicedUnitCounter) Validate() error { // emptyVars() obj.validateObj(&obj.validation, false) return obj.validationResult() } -func (obj *bgpExtendedCommunityTransitiveIpv4AddressTypeRouteOrigin) String() string { +func (obj *patternFlowRSVPPathSenderTspecIntServMinimumPolicedUnitCounter) String() string { str, err := obj.ToYaml() if err != nil { return err.Error() @@ -313294,12 +360600,12 @@ func (obj *bgpExtendedCommunityTransitiveIpv4AddressTypeRouteOrigin) String() st return str } -func (obj *bgpExtendedCommunityTransitiveIpv4AddressTypeRouteOrigin) Clone() (BgpExtendedCommunityTransitiveIpv4AddressTypeRouteOrigin, error) { +func (obj *patternFlowRSVPPathSenderTspecIntServMinimumPolicedUnitCounter) Clone() (PatternFlowRSVPPathSenderTspecIntServMinimumPolicedUnitCounter, error) { vErr := obj.Validate() if vErr != nil { return nil, vErr } - newObj := NewBgpExtendedCommunityTransitiveIpv4AddressTypeRouteOrigin() + newObj := NewPatternFlowRSVPPathSenderTspecIntServMinimumPolicedUnitCounter() data, err := proto.Marshal(obj.Msg()) if err != nil { return nil, err @@ -313311,157 +360617,169 @@ func (obj *bgpExtendedCommunityTransitiveIpv4AddressTypeRouteOrigin) Clone() (Bg return newObj, nil } -// BgpExtendedCommunityTransitiveIpv4AddressTypeRouteOrigin is the Route Origin Community identifies one or more routers that inject a set of routes (that carry this Community) into BGP It is sent with sub-type as 0x03. -type BgpExtendedCommunityTransitiveIpv4AddressTypeRouteOrigin interface { +// PatternFlowRSVPPathSenderTspecIntServMinimumPolicedUnitCounter is integer counter pattern +type PatternFlowRSVPPathSenderTspecIntServMinimumPolicedUnitCounter interface { Validation - // Msg marshals BgpExtendedCommunityTransitiveIpv4AddressTypeRouteOrigin to protobuf object *otg.BgpExtendedCommunityTransitiveIpv4AddressTypeRouteOrigin + // Msg marshals PatternFlowRSVPPathSenderTspecIntServMinimumPolicedUnitCounter to protobuf object *otg.PatternFlowRSVPPathSenderTspecIntServMinimumPolicedUnitCounter // and doesn't set defaults - Msg() *otg.BgpExtendedCommunityTransitiveIpv4AddressTypeRouteOrigin - // SetMsg unmarshals BgpExtendedCommunityTransitiveIpv4AddressTypeRouteOrigin from protobuf object *otg.BgpExtendedCommunityTransitiveIpv4AddressTypeRouteOrigin + Msg() *otg.PatternFlowRSVPPathSenderTspecIntServMinimumPolicedUnitCounter + // SetMsg unmarshals PatternFlowRSVPPathSenderTspecIntServMinimumPolicedUnitCounter from protobuf object *otg.PatternFlowRSVPPathSenderTspecIntServMinimumPolicedUnitCounter // and doesn't set defaults - SetMsg(*otg.BgpExtendedCommunityTransitiveIpv4AddressTypeRouteOrigin) BgpExtendedCommunityTransitiveIpv4AddressTypeRouteOrigin - // ToProto marshals BgpExtendedCommunityTransitiveIpv4AddressTypeRouteOrigin to protobuf object *otg.BgpExtendedCommunityTransitiveIpv4AddressTypeRouteOrigin - ToProto() (*otg.BgpExtendedCommunityTransitiveIpv4AddressTypeRouteOrigin, error) - // ToPbText marshals BgpExtendedCommunityTransitiveIpv4AddressTypeRouteOrigin to protobuf text + SetMsg(*otg.PatternFlowRSVPPathSenderTspecIntServMinimumPolicedUnitCounter) PatternFlowRSVPPathSenderTspecIntServMinimumPolicedUnitCounter + // ToProto marshals PatternFlowRSVPPathSenderTspecIntServMinimumPolicedUnitCounter to protobuf object *otg.PatternFlowRSVPPathSenderTspecIntServMinimumPolicedUnitCounter + ToProto() (*otg.PatternFlowRSVPPathSenderTspecIntServMinimumPolicedUnitCounter, error) + // ToPbText marshals PatternFlowRSVPPathSenderTspecIntServMinimumPolicedUnitCounter to protobuf text ToPbText() (string, error) - // ToYaml marshals BgpExtendedCommunityTransitiveIpv4AddressTypeRouteOrigin to YAML text + // ToYaml marshals PatternFlowRSVPPathSenderTspecIntServMinimumPolicedUnitCounter to YAML text ToYaml() (string, error) - // ToJson marshals BgpExtendedCommunityTransitiveIpv4AddressTypeRouteOrigin to JSON text + // ToJson marshals PatternFlowRSVPPathSenderTspecIntServMinimumPolicedUnitCounter to JSON text ToJson() (string, error) - // FromProto unmarshals BgpExtendedCommunityTransitiveIpv4AddressTypeRouteOrigin from protobuf object *otg.BgpExtendedCommunityTransitiveIpv4AddressTypeRouteOrigin - FromProto(msg *otg.BgpExtendedCommunityTransitiveIpv4AddressTypeRouteOrigin) (BgpExtendedCommunityTransitiveIpv4AddressTypeRouteOrigin, error) - // FromPbText unmarshals BgpExtendedCommunityTransitiveIpv4AddressTypeRouteOrigin from protobuf text + // FromProto unmarshals PatternFlowRSVPPathSenderTspecIntServMinimumPolicedUnitCounter from protobuf object *otg.PatternFlowRSVPPathSenderTspecIntServMinimumPolicedUnitCounter + FromProto(msg *otg.PatternFlowRSVPPathSenderTspecIntServMinimumPolicedUnitCounter) (PatternFlowRSVPPathSenderTspecIntServMinimumPolicedUnitCounter, error) + // FromPbText unmarshals PatternFlowRSVPPathSenderTspecIntServMinimumPolicedUnitCounter from protobuf text FromPbText(value string) error - // FromYaml unmarshals BgpExtendedCommunityTransitiveIpv4AddressTypeRouteOrigin from YAML text + // FromYaml unmarshals PatternFlowRSVPPathSenderTspecIntServMinimumPolicedUnitCounter from YAML text FromYaml(value string) error - // FromJson unmarshals BgpExtendedCommunityTransitiveIpv4AddressTypeRouteOrigin from JSON text + // FromJson unmarshals PatternFlowRSVPPathSenderTspecIntServMinimumPolicedUnitCounter from JSON text FromJson(value string) error - // Validate validates BgpExtendedCommunityTransitiveIpv4AddressTypeRouteOrigin + // Validate validates PatternFlowRSVPPathSenderTspecIntServMinimumPolicedUnitCounter Validate() error // A stringer function String() string // Clones the object - Clone() (BgpExtendedCommunityTransitiveIpv4AddressTypeRouteOrigin, error) + Clone() (PatternFlowRSVPPathSenderTspecIntServMinimumPolicedUnitCounter, error) validateToAndFrom() error validateObj(vObj *validation, set_default bool) setDefault() - // GlobalIpv4Admin returns string, set in BgpExtendedCommunityTransitiveIpv4AddressTypeRouteOrigin. - GlobalIpv4Admin() string - // SetGlobalIpv4Admin assigns string provided by user to BgpExtendedCommunityTransitiveIpv4AddressTypeRouteOrigin - SetGlobalIpv4Admin(value string) BgpExtendedCommunityTransitiveIpv4AddressTypeRouteOrigin - // HasGlobalIpv4Admin checks if GlobalIpv4Admin has been set in BgpExtendedCommunityTransitiveIpv4AddressTypeRouteOrigin - HasGlobalIpv4Admin() bool - // Local2ByteAdmin returns uint32, set in BgpExtendedCommunityTransitiveIpv4AddressTypeRouteOrigin. - Local2ByteAdmin() uint32 - // SetLocal2ByteAdmin assigns uint32 provided by user to BgpExtendedCommunityTransitiveIpv4AddressTypeRouteOrigin - SetLocal2ByteAdmin(value uint32) BgpExtendedCommunityTransitiveIpv4AddressTypeRouteOrigin - // HasLocal2ByteAdmin checks if Local2ByteAdmin has been set in BgpExtendedCommunityTransitiveIpv4AddressTypeRouteOrigin - HasLocal2ByteAdmin() bool + // Start returns uint32, set in PatternFlowRSVPPathSenderTspecIntServMinimumPolicedUnitCounter. + Start() uint32 + // SetStart assigns uint32 provided by user to PatternFlowRSVPPathSenderTspecIntServMinimumPolicedUnitCounter + SetStart(value uint32) PatternFlowRSVPPathSenderTspecIntServMinimumPolicedUnitCounter + // HasStart checks if Start has been set in PatternFlowRSVPPathSenderTspecIntServMinimumPolicedUnitCounter + HasStart() bool + // Step returns uint32, set in PatternFlowRSVPPathSenderTspecIntServMinimumPolicedUnitCounter. + Step() uint32 + // SetStep assigns uint32 provided by user to PatternFlowRSVPPathSenderTspecIntServMinimumPolicedUnitCounter + SetStep(value uint32) PatternFlowRSVPPathSenderTspecIntServMinimumPolicedUnitCounter + // HasStep checks if Step has been set in PatternFlowRSVPPathSenderTspecIntServMinimumPolicedUnitCounter + HasStep() bool + // Count returns uint32, set in PatternFlowRSVPPathSenderTspecIntServMinimumPolicedUnitCounter. + Count() uint32 + // SetCount assigns uint32 provided by user to PatternFlowRSVPPathSenderTspecIntServMinimumPolicedUnitCounter + SetCount(value uint32) PatternFlowRSVPPathSenderTspecIntServMinimumPolicedUnitCounter + // HasCount checks if Count has been set in PatternFlowRSVPPathSenderTspecIntServMinimumPolicedUnitCounter + HasCount() bool } -// An IPv4 unicast address assigned by one of the Internet registries. -// GlobalIpv4Admin returns a string -func (obj *bgpExtendedCommunityTransitiveIpv4AddressTypeRouteOrigin) GlobalIpv4Admin() string { +// description is TBD +// Start returns a uint32 +func (obj *patternFlowRSVPPathSenderTspecIntServMinimumPolicedUnitCounter) Start() uint32 { - return *obj.obj.GlobalIpv4Admin + return *obj.obj.Start } -// An IPv4 unicast address assigned by one of the Internet registries. -// GlobalIpv4Admin returns a string -func (obj *bgpExtendedCommunityTransitiveIpv4AddressTypeRouteOrigin) HasGlobalIpv4Admin() bool { - return obj.obj.GlobalIpv4Admin != nil +// description is TBD +// Start returns a uint32 +func (obj *patternFlowRSVPPathSenderTspecIntServMinimumPolicedUnitCounter) HasStart() bool { + return obj.obj.Start != nil } -// An IPv4 unicast address assigned by one of the Internet registries. -// SetGlobalIpv4Admin sets the string value in the BgpExtendedCommunityTransitiveIpv4AddressTypeRouteOrigin object -func (obj *bgpExtendedCommunityTransitiveIpv4AddressTypeRouteOrigin) SetGlobalIpv4Admin(value string) BgpExtendedCommunityTransitiveIpv4AddressTypeRouteOrigin { +// description is TBD +// SetStart sets the uint32 value in the PatternFlowRSVPPathSenderTspecIntServMinimumPolicedUnitCounter object +func (obj *patternFlowRSVPPathSenderTspecIntServMinimumPolicedUnitCounter) SetStart(value uint32) PatternFlowRSVPPathSenderTspecIntServMinimumPolicedUnitCounter { - obj.obj.GlobalIpv4Admin = &value + obj.obj.Start = &value return obj } -// The Local Administrator sub-field contains a number from a numbering space that is administered by the organization to which the IP address carried in the Global Administrator sub-field has been assigned by an appropriate authority. -// Local2ByteAdmin returns a uint32 -func (obj *bgpExtendedCommunityTransitiveIpv4AddressTypeRouteOrigin) Local2ByteAdmin() uint32 { +// description is TBD +// Step returns a uint32 +func (obj *patternFlowRSVPPathSenderTspecIntServMinimumPolicedUnitCounter) Step() uint32 { - return *obj.obj.Local_2ByteAdmin + return *obj.obj.Step } -// The Local Administrator sub-field contains a number from a numbering space that is administered by the organization to which the IP address carried in the Global Administrator sub-field has been assigned by an appropriate authority. -// Local2ByteAdmin returns a uint32 -func (obj *bgpExtendedCommunityTransitiveIpv4AddressTypeRouteOrigin) HasLocal2ByteAdmin() bool { - return obj.obj.Local_2ByteAdmin != nil +// description is TBD +// Step returns a uint32 +func (obj *patternFlowRSVPPathSenderTspecIntServMinimumPolicedUnitCounter) HasStep() bool { + return obj.obj.Step != nil } -// The Local Administrator sub-field contains a number from a numbering space that is administered by the organization to which the IP address carried in the Global Administrator sub-field has been assigned by an appropriate authority. -// SetLocal2ByteAdmin sets the uint32 value in the BgpExtendedCommunityTransitiveIpv4AddressTypeRouteOrigin object -func (obj *bgpExtendedCommunityTransitiveIpv4AddressTypeRouteOrigin) SetLocal2ByteAdmin(value uint32) BgpExtendedCommunityTransitiveIpv4AddressTypeRouteOrigin { +// description is TBD +// SetStep sets the uint32 value in the PatternFlowRSVPPathSenderTspecIntServMinimumPolicedUnitCounter object +func (obj *patternFlowRSVPPathSenderTspecIntServMinimumPolicedUnitCounter) SetStep(value uint32) PatternFlowRSVPPathSenderTspecIntServMinimumPolicedUnitCounter { - obj.obj.Local_2ByteAdmin = &value + obj.obj.Step = &value return obj } -func (obj *bgpExtendedCommunityTransitiveIpv4AddressTypeRouteOrigin) validateObj(vObj *validation, set_default bool) { - if set_default { - obj.setDefault() - } +// description is TBD +// Count returns a uint32 +func (obj *patternFlowRSVPPathSenderTspecIntServMinimumPolicedUnitCounter) Count() uint32 { - if obj.obj.GlobalIpv4Admin != nil { + return *obj.obj.Count - err := obj.validateIpv4(obj.GlobalIpv4Admin()) - if err != nil { - vObj.validationErrors = append(vObj.validationErrors, fmt.Sprintf("%s %s", err.Error(), "on BgpExtendedCommunityTransitiveIpv4AddressTypeRouteOrigin.GlobalIpv4Admin")) - } +} - } +// description is TBD +// Count returns a uint32 +func (obj *patternFlowRSVPPathSenderTspecIntServMinimumPolicedUnitCounter) HasCount() bool { + return obj.obj.Count != nil +} - if obj.obj.Local_2ByteAdmin != nil { +// description is TBD +// SetCount sets the uint32 value in the PatternFlowRSVPPathSenderTspecIntServMinimumPolicedUnitCounter object +func (obj *patternFlowRSVPPathSenderTspecIntServMinimumPolicedUnitCounter) SetCount(value uint32) PatternFlowRSVPPathSenderTspecIntServMinimumPolicedUnitCounter { - if *obj.obj.Local_2ByteAdmin > 65535 { - vObj.validationErrors = append( - vObj.validationErrors, - fmt.Sprintf("0 <= BgpExtendedCommunityTransitiveIpv4AddressTypeRouteOrigin.Local_2ByteAdmin <= 65535 but Got %d", *obj.obj.Local_2ByteAdmin)) - } + obj.obj.Count = &value + return obj +} +func (obj *patternFlowRSVPPathSenderTspecIntServMinimumPolicedUnitCounter) validateObj(vObj *validation, set_default bool) { + if set_default { + obj.setDefault() } } -func (obj *bgpExtendedCommunityTransitiveIpv4AddressTypeRouteOrigin) setDefault() { - if obj.obj.GlobalIpv4Admin == nil { - obj.SetGlobalIpv4Admin("0.0.0.0") +func (obj *patternFlowRSVPPathSenderTspecIntServMinimumPolicedUnitCounter) setDefault() { + if obj.obj.Start == nil { + obj.SetStart(0) } - if obj.obj.Local_2ByteAdmin == nil { - obj.SetLocal2ByteAdmin(1) + if obj.obj.Step == nil { + obj.SetStep(1) + } + if obj.obj.Count == nil { + obj.SetCount(1) } } -// ***** BgpExtendedCommunityTransitive4OctetAsTypeRouteTarget ***** -type bgpExtendedCommunityTransitive4OctetAsTypeRouteTarget struct { +// ***** PatternFlowRSVPPathSenderTspecIntServMaximumPacketSizeCounter ***** +type patternFlowRSVPPathSenderTspecIntServMaximumPacketSizeCounter struct { validation - obj *otg.BgpExtendedCommunityTransitive4OctetAsTypeRouteTarget + obj *otg.PatternFlowRSVPPathSenderTspecIntServMaximumPacketSizeCounter } -func NewBgpExtendedCommunityTransitive4OctetAsTypeRouteTarget() BgpExtendedCommunityTransitive4OctetAsTypeRouteTarget { - obj := bgpExtendedCommunityTransitive4OctetAsTypeRouteTarget{obj: &otg.BgpExtendedCommunityTransitive4OctetAsTypeRouteTarget{}} +func NewPatternFlowRSVPPathSenderTspecIntServMaximumPacketSizeCounter() PatternFlowRSVPPathSenderTspecIntServMaximumPacketSizeCounter { + obj := patternFlowRSVPPathSenderTspecIntServMaximumPacketSizeCounter{obj: &otg.PatternFlowRSVPPathSenderTspecIntServMaximumPacketSizeCounter{}} obj.setDefault() return &obj } -func (obj *bgpExtendedCommunityTransitive4OctetAsTypeRouteTarget) Msg() *otg.BgpExtendedCommunityTransitive4OctetAsTypeRouteTarget { +func (obj *patternFlowRSVPPathSenderTspecIntServMaximumPacketSizeCounter) Msg() *otg.PatternFlowRSVPPathSenderTspecIntServMaximumPacketSizeCounter { return obj.obj } -func (obj *bgpExtendedCommunityTransitive4OctetAsTypeRouteTarget) SetMsg(msg *otg.BgpExtendedCommunityTransitive4OctetAsTypeRouteTarget) BgpExtendedCommunityTransitive4OctetAsTypeRouteTarget { +func (obj *patternFlowRSVPPathSenderTspecIntServMaximumPacketSizeCounter) SetMsg(msg *otg.PatternFlowRSVPPathSenderTspecIntServMaximumPacketSizeCounter) PatternFlowRSVPPathSenderTspecIntServMaximumPacketSizeCounter { proto.Merge(obj.obj, msg) return obj } -func (obj *bgpExtendedCommunityTransitive4OctetAsTypeRouteTarget) ToProto() (*otg.BgpExtendedCommunityTransitive4OctetAsTypeRouteTarget, error) { +func (obj *patternFlowRSVPPathSenderTspecIntServMaximumPacketSizeCounter) ToProto() (*otg.PatternFlowRSVPPathSenderTspecIntServMaximumPacketSizeCounter, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -313469,7 +360787,7 @@ func (obj *bgpExtendedCommunityTransitive4OctetAsTypeRouteTarget) ToProto() (*ot return obj.Msg(), nil } -func (obj *bgpExtendedCommunityTransitive4OctetAsTypeRouteTarget) FromProto(msg *otg.BgpExtendedCommunityTransitive4OctetAsTypeRouteTarget) (BgpExtendedCommunityTransitive4OctetAsTypeRouteTarget, error) { +func (obj *patternFlowRSVPPathSenderTspecIntServMaximumPacketSizeCounter) FromProto(msg *otg.PatternFlowRSVPPathSenderTspecIntServMaximumPacketSizeCounter) (PatternFlowRSVPPathSenderTspecIntServMaximumPacketSizeCounter, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -313478,7 +360796,7 @@ func (obj *bgpExtendedCommunityTransitive4OctetAsTypeRouteTarget) FromProto(msg return newObj, nil } -func (obj *bgpExtendedCommunityTransitive4OctetAsTypeRouteTarget) ToPbText() (string, error) { +func (obj *patternFlowRSVPPathSenderTspecIntServMaximumPacketSizeCounter) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -313490,7 +360808,7 @@ func (obj *bgpExtendedCommunityTransitive4OctetAsTypeRouteTarget) ToPbText() (st return string(protoMarshal), nil } -func (obj *bgpExtendedCommunityTransitive4OctetAsTypeRouteTarget) FromPbText(value string) error { +func (obj *patternFlowRSVPPathSenderTspecIntServMaximumPacketSizeCounter) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj @@ -313503,7 +360821,7 @@ func (obj *bgpExtendedCommunityTransitive4OctetAsTypeRouteTarget) FromPbText(val return retObj } -func (obj *bgpExtendedCommunityTransitive4OctetAsTypeRouteTarget) ToYaml() (string, error) { +func (obj *patternFlowRSVPPathSenderTspecIntServMaximumPacketSizeCounter) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -313524,7 +360842,7 @@ func (obj *bgpExtendedCommunityTransitive4OctetAsTypeRouteTarget) ToYaml() (stri return string(data), nil } -func (obj *bgpExtendedCommunityTransitive4OctetAsTypeRouteTarget) FromYaml(value string) error { +func (obj *patternFlowRSVPPathSenderTspecIntServMaximumPacketSizeCounter) FromYaml(value string) error { if value == "" { value = "{}" } @@ -313549,7 +360867,7 @@ func (obj *bgpExtendedCommunityTransitive4OctetAsTypeRouteTarget) FromYaml(value return nil } -func (obj *bgpExtendedCommunityTransitive4OctetAsTypeRouteTarget) ToJson() (string, error) { +func (obj *patternFlowRSVPPathSenderTspecIntServMaximumPacketSizeCounter) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -313567,7 +360885,7 @@ func (obj *bgpExtendedCommunityTransitive4OctetAsTypeRouteTarget) ToJson() (stri return string(data), nil } -func (obj *bgpExtendedCommunityTransitive4OctetAsTypeRouteTarget) FromJson(value string) error { +func (obj *patternFlowRSVPPathSenderTspecIntServMaximumPacketSizeCounter) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -313588,19 +360906,19 @@ func (obj *bgpExtendedCommunityTransitive4OctetAsTypeRouteTarget) FromJson(value return nil } -func (obj *bgpExtendedCommunityTransitive4OctetAsTypeRouteTarget) validateToAndFrom() error { +func (obj *patternFlowRSVPPathSenderTspecIntServMaximumPacketSizeCounter) validateToAndFrom() error { // emptyVars() obj.validateObj(&obj.validation, true) return obj.validationResult() } -func (obj *bgpExtendedCommunityTransitive4OctetAsTypeRouteTarget) Validate() error { +func (obj *patternFlowRSVPPathSenderTspecIntServMaximumPacketSizeCounter) Validate() error { // emptyVars() obj.validateObj(&obj.validation, false) return obj.validationResult() } -func (obj *bgpExtendedCommunityTransitive4OctetAsTypeRouteTarget) String() string { +func (obj *patternFlowRSVPPathSenderTspecIntServMaximumPacketSizeCounter) String() string { str, err := obj.ToYaml() if err != nil { return err.Error() @@ -313608,12 +360926,12 @@ func (obj *bgpExtendedCommunityTransitive4OctetAsTypeRouteTarget) String() strin return str } -func (obj *bgpExtendedCommunityTransitive4OctetAsTypeRouteTarget) Clone() (BgpExtendedCommunityTransitive4OctetAsTypeRouteTarget, error) { +func (obj *patternFlowRSVPPathSenderTspecIntServMaximumPacketSizeCounter) Clone() (PatternFlowRSVPPathSenderTspecIntServMaximumPacketSizeCounter, error) { vErr := obj.Validate() if vErr != nil { return nil, vErr } - newObj := NewBgpExtendedCommunityTransitive4OctetAsTypeRouteTarget() + newObj := NewPatternFlowRSVPPathSenderTspecIntServMaximumPacketSizeCounter() data, err := proto.Marshal(obj.Msg()) if err != nil { return nil, err @@ -313625,148 +360943,171 @@ func (obj *bgpExtendedCommunityTransitive4OctetAsTypeRouteTarget) Clone() (BgpEx return newObj, nil } -// BgpExtendedCommunityTransitive4OctetAsTypeRouteTarget is the Route Target Community identifies one or more routers that may receive a set of routes (that carry this Community) carried by BGP. It is sent with sub-type as 0x02 -type BgpExtendedCommunityTransitive4OctetAsTypeRouteTarget interface { +// PatternFlowRSVPPathSenderTspecIntServMaximumPacketSizeCounter is integer counter pattern +type PatternFlowRSVPPathSenderTspecIntServMaximumPacketSizeCounter interface { Validation - // Msg marshals BgpExtendedCommunityTransitive4OctetAsTypeRouteTarget to protobuf object *otg.BgpExtendedCommunityTransitive4OctetAsTypeRouteTarget + // Msg marshals PatternFlowRSVPPathSenderTspecIntServMaximumPacketSizeCounter to protobuf object *otg.PatternFlowRSVPPathSenderTspecIntServMaximumPacketSizeCounter // and doesn't set defaults - Msg() *otg.BgpExtendedCommunityTransitive4OctetAsTypeRouteTarget - // SetMsg unmarshals BgpExtendedCommunityTransitive4OctetAsTypeRouteTarget from protobuf object *otg.BgpExtendedCommunityTransitive4OctetAsTypeRouteTarget + Msg() *otg.PatternFlowRSVPPathSenderTspecIntServMaximumPacketSizeCounter + // SetMsg unmarshals PatternFlowRSVPPathSenderTspecIntServMaximumPacketSizeCounter from protobuf object *otg.PatternFlowRSVPPathSenderTspecIntServMaximumPacketSizeCounter // and doesn't set defaults - SetMsg(*otg.BgpExtendedCommunityTransitive4OctetAsTypeRouteTarget) BgpExtendedCommunityTransitive4OctetAsTypeRouteTarget - // ToProto marshals BgpExtendedCommunityTransitive4OctetAsTypeRouteTarget to protobuf object *otg.BgpExtendedCommunityTransitive4OctetAsTypeRouteTarget - ToProto() (*otg.BgpExtendedCommunityTransitive4OctetAsTypeRouteTarget, error) - // ToPbText marshals BgpExtendedCommunityTransitive4OctetAsTypeRouteTarget to protobuf text + SetMsg(*otg.PatternFlowRSVPPathSenderTspecIntServMaximumPacketSizeCounter) PatternFlowRSVPPathSenderTspecIntServMaximumPacketSizeCounter + // ToProto marshals PatternFlowRSVPPathSenderTspecIntServMaximumPacketSizeCounter to protobuf object *otg.PatternFlowRSVPPathSenderTspecIntServMaximumPacketSizeCounter + ToProto() (*otg.PatternFlowRSVPPathSenderTspecIntServMaximumPacketSizeCounter, error) + // ToPbText marshals PatternFlowRSVPPathSenderTspecIntServMaximumPacketSizeCounter to protobuf text ToPbText() (string, error) - // ToYaml marshals BgpExtendedCommunityTransitive4OctetAsTypeRouteTarget to YAML text + // ToYaml marshals PatternFlowRSVPPathSenderTspecIntServMaximumPacketSizeCounter to YAML text ToYaml() (string, error) - // ToJson marshals BgpExtendedCommunityTransitive4OctetAsTypeRouteTarget to JSON text + // ToJson marshals PatternFlowRSVPPathSenderTspecIntServMaximumPacketSizeCounter to JSON text ToJson() (string, error) - // FromProto unmarshals BgpExtendedCommunityTransitive4OctetAsTypeRouteTarget from protobuf object *otg.BgpExtendedCommunityTransitive4OctetAsTypeRouteTarget - FromProto(msg *otg.BgpExtendedCommunityTransitive4OctetAsTypeRouteTarget) (BgpExtendedCommunityTransitive4OctetAsTypeRouteTarget, error) - // FromPbText unmarshals BgpExtendedCommunityTransitive4OctetAsTypeRouteTarget from protobuf text + // FromProto unmarshals PatternFlowRSVPPathSenderTspecIntServMaximumPacketSizeCounter from protobuf object *otg.PatternFlowRSVPPathSenderTspecIntServMaximumPacketSizeCounter + FromProto(msg *otg.PatternFlowRSVPPathSenderTspecIntServMaximumPacketSizeCounter) (PatternFlowRSVPPathSenderTspecIntServMaximumPacketSizeCounter, error) + // FromPbText unmarshals PatternFlowRSVPPathSenderTspecIntServMaximumPacketSizeCounter from protobuf text FromPbText(value string) error - // FromYaml unmarshals BgpExtendedCommunityTransitive4OctetAsTypeRouteTarget from YAML text + // FromYaml unmarshals PatternFlowRSVPPathSenderTspecIntServMaximumPacketSizeCounter from YAML text FromYaml(value string) error - // FromJson unmarshals BgpExtendedCommunityTransitive4OctetAsTypeRouteTarget from JSON text + // FromJson unmarshals PatternFlowRSVPPathSenderTspecIntServMaximumPacketSizeCounter from JSON text FromJson(value string) error - // Validate validates BgpExtendedCommunityTransitive4OctetAsTypeRouteTarget + // Validate validates PatternFlowRSVPPathSenderTspecIntServMaximumPacketSizeCounter Validate() error // A stringer function String() string // Clones the object - Clone() (BgpExtendedCommunityTransitive4OctetAsTypeRouteTarget, error) + Clone() (PatternFlowRSVPPathSenderTspecIntServMaximumPacketSizeCounter, error) validateToAndFrom() error validateObj(vObj *validation, set_default bool) setDefault() - // Global4ByteAs returns uint32, set in BgpExtendedCommunityTransitive4OctetAsTypeRouteTarget. - Global4ByteAs() uint32 - // SetGlobal4ByteAs assigns uint32 provided by user to BgpExtendedCommunityTransitive4OctetAsTypeRouteTarget - SetGlobal4ByteAs(value uint32) BgpExtendedCommunityTransitive4OctetAsTypeRouteTarget - // HasGlobal4ByteAs checks if Global4ByteAs has been set in BgpExtendedCommunityTransitive4OctetAsTypeRouteTarget - HasGlobal4ByteAs() bool - // Local2ByteAdmin returns uint32, set in BgpExtendedCommunityTransitive4OctetAsTypeRouteTarget. - Local2ByteAdmin() uint32 - // SetLocal2ByteAdmin assigns uint32 provided by user to BgpExtendedCommunityTransitive4OctetAsTypeRouteTarget - SetLocal2ByteAdmin(value uint32) BgpExtendedCommunityTransitive4OctetAsTypeRouteTarget - // HasLocal2ByteAdmin checks if Local2ByteAdmin has been set in BgpExtendedCommunityTransitive4OctetAsTypeRouteTarget - HasLocal2ByteAdmin() bool + // Start returns uint32, set in PatternFlowRSVPPathSenderTspecIntServMaximumPacketSizeCounter. + Start() uint32 + // SetStart assigns uint32 provided by user to PatternFlowRSVPPathSenderTspecIntServMaximumPacketSizeCounter + SetStart(value uint32) PatternFlowRSVPPathSenderTspecIntServMaximumPacketSizeCounter + // HasStart checks if Start has been set in PatternFlowRSVPPathSenderTspecIntServMaximumPacketSizeCounter + HasStart() bool + // Step returns uint32, set in PatternFlowRSVPPathSenderTspecIntServMaximumPacketSizeCounter. + Step() uint32 + // SetStep assigns uint32 provided by user to PatternFlowRSVPPathSenderTspecIntServMaximumPacketSizeCounter + SetStep(value uint32) PatternFlowRSVPPathSenderTspecIntServMaximumPacketSizeCounter + // HasStep checks if Step has been set in PatternFlowRSVPPathSenderTspecIntServMaximumPacketSizeCounter + HasStep() bool + // Count returns uint32, set in PatternFlowRSVPPathSenderTspecIntServMaximumPacketSizeCounter. + Count() uint32 + // SetCount assigns uint32 provided by user to PatternFlowRSVPPathSenderTspecIntServMaximumPacketSizeCounter + SetCount(value uint32) PatternFlowRSVPPathSenderTspecIntServMaximumPacketSizeCounter + // HasCount checks if Count has been set in PatternFlowRSVPPathSenderTspecIntServMaximumPacketSizeCounter + HasCount() bool } -// The four octet IANA assigned AS value assigned to the Autonomous System. -// Global4ByteAs returns a uint32 -func (obj *bgpExtendedCommunityTransitive4OctetAsTypeRouteTarget) Global4ByteAs() uint32 { +// description is TBD +// Start returns a uint32 +func (obj *patternFlowRSVPPathSenderTspecIntServMaximumPacketSizeCounter) Start() uint32 { - return *obj.obj.Global_4ByteAs + return *obj.obj.Start } -// The four octet IANA assigned AS value assigned to the Autonomous System. -// Global4ByteAs returns a uint32 -func (obj *bgpExtendedCommunityTransitive4OctetAsTypeRouteTarget) HasGlobal4ByteAs() bool { - return obj.obj.Global_4ByteAs != nil +// description is TBD +// Start returns a uint32 +func (obj *patternFlowRSVPPathSenderTspecIntServMaximumPacketSizeCounter) HasStart() bool { + return obj.obj.Start != nil } -// The four octet IANA assigned AS value assigned to the Autonomous System. -// SetGlobal4ByteAs sets the uint32 value in the BgpExtendedCommunityTransitive4OctetAsTypeRouteTarget object -func (obj *bgpExtendedCommunityTransitive4OctetAsTypeRouteTarget) SetGlobal4ByteAs(value uint32) BgpExtendedCommunityTransitive4OctetAsTypeRouteTarget { +// description is TBD +// SetStart sets the uint32 value in the PatternFlowRSVPPathSenderTspecIntServMaximumPacketSizeCounter object +func (obj *patternFlowRSVPPathSenderTspecIntServMaximumPacketSizeCounter) SetStart(value uint32) PatternFlowRSVPPathSenderTspecIntServMaximumPacketSizeCounter { - obj.obj.Global_4ByteAs = &value + obj.obj.Start = &value return obj } -// The Local Administrator sub-field contains a number from a numbering space that is administered by the organization to which the Autonomous System number carried in the Global Administrator sub-field has been assigned by an appropriate authority. -// Local2ByteAdmin returns a uint32 -func (obj *bgpExtendedCommunityTransitive4OctetAsTypeRouteTarget) Local2ByteAdmin() uint32 { +// description is TBD +// Step returns a uint32 +func (obj *patternFlowRSVPPathSenderTspecIntServMaximumPacketSizeCounter) Step() uint32 { - return *obj.obj.Local_2ByteAdmin + return *obj.obj.Step } -// The Local Administrator sub-field contains a number from a numbering space that is administered by the organization to which the Autonomous System number carried in the Global Administrator sub-field has been assigned by an appropriate authority. -// Local2ByteAdmin returns a uint32 -func (obj *bgpExtendedCommunityTransitive4OctetAsTypeRouteTarget) HasLocal2ByteAdmin() bool { - return obj.obj.Local_2ByteAdmin != nil +// description is TBD +// Step returns a uint32 +func (obj *patternFlowRSVPPathSenderTspecIntServMaximumPacketSizeCounter) HasStep() bool { + return obj.obj.Step != nil } -// The Local Administrator sub-field contains a number from a numbering space that is administered by the organization to which the Autonomous System number carried in the Global Administrator sub-field has been assigned by an appropriate authority. -// SetLocal2ByteAdmin sets the uint32 value in the BgpExtendedCommunityTransitive4OctetAsTypeRouteTarget object -func (obj *bgpExtendedCommunityTransitive4OctetAsTypeRouteTarget) SetLocal2ByteAdmin(value uint32) BgpExtendedCommunityTransitive4OctetAsTypeRouteTarget { +// description is TBD +// SetStep sets the uint32 value in the PatternFlowRSVPPathSenderTspecIntServMaximumPacketSizeCounter object +func (obj *patternFlowRSVPPathSenderTspecIntServMaximumPacketSizeCounter) SetStep(value uint32) PatternFlowRSVPPathSenderTspecIntServMaximumPacketSizeCounter { - obj.obj.Local_2ByteAdmin = &value + obj.obj.Step = &value return obj } -func (obj *bgpExtendedCommunityTransitive4OctetAsTypeRouteTarget) validateObj(vObj *validation, set_default bool) { - if set_default { - obj.setDefault() - } +// description is TBD +// Count returns a uint32 +func (obj *patternFlowRSVPPathSenderTspecIntServMaximumPacketSizeCounter) Count() uint32 { - if obj.obj.Local_2ByteAdmin != nil { + return *obj.obj.Count - if *obj.obj.Local_2ByteAdmin > 65535 { - vObj.validationErrors = append( - vObj.validationErrors, - fmt.Sprintf("0 <= BgpExtendedCommunityTransitive4OctetAsTypeRouteTarget.Local_2ByteAdmin <= 65535 but Got %d", *obj.obj.Local_2ByteAdmin)) - } +} + +// description is TBD +// Count returns a uint32 +func (obj *patternFlowRSVPPathSenderTspecIntServMaximumPacketSizeCounter) HasCount() bool { + return obj.obj.Count != nil +} + +// description is TBD +// SetCount sets the uint32 value in the PatternFlowRSVPPathSenderTspecIntServMaximumPacketSizeCounter object +func (obj *patternFlowRSVPPathSenderTspecIntServMaximumPacketSizeCounter) SetCount(value uint32) PatternFlowRSVPPathSenderTspecIntServMaximumPacketSizeCounter { + + obj.obj.Count = &value + return obj +} +func (obj *patternFlowRSVPPathSenderTspecIntServMaximumPacketSizeCounter) validateObj(vObj *validation, set_default bool) { + if set_default { + obj.setDefault() } } -func (obj *bgpExtendedCommunityTransitive4OctetAsTypeRouteTarget) setDefault() { - if obj.obj.Global_4ByteAs == nil { - obj.SetGlobal4ByteAs(100) +func (obj *patternFlowRSVPPathSenderTspecIntServMaximumPacketSizeCounter) setDefault() { + if obj.obj.Start == nil { + obj.SetStart(0) } - if obj.obj.Local_2ByteAdmin == nil { - obj.SetLocal2ByteAdmin(1) + if obj.obj.Step == nil { + obj.SetStep(1) + } + if obj.obj.Count == nil { + obj.SetCount(1) } } -// ***** BgpExtendedCommunityTransitive4OctetAsTypeRouteOrigin ***** -type bgpExtendedCommunityTransitive4OctetAsTypeRouteOrigin struct { +// ***** FlowRSVPPathObjectsRecordRouteSubObjectType ***** +type flowRSVPPathObjectsRecordRouteSubObjectType struct { validation - obj *otg.BgpExtendedCommunityTransitive4OctetAsTypeRouteOrigin + obj *otg.FlowRSVPPathObjectsRecordRouteSubObjectType + ipv4AddressHolder FlowRSVPPathRecordRouteType1Ipv4Address + labelHolder FlowRSVPPathRecordRouteType1Label } -func NewBgpExtendedCommunityTransitive4OctetAsTypeRouteOrigin() BgpExtendedCommunityTransitive4OctetAsTypeRouteOrigin { - obj := bgpExtendedCommunityTransitive4OctetAsTypeRouteOrigin{obj: &otg.BgpExtendedCommunityTransitive4OctetAsTypeRouteOrigin{}} +func NewFlowRSVPPathObjectsRecordRouteSubObjectType() FlowRSVPPathObjectsRecordRouteSubObjectType { + obj := flowRSVPPathObjectsRecordRouteSubObjectType{obj: &otg.FlowRSVPPathObjectsRecordRouteSubObjectType{}} obj.setDefault() return &obj } -func (obj *bgpExtendedCommunityTransitive4OctetAsTypeRouteOrigin) Msg() *otg.BgpExtendedCommunityTransitive4OctetAsTypeRouteOrigin { +func (obj *flowRSVPPathObjectsRecordRouteSubObjectType) Msg() *otg.FlowRSVPPathObjectsRecordRouteSubObjectType { return obj.obj } -func (obj *bgpExtendedCommunityTransitive4OctetAsTypeRouteOrigin) SetMsg(msg *otg.BgpExtendedCommunityTransitive4OctetAsTypeRouteOrigin) BgpExtendedCommunityTransitive4OctetAsTypeRouteOrigin { - +func (obj *flowRSVPPathObjectsRecordRouteSubObjectType) SetMsg(msg *otg.FlowRSVPPathObjectsRecordRouteSubObjectType) FlowRSVPPathObjectsRecordRouteSubObjectType { + obj.setNil() proto.Merge(obj.obj, msg) return obj } -func (obj *bgpExtendedCommunityTransitive4OctetAsTypeRouteOrigin) ToProto() (*otg.BgpExtendedCommunityTransitive4OctetAsTypeRouteOrigin, error) { +func (obj *flowRSVPPathObjectsRecordRouteSubObjectType) ToProto() (*otg.FlowRSVPPathObjectsRecordRouteSubObjectType, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -313774,7 +361115,7 @@ func (obj *bgpExtendedCommunityTransitive4OctetAsTypeRouteOrigin) ToProto() (*ot return obj.Msg(), nil } -func (obj *bgpExtendedCommunityTransitive4OctetAsTypeRouteOrigin) FromProto(msg *otg.BgpExtendedCommunityTransitive4OctetAsTypeRouteOrigin) (BgpExtendedCommunityTransitive4OctetAsTypeRouteOrigin, error) { +func (obj *flowRSVPPathObjectsRecordRouteSubObjectType) FromProto(msg *otg.FlowRSVPPathObjectsRecordRouteSubObjectType) (FlowRSVPPathObjectsRecordRouteSubObjectType, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -313783,7 +361124,7 @@ func (obj *bgpExtendedCommunityTransitive4OctetAsTypeRouteOrigin) FromProto(msg return newObj, nil } -func (obj *bgpExtendedCommunityTransitive4OctetAsTypeRouteOrigin) ToPbText() (string, error) { +func (obj *flowRSVPPathObjectsRecordRouteSubObjectType) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -313795,12 +361136,12 @@ func (obj *bgpExtendedCommunityTransitive4OctetAsTypeRouteOrigin) ToPbText() (st return string(protoMarshal), nil } -func (obj *bgpExtendedCommunityTransitive4OctetAsTypeRouteOrigin) FromPbText(value string) error { +func (obj *flowRSVPPathObjectsRecordRouteSubObjectType) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj } - + obj.setNil() vErr := obj.validateToAndFrom() if vErr != nil { return vErr @@ -313808,7 +361149,7 @@ func (obj *bgpExtendedCommunityTransitive4OctetAsTypeRouteOrigin) FromPbText(val return retObj } -func (obj *bgpExtendedCommunityTransitive4OctetAsTypeRouteOrigin) ToYaml() (string, error) { +func (obj *flowRSVPPathObjectsRecordRouteSubObjectType) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -313829,7 +361170,7 @@ func (obj *bgpExtendedCommunityTransitive4OctetAsTypeRouteOrigin) ToYaml() (stri return string(data), nil } -func (obj *bgpExtendedCommunityTransitive4OctetAsTypeRouteOrigin) FromYaml(value string) error { +func (obj *flowRSVPPathObjectsRecordRouteSubObjectType) FromYaml(value string) error { if value == "" { value = "{}" } @@ -313846,7 +361187,7 @@ func (obj *bgpExtendedCommunityTransitive4OctetAsTypeRouteOrigin) FromYaml(value return fmt.Errorf("unmarshal error %s", strings.Replace( uError.Error(), "\u00a0", " ", -1)[7:]) } - + obj.setNil() vErr := obj.validateToAndFrom() if vErr != nil { return vErr @@ -313854,7 +361195,7 @@ func (obj *bgpExtendedCommunityTransitive4OctetAsTypeRouteOrigin) FromYaml(value return nil } -func (obj *bgpExtendedCommunityTransitive4OctetAsTypeRouteOrigin) ToJson() (string, error) { +func (obj *flowRSVPPathObjectsRecordRouteSubObjectType) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -313872,7 +361213,7 @@ func (obj *bgpExtendedCommunityTransitive4OctetAsTypeRouteOrigin) ToJson() (stri return string(data), nil } -func (obj *bgpExtendedCommunityTransitive4OctetAsTypeRouteOrigin) FromJson(value string) error { +func (obj *flowRSVPPathObjectsRecordRouteSubObjectType) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -313885,7 +361226,7 @@ func (obj *bgpExtendedCommunityTransitive4OctetAsTypeRouteOrigin) FromJson(value return fmt.Errorf("unmarshal error %s", strings.Replace( uError.Error(), "\u00a0", " ", -1)[7:]) } - + obj.setNil() err := obj.validateToAndFrom() if err != nil { return err @@ -313893,19 +361234,19 @@ func (obj *bgpExtendedCommunityTransitive4OctetAsTypeRouteOrigin) FromJson(value return nil } -func (obj *bgpExtendedCommunityTransitive4OctetAsTypeRouteOrigin) validateToAndFrom() error { +func (obj *flowRSVPPathObjectsRecordRouteSubObjectType) validateToAndFrom() error { // emptyVars() obj.validateObj(&obj.validation, true) return obj.validationResult() } -func (obj *bgpExtendedCommunityTransitive4OctetAsTypeRouteOrigin) Validate() error { +func (obj *flowRSVPPathObjectsRecordRouteSubObjectType) Validate() error { // emptyVars() obj.validateObj(&obj.validation, false) return obj.validationResult() } -func (obj *bgpExtendedCommunityTransitive4OctetAsTypeRouteOrigin) String() string { +func (obj *flowRSVPPathObjectsRecordRouteSubObjectType) String() string { str, err := obj.ToYaml() if err != nil { return err.Error() @@ -313913,12 +361254,12 @@ func (obj *bgpExtendedCommunityTransitive4OctetAsTypeRouteOrigin) String() strin return str } -func (obj *bgpExtendedCommunityTransitive4OctetAsTypeRouteOrigin) Clone() (BgpExtendedCommunityTransitive4OctetAsTypeRouteOrigin, error) { +func (obj *flowRSVPPathObjectsRecordRouteSubObjectType) Clone() (FlowRSVPPathObjectsRecordRouteSubObjectType, error) { vErr := obj.Validate() if vErr != nil { return nil, vErr } - newObj := NewBgpExtendedCommunityTransitive4OctetAsTypeRouteOrigin() + newObj := NewFlowRSVPPathObjectsRecordRouteSubObjectType() data, err := proto.Marshal(obj.Msg()) if err != nil { return nil, err @@ -313930,148 +361271,226 @@ func (obj *bgpExtendedCommunityTransitive4OctetAsTypeRouteOrigin) Clone() (BgpEx return newObj, nil } -// BgpExtendedCommunityTransitive4OctetAsTypeRouteOrigin is the Route Origin Community identifies one or more routers that inject a set of routes (that carry this Community) into BGP. It is sent with sub-type as 0x03. -type BgpExtendedCommunityTransitive4OctetAsTypeRouteOrigin interface { +func (obj *flowRSVPPathObjectsRecordRouteSubObjectType) setNil() { + obj.ipv4AddressHolder = nil + obj.labelHolder = nil + obj.validationErrors = nil + obj.warnings = nil + obj.constraints = make(map[string]map[string]Constraints) +} + +// FlowRSVPPathObjectsRecordRouteSubObjectType is currently supported subobjects are IPv4 address(1) and Label(3). +type FlowRSVPPathObjectsRecordRouteSubObjectType interface { Validation - // Msg marshals BgpExtendedCommunityTransitive4OctetAsTypeRouteOrigin to protobuf object *otg.BgpExtendedCommunityTransitive4OctetAsTypeRouteOrigin + // Msg marshals FlowRSVPPathObjectsRecordRouteSubObjectType to protobuf object *otg.FlowRSVPPathObjectsRecordRouteSubObjectType // and doesn't set defaults - Msg() *otg.BgpExtendedCommunityTransitive4OctetAsTypeRouteOrigin - // SetMsg unmarshals BgpExtendedCommunityTransitive4OctetAsTypeRouteOrigin from protobuf object *otg.BgpExtendedCommunityTransitive4OctetAsTypeRouteOrigin + Msg() *otg.FlowRSVPPathObjectsRecordRouteSubObjectType + // SetMsg unmarshals FlowRSVPPathObjectsRecordRouteSubObjectType from protobuf object *otg.FlowRSVPPathObjectsRecordRouteSubObjectType // and doesn't set defaults - SetMsg(*otg.BgpExtendedCommunityTransitive4OctetAsTypeRouteOrigin) BgpExtendedCommunityTransitive4OctetAsTypeRouteOrigin - // ToProto marshals BgpExtendedCommunityTransitive4OctetAsTypeRouteOrigin to protobuf object *otg.BgpExtendedCommunityTransitive4OctetAsTypeRouteOrigin - ToProto() (*otg.BgpExtendedCommunityTransitive4OctetAsTypeRouteOrigin, error) - // ToPbText marshals BgpExtendedCommunityTransitive4OctetAsTypeRouteOrigin to protobuf text + SetMsg(*otg.FlowRSVPPathObjectsRecordRouteSubObjectType) FlowRSVPPathObjectsRecordRouteSubObjectType + // ToProto marshals FlowRSVPPathObjectsRecordRouteSubObjectType to protobuf object *otg.FlowRSVPPathObjectsRecordRouteSubObjectType + ToProto() (*otg.FlowRSVPPathObjectsRecordRouteSubObjectType, error) + // ToPbText marshals FlowRSVPPathObjectsRecordRouteSubObjectType to protobuf text ToPbText() (string, error) - // ToYaml marshals BgpExtendedCommunityTransitive4OctetAsTypeRouteOrigin to YAML text + // ToYaml marshals FlowRSVPPathObjectsRecordRouteSubObjectType to YAML text ToYaml() (string, error) - // ToJson marshals BgpExtendedCommunityTransitive4OctetAsTypeRouteOrigin to JSON text + // ToJson marshals FlowRSVPPathObjectsRecordRouteSubObjectType to JSON text ToJson() (string, error) - // FromProto unmarshals BgpExtendedCommunityTransitive4OctetAsTypeRouteOrigin from protobuf object *otg.BgpExtendedCommunityTransitive4OctetAsTypeRouteOrigin - FromProto(msg *otg.BgpExtendedCommunityTransitive4OctetAsTypeRouteOrigin) (BgpExtendedCommunityTransitive4OctetAsTypeRouteOrigin, error) - // FromPbText unmarshals BgpExtendedCommunityTransitive4OctetAsTypeRouteOrigin from protobuf text + // FromProto unmarshals FlowRSVPPathObjectsRecordRouteSubObjectType from protobuf object *otg.FlowRSVPPathObjectsRecordRouteSubObjectType + FromProto(msg *otg.FlowRSVPPathObjectsRecordRouteSubObjectType) (FlowRSVPPathObjectsRecordRouteSubObjectType, error) + // FromPbText unmarshals FlowRSVPPathObjectsRecordRouteSubObjectType from protobuf text FromPbText(value string) error - // FromYaml unmarshals BgpExtendedCommunityTransitive4OctetAsTypeRouteOrigin from YAML text + // FromYaml unmarshals FlowRSVPPathObjectsRecordRouteSubObjectType from YAML text FromYaml(value string) error - // FromJson unmarshals BgpExtendedCommunityTransitive4OctetAsTypeRouteOrigin from JSON text + // FromJson unmarshals FlowRSVPPathObjectsRecordRouteSubObjectType from JSON text FromJson(value string) error - // Validate validates BgpExtendedCommunityTransitive4OctetAsTypeRouteOrigin + // Validate validates FlowRSVPPathObjectsRecordRouteSubObjectType Validate() error // A stringer function String() string // Clones the object - Clone() (BgpExtendedCommunityTransitive4OctetAsTypeRouteOrigin, error) + Clone() (FlowRSVPPathObjectsRecordRouteSubObjectType, error) validateToAndFrom() error validateObj(vObj *validation, set_default bool) setDefault() - // Global4ByteAs returns uint32, set in BgpExtendedCommunityTransitive4OctetAsTypeRouteOrigin. - Global4ByteAs() uint32 - // SetGlobal4ByteAs assigns uint32 provided by user to BgpExtendedCommunityTransitive4OctetAsTypeRouteOrigin - SetGlobal4ByteAs(value uint32) BgpExtendedCommunityTransitive4OctetAsTypeRouteOrigin - // HasGlobal4ByteAs checks if Global4ByteAs has been set in BgpExtendedCommunityTransitive4OctetAsTypeRouteOrigin - HasGlobal4ByteAs() bool - // Local2ByteAdmin returns uint32, set in BgpExtendedCommunityTransitive4OctetAsTypeRouteOrigin. - Local2ByteAdmin() uint32 - // SetLocal2ByteAdmin assigns uint32 provided by user to BgpExtendedCommunityTransitive4OctetAsTypeRouteOrigin - SetLocal2ByteAdmin(value uint32) BgpExtendedCommunityTransitive4OctetAsTypeRouteOrigin - // HasLocal2ByteAdmin checks if Local2ByteAdmin has been set in BgpExtendedCommunityTransitive4OctetAsTypeRouteOrigin - HasLocal2ByteAdmin() bool + // Choice returns FlowRSVPPathObjectsRecordRouteSubObjectTypeChoiceEnum, set in FlowRSVPPathObjectsRecordRouteSubObjectType + Choice() FlowRSVPPathObjectsRecordRouteSubObjectTypeChoiceEnum + // SetChoice assigns FlowRSVPPathObjectsRecordRouteSubObjectTypeChoiceEnum provided by user to FlowRSVPPathObjectsRecordRouteSubObjectType + SetChoice(value FlowRSVPPathObjectsRecordRouteSubObjectTypeChoiceEnum) FlowRSVPPathObjectsRecordRouteSubObjectType + // HasChoice checks if Choice has been set in FlowRSVPPathObjectsRecordRouteSubObjectType + HasChoice() bool + // Ipv4Address returns FlowRSVPPathRecordRouteType1Ipv4Address, set in FlowRSVPPathObjectsRecordRouteSubObjectType. + // FlowRSVPPathRecordRouteType1Ipv4Address is class = RECORD_ROUTE, Type1 ROUTE_RECORD C-Type = 1 Subobject: IPv4 Address, C-Type: 1 + Ipv4Address() FlowRSVPPathRecordRouteType1Ipv4Address + // SetIpv4Address assigns FlowRSVPPathRecordRouteType1Ipv4Address provided by user to FlowRSVPPathObjectsRecordRouteSubObjectType. + // FlowRSVPPathRecordRouteType1Ipv4Address is class = RECORD_ROUTE, Type1 ROUTE_RECORD C-Type = 1 Subobject: IPv4 Address, C-Type: 1 + SetIpv4Address(value FlowRSVPPathRecordRouteType1Ipv4Address) FlowRSVPPathObjectsRecordRouteSubObjectType + // HasIpv4Address checks if Ipv4Address has been set in FlowRSVPPathObjectsRecordRouteSubObjectType + HasIpv4Address() bool + // Label returns FlowRSVPPathRecordRouteType1Label, set in FlowRSVPPathObjectsRecordRouteSubObjectType. + // FlowRSVPPathRecordRouteType1Label is class = RECORD_ROUTE, Type1 ROUTE_RECORD C-Type = 1 Subobject: Label, C-Type: 3 + Label() FlowRSVPPathRecordRouteType1Label + // SetLabel assigns FlowRSVPPathRecordRouteType1Label provided by user to FlowRSVPPathObjectsRecordRouteSubObjectType. + // FlowRSVPPathRecordRouteType1Label is class = RECORD_ROUTE, Type1 ROUTE_RECORD C-Type = 1 Subobject: Label, C-Type: 3 + SetLabel(value FlowRSVPPathRecordRouteType1Label) FlowRSVPPathObjectsRecordRouteSubObjectType + // HasLabel checks if Label has been set in FlowRSVPPathObjectsRecordRouteSubObjectType + HasLabel() bool + setNil() } -// The four octet IANA assigned AS value assigned to the Autonomous System. -// Global4ByteAs returns a uint32 -func (obj *bgpExtendedCommunityTransitive4OctetAsTypeRouteOrigin) Global4ByteAs() uint32 { +type FlowRSVPPathObjectsRecordRouteSubObjectTypeChoiceEnum string - return *obj.obj.Global_4ByteAs +// Enum of Choice on FlowRSVPPathObjectsRecordRouteSubObjectType +var FlowRSVPPathObjectsRecordRouteSubObjectTypeChoice = struct { + IPV4_ADDRESS FlowRSVPPathObjectsRecordRouteSubObjectTypeChoiceEnum + LABEL FlowRSVPPathObjectsRecordRouteSubObjectTypeChoiceEnum +}{ + IPV4_ADDRESS: FlowRSVPPathObjectsRecordRouteSubObjectTypeChoiceEnum("ipv4_address"), + LABEL: FlowRSVPPathObjectsRecordRouteSubObjectTypeChoiceEnum("label"), +} +func (obj *flowRSVPPathObjectsRecordRouteSubObjectType) Choice() FlowRSVPPathObjectsRecordRouteSubObjectTypeChoiceEnum { + return FlowRSVPPathObjectsRecordRouteSubObjectTypeChoiceEnum(obj.obj.Choice.Enum().String()) } -// The four octet IANA assigned AS value assigned to the Autonomous System. -// Global4ByteAs returns a uint32 -func (obj *bgpExtendedCommunityTransitive4OctetAsTypeRouteOrigin) HasGlobal4ByteAs() bool { - return obj.obj.Global_4ByteAs != nil +// description is TBD +// Choice returns a string +func (obj *flowRSVPPathObjectsRecordRouteSubObjectType) HasChoice() bool { + return obj.obj.Choice != nil } -// The four octet IANA assigned AS value assigned to the Autonomous System. -// SetGlobal4ByteAs sets the uint32 value in the BgpExtendedCommunityTransitive4OctetAsTypeRouteOrigin object -func (obj *bgpExtendedCommunityTransitive4OctetAsTypeRouteOrigin) SetGlobal4ByteAs(value uint32) BgpExtendedCommunityTransitive4OctetAsTypeRouteOrigin { +func (obj *flowRSVPPathObjectsRecordRouteSubObjectType) SetChoice(value FlowRSVPPathObjectsRecordRouteSubObjectTypeChoiceEnum) FlowRSVPPathObjectsRecordRouteSubObjectType { + intValue, ok := otg.FlowRSVPPathObjectsRecordRouteSubObjectType_Choice_Enum_value[string(value)] + if !ok { + obj.validationErrors = append(obj.validationErrors, fmt.Sprintf( + "%s is not a valid choice on FlowRSVPPathObjectsRecordRouteSubObjectTypeChoiceEnum", string(value))) + return obj + } + enumValue := otg.FlowRSVPPathObjectsRecordRouteSubObjectType_Choice_Enum(intValue) + obj.obj.Choice = &enumValue + obj.obj.Label = nil + obj.labelHolder = nil + obj.obj.Ipv4Address = nil + obj.ipv4AddressHolder = nil + + if value == FlowRSVPPathObjectsRecordRouteSubObjectTypeChoice.IPV4_ADDRESS { + obj.obj.Ipv4Address = NewFlowRSVPPathRecordRouteType1Ipv4Address().Msg() + } + + if value == FlowRSVPPathObjectsRecordRouteSubObjectTypeChoice.LABEL { + obj.obj.Label = NewFlowRSVPPathRecordRouteType1Label().Msg() + } - obj.obj.Global_4ByteAs = &value return obj } -// The Local Administrator sub-field contains a number from a numbering space that is administered by the organization to which the Autonomous System number carried in the Global Administrator sub-field has been assigned by an appropriate authority. -// Local2ByteAdmin returns a uint32 -func (obj *bgpExtendedCommunityTransitive4OctetAsTypeRouteOrigin) Local2ByteAdmin() uint32 { +// description is TBD +// Ipv4Address returns a FlowRSVPPathRecordRouteType1Ipv4Address +func (obj *flowRSVPPathObjectsRecordRouteSubObjectType) Ipv4Address() FlowRSVPPathRecordRouteType1Ipv4Address { + if obj.obj.Ipv4Address == nil { + obj.SetChoice(FlowRSVPPathObjectsRecordRouteSubObjectTypeChoice.IPV4_ADDRESS) + } + if obj.ipv4AddressHolder == nil { + obj.ipv4AddressHolder = &flowRSVPPathRecordRouteType1Ipv4Address{obj: obj.obj.Ipv4Address} + } + return obj.ipv4AddressHolder +} - return *obj.obj.Local_2ByteAdmin +// description is TBD +// Ipv4Address returns a FlowRSVPPathRecordRouteType1Ipv4Address +func (obj *flowRSVPPathObjectsRecordRouteSubObjectType) HasIpv4Address() bool { + return obj.obj.Ipv4Address != nil +} + +// description is TBD +// SetIpv4Address sets the FlowRSVPPathRecordRouteType1Ipv4Address value in the FlowRSVPPathObjectsRecordRouteSubObjectType object +func (obj *flowRSVPPathObjectsRecordRouteSubObjectType) SetIpv4Address(value FlowRSVPPathRecordRouteType1Ipv4Address) FlowRSVPPathObjectsRecordRouteSubObjectType { + obj.SetChoice(FlowRSVPPathObjectsRecordRouteSubObjectTypeChoice.IPV4_ADDRESS) + obj.ipv4AddressHolder = nil + obj.obj.Ipv4Address = value.Msg() + return obj } -// The Local Administrator sub-field contains a number from a numbering space that is administered by the organization to which the Autonomous System number carried in the Global Administrator sub-field has been assigned by an appropriate authority. -// Local2ByteAdmin returns a uint32 -func (obj *bgpExtendedCommunityTransitive4OctetAsTypeRouteOrigin) HasLocal2ByteAdmin() bool { - return obj.obj.Local_2ByteAdmin != nil +// description is TBD +// Label returns a FlowRSVPPathRecordRouteType1Label +func (obj *flowRSVPPathObjectsRecordRouteSubObjectType) Label() FlowRSVPPathRecordRouteType1Label { + if obj.obj.Label == nil { + obj.SetChoice(FlowRSVPPathObjectsRecordRouteSubObjectTypeChoice.LABEL) + } + if obj.labelHolder == nil { + obj.labelHolder = &flowRSVPPathRecordRouteType1Label{obj: obj.obj.Label} + } + return obj.labelHolder } -// The Local Administrator sub-field contains a number from a numbering space that is administered by the organization to which the Autonomous System number carried in the Global Administrator sub-field has been assigned by an appropriate authority. -// SetLocal2ByteAdmin sets the uint32 value in the BgpExtendedCommunityTransitive4OctetAsTypeRouteOrigin object -func (obj *bgpExtendedCommunityTransitive4OctetAsTypeRouteOrigin) SetLocal2ByteAdmin(value uint32) BgpExtendedCommunityTransitive4OctetAsTypeRouteOrigin { +// description is TBD +// Label returns a FlowRSVPPathRecordRouteType1Label +func (obj *flowRSVPPathObjectsRecordRouteSubObjectType) HasLabel() bool { + return obj.obj.Label != nil +} + +// description is TBD +// SetLabel sets the FlowRSVPPathRecordRouteType1Label value in the FlowRSVPPathObjectsRecordRouteSubObjectType object +func (obj *flowRSVPPathObjectsRecordRouteSubObjectType) SetLabel(value FlowRSVPPathRecordRouteType1Label) FlowRSVPPathObjectsRecordRouteSubObjectType { + obj.SetChoice(FlowRSVPPathObjectsRecordRouteSubObjectTypeChoice.LABEL) + obj.labelHolder = nil + obj.obj.Label = value.Msg() - obj.obj.Local_2ByteAdmin = &value return obj } -func (obj *bgpExtendedCommunityTransitive4OctetAsTypeRouteOrigin) validateObj(vObj *validation, set_default bool) { +func (obj *flowRSVPPathObjectsRecordRouteSubObjectType) validateObj(vObj *validation, set_default bool) { if set_default { obj.setDefault() } - if obj.obj.Local_2ByteAdmin != nil { + if obj.obj.Ipv4Address != nil { - if *obj.obj.Local_2ByteAdmin > 65535 { - vObj.validationErrors = append( - vObj.validationErrors, - fmt.Sprintf("0 <= BgpExtendedCommunityTransitive4OctetAsTypeRouteOrigin.Local_2ByteAdmin <= 65535 but Got %d", *obj.obj.Local_2ByteAdmin)) - } + obj.Ipv4Address().validateObj(vObj, set_default) + } + + if obj.obj.Label != nil { + obj.Label().validateObj(vObj, set_default) } } -func (obj *bgpExtendedCommunityTransitive4OctetAsTypeRouteOrigin) setDefault() { - if obj.obj.Global_4ByteAs == nil { - obj.SetGlobal4ByteAs(100) - } - if obj.obj.Local_2ByteAdmin == nil { - obj.SetLocal2ByteAdmin(1) +func (obj *flowRSVPPathObjectsRecordRouteSubObjectType) setDefault() { + if obj.obj.Choice == nil { + obj.SetChoice(FlowRSVPPathObjectsRecordRouteSubObjectTypeChoice.IPV4_ADDRESS) + } } -// ***** BgpExtendedCommunityTransitiveOpaqueTypeColor ***** -type bgpExtendedCommunityTransitiveOpaqueTypeColor struct { +// ***** FlowRSVPPathExplicitRouteType1Ipv4Prefix ***** +type flowRSVPPathExplicitRouteType1Ipv4Prefix struct { validation - obj *otg.BgpExtendedCommunityTransitiveOpaqueTypeColor + obj *otg.FlowRSVPPathExplicitRouteType1Ipv4Prefix + lBitHolder PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixLBit + lengthHolder FlowRSVPExplicitRouteLength + ipv4AddressHolder PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixIpv4Address } -func NewBgpExtendedCommunityTransitiveOpaqueTypeColor() BgpExtendedCommunityTransitiveOpaqueTypeColor { - obj := bgpExtendedCommunityTransitiveOpaqueTypeColor{obj: &otg.BgpExtendedCommunityTransitiveOpaqueTypeColor{}} +func NewFlowRSVPPathExplicitRouteType1Ipv4Prefix() FlowRSVPPathExplicitRouteType1Ipv4Prefix { + obj := flowRSVPPathExplicitRouteType1Ipv4Prefix{obj: &otg.FlowRSVPPathExplicitRouteType1Ipv4Prefix{}} obj.setDefault() return &obj } -func (obj *bgpExtendedCommunityTransitiveOpaqueTypeColor) Msg() *otg.BgpExtendedCommunityTransitiveOpaqueTypeColor { +func (obj *flowRSVPPathExplicitRouteType1Ipv4Prefix) Msg() *otg.FlowRSVPPathExplicitRouteType1Ipv4Prefix { return obj.obj } -func (obj *bgpExtendedCommunityTransitiveOpaqueTypeColor) SetMsg(msg *otg.BgpExtendedCommunityTransitiveOpaqueTypeColor) BgpExtendedCommunityTransitiveOpaqueTypeColor { - +func (obj *flowRSVPPathExplicitRouteType1Ipv4Prefix) SetMsg(msg *otg.FlowRSVPPathExplicitRouteType1Ipv4Prefix) FlowRSVPPathExplicitRouteType1Ipv4Prefix { + obj.setNil() proto.Merge(obj.obj, msg) return obj } -func (obj *bgpExtendedCommunityTransitiveOpaqueTypeColor) ToProto() (*otg.BgpExtendedCommunityTransitiveOpaqueTypeColor, error) { +func (obj *flowRSVPPathExplicitRouteType1Ipv4Prefix) ToProto() (*otg.FlowRSVPPathExplicitRouteType1Ipv4Prefix, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -314079,7 +361498,7 @@ func (obj *bgpExtendedCommunityTransitiveOpaqueTypeColor) ToProto() (*otg.BgpExt return obj.Msg(), nil } -func (obj *bgpExtendedCommunityTransitiveOpaqueTypeColor) FromProto(msg *otg.BgpExtendedCommunityTransitiveOpaqueTypeColor) (BgpExtendedCommunityTransitiveOpaqueTypeColor, error) { +func (obj *flowRSVPPathExplicitRouteType1Ipv4Prefix) FromProto(msg *otg.FlowRSVPPathExplicitRouteType1Ipv4Prefix) (FlowRSVPPathExplicitRouteType1Ipv4Prefix, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -314088,7 +361507,7 @@ func (obj *bgpExtendedCommunityTransitiveOpaqueTypeColor) FromProto(msg *otg.Bgp return newObj, nil } -func (obj *bgpExtendedCommunityTransitiveOpaqueTypeColor) ToPbText() (string, error) { +func (obj *flowRSVPPathExplicitRouteType1Ipv4Prefix) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -314100,12 +361519,12 @@ func (obj *bgpExtendedCommunityTransitiveOpaqueTypeColor) ToPbText() (string, er return string(protoMarshal), nil } -func (obj *bgpExtendedCommunityTransitiveOpaqueTypeColor) FromPbText(value string) error { +func (obj *flowRSVPPathExplicitRouteType1Ipv4Prefix) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj } - + obj.setNil() vErr := obj.validateToAndFrom() if vErr != nil { return vErr @@ -314113,7 +361532,7 @@ func (obj *bgpExtendedCommunityTransitiveOpaqueTypeColor) FromPbText(value strin return retObj } -func (obj *bgpExtendedCommunityTransitiveOpaqueTypeColor) ToYaml() (string, error) { +func (obj *flowRSVPPathExplicitRouteType1Ipv4Prefix) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -314134,7 +361553,7 @@ func (obj *bgpExtendedCommunityTransitiveOpaqueTypeColor) ToYaml() (string, erro return string(data), nil } -func (obj *bgpExtendedCommunityTransitiveOpaqueTypeColor) FromYaml(value string) error { +func (obj *flowRSVPPathExplicitRouteType1Ipv4Prefix) FromYaml(value string) error { if value == "" { value = "{}" } @@ -314151,7 +361570,7 @@ func (obj *bgpExtendedCommunityTransitiveOpaqueTypeColor) FromYaml(value string) return fmt.Errorf("unmarshal error %s", strings.Replace( uError.Error(), "\u00a0", " ", -1)[7:]) } - + obj.setNil() vErr := obj.validateToAndFrom() if vErr != nil { return vErr @@ -314159,7 +361578,7 @@ func (obj *bgpExtendedCommunityTransitiveOpaqueTypeColor) FromYaml(value string) return nil } -func (obj *bgpExtendedCommunityTransitiveOpaqueTypeColor) ToJson() (string, error) { +func (obj *flowRSVPPathExplicitRouteType1Ipv4Prefix) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -314177,7 +361596,7 @@ func (obj *bgpExtendedCommunityTransitiveOpaqueTypeColor) ToJson() (string, erro return string(data), nil } -func (obj *bgpExtendedCommunityTransitiveOpaqueTypeColor) FromJson(value string) error { +func (obj *flowRSVPPathExplicitRouteType1Ipv4Prefix) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -314190,7 +361609,7 @@ func (obj *bgpExtendedCommunityTransitiveOpaqueTypeColor) FromJson(value string) return fmt.Errorf("unmarshal error %s", strings.Replace( uError.Error(), "\u00a0", " ", -1)[7:]) } - + obj.setNil() err := obj.validateToAndFrom() if err != nil { return err @@ -314198,19 +361617,19 @@ func (obj *bgpExtendedCommunityTransitiveOpaqueTypeColor) FromJson(value string) return nil } -func (obj *bgpExtendedCommunityTransitiveOpaqueTypeColor) validateToAndFrom() error { +func (obj *flowRSVPPathExplicitRouteType1Ipv4Prefix) validateToAndFrom() error { // emptyVars() obj.validateObj(&obj.validation, true) return obj.validationResult() } -func (obj *bgpExtendedCommunityTransitiveOpaqueTypeColor) Validate() error { +func (obj *flowRSVPPathExplicitRouteType1Ipv4Prefix) Validate() error { // emptyVars() obj.validateObj(&obj.validation, false) return obj.validationResult() } -func (obj *bgpExtendedCommunityTransitiveOpaqueTypeColor) String() string { +func (obj *flowRSVPPathExplicitRouteType1Ipv4Prefix) String() string { str, err := obj.ToYaml() if err != nil { return err.Error() @@ -314218,12 +361637,12 @@ func (obj *bgpExtendedCommunityTransitiveOpaqueTypeColor) String() string { return str } -func (obj *bgpExtendedCommunityTransitiveOpaqueTypeColor) Clone() (BgpExtendedCommunityTransitiveOpaqueTypeColor, error) { +func (obj *flowRSVPPathExplicitRouteType1Ipv4Prefix) Clone() (FlowRSVPPathExplicitRouteType1Ipv4Prefix, error) { vErr := obj.Validate() if vErr != nil { return nil, vErr } - newObj := NewBgpExtendedCommunityTransitiveOpaqueTypeColor() + newObj := NewFlowRSVPPathExplicitRouteType1Ipv4Prefix() data, err := proto.Marshal(obj.Msg()) if err != nil { return nil, err @@ -314235,148 +361654,253 @@ func (obj *bgpExtendedCommunityTransitiveOpaqueTypeColor) Clone() (BgpExtendedCo return newObj, nil } -// BgpExtendedCommunityTransitiveOpaqueTypeColor is the Color Community contains locally administrator defined 'color' value which is used in conjunction with Encapsulation attribute to decide whether a data packet can be transmitted on a certain tunnel or not. It is defined in RFC9012 and sent with sub-type as 0x0b. -type BgpExtendedCommunityTransitiveOpaqueTypeColor interface { +func (obj *flowRSVPPathExplicitRouteType1Ipv4Prefix) setNil() { + obj.lBitHolder = nil + obj.lengthHolder = nil + obj.ipv4AddressHolder = nil + obj.validationErrors = nil + obj.warnings = nil + obj.constraints = make(map[string]map[string]Constraints) +} + +// FlowRSVPPathExplicitRouteType1Ipv4Prefix is class = EXPLICIT_ROUTE, Type1 ROUTE_RECORD C-Type = 1 Subobject: IPv4 Prefix, C-Type: 1 +type FlowRSVPPathExplicitRouteType1Ipv4Prefix interface { Validation - // Msg marshals BgpExtendedCommunityTransitiveOpaqueTypeColor to protobuf object *otg.BgpExtendedCommunityTransitiveOpaqueTypeColor + // Msg marshals FlowRSVPPathExplicitRouteType1Ipv4Prefix to protobuf object *otg.FlowRSVPPathExplicitRouteType1Ipv4Prefix // and doesn't set defaults - Msg() *otg.BgpExtendedCommunityTransitiveOpaqueTypeColor - // SetMsg unmarshals BgpExtendedCommunityTransitiveOpaqueTypeColor from protobuf object *otg.BgpExtendedCommunityTransitiveOpaqueTypeColor + Msg() *otg.FlowRSVPPathExplicitRouteType1Ipv4Prefix + // SetMsg unmarshals FlowRSVPPathExplicitRouteType1Ipv4Prefix from protobuf object *otg.FlowRSVPPathExplicitRouteType1Ipv4Prefix // and doesn't set defaults - SetMsg(*otg.BgpExtendedCommunityTransitiveOpaqueTypeColor) BgpExtendedCommunityTransitiveOpaqueTypeColor - // ToProto marshals BgpExtendedCommunityTransitiveOpaqueTypeColor to protobuf object *otg.BgpExtendedCommunityTransitiveOpaqueTypeColor - ToProto() (*otg.BgpExtendedCommunityTransitiveOpaqueTypeColor, error) - // ToPbText marshals BgpExtendedCommunityTransitiveOpaqueTypeColor to protobuf text + SetMsg(*otg.FlowRSVPPathExplicitRouteType1Ipv4Prefix) FlowRSVPPathExplicitRouteType1Ipv4Prefix + // ToProto marshals FlowRSVPPathExplicitRouteType1Ipv4Prefix to protobuf object *otg.FlowRSVPPathExplicitRouteType1Ipv4Prefix + ToProto() (*otg.FlowRSVPPathExplicitRouteType1Ipv4Prefix, error) + // ToPbText marshals FlowRSVPPathExplicitRouteType1Ipv4Prefix to protobuf text ToPbText() (string, error) - // ToYaml marshals BgpExtendedCommunityTransitiveOpaqueTypeColor to YAML text + // ToYaml marshals FlowRSVPPathExplicitRouteType1Ipv4Prefix to YAML text ToYaml() (string, error) - // ToJson marshals BgpExtendedCommunityTransitiveOpaqueTypeColor to JSON text + // ToJson marshals FlowRSVPPathExplicitRouteType1Ipv4Prefix to JSON text ToJson() (string, error) - // FromProto unmarshals BgpExtendedCommunityTransitiveOpaqueTypeColor from protobuf object *otg.BgpExtendedCommunityTransitiveOpaqueTypeColor - FromProto(msg *otg.BgpExtendedCommunityTransitiveOpaqueTypeColor) (BgpExtendedCommunityTransitiveOpaqueTypeColor, error) - // FromPbText unmarshals BgpExtendedCommunityTransitiveOpaqueTypeColor from protobuf text + // FromProto unmarshals FlowRSVPPathExplicitRouteType1Ipv4Prefix from protobuf object *otg.FlowRSVPPathExplicitRouteType1Ipv4Prefix + FromProto(msg *otg.FlowRSVPPathExplicitRouteType1Ipv4Prefix) (FlowRSVPPathExplicitRouteType1Ipv4Prefix, error) + // FromPbText unmarshals FlowRSVPPathExplicitRouteType1Ipv4Prefix from protobuf text FromPbText(value string) error - // FromYaml unmarshals BgpExtendedCommunityTransitiveOpaqueTypeColor from YAML text + // FromYaml unmarshals FlowRSVPPathExplicitRouteType1Ipv4Prefix from YAML text FromYaml(value string) error - // FromJson unmarshals BgpExtendedCommunityTransitiveOpaqueTypeColor from JSON text + // FromJson unmarshals FlowRSVPPathExplicitRouteType1Ipv4Prefix from JSON text FromJson(value string) error - // Validate validates BgpExtendedCommunityTransitiveOpaqueTypeColor + // Validate validates FlowRSVPPathExplicitRouteType1Ipv4Prefix Validate() error // A stringer function String() string // Clones the object - Clone() (BgpExtendedCommunityTransitiveOpaqueTypeColor, error) + Clone() (FlowRSVPPathExplicitRouteType1Ipv4Prefix, error) validateToAndFrom() error validateObj(vObj *validation, set_default bool) setDefault() - // Flags returns uint32, set in BgpExtendedCommunityTransitiveOpaqueTypeColor. - Flags() uint32 - // SetFlags assigns uint32 provided by user to BgpExtendedCommunityTransitiveOpaqueTypeColor - SetFlags(value uint32) BgpExtendedCommunityTransitiveOpaqueTypeColor - // HasFlags checks if Flags has been set in BgpExtendedCommunityTransitiveOpaqueTypeColor - HasFlags() bool - // Color returns uint32, set in BgpExtendedCommunityTransitiveOpaqueTypeColor. - Color() uint32 - // SetColor assigns uint32 provided by user to BgpExtendedCommunityTransitiveOpaqueTypeColor - SetColor(value uint32) BgpExtendedCommunityTransitiveOpaqueTypeColor - // HasColor checks if Color has been set in BgpExtendedCommunityTransitiveOpaqueTypeColor - HasColor() bool + // LBit returns PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixLBit, set in FlowRSVPPathExplicitRouteType1Ipv4Prefix. + // PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixLBit is the L bit is an attribute of the subobject.The L bit is set if the subobject represents a loose hop in the explicit route. If the bit is not set, the subobject represents a strict hop in the explicit route. + LBit() PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixLBit + // SetLBit assigns PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixLBit provided by user to FlowRSVPPathExplicitRouteType1Ipv4Prefix. + // PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixLBit is the L bit is an attribute of the subobject.The L bit is set if the subobject represents a loose hop in the explicit route. If the bit is not set, the subobject represents a strict hop in the explicit route. + SetLBit(value PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixLBit) FlowRSVPPathExplicitRouteType1Ipv4Prefix + // HasLBit checks if LBit has been set in FlowRSVPPathExplicitRouteType1Ipv4Prefix + HasLBit() bool + // Length returns FlowRSVPExplicitRouteLength, set in FlowRSVPPathExplicitRouteType1Ipv4Prefix. + // FlowRSVPExplicitRouteLength is description is TBD + Length() FlowRSVPExplicitRouteLength + // SetLength assigns FlowRSVPExplicitRouteLength provided by user to FlowRSVPPathExplicitRouteType1Ipv4Prefix. + // FlowRSVPExplicitRouteLength is description is TBD + SetLength(value FlowRSVPExplicitRouteLength) FlowRSVPPathExplicitRouteType1Ipv4Prefix + // HasLength checks if Length has been set in FlowRSVPPathExplicitRouteType1Ipv4Prefix + HasLength() bool + // Ipv4Address returns PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixIpv4Address, set in FlowRSVPPathExplicitRouteType1Ipv4Prefix. + // PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixIpv4Address is this IPv4 address is treated as a prefix based on the prefix length value below. Bits beyond the prefix are ignored on receipt and SHOULD be set to zero on transmission. + Ipv4Address() PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixIpv4Address + // SetIpv4Address assigns PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixIpv4Address provided by user to FlowRSVPPathExplicitRouteType1Ipv4Prefix. + // PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixIpv4Address is this IPv4 address is treated as a prefix based on the prefix length value below. Bits beyond the prefix are ignored on receipt and SHOULD be set to zero on transmission. + SetIpv4Address(value PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixIpv4Address) FlowRSVPPathExplicitRouteType1Ipv4Prefix + // HasIpv4Address checks if Ipv4Address has been set in FlowRSVPPathExplicitRouteType1Ipv4Prefix + HasIpv4Address() bool + // Prefix returns uint32, set in FlowRSVPPathExplicitRouteType1Ipv4Prefix. + Prefix() uint32 + // SetPrefix assigns uint32 provided by user to FlowRSVPPathExplicitRouteType1Ipv4Prefix + SetPrefix(value uint32) FlowRSVPPathExplicitRouteType1Ipv4Prefix + // HasPrefix checks if Prefix has been set in FlowRSVPPathExplicitRouteType1Ipv4Prefix + HasPrefix() bool + setNil() } -// Two octet flag values. -// Flags returns a uint32 -func (obj *bgpExtendedCommunityTransitiveOpaqueTypeColor) Flags() uint32 { +// description is TBD +// LBit returns a PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixLBit +func (obj *flowRSVPPathExplicitRouteType1Ipv4Prefix) LBit() PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixLBit { + if obj.obj.LBit == nil { + obj.obj.LBit = NewPatternFlowRSVPPathExplicitRouteType1Ipv4PrefixLBit().Msg() + } + if obj.lBitHolder == nil { + obj.lBitHolder = &patternFlowRSVPPathExplicitRouteType1Ipv4PrefixLBit{obj: obj.obj.LBit} + } + return obj.lBitHolder +} - return *obj.obj.Flags +// description is TBD +// LBit returns a PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixLBit +func (obj *flowRSVPPathExplicitRouteType1Ipv4Prefix) HasLBit() bool { + return obj.obj.LBit != nil +} +// description is TBD +// SetLBit sets the PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixLBit value in the FlowRSVPPathExplicitRouteType1Ipv4Prefix object +func (obj *flowRSVPPathExplicitRouteType1Ipv4Prefix) SetLBit(value PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixLBit) FlowRSVPPathExplicitRouteType1Ipv4Prefix { + + obj.lBitHolder = nil + obj.obj.LBit = value.Msg() + + return obj } -// Two octet flag values. -// Flags returns a uint32 -func (obj *bgpExtendedCommunityTransitiveOpaqueTypeColor) HasFlags() bool { - return obj.obj.Flags != nil +// The Length contains the total length of the subobject in bytes,including L ,Type and Length fields. The Length MUST be atleast 4, and MUST be a multiple of 4. +// Length returns a FlowRSVPExplicitRouteLength +func (obj *flowRSVPPathExplicitRouteType1Ipv4Prefix) Length() FlowRSVPExplicitRouteLength { + if obj.obj.Length == nil { + obj.obj.Length = NewFlowRSVPExplicitRouteLength().Msg() + } + if obj.lengthHolder == nil { + obj.lengthHolder = &flowRSVPExplicitRouteLength{obj: obj.obj.Length} + } + return obj.lengthHolder } -// Two octet flag values. -// SetFlags sets the uint32 value in the BgpExtendedCommunityTransitiveOpaqueTypeColor object -func (obj *bgpExtendedCommunityTransitiveOpaqueTypeColor) SetFlags(value uint32) BgpExtendedCommunityTransitiveOpaqueTypeColor { +// The Length contains the total length of the subobject in bytes,including L ,Type and Length fields. The Length MUST be atleast 4, and MUST be a multiple of 4. +// Length returns a FlowRSVPExplicitRouteLength +func (obj *flowRSVPPathExplicitRouteType1Ipv4Prefix) HasLength() bool { + return obj.obj.Length != nil +} + +// The Length contains the total length of the subobject in bytes,including L ,Type and Length fields. The Length MUST be atleast 4, and MUST be a multiple of 4. +// SetLength sets the FlowRSVPExplicitRouteLength value in the FlowRSVPPathExplicitRouteType1Ipv4Prefix object +func (obj *flowRSVPPathExplicitRouteType1Ipv4Prefix) SetLength(value FlowRSVPExplicitRouteLength) FlowRSVPPathExplicitRouteType1Ipv4Prefix { + + obj.lengthHolder = nil + obj.obj.Length = value.Msg() - obj.obj.Flags = &value return obj } -// The color value is user defined and configured locally and used to determine whether a data packet can be transmitted on a certain tunnel or not in conjunction with the Encapsulation attribute. It is defined in RFC9012. -// Color returns a uint32 -func (obj *bgpExtendedCommunityTransitiveOpaqueTypeColor) Color() uint32 { +// description is TBD +// Ipv4Address returns a PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixIpv4Address +func (obj *flowRSVPPathExplicitRouteType1Ipv4Prefix) Ipv4Address() PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixIpv4Address { + if obj.obj.Ipv4Address == nil { + obj.obj.Ipv4Address = NewPatternFlowRSVPPathExplicitRouteType1Ipv4PrefixIpv4Address().Msg() + } + if obj.ipv4AddressHolder == nil { + obj.ipv4AddressHolder = &patternFlowRSVPPathExplicitRouteType1Ipv4PrefixIpv4Address{obj: obj.obj.Ipv4Address} + } + return obj.ipv4AddressHolder +} - return *obj.obj.Color +// description is TBD +// Ipv4Address returns a PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixIpv4Address +func (obj *flowRSVPPathExplicitRouteType1Ipv4Prefix) HasIpv4Address() bool { + return obj.obj.Ipv4Address != nil +} + +// description is TBD +// SetIpv4Address sets the PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixIpv4Address value in the FlowRSVPPathExplicitRouteType1Ipv4Prefix object +func (obj *flowRSVPPathExplicitRouteType1Ipv4Prefix) SetIpv4Address(value PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixIpv4Address) FlowRSVPPathExplicitRouteType1Ipv4Prefix { + + obj.ipv4AddressHolder = nil + obj.obj.Ipv4Address = value.Msg() + return obj } -// The color value is user defined and configured locally and used to determine whether a data packet can be transmitted on a certain tunnel or not in conjunction with the Encapsulation attribute. It is defined in RFC9012. -// Color returns a uint32 -func (obj *bgpExtendedCommunityTransitiveOpaqueTypeColor) HasColor() bool { - return obj.obj.Color != nil +// The prefix of the IPv4 address. +// Prefix returns a uint32 +func (obj *flowRSVPPathExplicitRouteType1Ipv4Prefix) Prefix() uint32 { + + return *obj.obj.Prefix + } -// The color value is user defined and configured locally and used to determine whether a data packet can be transmitted on a certain tunnel or not in conjunction with the Encapsulation attribute. It is defined in RFC9012. -// SetColor sets the uint32 value in the BgpExtendedCommunityTransitiveOpaqueTypeColor object -func (obj *bgpExtendedCommunityTransitiveOpaqueTypeColor) SetColor(value uint32) BgpExtendedCommunityTransitiveOpaqueTypeColor { +// The prefix of the IPv4 address. +// Prefix returns a uint32 +func (obj *flowRSVPPathExplicitRouteType1Ipv4Prefix) HasPrefix() bool { + return obj.obj.Prefix != nil +} - obj.obj.Color = &value +// The prefix of the IPv4 address. +// SetPrefix sets the uint32 value in the FlowRSVPPathExplicitRouteType1Ipv4Prefix object +func (obj *flowRSVPPathExplicitRouteType1Ipv4Prefix) SetPrefix(value uint32) FlowRSVPPathExplicitRouteType1Ipv4Prefix { + + obj.obj.Prefix = &value return obj } -func (obj *bgpExtendedCommunityTransitiveOpaqueTypeColor) validateObj(vObj *validation, set_default bool) { +func (obj *flowRSVPPathExplicitRouteType1Ipv4Prefix) validateObj(vObj *validation, set_default bool) { if set_default { obj.setDefault() } - if obj.obj.Flags != nil { + if obj.obj.LBit != nil { - if *obj.obj.Flags > 65535 { + obj.LBit().validateObj(vObj, set_default) + } + + if obj.obj.Length != nil { + + obj.Length().validateObj(vObj, set_default) + } + + if obj.obj.Ipv4Address != nil { + + obj.Ipv4Address().validateObj(vObj, set_default) + } + + if obj.obj.Prefix != nil { + + if *obj.obj.Prefix < 1 || *obj.obj.Prefix > 32 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("0 <= BgpExtendedCommunityTransitiveOpaqueTypeColor.Flags <= 65535 but Got %d", *obj.obj.Flags)) + fmt.Sprintf("1 <= FlowRSVPPathExplicitRouteType1Ipv4Prefix.Prefix <= 32 but Got %d", *obj.obj.Prefix)) } } } -func (obj *bgpExtendedCommunityTransitiveOpaqueTypeColor) setDefault() { - if obj.obj.Flags == nil { - obj.SetFlags(0) - } - if obj.obj.Color == nil { - obj.SetColor(0) +func (obj *flowRSVPPathExplicitRouteType1Ipv4Prefix) setDefault() { + if obj.obj.Prefix == nil { + obj.SetPrefix(32) } } -// ***** BgpExtendedCommunityTransitiveOpaqueTypeEncapsulation ***** -type bgpExtendedCommunityTransitiveOpaqueTypeEncapsulation struct { +// ***** FlowRSVPPathExplicitRouteType1FourByteASNumber ***** +type flowRSVPPathExplicitRouteType1FourByteASNumber struct { validation - obj *otg.BgpExtendedCommunityTransitiveOpaqueTypeEncapsulation + obj *otg.FlowRSVPPathExplicitRouteType1FourByteASNumber + lBitHolder PatternFlowRSVPPathExplicitRouteType1FourByteASNumberLBit + lengthHolder FlowRSVPExplicitRouteLength + reservedHolder PatternFlowRSVPPathExplicitRouteType1FourByteASNumberReserved } -func NewBgpExtendedCommunityTransitiveOpaqueTypeEncapsulation() BgpExtendedCommunityTransitiveOpaqueTypeEncapsulation { - obj := bgpExtendedCommunityTransitiveOpaqueTypeEncapsulation{obj: &otg.BgpExtendedCommunityTransitiveOpaqueTypeEncapsulation{}} +func NewFlowRSVPPathExplicitRouteType1FourByteASNumber() FlowRSVPPathExplicitRouteType1FourByteASNumber { + obj := flowRSVPPathExplicitRouteType1FourByteASNumber{obj: &otg.FlowRSVPPathExplicitRouteType1FourByteASNumber{}} obj.setDefault() return &obj } -func (obj *bgpExtendedCommunityTransitiveOpaqueTypeEncapsulation) Msg() *otg.BgpExtendedCommunityTransitiveOpaqueTypeEncapsulation { +func (obj *flowRSVPPathExplicitRouteType1FourByteASNumber) Msg() *otg.FlowRSVPPathExplicitRouteType1FourByteASNumber { return obj.obj } -func (obj *bgpExtendedCommunityTransitiveOpaqueTypeEncapsulation) SetMsg(msg *otg.BgpExtendedCommunityTransitiveOpaqueTypeEncapsulation) BgpExtendedCommunityTransitiveOpaqueTypeEncapsulation { - +func (obj *flowRSVPPathExplicitRouteType1FourByteASNumber) SetMsg(msg *otg.FlowRSVPPathExplicitRouteType1FourByteASNumber) FlowRSVPPathExplicitRouteType1FourByteASNumber { + obj.setNil() proto.Merge(obj.obj, msg) return obj } -func (obj *bgpExtendedCommunityTransitiveOpaqueTypeEncapsulation) ToProto() (*otg.BgpExtendedCommunityTransitiveOpaqueTypeEncapsulation, error) { +func (obj *flowRSVPPathExplicitRouteType1FourByteASNumber) ToProto() (*otg.FlowRSVPPathExplicitRouteType1FourByteASNumber, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -314384,7 +361908,7 @@ func (obj *bgpExtendedCommunityTransitiveOpaqueTypeEncapsulation) ToProto() (*ot return obj.Msg(), nil } -func (obj *bgpExtendedCommunityTransitiveOpaqueTypeEncapsulation) FromProto(msg *otg.BgpExtendedCommunityTransitiveOpaqueTypeEncapsulation) (BgpExtendedCommunityTransitiveOpaqueTypeEncapsulation, error) { +func (obj *flowRSVPPathExplicitRouteType1FourByteASNumber) FromProto(msg *otg.FlowRSVPPathExplicitRouteType1FourByteASNumber) (FlowRSVPPathExplicitRouteType1FourByteASNumber, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -314393,7 +361917,7 @@ func (obj *bgpExtendedCommunityTransitiveOpaqueTypeEncapsulation) FromProto(msg return newObj, nil } -func (obj *bgpExtendedCommunityTransitiveOpaqueTypeEncapsulation) ToPbText() (string, error) { +func (obj *flowRSVPPathExplicitRouteType1FourByteASNumber) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -314405,12 +361929,12 @@ func (obj *bgpExtendedCommunityTransitiveOpaqueTypeEncapsulation) ToPbText() (st return string(protoMarshal), nil } -func (obj *bgpExtendedCommunityTransitiveOpaqueTypeEncapsulation) FromPbText(value string) error { +func (obj *flowRSVPPathExplicitRouteType1FourByteASNumber) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj } - + obj.setNil() vErr := obj.validateToAndFrom() if vErr != nil { return vErr @@ -314418,7 +361942,7 @@ func (obj *bgpExtendedCommunityTransitiveOpaqueTypeEncapsulation) FromPbText(val return retObj } -func (obj *bgpExtendedCommunityTransitiveOpaqueTypeEncapsulation) ToYaml() (string, error) { +func (obj *flowRSVPPathExplicitRouteType1FourByteASNumber) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -314439,7 +361963,7 @@ func (obj *bgpExtendedCommunityTransitiveOpaqueTypeEncapsulation) ToYaml() (stri return string(data), nil } -func (obj *bgpExtendedCommunityTransitiveOpaqueTypeEncapsulation) FromYaml(value string) error { +func (obj *flowRSVPPathExplicitRouteType1FourByteASNumber) FromYaml(value string) error { if value == "" { value = "{}" } @@ -314456,7 +361980,7 @@ func (obj *bgpExtendedCommunityTransitiveOpaqueTypeEncapsulation) FromYaml(value return fmt.Errorf("unmarshal error %s", strings.Replace( uError.Error(), "\u00a0", " ", -1)[7:]) } - + obj.setNil() vErr := obj.validateToAndFrom() if vErr != nil { return vErr @@ -314464,7 +361988,7 @@ func (obj *bgpExtendedCommunityTransitiveOpaqueTypeEncapsulation) FromYaml(value return nil } -func (obj *bgpExtendedCommunityTransitiveOpaqueTypeEncapsulation) ToJson() (string, error) { +func (obj *flowRSVPPathExplicitRouteType1FourByteASNumber) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -314482,7 +362006,7 @@ func (obj *bgpExtendedCommunityTransitiveOpaqueTypeEncapsulation) ToJson() (stri return string(data), nil } -func (obj *bgpExtendedCommunityTransitiveOpaqueTypeEncapsulation) FromJson(value string) error { +func (obj *flowRSVPPathExplicitRouteType1FourByteASNumber) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -314495,7 +362019,7 @@ func (obj *bgpExtendedCommunityTransitiveOpaqueTypeEncapsulation) FromJson(value return fmt.Errorf("unmarshal error %s", strings.Replace( uError.Error(), "\u00a0", " ", -1)[7:]) } - + obj.setNil() err := obj.validateToAndFrom() if err != nil { return err @@ -314503,19 +362027,19 @@ func (obj *bgpExtendedCommunityTransitiveOpaqueTypeEncapsulation) FromJson(value return nil } -func (obj *bgpExtendedCommunityTransitiveOpaqueTypeEncapsulation) validateToAndFrom() error { +func (obj *flowRSVPPathExplicitRouteType1FourByteASNumber) validateToAndFrom() error { // emptyVars() obj.validateObj(&obj.validation, true) return obj.validationResult() } -func (obj *bgpExtendedCommunityTransitiveOpaqueTypeEncapsulation) Validate() error { +func (obj *flowRSVPPathExplicitRouteType1FourByteASNumber) Validate() error { // emptyVars() obj.validateObj(&obj.validation, false) return obj.validationResult() } -func (obj *bgpExtendedCommunityTransitiveOpaqueTypeEncapsulation) String() string { +func (obj *flowRSVPPathExplicitRouteType1FourByteASNumber) String() string { str, err := obj.ToYaml() if err != nil { return err.Error() @@ -314523,12 +362047,12 @@ func (obj *bgpExtendedCommunityTransitiveOpaqueTypeEncapsulation) String() strin return str } -func (obj *bgpExtendedCommunityTransitiveOpaqueTypeEncapsulation) Clone() (BgpExtendedCommunityTransitiveOpaqueTypeEncapsulation, error) { +func (obj *flowRSVPPathExplicitRouteType1FourByteASNumber) Clone() (FlowRSVPPathExplicitRouteType1FourByteASNumber, error) { vErr := obj.Validate() if vErr != nil { return nil, vErr } - newObj := NewBgpExtendedCommunityTransitiveOpaqueTypeEncapsulation() + newObj := NewFlowRSVPPathExplicitRouteType1FourByteASNumber() data, err := proto.Marshal(obj.Msg()) if err != nil { return nil, err @@ -314540,169 +362064,254 @@ func (obj *bgpExtendedCommunityTransitiveOpaqueTypeEncapsulation) Clone() (BgpEx return newObj, nil } -// BgpExtendedCommunityTransitiveOpaqueTypeEncapsulation is this identifies the type of tunneling technology being signalled. It is defined in RFC9012 and sent with sub-type as 0x0c. -type BgpExtendedCommunityTransitiveOpaqueTypeEncapsulation interface { +func (obj *flowRSVPPathExplicitRouteType1FourByteASNumber) setNil() { + obj.lBitHolder = nil + obj.lengthHolder = nil + obj.reservedHolder = nil + obj.validationErrors = nil + obj.warnings = nil + obj.constraints = make(map[string]map[string]Constraints) +} + +// FlowRSVPPathExplicitRouteType1FourByteASNumber is class = EXPLICIT_ROUTE, Type1 ROUTE_RECORD C-Type = 1 Subobject: 4-byte AS number, C-Type: 32 +type FlowRSVPPathExplicitRouteType1FourByteASNumber interface { Validation - // Msg marshals BgpExtendedCommunityTransitiveOpaqueTypeEncapsulation to protobuf object *otg.BgpExtendedCommunityTransitiveOpaqueTypeEncapsulation + // Msg marshals FlowRSVPPathExplicitRouteType1FourByteASNumber to protobuf object *otg.FlowRSVPPathExplicitRouteType1FourByteASNumber // and doesn't set defaults - Msg() *otg.BgpExtendedCommunityTransitiveOpaqueTypeEncapsulation - // SetMsg unmarshals BgpExtendedCommunityTransitiveOpaqueTypeEncapsulation from protobuf object *otg.BgpExtendedCommunityTransitiveOpaqueTypeEncapsulation + Msg() *otg.FlowRSVPPathExplicitRouteType1FourByteASNumber + // SetMsg unmarshals FlowRSVPPathExplicitRouteType1FourByteASNumber from protobuf object *otg.FlowRSVPPathExplicitRouteType1FourByteASNumber // and doesn't set defaults - SetMsg(*otg.BgpExtendedCommunityTransitiveOpaqueTypeEncapsulation) BgpExtendedCommunityTransitiveOpaqueTypeEncapsulation - // ToProto marshals BgpExtendedCommunityTransitiveOpaqueTypeEncapsulation to protobuf object *otg.BgpExtendedCommunityTransitiveOpaqueTypeEncapsulation - ToProto() (*otg.BgpExtendedCommunityTransitiveOpaqueTypeEncapsulation, error) - // ToPbText marshals BgpExtendedCommunityTransitiveOpaqueTypeEncapsulation to protobuf text + SetMsg(*otg.FlowRSVPPathExplicitRouteType1FourByteASNumber) FlowRSVPPathExplicitRouteType1FourByteASNumber + // ToProto marshals FlowRSVPPathExplicitRouteType1FourByteASNumber to protobuf object *otg.FlowRSVPPathExplicitRouteType1FourByteASNumber + ToProto() (*otg.FlowRSVPPathExplicitRouteType1FourByteASNumber, error) + // ToPbText marshals FlowRSVPPathExplicitRouteType1FourByteASNumber to protobuf text ToPbText() (string, error) - // ToYaml marshals BgpExtendedCommunityTransitiveOpaqueTypeEncapsulation to YAML text + // ToYaml marshals FlowRSVPPathExplicitRouteType1FourByteASNumber to YAML text ToYaml() (string, error) - // ToJson marshals BgpExtendedCommunityTransitiveOpaqueTypeEncapsulation to JSON text + // ToJson marshals FlowRSVPPathExplicitRouteType1FourByteASNumber to JSON text ToJson() (string, error) - // FromProto unmarshals BgpExtendedCommunityTransitiveOpaqueTypeEncapsulation from protobuf object *otg.BgpExtendedCommunityTransitiveOpaqueTypeEncapsulation - FromProto(msg *otg.BgpExtendedCommunityTransitiveOpaqueTypeEncapsulation) (BgpExtendedCommunityTransitiveOpaqueTypeEncapsulation, error) - // FromPbText unmarshals BgpExtendedCommunityTransitiveOpaqueTypeEncapsulation from protobuf text + // FromProto unmarshals FlowRSVPPathExplicitRouteType1FourByteASNumber from protobuf object *otg.FlowRSVPPathExplicitRouteType1FourByteASNumber + FromProto(msg *otg.FlowRSVPPathExplicitRouteType1FourByteASNumber) (FlowRSVPPathExplicitRouteType1FourByteASNumber, error) + // FromPbText unmarshals FlowRSVPPathExplicitRouteType1FourByteASNumber from protobuf text FromPbText(value string) error - // FromYaml unmarshals BgpExtendedCommunityTransitiveOpaqueTypeEncapsulation from YAML text + // FromYaml unmarshals FlowRSVPPathExplicitRouteType1FourByteASNumber from YAML text FromYaml(value string) error - // FromJson unmarshals BgpExtendedCommunityTransitiveOpaqueTypeEncapsulation from JSON text + // FromJson unmarshals FlowRSVPPathExplicitRouteType1FourByteASNumber from JSON text FromJson(value string) error - // Validate validates BgpExtendedCommunityTransitiveOpaqueTypeEncapsulation + // Validate validates FlowRSVPPathExplicitRouteType1FourByteASNumber Validate() error // A stringer function String() string // Clones the object - Clone() (BgpExtendedCommunityTransitiveOpaqueTypeEncapsulation, error) + Clone() (FlowRSVPPathExplicitRouteType1FourByteASNumber, error) validateToAndFrom() error validateObj(vObj *validation, set_default bool) setDefault() - // Reserved returns uint32, set in BgpExtendedCommunityTransitiveOpaqueTypeEncapsulation. - Reserved() uint32 - // SetReserved assigns uint32 provided by user to BgpExtendedCommunityTransitiveOpaqueTypeEncapsulation - SetReserved(value uint32) BgpExtendedCommunityTransitiveOpaqueTypeEncapsulation - // HasReserved checks if Reserved has been set in BgpExtendedCommunityTransitiveOpaqueTypeEncapsulation + // LBit returns PatternFlowRSVPPathExplicitRouteType1FourByteASNumberLBit, set in FlowRSVPPathExplicitRouteType1FourByteASNumber. + // PatternFlowRSVPPathExplicitRouteType1FourByteASNumberLBit is the L bit is an attribute of the subobject.The L bit is set if the subobject represents a loose hop in the explicit route. If the bit is not set, the subobject represents a strict hop in the explicit route. + LBit() PatternFlowRSVPPathExplicitRouteType1FourByteASNumberLBit + // SetLBit assigns PatternFlowRSVPPathExplicitRouteType1FourByteASNumberLBit provided by user to FlowRSVPPathExplicitRouteType1FourByteASNumber. + // PatternFlowRSVPPathExplicitRouteType1FourByteASNumberLBit is the L bit is an attribute of the subobject.The L bit is set if the subobject represents a loose hop in the explicit route. If the bit is not set, the subobject represents a strict hop in the explicit route. + SetLBit(value PatternFlowRSVPPathExplicitRouteType1FourByteASNumberLBit) FlowRSVPPathExplicitRouteType1FourByteASNumber + // HasLBit checks if LBit has been set in FlowRSVPPathExplicitRouteType1FourByteASNumber + HasLBit() bool + // Length returns FlowRSVPExplicitRouteLength, set in FlowRSVPPathExplicitRouteType1FourByteASNumber. + // FlowRSVPExplicitRouteLength is description is TBD + Length() FlowRSVPExplicitRouteLength + // SetLength assigns FlowRSVPExplicitRouteLength provided by user to FlowRSVPPathExplicitRouteType1FourByteASNumber. + // FlowRSVPExplicitRouteLength is description is TBD + SetLength(value FlowRSVPExplicitRouteLength) FlowRSVPPathExplicitRouteType1FourByteASNumber + // HasLength checks if Length has been set in FlowRSVPPathExplicitRouteType1FourByteASNumber + HasLength() bool + // Reserved returns PatternFlowRSVPPathExplicitRouteType1FourByteASNumberReserved, set in FlowRSVPPathExplicitRouteType1FourByteASNumber. + // PatternFlowRSVPPathExplicitRouteType1FourByteASNumberReserved is reserved. + Reserved() PatternFlowRSVPPathExplicitRouteType1FourByteASNumberReserved + // SetReserved assigns PatternFlowRSVPPathExplicitRouteType1FourByteASNumberReserved provided by user to FlowRSVPPathExplicitRouteType1FourByteASNumber. + // PatternFlowRSVPPathExplicitRouteType1FourByteASNumberReserved is reserved. + SetReserved(value PatternFlowRSVPPathExplicitRouteType1FourByteASNumberReserved) FlowRSVPPathExplicitRouteType1FourByteASNumber + // HasReserved checks if Reserved has been set in FlowRSVPPathExplicitRouteType1FourByteASNumber HasReserved() bool - // TunnelType returns uint32, set in BgpExtendedCommunityTransitiveOpaqueTypeEncapsulation. - TunnelType() uint32 - // SetTunnelType assigns uint32 provided by user to BgpExtendedCommunityTransitiveOpaqueTypeEncapsulation - SetTunnelType(value uint32) BgpExtendedCommunityTransitiveOpaqueTypeEncapsulation - // HasTunnelType checks if TunnelType has been set in BgpExtendedCommunityTransitiveOpaqueTypeEncapsulation - HasTunnelType() bool + // AsNumber returns uint32, set in FlowRSVPPathExplicitRouteType1FourByteASNumber. + AsNumber() uint32 + // SetAsNumber assigns uint32 provided by user to FlowRSVPPathExplicitRouteType1FourByteASNumber + SetAsNumber(value uint32) FlowRSVPPathExplicitRouteType1FourByteASNumber + // HasAsNumber checks if AsNumber has been set in FlowRSVPPathExplicitRouteType1FourByteASNumber + HasAsNumber() bool + setNil() } -// Four bytes of reserved values. Normally set to 0 on transmit and ignored on receive. -// Reserved returns a uint32 -func (obj *bgpExtendedCommunityTransitiveOpaqueTypeEncapsulation) Reserved() uint32 { +// description is TBD +// LBit returns a PatternFlowRSVPPathExplicitRouteType1FourByteASNumberLBit +func (obj *flowRSVPPathExplicitRouteType1FourByteASNumber) LBit() PatternFlowRSVPPathExplicitRouteType1FourByteASNumberLBit { + if obj.obj.LBit == nil { + obj.obj.LBit = NewPatternFlowRSVPPathExplicitRouteType1FourByteASNumberLBit().Msg() + } + if obj.lBitHolder == nil { + obj.lBitHolder = &patternFlowRSVPPathExplicitRouteType1FourByteASNumberLBit{obj: obj.obj.LBit} + } + return obj.lBitHolder +} - return *obj.obj.Reserved +// description is TBD +// LBit returns a PatternFlowRSVPPathExplicitRouteType1FourByteASNumberLBit +func (obj *flowRSVPPathExplicitRouteType1FourByteASNumber) HasLBit() bool { + return obj.obj.LBit != nil +} + +// description is TBD +// SetLBit sets the PatternFlowRSVPPathExplicitRouteType1FourByteASNumberLBit value in the FlowRSVPPathExplicitRouteType1FourByteASNumber object +func (obj *flowRSVPPathExplicitRouteType1FourByteASNumber) SetLBit(value PatternFlowRSVPPathExplicitRouteType1FourByteASNumberLBit) FlowRSVPPathExplicitRouteType1FourByteASNumber { + obj.lBitHolder = nil + obj.obj.LBit = value.Msg() + + return obj } -// Four bytes of reserved values. Normally set to 0 on transmit and ignored on receive. -// Reserved returns a uint32 -func (obj *bgpExtendedCommunityTransitiveOpaqueTypeEncapsulation) HasReserved() bool { +// The Length contains the total length of the subobject in bytes,including L ,Type and Length fields. The Length MUST be atleast 4, and MUST be a multiple of 4. +// Length returns a FlowRSVPExplicitRouteLength +func (obj *flowRSVPPathExplicitRouteType1FourByteASNumber) Length() FlowRSVPExplicitRouteLength { + if obj.obj.Length == nil { + obj.obj.Length = NewFlowRSVPExplicitRouteLength().Msg() + } + if obj.lengthHolder == nil { + obj.lengthHolder = &flowRSVPExplicitRouteLength{obj: obj.obj.Length} + } + return obj.lengthHolder +} + +// The Length contains the total length of the subobject in bytes,including L ,Type and Length fields. The Length MUST be atleast 4, and MUST be a multiple of 4. +// Length returns a FlowRSVPExplicitRouteLength +func (obj *flowRSVPPathExplicitRouteType1FourByteASNumber) HasLength() bool { + return obj.obj.Length != nil +} + +// The Length contains the total length of the subobject in bytes,including L ,Type and Length fields. The Length MUST be atleast 4, and MUST be a multiple of 4. +// SetLength sets the FlowRSVPExplicitRouteLength value in the FlowRSVPPathExplicitRouteType1FourByteASNumber object +func (obj *flowRSVPPathExplicitRouteType1FourByteASNumber) SetLength(value FlowRSVPExplicitRouteLength) FlowRSVPPathExplicitRouteType1FourByteASNumber { + + obj.lengthHolder = nil + obj.obj.Length = value.Msg() + + return obj +} + +// description is TBD +// Reserved returns a PatternFlowRSVPPathExplicitRouteType1FourByteASNumberReserved +func (obj *flowRSVPPathExplicitRouteType1FourByteASNumber) Reserved() PatternFlowRSVPPathExplicitRouteType1FourByteASNumberReserved { + if obj.obj.Reserved == nil { + obj.obj.Reserved = NewPatternFlowRSVPPathExplicitRouteType1FourByteASNumberReserved().Msg() + } + if obj.reservedHolder == nil { + obj.reservedHolder = &patternFlowRSVPPathExplicitRouteType1FourByteASNumberReserved{obj: obj.obj.Reserved} + } + return obj.reservedHolder +} + +// description is TBD +// Reserved returns a PatternFlowRSVPPathExplicitRouteType1FourByteASNumberReserved +func (obj *flowRSVPPathExplicitRouteType1FourByteASNumber) HasReserved() bool { return obj.obj.Reserved != nil } -// Four bytes of reserved values. Normally set to 0 on transmit and ignored on receive. -// SetReserved sets the uint32 value in the BgpExtendedCommunityTransitiveOpaqueTypeEncapsulation object -func (obj *bgpExtendedCommunityTransitiveOpaqueTypeEncapsulation) SetReserved(value uint32) BgpExtendedCommunityTransitiveOpaqueTypeEncapsulation { +// description is TBD +// SetReserved sets the PatternFlowRSVPPathExplicitRouteType1FourByteASNumberReserved value in the FlowRSVPPathExplicitRouteType1FourByteASNumber object +func (obj *flowRSVPPathExplicitRouteType1FourByteASNumber) SetReserved(value PatternFlowRSVPPathExplicitRouteType1FourByteASNumberReserved) FlowRSVPPathExplicitRouteType1FourByteASNumber { + + obj.reservedHolder = nil + obj.obj.Reserved = value.Msg() - obj.obj.Reserved = &value return obj } -// Identifies the type of tunneling technology being signalled. Initially defined in RFC5512 and extended in RFC9012. Some of the important tunnel types include 1 L2TPv3 over IP [RFC9012], -// 2 GRE [RFC9012] -// 7 IP in IP [RFC9012] -// 8 VXLAN Encapsulation [RFC8365] -// 9 NVGRE Encapsulation [RFC8365] -// 10 MPLS Encapsulation [RFC8365] -// 15 SR TE Policy Type [draft-ietf-idr-segment-routing-te-policy] -// 19 Geneve Encapsulation [RFC8926] -// TunnelType returns a uint32 -func (obj *bgpExtendedCommunityTransitiveOpaqueTypeEncapsulation) TunnelType() uint32 { +// Autonomous System number to be set in the ERO sub-object that this LSP should traverse through. This field is applicable only if the value of 'type' is set to 'as_number'. Note that as per RFC3209, 4-byte AS encoding is not supported. +// AsNumber returns a uint32 +func (obj *flowRSVPPathExplicitRouteType1FourByteASNumber) AsNumber() uint32 { - return *obj.obj.TunnelType + return *obj.obj.AsNumber } -// Identifies the type of tunneling technology being signalled. Initially defined in RFC5512 and extended in RFC9012. Some of the important tunnel types include 1 L2TPv3 over IP [RFC9012], -// 2 GRE [RFC9012] -// 7 IP in IP [RFC9012] -// 8 VXLAN Encapsulation [RFC8365] -// 9 NVGRE Encapsulation [RFC8365] -// 10 MPLS Encapsulation [RFC8365] -// 15 SR TE Policy Type [draft-ietf-idr-segment-routing-te-policy] -// 19 Geneve Encapsulation [RFC8926] -// TunnelType returns a uint32 -func (obj *bgpExtendedCommunityTransitiveOpaqueTypeEncapsulation) HasTunnelType() bool { - return obj.obj.TunnelType != nil +// Autonomous System number to be set in the ERO sub-object that this LSP should traverse through. This field is applicable only if the value of 'type' is set to 'as_number'. Note that as per RFC3209, 4-byte AS encoding is not supported. +// AsNumber returns a uint32 +func (obj *flowRSVPPathExplicitRouteType1FourByteASNumber) HasAsNumber() bool { + return obj.obj.AsNumber != nil } -// Identifies the type of tunneling technology being signalled. Initially defined in RFC5512 and extended in RFC9012. Some of the important tunnel types include 1 L2TPv3 over IP [RFC9012], -// 2 GRE [RFC9012] -// 7 IP in IP [RFC9012] -// 8 VXLAN Encapsulation [RFC8365] -// 9 NVGRE Encapsulation [RFC8365] -// 10 MPLS Encapsulation [RFC8365] -// 15 SR TE Policy Type [draft-ietf-idr-segment-routing-te-policy] -// 19 Geneve Encapsulation [RFC8926] -// SetTunnelType sets the uint32 value in the BgpExtendedCommunityTransitiveOpaqueTypeEncapsulation object -func (obj *bgpExtendedCommunityTransitiveOpaqueTypeEncapsulation) SetTunnelType(value uint32) BgpExtendedCommunityTransitiveOpaqueTypeEncapsulation { +// Autonomous System number to be set in the ERO sub-object that this LSP should traverse through. This field is applicable only if the value of 'type' is set to 'as_number'. Note that as per RFC3209, 4-byte AS encoding is not supported. +// SetAsNumber sets the uint32 value in the FlowRSVPPathExplicitRouteType1FourByteASNumber object +func (obj *flowRSVPPathExplicitRouteType1FourByteASNumber) SetAsNumber(value uint32) FlowRSVPPathExplicitRouteType1FourByteASNumber { - obj.obj.TunnelType = &value + obj.obj.AsNumber = &value return obj } -func (obj *bgpExtendedCommunityTransitiveOpaqueTypeEncapsulation) validateObj(vObj *validation, set_default bool) { +func (obj *flowRSVPPathExplicitRouteType1FourByteASNumber) validateObj(vObj *validation, set_default bool) { if set_default { obj.setDefault() } - if obj.obj.TunnelType != nil { + if obj.obj.LBit != nil { - if *obj.obj.TunnelType > 65535 { + obj.LBit().validateObj(vObj, set_default) + } + + if obj.obj.Length != nil { + + obj.Length().validateObj(vObj, set_default) + } + + if obj.obj.Reserved != nil { + + obj.Reserved().validateObj(vObj, set_default) + } + + if obj.obj.AsNumber != nil { + + if *obj.obj.AsNumber > 65535 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("0 <= BgpExtendedCommunityTransitiveOpaqueTypeEncapsulation.TunnelType <= 65535 but Got %d", *obj.obj.TunnelType)) + fmt.Sprintf("0 <= FlowRSVPPathExplicitRouteType1FourByteASNumber.AsNumber <= 65535 but Got %d", *obj.obj.AsNumber)) } } } -func (obj *bgpExtendedCommunityTransitiveOpaqueTypeEncapsulation) setDefault() { - if obj.obj.Reserved == nil { - obj.SetReserved(0) - } - if obj.obj.TunnelType == nil { - obj.SetTunnelType(1) +func (obj *flowRSVPPathExplicitRouteType1FourByteASNumber) setDefault() { + if obj.obj.AsNumber == nil { + obj.SetAsNumber(0) } } -// ***** BgpExtendedCommunityTransitiveEvpnTypeRouterMac ***** -type bgpExtendedCommunityTransitiveEvpnTypeRouterMac struct { +// ***** FlowRSVPPathRecordRouteType1Ipv4Address ***** +type flowRSVPPathRecordRouteType1Ipv4Address struct { validation - obj *otg.BgpExtendedCommunityTransitiveEvpnTypeRouterMac + obj *otg.FlowRSVPPathRecordRouteType1Ipv4Address + lengthHolder FlowRSVPRouteRecordLength + ipv4AddressHolder PatternFlowRSVPPathRecordRouteType1Ipv4AddressIpv4Address + prefixLengthHolder PatternFlowRSVPPathRecordRouteType1Ipv4AddressPrefixLength + flagsHolder FlowRSVPRecordRouteIPv4Flag } -func NewBgpExtendedCommunityTransitiveEvpnTypeRouterMac() BgpExtendedCommunityTransitiveEvpnTypeRouterMac { - obj := bgpExtendedCommunityTransitiveEvpnTypeRouterMac{obj: &otg.BgpExtendedCommunityTransitiveEvpnTypeRouterMac{}} +func NewFlowRSVPPathRecordRouteType1Ipv4Address() FlowRSVPPathRecordRouteType1Ipv4Address { + obj := flowRSVPPathRecordRouteType1Ipv4Address{obj: &otg.FlowRSVPPathRecordRouteType1Ipv4Address{}} obj.setDefault() return &obj } -func (obj *bgpExtendedCommunityTransitiveEvpnTypeRouterMac) Msg() *otg.BgpExtendedCommunityTransitiveEvpnTypeRouterMac { +func (obj *flowRSVPPathRecordRouteType1Ipv4Address) Msg() *otg.FlowRSVPPathRecordRouteType1Ipv4Address { return obj.obj } -func (obj *bgpExtendedCommunityTransitiveEvpnTypeRouterMac) SetMsg(msg *otg.BgpExtendedCommunityTransitiveEvpnTypeRouterMac) BgpExtendedCommunityTransitiveEvpnTypeRouterMac { - +func (obj *flowRSVPPathRecordRouteType1Ipv4Address) SetMsg(msg *otg.FlowRSVPPathRecordRouteType1Ipv4Address) FlowRSVPPathRecordRouteType1Ipv4Address { + obj.setNil() proto.Merge(obj.obj, msg) return obj } -func (obj *bgpExtendedCommunityTransitiveEvpnTypeRouterMac) ToProto() (*otg.BgpExtendedCommunityTransitiveEvpnTypeRouterMac, error) { +func (obj *flowRSVPPathRecordRouteType1Ipv4Address) ToProto() (*otg.FlowRSVPPathRecordRouteType1Ipv4Address, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -314710,7 +362319,7 @@ func (obj *bgpExtendedCommunityTransitiveEvpnTypeRouterMac) ToProto() (*otg.BgpE return obj.Msg(), nil } -func (obj *bgpExtendedCommunityTransitiveEvpnTypeRouterMac) FromProto(msg *otg.BgpExtendedCommunityTransitiveEvpnTypeRouterMac) (BgpExtendedCommunityTransitiveEvpnTypeRouterMac, error) { +func (obj *flowRSVPPathRecordRouteType1Ipv4Address) FromProto(msg *otg.FlowRSVPPathRecordRouteType1Ipv4Address) (FlowRSVPPathRecordRouteType1Ipv4Address, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -314719,7 +362328,7 @@ func (obj *bgpExtendedCommunityTransitiveEvpnTypeRouterMac) FromProto(msg *otg.B return newObj, nil } -func (obj *bgpExtendedCommunityTransitiveEvpnTypeRouterMac) ToPbText() (string, error) { +func (obj *flowRSVPPathRecordRouteType1Ipv4Address) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -314731,12 +362340,12 @@ func (obj *bgpExtendedCommunityTransitiveEvpnTypeRouterMac) ToPbText() (string, return string(protoMarshal), nil } -func (obj *bgpExtendedCommunityTransitiveEvpnTypeRouterMac) FromPbText(value string) error { +func (obj *flowRSVPPathRecordRouteType1Ipv4Address) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj } - + obj.setNil() vErr := obj.validateToAndFrom() if vErr != nil { return vErr @@ -314744,7 +362353,7 @@ func (obj *bgpExtendedCommunityTransitiveEvpnTypeRouterMac) FromPbText(value str return retObj } -func (obj *bgpExtendedCommunityTransitiveEvpnTypeRouterMac) ToYaml() (string, error) { +func (obj *flowRSVPPathRecordRouteType1Ipv4Address) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -314765,7 +362374,7 @@ func (obj *bgpExtendedCommunityTransitiveEvpnTypeRouterMac) ToYaml() (string, er return string(data), nil } -func (obj *bgpExtendedCommunityTransitiveEvpnTypeRouterMac) FromYaml(value string) error { +func (obj *flowRSVPPathRecordRouteType1Ipv4Address) FromYaml(value string) error { if value == "" { value = "{}" } @@ -314782,7 +362391,7 @@ func (obj *bgpExtendedCommunityTransitiveEvpnTypeRouterMac) FromYaml(value strin return fmt.Errorf("unmarshal error %s", strings.Replace( uError.Error(), "\u00a0", " ", -1)[7:]) } - + obj.setNil() vErr := obj.validateToAndFrom() if vErr != nil { return vErr @@ -314790,7 +362399,7 @@ func (obj *bgpExtendedCommunityTransitiveEvpnTypeRouterMac) FromYaml(value strin return nil } -func (obj *bgpExtendedCommunityTransitiveEvpnTypeRouterMac) ToJson() (string, error) { +func (obj *flowRSVPPathRecordRouteType1Ipv4Address) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -314808,7 +362417,7 @@ func (obj *bgpExtendedCommunityTransitiveEvpnTypeRouterMac) ToJson() (string, er return string(data), nil } -func (obj *bgpExtendedCommunityTransitiveEvpnTypeRouterMac) FromJson(value string) error { +func (obj *flowRSVPPathRecordRouteType1Ipv4Address) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -314821,7 +362430,7 @@ func (obj *bgpExtendedCommunityTransitiveEvpnTypeRouterMac) FromJson(value strin return fmt.Errorf("unmarshal error %s", strings.Replace( uError.Error(), "\u00a0", " ", -1)[7:]) } - + obj.setNil() err := obj.validateToAndFrom() if err != nil { return err @@ -314829,19 +362438,19 @@ func (obj *bgpExtendedCommunityTransitiveEvpnTypeRouterMac) FromJson(value strin return nil } -func (obj *bgpExtendedCommunityTransitiveEvpnTypeRouterMac) validateToAndFrom() error { +func (obj *flowRSVPPathRecordRouteType1Ipv4Address) validateToAndFrom() error { // emptyVars() obj.validateObj(&obj.validation, true) return obj.validationResult() } -func (obj *bgpExtendedCommunityTransitiveEvpnTypeRouterMac) Validate() error { +func (obj *flowRSVPPathRecordRouteType1Ipv4Address) Validate() error { // emptyVars() obj.validateObj(&obj.validation, false) return obj.validationResult() } -func (obj *bgpExtendedCommunityTransitiveEvpnTypeRouterMac) String() string { +func (obj *flowRSVPPathRecordRouteType1Ipv4Address) String() string { str, err := obj.ToYaml() if err != nil { return err.Error() @@ -314849,12 +362458,12 @@ func (obj *bgpExtendedCommunityTransitiveEvpnTypeRouterMac) String() string { return str } -func (obj *bgpExtendedCommunityTransitiveEvpnTypeRouterMac) Clone() (BgpExtendedCommunityTransitiveEvpnTypeRouterMac, error) { +func (obj *flowRSVPPathRecordRouteType1Ipv4Address) Clone() (FlowRSVPPathRecordRouteType1Ipv4Address, error) { vErr := obj.Validate() if vErr != nil { return nil, vErr } - newObj := NewBgpExtendedCommunityTransitiveEvpnTypeRouterMac() + newObj := NewFlowRSVPPathRecordRouteType1Ipv4Address() data, err := proto.Marshal(obj.Msg()) if err != nil { return nil, err @@ -314866,116 +362475,254 @@ func (obj *bgpExtendedCommunityTransitiveEvpnTypeRouterMac) Clone() (BgpExtended return newObj, nil } -// BgpExtendedCommunityTransitiveEvpnTypeRouterMac is the Router MAC EVPN Community is defined in RFC9135 and normally sent only for EVPN Type-2 Routes . It is sent with sub-type 0x03. -type BgpExtendedCommunityTransitiveEvpnTypeRouterMac interface { +func (obj *flowRSVPPathRecordRouteType1Ipv4Address) setNil() { + obj.lengthHolder = nil + obj.ipv4AddressHolder = nil + obj.prefixLengthHolder = nil + obj.flagsHolder = nil + obj.validationErrors = nil + obj.warnings = nil + obj.constraints = make(map[string]map[string]Constraints) +} + +// FlowRSVPPathRecordRouteType1Ipv4Address is class = RECORD_ROUTE, Type1 ROUTE_RECORD C-Type = 1 Subobject: IPv4 Address, C-Type: 1 +type FlowRSVPPathRecordRouteType1Ipv4Address interface { Validation - // Msg marshals BgpExtendedCommunityTransitiveEvpnTypeRouterMac to protobuf object *otg.BgpExtendedCommunityTransitiveEvpnTypeRouterMac + // Msg marshals FlowRSVPPathRecordRouteType1Ipv4Address to protobuf object *otg.FlowRSVPPathRecordRouteType1Ipv4Address // and doesn't set defaults - Msg() *otg.BgpExtendedCommunityTransitiveEvpnTypeRouterMac - // SetMsg unmarshals BgpExtendedCommunityTransitiveEvpnTypeRouterMac from protobuf object *otg.BgpExtendedCommunityTransitiveEvpnTypeRouterMac + Msg() *otg.FlowRSVPPathRecordRouteType1Ipv4Address + // SetMsg unmarshals FlowRSVPPathRecordRouteType1Ipv4Address from protobuf object *otg.FlowRSVPPathRecordRouteType1Ipv4Address // and doesn't set defaults - SetMsg(*otg.BgpExtendedCommunityTransitiveEvpnTypeRouterMac) BgpExtendedCommunityTransitiveEvpnTypeRouterMac - // ToProto marshals BgpExtendedCommunityTransitiveEvpnTypeRouterMac to protobuf object *otg.BgpExtendedCommunityTransitiveEvpnTypeRouterMac - ToProto() (*otg.BgpExtendedCommunityTransitiveEvpnTypeRouterMac, error) - // ToPbText marshals BgpExtendedCommunityTransitiveEvpnTypeRouterMac to protobuf text + SetMsg(*otg.FlowRSVPPathRecordRouteType1Ipv4Address) FlowRSVPPathRecordRouteType1Ipv4Address + // ToProto marshals FlowRSVPPathRecordRouteType1Ipv4Address to protobuf object *otg.FlowRSVPPathRecordRouteType1Ipv4Address + ToProto() (*otg.FlowRSVPPathRecordRouteType1Ipv4Address, error) + // ToPbText marshals FlowRSVPPathRecordRouteType1Ipv4Address to protobuf text ToPbText() (string, error) - // ToYaml marshals BgpExtendedCommunityTransitiveEvpnTypeRouterMac to YAML text + // ToYaml marshals FlowRSVPPathRecordRouteType1Ipv4Address to YAML text ToYaml() (string, error) - // ToJson marshals BgpExtendedCommunityTransitiveEvpnTypeRouterMac to JSON text + // ToJson marshals FlowRSVPPathRecordRouteType1Ipv4Address to JSON text ToJson() (string, error) - // FromProto unmarshals BgpExtendedCommunityTransitiveEvpnTypeRouterMac from protobuf object *otg.BgpExtendedCommunityTransitiveEvpnTypeRouterMac - FromProto(msg *otg.BgpExtendedCommunityTransitiveEvpnTypeRouterMac) (BgpExtendedCommunityTransitiveEvpnTypeRouterMac, error) - // FromPbText unmarshals BgpExtendedCommunityTransitiveEvpnTypeRouterMac from protobuf text + // FromProto unmarshals FlowRSVPPathRecordRouteType1Ipv4Address from protobuf object *otg.FlowRSVPPathRecordRouteType1Ipv4Address + FromProto(msg *otg.FlowRSVPPathRecordRouteType1Ipv4Address) (FlowRSVPPathRecordRouteType1Ipv4Address, error) + // FromPbText unmarshals FlowRSVPPathRecordRouteType1Ipv4Address from protobuf text FromPbText(value string) error - // FromYaml unmarshals BgpExtendedCommunityTransitiveEvpnTypeRouterMac from YAML text + // FromYaml unmarshals FlowRSVPPathRecordRouteType1Ipv4Address from YAML text FromYaml(value string) error - // FromJson unmarshals BgpExtendedCommunityTransitiveEvpnTypeRouterMac from JSON text + // FromJson unmarshals FlowRSVPPathRecordRouteType1Ipv4Address from JSON text FromJson(value string) error - // Validate validates BgpExtendedCommunityTransitiveEvpnTypeRouterMac + // Validate validates FlowRSVPPathRecordRouteType1Ipv4Address Validate() error // A stringer function String() string // Clones the object - Clone() (BgpExtendedCommunityTransitiveEvpnTypeRouterMac, error) + Clone() (FlowRSVPPathRecordRouteType1Ipv4Address, error) validateToAndFrom() error validateObj(vObj *validation, set_default bool) setDefault() - // RouterMac returns string, set in BgpExtendedCommunityTransitiveEvpnTypeRouterMac. - RouterMac() string - // SetRouterMac assigns string provided by user to BgpExtendedCommunityTransitiveEvpnTypeRouterMac - SetRouterMac(value string) BgpExtendedCommunityTransitiveEvpnTypeRouterMac - // HasRouterMac checks if RouterMac has been set in BgpExtendedCommunityTransitiveEvpnTypeRouterMac - HasRouterMac() bool + // Length returns FlowRSVPRouteRecordLength, set in FlowRSVPPathRecordRouteType1Ipv4Address. + // FlowRSVPRouteRecordLength is description is TBD + Length() FlowRSVPRouteRecordLength + // SetLength assigns FlowRSVPRouteRecordLength provided by user to FlowRSVPPathRecordRouteType1Ipv4Address. + // FlowRSVPRouteRecordLength is description is TBD + SetLength(value FlowRSVPRouteRecordLength) FlowRSVPPathRecordRouteType1Ipv4Address + // HasLength checks if Length has been set in FlowRSVPPathRecordRouteType1Ipv4Address + HasLength() bool + // Ipv4Address returns PatternFlowRSVPPathRecordRouteType1Ipv4AddressIpv4Address, set in FlowRSVPPathRecordRouteType1Ipv4Address. + // PatternFlowRSVPPathRecordRouteType1Ipv4AddressIpv4Address is a 32-bit unicast, host address. Any network-reachable interface address is allowed here. Illegal addresses, such as certain loopback addresses, SHOULD NOT be used. + Ipv4Address() PatternFlowRSVPPathRecordRouteType1Ipv4AddressIpv4Address + // SetIpv4Address assigns PatternFlowRSVPPathRecordRouteType1Ipv4AddressIpv4Address provided by user to FlowRSVPPathRecordRouteType1Ipv4Address. + // PatternFlowRSVPPathRecordRouteType1Ipv4AddressIpv4Address is a 32-bit unicast, host address. Any network-reachable interface address is allowed here. Illegal addresses, such as certain loopback addresses, SHOULD NOT be used. + SetIpv4Address(value PatternFlowRSVPPathRecordRouteType1Ipv4AddressIpv4Address) FlowRSVPPathRecordRouteType1Ipv4Address + // HasIpv4Address checks if Ipv4Address has been set in FlowRSVPPathRecordRouteType1Ipv4Address + HasIpv4Address() bool + // PrefixLength returns PatternFlowRSVPPathRecordRouteType1Ipv4AddressPrefixLength, set in FlowRSVPPathRecordRouteType1Ipv4Address. + // PatternFlowRSVPPathRecordRouteType1Ipv4AddressPrefixLength is prefix-length of ipv4 address. + PrefixLength() PatternFlowRSVPPathRecordRouteType1Ipv4AddressPrefixLength + // SetPrefixLength assigns PatternFlowRSVPPathRecordRouteType1Ipv4AddressPrefixLength provided by user to FlowRSVPPathRecordRouteType1Ipv4Address. + // PatternFlowRSVPPathRecordRouteType1Ipv4AddressPrefixLength is prefix-length of ipv4 address. + SetPrefixLength(value PatternFlowRSVPPathRecordRouteType1Ipv4AddressPrefixLength) FlowRSVPPathRecordRouteType1Ipv4Address + // HasPrefixLength checks if PrefixLength has been set in FlowRSVPPathRecordRouteType1Ipv4Address + HasPrefixLength() bool + // Flags returns FlowRSVPRecordRouteIPv4Flag, set in FlowRSVPPathRecordRouteType1Ipv4Address. + // FlowRSVPRecordRouteIPv4Flag is description is TBD + Flags() FlowRSVPRecordRouteIPv4Flag + // SetFlags assigns FlowRSVPRecordRouteIPv4Flag provided by user to FlowRSVPPathRecordRouteType1Ipv4Address. + // FlowRSVPRecordRouteIPv4Flag is description is TBD + SetFlags(value FlowRSVPRecordRouteIPv4Flag) FlowRSVPPathRecordRouteType1Ipv4Address + // HasFlags checks if Flags has been set in FlowRSVPPathRecordRouteType1Ipv4Address + HasFlags() bool + setNil() +} + +// The Length contains the total length of the subobject in bytes, including the Type and Length fields. The Length MUST be atleast 4, and MUST be a multiple of 4. +// Length returns a FlowRSVPRouteRecordLength +func (obj *flowRSVPPathRecordRouteType1Ipv4Address) Length() FlowRSVPRouteRecordLength { + if obj.obj.Length == nil { + obj.obj.Length = NewFlowRSVPRouteRecordLength().Msg() + } + if obj.lengthHolder == nil { + obj.lengthHolder = &flowRSVPRouteRecordLength{obj: obj.obj.Length} + } + return obj.lengthHolder +} + +// The Length contains the total length of the subobject in bytes, including the Type and Length fields. The Length MUST be atleast 4, and MUST be a multiple of 4. +// Length returns a FlowRSVPRouteRecordLength +func (obj *flowRSVPPathRecordRouteType1Ipv4Address) HasLength() bool { + return obj.obj.Length != nil +} + +// The Length contains the total length of the subobject in bytes, including the Type and Length fields. The Length MUST be atleast 4, and MUST be a multiple of 4. +// SetLength sets the FlowRSVPRouteRecordLength value in the FlowRSVPPathRecordRouteType1Ipv4Address object +func (obj *flowRSVPPathRecordRouteType1Ipv4Address) SetLength(value FlowRSVPRouteRecordLength) FlowRSVPPathRecordRouteType1Ipv4Address { + + obj.lengthHolder = nil + obj.obj.Length = value.Msg() + + return obj } -// MAC Address of the PE Router. -// RouterMac returns a string -func (obj *bgpExtendedCommunityTransitiveEvpnTypeRouterMac) RouterMac() string { +// description is TBD +// Ipv4Address returns a PatternFlowRSVPPathRecordRouteType1Ipv4AddressIpv4Address +func (obj *flowRSVPPathRecordRouteType1Ipv4Address) Ipv4Address() PatternFlowRSVPPathRecordRouteType1Ipv4AddressIpv4Address { + if obj.obj.Ipv4Address == nil { + obj.obj.Ipv4Address = NewPatternFlowRSVPPathRecordRouteType1Ipv4AddressIpv4Address().Msg() + } + if obj.ipv4AddressHolder == nil { + obj.ipv4AddressHolder = &patternFlowRSVPPathRecordRouteType1Ipv4AddressIpv4Address{obj: obj.obj.Ipv4Address} + } + return obj.ipv4AddressHolder +} - return *obj.obj.RouterMac +// description is TBD +// Ipv4Address returns a PatternFlowRSVPPathRecordRouteType1Ipv4AddressIpv4Address +func (obj *flowRSVPPathRecordRouteType1Ipv4Address) HasIpv4Address() bool { + return obj.obj.Ipv4Address != nil +} +// description is TBD +// SetIpv4Address sets the PatternFlowRSVPPathRecordRouteType1Ipv4AddressIpv4Address value in the FlowRSVPPathRecordRouteType1Ipv4Address object +func (obj *flowRSVPPathRecordRouteType1Ipv4Address) SetIpv4Address(value PatternFlowRSVPPathRecordRouteType1Ipv4AddressIpv4Address) FlowRSVPPathRecordRouteType1Ipv4Address { + + obj.ipv4AddressHolder = nil + obj.obj.Ipv4Address = value.Msg() + + return obj } -// MAC Address of the PE Router. -// RouterMac returns a string -func (obj *bgpExtendedCommunityTransitiveEvpnTypeRouterMac) HasRouterMac() bool { - return obj.obj.RouterMac != nil +// description is TBD +// PrefixLength returns a PatternFlowRSVPPathRecordRouteType1Ipv4AddressPrefixLength +func (obj *flowRSVPPathRecordRouteType1Ipv4Address) PrefixLength() PatternFlowRSVPPathRecordRouteType1Ipv4AddressPrefixLength { + if obj.obj.PrefixLength == nil { + obj.obj.PrefixLength = NewPatternFlowRSVPPathRecordRouteType1Ipv4AddressPrefixLength().Msg() + } + if obj.prefixLengthHolder == nil { + obj.prefixLengthHolder = &patternFlowRSVPPathRecordRouteType1Ipv4AddressPrefixLength{obj: obj.obj.PrefixLength} + } + return obj.prefixLengthHolder } -// MAC Address of the PE Router. -// SetRouterMac sets the string value in the BgpExtendedCommunityTransitiveEvpnTypeRouterMac object -func (obj *bgpExtendedCommunityTransitiveEvpnTypeRouterMac) SetRouterMac(value string) BgpExtendedCommunityTransitiveEvpnTypeRouterMac { +// description is TBD +// PrefixLength returns a PatternFlowRSVPPathRecordRouteType1Ipv4AddressPrefixLength +func (obj *flowRSVPPathRecordRouteType1Ipv4Address) HasPrefixLength() bool { + return obj.obj.PrefixLength != nil +} + +// description is TBD +// SetPrefixLength sets the PatternFlowRSVPPathRecordRouteType1Ipv4AddressPrefixLength value in the FlowRSVPPathRecordRouteType1Ipv4Address object +func (obj *flowRSVPPathRecordRouteType1Ipv4Address) SetPrefixLength(value PatternFlowRSVPPathRecordRouteType1Ipv4AddressPrefixLength) FlowRSVPPathRecordRouteType1Ipv4Address { + + obj.prefixLengthHolder = nil + obj.obj.PrefixLength = value.Msg() - obj.obj.RouterMac = &value return obj } -func (obj *bgpExtendedCommunityTransitiveEvpnTypeRouterMac) validateObj(vObj *validation, set_default bool) { +// 0x01 local_protection_available, 0x02 local_protection_in_use +// Flags returns a FlowRSVPRecordRouteIPv4Flag +func (obj *flowRSVPPathRecordRouteType1Ipv4Address) Flags() FlowRSVPRecordRouteIPv4Flag { + if obj.obj.Flags == nil { + obj.obj.Flags = NewFlowRSVPRecordRouteIPv4Flag().Msg() + } + if obj.flagsHolder == nil { + obj.flagsHolder = &flowRSVPRecordRouteIPv4Flag{obj: obj.obj.Flags} + } + return obj.flagsHolder +} + +// 0x01 local_protection_available, 0x02 local_protection_in_use +// Flags returns a FlowRSVPRecordRouteIPv4Flag +func (obj *flowRSVPPathRecordRouteType1Ipv4Address) HasFlags() bool { + return obj.obj.Flags != nil +} + +// 0x01 local_protection_available, 0x02 local_protection_in_use +// SetFlags sets the FlowRSVPRecordRouteIPv4Flag value in the FlowRSVPPathRecordRouteType1Ipv4Address object +func (obj *flowRSVPPathRecordRouteType1Ipv4Address) SetFlags(value FlowRSVPRecordRouteIPv4Flag) FlowRSVPPathRecordRouteType1Ipv4Address { + + obj.flagsHolder = nil + obj.obj.Flags = value.Msg() + + return obj +} + +func (obj *flowRSVPPathRecordRouteType1Ipv4Address) validateObj(vObj *validation, set_default bool) { if set_default { obj.setDefault() } - if obj.obj.RouterMac != nil { + if obj.obj.Length != nil { - err := obj.validateMac(obj.RouterMac()) - if err != nil { - vObj.validationErrors = append(vObj.validationErrors, fmt.Sprintf("%s %s", err.Error(), "on BgpExtendedCommunityTransitiveEvpnTypeRouterMac.RouterMac")) - } + obj.Length().validateObj(vObj, set_default) + } + if obj.obj.Ipv4Address != nil { + + obj.Ipv4Address().validateObj(vObj, set_default) } -} + if obj.obj.PrefixLength != nil { -func (obj *bgpExtendedCommunityTransitiveEvpnTypeRouterMac) setDefault() { - if obj.obj.RouterMac == nil { - obj.SetRouterMac("0:0:0:0:0:0") + obj.PrefixLength().validateObj(vObj, set_default) + } + + if obj.obj.Flags != nil { + + obj.Flags().validateObj(vObj, set_default) } } -// ***** BgpExtendedCommunityNonTransitive2OctetAsTypeLinkBandwidth ***** -type bgpExtendedCommunityNonTransitive2OctetAsTypeLinkBandwidth struct { +func (obj *flowRSVPPathRecordRouteType1Ipv4Address) setDefault() { + +} + +// ***** FlowRSVPPathRecordRouteType1Label ***** +type flowRSVPPathRecordRouteType1Label struct { validation - obj *otg.BgpExtendedCommunityNonTransitive2OctetAsTypeLinkBandwidth + obj *otg.FlowRSVPPathRecordRouteType1Label + lengthHolder FlowRSVPRouteRecordLength + flagsHolder PatternFlowRSVPPathRecordRouteType1LabelFlags + cTypeHolder PatternFlowRSVPPathRecordRouteType1LabelCType } -func NewBgpExtendedCommunityNonTransitive2OctetAsTypeLinkBandwidth() BgpExtendedCommunityNonTransitive2OctetAsTypeLinkBandwidth { - obj := bgpExtendedCommunityNonTransitive2OctetAsTypeLinkBandwidth{obj: &otg.BgpExtendedCommunityNonTransitive2OctetAsTypeLinkBandwidth{}} +func NewFlowRSVPPathRecordRouteType1Label() FlowRSVPPathRecordRouteType1Label { + obj := flowRSVPPathRecordRouteType1Label{obj: &otg.FlowRSVPPathRecordRouteType1Label{}} obj.setDefault() return &obj } -func (obj *bgpExtendedCommunityNonTransitive2OctetAsTypeLinkBandwidth) Msg() *otg.BgpExtendedCommunityNonTransitive2OctetAsTypeLinkBandwidth { +func (obj *flowRSVPPathRecordRouteType1Label) Msg() *otg.FlowRSVPPathRecordRouteType1Label { return obj.obj } -func (obj *bgpExtendedCommunityNonTransitive2OctetAsTypeLinkBandwidth) SetMsg(msg *otg.BgpExtendedCommunityNonTransitive2OctetAsTypeLinkBandwidth) BgpExtendedCommunityNonTransitive2OctetAsTypeLinkBandwidth { - +func (obj *flowRSVPPathRecordRouteType1Label) SetMsg(msg *otg.FlowRSVPPathRecordRouteType1Label) FlowRSVPPathRecordRouteType1Label { + obj.setNil() proto.Merge(obj.obj, msg) return obj } -func (obj *bgpExtendedCommunityNonTransitive2OctetAsTypeLinkBandwidth) ToProto() (*otg.BgpExtendedCommunityNonTransitive2OctetAsTypeLinkBandwidth, error) { +func (obj *flowRSVPPathRecordRouteType1Label) ToProto() (*otg.FlowRSVPPathRecordRouteType1Label, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -314983,7 +362730,7 @@ func (obj *bgpExtendedCommunityNonTransitive2OctetAsTypeLinkBandwidth) ToProto() return obj.Msg(), nil } -func (obj *bgpExtendedCommunityNonTransitive2OctetAsTypeLinkBandwidth) FromProto(msg *otg.BgpExtendedCommunityNonTransitive2OctetAsTypeLinkBandwidth) (BgpExtendedCommunityNonTransitive2OctetAsTypeLinkBandwidth, error) { +func (obj *flowRSVPPathRecordRouteType1Label) FromProto(msg *otg.FlowRSVPPathRecordRouteType1Label) (FlowRSVPPathRecordRouteType1Label, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -314992,7 +362739,7 @@ func (obj *bgpExtendedCommunityNonTransitive2OctetAsTypeLinkBandwidth) FromProto return newObj, nil } -func (obj *bgpExtendedCommunityNonTransitive2OctetAsTypeLinkBandwidth) ToPbText() (string, error) { +func (obj *flowRSVPPathRecordRouteType1Label) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -315004,12 +362751,12 @@ func (obj *bgpExtendedCommunityNonTransitive2OctetAsTypeLinkBandwidth) ToPbText( return string(protoMarshal), nil } -func (obj *bgpExtendedCommunityNonTransitive2OctetAsTypeLinkBandwidth) FromPbText(value string) error { +func (obj *flowRSVPPathRecordRouteType1Label) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj } - + obj.setNil() vErr := obj.validateToAndFrom() if vErr != nil { return vErr @@ -315017,7 +362764,7 @@ func (obj *bgpExtendedCommunityNonTransitive2OctetAsTypeLinkBandwidth) FromPbTex return retObj } -func (obj *bgpExtendedCommunityNonTransitive2OctetAsTypeLinkBandwidth) ToYaml() (string, error) { +func (obj *flowRSVPPathRecordRouteType1Label) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -315038,7 +362785,7 @@ func (obj *bgpExtendedCommunityNonTransitive2OctetAsTypeLinkBandwidth) ToYaml() return string(data), nil } -func (obj *bgpExtendedCommunityNonTransitive2OctetAsTypeLinkBandwidth) FromYaml(value string) error { +func (obj *flowRSVPPathRecordRouteType1Label) FromYaml(value string) error { if value == "" { value = "{}" } @@ -315055,7 +362802,7 @@ func (obj *bgpExtendedCommunityNonTransitive2OctetAsTypeLinkBandwidth) FromYaml( return fmt.Errorf("unmarshal error %s", strings.Replace( uError.Error(), "\u00a0", " ", -1)[7:]) } - + obj.setNil() vErr := obj.validateToAndFrom() if vErr != nil { return vErr @@ -315063,7 +362810,7 @@ func (obj *bgpExtendedCommunityNonTransitive2OctetAsTypeLinkBandwidth) FromYaml( return nil } -func (obj *bgpExtendedCommunityNonTransitive2OctetAsTypeLinkBandwidth) ToJson() (string, error) { +func (obj *flowRSVPPathRecordRouteType1Label) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -315081,7 +362828,7 @@ func (obj *bgpExtendedCommunityNonTransitive2OctetAsTypeLinkBandwidth) ToJson() return string(data), nil } -func (obj *bgpExtendedCommunityNonTransitive2OctetAsTypeLinkBandwidth) FromJson(value string) error { +func (obj *flowRSVPPathRecordRouteType1Label) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -315094,7 +362841,7 @@ func (obj *bgpExtendedCommunityNonTransitive2OctetAsTypeLinkBandwidth) FromJson( return fmt.Errorf("unmarshal error %s", strings.Replace( uError.Error(), "\u00a0", " ", -1)[7:]) } - + obj.setNil() err := obj.validateToAndFrom() if err != nil { return err @@ -315102,19 +362849,19 @@ func (obj *bgpExtendedCommunityNonTransitive2OctetAsTypeLinkBandwidth) FromJson( return nil } -func (obj *bgpExtendedCommunityNonTransitive2OctetAsTypeLinkBandwidth) validateToAndFrom() error { +func (obj *flowRSVPPathRecordRouteType1Label) validateToAndFrom() error { // emptyVars() obj.validateObj(&obj.validation, true) return obj.validationResult() } -func (obj *bgpExtendedCommunityNonTransitive2OctetAsTypeLinkBandwidth) Validate() error { +func (obj *flowRSVPPathRecordRouteType1Label) Validate() error { // emptyVars() obj.validateObj(&obj.validation, false) return obj.validationResult() } -func (obj *bgpExtendedCommunityNonTransitive2OctetAsTypeLinkBandwidth) String() string { +func (obj *flowRSVPPathRecordRouteType1Label) String() string { str, err := obj.ToYaml() if err != nil { return err.Error() @@ -315122,12 +362869,12 @@ func (obj *bgpExtendedCommunityNonTransitive2OctetAsTypeLinkBandwidth) String() return str } -func (obj *bgpExtendedCommunityNonTransitive2OctetAsTypeLinkBandwidth) Clone() (BgpExtendedCommunityNonTransitive2OctetAsTypeLinkBandwidth, error) { +func (obj *flowRSVPPathRecordRouteType1Label) Clone() (FlowRSVPPathRecordRouteType1Label, error) { vErr := obj.Validate() if vErr != nil { return nil, vErr } - newObj := NewBgpExtendedCommunityNonTransitive2OctetAsTypeLinkBandwidth() + newObj := NewFlowRSVPPathRecordRouteType1Label() data, err := proto.Marshal(obj.Msg()) if err != nil { return nil, err @@ -315139,159 +362886,251 @@ func (obj *bgpExtendedCommunityNonTransitive2OctetAsTypeLinkBandwidth) Clone() ( return newObj, nil } -// BgpExtendedCommunityNonTransitive2OctetAsTypeLinkBandwidth is the Link Bandwidth Extended Community attribute is defined in draft-ietf-idr-link-bandwidth. It is sent with sub-type as 0x04. -type BgpExtendedCommunityNonTransitive2OctetAsTypeLinkBandwidth interface { +func (obj *flowRSVPPathRecordRouteType1Label) setNil() { + obj.lengthHolder = nil + obj.flagsHolder = nil + obj.cTypeHolder = nil + obj.validationErrors = nil + obj.warnings = nil + obj.constraints = make(map[string]map[string]Constraints) +} + +// FlowRSVPPathRecordRouteType1Label is class = RECORD_ROUTE, Type1 ROUTE_RECORD C-Type = 1 Subobject: Label, C-Type: 3 +type FlowRSVPPathRecordRouteType1Label interface { Validation - // Msg marshals BgpExtendedCommunityNonTransitive2OctetAsTypeLinkBandwidth to protobuf object *otg.BgpExtendedCommunityNonTransitive2OctetAsTypeLinkBandwidth + // Msg marshals FlowRSVPPathRecordRouteType1Label to protobuf object *otg.FlowRSVPPathRecordRouteType1Label // and doesn't set defaults - Msg() *otg.BgpExtendedCommunityNonTransitive2OctetAsTypeLinkBandwidth - // SetMsg unmarshals BgpExtendedCommunityNonTransitive2OctetAsTypeLinkBandwidth from protobuf object *otg.BgpExtendedCommunityNonTransitive2OctetAsTypeLinkBandwidth + Msg() *otg.FlowRSVPPathRecordRouteType1Label + // SetMsg unmarshals FlowRSVPPathRecordRouteType1Label from protobuf object *otg.FlowRSVPPathRecordRouteType1Label // and doesn't set defaults - SetMsg(*otg.BgpExtendedCommunityNonTransitive2OctetAsTypeLinkBandwidth) BgpExtendedCommunityNonTransitive2OctetAsTypeLinkBandwidth - // ToProto marshals BgpExtendedCommunityNonTransitive2OctetAsTypeLinkBandwidth to protobuf object *otg.BgpExtendedCommunityNonTransitive2OctetAsTypeLinkBandwidth - ToProto() (*otg.BgpExtendedCommunityNonTransitive2OctetAsTypeLinkBandwidth, error) - // ToPbText marshals BgpExtendedCommunityNonTransitive2OctetAsTypeLinkBandwidth to protobuf text + SetMsg(*otg.FlowRSVPPathRecordRouteType1Label) FlowRSVPPathRecordRouteType1Label + // ToProto marshals FlowRSVPPathRecordRouteType1Label to protobuf object *otg.FlowRSVPPathRecordRouteType1Label + ToProto() (*otg.FlowRSVPPathRecordRouteType1Label, error) + // ToPbText marshals FlowRSVPPathRecordRouteType1Label to protobuf text ToPbText() (string, error) - // ToYaml marshals BgpExtendedCommunityNonTransitive2OctetAsTypeLinkBandwidth to YAML text + // ToYaml marshals FlowRSVPPathRecordRouteType1Label to YAML text ToYaml() (string, error) - // ToJson marshals BgpExtendedCommunityNonTransitive2OctetAsTypeLinkBandwidth to JSON text + // ToJson marshals FlowRSVPPathRecordRouteType1Label to JSON text ToJson() (string, error) - // FromProto unmarshals BgpExtendedCommunityNonTransitive2OctetAsTypeLinkBandwidth from protobuf object *otg.BgpExtendedCommunityNonTransitive2OctetAsTypeLinkBandwidth - FromProto(msg *otg.BgpExtendedCommunityNonTransitive2OctetAsTypeLinkBandwidth) (BgpExtendedCommunityNonTransitive2OctetAsTypeLinkBandwidth, error) - // FromPbText unmarshals BgpExtendedCommunityNonTransitive2OctetAsTypeLinkBandwidth from protobuf text + // FromProto unmarshals FlowRSVPPathRecordRouteType1Label from protobuf object *otg.FlowRSVPPathRecordRouteType1Label + FromProto(msg *otg.FlowRSVPPathRecordRouteType1Label) (FlowRSVPPathRecordRouteType1Label, error) + // FromPbText unmarshals FlowRSVPPathRecordRouteType1Label from protobuf text FromPbText(value string) error - // FromYaml unmarshals BgpExtendedCommunityNonTransitive2OctetAsTypeLinkBandwidth from YAML text + // FromYaml unmarshals FlowRSVPPathRecordRouteType1Label from YAML text FromYaml(value string) error - // FromJson unmarshals BgpExtendedCommunityNonTransitive2OctetAsTypeLinkBandwidth from JSON text + // FromJson unmarshals FlowRSVPPathRecordRouteType1Label from JSON text FromJson(value string) error - // Validate validates BgpExtendedCommunityNonTransitive2OctetAsTypeLinkBandwidth + // Validate validates FlowRSVPPathRecordRouteType1Label Validate() error // A stringer function String() string // Clones the object - Clone() (BgpExtendedCommunityNonTransitive2OctetAsTypeLinkBandwidth, error) + Clone() (FlowRSVPPathRecordRouteType1Label, error) validateToAndFrom() error validateObj(vObj *validation, set_default bool) setDefault() - // Global2ByteAs returns uint32, set in BgpExtendedCommunityNonTransitive2OctetAsTypeLinkBandwidth. - Global2ByteAs() uint32 - // SetGlobal2ByteAs assigns uint32 provided by user to BgpExtendedCommunityNonTransitive2OctetAsTypeLinkBandwidth - SetGlobal2ByteAs(value uint32) BgpExtendedCommunityNonTransitive2OctetAsTypeLinkBandwidth - // HasGlobal2ByteAs checks if Global2ByteAs has been set in BgpExtendedCommunityNonTransitive2OctetAsTypeLinkBandwidth - HasGlobal2ByteAs() bool - // Bandwidth returns float32, set in BgpExtendedCommunityNonTransitive2OctetAsTypeLinkBandwidth. - Bandwidth() float32 - // SetBandwidth assigns float32 provided by user to BgpExtendedCommunityNonTransitive2OctetAsTypeLinkBandwidth - SetBandwidth(value float32) BgpExtendedCommunityNonTransitive2OctetAsTypeLinkBandwidth - // HasBandwidth checks if Bandwidth has been set in BgpExtendedCommunityNonTransitive2OctetAsTypeLinkBandwidth - HasBandwidth() bool + // Length returns FlowRSVPRouteRecordLength, set in FlowRSVPPathRecordRouteType1Label. + // FlowRSVPRouteRecordLength is description is TBD + Length() FlowRSVPRouteRecordLength + // SetLength assigns FlowRSVPRouteRecordLength provided by user to FlowRSVPPathRecordRouteType1Label. + // FlowRSVPRouteRecordLength is description is TBD + SetLength(value FlowRSVPRouteRecordLength) FlowRSVPPathRecordRouteType1Label + // HasLength checks if Length has been set in FlowRSVPPathRecordRouteType1Label + HasLength() bool + // Flags returns PatternFlowRSVPPathRecordRouteType1LabelFlags, set in FlowRSVPPathRecordRouteType1Label. + // PatternFlowRSVPPathRecordRouteType1LabelFlags is 0x01 = Global label. This flag indicates that the label will be understood if received on any interface. + Flags() PatternFlowRSVPPathRecordRouteType1LabelFlags + // SetFlags assigns PatternFlowRSVPPathRecordRouteType1LabelFlags provided by user to FlowRSVPPathRecordRouteType1Label. + // PatternFlowRSVPPathRecordRouteType1LabelFlags is 0x01 = Global label. This flag indicates that the label will be understood if received on any interface. + SetFlags(value PatternFlowRSVPPathRecordRouteType1LabelFlags) FlowRSVPPathRecordRouteType1Label + // HasFlags checks if Flags has been set in FlowRSVPPathRecordRouteType1Label + HasFlags() bool + // CType returns PatternFlowRSVPPathRecordRouteType1LabelCType, set in FlowRSVPPathRecordRouteType1Label. + // PatternFlowRSVPPathRecordRouteType1LabelCType is the C-Type of the included Label Object. Copied from the Label object. + CType() PatternFlowRSVPPathRecordRouteType1LabelCType + // SetCType assigns PatternFlowRSVPPathRecordRouteType1LabelCType provided by user to FlowRSVPPathRecordRouteType1Label. + // PatternFlowRSVPPathRecordRouteType1LabelCType is the C-Type of the included Label Object. Copied from the Label object. + SetCType(value PatternFlowRSVPPathRecordRouteType1LabelCType) FlowRSVPPathRecordRouteType1Label + // HasCType checks if CType has been set in FlowRSVPPathRecordRouteType1Label + HasCType() bool + // ContentsOfLabelObejct returns string, set in FlowRSVPPathRecordRouteType1Label. + ContentsOfLabelObejct() string + // SetContentsOfLabelObejct assigns string provided by user to FlowRSVPPathRecordRouteType1Label + SetContentsOfLabelObejct(value string) FlowRSVPPathRecordRouteType1Label + // HasContentsOfLabelObejct checks if ContentsOfLabelObejct has been set in FlowRSVPPathRecordRouteType1Label + HasContentsOfLabelObejct() bool + setNil() } -// The value of the Global Administrator subfield should represent the Autonomous System of the router that attaches the Link Bandwidth Community. If four octet AS numbering scheme is used, AS_TRANS (23456) should be used. -// Global2ByteAs returns a uint32 -func (obj *bgpExtendedCommunityNonTransitive2OctetAsTypeLinkBandwidth) Global2ByteAs() uint32 { +// The Length contains the total length of the subobject in bytes, including the Type and Length fields. The Length MUST be atleast 4, and MUST be a multiple of 4. +// Length returns a FlowRSVPRouteRecordLength +func (obj *flowRSVPPathRecordRouteType1Label) Length() FlowRSVPRouteRecordLength { + if obj.obj.Length == nil { + obj.obj.Length = NewFlowRSVPRouteRecordLength().Msg() + } + if obj.lengthHolder == nil { + obj.lengthHolder = &flowRSVPRouteRecordLength{obj: obj.obj.Length} + } + return obj.lengthHolder +} - return *obj.obj.Global_2ByteAs +// The Length contains the total length of the subobject in bytes, including the Type and Length fields. The Length MUST be atleast 4, and MUST be a multiple of 4. +// Length returns a FlowRSVPRouteRecordLength +func (obj *flowRSVPPathRecordRouteType1Label) HasLength() bool { + return obj.obj.Length != nil +} + +// The Length contains the total length of the subobject in bytes, including the Type and Length fields. The Length MUST be atleast 4, and MUST be a multiple of 4. +// SetLength sets the FlowRSVPRouteRecordLength value in the FlowRSVPPathRecordRouteType1Label object +func (obj *flowRSVPPathRecordRouteType1Label) SetLength(value FlowRSVPRouteRecordLength) FlowRSVPPathRecordRouteType1Label { + obj.lengthHolder = nil + obj.obj.Length = value.Msg() + + return obj } -// The value of the Global Administrator subfield should represent the Autonomous System of the router that attaches the Link Bandwidth Community. If four octet AS numbering scheme is used, AS_TRANS (23456) should be used. -// Global2ByteAs returns a uint32 -func (obj *bgpExtendedCommunityNonTransitive2OctetAsTypeLinkBandwidth) HasGlobal2ByteAs() bool { - return obj.obj.Global_2ByteAs != nil +// description is TBD +// Flags returns a PatternFlowRSVPPathRecordRouteType1LabelFlags +func (obj *flowRSVPPathRecordRouteType1Label) Flags() PatternFlowRSVPPathRecordRouteType1LabelFlags { + if obj.obj.Flags == nil { + obj.obj.Flags = NewPatternFlowRSVPPathRecordRouteType1LabelFlags().Msg() + } + if obj.flagsHolder == nil { + obj.flagsHolder = &patternFlowRSVPPathRecordRouteType1LabelFlags{obj: obj.obj.Flags} + } + return obj.flagsHolder } -// The value of the Global Administrator subfield should represent the Autonomous System of the router that attaches the Link Bandwidth Community. If four octet AS numbering scheme is used, AS_TRANS (23456) should be used. -// SetGlobal2ByteAs sets the uint32 value in the BgpExtendedCommunityNonTransitive2OctetAsTypeLinkBandwidth object -func (obj *bgpExtendedCommunityNonTransitive2OctetAsTypeLinkBandwidth) SetGlobal2ByteAs(value uint32) BgpExtendedCommunityNonTransitive2OctetAsTypeLinkBandwidth { +// description is TBD +// Flags returns a PatternFlowRSVPPathRecordRouteType1LabelFlags +func (obj *flowRSVPPathRecordRouteType1Label) HasFlags() bool { + return obj.obj.Flags != nil +} + +// description is TBD +// SetFlags sets the PatternFlowRSVPPathRecordRouteType1LabelFlags value in the FlowRSVPPathRecordRouteType1Label object +func (obj *flowRSVPPathRecordRouteType1Label) SetFlags(value PatternFlowRSVPPathRecordRouteType1LabelFlags) FlowRSVPPathRecordRouteType1Label { + + obj.flagsHolder = nil + obj.obj.Flags = value.Msg() - obj.obj.Global_2ByteAs = &value return obj } -// Bandwidth of the link in bytes per second. ( 1 Kbps is 1000 bytes per second and 1 Mbps is 1000 Kbps per second ) -// Bandwidth returns a float32 -func (obj *bgpExtendedCommunityNonTransitive2OctetAsTypeLinkBandwidth) Bandwidth() float32 { +// description is TBD +// CType returns a PatternFlowRSVPPathRecordRouteType1LabelCType +func (obj *flowRSVPPathRecordRouteType1Label) CType() PatternFlowRSVPPathRecordRouteType1LabelCType { + if obj.obj.CType == nil { + obj.obj.CType = NewPatternFlowRSVPPathRecordRouteType1LabelCType().Msg() + } + if obj.cTypeHolder == nil { + obj.cTypeHolder = &patternFlowRSVPPathRecordRouteType1LabelCType{obj: obj.obj.CType} + } + return obj.cTypeHolder +} - return *obj.obj.Bandwidth +// description is TBD +// CType returns a PatternFlowRSVPPathRecordRouteType1LabelCType +func (obj *flowRSVPPathRecordRouteType1Label) HasCType() bool { + return obj.obj.CType != nil +} +// description is TBD +// SetCType sets the PatternFlowRSVPPathRecordRouteType1LabelCType value in the FlowRSVPPathRecordRouteType1Label object +func (obj *flowRSVPPathRecordRouteType1Label) SetCType(value PatternFlowRSVPPathRecordRouteType1LabelCType) FlowRSVPPathRecordRouteType1Label { + + obj.cTypeHolder = nil + obj.obj.CType = value.Msg() + + return obj } -// Bandwidth of the link in bytes per second. ( 1 Kbps is 1000 bytes per second and 1 Mbps is 1000 Kbps per second ) -// Bandwidth returns a float32 -func (obj *bgpExtendedCommunityNonTransitive2OctetAsTypeLinkBandwidth) HasBandwidth() bool { - return obj.obj.Bandwidth != nil +// The contents of the Label Object. Copied from the Label Object. +// ContentsOfLabelObejct returns a string +func (obj *flowRSVPPathRecordRouteType1Label) ContentsOfLabelObejct() string { + + return *obj.obj.ContentsOfLabelObejct + } -// Bandwidth of the link in bytes per second. ( 1 Kbps is 1000 bytes per second and 1 Mbps is 1000 Kbps per second ) -// SetBandwidth sets the float32 value in the BgpExtendedCommunityNonTransitive2OctetAsTypeLinkBandwidth object -func (obj *bgpExtendedCommunityNonTransitive2OctetAsTypeLinkBandwidth) SetBandwidth(value float32) BgpExtendedCommunityNonTransitive2OctetAsTypeLinkBandwidth { +// The contents of the Label Object. Copied from the Label Object. +// ContentsOfLabelObejct returns a string +func (obj *flowRSVPPathRecordRouteType1Label) HasContentsOfLabelObejct() bool { + return obj.obj.ContentsOfLabelObejct != nil +} - obj.obj.Bandwidth = &value +// The contents of the Label Object. Copied from the Label Object. +// SetContentsOfLabelObejct sets the string value in the FlowRSVPPathRecordRouteType1Label object +func (obj *flowRSVPPathRecordRouteType1Label) SetContentsOfLabelObejct(value string) FlowRSVPPathRecordRouteType1Label { + + obj.obj.ContentsOfLabelObejct = &value return obj } -func (obj *bgpExtendedCommunityNonTransitive2OctetAsTypeLinkBandwidth) validateObj(vObj *validation, set_default bool) { +func (obj *flowRSVPPathRecordRouteType1Label) validateObj(vObj *validation, set_default bool) { if set_default { obj.setDefault() } - if obj.obj.Global_2ByteAs != nil { + if obj.obj.Length != nil { - if *obj.obj.Global_2ByteAs > 65535 { - vObj.validationErrors = append( - vObj.validationErrors, - fmt.Sprintf("0 <= BgpExtendedCommunityNonTransitive2OctetAsTypeLinkBandwidth.Global_2ByteAs <= 65535 but Got %d", *obj.obj.Global_2ByteAs)) + obj.Length().validateObj(vObj, set_default) + } + + if obj.obj.Flags != nil { + + obj.Flags().validateObj(vObj, set_default) + } + + if obj.obj.CType != nil { + + obj.CType().validateObj(vObj, set_default) + } + + if obj.obj.ContentsOfLabelObejct != nil { + + err := obj.validateHex(obj.ContentsOfLabelObejct()) + if err != nil { + vObj.validationErrors = append(vObj.validationErrors, fmt.Sprintf("%s %s", err.Error(), "on FlowRSVPPathRecordRouteType1Label.ContentsOfLabelObejct")) } } } -func (obj *bgpExtendedCommunityNonTransitive2OctetAsTypeLinkBandwidth) setDefault() { - if obj.obj.Global_2ByteAs == nil { - obj.SetGlobal2ByteAs(100) - } - if obj.obj.Bandwidth == nil { - obj.SetBandwidth(0) +func (obj *flowRSVPPathRecordRouteType1Label) setDefault() { + if obj.obj.ContentsOfLabelObejct == nil { + obj.SetContentsOfLabelObejct("00") } } -// ***** BgpSrteSegment ***** -type bgpSrteSegment struct { +// ***** PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixLBit ***** +type patternFlowRSVPPathExplicitRouteType1Ipv4PrefixLBit struct { validation - obj *otg.BgpSrteSegment - typeAHolder BgpSrteSegmentATypeSubTlv - typeBHolder BgpSrteSegmentBTypeSubTlv - typeCHolder BgpSrteSegmentCTypeSubTlv - typeDHolder BgpSrteSegmentDTypeSubTlv - typeEHolder BgpSrteSegmentETypeSubTlv - typeFHolder BgpSrteSegmentFTypeSubTlv - typeGHolder BgpSrteSegmentGTypeSubTlv - typeHHolder BgpSrteSegmentHTypeSubTlv - typeIHolder BgpSrteSegmentITypeSubTlv - typeJHolder BgpSrteSegmentJTypeSubTlv - typeKHolder BgpSrteSegmentKTypeSubTlv + obj *otg.PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixLBit + incrementHolder PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixLBitCounter + decrementHolder PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixLBitCounter } -func NewBgpSrteSegment() BgpSrteSegment { - obj := bgpSrteSegment{obj: &otg.BgpSrteSegment{}} +func NewPatternFlowRSVPPathExplicitRouteType1Ipv4PrefixLBit() PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixLBit { + obj := patternFlowRSVPPathExplicitRouteType1Ipv4PrefixLBit{obj: &otg.PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixLBit{}} obj.setDefault() return &obj } -func (obj *bgpSrteSegment) Msg() *otg.BgpSrteSegment { +func (obj *patternFlowRSVPPathExplicitRouteType1Ipv4PrefixLBit) Msg() *otg.PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixLBit { return obj.obj } -func (obj *bgpSrteSegment) SetMsg(msg *otg.BgpSrteSegment) BgpSrteSegment { +func (obj *patternFlowRSVPPathExplicitRouteType1Ipv4PrefixLBit) SetMsg(msg *otg.PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixLBit) PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixLBit { obj.setNil() proto.Merge(obj.obj, msg) return obj } -func (obj *bgpSrteSegment) ToProto() (*otg.BgpSrteSegment, error) { +func (obj *patternFlowRSVPPathExplicitRouteType1Ipv4PrefixLBit) ToProto() (*otg.PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixLBit, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -315299,7 +363138,7 @@ func (obj *bgpSrteSegment) ToProto() (*otg.BgpSrteSegment, error) { return obj.Msg(), nil } -func (obj *bgpSrteSegment) FromProto(msg *otg.BgpSrteSegment) (BgpSrteSegment, error) { +func (obj *patternFlowRSVPPathExplicitRouteType1Ipv4PrefixLBit) FromProto(msg *otg.PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixLBit) (PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixLBit, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -315308,7 +363147,7 @@ func (obj *bgpSrteSegment) FromProto(msg *otg.BgpSrteSegment) (BgpSrteSegment, e return newObj, nil } -func (obj *bgpSrteSegment) ToPbText() (string, error) { +func (obj *patternFlowRSVPPathExplicitRouteType1Ipv4PrefixLBit) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -315320,7 +363159,7 @@ func (obj *bgpSrteSegment) ToPbText() (string, error) { return string(protoMarshal), nil } -func (obj *bgpSrteSegment) FromPbText(value string) error { +func (obj *patternFlowRSVPPathExplicitRouteType1Ipv4PrefixLBit) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj @@ -315333,7 +363172,7 @@ func (obj *bgpSrteSegment) FromPbText(value string) error { return retObj } -func (obj *bgpSrteSegment) ToYaml() (string, error) { +func (obj *patternFlowRSVPPathExplicitRouteType1Ipv4PrefixLBit) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -315354,7 +363193,7 @@ func (obj *bgpSrteSegment) ToYaml() (string, error) { return string(data), nil } -func (obj *bgpSrteSegment) FromYaml(value string) error { +func (obj *patternFlowRSVPPathExplicitRouteType1Ipv4PrefixLBit) FromYaml(value string) error { if value == "" { value = "{}" } @@ -315379,7 +363218,7 @@ func (obj *bgpSrteSegment) FromYaml(value string) error { return nil } -func (obj *bgpSrteSegment) ToJson() (string, error) { +func (obj *patternFlowRSVPPathExplicitRouteType1Ipv4PrefixLBit) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -315397,7 +363236,7 @@ func (obj *bgpSrteSegment) ToJson() (string, error) { return string(data), nil } -func (obj *bgpSrteSegment) FromJson(value string) error { +func (obj *patternFlowRSVPPathExplicitRouteType1Ipv4PrefixLBit) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -315418,19 +363257,19 @@ func (obj *bgpSrteSegment) FromJson(value string) error { return nil } -func (obj *bgpSrteSegment) validateToAndFrom() error { +func (obj *patternFlowRSVPPathExplicitRouteType1Ipv4PrefixLBit) validateToAndFrom() error { // emptyVars() obj.validateObj(&obj.validation, true) return obj.validationResult() } -func (obj *bgpSrteSegment) Validate() error { +func (obj *patternFlowRSVPPathExplicitRouteType1Ipv4PrefixLBit) Validate() error { // emptyVars() obj.validateObj(&obj.validation, false) return obj.validationResult() } -func (obj *bgpSrteSegment) String() string { +func (obj *patternFlowRSVPPathExplicitRouteType1Ipv4PrefixLBit) String() string { str, err := obj.ToYaml() if err != nil { return err.Error() @@ -315438,12 +363277,12 @@ func (obj *bgpSrteSegment) String() string { return str } -func (obj *bgpSrteSegment) Clone() (BgpSrteSegment, error) { +func (obj *patternFlowRSVPPathExplicitRouteType1Ipv4PrefixLBit) Clone() (PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixLBit, error) { vErr := obj.Validate() if vErr != nil { return nil, vErr } - newObj := NewBgpSrteSegment() + newObj := NewPatternFlowRSVPPathExplicitRouteType1Ipv4PrefixLBit() data, err := proto.Marshal(obj.Msg()) if err != nil { return nil, err @@ -315455,656 +363294,319 @@ func (obj *bgpSrteSegment) Clone() (BgpSrteSegment, error) { return newObj, nil } -func (obj *bgpSrteSegment) setNil() { - obj.typeAHolder = nil - obj.typeBHolder = nil - obj.typeCHolder = nil - obj.typeDHolder = nil - obj.typeEHolder = nil - obj.typeFHolder = nil - obj.typeGHolder = nil - obj.typeHHolder = nil - obj.typeIHolder = nil - obj.typeJHolder = nil - obj.typeKHolder = nil +func (obj *patternFlowRSVPPathExplicitRouteType1Ipv4PrefixLBit) setNil() { + obj.incrementHolder = nil + obj.decrementHolder = nil obj.validationErrors = nil obj.warnings = nil obj.constraints = make(map[string]map[string]Constraints) } -// BgpSrteSegment is a Segment sub-TLV describes a single segment in a segment list i.e., a single element of the explicit path. The Segment sub-TLVs are optional. -type BgpSrteSegment interface { +// PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixLBit is the L bit is an attribute of the subobject.The L bit is set if the subobject represents a loose hop in the explicit route. If the bit is not set, the subobject represents a strict hop in the explicit route. +type PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixLBit interface { Validation - // Msg marshals BgpSrteSegment to protobuf object *otg.BgpSrteSegment + // Msg marshals PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixLBit to protobuf object *otg.PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixLBit // and doesn't set defaults - Msg() *otg.BgpSrteSegment - // SetMsg unmarshals BgpSrteSegment from protobuf object *otg.BgpSrteSegment + Msg() *otg.PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixLBit + // SetMsg unmarshals PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixLBit from protobuf object *otg.PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixLBit // and doesn't set defaults - SetMsg(*otg.BgpSrteSegment) BgpSrteSegment - // ToProto marshals BgpSrteSegment to protobuf object *otg.BgpSrteSegment - ToProto() (*otg.BgpSrteSegment, error) - // ToPbText marshals BgpSrteSegment to protobuf text + SetMsg(*otg.PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixLBit) PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixLBit + // ToProto marshals PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixLBit to protobuf object *otg.PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixLBit + ToProto() (*otg.PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixLBit, error) + // ToPbText marshals PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixLBit to protobuf text ToPbText() (string, error) - // ToYaml marshals BgpSrteSegment to YAML text + // ToYaml marshals PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixLBit to YAML text ToYaml() (string, error) - // ToJson marshals BgpSrteSegment to JSON text + // ToJson marshals PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixLBit to JSON text ToJson() (string, error) - // FromProto unmarshals BgpSrteSegment from protobuf object *otg.BgpSrteSegment - FromProto(msg *otg.BgpSrteSegment) (BgpSrteSegment, error) - // FromPbText unmarshals BgpSrteSegment from protobuf text + // FromProto unmarshals PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixLBit from protobuf object *otg.PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixLBit + FromProto(msg *otg.PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixLBit) (PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixLBit, error) + // FromPbText unmarshals PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixLBit from protobuf text FromPbText(value string) error - // FromYaml unmarshals BgpSrteSegment from YAML text + // FromYaml unmarshals PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixLBit from YAML text FromYaml(value string) error - // FromJson unmarshals BgpSrteSegment from JSON text + // FromJson unmarshals PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixLBit from JSON text FromJson(value string) error - // Validate validates BgpSrteSegment + // Validate validates PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixLBit Validate() error // A stringer function String() string // Clones the object - Clone() (BgpSrteSegment, error) + Clone() (PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixLBit, error) validateToAndFrom() error validateObj(vObj *validation, set_default bool) setDefault() - // SegmentType returns BgpSrteSegmentSegmentTypeEnum, set in BgpSrteSegment - SegmentType() BgpSrteSegmentSegmentTypeEnum - // SetSegmentType assigns BgpSrteSegmentSegmentTypeEnum provided by user to BgpSrteSegment - SetSegmentType(value BgpSrteSegmentSegmentTypeEnum) BgpSrteSegment - // TypeA returns BgpSrteSegmentATypeSubTlv, set in BgpSrteSegment. - // BgpSrteSegmentATypeSubTlv is type A: SID only, in the form of MPLS Label. - TypeA() BgpSrteSegmentATypeSubTlv - // SetTypeA assigns BgpSrteSegmentATypeSubTlv provided by user to BgpSrteSegment. - // BgpSrteSegmentATypeSubTlv is type A: SID only, in the form of MPLS Label. - SetTypeA(value BgpSrteSegmentATypeSubTlv) BgpSrteSegment - // HasTypeA checks if TypeA has been set in BgpSrteSegment - HasTypeA() bool - // TypeB returns BgpSrteSegmentBTypeSubTlv, set in BgpSrteSegment. - // BgpSrteSegmentBTypeSubTlv is type B: SID only, in the form of IPv6 address. - TypeB() BgpSrteSegmentBTypeSubTlv - // SetTypeB assigns BgpSrteSegmentBTypeSubTlv provided by user to BgpSrteSegment. - // BgpSrteSegmentBTypeSubTlv is type B: SID only, in the form of IPv6 address. - SetTypeB(value BgpSrteSegmentBTypeSubTlv) BgpSrteSegment - // HasTypeB checks if TypeB has been set in BgpSrteSegment - HasTypeB() bool - // TypeC returns BgpSrteSegmentCTypeSubTlv, set in BgpSrteSegment. - // BgpSrteSegmentCTypeSubTlv is type C: IPv4 Node Address with optional SID. - TypeC() BgpSrteSegmentCTypeSubTlv - // SetTypeC assigns BgpSrteSegmentCTypeSubTlv provided by user to BgpSrteSegment. - // BgpSrteSegmentCTypeSubTlv is type C: IPv4 Node Address with optional SID. - SetTypeC(value BgpSrteSegmentCTypeSubTlv) BgpSrteSegment - // HasTypeC checks if TypeC has been set in BgpSrteSegment - HasTypeC() bool - // TypeD returns BgpSrteSegmentDTypeSubTlv, set in BgpSrteSegment. - // BgpSrteSegmentDTypeSubTlv is type D: IPv6 Node Address with optional SID for SR MPLS. - TypeD() BgpSrteSegmentDTypeSubTlv - // SetTypeD assigns BgpSrteSegmentDTypeSubTlv provided by user to BgpSrteSegment. - // BgpSrteSegmentDTypeSubTlv is type D: IPv6 Node Address with optional SID for SR MPLS. - SetTypeD(value BgpSrteSegmentDTypeSubTlv) BgpSrteSegment - // HasTypeD checks if TypeD has been set in BgpSrteSegment - HasTypeD() bool - // TypeE returns BgpSrteSegmentETypeSubTlv, set in BgpSrteSegment. - // BgpSrteSegmentETypeSubTlv is type E: IPv4 Address and Local Interface ID with optional SID - TypeE() BgpSrteSegmentETypeSubTlv - // SetTypeE assigns BgpSrteSegmentETypeSubTlv provided by user to BgpSrteSegment. - // BgpSrteSegmentETypeSubTlv is type E: IPv4 Address and Local Interface ID with optional SID - SetTypeE(value BgpSrteSegmentETypeSubTlv) BgpSrteSegment - // HasTypeE checks if TypeE has been set in BgpSrteSegment - HasTypeE() bool - // TypeF returns BgpSrteSegmentFTypeSubTlv, set in BgpSrteSegment. - // BgpSrteSegmentFTypeSubTlv is type F: IPv4 Local and Remote addresses with optional SID. - TypeF() BgpSrteSegmentFTypeSubTlv - // SetTypeF assigns BgpSrteSegmentFTypeSubTlv provided by user to BgpSrteSegment. - // BgpSrteSegmentFTypeSubTlv is type F: IPv4 Local and Remote addresses with optional SID. - SetTypeF(value BgpSrteSegmentFTypeSubTlv) BgpSrteSegment - // HasTypeF checks if TypeF has been set in BgpSrteSegment - HasTypeF() bool - // TypeG returns BgpSrteSegmentGTypeSubTlv, set in BgpSrteSegment. - // BgpSrteSegmentGTypeSubTlv is type G: IPv6 Address, Interface ID for local and remote pair with optional SID for SR MPLS. - TypeG() BgpSrteSegmentGTypeSubTlv - // SetTypeG assigns BgpSrteSegmentGTypeSubTlv provided by user to BgpSrteSegment. - // BgpSrteSegmentGTypeSubTlv is type G: IPv6 Address, Interface ID for local and remote pair with optional SID for SR MPLS. - SetTypeG(value BgpSrteSegmentGTypeSubTlv) BgpSrteSegment - // HasTypeG checks if TypeG has been set in BgpSrteSegment - HasTypeG() bool - // TypeH returns BgpSrteSegmentHTypeSubTlv, set in BgpSrteSegment. - // BgpSrteSegmentHTypeSubTlv is type H: IPv6 Local and Remote addresses with optional SID for SR MPLS. - TypeH() BgpSrteSegmentHTypeSubTlv - // SetTypeH assigns BgpSrteSegmentHTypeSubTlv provided by user to BgpSrteSegment. - // BgpSrteSegmentHTypeSubTlv is type H: IPv6 Local and Remote addresses with optional SID for SR MPLS. - SetTypeH(value BgpSrteSegmentHTypeSubTlv) BgpSrteSegment - // HasTypeH checks if TypeH has been set in BgpSrteSegment - HasTypeH() bool - // TypeI returns BgpSrteSegmentITypeSubTlv, set in BgpSrteSegment. - // BgpSrteSegmentITypeSubTlv is type I: IPv6 Node Address with optional SRv6 SID. - TypeI() BgpSrteSegmentITypeSubTlv - // SetTypeI assigns BgpSrteSegmentITypeSubTlv provided by user to BgpSrteSegment. - // BgpSrteSegmentITypeSubTlv is type I: IPv6 Node Address with optional SRv6 SID. - SetTypeI(value BgpSrteSegmentITypeSubTlv) BgpSrteSegment - // HasTypeI checks if TypeI has been set in BgpSrteSegment - HasTypeI() bool - // TypeJ returns BgpSrteSegmentJTypeSubTlv, set in BgpSrteSegment. - // BgpSrteSegmentJTypeSubTlv is type J: IPv6 Address, Interface ID for local and remote pair for SRv6 with optional SID. - TypeJ() BgpSrteSegmentJTypeSubTlv - // SetTypeJ assigns BgpSrteSegmentJTypeSubTlv provided by user to BgpSrteSegment. - // BgpSrteSegmentJTypeSubTlv is type J: IPv6 Address, Interface ID for local and remote pair for SRv6 with optional SID. - SetTypeJ(value BgpSrteSegmentJTypeSubTlv) BgpSrteSegment - // HasTypeJ checks if TypeJ has been set in BgpSrteSegment - HasTypeJ() bool - // TypeK returns BgpSrteSegmentKTypeSubTlv, set in BgpSrteSegment. - // BgpSrteSegmentKTypeSubTlv is type K: IPv6 Local and Remote addresses for SRv6 with optional SID. - TypeK() BgpSrteSegmentKTypeSubTlv - // SetTypeK assigns BgpSrteSegmentKTypeSubTlv provided by user to BgpSrteSegment. - // BgpSrteSegmentKTypeSubTlv is type K: IPv6 Local and Remote addresses for SRv6 with optional SID. - SetTypeK(value BgpSrteSegmentKTypeSubTlv) BgpSrteSegment - // HasTypeK checks if TypeK has been set in BgpSrteSegment - HasTypeK() bool - // Name returns string, set in BgpSrteSegment. - Name() string - // SetName assigns string provided by user to BgpSrteSegment - SetName(value string) BgpSrteSegment - // Active returns bool, set in BgpSrteSegment. - Active() bool - // SetActive assigns bool provided by user to BgpSrteSegment - SetActive(value bool) BgpSrteSegment - // HasActive checks if Active has been set in BgpSrteSegment - HasActive() bool + // Choice returns PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixLBitChoiceEnum, set in PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixLBit + Choice() PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixLBitChoiceEnum + // SetChoice assigns PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixLBitChoiceEnum provided by user to PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixLBit + SetChoice(value PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixLBitChoiceEnum) PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixLBit + // HasChoice checks if Choice has been set in PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixLBit + HasChoice() bool + // Value returns uint32, set in PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixLBit. + Value() uint32 + // SetValue assigns uint32 provided by user to PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixLBit + SetValue(value uint32) PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixLBit + // HasValue checks if Value has been set in PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixLBit + HasValue() bool + // Values returns []uint32, set in PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixLBit. + Values() []uint32 + // SetValues assigns []uint32 provided by user to PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixLBit + SetValues(value []uint32) PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixLBit + // Increment returns PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixLBitCounter, set in PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixLBit. + // PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixLBitCounter is integer counter pattern + Increment() PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixLBitCounter + // SetIncrement assigns PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixLBitCounter provided by user to PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixLBit. + // PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixLBitCounter is integer counter pattern + SetIncrement(value PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixLBitCounter) PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixLBit + // HasIncrement checks if Increment has been set in PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixLBit + HasIncrement() bool + // Decrement returns PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixLBitCounter, set in PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixLBit. + // PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixLBitCounter is integer counter pattern + Decrement() PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixLBitCounter + // SetDecrement assigns PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixLBitCounter provided by user to PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixLBit. + // PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixLBitCounter is integer counter pattern + SetDecrement(value PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixLBitCounter) PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixLBit + // HasDecrement checks if Decrement has been set in PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixLBit + HasDecrement() bool setNil() } -type BgpSrteSegmentSegmentTypeEnum string +type PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixLBitChoiceEnum string -// Enum of SegmentType on BgpSrteSegment -var BgpSrteSegmentSegmentType = struct { - TYPE_A BgpSrteSegmentSegmentTypeEnum - TYPE_B BgpSrteSegmentSegmentTypeEnum - TYPE_C BgpSrteSegmentSegmentTypeEnum - TYPE_D BgpSrteSegmentSegmentTypeEnum - TYPE_E BgpSrteSegmentSegmentTypeEnum - TYPE_F BgpSrteSegmentSegmentTypeEnum - TYPE_G BgpSrteSegmentSegmentTypeEnum - TYPE_H BgpSrteSegmentSegmentTypeEnum - TYPE_I BgpSrteSegmentSegmentTypeEnum - TYPE_J BgpSrteSegmentSegmentTypeEnum - TYPE_K BgpSrteSegmentSegmentTypeEnum +// Enum of Choice on PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixLBit +var PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixLBitChoice = struct { + VALUE PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixLBitChoiceEnum + VALUES PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixLBitChoiceEnum + INCREMENT PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixLBitChoiceEnum + DECREMENT PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixLBitChoiceEnum }{ - TYPE_A: BgpSrteSegmentSegmentTypeEnum("type_a"), - TYPE_B: BgpSrteSegmentSegmentTypeEnum("type_b"), - TYPE_C: BgpSrteSegmentSegmentTypeEnum("type_c"), - TYPE_D: BgpSrteSegmentSegmentTypeEnum("type_d"), - TYPE_E: BgpSrteSegmentSegmentTypeEnum("type_e"), - TYPE_F: BgpSrteSegmentSegmentTypeEnum("type_f"), - TYPE_G: BgpSrteSegmentSegmentTypeEnum("type_g"), - TYPE_H: BgpSrteSegmentSegmentTypeEnum("type_h"), - TYPE_I: BgpSrteSegmentSegmentTypeEnum("type_i"), - TYPE_J: BgpSrteSegmentSegmentTypeEnum("type_j"), - TYPE_K: BgpSrteSegmentSegmentTypeEnum("type_k"), + VALUE: PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixLBitChoiceEnum("value"), + VALUES: PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixLBitChoiceEnum("values"), + INCREMENT: PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixLBitChoiceEnum("increment"), + DECREMENT: PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixLBitChoiceEnum("decrement"), } -func (obj *bgpSrteSegment) SegmentType() BgpSrteSegmentSegmentTypeEnum { - return BgpSrteSegmentSegmentTypeEnum(obj.obj.SegmentType.Enum().String()) +func (obj *patternFlowRSVPPathExplicitRouteType1Ipv4PrefixLBit) Choice() PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixLBitChoiceEnum { + return PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixLBitChoiceEnum(obj.obj.Choice.Enum().String()) } -func (obj *bgpSrteSegment) SetSegmentType(value BgpSrteSegmentSegmentTypeEnum) BgpSrteSegment { - intValue, ok := otg.BgpSrteSegment_SegmentType_Enum_value[string(value)] +// description is TBD +// Choice returns a string +func (obj *patternFlowRSVPPathExplicitRouteType1Ipv4PrefixLBit) HasChoice() bool { + return obj.obj.Choice != nil +} + +func (obj *patternFlowRSVPPathExplicitRouteType1Ipv4PrefixLBit) SetChoice(value PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixLBitChoiceEnum) PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixLBit { + intValue, ok := otg.PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixLBit_Choice_Enum_value[string(value)] if !ok { obj.validationErrors = append(obj.validationErrors, fmt.Sprintf( - "%s is not a valid choice on BgpSrteSegmentSegmentTypeEnum", string(value))) + "%s is not a valid choice on PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixLBitChoiceEnum", string(value))) return obj } - enumValue := otg.BgpSrteSegment_SegmentType_Enum(intValue) - obj.obj.SegmentType = &enumValue - - return obj -} + enumValue := otg.PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixLBit_Choice_Enum(intValue) + obj.obj.Choice = &enumValue + obj.obj.Decrement = nil + obj.decrementHolder = nil + obj.obj.Increment = nil + obj.incrementHolder = nil + obj.obj.Values = nil + obj.obj.Value = nil -// description is TBD -// TypeA returns a BgpSrteSegmentATypeSubTlv -func (obj *bgpSrteSegment) TypeA() BgpSrteSegmentATypeSubTlv { - if obj.obj.TypeA == nil { - obj.obj.TypeA = NewBgpSrteSegmentATypeSubTlv().Msg() - } - if obj.typeAHolder == nil { - obj.typeAHolder = &bgpSrteSegmentATypeSubTlv{obj: obj.obj.TypeA} + if value == PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixLBitChoice.VALUE { + defaultValue := uint32(0) + obj.obj.Value = &defaultValue } - return obj.typeAHolder -} - -// description is TBD -// TypeA returns a BgpSrteSegmentATypeSubTlv -func (obj *bgpSrteSegment) HasTypeA() bool { - return obj.obj.TypeA != nil -} - -// description is TBD -// SetTypeA sets the BgpSrteSegmentATypeSubTlv value in the BgpSrteSegment object -func (obj *bgpSrteSegment) SetTypeA(value BgpSrteSegmentATypeSubTlv) BgpSrteSegment { - - obj.typeAHolder = nil - obj.obj.TypeA = value.Msg() - - return obj -} -// description is TBD -// TypeB returns a BgpSrteSegmentBTypeSubTlv -func (obj *bgpSrteSegment) TypeB() BgpSrteSegmentBTypeSubTlv { - if obj.obj.TypeB == nil { - obj.obj.TypeB = NewBgpSrteSegmentBTypeSubTlv().Msg() - } - if obj.typeBHolder == nil { - obj.typeBHolder = &bgpSrteSegmentBTypeSubTlv{obj: obj.obj.TypeB} + if value == PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixLBitChoice.VALUES { + defaultValue := []uint32{0} + obj.obj.Values = defaultValue } - return obj.typeBHolder -} - -// description is TBD -// TypeB returns a BgpSrteSegmentBTypeSubTlv -func (obj *bgpSrteSegment) HasTypeB() bool { - return obj.obj.TypeB != nil -} - -// description is TBD -// SetTypeB sets the BgpSrteSegmentBTypeSubTlv value in the BgpSrteSegment object -func (obj *bgpSrteSegment) SetTypeB(value BgpSrteSegmentBTypeSubTlv) BgpSrteSegment { - - obj.typeBHolder = nil - obj.obj.TypeB = value.Msg() - - return obj -} -// description is TBD -// TypeC returns a BgpSrteSegmentCTypeSubTlv -func (obj *bgpSrteSegment) TypeC() BgpSrteSegmentCTypeSubTlv { - if obj.obj.TypeC == nil { - obj.obj.TypeC = NewBgpSrteSegmentCTypeSubTlv().Msg() - } - if obj.typeCHolder == nil { - obj.typeCHolder = &bgpSrteSegmentCTypeSubTlv{obj: obj.obj.TypeC} + if value == PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixLBitChoice.INCREMENT { + obj.obj.Increment = NewPatternFlowRSVPPathExplicitRouteType1Ipv4PrefixLBitCounter().Msg() } - return obj.typeCHolder -} - -// description is TBD -// TypeC returns a BgpSrteSegmentCTypeSubTlv -func (obj *bgpSrteSegment) HasTypeC() bool { - return obj.obj.TypeC != nil -} -// description is TBD -// SetTypeC sets the BgpSrteSegmentCTypeSubTlv value in the BgpSrteSegment object -func (obj *bgpSrteSegment) SetTypeC(value BgpSrteSegmentCTypeSubTlv) BgpSrteSegment { - - obj.typeCHolder = nil - obj.obj.TypeC = value.Msg() - - return obj -} - -// description is TBD -// TypeD returns a BgpSrteSegmentDTypeSubTlv -func (obj *bgpSrteSegment) TypeD() BgpSrteSegmentDTypeSubTlv { - if obj.obj.TypeD == nil { - obj.obj.TypeD = NewBgpSrteSegmentDTypeSubTlv().Msg() - } - if obj.typeDHolder == nil { - obj.typeDHolder = &bgpSrteSegmentDTypeSubTlv{obj: obj.obj.TypeD} + if value == PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixLBitChoice.DECREMENT { + obj.obj.Decrement = NewPatternFlowRSVPPathExplicitRouteType1Ipv4PrefixLBitCounter().Msg() } - return obj.typeDHolder -} - -// description is TBD -// TypeD returns a BgpSrteSegmentDTypeSubTlv -func (obj *bgpSrteSegment) HasTypeD() bool { - return obj.obj.TypeD != nil -} - -// description is TBD -// SetTypeD sets the BgpSrteSegmentDTypeSubTlv value in the BgpSrteSegment object -func (obj *bgpSrteSegment) SetTypeD(value BgpSrteSegmentDTypeSubTlv) BgpSrteSegment { - - obj.typeDHolder = nil - obj.obj.TypeD = value.Msg() return obj } // description is TBD -// TypeE returns a BgpSrteSegmentETypeSubTlv -func (obj *bgpSrteSegment) TypeE() BgpSrteSegmentETypeSubTlv { - if obj.obj.TypeE == nil { - obj.obj.TypeE = NewBgpSrteSegmentETypeSubTlv().Msg() - } - if obj.typeEHolder == nil { - obj.typeEHolder = &bgpSrteSegmentETypeSubTlv{obj: obj.obj.TypeE} - } - return obj.typeEHolder -} - -// description is TBD -// TypeE returns a BgpSrteSegmentETypeSubTlv -func (obj *bgpSrteSegment) HasTypeE() bool { - return obj.obj.TypeE != nil -} - -// description is TBD -// SetTypeE sets the BgpSrteSegmentETypeSubTlv value in the BgpSrteSegment object -func (obj *bgpSrteSegment) SetTypeE(value BgpSrteSegmentETypeSubTlv) BgpSrteSegment { - - obj.typeEHolder = nil - obj.obj.TypeE = value.Msg() - - return obj -} +// Value returns a uint32 +func (obj *patternFlowRSVPPathExplicitRouteType1Ipv4PrefixLBit) Value() uint32 { -// description is TBD -// TypeF returns a BgpSrteSegmentFTypeSubTlv -func (obj *bgpSrteSegment) TypeF() BgpSrteSegmentFTypeSubTlv { - if obj.obj.TypeF == nil { - obj.obj.TypeF = NewBgpSrteSegmentFTypeSubTlv().Msg() - } - if obj.typeFHolder == nil { - obj.typeFHolder = &bgpSrteSegmentFTypeSubTlv{obj: obj.obj.TypeF} + if obj.obj.Value == nil { + obj.SetChoice(PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixLBitChoice.VALUE) } - return obj.typeFHolder -} - -// description is TBD -// TypeF returns a BgpSrteSegmentFTypeSubTlv -func (obj *bgpSrteSegment) HasTypeF() bool { - return obj.obj.TypeF != nil -} - -// description is TBD -// SetTypeF sets the BgpSrteSegmentFTypeSubTlv value in the BgpSrteSegment object -func (obj *bgpSrteSegment) SetTypeF(value BgpSrteSegmentFTypeSubTlv) BgpSrteSegment { - - obj.typeFHolder = nil - obj.obj.TypeF = value.Msg() - return obj -} + return *obj.obj.Value -// description is TBD -// TypeG returns a BgpSrteSegmentGTypeSubTlv -func (obj *bgpSrteSegment) TypeG() BgpSrteSegmentGTypeSubTlv { - if obj.obj.TypeG == nil { - obj.obj.TypeG = NewBgpSrteSegmentGTypeSubTlv().Msg() - } - if obj.typeGHolder == nil { - obj.typeGHolder = &bgpSrteSegmentGTypeSubTlv{obj: obj.obj.TypeG} - } - return obj.typeGHolder } // description is TBD -// TypeG returns a BgpSrteSegmentGTypeSubTlv -func (obj *bgpSrteSegment) HasTypeG() bool { - return obj.obj.TypeG != nil +// Value returns a uint32 +func (obj *patternFlowRSVPPathExplicitRouteType1Ipv4PrefixLBit) HasValue() bool { + return obj.obj.Value != nil } // description is TBD -// SetTypeG sets the BgpSrteSegmentGTypeSubTlv value in the BgpSrteSegment object -func (obj *bgpSrteSegment) SetTypeG(value BgpSrteSegmentGTypeSubTlv) BgpSrteSegment { - - obj.typeGHolder = nil - obj.obj.TypeG = value.Msg() - +// SetValue sets the uint32 value in the PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixLBit object +func (obj *patternFlowRSVPPathExplicitRouteType1Ipv4PrefixLBit) SetValue(value uint32) PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixLBit { + obj.SetChoice(PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixLBitChoice.VALUE) + obj.obj.Value = &value return obj } // description is TBD -// TypeH returns a BgpSrteSegmentHTypeSubTlv -func (obj *bgpSrteSegment) TypeH() BgpSrteSegmentHTypeSubTlv { - if obj.obj.TypeH == nil { - obj.obj.TypeH = NewBgpSrteSegmentHTypeSubTlv().Msg() - } - if obj.typeHHolder == nil { - obj.typeHHolder = &bgpSrteSegmentHTypeSubTlv{obj: obj.obj.TypeH} +// Values returns a []uint32 +func (obj *patternFlowRSVPPathExplicitRouteType1Ipv4PrefixLBit) Values() []uint32 { + if obj.obj.Values == nil { + obj.SetValues([]uint32{0}) } - return obj.typeHHolder -} - -// description is TBD -// TypeH returns a BgpSrteSegmentHTypeSubTlv -func (obj *bgpSrteSegment) HasTypeH() bool { - return obj.obj.TypeH != nil -} - -// description is TBD -// SetTypeH sets the BgpSrteSegmentHTypeSubTlv value in the BgpSrteSegment object -func (obj *bgpSrteSegment) SetTypeH(value BgpSrteSegmentHTypeSubTlv) BgpSrteSegment { - - obj.typeHHolder = nil - obj.obj.TypeH = value.Msg() - - return obj + return obj.obj.Values } // description is TBD -// TypeI returns a BgpSrteSegmentITypeSubTlv -func (obj *bgpSrteSegment) TypeI() BgpSrteSegmentITypeSubTlv { - if obj.obj.TypeI == nil { - obj.obj.TypeI = NewBgpSrteSegmentITypeSubTlv().Msg() - } - if obj.typeIHolder == nil { - obj.typeIHolder = &bgpSrteSegmentITypeSubTlv{obj: obj.obj.TypeI} +// SetValues sets the []uint32 value in the PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixLBit object +func (obj *patternFlowRSVPPathExplicitRouteType1Ipv4PrefixLBit) SetValues(value []uint32) PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixLBit { + obj.SetChoice(PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixLBitChoice.VALUES) + if obj.obj.Values == nil { + obj.obj.Values = make([]uint32, 0) } - return obj.typeIHolder -} - -// description is TBD -// TypeI returns a BgpSrteSegmentITypeSubTlv -func (obj *bgpSrteSegment) HasTypeI() bool { - return obj.obj.TypeI != nil -} - -// description is TBD -// SetTypeI sets the BgpSrteSegmentITypeSubTlv value in the BgpSrteSegment object -func (obj *bgpSrteSegment) SetTypeI(value BgpSrteSegmentITypeSubTlv) BgpSrteSegment { - - obj.typeIHolder = nil - obj.obj.TypeI = value.Msg() + obj.obj.Values = value return obj } // description is TBD -// TypeJ returns a BgpSrteSegmentJTypeSubTlv -func (obj *bgpSrteSegment) TypeJ() BgpSrteSegmentJTypeSubTlv { - if obj.obj.TypeJ == nil { - obj.obj.TypeJ = NewBgpSrteSegmentJTypeSubTlv().Msg() +// Increment returns a PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixLBitCounter +func (obj *patternFlowRSVPPathExplicitRouteType1Ipv4PrefixLBit) Increment() PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixLBitCounter { + if obj.obj.Increment == nil { + obj.SetChoice(PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixLBitChoice.INCREMENT) } - if obj.typeJHolder == nil { - obj.typeJHolder = &bgpSrteSegmentJTypeSubTlv{obj: obj.obj.TypeJ} + if obj.incrementHolder == nil { + obj.incrementHolder = &patternFlowRSVPPathExplicitRouteType1Ipv4PrefixLBitCounter{obj: obj.obj.Increment} } - return obj.typeJHolder + return obj.incrementHolder } // description is TBD -// TypeJ returns a BgpSrteSegmentJTypeSubTlv -func (obj *bgpSrteSegment) HasTypeJ() bool { - return obj.obj.TypeJ != nil +// Increment returns a PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixLBitCounter +func (obj *patternFlowRSVPPathExplicitRouteType1Ipv4PrefixLBit) HasIncrement() bool { + return obj.obj.Increment != nil } // description is TBD -// SetTypeJ sets the BgpSrteSegmentJTypeSubTlv value in the BgpSrteSegment object -func (obj *bgpSrteSegment) SetTypeJ(value BgpSrteSegmentJTypeSubTlv) BgpSrteSegment { - - obj.typeJHolder = nil - obj.obj.TypeJ = value.Msg() +// SetIncrement sets the PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixLBitCounter value in the PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixLBit object +func (obj *patternFlowRSVPPathExplicitRouteType1Ipv4PrefixLBit) SetIncrement(value PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixLBitCounter) PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixLBit { + obj.SetChoice(PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixLBitChoice.INCREMENT) + obj.incrementHolder = nil + obj.obj.Increment = value.Msg() return obj } // description is TBD -// TypeK returns a BgpSrteSegmentKTypeSubTlv -func (obj *bgpSrteSegment) TypeK() BgpSrteSegmentKTypeSubTlv { - if obj.obj.TypeK == nil { - obj.obj.TypeK = NewBgpSrteSegmentKTypeSubTlv().Msg() +// Decrement returns a PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixLBitCounter +func (obj *patternFlowRSVPPathExplicitRouteType1Ipv4PrefixLBit) Decrement() PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixLBitCounter { + if obj.obj.Decrement == nil { + obj.SetChoice(PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixLBitChoice.DECREMENT) } - if obj.typeKHolder == nil { - obj.typeKHolder = &bgpSrteSegmentKTypeSubTlv{obj: obj.obj.TypeK} + if obj.decrementHolder == nil { + obj.decrementHolder = &patternFlowRSVPPathExplicitRouteType1Ipv4PrefixLBitCounter{obj: obj.obj.Decrement} } - return obj.typeKHolder + return obj.decrementHolder } // description is TBD -// TypeK returns a BgpSrteSegmentKTypeSubTlv -func (obj *bgpSrteSegment) HasTypeK() bool { - return obj.obj.TypeK != nil +// Decrement returns a PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixLBitCounter +func (obj *patternFlowRSVPPathExplicitRouteType1Ipv4PrefixLBit) HasDecrement() bool { + return obj.obj.Decrement != nil } // description is TBD -// SetTypeK sets the BgpSrteSegmentKTypeSubTlv value in the BgpSrteSegment object -func (obj *bgpSrteSegment) SetTypeK(value BgpSrteSegmentKTypeSubTlv) BgpSrteSegment { - - obj.typeKHolder = nil - obj.obj.TypeK = value.Msg() - - return obj -} - -// Globally unique name of an object. It also serves as the primary key for arrays of objects. -// Name returns a string -func (obj *bgpSrteSegment) Name() string { - - return *obj.obj.Name - -} - -// Globally unique name of an object. It also serves as the primary key for arrays of objects. -// SetName sets the string value in the BgpSrteSegment object -func (obj *bgpSrteSegment) SetName(value string) BgpSrteSegment { - - obj.obj.Name = &value - return obj -} - -// If enabled means that this part of the configuration including any active 'children' nodes will be advertised to peer. If disabled, this means that though config is present, it is not taking any part of the test but can be activated at run-time to advertise just this part of the configuration to the peer. -// Active returns a bool -func (obj *bgpSrteSegment) Active() bool { - - return *obj.obj.Active - -} - -// If enabled means that this part of the configuration including any active 'children' nodes will be advertised to peer. If disabled, this means that though config is present, it is not taking any part of the test but can be activated at run-time to advertise just this part of the configuration to the peer. -// Active returns a bool -func (obj *bgpSrteSegment) HasActive() bool { - return obj.obj.Active != nil -} - -// If enabled means that this part of the configuration including any active 'children' nodes will be advertised to peer. If disabled, this means that though config is present, it is not taking any part of the test but can be activated at run-time to advertise just this part of the configuration to the peer. -// SetActive sets the bool value in the BgpSrteSegment object -func (obj *bgpSrteSegment) SetActive(value bool) BgpSrteSegment { +// SetDecrement sets the PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixLBitCounter value in the PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixLBit object +func (obj *patternFlowRSVPPathExplicitRouteType1Ipv4PrefixLBit) SetDecrement(value PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixLBitCounter) PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixLBit { + obj.SetChoice(PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixLBitChoice.DECREMENT) + obj.decrementHolder = nil + obj.obj.Decrement = value.Msg() - obj.obj.Active = &value return obj } -func (obj *bgpSrteSegment) validateObj(vObj *validation, set_default bool) { +func (obj *patternFlowRSVPPathExplicitRouteType1Ipv4PrefixLBit) validateObj(vObj *validation, set_default bool) { if set_default { obj.setDefault() } - // SegmentType is required - if obj.obj.SegmentType == nil { - vObj.validationErrors = append(vObj.validationErrors, "SegmentType is required field on interface BgpSrteSegment") - } - - if obj.obj.TypeA != nil { - - obj.TypeA().validateObj(vObj, set_default) - } - - if obj.obj.TypeB != nil { - - obj.TypeB().validateObj(vObj, set_default) - } - - if obj.obj.TypeC != nil { - - obj.TypeC().validateObj(vObj, set_default) - } - - if obj.obj.TypeD != nil { - - obj.TypeD().validateObj(vObj, set_default) - } - - if obj.obj.TypeE != nil { - - obj.TypeE().validateObj(vObj, set_default) - } - - if obj.obj.TypeF != nil { - - obj.TypeF().validateObj(vObj, set_default) - } + if obj.obj.Value != nil { - if obj.obj.TypeG != nil { + if *obj.obj.Value > 1 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("0 <= PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixLBit.Value <= 1 but Got %d", *obj.obj.Value)) + } - obj.TypeG().validateObj(vObj, set_default) } - if obj.obj.TypeH != nil { + if obj.obj.Values != nil { - obj.TypeH().validateObj(vObj, set_default) - } + for _, item := range obj.obj.Values { + if item > 1 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("min(uint32) <= PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixLBit.Values <= 1 but Got %d", item)) + } - if obj.obj.TypeI != nil { + } - obj.TypeI().validateObj(vObj, set_default) } - if obj.obj.TypeJ != nil { + if obj.obj.Increment != nil { - obj.TypeJ().validateObj(vObj, set_default) + obj.Increment().validateObj(vObj, set_default) } - if obj.obj.TypeK != nil { + if obj.obj.Decrement != nil { - obj.TypeK().validateObj(vObj, set_default) + obj.Decrement().validateObj(vObj, set_default) } - // Name is required - if obj.obj.Name == nil { - vObj.validationErrors = append(vObj.validationErrors, "Name is required field on interface BgpSrteSegment") - } } -func (obj *bgpSrteSegment) setDefault() { - if obj.obj.Active == nil { - obj.SetActive(true) +func (obj *patternFlowRSVPPathExplicitRouteType1Ipv4PrefixLBit) setDefault() { + if obj.obj.Choice == nil { + obj.SetChoice(PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixLBitChoice.VALUE) + } } -// ***** BgpV6EviVxlanBroadcastDomain ***** -type bgpV6EviVxlanBroadcastDomain struct { +// ***** FlowRSVPExplicitRouteLength ***** +type flowRSVPExplicitRouteLength struct { validation - obj *otg.BgpV6EviVxlanBroadcastDomain - cmacIpRangeHolder BgpV6EviVxlanBroadcastDomainBgpCMacIpRangeIter + obj *otg.FlowRSVPExplicitRouteLength } -func NewBgpV6EviVxlanBroadcastDomain() BgpV6EviVxlanBroadcastDomain { - obj := bgpV6EviVxlanBroadcastDomain{obj: &otg.BgpV6EviVxlanBroadcastDomain{}} +func NewFlowRSVPExplicitRouteLength() FlowRSVPExplicitRouteLength { + obj := flowRSVPExplicitRouteLength{obj: &otg.FlowRSVPExplicitRouteLength{}} obj.setDefault() return &obj } -func (obj *bgpV6EviVxlanBroadcastDomain) Msg() *otg.BgpV6EviVxlanBroadcastDomain { +func (obj *flowRSVPExplicitRouteLength) Msg() *otg.FlowRSVPExplicitRouteLength { return obj.obj } -func (obj *bgpV6EviVxlanBroadcastDomain) SetMsg(msg *otg.BgpV6EviVxlanBroadcastDomain) BgpV6EviVxlanBroadcastDomain { - obj.setNil() +func (obj *flowRSVPExplicitRouteLength) SetMsg(msg *otg.FlowRSVPExplicitRouteLength) FlowRSVPExplicitRouteLength { + proto.Merge(obj.obj, msg) return obj } -func (obj *bgpV6EviVxlanBroadcastDomain) ToProto() (*otg.BgpV6EviVxlanBroadcastDomain, error) { +func (obj *flowRSVPExplicitRouteLength) ToProto() (*otg.FlowRSVPExplicitRouteLength, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -316112,7 +363614,7 @@ func (obj *bgpV6EviVxlanBroadcastDomain) ToProto() (*otg.BgpV6EviVxlanBroadcastD return obj.Msg(), nil } -func (obj *bgpV6EviVxlanBroadcastDomain) FromProto(msg *otg.BgpV6EviVxlanBroadcastDomain) (BgpV6EviVxlanBroadcastDomain, error) { +func (obj *flowRSVPExplicitRouteLength) FromProto(msg *otg.FlowRSVPExplicitRouteLength) (FlowRSVPExplicitRouteLength, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -316121,7 +363623,7 @@ func (obj *bgpV6EviVxlanBroadcastDomain) FromProto(msg *otg.BgpV6EviVxlanBroadca return newObj, nil } -func (obj *bgpV6EviVxlanBroadcastDomain) ToPbText() (string, error) { +func (obj *flowRSVPExplicitRouteLength) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -316133,12 +363635,12 @@ func (obj *bgpV6EviVxlanBroadcastDomain) ToPbText() (string, error) { return string(protoMarshal), nil } -func (obj *bgpV6EviVxlanBroadcastDomain) FromPbText(value string) error { +func (obj *flowRSVPExplicitRouteLength) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj } - obj.setNil() + vErr := obj.validateToAndFrom() if vErr != nil { return vErr @@ -316146,7 +363648,7 @@ func (obj *bgpV6EviVxlanBroadcastDomain) FromPbText(value string) error { return retObj } -func (obj *bgpV6EviVxlanBroadcastDomain) ToYaml() (string, error) { +func (obj *flowRSVPExplicitRouteLength) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -316167,7 +363669,7 @@ func (obj *bgpV6EviVxlanBroadcastDomain) ToYaml() (string, error) { return string(data), nil } -func (obj *bgpV6EviVxlanBroadcastDomain) FromYaml(value string) error { +func (obj *flowRSVPExplicitRouteLength) FromYaml(value string) error { if value == "" { value = "{}" } @@ -316184,7 +363686,7 @@ func (obj *bgpV6EviVxlanBroadcastDomain) FromYaml(value string) error { return fmt.Errorf("unmarshal error %s", strings.Replace( uError.Error(), "\u00a0", " ", -1)[7:]) } - obj.setNil() + vErr := obj.validateToAndFrom() if vErr != nil { return vErr @@ -316192,7 +363694,7 @@ func (obj *bgpV6EviVxlanBroadcastDomain) FromYaml(value string) error { return nil } -func (obj *bgpV6EviVxlanBroadcastDomain) ToJson() (string, error) { +func (obj *flowRSVPExplicitRouteLength) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -316210,7 +363712,7 @@ func (obj *bgpV6EviVxlanBroadcastDomain) ToJson() (string, error) { return string(data), nil } -func (obj *bgpV6EviVxlanBroadcastDomain) FromJson(value string) error { +func (obj *flowRSVPExplicitRouteLength) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -316223,7 +363725,7 @@ func (obj *bgpV6EviVxlanBroadcastDomain) FromJson(value string) error { return fmt.Errorf("unmarshal error %s", strings.Replace( uError.Error(), "\u00a0", " ", -1)[7:]) } - obj.setNil() + err := obj.validateToAndFrom() if err != nil { return err @@ -316231,19 +363733,19 @@ func (obj *bgpV6EviVxlanBroadcastDomain) FromJson(value string) error { return nil } -func (obj *bgpV6EviVxlanBroadcastDomain) validateToAndFrom() error { +func (obj *flowRSVPExplicitRouteLength) validateToAndFrom() error { // emptyVars() obj.validateObj(&obj.validation, true) return obj.validationResult() } -func (obj *bgpV6EviVxlanBroadcastDomain) Validate() error { +func (obj *flowRSVPExplicitRouteLength) Validate() error { // emptyVars() obj.validateObj(&obj.validation, false) return obj.validationResult() } -func (obj *bgpV6EviVxlanBroadcastDomain) String() string { +func (obj *flowRSVPExplicitRouteLength) String() string { str, err := obj.ToYaml() if err != nil { return err.Error() @@ -316251,12 +363753,12 @@ func (obj *bgpV6EviVxlanBroadcastDomain) String() string { return str } -func (obj *bgpV6EviVxlanBroadcastDomain) Clone() (BgpV6EviVxlanBroadcastDomain, error) { +func (obj *flowRSVPExplicitRouteLength) Clone() (FlowRSVPExplicitRouteLength, error) { vErr := obj.Validate() if vErr != nil { return nil, vErr } - newObj := NewBgpV6EviVxlanBroadcastDomain() + newObj := NewFlowRSVPExplicitRouteLength() data, err := proto.Marshal(obj.Msg()) if err != nil { return nil, err @@ -316268,259 +363770,208 @@ func (obj *bgpV6EviVxlanBroadcastDomain) Clone() (BgpV6EviVxlanBroadcastDomain, return newObj, nil } -func (obj *bgpV6EviVxlanBroadcastDomain) setNil() { - obj.cmacIpRangeHolder = nil - obj.validationErrors = nil - obj.warnings = nil - obj.constraints = make(map[string]map[string]Constraints) -} - -// BgpV6EviVxlanBroadcastDomain is configuration for Broadcast Domains per EVI. -type BgpV6EviVxlanBroadcastDomain interface { +// FlowRSVPExplicitRouteLength is description is TBD +type FlowRSVPExplicitRouteLength interface { Validation - // Msg marshals BgpV6EviVxlanBroadcastDomain to protobuf object *otg.BgpV6EviVxlanBroadcastDomain + // Msg marshals FlowRSVPExplicitRouteLength to protobuf object *otg.FlowRSVPExplicitRouteLength // and doesn't set defaults - Msg() *otg.BgpV6EviVxlanBroadcastDomain - // SetMsg unmarshals BgpV6EviVxlanBroadcastDomain from protobuf object *otg.BgpV6EviVxlanBroadcastDomain + Msg() *otg.FlowRSVPExplicitRouteLength + // SetMsg unmarshals FlowRSVPExplicitRouteLength from protobuf object *otg.FlowRSVPExplicitRouteLength // and doesn't set defaults - SetMsg(*otg.BgpV6EviVxlanBroadcastDomain) BgpV6EviVxlanBroadcastDomain - // ToProto marshals BgpV6EviVxlanBroadcastDomain to protobuf object *otg.BgpV6EviVxlanBroadcastDomain - ToProto() (*otg.BgpV6EviVxlanBroadcastDomain, error) - // ToPbText marshals BgpV6EviVxlanBroadcastDomain to protobuf text + SetMsg(*otg.FlowRSVPExplicitRouteLength) FlowRSVPExplicitRouteLength + // ToProto marshals FlowRSVPExplicitRouteLength to protobuf object *otg.FlowRSVPExplicitRouteLength + ToProto() (*otg.FlowRSVPExplicitRouteLength, error) + // ToPbText marshals FlowRSVPExplicitRouteLength to protobuf text ToPbText() (string, error) - // ToYaml marshals BgpV6EviVxlanBroadcastDomain to YAML text + // ToYaml marshals FlowRSVPExplicitRouteLength to YAML text ToYaml() (string, error) - // ToJson marshals BgpV6EviVxlanBroadcastDomain to JSON text + // ToJson marshals FlowRSVPExplicitRouteLength to JSON text ToJson() (string, error) - // FromProto unmarshals BgpV6EviVxlanBroadcastDomain from protobuf object *otg.BgpV6EviVxlanBroadcastDomain - FromProto(msg *otg.BgpV6EviVxlanBroadcastDomain) (BgpV6EviVxlanBroadcastDomain, error) - // FromPbText unmarshals BgpV6EviVxlanBroadcastDomain from protobuf text + // FromProto unmarshals FlowRSVPExplicitRouteLength from protobuf object *otg.FlowRSVPExplicitRouteLength + FromProto(msg *otg.FlowRSVPExplicitRouteLength) (FlowRSVPExplicitRouteLength, error) + // FromPbText unmarshals FlowRSVPExplicitRouteLength from protobuf text FromPbText(value string) error - // FromYaml unmarshals BgpV6EviVxlanBroadcastDomain from YAML text + // FromYaml unmarshals FlowRSVPExplicitRouteLength from YAML text FromYaml(value string) error - // FromJson unmarshals BgpV6EviVxlanBroadcastDomain from JSON text + // FromJson unmarshals FlowRSVPExplicitRouteLength from JSON text FromJson(value string) error - // Validate validates BgpV6EviVxlanBroadcastDomain + // Validate validates FlowRSVPExplicitRouteLength Validate() error // A stringer function String() string // Clones the object - Clone() (BgpV6EviVxlanBroadcastDomain, error) + Clone() (FlowRSVPExplicitRouteLength, error) validateToAndFrom() error validateObj(vObj *validation, set_default bool) setDefault() - // CmacIpRange returns BgpV6EviVxlanBroadcastDomainBgpCMacIpRangeIterIter, set in BgpV6EviVxlanBroadcastDomain - CmacIpRange() BgpV6EviVxlanBroadcastDomainBgpCMacIpRangeIter - // EthernetTagId returns uint32, set in BgpV6EviVxlanBroadcastDomain. - EthernetTagId() uint32 - // SetEthernetTagId assigns uint32 provided by user to BgpV6EviVxlanBroadcastDomain - SetEthernetTagId(value uint32) BgpV6EviVxlanBroadcastDomain - // HasEthernetTagId checks if EthernetTagId has been set in BgpV6EviVxlanBroadcastDomain - HasEthernetTagId() bool - // VlanAwareService returns bool, set in BgpV6EviVxlanBroadcastDomain. - VlanAwareService() bool - // SetVlanAwareService assigns bool provided by user to BgpV6EviVxlanBroadcastDomain - SetVlanAwareService(value bool) BgpV6EviVxlanBroadcastDomain - // HasVlanAwareService checks if VlanAwareService has been set in BgpV6EviVxlanBroadcastDomain - HasVlanAwareService() bool - setNil() + // Choice returns FlowRSVPExplicitRouteLengthChoiceEnum, set in FlowRSVPExplicitRouteLength + Choice() FlowRSVPExplicitRouteLengthChoiceEnum + // SetChoice assigns FlowRSVPExplicitRouteLengthChoiceEnum provided by user to FlowRSVPExplicitRouteLength + SetChoice(value FlowRSVPExplicitRouteLengthChoiceEnum) FlowRSVPExplicitRouteLength + // HasChoice checks if Choice has been set in FlowRSVPExplicitRouteLength + HasChoice() bool + // Auto returns uint32, set in FlowRSVPExplicitRouteLength. + Auto() uint32 + // HasAuto checks if Auto has been set in FlowRSVPExplicitRouteLength + HasAuto() bool + // Value returns uint32, set in FlowRSVPExplicitRouteLength. + Value() uint32 + // SetValue assigns uint32 provided by user to FlowRSVPExplicitRouteLength + SetValue(value uint32) FlowRSVPExplicitRouteLength + // HasValue checks if Value has been set in FlowRSVPExplicitRouteLength + HasValue() bool } -// This contains the list of Customer MAC/IP Ranges to be configured per Broadcast Domain. -// -// Advertises following route - -// Type 2 - MAC/IP Advertisement Route. -// CmacIpRange returns a []BgpCMacIpRange -func (obj *bgpV6EviVxlanBroadcastDomain) CmacIpRange() BgpV6EviVxlanBroadcastDomainBgpCMacIpRangeIter { - if len(obj.obj.CmacIpRange) == 0 { - obj.obj.CmacIpRange = []*otg.BgpCMacIpRange{} - } - if obj.cmacIpRangeHolder == nil { - obj.cmacIpRangeHolder = newBgpV6EviVxlanBroadcastDomainBgpCMacIpRangeIter(&obj.obj.CmacIpRange).setMsg(obj) - } - return obj.cmacIpRangeHolder -} +type FlowRSVPExplicitRouteLengthChoiceEnum string -type bgpV6EviVxlanBroadcastDomainBgpCMacIpRangeIter struct { - obj *bgpV6EviVxlanBroadcastDomain - bgpCMacIpRangeSlice []BgpCMacIpRange - fieldPtr *[]*otg.BgpCMacIpRange +// Enum of Choice on FlowRSVPExplicitRouteLength +var FlowRSVPExplicitRouteLengthChoice = struct { + AUTO FlowRSVPExplicitRouteLengthChoiceEnum + VALUE FlowRSVPExplicitRouteLengthChoiceEnum +}{ + AUTO: FlowRSVPExplicitRouteLengthChoiceEnum("auto"), + VALUE: FlowRSVPExplicitRouteLengthChoiceEnum("value"), } -func newBgpV6EviVxlanBroadcastDomainBgpCMacIpRangeIter(ptr *[]*otg.BgpCMacIpRange) BgpV6EviVxlanBroadcastDomainBgpCMacIpRangeIter { - return &bgpV6EviVxlanBroadcastDomainBgpCMacIpRangeIter{fieldPtr: ptr} +func (obj *flowRSVPExplicitRouteLength) Choice() FlowRSVPExplicitRouteLengthChoiceEnum { + return FlowRSVPExplicitRouteLengthChoiceEnum(obj.obj.Choice.Enum().String()) } -type BgpV6EviVxlanBroadcastDomainBgpCMacIpRangeIter interface { - setMsg(*bgpV6EviVxlanBroadcastDomain) BgpV6EviVxlanBroadcastDomainBgpCMacIpRangeIter - Items() []BgpCMacIpRange - Add() BgpCMacIpRange - Append(items ...BgpCMacIpRange) BgpV6EviVxlanBroadcastDomainBgpCMacIpRangeIter - Set(index int, newObj BgpCMacIpRange) BgpV6EviVxlanBroadcastDomainBgpCMacIpRangeIter - Clear() BgpV6EviVxlanBroadcastDomainBgpCMacIpRangeIter - clearHolderSlice() BgpV6EviVxlanBroadcastDomainBgpCMacIpRangeIter - appendHolderSlice(item BgpCMacIpRange) BgpV6EviVxlanBroadcastDomainBgpCMacIpRangeIter +// auto or configured value. +// Choice returns a string +func (obj *flowRSVPExplicitRouteLength) HasChoice() bool { + return obj.obj.Choice != nil } -func (obj *bgpV6EviVxlanBroadcastDomainBgpCMacIpRangeIter) setMsg(msg *bgpV6EviVxlanBroadcastDomain) BgpV6EviVxlanBroadcastDomainBgpCMacIpRangeIter { - obj.clearHolderSlice() - for _, val := range *obj.fieldPtr { - obj.appendHolderSlice(&bgpCMacIpRange{obj: val}) +func (obj *flowRSVPExplicitRouteLength) SetChoice(value FlowRSVPExplicitRouteLengthChoiceEnum) FlowRSVPExplicitRouteLength { + intValue, ok := otg.FlowRSVPExplicitRouteLength_Choice_Enum_value[string(value)] + if !ok { + obj.validationErrors = append(obj.validationErrors, fmt.Sprintf( + "%s is not a valid choice on FlowRSVPExplicitRouteLengthChoiceEnum", string(value))) + return obj } - obj.obj = msg - return obj -} - -func (obj *bgpV6EviVxlanBroadcastDomainBgpCMacIpRangeIter) Items() []BgpCMacIpRange { - return obj.bgpCMacIpRangeSlice -} - -func (obj *bgpV6EviVxlanBroadcastDomainBgpCMacIpRangeIter) Add() BgpCMacIpRange { - newObj := &otg.BgpCMacIpRange{} - *obj.fieldPtr = append(*obj.fieldPtr, newObj) - newLibObj := &bgpCMacIpRange{obj: newObj} - newLibObj.setDefault() - obj.bgpCMacIpRangeSlice = append(obj.bgpCMacIpRangeSlice, newLibObj) - return newLibObj -} + enumValue := otg.FlowRSVPExplicitRouteLength_Choice_Enum(intValue) + obj.obj.Choice = &enumValue + obj.obj.Value = nil + obj.obj.Auto = nil -func (obj *bgpV6EviVxlanBroadcastDomainBgpCMacIpRangeIter) Append(items ...BgpCMacIpRange) BgpV6EviVxlanBroadcastDomainBgpCMacIpRangeIter { - for _, item := range items { - newObj := item.Msg() - *obj.fieldPtr = append(*obj.fieldPtr, newObj) - obj.bgpCMacIpRangeSlice = append(obj.bgpCMacIpRangeSlice, item) + if value == FlowRSVPExplicitRouteLengthChoice.AUTO { + defaultValue := uint32(8) + obj.obj.Auto = &defaultValue } - return obj -} -func (obj *bgpV6EviVxlanBroadcastDomainBgpCMacIpRangeIter) Set(index int, newObj BgpCMacIpRange) BgpV6EviVxlanBroadcastDomainBgpCMacIpRangeIter { - (*obj.fieldPtr)[index] = newObj.Msg() - obj.bgpCMacIpRangeSlice[index] = newObj - return obj -} -func (obj *bgpV6EviVxlanBroadcastDomainBgpCMacIpRangeIter) Clear() BgpV6EviVxlanBroadcastDomainBgpCMacIpRangeIter { - if len(*obj.fieldPtr) > 0 { - *obj.fieldPtr = []*otg.BgpCMacIpRange{} - obj.bgpCMacIpRangeSlice = []BgpCMacIpRange{} - } - return obj -} -func (obj *bgpV6EviVxlanBroadcastDomainBgpCMacIpRangeIter) clearHolderSlice() BgpV6EviVxlanBroadcastDomainBgpCMacIpRangeIter { - if len(obj.bgpCMacIpRangeSlice) > 0 { - obj.bgpCMacIpRangeSlice = []BgpCMacIpRange{} + if value == FlowRSVPExplicitRouteLengthChoice.VALUE { + defaultValue := uint32(8) + obj.obj.Value = &defaultValue } + return obj } -func (obj *bgpV6EviVxlanBroadcastDomainBgpCMacIpRangeIter) appendHolderSlice(item BgpCMacIpRange) BgpV6EviVxlanBroadcastDomainBgpCMacIpRangeIter { - obj.bgpCMacIpRangeSlice = append(obj.bgpCMacIpRangeSlice, item) - return obj -} - -// The Ethernet Tag ID of the Broadcast Domain. -// EthernetTagId returns a uint32 -func (obj *bgpV6EviVxlanBroadcastDomain) EthernetTagId() uint32 { - return *obj.obj.EthernetTagId +// The OTG implementation can provide a system generated value for this property. If the OTG is unable to generate a value the default value must be used. +// Auto returns a uint32 +func (obj *flowRSVPExplicitRouteLength) Auto() uint32 { -} + if obj.obj.Auto == nil { + obj.SetChoice(FlowRSVPExplicitRouteLengthChoice.AUTO) + } -// The Ethernet Tag ID of the Broadcast Domain. -// EthernetTagId returns a uint32 -func (obj *bgpV6EviVxlanBroadcastDomain) HasEthernetTagId() bool { - return obj.obj.EthernetTagId != nil -} + return *obj.obj.Auto -// The Ethernet Tag ID of the Broadcast Domain. -// SetEthernetTagId sets the uint32 value in the BgpV6EviVxlanBroadcastDomain object -func (obj *bgpV6EviVxlanBroadcastDomain) SetEthernetTagId(value uint32) BgpV6EviVxlanBroadcastDomain { +} - obj.obj.EthernetTagId = &value - return obj +// The OTG implementation can provide a system generated value for this property. If the OTG is unable to generate a value the default value must be used. +// Auto returns a uint32 +func (obj *flowRSVPExplicitRouteLength) HasAuto() bool { + return obj.obj.Auto != nil } -// VLAN-Aware service to be enabled or disabled. -// VlanAwareService returns a bool -func (obj *bgpV6EviVxlanBroadcastDomain) VlanAwareService() bool { +// description is TBD +// Value returns a uint32 +func (obj *flowRSVPExplicitRouteLength) Value() uint32 { - return *obj.obj.VlanAwareService + if obj.obj.Value == nil { + obj.SetChoice(FlowRSVPExplicitRouteLengthChoice.VALUE) + } -} + return *obj.obj.Value -// VLAN-Aware service to be enabled or disabled. -// VlanAwareService returns a bool -func (obj *bgpV6EviVxlanBroadcastDomain) HasVlanAwareService() bool { - return obj.obj.VlanAwareService != nil } -// VLAN-Aware service to be enabled or disabled. -// SetVlanAwareService sets the bool value in the BgpV6EviVxlanBroadcastDomain object -func (obj *bgpV6EviVxlanBroadcastDomain) SetVlanAwareService(value bool) BgpV6EviVxlanBroadcastDomain { +// description is TBD +// Value returns a uint32 +func (obj *flowRSVPExplicitRouteLength) HasValue() bool { + return obj.obj.Value != nil +} - obj.obj.VlanAwareService = &value +// description is TBD +// SetValue sets the uint32 value in the FlowRSVPExplicitRouteLength object +func (obj *flowRSVPExplicitRouteLength) SetValue(value uint32) FlowRSVPExplicitRouteLength { + obj.SetChoice(FlowRSVPExplicitRouteLengthChoice.VALUE) + obj.obj.Value = &value return obj } -func (obj *bgpV6EviVxlanBroadcastDomain) validateObj(vObj *validation, set_default bool) { +func (obj *flowRSVPExplicitRouteLength) validateObj(vObj *validation, set_default bool) { if set_default { obj.setDefault() } - if len(obj.obj.CmacIpRange) != 0 { + if obj.obj.Auto != nil { - if set_default { - obj.CmacIpRange().clearHolderSlice() - for _, item := range obj.obj.CmacIpRange { - obj.CmacIpRange().appendHolderSlice(&bgpCMacIpRange{obj: item}) - } + if *obj.obj.Auto > 256 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("0 <= FlowRSVPExplicitRouteLength.Auto <= 256 but Got %d", *obj.obj.Auto)) } - for _, item := range obj.CmacIpRange().Items() { - item.validateObj(vObj, set_default) + + } + + if obj.obj.Value != nil { + + if *obj.obj.Value > 256 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("0 <= FlowRSVPExplicitRouteLength.Value <= 256 but Got %d", *obj.obj.Value)) } } } -func (obj *bgpV6EviVxlanBroadcastDomain) setDefault() { - if obj.obj.EthernetTagId == nil { - obj.SetEthernetTagId(0) - } - if obj.obj.VlanAwareService == nil { - obj.SetVlanAwareService(false) +func (obj *flowRSVPExplicitRouteLength) setDefault() { + if obj.obj.Choice == nil { + obj.SetChoice(FlowRSVPExplicitRouteLengthChoice.AUTO) + } } -// ***** BgpCMacIpRange ***** -type bgpCMacIpRange struct { +// ***** PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixIpv4Address ***** +type patternFlowRSVPPathExplicitRouteType1Ipv4PrefixIpv4Address struct { validation - obj *otg.BgpCMacIpRange - macAddressesHolder MACRouteAddress - ipv4AddressesHolder V4RouteAddress - ipv6AddressesHolder V6RouteAddress - advancedHolder BgpRouteAdvanced - communitiesHolder BgpCMacIpRangeBgpCommunityIter - extCommunitiesHolder BgpCMacIpRangeBgpExtCommunityIter - asPathHolder BgpAsPath + obj *otg.PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixIpv4Address + incrementHolder PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixIpv4AddressCounter + decrementHolder PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixIpv4AddressCounter } -func NewBgpCMacIpRange() BgpCMacIpRange { - obj := bgpCMacIpRange{obj: &otg.BgpCMacIpRange{}} +func NewPatternFlowRSVPPathExplicitRouteType1Ipv4PrefixIpv4Address() PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixIpv4Address { + obj := patternFlowRSVPPathExplicitRouteType1Ipv4PrefixIpv4Address{obj: &otg.PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixIpv4Address{}} obj.setDefault() return &obj } -func (obj *bgpCMacIpRange) Msg() *otg.BgpCMacIpRange { +func (obj *patternFlowRSVPPathExplicitRouteType1Ipv4PrefixIpv4Address) Msg() *otg.PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixIpv4Address { return obj.obj } -func (obj *bgpCMacIpRange) SetMsg(msg *otg.BgpCMacIpRange) BgpCMacIpRange { +func (obj *patternFlowRSVPPathExplicitRouteType1Ipv4PrefixIpv4Address) SetMsg(msg *otg.PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixIpv4Address) PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixIpv4Address { obj.setNil() proto.Merge(obj.obj, msg) return obj } -func (obj *bgpCMacIpRange) ToProto() (*otg.BgpCMacIpRange, error) { +func (obj *patternFlowRSVPPathExplicitRouteType1Ipv4PrefixIpv4Address) ToProto() (*otg.PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixIpv4Address, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -316528,7 +363979,7 @@ func (obj *bgpCMacIpRange) ToProto() (*otg.BgpCMacIpRange, error) { return obj.Msg(), nil } -func (obj *bgpCMacIpRange) FromProto(msg *otg.BgpCMacIpRange) (BgpCMacIpRange, error) { +func (obj *patternFlowRSVPPathExplicitRouteType1Ipv4PrefixIpv4Address) FromProto(msg *otg.PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixIpv4Address) (PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixIpv4Address, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -316537,7 +363988,7 @@ func (obj *bgpCMacIpRange) FromProto(msg *otg.BgpCMacIpRange) (BgpCMacIpRange, e return newObj, nil } -func (obj *bgpCMacIpRange) ToPbText() (string, error) { +func (obj *patternFlowRSVPPathExplicitRouteType1Ipv4PrefixIpv4Address) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -316549,7 +364000,7 @@ func (obj *bgpCMacIpRange) ToPbText() (string, error) { return string(protoMarshal), nil } -func (obj *bgpCMacIpRange) FromPbText(value string) error { +func (obj *patternFlowRSVPPathExplicitRouteType1Ipv4PrefixIpv4Address) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj @@ -316562,7 +364013,7 @@ func (obj *bgpCMacIpRange) FromPbText(value string) error { return retObj } -func (obj *bgpCMacIpRange) ToYaml() (string, error) { +func (obj *patternFlowRSVPPathExplicitRouteType1Ipv4PrefixIpv4Address) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -316583,7 +364034,7 @@ func (obj *bgpCMacIpRange) ToYaml() (string, error) { return string(data), nil } -func (obj *bgpCMacIpRange) FromYaml(value string) error { +func (obj *patternFlowRSVPPathExplicitRouteType1Ipv4PrefixIpv4Address) FromYaml(value string) error { if value == "" { value = "{}" } @@ -316608,7 +364059,7 @@ func (obj *bgpCMacIpRange) FromYaml(value string) error { return nil } -func (obj *bgpCMacIpRange) ToJson() (string, error) { +func (obj *patternFlowRSVPPathExplicitRouteType1Ipv4PrefixIpv4Address) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -316626,7 +364077,7 @@ func (obj *bgpCMacIpRange) ToJson() (string, error) { return string(data), nil } -func (obj *bgpCMacIpRange) FromJson(value string) error { +func (obj *patternFlowRSVPPathExplicitRouteType1Ipv4PrefixIpv4Address) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -316647,19 +364098,19 @@ func (obj *bgpCMacIpRange) FromJson(value string) error { return nil } -func (obj *bgpCMacIpRange) validateToAndFrom() error { +func (obj *patternFlowRSVPPathExplicitRouteType1Ipv4PrefixIpv4Address) validateToAndFrom() error { // emptyVars() obj.validateObj(&obj.validation, true) return obj.validationResult() } -func (obj *bgpCMacIpRange) Validate() error { +func (obj *patternFlowRSVPPathExplicitRouteType1Ipv4PrefixIpv4Address) Validate() error { // emptyVars() obj.validateObj(&obj.validation, false) return obj.validationResult() } -func (obj *bgpCMacIpRange) String() string { +func (obj *patternFlowRSVPPathExplicitRouteType1Ipv4PrefixIpv4Address) String() string { str, err := obj.ToYaml() if err != nil { return err.Error() @@ -316667,12 +364118,12 @@ func (obj *bgpCMacIpRange) String() string { return str } -func (obj *bgpCMacIpRange) Clone() (BgpCMacIpRange, error) { +func (obj *patternFlowRSVPPathExplicitRouteType1Ipv4PrefixIpv4Address) Clone() (PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixIpv4Address, error) { vErr := obj.Validate() if vErr != nil { return nil, vErr } - newObj := NewBgpCMacIpRange() + newObj := NewPatternFlowRSVPPathExplicitRouteType1Ipv4PrefixIpv4Address() data, err := proto.Marshal(obj.Msg()) if err != nil { return nil, err @@ -316684,642 +364135,316 @@ func (obj *bgpCMacIpRange) Clone() (BgpCMacIpRange, error) { return newObj, nil } -func (obj *bgpCMacIpRange) setNil() { - obj.macAddressesHolder = nil - obj.ipv4AddressesHolder = nil - obj.ipv6AddressesHolder = nil - obj.advancedHolder = nil - obj.communitiesHolder = nil - obj.extCommunitiesHolder = nil - obj.asPathHolder = nil +func (obj *patternFlowRSVPPathExplicitRouteType1Ipv4PrefixIpv4Address) setNil() { + obj.incrementHolder = nil + obj.decrementHolder = nil obj.validationErrors = nil obj.warnings = nil obj.constraints = make(map[string]map[string]Constraints) } -// BgpCMacIpRange is configuration for MAC/IP Ranges per Broadcast Domain. -// -// Advertises following route - -// -// Type 2 - MAC/IP Advertisement Route. -type BgpCMacIpRange interface { +// PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixIpv4Address is this IPv4 address is treated as a prefix based on the prefix length value below. Bits beyond the prefix are ignored on receipt and SHOULD be set to zero on transmission. +type PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixIpv4Address interface { Validation - // Msg marshals BgpCMacIpRange to protobuf object *otg.BgpCMacIpRange + // Msg marshals PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixIpv4Address to protobuf object *otg.PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixIpv4Address // and doesn't set defaults - Msg() *otg.BgpCMacIpRange - // SetMsg unmarshals BgpCMacIpRange from protobuf object *otg.BgpCMacIpRange + Msg() *otg.PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixIpv4Address + // SetMsg unmarshals PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixIpv4Address from protobuf object *otg.PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixIpv4Address // and doesn't set defaults - SetMsg(*otg.BgpCMacIpRange) BgpCMacIpRange - // ToProto marshals BgpCMacIpRange to protobuf object *otg.BgpCMacIpRange - ToProto() (*otg.BgpCMacIpRange, error) - // ToPbText marshals BgpCMacIpRange to protobuf text + SetMsg(*otg.PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixIpv4Address) PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixIpv4Address + // ToProto marshals PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixIpv4Address to protobuf object *otg.PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixIpv4Address + ToProto() (*otg.PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixIpv4Address, error) + // ToPbText marshals PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixIpv4Address to protobuf text ToPbText() (string, error) - // ToYaml marshals BgpCMacIpRange to YAML text + // ToYaml marshals PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixIpv4Address to YAML text ToYaml() (string, error) - // ToJson marshals BgpCMacIpRange to JSON text + // ToJson marshals PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixIpv4Address to JSON text ToJson() (string, error) - // FromProto unmarshals BgpCMacIpRange from protobuf object *otg.BgpCMacIpRange - FromProto(msg *otg.BgpCMacIpRange) (BgpCMacIpRange, error) - // FromPbText unmarshals BgpCMacIpRange from protobuf text + // FromProto unmarshals PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixIpv4Address from protobuf object *otg.PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixIpv4Address + FromProto(msg *otg.PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixIpv4Address) (PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixIpv4Address, error) + // FromPbText unmarshals PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixIpv4Address from protobuf text FromPbText(value string) error - // FromYaml unmarshals BgpCMacIpRange from YAML text + // FromYaml unmarshals PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixIpv4Address from YAML text FromYaml(value string) error - // FromJson unmarshals BgpCMacIpRange from JSON text + // FromJson unmarshals PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixIpv4Address from JSON text FromJson(value string) error - // Validate validates BgpCMacIpRange + // Validate validates PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixIpv4Address Validate() error // A stringer function String() string // Clones the object - Clone() (BgpCMacIpRange, error) + Clone() (PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixIpv4Address, error) validateToAndFrom() error validateObj(vObj *validation, set_default bool) setDefault() - // MacAddresses returns MACRouteAddress, set in BgpCMacIpRange. - // MACRouteAddress is a container for MAC route addresses. - MacAddresses() MACRouteAddress - // SetMacAddresses assigns MACRouteAddress provided by user to BgpCMacIpRange. - // MACRouteAddress is a container for MAC route addresses. - SetMacAddresses(value MACRouteAddress) BgpCMacIpRange - // HasMacAddresses checks if MacAddresses has been set in BgpCMacIpRange - HasMacAddresses() bool - // L2Vni returns uint32, set in BgpCMacIpRange. - L2Vni() uint32 - // SetL2Vni assigns uint32 provided by user to BgpCMacIpRange - SetL2Vni(value uint32) BgpCMacIpRange - // HasL2Vni checks if L2Vni has been set in BgpCMacIpRange - HasL2Vni() bool - // Ipv4Addresses returns V4RouteAddress, set in BgpCMacIpRange. - // V4RouteAddress is a container for IPv4 route addresses. - Ipv4Addresses() V4RouteAddress - // SetIpv4Addresses assigns V4RouteAddress provided by user to BgpCMacIpRange. - // V4RouteAddress is a container for IPv4 route addresses. - SetIpv4Addresses(value V4RouteAddress) BgpCMacIpRange - // HasIpv4Addresses checks if Ipv4Addresses has been set in BgpCMacIpRange - HasIpv4Addresses() bool - // Ipv6Addresses returns V6RouteAddress, set in BgpCMacIpRange. - // V6RouteAddress is a container for IPv6 route addresses. - Ipv6Addresses() V6RouteAddress - // SetIpv6Addresses assigns V6RouteAddress provided by user to BgpCMacIpRange. - // V6RouteAddress is a container for IPv6 route addresses. - SetIpv6Addresses(value V6RouteAddress) BgpCMacIpRange - // HasIpv6Addresses checks if Ipv6Addresses has been set in BgpCMacIpRange - HasIpv6Addresses() bool - // L3Vni returns uint32, set in BgpCMacIpRange. - L3Vni() uint32 - // SetL3Vni assigns uint32 provided by user to BgpCMacIpRange - SetL3Vni(value uint32) BgpCMacIpRange - // HasL3Vni checks if L3Vni has been set in BgpCMacIpRange - HasL3Vni() bool - // IncludeDefaultGateway returns bool, set in BgpCMacIpRange. - IncludeDefaultGateway() bool - // SetIncludeDefaultGateway assigns bool provided by user to BgpCMacIpRange - SetIncludeDefaultGateway(value bool) BgpCMacIpRange - // HasIncludeDefaultGateway checks if IncludeDefaultGateway has been set in BgpCMacIpRange - HasIncludeDefaultGateway() bool - // Advanced returns BgpRouteAdvanced, set in BgpCMacIpRange. - // BgpRouteAdvanced is configuration for advanced BGP route range settings. - Advanced() BgpRouteAdvanced - // SetAdvanced assigns BgpRouteAdvanced provided by user to BgpCMacIpRange. - // BgpRouteAdvanced is configuration for advanced BGP route range settings. - SetAdvanced(value BgpRouteAdvanced) BgpCMacIpRange - // HasAdvanced checks if Advanced has been set in BgpCMacIpRange - HasAdvanced() bool - // Communities returns BgpCMacIpRangeBgpCommunityIterIter, set in BgpCMacIpRange - Communities() BgpCMacIpRangeBgpCommunityIter - // ExtCommunities returns BgpCMacIpRangeBgpExtCommunityIterIter, set in BgpCMacIpRange - ExtCommunities() BgpCMacIpRangeBgpExtCommunityIter - // AsPath returns BgpAsPath, set in BgpCMacIpRange. - // BgpAsPath is this attribute identifies the autonomous systems through which routing information carried in this UPDATE message has passed. This contains the configuration of how to include the Local AS in the AS path attribute of the MP REACH NLRI. It also contains optional configuration of additional AS Path Segments that can be included in the AS Path attribute. The AS Path consists of a Set or Sequence of Autonomous Systems (AS) numbers that a routing information passes through to reach the destination. - AsPath() BgpAsPath - // SetAsPath assigns BgpAsPath provided by user to BgpCMacIpRange. - // BgpAsPath is this attribute identifies the autonomous systems through which routing information carried in this UPDATE message has passed. This contains the configuration of how to include the Local AS in the AS path attribute of the MP REACH NLRI. It also contains optional configuration of additional AS Path Segments that can be included in the AS Path attribute. The AS Path consists of a Set or Sequence of Autonomous Systems (AS) numbers that a routing information passes through to reach the destination. - SetAsPath(value BgpAsPath) BgpCMacIpRange - // HasAsPath checks if AsPath has been set in BgpCMacIpRange - HasAsPath() bool - // Name returns string, set in BgpCMacIpRange. - Name() string - // SetName assigns string provided by user to BgpCMacIpRange - SetName(value string) BgpCMacIpRange + // Choice returns PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixIpv4AddressChoiceEnum, set in PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixIpv4Address + Choice() PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixIpv4AddressChoiceEnum + // SetChoice assigns PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixIpv4AddressChoiceEnum provided by user to PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixIpv4Address + SetChoice(value PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixIpv4AddressChoiceEnum) PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixIpv4Address + // HasChoice checks if Choice has been set in PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixIpv4Address + HasChoice() bool + // Value returns string, set in PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixIpv4Address. + Value() string + // SetValue assigns string provided by user to PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixIpv4Address + SetValue(value string) PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixIpv4Address + // HasValue checks if Value has been set in PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixIpv4Address + HasValue() bool + // Values returns []string, set in PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixIpv4Address. + Values() []string + // SetValues assigns []string provided by user to PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixIpv4Address + SetValues(value []string) PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixIpv4Address + // Increment returns PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixIpv4AddressCounter, set in PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixIpv4Address. + // PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixIpv4AddressCounter is ipv4 counter pattern + Increment() PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixIpv4AddressCounter + // SetIncrement assigns PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixIpv4AddressCounter provided by user to PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixIpv4Address. + // PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixIpv4AddressCounter is ipv4 counter pattern + SetIncrement(value PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixIpv4AddressCounter) PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixIpv4Address + // HasIncrement checks if Increment has been set in PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixIpv4Address + HasIncrement() bool + // Decrement returns PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixIpv4AddressCounter, set in PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixIpv4Address. + // PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixIpv4AddressCounter is ipv4 counter pattern + Decrement() PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixIpv4AddressCounter + // SetDecrement assigns PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixIpv4AddressCounter provided by user to PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixIpv4Address. + // PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixIpv4AddressCounter is ipv4 counter pattern + SetDecrement(value PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixIpv4AddressCounter) PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixIpv4Address + // HasDecrement checks if Decrement has been set in PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixIpv4Address + HasDecrement() bool setNil() } -// Host MAC address range per Broadcast Domain. -// MacAddresses returns a MACRouteAddress -func (obj *bgpCMacIpRange) MacAddresses() MACRouteAddress { - if obj.obj.MacAddresses == nil { - obj.obj.MacAddresses = NewMACRouteAddress().Msg() - } - if obj.macAddressesHolder == nil { - obj.macAddressesHolder = &mACRouteAddress{obj: obj.obj.MacAddresses} - } - return obj.macAddressesHolder -} - -// Host MAC address range per Broadcast Domain. -// MacAddresses returns a MACRouteAddress -func (obj *bgpCMacIpRange) HasMacAddresses() bool { - return obj.obj.MacAddresses != nil -} - -// Host MAC address range per Broadcast Domain. -// SetMacAddresses sets the MACRouteAddress value in the BgpCMacIpRange object -func (obj *bgpCMacIpRange) SetMacAddresses(value MACRouteAddress) BgpCMacIpRange { - - obj.macAddressesHolder = nil - obj.obj.MacAddresses = value.Msg() - - return obj -} - -// Layer 2 Virtual Network Identifier (L2VNI) to be advertised with MAC/IP Advertisement Route (Type 2) -// L2Vni returns a uint32 -func (obj *bgpCMacIpRange) L2Vni() uint32 { - - return *obj.obj.L2Vni +type PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixIpv4AddressChoiceEnum string +// Enum of Choice on PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixIpv4Address +var PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixIpv4AddressChoice = struct { + VALUE PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixIpv4AddressChoiceEnum + VALUES PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixIpv4AddressChoiceEnum + INCREMENT PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixIpv4AddressChoiceEnum + DECREMENT PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixIpv4AddressChoiceEnum +}{ + VALUE: PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixIpv4AddressChoiceEnum("value"), + VALUES: PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixIpv4AddressChoiceEnum("values"), + INCREMENT: PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixIpv4AddressChoiceEnum("increment"), + DECREMENT: PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixIpv4AddressChoiceEnum("decrement"), } -// Layer 2 Virtual Network Identifier (L2VNI) to be advertised with MAC/IP Advertisement Route (Type 2) -// L2Vni returns a uint32 -func (obj *bgpCMacIpRange) HasL2Vni() bool { - return obj.obj.L2Vni != nil +func (obj *patternFlowRSVPPathExplicitRouteType1Ipv4PrefixIpv4Address) Choice() PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixIpv4AddressChoiceEnum { + return PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixIpv4AddressChoiceEnum(obj.obj.Choice.Enum().String()) } -// Layer 2 Virtual Network Identifier (L2VNI) to be advertised with MAC/IP Advertisement Route (Type 2) -// SetL2Vni sets the uint32 value in the BgpCMacIpRange object -func (obj *bgpCMacIpRange) SetL2Vni(value uint32) BgpCMacIpRange { - - obj.obj.L2Vni = &value - return obj +// description is TBD +// Choice returns a string +func (obj *patternFlowRSVPPathExplicitRouteType1Ipv4PrefixIpv4Address) HasChoice() bool { + return obj.obj.Choice != nil } -// Host IPv4 address range per Broadcast Domain. -// Ipv4Addresses returns a V4RouteAddress -func (obj *bgpCMacIpRange) Ipv4Addresses() V4RouteAddress { - if obj.obj.Ipv4Addresses == nil { - obj.obj.Ipv4Addresses = NewV4RouteAddress().Msg() - } - if obj.ipv4AddressesHolder == nil { - obj.ipv4AddressesHolder = &v4RouteAddress{obj: obj.obj.Ipv4Addresses} +func (obj *patternFlowRSVPPathExplicitRouteType1Ipv4PrefixIpv4Address) SetChoice(value PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixIpv4AddressChoiceEnum) PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixIpv4Address { + intValue, ok := otg.PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixIpv4Address_Choice_Enum_value[string(value)] + if !ok { + obj.validationErrors = append(obj.validationErrors, fmt.Sprintf( + "%s is not a valid choice on PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixIpv4AddressChoiceEnum", string(value))) + return obj } - return obj.ipv4AddressesHolder -} - -// Host IPv4 address range per Broadcast Domain. -// Ipv4Addresses returns a V4RouteAddress -func (obj *bgpCMacIpRange) HasIpv4Addresses() bool { - return obj.obj.Ipv4Addresses != nil -} - -// Host IPv4 address range per Broadcast Domain. -// SetIpv4Addresses sets the V4RouteAddress value in the BgpCMacIpRange object -func (obj *bgpCMacIpRange) SetIpv4Addresses(value V4RouteAddress) BgpCMacIpRange { - - obj.ipv4AddressesHolder = nil - obj.obj.Ipv4Addresses = value.Msg() - - return obj -} + enumValue := otg.PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixIpv4Address_Choice_Enum(intValue) + obj.obj.Choice = &enumValue + obj.obj.Decrement = nil + obj.decrementHolder = nil + obj.obj.Increment = nil + obj.incrementHolder = nil + obj.obj.Values = nil + obj.obj.Value = nil -// Host IPv6 address range per Broadcast Domain. -// Ipv6Addresses returns a V6RouteAddress -func (obj *bgpCMacIpRange) Ipv6Addresses() V6RouteAddress { - if obj.obj.Ipv6Addresses == nil { - obj.obj.Ipv6Addresses = NewV6RouteAddress().Msg() - } - if obj.ipv6AddressesHolder == nil { - obj.ipv6AddressesHolder = &v6RouteAddress{obj: obj.obj.Ipv6Addresses} + if value == PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixIpv4AddressChoice.VALUE { + defaultValue := "0.0.0.0" + obj.obj.Value = &defaultValue } - return obj.ipv6AddressesHolder -} - -// Host IPv6 address range per Broadcast Domain. -// Ipv6Addresses returns a V6RouteAddress -func (obj *bgpCMacIpRange) HasIpv6Addresses() bool { - return obj.obj.Ipv6Addresses != nil -} - -// Host IPv6 address range per Broadcast Domain. -// SetIpv6Addresses sets the V6RouteAddress value in the BgpCMacIpRange object -func (obj *bgpCMacIpRange) SetIpv6Addresses(value V6RouteAddress) BgpCMacIpRange { - - obj.ipv6AddressesHolder = nil - obj.obj.Ipv6Addresses = value.Msg() - - return obj -} - -// Layer 3 Virtual Network Identifier (L3VNI) to be advertised with MAC/IP Advertisement Route (Type 2). -// L3Vni returns a uint32 -func (obj *bgpCMacIpRange) L3Vni() uint32 { - - return *obj.obj.L3Vni -} + if value == PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixIpv4AddressChoice.VALUES { + defaultValue := []string{"0.0.0.0"} + obj.obj.Values = defaultValue + } -// Layer 3 Virtual Network Identifier (L3VNI) to be advertised with MAC/IP Advertisement Route (Type 2). -// L3Vni returns a uint32 -func (obj *bgpCMacIpRange) HasL3Vni() bool { - return obj.obj.L3Vni != nil -} + if value == PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixIpv4AddressChoice.INCREMENT { + obj.obj.Increment = NewPatternFlowRSVPPathExplicitRouteType1Ipv4PrefixIpv4AddressCounter().Msg() + } -// Layer 3 Virtual Network Identifier (L3VNI) to be advertised with MAC/IP Advertisement Route (Type 2). -// SetL3Vni sets the uint32 value in the BgpCMacIpRange object -func (obj *bgpCMacIpRange) SetL3Vni(value uint32) BgpCMacIpRange { + if value == PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixIpv4AddressChoice.DECREMENT { + obj.obj.Decrement = NewPatternFlowRSVPPathExplicitRouteType1Ipv4PrefixIpv4AddressCounter().Msg() + } - obj.obj.L3Vni = &value return obj } -// Include default Gateway Extended Community in MAC/IP Advertisement Route (Type 2). -// IncludeDefaultGateway returns a bool -func (obj *bgpCMacIpRange) IncludeDefaultGateway() bool { - - return *obj.obj.IncludeDefaultGateway - -} - -// Include default Gateway Extended Community in MAC/IP Advertisement Route (Type 2). -// IncludeDefaultGateway returns a bool -func (obj *bgpCMacIpRange) HasIncludeDefaultGateway() bool { - return obj.obj.IncludeDefaultGateway != nil -} +// description is TBD +// Value returns a string +func (obj *patternFlowRSVPPathExplicitRouteType1Ipv4PrefixIpv4Address) Value() string { -// Include default Gateway Extended Community in MAC/IP Advertisement Route (Type 2). -// SetIncludeDefaultGateway sets the bool value in the BgpCMacIpRange object -func (obj *bgpCMacIpRange) SetIncludeDefaultGateway(value bool) BgpCMacIpRange { + if obj.obj.Value == nil { + obj.SetChoice(PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixIpv4AddressChoice.VALUE) + } - obj.obj.IncludeDefaultGateway = &value - return obj -} + return *obj.obj.Value -// description is TBD -// Advanced returns a BgpRouteAdvanced -func (obj *bgpCMacIpRange) Advanced() BgpRouteAdvanced { - if obj.obj.Advanced == nil { - obj.obj.Advanced = NewBgpRouteAdvanced().Msg() - } - if obj.advancedHolder == nil { - obj.advancedHolder = &bgpRouteAdvanced{obj: obj.obj.Advanced} - } - return obj.advancedHolder } // description is TBD -// Advanced returns a BgpRouteAdvanced -func (obj *bgpCMacIpRange) HasAdvanced() bool { - return obj.obj.Advanced != nil +// Value returns a string +func (obj *patternFlowRSVPPathExplicitRouteType1Ipv4PrefixIpv4Address) HasValue() bool { + return obj.obj.Value != nil } // description is TBD -// SetAdvanced sets the BgpRouteAdvanced value in the BgpCMacIpRange object -func (obj *bgpCMacIpRange) SetAdvanced(value BgpRouteAdvanced) BgpCMacIpRange { - - obj.advancedHolder = nil - obj.obj.Advanced = value.Msg() - +// SetValue sets the string value in the PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixIpv4Address object +func (obj *patternFlowRSVPPathExplicitRouteType1Ipv4PrefixIpv4Address) SetValue(value string) PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixIpv4Address { + obj.SetChoice(PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixIpv4AddressChoice.VALUE) + obj.obj.Value = &value return obj } -// Optional community settings. -// Communities returns a []BgpCommunity -func (obj *bgpCMacIpRange) Communities() BgpCMacIpRangeBgpCommunityIter { - if len(obj.obj.Communities) == 0 { - obj.obj.Communities = []*otg.BgpCommunity{} - } - if obj.communitiesHolder == nil { - obj.communitiesHolder = newBgpCMacIpRangeBgpCommunityIter(&obj.obj.Communities).setMsg(obj) - } - return obj.communitiesHolder -} - -type bgpCMacIpRangeBgpCommunityIter struct { - obj *bgpCMacIpRange - bgpCommunitySlice []BgpCommunity - fieldPtr *[]*otg.BgpCommunity -} - -func newBgpCMacIpRangeBgpCommunityIter(ptr *[]*otg.BgpCommunity) BgpCMacIpRangeBgpCommunityIter { - return &bgpCMacIpRangeBgpCommunityIter{fieldPtr: ptr} -} - -type BgpCMacIpRangeBgpCommunityIter interface { - setMsg(*bgpCMacIpRange) BgpCMacIpRangeBgpCommunityIter - Items() []BgpCommunity - Add() BgpCommunity - Append(items ...BgpCommunity) BgpCMacIpRangeBgpCommunityIter - Set(index int, newObj BgpCommunity) BgpCMacIpRangeBgpCommunityIter - Clear() BgpCMacIpRangeBgpCommunityIter - clearHolderSlice() BgpCMacIpRangeBgpCommunityIter - appendHolderSlice(item BgpCommunity) BgpCMacIpRangeBgpCommunityIter -} - -func (obj *bgpCMacIpRangeBgpCommunityIter) setMsg(msg *bgpCMacIpRange) BgpCMacIpRangeBgpCommunityIter { - obj.clearHolderSlice() - for _, val := range *obj.fieldPtr { - obj.appendHolderSlice(&bgpCommunity{obj: val}) +// description is TBD +// Values returns a []string +func (obj *patternFlowRSVPPathExplicitRouteType1Ipv4PrefixIpv4Address) Values() []string { + if obj.obj.Values == nil { + obj.SetValues([]string{"0.0.0.0"}) } - obj.obj = msg - return obj -} - -func (obj *bgpCMacIpRangeBgpCommunityIter) Items() []BgpCommunity { - return obj.bgpCommunitySlice -} - -func (obj *bgpCMacIpRangeBgpCommunityIter) Add() BgpCommunity { - newObj := &otg.BgpCommunity{} - *obj.fieldPtr = append(*obj.fieldPtr, newObj) - newLibObj := &bgpCommunity{obj: newObj} - newLibObj.setDefault() - obj.bgpCommunitySlice = append(obj.bgpCommunitySlice, newLibObj) - return newLibObj + return obj.obj.Values } -func (obj *bgpCMacIpRangeBgpCommunityIter) Append(items ...BgpCommunity) BgpCMacIpRangeBgpCommunityIter { - for _, item := range items { - newObj := item.Msg() - *obj.fieldPtr = append(*obj.fieldPtr, newObj) - obj.bgpCommunitySlice = append(obj.bgpCommunitySlice, item) +// description is TBD +// SetValues sets the []string value in the PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixIpv4Address object +func (obj *patternFlowRSVPPathExplicitRouteType1Ipv4PrefixIpv4Address) SetValues(value []string) PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixIpv4Address { + obj.SetChoice(PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixIpv4AddressChoice.VALUES) + if obj.obj.Values == nil { + obj.obj.Values = make([]string, 0) } - return obj -} + obj.obj.Values = value -func (obj *bgpCMacIpRangeBgpCommunityIter) Set(index int, newObj BgpCommunity) BgpCMacIpRangeBgpCommunityIter { - (*obj.fieldPtr)[index] = newObj.Msg() - obj.bgpCommunitySlice[index] = newObj - return obj -} -func (obj *bgpCMacIpRangeBgpCommunityIter) Clear() BgpCMacIpRangeBgpCommunityIter { - if len(*obj.fieldPtr) > 0 { - *obj.fieldPtr = []*otg.BgpCommunity{} - obj.bgpCommunitySlice = []BgpCommunity{} - } - return obj -} -func (obj *bgpCMacIpRangeBgpCommunityIter) clearHolderSlice() BgpCMacIpRangeBgpCommunityIter { - if len(obj.bgpCommunitySlice) > 0 { - obj.bgpCommunitySlice = []BgpCommunity{} - } - return obj -} -func (obj *bgpCMacIpRangeBgpCommunityIter) appendHolderSlice(item BgpCommunity) BgpCMacIpRangeBgpCommunityIter { - obj.bgpCommunitySlice = append(obj.bgpCommunitySlice, item) return obj } -// Optional Extended Community settings. The Extended Communities Attribute is a transitive optional BGP attribute, with the Type Code 16. Community and Extended Communities attributes are utilized to trigger routing decisions, such as acceptance, rejection, preference, or redistribution. An extended community is an 8-Bytes value. It is divided into two main parts. The first 2 Bytes of the community encode a type and sub-type fields and the last 6 Bytes carry a unique set of data in a format defined by the type and sub-type field. Extended communities provide a larger range for grouping or categorizing communities. When type is administrator_as_2octet or administrator_as_4octet, the valid sub types are route target and origin. The valid value for administrator_as_2octet and administrator_as_4octet type is either two byte AS followed by four byte local administrator id or four byte AS followed by two byte local administrator id. When type is administrator_ipv4_address the valid sub types are route target and origin. The valid value for administrator_ipv4_address is a four byte IPv4 address followed by a two byte local administrator id. When type is opaque, valid sub types are color and encapsulation. When sub type is color, first two bytes of the value field contain flags and last four bytes contains the value of the color. When sub type is encapsulation the first four bytes of value field are reserved and last two bytes carries the tunnel type from IANA's "ETHER TYPES" registry e.g IPv4 (protocol type = 0x0800), IPv6 (protocol type = 0x86dd), and MPLS (protocol type = 0x8847). When type is administrator_as_2octet_link_bandwidth the valid sub type is extended_bandwidth. The first two bytes of the value field contains the AS number and the last four bytes contains the bandwidth in IEEE floating point format. When type is evpn the valid subtype is mac_address. In the value field the low-order bit of the first byte(Flags) is defined as the "Sticky/static" flag and may be set to 1, indicating the MAC address is static and cannot move. The second byte is reserved and the last four bytes contain the sequence number which is used to ensure that PEs retain the correct MAC/IP Advertisement route when multiple updates occur for the same MAC address. -// ExtCommunities returns a []BgpExtCommunity -func (obj *bgpCMacIpRange) ExtCommunities() BgpCMacIpRangeBgpExtCommunityIter { - if len(obj.obj.ExtCommunities) == 0 { - obj.obj.ExtCommunities = []*otg.BgpExtCommunity{} - } - if obj.extCommunitiesHolder == nil { - obj.extCommunitiesHolder = newBgpCMacIpRangeBgpExtCommunityIter(&obj.obj.ExtCommunities).setMsg(obj) +// description is TBD +// Increment returns a PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixIpv4AddressCounter +func (obj *patternFlowRSVPPathExplicitRouteType1Ipv4PrefixIpv4Address) Increment() PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixIpv4AddressCounter { + if obj.obj.Increment == nil { + obj.SetChoice(PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixIpv4AddressChoice.INCREMENT) } - return obj.extCommunitiesHolder -} - -type bgpCMacIpRangeBgpExtCommunityIter struct { - obj *bgpCMacIpRange - bgpExtCommunitySlice []BgpExtCommunity - fieldPtr *[]*otg.BgpExtCommunity -} - -func newBgpCMacIpRangeBgpExtCommunityIter(ptr *[]*otg.BgpExtCommunity) BgpCMacIpRangeBgpExtCommunityIter { - return &bgpCMacIpRangeBgpExtCommunityIter{fieldPtr: ptr} -} - -type BgpCMacIpRangeBgpExtCommunityIter interface { - setMsg(*bgpCMacIpRange) BgpCMacIpRangeBgpExtCommunityIter - Items() []BgpExtCommunity - Add() BgpExtCommunity - Append(items ...BgpExtCommunity) BgpCMacIpRangeBgpExtCommunityIter - Set(index int, newObj BgpExtCommunity) BgpCMacIpRangeBgpExtCommunityIter - Clear() BgpCMacIpRangeBgpExtCommunityIter - clearHolderSlice() BgpCMacIpRangeBgpExtCommunityIter - appendHolderSlice(item BgpExtCommunity) BgpCMacIpRangeBgpExtCommunityIter -} - -func (obj *bgpCMacIpRangeBgpExtCommunityIter) setMsg(msg *bgpCMacIpRange) BgpCMacIpRangeBgpExtCommunityIter { - obj.clearHolderSlice() - for _, val := range *obj.fieldPtr { - obj.appendHolderSlice(&bgpExtCommunity{obj: val}) + if obj.incrementHolder == nil { + obj.incrementHolder = &patternFlowRSVPPathExplicitRouteType1Ipv4PrefixIpv4AddressCounter{obj: obj.obj.Increment} } - obj.obj = msg - return obj -} - -func (obj *bgpCMacIpRangeBgpExtCommunityIter) Items() []BgpExtCommunity { - return obj.bgpExtCommunitySlice + return obj.incrementHolder } -func (obj *bgpCMacIpRangeBgpExtCommunityIter) Add() BgpExtCommunity { - newObj := &otg.BgpExtCommunity{} - *obj.fieldPtr = append(*obj.fieldPtr, newObj) - newLibObj := &bgpExtCommunity{obj: newObj} - newLibObj.setDefault() - obj.bgpExtCommunitySlice = append(obj.bgpExtCommunitySlice, newLibObj) - return newLibObj +// description is TBD +// Increment returns a PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixIpv4AddressCounter +func (obj *patternFlowRSVPPathExplicitRouteType1Ipv4PrefixIpv4Address) HasIncrement() bool { + return obj.obj.Increment != nil } -func (obj *bgpCMacIpRangeBgpExtCommunityIter) Append(items ...BgpExtCommunity) BgpCMacIpRangeBgpExtCommunityIter { - for _, item := range items { - newObj := item.Msg() - *obj.fieldPtr = append(*obj.fieldPtr, newObj) - obj.bgpExtCommunitySlice = append(obj.bgpExtCommunitySlice, item) - } - return obj -} +// description is TBD +// SetIncrement sets the PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixIpv4AddressCounter value in the PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixIpv4Address object +func (obj *patternFlowRSVPPathExplicitRouteType1Ipv4PrefixIpv4Address) SetIncrement(value PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixIpv4AddressCounter) PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixIpv4Address { + obj.SetChoice(PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixIpv4AddressChoice.INCREMENT) + obj.incrementHolder = nil + obj.obj.Increment = value.Msg() -func (obj *bgpCMacIpRangeBgpExtCommunityIter) Set(index int, newObj BgpExtCommunity) BgpCMacIpRangeBgpExtCommunityIter { - (*obj.fieldPtr)[index] = newObj.Msg() - obj.bgpExtCommunitySlice[index] = newObj - return obj -} -func (obj *bgpCMacIpRangeBgpExtCommunityIter) Clear() BgpCMacIpRangeBgpExtCommunityIter { - if len(*obj.fieldPtr) > 0 { - *obj.fieldPtr = []*otg.BgpExtCommunity{} - obj.bgpExtCommunitySlice = []BgpExtCommunity{} - } - return obj -} -func (obj *bgpCMacIpRangeBgpExtCommunityIter) clearHolderSlice() BgpCMacIpRangeBgpExtCommunityIter { - if len(obj.bgpExtCommunitySlice) > 0 { - obj.bgpExtCommunitySlice = []BgpExtCommunity{} - } - return obj -} -func (obj *bgpCMacIpRangeBgpExtCommunityIter) appendHolderSlice(item BgpExtCommunity) BgpCMacIpRangeBgpExtCommunityIter { - obj.bgpExtCommunitySlice = append(obj.bgpExtCommunitySlice, item) return obj } -// Optional AS PATH settings. -// AsPath returns a BgpAsPath -func (obj *bgpCMacIpRange) AsPath() BgpAsPath { - if obj.obj.AsPath == nil { - obj.obj.AsPath = NewBgpAsPath().Msg() +// description is TBD +// Decrement returns a PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixIpv4AddressCounter +func (obj *patternFlowRSVPPathExplicitRouteType1Ipv4PrefixIpv4Address) Decrement() PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixIpv4AddressCounter { + if obj.obj.Decrement == nil { + obj.SetChoice(PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixIpv4AddressChoice.DECREMENT) } - if obj.asPathHolder == nil { - obj.asPathHolder = &bgpAsPath{obj: obj.obj.AsPath} + if obj.decrementHolder == nil { + obj.decrementHolder = &patternFlowRSVPPathExplicitRouteType1Ipv4PrefixIpv4AddressCounter{obj: obj.obj.Decrement} } - return obj.asPathHolder -} - -// Optional AS PATH settings. -// AsPath returns a BgpAsPath -func (obj *bgpCMacIpRange) HasAsPath() bool { - return obj.obj.AsPath != nil -} - -// Optional AS PATH settings. -// SetAsPath sets the BgpAsPath value in the BgpCMacIpRange object -func (obj *bgpCMacIpRange) SetAsPath(value BgpAsPath) BgpCMacIpRange { - - obj.asPathHolder = nil - obj.obj.AsPath = value.Msg() - - return obj + return obj.decrementHolder } -// Globally unique name of an object. It also serves as the primary key for arrays of objects. -// Name returns a string -func (obj *bgpCMacIpRange) Name() string { - - return *obj.obj.Name - +// description is TBD +// Decrement returns a PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixIpv4AddressCounter +func (obj *patternFlowRSVPPathExplicitRouteType1Ipv4PrefixIpv4Address) HasDecrement() bool { + return obj.obj.Decrement != nil } -// Globally unique name of an object. It also serves as the primary key for arrays of objects. -// SetName sets the string value in the BgpCMacIpRange object -func (obj *bgpCMacIpRange) SetName(value string) BgpCMacIpRange { +// description is TBD +// SetDecrement sets the PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixIpv4AddressCounter value in the PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixIpv4Address object +func (obj *patternFlowRSVPPathExplicitRouteType1Ipv4PrefixIpv4Address) SetDecrement(value PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixIpv4AddressCounter) PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixIpv4Address { + obj.SetChoice(PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixIpv4AddressChoice.DECREMENT) + obj.decrementHolder = nil + obj.obj.Decrement = value.Msg() - obj.obj.Name = &value return obj } -func (obj *bgpCMacIpRange) validateObj(vObj *validation, set_default bool) { +func (obj *patternFlowRSVPPathExplicitRouteType1Ipv4PrefixIpv4Address) validateObj(vObj *validation, set_default bool) { if set_default { obj.setDefault() } - if obj.obj.MacAddresses != nil { - - obj.MacAddresses().validateObj(vObj, set_default) - } - - if obj.obj.L2Vni != nil { - - if *obj.obj.L2Vni > 16777215 { - vObj.validationErrors = append( - vObj.validationErrors, - fmt.Sprintf("0 <= BgpCMacIpRange.L2Vni <= 16777215 but Got %d", *obj.obj.L2Vni)) - } - - } - - if obj.obj.Ipv4Addresses != nil { - - obj.Ipv4Addresses().validateObj(vObj, set_default) - } - - if obj.obj.Ipv6Addresses != nil { - - obj.Ipv6Addresses().validateObj(vObj, set_default) - } - - if obj.obj.L3Vni != nil { + if obj.obj.Value != nil { - if *obj.obj.L3Vni > 16777215 { - vObj.validationErrors = append( - vObj.validationErrors, - fmt.Sprintf("0 <= BgpCMacIpRange.L3Vni <= 16777215 but Got %d", *obj.obj.L3Vni)) + err := obj.validateIpv4(obj.Value()) + if err != nil { + vObj.validationErrors = append(vObj.validationErrors, fmt.Sprintf("%s %s", err.Error(), "on PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixIpv4Address.Value")) } } - if obj.obj.Advanced != nil { - - obj.Advanced().validateObj(vObj, set_default) - } - - if len(obj.obj.Communities) != 0 { + if obj.obj.Values != nil { - if set_default { - obj.Communities().clearHolderSlice() - for _, item := range obj.obj.Communities { - obj.Communities().appendHolderSlice(&bgpCommunity{obj: item}) - } - } - for _, item := range obj.Communities().Items() { - item.validateObj(vObj, set_default) + err := obj.validateIpv4Slice(obj.Values()) + if err != nil { + vObj.validationErrors = append(vObj.validationErrors, fmt.Sprintf("%s %s", err.Error(), "on PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixIpv4Address.Values")) } } - if len(obj.obj.ExtCommunities) != 0 { - - if set_default { - obj.ExtCommunities().clearHolderSlice() - for _, item := range obj.obj.ExtCommunities { - obj.ExtCommunities().appendHolderSlice(&bgpExtCommunity{obj: item}) - } - } - for _, item := range obj.ExtCommunities().Items() { - item.validateObj(vObj, set_default) - } + if obj.obj.Increment != nil { + obj.Increment().validateObj(vObj, set_default) } - if obj.obj.AsPath != nil { + if obj.obj.Decrement != nil { - obj.AsPath().validateObj(vObj, set_default) + obj.Decrement().validateObj(vObj, set_default) } - // Name is required - if obj.obj.Name == nil { - vObj.validationErrors = append(vObj.validationErrors, "Name is required field on interface BgpCMacIpRange") - } } -func (obj *bgpCMacIpRange) setDefault() { - if obj.obj.L2Vni == nil { - obj.SetL2Vni(0) - } - if obj.obj.L3Vni == nil { - obj.SetL3Vni(0) - } - if obj.obj.IncludeDefaultGateway == nil { - obj.SetIncludeDefaultGateway(false) +func (obj *patternFlowRSVPPathExplicitRouteType1Ipv4PrefixIpv4Address) setDefault() { + if obj.obj.Choice == nil { + obj.SetChoice(PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixIpv4AddressChoice.VALUE) + } } -// ***** BgpSrteSegmentATypeSubTlv ***** -type bgpSrteSegmentATypeSubTlv struct { +// ***** PatternFlowRSVPPathExplicitRouteType1FourByteASNumberLBit ***** +type patternFlowRSVPPathExplicitRouteType1FourByteASNumberLBit struct { validation - obj *otg.BgpSrteSegmentATypeSubTlv + obj *otg.PatternFlowRSVPPathExplicitRouteType1FourByteASNumberLBit + incrementHolder PatternFlowRSVPPathExplicitRouteType1FourByteASNumberLBitCounter + decrementHolder PatternFlowRSVPPathExplicitRouteType1FourByteASNumberLBitCounter } -func NewBgpSrteSegmentATypeSubTlv() BgpSrteSegmentATypeSubTlv { - obj := bgpSrteSegmentATypeSubTlv{obj: &otg.BgpSrteSegmentATypeSubTlv{}} +func NewPatternFlowRSVPPathExplicitRouteType1FourByteASNumberLBit() PatternFlowRSVPPathExplicitRouteType1FourByteASNumberLBit { + obj := patternFlowRSVPPathExplicitRouteType1FourByteASNumberLBit{obj: &otg.PatternFlowRSVPPathExplicitRouteType1FourByteASNumberLBit{}} obj.setDefault() return &obj } -func (obj *bgpSrteSegmentATypeSubTlv) Msg() *otg.BgpSrteSegmentATypeSubTlv { +func (obj *patternFlowRSVPPathExplicitRouteType1FourByteASNumberLBit) Msg() *otg.PatternFlowRSVPPathExplicitRouteType1FourByteASNumberLBit { return obj.obj } -func (obj *bgpSrteSegmentATypeSubTlv) SetMsg(msg *otg.BgpSrteSegmentATypeSubTlv) BgpSrteSegmentATypeSubTlv { - +func (obj *patternFlowRSVPPathExplicitRouteType1FourByteASNumberLBit) SetMsg(msg *otg.PatternFlowRSVPPathExplicitRouteType1FourByteASNumberLBit) PatternFlowRSVPPathExplicitRouteType1FourByteASNumberLBit { + obj.setNil() proto.Merge(obj.obj, msg) return obj } -func (obj *bgpSrteSegmentATypeSubTlv) ToProto() (*otg.BgpSrteSegmentATypeSubTlv, error) { +func (obj *patternFlowRSVPPathExplicitRouteType1FourByteASNumberLBit) ToProto() (*otg.PatternFlowRSVPPathExplicitRouteType1FourByteASNumberLBit, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -317327,7 +364452,7 @@ func (obj *bgpSrteSegmentATypeSubTlv) ToProto() (*otg.BgpSrteSegmentATypeSubTlv, return obj.Msg(), nil } -func (obj *bgpSrteSegmentATypeSubTlv) FromProto(msg *otg.BgpSrteSegmentATypeSubTlv) (BgpSrteSegmentATypeSubTlv, error) { +func (obj *patternFlowRSVPPathExplicitRouteType1FourByteASNumberLBit) FromProto(msg *otg.PatternFlowRSVPPathExplicitRouteType1FourByteASNumberLBit) (PatternFlowRSVPPathExplicitRouteType1FourByteASNumberLBit, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -317336,7 +364461,7 @@ func (obj *bgpSrteSegmentATypeSubTlv) FromProto(msg *otg.BgpSrteSegmentATypeSubT return newObj, nil } -func (obj *bgpSrteSegmentATypeSubTlv) ToPbText() (string, error) { +func (obj *patternFlowRSVPPathExplicitRouteType1FourByteASNumberLBit) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -317348,12 +364473,12 @@ func (obj *bgpSrteSegmentATypeSubTlv) ToPbText() (string, error) { return string(protoMarshal), nil } -func (obj *bgpSrteSegmentATypeSubTlv) FromPbText(value string) error { +func (obj *patternFlowRSVPPathExplicitRouteType1FourByteASNumberLBit) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj } - + obj.setNil() vErr := obj.validateToAndFrom() if vErr != nil { return vErr @@ -317361,7 +364486,7 @@ func (obj *bgpSrteSegmentATypeSubTlv) FromPbText(value string) error { return retObj } -func (obj *bgpSrteSegmentATypeSubTlv) ToYaml() (string, error) { +func (obj *patternFlowRSVPPathExplicitRouteType1FourByteASNumberLBit) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -317382,7 +364507,7 @@ func (obj *bgpSrteSegmentATypeSubTlv) ToYaml() (string, error) { return string(data), nil } -func (obj *bgpSrteSegmentATypeSubTlv) FromYaml(value string) error { +func (obj *patternFlowRSVPPathExplicitRouteType1FourByteASNumberLBit) FromYaml(value string) error { if value == "" { value = "{}" } @@ -317399,7 +364524,7 @@ func (obj *bgpSrteSegmentATypeSubTlv) FromYaml(value string) error { return fmt.Errorf("unmarshal error %s", strings.Replace( uError.Error(), "\u00a0", " ", -1)[7:]) } - + obj.setNil() vErr := obj.validateToAndFrom() if vErr != nil { return vErr @@ -317407,7 +364532,7 @@ func (obj *bgpSrteSegmentATypeSubTlv) FromYaml(value string) error { return nil } -func (obj *bgpSrteSegmentATypeSubTlv) ToJson() (string, error) { +func (obj *patternFlowRSVPPathExplicitRouteType1FourByteASNumberLBit) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -317425,7 +364550,7 @@ func (obj *bgpSrteSegmentATypeSubTlv) ToJson() (string, error) { return string(data), nil } -func (obj *bgpSrteSegmentATypeSubTlv) FromJson(value string) error { +func (obj *patternFlowRSVPPathExplicitRouteType1FourByteASNumberLBit) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -317438,7 +364563,7 @@ func (obj *bgpSrteSegmentATypeSubTlv) FromJson(value string) error { return fmt.Errorf("unmarshal error %s", strings.Replace( uError.Error(), "\u00a0", " ", -1)[7:]) } - + obj.setNil() err := obj.validateToAndFrom() if err != nil { return err @@ -317446,19 +364571,19 @@ func (obj *bgpSrteSegmentATypeSubTlv) FromJson(value string) error { return nil } -func (obj *bgpSrteSegmentATypeSubTlv) validateToAndFrom() error { +func (obj *patternFlowRSVPPathExplicitRouteType1FourByteASNumberLBit) validateToAndFrom() error { // emptyVars() obj.validateObj(&obj.validation, true) return obj.validationResult() } -func (obj *bgpSrteSegmentATypeSubTlv) Validate() error { +func (obj *patternFlowRSVPPathExplicitRouteType1FourByteASNumberLBit) Validate() error { // emptyVars() obj.validateObj(&obj.validation, false) return obj.validationResult() } -func (obj *bgpSrteSegmentATypeSubTlv) String() string { +func (obj *patternFlowRSVPPathExplicitRouteType1FourByteASNumberLBit) String() string { str, err := obj.ToYaml() if err != nil { return err.Error() @@ -317466,12 +364591,12 @@ func (obj *bgpSrteSegmentATypeSubTlv) String() string { return str } -func (obj *bgpSrteSegmentATypeSubTlv) Clone() (BgpSrteSegmentATypeSubTlv, error) { +func (obj *patternFlowRSVPPathExplicitRouteType1FourByteASNumberLBit) Clone() (PatternFlowRSVPPathExplicitRouteType1FourByteASNumberLBit, error) { vErr := obj.Validate() if vErr != nil { return nil, vErr } - newObj := NewBgpSrteSegmentATypeSubTlv() + newObj := NewPatternFlowRSVPPathExplicitRouteType1FourByteASNumberLBit() data, err := proto.Marshal(obj.Msg()) if err != nil { return nil, err @@ -317483,256 +364608,321 @@ func (obj *bgpSrteSegmentATypeSubTlv) Clone() (BgpSrteSegmentATypeSubTlv, error) return newObj, nil } -// BgpSrteSegmentATypeSubTlv is type A: SID only, in the form of MPLS Label. -type BgpSrteSegmentATypeSubTlv interface { +func (obj *patternFlowRSVPPathExplicitRouteType1FourByteASNumberLBit) setNil() { + obj.incrementHolder = nil + obj.decrementHolder = nil + obj.validationErrors = nil + obj.warnings = nil + obj.constraints = make(map[string]map[string]Constraints) +} + +// PatternFlowRSVPPathExplicitRouteType1FourByteASNumberLBit is the L bit is an attribute of the subobject.The L bit is set if the subobject represents a loose hop in the explicit route. If the bit is not set, the subobject represents a strict hop in the explicit route. +type PatternFlowRSVPPathExplicitRouteType1FourByteASNumberLBit interface { Validation - // Msg marshals BgpSrteSegmentATypeSubTlv to protobuf object *otg.BgpSrteSegmentATypeSubTlv + // Msg marshals PatternFlowRSVPPathExplicitRouteType1FourByteASNumberLBit to protobuf object *otg.PatternFlowRSVPPathExplicitRouteType1FourByteASNumberLBit // and doesn't set defaults - Msg() *otg.BgpSrteSegmentATypeSubTlv - // SetMsg unmarshals BgpSrteSegmentATypeSubTlv from protobuf object *otg.BgpSrteSegmentATypeSubTlv + Msg() *otg.PatternFlowRSVPPathExplicitRouteType1FourByteASNumberLBit + // SetMsg unmarshals PatternFlowRSVPPathExplicitRouteType1FourByteASNumberLBit from protobuf object *otg.PatternFlowRSVPPathExplicitRouteType1FourByteASNumberLBit // and doesn't set defaults - SetMsg(*otg.BgpSrteSegmentATypeSubTlv) BgpSrteSegmentATypeSubTlv - // ToProto marshals BgpSrteSegmentATypeSubTlv to protobuf object *otg.BgpSrteSegmentATypeSubTlv - ToProto() (*otg.BgpSrteSegmentATypeSubTlv, error) - // ToPbText marshals BgpSrteSegmentATypeSubTlv to protobuf text + SetMsg(*otg.PatternFlowRSVPPathExplicitRouteType1FourByteASNumberLBit) PatternFlowRSVPPathExplicitRouteType1FourByteASNumberLBit + // ToProto marshals PatternFlowRSVPPathExplicitRouteType1FourByteASNumberLBit to protobuf object *otg.PatternFlowRSVPPathExplicitRouteType1FourByteASNumberLBit + ToProto() (*otg.PatternFlowRSVPPathExplicitRouteType1FourByteASNumberLBit, error) + // ToPbText marshals PatternFlowRSVPPathExplicitRouteType1FourByteASNumberLBit to protobuf text ToPbText() (string, error) - // ToYaml marshals BgpSrteSegmentATypeSubTlv to YAML text + // ToYaml marshals PatternFlowRSVPPathExplicitRouteType1FourByteASNumberLBit to YAML text ToYaml() (string, error) - // ToJson marshals BgpSrteSegmentATypeSubTlv to JSON text + // ToJson marshals PatternFlowRSVPPathExplicitRouteType1FourByteASNumberLBit to JSON text ToJson() (string, error) - // FromProto unmarshals BgpSrteSegmentATypeSubTlv from protobuf object *otg.BgpSrteSegmentATypeSubTlv - FromProto(msg *otg.BgpSrteSegmentATypeSubTlv) (BgpSrteSegmentATypeSubTlv, error) - // FromPbText unmarshals BgpSrteSegmentATypeSubTlv from protobuf text + // FromProto unmarshals PatternFlowRSVPPathExplicitRouteType1FourByteASNumberLBit from protobuf object *otg.PatternFlowRSVPPathExplicitRouteType1FourByteASNumberLBit + FromProto(msg *otg.PatternFlowRSVPPathExplicitRouteType1FourByteASNumberLBit) (PatternFlowRSVPPathExplicitRouteType1FourByteASNumberLBit, error) + // FromPbText unmarshals PatternFlowRSVPPathExplicitRouteType1FourByteASNumberLBit from protobuf text FromPbText(value string) error - // FromYaml unmarshals BgpSrteSegmentATypeSubTlv from YAML text + // FromYaml unmarshals PatternFlowRSVPPathExplicitRouteType1FourByteASNumberLBit from YAML text FromYaml(value string) error - // FromJson unmarshals BgpSrteSegmentATypeSubTlv from JSON text + // FromJson unmarshals PatternFlowRSVPPathExplicitRouteType1FourByteASNumberLBit from JSON text FromJson(value string) error - // Validate validates BgpSrteSegmentATypeSubTlv + // Validate validates PatternFlowRSVPPathExplicitRouteType1FourByteASNumberLBit Validate() error // A stringer function String() string // Clones the object - Clone() (BgpSrteSegmentATypeSubTlv, error) + Clone() (PatternFlowRSVPPathExplicitRouteType1FourByteASNumberLBit, error) validateToAndFrom() error validateObj(vObj *validation, set_default bool) setDefault() - // Flags returns string, set in BgpSrteSegmentATypeSubTlv. - Flags() string - // SetFlags assigns string provided by user to BgpSrteSegmentATypeSubTlv - SetFlags(value string) BgpSrteSegmentATypeSubTlv - // HasFlags checks if Flags has been set in BgpSrteSegmentATypeSubTlv - HasFlags() bool - // Label returns uint32, set in BgpSrteSegmentATypeSubTlv. - Label() uint32 - // SetLabel assigns uint32 provided by user to BgpSrteSegmentATypeSubTlv - SetLabel(value uint32) BgpSrteSegmentATypeSubTlv - // HasLabel checks if Label has been set in BgpSrteSegmentATypeSubTlv - HasLabel() bool - // Tc returns uint32, set in BgpSrteSegmentATypeSubTlv. - Tc() uint32 - // SetTc assigns uint32 provided by user to BgpSrteSegmentATypeSubTlv - SetTc(value uint32) BgpSrteSegmentATypeSubTlv - // HasTc checks if Tc has been set in BgpSrteSegmentATypeSubTlv - HasTc() bool - // SBit returns bool, set in BgpSrteSegmentATypeSubTlv. - SBit() bool - // SetSBit assigns bool provided by user to BgpSrteSegmentATypeSubTlv - SetSBit(value bool) BgpSrteSegmentATypeSubTlv - // HasSBit checks if SBit has been set in BgpSrteSegmentATypeSubTlv - HasSBit() bool - // Ttl returns uint32, set in BgpSrteSegmentATypeSubTlv. - Ttl() uint32 - // SetTtl assigns uint32 provided by user to BgpSrteSegmentATypeSubTlv - SetTtl(value uint32) BgpSrteSegmentATypeSubTlv - // HasTtl checks if Ttl has been set in BgpSrteSegmentATypeSubTlv - HasTtl() bool + // Choice returns PatternFlowRSVPPathExplicitRouteType1FourByteASNumberLBitChoiceEnum, set in PatternFlowRSVPPathExplicitRouteType1FourByteASNumberLBit + Choice() PatternFlowRSVPPathExplicitRouteType1FourByteASNumberLBitChoiceEnum + // SetChoice assigns PatternFlowRSVPPathExplicitRouteType1FourByteASNumberLBitChoiceEnum provided by user to PatternFlowRSVPPathExplicitRouteType1FourByteASNumberLBit + SetChoice(value PatternFlowRSVPPathExplicitRouteType1FourByteASNumberLBitChoiceEnum) PatternFlowRSVPPathExplicitRouteType1FourByteASNumberLBit + // HasChoice checks if Choice has been set in PatternFlowRSVPPathExplicitRouteType1FourByteASNumberLBit + HasChoice() bool + // Value returns uint32, set in PatternFlowRSVPPathExplicitRouteType1FourByteASNumberLBit. + Value() uint32 + // SetValue assigns uint32 provided by user to PatternFlowRSVPPathExplicitRouteType1FourByteASNumberLBit + SetValue(value uint32) PatternFlowRSVPPathExplicitRouteType1FourByteASNumberLBit + // HasValue checks if Value has been set in PatternFlowRSVPPathExplicitRouteType1FourByteASNumberLBit + HasValue() bool + // Values returns []uint32, set in PatternFlowRSVPPathExplicitRouteType1FourByteASNumberLBit. + Values() []uint32 + // SetValues assigns []uint32 provided by user to PatternFlowRSVPPathExplicitRouteType1FourByteASNumberLBit + SetValues(value []uint32) PatternFlowRSVPPathExplicitRouteType1FourByteASNumberLBit + // Increment returns PatternFlowRSVPPathExplicitRouteType1FourByteASNumberLBitCounter, set in PatternFlowRSVPPathExplicitRouteType1FourByteASNumberLBit. + // PatternFlowRSVPPathExplicitRouteType1FourByteASNumberLBitCounter is integer counter pattern + Increment() PatternFlowRSVPPathExplicitRouteType1FourByteASNumberLBitCounter + // SetIncrement assigns PatternFlowRSVPPathExplicitRouteType1FourByteASNumberLBitCounter provided by user to PatternFlowRSVPPathExplicitRouteType1FourByteASNumberLBit. + // PatternFlowRSVPPathExplicitRouteType1FourByteASNumberLBitCounter is integer counter pattern + SetIncrement(value PatternFlowRSVPPathExplicitRouteType1FourByteASNumberLBitCounter) PatternFlowRSVPPathExplicitRouteType1FourByteASNumberLBit + // HasIncrement checks if Increment has been set in PatternFlowRSVPPathExplicitRouteType1FourByteASNumberLBit + HasIncrement() bool + // Decrement returns PatternFlowRSVPPathExplicitRouteType1FourByteASNumberLBitCounter, set in PatternFlowRSVPPathExplicitRouteType1FourByteASNumberLBit. + // PatternFlowRSVPPathExplicitRouteType1FourByteASNumberLBitCounter is integer counter pattern + Decrement() PatternFlowRSVPPathExplicitRouteType1FourByteASNumberLBitCounter + // SetDecrement assigns PatternFlowRSVPPathExplicitRouteType1FourByteASNumberLBitCounter provided by user to PatternFlowRSVPPathExplicitRouteType1FourByteASNumberLBit. + // PatternFlowRSVPPathExplicitRouteType1FourByteASNumberLBitCounter is integer counter pattern + SetDecrement(value PatternFlowRSVPPathExplicitRouteType1FourByteASNumberLBitCounter) PatternFlowRSVPPathExplicitRouteType1FourByteASNumberLBit + // HasDecrement checks if Decrement has been set in PatternFlowRSVPPathExplicitRouteType1FourByteASNumberLBit + HasDecrement() bool + setNil() } -// One octet bitmap for flags including V-Flag, A-Flag, S-Flag, B-Flag etc. as defined in https://datatracker.ietf.org/doc/html/draft-ietf-idr-segment-routing-te-policy-13#section-2.4.4.2.12 -// Flags returns a string -func (obj *bgpSrteSegmentATypeSubTlv) Flags() string { - - return *obj.obj.Flags +type PatternFlowRSVPPathExplicitRouteType1FourByteASNumberLBitChoiceEnum string +// Enum of Choice on PatternFlowRSVPPathExplicitRouteType1FourByteASNumberLBit +var PatternFlowRSVPPathExplicitRouteType1FourByteASNumberLBitChoice = struct { + VALUE PatternFlowRSVPPathExplicitRouteType1FourByteASNumberLBitChoiceEnum + VALUES PatternFlowRSVPPathExplicitRouteType1FourByteASNumberLBitChoiceEnum + INCREMENT PatternFlowRSVPPathExplicitRouteType1FourByteASNumberLBitChoiceEnum + DECREMENT PatternFlowRSVPPathExplicitRouteType1FourByteASNumberLBitChoiceEnum +}{ + VALUE: PatternFlowRSVPPathExplicitRouteType1FourByteASNumberLBitChoiceEnum("value"), + VALUES: PatternFlowRSVPPathExplicitRouteType1FourByteASNumberLBitChoiceEnum("values"), + INCREMENT: PatternFlowRSVPPathExplicitRouteType1FourByteASNumberLBitChoiceEnum("increment"), + DECREMENT: PatternFlowRSVPPathExplicitRouteType1FourByteASNumberLBitChoiceEnum("decrement"), } -// One octet bitmap for flags including V-Flag, A-Flag, S-Flag, B-Flag etc. as defined in https://datatracker.ietf.org/doc/html/draft-ietf-idr-segment-routing-te-policy-13#section-2.4.4.2.12 -// Flags returns a string -func (obj *bgpSrteSegmentATypeSubTlv) HasFlags() bool { - return obj.obj.Flags != nil +func (obj *patternFlowRSVPPathExplicitRouteType1FourByteASNumberLBit) Choice() PatternFlowRSVPPathExplicitRouteType1FourByteASNumberLBitChoiceEnum { + return PatternFlowRSVPPathExplicitRouteType1FourByteASNumberLBitChoiceEnum(obj.obj.Choice.Enum().String()) } -// One octet bitmap for flags including V-Flag, A-Flag, S-Flag, B-Flag etc. as defined in https://datatracker.ietf.org/doc/html/draft-ietf-idr-segment-routing-te-policy-13#section-2.4.4.2.12 -// SetFlags sets the string value in the BgpSrteSegmentATypeSubTlv object -func (obj *bgpSrteSegmentATypeSubTlv) SetFlags(value string) BgpSrteSegmentATypeSubTlv { - - obj.obj.Flags = &value - return obj +// description is TBD +// Choice returns a string +func (obj *patternFlowRSVPPathExplicitRouteType1FourByteASNumberLBit) HasChoice() bool { + return obj.obj.Choice != nil } -// Label value in [0, 2^20 -1]. -// Label returns a uint32 -func (obj *bgpSrteSegmentATypeSubTlv) Label() uint32 { +func (obj *patternFlowRSVPPathExplicitRouteType1FourByteASNumberLBit) SetChoice(value PatternFlowRSVPPathExplicitRouteType1FourByteASNumberLBitChoiceEnum) PatternFlowRSVPPathExplicitRouteType1FourByteASNumberLBit { + intValue, ok := otg.PatternFlowRSVPPathExplicitRouteType1FourByteASNumberLBit_Choice_Enum_value[string(value)] + if !ok { + obj.validationErrors = append(obj.validationErrors, fmt.Sprintf( + "%s is not a valid choice on PatternFlowRSVPPathExplicitRouteType1FourByteASNumberLBitChoiceEnum", string(value))) + return obj + } + enumValue := otg.PatternFlowRSVPPathExplicitRouteType1FourByteASNumberLBit_Choice_Enum(intValue) + obj.obj.Choice = &enumValue + obj.obj.Decrement = nil + obj.decrementHolder = nil + obj.obj.Increment = nil + obj.incrementHolder = nil + obj.obj.Values = nil + obj.obj.Value = nil - return *obj.obj.Label + if value == PatternFlowRSVPPathExplicitRouteType1FourByteASNumberLBitChoice.VALUE { + defaultValue := uint32(0) + obj.obj.Value = &defaultValue + } -} + if value == PatternFlowRSVPPathExplicitRouteType1FourByteASNumberLBitChoice.VALUES { + defaultValue := []uint32{0} + obj.obj.Values = defaultValue + } -// Label value in [0, 2^20 -1]. -// Label returns a uint32 -func (obj *bgpSrteSegmentATypeSubTlv) HasLabel() bool { - return obj.obj.Label != nil -} + if value == PatternFlowRSVPPathExplicitRouteType1FourByteASNumberLBitChoice.INCREMENT { + obj.obj.Increment = NewPatternFlowRSVPPathExplicitRouteType1FourByteASNumberLBitCounter().Msg() + } -// Label value in [0, 2^20 -1]. -// SetLabel sets the uint32 value in the BgpSrteSegmentATypeSubTlv object -func (obj *bgpSrteSegmentATypeSubTlv) SetLabel(value uint32) BgpSrteSegmentATypeSubTlv { + if value == PatternFlowRSVPPathExplicitRouteType1FourByteASNumberLBitChoice.DECREMENT { + obj.obj.Decrement = NewPatternFlowRSVPPathExplicitRouteType1FourByteASNumberLBitCounter().Msg() + } - obj.obj.Label = &value return obj } -// Traffic class in bits. -// Tc returns a uint32 -func (obj *bgpSrteSegmentATypeSubTlv) Tc() uint32 { +// description is TBD +// Value returns a uint32 +func (obj *patternFlowRSVPPathExplicitRouteType1FourByteASNumberLBit) Value() uint32 { - return *obj.obj.Tc + if obj.obj.Value == nil { + obj.SetChoice(PatternFlowRSVPPathExplicitRouteType1FourByteASNumberLBitChoice.VALUE) + } -} + return *obj.obj.Value -// Traffic class in bits. -// Tc returns a uint32 -func (obj *bgpSrteSegmentATypeSubTlv) HasTc() bool { - return obj.obj.Tc != nil } -// Traffic class in bits. -// SetTc sets the uint32 value in the BgpSrteSegmentATypeSubTlv object -func (obj *bgpSrteSegmentATypeSubTlv) SetTc(value uint32) BgpSrteSegmentATypeSubTlv { +// description is TBD +// Value returns a uint32 +func (obj *patternFlowRSVPPathExplicitRouteType1FourByteASNumberLBit) HasValue() bool { + return obj.obj.Value != nil +} - obj.obj.Tc = &value +// description is TBD +// SetValue sets the uint32 value in the PatternFlowRSVPPathExplicitRouteType1FourByteASNumberLBit object +func (obj *patternFlowRSVPPathExplicitRouteType1FourByteASNumberLBit) SetValue(value uint32) PatternFlowRSVPPathExplicitRouteType1FourByteASNumberLBit { + obj.SetChoice(PatternFlowRSVPPathExplicitRouteType1FourByteASNumberLBitChoice.VALUE) + obj.obj.Value = &value return obj } -// Bottom-of-Stack bit. -// SBit returns a bool -func (obj *bgpSrteSegmentATypeSubTlv) SBit() bool { +// description is TBD +// Values returns a []uint32 +func (obj *patternFlowRSVPPathExplicitRouteType1FourByteASNumberLBit) Values() []uint32 { + if obj.obj.Values == nil { + obj.SetValues([]uint32{0}) + } + return obj.obj.Values +} - return *obj.obj.SBit +// description is TBD +// SetValues sets the []uint32 value in the PatternFlowRSVPPathExplicitRouteType1FourByteASNumberLBit object +func (obj *patternFlowRSVPPathExplicitRouteType1FourByteASNumberLBit) SetValues(value []uint32) PatternFlowRSVPPathExplicitRouteType1FourByteASNumberLBit { + obj.SetChoice(PatternFlowRSVPPathExplicitRouteType1FourByteASNumberLBitChoice.VALUES) + if obj.obj.Values == nil { + obj.obj.Values = make([]uint32, 0) + } + obj.obj.Values = value + return obj } -// Bottom-of-Stack bit. -// SBit returns a bool -func (obj *bgpSrteSegmentATypeSubTlv) HasSBit() bool { - return obj.obj.SBit != nil +// description is TBD +// Increment returns a PatternFlowRSVPPathExplicitRouteType1FourByteASNumberLBitCounter +func (obj *patternFlowRSVPPathExplicitRouteType1FourByteASNumberLBit) Increment() PatternFlowRSVPPathExplicitRouteType1FourByteASNumberLBitCounter { + if obj.obj.Increment == nil { + obj.SetChoice(PatternFlowRSVPPathExplicitRouteType1FourByteASNumberLBitChoice.INCREMENT) + } + if obj.incrementHolder == nil { + obj.incrementHolder = &patternFlowRSVPPathExplicitRouteType1FourByteASNumberLBitCounter{obj: obj.obj.Increment} + } + return obj.incrementHolder } -// Bottom-of-Stack bit. -// SetSBit sets the bool value in the BgpSrteSegmentATypeSubTlv object -func (obj *bgpSrteSegmentATypeSubTlv) SetSBit(value bool) BgpSrteSegmentATypeSubTlv { - - obj.obj.SBit = &value - return obj +// description is TBD +// Increment returns a PatternFlowRSVPPathExplicitRouteType1FourByteASNumberLBitCounter +func (obj *patternFlowRSVPPathExplicitRouteType1FourByteASNumberLBit) HasIncrement() bool { + return obj.obj.Increment != nil } -// Time To Live. -// Ttl returns a uint32 -func (obj *bgpSrteSegmentATypeSubTlv) Ttl() uint32 { +// description is TBD +// SetIncrement sets the PatternFlowRSVPPathExplicitRouteType1FourByteASNumberLBitCounter value in the PatternFlowRSVPPathExplicitRouteType1FourByteASNumberLBit object +func (obj *patternFlowRSVPPathExplicitRouteType1FourByteASNumberLBit) SetIncrement(value PatternFlowRSVPPathExplicitRouteType1FourByteASNumberLBitCounter) PatternFlowRSVPPathExplicitRouteType1FourByteASNumberLBit { + obj.SetChoice(PatternFlowRSVPPathExplicitRouteType1FourByteASNumberLBitChoice.INCREMENT) + obj.incrementHolder = nil + obj.obj.Increment = value.Msg() - return *obj.obj.Ttl + return obj +} +// description is TBD +// Decrement returns a PatternFlowRSVPPathExplicitRouteType1FourByteASNumberLBitCounter +func (obj *patternFlowRSVPPathExplicitRouteType1FourByteASNumberLBit) Decrement() PatternFlowRSVPPathExplicitRouteType1FourByteASNumberLBitCounter { + if obj.obj.Decrement == nil { + obj.SetChoice(PatternFlowRSVPPathExplicitRouteType1FourByteASNumberLBitChoice.DECREMENT) + } + if obj.decrementHolder == nil { + obj.decrementHolder = &patternFlowRSVPPathExplicitRouteType1FourByteASNumberLBitCounter{obj: obj.obj.Decrement} + } + return obj.decrementHolder } -// Time To Live. -// Ttl returns a uint32 -func (obj *bgpSrteSegmentATypeSubTlv) HasTtl() bool { - return obj.obj.Ttl != nil +// description is TBD +// Decrement returns a PatternFlowRSVPPathExplicitRouteType1FourByteASNumberLBitCounter +func (obj *patternFlowRSVPPathExplicitRouteType1FourByteASNumberLBit) HasDecrement() bool { + return obj.obj.Decrement != nil } -// Time To Live. -// SetTtl sets the uint32 value in the BgpSrteSegmentATypeSubTlv object -func (obj *bgpSrteSegmentATypeSubTlv) SetTtl(value uint32) BgpSrteSegmentATypeSubTlv { +// description is TBD +// SetDecrement sets the PatternFlowRSVPPathExplicitRouteType1FourByteASNumberLBitCounter value in the PatternFlowRSVPPathExplicitRouteType1FourByteASNumberLBit object +func (obj *patternFlowRSVPPathExplicitRouteType1FourByteASNumberLBit) SetDecrement(value PatternFlowRSVPPathExplicitRouteType1FourByteASNumberLBitCounter) PatternFlowRSVPPathExplicitRouteType1FourByteASNumberLBit { + obj.SetChoice(PatternFlowRSVPPathExplicitRouteType1FourByteASNumberLBitChoice.DECREMENT) + obj.decrementHolder = nil + obj.obj.Decrement = value.Msg() - obj.obj.Ttl = &value return obj } -func (obj *bgpSrteSegmentATypeSubTlv) validateObj(vObj *validation, set_default bool) { +func (obj *patternFlowRSVPPathExplicitRouteType1FourByteASNumberLBit) validateObj(vObj *validation, set_default bool) { if set_default { obj.setDefault() } - if obj.obj.Flags != nil { - - err := obj.validateHex(obj.Flags()) - if err != nil { - vObj.validationErrors = append(vObj.validationErrors, fmt.Sprintf("%s %s", err.Error(), "on BgpSrteSegmentATypeSubTlv.Flags")) - } - - } - - if obj.obj.Label != nil { + if obj.obj.Value != nil { - if *obj.obj.Label > 1048575 { + if *obj.obj.Value > 1 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("0 <= BgpSrteSegmentATypeSubTlv.Label <= 1048575 but Got %d", *obj.obj.Label)) + fmt.Sprintf("0 <= PatternFlowRSVPPathExplicitRouteType1FourByteASNumberLBit.Value <= 1 but Got %d", *obj.obj.Value)) } } - if obj.obj.Tc != nil { + if obj.obj.Values != nil { + + for _, item := range obj.obj.Values { + if item > 1 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("min(uint32) <= PatternFlowRSVPPathExplicitRouteType1FourByteASNumberLBit.Values <= 1 but Got %d", item)) + } - if *obj.obj.Tc > 7 { - vObj.validationErrors = append( - vObj.validationErrors, - fmt.Sprintf("0 <= BgpSrteSegmentATypeSubTlv.Tc <= 7 but Got %d", *obj.obj.Tc)) } } - if obj.obj.Ttl != nil { + if obj.obj.Increment != nil { - if *obj.obj.Ttl > 225 { - vObj.validationErrors = append( - vObj.validationErrors, - fmt.Sprintf("0 <= BgpSrteSegmentATypeSubTlv.Ttl <= 225 but Got %d", *obj.obj.Ttl)) - } + obj.Increment().validateObj(vObj, set_default) + } + + if obj.obj.Decrement != nil { + obj.Decrement().validateObj(vObj, set_default) } } -func (obj *bgpSrteSegmentATypeSubTlv) setDefault() { +func (obj *patternFlowRSVPPathExplicitRouteType1FourByteASNumberLBit) setDefault() { + if obj.obj.Choice == nil { + obj.SetChoice(PatternFlowRSVPPathExplicitRouteType1FourByteASNumberLBitChoice.VALUE) + + } } -// ***** BgpSrteSegmentBTypeSubTlv ***** -type bgpSrteSegmentBTypeSubTlv struct { +// ***** PatternFlowRSVPPathExplicitRouteType1FourByteASNumberReserved ***** +type patternFlowRSVPPathExplicitRouteType1FourByteASNumberReserved struct { validation - obj *otg.BgpSrteSegmentBTypeSubTlv - srv6SidEndpointBehaviorHolder BgpSrteSRv6SIDEndpointBehaviorAndStructure + obj *otg.PatternFlowRSVPPathExplicitRouteType1FourByteASNumberReserved + incrementHolder PatternFlowRSVPPathExplicitRouteType1FourByteASNumberReservedCounter + decrementHolder PatternFlowRSVPPathExplicitRouteType1FourByteASNumberReservedCounter } -func NewBgpSrteSegmentBTypeSubTlv() BgpSrteSegmentBTypeSubTlv { - obj := bgpSrteSegmentBTypeSubTlv{obj: &otg.BgpSrteSegmentBTypeSubTlv{}} +func NewPatternFlowRSVPPathExplicitRouteType1FourByteASNumberReserved() PatternFlowRSVPPathExplicitRouteType1FourByteASNumberReserved { + obj := patternFlowRSVPPathExplicitRouteType1FourByteASNumberReserved{obj: &otg.PatternFlowRSVPPathExplicitRouteType1FourByteASNumberReserved{}} obj.setDefault() return &obj } -func (obj *bgpSrteSegmentBTypeSubTlv) Msg() *otg.BgpSrteSegmentBTypeSubTlv { +func (obj *patternFlowRSVPPathExplicitRouteType1FourByteASNumberReserved) Msg() *otg.PatternFlowRSVPPathExplicitRouteType1FourByteASNumberReserved { return obj.obj } -func (obj *bgpSrteSegmentBTypeSubTlv) SetMsg(msg *otg.BgpSrteSegmentBTypeSubTlv) BgpSrteSegmentBTypeSubTlv { +func (obj *patternFlowRSVPPathExplicitRouteType1FourByteASNumberReserved) SetMsg(msg *otg.PatternFlowRSVPPathExplicitRouteType1FourByteASNumberReserved) PatternFlowRSVPPathExplicitRouteType1FourByteASNumberReserved { obj.setNil() proto.Merge(obj.obj, msg) return obj } -func (obj *bgpSrteSegmentBTypeSubTlv) ToProto() (*otg.BgpSrteSegmentBTypeSubTlv, error) { +func (obj *patternFlowRSVPPathExplicitRouteType1FourByteASNumberReserved) ToProto() (*otg.PatternFlowRSVPPathExplicitRouteType1FourByteASNumberReserved, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -317740,7 +364930,7 @@ func (obj *bgpSrteSegmentBTypeSubTlv) ToProto() (*otg.BgpSrteSegmentBTypeSubTlv, return obj.Msg(), nil } -func (obj *bgpSrteSegmentBTypeSubTlv) FromProto(msg *otg.BgpSrteSegmentBTypeSubTlv) (BgpSrteSegmentBTypeSubTlv, error) { +func (obj *patternFlowRSVPPathExplicitRouteType1FourByteASNumberReserved) FromProto(msg *otg.PatternFlowRSVPPathExplicitRouteType1FourByteASNumberReserved) (PatternFlowRSVPPathExplicitRouteType1FourByteASNumberReserved, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -317749,7 +364939,7 @@ func (obj *bgpSrteSegmentBTypeSubTlv) FromProto(msg *otg.BgpSrteSegmentBTypeSubT return newObj, nil } -func (obj *bgpSrteSegmentBTypeSubTlv) ToPbText() (string, error) { +func (obj *patternFlowRSVPPathExplicitRouteType1FourByteASNumberReserved) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -317761,7 +364951,7 @@ func (obj *bgpSrteSegmentBTypeSubTlv) ToPbText() (string, error) { return string(protoMarshal), nil } -func (obj *bgpSrteSegmentBTypeSubTlv) FromPbText(value string) error { +func (obj *patternFlowRSVPPathExplicitRouteType1FourByteASNumberReserved) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj @@ -317774,7 +364964,7 @@ func (obj *bgpSrteSegmentBTypeSubTlv) FromPbText(value string) error { return retObj } -func (obj *bgpSrteSegmentBTypeSubTlv) ToYaml() (string, error) { +func (obj *patternFlowRSVPPathExplicitRouteType1FourByteASNumberReserved) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -317795,7 +364985,7 @@ func (obj *bgpSrteSegmentBTypeSubTlv) ToYaml() (string, error) { return string(data), nil } -func (obj *bgpSrteSegmentBTypeSubTlv) FromYaml(value string) error { +func (obj *patternFlowRSVPPathExplicitRouteType1FourByteASNumberReserved) FromYaml(value string) error { if value == "" { value = "{}" } @@ -317820,7 +365010,7 @@ func (obj *bgpSrteSegmentBTypeSubTlv) FromYaml(value string) error { return nil } -func (obj *bgpSrteSegmentBTypeSubTlv) ToJson() (string, error) { +func (obj *patternFlowRSVPPathExplicitRouteType1FourByteASNumberReserved) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -317838,7 +365028,7 @@ func (obj *bgpSrteSegmentBTypeSubTlv) ToJson() (string, error) { return string(data), nil } -func (obj *bgpSrteSegmentBTypeSubTlv) FromJson(value string) error { +func (obj *patternFlowRSVPPathExplicitRouteType1FourByteASNumberReserved) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -317859,19 +365049,19 @@ func (obj *bgpSrteSegmentBTypeSubTlv) FromJson(value string) error { return nil } -func (obj *bgpSrteSegmentBTypeSubTlv) validateToAndFrom() error { +func (obj *patternFlowRSVPPathExplicitRouteType1FourByteASNumberReserved) validateToAndFrom() error { // emptyVars() obj.validateObj(&obj.validation, true) return obj.validationResult() } -func (obj *bgpSrteSegmentBTypeSubTlv) Validate() error { +func (obj *patternFlowRSVPPathExplicitRouteType1FourByteASNumberReserved) Validate() error { // emptyVars() obj.validateObj(&obj.validation, false) return obj.validationResult() } -func (obj *bgpSrteSegmentBTypeSubTlv) String() string { +func (obj *patternFlowRSVPPathExplicitRouteType1FourByteASNumberReserved) String() string { str, err := obj.ToYaml() if err != nil { return err.Error() @@ -317879,12 +365069,12 @@ func (obj *bgpSrteSegmentBTypeSubTlv) String() string { return str } -func (obj *bgpSrteSegmentBTypeSubTlv) Clone() (BgpSrteSegmentBTypeSubTlv, error) { +func (obj *patternFlowRSVPPathExplicitRouteType1FourByteASNumberReserved) Clone() (PatternFlowRSVPPathExplicitRouteType1FourByteASNumberReserved, error) { vErr := obj.Validate() if vErr != nil { return nil, vErr } - newObj := NewBgpSrteSegmentBTypeSubTlv() + newObj := NewPatternFlowRSVPPathExplicitRouteType1FourByteASNumberReserved() data, err := proto.Marshal(obj.Msg()) if err != nil { return nil, err @@ -317896,196 +365086,319 @@ func (obj *bgpSrteSegmentBTypeSubTlv) Clone() (BgpSrteSegmentBTypeSubTlv, error) return newObj, nil } -func (obj *bgpSrteSegmentBTypeSubTlv) setNil() { - obj.srv6SidEndpointBehaviorHolder = nil +func (obj *patternFlowRSVPPathExplicitRouteType1FourByteASNumberReserved) setNil() { + obj.incrementHolder = nil + obj.decrementHolder = nil obj.validationErrors = nil obj.warnings = nil obj.constraints = make(map[string]map[string]Constraints) } -// BgpSrteSegmentBTypeSubTlv is type B: SID only, in the form of IPv6 address. -type BgpSrteSegmentBTypeSubTlv interface { +// PatternFlowRSVPPathExplicitRouteType1FourByteASNumberReserved is reserved. +type PatternFlowRSVPPathExplicitRouteType1FourByteASNumberReserved interface { Validation - // Msg marshals BgpSrteSegmentBTypeSubTlv to protobuf object *otg.BgpSrteSegmentBTypeSubTlv + // Msg marshals PatternFlowRSVPPathExplicitRouteType1FourByteASNumberReserved to protobuf object *otg.PatternFlowRSVPPathExplicitRouteType1FourByteASNumberReserved // and doesn't set defaults - Msg() *otg.BgpSrteSegmentBTypeSubTlv - // SetMsg unmarshals BgpSrteSegmentBTypeSubTlv from protobuf object *otg.BgpSrteSegmentBTypeSubTlv + Msg() *otg.PatternFlowRSVPPathExplicitRouteType1FourByteASNumberReserved + // SetMsg unmarshals PatternFlowRSVPPathExplicitRouteType1FourByteASNumberReserved from protobuf object *otg.PatternFlowRSVPPathExplicitRouteType1FourByteASNumberReserved // and doesn't set defaults - SetMsg(*otg.BgpSrteSegmentBTypeSubTlv) BgpSrteSegmentBTypeSubTlv - // ToProto marshals BgpSrteSegmentBTypeSubTlv to protobuf object *otg.BgpSrteSegmentBTypeSubTlv - ToProto() (*otg.BgpSrteSegmentBTypeSubTlv, error) - // ToPbText marshals BgpSrteSegmentBTypeSubTlv to protobuf text + SetMsg(*otg.PatternFlowRSVPPathExplicitRouteType1FourByteASNumberReserved) PatternFlowRSVPPathExplicitRouteType1FourByteASNumberReserved + // ToProto marshals PatternFlowRSVPPathExplicitRouteType1FourByteASNumberReserved to protobuf object *otg.PatternFlowRSVPPathExplicitRouteType1FourByteASNumberReserved + ToProto() (*otg.PatternFlowRSVPPathExplicitRouteType1FourByteASNumberReserved, error) + // ToPbText marshals PatternFlowRSVPPathExplicitRouteType1FourByteASNumberReserved to protobuf text ToPbText() (string, error) - // ToYaml marshals BgpSrteSegmentBTypeSubTlv to YAML text + // ToYaml marshals PatternFlowRSVPPathExplicitRouteType1FourByteASNumberReserved to YAML text ToYaml() (string, error) - // ToJson marshals BgpSrteSegmentBTypeSubTlv to JSON text + // ToJson marshals PatternFlowRSVPPathExplicitRouteType1FourByteASNumberReserved to JSON text ToJson() (string, error) - // FromProto unmarshals BgpSrteSegmentBTypeSubTlv from protobuf object *otg.BgpSrteSegmentBTypeSubTlv - FromProto(msg *otg.BgpSrteSegmentBTypeSubTlv) (BgpSrteSegmentBTypeSubTlv, error) - // FromPbText unmarshals BgpSrteSegmentBTypeSubTlv from protobuf text + // FromProto unmarshals PatternFlowRSVPPathExplicitRouteType1FourByteASNumberReserved from protobuf object *otg.PatternFlowRSVPPathExplicitRouteType1FourByteASNumberReserved + FromProto(msg *otg.PatternFlowRSVPPathExplicitRouteType1FourByteASNumberReserved) (PatternFlowRSVPPathExplicitRouteType1FourByteASNumberReserved, error) + // FromPbText unmarshals PatternFlowRSVPPathExplicitRouteType1FourByteASNumberReserved from protobuf text FromPbText(value string) error - // FromYaml unmarshals BgpSrteSegmentBTypeSubTlv from YAML text + // FromYaml unmarshals PatternFlowRSVPPathExplicitRouteType1FourByteASNumberReserved from YAML text FromYaml(value string) error - // FromJson unmarshals BgpSrteSegmentBTypeSubTlv from JSON text + // FromJson unmarshals PatternFlowRSVPPathExplicitRouteType1FourByteASNumberReserved from JSON text FromJson(value string) error - // Validate validates BgpSrteSegmentBTypeSubTlv + // Validate validates PatternFlowRSVPPathExplicitRouteType1FourByteASNumberReserved Validate() error // A stringer function String() string // Clones the object - Clone() (BgpSrteSegmentBTypeSubTlv, error) + Clone() (PatternFlowRSVPPathExplicitRouteType1FourByteASNumberReserved, error) validateToAndFrom() error validateObj(vObj *validation, set_default bool) setDefault() - // Flags returns string, set in BgpSrteSegmentBTypeSubTlv. - Flags() string - // SetFlags assigns string provided by user to BgpSrteSegmentBTypeSubTlv - SetFlags(value string) BgpSrteSegmentBTypeSubTlv - // HasFlags checks if Flags has been set in BgpSrteSegmentBTypeSubTlv - HasFlags() bool - // Srv6Sid returns string, set in BgpSrteSegmentBTypeSubTlv. - Srv6Sid() string - // SetSrv6Sid assigns string provided by user to BgpSrteSegmentBTypeSubTlv - SetSrv6Sid(value string) BgpSrteSegmentBTypeSubTlv - // Srv6SidEndpointBehavior returns BgpSrteSRv6SIDEndpointBehaviorAndStructure, set in BgpSrteSegmentBTypeSubTlv. - // BgpSrteSRv6SIDEndpointBehaviorAndStructure is configuration for SRv6 Endpoint Behavior and SID Structure. Its optional. Summation of lengths for Locator Block, Locator Node, Function, and Argument MUST be less than or equal to 128. - Srv6SidEndpointBehavior() BgpSrteSRv6SIDEndpointBehaviorAndStructure - // SetSrv6SidEndpointBehavior assigns BgpSrteSRv6SIDEndpointBehaviorAndStructure provided by user to BgpSrteSegmentBTypeSubTlv. - // BgpSrteSRv6SIDEndpointBehaviorAndStructure is configuration for SRv6 Endpoint Behavior and SID Structure. Its optional. Summation of lengths for Locator Block, Locator Node, Function, and Argument MUST be less than or equal to 128. - SetSrv6SidEndpointBehavior(value BgpSrteSRv6SIDEndpointBehaviorAndStructure) BgpSrteSegmentBTypeSubTlv - // HasSrv6SidEndpointBehavior checks if Srv6SidEndpointBehavior has been set in BgpSrteSegmentBTypeSubTlv - HasSrv6SidEndpointBehavior() bool + // Choice returns PatternFlowRSVPPathExplicitRouteType1FourByteASNumberReservedChoiceEnum, set in PatternFlowRSVPPathExplicitRouteType1FourByteASNumberReserved + Choice() PatternFlowRSVPPathExplicitRouteType1FourByteASNumberReservedChoiceEnum + // SetChoice assigns PatternFlowRSVPPathExplicitRouteType1FourByteASNumberReservedChoiceEnum provided by user to PatternFlowRSVPPathExplicitRouteType1FourByteASNumberReserved + SetChoice(value PatternFlowRSVPPathExplicitRouteType1FourByteASNumberReservedChoiceEnum) PatternFlowRSVPPathExplicitRouteType1FourByteASNumberReserved + // HasChoice checks if Choice has been set in PatternFlowRSVPPathExplicitRouteType1FourByteASNumberReserved + HasChoice() bool + // Value returns uint32, set in PatternFlowRSVPPathExplicitRouteType1FourByteASNumberReserved. + Value() uint32 + // SetValue assigns uint32 provided by user to PatternFlowRSVPPathExplicitRouteType1FourByteASNumberReserved + SetValue(value uint32) PatternFlowRSVPPathExplicitRouteType1FourByteASNumberReserved + // HasValue checks if Value has been set in PatternFlowRSVPPathExplicitRouteType1FourByteASNumberReserved + HasValue() bool + // Values returns []uint32, set in PatternFlowRSVPPathExplicitRouteType1FourByteASNumberReserved. + Values() []uint32 + // SetValues assigns []uint32 provided by user to PatternFlowRSVPPathExplicitRouteType1FourByteASNumberReserved + SetValues(value []uint32) PatternFlowRSVPPathExplicitRouteType1FourByteASNumberReserved + // Increment returns PatternFlowRSVPPathExplicitRouteType1FourByteASNumberReservedCounter, set in PatternFlowRSVPPathExplicitRouteType1FourByteASNumberReserved. + // PatternFlowRSVPPathExplicitRouteType1FourByteASNumberReservedCounter is integer counter pattern + Increment() PatternFlowRSVPPathExplicitRouteType1FourByteASNumberReservedCounter + // SetIncrement assigns PatternFlowRSVPPathExplicitRouteType1FourByteASNumberReservedCounter provided by user to PatternFlowRSVPPathExplicitRouteType1FourByteASNumberReserved. + // PatternFlowRSVPPathExplicitRouteType1FourByteASNumberReservedCounter is integer counter pattern + SetIncrement(value PatternFlowRSVPPathExplicitRouteType1FourByteASNumberReservedCounter) PatternFlowRSVPPathExplicitRouteType1FourByteASNumberReserved + // HasIncrement checks if Increment has been set in PatternFlowRSVPPathExplicitRouteType1FourByteASNumberReserved + HasIncrement() bool + // Decrement returns PatternFlowRSVPPathExplicitRouteType1FourByteASNumberReservedCounter, set in PatternFlowRSVPPathExplicitRouteType1FourByteASNumberReserved. + // PatternFlowRSVPPathExplicitRouteType1FourByteASNumberReservedCounter is integer counter pattern + Decrement() PatternFlowRSVPPathExplicitRouteType1FourByteASNumberReservedCounter + // SetDecrement assigns PatternFlowRSVPPathExplicitRouteType1FourByteASNumberReservedCounter provided by user to PatternFlowRSVPPathExplicitRouteType1FourByteASNumberReserved. + // PatternFlowRSVPPathExplicitRouteType1FourByteASNumberReservedCounter is integer counter pattern + SetDecrement(value PatternFlowRSVPPathExplicitRouteType1FourByteASNumberReservedCounter) PatternFlowRSVPPathExplicitRouteType1FourByteASNumberReserved + // HasDecrement checks if Decrement has been set in PatternFlowRSVPPathExplicitRouteType1FourByteASNumberReserved + HasDecrement() bool setNil() } -// One octet bitmap for flags including V-Flag, A-Flag, S-Flag, B-Flag etc. as defined in https://datatracker.ietf.org/doc/html/draft-ietf-idr-segment-routing-te-policy-13#section-2.4.4.2.12 -// Flags returns a string -func (obj *bgpSrteSegmentBTypeSubTlv) Flags() string { +type PatternFlowRSVPPathExplicitRouteType1FourByteASNumberReservedChoiceEnum string + +// Enum of Choice on PatternFlowRSVPPathExplicitRouteType1FourByteASNumberReserved +var PatternFlowRSVPPathExplicitRouteType1FourByteASNumberReservedChoice = struct { + VALUE PatternFlowRSVPPathExplicitRouteType1FourByteASNumberReservedChoiceEnum + VALUES PatternFlowRSVPPathExplicitRouteType1FourByteASNumberReservedChoiceEnum + INCREMENT PatternFlowRSVPPathExplicitRouteType1FourByteASNumberReservedChoiceEnum + DECREMENT PatternFlowRSVPPathExplicitRouteType1FourByteASNumberReservedChoiceEnum +}{ + VALUE: PatternFlowRSVPPathExplicitRouteType1FourByteASNumberReservedChoiceEnum("value"), + VALUES: PatternFlowRSVPPathExplicitRouteType1FourByteASNumberReservedChoiceEnum("values"), + INCREMENT: PatternFlowRSVPPathExplicitRouteType1FourByteASNumberReservedChoiceEnum("increment"), + DECREMENT: PatternFlowRSVPPathExplicitRouteType1FourByteASNumberReservedChoiceEnum("decrement"), +} + +func (obj *patternFlowRSVPPathExplicitRouteType1FourByteASNumberReserved) Choice() PatternFlowRSVPPathExplicitRouteType1FourByteASNumberReservedChoiceEnum { + return PatternFlowRSVPPathExplicitRouteType1FourByteASNumberReservedChoiceEnum(obj.obj.Choice.Enum().String()) +} + +// description is TBD +// Choice returns a string +func (obj *patternFlowRSVPPathExplicitRouteType1FourByteASNumberReserved) HasChoice() bool { + return obj.obj.Choice != nil +} + +func (obj *patternFlowRSVPPathExplicitRouteType1FourByteASNumberReserved) SetChoice(value PatternFlowRSVPPathExplicitRouteType1FourByteASNumberReservedChoiceEnum) PatternFlowRSVPPathExplicitRouteType1FourByteASNumberReserved { + intValue, ok := otg.PatternFlowRSVPPathExplicitRouteType1FourByteASNumberReserved_Choice_Enum_value[string(value)] + if !ok { + obj.validationErrors = append(obj.validationErrors, fmt.Sprintf( + "%s is not a valid choice on PatternFlowRSVPPathExplicitRouteType1FourByteASNumberReservedChoiceEnum", string(value))) + return obj + } + enumValue := otg.PatternFlowRSVPPathExplicitRouteType1FourByteASNumberReserved_Choice_Enum(intValue) + obj.obj.Choice = &enumValue + obj.obj.Decrement = nil + obj.decrementHolder = nil + obj.obj.Increment = nil + obj.incrementHolder = nil + obj.obj.Values = nil + obj.obj.Value = nil + + if value == PatternFlowRSVPPathExplicitRouteType1FourByteASNumberReservedChoice.VALUE { + defaultValue := uint32(0) + obj.obj.Value = &defaultValue + } - return *obj.obj.Flags + if value == PatternFlowRSVPPathExplicitRouteType1FourByteASNumberReservedChoice.VALUES { + defaultValue := []uint32{0} + obj.obj.Values = defaultValue + } + + if value == PatternFlowRSVPPathExplicitRouteType1FourByteASNumberReservedChoice.INCREMENT { + obj.obj.Increment = NewPatternFlowRSVPPathExplicitRouteType1FourByteASNumberReservedCounter().Msg() + } + if value == PatternFlowRSVPPathExplicitRouteType1FourByteASNumberReservedChoice.DECREMENT { + obj.obj.Decrement = NewPatternFlowRSVPPathExplicitRouteType1FourByteASNumberReservedCounter().Msg() + } + + return obj } -// One octet bitmap for flags including V-Flag, A-Flag, S-Flag, B-Flag etc. as defined in https://datatracker.ietf.org/doc/html/draft-ietf-idr-segment-routing-te-policy-13#section-2.4.4.2.12 -// Flags returns a string -func (obj *bgpSrteSegmentBTypeSubTlv) HasFlags() bool { - return obj.obj.Flags != nil +// description is TBD +// Value returns a uint32 +func (obj *patternFlowRSVPPathExplicitRouteType1FourByteASNumberReserved) Value() uint32 { + + if obj.obj.Value == nil { + obj.SetChoice(PatternFlowRSVPPathExplicitRouteType1FourByteASNumberReservedChoice.VALUE) + } + + return *obj.obj.Value + } -// One octet bitmap for flags including V-Flag, A-Flag, S-Flag, B-Flag etc. as defined in https://datatracker.ietf.org/doc/html/draft-ietf-idr-segment-routing-te-policy-13#section-2.4.4.2.12 -// SetFlags sets the string value in the BgpSrteSegmentBTypeSubTlv object -func (obj *bgpSrteSegmentBTypeSubTlv) SetFlags(value string) BgpSrteSegmentBTypeSubTlv { +// description is TBD +// Value returns a uint32 +func (obj *patternFlowRSVPPathExplicitRouteType1FourByteASNumberReserved) HasValue() bool { + return obj.obj.Value != nil +} - obj.obj.Flags = &value +// description is TBD +// SetValue sets the uint32 value in the PatternFlowRSVPPathExplicitRouteType1FourByteASNumberReserved object +func (obj *patternFlowRSVPPathExplicitRouteType1FourByteASNumberReserved) SetValue(value uint32) PatternFlowRSVPPathExplicitRouteType1FourByteASNumberReserved { + obj.SetChoice(PatternFlowRSVPPathExplicitRouteType1FourByteASNumberReservedChoice.VALUE) + obj.obj.Value = &value return obj } -// SRv6 SID. -// Srv6Sid returns a string -func (obj *bgpSrteSegmentBTypeSubTlv) Srv6Sid() string { +// description is TBD +// Values returns a []uint32 +func (obj *patternFlowRSVPPathExplicitRouteType1FourByteASNumberReserved) Values() []uint32 { + if obj.obj.Values == nil { + obj.SetValues([]uint32{0}) + } + return obj.obj.Values +} - return *obj.obj.Srv6Sid +// description is TBD +// SetValues sets the []uint32 value in the PatternFlowRSVPPathExplicitRouteType1FourByteASNumberReserved object +func (obj *patternFlowRSVPPathExplicitRouteType1FourByteASNumberReserved) SetValues(value []uint32) PatternFlowRSVPPathExplicitRouteType1FourByteASNumberReserved { + obj.SetChoice(PatternFlowRSVPPathExplicitRouteType1FourByteASNumberReservedChoice.VALUES) + if obj.obj.Values == nil { + obj.obj.Values = make([]uint32, 0) + } + obj.obj.Values = value + return obj } -// SRv6 SID. -// SetSrv6Sid sets the string value in the BgpSrteSegmentBTypeSubTlv object -func (obj *bgpSrteSegmentBTypeSubTlv) SetSrv6Sid(value string) BgpSrteSegmentBTypeSubTlv { +// description is TBD +// Increment returns a PatternFlowRSVPPathExplicitRouteType1FourByteASNumberReservedCounter +func (obj *patternFlowRSVPPathExplicitRouteType1FourByteASNumberReserved) Increment() PatternFlowRSVPPathExplicitRouteType1FourByteASNumberReservedCounter { + if obj.obj.Increment == nil { + obj.SetChoice(PatternFlowRSVPPathExplicitRouteType1FourByteASNumberReservedChoice.INCREMENT) + } + if obj.incrementHolder == nil { + obj.incrementHolder = &patternFlowRSVPPathExplicitRouteType1FourByteASNumberReservedCounter{obj: obj.obj.Increment} + } + return obj.incrementHolder +} + +// description is TBD +// Increment returns a PatternFlowRSVPPathExplicitRouteType1FourByteASNumberReservedCounter +func (obj *patternFlowRSVPPathExplicitRouteType1FourByteASNumberReserved) HasIncrement() bool { + return obj.obj.Increment != nil +} + +// description is TBD +// SetIncrement sets the PatternFlowRSVPPathExplicitRouteType1FourByteASNumberReservedCounter value in the PatternFlowRSVPPathExplicitRouteType1FourByteASNumberReserved object +func (obj *patternFlowRSVPPathExplicitRouteType1FourByteASNumberReserved) SetIncrement(value PatternFlowRSVPPathExplicitRouteType1FourByteASNumberReservedCounter) PatternFlowRSVPPathExplicitRouteType1FourByteASNumberReserved { + obj.SetChoice(PatternFlowRSVPPathExplicitRouteType1FourByteASNumberReservedChoice.INCREMENT) + obj.incrementHolder = nil + obj.obj.Increment = value.Msg() - obj.obj.Srv6Sid = &value return obj } -// Optional SRv6 Endpoint Behavior and SID Structure. -// Srv6SidEndpointBehavior returns a BgpSrteSRv6SIDEndpointBehaviorAndStructure -func (obj *bgpSrteSegmentBTypeSubTlv) Srv6SidEndpointBehavior() BgpSrteSRv6SIDEndpointBehaviorAndStructure { - if obj.obj.Srv6SidEndpointBehavior == nil { - obj.obj.Srv6SidEndpointBehavior = NewBgpSrteSRv6SIDEndpointBehaviorAndStructure().Msg() +// description is TBD +// Decrement returns a PatternFlowRSVPPathExplicitRouteType1FourByteASNumberReservedCounter +func (obj *patternFlowRSVPPathExplicitRouteType1FourByteASNumberReserved) Decrement() PatternFlowRSVPPathExplicitRouteType1FourByteASNumberReservedCounter { + if obj.obj.Decrement == nil { + obj.SetChoice(PatternFlowRSVPPathExplicitRouteType1FourByteASNumberReservedChoice.DECREMENT) } - if obj.srv6SidEndpointBehaviorHolder == nil { - obj.srv6SidEndpointBehaviorHolder = &bgpSrteSRv6SIDEndpointBehaviorAndStructure{obj: obj.obj.Srv6SidEndpointBehavior} + if obj.decrementHolder == nil { + obj.decrementHolder = &patternFlowRSVPPathExplicitRouteType1FourByteASNumberReservedCounter{obj: obj.obj.Decrement} } - return obj.srv6SidEndpointBehaviorHolder + return obj.decrementHolder } -// Optional SRv6 Endpoint Behavior and SID Structure. -// Srv6SidEndpointBehavior returns a BgpSrteSRv6SIDEndpointBehaviorAndStructure -func (obj *bgpSrteSegmentBTypeSubTlv) HasSrv6SidEndpointBehavior() bool { - return obj.obj.Srv6SidEndpointBehavior != nil +// description is TBD +// Decrement returns a PatternFlowRSVPPathExplicitRouteType1FourByteASNumberReservedCounter +func (obj *patternFlowRSVPPathExplicitRouteType1FourByteASNumberReserved) HasDecrement() bool { + return obj.obj.Decrement != nil } -// Optional SRv6 Endpoint Behavior and SID Structure. -// SetSrv6SidEndpointBehavior sets the BgpSrteSRv6SIDEndpointBehaviorAndStructure value in the BgpSrteSegmentBTypeSubTlv object -func (obj *bgpSrteSegmentBTypeSubTlv) SetSrv6SidEndpointBehavior(value BgpSrteSRv6SIDEndpointBehaviorAndStructure) BgpSrteSegmentBTypeSubTlv { - - obj.srv6SidEndpointBehaviorHolder = nil - obj.obj.Srv6SidEndpointBehavior = value.Msg() +// description is TBD +// SetDecrement sets the PatternFlowRSVPPathExplicitRouteType1FourByteASNumberReservedCounter value in the PatternFlowRSVPPathExplicitRouteType1FourByteASNumberReserved object +func (obj *patternFlowRSVPPathExplicitRouteType1FourByteASNumberReserved) SetDecrement(value PatternFlowRSVPPathExplicitRouteType1FourByteASNumberReservedCounter) PatternFlowRSVPPathExplicitRouteType1FourByteASNumberReserved { + obj.SetChoice(PatternFlowRSVPPathExplicitRouteType1FourByteASNumberReservedChoice.DECREMENT) + obj.decrementHolder = nil + obj.obj.Decrement = value.Msg() return obj } -func (obj *bgpSrteSegmentBTypeSubTlv) validateObj(vObj *validation, set_default bool) { +func (obj *patternFlowRSVPPathExplicitRouteType1FourByteASNumberReserved) validateObj(vObj *validation, set_default bool) { if set_default { obj.setDefault() } - if obj.obj.Flags != nil { + if obj.obj.Value != nil { - err := obj.validateHex(obj.Flags()) - if err != nil { - vObj.validationErrors = append(vObj.validationErrors, fmt.Sprintf("%s %s", err.Error(), "on BgpSrteSegmentBTypeSubTlv.Flags")) + if *obj.obj.Value > 255 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("0 <= PatternFlowRSVPPathExplicitRouteType1FourByteASNumberReserved.Value <= 255 but Got %d", *obj.obj.Value)) } } - // Srv6Sid is required - if obj.obj.Srv6Sid == nil { - vObj.validationErrors = append(vObj.validationErrors, "Srv6Sid is required field on interface BgpSrteSegmentBTypeSubTlv") - } - if obj.obj.Srv6Sid != nil { + if obj.obj.Values != nil { + + for _, item := range obj.obj.Values { + if item > 255 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("min(uint32) <= PatternFlowRSVPPathExplicitRouteType1FourByteASNumberReserved.Values <= 255 but Got %d", item)) + } - err := obj.validateIpv6(obj.Srv6Sid()) - if err != nil { - vObj.validationErrors = append(vObj.validationErrors, fmt.Sprintf("%s %s", err.Error(), "on BgpSrteSegmentBTypeSubTlv.Srv6Sid")) } } - if obj.obj.Srv6SidEndpointBehavior != nil { + if obj.obj.Increment != nil { - obj.Srv6SidEndpointBehavior().validateObj(vObj, set_default) + obj.Increment().validateObj(vObj, set_default) + } + + if obj.obj.Decrement != nil { + + obj.Decrement().validateObj(vObj, set_default) } } -func (obj *bgpSrteSegmentBTypeSubTlv) setDefault() { +func (obj *patternFlowRSVPPathExplicitRouteType1FourByteASNumberReserved) setDefault() { + if obj.obj.Choice == nil { + obj.SetChoice(PatternFlowRSVPPathExplicitRouteType1FourByteASNumberReservedChoice.VALUE) + + } } -// ***** BgpSrteSegmentCTypeSubTlv ***** -type bgpSrteSegmentCTypeSubTlv struct { +// ***** FlowRSVPRouteRecordLength ***** +type flowRSVPRouteRecordLength struct { validation - obj *otg.BgpSrteSegmentCTypeSubTlv - srMplsSidHolder BgpSrteSrMplsSid + obj *otg.FlowRSVPRouteRecordLength } -func NewBgpSrteSegmentCTypeSubTlv() BgpSrteSegmentCTypeSubTlv { - obj := bgpSrteSegmentCTypeSubTlv{obj: &otg.BgpSrteSegmentCTypeSubTlv{}} +func NewFlowRSVPRouteRecordLength() FlowRSVPRouteRecordLength { + obj := flowRSVPRouteRecordLength{obj: &otg.FlowRSVPRouteRecordLength{}} obj.setDefault() return &obj } -func (obj *bgpSrteSegmentCTypeSubTlv) Msg() *otg.BgpSrteSegmentCTypeSubTlv { +func (obj *flowRSVPRouteRecordLength) Msg() *otg.FlowRSVPRouteRecordLength { return obj.obj } -func (obj *bgpSrteSegmentCTypeSubTlv) SetMsg(msg *otg.BgpSrteSegmentCTypeSubTlv) BgpSrteSegmentCTypeSubTlv { - obj.setNil() +func (obj *flowRSVPRouteRecordLength) SetMsg(msg *otg.FlowRSVPRouteRecordLength) FlowRSVPRouteRecordLength { + proto.Merge(obj.obj, msg) return obj } -func (obj *bgpSrteSegmentCTypeSubTlv) ToProto() (*otg.BgpSrteSegmentCTypeSubTlv, error) { +func (obj *flowRSVPRouteRecordLength) ToProto() (*otg.FlowRSVPRouteRecordLength, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -318093,7 +365406,7 @@ func (obj *bgpSrteSegmentCTypeSubTlv) ToProto() (*otg.BgpSrteSegmentCTypeSubTlv, return obj.Msg(), nil } -func (obj *bgpSrteSegmentCTypeSubTlv) FromProto(msg *otg.BgpSrteSegmentCTypeSubTlv) (BgpSrteSegmentCTypeSubTlv, error) { +func (obj *flowRSVPRouteRecordLength) FromProto(msg *otg.FlowRSVPRouteRecordLength) (FlowRSVPRouteRecordLength, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -318102,7 +365415,7 @@ func (obj *bgpSrteSegmentCTypeSubTlv) FromProto(msg *otg.BgpSrteSegmentCTypeSubT return newObj, nil } -func (obj *bgpSrteSegmentCTypeSubTlv) ToPbText() (string, error) { +func (obj *flowRSVPRouteRecordLength) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -318114,12 +365427,12 @@ func (obj *bgpSrteSegmentCTypeSubTlv) ToPbText() (string, error) { return string(protoMarshal), nil } -func (obj *bgpSrteSegmentCTypeSubTlv) FromPbText(value string) error { +func (obj *flowRSVPRouteRecordLength) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj } - obj.setNil() + vErr := obj.validateToAndFrom() if vErr != nil { return vErr @@ -318127,7 +365440,7 @@ func (obj *bgpSrteSegmentCTypeSubTlv) FromPbText(value string) error { return retObj } -func (obj *bgpSrteSegmentCTypeSubTlv) ToYaml() (string, error) { +func (obj *flowRSVPRouteRecordLength) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -318148,7 +365461,7 @@ func (obj *bgpSrteSegmentCTypeSubTlv) ToYaml() (string, error) { return string(data), nil } -func (obj *bgpSrteSegmentCTypeSubTlv) FromYaml(value string) error { +func (obj *flowRSVPRouteRecordLength) FromYaml(value string) error { if value == "" { value = "{}" } @@ -318165,7 +365478,7 @@ func (obj *bgpSrteSegmentCTypeSubTlv) FromYaml(value string) error { return fmt.Errorf("unmarshal error %s", strings.Replace( uError.Error(), "\u00a0", " ", -1)[7:]) } - obj.setNil() + vErr := obj.validateToAndFrom() if vErr != nil { return vErr @@ -318173,7 +365486,7 @@ func (obj *bgpSrteSegmentCTypeSubTlv) FromYaml(value string) error { return nil } -func (obj *bgpSrteSegmentCTypeSubTlv) ToJson() (string, error) { +func (obj *flowRSVPRouteRecordLength) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -318191,7 +365504,7 @@ func (obj *bgpSrteSegmentCTypeSubTlv) ToJson() (string, error) { return string(data), nil } -func (obj *bgpSrteSegmentCTypeSubTlv) FromJson(value string) error { +func (obj *flowRSVPRouteRecordLength) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -318204,7 +365517,7 @@ func (obj *bgpSrteSegmentCTypeSubTlv) FromJson(value string) error { return fmt.Errorf("unmarshal error %s", strings.Replace( uError.Error(), "\u00a0", " ", -1)[7:]) } - obj.setNil() + err := obj.validateToAndFrom() if err != nil { return err @@ -318212,19 +365525,19 @@ func (obj *bgpSrteSegmentCTypeSubTlv) FromJson(value string) error { return nil } -func (obj *bgpSrteSegmentCTypeSubTlv) validateToAndFrom() error { +func (obj *flowRSVPRouteRecordLength) validateToAndFrom() error { // emptyVars() obj.validateObj(&obj.validation, true) return obj.validationResult() } -func (obj *bgpSrteSegmentCTypeSubTlv) Validate() error { +func (obj *flowRSVPRouteRecordLength) Validate() error { // emptyVars() obj.validateObj(&obj.validation, false) return obj.validationResult() } -func (obj *bgpSrteSegmentCTypeSubTlv) String() string { +func (obj *flowRSVPRouteRecordLength) String() string { str, err := obj.ToYaml() if err != nil { return err.Error() @@ -318232,12 +365545,12 @@ func (obj *bgpSrteSegmentCTypeSubTlv) String() string { return str } -func (obj *bgpSrteSegmentCTypeSubTlv) Clone() (BgpSrteSegmentCTypeSubTlv, error) { +func (obj *flowRSVPRouteRecordLength) Clone() (FlowRSVPRouteRecordLength, error) { vErr := obj.Validate() if vErr != nil { return nil, vErr } - newObj := NewBgpSrteSegmentCTypeSubTlv() + newObj := NewFlowRSVPRouteRecordLength() data, err := proto.Marshal(obj.Msg()) if err != nil { return nil, err @@ -318249,237 +365562,208 @@ func (obj *bgpSrteSegmentCTypeSubTlv) Clone() (BgpSrteSegmentCTypeSubTlv, error) return newObj, nil } -func (obj *bgpSrteSegmentCTypeSubTlv) setNil() { - obj.srMplsSidHolder = nil - obj.validationErrors = nil - obj.warnings = nil - obj.constraints = make(map[string]map[string]Constraints) -} - -// BgpSrteSegmentCTypeSubTlv is type C: IPv4 Node Address with optional SID. -type BgpSrteSegmentCTypeSubTlv interface { +// FlowRSVPRouteRecordLength is description is TBD +type FlowRSVPRouteRecordLength interface { Validation - // Msg marshals BgpSrteSegmentCTypeSubTlv to protobuf object *otg.BgpSrteSegmentCTypeSubTlv + // Msg marshals FlowRSVPRouteRecordLength to protobuf object *otg.FlowRSVPRouteRecordLength // and doesn't set defaults - Msg() *otg.BgpSrteSegmentCTypeSubTlv - // SetMsg unmarshals BgpSrteSegmentCTypeSubTlv from protobuf object *otg.BgpSrteSegmentCTypeSubTlv + Msg() *otg.FlowRSVPRouteRecordLength + // SetMsg unmarshals FlowRSVPRouteRecordLength from protobuf object *otg.FlowRSVPRouteRecordLength // and doesn't set defaults - SetMsg(*otg.BgpSrteSegmentCTypeSubTlv) BgpSrteSegmentCTypeSubTlv - // ToProto marshals BgpSrteSegmentCTypeSubTlv to protobuf object *otg.BgpSrteSegmentCTypeSubTlv - ToProto() (*otg.BgpSrteSegmentCTypeSubTlv, error) - // ToPbText marshals BgpSrteSegmentCTypeSubTlv to protobuf text + SetMsg(*otg.FlowRSVPRouteRecordLength) FlowRSVPRouteRecordLength + // ToProto marshals FlowRSVPRouteRecordLength to protobuf object *otg.FlowRSVPRouteRecordLength + ToProto() (*otg.FlowRSVPRouteRecordLength, error) + // ToPbText marshals FlowRSVPRouteRecordLength to protobuf text ToPbText() (string, error) - // ToYaml marshals BgpSrteSegmentCTypeSubTlv to YAML text + // ToYaml marshals FlowRSVPRouteRecordLength to YAML text ToYaml() (string, error) - // ToJson marshals BgpSrteSegmentCTypeSubTlv to JSON text + // ToJson marshals FlowRSVPRouteRecordLength to JSON text ToJson() (string, error) - // FromProto unmarshals BgpSrteSegmentCTypeSubTlv from protobuf object *otg.BgpSrteSegmentCTypeSubTlv - FromProto(msg *otg.BgpSrteSegmentCTypeSubTlv) (BgpSrteSegmentCTypeSubTlv, error) - // FromPbText unmarshals BgpSrteSegmentCTypeSubTlv from protobuf text + // FromProto unmarshals FlowRSVPRouteRecordLength from protobuf object *otg.FlowRSVPRouteRecordLength + FromProto(msg *otg.FlowRSVPRouteRecordLength) (FlowRSVPRouteRecordLength, error) + // FromPbText unmarshals FlowRSVPRouteRecordLength from protobuf text FromPbText(value string) error - // FromYaml unmarshals BgpSrteSegmentCTypeSubTlv from YAML text + // FromYaml unmarshals FlowRSVPRouteRecordLength from YAML text FromYaml(value string) error - // FromJson unmarshals BgpSrteSegmentCTypeSubTlv from JSON text + // FromJson unmarshals FlowRSVPRouteRecordLength from JSON text FromJson(value string) error - // Validate validates BgpSrteSegmentCTypeSubTlv + // Validate validates FlowRSVPRouteRecordLength Validate() error // A stringer function String() string // Clones the object - Clone() (BgpSrteSegmentCTypeSubTlv, error) + Clone() (FlowRSVPRouteRecordLength, error) validateToAndFrom() error validateObj(vObj *validation, set_default bool) setDefault() - // Flags returns string, set in BgpSrteSegmentCTypeSubTlv. - Flags() string - // SetFlags assigns string provided by user to BgpSrteSegmentCTypeSubTlv - SetFlags(value string) BgpSrteSegmentCTypeSubTlv - // HasFlags checks if Flags has been set in BgpSrteSegmentCTypeSubTlv - HasFlags() bool - // SrAlgorithm returns uint32, set in BgpSrteSegmentCTypeSubTlv. - SrAlgorithm() uint32 - // SetSrAlgorithm assigns uint32 provided by user to BgpSrteSegmentCTypeSubTlv - SetSrAlgorithm(value uint32) BgpSrteSegmentCTypeSubTlv - // HasSrAlgorithm checks if SrAlgorithm has been set in BgpSrteSegmentCTypeSubTlv - HasSrAlgorithm() bool - // Ipv4NodeAddress returns string, set in BgpSrteSegmentCTypeSubTlv. - Ipv4NodeAddress() string - // SetIpv4NodeAddress assigns string provided by user to BgpSrteSegmentCTypeSubTlv - SetIpv4NodeAddress(value string) BgpSrteSegmentCTypeSubTlv - // SrMplsSid returns BgpSrteSrMplsSid, set in BgpSrteSegmentCTypeSubTlv. - // BgpSrteSrMplsSid is configuration for SR-MPLS with Label, TC, Bottom-of-Stack and TTL. - SrMplsSid() BgpSrteSrMplsSid - // SetSrMplsSid assigns BgpSrteSrMplsSid provided by user to BgpSrteSegmentCTypeSubTlv. - // BgpSrteSrMplsSid is configuration for SR-MPLS with Label, TC, Bottom-of-Stack and TTL. - SetSrMplsSid(value BgpSrteSrMplsSid) BgpSrteSegmentCTypeSubTlv - // HasSrMplsSid checks if SrMplsSid has been set in BgpSrteSegmentCTypeSubTlv - HasSrMplsSid() bool - setNil() + // Choice returns FlowRSVPRouteRecordLengthChoiceEnum, set in FlowRSVPRouteRecordLength + Choice() FlowRSVPRouteRecordLengthChoiceEnum + // SetChoice assigns FlowRSVPRouteRecordLengthChoiceEnum provided by user to FlowRSVPRouteRecordLength + SetChoice(value FlowRSVPRouteRecordLengthChoiceEnum) FlowRSVPRouteRecordLength + // HasChoice checks if Choice has been set in FlowRSVPRouteRecordLength + HasChoice() bool + // Auto returns uint32, set in FlowRSVPRouteRecordLength. + Auto() uint32 + // HasAuto checks if Auto has been set in FlowRSVPRouteRecordLength + HasAuto() bool + // Value returns uint32, set in FlowRSVPRouteRecordLength. + Value() uint32 + // SetValue assigns uint32 provided by user to FlowRSVPRouteRecordLength + SetValue(value uint32) FlowRSVPRouteRecordLength + // HasValue checks if Value has been set in FlowRSVPRouteRecordLength + HasValue() bool } -// One octet bitmap for flags including V-Flag, A-Flag, S-Flag, B-Flag etc. as defined in https://datatracker.ietf.org/doc/html/draft-ietf-idr-segment-routing-te-policy-13#section-2.4.4.2.12 -// Flags returns a string -func (obj *bgpSrteSegmentCTypeSubTlv) Flags() string { - - return *obj.obj.Flags +type FlowRSVPRouteRecordLengthChoiceEnum string +// Enum of Choice on FlowRSVPRouteRecordLength +var FlowRSVPRouteRecordLengthChoice = struct { + AUTO FlowRSVPRouteRecordLengthChoiceEnum + VALUE FlowRSVPRouteRecordLengthChoiceEnum +}{ + AUTO: FlowRSVPRouteRecordLengthChoiceEnum("auto"), + VALUE: FlowRSVPRouteRecordLengthChoiceEnum("value"), } -// One octet bitmap for flags including V-Flag, A-Flag, S-Flag, B-Flag etc. as defined in https://datatracker.ietf.org/doc/html/draft-ietf-idr-segment-routing-te-policy-13#section-2.4.4.2.12 -// Flags returns a string -func (obj *bgpSrteSegmentCTypeSubTlv) HasFlags() bool { - return obj.obj.Flags != nil +func (obj *flowRSVPRouteRecordLength) Choice() FlowRSVPRouteRecordLengthChoiceEnum { + return FlowRSVPRouteRecordLengthChoiceEnum(obj.obj.Choice.Enum().String()) } -// One octet bitmap for flags including V-Flag, A-Flag, S-Flag, B-Flag etc. as defined in https://datatracker.ietf.org/doc/html/draft-ietf-idr-segment-routing-te-policy-13#section-2.4.4.2.12 -// SetFlags sets the string value in the BgpSrteSegmentCTypeSubTlv object -func (obj *bgpSrteSegmentCTypeSubTlv) SetFlags(value string) BgpSrteSegmentCTypeSubTlv { - - obj.obj.Flags = &value - return obj +// auto or configured value. +// Choice returns a string +func (obj *flowRSVPRouteRecordLength) HasChoice() bool { + return obj.obj.Choice != nil } -// SR Algorithm identifier when A-Flag in on. -// SrAlgorithm returns a uint32 -func (obj *bgpSrteSegmentCTypeSubTlv) SrAlgorithm() uint32 { - - return *obj.obj.SrAlgorithm - -} +func (obj *flowRSVPRouteRecordLength) SetChoice(value FlowRSVPRouteRecordLengthChoiceEnum) FlowRSVPRouteRecordLength { + intValue, ok := otg.FlowRSVPRouteRecordLength_Choice_Enum_value[string(value)] + if !ok { + obj.validationErrors = append(obj.validationErrors, fmt.Sprintf( + "%s is not a valid choice on FlowRSVPRouteRecordLengthChoiceEnum", string(value))) + return obj + } + enumValue := otg.FlowRSVPRouteRecordLength_Choice_Enum(intValue) + obj.obj.Choice = &enumValue + obj.obj.Value = nil + obj.obj.Auto = nil -// SR Algorithm identifier when A-Flag in on. -// SrAlgorithm returns a uint32 -func (obj *bgpSrteSegmentCTypeSubTlv) HasSrAlgorithm() bool { - return obj.obj.SrAlgorithm != nil -} + if value == FlowRSVPRouteRecordLengthChoice.AUTO { + defaultValue := uint32(8) + obj.obj.Auto = &defaultValue + } -// SR Algorithm identifier when A-Flag in on. -// SetSrAlgorithm sets the uint32 value in the BgpSrteSegmentCTypeSubTlv object -func (obj *bgpSrteSegmentCTypeSubTlv) SetSrAlgorithm(value uint32) BgpSrteSegmentCTypeSubTlv { + if value == FlowRSVPRouteRecordLengthChoice.VALUE { + defaultValue := uint32(8) + obj.obj.Value = &defaultValue + } - obj.obj.SrAlgorithm = &value return obj } -// IPv4 address representing a node. -// Ipv4NodeAddress returns a string -func (obj *bgpSrteSegmentCTypeSubTlv) Ipv4NodeAddress() string { +// The OTG implementation can provide a system generated value for this property. If the OTG is unable to generate a value the default value must be used. +// Auto returns a uint32 +func (obj *flowRSVPRouteRecordLength) Auto() uint32 { - return *obj.obj.Ipv4NodeAddress + if obj.obj.Auto == nil { + obj.SetChoice(FlowRSVPRouteRecordLengthChoice.AUTO) + } -} + return *obj.obj.Auto -// IPv4 address representing a node. -// SetIpv4NodeAddress sets the string value in the BgpSrteSegmentCTypeSubTlv object -func (obj *bgpSrteSegmentCTypeSubTlv) SetIpv4NodeAddress(value string) BgpSrteSegmentCTypeSubTlv { +} - obj.obj.Ipv4NodeAddress = &value - return obj +// The OTG implementation can provide a system generated value for this property. If the OTG is unable to generate a value the default value must be used. +// Auto returns a uint32 +func (obj *flowRSVPRouteRecordLength) HasAuto() bool { + return obj.obj.Auto != nil } -// Optional SR-MPLS SID. -// SrMplsSid returns a BgpSrteSrMplsSid -func (obj *bgpSrteSegmentCTypeSubTlv) SrMplsSid() BgpSrteSrMplsSid { - if obj.obj.SrMplsSid == nil { - obj.obj.SrMplsSid = NewBgpSrteSrMplsSid().Msg() - } - if obj.srMplsSidHolder == nil { - obj.srMplsSidHolder = &bgpSrteSrMplsSid{obj: obj.obj.SrMplsSid} +// description is TBD +// Value returns a uint32 +func (obj *flowRSVPRouteRecordLength) Value() uint32 { + + if obj.obj.Value == nil { + obj.SetChoice(FlowRSVPRouteRecordLengthChoice.VALUE) } - return obj.srMplsSidHolder -} -// Optional SR-MPLS SID. -// SrMplsSid returns a BgpSrteSrMplsSid -func (obj *bgpSrteSegmentCTypeSubTlv) HasSrMplsSid() bool { - return obj.obj.SrMplsSid != nil -} + return *obj.obj.Value -// Optional SR-MPLS SID. -// SetSrMplsSid sets the BgpSrteSrMplsSid value in the BgpSrteSegmentCTypeSubTlv object -func (obj *bgpSrteSegmentCTypeSubTlv) SetSrMplsSid(value BgpSrteSrMplsSid) BgpSrteSegmentCTypeSubTlv { +} - obj.srMplsSidHolder = nil - obj.obj.SrMplsSid = value.Msg() +// description is TBD +// Value returns a uint32 +func (obj *flowRSVPRouteRecordLength) HasValue() bool { + return obj.obj.Value != nil +} +// description is TBD +// SetValue sets the uint32 value in the FlowRSVPRouteRecordLength object +func (obj *flowRSVPRouteRecordLength) SetValue(value uint32) FlowRSVPRouteRecordLength { + obj.SetChoice(FlowRSVPRouteRecordLengthChoice.VALUE) + obj.obj.Value = &value return obj } -func (obj *bgpSrteSegmentCTypeSubTlv) validateObj(vObj *validation, set_default bool) { +func (obj *flowRSVPRouteRecordLength) validateObj(vObj *validation, set_default bool) { if set_default { obj.setDefault() } - if obj.obj.Flags != nil { - - err := obj.validateHex(obj.Flags()) - if err != nil { - vObj.validationErrors = append(vObj.validationErrors, fmt.Sprintf("%s %s", err.Error(), "on BgpSrteSegmentCTypeSubTlv.Flags")) - } - - } - - if obj.obj.SrAlgorithm != nil { + if obj.obj.Auto != nil { - if *obj.obj.SrAlgorithm > 255 { + if *obj.obj.Auto > 256 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("0 <= BgpSrteSegmentCTypeSubTlv.SrAlgorithm <= 255 but Got %d", *obj.obj.SrAlgorithm)) + fmt.Sprintf("0 <= FlowRSVPRouteRecordLength.Auto <= 256 but Got %d", *obj.obj.Auto)) } } - // Ipv4NodeAddress is required - if obj.obj.Ipv4NodeAddress == nil { - vObj.validationErrors = append(vObj.validationErrors, "Ipv4NodeAddress is required field on interface BgpSrteSegmentCTypeSubTlv") - } - if obj.obj.Ipv4NodeAddress != nil { + if obj.obj.Value != nil { - err := obj.validateIpv4(obj.Ipv4NodeAddress()) - if err != nil { - vObj.validationErrors = append(vObj.validationErrors, fmt.Sprintf("%s %s", err.Error(), "on BgpSrteSegmentCTypeSubTlv.Ipv4NodeAddress")) + if *obj.obj.Value > 256 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("0 <= FlowRSVPRouteRecordLength.Value <= 256 but Got %d", *obj.obj.Value)) } } - if obj.obj.SrMplsSid != nil { - - obj.SrMplsSid().validateObj(vObj, set_default) - } - } -func (obj *bgpSrteSegmentCTypeSubTlv) setDefault() { - if obj.obj.SrAlgorithm == nil { - obj.SetSrAlgorithm(0) +func (obj *flowRSVPRouteRecordLength) setDefault() { + if obj.obj.Choice == nil { + obj.SetChoice(FlowRSVPRouteRecordLengthChoice.AUTO) + } } -// ***** BgpSrteSegmentDTypeSubTlv ***** -type bgpSrteSegmentDTypeSubTlv struct { +// ***** PatternFlowRSVPPathRecordRouteType1Ipv4AddressIpv4Address ***** +type patternFlowRSVPPathRecordRouteType1Ipv4AddressIpv4Address struct { validation - obj *otg.BgpSrteSegmentDTypeSubTlv - srMplsSidHolder BgpSrteSrMplsSid + obj *otg.PatternFlowRSVPPathRecordRouteType1Ipv4AddressIpv4Address + incrementHolder PatternFlowRSVPPathRecordRouteType1Ipv4AddressIpv4AddressCounter + decrementHolder PatternFlowRSVPPathRecordRouteType1Ipv4AddressIpv4AddressCounter } -func NewBgpSrteSegmentDTypeSubTlv() BgpSrteSegmentDTypeSubTlv { - obj := bgpSrteSegmentDTypeSubTlv{obj: &otg.BgpSrteSegmentDTypeSubTlv{}} +func NewPatternFlowRSVPPathRecordRouteType1Ipv4AddressIpv4Address() PatternFlowRSVPPathRecordRouteType1Ipv4AddressIpv4Address { + obj := patternFlowRSVPPathRecordRouteType1Ipv4AddressIpv4Address{obj: &otg.PatternFlowRSVPPathRecordRouteType1Ipv4AddressIpv4Address{}} obj.setDefault() return &obj } -func (obj *bgpSrteSegmentDTypeSubTlv) Msg() *otg.BgpSrteSegmentDTypeSubTlv { +func (obj *patternFlowRSVPPathRecordRouteType1Ipv4AddressIpv4Address) Msg() *otg.PatternFlowRSVPPathRecordRouteType1Ipv4AddressIpv4Address { return obj.obj } -func (obj *bgpSrteSegmentDTypeSubTlv) SetMsg(msg *otg.BgpSrteSegmentDTypeSubTlv) BgpSrteSegmentDTypeSubTlv { +func (obj *patternFlowRSVPPathRecordRouteType1Ipv4AddressIpv4Address) SetMsg(msg *otg.PatternFlowRSVPPathRecordRouteType1Ipv4AddressIpv4Address) PatternFlowRSVPPathRecordRouteType1Ipv4AddressIpv4Address { obj.setNil() proto.Merge(obj.obj, msg) return obj } -func (obj *bgpSrteSegmentDTypeSubTlv) ToProto() (*otg.BgpSrteSegmentDTypeSubTlv, error) { +func (obj *patternFlowRSVPPathRecordRouteType1Ipv4AddressIpv4Address) ToProto() (*otg.PatternFlowRSVPPathRecordRouteType1Ipv4AddressIpv4Address, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -318487,7 +365771,7 @@ func (obj *bgpSrteSegmentDTypeSubTlv) ToProto() (*otg.BgpSrteSegmentDTypeSubTlv, return obj.Msg(), nil } -func (obj *bgpSrteSegmentDTypeSubTlv) FromProto(msg *otg.BgpSrteSegmentDTypeSubTlv) (BgpSrteSegmentDTypeSubTlv, error) { +func (obj *patternFlowRSVPPathRecordRouteType1Ipv4AddressIpv4Address) FromProto(msg *otg.PatternFlowRSVPPathRecordRouteType1Ipv4AddressIpv4Address) (PatternFlowRSVPPathRecordRouteType1Ipv4AddressIpv4Address, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -318496,7 +365780,7 @@ func (obj *bgpSrteSegmentDTypeSubTlv) FromProto(msg *otg.BgpSrteSegmentDTypeSubT return newObj, nil } -func (obj *bgpSrteSegmentDTypeSubTlv) ToPbText() (string, error) { +func (obj *patternFlowRSVPPathRecordRouteType1Ipv4AddressIpv4Address) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -318508,7 +365792,7 @@ func (obj *bgpSrteSegmentDTypeSubTlv) ToPbText() (string, error) { return string(protoMarshal), nil } -func (obj *bgpSrteSegmentDTypeSubTlv) FromPbText(value string) error { +func (obj *patternFlowRSVPPathRecordRouteType1Ipv4AddressIpv4Address) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj @@ -318521,7 +365805,7 @@ func (obj *bgpSrteSegmentDTypeSubTlv) FromPbText(value string) error { return retObj } -func (obj *bgpSrteSegmentDTypeSubTlv) ToYaml() (string, error) { +func (obj *patternFlowRSVPPathRecordRouteType1Ipv4AddressIpv4Address) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -318542,7 +365826,7 @@ func (obj *bgpSrteSegmentDTypeSubTlv) ToYaml() (string, error) { return string(data), nil } -func (obj *bgpSrteSegmentDTypeSubTlv) FromYaml(value string) error { +func (obj *patternFlowRSVPPathRecordRouteType1Ipv4AddressIpv4Address) FromYaml(value string) error { if value == "" { value = "{}" } @@ -318567,7 +365851,7 @@ func (obj *bgpSrteSegmentDTypeSubTlv) FromYaml(value string) error { return nil } -func (obj *bgpSrteSegmentDTypeSubTlv) ToJson() (string, error) { +func (obj *patternFlowRSVPPathRecordRouteType1Ipv4AddressIpv4Address) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -318585,7 +365869,7 @@ func (obj *bgpSrteSegmentDTypeSubTlv) ToJson() (string, error) { return string(data), nil } -func (obj *bgpSrteSegmentDTypeSubTlv) FromJson(value string) error { +func (obj *patternFlowRSVPPathRecordRouteType1Ipv4AddressIpv4Address) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -318606,19 +365890,19 @@ func (obj *bgpSrteSegmentDTypeSubTlv) FromJson(value string) error { return nil } -func (obj *bgpSrteSegmentDTypeSubTlv) validateToAndFrom() error { +func (obj *patternFlowRSVPPathRecordRouteType1Ipv4AddressIpv4Address) validateToAndFrom() error { // emptyVars() obj.validateObj(&obj.validation, true) return obj.validationResult() } -func (obj *bgpSrteSegmentDTypeSubTlv) Validate() error { +func (obj *patternFlowRSVPPathRecordRouteType1Ipv4AddressIpv4Address) Validate() error { // emptyVars() obj.validateObj(&obj.validation, false) return obj.validationResult() } -func (obj *bgpSrteSegmentDTypeSubTlv) String() string { +func (obj *patternFlowRSVPPathRecordRouteType1Ipv4AddressIpv4Address) String() string { str, err := obj.ToYaml() if err != nil { return err.Error() @@ -318626,12 +365910,12 @@ func (obj *bgpSrteSegmentDTypeSubTlv) String() string { return str } -func (obj *bgpSrteSegmentDTypeSubTlv) Clone() (BgpSrteSegmentDTypeSubTlv, error) { +func (obj *patternFlowRSVPPathRecordRouteType1Ipv4AddressIpv4Address) Clone() (PatternFlowRSVPPathRecordRouteType1Ipv4AddressIpv4Address, error) { vErr := obj.Validate() if vErr != nil { return nil, vErr } - newObj := NewBgpSrteSegmentDTypeSubTlv() + newObj := NewPatternFlowRSVPPathRecordRouteType1Ipv4AddressIpv4Address() data, err := proto.Marshal(obj.Msg()) if err != nil { return nil, err @@ -318643,237 +365927,316 @@ func (obj *bgpSrteSegmentDTypeSubTlv) Clone() (BgpSrteSegmentDTypeSubTlv, error) return newObj, nil } -func (obj *bgpSrteSegmentDTypeSubTlv) setNil() { - obj.srMplsSidHolder = nil +func (obj *patternFlowRSVPPathRecordRouteType1Ipv4AddressIpv4Address) setNil() { + obj.incrementHolder = nil + obj.decrementHolder = nil obj.validationErrors = nil obj.warnings = nil obj.constraints = make(map[string]map[string]Constraints) } -// BgpSrteSegmentDTypeSubTlv is type D: IPv6 Node Address with optional SID for SR MPLS. -type BgpSrteSegmentDTypeSubTlv interface { +// PatternFlowRSVPPathRecordRouteType1Ipv4AddressIpv4Address is a 32-bit unicast, host address. Any network-reachable interface address is allowed here. Illegal addresses, such as certain loopback addresses, SHOULD NOT be used. +type PatternFlowRSVPPathRecordRouteType1Ipv4AddressIpv4Address interface { Validation - // Msg marshals BgpSrteSegmentDTypeSubTlv to protobuf object *otg.BgpSrteSegmentDTypeSubTlv + // Msg marshals PatternFlowRSVPPathRecordRouteType1Ipv4AddressIpv4Address to protobuf object *otg.PatternFlowRSVPPathRecordRouteType1Ipv4AddressIpv4Address // and doesn't set defaults - Msg() *otg.BgpSrteSegmentDTypeSubTlv - // SetMsg unmarshals BgpSrteSegmentDTypeSubTlv from protobuf object *otg.BgpSrteSegmentDTypeSubTlv + Msg() *otg.PatternFlowRSVPPathRecordRouteType1Ipv4AddressIpv4Address + // SetMsg unmarshals PatternFlowRSVPPathRecordRouteType1Ipv4AddressIpv4Address from protobuf object *otg.PatternFlowRSVPPathRecordRouteType1Ipv4AddressIpv4Address // and doesn't set defaults - SetMsg(*otg.BgpSrteSegmentDTypeSubTlv) BgpSrteSegmentDTypeSubTlv - // ToProto marshals BgpSrteSegmentDTypeSubTlv to protobuf object *otg.BgpSrteSegmentDTypeSubTlv - ToProto() (*otg.BgpSrteSegmentDTypeSubTlv, error) - // ToPbText marshals BgpSrteSegmentDTypeSubTlv to protobuf text + SetMsg(*otg.PatternFlowRSVPPathRecordRouteType1Ipv4AddressIpv4Address) PatternFlowRSVPPathRecordRouteType1Ipv4AddressIpv4Address + // ToProto marshals PatternFlowRSVPPathRecordRouteType1Ipv4AddressIpv4Address to protobuf object *otg.PatternFlowRSVPPathRecordRouteType1Ipv4AddressIpv4Address + ToProto() (*otg.PatternFlowRSVPPathRecordRouteType1Ipv4AddressIpv4Address, error) + // ToPbText marshals PatternFlowRSVPPathRecordRouteType1Ipv4AddressIpv4Address to protobuf text ToPbText() (string, error) - // ToYaml marshals BgpSrteSegmentDTypeSubTlv to YAML text + // ToYaml marshals PatternFlowRSVPPathRecordRouteType1Ipv4AddressIpv4Address to YAML text ToYaml() (string, error) - // ToJson marshals BgpSrteSegmentDTypeSubTlv to JSON text + // ToJson marshals PatternFlowRSVPPathRecordRouteType1Ipv4AddressIpv4Address to JSON text ToJson() (string, error) - // FromProto unmarshals BgpSrteSegmentDTypeSubTlv from protobuf object *otg.BgpSrteSegmentDTypeSubTlv - FromProto(msg *otg.BgpSrteSegmentDTypeSubTlv) (BgpSrteSegmentDTypeSubTlv, error) - // FromPbText unmarshals BgpSrteSegmentDTypeSubTlv from protobuf text + // FromProto unmarshals PatternFlowRSVPPathRecordRouteType1Ipv4AddressIpv4Address from protobuf object *otg.PatternFlowRSVPPathRecordRouteType1Ipv4AddressIpv4Address + FromProto(msg *otg.PatternFlowRSVPPathRecordRouteType1Ipv4AddressIpv4Address) (PatternFlowRSVPPathRecordRouteType1Ipv4AddressIpv4Address, error) + // FromPbText unmarshals PatternFlowRSVPPathRecordRouteType1Ipv4AddressIpv4Address from protobuf text FromPbText(value string) error - // FromYaml unmarshals BgpSrteSegmentDTypeSubTlv from YAML text + // FromYaml unmarshals PatternFlowRSVPPathRecordRouteType1Ipv4AddressIpv4Address from YAML text FromYaml(value string) error - // FromJson unmarshals BgpSrteSegmentDTypeSubTlv from JSON text + // FromJson unmarshals PatternFlowRSVPPathRecordRouteType1Ipv4AddressIpv4Address from JSON text FromJson(value string) error - // Validate validates BgpSrteSegmentDTypeSubTlv + // Validate validates PatternFlowRSVPPathRecordRouteType1Ipv4AddressIpv4Address Validate() error // A stringer function String() string // Clones the object - Clone() (BgpSrteSegmentDTypeSubTlv, error) + Clone() (PatternFlowRSVPPathRecordRouteType1Ipv4AddressIpv4Address, error) validateToAndFrom() error validateObj(vObj *validation, set_default bool) setDefault() - // Flags returns string, set in BgpSrteSegmentDTypeSubTlv. - Flags() string - // SetFlags assigns string provided by user to BgpSrteSegmentDTypeSubTlv - SetFlags(value string) BgpSrteSegmentDTypeSubTlv - // HasFlags checks if Flags has been set in BgpSrteSegmentDTypeSubTlv - HasFlags() bool - // SrAlgorithm returns uint32, set in BgpSrteSegmentDTypeSubTlv. - SrAlgorithm() uint32 - // SetSrAlgorithm assigns uint32 provided by user to BgpSrteSegmentDTypeSubTlv - SetSrAlgorithm(value uint32) BgpSrteSegmentDTypeSubTlv - // HasSrAlgorithm checks if SrAlgorithm has been set in BgpSrteSegmentDTypeSubTlv - HasSrAlgorithm() bool - // Ipv6NodeAddress returns string, set in BgpSrteSegmentDTypeSubTlv. - Ipv6NodeAddress() string - // SetIpv6NodeAddress assigns string provided by user to BgpSrteSegmentDTypeSubTlv - SetIpv6NodeAddress(value string) BgpSrteSegmentDTypeSubTlv - // SrMplsSid returns BgpSrteSrMplsSid, set in BgpSrteSegmentDTypeSubTlv. - // BgpSrteSrMplsSid is configuration for SR-MPLS with Label, TC, Bottom-of-Stack and TTL. - SrMplsSid() BgpSrteSrMplsSid - // SetSrMplsSid assigns BgpSrteSrMplsSid provided by user to BgpSrteSegmentDTypeSubTlv. - // BgpSrteSrMplsSid is configuration for SR-MPLS with Label, TC, Bottom-of-Stack and TTL. - SetSrMplsSid(value BgpSrteSrMplsSid) BgpSrteSegmentDTypeSubTlv - // HasSrMplsSid checks if SrMplsSid has been set in BgpSrteSegmentDTypeSubTlv - HasSrMplsSid() bool + // Choice returns PatternFlowRSVPPathRecordRouteType1Ipv4AddressIpv4AddressChoiceEnum, set in PatternFlowRSVPPathRecordRouteType1Ipv4AddressIpv4Address + Choice() PatternFlowRSVPPathRecordRouteType1Ipv4AddressIpv4AddressChoiceEnum + // SetChoice assigns PatternFlowRSVPPathRecordRouteType1Ipv4AddressIpv4AddressChoiceEnum provided by user to PatternFlowRSVPPathRecordRouteType1Ipv4AddressIpv4Address + SetChoice(value PatternFlowRSVPPathRecordRouteType1Ipv4AddressIpv4AddressChoiceEnum) PatternFlowRSVPPathRecordRouteType1Ipv4AddressIpv4Address + // HasChoice checks if Choice has been set in PatternFlowRSVPPathRecordRouteType1Ipv4AddressIpv4Address + HasChoice() bool + // Value returns string, set in PatternFlowRSVPPathRecordRouteType1Ipv4AddressIpv4Address. + Value() string + // SetValue assigns string provided by user to PatternFlowRSVPPathRecordRouteType1Ipv4AddressIpv4Address + SetValue(value string) PatternFlowRSVPPathRecordRouteType1Ipv4AddressIpv4Address + // HasValue checks if Value has been set in PatternFlowRSVPPathRecordRouteType1Ipv4AddressIpv4Address + HasValue() bool + // Values returns []string, set in PatternFlowRSVPPathRecordRouteType1Ipv4AddressIpv4Address. + Values() []string + // SetValues assigns []string provided by user to PatternFlowRSVPPathRecordRouteType1Ipv4AddressIpv4Address + SetValues(value []string) PatternFlowRSVPPathRecordRouteType1Ipv4AddressIpv4Address + // Increment returns PatternFlowRSVPPathRecordRouteType1Ipv4AddressIpv4AddressCounter, set in PatternFlowRSVPPathRecordRouteType1Ipv4AddressIpv4Address. + // PatternFlowRSVPPathRecordRouteType1Ipv4AddressIpv4AddressCounter is ipv4 counter pattern + Increment() PatternFlowRSVPPathRecordRouteType1Ipv4AddressIpv4AddressCounter + // SetIncrement assigns PatternFlowRSVPPathRecordRouteType1Ipv4AddressIpv4AddressCounter provided by user to PatternFlowRSVPPathRecordRouteType1Ipv4AddressIpv4Address. + // PatternFlowRSVPPathRecordRouteType1Ipv4AddressIpv4AddressCounter is ipv4 counter pattern + SetIncrement(value PatternFlowRSVPPathRecordRouteType1Ipv4AddressIpv4AddressCounter) PatternFlowRSVPPathRecordRouteType1Ipv4AddressIpv4Address + // HasIncrement checks if Increment has been set in PatternFlowRSVPPathRecordRouteType1Ipv4AddressIpv4Address + HasIncrement() bool + // Decrement returns PatternFlowRSVPPathRecordRouteType1Ipv4AddressIpv4AddressCounter, set in PatternFlowRSVPPathRecordRouteType1Ipv4AddressIpv4Address. + // PatternFlowRSVPPathRecordRouteType1Ipv4AddressIpv4AddressCounter is ipv4 counter pattern + Decrement() PatternFlowRSVPPathRecordRouteType1Ipv4AddressIpv4AddressCounter + // SetDecrement assigns PatternFlowRSVPPathRecordRouteType1Ipv4AddressIpv4AddressCounter provided by user to PatternFlowRSVPPathRecordRouteType1Ipv4AddressIpv4Address. + // PatternFlowRSVPPathRecordRouteType1Ipv4AddressIpv4AddressCounter is ipv4 counter pattern + SetDecrement(value PatternFlowRSVPPathRecordRouteType1Ipv4AddressIpv4AddressCounter) PatternFlowRSVPPathRecordRouteType1Ipv4AddressIpv4Address + // HasDecrement checks if Decrement has been set in PatternFlowRSVPPathRecordRouteType1Ipv4AddressIpv4Address + HasDecrement() bool setNil() } -// One octet bitmap for flags including V-Flag, A-Flag, S-Flag, B-Flag etc. as defined in https://datatracker.ietf.org/doc/html/draft-ietf-idr-segment-routing-te-policy-13#section-2.4.4.2.12 -// Flags returns a string -func (obj *bgpSrteSegmentDTypeSubTlv) Flags() string { +type PatternFlowRSVPPathRecordRouteType1Ipv4AddressIpv4AddressChoiceEnum string - return *obj.obj.Flags +// Enum of Choice on PatternFlowRSVPPathRecordRouteType1Ipv4AddressIpv4Address +var PatternFlowRSVPPathRecordRouteType1Ipv4AddressIpv4AddressChoice = struct { + VALUE PatternFlowRSVPPathRecordRouteType1Ipv4AddressIpv4AddressChoiceEnum + VALUES PatternFlowRSVPPathRecordRouteType1Ipv4AddressIpv4AddressChoiceEnum + INCREMENT PatternFlowRSVPPathRecordRouteType1Ipv4AddressIpv4AddressChoiceEnum + DECREMENT PatternFlowRSVPPathRecordRouteType1Ipv4AddressIpv4AddressChoiceEnum +}{ + VALUE: PatternFlowRSVPPathRecordRouteType1Ipv4AddressIpv4AddressChoiceEnum("value"), + VALUES: PatternFlowRSVPPathRecordRouteType1Ipv4AddressIpv4AddressChoiceEnum("values"), + INCREMENT: PatternFlowRSVPPathRecordRouteType1Ipv4AddressIpv4AddressChoiceEnum("increment"), + DECREMENT: PatternFlowRSVPPathRecordRouteType1Ipv4AddressIpv4AddressChoiceEnum("decrement"), +} +func (obj *patternFlowRSVPPathRecordRouteType1Ipv4AddressIpv4Address) Choice() PatternFlowRSVPPathRecordRouteType1Ipv4AddressIpv4AddressChoiceEnum { + return PatternFlowRSVPPathRecordRouteType1Ipv4AddressIpv4AddressChoiceEnum(obj.obj.Choice.Enum().String()) } -// One octet bitmap for flags including V-Flag, A-Flag, S-Flag, B-Flag etc. as defined in https://datatracker.ietf.org/doc/html/draft-ietf-idr-segment-routing-te-policy-13#section-2.4.4.2.12 -// Flags returns a string -func (obj *bgpSrteSegmentDTypeSubTlv) HasFlags() bool { - return obj.obj.Flags != nil +// description is TBD +// Choice returns a string +func (obj *patternFlowRSVPPathRecordRouteType1Ipv4AddressIpv4Address) HasChoice() bool { + return obj.obj.Choice != nil } -// One octet bitmap for flags including V-Flag, A-Flag, S-Flag, B-Flag etc. as defined in https://datatracker.ietf.org/doc/html/draft-ietf-idr-segment-routing-te-policy-13#section-2.4.4.2.12 -// SetFlags sets the string value in the BgpSrteSegmentDTypeSubTlv object -func (obj *bgpSrteSegmentDTypeSubTlv) SetFlags(value string) BgpSrteSegmentDTypeSubTlv { +func (obj *patternFlowRSVPPathRecordRouteType1Ipv4AddressIpv4Address) SetChoice(value PatternFlowRSVPPathRecordRouteType1Ipv4AddressIpv4AddressChoiceEnum) PatternFlowRSVPPathRecordRouteType1Ipv4AddressIpv4Address { + intValue, ok := otg.PatternFlowRSVPPathRecordRouteType1Ipv4AddressIpv4Address_Choice_Enum_value[string(value)] + if !ok { + obj.validationErrors = append(obj.validationErrors, fmt.Sprintf( + "%s is not a valid choice on PatternFlowRSVPPathRecordRouteType1Ipv4AddressIpv4AddressChoiceEnum", string(value))) + return obj + } + enumValue := otg.PatternFlowRSVPPathRecordRouteType1Ipv4AddressIpv4Address_Choice_Enum(intValue) + obj.obj.Choice = &enumValue + obj.obj.Decrement = nil + obj.decrementHolder = nil + obj.obj.Increment = nil + obj.incrementHolder = nil + obj.obj.Values = nil + obj.obj.Value = nil + + if value == PatternFlowRSVPPathRecordRouteType1Ipv4AddressIpv4AddressChoice.VALUE { + defaultValue := "0.0.0.0" + obj.obj.Value = &defaultValue + } + + if value == PatternFlowRSVPPathRecordRouteType1Ipv4AddressIpv4AddressChoice.VALUES { + defaultValue := []string{"0.0.0.0"} + obj.obj.Values = defaultValue + } + + if value == PatternFlowRSVPPathRecordRouteType1Ipv4AddressIpv4AddressChoice.INCREMENT { + obj.obj.Increment = NewPatternFlowRSVPPathRecordRouteType1Ipv4AddressIpv4AddressCounter().Msg() + } + + if value == PatternFlowRSVPPathRecordRouteType1Ipv4AddressIpv4AddressChoice.DECREMENT { + obj.obj.Decrement = NewPatternFlowRSVPPathRecordRouteType1Ipv4AddressIpv4AddressCounter().Msg() + } - obj.obj.Flags = &value return obj } -// specifying SR Algorithm when when A-Flag as defined in above flags. -// SrAlgorithm returns a uint32 -func (obj *bgpSrteSegmentDTypeSubTlv) SrAlgorithm() uint32 { +// description is TBD +// Value returns a string +func (obj *patternFlowRSVPPathRecordRouteType1Ipv4AddressIpv4Address) Value() string { - return *obj.obj.SrAlgorithm + if obj.obj.Value == nil { + obj.SetChoice(PatternFlowRSVPPathRecordRouteType1Ipv4AddressIpv4AddressChoice.VALUE) + } -} + return *obj.obj.Value -// specifying SR Algorithm when when A-Flag as defined in above flags. -// SrAlgorithm returns a uint32 -func (obj *bgpSrteSegmentDTypeSubTlv) HasSrAlgorithm() bool { - return obj.obj.SrAlgorithm != nil } -// specifying SR Algorithm when when A-Flag as defined in above flags. -// SetSrAlgorithm sets the uint32 value in the BgpSrteSegmentDTypeSubTlv object -func (obj *bgpSrteSegmentDTypeSubTlv) SetSrAlgorithm(value uint32) BgpSrteSegmentDTypeSubTlv { +// description is TBD +// Value returns a string +func (obj *patternFlowRSVPPathRecordRouteType1Ipv4AddressIpv4Address) HasValue() bool { + return obj.obj.Value != nil +} - obj.obj.SrAlgorithm = &value +// description is TBD +// SetValue sets the string value in the PatternFlowRSVPPathRecordRouteType1Ipv4AddressIpv4Address object +func (obj *patternFlowRSVPPathRecordRouteType1Ipv4AddressIpv4Address) SetValue(value string) PatternFlowRSVPPathRecordRouteType1Ipv4AddressIpv4Address { + obj.SetChoice(PatternFlowRSVPPathRecordRouteType1Ipv4AddressIpv4AddressChoice.VALUE) + obj.obj.Value = &value return obj } -// IPv6 address representing a node. -// Ipv6NodeAddress returns a string -func (obj *bgpSrteSegmentDTypeSubTlv) Ipv6NodeAddress() string { +// description is TBD +// Values returns a []string +func (obj *patternFlowRSVPPathRecordRouteType1Ipv4AddressIpv4Address) Values() []string { + if obj.obj.Values == nil { + obj.SetValues([]string{"0.0.0.0"}) + } + return obj.obj.Values +} - return *obj.obj.Ipv6NodeAddress +// description is TBD +// SetValues sets the []string value in the PatternFlowRSVPPathRecordRouteType1Ipv4AddressIpv4Address object +func (obj *patternFlowRSVPPathRecordRouteType1Ipv4AddressIpv4Address) SetValues(value []string) PatternFlowRSVPPathRecordRouteType1Ipv4AddressIpv4Address { + obj.SetChoice(PatternFlowRSVPPathRecordRouteType1Ipv4AddressIpv4AddressChoice.VALUES) + if obj.obj.Values == nil { + obj.obj.Values = make([]string, 0) + } + obj.obj.Values = value + return obj } -// IPv6 address representing a node. -// SetIpv6NodeAddress sets the string value in the BgpSrteSegmentDTypeSubTlv object -func (obj *bgpSrteSegmentDTypeSubTlv) SetIpv6NodeAddress(value string) BgpSrteSegmentDTypeSubTlv { +// description is TBD +// Increment returns a PatternFlowRSVPPathRecordRouteType1Ipv4AddressIpv4AddressCounter +func (obj *patternFlowRSVPPathRecordRouteType1Ipv4AddressIpv4Address) Increment() PatternFlowRSVPPathRecordRouteType1Ipv4AddressIpv4AddressCounter { + if obj.obj.Increment == nil { + obj.SetChoice(PatternFlowRSVPPathRecordRouteType1Ipv4AddressIpv4AddressChoice.INCREMENT) + } + if obj.incrementHolder == nil { + obj.incrementHolder = &patternFlowRSVPPathRecordRouteType1Ipv4AddressIpv4AddressCounter{obj: obj.obj.Increment} + } + return obj.incrementHolder +} + +// description is TBD +// Increment returns a PatternFlowRSVPPathRecordRouteType1Ipv4AddressIpv4AddressCounter +func (obj *patternFlowRSVPPathRecordRouteType1Ipv4AddressIpv4Address) HasIncrement() bool { + return obj.obj.Increment != nil +} + +// description is TBD +// SetIncrement sets the PatternFlowRSVPPathRecordRouteType1Ipv4AddressIpv4AddressCounter value in the PatternFlowRSVPPathRecordRouteType1Ipv4AddressIpv4Address object +func (obj *patternFlowRSVPPathRecordRouteType1Ipv4AddressIpv4Address) SetIncrement(value PatternFlowRSVPPathRecordRouteType1Ipv4AddressIpv4AddressCounter) PatternFlowRSVPPathRecordRouteType1Ipv4AddressIpv4Address { + obj.SetChoice(PatternFlowRSVPPathRecordRouteType1Ipv4AddressIpv4AddressChoice.INCREMENT) + obj.incrementHolder = nil + obj.obj.Increment = value.Msg() - obj.obj.Ipv6NodeAddress = &value return obj } -// Optional SR-MPLS SID. -// SrMplsSid returns a BgpSrteSrMplsSid -func (obj *bgpSrteSegmentDTypeSubTlv) SrMplsSid() BgpSrteSrMplsSid { - if obj.obj.SrMplsSid == nil { - obj.obj.SrMplsSid = NewBgpSrteSrMplsSid().Msg() +// description is TBD +// Decrement returns a PatternFlowRSVPPathRecordRouteType1Ipv4AddressIpv4AddressCounter +func (obj *patternFlowRSVPPathRecordRouteType1Ipv4AddressIpv4Address) Decrement() PatternFlowRSVPPathRecordRouteType1Ipv4AddressIpv4AddressCounter { + if obj.obj.Decrement == nil { + obj.SetChoice(PatternFlowRSVPPathRecordRouteType1Ipv4AddressIpv4AddressChoice.DECREMENT) } - if obj.srMplsSidHolder == nil { - obj.srMplsSidHolder = &bgpSrteSrMplsSid{obj: obj.obj.SrMplsSid} + if obj.decrementHolder == nil { + obj.decrementHolder = &patternFlowRSVPPathRecordRouteType1Ipv4AddressIpv4AddressCounter{obj: obj.obj.Decrement} } - return obj.srMplsSidHolder + return obj.decrementHolder } -// Optional SR-MPLS SID. -// SrMplsSid returns a BgpSrteSrMplsSid -func (obj *bgpSrteSegmentDTypeSubTlv) HasSrMplsSid() bool { - return obj.obj.SrMplsSid != nil +// description is TBD +// Decrement returns a PatternFlowRSVPPathRecordRouteType1Ipv4AddressIpv4AddressCounter +func (obj *patternFlowRSVPPathRecordRouteType1Ipv4AddressIpv4Address) HasDecrement() bool { + return obj.obj.Decrement != nil } -// Optional SR-MPLS SID. -// SetSrMplsSid sets the BgpSrteSrMplsSid value in the BgpSrteSegmentDTypeSubTlv object -func (obj *bgpSrteSegmentDTypeSubTlv) SetSrMplsSid(value BgpSrteSrMplsSid) BgpSrteSegmentDTypeSubTlv { - - obj.srMplsSidHolder = nil - obj.obj.SrMplsSid = value.Msg() +// description is TBD +// SetDecrement sets the PatternFlowRSVPPathRecordRouteType1Ipv4AddressIpv4AddressCounter value in the PatternFlowRSVPPathRecordRouteType1Ipv4AddressIpv4Address object +func (obj *patternFlowRSVPPathRecordRouteType1Ipv4AddressIpv4Address) SetDecrement(value PatternFlowRSVPPathRecordRouteType1Ipv4AddressIpv4AddressCounter) PatternFlowRSVPPathRecordRouteType1Ipv4AddressIpv4Address { + obj.SetChoice(PatternFlowRSVPPathRecordRouteType1Ipv4AddressIpv4AddressChoice.DECREMENT) + obj.decrementHolder = nil + obj.obj.Decrement = value.Msg() return obj } -func (obj *bgpSrteSegmentDTypeSubTlv) validateObj(vObj *validation, set_default bool) { +func (obj *patternFlowRSVPPathRecordRouteType1Ipv4AddressIpv4Address) validateObj(vObj *validation, set_default bool) { if set_default { obj.setDefault() } - if obj.obj.Flags != nil { + if obj.obj.Value != nil { - err := obj.validateHex(obj.Flags()) + err := obj.validateIpv4(obj.Value()) if err != nil { - vObj.validationErrors = append(vObj.validationErrors, fmt.Sprintf("%s %s", err.Error(), "on BgpSrteSegmentDTypeSubTlv.Flags")) + vObj.validationErrors = append(vObj.validationErrors, fmt.Sprintf("%s %s", err.Error(), "on PatternFlowRSVPPathRecordRouteType1Ipv4AddressIpv4Address.Value")) } } - if obj.obj.SrAlgorithm != nil { + if obj.obj.Values != nil { - if *obj.obj.SrAlgorithm > 255 { - vObj.validationErrors = append( - vObj.validationErrors, - fmt.Sprintf("0 <= BgpSrteSegmentDTypeSubTlv.SrAlgorithm <= 255 but Got %d", *obj.obj.SrAlgorithm)) + err := obj.validateIpv4Slice(obj.Values()) + if err != nil { + vObj.validationErrors = append(vObj.validationErrors, fmt.Sprintf("%s %s", err.Error(), "on PatternFlowRSVPPathRecordRouteType1Ipv4AddressIpv4Address.Values")) } } - // Ipv6NodeAddress is required - if obj.obj.Ipv6NodeAddress == nil { - vObj.validationErrors = append(vObj.validationErrors, "Ipv6NodeAddress is required field on interface BgpSrteSegmentDTypeSubTlv") - } - if obj.obj.Ipv6NodeAddress != nil { - - err := obj.validateIpv6(obj.Ipv6NodeAddress()) - if err != nil { - vObj.validationErrors = append(vObj.validationErrors, fmt.Sprintf("%s %s", err.Error(), "on BgpSrteSegmentDTypeSubTlv.Ipv6NodeAddress")) - } + if obj.obj.Increment != nil { + obj.Increment().validateObj(vObj, set_default) } - if obj.obj.SrMplsSid != nil { + if obj.obj.Decrement != nil { - obj.SrMplsSid().validateObj(vObj, set_default) + obj.Decrement().validateObj(vObj, set_default) } } -func (obj *bgpSrteSegmentDTypeSubTlv) setDefault() { - if obj.obj.SrAlgorithm == nil { - obj.SetSrAlgorithm(0) +func (obj *patternFlowRSVPPathRecordRouteType1Ipv4AddressIpv4Address) setDefault() { + if obj.obj.Choice == nil { + obj.SetChoice(PatternFlowRSVPPathRecordRouteType1Ipv4AddressIpv4AddressChoice.VALUE) + } } -// ***** BgpSrteSegmentETypeSubTlv ***** -type bgpSrteSegmentETypeSubTlv struct { +// ***** PatternFlowRSVPPathRecordRouteType1Ipv4AddressPrefixLength ***** +type patternFlowRSVPPathRecordRouteType1Ipv4AddressPrefixLength struct { validation - obj *otg.BgpSrteSegmentETypeSubTlv - srMplsSidHolder BgpSrteSrMplsSid + obj *otg.PatternFlowRSVPPathRecordRouteType1Ipv4AddressPrefixLength + incrementHolder PatternFlowRSVPPathRecordRouteType1Ipv4AddressPrefixLengthCounter + decrementHolder PatternFlowRSVPPathRecordRouteType1Ipv4AddressPrefixLengthCounter } -func NewBgpSrteSegmentETypeSubTlv() BgpSrteSegmentETypeSubTlv { - obj := bgpSrteSegmentETypeSubTlv{obj: &otg.BgpSrteSegmentETypeSubTlv{}} +func NewPatternFlowRSVPPathRecordRouteType1Ipv4AddressPrefixLength() PatternFlowRSVPPathRecordRouteType1Ipv4AddressPrefixLength { + obj := patternFlowRSVPPathRecordRouteType1Ipv4AddressPrefixLength{obj: &otg.PatternFlowRSVPPathRecordRouteType1Ipv4AddressPrefixLength{}} obj.setDefault() return &obj } -func (obj *bgpSrteSegmentETypeSubTlv) Msg() *otg.BgpSrteSegmentETypeSubTlv { +func (obj *patternFlowRSVPPathRecordRouteType1Ipv4AddressPrefixLength) Msg() *otg.PatternFlowRSVPPathRecordRouteType1Ipv4AddressPrefixLength { return obj.obj } -func (obj *bgpSrteSegmentETypeSubTlv) SetMsg(msg *otg.BgpSrteSegmentETypeSubTlv) BgpSrteSegmentETypeSubTlv { +func (obj *patternFlowRSVPPathRecordRouteType1Ipv4AddressPrefixLength) SetMsg(msg *otg.PatternFlowRSVPPathRecordRouteType1Ipv4AddressPrefixLength) PatternFlowRSVPPathRecordRouteType1Ipv4AddressPrefixLength { obj.setNil() proto.Merge(obj.obj, msg) return obj } -func (obj *bgpSrteSegmentETypeSubTlv) ToProto() (*otg.BgpSrteSegmentETypeSubTlv, error) { +func (obj *patternFlowRSVPPathRecordRouteType1Ipv4AddressPrefixLength) ToProto() (*otg.PatternFlowRSVPPathRecordRouteType1Ipv4AddressPrefixLength, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -318881,7 +366244,7 @@ func (obj *bgpSrteSegmentETypeSubTlv) ToProto() (*otg.BgpSrteSegmentETypeSubTlv, return obj.Msg(), nil } -func (obj *bgpSrteSegmentETypeSubTlv) FromProto(msg *otg.BgpSrteSegmentETypeSubTlv) (BgpSrteSegmentETypeSubTlv, error) { +func (obj *patternFlowRSVPPathRecordRouteType1Ipv4AddressPrefixLength) FromProto(msg *otg.PatternFlowRSVPPathRecordRouteType1Ipv4AddressPrefixLength) (PatternFlowRSVPPathRecordRouteType1Ipv4AddressPrefixLength, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -318890,7 +366253,7 @@ func (obj *bgpSrteSegmentETypeSubTlv) FromProto(msg *otg.BgpSrteSegmentETypeSubT return newObj, nil } -func (obj *bgpSrteSegmentETypeSubTlv) ToPbText() (string, error) { +func (obj *patternFlowRSVPPathRecordRouteType1Ipv4AddressPrefixLength) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -318902,7 +366265,7 @@ func (obj *bgpSrteSegmentETypeSubTlv) ToPbText() (string, error) { return string(protoMarshal), nil } -func (obj *bgpSrteSegmentETypeSubTlv) FromPbText(value string) error { +func (obj *patternFlowRSVPPathRecordRouteType1Ipv4AddressPrefixLength) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj @@ -318915,7 +366278,7 @@ func (obj *bgpSrteSegmentETypeSubTlv) FromPbText(value string) error { return retObj } -func (obj *bgpSrteSegmentETypeSubTlv) ToYaml() (string, error) { +func (obj *patternFlowRSVPPathRecordRouteType1Ipv4AddressPrefixLength) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -318936,7 +366299,7 @@ func (obj *bgpSrteSegmentETypeSubTlv) ToYaml() (string, error) { return string(data), nil } -func (obj *bgpSrteSegmentETypeSubTlv) FromYaml(value string) error { +func (obj *patternFlowRSVPPathRecordRouteType1Ipv4AddressPrefixLength) FromYaml(value string) error { if value == "" { value = "{}" } @@ -318961,7 +366324,7 @@ func (obj *bgpSrteSegmentETypeSubTlv) FromYaml(value string) error { return nil } -func (obj *bgpSrteSegmentETypeSubTlv) ToJson() (string, error) { +func (obj *patternFlowRSVPPathRecordRouteType1Ipv4AddressPrefixLength) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -318979,7 +366342,7 @@ func (obj *bgpSrteSegmentETypeSubTlv) ToJson() (string, error) { return string(data), nil } -func (obj *bgpSrteSegmentETypeSubTlv) FromJson(value string) error { +func (obj *patternFlowRSVPPathRecordRouteType1Ipv4AddressPrefixLength) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -319000,19 +366363,19 @@ func (obj *bgpSrteSegmentETypeSubTlv) FromJson(value string) error { return nil } -func (obj *bgpSrteSegmentETypeSubTlv) validateToAndFrom() error { +func (obj *patternFlowRSVPPathRecordRouteType1Ipv4AddressPrefixLength) validateToAndFrom() error { // emptyVars() obj.validateObj(&obj.validation, true) return obj.validationResult() } -func (obj *bgpSrteSegmentETypeSubTlv) Validate() error { +func (obj *patternFlowRSVPPathRecordRouteType1Ipv4AddressPrefixLength) Validate() error { // emptyVars() obj.validateObj(&obj.validation, false) return obj.validationResult() } -func (obj *bgpSrteSegmentETypeSubTlv) String() string { +func (obj *patternFlowRSVPPathRecordRouteType1Ipv4AddressPrefixLength) String() string { str, err := obj.ToYaml() if err != nil { return err.Error() @@ -319020,12 +366383,12 @@ func (obj *bgpSrteSegmentETypeSubTlv) String() string { return str } -func (obj *bgpSrteSegmentETypeSubTlv) Clone() (BgpSrteSegmentETypeSubTlv, error) { +func (obj *patternFlowRSVPPathRecordRouteType1Ipv4AddressPrefixLength) Clone() (PatternFlowRSVPPathRecordRouteType1Ipv4AddressPrefixLength, error) { vErr := obj.Validate() if vErr != nil { return nil, vErr } - newObj := NewBgpSrteSegmentETypeSubTlv() + newObj := NewPatternFlowRSVPPathRecordRouteType1Ipv4AddressPrefixLength() data, err := proto.Marshal(obj.Msg()) if err != nil { return nil, err @@ -319037,227 +366400,319 @@ func (obj *bgpSrteSegmentETypeSubTlv) Clone() (BgpSrteSegmentETypeSubTlv, error) return newObj, nil } -func (obj *bgpSrteSegmentETypeSubTlv) setNil() { - obj.srMplsSidHolder = nil +func (obj *patternFlowRSVPPathRecordRouteType1Ipv4AddressPrefixLength) setNil() { + obj.incrementHolder = nil + obj.decrementHolder = nil obj.validationErrors = nil obj.warnings = nil obj.constraints = make(map[string]map[string]Constraints) } -// BgpSrteSegmentETypeSubTlv is type E: IPv4 Address and Local Interface ID with optional SID -type BgpSrteSegmentETypeSubTlv interface { +// PatternFlowRSVPPathRecordRouteType1Ipv4AddressPrefixLength is prefix-length of ipv4 address. +type PatternFlowRSVPPathRecordRouteType1Ipv4AddressPrefixLength interface { Validation - // Msg marshals BgpSrteSegmentETypeSubTlv to protobuf object *otg.BgpSrteSegmentETypeSubTlv + // Msg marshals PatternFlowRSVPPathRecordRouteType1Ipv4AddressPrefixLength to protobuf object *otg.PatternFlowRSVPPathRecordRouteType1Ipv4AddressPrefixLength // and doesn't set defaults - Msg() *otg.BgpSrteSegmentETypeSubTlv - // SetMsg unmarshals BgpSrteSegmentETypeSubTlv from protobuf object *otg.BgpSrteSegmentETypeSubTlv + Msg() *otg.PatternFlowRSVPPathRecordRouteType1Ipv4AddressPrefixLength + // SetMsg unmarshals PatternFlowRSVPPathRecordRouteType1Ipv4AddressPrefixLength from protobuf object *otg.PatternFlowRSVPPathRecordRouteType1Ipv4AddressPrefixLength // and doesn't set defaults - SetMsg(*otg.BgpSrteSegmentETypeSubTlv) BgpSrteSegmentETypeSubTlv - // ToProto marshals BgpSrteSegmentETypeSubTlv to protobuf object *otg.BgpSrteSegmentETypeSubTlv - ToProto() (*otg.BgpSrteSegmentETypeSubTlv, error) - // ToPbText marshals BgpSrteSegmentETypeSubTlv to protobuf text + SetMsg(*otg.PatternFlowRSVPPathRecordRouteType1Ipv4AddressPrefixLength) PatternFlowRSVPPathRecordRouteType1Ipv4AddressPrefixLength + // ToProto marshals PatternFlowRSVPPathRecordRouteType1Ipv4AddressPrefixLength to protobuf object *otg.PatternFlowRSVPPathRecordRouteType1Ipv4AddressPrefixLength + ToProto() (*otg.PatternFlowRSVPPathRecordRouteType1Ipv4AddressPrefixLength, error) + // ToPbText marshals PatternFlowRSVPPathRecordRouteType1Ipv4AddressPrefixLength to protobuf text ToPbText() (string, error) - // ToYaml marshals BgpSrteSegmentETypeSubTlv to YAML text + // ToYaml marshals PatternFlowRSVPPathRecordRouteType1Ipv4AddressPrefixLength to YAML text ToYaml() (string, error) - // ToJson marshals BgpSrteSegmentETypeSubTlv to JSON text + // ToJson marshals PatternFlowRSVPPathRecordRouteType1Ipv4AddressPrefixLength to JSON text ToJson() (string, error) - // FromProto unmarshals BgpSrteSegmentETypeSubTlv from protobuf object *otg.BgpSrteSegmentETypeSubTlv - FromProto(msg *otg.BgpSrteSegmentETypeSubTlv) (BgpSrteSegmentETypeSubTlv, error) - // FromPbText unmarshals BgpSrteSegmentETypeSubTlv from protobuf text + // FromProto unmarshals PatternFlowRSVPPathRecordRouteType1Ipv4AddressPrefixLength from protobuf object *otg.PatternFlowRSVPPathRecordRouteType1Ipv4AddressPrefixLength + FromProto(msg *otg.PatternFlowRSVPPathRecordRouteType1Ipv4AddressPrefixLength) (PatternFlowRSVPPathRecordRouteType1Ipv4AddressPrefixLength, error) + // FromPbText unmarshals PatternFlowRSVPPathRecordRouteType1Ipv4AddressPrefixLength from protobuf text FromPbText(value string) error - // FromYaml unmarshals BgpSrteSegmentETypeSubTlv from YAML text + // FromYaml unmarshals PatternFlowRSVPPathRecordRouteType1Ipv4AddressPrefixLength from YAML text FromYaml(value string) error - // FromJson unmarshals BgpSrteSegmentETypeSubTlv from JSON text + // FromJson unmarshals PatternFlowRSVPPathRecordRouteType1Ipv4AddressPrefixLength from JSON text FromJson(value string) error - // Validate validates BgpSrteSegmentETypeSubTlv + // Validate validates PatternFlowRSVPPathRecordRouteType1Ipv4AddressPrefixLength Validate() error // A stringer function String() string // Clones the object - Clone() (BgpSrteSegmentETypeSubTlv, error) + Clone() (PatternFlowRSVPPathRecordRouteType1Ipv4AddressPrefixLength, error) validateToAndFrom() error validateObj(vObj *validation, set_default bool) setDefault() - // Flags returns string, set in BgpSrteSegmentETypeSubTlv. - Flags() string - // SetFlags assigns string provided by user to BgpSrteSegmentETypeSubTlv - SetFlags(value string) BgpSrteSegmentETypeSubTlv - // HasFlags checks if Flags has been set in BgpSrteSegmentETypeSubTlv - HasFlags() bool - // LocalInterfaceId returns uint32, set in BgpSrteSegmentETypeSubTlv. - LocalInterfaceId() uint32 - // SetLocalInterfaceId assigns uint32 provided by user to BgpSrteSegmentETypeSubTlv - SetLocalInterfaceId(value uint32) BgpSrteSegmentETypeSubTlv - // HasLocalInterfaceId checks if LocalInterfaceId has been set in BgpSrteSegmentETypeSubTlv - HasLocalInterfaceId() bool - // Ipv4NodeAddress returns string, set in BgpSrteSegmentETypeSubTlv. - Ipv4NodeAddress() string - // SetIpv4NodeAddress assigns string provided by user to BgpSrteSegmentETypeSubTlv - SetIpv4NodeAddress(value string) BgpSrteSegmentETypeSubTlv - // SrMplsSid returns BgpSrteSrMplsSid, set in BgpSrteSegmentETypeSubTlv. - // BgpSrteSrMplsSid is configuration for SR-MPLS with Label, TC, Bottom-of-Stack and TTL. - SrMplsSid() BgpSrteSrMplsSid - // SetSrMplsSid assigns BgpSrteSrMplsSid provided by user to BgpSrteSegmentETypeSubTlv. - // BgpSrteSrMplsSid is configuration for SR-MPLS with Label, TC, Bottom-of-Stack and TTL. - SetSrMplsSid(value BgpSrteSrMplsSid) BgpSrteSegmentETypeSubTlv - // HasSrMplsSid checks if SrMplsSid has been set in BgpSrteSegmentETypeSubTlv - HasSrMplsSid() bool + // Choice returns PatternFlowRSVPPathRecordRouteType1Ipv4AddressPrefixLengthChoiceEnum, set in PatternFlowRSVPPathRecordRouteType1Ipv4AddressPrefixLength + Choice() PatternFlowRSVPPathRecordRouteType1Ipv4AddressPrefixLengthChoiceEnum + // SetChoice assigns PatternFlowRSVPPathRecordRouteType1Ipv4AddressPrefixLengthChoiceEnum provided by user to PatternFlowRSVPPathRecordRouteType1Ipv4AddressPrefixLength + SetChoice(value PatternFlowRSVPPathRecordRouteType1Ipv4AddressPrefixLengthChoiceEnum) PatternFlowRSVPPathRecordRouteType1Ipv4AddressPrefixLength + // HasChoice checks if Choice has been set in PatternFlowRSVPPathRecordRouteType1Ipv4AddressPrefixLength + HasChoice() bool + // Value returns uint32, set in PatternFlowRSVPPathRecordRouteType1Ipv4AddressPrefixLength. + Value() uint32 + // SetValue assigns uint32 provided by user to PatternFlowRSVPPathRecordRouteType1Ipv4AddressPrefixLength + SetValue(value uint32) PatternFlowRSVPPathRecordRouteType1Ipv4AddressPrefixLength + // HasValue checks if Value has been set in PatternFlowRSVPPathRecordRouteType1Ipv4AddressPrefixLength + HasValue() bool + // Values returns []uint32, set in PatternFlowRSVPPathRecordRouteType1Ipv4AddressPrefixLength. + Values() []uint32 + // SetValues assigns []uint32 provided by user to PatternFlowRSVPPathRecordRouteType1Ipv4AddressPrefixLength + SetValues(value []uint32) PatternFlowRSVPPathRecordRouteType1Ipv4AddressPrefixLength + // Increment returns PatternFlowRSVPPathRecordRouteType1Ipv4AddressPrefixLengthCounter, set in PatternFlowRSVPPathRecordRouteType1Ipv4AddressPrefixLength. + // PatternFlowRSVPPathRecordRouteType1Ipv4AddressPrefixLengthCounter is integer counter pattern + Increment() PatternFlowRSVPPathRecordRouteType1Ipv4AddressPrefixLengthCounter + // SetIncrement assigns PatternFlowRSVPPathRecordRouteType1Ipv4AddressPrefixLengthCounter provided by user to PatternFlowRSVPPathRecordRouteType1Ipv4AddressPrefixLength. + // PatternFlowRSVPPathRecordRouteType1Ipv4AddressPrefixLengthCounter is integer counter pattern + SetIncrement(value PatternFlowRSVPPathRecordRouteType1Ipv4AddressPrefixLengthCounter) PatternFlowRSVPPathRecordRouteType1Ipv4AddressPrefixLength + // HasIncrement checks if Increment has been set in PatternFlowRSVPPathRecordRouteType1Ipv4AddressPrefixLength + HasIncrement() bool + // Decrement returns PatternFlowRSVPPathRecordRouteType1Ipv4AddressPrefixLengthCounter, set in PatternFlowRSVPPathRecordRouteType1Ipv4AddressPrefixLength. + // PatternFlowRSVPPathRecordRouteType1Ipv4AddressPrefixLengthCounter is integer counter pattern + Decrement() PatternFlowRSVPPathRecordRouteType1Ipv4AddressPrefixLengthCounter + // SetDecrement assigns PatternFlowRSVPPathRecordRouteType1Ipv4AddressPrefixLengthCounter provided by user to PatternFlowRSVPPathRecordRouteType1Ipv4AddressPrefixLength. + // PatternFlowRSVPPathRecordRouteType1Ipv4AddressPrefixLengthCounter is integer counter pattern + SetDecrement(value PatternFlowRSVPPathRecordRouteType1Ipv4AddressPrefixLengthCounter) PatternFlowRSVPPathRecordRouteType1Ipv4AddressPrefixLength + // HasDecrement checks if Decrement has been set in PatternFlowRSVPPathRecordRouteType1Ipv4AddressPrefixLength + HasDecrement() bool setNil() } -// One octet bitmap for flags including V-Flag, A-Flag, S-Flag, B-Flag etc. as defined in https://datatracker.ietf.org/doc/html/draft-ietf-idr-segment-routing-te-policy-13#section-2.4.4.2.12 -// Flags returns a string -func (obj *bgpSrteSegmentETypeSubTlv) Flags() string { +type PatternFlowRSVPPathRecordRouteType1Ipv4AddressPrefixLengthChoiceEnum string - return *obj.obj.Flags +// Enum of Choice on PatternFlowRSVPPathRecordRouteType1Ipv4AddressPrefixLength +var PatternFlowRSVPPathRecordRouteType1Ipv4AddressPrefixLengthChoice = struct { + VALUE PatternFlowRSVPPathRecordRouteType1Ipv4AddressPrefixLengthChoiceEnum + VALUES PatternFlowRSVPPathRecordRouteType1Ipv4AddressPrefixLengthChoiceEnum + INCREMENT PatternFlowRSVPPathRecordRouteType1Ipv4AddressPrefixLengthChoiceEnum + DECREMENT PatternFlowRSVPPathRecordRouteType1Ipv4AddressPrefixLengthChoiceEnum +}{ + VALUE: PatternFlowRSVPPathRecordRouteType1Ipv4AddressPrefixLengthChoiceEnum("value"), + VALUES: PatternFlowRSVPPathRecordRouteType1Ipv4AddressPrefixLengthChoiceEnum("values"), + INCREMENT: PatternFlowRSVPPathRecordRouteType1Ipv4AddressPrefixLengthChoiceEnum("increment"), + DECREMENT: PatternFlowRSVPPathRecordRouteType1Ipv4AddressPrefixLengthChoiceEnum("decrement"), +} +func (obj *patternFlowRSVPPathRecordRouteType1Ipv4AddressPrefixLength) Choice() PatternFlowRSVPPathRecordRouteType1Ipv4AddressPrefixLengthChoiceEnum { + return PatternFlowRSVPPathRecordRouteType1Ipv4AddressPrefixLengthChoiceEnum(obj.obj.Choice.Enum().String()) } -// One octet bitmap for flags including V-Flag, A-Flag, S-Flag, B-Flag etc. as defined in https://datatracker.ietf.org/doc/html/draft-ietf-idr-segment-routing-te-policy-13#section-2.4.4.2.12 -// Flags returns a string -func (obj *bgpSrteSegmentETypeSubTlv) HasFlags() bool { - return obj.obj.Flags != nil +// description is TBD +// Choice returns a string +func (obj *patternFlowRSVPPathRecordRouteType1Ipv4AddressPrefixLength) HasChoice() bool { + return obj.obj.Choice != nil } -// One octet bitmap for flags including V-Flag, A-Flag, S-Flag, B-Flag etc. as defined in https://datatracker.ietf.org/doc/html/draft-ietf-idr-segment-routing-te-policy-13#section-2.4.4.2.12 -// SetFlags sets the string value in the BgpSrteSegmentETypeSubTlv object -func (obj *bgpSrteSegmentETypeSubTlv) SetFlags(value string) BgpSrteSegmentETypeSubTlv { +func (obj *patternFlowRSVPPathRecordRouteType1Ipv4AddressPrefixLength) SetChoice(value PatternFlowRSVPPathRecordRouteType1Ipv4AddressPrefixLengthChoiceEnum) PatternFlowRSVPPathRecordRouteType1Ipv4AddressPrefixLength { + intValue, ok := otg.PatternFlowRSVPPathRecordRouteType1Ipv4AddressPrefixLength_Choice_Enum_value[string(value)] + if !ok { + obj.validationErrors = append(obj.validationErrors, fmt.Sprintf( + "%s is not a valid choice on PatternFlowRSVPPathRecordRouteType1Ipv4AddressPrefixLengthChoiceEnum", string(value))) + return obj + } + enumValue := otg.PatternFlowRSVPPathRecordRouteType1Ipv4AddressPrefixLength_Choice_Enum(intValue) + obj.obj.Choice = &enumValue + obj.obj.Decrement = nil + obj.decrementHolder = nil + obj.obj.Increment = nil + obj.incrementHolder = nil + obj.obj.Values = nil + obj.obj.Value = nil + + if value == PatternFlowRSVPPathRecordRouteType1Ipv4AddressPrefixLengthChoice.VALUE { + defaultValue := uint32(32) + obj.obj.Value = &defaultValue + } + + if value == PatternFlowRSVPPathRecordRouteType1Ipv4AddressPrefixLengthChoice.VALUES { + defaultValue := []uint32{32} + obj.obj.Values = defaultValue + } + + if value == PatternFlowRSVPPathRecordRouteType1Ipv4AddressPrefixLengthChoice.INCREMENT { + obj.obj.Increment = NewPatternFlowRSVPPathRecordRouteType1Ipv4AddressPrefixLengthCounter().Msg() + } + + if value == PatternFlowRSVPPathRecordRouteType1Ipv4AddressPrefixLengthChoice.DECREMENT { + obj.obj.Decrement = NewPatternFlowRSVPPathRecordRouteType1Ipv4AddressPrefixLengthCounter().Msg() + } - obj.obj.Flags = &value return obj } -// Local Interface ID: The Interface Index as defined in [RFC8664]. -// LocalInterfaceId returns a uint32 -func (obj *bgpSrteSegmentETypeSubTlv) LocalInterfaceId() uint32 { +// description is TBD +// Value returns a uint32 +func (obj *patternFlowRSVPPathRecordRouteType1Ipv4AddressPrefixLength) Value() uint32 { - return *obj.obj.LocalInterfaceId + if obj.obj.Value == nil { + obj.SetChoice(PatternFlowRSVPPathRecordRouteType1Ipv4AddressPrefixLengthChoice.VALUE) + } -} + return *obj.obj.Value -// Local Interface ID: The Interface Index as defined in [RFC8664]. -// LocalInterfaceId returns a uint32 -func (obj *bgpSrteSegmentETypeSubTlv) HasLocalInterfaceId() bool { - return obj.obj.LocalInterfaceId != nil } -// Local Interface ID: The Interface Index as defined in [RFC8664]. -// SetLocalInterfaceId sets the uint32 value in the BgpSrteSegmentETypeSubTlv object -func (obj *bgpSrteSegmentETypeSubTlv) SetLocalInterfaceId(value uint32) BgpSrteSegmentETypeSubTlv { +// description is TBD +// Value returns a uint32 +func (obj *patternFlowRSVPPathRecordRouteType1Ipv4AddressPrefixLength) HasValue() bool { + return obj.obj.Value != nil +} - obj.obj.LocalInterfaceId = &value +// description is TBD +// SetValue sets the uint32 value in the PatternFlowRSVPPathRecordRouteType1Ipv4AddressPrefixLength object +func (obj *patternFlowRSVPPathRecordRouteType1Ipv4AddressPrefixLength) SetValue(value uint32) PatternFlowRSVPPathRecordRouteType1Ipv4AddressPrefixLength { + obj.SetChoice(PatternFlowRSVPPathRecordRouteType1Ipv4AddressPrefixLengthChoice.VALUE) + obj.obj.Value = &value return obj } -// IPv4 address representing a node. -// Ipv4NodeAddress returns a string -func (obj *bgpSrteSegmentETypeSubTlv) Ipv4NodeAddress() string { +// description is TBD +// Values returns a []uint32 +func (obj *patternFlowRSVPPathRecordRouteType1Ipv4AddressPrefixLength) Values() []uint32 { + if obj.obj.Values == nil { + obj.SetValues([]uint32{32}) + } + return obj.obj.Values +} - return *obj.obj.Ipv4NodeAddress +// description is TBD +// SetValues sets the []uint32 value in the PatternFlowRSVPPathRecordRouteType1Ipv4AddressPrefixLength object +func (obj *patternFlowRSVPPathRecordRouteType1Ipv4AddressPrefixLength) SetValues(value []uint32) PatternFlowRSVPPathRecordRouteType1Ipv4AddressPrefixLength { + obj.SetChoice(PatternFlowRSVPPathRecordRouteType1Ipv4AddressPrefixLengthChoice.VALUES) + if obj.obj.Values == nil { + obj.obj.Values = make([]uint32, 0) + } + obj.obj.Values = value + return obj } -// IPv4 address representing a node. -// SetIpv4NodeAddress sets the string value in the BgpSrteSegmentETypeSubTlv object -func (obj *bgpSrteSegmentETypeSubTlv) SetIpv4NodeAddress(value string) BgpSrteSegmentETypeSubTlv { +// description is TBD +// Increment returns a PatternFlowRSVPPathRecordRouteType1Ipv4AddressPrefixLengthCounter +func (obj *patternFlowRSVPPathRecordRouteType1Ipv4AddressPrefixLength) Increment() PatternFlowRSVPPathRecordRouteType1Ipv4AddressPrefixLengthCounter { + if obj.obj.Increment == nil { + obj.SetChoice(PatternFlowRSVPPathRecordRouteType1Ipv4AddressPrefixLengthChoice.INCREMENT) + } + if obj.incrementHolder == nil { + obj.incrementHolder = &patternFlowRSVPPathRecordRouteType1Ipv4AddressPrefixLengthCounter{obj: obj.obj.Increment} + } + return obj.incrementHolder +} + +// description is TBD +// Increment returns a PatternFlowRSVPPathRecordRouteType1Ipv4AddressPrefixLengthCounter +func (obj *patternFlowRSVPPathRecordRouteType1Ipv4AddressPrefixLength) HasIncrement() bool { + return obj.obj.Increment != nil +} + +// description is TBD +// SetIncrement sets the PatternFlowRSVPPathRecordRouteType1Ipv4AddressPrefixLengthCounter value in the PatternFlowRSVPPathRecordRouteType1Ipv4AddressPrefixLength object +func (obj *patternFlowRSVPPathRecordRouteType1Ipv4AddressPrefixLength) SetIncrement(value PatternFlowRSVPPathRecordRouteType1Ipv4AddressPrefixLengthCounter) PatternFlowRSVPPathRecordRouteType1Ipv4AddressPrefixLength { + obj.SetChoice(PatternFlowRSVPPathRecordRouteType1Ipv4AddressPrefixLengthChoice.INCREMENT) + obj.incrementHolder = nil + obj.obj.Increment = value.Msg() - obj.obj.Ipv4NodeAddress = &value return obj } -// Optional SR-MPLS SID. -// SrMplsSid returns a BgpSrteSrMplsSid -func (obj *bgpSrteSegmentETypeSubTlv) SrMplsSid() BgpSrteSrMplsSid { - if obj.obj.SrMplsSid == nil { - obj.obj.SrMplsSid = NewBgpSrteSrMplsSid().Msg() +// description is TBD +// Decrement returns a PatternFlowRSVPPathRecordRouteType1Ipv4AddressPrefixLengthCounter +func (obj *patternFlowRSVPPathRecordRouteType1Ipv4AddressPrefixLength) Decrement() PatternFlowRSVPPathRecordRouteType1Ipv4AddressPrefixLengthCounter { + if obj.obj.Decrement == nil { + obj.SetChoice(PatternFlowRSVPPathRecordRouteType1Ipv4AddressPrefixLengthChoice.DECREMENT) } - if obj.srMplsSidHolder == nil { - obj.srMplsSidHolder = &bgpSrteSrMplsSid{obj: obj.obj.SrMplsSid} + if obj.decrementHolder == nil { + obj.decrementHolder = &patternFlowRSVPPathRecordRouteType1Ipv4AddressPrefixLengthCounter{obj: obj.obj.Decrement} } - return obj.srMplsSidHolder + return obj.decrementHolder } -// Optional SR-MPLS SID. -// SrMplsSid returns a BgpSrteSrMplsSid -func (obj *bgpSrteSegmentETypeSubTlv) HasSrMplsSid() bool { - return obj.obj.SrMplsSid != nil +// description is TBD +// Decrement returns a PatternFlowRSVPPathRecordRouteType1Ipv4AddressPrefixLengthCounter +func (obj *patternFlowRSVPPathRecordRouteType1Ipv4AddressPrefixLength) HasDecrement() bool { + return obj.obj.Decrement != nil } -// Optional SR-MPLS SID. -// SetSrMplsSid sets the BgpSrteSrMplsSid value in the BgpSrteSegmentETypeSubTlv object -func (obj *bgpSrteSegmentETypeSubTlv) SetSrMplsSid(value BgpSrteSrMplsSid) BgpSrteSegmentETypeSubTlv { - - obj.srMplsSidHolder = nil - obj.obj.SrMplsSid = value.Msg() +// description is TBD +// SetDecrement sets the PatternFlowRSVPPathRecordRouteType1Ipv4AddressPrefixLengthCounter value in the PatternFlowRSVPPathRecordRouteType1Ipv4AddressPrefixLength object +func (obj *patternFlowRSVPPathRecordRouteType1Ipv4AddressPrefixLength) SetDecrement(value PatternFlowRSVPPathRecordRouteType1Ipv4AddressPrefixLengthCounter) PatternFlowRSVPPathRecordRouteType1Ipv4AddressPrefixLength { + obj.SetChoice(PatternFlowRSVPPathRecordRouteType1Ipv4AddressPrefixLengthChoice.DECREMENT) + obj.decrementHolder = nil + obj.obj.Decrement = value.Msg() return obj } -func (obj *bgpSrteSegmentETypeSubTlv) validateObj(vObj *validation, set_default bool) { +func (obj *patternFlowRSVPPathRecordRouteType1Ipv4AddressPrefixLength) validateObj(vObj *validation, set_default bool) { if set_default { obj.setDefault() } - if obj.obj.Flags != nil { + if obj.obj.Value != nil { - err := obj.validateHex(obj.Flags()) - if err != nil { - vObj.validationErrors = append(vObj.validationErrors, fmt.Sprintf("%s %s", err.Error(), "on BgpSrteSegmentETypeSubTlv.Flags")) + if *obj.obj.Value > 255 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("0 <= PatternFlowRSVPPathRecordRouteType1Ipv4AddressPrefixLength.Value <= 255 but Got %d", *obj.obj.Value)) } } - // Ipv4NodeAddress is required - if obj.obj.Ipv4NodeAddress == nil { - vObj.validationErrors = append(vObj.validationErrors, "Ipv4NodeAddress is required field on interface BgpSrteSegmentETypeSubTlv") - } - if obj.obj.Ipv4NodeAddress != nil { + if obj.obj.Values != nil { + + for _, item := range obj.obj.Values { + if item > 255 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("min(uint32) <= PatternFlowRSVPPathRecordRouteType1Ipv4AddressPrefixLength.Values <= 255 but Got %d", item)) + } - err := obj.validateIpv4(obj.Ipv4NodeAddress()) - if err != nil { - vObj.validationErrors = append(vObj.validationErrors, fmt.Sprintf("%s %s", err.Error(), "on BgpSrteSegmentETypeSubTlv.Ipv4NodeAddress")) } } - if obj.obj.SrMplsSid != nil { + if obj.obj.Increment != nil { - obj.SrMplsSid().validateObj(vObj, set_default) + obj.Increment().validateObj(vObj, set_default) + } + + if obj.obj.Decrement != nil { + + obj.Decrement().validateObj(vObj, set_default) } } -func (obj *bgpSrteSegmentETypeSubTlv) setDefault() { - if obj.obj.LocalInterfaceId == nil { - obj.SetLocalInterfaceId(0) +func (obj *patternFlowRSVPPathRecordRouteType1Ipv4AddressPrefixLength) setDefault() { + if obj.obj.Choice == nil { + obj.SetChoice(PatternFlowRSVPPathRecordRouteType1Ipv4AddressPrefixLengthChoice.VALUE) + } } -// ***** BgpSrteSegmentFTypeSubTlv ***** -type bgpSrteSegmentFTypeSubTlv struct { +// ***** FlowRSVPRecordRouteIPv4Flag ***** +type flowRSVPRecordRouteIPv4Flag struct { validation - obj *otg.BgpSrteSegmentFTypeSubTlv - srMplsSidHolder BgpSrteSrMplsSid + obj *otg.FlowRSVPRecordRouteIPv4Flag } -func NewBgpSrteSegmentFTypeSubTlv() BgpSrteSegmentFTypeSubTlv { - obj := bgpSrteSegmentFTypeSubTlv{obj: &otg.BgpSrteSegmentFTypeSubTlv{}} +func NewFlowRSVPRecordRouteIPv4Flag() FlowRSVPRecordRouteIPv4Flag { + obj := flowRSVPRecordRouteIPv4Flag{obj: &otg.FlowRSVPRecordRouteIPv4Flag{}} obj.setDefault() return &obj } -func (obj *bgpSrteSegmentFTypeSubTlv) Msg() *otg.BgpSrteSegmentFTypeSubTlv { +func (obj *flowRSVPRecordRouteIPv4Flag) Msg() *otg.FlowRSVPRecordRouteIPv4Flag { return obj.obj } -func (obj *bgpSrteSegmentFTypeSubTlv) SetMsg(msg *otg.BgpSrteSegmentFTypeSubTlv) BgpSrteSegmentFTypeSubTlv { - obj.setNil() +func (obj *flowRSVPRecordRouteIPv4Flag) SetMsg(msg *otg.FlowRSVPRecordRouteIPv4Flag) FlowRSVPRecordRouteIPv4Flag { + proto.Merge(obj.obj, msg) return obj } -func (obj *bgpSrteSegmentFTypeSubTlv) ToProto() (*otg.BgpSrteSegmentFTypeSubTlv, error) { +func (obj *flowRSVPRecordRouteIPv4Flag) ToProto() (*otg.FlowRSVPRecordRouteIPv4Flag, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -319265,7 +366720,7 @@ func (obj *bgpSrteSegmentFTypeSubTlv) ToProto() (*otg.BgpSrteSegmentFTypeSubTlv, return obj.Msg(), nil } -func (obj *bgpSrteSegmentFTypeSubTlv) FromProto(msg *otg.BgpSrteSegmentFTypeSubTlv) (BgpSrteSegmentFTypeSubTlv, error) { +func (obj *flowRSVPRecordRouteIPv4Flag) FromProto(msg *otg.FlowRSVPRecordRouteIPv4Flag) (FlowRSVPRecordRouteIPv4Flag, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -319274,7 +366729,7 @@ func (obj *bgpSrteSegmentFTypeSubTlv) FromProto(msg *otg.BgpSrteSegmentFTypeSubT return newObj, nil } -func (obj *bgpSrteSegmentFTypeSubTlv) ToPbText() (string, error) { +func (obj *flowRSVPRecordRouteIPv4Flag) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -319286,12 +366741,12 @@ func (obj *bgpSrteSegmentFTypeSubTlv) ToPbText() (string, error) { return string(protoMarshal), nil } -func (obj *bgpSrteSegmentFTypeSubTlv) FromPbText(value string) error { +func (obj *flowRSVPRecordRouteIPv4Flag) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj } - obj.setNil() + vErr := obj.validateToAndFrom() if vErr != nil { return vErr @@ -319299,7 +366754,7 @@ func (obj *bgpSrteSegmentFTypeSubTlv) FromPbText(value string) error { return retObj } -func (obj *bgpSrteSegmentFTypeSubTlv) ToYaml() (string, error) { +func (obj *flowRSVPRecordRouteIPv4Flag) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -319320,7 +366775,7 @@ func (obj *bgpSrteSegmentFTypeSubTlv) ToYaml() (string, error) { return string(data), nil } -func (obj *bgpSrteSegmentFTypeSubTlv) FromYaml(value string) error { +func (obj *flowRSVPRecordRouteIPv4Flag) FromYaml(value string) error { if value == "" { value = "{}" } @@ -319337,7 +366792,7 @@ func (obj *bgpSrteSegmentFTypeSubTlv) FromYaml(value string) error { return fmt.Errorf("unmarshal error %s", strings.Replace( uError.Error(), "\u00a0", " ", -1)[7:]) } - obj.setNil() + vErr := obj.validateToAndFrom() if vErr != nil { return vErr @@ -319345,7 +366800,7 @@ func (obj *bgpSrteSegmentFTypeSubTlv) FromYaml(value string) error { return nil } -func (obj *bgpSrteSegmentFTypeSubTlv) ToJson() (string, error) { +func (obj *flowRSVPRecordRouteIPv4Flag) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -319363,7 +366818,7 @@ func (obj *bgpSrteSegmentFTypeSubTlv) ToJson() (string, error) { return string(data), nil } -func (obj *bgpSrteSegmentFTypeSubTlv) FromJson(value string) error { +func (obj *flowRSVPRecordRouteIPv4Flag) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -319376,274 +366831,165 @@ func (obj *bgpSrteSegmentFTypeSubTlv) FromJson(value string) error { return fmt.Errorf("unmarshal error %s", strings.Replace( uError.Error(), "\u00a0", " ", -1)[7:]) } - obj.setNil() - err := obj.validateToAndFrom() - if err != nil { - return err - } - return nil -} - -func (obj *bgpSrteSegmentFTypeSubTlv) validateToAndFrom() error { - // emptyVars() - obj.validateObj(&obj.validation, true) - return obj.validationResult() -} - -func (obj *bgpSrteSegmentFTypeSubTlv) Validate() error { - // emptyVars() - obj.validateObj(&obj.validation, false) - return obj.validationResult() -} - -func (obj *bgpSrteSegmentFTypeSubTlv) String() string { - str, err := obj.ToYaml() - if err != nil { - return err.Error() - } - return str -} - -func (obj *bgpSrteSegmentFTypeSubTlv) Clone() (BgpSrteSegmentFTypeSubTlv, error) { - vErr := obj.Validate() - if vErr != nil { - return nil, vErr - } - newObj := NewBgpSrteSegmentFTypeSubTlv() - data, err := proto.Marshal(obj.Msg()) - if err != nil { - return nil, err - } - pbErr := proto.Unmarshal(data, newObj.Msg()) - if pbErr != nil { - return nil, pbErr - } - return newObj, nil -} - -func (obj *bgpSrteSegmentFTypeSubTlv) setNil() { - obj.srMplsSidHolder = nil - obj.validationErrors = nil - obj.warnings = nil - obj.constraints = make(map[string]map[string]Constraints) -} - -// BgpSrteSegmentFTypeSubTlv is type F: IPv4 Local and Remote addresses with optional SID. -type BgpSrteSegmentFTypeSubTlv interface { - Validation - // Msg marshals BgpSrteSegmentFTypeSubTlv to protobuf object *otg.BgpSrteSegmentFTypeSubTlv - // and doesn't set defaults - Msg() *otg.BgpSrteSegmentFTypeSubTlv - // SetMsg unmarshals BgpSrteSegmentFTypeSubTlv from protobuf object *otg.BgpSrteSegmentFTypeSubTlv - // and doesn't set defaults - SetMsg(*otg.BgpSrteSegmentFTypeSubTlv) BgpSrteSegmentFTypeSubTlv - // ToProto marshals BgpSrteSegmentFTypeSubTlv to protobuf object *otg.BgpSrteSegmentFTypeSubTlv - ToProto() (*otg.BgpSrteSegmentFTypeSubTlv, error) - // ToPbText marshals BgpSrteSegmentFTypeSubTlv to protobuf text - ToPbText() (string, error) - // ToYaml marshals BgpSrteSegmentFTypeSubTlv to YAML text - ToYaml() (string, error) - // ToJson marshals BgpSrteSegmentFTypeSubTlv to JSON text - ToJson() (string, error) - // FromProto unmarshals BgpSrteSegmentFTypeSubTlv from protobuf object *otg.BgpSrteSegmentFTypeSubTlv - FromProto(msg *otg.BgpSrteSegmentFTypeSubTlv) (BgpSrteSegmentFTypeSubTlv, error) - // FromPbText unmarshals BgpSrteSegmentFTypeSubTlv from protobuf text - FromPbText(value string) error - // FromYaml unmarshals BgpSrteSegmentFTypeSubTlv from YAML text - FromYaml(value string) error - // FromJson unmarshals BgpSrteSegmentFTypeSubTlv from JSON text - FromJson(value string) error - // Validate validates BgpSrteSegmentFTypeSubTlv - Validate() error - // A stringer function - String() string - // Clones the object - Clone() (BgpSrteSegmentFTypeSubTlv, error) - validateToAndFrom() error - validateObj(vObj *validation, set_default bool) - setDefault() - // Flags returns string, set in BgpSrteSegmentFTypeSubTlv. - Flags() string - // SetFlags assigns string provided by user to BgpSrteSegmentFTypeSubTlv - SetFlags(value string) BgpSrteSegmentFTypeSubTlv - // HasFlags checks if Flags has been set in BgpSrteSegmentFTypeSubTlv - HasFlags() bool - // LocalIpv4Address returns string, set in BgpSrteSegmentFTypeSubTlv. - LocalIpv4Address() string - // SetLocalIpv4Address assigns string provided by user to BgpSrteSegmentFTypeSubTlv - SetLocalIpv4Address(value string) BgpSrteSegmentFTypeSubTlv - // RemoteIpv4Address returns string, set in BgpSrteSegmentFTypeSubTlv. - RemoteIpv4Address() string - // SetRemoteIpv4Address assigns string provided by user to BgpSrteSegmentFTypeSubTlv - SetRemoteIpv4Address(value string) BgpSrteSegmentFTypeSubTlv - // SrMplsSid returns BgpSrteSrMplsSid, set in BgpSrteSegmentFTypeSubTlv. - // BgpSrteSrMplsSid is configuration for SR-MPLS with Label, TC, Bottom-of-Stack and TTL. - SrMplsSid() BgpSrteSrMplsSid - // SetSrMplsSid assigns BgpSrteSrMplsSid provided by user to BgpSrteSegmentFTypeSubTlv. - // BgpSrteSrMplsSid is configuration for SR-MPLS with Label, TC, Bottom-of-Stack and TTL. - SetSrMplsSid(value BgpSrteSrMplsSid) BgpSrteSegmentFTypeSubTlv - // HasSrMplsSid checks if SrMplsSid has been set in BgpSrteSegmentFTypeSubTlv - HasSrMplsSid() bool - setNil() -} - -// One octet bitmap for flags including V-Flag, A-Flag, S-Flag, B-Flag etc. as defined in https://datatracker.ietf.org/doc/html/draft-ietf-idr-segment-routing-te-policy-13#section-2.4.4.2.12 -// Flags returns a string -func (obj *bgpSrteSegmentFTypeSubTlv) Flags() string { - - return *obj.obj.Flags - -} - -// One octet bitmap for flags including V-Flag, A-Flag, S-Flag, B-Flag etc. as defined in https://datatracker.ietf.org/doc/html/draft-ietf-idr-segment-routing-te-policy-13#section-2.4.4.2.12 -// Flags returns a string -func (obj *bgpSrteSegmentFTypeSubTlv) HasFlags() bool { - return obj.obj.Flags != nil -} - -// One octet bitmap for flags including V-Flag, A-Flag, S-Flag, B-Flag etc. as defined in https://datatracker.ietf.org/doc/html/draft-ietf-idr-segment-routing-te-policy-13#section-2.4.4.2.12 -// SetFlags sets the string value in the BgpSrteSegmentFTypeSubTlv object -func (obj *bgpSrteSegmentFTypeSubTlv) SetFlags(value string) BgpSrteSegmentFTypeSubTlv { - - obj.obj.Flags = &value - return obj -} - -// Local IPv4 Address. -// LocalIpv4Address returns a string -func (obj *bgpSrteSegmentFTypeSubTlv) LocalIpv4Address() string { - - return *obj.obj.LocalIpv4Address - -} - -// Local IPv4 Address. -// SetLocalIpv4Address sets the string value in the BgpSrteSegmentFTypeSubTlv object -func (obj *bgpSrteSegmentFTypeSubTlv) SetLocalIpv4Address(value string) BgpSrteSegmentFTypeSubTlv { - - obj.obj.LocalIpv4Address = &value - return obj -} - -// Remote IPv4 Address. -// RemoteIpv4Address returns a string -func (obj *bgpSrteSegmentFTypeSubTlv) RemoteIpv4Address() string { - - return *obj.obj.RemoteIpv4Address - -} - -// Remote IPv4 Address. -// SetRemoteIpv4Address sets the string value in the BgpSrteSegmentFTypeSubTlv object -func (obj *bgpSrteSegmentFTypeSubTlv) SetRemoteIpv4Address(value string) BgpSrteSegmentFTypeSubTlv { - - obj.obj.RemoteIpv4Address = &value - return obj -} - -// Optional SR-MPLS SID. -// SrMplsSid returns a BgpSrteSrMplsSid -func (obj *bgpSrteSegmentFTypeSubTlv) SrMplsSid() BgpSrteSrMplsSid { - if obj.obj.SrMplsSid == nil { - obj.obj.SrMplsSid = NewBgpSrteSrMplsSid().Msg() - } - if obj.srMplsSidHolder == nil { - obj.srMplsSidHolder = &bgpSrteSrMplsSid{obj: obj.obj.SrMplsSid} + + err := obj.validateToAndFrom() + if err != nil { + return err } - return obj.srMplsSidHolder + return nil } -// Optional SR-MPLS SID. -// SrMplsSid returns a BgpSrteSrMplsSid -func (obj *bgpSrteSegmentFTypeSubTlv) HasSrMplsSid() bool { - return obj.obj.SrMplsSid != nil +func (obj *flowRSVPRecordRouteIPv4Flag) validateToAndFrom() error { + // emptyVars() + obj.validateObj(&obj.validation, true) + return obj.validationResult() } -// Optional SR-MPLS SID. -// SetSrMplsSid sets the BgpSrteSrMplsSid value in the BgpSrteSegmentFTypeSubTlv object -func (obj *bgpSrteSegmentFTypeSubTlv) SetSrMplsSid(value BgpSrteSrMplsSid) BgpSrteSegmentFTypeSubTlv { - - obj.srMplsSidHolder = nil - obj.obj.SrMplsSid = value.Msg() - - return obj +func (obj *flowRSVPRecordRouteIPv4Flag) Validate() error { + // emptyVars() + obj.validateObj(&obj.validation, false) + return obj.validationResult() } -func (obj *bgpSrteSegmentFTypeSubTlv) validateObj(vObj *validation, set_default bool) { - if set_default { - obj.setDefault() +func (obj *flowRSVPRecordRouteIPv4Flag) String() string { + str, err := obj.ToYaml() + if err != nil { + return err.Error() } + return str +} - if obj.obj.Flags != nil { - - err := obj.validateHex(obj.Flags()) - if err != nil { - vObj.validationErrors = append(vObj.validationErrors, fmt.Sprintf("%s %s", err.Error(), "on BgpSrteSegmentFTypeSubTlv.Flags")) - } - +func (obj *flowRSVPRecordRouteIPv4Flag) Clone() (FlowRSVPRecordRouteIPv4Flag, error) { + vErr := obj.Validate() + if vErr != nil { + return nil, vErr } - - // LocalIpv4Address is required - if obj.obj.LocalIpv4Address == nil { - vObj.validationErrors = append(vObj.validationErrors, "LocalIpv4Address is required field on interface BgpSrteSegmentFTypeSubTlv") + newObj := NewFlowRSVPRecordRouteIPv4Flag() + data, err := proto.Marshal(obj.Msg()) + if err != nil { + return nil, err } - if obj.obj.LocalIpv4Address != nil { + pbErr := proto.Unmarshal(data, newObj.Msg()) + if pbErr != nil { + return nil, pbErr + } + return newObj, nil +} - err := obj.validateIpv4(obj.LocalIpv4Address()) - if err != nil { - vObj.validationErrors = append(vObj.validationErrors, fmt.Sprintf("%s %s", err.Error(), "on BgpSrteSegmentFTypeSubTlv.LocalIpv4Address")) - } +// FlowRSVPRecordRouteIPv4Flag is description is TBD +type FlowRSVPRecordRouteIPv4Flag interface { + Validation + // Msg marshals FlowRSVPRecordRouteIPv4Flag to protobuf object *otg.FlowRSVPRecordRouteIPv4Flag + // and doesn't set defaults + Msg() *otg.FlowRSVPRecordRouteIPv4Flag + // SetMsg unmarshals FlowRSVPRecordRouteIPv4Flag from protobuf object *otg.FlowRSVPRecordRouteIPv4Flag + // and doesn't set defaults + SetMsg(*otg.FlowRSVPRecordRouteIPv4Flag) FlowRSVPRecordRouteIPv4Flag + // ToProto marshals FlowRSVPRecordRouteIPv4Flag to protobuf object *otg.FlowRSVPRecordRouteIPv4Flag + ToProto() (*otg.FlowRSVPRecordRouteIPv4Flag, error) + // ToPbText marshals FlowRSVPRecordRouteIPv4Flag to protobuf text + ToPbText() (string, error) + // ToYaml marshals FlowRSVPRecordRouteIPv4Flag to YAML text + ToYaml() (string, error) + // ToJson marshals FlowRSVPRecordRouteIPv4Flag to JSON text + ToJson() (string, error) + // FromProto unmarshals FlowRSVPRecordRouteIPv4Flag from protobuf object *otg.FlowRSVPRecordRouteIPv4Flag + FromProto(msg *otg.FlowRSVPRecordRouteIPv4Flag) (FlowRSVPRecordRouteIPv4Flag, error) + // FromPbText unmarshals FlowRSVPRecordRouteIPv4Flag from protobuf text + FromPbText(value string) error + // FromYaml unmarshals FlowRSVPRecordRouteIPv4Flag from YAML text + FromYaml(value string) error + // FromJson unmarshals FlowRSVPRecordRouteIPv4Flag from JSON text + FromJson(value string) error + // Validate validates FlowRSVPRecordRouteIPv4Flag + Validate() error + // A stringer function + String() string + // Clones the object + Clone() (FlowRSVPRecordRouteIPv4Flag, error) + validateToAndFrom() error + validateObj(vObj *validation, set_default bool) + setDefault() + // Choice returns FlowRSVPRecordRouteIPv4FlagChoiceEnum, set in FlowRSVPRecordRouteIPv4Flag + Choice() FlowRSVPRecordRouteIPv4FlagChoiceEnum + // SetChoice assigns FlowRSVPRecordRouteIPv4FlagChoiceEnum provided by user to FlowRSVPRecordRouteIPv4Flag + SetChoice(value FlowRSVPRecordRouteIPv4FlagChoiceEnum) FlowRSVPRecordRouteIPv4Flag + // HasChoice checks if Choice has been set in FlowRSVPRecordRouteIPv4Flag + HasChoice() bool +} - } +type FlowRSVPRecordRouteIPv4FlagChoiceEnum string - // RemoteIpv4Address is required - if obj.obj.RemoteIpv4Address == nil { - vObj.validationErrors = append(vObj.validationErrors, "RemoteIpv4Address is required field on interface BgpSrteSegmentFTypeSubTlv") - } - if obj.obj.RemoteIpv4Address != nil { +// Enum of Choice on FlowRSVPRecordRouteIPv4Flag +var FlowRSVPRecordRouteIPv4FlagChoice = struct { + LOCAL_PROTECTION_AVAILABLE FlowRSVPRecordRouteIPv4FlagChoiceEnum + LOCAL_PROTECTION_IN_USE FlowRSVPRecordRouteIPv4FlagChoiceEnum +}{ + LOCAL_PROTECTION_AVAILABLE: FlowRSVPRecordRouteIPv4FlagChoiceEnum("local_protection_available"), + LOCAL_PROTECTION_IN_USE: FlowRSVPRecordRouteIPv4FlagChoiceEnum("local_protection_in_use"), +} - err := obj.validateIpv4(obj.RemoteIpv4Address()) - if err != nil { - vObj.validationErrors = append(vObj.validationErrors, fmt.Sprintf("%s %s", err.Error(), "on BgpSrteSegmentFTypeSubTlv.RemoteIpv4Address")) - } +func (obj *flowRSVPRecordRouteIPv4Flag) Choice() FlowRSVPRecordRouteIPv4FlagChoiceEnum { + return FlowRSVPRecordRouteIPv4FlagChoiceEnum(obj.obj.Choice.Enum().String()) +} + +// description is TBD +// Choice returns a string +func (obj *flowRSVPRecordRouteIPv4Flag) HasChoice() bool { + return obj.obj.Choice != nil +} +func (obj *flowRSVPRecordRouteIPv4Flag) SetChoice(value FlowRSVPRecordRouteIPv4FlagChoiceEnum) FlowRSVPRecordRouteIPv4Flag { + intValue, ok := otg.FlowRSVPRecordRouteIPv4Flag_Choice_Enum_value[string(value)] + if !ok { + obj.validationErrors = append(obj.validationErrors, fmt.Sprintf( + "%s is not a valid choice on FlowRSVPRecordRouteIPv4FlagChoiceEnum", string(value))) + return obj } + enumValue := otg.FlowRSVPRecordRouteIPv4Flag_Choice_Enum(intValue) + obj.obj.Choice = &enumValue - if obj.obj.SrMplsSid != nil { + return obj +} - obj.SrMplsSid().validateObj(vObj, set_default) +func (obj *flowRSVPRecordRouteIPv4Flag) validateObj(vObj *validation, set_default bool) { + if set_default { + obj.setDefault() } } -func (obj *bgpSrteSegmentFTypeSubTlv) setDefault() { +func (obj *flowRSVPRecordRouteIPv4Flag) setDefault() { + if obj.obj.Choice == nil { + obj.SetChoice(FlowRSVPRecordRouteIPv4FlagChoice.LOCAL_PROTECTION_AVAILABLE) + + } } -// ***** BgpSrteSegmentGTypeSubTlv ***** -type bgpSrteSegmentGTypeSubTlv struct { +// ***** PatternFlowRSVPPathRecordRouteType1LabelFlags ***** +type patternFlowRSVPPathRecordRouteType1LabelFlags struct { validation - obj *otg.BgpSrteSegmentGTypeSubTlv - srMplsSidHolder BgpSrteSrMplsSid + obj *otg.PatternFlowRSVPPathRecordRouteType1LabelFlags } -func NewBgpSrteSegmentGTypeSubTlv() BgpSrteSegmentGTypeSubTlv { - obj := bgpSrteSegmentGTypeSubTlv{obj: &otg.BgpSrteSegmentGTypeSubTlv{}} +func NewPatternFlowRSVPPathRecordRouteType1LabelFlags() PatternFlowRSVPPathRecordRouteType1LabelFlags { + obj := patternFlowRSVPPathRecordRouteType1LabelFlags{obj: &otg.PatternFlowRSVPPathRecordRouteType1LabelFlags{}} obj.setDefault() return &obj } -func (obj *bgpSrteSegmentGTypeSubTlv) Msg() *otg.BgpSrteSegmentGTypeSubTlv { +func (obj *patternFlowRSVPPathRecordRouteType1LabelFlags) Msg() *otg.PatternFlowRSVPPathRecordRouteType1LabelFlags { return obj.obj } -func (obj *bgpSrteSegmentGTypeSubTlv) SetMsg(msg *otg.BgpSrteSegmentGTypeSubTlv) BgpSrteSegmentGTypeSubTlv { - obj.setNil() +func (obj *patternFlowRSVPPathRecordRouteType1LabelFlags) SetMsg(msg *otg.PatternFlowRSVPPathRecordRouteType1LabelFlags) PatternFlowRSVPPathRecordRouteType1LabelFlags { + proto.Merge(obj.obj, msg) return obj } -func (obj *bgpSrteSegmentGTypeSubTlv) ToProto() (*otg.BgpSrteSegmentGTypeSubTlv, error) { +func (obj *patternFlowRSVPPathRecordRouteType1LabelFlags) ToProto() (*otg.PatternFlowRSVPPathRecordRouteType1LabelFlags, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -319651,7 +366997,7 @@ func (obj *bgpSrteSegmentGTypeSubTlv) ToProto() (*otg.BgpSrteSegmentGTypeSubTlv, return obj.Msg(), nil } -func (obj *bgpSrteSegmentGTypeSubTlv) FromProto(msg *otg.BgpSrteSegmentGTypeSubTlv) (BgpSrteSegmentGTypeSubTlv, error) { +func (obj *patternFlowRSVPPathRecordRouteType1LabelFlags) FromProto(msg *otg.PatternFlowRSVPPathRecordRouteType1LabelFlags) (PatternFlowRSVPPathRecordRouteType1LabelFlags, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -319660,7 +367006,7 @@ func (obj *bgpSrteSegmentGTypeSubTlv) FromProto(msg *otg.BgpSrteSegmentGTypeSubT return newObj, nil } -func (obj *bgpSrteSegmentGTypeSubTlv) ToPbText() (string, error) { +func (obj *patternFlowRSVPPathRecordRouteType1LabelFlags) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -319672,12 +367018,12 @@ func (obj *bgpSrteSegmentGTypeSubTlv) ToPbText() (string, error) { return string(protoMarshal), nil } -func (obj *bgpSrteSegmentGTypeSubTlv) FromPbText(value string) error { +func (obj *patternFlowRSVPPathRecordRouteType1LabelFlags) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj } - obj.setNil() + vErr := obj.validateToAndFrom() if vErr != nil { return vErr @@ -319685,7 +367031,7 @@ func (obj *bgpSrteSegmentGTypeSubTlv) FromPbText(value string) error { return retObj } -func (obj *bgpSrteSegmentGTypeSubTlv) ToYaml() (string, error) { +func (obj *patternFlowRSVPPathRecordRouteType1LabelFlags) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -319706,7 +367052,7 @@ func (obj *bgpSrteSegmentGTypeSubTlv) ToYaml() (string, error) { return string(data), nil } -func (obj *bgpSrteSegmentGTypeSubTlv) FromYaml(value string) error { +func (obj *patternFlowRSVPPathRecordRouteType1LabelFlags) FromYaml(value string) error { if value == "" { value = "{}" } @@ -319723,7 +367069,7 @@ func (obj *bgpSrteSegmentGTypeSubTlv) FromYaml(value string) error { return fmt.Errorf("unmarshal error %s", strings.Replace( uError.Error(), "\u00a0", " ", -1)[7:]) } - obj.setNil() + vErr := obj.validateToAndFrom() if vErr != nil { return vErr @@ -319731,7 +367077,7 @@ func (obj *bgpSrteSegmentGTypeSubTlv) FromYaml(value string) error { return nil } -func (obj *bgpSrteSegmentGTypeSubTlv) ToJson() (string, error) { +func (obj *patternFlowRSVPPathRecordRouteType1LabelFlags) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -319749,7 +367095,7 @@ func (obj *bgpSrteSegmentGTypeSubTlv) ToJson() (string, error) { return string(data), nil } -func (obj *bgpSrteSegmentGTypeSubTlv) FromJson(value string) error { +func (obj *patternFlowRSVPPathRecordRouteType1LabelFlags) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -319762,7 +367108,7 @@ func (obj *bgpSrteSegmentGTypeSubTlv) FromJson(value string) error { return fmt.Errorf("unmarshal error %s", strings.Replace( uError.Error(), "\u00a0", " ", -1)[7:]) } - obj.setNil() + err := obj.validateToAndFrom() if err != nil { return err @@ -319770,19 +367116,19 @@ func (obj *bgpSrteSegmentGTypeSubTlv) FromJson(value string) error { return nil } -func (obj *bgpSrteSegmentGTypeSubTlv) validateToAndFrom() error { +func (obj *patternFlowRSVPPathRecordRouteType1LabelFlags) validateToAndFrom() error { // emptyVars() obj.validateObj(&obj.validation, true) return obj.validationResult() } -func (obj *bgpSrteSegmentGTypeSubTlv) Validate() error { +func (obj *patternFlowRSVPPathRecordRouteType1LabelFlags) Validate() error { // emptyVars() obj.validateObj(&obj.validation, false) return obj.validationResult() } -func (obj *bgpSrteSegmentGTypeSubTlv) String() string { +func (obj *patternFlowRSVPPathRecordRouteType1LabelFlags) String() string { str, err := obj.ToYaml() if err != nil { return err.Error() @@ -319790,12 +367136,12 @@ func (obj *bgpSrteSegmentGTypeSubTlv) String() string { return str } -func (obj *bgpSrteSegmentGTypeSubTlv) Clone() (BgpSrteSegmentGTypeSubTlv, error) { +func (obj *patternFlowRSVPPathRecordRouteType1LabelFlags) Clone() (PatternFlowRSVPPathRecordRouteType1LabelFlags, error) { vErr := obj.Validate() if vErr != nil { return nil, vErr } - newObj := NewBgpSrteSegmentGTypeSubTlv() + newObj := NewPatternFlowRSVPPathRecordRouteType1LabelFlags() data, err := proto.Marshal(obj.Msg()) if err != nil { return nil, err @@ -319807,291 +367153,212 @@ func (obj *bgpSrteSegmentGTypeSubTlv) Clone() (BgpSrteSegmentGTypeSubTlv, error) return newObj, nil } -func (obj *bgpSrteSegmentGTypeSubTlv) setNil() { - obj.srMplsSidHolder = nil - obj.validationErrors = nil - obj.warnings = nil - obj.constraints = make(map[string]map[string]Constraints) -} - -// BgpSrteSegmentGTypeSubTlv is type G: IPv6 Address, Interface ID for local and remote pair with optional SID for SR MPLS. -type BgpSrteSegmentGTypeSubTlv interface { +// PatternFlowRSVPPathRecordRouteType1LabelFlags is 0x01 = Global label. This flag indicates that the label will be understood if received on any interface. +type PatternFlowRSVPPathRecordRouteType1LabelFlags interface { Validation - // Msg marshals BgpSrteSegmentGTypeSubTlv to protobuf object *otg.BgpSrteSegmentGTypeSubTlv + // Msg marshals PatternFlowRSVPPathRecordRouteType1LabelFlags to protobuf object *otg.PatternFlowRSVPPathRecordRouteType1LabelFlags // and doesn't set defaults - Msg() *otg.BgpSrteSegmentGTypeSubTlv - // SetMsg unmarshals BgpSrteSegmentGTypeSubTlv from protobuf object *otg.BgpSrteSegmentGTypeSubTlv + Msg() *otg.PatternFlowRSVPPathRecordRouteType1LabelFlags + // SetMsg unmarshals PatternFlowRSVPPathRecordRouteType1LabelFlags from protobuf object *otg.PatternFlowRSVPPathRecordRouteType1LabelFlags // and doesn't set defaults - SetMsg(*otg.BgpSrteSegmentGTypeSubTlv) BgpSrteSegmentGTypeSubTlv - // ToProto marshals BgpSrteSegmentGTypeSubTlv to protobuf object *otg.BgpSrteSegmentGTypeSubTlv - ToProto() (*otg.BgpSrteSegmentGTypeSubTlv, error) - // ToPbText marshals BgpSrteSegmentGTypeSubTlv to protobuf text + SetMsg(*otg.PatternFlowRSVPPathRecordRouteType1LabelFlags) PatternFlowRSVPPathRecordRouteType1LabelFlags + // ToProto marshals PatternFlowRSVPPathRecordRouteType1LabelFlags to protobuf object *otg.PatternFlowRSVPPathRecordRouteType1LabelFlags + ToProto() (*otg.PatternFlowRSVPPathRecordRouteType1LabelFlags, error) + // ToPbText marshals PatternFlowRSVPPathRecordRouteType1LabelFlags to protobuf text ToPbText() (string, error) - // ToYaml marshals BgpSrteSegmentGTypeSubTlv to YAML text + // ToYaml marshals PatternFlowRSVPPathRecordRouteType1LabelFlags to YAML text ToYaml() (string, error) - // ToJson marshals BgpSrteSegmentGTypeSubTlv to JSON text + // ToJson marshals PatternFlowRSVPPathRecordRouteType1LabelFlags to JSON text ToJson() (string, error) - // FromProto unmarshals BgpSrteSegmentGTypeSubTlv from protobuf object *otg.BgpSrteSegmentGTypeSubTlv - FromProto(msg *otg.BgpSrteSegmentGTypeSubTlv) (BgpSrteSegmentGTypeSubTlv, error) - // FromPbText unmarshals BgpSrteSegmentGTypeSubTlv from protobuf text + // FromProto unmarshals PatternFlowRSVPPathRecordRouteType1LabelFlags from protobuf object *otg.PatternFlowRSVPPathRecordRouteType1LabelFlags + FromProto(msg *otg.PatternFlowRSVPPathRecordRouteType1LabelFlags) (PatternFlowRSVPPathRecordRouteType1LabelFlags, error) + // FromPbText unmarshals PatternFlowRSVPPathRecordRouteType1LabelFlags from protobuf text FromPbText(value string) error - // FromYaml unmarshals BgpSrteSegmentGTypeSubTlv from YAML text + // FromYaml unmarshals PatternFlowRSVPPathRecordRouteType1LabelFlags from YAML text FromYaml(value string) error - // FromJson unmarshals BgpSrteSegmentGTypeSubTlv from JSON text + // FromJson unmarshals PatternFlowRSVPPathRecordRouteType1LabelFlags from JSON text FromJson(value string) error - // Validate validates BgpSrteSegmentGTypeSubTlv + // Validate validates PatternFlowRSVPPathRecordRouteType1LabelFlags Validate() error // A stringer function String() string // Clones the object - Clone() (BgpSrteSegmentGTypeSubTlv, error) + Clone() (PatternFlowRSVPPathRecordRouteType1LabelFlags, error) validateToAndFrom() error validateObj(vObj *validation, set_default bool) setDefault() - // Flags returns string, set in BgpSrteSegmentGTypeSubTlv. - Flags() string - // SetFlags assigns string provided by user to BgpSrteSegmentGTypeSubTlv - SetFlags(value string) BgpSrteSegmentGTypeSubTlv - // HasFlags checks if Flags has been set in BgpSrteSegmentGTypeSubTlv - HasFlags() bool - // LocalInterfaceId returns uint32, set in BgpSrteSegmentGTypeSubTlv. - LocalInterfaceId() uint32 - // SetLocalInterfaceId assigns uint32 provided by user to BgpSrteSegmentGTypeSubTlv - SetLocalInterfaceId(value uint32) BgpSrteSegmentGTypeSubTlv - // HasLocalInterfaceId checks if LocalInterfaceId has been set in BgpSrteSegmentGTypeSubTlv - HasLocalInterfaceId() bool - // LocalIpv6NodeAddress returns string, set in BgpSrteSegmentGTypeSubTlv. - LocalIpv6NodeAddress() string - // SetLocalIpv6NodeAddress assigns string provided by user to BgpSrteSegmentGTypeSubTlv - SetLocalIpv6NodeAddress(value string) BgpSrteSegmentGTypeSubTlv - // RemoteInterfaceId returns uint32, set in BgpSrteSegmentGTypeSubTlv. - RemoteInterfaceId() uint32 - // SetRemoteInterfaceId assigns uint32 provided by user to BgpSrteSegmentGTypeSubTlv - SetRemoteInterfaceId(value uint32) BgpSrteSegmentGTypeSubTlv - // HasRemoteInterfaceId checks if RemoteInterfaceId has been set in BgpSrteSegmentGTypeSubTlv - HasRemoteInterfaceId() bool - // RemoteIpv6NodeAddress returns string, set in BgpSrteSegmentGTypeSubTlv. - RemoteIpv6NodeAddress() string - // SetRemoteIpv6NodeAddress assigns string provided by user to BgpSrteSegmentGTypeSubTlv - SetRemoteIpv6NodeAddress(value string) BgpSrteSegmentGTypeSubTlv - // SrMplsSid returns BgpSrteSrMplsSid, set in BgpSrteSegmentGTypeSubTlv. - // BgpSrteSrMplsSid is configuration for SR-MPLS with Label, TC, Bottom-of-Stack and TTL. - SrMplsSid() BgpSrteSrMplsSid - // SetSrMplsSid assigns BgpSrteSrMplsSid provided by user to BgpSrteSegmentGTypeSubTlv. - // BgpSrteSrMplsSid is configuration for SR-MPLS with Label, TC, Bottom-of-Stack and TTL. - SetSrMplsSid(value BgpSrteSrMplsSid) BgpSrteSegmentGTypeSubTlv - // HasSrMplsSid checks if SrMplsSid has been set in BgpSrteSegmentGTypeSubTlv - HasSrMplsSid() bool - setNil() -} - -// One octet bitmap for flags including V-Flag, A-Flag, S-Flag, B-Flag etc. as defined in https://datatracker.ietf.org/doc/html/draft-ietf-idr-segment-routing-te-policy-13#section-2.4.4.2.12 -// Flags returns a string -func (obj *bgpSrteSegmentGTypeSubTlv) Flags() string { - - return *obj.obj.Flags - -} - -// One octet bitmap for flags including V-Flag, A-Flag, S-Flag, B-Flag etc. as defined in https://datatracker.ietf.org/doc/html/draft-ietf-idr-segment-routing-te-policy-13#section-2.4.4.2.12 -// Flags returns a string -func (obj *bgpSrteSegmentGTypeSubTlv) HasFlags() bool { - return obj.obj.Flags != nil -} - -// One octet bitmap for flags including V-Flag, A-Flag, S-Flag, B-Flag etc. as defined in https://datatracker.ietf.org/doc/html/draft-ietf-idr-segment-routing-te-policy-13#section-2.4.4.2.12 -// SetFlags sets the string value in the BgpSrteSegmentGTypeSubTlv object -func (obj *bgpSrteSegmentGTypeSubTlv) SetFlags(value string) BgpSrteSegmentGTypeSubTlv { - - obj.obj.Flags = &value - return obj + // Choice returns PatternFlowRSVPPathRecordRouteType1LabelFlagsChoiceEnum, set in PatternFlowRSVPPathRecordRouteType1LabelFlags + Choice() PatternFlowRSVPPathRecordRouteType1LabelFlagsChoiceEnum + // SetChoice assigns PatternFlowRSVPPathRecordRouteType1LabelFlagsChoiceEnum provided by user to PatternFlowRSVPPathRecordRouteType1LabelFlags + SetChoice(value PatternFlowRSVPPathRecordRouteType1LabelFlagsChoiceEnum) PatternFlowRSVPPathRecordRouteType1LabelFlags + // HasChoice checks if Choice has been set in PatternFlowRSVPPathRecordRouteType1LabelFlags + HasChoice() bool + // Value returns uint32, set in PatternFlowRSVPPathRecordRouteType1LabelFlags. + Value() uint32 + // SetValue assigns uint32 provided by user to PatternFlowRSVPPathRecordRouteType1LabelFlags + SetValue(value uint32) PatternFlowRSVPPathRecordRouteType1LabelFlags + // HasValue checks if Value has been set in PatternFlowRSVPPathRecordRouteType1LabelFlags + HasValue() bool + // Values returns []uint32, set in PatternFlowRSVPPathRecordRouteType1LabelFlags. + Values() []uint32 + // SetValues assigns []uint32 provided by user to PatternFlowRSVPPathRecordRouteType1LabelFlags + SetValues(value []uint32) PatternFlowRSVPPathRecordRouteType1LabelFlags } -// Local Interface ID: The Interface Index as defined in [RFC8664]. -// LocalInterfaceId returns a uint32 -func (obj *bgpSrteSegmentGTypeSubTlv) LocalInterfaceId() uint32 { - - return *obj.obj.LocalInterfaceId +type PatternFlowRSVPPathRecordRouteType1LabelFlagsChoiceEnum string +// Enum of Choice on PatternFlowRSVPPathRecordRouteType1LabelFlags +var PatternFlowRSVPPathRecordRouteType1LabelFlagsChoice = struct { + VALUE PatternFlowRSVPPathRecordRouteType1LabelFlagsChoiceEnum + VALUES PatternFlowRSVPPathRecordRouteType1LabelFlagsChoiceEnum +}{ + VALUE: PatternFlowRSVPPathRecordRouteType1LabelFlagsChoiceEnum("value"), + VALUES: PatternFlowRSVPPathRecordRouteType1LabelFlagsChoiceEnum("values"), } -// Local Interface ID: The Interface Index as defined in [RFC8664]. -// LocalInterfaceId returns a uint32 -func (obj *bgpSrteSegmentGTypeSubTlv) HasLocalInterfaceId() bool { - return obj.obj.LocalInterfaceId != nil +func (obj *patternFlowRSVPPathRecordRouteType1LabelFlags) Choice() PatternFlowRSVPPathRecordRouteType1LabelFlagsChoiceEnum { + return PatternFlowRSVPPathRecordRouteType1LabelFlagsChoiceEnum(obj.obj.Choice.Enum().String()) } -// Local Interface ID: The Interface Index as defined in [RFC8664]. -// SetLocalInterfaceId sets the uint32 value in the BgpSrteSegmentGTypeSubTlv object -func (obj *bgpSrteSegmentGTypeSubTlv) SetLocalInterfaceId(value uint32) BgpSrteSegmentGTypeSubTlv { - - obj.obj.LocalInterfaceId = &value - return obj +// description is TBD +// Choice returns a string +func (obj *patternFlowRSVPPathRecordRouteType1LabelFlags) HasChoice() bool { + return obj.obj.Choice != nil } -// IPv6 address representing a node. -// LocalIpv6NodeAddress returns a string -func (obj *bgpSrteSegmentGTypeSubTlv) LocalIpv6NodeAddress() string { - - return *obj.obj.LocalIpv6NodeAddress +func (obj *patternFlowRSVPPathRecordRouteType1LabelFlags) SetChoice(value PatternFlowRSVPPathRecordRouteType1LabelFlagsChoiceEnum) PatternFlowRSVPPathRecordRouteType1LabelFlags { + intValue, ok := otg.PatternFlowRSVPPathRecordRouteType1LabelFlags_Choice_Enum_value[string(value)] + if !ok { + obj.validationErrors = append(obj.validationErrors, fmt.Sprintf( + "%s is not a valid choice on PatternFlowRSVPPathRecordRouteType1LabelFlagsChoiceEnum", string(value))) + return obj + } + enumValue := otg.PatternFlowRSVPPathRecordRouteType1LabelFlags_Choice_Enum(intValue) + obj.obj.Choice = &enumValue + obj.obj.Values = nil + obj.obj.Value = nil -} + if value == PatternFlowRSVPPathRecordRouteType1LabelFlagsChoice.VALUE { + defaultValue := uint32(1) + obj.obj.Value = &defaultValue + } -// IPv6 address representing a node. -// SetLocalIpv6NodeAddress sets the string value in the BgpSrteSegmentGTypeSubTlv object -func (obj *bgpSrteSegmentGTypeSubTlv) SetLocalIpv6NodeAddress(value string) BgpSrteSegmentGTypeSubTlv { + if value == PatternFlowRSVPPathRecordRouteType1LabelFlagsChoice.VALUES { + defaultValue := []uint32{1} + obj.obj.Values = defaultValue + } - obj.obj.LocalIpv6NodeAddress = &value return obj } -// Local Interface ID: The Interface Index as defined in [RFC8664]. -// RemoteInterfaceId returns a uint32 -func (obj *bgpSrteSegmentGTypeSubTlv) RemoteInterfaceId() uint32 { - - return *obj.obj.RemoteInterfaceId - -} +// description is TBD +// Value returns a uint32 +func (obj *patternFlowRSVPPathRecordRouteType1LabelFlags) Value() uint32 { -// Local Interface ID: The Interface Index as defined in [RFC8664]. -// RemoteInterfaceId returns a uint32 -func (obj *bgpSrteSegmentGTypeSubTlv) HasRemoteInterfaceId() bool { - return obj.obj.RemoteInterfaceId != nil -} + if obj.obj.Value == nil { + obj.SetChoice(PatternFlowRSVPPathRecordRouteType1LabelFlagsChoice.VALUE) + } -// Local Interface ID: The Interface Index as defined in [RFC8664]. -// SetRemoteInterfaceId sets the uint32 value in the BgpSrteSegmentGTypeSubTlv object -func (obj *bgpSrteSegmentGTypeSubTlv) SetRemoteInterfaceId(value uint32) BgpSrteSegmentGTypeSubTlv { + return *obj.obj.Value - obj.obj.RemoteInterfaceId = &value - return obj } -// IPv6 address representing a node. -// RemoteIpv6NodeAddress returns a string -func (obj *bgpSrteSegmentGTypeSubTlv) RemoteIpv6NodeAddress() string { - - return *obj.obj.RemoteIpv6NodeAddress - +// description is TBD +// Value returns a uint32 +func (obj *patternFlowRSVPPathRecordRouteType1LabelFlags) HasValue() bool { + return obj.obj.Value != nil } -// IPv6 address representing a node. -// SetRemoteIpv6NodeAddress sets the string value in the BgpSrteSegmentGTypeSubTlv object -func (obj *bgpSrteSegmentGTypeSubTlv) SetRemoteIpv6NodeAddress(value string) BgpSrteSegmentGTypeSubTlv { - - obj.obj.RemoteIpv6NodeAddress = &value +// description is TBD +// SetValue sets the uint32 value in the PatternFlowRSVPPathRecordRouteType1LabelFlags object +func (obj *patternFlowRSVPPathRecordRouteType1LabelFlags) SetValue(value uint32) PatternFlowRSVPPathRecordRouteType1LabelFlags { + obj.SetChoice(PatternFlowRSVPPathRecordRouteType1LabelFlagsChoice.VALUE) + obj.obj.Value = &value return obj } -// Optional SR-MPLS SID. -// SrMplsSid returns a BgpSrteSrMplsSid -func (obj *bgpSrteSegmentGTypeSubTlv) SrMplsSid() BgpSrteSrMplsSid { - if obj.obj.SrMplsSid == nil { - obj.obj.SrMplsSid = NewBgpSrteSrMplsSid().Msg() - } - if obj.srMplsSidHolder == nil { - obj.srMplsSidHolder = &bgpSrteSrMplsSid{obj: obj.obj.SrMplsSid} +// description is TBD +// Values returns a []uint32 +func (obj *patternFlowRSVPPathRecordRouteType1LabelFlags) Values() []uint32 { + if obj.obj.Values == nil { + obj.SetValues([]uint32{1}) } - return obj.srMplsSidHolder -} - -// Optional SR-MPLS SID. -// SrMplsSid returns a BgpSrteSrMplsSid -func (obj *bgpSrteSegmentGTypeSubTlv) HasSrMplsSid() bool { - return obj.obj.SrMplsSid != nil + return obj.obj.Values } -// Optional SR-MPLS SID. -// SetSrMplsSid sets the BgpSrteSrMplsSid value in the BgpSrteSegmentGTypeSubTlv object -func (obj *bgpSrteSegmentGTypeSubTlv) SetSrMplsSid(value BgpSrteSrMplsSid) BgpSrteSegmentGTypeSubTlv { - - obj.srMplsSidHolder = nil - obj.obj.SrMplsSid = value.Msg() +// description is TBD +// SetValues sets the []uint32 value in the PatternFlowRSVPPathRecordRouteType1LabelFlags object +func (obj *patternFlowRSVPPathRecordRouteType1LabelFlags) SetValues(value []uint32) PatternFlowRSVPPathRecordRouteType1LabelFlags { + obj.SetChoice(PatternFlowRSVPPathRecordRouteType1LabelFlagsChoice.VALUES) + if obj.obj.Values == nil { + obj.obj.Values = make([]uint32, 0) + } + obj.obj.Values = value return obj } -func (obj *bgpSrteSegmentGTypeSubTlv) validateObj(vObj *validation, set_default bool) { +func (obj *patternFlowRSVPPathRecordRouteType1LabelFlags) validateObj(vObj *validation, set_default bool) { if set_default { obj.setDefault() } - if obj.obj.Flags != nil { + if obj.obj.Value != nil { - err := obj.validateHex(obj.Flags()) - if err != nil { - vObj.validationErrors = append(vObj.validationErrors, fmt.Sprintf("%s %s", err.Error(), "on BgpSrteSegmentGTypeSubTlv.Flags")) + if *obj.obj.Value > 255 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("0 <= PatternFlowRSVPPathRecordRouteType1LabelFlags.Value <= 255 but Got %d", *obj.obj.Value)) } } - // LocalIpv6NodeAddress is required - if obj.obj.LocalIpv6NodeAddress == nil { - vObj.validationErrors = append(vObj.validationErrors, "LocalIpv6NodeAddress is required field on interface BgpSrteSegmentGTypeSubTlv") - } - if obj.obj.LocalIpv6NodeAddress != nil { - - err := obj.validateIpv6(obj.LocalIpv6NodeAddress()) - if err != nil { - vObj.validationErrors = append(vObj.validationErrors, fmt.Sprintf("%s %s", err.Error(), "on BgpSrteSegmentGTypeSubTlv.LocalIpv6NodeAddress")) - } - - } + if obj.obj.Values != nil { - // RemoteIpv6NodeAddress is required - if obj.obj.RemoteIpv6NodeAddress == nil { - vObj.validationErrors = append(vObj.validationErrors, "RemoteIpv6NodeAddress is required field on interface BgpSrteSegmentGTypeSubTlv") - } - if obj.obj.RemoteIpv6NodeAddress != nil { + for _, item := range obj.obj.Values { + if item > 255 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("min(uint32) <= PatternFlowRSVPPathRecordRouteType1LabelFlags.Values <= 255 but Got %d", item)) + } - err := obj.validateIpv6(obj.RemoteIpv6NodeAddress()) - if err != nil { - vObj.validationErrors = append(vObj.validationErrors, fmt.Sprintf("%s %s", err.Error(), "on BgpSrteSegmentGTypeSubTlv.RemoteIpv6NodeAddress")) } } - if obj.obj.SrMplsSid != nil { - - obj.SrMplsSid().validateObj(vObj, set_default) - } - } -func (obj *bgpSrteSegmentGTypeSubTlv) setDefault() { - if obj.obj.LocalInterfaceId == nil { - obj.SetLocalInterfaceId(0) - } - if obj.obj.RemoteInterfaceId == nil { - obj.SetRemoteInterfaceId(0) +func (obj *patternFlowRSVPPathRecordRouteType1LabelFlags) setDefault() { + if obj.obj.Choice == nil { + obj.SetChoice(PatternFlowRSVPPathRecordRouteType1LabelFlagsChoice.VALUE) + } } -// ***** BgpSrteSegmentHTypeSubTlv ***** -type bgpSrteSegmentHTypeSubTlv struct { +// ***** PatternFlowRSVPPathRecordRouteType1LabelCType ***** +type patternFlowRSVPPathRecordRouteType1LabelCType struct { validation - obj *otg.BgpSrteSegmentHTypeSubTlv - srMplsSidHolder BgpSrteSrMplsSid + obj *otg.PatternFlowRSVPPathRecordRouteType1LabelCType } -func NewBgpSrteSegmentHTypeSubTlv() BgpSrteSegmentHTypeSubTlv { - obj := bgpSrteSegmentHTypeSubTlv{obj: &otg.BgpSrteSegmentHTypeSubTlv{}} +func NewPatternFlowRSVPPathRecordRouteType1LabelCType() PatternFlowRSVPPathRecordRouteType1LabelCType { + obj := patternFlowRSVPPathRecordRouteType1LabelCType{obj: &otg.PatternFlowRSVPPathRecordRouteType1LabelCType{}} obj.setDefault() return &obj } -func (obj *bgpSrteSegmentHTypeSubTlv) Msg() *otg.BgpSrteSegmentHTypeSubTlv { +func (obj *patternFlowRSVPPathRecordRouteType1LabelCType) Msg() *otg.PatternFlowRSVPPathRecordRouteType1LabelCType { return obj.obj } -func (obj *bgpSrteSegmentHTypeSubTlv) SetMsg(msg *otg.BgpSrteSegmentHTypeSubTlv) BgpSrteSegmentHTypeSubTlv { - obj.setNil() +func (obj *patternFlowRSVPPathRecordRouteType1LabelCType) SetMsg(msg *otg.PatternFlowRSVPPathRecordRouteType1LabelCType) PatternFlowRSVPPathRecordRouteType1LabelCType { + proto.Merge(obj.obj, msg) return obj } -func (obj *bgpSrteSegmentHTypeSubTlv) ToProto() (*otg.BgpSrteSegmentHTypeSubTlv, error) { +func (obj *patternFlowRSVPPathRecordRouteType1LabelCType) ToProto() (*otg.PatternFlowRSVPPathRecordRouteType1LabelCType, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -320099,7 +367366,7 @@ func (obj *bgpSrteSegmentHTypeSubTlv) ToProto() (*otg.BgpSrteSegmentHTypeSubTlv, return obj.Msg(), nil } -func (obj *bgpSrteSegmentHTypeSubTlv) FromProto(msg *otg.BgpSrteSegmentHTypeSubTlv) (BgpSrteSegmentHTypeSubTlv, error) { +func (obj *patternFlowRSVPPathRecordRouteType1LabelCType) FromProto(msg *otg.PatternFlowRSVPPathRecordRouteType1LabelCType) (PatternFlowRSVPPathRecordRouteType1LabelCType, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -320108,7 +367375,7 @@ func (obj *bgpSrteSegmentHTypeSubTlv) FromProto(msg *otg.BgpSrteSegmentHTypeSubT return newObj, nil } -func (obj *bgpSrteSegmentHTypeSubTlv) ToPbText() (string, error) { +func (obj *patternFlowRSVPPathRecordRouteType1LabelCType) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -320120,12 +367387,12 @@ func (obj *bgpSrteSegmentHTypeSubTlv) ToPbText() (string, error) { return string(protoMarshal), nil } -func (obj *bgpSrteSegmentHTypeSubTlv) FromPbText(value string) error { +func (obj *patternFlowRSVPPathRecordRouteType1LabelCType) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj } - obj.setNil() + vErr := obj.validateToAndFrom() if vErr != nil { return vErr @@ -320133,7 +367400,7 @@ func (obj *bgpSrteSegmentHTypeSubTlv) FromPbText(value string) error { return retObj } -func (obj *bgpSrteSegmentHTypeSubTlv) ToYaml() (string, error) { +func (obj *patternFlowRSVPPathRecordRouteType1LabelCType) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -320154,7 +367421,7 @@ func (obj *bgpSrteSegmentHTypeSubTlv) ToYaml() (string, error) { return string(data), nil } -func (obj *bgpSrteSegmentHTypeSubTlv) FromYaml(value string) error { +func (obj *patternFlowRSVPPathRecordRouteType1LabelCType) FromYaml(value string) error { if value == "" { value = "{}" } @@ -320171,7 +367438,7 @@ func (obj *bgpSrteSegmentHTypeSubTlv) FromYaml(value string) error { return fmt.Errorf("unmarshal error %s", strings.Replace( uError.Error(), "\u00a0", " ", -1)[7:]) } - obj.setNil() + vErr := obj.validateToAndFrom() if vErr != nil { return vErr @@ -320179,7 +367446,7 @@ func (obj *bgpSrteSegmentHTypeSubTlv) FromYaml(value string) error { return nil } -func (obj *bgpSrteSegmentHTypeSubTlv) ToJson() (string, error) { +func (obj *patternFlowRSVPPathRecordRouteType1LabelCType) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -320197,7 +367464,7 @@ func (obj *bgpSrteSegmentHTypeSubTlv) ToJson() (string, error) { return string(data), nil } -func (obj *bgpSrteSegmentHTypeSubTlv) FromJson(value string) error { +func (obj *patternFlowRSVPPathRecordRouteType1LabelCType) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -320210,7 +367477,7 @@ func (obj *bgpSrteSegmentHTypeSubTlv) FromJson(value string) error { return fmt.Errorf("unmarshal error %s", strings.Replace( uError.Error(), "\u00a0", " ", -1)[7:]) } - obj.setNil() + err := obj.validateToAndFrom() if err != nil { return err @@ -320218,19 +367485,19 @@ func (obj *bgpSrteSegmentHTypeSubTlv) FromJson(value string) error { return nil } -func (obj *bgpSrteSegmentHTypeSubTlv) validateToAndFrom() error { +func (obj *patternFlowRSVPPathRecordRouteType1LabelCType) validateToAndFrom() error { // emptyVars() obj.validateObj(&obj.validation, true) return obj.validationResult() } -func (obj *bgpSrteSegmentHTypeSubTlv) Validate() error { +func (obj *patternFlowRSVPPathRecordRouteType1LabelCType) Validate() error { // emptyVars() obj.validateObj(&obj.validation, false) return obj.validationResult() } -func (obj *bgpSrteSegmentHTypeSubTlv) String() string { +func (obj *patternFlowRSVPPathRecordRouteType1LabelCType) String() string { str, err := obj.ToYaml() if err != nil { return err.Error() @@ -320238,12 +367505,12 @@ func (obj *bgpSrteSegmentHTypeSubTlv) String() string { return str } -func (obj *bgpSrteSegmentHTypeSubTlv) Clone() (BgpSrteSegmentHTypeSubTlv, error) { +func (obj *patternFlowRSVPPathRecordRouteType1LabelCType) Clone() (PatternFlowRSVPPathRecordRouteType1LabelCType, error) { vErr := obj.Validate() if vErr != nil { return nil, vErr } - newObj := NewBgpSrteSegmentHTypeSubTlv() + newObj := NewPatternFlowRSVPPathRecordRouteType1LabelCType() data, err := proto.Marshal(obj.Msg()) if err != nil { return nil, err @@ -320255,229 +367522,212 @@ func (obj *bgpSrteSegmentHTypeSubTlv) Clone() (BgpSrteSegmentHTypeSubTlv, error) return newObj, nil } -func (obj *bgpSrteSegmentHTypeSubTlv) setNil() { - obj.srMplsSidHolder = nil - obj.validationErrors = nil - obj.warnings = nil - obj.constraints = make(map[string]map[string]Constraints) -} - -// BgpSrteSegmentHTypeSubTlv is type H: IPv6 Local and Remote addresses with optional SID for SR MPLS. -type BgpSrteSegmentHTypeSubTlv interface { +// PatternFlowRSVPPathRecordRouteType1LabelCType is the C-Type of the included Label Object. Copied from the Label object. +type PatternFlowRSVPPathRecordRouteType1LabelCType interface { Validation - // Msg marshals BgpSrteSegmentHTypeSubTlv to protobuf object *otg.BgpSrteSegmentHTypeSubTlv + // Msg marshals PatternFlowRSVPPathRecordRouteType1LabelCType to protobuf object *otg.PatternFlowRSVPPathRecordRouteType1LabelCType // and doesn't set defaults - Msg() *otg.BgpSrteSegmentHTypeSubTlv - // SetMsg unmarshals BgpSrteSegmentHTypeSubTlv from protobuf object *otg.BgpSrteSegmentHTypeSubTlv + Msg() *otg.PatternFlowRSVPPathRecordRouteType1LabelCType + // SetMsg unmarshals PatternFlowRSVPPathRecordRouteType1LabelCType from protobuf object *otg.PatternFlowRSVPPathRecordRouteType1LabelCType // and doesn't set defaults - SetMsg(*otg.BgpSrteSegmentHTypeSubTlv) BgpSrteSegmentHTypeSubTlv - // ToProto marshals BgpSrteSegmentHTypeSubTlv to protobuf object *otg.BgpSrteSegmentHTypeSubTlv - ToProto() (*otg.BgpSrteSegmentHTypeSubTlv, error) - // ToPbText marshals BgpSrteSegmentHTypeSubTlv to protobuf text + SetMsg(*otg.PatternFlowRSVPPathRecordRouteType1LabelCType) PatternFlowRSVPPathRecordRouteType1LabelCType + // ToProto marshals PatternFlowRSVPPathRecordRouteType1LabelCType to protobuf object *otg.PatternFlowRSVPPathRecordRouteType1LabelCType + ToProto() (*otg.PatternFlowRSVPPathRecordRouteType1LabelCType, error) + // ToPbText marshals PatternFlowRSVPPathRecordRouteType1LabelCType to protobuf text ToPbText() (string, error) - // ToYaml marshals BgpSrteSegmentHTypeSubTlv to YAML text + // ToYaml marshals PatternFlowRSVPPathRecordRouteType1LabelCType to YAML text ToYaml() (string, error) - // ToJson marshals BgpSrteSegmentHTypeSubTlv to JSON text + // ToJson marshals PatternFlowRSVPPathRecordRouteType1LabelCType to JSON text ToJson() (string, error) - // FromProto unmarshals BgpSrteSegmentHTypeSubTlv from protobuf object *otg.BgpSrteSegmentHTypeSubTlv - FromProto(msg *otg.BgpSrteSegmentHTypeSubTlv) (BgpSrteSegmentHTypeSubTlv, error) - // FromPbText unmarshals BgpSrteSegmentHTypeSubTlv from protobuf text + // FromProto unmarshals PatternFlowRSVPPathRecordRouteType1LabelCType from protobuf object *otg.PatternFlowRSVPPathRecordRouteType1LabelCType + FromProto(msg *otg.PatternFlowRSVPPathRecordRouteType1LabelCType) (PatternFlowRSVPPathRecordRouteType1LabelCType, error) + // FromPbText unmarshals PatternFlowRSVPPathRecordRouteType1LabelCType from protobuf text FromPbText(value string) error - // FromYaml unmarshals BgpSrteSegmentHTypeSubTlv from YAML text + // FromYaml unmarshals PatternFlowRSVPPathRecordRouteType1LabelCType from YAML text FromYaml(value string) error - // FromJson unmarshals BgpSrteSegmentHTypeSubTlv from JSON text + // FromJson unmarshals PatternFlowRSVPPathRecordRouteType1LabelCType from JSON text FromJson(value string) error - // Validate validates BgpSrteSegmentHTypeSubTlv + // Validate validates PatternFlowRSVPPathRecordRouteType1LabelCType Validate() error // A stringer function String() string // Clones the object - Clone() (BgpSrteSegmentHTypeSubTlv, error) + Clone() (PatternFlowRSVPPathRecordRouteType1LabelCType, error) validateToAndFrom() error validateObj(vObj *validation, set_default bool) setDefault() - // Flags returns string, set in BgpSrteSegmentHTypeSubTlv. - Flags() string - // SetFlags assigns string provided by user to BgpSrteSegmentHTypeSubTlv - SetFlags(value string) BgpSrteSegmentHTypeSubTlv - // HasFlags checks if Flags has been set in BgpSrteSegmentHTypeSubTlv - HasFlags() bool - // LocalIpv6Address returns string, set in BgpSrteSegmentHTypeSubTlv. - LocalIpv6Address() string - // SetLocalIpv6Address assigns string provided by user to BgpSrteSegmentHTypeSubTlv - SetLocalIpv6Address(value string) BgpSrteSegmentHTypeSubTlv - // RemoteIpv6Address returns string, set in BgpSrteSegmentHTypeSubTlv. - RemoteIpv6Address() string - // SetRemoteIpv6Address assigns string provided by user to BgpSrteSegmentHTypeSubTlv - SetRemoteIpv6Address(value string) BgpSrteSegmentHTypeSubTlv - // SrMplsSid returns BgpSrteSrMplsSid, set in BgpSrteSegmentHTypeSubTlv. - // BgpSrteSrMplsSid is configuration for SR-MPLS with Label, TC, Bottom-of-Stack and TTL. - SrMplsSid() BgpSrteSrMplsSid - // SetSrMplsSid assigns BgpSrteSrMplsSid provided by user to BgpSrteSegmentHTypeSubTlv. - // BgpSrteSrMplsSid is configuration for SR-MPLS with Label, TC, Bottom-of-Stack and TTL. - SetSrMplsSid(value BgpSrteSrMplsSid) BgpSrteSegmentHTypeSubTlv - // HasSrMplsSid checks if SrMplsSid has been set in BgpSrteSegmentHTypeSubTlv - HasSrMplsSid() bool - setNil() + // Choice returns PatternFlowRSVPPathRecordRouteType1LabelCTypeChoiceEnum, set in PatternFlowRSVPPathRecordRouteType1LabelCType + Choice() PatternFlowRSVPPathRecordRouteType1LabelCTypeChoiceEnum + // SetChoice assigns PatternFlowRSVPPathRecordRouteType1LabelCTypeChoiceEnum provided by user to PatternFlowRSVPPathRecordRouteType1LabelCType + SetChoice(value PatternFlowRSVPPathRecordRouteType1LabelCTypeChoiceEnum) PatternFlowRSVPPathRecordRouteType1LabelCType + // HasChoice checks if Choice has been set in PatternFlowRSVPPathRecordRouteType1LabelCType + HasChoice() bool + // Value returns uint32, set in PatternFlowRSVPPathRecordRouteType1LabelCType. + Value() uint32 + // SetValue assigns uint32 provided by user to PatternFlowRSVPPathRecordRouteType1LabelCType + SetValue(value uint32) PatternFlowRSVPPathRecordRouteType1LabelCType + // HasValue checks if Value has been set in PatternFlowRSVPPathRecordRouteType1LabelCType + HasValue() bool + // Values returns []uint32, set in PatternFlowRSVPPathRecordRouteType1LabelCType. + Values() []uint32 + // SetValues assigns []uint32 provided by user to PatternFlowRSVPPathRecordRouteType1LabelCType + SetValues(value []uint32) PatternFlowRSVPPathRecordRouteType1LabelCType } -// One octet bitmap for flags including V-Flag, A-Flag, S-Flag, B-Flag etc. as defined in https://datatracker.ietf.org/doc/html/draft-ietf-idr-segment-routing-te-policy-13#section-2.4.4.2.12 -// Flags returns a string -func (obj *bgpSrteSegmentHTypeSubTlv) Flags() string { - - return *obj.obj.Flags +type PatternFlowRSVPPathRecordRouteType1LabelCTypeChoiceEnum string +// Enum of Choice on PatternFlowRSVPPathRecordRouteType1LabelCType +var PatternFlowRSVPPathRecordRouteType1LabelCTypeChoice = struct { + VALUE PatternFlowRSVPPathRecordRouteType1LabelCTypeChoiceEnum + VALUES PatternFlowRSVPPathRecordRouteType1LabelCTypeChoiceEnum +}{ + VALUE: PatternFlowRSVPPathRecordRouteType1LabelCTypeChoiceEnum("value"), + VALUES: PatternFlowRSVPPathRecordRouteType1LabelCTypeChoiceEnum("values"), } -// One octet bitmap for flags including V-Flag, A-Flag, S-Flag, B-Flag etc. as defined in https://datatracker.ietf.org/doc/html/draft-ietf-idr-segment-routing-te-policy-13#section-2.4.4.2.12 -// Flags returns a string -func (obj *bgpSrteSegmentHTypeSubTlv) HasFlags() bool { - return obj.obj.Flags != nil +func (obj *patternFlowRSVPPathRecordRouteType1LabelCType) Choice() PatternFlowRSVPPathRecordRouteType1LabelCTypeChoiceEnum { + return PatternFlowRSVPPathRecordRouteType1LabelCTypeChoiceEnum(obj.obj.Choice.Enum().String()) } -// One octet bitmap for flags including V-Flag, A-Flag, S-Flag, B-Flag etc. as defined in https://datatracker.ietf.org/doc/html/draft-ietf-idr-segment-routing-te-policy-13#section-2.4.4.2.12 -// SetFlags sets the string value in the BgpSrteSegmentHTypeSubTlv object -func (obj *bgpSrteSegmentHTypeSubTlv) SetFlags(value string) BgpSrteSegmentHTypeSubTlv { - - obj.obj.Flags = &value - return obj +// description is TBD +// Choice returns a string +func (obj *patternFlowRSVPPathRecordRouteType1LabelCType) HasChoice() bool { + return obj.obj.Choice != nil } -// Local IPv6 Address. -// LocalIpv6Address returns a string -func (obj *bgpSrteSegmentHTypeSubTlv) LocalIpv6Address() string { - - return *obj.obj.LocalIpv6Address +func (obj *patternFlowRSVPPathRecordRouteType1LabelCType) SetChoice(value PatternFlowRSVPPathRecordRouteType1LabelCTypeChoiceEnum) PatternFlowRSVPPathRecordRouteType1LabelCType { + intValue, ok := otg.PatternFlowRSVPPathRecordRouteType1LabelCType_Choice_Enum_value[string(value)] + if !ok { + obj.validationErrors = append(obj.validationErrors, fmt.Sprintf( + "%s is not a valid choice on PatternFlowRSVPPathRecordRouteType1LabelCTypeChoiceEnum", string(value))) + return obj + } + enumValue := otg.PatternFlowRSVPPathRecordRouteType1LabelCType_Choice_Enum(intValue) + obj.obj.Choice = &enumValue + obj.obj.Values = nil + obj.obj.Value = nil -} + if value == PatternFlowRSVPPathRecordRouteType1LabelCTypeChoice.VALUE { + defaultValue := uint32(0) + obj.obj.Value = &defaultValue + } -// Local IPv6 Address. -// SetLocalIpv6Address sets the string value in the BgpSrteSegmentHTypeSubTlv object -func (obj *bgpSrteSegmentHTypeSubTlv) SetLocalIpv6Address(value string) BgpSrteSegmentHTypeSubTlv { + if value == PatternFlowRSVPPathRecordRouteType1LabelCTypeChoice.VALUES { + defaultValue := []uint32{0} + obj.obj.Values = defaultValue + } - obj.obj.LocalIpv6Address = &value return obj } -// Remote IPv6 Address. -// RemoteIpv6Address returns a string -func (obj *bgpSrteSegmentHTypeSubTlv) RemoteIpv6Address() string { +// description is TBD +// Value returns a uint32 +func (obj *patternFlowRSVPPathRecordRouteType1LabelCType) Value() uint32 { - return *obj.obj.RemoteIpv6Address + if obj.obj.Value == nil { + obj.SetChoice(PatternFlowRSVPPathRecordRouteType1LabelCTypeChoice.VALUE) + } + + return *obj.obj.Value } -// Remote IPv6 Address. -// SetRemoteIpv6Address sets the string value in the BgpSrteSegmentHTypeSubTlv object -func (obj *bgpSrteSegmentHTypeSubTlv) SetRemoteIpv6Address(value string) BgpSrteSegmentHTypeSubTlv { +// description is TBD +// Value returns a uint32 +func (obj *patternFlowRSVPPathRecordRouteType1LabelCType) HasValue() bool { + return obj.obj.Value != nil +} - obj.obj.RemoteIpv6Address = &value +// description is TBD +// SetValue sets the uint32 value in the PatternFlowRSVPPathRecordRouteType1LabelCType object +func (obj *patternFlowRSVPPathRecordRouteType1LabelCType) SetValue(value uint32) PatternFlowRSVPPathRecordRouteType1LabelCType { + obj.SetChoice(PatternFlowRSVPPathRecordRouteType1LabelCTypeChoice.VALUE) + obj.obj.Value = &value return obj } -// Optional SR-MPLS SID. -// SrMplsSid returns a BgpSrteSrMplsSid -func (obj *bgpSrteSegmentHTypeSubTlv) SrMplsSid() BgpSrteSrMplsSid { - if obj.obj.SrMplsSid == nil { - obj.obj.SrMplsSid = NewBgpSrteSrMplsSid().Msg() - } - if obj.srMplsSidHolder == nil { - obj.srMplsSidHolder = &bgpSrteSrMplsSid{obj: obj.obj.SrMplsSid} +// description is TBD +// Values returns a []uint32 +func (obj *patternFlowRSVPPathRecordRouteType1LabelCType) Values() []uint32 { + if obj.obj.Values == nil { + obj.SetValues([]uint32{0}) } - return obj.srMplsSidHolder -} - -// Optional SR-MPLS SID. -// SrMplsSid returns a BgpSrteSrMplsSid -func (obj *bgpSrteSegmentHTypeSubTlv) HasSrMplsSid() bool { - return obj.obj.SrMplsSid != nil + return obj.obj.Values } -// Optional SR-MPLS SID. -// SetSrMplsSid sets the BgpSrteSrMplsSid value in the BgpSrteSegmentHTypeSubTlv object -func (obj *bgpSrteSegmentHTypeSubTlv) SetSrMplsSid(value BgpSrteSrMplsSid) BgpSrteSegmentHTypeSubTlv { - - obj.srMplsSidHolder = nil - obj.obj.SrMplsSid = value.Msg() +// description is TBD +// SetValues sets the []uint32 value in the PatternFlowRSVPPathRecordRouteType1LabelCType object +func (obj *patternFlowRSVPPathRecordRouteType1LabelCType) SetValues(value []uint32) PatternFlowRSVPPathRecordRouteType1LabelCType { + obj.SetChoice(PatternFlowRSVPPathRecordRouteType1LabelCTypeChoice.VALUES) + if obj.obj.Values == nil { + obj.obj.Values = make([]uint32, 0) + } + obj.obj.Values = value return obj } -func (obj *bgpSrteSegmentHTypeSubTlv) validateObj(vObj *validation, set_default bool) { +func (obj *patternFlowRSVPPathRecordRouteType1LabelCType) validateObj(vObj *validation, set_default bool) { if set_default { obj.setDefault() } - if obj.obj.Flags != nil { + if obj.obj.Value != nil { - err := obj.validateHex(obj.Flags()) - if err != nil { - vObj.validationErrors = append(vObj.validationErrors, fmt.Sprintf("%s %s", err.Error(), "on BgpSrteSegmentHTypeSubTlv.Flags")) + if *obj.obj.Value > 255 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("0 <= PatternFlowRSVPPathRecordRouteType1LabelCType.Value <= 255 but Got %d", *obj.obj.Value)) } } - // LocalIpv6Address is required - if obj.obj.LocalIpv6Address == nil { - vObj.validationErrors = append(vObj.validationErrors, "LocalIpv6Address is required field on interface BgpSrteSegmentHTypeSubTlv") - } - if obj.obj.LocalIpv6Address != nil { - - err := obj.validateIpv6(obj.LocalIpv6Address()) - if err != nil { - vObj.validationErrors = append(vObj.validationErrors, fmt.Sprintf("%s %s", err.Error(), "on BgpSrteSegmentHTypeSubTlv.LocalIpv6Address")) - } - - } + if obj.obj.Values != nil { - // RemoteIpv6Address is required - if obj.obj.RemoteIpv6Address == nil { - vObj.validationErrors = append(vObj.validationErrors, "RemoteIpv6Address is required field on interface BgpSrteSegmentHTypeSubTlv") - } - if obj.obj.RemoteIpv6Address != nil { + for _, item := range obj.obj.Values { + if item > 255 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("min(uint32) <= PatternFlowRSVPPathRecordRouteType1LabelCType.Values <= 255 but Got %d", item)) + } - err := obj.validateIpv6(obj.RemoteIpv6Address()) - if err != nil { - vObj.validationErrors = append(vObj.validationErrors, fmt.Sprintf("%s %s", err.Error(), "on BgpSrteSegmentHTypeSubTlv.RemoteIpv6Address")) } } - if obj.obj.SrMplsSid != nil { - - obj.SrMplsSid().validateObj(vObj, set_default) - } - } -func (obj *bgpSrteSegmentHTypeSubTlv) setDefault() { +func (obj *patternFlowRSVPPathRecordRouteType1LabelCType) setDefault() { + if obj.obj.Choice == nil { + obj.SetChoice(PatternFlowRSVPPathRecordRouteType1LabelCTypeChoice.VALUE) + + } } -// ***** BgpSrteSegmentITypeSubTlv ***** -type bgpSrteSegmentITypeSubTlv struct { +// ***** PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixLBitCounter ***** +type patternFlowRSVPPathExplicitRouteType1Ipv4PrefixLBitCounter struct { validation - obj *otg.BgpSrteSegmentITypeSubTlv - srv6SidEndpointBehaviorHolder BgpSrteSRv6SIDEndpointBehaviorAndStructure + obj *otg.PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixLBitCounter } -func NewBgpSrteSegmentITypeSubTlv() BgpSrteSegmentITypeSubTlv { - obj := bgpSrteSegmentITypeSubTlv{obj: &otg.BgpSrteSegmentITypeSubTlv{}} +func NewPatternFlowRSVPPathExplicitRouteType1Ipv4PrefixLBitCounter() PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixLBitCounter { + obj := patternFlowRSVPPathExplicitRouteType1Ipv4PrefixLBitCounter{obj: &otg.PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixLBitCounter{}} obj.setDefault() return &obj } -func (obj *bgpSrteSegmentITypeSubTlv) Msg() *otg.BgpSrteSegmentITypeSubTlv { +func (obj *patternFlowRSVPPathExplicitRouteType1Ipv4PrefixLBitCounter) Msg() *otg.PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixLBitCounter { return obj.obj } -func (obj *bgpSrteSegmentITypeSubTlv) SetMsg(msg *otg.BgpSrteSegmentITypeSubTlv) BgpSrteSegmentITypeSubTlv { - obj.setNil() +func (obj *patternFlowRSVPPathExplicitRouteType1Ipv4PrefixLBitCounter) SetMsg(msg *otg.PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixLBitCounter) PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixLBitCounter { + proto.Merge(obj.obj, msg) return obj } -func (obj *bgpSrteSegmentITypeSubTlv) ToProto() (*otg.BgpSrteSegmentITypeSubTlv, error) { +func (obj *patternFlowRSVPPathExplicitRouteType1Ipv4PrefixLBitCounter) ToProto() (*otg.PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixLBitCounter, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -320485,7 +367735,7 @@ func (obj *bgpSrteSegmentITypeSubTlv) ToProto() (*otg.BgpSrteSegmentITypeSubTlv, return obj.Msg(), nil } -func (obj *bgpSrteSegmentITypeSubTlv) FromProto(msg *otg.BgpSrteSegmentITypeSubTlv) (BgpSrteSegmentITypeSubTlv, error) { +func (obj *patternFlowRSVPPathExplicitRouteType1Ipv4PrefixLBitCounter) FromProto(msg *otg.PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixLBitCounter) (PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixLBitCounter, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -320494,7 +367744,7 @@ func (obj *bgpSrteSegmentITypeSubTlv) FromProto(msg *otg.BgpSrteSegmentITypeSubT return newObj, nil } -func (obj *bgpSrteSegmentITypeSubTlv) ToPbText() (string, error) { +func (obj *patternFlowRSVPPathExplicitRouteType1Ipv4PrefixLBitCounter) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -320506,12 +367756,12 @@ func (obj *bgpSrteSegmentITypeSubTlv) ToPbText() (string, error) { return string(protoMarshal), nil } -func (obj *bgpSrteSegmentITypeSubTlv) FromPbText(value string) error { +func (obj *patternFlowRSVPPathExplicitRouteType1Ipv4PrefixLBitCounter) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj } - obj.setNil() + vErr := obj.validateToAndFrom() if vErr != nil { return vErr @@ -320519,7 +367769,7 @@ func (obj *bgpSrteSegmentITypeSubTlv) FromPbText(value string) error { return retObj } -func (obj *bgpSrteSegmentITypeSubTlv) ToYaml() (string, error) { +func (obj *patternFlowRSVPPathExplicitRouteType1Ipv4PrefixLBitCounter) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -320540,7 +367790,7 @@ func (obj *bgpSrteSegmentITypeSubTlv) ToYaml() (string, error) { return string(data), nil } -func (obj *bgpSrteSegmentITypeSubTlv) FromYaml(value string) error { +func (obj *patternFlowRSVPPathExplicitRouteType1Ipv4PrefixLBitCounter) FromYaml(value string) error { if value == "" { value = "{}" } @@ -320557,7 +367807,7 @@ func (obj *bgpSrteSegmentITypeSubTlv) FromYaml(value string) error { return fmt.Errorf("unmarshal error %s", strings.Replace( uError.Error(), "\u00a0", " ", -1)[7:]) } - obj.setNil() + vErr := obj.validateToAndFrom() if vErr != nil { return vErr @@ -320565,7 +367815,7 @@ func (obj *bgpSrteSegmentITypeSubTlv) FromYaml(value string) error { return nil } -func (obj *bgpSrteSegmentITypeSubTlv) ToJson() (string, error) { +func (obj *patternFlowRSVPPathExplicitRouteType1Ipv4PrefixLBitCounter) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -320583,7 +367833,7 @@ func (obj *bgpSrteSegmentITypeSubTlv) ToJson() (string, error) { return string(data), nil } -func (obj *bgpSrteSegmentITypeSubTlv) FromJson(value string) error { +func (obj *patternFlowRSVPPathExplicitRouteType1Ipv4PrefixLBitCounter) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -320596,7 +367846,7 @@ func (obj *bgpSrteSegmentITypeSubTlv) FromJson(value string) error { return fmt.Errorf("unmarshal error %s", strings.Replace( uError.Error(), "\u00a0", " ", -1)[7:]) } - obj.setNil() + err := obj.validateToAndFrom() if err != nil { return err @@ -320604,19 +367854,19 @@ func (obj *bgpSrteSegmentITypeSubTlv) FromJson(value string) error { return nil } -func (obj *bgpSrteSegmentITypeSubTlv) validateToAndFrom() error { +func (obj *patternFlowRSVPPathExplicitRouteType1Ipv4PrefixLBitCounter) validateToAndFrom() error { // emptyVars() obj.validateObj(&obj.validation, true) return obj.validationResult() } -func (obj *bgpSrteSegmentITypeSubTlv) Validate() error { +func (obj *patternFlowRSVPPathExplicitRouteType1Ipv4PrefixLBitCounter) Validate() error { // emptyVars() obj.validateObj(&obj.validation, false) return obj.validationResult() } -func (obj *bgpSrteSegmentITypeSubTlv) String() string { +func (obj *patternFlowRSVPPathExplicitRouteType1Ipv4PrefixLBitCounter) String() string { str, err := obj.ToYaml() if err != nil { return err.Error() @@ -320624,12 +367874,12 @@ func (obj *bgpSrteSegmentITypeSubTlv) String() string { return str } -func (obj *bgpSrteSegmentITypeSubTlv) Clone() (BgpSrteSegmentITypeSubTlv, error) { +func (obj *patternFlowRSVPPathExplicitRouteType1Ipv4PrefixLBitCounter) Clone() (PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixLBitCounter, error) { vErr := obj.Validate() if vErr != nil { return nil, vErr } - newObj := NewBgpSrteSegmentITypeSubTlv() + newObj := NewPatternFlowRSVPPathExplicitRouteType1Ipv4PrefixLBitCounter() data, err := proto.Marshal(obj.Msg()) if err != nil { return nil, err @@ -320641,233 +367891,199 @@ func (obj *bgpSrteSegmentITypeSubTlv) Clone() (BgpSrteSegmentITypeSubTlv, error) return newObj, nil } -func (obj *bgpSrteSegmentITypeSubTlv) setNil() { - obj.srv6SidEndpointBehaviorHolder = nil - obj.validationErrors = nil - obj.warnings = nil - obj.constraints = make(map[string]map[string]Constraints) -} - -// BgpSrteSegmentITypeSubTlv is type I: IPv6 Node Address with optional SRv6 SID. -type BgpSrteSegmentITypeSubTlv interface { +// PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixLBitCounter is integer counter pattern +type PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixLBitCounter interface { Validation - // Msg marshals BgpSrteSegmentITypeSubTlv to protobuf object *otg.BgpSrteSegmentITypeSubTlv + // Msg marshals PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixLBitCounter to protobuf object *otg.PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixLBitCounter // and doesn't set defaults - Msg() *otg.BgpSrteSegmentITypeSubTlv - // SetMsg unmarshals BgpSrteSegmentITypeSubTlv from protobuf object *otg.BgpSrteSegmentITypeSubTlv + Msg() *otg.PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixLBitCounter + // SetMsg unmarshals PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixLBitCounter from protobuf object *otg.PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixLBitCounter // and doesn't set defaults - SetMsg(*otg.BgpSrteSegmentITypeSubTlv) BgpSrteSegmentITypeSubTlv - // ToProto marshals BgpSrteSegmentITypeSubTlv to protobuf object *otg.BgpSrteSegmentITypeSubTlv - ToProto() (*otg.BgpSrteSegmentITypeSubTlv, error) - // ToPbText marshals BgpSrteSegmentITypeSubTlv to protobuf text + SetMsg(*otg.PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixLBitCounter) PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixLBitCounter + // ToProto marshals PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixLBitCounter to protobuf object *otg.PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixLBitCounter + ToProto() (*otg.PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixLBitCounter, error) + // ToPbText marshals PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixLBitCounter to protobuf text ToPbText() (string, error) - // ToYaml marshals BgpSrteSegmentITypeSubTlv to YAML text + // ToYaml marshals PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixLBitCounter to YAML text ToYaml() (string, error) - // ToJson marshals BgpSrteSegmentITypeSubTlv to JSON text + // ToJson marshals PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixLBitCounter to JSON text ToJson() (string, error) - // FromProto unmarshals BgpSrteSegmentITypeSubTlv from protobuf object *otg.BgpSrteSegmentITypeSubTlv - FromProto(msg *otg.BgpSrteSegmentITypeSubTlv) (BgpSrteSegmentITypeSubTlv, error) - // FromPbText unmarshals BgpSrteSegmentITypeSubTlv from protobuf text + // FromProto unmarshals PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixLBitCounter from protobuf object *otg.PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixLBitCounter + FromProto(msg *otg.PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixLBitCounter) (PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixLBitCounter, error) + // FromPbText unmarshals PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixLBitCounter from protobuf text FromPbText(value string) error - // FromYaml unmarshals BgpSrteSegmentITypeSubTlv from YAML text + // FromYaml unmarshals PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixLBitCounter from YAML text FromYaml(value string) error - // FromJson unmarshals BgpSrteSegmentITypeSubTlv from JSON text + // FromJson unmarshals PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixLBitCounter from JSON text FromJson(value string) error - // Validate validates BgpSrteSegmentITypeSubTlv + // Validate validates PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixLBitCounter Validate() error // A stringer function String() string // Clones the object - Clone() (BgpSrteSegmentITypeSubTlv, error) + Clone() (PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixLBitCounter, error) validateToAndFrom() error validateObj(vObj *validation, set_default bool) setDefault() - // Flags returns string, set in BgpSrteSegmentITypeSubTlv. - Flags() string - // SetFlags assigns string provided by user to BgpSrteSegmentITypeSubTlv - SetFlags(value string) BgpSrteSegmentITypeSubTlv - // HasFlags checks if Flags has been set in BgpSrteSegmentITypeSubTlv - HasFlags() bool - // Ipv6NodeAddress returns string, set in BgpSrteSegmentITypeSubTlv. - Ipv6NodeAddress() string - // SetIpv6NodeAddress assigns string provided by user to BgpSrteSegmentITypeSubTlv - SetIpv6NodeAddress(value string) BgpSrteSegmentITypeSubTlv - // Srv6Sid returns string, set in BgpSrteSegmentITypeSubTlv. - Srv6Sid() string - // SetSrv6Sid assigns string provided by user to BgpSrteSegmentITypeSubTlv - SetSrv6Sid(value string) BgpSrteSegmentITypeSubTlv - // HasSrv6Sid checks if Srv6Sid has been set in BgpSrteSegmentITypeSubTlv - HasSrv6Sid() bool - // Srv6SidEndpointBehavior returns BgpSrteSRv6SIDEndpointBehaviorAndStructure, set in BgpSrteSegmentITypeSubTlv. - // BgpSrteSRv6SIDEndpointBehaviorAndStructure is configuration for SRv6 Endpoint Behavior and SID Structure. Its optional. Summation of lengths for Locator Block, Locator Node, Function, and Argument MUST be less than or equal to 128. - Srv6SidEndpointBehavior() BgpSrteSRv6SIDEndpointBehaviorAndStructure - // SetSrv6SidEndpointBehavior assigns BgpSrteSRv6SIDEndpointBehaviorAndStructure provided by user to BgpSrteSegmentITypeSubTlv. - // BgpSrteSRv6SIDEndpointBehaviorAndStructure is configuration for SRv6 Endpoint Behavior and SID Structure. Its optional. Summation of lengths for Locator Block, Locator Node, Function, and Argument MUST be less than or equal to 128. - SetSrv6SidEndpointBehavior(value BgpSrteSRv6SIDEndpointBehaviorAndStructure) BgpSrteSegmentITypeSubTlv - // HasSrv6SidEndpointBehavior checks if Srv6SidEndpointBehavior has been set in BgpSrteSegmentITypeSubTlv - HasSrv6SidEndpointBehavior() bool - setNil() + // Start returns uint32, set in PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixLBitCounter. + Start() uint32 + // SetStart assigns uint32 provided by user to PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixLBitCounter + SetStart(value uint32) PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixLBitCounter + // HasStart checks if Start has been set in PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixLBitCounter + HasStart() bool + // Step returns uint32, set in PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixLBitCounter. + Step() uint32 + // SetStep assigns uint32 provided by user to PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixLBitCounter + SetStep(value uint32) PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixLBitCounter + // HasStep checks if Step has been set in PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixLBitCounter + HasStep() bool + // Count returns uint32, set in PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixLBitCounter. + Count() uint32 + // SetCount assigns uint32 provided by user to PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixLBitCounter + SetCount(value uint32) PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixLBitCounter + // HasCount checks if Count has been set in PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixLBitCounter + HasCount() bool } -// One octet bitmap for flags including V-Flag, A-Flag, S-Flag, B-Flag etc. as defined in https://datatracker.ietf.org/doc/html/draft-ietf-idr-segment-routing-te-policy-13#section-2.4.4.2.12 -// Flags returns a string -func (obj *bgpSrteSegmentITypeSubTlv) Flags() string { +// description is TBD +// Start returns a uint32 +func (obj *patternFlowRSVPPathExplicitRouteType1Ipv4PrefixLBitCounter) Start() uint32 { - return *obj.obj.Flags + return *obj.obj.Start } -// One octet bitmap for flags including V-Flag, A-Flag, S-Flag, B-Flag etc. as defined in https://datatracker.ietf.org/doc/html/draft-ietf-idr-segment-routing-te-policy-13#section-2.4.4.2.12 -// Flags returns a string -func (obj *bgpSrteSegmentITypeSubTlv) HasFlags() bool { - return obj.obj.Flags != nil +// description is TBD +// Start returns a uint32 +func (obj *patternFlowRSVPPathExplicitRouteType1Ipv4PrefixLBitCounter) HasStart() bool { + return obj.obj.Start != nil } -// One octet bitmap for flags including V-Flag, A-Flag, S-Flag, B-Flag etc. as defined in https://datatracker.ietf.org/doc/html/draft-ietf-idr-segment-routing-te-policy-13#section-2.4.4.2.12 -// SetFlags sets the string value in the BgpSrteSegmentITypeSubTlv object -func (obj *bgpSrteSegmentITypeSubTlv) SetFlags(value string) BgpSrteSegmentITypeSubTlv { +// description is TBD +// SetStart sets the uint32 value in the PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixLBitCounter object +func (obj *patternFlowRSVPPathExplicitRouteType1Ipv4PrefixLBitCounter) SetStart(value uint32) PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixLBitCounter { - obj.obj.Flags = &value + obj.obj.Start = &value return obj } -// IPv6 address representing a node. -// Ipv6NodeAddress returns a string -func (obj *bgpSrteSegmentITypeSubTlv) Ipv6NodeAddress() string { +// description is TBD +// Step returns a uint32 +func (obj *patternFlowRSVPPathExplicitRouteType1Ipv4PrefixLBitCounter) Step() uint32 { - return *obj.obj.Ipv6NodeAddress + return *obj.obj.Step } -// IPv6 address representing a node. -// SetIpv6NodeAddress sets the string value in the BgpSrteSegmentITypeSubTlv object -func (obj *bgpSrteSegmentITypeSubTlv) SetIpv6NodeAddress(value string) BgpSrteSegmentITypeSubTlv { - - obj.obj.Ipv6NodeAddress = &value - return obj +// description is TBD +// Step returns a uint32 +func (obj *patternFlowRSVPPathExplicitRouteType1Ipv4PrefixLBitCounter) HasStep() bool { + return obj.obj.Step != nil } -// Optional SRv6 SID. -// Srv6Sid returns a string -func (obj *bgpSrteSegmentITypeSubTlv) Srv6Sid() string { - - return *obj.obj.Srv6Sid - -} +// description is TBD +// SetStep sets the uint32 value in the PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixLBitCounter object +func (obj *patternFlowRSVPPathExplicitRouteType1Ipv4PrefixLBitCounter) SetStep(value uint32) PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixLBitCounter { -// Optional SRv6 SID. -// Srv6Sid returns a string -func (obj *bgpSrteSegmentITypeSubTlv) HasSrv6Sid() bool { - return obj.obj.Srv6Sid != nil + obj.obj.Step = &value + return obj } -// Optional SRv6 SID. -// SetSrv6Sid sets the string value in the BgpSrteSegmentITypeSubTlv object -func (obj *bgpSrteSegmentITypeSubTlv) SetSrv6Sid(value string) BgpSrteSegmentITypeSubTlv { +// description is TBD +// Count returns a uint32 +func (obj *patternFlowRSVPPathExplicitRouteType1Ipv4PrefixLBitCounter) Count() uint32 { - obj.obj.Srv6Sid = &value - return obj -} + return *obj.obj.Count -// Optional SRv6 Endpoint Behavior and SID Structure. -// Srv6SidEndpointBehavior returns a BgpSrteSRv6SIDEndpointBehaviorAndStructure -func (obj *bgpSrteSegmentITypeSubTlv) Srv6SidEndpointBehavior() BgpSrteSRv6SIDEndpointBehaviorAndStructure { - if obj.obj.Srv6SidEndpointBehavior == nil { - obj.obj.Srv6SidEndpointBehavior = NewBgpSrteSRv6SIDEndpointBehaviorAndStructure().Msg() - } - if obj.srv6SidEndpointBehaviorHolder == nil { - obj.srv6SidEndpointBehaviorHolder = &bgpSrteSRv6SIDEndpointBehaviorAndStructure{obj: obj.obj.Srv6SidEndpointBehavior} - } - return obj.srv6SidEndpointBehaviorHolder } -// Optional SRv6 Endpoint Behavior and SID Structure. -// Srv6SidEndpointBehavior returns a BgpSrteSRv6SIDEndpointBehaviorAndStructure -func (obj *bgpSrteSegmentITypeSubTlv) HasSrv6SidEndpointBehavior() bool { - return obj.obj.Srv6SidEndpointBehavior != nil +// description is TBD +// Count returns a uint32 +func (obj *patternFlowRSVPPathExplicitRouteType1Ipv4PrefixLBitCounter) HasCount() bool { + return obj.obj.Count != nil } -// Optional SRv6 Endpoint Behavior and SID Structure. -// SetSrv6SidEndpointBehavior sets the BgpSrteSRv6SIDEndpointBehaviorAndStructure value in the BgpSrteSegmentITypeSubTlv object -func (obj *bgpSrteSegmentITypeSubTlv) SetSrv6SidEndpointBehavior(value BgpSrteSRv6SIDEndpointBehaviorAndStructure) BgpSrteSegmentITypeSubTlv { - - obj.srv6SidEndpointBehaviorHolder = nil - obj.obj.Srv6SidEndpointBehavior = value.Msg() +// description is TBD +// SetCount sets the uint32 value in the PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixLBitCounter object +func (obj *patternFlowRSVPPathExplicitRouteType1Ipv4PrefixLBitCounter) SetCount(value uint32) PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixLBitCounter { + obj.obj.Count = &value return obj } -func (obj *bgpSrteSegmentITypeSubTlv) validateObj(vObj *validation, set_default bool) { +func (obj *patternFlowRSVPPathExplicitRouteType1Ipv4PrefixLBitCounter) validateObj(vObj *validation, set_default bool) { if set_default { obj.setDefault() } - if obj.obj.Flags != nil { + if obj.obj.Start != nil { - err := obj.validateHex(obj.Flags()) - if err != nil { - vObj.validationErrors = append(vObj.validationErrors, fmt.Sprintf("%s %s", err.Error(), "on BgpSrteSegmentITypeSubTlv.Flags")) + if *obj.obj.Start > 1 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("0 <= PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixLBitCounter.Start <= 1 but Got %d", *obj.obj.Start)) } } - // Ipv6NodeAddress is required - if obj.obj.Ipv6NodeAddress == nil { - vObj.validationErrors = append(vObj.validationErrors, "Ipv6NodeAddress is required field on interface BgpSrteSegmentITypeSubTlv") - } - if obj.obj.Ipv6NodeAddress != nil { + if obj.obj.Step != nil { - err := obj.validateIpv6(obj.Ipv6NodeAddress()) - if err != nil { - vObj.validationErrors = append(vObj.validationErrors, fmt.Sprintf("%s %s", err.Error(), "on BgpSrteSegmentITypeSubTlv.Ipv6NodeAddress")) + if *obj.obj.Step > 1 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("0 <= PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixLBitCounter.Step <= 1 but Got %d", *obj.obj.Step)) } } - if obj.obj.Srv6Sid != nil { + if obj.obj.Count != nil { - err := obj.validateIpv6(obj.Srv6Sid()) - if err != nil { - vObj.validationErrors = append(vObj.validationErrors, fmt.Sprintf("%s %s", err.Error(), "on BgpSrteSegmentITypeSubTlv.Srv6Sid")) + if *obj.obj.Count > 1 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("0 <= PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixLBitCounter.Count <= 1 but Got %d", *obj.obj.Count)) } } - if obj.obj.Srv6SidEndpointBehavior != nil { - - obj.Srv6SidEndpointBehavior().validateObj(vObj, set_default) - } - } -func (obj *bgpSrteSegmentITypeSubTlv) setDefault() { +func (obj *patternFlowRSVPPathExplicitRouteType1Ipv4PrefixLBitCounter) setDefault() { + if obj.obj.Start == nil { + obj.SetStart(0) + } + if obj.obj.Step == nil { + obj.SetStep(1) + } + if obj.obj.Count == nil { + obj.SetCount(1) + } } -// ***** BgpSrteSegmentJTypeSubTlv ***** -type bgpSrteSegmentJTypeSubTlv struct { +// ***** PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixIpv4AddressCounter ***** +type patternFlowRSVPPathExplicitRouteType1Ipv4PrefixIpv4AddressCounter struct { validation - obj *otg.BgpSrteSegmentJTypeSubTlv - srv6SidEndpointBehaviorHolder BgpSrteSRv6SIDEndpointBehaviorAndStructure + obj *otg.PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixIpv4AddressCounter } -func NewBgpSrteSegmentJTypeSubTlv() BgpSrteSegmentJTypeSubTlv { - obj := bgpSrteSegmentJTypeSubTlv{obj: &otg.BgpSrteSegmentJTypeSubTlv{}} +func NewPatternFlowRSVPPathExplicitRouteType1Ipv4PrefixIpv4AddressCounter() PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixIpv4AddressCounter { + obj := patternFlowRSVPPathExplicitRouteType1Ipv4PrefixIpv4AddressCounter{obj: &otg.PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixIpv4AddressCounter{}} obj.setDefault() return &obj } -func (obj *bgpSrteSegmentJTypeSubTlv) Msg() *otg.BgpSrteSegmentJTypeSubTlv { +func (obj *patternFlowRSVPPathExplicitRouteType1Ipv4PrefixIpv4AddressCounter) Msg() *otg.PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixIpv4AddressCounter { return obj.obj } -func (obj *bgpSrteSegmentJTypeSubTlv) SetMsg(msg *otg.BgpSrteSegmentJTypeSubTlv) BgpSrteSegmentJTypeSubTlv { - obj.setNil() +func (obj *patternFlowRSVPPathExplicitRouteType1Ipv4PrefixIpv4AddressCounter) SetMsg(msg *otg.PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixIpv4AddressCounter) PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixIpv4AddressCounter { + proto.Merge(obj.obj, msg) return obj } -func (obj *bgpSrteSegmentJTypeSubTlv) ToProto() (*otg.BgpSrteSegmentJTypeSubTlv, error) { +func (obj *patternFlowRSVPPathExplicitRouteType1Ipv4PrefixIpv4AddressCounter) ToProto() (*otg.PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixIpv4AddressCounter, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -320875,7 +368091,7 @@ func (obj *bgpSrteSegmentJTypeSubTlv) ToProto() (*otg.BgpSrteSegmentJTypeSubTlv, return obj.Msg(), nil } -func (obj *bgpSrteSegmentJTypeSubTlv) FromProto(msg *otg.BgpSrteSegmentJTypeSubTlv) (BgpSrteSegmentJTypeSubTlv, error) { +func (obj *patternFlowRSVPPathExplicitRouteType1Ipv4PrefixIpv4AddressCounter) FromProto(msg *otg.PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixIpv4AddressCounter) (PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixIpv4AddressCounter, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -320884,7 +368100,7 @@ func (obj *bgpSrteSegmentJTypeSubTlv) FromProto(msg *otg.BgpSrteSegmentJTypeSubT return newObj, nil } -func (obj *bgpSrteSegmentJTypeSubTlv) ToPbText() (string, error) { +func (obj *patternFlowRSVPPathExplicitRouteType1Ipv4PrefixIpv4AddressCounter) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -320896,12 +368112,12 @@ func (obj *bgpSrteSegmentJTypeSubTlv) ToPbText() (string, error) { return string(protoMarshal), nil } -func (obj *bgpSrteSegmentJTypeSubTlv) FromPbText(value string) error { +func (obj *patternFlowRSVPPathExplicitRouteType1Ipv4PrefixIpv4AddressCounter) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj } - obj.setNil() + vErr := obj.validateToAndFrom() if vErr != nil { return vErr @@ -320909,7 +368125,7 @@ func (obj *bgpSrteSegmentJTypeSubTlv) FromPbText(value string) error { return retObj } -func (obj *bgpSrteSegmentJTypeSubTlv) ToYaml() (string, error) { +func (obj *patternFlowRSVPPathExplicitRouteType1Ipv4PrefixIpv4AddressCounter) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -320930,7 +368146,7 @@ func (obj *bgpSrteSegmentJTypeSubTlv) ToYaml() (string, error) { return string(data), nil } -func (obj *bgpSrteSegmentJTypeSubTlv) FromYaml(value string) error { +func (obj *patternFlowRSVPPathExplicitRouteType1Ipv4PrefixIpv4AddressCounter) FromYaml(value string) error { if value == "" { value = "{}" } @@ -320947,7 +368163,7 @@ func (obj *bgpSrteSegmentJTypeSubTlv) FromYaml(value string) error { return fmt.Errorf("unmarshal error %s", strings.Replace( uError.Error(), "\u00a0", " ", -1)[7:]) } - obj.setNil() + vErr := obj.validateToAndFrom() if vErr != nil { return vErr @@ -320955,7 +368171,7 @@ func (obj *bgpSrteSegmentJTypeSubTlv) FromYaml(value string) error { return nil } -func (obj *bgpSrteSegmentJTypeSubTlv) ToJson() (string, error) { +func (obj *patternFlowRSVPPathExplicitRouteType1Ipv4PrefixIpv4AddressCounter) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -320973,7 +368189,7 @@ func (obj *bgpSrteSegmentJTypeSubTlv) ToJson() (string, error) { return string(data), nil } -func (obj *bgpSrteSegmentJTypeSubTlv) FromJson(value string) error { +func (obj *patternFlowRSVPPathExplicitRouteType1Ipv4PrefixIpv4AddressCounter) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -320986,7 +368202,7 @@ func (obj *bgpSrteSegmentJTypeSubTlv) FromJson(value string) error { return fmt.Errorf("unmarshal error %s", strings.Replace( uError.Error(), "\u00a0", " ", -1)[7:]) } - obj.setNil() + err := obj.validateToAndFrom() if err != nil { return err @@ -320994,396 +368210,224 @@ func (obj *bgpSrteSegmentJTypeSubTlv) FromJson(value string) error { return nil } -func (obj *bgpSrteSegmentJTypeSubTlv) validateToAndFrom() error { - // emptyVars() - obj.validateObj(&obj.validation, true) - return obj.validationResult() -} - -func (obj *bgpSrteSegmentJTypeSubTlv) Validate() error { - // emptyVars() - obj.validateObj(&obj.validation, false) - return obj.validationResult() -} - -func (obj *bgpSrteSegmentJTypeSubTlv) String() string { - str, err := obj.ToYaml() - if err != nil { - return err.Error() - } - return str -} - -func (obj *bgpSrteSegmentJTypeSubTlv) Clone() (BgpSrteSegmentJTypeSubTlv, error) { - vErr := obj.Validate() - if vErr != nil { - return nil, vErr - } - newObj := NewBgpSrteSegmentJTypeSubTlv() - data, err := proto.Marshal(obj.Msg()) - if err != nil { - return nil, err - } - pbErr := proto.Unmarshal(data, newObj.Msg()) - if pbErr != nil { - return nil, pbErr - } - return newObj, nil -} - -func (obj *bgpSrteSegmentJTypeSubTlv) setNil() { - obj.srv6SidEndpointBehaviorHolder = nil - obj.validationErrors = nil - obj.warnings = nil - obj.constraints = make(map[string]map[string]Constraints) -} - -// BgpSrteSegmentJTypeSubTlv is type J: IPv6 Address, Interface ID for local and remote pair for SRv6 with optional SID. -type BgpSrteSegmentJTypeSubTlv interface { - Validation - // Msg marshals BgpSrteSegmentJTypeSubTlv to protobuf object *otg.BgpSrteSegmentJTypeSubTlv - // and doesn't set defaults - Msg() *otg.BgpSrteSegmentJTypeSubTlv - // SetMsg unmarshals BgpSrteSegmentJTypeSubTlv from protobuf object *otg.BgpSrteSegmentJTypeSubTlv - // and doesn't set defaults - SetMsg(*otg.BgpSrteSegmentJTypeSubTlv) BgpSrteSegmentJTypeSubTlv - // ToProto marshals BgpSrteSegmentJTypeSubTlv to protobuf object *otg.BgpSrteSegmentJTypeSubTlv - ToProto() (*otg.BgpSrteSegmentJTypeSubTlv, error) - // ToPbText marshals BgpSrteSegmentJTypeSubTlv to protobuf text - ToPbText() (string, error) - // ToYaml marshals BgpSrteSegmentJTypeSubTlv to YAML text - ToYaml() (string, error) - // ToJson marshals BgpSrteSegmentJTypeSubTlv to JSON text - ToJson() (string, error) - // FromProto unmarshals BgpSrteSegmentJTypeSubTlv from protobuf object *otg.BgpSrteSegmentJTypeSubTlv - FromProto(msg *otg.BgpSrteSegmentJTypeSubTlv) (BgpSrteSegmentJTypeSubTlv, error) - // FromPbText unmarshals BgpSrteSegmentJTypeSubTlv from protobuf text - FromPbText(value string) error - // FromYaml unmarshals BgpSrteSegmentJTypeSubTlv from YAML text - FromYaml(value string) error - // FromJson unmarshals BgpSrteSegmentJTypeSubTlv from JSON text - FromJson(value string) error - // Validate validates BgpSrteSegmentJTypeSubTlv - Validate() error - // A stringer function - String() string - // Clones the object - Clone() (BgpSrteSegmentJTypeSubTlv, error) - validateToAndFrom() error - validateObj(vObj *validation, set_default bool) - setDefault() - // Flags returns string, set in BgpSrteSegmentJTypeSubTlv. - Flags() string - // SetFlags assigns string provided by user to BgpSrteSegmentJTypeSubTlv - SetFlags(value string) BgpSrteSegmentJTypeSubTlv - // HasFlags checks if Flags has been set in BgpSrteSegmentJTypeSubTlv - HasFlags() bool - // SrAlgorithm returns uint32, set in BgpSrteSegmentJTypeSubTlv. - SrAlgorithm() uint32 - // SetSrAlgorithm assigns uint32 provided by user to BgpSrteSegmentJTypeSubTlv - SetSrAlgorithm(value uint32) BgpSrteSegmentJTypeSubTlv - // HasSrAlgorithm checks if SrAlgorithm has been set in BgpSrteSegmentJTypeSubTlv - HasSrAlgorithm() bool - // LocalInterfaceId returns uint32, set in BgpSrteSegmentJTypeSubTlv. - LocalInterfaceId() uint32 - // SetLocalInterfaceId assigns uint32 provided by user to BgpSrteSegmentJTypeSubTlv - SetLocalInterfaceId(value uint32) BgpSrteSegmentJTypeSubTlv - // HasLocalInterfaceId checks if LocalInterfaceId has been set in BgpSrteSegmentJTypeSubTlv - HasLocalInterfaceId() bool - // LocalIpv6NodeAddress returns string, set in BgpSrteSegmentJTypeSubTlv. - LocalIpv6NodeAddress() string - // SetLocalIpv6NodeAddress assigns string provided by user to BgpSrteSegmentJTypeSubTlv - SetLocalIpv6NodeAddress(value string) BgpSrteSegmentJTypeSubTlv - // RemoteInterfaceId returns uint32, set in BgpSrteSegmentJTypeSubTlv. - RemoteInterfaceId() uint32 - // SetRemoteInterfaceId assigns uint32 provided by user to BgpSrteSegmentJTypeSubTlv - SetRemoteInterfaceId(value uint32) BgpSrteSegmentJTypeSubTlv - // HasRemoteInterfaceId checks if RemoteInterfaceId has been set in BgpSrteSegmentJTypeSubTlv - HasRemoteInterfaceId() bool - // RemoteIpv6NodeAddress returns string, set in BgpSrteSegmentJTypeSubTlv. - RemoteIpv6NodeAddress() string - // SetRemoteIpv6NodeAddress assigns string provided by user to BgpSrteSegmentJTypeSubTlv - SetRemoteIpv6NodeAddress(value string) BgpSrteSegmentJTypeSubTlv - // Srv6Sid returns string, set in BgpSrteSegmentJTypeSubTlv. - Srv6Sid() string - // SetSrv6Sid assigns string provided by user to BgpSrteSegmentJTypeSubTlv - SetSrv6Sid(value string) BgpSrteSegmentJTypeSubTlv - // HasSrv6Sid checks if Srv6Sid has been set in BgpSrteSegmentJTypeSubTlv - HasSrv6Sid() bool - // Srv6SidEndpointBehavior returns BgpSrteSRv6SIDEndpointBehaviorAndStructure, set in BgpSrteSegmentJTypeSubTlv. - // BgpSrteSRv6SIDEndpointBehaviorAndStructure is configuration for SRv6 Endpoint Behavior and SID Structure. Its optional. Summation of lengths for Locator Block, Locator Node, Function, and Argument MUST be less than or equal to 128. - Srv6SidEndpointBehavior() BgpSrteSRv6SIDEndpointBehaviorAndStructure - // SetSrv6SidEndpointBehavior assigns BgpSrteSRv6SIDEndpointBehaviorAndStructure provided by user to BgpSrteSegmentJTypeSubTlv. - // BgpSrteSRv6SIDEndpointBehaviorAndStructure is configuration for SRv6 Endpoint Behavior and SID Structure. Its optional. Summation of lengths for Locator Block, Locator Node, Function, and Argument MUST be less than or equal to 128. - SetSrv6SidEndpointBehavior(value BgpSrteSRv6SIDEndpointBehaviorAndStructure) BgpSrteSegmentJTypeSubTlv - // HasSrv6SidEndpointBehavior checks if Srv6SidEndpointBehavior has been set in BgpSrteSegmentJTypeSubTlv - HasSrv6SidEndpointBehavior() bool - setNil() -} - -// One octet bitmap for flags including V-Flag, A-Flag, S-Flag, B-Flag etc. as defined in https://datatracker.ietf.org/doc/html/draft-ietf-idr-segment-routing-te-policy-13#section-2.4.4.2.12 -// Flags returns a string -func (obj *bgpSrteSegmentJTypeSubTlv) Flags() string { - - return *obj.obj.Flags - -} - -// One octet bitmap for flags including V-Flag, A-Flag, S-Flag, B-Flag etc. as defined in https://datatracker.ietf.org/doc/html/draft-ietf-idr-segment-routing-te-policy-13#section-2.4.4.2.12 -// Flags returns a string -func (obj *bgpSrteSegmentJTypeSubTlv) HasFlags() bool { - return obj.obj.Flags != nil -} - -// One octet bitmap for flags including V-Flag, A-Flag, S-Flag, B-Flag etc. as defined in https://datatracker.ietf.org/doc/html/draft-ietf-idr-segment-routing-te-policy-13#section-2.4.4.2.12 -// SetFlags sets the string value in the BgpSrteSegmentJTypeSubTlv object -func (obj *bgpSrteSegmentJTypeSubTlv) SetFlags(value string) BgpSrteSegmentJTypeSubTlv { - - obj.obj.Flags = &value - return obj -} - -// SR Algorithm identifier when A-Flag in on. -// SrAlgorithm returns a uint32 -func (obj *bgpSrteSegmentJTypeSubTlv) SrAlgorithm() uint32 { - - return *obj.obj.SrAlgorithm - -} - -// SR Algorithm identifier when A-Flag in on. -// SrAlgorithm returns a uint32 -func (obj *bgpSrteSegmentJTypeSubTlv) HasSrAlgorithm() bool { - return obj.obj.SrAlgorithm != nil -} - -// SR Algorithm identifier when A-Flag in on. -// SetSrAlgorithm sets the uint32 value in the BgpSrteSegmentJTypeSubTlv object -func (obj *bgpSrteSegmentJTypeSubTlv) SetSrAlgorithm(value uint32) BgpSrteSegmentJTypeSubTlv { - - obj.obj.SrAlgorithm = &value - return obj -} - -// Local Interface ID: The Interface Index as defined in [RFC8664]. -// LocalInterfaceId returns a uint32 -func (obj *bgpSrteSegmentJTypeSubTlv) LocalInterfaceId() uint32 { - - return *obj.obj.LocalInterfaceId - -} - -// Local Interface ID: The Interface Index as defined in [RFC8664]. -// LocalInterfaceId returns a uint32 -func (obj *bgpSrteSegmentJTypeSubTlv) HasLocalInterfaceId() bool { - return obj.obj.LocalInterfaceId != nil -} - -// Local Interface ID: The Interface Index as defined in [RFC8664]. -// SetLocalInterfaceId sets the uint32 value in the BgpSrteSegmentJTypeSubTlv object -func (obj *bgpSrteSegmentJTypeSubTlv) SetLocalInterfaceId(value uint32) BgpSrteSegmentJTypeSubTlv { - - obj.obj.LocalInterfaceId = &value - return obj +func (obj *patternFlowRSVPPathExplicitRouteType1Ipv4PrefixIpv4AddressCounter) validateToAndFrom() error { + // emptyVars() + obj.validateObj(&obj.validation, true) + return obj.validationResult() } -// IPv6 address representing a node. -// LocalIpv6NodeAddress returns a string -func (obj *bgpSrteSegmentJTypeSubTlv) LocalIpv6NodeAddress() string { - - return *obj.obj.LocalIpv6NodeAddress - +func (obj *patternFlowRSVPPathExplicitRouteType1Ipv4PrefixIpv4AddressCounter) Validate() error { + // emptyVars() + obj.validateObj(&obj.validation, false) + return obj.validationResult() } -// IPv6 address representing a node. -// SetLocalIpv6NodeAddress sets the string value in the BgpSrteSegmentJTypeSubTlv object -func (obj *bgpSrteSegmentJTypeSubTlv) SetLocalIpv6NodeAddress(value string) BgpSrteSegmentJTypeSubTlv { - - obj.obj.LocalIpv6NodeAddress = &value - return obj +func (obj *patternFlowRSVPPathExplicitRouteType1Ipv4PrefixIpv4AddressCounter) String() string { + str, err := obj.ToYaml() + if err != nil { + return err.Error() + } + return str } -// Local Interface ID: The Interface Index as defined in [RFC8664]. -// RemoteInterfaceId returns a uint32 -func (obj *bgpSrteSegmentJTypeSubTlv) RemoteInterfaceId() uint32 { - - return *obj.obj.RemoteInterfaceId - +func (obj *patternFlowRSVPPathExplicitRouteType1Ipv4PrefixIpv4AddressCounter) Clone() (PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixIpv4AddressCounter, error) { + vErr := obj.Validate() + if vErr != nil { + return nil, vErr + } + newObj := NewPatternFlowRSVPPathExplicitRouteType1Ipv4PrefixIpv4AddressCounter() + data, err := proto.Marshal(obj.Msg()) + if err != nil { + return nil, err + } + pbErr := proto.Unmarshal(data, newObj.Msg()) + if pbErr != nil { + return nil, pbErr + } + return newObj, nil } -// Local Interface ID: The Interface Index as defined in [RFC8664]. -// RemoteInterfaceId returns a uint32 -func (obj *bgpSrteSegmentJTypeSubTlv) HasRemoteInterfaceId() bool { - return obj.obj.RemoteInterfaceId != nil +// PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixIpv4AddressCounter is ipv4 counter pattern +type PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixIpv4AddressCounter interface { + Validation + // Msg marshals PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixIpv4AddressCounter to protobuf object *otg.PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixIpv4AddressCounter + // and doesn't set defaults + Msg() *otg.PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixIpv4AddressCounter + // SetMsg unmarshals PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixIpv4AddressCounter from protobuf object *otg.PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixIpv4AddressCounter + // and doesn't set defaults + SetMsg(*otg.PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixIpv4AddressCounter) PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixIpv4AddressCounter + // ToProto marshals PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixIpv4AddressCounter to protobuf object *otg.PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixIpv4AddressCounter + ToProto() (*otg.PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixIpv4AddressCounter, error) + // ToPbText marshals PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixIpv4AddressCounter to protobuf text + ToPbText() (string, error) + // ToYaml marshals PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixIpv4AddressCounter to YAML text + ToYaml() (string, error) + // ToJson marshals PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixIpv4AddressCounter to JSON text + ToJson() (string, error) + // FromProto unmarshals PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixIpv4AddressCounter from protobuf object *otg.PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixIpv4AddressCounter + FromProto(msg *otg.PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixIpv4AddressCounter) (PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixIpv4AddressCounter, error) + // FromPbText unmarshals PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixIpv4AddressCounter from protobuf text + FromPbText(value string) error + // FromYaml unmarshals PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixIpv4AddressCounter from YAML text + FromYaml(value string) error + // FromJson unmarshals PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixIpv4AddressCounter from JSON text + FromJson(value string) error + // Validate validates PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixIpv4AddressCounter + Validate() error + // A stringer function + String() string + // Clones the object + Clone() (PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixIpv4AddressCounter, error) + validateToAndFrom() error + validateObj(vObj *validation, set_default bool) + setDefault() + // Start returns string, set in PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixIpv4AddressCounter. + Start() string + // SetStart assigns string provided by user to PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixIpv4AddressCounter + SetStart(value string) PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixIpv4AddressCounter + // HasStart checks if Start has been set in PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixIpv4AddressCounter + HasStart() bool + // Step returns string, set in PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixIpv4AddressCounter. + Step() string + // SetStep assigns string provided by user to PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixIpv4AddressCounter + SetStep(value string) PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixIpv4AddressCounter + // HasStep checks if Step has been set in PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixIpv4AddressCounter + HasStep() bool + // Count returns uint32, set in PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixIpv4AddressCounter. + Count() uint32 + // SetCount assigns uint32 provided by user to PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixIpv4AddressCounter + SetCount(value uint32) PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixIpv4AddressCounter + // HasCount checks if Count has been set in PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixIpv4AddressCounter + HasCount() bool } -// Local Interface ID: The Interface Index as defined in [RFC8664]. -// SetRemoteInterfaceId sets the uint32 value in the BgpSrteSegmentJTypeSubTlv object -func (obj *bgpSrteSegmentJTypeSubTlv) SetRemoteInterfaceId(value uint32) BgpSrteSegmentJTypeSubTlv { - - obj.obj.RemoteInterfaceId = &value - return obj -} +// description is TBD +// Start returns a string +func (obj *patternFlowRSVPPathExplicitRouteType1Ipv4PrefixIpv4AddressCounter) Start() string { -// IPv6 address representing a node. -// RemoteIpv6NodeAddress returns a string -func (obj *bgpSrteSegmentJTypeSubTlv) RemoteIpv6NodeAddress() string { + return *obj.obj.Start - return *obj.obj.RemoteIpv6NodeAddress +} +// description is TBD +// Start returns a string +func (obj *patternFlowRSVPPathExplicitRouteType1Ipv4PrefixIpv4AddressCounter) HasStart() bool { + return obj.obj.Start != nil } -// IPv6 address representing a node. -// SetRemoteIpv6NodeAddress sets the string value in the BgpSrteSegmentJTypeSubTlv object -func (obj *bgpSrteSegmentJTypeSubTlv) SetRemoteIpv6NodeAddress(value string) BgpSrteSegmentJTypeSubTlv { +// description is TBD +// SetStart sets the string value in the PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixIpv4AddressCounter object +func (obj *patternFlowRSVPPathExplicitRouteType1Ipv4PrefixIpv4AddressCounter) SetStart(value string) PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixIpv4AddressCounter { - obj.obj.RemoteIpv6NodeAddress = &value + obj.obj.Start = &value return obj } -// Optional SRv6 SID. -// Srv6Sid returns a string -func (obj *bgpSrteSegmentJTypeSubTlv) Srv6Sid() string { +// description is TBD +// Step returns a string +func (obj *patternFlowRSVPPathExplicitRouteType1Ipv4PrefixIpv4AddressCounter) Step() string { - return *obj.obj.Srv6Sid + return *obj.obj.Step } -// Optional SRv6 SID. -// Srv6Sid returns a string -func (obj *bgpSrteSegmentJTypeSubTlv) HasSrv6Sid() bool { - return obj.obj.Srv6Sid != nil +// description is TBD +// Step returns a string +func (obj *patternFlowRSVPPathExplicitRouteType1Ipv4PrefixIpv4AddressCounter) HasStep() bool { + return obj.obj.Step != nil } -// Optional SRv6 SID. -// SetSrv6Sid sets the string value in the BgpSrteSegmentJTypeSubTlv object -func (obj *bgpSrteSegmentJTypeSubTlv) SetSrv6Sid(value string) BgpSrteSegmentJTypeSubTlv { +// description is TBD +// SetStep sets the string value in the PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixIpv4AddressCounter object +func (obj *patternFlowRSVPPathExplicitRouteType1Ipv4PrefixIpv4AddressCounter) SetStep(value string) PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixIpv4AddressCounter { - obj.obj.Srv6Sid = &value + obj.obj.Step = &value return obj } -// Optional SRv6 Endpoint Behavior and SID Structure. -// Srv6SidEndpointBehavior returns a BgpSrteSRv6SIDEndpointBehaviorAndStructure -func (obj *bgpSrteSegmentJTypeSubTlv) Srv6SidEndpointBehavior() BgpSrteSRv6SIDEndpointBehaviorAndStructure { - if obj.obj.Srv6SidEndpointBehavior == nil { - obj.obj.Srv6SidEndpointBehavior = NewBgpSrteSRv6SIDEndpointBehaviorAndStructure().Msg() - } - if obj.srv6SidEndpointBehaviorHolder == nil { - obj.srv6SidEndpointBehaviorHolder = &bgpSrteSRv6SIDEndpointBehaviorAndStructure{obj: obj.obj.Srv6SidEndpointBehavior} - } - return obj.srv6SidEndpointBehaviorHolder -} +// description is TBD +// Count returns a uint32 +func (obj *patternFlowRSVPPathExplicitRouteType1Ipv4PrefixIpv4AddressCounter) Count() uint32 { + + return *obj.obj.Count -// Optional SRv6 Endpoint Behavior and SID Structure. -// Srv6SidEndpointBehavior returns a BgpSrteSRv6SIDEndpointBehaviorAndStructure -func (obj *bgpSrteSegmentJTypeSubTlv) HasSrv6SidEndpointBehavior() bool { - return obj.obj.Srv6SidEndpointBehavior != nil } -// Optional SRv6 Endpoint Behavior and SID Structure. -// SetSrv6SidEndpointBehavior sets the BgpSrteSRv6SIDEndpointBehaviorAndStructure value in the BgpSrteSegmentJTypeSubTlv object -func (obj *bgpSrteSegmentJTypeSubTlv) SetSrv6SidEndpointBehavior(value BgpSrteSRv6SIDEndpointBehaviorAndStructure) BgpSrteSegmentJTypeSubTlv { +// description is TBD +// Count returns a uint32 +func (obj *patternFlowRSVPPathExplicitRouteType1Ipv4PrefixIpv4AddressCounter) HasCount() bool { + return obj.obj.Count != nil +} - obj.srv6SidEndpointBehaviorHolder = nil - obj.obj.Srv6SidEndpointBehavior = value.Msg() +// description is TBD +// SetCount sets the uint32 value in the PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixIpv4AddressCounter object +func (obj *patternFlowRSVPPathExplicitRouteType1Ipv4PrefixIpv4AddressCounter) SetCount(value uint32) PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixIpv4AddressCounter { + obj.obj.Count = &value return obj } -func (obj *bgpSrteSegmentJTypeSubTlv) validateObj(vObj *validation, set_default bool) { +func (obj *patternFlowRSVPPathExplicitRouteType1Ipv4PrefixIpv4AddressCounter) validateObj(vObj *validation, set_default bool) { if set_default { obj.setDefault() } - if obj.obj.Flags != nil { - - err := obj.validateHex(obj.Flags()) - if err != nil { - vObj.validationErrors = append(vObj.validationErrors, fmt.Sprintf("%s %s", err.Error(), "on BgpSrteSegmentJTypeSubTlv.Flags")) - } - - } - - // LocalIpv6NodeAddress is required - if obj.obj.LocalIpv6NodeAddress == nil { - vObj.validationErrors = append(vObj.validationErrors, "LocalIpv6NodeAddress is required field on interface BgpSrteSegmentJTypeSubTlv") - } - if obj.obj.LocalIpv6NodeAddress != nil { - - err := obj.validateIpv6(obj.LocalIpv6NodeAddress()) - if err != nil { - vObj.validationErrors = append(vObj.validationErrors, fmt.Sprintf("%s %s", err.Error(), "on BgpSrteSegmentJTypeSubTlv.LocalIpv6NodeAddress")) - } - - } - - // RemoteIpv6NodeAddress is required - if obj.obj.RemoteIpv6NodeAddress == nil { - vObj.validationErrors = append(vObj.validationErrors, "RemoteIpv6NodeAddress is required field on interface BgpSrteSegmentJTypeSubTlv") - } - if obj.obj.RemoteIpv6NodeAddress != nil { + if obj.obj.Start != nil { - err := obj.validateIpv6(obj.RemoteIpv6NodeAddress()) + err := obj.validateIpv4(obj.Start()) if err != nil { - vObj.validationErrors = append(vObj.validationErrors, fmt.Sprintf("%s %s", err.Error(), "on BgpSrteSegmentJTypeSubTlv.RemoteIpv6NodeAddress")) + vObj.validationErrors = append(vObj.validationErrors, fmt.Sprintf("%s %s", err.Error(), "on PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixIpv4AddressCounter.Start")) } } - if obj.obj.Srv6Sid != nil { + if obj.obj.Step != nil { - err := obj.validateIpv6(obj.Srv6Sid()) + err := obj.validateIpv4(obj.Step()) if err != nil { - vObj.validationErrors = append(vObj.validationErrors, fmt.Sprintf("%s %s", err.Error(), "on BgpSrteSegmentJTypeSubTlv.Srv6Sid")) + vObj.validationErrors = append(vObj.validationErrors, fmt.Sprintf("%s %s", err.Error(), "on PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixIpv4AddressCounter.Step")) } } - if obj.obj.Srv6SidEndpointBehavior != nil { - - obj.Srv6SidEndpointBehavior().validateObj(vObj, set_default) - } - } -func (obj *bgpSrteSegmentJTypeSubTlv) setDefault() { - if obj.obj.SrAlgorithm == nil { - obj.SetSrAlgorithm(0) +func (obj *patternFlowRSVPPathExplicitRouteType1Ipv4PrefixIpv4AddressCounter) setDefault() { + if obj.obj.Start == nil { + obj.SetStart("0.0.0.0") } - if obj.obj.LocalInterfaceId == nil { - obj.SetLocalInterfaceId(0) + if obj.obj.Step == nil { + obj.SetStep("0.0.0.1") } - if obj.obj.RemoteInterfaceId == nil { - obj.SetRemoteInterfaceId(0) + if obj.obj.Count == nil { + obj.SetCount(1) } } -// ***** BgpSrteSegmentKTypeSubTlv ***** -type bgpSrteSegmentKTypeSubTlv struct { +// ***** PatternFlowRSVPPathExplicitRouteType1FourByteASNumberLBitCounter ***** +type patternFlowRSVPPathExplicitRouteType1FourByteASNumberLBitCounter struct { validation - obj *otg.BgpSrteSegmentKTypeSubTlv - srv6SidEndpointBehaviorHolder BgpSrteSRv6SIDEndpointBehaviorAndStructure + obj *otg.PatternFlowRSVPPathExplicitRouteType1FourByteASNumberLBitCounter } -func NewBgpSrteSegmentKTypeSubTlv() BgpSrteSegmentKTypeSubTlv { - obj := bgpSrteSegmentKTypeSubTlv{obj: &otg.BgpSrteSegmentKTypeSubTlv{}} +func NewPatternFlowRSVPPathExplicitRouteType1FourByteASNumberLBitCounter() PatternFlowRSVPPathExplicitRouteType1FourByteASNumberLBitCounter { + obj := patternFlowRSVPPathExplicitRouteType1FourByteASNumberLBitCounter{obj: &otg.PatternFlowRSVPPathExplicitRouteType1FourByteASNumberLBitCounter{}} obj.setDefault() return &obj } -func (obj *bgpSrteSegmentKTypeSubTlv) Msg() *otg.BgpSrteSegmentKTypeSubTlv { +func (obj *patternFlowRSVPPathExplicitRouteType1FourByteASNumberLBitCounter) Msg() *otg.PatternFlowRSVPPathExplicitRouteType1FourByteASNumberLBitCounter { return obj.obj } -func (obj *bgpSrteSegmentKTypeSubTlv) SetMsg(msg *otg.BgpSrteSegmentKTypeSubTlv) BgpSrteSegmentKTypeSubTlv { - obj.setNil() +func (obj *patternFlowRSVPPathExplicitRouteType1FourByteASNumberLBitCounter) SetMsg(msg *otg.PatternFlowRSVPPathExplicitRouteType1FourByteASNumberLBitCounter) PatternFlowRSVPPathExplicitRouteType1FourByteASNumberLBitCounter { + proto.Merge(obj.obj, msg) return obj } -func (obj *bgpSrteSegmentKTypeSubTlv) ToProto() (*otg.BgpSrteSegmentKTypeSubTlv, error) { +func (obj *patternFlowRSVPPathExplicitRouteType1FourByteASNumberLBitCounter) ToProto() (*otg.PatternFlowRSVPPathExplicitRouteType1FourByteASNumberLBitCounter, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -321391,7 +368435,7 @@ func (obj *bgpSrteSegmentKTypeSubTlv) ToProto() (*otg.BgpSrteSegmentKTypeSubTlv, return obj.Msg(), nil } -func (obj *bgpSrteSegmentKTypeSubTlv) FromProto(msg *otg.BgpSrteSegmentKTypeSubTlv) (BgpSrteSegmentKTypeSubTlv, error) { +func (obj *patternFlowRSVPPathExplicitRouteType1FourByteASNumberLBitCounter) FromProto(msg *otg.PatternFlowRSVPPathExplicitRouteType1FourByteASNumberLBitCounter) (PatternFlowRSVPPathExplicitRouteType1FourByteASNumberLBitCounter, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -321400,7 +368444,7 @@ func (obj *bgpSrteSegmentKTypeSubTlv) FromProto(msg *otg.BgpSrteSegmentKTypeSubT return newObj, nil } -func (obj *bgpSrteSegmentKTypeSubTlv) ToPbText() (string, error) { +func (obj *patternFlowRSVPPathExplicitRouteType1FourByteASNumberLBitCounter) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -321412,12 +368456,12 @@ func (obj *bgpSrteSegmentKTypeSubTlv) ToPbText() (string, error) { return string(protoMarshal), nil } -func (obj *bgpSrteSegmentKTypeSubTlv) FromPbText(value string) error { +func (obj *patternFlowRSVPPathExplicitRouteType1FourByteASNumberLBitCounter) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj } - obj.setNil() + vErr := obj.validateToAndFrom() if vErr != nil { return vErr @@ -321425,7 +368469,7 @@ func (obj *bgpSrteSegmentKTypeSubTlv) FromPbText(value string) error { return retObj } -func (obj *bgpSrteSegmentKTypeSubTlv) ToYaml() (string, error) { +func (obj *patternFlowRSVPPathExplicitRouteType1FourByteASNumberLBitCounter) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -321446,7 +368490,7 @@ func (obj *bgpSrteSegmentKTypeSubTlv) ToYaml() (string, error) { return string(data), nil } -func (obj *bgpSrteSegmentKTypeSubTlv) FromYaml(value string) error { +func (obj *patternFlowRSVPPathExplicitRouteType1FourByteASNumberLBitCounter) FromYaml(value string) error { if value == "" { value = "{}" } @@ -321463,7 +368507,7 @@ func (obj *bgpSrteSegmentKTypeSubTlv) FromYaml(value string) error { return fmt.Errorf("unmarshal error %s", strings.Replace( uError.Error(), "\u00a0", " ", -1)[7:]) } - obj.setNil() + vErr := obj.validateToAndFrom() if vErr != nil { return vErr @@ -321471,7 +368515,7 @@ func (obj *bgpSrteSegmentKTypeSubTlv) FromYaml(value string) error { return nil } -func (obj *bgpSrteSegmentKTypeSubTlv) ToJson() (string, error) { +func (obj *patternFlowRSVPPathExplicitRouteType1FourByteASNumberLBitCounter) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -321489,7 +368533,7 @@ func (obj *bgpSrteSegmentKTypeSubTlv) ToJson() (string, error) { return string(data), nil } -func (obj *bgpSrteSegmentKTypeSubTlv) FromJson(value string) error { +func (obj *patternFlowRSVPPathExplicitRouteType1FourByteASNumberLBitCounter) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -321502,7 +368546,7 @@ func (obj *bgpSrteSegmentKTypeSubTlv) FromJson(value string) error { return fmt.Errorf("unmarshal error %s", strings.Replace( uError.Error(), "\u00a0", " ", -1)[7:]) } - obj.setNil() + err := obj.validateToAndFrom() if err != nil { return err @@ -321510,19 +368554,19 @@ func (obj *bgpSrteSegmentKTypeSubTlv) FromJson(value string) error { return nil } -func (obj *bgpSrteSegmentKTypeSubTlv) validateToAndFrom() error { +func (obj *patternFlowRSVPPathExplicitRouteType1FourByteASNumberLBitCounter) validateToAndFrom() error { // emptyVars() obj.validateObj(&obj.validation, true) return obj.validationResult() } -func (obj *bgpSrteSegmentKTypeSubTlv) Validate() error { +func (obj *patternFlowRSVPPathExplicitRouteType1FourByteASNumberLBitCounter) Validate() error { // emptyVars() obj.validateObj(&obj.validation, false) return obj.validationResult() } -func (obj *bgpSrteSegmentKTypeSubTlv) String() string { +func (obj *patternFlowRSVPPathExplicitRouteType1FourByteASNumberLBitCounter) String() string { str, err := obj.ToYaml() if err != nil { return err.Error() @@ -321530,12 +368574,12 @@ func (obj *bgpSrteSegmentKTypeSubTlv) String() string { return str } -func (obj *bgpSrteSegmentKTypeSubTlv) Clone() (BgpSrteSegmentKTypeSubTlv, error) { +func (obj *patternFlowRSVPPathExplicitRouteType1FourByteASNumberLBitCounter) Clone() (PatternFlowRSVPPathExplicitRouteType1FourByteASNumberLBitCounter, error) { vErr := obj.Validate() if vErr != nil { return nil, vErr } - newObj := NewBgpSrteSegmentKTypeSubTlv() + newObj := NewPatternFlowRSVPPathExplicitRouteType1FourByteASNumberLBitCounter() data, err := proto.Marshal(obj.Msg()) if err != nil { return nil, err @@ -321547,296 +368591,199 @@ func (obj *bgpSrteSegmentKTypeSubTlv) Clone() (BgpSrteSegmentKTypeSubTlv, error) return newObj, nil } -func (obj *bgpSrteSegmentKTypeSubTlv) setNil() { - obj.srv6SidEndpointBehaviorHolder = nil - obj.validationErrors = nil - obj.warnings = nil - obj.constraints = make(map[string]map[string]Constraints) -} - -// BgpSrteSegmentKTypeSubTlv is type K: IPv6 Local and Remote addresses for SRv6 with optional SID. -type BgpSrteSegmentKTypeSubTlv interface { +// PatternFlowRSVPPathExplicitRouteType1FourByteASNumberLBitCounter is integer counter pattern +type PatternFlowRSVPPathExplicitRouteType1FourByteASNumberLBitCounter interface { Validation - // Msg marshals BgpSrteSegmentKTypeSubTlv to protobuf object *otg.BgpSrteSegmentKTypeSubTlv + // Msg marshals PatternFlowRSVPPathExplicitRouteType1FourByteASNumberLBitCounter to protobuf object *otg.PatternFlowRSVPPathExplicitRouteType1FourByteASNumberLBitCounter // and doesn't set defaults - Msg() *otg.BgpSrteSegmentKTypeSubTlv - // SetMsg unmarshals BgpSrteSegmentKTypeSubTlv from protobuf object *otg.BgpSrteSegmentKTypeSubTlv + Msg() *otg.PatternFlowRSVPPathExplicitRouteType1FourByteASNumberLBitCounter + // SetMsg unmarshals PatternFlowRSVPPathExplicitRouteType1FourByteASNumberLBitCounter from protobuf object *otg.PatternFlowRSVPPathExplicitRouteType1FourByteASNumberLBitCounter // and doesn't set defaults - SetMsg(*otg.BgpSrteSegmentKTypeSubTlv) BgpSrteSegmentKTypeSubTlv - // ToProto marshals BgpSrteSegmentKTypeSubTlv to protobuf object *otg.BgpSrteSegmentKTypeSubTlv - ToProto() (*otg.BgpSrteSegmentKTypeSubTlv, error) - // ToPbText marshals BgpSrteSegmentKTypeSubTlv to protobuf text + SetMsg(*otg.PatternFlowRSVPPathExplicitRouteType1FourByteASNumberLBitCounter) PatternFlowRSVPPathExplicitRouteType1FourByteASNumberLBitCounter + // ToProto marshals PatternFlowRSVPPathExplicitRouteType1FourByteASNumberLBitCounter to protobuf object *otg.PatternFlowRSVPPathExplicitRouteType1FourByteASNumberLBitCounter + ToProto() (*otg.PatternFlowRSVPPathExplicitRouteType1FourByteASNumberLBitCounter, error) + // ToPbText marshals PatternFlowRSVPPathExplicitRouteType1FourByteASNumberLBitCounter to protobuf text ToPbText() (string, error) - // ToYaml marshals BgpSrteSegmentKTypeSubTlv to YAML text + // ToYaml marshals PatternFlowRSVPPathExplicitRouteType1FourByteASNumberLBitCounter to YAML text ToYaml() (string, error) - // ToJson marshals BgpSrteSegmentKTypeSubTlv to JSON text + // ToJson marshals PatternFlowRSVPPathExplicitRouteType1FourByteASNumberLBitCounter to JSON text ToJson() (string, error) - // FromProto unmarshals BgpSrteSegmentKTypeSubTlv from protobuf object *otg.BgpSrteSegmentKTypeSubTlv - FromProto(msg *otg.BgpSrteSegmentKTypeSubTlv) (BgpSrteSegmentKTypeSubTlv, error) - // FromPbText unmarshals BgpSrteSegmentKTypeSubTlv from protobuf text + // FromProto unmarshals PatternFlowRSVPPathExplicitRouteType1FourByteASNumberLBitCounter from protobuf object *otg.PatternFlowRSVPPathExplicitRouteType1FourByteASNumberLBitCounter + FromProto(msg *otg.PatternFlowRSVPPathExplicitRouteType1FourByteASNumberLBitCounter) (PatternFlowRSVPPathExplicitRouteType1FourByteASNumberLBitCounter, error) + // FromPbText unmarshals PatternFlowRSVPPathExplicitRouteType1FourByteASNumberLBitCounter from protobuf text FromPbText(value string) error - // FromYaml unmarshals BgpSrteSegmentKTypeSubTlv from YAML text + // FromYaml unmarshals PatternFlowRSVPPathExplicitRouteType1FourByteASNumberLBitCounter from YAML text FromYaml(value string) error - // FromJson unmarshals BgpSrteSegmentKTypeSubTlv from JSON text + // FromJson unmarshals PatternFlowRSVPPathExplicitRouteType1FourByteASNumberLBitCounter from JSON text FromJson(value string) error - // Validate validates BgpSrteSegmentKTypeSubTlv + // Validate validates PatternFlowRSVPPathExplicitRouteType1FourByteASNumberLBitCounter Validate() error // A stringer function String() string // Clones the object - Clone() (BgpSrteSegmentKTypeSubTlv, error) + Clone() (PatternFlowRSVPPathExplicitRouteType1FourByteASNumberLBitCounter, error) validateToAndFrom() error validateObj(vObj *validation, set_default bool) setDefault() - // Flags returns string, set in BgpSrteSegmentKTypeSubTlv. - Flags() string - // SetFlags assigns string provided by user to BgpSrteSegmentKTypeSubTlv - SetFlags(value string) BgpSrteSegmentKTypeSubTlv - // HasFlags checks if Flags has been set in BgpSrteSegmentKTypeSubTlv - HasFlags() bool - // SrAlgorithm returns uint32, set in BgpSrteSegmentKTypeSubTlv. - SrAlgorithm() uint32 - // SetSrAlgorithm assigns uint32 provided by user to BgpSrteSegmentKTypeSubTlv - SetSrAlgorithm(value uint32) BgpSrteSegmentKTypeSubTlv - // HasSrAlgorithm checks if SrAlgorithm has been set in BgpSrteSegmentKTypeSubTlv - HasSrAlgorithm() bool - // LocalIpv6Address returns string, set in BgpSrteSegmentKTypeSubTlv. - LocalIpv6Address() string - // SetLocalIpv6Address assigns string provided by user to BgpSrteSegmentKTypeSubTlv - SetLocalIpv6Address(value string) BgpSrteSegmentKTypeSubTlv - // RemoteIpv6Address returns string, set in BgpSrteSegmentKTypeSubTlv. - RemoteIpv6Address() string - // SetRemoteIpv6Address assigns string provided by user to BgpSrteSegmentKTypeSubTlv - SetRemoteIpv6Address(value string) BgpSrteSegmentKTypeSubTlv - // Srv6Sid returns string, set in BgpSrteSegmentKTypeSubTlv. - Srv6Sid() string - // SetSrv6Sid assigns string provided by user to BgpSrteSegmentKTypeSubTlv - SetSrv6Sid(value string) BgpSrteSegmentKTypeSubTlv - // HasSrv6Sid checks if Srv6Sid has been set in BgpSrteSegmentKTypeSubTlv - HasSrv6Sid() bool - // Srv6SidEndpointBehavior returns BgpSrteSRv6SIDEndpointBehaviorAndStructure, set in BgpSrteSegmentKTypeSubTlv. - // BgpSrteSRv6SIDEndpointBehaviorAndStructure is configuration for SRv6 Endpoint Behavior and SID Structure. Its optional. Summation of lengths for Locator Block, Locator Node, Function, and Argument MUST be less than or equal to 128. - Srv6SidEndpointBehavior() BgpSrteSRv6SIDEndpointBehaviorAndStructure - // SetSrv6SidEndpointBehavior assigns BgpSrteSRv6SIDEndpointBehaviorAndStructure provided by user to BgpSrteSegmentKTypeSubTlv. - // BgpSrteSRv6SIDEndpointBehaviorAndStructure is configuration for SRv6 Endpoint Behavior and SID Structure. Its optional. Summation of lengths for Locator Block, Locator Node, Function, and Argument MUST be less than or equal to 128. - SetSrv6SidEndpointBehavior(value BgpSrteSRv6SIDEndpointBehaviorAndStructure) BgpSrteSegmentKTypeSubTlv - // HasSrv6SidEndpointBehavior checks if Srv6SidEndpointBehavior has been set in BgpSrteSegmentKTypeSubTlv - HasSrv6SidEndpointBehavior() bool - setNil() -} - -// One octet bitmap for flags including V-Flag, A-Flag, S-Flag, B-Flag etc. as defined in https://datatracker.ietf.org/doc/html/draft-ietf-idr-segment-routing-te-policy-13#section-2.4.4.2.12 -// Flags returns a string -func (obj *bgpSrteSegmentKTypeSubTlv) Flags() string { - - return *obj.obj.Flags - -} - -// One octet bitmap for flags including V-Flag, A-Flag, S-Flag, B-Flag etc. as defined in https://datatracker.ietf.org/doc/html/draft-ietf-idr-segment-routing-te-policy-13#section-2.4.4.2.12 -// Flags returns a string -func (obj *bgpSrteSegmentKTypeSubTlv) HasFlags() bool { - return obj.obj.Flags != nil -} - -// One octet bitmap for flags including V-Flag, A-Flag, S-Flag, B-Flag etc. as defined in https://datatracker.ietf.org/doc/html/draft-ietf-idr-segment-routing-te-policy-13#section-2.4.4.2.12 -// SetFlags sets the string value in the BgpSrteSegmentKTypeSubTlv object -func (obj *bgpSrteSegmentKTypeSubTlv) SetFlags(value string) BgpSrteSegmentKTypeSubTlv { - - obj.obj.Flags = &value - return obj + // Start returns uint32, set in PatternFlowRSVPPathExplicitRouteType1FourByteASNumberLBitCounter. + Start() uint32 + // SetStart assigns uint32 provided by user to PatternFlowRSVPPathExplicitRouteType1FourByteASNumberLBitCounter + SetStart(value uint32) PatternFlowRSVPPathExplicitRouteType1FourByteASNumberLBitCounter + // HasStart checks if Start has been set in PatternFlowRSVPPathExplicitRouteType1FourByteASNumberLBitCounter + HasStart() bool + // Step returns uint32, set in PatternFlowRSVPPathExplicitRouteType1FourByteASNumberLBitCounter. + Step() uint32 + // SetStep assigns uint32 provided by user to PatternFlowRSVPPathExplicitRouteType1FourByteASNumberLBitCounter + SetStep(value uint32) PatternFlowRSVPPathExplicitRouteType1FourByteASNumberLBitCounter + // HasStep checks if Step has been set in PatternFlowRSVPPathExplicitRouteType1FourByteASNumberLBitCounter + HasStep() bool + // Count returns uint32, set in PatternFlowRSVPPathExplicitRouteType1FourByteASNumberLBitCounter. + Count() uint32 + // SetCount assigns uint32 provided by user to PatternFlowRSVPPathExplicitRouteType1FourByteASNumberLBitCounter + SetCount(value uint32) PatternFlowRSVPPathExplicitRouteType1FourByteASNumberLBitCounter + // HasCount checks if Count has been set in PatternFlowRSVPPathExplicitRouteType1FourByteASNumberLBitCounter + HasCount() bool } -// SR Algorithm identifier when A-Flag in on. -// SrAlgorithm returns a uint32 -func (obj *bgpSrteSegmentKTypeSubTlv) SrAlgorithm() uint32 { +// description is TBD +// Start returns a uint32 +func (obj *patternFlowRSVPPathExplicitRouteType1FourByteASNumberLBitCounter) Start() uint32 { - return *obj.obj.SrAlgorithm + return *obj.obj.Start } -// SR Algorithm identifier when A-Flag in on. -// SrAlgorithm returns a uint32 -func (obj *bgpSrteSegmentKTypeSubTlv) HasSrAlgorithm() bool { - return obj.obj.SrAlgorithm != nil +// description is TBD +// Start returns a uint32 +func (obj *patternFlowRSVPPathExplicitRouteType1FourByteASNumberLBitCounter) HasStart() bool { + return obj.obj.Start != nil } -// SR Algorithm identifier when A-Flag in on. -// SetSrAlgorithm sets the uint32 value in the BgpSrteSegmentKTypeSubTlv object -func (obj *bgpSrteSegmentKTypeSubTlv) SetSrAlgorithm(value uint32) BgpSrteSegmentKTypeSubTlv { +// description is TBD +// SetStart sets the uint32 value in the PatternFlowRSVPPathExplicitRouteType1FourByteASNumberLBitCounter object +func (obj *patternFlowRSVPPathExplicitRouteType1FourByteASNumberLBitCounter) SetStart(value uint32) PatternFlowRSVPPathExplicitRouteType1FourByteASNumberLBitCounter { - obj.obj.SrAlgorithm = &value + obj.obj.Start = &value return obj } -// IPv6 address representing a node. -// LocalIpv6Address returns a string -func (obj *bgpSrteSegmentKTypeSubTlv) LocalIpv6Address() string { - - return *obj.obj.LocalIpv6Address - -} +// description is TBD +// Step returns a uint32 +func (obj *patternFlowRSVPPathExplicitRouteType1FourByteASNumberLBitCounter) Step() uint32 { -// IPv6 address representing a node. -// SetLocalIpv6Address sets the string value in the BgpSrteSegmentKTypeSubTlv object -func (obj *bgpSrteSegmentKTypeSubTlv) SetLocalIpv6Address(value string) BgpSrteSegmentKTypeSubTlv { + return *obj.obj.Step - obj.obj.LocalIpv6Address = &value - return obj } -// IPv6 address representing a node. -// RemoteIpv6Address returns a string -func (obj *bgpSrteSegmentKTypeSubTlv) RemoteIpv6Address() string { - - return *obj.obj.RemoteIpv6Address - +// description is TBD +// Step returns a uint32 +func (obj *patternFlowRSVPPathExplicitRouteType1FourByteASNumberLBitCounter) HasStep() bool { + return obj.obj.Step != nil } -// IPv6 address representing a node. -// SetRemoteIpv6Address sets the string value in the BgpSrteSegmentKTypeSubTlv object -func (obj *bgpSrteSegmentKTypeSubTlv) SetRemoteIpv6Address(value string) BgpSrteSegmentKTypeSubTlv { +// description is TBD +// SetStep sets the uint32 value in the PatternFlowRSVPPathExplicitRouteType1FourByteASNumberLBitCounter object +func (obj *patternFlowRSVPPathExplicitRouteType1FourByteASNumberLBitCounter) SetStep(value uint32) PatternFlowRSVPPathExplicitRouteType1FourByteASNumberLBitCounter { - obj.obj.RemoteIpv6Address = &value + obj.obj.Step = &value return obj } -// Optional SRv6 SID. -// Srv6Sid returns a string -func (obj *bgpSrteSegmentKTypeSubTlv) Srv6Sid() string { - - return *obj.obj.Srv6Sid - -} - -// Optional SRv6 SID. -// Srv6Sid returns a string -func (obj *bgpSrteSegmentKTypeSubTlv) HasSrv6Sid() bool { - return obj.obj.Srv6Sid != nil -} - -// Optional SRv6 SID. -// SetSrv6Sid sets the string value in the BgpSrteSegmentKTypeSubTlv object -func (obj *bgpSrteSegmentKTypeSubTlv) SetSrv6Sid(value string) BgpSrteSegmentKTypeSubTlv { +// description is TBD +// Count returns a uint32 +func (obj *patternFlowRSVPPathExplicitRouteType1FourByteASNumberLBitCounter) Count() uint32 { - obj.obj.Srv6Sid = &value - return obj -} + return *obj.obj.Count -// Optional SRv6 Endpoint Behavior and SID Structure. -// Srv6SidEndpointBehavior returns a BgpSrteSRv6SIDEndpointBehaviorAndStructure -func (obj *bgpSrteSegmentKTypeSubTlv) Srv6SidEndpointBehavior() BgpSrteSRv6SIDEndpointBehaviorAndStructure { - if obj.obj.Srv6SidEndpointBehavior == nil { - obj.obj.Srv6SidEndpointBehavior = NewBgpSrteSRv6SIDEndpointBehaviorAndStructure().Msg() - } - if obj.srv6SidEndpointBehaviorHolder == nil { - obj.srv6SidEndpointBehaviorHolder = &bgpSrteSRv6SIDEndpointBehaviorAndStructure{obj: obj.obj.Srv6SidEndpointBehavior} - } - return obj.srv6SidEndpointBehaviorHolder } -// Optional SRv6 Endpoint Behavior and SID Structure. -// Srv6SidEndpointBehavior returns a BgpSrteSRv6SIDEndpointBehaviorAndStructure -func (obj *bgpSrteSegmentKTypeSubTlv) HasSrv6SidEndpointBehavior() bool { - return obj.obj.Srv6SidEndpointBehavior != nil +// description is TBD +// Count returns a uint32 +func (obj *patternFlowRSVPPathExplicitRouteType1FourByteASNumberLBitCounter) HasCount() bool { + return obj.obj.Count != nil } -// Optional SRv6 Endpoint Behavior and SID Structure. -// SetSrv6SidEndpointBehavior sets the BgpSrteSRv6SIDEndpointBehaviorAndStructure value in the BgpSrteSegmentKTypeSubTlv object -func (obj *bgpSrteSegmentKTypeSubTlv) SetSrv6SidEndpointBehavior(value BgpSrteSRv6SIDEndpointBehaviorAndStructure) BgpSrteSegmentKTypeSubTlv { - - obj.srv6SidEndpointBehaviorHolder = nil - obj.obj.Srv6SidEndpointBehavior = value.Msg() +// description is TBD +// SetCount sets the uint32 value in the PatternFlowRSVPPathExplicitRouteType1FourByteASNumberLBitCounter object +func (obj *patternFlowRSVPPathExplicitRouteType1FourByteASNumberLBitCounter) SetCount(value uint32) PatternFlowRSVPPathExplicitRouteType1FourByteASNumberLBitCounter { + obj.obj.Count = &value return obj } -func (obj *bgpSrteSegmentKTypeSubTlv) validateObj(vObj *validation, set_default bool) { +func (obj *patternFlowRSVPPathExplicitRouteType1FourByteASNumberLBitCounter) validateObj(vObj *validation, set_default bool) { if set_default { obj.setDefault() } - if obj.obj.Flags != nil { + if obj.obj.Start != nil { - err := obj.validateHex(obj.Flags()) - if err != nil { - vObj.validationErrors = append(vObj.validationErrors, fmt.Sprintf("%s %s", err.Error(), "on BgpSrteSegmentKTypeSubTlv.Flags")) + if *obj.obj.Start > 1 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("0 <= PatternFlowRSVPPathExplicitRouteType1FourByteASNumberLBitCounter.Start <= 1 but Got %d", *obj.obj.Start)) } } - // LocalIpv6Address is required - if obj.obj.LocalIpv6Address == nil { - vObj.validationErrors = append(vObj.validationErrors, "LocalIpv6Address is required field on interface BgpSrteSegmentKTypeSubTlv") - } - if obj.obj.LocalIpv6Address != nil { + if obj.obj.Step != nil { - err := obj.validateIpv6(obj.LocalIpv6Address()) - if err != nil { - vObj.validationErrors = append(vObj.validationErrors, fmt.Sprintf("%s %s", err.Error(), "on BgpSrteSegmentKTypeSubTlv.LocalIpv6Address")) + if *obj.obj.Step > 1 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("0 <= PatternFlowRSVPPathExplicitRouteType1FourByteASNumberLBitCounter.Step <= 1 but Got %d", *obj.obj.Step)) } } - // RemoteIpv6Address is required - if obj.obj.RemoteIpv6Address == nil { - vObj.validationErrors = append(vObj.validationErrors, "RemoteIpv6Address is required field on interface BgpSrteSegmentKTypeSubTlv") - } - if obj.obj.RemoteIpv6Address != nil { + if obj.obj.Count != nil { - err := obj.validateIpv6(obj.RemoteIpv6Address()) - if err != nil { - vObj.validationErrors = append(vObj.validationErrors, fmt.Sprintf("%s %s", err.Error(), "on BgpSrteSegmentKTypeSubTlv.RemoteIpv6Address")) + if *obj.obj.Count > 1 { + vObj.validationErrors = append( + vObj.validationErrors, + fmt.Sprintf("0 <= PatternFlowRSVPPathExplicitRouteType1FourByteASNumberLBitCounter.Count <= 1 but Got %d", *obj.obj.Count)) } } - if obj.obj.Srv6Sid != nil { - - err := obj.validateIpv6(obj.Srv6Sid()) - if err != nil { - vObj.validationErrors = append(vObj.validationErrors, fmt.Sprintf("%s %s", err.Error(), "on BgpSrteSegmentKTypeSubTlv.Srv6Sid")) - } +} +func (obj *patternFlowRSVPPathExplicitRouteType1FourByteASNumberLBitCounter) setDefault() { + if obj.obj.Start == nil { + obj.SetStart(0) } - - if obj.obj.Srv6SidEndpointBehavior != nil { - - obj.Srv6SidEndpointBehavior().validateObj(vObj, set_default) + if obj.obj.Step == nil { + obj.SetStep(1) } - -} - -func (obj *bgpSrteSegmentKTypeSubTlv) setDefault() { - if obj.obj.SrAlgorithm == nil { - obj.SetSrAlgorithm(0) + if obj.obj.Count == nil { + obj.SetCount(1) } } -// ***** MACRouteAddress ***** -type mACRouteAddress struct { +// ***** PatternFlowRSVPPathExplicitRouteType1FourByteASNumberReservedCounter ***** +type patternFlowRSVPPathExplicitRouteType1FourByteASNumberReservedCounter struct { validation - obj *otg.MACRouteAddress + obj *otg.PatternFlowRSVPPathExplicitRouteType1FourByteASNumberReservedCounter } -func NewMACRouteAddress() MACRouteAddress { - obj := mACRouteAddress{obj: &otg.MACRouteAddress{}} +func NewPatternFlowRSVPPathExplicitRouteType1FourByteASNumberReservedCounter() PatternFlowRSVPPathExplicitRouteType1FourByteASNumberReservedCounter { + obj := patternFlowRSVPPathExplicitRouteType1FourByteASNumberReservedCounter{obj: &otg.PatternFlowRSVPPathExplicitRouteType1FourByteASNumberReservedCounter{}} obj.setDefault() return &obj } -func (obj *mACRouteAddress) Msg() *otg.MACRouteAddress { +func (obj *patternFlowRSVPPathExplicitRouteType1FourByteASNumberReservedCounter) Msg() *otg.PatternFlowRSVPPathExplicitRouteType1FourByteASNumberReservedCounter { return obj.obj } -func (obj *mACRouteAddress) SetMsg(msg *otg.MACRouteAddress) MACRouteAddress { +func (obj *patternFlowRSVPPathExplicitRouteType1FourByteASNumberReservedCounter) SetMsg(msg *otg.PatternFlowRSVPPathExplicitRouteType1FourByteASNumberReservedCounter) PatternFlowRSVPPathExplicitRouteType1FourByteASNumberReservedCounter { proto.Merge(obj.obj, msg) return obj } -func (obj *mACRouteAddress) ToProto() (*otg.MACRouteAddress, error) { +func (obj *patternFlowRSVPPathExplicitRouteType1FourByteASNumberReservedCounter) ToProto() (*otg.PatternFlowRSVPPathExplicitRouteType1FourByteASNumberReservedCounter, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -321844,7 +368791,7 @@ func (obj *mACRouteAddress) ToProto() (*otg.MACRouteAddress, error) { return obj.Msg(), nil } -func (obj *mACRouteAddress) FromProto(msg *otg.MACRouteAddress) (MACRouteAddress, error) { +func (obj *patternFlowRSVPPathExplicitRouteType1FourByteASNumberReservedCounter) FromProto(msg *otg.PatternFlowRSVPPathExplicitRouteType1FourByteASNumberReservedCounter) (PatternFlowRSVPPathExplicitRouteType1FourByteASNumberReservedCounter, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -321853,7 +368800,7 @@ func (obj *mACRouteAddress) FromProto(msg *otg.MACRouteAddress) (MACRouteAddress return newObj, nil } -func (obj *mACRouteAddress) ToPbText() (string, error) { +func (obj *patternFlowRSVPPathExplicitRouteType1FourByteASNumberReservedCounter) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -321865,7 +368812,7 @@ func (obj *mACRouteAddress) ToPbText() (string, error) { return string(protoMarshal), nil } -func (obj *mACRouteAddress) FromPbText(value string) error { +func (obj *patternFlowRSVPPathExplicitRouteType1FourByteASNumberReservedCounter) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj @@ -321878,7 +368825,7 @@ func (obj *mACRouteAddress) FromPbText(value string) error { return retObj } -func (obj *mACRouteAddress) ToYaml() (string, error) { +func (obj *patternFlowRSVPPathExplicitRouteType1FourByteASNumberReservedCounter) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -321899,7 +368846,7 @@ func (obj *mACRouteAddress) ToYaml() (string, error) { return string(data), nil } -func (obj *mACRouteAddress) FromYaml(value string) error { +func (obj *patternFlowRSVPPathExplicitRouteType1FourByteASNumberReservedCounter) FromYaml(value string) error { if value == "" { value = "{}" } @@ -321924,7 +368871,7 @@ func (obj *mACRouteAddress) FromYaml(value string) error { return nil } -func (obj *mACRouteAddress) ToJson() (string, error) { +func (obj *patternFlowRSVPPathExplicitRouteType1FourByteASNumberReservedCounter) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -321942,7 +368889,7 @@ func (obj *mACRouteAddress) ToJson() (string, error) { return string(data), nil } -func (obj *mACRouteAddress) FromJson(value string) error { +func (obj *patternFlowRSVPPathExplicitRouteType1FourByteASNumberReservedCounter) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -321963,19 +368910,19 @@ func (obj *mACRouteAddress) FromJson(value string) error { return nil } -func (obj *mACRouteAddress) validateToAndFrom() error { +func (obj *patternFlowRSVPPathExplicitRouteType1FourByteASNumberReservedCounter) validateToAndFrom() error { // emptyVars() obj.validateObj(&obj.validation, true) return obj.validationResult() } -func (obj *mACRouteAddress) Validate() error { +func (obj *patternFlowRSVPPathExplicitRouteType1FourByteASNumberReservedCounter) Validate() error { // emptyVars() obj.validateObj(&obj.validation, false) return obj.validationResult() } -func (obj *mACRouteAddress) String() string { +func (obj *patternFlowRSVPPathExplicitRouteType1FourByteASNumberReservedCounter) String() string { str, err := obj.ToYaml() if err != nil { return err.Error() @@ -321983,12 +368930,12 @@ func (obj *mACRouteAddress) String() string { return str } -func (obj *mACRouteAddress) Clone() (MACRouteAddress, error) { +func (obj *patternFlowRSVPPathExplicitRouteType1FourByteASNumberReservedCounter) Clone() (PatternFlowRSVPPathExplicitRouteType1FourByteASNumberReservedCounter, error) { vErr := obj.Validate() if vErr != nil { return nil, vErr } - newObj := NewMACRouteAddress() + newObj := NewPatternFlowRSVPPathExplicitRouteType1FourByteASNumberReservedCounter() data, err := proto.Marshal(obj.Msg()) if err != nil { return nil, err @@ -322000,232 +368947,199 @@ func (obj *mACRouteAddress) Clone() (MACRouteAddress, error) { return newObj, nil } -// MACRouteAddress is a container for MAC route addresses. -type MACRouteAddress interface { +// PatternFlowRSVPPathExplicitRouteType1FourByteASNumberReservedCounter is integer counter pattern +type PatternFlowRSVPPathExplicitRouteType1FourByteASNumberReservedCounter interface { Validation - // Msg marshals MACRouteAddress to protobuf object *otg.MACRouteAddress + // Msg marshals PatternFlowRSVPPathExplicitRouteType1FourByteASNumberReservedCounter to protobuf object *otg.PatternFlowRSVPPathExplicitRouteType1FourByteASNumberReservedCounter // and doesn't set defaults - Msg() *otg.MACRouteAddress - // SetMsg unmarshals MACRouteAddress from protobuf object *otg.MACRouteAddress + Msg() *otg.PatternFlowRSVPPathExplicitRouteType1FourByteASNumberReservedCounter + // SetMsg unmarshals PatternFlowRSVPPathExplicitRouteType1FourByteASNumberReservedCounter from protobuf object *otg.PatternFlowRSVPPathExplicitRouteType1FourByteASNumberReservedCounter // and doesn't set defaults - SetMsg(*otg.MACRouteAddress) MACRouteAddress - // ToProto marshals MACRouteAddress to protobuf object *otg.MACRouteAddress - ToProto() (*otg.MACRouteAddress, error) - // ToPbText marshals MACRouteAddress to protobuf text + SetMsg(*otg.PatternFlowRSVPPathExplicitRouteType1FourByteASNumberReservedCounter) PatternFlowRSVPPathExplicitRouteType1FourByteASNumberReservedCounter + // ToProto marshals PatternFlowRSVPPathExplicitRouteType1FourByteASNumberReservedCounter to protobuf object *otg.PatternFlowRSVPPathExplicitRouteType1FourByteASNumberReservedCounter + ToProto() (*otg.PatternFlowRSVPPathExplicitRouteType1FourByteASNumberReservedCounter, error) + // ToPbText marshals PatternFlowRSVPPathExplicitRouteType1FourByteASNumberReservedCounter to protobuf text ToPbText() (string, error) - // ToYaml marshals MACRouteAddress to YAML text + // ToYaml marshals PatternFlowRSVPPathExplicitRouteType1FourByteASNumberReservedCounter to YAML text ToYaml() (string, error) - // ToJson marshals MACRouteAddress to JSON text + // ToJson marshals PatternFlowRSVPPathExplicitRouteType1FourByteASNumberReservedCounter to JSON text ToJson() (string, error) - // FromProto unmarshals MACRouteAddress from protobuf object *otg.MACRouteAddress - FromProto(msg *otg.MACRouteAddress) (MACRouteAddress, error) - // FromPbText unmarshals MACRouteAddress from protobuf text + // FromProto unmarshals PatternFlowRSVPPathExplicitRouteType1FourByteASNumberReservedCounter from protobuf object *otg.PatternFlowRSVPPathExplicitRouteType1FourByteASNumberReservedCounter + FromProto(msg *otg.PatternFlowRSVPPathExplicitRouteType1FourByteASNumberReservedCounter) (PatternFlowRSVPPathExplicitRouteType1FourByteASNumberReservedCounter, error) + // FromPbText unmarshals PatternFlowRSVPPathExplicitRouteType1FourByteASNumberReservedCounter from protobuf text FromPbText(value string) error - // FromYaml unmarshals MACRouteAddress from YAML text + // FromYaml unmarshals PatternFlowRSVPPathExplicitRouteType1FourByteASNumberReservedCounter from YAML text FromYaml(value string) error - // FromJson unmarshals MACRouteAddress from JSON text + // FromJson unmarshals PatternFlowRSVPPathExplicitRouteType1FourByteASNumberReservedCounter from JSON text FromJson(value string) error - // Validate validates MACRouteAddress + // Validate validates PatternFlowRSVPPathExplicitRouteType1FourByteASNumberReservedCounter Validate() error // A stringer function String() string // Clones the object - Clone() (MACRouteAddress, error) + Clone() (PatternFlowRSVPPathExplicitRouteType1FourByteASNumberReservedCounter, error) validateToAndFrom() error validateObj(vObj *validation, set_default bool) setDefault() - // Address returns string, set in MACRouteAddress. - Address() string - // SetAddress assigns string provided by user to MACRouteAddress - SetAddress(value string) MACRouteAddress - // Prefix returns uint32, set in MACRouteAddress. - Prefix() uint32 - // SetPrefix assigns uint32 provided by user to MACRouteAddress - SetPrefix(value uint32) MACRouteAddress - // HasPrefix checks if Prefix has been set in MACRouteAddress - HasPrefix() bool - // Count returns uint32, set in MACRouteAddress. - Count() uint32 - // SetCount assigns uint32 provided by user to MACRouteAddress - SetCount(value uint32) MACRouteAddress - // HasCount checks if Count has been set in MACRouteAddress - HasCount() bool - // Step returns uint32, set in MACRouteAddress. + // Start returns uint32, set in PatternFlowRSVPPathExplicitRouteType1FourByteASNumberReservedCounter. + Start() uint32 + // SetStart assigns uint32 provided by user to PatternFlowRSVPPathExplicitRouteType1FourByteASNumberReservedCounter + SetStart(value uint32) PatternFlowRSVPPathExplicitRouteType1FourByteASNumberReservedCounter + // HasStart checks if Start has been set in PatternFlowRSVPPathExplicitRouteType1FourByteASNumberReservedCounter + HasStart() bool + // Step returns uint32, set in PatternFlowRSVPPathExplicitRouteType1FourByteASNumberReservedCounter. Step() uint32 - // SetStep assigns uint32 provided by user to MACRouteAddress - SetStep(value uint32) MACRouteAddress - // HasStep checks if Step has been set in MACRouteAddress + // SetStep assigns uint32 provided by user to PatternFlowRSVPPathExplicitRouteType1FourByteASNumberReservedCounter + SetStep(value uint32) PatternFlowRSVPPathExplicitRouteType1FourByteASNumberReservedCounter + // HasStep checks if Step has been set in PatternFlowRSVPPathExplicitRouteType1FourByteASNumberReservedCounter HasStep() bool + // Count returns uint32, set in PatternFlowRSVPPathExplicitRouteType1FourByteASNumberReservedCounter. + Count() uint32 + // SetCount assigns uint32 provided by user to PatternFlowRSVPPathExplicitRouteType1FourByteASNumberReservedCounter + SetCount(value uint32) PatternFlowRSVPPathExplicitRouteType1FourByteASNumberReservedCounter + // HasCount checks if Count has been set in PatternFlowRSVPPathExplicitRouteType1FourByteASNumberReservedCounter + HasCount() bool } -// The starting address of the MAC Range. -// Address returns a string -func (obj *mACRouteAddress) Address() string { +// description is TBD +// Start returns a uint32 +func (obj *patternFlowRSVPPathExplicitRouteType1FourByteASNumberReservedCounter) Start() uint32 { - return *obj.obj.Address + return *obj.obj.Start } -// The starting address of the MAC Range. -// SetAddress sets the string value in the MACRouteAddress object -func (obj *mACRouteAddress) SetAddress(value string) MACRouteAddress { +// description is TBD +// Start returns a uint32 +func (obj *patternFlowRSVPPathExplicitRouteType1FourByteASNumberReservedCounter) HasStart() bool { + return obj.obj.Start != nil +} - obj.obj.Address = &value +// description is TBD +// SetStart sets the uint32 value in the PatternFlowRSVPPathExplicitRouteType1FourByteASNumberReservedCounter object +func (obj *patternFlowRSVPPathExplicitRouteType1FourByteASNumberReservedCounter) SetStart(value uint32) PatternFlowRSVPPathExplicitRouteType1FourByteASNumberReservedCounter { + + obj.obj.Start = &value return obj } -// The MAC prefix length to be applied to the address. -// Prefix returns a uint32 -func (obj *mACRouteAddress) Prefix() uint32 { +// description is TBD +// Step returns a uint32 +func (obj *patternFlowRSVPPathExplicitRouteType1FourByteASNumberReservedCounter) Step() uint32 { - return *obj.obj.Prefix + return *obj.obj.Step } -// The MAC prefix length to be applied to the address. -// Prefix returns a uint32 -func (obj *mACRouteAddress) HasPrefix() bool { - return obj.obj.Prefix != nil +// description is TBD +// Step returns a uint32 +func (obj *patternFlowRSVPPathExplicitRouteType1FourByteASNumberReservedCounter) HasStep() bool { + return obj.obj.Step != nil } -// The MAC prefix length to be applied to the address. -// SetPrefix sets the uint32 value in the MACRouteAddress object -func (obj *mACRouteAddress) SetPrefix(value uint32) MACRouteAddress { +// description is TBD +// SetStep sets the uint32 value in the PatternFlowRSVPPathExplicitRouteType1FourByteASNumberReservedCounter object +func (obj *patternFlowRSVPPathExplicitRouteType1FourByteASNumberReservedCounter) SetStep(value uint32) PatternFlowRSVPPathExplicitRouteType1FourByteASNumberReservedCounter { - obj.obj.Prefix = &value + obj.obj.Step = &value return obj } -// The total number of mac addresses in the range. +// description is TBD // Count returns a uint32 -func (obj *mACRouteAddress) Count() uint32 { +func (obj *patternFlowRSVPPathExplicitRouteType1FourByteASNumberReservedCounter) Count() uint32 { return *obj.obj.Count } -// The total number of mac addresses in the range. +// description is TBD // Count returns a uint32 -func (obj *mACRouteAddress) HasCount() bool { +func (obj *patternFlowRSVPPathExplicitRouteType1FourByteASNumberReservedCounter) HasCount() bool { return obj.obj.Count != nil } -// The total number of mac addresses in the range. -// SetCount sets the uint32 value in the MACRouteAddress object -func (obj *mACRouteAddress) SetCount(value uint32) MACRouteAddress { +// description is TBD +// SetCount sets the uint32 value in the PatternFlowRSVPPathExplicitRouteType1FourByteASNumberReservedCounter object +func (obj *patternFlowRSVPPathExplicitRouteType1FourByteASNumberReservedCounter) SetCount(value uint32) PatternFlowRSVPPathExplicitRouteType1FourByteASNumberReservedCounter { obj.obj.Count = &value return obj } -// Increments the mac address prefixes within a mac range where multiple routes are present. The value is incremented according to the mac prefix Length and Step. -// Step returns a uint32 -func (obj *mACRouteAddress) Step() uint32 { - - return *obj.obj.Step - -} - -// Increments the mac address prefixes within a mac range where multiple routes are present. The value is incremented according to the mac prefix Length and Step. -// Step returns a uint32 -func (obj *mACRouteAddress) HasStep() bool { - return obj.obj.Step != nil -} - -// Increments the mac address prefixes within a mac range where multiple routes are present. The value is incremented according to the mac prefix Length and Step. -// SetStep sets the uint32 value in the MACRouteAddress object -func (obj *mACRouteAddress) SetStep(value uint32) MACRouteAddress { - - obj.obj.Step = &value - return obj -} - -func (obj *mACRouteAddress) validateObj(vObj *validation, set_default bool) { +func (obj *patternFlowRSVPPathExplicitRouteType1FourByteASNumberReservedCounter) validateObj(vObj *validation, set_default bool) { if set_default { obj.setDefault() } - // Address is required - if obj.obj.Address == nil { - vObj.validationErrors = append(vObj.validationErrors, "Address is required field on interface MACRouteAddress") - } - if obj.obj.Address != nil { - - err := obj.validateMac(obj.Address()) - if err != nil { - vObj.validationErrors = append(vObj.validationErrors, fmt.Sprintf("%s %s", err.Error(), "on MACRouteAddress.Address")) - } - - } - - if obj.obj.Prefix != nil { + if obj.obj.Start != nil { - if *obj.obj.Prefix > 48 { + if *obj.obj.Start > 255 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("0 <= MACRouteAddress.Prefix <= 48 but Got %d", *obj.obj.Prefix)) + fmt.Sprintf("0 <= PatternFlowRSVPPathExplicitRouteType1FourByteASNumberReservedCounter.Start <= 255 but Got %d", *obj.obj.Start)) } } - if obj.obj.Count != nil { + if obj.obj.Step != nil { - if *obj.obj.Count < 1 || *obj.obj.Count > 4294967295 { + if *obj.obj.Step > 255 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("1 <= MACRouteAddress.Count <= 4294967295 but Got %d", *obj.obj.Count)) + fmt.Sprintf("0 <= PatternFlowRSVPPathExplicitRouteType1FourByteASNumberReservedCounter.Step <= 255 but Got %d", *obj.obj.Step)) } } - if obj.obj.Step != nil { + if obj.obj.Count != nil { - if *obj.obj.Step < 1 || *obj.obj.Step > 4294967295 { + if *obj.obj.Count > 255 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("1 <= MACRouteAddress.Step <= 4294967295 but Got %d", *obj.obj.Step)) + fmt.Sprintf("0 <= PatternFlowRSVPPathExplicitRouteType1FourByteASNumberReservedCounter.Count <= 255 but Got %d", *obj.obj.Count)) } } } -func (obj *mACRouteAddress) setDefault() { - if obj.obj.Prefix == nil { - obj.SetPrefix(48) - } - if obj.obj.Count == nil { - obj.SetCount(1) +func (obj *patternFlowRSVPPathExplicitRouteType1FourByteASNumberReservedCounter) setDefault() { + if obj.obj.Start == nil { + obj.SetStart(0) } if obj.obj.Step == nil { obj.SetStep(1) } + if obj.obj.Count == nil { + obj.SetCount(1) + } } -// ***** BgpSrteSRv6SIDEndpointBehaviorAndStructure ***** -type bgpSrteSRv6SIDEndpointBehaviorAndStructure struct { +// ***** PatternFlowRSVPPathRecordRouteType1Ipv4AddressIpv4AddressCounter ***** +type patternFlowRSVPPathRecordRouteType1Ipv4AddressIpv4AddressCounter struct { validation - obj *otg.BgpSrteSRv6SIDEndpointBehaviorAndStructure + obj *otg.PatternFlowRSVPPathRecordRouteType1Ipv4AddressIpv4AddressCounter } -func NewBgpSrteSRv6SIDEndpointBehaviorAndStructure() BgpSrteSRv6SIDEndpointBehaviorAndStructure { - obj := bgpSrteSRv6SIDEndpointBehaviorAndStructure{obj: &otg.BgpSrteSRv6SIDEndpointBehaviorAndStructure{}} +func NewPatternFlowRSVPPathRecordRouteType1Ipv4AddressIpv4AddressCounter() PatternFlowRSVPPathRecordRouteType1Ipv4AddressIpv4AddressCounter { + obj := patternFlowRSVPPathRecordRouteType1Ipv4AddressIpv4AddressCounter{obj: &otg.PatternFlowRSVPPathRecordRouteType1Ipv4AddressIpv4AddressCounter{}} obj.setDefault() return &obj } -func (obj *bgpSrteSRv6SIDEndpointBehaviorAndStructure) Msg() *otg.BgpSrteSRv6SIDEndpointBehaviorAndStructure { +func (obj *patternFlowRSVPPathRecordRouteType1Ipv4AddressIpv4AddressCounter) Msg() *otg.PatternFlowRSVPPathRecordRouteType1Ipv4AddressIpv4AddressCounter { return obj.obj } -func (obj *bgpSrteSRv6SIDEndpointBehaviorAndStructure) SetMsg(msg *otg.BgpSrteSRv6SIDEndpointBehaviorAndStructure) BgpSrteSRv6SIDEndpointBehaviorAndStructure { +func (obj *patternFlowRSVPPathRecordRouteType1Ipv4AddressIpv4AddressCounter) SetMsg(msg *otg.PatternFlowRSVPPathRecordRouteType1Ipv4AddressIpv4AddressCounter) PatternFlowRSVPPathRecordRouteType1Ipv4AddressIpv4AddressCounter { proto.Merge(obj.obj, msg) return obj } -func (obj *bgpSrteSRv6SIDEndpointBehaviorAndStructure) ToProto() (*otg.BgpSrteSRv6SIDEndpointBehaviorAndStructure, error) { +func (obj *patternFlowRSVPPathRecordRouteType1Ipv4AddressIpv4AddressCounter) ToProto() (*otg.PatternFlowRSVPPathRecordRouteType1Ipv4AddressIpv4AddressCounter, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -322233,7 +369147,7 @@ func (obj *bgpSrteSRv6SIDEndpointBehaviorAndStructure) ToProto() (*otg.BgpSrteSR return obj.Msg(), nil } -func (obj *bgpSrteSRv6SIDEndpointBehaviorAndStructure) FromProto(msg *otg.BgpSrteSRv6SIDEndpointBehaviorAndStructure) (BgpSrteSRv6SIDEndpointBehaviorAndStructure, error) { +func (obj *patternFlowRSVPPathRecordRouteType1Ipv4AddressIpv4AddressCounter) FromProto(msg *otg.PatternFlowRSVPPathRecordRouteType1Ipv4AddressIpv4AddressCounter) (PatternFlowRSVPPathRecordRouteType1Ipv4AddressIpv4AddressCounter, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -322242,7 +369156,7 @@ func (obj *bgpSrteSRv6SIDEndpointBehaviorAndStructure) FromProto(msg *otg.BgpSrt return newObj, nil } -func (obj *bgpSrteSRv6SIDEndpointBehaviorAndStructure) ToPbText() (string, error) { +func (obj *patternFlowRSVPPathRecordRouteType1Ipv4AddressIpv4AddressCounter) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -322254,7 +369168,7 @@ func (obj *bgpSrteSRv6SIDEndpointBehaviorAndStructure) ToPbText() (string, error return string(protoMarshal), nil } -func (obj *bgpSrteSRv6SIDEndpointBehaviorAndStructure) FromPbText(value string) error { +func (obj *patternFlowRSVPPathRecordRouteType1Ipv4AddressIpv4AddressCounter) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj @@ -322267,7 +369181,7 @@ func (obj *bgpSrteSRv6SIDEndpointBehaviorAndStructure) FromPbText(value string) return retObj } -func (obj *bgpSrteSRv6SIDEndpointBehaviorAndStructure) ToYaml() (string, error) { +func (obj *patternFlowRSVPPathRecordRouteType1Ipv4AddressIpv4AddressCounter) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -322288,7 +369202,7 @@ func (obj *bgpSrteSRv6SIDEndpointBehaviorAndStructure) ToYaml() (string, error) return string(data), nil } -func (obj *bgpSrteSRv6SIDEndpointBehaviorAndStructure) FromYaml(value string) error { +func (obj *patternFlowRSVPPathRecordRouteType1Ipv4AddressIpv4AddressCounter) FromYaml(value string) error { if value == "" { value = "{}" } @@ -322313,7 +369227,7 @@ func (obj *bgpSrteSRv6SIDEndpointBehaviorAndStructure) FromYaml(value string) er return nil } -func (obj *bgpSrteSRv6SIDEndpointBehaviorAndStructure) ToJson() (string, error) { +func (obj *patternFlowRSVPPathRecordRouteType1Ipv4AddressIpv4AddressCounter) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -322331,7 +369245,7 @@ func (obj *bgpSrteSRv6SIDEndpointBehaviorAndStructure) ToJson() (string, error) return string(data), nil } -func (obj *bgpSrteSRv6SIDEndpointBehaviorAndStructure) FromJson(value string) error { +func (obj *patternFlowRSVPPathRecordRouteType1Ipv4AddressIpv4AddressCounter) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -322352,19 +369266,19 @@ func (obj *bgpSrteSRv6SIDEndpointBehaviorAndStructure) FromJson(value string) er return nil } -func (obj *bgpSrteSRv6SIDEndpointBehaviorAndStructure) validateToAndFrom() error { +func (obj *patternFlowRSVPPathRecordRouteType1Ipv4AddressIpv4AddressCounter) validateToAndFrom() error { // emptyVars() obj.validateObj(&obj.validation, true) return obj.validationResult() } -func (obj *bgpSrteSRv6SIDEndpointBehaviorAndStructure) Validate() error { +func (obj *patternFlowRSVPPathRecordRouteType1Ipv4AddressIpv4AddressCounter) Validate() error { // emptyVars() obj.validateObj(&obj.validation, false) return obj.validationResult() } -func (obj *bgpSrteSRv6SIDEndpointBehaviorAndStructure) String() string { +func (obj *patternFlowRSVPPathRecordRouteType1Ipv4AddressIpv4AddressCounter) String() string { str, err := obj.ToYaml() if err != nil { return err.Error() @@ -322372,12 +369286,12 @@ func (obj *bgpSrteSRv6SIDEndpointBehaviorAndStructure) String() string { return str } -func (obj *bgpSrteSRv6SIDEndpointBehaviorAndStructure) Clone() (BgpSrteSRv6SIDEndpointBehaviorAndStructure, error) { +func (obj *patternFlowRSVPPathRecordRouteType1Ipv4AddressIpv4AddressCounter) Clone() (PatternFlowRSVPPathRecordRouteType1Ipv4AddressIpv4AddressCounter, error) { vErr := obj.Validate() if vErr != nil { return nil, vErr } - newObj := NewBgpSrteSRv6SIDEndpointBehaviorAndStructure() + newObj := NewPatternFlowRSVPPathRecordRouteType1Ipv4AddressIpv4AddressCounter() data, err := proto.Marshal(obj.Msg()) if err != nil { return nil, err @@ -322389,240 +369303,187 @@ func (obj *bgpSrteSRv6SIDEndpointBehaviorAndStructure) Clone() (BgpSrteSRv6SIDEn return newObj, nil } -// BgpSrteSRv6SIDEndpointBehaviorAndStructure is configuration for SRv6 Endpoint Behavior and SID Structure. Its optional. Summation of lengths for Locator Block, Locator Node, Function, and Argument MUST be less than or equal to 128. -type BgpSrteSRv6SIDEndpointBehaviorAndStructure interface { +// PatternFlowRSVPPathRecordRouteType1Ipv4AddressIpv4AddressCounter is ipv4 counter pattern +type PatternFlowRSVPPathRecordRouteType1Ipv4AddressIpv4AddressCounter interface { Validation - // Msg marshals BgpSrteSRv6SIDEndpointBehaviorAndStructure to protobuf object *otg.BgpSrteSRv6SIDEndpointBehaviorAndStructure + // Msg marshals PatternFlowRSVPPathRecordRouteType1Ipv4AddressIpv4AddressCounter to protobuf object *otg.PatternFlowRSVPPathRecordRouteType1Ipv4AddressIpv4AddressCounter // and doesn't set defaults - Msg() *otg.BgpSrteSRv6SIDEndpointBehaviorAndStructure - // SetMsg unmarshals BgpSrteSRv6SIDEndpointBehaviorAndStructure from protobuf object *otg.BgpSrteSRv6SIDEndpointBehaviorAndStructure + Msg() *otg.PatternFlowRSVPPathRecordRouteType1Ipv4AddressIpv4AddressCounter + // SetMsg unmarshals PatternFlowRSVPPathRecordRouteType1Ipv4AddressIpv4AddressCounter from protobuf object *otg.PatternFlowRSVPPathRecordRouteType1Ipv4AddressIpv4AddressCounter // and doesn't set defaults - SetMsg(*otg.BgpSrteSRv6SIDEndpointBehaviorAndStructure) BgpSrteSRv6SIDEndpointBehaviorAndStructure - // ToProto marshals BgpSrteSRv6SIDEndpointBehaviorAndStructure to protobuf object *otg.BgpSrteSRv6SIDEndpointBehaviorAndStructure - ToProto() (*otg.BgpSrteSRv6SIDEndpointBehaviorAndStructure, error) - // ToPbText marshals BgpSrteSRv6SIDEndpointBehaviorAndStructure to protobuf text + SetMsg(*otg.PatternFlowRSVPPathRecordRouteType1Ipv4AddressIpv4AddressCounter) PatternFlowRSVPPathRecordRouteType1Ipv4AddressIpv4AddressCounter + // ToProto marshals PatternFlowRSVPPathRecordRouteType1Ipv4AddressIpv4AddressCounter to protobuf object *otg.PatternFlowRSVPPathRecordRouteType1Ipv4AddressIpv4AddressCounter + ToProto() (*otg.PatternFlowRSVPPathRecordRouteType1Ipv4AddressIpv4AddressCounter, error) + // ToPbText marshals PatternFlowRSVPPathRecordRouteType1Ipv4AddressIpv4AddressCounter to protobuf text ToPbText() (string, error) - // ToYaml marshals BgpSrteSRv6SIDEndpointBehaviorAndStructure to YAML text + // ToYaml marshals PatternFlowRSVPPathRecordRouteType1Ipv4AddressIpv4AddressCounter to YAML text ToYaml() (string, error) - // ToJson marshals BgpSrteSRv6SIDEndpointBehaviorAndStructure to JSON text + // ToJson marshals PatternFlowRSVPPathRecordRouteType1Ipv4AddressIpv4AddressCounter to JSON text ToJson() (string, error) - // FromProto unmarshals BgpSrteSRv6SIDEndpointBehaviorAndStructure from protobuf object *otg.BgpSrteSRv6SIDEndpointBehaviorAndStructure - FromProto(msg *otg.BgpSrteSRv6SIDEndpointBehaviorAndStructure) (BgpSrteSRv6SIDEndpointBehaviorAndStructure, error) - // FromPbText unmarshals BgpSrteSRv6SIDEndpointBehaviorAndStructure from protobuf text + // FromProto unmarshals PatternFlowRSVPPathRecordRouteType1Ipv4AddressIpv4AddressCounter from protobuf object *otg.PatternFlowRSVPPathRecordRouteType1Ipv4AddressIpv4AddressCounter + FromProto(msg *otg.PatternFlowRSVPPathRecordRouteType1Ipv4AddressIpv4AddressCounter) (PatternFlowRSVPPathRecordRouteType1Ipv4AddressIpv4AddressCounter, error) + // FromPbText unmarshals PatternFlowRSVPPathRecordRouteType1Ipv4AddressIpv4AddressCounter from protobuf text FromPbText(value string) error - // FromYaml unmarshals BgpSrteSRv6SIDEndpointBehaviorAndStructure from YAML text + // FromYaml unmarshals PatternFlowRSVPPathRecordRouteType1Ipv4AddressIpv4AddressCounter from YAML text FromYaml(value string) error - // FromJson unmarshals BgpSrteSRv6SIDEndpointBehaviorAndStructure from JSON text + // FromJson unmarshals PatternFlowRSVPPathRecordRouteType1Ipv4AddressIpv4AddressCounter from JSON text FromJson(value string) error - // Validate validates BgpSrteSRv6SIDEndpointBehaviorAndStructure + // Validate validates PatternFlowRSVPPathRecordRouteType1Ipv4AddressIpv4AddressCounter Validate() error // A stringer function String() string // Clones the object - Clone() (BgpSrteSRv6SIDEndpointBehaviorAndStructure, error) + Clone() (PatternFlowRSVPPathRecordRouteType1Ipv4AddressIpv4AddressCounter, error) validateToAndFrom() error validateObj(vObj *validation, set_default bool) setDefault() - // LbLength returns uint32, set in BgpSrteSRv6SIDEndpointBehaviorAndStructure. - LbLength() uint32 - // SetLbLength assigns uint32 provided by user to BgpSrteSRv6SIDEndpointBehaviorAndStructure - SetLbLength(value uint32) BgpSrteSRv6SIDEndpointBehaviorAndStructure - // HasLbLength checks if LbLength has been set in BgpSrteSRv6SIDEndpointBehaviorAndStructure - HasLbLength() bool - // LnLength returns uint32, set in BgpSrteSRv6SIDEndpointBehaviorAndStructure. - LnLength() uint32 - // SetLnLength assigns uint32 provided by user to BgpSrteSRv6SIDEndpointBehaviorAndStructure - SetLnLength(value uint32) BgpSrteSRv6SIDEndpointBehaviorAndStructure - // HasLnLength checks if LnLength has been set in BgpSrteSRv6SIDEndpointBehaviorAndStructure - HasLnLength() bool - // FuncLength returns uint32, set in BgpSrteSRv6SIDEndpointBehaviorAndStructure. - FuncLength() uint32 - // SetFuncLength assigns uint32 provided by user to BgpSrteSRv6SIDEndpointBehaviorAndStructure - SetFuncLength(value uint32) BgpSrteSRv6SIDEndpointBehaviorAndStructure - // HasFuncLength checks if FuncLength has been set in BgpSrteSRv6SIDEndpointBehaviorAndStructure - HasFuncLength() bool - // ArgLength returns uint32, set in BgpSrteSRv6SIDEndpointBehaviorAndStructure. - ArgLength() uint32 - // SetArgLength assigns uint32 provided by user to BgpSrteSRv6SIDEndpointBehaviorAndStructure - SetArgLength(value uint32) BgpSrteSRv6SIDEndpointBehaviorAndStructure - // HasArgLength checks if ArgLength has been set in BgpSrteSRv6SIDEndpointBehaviorAndStructure - HasArgLength() bool -} - -// SRv6 SID Locator Block length in bits. -// LbLength returns a uint32 -func (obj *bgpSrteSRv6SIDEndpointBehaviorAndStructure) LbLength() uint32 { - - return *obj.obj.LbLength - -} - -// SRv6 SID Locator Block length in bits. -// LbLength returns a uint32 -func (obj *bgpSrteSRv6SIDEndpointBehaviorAndStructure) HasLbLength() bool { - return obj.obj.LbLength != nil -} - -// SRv6 SID Locator Block length in bits. -// SetLbLength sets the uint32 value in the BgpSrteSRv6SIDEndpointBehaviorAndStructure object -func (obj *bgpSrteSRv6SIDEndpointBehaviorAndStructure) SetLbLength(value uint32) BgpSrteSRv6SIDEndpointBehaviorAndStructure { - - obj.obj.LbLength = &value - return obj + // Start returns string, set in PatternFlowRSVPPathRecordRouteType1Ipv4AddressIpv4AddressCounter. + Start() string + // SetStart assigns string provided by user to PatternFlowRSVPPathRecordRouteType1Ipv4AddressIpv4AddressCounter + SetStart(value string) PatternFlowRSVPPathRecordRouteType1Ipv4AddressIpv4AddressCounter + // HasStart checks if Start has been set in PatternFlowRSVPPathRecordRouteType1Ipv4AddressIpv4AddressCounter + HasStart() bool + // Step returns string, set in PatternFlowRSVPPathRecordRouteType1Ipv4AddressIpv4AddressCounter. + Step() string + // SetStep assigns string provided by user to PatternFlowRSVPPathRecordRouteType1Ipv4AddressIpv4AddressCounter + SetStep(value string) PatternFlowRSVPPathRecordRouteType1Ipv4AddressIpv4AddressCounter + // HasStep checks if Step has been set in PatternFlowRSVPPathRecordRouteType1Ipv4AddressIpv4AddressCounter + HasStep() bool + // Count returns uint32, set in PatternFlowRSVPPathRecordRouteType1Ipv4AddressIpv4AddressCounter. + Count() uint32 + // SetCount assigns uint32 provided by user to PatternFlowRSVPPathRecordRouteType1Ipv4AddressIpv4AddressCounter + SetCount(value uint32) PatternFlowRSVPPathRecordRouteType1Ipv4AddressIpv4AddressCounter + // HasCount checks if Count has been set in PatternFlowRSVPPathRecordRouteType1Ipv4AddressIpv4AddressCounter + HasCount() bool } -// SRv6 SID Locator Node length in bits. -// LnLength returns a uint32 -func (obj *bgpSrteSRv6SIDEndpointBehaviorAndStructure) LnLength() uint32 { +// description is TBD +// Start returns a string +func (obj *patternFlowRSVPPathRecordRouteType1Ipv4AddressIpv4AddressCounter) Start() string { - return *obj.obj.LnLength + return *obj.obj.Start } -// SRv6 SID Locator Node length in bits. -// LnLength returns a uint32 -func (obj *bgpSrteSRv6SIDEndpointBehaviorAndStructure) HasLnLength() bool { - return obj.obj.LnLength != nil +// description is TBD +// Start returns a string +func (obj *patternFlowRSVPPathRecordRouteType1Ipv4AddressIpv4AddressCounter) HasStart() bool { + return obj.obj.Start != nil } -// SRv6 SID Locator Node length in bits. -// SetLnLength sets the uint32 value in the BgpSrteSRv6SIDEndpointBehaviorAndStructure object -func (obj *bgpSrteSRv6SIDEndpointBehaviorAndStructure) SetLnLength(value uint32) BgpSrteSRv6SIDEndpointBehaviorAndStructure { +// description is TBD +// SetStart sets the string value in the PatternFlowRSVPPathRecordRouteType1Ipv4AddressIpv4AddressCounter object +func (obj *patternFlowRSVPPathRecordRouteType1Ipv4AddressIpv4AddressCounter) SetStart(value string) PatternFlowRSVPPathRecordRouteType1Ipv4AddressIpv4AddressCounter { - obj.obj.LnLength = &value + obj.obj.Start = &value return obj } -// SRv6 SID Function length in bits. -// FuncLength returns a uint32 -func (obj *bgpSrteSRv6SIDEndpointBehaviorAndStructure) FuncLength() uint32 { +// description is TBD +// Step returns a string +func (obj *patternFlowRSVPPathRecordRouteType1Ipv4AddressIpv4AddressCounter) Step() string { - return *obj.obj.FuncLength + return *obj.obj.Step } -// SRv6 SID Function length in bits. -// FuncLength returns a uint32 -func (obj *bgpSrteSRv6SIDEndpointBehaviorAndStructure) HasFuncLength() bool { - return obj.obj.FuncLength != nil +// description is TBD +// Step returns a string +func (obj *patternFlowRSVPPathRecordRouteType1Ipv4AddressIpv4AddressCounter) HasStep() bool { + return obj.obj.Step != nil } -// SRv6 SID Function length in bits. -// SetFuncLength sets the uint32 value in the BgpSrteSRv6SIDEndpointBehaviorAndStructure object -func (obj *bgpSrteSRv6SIDEndpointBehaviorAndStructure) SetFuncLength(value uint32) BgpSrteSRv6SIDEndpointBehaviorAndStructure { +// description is TBD +// SetStep sets the string value in the PatternFlowRSVPPathRecordRouteType1Ipv4AddressIpv4AddressCounter object +func (obj *patternFlowRSVPPathRecordRouteType1Ipv4AddressIpv4AddressCounter) SetStep(value string) PatternFlowRSVPPathRecordRouteType1Ipv4AddressIpv4AddressCounter { - obj.obj.FuncLength = &value + obj.obj.Step = &value return obj } -// SRv6 SID Arguments length in bits. -// ArgLength returns a uint32 -func (obj *bgpSrteSRv6SIDEndpointBehaviorAndStructure) ArgLength() uint32 { +// description is TBD +// Count returns a uint32 +func (obj *patternFlowRSVPPathRecordRouteType1Ipv4AddressIpv4AddressCounter) Count() uint32 { - return *obj.obj.ArgLength + return *obj.obj.Count } -// SRv6 SID Arguments length in bits. -// ArgLength returns a uint32 -func (obj *bgpSrteSRv6SIDEndpointBehaviorAndStructure) HasArgLength() bool { - return obj.obj.ArgLength != nil +// description is TBD +// Count returns a uint32 +func (obj *patternFlowRSVPPathRecordRouteType1Ipv4AddressIpv4AddressCounter) HasCount() bool { + return obj.obj.Count != nil } -// SRv6 SID Arguments length in bits. -// SetArgLength sets the uint32 value in the BgpSrteSRv6SIDEndpointBehaviorAndStructure object -func (obj *bgpSrteSRv6SIDEndpointBehaviorAndStructure) SetArgLength(value uint32) BgpSrteSRv6SIDEndpointBehaviorAndStructure { +// description is TBD +// SetCount sets the uint32 value in the PatternFlowRSVPPathRecordRouteType1Ipv4AddressIpv4AddressCounter object +func (obj *patternFlowRSVPPathRecordRouteType1Ipv4AddressIpv4AddressCounter) SetCount(value uint32) PatternFlowRSVPPathRecordRouteType1Ipv4AddressIpv4AddressCounter { - obj.obj.ArgLength = &value + obj.obj.Count = &value return obj } -func (obj *bgpSrteSRv6SIDEndpointBehaviorAndStructure) validateObj(vObj *validation, set_default bool) { +func (obj *patternFlowRSVPPathRecordRouteType1Ipv4AddressIpv4AddressCounter) validateObj(vObj *validation, set_default bool) { if set_default { obj.setDefault() } - if obj.obj.LbLength != nil { - - if *obj.obj.LbLength > 128 { - vObj.validationErrors = append( - vObj.validationErrors, - fmt.Sprintf("0 <= BgpSrteSRv6SIDEndpointBehaviorAndStructure.LbLength <= 128 but Got %d", *obj.obj.LbLength)) - } - - } - - if obj.obj.LnLength != nil { - - if *obj.obj.LnLength > 128 { - vObj.validationErrors = append( - vObj.validationErrors, - fmt.Sprintf("0 <= BgpSrteSRv6SIDEndpointBehaviorAndStructure.LnLength <= 128 but Got %d", *obj.obj.LnLength)) - } - - } - - if obj.obj.FuncLength != nil { + if obj.obj.Start != nil { - if *obj.obj.FuncLength > 128 { - vObj.validationErrors = append( - vObj.validationErrors, - fmt.Sprintf("0 <= BgpSrteSRv6SIDEndpointBehaviorAndStructure.FuncLength <= 128 but Got %d", *obj.obj.FuncLength)) + err := obj.validateIpv4(obj.Start()) + if err != nil { + vObj.validationErrors = append(vObj.validationErrors, fmt.Sprintf("%s %s", err.Error(), "on PatternFlowRSVPPathRecordRouteType1Ipv4AddressIpv4AddressCounter.Start")) } } - if obj.obj.ArgLength != nil { + if obj.obj.Step != nil { - if *obj.obj.ArgLength > 128 { - vObj.validationErrors = append( - vObj.validationErrors, - fmt.Sprintf("0 <= BgpSrteSRv6SIDEndpointBehaviorAndStructure.ArgLength <= 128 but Got %d", *obj.obj.ArgLength)) + err := obj.validateIpv4(obj.Step()) + if err != nil { + vObj.validationErrors = append(vObj.validationErrors, fmt.Sprintf("%s %s", err.Error(), "on PatternFlowRSVPPathRecordRouteType1Ipv4AddressIpv4AddressCounter.Step")) } } } -func (obj *bgpSrteSRv6SIDEndpointBehaviorAndStructure) setDefault() { - if obj.obj.LbLength == nil { - obj.SetLbLength(0) - } - if obj.obj.LnLength == nil { - obj.SetLnLength(0) +func (obj *patternFlowRSVPPathRecordRouteType1Ipv4AddressIpv4AddressCounter) setDefault() { + if obj.obj.Start == nil { + obj.SetStart("0.0.0.0") } - if obj.obj.FuncLength == nil { - obj.SetFuncLength(0) + if obj.obj.Step == nil { + obj.SetStep("0.0.0.1") } - if obj.obj.ArgLength == nil { - obj.SetArgLength(0) + if obj.obj.Count == nil { + obj.SetCount(1) } } -// ***** BgpSrteSrMplsSid ***** -type bgpSrteSrMplsSid struct { +// ***** PatternFlowRSVPPathRecordRouteType1Ipv4AddressPrefixLengthCounter ***** +type patternFlowRSVPPathRecordRouteType1Ipv4AddressPrefixLengthCounter struct { validation - obj *otg.BgpSrteSrMplsSid + obj *otg.PatternFlowRSVPPathRecordRouteType1Ipv4AddressPrefixLengthCounter } -func NewBgpSrteSrMplsSid() BgpSrteSrMplsSid { - obj := bgpSrteSrMplsSid{obj: &otg.BgpSrteSrMplsSid{}} +func NewPatternFlowRSVPPathRecordRouteType1Ipv4AddressPrefixLengthCounter() PatternFlowRSVPPathRecordRouteType1Ipv4AddressPrefixLengthCounter { + obj := patternFlowRSVPPathRecordRouteType1Ipv4AddressPrefixLengthCounter{obj: &otg.PatternFlowRSVPPathRecordRouteType1Ipv4AddressPrefixLengthCounter{}} obj.setDefault() return &obj } -func (obj *bgpSrteSrMplsSid) Msg() *otg.BgpSrteSrMplsSid { +func (obj *patternFlowRSVPPathRecordRouteType1Ipv4AddressPrefixLengthCounter) Msg() *otg.PatternFlowRSVPPathRecordRouteType1Ipv4AddressPrefixLengthCounter { return obj.obj } -func (obj *bgpSrteSrMplsSid) SetMsg(msg *otg.BgpSrteSrMplsSid) BgpSrteSrMplsSid { +func (obj *patternFlowRSVPPathRecordRouteType1Ipv4AddressPrefixLengthCounter) SetMsg(msg *otg.PatternFlowRSVPPathRecordRouteType1Ipv4AddressPrefixLengthCounter) PatternFlowRSVPPathRecordRouteType1Ipv4AddressPrefixLengthCounter { proto.Merge(obj.obj, msg) return obj } -func (obj *bgpSrteSrMplsSid) ToProto() (*otg.BgpSrteSrMplsSid, error) { +func (obj *patternFlowRSVPPathRecordRouteType1Ipv4AddressPrefixLengthCounter) ToProto() (*otg.PatternFlowRSVPPathRecordRouteType1Ipv4AddressPrefixLengthCounter, error) { err := obj.validateToAndFrom() if err != nil { return nil, err @@ -322630,7 +369491,7 @@ func (obj *bgpSrteSrMplsSid) ToProto() (*otg.BgpSrteSrMplsSid, error) { return obj.Msg(), nil } -func (obj *bgpSrteSrMplsSid) FromProto(msg *otg.BgpSrteSrMplsSid) (BgpSrteSrMplsSid, error) { +func (obj *patternFlowRSVPPathRecordRouteType1Ipv4AddressPrefixLengthCounter) FromProto(msg *otg.PatternFlowRSVPPathRecordRouteType1Ipv4AddressPrefixLengthCounter) (PatternFlowRSVPPathRecordRouteType1Ipv4AddressPrefixLengthCounter, error) { newObj := obj.SetMsg(msg) err := newObj.validateToAndFrom() if err != nil { @@ -322639,7 +369500,7 @@ func (obj *bgpSrteSrMplsSid) FromProto(msg *otg.BgpSrteSrMplsSid) (BgpSrteSrMpls return newObj, nil } -func (obj *bgpSrteSrMplsSid) ToPbText() (string, error) { +func (obj *patternFlowRSVPPathRecordRouteType1Ipv4AddressPrefixLengthCounter) ToPbText() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -322651,7 +369512,7 @@ func (obj *bgpSrteSrMplsSid) ToPbText() (string, error) { return string(protoMarshal), nil } -func (obj *bgpSrteSrMplsSid) FromPbText(value string) error { +func (obj *patternFlowRSVPPathRecordRouteType1Ipv4AddressPrefixLengthCounter) FromPbText(value string) error { retObj := proto.Unmarshal([]byte(value), obj.Msg()) if retObj != nil { return retObj @@ -322664,7 +369525,7 @@ func (obj *bgpSrteSrMplsSid) FromPbText(value string) error { return retObj } -func (obj *bgpSrteSrMplsSid) ToYaml() (string, error) { +func (obj *patternFlowRSVPPathRecordRouteType1Ipv4AddressPrefixLengthCounter) ToYaml() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -322685,7 +369546,7 @@ func (obj *bgpSrteSrMplsSid) ToYaml() (string, error) { return string(data), nil } -func (obj *bgpSrteSrMplsSid) FromYaml(value string) error { +func (obj *patternFlowRSVPPathRecordRouteType1Ipv4AddressPrefixLengthCounter) FromYaml(value string) error { if value == "" { value = "{}" } @@ -322710,7 +369571,7 @@ func (obj *bgpSrteSrMplsSid) FromYaml(value string) error { return nil } -func (obj *bgpSrteSrMplsSid) ToJson() (string, error) { +func (obj *patternFlowRSVPPathRecordRouteType1Ipv4AddressPrefixLengthCounter) ToJson() (string, error) { vErr := obj.validateToAndFrom() if vErr != nil { return "", vErr @@ -322728,7 +369589,7 @@ func (obj *bgpSrteSrMplsSid) ToJson() (string, error) { return string(data), nil } -func (obj *bgpSrteSrMplsSid) FromJson(value string) error { +func (obj *patternFlowRSVPPathRecordRouteType1Ipv4AddressPrefixLengthCounter) FromJson(value string) error { opts := protojson.UnmarshalOptions{ AllowPartial: true, DiscardUnknown: false, @@ -322749,19 +369610,19 @@ func (obj *bgpSrteSrMplsSid) FromJson(value string) error { return nil } -func (obj *bgpSrteSrMplsSid) validateToAndFrom() error { +func (obj *patternFlowRSVPPathRecordRouteType1Ipv4AddressPrefixLengthCounter) validateToAndFrom() error { // emptyVars() obj.validateObj(&obj.validation, true) return obj.validationResult() } -func (obj *bgpSrteSrMplsSid) Validate() error { +func (obj *patternFlowRSVPPathRecordRouteType1Ipv4AddressPrefixLengthCounter) Validate() error { // emptyVars() obj.validateObj(&obj.validation, false) return obj.validationResult() } -func (obj *bgpSrteSrMplsSid) String() string { +func (obj *patternFlowRSVPPathRecordRouteType1Ipv4AddressPrefixLengthCounter) String() string { str, err := obj.ToYaml() if err != nil { return err.Error() @@ -322769,12 +369630,12 @@ func (obj *bgpSrteSrMplsSid) String() string { return str } -func (obj *bgpSrteSrMplsSid) Clone() (BgpSrteSrMplsSid, error) { +func (obj *patternFlowRSVPPathRecordRouteType1Ipv4AddressPrefixLengthCounter) Clone() (PatternFlowRSVPPathRecordRouteType1Ipv4AddressPrefixLengthCounter, error) { vErr := obj.Validate() if vErr != nil { return nil, vErr } - newObj := NewBgpSrteSrMplsSid() + newObj := NewPatternFlowRSVPPathRecordRouteType1Ipv4AddressPrefixLengthCounter() data, err := proto.Marshal(obj.Msg()) if err != nil { return nil, err @@ -322786,191 +369647,172 @@ func (obj *bgpSrteSrMplsSid) Clone() (BgpSrteSrMplsSid, error) { return newObj, nil } -// BgpSrteSrMplsSid is configuration for SR-MPLS with Label, TC, Bottom-of-Stack and TTL. -type BgpSrteSrMplsSid interface { +// PatternFlowRSVPPathRecordRouteType1Ipv4AddressPrefixLengthCounter is integer counter pattern +type PatternFlowRSVPPathRecordRouteType1Ipv4AddressPrefixLengthCounter interface { Validation - // Msg marshals BgpSrteSrMplsSid to protobuf object *otg.BgpSrteSrMplsSid + // Msg marshals PatternFlowRSVPPathRecordRouteType1Ipv4AddressPrefixLengthCounter to protobuf object *otg.PatternFlowRSVPPathRecordRouteType1Ipv4AddressPrefixLengthCounter // and doesn't set defaults - Msg() *otg.BgpSrteSrMplsSid - // SetMsg unmarshals BgpSrteSrMplsSid from protobuf object *otg.BgpSrteSrMplsSid + Msg() *otg.PatternFlowRSVPPathRecordRouteType1Ipv4AddressPrefixLengthCounter + // SetMsg unmarshals PatternFlowRSVPPathRecordRouteType1Ipv4AddressPrefixLengthCounter from protobuf object *otg.PatternFlowRSVPPathRecordRouteType1Ipv4AddressPrefixLengthCounter // and doesn't set defaults - SetMsg(*otg.BgpSrteSrMplsSid) BgpSrteSrMplsSid - // ToProto marshals BgpSrteSrMplsSid to protobuf object *otg.BgpSrteSrMplsSid - ToProto() (*otg.BgpSrteSrMplsSid, error) - // ToPbText marshals BgpSrteSrMplsSid to protobuf text + SetMsg(*otg.PatternFlowRSVPPathRecordRouteType1Ipv4AddressPrefixLengthCounter) PatternFlowRSVPPathRecordRouteType1Ipv4AddressPrefixLengthCounter + // ToProto marshals PatternFlowRSVPPathRecordRouteType1Ipv4AddressPrefixLengthCounter to protobuf object *otg.PatternFlowRSVPPathRecordRouteType1Ipv4AddressPrefixLengthCounter + ToProto() (*otg.PatternFlowRSVPPathRecordRouteType1Ipv4AddressPrefixLengthCounter, error) + // ToPbText marshals PatternFlowRSVPPathRecordRouteType1Ipv4AddressPrefixLengthCounter to protobuf text ToPbText() (string, error) - // ToYaml marshals BgpSrteSrMplsSid to YAML text + // ToYaml marshals PatternFlowRSVPPathRecordRouteType1Ipv4AddressPrefixLengthCounter to YAML text ToYaml() (string, error) - // ToJson marshals BgpSrteSrMplsSid to JSON text + // ToJson marshals PatternFlowRSVPPathRecordRouteType1Ipv4AddressPrefixLengthCounter to JSON text ToJson() (string, error) - // FromProto unmarshals BgpSrteSrMplsSid from protobuf object *otg.BgpSrteSrMplsSid - FromProto(msg *otg.BgpSrteSrMplsSid) (BgpSrteSrMplsSid, error) - // FromPbText unmarshals BgpSrteSrMplsSid from protobuf text + // FromProto unmarshals PatternFlowRSVPPathRecordRouteType1Ipv4AddressPrefixLengthCounter from protobuf object *otg.PatternFlowRSVPPathRecordRouteType1Ipv4AddressPrefixLengthCounter + FromProto(msg *otg.PatternFlowRSVPPathRecordRouteType1Ipv4AddressPrefixLengthCounter) (PatternFlowRSVPPathRecordRouteType1Ipv4AddressPrefixLengthCounter, error) + // FromPbText unmarshals PatternFlowRSVPPathRecordRouteType1Ipv4AddressPrefixLengthCounter from protobuf text FromPbText(value string) error - // FromYaml unmarshals BgpSrteSrMplsSid from YAML text + // FromYaml unmarshals PatternFlowRSVPPathRecordRouteType1Ipv4AddressPrefixLengthCounter from YAML text FromYaml(value string) error - // FromJson unmarshals BgpSrteSrMplsSid from JSON text + // FromJson unmarshals PatternFlowRSVPPathRecordRouteType1Ipv4AddressPrefixLengthCounter from JSON text FromJson(value string) error - // Validate validates BgpSrteSrMplsSid + // Validate validates PatternFlowRSVPPathRecordRouteType1Ipv4AddressPrefixLengthCounter Validate() error // A stringer function String() string // Clones the object - Clone() (BgpSrteSrMplsSid, error) + Clone() (PatternFlowRSVPPathRecordRouteType1Ipv4AddressPrefixLengthCounter, error) validateToAndFrom() error validateObj(vObj *validation, set_default bool) setDefault() - // Label returns uint32, set in BgpSrteSrMplsSid. - Label() uint32 - // SetLabel assigns uint32 provided by user to BgpSrteSrMplsSid - SetLabel(value uint32) BgpSrteSrMplsSid - // HasLabel checks if Label has been set in BgpSrteSrMplsSid - HasLabel() bool - // Tc returns uint32, set in BgpSrteSrMplsSid. - Tc() uint32 - // SetTc assigns uint32 provided by user to BgpSrteSrMplsSid - SetTc(value uint32) BgpSrteSrMplsSid - // HasTc checks if Tc has been set in BgpSrteSrMplsSid - HasTc() bool - // SBit returns bool, set in BgpSrteSrMplsSid. - SBit() bool - // SetSBit assigns bool provided by user to BgpSrteSrMplsSid - SetSBit(value bool) BgpSrteSrMplsSid - // HasSBit checks if SBit has been set in BgpSrteSrMplsSid - HasSBit() bool - // Ttl returns uint32, set in BgpSrteSrMplsSid. - Ttl() uint32 - // SetTtl assigns uint32 provided by user to BgpSrteSrMplsSid - SetTtl(value uint32) BgpSrteSrMplsSid - // HasTtl checks if Ttl has been set in BgpSrteSrMplsSid - HasTtl() bool -} - -// Label value in [0, 2^20 -1]. -// Label returns a uint32 -func (obj *bgpSrteSrMplsSid) Label() uint32 { - - return *obj.obj.Label - -} - -// Label value in [0, 2^20 -1]. -// Label returns a uint32 -func (obj *bgpSrteSrMplsSid) HasLabel() bool { - return obj.obj.Label != nil -} - -// Label value in [0, 2^20 -1]. -// SetLabel sets the uint32 value in the BgpSrteSrMplsSid object -func (obj *bgpSrteSrMplsSid) SetLabel(value uint32) BgpSrteSrMplsSid { - - obj.obj.Label = &value - return obj + // Start returns uint32, set in PatternFlowRSVPPathRecordRouteType1Ipv4AddressPrefixLengthCounter. + Start() uint32 + // SetStart assigns uint32 provided by user to PatternFlowRSVPPathRecordRouteType1Ipv4AddressPrefixLengthCounter + SetStart(value uint32) PatternFlowRSVPPathRecordRouteType1Ipv4AddressPrefixLengthCounter + // HasStart checks if Start has been set in PatternFlowRSVPPathRecordRouteType1Ipv4AddressPrefixLengthCounter + HasStart() bool + // Step returns uint32, set in PatternFlowRSVPPathRecordRouteType1Ipv4AddressPrefixLengthCounter. + Step() uint32 + // SetStep assigns uint32 provided by user to PatternFlowRSVPPathRecordRouteType1Ipv4AddressPrefixLengthCounter + SetStep(value uint32) PatternFlowRSVPPathRecordRouteType1Ipv4AddressPrefixLengthCounter + // HasStep checks if Step has been set in PatternFlowRSVPPathRecordRouteType1Ipv4AddressPrefixLengthCounter + HasStep() bool + // Count returns uint32, set in PatternFlowRSVPPathRecordRouteType1Ipv4AddressPrefixLengthCounter. + Count() uint32 + // SetCount assigns uint32 provided by user to PatternFlowRSVPPathRecordRouteType1Ipv4AddressPrefixLengthCounter + SetCount(value uint32) PatternFlowRSVPPathRecordRouteType1Ipv4AddressPrefixLengthCounter + // HasCount checks if Count has been set in PatternFlowRSVPPathRecordRouteType1Ipv4AddressPrefixLengthCounter + HasCount() bool } -// Traffic class in bits. -// Tc returns a uint32 -func (obj *bgpSrteSrMplsSid) Tc() uint32 { +// description is TBD +// Start returns a uint32 +func (obj *patternFlowRSVPPathRecordRouteType1Ipv4AddressPrefixLengthCounter) Start() uint32 { - return *obj.obj.Tc + return *obj.obj.Start } -// Traffic class in bits. -// Tc returns a uint32 -func (obj *bgpSrteSrMplsSid) HasTc() bool { - return obj.obj.Tc != nil +// description is TBD +// Start returns a uint32 +func (obj *patternFlowRSVPPathRecordRouteType1Ipv4AddressPrefixLengthCounter) HasStart() bool { + return obj.obj.Start != nil } -// Traffic class in bits. -// SetTc sets the uint32 value in the BgpSrteSrMplsSid object -func (obj *bgpSrteSrMplsSid) SetTc(value uint32) BgpSrteSrMplsSid { +// description is TBD +// SetStart sets the uint32 value in the PatternFlowRSVPPathRecordRouteType1Ipv4AddressPrefixLengthCounter object +func (obj *patternFlowRSVPPathRecordRouteType1Ipv4AddressPrefixLengthCounter) SetStart(value uint32) PatternFlowRSVPPathRecordRouteType1Ipv4AddressPrefixLengthCounter { - obj.obj.Tc = &value + obj.obj.Start = &value return obj } -// Bottom-of-Stack bit. -// SBit returns a bool -func (obj *bgpSrteSrMplsSid) SBit() bool { +// description is TBD +// Step returns a uint32 +func (obj *patternFlowRSVPPathRecordRouteType1Ipv4AddressPrefixLengthCounter) Step() uint32 { - return *obj.obj.SBit + return *obj.obj.Step } -// Bottom-of-Stack bit. -// SBit returns a bool -func (obj *bgpSrteSrMplsSid) HasSBit() bool { - return obj.obj.SBit != nil +// description is TBD +// Step returns a uint32 +func (obj *patternFlowRSVPPathRecordRouteType1Ipv4AddressPrefixLengthCounter) HasStep() bool { + return obj.obj.Step != nil } -// Bottom-of-Stack bit. -// SetSBit sets the bool value in the BgpSrteSrMplsSid object -func (obj *bgpSrteSrMplsSid) SetSBit(value bool) BgpSrteSrMplsSid { +// description is TBD +// SetStep sets the uint32 value in the PatternFlowRSVPPathRecordRouteType1Ipv4AddressPrefixLengthCounter object +func (obj *patternFlowRSVPPathRecordRouteType1Ipv4AddressPrefixLengthCounter) SetStep(value uint32) PatternFlowRSVPPathRecordRouteType1Ipv4AddressPrefixLengthCounter { - obj.obj.SBit = &value + obj.obj.Step = &value return obj } -// Time To Live. -// Ttl returns a uint32 -func (obj *bgpSrteSrMplsSid) Ttl() uint32 { +// description is TBD +// Count returns a uint32 +func (obj *patternFlowRSVPPathRecordRouteType1Ipv4AddressPrefixLengthCounter) Count() uint32 { - return *obj.obj.Ttl + return *obj.obj.Count } -// Time To Live. -// Ttl returns a uint32 -func (obj *bgpSrteSrMplsSid) HasTtl() bool { - return obj.obj.Ttl != nil +// description is TBD +// Count returns a uint32 +func (obj *patternFlowRSVPPathRecordRouteType1Ipv4AddressPrefixLengthCounter) HasCount() bool { + return obj.obj.Count != nil } -// Time To Live. -// SetTtl sets the uint32 value in the BgpSrteSrMplsSid object -func (obj *bgpSrteSrMplsSid) SetTtl(value uint32) BgpSrteSrMplsSid { +// description is TBD +// SetCount sets the uint32 value in the PatternFlowRSVPPathRecordRouteType1Ipv4AddressPrefixLengthCounter object +func (obj *patternFlowRSVPPathRecordRouteType1Ipv4AddressPrefixLengthCounter) SetCount(value uint32) PatternFlowRSVPPathRecordRouteType1Ipv4AddressPrefixLengthCounter { - obj.obj.Ttl = &value + obj.obj.Count = &value return obj } -func (obj *bgpSrteSrMplsSid) validateObj(vObj *validation, set_default bool) { +func (obj *patternFlowRSVPPathRecordRouteType1Ipv4AddressPrefixLengthCounter) validateObj(vObj *validation, set_default bool) { if set_default { obj.setDefault() } - if obj.obj.Label != nil { + if obj.obj.Start != nil { - if *obj.obj.Label > 1048575 { + if *obj.obj.Start > 255 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("0 <= BgpSrteSrMplsSid.Label <= 1048575 but Got %d", *obj.obj.Label)) + fmt.Sprintf("0 <= PatternFlowRSVPPathRecordRouteType1Ipv4AddressPrefixLengthCounter.Start <= 255 but Got %d", *obj.obj.Start)) } } - if obj.obj.Tc != nil { + if obj.obj.Step != nil { - if *obj.obj.Tc > 7 { + if *obj.obj.Step > 255 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("0 <= BgpSrteSrMplsSid.Tc <= 7 but Got %d", *obj.obj.Tc)) + fmt.Sprintf("0 <= PatternFlowRSVPPathRecordRouteType1Ipv4AddressPrefixLengthCounter.Step <= 255 but Got %d", *obj.obj.Step)) } } - if obj.obj.Ttl != nil { + if obj.obj.Count != nil { - if *obj.obj.Ttl > 225 { + if *obj.obj.Count > 255 { vObj.validationErrors = append( vObj.validationErrors, - fmt.Sprintf("0 <= BgpSrteSrMplsSid.Ttl <= 225 but Got %d", *obj.obj.Ttl)) + fmt.Sprintf("0 <= PatternFlowRSVPPathRecordRouteType1Ipv4AddressPrefixLengthCounter.Count <= 255 but Got %d", *obj.obj.Count)) } } } -func (obj *bgpSrteSrMplsSid) setDefault() { +func (obj *patternFlowRSVPPathRecordRouteType1Ipv4AddressPrefixLengthCounter) setDefault() { + if obj.obj.Start == nil { + obj.SetStart(32) + } + if obj.obj.Step == nil { + obj.SetStep(1) + } + if obj.obj.Count == nil { + obj.SetCount(1) + } } diff --git a/gosnappi/otg/otg.pb.go b/gosnappi/otg/otg.pb.go index 351bd194..c72b4702 100644 --- a/gosnappi/otg/otg.pb.go +++ b/gosnappi/otg/otg.pb.go @@ -3617,6 +3617,7 @@ const ( FlowHeader_Choice_ppp FlowHeader_Choice_Enum = 17 FlowHeader_Choice_igmpv1 FlowHeader_Choice_Enum = 18 FlowHeader_Choice_mpls FlowHeader_Choice_Enum = 19 + FlowHeader_Choice_rsvp FlowHeader_Choice_Enum = 20 ) // Enum value maps for FlowHeader_Choice_Enum. @@ -3642,6 +3643,7 @@ var ( 17: "ppp", 18: "igmpv1", 19: "mpls", + 20: "rsvp", } FlowHeader_Choice_Enum_value = map[string]int32{ "unspecified": 0, @@ -3664,6 +3666,7 @@ var ( "ppp": 17, "igmpv1": 18, "mpls": 19, + "rsvp": 20, } ) @@ -3838,6374 +3841,6233 @@ func (FlowIcmpv6_Choice_Enum) EnumDescriptor() ([]byte, []int) { return file_otg_proto_rawDescGZIP(), []int{184, 0, 0} } -type FlowSize_Choice_Enum int32 +type FlowRSVPFlag_Choice_Enum int32 const ( - FlowSize_Choice_unspecified FlowSize_Choice_Enum = 0 - FlowSize_Choice_fixed FlowSize_Choice_Enum = 1 - FlowSize_Choice_increment FlowSize_Choice_Enum = 2 - FlowSize_Choice_random FlowSize_Choice_Enum = 3 - FlowSize_Choice_weight_pairs FlowSize_Choice_Enum = 4 + FlowRSVPFlag_Choice_unspecified FlowRSVPFlag_Choice_Enum = 0 + FlowRSVPFlag_Choice_not_refresh_reduction_capable FlowRSVPFlag_Choice_Enum = 1 + FlowRSVPFlag_Choice_refresh_reduction_capable FlowRSVPFlag_Choice_Enum = 2 ) -// Enum value maps for FlowSize_Choice_Enum. +// Enum value maps for FlowRSVPFlag_Choice_Enum. var ( - FlowSize_Choice_Enum_name = map[int32]string{ + FlowRSVPFlag_Choice_Enum_name = map[int32]string{ 0: "unspecified", - 1: "fixed", - 2: "increment", - 3: "random", - 4: "weight_pairs", + 1: "not_refresh_reduction_capable", + 2: "refresh_reduction_capable", } - FlowSize_Choice_Enum_value = map[string]int32{ - "unspecified": 0, - "fixed": 1, - "increment": 2, - "random": 3, - "weight_pairs": 4, + FlowRSVPFlag_Choice_Enum_value = map[string]int32{ + "unspecified": 0, + "not_refresh_reduction_capable": 1, + "refresh_reduction_capable": 2, } ) -func (x FlowSize_Choice_Enum) Enum() *FlowSize_Choice_Enum { - p := new(FlowSize_Choice_Enum) +func (x FlowRSVPFlag_Choice_Enum) Enum() *FlowRSVPFlag_Choice_Enum { + p := new(FlowRSVPFlag_Choice_Enum) *p = x return p } -func (x FlowSize_Choice_Enum) String() string { +func (x FlowRSVPFlag_Choice_Enum) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } -func (FlowSize_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { +func (FlowRSVPFlag_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { return file_otg_proto_enumTypes[72].Descriptor() } -func (FlowSize_Choice_Enum) Type() protoreflect.EnumType { +func (FlowRSVPFlag_Choice_Enum) Type() protoreflect.EnumType { return &file_otg_proto_enumTypes[72] } -func (x FlowSize_Choice_Enum) Number() protoreflect.EnumNumber { +func (x FlowRSVPFlag_Choice_Enum) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } -// Deprecated: Use FlowSize_Choice_Enum.Descriptor instead. -func (FlowSize_Choice_Enum) EnumDescriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{189, 0, 0} +// Deprecated: Use FlowRSVPFlag_Choice_Enum.Descriptor instead. +func (FlowRSVPFlag_Choice_Enum) EnumDescriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{190, 0, 0} } -type FlowSizeWeightPairs_Choice_Enum int32 +type FlowRSVPLength_Choice_Enum int32 const ( - FlowSizeWeightPairs_Choice_unspecified FlowSizeWeightPairs_Choice_Enum = 0 - FlowSizeWeightPairs_Choice_predefined FlowSizeWeightPairs_Choice_Enum = 1 - FlowSizeWeightPairs_Choice_custom FlowSizeWeightPairs_Choice_Enum = 2 + FlowRSVPLength_Choice_unspecified FlowRSVPLength_Choice_Enum = 0 + FlowRSVPLength_Choice_auto FlowRSVPLength_Choice_Enum = 1 + FlowRSVPLength_Choice_value FlowRSVPLength_Choice_Enum = 2 ) -// Enum value maps for FlowSizeWeightPairs_Choice_Enum. +// Enum value maps for FlowRSVPLength_Choice_Enum. var ( - FlowSizeWeightPairs_Choice_Enum_name = map[int32]string{ + FlowRSVPLength_Choice_Enum_name = map[int32]string{ 0: "unspecified", - 1: "predefined", - 2: "custom", + 1: "auto", + 2: "value", } - FlowSizeWeightPairs_Choice_Enum_value = map[string]int32{ + FlowRSVPLength_Choice_Enum_value = map[string]int32{ "unspecified": 0, - "predefined": 1, - "custom": 2, + "auto": 1, + "value": 2, } ) -func (x FlowSizeWeightPairs_Choice_Enum) Enum() *FlowSizeWeightPairs_Choice_Enum { - p := new(FlowSizeWeightPairs_Choice_Enum) +func (x FlowRSVPLength_Choice_Enum) Enum() *FlowRSVPLength_Choice_Enum { + p := new(FlowRSVPLength_Choice_Enum) *p = x return p } -func (x FlowSizeWeightPairs_Choice_Enum) String() string { +func (x FlowRSVPLength_Choice_Enum) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } -func (FlowSizeWeightPairs_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { +func (FlowRSVPLength_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { return file_otg_proto_enumTypes[73].Descriptor() } -func (FlowSizeWeightPairs_Choice_Enum) Type() protoreflect.EnumType { +func (FlowRSVPLength_Choice_Enum) Type() protoreflect.EnumType { return &file_otg_proto_enumTypes[73] } -func (x FlowSizeWeightPairs_Choice_Enum) Number() protoreflect.EnumNumber { +func (x FlowRSVPLength_Choice_Enum) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } -// Deprecated: Use FlowSizeWeightPairs_Choice_Enum.Descriptor instead. -func (FlowSizeWeightPairs_Choice_Enum) EnumDescriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{192, 0, 0} +// Deprecated: Use FlowRSVPLength_Choice_Enum.Descriptor instead. +func (FlowRSVPLength_Choice_Enum) EnumDescriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{191, 0, 0} } -type FlowSizeWeightPairs_Predefined_Enum int32 +type FlowRSVPMessage_Choice_Enum int32 const ( - FlowSizeWeightPairs_Predefined_unspecified FlowSizeWeightPairs_Predefined_Enum = 0 - FlowSizeWeightPairs_Predefined_imix FlowSizeWeightPairs_Predefined_Enum = 1 - FlowSizeWeightPairs_Predefined_ipsec_imix FlowSizeWeightPairs_Predefined_Enum = 2 - FlowSizeWeightPairs_Predefined_ipv6_imix FlowSizeWeightPairs_Predefined_Enum = 3 - FlowSizeWeightPairs_Predefined_standard_imix FlowSizeWeightPairs_Predefined_Enum = 4 - FlowSizeWeightPairs_Predefined_tcp_imix FlowSizeWeightPairs_Predefined_Enum = 5 + FlowRSVPMessage_Choice_unspecified FlowRSVPMessage_Choice_Enum = 0 + FlowRSVPMessage_Choice_path FlowRSVPMessage_Choice_Enum = 1 ) -// Enum value maps for FlowSizeWeightPairs_Predefined_Enum. +// Enum value maps for FlowRSVPMessage_Choice_Enum. var ( - FlowSizeWeightPairs_Predefined_Enum_name = map[int32]string{ + FlowRSVPMessage_Choice_Enum_name = map[int32]string{ 0: "unspecified", - 1: "imix", - 2: "ipsec_imix", - 3: "ipv6_imix", - 4: "standard_imix", - 5: "tcp_imix", + 1: "path", } - FlowSizeWeightPairs_Predefined_Enum_value = map[string]int32{ - "unspecified": 0, - "imix": 1, - "ipsec_imix": 2, - "ipv6_imix": 3, - "standard_imix": 4, - "tcp_imix": 5, + FlowRSVPMessage_Choice_Enum_value = map[string]int32{ + "unspecified": 0, + "path": 1, } ) -func (x FlowSizeWeightPairs_Predefined_Enum) Enum() *FlowSizeWeightPairs_Predefined_Enum { - p := new(FlowSizeWeightPairs_Predefined_Enum) +func (x FlowRSVPMessage_Choice_Enum) Enum() *FlowRSVPMessage_Choice_Enum { + p := new(FlowRSVPMessage_Choice_Enum) *p = x return p } -func (x FlowSizeWeightPairs_Predefined_Enum) String() string { +func (x FlowRSVPMessage_Choice_Enum) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } -func (FlowSizeWeightPairs_Predefined_Enum) Descriptor() protoreflect.EnumDescriptor { +func (FlowRSVPMessage_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { return file_otg_proto_enumTypes[74].Descriptor() } -func (FlowSizeWeightPairs_Predefined_Enum) Type() protoreflect.EnumType { +func (FlowRSVPMessage_Choice_Enum) Type() protoreflect.EnumType { return &file_otg_proto_enumTypes[74] } -func (x FlowSizeWeightPairs_Predefined_Enum) Number() protoreflect.EnumNumber { +func (x FlowRSVPMessage_Choice_Enum) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } -// Deprecated: Use FlowSizeWeightPairs_Predefined_Enum.Descriptor instead. -func (FlowSizeWeightPairs_Predefined_Enum) EnumDescriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{192, 1, 0} +// Deprecated: Use FlowRSVPMessage_Choice_Enum.Descriptor instead. +func (FlowRSVPMessage_Choice_Enum) EnumDescriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{192, 0, 0} } -type FlowRate_Choice_Enum int32 +type FlowRSVPPathObjectLength_Choice_Enum int32 const ( - FlowRate_Choice_unspecified FlowRate_Choice_Enum = 0 - FlowRate_Choice_pps FlowRate_Choice_Enum = 1 - FlowRate_Choice_bps FlowRate_Choice_Enum = 2 - FlowRate_Choice_kbps FlowRate_Choice_Enum = 3 - FlowRate_Choice_mbps FlowRate_Choice_Enum = 4 - FlowRate_Choice_gbps FlowRate_Choice_Enum = 5 - FlowRate_Choice_percentage FlowRate_Choice_Enum = 6 + FlowRSVPPathObjectLength_Choice_unspecified FlowRSVPPathObjectLength_Choice_Enum = 0 + FlowRSVPPathObjectLength_Choice_auto FlowRSVPPathObjectLength_Choice_Enum = 1 + FlowRSVPPathObjectLength_Choice_value FlowRSVPPathObjectLength_Choice_Enum = 2 ) -// Enum value maps for FlowRate_Choice_Enum. +// Enum value maps for FlowRSVPPathObjectLength_Choice_Enum. var ( - FlowRate_Choice_Enum_name = map[int32]string{ + FlowRSVPPathObjectLength_Choice_Enum_name = map[int32]string{ 0: "unspecified", - 1: "pps", - 2: "bps", - 3: "kbps", - 4: "mbps", - 5: "gbps", - 6: "percentage", + 1: "auto", + 2: "value", } - FlowRate_Choice_Enum_value = map[string]int32{ + FlowRSVPPathObjectLength_Choice_Enum_value = map[string]int32{ "unspecified": 0, - "pps": 1, - "bps": 2, - "kbps": 3, - "mbps": 4, - "gbps": 5, - "percentage": 6, + "auto": 1, + "value": 2, } ) -func (x FlowRate_Choice_Enum) Enum() *FlowRate_Choice_Enum { - p := new(FlowRate_Choice_Enum) +func (x FlowRSVPPathObjectLength_Choice_Enum) Enum() *FlowRSVPPathObjectLength_Choice_Enum { + p := new(FlowRSVPPathObjectLength_Choice_Enum) *p = x return p } -func (x FlowRate_Choice_Enum) String() string { +func (x FlowRSVPPathObjectLength_Choice_Enum) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } -func (FlowRate_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { +func (FlowRSVPPathObjectLength_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { return file_otg_proto_enumTypes[75].Descriptor() } -func (FlowRate_Choice_Enum) Type() protoreflect.EnumType { +func (FlowRSVPPathObjectLength_Choice_Enum) Type() protoreflect.EnumType { return &file_otg_proto_enumTypes[75] } -func (x FlowRate_Choice_Enum) Number() protoreflect.EnumNumber { +func (x FlowRSVPPathObjectLength_Choice_Enum) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } -// Deprecated: Use FlowRate_Choice_Enum.Descriptor instead. -func (FlowRate_Choice_Enum) EnumDescriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{194, 0, 0} +// Deprecated: Use FlowRSVPPathObjectLength_Choice_Enum.Descriptor instead. +func (FlowRSVPPathObjectLength_Choice_Enum) EnumDescriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{195, 0, 0} } -type FlowDuration_Choice_Enum int32 +type FlowRSVPPathObjectsClass_Choice_Enum int32 const ( - FlowDuration_Choice_unspecified FlowDuration_Choice_Enum = 0 - FlowDuration_Choice_fixed_packets FlowDuration_Choice_Enum = 1 - FlowDuration_Choice_fixed_seconds FlowDuration_Choice_Enum = 2 - FlowDuration_Choice_burst FlowDuration_Choice_Enum = 3 - FlowDuration_Choice_continuous FlowDuration_Choice_Enum = 4 -) - -// Enum value maps for FlowDuration_Choice_Enum. + FlowRSVPPathObjectsClass_Choice_unspecified FlowRSVPPathObjectsClass_Choice_Enum = 0 + FlowRSVPPathObjectsClass_Choice_session FlowRSVPPathObjectsClass_Choice_Enum = 1 + FlowRSVPPathObjectsClass_Choice_rsvp_hop FlowRSVPPathObjectsClass_Choice_Enum = 2 + FlowRSVPPathObjectsClass_Choice_time_values FlowRSVPPathObjectsClass_Choice_Enum = 3 + FlowRSVPPathObjectsClass_Choice_explicit_route FlowRSVPPathObjectsClass_Choice_Enum = 4 + FlowRSVPPathObjectsClass_Choice_label_request FlowRSVPPathObjectsClass_Choice_Enum = 5 + FlowRSVPPathObjectsClass_Choice_session_attribute FlowRSVPPathObjectsClass_Choice_Enum = 6 + FlowRSVPPathObjectsClass_Choice_sender_template FlowRSVPPathObjectsClass_Choice_Enum = 7 + FlowRSVPPathObjectsClass_Choice_sender_tspec FlowRSVPPathObjectsClass_Choice_Enum = 8 + FlowRSVPPathObjectsClass_Choice_record_route FlowRSVPPathObjectsClass_Choice_Enum = 9 + FlowRSVPPathObjectsClass_Choice_custom FlowRSVPPathObjectsClass_Choice_Enum = 10 +) + +// Enum value maps for FlowRSVPPathObjectsClass_Choice_Enum. var ( - FlowDuration_Choice_Enum_name = map[int32]string{ - 0: "unspecified", - 1: "fixed_packets", - 2: "fixed_seconds", - 3: "burst", - 4: "continuous", - } - FlowDuration_Choice_Enum_value = map[string]int32{ - "unspecified": 0, - "fixed_packets": 1, - "fixed_seconds": 2, - "burst": 3, - "continuous": 4, + FlowRSVPPathObjectsClass_Choice_Enum_name = map[int32]string{ + 0: "unspecified", + 1: "session", + 2: "rsvp_hop", + 3: "time_values", + 4: "explicit_route", + 5: "label_request", + 6: "session_attribute", + 7: "sender_template", + 8: "sender_tspec", + 9: "record_route", + 10: "custom", + } + FlowRSVPPathObjectsClass_Choice_Enum_value = map[string]int32{ + "unspecified": 0, + "session": 1, + "rsvp_hop": 2, + "time_values": 3, + "explicit_route": 4, + "label_request": 5, + "session_attribute": 6, + "sender_template": 7, + "sender_tspec": 8, + "record_route": 9, + "custom": 10, } ) -func (x FlowDuration_Choice_Enum) Enum() *FlowDuration_Choice_Enum { - p := new(FlowDuration_Choice_Enum) +func (x FlowRSVPPathObjectsClass_Choice_Enum) Enum() *FlowRSVPPathObjectsClass_Choice_Enum { + p := new(FlowRSVPPathObjectsClass_Choice_Enum) *p = x return p } -func (x FlowDuration_Choice_Enum) String() string { +func (x FlowRSVPPathObjectsClass_Choice_Enum) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } -func (FlowDuration_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { +func (FlowRSVPPathObjectsClass_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { return file_otg_proto_enumTypes[76].Descriptor() } -func (FlowDuration_Choice_Enum) Type() protoreflect.EnumType { +func (FlowRSVPPathObjectsClass_Choice_Enum) Type() protoreflect.EnumType { return &file_otg_proto_enumTypes[76] } -func (x FlowDuration_Choice_Enum) Number() protoreflect.EnumNumber { +func (x FlowRSVPPathObjectsClass_Choice_Enum) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } -// Deprecated: Use FlowDuration_Choice_Enum.Descriptor instead. -func (FlowDuration_Choice_Enum) EnumDescriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{195, 0, 0} +// Deprecated: Use FlowRSVPPathObjectsClass_Choice_Enum.Descriptor instead. +func (FlowRSVPPathObjectsClass_Choice_Enum) EnumDescriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{196, 0, 0} } -type FlowDelay_Choice_Enum int32 +type FlowRSVPPathObjectsSessionCType_Choice_Enum int32 const ( - FlowDelay_Choice_unspecified FlowDelay_Choice_Enum = 0 - FlowDelay_Choice_bytes FlowDelay_Choice_Enum = 1 - FlowDelay_Choice_nanoseconds FlowDelay_Choice_Enum = 2 - FlowDelay_Choice_microseconds FlowDelay_Choice_Enum = 3 + FlowRSVPPathObjectsSessionCType_Choice_unspecified FlowRSVPPathObjectsSessionCType_Choice_Enum = 0 + FlowRSVPPathObjectsSessionCType_Choice_lsp_tunnel_ipv4 FlowRSVPPathObjectsSessionCType_Choice_Enum = 1 ) -// Enum value maps for FlowDelay_Choice_Enum. +// Enum value maps for FlowRSVPPathObjectsSessionCType_Choice_Enum. var ( - FlowDelay_Choice_Enum_name = map[int32]string{ + FlowRSVPPathObjectsSessionCType_Choice_Enum_name = map[int32]string{ 0: "unspecified", - 1: "bytes", - 2: "nanoseconds", - 3: "microseconds", + 1: "lsp_tunnel_ipv4", } - FlowDelay_Choice_Enum_value = map[string]int32{ - "unspecified": 0, - "bytes": 1, - "nanoseconds": 2, - "microseconds": 3, + FlowRSVPPathObjectsSessionCType_Choice_Enum_value = map[string]int32{ + "unspecified": 0, + "lsp_tunnel_ipv4": 1, } ) -func (x FlowDelay_Choice_Enum) Enum() *FlowDelay_Choice_Enum { - p := new(FlowDelay_Choice_Enum) +func (x FlowRSVPPathObjectsSessionCType_Choice_Enum) Enum() *FlowRSVPPathObjectsSessionCType_Choice_Enum { + p := new(FlowRSVPPathObjectsSessionCType_Choice_Enum) *p = x return p } -func (x FlowDelay_Choice_Enum) String() string { +func (x FlowRSVPPathObjectsSessionCType_Choice_Enum) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } -func (FlowDelay_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { +func (FlowRSVPPathObjectsSessionCType_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { return file_otg_proto_enumTypes[77].Descriptor() } -func (FlowDelay_Choice_Enum) Type() protoreflect.EnumType { +func (FlowRSVPPathObjectsSessionCType_Choice_Enum) Type() protoreflect.EnumType { return &file_otg_proto_enumTypes[77] } -func (x FlowDelay_Choice_Enum) Number() protoreflect.EnumNumber { +func (x FlowRSVPPathObjectsSessionCType_Choice_Enum) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } -// Deprecated: Use FlowDelay_Choice_Enum.Descriptor instead. -func (FlowDelay_Choice_Enum) EnumDescriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{197, 0, 0} +// Deprecated: Use FlowRSVPPathObjectsSessionCType_Choice_Enum.Descriptor instead. +func (FlowRSVPPathObjectsSessionCType_Choice_Enum) EnumDescriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{198, 0, 0} } -type FlowDurationInterBurstGap_Choice_Enum int32 +type FlowRSVPPathObjectsRsvpHopCType_Choice_Enum int32 const ( - FlowDurationInterBurstGap_Choice_unspecified FlowDurationInterBurstGap_Choice_Enum = 0 - FlowDurationInterBurstGap_Choice_bytes FlowDurationInterBurstGap_Choice_Enum = 1 - FlowDurationInterBurstGap_Choice_nanoseconds FlowDurationInterBurstGap_Choice_Enum = 2 - FlowDurationInterBurstGap_Choice_microseconds FlowDurationInterBurstGap_Choice_Enum = 3 + FlowRSVPPathObjectsRsvpHopCType_Choice_unspecified FlowRSVPPathObjectsRsvpHopCType_Choice_Enum = 0 + FlowRSVPPathObjectsRsvpHopCType_Choice_ipv4 FlowRSVPPathObjectsRsvpHopCType_Choice_Enum = 1 ) -// Enum value maps for FlowDurationInterBurstGap_Choice_Enum. +// Enum value maps for FlowRSVPPathObjectsRsvpHopCType_Choice_Enum. var ( - FlowDurationInterBurstGap_Choice_Enum_name = map[int32]string{ + FlowRSVPPathObjectsRsvpHopCType_Choice_Enum_name = map[int32]string{ 0: "unspecified", - 1: "bytes", - 2: "nanoseconds", - 3: "microseconds", + 1: "ipv4", } - FlowDurationInterBurstGap_Choice_Enum_value = map[string]int32{ - "unspecified": 0, - "bytes": 1, - "nanoseconds": 2, - "microseconds": 3, + FlowRSVPPathObjectsRsvpHopCType_Choice_Enum_value = map[string]int32{ + "unspecified": 0, + "ipv4": 1, } ) -func (x FlowDurationInterBurstGap_Choice_Enum) Enum() *FlowDurationInterBurstGap_Choice_Enum { - p := new(FlowDurationInterBurstGap_Choice_Enum) +func (x FlowRSVPPathObjectsRsvpHopCType_Choice_Enum) Enum() *FlowRSVPPathObjectsRsvpHopCType_Choice_Enum { + p := new(FlowRSVPPathObjectsRsvpHopCType_Choice_Enum) *p = x return p } -func (x FlowDurationInterBurstGap_Choice_Enum) String() string { +func (x FlowRSVPPathObjectsRsvpHopCType_Choice_Enum) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } -func (FlowDurationInterBurstGap_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { +func (FlowRSVPPathObjectsRsvpHopCType_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { return file_otg_proto_enumTypes[78].Descriptor() } -func (FlowDurationInterBurstGap_Choice_Enum) Type() protoreflect.EnumType { +func (FlowRSVPPathObjectsRsvpHopCType_Choice_Enum) Type() protoreflect.EnumType { return &file_otg_proto_enumTypes[78] } -func (x FlowDurationInterBurstGap_Choice_Enum) Number() protoreflect.EnumNumber { +func (x FlowRSVPPathObjectsRsvpHopCType_Choice_Enum) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } -// Deprecated: Use FlowDurationInterBurstGap_Choice_Enum.Descriptor instead. -func (FlowDurationInterBurstGap_Choice_Enum) EnumDescriptor() ([]byte, []int) { +// Deprecated: Use FlowRSVPPathObjectsRsvpHopCType_Choice_Enum.Descriptor instead. +func (FlowRSVPPathObjectsRsvpHopCType_Choice_Enum) EnumDescriptor() ([]byte, []int) { return file_otg_proto_rawDescGZIP(), []int{201, 0, 0} } -type FlowLatencyMetrics_Mode_Enum int32 +type FlowRSVPPathObjectsTimeValuesCType_Choice_Enum int32 const ( - FlowLatencyMetrics_Mode_unspecified FlowLatencyMetrics_Mode_Enum = 0 - FlowLatencyMetrics_Mode_store_forward FlowLatencyMetrics_Mode_Enum = 1 - FlowLatencyMetrics_Mode_cut_through FlowLatencyMetrics_Mode_Enum = 2 + FlowRSVPPathObjectsTimeValuesCType_Choice_unspecified FlowRSVPPathObjectsTimeValuesCType_Choice_Enum = 0 + FlowRSVPPathObjectsTimeValuesCType_Choice_type_1_time_value FlowRSVPPathObjectsTimeValuesCType_Choice_Enum = 1 ) -// Enum value maps for FlowLatencyMetrics_Mode_Enum. +// Enum value maps for FlowRSVPPathObjectsTimeValuesCType_Choice_Enum. var ( - FlowLatencyMetrics_Mode_Enum_name = map[int32]string{ + FlowRSVPPathObjectsTimeValuesCType_Choice_Enum_name = map[int32]string{ 0: "unspecified", - 1: "store_forward", - 2: "cut_through", + 1: "type_1_time_value", } - FlowLatencyMetrics_Mode_Enum_value = map[string]int32{ - "unspecified": 0, - "store_forward": 1, - "cut_through": 2, + FlowRSVPPathObjectsTimeValuesCType_Choice_Enum_value = map[string]int32{ + "unspecified": 0, + "type_1_time_value": 1, } ) -func (x FlowLatencyMetrics_Mode_Enum) Enum() *FlowLatencyMetrics_Mode_Enum { - p := new(FlowLatencyMetrics_Mode_Enum) +func (x FlowRSVPPathObjectsTimeValuesCType_Choice_Enum) Enum() *FlowRSVPPathObjectsTimeValuesCType_Choice_Enum { + p := new(FlowRSVPPathObjectsTimeValuesCType_Choice_Enum) *p = x return p } -func (x FlowLatencyMetrics_Mode_Enum) String() string { +func (x FlowRSVPPathObjectsTimeValuesCType_Choice_Enum) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } -func (FlowLatencyMetrics_Mode_Enum) Descriptor() protoreflect.EnumDescriptor { +func (FlowRSVPPathObjectsTimeValuesCType_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { return file_otg_proto_enumTypes[79].Descriptor() } -func (FlowLatencyMetrics_Mode_Enum) Type() protoreflect.EnumType { +func (FlowRSVPPathObjectsTimeValuesCType_Choice_Enum) Type() protoreflect.EnumType { return &file_otg_proto_enumTypes[79] } -func (x FlowLatencyMetrics_Mode_Enum) Number() protoreflect.EnumNumber { +func (x FlowRSVPPathObjectsTimeValuesCType_Choice_Enum) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } -// Deprecated: Use FlowLatencyMetrics_Mode_Enum.Descriptor instead. -func (FlowLatencyMetrics_Mode_Enum) EnumDescriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{203, 0, 0} +// Deprecated: Use FlowRSVPPathObjectsTimeValuesCType_Choice_Enum.Descriptor instead. +func (FlowRSVPPathObjectsTimeValuesCType_Choice_Enum) EnumDescriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{204, 0, 0} } -type FlowRxTxRatio_Choice_Enum int32 +type FlowRSVPPathObjectsClassExplicitRouteCType_Choice_Enum int32 const ( - FlowRxTxRatio_Choice_unspecified FlowRxTxRatio_Choice_Enum = 0 - FlowRxTxRatio_Choice_rx_count FlowRxTxRatio_Choice_Enum = 1 - FlowRxTxRatio_Choice_value FlowRxTxRatio_Choice_Enum = 2 + FlowRSVPPathObjectsClassExplicitRouteCType_Choice_unspecified FlowRSVPPathObjectsClassExplicitRouteCType_Choice_Enum = 0 + FlowRSVPPathObjectsClassExplicitRouteCType_Choice_type_1_explicit_route FlowRSVPPathObjectsClassExplicitRouteCType_Choice_Enum = 1 ) -// Enum value maps for FlowRxTxRatio_Choice_Enum. +// Enum value maps for FlowRSVPPathObjectsClassExplicitRouteCType_Choice_Enum. var ( - FlowRxTxRatio_Choice_Enum_name = map[int32]string{ + FlowRSVPPathObjectsClassExplicitRouteCType_Choice_Enum_name = map[int32]string{ 0: "unspecified", - 1: "rx_count", - 2: "value", + 1: "type_1_explicit_route", } - FlowRxTxRatio_Choice_Enum_value = map[string]int32{ - "unspecified": 0, - "rx_count": 1, - "value": 2, + FlowRSVPPathObjectsClassExplicitRouteCType_Choice_Enum_value = map[string]int32{ + "unspecified": 0, + "type_1_explicit_route": 1, } ) -func (x FlowRxTxRatio_Choice_Enum) Enum() *FlowRxTxRatio_Choice_Enum { - p := new(FlowRxTxRatio_Choice_Enum) +func (x FlowRSVPPathObjectsClassExplicitRouteCType_Choice_Enum) Enum() *FlowRSVPPathObjectsClassExplicitRouteCType_Choice_Enum { + p := new(FlowRSVPPathObjectsClassExplicitRouteCType_Choice_Enum) *p = x return p } -func (x FlowRxTxRatio_Choice_Enum) String() string { +func (x FlowRSVPPathObjectsClassExplicitRouteCType_Choice_Enum) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } -func (FlowRxTxRatio_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { +func (FlowRSVPPathObjectsClassExplicitRouteCType_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { return file_otg_proto_enumTypes[80].Descriptor() } -func (FlowRxTxRatio_Choice_Enum) Type() protoreflect.EnumType { +func (FlowRSVPPathObjectsClassExplicitRouteCType_Choice_Enum) Type() protoreflect.EnumType { return &file_otg_proto_enumTypes[80] } -func (x FlowRxTxRatio_Choice_Enum) Number() protoreflect.EnumNumber { +func (x FlowRSVPPathObjectsClassExplicitRouteCType_Choice_Enum) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } -// Deprecated: Use FlowRxTxRatio_Choice_Enum.Descriptor instead. -func (FlowRxTxRatio_Choice_Enum) EnumDescriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{205, 0, 0} +// Deprecated: Use FlowRSVPPathObjectsClassExplicitRouteCType_Choice_Enum.Descriptor instead. +func (FlowRSVPPathObjectsClassExplicitRouteCType_Choice_Enum) EnumDescriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{207, 0, 0} } -type EventRequest_Type_Enum int32 +type FlowRSVPType1ExplicitRouteSubobjectsType_Choice_Enum int32 const ( - EventRequest_Type_unspecified EventRequest_Type_Enum = 0 - EventRequest_Type_link_down EventRequest_Type_Enum = 1 - EventRequest_Type_link_up EventRequest_Type_Enum = 2 - EventRequest_Type_route_withdraw EventRequest_Type_Enum = 3 - EventRequest_Type_route_advertise EventRequest_Type_Enum = 4 - EventRequest_Type_flow_rx_rate_above_threshold EventRequest_Type_Enum = 5 - EventRequest_Type_flow_rx_rate_below_threshold EventRequest_Type_Enum = 6 + FlowRSVPType1ExplicitRouteSubobjectsType_Choice_unspecified FlowRSVPType1ExplicitRouteSubobjectsType_Choice_Enum = 0 + FlowRSVPType1ExplicitRouteSubobjectsType_Choice_ipv4_prefix FlowRSVPType1ExplicitRouteSubobjectsType_Choice_Enum = 1 + FlowRSVPType1ExplicitRouteSubobjectsType_Choice_four_byte_as_number FlowRSVPType1ExplicitRouteSubobjectsType_Choice_Enum = 2 ) -// Enum value maps for EventRequest_Type_Enum. +// Enum value maps for FlowRSVPType1ExplicitRouteSubobjectsType_Choice_Enum. var ( - EventRequest_Type_Enum_name = map[int32]string{ + FlowRSVPType1ExplicitRouteSubobjectsType_Choice_Enum_name = map[int32]string{ 0: "unspecified", - 1: "link_down", - 2: "link_up", - 3: "route_withdraw", - 4: "route_advertise", - 5: "flow_rx_rate_above_threshold", - 6: "flow_rx_rate_below_threshold", + 1: "ipv4_prefix", + 2: "four_byte_as_number", } - EventRequest_Type_Enum_value = map[string]int32{ - "unspecified": 0, - "link_down": 1, - "link_up": 2, - "route_withdraw": 3, - "route_advertise": 4, - "flow_rx_rate_above_threshold": 5, - "flow_rx_rate_below_threshold": 6, + FlowRSVPType1ExplicitRouteSubobjectsType_Choice_Enum_value = map[string]int32{ + "unspecified": 0, + "ipv4_prefix": 1, + "four_byte_as_number": 2, } ) -func (x EventRequest_Type_Enum) Enum() *EventRequest_Type_Enum { - p := new(EventRequest_Type_Enum) +func (x FlowRSVPType1ExplicitRouteSubobjectsType_Choice_Enum) Enum() *FlowRSVPType1ExplicitRouteSubobjectsType_Choice_Enum { + p := new(FlowRSVPType1ExplicitRouteSubobjectsType_Choice_Enum) *p = x return p } -func (x EventRequest_Type_Enum) String() string { +func (x FlowRSVPType1ExplicitRouteSubobjectsType_Choice_Enum) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } -func (EventRequest_Type_Enum) Descriptor() protoreflect.EnumDescriptor { +func (FlowRSVPType1ExplicitRouteSubobjectsType_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { return file_otg_proto_enumTypes[81].Descriptor() } -func (EventRequest_Type_Enum) Type() protoreflect.EnumType { +func (FlowRSVPType1ExplicitRouteSubobjectsType_Choice_Enum) Type() protoreflect.EnumType { return &file_otg_proto_enumTypes[81] } -func (x EventRequest_Type_Enum) Number() protoreflect.EnumNumber { +func (x FlowRSVPType1ExplicitRouteSubobjectsType_Choice_Enum) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } -// Deprecated: Use EventRequest_Type_Enum.Descriptor instead. -func (EventRequest_Type_Enum) EnumDescriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{211, 0, 0} +// Deprecated: Use FlowRSVPType1ExplicitRouteSubobjectsType_Choice_Enum.Descriptor instead. +func (FlowRSVPType1ExplicitRouteSubobjectsType_Choice_Enum) EnumDescriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{210, 0, 0} } -type LldpConnection_Choice_Enum int32 +type FlowRSVPExplicitRouteLength_Choice_Enum int32 const ( - LldpConnection_Choice_unspecified LldpConnection_Choice_Enum = 0 - LldpConnection_Choice_port_name LldpConnection_Choice_Enum = 1 + FlowRSVPExplicitRouteLength_Choice_unspecified FlowRSVPExplicitRouteLength_Choice_Enum = 0 + FlowRSVPExplicitRouteLength_Choice_auto FlowRSVPExplicitRouteLength_Choice_Enum = 1 + FlowRSVPExplicitRouteLength_Choice_value FlowRSVPExplicitRouteLength_Choice_Enum = 2 ) -// Enum value maps for LldpConnection_Choice_Enum. +// Enum value maps for FlowRSVPExplicitRouteLength_Choice_Enum. var ( - LldpConnection_Choice_Enum_name = map[int32]string{ + FlowRSVPExplicitRouteLength_Choice_Enum_name = map[int32]string{ 0: "unspecified", - 1: "port_name", + 1: "auto", + 2: "value", } - LldpConnection_Choice_Enum_value = map[string]int32{ + FlowRSVPExplicitRouteLength_Choice_Enum_value = map[string]int32{ "unspecified": 0, - "port_name": 1, + "auto": 1, + "value": 2, } ) -func (x LldpConnection_Choice_Enum) Enum() *LldpConnection_Choice_Enum { - p := new(LldpConnection_Choice_Enum) +func (x FlowRSVPExplicitRouteLength_Choice_Enum) Enum() *FlowRSVPExplicitRouteLength_Choice_Enum { + p := new(FlowRSVPExplicitRouteLength_Choice_Enum) *p = x return p } -func (x LldpConnection_Choice_Enum) String() string { +func (x FlowRSVPExplicitRouteLength_Choice_Enum) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } -func (LldpConnection_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { +func (FlowRSVPExplicitRouteLength_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { return file_otg_proto_enumTypes[82].Descriptor() } -func (LldpConnection_Choice_Enum) Type() protoreflect.EnumType { +func (FlowRSVPExplicitRouteLength_Choice_Enum) Type() protoreflect.EnumType { return &file_otg_proto_enumTypes[82] } -func (x LldpConnection_Choice_Enum) Number() protoreflect.EnumNumber { +func (x FlowRSVPExplicitRouteLength_Choice_Enum) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } -// Deprecated: Use LldpConnection_Choice_Enum.Descriptor instead. -func (LldpConnection_Choice_Enum) EnumDescriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{214, 0, 0} +// Deprecated: Use FlowRSVPExplicitRouteLength_Choice_Enum.Descriptor instead. +func (FlowRSVPExplicitRouteLength_Choice_Enum) EnumDescriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{213, 0, 0} } -type LldpChassisId_Choice_Enum int32 +type FlowRSVPPathObjectsLabelRequestCType_Choice_Enum int32 const ( - LldpChassisId_Choice_unspecified LldpChassisId_Choice_Enum = 0 - LldpChassisId_Choice_mac_address_subtype LldpChassisId_Choice_Enum = 1 - LldpChassisId_Choice_interface_name_subtype LldpChassisId_Choice_Enum = 2 - LldpChassisId_Choice_local_subtype LldpChassisId_Choice_Enum = 3 + FlowRSVPPathObjectsLabelRequestCType_Choice_unspecified FlowRSVPPathObjectsLabelRequestCType_Choice_Enum = 0 + FlowRSVPPathObjectsLabelRequestCType_Choice_without_label_range FlowRSVPPathObjectsLabelRequestCType_Choice_Enum = 1 ) -// Enum value maps for LldpChassisId_Choice_Enum. +// Enum value maps for FlowRSVPPathObjectsLabelRequestCType_Choice_Enum. var ( - LldpChassisId_Choice_Enum_name = map[int32]string{ + FlowRSVPPathObjectsLabelRequestCType_Choice_Enum_name = map[int32]string{ 0: "unspecified", - 1: "mac_address_subtype", - 2: "interface_name_subtype", - 3: "local_subtype", + 1: "without_label_range", } - LldpChassisId_Choice_Enum_value = map[string]int32{ - "unspecified": 0, - "mac_address_subtype": 1, - "interface_name_subtype": 2, - "local_subtype": 3, + FlowRSVPPathObjectsLabelRequestCType_Choice_Enum_value = map[string]int32{ + "unspecified": 0, + "without_label_range": 1, } ) -func (x LldpChassisId_Choice_Enum) Enum() *LldpChassisId_Choice_Enum { - p := new(LldpChassisId_Choice_Enum) +func (x FlowRSVPPathObjectsLabelRequestCType_Choice_Enum) Enum() *FlowRSVPPathObjectsLabelRequestCType_Choice_Enum { + p := new(FlowRSVPPathObjectsLabelRequestCType_Choice_Enum) *p = x return p } -func (x LldpChassisId_Choice_Enum) String() string { +func (x FlowRSVPPathObjectsLabelRequestCType_Choice_Enum) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } -func (LldpChassisId_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { +func (FlowRSVPPathObjectsLabelRequestCType_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { return file_otg_proto_enumTypes[83].Descriptor() } -func (LldpChassisId_Choice_Enum) Type() protoreflect.EnumType { +func (FlowRSVPPathObjectsLabelRequestCType_Choice_Enum) Type() protoreflect.EnumType { return &file_otg_proto_enumTypes[83] } -func (x LldpChassisId_Choice_Enum) Number() protoreflect.EnumNumber { +func (x FlowRSVPPathObjectsLabelRequestCType_Choice_Enum) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } -// Deprecated: Use LldpChassisId_Choice_Enum.Descriptor instead. -func (LldpChassisId_Choice_Enum) EnumDescriptor() ([]byte, []int) { +// Deprecated: Use FlowRSVPPathObjectsLabelRequestCType_Choice_Enum.Descriptor instead. +func (FlowRSVPPathObjectsLabelRequestCType_Choice_Enum) EnumDescriptor() ([]byte, []int) { return file_otg_proto_rawDescGZIP(), []int{215, 0, 0} } -type LldpPortId_Choice_Enum int32 +type FlowRSVPPathObjectsSessionAttributeCType_Choice_Enum int32 const ( - LldpPortId_Choice_unspecified LldpPortId_Choice_Enum = 0 - LldpPortId_Choice_mac_address_subtype LldpPortId_Choice_Enum = 1 - LldpPortId_Choice_interface_name_subtype LldpPortId_Choice_Enum = 2 - LldpPortId_Choice_local_subtype LldpPortId_Choice_Enum = 3 + FlowRSVPPathObjectsSessionAttributeCType_Choice_unspecified FlowRSVPPathObjectsSessionAttributeCType_Choice_Enum = 0 + FlowRSVPPathObjectsSessionAttributeCType_Choice_lsp_tunnel FlowRSVPPathObjectsSessionAttributeCType_Choice_Enum = 1 + FlowRSVPPathObjectsSessionAttributeCType_Choice_lsp_tunnel_ra FlowRSVPPathObjectsSessionAttributeCType_Choice_Enum = 2 ) -// Enum value maps for LldpPortId_Choice_Enum. +// Enum value maps for FlowRSVPPathObjectsSessionAttributeCType_Choice_Enum. var ( - LldpPortId_Choice_Enum_name = map[int32]string{ + FlowRSVPPathObjectsSessionAttributeCType_Choice_Enum_name = map[int32]string{ 0: "unspecified", - 1: "mac_address_subtype", - 2: "interface_name_subtype", - 3: "local_subtype", + 1: "lsp_tunnel", + 2: "lsp_tunnel_ra", } - LldpPortId_Choice_Enum_value = map[string]int32{ - "unspecified": 0, - "mac_address_subtype": 1, - "interface_name_subtype": 2, - "local_subtype": 3, + FlowRSVPPathObjectsSessionAttributeCType_Choice_Enum_value = map[string]int32{ + "unspecified": 0, + "lsp_tunnel": 1, + "lsp_tunnel_ra": 2, } ) -func (x LldpPortId_Choice_Enum) Enum() *LldpPortId_Choice_Enum { - p := new(LldpPortId_Choice_Enum) +func (x FlowRSVPPathObjectsSessionAttributeCType_Choice_Enum) Enum() *FlowRSVPPathObjectsSessionAttributeCType_Choice_Enum { + p := new(FlowRSVPPathObjectsSessionAttributeCType_Choice_Enum) *p = x return p } -func (x LldpPortId_Choice_Enum) String() string { +func (x FlowRSVPPathObjectsSessionAttributeCType_Choice_Enum) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } -func (LldpPortId_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { +func (FlowRSVPPathObjectsSessionAttributeCType_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { return file_otg_proto_enumTypes[84].Descriptor() } -func (LldpPortId_Choice_Enum) Type() protoreflect.EnumType { +func (FlowRSVPPathObjectsSessionAttributeCType_Choice_Enum) Type() protoreflect.EnumType { return &file_otg_proto_enumTypes[84] } -func (x LldpPortId_Choice_Enum) Number() protoreflect.EnumNumber { +func (x FlowRSVPPathObjectsSessionAttributeCType_Choice_Enum) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } -// Deprecated: Use LldpPortId_Choice_Enum.Descriptor instead. -func (LldpPortId_Choice_Enum) EnumDescriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{216, 0, 0} +// Deprecated: Use FlowRSVPPathObjectsSessionAttributeCType_Choice_Enum.Descriptor instead. +func (FlowRSVPPathObjectsSessionAttributeCType_Choice_Enum) EnumDescriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{218, 0, 0} } -type LldpChassisMacSubType_Choice_Enum int32 +type FlowRSVPLspTunnelFlag_Choice_Enum int32 const ( - LldpChassisMacSubType_Choice_unspecified LldpChassisMacSubType_Choice_Enum = 0 - LldpChassisMacSubType_Choice_auto LldpChassisMacSubType_Choice_Enum = 1 - LldpChassisMacSubType_Choice_value LldpChassisMacSubType_Choice_Enum = 2 + FlowRSVPLspTunnelFlag_Choice_unspecified FlowRSVPLspTunnelFlag_Choice_Enum = 0 + FlowRSVPLspTunnelFlag_Choice_local_protection_desired FlowRSVPLspTunnelFlag_Choice_Enum = 1 + FlowRSVPLspTunnelFlag_Choice_label_recording_desired FlowRSVPLspTunnelFlag_Choice_Enum = 2 + FlowRSVPLspTunnelFlag_Choice_se_style_desired FlowRSVPLspTunnelFlag_Choice_Enum = 3 ) -// Enum value maps for LldpChassisMacSubType_Choice_Enum. +// Enum value maps for FlowRSVPLspTunnelFlag_Choice_Enum. var ( - LldpChassisMacSubType_Choice_Enum_name = map[int32]string{ + FlowRSVPLspTunnelFlag_Choice_Enum_name = map[int32]string{ 0: "unspecified", - 1: "auto", - 2: "value", + 1: "local_protection_desired", + 2: "label_recording_desired", + 3: "se_style_desired", } - LldpChassisMacSubType_Choice_Enum_value = map[string]int32{ - "unspecified": 0, - "auto": 1, - "value": 2, + FlowRSVPLspTunnelFlag_Choice_Enum_value = map[string]int32{ + "unspecified": 0, + "local_protection_desired": 1, + "label_recording_desired": 2, + "se_style_desired": 3, } ) -func (x LldpChassisMacSubType_Choice_Enum) Enum() *LldpChassisMacSubType_Choice_Enum { - p := new(LldpChassisMacSubType_Choice_Enum) +func (x FlowRSVPLspTunnelFlag_Choice_Enum) Enum() *FlowRSVPLspTunnelFlag_Choice_Enum { + p := new(FlowRSVPLspTunnelFlag_Choice_Enum) *p = x return p } -func (x LldpChassisMacSubType_Choice_Enum) String() string { +func (x FlowRSVPLspTunnelFlag_Choice_Enum) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } -func (LldpChassisMacSubType_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { +func (FlowRSVPLspTunnelFlag_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { return file_otg_proto_enumTypes[85].Descriptor() } -func (LldpChassisMacSubType_Choice_Enum) Type() protoreflect.EnumType { +func (FlowRSVPLspTunnelFlag_Choice_Enum) Type() protoreflect.EnumType { return &file_otg_proto_enumTypes[85] } -func (x LldpChassisMacSubType_Choice_Enum) Number() protoreflect.EnumNumber { +func (x FlowRSVPLspTunnelFlag_Choice_Enum) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } -// Deprecated: Use LldpChassisMacSubType_Choice_Enum.Descriptor instead. -func (LldpChassisMacSubType_Choice_Enum) EnumDescriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{217, 0, 0} +// Deprecated: Use FlowRSVPLspTunnelFlag_Choice_Enum.Descriptor instead. +func (FlowRSVPLspTunnelFlag_Choice_Enum) EnumDescriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{221, 0, 0} } -type LldpPortInterfaceNameSubType_Choice_Enum int32 +type FlowRSVPPathObjectsSenderTemplateCType_Choice_Enum int32 const ( - LldpPortInterfaceNameSubType_Choice_unspecified LldpPortInterfaceNameSubType_Choice_Enum = 0 - LldpPortInterfaceNameSubType_Choice_auto LldpPortInterfaceNameSubType_Choice_Enum = 1 - LldpPortInterfaceNameSubType_Choice_value LldpPortInterfaceNameSubType_Choice_Enum = 2 + FlowRSVPPathObjectsSenderTemplateCType_Choice_unspecified FlowRSVPPathObjectsSenderTemplateCType_Choice_Enum = 0 + FlowRSVPPathObjectsSenderTemplateCType_Choice_lsp_tunnel_ipv4 FlowRSVPPathObjectsSenderTemplateCType_Choice_Enum = 1 ) -// Enum value maps for LldpPortInterfaceNameSubType_Choice_Enum. +// Enum value maps for FlowRSVPPathObjectsSenderTemplateCType_Choice_Enum. var ( - LldpPortInterfaceNameSubType_Choice_Enum_name = map[int32]string{ + FlowRSVPPathObjectsSenderTemplateCType_Choice_Enum_name = map[int32]string{ 0: "unspecified", - 1: "auto", - 2: "value", + 1: "lsp_tunnel_ipv4", } - LldpPortInterfaceNameSubType_Choice_Enum_value = map[string]int32{ - "unspecified": 0, - "auto": 1, - "value": 2, + FlowRSVPPathObjectsSenderTemplateCType_Choice_Enum_value = map[string]int32{ + "unspecified": 0, + "lsp_tunnel_ipv4": 1, } ) -func (x LldpPortInterfaceNameSubType_Choice_Enum) Enum() *LldpPortInterfaceNameSubType_Choice_Enum { - p := new(LldpPortInterfaceNameSubType_Choice_Enum) +func (x FlowRSVPPathObjectsSenderTemplateCType_Choice_Enum) Enum() *FlowRSVPPathObjectsSenderTemplateCType_Choice_Enum { + p := new(FlowRSVPPathObjectsSenderTemplateCType_Choice_Enum) *p = x return p } -func (x LldpPortInterfaceNameSubType_Choice_Enum) String() string { +func (x FlowRSVPPathObjectsSenderTemplateCType_Choice_Enum) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } -func (LldpPortInterfaceNameSubType_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { +func (FlowRSVPPathObjectsSenderTemplateCType_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { return file_otg_proto_enumTypes[86].Descriptor() } -func (LldpPortInterfaceNameSubType_Choice_Enum) Type() protoreflect.EnumType { +func (FlowRSVPPathObjectsSenderTemplateCType_Choice_Enum) Type() protoreflect.EnumType { return &file_otg_proto_enumTypes[86] } -func (x LldpPortInterfaceNameSubType_Choice_Enum) Number() protoreflect.EnumNumber { +func (x FlowRSVPPathObjectsSenderTemplateCType_Choice_Enum) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } -// Deprecated: Use LldpPortInterfaceNameSubType_Choice_Enum.Descriptor instead. -func (LldpPortInterfaceNameSubType_Choice_Enum) EnumDescriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{218, 0, 0} +// Deprecated: Use FlowRSVPPathObjectsSenderTemplateCType_Choice_Enum.Descriptor instead. +func (FlowRSVPPathObjectsSenderTemplateCType_Choice_Enum) EnumDescriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{223, 0, 0} } -type LldpSystemName_Choice_Enum int32 +type FlowRSVPPathObjectsSenderTspecCType_Choice_Enum int32 const ( - LldpSystemName_Choice_unspecified LldpSystemName_Choice_Enum = 0 - LldpSystemName_Choice_auto LldpSystemName_Choice_Enum = 1 - LldpSystemName_Choice_value LldpSystemName_Choice_Enum = 2 + FlowRSVPPathObjectsSenderTspecCType_Choice_unspecified FlowRSVPPathObjectsSenderTspecCType_Choice_Enum = 0 + FlowRSVPPathObjectsSenderTspecCType_Choice_int_serv FlowRSVPPathObjectsSenderTspecCType_Choice_Enum = 1 ) -// Enum value maps for LldpSystemName_Choice_Enum. +// Enum value maps for FlowRSVPPathObjectsSenderTspecCType_Choice_Enum. var ( - LldpSystemName_Choice_Enum_name = map[int32]string{ + FlowRSVPPathObjectsSenderTspecCType_Choice_Enum_name = map[int32]string{ 0: "unspecified", - 1: "auto", - 2: "value", + 1: "int_serv", } - LldpSystemName_Choice_Enum_value = map[string]int32{ + FlowRSVPPathObjectsSenderTspecCType_Choice_Enum_value = map[string]int32{ "unspecified": 0, - "auto": 1, - "value": 2, + "int_serv": 1, } ) -func (x LldpSystemName_Choice_Enum) Enum() *LldpSystemName_Choice_Enum { - p := new(LldpSystemName_Choice_Enum) +func (x FlowRSVPPathObjectsSenderTspecCType_Choice_Enum) Enum() *FlowRSVPPathObjectsSenderTspecCType_Choice_Enum { + p := new(FlowRSVPPathObjectsSenderTspecCType_Choice_Enum) *p = x return p } -func (x LldpSystemName_Choice_Enum) String() string { +func (x FlowRSVPPathObjectsSenderTspecCType_Choice_Enum) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } -func (LldpSystemName_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { +func (FlowRSVPPathObjectsSenderTspecCType_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { return file_otg_proto_enumTypes[87].Descriptor() } -func (LldpSystemName_Choice_Enum) Type() protoreflect.EnumType { +func (FlowRSVPPathObjectsSenderTspecCType_Choice_Enum) Type() protoreflect.EnumType { return &file_otg_proto_enumTypes[87] } -func (x LldpSystemName_Choice_Enum) Number() protoreflect.EnumNumber { +func (x FlowRSVPPathObjectsSenderTspecCType_Choice_Enum) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } -// Deprecated: Use LldpSystemName_Choice_Enum.Descriptor instead. -func (LldpSystemName_Choice_Enum) EnumDescriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{219, 0, 0} +// Deprecated: Use FlowRSVPPathObjectsSenderTspecCType_Choice_Enum.Descriptor instead. +func (FlowRSVPPathObjectsSenderTspecCType_Choice_Enum) EnumDescriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{226, 0, 0} } -type Error_Kind_Enum int32 +type FlowRSVPPathObjectsRecordRouteCType_Choice_Enum int32 const ( - Error_Kind_unspecified Error_Kind_Enum = 0 - Error_Kind_validation Error_Kind_Enum = 1 - Error_Kind_internal Error_Kind_Enum = 2 + FlowRSVPPathObjectsRecordRouteCType_Choice_unspecified FlowRSVPPathObjectsRecordRouteCType_Choice_Enum = 0 + FlowRSVPPathObjectsRecordRouteCType_Choice_type_1_route_record FlowRSVPPathObjectsRecordRouteCType_Choice_Enum = 1 ) -// Enum value maps for Error_Kind_Enum. +// Enum value maps for FlowRSVPPathObjectsRecordRouteCType_Choice_Enum. var ( - Error_Kind_Enum_name = map[int32]string{ + FlowRSVPPathObjectsRecordRouteCType_Choice_Enum_name = map[int32]string{ 0: "unspecified", - 1: "validation", - 2: "internal", + 1: "type_1_route_record", } - Error_Kind_Enum_value = map[string]int32{ - "unspecified": 0, - "validation": 1, - "internal": 2, + FlowRSVPPathObjectsRecordRouteCType_Choice_Enum_value = map[string]int32{ + "unspecified": 0, + "type_1_route_record": 1, } ) -func (x Error_Kind_Enum) Enum() *Error_Kind_Enum { - p := new(Error_Kind_Enum) +func (x FlowRSVPPathObjectsRecordRouteCType_Choice_Enum) Enum() *FlowRSVPPathObjectsRecordRouteCType_Choice_Enum { + p := new(FlowRSVPPathObjectsRecordRouteCType_Choice_Enum) *p = x return p } -func (x Error_Kind_Enum) String() string { +func (x FlowRSVPPathObjectsRecordRouteCType_Choice_Enum) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } -func (Error_Kind_Enum) Descriptor() protoreflect.EnumDescriptor { +func (FlowRSVPPathObjectsRecordRouteCType_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { return file_otg_proto_enumTypes[88].Descriptor() } -func (Error_Kind_Enum) Type() protoreflect.EnumType { +func (FlowRSVPPathObjectsRecordRouteCType_Choice_Enum) Type() protoreflect.EnumType { return &file_otg_proto_enumTypes[88] } -func (x Error_Kind_Enum) Number() protoreflect.EnumNumber { +func (x FlowRSVPPathObjectsRecordRouteCType_Choice_Enum) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } -// Deprecated: Use Error_Kind_Enum.Descriptor instead. -func (Error_Kind_Enum) EnumDescriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{220, 0, 0} +// Deprecated: Use FlowRSVPPathObjectsRecordRouteCType_Choice_Enum.Descriptor instead. +func (FlowRSVPPathObjectsRecordRouteCType_Choice_Enum) EnumDescriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{229, 0, 0} } -type ConfigUpdate_Choice_Enum int32 +type FlowRSVPPathObjectsRecordRouteSubObjectType_Choice_Enum int32 const ( - ConfigUpdate_Choice_unspecified ConfigUpdate_Choice_Enum = 0 - ConfigUpdate_Choice_flows ConfigUpdate_Choice_Enum = 1 + FlowRSVPPathObjectsRecordRouteSubObjectType_Choice_unspecified FlowRSVPPathObjectsRecordRouteSubObjectType_Choice_Enum = 0 + FlowRSVPPathObjectsRecordRouteSubObjectType_Choice_ipv4_address FlowRSVPPathObjectsRecordRouteSubObjectType_Choice_Enum = 1 + FlowRSVPPathObjectsRecordRouteSubObjectType_Choice_label FlowRSVPPathObjectsRecordRouteSubObjectType_Choice_Enum = 2 ) -// Enum value maps for ConfigUpdate_Choice_Enum. +// Enum value maps for FlowRSVPPathObjectsRecordRouteSubObjectType_Choice_Enum. var ( - ConfigUpdate_Choice_Enum_name = map[int32]string{ + FlowRSVPPathObjectsRecordRouteSubObjectType_Choice_Enum_name = map[int32]string{ 0: "unspecified", - 1: "flows", + 1: "ipv4_address", + 2: "label", } - ConfigUpdate_Choice_Enum_value = map[string]int32{ - "unspecified": 0, - "flows": 1, + FlowRSVPPathObjectsRecordRouteSubObjectType_Choice_Enum_value = map[string]int32{ + "unspecified": 0, + "ipv4_address": 1, + "label": 2, } ) -func (x ConfigUpdate_Choice_Enum) Enum() *ConfigUpdate_Choice_Enum { - p := new(ConfigUpdate_Choice_Enum) +func (x FlowRSVPPathObjectsRecordRouteSubObjectType_Choice_Enum) Enum() *FlowRSVPPathObjectsRecordRouteSubObjectType_Choice_Enum { + p := new(FlowRSVPPathObjectsRecordRouteSubObjectType_Choice_Enum) *p = x return p } -func (x ConfigUpdate_Choice_Enum) String() string { +func (x FlowRSVPPathObjectsRecordRouteSubObjectType_Choice_Enum) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } -func (ConfigUpdate_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { +func (FlowRSVPPathObjectsRecordRouteSubObjectType_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { return file_otg_proto_enumTypes[89].Descriptor() } -func (ConfigUpdate_Choice_Enum) Type() protoreflect.EnumType { +func (FlowRSVPPathObjectsRecordRouteSubObjectType_Choice_Enum) Type() protoreflect.EnumType { return &file_otg_proto_enumTypes[89] } -func (x ConfigUpdate_Choice_Enum) Number() protoreflect.EnumNumber { +func (x FlowRSVPPathObjectsRecordRouteSubObjectType_Choice_Enum) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } -// Deprecated: Use ConfigUpdate_Choice_Enum.Descriptor instead. -func (ConfigUpdate_Choice_Enum) EnumDescriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{222, 0, 0} +// Deprecated: Use FlowRSVPPathObjectsRecordRouteSubObjectType_Choice_Enum.Descriptor instead. +func (FlowRSVPPathObjectsRecordRouteSubObjectType_Choice_Enum) EnumDescriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{232, 0, 0} } -type FlowsUpdate_PropertyNames_Enum int32 +type FlowRSVPRecordRouteIPv4Flag_Choice_Enum int32 const ( - FlowsUpdate_PropertyNames_unspecified FlowsUpdate_PropertyNames_Enum = 0 - FlowsUpdate_PropertyNames_rate FlowsUpdate_PropertyNames_Enum = 1 - FlowsUpdate_PropertyNames_size FlowsUpdate_PropertyNames_Enum = 2 + FlowRSVPRecordRouteIPv4Flag_Choice_unspecified FlowRSVPRecordRouteIPv4Flag_Choice_Enum = 0 + FlowRSVPRecordRouteIPv4Flag_Choice_local_protection_available FlowRSVPRecordRouteIPv4Flag_Choice_Enum = 1 + FlowRSVPRecordRouteIPv4Flag_Choice_local_protection_in_use FlowRSVPRecordRouteIPv4Flag_Choice_Enum = 2 ) -// Enum value maps for FlowsUpdate_PropertyNames_Enum. +// Enum value maps for FlowRSVPRecordRouteIPv4Flag_Choice_Enum. var ( - FlowsUpdate_PropertyNames_Enum_name = map[int32]string{ + FlowRSVPRecordRouteIPv4Flag_Choice_Enum_name = map[int32]string{ 0: "unspecified", - 1: "rate", - 2: "size", + 1: "local_protection_available", + 2: "local_protection_in_use", } - FlowsUpdate_PropertyNames_Enum_value = map[string]int32{ - "unspecified": 0, - "rate": 1, - "size": 2, + FlowRSVPRecordRouteIPv4Flag_Choice_Enum_value = map[string]int32{ + "unspecified": 0, + "local_protection_available": 1, + "local_protection_in_use": 2, } ) -func (x FlowsUpdate_PropertyNames_Enum) Enum() *FlowsUpdate_PropertyNames_Enum { - p := new(FlowsUpdate_PropertyNames_Enum) +func (x FlowRSVPRecordRouteIPv4Flag_Choice_Enum) Enum() *FlowRSVPRecordRouteIPv4Flag_Choice_Enum { + p := new(FlowRSVPRecordRouteIPv4Flag_Choice_Enum) *p = x return p } -func (x FlowsUpdate_PropertyNames_Enum) String() string { +func (x FlowRSVPRecordRouteIPv4Flag_Choice_Enum) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } -func (FlowsUpdate_PropertyNames_Enum) Descriptor() protoreflect.EnumDescriptor { +func (FlowRSVPRecordRouteIPv4Flag_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { return file_otg_proto_enumTypes[90].Descriptor() } -func (FlowsUpdate_PropertyNames_Enum) Type() protoreflect.EnumType { +func (FlowRSVPRecordRouteIPv4Flag_Choice_Enum) Type() protoreflect.EnumType { return &file_otg_proto_enumTypes[90] } -func (x FlowsUpdate_PropertyNames_Enum) Number() protoreflect.EnumNumber { +func (x FlowRSVPRecordRouteIPv4Flag_Choice_Enum) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } -// Deprecated: Use FlowsUpdate_PropertyNames_Enum.Descriptor instead. -func (FlowsUpdate_PropertyNames_Enum) EnumDescriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{223, 0, 0} +// Deprecated: Use FlowRSVPRecordRouteIPv4Flag_Choice_Enum.Descriptor instead. +func (FlowRSVPRecordRouteIPv4Flag_Choice_Enum) EnumDescriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{234, 0, 0} } -type ControlState_Choice_Enum int32 +type FlowRSVPRouteRecordLength_Choice_Enum int32 const ( - ControlState_Choice_unspecified ControlState_Choice_Enum = 0 - ControlState_Choice_port ControlState_Choice_Enum = 1 - ControlState_Choice_protocol ControlState_Choice_Enum = 2 - ControlState_Choice_traffic ControlState_Choice_Enum = 3 + FlowRSVPRouteRecordLength_Choice_unspecified FlowRSVPRouteRecordLength_Choice_Enum = 0 + FlowRSVPRouteRecordLength_Choice_auto FlowRSVPRouteRecordLength_Choice_Enum = 1 + FlowRSVPRouteRecordLength_Choice_value FlowRSVPRouteRecordLength_Choice_Enum = 2 ) -// Enum value maps for ControlState_Choice_Enum. +// Enum value maps for FlowRSVPRouteRecordLength_Choice_Enum. var ( - ControlState_Choice_Enum_name = map[int32]string{ + FlowRSVPRouteRecordLength_Choice_Enum_name = map[int32]string{ 0: "unspecified", - 1: "port", - 2: "protocol", - 3: "traffic", + 1: "auto", + 2: "value", } - ControlState_Choice_Enum_value = map[string]int32{ + FlowRSVPRouteRecordLength_Choice_Enum_value = map[string]int32{ "unspecified": 0, - "port": 1, - "protocol": 2, - "traffic": 3, + "auto": 1, + "value": 2, } ) -func (x ControlState_Choice_Enum) Enum() *ControlState_Choice_Enum { - p := new(ControlState_Choice_Enum) +func (x FlowRSVPRouteRecordLength_Choice_Enum) Enum() *FlowRSVPRouteRecordLength_Choice_Enum { + p := new(FlowRSVPRouteRecordLength_Choice_Enum) *p = x return p } -func (x ControlState_Choice_Enum) String() string { +func (x FlowRSVPRouteRecordLength_Choice_Enum) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } -func (ControlState_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { +func (FlowRSVPRouteRecordLength_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { return file_otg_proto_enumTypes[91].Descriptor() } -func (ControlState_Choice_Enum) Type() protoreflect.EnumType { +func (FlowRSVPRouteRecordLength_Choice_Enum) Type() protoreflect.EnumType { return &file_otg_proto_enumTypes[91] } -func (x ControlState_Choice_Enum) Number() protoreflect.EnumNumber { +func (x FlowRSVPRouteRecordLength_Choice_Enum) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } -// Deprecated: Use ControlState_Choice_Enum.Descriptor instead. -func (ControlState_Choice_Enum) EnumDescriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{224, 0, 0} +// Deprecated: Use FlowRSVPRouteRecordLength_Choice_Enum.Descriptor instead. +func (FlowRSVPRouteRecordLength_Choice_Enum) EnumDescriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{236, 0, 0} } -type StatePort_Choice_Enum int32 +type FlowRSVPObjectOptionsCustomLength_Choice_Enum int32 const ( - StatePort_Choice_unspecified StatePort_Choice_Enum = 0 - StatePort_Choice_link StatePort_Choice_Enum = 1 - StatePort_Choice_capture StatePort_Choice_Enum = 2 + FlowRSVPObjectOptionsCustomLength_Choice_unspecified FlowRSVPObjectOptionsCustomLength_Choice_Enum = 0 + FlowRSVPObjectOptionsCustomLength_Choice_auto FlowRSVPObjectOptionsCustomLength_Choice_Enum = 1 + FlowRSVPObjectOptionsCustomLength_Choice_value FlowRSVPObjectOptionsCustomLength_Choice_Enum = 2 ) -// Enum value maps for StatePort_Choice_Enum. +// Enum value maps for FlowRSVPObjectOptionsCustomLength_Choice_Enum. var ( - StatePort_Choice_Enum_name = map[int32]string{ + FlowRSVPObjectOptionsCustomLength_Choice_Enum_name = map[int32]string{ 0: "unspecified", - 1: "link", - 2: "capture", + 1: "auto", + 2: "value", } - StatePort_Choice_Enum_value = map[string]int32{ + FlowRSVPObjectOptionsCustomLength_Choice_Enum_value = map[string]int32{ "unspecified": 0, - "link": 1, - "capture": 2, + "auto": 1, + "value": 2, } ) -func (x StatePort_Choice_Enum) Enum() *StatePort_Choice_Enum { - p := new(StatePort_Choice_Enum) +func (x FlowRSVPObjectOptionsCustomLength_Choice_Enum) Enum() *FlowRSVPObjectOptionsCustomLength_Choice_Enum { + p := new(FlowRSVPObjectOptionsCustomLength_Choice_Enum) *p = x return p } -func (x StatePort_Choice_Enum) String() string { +func (x FlowRSVPObjectOptionsCustomLength_Choice_Enum) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } -func (StatePort_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { +func (FlowRSVPObjectOptionsCustomLength_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { return file_otg_proto_enumTypes[92].Descriptor() } -func (StatePort_Choice_Enum) Type() protoreflect.EnumType { +func (FlowRSVPObjectOptionsCustomLength_Choice_Enum) Type() protoreflect.EnumType { return &file_otg_proto_enumTypes[92] } -func (x StatePort_Choice_Enum) Number() protoreflect.EnumNumber { +func (x FlowRSVPObjectOptionsCustomLength_Choice_Enum) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } -// Deprecated: Use StatePort_Choice_Enum.Descriptor instead. -func (StatePort_Choice_Enum) EnumDescriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{225, 0, 0} +// Deprecated: Use FlowRSVPObjectOptionsCustomLength_Choice_Enum.Descriptor instead. +func (FlowRSVPObjectOptionsCustomLength_Choice_Enum) EnumDescriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{238, 0, 0} } -type StateTraffic_Choice_Enum int32 +type FlowSize_Choice_Enum int32 const ( - StateTraffic_Choice_unspecified StateTraffic_Choice_Enum = 0 - StateTraffic_Choice_flow_transmit StateTraffic_Choice_Enum = 1 + FlowSize_Choice_unspecified FlowSize_Choice_Enum = 0 + FlowSize_Choice_fixed FlowSize_Choice_Enum = 1 + FlowSize_Choice_increment FlowSize_Choice_Enum = 2 + FlowSize_Choice_random FlowSize_Choice_Enum = 3 + FlowSize_Choice_weight_pairs FlowSize_Choice_Enum = 4 ) -// Enum value maps for StateTraffic_Choice_Enum. +// Enum value maps for FlowSize_Choice_Enum. var ( - StateTraffic_Choice_Enum_name = map[int32]string{ + FlowSize_Choice_Enum_name = map[int32]string{ 0: "unspecified", - 1: "flow_transmit", + 1: "fixed", + 2: "increment", + 3: "random", + 4: "weight_pairs", } - StateTraffic_Choice_Enum_value = map[string]int32{ - "unspecified": 0, - "flow_transmit": 1, + FlowSize_Choice_Enum_value = map[string]int32{ + "unspecified": 0, + "fixed": 1, + "increment": 2, + "random": 3, + "weight_pairs": 4, } ) -func (x StateTraffic_Choice_Enum) Enum() *StateTraffic_Choice_Enum { - p := new(StateTraffic_Choice_Enum) +func (x FlowSize_Choice_Enum) Enum() *FlowSize_Choice_Enum { + p := new(FlowSize_Choice_Enum) *p = x return p } -func (x StateTraffic_Choice_Enum) String() string { +func (x FlowSize_Choice_Enum) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } -func (StateTraffic_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { +func (FlowSize_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { return file_otg_proto_enumTypes[93].Descriptor() } -func (StateTraffic_Choice_Enum) Type() protoreflect.EnumType { +func (FlowSize_Choice_Enum) Type() protoreflect.EnumType { return &file_otg_proto_enumTypes[93] } -func (x StateTraffic_Choice_Enum) Number() protoreflect.EnumNumber { +func (x FlowSize_Choice_Enum) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } -// Deprecated: Use StateTraffic_Choice_Enum.Descriptor instead. -func (StateTraffic_Choice_Enum) EnumDescriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{226, 0, 0} +// Deprecated: Use FlowSize_Choice_Enum.Descriptor instead. +func (FlowSize_Choice_Enum) EnumDescriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{239, 0, 0} } -type StateProtocol_Choice_Enum int32 +type FlowSizeWeightPairs_Choice_Enum int32 const ( - StateProtocol_Choice_unspecified StateProtocol_Choice_Enum = 0 - StateProtocol_Choice_all StateProtocol_Choice_Enum = 1 - StateProtocol_Choice_route StateProtocol_Choice_Enum = 2 - StateProtocol_Choice_lacp StateProtocol_Choice_Enum = 3 - StateProtocol_Choice_bgp StateProtocol_Choice_Enum = 4 - StateProtocol_Choice_isis StateProtocol_Choice_Enum = 5 + FlowSizeWeightPairs_Choice_unspecified FlowSizeWeightPairs_Choice_Enum = 0 + FlowSizeWeightPairs_Choice_predefined FlowSizeWeightPairs_Choice_Enum = 1 + FlowSizeWeightPairs_Choice_custom FlowSizeWeightPairs_Choice_Enum = 2 ) -// Enum value maps for StateProtocol_Choice_Enum. +// Enum value maps for FlowSizeWeightPairs_Choice_Enum. var ( - StateProtocol_Choice_Enum_name = map[int32]string{ + FlowSizeWeightPairs_Choice_Enum_name = map[int32]string{ 0: "unspecified", - 1: "all", - 2: "route", - 3: "lacp", - 4: "bgp", - 5: "isis", + 1: "predefined", + 2: "custom", } - StateProtocol_Choice_Enum_value = map[string]int32{ + FlowSizeWeightPairs_Choice_Enum_value = map[string]int32{ "unspecified": 0, - "all": 1, - "route": 2, - "lacp": 3, - "bgp": 4, - "isis": 5, + "predefined": 1, + "custom": 2, } ) -func (x StateProtocol_Choice_Enum) Enum() *StateProtocol_Choice_Enum { - p := new(StateProtocol_Choice_Enum) +func (x FlowSizeWeightPairs_Choice_Enum) Enum() *FlowSizeWeightPairs_Choice_Enum { + p := new(FlowSizeWeightPairs_Choice_Enum) *p = x return p } -func (x StateProtocol_Choice_Enum) String() string { +func (x FlowSizeWeightPairs_Choice_Enum) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } -func (StateProtocol_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { +func (FlowSizeWeightPairs_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { return file_otg_proto_enumTypes[94].Descriptor() } -func (StateProtocol_Choice_Enum) Type() protoreflect.EnumType { +func (FlowSizeWeightPairs_Choice_Enum) Type() protoreflect.EnumType { return &file_otg_proto_enumTypes[94] } -func (x StateProtocol_Choice_Enum) Number() protoreflect.EnumNumber { +func (x FlowSizeWeightPairs_Choice_Enum) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } -// Deprecated: Use StateProtocol_Choice_Enum.Descriptor instead. -func (StateProtocol_Choice_Enum) EnumDescriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{227, 0, 0} +// Deprecated: Use FlowSizeWeightPairs_Choice_Enum.Descriptor instead. +func (FlowSizeWeightPairs_Choice_Enum) EnumDescriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{242, 0, 0} } -type StatePortLink_State_Enum int32 +type FlowSizeWeightPairs_Predefined_Enum int32 const ( - StatePortLink_State_unspecified StatePortLink_State_Enum = 0 - StatePortLink_State_up StatePortLink_State_Enum = 1 - StatePortLink_State_down StatePortLink_State_Enum = 2 + FlowSizeWeightPairs_Predefined_unspecified FlowSizeWeightPairs_Predefined_Enum = 0 + FlowSizeWeightPairs_Predefined_imix FlowSizeWeightPairs_Predefined_Enum = 1 + FlowSizeWeightPairs_Predefined_ipsec_imix FlowSizeWeightPairs_Predefined_Enum = 2 + FlowSizeWeightPairs_Predefined_ipv6_imix FlowSizeWeightPairs_Predefined_Enum = 3 + FlowSizeWeightPairs_Predefined_standard_imix FlowSizeWeightPairs_Predefined_Enum = 4 + FlowSizeWeightPairs_Predefined_tcp_imix FlowSizeWeightPairs_Predefined_Enum = 5 ) -// Enum value maps for StatePortLink_State_Enum. +// Enum value maps for FlowSizeWeightPairs_Predefined_Enum. var ( - StatePortLink_State_Enum_name = map[int32]string{ + FlowSizeWeightPairs_Predefined_Enum_name = map[int32]string{ 0: "unspecified", - 1: "up", - 2: "down", + 1: "imix", + 2: "ipsec_imix", + 3: "ipv6_imix", + 4: "standard_imix", + 5: "tcp_imix", } - StatePortLink_State_Enum_value = map[string]int32{ - "unspecified": 0, - "up": 1, - "down": 2, + FlowSizeWeightPairs_Predefined_Enum_value = map[string]int32{ + "unspecified": 0, + "imix": 1, + "ipsec_imix": 2, + "ipv6_imix": 3, + "standard_imix": 4, + "tcp_imix": 5, } ) -func (x StatePortLink_State_Enum) Enum() *StatePortLink_State_Enum { - p := new(StatePortLink_State_Enum) +func (x FlowSizeWeightPairs_Predefined_Enum) Enum() *FlowSizeWeightPairs_Predefined_Enum { + p := new(FlowSizeWeightPairs_Predefined_Enum) *p = x return p } -func (x StatePortLink_State_Enum) String() string { +func (x FlowSizeWeightPairs_Predefined_Enum) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } -func (StatePortLink_State_Enum) Descriptor() protoreflect.EnumDescriptor { +func (FlowSizeWeightPairs_Predefined_Enum) Descriptor() protoreflect.EnumDescriptor { return file_otg_proto_enumTypes[95].Descriptor() } -func (StatePortLink_State_Enum) Type() protoreflect.EnumType { +func (FlowSizeWeightPairs_Predefined_Enum) Type() protoreflect.EnumType { return &file_otg_proto_enumTypes[95] } -func (x StatePortLink_State_Enum) Number() protoreflect.EnumNumber { +func (x FlowSizeWeightPairs_Predefined_Enum) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } -// Deprecated: Use StatePortLink_State_Enum.Descriptor instead. -func (StatePortLink_State_Enum) EnumDescriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{228, 0, 0} +// Deprecated: Use FlowSizeWeightPairs_Predefined_Enum.Descriptor instead. +func (FlowSizeWeightPairs_Predefined_Enum) EnumDescriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{242, 1, 0} } -type StatePortCapture_State_Enum int32 +type FlowRate_Choice_Enum int32 const ( - StatePortCapture_State_unspecified StatePortCapture_State_Enum = 0 - StatePortCapture_State_start StatePortCapture_State_Enum = 1 - StatePortCapture_State_stop StatePortCapture_State_Enum = 2 + FlowRate_Choice_unspecified FlowRate_Choice_Enum = 0 + FlowRate_Choice_pps FlowRate_Choice_Enum = 1 + FlowRate_Choice_bps FlowRate_Choice_Enum = 2 + FlowRate_Choice_kbps FlowRate_Choice_Enum = 3 + FlowRate_Choice_mbps FlowRate_Choice_Enum = 4 + FlowRate_Choice_gbps FlowRate_Choice_Enum = 5 + FlowRate_Choice_percentage FlowRate_Choice_Enum = 6 ) -// Enum value maps for StatePortCapture_State_Enum. +// Enum value maps for FlowRate_Choice_Enum. var ( - StatePortCapture_State_Enum_name = map[int32]string{ + FlowRate_Choice_Enum_name = map[int32]string{ 0: "unspecified", - 1: "start", - 2: "stop", + 1: "pps", + 2: "bps", + 3: "kbps", + 4: "mbps", + 5: "gbps", + 6: "percentage", } - StatePortCapture_State_Enum_value = map[string]int32{ + FlowRate_Choice_Enum_value = map[string]int32{ "unspecified": 0, - "start": 1, - "stop": 2, + "pps": 1, + "bps": 2, + "kbps": 3, + "mbps": 4, + "gbps": 5, + "percentage": 6, } ) -func (x StatePortCapture_State_Enum) Enum() *StatePortCapture_State_Enum { - p := new(StatePortCapture_State_Enum) +func (x FlowRate_Choice_Enum) Enum() *FlowRate_Choice_Enum { + p := new(FlowRate_Choice_Enum) *p = x return p } -func (x StatePortCapture_State_Enum) String() string { +func (x FlowRate_Choice_Enum) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } -func (StatePortCapture_State_Enum) Descriptor() protoreflect.EnumDescriptor { +func (FlowRate_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { return file_otg_proto_enumTypes[96].Descriptor() } -func (StatePortCapture_State_Enum) Type() protoreflect.EnumType { +func (FlowRate_Choice_Enum) Type() protoreflect.EnumType { return &file_otg_proto_enumTypes[96] } -func (x StatePortCapture_State_Enum) Number() protoreflect.EnumNumber { +func (x FlowRate_Choice_Enum) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } -// Deprecated: Use StatePortCapture_State_Enum.Descriptor instead. -func (StatePortCapture_State_Enum) EnumDescriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{229, 0, 0} +// Deprecated: Use FlowRate_Choice_Enum.Descriptor instead. +func (FlowRate_Choice_Enum) EnumDescriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{244, 0, 0} } -type StateTrafficFlowTransmit_State_Enum int32 +type FlowDuration_Choice_Enum int32 const ( - StateTrafficFlowTransmit_State_unspecified StateTrafficFlowTransmit_State_Enum = 0 - StateTrafficFlowTransmit_State_start StateTrafficFlowTransmit_State_Enum = 1 - StateTrafficFlowTransmit_State_stop StateTrafficFlowTransmit_State_Enum = 2 - StateTrafficFlowTransmit_State_pause StateTrafficFlowTransmit_State_Enum = 3 - StateTrafficFlowTransmit_State_resume StateTrafficFlowTransmit_State_Enum = 4 + FlowDuration_Choice_unspecified FlowDuration_Choice_Enum = 0 + FlowDuration_Choice_fixed_packets FlowDuration_Choice_Enum = 1 + FlowDuration_Choice_fixed_seconds FlowDuration_Choice_Enum = 2 + FlowDuration_Choice_burst FlowDuration_Choice_Enum = 3 + FlowDuration_Choice_continuous FlowDuration_Choice_Enum = 4 ) -// Enum value maps for StateTrafficFlowTransmit_State_Enum. +// Enum value maps for FlowDuration_Choice_Enum. var ( - StateTrafficFlowTransmit_State_Enum_name = map[int32]string{ + FlowDuration_Choice_Enum_name = map[int32]string{ 0: "unspecified", - 1: "start", - 2: "stop", - 3: "pause", - 4: "resume", + 1: "fixed_packets", + 2: "fixed_seconds", + 3: "burst", + 4: "continuous", } - StateTrafficFlowTransmit_State_Enum_value = map[string]int32{ - "unspecified": 0, - "start": 1, - "stop": 2, - "pause": 3, - "resume": 4, + FlowDuration_Choice_Enum_value = map[string]int32{ + "unspecified": 0, + "fixed_packets": 1, + "fixed_seconds": 2, + "burst": 3, + "continuous": 4, } ) -func (x StateTrafficFlowTransmit_State_Enum) Enum() *StateTrafficFlowTransmit_State_Enum { - p := new(StateTrafficFlowTransmit_State_Enum) +func (x FlowDuration_Choice_Enum) Enum() *FlowDuration_Choice_Enum { + p := new(FlowDuration_Choice_Enum) *p = x return p } -func (x StateTrafficFlowTransmit_State_Enum) String() string { +func (x FlowDuration_Choice_Enum) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } -func (StateTrafficFlowTransmit_State_Enum) Descriptor() protoreflect.EnumDescriptor { +func (FlowDuration_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { return file_otg_proto_enumTypes[97].Descriptor() } -func (StateTrafficFlowTransmit_State_Enum) Type() protoreflect.EnumType { +func (FlowDuration_Choice_Enum) Type() protoreflect.EnumType { return &file_otg_proto_enumTypes[97] } -func (x StateTrafficFlowTransmit_State_Enum) Number() protoreflect.EnumNumber { +func (x FlowDuration_Choice_Enum) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } -// Deprecated: Use StateTrafficFlowTransmit_State_Enum.Descriptor instead. -func (StateTrafficFlowTransmit_State_Enum) EnumDescriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{230, 0, 0} +// Deprecated: Use FlowDuration_Choice_Enum.Descriptor instead. +func (FlowDuration_Choice_Enum) EnumDescriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{245, 0, 0} } -type StateProtocolAll_State_Enum int32 +type FlowDelay_Choice_Enum int32 const ( - StateProtocolAll_State_unspecified StateProtocolAll_State_Enum = 0 - StateProtocolAll_State_start StateProtocolAll_State_Enum = 1 - StateProtocolAll_State_stop StateProtocolAll_State_Enum = 2 + FlowDelay_Choice_unspecified FlowDelay_Choice_Enum = 0 + FlowDelay_Choice_bytes FlowDelay_Choice_Enum = 1 + FlowDelay_Choice_nanoseconds FlowDelay_Choice_Enum = 2 + FlowDelay_Choice_microseconds FlowDelay_Choice_Enum = 3 ) -// Enum value maps for StateProtocolAll_State_Enum. +// Enum value maps for FlowDelay_Choice_Enum. var ( - StateProtocolAll_State_Enum_name = map[int32]string{ + FlowDelay_Choice_Enum_name = map[int32]string{ 0: "unspecified", - 1: "start", - 2: "stop", + 1: "bytes", + 2: "nanoseconds", + 3: "microseconds", } - StateProtocolAll_State_Enum_value = map[string]int32{ - "unspecified": 0, - "start": 1, - "stop": 2, + FlowDelay_Choice_Enum_value = map[string]int32{ + "unspecified": 0, + "bytes": 1, + "nanoseconds": 2, + "microseconds": 3, } ) -func (x StateProtocolAll_State_Enum) Enum() *StateProtocolAll_State_Enum { - p := new(StateProtocolAll_State_Enum) +func (x FlowDelay_Choice_Enum) Enum() *FlowDelay_Choice_Enum { + p := new(FlowDelay_Choice_Enum) *p = x return p } -func (x StateProtocolAll_State_Enum) String() string { +func (x FlowDelay_Choice_Enum) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } -func (StateProtocolAll_State_Enum) Descriptor() protoreflect.EnumDescriptor { +func (FlowDelay_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { return file_otg_proto_enumTypes[98].Descriptor() } -func (StateProtocolAll_State_Enum) Type() protoreflect.EnumType { +func (FlowDelay_Choice_Enum) Type() protoreflect.EnumType { return &file_otg_proto_enumTypes[98] } -func (x StateProtocolAll_State_Enum) Number() protoreflect.EnumNumber { +func (x FlowDelay_Choice_Enum) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } -// Deprecated: Use StateProtocolAll_State_Enum.Descriptor instead. -func (StateProtocolAll_State_Enum) EnumDescriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{231, 0, 0} +// Deprecated: Use FlowDelay_Choice_Enum.Descriptor instead. +func (FlowDelay_Choice_Enum) EnumDescriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{247, 0, 0} } -type StateProtocolRoute_State_Enum int32 +type FlowDurationInterBurstGap_Choice_Enum int32 const ( - StateProtocolRoute_State_unspecified StateProtocolRoute_State_Enum = 0 - StateProtocolRoute_State_withdraw StateProtocolRoute_State_Enum = 1 - StateProtocolRoute_State_advertise StateProtocolRoute_State_Enum = 2 + FlowDurationInterBurstGap_Choice_unspecified FlowDurationInterBurstGap_Choice_Enum = 0 + FlowDurationInterBurstGap_Choice_bytes FlowDurationInterBurstGap_Choice_Enum = 1 + FlowDurationInterBurstGap_Choice_nanoseconds FlowDurationInterBurstGap_Choice_Enum = 2 + FlowDurationInterBurstGap_Choice_microseconds FlowDurationInterBurstGap_Choice_Enum = 3 ) -// Enum value maps for StateProtocolRoute_State_Enum. +// Enum value maps for FlowDurationInterBurstGap_Choice_Enum. var ( - StateProtocolRoute_State_Enum_name = map[int32]string{ + FlowDurationInterBurstGap_Choice_Enum_name = map[int32]string{ 0: "unspecified", - 1: "withdraw", - 2: "advertise", + 1: "bytes", + 2: "nanoseconds", + 3: "microseconds", } - StateProtocolRoute_State_Enum_value = map[string]int32{ - "unspecified": 0, - "withdraw": 1, - "advertise": 2, + FlowDurationInterBurstGap_Choice_Enum_value = map[string]int32{ + "unspecified": 0, + "bytes": 1, + "nanoseconds": 2, + "microseconds": 3, } ) -func (x StateProtocolRoute_State_Enum) Enum() *StateProtocolRoute_State_Enum { - p := new(StateProtocolRoute_State_Enum) +func (x FlowDurationInterBurstGap_Choice_Enum) Enum() *FlowDurationInterBurstGap_Choice_Enum { + p := new(FlowDurationInterBurstGap_Choice_Enum) *p = x return p } -func (x StateProtocolRoute_State_Enum) String() string { +func (x FlowDurationInterBurstGap_Choice_Enum) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } -func (StateProtocolRoute_State_Enum) Descriptor() protoreflect.EnumDescriptor { +func (FlowDurationInterBurstGap_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { return file_otg_proto_enumTypes[99].Descriptor() } -func (StateProtocolRoute_State_Enum) Type() protoreflect.EnumType { +func (FlowDurationInterBurstGap_Choice_Enum) Type() protoreflect.EnumType { return &file_otg_proto_enumTypes[99] } -func (x StateProtocolRoute_State_Enum) Number() protoreflect.EnumNumber { +func (x FlowDurationInterBurstGap_Choice_Enum) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } -// Deprecated: Use StateProtocolRoute_State_Enum.Descriptor instead. -func (StateProtocolRoute_State_Enum) EnumDescriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{232, 0, 0} +// Deprecated: Use FlowDurationInterBurstGap_Choice_Enum.Descriptor instead. +func (FlowDurationInterBurstGap_Choice_Enum) EnumDescriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{251, 0, 0} } -type StateProtocolLacp_Choice_Enum int32 +type FlowLatencyMetrics_Mode_Enum int32 const ( - StateProtocolLacp_Choice_unspecified StateProtocolLacp_Choice_Enum = 0 - StateProtocolLacp_Choice_admin StateProtocolLacp_Choice_Enum = 1 - StateProtocolLacp_Choice_member_ports StateProtocolLacp_Choice_Enum = 2 + FlowLatencyMetrics_Mode_unspecified FlowLatencyMetrics_Mode_Enum = 0 + FlowLatencyMetrics_Mode_store_forward FlowLatencyMetrics_Mode_Enum = 1 + FlowLatencyMetrics_Mode_cut_through FlowLatencyMetrics_Mode_Enum = 2 ) -// Enum value maps for StateProtocolLacp_Choice_Enum. +// Enum value maps for FlowLatencyMetrics_Mode_Enum. var ( - StateProtocolLacp_Choice_Enum_name = map[int32]string{ + FlowLatencyMetrics_Mode_Enum_name = map[int32]string{ 0: "unspecified", - 1: "admin", - 2: "member_ports", + 1: "store_forward", + 2: "cut_through", } - StateProtocolLacp_Choice_Enum_value = map[string]int32{ - "unspecified": 0, - "admin": 1, - "member_ports": 2, + FlowLatencyMetrics_Mode_Enum_value = map[string]int32{ + "unspecified": 0, + "store_forward": 1, + "cut_through": 2, } ) -func (x StateProtocolLacp_Choice_Enum) Enum() *StateProtocolLacp_Choice_Enum { - p := new(StateProtocolLacp_Choice_Enum) +func (x FlowLatencyMetrics_Mode_Enum) Enum() *FlowLatencyMetrics_Mode_Enum { + p := new(FlowLatencyMetrics_Mode_Enum) *p = x return p } -func (x StateProtocolLacp_Choice_Enum) String() string { +func (x FlowLatencyMetrics_Mode_Enum) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } -func (StateProtocolLacp_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { +func (FlowLatencyMetrics_Mode_Enum) Descriptor() protoreflect.EnumDescriptor { return file_otg_proto_enumTypes[100].Descriptor() } -func (StateProtocolLacp_Choice_Enum) Type() protoreflect.EnumType { +func (FlowLatencyMetrics_Mode_Enum) Type() protoreflect.EnumType { return &file_otg_proto_enumTypes[100] } -func (x StateProtocolLacp_Choice_Enum) Number() protoreflect.EnumNumber { +func (x FlowLatencyMetrics_Mode_Enum) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } -// Deprecated: Use StateProtocolLacp_Choice_Enum.Descriptor instead. -func (StateProtocolLacp_Choice_Enum) EnumDescriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{233, 0, 0} +// Deprecated: Use FlowLatencyMetrics_Mode_Enum.Descriptor instead. +func (FlowLatencyMetrics_Mode_Enum) EnumDescriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{253, 0, 0} } -type StateProtocolLacpAdmin_State_Enum int32 +type FlowRxTxRatio_Choice_Enum int32 const ( - StateProtocolLacpAdmin_State_unspecified StateProtocolLacpAdmin_State_Enum = 0 - StateProtocolLacpAdmin_State_up StateProtocolLacpAdmin_State_Enum = 1 - StateProtocolLacpAdmin_State_down StateProtocolLacpAdmin_State_Enum = 2 + FlowRxTxRatio_Choice_unspecified FlowRxTxRatio_Choice_Enum = 0 + FlowRxTxRatio_Choice_rx_count FlowRxTxRatio_Choice_Enum = 1 + FlowRxTxRatio_Choice_value FlowRxTxRatio_Choice_Enum = 2 ) -// Enum value maps for StateProtocolLacpAdmin_State_Enum. +// Enum value maps for FlowRxTxRatio_Choice_Enum. var ( - StateProtocolLacpAdmin_State_Enum_name = map[int32]string{ + FlowRxTxRatio_Choice_Enum_name = map[int32]string{ 0: "unspecified", - 1: "up", - 2: "down", + 1: "rx_count", + 2: "value", } - StateProtocolLacpAdmin_State_Enum_value = map[string]int32{ + FlowRxTxRatio_Choice_Enum_value = map[string]int32{ "unspecified": 0, - "up": 1, - "down": 2, + "rx_count": 1, + "value": 2, } ) -func (x StateProtocolLacpAdmin_State_Enum) Enum() *StateProtocolLacpAdmin_State_Enum { - p := new(StateProtocolLacpAdmin_State_Enum) +func (x FlowRxTxRatio_Choice_Enum) Enum() *FlowRxTxRatio_Choice_Enum { + p := new(FlowRxTxRatio_Choice_Enum) *p = x return p } -func (x StateProtocolLacpAdmin_State_Enum) String() string { +func (x FlowRxTxRatio_Choice_Enum) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } -func (StateProtocolLacpAdmin_State_Enum) Descriptor() protoreflect.EnumDescriptor { +func (FlowRxTxRatio_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { return file_otg_proto_enumTypes[101].Descriptor() } -func (StateProtocolLacpAdmin_State_Enum) Type() protoreflect.EnumType { +func (FlowRxTxRatio_Choice_Enum) Type() protoreflect.EnumType { return &file_otg_proto_enumTypes[101] } -func (x StateProtocolLacpAdmin_State_Enum) Number() protoreflect.EnumNumber { +func (x FlowRxTxRatio_Choice_Enum) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } -// Deprecated: Use StateProtocolLacpAdmin_State_Enum.Descriptor instead. -func (StateProtocolLacpAdmin_State_Enum) EnumDescriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{234, 0, 0} +// Deprecated: Use FlowRxTxRatio_Choice_Enum.Descriptor instead. +func (FlowRxTxRatio_Choice_Enum) EnumDescriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{255, 0, 0} } -type StateProtocolLacpMemberPorts_State_Enum int32 +type EventRequest_Type_Enum int32 const ( - StateProtocolLacpMemberPorts_State_unspecified StateProtocolLacpMemberPorts_State_Enum = 0 - StateProtocolLacpMemberPorts_State_up StateProtocolLacpMemberPorts_State_Enum = 1 - StateProtocolLacpMemberPorts_State_down StateProtocolLacpMemberPorts_State_Enum = 2 + EventRequest_Type_unspecified EventRequest_Type_Enum = 0 + EventRequest_Type_link_down EventRequest_Type_Enum = 1 + EventRequest_Type_link_up EventRequest_Type_Enum = 2 + EventRequest_Type_route_withdraw EventRequest_Type_Enum = 3 + EventRequest_Type_route_advertise EventRequest_Type_Enum = 4 + EventRequest_Type_flow_rx_rate_above_threshold EventRequest_Type_Enum = 5 + EventRequest_Type_flow_rx_rate_below_threshold EventRequest_Type_Enum = 6 ) -// Enum value maps for StateProtocolLacpMemberPorts_State_Enum. +// Enum value maps for EventRequest_Type_Enum. var ( - StateProtocolLacpMemberPorts_State_Enum_name = map[int32]string{ + EventRequest_Type_Enum_name = map[int32]string{ 0: "unspecified", - 1: "up", - 2: "down", + 1: "link_down", + 2: "link_up", + 3: "route_withdraw", + 4: "route_advertise", + 5: "flow_rx_rate_above_threshold", + 6: "flow_rx_rate_below_threshold", } - StateProtocolLacpMemberPorts_State_Enum_value = map[string]int32{ - "unspecified": 0, - "up": 1, - "down": 2, + EventRequest_Type_Enum_value = map[string]int32{ + "unspecified": 0, + "link_down": 1, + "link_up": 2, + "route_withdraw": 3, + "route_advertise": 4, + "flow_rx_rate_above_threshold": 5, + "flow_rx_rate_below_threshold": 6, } ) -func (x StateProtocolLacpMemberPorts_State_Enum) Enum() *StateProtocolLacpMemberPorts_State_Enum { - p := new(StateProtocolLacpMemberPorts_State_Enum) +func (x EventRequest_Type_Enum) Enum() *EventRequest_Type_Enum { + p := new(EventRequest_Type_Enum) *p = x return p } -func (x StateProtocolLacpMemberPorts_State_Enum) String() string { +func (x EventRequest_Type_Enum) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } -func (StateProtocolLacpMemberPorts_State_Enum) Descriptor() protoreflect.EnumDescriptor { +func (EventRequest_Type_Enum) Descriptor() protoreflect.EnumDescriptor { return file_otg_proto_enumTypes[102].Descriptor() } -func (StateProtocolLacpMemberPorts_State_Enum) Type() protoreflect.EnumType { +func (EventRequest_Type_Enum) Type() protoreflect.EnumType { return &file_otg_proto_enumTypes[102] } -func (x StateProtocolLacpMemberPorts_State_Enum) Number() protoreflect.EnumNumber { +func (x EventRequest_Type_Enum) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } -// Deprecated: Use StateProtocolLacpMemberPorts_State_Enum.Descriptor instead. -func (StateProtocolLacpMemberPorts_State_Enum) EnumDescriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{235, 0, 0} +// Deprecated: Use EventRequest_Type_Enum.Descriptor instead. +func (EventRequest_Type_Enum) EnumDescriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{261, 0, 0} } -type StateProtocolBgp_Choice_Enum int32 +type LldpConnection_Choice_Enum int32 const ( - StateProtocolBgp_Choice_unspecified StateProtocolBgp_Choice_Enum = 0 - StateProtocolBgp_Choice_peers StateProtocolBgp_Choice_Enum = 1 + LldpConnection_Choice_unspecified LldpConnection_Choice_Enum = 0 + LldpConnection_Choice_port_name LldpConnection_Choice_Enum = 1 ) -// Enum value maps for StateProtocolBgp_Choice_Enum. +// Enum value maps for LldpConnection_Choice_Enum. var ( - StateProtocolBgp_Choice_Enum_name = map[int32]string{ + LldpConnection_Choice_Enum_name = map[int32]string{ 0: "unspecified", - 1: "peers", + 1: "port_name", } - StateProtocolBgp_Choice_Enum_value = map[string]int32{ + LldpConnection_Choice_Enum_value = map[string]int32{ "unspecified": 0, - "peers": 1, + "port_name": 1, } ) -func (x StateProtocolBgp_Choice_Enum) Enum() *StateProtocolBgp_Choice_Enum { - p := new(StateProtocolBgp_Choice_Enum) +func (x LldpConnection_Choice_Enum) Enum() *LldpConnection_Choice_Enum { + p := new(LldpConnection_Choice_Enum) *p = x return p } -func (x StateProtocolBgp_Choice_Enum) String() string { +func (x LldpConnection_Choice_Enum) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } -func (StateProtocolBgp_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { +func (LldpConnection_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { return file_otg_proto_enumTypes[103].Descriptor() } -func (StateProtocolBgp_Choice_Enum) Type() protoreflect.EnumType { +func (LldpConnection_Choice_Enum) Type() protoreflect.EnumType { return &file_otg_proto_enumTypes[103] } -func (x StateProtocolBgp_Choice_Enum) Number() protoreflect.EnumNumber { +func (x LldpConnection_Choice_Enum) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } -// Deprecated: Use StateProtocolBgp_Choice_Enum.Descriptor instead. -func (StateProtocolBgp_Choice_Enum) EnumDescriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{236, 0, 0} -} - -type StateProtocolBgpPeers_State_Enum int32 +// Deprecated: Use LldpConnection_Choice_Enum.Descriptor instead. +func (LldpConnection_Choice_Enum) EnumDescriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{264, 0, 0} +} + +type LldpChassisId_Choice_Enum int32 const ( - StateProtocolBgpPeers_State_unspecified StateProtocolBgpPeers_State_Enum = 0 - StateProtocolBgpPeers_State_up StateProtocolBgpPeers_State_Enum = 1 - StateProtocolBgpPeers_State_down StateProtocolBgpPeers_State_Enum = 2 + LldpChassisId_Choice_unspecified LldpChassisId_Choice_Enum = 0 + LldpChassisId_Choice_mac_address_subtype LldpChassisId_Choice_Enum = 1 + LldpChassisId_Choice_interface_name_subtype LldpChassisId_Choice_Enum = 2 + LldpChassisId_Choice_local_subtype LldpChassisId_Choice_Enum = 3 ) -// Enum value maps for StateProtocolBgpPeers_State_Enum. +// Enum value maps for LldpChassisId_Choice_Enum. var ( - StateProtocolBgpPeers_State_Enum_name = map[int32]string{ + LldpChassisId_Choice_Enum_name = map[int32]string{ 0: "unspecified", - 1: "up", - 2: "down", + 1: "mac_address_subtype", + 2: "interface_name_subtype", + 3: "local_subtype", } - StateProtocolBgpPeers_State_Enum_value = map[string]int32{ - "unspecified": 0, - "up": 1, - "down": 2, + LldpChassisId_Choice_Enum_value = map[string]int32{ + "unspecified": 0, + "mac_address_subtype": 1, + "interface_name_subtype": 2, + "local_subtype": 3, } ) -func (x StateProtocolBgpPeers_State_Enum) Enum() *StateProtocolBgpPeers_State_Enum { - p := new(StateProtocolBgpPeers_State_Enum) +func (x LldpChassisId_Choice_Enum) Enum() *LldpChassisId_Choice_Enum { + p := new(LldpChassisId_Choice_Enum) *p = x return p } -func (x StateProtocolBgpPeers_State_Enum) String() string { +func (x LldpChassisId_Choice_Enum) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } -func (StateProtocolBgpPeers_State_Enum) Descriptor() protoreflect.EnumDescriptor { +func (LldpChassisId_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { return file_otg_proto_enumTypes[104].Descriptor() } -func (StateProtocolBgpPeers_State_Enum) Type() protoreflect.EnumType { +func (LldpChassisId_Choice_Enum) Type() protoreflect.EnumType { return &file_otg_proto_enumTypes[104] } -func (x StateProtocolBgpPeers_State_Enum) Number() protoreflect.EnumNumber { +func (x LldpChassisId_Choice_Enum) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } -// Deprecated: Use StateProtocolBgpPeers_State_Enum.Descriptor instead. -func (StateProtocolBgpPeers_State_Enum) EnumDescriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{237, 0, 0} +// Deprecated: Use LldpChassisId_Choice_Enum.Descriptor instead. +func (LldpChassisId_Choice_Enum) EnumDescriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{265, 0, 0} } -type StateProtocolIsis_Choice_Enum int32 +type LldpPortId_Choice_Enum int32 const ( - StateProtocolIsis_Choice_unspecified StateProtocolIsis_Choice_Enum = 0 - StateProtocolIsis_Choice_routers StateProtocolIsis_Choice_Enum = 1 + LldpPortId_Choice_unspecified LldpPortId_Choice_Enum = 0 + LldpPortId_Choice_mac_address_subtype LldpPortId_Choice_Enum = 1 + LldpPortId_Choice_interface_name_subtype LldpPortId_Choice_Enum = 2 + LldpPortId_Choice_local_subtype LldpPortId_Choice_Enum = 3 ) -// Enum value maps for StateProtocolIsis_Choice_Enum. +// Enum value maps for LldpPortId_Choice_Enum. var ( - StateProtocolIsis_Choice_Enum_name = map[int32]string{ + LldpPortId_Choice_Enum_name = map[int32]string{ 0: "unspecified", - 1: "routers", + 1: "mac_address_subtype", + 2: "interface_name_subtype", + 3: "local_subtype", } - StateProtocolIsis_Choice_Enum_value = map[string]int32{ - "unspecified": 0, - "routers": 1, + LldpPortId_Choice_Enum_value = map[string]int32{ + "unspecified": 0, + "mac_address_subtype": 1, + "interface_name_subtype": 2, + "local_subtype": 3, } ) -func (x StateProtocolIsis_Choice_Enum) Enum() *StateProtocolIsis_Choice_Enum { - p := new(StateProtocolIsis_Choice_Enum) +func (x LldpPortId_Choice_Enum) Enum() *LldpPortId_Choice_Enum { + p := new(LldpPortId_Choice_Enum) *p = x return p } -func (x StateProtocolIsis_Choice_Enum) String() string { +func (x LldpPortId_Choice_Enum) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } -func (StateProtocolIsis_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { +func (LldpPortId_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { return file_otg_proto_enumTypes[105].Descriptor() } -func (StateProtocolIsis_Choice_Enum) Type() protoreflect.EnumType { +func (LldpPortId_Choice_Enum) Type() protoreflect.EnumType { return &file_otg_proto_enumTypes[105] } -func (x StateProtocolIsis_Choice_Enum) Number() protoreflect.EnumNumber { +func (x LldpPortId_Choice_Enum) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } -// Deprecated: Use StateProtocolIsis_Choice_Enum.Descriptor instead. -func (StateProtocolIsis_Choice_Enum) EnumDescriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{238, 0, 0} +// Deprecated: Use LldpPortId_Choice_Enum.Descriptor instead. +func (LldpPortId_Choice_Enum) EnumDescriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{266, 0, 0} } -type StateProtocolIsisRouters_State_Enum int32 +type LldpChassisMacSubType_Choice_Enum int32 const ( - StateProtocolIsisRouters_State_unspecified StateProtocolIsisRouters_State_Enum = 0 - StateProtocolIsisRouters_State_up StateProtocolIsisRouters_State_Enum = 1 - StateProtocolIsisRouters_State_down StateProtocolIsisRouters_State_Enum = 2 + LldpChassisMacSubType_Choice_unspecified LldpChassisMacSubType_Choice_Enum = 0 + LldpChassisMacSubType_Choice_auto LldpChassisMacSubType_Choice_Enum = 1 + LldpChassisMacSubType_Choice_value LldpChassisMacSubType_Choice_Enum = 2 ) -// Enum value maps for StateProtocolIsisRouters_State_Enum. +// Enum value maps for LldpChassisMacSubType_Choice_Enum. var ( - StateProtocolIsisRouters_State_Enum_name = map[int32]string{ + LldpChassisMacSubType_Choice_Enum_name = map[int32]string{ 0: "unspecified", - 1: "up", - 2: "down", + 1: "auto", + 2: "value", } - StateProtocolIsisRouters_State_Enum_value = map[string]int32{ + LldpChassisMacSubType_Choice_Enum_value = map[string]int32{ "unspecified": 0, - "up": 1, - "down": 2, + "auto": 1, + "value": 2, } ) -func (x StateProtocolIsisRouters_State_Enum) Enum() *StateProtocolIsisRouters_State_Enum { - p := new(StateProtocolIsisRouters_State_Enum) +func (x LldpChassisMacSubType_Choice_Enum) Enum() *LldpChassisMacSubType_Choice_Enum { + p := new(LldpChassisMacSubType_Choice_Enum) *p = x return p } -func (x StateProtocolIsisRouters_State_Enum) String() string { +func (x LldpChassisMacSubType_Choice_Enum) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } -func (StateProtocolIsisRouters_State_Enum) Descriptor() protoreflect.EnumDescriptor { +func (LldpChassisMacSubType_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { return file_otg_proto_enumTypes[106].Descriptor() } -func (StateProtocolIsisRouters_State_Enum) Type() protoreflect.EnumType { +func (LldpChassisMacSubType_Choice_Enum) Type() protoreflect.EnumType { return &file_otg_proto_enumTypes[106] } -func (x StateProtocolIsisRouters_State_Enum) Number() protoreflect.EnumNumber { +func (x LldpChassisMacSubType_Choice_Enum) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } -// Deprecated: Use StateProtocolIsisRouters_State_Enum.Descriptor instead. -func (StateProtocolIsisRouters_State_Enum) EnumDescriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{239, 0, 0} +// Deprecated: Use LldpChassisMacSubType_Choice_Enum.Descriptor instead. +func (LldpChassisMacSubType_Choice_Enum) EnumDescriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{267, 0, 0} } -type ControlAction_Choice_Enum int32 +type LldpPortInterfaceNameSubType_Choice_Enum int32 const ( - ControlAction_Choice_unspecified ControlAction_Choice_Enum = 0 - ControlAction_Choice_protocol ControlAction_Choice_Enum = 1 + LldpPortInterfaceNameSubType_Choice_unspecified LldpPortInterfaceNameSubType_Choice_Enum = 0 + LldpPortInterfaceNameSubType_Choice_auto LldpPortInterfaceNameSubType_Choice_Enum = 1 + LldpPortInterfaceNameSubType_Choice_value LldpPortInterfaceNameSubType_Choice_Enum = 2 ) -// Enum value maps for ControlAction_Choice_Enum. +// Enum value maps for LldpPortInterfaceNameSubType_Choice_Enum. var ( - ControlAction_Choice_Enum_name = map[int32]string{ + LldpPortInterfaceNameSubType_Choice_Enum_name = map[int32]string{ 0: "unspecified", - 1: "protocol", + 1: "auto", + 2: "value", } - ControlAction_Choice_Enum_value = map[string]int32{ + LldpPortInterfaceNameSubType_Choice_Enum_value = map[string]int32{ "unspecified": 0, - "protocol": 1, + "auto": 1, + "value": 2, } ) -func (x ControlAction_Choice_Enum) Enum() *ControlAction_Choice_Enum { - p := new(ControlAction_Choice_Enum) +func (x LldpPortInterfaceNameSubType_Choice_Enum) Enum() *LldpPortInterfaceNameSubType_Choice_Enum { + p := new(LldpPortInterfaceNameSubType_Choice_Enum) *p = x return p } -func (x ControlAction_Choice_Enum) String() string { +func (x LldpPortInterfaceNameSubType_Choice_Enum) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } -func (ControlAction_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { +func (LldpPortInterfaceNameSubType_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { return file_otg_proto_enumTypes[107].Descriptor() } -func (ControlAction_Choice_Enum) Type() protoreflect.EnumType { +func (LldpPortInterfaceNameSubType_Choice_Enum) Type() protoreflect.EnumType { return &file_otg_proto_enumTypes[107] } -func (x ControlAction_Choice_Enum) Number() protoreflect.EnumNumber { +func (x LldpPortInterfaceNameSubType_Choice_Enum) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } -// Deprecated: Use ControlAction_Choice_Enum.Descriptor instead. -func (ControlAction_Choice_Enum) EnumDescriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{240, 0, 0} +// Deprecated: Use LldpPortInterfaceNameSubType_Choice_Enum.Descriptor instead. +func (LldpPortInterfaceNameSubType_Choice_Enum) EnumDescriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{268, 0, 0} } -type ActionResponse_Choice_Enum int32 +type LldpSystemName_Choice_Enum int32 const ( - ActionResponse_Choice_unspecified ActionResponse_Choice_Enum = 0 - ActionResponse_Choice_protocol ActionResponse_Choice_Enum = 1 + LldpSystemName_Choice_unspecified LldpSystemName_Choice_Enum = 0 + LldpSystemName_Choice_auto LldpSystemName_Choice_Enum = 1 + LldpSystemName_Choice_value LldpSystemName_Choice_Enum = 2 ) -// Enum value maps for ActionResponse_Choice_Enum. +// Enum value maps for LldpSystemName_Choice_Enum. var ( - ActionResponse_Choice_Enum_name = map[int32]string{ + LldpSystemName_Choice_Enum_name = map[int32]string{ 0: "unspecified", - 1: "protocol", + 1: "auto", + 2: "value", } - ActionResponse_Choice_Enum_value = map[string]int32{ + LldpSystemName_Choice_Enum_value = map[string]int32{ "unspecified": 0, - "protocol": 1, + "auto": 1, + "value": 2, } ) -func (x ActionResponse_Choice_Enum) Enum() *ActionResponse_Choice_Enum { - p := new(ActionResponse_Choice_Enum) +func (x LldpSystemName_Choice_Enum) Enum() *LldpSystemName_Choice_Enum { + p := new(LldpSystemName_Choice_Enum) *p = x return p } -func (x ActionResponse_Choice_Enum) String() string { +func (x LldpSystemName_Choice_Enum) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } -func (ActionResponse_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { +func (LldpSystemName_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { return file_otg_proto_enumTypes[108].Descriptor() } -func (ActionResponse_Choice_Enum) Type() protoreflect.EnumType { +func (LldpSystemName_Choice_Enum) Type() protoreflect.EnumType { return &file_otg_proto_enumTypes[108] } -func (x ActionResponse_Choice_Enum) Number() protoreflect.EnumNumber { +func (x LldpSystemName_Choice_Enum) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } -// Deprecated: Use ActionResponse_Choice_Enum.Descriptor instead. -func (ActionResponse_Choice_Enum) EnumDescriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{242, 0, 0} +// Deprecated: Use LldpSystemName_Choice_Enum.Descriptor instead. +func (LldpSystemName_Choice_Enum) EnumDescriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{269, 0, 0} } -type ActionProtocol_Choice_Enum int32 +type Error_Kind_Enum int32 const ( - ActionProtocol_Choice_unspecified ActionProtocol_Choice_Enum = 0 - ActionProtocol_Choice_ipv4 ActionProtocol_Choice_Enum = 1 - ActionProtocol_Choice_ipv6 ActionProtocol_Choice_Enum = 2 - ActionProtocol_Choice_bgp ActionProtocol_Choice_Enum = 3 + Error_Kind_unspecified Error_Kind_Enum = 0 + Error_Kind_validation Error_Kind_Enum = 1 + Error_Kind_internal Error_Kind_Enum = 2 ) -// Enum value maps for ActionProtocol_Choice_Enum. +// Enum value maps for Error_Kind_Enum. var ( - ActionProtocol_Choice_Enum_name = map[int32]string{ + Error_Kind_Enum_name = map[int32]string{ 0: "unspecified", - 1: "ipv4", - 2: "ipv6", - 3: "bgp", + 1: "validation", + 2: "internal", } - ActionProtocol_Choice_Enum_value = map[string]int32{ + Error_Kind_Enum_value = map[string]int32{ "unspecified": 0, - "ipv4": 1, - "ipv6": 2, - "bgp": 3, + "validation": 1, + "internal": 2, } ) -func (x ActionProtocol_Choice_Enum) Enum() *ActionProtocol_Choice_Enum { - p := new(ActionProtocol_Choice_Enum) +func (x Error_Kind_Enum) Enum() *Error_Kind_Enum { + p := new(Error_Kind_Enum) *p = x return p } -func (x ActionProtocol_Choice_Enum) String() string { +func (x Error_Kind_Enum) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } -func (ActionProtocol_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { +func (Error_Kind_Enum) Descriptor() protoreflect.EnumDescriptor { return file_otg_proto_enumTypes[109].Descriptor() } -func (ActionProtocol_Choice_Enum) Type() protoreflect.EnumType { +func (Error_Kind_Enum) Type() protoreflect.EnumType { return &file_otg_proto_enumTypes[109] } -func (x ActionProtocol_Choice_Enum) Number() protoreflect.EnumNumber { +func (x Error_Kind_Enum) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } -// Deprecated: Use ActionProtocol_Choice_Enum.Descriptor instead. -func (ActionProtocol_Choice_Enum) EnumDescriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{243, 0, 0} +// Deprecated: Use Error_Kind_Enum.Descriptor instead. +func (Error_Kind_Enum) EnumDescriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{270, 0, 0} } -type ActionResponseProtocol_Choice_Enum int32 +type ConfigUpdate_Choice_Enum int32 const ( - ActionResponseProtocol_Choice_unspecified ActionResponseProtocol_Choice_Enum = 0 - ActionResponseProtocol_Choice_ipv4 ActionResponseProtocol_Choice_Enum = 1 - ActionResponseProtocol_Choice_ipv6 ActionResponseProtocol_Choice_Enum = 2 + ConfigUpdate_Choice_unspecified ConfigUpdate_Choice_Enum = 0 + ConfigUpdate_Choice_flows ConfigUpdate_Choice_Enum = 1 ) -// Enum value maps for ActionResponseProtocol_Choice_Enum. +// Enum value maps for ConfigUpdate_Choice_Enum. var ( - ActionResponseProtocol_Choice_Enum_name = map[int32]string{ + ConfigUpdate_Choice_Enum_name = map[int32]string{ 0: "unspecified", - 1: "ipv4", - 2: "ipv6", + 1: "flows", } - ActionResponseProtocol_Choice_Enum_value = map[string]int32{ + ConfigUpdate_Choice_Enum_value = map[string]int32{ "unspecified": 0, - "ipv4": 1, - "ipv6": 2, + "flows": 1, } ) -func (x ActionResponseProtocol_Choice_Enum) Enum() *ActionResponseProtocol_Choice_Enum { - p := new(ActionResponseProtocol_Choice_Enum) +func (x ConfigUpdate_Choice_Enum) Enum() *ConfigUpdate_Choice_Enum { + p := new(ConfigUpdate_Choice_Enum) *p = x return p } -func (x ActionResponseProtocol_Choice_Enum) String() string { +func (x ConfigUpdate_Choice_Enum) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } -func (ActionResponseProtocol_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { +func (ConfigUpdate_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { return file_otg_proto_enumTypes[110].Descriptor() } -func (ActionResponseProtocol_Choice_Enum) Type() protoreflect.EnumType { +func (ConfigUpdate_Choice_Enum) Type() protoreflect.EnumType { return &file_otg_proto_enumTypes[110] } -func (x ActionResponseProtocol_Choice_Enum) Number() protoreflect.EnumNumber { +func (x ConfigUpdate_Choice_Enum) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } -// Deprecated: Use ActionResponseProtocol_Choice_Enum.Descriptor instead. -func (ActionResponseProtocol_Choice_Enum) EnumDescriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{244, 0, 0} +// Deprecated: Use ConfigUpdate_Choice_Enum.Descriptor instead. +func (ConfigUpdate_Choice_Enum) EnumDescriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{272, 0, 0} } -type ActionProtocolIpv4_Choice_Enum int32 +type FlowsUpdate_PropertyNames_Enum int32 const ( - ActionProtocolIpv4_Choice_unspecified ActionProtocolIpv4_Choice_Enum = 0 - ActionProtocolIpv4_Choice_ping ActionProtocolIpv4_Choice_Enum = 1 + FlowsUpdate_PropertyNames_unspecified FlowsUpdate_PropertyNames_Enum = 0 + FlowsUpdate_PropertyNames_rate FlowsUpdate_PropertyNames_Enum = 1 + FlowsUpdate_PropertyNames_size FlowsUpdate_PropertyNames_Enum = 2 ) -// Enum value maps for ActionProtocolIpv4_Choice_Enum. +// Enum value maps for FlowsUpdate_PropertyNames_Enum. var ( - ActionProtocolIpv4_Choice_Enum_name = map[int32]string{ + FlowsUpdate_PropertyNames_Enum_name = map[int32]string{ 0: "unspecified", - 1: "ping", + 1: "rate", + 2: "size", } - ActionProtocolIpv4_Choice_Enum_value = map[string]int32{ + FlowsUpdate_PropertyNames_Enum_value = map[string]int32{ "unspecified": 0, - "ping": 1, + "rate": 1, + "size": 2, } ) -func (x ActionProtocolIpv4_Choice_Enum) Enum() *ActionProtocolIpv4_Choice_Enum { - p := new(ActionProtocolIpv4_Choice_Enum) +func (x FlowsUpdate_PropertyNames_Enum) Enum() *FlowsUpdate_PropertyNames_Enum { + p := new(FlowsUpdate_PropertyNames_Enum) *p = x return p } -func (x ActionProtocolIpv4_Choice_Enum) String() string { +func (x FlowsUpdate_PropertyNames_Enum) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } -func (ActionProtocolIpv4_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { +func (FlowsUpdate_PropertyNames_Enum) Descriptor() protoreflect.EnumDescriptor { return file_otg_proto_enumTypes[111].Descriptor() } -func (ActionProtocolIpv4_Choice_Enum) Type() protoreflect.EnumType { +func (FlowsUpdate_PropertyNames_Enum) Type() protoreflect.EnumType { return &file_otg_proto_enumTypes[111] } -func (x ActionProtocolIpv4_Choice_Enum) Number() protoreflect.EnumNumber { +func (x FlowsUpdate_PropertyNames_Enum) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } -// Deprecated: Use ActionProtocolIpv4_Choice_Enum.Descriptor instead. -func (ActionProtocolIpv4_Choice_Enum) EnumDescriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{245, 0, 0} +// Deprecated: Use FlowsUpdate_PropertyNames_Enum.Descriptor instead. +func (FlowsUpdate_PropertyNames_Enum) EnumDescriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{273, 0, 0} } -type ActionResponseProtocolIpv4_Choice_Enum int32 +type ControlState_Choice_Enum int32 const ( - ActionResponseProtocolIpv4_Choice_unspecified ActionResponseProtocolIpv4_Choice_Enum = 0 - ActionResponseProtocolIpv4_Choice_ping ActionResponseProtocolIpv4_Choice_Enum = 1 + ControlState_Choice_unspecified ControlState_Choice_Enum = 0 + ControlState_Choice_port ControlState_Choice_Enum = 1 + ControlState_Choice_protocol ControlState_Choice_Enum = 2 + ControlState_Choice_traffic ControlState_Choice_Enum = 3 ) -// Enum value maps for ActionResponseProtocolIpv4_Choice_Enum. +// Enum value maps for ControlState_Choice_Enum. var ( - ActionResponseProtocolIpv4_Choice_Enum_name = map[int32]string{ + ControlState_Choice_Enum_name = map[int32]string{ 0: "unspecified", - 1: "ping", + 1: "port", + 2: "protocol", + 3: "traffic", } - ActionResponseProtocolIpv4_Choice_Enum_value = map[string]int32{ + ControlState_Choice_Enum_value = map[string]int32{ "unspecified": 0, - "ping": 1, + "port": 1, + "protocol": 2, + "traffic": 3, } ) -func (x ActionResponseProtocolIpv4_Choice_Enum) Enum() *ActionResponseProtocolIpv4_Choice_Enum { - p := new(ActionResponseProtocolIpv4_Choice_Enum) +func (x ControlState_Choice_Enum) Enum() *ControlState_Choice_Enum { + p := new(ControlState_Choice_Enum) *p = x return p } -func (x ActionResponseProtocolIpv4_Choice_Enum) String() string { +func (x ControlState_Choice_Enum) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } -func (ActionResponseProtocolIpv4_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { +func (ControlState_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { return file_otg_proto_enumTypes[112].Descriptor() } -func (ActionResponseProtocolIpv4_Choice_Enum) Type() protoreflect.EnumType { +func (ControlState_Choice_Enum) Type() protoreflect.EnumType { return &file_otg_proto_enumTypes[112] } -func (x ActionResponseProtocolIpv4_Choice_Enum) Number() protoreflect.EnumNumber { +func (x ControlState_Choice_Enum) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } -// Deprecated: Use ActionResponseProtocolIpv4_Choice_Enum.Descriptor instead. -func (ActionResponseProtocolIpv4_Choice_Enum) EnumDescriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{246, 0, 0} +// Deprecated: Use ControlState_Choice_Enum.Descriptor instead. +func (ControlState_Choice_Enum) EnumDescriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{274, 0, 0} } -type ActionResponseProtocolIpv4PingResponse_Result_Enum int32 +type StatePort_Choice_Enum int32 const ( - ActionResponseProtocolIpv4PingResponse_Result_unspecified ActionResponseProtocolIpv4PingResponse_Result_Enum = 0 - ActionResponseProtocolIpv4PingResponse_Result_succeeded ActionResponseProtocolIpv4PingResponse_Result_Enum = 1 - ActionResponseProtocolIpv4PingResponse_Result_failed ActionResponseProtocolIpv4PingResponse_Result_Enum = 2 + StatePort_Choice_unspecified StatePort_Choice_Enum = 0 + StatePort_Choice_link StatePort_Choice_Enum = 1 + StatePort_Choice_capture StatePort_Choice_Enum = 2 ) -// Enum value maps for ActionResponseProtocolIpv4PingResponse_Result_Enum. +// Enum value maps for StatePort_Choice_Enum. var ( - ActionResponseProtocolIpv4PingResponse_Result_Enum_name = map[int32]string{ + StatePort_Choice_Enum_name = map[int32]string{ 0: "unspecified", - 1: "succeeded", - 2: "failed", + 1: "link", + 2: "capture", } - ActionResponseProtocolIpv4PingResponse_Result_Enum_value = map[string]int32{ + StatePort_Choice_Enum_value = map[string]int32{ "unspecified": 0, - "succeeded": 1, - "failed": 2, + "link": 1, + "capture": 2, } ) -func (x ActionResponseProtocolIpv4PingResponse_Result_Enum) Enum() *ActionResponseProtocolIpv4PingResponse_Result_Enum { - p := new(ActionResponseProtocolIpv4PingResponse_Result_Enum) +func (x StatePort_Choice_Enum) Enum() *StatePort_Choice_Enum { + p := new(StatePort_Choice_Enum) *p = x return p } -func (x ActionResponseProtocolIpv4PingResponse_Result_Enum) String() string { +func (x StatePort_Choice_Enum) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } -func (ActionResponseProtocolIpv4PingResponse_Result_Enum) Descriptor() protoreflect.EnumDescriptor { +func (StatePort_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { return file_otg_proto_enumTypes[113].Descriptor() } -func (ActionResponseProtocolIpv4PingResponse_Result_Enum) Type() protoreflect.EnumType { +func (StatePort_Choice_Enum) Type() protoreflect.EnumType { return &file_otg_proto_enumTypes[113] } -func (x ActionResponseProtocolIpv4PingResponse_Result_Enum) Number() protoreflect.EnumNumber { +func (x StatePort_Choice_Enum) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } -// Deprecated: Use ActionResponseProtocolIpv4PingResponse_Result_Enum.Descriptor instead. -func (ActionResponseProtocolIpv4PingResponse_Result_Enum) EnumDescriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{250, 0, 0} +// Deprecated: Use StatePort_Choice_Enum.Descriptor instead. +func (StatePort_Choice_Enum) EnumDescriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{275, 0, 0} } -type ActionProtocolIpv6_Choice_Enum int32 +type StateTraffic_Choice_Enum int32 const ( - ActionProtocolIpv6_Choice_unspecified ActionProtocolIpv6_Choice_Enum = 0 - ActionProtocolIpv6_Choice_ping ActionProtocolIpv6_Choice_Enum = 1 + StateTraffic_Choice_unspecified StateTraffic_Choice_Enum = 0 + StateTraffic_Choice_flow_transmit StateTraffic_Choice_Enum = 1 ) -// Enum value maps for ActionProtocolIpv6_Choice_Enum. +// Enum value maps for StateTraffic_Choice_Enum. var ( - ActionProtocolIpv6_Choice_Enum_name = map[int32]string{ + StateTraffic_Choice_Enum_name = map[int32]string{ 0: "unspecified", - 1: "ping", + 1: "flow_transmit", } - ActionProtocolIpv6_Choice_Enum_value = map[string]int32{ - "unspecified": 0, - "ping": 1, + StateTraffic_Choice_Enum_value = map[string]int32{ + "unspecified": 0, + "flow_transmit": 1, } ) -func (x ActionProtocolIpv6_Choice_Enum) Enum() *ActionProtocolIpv6_Choice_Enum { - p := new(ActionProtocolIpv6_Choice_Enum) +func (x StateTraffic_Choice_Enum) Enum() *StateTraffic_Choice_Enum { + p := new(StateTraffic_Choice_Enum) *p = x return p } -func (x ActionProtocolIpv6_Choice_Enum) String() string { +func (x StateTraffic_Choice_Enum) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } -func (ActionProtocolIpv6_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { +func (StateTraffic_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { return file_otg_proto_enumTypes[114].Descriptor() } -func (ActionProtocolIpv6_Choice_Enum) Type() protoreflect.EnumType { +func (StateTraffic_Choice_Enum) Type() protoreflect.EnumType { return &file_otg_proto_enumTypes[114] } -func (x ActionProtocolIpv6_Choice_Enum) Number() protoreflect.EnumNumber { +func (x StateTraffic_Choice_Enum) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } -// Deprecated: Use ActionProtocolIpv6_Choice_Enum.Descriptor instead. -func (ActionProtocolIpv6_Choice_Enum) EnumDescriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{251, 0, 0} +// Deprecated: Use StateTraffic_Choice_Enum.Descriptor instead. +func (StateTraffic_Choice_Enum) EnumDescriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{276, 0, 0} } -type ActionResponseProtocolIpv6_Choice_Enum int32 +type StateProtocol_Choice_Enum int32 const ( - ActionResponseProtocolIpv6_Choice_unspecified ActionResponseProtocolIpv6_Choice_Enum = 0 - ActionResponseProtocolIpv6_Choice_ping ActionResponseProtocolIpv6_Choice_Enum = 1 + StateProtocol_Choice_unspecified StateProtocol_Choice_Enum = 0 + StateProtocol_Choice_all StateProtocol_Choice_Enum = 1 + StateProtocol_Choice_route StateProtocol_Choice_Enum = 2 + StateProtocol_Choice_lacp StateProtocol_Choice_Enum = 3 + StateProtocol_Choice_bgp StateProtocol_Choice_Enum = 4 + StateProtocol_Choice_isis StateProtocol_Choice_Enum = 5 ) -// Enum value maps for ActionResponseProtocolIpv6_Choice_Enum. +// Enum value maps for StateProtocol_Choice_Enum. var ( - ActionResponseProtocolIpv6_Choice_Enum_name = map[int32]string{ + StateProtocol_Choice_Enum_name = map[int32]string{ 0: "unspecified", - 1: "ping", + 1: "all", + 2: "route", + 3: "lacp", + 4: "bgp", + 5: "isis", } - ActionResponseProtocolIpv6_Choice_Enum_value = map[string]int32{ + StateProtocol_Choice_Enum_value = map[string]int32{ "unspecified": 0, - "ping": 1, + "all": 1, + "route": 2, + "lacp": 3, + "bgp": 4, + "isis": 5, } ) -func (x ActionResponseProtocolIpv6_Choice_Enum) Enum() *ActionResponseProtocolIpv6_Choice_Enum { - p := new(ActionResponseProtocolIpv6_Choice_Enum) +func (x StateProtocol_Choice_Enum) Enum() *StateProtocol_Choice_Enum { + p := new(StateProtocol_Choice_Enum) *p = x return p } -func (x ActionResponseProtocolIpv6_Choice_Enum) String() string { +func (x StateProtocol_Choice_Enum) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } -func (ActionResponseProtocolIpv6_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { +func (StateProtocol_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { return file_otg_proto_enumTypes[115].Descriptor() } -func (ActionResponseProtocolIpv6_Choice_Enum) Type() protoreflect.EnumType { +func (StateProtocol_Choice_Enum) Type() protoreflect.EnumType { return &file_otg_proto_enumTypes[115] } -func (x ActionResponseProtocolIpv6_Choice_Enum) Number() protoreflect.EnumNumber { +func (x StateProtocol_Choice_Enum) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } -// Deprecated: Use ActionResponseProtocolIpv6_Choice_Enum.Descriptor instead. -func (ActionResponseProtocolIpv6_Choice_Enum) EnumDescriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{252, 0, 0} +// Deprecated: Use StateProtocol_Choice_Enum.Descriptor instead. +func (StateProtocol_Choice_Enum) EnumDescriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{277, 0, 0} } -type ActionResponseProtocolIpv6PingResponse_Result_Enum int32 +type StatePortLink_State_Enum int32 const ( - ActionResponseProtocolIpv6PingResponse_Result_unspecified ActionResponseProtocolIpv6PingResponse_Result_Enum = 0 - ActionResponseProtocolIpv6PingResponse_Result_succeeded ActionResponseProtocolIpv6PingResponse_Result_Enum = 1 - ActionResponseProtocolIpv6PingResponse_Result_failed ActionResponseProtocolIpv6PingResponse_Result_Enum = 2 + StatePortLink_State_unspecified StatePortLink_State_Enum = 0 + StatePortLink_State_up StatePortLink_State_Enum = 1 + StatePortLink_State_down StatePortLink_State_Enum = 2 ) -// Enum value maps for ActionResponseProtocolIpv6PingResponse_Result_Enum. +// Enum value maps for StatePortLink_State_Enum. var ( - ActionResponseProtocolIpv6PingResponse_Result_Enum_name = map[int32]string{ + StatePortLink_State_Enum_name = map[int32]string{ 0: "unspecified", - 1: "succeeded", - 2: "failed", + 1: "up", + 2: "down", } - ActionResponseProtocolIpv6PingResponse_Result_Enum_value = map[string]int32{ + StatePortLink_State_Enum_value = map[string]int32{ "unspecified": 0, - "succeeded": 1, - "failed": 2, + "up": 1, + "down": 2, } ) -func (x ActionResponseProtocolIpv6PingResponse_Result_Enum) Enum() *ActionResponseProtocolIpv6PingResponse_Result_Enum { - p := new(ActionResponseProtocolIpv6PingResponse_Result_Enum) +func (x StatePortLink_State_Enum) Enum() *StatePortLink_State_Enum { + p := new(StatePortLink_State_Enum) *p = x return p } -func (x ActionResponseProtocolIpv6PingResponse_Result_Enum) String() string { +func (x StatePortLink_State_Enum) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } -func (ActionResponseProtocolIpv6PingResponse_Result_Enum) Descriptor() protoreflect.EnumDescriptor { +func (StatePortLink_State_Enum) Descriptor() protoreflect.EnumDescriptor { return file_otg_proto_enumTypes[116].Descriptor() } -func (ActionResponseProtocolIpv6PingResponse_Result_Enum) Type() protoreflect.EnumType { +func (StatePortLink_State_Enum) Type() protoreflect.EnumType { return &file_otg_proto_enumTypes[116] } -func (x ActionResponseProtocolIpv6PingResponse_Result_Enum) Number() protoreflect.EnumNumber { +func (x StatePortLink_State_Enum) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } -// Deprecated: Use ActionResponseProtocolIpv6PingResponse_Result_Enum.Descriptor instead. -func (ActionResponseProtocolIpv6PingResponse_Result_Enum) EnumDescriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{256, 0, 0} -} +// Deprecated: Use StatePortLink_State_Enum.Descriptor instead. +func (StatePortLink_State_Enum) EnumDescriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{278, 0, 0} +} -type ActionProtocolBgp_Choice_Enum int32 +type StatePortCapture_State_Enum int32 const ( - ActionProtocolBgp_Choice_unspecified ActionProtocolBgp_Choice_Enum = 0 - ActionProtocolBgp_Choice_notification ActionProtocolBgp_Choice_Enum = 1 - ActionProtocolBgp_Choice_initiate_graceful_restart ActionProtocolBgp_Choice_Enum = 2 + StatePortCapture_State_unspecified StatePortCapture_State_Enum = 0 + StatePortCapture_State_start StatePortCapture_State_Enum = 1 + StatePortCapture_State_stop StatePortCapture_State_Enum = 2 ) -// Enum value maps for ActionProtocolBgp_Choice_Enum. +// Enum value maps for StatePortCapture_State_Enum. var ( - ActionProtocolBgp_Choice_Enum_name = map[int32]string{ + StatePortCapture_State_Enum_name = map[int32]string{ 0: "unspecified", - 1: "notification", - 2: "initiate_graceful_restart", + 1: "start", + 2: "stop", } - ActionProtocolBgp_Choice_Enum_value = map[string]int32{ - "unspecified": 0, - "notification": 1, - "initiate_graceful_restart": 2, + StatePortCapture_State_Enum_value = map[string]int32{ + "unspecified": 0, + "start": 1, + "stop": 2, } ) -func (x ActionProtocolBgp_Choice_Enum) Enum() *ActionProtocolBgp_Choice_Enum { - p := new(ActionProtocolBgp_Choice_Enum) +func (x StatePortCapture_State_Enum) Enum() *StatePortCapture_State_Enum { + p := new(StatePortCapture_State_Enum) *p = x return p } -func (x ActionProtocolBgp_Choice_Enum) String() string { +func (x StatePortCapture_State_Enum) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } -func (ActionProtocolBgp_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { +func (StatePortCapture_State_Enum) Descriptor() protoreflect.EnumDescriptor { return file_otg_proto_enumTypes[117].Descriptor() } -func (ActionProtocolBgp_Choice_Enum) Type() protoreflect.EnumType { +func (StatePortCapture_State_Enum) Type() protoreflect.EnumType { return &file_otg_proto_enumTypes[117] } -func (x ActionProtocolBgp_Choice_Enum) Number() protoreflect.EnumNumber { +func (x StatePortCapture_State_Enum) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } -// Deprecated: Use ActionProtocolBgp_Choice_Enum.Descriptor instead. -func (ActionProtocolBgp_Choice_Enum) EnumDescriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{257, 0, 0} +// Deprecated: Use StatePortCapture_State_Enum.Descriptor instead. +func (StatePortCapture_State_Enum) EnumDescriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{279, 0, 0} } -type ActionProtocolBgpNotification_Choice_Enum int32 +type StateTrafficFlowTransmit_State_Enum int32 const ( - ActionProtocolBgpNotification_Choice_unspecified ActionProtocolBgpNotification_Choice_Enum = 0 - ActionProtocolBgpNotification_Choice_cease ActionProtocolBgpNotification_Choice_Enum = 1 - ActionProtocolBgpNotification_Choice_message_header_error ActionProtocolBgpNotification_Choice_Enum = 2 - ActionProtocolBgpNotification_Choice_open_message_error ActionProtocolBgpNotification_Choice_Enum = 3 - ActionProtocolBgpNotification_Choice_update_message_error ActionProtocolBgpNotification_Choice_Enum = 4 - ActionProtocolBgpNotification_Choice_hold_timer_expired ActionProtocolBgpNotification_Choice_Enum = 5 - ActionProtocolBgpNotification_Choice_finite_state_machine_error ActionProtocolBgpNotification_Choice_Enum = 6 - ActionProtocolBgpNotification_Choice_custom ActionProtocolBgpNotification_Choice_Enum = 7 + StateTrafficFlowTransmit_State_unspecified StateTrafficFlowTransmit_State_Enum = 0 + StateTrafficFlowTransmit_State_start StateTrafficFlowTransmit_State_Enum = 1 + StateTrafficFlowTransmit_State_stop StateTrafficFlowTransmit_State_Enum = 2 + StateTrafficFlowTransmit_State_pause StateTrafficFlowTransmit_State_Enum = 3 + StateTrafficFlowTransmit_State_resume StateTrafficFlowTransmit_State_Enum = 4 ) -// Enum value maps for ActionProtocolBgpNotification_Choice_Enum. +// Enum value maps for StateTrafficFlowTransmit_State_Enum. var ( - ActionProtocolBgpNotification_Choice_Enum_name = map[int32]string{ + StateTrafficFlowTransmit_State_Enum_name = map[int32]string{ 0: "unspecified", - 1: "cease", - 2: "message_header_error", - 3: "open_message_error", - 4: "update_message_error", - 5: "hold_timer_expired", - 6: "finite_state_machine_error", - 7: "custom", + 1: "start", + 2: "stop", + 3: "pause", + 4: "resume", } - ActionProtocolBgpNotification_Choice_Enum_value = map[string]int32{ - "unspecified": 0, - "cease": 1, - "message_header_error": 2, - "open_message_error": 3, - "update_message_error": 4, - "hold_timer_expired": 5, - "finite_state_machine_error": 6, - "custom": 7, + StateTrafficFlowTransmit_State_Enum_value = map[string]int32{ + "unspecified": 0, + "start": 1, + "stop": 2, + "pause": 3, + "resume": 4, } ) -func (x ActionProtocolBgpNotification_Choice_Enum) Enum() *ActionProtocolBgpNotification_Choice_Enum { - p := new(ActionProtocolBgpNotification_Choice_Enum) +func (x StateTrafficFlowTransmit_State_Enum) Enum() *StateTrafficFlowTransmit_State_Enum { + p := new(StateTrafficFlowTransmit_State_Enum) *p = x return p } -func (x ActionProtocolBgpNotification_Choice_Enum) String() string { +func (x StateTrafficFlowTransmit_State_Enum) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } -func (ActionProtocolBgpNotification_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { +func (StateTrafficFlowTransmit_State_Enum) Descriptor() protoreflect.EnumDescriptor { return file_otg_proto_enumTypes[118].Descriptor() } -func (ActionProtocolBgpNotification_Choice_Enum) Type() protoreflect.EnumType { +func (StateTrafficFlowTransmit_State_Enum) Type() protoreflect.EnumType { return &file_otg_proto_enumTypes[118] } -func (x ActionProtocolBgpNotification_Choice_Enum) Number() protoreflect.EnumNumber { +func (x StateTrafficFlowTransmit_State_Enum) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } -// Deprecated: Use ActionProtocolBgpNotification_Choice_Enum.Descriptor instead. -func (ActionProtocolBgpNotification_Choice_Enum) EnumDescriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{258, 0, 0} +// Deprecated: Use StateTrafficFlowTransmit_State_Enum.Descriptor instead. +func (StateTrafficFlowTransmit_State_Enum) EnumDescriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{280, 0, 0} } -type MetricsRequest_Choice_Enum int32 +type StateProtocolAll_State_Enum int32 const ( - MetricsRequest_Choice_unspecified MetricsRequest_Choice_Enum = 0 - MetricsRequest_Choice_port MetricsRequest_Choice_Enum = 1 - MetricsRequest_Choice_flow MetricsRequest_Choice_Enum = 2 - MetricsRequest_Choice_bgpv4 MetricsRequest_Choice_Enum = 3 - MetricsRequest_Choice_bgpv6 MetricsRequest_Choice_Enum = 4 - MetricsRequest_Choice_isis MetricsRequest_Choice_Enum = 5 - MetricsRequest_Choice_lag MetricsRequest_Choice_Enum = 6 - MetricsRequest_Choice_lacp MetricsRequest_Choice_Enum = 7 - MetricsRequest_Choice_lldp MetricsRequest_Choice_Enum = 8 - MetricsRequest_Choice_rsvp MetricsRequest_Choice_Enum = 9 + StateProtocolAll_State_unspecified StateProtocolAll_State_Enum = 0 + StateProtocolAll_State_start StateProtocolAll_State_Enum = 1 + StateProtocolAll_State_stop StateProtocolAll_State_Enum = 2 ) -// Enum value maps for MetricsRequest_Choice_Enum. +// Enum value maps for StateProtocolAll_State_Enum. var ( - MetricsRequest_Choice_Enum_name = map[int32]string{ + StateProtocolAll_State_Enum_name = map[int32]string{ 0: "unspecified", - 1: "port", - 2: "flow", - 3: "bgpv4", - 4: "bgpv6", - 5: "isis", - 6: "lag", - 7: "lacp", - 8: "lldp", - 9: "rsvp", + 1: "start", + 2: "stop", } - MetricsRequest_Choice_Enum_value = map[string]int32{ + StateProtocolAll_State_Enum_value = map[string]int32{ "unspecified": 0, - "port": 1, - "flow": 2, - "bgpv4": 3, - "bgpv6": 4, - "isis": 5, - "lag": 6, - "lacp": 7, - "lldp": 8, - "rsvp": 9, + "start": 1, + "stop": 2, } ) -func (x MetricsRequest_Choice_Enum) Enum() *MetricsRequest_Choice_Enum { - p := new(MetricsRequest_Choice_Enum) +func (x StateProtocolAll_State_Enum) Enum() *StateProtocolAll_State_Enum { + p := new(StateProtocolAll_State_Enum) *p = x return p } -func (x MetricsRequest_Choice_Enum) String() string { +func (x StateProtocolAll_State_Enum) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } -func (MetricsRequest_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { +func (StateProtocolAll_State_Enum) Descriptor() protoreflect.EnumDescriptor { return file_otg_proto_enumTypes[119].Descriptor() } -func (MetricsRequest_Choice_Enum) Type() protoreflect.EnumType { +func (StateProtocolAll_State_Enum) Type() protoreflect.EnumType { return &file_otg_proto_enumTypes[119] } -func (x MetricsRequest_Choice_Enum) Number() protoreflect.EnumNumber { +func (x StateProtocolAll_State_Enum) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } -// Deprecated: Use MetricsRequest_Choice_Enum.Descriptor instead. -func (MetricsRequest_Choice_Enum) EnumDescriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{260, 0, 0} +// Deprecated: Use StateProtocolAll_State_Enum.Descriptor instead. +func (StateProtocolAll_State_Enum) EnumDescriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{281, 0, 0} } -type MetricsResponse_Choice_Enum int32 +type StateProtocolRoute_State_Enum int32 const ( - MetricsResponse_Choice_unspecified MetricsResponse_Choice_Enum = 0 - MetricsResponse_Choice_flow_metrics MetricsResponse_Choice_Enum = 1 - MetricsResponse_Choice_port_metrics MetricsResponse_Choice_Enum = 2 - MetricsResponse_Choice_bgpv4_metrics MetricsResponse_Choice_Enum = 3 - MetricsResponse_Choice_bgpv6_metrics MetricsResponse_Choice_Enum = 4 - MetricsResponse_Choice_isis_metrics MetricsResponse_Choice_Enum = 5 - MetricsResponse_Choice_lag_metrics MetricsResponse_Choice_Enum = 6 - MetricsResponse_Choice_lacp_metrics MetricsResponse_Choice_Enum = 7 - MetricsResponse_Choice_lldp_metrics MetricsResponse_Choice_Enum = 8 - MetricsResponse_Choice_rsvp_metrics MetricsResponse_Choice_Enum = 9 + StateProtocolRoute_State_unspecified StateProtocolRoute_State_Enum = 0 + StateProtocolRoute_State_withdraw StateProtocolRoute_State_Enum = 1 + StateProtocolRoute_State_advertise StateProtocolRoute_State_Enum = 2 ) -// Enum value maps for MetricsResponse_Choice_Enum. +// Enum value maps for StateProtocolRoute_State_Enum. var ( - MetricsResponse_Choice_Enum_name = map[int32]string{ + StateProtocolRoute_State_Enum_name = map[int32]string{ 0: "unspecified", - 1: "flow_metrics", - 2: "port_metrics", - 3: "bgpv4_metrics", - 4: "bgpv6_metrics", - 5: "isis_metrics", - 6: "lag_metrics", - 7: "lacp_metrics", - 8: "lldp_metrics", - 9: "rsvp_metrics", + 1: "withdraw", + 2: "advertise", } - MetricsResponse_Choice_Enum_value = map[string]int32{ - "unspecified": 0, - "flow_metrics": 1, - "port_metrics": 2, - "bgpv4_metrics": 3, - "bgpv6_metrics": 4, - "isis_metrics": 5, - "lag_metrics": 6, - "lacp_metrics": 7, - "lldp_metrics": 8, - "rsvp_metrics": 9, + StateProtocolRoute_State_Enum_value = map[string]int32{ + "unspecified": 0, + "withdraw": 1, + "advertise": 2, } ) -func (x MetricsResponse_Choice_Enum) Enum() *MetricsResponse_Choice_Enum { - p := new(MetricsResponse_Choice_Enum) +func (x StateProtocolRoute_State_Enum) Enum() *StateProtocolRoute_State_Enum { + p := new(StateProtocolRoute_State_Enum) *p = x return p } -func (x MetricsResponse_Choice_Enum) String() string { +func (x StateProtocolRoute_State_Enum) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } -func (MetricsResponse_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { +func (StateProtocolRoute_State_Enum) Descriptor() protoreflect.EnumDescriptor { return file_otg_proto_enumTypes[120].Descriptor() } -func (MetricsResponse_Choice_Enum) Type() protoreflect.EnumType { +func (StateProtocolRoute_State_Enum) Type() protoreflect.EnumType { return &file_otg_proto_enumTypes[120] } -func (x MetricsResponse_Choice_Enum) Number() protoreflect.EnumNumber { +func (x StateProtocolRoute_State_Enum) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } -// Deprecated: Use MetricsResponse_Choice_Enum.Descriptor instead. -func (MetricsResponse_Choice_Enum) EnumDescriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{261, 0, 0} +// Deprecated: Use StateProtocolRoute_State_Enum.Descriptor instead. +func (StateProtocolRoute_State_Enum) EnumDescriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{282, 0, 0} } -type PortMetricsRequest_ColumnNames_Enum int32 +type StateProtocolLacp_Choice_Enum int32 const ( - PortMetricsRequest_ColumnNames_unspecified PortMetricsRequest_ColumnNames_Enum = 0 - PortMetricsRequest_ColumnNames_transmit PortMetricsRequest_ColumnNames_Enum = 1 - PortMetricsRequest_ColumnNames_location PortMetricsRequest_ColumnNames_Enum = 2 - PortMetricsRequest_ColumnNames_link PortMetricsRequest_ColumnNames_Enum = 3 - PortMetricsRequest_ColumnNames_capture PortMetricsRequest_ColumnNames_Enum = 4 - PortMetricsRequest_ColumnNames_frames_tx PortMetricsRequest_ColumnNames_Enum = 5 - PortMetricsRequest_ColumnNames_frames_rx PortMetricsRequest_ColumnNames_Enum = 6 - PortMetricsRequest_ColumnNames_bytes_tx PortMetricsRequest_ColumnNames_Enum = 7 - PortMetricsRequest_ColumnNames_bytes_rx PortMetricsRequest_ColumnNames_Enum = 8 - PortMetricsRequest_ColumnNames_frames_tx_rate PortMetricsRequest_ColumnNames_Enum = 9 - PortMetricsRequest_ColumnNames_frames_rx_rate PortMetricsRequest_ColumnNames_Enum = 10 - PortMetricsRequest_ColumnNames_bytes_tx_rate PortMetricsRequest_ColumnNames_Enum = 11 - PortMetricsRequest_ColumnNames_bytes_rx_rate PortMetricsRequest_ColumnNames_Enum = 12 + StateProtocolLacp_Choice_unspecified StateProtocolLacp_Choice_Enum = 0 + StateProtocolLacp_Choice_admin StateProtocolLacp_Choice_Enum = 1 + StateProtocolLacp_Choice_member_ports StateProtocolLacp_Choice_Enum = 2 ) -// Enum value maps for PortMetricsRequest_ColumnNames_Enum. +// Enum value maps for StateProtocolLacp_Choice_Enum. var ( - PortMetricsRequest_ColumnNames_Enum_name = map[int32]string{ - 0: "unspecified", - 1: "transmit", - 2: "location", - 3: "link", - 4: "capture", - 5: "frames_tx", - 6: "frames_rx", - 7: "bytes_tx", - 8: "bytes_rx", - 9: "frames_tx_rate", - 10: "frames_rx_rate", - 11: "bytes_tx_rate", - 12: "bytes_rx_rate", + StateProtocolLacp_Choice_Enum_name = map[int32]string{ + 0: "unspecified", + 1: "admin", + 2: "member_ports", } - PortMetricsRequest_ColumnNames_Enum_value = map[string]int32{ - "unspecified": 0, - "transmit": 1, - "location": 2, - "link": 3, - "capture": 4, - "frames_tx": 5, - "frames_rx": 6, - "bytes_tx": 7, - "bytes_rx": 8, - "frames_tx_rate": 9, - "frames_rx_rate": 10, - "bytes_tx_rate": 11, - "bytes_rx_rate": 12, + StateProtocolLacp_Choice_Enum_value = map[string]int32{ + "unspecified": 0, + "admin": 1, + "member_ports": 2, } ) -func (x PortMetricsRequest_ColumnNames_Enum) Enum() *PortMetricsRequest_ColumnNames_Enum { - p := new(PortMetricsRequest_ColumnNames_Enum) +func (x StateProtocolLacp_Choice_Enum) Enum() *StateProtocolLacp_Choice_Enum { + p := new(StateProtocolLacp_Choice_Enum) *p = x return p } -func (x PortMetricsRequest_ColumnNames_Enum) String() string { +func (x StateProtocolLacp_Choice_Enum) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } -func (PortMetricsRequest_ColumnNames_Enum) Descriptor() protoreflect.EnumDescriptor { +func (StateProtocolLacp_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { return file_otg_proto_enumTypes[121].Descriptor() } -func (PortMetricsRequest_ColumnNames_Enum) Type() protoreflect.EnumType { +func (StateProtocolLacp_Choice_Enum) Type() protoreflect.EnumType { return &file_otg_proto_enumTypes[121] } -func (x PortMetricsRequest_ColumnNames_Enum) Number() protoreflect.EnumNumber { +func (x StateProtocolLacp_Choice_Enum) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } -// Deprecated: Use PortMetricsRequest_ColumnNames_Enum.Descriptor instead. -func (PortMetricsRequest_ColumnNames_Enum) EnumDescriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{262, 0, 0} +// Deprecated: Use StateProtocolLacp_Choice_Enum.Descriptor instead. +func (StateProtocolLacp_Choice_Enum) EnumDescriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{283, 0, 0} } -type PortMetric_Link_Enum int32 +type StateProtocolLacpAdmin_State_Enum int32 const ( - PortMetric_Link_unspecified PortMetric_Link_Enum = 0 - PortMetric_Link_up PortMetric_Link_Enum = 1 - PortMetric_Link_down PortMetric_Link_Enum = 2 + StateProtocolLacpAdmin_State_unspecified StateProtocolLacpAdmin_State_Enum = 0 + StateProtocolLacpAdmin_State_up StateProtocolLacpAdmin_State_Enum = 1 + StateProtocolLacpAdmin_State_down StateProtocolLacpAdmin_State_Enum = 2 ) -// Enum value maps for PortMetric_Link_Enum. +// Enum value maps for StateProtocolLacpAdmin_State_Enum. var ( - PortMetric_Link_Enum_name = map[int32]string{ + StateProtocolLacpAdmin_State_Enum_name = map[int32]string{ 0: "unspecified", 1: "up", 2: "down", } - PortMetric_Link_Enum_value = map[string]int32{ + StateProtocolLacpAdmin_State_Enum_value = map[string]int32{ "unspecified": 0, "up": 1, "down": 2, } ) -func (x PortMetric_Link_Enum) Enum() *PortMetric_Link_Enum { - p := new(PortMetric_Link_Enum) +func (x StateProtocolLacpAdmin_State_Enum) Enum() *StateProtocolLacpAdmin_State_Enum { + p := new(StateProtocolLacpAdmin_State_Enum) *p = x return p } -func (x PortMetric_Link_Enum) String() string { +func (x StateProtocolLacpAdmin_State_Enum) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } -func (PortMetric_Link_Enum) Descriptor() protoreflect.EnumDescriptor { +func (StateProtocolLacpAdmin_State_Enum) Descriptor() protoreflect.EnumDescriptor { return file_otg_proto_enumTypes[122].Descriptor() } -func (PortMetric_Link_Enum) Type() protoreflect.EnumType { +func (StateProtocolLacpAdmin_State_Enum) Type() protoreflect.EnumType { return &file_otg_proto_enumTypes[122] } -func (x PortMetric_Link_Enum) Number() protoreflect.EnumNumber { +func (x StateProtocolLacpAdmin_State_Enum) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } -// Deprecated: Use PortMetric_Link_Enum.Descriptor instead. -func (PortMetric_Link_Enum) EnumDescriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{263, 0, 0} +// Deprecated: Use StateProtocolLacpAdmin_State_Enum.Descriptor instead. +func (StateProtocolLacpAdmin_State_Enum) EnumDescriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{284, 0, 0} } -type PortMetric_Capture_Enum int32 +type StateProtocolLacpMemberPorts_State_Enum int32 const ( - PortMetric_Capture_unspecified PortMetric_Capture_Enum = 0 - PortMetric_Capture_started PortMetric_Capture_Enum = 1 - PortMetric_Capture_stopped PortMetric_Capture_Enum = 2 + StateProtocolLacpMemberPorts_State_unspecified StateProtocolLacpMemberPorts_State_Enum = 0 + StateProtocolLacpMemberPorts_State_up StateProtocolLacpMemberPorts_State_Enum = 1 + StateProtocolLacpMemberPorts_State_down StateProtocolLacpMemberPorts_State_Enum = 2 ) -// Enum value maps for PortMetric_Capture_Enum. +// Enum value maps for StateProtocolLacpMemberPorts_State_Enum. var ( - PortMetric_Capture_Enum_name = map[int32]string{ + StateProtocolLacpMemberPorts_State_Enum_name = map[int32]string{ 0: "unspecified", - 1: "started", - 2: "stopped", + 1: "up", + 2: "down", } - PortMetric_Capture_Enum_value = map[string]int32{ + StateProtocolLacpMemberPorts_State_Enum_value = map[string]int32{ "unspecified": 0, - "started": 1, - "stopped": 2, + "up": 1, + "down": 2, } ) -func (x PortMetric_Capture_Enum) Enum() *PortMetric_Capture_Enum { - p := new(PortMetric_Capture_Enum) +func (x StateProtocolLacpMemberPorts_State_Enum) Enum() *StateProtocolLacpMemberPorts_State_Enum { + p := new(StateProtocolLacpMemberPorts_State_Enum) *p = x return p } -func (x PortMetric_Capture_Enum) String() string { +func (x StateProtocolLacpMemberPorts_State_Enum) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } -func (PortMetric_Capture_Enum) Descriptor() protoreflect.EnumDescriptor { +func (StateProtocolLacpMemberPorts_State_Enum) Descriptor() protoreflect.EnumDescriptor { return file_otg_proto_enumTypes[123].Descriptor() } -func (PortMetric_Capture_Enum) Type() protoreflect.EnumType { +func (StateProtocolLacpMemberPorts_State_Enum) Type() protoreflect.EnumType { return &file_otg_proto_enumTypes[123] } -func (x PortMetric_Capture_Enum) Number() protoreflect.EnumNumber { +func (x StateProtocolLacpMemberPorts_State_Enum) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } -// Deprecated: Use PortMetric_Capture_Enum.Descriptor instead. -func (PortMetric_Capture_Enum) EnumDescriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{263, 1, 0} +// Deprecated: Use StateProtocolLacpMemberPorts_State_Enum.Descriptor instead. +func (StateProtocolLacpMemberPorts_State_Enum) EnumDescriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{285, 0, 0} } -type PortMetric_Transmit_Enum int32 +type StateProtocolBgp_Choice_Enum int32 const ( - PortMetric_Transmit_unspecified PortMetric_Transmit_Enum = 0 - PortMetric_Transmit_started PortMetric_Transmit_Enum = 1 - PortMetric_Transmit_stopped PortMetric_Transmit_Enum = 2 + StateProtocolBgp_Choice_unspecified StateProtocolBgp_Choice_Enum = 0 + StateProtocolBgp_Choice_peers StateProtocolBgp_Choice_Enum = 1 ) -// Enum value maps for PortMetric_Transmit_Enum. +// Enum value maps for StateProtocolBgp_Choice_Enum. var ( - PortMetric_Transmit_Enum_name = map[int32]string{ + StateProtocolBgp_Choice_Enum_name = map[int32]string{ 0: "unspecified", - 1: "started", - 2: "stopped", + 1: "peers", } - PortMetric_Transmit_Enum_value = map[string]int32{ + StateProtocolBgp_Choice_Enum_value = map[string]int32{ "unspecified": 0, - "started": 1, - "stopped": 2, + "peers": 1, } ) -func (x PortMetric_Transmit_Enum) Enum() *PortMetric_Transmit_Enum { - p := new(PortMetric_Transmit_Enum) +func (x StateProtocolBgp_Choice_Enum) Enum() *StateProtocolBgp_Choice_Enum { + p := new(StateProtocolBgp_Choice_Enum) *p = x return p } -func (x PortMetric_Transmit_Enum) String() string { +func (x StateProtocolBgp_Choice_Enum) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } -func (PortMetric_Transmit_Enum) Descriptor() protoreflect.EnumDescriptor { +func (StateProtocolBgp_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { return file_otg_proto_enumTypes[124].Descriptor() } -func (PortMetric_Transmit_Enum) Type() protoreflect.EnumType { +func (StateProtocolBgp_Choice_Enum) Type() protoreflect.EnumType { return &file_otg_proto_enumTypes[124] } -func (x PortMetric_Transmit_Enum) Number() protoreflect.EnumNumber { +func (x StateProtocolBgp_Choice_Enum) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } -// Deprecated: Use PortMetric_Transmit_Enum.Descriptor instead. -func (PortMetric_Transmit_Enum) EnumDescriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{263, 2, 0} +// Deprecated: Use StateProtocolBgp_Choice_Enum.Descriptor instead. +func (StateProtocolBgp_Choice_Enum) EnumDescriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{286, 0, 0} } -type FlowMetricsRequest_MetricNames_Enum int32 +type StateProtocolBgpPeers_State_Enum int32 const ( - FlowMetricsRequest_MetricNames_unspecified FlowMetricsRequest_MetricNames_Enum = 0 - FlowMetricsRequest_MetricNames_transmit FlowMetricsRequest_MetricNames_Enum = 1 - FlowMetricsRequest_MetricNames_frames_tx FlowMetricsRequest_MetricNames_Enum = 2 - FlowMetricsRequest_MetricNames_frames_rx FlowMetricsRequest_MetricNames_Enum = 3 - FlowMetricsRequest_MetricNames_bytes_tx FlowMetricsRequest_MetricNames_Enum = 4 - FlowMetricsRequest_MetricNames_bytes_rx FlowMetricsRequest_MetricNames_Enum = 5 - FlowMetricsRequest_MetricNames_frames_tx_rate FlowMetricsRequest_MetricNames_Enum = 6 - FlowMetricsRequest_MetricNames_frames_rx_rate FlowMetricsRequest_MetricNames_Enum = 7 + StateProtocolBgpPeers_State_unspecified StateProtocolBgpPeers_State_Enum = 0 + StateProtocolBgpPeers_State_up StateProtocolBgpPeers_State_Enum = 1 + StateProtocolBgpPeers_State_down StateProtocolBgpPeers_State_Enum = 2 ) -// Enum value maps for FlowMetricsRequest_MetricNames_Enum. +// Enum value maps for StateProtocolBgpPeers_State_Enum. var ( - FlowMetricsRequest_MetricNames_Enum_name = map[int32]string{ + StateProtocolBgpPeers_State_Enum_name = map[int32]string{ 0: "unspecified", - 1: "transmit", - 2: "frames_tx", - 3: "frames_rx", - 4: "bytes_tx", - 5: "bytes_rx", - 6: "frames_tx_rate", - 7: "frames_rx_rate", + 1: "up", + 2: "down", } - FlowMetricsRequest_MetricNames_Enum_value = map[string]int32{ - "unspecified": 0, - "transmit": 1, - "frames_tx": 2, - "frames_rx": 3, - "bytes_tx": 4, - "bytes_rx": 5, - "frames_tx_rate": 6, - "frames_rx_rate": 7, + StateProtocolBgpPeers_State_Enum_value = map[string]int32{ + "unspecified": 0, + "up": 1, + "down": 2, } ) -func (x FlowMetricsRequest_MetricNames_Enum) Enum() *FlowMetricsRequest_MetricNames_Enum { - p := new(FlowMetricsRequest_MetricNames_Enum) +func (x StateProtocolBgpPeers_State_Enum) Enum() *StateProtocolBgpPeers_State_Enum { + p := new(StateProtocolBgpPeers_State_Enum) *p = x return p } -func (x FlowMetricsRequest_MetricNames_Enum) String() string { +func (x StateProtocolBgpPeers_State_Enum) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } -func (FlowMetricsRequest_MetricNames_Enum) Descriptor() protoreflect.EnumDescriptor { +func (StateProtocolBgpPeers_State_Enum) Descriptor() protoreflect.EnumDescriptor { return file_otg_proto_enumTypes[125].Descriptor() } -func (FlowMetricsRequest_MetricNames_Enum) Type() protoreflect.EnumType { +func (StateProtocolBgpPeers_State_Enum) Type() protoreflect.EnumType { return &file_otg_proto_enumTypes[125] } -func (x FlowMetricsRequest_MetricNames_Enum) Number() protoreflect.EnumNumber { +func (x StateProtocolBgpPeers_State_Enum) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } -// Deprecated: Use FlowMetricsRequest_MetricNames_Enum.Descriptor instead. -func (FlowMetricsRequest_MetricNames_Enum) EnumDescriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{264, 0, 0} +// Deprecated: Use StateProtocolBgpPeers_State_Enum.Descriptor instead. +func (StateProtocolBgpPeers_State_Enum) EnumDescriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{287, 0, 0} } -type FlowTaggedMetricsFilter_MetricNames_Enum int32 +type StateProtocolIsis_Choice_Enum int32 const ( - FlowTaggedMetricsFilter_MetricNames_unspecified FlowTaggedMetricsFilter_MetricNames_Enum = 0 - FlowTaggedMetricsFilter_MetricNames_frames_tx FlowTaggedMetricsFilter_MetricNames_Enum = 1 - FlowTaggedMetricsFilter_MetricNames_frames_rx FlowTaggedMetricsFilter_MetricNames_Enum = 2 - FlowTaggedMetricsFilter_MetricNames_bytes_tx FlowTaggedMetricsFilter_MetricNames_Enum = 3 - FlowTaggedMetricsFilter_MetricNames_bytes_rx FlowTaggedMetricsFilter_MetricNames_Enum = 4 - FlowTaggedMetricsFilter_MetricNames_frames_tx_rate FlowTaggedMetricsFilter_MetricNames_Enum = 5 - FlowTaggedMetricsFilter_MetricNames_frames_rx_rate FlowTaggedMetricsFilter_MetricNames_Enum = 6 + StateProtocolIsis_Choice_unspecified StateProtocolIsis_Choice_Enum = 0 + StateProtocolIsis_Choice_routers StateProtocolIsis_Choice_Enum = 1 ) -// Enum value maps for FlowTaggedMetricsFilter_MetricNames_Enum. +// Enum value maps for StateProtocolIsis_Choice_Enum. var ( - FlowTaggedMetricsFilter_MetricNames_Enum_name = map[int32]string{ + StateProtocolIsis_Choice_Enum_name = map[int32]string{ 0: "unspecified", - 1: "frames_tx", - 2: "frames_rx", - 3: "bytes_tx", - 4: "bytes_rx", - 5: "frames_tx_rate", - 6: "frames_rx_rate", + 1: "routers", } - FlowTaggedMetricsFilter_MetricNames_Enum_value = map[string]int32{ - "unspecified": 0, - "frames_tx": 1, - "frames_rx": 2, - "bytes_tx": 3, - "bytes_rx": 4, - "frames_tx_rate": 5, - "frames_rx_rate": 6, + StateProtocolIsis_Choice_Enum_value = map[string]int32{ + "unspecified": 0, + "routers": 1, } ) -func (x FlowTaggedMetricsFilter_MetricNames_Enum) Enum() *FlowTaggedMetricsFilter_MetricNames_Enum { - p := new(FlowTaggedMetricsFilter_MetricNames_Enum) +func (x StateProtocolIsis_Choice_Enum) Enum() *StateProtocolIsis_Choice_Enum { + p := new(StateProtocolIsis_Choice_Enum) *p = x return p } -func (x FlowTaggedMetricsFilter_MetricNames_Enum) String() string { +func (x StateProtocolIsis_Choice_Enum) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } -func (FlowTaggedMetricsFilter_MetricNames_Enum) Descriptor() protoreflect.EnumDescriptor { +func (StateProtocolIsis_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { return file_otg_proto_enumTypes[126].Descriptor() } -func (FlowTaggedMetricsFilter_MetricNames_Enum) Type() protoreflect.EnumType { +func (StateProtocolIsis_Choice_Enum) Type() protoreflect.EnumType { return &file_otg_proto_enumTypes[126] } -func (x FlowTaggedMetricsFilter_MetricNames_Enum) Number() protoreflect.EnumNumber { +func (x StateProtocolIsis_Choice_Enum) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } -// Deprecated: Use FlowTaggedMetricsFilter_MetricNames_Enum.Descriptor instead. -func (FlowTaggedMetricsFilter_MetricNames_Enum) EnumDescriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{265, 0, 0} -} +// Deprecated: Use StateProtocolIsis_Choice_Enum.Descriptor instead. +func (StateProtocolIsis_Choice_Enum) EnumDescriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{288, 0, 0} +} -type FlowMetric_Transmit_Enum int32 +type StateProtocolIsisRouters_State_Enum int32 const ( - FlowMetric_Transmit_unspecified FlowMetric_Transmit_Enum = 0 - FlowMetric_Transmit_started FlowMetric_Transmit_Enum = 1 - FlowMetric_Transmit_stopped FlowMetric_Transmit_Enum = 2 - FlowMetric_Transmit_paused FlowMetric_Transmit_Enum = 3 + StateProtocolIsisRouters_State_unspecified StateProtocolIsisRouters_State_Enum = 0 + StateProtocolIsisRouters_State_up StateProtocolIsisRouters_State_Enum = 1 + StateProtocolIsisRouters_State_down StateProtocolIsisRouters_State_Enum = 2 ) -// Enum value maps for FlowMetric_Transmit_Enum. +// Enum value maps for StateProtocolIsisRouters_State_Enum. var ( - FlowMetric_Transmit_Enum_name = map[int32]string{ + StateProtocolIsisRouters_State_Enum_name = map[int32]string{ 0: "unspecified", - 1: "started", - 2: "stopped", - 3: "paused", + 1: "up", + 2: "down", } - FlowMetric_Transmit_Enum_value = map[string]int32{ + StateProtocolIsisRouters_State_Enum_value = map[string]int32{ "unspecified": 0, - "started": 1, - "stopped": 2, - "paused": 3, + "up": 1, + "down": 2, } ) -func (x FlowMetric_Transmit_Enum) Enum() *FlowMetric_Transmit_Enum { - p := new(FlowMetric_Transmit_Enum) +func (x StateProtocolIsisRouters_State_Enum) Enum() *StateProtocolIsisRouters_State_Enum { + p := new(StateProtocolIsisRouters_State_Enum) *p = x return p } -func (x FlowMetric_Transmit_Enum) String() string { +func (x StateProtocolIsisRouters_State_Enum) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } -func (FlowMetric_Transmit_Enum) Descriptor() protoreflect.EnumDescriptor { +func (StateProtocolIsisRouters_State_Enum) Descriptor() protoreflect.EnumDescriptor { return file_otg_proto_enumTypes[127].Descriptor() } -func (FlowMetric_Transmit_Enum) Type() protoreflect.EnumType { +func (StateProtocolIsisRouters_State_Enum) Type() protoreflect.EnumType { return &file_otg_proto_enumTypes[127] } -func (x FlowMetric_Transmit_Enum) Number() protoreflect.EnumNumber { +func (x StateProtocolIsisRouters_State_Enum) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } -// Deprecated: Use FlowMetric_Transmit_Enum.Descriptor instead. -func (FlowMetric_Transmit_Enum) EnumDescriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{267, 0, 0} +// Deprecated: Use StateProtocolIsisRouters_State_Enum.Descriptor instead. +func (StateProtocolIsisRouters_State_Enum) EnumDescriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{289, 0, 0} } -type FlowMetricTagValue_Choice_Enum int32 +type ControlAction_Choice_Enum int32 const ( - FlowMetricTagValue_Choice_unspecified FlowMetricTagValue_Choice_Enum = 0 - FlowMetricTagValue_Choice_hex FlowMetricTagValue_Choice_Enum = 1 - FlowMetricTagValue_Choice_str FlowMetricTagValue_Choice_Enum = 2 + ControlAction_Choice_unspecified ControlAction_Choice_Enum = 0 + ControlAction_Choice_protocol ControlAction_Choice_Enum = 1 ) -// Enum value maps for FlowMetricTagValue_Choice_Enum. +// Enum value maps for ControlAction_Choice_Enum. var ( - FlowMetricTagValue_Choice_Enum_name = map[int32]string{ + ControlAction_Choice_Enum_name = map[int32]string{ 0: "unspecified", - 1: "hex", - 2: "str", + 1: "protocol", } - FlowMetricTagValue_Choice_Enum_value = map[string]int32{ + ControlAction_Choice_Enum_value = map[string]int32{ "unspecified": 0, - "hex": 1, - "str": 2, + "protocol": 1, } ) -func (x FlowMetricTagValue_Choice_Enum) Enum() *FlowMetricTagValue_Choice_Enum { - p := new(FlowMetricTagValue_Choice_Enum) +func (x ControlAction_Choice_Enum) Enum() *ControlAction_Choice_Enum { + p := new(ControlAction_Choice_Enum) *p = x return p } -func (x FlowMetricTagValue_Choice_Enum) String() string { +func (x ControlAction_Choice_Enum) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } -func (FlowMetricTagValue_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { +func (ControlAction_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { return file_otg_proto_enumTypes[128].Descriptor() } -func (FlowMetricTagValue_Choice_Enum) Type() protoreflect.EnumType { +func (ControlAction_Choice_Enum) Type() protoreflect.EnumType { return &file_otg_proto_enumTypes[128] } -func (x FlowMetricTagValue_Choice_Enum) Number() protoreflect.EnumNumber { +func (x ControlAction_Choice_Enum) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } -// Deprecated: Use FlowMetricTagValue_Choice_Enum.Descriptor instead. -func (FlowMetricTagValue_Choice_Enum) EnumDescriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{270, 0, 0} +// Deprecated: Use ControlAction_Choice_Enum.Descriptor instead. +func (ControlAction_Choice_Enum) EnumDescriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{290, 0, 0} } -type Bgpv4MetricsRequest_ColumnNames_Enum int32 +type ActionResponse_Choice_Enum int32 const ( - Bgpv4MetricsRequest_ColumnNames_unspecified Bgpv4MetricsRequest_ColumnNames_Enum = 0 - Bgpv4MetricsRequest_ColumnNames_session_state Bgpv4MetricsRequest_ColumnNames_Enum = 1 - Bgpv4MetricsRequest_ColumnNames_session_flap_count Bgpv4MetricsRequest_ColumnNames_Enum = 2 - Bgpv4MetricsRequest_ColumnNames_routes_advertised Bgpv4MetricsRequest_ColumnNames_Enum = 3 - Bgpv4MetricsRequest_ColumnNames_routes_received Bgpv4MetricsRequest_ColumnNames_Enum = 4 - Bgpv4MetricsRequest_ColumnNames_route_withdraws_sent Bgpv4MetricsRequest_ColumnNames_Enum = 5 - Bgpv4MetricsRequest_ColumnNames_route_withdraws_received Bgpv4MetricsRequest_ColumnNames_Enum = 6 - Bgpv4MetricsRequest_ColumnNames_updates_sent Bgpv4MetricsRequest_ColumnNames_Enum = 7 - Bgpv4MetricsRequest_ColumnNames_updates_received Bgpv4MetricsRequest_ColumnNames_Enum = 8 - Bgpv4MetricsRequest_ColumnNames_opens_sent Bgpv4MetricsRequest_ColumnNames_Enum = 9 - Bgpv4MetricsRequest_ColumnNames_opens_received Bgpv4MetricsRequest_ColumnNames_Enum = 10 - Bgpv4MetricsRequest_ColumnNames_keepalives_sent Bgpv4MetricsRequest_ColumnNames_Enum = 11 - Bgpv4MetricsRequest_ColumnNames_keepalives_received Bgpv4MetricsRequest_ColumnNames_Enum = 12 - Bgpv4MetricsRequest_ColumnNames_notifications_sent Bgpv4MetricsRequest_ColumnNames_Enum = 13 - Bgpv4MetricsRequest_ColumnNames_notifications_received Bgpv4MetricsRequest_ColumnNames_Enum = 14 - Bgpv4MetricsRequest_ColumnNames_fsm_state Bgpv4MetricsRequest_ColumnNames_Enum = 15 - Bgpv4MetricsRequest_ColumnNames_end_of_rib_received Bgpv4MetricsRequest_ColumnNames_Enum = 16 + ActionResponse_Choice_unspecified ActionResponse_Choice_Enum = 0 + ActionResponse_Choice_protocol ActionResponse_Choice_Enum = 1 ) -// Enum value maps for Bgpv4MetricsRequest_ColumnNames_Enum. +// Enum value maps for ActionResponse_Choice_Enum. var ( - Bgpv4MetricsRequest_ColumnNames_Enum_name = map[int32]string{ - 0: "unspecified", - 1: "session_state", - 2: "session_flap_count", - 3: "routes_advertised", - 4: "routes_received", - 5: "route_withdraws_sent", - 6: "route_withdraws_received", - 7: "updates_sent", - 8: "updates_received", - 9: "opens_sent", - 10: "opens_received", - 11: "keepalives_sent", - 12: "keepalives_received", - 13: "notifications_sent", - 14: "notifications_received", - 15: "fsm_state", - 16: "end_of_rib_received", + ActionResponse_Choice_Enum_name = map[int32]string{ + 0: "unspecified", + 1: "protocol", } - Bgpv4MetricsRequest_ColumnNames_Enum_value = map[string]int32{ - "unspecified": 0, - "session_state": 1, - "session_flap_count": 2, - "routes_advertised": 3, - "routes_received": 4, - "route_withdraws_sent": 5, - "route_withdraws_received": 6, - "updates_sent": 7, - "updates_received": 8, - "opens_sent": 9, - "opens_received": 10, - "keepalives_sent": 11, - "keepalives_received": 12, - "notifications_sent": 13, - "notifications_received": 14, - "fsm_state": 15, - "end_of_rib_received": 16, + ActionResponse_Choice_Enum_value = map[string]int32{ + "unspecified": 0, + "protocol": 1, } ) -func (x Bgpv4MetricsRequest_ColumnNames_Enum) Enum() *Bgpv4MetricsRequest_ColumnNames_Enum { - p := new(Bgpv4MetricsRequest_ColumnNames_Enum) +func (x ActionResponse_Choice_Enum) Enum() *ActionResponse_Choice_Enum { + p := new(ActionResponse_Choice_Enum) *p = x return p } -func (x Bgpv4MetricsRequest_ColumnNames_Enum) String() string { +func (x ActionResponse_Choice_Enum) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } -func (Bgpv4MetricsRequest_ColumnNames_Enum) Descriptor() protoreflect.EnumDescriptor { +func (ActionResponse_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { return file_otg_proto_enumTypes[129].Descriptor() } -func (Bgpv4MetricsRequest_ColumnNames_Enum) Type() protoreflect.EnumType { +func (ActionResponse_Choice_Enum) Type() protoreflect.EnumType { return &file_otg_proto_enumTypes[129] } -func (x Bgpv4MetricsRequest_ColumnNames_Enum) Number() protoreflect.EnumNumber { +func (x ActionResponse_Choice_Enum) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } -// Deprecated: Use Bgpv4MetricsRequest_ColumnNames_Enum.Descriptor instead. -func (Bgpv4MetricsRequest_ColumnNames_Enum) EnumDescriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{273, 0, 0} +// Deprecated: Use ActionResponse_Choice_Enum.Descriptor instead. +func (ActionResponse_Choice_Enum) EnumDescriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{292, 0, 0} } -type Bgpv4Metric_SessionState_Enum int32 +type ActionProtocol_Choice_Enum int32 const ( - Bgpv4Metric_SessionState_unspecified Bgpv4Metric_SessionState_Enum = 0 - Bgpv4Metric_SessionState_up Bgpv4Metric_SessionState_Enum = 1 - Bgpv4Metric_SessionState_down Bgpv4Metric_SessionState_Enum = 2 + ActionProtocol_Choice_unspecified ActionProtocol_Choice_Enum = 0 + ActionProtocol_Choice_ipv4 ActionProtocol_Choice_Enum = 1 + ActionProtocol_Choice_ipv6 ActionProtocol_Choice_Enum = 2 + ActionProtocol_Choice_bgp ActionProtocol_Choice_Enum = 3 ) -// Enum value maps for Bgpv4Metric_SessionState_Enum. +// Enum value maps for ActionProtocol_Choice_Enum. var ( - Bgpv4Metric_SessionState_Enum_name = map[int32]string{ + ActionProtocol_Choice_Enum_name = map[int32]string{ 0: "unspecified", - 1: "up", - 2: "down", + 1: "ipv4", + 2: "ipv6", + 3: "bgp", } - Bgpv4Metric_SessionState_Enum_value = map[string]int32{ + ActionProtocol_Choice_Enum_value = map[string]int32{ "unspecified": 0, - "up": 1, - "down": 2, + "ipv4": 1, + "ipv6": 2, + "bgp": 3, } ) -func (x Bgpv4Metric_SessionState_Enum) Enum() *Bgpv4Metric_SessionState_Enum { - p := new(Bgpv4Metric_SessionState_Enum) +func (x ActionProtocol_Choice_Enum) Enum() *ActionProtocol_Choice_Enum { + p := new(ActionProtocol_Choice_Enum) *p = x return p } -func (x Bgpv4Metric_SessionState_Enum) String() string { +func (x ActionProtocol_Choice_Enum) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } -func (Bgpv4Metric_SessionState_Enum) Descriptor() protoreflect.EnumDescriptor { +func (ActionProtocol_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { return file_otg_proto_enumTypes[130].Descriptor() } -func (Bgpv4Metric_SessionState_Enum) Type() protoreflect.EnumType { +func (ActionProtocol_Choice_Enum) Type() protoreflect.EnumType { return &file_otg_proto_enumTypes[130] } -func (x Bgpv4Metric_SessionState_Enum) Number() protoreflect.EnumNumber { +func (x ActionProtocol_Choice_Enum) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } -// Deprecated: Use Bgpv4Metric_SessionState_Enum.Descriptor instead. -func (Bgpv4Metric_SessionState_Enum) EnumDescriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{274, 0, 0} +// Deprecated: Use ActionProtocol_Choice_Enum.Descriptor instead. +func (ActionProtocol_Choice_Enum) EnumDescriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{293, 0, 0} } -type Bgpv4Metric_FsmState_Enum int32 +type ActionResponseProtocol_Choice_Enum int32 const ( - Bgpv4Metric_FsmState_unspecified Bgpv4Metric_FsmState_Enum = 0 - Bgpv4Metric_FsmState_idle Bgpv4Metric_FsmState_Enum = 1 - Bgpv4Metric_FsmState_connect Bgpv4Metric_FsmState_Enum = 2 - Bgpv4Metric_FsmState_active Bgpv4Metric_FsmState_Enum = 3 - Bgpv4Metric_FsmState_opensent Bgpv4Metric_FsmState_Enum = 4 - Bgpv4Metric_FsmState_openconfirm Bgpv4Metric_FsmState_Enum = 5 - Bgpv4Metric_FsmState_established Bgpv4Metric_FsmState_Enum = 6 + ActionResponseProtocol_Choice_unspecified ActionResponseProtocol_Choice_Enum = 0 + ActionResponseProtocol_Choice_ipv4 ActionResponseProtocol_Choice_Enum = 1 + ActionResponseProtocol_Choice_ipv6 ActionResponseProtocol_Choice_Enum = 2 ) -// Enum value maps for Bgpv4Metric_FsmState_Enum. +// Enum value maps for ActionResponseProtocol_Choice_Enum. var ( - Bgpv4Metric_FsmState_Enum_name = map[int32]string{ + ActionResponseProtocol_Choice_Enum_name = map[int32]string{ 0: "unspecified", - 1: "idle", - 2: "connect", - 3: "active", - 4: "opensent", - 5: "openconfirm", - 6: "established", + 1: "ipv4", + 2: "ipv6", } - Bgpv4Metric_FsmState_Enum_value = map[string]int32{ + ActionResponseProtocol_Choice_Enum_value = map[string]int32{ "unspecified": 0, - "idle": 1, - "connect": 2, - "active": 3, - "opensent": 4, - "openconfirm": 5, - "established": 6, + "ipv4": 1, + "ipv6": 2, } ) -func (x Bgpv4Metric_FsmState_Enum) Enum() *Bgpv4Metric_FsmState_Enum { - p := new(Bgpv4Metric_FsmState_Enum) +func (x ActionResponseProtocol_Choice_Enum) Enum() *ActionResponseProtocol_Choice_Enum { + p := new(ActionResponseProtocol_Choice_Enum) *p = x return p } -func (x Bgpv4Metric_FsmState_Enum) String() string { +func (x ActionResponseProtocol_Choice_Enum) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } -func (Bgpv4Metric_FsmState_Enum) Descriptor() protoreflect.EnumDescriptor { +func (ActionResponseProtocol_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { return file_otg_proto_enumTypes[131].Descriptor() } -func (Bgpv4Metric_FsmState_Enum) Type() protoreflect.EnumType { +func (ActionResponseProtocol_Choice_Enum) Type() protoreflect.EnumType { return &file_otg_proto_enumTypes[131] } -func (x Bgpv4Metric_FsmState_Enum) Number() protoreflect.EnumNumber { +func (x ActionResponseProtocol_Choice_Enum) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } -// Deprecated: Use Bgpv4Metric_FsmState_Enum.Descriptor instead. -func (Bgpv4Metric_FsmState_Enum) EnumDescriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{274, 1, 0} +// Deprecated: Use ActionResponseProtocol_Choice_Enum.Descriptor instead. +func (ActionResponseProtocol_Choice_Enum) EnumDescriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{294, 0, 0} } -type Bgpv6MetricsRequest_ColumnNames_Enum int32 +type ActionProtocolIpv4_Choice_Enum int32 const ( - Bgpv6MetricsRequest_ColumnNames_unspecified Bgpv6MetricsRequest_ColumnNames_Enum = 0 - Bgpv6MetricsRequest_ColumnNames_session_state Bgpv6MetricsRequest_ColumnNames_Enum = 1 - Bgpv6MetricsRequest_ColumnNames_session_flap_count Bgpv6MetricsRequest_ColumnNames_Enum = 2 - Bgpv6MetricsRequest_ColumnNames_routes_advertised Bgpv6MetricsRequest_ColumnNames_Enum = 3 - Bgpv6MetricsRequest_ColumnNames_routes_received Bgpv6MetricsRequest_ColumnNames_Enum = 4 - Bgpv6MetricsRequest_ColumnNames_route_withdraws_sent Bgpv6MetricsRequest_ColumnNames_Enum = 5 - Bgpv6MetricsRequest_ColumnNames_route_withdraws_received Bgpv6MetricsRequest_ColumnNames_Enum = 6 - Bgpv6MetricsRequest_ColumnNames_updates_sent Bgpv6MetricsRequest_ColumnNames_Enum = 7 - Bgpv6MetricsRequest_ColumnNames_updates_received Bgpv6MetricsRequest_ColumnNames_Enum = 8 - Bgpv6MetricsRequest_ColumnNames_opens_sent Bgpv6MetricsRequest_ColumnNames_Enum = 9 - Bgpv6MetricsRequest_ColumnNames_opens_received Bgpv6MetricsRequest_ColumnNames_Enum = 10 - Bgpv6MetricsRequest_ColumnNames_keepalives_sent Bgpv6MetricsRequest_ColumnNames_Enum = 11 - Bgpv6MetricsRequest_ColumnNames_keepalives_received Bgpv6MetricsRequest_ColumnNames_Enum = 12 - Bgpv6MetricsRequest_ColumnNames_notifications_sent Bgpv6MetricsRequest_ColumnNames_Enum = 13 - Bgpv6MetricsRequest_ColumnNames_notifications_received Bgpv6MetricsRequest_ColumnNames_Enum = 14 - Bgpv6MetricsRequest_ColumnNames_fsm_state Bgpv6MetricsRequest_ColumnNames_Enum = 15 - Bgpv6MetricsRequest_ColumnNames_end_of_rib_received Bgpv6MetricsRequest_ColumnNames_Enum = 16 + ActionProtocolIpv4_Choice_unspecified ActionProtocolIpv4_Choice_Enum = 0 + ActionProtocolIpv4_Choice_ping ActionProtocolIpv4_Choice_Enum = 1 ) -// Enum value maps for Bgpv6MetricsRequest_ColumnNames_Enum. +// Enum value maps for ActionProtocolIpv4_Choice_Enum. var ( - Bgpv6MetricsRequest_ColumnNames_Enum_name = map[int32]string{ - 0: "unspecified", - 1: "session_state", - 2: "session_flap_count", - 3: "routes_advertised", - 4: "routes_received", - 5: "route_withdraws_sent", - 6: "route_withdraws_received", - 7: "updates_sent", - 8: "updates_received", - 9: "opens_sent", - 10: "opens_received", - 11: "keepalives_sent", - 12: "keepalives_received", - 13: "notifications_sent", - 14: "notifications_received", - 15: "fsm_state", - 16: "end_of_rib_received", + ActionProtocolIpv4_Choice_Enum_name = map[int32]string{ + 0: "unspecified", + 1: "ping", } - Bgpv6MetricsRequest_ColumnNames_Enum_value = map[string]int32{ - "unspecified": 0, - "session_state": 1, - "session_flap_count": 2, - "routes_advertised": 3, - "routes_received": 4, - "route_withdraws_sent": 5, - "route_withdraws_received": 6, - "updates_sent": 7, - "updates_received": 8, - "opens_sent": 9, - "opens_received": 10, - "keepalives_sent": 11, - "keepalives_received": 12, - "notifications_sent": 13, - "notifications_received": 14, - "fsm_state": 15, - "end_of_rib_received": 16, + ActionProtocolIpv4_Choice_Enum_value = map[string]int32{ + "unspecified": 0, + "ping": 1, } ) -func (x Bgpv6MetricsRequest_ColumnNames_Enum) Enum() *Bgpv6MetricsRequest_ColumnNames_Enum { - p := new(Bgpv6MetricsRequest_ColumnNames_Enum) +func (x ActionProtocolIpv4_Choice_Enum) Enum() *ActionProtocolIpv4_Choice_Enum { + p := new(ActionProtocolIpv4_Choice_Enum) *p = x return p } -func (x Bgpv6MetricsRequest_ColumnNames_Enum) String() string { +func (x ActionProtocolIpv4_Choice_Enum) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } -func (Bgpv6MetricsRequest_ColumnNames_Enum) Descriptor() protoreflect.EnumDescriptor { +func (ActionProtocolIpv4_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { return file_otg_proto_enumTypes[132].Descriptor() } -func (Bgpv6MetricsRequest_ColumnNames_Enum) Type() protoreflect.EnumType { +func (ActionProtocolIpv4_Choice_Enum) Type() protoreflect.EnumType { return &file_otg_proto_enumTypes[132] } -func (x Bgpv6MetricsRequest_ColumnNames_Enum) Number() protoreflect.EnumNumber { +func (x ActionProtocolIpv4_Choice_Enum) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } -// Deprecated: Use Bgpv6MetricsRequest_ColumnNames_Enum.Descriptor instead. -func (Bgpv6MetricsRequest_ColumnNames_Enum) EnumDescriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{275, 0, 0} +// Deprecated: Use ActionProtocolIpv4_Choice_Enum.Descriptor instead. +func (ActionProtocolIpv4_Choice_Enum) EnumDescriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{295, 0, 0} } -type Bgpv6Metric_SessionState_Enum int32 +type ActionResponseProtocolIpv4_Choice_Enum int32 const ( - Bgpv6Metric_SessionState_unspecified Bgpv6Metric_SessionState_Enum = 0 - Bgpv6Metric_SessionState_up Bgpv6Metric_SessionState_Enum = 1 - Bgpv6Metric_SessionState_down Bgpv6Metric_SessionState_Enum = 2 + ActionResponseProtocolIpv4_Choice_unspecified ActionResponseProtocolIpv4_Choice_Enum = 0 + ActionResponseProtocolIpv4_Choice_ping ActionResponseProtocolIpv4_Choice_Enum = 1 ) -// Enum value maps for Bgpv6Metric_SessionState_Enum. +// Enum value maps for ActionResponseProtocolIpv4_Choice_Enum. var ( - Bgpv6Metric_SessionState_Enum_name = map[int32]string{ + ActionResponseProtocolIpv4_Choice_Enum_name = map[int32]string{ 0: "unspecified", - 1: "up", - 2: "down", + 1: "ping", } - Bgpv6Metric_SessionState_Enum_value = map[string]int32{ + ActionResponseProtocolIpv4_Choice_Enum_value = map[string]int32{ "unspecified": 0, - "up": 1, - "down": 2, + "ping": 1, } ) -func (x Bgpv6Metric_SessionState_Enum) Enum() *Bgpv6Metric_SessionState_Enum { - p := new(Bgpv6Metric_SessionState_Enum) +func (x ActionResponseProtocolIpv4_Choice_Enum) Enum() *ActionResponseProtocolIpv4_Choice_Enum { + p := new(ActionResponseProtocolIpv4_Choice_Enum) *p = x return p } -func (x Bgpv6Metric_SessionState_Enum) String() string { +func (x ActionResponseProtocolIpv4_Choice_Enum) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } -func (Bgpv6Metric_SessionState_Enum) Descriptor() protoreflect.EnumDescriptor { +func (ActionResponseProtocolIpv4_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { return file_otg_proto_enumTypes[133].Descriptor() } -func (Bgpv6Metric_SessionState_Enum) Type() protoreflect.EnumType { +func (ActionResponseProtocolIpv4_Choice_Enum) Type() protoreflect.EnumType { return &file_otg_proto_enumTypes[133] } -func (x Bgpv6Metric_SessionState_Enum) Number() protoreflect.EnumNumber { +func (x ActionResponseProtocolIpv4_Choice_Enum) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } -// Deprecated: Use Bgpv6Metric_SessionState_Enum.Descriptor instead. -func (Bgpv6Metric_SessionState_Enum) EnumDescriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{276, 0, 0} +// Deprecated: Use ActionResponseProtocolIpv4_Choice_Enum.Descriptor instead. +func (ActionResponseProtocolIpv4_Choice_Enum) EnumDescriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{296, 0, 0} } -type Bgpv6Metric_FsmState_Enum int32 +type ActionResponseProtocolIpv4PingResponse_Result_Enum int32 const ( - Bgpv6Metric_FsmState_unspecified Bgpv6Metric_FsmState_Enum = 0 - Bgpv6Metric_FsmState_idle Bgpv6Metric_FsmState_Enum = 1 - Bgpv6Metric_FsmState_connect Bgpv6Metric_FsmState_Enum = 2 - Bgpv6Metric_FsmState_active Bgpv6Metric_FsmState_Enum = 3 - Bgpv6Metric_FsmState_opensent Bgpv6Metric_FsmState_Enum = 4 - Bgpv6Metric_FsmState_openconfirm Bgpv6Metric_FsmState_Enum = 5 - Bgpv6Metric_FsmState_established Bgpv6Metric_FsmState_Enum = 6 + ActionResponseProtocolIpv4PingResponse_Result_unspecified ActionResponseProtocolIpv4PingResponse_Result_Enum = 0 + ActionResponseProtocolIpv4PingResponse_Result_succeeded ActionResponseProtocolIpv4PingResponse_Result_Enum = 1 + ActionResponseProtocolIpv4PingResponse_Result_failed ActionResponseProtocolIpv4PingResponse_Result_Enum = 2 ) -// Enum value maps for Bgpv6Metric_FsmState_Enum. +// Enum value maps for ActionResponseProtocolIpv4PingResponse_Result_Enum. var ( - Bgpv6Metric_FsmState_Enum_name = map[int32]string{ + ActionResponseProtocolIpv4PingResponse_Result_Enum_name = map[int32]string{ 0: "unspecified", - 1: "idle", - 2: "connect", - 3: "active", - 4: "opensent", - 5: "openconfirm", - 6: "established", + 1: "succeeded", + 2: "failed", } - Bgpv6Metric_FsmState_Enum_value = map[string]int32{ + ActionResponseProtocolIpv4PingResponse_Result_Enum_value = map[string]int32{ "unspecified": 0, - "idle": 1, - "connect": 2, - "active": 3, - "opensent": 4, - "openconfirm": 5, - "established": 6, + "succeeded": 1, + "failed": 2, } ) -func (x Bgpv6Metric_FsmState_Enum) Enum() *Bgpv6Metric_FsmState_Enum { - p := new(Bgpv6Metric_FsmState_Enum) +func (x ActionResponseProtocolIpv4PingResponse_Result_Enum) Enum() *ActionResponseProtocolIpv4PingResponse_Result_Enum { + p := new(ActionResponseProtocolIpv4PingResponse_Result_Enum) *p = x return p } -func (x Bgpv6Metric_FsmState_Enum) String() string { +func (x ActionResponseProtocolIpv4PingResponse_Result_Enum) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } -func (Bgpv6Metric_FsmState_Enum) Descriptor() protoreflect.EnumDescriptor { +func (ActionResponseProtocolIpv4PingResponse_Result_Enum) Descriptor() protoreflect.EnumDescriptor { return file_otg_proto_enumTypes[134].Descriptor() } -func (Bgpv6Metric_FsmState_Enum) Type() protoreflect.EnumType { +func (ActionResponseProtocolIpv4PingResponse_Result_Enum) Type() protoreflect.EnumType { return &file_otg_proto_enumTypes[134] } -func (x Bgpv6Metric_FsmState_Enum) Number() protoreflect.EnumNumber { +func (x ActionResponseProtocolIpv4PingResponse_Result_Enum) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } -// Deprecated: Use Bgpv6Metric_FsmState_Enum.Descriptor instead. -func (Bgpv6Metric_FsmState_Enum) EnumDescriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{276, 1, 0} +// Deprecated: Use ActionResponseProtocolIpv4PingResponse_Result_Enum.Descriptor instead. +func (ActionResponseProtocolIpv4PingResponse_Result_Enum) EnumDescriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{300, 0, 0} } -type IsisMetricsRequest_ColumnNames_Enum int32 +type ActionProtocolIpv6_Choice_Enum int32 const ( - IsisMetricsRequest_ColumnNames_unspecified IsisMetricsRequest_ColumnNames_Enum = 0 - IsisMetricsRequest_ColumnNames_l1_sessions_up IsisMetricsRequest_ColumnNames_Enum = 1 - IsisMetricsRequest_ColumnNames_l1_session_flap IsisMetricsRequest_ColumnNames_Enum = 2 - IsisMetricsRequest_ColumnNames_l1_database_size IsisMetricsRequest_ColumnNames_Enum = 3 - IsisMetricsRequest_ColumnNames_l1_broadcast_hellos_sent IsisMetricsRequest_ColumnNames_Enum = 4 - IsisMetricsRequest_ColumnNames_l1_broadcast_hellos_received IsisMetricsRequest_ColumnNames_Enum = 5 - IsisMetricsRequest_ColumnNames_l1_point_to_point_hellos_sent IsisMetricsRequest_ColumnNames_Enum = 6 - IsisMetricsRequest_ColumnNames_l1_point_to_point_hellos_received IsisMetricsRequest_ColumnNames_Enum = 7 - IsisMetricsRequest_ColumnNames_l1_psnp_sent IsisMetricsRequest_ColumnNames_Enum = 8 - IsisMetricsRequest_ColumnNames_l1_psnp_received IsisMetricsRequest_ColumnNames_Enum = 9 - IsisMetricsRequest_ColumnNames_l1_csnp_sent IsisMetricsRequest_ColumnNames_Enum = 10 - IsisMetricsRequest_ColumnNames_l1_csnp_received IsisMetricsRequest_ColumnNames_Enum = 11 - IsisMetricsRequest_ColumnNames_l1_lsp_sent IsisMetricsRequest_ColumnNames_Enum = 12 - IsisMetricsRequest_ColumnNames_l1_lsp_received IsisMetricsRequest_ColumnNames_Enum = 13 - IsisMetricsRequest_ColumnNames_l2_sessions_up IsisMetricsRequest_ColumnNames_Enum = 14 - IsisMetricsRequest_ColumnNames_l2_session_flap IsisMetricsRequest_ColumnNames_Enum = 15 - IsisMetricsRequest_ColumnNames_l2_database_size IsisMetricsRequest_ColumnNames_Enum = 16 - IsisMetricsRequest_ColumnNames_l2_broadcast_hellos_sent IsisMetricsRequest_ColumnNames_Enum = 17 - IsisMetricsRequest_ColumnNames_l2_broadcast_hellos_received IsisMetricsRequest_ColumnNames_Enum = 18 - IsisMetricsRequest_ColumnNames_l2_point_to_point_hellos_sent IsisMetricsRequest_ColumnNames_Enum = 19 - IsisMetricsRequest_ColumnNames_l2_point_to_point_hellos_received IsisMetricsRequest_ColumnNames_Enum = 20 - IsisMetricsRequest_ColumnNames_l2_psnp_sent IsisMetricsRequest_ColumnNames_Enum = 21 - IsisMetricsRequest_ColumnNames_l2_psnp_received IsisMetricsRequest_ColumnNames_Enum = 22 - IsisMetricsRequest_ColumnNames_l2_csnp_sent IsisMetricsRequest_ColumnNames_Enum = 23 - IsisMetricsRequest_ColumnNames_l2_csnp_received IsisMetricsRequest_ColumnNames_Enum = 24 - IsisMetricsRequest_ColumnNames_l2_lsp_sent IsisMetricsRequest_ColumnNames_Enum = 25 - IsisMetricsRequest_ColumnNames_l2_lsp_received IsisMetricsRequest_ColumnNames_Enum = 26 + ActionProtocolIpv6_Choice_unspecified ActionProtocolIpv6_Choice_Enum = 0 + ActionProtocolIpv6_Choice_ping ActionProtocolIpv6_Choice_Enum = 1 ) -// Enum value maps for IsisMetricsRequest_ColumnNames_Enum. +// Enum value maps for ActionProtocolIpv6_Choice_Enum. var ( - IsisMetricsRequest_ColumnNames_Enum_name = map[int32]string{ - 0: "unspecified", - 1: "l1_sessions_up", - 2: "l1_session_flap", - 3: "l1_database_size", - 4: "l1_broadcast_hellos_sent", - 5: "l1_broadcast_hellos_received", - 6: "l1_point_to_point_hellos_sent", - 7: "l1_point_to_point_hellos_received", - 8: "l1_psnp_sent", - 9: "l1_psnp_received", - 10: "l1_csnp_sent", - 11: "l1_csnp_received", - 12: "l1_lsp_sent", - 13: "l1_lsp_received", - 14: "l2_sessions_up", - 15: "l2_session_flap", - 16: "l2_database_size", - 17: "l2_broadcast_hellos_sent", - 18: "l2_broadcast_hellos_received", - 19: "l2_point_to_point_hellos_sent", - 20: "l2_point_to_point_hellos_received", - 21: "l2_psnp_sent", - 22: "l2_psnp_received", - 23: "l2_csnp_sent", - 24: "l2_csnp_received", - 25: "l2_lsp_sent", - 26: "l2_lsp_received", + ActionProtocolIpv6_Choice_Enum_name = map[int32]string{ + 0: "unspecified", + 1: "ping", } - IsisMetricsRequest_ColumnNames_Enum_value = map[string]int32{ - "unspecified": 0, - "l1_sessions_up": 1, - "l1_session_flap": 2, - "l1_database_size": 3, - "l1_broadcast_hellos_sent": 4, - "l1_broadcast_hellos_received": 5, - "l1_point_to_point_hellos_sent": 6, - "l1_point_to_point_hellos_received": 7, - "l1_psnp_sent": 8, - "l1_psnp_received": 9, - "l1_csnp_sent": 10, - "l1_csnp_received": 11, - "l1_lsp_sent": 12, - "l1_lsp_received": 13, - "l2_sessions_up": 14, - "l2_session_flap": 15, - "l2_database_size": 16, - "l2_broadcast_hellos_sent": 17, - "l2_broadcast_hellos_received": 18, - "l2_point_to_point_hellos_sent": 19, - "l2_point_to_point_hellos_received": 20, - "l2_psnp_sent": 21, - "l2_psnp_received": 22, - "l2_csnp_sent": 23, - "l2_csnp_received": 24, - "l2_lsp_sent": 25, - "l2_lsp_received": 26, + ActionProtocolIpv6_Choice_Enum_value = map[string]int32{ + "unspecified": 0, + "ping": 1, } ) -func (x IsisMetricsRequest_ColumnNames_Enum) Enum() *IsisMetricsRequest_ColumnNames_Enum { - p := new(IsisMetricsRequest_ColumnNames_Enum) +func (x ActionProtocolIpv6_Choice_Enum) Enum() *ActionProtocolIpv6_Choice_Enum { + p := new(ActionProtocolIpv6_Choice_Enum) *p = x return p } -func (x IsisMetricsRequest_ColumnNames_Enum) String() string { +func (x ActionProtocolIpv6_Choice_Enum) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } -func (IsisMetricsRequest_ColumnNames_Enum) Descriptor() protoreflect.EnumDescriptor { +func (ActionProtocolIpv6_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { return file_otg_proto_enumTypes[135].Descriptor() } -func (IsisMetricsRequest_ColumnNames_Enum) Type() protoreflect.EnumType { +func (ActionProtocolIpv6_Choice_Enum) Type() protoreflect.EnumType { return &file_otg_proto_enumTypes[135] } -func (x IsisMetricsRequest_ColumnNames_Enum) Number() protoreflect.EnumNumber { +func (x ActionProtocolIpv6_Choice_Enum) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } -// Deprecated: Use IsisMetricsRequest_ColumnNames_Enum.Descriptor instead. -func (IsisMetricsRequest_ColumnNames_Enum) EnumDescriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{277, 0, 0} +// Deprecated: Use ActionProtocolIpv6_Choice_Enum.Descriptor instead. +func (ActionProtocolIpv6_Choice_Enum) EnumDescriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{301, 0, 0} } -type LagMetricsRequest_ColumnNames_Enum int32 +type ActionResponseProtocolIpv6_Choice_Enum int32 const ( - LagMetricsRequest_ColumnNames_unspecified LagMetricsRequest_ColumnNames_Enum = 0 - LagMetricsRequest_ColumnNames_oper_status LagMetricsRequest_ColumnNames_Enum = 1 - LagMetricsRequest_ColumnNames_member_ports_up LagMetricsRequest_ColumnNames_Enum = 2 - LagMetricsRequest_ColumnNames_frames_tx LagMetricsRequest_ColumnNames_Enum = 3 - LagMetricsRequest_ColumnNames_frames_rx LagMetricsRequest_ColumnNames_Enum = 4 - LagMetricsRequest_ColumnNames_bytes_tx LagMetricsRequest_ColumnNames_Enum = 5 - LagMetricsRequest_ColumnNames_bytes_rx LagMetricsRequest_ColumnNames_Enum = 6 - LagMetricsRequest_ColumnNames_frames_tx_rate LagMetricsRequest_ColumnNames_Enum = 7 - LagMetricsRequest_ColumnNames_frames_rx_rate LagMetricsRequest_ColumnNames_Enum = 8 - LagMetricsRequest_ColumnNames_bytes_tx_rate LagMetricsRequest_ColumnNames_Enum = 9 - LagMetricsRequest_ColumnNames_bytes_rx_rate LagMetricsRequest_ColumnNames_Enum = 10 + ActionResponseProtocolIpv6_Choice_unspecified ActionResponseProtocolIpv6_Choice_Enum = 0 + ActionResponseProtocolIpv6_Choice_ping ActionResponseProtocolIpv6_Choice_Enum = 1 ) -// Enum value maps for LagMetricsRequest_ColumnNames_Enum. +// Enum value maps for ActionResponseProtocolIpv6_Choice_Enum. var ( - LagMetricsRequest_ColumnNames_Enum_name = map[int32]string{ - 0: "unspecified", - 1: "oper_status", - 2: "member_ports_up", - 3: "frames_tx", - 4: "frames_rx", - 5: "bytes_tx", - 6: "bytes_rx", - 7: "frames_tx_rate", - 8: "frames_rx_rate", - 9: "bytes_tx_rate", - 10: "bytes_rx_rate", + ActionResponseProtocolIpv6_Choice_Enum_name = map[int32]string{ + 0: "unspecified", + 1: "ping", } - LagMetricsRequest_ColumnNames_Enum_value = map[string]int32{ - "unspecified": 0, - "oper_status": 1, - "member_ports_up": 2, - "frames_tx": 3, - "frames_rx": 4, - "bytes_tx": 5, - "bytes_rx": 6, - "frames_tx_rate": 7, - "frames_rx_rate": 8, - "bytes_tx_rate": 9, - "bytes_rx_rate": 10, + ActionResponseProtocolIpv6_Choice_Enum_value = map[string]int32{ + "unspecified": 0, + "ping": 1, } ) -func (x LagMetricsRequest_ColumnNames_Enum) Enum() *LagMetricsRequest_ColumnNames_Enum { - p := new(LagMetricsRequest_ColumnNames_Enum) +func (x ActionResponseProtocolIpv6_Choice_Enum) Enum() *ActionResponseProtocolIpv6_Choice_Enum { + p := new(ActionResponseProtocolIpv6_Choice_Enum) *p = x return p } -func (x LagMetricsRequest_ColumnNames_Enum) String() string { +func (x ActionResponseProtocolIpv6_Choice_Enum) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } -func (LagMetricsRequest_ColumnNames_Enum) Descriptor() protoreflect.EnumDescriptor { +func (ActionResponseProtocolIpv6_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { return file_otg_proto_enumTypes[136].Descriptor() } -func (LagMetricsRequest_ColumnNames_Enum) Type() protoreflect.EnumType { +func (ActionResponseProtocolIpv6_Choice_Enum) Type() protoreflect.EnumType { return &file_otg_proto_enumTypes[136] } -func (x LagMetricsRequest_ColumnNames_Enum) Number() protoreflect.EnumNumber { +func (x ActionResponseProtocolIpv6_Choice_Enum) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } -// Deprecated: Use LagMetricsRequest_ColumnNames_Enum.Descriptor instead. -func (LagMetricsRequest_ColumnNames_Enum) EnumDescriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{279, 0, 0} +// Deprecated: Use ActionResponseProtocolIpv6_Choice_Enum.Descriptor instead. +func (ActionResponseProtocolIpv6_Choice_Enum) EnumDescriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{302, 0, 0} } -type LagMetric_OperStatus_Enum int32 +type ActionResponseProtocolIpv6PingResponse_Result_Enum int32 const ( - LagMetric_OperStatus_unspecified LagMetric_OperStatus_Enum = 0 - LagMetric_OperStatus_up LagMetric_OperStatus_Enum = 1 - LagMetric_OperStatus_down LagMetric_OperStatus_Enum = 2 + ActionResponseProtocolIpv6PingResponse_Result_unspecified ActionResponseProtocolIpv6PingResponse_Result_Enum = 0 + ActionResponseProtocolIpv6PingResponse_Result_succeeded ActionResponseProtocolIpv6PingResponse_Result_Enum = 1 + ActionResponseProtocolIpv6PingResponse_Result_failed ActionResponseProtocolIpv6PingResponse_Result_Enum = 2 ) -// Enum value maps for LagMetric_OperStatus_Enum. +// Enum value maps for ActionResponseProtocolIpv6PingResponse_Result_Enum. var ( - LagMetric_OperStatus_Enum_name = map[int32]string{ + ActionResponseProtocolIpv6PingResponse_Result_Enum_name = map[int32]string{ 0: "unspecified", - 1: "up", - 2: "down", + 1: "succeeded", + 2: "failed", } - LagMetric_OperStatus_Enum_value = map[string]int32{ + ActionResponseProtocolIpv6PingResponse_Result_Enum_value = map[string]int32{ "unspecified": 0, - "up": 1, - "down": 2, + "succeeded": 1, + "failed": 2, } ) -func (x LagMetric_OperStatus_Enum) Enum() *LagMetric_OperStatus_Enum { - p := new(LagMetric_OperStatus_Enum) +func (x ActionResponseProtocolIpv6PingResponse_Result_Enum) Enum() *ActionResponseProtocolIpv6PingResponse_Result_Enum { + p := new(ActionResponseProtocolIpv6PingResponse_Result_Enum) *p = x return p } -func (x LagMetric_OperStatus_Enum) String() string { +func (x ActionResponseProtocolIpv6PingResponse_Result_Enum) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } -func (LagMetric_OperStatus_Enum) Descriptor() protoreflect.EnumDescriptor { +func (ActionResponseProtocolIpv6PingResponse_Result_Enum) Descriptor() protoreflect.EnumDescriptor { return file_otg_proto_enumTypes[137].Descriptor() } -func (LagMetric_OperStatus_Enum) Type() protoreflect.EnumType { +func (ActionResponseProtocolIpv6PingResponse_Result_Enum) Type() protoreflect.EnumType { return &file_otg_proto_enumTypes[137] } -func (x LagMetric_OperStatus_Enum) Number() protoreflect.EnumNumber { +func (x ActionResponseProtocolIpv6PingResponse_Result_Enum) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } -// Deprecated: Use LagMetric_OperStatus_Enum.Descriptor instead. -func (LagMetric_OperStatus_Enum) EnumDescriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{280, 0, 0} +// Deprecated: Use ActionResponseProtocolIpv6PingResponse_Result_Enum.Descriptor instead. +func (ActionResponseProtocolIpv6PingResponse_Result_Enum) EnumDescriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{306, 0, 0} } -type LacpMetricsRequest_ColumnNames_Enum int32 +type ActionProtocolBgp_Choice_Enum int32 const ( - LacpMetricsRequest_ColumnNames_unspecified LacpMetricsRequest_ColumnNames_Enum = 0 - LacpMetricsRequest_ColumnNames_lacp_packets_rx LacpMetricsRequest_ColumnNames_Enum = 1 - LacpMetricsRequest_ColumnNames_lacp_packets_tx LacpMetricsRequest_ColumnNames_Enum = 2 - LacpMetricsRequest_ColumnNames_lacp_rx_errors LacpMetricsRequest_ColumnNames_Enum = 3 - LacpMetricsRequest_ColumnNames_activity LacpMetricsRequest_ColumnNames_Enum = 4 - LacpMetricsRequest_ColumnNames_timeout LacpMetricsRequest_ColumnNames_Enum = 5 - LacpMetricsRequest_ColumnNames_synchronization LacpMetricsRequest_ColumnNames_Enum = 6 - LacpMetricsRequest_ColumnNames_aggregatable LacpMetricsRequest_ColumnNames_Enum = 7 - LacpMetricsRequest_ColumnNames_collecting LacpMetricsRequest_ColumnNames_Enum = 8 - LacpMetricsRequest_ColumnNames_distributing LacpMetricsRequest_ColumnNames_Enum = 9 - LacpMetricsRequest_ColumnNames_system_id LacpMetricsRequest_ColumnNames_Enum = 10 - LacpMetricsRequest_ColumnNames_oper_key LacpMetricsRequest_ColumnNames_Enum = 11 - LacpMetricsRequest_ColumnNames_partner_id LacpMetricsRequest_ColumnNames_Enum = 12 - LacpMetricsRequest_ColumnNames_partner_key LacpMetricsRequest_ColumnNames_Enum = 13 - LacpMetricsRequest_ColumnNames_port_num LacpMetricsRequest_ColumnNames_Enum = 14 - LacpMetricsRequest_ColumnNames_partner_port_num LacpMetricsRequest_ColumnNames_Enum = 15 + ActionProtocolBgp_Choice_unspecified ActionProtocolBgp_Choice_Enum = 0 + ActionProtocolBgp_Choice_notification ActionProtocolBgp_Choice_Enum = 1 + ActionProtocolBgp_Choice_initiate_graceful_restart ActionProtocolBgp_Choice_Enum = 2 ) -// Enum value maps for LacpMetricsRequest_ColumnNames_Enum. +// Enum value maps for ActionProtocolBgp_Choice_Enum. var ( - LacpMetricsRequest_ColumnNames_Enum_name = map[int32]string{ - 0: "unspecified", - 1: "lacp_packets_rx", - 2: "lacp_packets_tx", - 3: "lacp_rx_errors", - 4: "activity", - 5: "timeout", - 6: "synchronization", - 7: "aggregatable", - 8: "collecting", - 9: "distributing", - 10: "system_id", - 11: "oper_key", - 12: "partner_id", - 13: "partner_key", - 14: "port_num", - 15: "partner_port_num", + ActionProtocolBgp_Choice_Enum_name = map[int32]string{ + 0: "unspecified", + 1: "notification", + 2: "initiate_graceful_restart", } - LacpMetricsRequest_ColumnNames_Enum_value = map[string]int32{ - "unspecified": 0, - "lacp_packets_rx": 1, - "lacp_packets_tx": 2, - "lacp_rx_errors": 3, - "activity": 4, - "timeout": 5, - "synchronization": 6, - "aggregatable": 7, - "collecting": 8, - "distributing": 9, - "system_id": 10, - "oper_key": 11, - "partner_id": 12, - "partner_key": 13, - "port_num": 14, - "partner_port_num": 15, + ActionProtocolBgp_Choice_Enum_value = map[string]int32{ + "unspecified": 0, + "notification": 1, + "initiate_graceful_restart": 2, } ) -func (x LacpMetricsRequest_ColumnNames_Enum) Enum() *LacpMetricsRequest_ColumnNames_Enum { - p := new(LacpMetricsRequest_ColumnNames_Enum) +func (x ActionProtocolBgp_Choice_Enum) Enum() *ActionProtocolBgp_Choice_Enum { + p := new(ActionProtocolBgp_Choice_Enum) *p = x return p } -func (x LacpMetricsRequest_ColumnNames_Enum) String() string { +func (x ActionProtocolBgp_Choice_Enum) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } -func (LacpMetricsRequest_ColumnNames_Enum) Descriptor() protoreflect.EnumDescriptor { +func (ActionProtocolBgp_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { return file_otg_proto_enumTypes[138].Descriptor() } -func (LacpMetricsRequest_ColumnNames_Enum) Type() protoreflect.EnumType { +func (ActionProtocolBgp_Choice_Enum) Type() protoreflect.EnumType { return &file_otg_proto_enumTypes[138] } -func (x LacpMetricsRequest_ColumnNames_Enum) Number() protoreflect.EnumNumber { +func (x ActionProtocolBgp_Choice_Enum) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } -// Deprecated: Use LacpMetricsRequest_ColumnNames_Enum.Descriptor instead. -func (LacpMetricsRequest_ColumnNames_Enum) EnumDescriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{281, 0, 0} +// Deprecated: Use ActionProtocolBgp_Choice_Enum.Descriptor instead. +func (ActionProtocolBgp_Choice_Enum) EnumDescriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{307, 0, 0} } -type LacpMetric_Activity_Enum int32 +type ActionProtocolBgpNotification_Choice_Enum int32 const ( - LacpMetric_Activity_unspecified LacpMetric_Activity_Enum = 0 - LacpMetric_Activity_active LacpMetric_Activity_Enum = 1 - LacpMetric_Activity_passive LacpMetric_Activity_Enum = 2 + ActionProtocolBgpNotification_Choice_unspecified ActionProtocolBgpNotification_Choice_Enum = 0 + ActionProtocolBgpNotification_Choice_cease ActionProtocolBgpNotification_Choice_Enum = 1 + ActionProtocolBgpNotification_Choice_message_header_error ActionProtocolBgpNotification_Choice_Enum = 2 + ActionProtocolBgpNotification_Choice_open_message_error ActionProtocolBgpNotification_Choice_Enum = 3 + ActionProtocolBgpNotification_Choice_update_message_error ActionProtocolBgpNotification_Choice_Enum = 4 + ActionProtocolBgpNotification_Choice_hold_timer_expired ActionProtocolBgpNotification_Choice_Enum = 5 + ActionProtocolBgpNotification_Choice_finite_state_machine_error ActionProtocolBgpNotification_Choice_Enum = 6 + ActionProtocolBgpNotification_Choice_custom ActionProtocolBgpNotification_Choice_Enum = 7 ) -// Enum value maps for LacpMetric_Activity_Enum. +// Enum value maps for ActionProtocolBgpNotification_Choice_Enum. var ( - LacpMetric_Activity_Enum_name = map[int32]string{ + ActionProtocolBgpNotification_Choice_Enum_name = map[int32]string{ 0: "unspecified", - 1: "active", - 2: "passive", + 1: "cease", + 2: "message_header_error", + 3: "open_message_error", + 4: "update_message_error", + 5: "hold_timer_expired", + 6: "finite_state_machine_error", + 7: "custom", } - LacpMetric_Activity_Enum_value = map[string]int32{ - "unspecified": 0, - "active": 1, - "passive": 2, + ActionProtocolBgpNotification_Choice_Enum_value = map[string]int32{ + "unspecified": 0, + "cease": 1, + "message_header_error": 2, + "open_message_error": 3, + "update_message_error": 4, + "hold_timer_expired": 5, + "finite_state_machine_error": 6, + "custom": 7, } ) -func (x LacpMetric_Activity_Enum) Enum() *LacpMetric_Activity_Enum { - p := new(LacpMetric_Activity_Enum) +func (x ActionProtocolBgpNotification_Choice_Enum) Enum() *ActionProtocolBgpNotification_Choice_Enum { + p := new(ActionProtocolBgpNotification_Choice_Enum) *p = x return p } -func (x LacpMetric_Activity_Enum) String() string { +func (x ActionProtocolBgpNotification_Choice_Enum) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } -func (LacpMetric_Activity_Enum) Descriptor() protoreflect.EnumDescriptor { +func (ActionProtocolBgpNotification_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { return file_otg_proto_enumTypes[139].Descriptor() } -func (LacpMetric_Activity_Enum) Type() protoreflect.EnumType { +func (ActionProtocolBgpNotification_Choice_Enum) Type() protoreflect.EnumType { return &file_otg_proto_enumTypes[139] } -func (x LacpMetric_Activity_Enum) Number() protoreflect.EnumNumber { +func (x ActionProtocolBgpNotification_Choice_Enum) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } -// Deprecated: Use LacpMetric_Activity_Enum.Descriptor instead. -func (LacpMetric_Activity_Enum) EnumDescriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{282, 0, 0} +// Deprecated: Use ActionProtocolBgpNotification_Choice_Enum.Descriptor instead. +func (ActionProtocolBgpNotification_Choice_Enum) EnumDescriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{308, 0, 0} } -type LacpMetric_Timeout_Enum int32 +type MetricsRequest_Choice_Enum int32 const ( - LacpMetric_Timeout_unspecified LacpMetric_Timeout_Enum = 0 - LacpMetric_Timeout_short LacpMetric_Timeout_Enum = 1 - LacpMetric_Timeout_long LacpMetric_Timeout_Enum = 2 + MetricsRequest_Choice_unspecified MetricsRequest_Choice_Enum = 0 + MetricsRequest_Choice_port MetricsRequest_Choice_Enum = 1 + MetricsRequest_Choice_flow MetricsRequest_Choice_Enum = 2 + MetricsRequest_Choice_bgpv4 MetricsRequest_Choice_Enum = 3 + MetricsRequest_Choice_bgpv6 MetricsRequest_Choice_Enum = 4 + MetricsRequest_Choice_isis MetricsRequest_Choice_Enum = 5 + MetricsRequest_Choice_lag MetricsRequest_Choice_Enum = 6 + MetricsRequest_Choice_lacp MetricsRequest_Choice_Enum = 7 + MetricsRequest_Choice_lldp MetricsRequest_Choice_Enum = 8 + MetricsRequest_Choice_rsvp MetricsRequest_Choice_Enum = 9 ) -// Enum value maps for LacpMetric_Timeout_Enum. +// Enum value maps for MetricsRequest_Choice_Enum. var ( - LacpMetric_Timeout_Enum_name = map[int32]string{ + MetricsRequest_Choice_Enum_name = map[int32]string{ 0: "unspecified", - 1: "short", - 2: "long", + 1: "port", + 2: "flow", + 3: "bgpv4", + 4: "bgpv6", + 5: "isis", + 6: "lag", + 7: "lacp", + 8: "lldp", + 9: "rsvp", } - LacpMetric_Timeout_Enum_value = map[string]int32{ + MetricsRequest_Choice_Enum_value = map[string]int32{ "unspecified": 0, - "short": 1, - "long": 2, + "port": 1, + "flow": 2, + "bgpv4": 3, + "bgpv6": 4, + "isis": 5, + "lag": 6, + "lacp": 7, + "lldp": 8, + "rsvp": 9, } ) -func (x LacpMetric_Timeout_Enum) Enum() *LacpMetric_Timeout_Enum { - p := new(LacpMetric_Timeout_Enum) +func (x MetricsRequest_Choice_Enum) Enum() *MetricsRequest_Choice_Enum { + p := new(MetricsRequest_Choice_Enum) *p = x return p } -func (x LacpMetric_Timeout_Enum) String() string { +func (x MetricsRequest_Choice_Enum) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } -func (LacpMetric_Timeout_Enum) Descriptor() protoreflect.EnumDescriptor { +func (MetricsRequest_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { return file_otg_proto_enumTypes[140].Descriptor() } -func (LacpMetric_Timeout_Enum) Type() protoreflect.EnumType { +func (MetricsRequest_Choice_Enum) Type() protoreflect.EnumType { return &file_otg_proto_enumTypes[140] } -func (x LacpMetric_Timeout_Enum) Number() protoreflect.EnumNumber { +func (x MetricsRequest_Choice_Enum) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } -// Deprecated: Use LacpMetric_Timeout_Enum.Descriptor instead. -func (LacpMetric_Timeout_Enum) EnumDescriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{282, 1, 0} +// Deprecated: Use MetricsRequest_Choice_Enum.Descriptor instead. +func (MetricsRequest_Choice_Enum) EnumDescriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{310, 0, 0} } -type LacpMetric_Synchronization_Enum int32 +type MetricsResponse_Choice_Enum int32 const ( - LacpMetric_Synchronization_unspecified LacpMetric_Synchronization_Enum = 0 - LacpMetric_Synchronization_in_sync LacpMetric_Synchronization_Enum = 1 - LacpMetric_Synchronization_out_sync LacpMetric_Synchronization_Enum = 2 + MetricsResponse_Choice_unspecified MetricsResponse_Choice_Enum = 0 + MetricsResponse_Choice_flow_metrics MetricsResponse_Choice_Enum = 1 + MetricsResponse_Choice_port_metrics MetricsResponse_Choice_Enum = 2 + MetricsResponse_Choice_bgpv4_metrics MetricsResponse_Choice_Enum = 3 + MetricsResponse_Choice_bgpv6_metrics MetricsResponse_Choice_Enum = 4 + MetricsResponse_Choice_isis_metrics MetricsResponse_Choice_Enum = 5 + MetricsResponse_Choice_lag_metrics MetricsResponse_Choice_Enum = 6 + MetricsResponse_Choice_lacp_metrics MetricsResponse_Choice_Enum = 7 + MetricsResponse_Choice_lldp_metrics MetricsResponse_Choice_Enum = 8 + MetricsResponse_Choice_rsvp_metrics MetricsResponse_Choice_Enum = 9 ) -// Enum value maps for LacpMetric_Synchronization_Enum. +// Enum value maps for MetricsResponse_Choice_Enum. var ( - LacpMetric_Synchronization_Enum_name = map[int32]string{ + MetricsResponse_Choice_Enum_name = map[int32]string{ 0: "unspecified", - 1: "in_sync", - 2: "out_sync", + 1: "flow_metrics", + 2: "port_metrics", + 3: "bgpv4_metrics", + 4: "bgpv6_metrics", + 5: "isis_metrics", + 6: "lag_metrics", + 7: "lacp_metrics", + 8: "lldp_metrics", + 9: "rsvp_metrics", } - LacpMetric_Synchronization_Enum_value = map[string]int32{ - "unspecified": 0, - "in_sync": 1, - "out_sync": 2, + MetricsResponse_Choice_Enum_value = map[string]int32{ + "unspecified": 0, + "flow_metrics": 1, + "port_metrics": 2, + "bgpv4_metrics": 3, + "bgpv6_metrics": 4, + "isis_metrics": 5, + "lag_metrics": 6, + "lacp_metrics": 7, + "lldp_metrics": 8, + "rsvp_metrics": 9, } ) -func (x LacpMetric_Synchronization_Enum) Enum() *LacpMetric_Synchronization_Enum { - p := new(LacpMetric_Synchronization_Enum) +func (x MetricsResponse_Choice_Enum) Enum() *MetricsResponse_Choice_Enum { + p := new(MetricsResponse_Choice_Enum) *p = x return p } -func (x LacpMetric_Synchronization_Enum) String() string { +func (x MetricsResponse_Choice_Enum) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } -func (LacpMetric_Synchronization_Enum) Descriptor() protoreflect.EnumDescriptor { +func (MetricsResponse_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { return file_otg_proto_enumTypes[141].Descriptor() } -func (LacpMetric_Synchronization_Enum) Type() protoreflect.EnumType { +func (MetricsResponse_Choice_Enum) Type() protoreflect.EnumType { return &file_otg_proto_enumTypes[141] } -func (x LacpMetric_Synchronization_Enum) Number() protoreflect.EnumNumber { +func (x MetricsResponse_Choice_Enum) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } -// Deprecated: Use LacpMetric_Synchronization_Enum.Descriptor instead. -func (LacpMetric_Synchronization_Enum) EnumDescriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{282, 2, 0} +// Deprecated: Use MetricsResponse_Choice_Enum.Descriptor instead. +func (MetricsResponse_Choice_Enum) EnumDescriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{311, 0, 0} } -type LldpMetricsRequest_ColumnNames_Enum int32 +type PortMetricsRequest_ColumnNames_Enum int32 const ( - LldpMetricsRequest_ColumnNames_unspecified LldpMetricsRequest_ColumnNames_Enum = 0 - LldpMetricsRequest_ColumnNames_frames_rx LldpMetricsRequest_ColumnNames_Enum = 1 - LldpMetricsRequest_ColumnNames_frames_tx LldpMetricsRequest_ColumnNames_Enum = 2 - LldpMetricsRequest_ColumnNames_frames_error_rx LldpMetricsRequest_ColumnNames_Enum = 3 - LldpMetricsRequest_ColumnNames_frames_discard LldpMetricsRequest_ColumnNames_Enum = 4 - LldpMetricsRequest_ColumnNames_tlvs_discard LldpMetricsRequest_ColumnNames_Enum = 5 - LldpMetricsRequest_ColumnNames_tlvs_unknown LldpMetricsRequest_ColumnNames_Enum = 6 + PortMetricsRequest_ColumnNames_unspecified PortMetricsRequest_ColumnNames_Enum = 0 + PortMetricsRequest_ColumnNames_transmit PortMetricsRequest_ColumnNames_Enum = 1 + PortMetricsRequest_ColumnNames_location PortMetricsRequest_ColumnNames_Enum = 2 + PortMetricsRequest_ColumnNames_link PortMetricsRequest_ColumnNames_Enum = 3 + PortMetricsRequest_ColumnNames_capture PortMetricsRequest_ColumnNames_Enum = 4 + PortMetricsRequest_ColumnNames_frames_tx PortMetricsRequest_ColumnNames_Enum = 5 + PortMetricsRequest_ColumnNames_frames_rx PortMetricsRequest_ColumnNames_Enum = 6 + PortMetricsRequest_ColumnNames_bytes_tx PortMetricsRequest_ColumnNames_Enum = 7 + PortMetricsRequest_ColumnNames_bytes_rx PortMetricsRequest_ColumnNames_Enum = 8 + PortMetricsRequest_ColumnNames_frames_tx_rate PortMetricsRequest_ColumnNames_Enum = 9 + PortMetricsRequest_ColumnNames_frames_rx_rate PortMetricsRequest_ColumnNames_Enum = 10 + PortMetricsRequest_ColumnNames_bytes_tx_rate PortMetricsRequest_ColumnNames_Enum = 11 + PortMetricsRequest_ColumnNames_bytes_rx_rate PortMetricsRequest_ColumnNames_Enum = 12 ) -// Enum value maps for LldpMetricsRequest_ColumnNames_Enum. +// Enum value maps for PortMetricsRequest_ColumnNames_Enum. var ( - LldpMetricsRequest_ColumnNames_Enum_name = map[int32]string{ - 0: "unspecified", - 1: "frames_rx", - 2: "frames_tx", - 3: "frames_error_rx", - 4: "frames_discard", - 5: "tlvs_discard", - 6: "tlvs_unknown", + PortMetricsRequest_ColumnNames_Enum_name = map[int32]string{ + 0: "unspecified", + 1: "transmit", + 2: "location", + 3: "link", + 4: "capture", + 5: "frames_tx", + 6: "frames_rx", + 7: "bytes_tx", + 8: "bytes_rx", + 9: "frames_tx_rate", + 10: "frames_rx_rate", + 11: "bytes_tx_rate", + 12: "bytes_rx_rate", } - LldpMetricsRequest_ColumnNames_Enum_value = map[string]int32{ - "unspecified": 0, - "frames_rx": 1, - "frames_tx": 2, - "frames_error_rx": 3, - "frames_discard": 4, - "tlvs_discard": 5, - "tlvs_unknown": 6, + PortMetricsRequest_ColumnNames_Enum_value = map[string]int32{ + "unspecified": 0, + "transmit": 1, + "location": 2, + "link": 3, + "capture": 4, + "frames_tx": 5, + "frames_rx": 6, + "bytes_tx": 7, + "bytes_rx": 8, + "frames_tx_rate": 9, + "frames_rx_rate": 10, + "bytes_tx_rate": 11, + "bytes_rx_rate": 12, } ) -func (x LldpMetricsRequest_ColumnNames_Enum) Enum() *LldpMetricsRequest_ColumnNames_Enum { - p := new(LldpMetricsRequest_ColumnNames_Enum) +func (x PortMetricsRequest_ColumnNames_Enum) Enum() *PortMetricsRequest_ColumnNames_Enum { + p := new(PortMetricsRequest_ColumnNames_Enum) *p = x return p } -func (x LldpMetricsRequest_ColumnNames_Enum) String() string { +func (x PortMetricsRequest_ColumnNames_Enum) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } -func (LldpMetricsRequest_ColumnNames_Enum) Descriptor() protoreflect.EnumDescriptor { +func (PortMetricsRequest_ColumnNames_Enum) Descriptor() protoreflect.EnumDescriptor { return file_otg_proto_enumTypes[142].Descriptor() } -func (LldpMetricsRequest_ColumnNames_Enum) Type() protoreflect.EnumType { +func (PortMetricsRequest_ColumnNames_Enum) Type() protoreflect.EnumType { return &file_otg_proto_enumTypes[142] } -func (x LldpMetricsRequest_ColumnNames_Enum) Number() protoreflect.EnumNumber { +func (x PortMetricsRequest_ColumnNames_Enum) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } -// Deprecated: Use LldpMetricsRequest_ColumnNames_Enum.Descriptor instead. -func (LldpMetricsRequest_ColumnNames_Enum) EnumDescriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{283, 0, 0} +// Deprecated: Use PortMetricsRequest_ColumnNames_Enum.Descriptor instead. +func (PortMetricsRequest_ColumnNames_Enum) EnumDescriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{312, 0, 0} } -type RsvpMetricsRequest_ColumnNames_Enum int32 +type PortMetric_Link_Enum int32 const ( - RsvpMetricsRequest_ColumnNames_unspecified RsvpMetricsRequest_ColumnNames_Enum = 0 - RsvpMetricsRequest_ColumnNames_ingress_p2p_lsps_configured RsvpMetricsRequest_ColumnNames_Enum = 1 - RsvpMetricsRequest_ColumnNames_ingress_p2p_lsps_up RsvpMetricsRequest_ColumnNames_Enum = 2 - RsvpMetricsRequest_ColumnNames_egress_p2p_lsps_up RsvpMetricsRequest_ColumnNames_Enum = 3 - RsvpMetricsRequest_ColumnNames_lsp_flap_count RsvpMetricsRequest_ColumnNames_Enum = 4 - RsvpMetricsRequest_ColumnNames_paths_tx RsvpMetricsRequest_ColumnNames_Enum = 5 - RsvpMetricsRequest_ColumnNames_paths_rx RsvpMetricsRequest_ColumnNames_Enum = 6 - RsvpMetricsRequest_ColumnNames_resvs_tx RsvpMetricsRequest_ColumnNames_Enum = 7 - RsvpMetricsRequest_ColumnNames_resvs_rx RsvpMetricsRequest_ColumnNames_Enum = 8 - RsvpMetricsRequest_ColumnNames_path_tears_tx RsvpMetricsRequest_ColumnNames_Enum = 9 - RsvpMetricsRequest_ColumnNames_path_tears_rx RsvpMetricsRequest_ColumnNames_Enum = 10 - RsvpMetricsRequest_ColumnNames_resv_tears_tx RsvpMetricsRequest_ColumnNames_Enum = 11 - RsvpMetricsRequest_ColumnNames_resv_tears_rx RsvpMetricsRequest_ColumnNames_Enum = 12 - RsvpMetricsRequest_ColumnNames_path_errors_tx RsvpMetricsRequest_ColumnNames_Enum = 13 - RsvpMetricsRequest_ColumnNames_path_errors_rx RsvpMetricsRequest_ColumnNames_Enum = 14 - RsvpMetricsRequest_ColumnNames_resv_errors_tx RsvpMetricsRequest_ColumnNames_Enum = 15 - RsvpMetricsRequest_ColumnNames_resv_errors_rx RsvpMetricsRequest_ColumnNames_Enum = 16 - RsvpMetricsRequest_ColumnNames_resv_conf_tx RsvpMetricsRequest_ColumnNames_Enum = 17 - RsvpMetricsRequest_ColumnNames_resv_conf_rx RsvpMetricsRequest_ColumnNames_Enum = 18 - RsvpMetricsRequest_ColumnNames_hellos_tx RsvpMetricsRequest_ColumnNames_Enum = 19 - RsvpMetricsRequest_ColumnNames_hellos_rx RsvpMetricsRequest_ColumnNames_Enum = 20 - RsvpMetricsRequest_ColumnNames_acks_tx RsvpMetricsRequest_ColumnNames_Enum = 21 - RsvpMetricsRequest_ColumnNames_acks_rx RsvpMetricsRequest_ColumnNames_Enum = 22 - RsvpMetricsRequest_ColumnNames_nacks_tx RsvpMetricsRequest_ColumnNames_Enum = 23 - RsvpMetricsRequest_ColumnNames_nacks_rx RsvpMetricsRequest_ColumnNames_Enum = 24 - RsvpMetricsRequest_ColumnNames_srefresh_tx RsvpMetricsRequest_ColumnNames_Enum = 25 - RsvpMetricsRequest_ColumnNames_srefresh_rx RsvpMetricsRequest_ColumnNames_Enum = 26 - RsvpMetricsRequest_ColumnNames_bundle_tx RsvpMetricsRequest_ColumnNames_Enum = 27 - RsvpMetricsRequest_ColumnNames_bundle_rx RsvpMetricsRequest_ColumnNames_Enum = 28 - RsvpMetricsRequest_ColumnNames_path_reevaluation_request_tx RsvpMetricsRequest_ColumnNames_Enum = 29 - RsvpMetricsRequest_ColumnNames_path_reoptimizations RsvpMetricsRequest_ColumnNames_Enum = 30 + PortMetric_Link_unspecified PortMetric_Link_Enum = 0 + PortMetric_Link_up PortMetric_Link_Enum = 1 + PortMetric_Link_down PortMetric_Link_Enum = 2 ) -// Enum value maps for RsvpMetricsRequest_ColumnNames_Enum. +// Enum value maps for PortMetric_Link_Enum. var ( - RsvpMetricsRequest_ColumnNames_Enum_name = map[int32]string{ - 0: "unspecified", - 1: "ingress_p2p_lsps_configured", - 2: "ingress_p2p_lsps_up", - 3: "egress_p2p_lsps_up", - 4: "lsp_flap_count", - 5: "paths_tx", - 6: "paths_rx", - 7: "resvs_tx", - 8: "resvs_rx", - 9: "path_tears_tx", - 10: "path_tears_rx", - 11: "resv_tears_tx", - 12: "resv_tears_rx", - 13: "path_errors_tx", - 14: "path_errors_rx", - 15: "resv_errors_tx", - 16: "resv_errors_rx", - 17: "resv_conf_tx", - 18: "resv_conf_rx", - 19: "hellos_tx", - 20: "hellos_rx", - 21: "acks_tx", - 22: "acks_rx", - 23: "nacks_tx", - 24: "nacks_rx", - 25: "srefresh_tx", - 26: "srefresh_rx", - 27: "bundle_tx", - 28: "bundle_rx", - 29: "path_reevaluation_request_tx", - 30: "path_reoptimizations", + PortMetric_Link_Enum_name = map[int32]string{ + 0: "unspecified", + 1: "up", + 2: "down", } - RsvpMetricsRequest_ColumnNames_Enum_value = map[string]int32{ - "unspecified": 0, - "ingress_p2p_lsps_configured": 1, - "ingress_p2p_lsps_up": 2, - "egress_p2p_lsps_up": 3, - "lsp_flap_count": 4, - "paths_tx": 5, - "paths_rx": 6, - "resvs_tx": 7, - "resvs_rx": 8, - "path_tears_tx": 9, - "path_tears_rx": 10, - "resv_tears_tx": 11, - "resv_tears_rx": 12, - "path_errors_tx": 13, - "path_errors_rx": 14, - "resv_errors_tx": 15, - "resv_errors_rx": 16, - "resv_conf_tx": 17, - "resv_conf_rx": 18, - "hellos_tx": 19, - "hellos_rx": 20, - "acks_tx": 21, - "acks_rx": 22, - "nacks_tx": 23, - "nacks_rx": 24, - "srefresh_tx": 25, - "srefresh_rx": 26, - "bundle_tx": 27, - "bundle_rx": 28, - "path_reevaluation_request_tx": 29, - "path_reoptimizations": 30, + PortMetric_Link_Enum_value = map[string]int32{ + "unspecified": 0, + "up": 1, + "down": 2, } ) -func (x RsvpMetricsRequest_ColumnNames_Enum) Enum() *RsvpMetricsRequest_ColumnNames_Enum { - p := new(RsvpMetricsRequest_ColumnNames_Enum) +func (x PortMetric_Link_Enum) Enum() *PortMetric_Link_Enum { + p := new(PortMetric_Link_Enum) *p = x return p } -func (x RsvpMetricsRequest_ColumnNames_Enum) String() string { +func (x PortMetric_Link_Enum) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } -func (RsvpMetricsRequest_ColumnNames_Enum) Descriptor() protoreflect.EnumDescriptor { +func (PortMetric_Link_Enum) Descriptor() protoreflect.EnumDescriptor { return file_otg_proto_enumTypes[143].Descriptor() } -func (RsvpMetricsRequest_ColumnNames_Enum) Type() protoreflect.EnumType { +func (PortMetric_Link_Enum) Type() protoreflect.EnumType { return &file_otg_proto_enumTypes[143] } -func (x RsvpMetricsRequest_ColumnNames_Enum) Number() protoreflect.EnumNumber { +func (x PortMetric_Link_Enum) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } -// Deprecated: Use RsvpMetricsRequest_ColumnNames_Enum.Descriptor instead. -func (RsvpMetricsRequest_ColumnNames_Enum) EnumDescriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{285, 0, 0} +// Deprecated: Use PortMetric_Link_Enum.Descriptor instead. +func (PortMetric_Link_Enum) EnumDescriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{313, 0, 0} } -type StatesRequest_Choice_Enum int32 +type PortMetric_Capture_Enum int32 const ( - StatesRequest_Choice_unspecified StatesRequest_Choice_Enum = 0 - StatesRequest_Choice_ipv4_neighbors StatesRequest_Choice_Enum = 1 - StatesRequest_Choice_ipv6_neighbors StatesRequest_Choice_Enum = 2 - StatesRequest_Choice_bgp_prefixes StatesRequest_Choice_Enum = 3 - StatesRequest_Choice_isis_lsps StatesRequest_Choice_Enum = 4 - StatesRequest_Choice_lldp_neighbors StatesRequest_Choice_Enum = 5 - StatesRequest_Choice_rsvp_lsps StatesRequest_Choice_Enum = 6 + PortMetric_Capture_unspecified PortMetric_Capture_Enum = 0 + PortMetric_Capture_started PortMetric_Capture_Enum = 1 + PortMetric_Capture_stopped PortMetric_Capture_Enum = 2 ) -// Enum value maps for StatesRequest_Choice_Enum. +// Enum value maps for PortMetric_Capture_Enum. var ( - StatesRequest_Choice_Enum_name = map[int32]string{ + PortMetric_Capture_Enum_name = map[int32]string{ 0: "unspecified", - 1: "ipv4_neighbors", - 2: "ipv6_neighbors", - 3: "bgp_prefixes", - 4: "isis_lsps", - 5: "lldp_neighbors", - 6: "rsvp_lsps", + 1: "started", + 2: "stopped", } - StatesRequest_Choice_Enum_value = map[string]int32{ - "unspecified": 0, - "ipv4_neighbors": 1, - "ipv6_neighbors": 2, - "bgp_prefixes": 3, - "isis_lsps": 4, - "lldp_neighbors": 5, - "rsvp_lsps": 6, + PortMetric_Capture_Enum_value = map[string]int32{ + "unspecified": 0, + "started": 1, + "stopped": 2, } ) -func (x StatesRequest_Choice_Enum) Enum() *StatesRequest_Choice_Enum { - p := new(StatesRequest_Choice_Enum) +func (x PortMetric_Capture_Enum) Enum() *PortMetric_Capture_Enum { + p := new(PortMetric_Capture_Enum) *p = x return p } -func (x StatesRequest_Choice_Enum) String() string { +func (x PortMetric_Capture_Enum) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } -func (StatesRequest_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { +func (PortMetric_Capture_Enum) Descriptor() protoreflect.EnumDescriptor { return file_otg_proto_enumTypes[144].Descriptor() } -func (StatesRequest_Choice_Enum) Type() protoreflect.EnumType { +func (PortMetric_Capture_Enum) Type() protoreflect.EnumType { return &file_otg_proto_enumTypes[144] } -func (x StatesRequest_Choice_Enum) Number() protoreflect.EnumNumber { +func (x PortMetric_Capture_Enum) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } -// Deprecated: Use StatesRequest_Choice_Enum.Descriptor instead. -func (StatesRequest_Choice_Enum) EnumDescriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{287, 0, 0} +// Deprecated: Use PortMetric_Capture_Enum.Descriptor instead. +func (PortMetric_Capture_Enum) EnumDescriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{313, 1, 0} } -type StatesResponse_Choice_Enum int32 +type PortMetric_Transmit_Enum int32 const ( - StatesResponse_Choice_unspecified StatesResponse_Choice_Enum = 0 - StatesResponse_Choice_ipv4_neighbors StatesResponse_Choice_Enum = 1 - StatesResponse_Choice_ipv6_neighbors StatesResponse_Choice_Enum = 2 - StatesResponse_Choice_bgp_prefixes StatesResponse_Choice_Enum = 3 - StatesResponse_Choice_isis_lsps StatesResponse_Choice_Enum = 4 - StatesResponse_Choice_lldp_neighbors StatesResponse_Choice_Enum = 5 - StatesResponse_Choice_rsvp_lsps StatesResponse_Choice_Enum = 6 + PortMetric_Transmit_unspecified PortMetric_Transmit_Enum = 0 + PortMetric_Transmit_started PortMetric_Transmit_Enum = 1 + PortMetric_Transmit_stopped PortMetric_Transmit_Enum = 2 ) -// Enum value maps for StatesResponse_Choice_Enum. +// Enum value maps for PortMetric_Transmit_Enum. var ( - StatesResponse_Choice_Enum_name = map[int32]string{ + PortMetric_Transmit_Enum_name = map[int32]string{ 0: "unspecified", - 1: "ipv4_neighbors", - 2: "ipv6_neighbors", - 3: "bgp_prefixes", - 4: "isis_lsps", - 5: "lldp_neighbors", - 6: "rsvp_lsps", + 1: "started", + 2: "stopped", } - StatesResponse_Choice_Enum_value = map[string]int32{ - "unspecified": 0, - "ipv4_neighbors": 1, - "ipv6_neighbors": 2, - "bgp_prefixes": 3, - "isis_lsps": 4, - "lldp_neighbors": 5, - "rsvp_lsps": 6, + PortMetric_Transmit_Enum_value = map[string]int32{ + "unspecified": 0, + "started": 1, + "stopped": 2, } ) -func (x StatesResponse_Choice_Enum) Enum() *StatesResponse_Choice_Enum { - p := new(StatesResponse_Choice_Enum) +func (x PortMetric_Transmit_Enum) Enum() *PortMetric_Transmit_Enum { + p := new(PortMetric_Transmit_Enum) *p = x return p } -func (x StatesResponse_Choice_Enum) String() string { +func (x PortMetric_Transmit_Enum) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } -func (StatesResponse_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { +func (PortMetric_Transmit_Enum) Descriptor() protoreflect.EnumDescriptor { return file_otg_proto_enumTypes[145].Descriptor() } -func (StatesResponse_Choice_Enum) Type() protoreflect.EnumType { +func (PortMetric_Transmit_Enum) Type() protoreflect.EnumType { return &file_otg_proto_enumTypes[145] } -func (x StatesResponse_Choice_Enum) Number() protoreflect.EnumNumber { +func (x PortMetric_Transmit_Enum) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } -// Deprecated: Use StatesResponse_Choice_Enum.Descriptor instead. -func (StatesResponse_Choice_Enum) EnumDescriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{288, 0, 0} +// Deprecated: Use PortMetric_Transmit_Enum.Descriptor instead. +func (PortMetric_Transmit_Enum) EnumDescriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{313, 2, 0} } -type BgpPrefixStateRequest_PrefixFilters_Enum int32 +type FlowMetricsRequest_MetricNames_Enum int32 const ( - BgpPrefixStateRequest_PrefixFilters_unspecified BgpPrefixStateRequest_PrefixFilters_Enum = 0 - BgpPrefixStateRequest_PrefixFilters_ipv4_unicast BgpPrefixStateRequest_PrefixFilters_Enum = 1 - BgpPrefixStateRequest_PrefixFilters_ipv6_unicast BgpPrefixStateRequest_PrefixFilters_Enum = 2 + FlowMetricsRequest_MetricNames_unspecified FlowMetricsRequest_MetricNames_Enum = 0 + FlowMetricsRequest_MetricNames_transmit FlowMetricsRequest_MetricNames_Enum = 1 + FlowMetricsRequest_MetricNames_frames_tx FlowMetricsRequest_MetricNames_Enum = 2 + FlowMetricsRequest_MetricNames_frames_rx FlowMetricsRequest_MetricNames_Enum = 3 + FlowMetricsRequest_MetricNames_bytes_tx FlowMetricsRequest_MetricNames_Enum = 4 + FlowMetricsRequest_MetricNames_bytes_rx FlowMetricsRequest_MetricNames_Enum = 5 + FlowMetricsRequest_MetricNames_frames_tx_rate FlowMetricsRequest_MetricNames_Enum = 6 + FlowMetricsRequest_MetricNames_frames_rx_rate FlowMetricsRequest_MetricNames_Enum = 7 ) -// Enum value maps for BgpPrefixStateRequest_PrefixFilters_Enum. +// Enum value maps for FlowMetricsRequest_MetricNames_Enum. var ( - BgpPrefixStateRequest_PrefixFilters_Enum_name = map[int32]string{ + FlowMetricsRequest_MetricNames_Enum_name = map[int32]string{ 0: "unspecified", - 1: "ipv4_unicast", - 2: "ipv6_unicast", + 1: "transmit", + 2: "frames_tx", + 3: "frames_rx", + 4: "bytes_tx", + 5: "bytes_rx", + 6: "frames_tx_rate", + 7: "frames_rx_rate", } - BgpPrefixStateRequest_PrefixFilters_Enum_value = map[string]int32{ - "unspecified": 0, - "ipv4_unicast": 1, - "ipv6_unicast": 2, + FlowMetricsRequest_MetricNames_Enum_value = map[string]int32{ + "unspecified": 0, + "transmit": 1, + "frames_tx": 2, + "frames_rx": 3, + "bytes_tx": 4, + "bytes_rx": 5, + "frames_tx_rate": 6, + "frames_rx_rate": 7, } ) -func (x BgpPrefixStateRequest_PrefixFilters_Enum) Enum() *BgpPrefixStateRequest_PrefixFilters_Enum { - p := new(BgpPrefixStateRequest_PrefixFilters_Enum) +func (x FlowMetricsRequest_MetricNames_Enum) Enum() *FlowMetricsRequest_MetricNames_Enum { + p := new(FlowMetricsRequest_MetricNames_Enum) *p = x return p } -func (x BgpPrefixStateRequest_PrefixFilters_Enum) String() string { +func (x FlowMetricsRequest_MetricNames_Enum) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } -func (BgpPrefixStateRequest_PrefixFilters_Enum) Descriptor() protoreflect.EnumDescriptor { +func (FlowMetricsRequest_MetricNames_Enum) Descriptor() protoreflect.EnumDescriptor { return file_otg_proto_enumTypes[146].Descriptor() } -func (BgpPrefixStateRequest_PrefixFilters_Enum) Type() protoreflect.EnumType { +func (FlowMetricsRequest_MetricNames_Enum) Type() protoreflect.EnumType { return &file_otg_proto_enumTypes[146] } -func (x BgpPrefixStateRequest_PrefixFilters_Enum) Number() protoreflect.EnumNumber { +func (x FlowMetricsRequest_MetricNames_Enum) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } -// Deprecated: Use BgpPrefixStateRequest_PrefixFilters_Enum.Descriptor instead. -func (BgpPrefixStateRequest_PrefixFilters_Enum) EnumDescriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{293, 0, 0} +// Deprecated: Use FlowMetricsRequest_MetricNames_Enum.Descriptor instead. +func (FlowMetricsRequest_MetricNames_Enum) EnumDescriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{314, 0, 0} } -type BgpPrefixIpv4UnicastFilter_Origin_Enum int32 +type FlowTaggedMetricsFilter_MetricNames_Enum int32 const ( - BgpPrefixIpv4UnicastFilter_Origin_unspecified BgpPrefixIpv4UnicastFilter_Origin_Enum = 0 - BgpPrefixIpv4UnicastFilter_Origin_igp BgpPrefixIpv4UnicastFilter_Origin_Enum = 1 - BgpPrefixIpv4UnicastFilter_Origin_egp BgpPrefixIpv4UnicastFilter_Origin_Enum = 2 - BgpPrefixIpv4UnicastFilter_Origin_incomplete BgpPrefixIpv4UnicastFilter_Origin_Enum = 3 + FlowTaggedMetricsFilter_MetricNames_unspecified FlowTaggedMetricsFilter_MetricNames_Enum = 0 + FlowTaggedMetricsFilter_MetricNames_frames_tx FlowTaggedMetricsFilter_MetricNames_Enum = 1 + FlowTaggedMetricsFilter_MetricNames_frames_rx FlowTaggedMetricsFilter_MetricNames_Enum = 2 + FlowTaggedMetricsFilter_MetricNames_bytes_tx FlowTaggedMetricsFilter_MetricNames_Enum = 3 + FlowTaggedMetricsFilter_MetricNames_bytes_rx FlowTaggedMetricsFilter_MetricNames_Enum = 4 + FlowTaggedMetricsFilter_MetricNames_frames_tx_rate FlowTaggedMetricsFilter_MetricNames_Enum = 5 + FlowTaggedMetricsFilter_MetricNames_frames_rx_rate FlowTaggedMetricsFilter_MetricNames_Enum = 6 ) -// Enum value maps for BgpPrefixIpv4UnicastFilter_Origin_Enum. +// Enum value maps for FlowTaggedMetricsFilter_MetricNames_Enum. var ( - BgpPrefixIpv4UnicastFilter_Origin_Enum_name = map[int32]string{ + FlowTaggedMetricsFilter_MetricNames_Enum_name = map[int32]string{ 0: "unspecified", - 1: "igp", - 2: "egp", - 3: "incomplete", + 1: "frames_tx", + 2: "frames_rx", + 3: "bytes_tx", + 4: "bytes_rx", + 5: "frames_tx_rate", + 6: "frames_rx_rate", } - BgpPrefixIpv4UnicastFilter_Origin_Enum_value = map[string]int32{ - "unspecified": 0, - "igp": 1, - "egp": 2, - "incomplete": 3, + FlowTaggedMetricsFilter_MetricNames_Enum_value = map[string]int32{ + "unspecified": 0, + "frames_tx": 1, + "frames_rx": 2, + "bytes_tx": 3, + "bytes_rx": 4, + "frames_tx_rate": 5, + "frames_rx_rate": 6, } ) -func (x BgpPrefixIpv4UnicastFilter_Origin_Enum) Enum() *BgpPrefixIpv4UnicastFilter_Origin_Enum { - p := new(BgpPrefixIpv4UnicastFilter_Origin_Enum) +func (x FlowTaggedMetricsFilter_MetricNames_Enum) Enum() *FlowTaggedMetricsFilter_MetricNames_Enum { + p := new(FlowTaggedMetricsFilter_MetricNames_Enum) *p = x return p } -func (x BgpPrefixIpv4UnicastFilter_Origin_Enum) String() string { +func (x FlowTaggedMetricsFilter_MetricNames_Enum) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } -func (BgpPrefixIpv4UnicastFilter_Origin_Enum) Descriptor() protoreflect.EnumDescriptor { +func (FlowTaggedMetricsFilter_MetricNames_Enum) Descriptor() protoreflect.EnumDescriptor { return file_otg_proto_enumTypes[147].Descriptor() } -func (BgpPrefixIpv4UnicastFilter_Origin_Enum) Type() protoreflect.EnumType { +func (FlowTaggedMetricsFilter_MetricNames_Enum) Type() protoreflect.EnumType { return &file_otg_proto_enumTypes[147] } -func (x BgpPrefixIpv4UnicastFilter_Origin_Enum) Number() protoreflect.EnumNumber { +func (x FlowTaggedMetricsFilter_MetricNames_Enum) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } -// Deprecated: Use BgpPrefixIpv4UnicastFilter_Origin_Enum.Descriptor instead. -func (BgpPrefixIpv4UnicastFilter_Origin_Enum) EnumDescriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{294, 0, 0} +// Deprecated: Use FlowTaggedMetricsFilter_MetricNames_Enum.Descriptor instead. +func (FlowTaggedMetricsFilter_MetricNames_Enum) EnumDescriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{315, 0, 0} } -type BgpPrefixIpv6UnicastFilter_Origin_Enum int32 +type FlowMetric_Transmit_Enum int32 const ( - BgpPrefixIpv6UnicastFilter_Origin_unspecified BgpPrefixIpv6UnicastFilter_Origin_Enum = 0 - BgpPrefixIpv6UnicastFilter_Origin_igp BgpPrefixIpv6UnicastFilter_Origin_Enum = 1 - BgpPrefixIpv6UnicastFilter_Origin_egp BgpPrefixIpv6UnicastFilter_Origin_Enum = 2 - BgpPrefixIpv6UnicastFilter_Origin_incomplete BgpPrefixIpv6UnicastFilter_Origin_Enum = 3 + FlowMetric_Transmit_unspecified FlowMetric_Transmit_Enum = 0 + FlowMetric_Transmit_started FlowMetric_Transmit_Enum = 1 + FlowMetric_Transmit_stopped FlowMetric_Transmit_Enum = 2 + FlowMetric_Transmit_paused FlowMetric_Transmit_Enum = 3 ) -// Enum value maps for BgpPrefixIpv6UnicastFilter_Origin_Enum. +// Enum value maps for FlowMetric_Transmit_Enum. var ( - BgpPrefixIpv6UnicastFilter_Origin_Enum_name = map[int32]string{ + FlowMetric_Transmit_Enum_name = map[int32]string{ 0: "unspecified", - 1: "igp", - 2: "egp", - 3: "incomplete", + 1: "started", + 2: "stopped", + 3: "paused", } - BgpPrefixIpv6UnicastFilter_Origin_Enum_value = map[string]int32{ + FlowMetric_Transmit_Enum_value = map[string]int32{ "unspecified": 0, - "igp": 1, - "egp": 2, - "incomplete": 3, + "started": 1, + "stopped": 2, + "paused": 3, } ) -func (x BgpPrefixIpv6UnicastFilter_Origin_Enum) Enum() *BgpPrefixIpv6UnicastFilter_Origin_Enum { - p := new(BgpPrefixIpv6UnicastFilter_Origin_Enum) +func (x FlowMetric_Transmit_Enum) Enum() *FlowMetric_Transmit_Enum { + p := new(FlowMetric_Transmit_Enum) *p = x return p } -func (x BgpPrefixIpv6UnicastFilter_Origin_Enum) String() string { +func (x FlowMetric_Transmit_Enum) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } -func (BgpPrefixIpv6UnicastFilter_Origin_Enum) Descriptor() protoreflect.EnumDescriptor { +func (FlowMetric_Transmit_Enum) Descriptor() protoreflect.EnumDescriptor { return file_otg_proto_enumTypes[148].Descriptor() } -func (BgpPrefixIpv6UnicastFilter_Origin_Enum) Type() protoreflect.EnumType { +func (FlowMetric_Transmit_Enum) Type() protoreflect.EnumType { return &file_otg_proto_enumTypes[148] } -func (x BgpPrefixIpv6UnicastFilter_Origin_Enum) Number() protoreflect.EnumNumber { +func (x FlowMetric_Transmit_Enum) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } -// Deprecated: Use BgpPrefixIpv6UnicastFilter_Origin_Enum.Descriptor instead. -func (BgpPrefixIpv6UnicastFilter_Origin_Enum) EnumDescriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{295, 0, 0} +// Deprecated: Use FlowMetric_Transmit_Enum.Descriptor instead. +func (FlowMetric_Transmit_Enum) EnumDescriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{317, 0, 0} } -type BgpPrefixIpv4UnicastState_Origin_Enum int32 +type FlowMetricTagValue_Choice_Enum int32 const ( - BgpPrefixIpv4UnicastState_Origin_unspecified BgpPrefixIpv4UnicastState_Origin_Enum = 0 - BgpPrefixIpv4UnicastState_Origin_igp BgpPrefixIpv4UnicastState_Origin_Enum = 1 - BgpPrefixIpv4UnicastState_Origin_egp BgpPrefixIpv4UnicastState_Origin_Enum = 2 - BgpPrefixIpv4UnicastState_Origin_incomplete BgpPrefixIpv4UnicastState_Origin_Enum = 3 + FlowMetricTagValue_Choice_unspecified FlowMetricTagValue_Choice_Enum = 0 + FlowMetricTagValue_Choice_hex FlowMetricTagValue_Choice_Enum = 1 + FlowMetricTagValue_Choice_str FlowMetricTagValue_Choice_Enum = 2 ) -// Enum value maps for BgpPrefixIpv4UnicastState_Origin_Enum. +// Enum value maps for FlowMetricTagValue_Choice_Enum. var ( - BgpPrefixIpv4UnicastState_Origin_Enum_name = map[int32]string{ + FlowMetricTagValue_Choice_Enum_name = map[int32]string{ 0: "unspecified", - 1: "igp", - 2: "egp", - 3: "incomplete", + 1: "hex", + 2: "str", } - BgpPrefixIpv4UnicastState_Origin_Enum_value = map[string]int32{ + FlowMetricTagValue_Choice_Enum_value = map[string]int32{ "unspecified": 0, - "igp": 1, - "egp": 2, - "incomplete": 3, + "hex": 1, + "str": 2, } ) -func (x BgpPrefixIpv4UnicastState_Origin_Enum) Enum() *BgpPrefixIpv4UnicastState_Origin_Enum { - p := new(BgpPrefixIpv4UnicastState_Origin_Enum) +func (x FlowMetricTagValue_Choice_Enum) Enum() *FlowMetricTagValue_Choice_Enum { + p := new(FlowMetricTagValue_Choice_Enum) *p = x return p } -func (x BgpPrefixIpv4UnicastState_Origin_Enum) String() string { +func (x FlowMetricTagValue_Choice_Enum) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } -func (BgpPrefixIpv4UnicastState_Origin_Enum) Descriptor() protoreflect.EnumDescriptor { +func (FlowMetricTagValue_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { return file_otg_proto_enumTypes[149].Descriptor() } -func (BgpPrefixIpv4UnicastState_Origin_Enum) Type() protoreflect.EnumType { +func (FlowMetricTagValue_Choice_Enum) Type() protoreflect.EnumType { return &file_otg_proto_enumTypes[149] } -func (x BgpPrefixIpv4UnicastState_Origin_Enum) Number() protoreflect.EnumNumber { +func (x FlowMetricTagValue_Choice_Enum) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } -// Deprecated: Use BgpPrefixIpv4UnicastState_Origin_Enum.Descriptor instead. -func (BgpPrefixIpv4UnicastState_Origin_Enum) EnumDescriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{297, 0, 0} +// Deprecated: Use FlowMetricTagValue_Choice_Enum.Descriptor instead. +func (FlowMetricTagValue_Choice_Enum) EnumDescriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{320, 0, 0} } -type BgpPrefixIpv6UnicastState_Origin_Enum int32 +type Bgpv4MetricsRequest_ColumnNames_Enum int32 const ( - BgpPrefixIpv6UnicastState_Origin_unspecified BgpPrefixIpv6UnicastState_Origin_Enum = 0 - BgpPrefixIpv6UnicastState_Origin_igp BgpPrefixIpv6UnicastState_Origin_Enum = 1 - BgpPrefixIpv6UnicastState_Origin_egp BgpPrefixIpv6UnicastState_Origin_Enum = 2 - BgpPrefixIpv6UnicastState_Origin_incomplete BgpPrefixIpv6UnicastState_Origin_Enum = 3 + Bgpv4MetricsRequest_ColumnNames_unspecified Bgpv4MetricsRequest_ColumnNames_Enum = 0 + Bgpv4MetricsRequest_ColumnNames_session_state Bgpv4MetricsRequest_ColumnNames_Enum = 1 + Bgpv4MetricsRequest_ColumnNames_session_flap_count Bgpv4MetricsRequest_ColumnNames_Enum = 2 + Bgpv4MetricsRequest_ColumnNames_routes_advertised Bgpv4MetricsRequest_ColumnNames_Enum = 3 + Bgpv4MetricsRequest_ColumnNames_routes_received Bgpv4MetricsRequest_ColumnNames_Enum = 4 + Bgpv4MetricsRequest_ColumnNames_route_withdraws_sent Bgpv4MetricsRequest_ColumnNames_Enum = 5 + Bgpv4MetricsRequest_ColumnNames_route_withdraws_received Bgpv4MetricsRequest_ColumnNames_Enum = 6 + Bgpv4MetricsRequest_ColumnNames_updates_sent Bgpv4MetricsRequest_ColumnNames_Enum = 7 + Bgpv4MetricsRequest_ColumnNames_updates_received Bgpv4MetricsRequest_ColumnNames_Enum = 8 + Bgpv4MetricsRequest_ColumnNames_opens_sent Bgpv4MetricsRequest_ColumnNames_Enum = 9 + Bgpv4MetricsRequest_ColumnNames_opens_received Bgpv4MetricsRequest_ColumnNames_Enum = 10 + Bgpv4MetricsRequest_ColumnNames_keepalives_sent Bgpv4MetricsRequest_ColumnNames_Enum = 11 + Bgpv4MetricsRequest_ColumnNames_keepalives_received Bgpv4MetricsRequest_ColumnNames_Enum = 12 + Bgpv4MetricsRequest_ColumnNames_notifications_sent Bgpv4MetricsRequest_ColumnNames_Enum = 13 + Bgpv4MetricsRequest_ColumnNames_notifications_received Bgpv4MetricsRequest_ColumnNames_Enum = 14 + Bgpv4MetricsRequest_ColumnNames_fsm_state Bgpv4MetricsRequest_ColumnNames_Enum = 15 + Bgpv4MetricsRequest_ColumnNames_end_of_rib_received Bgpv4MetricsRequest_ColumnNames_Enum = 16 ) -// Enum value maps for BgpPrefixIpv6UnicastState_Origin_Enum. +// Enum value maps for Bgpv4MetricsRequest_ColumnNames_Enum. var ( - BgpPrefixIpv6UnicastState_Origin_Enum_name = map[int32]string{ - 0: "unspecified", - 1: "igp", - 2: "egp", - 3: "incomplete", + Bgpv4MetricsRequest_ColumnNames_Enum_name = map[int32]string{ + 0: "unspecified", + 1: "session_state", + 2: "session_flap_count", + 3: "routes_advertised", + 4: "routes_received", + 5: "route_withdraws_sent", + 6: "route_withdraws_received", + 7: "updates_sent", + 8: "updates_received", + 9: "opens_sent", + 10: "opens_received", + 11: "keepalives_sent", + 12: "keepalives_received", + 13: "notifications_sent", + 14: "notifications_received", + 15: "fsm_state", + 16: "end_of_rib_received", } - BgpPrefixIpv6UnicastState_Origin_Enum_value = map[string]int32{ - "unspecified": 0, - "igp": 1, - "egp": 2, - "incomplete": 3, + Bgpv4MetricsRequest_ColumnNames_Enum_value = map[string]int32{ + "unspecified": 0, + "session_state": 1, + "session_flap_count": 2, + "routes_advertised": 3, + "routes_received": 4, + "route_withdraws_sent": 5, + "route_withdraws_received": 6, + "updates_sent": 7, + "updates_received": 8, + "opens_sent": 9, + "opens_received": 10, + "keepalives_sent": 11, + "keepalives_received": 12, + "notifications_sent": 13, + "notifications_received": 14, + "fsm_state": 15, + "end_of_rib_received": 16, } ) -func (x BgpPrefixIpv6UnicastState_Origin_Enum) Enum() *BgpPrefixIpv6UnicastState_Origin_Enum { - p := new(BgpPrefixIpv6UnicastState_Origin_Enum) +func (x Bgpv4MetricsRequest_ColumnNames_Enum) Enum() *Bgpv4MetricsRequest_ColumnNames_Enum { + p := new(Bgpv4MetricsRequest_ColumnNames_Enum) *p = x return p } -func (x BgpPrefixIpv6UnicastState_Origin_Enum) String() string { +func (x Bgpv4MetricsRequest_ColumnNames_Enum) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } -func (BgpPrefixIpv6UnicastState_Origin_Enum) Descriptor() protoreflect.EnumDescriptor { +func (Bgpv4MetricsRequest_ColumnNames_Enum) Descriptor() protoreflect.EnumDescriptor { return file_otg_proto_enumTypes[150].Descriptor() } -func (BgpPrefixIpv6UnicastState_Origin_Enum) Type() protoreflect.EnumType { +func (Bgpv4MetricsRequest_ColumnNames_Enum) Type() protoreflect.EnumType { return &file_otg_proto_enumTypes[150] } -func (x BgpPrefixIpv6UnicastState_Origin_Enum) Number() protoreflect.EnumNumber { +func (x Bgpv4MetricsRequest_ColumnNames_Enum) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } -// Deprecated: Use BgpPrefixIpv6UnicastState_Origin_Enum.Descriptor instead. -func (BgpPrefixIpv6UnicastState_Origin_Enum) EnumDescriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{298, 0, 0} +// Deprecated: Use Bgpv4MetricsRequest_ColumnNames_Enum.Descriptor instead. +func (Bgpv4MetricsRequest_ColumnNames_Enum) EnumDescriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{323, 0, 0} } -type ResultBgpCommunity_Type_Enum int32 +type Bgpv4Metric_SessionState_Enum int32 const ( - ResultBgpCommunity_Type_unspecified ResultBgpCommunity_Type_Enum = 0 - ResultBgpCommunity_Type_manual_as_number ResultBgpCommunity_Type_Enum = 1 - ResultBgpCommunity_Type_no_export ResultBgpCommunity_Type_Enum = 2 - ResultBgpCommunity_Type_no_advertised ResultBgpCommunity_Type_Enum = 3 - ResultBgpCommunity_Type_no_export_subconfed ResultBgpCommunity_Type_Enum = 4 - ResultBgpCommunity_Type_llgr_stale ResultBgpCommunity_Type_Enum = 5 - ResultBgpCommunity_Type_no_llgr ResultBgpCommunity_Type_Enum = 6 + Bgpv4Metric_SessionState_unspecified Bgpv4Metric_SessionState_Enum = 0 + Bgpv4Metric_SessionState_up Bgpv4Metric_SessionState_Enum = 1 + Bgpv4Metric_SessionState_down Bgpv4Metric_SessionState_Enum = 2 ) -// Enum value maps for ResultBgpCommunity_Type_Enum. +// Enum value maps for Bgpv4Metric_SessionState_Enum. var ( - ResultBgpCommunity_Type_Enum_name = map[int32]string{ + Bgpv4Metric_SessionState_Enum_name = map[int32]string{ 0: "unspecified", - 1: "manual_as_number", - 2: "no_export", - 3: "no_advertised", - 4: "no_export_subconfed", - 5: "llgr_stale", - 6: "no_llgr", + 1: "up", + 2: "down", } - ResultBgpCommunity_Type_Enum_value = map[string]int32{ - "unspecified": 0, - "manual_as_number": 1, - "no_export": 2, - "no_advertised": 3, - "no_export_subconfed": 4, - "llgr_stale": 5, - "no_llgr": 6, + Bgpv4Metric_SessionState_Enum_value = map[string]int32{ + "unspecified": 0, + "up": 1, + "down": 2, } ) -func (x ResultBgpCommunity_Type_Enum) Enum() *ResultBgpCommunity_Type_Enum { - p := new(ResultBgpCommunity_Type_Enum) +func (x Bgpv4Metric_SessionState_Enum) Enum() *Bgpv4Metric_SessionState_Enum { + p := new(Bgpv4Metric_SessionState_Enum) *p = x return p } -func (x ResultBgpCommunity_Type_Enum) String() string { +func (x Bgpv4Metric_SessionState_Enum) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } -func (ResultBgpCommunity_Type_Enum) Descriptor() protoreflect.EnumDescriptor { +func (Bgpv4Metric_SessionState_Enum) Descriptor() protoreflect.EnumDescriptor { return file_otg_proto_enumTypes[151].Descriptor() } -func (ResultBgpCommunity_Type_Enum) Type() protoreflect.EnumType { +func (Bgpv4Metric_SessionState_Enum) Type() protoreflect.EnumType { return &file_otg_proto_enumTypes[151] } -func (x ResultBgpCommunity_Type_Enum) Number() protoreflect.EnumNumber { +func (x Bgpv4Metric_SessionState_Enum) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } -// Deprecated: Use ResultBgpCommunity_Type_Enum.Descriptor instead. -func (ResultBgpCommunity_Type_Enum) EnumDescriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{299, 0, 0} +// Deprecated: Use Bgpv4Metric_SessionState_Enum.Descriptor instead. +func (Bgpv4Metric_SessionState_Enum) EnumDescriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{324, 0, 0} } -type ResultBgpAsPathSegment_Type_Enum int32 +type Bgpv4Metric_FsmState_Enum int32 const ( - ResultBgpAsPathSegment_Type_unspecified ResultBgpAsPathSegment_Type_Enum = 0 - ResultBgpAsPathSegment_Type_as_seq ResultBgpAsPathSegment_Type_Enum = 1 - ResultBgpAsPathSegment_Type_as_set ResultBgpAsPathSegment_Type_Enum = 2 - ResultBgpAsPathSegment_Type_as_confed_seq ResultBgpAsPathSegment_Type_Enum = 3 - ResultBgpAsPathSegment_Type_as_confed_set ResultBgpAsPathSegment_Type_Enum = 4 + Bgpv4Metric_FsmState_unspecified Bgpv4Metric_FsmState_Enum = 0 + Bgpv4Metric_FsmState_idle Bgpv4Metric_FsmState_Enum = 1 + Bgpv4Metric_FsmState_connect Bgpv4Metric_FsmState_Enum = 2 + Bgpv4Metric_FsmState_active Bgpv4Metric_FsmState_Enum = 3 + Bgpv4Metric_FsmState_opensent Bgpv4Metric_FsmState_Enum = 4 + Bgpv4Metric_FsmState_openconfirm Bgpv4Metric_FsmState_Enum = 5 + Bgpv4Metric_FsmState_established Bgpv4Metric_FsmState_Enum = 6 ) -// Enum value maps for ResultBgpAsPathSegment_Type_Enum. +// Enum value maps for Bgpv4Metric_FsmState_Enum. var ( - ResultBgpAsPathSegment_Type_Enum_name = map[int32]string{ + Bgpv4Metric_FsmState_Enum_name = map[int32]string{ 0: "unspecified", - 1: "as_seq", - 2: "as_set", - 3: "as_confed_seq", - 4: "as_confed_set", + 1: "idle", + 2: "connect", + 3: "active", + 4: "opensent", + 5: "openconfirm", + 6: "established", } - ResultBgpAsPathSegment_Type_Enum_value = map[string]int32{ - "unspecified": 0, - "as_seq": 1, - "as_set": 2, - "as_confed_seq": 3, - "as_confed_set": 4, + Bgpv4Metric_FsmState_Enum_value = map[string]int32{ + "unspecified": 0, + "idle": 1, + "connect": 2, + "active": 3, + "opensent": 4, + "openconfirm": 5, + "established": 6, } ) -func (x ResultBgpAsPathSegment_Type_Enum) Enum() *ResultBgpAsPathSegment_Type_Enum { - p := new(ResultBgpAsPathSegment_Type_Enum) +func (x Bgpv4Metric_FsmState_Enum) Enum() *Bgpv4Metric_FsmState_Enum { + p := new(Bgpv4Metric_FsmState_Enum) *p = x return p } -func (x ResultBgpAsPathSegment_Type_Enum) String() string { +func (x Bgpv4Metric_FsmState_Enum) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } -func (ResultBgpAsPathSegment_Type_Enum) Descriptor() protoreflect.EnumDescriptor { +func (Bgpv4Metric_FsmState_Enum) Descriptor() protoreflect.EnumDescriptor { return file_otg_proto_enumTypes[152].Descriptor() } -func (ResultBgpAsPathSegment_Type_Enum) Type() protoreflect.EnumType { +func (Bgpv4Metric_FsmState_Enum) Type() protoreflect.EnumType { return &file_otg_proto_enumTypes[152] } -func (x ResultBgpAsPathSegment_Type_Enum) Number() protoreflect.EnumNumber { +func (x Bgpv4Metric_FsmState_Enum) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } -// Deprecated: Use ResultBgpAsPathSegment_Type_Enum.Descriptor instead. -func (ResultBgpAsPathSegment_Type_Enum) EnumDescriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{301, 0, 0} +// Deprecated: Use Bgpv4Metric_FsmState_Enum.Descriptor instead. +func (Bgpv4Metric_FsmState_Enum) EnumDescriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{324, 1, 0} } -type IsisLspState_PduType_Enum int32 +type Bgpv6MetricsRequest_ColumnNames_Enum int32 const ( - IsisLspState_PduType_unspecified IsisLspState_PduType_Enum = 0 - IsisLspState_PduType_level_1 IsisLspState_PduType_Enum = 1 - IsisLspState_PduType_level_2 IsisLspState_PduType_Enum = 2 + Bgpv6MetricsRequest_ColumnNames_unspecified Bgpv6MetricsRequest_ColumnNames_Enum = 0 + Bgpv6MetricsRequest_ColumnNames_session_state Bgpv6MetricsRequest_ColumnNames_Enum = 1 + Bgpv6MetricsRequest_ColumnNames_session_flap_count Bgpv6MetricsRequest_ColumnNames_Enum = 2 + Bgpv6MetricsRequest_ColumnNames_routes_advertised Bgpv6MetricsRequest_ColumnNames_Enum = 3 + Bgpv6MetricsRequest_ColumnNames_routes_received Bgpv6MetricsRequest_ColumnNames_Enum = 4 + Bgpv6MetricsRequest_ColumnNames_route_withdraws_sent Bgpv6MetricsRequest_ColumnNames_Enum = 5 + Bgpv6MetricsRequest_ColumnNames_route_withdraws_received Bgpv6MetricsRequest_ColumnNames_Enum = 6 + Bgpv6MetricsRequest_ColumnNames_updates_sent Bgpv6MetricsRequest_ColumnNames_Enum = 7 + Bgpv6MetricsRequest_ColumnNames_updates_received Bgpv6MetricsRequest_ColumnNames_Enum = 8 + Bgpv6MetricsRequest_ColumnNames_opens_sent Bgpv6MetricsRequest_ColumnNames_Enum = 9 + Bgpv6MetricsRequest_ColumnNames_opens_received Bgpv6MetricsRequest_ColumnNames_Enum = 10 + Bgpv6MetricsRequest_ColumnNames_keepalives_sent Bgpv6MetricsRequest_ColumnNames_Enum = 11 + Bgpv6MetricsRequest_ColumnNames_keepalives_received Bgpv6MetricsRequest_ColumnNames_Enum = 12 + Bgpv6MetricsRequest_ColumnNames_notifications_sent Bgpv6MetricsRequest_ColumnNames_Enum = 13 + Bgpv6MetricsRequest_ColumnNames_notifications_received Bgpv6MetricsRequest_ColumnNames_Enum = 14 + Bgpv6MetricsRequest_ColumnNames_fsm_state Bgpv6MetricsRequest_ColumnNames_Enum = 15 + Bgpv6MetricsRequest_ColumnNames_end_of_rib_received Bgpv6MetricsRequest_ColumnNames_Enum = 16 ) -// Enum value maps for IsisLspState_PduType_Enum. +// Enum value maps for Bgpv6MetricsRequest_ColumnNames_Enum. var ( - IsisLspState_PduType_Enum_name = map[int32]string{ - 0: "unspecified", - 1: "level_1", - 2: "level_2", + Bgpv6MetricsRequest_ColumnNames_Enum_name = map[int32]string{ + 0: "unspecified", + 1: "session_state", + 2: "session_flap_count", + 3: "routes_advertised", + 4: "routes_received", + 5: "route_withdraws_sent", + 6: "route_withdraws_received", + 7: "updates_sent", + 8: "updates_received", + 9: "opens_sent", + 10: "opens_received", + 11: "keepalives_sent", + 12: "keepalives_received", + 13: "notifications_sent", + 14: "notifications_received", + 15: "fsm_state", + 16: "end_of_rib_received", } - IsisLspState_PduType_Enum_value = map[string]int32{ - "unspecified": 0, - "level_1": 1, - "level_2": 2, + Bgpv6MetricsRequest_ColumnNames_Enum_value = map[string]int32{ + "unspecified": 0, + "session_state": 1, + "session_flap_count": 2, + "routes_advertised": 3, + "routes_received": 4, + "route_withdraws_sent": 5, + "route_withdraws_received": 6, + "updates_sent": 7, + "updates_received": 8, + "opens_sent": 9, + "opens_received": 10, + "keepalives_sent": 11, + "keepalives_received": 12, + "notifications_sent": 13, + "notifications_received": 14, + "fsm_state": 15, + "end_of_rib_received": 16, } ) -func (x IsisLspState_PduType_Enum) Enum() *IsisLspState_PduType_Enum { - p := new(IsisLspState_PduType_Enum) +func (x Bgpv6MetricsRequest_ColumnNames_Enum) Enum() *Bgpv6MetricsRequest_ColumnNames_Enum { + p := new(Bgpv6MetricsRequest_ColumnNames_Enum) *p = x return p } -func (x IsisLspState_PduType_Enum) String() string { +func (x Bgpv6MetricsRequest_ColumnNames_Enum) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } -func (IsisLspState_PduType_Enum) Descriptor() protoreflect.EnumDescriptor { +func (Bgpv6MetricsRequest_ColumnNames_Enum) Descriptor() protoreflect.EnumDescriptor { return file_otg_proto_enumTypes[153].Descriptor() } -func (IsisLspState_PduType_Enum) Type() protoreflect.EnumType { +func (Bgpv6MetricsRequest_ColumnNames_Enum) Type() protoreflect.EnumType { return &file_otg_proto_enumTypes[153] } -func (x IsisLspState_PduType_Enum) Number() protoreflect.EnumNumber { +func (x Bgpv6MetricsRequest_ColumnNames_Enum) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } -// Deprecated: Use IsisLspState_PduType_Enum.Descriptor instead. -func (IsisLspState_PduType_Enum) EnumDescriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{304, 0, 0} +// Deprecated: Use Bgpv6MetricsRequest_ColumnNames_Enum.Descriptor instead. +func (Bgpv6MetricsRequest_ColumnNames_Enum) EnumDescriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{325, 0, 0} } -type IsisLspV4Prefix_RedistributionType_Enum int32 +type Bgpv6Metric_SessionState_Enum int32 const ( - IsisLspV4Prefix_RedistributionType_unspecified IsisLspV4Prefix_RedistributionType_Enum = 0 - IsisLspV4Prefix_RedistributionType_up IsisLspV4Prefix_RedistributionType_Enum = 1 - IsisLspV4Prefix_RedistributionType_down IsisLspV4Prefix_RedistributionType_Enum = 2 + Bgpv6Metric_SessionState_unspecified Bgpv6Metric_SessionState_Enum = 0 + Bgpv6Metric_SessionState_up Bgpv6Metric_SessionState_Enum = 1 + Bgpv6Metric_SessionState_down Bgpv6Metric_SessionState_Enum = 2 ) -// Enum value maps for IsisLspV4Prefix_RedistributionType_Enum. +// Enum value maps for Bgpv6Metric_SessionState_Enum. var ( - IsisLspV4Prefix_RedistributionType_Enum_name = map[int32]string{ + Bgpv6Metric_SessionState_Enum_name = map[int32]string{ 0: "unspecified", 1: "up", 2: "down", } - IsisLspV4Prefix_RedistributionType_Enum_value = map[string]int32{ + Bgpv6Metric_SessionState_Enum_value = map[string]int32{ "unspecified": 0, "up": 1, "down": 2, } ) -func (x IsisLspV4Prefix_RedistributionType_Enum) Enum() *IsisLspV4Prefix_RedistributionType_Enum { - p := new(IsisLspV4Prefix_RedistributionType_Enum) +func (x Bgpv6Metric_SessionState_Enum) Enum() *Bgpv6Metric_SessionState_Enum { + p := new(Bgpv6Metric_SessionState_Enum) *p = x return p } -func (x IsisLspV4Prefix_RedistributionType_Enum) String() string { +func (x Bgpv6Metric_SessionState_Enum) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } -func (IsisLspV4Prefix_RedistributionType_Enum) Descriptor() protoreflect.EnumDescriptor { +func (Bgpv6Metric_SessionState_Enum) Descriptor() protoreflect.EnumDescriptor { return file_otg_proto_enumTypes[154].Descriptor() } -func (IsisLspV4Prefix_RedistributionType_Enum) Type() protoreflect.EnumType { +func (Bgpv6Metric_SessionState_Enum) Type() protoreflect.EnumType { return &file_otg_proto_enumTypes[154] } -func (x IsisLspV4Prefix_RedistributionType_Enum) Number() protoreflect.EnumNumber { +func (x Bgpv6Metric_SessionState_Enum) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } -// Deprecated: Use IsisLspV4Prefix_RedistributionType_Enum.Descriptor instead. -func (IsisLspV4Prefix_RedistributionType_Enum) EnumDescriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{313, 0, 0} +// Deprecated: Use Bgpv6Metric_SessionState_Enum.Descriptor instead. +func (Bgpv6Metric_SessionState_Enum) EnumDescriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{326, 0, 0} } -type IsisLspV4Prefix_OriginType_Enum int32 +type Bgpv6Metric_FsmState_Enum int32 const ( - IsisLspV4Prefix_OriginType_unspecified IsisLspV4Prefix_OriginType_Enum = 0 - IsisLspV4Prefix_OriginType_internal IsisLspV4Prefix_OriginType_Enum = 1 - IsisLspV4Prefix_OriginType_external IsisLspV4Prefix_OriginType_Enum = 2 + Bgpv6Metric_FsmState_unspecified Bgpv6Metric_FsmState_Enum = 0 + Bgpv6Metric_FsmState_idle Bgpv6Metric_FsmState_Enum = 1 + Bgpv6Metric_FsmState_connect Bgpv6Metric_FsmState_Enum = 2 + Bgpv6Metric_FsmState_active Bgpv6Metric_FsmState_Enum = 3 + Bgpv6Metric_FsmState_opensent Bgpv6Metric_FsmState_Enum = 4 + Bgpv6Metric_FsmState_openconfirm Bgpv6Metric_FsmState_Enum = 5 + Bgpv6Metric_FsmState_established Bgpv6Metric_FsmState_Enum = 6 ) -// Enum value maps for IsisLspV4Prefix_OriginType_Enum. +// Enum value maps for Bgpv6Metric_FsmState_Enum. var ( - IsisLspV4Prefix_OriginType_Enum_name = map[int32]string{ + Bgpv6Metric_FsmState_Enum_name = map[int32]string{ 0: "unspecified", - 1: "internal", - 2: "external", + 1: "idle", + 2: "connect", + 3: "active", + 4: "opensent", + 5: "openconfirm", + 6: "established", } - IsisLspV4Prefix_OriginType_Enum_value = map[string]int32{ + Bgpv6Metric_FsmState_Enum_value = map[string]int32{ "unspecified": 0, - "internal": 1, - "external": 2, + "idle": 1, + "connect": 2, + "active": 3, + "opensent": 4, + "openconfirm": 5, + "established": 6, } ) -func (x IsisLspV4Prefix_OriginType_Enum) Enum() *IsisLspV4Prefix_OriginType_Enum { - p := new(IsisLspV4Prefix_OriginType_Enum) +func (x Bgpv6Metric_FsmState_Enum) Enum() *Bgpv6Metric_FsmState_Enum { + p := new(Bgpv6Metric_FsmState_Enum) *p = x return p } -func (x IsisLspV4Prefix_OriginType_Enum) String() string { +func (x Bgpv6Metric_FsmState_Enum) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } -func (IsisLspV4Prefix_OriginType_Enum) Descriptor() protoreflect.EnumDescriptor { +func (Bgpv6Metric_FsmState_Enum) Descriptor() protoreflect.EnumDescriptor { return file_otg_proto_enumTypes[155].Descriptor() } -func (IsisLspV4Prefix_OriginType_Enum) Type() protoreflect.EnumType { +func (Bgpv6Metric_FsmState_Enum) Type() protoreflect.EnumType { return &file_otg_proto_enumTypes[155] } -func (x IsisLspV4Prefix_OriginType_Enum) Number() protoreflect.EnumNumber { +func (x Bgpv6Metric_FsmState_Enum) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } -// Deprecated: Use IsisLspV4Prefix_OriginType_Enum.Descriptor instead. -func (IsisLspV4Prefix_OriginType_Enum) EnumDescriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{313, 1, 0} +// Deprecated: Use Bgpv6Metric_FsmState_Enum.Descriptor instead. +func (Bgpv6Metric_FsmState_Enum) EnumDescriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{326, 1, 0} } -type IsisLspExtendedV4Prefix_RedistributionType_Enum int32 +type IsisMetricsRequest_ColumnNames_Enum int32 const ( - IsisLspExtendedV4Prefix_RedistributionType_unspecified IsisLspExtendedV4Prefix_RedistributionType_Enum = 0 - IsisLspExtendedV4Prefix_RedistributionType_up IsisLspExtendedV4Prefix_RedistributionType_Enum = 1 - IsisLspExtendedV4Prefix_RedistributionType_down IsisLspExtendedV4Prefix_RedistributionType_Enum = 2 + IsisMetricsRequest_ColumnNames_unspecified IsisMetricsRequest_ColumnNames_Enum = 0 + IsisMetricsRequest_ColumnNames_l1_sessions_up IsisMetricsRequest_ColumnNames_Enum = 1 + IsisMetricsRequest_ColumnNames_l1_session_flap IsisMetricsRequest_ColumnNames_Enum = 2 + IsisMetricsRequest_ColumnNames_l1_database_size IsisMetricsRequest_ColumnNames_Enum = 3 + IsisMetricsRequest_ColumnNames_l1_broadcast_hellos_sent IsisMetricsRequest_ColumnNames_Enum = 4 + IsisMetricsRequest_ColumnNames_l1_broadcast_hellos_received IsisMetricsRequest_ColumnNames_Enum = 5 + IsisMetricsRequest_ColumnNames_l1_point_to_point_hellos_sent IsisMetricsRequest_ColumnNames_Enum = 6 + IsisMetricsRequest_ColumnNames_l1_point_to_point_hellos_received IsisMetricsRequest_ColumnNames_Enum = 7 + IsisMetricsRequest_ColumnNames_l1_psnp_sent IsisMetricsRequest_ColumnNames_Enum = 8 + IsisMetricsRequest_ColumnNames_l1_psnp_received IsisMetricsRequest_ColumnNames_Enum = 9 + IsisMetricsRequest_ColumnNames_l1_csnp_sent IsisMetricsRequest_ColumnNames_Enum = 10 + IsisMetricsRequest_ColumnNames_l1_csnp_received IsisMetricsRequest_ColumnNames_Enum = 11 + IsisMetricsRequest_ColumnNames_l1_lsp_sent IsisMetricsRequest_ColumnNames_Enum = 12 + IsisMetricsRequest_ColumnNames_l1_lsp_received IsisMetricsRequest_ColumnNames_Enum = 13 + IsisMetricsRequest_ColumnNames_l2_sessions_up IsisMetricsRequest_ColumnNames_Enum = 14 + IsisMetricsRequest_ColumnNames_l2_session_flap IsisMetricsRequest_ColumnNames_Enum = 15 + IsisMetricsRequest_ColumnNames_l2_database_size IsisMetricsRequest_ColumnNames_Enum = 16 + IsisMetricsRequest_ColumnNames_l2_broadcast_hellos_sent IsisMetricsRequest_ColumnNames_Enum = 17 + IsisMetricsRequest_ColumnNames_l2_broadcast_hellos_received IsisMetricsRequest_ColumnNames_Enum = 18 + IsisMetricsRequest_ColumnNames_l2_point_to_point_hellos_sent IsisMetricsRequest_ColumnNames_Enum = 19 + IsisMetricsRequest_ColumnNames_l2_point_to_point_hellos_received IsisMetricsRequest_ColumnNames_Enum = 20 + IsisMetricsRequest_ColumnNames_l2_psnp_sent IsisMetricsRequest_ColumnNames_Enum = 21 + IsisMetricsRequest_ColumnNames_l2_psnp_received IsisMetricsRequest_ColumnNames_Enum = 22 + IsisMetricsRequest_ColumnNames_l2_csnp_sent IsisMetricsRequest_ColumnNames_Enum = 23 + IsisMetricsRequest_ColumnNames_l2_csnp_received IsisMetricsRequest_ColumnNames_Enum = 24 + IsisMetricsRequest_ColumnNames_l2_lsp_sent IsisMetricsRequest_ColumnNames_Enum = 25 + IsisMetricsRequest_ColumnNames_l2_lsp_received IsisMetricsRequest_ColumnNames_Enum = 26 ) -// Enum value maps for IsisLspExtendedV4Prefix_RedistributionType_Enum. +// Enum value maps for IsisMetricsRequest_ColumnNames_Enum. var ( - IsisLspExtendedV4Prefix_RedistributionType_Enum_name = map[int32]string{ - 0: "unspecified", - 1: "up", - 2: "down", + IsisMetricsRequest_ColumnNames_Enum_name = map[int32]string{ + 0: "unspecified", + 1: "l1_sessions_up", + 2: "l1_session_flap", + 3: "l1_database_size", + 4: "l1_broadcast_hellos_sent", + 5: "l1_broadcast_hellos_received", + 6: "l1_point_to_point_hellos_sent", + 7: "l1_point_to_point_hellos_received", + 8: "l1_psnp_sent", + 9: "l1_psnp_received", + 10: "l1_csnp_sent", + 11: "l1_csnp_received", + 12: "l1_lsp_sent", + 13: "l1_lsp_received", + 14: "l2_sessions_up", + 15: "l2_session_flap", + 16: "l2_database_size", + 17: "l2_broadcast_hellos_sent", + 18: "l2_broadcast_hellos_received", + 19: "l2_point_to_point_hellos_sent", + 20: "l2_point_to_point_hellos_received", + 21: "l2_psnp_sent", + 22: "l2_psnp_received", + 23: "l2_csnp_sent", + 24: "l2_csnp_received", + 25: "l2_lsp_sent", + 26: "l2_lsp_received", } - IsisLspExtendedV4Prefix_RedistributionType_Enum_value = map[string]int32{ - "unspecified": 0, - "up": 1, - "down": 2, + IsisMetricsRequest_ColumnNames_Enum_value = map[string]int32{ + "unspecified": 0, + "l1_sessions_up": 1, + "l1_session_flap": 2, + "l1_database_size": 3, + "l1_broadcast_hellos_sent": 4, + "l1_broadcast_hellos_received": 5, + "l1_point_to_point_hellos_sent": 6, + "l1_point_to_point_hellos_received": 7, + "l1_psnp_sent": 8, + "l1_psnp_received": 9, + "l1_csnp_sent": 10, + "l1_csnp_received": 11, + "l1_lsp_sent": 12, + "l1_lsp_received": 13, + "l2_sessions_up": 14, + "l2_session_flap": 15, + "l2_database_size": 16, + "l2_broadcast_hellos_sent": 17, + "l2_broadcast_hellos_received": 18, + "l2_point_to_point_hellos_sent": 19, + "l2_point_to_point_hellos_received": 20, + "l2_psnp_sent": 21, + "l2_psnp_received": 22, + "l2_csnp_sent": 23, + "l2_csnp_received": 24, + "l2_lsp_sent": 25, + "l2_lsp_received": 26, } ) -func (x IsisLspExtendedV4Prefix_RedistributionType_Enum) Enum() *IsisLspExtendedV4Prefix_RedistributionType_Enum { - p := new(IsisLspExtendedV4Prefix_RedistributionType_Enum) +func (x IsisMetricsRequest_ColumnNames_Enum) Enum() *IsisMetricsRequest_ColumnNames_Enum { + p := new(IsisMetricsRequest_ColumnNames_Enum) *p = x return p } -func (x IsisLspExtendedV4Prefix_RedistributionType_Enum) String() string { +func (x IsisMetricsRequest_ColumnNames_Enum) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } -func (IsisLspExtendedV4Prefix_RedistributionType_Enum) Descriptor() protoreflect.EnumDescriptor { +func (IsisMetricsRequest_ColumnNames_Enum) Descriptor() protoreflect.EnumDescriptor { return file_otg_proto_enumTypes[156].Descriptor() } -func (IsisLspExtendedV4Prefix_RedistributionType_Enum) Type() protoreflect.EnumType { +func (IsisMetricsRequest_ColumnNames_Enum) Type() protoreflect.EnumType { return &file_otg_proto_enumTypes[156] } -func (x IsisLspExtendedV4Prefix_RedistributionType_Enum) Number() protoreflect.EnumNumber { +func (x IsisMetricsRequest_ColumnNames_Enum) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } -// Deprecated: Use IsisLspExtendedV4Prefix_RedistributionType_Enum.Descriptor instead. -func (IsisLspExtendedV4Prefix_RedistributionType_Enum) EnumDescriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{315, 0, 0} +// Deprecated: Use IsisMetricsRequest_ColumnNames_Enum.Descriptor instead. +func (IsisMetricsRequest_ColumnNames_Enum) EnumDescriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{327, 0, 0} } -type IsisLspV6Prefix_RedistributionType_Enum int32 +type LagMetricsRequest_ColumnNames_Enum int32 const ( - IsisLspV6Prefix_RedistributionType_unspecified IsisLspV6Prefix_RedistributionType_Enum = 0 - IsisLspV6Prefix_RedistributionType_up IsisLspV6Prefix_RedistributionType_Enum = 1 - IsisLspV6Prefix_RedistributionType_down IsisLspV6Prefix_RedistributionType_Enum = 2 + LagMetricsRequest_ColumnNames_unspecified LagMetricsRequest_ColumnNames_Enum = 0 + LagMetricsRequest_ColumnNames_oper_status LagMetricsRequest_ColumnNames_Enum = 1 + LagMetricsRequest_ColumnNames_member_ports_up LagMetricsRequest_ColumnNames_Enum = 2 + LagMetricsRequest_ColumnNames_frames_tx LagMetricsRequest_ColumnNames_Enum = 3 + LagMetricsRequest_ColumnNames_frames_rx LagMetricsRequest_ColumnNames_Enum = 4 + LagMetricsRequest_ColumnNames_bytes_tx LagMetricsRequest_ColumnNames_Enum = 5 + LagMetricsRequest_ColumnNames_bytes_rx LagMetricsRequest_ColumnNames_Enum = 6 + LagMetricsRequest_ColumnNames_frames_tx_rate LagMetricsRequest_ColumnNames_Enum = 7 + LagMetricsRequest_ColumnNames_frames_rx_rate LagMetricsRequest_ColumnNames_Enum = 8 + LagMetricsRequest_ColumnNames_bytes_tx_rate LagMetricsRequest_ColumnNames_Enum = 9 + LagMetricsRequest_ColumnNames_bytes_rx_rate LagMetricsRequest_ColumnNames_Enum = 10 ) -// Enum value maps for IsisLspV6Prefix_RedistributionType_Enum. +// Enum value maps for LagMetricsRequest_ColumnNames_Enum. var ( - IsisLspV6Prefix_RedistributionType_Enum_name = map[int32]string{ - 0: "unspecified", - 1: "up", - 2: "down", + LagMetricsRequest_ColumnNames_Enum_name = map[int32]string{ + 0: "unspecified", + 1: "oper_status", + 2: "member_ports_up", + 3: "frames_tx", + 4: "frames_rx", + 5: "bytes_tx", + 6: "bytes_rx", + 7: "frames_tx_rate", + 8: "frames_rx_rate", + 9: "bytes_tx_rate", + 10: "bytes_rx_rate", } - IsisLspV6Prefix_RedistributionType_Enum_value = map[string]int32{ - "unspecified": 0, - "up": 1, - "down": 2, + LagMetricsRequest_ColumnNames_Enum_value = map[string]int32{ + "unspecified": 0, + "oper_status": 1, + "member_ports_up": 2, + "frames_tx": 3, + "frames_rx": 4, + "bytes_tx": 5, + "bytes_rx": 6, + "frames_tx_rate": 7, + "frames_rx_rate": 8, + "bytes_tx_rate": 9, + "bytes_rx_rate": 10, } ) -func (x IsisLspV6Prefix_RedistributionType_Enum) Enum() *IsisLspV6Prefix_RedistributionType_Enum { - p := new(IsisLspV6Prefix_RedistributionType_Enum) +func (x LagMetricsRequest_ColumnNames_Enum) Enum() *LagMetricsRequest_ColumnNames_Enum { + p := new(LagMetricsRequest_ColumnNames_Enum) *p = x return p } -func (x IsisLspV6Prefix_RedistributionType_Enum) String() string { +func (x LagMetricsRequest_ColumnNames_Enum) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } -func (IsisLspV6Prefix_RedistributionType_Enum) Descriptor() protoreflect.EnumDescriptor { +func (LagMetricsRequest_ColumnNames_Enum) Descriptor() protoreflect.EnumDescriptor { return file_otg_proto_enumTypes[157].Descriptor() } -func (IsisLspV6Prefix_RedistributionType_Enum) Type() protoreflect.EnumType { +func (LagMetricsRequest_ColumnNames_Enum) Type() protoreflect.EnumType { return &file_otg_proto_enumTypes[157] } -func (x IsisLspV6Prefix_RedistributionType_Enum) Number() protoreflect.EnumNumber { +func (x LagMetricsRequest_ColumnNames_Enum) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } -// Deprecated: Use IsisLspV6Prefix_RedistributionType_Enum.Descriptor instead. -func (IsisLspV6Prefix_RedistributionType_Enum) EnumDescriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{317, 0, 0} +// Deprecated: Use LagMetricsRequest_ColumnNames_Enum.Descriptor instead. +func (LagMetricsRequest_ColumnNames_Enum) EnumDescriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{329, 0, 0} } -type IsisLspV6Prefix_OriginType_Enum int32 +type LagMetric_OperStatus_Enum int32 const ( - IsisLspV6Prefix_OriginType_unspecified IsisLspV6Prefix_OriginType_Enum = 0 - IsisLspV6Prefix_OriginType_internal IsisLspV6Prefix_OriginType_Enum = 1 - IsisLspV6Prefix_OriginType_external IsisLspV6Prefix_OriginType_Enum = 2 + LagMetric_OperStatus_unspecified LagMetric_OperStatus_Enum = 0 + LagMetric_OperStatus_up LagMetric_OperStatus_Enum = 1 + LagMetric_OperStatus_down LagMetric_OperStatus_Enum = 2 ) -// Enum value maps for IsisLspV6Prefix_OriginType_Enum. +// Enum value maps for LagMetric_OperStatus_Enum. var ( - IsisLspV6Prefix_OriginType_Enum_name = map[int32]string{ + LagMetric_OperStatus_Enum_name = map[int32]string{ 0: "unspecified", - 1: "internal", - 2: "external", + 1: "up", + 2: "down", } - IsisLspV6Prefix_OriginType_Enum_value = map[string]int32{ + LagMetric_OperStatus_Enum_value = map[string]int32{ "unspecified": 0, - "internal": 1, - "external": 2, + "up": 1, + "down": 2, } ) -func (x IsisLspV6Prefix_OriginType_Enum) Enum() *IsisLspV6Prefix_OriginType_Enum { - p := new(IsisLspV6Prefix_OriginType_Enum) +func (x LagMetric_OperStatus_Enum) Enum() *LagMetric_OperStatus_Enum { + p := new(LagMetric_OperStatus_Enum) *p = x return p } -func (x IsisLspV6Prefix_OriginType_Enum) String() string { +func (x LagMetric_OperStatus_Enum) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } -func (IsisLspV6Prefix_OriginType_Enum) Descriptor() protoreflect.EnumDescriptor { +func (LagMetric_OperStatus_Enum) Descriptor() protoreflect.EnumDescriptor { return file_otg_proto_enumTypes[158].Descriptor() } -func (IsisLspV6Prefix_OriginType_Enum) Type() protoreflect.EnumType { +func (LagMetric_OperStatus_Enum) Type() protoreflect.EnumType { return &file_otg_proto_enumTypes[158] } -func (x IsisLspV6Prefix_OriginType_Enum) Number() protoreflect.EnumNumber { +func (x LagMetric_OperStatus_Enum) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } -// Deprecated: Use IsisLspV6Prefix_OriginType_Enum.Descriptor instead. -func (IsisLspV6Prefix_OriginType_Enum) EnumDescriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{317, 1, 0} +// Deprecated: Use LagMetric_OperStatus_Enum.Descriptor instead. +func (LagMetric_OperStatus_Enum) EnumDescriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{330, 0, 0} } -type LldpNeighborsState_ChassisIdType_Enum int32 +type LacpMetricsRequest_ColumnNames_Enum int32 const ( - LldpNeighborsState_ChassisIdType_unspecified LldpNeighborsState_ChassisIdType_Enum = 0 - LldpNeighborsState_ChassisIdType_port_component LldpNeighborsState_ChassisIdType_Enum = 1 - LldpNeighborsState_ChassisIdType_network_address LldpNeighborsState_ChassisIdType_Enum = 2 - LldpNeighborsState_ChassisIdType_chassis_component LldpNeighborsState_ChassisIdType_Enum = 3 - LldpNeighborsState_ChassisIdType_mac_address LldpNeighborsState_ChassisIdType_Enum = 4 - LldpNeighborsState_ChassisIdType_interface_name LldpNeighborsState_ChassisIdType_Enum = 5 - LldpNeighborsState_ChassisIdType_local LldpNeighborsState_ChassisIdType_Enum = 6 - LldpNeighborsState_ChassisIdType_interface_alias LldpNeighborsState_ChassisIdType_Enum = 7 + LacpMetricsRequest_ColumnNames_unspecified LacpMetricsRequest_ColumnNames_Enum = 0 + LacpMetricsRequest_ColumnNames_lacp_packets_rx LacpMetricsRequest_ColumnNames_Enum = 1 + LacpMetricsRequest_ColumnNames_lacp_packets_tx LacpMetricsRequest_ColumnNames_Enum = 2 + LacpMetricsRequest_ColumnNames_lacp_rx_errors LacpMetricsRequest_ColumnNames_Enum = 3 + LacpMetricsRequest_ColumnNames_activity LacpMetricsRequest_ColumnNames_Enum = 4 + LacpMetricsRequest_ColumnNames_timeout LacpMetricsRequest_ColumnNames_Enum = 5 + LacpMetricsRequest_ColumnNames_synchronization LacpMetricsRequest_ColumnNames_Enum = 6 + LacpMetricsRequest_ColumnNames_aggregatable LacpMetricsRequest_ColumnNames_Enum = 7 + LacpMetricsRequest_ColumnNames_collecting LacpMetricsRequest_ColumnNames_Enum = 8 + LacpMetricsRequest_ColumnNames_distributing LacpMetricsRequest_ColumnNames_Enum = 9 + LacpMetricsRequest_ColumnNames_system_id LacpMetricsRequest_ColumnNames_Enum = 10 + LacpMetricsRequest_ColumnNames_oper_key LacpMetricsRequest_ColumnNames_Enum = 11 + LacpMetricsRequest_ColumnNames_partner_id LacpMetricsRequest_ColumnNames_Enum = 12 + LacpMetricsRequest_ColumnNames_partner_key LacpMetricsRequest_ColumnNames_Enum = 13 + LacpMetricsRequest_ColumnNames_port_num LacpMetricsRequest_ColumnNames_Enum = 14 + LacpMetricsRequest_ColumnNames_partner_port_num LacpMetricsRequest_ColumnNames_Enum = 15 ) -// Enum value maps for LldpNeighborsState_ChassisIdType_Enum. +// Enum value maps for LacpMetricsRequest_ColumnNames_Enum. var ( - LldpNeighborsState_ChassisIdType_Enum_name = map[int32]string{ - 0: "unspecified", - 1: "port_component", - 2: "network_address", - 3: "chassis_component", - 4: "mac_address", - 5: "interface_name", - 6: "local", - 7: "interface_alias", - } - LldpNeighborsState_ChassisIdType_Enum_value = map[string]int32{ - "unspecified": 0, - "port_component": 1, - "network_address": 2, - "chassis_component": 3, - "mac_address": 4, - "interface_name": 5, - "local": 6, - "interface_alias": 7, + LacpMetricsRequest_ColumnNames_Enum_name = map[int32]string{ + 0: "unspecified", + 1: "lacp_packets_rx", + 2: "lacp_packets_tx", + 3: "lacp_rx_errors", + 4: "activity", + 5: "timeout", + 6: "synchronization", + 7: "aggregatable", + 8: "collecting", + 9: "distributing", + 10: "system_id", + 11: "oper_key", + 12: "partner_id", + 13: "partner_key", + 14: "port_num", + 15: "partner_port_num", + } + LacpMetricsRequest_ColumnNames_Enum_value = map[string]int32{ + "unspecified": 0, + "lacp_packets_rx": 1, + "lacp_packets_tx": 2, + "lacp_rx_errors": 3, + "activity": 4, + "timeout": 5, + "synchronization": 6, + "aggregatable": 7, + "collecting": 8, + "distributing": 9, + "system_id": 10, + "oper_key": 11, + "partner_id": 12, + "partner_key": 13, + "port_num": 14, + "partner_port_num": 15, } ) -func (x LldpNeighborsState_ChassisIdType_Enum) Enum() *LldpNeighborsState_ChassisIdType_Enum { - p := new(LldpNeighborsState_ChassisIdType_Enum) +func (x LacpMetricsRequest_ColumnNames_Enum) Enum() *LacpMetricsRequest_ColumnNames_Enum { + p := new(LacpMetricsRequest_ColumnNames_Enum) *p = x return p } -func (x LldpNeighborsState_ChassisIdType_Enum) String() string { +func (x LacpMetricsRequest_ColumnNames_Enum) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } -func (LldpNeighborsState_ChassisIdType_Enum) Descriptor() protoreflect.EnumDescriptor { +func (LacpMetricsRequest_ColumnNames_Enum) Descriptor() protoreflect.EnumDescriptor { return file_otg_proto_enumTypes[159].Descriptor() } -func (LldpNeighborsState_ChassisIdType_Enum) Type() protoreflect.EnumType { +func (LacpMetricsRequest_ColumnNames_Enum) Type() protoreflect.EnumType { return &file_otg_proto_enumTypes[159] } -func (x LldpNeighborsState_ChassisIdType_Enum) Number() protoreflect.EnumNumber { +func (x LacpMetricsRequest_ColumnNames_Enum) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } -// Deprecated: Use LldpNeighborsState_ChassisIdType_Enum.Descriptor instead. -func (LldpNeighborsState_ChassisIdType_Enum) EnumDescriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{320, 0, 0} +// Deprecated: Use LacpMetricsRequest_ColumnNames_Enum.Descriptor instead. +func (LacpMetricsRequest_ColumnNames_Enum) EnumDescriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{331, 0, 0} } -type LldpNeighborsState_PortIdType_Enum int32 +type LacpMetric_Activity_Enum int32 const ( - LldpNeighborsState_PortIdType_unspecified LldpNeighborsState_PortIdType_Enum = 0 - LldpNeighborsState_PortIdType_port_component LldpNeighborsState_PortIdType_Enum = 1 - LldpNeighborsState_PortIdType_network_address LldpNeighborsState_PortIdType_Enum = 2 - LldpNeighborsState_PortIdType_agent_circuit_id LldpNeighborsState_PortIdType_Enum = 3 - LldpNeighborsState_PortIdType_mac_address LldpNeighborsState_PortIdType_Enum = 4 - LldpNeighborsState_PortIdType_interface_name LldpNeighborsState_PortIdType_Enum = 5 - LldpNeighborsState_PortIdType_local LldpNeighborsState_PortIdType_Enum = 6 - LldpNeighborsState_PortIdType_interface_alias LldpNeighborsState_PortIdType_Enum = 7 + LacpMetric_Activity_unspecified LacpMetric_Activity_Enum = 0 + LacpMetric_Activity_active LacpMetric_Activity_Enum = 1 + LacpMetric_Activity_passive LacpMetric_Activity_Enum = 2 ) -// Enum value maps for LldpNeighborsState_PortIdType_Enum. +// Enum value maps for LacpMetric_Activity_Enum. var ( - LldpNeighborsState_PortIdType_Enum_name = map[int32]string{ + LacpMetric_Activity_Enum_name = map[int32]string{ 0: "unspecified", - 1: "port_component", - 2: "network_address", - 3: "agent_circuit_id", - 4: "mac_address", - 5: "interface_name", - 6: "local", - 7: "interface_alias", + 1: "active", + 2: "passive", } - LldpNeighborsState_PortIdType_Enum_value = map[string]int32{ - "unspecified": 0, - "port_component": 1, - "network_address": 2, - "agent_circuit_id": 3, - "mac_address": 4, - "interface_name": 5, - "local": 6, - "interface_alias": 7, + LacpMetric_Activity_Enum_value = map[string]int32{ + "unspecified": 0, + "active": 1, + "passive": 2, } ) -func (x LldpNeighborsState_PortIdType_Enum) Enum() *LldpNeighborsState_PortIdType_Enum { - p := new(LldpNeighborsState_PortIdType_Enum) +func (x LacpMetric_Activity_Enum) Enum() *LacpMetric_Activity_Enum { + p := new(LacpMetric_Activity_Enum) *p = x return p } -func (x LldpNeighborsState_PortIdType_Enum) String() string { +func (x LacpMetric_Activity_Enum) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } -func (LldpNeighborsState_PortIdType_Enum) Descriptor() protoreflect.EnumDescriptor { +func (LacpMetric_Activity_Enum) Descriptor() protoreflect.EnumDescriptor { return file_otg_proto_enumTypes[160].Descriptor() } -func (LldpNeighborsState_PortIdType_Enum) Type() protoreflect.EnumType { +func (LacpMetric_Activity_Enum) Type() protoreflect.EnumType { return &file_otg_proto_enumTypes[160] } -func (x LldpNeighborsState_PortIdType_Enum) Number() protoreflect.EnumNumber { +func (x LacpMetric_Activity_Enum) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } -// Deprecated: Use LldpNeighborsState_PortIdType_Enum.Descriptor instead. -func (LldpNeighborsState_PortIdType_Enum) EnumDescriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{320, 1, 0} +// Deprecated: Use LacpMetric_Activity_Enum.Descriptor instead. +func (LacpMetric_Activity_Enum) EnumDescriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{332, 0, 0} } -type LldpCapabilityState_CapabilityName_Enum int32 +type LacpMetric_Timeout_Enum int32 const ( - LldpCapabilityState_CapabilityName_unspecified LldpCapabilityState_CapabilityName_Enum = 0 - LldpCapabilityState_CapabilityName_mac_bridge LldpCapabilityState_CapabilityName_Enum = 1 - LldpCapabilityState_CapabilityName_two_port_mac_relay LldpCapabilityState_CapabilityName_Enum = 2 - LldpCapabilityState_CapabilityName_repeater LldpCapabilityState_CapabilityName_Enum = 3 - LldpCapabilityState_CapabilityName_docsis_cable_device LldpCapabilityState_CapabilityName_Enum = 4 - LldpCapabilityState_CapabilityName_s_vlan LldpCapabilityState_CapabilityName_Enum = 5 - LldpCapabilityState_CapabilityName_telephone LldpCapabilityState_CapabilityName_Enum = 6 - LldpCapabilityState_CapabilityName_other LldpCapabilityState_CapabilityName_Enum = 7 - LldpCapabilityState_CapabilityName_router LldpCapabilityState_CapabilityName_Enum = 8 - LldpCapabilityState_CapabilityName_c_vlan LldpCapabilityState_CapabilityName_Enum = 9 - LldpCapabilityState_CapabilityName_station_only LldpCapabilityState_CapabilityName_Enum = 10 - LldpCapabilityState_CapabilityName_wlan_access_point LldpCapabilityState_CapabilityName_Enum = 11 + LacpMetric_Timeout_unspecified LacpMetric_Timeout_Enum = 0 + LacpMetric_Timeout_short LacpMetric_Timeout_Enum = 1 + LacpMetric_Timeout_long LacpMetric_Timeout_Enum = 2 ) -// Enum value maps for LldpCapabilityState_CapabilityName_Enum. +// Enum value maps for LacpMetric_Timeout_Enum. var ( - LldpCapabilityState_CapabilityName_Enum_name = map[int32]string{ - 0: "unspecified", - 1: "mac_bridge", - 2: "two_port_mac_relay", - 3: "repeater", - 4: "docsis_cable_device", - 5: "s_vlan", - 6: "telephone", - 7: "other", - 8: "router", - 9: "c_vlan", - 10: "station_only", - 11: "wlan_access_point", + LacpMetric_Timeout_Enum_name = map[int32]string{ + 0: "unspecified", + 1: "short", + 2: "long", } - LldpCapabilityState_CapabilityName_Enum_value = map[string]int32{ - "unspecified": 0, - "mac_bridge": 1, - "two_port_mac_relay": 2, - "repeater": 3, - "docsis_cable_device": 4, - "s_vlan": 5, - "telephone": 6, - "other": 7, - "router": 8, - "c_vlan": 9, - "station_only": 10, - "wlan_access_point": 11, + LacpMetric_Timeout_Enum_value = map[string]int32{ + "unspecified": 0, + "short": 1, + "long": 2, } ) -func (x LldpCapabilityState_CapabilityName_Enum) Enum() *LldpCapabilityState_CapabilityName_Enum { - p := new(LldpCapabilityState_CapabilityName_Enum) +func (x LacpMetric_Timeout_Enum) Enum() *LacpMetric_Timeout_Enum { + p := new(LacpMetric_Timeout_Enum) *p = x return p } -func (x LldpCapabilityState_CapabilityName_Enum) String() string { +func (x LacpMetric_Timeout_Enum) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } -func (LldpCapabilityState_CapabilityName_Enum) Descriptor() protoreflect.EnumDescriptor { +func (LacpMetric_Timeout_Enum) Descriptor() protoreflect.EnumDescriptor { return file_otg_proto_enumTypes[161].Descriptor() } -func (LldpCapabilityState_CapabilityName_Enum) Type() protoreflect.EnumType { +func (LacpMetric_Timeout_Enum) Type() protoreflect.EnumType { return &file_otg_proto_enumTypes[161] } -func (x LldpCapabilityState_CapabilityName_Enum) Number() protoreflect.EnumNumber { +func (x LacpMetric_Timeout_Enum) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } -// Deprecated: Use LldpCapabilityState_CapabilityName_Enum.Descriptor instead. -func (LldpCapabilityState_CapabilityName_Enum) EnumDescriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{322, 0, 0} +// Deprecated: Use LacpMetric_Timeout_Enum.Descriptor instead. +func (LacpMetric_Timeout_Enum) EnumDescriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{332, 1, 0} } -type RsvpLspState_SessionStatus_Enum int32 +type LacpMetric_Synchronization_Enum int32 const ( - RsvpLspState_SessionStatus_unspecified RsvpLspState_SessionStatus_Enum = 0 - RsvpLspState_SessionStatus_up RsvpLspState_SessionStatus_Enum = 1 - RsvpLspState_SessionStatus_down RsvpLspState_SessionStatus_Enum = 2 + LacpMetric_Synchronization_unspecified LacpMetric_Synchronization_Enum = 0 + LacpMetric_Synchronization_in_sync LacpMetric_Synchronization_Enum = 1 + LacpMetric_Synchronization_out_sync LacpMetric_Synchronization_Enum = 2 ) -// Enum value maps for RsvpLspState_SessionStatus_Enum. +// Enum value maps for LacpMetric_Synchronization_Enum. var ( - RsvpLspState_SessionStatus_Enum_name = map[int32]string{ + LacpMetric_Synchronization_Enum_name = map[int32]string{ 0: "unspecified", - 1: "up", - 2: "down", + 1: "in_sync", + 2: "out_sync", } - RsvpLspState_SessionStatus_Enum_value = map[string]int32{ + LacpMetric_Synchronization_Enum_value = map[string]int32{ "unspecified": 0, - "up": 1, - "down": 2, + "in_sync": 1, + "out_sync": 2, } ) -func (x RsvpLspState_SessionStatus_Enum) Enum() *RsvpLspState_SessionStatus_Enum { - p := new(RsvpLspState_SessionStatus_Enum) +func (x LacpMetric_Synchronization_Enum) Enum() *LacpMetric_Synchronization_Enum { + p := new(LacpMetric_Synchronization_Enum) *p = x return p } -func (x RsvpLspState_SessionStatus_Enum) String() string { +func (x LacpMetric_Synchronization_Enum) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } -func (RsvpLspState_SessionStatus_Enum) Descriptor() protoreflect.EnumDescriptor { +func (LacpMetric_Synchronization_Enum) Descriptor() protoreflect.EnumDescriptor { return file_otg_proto_enumTypes[162].Descriptor() } -func (RsvpLspState_SessionStatus_Enum) Type() protoreflect.EnumType { +func (LacpMetric_Synchronization_Enum) Type() protoreflect.EnumType { return &file_otg_proto_enumTypes[162] } -func (x RsvpLspState_SessionStatus_Enum) Number() protoreflect.EnumNumber { +func (x LacpMetric_Synchronization_Enum) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } -// Deprecated: Use RsvpLspState_SessionStatus_Enum.Descriptor instead. -func (RsvpLspState_SessionStatus_Enum) EnumDescriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{326, 0, 0} +// Deprecated: Use LacpMetric_Synchronization_Enum.Descriptor instead. +func (LacpMetric_Synchronization_Enum) EnumDescriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{332, 2, 0} } -type RsvpLspState_LastFlapReason_Enum int32 +type LldpMetricsRequest_ColumnNames_Enum int32 const ( - RsvpLspState_LastFlapReason_unspecified RsvpLspState_LastFlapReason_Enum = 0 - RsvpLspState_LastFlapReason_resv_tear RsvpLspState_LastFlapReason_Enum = 1 - RsvpLspState_LastFlapReason_path_tear RsvpLspState_LastFlapReason_Enum = 2 - RsvpLspState_LastFlapReason_path_timeout RsvpLspState_LastFlapReason_Enum = 3 + LldpMetricsRequest_ColumnNames_unspecified LldpMetricsRequest_ColumnNames_Enum = 0 + LldpMetricsRequest_ColumnNames_frames_rx LldpMetricsRequest_ColumnNames_Enum = 1 + LldpMetricsRequest_ColumnNames_frames_tx LldpMetricsRequest_ColumnNames_Enum = 2 + LldpMetricsRequest_ColumnNames_frames_error_rx LldpMetricsRequest_ColumnNames_Enum = 3 + LldpMetricsRequest_ColumnNames_frames_discard LldpMetricsRequest_ColumnNames_Enum = 4 + LldpMetricsRequest_ColumnNames_tlvs_discard LldpMetricsRequest_ColumnNames_Enum = 5 + LldpMetricsRequest_ColumnNames_tlvs_unknown LldpMetricsRequest_ColumnNames_Enum = 6 ) -// Enum value maps for RsvpLspState_LastFlapReason_Enum. +// Enum value maps for LldpMetricsRequest_ColumnNames_Enum. var ( - RsvpLspState_LastFlapReason_Enum_name = map[int32]string{ + LldpMetricsRequest_ColumnNames_Enum_name = map[int32]string{ 0: "unspecified", - 1: "resv_tear", - 2: "path_tear", - 3: "path_timeout", + 1: "frames_rx", + 2: "frames_tx", + 3: "frames_error_rx", + 4: "frames_discard", + 5: "tlvs_discard", + 6: "tlvs_unknown", } - RsvpLspState_LastFlapReason_Enum_value = map[string]int32{ - "unspecified": 0, - "resv_tear": 1, - "path_tear": 2, - "path_timeout": 3, + LldpMetricsRequest_ColumnNames_Enum_value = map[string]int32{ + "unspecified": 0, + "frames_rx": 1, + "frames_tx": 2, + "frames_error_rx": 3, + "frames_discard": 4, + "tlvs_discard": 5, + "tlvs_unknown": 6, } ) -func (x RsvpLspState_LastFlapReason_Enum) Enum() *RsvpLspState_LastFlapReason_Enum { - p := new(RsvpLspState_LastFlapReason_Enum) +func (x LldpMetricsRequest_ColumnNames_Enum) Enum() *LldpMetricsRequest_ColumnNames_Enum { + p := new(LldpMetricsRequest_ColumnNames_Enum) *p = x return p } -func (x RsvpLspState_LastFlapReason_Enum) String() string { +func (x LldpMetricsRequest_ColumnNames_Enum) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } -func (RsvpLspState_LastFlapReason_Enum) Descriptor() protoreflect.EnumDescriptor { +func (LldpMetricsRequest_ColumnNames_Enum) Descriptor() protoreflect.EnumDescriptor { return file_otg_proto_enumTypes[163].Descriptor() } -func (RsvpLspState_LastFlapReason_Enum) Type() protoreflect.EnumType { +func (LldpMetricsRequest_ColumnNames_Enum) Type() protoreflect.EnumType { return &file_otg_proto_enumTypes[163] } -func (x RsvpLspState_LastFlapReason_Enum) Number() protoreflect.EnumNumber { +func (x LldpMetricsRequest_ColumnNames_Enum) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } -// Deprecated: Use RsvpLspState_LastFlapReason_Enum.Descriptor instead. -func (RsvpLspState_LastFlapReason_Enum) EnumDescriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{326, 1, 0} +// Deprecated: Use LldpMetricsRequest_ColumnNames_Enum.Descriptor instead. +func (LldpMetricsRequest_ColumnNames_Enum) EnumDescriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{333, 0, 0} } -type RsvpLspIpv4Ero_Type_Enum int32 +type RsvpMetricsRequest_ColumnNames_Enum int32 const ( - RsvpLspIpv4Ero_Type_unspecified RsvpLspIpv4Ero_Type_Enum = 0 - RsvpLspIpv4Ero_Type_ipv4 RsvpLspIpv4Ero_Type_Enum = 1 - RsvpLspIpv4Ero_Type_ipv6 RsvpLspIpv4Ero_Type_Enum = 2 - RsvpLspIpv4Ero_Type_asn RsvpLspIpv4Ero_Type_Enum = 3 - RsvpLspIpv4Ero_Type_asn4 RsvpLspIpv4Ero_Type_Enum = 4 - RsvpLspIpv4Ero_Type_label RsvpLspIpv4Ero_Type_Enum = 5 - RsvpLspIpv4Ero_Type_unnumbered_interface RsvpLspIpv4Ero_Type_Enum = 6 + RsvpMetricsRequest_ColumnNames_unspecified RsvpMetricsRequest_ColumnNames_Enum = 0 + RsvpMetricsRequest_ColumnNames_ingress_p2p_lsps_configured RsvpMetricsRequest_ColumnNames_Enum = 1 + RsvpMetricsRequest_ColumnNames_ingress_p2p_lsps_up RsvpMetricsRequest_ColumnNames_Enum = 2 + RsvpMetricsRequest_ColumnNames_egress_p2p_lsps_up RsvpMetricsRequest_ColumnNames_Enum = 3 + RsvpMetricsRequest_ColumnNames_lsp_flap_count RsvpMetricsRequest_ColumnNames_Enum = 4 + RsvpMetricsRequest_ColumnNames_paths_tx RsvpMetricsRequest_ColumnNames_Enum = 5 + RsvpMetricsRequest_ColumnNames_paths_rx RsvpMetricsRequest_ColumnNames_Enum = 6 + RsvpMetricsRequest_ColumnNames_resvs_tx RsvpMetricsRequest_ColumnNames_Enum = 7 + RsvpMetricsRequest_ColumnNames_resvs_rx RsvpMetricsRequest_ColumnNames_Enum = 8 + RsvpMetricsRequest_ColumnNames_path_tears_tx RsvpMetricsRequest_ColumnNames_Enum = 9 + RsvpMetricsRequest_ColumnNames_path_tears_rx RsvpMetricsRequest_ColumnNames_Enum = 10 + RsvpMetricsRequest_ColumnNames_resv_tears_tx RsvpMetricsRequest_ColumnNames_Enum = 11 + RsvpMetricsRequest_ColumnNames_resv_tears_rx RsvpMetricsRequest_ColumnNames_Enum = 12 + RsvpMetricsRequest_ColumnNames_path_errors_tx RsvpMetricsRequest_ColumnNames_Enum = 13 + RsvpMetricsRequest_ColumnNames_path_errors_rx RsvpMetricsRequest_ColumnNames_Enum = 14 + RsvpMetricsRequest_ColumnNames_resv_errors_tx RsvpMetricsRequest_ColumnNames_Enum = 15 + RsvpMetricsRequest_ColumnNames_resv_errors_rx RsvpMetricsRequest_ColumnNames_Enum = 16 + RsvpMetricsRequest_ColumnNames_resv_conf_tx RsvpMetricsRequest_ColumnNames_Enum = 17 + RsvpMetricsRequest_ColumnNames_resv_conf_rx RsvpMetricsRequest_ColumnNames_Enum = 18 + RsvpMetricsRequest_ColumnNames_hellos_tx RsvpMetricsRequest_ColumnNames_Enum = 19 + RsvpMetricsRequest_ColumnNames_hellos_rx RsvpMetricsRequest_ColumnNames_Enum = 20 + RsvpMetricsRequest_ColumnNames_acks_tx RsvpMetricsRequest_ColumnNames_Enum = 21 + RsvpMetricsRequest_ColumnNames_acks_rx RsvpMetricsRequest_ColumnNames_Enum = 22 + RsvpMetricsRequest_ColumnNames_nacks_tx RsvpMetricsRequest_ColumnNames_Enum = 23 + RsvpMetricsRequest_ColumnNames_nacks_rx RsvpMetricsRequest_ColumnNames_Enum = 24 + RsvpMetricsRequest_ColumnNames_srefresh_tx RsvpMetricsRequest_ColumnNames_Enum = 25 + RsvpMetricsRequest_ColumnNames_srefresh_rx RsvpMetricsRequest_ColumnNames_Enum = 26 + RsvpMetricsRequest_ColumnNames_bundle_tx RsvpMetricsRequest_ColumnNames_Enum = 27 + RsvpMetricsRequest_ColumnNames_bundle_rx RsvpMetricsRequest_ColumnNames_Enum = 28 + RsvpMetricsRequest_ColumnNames_path_reevaluation_request_tx RsvpMetricsRequest_ColumnNames_Enum = 29 + RsvpMetricsRequest_ColumnNames_path_reoptimizations RsvpMetricsRequest_ColumnNames_Enum = 30 ) -// Enum value maps for RsvpLspIpv4Ero_Type_Enum. +// Enum value maps for RsvpMetricsRequest_ColumnNames_Enum. var ( - RsvpLspIpv4Ero_Type_Enum_name = map[int32]string{ - 0: "unspecified", - 1: "ipv4", - 2: "ipv6", - 3: "asn", - 4: "asn4", - 5: "label", - 6: "unnumbered_interface", + RsvpMetricsRequest_ColumnNames_Enum_name = map[int32]string{ + 0: "unspecified", + 1: "ingress_p2p_lsps_configured", + 2: "ingress_p2p_lsps_up", + 3: "egress_p2p_lsps_up", + 4: "lsp_flap_count", + 5: "paths_tx", + 6: "paths_rx", + 7: "resvs_tx", + 8: "resvs_rx", + 9: "path_tears_tx", + 10: "path_tears_rx", + 11: "resv_tears_tx", + 12: "resv_tears_rx", + 13: "path_errors_tx", + 14: "path_errors_rx", + 15: "resv_errors_tx", + 16: "resv_errors_rx", + 17: "resv_conf_tx", + 18: "resv_conf_rx", + 19: "hellos_tx", + 20: "hellos_rx", + 21: "acks_tx", + 22: "acks_rx", + 23: "nacks_tx", + 24: "nacks_rx", + 25: "srefresh_tx", + 26: "srefresh_rx", + 27: "bundle_tx", + 28: "bundle_rx", + 29: "path_reevaluation_request_tx", + 30: "path_reoptimizations", } - RsvpLspIpv4Ero_Type_Enum_value = map[string]int32{ - "unspecified": 0, - "ipv4": 1, - "ipv6": 2, - "asn": 3, - "asn4": 4, - "label": 5, - "unnumbered_interface": 6, + RsvpMetricsRequest_ColumnNames_Enum_value = map[string]int32{ + "unspecified": 0, + "ingress_p2p_lsps_configured": 1, + "ingress_p2p_lsps_up": 2, + "egress_p2p_lsps_up": 3, + "lsp_flap_count": 4, + "paths_tx": 5, + "paths_rx": 6, + "resvs_tx": 7, + "resvs_rx": 8, + "path_tears_tx": 9, + "path_tears_rx": 10, + "resv_tears_tx": 11, + "resv_tears_rx": 12, + "path_errors_tx": 13, + "path_errors_rx": 14, + "resv_errors_tx": 15, + "resv_errors_rx": 16, + "resv_conf_tx": 17, + "resv_conf_rx": 18, + "hellos_tx": 19, + "hellos_rx": 20, + "acks_tx": 21, + "acks_rx": 22, + "nacks_tx": 23, + "nacks_rx": 24, + "srefresh_tx": 25, + "srefresh_rx": 26, + "bundle_tx": 27, + "bundle_rx": 28, + "path_reevaluation_request_tx": 29, + "path_reoptimizations": 30, } ) -func (x RsvpLspIpv4Ero_Type_Enum) Enum() *RsvpLspIpv4Ero_Type_Enum { - p := new(RsvpLspIpv4Ero_Type_Enum) +func (x RsvpMetricsRequest_ColumnNames_Enum) Enum() *RsvpMetricsRequest_ColumnNames_Enum { + p := new(RsvpMetricsRequest_ColumnNames_Enum) *p = x return p } -func (x RsvpLspIpv4Ero_Type_Enum) String() string { +func (x RsvpMetricsRequest_ColumnNames_Enum) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } -func (RsvpLspIpv4Ero_Type_Enum) Descriptor() protoreflect.EnumDescriptor { +func (RsvpMetricsRequest_ColumnNames_Enum) Descriptor() protoreflect.EnumDescriptor { return file_otg_proto_enumTypes[164].Descriptor() } -func (RsvpLspIpv4Ero_Type_Enum) Type() protoreflect.EnumType { +func (RsvpMetricsRequest_ColumnNames_Enum) Type() protoreflect.EnumType { return &file_otg_proto_enumTypes[164] } -func (x RsvpLspIpv4Ero_Type_Enum) Number() protoreflect.EnumNumber { +func (x RsvpMetricsRequest_ColumnNames_Enum) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } -// Deprecated: Use RsvpLspIpv4Ero_Type_Enum.Descriptor instead. -func (RsvpLspIpv4Ero_Type_Enum) EnumDescriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{328, 0, 0} +// Deprecated: Use RsvpMetricsRequest_ColumnNames_Enum.Descriptor instead. +func (RsvpMetricsRequest_ColumnNames_Enum) EnumDescriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{335, 0, 0} } -type PatternFlowEthernetDst_Choice_Enum int32 +type StatesRequest_Choice_Enum int32 const ( - PatternFlowEthernetDst_Choice_unspecified PatternFlowEthernetDst_Choice_Enum = 0 - PatternFlowEthernetDst_Choice_value PatternFlowEthernetDst_Choice_Enum = 2 - PatternFlowEthernetDst_Choice_values PatternFlowEthernetDst_Choice_Enum = 3 - PatternFlowEthernetDst_Choice_auto PatternFlowEthernetDst_Choice_Enum = 1 - PatternFlowEthernetDst_Choice_increment PatternFlowEthernetDst_Choice_Enum = 4 - PatternFlowEthernetDst_Choice_decrement PatternFlowEthernetDst_Choice_Enum = 5 + StatesRequest_Choice_unspecified StatesRequest_Choice_Enum = 0 + StatesRequest_Choice_ipv4_neighbors StatesRequest_Choice_Enum = 1 + StatesRequest_Choice_ipv6_neighbors StatesRequest_Choice_Enum = 2 + StatesRequest_Choice_bgp_prefixes StatesRequest_Choice_Enum = 3 + StatesRequest_Choice_isis_lsps StatesRequest_Choice_Enum = 4 + StatesRequest_Choice_lldp_neighbors StatesRequest_Choice_Enum = 5 + StatesRequest_Choice_rsvp_lsps StatesRequest_Choice_Enum = 6 ) -// Enum value maps for PatternFlowEthernetDst_Choice_Enum. +// Enum value maps for StatesRequest_Choice_Enum. var ( - PatternFlowEthernetDst_Choice_Enum_name = map[int32]string{ + StatesRequest_Choice_Enum_name = map[int32]string{ 0: "unspecified", - 2: "value", - 3: "values", - 1: "auto", - 4: "increment", - 5: "decrement", + 1: "ipv4_neighbors", + 2: "ipv6_neighbors", + 3: "bgp_prefixes", + 4: "isis_lsps", + 5: "lldp_neighbors", + 6: "rsvp_lsps", } - PatternFlowEthernetDst_Choice_Enum_value = map[string]int32{ - "unspecified": 0, - "value": 2, - "values": 3, - "auto": 1, - "increment": 4, - "decrement": 5, + StatesRequest_Choice_Enum_value = map[string]int32{ + "unspecified": 0, + "ipv4_neighbors": 1, + "ipv6_neighbors": 2, + "bgp_prefixes": 3, + "isis_lsps": 4, + "lldp_neighbors": 5, + "rsvp_lsps": 6, } ) -func (x PatternFlowEthernetDst_Choice_Enum) Enum() *PatternFlowEthernetDst_Choice_Enum { - p := new(PatternFlowEthernetDst_Choice_Enum) +func (x StatesRequest_Choice_Enum) Enum() *StatesRequest_Choice_Enum { + p := new(StatesRequest_Choice_Enum) *p = x return p } -func (x PatternFlowEthernetDst_Choice_Enum) String() string { +func (x StatesRequest_Choice_Enum) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } -func (PatternFlowEthernetDst_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { +func (StatesRequest_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { return file_otg_proto_enumTypes[165].Descriptor() } -func (PatternFlowEthernetDst_Choice_Enum) Type() protoreflect.EnumType { +func (StatesRequest_Choice_Enum) Type() protoreflect.EnumType { return &file_otg_proto_enumTypes[165] } -func (x PatternFlowEthernetDst_Choice_Enum) Number() protoreflect.EnumNumber { +func (x StatesRequest_Choice_Enum) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } -// Deprecated: Use PatternFlowEthernetDst_Choice_Enum.Descriptor instead. -func (PatternFlowEthernetDst_Choice_Enum) EnumDescriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{332, 0, 0} +// Deprecated: Use StatesRequest_Choice_Enum.Descriptor instead. +func (StatesRequest_Choice_Enum) EnumDescriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{337, 0, 0} } -type PatternFlowEthernetSrc_Choice_Enum int32 +type StatesResponse_Choice_Enum int32 const ( - PatternFlowEthernetSrc_Choice_unspecified PatternFlowEthernetSrc_Choice_Enum = 0 - PatternFlowEthernetSrc_Choice_value PatternFlowEthernetSrc_Choice_Enum = 2 - PatternFlowEthernetSrc_Choice_values PatternFlowEthernetSrc_Choice_Enum = 3 - PatternFlowEthernetSrc_Choice_increment PatternFlowEthernetSrc_Choice_Enum = 4 - PatternFlowEthernetSrc_Choice_decrement PatternFlowEthernetSrc_Choice_Enum = 5 + StatesResponse_Choice_unspecified StatesResponse_Choice_Enum = 0 + StatesResponse_Choice_ipv4_neighbors StatesResponse_Choice_Enum = 1 + StatesResponse_Choice_ipv6_neighbors StatesResponse_Choice_Enum = 2 + StatesResponse_Choice_bgp_prefixes StatesResponse_Choice_Enum = 3 + StatesResponse_Choice_isis_lsps StatesResponse_Choice_Enum = 4 + StatesResponse_Choice_lldp_neighbors StatesResponse_Choice_Enum = 5 + StatesResponse_Choice_rsvp_lsps StatesResponse_Choice_Enum = 6 ) -// Enum value maps for PatternFlowEthernetSrc_Choice_Enum. +// Enum value maps for StatesResponse_Choice_Enum. var ( - PatternFlowEthernetSrc_Choice_Enum_name = map[int32]string{ + StatesResponse_Choice_Enum_name = map[int32]string{ 0: "unspecified", - 2: "value", - 3: "values", - 4: "increment", - 5: "decrement", + 1: "ipv4_neighbors", + 2: "ipv6_neighbors", + 3: "bgp_prefixes", + 4: "isis_lsps", + 5: "lldp_neighbors", + 6: "rsvp_lsps", } - PatternFlowEthernetSrc_Choice_Enum_value = map[string]int32{ - "unspecified": 0, - "value": 2, - "values": 3, - "increment": 4, - "decrement": 5, + StatesResponse_Choice_Enum_value = map[string]int32{ + "unspecified": 0, + "ipv4_neighbors": 1, + "ipv6_neighbors": 2, + "bgp_prefixes": 3, + "isis_lsps": 4, + "lldp_neighbors": 5, + "rsvp_lsps": 6, } ) -func (x PatternFlowEthernetSrc_Choice_Enum) Enum() *PatternFlowEthernetSrc_Choice_Enum { - p := new(PatternFlowEthernetSrc_Choice_Enum) +func (x StatesResponse_Choice_Enum) Enum() *StatesResponse_Choice_Enum { + p := new(StatesResponse_Choice_Enum) *p = x return p } -func (x PatternFlowEthernetSrc_Choice_Enum) String() string { +func (x StatesResponse_Choice_Enum) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } -func (PatternFlowEthernetSrc_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { +func (StatesResponse_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { return file_otg_proto_enumTypes[166].Descriptor() } -func (PatternFlowEthernetSrc_Choice_Enum) Type() protoreflect.EnumType { +func (StatesResponse_Choice_Enum) Type() protoreflect.EnumType { return &file_otg_proto_enumTypes[166] } -func (x PatternFlowEthernetSrc_Choice_Enum) Number() protoreflect.EnumNumber { +func (x StatesResponse_Choice_Enum) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } -// Deprecated: Use PatternFlowEthernetSrc_Choice_Enum.Descriptor instead. -func (PatternFlowEthernetSrc_Choice_Enum) EnumDescriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{335, 0, 0} +// Deprecated: Use StatesResponse_Choice_Enum.Descriptor instead. +func (StatesResponse_Choice_Enum) EnumDescriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{338, 0, 0} } -type PatternFlowEthernetEtherType_Choice_Enum int32 +type BgpPrefixStateRequest_PrefixFilters_Enum int32 const ( - PatternFlowEthernetEtherType_Choice_unspecified PatternFlowEthernetEtherType_Choice_Enum = 0 - PatternFlowEthernetEtherType_Choice_value PatternFlowEthernetEtherType_Choice_Enum = 2 - PatternFlowEthernetEtherType_Choice_values PatternFlowEthernetEtherType_Choice_Enum = 3 - PatternFlowEthernetEtherType_Choice_auto PatternFlowEthernetEtherType_Choice_Enum = 1 - PatternFlowEthernetEtherType_Choice_increment PatternFlowEthernetEtherType_Choice_Enum = 4 - PatternFlowEthernetEtherType_Choice_decrement PatternFlowEthernetEtherType_Choice_Enum = 5 + BgpPrefixStateRequest_PrefixFilters_unspecified BgpPrefixStateRequest_PrefixFilters_Enum = 0 + BgpPrefixStateRequest_PrefixFilters_ipv4_unicast BgpPrefixStateRequest_PrefixFilters_Enum = 1 + BgpPrefixStateRequest_PrefixFilters_ipv6_unicast BgpPrefixStateRequest_PrefixFilters_Enum = 2 ) -// Enum value maps for PatternFlowEthernetEtherType_Choice_Enum. +// Enum value maps for BgpPrefixStateRequest_PrefixFilters_Enum. var ( - PatternFlowEthernetEtherType_Choice_Enum_name = map[int32]string{ + BgpPrefixStateRequest_PrefixFilters_Enum_name = map[int32]string{ 0: "unspecified", - 2: "value", - 3: "values", - 1: "auto", - 4: "increment", - 5: "decrement", + 1: "ipv4_unicast", + 2: "ipv6_unicast", } - PatternFlowEthernetEtherType_Choice_Enum_value = map[string]int32{ - "unspecified": 0, - "value": 2, - "values": 3, - "auto": 1, - "increment": 4, - "decrement": 5, + BgpPrefixStateRequest_PrefixFilters_Enum_value = map[string]int32{ + "unspecified": 0, + "ipv4_unicast": 1, + "ipv6_unicast": 2, } ) -func (x PatternFlowEthernetEtherType_Choice_Enum) Enum() *PatternFlowEthernetEtherType_Choice_Enum { - p := new(PatternFlowEthernetEtherType_Choice_Enum) +func (x BgpPrefixStateRequest_PrefixFilters_Enum) Enum() *BgpPrefixStateRequest_PrefixFilters_Enum { + p := new(BgpPrefixStateRequest_PrefixFilters_Enum) *p = x return p } -func (x PatternFlowEthernetEtherType_Choice_Enum) String() string { +func (x BgpPrefixStateRequest_PrefixFilters_Enum) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } -func (PatternFlowEthernetEtherType_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { +func (BgpPrefixStateRequest_PrefixFilters_Enum) Descriptor() protoreflect.EnumDescriptor { return file_otg_proto_enumTypes[167].Descriptor() } -func (PatternFlowEthernetEtherType_Choice_Enum) Type() protoreflect.EnumType { +func (BgpPrefixStateRequest_PrefixFilters_Enum) Type() protoreflect.EnumType { return &file_otg_proto_enumTypes[167] } -func (x PatternFlowEthernetEtherType_Choice_Enum) Number() protoreflect.EnumNumber { +func (x BgpPrefixStateRequest_PrefixFilters_Enum) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } -// Deprecated: Use PatternFlowEthernetEtherType_Choice_Enum.Descriptor instead. -func (PatternFlowEthernetEtherType_Choice_Enum) EnumDescriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{338, 0, 0} +// Deprecated: Use BgpPrefixStateRequest_PrefixFilters_Enum.Descriptor instead. +func (BgpPrefixStateRequest_PrefixFilters_Enum) EnumDescriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{343, 0, 0} } -type PatternFlowEthernetPfcQueue_Choice_Enum int32 +type BgpPrefixIpv4UnicastFilter_Origin_Enum int32 const ( - PatternFlowEthernetPfcQueue_Choice_unspecified PatternFlowEthernetPfcQueue_Choice_Enum = 0 - PatternFlowEthernetPfcQueue_Choice_value PatternFlowEthernetPfcQueue_Choice_Enum = 2 - PatternFlowEthernetPfcQueue_Choice_values PatternFlowEthernetPfcQueue_Choice_Enum = 3 - PatternFlowEthernetPfcQueue_Choice_increment PatternFlowEthernetPfcQueue_Choice_Enum = 4 - PatternFlowEthernetPfcQueue_Choice_decrement PatternFlowEthernetPfcQueue_Choice_Enum = 5 + BgpPrefixIpv4UnicastFilter_Origin_unspecified BgpPrefixIpv4UnicastFilter_Origin_Enum = 0 + BgpPrefixIpv4UnicastFilter_Origin_igp BgpPrefixIpv4UnicastFilter_Origin_Enum = 1 + BgpPrefixIpv4UnicastFilter_Origin_egp BgpPrefixIpv4UnicastFilter_Origin_Enum = 2 + BgpPrefixIpv4UnicastFilter_Origin_incomplete BgpPrefixIpv4UnicastFilter_Origin_Enum = 3 ) -// Enum value maps for PatternFlowEthernetPfcQueue_Choice_Enum. +// Enum value maps for BgpPrefixIpv4UnicastFilter_Origin_Enum. var ( - PatternFlowEthernetPfcQueue_Choice_Enum_name = map[int32]string{ + BgpPrefixIpv4UnicastFilter_Origin_Enum_name = map[int32]string{ 0: "unspecified", - 2: "value", - 3: "values", - 4: "increment", - 5: "decrement", + 1: "igp", + 2: "egp", + 3: "incomplete", } - PatternFlowEthernetPfcQueue_Choice_Enum_value = map[string]int32{ + BgpPrefixIpv4UnicastFilter_Origin_Enum_value = map[string]int32{ "unspecified": 0, - "value": 2, - "values": 3, - "increment": 4, - "decrement": 5, + "igp": 1, + "egp": 2, + "incomplete": 3, } ) -func (x PatternFlowEthernetPfcQueue_Choice_Enum) Enum() *PatternFlowEthernetPfcQueue_Choice_Enum { - p := new(PatternFlowEthernetPfcQueue_Choice_Enum) +func (x BgpPrefixIpv4UnicastFilter_Origin_Enum) Enum() *BgpPrefixIpv4UnicastFilter_Origin_Enum { + p := new(BgpPrefixIpv4UnicastFilter_Origin_Enum) *p = x return p } -func (x PatternFlowEthernetPfcQueue_Choice_Enum) String() string { +func (x BgpPrefixIpv4UnicastFilter_Origin_Enum) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } -func (PatternFlowEthernetPfcQueue_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { +func (BgpPrefixIpv4UnicastFilter_Origin_Enum) Descriptor() protoreflect.EnumDescriptor { return file_otg_proto_enumTypes[168].Descriptor() } -func (PatternFlowEthernetPfcQueue_Choice_Enum) Type() protoreflect.EnumType { +func (BgpPrefixIpv4UnicastFilter_Origin_Enum) Type() protoreflect.EnumType { return &file_otg_proto_enumTypes[168] } -func (x PatternFlowEthernetPfcQueue_Choice_Enum) Number() protoreflect.EnumNumber { +func (x BgpPrefixIpv4UnicastFilter_Origin_Enum) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } -// Deprecated: Use PatternFlowEthernetPfcQueue_Choice_Enum.Descriptor instead. -func (PatternFlowEthernetPfcQueue_Choice_Enum) EnumDescriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{341, 0, 0} +// Deprecated: Use BgpPrefixIpv4UnicastFilter_Origin_Enum.Descriptor instead. +func (BgpPrefixIpv4UnicastFilter_Origin_Enum) EnumDescriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{344, 0, 0} } -type PatternFlowVlanPriority_Choice_Enum int32 +type BgpPrefixIpv6UnicastFilter_Origin_Enum int32 const ( - PatternFlowVlanPriority_Choice_unspecified PatternFlowVlanPriority_Choice_Enum = 0 - PatternFlowVlanPriority_Choice_value PatternFlowVlanPriority_Choice_Enum = 2 - PatternFlowVlanPriority_Choice_values PatternFlowVlanPriority_Choice_Enum = 3 - PatternFlowVlanPriority_Choice_increment PatternFlowVlanPriority_Choice_Enum = 4 - PatternFlowVlanPriority_Choice_decrement PatternFlowVlanPriority_Choice_Enum = 5 + BgpPrefixIpv6UnicastFilter_Origin_unspecified BgpPrefixIpv6UnicastFilter_Origin_Enum = 0 + BgpPrefixIpv6UnicastFilter_Origin_igp BgpPrefixIpv6UnicastFilter_Origin_Enum = 1 + BgpPrefixIpv6UnicastFilter_Origin_egp BgpPrefixIpv6UnicastFilter_Origin_Enum = 2 + BgpPrefixIpv6UnicastFilter_Origin_incomplete BgpPrefixIpv6UnicastFilter_Origin_Enum = 3 ) -// Enum value maps for PatternFlowVlanPriority_Choice_Enum. +// Enum value maps for BgpPrefixIpv6UnicastFilter_Origin_Enum. var ( - PatternFlowVlanPriority_Choice_Enum_name = map[int32]string{ + BgpPrefixIpv6UnicastFilter_Origin_Enum_name = map[int32]string{ 0: "unspecified", - 2: "value", - 3: "values", - 4: "increment", - 5: "decrement", + 1: "igp", + 2: "egp", + 3: "incomplete", } - PatternFlowVlanPriority_Choice_Enum_value = map[string]int32{ + BgpPrefixIpv6UnicastFilter_Origin_Enum_value = map[string]int32{ "unspecified": 0, - "value": 2, - "values": 3, - "increment": 4, - "decrement": 5, + "igp": 1, + "egp": 2, + "incomplete": 3, } ) -func (x PatternFlowVlanPriority_Choice_Enum) Enum() *PatternFlowVlanPriority_Choice_Enum { - p := new(PatternFlowVlanPriority_Choice_Enum) +func (x BgpPrefixIpv6UnicastFilter_Origin_Enum) Enum() *BgpPrefixIpv6UnicastFilter_Origin_Enum { + p := new(BgpPrefixIpv6UnicastFilter_Origin_Enum) *p = x return p } -func (x PatternFlowVlanPriority_Choice_Enum) String() string { +func (x BgpPrefixIpv6UnicastFilter_Origin_Enum) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } -func (PatternFlowVlanPriority_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { +func (BgpPrefixIpv6UnicastFilter_Origin_Enum) Descriptor() protoreflect.EnumDescriptor { return file_otg_proto_enumTypes[169].Descriptor() } -func (PatternFlowVlanPriority_Choice_Enum) Type() protoreflect.EnumType { +func (BgpPrefixIpv6UnicastFilter_Origin_Enum) Type() protoreflect.EnumType { return &file_otg_proto_enumTypes[169] } -func (x PatternFlowVlanPriority_Choice_Enum) Number() protoreflect.EnumNumber { +func (x BgpPrefixIpv6UnicastFilter_Origin_Enum) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } -// Deprecated: Use PatternFlowVlanPriority_Choice_Enum.Descriptor instead. -func (PatternFlowVlanPriority_Choice_Enum) EnumDescriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{344, 0, 0} +// Deprecated: Use BgpPrefixIpv6UnicastFilter_Origin_Enum.Descriptor instead. +func (BgpPrefixIpv6UnicastFilter_Origin_Enum) EnumDescriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{345, 0, 0} } -type PatternFlowVlanCfi_Choice_Enum int32 +type BgpPrefixIpv4UnicastState_Origin_Enum int32 const ( - PatternFlowVlanCfi_Choice_unspecified PatternFlowVlanCfi_Choice_Enum = 0 - PatternFlowVlanCfi_Choice_value PatternFlowVlanCfi_Choice_Enum = 2 - PatternFlowVlanCfi_Choice_values PatternFlowVlanCfi_Choice_Enum = 3 - PatternFlowVlanCfi_Choice_increment PatternFlowVlanCfi_Choice_Enum = 4 - PatternFlowVlanCfi_Choice_decrement PatternFlowVlanCfi_Choice_Enum = 5 + BgpPrefixIpv4UnicastState_Origin_unspecified BgpPrefixIpv4UnicastState_Origin_Enum = 0 + BgpPrefixIpv4UnicastState_Origin_igp BgpPrefixIpv4UnicastState_Origin_Enum = 1 + BgpPrefixIpv4UnicastState_Origin_egp BgpPrefixIpv4UnicastState_Origin_Enum = 2 + BgpPrefixIpv4UnicastState_Origin_incomplete BgpPrefixIpv4UnicastState_Origin_Enum = 3 ) -// Enum value maps for PatternFlowVlanCfi_Choice_Enum. +// Enum value maps for BgpPrefixIpv4UnicastState_Origin_Enum. var ( - PatternFlowVlanCfi_Choice_Enum_name = map[int32]string{ + BgpPrefixIpv4UnicastState_Origin_Enum_name = map[int32]string{ 0: "unspecified", - 2: "value", - 3: "values", - 4: "increment", - 5: "decrement", + 1: "igp", + 2: "egp", + 3: "incomplete", } - PatternFlowVlanCfi_Choice_Enum_value = map[string]int32{ + BgpPrefixIpv4UnicastState_Origin_Enum_value = map[string]int32{ "unspecified": 0, - "value": 2, - "values": 3, - "increment": 4, - "decrement": 5, + "igp": 1, + "egp": 2, + "incomplete": 3, } ) -func (x PatternFlowVlanCfi_Choice_Enum) Enum() *PatternFlowVlanCfi_Choice_Enum { - p := new(PatternFlowVlanCfi_Choice_Enum) +func (x BgpPrefixIpv4UnicastState_Origin_Enum) Enum() *BgpPrefixIpv4UnicastState_Origin_Enum { + p := new(BgpPrefixIpv4UnicastState_Origin_Enum) *p = x return p } -func (x PatternFlowVlanCfi_Choice_Enum) String() string { +func (x BgpPrefixIpv4UnicastState_Origin_Enum) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } -func (PatternFlowVlanCfi_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { +func (BgpPrefixIpv4UnicastState_Origin_Enum) Descriptor() protoreflect.EnumDescriptor { return file_otg_proto_enumTypes[170].Descriptor() } -func (PatternFlowVlanCfi_Choice_Enum) Type() protoreflect.EnumType { +func (BgpPrefixIpv4UnicastState_Origin_Enum) Type() protoreflect.EnumType { return &file_otg_proto_enumTypes[170] } -func (x PatternFlowVlanCfi_Choice_Enum) Number() protoreflect.EnumNumber { +func (x BgpPrefixIpv4UnicastState_Origin_Enum) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } -// Deprecated: Use PatternFlowVlanCfi_Choice_Enum.Descriptor instead. -func (PatternFlowVlanCfi_Choice_Enum) EnumDescriptor() ([]byte, []int) { +// Deprecated: Use BgpPrefixIpv4UnicastState_Origin_Enum.Descriptor instead. +func (BgpPrefixIpv4UnicastState_Origin_Enum) EnumDescriptor() ([]byte, []int) { return file_otg_proto_rawDescGZIP(), []int{347, 0, 0} } -type PatternFlowVlanId_Choice_Enum int32 +type BgpPrefixIpv6UnicastState_Origin_Enum int32 const ( - PatternFlowVlanId_Choice_unspecified PatternFlowVlanId_Choice_Enum = 0 - PatternFlowVlanId_Choice_value PatternFlowVlanId_Choice_Enum = 2 - PatternFlowVlanId_Choice_values PatternFlowVlanId_Choice_Enum = 3 - PatternFlowVlanId_Choice_increment PatternFlowVlanId_Choice_Enum = 4 - PatternFlowVlanId_Choice_decrement PatternFlowVlanId_Choice_Enum = 5 + BgpPrefixIpv6UnicastState_Origin_unspecified BgpPrefixIpv6UnicastState_Origin_Enum = 0 + BgpPrefixIpv6UnicastState_Origin_igp BgpPrefixIpv6UnicastState_Origin_Enum = 1 + BgpPrefixIpv6UnicastState_Origin_egp BgpPrefixIpv6UnicastState_Origin_Enum = 2 + BgpPrefixIpv6UnicastState_Origin_incomplete BgpPrefixIpv6UnicastState_Origin_Enum = 3 ) -// Enum value maps for PatternFlowVlanId_Choice_Enum. +// Enum value maps for BgpPrefixIpv6UnicastState_Origin_Enum. var ( - PatternFlowVlanId_Choice_Enum_name = map[int32]string{ + BgpPrefixIpv6UnicastState_Origin_Enum_name = map[int32]string{ 0: "unspecified", - 2: "value", - 3: "values", - 4: "increment", - 5: "decrement", + 1: "igp", + 2: "egp", + 3: "incomplete", } - PatternFlowVlanId_Choice_Enum_value = map[string]int32{ + BgpPrefixIpv6UnicastState_Origin_Enum_value = map[string]int32{ "unspecified": 0, - "value": 2, - "values": 3, - "increment": 4, - "decrement": 5, + "igp": 1, + "egp": 2, + "incomplete": 3, } ) -func (x PatternFlowVlanId_Choice_Enum) Enum() *PatternFlowVlanId_Choice_Enum { - p := new(PatternFlowVlanId_Choice_Enum) +func (x BgpPrefixIpv6UnicastState_Origin_Enum) Enum() *BgpPrefixIpv6UnicastState_Origin_Enum { + p := new(BgpPrefixIpv6UnicastState_Origin_Enum) *p = x return p } -func (x PatternFlowVlanId_Choice_Enum) String() string { +func (x BgpPrefixIpv6UnicastState_Origin_Enum) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } -func (PatternFlowVlanId_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { +func (BgpPrefixIpv6UnicastState_Origin_Enum) Descriptor() protoreflect.EnumDescriptor { return file_otg_proto_enumTypes[171].Descriptor() } -func (PatternFlowVlanId_Choice_Enum) Type() protoreflect.EnumType { +func (BgpPrefixIpv6UnicastState_Origin_Enum) Type() protoreflect.EnumType { return &file_otg_proto_enumTypes[171] } -func (x PatternFlowVlanId_Choice_Enum) Number() protoreflect.EnumNumber { +func (x BgpPrefixIpv6UnicastState_Origin_Enum) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } -// Deprecated: Use PatternFlowVlanId_Choice_Enum.Descriptor instead. -func (PatternFlowVlanId_Choice_Enum) EnumDescriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{350, 0, 0} +// Deprecated: Use BgpPrefixIpv6UnicastState_Origin_Enum.Descriptor instead. +func (BgpPrefixIpv6UnicastState_Origin_Enum) EnumDescriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{348, 0, 0} } -type PatternFlowVlanTpid_Choice_Enum int32 +type ResultBgpCommunity_Type_Enum int32 const ( - PatternFlowVlanTpid_Choice_unspecified PatternFlowVlanTpid_Choice_Enum = 0 - PatternFlowVlanTpid_Choice_value PatternFlowVlanTpid_Choice_Enum = 2 - PatternFlowVlanTpid_Choice_values PatternFlowVlanTpid_Choice_Enum = 3 - PatternFlowVlanTpid_Choice_increment PatternFlowVlanTpid_Choice_Enum = 4 - PatternFlowVlanTpid_Choice_decrement PatternFlowVlanTpid_Choice_Enum = 5 + ResultBgpCommunity_Type_unspecified ResultBgpCommunity_Type_Enum = 0 + ResultBgpCommunity_Type_manual_as_number ResultBgpCommunity_Type_Enum = 1 + ResultBgpCommunity_Type_no_export ResultBgpCommunity_Type_Enum = 2 + ResultBgpCommunity_Type_no_advertised ResultBgpCommunity_Type_Enum = 3 + ResultBgpCommunity_Type_no_export_subconfed ResultBgpCommunity_Type_Enum = 4 + ResultBgpCommunity_Type_llgr_stale ResultBgpCommunity_Type_Enum = 5 + ResultBgpCommunity_Type_no_llgr ResultBgpCommunity_Type_Enum = 6 ) -// Enum value maps for PatternFlowVlanTpid_Choice_Enum. +// Enum value maps for ResultBgpCommunity_Type_Enum. var ( - PatternFlowVlanTpid_Choice_Enum_name = map[int32]string{ + ResultBgpCommunity_Type_Enum_name = map[int32]string{ 0: "unspecified", - 2: "value", - 3: "values", - 4: "increment", - 5: "decrement", + 1: "manual_as_number", + 2: "no_export", + 3: "no_advertised", + 4: "no_export_subconfed", + 5: "llgr_stale", + 6: "no_llgr", } - PatternFlowVlanTpid_Choice_Enum_value = map[string]int32{ - "unspecified": 0, - "value": 2, - "values": 3, - "increment": 4, - "decrement": 5, + ResultBgpCommunity_Type_Enum_value = map[string]int32{ + "unspecified": 0, + "manual_as_number": 1, + "no_export": 2, + "no_advertised": 3, + "no_export_subconfed": 4, + "llgr_stale": 5, + "no_llgr": 6, } ) -func (x PatternFlowVlanTpid_Choice_Enum) Enum() *PatternFlowVlanTpid_Choice_Enum { - p := new(PatternFlowVlanTpid_Choice_Enum) +func (x ResultBgpCommunity_Type_Enum) Enum() *ResultBgpCommunity_Type_Enum { + p := new(ResultBgpCommunity_Type_Enum) *p = x return p } -func (x PatternFlowVlanTpid_Choice_Enum) String() string { +func (x ResultBgpCommunity_Type_Enum) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } -func (PatternFlowVlanTpid_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { +func (ResultBgpCommunity_Type_Enum) Descriptor() protoreflect.EnumDescriptor { return file_otg_proto_enumTypes[172].Descriptor() } -func (PatternFlowVlanTpid_Choice_Enum) Type() protoreflect.EnumType { +func (ResultBgpCommunity_Type_Enum) Type() protoreflect.EnumType { return &file_otg_proto_enumTypes[172] } -func (x PatternFlowVlanTpid_Choice_Enum) Number() protoreflect.EnumNumber { +func (x ResultBgpCommunity_Type_Enum) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } -// Deprecated: Use PatternFlowVlanTpid_Choice_Enum.Descriptor instead. -func (PatternFlowVlanTpid_Choice_Enum) EnumDescriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{353, 0, 0} +// Deprecated: Use ResultBgpCommunity_Type_Enum.Descriptor instead. +func (ResultBgpCommunity_Type_Enum) EnumDescriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{349, 0, 0} } -type PatternFlowVxlanFlags_Choice_Enum int32 +type ResultBgpAsPathSegment_Type_Enum int32 const ( - PatternFlowVxlanFlags_Choice_unspecified PatternFlowVxlanFlags_Choice_Enum = 0 - PatternFlowVxlanFlags_Choice_value PatternFlowVxlanFlags_Choice_Enum = 2 - PatternFlowVxlanFlags_Choice_values PatternFlowVxlanFlags_Choice_Enum = 3 - PatternFlowVxlanFlags_Choice_increment PatternFlowVxlanFlags_Choice_Enum = 4 - PatternFlowVxlanFlags_Choice_decrement PatternFlowVxlanFlags_Choice_Enum = 5 + ResultBgpAsPathSegment_Type_unspecified ResultBgpAsPathSegment_Type_Enum = 0 + ResultBgpAsPathSegment_Type_as_seq ResultBgpAsPathSegment_Type_Enum = 1 + ResultBgpAsPathSegment_Type_as_set ResultBgpAsPathSegment_Type_Enum = 2 + ResultBgpAsPathSegment_Type_as_confed_seq ResultBgpAsPathSegment_Type_Enum = 3 + ResultBgpAsPathSegment_Type_as_confed_set ResultBgpAsPathSegment_Type_Enum = 4 ) -// Enum value maps for PatternFlowVxlanFlags_Choice_Enum. +// Enum value maps for ResultBgpAsPathSegment_Type_Enum. var ( - PatternFlowVxlanFlags_Choice_Enum_name = map[int32]string{ + ResultBgpAsPathSegment_Type_Enum_name = map[int32]string{ 0: "unspecified", - 2: "value", - 3: "values", - 4: "increment", - 5: "decrement", + 1: "as_seq", + 2: "as_set", + 3: "as_confed_seq", + 4: "as_confed_set", } - PatternFlowVxlanFlags_Choice_Enum_value = map[string]int32{ - "unspecified": 0, - "value": 2, - "values": 3, - "increment": 4, - "decrement": 5, + ResultBgpAsPathSegment_Type_Enum_value = map[string]int32{ + "unspecified": 0, + "as_seq": 1, + "as_set": 2, + "as_confed_seq": 3, + "as_confed_set": 4, } ) -func (x PatternFlowVxlanFlags_Choice_Enum) Enum() *PatternFlowVxlanFlags_Choice_Enum { - p := new(PatternFlowVxlanFlags_Choice_Enum) +func (x ResultBgpAsPathSegment_Type_Enum) Enum() *ResultBgpAsPathSegment_Type_Enum { + p := new(ResultBgpAsPathSegment_Type_Enum) *p = x return p } -func (x PatternFlowVxlanFlags_Choice_Enum) String() string { +func (x ResultBgpAsPathSegment_Type_Enum) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } -func (PatternFlowVxlanFlags_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { +func (ResultBgpAsPathSegment_Type_Enum) Descriptor() protoreflect.EnumDescriptor { return file_otg_proto_enumTypes[173].Descriptor() } -func (PatternFlowVxlanFlags_Choice_Enum) Type() protoreflect.EnumType { +func (ResultBgpAsPathSegment_Type_Enum) Type() protoreflect.EnumType { return &file_otg_proto_enumTypes[173] } -func (x PatternFlowVxlanFlags_Choice_Enum) Number() protoreflect.EnumNumber { +func (x ResultBgpAsPathSegment_Type_Enum) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } -// Deprecated: Use PatternFlowVxlanFlags_Choice_Enum.Descriptor instead. -func (PatternFlowVxlanFlags_Choice_Enum) EnumDescriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{356, 0, 0} +// Deprecated: Use ResultBgpAsPathSegment_Type_Enum.Descriptor instead. +func (ResultBgpAsPathSegment_Type_Enum) EnumDescriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{351, 0, 0} } -type PatternFlowVxlanReserved0_Choice_Enum int32 +type IsisLspState_PduType_Enum int32 const ( - PatternFlowVxlanReserved0_Choice_unspecified PatternFlowVxlanReserved0_Choice_Enum = 0 - PatternFlowVxlanReserved0_Choice_value PatternFlowVxlanReserved0_Choice_Enum = 2 - PatternFlowVxlanReserved0_Choice_values PatternFlowVxlanReserved0_Choice_Enum = 3 - PatternFlowVxlanReserved0_Choice_increment PatternFlowVxlanReserved0_Choice_Enum = 4 - PatternFlowVxlanReserved0_Choice_decrement PatternFlowVxlanReserved0_Choice_Enum = 5 + IsisLspState_PduType_unspecified IsisLspState_PduType_Enum = 0 + IsisLspState_PduType_level_1 IsisLspState_PduType_Enum = 1 + IsisLspState_PduType_level_2 IsisLspState_PduType_Enum = 2 ) -// Enum value maps for PatternFlowVxlanReserved0_Choice_Enum. +// Enum value maps for IsisLspState_PduType_Enum. var ( - PatternFlowVxlanReserved0_Choice_Enum_name = map[int32]string{ + IsisLspState_PduType_Enum_name = map[int32]string{ 0: "unspecified", - 2: "value", - 3: "values", - 4: "increment", - 5: "decrement", + 1: "level_1", + 2: "level_2", } - PatternFlowVxlanReserved0_Choice_Enum_value = map[string]int32{ + IsisLspState_PduType_Enum_value = map[string]int32{ "unspecified": 0, - "value": 2, - "values": 3, - "increment": 4, - "decrement": 5, + "level_1": 1, + "level_2": 2, } ) -func (x PatternFlowVxlanReserved0_Choice_Enum) Enum() *PatternFlowVxlanReserved0_Choice_Enum { - p := new(PatternFlowVxlanReserved0_Choice_Enum) +func (x IsisLspState_PduType_Enum) Enum() *IsisLspState_PduType_Enum { + p := new(IsisLspState_PduType_Enum) *p = x return p } -func (x PatternFlowVxlanReserved0_Choice_Enum) String() string { +func (x IsisLspState_PduType_Enum) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } -func (PatternFlowVxlanReserved0_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { +func (IsisLspState_PduType_Enum) Descriptor() protoreflect.EnumDescriptor { return file_otg_proto_enumTypes[174].Descriptor() } -func (PatternFlowVxlanReserved0_Choice_Enum) Type() protoreflect.EnumType { +func (IsisLspState_PduType_Enum) Type() protoreflect.EnumType { return &file_otg_proto_enumTypes[174] } -func (x PatternFlowVxlanReserved0_Choice_Enum) Number() protoreflect.EnumNumber { +func (x IsisLspState_PduType_Enum) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } -// Deprecated: Use PatternFlowVxlanReserved0_Choice_Enum.Descriptor instead. -func (PatternFlowVxlanReserved0_Choice_Enum) EnumDescriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{359, 0, 0} +// Deprecated: Use IsisLspState_PduType_Enum.Descriptor instead. +func (IsisLspState_PduType_Enum) EnumDescriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{354, 0, 0} } -type PatternFlowVxlanVni_Choice_Enum int32 +type IsisLspV4Prefix_RedistributionType_Enum int32 const ( - PatternFlowVxlanVni_Choice_unspecified PatternFlowVxlanVni_Choice_Enum = 0 - PatternFlowVxlanVni_Choice_value PatternFlowVxlanVni_Choice_Enum = 2 - PatternFlowVxlanVni_Choice_values PatternFlowVxlanVni_Choice_Enum = 3 - PatternFlowVxlanVni_Choice_auto PatternFlowVxlanVni_Choice_Enum = 1 - PatternFlowVxlanVni_Choice_increment PatternFlowVxlanVni_Choice_Enum = 4 - PatternFlowVxlanVni_Choice_decrement PatternFlowVxlanVni_Choice_Enum = 5 + IsisLspV4Prefix_RedistributionType_unspecified IsisLspV4Prefix_RedistributionType_Enum = 0 + IsisLspV4Prefix_RedistributionType_up IsisLspV4Prefix_RedistributionType_Enum = 1 + IsisLspV4Prefix_RedistributionType_down IsisLspV4Prefix_RedistributionType_Enum = 2 ) -// Enum value maps for PatternFlowVxlanVni_Choice_Enum. +// Enum value maps for IsisLspV4Prefix_RedistributionType_Enum. var ( - PatternFlowVxlanVni_Choice_Enum_name = map[int32]string{ + IsisLspV4Prefix_RedistributionType_Enum_name = map[int32]string{ 0: "unspecified", - 2: "value", - 3: "values", - 1: "auto", - 4: "increment", - 5: "decrement", + 1: "up", + 2: "down", } - PatternFlowVxlanVni_Choice_Enum_value = map[string]int32{ + IsisLspV4Prefix_RedistributionType_Enum_value = map[string]int32{ "unspecified": 0, - "value": 2, - "values": 3, - "auto": 1, - "increment": 4, - "decrement": 5, + "up": 1, + "down": 2, } ) -func (x PatternFlowVxlanVni_Choice_Enum) Enum() *PatternFlowVxlanVni_Choice_Enum { - p := new(PatternFlowVxlanVni_Choice_Enum) +func (x IsisLspV4Prefix_RedistributionType_Enum) Enum() *IsisLspV4Prefix_RedistributionType_Enum { + p := new(IsisLspV4Prefix_RedistributionType_Enum) *p = x return p } -func (x PatternFlowVxlanVni_Choice_Enum) String() string { +func (x IsisLspV4Prefix_RedistributionType_Enum) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } -func (PatternFlowVxlanVni_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { +func (IsisLspV4Prefix_RedistributionType_Enum) Descriptor() protoreflect.EnumDescriptor { return file_otg_proto_enumTypes[175].Descriptor() } -func (PatternFlowVxlanVni_Choice_Enum) Type() protoreflect.EnumType { +func (IsisLspV4Prefix_RedistributionType_Enum) Type() protoreflect.EnumType { return &file_otg_proto_enumTypes[175] } -func (x PatternFlowVxlanVni_Choice_Enum) Number() protoreflect.EnumNumber { +func (x IsisLspV4Prefix_RedistributionType_Enum) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } -// Deprecated: Use PatternFlowVxlanVni_Choice_Enum.Descriptor instead. -func (PatternFlowVxlanVni_Choice_Enum) EnumDescriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{362, 0, 0} +// Deprecated: Use IsisLspV4Prefix_RedistributionType_Enum.Descriptor instead. +func (IsisLspV4Prefix_RedistributionType_Enum) EnumDescriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{363, 0, 0} } -type PatternFlowVxlanReserved1_Choice_Enum int32 +type IsisLspV4Prefix_OriginType_Enum int32 const ( - PatternFlowVxlanReserved1_Choice_unspecified PatternFlowVxlanReserved1_Choice_Enum = 0 - PatternFlowVxlanReserved1_Choice_value PatternFlowVxlanReserved1_Choice_Enum = 2 - PatternFlowVxlanReserved1_Choice_values PatternFlowVxlanReserved1_Choice_Enum = 3 - PatternFlowVxlanReserved1_Choice_increment PatternFlowVxlanReserved1_Choice_Enum = 4 - PatternFlowVxlanReserved1_Choice_decrement PatternFlowVxlanReserved1_Choice_Enum = 5 + IsisLspV4Prefix_OriginType_unspecified IsisLspV4Prefix_OriginType_Enum = 0 + IsisLspV4Prefix_OriginType_internal IsisLspV4Prefix_OriginType_Enum = 1 + IsisLspV4Prefix_OriginType_external IsisLspV4Prefix_OriginType_Enum = 2 ) -// Enum value maps for PatternFlowVxlanReserved1_Choice_Enum. +// Enum value maps for IsisLspV4Prefix_OriginType_Enum. var ( - PatternFlowVxlanReserved1_Choice_Enum_name = map[int32]string{ + IsisLspV4Prefix_OriginType_Enum_name = map[int32]string{ 0: "unspecified", - 2: "value", - 3: "values", - 4: "increment", - 5: "decrement", + 1: "internal", + 2: "external", } - PatternFlowVxlanReserved1_Choice_Enum_value = map[string]int32{ + IsisLspV4Prefix_OriginType_Enum_value = map[string]int32{ "unspecified": 0, - "value": 2, - "values": 3, - "increment": 4, - "decrement": 5, + "internal": 1, + "external": 2, } ) -func (x PatternFlowVxlanReserved1_Choice_Enum) Enum() *PatternFlowVxlanReserved1_Choice_Enum { - p := new(PatternFlowVxlanReserved1_Choice_Enum) +func (x IsisLspV4Prefix_OriginType_Enum) Enum() *IsisLspV4Prefix_OriginType_Enum { + p := new(IsisLspV4Prefix_OriginType_Enum) *p = x return p } -func (x PatternFlowVxlanReserved1_Choice_Enum) String() string { +func (x IsisLspV4Prefix_OriginType_Enum) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } -func (PatternFlowVxlanReserved1_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { +func (IsisLspV4Prefix_OriginType_Enum) Descriptor() protoreflect.EnumDescriptor { return file_otg_proto_enumTypes[176].Descriptor() } -func (PatternFlowVxlanReserved1_Choice_Enum) Type() protoreflect.EnumType { +func (IsisLspV4Prefix_OriginType_Enum) Type() protoreflect.EnumType { return &file_otg_proto_enumTypes[176] } -func (x PatternFlowVxlanReserved1_Choice_Enum) Number() protoreflect.EnumNumber { +func (x IsisLspV4Prefix_OriginType_Enum) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } -// Deprecated: Use PatternFlowVxlanReserved1_Choice_Enum.Descriptor instead. -func (PatternFlowVxlanReserved1_Choice_Enum) EnumDescriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{365, 0, 0} +// Deprecated: Use IsisLspV4Prefix_OriginType_Enum.Descriptor instead. +func (IsisLspV4Prefix_OriginType_Enum) EnumDescriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{363, 1, 0} } -type PatternFlowIpv4Version_Choice_Enum int32 +type IsisLspExtendedV4Prefix_RedistributionType_Enum int32 const ( - PatternFlowIpv4Version_Choice_unspecified PatternFlowIpv4Version_Choice_Enum = 0 - PatternFlowIpv4Version_Choice_value PatternFlowIpv4Version_Choice_Enum = 2 - PatternFlowIpv4Version_Choice_values PatternFlowIpv4Version_Choice_Enum = 3 - PatternFlowIpv4Version_Choice_increment PatternFlowIpv4Version_Choice_Enum = 4 - PatternFlowIpv4Version_Choice_decrement PatternFlowIpv4Version_Choice_Enum = 5 + IsisLspExtendedV4Prefix_RedistributionType_unspecified IsisLspExtendedV4Prefix_RedistributionType_Enum = 0 + IsisLspExtendedV4Prefix_RedistributionType_up IsisLspExtendedV4Prefix_RedistributionType_Enum = 1 + IsisLspExtendedV4Prefix_RedistributionType_down IsisLspExtendedV4Prefix_RedistributionType_Enum = 2 ) -// Enum value maps for PatternFlowIpv4Version_Choice_Enum. +// Enum value maps for IsisLspExtendedV4Prefix_RedistributionType_Enum. var ( - PatternFlowIpv4Version_Choice_Enum_name = map[int32]string{ + IsisLspExtendedV4Prefix_RedistributionType_Enum_name = map[int32]string{ 0: "unspecified", - 2: "value", - 3: "values", - 4: "increment", - 5: "decrement", + 1: "up", + 2: "down", } - PatternFlowIpv4Version_Choice_Enum_value = map[string]int32{ + IsisLspExtendedV4Prefix_RedistributionType_Enum_value = map[string]int32{ "unspecified": 0, - "value": 2, - "values": 3, - "increment": 4, - "decrement": 5, + "up": 1, + "down": 2, } ) -func (x PatternFlowIpv4Version_Choice_Enum) Enum() *PatternFlowIpv4Version_Choice_Enum { - p := new(PatternFlowIpv4Version_Choice_Enum) +func (x IsisLspExtendedV4Prefix_RedistributionType_Enum) Enum() *IsisLspExtendedV4Prefix_RedistributionType_Enum { + p := new(IsisLspExtendedV4Prefix_RedistributionType_Enum) *p = x return p } -func (x PatternFlowIpv4Version_Choice_Enum) String() string { +func (x IsisLspExtendedV4Prefix_RedistributionType_Enum) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } -func (PatternFlowIpv4Version_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { +func (IsisLspExtendedV4Prefix_RedistributionType_Enum) Descriptor() protoreflect.EnumDescriptor { return file_otg_proto_enumTypes[177].Descriptor() } -func (PatternFlowIpv4Version_Choice_Enum) Type() protoreflect.EnumType { +func (IsisLspExtendedV4Prefix_RedistributionType_Enum) Type() protoreflect.EnumType { return &file_otg_proto_enumTypes[177] } -func (x PatternFlowIpv4Version_Choice_Enum) Number() protoreflect.EnumNumber { +func (x IsisLspExtendedV4Prefix_RedistributionType_Enum) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } -// Deprecated: Use PatternFlowIpv4Version_Choice_Enum.Descriptor instead. -func (PatternFlowIpv4Version_Choice_Enum) EnumDescriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{368, 0, 0} +// Deprecated: Use IsisLspExtendedV4Prefix_RedistributionType_Enum.Descriptor instead. +func (IsisLspExtendedV4Prefix_RedistributionType_Enum) EnumDescriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{365, 0, 0} } -type PatternFlowIpv4HeaderLength_Choice_Enum int32 +type IsisLspV6Prefix_RedistributionType_Enum int32 const ( - PatternFlowIpv4HeaderLength_Choice_unspecified PatternFlowIpv4HeaderLength_Choice_Enum = 0 - PatternFlowIpv4HeaderLength_Choice_value PatternFlowIpv4HeaderLength_Choice_Enum = 2 - PatternFlowIpv4HeaderLength_Choice_values PatternFlowIpv4HeaderLength_Choice_Enum = 3 - PatternFlowIpv4HeaderLength_Choice_auto PatternFlowIpv4HeaderLength_Choice_Enum = 1 - PatternFlowIpv4HeaderLength_Choice_increment PatternFlowIpv4HeaderLength_Choice_Enum = 4 - PatternFlowIpv4HeaderLength_Choice_decrement PatternFlowIpv4HeaderLength_Choice_Enum = 5 + IsisLspV6Prefix_RedistributionType_unspecified IsisLspV6Prefix_RedistributionType_Enum = 0 + IsisLspV6Prefix_RedistributionType_up IsisLspV6Prefix_RedistributionType_Enum = 1 + IsisLspV6Prefix_RedistributionType_down IsisLspV6Prefix_RedistributionType_Enum = 2 ) -// Enum value maps for PatternFlowIpv4HeaderLength_Choice_Enum. +// Enum value maps for IsisLspV6Prefix_RedistributionType_Enum. var ( - PatternFlowIpv4HeaderLength_Choice_Enum_name = map[int32]string{ + IsisLspV6Prefix_RedistributionType_Enum_name = map[int32]string{ 0: "unspecified", - 2: "value", - 3: "values", - 1: "auto", - 4: "increment", - 5: "decrement", + 1: "up", + 2: "down", } - PatternFlowIpv4HeaderLength_Choice_Enum_value = map[string]int32{ + IsisLspV6Prefix_RedistributionType_Enum_value = map[string]int32{ "unspecified": 0, - "value": 2, - "values": 3, - "auto": 1, - "increment": 4, - "decrement": 5, + "up": 1, + "down": 2, } ) -func (x PatternFlowIpv4HeaderLength_Choice_Enum) Enum() *PatternFlowIpv4HeaderLength_Choice_Enum { - p := new(PatternFlowIpv4HeaderLength_Choice_Enum) +func (x IsisLspV6Prefix_RedistributionType_Enum) Enum() *IsisLspV6Prefix_RedistributionType_Enum { + p := new(IsisLspV6Prefix_RedistributionType_Enum) *p = x return p } -func (x PatternFlowIpv4HeaderLength_Choice_Enum) String() string { +func (x IsisLspV6Prefix_RedistributionType_Enum) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } -func (PatternFlowIpv4HeaderLength_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { +func (IsisLspV6Prefix_RedistributionType_Enum) Descriptor() protoreflect.EnumDescriptor { return file_otg_proto_enumTypes[178].Descriptor() } -func (PatternFlowIpv4HeaderLength_Choice_Enum) Type() protoreflect.EnumType { +func (IsisLspV6Prefix_RedistributionType_Enum) Type() protoreflect.EnumType { return &file_otg_proto_enumTypes[178] } -func (x PatternFlowIpv4HeaderLength_Choice_Enum) Number() protoreflect.EnumNumber { +func (x IsisLspV6Prefix_RedistributionType_Enum) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } -// Deprecated: Use PatternFlowIpv4HeaderLength_Choice_Enum.Descriptor instead. -func (PatternFlowIpv4HeaderLength_Choice_Enum) EnumDescriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{371, 0, 0} +// Deprecated: Use IsisLspV6Prefix_RedistributionType_Enum.Descriptor instead. +func (IsisLspV6Prefix_RedistributionType_Enum) EnumDescriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{367, 0, 0} } -type PatternFlowIpv4TotalLength_Choice_Enum int32 +type IsisLspV6Prefix_OriginType_Enum int32 const ( - PatternFlowIpv4TotalLength_Choice_unspecified PatternFlowIpv4TotalLength_Choice_Enum = 0 - PatternFlowIpv4TotalLength_Choice_value PatternFlowIpv4TotalLength_Choice_Enum = 2 - PatternFlowIpv4TotalLength_Choice_values PatternFlowIpv4TotalLength_Choice_Enum = 3 - PatternFlowIpv4TotalLength_Choice_auto PatternFlowIpv4TotalLength_Choice_Enum = 1 - PatternFlowIpv4TotalLength_Choice_increment PatternFlowIpv4TotalLength_Choice_Enum = 4 - PatternFlowIpv4TotalLength_Choice_decrement PatternFlowIpv4TotalLength_Choice_Enum = 5 + IsisLspV6Prefix_OriginType_unspecified IsisLspV6Prefix_OriginType_Enum = 0 + IsisLspV6Prefix_OriginType_internal IsisLspV6Prefix_OriginType_Enum = 1 + IsisLspV6Prefix_OriginType_external IsisLspV6Prefix_OriginType_Enum = 2 ) -// Enum value maps for PatternFlowIpv4TotalLength_Choice_Enum. +// Enum value maps for IsisLspV6Prefix_OriginType_Enum. var ( - PatternFlowIpv4TotalLength_Choice_Enum_name = map[int32]string{ + IsisLspV6Prefix_OriginType_Enum_name = map[int32]string{ 0: "unspecified", - 2: "value", - 3: "values", - 1: "auto", - 4: "increment", - 5: "decrement", + 1: "internal", + 2: "external", } - PatternFlowIpv4TotalLength_Choice_Enum_value = map[string]int32{ + IsisLspV6Prefix_OriginType_Enum_value = map[string]int32{ "unspecified": 0, - "value": 2, - "values": 3, - "auto": 1, - "increment": 4, - "decrement": 5, + "internal": 1, + "external": 2, } ) -func (x PatternFlowIpv4TotalLength_Choice_Enum) Enum() *PatternFlowIpv4TotalLength_Choice_Enum { - p := new(PatternFlowIpv4TotalLength_Choice_Enum) +func (x IsisLspV6Prefix_OriginType_Enum) Enum() *IsisLspV6Prefix_OriginType_Enum { + p := new(IsisLspV6Prefix_OriginType_Enum) *p = x return p } -func (x PatternFlowIpv4TotalLength_Choice_Enum) String() string { +func (x IsisLspV6Prefix_OriginType_Enum) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } -func (PatternFlowIpv4TotalLength_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { +func (IsisLspV6Prefix_OriginType_Enum) Descriptor() protoreflect.EnumDescriptor { return file_otg_proto_enumTypes[179].Descriptor() } -func (PatternFlowIpv4TotalLength_Choice_Enum) Type() protoreflect.EnumType { +func (IsisLspV6Prefix_OriginType_Enum) Type() protoreflect.EnumType { return &file_otg_proto_enumTypes[179] } -func (x PatternFlowIpv4TotalLength_Choice_Enum) Number() protoreflect.EnumNumber { +func (x IsisLspV6Prefix_OriginType_Enum) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } -// Deprecated: Use PatternFlowIpv4TotalLength_Choice_Enum.Descriptor instead. -func (PatternFlowIpv4TotalLength_Choice_Enum) EnumDescriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{374, 0, 0} +// Deprecated: Use IsisLspV6Prefix_OriginType_Enum.Descriptor instead. +func (IsisLspV6Prefix_OriginType_Enum) EnumDescriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{367, 1, 0} } -type PatternFlowIpv4Identification_Choice_Enum int32 +type LldpNeighborsState_ChassisIdType_Enum int32 const ( - PatternFlowIpv4Identification_Choice_unspecified PatternFlowIpv4Identification_Choice_Enum = 0 - PatternFlowIpv4Identification_Choice_value PatternFlowIpv4Identification_Choice_Enum = 2 - PatternFlowIpv4Identification_Choice_values PatternFlowIpv4Identification_Choice_Enum = 3 - PatternFlowIpv4Identification_Choice_increment PatternFlowIpv4Identification_Choice_Enum = 4 - PatternFlowIpv4Identification_Choice_decrement PatternFlowIpv4Identification_Choice_Enum = 5 + LldpNeighborsState_ChassisIdType_unspecified LldpNeighborsState_ChassisIdType_Enum = 0 + LldpNeighborsState_ChassisIdType_port_component LldpNeighborsState_ChassisIdType_Enum = 1 + LldpNeighborsState_ChassisIdType_network_address LldpNeighborsState_ChassisIdType_Enum = 2 + LldpNeighborsState_ChassisIdType_chassis_component LldpNeighborsState_ChassisIdType_Enum = 3 + LldpNeighborsState_ChassisIdType_mac_address LldpNeighborsState_ChassisIdType_Enum = 4 + LldpNeighborsState_ChassisIdType_interface_name LldpNeighborsState_ChassisIdType_Enum = 5 + LldpNeighborsState_ChassisIdType_local LldpNeighborsState_ChassisIdType_Enum = 6 + LldpNeighborsState_ChassisIdType_interface_alias LldpNeighborsState_ChassisIdType_Enum = 7 ) -// Enum value maps for PatternFlowIpv4Identification_Choice_Enum. +// Enum value maps for LldpNeighborsState_ChassisIdType_Enum. var ( - PatternFlowIpv4Identification_Choice_Enum_name = map[int32]string{ + LldpNeighborsState_ChassisIdType_Enum_name = map[int32]string{ 0: "unspecified", - 2: "value", - 3: "values", - 4: "increment", - 5: "decrement", + 1: "port_component", + 2: "network_address", + 3: "chassis_component", + 4: "mac_address", + 5: "interface_name", + 6: "local", + 7: "interface_alias", } - PatternFlowIpv4Identification_Choice_Enum_value = map[string]int32{ - "unspecified": 0, - "value": 2, - "values": 3, - "increment": 4, - "decrement": 5, + LldpNeighborsState_ChassisIdType_Enum_value = map[string]int32{ + "unspecified": 0, + "port_component": 1, + "network_address": 2, + "chassis_component": 3, + "mac_address": 4, + "interface_name": 5, + "local": 6, + "interface_alias": 7, } ) -func (x PatternFlowIpv4Identification_Choice_Enum) Enum() *PatternFlowIpv4Identification_Choice_Enum { - p := new(PatternFlowIpv4Identification_Choice_Enum) +func (x LldpNeighborsState_ChassisIdType_Enum) Enum() *LldpNeighborsState_ChassisIdType_Enum { + p := new(LldpNeighborsState_ChassisIdType_Enum) *p = x return p } -func (x PatternFlowIpv4Identification_Choice_Enum) String() string { +func (x LldpNeighborsState_ChassisIdType_Enum) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } -func (PatternFlowIpv4Identification_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { +func (LldpNeighborsState_ChassisIdType_Enum) Descriptor() protoreflect.EnumDescriptor { return file_otg_proto_enumTypes[180].Descriptor() } -func (PatternFlowIpv4Identification_Choice_Enum) Type() protoreflect.EnumType { +func (LldpNeighborsState_ChassisIdType_Enum) Type() protoreflect.EnumType { return &file_otg_proto_enumTypes[180] } -func (x PatternFlowIpv4Identification_Choice_Enum) Number() protoreflect.EnumNumber { +func (x LldpNeighborsState_ChassisIdType_Enum) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } -// Deprecated: Use PatternFlowIpv4Identification_Choice_Enum.Descriptor instead. -func (PatternFlowIpv4Identification_Choice_Enum) EnumDescriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{377, 0, 0} +// Deprecated: Use LldpNeighborsState_ChassisIdType_Enum.Descriptor instead. +func (LldpNeighborsState_ChassisIdType_Enum) EnumDescriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{370, 0, 0} } -type PatternFlowIpv4Reserved_Choice_Enum int32 +type LldpNeighborsState_PortIdType_Enum int32 const ( - PatternFlowIpv4Reserved_Choice_unspecified PatternFlowIpv4Reserved_Choice_Enum = 0 - PatternFlowIpv4Reserved_Choice_value PatternFlowIpv4Reserved_Choice_Enum = 2 - PatternFlowIpv4Reserved_Choice_values PatternFlowIpv4Reserved_Choice_Enum = 3 - PatternFlowIpv4Reserved_Choice_increment PatternFlowIpv4Reserved_Choice_Enum = 4 - PatternFlowIpv4Reserved_Choice_decrement PatternFlowIpv4Reserved_Choice_Enum = 5 + LldpNeighborsState_PortIdType_unspecified LldpNeighborsState_PortIdType_Enum = 0 + LldpNeighborsState_PortIdType_port_component LldpNeighborsState_PortIdType_Enum = 1 + LldpNeighborsState_PortIdType_network_address LldpNeighborsState_PortIdType_Enum = 2 + LldpNeighborsState_PortIdType_agent_circuit_id LldpNeighborsState_PortIdType_Enum = 3 + LldpNeighborsState_PortIdType_mac_address LldpNeighborsState_PortIdType_Enum = 4 + LldpNeighborsState_PortIdType_interface_name LldpNeighborsState_PortIdType_Enum = 5 + LldpNeighborsState_PortIdType_local LldpNeighborsState_PortIdType_Enum = 6 + LldpNeighborsState_PortIdType_interface_alias LldpNeighborsState_PortIdType_Enum = 7 ) -// Enum value maps for PatternFlowIpv4Reserved_Choice_Enum. +// Enum value maps for LldpNeighborsState_PortIdType_Enum. var ( - PatternFlowIpv4Reserved_Choice_Enum_name = map[int32]string{ + LldpNeighborsState_PortIdType_Enum_name = map[int32]string{ 0: "unspecified", - 2: "value", - 3: "values", - 4: "increment", - 5: "decrement", + 1: "port_component", + 2: "network_address", + 3: "agent_circuit_id", + 4: "mac_address", + 5: "interface_name", + 6: "local", + 7: "interface_alias", } - PatternFlowIpv4Reserved_Choice_Enum_value = map[string]int32{ - "unspecified": 0, - "value": 2, - "values": 3, - "increment": 4, - "decrement": 5, + LldpNeighborsState_PortIdType_Enum_value = map[string]int32{ + "unspecified": 0, + "port_component": 1, + "network_address": 2, + "agent_circuit_id": 3, + "mac_address": 4, + "interface_name": 5, + "local": 6, + "interface_alias": 7, } ) -func (x PatternFlowIpv4Reserved_Choice_Enum) Enum() *PatternFlowIpv4Reserved_Choice_Enum { - p := new(PatternFlowIpv4Reserved_Choice_Enum) +func (x LldpNeighborsState_PortIdType_Enum) Enum() *LldpNeighborsState_PortIdType_Enum { + p := new(LldpNeighborsState_PortIdType_Enum) *p = x return p } -func (x PatternFlowIpv4Reserved_Choice_Enum) String() string { +func (x LldpNeighborsState_PortIdType_Enum) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } -func (PatternFlowIpv4Reserved_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { +func (LldpNeighborsState_PortIdType_Enum) Descriptor() protoreflect.EnumDescriptor { return file_otg_proto_enumTypes[181].Descriptor() } -func (PatternFlowIpv4Reserved_Choice_Enum) Type() protoreflect.EnumType { +func (LldpNeighborsState_PortIdType_Enum) Type() protoreflect.EnumType { return &file_otg_proto_enumTypes[181] } -func (x PatternFlowIpv4Reserved_Choice_Enum) Number() protoreflect.EnumNumber { +func (x LldpNeighborsState_PortIdType_Enum) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } -// Deprecated: Use PatternFlowIpv4Reserved_Choice_Enum.Descriptor instead. -func (PatternFlowIpv4Reserved_Choice_Enum) EnumDescriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{380, 0, 0} +// Deprecated: Use LldpNeighborsState_PortIdType_Enum.Descriptor instead. +func (LldpNeighborsState_PortIdType_Enum) EnumDescriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{370, 1, 0} } -type PatternFlowIpv4DontFragment_Choice_Enum int32 +type LldpCapabilityState_CapabilityName_Enum int32 const ( - PatternFlowIpv4DontFragment_Choice_unspecified PatternFlowIpv4DontFragment_Choice_Enum = 0 - PatternFlowIpv4DontFragment_Choice_value PatternFlowIpv4DontFragment_Choice_Enum = 2 - PatternFlowIpv4DontFragment_Choice_values PatternFlowIpv4DontFragment_Choice_Enum = 3 - PatternFlowIpv4DontFragment_Choice_increment PatternFlowIpv4DontFragment_Choice_Enum = 4 - PatternFlowIpv4DontFragment_Choice_decrement PatternFlowIpv4DontFragment_Choice_Enum = 5 + LldpCapabilityState_CapabilityName_unspecified LldpCapabilityState_CapabilityName_Enum = 0 + LldpCapabilityState_CapabilityName_mac_bridge LldpCapabilityState_CapabilityName_Enum = 1 + LldpCapabilityState_CapabilityName_two_port_mac_relay LldpCapabilityState_CapabilityName_Enum = 2 + LldpCapabilityState_CapabilityName_repeater LldpCapabilityState_CapabilityName_Enum = 3 + LldpCapabilityState_CapabilityName_docsis_cable_device LldpCapabilityState_CapabilityName_Enum = 4 + LldpCapabilityState_CapabilityName_s_vlan LldpCapabilityState_CapabilityName_Enum = 5 + LldpCapabilityState_CapabilityName_telephone LldpCapabilityState_CapabilityName_Enum = 6 + LldpCapabilityState_CapabilityName_other LldpCapabilityState_CapabilityName_Enum = 7 + LldpCapabilityState_CapabilityName_router LldpCapabilityState_CapabilityName_Enum = 8 + LldpCapabilityState_CapabilityName_c_vlan LldpCapabilityState_CapabilityName_Enum = 9 + LldpCapabilityState_CapabilityName_station_only LldpCapabilityState_CapabilityName_Enum = 10 + LldpCapabilityState_CapabilityName_wlan_access_point LldpCapabilityState_CapabilityName_Enum = 11 ) -// Enum value maps for PatternFlowIpv4DontFragment_Choice_Enum. +// Enum value maps for LldpCapabilityState_CapabilityName_Enum. var ( - PatternFlowIpv4DontFragment_Choice_Enum_name = map[int32]string{ - 0: "unspecified", - 2: "value", - 3: "values", - 4: "increment", - 5: "decrement", + LldpCapabilityState_CapabilityName_Enum_name = map[int32]string{ + 0: "unspecified", + 1: "mac_bridge", + 2: "two_port_mac_relay", + 3: "repeater", + 4: "docsis_cable_device", + 5: "s_vlan", + 6: "telephone", + 7: "other", + 8: "router", + 9: "c_vlan", + 10: "station_only", + 11: "wlan_access_point", } - PatternFlowIpv4DontFragment_Choice_Enum_value = map[string]int32{ - "unspecified": 0, - "value": 2, - "values": 3, - "increment": 4, - "decrement": 5, + LldpCapabilityState_CapabilityName_Enum_value = map[string]int32{ + "unspecified": 0, + "mac_bridge": 1, + "two_port_mac_relay": 2, + "repeater": 3, + "docsis_cable_device": 4, + "s_vlan": 5, + "telephone": 6, + "other": 7, + "router": 8, + "c_vlan": 9, + "station_only": 10, + "wlan_access_point": 11, } ) -func (x PatternFlowIpv4DontFragment_Choice_Enum) Enum() *PatternFlowIpv4DontFragment_Choice_Enum { - p := new(PatternFlowIpv4DontFragment_Choice_Enum) +func (x LldpCapabilityState_CapabilityName_Enum) Enum() *LldpCapabilityState_CapabilityName_Enum { + p := new(LldpCapabilityState_CapabilityName_Enum) *p = x return p } -func (x PatternFlowIpv4DontFragment_Choice_Enum) String() string { +func (x LldpCapabilityState_CapabilityName_Enum) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } -func (PatternFlowIpv4DontFragment_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { +func (LldpCapabilityState_CapabilityName_Enum) Descriptor() protoreflect.EnumDescriptor { return file_otg_proto_enumTypes[182].Descriptor() } -func (PatternFlowIpv4DontFragment_Choice_Enum) Type() protoreflect.EnumType { +func (LldpCapabilityState_CapabilityName_Enum) Type() protoreflect.EnumType { return &file_otg_proto_enumTypes[182] } -func (x PatternFlowIpv4DontFragment_Choice_Enum) Number() protoreflect.EnumNumber { +func (x LldpCapabilityState_CapabilityName_Enum) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } -// Deprecated: Use PatternFlowIpv4DontFragment_Choice_Enum.Descriptor instead. -func (PatternFlowIpv4DontFragment_Choice_Enum) EnumDescriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{383, 0, 0} +// Deprecated: Use LldpCapabilityState_CapabilityName_Enum.Descriptor instead. +func (LldpCapabilityState_CapabilityName_Enum) EnumDescriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{372, 0, 0} } -type PatternFlowIpv4MoreFragments_Choice_Enum int32 +type RsvpLspState_SessionStatus_Enum int32 const ( - PatternFlowIpv4MoreFragments_Choice_unspecified PatternFlowIpv4MoreFragments_Choice_Enum = 0 - PatternFlowIpv4MoreFragments_Choice_value PatternFlowIpv4MoreFragments_Choice_Enum = 2 - PatternFlowIpv4MoreFragments_Choice_values PatternFlowIpv4MoreFragments_Choice_Enum = 3 - PatternFlowIpv4MoreFragments_Choice_increment PatternFlowIpv4MoreFragments_Choice_Enum = 4 - PatternFlowIpv4MoreFragments_Choice_decrement PatternFlowIpv4MoreFragments_Choice_Enum = 5 + RsvpLspState_SessionStatus_unspecified RsvpLspState_SessionStatus_Enum = 0 + RsvpLspState_SessionStatus_up RsvpLspState_SessionStatus_Enum = 1 + RsvpLspState_SessionStatus_down RsvpLspState_SessionStatus_Enum = 2 ) -// Enum value maps for PatternFlowIpv4MoreFragments_Choice_Enum. +// Enum value maps for RsvpLspState_SessionStatus_Enum. var ( - PatternFlowIpv4MoreFragments_Choice_Enum_name = map[int32]string{ + RsvpLspState_SessionStatus_Enum_name = map[int32]string{ 0: "unspecified", - 2: "value", - 3: "values", - 4: "increment", - 5: "decrement", + 1: "up", + 2: "down", } - PatternFlowIpv4MoreFragments_Choice_Enum_value = map[string]int32{ + RsvpLspState_SessionStatus_Enum_value = map[string]int32{ "unspecified": 0, - "value": 2, - "values": 3, - "increment": 4, - "decrement": 5, + "up": 1, + "down": 2, } ) -func (x PatternFlowIpv4MoreFragments_Choice_Enum) Enum() *PatternFlowIpv4MoreFragments_Choice_Enum { - p := new(PatternFlowIpv4MoreFragments_Choice_Enum) +func (x RsvpLspState_SessionStatus_Enum) Enum() *RsvpLspState_SessionStatus_Enum { + p := new(RsvpLspState_SessionStatus_Enum) *p = x return p } -func (x PatternFlowIpv4MoreFragments_Choice_Enum) String() string { +func (x RsvpLspState_SessionStatus_Enum) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } -func (PatternFlowIpv4MoreFragments_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { +func (RsvpLspState_SessionStatus_Enum) Descriptor() protoreflect.EnumDescriptor { return file_otg_proto_enumTypes[183].Descriptor() } -func (PatternFlowIpv4MoreFragments_Choice_Enum) Type() protoreflect.EnumType { +func (RsvpLspState_SessionStatus_Enum) Type() protoreflect.EnumType { return &file_otg_proto_enumTypes[183] } -func (x PatternFlowIpv4MoreFragments_Choice_Enum) Number() protoreflect.EnumNumber { +func (x RsvpLspState_SessionStatus_Enum) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } -// Deprecated: Use PatternFlowIpv4MoreFragments_Choice_Enum.Descriptor instead. -func (PatternFlowIpv4MoreFragments_Choice_Enum) EnumDescriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{386, 0, 0} +// Deprecated: Use RsvpLspState_SessionStatus_Enum.Descriptor instead. +func (RsvpLspState_SessionStatus_Enum) EnumDescriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{376, 0, 0} } -type PatternFlowIpv4FragmentOffset_Choice_Enum int32 +type RsvpLspState_LastFlapReason_Enum int32 const ( - PatternFlowIpv4FragmentOffset_Choice_unspecified PatternFlowIpv4FragmentOffset_Choice_Enum = 0 - PatternFlowIpv4FragmentOffset_Choice_value PatternFlowIpv4FragmentOffset_Choice_Enum = 2 - PatternFlowIpv4FragmentOffset_Choice_values PatternFlowIpv4FragmentOffset_Choice_Enum = 3 - PatternFlowIpv4FragmentOffset_Choice_increment PatternFlowIpv4FragmentOffset_Choice_Enum = 4 - PatternFlowIpv4FragmentOffset_Choice_decrement PatternFlowIpv4FragmentOffset_Choice_Enum = 5 + RsvpLspState_LastFlapReason_unspecified RsvpLspState_LastFlapReason_Enum = 0 + RsvpLspState_LastFlapReason_resv_tear RsvpLspState_LastFlapReason_Enum = 1 + RsvpLspState_LastFlapReason_path_tear RsvpLspState_LastFlapReason_Enum = 2 + RsvpLspState_LastFlapReason_path_timeout RsvpLspState_LastFlapReason_Enum = 3 ) -// Enum value maps for PatternFlowIpv4FragmentOffset_Choice_Enum. +// Enum value maps for RsvpLspState_LastFlapReason_Enum. var ( - PatternFlowIpv4FragmentOffset_Choice_Enum_name = map[int32]string{ + RsvpLspState_LastFlapReason_Enum_name = map[int32]string{ 0: "unspecified", - 2: "value", - 3: "values", - 4: "increment", - 5: "decrement", + 1: "resv_tear", + 2: "path_tear", + 3: "path_timeout", } - PatternFlowIpv4FragmentOffset_Choice_Enum_value = map[string]int32{ - "unspecified": 0, - "value": 2, - "values": 3, - "increment": 4, - "decrement": 5, + RsvpLspState_LastFlapReason_Enum_value = map[string]int32{ + "unspecified": 0, + "resv_tear": 1, + "path_tear": 2, + "path_timeout": 3, } ) -func (x PatternFlowIpv4FragmentOffset_Choice_Enum) Enum() *PatternFlowIpv4FragmentOffset_Choice_Enum { - p := new(PatternFlowIpv4FragmentOffset_Choice_Enum) +func (x RsvpLspState_LastFlapReason_Enum) Enum() *RsvpLspState_LastFlapReason_Enum { + p := new(RsvpLspState_LastFlapReason_Enum) *p = x return p } -func (x PatternFlowIpv4FragmentOffset_Choice_Enum) String() string { +func (x RsvpLspState_LastFlapReason_Enum) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } -func (PatternFlowIpv4FragmentOffset_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { +func (RsvpLspState_LastFlapReason_Enum) Descriptor() protoreflect.EnumDescriptor { return file_otg_proto_enumTypes[184].Descriptor() } -func (PatternFlowIpv4FragmentOffset_Choice_Enum) Type() protoreflect.EnumType { +func (RsvpLspState_LastFlapReason_Enum) Type() protoreflect.EnumType { return &file_otg_proto_enumTypes[184] } -func (x PatternFlowIpv4FragmentOffset_Choice_Enum) Number() protoreflect.EnumNumber { +func (x RsvpLspState_LastFlapReason_Enum) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } -// Deprecated: Use PatternFlowIpv4FragmentOffset_Choice_Enum.Descriptor instead. -func (PatternFlowIpv4FragmentOffset_Choice_Enum) EnumDescriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{389, 0, 0} +// Deprecated: Use RsvpLspState_LastFlapReason_Enum.Descriptor instead. +func (RsvpLspState_LastFlapReason_Enum) EnumDescriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{376, 1, 0} } -type PatternFlowIpv4TimeToLive_Choice_Enum int32 +type RsvpLspIpv4Ero_Type_Enum int32 const ( - PatternFlowIpv4TimeToLive_Choice_unspecified PatternFlowIpv4TimeToLive_Choice_Enum = 0 - PatternFlowIpv4TimeToLive_Choice_value PatternFlowIpv4TimeToLive_Choice_Enum = 2 - PatternFlowIpv4TimeToLive_Choice_values PatternFlowIpv4TimeToLive_Choice_Enum = 3 - PatternFlowIpv4TimeToLive_Choice_increment PatternFlowIpv4TimeToLive_Choice_Enum = 4 - PatternFlowIpv4TimeToLive_Choice_decrement PatternFlowIpv4TimeToLive_Choice_Enum = 5 + RsvpLspIpv4Ero_Type_unspecified RsvpLspIpv4Ero_Type_Enum = 0 + RsvpLspIpv4Ero_Type_ipv4 RsvpLspIpv4Ero_Type_Enum = 1 + RsvpLspIpv4Ero_Type_ipv6 RsvpLspIpv4Ero_Type_Enum = 2 + RsvpLspIpv4Ero_Type_asn RsvpLspIpv4Ero_Type_Enum = 3 + RsvpLspIpv4Ero_Type_asn4 RsvpLspIpv4Ero_Type_Enum = 4 + RsvpLspIpv4Ero_Type_label RsvpLspIpv4Ero_Type_Enum = 5 + RsvpLspIpv4Ero_Type_unnumbered_interface RsvpLspIpv4Ero_Type_Enum = 6 ) -// Enum value maps for PatternFlowIpv4TimeToLive_Choice_Enum. +// Enum value maps for RsvpLspIpv4Ero_Type_Enum. var ( - PatternFlowIpv4TimeToLive_Choice_Enum_name = map[int32]string{ + RsvpLspIpv4Ero_Type_Enum_name = map[int32]string{ 0: "unspecified", - 2: "value", - 3: "values", - 4: "increment", - 5: "decrement", + 1: "ipv4", + 2: "ipv6", + 3: "asn", + 4: "asn4", + 5: "label", + 6: "unnumbered_interface", } - PatternFlowIpv4TimeToLive_Choice_Enum_value = map[string]int32{ - "unspecified": 0, - "value": 2, - "values": 3, - "increment": 4, - "decrement": 5, + RsvpLspIpv4Ero_Type_Enum_value = map[string]int32{ + "unspecified": 0, + "ipv4": 1, + "ipv6": 2, + "asn": 3, + "asn4": 4, + "label": 5, + "unnumbered_interface": 6, } ) -func (x PatternFlowIpv4TimeToLive_Choice_Enum) Enum() *PatternFlowIpv4TimeToLive_Choice_Enum { - p := new(PatternFlowIpv4TimeToLive_Choice_Enum) +func (x RsvpLspIpv4Ero_Type_Enum) Enum() *RsvpLspIpv4Ero_Type_Enum { + p := new(RsvpLspIpv4Ero_Type_Enum) *p = x return p } -func (x PatternFlowIpv4TimeToLive_Choice_Enum) String() string { +func (x RsvpLspIpv4Ero_Type_Enum) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } -func (PatternFlowIpv4TimeToLive_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { +func (RsvpLspIpv4Ero_Type_Enum) Descriptor() protoreflect.EnumDescriptor { return file_otg_proto_enumTypes[185].Descriptor() } -func (PatternFlowIpv4TimeToLive_Choice_Enum) Type() protoreflect.EnumType { +func (RsvpLspIpv4Ero_Type_Enum) Type() protoreflect.EnumType { return &file_otg_proto_enumTypes[185] } -func (x PatternFlowIpv4TimeToLive_Choice_Enum) Number() protoreflect.EnumNumber { +func (x RsvpLspIpv4Ero_Type_Enum) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } -// Deprecated: Use PatternFlowIpv4TimeToLive_Choice_Enum.Descriptor instead. -func (PatternFlowIpv4TimeToLive_Choice_Enum) EnumDescriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{392, 0, 0} +// Deprecated: Use RsvpLspIpv4Ero_Type_Enum.Descriptor instead. +func (RsvpLspIpv4Ero_Type_Enum) EnumDescriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{378, 0, 0} } -type PatternFlowIpv4Protocol_Choice_Enum int32 +type PatternFlowEthernetDst_Choice_Enum int32 const ( - PatternFlowIpv4Protocol_Choice_unspecified PatternFlowIpv4Protocol_Choice_Enum = 0 - PatternFlowIpv4Protocol_Choice_value PatternFlowIpv4Protocol_Choice_Enum = 2 - PatternFlowIpv4Protocol_Choice_values PatternFlowIpv4Protocol_Choice_Enum = 3 - PatternFlowIpv4Protocol_Choice_auto PatternFlowIpv4Protocol_Choice_Enum = 1 - PatternFlowIpv4Protocol_Choice_increment PatternFlowIpv4Protocol_Choice_Enum = 4 - PatternFlowIpv4Protocol_Choice_decrement PatternFlowIpv4Protocol_Choice_Enum = 5 + PatternFlowEthernetDst_Choice_unspecified PatternFlowEthernetDst_Choice_Enum = 0 + PatternFlowEthernetDst_Choice_value PatternFlowEthernetDst_Choice_Enum = 2 + PatternFlowEthernetDst_Choice_values PatternFlowEthernetDst_Choice_Enum = 3 + PatternFlowEthernetDst_Choice_auto PatternFlowEthernetDst_Choice_Enum = 1 + PatternFlowEthernetDst_Choice_increment PatternFlowEthernetDst_Choice_Enum = 4 + PatternFlowEthernetDst_Choice_decrement PatternFlowEthernetDst_Choice_Enum = 5 ) -// Enum value maps for PatternFlowIpv4Protocol_Choice_Enum. +// Enum value maps for PatternFlowEthernetDst_Choice_Enum. var ( - PatternFlowIpv4Protocol_Choice_Enum_name = map[int32]string{ + PatternFlowEthernetDst_Choice_Enum_name = map[int32]string{ 0: "unspecified", 2: "value", 3: "values", @@ -10213,7 +10075,7 @@ var ( 4: "increment", 5: "decrement", } - PatternFlowIpv4Protocol_Choice_Enum_value = map[string]int32{ + PatternFlowEthernetDst_Choice_Enum_value = map[string]int32{ "unspecified": 0, "value": 2, "values": 3, @@ -10223,151 +10085,166 @@ var ( } ) -func (x PatternFlowIpv4Protocol_Choice_Enum) Enum() *PatternFlowIpv4Protocol_Choice_Enum { - p := new(PatternFlowIpv4Protocol_Choice_Enum) - *p = x +func (x PatternFlowEthernetDst_Choice_Enum) Enum() *PatternFlowEthernetDst_Choice_Enum { + p := new(PatternFlowEthernetDst_Choice_Enum) + *p = x return p } -func (x PatternFlowIpv4Protocol_Choice_Enum) String() string { +func (x PatternFlowEthernetDst_Choice_Enum) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } -func (PatternFlowIpv4Protocol_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { +func (PatternFlowEthernetDst_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { return file_otg_proto_enumTypes[186].Descriptor() } -func (PatternFlowIpv4Protocol_Choice_Enum) Type() protoreflect.EnumType { +func (PatternFlowEthernetDst_Choice_Enum) Type() protoreflect.EnumType { return &file_otg_proto_enumTypes[186] } -func (x PatternFlowIpv4Protocol_Choice_Enum) Number() protoreflect.EnumNumber { +func (x PatternFlowEthernetDst_Choice_Enum) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } -// Deprecated: Use PatternFlowIpv4Protocol_Choice_Enum.Descriptor instead. -func (PatternFlowIpv4Protocol_Choice_Enum) EnumDescriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{395, 0, 0} +// Deprecated: Use PatternFlowEthernetDst_Choice_Enum.Descriptor instead. +func (PatternFlowEthernetDst_Choice_Enum) EnumDescriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{382, 0, 0} } -type PatternFlowIpv4HeaderChecksum_Choice_Enum int32 +type PatternFlowEthernetSrc_Choice_Enum int32 const ( - PatternFlowIpv4HeaderChecksum_Choice_unspecified PatternFlowIpv4HeaderChecksum_Choice_Enum = 0 - PatternFlowIpv4HeaderChecksum_Choice_generated PatternFlowIpv4HeaderChecksum_Choice_Enum = 1 - PatternFlowIpv4HeaderChecksum_Choice_custom PatternFlowIpv4HeaderChecksum_Choice_Enum = 2 + PatternFlowEthernetSrc_Choice_unspecified PatternFlowEthernetSrc_Choice_Enum = 0 + PatternFlowEthernetSrc_Choice_value PatternFlowEthernetSrc_Choice_Enum = 2 + PatternFlowEthernetSrc_Choice_values PatternFlowEthernetSrc_Choice_Enum = 3 + PatternFlowEthernetSrc_Choice_increment PatternFlowEthernetSrc_Choice_Enum = 4 + PatternFlowEthernetSrc_Choice_decrement PatternFlowEthernetSrc_Choice_Enum = 5 ) -// Enum value maps for PatternFlowIpv4HeaderChecksum_Choice_Enum. +// Enum value maps for PatternFlowEthernetSrc_Choice_Enum. var ( - PatternFlowIpv4HeaderChecksum_Choice_Enum_name = map[int32]string{ + PatternFlowEthernetSrc_Choice_Enum_name = map[int32]string{ 0: "unspecified", - 1: "generated", - 2: "custom", + 2: "value", + 3: "values", + 4: "increment", + 5: "decrement", } - PatternFlowIpv4HeaderChecksum_Choice_Enum_value = map[string]int32{ + PatternFlowEthernetSrc_Choice_Enum_value = map[string]int32{ "unspecified": 0, - "generated": 1, - "custom": 2, + "value": 2, + "values": 3, + "increment": 4, + "decrement": 5, } ) -func (x PatternFlowIpv4HeaderChecksum_Choice_Enum) Enum() *PatternFlowIpv4HeaderChecksum_Choice_Enum { - p := new(PatternFlowIpv4HeaderChecksum_Choice_Enum) +func (x PatternFlowEthernetSrc_Choice_Enum) Enum() *PatternFlowEthernetSrc_Choice_Enum { + p := new(PatternFlowEthernetSrc_Choice_Enum) *p = x return p } -func (x PatternFlowIpv4HeaderChecksum_Choice_Enum) String() string { +func (x PatternFlowEthernetSrc_Choice_Enum) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } -func (PatternFlowIpv4HeaderChecksum_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { +func (PatternFlowEthernetSrc_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { return file_otg_proto_enumTypes[187].Descriptor() } -func (PatternFlowIpv4HeaderChecksum_Choice_Enum) Type() protoreflect.EnumType { +func (PatternFlowEthernetSrc_Choice_Enum) Type() protoreflect.EnumType { return &file_otg_proto_enumTypes[187] } -func (x PatternFlowIpv4HeaderChecksum_Choice_Enum) Number() protoreflect.EnumNumber { +func (x PatternFlowEthernetSrc_Choice_Enum) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } -// Deprecated: Use PatternFlowIpv4HeaderChecksum_Choice_Enum.Descriptor instead. -func (PatternFlowIpv4HeaderChecksum_Choice_Enum) EnumDescriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{396, 0, 0} +// Deprecated: Use PatternFlowEthernetSrc_Choice_Enum.Descriptor instead. +func (PatternFlowEthernetSrc_Choice_Enum) EnumDescriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{385, 0, 0} } -type PatternFlowIpv4HeaderChecksum_Generated_Enum int32 +type PatternFlowEthernetEtherType_Choice_Enum int32 const ( - PatternFlowIpv4HeaderChecksum_Generated_unspecified PatternFlowIpv4HeaderChecksum_Generated_Enum = 0 - PatternFlowIpv4HeaderChecksum_Generated_good PatternFlowIpv4HeaderChecksum_Generated_Enum = 1 - PatternFlowIpv4HeaderChecksum_Generated_bad PatternFlowIpv4HeaderChecksum_Generated_Enum = 2 + PatternFlowEthernetEtherType_Choice_unspecified PatternFlowEthernetEtherType_Choice_Enum = 0 + PatternFlowEthernetEtherType_Choice_value PatternFlowEthernetEtherType_Choice_Enum = 2 + PatternFlowEthernetEtherType_Choice_values PatternFlowEthernetEtherType_Choice_Enum = 3 + PatternFlowEthernetEtherType_Choice_auto PatternFlowEthernetEtherType_Choice_Enum = 1 + PatternFlowEthernetEtherType_Choice_increment PatternFlowEthernetEtherType_Choice_Enum = 4 + PatternFlowEthernetEtherType_Choice_decrement PatternFlowEthernetEtherType_Choice_Enum = 5 ) -// Enum value maps for PatternFlowIpv4HeaderChecksum_Generated_Enum. +// Enum value maps for PatternFlowEthernetEtherType_Choice_Enum. var ( - PatternFlowIpv4HeaderChecksum_Generated_Enum_name = map[int32]string{ + PatternFlowEthernetEtherType_Choice_Enum_name = map[int32]string{ 0: "unspecified", - 1: "good", - 2: "bad", + 2: "value", + 3: "values", + 1: "auto", + 4: "increment", + 5: "decrement", } - PatternFlowIpv4HeaderChecksum_Generated_Enum_value = map[string]int32{ + PatternFlowEthernetEtherType_Choice_Enum_value = map[string]int32{ "unspecified": 0, - "good": 1, - "bad": 2, + "value": 2, + "values": 3, + "auto": 1, + "increment": 4, + "decrement": 5, } ) -func (x PatternFlowIpv4HeaderChecksum_Generated_Enum) Enum() *PatternFlowIpv4HeaderChecksum_Generated_Enum { - p := new(PatternFlowIpv4HeaderChecksum_Generated_Enum) +func (x PatternFlowEthernetEtherType_Choice_Enum) Enum() *PatternFlowEthernetEtherType_Choice_Enum { + p := new(PatternFlowEthernetEtherType_Choice_Enum) *p = x return p } -func (x PatternFlowIpv4HeaderChecksum_Generated_Enum) String() string { +func (x PatternFlowEthernetEtherType_Choice_Enum) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } -func (PatternFlowIpv4HeaderChecksum_Generated_Enum) Descriptor() protoreflect.EnumDescriptor { +func (PatternFlowEthernetEtherType_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { return file_otg_proto_enumTypes[188].Descriptor() } -func (PatternFlowIpv4HeaderChecksum_Generated_Enum) Type() protoreflect.EnumType { +func (PatternFlowEthernetEtherType_Choice_Enum) Type() protoreflect.EnumType { return &file_otg_proto_enumTypes[188] } -func (x PatternFlowIpv4HeaderChecksum_Generated_Enum) Number() protoreflect.EnumNumber { +func (x PatternFlowEthernetEtherType_Choice_Enum) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } -// Deprecated: Use PatternFlowIpv4HeaderChecksum_Generated_Enum.Descriptor instead. -func (PatternFlowIpv4HeaderChecksum_Generated_Enum) EnumDescriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{396, 1, 0} +// Deprecated: Use PatternFlowEthernetEtherType_Choice_Enum.Descriptor instead. +func (PatternFlowEthernetEtherType_Choice_Enum) EnumDescriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{388, 0, 0} } -type PatternFlowIpv4Src_Choice_Enum int32 +type PatternFlowEthernetPfcQueue_Choice_Enum int32 const ( - PatternFlowIpv4Src_Choice_unspecified PatternFlowIpv4Src_Choice_Enum = 0 - PatternFlowIpv4Src_Choice_value PatternFlowIpv4Src_Choice_Enum = 2 - PatternFlowIpv4Src_Choice_values PatternFlowIpv4Src_Choice_Enum = 3 - PatternFlowIpv4Src_Choice_increment PatternFlowIpv4Src_Choice_Enum = 4 - PatternFlowIpv4Src_Choice_decrement PatternFlowIpv4Src_Choice_Enum = 5 + PatternFlowEthernetPfcQueue_Choice_unspecified PatternFlowEthernetPfcQueue_Choice_Enum = 0 + PatternFlowEthernetPfcQueue_Choice_value PatternFlowEthernetPfcQueue_Choice_Enum = 2 + PatternFlowEthernetPfcQueue_Choice_values PatternFlowEthernetPfcQueue_Choice_Enum = 3 + PatternFlowEthernetPfcQueue_Choice_increment PatternFlowEthernetPfcQueue_Choice_Enum = 4 + PatternFlowEthernetPfcQueue_Choice_decrement PatternFlowEthernetPfcQueue_Choice_Enum = 5 ) -// Enum value maps for PatternFlowIpv4Src_Choice_Enum. +// Enum value maps for PatternFlowEthernetPfcQueue_Choice_Enum. var ( - PatternFlowIpv4Src_Choice_Enum_name = map[int32]string{ + PatternFlowEthernetPfcQueue_Choice_Enum_name = map[int32]string{ 0: "unspecified", 2: "value", 3: "values", 4: "increment", 5: "decrement", } - PatternFlowIpv4Src_Choice_Enum_value = map[string]int32{ + PatternFlowEthernetPfcQueue_Choice_Enum_value = map[string]int32{ "unspecified": 0, "value": 2, "values": 3, @@ -10376,53 +10253,53 @@ var ( } ) -func (x PatternFlowIpv4Src_Choice_Enum) Enum() *PatternFlowIpv4Src_Choice_Enum { - p := new(PatternFlowIpv4Src_Choice_Enum) +func (x PatternFlowEthernetPfcQueue_Choice_Enum) Enum() *PatternFlowEthernetPfcQueue_Choice_Enum { + p := new(PatternFlowEthernetPfcQueue_Choice_Enum) *p = x return p } -func (x PatternFlowIpv4Src_Choice_Enum) String() string { +func (x PatternFlowEthernetPfcQueue_Choice_Enum) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } -func (PatternFlowIpv4Src_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { +func (PatternFlowEthernetPfcQueue_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { return file_otg_proto_enumTypes[189].Descriptor() } -func (PatternFlowIpv4Src_Choice_Enum) Type() protoreflect.EnumType { +func (PatternFlowEthernetPfcQueue_Choice_Enum) Type() protoreflect.EnumType { return &file_otg_proto_enumTypes[189] } -func (x PatternFlowIpv4Src_Choice_Enum) Number() protoreflect.EnumNumber { +func (x PatternFlowEthernetPfcQueue_Choice_Enum) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } -// Deprecated: Use PatternFlowIpv4Src_Choice_Enum.Descriptor instead. -func (PatternFlowIpv4Src_Choice_Enum) EnumDescriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{399, 0, 0} +// Deprecated: Use PatternFlowEthernetPfcQueue_Choice_Enum.Descriptor instead. +func (PatternFlowEthernetPfcQueue_Choice_Enum) EnumDescriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{391, 0, 0} } -type PatternFlowIpv4Dst_Choice_Enum int32 +type PatternFlowVlanPriority_Choice_Enum int32 const ( - PatternFlowIpv4Dst_Choice_unspecified PatternFlowIpv4Dst_Choice_Enum = 0 - PatternFlowIpv4Dst_Choice_value PatternFlowIpv4Dst_Choice_Enum = 2 - PatternFlowIpv4Dst_Choice_values PatternFlowIpv4Dst_Choice_Enum = 3 - PatternFlowIpv4Dst_Choice_increment PatternFlowIpv4Dst_Choice_Enum = 4 - PatternFlowIpv4Dst_Choice_decrement PatternFlowIpv4Dst_Choice_Enum = 5 + PatternFlowVlanPriority_Choice_unspecified PatternFlowVlanPriority_Choice_Enum = 0 + PatternFlowVlanPriority_Choice_value PatternFlowVlanPriority_Choice_Enum = 2 + PatternFlowVlanPriority_Choice_values PatternFlowVlanPriority_Choice_Enum = 3 + PatternFlowVlanPriority_Choice_increment PatternFlowVlanPriority_Choice_Enum = 4 + PatternFlowVlanPriority_Choice_decrement PatternFlowVlanPriority_Choice_Enum = 5 ) -// Enum value maps for PatternFlowIpv4Dst_Choice_Enum. +// Enum value maps for PatternFlowVlanPriority_Choice_Enum. var ( - PatternFlowIpv4Dst_Choice_Enum_name = map[int32]string{ + PatternFlowVlanPriority_Choice_Enum_name = map[int32]string{ 0: "unspecified", 2: "value", 3: "values", 4: "increment", 5: "decrement", } - PatternFlowIpv4Dst_Choice_Enum_value = map[string]int32{ + PatternFlowVlanPriority_Choice_Enum_value = map[string]int32{ "unspecified": 0, "value": 2, "values": 3, @@ -10431,53 +10308,53 @@ var ( } ) -func (x PatternFlowIpv4Dst_Choice_Enum) Enum() *PatternFlowIpv4Dst_Choice_Enum { - p := new(PatternFlowIpv4Dst_Choice_Enum) +func (x PatternFlowVlanPriority_Choice_Enum) Enum() *PatternFlowVlanPriority_Choice_Enum { + p := new(PatternFlowVlanPriority_Choice_Enum) *p = x return p } -func (x PatternFlowIpv4Dst_Choice_Enum) String() string { +func (x PatternFlowVlanPriority_Choice_Enum) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } -func (PatternFlowIpv4Dst_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { +func (PatternFlowVlanPriority_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { return file_otg_proto_enumTypes[190].Descriptor() } -func (PatternFlowIpv4Dst_Choice_Enum) Type() protoreflect.EnumType { +func (PatternFlowVlanPriority_Choice_Enum) Type() protoreflect.EnumType { return &file_otg_proto_enumTypes[190] } -func (x PatternFlowIpv4Dst_Choice_Enum) Number() protoreflect.EnumNumber { +func (x PatternFlowVlanPriority_Choice_Enum) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } -// Deprecated: Use PatternFlowIpv4Dst_Choice_Enum.Descriptor instead. -func (PatternFlowIpv4Dst_Choice_Enum) EnumDescriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{402, 0, 0} +// Deprecated: Use PatternFlowVlanPriority_Choice_Enum.Descriptor instead. +func (PatternFlowVlanPriority_Choice_Enum) EnumDescriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{394, 0, 0} } -type PatternFlowIpv4PriorityRaw_Choice_Enum int32 +type PatternFlowVlanCfi_Choice_Enum int32 const ( - PatternFlowIpv4PriorityRaw_Choice_unspecified PatternFlowIpv4PriorityRaw_Choice_Enum = 0 - PatternFlowIpv4PriorityRaw_Choice_value PatternFlowIpv4PriorityRaw_Choice_Enum = 2 - PatternFlowIpv4PriorityRaw_Choice_values PatternFlowIpv4PriorityRaw_Choice_Enum = 3 - PatternFlowIpv4PriorityRaw_Choice_increment PatternFlowIpv4PriorityRaw_Choice_Enum = 4 - PatternFlowIpv4PriorityRaw_Choice_decrement PatternFlowIpv4PriorityRaw_Choice_Enum = 5 + PatternFlowVlanCfi_Choice_unspecified PatternFlowVlanCfi_Choice_Enum = 0 + PatternFlowVlanCfi_Choice_value PatternFlowVlanCfi_Choice_Enum = 2 + PatternFlowVlanCfi_Choice_values PatternFlowVlanCfi_Choice_Enum = 3 + PatternFlowVlanCfi_Choice_increment PatternFlowVlanCfi_Choice_Enum = 4 + PatternFlowVlanCfi_Choice_decrement PatternFlowVlanCfi_Choice_Enum = 5 ) -// Enum value maps for PatternFlowIpv4PriorityRaw_Choice_Enum. +// Enum value maps for PatternFlowVlanCfi_Choice_Enum. var ( - PatternFlowIpv4PriorityRaw_Choice_Enum_name = map[int32]string{ + PatternFlowVlanCfi_Choice_Enum_name = map[int32]string{ 0: "unspecified", 2: "value", 3: "values", 4: "increment", 5: "decrement", } - PatternFlowIpv4PriorityRaw_Choice_Enum_value = map[string]int32{ + PatternFlowVlanCfi_Choice_Enum_value = map[string]int32{ "unspecified": 0, "value": 2, "values": 3, @@ -10486,53 +10363,53 @@ var ( } ) -func (x PatternFlowIpv4PriorityRaw_Choice_Enum) Enum() *PatternFlowIpv4PriorityRaw_Choice_Enum { - p := new(PatternFlowIpv4PriorityRaw_Choice_Enum) +func (x PatternFlowVlanCfi_Choice_Enum) Enum() *PatternFlowVlanCfi_Choice_Enum { + p := new(PatternFlowVlanCfi_Choice_Enum) *p = x return p } -func (x PatternFlowIpv4PriorityRaw_Choice_Enum) String() string { +func (x PatternFlowVlanCfi_Choice_Enum) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } -func (PatternFlowIpv4PriorityRaw_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { +func (PatternFlowVlanCfi_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { return file_otg_proto_enumTypes[191].Descriptor() } -func (PatternFlowIpv4PriorityRaw_Choice_Enum) Type() protoreflect.EnumType { +func (PatternFlowVlanCfi_Choice_Enum) Type() protoreflect.EnumType { return &file_otg_proto_enumTypes[191] } -func (x PatternFlowIpv4PriorityRaw_Choice_Enum) Number() protoreflect.EnumNumber { +func (x PatternFlowVlanCfi_Choice_Enum) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } -// Deprecated: Use PatternFlowIpv4PriorityRaw_Choice_Enum.Descriptor instead. -func (PatternFlowIpv4PriorityRaw_Choice_Enum) EnumDescriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{405, 0, 0} +// Deprecated: Use PatternFlowVlanCfi_Choice_Enum.Descriptor instead. +func (PatternFlowVlanCfi_Choice_Enum) EnumDescriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{397, 0, 0} } -type PatternFlowIpv4DscpPhb_Choice_Enum int32 +type PatternFlowVlanId_Choice_Enum int32 const ( - PatternFlowIpv4DscpPhb_Choice_unspecified PatternFlowIpv4DscpPhb_Choice_Enum = 0 - PatternFlowIpv4DscpPhb_Choice_value PatternFlowIpv4DscpPhb_Choice_Enum = 2 - PatternFlowIpv4DscpPhb_Choice_values PatternFlowIpv4DscpPhb_Choice_Enum = 3 - PatternFlowIpv4DscpPhb_Choice_increment PatternFlowIpv4DscpPhb_Choice_Enum = 4 - PatternFlowIpv4DscpPhb_Choice_decrement PatternFlowIpv4DscpPhb_Choice_Enum = 5 + PatternFlowVlanId_Choice_unspecified PatternFlowVlanId_Choice_Enum = 0 + PatternFlowVlanId_Choice_value PatternFlowVlanId_Choice_Enum = 2 + PatternFlowVlanId_Choice_values PatternFlowVlanId_Choice_Enum = 3 + PatternFlowVlanId_Choice_increment PatternFlowVlanId_Choice_Enum = 4 + PatternFlowVlanId_Choice_decrement PatternFlowVlanId_Choice_Enum = 5 ) -// Enum value maps for PatternFlowIpv4DscpPhb_Choice_Enum. +// Enum value maps for PatternFlowVlanId_Choice_Enum. var ( - PatternFlowIpv4DscpPhb_Choice_Enum_name = map[int32]string{ + PatternFlowVlanId_Choice_Enum_name = map[int32]string{ 0: "unspecified", 2: "value", 3: "values", 4: "increment", 5: "decrement", } - PatternFlowIpv4DscpPhb_Choice_Enum_value = map[string]int32{ + PatternFlowVlanId_Choice_Enum_value = map[string]int32{ "unspecified": 0, "value": 2, "values": 3, @@ -10541,53 +10418,53 @@ var ( } ) -func (x PatternFlowIpv4DscpPhb_Choice_Enum) Enum() *PatternFlowIpv4DscpPhb_Choice_Enum { - p := new(PatternFlowIpv4DscpPhb_Choice_Enum) +func (x PatternFlowVlanId_Choice_Enum) Enum() *PatternFlowVlanId_Choice_Enum { + p := new(PatternFlowVlanId_Choice_Enum) *p = x return p } -func (x PatternFlowIpv4DscpPhb_Choice_Enum) String() string { +func (x PatternFlowVlanId_Choice_Enum) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } -func (PatternFlowIpv4DscpPhb_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { +func (PatternFlowVlanId_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { return file_otg_proto_enumTypes[192].Descriptor() } -func (PatternFlowIpv4DscpPhb_Choice_Enum) Type() protoreflect.EnumType { +func (PatternFlowVlanId_Choice_Enum) Type() protoreflect.EnumType { return &file_otg_proto_enumTypes[192] } -func (x PatternFlowIpv4DscpPhb_Choice_Enum) Number() protoreflect.EnumNumber { +func (x PatternFlowVlanId_Choice_Enum) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } -// Deprecated: Use PatternFlowIpv4DscpPhb_Choice_Enum.Descriptor instead. -func (PatternFlowIpv4DscpPhb_Choice_Enum) EnumDescriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{408, 0, 0} +// Deprecated: Use PatternFlowVlanId_Choice_Enum.Descriptor instead. +func (PatternFlowVlanId_Choice_Enum) EnumDescriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{400, 0, 0} } -type PatternFlowIpv4DscpEcn_Choice_Enum int32 +type PatternFlowVlanTpid_Choice_Enum int32 const ( - PatternFlowIpv4DscpEcn_Choice_unspecified PatternFlowIpv4DscpEcn_Choice_Enum = 0 - PatternFlowIpv4DscpEcn_Choice_value PatternFlowIpv4DscpEcn_Choice_Enum = 2 - PatternFlowIpv4DscpEcn_Choice_values PatternFlowIpv4DscpEcn_Choice_Enum = 3 - PatternFlowIpv4DscpEcn_Choice_increment PatternFlowIpv4DscpEcn_Choice_Enum = 4 - PatternFlowIpv4DscpEcn_Choice_decrement PatternFlowIpv4DscpEcn_Choice_Enum = 5 + PatternFlowVlanTpid_Choice_unspecified PatternFlowVlanTpid_Choice_Enum = 0 + PatternFlowVlanTpid_Choice_value PatternFlowVlanTpid_Choice_Enum = 2 + PatternFlowVlanTpid_Choice_values PatternFlowVlanTpid_Choice_Enum = 3 + PatternFlowVlanTpid_Choice_increment PatternFlowVlanTpid_Choice_Enum = 4 + PatternFlowVlanTpid_Choice_decrement PatternFlowVlanTpid_Choice_Enum = 5 ) -// Enum value maps for PatternFlowIpv4DscpEcn_Choice_Enum. +// Enum value maps for PatternFlowVlanTpid_Choice_Enum. var ( - PatternFlowIpv4DscpEcn_Choice_Enum_name = map[int32]string{ + PatternFlowVlanTpid_Choice_Enum_name = map[int32]string{ 0: "unspecified", 2: "value", 3: "values", 4: "increment", 5: "decrement", } - PatternFlowIpv4DscpEcn_Choice_Enum_value = map[string]int32{ + PatternFlowVlanTpid_Choice_Enum_value = map[string]int32{ "unspecified": 0, "value": 2, "values": 3, @@ -10596,53 +10473,53 @@ var ( } ) -func (x PatternFlowIpv4DscpEcn_Choice_Enum) Enum() *PatternFlowIpv4DscpEcn_Choice_Enum { - p := new(PatternFlowIpv4DscpEcn_Choice_Enum) +func (x PatternFlowVlanTpid_Choice_Enum) Enum() *PatternFlowVlanTpid_Choice_Enum { + p := new(PatternFlowVlanTpid_Choice_Enum) *p = x return p } -func (x PatternFlowIpv4DscpEcn_Choice_Enum) String() string { +func (x PatternFlowVlanTpid_Choice_Enum) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } -func (PatternFlowIpv4DscpEcn_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { +func (PatternFlowVlanTpid_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { return file_otg_proto_enumTypes[193].Descriptor() } -func (PatternFlowIpv4DscpEcn_Choice_Enum) Type() protoreflect.EnumType { +func (PatternFlowVlanTpid_Choice_Enum) Type() protoreflect.EnumType { return &file_otg_proto_enumTypes[193] } -func (x PatternFlowIpv4DscpEcn_Choice_Enum) Number() protoreflect.EnumNumber { +func (x PatternFlowVlanTpid_Choice_Enum) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } -// Deprecated: Use PatternFlowIpv4DscpEcn_Choice_Enum.Descriptor instead. -func (PatternFlowIpv4DscpEcn_Choice_Enum) EnumDescriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{411, 0, 0} +// Deprecated: Use PatternFlowVlanTpid_Choice_Enum.Descriptor instead. +func (PatternFlowVlanTpid_Choice_Enum) EnumDescriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{403, 0, 0} } -type PatternFlowIpv4TosPrecedence_Choice_Enum int32 +type PatternFlowVxlanFlags_Choice_Enum int32 const ( - PatternFlowIpv4TosPrecedence_Choice_unspecified PatternFlowIpv4TosPrecedence_Choice_Enum = 0 - PatternFlowIpv4TosPrecedence_Choice_value PatternFlowIpv4TosPrecedence_Choice_Enum = 2 - PatternFlowIpv4TosPrecedence_Choice_values PatternFlowIpv4TosPrecedence_Choice_Enum = 3 - PatternFlowIpv4TosPrecedence_Choice_increment PatternFlowIpv4TosPrecedence_Choice_Enum = 4 - PatternFlowIpv4TosPrecedence_Choice_decrement PatternFlowIpv4TosPrecedence_Choice_Enum = 5 + PatternFlowVxlanFlags_Choice_unspecified PatternFlowVxlanFlags_Choice_Enum = 0 + PatternFlowVxlanFlags_Choice_value PatternFlowVxlanFlags_Choice_Enum = 2 + PatternFlowVxlanFlags_Choice_values PatternFlowVxlanFlags_Choice_Enum = 3 + PatternFlowVxlanFlags_Choice_increment PatternFlowVxlanFlags_Choice_Enum = 4 + PatternFlowVxlanFlags_Choice_decrement PatternFlowVxlanFlags_Choice_Enum = 5 ) -// Enum value maps for PatternFlowIpv4TosPrecedence_Choice_Enum. +// Enum value maps for PatternFlowVxlanFlags_Choice_Enum. var ( - PatternFlowIpv4TosPrecedence_Choice_Enum_name = map[int32]string{ + PatternFlowVxlanFlags_Choice_Enum_name = map[int32]string{ 0: "unspecified", 2: "value", 3: "values", 4: "increment", 5: "decrement", } - PatternFlowIpv4TosPrecedence_Choice_Enum_value = map[string]int32{ + PatternFlowVxlanFlags_Choice_Enum_value = map[string]int32{ "unspecified": 0, "value": 2, "values": 3, @@ -10651,53 +10528,53 @@ var ( } ) -func (x PatternFlowIpv4TosPrecedence_Choice_Enum) Enum() *PatternFlowIpv4TosPrecedence_Choice_Enum { - p := new(PatternFlowIpv4TosPrecedence_Choice_Enum) +func (x PatternFlowVxlanFlags_Choice_Enum) Enum() *PatternFlowVxlanFlags_Choice_Enum { + p := new(PatternFlowVxlanFlags_Choice_Enum) *p = x return p } -func (x PatternFlowIpv4TosPrecedence_Choice_Enum) String() string { +func (x PatternFlowVxlanFlags_Choice_Enum) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } -func (PatternFlowIpv4TosPrecedence_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { +func (PatternFlowVxlanFlags_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { return file_otg_proto_enumTypes[194].Descriptor() } -func (PatternFlowIpv4TosPrecedence_Choice_Enum) Type() protoreflect.EnumType { +func (PatternFlowVxlanFlags_Choice_Enum) Type() protoreflect.EnumType { return &file_otg_proto_enumTypes[194] } -func (x PatternFlowIpv4TosPrecedence_Choice_Enum) Number() protoreflect.EnumNumber { +func (x PatternFlowVxlanFlags_Choice_Enum) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } -// Deprecated: Use PatternFlowIpv4TosPrecedence_Choice_Enum.Descriptor instead. -func (PatternFlowIpv4TosPrecedence_Choice_Enum) EnumDescriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{414, 0, 0} +// Deprecated: Use PatternFlowVxlanFlags_Choice_Enum.Descriptor instead. +func (PatternFlowVxlanFlags_Choice_Enum) EnumDescriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{406, 0, 0} } -type PatternFlowIpv4TosDelay_Choice_Enum int32 +type PatternFlowVxlanReserved0_Choice_Enum int32 const ( - PatternFlowIpv4TosDelay_Choice_unspecified PatternFlowIpv4TosDelay_Choice_Enum = 0 - PatternFlowIpv4TosDelay_Choice_value PatternFlowIpv4TosDelay_Choice_Enum = 2 - PatternFlowIpv4TosDelay_Choice_values PatternFlowIpv4TosDelay_Choice_Enum = 3 - PatternFlowIpv4TosDelay_Choice_increment PatternFlowIpv4TosDelay_Choice_Enum = 4 - PatternFlowIpv4TosDelay_Choice_decrement PatternFlowIpv4TosDelay_Choice_Enum = 5 + PatternFlowVxlanReserved0_Choice_unspecified PatternFlowVxlanReserved0_Choice_Enum = 0 + PatternFlowVxlanReserved0_Choice_value PatternFlowVxlanReserved0_Choice_Enum = 2 + PatternFlowVxlanReserved0_Choice_values PatternFlowVxlanReserved0_Choice_Enum = 3 + PatternFlowVxlanReserved0_Choice_increment PatternFlowVxlanReserved0_Choice_Enum = 4 + PatternFlowVxlanReserved0_Choice_decrement PatternFlowVxlanReserved0_Choice_Enum = 5 ) -// Enum value maps for PatternFlowIpv4TosDelay_Choice_Enum. +// Enum value maps for PatternFlowVxlanReserved0_Choice_Enum. var ( - PatternFlowIpv4TosDelay_Choice_Enum_name = map[int32]string{ + PatternFlowVxlanReserved0_Choice_Enum_name = map[int32]string{ 0: "unspecified", 2: "value", 3: "values", 4: "increment", 5: "decrement", } - PatternFlowIpv4TosDelay_Choice_Enum_value = map[string]int32{ + PatternFlowVxlanReserved0_Choice_Enum_value = map[string]int32{ "unspecified": 0, "value": 2, "values": 3, @@ -10706,108 +10583,111 @@ var ( } ) -func (x PatternFlowIpv4TosDelay_Choice_Enum) Enum() *PatternFlowIpv4TosDelay_Choice_Enum { - p := new(PatternFlowIpv4TosDelay_Choice_Enum) +func (x PatternFlowVxlanReserved0_Choice_Enum) Enum() *PatternFlowVxlanReserved0_Choice_Enum { + p := new(PatternFlowVxlanReserved0_Choice_Enum) *p = x return p } -func (x PatternFlowIpv4TosDelay_Choice_Enum) String() string { +func (x PatternFlowVxlanReserved0_Choice_Enum) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } -func (PatternFlowIpv4TosDelay_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { +func (PatternFlowVxlanReserved0_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { return file_otg_proto_enumTypes[195].Descriptor() } -func (PatternFlowIpv4TosDelay_Choice_Enum) Type() protoreflect.EnumType { +func (PatternFlowVxlanReserved0_Choice_Enum) Type() protoreflect.EnumType { return &file_otg_proto_enumTypes[195] } -func (x PatternFlowIpv4TosDelay_Choice_Enum) Number() protoreflect.EnumNumber { +func (x PatternFlowVxlanReserved0_Choice_Enum) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } -// Deprecated: Use PatternFlowIpv4TosDelay_Choice_Enum.Descriptor instead. -func (PatternFlowIpv4TosDelay_Choice_Enum) EnumDescriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{417, 0, 0} +// Deprecated: Use PatternFlowVxlanReserved0_Choice_Enum.Descriptor instead. +func (PatternFlowVxlanReserved0_Choice_Enum) EnumDescriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{409, 0, 0} } -type PatternFlowIpv4TosThroughput_Choice_Enum int32 +type PatternFlowVxlanVni_Choice_Enum int32 const ( - PatternFlowIpv4TosThroughput_Choice_unspecified PatternFlowIpv4TosThroughput_Choice_Enum = 0 - PatternFlowIpv4TosThroughput_Choice_value PatternFlowIpv4TosThroughput_Choice_Enum = 2 - PatternFlowIpv4TosThroughput_Choice_values PatternFlowIpv4TosThroughput_Choice_Enum = 3 - PatternFlowIpv4TosThroughput_Choice_increment PatternFlowIpv4TosThroughput_Choice_Enum = 4 - PatternFlowIpv4TosThroughput_Choice_decrement PatternFlowIpv4TosThroughput_Choice_Enum = 5 + PatternFlowVxlanVni_Choice_unspecified PatternFlowVxlanVni_Choice_Enum = 0 + PatternFlowVxlanVni_Choice_value PatternFlowVxlanVni_Choice_Enum = 2 + PatternFlowVxlanVni_Choice_values PatternFlowVxlanVni_Choice_Enum = 3 + PatternFlowVxlanVni_Choice_auto PatternFlowVxlanVni_Choice_Enum = 1 + PatternFlowVxlanVni_Choice_increment PatternFlowVxlanVni_Choice_Enum = 4 + PatternFlowVxlanVni_Choice_decrement PatternFlowVxlanVni_Choice_Enum = 5 ) -// Enum value maps for PatternFlowIpv4TosThroughput_Choice_Enum. +// Enum value maps for PatternFlowVxlanVni_Choice_Enum. var ( - PatternFlowIpv4TosThroughput_Choice_Enum_name = map[int32]string{ + PatternFlowVxlanVni_Choice_Enum_name = map[int32]string{ 0: "unspecified", 2: "value", 3: "values", + 1: "auto", 4: "increment", 5: "decrement", } - PatternFlowIpv4TosThroughput_Choice_Enum_value = map[string]int32{ + PatternFlowVxlanVni_Choice_Enum_value = map[string]int32{ "unspecified": 0, "value": 2, "values": 3, + "auto": 1, "increment": 4, "decrement": 5, } ) -func (x PatternFlowIpv4TosThroughput_Choice_Enum) Enum() *PatternFlowIpv4TosThroughput_Choice_Enum { - p := new(PatternFlowIpv4TosThroughput_Choice_Enum) +func (x PatternFlowVxlanVni_Choice_Enum) Enum() *PatternFlowVxlanVni_Choice_Enum { + p := new(PatternFlowVxlanVni_Choice_Enum) *p = x return p } -func (x PatternFlowIpv4TosThroughput_Choice_Enum) String() string { +func (x PatternFlowVxlanVni_Choice_Enum) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } -func (PatternFlowIpv4TosThroughput_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { +func (PatternFlowVxlanVni_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { return file_otg_proto_enumTypes[196].Descriptor() } -func (PatternFlowIpv4TosThroughput_Choice_Enum) Type() protoreflect.EnumType { +func (PatternFlowVxlanVni_Choice_Enum) Type() protoreflect.EnumType { return &file_otg_proto_enumTypes[196] } -func (x PatternFlowIpv4TosThroughput_Choice_Enum) Number() protoreflect.EnumNumber { +func (x PatternFlowVxlanVni_Choice_Enum) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } -// Deprecated: Use PatternFlowIpv4TosThroughput_Choice_Enum.Descriptor instead. -func (PatternFlowIpv4TosThroughput_Choice_Enum) EnumDescriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{420, 0, 0} +// Deprecated: Use PatternFlowVxlanVni_Choice_Enum.Descriptor instead. +func (PatternFlowVxlanVni_Choice_Enum) EnumDescriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{412, 0, 0} } -type PatternFlowIpv4TosReliability_Choice_Enum int32 +type PatternFlowVxlanReserved1_Choice_Enum int32 const ( - PatternFlowIpv4TosReliability_Choice_unspecified PatternFlowIpv4TosReliability_Choice_Enum = 0 - PatternFlowIpv4TosReliability_Choice_value PatternFlowIpv4TosReliability_Choice_Enum = 2 - PatternFlowIpv4TosReliability_Choice_values PatternFlowIpv4TosReliability_Choice_Enum = 3 - PatternFlowIpv4TosReliability_Choice_increment PatternFlowIpv4TosReliability_Choice_Enum = 4 - PatternFlowIpv4TosReliability_Choice_decrement PatternFlowIpv4TosReliability_Choice_Enum = 5 + PatternFlowVxlanReserved1_Choice_unspecified PatternFlowVxlanReserved1_Choice_Enum = 0 + PatternFlowVxlanReserved1_Choice_value PatternFlowVxlanReserved1_Choice_Enum = 2 + PatternFlowVxlanReserved1_Choice_values PatternFlowVxlanReserved1_Choice_Enum = 3 + PatternFlowVxlanReserved1_Choice_increment PatternFlowVxlanReserved1_Choice_Enum = 4 + PatternFlowVxlanReserved1_Choice_decrement PatternFlowVxlanReserved1_Choice_Enum = 5 ) -// Enum value maps for PatternFlowIpv4TosReliability_Choice_Enum. +// Enum value maps for PatternFlowVxlanReserved1_Choice_Enum. var ( - PatternFlowIpv4TosReliability_Choice_Enum_name = map[int32]string{ + PatternFlowVxlanReserved1_Choice_Enum_name = map[int32]string{ 0: "unspecified", 2: "value", 3: "values", 4: "increment", 5: "decrement", } - PatternFlowIpv4TosReliability_Choice_Enum_value = map[string]int32{ + PatternFlowVxlanReserved1_Choice_Enum_value = map[string]int32{ "unspecified": 0, "value": 2, "values": 3, @@ -10816,53 +10696,53 @@ var ( } ) -func (x PatternFlowIpv4TosReliability_Choice_Enum) Enum() *PatternFlowIpv4TosReliability_Choice_Enum { - p := new(PatternFlowIpv4TosReliability_Choice_Enum) +func (x PatternFlowVxlanReserved1_Choice_Enum) Enum() *PatternFlowVxlanReserved1_Choice_Enum { + p := new(PatternFlowVxlanReserved1_Choice_Enum) *p = x return p } -func (x PatternFlowIpv4TosReliability_Choice_Enum) String() string { +func (x PatternFlowVxlanReserved1_Choice_Enum) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } -func (PatternFlowIpv4TosReliability_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { +func (PatternFlowVxlanReserved1_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { return file_otg_proto_enumTypes[197].Descriptor() } -func (PatternFlowIpv4TosReliability_Choice_Enum) Type() protoreflect.EnumType { +func (PatternFlowVxlanReserved1_Choice_Enum) Type() protoreflect.EnumType { return &file_otg_proto_enumTypes[197] } -func (x PatternFlowIpv4TosReliability_Choice_Enum) Number() protoreflect.EnumNumber { +func (x PatternFlowVxlanReserved1_Choice_Enum) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } -// Deprecated: Use PatternFlowIpv4TosReliability_Choice_Enum.Descriptor instead. -func (PatternFlowIpv4TosReliability_Choice_Enum) EnumDescriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{423, 0, 0} +// Deprecated: Use PatternFlowVxlanReserved1_Choice_Enum.Descriptor instead. +func (PatternFlowVxlanReserved1_Choice_Enum) EnumDescriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{415, 0, 0} } -type PatternFlowIpv4TosMonetary_Choice_Enum int32 +type PatternFlowIpv4Version_Choice_Enum int32 const ( - PatternFlowIpv4TosMonetary_Choice_unspecified PatternFlowIpv4TosMonetary_Choice_Enum = 0 - PatternFlowIpv4TosMonetary_Choice_value PatternFlowIpv4TosMonetary_Choice_Enum = 2 - PatternFlowIpv4TosMonetary_Choice_values PatternFlowIpv4TosMonetary_Choice_Enum = 3 - PatternFlowIpv4TosMonetary_Choice_increment PatternFlowIpv4TosMonetary_Choice_Enum = 4 - PatternFlowIpv4TosMonetary_Choice_decrement PatternFlowIpv4TosMonetary_Choice_Enum = 5 + PatternFlowIpv4Version_Choice_unspecified PatternFlowIpv4Version_Choice_Enum = 0 + PatternFlowIpv4Version_Choice_value PatternFlowIpv4Version_Choice_Enum = 2 + PatternFlowIpv4Version_Choice_values PatternFlowIpv4Version_Choice_Enum = 3 + PatternFlowIpv4Version_Choice_increment PatternFlowIpv4Version_Choice_Enum = 4 + PatternFlowIpv4Version_Choice_decrement PatternFlowIpv4Version_Choice_Enum = 5 ) -// Enum value maps for PatternFlowIpv4TosMonetary_Choice_Enum. +// Enum value maps for PatternFlowIpv4Version_Choice_Enum. var ( - PatternFlowIpv4TosMonetary_Choice_Enum_name = map[int32]string{ + PatternFlowIpv4Version_Choice_Enum_name = map[int32]string{ 0: "unspecified", 2: "value", 3: "values", 4: "increment", 5: "decrement", } - PatternFlowIpv4TosMonetary_Choice_Enum_value = map[string]int32{ + PatternFlowIpv4Version_Choice_Enum_value = map[string]int32{ "unspecified": 0, "value": 2, "values": 3, @@ -10871,163 +10751,169 @@ var ( } ) -func (x PatternFlowIpv4TosMonetary_Choice_Enum) Enum() *PatternFlowIpv4TosMonetary_Choice_Enum { - p := new(PatternFlowIpv4TosMonetary_Choice_Enum) +func (x PatternFlowIpv4Version_Choice_Enum) Enum() *PatternFlowIpv4Version_Choice_Enum { + p := new(PatternFlowIpv4Version_Choice_Enum) *p = x return p } -func (x PatternFlowIpv4TosMonetary_Choice_Enum) String() string { +func (x PatternFlowIpv4Version_Choice_Enum) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } -func (PatternFlowIpv4TosMonetary_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { +func (PatternFlowIpv4Version_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { return file_otg_proto_enumTypes[198].Descriptor() } -func (PatternFlowIpv4TosMonetary_Choice_Enum) Type() protoreflect.EnumType { +func (PatternFlowIpv4Version_Choice_Enum) Type() protoreflect.EnumType { return &file_otg_proto_enumTypes[198] } -func (x PatternFlowIpv4TosMonetary_Choice_Enum) Number() protoreflect.EnumNumber { +func (x PatternFlowIpv4Version_Choice_Enum) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } -// Deprecated: Use PatternFlowIpv4TosMonetary_Choice_Enum.Descriptor instead. -func (PatternFlowIpv4TosMonetary_Choice_Enum) EnumDescriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{426, 0, 0} +// Deprecated: Use PatternFlowIpv4Version_Choice_Enum.Descriptor instead. +func (PatternFlowIpv4Version_Choice_Enum) EnumDescriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{418, 0, 0} } -type PatternFlowIpv4TosUnused_Choice_Enum int32 +type PatternFlowIpv4HeaderLength_Choice_Enum int32 const ( - PatternFlowIpv4TosUnused_Choice_unspecified PatternFlowIpv4TosUnused_Choice_Enum = 0 - PatternFlowIpv4TosUnused_Choice_value PatternFlowIpv4TosUnused_Choice_Enum = 2 - PatternFlowIpv4TosUnused_Choice_values PatternFlowIpv4TosUnused_Choice_Enum = 3 - PatternFlowIpv4TosUnused_Choice_increment PatternFlowIpv4TosUnused_Choice_Enum = 4 - PatternFlowIpv4TosUnused_Choice_decrement PatternFlowIpv4TosUnused_Choice_Enum = 5 + PatternFlowIpv4HeaderLength_Choice_unspecified PatternFlowIpv4HeaderLength_Choice_Enum = 0 + PatternFlowIpv4HeaderLength_Choice_value PatternFlowIpv4HeaderLength_Choice_Enum = 2 + PatternFlowIpv4HeaderLength_Choice_values PatternFlowIpv4HeaderLength_Choice_Enum = 3 + PatternFlowIpv4HeaderLength_Choice_auto PatternFlowIpv4HeaderLength_Choice_Enum = 1 + PatternFlowIpv4HeaderLength_Choice_increment PatternFlowIpv4HeaderLength_Choice_Enum = 4 + PatternFlowIpv4HeaderLength_Choice_decrement PatternFlowIpv4HeaderLength_Choice_Enum = 5 ) -// Enum value maps for PatternFlowIpv4TosUnused_Choice_Enum. +// Enum value maps for PatternFlowIpv4HeaderLength_Choice_Enum. var ( - PatternFlowIpv4TosUnused_Choice_Enum_name = map[int32]string{ + PatternFlowIpv4HeaderLength_Choice_Enum_name = map[int32]string{ 0: "unspecified", 2: "value", 3: "values", + 1: "auto", 4: "increment", 5: "decrement", } - PatternFlowIpv4TosUnused_Choice_Enum_value = map[string]int32{ + PatternFlowIpv4HeaderLength_Choice_Enum_value = map[string]int32{ "unspecified": 0, "value": 2, "values": 3, + "auto": 1, "increment": 4, "decrement": 5, } ) -func (x PatternFlowIpv4TosUnused_Choice_Enum) Enum() *PatternFlowIpv4TosUnused_Choice_Enum { - p := new(PatternFlowIpv4TosUnused_Choice_Enum) +func (x PatternFlowIpv4HeaderLength_Choice_Enum) Enum() *PatternFlowIpv4HeaderLength_Choice_Enum { + p := new(PatternFlowIpv4HeaderLength_Choice_Enum) *p = x return p } -func (x PatternFlowIpv4TosUnused_Choice_Enum) String() string { +func (x PatternFlowIpv4HeaderLength_Choice_Enum) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } -func (PatternFlowIpv4TosUnused_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { +func (PatternFlowIpv4HeaderLength_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { return file_otg_proto_enumTypes[199].Descriptor() } -func (PatternFlowIpv4TosUnused_Choice_Enum) Type() protoreflect.EnumType { +func (PatternFlowIpv4HeaderLength_Choice_Enum) Type() protoreflect.EnumType { return &file_otg_proto_enumTypes[199] } -func (x PatternFlowIpv4TosUnused_Choice_Enum) Number() protoreflect.EnumNumber { +func (x PatternFlowIpv4HeaderLength_Choice_Enum) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } -// Deprecated: Use PatternFlowIpv4TosUnused_Choice_Enum.Descriptor instead. -func (PatternFlowIpv4TosUnused_Choice_Enum) EnumDescriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{429, 0, 0} +// Deprecated: Use PatternFlowIpv4HeaderLength_Choice_Enum.Descriptor instead. +func (PatternFlowIpv4HeaderLength_Choice_Enum) EnumDescriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{421, 0, 0} } -type PatternFlowIpv6Version_Choice_Enum int32 +type PatternFlowIpv4TotalLength_Choice_Enum int32 const ( - PatternFlowIpv6Version_Choice_unspecified PatternFlowIpv6Version_Choice_Enum = 0 - PatternFlowIpv6Version_Choice_value PatternFlowIpv6Version_Choice_Enum = 2 - PatternFlowIpv6Version_Choice_values PatternFlowIpv6Version_Choice_Enum = 3 - PatternFlowIpv6Version_Choice_increment PatternFlowIpv6Version_Choice_Enum = 4 - PatternFlowIpv6Version_Choice_decrement PatternFlowIpv6Version_Choice_Enum = 5 + PatternFlowIpv4TotalLength_Choice_unspecified PatternFlowIpv4TotalLength_Choice_Enum = 0 + PatternFlowIpv4TotalLength_Choice_value PatternFlowIpv4TotalLength_Choice_Enum = 2 + PatternFlowIpv4TotalLength_Choice_values PatternFlowIpv4TotalLength_Choice_Enum = 3 + PatternFlowIpv4TotalLength_Choice_auto PatternFlowIpv4TotalLength_Choice_Enum = 1 + PatternFlowIpv4TotalLength_Choice_increment PatternFlowIpv4TotalLength_Choice_Enum = 4 + PatternFlowIpv4TotalLength_Choice_decrement PatternFlowIpv4TotalLength_Choice_Enum = 5 ) -// Enum value maps for PatternFlowIpv6Version_Choice_Enum. +// Enum value maps for PatternFlowIpv4TotalLength_Choice_Enum. var ( - PatternFlowIpv6Version_Choice_Enum_name = map[int32]string{ + PatternFlowIpv4TotalLength_Choice_Enum_name = map[int32]string{ 0: "unspecified", 2: "value", 3: "values", + 1: "auto", 4: "increment", 5: "decrement", } - PatternFlowIpv6Version_Choice_Enum_value = map[string]int32{ + PatternFlowIpv4TotalLength_Choice_Enum_value = map[string]int32{ "unspecified": 0, "value": 2, "values": 3, + "auto": 1, "increment": 4, "decrement": 5, } ) -func (x PatternFlowIpv6Version_Choice_Enum) Enum() *PatternFlowIpv6Version_Choice_Enum { - p := new(PatternFlowIpv6Version_Choice_Enum) +func (x PatternFlowIpv4TotalLength_Choice_Enum) Enum() *PatternFlowIpv4TotalLength_Choice_Enum { + p := new(PatternFlowIpv4TotalLength_Choice_Enum) *p = x return p } -func (x PatternFlowIpv6Version_Choice_Enum) String() string { +func (x PatternFlowIpv4TotalLength_Choice_Enum) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } -func (PatternFlowIpv6Version_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { +func (PatternFlowIpv4TotalLength_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { return file_otg_proto_enumTypes[200].Descriptor() } -func (PatternFlowIpv6Version_Choice_Enum) Type() protoreflect.EnumType { +func (PatternFlowIpv4TotalLength_Choice_Enum) Type() protoreflect.EnumType { return &file_otg_proto_enumTypes[200] } -func (x PatternFlowIpv6Version_Choice_Enum) Number() protoreflect.EnumNumber { +func (x PatternFlowIpv4TotalLength_Choice_Enum) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } -// Deprecated: Use PatternFlowIpv6Version_Choice_Enum.Descriptor instead. -func (PatternFlowIpv6Version_Choice_Enum) EnumDescriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{432, 0, 0} +// Deprecated: Use PatternFlowIpv4TotalLength_Choice_Enum.Descriptor instead. +func (PatternFlowIpv4TotalLength_Choice_Enum) EnumDescriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{424, 0, 0} } -type PatternFlowIpv6TrafficClass_Choice_Enum int32 +type PatternFlowIpv4Identification_Choice_Enum int32 const ( - PatternFlowIpv6TrafficClass_Choice_unspecified PatternFlowIpv6TrafficClass_Choice_Enum = 0 - PatternFlowIpv6TrafficClass_Choice_value PatternFlowIpv6TrafficClass_Choice_Enum = 2 - PatternFlowIpv6TrafficClass_Choice_values PatternFlowIpv6TrafficClass_Choice_Enum = 3 - PatternFlowIpv6TrafficClass_Choice_increment PatternFlowIpv6TrafficClass_Choice_Enum = 4 - PatternFlowIpv6TrafficClass_Choice_decrement PatternFlowIpv6TrafficClass_Choice_Enum = 5 + PatternFlowIpv4Identification_Choice_unspecified PatternFlowIpv4Identification_Choice_Enum = 0 + PatternFlowIpv4Identification_Choice_value PatternFlowIpv4Identification_Choice_Enum = 2 + PatternFlowIpv4Identification_Choice_values PatternFlowIpv4Identification_Choice_Enum = 3 + PatternFlowIpv4Identification_Choice_increment PatternFlowIpv4Identification_Choice_Enum = 4 + PatternFlowIpv4Identification_Choice_decrement PatternFlowIpv4Identification_Choice_Enum = 5 ) -// Enum value maps for PatternFlowIpv6TrafficClass_Choice_Enum. +// Enum value maps for PatternFlowIpv4Identification_Choice_Enum. var ( - PatternFlowIpv6TrafficClass_Choice_Enum_name = map[int32]string{ + PatternFlowIpv4Identification_Choice_Enum_name = map[int32]string{ 0: "unspecified", 2: "value", 3: "values", 4: "increment", 5: "decrement", } - PatternFlowIpv6TrafficClass_Choice_Enum_value = map[string]int32{ + PatternFlowIpv4Identification_Choice_Enum_value = map[string]int32{ "unspecified": 0, "value": 2, "values": 3, @@ -11036,53 +10922,53 @@ var ( } ) -func (x PatternFlowIpv6TrafficClass_Choice_Enum) Enum() *PatternFlowIpv6TrafficClass_Choice_Enum { - p := new(PatternFlowIpv6TrafficClass_Choice_Enum) +func (x PatternFlowIpv4Identification_Choice_Enum) Enum() *PatternFlowIpv4Identification_Choice_Enum { + p := new(PatternFlowIpv4Identification_Choice_Enum) *p = x return p } -func (x PatternFlowIpv6TrafficClass_Choice_Enum) String() string { +func (x PatternFlowIpv4Identification_Choice_Enum) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } -func (PatternFlowIpv6TrafficClass_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { +func (PatternFlowIpv4Identification_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { return file_otg_proto_enumTypes[201].Descriptor() } -func (PatternFlowIpv6TrafficClass_Choice_Enum) Type() protoreflect.EnumType { +func (PatternFlowIpv4Identification_Choice_Enum) Type() protoreflect.EnumType { return &file_otg_proto_enumTypes[201] } -func (x PatternFlowIpv6TrafficClass_Choice_Enum) Number() protoreflect.EnumNumber { +func (x PatternFlowIpv4Identification_Choice_Enum) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } -// Deprecated: Use PatternFlowIpv6TrafficClass_Choice_Enum.Descriptor instead. -func (PatternFlowIpv6TrafficClass_Choice_Enum) EnumDescriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{435, 0, 0} +// Deprecated: Use PatternFlowIpv4Identification_Choice_Enum.Descriptor instead. +func (PatternFlowIpv4Identification_Choice_Enum) EnumDescriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{427, 0, 0} } -type PatternFlowIpv6FlowLabel_Choice_Enum int32 +type PatternFlowIpv4Reserved_Choice_Enum int32 const ( - PatternFlowIpv6FlowLabel_Choice_unspecified PatternFlowIpv6FlowLabel_Choice_Enum = 0 - PatternFlowIpv6FlowLabel_Choice_value PatternFlowIpv6FlowLabel_Choice_Enum = 2 - PatternFlowIpv6FlowLabel_Choice_values PatternFlowIpv6FlowLabel_Choice_Enum = 3 - PatternFlowIpv6FlowLabel_Choice_increment PatternFlowIpv6FlowLabel_Choice_Enum = 4 - PatternFlowIpv6FlowLabel_Choice_decrement PatternFlowIpv6FlowLabel_Choice_Enum = 5 + PatternFlowIpv4Reserved_Choice_unspecified PatternFlowIpv4Reserved_Choice_Enum = 0 + PatternFlowIpv4Reserved_Choice_value PatternFlowIpv4Reserved_Choice_Enum = 2 + PatternFlowIpv4Reserved_Choice_values PatternFlowIpv4Reserved_Choice_Enum = 3 + PatternFlowIpv4Reserved_Choice_increment PatternFlowIpv4Reserved_Choice_Enum = 4 + PatternFlowIpv4Reserved_Choice_decrement PatternFlowIpv4Reserved_Choice_Enum = 5 ) -// Enum value maps for PatternFlowIpv6FlowLabel_Choice_Enum. +// Enum value maps for PatternFlowIpv4Reserved_Choice_Enum. var ( - PatternFlowIpv6FlowLabel_Choice_Enum_name = map[int32]string{ + PatternFlowIpv4Reserved_Choice_Enum_name = map[int32]string{ 0: "unspecified", 2: "value", 3: "values", 4: "increment", 5: "decrement", } - PatternFlowIpv6FlowLabel_Choice_Enum_value = map[string]int32{ + PatternFlowIpv4Reserved_Choice_Enum_value = map[string]int32{ "unspecified": 0, "value": 2, "values": 3, @@ -11091,169 +10977,163 @@ var ( } ) -func (x PatternFlowIpv6FlowLabel_Choice_Enum) Enum() *PatternFlowIpv6FlowLabel_Choice_Enum { - p := new(PatternFlowIpv6FlowLabel_Choice_Enum) +func (x PatternFlowIpv4Reserved_Choice_Enum) Enum() *PatternFlowIpv4Reserved_Choice_Enum { + p := new(PatternFlowIpv4Reserved_Choice_Enum) *p = x return p } -func (x PatternFlowIpv6FlowLabel_Choice_Enum) String() string { +func (x PatternFlowIpv4Reserved_Choice_Enum) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } -func (PatternFlowIpv6FlowLabel_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { +func (PatternFlowIpv4Reserved_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { return file_otg_proto_enumTypes[202].Descriptor() } -func (PatternFlowIpv6FlowLabel_Choice_Enum) Type() protoreflect.EnumType { +func (PatternFlowIpv4Reserved_Choice_Enum) Type() protoreflect.EnumType { return &file_otg_proto_enumTypes[202] } -func (x PatternFlowIpv6FlowLabel_Choice_Enum) Number() protoreflect.EnumNumber { +func (x PatternFlowIpv4Reserved_Choice_Enum) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } -// Deprecated: Use PatternFlowIpv6FlowLabel_Choice_Enum.Descriptor instead. -func (PatternFlowIpv6FlowLabel_Choice_Enum) EnumDescriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{438, 0, 0} +// Deprecated: Use PatternFlowIpv4Reserved_Choice_Enum.Descriptor instead. +func (PatternFlowIpv4Reserved_Choice_Enum) EnumDescriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{430, 0, 0} } -type PatternFlowIpv6PayloadLength_Choice_Enum int32 +type PatternFlowIpv4DontFragment_Choice_Enum int32 const ( - PatternFlowIpv6PayloadLength_Choice_unspecified PatternFlowIpv6PayloadLength_Choice_Enum = 0 - PatternFlowIpv6PayloadLength_Choice_value PatternFlowIpv6PayloadLength_Choice_Enum = 2 - PatternFlowIpv6PayloadLength_Choice_values PatternFlowIpv6PayloadLength_Choice_Enum = 3 - PatternFlowIpv6PayloadLength_Choice_auto PatternFlowIpv6PayloadLength_Choice_Enum = 1 - PatternFlowIpv6PayloadLength_Choice_increment PatternFlowIpv6PayloadLength_Choice_Enum = 4 - PatternFlowIpv6PayloadLength_Choice_decrement PatternFlowIpv6PayloadLength_Choice_Enum = 5 + PatternFlowIpv4DontFragment_Choice_unspecified PatternFlowIpv4DontFragment_Choice_Enum = 0 + PatternFlowIpv4DontFragment_Choice_value PatternFlowIpv4DontFragment_Choice_Enum = 2 + PatternFlowIpv4DontFragment_Choice_values PatternFlowIpv4DontFragment_Choice_Enum = 3 + PatternFlowIpv4DontFragment_Choice_increment PatternFlowIpv4DontFragment_Choice_Enum = 4 + PatternFlowIpv4DontFragment_Choice_decrement PatternFlowIpv4DontFragment_Choice_Enum = 5 ) -// Enum value maps for PatternFlowIpv6PayloadLength_Choice_Enum. +// Enum value maps for PatternFlowIpv4DontFragment_Choice_Enum. var ( - PatternFlowIpv6PayloadLength_Choice_Enum_name = map[int32]string{ + PatternFlowIpv4DontFragment_Choice_Enum_name = map[int32]string{ 0: "unspecified", 2: "value", 3: "values", - 1: "auto", 4: "increment", 5: "decrement", } - PatternFlowIpv6PayloadLength_Choice_Enum_value = map[string]int32{ + PatternFlowIpv4DontFragment_Choice_Enum_value = map[string]int32{ "unspecified": 0, "value": 2, "values": 3, - "auto": 1, "increment": 4, "decrement": 5, } ) -func (x PatternFlowIpv6PayloadLength_Choice_Enum) Enum() *PatternFlowIpv6PayloadLength_Choice_Enum { - p := new(PatternFlowIpv6PayloadLength_Choice_Enum) +func (x PatternFlowIpv4DontFragment_Choice_Enum) Enum() *PatternFlowIpv4DontFragment_Choice_Enum { + p := new(PatternFlowIpv4DontFragment_Choice_Enum) *p = x return p } -func (x PatternFlowIpv6PayloadLength_Choice_Enum) String() string { +func (x PatternFlowIpv4DontFragment_Choice_Enum) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } -func (PatternFlowIpv6PayloadLength_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { +func (PatternFlowIpv4DontFragment_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { return file_otg_proto_enumTypes[203].Descriptor() } -func (PatternFlowIpv6PayloadLength_Choice_Enum) Type() protoreflect.EnumType { +func (PatternFlowIpv4DontFragment_Choice_Enum) Type() protoreflect.EnumType { return &file_otg_proto_enumTypes[203] } -func (x PatternFlowIpv6PayloadLength_Choice_Enum) Number() protoreflect.EnumNumber { +func (x PatternFlowIpv4DontFragment_Choice_Enum) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } -// Deprecated: Use PatternFlowIpv6PayloadLength_Choice_Enum.Descriptor instead. -func (PatternFlowIpv6PayloadLength_Choice_Enum) EnumDescriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{441, 0, 0} +// Deprecated: Use PatternFlowIpv4DontFragment_Choice_Enum.Descriptor instead. +func (PatternFlowIpv4DontFragment_Choice_Enum) EnumDescriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{433, 0, 0} } -type PatternFlowIpv6NextHeader_Choice_Enum int32 +type PatternFlowIpv4MoreFragments_Choice_Enum int32 const ( - PatternFlowIpv6NextHeader_Choice_unspecified PatternFlowIpv6NextHeader_Choice_Enum = 0 - PatternFlowIpv6NextHeader_Choice_value PatternFlowIpv6NextHeader_Choice_Enum = 2 - PatternFlowIpv6NextHeader_Choice_values PatternFlowIpv6NextHeader_Choice_Enum = 3 - PatternFlowIpv6NextHeader_Choice_auto PatternFlowIpv6NextHeader_Choice_Enum = 1 - PatternFlowIpv6NextHeader_Choice_increment PatternFlowIpv6NextHeader_Choice_Enum = 4 - PatternFlowIpv6NextHeader_Choice_decrement PatternFlowIpv6NextHeader_Choice_Enum = 5 + PatternFlowIpv4MoreFragments_Choice_unspecified PatternFlowIpv4MoreFragments_Choice_Enum = 0 + PatternFlowIpv4MoreFragments_Choice_value PatternFlowIpv4MoreFragments_Choice_Enum = 2 + PatternFlowIpv4MoreFragments_Choice_values PatternFlowIpv4MoreFragments_Choice_Enum = 3 + PatternFlowIpv4MoreFragments_Choice_increment PatternFlowIpv4MoreFragments_Choice_Enum = 4 + PatternFlowIpv4MoreFragments_Choice_decrement PatternFlowIpv4MoreFragments_Choice_Enum = 5 ) -// Enum value maps for PatternFlowIpv6NextHeader_Choice_Enum. +// Enum value maps for PatternFlowIpv4MoreFragments_Choice_Enum. var ( - PatternFlowIpv6NextHeader_Choice_Enum_name = map[int32]string{ + PatternFlowIpv4MoreFragments_Choice_Enum_name = map[int32]string{ 0: "unspecified", 2: "value", 3: "values", - 1: "auto", 4: "increment", 5: "decrement", } - PatternFlowIpv6NextHeader_Choice_Enum_value = map[string]int32{ + PatternFlowIpv4MoreFragments_Choice_Enum_value = map[string]int32{ "unspecified": 0, "value": 2, "values": 3, - "auto": 1, "increment": 4, "decrement": 5, } ) -func (x PatternFlowIpv6NextHeader_Choice_Enum) Enum() *PatternFlowIpv6NextHeader_Choice_Enum { - p := new(PatternFlowIpv6NextHeader_Choice_Enum) +func (x PatternFlowIpv4MoreFragments_Choice_Enum) Enum() *PatternFlowIpv4MoreFragments_Choice_Enum { + p := new(PatternFlowIpv4MoreFragments_Choice_Enum) *p = x return p } -func (x PatternFlowIpv6NextHeader_Choice_Enum) String() string { +func (x PatternFlowIpv4MoreFragments_Choice_Enum) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } -func (PatternFlowIpv6NextHeader_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { +func (PatternFlowIpv4MoreFragments_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { return file_otg_proto_enumTypes[204].Descriptor() } -func (PatternFlowIpv6NextHeader_Choice_Enum) Type() protoreflect.EnumType { +func (PatternFlowIpv4MoreFragments_Choice_Enum) Type() protoreflect.EnumType { return &file_otg_proto_enumTypes[204] } -func (x PatternFlowIpv6NextHeader_Choice_Enum) Number() protoreflect.EnumNumber { +func (x PatternFlowIpv4MoreFragments_Choice_Enum) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } -// Deprecated: Use PatternFlowIpv6NextHeader_Choice_Enum.Descriptor instead. -func (PatternFlowIpv6NextHeader_Choice_Enum) EnumDescriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{444, 0, 0} +// Deprecated: Use PatternFlowIpv4MoreFragments_Choice_Enum.Descriptor instead. +func (PatternFlowIpv4MoreFragments_Choice_Enum) EnumDescriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{436, 0, 0} } -type PatternFlowIpv6HopLimit_Choice_Enum int32 +type PatternFlowIpv4FragmentOffset_Choice_Enum int32 const ( - PatternFlowIpv6HopLimit_Choice_unspecified PatternFlowIpv6HopLimit_Choice_Enum = 0 - PatternFlowIpv6HopLimit_Choice_value PatternFlowIpv6HopLimit_Choice_Enum = 2 - PatternFlowIpv6HopLimit_Choice_values PatternFlowIpv6HopLimit_Choice_Enum = 3 - PatternFlowIpv6HopLimit_Choice_increment PatternFlowIpv6HopLimit_Choice_Enum = 4 - PatternFlowIpv6HopLimit_Choice_decrement PatternFlowIpv6HopLimit_Choice_Enum = 5 + PatternFlowIpv4FragmentOffset_Choice_unspecified PatternFlowIpv4FragmentOffset_Choice_Enum = 0 + PatternFlowIpv4FragmentOffset_Choice_value PatternFlowIpv4FragmentOffset_Choice_Enum = 2 + PatternFlowIpv4FragmentOffset_Choice_values PatternFlowIpv4FragmentOffset_Choice_Enum = 3 + PatternFlowIpv4FragmentOffset_Choice_increment PatternFlowIpv4FragmentOffset_Choice_Enum = 4 + PatternFlowIpv4FragmentOffset_Choice_decrement PatternFlowIpv4FragmentOffset_Choice_Enum = 5 ) -// Enum value maps for PatternFlowIpv6HopLimit_Choice_Enum. +// Enum value maps for PatternFlowIpv4FragmentOffset_Choice_Enum. var ( - PatternFlowIpv6HopLimit_Choice_Enum_name = map[int32]string{ + PatternFlowIpv4FragmentOffset_Choice_Enum_name = map[int32]string{ 0: "unspecified", 2: "value", 3: "values", 4: "increment", 5: "decrement", } - PatternFlowIpv6HopLimit_Choice_Enum_value = map[string]int32{ + PatternFlowIpv4FragmentOffset_Choice_Enum_value = map[string]int32{ "unspecified": 0, "value": 2, "values": 3, @@ -11262,53 +11142,53 @@ var ( } ) -func (x PatternFlowIpv6HopLimit_Choice_Enum) Enum() *PatternFlowIpv6HopLimit_Choice_Enum { - p := new(PatternFlowIpv6HopLimit_Choice_Enum) +func (x PatternFlowIpv4FragmentOffset_Choice_Enum) Enum() *PatternFlowIpv4FragmentOffset_Choice_Enum { + p := new(PatternFlowIpv4FragmentOffset_Choice_Enum) *p = x return p } -func (x PatternFlowIpv6HopLimit_Choice_Enum) String() string { +func (x PatternFlowIpv4FragmentOffset_Choice_Enum) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } -func (PatternFlowIpv6HopLimit_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { +func (PatternFlowIpv4FragmentOffset_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { return file_otg_proto_enumTypes[205].Descriptor() } -func (PatternFlowIpv6HopLimit_Choice_Enum) Type() protoreflect.EnumType { +func (PatternFlowIpv4FragmentOffset_Choice_Enum) Type() protoreflect.EnumType { return &file_otg_proto_enumTypes[205] } -func (x PatternFlowIpv6HopLimit_Choice_Enum) Number() protoreflect.EnumNumber { +func (x PatternFlowIpv4FragmentOffset_Choice_Enum) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } -// Deprecated: Use PatternFlowIpv6HopLimit_Choice_Enum.Descriptor instead. -func (PatternFlowIpv6HopLimit_Choice_Enum) EnumDescriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{447, 0, 0} +// Deprecated: Use PatternFlowIpv4FragmentOffset_Choice_Enum.Descriptor instead. +func (PatternFlowIpv4FragmentOffset_Choice_Enum) EnumDescriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{439, 0, 0} } -type PatternFlowIpv6Src_Choice_Enum int32 +type PatternFlowIpv4TimeToLive_Choice_Enum int32 const ( - PatternFlowIpv6Src_Choice_unspecified PatternFlowIpv6Src_Choice_Enum = 0 - PatternFlowIpv6Src_Choice_value PatternFlowIpv6Src_Choice_Enum = 2 - PatternFlowIpv6Src_Choice_values PatternFlowIpv6Src_Choice_Enum = 3 - PatternFlowIpv6Src_Choice_increment PatternFlowIpv6Src_Choice_Enum = 4 - PatternFlowIpv6Src_Choice_decrement PatternFlowIpv6Src_Choice_Enum = 5 + PatternFlowIpv4TimeToLive_Choice_unspecified PatternFlowIpv4TimeToLive_Choice_Enum = 0 + PatternFlowIpv4TimeToLive_Choice_value PatternFlowIpv4TimeToLive_Choice_Enum = 2 + PatternFlowIpv4TimeToLive_Choice_values PatternFlowIpv4TimeToLive_Choice_Enum = 3 + PatternFlowIpv4TimeToLive_Choice_increment PatternFlowIpv4TimeToLive_Choice_Enum = 4 + PatternFlowIpv4TimeToLive_Choice_decrement PatternFlowIpv4TimeToLive_Choice_Enum = 5 ) -// Enum value maps for PatternFlowIpv6Src_Choice_Enum. +// Enum value maps for PatternFlowIpv4TimeToLive_Choice_Enum. var ( - PatternFlowIpv6Src_Choice_Enum_name = map[int32]string{ + PatternFlowIpv4TimeToLive_Choice_Enum_name = map[int32]string{ 0: "unspecified", 2: "value", 3: "values", 4: "increment", 5: "decrement", } - PatternFlowIpv6Src_Choice_Enum_value = map[string]int32{ + PatternFlowIpv4TimeToLive_Choice_Enum_value = map[string]int32{ "unspecified": 0, "value": 2, "values": 3, @@ -11317,218 +11197,209 @@ var ( } ) -func (x PatternFlowIpv6Src_Choice_Enum) Enum() *PatternFlowIpv6Src_Choice_Enum { - p := new(PatternFlowIpv6Src_Choice_Enum) +func (x PatternFlowIpv4TimeToLive_Choice_Enum) Enum() *PatternFlowIpv4TimeToLive_Choice_Enum { + p := new(PatternFlowIpv4TimeToLive_Choice_Enum) *p = x return p } -func (x PatternFlowIpv6Src_Choice_Enum) String() string { +func (x PatternFlowIpv4TimeToLive_Choice_Enum) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } -func (PatternFlowIpv6Src_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { +func (PatternFlowIpv4TimeToLive_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { return file_otg_proto_enumTypes[206].Descriptor() } -func (PatternFlowIpv6Src_Choice_Enum) Type() protoreflect.EnumType { +func (PatternFlowIpv4TimeToLive_Choice_Enum) Type() protoreflect.EnumType { return &file_otg_proto_enumTypes[206] } -func (x PatternFlowIpv6Src_Choice_Enum) Number() protoreflect.EnumNumber { +func (x PatternFlowIpv4TimeToLive_Choice_Enum) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } -// Deprecated: Use PatternFlowIpv6Src_Choice_Enum.Descriptor instead. -func (PatternFlowIpv6Src_Choice_Enum) EnumDescriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{450, 0, 0} +// Deprecated: Use PatternFlowIpv4TimeToLive_Choice_Enum.Descriptor instead. +func (PatternFlowIpv4TimeToLive_Choice_Enum) EnumDescriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{442, 0, 0} } -type PatternFlowIpv6Dst_Choice_Enum int32 +type PatternFlowIpv4Protocol_Choice_Enum int32 const ( - PatternFlowIpv6Dst_Choice_unspecified PatternFlowIpv6Dst_Choice_Enum = 0 - PatternFlowIpv6Dst_Choice_value PatternFlowIpv6Dst_Choice_Enum = 2 - PatternFlowIpv6Dst_Choice_values PatternFlowIpv6Dst_Choice_Enum = 3 - PatternFlowIpv6Dst_Choice_increment PatternFlowIpv6Dst_Choice_Enum = 4 - PatternFlowIpv6Dst_Choice_decrement PatternFlowIpv6Dst_Choice_Enum = 5 + PatternFlowIpv4Protocol_Choice_unspecified PatternFlowIpv4Protocol_Choice_Enum = 0 + PatternFlowIpv4Protocol_Choice_value PatternFlowIpv4Protocol_Choice_Enum = 2 + PatternFlowIpv4Protocol_Choice_values PatternFlowIpv4Protocol_Choice_Enum = 3 + PatternFlowIpv4Protocol_Choice_auto PatternFlowIpv4Protocol_Choice_Enum = 1 + PatternFlowIpv4Protocol_Choice_increment PatternFlowIpv4Protocol_Choice_Enum = 4 + PatternFlowIpv4Protocol_Choice_decrement PatternFlowIpv4Protocol_Choice_Enum = 5 ) -// Enum value maps for PatternFlowIpv6Dst_Choice_Enum. +// Enum value maps for PatternFlowIpv4Protocol_Choice_Enum. var ( - PatternFlowIpv6Dst_Choice_Enum_name = map[int32]string{ + PatternFlowIpv4Protocol_Choice_Enum_name = map[int32]string{ 0: "unspecified", 2: "value", 3: "values", + 1: "auto", 4: "increment", 5: "decrement", } - PatternFlowIpv6Dst_Choice_Enum_value = map[string]int32{ + PatternFlowIpv4Protocol_Choice_Enum_value = map[string]int32{ "unspecified": 0, "value": 2, "values": 3, + "auto": 1, "increment": 4, "decrement": 5, } ) -func (x PatternFlowIpv6Dst_Choice_Enum) Enum() *PatternFlowIpv6Dst_Choice_Enum { - p := new(PatternFlowIpv6Dst_Choice_Enum) +func (x PatternFlowIpv4Protocol_Choice_Enum) Enum() *PatternFlowIpv4Protocol_Choice_Enum { + p := new(PatternFlowIpv4Protocol_Choice_Enum) *p = x return p } -func (x PatternFlowIpv6Dst_Choice_Enum) String() string { +func (x PatternFlowIpv4Protocol_Choice_Enum) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } -func (PatternFlowIpv6Dst_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { +func (PatternFlowIpv4Protocol_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { return file_otg_proto_enumTypes[207].Descriptor() } -func (PatternFlowIpv6Dst_Choice_Enum) Type() protoreflect.EnumType { +func (PatternFlowIpv4Protocol_Choice_Enum) Type() protoreflect.EnumType { return &file_otg_proto_enumTypes[207] } -func (x PatternFlowIpv6Dst_Choice_Enum) Number() protoreflect.EnumNumber { +func (x PatternFlowIpv4Protocol_Choice_Enum) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } -// Deprecated: Use PatternFlowIpv6Dst_Choice_Enum.Descriptor instead. -func (PatternFlowIpv6Dst_Choice_Enum) EnumDescriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{453, 0, 0} +// Deprecated: Use PatternFlowIpv4Protocol_Choice_Enum.Descriptor instead. +func (PatternFlowIpv4Protocol_Choice_Enum) EnumDescriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{445, 0, 0} } -type PatternFlowPfcPauseDst_Choice_Enum int32 +type PatternFlowIpv4HeaderChecksum_Choice_Enum int32 const ( - PatternFlowPfcPauseDst_Choice_unspecified PatternFlowPfcPauseDst_Choice_Enum = 0 - PatternFlowPfcPauseDst_Choice_value PatternFlowPfcPauseDst_Choice_Enum = 2 - PatternFlowPfcPauseDst_Choice_values PatternFlowPfcPauseDst_Choice_Enum = 3 - PatternFlowPfcPauseDst_Choice_increment PatternFlowPfcPauseDst_Choice_Enum = 4 - PatternFlowPfcPauseDst_Choice_decrement PatternFlowPfcPauseDst_Choice_Enum = 5 + PatternFlowIpv4HeaderChecksum_Choice_unspecified PatternFlowIpv4HeaderChecksum_Choice_Enum = 0 + PatternFlowIpv4HeaderChecksum_Choice_generated PatternFlowIpv4HeaderChecksum_Choice_Enum = 1 + PatternFlowIpv4HeaderChecksum_Choice_custom PatternFlowIpv4HeaderChecksum_Choice_Enum = 2 ) -// Enum value maps for PatternFlowPfcPauseDst_Choice_Enum. +// Enum value maps for PatternFlowIpv4HeaderChecksum_Choice_Enum. var ( - PatternFlowPfcPauseDst_Choice_Enum_name = map[int32]string{ + PatternFlowIpv4HeaderChecksum_Choice_Enum_name = map[int32]string{ 0: "unspecified", - 2: "value", - 3: "values", - 4: "increment", - 5: "decrement", + 1: "generated", + 2: "custom", } - PatternFlowPfcPauseDst_Choice_Enum_value = map[string]int32{ + PatternFlowIpv4HeaderChecksum_Choice_Enum_value = map[string]int32{ "unspecified": 0, - "value": 2, - "values": 3, - "increment": 4, - "decrement": 5, + "generated": 1, + "custom": 2, } ) -func (x PatternFlowPfcPauseDst_Choice_Enum) Enum() *PatternFlowPfcPauseDst_Choice_Enum { - p := new(PatternFlowPfcPauseDst_Choice_Enum) +func (x PatternFlowIpv4HeaderChecksum_Choice_Enum) Enum() *PatternFlowIpv4HeaderChecksum_Choice_Enum { + p := new(PatternFlowIpv4HeaderChecksum_Choice_Enum) *p = x return p } -func (x PatternFlowPfcPauseDst_Choice_Enum) String() string { +func (x PatternFlowIpv4HeaderChecksum_Choice_Enum) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } -func (PatternFlowPfcPauseDst_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { +func (PatternFlowIpv4HeaderChecksum_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { return file_otg_proto_enumTypes[208].Descriptor() } -func (PatternFlowPfcPauseDst_Choice_Enum) Type() protoreflect.EnumType { +func (PatternFlowIpv4HeaderChecksum_Choice_Enum) Type() protoreflect.EnumType { return &file_otg_proto_enumTypes[208] } -func (x PatternFlowPfcPauseDst_Choice_Enum) Number() protoreflect.EnumNumber { +func (x PatternFlowIpv4HeaderChecksum_Choice_Enum) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } -// Deprecated: Use PatternFlowPfcPauseDst_Choice_Enum.Descriptor instead. -func (PatternFlowPfcPauseDst_Choice_Enum) EnumDescriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{456, 0, 0} +// Deprecated: Use PatternFlowIpv4HeaderChecksum_Choice_Enum.Descriptor instead. +func (PatternFlowIpv4HeaderChecksum_Choice_Enum) EnumDescriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{446, 0, 0} } -type PatternFlowPfcPauseSrc_Choice_Enum int32 +type PatternFlowIpv4HeaderChecksum_Generated_Enum int32 const ( - PatternFlowPfcPauseSrc_Choice_unspecified PatternFlowPfcPauseSrc_Choice_Enum = 0 - PatternFlowPfcPauseSrc_Choice_value PatternFlowPfcPauseSrc_Choice_Enum = 2 - PatternFlowPfcPauseSrc_Choice_values PatternFlowPfcPauseSrc_Choice_Enum = 3 - PatternFlowPfcPauseSrc_Choice_increment PatternFlowPfcPauseSrc_Choice_Enum = 4 - PatternFlowPfcPauseSrc_Choice_decrement PatternFlowPfcPauseSrc_Choice_Enum = 5 + PatternFlowIpv4HeaderChecksum_Generated_unspecified PatternFlowIpv4HeaderChecksum_Generated_Enum = 0 + PatternFlowIpv4HeaderChecksum_Generated_good PatternFlowIpv4HeaderChecksum_Generated_Enum = 1 + PatternFlowIpv4HeaderChecksum_Generated_bad PatternFlowIpv4HeaderChecksum_Generated_Enum = 2 ) -// Enum value maps for PatternFlowPfcPauseSrc_Choice_Enum. +// Enum value maps for PatternFlowIpv4HeaderChecksum_Generated_Enum. var ( - PatternFlowPfcPauseSrc_Choice_Enum_name = map[int32]string{ + PatternFlowIpv4HeaderChecksum_Generated_Enum_name = map[int32]string{ 0: "unspecified", - 2: "value", - 3: "values", - 4: "increment", - 5: "decrement", + 1: "good", + 2: "bad", } - PatternFlowPfcPauseSrc_Choice_Enum_value = map[string]int32{ + PatternFlowIpv4HeaderChecksum_Generated_Enum_value = map[string]int32{ "unspecified": 0, - "value": 2, - "values": 3, - "increment": 4, - "decrement": 5, + "good": 1, + "bad": 2, } ) -func (x PatternFlowPfcPauseSrc_Choice_Enum) Enum() *PatternFlowPfcPauseSrc_Choice_Enum { - p := new(PatternFlowPfcPauseSrc_Choice_Enum) +func (x PatternFlowIpv4HeaderChecksum_Generated_Enum) Enum() *PatternFlowIpv4HeaderChecksum_Generated_Enum { + p := new(PatternFlowIpv4HeaderChecksum_Generated_Enum) *p = x return p } -func (x PatternFlowPfcPauseSrc_Choice_Enum) String() string { +func (x PatternFlowIpv4HeaderChecksum_Generated_Enum) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } -func (PatternFlowPfcPauseSrc_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { +func (PatternFlowIpv4HeaderChecksum_Generated_Enum) Descriptor() protoreflect.EnumDescriptor { return file_otg_proto_enumTypes[209].Descriptor() } -func (PatternFlowPfcPauseSrc_Choice_Enum) Type() protoreflect.EnumType { +func (PatternFlowIpv4HeaderChecksum_Generated_Enum) Type() protoreflect.EnumType { return &file_otg_proto_enumTypes[209] } -func (x PatternFlowPfcPauseSrc_Choice_Enum) Number() protoreflect.EnumNumber { +func (x PatternFlowIpv4HeaderChecksum_Generated_Enum) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } -// Deprecated: Use PatternFlowPfcPauseSrc_Choice_Enum.Descriptor instead. -func (PatternFlowPfcPauseSrc_Choice_Enum) EnumDescriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{459, 0, 0} +// Deprecated: Use PatternFlowIpv4HeaderChecksum_Generated_Enum.Descriptor instead. +func (PatternFlowIpv4HeaderChecksum_Generated_Enum) EnumDescriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{446, 1, 0} } -type PatternFlowPfcPauseEtherType_Choice_Enum int32 +type PatternFlowIpv4Src_Choice_Enum int32 const ( - PatternFlowPfcPauseEtherType_Choice_unspecified PatternFlowPfcPauseEtherType_Choice_Enum = 0 - PatternFlowPfcPauseEtherType_Choice_value PatternFlowPfcPauseEtherType_Choice_Enum = 2 - PatternFlowPfcPauseEtherType_Choice_values PatternFlowPfcPauseEtherType_Choice_Enum = 3 - PatternFlowPfcPauseEtherType_Choice_increment PatternFlowPfcPauseEtherType_Choice_Enum = 4 - PatternFlowPfcPauseEtherType_Choice_decrement PatternFlowPfcPauseEtherType_Choice_Enum = 5 + PatternFlowIpv4Src_Choice_unspecified PatternFlowIpv4Src_Choice_Enum = 0 + PatternFlowIpv4Src_Choice_value PatternFlowIpv4Src_Choice_Enum = 2 + PatternFlowIpv4Src_Choice_values PatternFlowIpv4Src_Choice_Enum = 3 + PatternFlowIpv4Src_Choice_increment PatternFlowIpv4Src_Choice_Enum = 4 + PatternFlowIpv4Src_Choice_decrement PatternFlowIpv4Src_Choice_Enum = 5 ) -// Enum value maps for PatternFlowPfcPauseEtherType_Choice_Enum. +// Enum value maps for PatternFlowIpv4Src_Choice_Enum. var ( - PatternFlowPfcPauseEtherType_Choice_Enum_name = map[int32]string{ + PatternFlowIpv4Src_Choice_Enum_name = map[int32]string{ 0: "unspecified", 2: "value", 3: "values", 4: "increment", 5: "decrement", } - PatternFlowPfcPauseEtherType_Choice_Enum_value = map[string]int32{ + PatternFlowIpv4Src_Choice_Enum_value = map[string]int32{ "unspecified": 0, "value": 2, "values": 3, @@ -11537,53 +11408,53 @@ var ( } ) -func (x PatternFlowPfcPauseEtherType_Choice_Enum) Enum() *PatternFlowPfcPauseEtherType_Choice_Enum { - p := new(PatternFlowPfcPauseEtherType_Choice_Enum) +func (x PatternFlowIpv4Src_Choice_Enum) Enum() *PatternFlowIpv4Src_Choice_Enum { + p := new(PatternFlowIpv4Src_Choice_Enum) *p = x return p } -func (x PatternFlowPfcPauseEtherType_Choice_Enum) String() string { +func (x PatternFlowIpv4Src_Choice_Enum) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } -func (PatternFlowPfcPauseEtherType_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { +func (PatternFlowIpv4Src_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { return file_otg_proto_enumTypes[210].Descriptor() } -func (PatternFlowPfcPauseEtherType_Choice_Enum) Type() protoreflect.EnumType { +func (PatternFlowIpv4Src_Choice_Enum) Type() protoreflect.EnumType { return &file_otg_proto_enumTypes[210] } -func (x PatternFlowPfcPauseEtherType_Choice_Enum) Number() protoreflect.EnumNumber { +func (x PatternFlowIpv4Src_Choice_Enum) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } -// Deprecated: Use PatternFlowPfcPauseEtherType_Choice_Enum.Descriptor instead. -func (PatternFlowPfcPauseEtherType_Choice_Enum) EnumDescriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{462, 0, 0} +// Deprecated: Use PatternFlowIpv4Src_Choice_Enum.Descriptor instead. +func (PatternFlowIpv4Src_Choice_Enum) EnumDescriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{449, 0, 0} } -type PatternFlowPfcPauseControlOpCode_Choice_Enum int32 +type PatternFlowIpv4Dst_Choice_Enum int32 const ( - PatternFlowPfcPauseControlOpCode_Choice_unspecified PatternFlowPfcPauseControlOpCode_Choice_Enum = 0 - PatternFlowPfcPauseControlOpCode_Choice_value PatternFlowPfcPauseControlOpCode_Choice_Enum = 2 - PatternFlowPfcPauseControlOpCode_Choice_values PatternFlowPfcPauseControlOpCode_Choice_Enum = 3 - PatternFlowPfcPauseControlOpCode_Choice_increment PatternFlowPfcPauseControlOpCode_Choice_Enum = 4 - PatternFlowPfcPauseControlOpCode_Choice_decrement PatternFlowPfcPauseControlOpCode_Choice_Enum = 5 + PatternFlowIpv4Dst_Choice_unspecified PatternFlowIpv4Dst_Choice_Enum = 0 + PatternFlowIpv4Dst_Choice_value PatternFlowIpv4Dst_Choice_Enum = 2 + PatternFlowIpv4Dst_Choice_values PatternFlowIpv4Dst_Choice_Enum = 3 + PatternFlowIpv4Dst_Choice_increment PatternFlowIpv4Dst_Choice_Enum = 4 + PatternFlowIpv4Dst_Choice_decrement PatternFlowIpv4Dst_Choice_Enum = 5 ) -// Enum value maps for PatternFlowPfcPauseControlOpCode_Choice_Enum. +// Enum value maps for PatternFlowIpv4Dst_Choice_Enum. var ( - PatternFlowPfcPauseControlOpCode_Choice_Enum_name = map[int32]string{ + PatternFlowIpv4Dst_Choice_Enum_name = map[int32]string{ 0: "unspecified", 2: "value", 3: "values", 4: "increment", 5: "decrement", } - PatternFlowPfcPauseControlOpCode_Choice_Enum_value = map[string]int32{ + PatternFlowIpv4Dst_Choice_Enum_value = map[string]int32{ "unspecified": 0, "value": 2, "values": 3, @@ -11592,53 +11463,53 @@ var ( } ) -func (x PatternFlowPfcPauseControlOpCode_Choice_Enum) Enum() *PatternFlowPfcPauseControlOpCode_Choice_Enum { - p := new(PatternFlowPfcPauseControlOpCode_Choice_Enum) +func (x PatternFlowIpv4Dst_Choice_Enum) Enum() *PatternFlowIpv4Dst_Choice_Enum { + p := new(PatternFlowIpv4Dst_Choice_Enum) *p = x return p } -func (x PatternFlowPfcPauseControlOpCode_Choice_Enum) String() string { +func (x PatternFlowIpv4Dst_Choice_Enum) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } -func (PatternFlowPfcPauseControlOpCode_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { +func (PatternFlowIpv4Dst_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { return file_otg_proto_enumTypes[211].Descriptor() } -func (PatternFlowPfcPauseControlOpCode_Choice_Enum) Type() protoreflect.EnumType { +func (PatternFlowIpv4Dst_Choice_Enum) Type() protoreflect.EnumType { return &file_otg_proto_enumTypes[211] } -func (x PatternFlowPfcPauseControlOpCode_Choice_Enum) Number() protoreflect.EnumNumber { +func (x PatternFlowIpv4Dst_Choice_Enum) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } -// Deprecated: Use PatternFlowPfcPauseControlOpCode_Choice_Enum.Descriptor instead. -func (PatternFlowPfcPauseControlOpCode_Choice_Enum) EnumDescriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{465, 0, 0} +// Deprecated: Use PatternFlowIpv4Dst_Choice_Enum.Descriptor instead. +func (PatternFlowIpv4Dst_Choice_Enum) EnumDescriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{452, 0, 0} } -type PatternFlowPfcPauseClassEnableVector_Choice_Enum int32 +type PatternFlowIpv4PriorityRaw_Choice_Enum int32 const ( - PatternFlowPfcPauseClassEnableVector_Choice_unspecified PatternFlowPfcPauseClassEnableVector_Choice_Enum = 0 - PatternFlowPfcPauseClassEnableVector_Choice_value PatternFlowPfcPauseClassEnableVector_Choice_Enum = 2 - PatternFlowPfcPauseClassEnableVector_Choice_values PatternFlowPfcPauseClassEnableVector_Choice_Enum = 3 - PatternFlowPfcPauseClassEnableVector_Choice_increment PatternFlowPfcPauseClassEnableVector_Choice_Enum = 4 - PatternFlowPfcPauseClassEnableVector_Choice_decrement PatternFlowPfcPauseClassEnableVector_Choice_Enum = 5 + PatternFlowIpv4PriorityRaw_Choice_unspecified PatternFlowIpv4PriorityRaw_Choice_Enum = 0 + PatternFlowIpv4PriorityRaw_Choice_value PatternFlowIpv4PriorityRaw_Choice_Enum = 2 + PatternFlowIpv4PriorityRaw_Choice_values PatternFlowIpv4PriorityRaw_Choice_Enum = 3 + PatternFlowIpv4PriorityRaw_Choice_increment PatternFlowIpv4PriorityRaw_Choice_Enum = 4 + PatternFlowIpv4PriorityRaw_Choice_decrement PatternFlowIpv4PriorityRaw_Choice_Enum = 5 ) -// Enum value maps for PatternFlowPfcPauseClassEnableVector_Choice_Enum. +// Enum value maps for PatternFlowIpv4PriorityRaw_Choice_Enum. var ( - PatternFlowPfcPauseClassEnableVector_Choice_Enum_name = map[int32]string{ + PatternFlowIpv4PriorityRaw_Choice_Enum_name = map[int32]string{ 0: "unspecified", 2: "value", 3: "values", 4: "increment", 5: "decrement", } - PatternFlowPfcPauseClassEnableVector_Choice_Enum_value = map[string]int32{ + PatternFlowIpv4PriorityRaw_Choice_Enum_value = map[string]int32{ "unspecified": 0, "value": 2, "values": 3, @@ -11647,53 +11518,53 @@ var ( } ) -func (x PatternFlowPfcPauseClassEnableVector_Choice_Enum) Enum() *PatternFlowPfcPauseClassEnableVector_Choice_Enum { - p := new(PatternFlowPfcPauseClassEnableVector_Choice_Enum) +func (x PatternFlowIpv4PriorityRaw_Choice_Enum) Enum() *PatternFlowIpv4PriorityRaw_Choice_Enum { + p := new(PatternFlowIpv4PriorityRaw_Choice_Enum) *p = x return p } -func (x PatternFlowPfcPauseClassEnableVector_Choice_Enum) String() string { +func (x PatternFlowIpv4PriorityRaw_Choice_Enum) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } -func (PatternFlowPfcPauseClassEnableVector_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { +func (PatternFlowIpv4PriorityRaw_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { return file_otg_proto_enumTypes[212].Descriptor() } -func (PatternFlowPfcPauseClassEnableVector_Choice_Enum) Type() protoreflect.EnumType { +func (PatternFlowIpv4PriorityRaw_Choice_Enum) Type() protoreflect.EnumType { return &file_otg_proto_enumTypes[212] } -func (x PatternFlowPfcPauseClassEnableVector_Choice_Enum) Number() protoreflect.EnumNumber { +func (x PatternFlowIpv4PriorityRaw_Choice_Enum) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } -// Deprecated: Use PatternFlowPfcPauseClassEnableVector_Choice_Enum.Descriptor instead. -func (PatternFlowPfcPauseClassEnableVector_Choice_Enum) EnumDescriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{468, 0, 0} +// Deprecated: Use PatternFlowIpv4PriorityRaw_Choice_Enum.Descriptor instead. +func (PatternFlowIpv4PriorityRaw_Choice_Enum) EnumDescriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{455, 0, 0} } -type PatternFlowPfcPausePauseClass0_Choice_Enum int32 +type PatternFlowIpv4DscpPhb_Choice_Enum int32 const ( - PatternFlowPfcPausePauseClass0_Choice_unspecified PatternFlowPfcPausePauseClass0_Choice_Enum = 0 - PatternFlowPfcPausePauseClass0_Choice_value PatternFlowPfcPausePauseClass0_Choice_Enum = 2 - PatternFlowPfcPausePauseClass0_Choice_values PatternFlowPfcPausePauseClass0_Choice_Enum = 3 - PatternFlowPfcPausePauseClass0_Choice_increment PatternFlowPfcPausePauseClass0_Choice_Enum = 4 - PatternFlowPfcPausePauseClass0_Choice_decrement PatternFlowPfcPausePauseClass0_Choice_Enum = 5 + PatternFlowIpv4DscpPhb_Choice_unspecified PatternFlowIpv4DscpPhb_Choice_Enum = 0 + PatternFlowIpv4DscpPhb_Choice_value PatternFlowIpv4DscpPhb_Choice_Enum = 2 + PatternFlowIpv4DscpPhb_Choice_values PatternFlowIpv4DscpPhb_Choice_Enum = 3 + PatternFlowIpv4DscpPhb_Choice_increment PatternFlowIpv4DscpPhb_Choice_Enum = 4 + PatternFlowIpv4DscpPhb_Choice_decrement PatternFlowIpv4DscpPhb_Choice_Enum = 5 ) -// Enum value maps for PatternFlowPfcPausePauseClass0_Choice_Enum. +// Enum value maps for PatternFlowIpv4DscpPhb_Choice_Enum. var ( - PatternFlowPfcPausePauseClass0_Choice_Enum_name = map[int32]string{ + PatternFlowIpv4DscpPhb_Choice_Enum_name = map[int32]string{ 0: "unspecified", 2: "value", 3: "values", 4: "increment", 5: "decrement", } - PatternFlowPfcPausePauseClass0_Choice_Enum_value = map[string]int32{ + PatternFlowIpv4DscpPhb_Choice_Enum_value = map[string]int32{ "unspecified": 0, "value": 2, "values": 3, @@ -11702,53 +11573,53 @@ var ( } ) -func (x PatternFlowPfcPausePauseClass0_Choice_Enum) Enum() *PatternFlowPfcPausePauseClass0_Choice_Enum { - p := new(PatternFlowPfcPausePauseClass0_Choice_Enum) +func (x PatternFlowIpv4DscpPhb_Choice_Enum) Enum() *PatternFlowIpv4DscpPhb_Choice_Enum { + p := new(PatternFlowIpv4DscpPhb_Choice_Enum) *p = x return p } -func (x PatternFlowPfcPausePauseClass0_Choice_Enum) String() string { +func (x PatternFlowIpv4DscpPhb_Choice_Enum) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } -func (PatternFlowPfcPausePauseClass0_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { +func (PatternFlowIpv4DscpPhb_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { return file_otg_proto_enumTypes[213].Descriptor() } -func (PatternFlowPfcPausePauseClass0_Choice_Enum) Type() protoreflect.EnumType { +func (PatternFlowIpv4DscpPhb_Choice_Enum) Type() protoreflect.EnumType { return &file_otg_proto_enumTypes[213] } -func (x PatternFlowPfcPausePauseClass0_Choice_Enum) Number() protoreflect.EnumNumber { +func (x PatternFlowIpv4DscpPhb_Choice_Enum) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } -// Deprecated: Use PatternFlowPfcPausePauseClass0_Choice_Enum.Descriptor instead. -func (PatternFlowPfcPausePauseClass0_Choice_Enum) EnumDescriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{471, 0, 0} +// Deprecated: Use PatternFlowIpv4DscpPhb_Choice_Enum.Descriptor instead. +func (PatternFlowIpv4DscpPhb_Choice_Enum) EnumDescriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{458, 0, 0} } -type PatternFlowPfcPausePauseClass1_Choice_Enum int32 +type PatternFlowIpv4DscpEcn_Choice_Enum int32 const ( - PatternFlowPfcPausePauseClass1_Choice_unspecified PatternFlowPfcPausePauseClass1_Choice_Enum = 0 - PatternFlowPfcPausePauseClass1_Choice_value PatternFlowPfcPausePauseClass1_Choice_Enum = 2 - PatternFlowPfcPausePauseClass1_Choice_values PatternFlowPfcPausePauseClass1_Choice_Enum = 3 - PatternFlowPfcPausePauseClass1_Choice_increment PatternFlowPfcPausePauseClass1_Choice_Enum = 4 - PatternFlowPfcPausePauseClass1_Choice_decrement PatternFlowPfcPausePauseClass1_Choice_Enum = 5 + PatternFlowIpv4DscpEcn_Choice_unspecified PatternFlowIpv4DscpEcn_Choice_Enum = 0 + PatternFlowIpv4DscpEcn_Choice_value PatternFlowIpv4DscpEcn_Choice_Enum = 2 + PatternFlowIpv4DscpEcn_Choice_values PatternFlowIpv4DscpEcn_Choice_Enum = 3 + PatternFlowIpv4DscpEcn_Choice_increment PatternFlowIpv4DscpEcn_Choice_Enum = 4 + PatternFlowIpv4DscpEcn_Choice_decrement PatternFlowIpv4DscpEcn_Choice_Enum = 5 ) -// Enum value maps for PatternFlowPfcPausePauseClass1_Choice_Enum. +// Enum value maps for PatternFlowIpv4DscpEcn_Choice_Enum. var ( - PatternFlowPfcPausePauseClass1_Choice_Enum_name = map[int32]string{ + PatternFlowIpv4DscpEcn_Choice_Enum_name = map[int32]string{ 0: "unspecified", 2: "value", 3: "values", 4: "increment", 5: "decrement", } - PatternFlowPfcPausePauseClass1_Choice_Enum_value = map[string]int32{ + PatternFlowIpv4DscpEcn_Choice_Enum_value = map[string]int32{ "unspecified": 0, "value": 2, "values": 3, @@ -11757,53 +11628,53 @@ var ( } ) -func (x PatternFlowPfcPausePauseClass1_Choice_Enum) Enum() *PatternFlowPfcPausePauseClass1_Choice_Enum { - p := new(PatternFlowPfcPausePauseClass1_Choice_Enum) +func (x PatternFlowIpv4DscpEcn_Choice_Enum) Enum() *PatternFlowIpv4DscpEcn_Choice_Enum { + p := new(PatternFlowIpv4DscpEcn_Choice_Enum) *p = x return p } -func (x PatternFlowPfcPausePauseClass1_Choice_Enum) String() string { +func (x PatternFlowIpv4DscpEcn_Choice_Enum) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } -func (PatternFlowPfcPausePauseClass1_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { +func (PatternFlowIpv4DscpEcn_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { return file_otg_proto_enumTypes[214].Descriptor() } -func (PatternFlowPfcPausePauseClass1_Choice_Enum) Type() protoreflect.EnumType { +func (PatternFlowIpv4DscpEcn_Choice_Enum) Type() protoreflect.EnumType { return &file_otg_proto_enumTypes[214] } -func (x PatternFlowPfcPausePauseClass1_Choice_Enum) Number() protoreflect.EnumNumber { +func (x PatternFlowIpv4DscpEcn_Choice_Enum) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } -// Deprecated: Use PatternFlowPfcPausePauseClass1_Choice_Enum.Descriptor instead. -func (PatternFlowPfcPausePauseClass1_Choice_Enum) EnumDescriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{474, 0, 0} +// Deprecated: Use PatternFlowIpv4DscpEcn_Choice_Enum.Descriptor instead. +func (PatternFlowIpv4DscpEcn_Choice_Enum) EnumDescriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{461, 0, 0} } -type PatternFlowPfcPausePauseClass2_Choice_Enum int32 +type PatternFlowIpv4TosPrecedence_Choice_Enum int32 const ( - PatternFlowPfcPausePauseClass2_Choice_unspecified PatternFlowPfcPausePauseClass2_Choice_Enum = 0 - PatternFlowPfcPausePauseClass2_Choice_value PatternFlowPfcPausePauseClass2_Choice_Enum = 2 - PatternFlowPfcPausePauseClass2_Choice_values PatternFlowPfcPausePauseClass2_Choice_Enum = 3 - PatternFlowPfcPausePauseClass2_Choice_increment PatternFlowPfcPausePauseClass2_Choice_Enum = 4 - PatternFlowPfcPausePauseClass2_Choice_decrement PatternFlowPfcPausePauseClass2_Choice_Enum = 5 + PatternFlowIpv4TosPrecedence_Choice_unspecified PatternFlowIpv4TosPrecedence_Choice_Enum = 0 + PatternFlowIpv4TosPrecedence_Choice_value PatternFlowIpv4TosPrecedence_Choice_Enum = 2 + PatternFlowIpv4TosPrecedence_Choice_values PatternFlowIpv4TosPrecedence_Choice_Enum = 3 + PatternFlowIpv4TosPrecedence_Choice_increment PatternFlowIpv4TosPrecedence_Choice_Enum = 4 + PatternFlowIpv4TosPrecedence_Choice_decrement PatternFlowIpv4TosPrecedence_Choice_Enum = 5 ) -// Enum value maps for PatternFlowPfcPausePauseClass2_Choice_Enum. +// Enum value maps for PatternFlowIpv4TosPrecedence_Choice_Enum. var ( - PatternFlowPfcPausePauseClass2_Choice_Enum_name = map[int32]string{ + PatternFlowIpv4TosPrecedence_Choice_Enum_name = map[int32]string{ 0: "unspecified", 2: "value", 3: "values", 4: "increment", 5: "decrement", } - PatternFlowPfcPausePauseClass2_Choice_Enum_value = map[string]int32{ + PatternFlowIpv4TosPrecedence_Choice_Enum_value = map[string]int32{ "unspecified": 0, "value": 2, "values": 3, @@ -11812,53 +11683,53 @@ var ( } ) -func (x PatternFlowPfcPausePauseClass2_Choice_Enum) Enum() *PatternFlowPfcPausePauseClass2_Choice_Enum { - p := new(PatternFlowPfcPausePauseClass2_Choice_Enum) +func (x PatternFlowIpv4TosPrecedence_Choice_Enum) Enum() *PatternFlowIpv4TosPrecedence_Choice_Enum { + p := new(PatternFlowIpv4TosPrecedence_Choice_Enum) *p = x return p } -func (x PatternFlowPfcPausePauseClass2_Choice_Enum) String() string { +func (x PatternFlowIpv4TosPrecedence_Choice_Enum) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } -func (PatternFlowPfcPausePauseClass2_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { +func (PatternFlowIpv4TosPrecedence_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { return file_otg_proto_enumTypes[215].Descriptor() } -func (PatternFlowPfcPausePauseClass2_Choice_Enum) Type() protoreflect.EnumType { +func (PatternFlowIpv4TosPrecedence_Choice_Enum) Type() protoreflect.EnumType { return &file_otg_proto_enumTypes[215] } -func (x PatternFlowPfcPausePauseClass2_Choice_Enum) Number() protoreflect.EnumNumber { +func (x PatternFlowIpv4TosPrecedence_Choice_Enum) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } -// Deprecated: Use PatternFlowPfcPausePauseClass2_Choice_Enum.Descriptor instead. -func (PatternFlowPfcPausePauseClass2_Choice_Enum) EnumDescriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{477, 0, 0} +// Deprecated: Use PatternFlowIpv4TosPrecedence_Choice_Enum.Descriptor instead. +func (PatternFlowIpv4TosPrecedence_Choice_Enum) EnumDescriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{464, 0, 0} } -type PatternFlowPfcPausePauseClass3_Choice_Enum int32 +type PatternFlowIpv4TosDelay_Choice_Enum int32 const ( - PatternFlowPfcPausePauseClass3_Choice_unspecified PatternFlowPfcPausePauseClass3_Choice_Enum = 0 - PatternFlowPfcPausePauseClass3_Choice_value PatternFlowPfcPausePauseClass3_Choice_Enum = 2 - PatternFlowPfcPausePauseClass3_Choice_values PatternFlowPfcPausePauseClass3_Choice_Enum = 3 - PatternFlowPfcPausePauseClass3_Choice_increment PatternFlowPfcPausePauseClass3_Choice_Enum = 4 - PatternFlowPfcPausePauseClass3_Choice_decrement PatternFlowPfcPausePauseClass3_Choice_Enum = 5 + PatternFlowIpv4TosDelay_Choice_unspecified PatternFlowIpv4TosDelay_Choice_Enum = 0 + PatternFlowIpv4TosDelay_Choice_value PatternFlowIpv4TosDelay_Choice_Enum = 2 + PatternFlowIpv4TosDelay_Choice_values PatternFlowIpv4TosDelay_Choice_Enum = 3 + PatternFlowIpv4TosDelay_Choice_increment PatternFlowIpv4TosDelay_Choice_Enum = 4 + PatternFlowIpv4TosDelay_Choice_decrement PatternFlowIpv4TosDelay_Choice_Enum = 5 ) -// Enum value maps for PatternFlowPfcPausePauseClass3_Choice_Enum. +// Enum value maps for PatternFlowIpv4TosDelay_Choice_Enum. var ( - PatternFlowPfcPausePauseClass3_Choice_Enum_name = map[int32]string{ + PatternFlowIpv4TosDelay_Choice_Enum_name = map[int32]string{ 0: "unspecified", 2: "value", 3: "values", 4: "increment", 5: "decrement", } - PatternFlowPfcPausePauseClass3_Choice_Enum_value = map[string]int32{ + PatternFlowIpv4TosDelay_Choice_Enum_value = map[string]int32{ "unspecified": 0, "value": 2, "values": 3, @@ -11867,53 +11738,53 @@ var ( } ) -func (x PatternFlowPfcPausePauseClass3_Choice_Enum) Enum() *PatternFlowPfcPausePauseClass3_Choice_Enum { - p := new(PatternFlowPfcPausePauseClass3_Choice_Enum) +func (x PatternFlowIpv4TosDelay_Choice_Enum) Enum() *PatternFlowIpv4TosDelay_Choice_Enum { + p := new(PatternFlowIpv4TosDelay_Choice_Enum) *p = x return p } -func (x PatternFlowPfcPausePauseClass3_Choice_Enum) String() string { +func (x PatternFlowIpv4TosDelay_Choice_Enum) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } -func (PatternFlowPfcPausePauseClass3_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { +func (PatternFlowIpv4TosDelay_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { return file_otg_proto_enumTypes[216].Descriptor() } -func (PatternFlowPfcPausePauseClass3_Choice_Enum) Type() protoreflect.EnumType { +func (PatternFlowIpv4TosDelay_Choice_Enum) Type() protoreflect.EnumType { return &file_otg_proto_enumTypes[216] } -func (x PatternFlowPfcPausePauseClass3_Choice_Enum) Number() protoreflect.EnumNumber { +func (x PatternFlowIpv4TosDelay_Choice_Enum) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } -// Deprecated: Use PatternFlowPfcPausePauseClass3_Choice_Enum.Descriptor instead. -func (PatternFlowPfcPausePauseClass3_Choice_Enum) EnumDescriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{480, 0, 0} +// Deprecated: Use PatternFlowIpv4TosDelay_Choice_Enum.Descriptor instead. +func (PatternFlowIpv4TosDelay_Choice_Enum) EnumDescriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{467, 0, 0} } -type PatternFlowPfcPausePauseClass4_Choice_Enum int32 +type PatternFlowIpv4TosThroughput_Choice_Enum int32 const ( - PatternFlowPfcPausePauseClass4_Choice_unspecified PatternFlowPfcPausePauseClass4_Choice_Enum = 0 - PatternFlowPfcPausePauseClass4_Choice_value PatternFlowPfcPausePauseClass4_Choice_Enum = 2 - PatternFlowPfcPausePauseClass4_Choice_values PatternFlowPfcPausePauseClass4_Choice_Enum = 3 - PatternFlowPfcPausePauseClass4_Choice_increment PatternFlowPfcPausePauseClass4_Choice_Enum = 4 - PatternFlowPfcPausePauseClass4_Choice_decrement PatternFlowPfcPausePauseClass4_Choice_Enum = 5 + PatternFlowIpv4TosThroughput_Choice_unspecified PatternFlowIpv4TosThroughput_Choice_Enum = 0 + PatternFlowIpv4TosThroughput_Choice_value PatternFlowIpv4TosThroughput_Choice_Enum = 2 + PatternFlowIpv4TosThroughput_Choice_values PatternFlowIpv4TosThroughput_Choice_Enum = 3 + PatternFlowIpv4TosThroughput_Choice_increment PatternFlowIpv4TosThroughput_Choice_Enum = 4 + PatternFlowIpv4TosThroughput_Choice_decrement PatternFlowIpv4TosThroughput_Choice_Enum = 5 ) -// Enum value maps for PatternFlowPfcPausePauseClass4_Choice_Enum. +// Enum value maps for PatternFlowIpv4TosThroughput_Choice_Enum. var ( - PatternFlowPfcPausePauseClass4_Choice_Enum_name = map[int32]string{ + PatternFlowIpv4TosThroughput_Choice_Enum_name = map[int32]string{ 0: "unspecified", 2: "value", 3: "values", 4: "increment", 5: "decrement", } - PatternFlowPfcPausePauseClass4_Choice_Enum_value = map[string]int32{ + PatternFlowIpv4TosThroughput_Choice_Enum_value = map[string]int32{ "unspecified": 0, "value": 2, "values": 3, @@ -11922,53 +11793,53 @@ var ( } ) -func (x PatternFlowPfcPausePauseClass4_Choice_Enum) Enum() *PatternFlowPfcPausePauseClass4_Choice_Enum { - p := new(PatternFlowPfcPausePauseClass4_Choice_Enum) +func (x PatternFlowIpv4TosThroughput_Choice_Enum) Enum() *PatternFlowIpv4TosThroughput_Choice_Enum { + p := new(PatternFlowIpv4TosThroughput_Choice_Enum) *p = x return p } -func (x PatternFlowPfcPausePauseClass4_Choice_Enum) String() string { +func (x PatternFlowIpv4TosThroughput_Choice_Enum) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } -func (PatternFlowPfcPausePauseClass4_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { +func (PatternFlowIpv4TosThroughput_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { return file_otg_proto_enumTypes[217].Descriptor() } -func (PatternFlowPfcPausePauseClass4_Choice_Enum) Type() protoreflect.EnumType { +func (PatternFlowIpv4TosThroughput_Choice_Enum) Type() protoreflect.EnumType { return &file_otg_proto_enumTypes[217] } -func (x PatternFlowPfcPausePauseClass4_Choice_Enum) Number() protoreflect.EnumNumber { +func (x PatternFlowIpv4TosThroughput_Choice_Enum) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } -// Deprecated: Use PatternFlowPfcPausePauseClass4_Choice_Enum.Descriptor instead. -func (PatternFlowPfcPausePauseClass4_Choice_Enum) EnumDescriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{483, 0, 0} +// Deprecated: Use PatternFlowIpv4TosThroughput_Choice_Enum.Descriptor instead. +func (PatternFlowIpv4TosThroughput_Choice_Enum) EnumDescriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{470, 0, 0} } -type PatternFlowPfcPausePauseClass5_Choice_Enum int32 +type PatternFlowIpv4TosReliability_Choice_Enum int32 const ( - PatternFlowPfcPausePauseClass5_Choice_unspecified PatternFlowPfcPausePauseClass5_Choice_Enum = 0 - PatternFlowPfcPausePauseClass5_Choice_value PatternFlowPfcPausePauseClass5_Choice_Enum = 2 - PatternFlowPfcPausePauseClass5_Choice_values PatternFlowPfcPausePauseClass5_Choice_Enum = 3 - PatternFlowPfcPausePauseClass5_Choice_increment PatternFlowPfcPausePauseClass5_Choice_Enum = 4 - PatternFlowPfcPausePauseClass5_Choice_decrement PatternFlowPfcPausePauseClass5_Choice_Enum = 5 + PatternFlowIpv4TosReliability_Choice_unspecified PatternFlowIpv4TosReliability_Choice_Enum = 0 + PatternFlowIpv4TosReliability_Choice_value PatternFlowIpv4TosReliability_Choice_Enum = 2 + PatternFlowIpv4TosReliability_Choice_values PatternFlowIpv4TosReliability_Choice_Enum = 3 + PatternFlowIpv4TosReliability_Choice_increment PatternFlowIpv4TosReliability_Choice_Enum = 4 + PatternFlowIpv4TosReliability_Choice_decrement PatternFlowIpv4TosReliability_Choice_Enum = 5 ) -// Enum value maps for PatternFlowPfcPausePauseClass5_Choice_Enum. +// Enum value maps for PatternFlowIpv4TosReliability_Choice_Enum. var ( - PatternFlowPfcPausePauseClass5_Choice_Enum_name = map[int32]string{ + PatternFlowIpv4TosReliability_Choice_Enum_name = map[int32]string{ 0: "unspecified", 2: "value", 3: "values", 4: "increment", 5: "decrement", } - PatternFlowPfcPausePauseClass5_Choice_Enum_value = map[string]int32{ + PatternFlowIpv4TosReliability_Choice_Enum_value = map[string]int32{ "unspecified": 0, "value": 2, "values": 3, @@ -11977,53 +11848,53 @@ var ( } ) -func (x PatternFlowPfcPausePauseClass5_Choice_Enum) Enum() *PatternFlowPfcPausePauseClass5_Choice_Enum { - p := new(PatternFlowPfcPausePauseClass5_Choice_Enum) +func (x PatternFlowIpv4TosReliability_Choice_Enum) Enum() *PatternFlowIpv4TosReliability_Choice_Enum { + p := new(PatternFlowIpv4TosReliability_Choice_Enum) *p = x return p } -func (x PatternFlowPfcPausePauseClass5_Choice_Enum) String() string { +func (x PatternFlowIpv4TosReliability_Choice_Enum) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } -func (PatternFlowPfcPausePauseClass5_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { +func (PatternFlowIpv4TosReliability_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { return file_otg_proto_enumTypes[218].Descriptor() } -func (PatternFlowPfcPausePauseClass5_Choice_Enum) Type() protoreflect.EnumType { +func (PatternFlowIpv4TosReliability_Choice_Enum) Type() protoreflect.EnumType { return &file_otg_proto_enumTypes[218] } -func (x PatternFlowPfcPausePauseClass5_Choice_Enum) Number() protoreflect.EnumNumber { +func (x PatternFlowIpv4TosReliability_Choice_Enum) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } -// Deprecated: Use PatternFlowPfcPausePauseClass5_Choice_Enum.Descriptor instead. -func (PatternFlowPfcPausePauseClass5_Choice_Enum) EnumDescriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{486, 0, 0} +// Deprecated: Use PatternFlowIpv4TosReliability_Choice_Enum.Descriptor instead. +func (PatternFlowIpv4TosReliability_Choice_Enum) EnumDescriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{473, 0, 0} } -type PatternFlowPfcPausePauseClass6_Choice_Enum int32 +type PatternFlowIpv4TosMonetary_Choice_Enum int32 const ( - PatternFlowPfcPausePauseClass6_Choice_unspecified PatternFlowPfcPausePauseClass6_Choice_Enum = 0 - PatternFlowPfcPausePauseClass6_Choice_value PatternFlowPfcPausePauseClass6_Choice_Enum = 2 - PatternFlowPfcPausePauseClass6_Choice_values PatternFlowPfcPausePauseClass6_Choice_Enum = 3 - PatternFlowPfcPausePauseClass6_Choice_increment PatternFlowPfcPausePauseClass6_Choice_Enum = 4 - PatternFlowPfcPausePauseClass6_Choice_decrement PatternFlowPfcPausePauseClass6_Choice_Enum = 5 + PatternFlowIpv4TosMonetary_Choice_unspecified PatternFlowIpv4TosMonetary_Choice_Enum = 0 + PatternFlowIpv4TosMonetary_Choice_value PatternFlowIpv4TosMonetary_Choice_Enum = 2 + PatternFlowIpv4TosMonetary_Choice_values PatternFlowIpv4TosMonetary_Choice_Enum = 3 + PatternFlowIpv4TosMonetary_Choice_increment PatternFlowIpv4TosMonetary_Choice_Enum = 4 + PatternFlowIpv4TosMonetary_Choice_decrement PatternFlowIpv4TosMonetary_Choice_Enum = 5 ) -// Enum value maps for PatternFlowPfcPausePauseClass6_Choice_Enum. +// Enum value maps for PatternFlowIpv4TosMonetary_Choice_Enum. var ( - PatternFlowPfcPausePauseClass6_Choice_Enum_name = map[int32]string{ + PatternFlowIpv4TosMonetary_Choice_Enum_name = map[int32]string{ 0: "unspecified", 2: "value", 3: "values", 4: "increment", 5: "decrement", } - PatternFlowPfcPausePauseClass6_Choice_Enum_value = map[string]int32{ + PatternFlowIpv4TosMonetary_Choice_Enum_value = map[string]int32{ "unspecified": 0, "value": 2, "values": 3, @@ -12032,53 +11903,53 @@ var ( } ) -func (x PatternFlowPfcPausePauseClass6_Choice_Enum) Enum() *PatternFlowPfcPausePauseClass6_Choice_Enum { - p := new(PatternFlowPfcPausePauseClass6_Choice_Enum) +func (x PatternFlowIpv4TosMonetary_Choice_Enum) Enum() *PatternFlowIpv4TosMonetary_Choice_Enum { + p := new(PatternFlowIpv4TosMonetary_Choice_Enum) *p = x return p } -func (x PatternFlowPfcPausePauseClass6_Choice_Enum) String() string { +func (x PatternFlowIpv4TosMonetary_Choice_Enum) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } -func (PatternFlowPfcPausePauseClass6_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { +func (PatternFlowIpv4TosMonetary_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { return file_otg_proto_enumTypes[219].Descriptor() } -func (PatternFlowPfcPausePauseClass6_Choice_Enum) Type() protoreflect.EnumType { +func (PatternFlowIpv4TosMonetary_Choice_Enum) Type() protoreflect.EnumType { return &file_otg_proto_enumTypes[219] } -func (x PatternFlowPfcPausePauseClass6_Choice_Enum) Number() protoreflect.EnumNumber { +func (x PatternFlowIpv4TosMonetary_Choice_Enum) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } -// Deprecated: Use PatternFlowPfcPausePauseClass6_Choice_Enum.Descriptor instead. -func (PatternFlowPfcPausePauseClass6_Choice_Enum) EnumDescriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{489, 0, 0} +// Deprecated: Use PatternFlowIpv4TosMonetary_Choice_Enum.Descriptor instead. +func (PatternFlowIpv4TosMonetary_Choice_Enum) EnumDescriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{476, 0, 0} } -type PatternFlowPfcPausePauseClass7_Choice_Enum int32 +type PatternFlowIpv4TosUnused_Choice_Enum int32 const ( - PatternFlowPfcPausePauseClass7_Choice_unspecified PatternFlowPfcPausePauseClass7_Choice_Enum = 0 - PatternFlowPfcPausePauseClass7_Choice_value PatternFlowPfcPausePauseClass7_Choice_Enum = 2 - PatternFlowPfcPausePauseClass7_Choice_values PatternFlowPfcPausePauseClass7_Choice_Enum = 3 - PatternFlowPfcPausePauseClass7_Choice_increment PatternFlowPfcPausePauseClass7_Choice_Enum = 4 - PatternFlowPfcPausePauseClass7_Choice_decrement PatternFlowPfcPausePauseClass7_Choice_Enum = 5 + PatternFlowIpv4TosUnused_Choice_unspecified PatternFlowIpv4TosUnused_Choice_Enum = 0 + PatternFlowIpv4TosUnused_Choice_value PatternFlowIpv4TosUnused_Choice_Enum = 2 + PatternFlowIpv4TosUnused_Choice_values PatternFlowIpv4TosUnused_Choice_Enum = 3 + PatternFlowIpv4TosUnused_Choice_increment PatternFlowIpv4TosUnused_Choice_Enum = 4 + PatternFlowIpv4TosUnused_Choice_decrement PatternFlowIpv4TosUnused_Choice_Enum = 5 ) -// Enum value maps for PatternFlowPfcPausePauseClass7_Choice_Enum. +// Enum value maps for PatternFlowIpv4TosUnused_Choice_Enum. var ( - PatternFlowPfcPausePauseClass7_Choice_Enum_name = map[int32]string{ + PatternFlowIpv4TosUnused_Choice_Enum_name = map[int32]string{ 0: "unspecified", 2: "value", 3: "values", 4: "increment", 5: "decrement", } - PatternFlowPfcPausePauseClass7_Choice_Enum_value = map[string]int32{ + PatternFlowIpv4TosUnused_Choice_Enum_value = map[string]int32{ "unspecified": 0, "value": 2, "values": 3, @@ -12087,53 +11958,53 @@ var ( } ) -func (x PatternFlowPfcPausePauseClass7_Choice_Enum) Enum() *PatternFlowPfcPausePauseClass7_Choice_Enum { - p := new(PatternFlowPfcPausePauseClass7_Choice_Enum) +func (x PatternFlowIpv4TosUnused_Choice_Enum) Enum() *PatternFlowIpv4TosUnused_Choice_Enum { + p := new(PatternFlowIpv4TosUnused_Choice_Enum) *p = x return p } -func (x PatternFlowPfcPausePauseClass7_Choice_Enum) String() string { +func (x PatternFlowIpv4TosUnused_Choice_Enum) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } -func (PatternFlowPfcPausePauseClass7_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { +func (PatternFlowIpv4TosUnused_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { return file_otg_proto_enumTypes[220].Descriptor() } -func (PatternFlowPfcPausePauseClass7_Choice_Enum) Type() protoreflect.EnumType { +func (PatternFlowIpv4TosUnused_Choice_Enum) Type() protoreflect.EnumType { return &file_otg_proto_enumTypes[220] } -func (x PatternFlowPfcPausePauseClass7_Choice_Enum) Number() protoreflect.EnumNumber { +func (x PatternFlowIpv4TosUnused_Choice_Enum) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } -// Deprecated: Use PatternFlowPfcPausePauseClass7_Choice_Enum.Descriptor instead. -func (PatternFlowPfcPausePauseClass7_Choice_Enum) EnumDescriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{492, 0, 0} +// Deprecated: Use PatternFlowIpv4TosUnused_Choice_Enum.Descriptor instead. +func (PatternFlowIpv4TosUnused_Choice_Enum) EnumDescriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{479, 0, 0} } -type PatternFlowEthernetPauseDst_Choice_Enum int32 +type PatternFlowIpv6Version_Choice_Enum int32 const ( - PatternFlowEthernetPauseDst_Choice_unspecified PatternFlowEthernetPauseDst_Choice_Enum = 0 - PatternFlowEthernetPauseDst_Choice_value PatternFlowEthernetPauseDst_Choice_Enum = 2 - PatternFlowEthernetPauseDst_Choice_values PatternFlowEthernetPauseDst_Choice_Enum = 3 - PatternFlowEthernetPauseDst_Choice_increment PatternFlowEthernetPauseDst_Choice_Enum = 4 - PatternFlowEthernetPauseDst_Choice_decrement PatternFlowEthernetPauseDst_Choice_Enum = 5 + PatternFlowIpv6Version_Choice_unspecified PatternFlowIpv6Version_Choice_Enum = 0 + PatternFlowIpv6Version_Choice_value PatternFlowIpv6Version_Choice_Enum = 2 + PatternFlowIpv6Version_Choice_values PatternFlowIpv6Version_Choice_Enum = 3 + PatternFlowIpv6Version_Choice_increment PatternFlowIpv6Version_Choice_Enum = 4 + PatternFlowIpv6Version_Choice_decrement PatternFlowIpv6Version_Choice_Enum = 5 ) -// Enum value maps for PatternFlowEthernetPauseDst_Choice_Enum. +// Enum value maps for PatternFlowIpv6Version_Choice_Enum. var ( - PatternFlowEthernetPauseDst_Choice_Enum_name = map[int32]string{ + PatternFlowIpv6Version_Choice_Enum_name = map[int32]string{ 0: "unspecified", 2: "value", 3: "values", 4: "increment", 5: "decrement", } - PatternFlowEthernetPauseDst_Choice_Enum_value = map[string]int32{ + PatternFlowIpv6Version_Choice_Enum_value = map[string]int32{ "unspecified": 0, "value": 2, "values": 3, @@ -12142,53 +12013,53 @@ var ( } ) -func (x PatternFlowEthernetPauseDst_Choice_Enum) Enum() *PatternFlowEthernetPauseDst_Choice_Enum { - p := new(PatternFlowEthernetPauseDst_Choice_Enum) +func (x PatternFlowIpv6Version_Choice_Enum) Enum() *PatternFlowIpv6Version_Choice_Enum { + p := new(PatternFlowIpv6Version_Choice_Enum) *p = x return p } -func (x PatternFlowEthernetPauseDst_Choice_Enum) String() string { +func (x PatternFlowIpv6Version_Choice_Enum) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } -func (PatternFlowEthernetPauseDst_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { +func (PatternFlowIpv6Version_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { return file_otg_proto_enumTypes[221].Descriptor() } -func (PatternFlowEthernetPauseDst_Choice_Enum) Type() protoreflect.EnumType { +func (PatternFlowIpv6Version_Choice_Enum) Type() protoreflect.EnumType { return &file_otg_proto_enumTypes[221] } -func (x PatternFlowEthernetPauseDst_Choice_Enum) Number() protoreflect.EnumNumber { +func (x PatternFlowIpv6Version_Choice_Enum) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } -// Deprecated: Use PatternFlowEthernetPauseDst_Choice_Enum.Descriptor instead. -func (PatternFlowEthernetPauseDst_Choice_Enum) EnumDescriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{495, 0, 0} +// Deprecated: Use PatternFlowIpv6Version_Choice_Enum.Descriptor instead. +func (PatternFlowIpv6Version_Choice_Enum) EnumDescriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{482, 0, 0} } -type PatternFlowEthernetPauseSrc_Choice_Enum int32 +type PatternFlowIpv6TrafficClass_Choice_Enum int32 const ( - PatternFlowEthernetPauseSrc_Choice_unspecified PatternFlowEthernetPauseSrc_Choice_Enum = 0 - PatternFlowEthernetPauseSrc_Choice_value PatternFlowEthernetPauseSrc_Choice_Enum = 2 - PatternFlowEthernetPauseSrc_Choice_values PatternFlowEthernetPauseSrc_Choice_Enum = 3 - PatternFlowEthernetPauseSrc_Choice_increment PatternFlowEthernetPauseSrc_Choice_Enum = 4 - PatternFlowEthernetPauseSrc_Choice_decrement PatternFlowEthernetPauseSrc_Choice_Enum = 5 + PatternFlowIpv6TrafficClass_Choice_unspecified PatternFlowIpv6TrafficClass_Choice_Enum = 0 + PatternFlowIpv6TrafficClass_Choice_value PatternFlowIpv6TrafficClass_Choice_Enum = 2 + PatternFlowIpv6TrafficClass_Choice_values PatternFlowIpv6TrafficClass_Choice_Enum = 3 + PatternFlowIpv6TrafficClass_Choice_increment PatternFlowIpv6TrafficClass_Choice_Enum = 4 + PatternFlowIpv6TrafficClass_Choice_decrement PatternFlowIpv6TrafficClass_Choice_Enum = 5 ) -// Enum value maps for PatternFlowEthernetPauseSrc_Choice_Enum. +// Enum value maps for PatternFlowIpv6TrafficClass_Choice_Enum. var ( - PatternFlowEthernetPauseSrc_Choice_Enum_name = map[int32]string{ + PatternFlowIpv6TrafficClass_Choice_Enum_name = map[int32]string{ 0: "unspecified", 2: "value", 3: "values", 4: "increment", 5: "decrement", } - PatternFlowEthernetPauseSrc_Choice_Enum_value = map[string]int32{ + PatternFlowIpv6TrafficClass_Choice_Enum_value = map[string]int32{ "unspecified": 0, "value": 2, "values": 3, @@ -12197,53 +12068,53 @@ var ( } ) -func (x PatternFlowEthernetPauseSrc_Choice_Enum) Enum() *PatternFlowEthernetPauseSrc_Choice_Enum { - p := new(PatternFlowEthernetPauseSrc_Choice_Enum) +func (x PatternFlowIpv6TrafficClass_Choice_Enum) Enum() *PatternFlowIpv6TrafficClass_Choice_Enum { + p := new(PatternFlowIpv6TrafficClass_Choice_Enum) *p = x return p } -func (x PatternFlowEthernetPauseSrc_Choice_Enum) String() string { +func (x PatternFlowIpv6TrafficClass_Choice_Enum) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } -func (PatternFlowEthernetPauseSrc_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { +func (PatternFlowIpv6TrafficClass_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { return file_otg_proto_enumTypes[222].Descriptor() } -func (PatternFlowEthernetPauseSrc_Choice_Enum) Type() protoreflect.EnumType { +func (PatternFlowIpv6TrafficClass_Choice_Enum) Type() protoreflect.EnumType { return &file_otg_proto_enumTypes[222] } -func (x PatternFlowEthernetPauseSrc_Choice_Enum) Number() protoreflect.EnumNumber { +func (x PatternFlowIpv6TrafficClass_Choice_Enum) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } -// Deprecated: Use PatternFlowEthernetPauseSrc_Choice_Enum.Descriptor instead. -func (PatternFlowEthernetPauseSrc_Choice_Enum) EnumDescriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{498, 0, 0} +// Deprecated: Use PatternFlowIpv6TrafficClass_Choice_Enum.Descriptor instead. +func (PatternFlowIpv6TrafficClass_Choice_Enum) EnumDescriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{485, 0, 0} } -type PatternFlowEthernetPauseEtherType_Choice_Enum int32 +type PatternFlowIpv6FlowLabel_Choice_Enum int32 const ( - PatternFlowEthernetPauseEtherType_Choice_unspecified PatternFlowEthernetPauseEtherType_Choice_Enum = 0 - PatternFlowEthernetPauseEtherType_Choice_value PatternFlowEthernetPauseEtherType_Choice_Enum = 2 - PatternFlowEthernetPauseEtherType_Choice_values PatternFlowEthernetPauseEtherType_Choice_Enum = 3 - PatternFlowEthernetPauseEtherType_Choice_increment PatternFlowEthernetPauseEtherType_Choice_Enum = 4 - PatternFlowEthernetPauseEtherType_Choice_decrement PatternFlowEthernetPauseEtherType_Choice_Enum = 5 + PatternFlowIpv6FlowLabel_Choice_unspecified PatternFlowIpv6FlowLabel_Choice_Enum = 0 + PatternFlowIpv6FlowLabel_Choice_value PatternFlowIpv6FlowLabel_Choice_Enum = 2 + PatternFlowIpv6FlowLabel_Choice_values PatternFlowIpv6FlowLabel_Choice_Enum = 3 + PatternFlowIpv6FlowLabel_Choice_increment PatternFlowIpv6FlowLabel_Choice_Enum = 4 + PatternFlowIpv6FlowLabel_Choice_decrement PatternFlowIpv6FlowLabel_Choice_Enum = 5 ) -// Enum value maps for PatternFlowEthernetPauseEtherType_Choice_Enum. +// Enum value maps for PatternFlowIpv6FlowLabel_Choice_Enum. var ( - PatternFlowEthernetPauseEtherType_Choice_Enum_name = map[int32]string{ + PatternFlowIpv6FlowLabel_Choice_Enum_name = map[int32]string{ 0: "unspecified", 2: "value", 3: "values", 4: "increment", 5: "decrement", } - PatternFlowEthernetPauseEtherType_Choice_Enum_value = map[string]int32{ + PatternFlowIpv6FlowLabel_Choice_Enum_value = map[string]int32{ "unspecified": 0, "value": 2, "values": 3, @@ -12252,163 +12123,169 @@ var ( } ) -func (x PatternFlowEthernetPauseEtherType_Choice_Enum) Enum() *PatternFlowEthernetPauseEtherType_Choice_Enum { - p := new(PatternFlowEthernetPauseEtherType_Choice_Enum) +func (x PatternFlowIpv6FlowLabel_Choice_Enum) Enum() *PatternFlowIpv6FlowLabel_Choice_Enum { + p := new(PatternFlowIpv6FlowLabel_Choice_Enum) *p = x return p } -func (x PatternFlowEthernetPauseEtherType_Choice_Enum) String() string { +func (x PatternFlowIpv6FlowLabel_Choice_Enum) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } -func (PatternFlowEthernetPauseEtherType_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { +func (PatternFlowIpv6FlowLabel_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { return file_otg_proto_enumTypes[223].Descriptor() } -func (PatternFlowEthernetPauseEtherType_Choice_Enum) Type() protoreflect.EnumType { +func (PatternFlowIpv6FlowLabel_Choice_Enum) Type() protoreflect.EnumType { return &file_otg_proto_enumTypes[223] } -func (x PatternFlowEthernetPauseEtherType_Choice_Enum) Number() protoreflect.EnumNumber { +func (x PatternFlowIpv6FlowLabel_Choice_Enum) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } -// Deprecated: Use PatternFlowEthernetPauseEtherType_Choice_Enum.Descriptor instead. -func (PatternFlowEthernetPauseEtherType_Choice_Enum) EnumDescriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{501, 0, 0} +// Deprecated: Use PatternFlowIpv6FlowLabel_Choice_Enum.Descriptor instead. +func (PatternFlowIpv6FlowLabel_Choice_Enum) EnumDescriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{488, 0, 0} } -type PatternFlowEthernetPauseControlOpCode_Choice_Enum int32 +type PatternFlowIpv6PayloadLength_Choice_Enum int32 const ( - PatternFlowEthernetPauseControlOpCode_Choice_unspecified PatternFlowEthernetPauseControlOpCode_Choice_Enum = 0 - PatternFlowEthernetPauseControlOpCode_Choice_value PatternFlowEthernetPauseControlOpCode_Choice_Enum = 2 - PatternFlowEthernetPauseControlOpCode_Choice_values PatternFlowEthernetPauseControlOpCode_Choice_Enum = 3 - PatternFlowEthernetPauseControlOpCode_Choice_increment PatternFlowEthernetPauseControlOpCode_Choice_Enum = 4 - PatternFlowEthernetPauseControlOpCode_Choice_decrement PatternFlowEthernetPauseControlOpCode_Choice_Enum = 5 + PatternFlowIpv6PayloadLength_Choice_unspecified PatternFlowIpv6PayloadLength_Choice_Enum = 0 + PatternFlowIpv6PayloadLength_Choice_value PatternFlowIpv6PayloadLength_Choice_Enum = 2 + PatternFlowIpv6PayloadLength_Choice_values PatternFlowIpv6PayloadLength_Choice_Enum = 3 + PatternFlowIpv6PayloadLength_Choice_auto PatternFlowIpv6PayloadLength_Choice_Enum = 1 + PatternFlowIpv6PayloadLength_Choice_increment PatternFlowIpv6PayloadLength_Choice_Enum = 4 + PatternFlowIpv6PayloadLength_Choice_decrement PatternFlowIpv6PayloadLength_Choice_Enum = 5 ) -// Enum value maps for PatternFlowEthernetPauseControlOpCode_Choice_Enum. +// Enum value maps for PatternFlowIpv6PayloadLength_Choice_Enum. var ( - PatternFlowEthernetPauseControlOpCode_Choice_Enum_name = map[int32]string{ + PatternFlowIpv6PayloadLength_Choice_Enum_name = map[int32]string{ 0: "unspecified", 2: "value", 3: "values", + 1: "auto", 4: "increment", 5: "decrement", } - PatternFlowEthernetPauseControlOpCode_Choice_Enum_value = map[string]int32{ + PatternFlowIpv6PayloadLength_Choice_Enum_value = map[string]int32{ "unspecified": 0, "value": 2, "values": 3, + "auto": 1, "increment": 4, "decrement": 5, } ) -func (x PatternFlowEthernetPauseControlOpCode_Choice_Enum) Enum() *PatternFlowEthernetPauseControlOpCode_Choice_Enum { - p := new(PatternFlowEthernetPauseControlOpCode_Choice_Enum) +func (x PatternFlowIpv6PayloadLength_Choice_Enum) Enum() *PatternFlowIpv6PayloadLength_Choice_Enum { + p := new(PatternFlowIpv6PayloadLength_Choice_Enum) *p = x return p } -func (x PatternFlowEthernetPauseControlOpCode_Choice_Enum) String() string { +func (x PatternFlowIpv6PayloadLength_Choice_Enum) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } -func (PatternFlowEthernetPauseControlOpCode_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { +func (PatternFlowIpv6PayloadLength_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { return file_otg_proto_enumTypes[224].Descriptor() } -func (PatternFlowEthernetPauseControlOpCode_Choice_Enum) Type() protoreflect.EnumType { +func (PatternFlowIpv6PayloadLength_Choice_Enum) Type() protoreflect.EnumType { return &file_otg_proto_enumTypes[224] } -func (x PatternFlowEthernetPauseControlOpCode_Choice_Enum) Number() protoreflect.EnumNumber { +func (x PatternFlowIpv6PayloadLength_Choice_Enum) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } -// Deprecated: Use PatternFlowEthernetPauseControlOpCode_Choice_Enum.Descriptor instead. -func (PatternFlowEthernetPauseControlOpCode_Choice_Enum) EnumDescriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{504, 0, 0} +// Deprecated: Use PatternFlowIpv6PayloadLength_Choice_Enum.Descriptor instead. +func (PatternFlowIpv6PayloadLength_Choice_Enum) EnumDescriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{491, 0, 0} } -type PatternFlowEthernetPauseTime_Choice_Enum int32 +type PatternFlowIpv6NextHeader_Choice_Enum int32 const ( - PatternFlowEthernetPauseTime_Choice_unspecified PatternFlowEthernetPauseTime_Choice_Enum = 0 - PatternFlowEthernetPauseTime_Choice_value PatternFlowEthernetPauseTime_Choice_Enum = 2 - PatternFlowEthernetPauseTime_Choice_values PatternFlowEthernetPauseTime_Choice_Enum = 3 - PatternFlowEthernetPauseTime_Choice_increment PatternFlowEthernetPauseTime_Choice_Enum = 4 - PatternFlowEthernetPauseTime_Choice_decrement PatternFlowEthernetPauseTime_Choice_Enum = 5 + PatternFlowIpv6NextHeader_Choice_unspecified PatternFlowIpv6NextHeader_Choice_Enum = 0 + PatternFlowIpv6NextHeader_Choice_value PatternFlowIpv6NextHeader_Choice_Enum = 2 + PatternFlowIpv6NextHeader_Choice_values PatternFlowIpv6NextHeader_Choice_Enum = 3 + PatternFlowIpv6NextHeader_Choice_auto PatternFlowIpv6NextHeader_Choice_Enum = 1 + PatternFlowIpv6NextHeader_Choice_increment PatternFlowIpv6NextHeader_Choice_Enum = 4 + PatternFlowIpv6NextHeader_Choice_decrement PatternFlowIpv6NextHeader_Choice_Enum = 5 ) -// Enum value maps for PatternFlowEthernetPauseTime_Choice_Enum. +// Enum value maps for PatternFlowIpv6NextHeader_Choice_Enum. var ( - PatternFlowEthernetPauseTime_Choice_Enum_name = map[int32]string{ + PatternFlowIpv6NextHeader_Choice_Enum_name = map[int32]string{ 0: "unspecified", 2: "value", 3: "values", + 1: "auto", 4: "increment", 5: "decrement", } - PatternFlowEthernetPauseTime_Choice_Enum_value = map[string]int32{ + PatternFlowIpv6NextHeader_Choice_Enum_value = map[string]int32{ "unspecified": 0, "value": 2, "values": 3, + "auto": 1, "increment": 4, "decrement": 5, } ) -func (x PatternFlowEthernetPauseTime_Choice_Enum) Enum() *PatternFlowEthernetPauseTime_Choice_Enum { - p := new(PatternFlowEthernetPauseTime_Choice_Enum) +func (x PatternFlowIpv6NextHeader_Choice_Enum) Enum() *PatternFlowIpv6NextHeader_Choice_Enum { + p := new(PatternFlowIpv6NextHeader_Choice_Enum) *p = x return p } -func (x PatternFlowEthernetPauseTime_Choice_Enum) String() string { +func (x PatternFlowIpv6NextHeader_Choice_Enum) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } -func (PatternFlowEthernetPauseTime_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { +func (PatternFlowIpv6NextHeader_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { return file_otg_proto_enumTypes[225].Descriptor() } -func (PatternFlowEthernetPauseTime_Choice_Enum) Type() protoreflect.EnumType { +func (PatternFlowIpv6NextHeader_Choice_Enum) Type() protoreflect.EnumType { return &file_otg_proto_enumTypes[225] } -func (x PatternFlowEthernetPauseTime_Choice_Enum) Number() protoreflect.EnumNumber { +func (x PatternFlowIpv6NextHeader_Choice_Enum) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } -// Deprecated: Use PatternFlowEthernetPauseTime_Choice_Enum.Descriptor instead. -func (PatternFlowEthernetPauseTime_Choice_Enum) EnumDescriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{507, 0, 0} +// Deprecated: Use PatternFlowIpv6NextHeader_Choice_Enum.Descriptor instead. +func (PatternFlowIpv6NextHeader_Choice_Enum) EnumDescriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{494, 0, 0} } -type PatternFlowTcpSrcPort_Choice_Enum int32 +type PatternFlowIpv6HopLimit_Choice_Enum int32 const ( - PatternFlowTcpSrcPort_Choice_unspecified PatternFlowTcpSrcPort_Choice_Enum = 0 - PatternFlowTcpSrcPort_Choice_value PatternFlowTcpSrcPort_Choice_Enum = 2 - PatternFlowTcpSrcPort_Choice_values PatternFlowTcpSrcPort_Choice_Enum = 3 - PatternFlowTcpSrcPort_Choice_increment PatternFlowTcpSrcPort_Choice_Enum = 4 - PatternFlowTcpSrcPort_Choice_decrement PatternFlowTcpSrcPort_Choice_Enum = 5 + PatternFlowIpv6HopLimit_Choice_unspecified PatternFlowIpv6HopLimit_Choice_Enum = 0 + PatternFlowIpv6HopLimit_Choice_value PatternFlowIpv6HopLimit_Choice_Enum = 2 + PatternFlowIpv6HopLimit_Choice_values PatternFlowIpv6HopLimit_Choice_Enum = 3 + PatternFlowIpv6HopLimit_Choice_increment PatternFlowIpv6HopLimit_Choice_Enum = 4 + PatternFlowIpv6HopLimit_Choice_decrement PatternFlowIpv6HopLimit_Choice_Enum = 5 ) -// Enum value maps for PatternFlowTcpSrcPort_Choice_Enum. +// Enum value maps for PatternFlowIpv6HopLimit_Choice_Enum. var ( - PatternFlowTcpSrcPort_Choice_Enum_name = map[int32]string{ + PatternFlowIpv6HopLimit_Choice_Enum_name = map[int32]string{ 0: "unspecified", 2: "value", 3: "values", 4: "increment", 5: "decrement", } - PatternFlowTcpSrcPort_Choice_Enum_value = map[string]int32{ + PatternFlowIpv6HopLimit_Choice_Enum_value = map[string]int32{ "unspecified": 0, "value": 2, "values": 3, @@ -12417,53 +12294,53 @@ var ( } ) -func (x PatternFlowTcpSrcPort_Choice_Enum) Enum() *PatternFlowTcpSrcPort_Choice_Enum { - p := new(PatternFlowTcpSrcPort_Choice_Enum) +func (x PatternFlowIpv6HopLimit_Choice_Enum) Enum() *PatternFlowIpv6HopLimit_Choice_Enum { + p := new(PatternFlowIpv6HopLimit_Choice_Enum) *p = x return p } -func (x PatternFlowTcpSrcPort_Choice_Enum) String() string { +func (x PatternFlowIpv6HopLimit_Choice_Enum) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } -func (PatternFlowTcpSrcPort_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { +func (PatternFlowIpv6HopLimit_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { return file_otg_proto_enumTypes[226].Descriptor() } -func (PatternFlowTcpSrcPort_Choice_Enum) Type() protoreflect.EnumType { +func (PatternFlowIpv6HopLimit_Choice_Enum) Type() protoreflect.EnumType { return &file_otg_proto_enumTypes[226] } -func (x PatternFlowTcpSrcPort_Choice_Enum) Number() protoreflect.EnumNumber { +func (x PatternFlowIpv6HopLimit_Choice_Enum) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } -// Deprecated: Use PatternFlowTcpSrcPort_Choice_Enum.Descriptor instead. -func (PatternFlowTcpSrcPort_Choice_Enum) EnumDescriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{510, 0, 0} +// Deprecated: Use PatternFlowIpv6HopLimit_Choice_Enum.Descriptor instead. +func (PatternFlowIpv6HopLimit_Choice_Enum) EnumDescriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{497, 0, 0} } -type PatternFlowTcpDstPort_Choice_Enum int32 +type PatternFlowIpv6Src_Choice_Enum int32 const ( - PatternFlowTcpDstPort_Choice_unspecified PatternFlowTcpDstPort_Choice_Enum = 0 - PatternFlowTcpDstPort_Choice_value PatternFlowTcpDstPort_Choice_Enum = 2 - PatternFlowTcpDstPort_Choice_values PatternFlowTcpDstPort_Choice_Enum = 3 - PatternFlowTcpDstPort_Choice_increment PatternFlowTcpDstPort_Choice_Enum = 4 - PatternFlowTcpDstPort_Choice_decrement PatternFlowTcpDstPort_Choice_Enum = 5 + PatternFlowIpv6Src_Choice_unspecified PatternFlowIpv6Src_Choice_Enum = 0 + PatternFlowIpv6Src_Choice_value PatternFlowIpv6Src_Choice_Enum = 2 + PatternFlowIpv6Src_Choice_values PatternFlowIpv6Src_Choice_Enum = 3 + PatternFlowIpv6Src_Choice_increment PatternFlowIpv6Src_Choice_Enum = 4 + PatternFlowIpv6Src_Choice_decrement PatternFlowIpv6Src_Choice_Enum = 5 ) -// Enum value maps for PatternFlowTcpDstPort_Choice_Enum. +// Enum value maps for PatternFlowIpv6Src_Choice_Enum. var ( - PatternFlowTcpDstPort_Choice_Enum_name = map[int32]string{ + PatternFlowIpv6Src_Choice_Enum_name = map[int32]string{ 0: "unspecified", 2: "value", 3: "values", 4: "increment", 5: "decrement", } - PatternFlowTcpDstPort_Choice_Enum_value = map[string]int32{ + PatternFlowIpv6Src_Choice_Enum_value = map[string]int32{ "unspecified": 0, "value": 2, "values": 3, @@ -12472,53 +12349,53 @@ var ( } ) -func (x PatternFlowTcpDstPort_Choice_Enum) Enum() *PatternFlowTcpDstPort_Choice_Enum { - p := new(PatternFlowTcpDstPort_Choice_Enum) +func (x PatternFlowIpv6Src_Choice_Enum) Enum() *PatternFlowIpv6Src_Choice_Enum { + p := new(PatternFlowIpv6Src_Choice_Enum) *p = x return p } -func (x PatternFlowTcpDstPort_Choice_Enum) String() string { +func (x PatternFlowIpv6Src_Choice_Enum) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } -func (PatternFlowTcpDstPort_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { +func (PatternFlowIpv6Src_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { return file_otg_proto_enumTypes[227].Descriptor() } -func (PatternFlowTcpDstPort_Choice_Enum) Type() protoreflect.EnumType { +func (PatternFlowIpv6Src_Choice_Enum) Type() protoreflect.EnumType { return &file_otg_proto_enumTypes[227] } -func (x PatternFlowTcpDstPort_Choice_Enum) Number() protoreflect.EnumNumber { +func (x PatternFlowIpv6Src_Choice_Enum) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } -// Deprecated: Use PatternFlowTcpDstPort_Choice_Enum.Descriptor instead. -func (PatternFlowTcpDstPort_Choice_Enum) EnumDescriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{513, 0, 0} +// Deprecated: Use PatternFlowIpv6Src_Choice_Enum.Descriptor instead. +func (PatternFlowIpv6Src_Choice_Enum) EnumDescriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{500, 0, 0} } -type PatternFlowTcpSeqNum_Choice_Enum int32 +type PatternFlowIpv6Dst_Choice_Enum int32 const ( - PatternFlowTcpSeqNum_Choice_unspecified PatternFlowTcpSeqNum_Choice_Enum = 0 - PatternFlowTcpSeqNum_Choice_value PatternFlowTcpSeqNum_Choice_Enum = 2 - PatternFlowTcpSeqNum_Choice_values PatternFlowTcpSeqNum_Choice_Enum = 3 - PatternFlowTcpSeqNum_Choice_increment PatternFlowTcpSeqNum_Choice_Enum = 4 - PatternFlowTcpSeqNum_Choice_decrement PatternFlowTcpSeqNum_Choice_Enum = 5 + PatternFlowIpv6Dst_Choice_unspecified PatternFlowIpv6Dst_Choice_Enum = 0 + PatternFlowIpv6Dst_Choice_value PatternFlowIpv6Dst_Choice_Enum = 2 + PatternFlowIpv6Dst_Choice_values PatternFlowIpv6Dst_Choice_Enum = 3 + PatternFlowIpv6Dst_Choice_increment PatternFlowIpv6Dst_Choice_Enum = 4 + PatternFlowIpv6Dst_Choice_decrement PatternFlowIpv6Dst_Choice_Enum = 5 ) -// Enum value maps for PatternFlowTcpSeqNum_Choice_Enum. +// Enum value maps for PatternFlowIpv6Dst_Choice_Enum. var ( - PatternFlowTcpSeqNum_Choice_Enum_name = map[int32]string{ + PatternFlowIpv6Dst_Choice_Enum_name = map[int32]string{ 0: "unspecified", 2: "value", 3: "values", 4: "increment", 5: "decrement", } - PatternFlowTcpSeqNum_Choice_Enum_value = map[string]int32{ + PatternFlowIpv6Dst_Choice_Enum_value = map[string]int32{ "unspecified": 0, "value": 2, "values": 3, @@ -12527,53 +12404,53 @@ var ( } ) -func (x PatternFlowTcpSeqNum_Choice_Enum) Enum() *PatternFlowTcpSeqNum_Choice_Enum { - p := new(PatternFlowTcpSeqNum_Choice_Enum) +func (x PatternFlowIpv6Dst_Choice_Enum) Enum() *PatternFlowIpv6Dst_Choice_Enum { + p := new(PatternFlowIpv6Dst_Choice_Enum) *p = x return p } -func (x PatternFlowTcpSeqNum_Choice_Enum) String() string { +func (x PatternFlowIpv6Dst_Choice_Enum) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } -func (PatternFlowTcpSeqNum_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { +func (PatternFlowIpv6Dst_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { return file_otg_proto_enumTypes[228].Descriptor() } -func (PatternFlowTcpSeqNum_Choice_Enum) Type() protoreflect.EnumType { +func (PatternFlowIpv6Dst_Choice_Enum) Type() protoreflect.EnumType { return &file_otg_proto_enumTypes[228] } -func (x PatternFlowTcpSeqNum_Choice_Enum) Number() protoreflect.EnumNumber { +func (x PatternFlowIpv6Dst_Choice_Enum) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } -// Deprecated: Use PatternFlowTcpSeqNum_Choice_Enum.Descriptor instead. -func (PatternFlowTcpSeqNum_Choice_Enum) EnumDescriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{516, 0, 0} +// Deprecated: Use PatternFlowIpv6Dst_Choice_Enum.Descriptor instead. +func (PatternFlowIpv6Dst_Choice_Enum) EnumDescriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{503, 0, 0} } -type PatternFlowTcpAckNum_Choice_Enum int32 +type PatternFlowPfcPauseDst_Choice_Enum int32 const ( - PatternFlowTcpAckNum_Choice_unspecified PatternFlowTcpAckNum_Choice_Enum = 0 - PatternFlowTcpAckNum_Choice_value PatternFlowTcpAckNum_Choice_Enum = 2 - PatternFlowTcpAckNum_Choice_values PatternFlowTcpAckNum_Choice_Enum = 3 - PatternFlowTcpAckNum_Choice_increment PatternFlowTcpAckNum_Choice_Enum = 4 - PatternFlowTcpAckNum_Choice_decrement PatternFlowTcpAckNum_Choice_Enum = 5 + PatternFlowPfcPauseDst_Choice_unspecified PatternFlowPfcPauseDst_Choice_Enum = 0 + PatternFlowPfcPauseDst_Choice_value PatternFlowPfcPauseDst_Choice_Enum = 2 + PatternFlowPfcPauseDst_Choice_values PatternFlowPfcPauseDst_Choice_Enum = 3 + PatternFlowPfcPauseDst_Choice_increment PatternFlowPfcPauseDst_Choice_Enum = 4 + PatternFlowPfcPauseDst_Choice_decrement PatternFlowPfcPauseDst_Choice_Enum = 5 ) -// Enum value maps for PatternFlowTcpAckNum_Choice_Enum. +// Enum value maps for PatternFlowPfcPauseDst_Choice_Enum. var ( - PatternFlowTcpAckNum_Choice_Enum_name = map[int32]string{ + PatternFlowPfcPauseDst_Choice_Enum_name = map[int32]string{ 0: "unspecified", 2: "value", 3: "values", 4: "increment", 5: "decrement", } - PatternFlowTcpAckNum_Choice_Enum_value = map[string]int32{ + PatternFlowPfcPauseDst_Choice_Enum_value = map[string]int32{ "unspecified": 0, "value": 2, "values": 3, @@ -12582,53 +12459,53 @@ var ( } ) -func (x PatternFlowTcpAckNum_Choice_Enum) Enum() *PatternFlowTcpAckNum_Choice_Enum { - p := new(PatternFlowTcpAckNum_Choice_Enum) +func (x PatternFlowPfcPauseDst_Choice_Enum) Enum() *PatternFlowPfcPauseDst_Choice_Enum { + p := new(PatternFlowPfcPauseDst_Choice_Enum) *p = x return p } -func (x PatternFlowTcpAckNum_Choice_Enum) String() string { +func (x PatternFlowPfcPauseDst_Choice_Enum) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } -func (PatternFlowTcpAckNum_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { +func (PatternFlowPfcPauseDst_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { return file_otg_proto_enumTypes[229].Descriptor() } -func (PatternFlowTcpAckNum_Choice_Enum) Type() protoreflect.EnumType { +func (PatternFlowPfcPauseDst_Choice_Enum) Type() protoreflect.EnumType { return &file_otg_proto_enumTypes[229] } -func (x PatternFlowTcpAckNum_Choice_Enum) Number() protoreflect.EnumNumber { +func (x PatternFlowPfcPauseDst_Choice_Enum) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } -// Deprecated: Use PatternFlowTcpAckNum_Choice_Enum.Descriptor instead. -func (PatternFlowTcpAckNum_Choice_Enum) EnumDescriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{519, 0, 0} +// Deprecated: Use PatternFlowPfcPauseDst_Choice_Enum.Descriptor instead. +func (PatternFlowPfcPauseDst_Choice_Enum) EnumDescriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{506, 0, 0} } -type PatternFlowTcpDataOffset_Choice_Enum int32 +type PatternFlowPfcPauseSrc_Choice_Enum int32 const ( - PatternFlowTcpDataOffset_Choice_unspecified PatternFlowTcpDataOffset_Choice_Enum = 0 - PatternFlowTcpDataOffset_Choice_value PatternFlowTcpDataOffset_Choice_Enum = 2 - PatternFlowTcpDataOffset_Choice_values PatternFlowTcpDataOffset_Choice_Enum = 3 - PatternFlowTcpDataOffset_Choice_increment PatternFlowTcpDataOffset_Choice_Enum = 4 - PatternFlowTcpDataOffset_Choice_decrement PatternFlowTcpDataOffset_Choice_Enum = 5 + PatternFlowPfcPauseSrc_Choice_unspecified PatternFlowPfcPauseSrc_Choice_Enum = 0 + PatternFlowPfcPauseSrc_Choice_value PatternFlowPfcPauseSrc_Choice_Enum = 2 + PatternFlowPfcPauseSrc_Choice_values PatternFlowPfcPauseSrc_Choice_Enum = 3 + PatternFlowPfcPauseSrc_Choice_increment PatternFlowPfcPauseSrc_Choice_Enum = 4 + PatternFlowPfcPauseSrc_Choice_decrement PatternFlowPfcPauseSrc_Choice_Enum = 5 ) -// Enum value maps for PatternFlowTcpDataOffset_Choice_Enum. +// Enum value maps for PatternFlowPfcPauseSrc_Choice_Enum. var ( - PatternFlowTcpDataOffset_Choice_Enum_name = map[int32]string{ + PatternFlowPfcPauseSrc_Choice_Enum_name = map[int32]string{ 0: "unspecified", 2: "value", 3: "values", 4: "increment", 5: "decrement", } - PatternFlowTcpDataOffset_Choice_Enum_value = map[string]int32{ + PatternFlowPfcPauseSrc_Choice_Enum_value = map[string]int32{ "unspecified": 0, "value": 2, "values": 3, @@ -12637,53 +12514,53 @@ var ( } ) -func (x PatternFlowTcpDataOffset_Choice_Enum) Enum() *PatternFlowTcpDataOffset_Choice_Enum { - p := new(PatternFlowTcpDataOffset_Choice_Enum) +func (x PatternFlowPfcPauseSrc_Choice_Enum) Enum() *PatternFlowPfcPauseSrc_Choice_Enum { + p := new(PatternFlowPfcPauseSrc_Choice_Enum) *p = x return p } -func (x PatternFlowTcpDataOffset_Choice_Enum) String() string { +func (x PatternFlowPfcPauseSrc_Choice_Enum) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } -func (PatternFlowTcpDataOffset_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { +func (PatternFlowPfcPauseSrc_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { return file_otg_proto_enumTypes[230].Descriptor() } -func (PatternFlowTcpDataOffset_Choice_Enum) Type() protoreflect.EnumType { +func (PatternFlowPfcPauseSrc_Choice_Enum) Type() protoreflect.EnumType { return &file_otg_proto_enumTypes[230] } -func (x PatternFlowTcpDataOffset_Choice_Enum) Number() protoreflect.EnumNumber { +func (x PatternFlowPfcPauseSrc_Choice_Enum) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } -// Deprecated: Use PatternFlowTcpDataOffset_Choice_Enum.Descriptor instead. -func (PatternFlowTcpDataOffset_Choice_Enum) EnumDescriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{522, 0, 0} +// Deprecated: Use PatternFlowPfcPauseSrc_Choice_Enum.Descriptor instead. +func (PatternFlowPfcPauseSrc_Choice_Enum) EnumDescriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{509, 0, 0} } -type PatternFlowTcpEcnNs_Choice_Enum int32 +type PatternFlowPfcPauseEtherType_Choice_Enum int32 const ( - PatternFlowTcpEcnNs_Choice_unspecified PatternFlowTcpEcnNs_Choice_Enum = 0 - PatternFlowTcpEcnNs_Choice_value PatternFlowTcpEcnNs_Choice_Enum = 2 - PatternFlowTcpEcnNs_Choice_values PatternFlowTcpEcnNs_Choice_Enum = 3 - PatternFlowTcpEcnNs_Choice_increment PatternFlowTcpEcnNs_Choice_Enum = 4 - PatternFlowTcpEcnNs_Choice_decrement PatternFlowTcpEcnNs_Choice_Enum = 5 + PatternFlowPfcPauseEtherType_Choice_unspecified PatternFlowPfcPauseEtherType_Choice_Enum = 0 + PatternFlowPfcPauseEtherType_Choice_value PatternFlowPfcPauseEtherType_Choice_Enum = 2 + PatternFlowPfcPauseEtherType_Choice_values PatternFlowPfcPauseEtherType_Choice_Enum = 3 + PatternFlowPfcPauseEtherType_Choice_increment PatternFlowPfcPauseEtherType_Choice_Enum = 4 + PatternFlowPfcPauseEtherType_Choice_decrement PatternFlowPfcPauseEtherType_Choice_Enum = 5 ) -// Enum value maps for PatternFlowTcpEcnNs_Choice_Enum. +// Enum value maps for PatternFlowPfcPauseEtherType_Choice_Enum. var ( - PatternFlowTcpEcnNs_Choice_Enum_name = map[int32]string{ + PatternFlowPfcPauseEtherType_Choice_Enum_name = map[int32]string{ 0: "unspecified", 2: "value", 3: "values", 4: "increment", 5: "decrement", } - PatternFlowTcpEcnNs_Choice_Enum_value = map[string]int32{ + PatternFlowPfcPauseEtherType_Choice_Enum_value = map[string]int32{ "unspecified": 0, "value": 2, "values": 3, @@ -12692,53 +12569,53 @@ var ( } ) -func (x PatternFlowTcpEcnNs_Choice_Enum) Enum() *PatternFlowTcpEcnNs_Choice_Enum { - p := new(PatternFlowTcpEcnNs_Choice_Enum) +func (x PatternFlowPfcPauseEtherType_Choice_Enum) Enum() *PatternFlowPfcPauseEtherType_Choice_Enum { + p := new(PatternFlowPfcPauseEtherType_Choice_Enum) *p = x return p } -func (x PatternFlowTcpEcnNs_Choice_Enum) String() string { +func (x PatternFlowPfcPauseEtherType_Choice_Enum) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } -func (PatternFlowTcpEcnNs_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { +func (PatternFlowPfcPauseEtherType_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { return file_otg_proto_enumTypes[231].Descriptor() } -func (PatternFlowTcpEcnNs_Choice_Enum) Type() protoreflect.EnumType { +func (PatternFlowPfcPauseEtherType_Choice_Enum) Type() protoreflect.EnumType { return &file_otg_proto_enumTypes[231] } -func (x PatternFlowTcpEcnNs_Choice_Enum) Number() protoreflect.EnumNumber { +func (x PatternFlowPfcPauseEtherType_Choice_Enum) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } -// Deprecated: Use PatternFlowTcpEcnNs_Choice_Enum.Descriptor instead. -func (PatternFlowTcpEcnNs_Choice_Enum) EnumDescriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{525, 0, 0} +// Deprecated: Use PatternFlowPfcPauseEtherType_Choice_Enum.Descriptor instead. +func (PatternFlowPfcPauseEtherType_Choice_Enum) EnumDescriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{512, 0, 0} } -type PatternFlowTcpEcnCwr_Choice_Enum int32 +type PatternFlowPfcPauseControlOpCode_Choice_Enum int32 const ( - PatternFlowTcpEcnCwr_Choice_unspecified PatternFlowTcpEcnCwr_Choice_Enum = 0 - PatternFlowTcpEcnCwr_Choice_value PatternFlowTcpEcnCwr_Choice_Enum = 2 - PatternFlowTcpEcnCwr_Choice_values PatternFlowTcpEcnCwr_Choice_Enum = 3 - PatternFlowTcpEcnCwr_Choice_increment PatternFlowTcpEcnCwr_Choice_Enum = 4 - PatternFlowTcpEcnCwr_Choice_decrement PatternFlowTcpEcnCwr_Choice_Enum = 5 + PatternFlowPfcPauseControlOpCode_Choice_unspecified PatternFlowPfcPauseControlOpCode_Choice_Enum = 0 + PatternFlowPfcPauseControlOpCode_Choice_value PatternFlowPfcPauseControlOpCode_Choice_Enum = 2 + PatternFlowPfcPauseControlOpCode_Choice_values PatternFlowPfcPauseControlOpCode_Choice_Enum = 3 + PatternFlowPfcPauseControlOpCode_Choice_increment PatternFlowPfcPauseControlOpCode_Choice_Enum = 4 + PatternFlowPfcPauseControlOpCode_Choice_decrement PatternFlowPfcPauseControlOpCode_Choice_Enum = 5 ) -// Enum value maps for PatternFlowTcpEcnCwr_Choice_Enum. +// Enum value maps for PatternFlowPfcPauseControlOpCode_Choice_Enum. var ( - PatternFlowTcpEcnCwr_Choice_Enum_name = map[int32]string{ + PatternFlowPfcPauseControlOpCode_Choice_Enum_name = map[int32]string{ 0: "unspecified", 2: "value", 3: "values", 4: "increment", 5: "decrement", } - PatternFlowTcpEcnCwr_Choice_Enum_value = map[string]int32{ + PatternFlowPfcPauseControlOpCode_Choice_Enum_value = map[string]int32{ "unspecified": 0, "value": 2, "values": 3, @@ -12747,53 +12624,53 @@ var ( } ) -func (x PatternFlowTcpEcnCwr_Choice_Enum) Enum() *PatternFlowTcpEcnCwr_Choice_Enum { - p := new(PatternFlowTcpEcnCwr_Choice_Enum) +func (x PatternFlowPfcPauseControlOpCode_Choice_Enum) Enum() *PatternFlowPfcPauseControlOpCode_Choice_Enum { + p := new(PatternFlowPfcPauseControlOpCode_Choice_Enum) *p = x return p } -func (x PatternFlowTcpEcnCwr_Choice_Enum) String() string { +func (x PatternFlowPfcPauseControlOpCode_Choice_Enum) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } -func (PatternFlowTcpEcnCwr_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { +func (PatternFlowPfcPauseControlOpCode_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { return file_otg_proto_enumTypes[232].Descriptor() } -func (PatternFlowTcpEcnCwr_Choice_Enum) Type() protoreflect.EnumType { +func (PatternFlowPfcPauseControlOpCode_Choice_Enum) Type() protoreflect.EnumType { return &file_otg_proto_enumTypes[232] } -func (x PatternFlowTcpEcnCwr_Choice_Enum) Number() protoreflect.EnumNumber { +func (x PatternFlowPfcPauseControlOpCode_Choice_Enum) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } -// Deprecated: Use PatternFlowTcpEcnCwr_Choice_Enum.Descriptor instead. -func (PatternFlowTcpEcnCwr_Choice_Enum) EnumDescriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{528, 0, 0} +// Deprecated: Use PatternFlowPfcPauseControlOpCode_Choice_Enum.Descriptor instead. +func (PatternFlowPfcPauseControlOpCode_Choice_Enum) EnumDescriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{515, 0, 0} } -type PatternFlowTcpEcnEcho_Choice_Enum int32 +type PatternFlowPfcPauseClassEnableVector_Choice_Enum int32 const ( - PatternFlowTcpEcnEcho_Choice_unspecified PatternFlowTcpEcnEcho_Choice_Enum = 0 - PatternFlowTcpEcnEcho_Choice_value PatternFlowTcpEcnEcho_Choice_Enum = 2 - PatternFlowTcpEcnEcho_Choice_values PatternFlowTcpEcnEcho_Choice_Enum = 3 - PatternFlowTcpEcnEcho_Choice_increment PatternFlowTcpEcnEcho_Choice_Enum = 4 - PatternFlowTcpEcnEcho_Choice_decrement PatternFlowTcpEcnEcho_Choice_Enum = 5 + PatternFlowPfcPauseClassEnableVector_Choice_unspecified PatternFlowPfcPauseClassEnableVector_Choice_Enum = 0 + PatternFlowPfcPauseClassEnableVector_Choice_value PatternFlowPfcPauseClassEnableVector_Choice_Enum = 2 + PatternFlowPfcPauseClassEnableVector_Choice_values PatternFlowPfcPauseClassEnableVector_Choice_Enum = 3 + PatternFlowPfcPauseClassEnableVector_Choice_increment PatternFlowPfcPauseClassEnableVector_Choice_Enum = 4 + PatternFlowPfcPauseClassEnableVector_Choice_decrement PatternFlowPfcPauseClassEnableVector_Choice_Enum = 5 ) -// Enum value maps for PatternFlowTcpEcnEcho_Choice_Enum. +// Enum value maps for PatternFlowPfcPauseClassEnableVector_Choice_Enum. var ( - PatternFlowTcpEcnEcho_Choice_Enum_name = map[int32]string{ + PatternFlowPfcPauseClassEnableVector_Choice_Enum_name = map[int32]string{ 0: "unspecified", 2: "value", 3: "values", 4: "increment", 5: "decrement", } - PatternFlowTcpEcnEcho_Choice_Enum_value = map[string]int32{ + PatternFlowPfcPauseClassEnableVector_Choice_Enum_value = map[string]int32{ "unspecified": 0, "value": 2, "values": 3, @@ -12802,53 +12679,53 @@ var ( } ) -func (x PatternFlowTcpEcnEcho_Choice_Enum) Enum() *PatternFlowTcpEcnEcho_Choice_Enum { - p := new(PatternFlowTcpEcnEcho_Choice_Enum) +func (x PatternFlowPfcPauseClassEnableVector_Choice_Enum) Enum() *PatternFlowPfcPauseClassEnableVector_Choice_Enum { + p := new(PatternFlowPfcPauseClassEnableVector_Choice_Enum) *p = x return p } -func (x PatternFlowTcpEcnEcho_Choice_Enum) String() string { +func (x PatternFlowPfcPauseClassEnableVector_Choice_Enum) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } -func (PatternFlowTcpEcnEcho_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { +func (PatternFlowPfcPauseClassEnableVector_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { return file_otg_proto_enumTypes[233].Descriptor() } -func (PatternFlowTcpEcnEcho_Choice_Enum) Type() protoreflect.EnumType { +func (PatternFlowPfcPauseClassEnableVector_Choice_Enum) Type() protoreflect.EnumType { return &file_otg_proto_enumTypes[233] } -func (x PatternFlowTcpEcnEcho_Choice_Enum) Number() protoreflect.EnumNumber { +func (x PatternFlowPfcPauseClassEnableVector_Choice_Enum) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } -// Deprecated: Use PatternFlowTcpEcnEcho_Choice_Enum.Descriptor instead. -func (PatternFlowTcpEcnEcho_Choice_Enum) EnumDescriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{531, 0, 0} +// Deprecated: Use PatternFlowPfcPauseClassEnableVector_Choice_Enum.Descriptor instead. +func (PatternFlowPfcPauseClassEnableVector_Choice_Enum) EnumDescriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{518, 0, 0} } -type PatternFlowTcpCtlUrg_Choice_Enum int32 +type PatternFlowPfcPausePauseClass0_Choice_Enum int32 const ( - PatternFlowTcpCtlUrg_Choice_unspecified PatternFlowTcpCtlUrg_Choice_Enum = 0 - PatternFlowTcpCtlUrg_Choice_value PatternFlowTcpCtlUrg_Choice_Enum = 2 - PatternFlowTcpCtlUrg_Choice_values PatternFlowTcpCtlUrg_Choice_Enum = 3 - PatternFlowTcpCtlUrg_Choice_increment PatternFlowTcpCtlUrg_Choice_Enum = 4 - PatternFlowTcpCtlUrg_Choice_decrement PatternFlowTcpCtlUrg_Choice_Enum = 5 + PatternFlowPfcPausePauseClass0_Choice_unspecified PatternFlowPfcPausePauseClass0_Choice_Enum = 0 + PatternFlowPfcPausePauseClass0_Choice_value PatternFlowPfcPausePauseClass0_Choice_Enum = 2 + PatternFlowPfcPausePauseClass0_Choice_values PatternFlowPfcPausePauseClass0_Choice_Enum = 3 + PatternFlowPfcPausePauseClass0_Choice_increment PatternFlowPfcPausePauseClass0_Choice_Enum = 4 + PatternFlowPfcPausePauseClass0_Choice_decrement PatternFlowPfcPausePauseClass0_Choice_Enum = 5 ) -// Enum value maps for PatternFlowTcpCtlUrg_Choice_Enum. +// Enum value maps for PatternFlowPfcPausePauseClass0_Choice_Enum. var ( - PatternFlowTcpCtlUrg_Choice_Enum_name = map[int32]string{ + PatternFlowPfcPausePauseClass0_Choice_Enum_name = map[int32]string{ 0: "unspecified", 2: "value", 3: "values", 4: "increment", 5: "decrement", } - PatternFlowTcpCtlUrg_Choice_Enum_value = map[string]int32{ + PatternFlowPfcPausePauseClass0_Choice_Enum_value = map[string]int32{ "unspecified": 0, "value": 2, "values": 3, @@ -12857,53 +12734,53 @@ var ( } ) -func (x PatternFlowTcpCtlUrg_Choice_Enum) Enum() *PatternFlowTcpCtlUrg_Choice_Enum { - p := new(PatternFlowTcpCtlUrg_Choice_Enum) +func (x PatternFlowPfcPausePauseClass0_Choice_Enum) Enum() *PatternFlowPfcPausePauseClass0_Choice_Enum { + p := new(PatternFlowPfcPausePauseClass0_Choice_Enum) *p = x return p } -func (x PatternFlowTcpCtlUrg_Choice_Enum) String() string { +func (x PatternFlowPfcPausePauseClass0_Choice_Enum) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } -func (PatternFlowTcpCtlUrg_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { +func (PatternFlowPfcPausePauseClass0_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { return file_otg_proto_enumTypes[234].Descriptor() } -func (PatternFlowTcpCtlUrg_Choice_Enum) Type() protoreflect.EnumType { +func (PatternFlowPfcPausePauseClass0_Choice_Enum) Type() protoreflect.EnumType { return &file_otg_proto_enumTypes[234] } -func (x PatternFlowTcpCtlUrg_Choice_Enum) Number() protoreflect.EnumNumber { +func (x PatternFlowPfcPausePauseClass0_Choice_Enum) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } -// Deprecated: Use PatternFlowTcpCtlUrg_Choice_Enum.Descriptor instead. -func (PatternFlowTcpCtlUrg_Choice_Enum) EnumDescriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{534, 0, 0} +// Deprecated: Use PatternFlowPfcPausePauseClass0_Choice_Enum.Descriptor instead. +func (PatternFlowPfcPausePauseClass0_Choice_Enum) EnumDescriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{521, 0, 0} } -type PatternFlowTcpCtlAck_Choice_Enum int32 +type PatternFlowPfcPausePauseClass1_Choice_Enum int32 const ( - PatternFlowTcpCtlAck_Choice_unspecified PatternFlowTcpCtlAck_Choice_Enum = 0 - PatternFlowTcpCtlAck_Choice_value PatternFlowTcpCtlAck_Choice_Enum = 2 - PatternFlowTcpCtlAck_Choice_values PatternFlowTcpCtlAck_Choice_Enum = 3 - PatternFlowTcpCtlAck_Choice_increment PatternFlowTcpCtlAck_Choice_Enum = 4 - PatternFlowTcpCtlAck_Choice_decrement PatternFlowTcpCtlAck_Choice_Enum = 5 + PatternFlowPfcPausePauseClass1_Choice_unspecified PatternFlowPfcPausePauseClass1_Choice_Enum = 0 + PatternFlowPfcPausePauseClass1_Choice_value PatternFlowPfcPausePauseClass1_Choice_Enum = 2 + PatternFlowPfcPausePauseClass1_Choice_values PatternFlowPfcPausePauseClass1_Choice_Enum = 3 + PatternFlowPfcPausePauseClass1_Choice_increment PatternFlowPfcPausePauseClass1_Choice_Enum = 4 + PatternFlowPfcPausePauseClass1_Choice_decrement PatternFlowPfcPausePauseClass1_Choice_Enum = 5 ) -// Enum value maps for PatternFlowTcpCtlAck_Choice_Enum. +// Enum value maps for PatternFlowPfcPausePauseClass1_Choice_Enum. var ( - PatternFlowTcpCtlAck_Choice_Enum_name = map[int32]string{ + PatternFlowPfcPausePauseClass1_Choice_Enum_name = map[int32]string{ 0: "unspecified", 2: "value", 3: "values", 4: "increment", 5: "decrement", } - PatternFlowTcpCtlAck_Choice_Enum_value = map[string]int32{ + PatternFlowPfcPausePauseClass1_Choice_Enum_value = map[string]int32{ "unspecified": 0, "value": 2, "values": 3, @@ -12912,53 +12789,53 @@ var ( } ) -func (x PatternFlowTcpCtlAck_Choice_Enum) Enum() *PatternFlowTcpCtlAck_Choice_Enum { - p := new(PatternFlowTcpCtlAck_Choice_Enum) +func (x PatternFlowPfcPausePauseClass1_Choice_Enum) Enum() *PatternFlowPfcPausePauseClass1_Choice_Enum { + p := new(PatternFlowPfcPausePauseClass1_Choice_Enum) *p = x return p } -func (x PatternFlowTcpCtlAck_Choice_Enum) String() string { +func (x PatternFlowPfcPausePauseClass1_Choice_Enum) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } -func (PatternFlowTcpCtlAck_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { +func (PatternFlowPfcPausePauseClass1_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { return file_otg_proto_enumTypes[235].Descriptor() } -func (PatternFlowTcpCtlAck_Choice_Enum) Type() protoreflect.EnumType { +func (PatternFlowPfcPausePauseClass1_Choice_Enum) Type() protoreflect.EnumType { return &file_otg_proto_enumTypes[235] } -func (x PatternFlowTcpCtlAck_Choice_Enum) Number() protoreflect.EnumNumber { +func (x PatternFlowPfcPausePauseClass1_Choice_Enum) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } -// Deprecated: Use PatternFlowTcpCtlAck_Choice_Enum.Descriptor instead. -func (PatternFlowTcpCtlAck_Choice_Enum) EnumDescriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{537, 0, 0} +// Deprecated: Use PatternFlowPfcPausePauseClass1_Choice_Enum.Descriptor instead. +func (PatternFlowPfcPausePauseClass1_Choice_Enum) EnumDescriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{524, 0, 0} } -type PatternFlowTcpCtlPsh_Choice_Enum int32 +type PatternFlowPfcPausePauseClass2_Choice_Enum int32 const ( - PatternFlowTcpCtlPsh_Choice_unspecified PatternFlowTcpCtlPsh_Choice_Enum = 0 - PatternFlowTcpCtlPsh_Choice_value PatternFlowTcpCtlPsh_Choice_Enum = 2 - PatternFlowTcpCtlPsh_Choice_values PatternFlowTcpCtlPsh_Choice_Enum = 3 - PatternFlowTcpCtlPsh_Choice_increment PatternFlowTcpCtlPsh_Choice_Enum = 4 - PatternFlowTcpCtlPsh_Choice_decrement PatternFlowTcpCtlPsh_Choice_Enum = 5 + PatternFlowPfcPausePauseClass2_Choice_unspecified PatternFlowPfcPausePauseClass2_Choice_Enum = 0 + PatternFlowPfcPausePauseClass2_Choice_value PatternFlowPfcPausePauseClass2_Choice_Enum = 2 + PatternFlowPfcPausePauseClass2_Choice_values PatternFlowPfcPausePauseClass2_Choice_Enum = 3 + PatternFlowPfcPausePauseClass2_Choice_increment PatternFlowPfcPausePauseClass2_Choice_Enum = 4 + PatternFlowPfcPausePauseClass2_Choice_decrement PatternFlowPfcPausePauseClass2_Choice_Enum = 5 ) -// Enum value maps for PatternFlowTcpCtlPsh_Choice_Enum. +// Enum value maps for PatternFlowPfcPausePauseClass2_Choice_Enum. var ( - PatternFlowTcpCtlPsh_Choice_Enum_name = map[int32]string{ + PatternFlowPfcPausePauseClass2_Choice_Enum_name = map[int32]string{ 0: "unspecified", 2: "value", 3: "values", 4: "increment", 5: "decrement", } - PatternFlowTcpCtlPsh_Choice_Enum_value = map[string]int32{ + PatternFlowPfcPausePauseClass2_Choice_Enum_value = map[string]int32{ "unspecified": 0, "value": 2, "values": 3, @@ -12967,53 +12844,53 @@ var ( } ) -func (x PatternFlowTcpCtlPsh_Choice_Enum) Enum() *PatternFlowTcpCtlPsh_Choice_Enum { - p := new(PatternFlowTcpCtlPsh_Choice_Enum) +func (x PatternFlowPfcPausePauseClass2_Choice_Enum) Enum() *PatternFlowPfcPausePauseClass2_Choice_Enum { + p := new(PatternFlowPfcPausePauseClass2_Choice_Enum) *p = x return p } -func (x PatternFlowTcpCtlPsh_Choice_Enum) String() string { +func (x PatternFlowPfcPausePauseClass2_Choice_Enum) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } -func (PatternFlowTcpCtlPsh_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { +func (PatternFlowPfcPausePauseClass2_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { return file_otg_proto_enumTypes[236].Descriptor() } -func (PatternFlowTcpCtlPsh_Choice_Enum) Type() protoreflect.EnumType { +func (PatternFlowPfcPausePauseClass2_Choice_Enum) Type() protoreflect.EnumType { return &file_otg_proto_enumTypes[236] } -func (x PatternFlowTcpCtlPsh_Choice_Enum) Number() protoreflect.EnumNumber { +func (x PatternFlowPfcPausePauseClass2_Choice_Enum) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } -// Deprecated: Use PatternFlowTcpCtlPsh_Choice_Enum.Descriptor instead. -func (PatternFlowTcpCtlPsh_Choice_Enum) EnumDescriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{540, 0, 0} +// Deprecated: Use PatternFlowPfcPausePauseClass2_Choice_Enum.Descriptor instead. +func (PatternFlowPfcPausePauseClass2_Choice_Enum) EnumDescriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{527, 0, 0} } -type PatternFlowTcpCtlRst_Choice_Enum int32 +type PatternFlowPfcPausePauseClass3_Choice_Enum int32 const ( - PatternFlowTcpCtlRst_Choice_unspecified PatternFlowTcpCtlRst_Choice_Enum = 0 - PatternFlowTcpCtlRst_Choice_value PatternFlowTcpCtlRst_Choice_Enum = 2 - PatternFlowTcpCtlRst_Choice_values PatternFlowTcpCtlRst_Choice_Enum = 3 - PatternFlowTcpCtlRst_Choice_increment PatternFlowTcpCtlRst_Choice_Enum = 4 - PatternFlowTcpCtlRst_Choice_decrement PatternFlowTcpCtlRst_Choice_Enum = 5 + PatternFlowPfcPausePauseClass3_Choice_unspecified PatternFlowPfcPausePauseClass3_Choice_Enum = 0 + PatternFlowPfcPausePauseClass3_Choice_value PatternFlowPfcPausePauseClass3_Choice_Enum = 2 + PatternFlowPfcPausePauseClass3_Choice_values PatternFlowPfcPausePauseClass3_Choice_Enum = 3 + PatternFlowPfcPausePauseClass3_Choice_increment PatternFlowPfcPausePauseClass3_Choice_Enum = 4 + PatternFlowPfcPausePauseClass3_Choice_decrement PatternFlowPfcPausePauseClass3_Choice_Enum = 5 ) -// Enum value maps for PatternFlowTcpCtlRst_Choice_Enum. +// Enum value maps for PatternFlowPfcPausePauseClass3_Choice_Enum. var ( - PatternFlowTcpCtlRst_Choice_Enum_name = map[int32]string{ + PatternFlowPfcPausePauseClass3_Choice_Enum_name = map[int32]string{ 0: "unspecified", 2: "value", 3: "values", 4: "increment", 5: "decrement", } - PatternFlowTcpCtlRst_Choice_Enum_value = map[string]int32{ + PatternFlowPfcPausePauseClass3_Choice_Enum_value = map[string]int32{ "unspecified": 0, "value": 2, "values": 3, @@ -13022,53 +12899,53 @@ var ( } ) -func (x PatternFlowTcpCtlRst_Choice_Enum) Enum() *PatternFlowTcpCtlRst_Choice_Enum { - p := new(PatternFlowTcpCtlRst_Choice_Enum) +func (x PatternFlowPfcPausePauseClass3_Choice_Enum) Enum() *PatternFlowPfcPausePauseClass3_Choice_Enum { + p := new(PatternFlowPfcPausePauseClass3_Choice_Enum) *p = x return p } -func (x PatternFlowTcpCtlRst_Choice_Enum) String() string { +func (x PatternFlowPfcPausePauseClass3_Choice_Enum) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } -func (PatternFlowTcpCtlRst_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { +func (PatternFlowPfcPausePauseClass3_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { return file_otg_proto_enumTypes[237].Descriptor() } -func (PatternFlowTcpCtlRst_Choice_Enum) Type() protoreflect.EnumType { +func (PatternFlowPfcPausePauseClass3_Choice_Enum) Type() protoreflect.EnumType { return &file_otg_proto_enumTypes[237] } -func (x PatternFlowTcpCtlRst_Choice_Enum) Number() protoreflect.EnumNumber { +func (x PatternFlowPfcPausePauseClass3_Choice_Enum) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } -// Deprecated: Use PatternFlowTcpCtlRst_Choice_Enum.Descriptor instead. -func (PatternFlowTcpCtlRst_Choice_Enum) EnumDescriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{543, 0, 0} +// Deprecated: Use PatternFlowPfcPausePauseClass3_Choice_Enum.Descriptor instead. +func (PatternFlowPfcPausePauseClass3_Choice_Enum) EnumDescriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{530, 0, 0} } -type PatternFlowTcpCtlSyn_Choice_Enum int32 +type PatternFlowPfcPausePauseClass4_Choice_Enum int32 const ( - PatternFlowTcpCtlSyn_Choice_unspecified PatternFlowTcpCtlSyn_Choice_Enum = 0 - PatternFlowTcpCtlSyn_Choice_value PatternFlowTcpCtlSyn_Choice_Enum = 2 - PatternFlowTcpCtlSyn_Choice_values PatternFlowTcpCtlSyn_Choice_Enum = 3 - PatternFlowTcpCtlSyn_Choice_increment PatternFlowTcpCtlSyn_Choice_Enum = 4 - PatternFlowTcpCtlSyn_Choice_decrement PatternFlowTcpCtlSyn_Choice_Enum = 5 + PatternFlowPfcPausePauseClass4_Choice_unspecified PatternFlowPfcPausePauseClass4_Choice_Enum = 0 + PatternFlowPfcPausePauseClass4_Choice_value PatternFlowPfcPausePauseClass4_Choice_Enum = 2 + PatternFlowPfcPausePauseClass4_Choice_values PatternFlowPfcPausePauseClass4_Choice_Enum = 3 + PatternFlowPfcPausePauseClass4_Choice_increment PatternFlowPfcPausePauseClass4_Choice_Enum = 4 + PatternFlowPfcPausePauseClass4_Choice_decrement PatternFlowPfcPausePauseClass4_Choice_Enum = 5 ) -// Enum value maps for PatternFlowTcpCtlSyn_Choice_Enum. +// Enum value maps for PatternFlowPfcPausePauseClass4_Choice_Enum. var ( - PatternFlowTcpCtlSyn_Choice_Enum_name = map[int32]string{ + PatternFlowPfcPausePauseClass4_Choice_Enum_name = map[int32]string{ 0: "unspecified", 2: "value", 3: "values", 4: "increment", 5: "decrement", } - PatternFlowTcpCtlSyn_Choice_Enum_value = map[string]int32{ + PatternFlowPfcPausePauseClass4_Choice_Enum_value = map[string]int32{ "unspecified": 0, "value": 2, "values": 3, @@ -13077,53 +12954,53 @@ var ( } ) -func (x PatternFlowTcpCtlSyn_Choice_Enum) Enum() *PatternFlowTcpCtlSyn_Choice_Enum { - p := new(PatternFlowTcpCtlSyn_Choice_Enum) +func (x PatternFlowPfcPausePauseClass4_Choice_Enum) Enum() *PatternFlowPfcPausePauseClass4_Choice_Enum { + p := new(PatternFlowPfcPausePauseClass4_Choice_Enum) *p = x return p } -func (x PatternFlowTcpCtlSyn_Choice_Enum) String() string { +func (x PatternFlowPfcPausePauseClass4_Choice_Enum) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } -func (PatternFlowTcpCtlSyn_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { +func (PatternFlowPfcPausePauseClass4_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { return file_otg_proto_enumTypes[238].Descriptor() } -func (PatternFlowTcpCtlSyn_Choice_Enum) Type() protoreflect.EnumType { +func (PatternFlowPfcPausePauseClass4_Choice_Enum) Type() protoreflect.EnumType { return &file_otg_proto_enumTypes[238] } -func (x PatternFlowTcpCtlSyn_Choice_Enum) Number() protoreflect.EnumNumber { +func (x PatternFlowPfcPausePauseClass4_Choice_Enum) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } -// Deprecated: Use PatternFlowTcpCtlSyn_Choice_Enum.Descriptor instead. -func (PatternFlowTcpCtlSyn_Choice_Enum) EnumDescriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{546, 0, 0} +// Deprecated: Use PatternFlowPfcPausePauseClass4_Choice_Enum.Descriptor instead. +func (PatternFlowPfcPausePauseClass4_Choice_Enum) EnumDescriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{533, 0, 0} } -type PatternFlowTcpCtlFin_Choice_Enum int32 +type PatternFlowPfcPausePauseClass5_Choice_Enum int32 const ( - PatternFlowTcpCtlFin_Choice_unspecified PatternFlowTcpCtlFin_Choice_Enum = 0 - PatternFlowTcpCtlFin_Choice_value PatternFlowTcpCtlFin_Choice_Enum = 2 - PatternFlowTcpCtlFin_Choice_values PatternFlowTcpCtlFin_Choice_Enum = 3 - PatternFlowTcpCtlFin_Choice_increment PatternFlowTcpCtlFin_Choice_Enum = 4 - PatternFlowTcpCtlFin_Choice_decrement PatternFlowTcpCtlFin_Choice_Enum = 5 + PatternFlowPfcPausePauseClass5_Choice_unspecified PatternFlowPfcPausePauseClass5_Choice_Enum = 0 + PatternFlowPfcPausePauseClass5_Choice_value PatternFlowPfcPausePauseClass5_Choice_Enum = 2 + PatternFlowPfcPausePauseClass5_Choice_values PatternFlowPfcPausePauseClass5_Choice_Enum = 3 + PatternFlowPfcPausePauseClass5_Choice_increment PatternFlowPfcPausePauseClass5_Choice_Enum = 4 + PatternFlowPfcPausePauseClass5_Choice_decrement PatternFlowPfcPausePauseClass5_Choice_Enum = 5 ) -// Enum value maps for PatternFlowTcpCtlFin_Choice_Enum. +// Enum value maps for PatternFlowPfcPausePauseClass5_Choice_Enum. var ( - PatternFlowTcpCtlFin_Choice_Enum_name = map[int32]string{ + PatternFlowPfcPausePauseClass5_Choice_Enum_name = map[int32]string{ 0: "unspecified", 2: "value", 3: "values", 4: "increment", 5: "decrement", } - PatternFlowTcpCtlFin_Choice_Enum_value = map[string]int32{ + PatternFlowPfcPausePauseClass5_Choice_Enum_value = map[string]int32{ "unspecified": 0, "value": 2, "values": 3, @@ -13132,53 +13009,53 @@ var ( } ) -func (x PatternFlowTcpCtlFin_Choice_Enum) Enum() *PatternFlowTcpCtlFin_Choice_Enum { - p := new(PatternFlowTcpCtlFin_Choice_Enum) +func (x PatternFlowPfcPausePauseClass5_Choice_Enum) Enum() *PatternFlowPfcPausePauseClass5_Choice_Enum { + p := new(PatternFlowPfcPausePauseClass5_Choice_Enum) *p = x return p } -func (x PatternFlowTcpCtlFin_Choice_Enum) String() string { +func (x PatternFlowPfcPausePauseClass5_Choice_Enum) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } -func (PatternFlowTcpCtlFin_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { +func (PatternFlowPfcPausePauseClass5_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { return file_otg_proto_enumTypes[239].Descriptor() } -func (PatternFlowTcpCtlFin_Choice_Enum) Type() protoreflect.EnumType { +func (PatternFlowPfcPausePauseClass5_Choice_Enum) Type() protoreflect.EnumType { return &file_otg_proto_enumTypes[239] } -func (x PatternFlowTcpCtlFin_Choice_Enum) Number() protoreflect.EnumNumber { +func (x PatternFlowPfcPausePauseClass5_Choice_Enum) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } -// Deprecated: Use PatternFlowTcpCtlFin_Choice_Enum.Descriptor instead. -func (PatternFlowTcpCtlFin_Choice_Enum) EnumDescriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{549, 0, 0} +// Deprecated: Use PatternFlowPfcPausePauseClass5_Choice_Enum.Descriptor instead. +func (PatternFlowPfcPausePauseClass5_Choice_Enum) EnumDescriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{536, 0, 0} } -type PatternFlowTcpWindow_Choice_Enum int32 +type PatternFlowPfcPausePauseClass6_Choice_Enum int32 const ( - PatternFlowTcpWindow_Choice_unspecified PatternFlowTcpWindow_Choice_Enum = 0 - PatternFlowTcpWindow_Choice_value PatternFlowTcpWindow_Choice_Enum = 2 - PatternFlowTcpWindow_Choice_values PatternFlowTcpWindow_Choice_Enum = 3 - PatternFlowTcpWindow_Choice_increment PatternFlowTcpWindow_Choice_Enum = 4 - PatternFlowTcpWindow_Choice_decrement PatternFlowTcpWindow_Choice_Enum = 5 + PatternFlowPfcPausePauseClass6_Choice_unspecified PatternFlowPfcPausePauseClass6_Choice_Enum = 0 + PatternFlowPfcPausePauseClass6_Choice_value PatternFlowPfcPausePauseClass6_Choice_Enum = 2 + PatternFlowPfcPausePauseClass6_Choice_values PatternFlowPfcPausePauseClass6_Choice_Enum = 3 + PatternFlowPfcPausePauseClass6_Choice_increment PatternFlowPfcPausePauseClass6_Choice_Enum = 4 + PatternFlowPfcPausePauseClass6_Choice_decrement PatternFlowPfcPausePauseClass6_Choice_Enum = 5 ) -// Enum value maps for PatternFlowTcpWindow_Choice_Enum. +// Enum value maps for PatternFlowPfcPausePauseClass6_Choice_Enum. var ( - PatternFlowTcpWindow_Choice_Enum_name = map[int32]string{ + PatternFlowPfcPausePauseClass6_Choice_Enum_name = map[int32]string{ 0: "unspecified", 2: "value", 3: "values", 4: "increment", 5: "decrement", } - PatternFlowTcpWindow_Choice_Enum_value = map[string]int32{ + PatternFlowPfcPausePauseClass6_Choice_Enum_value = map[string]int32{ "unspecified": 0, "value": 2, "values": 3, @@ -13187,53 +13064,53 @@ var ( } ) -func (x PatternFlowTcpWindow_Choice_Enum) Enum() *PatternFlowTcpWindow_Choice_Enum { - p := new(PatternFlowTcpWindow_Choice_Enum) +func (x PatternFlowPfcPausePauseClass6_Choice_Enum) Enum() *PatternFlowPfcPausePauseClass6_Choice_Enum { + p := new(PatternFlowPfcPausePauseClass6_Choice_Enum) *p = x return p } -func (x PatternFlowTcpWindow_Choice_Enum) String() string { +func (x PatternFlowPfcPausePauseClass6_Choice_Enum) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } -func (PatternFlowTcpWindow_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { +func (PatternFlowPfcPausePauseClass6_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { return file_otg_proto_enumTypes[240].Descriptor() } -func (PatternFlowTcpWindow_Choice_Enum) Type() protoreflect.EnumType { +func (PatternFlowPfcPausePauseClass6_Choice_Enum) Type() protoreflect.EnumType { return &file_otg_proto_enumTypes[240] } -func (x PatternFlowTcpWindow_Choice_Enum) Number() protoreflect.EnumNumber { +func (x PatternFlowPfcPausePauseClass6_Choice_Enum) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } -// Deprecated: Use PatternFlowTcpWindow_Choice_Enum.Descriptor instead. -func (PatternFlowTcpWindow_Choice_Enum) EnumDescriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{552, 0, 0} +// Deprecated: Use PatternFlowPfcPausePauseClass6_Choice_Enum.Descriptor instead. +func (PatternFlowPfcPausePauseClass6_Choice_Enum) EnumDescriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{539, 0, 0} } -type PatternFlowUdpSrcPort_Choice_Enum int32 +type PatternFlowPfcPausePauseClass7_Choice_Enum int32 const ( - PatternFlowUdpSrcPort_Choice_unspecified PatternFlowUdpSrcPort_Choice_Enum = 0 - PatternFlowUdpSrcPort_Choice_value PatternFlowUdpSrcPort_Choice_Enum = 2 - PatternFlowUdpSrcPort_Choice_values PatternFlowUdpSrcPort_Choice_Enum = 3 - PatternFlowUdpSrcPort_Choice_increment PatternFlowUdpSrcPort_Choice_Enum = 4 - PatternFlowUdpSrcPort_Choice_decrement PatternFlowUdpSrcPort_Choice_Enum = 5 + PatternFlowPfcPausePauseClass7_Choice_unspecified PatternFlowPfcPausePauseClass7_Choice_Enum = 0 + PatternFlowPfcPausePauseClass7_Choice_value PatternFlowPfcPausePauseClass7_Choice_Enum = 2 + PatternFlowPfcPausePauseClass7_Choice_values PatternFlowPfcPausePauseClass7_Choice_Enum = 3 + PatternFlowPfcPausePauseClass7_Choice_increment PatternFlowPfcPausePauseClass7_Choice_Enum = 4 + PatternFlowPfcPausePauseClass7_Choice_decrement PatternFlowPfcPausePauseClass7_Choice_Enum = 5 ) -// Enum value maps for PatternFlowUdpSrcPort_Choice_Enum. +// Enum value maps for PatternFlowPfcPausePauseClass7_Choice_Enum. var ( - PatternFlowUdpSrcPort_Choice_Enum_name = map[int32]string{ + PatternFlowPfcPausePauseClass7_Choice_Enum_name = map[int32]string{ 0: "unspecified", 2: "value", 3: "values", 4: "increment", 5: "decrement", } - PatternFlowUdpSrcPort_Choice_Enum_value = map[string]int32{ + PatternFlowPfcPausePauseClass7_Choice_Enum_value = map[string]int32{ "unspecified": 0, "value": 2, "values": 3, @@ -13242,53 +13119,53 @@ var ( } ) -func (x PatternFlowUdpSrcPort_Choice_Enum) Enum() *PatternFlowUdpSrcPort_Choice_Enum { - p := new(PatternFlowUdpSrcPort_Choice_Enum) +func (x PatternFlowPfcPausePauseClass7_Choice_Enum) Enum() *PatternFlowPfcPausePauseClass7_Choice_Enum { + p := new(PatternFlowPfcPausePauseClass7_Choice_Enum) *p = x return p } -func (x PatternFlowUdpSrcPort_Choice_Enum) String() string { +func (x PatternFlowPfcPausePauseClass7_Choice_Enum) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } -func (PatternFlowUdpSrcPort_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { +func (PatternFlowPfcPausePauseClass7_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { return file_otg_proto_enumTypes[241].Descriptor() } -func (PatternFlowUdpSrcPort_Choice_Enum) Type() protoreflect.EnumType { +func (PatternFlowPfcPausePauseClass7_Choice_Enum) Type() protoreflect.EnumType { return &file_otg_proto_enumTypes[241] } -func (x PatternFlowUdpSrcPort_Choice_Enum) Number() protoreflect.EnumNumber { +func (x PatternFlowPfcPausePauseClass7_Choice_Enum) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } -// Deprecated: Use PatternFlowUdpSrcPort_Choice_Enum.Descriptor instead. -func (PatternFlowUdpSrcPort_Choice_Enum) EnumDescriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{555, 0, 0} +// Deprecated: Use PatternFlowPfcPausePauseClass7_Choice_Enum.Descriptor instead. +func (PatternFlowPfcPausePauseClass7_Choice_Enum) EnumDescriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{542, 0, 0} } -type PatternFlowUdpDstPort_Choice_Enum int32 +type PatternFlowEthernetPauseDst_Choice_Enum int32 const ( - PatternFlowUdpDstPort_Choice_unspecified PatternFlowUdpDstPort_Choice_Enum = 0 - PatternFlowUdpDstPort_Choice_value PatternFlowUdpDstPort_Choice_Enum = 2 - PatternFlowUdpDstPort_Choice_values PatternFlowUdpDstPort_Choice_Enum = 3 - PatternFlowUdpDstPort_Choice_increment PatternFlowUdpDstPort_Choice_Enum = 4 - PatternFlowUdpDstPort_Choice_decrement PatternFlowUdpDstPort_Choice_Enum = 5 + PatternFlowEthernetPauseDst_Choice_unspecified PatternFlowEthernetPauseDst_Choice_Enum = 0 + PatternFlowEthernetPauseDst_Choice_value PatternFlowEthernetPauseDst_Choice_Enum = 2 + PatternFlowEthernetPauseDst_Choice_values PatternFlowEthernetPauseDst_Choice_Enum = 3 + PatternFlowEthernetPauseDst_Choice_increment PatternFlowEthernetPauseDst_Choice_Enum = 4 + PatternFlowEthernetPauseDst_Choice_decrement PatternFlowEthernetPauseDst_Choice_Enum = 5 ) -// Enum value maps for PatternFlowUdpDstPort_Choice_Enum. +// Enum value maps for PatternFlowEthernetPauseDst_Choice_Enum. var ( - PatternFlowUdpDstPort_Choice_Enum_name = map[int32]string{ + PatternFlowEthernetPauseDst_Choice_Enum_name = map[int32]string{ 0: "unspecified", 2: "value", 3: "values", 4: "increment", 5: "decrement", } - PatternFlowUdpDstPort_Choice_Enum_value = map[string]int32{ + PatternFlowEthernetPauseDst_Choice_Enum_value = map[string]int32{ "unspecified": 0, "value": 2, "values": 3, @@ -13297,53 +13174,53 @@ var ( } ) -func (x PatternFlowUdpDstPort_Choice_Enum) Enum() *PatternFlowUdpDstPort_Choice_Enum { - p := new(PatternFlowUdpDstPort_Choice_Enum) +func (x PatternFlowEthernetPauseDst_Choice_Enum) Enum() *PatternFlowEthernetPauseDst_Choice_Enum { + p := new(PatternFlowEthernetPauseDst_Choice_Enum) *p = x return p } -func (x PatternFlowUdpDstPort_Choice_Enum) String() string { +func (x PatternFlowEthernetPauseDst_Choice_Enum) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } -func (PatternFlowUdpDstPort_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { +func (PatternFlowEthernetPauseDst_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { return file_otg_proto_enumTypes[242].Descriptor() } -func (PatternFlowUdpDstPort_Choice_Enum) Type() protoreflect.EnumType { +func (PatternFlowEthernetPauseDst_Choice_Enum) Type() protoreflect.EnumType { return &file_otg_proto_enumTypes[242] } -func (x PatternFlowUdpDstPort_Choice_Enum) Number() protoreflect.EnumNumber { +func (x PatternFlowEthernetPauseDst_Choice_Enum) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } -// Deprecated: Use PatternFlowUdpDstPort_Choice_Enum.Descriptor instead. -func (PatternFlowUdpDstPort_Choice_Enum) EnumDescriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{558, 0, 0} +// Deprecated: Use PatternFlowEthernetPauseDst_Choice_Enum.Descriptor instead. +func (PatternFlowEthernetPauseDst_Choice_Enum) EnumDescriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{545, 0, 0} } -type PatternFlowUdpLength_Choice_Enum int32 +type PatternFlowEthernetPauseSrc_Choice_Enum int32 const ( - PatternFlowUdpLength_Choice_unspecified PatternFlowUdpLength_Choice_Enum = 0 - PatternFlowUdpLength_Choice_value PatternFlowUdpLength_Choice_Enum = 2 - PatternFlowUdpLength_Choice_values PatternFlowUdpLength_Choice_Enum = 3 - PatternFlowUdpLength_Choice_increment PatternFlowUdpLength_Choice_Enum = 4 - PatternFlowUdpLength_Choice_decrement PatternFlowUdpLength_Choice_Enum = 5 + PatternFlowEthernetPauseSrc_Choice_unspecified PatternFlowEthernetPauseSrc_Choice_Enum = 0 + PatternFlowEthernetPauseSrc_Choice_value PatternFlowEthernetPauseSrc_Choice_Enum = 2 + PatternFlowEthernetPauseSrc_Choice_values PatternFlowEthernetPauseSrc_Choice_Enum = 3 + PatternFlowEthernetPauseSrc_Choice_increment PatternFlowEthernetPauseSrc_Choice_Enum = 4 + PatternFlowEthernetPauseSrc_Choice_decrement PatternFlowEthernetPauseSrc_Choice_Enum = 5 ) -// Enum value maps for PatternFlowUdpLength_Choice_Enum. +// Enum value maps for PatternFlowEthernetPauseSrc_Choice_Enum. var ( - PatternFlowUdpLength_Choice_Enum_name = map[int32]string{ + PatternFlowEthernetPauseSrc_Choice_Enum_name = map[int32]string{ 0: "unspecified", 2: "value", 3: "values", 4: "increment", 5: "decrement", } - PatternFlowUdpLength_Choice_Enum_value = map[string]int32{ + PatternFlowEthernetPauseSrc_Choice_Enum_value = map[string]int32{ "unspecified": 0, "value": 2, "values": 3, @@ -13352,151 +13229,163 @@ var ( } ) -func (x PatternFlowUdpLength_Choice_Enum) Enum() *PatternFlowUdpLength_Choice_Enum { - p := new(PatternFlowUdpLength_Choice_Enum) +func (x PatternFlowEthernetPauseSrc_Choice_Enum) Enum() *PatternFlowEthernetPauseSrc_Choice_Enum { + p := new(PatternFlowEthernetPauseSrc_Choice_Enum) *p = x return p } -func (x PatternFlowUdpLength_Choice_Enum) String() string { +func (x PatternFlowEthernetPauseSrc_Choice_Enum) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } -func (PatternFlowUdpLength_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { +func (PatternFlowEthernetPauseSrc_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { return file_otg_proto_enumTypes[243].Descriptor() } -func (PatternFlowUdpLength_Choice_Enum) Type() protoreflect.EnumType { +func (PatternFlowEthernetPauseSrc_Choice_Enum) Type() protoreflect.EnumType { return &file_otg_proto_enumTypes[243] } -func (x PatternFlowUdpLength_Choice_Enum) Number() protoreflect.EnumNumber { +func (x PatternFlowEthernetPauseSrc_Choice_Enum) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } -// Deprecated: Use PatternFlowUdpLength_Choice_Enum.Descriptor instead. -func (PatternFlowUdpLength_Choice_Enum) EnumDescriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{561, 0, 0} +// Deprecated: Use PatternFlowEthernetPauseSrc_Choice_Enum.Descriptor instead. +func (PatternFlowEthernetPauseSrc_Choice_Enum) EnumDescriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{548, 0, 0} } -type PatternFlowUdpChecksum_Choice_Enum int32 +type PatternFlowEthernetPauseEtherType_Choice_Enum int32 const ( - PatternFlowUdpChecksum_Choice_unspecified PatternFlowUdpChecksum_Choice_Enum = 0 - PatternFlowUdpChecksum_Choice_generated PatternFlowUdpChecksum_Choice_Enum = 1 - PatternFlowUdpChecksum_Choice_custom PatternFlowUdpChecksum_Choice_Enum = 2 + PatternFlowEthernetPauseEtherType_Choice_unspecified PatternFlowEthernetPauseEtherType_Choice_Enum = 0 + PatternFlowEthernetPauseEtherType_Choice_value PatternFlowEthernetPauseEtherType_Choice_Enum = 2 + PatternFlowEthernetPauseEtherType_Choice_values PatternFlowEthernetPauseEtherType_Choice_Enum = 3 + PatternFlowEthernetPauseEtherType_Choice_increment PatternFlowEthernetPauseEtherType_Choice_Enum = 4 + PatternFlowEthernetPauseEtherType_Choice_decrement PatternFlowEthernetPauseEtherType_Choice_Enum = 5 ) -// Enum value maps for PatternFlowUdpChecksum_Choice_Enum. +// Enum value maps for PatternFlowEthernetPauseEtherType_Choice_Enum. var ( - PatternFlowUdpChecksum_Choice_Enum_name = map[int32]string{ + PatternFlowEthernetPauseEtherType_Choice_Enum_name = map[int32]string{ 0: "unspecified", - 1: "generated", - 2: "custom", + 2: "value", + 3: "values", + 4: "increment", + 5: "decrement", } - PatternFlowUdpChecksum_Choice_Enum_value = map[string]int32{ + PatternFlowEthernetPauseEtherType_Choice_Enum_value = map[string]int32{ "unspecified": 0, - "generated": 1, - "custom": 2, + "value": 2, + "values": 3, + "increment": 4, + "decrement": 5, } ) -func (x PatternFlowUdpChecksum_Choice_Enum) Enum() *PatternFlowUdpChecksum_Choice_Enum { - p := new(PatternFlowUdpChecksum_Choice_Enum) +func (x PatternFlowEthernetPauseEtherType_Choice_Enum) Enum() *PatternFlowEthernetPauseEtherType_Choice_Enum { + p := new(PatternFlowEthernetPauseEtherType_Choice_Enum) *p = x return p } -func (x PatternFlowUdpChecksum_Choice_Enum) String() string { +func (x PatternFlowEthernetPauseEtherType_Choice_Enum) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } -func (PatternFlowUdpChecksum_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { +func (PatternFlowEthernetPauseEtherType_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { return file_otg_proto_enumTypes[244].Descriptor() } -func (PatternFlowUdpChecksum_Choice_Enum) Type() protoreflect.EnumType { +func (PatternFlowEthernetPauseEtherType_Choice_Enum) Type() protoreflect.EnumType { return &file_otg_proto_enumTypes[244] } -func (x PatternFlowUdpChecksum_Choice_Enum) Number() protoreflect.EnumNumber { +func (x PatternFlowEthernetPauseEtherType_Choice_Enum) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } -// Deprecated: Use PatternFlowUdpChecksum_Choice_Enum.Descriptor instead. -func (PatternFlowUdpChecksum_Choice_Enum) EnumDescriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{562, 0, 0} +// Deprecated: Use PatternFlowEthernetPauseEtherType_Choice_Enum.Descriptor instead. +func (PatternFlowEthernetPauseEtherType_Choice_Enum) EnumDescriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{551, 0, 0} } -type PatternFlowUdpChecksum_Generated_Enum int32 +type PatternFlowEthernetPauseControlOpCode_Choice_Enum int32 const ( - PatternFlowUdpChecksum_Generated_unspecified PatternFlowUdpChecksum_Generated_Enum = 0 - PatternFlowUdpChecksum_Generated_good PatternFlowUdpChecksum_Generated_Enum = 1 - PatternFlowUdpChecksum_Generated_bad PatternFlowUdpChecksum_Generated_Enum = 2 + PatternFlowEthernetPauseControlOpCode_Choice_unspecified PatternFlowEthernetPauseControlOpCode_Choice_Enum = 0 + PatternFlowEthernetPauseControlOpCode_Choice_value PatternFlowEthernetPauseControlOpCode_Choice_Enum = 2 + PatternFlowEthernetPauseControlOpCode_Choice_values PatternFlowEthernetPauseControlOpCode_Choice_Enum = 3 + PatternFlowEthernetPauseControlOpCode_Choice_increment PatternFlowEthernetPauseControlOpCode_Choice_Enum = 4 + PatternFlowEthernetPauseControlOpCode_Choice_decrement PatternFlowEthernetPauseControlOpCode_Choice_Enum = 5 ) -// Enum value maps for PatternFlowUdpChecksum_Generated_Enum. +// Enum value maps for PatternFlowEthernetPauseControlOpCode_Choice_Enum. var ( - PatternFlowUdpChecksum_Generated_Enum_name = map[int32]string{ + PatternFlowEthernetPauseControlOpCode_Choice_Enum_name = map[int32]string{ 0: "unspecified", - 1: "good", - 2: "bad", + 2: "value", + 3: "values", + 4: "increment", + 5: "decrement", } - PatternFlowUdpChecksum_Generated_Enum_value = map[string]int32{ + PatternFlowEthernetPauseControlOpCode_Choice_Enum_value = map[string]int32{ "unspecified": 0, - "good": 1, - "bad": 2, + "value": 2, + "values": 3, + "increment": 4, + "decrement": 5, } ) -func (x PatternFlowUdpChecksum_Generated_Enum) Enum() *PatternFlowUdpChecksum_Generated_Enum { - p := new(PatternFlowUdpChecksum_Generated_Enum) +func (x PatternFlowEthernetPauseControlOpCode_Choice_Enum) Enum() *PatternFlowEthernetPauseControlOpCode_Choice_Enum { + p := new(PatternFlowEthernetPauseControlOpCode_Choice_Enum) *p = x return p } -func (x PatternFlowUdpChecksum_Generated_Enum) String() string { +func (x PatternFlowEthernetPauseControlOpCode_Choice_Enum) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } -func (PatternFlowUdpChecksum_Generated_Enum) Descriptor() protoreflect.EnumDescriptor { +func (PatternFlowEthernetPauseControlOpCode_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { return file_otg_proto_enumTypes[245].Descriptor() } -func (PatternFlowUdpChecksum_Generated_Enum) Type() protoreflect.EnumType { +func (PatternFlowEthernetPauseControlOpCode_Choice_Enum) Type() protoreflect.EnumType { return &file_otg_proto_enumTypes[245] } -func (x PatternFlowUdpChecksum_Generated_Enum) Number() protoreflect.EnumNumber { +func (x PatternFlowEthernetPauseControlOpCode_Choice_Enum) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } -// Deprecated: Use PatternFlowUdpChecksum_Generated_Enum.Descriptor instead. -func (PatternFlowUdpChecksum_Generated_Enum) EnumDescriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{562, 1, 0} +// Deprecated: Use PatternFlowEthernetPauseControlOpCode_Choice_Enum.Descriptor instead. +func (PatternFlowEthernetPauseControlOpCode_Choice_Enum) EnumDescriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{554, 0, 0} } -type PatternFlowGreChecksumPresent_Choice_Enum int32 +type PatternFlowEthernetPauseTime_Choice_Enum int32 const ( - PatternFlowGreChecksumPresent_Choice_unspecified PatternFlowGreChecksumPresent_Choice_Enum = 0 - PatternFlowGreChecksumPresent_Choice_value PatternFlowGreChecksumPresent_Choice_Enum = 2 - PatternFlowGreChecksumPresent_Choice_values PatternFlowGreChecksumPresent_Choice_Enum = 3 - PatternFlowGreChecksumPresent_Choice_increment PatternFlowGreChecksumPresent_Choice_Enum = 4 - PatternFlowGreChecksumPresent_Choice_decrement PatternFlowGreChecksumPresent_Choice_Enum = 5 + PatternFlowEthernetPauseTime_Choice_unspecified PatternFlowEthernetPauseTime_Choice_Enum = 0 + PatternFlowEthernetPauseTime_Choice_value PatternFlowEthernetPauseTime_Choice_Enum = 2 + PatternFlowEthernetPauseTime_Choice_values PatternFlowEthernetPauseTime_Choice_Enum = 3 + PatternFlowEthernetPauseTime_Choice_increment PatternFlowEthernetPauseTime_Choice_Enum = 4 + PatternFlowEthernetPauseTime_Choice_decrement PatternFlowEthernetPauseTime_Choice_Enum = 5 ) -// Enum value maps for PatternFlowGreChecksumPresent_Choice_Enum. +// Enum value maps for PatternFlowEthernetPauseTime_Choice_Enum. var ( - PatternFlowGreChecksumPresent_Choice_Enum_name = map[int32]string{ + PatternFlowEthernetPauseTime_Choice_Enum_name = map[int32]string{ 0: "unspecified", 2: "value", 3: "values", 4: "increment", 5: "decrement", } - PatternFlowGreChecksumPresent_Choice_Enum_value = map[string]int32{ + PatternFlowEthernetPauseTime_Choice_Enum_value = map[string]int32{ "unspecified": 0, "value": 2, "values": 3, @@ -13505,53 +13394,53 @@ var ( } ) -func (x PatternFlowGreChecksumPresent_Choice_Enum) Enum() *PatternFlowGreChecksumPresent_Choice_Enum { - p := new(PatternFlowGreChecksumPresent_Choice_Enum) +func (x PatternFlowEthernetPauseTime_Choice_Enum) Enum() *PatternFlowEthernetPauseTime_Choice_Enum { + p := new(PatternFlowEthernetPauseTime_Choice_Enum) *p = x return p } -func (x PatternFlowGreChecksumPresent_Choice_Enum) String() string { +func (x PatternFlowEthernetPauseTime_Choice_Enum) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } -func (PatternFlowGreChecksumPresent_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { +func (PatternFlowEthernetPauseTime_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { return file_otg_proto_enumTypes[246].Descriptor() } -func (PatternFlowGreChecksumPresent_Choice_Enum) Type() protoreflect.EnumType { +func (PatternFlowEthernetPauseTime_Choice_Enum) Type() protoreflect.EnumType { return &file_otg_proto_enumTypes[246] } -func (x PatternFlowGreChecksumPresent_Choice_Enum) Number() protoreflect.EnumNumber { +func (x PatternFlowEthernetPauseTime_Choice_Enum) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } -// Deprecated: Use PatternFlowGreChecksumPresent_Choice_Enum.Descriptor instead. -func (PatternFlowGreChecksumPresent_Choice_Enum) EnumDescriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{565, 0, 0} +// Deprecated: Use PatternFlowEthernetPauseTime_Choice_Enum.Descriptor instead. +func (PatternFlowEthernetPauseTime_Choice_Enum) EnumDescriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{557, 0, 0} } -type PatternFlowGreReserved0_Choice_Enum int32 +type PatternFlowTcpSrcPort_Choice_Enum int32 const ( - PatternFlowGreReserved0_Choice_unspecified PatternFlowGreReserved0_Choice_Enum = 0 - PatternFlowGreReserved0_Choice_value PatternFlowGreReserved0_Choice_Enum = 2 - PatternFlowGreReserved0_Choice_values PatternFlowGreReserved0_Choice_Enum = 3 - PatternFlowGreReserved0_Choice_increment PatternFlowGreReserved0_Choice_Enum = 4 - PatternFlowGreReserved0_Choice_decrement PatternFlowGreReserved0_Choice_Enum = 5 + PatternFlowTcpSrcPort_Choice_unspecified PatternFlowTcpSrcPort_Choice_Enum = 0 + PatternFlowTcpSrcPort_Choice_value PatternFlowTcpSrcPort_Choice_Enum = 2 + PatternFlowTcpSrcPort_Choice_values PatternFlowTcpSrcPort_Choice_Enum = 3 + PatternFlowTcpSrcPort_Choice_increment PatternFlowTcpSrcPort_Choice_Enum = 4 + PatternFlowTcpSrcPort_Choice_decrement PatternFlowTcpSrcPort_Choice_Enum = 5 ) -// Enum value maps for PatternFlowGreReserved0_Choice_Enum. +// Enum value maps for PatternFlowTcpSrcPort_Choice_Enum. var ( - PatternFlowGreReserved0_Choice_Enum_name = map[int32]string{ + PatternFlowTcpSrcPort_Choice_Enum_name = map[int32]string{ 0: "unspecified", 2: "value", 3: "values", 4: "increment", 5: "decrement", } - PatternFlowGreReserved0_Choice_Enum_value = map[string]int32{ + PatternFlowTcpSrcPort_Choice_Enum_value = map[string]int32{ "unspecified": 0, "value": 2, "values": 3, @@ -13560,53 +13449,53 @@ var ( } ) -func (x PatternFlowGreReserved0_Choice_Enum) Enum() *PatternFlowGreReserved0_Choice_Enum { - p := new(PatternFlowGreReserved0_Choice_Enum) +func (x PatternFlowTcpSrcPort_Choice_Enum) Enum() *PatternFlowTcpSrcPort_Choice_Enum { + p := new(PatternFlowTcpSrcPort_Choice_Enum) *p = x return p } -func (x PatternFlowGreReserved0_Choice_Enum) String() string { +func (x PatternFlowTcpSrcPort_Choice_Enum) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } -func (PatternFlowGreReserved0_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { +func (PatternFlowTcpSrcPort_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { return file_otg_proto_enumTypes[247].Descriptor() } -func (PatternFlowGreReserved0_Choice_Enum) Type() protoreflect.EnumType { +func (PatternFlowTcpSrcPort_Choice_Enum) Type() protoreflect.EnumType { return &file_otg_proto_enumTypes[247] } -func (x PatternFlowGreReserved0_Choice_Enum) Number() protoreflect.EnumNumber { +func (x PatternFlowTcpSrcPort_Choice_Enum) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } -// Deprecated: Use PatternFlowGreReserved0_Choice_Enum.Descriptor instead. -func (PatternFlowGreReserved0_Choice_Enum) EnumDescriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{568, 0, 0} +// Deprecated: Use PatternFlowTcpSrcPort_Choice_Enum.Descriptor instead. +func (PatternFlowTcpSrcPort_Choice_Enum) EnumDescriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{560, 0, 0} } -type PatternFlowGreVersion_Choice_Enum int32 +type PatternFlowTcpDstPort_Choice_Enum int32 const ( - PatternFlowGreVersion_Choice_unspecified PatternFlowGreVersion_Choice_Enum = 0 - PatternFlowGreVersion_Choice_value PatternFlowGreVersion_Choice_Enum = 2 - PatternFlowGreVersion_Choice_values PatternFlowGreVersion_Choice_Enum = 3 - PatternFlowGreVersion_Choice_increment PatternFlowGreVersion_Choice_Enum = 4 - PatternFlowGreVersion_Choice_decrement PatternFlowGreVersion_Choice_Enum = 5 + PatternFlowTcpDstPort_Choice_unspecified PatternFlowTcpDstPort_Choice_Enum = 0 + PatternFlowTcpDstPort_Choice_value PatternFlowTcpDstPort_Choice_Enum = 2 + PatternFlowTcpDstPort_Choice_values PatternFlowTcpDstPort_Choice_Enum = 3 + PatternFlowTcpDstPort_Choice_increment PatternFlowTcpDstPort_Choice_Enum = 4 + PatternFlowTcpDstPort_Choice_decrement PatternFlowTcpDstPort_Choice_Enum = 5 ) -// Enum value maps for PatternFlowGreVersion_Choice_Enum. +// Enum value maps for PatternFlowTcpDstPort_Choice_Enum. var ( - PatternFlowGreVersion_Choice_Enum_name = map[int32]string{ + PatternFlowTcpDstPort_Choice_Enum_name = map[int32]string{ 0: "unspecified", 2: "value", 3: "values", 4: "increment", 5: "decrement", } - PatternFlowGreVersion_Choice_Enum_value = map[string]int32{ + PatternFlowTcpDstPort_Choice_Enum_value = map[string]int32{ "unspecified": 0, "value": 2, "values": 3, @@ -13615,53 +13504,53 @@ var ( } ) -func (x PatternFlowGreVersion_Choice_Enum) Enum() *PatternFlowGreVersion_Choice_Enum { - p := new(PatternFlowGreVersion_Choice_Enum) +func (x PatternFlowTcpDstPort_Choice_Enum) Enum() *PatternFlowTcpDstPort_Choice_Enum { + p := new(PatternFlowTcpDstPort_Choice_Enum) *p = x return p } -func (x PatternFlowGreVersion_Choice_Enum) String() string { +func (x PatternFlowTcpDstPort_Choice_Enum) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } -func (PatternFlowGreVersion_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { +func (PatternFlowTcpDstPort_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { return file_otg_proto_enumTypes[248].Descriptor() } -func (PatternFlowGreVersion_Choice_Enum) Type() protoreflect.EnumType { +func (PatternFlowTcpDstPort_Choice_Enum) Type() protoreflect.EnumType { return &file_otg_proto_enumTypes[248] } -func (x PatternFlowGreVersion_Choice_Enum) Number() protoreflect.EnumNumber { +func (x PatternFlowTcpDstPort_Choice_Enum) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } -// Deprecated: Use PatternFlowGreVersion_Choice_Enum.Descriptor instead. -func (PatternFlowGreVersion_Choice_Enum) EnumDescriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{571, 0, 0} +// Deprecated: Use PatternFlowTcpDstPort_Choice_Enum.Descriptor instead. +func (PatternFlowTcpDstPort_Choice_Enum) EnumDescriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{563, 0, 0} } -type PatternFlowGreProtocol_Choice_Enum int32 +type PatternFlowTcpSeqNum_Choice_Enum int32 const ( - PatternFlowGreProtocol_Choice_unspecified PatternFlowGreProtocol_Choice_Enum = 0 - PatternFlowGreProtocol_Choice_value PatternFlowGreProtocol_Choice_Enum = 2 - PatternFlowGreProtocol_Choice_values PatternFlowGreProtocol_Choice_Enum = 3 - PatternFlowGreProtocol_Choice_increment PatternFlowGreProtocol_Choice_Enum = 4 - PatternFlowGreProtocol_Choice_decrement PatternFlowGreProtocol_Choice_Enum = 5 + PatternFlowTcpSeqNum_Choice_unspecified PatternFlowTcpSeqNum_Choice_Enum = 0 + PatternFlowTcpSeqNum_Choice_value PatternFlowTcpSeqNum_Choice_Enum = 2 + PatternFlowTcpSeqNum_Choice_values PatternFlowTcpSeqNum_Choice_Enum = 3 + PatternFlowTcpSeqNum_Choice_increment PatternFlowTcpSeqNum_Choice_Enum = 4 + PatternFlowTcpSeqNum_Choice_decrement PatternFlowTcpSeqNum_Choice_Enum = 5 ) -// Enum value maps for PatternFlowGreProtocol_Choice_Enum. +// Enum value maps for PatternFlowTcpSeqNum_Choice_Enum. var ( - PatternFlowGreProtocol_Choice_Enum_name = map[int32]string{ + PatternFlowTcpSeqNum_Choice_Enum_name = map[int32]string{ 0: "unspecified", 2: "value", 3: "values", 4: "increment", 5: "decrement", } - PatternFlowGreProtocol_Choice_Enum_value = map[string]int32{ + PatternFlowTcpSeqNum_Choice_Enum_value = map[string]int32{ "unspecified": 0, "value": 2, "values": 3, @@ -13670,151 +13559,163 @@ var ( } ) -func (x PatternFlowGreProtocol_Choice_Enum) Enum() *PatternFlowGreProtocol_Choice_Enum { - p := new(PatternFlowGreProtocol_Choice_Enum) +func (x PatternFlowTcpSeqNum_Choice_Enum) Enum() *PatternFlowTcpSeqNum_Choice_Enum { + p := new(PatternFlowTcpSeqNum_Choice_Enum) *p = x return p } -func (x PatternFlowGreProtocol_Choice_Enum) String() string { +func (x PatternFlowTcpSeqNum_Choice_Enum) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } -func (PatternFlowGreProtocol_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { +func (PatternFlowTcpSeqNum_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { return file_otg_proto_enumTypes[249].Descriptor() } -func (PatternFlowGreProtocol_Choice_Enum) Type() protoreflect.EnumType { +func (PatternFlowTcpSeqNum_Choice_Enum) Type() protoreflect.EnumType { return &file_otg_proto_enumTypes[249] } -func (x PatternFlowGreProtocol_Choice_Enum) Number() protoreflect.EnumNumber { +func (x PatternFlowTcpSeqNum_Choice_Enum) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } -// Deprecated: Use PatternFlowGreProtocol_Choice_Enum.Descriptor instead. -func (PatternFlowGreProtocol_Choice_Enum) EnumDescriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{574, 0, 0} +// Deprecated: Use PatternFlowTcpSeqNum_Choice_Enum.Descriptor instead. +func (PatternFlowTcpSeqNum_Choice_Enum) EnumDescriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{566, 0, 0} } -type PatternFlowGreChecksum_Choice_Enum int32 +type PatternFlowTcpAckNum_Choice_Enum int32 const ( - PatternFlowGreChecksum_Choice_unspecified PatternFlowGreChecksum_Choice_Enum = 0 - PatternFlowGreChecksum_Choice_generated PatternFlowGreChecksum_Choice_Enum = 1 - PatternFlowGreChecksum_Choice_custom PatternFlowGreChecksum_Choice_Enum = 2 + PatternFlowTcpAckNum_Choice_unspecified PatternFlowTcpAckNum_Choice_Enum = 0 + PatternFlowTcpAckNum_Choice_value PatternFlowTcpAckNum_Choice_Enum = 2 + PatternFlowTcpAckNum_Choice_values PatternFlowTcpAckNum_Choice_Enum = 3 + PatternFlowTcpAckNum_Choice_increment PatternFlowTcpAckNum_Choice_Enum = 4 + PatternFlowTcpAckNum_Choice_decrement PatternFlowTcpAckNum_Choice_Enum = 5 ) -// Enum value maps for PatternFlowGreChecksum_Choice_Enum. +// Enum value maps for PatternFlowTcpAckNum_Choice_Enum. var ( - PatternFlowGreChecksum_Choice_Enum_name = map[int32]string{ + PatternFlowTcpAckNum_Choice_Enum_name = map[int32]string{ 0: "unspecified", - 1: "generated", - 2: "custom", + 2: "value", + 3: "values", + 4: "increment", + 5: "decrement", } - PatternFlowGreChecksum_Choice_Enum_value = map[string]int32{ + PatternFlowTcpAckNum_Choice_Enum_value = map[string]int32{ "unspecified": 0, - "generated": 1, - "custom": 2, + "value": 2, + "values": 3, + "increment": 4, + "decrement": 5, } ) -func (x PatternFlowGreChecksum_Choice_Enum) Enum() *PatternFlowGreChecksum_Choice_Enum { - p := new(PatternFlowGreChecksum_Choice_Enum) +func (x PatternFlowTcpAckNum_Choice_Enum) Enum() *PatternFlowTcpAckNum_Choice_Enum { + p := new(PatternFlowTcpAckNum_Choice_Enum) *p = x return p } -func (x PatternFlowGreChecksum_Choice_Enum) String() string { +func (x PatternFlowTcpAckNum_Choice_Enum) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } -func (PatternFlowGreChecksum_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { +func (PatternFlowTcpAckNum_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { return file_otg_proto_enumTypes[250].Descriptor() } -func (PatternFlowGreChecksum_Choice_Enum) Type() protoreflect.EnumType { +func (PatternFlowTcpAckNum_Choice_Enum) Type() protoreflect.EnumType { return &file_otg_proto_enumTypes[250] } -func (x PatternFlowGreChecksum_Choice_Enum) Number() protoreflect.EnumNumber { +func (x PatternFlowTcpAckNum_Choice_Enum) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } -// Deprecated: Use PatternFlowGreChecksum_Choice_Enum.Descriptor instead. -func (PatternFlowGreChecksum_Choice_Enum) EnumDescriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{575, 0, 0} +// Deprecated: Use PatternFlowTcpAckNum_Choice_Enum.Descriptor instead. +func (PatternFlowTcpAckNum_Choice_Enum) EnumDescriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{569, 0, 0} } -type PatternFlowGreChecksum_Generated_Enum int32 +type PatternFlowTcpDataOffset_Choice_Enum int32 const ( - PatternFlowGreChecksum_Generated_unspecified PatternFlowGreChecksum_Generated_Enum = 0 - PatternFlowGreChecksum_Generated_good PatternFlowGreChecksum_Generated_Enum = 1 - PatternFlowGreChecksum_Generated_bad PatternFlowGreChecksum_Generated_Enum = 2 + PatternFlowTcpDataOffset_Choice_unspecified PatternFlowTcpDataOffset_Choice_Enum = 0 + PatternFlowTcpDataOffset_Choice_value PatternFlowTcpDataOffset_Choice_Enum = 2 + PatternFlowTcpDataOffset_Choice_values PatternFlowTcpDataOffset_Choice_Enum = 3 + PatternFlowTcpDataOffset_Choice_increment PatternFlowTcpDataOffset_Choice_Enum = 4 + PatternFlowTcpDataOffset_Choice_decrement PatternFlowTcpDataOffset_Choice_Enum = 5 ) -// Enum value maps for PatternFlowGreChecksum_Generated_Enum. +// Enum value maps for PatternFlowTcpDataOffset_Choice_Enum. var ( - PatternFlowGreChecksum_Generated_Enum_name = map[int32]string{ + PatternFlowTcpDataOffset_Choice_Enum_name = map[int32]string{ 0: "unspecified", - 1: "good", - 2: "bad", + 2: "value", + 3: "values", + 4: "increment", + 5: "decrement", } - PatternFlowGreChecksum_Generated_Enum_value = map[string]int32{ + PatternFlowTcpDataOffset_Choice_Enum_value = map[string]int32{ "unspecified": 0, - "good": 1, - "bad": 2, + "value": 2, + "values": 3, + "increment": 4, + "decrement": 5, } ) -func (x PatternFlowGreChecksum_Generated_Enum) Enum() *PatternFlowGreChecksum_Generated_Enum { - p := new(PatternFlowGreChecksum_Generated_Enum) +func (x PatternFlowTcpDataOffset_Choice_Enum) Enum() *PatternFlowTcpDataOffset_Choice_Enum { + p := new(PatternFlowTcpDataOffset_Choice_Enum) *p = x return p } -func (x PatternFlowGreChecksum_Generated_Enum) String() string { +func (x PatternFlowTcpDataOffset_Choice_Enum) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } -func (PatternFlowGreChecksum_Generated_Enum) Descriptor() protoreflect.EnumDescriptor { +func (PatternFlowTcpDataOffset_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { return file_otg_proto_enumTypes[251].Descriptor() } -func (PatternFlowGreChecksum_Generated_Enum) Type() protoreflect.EnumType { +func (PatternFlowTcpDataOffset_Choice_Enum) Type() protoreflect.EnumType { return &file_otg_proto_enumTypes[251] } -func (x PatternFlowGreChecksum_Generated_Enum) Number() protoreflect.EnumNumber { +func (x PatternFlowTcpDataOffset_Choice_Enum) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } -// Deprecated: Use PatternFlowGreChecksum_Generated_Enum.Descriptor instead. -func (PatternFlowGreChecksum_Generated_Enum) EnumDescriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{575, 1, 0} +// Deprecated: Use PatternFlowTcpDataOffset_Choice_Enum.Descriptor instead. +func (PatternFlowTcpDataOffset_Choice_Enum) EnumDescriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{572, 0, 0} } -type PatternFlowGreReserved1_Choice_Enum int32 +type PatternFlowTcpEcnNs_Choice_Enum int32 const ( - PatternFlowGreReserved1_Choice_unspecified PatternFlowGreReserved1_Choice_Enum = 0 - PatternFlowGreReserved1_Choice_value PatternFlowGreReserved1_Choice_Enum = 2 - PatternFlowGreReserved1_Choice_values PatternFlowGreReserved1_Choice_Enum = 3 - PatternFlowGreReserved1_Choice_increment PatternFlowGreReserved1_Choice_Enum = 4 - PatternFlowGreReserved1_Choice_decrement PatternFlowGreReserved1_Choice_Enum = 5 + PatternFlowTcpEcnNs_Choice_unspecified PatternFlowTcpEcnNs_Choice_Enum = 0 + PatternFlowTcpEcnNs_Choice_value PatternFlowTcpEcnNs_Choice_Enum = 2 + PatternFlowTcpEcnNs_Choice_values PatternFlowTcpEcnNs_Choice_Enum = 3 + PatternFlowTcpEcnNs_Choice_increment PatternFlowTcpEcnNs_Choice_Enum = 4 + PatternFlowTcpEcnNs_Choice_decrement PatternFlowTcpEcnNs_Choice_Enum = 5 ) -// Enum value maps for PatternFlowGreReserved1_Choice_Enum. +// Enum value maps for PatternFlowTcpEcnNs_Choice_Enum. var ( - PatternFlowGreReserved1_Choice_Enum_name = map[int32]string{ + PatternFlowTcpEcnNs_Choice_Enum_name = map[int32]string{ 0: "unspecified", 2: "value", 3: "values", 4: "increment", 5: "decrement", } - PatternFlowGreReserved1_Choice_Enum_value = map[string]int32{ + PatternFlowTcpEcnNs_Choice_Enum_value = map[string]int32{ "unspecified": 0, "value": 2, "values": 3, @@ -13823,53 +13724,53 @@ var ( } ) -func (x PatternFlowGreReserved1_Choice_Enum) Enum() *PatternFlowGreReserved1_Choice_Enum { - p := new(PatternFlowGreReserved1_Choice_Enum) +func (x PatternFlowTcpEcnNs_Choice_Enum) Enum() *PatternFlowTcpEcnNs_Choice_Enum { + p := new(PatternFlowTcpEcnNs_Choice_Enum) *p = x return p } -func (x PatternFlowGreReserved1_Choice_Enum) String() string { +func (x PatternFlowTcpEcnNs_Choice_Enum) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } -func (PatternFlowGreReserved1_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { +func (PatternFlowTcpEcnNs_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { return file_otg_proto_enumTypes[252].Descriptor() } -func (PatternFlowGreReserved1_Choice_Enum) Type() protoreflect.EnumType { +func (PatternFlowTcpEcnNs_Choice_Enum) Type() protoreflect.EnumType { return &file_otg_proto_enumTypes[252] } -func (x PatternFlowGreReserved1_Choice_Enum) Number() protoreflect.EnumNumber { +func (x PatternFlowTcpEcnNs_Choice_Enum) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } -// Deprecated: Use PatternFlowGreReserved1_Choice_Enum.Descriptor instead. -func (PatternFlowGreReserved1_Choice_Enum) EnumDescriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{578, 0, 0} +// Deprecated: Use PatternFlowTcpEcnNs_Choice_Enum.Descriptor instead. +func (PatternFlowTcpEcnNs_Choice_Enum) EnumDescriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{575, 0, 0} } -type PatternFlowGtpv1Version_Choice_Enum int32 +type PatternFlowTcpEcnCwr_Choice_Enum int32 const ( - PatternFlowGtpv1Version_Choice_unspecified PatternFlowGtpv1Version_Choice_Enum = 0 - PatternFlowGtpv1Version_Choice_value PatternFlowGtpv1Version_Choice_Enum = 2 - PatternFlowGtpv1Version_Choice_values PatternFlowGtpv1Version_Choice_Enum = 3 - PatternFlowGtpv1Version_Choice_increment PatternFlowGtpv1Version_Choice_Enum = 4 - PatternFlowGtpv1Version_Choice_decrement PatternFlowGtpv1Version_Choice_Enum = 5 + PatternFlowTcpEcnCwr_Choice_unspecified PatternFlowTcpEcnCwr_Choice_Enum = 0 + PatternFlowTcpEcnCwr_Choice_value PatternFlowTcpEcnCwr_Choice_Enum = 2 + PatternFlowTcpEcnCwr_Choice_values PatternFlowTcpEcnCwr_Choice_Enum = 3 + PatternFlowTcpEcnCwr_Choice_increment PatternFlowTcpEcnCwr_Choice_Enum = 4 + PatternFlowTcpEcnCwr_Choice_decrement PatternFlowTcpEcnCwr_Choice_Enum = 5 ) -// Enum value maps for PatternFlowGtpv1Version_Choice_Enum. +// Enum value maps for PatternFlowTcpEcnCwr_Choice_Enum. var ( - PatternFlowGtpv1Version_Choice_Enum_name = map[int32]string{ + PatternFlowTcpEcnCwr_Choice_Enum_name = map[int32]string{ 0: "unspecified", 2: "value", 3: "values", 4: "increment", 5: "decrement", } - PatternFlowGtpv1Version_Choice_Enum_value = map[string]int32{ + PatternFlowTcpEcnCwr_Choice_Enum_value = map[string]int32{ "unspecified": 0, "value": 2, "values": 3, @@ -13878,53 +13779,53 @@ var ( } ) -func (x PatternFlowGtpv1Version_Choice_Enum) Enum() *PatternFlowGtpv1Version_Choice_Enum { - p := new(PatternFlowGtpv1Version_Choice_Enum) +func (x PatternFlowTcpEcnCwr_Choice_Enum) Enum() *PatternFlowTcpEcnCwr_Choice_Enum { + p := new(PatternFlowTcpEcnCwr_Choice_Enum) *p = x return p } -func (x PatternFlowGtpv1Version_Choice_Enum) String() string { +func (x PatternFlowTcpEcnCwr_Choice_Enum) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } -func (PatternFlowGtpv1Version_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { +func (PatternFlowTcpEcnCwr_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { return file_otg_proto_enumTypes[253].Descriptor() } -func (PatternFlowGtpv1Version_Choice_Enum) Type() protoreflect.EnumType { +func (PatternFlowTcpEcnCwr_Choice_Enum) Type() protoreflect.EnumType { return &file_otg_proto_enumTypes[253] } -func (x PatternFlowGtpv1Version_Choice_Enum) Number() protoreflect.EnumNumber { +func (x PatternFlowTcpEcnCwr_Choice_Enum) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } -// Deprecated: Use PatternFlowGtpv1Version_Choice_Enum.Descriptor instead. -func (PatternFlowGtpv1Version_Choice_Enum) EnumDescriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{581, 0, 0} +// Deprecated: Use PatternFlowTcpEcnCwr_Choice_Enum.Descriptor instead. +func (PatternFlowTcpEcnCwr_Choice_Enum) EnumDescriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{578, 0, 0} } -type PatternFlowGtpv1ProtocolType_Choice_Enum int32 +type PatternFlowTcpEcnEcho_Choice_Enum int32 const ( - PatternFlowGtpv1ProtocolType_Choice_unspecified PatternFlowGtpv1ProtocolType_Choice_Enum = 0 - PatternFlowGtpv1ProtocolType_Choice_value PatternFlowGtpv1ProtocolType_Choice_Enum = 2 - PatternFlowGtpv1ProtocolType_Choice_values PatternFlowGtpv1ProtocolType_Choice_Enum = 3 - PatternFlowGtpv1ProtocolType_Choice_increment PatternFlowGtpv1ProtocolType_Choice_Enum = 4 - PatternFlowGtpv1ProtocolType_Choice_decrement PatternFlowGtpv1ProtocolType_Choice_Enum = 5 + PatternFlowTcpEcnEcho_Choice_unspecified PatternFlowTcpEcnEcho_Choice_Enum = 0 + PatternFlowTcpEcnEcho_Choice_value PatternFlowTcpEcnEcho_Choice_Enum = 2 + PatternFlowTcpEcnEcho_Choice_values PatternFlowTcpEcnEcho_Choice_Enum = 3 + PatternFlowTcpEcnEcho_Choice_increment PatternFlowTcpEcnEcho_Choice_Enum = 4 + PatternFlowTcpEcnEcho_Choice_decrement PatternFlowTcpEcnEcho_Choice_Enum = 5 ) -// Enum value maps for PatternFlowGtpv1ProtocolType_Choice_Enum. +// Enum value maps for PatternFlowTcpEcnEcho_Choice_Enum. var ( - PatternFlowGtpv1ProtocolType_Choice_Enum_name = map[int32]string{ + PatternFlowTcpEcnEcho_Choice_Enum_name = map[int32]string{ 0: "unspecified", 2: "value", 3: "values", 4: "increment", 5: "decrement", } - PatternFlowGtpv1ProtocolType_Choice_Enum_value = map[string]int32{ + PatternFlowTcpEcnEcho_Choice_Enum_value = map[string]int32{ "unspecified": 0, "value": 2, "values": 3, @@ -13933,53 +13834,53 @@ var ( } ) -func (x PatternFlowGtpv1ProtocolType_Choice_Enum) Enum() *PatternFlowGtpv1ProtocolType_Choice_Enum { - p := new(PatternFlowGtpv1ProtocolType_Choice_Enum) +func (x PatternFlowTcpEcnEcho_Choice_Enum) Enum() *PatternFlowTcpEcnEcho_Choice_Enum { + p := new(PatternFlowTcpEcnEcho_Choice_Enum) *p = x return p } -func (x PatternFlowGtpv1ProtocolType_Choice_Enum) String() string { +func (x PatternFlowTcpEcnEcho_Choice_Enum) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } -func (PatternFlowGtpv1ProtocolType_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { +func (PatternFlowTcpEcnEcho_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { return file_otg_proto_enumTypes[254].Descriptor() } -func (PatternFlowGtpv1ProtocolType_Choice_Enum) Type() protoreflect.EnumType { +func (PatternFlowTcpEcnEcho_Choice_Enum) Type() protoreflect.EnumType { return &file_otg_proto_enumTypes[254] } -func (x PatternFlowGtpv1ProtocolType_Choice_Enum) Number() protoreflect.EnumNumber { +func (x PatternFlowTcpEcnEcho_Choice_Enum) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } -// Deprecated: Use PatternFlowGtpv1ProtocolType_Choice_Enum.Descriptor instead. -func (PatternFlowGtpv1ProtocolType_Choice_Enum) EnumDescriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{584, 0, 0} +// Deprecated: Use PatternFlowTcpEcnEcho_Choice_Enum.Descriptor instead. +func (PatternFlowTcpEcnEcho_Choice_Enum) EnumDescriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{581, 0, 0} } -type PatternFlowGtpv1Reserved_Choice_Enum int32 +type PatternFlowTcpCtlUrg_Choice_Enum int32 const ( - PatternFlowGtpv1Reserved_Choice_unspecified PatternFlowGtpv1Reserved_Choice_Enum = 0 - PatternFlowGtpv1Reserved_Choice_value PatternFlowGtpv1Reserved_Choice_Enum = 2 - PatternFlowGtpv1Reserved_Choice_values PatternFlowGtpv1Reserved_Choice_Enum = 3 - PatternFlowGtpv1Reserved_Choice_increment PatternFlowGtpv1Reserved_Choice_Enum = 4 - PatternFlowGtpv1Reserved_Choice_decrement PatternFlowGtpv1Reserved_Choice_Enum = 5 + PatternFlowTcpCtlUrg_Choice_unspecified PatternFlowTcpCtlUrg_Choice_Enum = 0 + PatternFlowTcpCtlUrg_Choice_value PatternFlowTcpCtlUrg_Choice_Enum = 2 + PatternFlowTcpCtlUrg_Choice_values PatternFlowTcpCtlUrg_Choice_Enum = 3 + PatternFlowTcpCtlUrg_Choice_increment PatternFlowTcpCtlUrg_Choice_Enum = 4 + PatternFlowTcpCtlUrg_Choice_decrement PatternFlowTcpCtlUrg_Choice_Enum = 5 ) -// Enum value maps for PatternFlowGtpv1Reserved_Choice_Enum. +// Enum value maps for PatternFlowTcpCtlUrg_Choice_Enum. var ( - PatternFlowGtpv1Reserved_Choice_Enum_name = map[int32]string{ + PatternFlowTcpCtlUrg_Choice_Enum_name = map[int32]string{ 0: "unspecified", 2: "value", 3: "values", 4: "increment", 5: "decrement", } - PatternFlowGtpv1Reserved_Choice_Enum_value = map[string]int32{ + PatternFlowTcpCtlUrg_Choice_Enum_value = map[string]int32{ "unspecified": 0, "value": 2, "values": 3, @@ -13988,53 +13889,53 @@ var ( } ) -func (x PatternFlowGtpv1Reserved_Choice_Enum) Enum() *PatternFlowGtpv1Reserved_Choice_Enum { - p := new(PatternFlowGtpv1Reserved_Choice_Enum) +func (x PatternFlowTcpCtlUrg_Choice_Enum) Enum() *PatternFlowTcpCtlUrg_Choice_Enum { + p := new(PatternFlowTcpCtlUrg_Choice_Enum) *p = x return p } -func (x PatternFlowGtpv1Reserved_Choice_Enum) String() string { +func (x PatternFlowTcpCtlUrg_Choice_Enum) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } -func (PatternFlowGtpv1Reserved_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { +func (PatternFlowTcpCtlUrg_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { return file_otg_proto_enumTypes[255].Descriptor() } -func (PatternFlowGtpv1Reserved_Choice_Enum) Type() protoreflect.EnumType { +func (PatternFlowTcpCtlUrg_Choice_Enum) Type() protoreflect.EnumType { return &file_otg_proto_enumTypes[255] } -func (x PatternFlowGtpv1Reserved_Choice_Enum) Number() protoreflect.EnumNumber { +func (x PatternFlowTcpCtlUrg_Choice_Enum) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } -// Deprecated: Use PatternFlowGtpv1Reserved_Choice_Enum.Descriptor instead. -func (PatternFlowGtpv1Reserved_Choice_Enum) EnumDescriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{587, 0, 0} +// Deprecated: Use PatternFlowTcpCtlUrg_Choice_Enum.Descriptor instead. +func (PatternFlowTcpCtlUrg_Choice_Enum) EnumDescriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{584, 0, 0} } -type PatternFlowGtpv1EFlag_Choice_Enum int32 +type PatternFlowTcpCtlAck_Choice_Enum int32 const ( - PatternFlowGtpv1EFlag_Choice_unspecified PatternFlowGtpv1EFlag_Choice_Enum = 0 - PatternFlowGtpv1EFlag_Choice_value PatternFlowGtpv1EFlag_Choice_Enum = 2 - PatternFlowGtpv1EFlag_Choice_values PatternFlowGtpv1EFlag_Choice_Enum = 3 - PatternFlowGtpv1EFlag_Choice_increment PatternFlowGtpv1EFlag_Choice_Enum = 4 - PatternFlowGtpv1EFlag_Choice_decrement PatternFlowGtpv1EFlag_Choice_Enum = 5 + PatternFlowTcpCtlAck_Choice_unspecified PatternFlowTcpCtlAck_Choice_Enum = 0 + PatternFlowTcpCtlAck_Choice_value PatternFlowTcpCtlAck_Choice_Enum = 2 + PatternFlowTcpCtlAck_Choice_values PatternFlowTcpCtlAck_Choice_Enum = 3 + PatternFlowTcpCtlAck_Choice_increment PatternFlowTcpCtlAck_Choice_Enum = 4 + PatternFlowTcpCtlAck_Choice_decrement PatternFlowTcpCtlAck_Choice_Enum = 5 ) -// Enum value maps for PatternFlowGtpv1EFlag_Choice_Enum. +// Enum value maps for PatternFlowTcpCtlAck_Choice_Enum. var ( - PatternFlowGtpv1EFlag_Choice_Enum_name = map[int32]string{ + PatternFlowTcpCtlAck_Choice_Enum_name = map[int32]string{ 0: "unspecified", 2: "value", 3: "values", 4: "increment", 5: "decrement", } - PatternFlowGtpv1EFlag_Choice_Enum_value = map[string]int32{ + PatternFlowTcpCtlAck_Choice_Enum_value = map[string]int32{ "unspecified": 0, "value": 2, "values": 3, @@ -14043,53 +13944,53 @@ var ( } ) -func (x PatternFlowGtpv1EFlag_Choice_Enum) Enum() *PatternFlowGtpv1EFlag_Choice_Enum { - p := new(PatternFlowGtpv1EFlag_Choice_Enum) +func (x PatternFlowTcpCtlAck_Choice_Enum) Enum() *PatternFlowTcpCtlAck_Choice_Enum { + p := new(PatternFlowTcpCtlAck_Choice_Enum) *p = x return p } -func (x PatternFlowGtpv1EFlag_Choice_Enum) String() string { +func (x PatternFlowTcpCtlAck_Choice_Enum) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } -func (PatternFlowGtpv1EFlag_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { +func (PatternFlowTcpCtlAck_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { return file_otg_proto_enumTypes[256].Descriptor() } -func (PatternFlowGtpv1EFlag_Choice_Enum) Type() protoreflect.EnumType { +func (PatternFlowTcpCtlAck_Choice_Enum) Type() protoreflect.EnumType { return &file_otg_proto_enumTypes[256] } -func (x PatternFlowGtpv1EFlag_Choice_Enum) Number() protoreflect.EnumNumber { +func (x PatternFlowTcpCtlAck_Choice_Enum) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } -// Deprecated: Use PatternFlowGtpv1EFlag_Choice_Enum.Descriptor instead. -func (PatternFlowGtpv1EFlag_Choice_Enum) EnumDescriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{590, 0, 0} +// Deprecated: Use PatternFlowTcpCtlAck_Choice_Enum.Descriptor instead. +func (PatternFlowTcpCtlAck_Choice_Enum) EnumDescriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{587, 0, 0} } -type PatternFlowGtpv1SFlag_Choice_Enum int32 +type PatternFlowTcpCtlPsh_Choice_Enum int32 const ( - PatternFlowGtpv1SFlag_Choice_unspecified PatternFlowGtpv1SFlag_Choice_Enum = 0 - PatternFlowGtpv1SFlag_Choice_value PatternFlowGtpv1SFlag_Choice_Enum = 2 - PatternFlowGtpv1SFlag_Choice_values PatternFlowGtpv1SFlag_Choice_Enum = 3 - PatternFlowGtpv1SFlag_Choice_increment PatternFlowGtpv1SFlag_Choice_Enum = 4 - PatternFlowGtpv1SFlag_Choice_decrement PatternFlowGtpv1SFlag_Choice_Enum = 5 + PatternFlowTcpCtlPsh_Choice_unspecified PatternFlowTcpCtlPsh_Choice_Enum = 0 + PatternFlowTcpCtlPsh_Choice_value PatternFlowTcpCtlPsh_Choice_Enum = 2 + PatternFlowTcpCtlPsh_Choice_values PatternFlowTcpCtlPsh_Choice_Enum = 3 + PatternFlowTcpCtlPsh_Choice_increment PatternFlowTcpCtlPsh_Choice_Enum = 4 + PatternFlowTcpCtlPsh_Choice_decrement PatternFlowTcpCtlPsh_Choice_Enum = 5 ) -// Enum value maps for PatternFlowGtpv1SFlag_Choice_Enum. +// Enum value maps for PatternFlowTcpCtlPsh_Choice_Enum. var ( - PatternFlowGtpv1SFlag_Choice_Enum_name = map[int32]string{ + PatternFlowTcpCtlPsh_Choice_Enum_name = map[int32]string{ 0: "unspecified", 2: "value", 3: "values", 4: "increment", 5: "decrement", } - PatternFlowGtpv1SFlag_Choice_Enum_value = map[string]int32{ + PatternFlowTcpCtlPsh_Choice_Enum_value = map[string]int32{ "unspecified": 0, "value": 2, "values": 3, @@ -14098,53 +13999,53 @@ var ( } ) -func (x PatternFlowGtpv1SFlag_Choice_Enum) Enum() *PatternFlowGtpv1SFlag_Choice_Enum { - p := new(PatternFlowGtpv1SFlag_Choice_Enum) +func (x PatternFlowTcpCtlPsh_Choice_Enum) Enum() *PatternFlowTcpCtlPsh_Choice_Enum { + p := new(PatternFlowTcpCtlPsh_Choice_Enum) *p = x return p } -func (x PatternFlowGtpv1SFlag_Choice_Enum) String() string { +func (x PatternFlowTcpCtlPsh_Choice_Enum) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } -func (PatternFlowGtpv1SFlag_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { +func (PatternFlowTcpCtlPsh_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { return file_otg_proto_enumTypes[257].Descriptor() } -func (PatternFlowGtpv1SFlag_Choice_Enum) Type() protoreflect.EnumType { +func (PatternFlowTcpCtlPsh_Choice_Enum) Type() protoreflect.EnumType { return &file_otg_proto_enumTypes[257] } -func (x PatternFlowGtpv1SFlag_Choice_Enum) Number() protoreflect.EnumNumber { +func (x PatternFlowTcpCtlPsh_Choice_Enum) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } -// Deprecated: Use PatternFlowGtpv1SFlag_Choice_Enum.Descriptor instead. -func (PatternFlowGtpv1SFlag_Choice_Enum) EnumDescriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{593, 0, 0} +// Deprecated: Use PatternFlowTcpCtlPsh_Choice_Enum.Descriptor instead. +func (PatternFlowTcpCtlPsh_Choice_Enum) EnumDescriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{590, 0, 0} } -type PatternFlowGtpv1PnFlag_Choice_Enum int32 +type PatternFlowTcpCtlRst_Choice_Enum int32 const ( - PatternFlowGtpv1PnFlag_Choice_unspecified PatternFlowGtpv1PnFlag_Choice_Enum = 0 - PatternFlowGtpv1PnFlag_Choice_value PatternFlowGtpv1PnFlag_Choice_Enum = 2 - PatternFlowGtpv1PnFlag_Choice_values PatternFlowGtpv1PnFlag_Choice_Enum = 3 - PatternFlowGtpv1PnFlag_Choice_increment PatternFlowGtpv1PnFlag_Choice_Enum = 4 - PatternFlowGtpv1PnFlag_Choice_decrement PatternFlowGtpv1PnFlag_Choice_Enum = 5 -) - -// Enum value maps for PatternFlowGtpv1PnFlag_Choice_Enum. -var ( - PatternFlowGtpv1PnFlag_Choice_Enum_name = map[int32]string{ + PatternFlowTcpCtlRst_Choice_unspecified PatternFlowTcpCtlRst_Choice_Enum = 0 + PatternFlowTcpCtlRst_Choice_value PatternFlowTcpCtlRst_Choice_Enum = 2 + PatternFlowTcpCtlRst_Choice_values PatternFlowTcpCtlRst_Choice_Enum = 3 + PatternFlowTcpCtlRst_Choice_increment PatternFlowTcpCtlRst_Choice_Enum = 4 + PatternFlowTcpCtlRst_Choice_decrement PatternFlowTcpCtlRst_Choice_Enum = 5 +) + +// Enum value maps for PatternFlowTcpCtlRst_Choice_Enum. +var ( + PatternFlowTcpCtlRst_Choice_Enum_name = map[int32]string{ 0: "unspecified", 2: "value", 3: "values", 4: "increment", 5: "decrement", } - PatternFlowGtpv1PnFlag_Choice_Enum_value = map[string]int32{ + PatternFlowTcpCtlRst_Choice_Enum_value = map[string]int32{ "unspecified": 0, "value": 2, "values": 3, @@ -14153,53 +14054,53 @@ var ( } ) -func (x PatternFlowGtpv1PnFlag_Choice_Enum) Enum() *PatternFlowGtpv1PnFlag_Choice_Enum { - p := new(PatternFlowGtpv1PnFlag_Choice_Enum) +func (x PatternFlowTcpCtlRst_Choice_Enum) Enum() *PatternFlowTcpCtlRst_Choice_Enum { + p := new(PatternFlowTcpCtlRst_Choice_Enum) *p = x return p } -func (x PatternFlowGtpv1PnFlag_Choice_Enum) String() string { +func (x PatternFlowTcpCtlRst_Choice_Enum) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } -func (PatternFlowGtpv1PnFlag_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { +func (PatternFlowTcpCtlRst_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { return file_otg_proto_enumTypes[258].Descriptor() } -func (PatternFlowGtpv1PnFlag_Choice_Enum) Type() protoreflect.EnumType { +func (PatternFlowTcpCtlRst_Choice_Enum) Type() protoreflect.EnumType { return &file_otg_proto_enumTypes[258] } -func (x PatternFlowGtpv1PnFlag_Choice_Enum) Number() protoreflect.EnumNumber { +func (x PatternFlowTcpCtlRst_Choice_Enum) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } -// Deprecated: Use PatternFlowGtpv1PnFlag_Choice_Enum.Descriptor instead. -func (PatternFlowGtpv1PnFlag_Choice_Enum) EnumDescriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{596, 0, 0} +// Deprecated: Use PatternFlowTcpCtlRst_Choice_Enum.Descriptor instead. +func (PatternFlowTcpCtlRst_Choice_Enum) EnumDescriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{593, 0, 0} } -type PatternFlowGtpv1MessageType_Choice_Enum int32 +type PatternFlowTcpCtlSyn_Choice_Enum int32 const ( - PatternFlowGtpv1MessageType_Choice_unspecified PatternFlowGtpv1MessageType_Choice_Enum = 0 - PatternFlowGtpv1MessageType_Choice_value PatternFlowGtpv1MessageType_Choice_Enum = 2 - PatternFlowGtpv1MessageType_Choice_values PatternFlowGtpv1MessageType_Choice_Enum = 3 - PatternFlowGtpv1MessageType_Choice_increment PatternFlowGtpv1MessageType_Choice_Enum = 4 - PatternFlowGtpv1MessageType_Choice_decrement PatternFlowGtpv1MessageType_Choice_Enum = 5 + PatternFlowTcpCtlSyn_Choice_unspecified PatternFlowTcpCtlSyn_Choice_Enum = 0 + PatternFlowTcpCtlSyn_Choice_value PatternFlowTcpCtlSyn_Choice_Enum = 2 + PatternFlowTcpCtlSyn_Choice_values PatternFlowTcpCtlSyn_Choice_Enum = 3 + PatternFlowTcpCtlSyn_Choice_increment PatternFlowTcpCtlSyn_Choice_Enum = 4 + PatternFlowTcpCtlSyn_Choice_decrement PatternFlowTcpCtlSyn_Choice_Enum = 5 ) -// Enum value maps for PatternFlowGtpv1MessageType_Choice_Enum. +// Enum value maps for PatternFlowTcpCtlSyn_Choice_Enum. var ( - PatternFlowGtpv1MessageType_Choice_Enum_name = map[int32]string{ + PatternFlowTcpCtlSyn_Choice_Enum_name = map[int32]string{ 0: "unspecified", 2: "value", 3: "values", 4: "increment", 5: "decrement", } - PatternFlowGtpv1MessageType_Choice_Enum_value = map[string]int32{ + PatternFlowTcpCtlSyn_Choice_Enum_value = map[string]int32{ "unspecified": 0, "value": 2, "values": 3, @@ -14208,53 +14109,53 @@ var ( } ) -func (x PatternFlowGtpv1MessageType_Choice_Enum) Enum() *PatternFlowGtpv1MessageType_Choice_Enum { - p := new(PatternFlowGtpv1MessageType_Choice_Enum) +func (x PatternFlowTcpCtlSyn_Choice_Enum) Enum() *PatternFlowTcpCtlSyn_Choice_Enum { + p := new(PatternFlowTcpCtlSyn_Choice_Enum) *p = x return p } -func (x PatternFlowGtpv1MessageType_Choice_Enum) String() string { +func (x PatternFlowTcpCtlSyn_Choice_Enum) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } -func (PatternFlowGtpv1MessageType_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { +func (PatternFlowTcpCtlSyn_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { return file_otg_proto_enumTypes[259].Descriptor() } -func (PatternFlowGtpv1MessageType_Choice_Enum) Type() protoreflect.EnumType { +func (PatternFlowTcpCtlSyn_Choice_Enum) Type() protoreflect.EnumType { return &file_otg_proto_enumTypes[259] } -func (x PatternFlowGtpv1MessageType_Choice_Enum) Number() protoreflect.EnumNumber { +func (x PatternFlowTcpCtlSyn_Choice_Enum) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } -// Deprecated: Use PatternFlowGtpv1MessageType_Choice_Enum.Descriptor instead. -func (PatternFlowGtpv1MessageType_Choice_Enum) EnumDescriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{599, 0, 0} +// Deprecated: Use PatternFlowTcpCtlSyn_Choice_Enum.Descriptor instead. +func (PatternFlowTcpCtlSyn_Choice_Enum) EnumDescriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{596, 0, 0} } -type PatternFlowGtpv1MessageLength_Choice_Enum int32 +type PatternFlowTcpCtlFin_Choice_Enum int32 const ( - PatternFlowGtpv1MessageLength_Choice_unspecified PatternFlowGtpv1MessageLength_Choice_Enum = 0 - PatternFlowGtpv1MessageLength_Choice_value PatternFlowGtpv1MessageLength_Choice_Enum = 2 - PatternFlowGtpv1MessageLength_Choice_values PatternFlowGtpv1MessageLength_Choice_Enum = 3 - PatternFlowGtpv1MessageLength_Choice_increment PatternFlowGtpv1MessageLength_Choice_Enum = 4 - PatternFlowGtpv1MessageLength_Choice_decrement PatternFlowGtpv1MessageLength_Choice_Enum = 5 + PatternFlowTcpCtlFin_Choice_unspecified PatternFlowTcpCtlFin_Choice_Enum = 0 + PatternFlowTcpCtlFin_Choice_value PatternFlowTcpCtlFin_Choice_Enum = 2 + PatternFlowTcpCtlFin_Choice_values PatternFlowTcpCtlFin_Choice_Enum = 3 + PatternFlowTcpCtlFin_Choice_increment PatternFlowTcpCtlFin_Choice_Enum = 4 + PatternFlowTcpCtlFin_Choice_decrement PatternFlowTcpCtlFin_Choice_Enum = 5 ) -// Enum value maps for PatternFlowGtpv1MessageLength_Choice_Enum. +// Enum value maps for PatternFlowTcpCtlFin_Choice_Enum. var ( - PatternFlowGtpv1MessageLength_Choice_Enum_name = map[int32]string{ + PatternFlowTcpCtlFin_Choice_Enum_name = map[int32]string{ 0: "unspecified", 2: "value", 3: "values", 4: "increment", 5: "decrement", } - PatternFlowGtpv1MessageLength_Choice_Enum_value = map[string]int32{ + PatternFlowTcpCtlFin_Choice_Enum_value = map[string]int32{ "unspecified": 0, "value": 2, "values": 3, @@ -14263,53 +14164,53 @@ var ( } ) -func (x PatternFlowGtpv1MessageLength_Choice_Enum) Enum() *PatternFlowGtpv1MessageLength_Choice_Enum { - p := new(PatternFlowGtpv1MessageLength_Choice_Enum) +func (x PatternFlowTcpCtlFin_Choice_Enum) Enum() *PatternFlowTcpCtlFin_Choice_Enum { + p := new(PatternFlowTcpCtlFin_Choice_Enum) *p = x return p } -func (x PatternFlowGtpv1MessageLength_Choice_Enum) String() string { +func (x PatternFlowTcpCtlFin_Choice_Enum) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } -func (PatternFlowGtpv1MessageLength_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { +func (PatternFlowTcpCtlFin_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { return file_otg_proto_enumTypes[260].Descriptor() } -func (PatternFlowGtpv1MessageLength_Choice_Enum) Type() protoreflect.EnumType { +func (PatternFlowTcpCtlFin_Choice_Enum) Type() protoreflect.EnumType { return &file_otg_proto_enumTypes[260] } -func (x PatternFlowGtpv1MessageLength_Choice_Enum) Number() protoreflect.EnumNumber { +func (x PatternFlowTcpCtlFin_Choice_Enum) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } -// Deprecated: Use PatternFlowGtpv1MessageLength_Choice_Enum.Descriptor instead. -func (PatternFlowGtpv1MessageLength_Choice_Enum) EnumDescriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{602, 0, 0} +// Deprecated: Use PatternFlowTcpCtlFin_Choice_Enum.Descriptor instead. +func (PatternFlowTcpCtlFin_Choice_Enum) EnumDescriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{599, 0, 0} } -type PatternFlowGtpv1Teid_Choice_Enum int32 +type PatternFlowTcpWindow_Choice_Enum int32 const ( - PatternFlowGtpv1Teid_Choice_unspecified PatternFlowGtpv1Teid_Choice_Enum = 0 - PatternFlowGtpv1Teid_Choice_value PatternFlowGtpv1Teid_Choice_Enum = 2 - PatternFlowGtpv1Teid_Choice_values PatternFlowGtpv1Teid_Choice_Enum = 3 - PatternFlowGtpv1Teid_Choice_increment PatternFlowGtpv1Teid_Choice_Enum = 4 - PatternFlowGtpv1Teid_Choice_decrement PatternFlowGtpv1Teid_Choice_Enum = 5 + PatternFlowTcpWindow_Choice_unspecified PatternFlowTcpWindow_Choice_Enum = 0 + PatternFlowTcpWindow_Choice_value PatternFlowTcpWindow_Choice_Enum = 2 + PatternFlowTcpWindow_Choice_values PatternFlowTcpWindow_Choice_Enum = 3 + PatternFlowTcpWindow_Choice_increment PatternFlowTcpWindow_Choice_Enum = 4 + PatternFlowTcpWindow_Choice_decrement PatternFlowTcpWindow_Choice_Enum = 5 ) -// Enum value maps for PatternFlowGtpv1Teid_Choice_Enum. +// Enum value maps for PatternFlowTcpWindow_Choice_Enum. var ( - PatternFlowGtpv1Teid_Choice_Enum_name = map[int32]string{ + PatternFlowTcpWindow_Choice_Enum_name = map[int32]string{ 0: "unspecified", 2: "value", 3: "values", 4: "increment", 5: "decrement", } - PatternFlowGtpv1Teid_Choice_Enum_value = map[string]int32{ + PatternFlowTcpWindow_Choice_Enum_value = map[string]int32{ "unspecified": 0, "value": 2, "values": 3, @@ -14318,53 +14219,53 @@ var ( } ) -func (x PatternFlowGtpv1Teid_Choice_Enum) Enum() *PatternFlowGtpv1Teid_Choice_Enum { - p := new(PatternFlowGtpv1Teid_Choice_Enum) +func (x PatternFlowTcpWindow_Choice_Enum) Enum() *PatternFlowTcpWindow_Choice_Enum { + p := new(PatternFlowTcpWindow_Choice_Enum) *p = x return p } -func (x PatternFlowGtpv1Teid_Choice_Enum) String() string { +func (x PatternFlowTcpWindow_Choice_Enum) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } -func (PatternFlowGtpv1Teid_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { +func (PatternFlowTcpWindow_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { return file_otg_proto_enumTypes[261].Descriptor() } -func (PatternFlowGtpv1Teid_Choice_Enum) Type() protoreflect.EnumType { +func (PatternFlowTcpWindow_Choice_Enum) Type() protoreflect.EnumType { return &file_otg_proto_enumTypes[261] } -func (x PatternFlowGtpv1Teid_Choice_Enum) Number() protoreflect.EnumNumber { +func (x PatternFlowTcpWindow_Choice_Enum) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } -// Deprecated: Use PatternFlowGtpv1Teid_Choice_Enum.Descriptor instead. -func (PatternFlowGtpv1Teid_Choice_Enum) EnumDescriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{605, 0, 0} +// Deprecated: Use PatternFlowTcpWindow_Choice_Enum.Descriptor instead. +func (PatternFlowTcpWindow_Choice_Enum) EnumDescriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{602, 0, 0} } -type PatternFlowGtpv1SquenceNumber_Choice_Enum int32 +type PatternFlowUdpSrcPort_Choice_Enum int32 const ( - PatternFlowGtpv1SquenceNumber_Choice_unspecified PatternFlowGtpv1SquenceNumber_Choice_Enum = 0 - PatternFlowGtpv1SquenceNumber_Choice_value PatternFlowGtpv1SquenceNumber_Choice_Enum = 2 - PatternFlowGtpv1SquenceNumber_Choice_values PatternFlowGtpv1SquenceNumber_Choice_Enum = 3 - PatternFlowGtpv1SquenceNumber_Choice_increment PatternFlowGtpv1SquenceNumber_Choice_Enum = 4 - PatternFlowGtpv1SquenceNumber_Choice_decrement PatternFlowGtpv1SquenceNumber_Choice_Enum = 5 + PatternFlowUdpSrcPort_Choice_unspecified PatternFlowUdpSrcPort_Choice_Enum = 0 + PatternFlowUdpSrcPort_Choice_value PatternFlowUdpSrcPort_Choice_Enum = 2 + PatternFlowUdpSrcPort_Choice_values PatternFlowUdpSrcPort_Choice_Enum = 3 + PatternFlowUdpSrcPort_Choice_increment PatternFlowUdpSrcPort_Choice_Enum = 4 + PatternFlowUdpSrcPort_Choice_decrement PatternFlowUdpSrcPort_Choice_Enum = 5 ) -// Enum value maps for PatternFlowGtpv1SquenceNumber_Choice_Enum. +// Enum value maps for PatternFlowUdpSrcPort_Choice_Enum. var ( - PatternFlowGtpv1SquenceNumber_Choice_Enum_name = map[int32]string{ + PatternFlowUdpSrcPort_Choice_Enum_name = map[int32]string{ 0: "unspecified", 2: "value", 3: "values", 4: "increment", 5: "decrement", } - PatternFlowGtpv1SquenceNumber_Choice_Enum_value = map[string]int32{ + PatternFlowUdpSrcPort_Choice_Enum_value = map[string]int32{ "unspecified": 0, "value": 2, "values": 3, @@ -14373,53 +14274,53 @@ var ( } ) -func (x PatternFlowGtpv1SquenceNumber_Choice_Enum) Enum() *PatternFlowGtpv1SquenceNumber_Choice_Enum { - p := new(PatternFlowGtpv1SquenceNumber_Choice_Enum) +func (x PatternFlowUdpSrcPort_Choice_Enum) Enum() *PatternFlowUdpSrcPort_Choice_Enum { + p := new(PatternFlowUdpSrcPort_Choice_Enum) *p = x return p } -func (x PatternFlowGtpv1SquenceNumber_Choice_Enum) String() string { +func (x PatternFlowUdpSrcPort_Choice_Enum) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } -func (PatternFlowGtpv1SquenceNumber_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { +func (PatternFlowUdpSrcPort_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { return file_otg_proto_enumTypes[262].Descriptor() } -func (PatternFlowGtpv1SquenceNumber_Choice_Enum) Type() protoreflect.EnumType { +func (PatternFlowUdpSrcPort_Choice_Enum) Type() protoreflect.EnumType { return &file_otg_proto_enumTypes[262] } -func (x PatternFlowGtpv1SquenceNumber_Choice_Enum) Number() protoreflect.EnumNumber { +func (x PatternFlowUdpSrcPort_Choice_Enum) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } -// Deprecated: Use PatternFlowGtpv1SquenceNumber_Choice_Enum.Descriptor instead. -func (PatternFlowGtpv1SquenceNumber_Choice_Enum) EnumDescriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{608, 0, 0} +// Deprecated: Use PatternFlowUdpSrcPort_Choice_Enum.Descriptor instead. +func (PatternFlowUdpSrcPort_Choice_Enum) EnumDescriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{605, 0, 0} } -type PatternFlowGtpv1NPduNumber_Choice_Enum int32 +type PatternFlowUdpDstPort_Choice_Enum int32 const ( - PatternFlowGtpv1NPduNumber_Choice_unspecified PatternFlowGtpv1NPduNumber_Choice_Enum = 0 - PatternFlowGtpv1NPduNumber_Choice_value PatternFlowGtpv1NPduNumber_Choice_Enum = 2 - PatternFlowGtpv1NPduNumber_Choice_values PatternFlowGtpv1NPduNumber_Choice_Enum = 3 - PatternFlowGtpv1NPduNumber_Choice_increment PatternFlowGtpv1NPduNumber_Choice_Enum = 4 - PatternFlowGtpv1NPduNumber_Choice_decrement PatternFlowGtpv1NPduNumber_Choice_Enum = 5 + PatternFlowUdpDstPort_Choice_unspecified PatternFlowUdpDstPort_Choice_Enum = 0 + PatternFlowUdpDstPort_Choice_value PatternFlowUdpDstPort_Choice_Enum = 2 + PatternFlowUdpDstPort_Choice_values PatternFlowUdpDstPort_Choice_Enum = 3 + PatternFlowUdpDstPort_Choice_increment PatternFlowUdpDstPort_Choice_Enum = 4 + PatternFlowUdpDstPort_Choice_decrement PatternFlowUdpDstPort_Choice_Enum = 5 ) -// Enum value maps for PatternFlowGtpv1NPduNumber_Choice_Enum. +// Enum value maps for PatternFlowUdpDstPort_Choice_Enum. var ( - PatternFlowGtpv1NPduNumber_Choice_Enum_name = map[int32]string{ + PatternFlowUdpDstPort_Choice_Enum_name = map[int32]string{ 0: "unspecified", 2: "value", 3: "values", 4: "increment", 5: "decrement", } - PatternFlowGtpv1NPduNumber_Choice_Enum_value = map[string]int32{ + PatternFlowUdpDstPort_Choice_Enum_value = map[string]int32{ "unspecified": 0, "value": 2, "values": 3, @@ -14428,53 +14329,53 @@ var ( } ) -func (x PatternFlowGtpv1NPduNumber_Choice_Enum) Enum() *PatternFlowGtpv1NPduNumber_Choice_Enum { - p := new(PatternFlowGtpv1NPduNumber_Choice_Enum) +func (x PatternFlowUdpDstPort_Choice_Enum) Enum() *PatternFlowUdpDstPort_Choice_Enum { + p := new(PatternFlowUdpDstPort_Choice_Enum) *p = x return p } -func (x PatternFlowGtpv1NPduNumber_Choice_Enum) String() string { +func (x PatternFlowUdpDstPort_Choice_Enum) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } -func (PatternFlowGtpv1NPduNumber_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { +func (PatternFlowUdpDstPort_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { return file_otg_proto_enumTypes[263].Descriptor() } -func (PatternFlowGtpv1NPduNumber_Choice_Enum) Type() protoreflect.EnumType { +func (PatternFlowUdpDstPort_Choice_Enum) Type() protoreflect.EnumType { return &file_otg_proto_enumTypes[263] } -func (x PatternFlowGtpv1NPduNumber_Choice_Enum) Number() protoreflect.EnumNumber { +func (x PatternFlowUdpDstPort_Choice_Enum) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } -// Deprecated: Use PatternFlowGtpv1NPduNumber_Choice_Enum.Descriptor instead. -func (PatternFlowGtpv1NPduNumber_Choice_Enum) EnumDescriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{611, 0, 0} +// Deprecated: Use PatternFlowUdpDstPort_Choice_Enum.Descriptor instead. +func (PatternFlowUdpDstPort_Choice_Enum) EnumDescriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{608, 0, 0} } -type PatternFlowGtpv1NextExtensionHeaderType_Choice_Enum int32 +type PatternFlowUdpLength_Choice_Enum int32 const ( - PatternFlowGtpv1NextExtensionHeaderType_Choice_unspecified PatternFlowGtpv1NextExtensionHeaderType_Choice_Enum = 0 - PatternFlowGtpv1NextExtensionHeaderType_Choice_value PatternFlowGtpv1NextExtensionHeaderType_Choice_Enum = 2 - PatternFlowGtpv1NextExtensionHeaderType_Choice_values PatternFlowGtpv1NextExtensionHeaderType_Choice_Enum = 3 - PatternFlowGtpv1NextExtensionHeaderType_Choice_increment PatternFlowGtpv1NextExtensionHeaderType_Choice_Enum = 4 - PatternFlowGtpv1NextExtensionHeaderType_Choice_decrement PatternFlowGtpv1NextExtensionHeaderType_Choice_Enum = 5 + PatternFlowUdpLength_Choice_unspecified PatternFlowUdpLength_Choice_Enum = 0 + PatternFlowUdpLength_Choice_value PatternFlowUdpLength_Choice_Enum = 2 + PatternFlowUdpLength_Choice_values PatternFlowUdpLength_Choice_Enum = 3 + PatternFlowUdpLength_Choice_increment PatternFlowUdpLength_Choice_Enum = 4 + PatternFlowUdpLength_Choice_decrement PatternFlowUdpLength_Choice_Enum = 5 ) -// Enum value maps for PatternFlowGtpv1NextExtensionHeaderType_Choice_Enum. +// Enum value maps for PatternFlowUdpLength_Choice_Enum. var ( - PatternFlowGtpv1NextExtensionHeaderType_Choice_Enum_name = map[int32]string{ + PatternFlowUdpLength_Choice_Enum_name = map[int32]string{ 0: "unspecified", 2: "value", 3: "values", 4: "increment", 5: "decrement", } - PatternFlowGtpv1NextExtensionHeaderType_Choice_Enum_value = map[string]int32{ + PatternFlowUdpLength_Choice_Enum_value = map[string]int32{ "unspecified": 0, "value": 2, "values": 3, @@ -14483,163 +14384,151 @@ var ( } ) -func (x PatternFlowGtpv1NextExtensionHeaderType_Choice_Enum) Enum() *PatternFlowGtpv1NextExtensionHeaderType_Choice_Enum { - p := new(PatternFlowGtpv1NextExtensionHeaderType_Choice_Enum) +func (x PatternFlowUdpLength_Choice_Enum) Enum() *PatternFlowUdpLength_Choice_Enum { + p := new(PatternFlowUdpLength_Choice_Enum) *p = x return p } -func (x PatternFlowGtpv1NextExtensionHeaderType_Choice_Enum) String() string { +func (x PatternFlowUdpLength_Choice_Enum) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } -func (PatternFlowGtpv1NextExtensionHeaderType_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { +func (PatternFlowUdpLength_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { return file_otg_proto_enumTypes[264].Descriptor() } -func (PatternFlowGtpv1NextExtensionHeaderType_Choice_Enum) Type() protoreflect.EnumType { +func (PatternFlowUdpLength_Choice_Enum) Type() protoreflect.EnumType { return &file_otg_proto_enumTypes[264] } -func (x PatternFlowGtpv1NextExtensionHeaderType_Choice_Enum) Number() protoreflect.EnumNumber { +func (x PatternFlowUdpLength_Choice_Enum) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } -// Deprecated: Use PatternFlowGtpv1NextExtensionHeaderType_Choice_Enum.Descriptor instead. -func (PatternFlowGtpv1NextExtensionHeaderType_Choice_Enum) EnumDescriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{614, 0, 0} +// Deprecated: Use PatternFlowUdpLength_Choice_Enum.Descriptor instead. +func (PatternFlowUdpLength_Choice_Enum) EnumDescriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{611, 0, 0} } -type PatternFlowGtpExtensionExtensionLength_Choice_Enum int32 +type PatternFlowUdpChecksum_Choice_Enum int32 const ( - PatternFlowGtpExtensionExtensionLength_Choice_unspecified PatternFlowGtpExtensionExtensionLength_Choice_Enum = 0 - PatternFlowGtpExtensionExtensionLength_Choice_value PatternFlowGtpExtensionExtensionLength_Choice_Enum = 2 - PatternFlowGtpExtensionExtensionLength_Choice_values PatternFlowGtpExtensionExtensionLength_Choice_Enum = 3 - PatternFlowGtpExtensionExtensionLength_Choice_increment PatternFlowGtpExtensionExtensionLength_Choice_Enum = 4 - PatternFlowGtpExtensionExtensionLength_Choice_decrement PatternFlowGtpExtensionExtensionLength_Choice_Enum = 5 + PatternFlowUdpChecksum_Choice_unspecified PatternFlowUdpChecksum_Choice_Enum = 0 + PatternFlowUdpChecksum_Choice_generated PatternFlowUdpChecksum_Choice_Enum = 1 + PatternFlowUdpChecksum_Choice_custom PatternFlowUdpChecksum_Choice_Enum = 2 ) -// Enum value maps for PatternFlowGtpExtensionExtensionLength_Choice_Enum. +// Enum value maps for PatternFlowUdpChecksum_Choice_Enum. var ( - PatternFlowGtpExtensionExtensionLength_Choice_Enum_name = map[int32]string{ + PatternFlowUdpChecksum_Choice_Enum_name = map[int32]string{ 0: "unspecified", - 2: "value", - 3: "values", - 4: "increment", - 5: "decrement", + 1: "generated", + 2: "custom", } - PatternFlowGtpExtensionExtensionLength_Choice_Enum_value = map[string]int32{ + PatternFlowUdpChecksum_Choice_Enum_value = map[string]int32{ "unspecified": 0, - "value": 2, - "values": 3, - "increment": 4, - "decrement": 5, + "generated": 1, + "custom": 2, } ) -func (x PatternFlowGtpExtensionExtensionLength_Choice_Enum) Enum() *PatternFlowGtpExtensionExtensionLength_Choice_Enum { - p := new(PatternFlowGtpExtensionExtensionLength_Choice_Enum) +func (x PatternFlowUdpChecksum_Choice_Enum) Enum() *PatternFlowUdpChecksum_Choice_Enum { + p := new(PatternFlowUdpChecksum_Choice_Enum) *p = x return p } -func (x PatternFlowGtpExtensionExtensionLength_Choice_Enum) String() string { +func (x PatternFlowUdpChecksum_Choice_Enum) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } -func (PatternFlowGtpExtensionExtensionLength_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { +func (PatternFlowUdpChecksum_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { return file_otg_proto_enumTypes[265].Descriptor() } -func (PatternFlowGtpExtensionExtensionLength_Choice_Enum) Type() protoreflect.EnumType { +func (PatternFlowUdpChecksum_Choice_Enum) Type() protoreflect.EnumType { return &file_otg_proto_enumTypes[265] } -func (x PatternFlowGtpExtensionExtensionLength_Choice_Enum) Number() protoreflect.EnumNumber { +func (x PatternFlowUdpChecksum_Choice_Enum) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } -// Deprecated: Use PatternFlowGtpExtensionExtensionLength_Choice_Enum.Descriptor instead. -func (PatternFlowGtpExtensionExtensionLength_Choice_Enum) EnumDescriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{617, 0, 0} +// Deprecated: Use PatternFlowUdpChecksum_Choice_Enum.Descriptor instead. +func (PatternFlowUdpChecksum_Choice_Enum) EnumDescriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{612, 0, 0} } -type PatternFlowGtpExtensionContents_Choice_Enum int32 +type PatternFlowUdpChecksum_Generated_Enum int32 const ( - PatternFlowGtpExtensionContents_Choice_unspecified PatternFlowGtpExtensionContents_Choice_Enum = 0 - PatternFlowGtpExtensionContents_Choice_value PatternFlowGtpExtensionContents_Choice_Enum = 2 - PatternFlowGtpExtensionContents_Choice_values PatternFlowGtpExtensionContents_Choice_Enum = 3 - PatternFlowGtpExtensionContents_Choice_increment PatternFlowGtpExtensionContents_Choice_Enum = 4 - PatternFlowGtpExtensionContents_Choice_decrement PatternFlowGtpExtensionContents_Choice_Enum = 5 + PatternFlowUdpChecksum_Generated_unspecified PatternFlowUdpChecksum_Generated_Enum = 0 + PatternFlowUdpChecksum_Generated_good PatternFlowUdpChecksum_Generated_Enum = 1 + PatternFlowUdpChecksum_Generated_bad PatternFlowUdpChecksum_Generated_Enum = 2 ) -// Enum value maps for PatternFlowGtpExtensionContents_Choice_Enum. +// Enum value maps for PatternFlowUdpChecksum_Generated_Enum. var ( - PatternFlowGtpExtensionContents_Choice_Enum_name = map[int32]string{ + PatternFlowUdpChecksum_Generated_Enum_name = map[int32]string{ 0: "unspecified", - 2: "value", - 3: "values", - 4: "increment", - 5: "decrement", + 1: "good", + 2: "bad", } - PatternFlowGtpExtensionContents_Choice_Enum_value = map[string]int32{ + PatternFlowUdpChecksum_Generated_Enum_value = map[string]int32{ "unspecified": 0, - "value": 2, - "values": 3, - "increment": 4, - "decrement": 5, + "good": 1, + "bad": 2, } ) -func (x PatternFlowGtpExtensionContents_Choice_Enum) Enum() *PatternFlowGtpExtensionContents_Choice_Enum { - p := new(PatternFlowGtpExtensionContents_Choice_Enum) +func (x PatternFlowUdpChecksum_Generated_Enum) Enum() *PatternFlowUdpChecksum_Generated_Enum { + p := new(PatternFlowUdpChecksum_Generated_Enum) *p = x return p } -func (x PatternFlowGtpExtensionContents_Choice_Enum) String() string { +func (x PatternFlowUdpChecksum_Generated_Enum) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } -func (PatternFlowGtpExtensionContents_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { +func (PatternFlowUdpChecksum_Generated_Enum) Descriptor() protoreflect.EnumDescriptor { return file_otg_proto_enumTypes[266].Descriptor() } -func (PatternFlowGtpExtensionContents_Choice_Enum) Type() protoreflect.EnumType { +func (PatternFlowUdpChecksum_Generated_Enum) Type() protoreflect.EnumType { return &file_otg_proto_enumTypes[266] } -func (x PatternFlowGtpExtensionContents_Choice_Enum) Number() protoreflect.EnumNumber { +func (x PatternFlowUdpChecksum_Generated_Enum) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } -// Deprecated: Use PatternFlowGtpExtensionContents_Choice_Enum.Descriptor instead. -func (PatternFlowGtpExtensionContents_Choice_Enum) EnumDescriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{620, 0, 0} +// Deprecated: Use PatternFlowUdpChecksum_Generated_Enum.Descriptor instead. +func (PatternFlowUdpChecksum_Generated_Enum) EnumDescriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{612, 1, 0} } -type PatternFlowGtpExtensionNextExtensionHeader_Choice_Enum int32 +type PatternFlowGreChecksumPresent_Choice_Enum int32 const ( - PatternFlowGtpExtensionNextExtensionHeader_Choice_unspecified PatternFlowGtpExtensionNextExtensionHeader_Choice_Enum = 0 - PatternFlowGtpExtensionNextExtensionHeader_Choice_value PatternFlowGtpExtensionNextExtensionHeader_Choice_Enum = 2 - PatternFlowGtpExtensionNextExtensionHeader_Choice_values PatternFlowGtpExtensionNextExtensionHeader_Choice_Enum = 3 - PatternFlowGtpExtensionNextExtensionHeader_Choice_increment PatternFlowGtpExtensionNextExtensionHeader_Choice_Enum = 4 - PatternFlowGtpExtensionNextExtensionHeader_Choice_decrement PatternFlowGtpExtensionNextExtensionHeader_Choice_Enum = 5 + PatternFlowGreChecksumPresent_Choice_unspecified PatternFlowGreChecksumPresent_Choice_Enum = 0 + PatternFlowGreChecksumPresent_Choice_value PatternFlowGreChecksumPresent_Choice_Enum = 2 + PatternFlowGreChecksumPresent_Choice_values PatternFlowGreChecksumPresent_Choice_Enum = 3 + PatternFlowGreChecksumPresent_Choice_increment PatternFlowGreChecksumPresent_Choice_Enum = 4 + PatternFlowGreChecksumPresent_Choice_decrement PatternFlowGreChecksumPresent_Choice_Enum = 5 ) -// Enum value maps for PatternFlowGtpExtensionNextExtensionHeader_Choice_Enum. +// Enum value maps for PatternFlowGreChecksumPresent_Choice_Enum. var ( - PatternFlowGtpExtensionNextExtensionHeader_Choice_Enum_name = map[int32]string{ + PatternFlowGreChecksumPresent_Choice_Enum_name = map[int32]string{ 0: "unspecified", 2: "value", 3: "values", 4: "increment", 5: "decrement", } - PatternFlowGtpExtensionNextExtensionHeader_Choice_Enum_value = map[string]int32{ + PatternFlowGreChecksumPresent_Choice_Enum_value = map[string]int32{ "unspecified": 0, "value": 2, "values": 3, @@ -14648,53 +14537,53 @@ var ( } ) -func (x PatternFlowGtpExtensionNextExtensionHeader_Choice_Enum) Enum() *PatternFlowGtpExtensionNextExtensionHeader_Choice_Enum { - p := new(PatternFlowGtpExtensionNextExtensionHeader_Choice_Enum) +func (x PatternFlowGreChecksumPresent_Choice_Enum) Enum() *PatternFlowGreChecksumPresent_Choice_Enum { + p := new(PatternFlowGreChecksumPresent_Choice_Enum) *p = x return p } -func (x PatternFlowGtpExtensionNextExtensionHeader_Choice_Enum) String() string { +func (x PatternFlowGreChecksumPresent_Choice_Enum) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } -func (PatternFlowGtpExtensionNextExtensionHeader_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { +func (PatternFlowGreChecksumPresent_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { return file_otg_proto_enumTypes[267].Descriptor() } -func (PatternFlowGtpExtensionNextExtensionHeader_Choice_Enum) Type() protoreflect.EnumType { +func (PatternFlowGreChecksumPresent_Choice_Enum) Type() protoreflect.EnumType { return &file_otg_proto_enumTypes[267] } -func (x PatternFlowGtpExtensionNextExtensionHeader_Choice_Enum) Number() protoreflect.EnumNumber { +func (x PatternFlowGreChecksumPresent_Choice_Enum) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } -// Deprecated: Use PatternFlowGtpExtensionNextExtensionHeader_Choice_Enum.Descriptor instead. -func (PatternFlowGtpExtensionNextExtensionHeader_Choice_Enum) EnumDescriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{623, 0, 0} +// Deprecated: Use PatternFlowGreChecksumPresent_Choice_Enum.Descriptor instead. +func (PatternFlowGreChecksumPresent_Choice_Enum) EnumDescriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{615, 0, 0} } -type PatternFlowGtpv2Version_Choice_Enum int32 +type PatternFlowGreReserved0_Choice_Enum int32 const ( - PatternFlowGtpv2Version_Choice_unspecified PatternFlowGtpv2Version_Choice_Enum = 0 - PatternFlowGtpv2Version_Choice_value PatternFlowGtpv2Version_Choice_Enum = 2 - PatternFlowGtpv2Version_Choice_values PatternFlowGtpv2Version_Choice_Enum = 3 - PatternFlowGtpv2Version_Choice_increment PatternFlowGtpv2Version_Choice_Enum = 4 - PatternFlowGtpv2Version_Choice_decrement PatternFlowGtpv2Version_Choice_Enum = 5 + PatternFlowGreReserved0_Choice_unspecified PatternFlowGreReserved0_Choice_Enum = 0 + PatternFlowGreReserved0_Choice_value PatternFlowGreReserved0_Choice_Enum = 2 + PatternFlowGreReserved0_Choice_values PatternFlowGreReserved0_Choice_Enum = 3 + PatternFlowGreReserved0_Choice_increment PatternFlowGreReserved0_Choice_Enum = 4 + PatternFlowGreReserved0_Choice_decrement PatternFlowGreReserved0_Choice_Enum = 5 ) -// Enum value maps for PatternFlowGtpv2Version_Choice_Enum. +// Enum value maps for PatternFlowGreReserved0_Choice_Enum. var ( - PatternFlowGtpv2Version_Choice_Enum_name = map[int32]string{ + PatternFlowGreReserved0_Choice_Enum_name = map[int32]string{ 0: "unspecified", 2: "value", 3: "values", 4: "increment", 5: "decrement", } - PatternFlowGtpv2Version_Choice_Enum_value = map[string]int32{ + PatternFlowGreReserved0_Choice_Enum_value = map[string]int32{ "unspecified": 0, "value": 2, "values": 3, @@ -14703,53 +14592,53 @@ var ( } ) -func (x PatternFlowGtpv2Version_Choice_Enum) Enum() *PatternFlowGtpv2Version_Choice_Enum { - p := new(PatternFlowGtpv2Version_Choice_Enum) +func (x PatternFlowGreReserved0_Choice_Enum) Enum() *PatternFlowGreReserved0_Choice_Enum { + p := new(PatternFlowGreReserved0_Choice_Enum) *p = x return p } -func (x PatternFlowGtpv2Version_Choice_Enum) String() string { +func (x PatternFlowGreReserved0_Choice_Enum) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } -func (PatternFlowGtpv2Version_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { +func (PatternFlowGreReserved0_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { return file_otg_proto_enumTypes[268].Descriptor() } -func (PatternFlowGtpv2Version_Choice_Enum) Type() protoreflect.EnumType { +func (PatternFlowGreReserved0_Choice_Enum) Type() protoreflect.EnumType { return &file_otg_proto_enumTypes[268] } -func (x PatternFlowGtpv2Version_Choice_Enum) Number() protoreflect.EnumNumber { +func (x PatternFlowGreReserved0_Choice_Enum) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } -// Deprecated: Use PatternFlowGtpv2Version_Choice_Enum.Descriptor instead. -func (PatternFlowGtpv2Version_Choice_Enum) EnumDescriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{626, 0, 0} +// Deprecated: Use PatternFlowGreReserved0_Choice_Enum.Descriptor instead. +func (PatternFlowGreReserved0_Choice_Enum) EnumDescriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{618, 0, 0} } -type PatternFlowGtpv2PiggybackingFlag_Choice_Enum int32 +type PatternFlowGreVersion_Choice_Enum int32 const ( - PatternFlowGtpv2PiggybackingFlag_Choice_unspecified PatternFlowGtpv2PiggybackingFlag_Choice_Enum = 0 - PatternFlowGtpv2PiggybackingFlag_Choice_value PatternFlowGtpv2PiggybackingFlag_Choice_Enum = 2 - PatternFlowGtpv2PiggybackingFlag_Choice_values PatternFlowGtpv2PiggybackingFlag_Choice_Enum = 3 - PatternFlowGtpv2PiggybackingFlag_Choice_increment PatternFlowGtpv2PiggybackingFlag_Choice_Enum = 4 - PatternFlowGtpv2PiggybackingFlag_Choice_decrement PatternFlowGtpv2PiggybackingFlag_Choice_Enum = 5 + PatternFlowGreVersion_Choice_unspecified PatternFlowGreVersion_Choice_Enum = 0 + PatternFlowGreVersion_Choice_value PatternFlowGreVersion_Choice_Enum = 2 + PatternFlowGreVersion_Choice_values PatternFlowGreVersion_Choice_Enum = 3 + PatternFlowGreVersion_Choice_increment PatternFlowGreVersion_Choice_Enum = 4 + PatternFlowGreVersion_Choice_decrement PatternFlowGreVersion_Choice_Enum = 5 ) -// Enum value maps for PatternFlowGtpv2PiggybackingFlag_Choice_Enum. +// Enum value maps for PatternFlowGreVersion_Choice_Enum. var ( - PatternFlowGtpv2PiggybackingFlag_Choice_Enum_name = map[int32]string{ + PatternFlowGreVersion_Choice_Enum_name = map[int32]string{ 0: "unspecified", 2: "value", 3: "values", 4: "increment", 5: "decrement", } - PatternFlowGtpv2PiggybackingFlag_Choice_Enum_value = map[string]int32{ + PatternFlowGreVersion_Choice_Enum_value = map[string]int32{ "unspecified": 0, "value": 2, "values": 3, @@ -14758,53 +14647,53 @@ var ( } ) -func (x PatternFlowGtpv2PiggybackingFlag_Choice_Enum) Enum() *PatternFlowGtpv2PiggybackingFlag_Choice_Enum { - p := new(PatternFlowGtpv2PiggybackingFlag_Choice_Enum) +func (x PatternFlowGreVersion_Choice_Enum) Enum() *PatternFlowGreVersion_Choice_Enum { + p := new(PatternFlowGreVersion_Choice_Enum) *p = x return p } -func (x PatternFlowGtpv2PiggybackingFlag_Choice_Enum) String() string { +func (x PatternFlowGreVersion_Choice_Enum) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } -func (PatternFlowGtpv2PiggybackingFlag_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { +func (PatternFlowGreVersion_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { return file_otg_proto_enumTypes[269].Descriptor() } -func (PatternFlowGtpv2PiggybackingFlag_Choice_Enum) Type() protoreflect.EnumType { +func (PatternFlowGreVersion_Choice_Enum) Type() protoreflect.EnumType { return &file_otg_proto_enumTypes[269] } -func (x PatternFlowGtpv2PiggybackingFlag_Choice_Enum) Number() protoreflect.EnumNumber { +func (x PatternFlowGreVersion_Choice_Enum) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } -// Deprecated: Use PatternFlowGtpv2PiggybackingFlag_Choice_Enum.Descriptor instead. -func (PatternFlowGtpv2PiggybackingFlag_Choice_Enum) EnumDescriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{629, 0, 0} +// Deprecated: Use PatternFlowGreVersion_Choice_Enum.Descriptor instead. +func (PatternFlowGreVersion_Choice_Enum) EnumDescriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{621, 0, 0} } -type PatternFlowGtpv2TeidFlag_Choice_Enum int32 +type PatternFlowGreProtocol_Choice_Enum int32 const ( - PatternFlowGtpv2TeidFlag_Choice_unspecified PatternFlowGtpv2TeidFlag_Choice_Enum = 0 - PatternFlowGtpv2TeidFlag_Choice_value PatternFlowGtpv2TeidFlag_Choice_Enum = 2 - PatternFlowGtpv2TeidFlag_Choice_values PatternFlowGtpv2TeidFlag_Choice_Enum = 3 - PatternFlowGtpv2TeidFlag_Choice_increment PatternFlowGtpv2TeidFlag_Choice_Enum = 4 - PatternFlowGtpv2TeidFlag_Choice_decrement PatternFlowGtpv2TeidFlag_Choice_Enum = 5 + PatternFlowGreProtocol_Choice_unspecified PatternFlowGreProtocol_Choice_Enum = 0 + PatternFlowGreProtocol_Choice_value PatternFlowGreProtocol_Choice_Enum = 2 + PatternFlowGreProtocol_Choice_values PatternFlowGreProtocol_Choice_Enum = 3 + PatternFlowGreProtocol_Choice_increment PatternFlowGreProtocol_Choice_Enum = 4 + PatternFlowGreProtocol_Choice_decrement PatternFlowGreProtocol_Choice_Enum = 5 ) -// Enum value maps for PatternFlowGtpv2TeidFlag_Choice_Enum. +// Enum value maps for PatternFlowGreProtocol_Choice_Enum. var ( - PatternFlowGtpv2TeidFlag_Choice_Enum_name = map[int32]string{ + PatternFlowGreProtocol_Choice_Enum_name = map[int32]string{ 0: "unspecified", 2: "value", 3: "values", 4: "increment", 5: "decrement", } - PatternFlowGtpv2TeidFlag_Choice_Enum_value = map[string]int32{ + PatternFlowGreProtocol_Choice_Enum_value = map[string]int32{ "unspecified": 0, "value": 2, "values": 3, @@ -14813,163 +14702,151 @@ var ( } ) -func (x PatternFlowGtpv2TeidFlag_Choice_Enum) Enum() *PatternFlowGtpv2TeidFlag_Choice_Enum { - p := new(PatternFlowGtpv2TeidFlag_Choice_Enum) +func (x PatternFlowGreProtocol_Choice_Enum) Enum() *PatternFlowGreProtocol_Choice_Enum { + p := new(PatternFlowGreProtocol_Choice_Enum) *p = x return p } -func (x PatternFlowGtpv2TeidFlag_Choice_Enum) String() string { +func (x PatternFlowGreProtocol_Choice_Enum) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } -func (PatternFlowGtpv2TeidFlag_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { +func (PatternFlowGreProtocol_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { return file_otg_proto_enumTypes[270].Descriptor() } -func (PatternFlowGtpv2TeidFlag_Choice_Enum) Type() protoreflect.EnumType { +func (PatternFlowGreProtocol_Choice_Enum) Type() protoreflect.EnumType { return &file_otg_proto_enumTypes[270] } -func (x PatternFlowGtpv2TeidFlag_Choice_Enum) Number() protoreflect.EnumNumber { +func (x PatternFlowGreProtocol_Choice_Enum) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } -// Deprecated: Use PatternFlowGtpv2TeidFlag_Choice_Enum.Descriptor instead. -func (PatternFlowGtpv2TeidFlag_Choice_Enum) EnumDescriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{632, 0, 0} +// Deprecated: Use PatternFlowGreProtocol_Choice_Enum.Descriptor instead. +func (PatternFlowGreProtocol_Choice_Enum) EnumDescriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{624, 0, 0} } -type PatternFlowGtpv2Spare1_Choice_Enum int32 +type PatternFlowGreChecksum_Choice_Enum int32 const ( - PatternFlowGtpv2Spare1_Choice_unspecified PatternFlowGtpv2Spare1_Choice_Enum = 0 - PatternFlowGtpv2Spare1_Choice_value PatternFlowGtpv2Spare1_Choice_Enum = 2 - PatternFlowGtpv2Spare1_Choice_values PatternFlowGtpv2Spare1_Choice_Enum = 3 - PatternFlowGtpv2Spare1_Choice_increment PatternFlowGtpv2Spare1_Choice_Enum = 4 - PatternFlowGtpv2Spare1_Choice_decrement PatternFlowGtpv2Spare1_Choice_Enum = 5 + PatternFlowGreChecksum_Choice_unspecified PatternFlowGreChecksum_Choice_Enum = 0 + PatternFlowGreChecksum_Choice_generated PatternFlowGreChecksum_Choice_Enum = 1 + PatternFlowGreChecksum_Choice_custom PatternFlowGreChecksum_Choice_Enum = 2 ) -// Enum value maps for PatternFlowGtpv2Spare1_Choice_Enum. +// Enum value maps for PatternFlowGreChecksum_Choice_Enum. var ( - PatternFlowGtpv2Spare1_Choice_Enum_name = map[int32]string{ + PatternFlowGreChecksum_Choice_Enum_name = map[int32]string{ 0: "unspecified", - 2: "value", - 3: "values", - 4: "increment", - 5: "decrement", + 1: "generated", + 2: "custom", } - PatternFlowGtpv2Spare1_Choice_Enum_value = map[string]int32{ + PatternFlowGreChecksum_Choice_Enum_value = map[string]int32{ "unspecified": 0, - "value": 2, - "values": 3, - "increment": 4, - "decrement": 5, + "generated": 1, + "custom": 2, } ) -func (x PatternFlowGtpv2Spare1_Choice_Enum) Enum() *PatternFlowGtpv2Spare1_Choice_Enum { - p := new(PatternFlowGtpv2Spare1_Choice_Enum) +func (x PatternFlowGreChecksum_Choice_Enum) Enum() *PatternFlowGreChecksum_Choice_Enum { + p := new(PatternFlowGreChecksum_Choice_Enum) *p = x return p } -func (x PatternFlowGtpv2Spare1_Choice_Enum) String() string { +func (x PatternFlowGreChecksum_Choice_Enum) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } -func (PatternFlowGtpv2Spare1_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { +func (PatternFlowGreChecksum_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { return file_otg_proto_enumTypes[271].Descriptor() } -func (PatternFlowGtpv2Spare1_Choice_Enum) Type() protoreflect.EnumType { +func (PatternFlowGreChecksum_Choice_Enum) Type() protoreflect.EnumType { return &file_otg_proto_enumTypes[271] } -func (x PatternFlowGtpv2Spare1_Choice_Enum) Number() protoreflect.EnumNumber { +func (x PatternFlowGreChecksum_Choice_Enum) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } -// Deprecated: Use PatternFlowGtpv2Spare1_Choice_Enum.Descriptor instead. -func (PatternFlowGtpv2Spare1_Choice_Enum) EnumDescriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{635, 0, 0} +// Deprecated: Use PatternFlowGreChecksum_Choice_Enum.Descriptor instead. +func (PatternFlowGreChecksum_Choice_Enum) EnumDescriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{625, 0, 0} } -type PatternFlowGtpv2MessageType_Choice_Enum int32 +type PatternFlowGreChecksum_Generated_Enum int32 const ( - PatternFlowGtpv2MessageType_Choice_unspecified PatternFlowGtpv2MessageType_Choice_Enum = 0 - PatternFlowGtpv2MessageType_Choice_value PatternFlowGtpv2MessageType_Choice_Enum = 2 - PatternFlowGtpv2MessageType_Choice_values PatternFlowGtpv2MessageType_Choice_Enum = 3 - PatternFlowGtpv2MessageType_Choice_increment PatternFlowGtpv2MessageType_Choice_Enum = 4 - PatternFlowGtpv2MessageType_Choice_decrement PatternFlowGtpv2MessageType_Choice_Enum = 5 + PatternFlowGreChecksum_Generated_unspecified PatternFlowGreChecksum_Generated_Enum = 0 + PatternFlowGreChecksum_Generated_good PatternFlowGreChecksum_Generated_Enum = 1 + PatternFlowGreChecksum_Generated_bad PatternFlowGreChecksum_Generated_Enum = 2 ) -// Enum value maps for PatternFlowGtpv2MessageType_Choice_Enum. +// Enum value maps for PatternFlowGreChecksum_Generated_Enum. var ( - PatternFlowGtpv2MessageType_Choice_Enum_name = map[int32]string{ + PatternFlowGreChecksum_Generated_Enum_name = map[int32]string{ 0: "unspecified", - 2: "value", - 3: "values", - 4: "increment", - 5: "decrement", + 1: "good", + 2: "bad", } - PatternFlowGtpv2MessageType_Choice_Enum_value = map[string]int32{ + PatternFlowGreChecksum_Generated_Enum_value = map[string]int32{ "unspecified": 0, - "value": 2, - "values": 3, - "increment": 4, - "decrement": 5, + "good": 1, + "bad": 2, } ) -func (x PatternFlowGtpv2MessageType_Choice_Enum) Enum() *PatternFlowGtpv2MessageType_Choice_Enum { - p := new(PatternFlowGtpv2MessageType_Choice_Enum) +func (x PatternFlowGreChecksum_Generated_Enum) Enum() *PatternFlowGreChecksum_Generated_Enum { + p := new(PatternFlowGreChecksum_Generated_Enum) *p = x return p } -func (x PatternFlowGtpv2MessageType_Choice_Enum) String() string { +func (x PatternFlowGreChecksum_Generated_Enum) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } -func (PatternFlowGtpv2MessageType_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { +func (PatternFlowGreChecksum_Generated_Enum) Descriptor() protoreflect.EnumDescriptor { return file_otg_proto_enumTypes[272].Descriptor() } -func (PatternFlowGtpv2MessageType_Choice_Enum) Type() protoreflect.EnumType { +func (PatternFlowGreChecksum_Generated_Enum) Type() protoreflect.EnumType { return &file_otg_proto_enumTypes[272] } -func (x PatternFlowGtpv2MessageType_Choice_Enum) Number() protoreflect.EnumNumber { +func (x PatternFlowGreChecksum_Generated_Enum) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } -// Deprecated: Use PatternFlowGtpv2MessageType_Choice_Enum.Descriptor instead. -func (PatternFlowGtpv2MessageType_Choice_Enum) EnumDescriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{638, 0, 0} +// Deprecated: Use PatternFlowGreChecksum_Generated_Enum.Descriptor instead. +func (PatternFlowGreChecksum_Generated_Enum) EnumDescriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{625, 1, 0} } -type PatternFlowGtpv2MessageLength_Choice_Enum int32 +type PatternFlowGreReserved1_Choice_Enum int32 const ( - PatternFlowGtpv2MessageLength_Choice_unspecified PatternFlowGtpv2MessageLength_Choice_Enum = 0 - PatternFlowGtpv2MessageLength_Choice_value PatternFlowGtpv2MessageLength_Choice_Enum = 2 - PatternFlowGtpv2MessageLength_Choice_values PatternFlowGtpv2MessageLength_Choice_Enum = 3 - PatternFlowGtpv2MessageLength_Choice_increment PatternFlowGtpv2MessageLength_Choice_Enum = 4 - PatternFlowGtpv2MessageLength_Choice_decrement PatternFlowGtpv2MessageLength_Choice_Enum = 5 + PatternFlowGreReserved1_Choice_unspecified PatternFlowGreReserved1_Choice_Enum = 0 + PatternFlowGreReserved1_Choice_value PatternFlowGreReserved1_Choice_Enum = 2 + PatternFlowGreReserved1_Choice_values PatternFlowGreReserved1_Choice_Enum = 3 + PatternFlowGreReserved1_Choice_increment PatternFlowGreReserved1_Choice_Enum = 4 + PatternFlowGreReserved1_Choice_decrement PatternFlowGreReserved1_Choice_Enum = 5 ) -// Enum value maps for PatternFlowGtpv2MessageLength_Choice_Enum. +// Enum value maps for PatternFlowGreReserved1_Choice_Enum. var ( - PatternFlowGtpv2MessageLength_Choice_Enum_name = map[int32]string{ + PatternFlowGreReserved1_Choice_Enum_name = map[int32]string{ 0: "unspecified", 2: "value", 3: "values", 4: "increment", 5: "decrement", } - PatternFlowGtpv2MessageLength_Choice_Enum_value = map[string]int32{ + PatternFlowGreReserved1_Choice_Enum_value = map[string]int32{ "unspecified": 0, "value": 2, "values": 3, @@ -14978,53 +14855,53 @@ var ( } ) -func (x PatternFlowGtpv2MessageLength_Choice_Enum) Enum() *PatternFlowGtpv2MessageLength_Choice_Enum { - p := new(PatternFlowGtpv2MessageLength_Choice_Enum) +func (x PatternFlowGreReserved1_Choice_Enum) Enum() *PatternFlowGreReserved1_Choice_Enum { + p := new(PatternFlowGreReserved1_Choice_Enum) *p = x return p } -func (x PatternFlowGtpv2MessageLength_Choice_Enum) String() string { +func (x PatternFlowGreReserved1_Choice_Enum) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } -func (PatternFlowGtpv2MessageLength_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { +func (PatternFlowGreReserved1_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { return file_otg_proto_enumTypes[273].Descriptor() } -func (PatternFlowGtpv2MessageLength_Choice_Enum) Type() protoreflect.EnumType { +func (PatternFlowGreReserved1_Choice_Enum) Type() protoreflect.EnumType { return &file_otg_proto_enumTypes[273] } -func (x PatternFlowGtpv2MessageLength_Choice_Enum) Number() protoreflect.EnumNumber { +func (x PatternFlowGreReserved1_Choice_Enum) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } -// Deprecated: Use PatternFlowGtpv2MessageLength_Choice_Enum.Descriptor instead. -func (PatternFlowGtpv2MessageLength_Choice_Enum) EnumDescriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{641, 0, 0} +// Deprecated: Use PatternFlowGreReserved1_Choice_Enum.Descriptor instead. +func (PatternFlowGreReserved1_Choice_Enum) EnumDescriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{628, 0, 0} } -type PatternFlowGtpv2Teid_Choice_Enum int32 +type PatternFlowGtpv1Version_Choice_Enum int32 const ( - PatternFlowGtpv2Teid_Choice_unspecified PatternFlowGtpv2Teid_Choice_Enum = 0 - PatternFlowGtpv2Teid_Choice_value PatternFlowGtpv2Teid_Choice_Enum = 2 - PatternFlowGtpv2Teid_Choice_values PatternFlowGtpv2Teid_Choice_Enum = 3 - PatternFlowGtpv2Teid_Choice_increment PatternFlowGtpv2Teid_Choice_Enum = 4 - PatternFlowGtpv2Teid_Choice_decrement PatternFlowGtpv2Teid_Choice_Enum = 5 + PatternFlowGtpv1Version_Choice_unspecified PatternFlowGtpv1Version_Choice_Enum = 0 + PatternFlowGtpv1Version_Choice_value PatternFlowGtpv1Version_Choice_Enum = 2 + PatternFlowGtpv1Version_Choice_values PatternFlowGtpv1Version_Choice_Enum = 3 + PatternFlowGtpv1Version_Choice_increment PatternFlowGtpv1Version_Choice_Enum = 4 + PatternFlowGtpv1Version_Choice_decrement PatternFlowGtpv1Version_Choice_Enum = 5 ) -// Enum value maps for PatternFlowGtpv2Teid_Choice_Enum. +// Enum value maps for PatternFlowGtpv1Version_Choice_Enum. var ( - PatternFlowGtpv2Teid_Choice_Enum_name = map[int32]string{ + PatternFlowGtpv1Version_Choice_Enum_name = map[int32]string{ 0: "unspecified", 2: "value", 3: "values", 4: "increment", 5: "decrement", } - PatternFlowGtpv2Teid_Choice_Enum_value = map[string]int32{ + PatternFlowGtpv1Version_Choice_Enum_value = map[string]int32{ "unspecified": 0, "value": 2, "values": 3, @@ -15033,53 +14910,53 @@ var ( } ) -func (x PatternFlowGtpv2Teid_Choice_Enum) Enum() *PatternFlowGtpv2Teid_Choice_Enum { - p := new(PatternFlowGtpv2Teid_Choice_Enum) +func (x PatternFlowGtpv1Version_Choice_Enum) Enum() *PatternFlowGtpv1Version_Choice_Enum { + p := new(PatternFlowGtpv1Version_Choice_Enum) *p = x return p } -func (x PatternFlowGtpv2Teid_Choice_Enum) String() string { +func (x PatternFlowGtpv1Version_Choice_Enum) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } -func (PatternFlowGtpv2Teid_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { +func (PatternFlowGtpv1Version_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { return file_otg_proto_enumTypes[274].Descriptor() } -func (PatternFlowGtpv2Teid_Choice_Enum) Type() protoreflect.EnumType { +func (PatternFlowGtpv1Version_Choice_Enum) Type() protoreflect.EnumType { return &file_otg_proto_enumTypes[274] } -func (x PatternFlowGtpv2Teid_Choice_Enum) Number() protoreflect.EnumNumber { +func (x PatternFlowGtpv1Version_Choice_Enum) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } -// Deprecated: Use PatternFlowGtpv2Teid_Choice_Enum.Descriptor instead. -func (PatternFlowGtpv2Teid_Choice_Enum) EnumDescriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{644, 0, 0} +// Deprecated: Use PatternFlowGtpv1Version_Choice_Enum.Descriptor instead. +func (PatternFlowGtpv1Version_Choice_Enum) EnumDescriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{631, 0, 0} } -type PatternFlowGtpv2SequenceNumber_Choice_Enum int32 +type PatternFlowGtpv1ProtocolType_Choice_Enum int32 const ( - PatternFlowGtpv2SequenceNumber_Choice_unspecified PatternFlowGtpv2SequenceNumber_Choice_Enum = 0 - PatternFlowGtpv2SequenceNumber_Choice_value PatternFlowGtpv2SequenceNumber_Choice_Enum = 2 - PatternFlowGtpv2SequenceNumber_Choice_values PatternFlowGtpv2SequenceNumber_Choice_Enum = 3 - PatternFlowGtpv2SequenceNumber_Choice_increment PatternFlowGtpv2SequenceNumber_Choice_Enum = 4 - PatternFlowGtpv2SequenceNumber_Choice_decrement PatternFlowGtpv2SequenceNumber_Choice_Enum = 5 + PatternFlowGtpv1ProtocolType_Choice_unspecified PatternFlowGtpv1ProtocolType_Choice_Enum = 0 + PatternFlowGtpv1ProtocolType_Choice_value PatternFlowGtpv1ProtocolType_Choice_Enum = 2 + PatternFlowGtpv1ProtocolType_Choice_values PatternFlowGtpv1ProtocolType_Choice_Enum = 3 + PatternFlowGtpv1ProtocolType_Choice_increment PatternFlowGtpv1ProtocolType_Choice_Enum = 4 + PatternFlowGtpv1ProtocolType_Choice_decrement PatternFlowGtpv1ProtocolType_Choice_Enum = 5 ) -// Enum value maps for PatternFlowGtpv2SequenceNumber_Choice_Enum. +// Enum value maps for PatternFlowGtpv1ProtocolType_Choice_Enum. var ( - PatternFlowGtpv2SequenceNumber_Choice_Enum_name = map[int32]string{ + PatternFlowGtpv1ProtocolType_Choice_Enum_name = map[int32]string{ 0: "unspecified", 2: "value", 3: "values", 4: "increment", 5: "decrement", } - PatternFlowGtpv2SequenceNumber_Choice_Enum_value = map[string]int32{ + PatternFlowGtpv1ProtocolType_Choice_Enum_value = map[string]int32{ "unspecified": 0, "value": 2, "values": 3, @@ -15088,53 +14965,53 @@ var ( } ) -func (x PatternFlowGtpv2SequenceNumber_Choice_Enum) Enum() *PatternFlowGtpv2SequenceNumber_Choice_Enum { - p := new(PatternFlowGtpv2SequenceNumber_Choice_Enum) +func (x PatternFlowGtpv1ProtocolType_Choice_Enum) Enum() *PatternFlowGtpv1ProtocolType_Choice_Enum { + p := new(PatternFlowGtpv1ProtocolType_Choice_Enum) *p = x return p } -func (x PatternFlowGtpv2SequenceNumber_Choice_Enum) String() string { +func (x PatternFlowGtpv1ProtocolType_Choice_Enum) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } -func (PatternFlowGtpv2SequenceNumber_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { +func (PatternFlowGtpv1ProtocolType_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { return file_otg_proto_enumTypes[275].Descriptor() } -func (PatternFlowGtpv2SequenceNumber_Choice_Enum) Type() protoreflect.EnumType { +func (PatternFlowGtpv1ProtocolType_Choice_Enum) Type() protoreflect.EnumType { return &file_otg_proto_enumTypes[275] } -func (x PatternFlowGtpv2SequenceNumber_Choice_Enum) Number() protoreflect.EnumNumber { +func (x PatternFlowGtpv1ProtocolType_Choice_Enum) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } -// Deprecated: Use PatternFlowGtpv2SequenceNumber_Choice_Enum.Descriptor instead. -func (PatternFlowGtpv2SequenceNumber_Choice_Enum) EnumDescriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{647, 0, 0} +// Deprecated: Use PatternFlowGtpv1ProtocolType_Choice_Enum.Descriptor instead. +func (PatternFlowGtpv1ProtocolType_Choice_Enum) EnumDescriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{634, 0, 0} } -type PatternFlowGtpv2Spare2_Choice_Enum int32 +type PatternFlowGtpv1Reserved_Choice_Enum int32 const ( - PatternFlowGtpv2Spare2_Choice_unspecified PatternFlowGtpv2Spare2_Choice_Enum = 0 - PatternFlowGtpv2Spare2_Choice_value PatternFlowGtpv2Spare2_Choice_Enum = 2 - PatternFlowGtpv2Spare2_Choice_values PatternFlowGtpv2Spare2_Choice_Enum = 3 - PatternFlowGtpv2Spare2_Choice_increment PatternFlowGtpv2Spare2_Choice_Enum = 4 - PatternFlowGtpv2Spare2_Choice_decrement PatternFlowGtpv2Spare2_Choice_Enum = 5 + PatternFlowGtpv1Reserved_Choice_unspecified PatternFlowGtpv1Reserved_Choice_Enum = 0 + PatternFlowGtpv1Reserved_Choice_value PatternFlowGtpv1Reserved_Choice_Enum = 2 + PatternFlowGtpv1Reserved_Choice_values PatternFlowGtpv1Reserved_Choice_Enum = 3 + PatternFlowGtpv1Reserved_Choice_increment PatternFlowGtpv1Reserved_Choice_Enum = 4 + PatternFlowGtpv1Reserved_Choice_decrement PatternFlowGtpv1Reserved_Choice_Enum = 5 ) -// Enum value maps for PatternFlowGtpv2Spare2_Choice_Enum. +// Enum value maps for PatternFlowGtpv1Reserved_Choice_Enum. var ( - PatternFlowGtpv2Spare2_Choice_Enum_name = map[int32]string{ + PatternFlowGtpv1Reserved_Choice_Enum_name = map[int32]string{ 0: "unspecified", 2: "value", 3: "values", 4: "increment", 5: "decrement", } - PatternFlowGtpv2Spare2_Choice_Enum_value = map[string]int32{ + PatternFlowGtpv1Reserved_Choice_Enum_value = map[string]int32{ "unspecified": 0, "value": 2, "values": 3, @@ -15143,53 +15020,53 @@ var ( } ) -func (x PatternFlowGtpv2Spare2_Choice_Enum) Enum() *PatternFlowGtpv2Spare2_Choice_Enum { - p := new(PatternFlowGtpv2Spare2_Choice_Enum) +func (x PatternFlowGtpv1Reserved_Choice_Enum) Enum() *PatternFlowGtpv1Reserved_Choice_Enum { + p := new(PatternFlowGtpv1Reserved_Choice_Enum) *p = x return p } -func (x PatternFlowGtpv2Spare2_Choice_Enum) String() string { +func (x PatternFlowGtpv1Reserved_Choice_Enum) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } -func (PatternFlowGtpv2Spare2_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { +func (PatternFlowGtpv1Reserved_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { return file_otg_proto_enumTypes[276].Descriptor() } -func (PatternFlowGtpv2Spare2_Choice_Enum) Type() protoreflect.EnumType { +func (PatternFlowGtpv1Reserved_Choice_Enum) Type() protoreflect.EnumType { return &file_otg_proto_enumTypes[276] } -func (x PatternFlowGtpv2Spare2_Choice_Enum) Number() protoreflect.EnumNumber { +func (x PatternFlowGtpv1Reserved_Choice_Enum) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } -// Deprecated: Use PatternFlowGtpv2Spare2_Choice_Enum.Descriptor instead. -func (PatternFlowGtpv2Spare2_Choice_Enum) EnumDescriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{650, 0, 0} +// Deprecated: Use PatternFlowGtpv1Reserved_Choice_Enum.Descriptor instead. +func (PatternFlowGtpv1Reserved_Choice_Enum) EnumDescriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{637, 0, 0} } -type PatternFlowArpHardwareType_Choice_Enum int32 +type PatternFlowGtpv1EFlag_Choice_Enum int32 const ( - PatternFlowArpHardwareType_Choice_unspecified PatternFlowArpHardwareType_Choice_Enum = 0 - PatternFlowArpHardwareType_Choice_value PatternFlowArpHardwareType_Choice_Enum = 2 - PatternFlowArpHardwareType_Choice_values PatternFlowArpHardwareType_Choice_Enum = 3 - PatternFlowArpHardwareType_Choice_increment PatternFlowArpHardwareType_Choice_Enum = 4 - PatternFlowArpHardwareType_Choice_decrement PatternFlowArpHardwareType_Choice_Enum = 5 + PatternFlowGtpv1EFlag_Choice_unspecified PatternFlowGtpv1EFlag_Choice_Enum = 0 + PatternFlowGtpv1EFlag_Choice_value PatternFlowGtpv1EFlag_Choice_Enum = 2 + PatternFlowGtpv1EFlag_Choice_values PatternFlowGtpv1EFlag_Choice_Enum = 3 + PatternFlowGtpv1EFlag_Choice_increment PatternFlowGtpv1EFlag_Choice_Enum = 4 + PatternFlowGtpv1EFlag_Choice_decrement PatternFlowGtpv1EFlag_Choice_Enum = 5 ) -// Enum value maps for PatternFlowArpHardwareType_Choice_Enum. +// Enum value maps for PatternFlowGtpv1EFlag_Choice_Enum. var ( - PatternFlowArpHardwareType_Choice_Enum_name = map[int32]string{ + PatternFlowGtpv1EFlag_Choice_Enum_name = map[int32]string{ 0: "unspecified", 2: "value", 3: "values", 4: "increment", 5: "decrement", } - PatternFlowArpHardwareType_Choice_Enum_value = map[string]int32{ + PatternFlowGtpv1EFlag_Choice_Enum_value = map[string]int32{ "unspecified": 0, "value": 2, "values": 3, @@ -15198,53 +15075,53 @@ var ( } ) -func (x PatternFlowArpHardwareType_Choice_Enum) Enum() *PatternFlowArpHardwareType_Choice_Enum { - p := new(PatternFlowArpHardwareType_Choice_Enum) +func (x PatternFlowGtpv1EFlag_Choice_Enum) Enum() *PatternFlowGtpv1EFlag_Choice_Enum { + p := new(PatternFlowGtpv1EFlag_Choice_Enum) *p = x return p } -func (x PatternFlowArpHardwareType_Choice_Enum) String() string { +func (x PatternFlowGtpv1EFlag_Choice_Enum) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } -func (PatternFlowArpHardwareType_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { +func (PatternFlowGtpv1EFlag_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { return file_otg_proto_enumTypes[277].Descriptor() } -func (PatternFlowArpHardwareType_Choice_Enum) Type() protoreflect.EnumType { +func (PatternFlowGtpv1EFlag_Choice_Enum) Type() protoreflect.EnumType { return &file_otg_proto_enumTypes[277] } -func (x PatternFlowArpHardwareType_Choice_Enum) Number() protoreflect.EnumNumber { +func (x PatternFlowGtpv1EFlag_Choice_Enum) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } -// Deprecated: Use PatternFlowArpHardwareType_Choice_Enum.Descriptor instead. -func (PatternFlowArpHardwareType_Choice_Enum) EnumDescriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{653, 0, 0} +// Deprecated: Use PatternFlowGtpv1EFlag_Choice_Enum.Descriptor instead. +func (PatternFlowGtpv1EFlag_Choice_Enum) EnumDescriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{640, 0, 0} } -type PatternFlowArpProtocolType_Choice_Enum int32 +type PatternFlowGtpv1SFlag_Choice_Enum int32 const ( - PatternFlowArpProtocolType_Choice_unspecified PatternFlowArpProtocolType_Choice_Enum = 0 - PatternFlowArpProtocolType_Choice_value PatternFlowArpProtocolType_Choice_Enum = 2 - PatternFlowArpProtocolType_Choice_values PatternFlowArpProtocolType_Choice_Enum = 3 - PatternFlowArpProtocolType_Choice_increment PatternFlowArpProtocolType_Choice_Enum = 4 - PatternFlowArpProtocolType_Choice_decrement PatternFlowArpProtocolType_Choice_Enum = 5 + PatternFlowGtpv1SFlag_Choice_unspecified PatternFlowGtpv1SFlag_Choice_Enum = 0 + PatternFlowGtpv1SFlag_Choice_value PatternFlowGtpv1SFlag_Choice_Enum = 2 + PatternFlowGtpv1SFlag_Choice_values PatternFlowGtpv1SFlag_Choice_Enum = 3 + PatternFlowGtpv1SFlag_Choice_increment PatternFlowGtpv1SFlag_Choice_Enum = 4 + PatternFlowGtpv1SFlag_Choice_decrement PatternFlowGtpv1SFlag_Choice_Enum = 5 ) -// Enum value maps for PatternFlowArpProtocolType_Choice_Enum. +// Enum value maps for PatternFlowGtpv1SFlag_Choice_Enum. var ( - PatternFlowArpProtocolType_Choice_Enum_name = map[int32]string{ + PatternFlowGtpv1SFlag_Choice_Enum_name = map[int32]string{ 0: "unspecified", 2: "value", 3: "values", 4: "increment", 5: "decrement", } - PatternFlowArpProtocolType_Choice_Enum_value = map[string]int32{ + PatternFlowGtpv1SFlag_Choice_Enum_value = map[string]int32{ "unspecified": 0, "value": 2, "values": 3, @@ -15253,53 +15130,53 @@ var ( } ) -func (x PatternFlowArpProtocolType_Choice_Enum) Enum() *PatternFlowArpProtocolType_Choice_Enum { - p := new(PatternFlowArpProtocolType_Choice_Enum) +func (x PatternFlowGtpv1SFlag_Choice_Enum) Enum() *PatternFlowGtpv1SFlag_Choice_Enum { + p := new(PatternFlowGtpv1SFlag_Choice_Enum) *p = x return p } -func (x PatternFlowArpProtocolType_Choice_Enum) String() string { +func (x PatternFlowGtpv1SFlag_Choice_Enum) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } -func (PatternFlowArpProtocolType_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { +func (PatternFlowGtpv1SFlag_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { return file_otg_proto_enumTypes[278].Descriptor() } -func (PatternFlowArpProtocolType_Choice_Enum) Type() protoreflect.EnumType { +func (PatternFlowGtpv1SFlag_Choice_Enum) Type() protoreflect.EnumType { return &file_otg_proto_enumTypes[278] } -func (x PatternFlowArpProtocolType_Choice_Enum) Number() protoreflect.EnumNumber { +func (x PatternFlowGtpv1SFlag_Choice_Enum) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } -// Deprecated: Use PatternFlowArpProtocolType_Choice_Enum.Descriptor instead. -func (PatternFlowArpProtocolType_Choice_Enum) EnumDescriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{656, 0, 0} +// Deprecated: Use PatternFlowGtpv1SFlag_Choice_Enum.Descriptor instead. +func (PatternFlowGtpv1SFlag_Choice_Enum) EnumDescriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{643, 0, 0} } -type PatternFlowArpHardwareLength_Choice_Enum int32 +type PatternFlowGtpv1PnFlag_Choice_Enum int32 const ( - PatternFlowArpHardwareLength_Choice_unspecified PatternFlowArpHardwareLength_Choice_Enum = 0 - PatternFlowArpHardwareLength_Choice_value PatternFlowArpHardwareLength_Choice_Enum = 2 - PatternFlowArpHardwareLength_Choice_values PatternFlowArpHardwareLength_Choice_Enum = 3 - PatternFlowArpHardwareLength_Choice_increment PatternFlowArpHardwareLength_Choice_Enum = 4 - PatternFlowArpHardwareLength_Choice_decrement PatternFlowArpHardwareLength_Choice_Enum = 5 + PatternFlowGtpv1PnFlag_Choice_unspecified PatternFlowGtpv1PnFlag_Choice_Enum = 0 + PatternFlowGtpv1PnFlag_Choice_value PatternFlowGtpv1PnFlag_Choice_Enum = 2 + PatternFlowGtpv1PnFlag_Choice_values PatternFlowGtpv1PnFlag_Choice_Enum = 3 + PatternFlowGtpv1PnFlag_Choice_increment PatternFlowGtpv1PnFlag_Choice_Enum = 4 + PatternFlowGtpv1PnFlag_Choice_decrement PatternFlowGtpv1PnFlag_Choice_Enum = 5 ) -// Enum value maps for PatternFlowArpHardwareLength_Choice_Enum. +// Enum value maps for PatternFlowGtpv1PnFlag_Choice_Enum. var ( - PatternFlowArpHardwareLength_Choice_Enum_name = map[int32]string{ + PatternFlowGtpv1PnFlag_Choice_Enum_name = map[int32]string{ 0: "unspecified", 2: "value", 3: "values", 4: "increment", 5: "decrement", } - PatternFlowArpHardwareLength_Choice_Enum_value = map[string]int32{ + PatternFlowGtpv1PnFlag_Choice_Enum_value = map[string]int32{ "unspecified": 0, "value": 2, "values": 3, @@ -15308,53 +15185,53 @@ var ( } ) -func (x PatternFlowArpHardwareLength_Choice_Enum) Enum() *PatternFlowArpHardwareLength_Choice_Enum { - p := new(PatternFlowArpHardwareLength_Choice_Enum) +func (x PatternFlowGtpv1PnFlag_Choice_Enum) Enum() *PatternFlowGtpv1PnFlag_Choice_Enum { + p := new(PatternFlowGtpv1PnFlag_Choice_Enum) *p = x return p } -func (x PatternFlowArpHardwareLength_Choice_Enum) String() string { +func (x PatternFlowGtpv1PnFlag_Choice_Enum) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } -func (PatternFlowArpHardwareLength_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { +func (PatternFlowGtpv1PnFlag_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { return file_otg_proto_enumTypes[279].Descriptor() } -func (PatternFlowArpHardwareLength_Choice_Enum) Type() protoreflect.EnumType { +func (PatternFlowGtpv1PnFlag_Choice_Enum) Type() protoreflect.EnumType { return &file_otg_proto_enumTypes[279] } -func (x PatternFlowArpHardwareLength_Choice_Enum) Number() protoreflect.EnumNumber { +func (x PatternFlowGtpv1PnFlag_Choice_Enum) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } -// Deprecated: Use PatternFlowArpHardwareLength_Choice_Enum.Descriptor instead. -func (PatternFlowArpHardwareLength_Choice_Enum) EnumDescriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{659, 0, 0} +// Deprecated: Use PatternFlowGtpv1PnFlag_Choice_Enum.Descriptor instead. +func (PatternFlowGtpv1PnFlag_Choice_Enum) EnumDescriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{646, 0, 0} } -type PatternFlowArpProtocolLength_Choice_Enum int32 +type PatternFlowGtpv1MessageType_Choice_Enum int32 const ( - PatternFlowArpProtocolLength_Choice_unspecified PatternFlowArpProtocolLength_Choice_Enum = 0 - PatternFlowArpProtocolLength_Choice_value PatternFlowArpProtocolLength_Choice_Enum = 2 - PatternFlowArpProtocolLength_Choice_values PatternFlowArpProtocolLength_Choice_Enum = 3 - PatternFlowArpProtocolLength_Choice_increment PatternFlowArpProtocolLength_Choice_Enum = 4 - PatternFlowArpProtocolLength_Choice_decrement PatternFlowArpProtocolLength_Choice_Enum = 5 + PatternFlowGtpv1MessageType_Choice_unspecified PatternFlowGtpv1MessageType_Choice_Enum = 0 + PatternFlowGtpv1MessageType_Choice_value PatternFlowGtpv1MessageType_Choice_Enum = 2 + PatternFlowGtpv1MessageType_Choice_values PatternFlowGtpv1MessageType_Choice_Enum = 3 + PatternFlowGtpv1MessageType_Choice_increment PatternFlowGtpv1MessageType_Choice_Enum = 4 + PatternFlowGtpv1MessageType_Choice_decrement PatternFlowGtpv1MessageType_Choice_Enum = 5 ) -// Enum value maps for PatternFlowArpProtocolLength_Choice_Enum. +// Enum value maps for PatternFlowGtpv1MessageType_Choice_Enum. var ( - PatternFlowArpProtocolLength_Choice_Enum_name = map[int32]string{ + PatternFlowGtpv1MessageType_Choice_Enum_name = map[int32]string{ 0: "unspecified", 2: "value", 3: "values", 4: "increment", 5: "decrement", } - PatternFlowArpProtocolLength_Choice_Enum_value = map[string]int32{ + PatternFlowGtpv1MessageType_Choice_Enum_value = map[string]int32{ "unspecified": 0, "value": 2, "values": 3, @@ -15363,53 +15240,53 @@ var ( } ) -func (x PatternFlowArpProtocolLength_Choice_Enum) Enum() *PatternFlowArpProtocolLength_Choice_Enum { - p := new(PatternFlowArpProtocolLength_Choice_Enum) +func (x PatternFlowGtpv1MessageType_Choice_Enum) Enum() *PatternFlowGtpv1MessageType_Choice_Enum { + p := new(PatternFlowGtpv1MessageType_Choice_Enum) *p = x return p } -func (x PatternFlowArpProtocolLength_Choice_Enum) String() string { +func (x PatternFlowGtpv1MessageType_Choice_Enum) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } -func (PatternFlowArpProtocolLength_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { +func (PatternFlowGtpv1MessageType_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { return file_otg_proto_enumTypes[280].Descriptor() } -func (PatternFlowArpProtocolLength_Choice_Enum) Type() protoreflect.EnumType { +func (PatternFlowGtpv1MessageType_Choice_Enum) Type() protoreflect.EnumType { return &file_otg_proto_enumTypes[280] } -func (x PatternFlowArpProtocolLength_Choice_Enum) Number() protoreflect.EnumNumber { +func (x PatternFlowGtpv1MessageType_Choice_Enum) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } -// Deprecated: Use PatternFlowArpProtocolLength_Choice_Enum.Descriptor instead. -func (PatternFlowArpProtocolLength_Choice_Enum) EnumDescriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{662, 0, 0} +// Deprecated: Use PatternFlowGtpv1MessageType_Choice_Enum.Descriptor instead. +func (PatternFlowGtpv1MessageType_Choice_Enum) EnumDescriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{649, 0, 0} } -type PatternFlowArpOperation_Choice_Enum int32 +type PatternFlowGtpv1MessageLength_Choice_Enum int32 const ( - PatternFlowArpOperation_Choice_unspecified PatternFlowArpOperation_Choice_Enum = 0 - PatternFlowArpOperation_Choice_value PatternFlowArpOperation_Choice_Enum = 2 - PatternFlowArpOperation_Choice_values PatternFlowArpOperation_Choice_Enum = 3 - PatternFlowArpOperation_Choice_increment PatternFlowArpOperation_Choice_Enum = 4 - PatternFlowArpOperation_Choice_decrement PatternFlowArpOperation_Choice_Enum = 5 + PatternFlowGtpv1MessageLength_Choice_unspecified PatternFlowGtpv1MessageLength_Choice_Enum = 0 + PatternFlowGtpv1MessageLength_Choice_value PatternFlowGtpv1MessageLength_Choice_Enum = 2 + PatternFlowGtpv1MessageLength_Choice_values PatternFlowGtpv1MessageLength_Choice_Enum = 3 + PatternFlowGtpv1MessageLength_Choice_increment PatternFlowGtpv1MessageLength_Choice_Enum = 4 + PatternFlowGtpv1MessageLength_Choice_decrement PatternFlowGtpv1MessageLength_Choice_Enum = 5 ) -// Enum value maps for PatternFlowArpOperation_Choice_Enum. +// Enum value maps for PatternFlowGtpv1MessageLength_Choice_Enum. var ( - PatternFlowArpOperation_Choice_Enum_name = map[int32]string{ + PatternFlowGtpv1MessageLength_Choice_Enum_name = map[int32]string{ 0: "unspecified", 2: "value", 3: "values", 4: "increment", 5: "decrement", } - PatternFlowArpOperation_Choice_Enum_value = map[string]int32{ + PatternFlowGtpv1MessageLength_Choice_Enum_value = map[string]int32{ "unspecified": 0, "value": 2, "values": 3, @@ -15418,53 +15295,53 @@ var ( } ) -func (x PatternFlowArpOperation_Choice_Enum) Enum() *PatternFlowArpOperation_Choice_Enum { - p := new(PatternFlowArpOperation_Choice_Enum) +func (x PatternFlowGtpv1MessageLength_Choice_Enum) Enum() *PatternFlowGtpv1MessageLength_Choice_Enum { + p := new(PatternFlowGtpv1MessageLength_Choice_Enum) *p = x return p } -func (x PatternFlowArpOperation_Choice_Enum) String() string { +func (x PatternFlowGtpv1MessageLength_Choice_Enum) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } -func (PatternFlowArpOperation_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { +func (PatternFlowGtpv1MessageLength_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { return file_otg_proto_enumTypes[281].Descriptor() } -func (PatternFlowArpOperation_Choice_Enum) Type() protoreflect.EnumType { +func (PatternFlowGtpv1MessageLength_Choice_Enum) Type() protoreflect.EnumType { return &file_otg_proto_enumTypes[281] } -func (x PatternFlowArpOperation_Choice_Enum) Number() protoreflect.EnumNumber { +func (x PatternFlowGtpv1MessageLength_Choice_Enum) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } -// Deprecated: Use PatternFlowArpOperation_Choice_Enum.Descriptor instead. -func (PatternFlowArpOperation_Choice_Enum) EnumDescriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{665, 0, 0} +// Deprecated: Use PatternFlowGtpv1MessageLength_Choice_Enum.Descriptor instead. +func (PatternFlowGtpv1MessageLength_Choice_Enum) EnumDescriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{652, 0, 0} } -type PatternFlowArpSenderHardwareAddr_Choice_Enum int32 +type PatternFlowGtpv1Teid_Choice_Enum int32 const ( - PatternFlowArpSenderHardwareAddr_Choice_unspecified PatternFlowArpSenderHardwareAddr_Choice_Enum = 0 - PatternFlowArpSenderHardwareAddr_Choice_value PatternFlowArpSenderHardwareAddr_Choice_Enum = 2 - PatternFlowArpSenderHardwareAddr_Choice_values PatternFlowArpSenderHardwareAddr_Choice_Enum = 3 - PatternFlowArpSenderHardwareAddr_Choice_increment PatternFlowArpSenderHardwareAddr_Choice_Enum = 4 - PatternFlowArpSenderHardwareAddr_Choice_decrement PatternFlowArpSenderHardwareAddr_Choice_Enum = 5 + PatternFlowGtpv1Teid_Choice_unspecified PatternFlowGtpv1Teid_Choice_Enum = 0 + PatternFlowGtpv1Teid_Choice_value PatternFlowGtpv1Teid_Choice_Enum = 2 + PatternFlowGtpv1Teid_Choice_values PatternFlowGtpv1Teid_Choice_Enum = 3 + PatternFlowGtpv1Teid_Choice_increment PatternFlowGtpv1Teid_Choice_Enum = 4 + PatternFlowGtpv1Teid_Choice_decrement PatternFlowGtpv1Teid_Choice_Enum = 5 ) -// Enum value maps for PatternFlowArpSenderHardwareAddr_Choice_Enum. +// Enum value maps for PatternFlowGtpv1Teid_Choice_Enum. var ( - PatternFlowArpSenderHardwareAddr_Choice_Enum_name = map[int32]string{ + PatternFlowGtpv1Teid_Choice_Enum_name = map[int32]string{ 0: "unspecified", 2: "value", 3: "values", 4: "increment", 5: "decrement", } - PatternFlowArpSenderHardwareAddr_Choice_Enum_value = map[string]int32{ + PatternFlowGtpv1Teid_Choice_Enum_value = map[string]int32{ "unspecified": 0, "value": 2, "values": 3, @@ -15473,53 +15350,53 @@ var ( } ) -func (x PatternFlowArpSenderHardwareAddr_Choice_Enum) Enum() *PatternFlowArpSenderHardwareAddr_Choice_Enum { - p := new(PatternFlowArpSenderHardwareAddr_Choice_Enum) +func (x PatternFlowGtpv1Teid_Choice_Enum) Enum() *PatternFlowGtpv1Teid_Choice_Enum { + p := new(PatternFlowGtpv1Teid_Choice_Enum) *p = x return p } -func (x PatternFlowArpSenderHardwareAddr_Choice_Enum) String() string { +func (x PatternFlowGtpv1Teid_Choice_Enum) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } -func (PatternFlowArpSenderHardwareAddr_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { +func (PatternFlowGtpv1Teid_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { return file_otg_proto_enumTypes[282].Descriptor() } -func (PatternFlowArpSenderHardwareAddr_Choice_Enum) Type() protoreflect.EnumType { +func (PatternFlowGtpv1Teid_Choice_Enum) Type() protoreflect.EnumType { return &file_otg_proto_enumTypes[282] } -func (x PatternFlowArpSenderHardwareAddr_Choice_Enum) Number() protoreflect.EnumNumber { +func (x PatternFlowGtpv1Teid_Choice_Enum) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } -// Deprecated: Use PatternFlowArpSenderHardwareAddr_Choice_Enum.Descriptor instead. -func (PatternFlowArpSenderHardwareAddr_Choice_Enum) EnumDescriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{668, 0, 0} +// Deprecated: Use PatternFlowGtpv1Teid_Choice_Enum.Descriptor instead. +func (PatternFlowGtpv1Teid_Choice_Enum) EnumDescriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{655, 0, 0} } -type PatternFlowArpSenderProtocolAddr_Choice_Enum int32 +type PatternFlowGtpv1SquenceNumber_Choice_Enum int32 const ( - PatternFlowArpSenderProtocolAddr_Choice_unspecified PatternFlowArpSenderProtocolAddr_Choice_Enum = 0 - PatternFlowArpSenderProtocolAddr_Choice_value PatternFlowArpSenderProtocolAddr_Choice_Enum = 2 - PatternFlowArpSenderProtocolAddr_Choice_values PatternFlowArpSenderProtocolAddr_Choice_Enum = 3 - PatternFlowArpSenderProtocolAddr_Choice_increment PatternFlowArpSenderProtocolAddr_Choice_Enum = 4 - PatternFlowArpSenderProtocolAddr_Choice_decrement PatternFlowArpSenderProtocolAddr_Choice_Enum = 5 + PatternFlowGtpv1SquenceNumber_Choice_unspecified PatternFlowGtpv1SquenceNumber_Choice_Enum = 0 + PatternFlowGtpv1SquenceNumber_Choice_value PatternFlowGtpv1SquenceNumber_Choice_Enum = 2 + PatternFlowGtpv1SquenceNumber_Choice_values PatternFlowGtpv1SquenceNumber_Choice_Enum = 3 + PatternFlowGtpv1SquenceNumber_Choice_increment PatternFlowGtpv1SquenceNumber_Choice_Enum = 4 + PatternFlowGtpv1SquenceNumber_Choice_decrement PatternFlowGtpv1SquenceNumber_Choice_Enum = 5 ) -// Enum value maps for PatternFlowArpSenderProtocolAddr_Choice_Enum. +// Enum value maps for PatternFlowGtpv1SquenceNumber_Choice_Enum. var ( - PatternFlowArpSenderProtocolAddr_Choice_Enum_name = map[int32]string{ + PatternFlowGtpv1SquenceNumber_Choice_Enum_name = map[int32]string{ 0: "unspecified", 2: "value", 3: "values", 4: "increment", 5: "decrement", } - PatternFlowArpSenderProtocolAddr_Choice_Enum_value = map[string]int32{ + PatternFlowGtpv1SquenceNumber_Choice_Enum_value = map[string]int32{ "unspecified": 0, "value": 2, "values": 3, @@ -15528,53 +15405,53 @@ var ( } ) -func (x PatternFlowArpSenderProtocolAddr_Choice_Enum) Enum() *PatternFlowArpSenderProtocolAddr_Choice_Enum { - p := new(PatternFlowArpSenderProtocolAddr_Choice_Enum) +func (x PatternFlowGtpv1SquenceNumber_Choice_Enum) Enum() *PatternFlowGtpv1SquenceNumber_Choice_Enum { + p := new(PatternFlowGtpv1SquenceNumber_Choice_Enum) *p = x return p } -func (x PatternFlowArpSenderProtocolAddr_Choice_Enum) String() string { +func (x PatternFlowGtpv1SquenceNumber_Choice_Enum) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } -func (PatternFlowArpSenderProtocolAddr_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { +func (PatternFlowGtpv1SquenceNumber_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { return file_otg_proto_enumTypes[283].Descriptor() } -func (PatternFlowArpSenderProtocolAddr_Choice_Enum) Type() protoreflect.EnumType { +func (PatternFlowGtpv1SquenceNumber_Choice_Enum) Type() protoreflect.EnumType { return &file_otg_proto_enumTypes[283] } -func (x PatternFlowArpSenderProtocolAddr_Choice_Enum) Number() protoreflect.EnumNumber { +func (x PatternFlowGtpv1SquenceNumber_Choice_Enum) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } -// Deprecated: Use PatternFlowArpSenderProtocolAddr_Choice_Enum.Descriptor instead. -func (PatternFlowArpSenderProtocolAddr_Choice_Enum) EnumDescriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{671, 0, 0} +// Deprecated: Use PatternFlowGtpv1SquenceNumber_Choice_Enum.Descriptor instead. +func (PatternFlowGtpv1SquenceNumber_Choice_Enum) EnumDescriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{658, 0, 0} } -type PatternFlowArpTargetHardwareAddr_Choice_Enum int32 +type PatternFlowGtpv1NPduNumber_Choice_Enum int32 const ( - PatternFlowArpTargetHardwareAddr_Choice_unspecified PatternFlowArpTargetHardwareAddr_Choice_Enum = 0 - PatternFlowArpTargetHardwareAddr_Choice_value PatternFlowArpTargetHardwareAddr_Choice_Enum = 2 - PatternFlowArpTargetHardwareAddr_Choice_values PatternFlowArpTargetHardwareAddr_Choice_Enum = 3 - PatternFlowArpTargetHardwareAddr_Choice_increment PatternFlowArpTargetHardwareAddr_Choice_Enum = 4 - PatternFlowArpTargetHardwareAddr_Choice_decrement PatternFlowArpTargetHardwareAddr_Choice_Enum = 5 + PatternFlowGtpv1NPduNumber_Choice_unspecified PatternFlowGtpv1NPduNumber_Choice_Enum = 0 + PatternFlowGtpv1NPduNumber_Choice_value PatternFlowGtpv1NPduNumber_Choice_Enum = 2 + PatternFlowGtpv1NPduNumber_Choice_values PatternFlowGtpv1NPduNumber_Choice_Enum = 3 + PatternFlowGtpv1NPduNumber_Choice_increment PatternFlowGtpv1NPduNumber_Choice_Enum = 4 + PatternFlowGtpv1NPduNumber_Choice_decrement PatternFlowGtpv1NPduNumber_Choice_Enum = 5 ) -// Enum value maps for PatternFlowArpTargetHardwareAddr_Choice_Enum. +// Enum value maps for PatternFlowGtpv1NPduNumber_Choice_Enum. var ( - PatternFlowArpTargetHardwareAddr_Choice_Enum_name = map[int32]string{ + PatternFlowGtpv1NPduNumber_Choice_Enum_name = map[int32]string{ 0: "unspecified", 2: "value", 3: "values", 4: "increment", 5: "decrement", } - PatternFlowArpTargetHardwareAddr_Choice_Enum_value = map[string]int32{ + PatternFlowGtpv1NPduNumber_Choice_Enum_value = map[string]int32{ "unspecified": 0, "value": 2, "values": 3, @@ -15583,53 +15460,53 @@ var ( } ) -func (x PatternFlowArpTargetHardwareAddr_Choice_Enum) Enum() *PatternFlowArpTargetHardwareAddr_Choice_Enum { - p := new(PatternFlowArpTargetHardwareAddr_Choice_Enum) +func (x PatternFlowGtpv1NPduNumber_Choice_Enum) Enum() *PatternFlowGtpv1NPduNumber_Choice_Enum { + p := new(PatternFlowGtpv1NPduNumber_Choice_Enum) *p = x return p } -func (x PatternFlowArpTargetHardwareAddr_Choice_Enum) String() string { +func (x PatternFlowGtpv1NPduNumber_Choice_Enum) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } -func (PatternFlowArpTargetHardwareAddr_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { +func (PatternFlowGtpv1NPduNumber_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { return file_otg_proto_enumTypes[284].Descriptor() } -func (PatternFlowArpTargetHardwareAddr_Choice_Enum) Type() protoreflect.EnumType { +func (PatternFlowGtpv1NPduNumber_Choice_Enum) Type() protoreflect.EnumType { return &file_otg_proto_enumTypes[284] } -func (x PatternFlowArpTargetHardwareAddr_Choice_Enum) Number() protoreflect.EnumNumber { +func (x PatternFlowGtpv1NPduNumber_Choice_Enum) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } -// Deprecated: Use PatternFlowArpTargetHardwareAddr_Choice_Enum.Descriptor instead. -func (PatternFlowArpTargetHardwareAddr_Choice_Enum) EnumDescriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{674, 0, 0} +// Deprecated: Use PatternFlowGtpv1NPduNumber_Choice_Enum.Descriptor instead. +func (PatternFlowGtpv1NPduNumber_Choice_Enum) EnumDescriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{661, 0, 0} } -type PatternFlowArpTargetProtocolAddr_Choice_Enum int32 +type PatternFlowGtpv1NextExtensionHeaderType_Choice_Enum int32 const ( - PatternFlowArpTargetProtocolAddr_Choice_unspecified PatternFlowArpTargetProtocolAddr_Choice_Enum = 0 - PatternFlowArpTargetProtocolAddr_Choice_value PatternFlowArpTargetProtocolAddr_Choice_Enum = 2 - PatternFlowArpTargetProtocolAddr_Choice_values PatternFlowArpTargetProtocolAddr_Choice_Enum = 3 - PatternFlowArpTargetProtocolAddr_Choice_increment PatternFlowArpTargetProtocolAddr_Choice_Enum = 4 - PatternFlowArpTargetProtocolAddr_Choice_decrement PatternFlowArpTargetProtocolAddr_Choice_Enum = 5 + PatternFlowGtpv1NextExtensionHeaderType_Choice_unspecified PatternFlowGtpv1NextExtensionHeaderType_Choice_Enum = 0 + PatternFlowGtpv1NextExtensionHeaderType_Choice_value PatternFlowGtpv1NextExtensionHeaderType_Choice_Enum = 2 + PatternFlowGtpv1NextExtensionHeaderType_Choice_values PatternFlowGtpv1NextExtensionHeaderType_Choice_Enum = 3 + PatternFlowGtpv1NextExtensionHeaderType_Choice_increment PatternFlowGtpv1NextExtensionHeaderType_Choice_Enum = 4 + PatternFlowGtpv1NextExtensionHeaderType_Choice_decrement PatternFlowGtpv1NextExtensionHeaderType_Choice_Enum = 5 ) -// Enum value maps for PatternFlowArpTargetProtocolAddr_Choice_Enum. +// Enum value maps for PatternFlowGtpv1NextExtensionHeaderType_Choice_Enum. var ( - PatternFlowArpTargetProtocolAddr_Choice_Enum_name = map[int32]string{ + PatternFlowGtpv1NextExtensionHeaderType_Choice_Enum_name = map[int32]string{ 0: "unspecified", 2: "value", 3: "values", 4: "increment", 5: "decrement", } - PatternFlowArpTargetProtocolAddr_Choice_Enum_value = map[string]int32{ + PatternFlowGtpv1NextExtensionHeaderType_Choice_Enum_value = map[string]int32{ "unspecified": 0, "value": 2, "values": 3, @@ -15638,53 +15515,53 @@ var ( } ) -func (x PatternFlowArpTargetProtocolAddr_Choice_Enum) Enum() *PatternFlowArpTargetProtocolAddr_Choice_Enum { - p := new(PatternFlowArpTargetProtocolAddr_Choice_Enum) +func (x PatternFlowGtpv1NextExtensionHeaderType_Choice_Enum) Enum() *PatternFlowGtpv1NextExtensionHeaderType_Choice_Enum { + p := new(PatternFlowGtpv1NextExtensionHeaderType_Choice_Enum) *p = x return p } -func (x PatternFlowArpTargetProtocolAddr_Choice_Enum) String() string { +func (x PatternFlowGtpv1NextExtensionHeaderType_Choice_Enum) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } -func (PatternFlowArpTargetProtocolAddr_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { +func (PatternFlowGtpv1NextExtensionHeaderType_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { return file_otg_proto_enumTypes[285].Descriptor() } -func (PatternFlowArpTargetProtocolAddr_Choice_Enum) Type() protoreflect.EnumType { +func (PatternFlowGtpv1NextExtensionHeaderType_Choice_Enum) Type() protoreflect.EnumType { return &file_otg_proto_enumTypes[285] } -func (x PatternFlowArpTargetProtocolAddr_Choice_Enum) Number() protoreflect.EnumNumber { +func (x PatternFlowGtpv1NextExtensionHeaderType_Choice_Enum) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } -// Deprecated: Use PatternFlowArpTargetProtocolAddr_Choice_Enum.Descriptor instead. -func (PatternFlowArpTargetProtocolAddr_Choice_Enum) EnumDescriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{677, 0, 0} +// Deprecated: Use PatternFlowGtpv1NextExtensionHeaderType_Choice_Enum.Descriptor instead. +func (PatternFlowGtpv1NextExtensionHeaderType_Choice_Enum) EnumDescriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{664, 0, 0} } -type PatternFlowIcmpEchoType_Choice_Enum int32 +type PatternFlowGtpExtensionExtensionLength_Choice_Enum int32 const ( - PatternFlowIcmpEchoType_Choice_unspecified PatternFlowIcmpEchoType_Choice_Enum = 0 - PatternFlowIcmpEchoType_Choice_value PatternFlowIcmpEchoType_Choice_Enum = 2 - PatternFlowIcmpEchoType_Choice_values PatternFlowIcmpEchoType_Choice_Enum = 3 - PatternFlowIcmpEchoType_Choice_increment PatternFlowIcmpEchoType_Choice_Enum = 4 - PatternFlowIcmpEchoType_Choice_decrement PatternFlowIcmpEchoType_Choice_Enum = 5 + PatternFlowGtpExtensionExtensionLength_Choice_unspecified PatternFlowGtpExtensionExtensionLength_Choice_Enum = 0 + PatternFlowGtpExtensionExtensionLength_Choice_value PatternFlowGtpExtensionExtensionLength_Choice_Enum = 2 + PatternFlowGtpExtensionExtensionLength_Choice_values PatternFlowGtpExtensionExtensionLength_Choice_Enum = 3 + PatternFlowGtpExtensionExtensionLength_Choice_increment PatternFlowGtpExtensionExtensionLength_Choice_Enum = 4 + PatternFlowGtpExtensionExtensionLength_Choice_decrement PatternFlowGtpExtensionExtensionLength_Choice_Enum = 5 ) -// Enum value maps for PatternFlowIcmpEchoType_Choice_Enum. +// Enum value maps for PatternFlowGtpExtensionExtensionLength_Choice_Enum. var ( - PatternFlowIcmpEchoType_Choice_Enum_name = map[int32]string{ + PatternFlowGtpExtensionExtensionLength_Choice_Enum_name = map[int32]string{ 0: "unspecified", 2: "value", 3: "values", 4: "increment", 5: "decrement", } - PatternFlowIcmpEchoType_Choice_Enum_value = map[string]int32{ + PatternFlowGtpExtensionExtensionLength_Choice_Enum_value = map[string]int32{ "unspecified": 0, "value": 2, "values": 3, @@ -15693,53 +15570,53 @@ var ( } ) -func (x PatternFlowIcmpEchoType_Choice_Enum) Enum() *PatternFlowIcmpEchoType_Choice_Enum { - p := new(PatternFlowIcmpEchoType_Choice_Enum) +func (x PatternFlowGtpExtensionExtensionLength_Choice_Enum) Enum() *PatternFlowGtpExtensionExtensionLength_Choice_Enum { + p := new(PatternFlowGtpExtensionExtensionLength_Choice_Enum) *p = x return p } -func (x PatternFlowIcmpEchoType_Choice_Enum) String() string { +func (x PatternFlowGtpExtensionExtensionLength_Choice_Enum) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } -func (PatternFlowIcmpEchoType_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { +func (PatternFlowGtpExtensionExtensionLength_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { return file_otg_proto_enumTypes[286].Descriptor() } -func (PatternFlowIcmpEchoType_Choice_Enum) Type() protoreflect.EnumType { +func (PatternFlowGtpExtensionExtensionLength_Choice_Enum) Type() protoreflect.EnumType { return &file_otg_proto_enumTypes[286] } -func (x PatternFlowIcmpEchoType_Choice_Enum) Number() protoreflect.EnumNumber { +func (x PatternFlowGtpExtensionExtensionLength_Choice_Enum) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } -// Deprecated: Use PatternFlowIcmpEchoType_Choice_Enum.Descriptor instead. -func (PatternFlowIcmpEchoType_Choice_Enum) EnumDescriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{680, 0, 0} +// Deprecated: Use PatternFlowGtpExtensionExtensionLength_Choice_Enum.Descriptor instead. +func (PatternFlowGtpExtensionExtensionLength_Choice_Enum) EnumDescriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{667, 0, 0} } -type PatternFlowIcmpEchoCode_Choice_Enum int32 +type PatternFlowGtpExtensionContents_Choice_Enum int32 const ( - PatternFlowIcmpEchoCode_Choice_unspecified PatternFlowIcmpEchoCode_Choice_Enum = 0 - PatternFlowIcmpEchoCode_Choice_value PatternFlowIcmpEchoCode_Choice_Enum = 2 - PatternFlowIcmpEchoCode_Choice_values PatternFlowIcmpEchoCode_Choice_Enum = 3 - PatternFlowIcmpEchoCode_Choice_increment PatternFlowIcmpEchoCode_Choice_Enum = 4 - PatternFlowIcmpEchoCode_Choice_decrement PatternFlowIcmpEchoCode_Choice_Enum = 5 + PatternFlowGtpExtensionContents_Choice_unspecified PatternFlowGtpExtensionContents_Choice_Enum = 0 + PatternFlowGtpExtensionContents_Choice_value PatternFlowGtpExtensionContents_Choice_Enum = 2 + PatternFlowGtpExtensionContents_Choice_values PatternFlowGtpExtensionContents_Choice_Enum = 3 + PatternFlowGtpExtensionContents_Choice_increment PatternFlowGtpExtensionContents_Choice_Enum = 4 + PatternFlowGtpExtensionContents_Choice_decrement PatternFlowGtpExtensionContents_Choice_Enum = 5 ) -// Enum value maps for PatternFlowIcmpEchoCode_Choice_Enum. +// Enum value maps for PatternFlowGtpExtensionContents_Choice_Enum. var ( - PatternFlowIcmpEchoCode_Choice_Enum_name = map[int32]string{ + PatternFlowGtpExtensionContents_Choice_Enum_name = map[int32]string{ 0: "unspecified", 2: "value", 3: "values", 4: "increment", 5: "decrement", } - PatternFlowIcmpEchoCode_Choice_Enum_value = map[string]int32{ + PatternFlowGtpExtensionContents_Choice_Enum_value = map[string]int32{ "unspecified": 0, "value": 2, "values": 3, @@ -15748,151 +15625,163 @@ var ( } ) -func (x PatternFlowIcmpEchoCode_Choice_Enum) Enum() *PatternFlowIcmpEchoCode_Choice_Enum { - p := new(PatternFlowIcmpEchoCode_Choice_Enum) +func (x PatternFlowGtpExtensionContents_Choice_Enum) Enum() *PatternFlowGtpExtensionContents_Choice_Enum { + p := new(PatternFlowGtpExtensionContents_Choice_Enum) *p = x return p } -func (x PatternFlowIcmpEchoCode_Choice_Enum) String() string { +func (x PatternFlowGtpExtensionContents_Choice_Enum) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } -func (PatternFlowIcmpEchoCode_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { +func (PatternFlowGtpExtensionContents_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { return file_otg_proto_enumTypes[287].Descriptor() } -func (PatternFlowIcmpEchoCode_Choice_Enum) Type() protoreflect.EnumType { +func (PatternFlowGtpExtensionContents_Choice_Enum) Type() protoreflect.EnumType { return &file_otg_proto_enumTypes[287] } -func (x PatternFlowIcmpEchoCode_Choice_Enum) Number() protoreflect.EnumNumber { +func (x PatternFlowGtpExtensionContents_Choice_Enum) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } -// Deprecated: Use PatternFlowIcmpEchoCode_Choice_Enum.Descriptor instead. -func (PatternFlowIcmpEchoCode_Choice_Enum) EnumDescriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{683, 0, 0} +// Deprecated: Use PatternFlowGtpExtensionContents_Choice_Enum.Descriptor instead. +func (PatternFlowGtpExtensionContents_Choice_Enum) EnumDescriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{670, 0, 0} } -type PatternFlowIcmpEchoChecksum_Choice_Enum int32 +type PatternFlowGtpExtensionNextExtensionHeader_Choice_Enum int32 const ( - PatternFlowIcmpEchoChecksum_Choice_unspecified PatternFlowIcmpEchoChecksum_Choice_Enum = 0 - PatternFlowIcmpEchoChecksum_Choice_generated PatternFlowIcmpEchoChecksum_Choice_Enum = 1 - PatternFlowIcmpEchoChecksum_Choice_custom PatternFlowIcmpEchoChecksum_Choice_Enum = 2 + PatternFlowGtpExtensionNextExtensionHeader_Choice_unspecified PatternFlowGtpExtensionNextExtensionHeader_Choice_Enum = 0 + PatternFlowGtpExtensionNextExtensionHeader_Choice_value PatternFlowGtpExtensionNextExtensionHeader_Choice_Enum = 2 + PatternFlowGtpExtensionNextExtensionHeader_Choice_values PatternFlowGtpExtensionNextExtensionHeader_Choice_Enum = 3 + PatternFlowGtpExtensionNextExtensionHeader_Choice_increment PatternFlowGtpExtensionNextExtensionHeader_Choice_Enum = 4 + PatternFlowGtpExtensionNextExtensionHeader_Choice_decrement PatternFlowGtpExtensionNextExtensionHeader_Choice_Enum = 5 ) -// Enum value maps for PatternFlowIcmpEchoChecksum_Choice_Enum. +// Enum value maps for PatternFlowGtpExtensionNextExtensionHeader_Choice_Enum. var ( - PatternFlowIcmpEchoChecksum_Choice_Enum_name = map[int32]string{ + PatternFlowGtpExtensionNextExtensionHeader_Choice_Enum_name = map[int32]string{ 0: "unspecified", - 1: "generated", - 2: "custom", + 2: "value", + 3: "values", + 4: "increment", + 5: "decrement", } - PatternFlowIcmpEchoChecksum_Choice_Enum_value = map[string]int32{ + PatternFlowGtpExtensionNextExtensionHeader_Choice_Enum_value = map[string]int32{ "unspecified": 0, - "generated": 1, - "custom": 2, + "value": 2, + "values": 3, + "increment": 4, + "decrement": 5, } ) -func (x PatternFlowIcmpEchoChecksum_Choice_Enum) Enum() *PatternFlowIcmpEchoChecksum_Choice_Enum { - p := new(PatternFlowIcmpEchoChecksum_Choice_Enum) +func (x PatternFlowGtpExtensionNextExtensionHeader_Choice_Enum) Enum() *PatternFlowGtpExtensionNextExtensionHeader_Choice_Enum { + p := new(PatternFlowGtpExtensionNextExtensionHeader_Choice_Enum) *p = x return p } -func (x PatternFlowIcmpEchoChecksum_Choice_Enum) String() string { +func (x PatternFlowGtpExtensionNextExtensionHeader_Choice_Enum) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } -func (PatternFlowIcmpEchoChecksum_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { +func (PatternFlowGtpExtensionNextExtensionHeader_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { return file_otg_proto_enumTypes[288].Descriptor() } -func (PatternFlowIcmpEchoChecksum_Choice_Enum) Type() protoreflect.EnumType { +func (PatternFlowGtpExtensionNextExtensionHeader_Choice_Enum) Type() protoreflect.EnumType { return &file_otg_proto_enumTypes[288] } -func (x PatternFlowIcmpEchoChecksum_Choice_Enum) Number() protoreflect.EnumNumber { +func (x PatternFlowGtpExtensionNextExtensionHeader_Choice_Enum) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } -// Deprecated: Use PatternFlowIcmpEchoChecksum_Choice_Enum.Descriptor instead. -func (PatternFlowIcmpEchoChecksum_Choice_Enum) EnumDescriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{684, 0, 0} +// Deprecated: Use PatternFlowGtpExtensionNextExtensionHeader_Choice_Enum.Descriptor instead. +func (PatternFlowGtpExtensionNextExtensionHeader_Choice_Enum) EnumDescriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{673, 0, 0} } -type PatternFlowIcmpEchoChecksum_Generated_Enum int32 +type PatternFlowGtpv2Version_Choice_Enum int32 const ( - PatternFlowIcmpEchoChecksum_Generated_unspecified PatternFlowIcmpEchoChecksum_Generated_Enum = 0 - PatternFlowIcmpEchoChecksum_Generated_good PatternFlowIcmpEchoChecksum_Generated_Enum = 1 - PatternFlowIcmpEchoChecksum_Generated_bad PatternFlowIcmpEchoChecksum_Generated_Enum = 2 + PatternFlowGtpv2Version_Choice_unspecified PatternFlowGtpv2Version_Choice_Enum = 0 + PatternFlowGtpv2Version_Choice_value PatternFlowGtpv2Version_Choice_Enum = 2 + PatternFlowGtpv2Version_Choice_values PatternFlowGtpv2Version_Choice_Enum = 3 + PatternFlowGtpv2Version_Choice_increment PatternFlowGtpv2Version_Choice_Enum = 4 + PatternFlowGtpv2Version_Choice_decrement PatternFlowGtpv2Version_Choice_Enum = 5 ) -// Enum value maps for PatternFlowIcmpEchoChecksum_Generated_Enum. +// Enum value maps for PatternFlowGtpv2Version_Choice_Enum. var ( - PatternFlowIcmpEchoChecksum_Generated_Enum_name = map[int32]string{ + PatternFlowGtpv2Version_Choice_Enum_name = map[int32]string{ 0: "unspecified", - 1: "good", - 2: "bad", + 2: "value", + 3: "values", + 4: "increment", + 5: "decrement", } - PatternFlowIcmpEchoChecksum_Generated_Enum_value = map[string]int32{ + PatternFlowGtpv2Version_Choice_Enum_value = map[string]int32{ "unspecified": 0, - "good": 1, - "bad": 2, + "value": 2, + "values": 3, + "increment": 4, + "decrement": 5, } ) -func (x PatternFlowIcmpEchoChecksum_Generated_Enum) Enum() *PatternFlowIcmpEchoChecksum_Generated_Enum { - p := new(PatternFlowIcmpEchoChecksum_Generated_Enum) +func (x PatternFlowGtpv2Version_Choice_Enum) Enum() *PatternFlowGtpv2Version_Choice_Enum { + p := new(PatternFlowGtpv2Version_Choice_Enum) *p = x return p } -func (x PatternFlowIcmpEchoChecksum_Generated_Enum) String() string { +func (x PatternFlowGtpv2Version_Choice_Enum) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } -func (PatternFlowIcmpEchoChecksum_Generated_Enum) Descriptor() protoreflect.EnumDescriptor { +func (PatternFlowGtpv2Version_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { return file_otg_proto_enumTypes[289].Descriptor() } -func (PatternFlowIcmpEchoChecksum_Generated_Enum) Type() protoreflect.EnumType { +func (PatternFlowGtpv2Version_Choice_Enum) Type() protoreflect.EnumType { return &file_otg_proto_enumTypes[289] } -func (x PatternFlowIcmpEchoChecksum_Generated_Enum) Number() protoreflect.EnumNumber { +func (x PatternFlowGtpv2Version_Choice_Enum) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } -// Deprecated: Use PatternFlowIcmpEchoChecksum_Generated_Enum.Descriptor instead. -func (PatternFlowIcmpEchoChecksum_Generated_Enum) EnumDescriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{684, 1, 0} +// Deprecated: Use PatternFlowGtpv2Version_Choice_Enum.Descriptor instead. +func (PatternFlowGtpv2Version_Choice_Enum) EnumDescriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{676, 0, 0} } -type PatternFlowIcmpEchoIdentifier_Choice_Enum int32 +type PatternFlowGtpv2PiggybackingFlag_Choice_Enum int32 const ( - PatternFlowIcmpEchoIdentifier_Choice_unspecified PatternFlowIcmpEchoIdentifier_Choice_Enum = 0 - PatternFlowIcmpEchoIdentifier_Choice_value PatternFlowIcmpEchoIdentifier_Choice_Enum = 2 - PatternFlowIcmpEchoIdentifier_Choice_values PatternFlowIcmpEchoIdentifier_Choice_Enum = 3 - PatternFlowIcmpEchoIdentifier_Choice_increment PatternFlowIcmpEchoIdentifier_Choice_Enum = 4 - PatternFlowIcmpEchoIdentifier_Choice_decrement PatternFlowIcmpEchoIdentifier_Choice_Enum = 5 + PatternFlowGtpv2PiggybackingFlag_Choice_unspecified PatternFlowGtpv2PiggybackingFlag_Choice_Enum = 0 + PatternFlowGtpv2PiggybackingFlag_Choice_value PatternFlowGtpv2PiggybackingFlag_Choice_Enum = 2 + PatternFlowGtpv2PiggybackingFlag_Choice_values PatternFlowGtpv2PiggybackingFlag_Choice_Enum = 3 + PatternFlowGtpv2PiggybackingFlag_Choice_increment PatternFlowGtpv2PiggybackingFlag_Choice_Enum = 4 + PatternFlowGtpv2PiggybackingFlag_Choice_decrement PatternFlowGtpv2PiggybackingFlag_Choice_Enum = 5 ) -// Enum value maps for PatternFlowIcmpEchoIdentifier_Choice_Enum. +// Enum value maps for PatternFlowGtpv2PiggybackingFlag_Choice_Enum. var ( - PatternFlowIcmpEchoIdentifier_Choice_Enum_name = map[int32]string{ + PatternFlowGtpv2PiggybackingFlag_Choice_Enum_name = map[int32]string{ 0: "unspecified", 2: "value", 3: "values", 4: "increment", 5: "decrement", } - PatternFlowIcmpEchoIdentifier_Choice_Enum_value = map[string]int32{ + PatternFlowGtpv2PiggybackingFlag_Choice_Enum_value = map[string]int32{ "unspecified": 0, "value": 2, "values": 3, @@ -15901,53 +15790,53 @@ var ( } ) -func (x PatternFlowIcmpEchoIdentifier_Choice_Enum) Enum() *PatternFlowIcmpEchoIdentifier_Choice_Enum { - p := new(PatternFlowIcmpEchoIdentifier_Choice_Enum) +func (x PatternFlowGtpv2PiggybackingFlag_Choice_Enum) Enum() *PatternFlowGtpv2PiggybackingFlag_Choice_Enum { + p := new(PatternFlowGtpv2PiggybackingFlag_Choice_Enum) *p = x return p } -func (x PatternFlowIcmpEchoIdentifier_Choice_Enum) String() string { +func (x PatternFlowGtpv2PiggybackingFlag_Choice_Enum) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } -func (PatternFlowIcmpEchoIdentifier_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { +func (PatternFlowGtpv2PiggybackingFlag_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { return file_otg_proto_enumTypes[290].Descriptor() } -func (PatternFlowIcmpEchoIdentifier_Choice_Enum) Type() protoreflect.EnumType { +func (PatternFlowGtpv2PiggybackingFlag_Choice_Enum) Type() protoreflect.EnumType { return &file_otg_proto_enumTypes[290] } -func (x PatternFlowIcmpEchoIdentifier_Choice_Enum) Number() protoreflect.EnumNumber { +func (x PatternFlowGtpv2PiggybackingFlag_Choice_Enum) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } -// Deprecated: Use PatternFlowIcmpEchoIdentifier_Choice_Enum.Descriptor instead. -func (PatternFlowIcmpEchoIdentifier_Choice_Enum) EnumDescriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{687, 0, 0} +// Deprecated: Use PatternFlowGtpv2PiggybackingFlag_Choice_Enum.Descriptor instead. +func (PatternFlowGtpv2PiggybackingFlag_Choice_Enum) EnumDescriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{679, 0, 0} } -type PatternFlowIcmpEchoSequenceNumber_Choice_Enum int32 +type PatternFlowGtpv2TeidFlag_Choice_Enum int32 const ( - PatternFlowIcmpEchoSequenceNumber_Choice_unspecified PatternFlowIcmpEchoSequenceNumber_Choice_Enum = 0 - PatternFlowIcmpEchoSequenceNumber_Choice_value PatternFlowIcmpEchoSequenceNumber_Choice_Enum = 2 - PatternFlowIcmpEchoSequenceNumber_Choice_values PatternFlowIcmpEchoSequenceNumber_Choice_Enum = 3 - PatternFlowIcmpEchoSequenceNumber_Choice_increment PatternFlowIcmpEchoSequenceNumber_Choice_Enum = 4 - PatternFlowIcmpEchoSequenceNumber_Choice_decrement PatternFlowIcmpEchoSequenceNumber_Choice_Enum = 5 + PatternFlowGtpv2TeidFlag_Choice_unspecified PatternFlowGtpv2TeidFlag_Choice_Enum = 0 + PatternFlowGtpv2TeidFlag_Choice_value PatternFlowGtpv2TeidFlag_Choice_Enum = 2 + PatternFlowGtpv2TeidFlag_Choice_values PatternFlowGtpv2TeidFlag_Choice_Enum = 3 + PatternFlowGtpv2TeidFlag_Choice_increment PatternFlowGtpv2TeidFlag_Choice_Enum = 4 + PatternFlowGtpv2TeidFlag_Choice_decrement PatternFlowGtpv2TeidFlag_Choice_Enum = 5 ) -// Enum value maps for PatternFlowIcmpEchoSequenceNumber_Choice_Enum. +// Enum value maps for PatternFlowGtpv2TeidFlag_Choice_Enum. var ( - PatternFlowIcmpEchoSequenceNumber_Choice_Enum_name = map[int32]string{ + PatternFlowGtpv2TeidFlag_Choice_Enum_name = map[int32]string{ 0: "unspecified", 2: "value", 3: "values", 4: "increment", 5: "decrement", } - PatternFlowIcmpEchoSequenceNumber_Choice_Enum_value = map[string]int32{ + PatternFlowGtpv2TeidFlag_Choice_Enum_value = map[string]int32{ "unspecified": 0, "value": 2, "values": 3, @@ -15956,151 +15845,163 @@ var ( } ) -func (x PatternFlowIcmpEchoSequenceNumber_Choice_Enum) Enum() *PatternFlowIcmpEchoSequenceNumber_Choice_Enum { - p := new(PatternFlowIcmpEchoSequenceNumber_Choice_Enum) +func (x PatternFlowGtpv2TeidFlag_Choice_Enum) Enum() *PatternFlowGtpv2TeidFlag_Choice_Enum { + p := new(PatternFlowGtpv2TeidFlag_Choice_Enum) *p = x return p } -func (x PatternFlowIcmpEchoSequenceNumber_Choice_Enum) String() string { +func (x PatternFlowGtpv2TeidFlag_Choice_Enum) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } -func (PatternFlowIcmpEchoSequenceNumber_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { +func (PatternFlowGtpv2TeidFlag_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { return file_otg_proto_enumTypes[291].Descriptor() } -func (PatternFlowIcmpEchoSequenceNumber_Choice_Enum) Type() protoreflect.EnumType { +func (PatternFlowGtpv2TeidFlag_Choice_Enum) Type() protoreflect.EnumType { return &file_otg_proto_enumTypes[291] } -func (x PatternFlowIcmpEchoSequenceNumber_Choice_Enum) Number() protoreflect.EnumNumber { +func (x PatternFlowGtpv2TeidFlag_Choice_Enum) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } -// Deprecated: Use PatternFlowIcmpEchoSequenceNumber_Choice_Enum.Descriptor instead. -func (PatternFlowIcmpEchoSequenceNumber_Choice_Enum) EnumDescriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{690, 0, 0} +// Deprecated: Use PatternFlowGtpv2TeidFlag_Choice_Enum.Descriptor instead. +func (PatternFlowGtpv2TeidFlag_Choice_Enum) EnumDescriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{682, 0, 0} } -type PatternFlowIcmpCommonChecksum_Choice_Enum int32 +type PatternFlowGtpv2Spare1_Choice_Enum int32 const ( - PatternFlowIcmpCommonChecksum_Choice_unspecified PatternFlowIcmpCommonChecksum_Choice_Enum = 0 - PatternFlowIcmpCommonChecksum_Choice_generated PatternFlowIcmpCommonChecksum_Choice_Enum = 1 - PatternFlowIcmpCommonChecksum_Choice_custom PatternFlowIcmpCommonChecksum_Choice_Enum = 2 + PatternFlowGtpv2Spare1_Choice_unspecified PatternFlowGtpv2Spare1_Choice_Enum = 0 + PatternFlowGtpv2Spare1_Choice_value PatternFlowGtpv2Spare1_Choice_Enum = 2 + PatternFlowGtpv2Spare1_Choice_values PatternFlowGtpv2Spare1_Choice_Enum = 3 + PatternFlowGtpv2Spare1_Choice_increment PatternFlowGtpv2Spare1_Choice_Enum = 4 + PatternFlowGtpv2Spare1_Choice_decrement PatternFlowGtpv2Spare1_Choice_Enum = 5 ) -// Enum value maps for PatternFlowIcmpCommonChecksum_Choice_Enum. +// Enum value maps for PatternFlowGtpv2Spare1_Choice_Enum. var ( - PatternFlowIcmpCommonChecksum_Choice_Enum_name = map[int32]string{ + PatternFlowGtpv2Spare1_Choice_Enum_name = map[int32]string{ 0: "unspecified", - 1: "generated", - 2: "custom", + 2: "value", + 3: "values", + 4: "increment", + 5: "decrement", } - PatternFlowIcmpCommonChecksum_Choice_Enum_value = map[string]int32{ + PatternFlowGtpv2Spare1_Choice_Enum_value = map[string]int32{ "unspecified": 0, - "generated": 1, - "custom": 2, + "value": 2, + "values": 3, + "increment": 4, + "decrement": 5, } ) -func (x PatternFlowIcmpCommonChecksum_Choice_Enum) Enum() *PatternFlowIcmpCommonChecksum_Choice_Enum { - p := new(PatternFlowIcmpCommonChecksum_Choice_Enum) +func (x PatternFlowGtpv2Spare1_Choice_Enum) Enum() *PatternFlowGtpv2Spare1_Choice_Enum { + p := new(PatternFlowGtpv2Spare1_Choice_Enum) *p = x return p } -func (x PatternFlowIcmpCommonChecksum_Choice_Enum) String() string { +func (x PatternFlowGtpv2Spare1_Choice_Enum) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } -func (PatternFlowIcmpCommonChecksum_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { +func (PatternFlowGtpv2Spare1_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { return file_otg_proto_enumTypes[292].Descriptor() } -func (PatternFlowIcmpCommonChecksum_Choice_Enum) Type() protoreflect.EnumType { +func (PatternFlowGtpv2Spare1_Choice_Enum) Type() protoreflect.EnumType { return &file_otg_proto_enumTypes[292] } -func (x PatternFlowIcmpCommonChecksum_Choice_Enum) Number() protoreflect.EnumNumber { +func (x PatternFlowGtpv2Spare1_Choice_Enum) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } -// Deprecated: Use PatternFlowIcmpCommonChecksum_Choice_Enum.Descriptor instead. -func (PatternFlowIcmpCommonChecksum_Choice_Enum) EnumDescriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{691, 0, 0} +// Deprecated: Use PatternFlowGtpv2Spare1_Choice_Enum.Descriptor instead. +func (PatternFlowGtpv2Spare1_Choice_Enum) EnumDescriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{685, 0, 0} } -type PatternFlowIcmpCommonChecksum_Generated_Enum int32 +type PatternFlowGtpv2MessageType_Choice_Enum int32 const ( - PatternFlowIcmpCommonChecksum_Generated_unspecified PatternFlowIcmpCommonChecksum_Generated_Enum = 0 - PatternFlowIcmpCommonChecksum_Generated_good PatternFlowIcmpCommonChecksum_Generated_Enum = 1 - PatternFlowIcmpCommonChecksum_Generated_bad PatternFlowIcmpCommonChecksum_Generated_Enum = 2 + PatternFlowGtpv2MessageType_Choice_unspecified PatternFlowGtpv2MessageType_Choice_Enum = 0 + PatternFlowGtpv2MessageType_Choice_value PatternFlowGtpv2MessageType_Choice_Enum = 2 + PatternFlowGtpv2MessageType_Choice_values PatternFlowGtpv2MessageType_Choice_Enum = 3 + PatternFlowGtpv2MessageType_Choice_increment PatternFlowGtpv2MessageType_Choice_Enum = 4 + PatternFlowGtpv2MessageType_Choice_decrement PatternFlowGtpv2MessageType_Choice_Enum = 5 ) -// Enum value maps for PatternFlowIcmpCommonChecksum_Generated_Enum. +// Enum value maps for PatternFlowGtpv2MessageType_Choice_Enum. var ( - PatternFlowIcmpCommonChecksum_Generated_Enum_name = map[int32]string{ + PatternFlowGtpv2MessageType_Choice_Enum_name = map[int32]string{ 0: "unspecified", - 1: "good", - 2: "bad", + 2: "value", + 3: "values", + 4: "increment", + 5: "decrement", } - PatternFlowIcmpCommonChecksum_Generated_Enum_value = map[string]int32{ + PatternFlowGtpv2MessageType_Choice_Enum_value = map[string]int32{ "unspecified": 0, - "good": 1, - "bad": 2, + "value": 2, + "values": 3, + "increment": 4, + "decrement": 5, } ) -func (x PatternFlowIcmpCommonChecksum_Generated_Enum) Enum() *PatternFlowIcmpCommonChecksum_Generated_Enum { - p := new(PatternFlowIcmpCommonChecksum_Generated_Enum) +func (x PatternFlowGtpv2MessageType_Choice_Enum) Enum() *PatternFlowGtpv2MessageType_Choice_Enum { + p := new(PatternFlowGtpv2MessageType_Choice_Enum) *p = x return p } -func (x PatternFlowIcmpCommonChecksum_Generated_Enum) String() string { +func (x PatternFlowGtpv2MessageType_Choice_Enum) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } -func (PatternFlowIcmpCommonChecksum_Generated_Enum) Descriptor() protoreflect.EnumDescriptor { +func (PatternFlowGtpv2MessageType_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { return file_otg_proto_enumTypes[293].Descriptor() } -func (PatternFlowIcmpCommonChecksum_Generated_Enum) Type() protoreflect.EnumType { +func (PatternFlowGtpv2MessageType_Choice_Enum) Type() protoreflect.EnumType { return &file_otg_proto_enumTypes[293] } -func (x PatternFlowIcmpCommonChecksum_Generated_Enum) Number() protoreflect.EnumNumber { +func (x PatternFlowGtpv2MessageType_Choice_Enum) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } -// Deprecated: Use PatternFlowIcmpCommonChecksum_Generated_Enum.Descriptor instead. -func (PatternFlowIcmpCommonChecksum_Generated_Enum) EnumDescriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{691, 1, 0} +// Deprecated: Use PatternFlowGtpv2MessageType_Choice_Enum.Descriptor instead. +func (PatternFlowGtpv2MessageType_Choice_Enum) EnumDescriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{688, 0, 0} } -type PatternFlowIcmpNextFieldsIdentifier_Choice_Enum int32 +type PatternFlowGtpv2MessageLength_Choice_Enum int32 const ( - PatternFlowIcmpNextFieldsIdentifier_Choice_unspecified PatternFlowIcmpNextFieldsIdentifier_Choice_Enum = 0 - PatternFlowIcmpNextFieldsIdentifier_Choice_value PatternFlowIcmpNextFieldsIdentifier_Choice_Enum = 2 - PatternFlowIcmpNextFieldsIdentifier_Choice_values PatternFlowIcmpNextFieldsIdentifier_Choice_Enum = 3 - PatternFlowIcmpNextFieldsIdentifier_Choice_increment PatternFlowIcmpNextFieldsIdentifier_Choice_Enum = 4 - PatternFlowIcmpNextFieldsIdentifier_Choice_decrement PatternFlowIcmpNextFieldsIdentifier_Choice_Enum = 5 + PatternFlowGtpv2MessageLength_Choice_unspecified PatternFlowGtpv2MessageLength_Choice_Enum = 0 + PatternFlowGtpv2MessageLength_Choice_value PatternFlowGtpv2MessageLength_Choice_Enum = 2 + PatternFlowGtpv2MessageLength_Choice_values PatternFlowGtpv2MessageLength_Choice_Enum = 3 + PatternFlowGtpv2MessageLength_Choice_increment PatternFlowGtpv2MessageLength_Choice_Enum = 4 + PatternFlowGtpv2MessageLength_Choice_decrement PatternFlowGtpv2MessageLength_Choice_Enum = 5 ) -// Enum value maps for PatternFlowIcmpNextFieldsIdentifier_Choice_Enum. +// Enum value maps for PatternFlowGtpv2MessageLength_Choice_Enum. var ( - PatternFlowIcmpNextFieldsIdentifier_Choice_Enum_name = map[int32]string{ + PatternFlowGtpv2MessageLength_Choice_Enum_name = map[int32]string{ 0: "unspecified", 2: "value", 3: "values", 4: "increment", 5: "decrement", } - PatternFlowIcmpNextFieldsIdentifier_Choice_Enum_value = map[string]int32{ + PatternFlowGtpv2MessageLength_Choice_Enum_value = map[string]int32{ "unspecified": 0, "value": 2, "values": 3, @@ -16109,53 +16010,53 @@ var ( } ) -func (x PatternFlowIcmpNextFieldsIdentifier_Choice_Enum) Enum() *PatternFlowIcmpNextFieldsIdentifier_Choice_Enum { - p := new(PatternFlowIcmpNextFieldsIdentifier_Choice_Enum) +func (x PatternFlowGtpv2MessageLength_Choice_Enum) Enum() *PatternFlowGtpv2MessageLength_Choice_Enum { + p := new(PatternFlowGtpv2MessageLength_Choice_Enum) *p = x return p } -func (x PatternFlowIcmpNextFieldsIdentifier_Choice_Enum) String() string { +func (x PatternFlowGtpv2MessageLength_Choice_Enum) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } -func (PatternFlowIcmpNextFieldsIdentifier_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { +func (PatternFlowGtpv2MessageLength_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { return file_otg_proto_enumTypes[294].Descriptor() } -func (PatternFlowIcmpNextFieldsIdentifier_Choice_Enum) Type() protoreflect.EnumType { +func (PatternFlowGtpv2MessageLength_Choice_Enum) Type() protoreflect.EnumType { return &file_otg_proto_enumTypes[294] } -func (x PatternFlowIcmpNextFieldsIdentifier_Choice_Enum) Number() protoreflect.EnumNumber { +func (x PatternFlowGtpv2MessageLength_Choice_Enum) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } -// Deprecated: Use PatternFlowIcmpNextFieldsIdentifier_Choice_Enum.Descriptor instead. -func (PatternFlowIcmpNextFieldsIdentifier_Choice_Enum) EnumDescriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{694, 0, 0} +// Deprecated: Use PatternFlowGtpv2MessageLength_Choice_Enum.Descriptor instead. +func (PatternFlowGtpv2MessageLength_Choice_Enum) EnumDescriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{691, 0, 0} } -type PatternFlowIcmpNextFieldsSequenceNumber_Choice_Enum int32 +type PatternFlowGtpv2Teid_Choice_Enum int32 const ( - PatternFlowIcmpNextFieldsSequenceNumber_Choice_unspecified PatternFlowIcmpNextFieldsSequenceNumber_Choice_Enum = 0 - PatternFlowIcmpNextFieldsSequenceNumber_Choice_value PatternFlowIcmpNextFieldsSequenceNumber_Choice_Enum = 2 - PatternFlowIcmpNextFieldsSequenceNumber_Choice_values PatternFlowIcmpNextFieldsSequenceNumber_Choice_Enum = 3 - PatternFlowIcmpNextFieldsSequenceNumber_Choice_increment PatternFlowIcmpNextFieldsSequenceNumber_Choice_Enum = 4 - PatternFlowIcmpNextFieldsSequenceNumber_Choice_decrement PatternFlowIcmpNextFieldsSequenceNumber_Choice_Enum = 5 + PatternFlowGtpv2Teid_Choice_unspecified PatternFlowGtpv2Teid_Choice_Enum = 0 + PatternFlowGtpv2Teid_Choice_value PatternFlowGtpv2Teid_Choice_Enum = 2 + PatternFlowGtpv2Teid_Choice_values PatternFlowGtpv2Teid_Choice_Enum = 3 + PatternFlowGtpv2Teid_Choice_increment PatternFlowGtpv2Teid_Choice_Enum = 4 + PatternFlowGtpv2Teid_Choice_decrement PatternFlowGtpv2Teid_Choice_Enum = 5 ) -// Enum value maps for PatternFlowIcmpNextFieldsSequenceNumber_Choice_Enum. +// Enum value maps for PatternFlowGtpv2Teid_Choice_Enum. var ( - PatternFlowIcmpNextFieldsSequenceNumber_Choice_Enum_name = map[int32]string{ + PatternFlowGtpv2Teid_Choice_Enum_name = map[int32]string{ 0: "unspecified", 2: "value", 3: "values", 4: "increment", 5: "decrement", } - PatternFlowIcmpNextFieldsSequenceNumber_Choice_Enum_value = map[string]int32{ + PatternFlowGtpv2Teid_Choice_Enum_value = map[string]int32{ "unspecified": 0, "value": 2, "values": 3, @@ -16164,53 +16065,53 @@ var ( } ) -func (x PatternFlowIcmpNextFieldsSequenceNumber_Choice_Enum) Enum() *PatternFlowIcmpNextFieldsSequenceNumber_Choice_Enum { - p := new(PatternFlowIcmpNextFieldsSequenceNumber_Choice_Enum) +func (x PatternFlowGtpv2Teid_Choice_Enum) Enum() *PatternFlowGtpv2Teid_Choice_Enum { + p := new(PatternFlowGtpv2Teid_Choice_Enum) *p = x return p } -func (x PatternFlowIcmpNextFieldsSequenceNumber_Choice_Enum) String() string { +func (x PatternFlowGtpv2Teid_Choice_Enum) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } -func (PatternFlowIcmpNextFieldsSequenceNumber_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { +func (PatternFlowGtpv2Teid_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { return file_otg_proto_enumTypes[295].Descriptor() } -func (PatternFlowIcmpNextFieldsSequenceNumber_Choice_Enum) Type() protoreflect.EnumType { +func (PatternFlowGtpv2Teid_Choice_Enum) Type() protoreflect.EnumType { return &file_otg_proto_enumTypes[295] } -func (x PatternFlowIcmpNextFieldsSequenceNumber_Choice_Enum) Number() protoreflect.EnumNumber { +func (x PatternFlowGtpv2Teid_Choice_Enum) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } -// Deprecated: Use PatternFlowIcmpNextFieldsSequenceNumber_Choice_Enum.Descriptor instead. -func (PatternFlowIcmpNextFieldsSequenceNumber_Choice_Enum) EnumDescriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{697, 0, 0} +// Deprecated: Use PatternFlowGtpv2Teid_Choice_Enum.Descriptor instead. +func (PatternFlowGtpv2Teid_Choice_Enum) EnumDescriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{694, 0, 0} } -type PatternFlowIcmpv6EchoType_Choice_Enum int32 +type PatternFlowGtpv2SequenceNumber_Choice_Enum int32 const ( - PatternFlowIcmpv6EchoType_Choice_unspecified PatternFlowIcmpv6EchoType_Choice_Enum = 0 - PatternFlowIcmpv6EchoType_Choice_value PatternFlowIcmpv6EchoType_Choice_Enum = 2 - PatternFlowIcmpv6EchoType_Choice_values PatternFlowIcmpv6EchoType_Choice_Enum = 3 - PatternFlowIcmpv6EchoType_Choice_increment PatternFlowIcmpv6EchoType_Choice_Enum = 4 - PatternFlowIcmpv6EchoType_Choice_decrement PatternFlowIcmpv6EchoType_Choice_Enum = 5 + PatternFlowGtpv2SequenceNumber_Choice_unspecified PatternFlowGtpv2SequenceNumber_Choice_Enum = 0 + PatternFlowGtpv2SequenceNumber_Choice_value PatternFlowGtpv2SequenceNumber_Choice_Enum = 2 + PatternFlowGtpv2SequenceNumber_Choice_values PatternFlowGtpv2SequenceNumber_Choice_Enum = 3 + PatternFlowGtpv2SequenceNumber_Choice_increment PatternFlowGtpv2SequenceNumber_Choice_Enum = 4 + PatternFlowGtpv2SequenceNumber_Choice_decrement PatternFlowGtpv2SequenceNumber_Choice_Enum = 5 ) -// Enum value maps for PatternFlowIcmpv6EchoType_Choice_Enum. +// Enum value maps for PatternFlowGtpv2SequenceNumber_Choice_Enum. var ( - PatternFlowIcmpv6EchoType_Choice_Enum_name = map[int32]string{ + PatternFlowGtpv2SequenceNumber_Choice_Enum_name = map[int32]string{ 0: "unspecified", 2: "value", 3: "values", 4: "increment", 5: "decrement", } - PatternFlowIcmpv6EchoType_Choice_Enum_value = map[string]int32{ + PatternFlowGtpv2SequenceNumber_Choice_Enum_value = map[string]int32{ "unspecified": 0, "value": 2, "values": 3, @@ -16219,53 +16120,53 @@ var ( } ) -func (x PatternFlowIcmpv6EchoType_Choice_Enum) Enum() *PatternFlowIcmpv6EchoType_Choice_Enum { - p := new(PatternFlowIcmpv6EchoType_Choice_Enum) +func (x PatternFlowGtpv2SequenceNumber_Choice_Enum) Enum() *PatternFlowGtpv2SequenceNumber_Choice_Enum { + p := new(PatternFlowGtpv2SequenceNumber_Choice_Enum) *p = x return p } -func (x PatternFlowIcmpv6EchoType_Choice_Enum) String() string { +func (x PatternFlowGtpv2SequenceNumber_Choice_Enum) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } -func (PatternFlowIcmpv6EchoType_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { +func (PatternFlowGtpv2SequenceNumber_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { return file_otg_proto_enumTypes[296].Descriptor() } -func (PatternFlowIcmpv6EchoType_Choice_Enum) Type() protoreflect.EnumType { +func (PatternFlowGtpv2SequenceNumber_Choice_Enum) Type() protoreflect.EnumType { return &file_otg_proto_enumTypes[296] } -func (x PatternFlowIcmpv6EchoType_Choice_Enum) Number() protoreflect.EnumNumber { +func (x PatternFlowGtpv2SequenceNumber_Choice_Enum) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } -// Deprecated: Use PatternFlowIcmpv6EchoType_Choice_Enum.Descriptor instead. -func (PatternFlowIcmpv6EchoType_Choice_Enum) EnumDescriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{700, 0, 0} +// Deprecated: Use PatternFlowGtpv2SequenceNumber_Choice_Enum.Descriptor instead. +func (PatternFlowGtpv2SequenceNumber_Choice_Enum) EnumDescriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{697, 0, 0} } -type PatternFlowIcmpv6EchoCode_Choice_Enum int32 +type PatternFlowGtpv2Spare2_Choice_Enum int32 const ( - PatternFlowIcmpv6EchoCode_Choice_unspecified PatternFlowIcmpv6EchoCode_Choice_Enum = 0 - PatternFlowIcmpv6EchoCode_Choice_value PatternFlowIcmpv6EchoCode_Choice_Enum = 2 - PatternFlowIcmpv6EchoCode_Choice_values PatternFlowIcmpv6EchoCode_Choice_Enum = 3 - PatternFlowIcmpv6EchoCode_Choice_increment PatternFlowIcmpv6EchoCode_Choice_Enum = 4 - PatternFlowIcmpv6EchoCode_Choice_decrement PatternFlowIcmpv6EchoCode_Choice_Enum = 5 + PatternFlowGtpv2Spare2_Choice_unspecified PatternFlowGtpv2Spare2_Choice_Enum = 0 + PatternFlowGtpv2Spare2_Choice_value PatternFlowGtpv2Spare2_Choice_Enum = 2 + PatternFlowGtpv2Spare2_Choice_values PatternFlowGtpv2Spare2_Choice_Enum = 3 + PatternFlowGtpv2Spare2_Choice_increment PatternFlowGtpv2Spare2_Choice_Enum = 4 + PatternFlowGtpv2Spare2_Choice_decrement PatternFlowGtpv2Spare2_Choice_Enum = 5 ) -// Enum value maps for PatternFlowIcmpv6EchoCode_Choice_Enum. +// Enum value maps for PatternFlowGtpv2Spare2_Choice_Enum. var ( - PatternFlowIcmpv6EchoCode_Choice_Enum_name = map[int32]string{ + PatternFlowGtpv2Spare2_Choice_Enum_name = map[int32]string{ 0: "unspecified", 2: "value", 3: "values", 4: "increment", 5: "decrement", } - PatternFlowIcmpv6EchoCode_Choice_Enum_value = map[string]int32{ + PatternFlowGtpv2Spare2_Choice_Enum_value = map[string]int32{ "unspecified": 0, "value": 2, "values": 3, @@ -16274,53 +16175,53 @@ var ( } ) -func (x PatternFlowIcmpv6EchoCode_Choice_Enum) Enum() *PatternFlowIcmpv6EchoCode_Choice_Enum { - p := new(PatternFlowIcmpv6EchoCode_Choice_Enum) +func (x PatternFlowGtpv2Spare2_Choice_Enum) Enum() *PatternFlowGtpv2Spare2_Choice_Enum { + p := new(PatternFlowGtpv2Spare2_Choice_Enum) *p = x return p } -func (x PatternFlowIcmpv6EchoCode_Choice_Enum) String() string { +func (x PatternFlowGtpv2Spare2_Choice_Enum) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } -func (PatternFlowIcmpv6EchoCode_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { +func (PatternFlowGtpv2Spare2_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { return file_otg_proto_enumTypes[297].Descriptor() } -func (PatternFlowIcmpv6EchoCode_Choice_Enum) Type() protoreflect.EnumType { +func (PatternFlowGtpv2Spare2_Choice_Enum) Type() protoreflect.EnumType { return &file_otg_proto_enumTypes[297] } -func (x PatternFlowIcmpv6EchoCode_Choice_Enum) Number() protoreflect.EnumNumber { +func (x PatternFlowGtpv2Spare2_Choice_Enum) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } -// Deprecated: Use PatternFlowIcmpv6EchoCode_Choice_Enum.Descriptor instead. -func (PatternFlowIcmpv6EchoCode_Choice_Enum) EnumDescriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{703, 0, 0} +// Deprecated: Use PatternFlowGtpv2Spare2_Choice_Enum.Descriptor instead. +func (PatternFlowGtpv2Spare2_Choice_Enum) EnumDescriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{700, 0, 0} } -type PatternFlowIcmpv6EchoIdentifier_Choice_Enum int32 +type PatternFlowArpHardwareType_Choice_Enum int32 const ( - PatternFlowIcmpv6EchoIdentifier_Choice_unspecified PatternFlowIcmpv6EchoIdentifier_Choice_Enum = 0 - PatternFlowIcmpv6EchoIdentifier_Choice_value PatternFlowIcmpv6EchoIdentifier_Choice_Enum = 2 - PatternFlowIcmpv6EchoIdentifier_Choice_values PatternFlowIcmpv6EchoIdentifier_Choice_Enum = 3 - PatternFlowIcmpv6EchoIdentifier_Choice_increment PatternFlowIcmpv6EchoIdentifier_Choice_Enum = 4 - PatternFlowIcmpv6EchoIdentifier_Choice_decrement PatternFlowIcmpv6EchoIdentifier_Choice_Enum = 5 + PatternFlowArpHardwareType_Choice_unspecified PatternFlowArpHardwareType_Choice_Enum = 0 + PatternFlowArpHardwareType_Choice_value PatternFlowArpHardwareType_Choice_Enum = 2 + PatternFlowArpHardwareType_Choice_values PatternFlowArpHardwareType_Choice_Enum = 3 + PatternFlowArpHardwareType_Choice_increment PatternFlowArpHardwareType_Choice_Enum = 4 + PatternFlowArpHardwareType_Choice_decrement PatternFlowArpHardwareType_Choice_Enum = 5 ) -// Enum value maps for PatternFlowIcmpv6EchoIdentifier_Choice_Enum. +// Enum value maps for PatternFlowArpHardwareType_Choice_Enum. var ( - PatternFlowIcmpv6EchoIdentifier_Choice_Enum_name = map[int32]string{ + PatternFlowArpHardwareType_Choice_Enum_name = map[int32]string{ 0: "unspecified", 2: "value", 3: "values", 4: "increment", 5: "decrement", } - PatternFlowIcmpv6EchoIdentifier_Choice_Enum_value = map[string]int32{ + PatternFlowArpHardwareType_Choice_Enum_value = map[string]int32{ "unspecified": 0, "value": 2, "values": 3, @@ -16329,53 +16230,53 @@ var ( } ) -func (x PatternFlowIcmpv6EchoIdentifier_Choice_Enum) Enum() *PatternFlowIcmpv6EchoIdentifier_Choice_Enum { - p := new(PatternFlowIcmpv6EchoIdentifier_Choice_Enum) +func (x PatternFlowArpHardwareType_Choice_Enum) Enum() *PatternFlowArpHardwareType_Choice_Enum { + p := new(PatternFlowArpHardwareType_Choice_Enum) *p = x return p } -func (x PatternFlowIcmpv6EchoIdentifier_Choice_Enum) String() string { +func (x PatternFlowArpHardwareType_Choice_Enum) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } -func (PatternFlowIcmpv6EchoIdentifier_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { +func (PatternFlowArpHardwareType_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { return file_otg_proto_enumTypes[298].Descriptor() } -func (PatternFlowIcmpv6EchoIdentifier_Choice_Enum) Type() protoreflect.EnumType { +func (PatternFlowArpHardwareType_Choice_Enum) Type() protoreflect.EnumType { return &file_otg_proto_enumTypes[298] } -func (x PatternFlowIcmpv6EchoIdentifier_Choice_Enum) Number() protoreflect.EnumNumber { +func (x PatternFlowArpHardwareType_Choice_Enum) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } -// Deprecated: Use PatternFlowIcmpv6EchoIdentifier_Choice_Enum.Descriptor instead. -func (PatternFlowIcmpv6EchoIdentifier_Choice_Enum) EnumDescriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{706, 0, 0} +// Deprecated: Use PatternFlowArpHardwareType_Choice_Enum.Descriptor instead. +func (PatternFlowArpHardwareType_Choice_Enum) EnumDescriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{703, 0, 0} } -type PatternFlowIcmpv6EchoSequenceNumber_Choice_Enum int32 +type PatternFlowArpProtocolType_Choice_Enum int32 const ( - PatternFlowIcmpv6EchoSequenceNumber_Choice_unspecified PatternFlowIcmpv6EchoSequenceNumber_Choice_Enum = 0 - PatternFlowIcmpv6EchoSequenceNumber_Choice_value PatternFlowIcmpv6EchoSequenceNumber_Choice_Enum = 2 - PatternFlowIcmpv6EchoSequenceNumber_Choice_values PatternFlowIcmpv6EchoSequenceNumber_Choice_Enum = 3 - PatternFlowIcmpv6EchoSequenceNumber_Choice_increment PatternFlowIcmpv6EchoSequenceNumber_Choice_Enum = 4 - PatternFlowIcmpv6EchoSequenceNumber_Choice_decrement PatternFlowIcmpv6EchoSequenceNumber_Choice_Enum = 5 + PatternFlowArpProtocolType_Choice_unspecified PatternFlowArpProtocolType_Choice_Enum = 0 + PatternFlowArpProtocolType_Choice_value PatternFlowArpProtocolType_Choice_Enum = 2 + PatternFlowArpProtocolType_Choice_values PatternFlowArpProtocolType_Choice_Enum = 3 + PatternFlowArpProtocolType_Choice_increment PatternFlowArpProtocolType_Choice_Enum = 4 + PatternFlowArpProtocolType_Choice_decrement PatternFlowArpProtocolType_Choice_Enum = 5 ) -// Enum value maps for PatternFlowIcmpv6EchoSequenceNumber_Choice_Enum. +// Enum value maps for PatternFlowArpProtocolType_Choice_Enum. var ( - PatternFlowIcmpv6EchoSequenceNumber_Choice_Enum_name = map[int32]string{ + PatternFlowArpProtocolType_Choice_Enum_name = map[int32]string{ 0: "unspecified", 2: "value", 3: "values", 4: "increment", 5: "decrement", } - PatternFlowIcmpv6EchoSequenceNumber_Choice_Enum_value = map[string]int32{ + PatternFlowArpProtocolType_Choice_Enum_value = map[string]int32{ "unspecified": 0, "value": 2, "values": 3, @@ -16384,249 +16285,273 @@ var ( } ) -func (x PatternFlowIcmpv6EchoSequenceNumber_Choice_Enum) Enum() *PatternFlowIcmpv6EchoSequenceNumber_Choice_Enum { - p := new(PatternFlowIcmpv6EchoSequenceNumber_Choice_Enum) +func (x PatternFlowArpProtocolType_Choice_Enum) Enum() *PatternFlowArpProtocolType_Choice_Enum { + p := new(PatternFlowArpProtocolType_Choice_Enum) *p = x return p } -func (x PatternFlowIcmpv6EchoSequenceNumber_Choice_Enum) String() string { +func (x PatternFlowArpProtocolType_Choice_Enum) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } -func (PatternFlowIcmpv6EchoSequenceNumber_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { +func (PatternFlowArpProtocolType_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { return file_otg_proto_enumTypes[299].Descriptor() } -func (PatternFlowIcmpv6EchoSequenceNumber_Choice_Enum) Type() protoreflect.EnumType { +func (PatternFlowArpProtocolType_Choice_Enum) Type() protoreflect.EnumType { return &file_otg_proto_enumTypes[299] } -func (x PatternFlowIcmpv6EchoSequenceNumber_Choice_Enum) Number() protoreflect.EnumNumber { +func (x PatternFlowArpProtocolType_Choice_Enum) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } -// Deprecated: Use PatternFlowIcmpv6EchoSequenceNumber_Choice_Enum.Descriptor instead. -func (PatternFlowIcmpv6EchoSequenceNumber_Choice_Enum) EnumDescriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{709, 0, 0} +// Deprecated: Use PatternFlowArpProtocolType_Choice_Enum.Descriptor instead. +func (PatternFlowArpProtocolType_Choice_Enum) EnumDescriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{706, 0, 0} } -type PatternFlowIcmpv6EchoChecksum_Choice_Enum int32 +type PatternFlowArpHardwareLength_Choice_Enum int32 const ( - PatternFlowIcmpv6EchoChecksum_Choice_unspecified PatternFlowIcmpv6EchoChecksum_Choice_Enum = 0 - PatternFlowIcmpv6EchoChecksum_Choice_generated PatternFlowIcmpv6EchoChecksum_Choice_Enum = 1 - PatternFlowIcmpv6EchoChecksum_Choice_custom PatternFlowIcmpv6EchoChecksum_Choice_Enum = 2 -) - -// Enum value maps for PatternFlowIcmpv6EchoChecksum_Choice_Enum. + PatternFlowArpHardwareLength_Choice_unspecified PatternFlowArpHardwareLength_Choice_Enum = 0 + PatternFlowArpHardwareLength_Choice_value PatternFlowArpHardwareLength_Choice_Enum = 2 + PatternFlowArpHardwareLength_Choice_values PatternFlowArpHardwareLength_Choice_Enum = 3 + PatternFlowArpHardwareLength_Choice_increment PatternFlowArpHardwareLength_Choice_Enum = 4 + PatternFlowArpHardwareLength_Choice_decrement PatternFlowArpHardwareLength_Choice_Enum = 5 +) + +// Enum value maps for PatternFlowArpHardwareLength_Choice_Enum. var ( - PatternFlowIcmpv6EchoChecksum_Choice_Enum_name = map[int32]string{ + PatternFlowArpHardwareLength_Choice_Enum_name = map[int32]string{ 0: "unspecified", - 1: "generated", - 2: "custom", + 2: "value", + 3: "values", + 4: "increment", + 5: "decrement", } - PatternFlowIcmpv6EchoChecksum_Choice_Enum_value = map[string]int32{ + PatternFlowArpHardwareLength_Choice_Enum_value = map[string]int32{ "unspecified": 0, - "generated": 1, - "custom": 2, + "value": 2, + "values": 3, + "increment": 4, + "decrement": 5, } ) -func (x PatternFlowIcmpv6EchoChecksum_Choice_Enum) Enum() *PatternFlowIcmpv6EchoChecksum_Choice_Enum { - p := new(PatternFlowIcmpv6EchoChecksum_Choice_Enum) +func (x PatternFlowArpHardwareLength_Choice_Enum) Enum() *PatternFlowArpHardwareLength_Choice_Enum { + p := new(PatternFlowArpHardwareLength_Choice_Enum) *p = x return p } -func (x PatternFlowIcmpv6EchoChecksum_Choice_Enum) String() string { +func (x PatternFlowArpHardwareLength_Choice_Enum) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } -func (PatternFlowIcmpv6EchoChecksum_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { +func (PatternFlowArpHardwareLength_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { return file_otg_proto_enumTypes[300].Descriptor() } -func (PatternFlowIcmpv6EchoChecksum_Choice_Enum) Type() protoreflect.EnumType { +func (PatternFlowArpHardwareLength_Choice_Enum) Type() protoreflect.EnumType { return &file_otg_proto_enumTypes[300] } -func (x PatternFlowIcmpv6EchoChecksum_Choice_Enum) Number() protoreflect.EnumNumber { +func (x PatternFlowArpHardwareLength_Choice_Enum) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } -// Deprecated: Use PatternFlowIcmpv6EchoChecksum_Choice_Enum.Descriptor instead. -func (PatternFlowIcmpv6EchoChecksum_Choice_Enum) EnumDescriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{710, 0, 0} +// Deprecated: Use PatternFlowArpHardwareLength_Choice_Enum.Descriptor instead. +func (PatternFlowArpHardwareLength_Choice_Enum) EnumDescriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{709, 0, 0} } -type PatternFlowIcmpv6EchoChecksum_Generated_Enum int32 +type PatternFlowArpProtocolLength_Choice_Enum int32 const ( - PatternFlowIcmpv6EchoChecksum_Generated_unspecified PatternFlowIcmpv6EchoChecksum_Generated_Enum = 0 - PatternFlowIcmpv6EchoChecksum_Generated_good PatternFlowIcmpv6EchoChecksum_Generated_Enum = 1 - PatternFlowIcmpv6EchoChecksum_Generated_bad PatternFlowIcmpv6EchoChecksum_Generated_Enum = 2 + PatternFlowArpProtocolLength_Choice_unspecified PatternFlowArpProtocolLength_Choice_Enum = 0 + PatternFlowArpProtocolLength_Choice_value PatternFlowArpProtocolLength_Choice_Enum = 2 + PatternFlowArpProtocolLength_Choice_values PatternFlowArpProtocolLength_Choice_Enum = 3 + PatternFlowArpProtocolLength_Choice_increment PatternFlowArpProtocolLength_Choice_Enum = 4 + PatternFlowArpProtocolLength_Choice_decrement PatternFlowArpProtocolLength_Choice_Enum = 5 ) -// Enum value maps for PatternFlowIcmpv6EchoChecksum_Generated_Enum. +// Enum value maps for PatternFlowArpProtocolLength_Choice_Enum. var ( - PatternFlowIcmpv6EchoChecksum_Generated_Enum_name = map[int32]string{ + PatternFlowArpProtocolLength_Choice_Enum_name = map[int32]string{ 0: "unspecified", - 1: "good", - 2: "bad", + 2: "value", + 3: "values", + 4: "increment", + 5: "decrement", } - PatternFlowIcmpv6EchoChecksum_Generated_Enum_value = map[string]int32{ + PatternFlowArpProtocolLength_Choice_Enum_value = map[string]int32{ "unspecified": 0, - "good": 1, - "bad": 2, + "value": 2, + "values": 3, + "increment": 4, + "decrement": 5, } ) -func (x PatternFlowIcmpv6EchoChecksum_Generated_Enum) Enum() *PatternFlowIcmpv6EchoChecksum_Generated_Enum { - p := new(PatternFlowIcmpv6EchoChecksum_Generated_Enum) +func (x PatternFlowArpProtocolLength_Choice_Enum) Enum() *PatternFlowArpProtocolLength_Choice_Enum { + p := new(PatternFlowArpProtocolLength_Choice_Enum) *p = x return p } -func (x PatternFlowIcmpv6EchoChecksum_Generated_Enum) String() string { +func (x PatternFlowArpProtocolLength_Choice_Enum) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } -func (PatternFlowIcmpv6EchoChecksum_Generated_Enum) Descriptor() protoreflect.EnumDescriptor { +func (PatternFlowArpProtocolLength_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { return file_otg_proto_enumTypes[301].Descriptor() } -func (PatternFlowIcmpv6EchoChecksum_Generated_Enum) Type() protoreflect.EnumType { +func (PatternFlowArpProtocolLength_Choice_Enum) Type() protoreflect.EnumType { return &file_otg_proto_enumTypes[301] } -func (x PatternFlowIcmpv6EchoChecksum_Generated_Enum) Number() protoreflect.EnumNumber { +func (x PatternFlowArpProtocolLength_Choice_Enum) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } -// Deprecated: Use PatternFlowIcmpv6EchoChecksum_Generated_Enum.Descriptor instead. -func (PatternFlowIcmpv6EchoChecksum_Generated_Enum) EnumDescriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{710, 1, 0} +// Deprecated: Use PatternFlowArpProtocolLength_Choice_Enum.Descriptor instead. +func (PatternFlowArpProtocolLength_Choice_Enum) EnumDescriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{712, 0, 0} } -type PatternFlowIcmpv6CommonChecksum_Choice_Enum int32 +type PatternFlowArpOperation_Choice_Enum int32 const ( - PatternFlowIcmpv6CommonChecksum_Choice_unspecified PatternFlowIcmpv6CommonChecksum_Choice_Enum = 0 - PatternFlowIcmpv6CommonChecksum_Choice_generated PatternFlowIcmpv6CommonChecksum_Choice_Enum = 1 - PatternFlowIcmpv6CommonChecksum_Choice_custom PatternFlowIcmpv6CommonChecksum_Choice_Enum = 2 + PatternFlowArpOperation_Choice_unspecified PatternFlowArpOperation_Choice_Enum = 0 + PatternFlowArpOperation_Choice_value PatternFlowArpOperation_Choice_Enum = 2 + PatternFlowArpOperation_Choice_values PatternFlowArpOperation_Choice_Enum = 3 + PatternFlowArpOperation_Choice_increment PatternFlowArpOperation_Choice_Enum = 4 + PatternFlowArpOperation_Choice_decrement PatternFlowArpOperation_Choice_Enum = 5 ) -// Enum value maps for PatternFlowIcmpv6CommonChecksum_Choice_Enum. +// Enum value maps for PatternFlowArpOperation_Choice_Enum. var ( - PatternFlowIcmpv6CommonChecksum_Choice_Enum_name = map[int32]string{ + PatternFlowArpOperation_Choice_Enum_name = map[int32]string{ 0: "unspecified", - 1: "generated", - 2: "custom", + 2: "value", + 3: "values", + 4: "increment", + 5: "decrement", } - PatternFlowIcmpv6CommonChecksum_Choice_Enum_value = map[string]int32{ + PatternFlowArpOperation_Choice_Enum_value = map[string]int32{ "unspecified": 0, - "generated": 1, - "custom": 2, + "value": 2, + "values": 3, + "increment": 4, + "decrement": 5, } ) -func (x PatternFlowIcmpv6CommonChecksum_Choice_Enum) Enum() *PatternFlowIcmpv6CommonChecksum_Choice_Enum { - p := new(PatternFlowIcmpv6CommonChecksum_Choice_Enum) +func (x PatternFlowArpOperation_Choice_Enum) Enum() *PatternFlowArpOperation_Choice_Enum { + p := new(PatternFlowArpOperation_Choice_Enum) *p = x return p } -func (x PatternFlowIcmpv6CommonChecksum_Choice_Enum) String() string { +func (x PatternFlowArpOperation_Choice_Enum) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } -func (PatternFlowIcmpv6CommonChecksum_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { +func (PatternFlowArpOperation_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { return file_otg_proto_enumTypes[302].Descriptor() } -func (PatternFlowIcmpv6CommonChecksum_Choice_Enum) Type() protoreflect.EnumType { +func (PatternFlowArpOperation_Choice_Enum) Type() protoreflect.EnumType { return &file_otg_proto_enumTypes[302] } -func (x PatternFlowIcmpv6CommonChecksum_Choice_Enum) Number() protoreflect.EnumNumber { +func (x PatternFlowArpOperation_Choice_Enum) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } -// Deprecated: Use PatternFlowIcmpv6CommonChecksum_Choice_Enum.Descriptor instead. -func (PatternFlowIcmpv6CommonChecksum_Choice_Enum) EnumDescriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{711, 0, 0} +// Deprecated: Use PatternFlowArpOperation_Choice_Enum.Descriptor instead. +func (PatternFlowArpOperation_Choice_Enum) EnumDescriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{715, 0, 0} } -type PatternFlowIcmpv6CommonChecksum_Generated_Enum int32 +type PatternFlowArpSenderHardwareAddr_Choice_Enum int32 const ( - PatternFlowIcmpv6CommonChecksum_Generated_unspecified PatternFlowIcmpv6CommonChecksum_Generated_Enum = 0 - PatternFlowIcmpv6CommonChecksum_Generated_good PatternFlowIcmpv6CommonChecksum_Generated_Enum = 1 - PatternFlowIcmpv6CommonChecksum_Generated_bad PatternFlowIcmpv6CommonChecksum_Generated_Enum = 2 + PatternFlowArpSenderHardwareAddr_Choice_unspecified PatternFlowArpSenderHardwareAddr_Choice_Enum = 0 + PatternFlowArpSenderHardwareAddr_Choice_value PatternFlowArpSenderHardwareAddr_Choice_Enum = 2 + PatternFlowArpSenderHardwareAddr_Choice_values PatternFlowArpSenderHardwareAddr_Choice_Enum = 3 + PatternFlowArpSenderHardwareAddr_Choice_increment PatternFlowArpSenderHardwareAddr_Choice_Enum = 4 + PatternFlowArpSenderHardwareAddr_Choice_decrement PatternFlowArpSenderHardwareAddr_Choice_Enum = 5 ) -// Enum value maps for PatternFlowIcmpv6CommonChecksum_Generated_Enum. +// Enum value maps for PatternFlowArpSenderHardwareAddr_Choice_Enum. var ( - PatternFlowIcmpv6CommonChecksum_Generated_Enum_name = map[int32]string{ + PatternFlowArpSenderHardwareAddr_Choice_Enum_name = map[int32]string{ 0: "unspecified", - 1: "good", - 2: "bad", + 2: "value", + 3: "values", + 4: "increment", + 5: "decrement", } - PatternFlowIcmpv6CommonChecksum_Generated_Enum_value = map[string]int32{ + PatternFlowArpSenderHardwareAddr_Choice_Enum_value = map[string]int32{ "unspecified": 0, - "good": 1, - "bad": 2, + "value": 2, + "values": 3, + "increment": 4, + "decrement": 5, } ) -func (x PatternFlowIcmpv6CommonChecksum_Generated_Enum) Enum() *PatternFlowIcmpv6CommonChecksum_Generated_Enum { - p := new(PatternFlowIcmpv6CommonChecksum_Generated_Enum) +func (x PatternFlowArpSenderHardwareAddr_Choice_Enum) Enum() *PatternFlowArpSenderHardwareAddr_Choice_Enum { + p := new(PatternFlowArpSenderHardwareAddr_Choice_Enum) *p = x return p } -func (x PatternFlowIcmpv6CommonChecksum_Generated_Enum) String() string { +func (x PatternFlowArpSenderHardwareAddr_Choice_Enum) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } -func (PatternFlowIcmpv6CommonChecksum_Generated_Enum) Descriptor() protoreflect.EnumDescriptor { +func (PatternFlowArpSenderHardwareAddr_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { return file_otg_proto_enumTypes[303].Descriptor() } -func (PatternFlowIcmpv6CommonChecksum_Generated_Enum) Type() protoreflect.EnumType { +func (PatternFlowArpSenderHardwareAddr_Choice_Enum) Type() protoreflect.EnumType { return &file_otg_proto_enumTypes[303] } -func (x PatternFlowIcmpv6CommonChecksum_Generated_Enum) Number() protoreflect.EnumNumber { +func (x PatternFlowArpSenderHardwareAddr_Choice_Enum) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } -// Deprecated: Use PatternFlowIcmpv6CommonChecksum_Generated_Enum.Descriptor instead. -func (PatternFlowIcmpv6CommonChecksum_Generated_Enum) EnumDescriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{711, 1, 0} +// Deprecated: Use PatternFlowArpSenderHardwareAddr_Choice_Enum.Descriptor instead. +func (PatternFlowArpSenderHardwareAddr_Choice_Enum) EnumDescriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{718, 0, 0} } -type PatternFlowPppAddress_Choice_Enum int32 +type PatternFlowArpSenderProtocolAddr_Choice_Enum int32 const ( - PatternFlowPppAddress_Choice_unspecified PatternFlowPppAddress_Choice_Enum = 0 - PatternFlowPppAddress_Choice_value PatternFlowPppAddress_Choice_Enum = 2 - PatternFlowPppAddress_Choice_values PatternFlowPppAddress_Choice_Enum = 3 - PatternFlowPppAddress_Choice_increment PatternFlowPppAddress_Choice_Enum = 4 - PatternFlowPppAddress_Choice_decrement PatternFlowPppAddress_Choice_Enum = 5 + PatternFlowArpSenderProtocolAddr_Choice_unspecified PatternFlowArpSenderProtocolAddr_Choice_Enum = 0 + PatternFlowArpSenderProtocolAddr_Choice_value PatternFlowArpSenderProtocolAddr_Choice_Enum = 2 + PatternFlowArpSenderProtocolAddr_Choice_values PatternFlowArpSenderProtocolAddr_Choice_Enum = 3 + PatternFlowArpSenderProtocolAddr_Choice_increment PatternFlowArpSenderProtocolAddr_Choice_Enum = 4 + PatternFlowArpSenderProtocolAddr_Choice_decrement PatternFlowArpSenderProtocolAddr_Choice_Enum = 5 ) -// Enum value maps for PatternFlowPppAddress_Choice_Enum. +// Enum value maps for PatternFlowArpSenderProtocolAddr_Choice_Enum. var ( - PatternFlowPppAddress_Choice_Enum_name = map[int32]string{ + PatternFlowArpSenderProtocolAddr_Choice_Enum_name = map[int32]string{ 0: "unspecified", 2: "value", 3: "values", 4: "increment", 5: "decrement", } - PatternFlowPppAddress_Choice_Enum_value = map[string]int32{ + PatternFlowArpSenderProtocolAddr_Choice_Enum_value = map[string]int32{ "unspecified": 0, "value": 2, "values": 3, @@ -16635,53 +16560,53 @@ var ( } ) -func (x PatternFlowPppAddress_Choice_Enum) Enum() *PatternFlowPppAddress_Choice_Enum { - p := new(PatternFlowPppAddress_Choice_Enum) +func (x PatternFlowArpSenderProtocolAddr_Choice_Enum) Enum() *PatternFlowArpSenderProtocolAddr_Choice_Enum { + p := new(PatternFlowArpSenderProtocolAddr_Choice_Enum) *p = x return p } -func (x PatternFlowPppAddress_Choice_Enum) String() string { +func (x PatternFlowArpSenderProtocolAddr_Choice_Enum) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } -func (PatternFlowPppAddress_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { +func (PatternFlowArpSenderProtocolAddr_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { return file_otg_proto_enumTypes[304].Descriptor() } -func (PatternFlowPppAddress_Choice_Enum) Type() protoreflect.EnumType { +func (PatternFlowArpSenderProtocolAddr_Choice_Enum) Type() protoreflect.EnumType { return &file_otg_proto_enumTypes[304] } -func (x PatternFlowPppAddress_Choice_Enum) Number() protoreflect.EnumNumber { +func (x PatternFlowArpSenderProtocolAddr_Choice_Enum) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } -// Deprecated: Use PatternFlowPppAddress_Choice_Enum.Descriptor instead. -func (PatternFlowPppAddress_Choice_Enum) EnumDescriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{714, 0, 0} +// Deprecated: Use PatternFlowArpSenderProtocolAddr_Choice_Enum.Descriptor instead. +func (PatternFlowArpSenderProtocolAddr_Choice_Enum) EnumDescriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{721, 0, 0} } -type PatternFlowPppControl_Choice_Enum int32 +type PatternFlowArpTargetHardwareAddr_Choice_Enum int32 const ( - PatternFlowPppControl_Choice_unspecified PatternFlowPppControl_Choice_Enum = 0 - PatternFlowPppControl_Choice_value PatternFlowPppControl_Choice_Enum = 2 - PatternFlowPppControl_Choice_values PatternFlowPppControl_Choice_Enum = 3 - PatternFlowPppControl_Choice_increment PatternFlowPppControl_Choice_Enum = 4 - PatternFlowPppControl_Choice_decrement PatternFlowPppControl_Choice_Enum = 5 + PatternFlowArpTargetHardwareAddr_Choice_unspecified PatternFlowArpTargetHardwareAddr_Choice_Enum = 0 + PatternFlowArpTargetHardwareAddr_Choice_value PatternFlowArpTargetHardwareAddr_Choice_Enum = 2 + PatternFlowArpTargetHardwareAddr_Choice_values PatternFlowArpTargetHardwareAddr_Choice_Enum = 3 + PatternFlowArpTargetHardwareAddr_Choice_increment PatternFlowArpTargetHardwareAddr_Choice_Enum = 4 + PatternFlowArpTargetHardwareAddr_Choice_decrement PatternFlowArpTargetHardwareAddr_Choice_Enum = 5 ) -// Enum value maps for PatternFlowPppControl_Choice_Enum. +// Enum value maps for PatternFlowArpTargetHardwareAddr_Choice_Enum. var ( - PatternFlowPppControl_Choice_Enum_name = map[int32]string{ + PatternFlowArpTargetHardwareAddr_Choice_Enum_name = map[int32]string{ 0: "unspecified", 2: "value", 3: "values", 4: "increment", 5: "decrement", } - PatternFlowPppControl_Choice_Enum_value = map[string]int32{ + PatternFlowArpTargetHardwareAddr_Choice_Enum_value = map[string]int32{ "unspecified": 0, "value": 2, "values": 3, @@ -16690,111 +16615,108 @@ var ( } ) -func (x PatternFlowPppControl_Choice_Enum) Enum() *PatternFlowPppControl_Choice_Enum { - p := new(PatternFlowPppControl_Choice_Enum) +func (x PatternFlowArpTargetHardwareAddr_Choice_Enum) Enum() *PatternFlowArpTargetHardwareAddr_Choice_Enum { + p := new(PatternFlowArpTargetHardwareAddr_Choice_Enum) *p = x return p } -func (x PatternFlowPppControl_Choice_Enum) String() string { +func (x PatternFlowArpTargetHardwareAddr_Choice_Enum) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } -func (PatternFlowPppControl_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { +func (PatternFlowArpTargetHardwareAddr_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { return file_otg_proto_enumTypes[305].Descriptor() } -func (PatternFlowPppControl_Choice_Enum) Type() protoreflect.EnumType { +func (PatternFlowArpTargetHardwareAddr_Choice_Enum) Type() protoreflect.EnumType { return &file_otg_proto_enumTypes[305] } -func (x PatternFlowPppControl_Choice_Enum) Number() protoreflect.EnumNumber { +func (x PatternFlowArpTargetHardwareAddr_Choice_Enum) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } -// Deprecated: Use PatternFlowPppControl_Choice_Enum.Descriptor instead. -func (PatternFlowPppControl_Choice_Enum) EnumDescriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{717, 0, 0} +// Deprecated: Use PatternFlowArpTargetHardwareAddr_Choice_Enum.Descriptor instead. +func (PatternFlowArpTargetHardwareAddr_Choice_Enum) EnumDescriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{724, 0, 0} } -type PatternFlowPppProtocolType_Choice_Enum int32 +type PatternFlowArpTargetProtocolAddr_Choice_Enum int32 const ( - PatternFlowPppProtocolType_Choice_unspecified PatternFlowPppProtocolType_Choice_Enum = 0 - PatternFlowPppProtocolType_Choice_value PatternFlowPppProtocolType_Choice_Enum = 2 - PatternFlowPppProtocolType_Choice_values PatternFlowPppProtocolType_Choice_Enum = 3 - PatternFlowPppProtocolType_Choice_auto PatternFlowPppProtocolType_Choice_Enum = 1 - PatternFlowPppProtocolType_Choice_increment PatternFlowPppProtocolType_Choice_Enum = 4 - PatternFlowPppProtocolType_Choice_decrement PatternFlowPppProtocolType_Choice_Enum = 5 + PatternFlowArpTargetProtocolAddr_Choice_unspecified PatternFlowArpTargetProtocolAddr_Choice_Enum = 0 + PatternFlowArpTargetProtocolAddr_Choice_value PatternFlowArpTargetProtocolAddr_Choice_Enum = 2 + PatternFlowArpTargetProtocolAddr_Choice_values PatternFlowArpTargetProtocolAddr_Choice_Enum = 3 + PatternFlowArpTargetProtocolAddr_Choice_increment PatternFlowArpTargetProtocolAddr_Choice_Enum = 4 + PatternFlowArpTargetProtocolAddr_Choice_decrement PatternFlowArpTargetProtocolAddr_Choice_Enum = 5 ) -// Enum value maps for PatternFlowPppProtocolType_Choice_Enum. +// Enum value maps for PatternFlowArpTargetProtocolAddr_Choice_Enum. var ( - PatternFlowPppProtocolType_Choice_Enum_name = map[int32]string{ + PatternFlowArpTargetProtocolAddr_Choice_Enum_name = map[int32]string{ 0: "unspecified", 2: "value", 3: "values", - 1: "auto", 4: "increment", 5: "decrement", } - PatternFlowPppProtocolType_Choice_Enum_value = map[string]int32{ + PatternFlowArpTargetProtocolAddr_Choice_Enum_value = map[string]int32{ "unspecified": 0, "value": 2, "values": 3, - "auto": 1, "increment": 4, "decrement": 5, } ) -func (x PatternFlowPppProtocolType_Choice_Enum) Enum() *PatternFlowPppProtocolType_Choice_Enum { - p := new(PatternFlowPppProtocolType_Choice_Enum) +func (x PatternFlowArpTargetProtocolAddr_Choice_Enum) Enum() *PatternFlowArpTargetProtocolAddr_Choice_Enum { + p := new(PatternFlowArpTargetProtocolAddr_Choice_Enum) *p = x return p } -func (x PatternFlowPppProtocolType_Choice_Enum) String() string { +func (x PatternFlowArpTargetProtocolAddr_Choice_Enum) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } -func (PatternFlowPppProtocolType_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { +func (PatternFlowArpTargetProtocolAddr_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { return file_otg_proto_enumTypes[306].Descriptor() } -func (PatternFlowPppProtocolType_Choice_Enum) Type() protoreflect.EnumType { +func (PatternFlowArpTargetProtocolAddr_Choice_Enum) Type() protoreflect.EnumType { return &file_otg_proto_enumTypes[306] } -func (x PatternFlowPppProtocolType_Choice_Enum) Number() protoreflect.EnumNumber { +func (x PatternFlowArpTargetProtocolAddr_Choice_Enum) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } -// Deprecated: Use PatternFlowPppProtocolType_Choice_Enum.Descriptor instead. -func (PatternFlowPppProtocolType_Choice_Enum) EnumDescriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{720, 0, 0} +// Deprecated: Use PatternFlowArpTargetProtocolAddr_Choice_Enum.Descriptor instead. +func (PatternFlowArpTargetProtocolAddr_Choice_Enum) EnumDescriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{727, 0, 0} } -type PatternFlowIgmpv1Version_Choice_Enum int32 +type PatternFlowIcmpEchoType_Choice_Enum int32 const ( - PatternFlowIgmpv1Version_Choice_unspecified PatternFlowIgmpv1Version_Choice_Enum = 0 - PatternFlowIgmpv1Version_Choice_value PatternFlowIgmpv1Version_Choice_Enum = 2 - PatternFlowIgmpv1Version_Choice_values PatternFlowIgmpv1Version_Choice_Enum = 3 - PatternFlowIgmpv1Version_Choice_increment PatternFlowIgmpv1Version_Choice_Enum = 4 - PatternFlowIgmpv1Version_Choice_decrement PatternFlowIgmpv1Version_Choice_Enum = 5 + PatternFlowIcmpEchoType_Choice_unspecified PatternFlowIcmpEchoType_Choice_Enum = 0 + PatternFlowIcmpEchoType_Choice_value PatternFlowIcmpEchoType_Choice_Enum = 2 + PatternFlowIcmpEchoType_Choice_values PatternFlowIcmpEchoType_Choice_Enum = 3 + PatternFlowIcmpEchoType_Choice_increment PatternFlowIcmpEchoType_Choice_Enum = 4 + PatternFlowIcmpEchoType_Choice_decrement PatternFlowIcmpEchoType_Choice_Enum = 5 ) -// Enum value maps for PatternFlowIgmpv1Version_Choice_Enum. +// Enum value maps for PatternFlowIcmpEchoType_Choice_Enum. var ( - PatternFlowIgmpv1Version_Choice_Enum_name = map[int32]string{ + PatternFlowIcmpEchoType_Choice_Enum_name = map[int32]string{ 0: "unspecified", 2: "value", 3: "values", 4: "increment", 5: "decrement", } - PatternFlowIgmpv1Version_Choice_Enum_value = map[string]int32{ + PatternFlowIcmpEchoType_Choice_Enum_value = map[string]int32{ "unspecified": 0, "value": 2, "values": 3, @@ -16803,53 +16725,53 @@ var ( } ) -func (x PatternFlowIgmpv1Version_Choice_Enum) Enum() *PatternFlowIgmpv1Version_Choice_Enum { - p := new(PatternFlowIgmpv1Version_Choice_Enum) +func (x PatternFlowIcmpEchoType_Choice_Enum) Enum() *PatternFlowIcmpEchoType_Choice_Enum { + p := new(PatternFlowIcmpEchoType_Choice_Enum) *p = x return p } -func (x PatternFlowIgmpv1Version_Choice_Enum) String() string { +func (x PatternFlowIcmpEchoType_Choice_Enum) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } -func (PatternFlowIgmpv1Version_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { +func (PatternFlowIcmpEchoType_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { return file_otg_proto_enumTypes[307].Descriptor() } -func (PatternFlowIgmpv1Version_Choice_Enum) Type() protoreflect.EnumType { +func (PatternFlowIcmpEchoType_Choice_Enum) Type() protoreflect.EnumType { return &file_otg_proto_enumTypes[307] } -func (x PatternFlowIgmpv1Version_Choice_Enum) Number() protoreflect.EnumNumber { +func (x PatternFlowIcmpEchoType_Choice_Enum) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } -// Deprecated: Use PatternFlowIgmpv1Version_Choice_Enum.Descriptor instead. -func (PatternFlowIgmpv1Version_Choice_Enum) EnumDescriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{723, 0, 0} +// Deprecated: Use PatternFlowIcmpEchoType_Choice_Enum.Descriptor instead. +func (PatternFlowIcmpEchoType_Choice_Enum) EnumDescriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{730, 0, 0} } -type PatternFlowIgmpv1Type_Choice_Enum int32 +type PatternFlowIcmpEchoCode_Choice_Enum int32 const ( - PatternFlowIgmpv1Type_Choice_unspecified PatternFlowIgmpv1Type_Choice_Enum = 0 - PatternFlowIgmpv1Type_Choice_value PatternFlowIgmpv1Type_Choice_Enum = 2 - PatternFlowIgmpv1Type_Choice_values PatternFlowIgmpv1Type_Choice_Enum = 3 - PatternFlowIgmpv1Type_Choice_increment PatternFlowIgmpv1Type_Choice_Enum = 4 - PatternFlowIgmpv1Type_Choice_decrement PatternFlowIgmpv1Type_Choice_Enum = 5 + PatternFlowIcmpEchoCode_Choice_unspecified PatternFlowIcmpEchoCode_Choice_Enum = 0 + PatternFlowIcmpEchoCode_Choice_value PatternFlowIcmpEchoCode_Choice_Enum = 2 + PatternFlowIcmpEchoCode_Choice_values PatternFlowIcmpEchoCode_Choice_Enum = 3 + PatternFlowIcmpEchoCode_Choice_increment PatternFlowIcmpEchoCode_Choice_Enum = 4 + PatternFlowIcmpEchoCode_Choice_decrement PatternFlowIcmpEchoCode_Choice_Enum = 5 ) -// Enum value maps for PatternFlowIgmpv1Type_Choice_Enum. +// Enum value maps for PatternFlowIcmpEchoCode_Choice_Enum. var ( - PatternFlowIgmpv1Type_Choice_Enum_name = map[int32]string{ + PatternFlowIcmpEchoCode_Choice_Enum_name = map[int32]string{ 0: "unspecified", 2: "value", 3: "values", 4: "increment", 5: "decrement", } - PatternFlowIgmpv1Type_Choice_Enum_value = map[string]int32{ + PatternFlowIcmpEchoCode_Choice_Enum_value = map[string]int32{ "unspecified": 0, "value": 2, "values": 3, @@ -16858,206 +16780,206 @@ var ( } ) -func (x PatternFlowIgmpv1Type_Choice_Enum) Enum() *PatternFlowIgmpv1Type_Choice_Enum { - p := new(PatternFlowIgmpv1Type_Choice_Enum) +func (x PatternFlowIcmpEchoCode_Choice_Enum) Enum() *PatternFlowIcmpEchoCode_Choice_Enum { + p := new(PatternFlowIcmpEchoCode_Choice_Enum) *p = x return p } -func (x PatternFlowIgmpv1Type_Choice_Enum) String() string { +func (x PatternFlowIcmpEchoCode_Choice_Enum) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } -func (PatternFlowIgmpv1Type_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { +func (PatternFlowIcmpEchoCode_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { return file_otg_proto_enumTypes[308].Descriptor() } -func (PatternFlowIgmpv1Type_Choice_Enum) Type() protoreflect.EnumType { +func (PatternFlowIcmpEchoCode_Choice_Enum) Type() protoreflect.EnumType { return &file_otg_proto_enumTypes[308] } -func (x PatternFlowIgmpv1Type_Choice_Enum) Number() protoreflect.EnumNumber { +func (x PatternFlowIcmpEchoCode_Choice_Enum) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } -// Deprecated: Use PatternFlowIgmpv1Type_Choice_Enum.Descriptor instead. -func (PatternFlowIgmpv1Type_Choice_Enum) EnumDescriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{726, 0, 0} +// Deprecated: Use PatternFlowIcmpEchoCode_Choice_Enum.Descriptor instead. +func (PatternFlowIcmpEchoCode_Choice_Enum) EnumDescriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{733, 0, 0} } -type PatternFlowIgmpv1Unused_Choice_Enum int32 +type PatternFlowIcmpEchoChecksum_Choice_Enum int32 const ( - PatternFlowIgmpv1Unused_Choice_unspecified PatternFlowIgmpv1Unused_Choice_Enum = 0 - PatternFlowIgmpv1Unused_Choice_value PatternFlowIgmpv1Unused_Choice_Enum = 2 - PatternFlowIgmpv1Unused_Choice_values PatternFlowIgmpv1Unused_Choice_Enum = 3 - PatternFlowIgmpv1Unused_Choice_increment PatternFlowIgmpv1Unused_Choice_Enum = 4 - PatternFlowIgmpv1Unused_Choice_decrement PatternFlowIgmpv1Unused_Choice_Enum = 5 + PatternFlowIcmpEchoChecksum_Choice_unspecified PatternFlowIcmpEchoChecksum_Choice_Enum = 0 + PatternFlowIcmpEchoChecksum_Choice_generated PatternFlowIcmpEchoChecksum_Choice_Enum = 1 + PatternFlowIcmpEchoChecksum_Choice_custom PatternFlowIcmpEchoChecksum_Choice_Enum = 2 ) -// Enum value maps for PatternFlowIgmpv1Unused_Choice_Enum. +// Enum value maps for PatternFlowIcmpEchoChecksum_Choice_Enum. var ( - PatternFlowIgmpv1Unused_Choice_Enum_name = map[int32]string{ + PatternFlowIcmpEchoChecksum_Choice_Enum_name = map[int32]string{ 0: "unspecified", - 2: "value", - 3: "values", - 4: "increment", - 5: "decrement", + 1: "generated", + 2: "custom", } - PatternFlowIgmpv1Unused_Choice_Enum_value = map[string]int32{ + PatternFlowIcmpEchoChecksum_Choice_Enum_value = map[string]int32{ "unspecified": 0, - "value": 2, - "values": 3, - "increment": 4, - "decrement": 5, + "generated": 1, + "custom": 2, } ) -func (x PatternFlowIgmpv1Unused_Choice_Enum) Enum() *PatternFlowIgmpv1Unused_Choice_Enum { - p := new(PatternFlowIgmpv1Unused_Choice_Enum) +func (x PatternFlowIcmpEchoChecksum_Choice_Enum) Enum() *PatternFlowIcmpEchoChecksum_Choice_Enum { + p := new(PatternFlowIcmpEchoChecksum_Choice_Enum) *p = x return p } -func (x PatternFlowIgmpv1Unused_Choice_Enum) String() string { +func (x PatternFlowIcmpEchoChecksum_Choice_Enum) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } -func (PatternFlowIgmpv1Unused_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { +func (PatternFlowIcmpEchoChecksum_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { return file_otg_proto_enumTypes[309].Descriptor() } -func (PatternFlowIgmpv1Unused_Choice_Enum) Type() protoreflect.EnumType { +func (PatternFlowIcmpEchoChecksum_Choice_Enum) Type() protoreflect.EnumType { return &file_otg_proto_enumTypes[309] } -func (x PatternFlowIgmpv1Unused_Choice_Enum) Number() protoreflect.EnumNumber { +func (x PatternFlowIcmpEchoChecksum_Choice_Enum) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } -// Deprecated: Use PatternFlowIgmpv1Unused_Choice_Enum.Descriptor instead. -func (PatternFlowIgmpv1Unused_Choice_Enum) EnumDescriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{729, 0, 0} +// Deprecated: Use PatternFlowIcmpEchoChecksum_Choice_Enum.Descriptor instead. +func (PatternFlowIcmpEchoChecksum_Choice_Enum) EnumDescriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{734, 0, 0} } -type PatternFlowIgmpv1Checksum_Choice_Enum int32 +type PatternFlowIcmpEchoChecksum_Generated_Enum int32 const ( - PatternFlowIgmpv1Checksum_Choice_unspecified PatternFlowIgmpv1Checksum_Choice_Enum = 0 - PatternFlowIgmpv1Checksum_Choice_generated PatternFlowIgmpv1Checksum_Choice_Enum = 1 - PatternFlowIgmpv1Checksum_Choice_custom PatternFlowIgmpv1Checksum_Choice_Enum = 2 + PatternFlowIcmpEchoChecksum_Generated_unspecified PatternFlowIcmpEchoChecksum_Generated_Enum = 0 + PatternFlowIcmpEchoChecksum_Generated_good PatternFlowIcmpEchoChecksum_Generated_Enum = 1 + PatternFlowIcmpEchoChecksum_Generated_bad PatternFlowIcmpEchoChecksum_Generated_Enum = 2 ) -// Enum value maps for PatternFlowIgmpv1Checksum_Choice_Enum. +// Enum value maps for PatternFlowIcmpEchoChecksum_Generated_Enum. var ( - PatternFlowIgmpv1Checksum_Choice_Enum_name = map[int32]string{ + PatternFlowIcmpEchoChecksum_Generated_Enum_name = map[int32]string{ 0: "unspecified", - 1: "generated", - 2: "custom", + 1: "good", + 2: "bad", } - PatternFlowIgmpv1Checksum_Choice_Enum_value = map[string]int32{ + PatternFlowIcmpEchoChecksum_Generated_Enum_value = map[string]int32{ "unspecified": 0, - "generated": 1, - "custom": 2, + "good": 1, + "bad": 2, } ) -func (x PatternFlowIgmpv1Checksum_Choice_Enum) Enum() *PatternFlowIgmpv1Checksum_Choice_Enum { - p := new(PatternFlowIgmpv1Checksum_Choice_Enum) +func (x PatternFlowIcmpEchoChecksum_Generated_Enum) Enum() *PatternFlowIcmpEchoChecksum_Generated_Enum { + p := new(PatternFlowIcmpEchoChecksum_Generated_Enum) *p = x return p } -func (x PatternFlowIgmpv1Checksum_Choice_Enum) String() string { +func (x PatternFlowIcmpEchoChecksum_Generated_Enum) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } -func (PatternFlowIgmpv1Checksum_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { +func (PatternFlowIcmpEchoChecksum_Generated_Enum) Descriptor() protoreflect.EnumDescriptor { return file_otg_proto_enumTypes[310].Descriptor() } -func (PatternFlowIgmpv1Checksum_Choice_Enum) Type() protoreflect.EnumType { +func (PatternFlowIcmpEchoChecksum_Generated_Enum) Type() protoreflect.EnumType { return &file_otg_proto_enumTypes[310] } -func (x PatternFlowIgmpv1Checksum_Choice_Enum) Number() protoreflect.EnumNumber { +func (x PatternFlowIcmpEchoChecksum_Generated_Enum) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } -// Deprecated: Use PatternFlowIgmpv1Checksum_Choice_Enum.Descriptor instead. -func (PatternFlowIgmpv1Checksum_Choice_Enum) EnumDescriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{730, 0, 0} +// Deprecated: Use PatternFlowIcmpEchoChecksum_Generated_Enum.Descriptor instead. +func (PatternFlowIcmpEchoChecksum_Generated_Enum) EnumDescriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{734, 1, 0} } -type PatternFlowIgmpv1Checksum_Generated_Enum int32 +type PatternFlowIcmpEchoIdentifier_Choice_Enum int32 const ( - PatternFlowIgmpv1Checksum_Generated_unspecified PatternFlowIgmpv1Checksum_Generated_Enum = 0 - PatternFlowIgmpv1Checksum_Generated_good PatternFlowIgmpv1Checksum_Generated_Enum = 1 - PatternFlowIgmpv1Checksum_Generated_bad PatternFlowIgmpv1Checksum_Generated_Enum = 2 + PatternFlowIcmpEchoIdentifier_Choice_unspecified PatternFlowIcmpEchoIdentifier_Choice_Enum = 0 + PatternFlowIcmpEchoIdentifier_Choice_value PatternFlowIcmpEchoIdentifier_Choice_Enum = 2 + PatternFlowIcmpEchoIdentifier_Choice_values PatternFlowIcmpEchoIdentifier_Choice_Enum = 3 + PatternFlowIcmpEchoIdentifier_Choice_increment PatternFlowIcmpEchoIdentifier_Choice_Enum = 4 + PatternFlowIcmpEchoIdentifier_Choice_decrement PatternFlowIcmpEchoIdentifier_Choice_Enum = 5 ) -// Enum value maps for PatternFlowIgmpv1Checksum_Generated_Enum. +// Enum value maps for PatternFlowIcmpEchoIdentifier_Choice_Enum. var ( - PatternFlowIgmpv1Checksum_Generated_Enum_name = map[int32]string{ + PatternFlowIcmpEchoIdentifier_Choice_Enum_name = map[int32]string{ 0: "unspecified", - 1: "good", - 2: "bad", + 2: "value", + 3: "values", + 4: "increment", + 5: "decrement", } - PatternFlowIgmpv1Checksum_Generated_Enum_value = map[string]int32{ + PatternFlowIcmpEchoIdentifier_Choice_Enum_value = map[string]int32{ "unspecified": 0, - "good": 1, - "bad": 2, + "value": 2, + "values": 3, + "increment": 4, + "decrement": 5, } ) -func (x PatternFlowIgmpv1Checksum_Generated_Enum) Enum() *PatternFlowIgmpv1Checksum_Generated_Enum { - p := new(PatternFlowIgmpv1Checksum_Generated_Enum) +func (x PatternFlowIcmpEchoIdentifier_Choice_Enum) Enum() *PatternFlowIcmpEchoIdentifier_Choice_Enum { + p := new(PatternFlowIcmpEchoIdentifier_Choice_Enum) *p = x return p } -func (x PatternFlowIgmpv1Checksum_Generated_Enum) String() string { +func (x PatternFlowIcmpEchoIdentifier_Choice_Enum) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } -func (PatternFlowIgmpv1Checksum_Generated_Enum) Descriptor() protoreflect.EnumDescriptor { +func (PatternFlowIcmpEchoIdentifier_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { return file_otg_proto_enumTypes[311].Descriptor() } -func (PatternFlowIgmpv1Checksum_Generated_Enum) Type() protoreflect.EnumType { +func (PatternFlowIcmpEchoIdentifier_Choice_Enum) Type() protoreflect.EnumType { return &file_otg_proto_enumTypes[311] } -func (x PatternFlowIgmpv1Checksum_Generated_Enum) Number() protoreflect.EnumNumber { +func (x PatternFlowIcmpEchoIdentifier_Choice_Enum) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } -// Deprecated: Use PatternFlowIgmpv1Checksum_Generated_Enum.Descriptor instead. -func (PatternFlowIgmpv1Checksum_Generated_Enum) EnumDescriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{730, 1, 0} +// Deprecated: Use PatternFlowIcmpEchoIdentifier_Choice_Enum.Descriptor instead. +func (PatternFlowIcmpEchoIdentifier_Choice_Enum) EnumDescriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{737, 0, 0} } -type PatternFlowIgmpv1GroupAddress_Choice_Enum int32 +type PatternFlowIcmpEchoSequenceNumber_Choice_Enum int32 const ( - PatternFlowIgmpv1GroupAddress_Choice_unspecified PatternFlowIgmpv1GroupAddress_Choice_Enum = 0 - PatternFlowIgmpv1GroupAddress_Choice_value PatternFlowIgmpv1GroupAddress_Choice_Enum = 2 - PatternFlowIgmpv1GroupAddress_Choice_values PatternFlowIgmpv1GroupAddress_Choice_Enum = 3 - PatternFlowIgmpv1GroupAddress_Choice_increment PatternFlowIgmpv1GroupAddress_Choice_Enum = 4 - PatternFlowIgmpv1GroupAddress_Choice_decrement PatternFlowIgmpv1GroupAddress_Choice_Enum = 5 + PatternFlowIcmpEchoSequenceNumber_Choice_unspecified PatternFlowIcmpEchoSequenceNumber_Choice_Enum = 0 + PatternFlowIcmpEchoSequenceNumber_Choice_value PatternFlowIcmpEchoSequenceNumber_Choice_Enum = 2 + PatternFlowIcmpEchoSequenceNumber_Choice_values PatternFlowIcmpEchoSequenceNumber_Choice_Enum = 3 + PatternFlowIcmpEchoSequenceNumber_Choice_increment PatternFlowIcmpEchoSequenceNumber_Choice_Enum = 4 + PatternFlowIcmpEchoSequenceNumber_Choice_decrement PatternFlowIcmpEchoSequenceNumber_Choice_Enum = 5 ) -// Enum value maps for PatternFlowIgmpv1GroupAddress_Choice_Enum. +// Enum value maps for PatternFlowIcmpEchoSequenceNumber_Choice_Enum. var ( - PatternFlowIgmpv1GroupAddress_Choice_Enum_name = map[int32]string{ + PatternFlowIcmpEchoSequenceNumber_Choice_Enum_name = map[int32]string{ 0: "unspecified", 2: "value", 3: "values", 4: "increment", 5: "decrement", } - PatternFlowIgmpv1GroupAddress_Choice_Enum_value = map[string]int32{ + PatternFlowIcmpEchoSequenceNumber_Choice_Enum_value = map[string]int32{ "unspecified": 0, "value": 2, "values": 3, @@ -17066,224 +16988,206 @@ var ( } ) -func (x PatternFlowIgmpv1GroupAddress_Choice_Enum) Enum() *PatternFlowIgmpv1GroupAddress_Choice_Enum { - p := new(PatternFlowIgmpv1GroupAddress_Choice_Enum) +func (x PatternFlowIcmpEchoSequenceNumber_Choice_Enum) Enum() *PatternFlowIcmpEchoSequenceNumber_Choice_Enum { + p := new(PatternFlowIcmpEchoSequenceNumber_Choice_Enum) *p = x return p } -func (x PatternFlowIgmpv1GroupAddress_Choice_Enum) String() string { +func (x PatternFlowIcmpEchoSequenceNumber_Choice_Enum) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } -func (PatternFlowIgmpv1GroupAddress_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { +func (PatternFlowIcmpEchoSequenceNumber_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { return file_otg_proto_enumTypes[312].Descriptor() } -func (PatternFlowIgmpv1GroupAddress_Choice_Enum) Type() protoreflect.EnumType { +func (PatternFlowIcmpEchoSequenceNumber_Choice_Enum) Type() protoreflect.EnumType { return &file_otg_proto_enumTypes[312] } -func (x PatternFlowIgmpv1GroupAddress_Choice_Enum) Number() protoreflect.EnumNumber { +func (x PatternFlowIcmpEchoSequenceNumber_Choice_Enum) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } -// Deprecated: Use PatternFlowIgmpv1GroupAddress_Choice_Enum.Descriptor instead. -func (PatternFlowIgmpv1GroupAddress_Choice_Enum) EnumDescriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{733, 0, 0} +// Deprecated: Use PatternFlowIcmpEchoSequenceNumber_Choice_Enum.Descriptor instead. +func (PatternFlowIcmpEchoSequenceNumber_Choice_Enum) EnumDescriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{740, 0, 0} } -type PatternFlowMplsLabel_Choice_Enum int32 +type PatternFlowIcmpCommonChecksum_Choice_Enum int32 const ( - PatternFlowMplsLabel_Choice_unspecified PatternFlowMplsLabel_Choice_Enum = 0 - PatternFlowMplsLabel_Choice_value PatternFlowMplsLabel_Choice_Enum = 2 - PatternFlowMplsLabel_Choice_values PatternFlowMplsLabel_Choice_Enum = 3 - PatternFlowMplsLabel_Choice_auto PatternFlowMplsLabel_Choice_Enum = 1 - PatternFlowMplsLabel_Choice_increment PatternFlowMplsLabel_Choice_Enum = 4 - PatternFlowMplsLabel_Choice_decrement PatternFlowMplsLabel_Choice_Enum = 5 + PatternFlowIcmpCommonChecksum_Choice_unspecified PatternFlowIcmpCommonChecksum_Choice_Enum = 0 + PatternFlowIcmpCommonChecksum_Choice_generated PatternFlowIcmpCommonChecksum_Choice_Enum = 1 + PatternFlowIcmpCommonChecksum_Choice_custom PatternFlowIcmpCommonChecksum_Choice_Enum = 2 ) -// Enum value maps for PatternFlowMplsLabel_Choice_Enum. +// Enum value maps for PatternFlowIcmpCommonChecksum_Choice_Enum. var ( - PatternFlowMplsLabel_Choice_Enum_name = map[int32]string{ + PatternFlowIcmpCommonChecksum_Choice_Enum_name = map[int32]string{ 0: "unspecified", - 2: "value", - 3: "values", - 1: "auto", - 4: "increment", - 5: "decrement", + 1: "generated", + 2: "custom", } - PatternFlowMplsLabel_Choice_Enum_value = map[string]int32{ + PatternFlowIcmpCommonChecksum_Choice_Enum_value = map[string]int32{ "unspecified": 0, - "value": 2, - "values": 3, - "auto": 1, - "increment": 4, - "decrement": 5, + "generated": 1, + "custom": 2, } ) -func (x PatternFlowMplsLabel_Choice_Enum) Enum() *PatternFlowMplsLabel_Choice_Enum { - p := new(PatternFlowMplsLabel_Choice_Enum) +func (x PatternFlowIcmpCommonChecksum_Choice_Enum) Enum() *PatternFlowIcmpCommonChecksum_Choice_Enum { + p := new(PatternFlowIcmpCommonChecksum_Choice_Enum) *p = x return p } -func (x PatternFlowMplsLabel_Choice_Enum) String() string { +func (x PatternFlowIcmpCommonChecksum_Choice_Enum) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } -func (PatternFlowMplsLabel_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { +func (PatternFlowIcmpCommonChecksum_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { return file_otg_proto_enumTypes[313].Descriptor() } -func (PatternFlowMplsLabel_Choice_Enum) Type() protoreflect.EnumType { +func (PatternFlowIcmpCommonChecksum_Choice_Enum) Type() protoreflect.EnumType { return &file_otg_proto_enumTypes[313] } -func (x PatternFlowMplsLabel_Choice_Enum) Number() protoreflect.EnumNumber { +func (x PatternFlowIcmpCommonChecksum_Choice_Enum) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } -// Deprecated: Use PatternFlowMplsLabel_Choice_Enum.Descriptor instead. -func (PatternFlowMplsLabel_Choice_Enum) EnumDescriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{736, 0, 0} +// Deprecated: Use PatternFlowIcmpCommonChecksum_Choice_Enum.Descriptor instead. +func (PatternFlowIcmpCommonChecksum_Choice_Enum) EnumDescriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{741, 0, 0} } -type PatternFlowMplsTrafficClass_Choice_Enum int32 +type PatternFlowIcmpCommonChecksum_Generated_Enum int32 const ( - PatternFlowMplsTrafficClass_Choice_unspecified PatternFlowMplsTrafficClass_Choice_Enum = 0 - PatternFlowMplsTrafficClass_Choice_value PatternFlowMplsTrafficClass_Choice_Enum = 2 - PatternFlowMplsTrafficClass_Choice_values PatternFlowMplsTrafficClass_Choice_Enum = 3 - PatternFlowMplsTrafficClass_Choice_increment PatternFlowMplsTrafficClass_Choice_Enum = 4 - PatternFlowMplsTrafficClass_Choice_decrement PatternFlowMplsTrafficClass_Choice_Enum = 5 + PatternFlowIcmpCommonChecksum_Generated_unspecified PatternFlowIcmpCommonChecksum_Generated_Enum = 0 + PatternFlowIcmpCommonChecksum_Generated_good PatternFlowIcmpCommonChecksum_Generated_Enum = 1 + PatternFlowIcmpCommonChecksum_Generated_bad PatternFlowIcmpCommonChecksum_Generated_Enum = 2 ) -// Enum value maps for PatternFlowMplsTrafficClass_Choice_Enum. +// Enum value maps for PatternFlowIcmpCommonChecksum_Generated_Enum. var ( - PatternFlowMplsTrafficClass_Choice_Enum_name = map[int32]string{ + PatternFlowIcmpCommonChecksum_Generated_Enum_name = map[int32]string{ 0: "unspecified", - 2: "value", - 3: "values", - 4: "increment", - 5: "decrement", + 1: "good", + 2: "bad", } - PatternFlowMplsTrafficClass_Choice_Enum_value = map[string]int32{ + PatternFlowIcmpCommonChecksum_Generated_Enum_value = map[string]int32{ "unspecified": 0, - "value": 2, - "values": 3, - "increment": 4, - "decrement": 5, + "good": 1, + "bad": 2, } ) -func (x PatternFlowMplsTrafficClass_Choice_Enum) Enum() *PatternFlowMplsTrafficClass_Choice_Enum { - p := new(PatternFlowMplsTrafficClass_Choice_Enum) +func (x PatternFlowIcmpCommonChecksum_Generated_Enum) Enum() *PatternFlowIcmpCommonChecksum_Generated_Enum { + p := new(PatternFlowIcmpCommonChecksum_Generated_Enum) *p = x return p } -func (x PatternFlowMplsTrafficClass_Choice_Enum) String() string { +func (x PatternFlowIcmpCommonChecksum_Generated_Enum) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } -func (PatternFlowMplsTrafficClass_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { +func (PatternFlowIcmpCommonChecksum_Generated_Enum) Descriptor() protoreflect.EnumDescriptor { return file_otg_proto_enumTypes[314].Descriptor() } -func (PatternFlowMplsTrafficClass_Choice_Enum) Type() protoreflect.EnumType { +func (PatternFlowIcmpCommonChecksum_Generated_Enum) Type() protoreflect.EnumType { return &file_otg_proto_enumTypes[314] } -func (x PatternFlowMplsTrafficClass_Choice_Enum) Number() protoreflect.EnumNumber { +func (x PatternFlowIcmpCommonChecksum_Generated_Enum) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } -// Deprecated: Use PatternFlowMplsTrafficClass_Choice_Enum.Descriptor instead. -func (PatternFlowMplsTrafficClass_Choice_Enum) EnumDescriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{739, 0, 0} +// Deprecated: Use PatternFlowIcmpCommonChecksum_Generated_Enum.Descriptor instead. +func (PatternFlowIcmpCommonChecksum_Generated_Enum) EnumDescriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{741, 1, 0} } -type PatternFlowMplsBottomOfStack_Choice_Enum int32 +type PatternFlowIcmpNextFieldsIdentifier_Choice_Enum int32 const ( - PatternFlowMplsBottomOfStack_Choice_unspecified PatternFlowMplsBottomOfStack_Choice_Enum = 0 - PatternFlowMplsBottomOfStack_Choice_value PatternFlowMplsBottomOfStack_Choice_Enum = 2 - PatternFlowMplsBottomOfStack_Choice_values PatternFlowMplsBottomOfStack_Choice_Enum = 3 - PatternFlowMplsBottomOfStack_Choice_auto PatternFlowMplsBottomOfStack_Choice_Enum = 1 - PatternFlowMplsBottomOfStack_Choice_increment PatternFlowMplsBottomOfStack_Choice_Enum = 4 - PatternFlowMplsBottomOfStack_Choice_decrement PatternFlowMplsBottomOfStack_Choice_Enum = 5 + PatternFlowIcmpNextFieldsIdentifier_Choice_unspecified PatternFlowIcmpNextFieldsIdentifier_Choice_Enum = 0 + PatternFlowIcmpNextFieldsIdentifier_Choice_value PatternFlowIcmpNextFieldsIdentifier_Choice_Enum = 2 + PatternFlowIcmpNextFieldsIdentifier_Choice_values PatternFlowIcmpNextFieldsIdentifier_Choice_Enum = 3 + PatternFlowIcmpNextFieldsIdentifier_Choice_increment PatternFlowIcmpNextFieldsIdentifier_Choice_Enum = 4 + PatternFlowIcmpNextFieldsIdentifier_Choice_decrement PatternFlowIcmpNextFieldsIdentifier_Choice_Enum = 5 ) -// Enum value maps for PatternFlowMplsBottomOfStack_Choice_Enum. +// Enum value maps for PatternFlowIcmpNextFieldsIdentifier_Choice_Enum. var ( - PatternFlowMplsBottomOfStack_Choice_Enum_name = map[int32]string{ + PatternFlowIcmpNextFieldsIdentifier_Choice_Enum_name = map[int32]string{ 0: "unspecified", 2: "value", 3: "values", - 1: "auto", 4: "increment", 5: "decrement", } - PatternFlowMplsBottomOfStack_Choice_Enum_value = map[string]int32{ + PatternFlowIcmpNextFieldsIdentifier_Choice_Enum_value = map[string]int32{ "unspecified": 0, "value": 2, "values": 3, - "auto": 1, "increment": 4, "decrement": 5, } ) -func (x PatternFlowMplsBottomOfStack_Choice_Enum) Enum() *PatternFlowMplsBottomOfStack_Choice_Enum { - p := new(PatternFlowMplsBottomOfStack_Choice_Enum) +func (x PatternFlowIcmpNextFieldsIdentifier_Choice_Enum) Enum() *PatternFlowIcmpNextFieldsIdentifier_Choice_Enum { + p := new(PatternFlowIcmpNextFieldsIdentifier_Choice_Enum) *p = x return p } -func (x PatternFlowMplsBottomOfStack_Choice_Enum) String() string { +func (x PatternFlowIcmpNextFieldsIdentifier_Choice_Enum) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } -func (PatternFlowMplsBottomOfStack_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { +func (PatternFlowIcmpNextFieldsIdentifier_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { return file_otg_proto_enumTypes[315].Descriptor() } -func (PatternFlowMplsBottomOfStack_Choice_Enum) Type() protoreflect.EnumType { +func (PatternFlowIcmpNextFieldsIdentifier_Choice_Enum) Type() protoreflect.EnumType { return &file_otg_proto_enumTypes[315] } -func (x PatternFlowMplsBottomOfStack_Choice_Enum) Number() protoreflect.EnumNumber { +func (x PatternFlowIcmpNextFieldsIdentifier_Choice_Enum) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } -// Deprecated: Use PatternFlowMplsBottomOfStack_Choice_Enum.Descriptor instead. -func (PatternFlowMplsBottomOfStack_Choice_Enum) EnumDescriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{742, 0, 0} +// Deprecated: Use PatternFlowIcmpNextFieldsIdentifier_Choice_Enum.Descriptor instead. +func (PatternFlowIcmpNextFieldsIdentifier_Choice_Enum) EnumDescriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{744, 0, 0} } -type PatternFlowMplsTimeToLive_Choice_Enum int32 +type PatternFlowIcmpNextFieldsSequenceNumber_Choice_Enum int32 const ( - PatternFlowMplsTimeToLive_Choice_unspecified PatternFlowMplsTimeToLive_Choice_Enum = 0 - PatternFlowMplsTimeToLive_Choice_value PatternFlowMplsTimeToLive_Choice_Enum = 2 - PatternFlowMplsTimeToLive_Choice_values PatternFlowMplsTimeToLive_Choice_Enum = 3 - PatternFlowMplsTimeToLive_Choice_increment PatternFlowMplsTimeToLive_Choice_Enum = 4 - PatternFlowMplsTimeToLive_Choice_decrement PatternFlowMplsTimeToLive_Choice_Enum = 5 + PatternFlowIcmpNextFieldsSequenceNumber_Choice_unspecified PatternFlowIcmpNextFieldsSequenceNumber_Choice_Enum = 0 + PatternFlowIcmpNextFieldsSequenceNumber_Choice_value PatternFlowIcmpNextFieldsSequenceNumber_Choice_Enum = 2 + PatternFlowIcmpNextFieldsSequenceNumber_Choice_values PatternFlowIcmpNextFieldsSequenceNumber_Choice_Enum = 3 + PatternFlowIcmpNextFieldsSequenceNumber_Choice_increment PatternFlowIcmpNextFieldsSequenceNumber_Choice_Enum = 4 + PatternFlowIcmpNextFieldsSequenceNumber_Choice_decrement PatternFlowIcmpNextFieldsSequenceNumber_Choice_Enum = 5 ) -// Enum value maps for PatternFlowMplsTimeToLive_Choice_Enum. +// Enum value maps for PatternFlowIcmpNextFieldsSequenceNumber_Choice_Enum. var ( - PatternFlowMplsTimeToLive_Choice_Enum_name = map[int32]string{ + PatternFlowIcmpNextFieldsSequenceNumber_Choice_Enum_name = map[int32]string{ 0: "unspecified", 2: "value", 3: "values", 4: "increment", 5: "decrement", } - PatternFlowMplsTimeToLive_Choice_Enum_value = map[string]int32{ + PatternFlowIcmpNextFieldsSequenceNumber_Choice_Enum_value = map[string]int32{ "unspecified": 0, "value": 2, "values": 3, @@ -17292,3393 +17196,3274 @@ var ( } ) -func (x PatternFlowMplsTimeToLive_Choice_Enum) Enum() *PatternFlowMplsTimeToLive_Choice_Enum { - p := new(PatternFlowMplsTimeToLive_Choice_Enum) +func (x PatternFlowIcmpNextFieldsSequenceNumber_Choice_Enum) Enum() *PatternFlowIcmpNextFieldsSequenceNumber_Choice_Enum { + p := new(PatternFlowIcmpNextFieldsSequenceNumber_Choice_Enum) *p = x return p } -func (x PatternFlowMplsTimeToLive_Choice_Enum) String() string { +func (x PatternFlowIcmpNextFieldsSequenceNumber_Choice_Enum) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } -func (PatternFlowMplsTimeToLive_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { +func (PatternFlowIcmpNextFieldsSequenceNumber_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { return file_otg_proto_enumTypes[316].Descriptor() } -func (PatternFlowMplsTimeToLive_Choice_Enum) Type() protoreflect.EnumType { +func (PatternFlowIcmpNextFieldsSequenceNumber_Choice_Enum) Type() protoreflect.EnumType { return &file_otg_proto_enumTypes[316] } -func (x PatternFlowMplsTimeToLive_Choice_Enum) Number() protoreflect.EnumNumber { +func (x PatternFlowIcmpNextFieldsSequenceNumber_Choice_Enum) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } -// Deprecated: Use PatternFlowMplsTimeToLive_Choice_Enum.Descriptor instead. -func (PatternFlowMplsTimeToLive_Choice_Enum) EnumDescriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{745, 0, 0} +// Deprecated: Use PatternFlowIcmpNextFieldsSequenceNumber_Choice_Enum.Descriptor instead. +func (PatternFlowIcmpNextFieldsSequenceNumber_Choice_Enum) EnumDescriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{747, 0, 0} } -// A container for all models that are part of the configuration. -type Config struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields +type PatternFlowIcmpv6EchoType_Choice_Enum int32 - // The ports that will be configured on the traffic generator. - Ports []*Port `protobuf:"bytes,1,rep,name=ports,proto3" json:"ports,omitempty"` - // The LAGs that will be configured on the traffic generator. - Lags []*Lag `protobuf:"bytes,2,rep,name=lags,proto3" json:"lags,omitempty"` - // The layer1 settings that will be configured on the traffic generator. - // Since layer1 settings usually vary across variety of test ports, these - // most likely won't be portable. - Layer1 []*Layer1 `protobuf:"bytes,3,rep,name=layer1,proto3" json:"layer1,omitempty"` - // The capture settings that will be configured on the traffic generator. - Captures []*Capture `protobuf:"bytes,4,rep,name=captures,proto3" json:"captures,omitempty"` - // The emulated devices that will be configured on the traffic generator. - // Each device contains configurations for network interfaces and - // protocols running on top of those interfaces. - Devices []*Device `protobuf:"bytes,5,rep,name=devices,proto3" json:"devices,omitempty"` - // The flows that will be configured on the traffic generator. - Flows []*Flow `protobuf:"bytes,6,rep,name=flows,proto3" json:"flows,omitempty"` - // Description missing in models - Events *Event `protobuf:"bytes,7,opt,name=events,proto3" json:"events,omitempty"` - // Description missing in models - Options *ConfigOptions `protobuf:"bytes,8,opt,name=options,proto3" json:"options,omitempty"` - // LLDP protocol that will be configured on traffic generator. - Lldp []*Lldp `protobuf:"bytes,9,rep,name=lldp,proto3" json:"lldp,omitempty"` -} +const ( + PatternFlowIcmpv6EchoType_Choice_unspecified PatternFlowIcmpv6EchoType_Choice_Enum = 0 + PatternFlowIcmpv6EchoType_Choice_value PatternFlowIcmpv6EchoType_Choice_Enum = 2 + PatternFlowIcmpv6EchoType_Choice_values PatternFlowIcmpv6EchoType_Choice_Enum = 3 + PatternFlowIcmpv6EchoType_Choice_increment PatternFlowIcmpv6EchoType_Choice_Enum = 4 + PatternFlowIcmpv6EchoType_Choice_decrement PatternFlowIcmpv6EchoType_Choice_Enum = 5 +) -func (x *Config) Reset() { - *x = Config{} - if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) +// Enum value maps for PatternFlowIcmpv6EchoType_Choice_Enum. +var ( + PatternFlowIcmpv6EchoType_Choice_Enum_name = map[int32]string{ + 0: "unspecified", + 2: "value", + 3: "values", + 4: "increment", + 5: "decrement", } -} + PatternFlowIcmpv6EchoType_Choice_Enum_value = map[string]int32{ + "unspecified": 0, + "value": 2, + "values": 3, + "increment": 4, + "decrement": 5, + } +) -func (x *Config) String() string { - return protoimpl.X.MessageStringOf(x) +func (x PatternFlowIcmpv6EchoType_Choice_Enum) Enum() *PatternFlowIcmpv6EchoType_Choice_Enum { + p := new(PatternFlowIcmpv6EchoType_Choice_Enum) + *p = x + return p } -func (*Config) ProtoMessage() {} - -func (x *Config) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[0] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) +func (x PatternFlowIcmpv6EchoType_Choice_Enum) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } -// Deprecated: Use Config.ProtoReflect.Descriptor instead. -func (*Config) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{0} +func (PatternFlowIcmpv6EchoType_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { + return file_otg_proto_enumTypes[317].Descriptor() } -func (x *Config) GetPorts() []*Port { - if x != nil { - return x.Ports - } - return nil +func (PatternFlowIcmpv6EchoType_Choice_Enum) Type() protoreflect.EnumType { + return &file_otg_proto_enumTypes[317] } -func (x *Config) GetLags() []*Lag { - if x != nil { - return x.Lags - } - return nil +func (x PatternFlowIcmpv6EchoType_Choice_Enum) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) } -func (x *Config) GetLayer1() []*Layer1 { - if x != nil { - return x.Layer1 - } - return nil +// Deprecated: Use PatternFlowIcmpv6EchoType_Choice_Enum.Descriptor instead. +func (PatternFlowIcmpv6EchoType_Choice_Enum) EnumDescriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{750, 0, 0} } -func (x *Config) GetCaptures() []*Capture { - if x != nil { - return x.Captures +type PatternFlowIcmpv6EchoCode_Choice_Enum int32 + +const ( + PatternFlowIcmpv6EchoCode_Choice_unspecified PatternFlowIcmpv6EchoCode_Choice_Enum = 0 + PatternFlowIcmpv6EchoCode_Choice_value PatternFlowIcmpv6EchoCode_Choice_Enum = 2 + PatternFlowIcmpv6EchoCode_Choice_values PatternFlowIcmpv6EchoCode_Choice_Enum = 3 + PatternFlowIcmpv6EchoCode_Choice_increment PatternFlowIcmpv6EchoCode_Choice_Enum = 4 + PatternFlowIcmpv6EchoCode_Choice_decrement PatternFlowIcmpv6EchoCode_Choice_Enum = 5 +) + +// Enum value maps for PatternFlowIcmpv6EchoCode_Choice_Enum. +var ( + PatternFlowIcmpv6EchoCode_Choice_Enum_name = map[int32]string{ + 0: "unspecified", + 2: "value", + 3: "values", + 4: "increment", + 5: "decrement", } - return nil + PatternFlowIcmpv6EchoCode_Choice_Enum_value = map[string]int32{ + "unspecified": 0, + "value": 2, + "values": 3, + "increment": 4, + "decrement": 5, + } +) + +func (x PatternFlowIcmpv6EchoCode_Choice_Enum) Enum() *PatternFlowIcmpv6EchoCode_Choice_Enum { + p := new(PatternFlowIcmpv6EchoCode_Choice_Enum) + *p = x + return p } -func (x *Config) GetDevices() []*Device { - if x != nil { - return x.Devices - } - return nil +func (x PatternFlowIcmpv6EchoCode_Choice_Enum) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } -func (x *Config) GetFlows() []*Flow { - if x != nil { - return x.Flows - } - return nil +func (PatternFlowIcmpv6EchoCode_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { + return file_otg_proto_enumTypes[318].Descriptor() } -func (x *Config) GetEvents() *Event { - if x != nil { - return x.Events - } - return nil +func (PatternFlowIcmpv6EchoCode_Choice_Enum) Type() protoreflect.EnumType { + return &file_otg_proto_enumTypes[318] } -func (x *Config) GetOptions() *ConfigOptions { - if x != nil { - return x.Options - } - return nil +func (x PatternFlowIcmpv6EchoCode_Choice_Enum) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) } -func (x *Config) GetLldp() []*Lldp { - if x != nil { - return x.Lldp - } - return nil +// Deprecated: Use PatternFlowIcmpv6EchoCode_Choice_Enum.Descriptor instead. +func (PatternFlowIcmpv6EchoCode_Choice_Enum) EnumDescriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{753, 0, 0} } -// Global configuration options. -type ConfigOptions struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields +type PatternFlowIcmpv6EchoIdentifier_Choice_Enum int32 - // Description missing in models - PortOptions *PortOptions `protobuf:"bytes,1,opt,name=port_options,json=portOptions,proto3" json:"port_options,omitempty"` - // Description missing in models - ProtocolOptions *ProtocolOptions `protobuf:"bytes,2,opt,name=protocol_options,json=protocolOptions,proto3" json:"protocol_options,omitempty"` -} +const ( + PatternFlowIcmpv6EchoIdentifier_Choice_unspecified PatternFlowIcmpv6EchoIdentifier_Choice_Enum = 0 + PatternFlowIcmpv6EchoIdentifier_Choice_value PatternFlowIcmpv6EchoIdentifier_Choice_Enum = 2 + PatternFlowIcmpv6EchoIdentifier_Choice_values PatternFlowIcmpv6EchoIdentifier_Choice_Enum = 3 + PatternFlowIcmpv6EchoIdentifier_Choice_increment PatternFlowIcmpv6EchoIdentifier_Choice_Enum = 4 + PatternFlowIcmpv6EchoIdentifier_Choice_decrement PatternFlowIcmpv6EchoIdentifier_Choice_Enum = 5 +) -func (x *ConfigOptions) Reset() { - *x = ConfigOptions{} - if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[1] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) +// Enum value maps for PatternFlowIcmpv6EchoIdentifier_Choice_Enum. +var ( + PatternFlowIcmpv6EchoIdentifier_Choice_Enum_name = map[int32]string{ + 0: "unspecified", + 2: "value", + 3: "values", + 4: "increment", + 5: "decrement", } -} + PatternFlowIcmpv6EchoIdentifier_Choice_Enum_value = map[string]int32{ + "unspecified": 0, + "value": 2, + "values": 3, + "increment": 4, + "decrement": 5, + } +) -func (x *ConfigOptions) String() string { - return protoimpl.X.MessageStringOf(x) +func (x PatternFlowIcmpv6EchoIdentifier_Choice_Enum) Enum() *PatternFlowIcmpv6EchoIdentifier_Choice_Enum { + p := new(PatternFlowIcmpv6EchoIdentifier_Choice_Enum) + *p = x + return p } -func (*ConfigOptions) ProtoMessage() {} +func (x PatternFlowIcmpv6EchoIdentifier_Choice_Enum) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} -func (x *ConfigOptions) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[1] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) +func (PatternFlowIcmpv6EchoIdentifier_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { + return file_otg_proto_enumTypes[319].Descriptor() } -// Deprecated: Use ConfigOptions.ProtoReflect.Descriptor instead. -func (*ConfigOptions) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{1} +func (PatternFlowIcmpv6EchoIdentifier_Choice_Enum) Type() protoreflect.EnumType { + return &file_otg_proto_enumTypes[319] } -func (x *ConfigOptions) GetPortOptions() *PortOptions { - if x != nil { - return x.PortOptions - } - return nil +func (x PatternFlowIcmpv6EchoIdentifier_Choice_Enum) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) } -func (x *ConfigOptions) GetProtocolOptions() *ProtocolOptions { - if x != nil { - return x.ProtocolOptions - } - return nil +// Deprecated: Use PatternFlowIcmpv6EchoIdentifier_Choice_Enum.Descriptor instead. +func (PatternFlowIcmpv6EchoIdentifier_Choice_Enum) EnumDescriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{756, 0, 0} } -// An abstract test port. -type Port struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields +type PatternFlowIcmpv6EchoSequenceNumber_Choice_Enum int32 - // The location of a test port. It is the endpoint where packets will emit from. - // Test port locations can be the following: - // - physical appliance with multiple ports - // - physical chassis with multiple cards and ports - // - local interface - // - virtual machine, docker container, kubernetes cluster - // - // The test port location format is implementation specific. Use the /results/capabilities - // API to determine what formats an implementation supports for the location property. - // Get the configured location state by using the /results/port API. - Location *string `protobuf:"bytes,1,opt,name=location,proto3,oneof" json:"location,omitempty"` - // Globally unique name of an object. It also serves as the primary key for arrays of - // objects. - // required = true - Name *string `protobuf:"bytes,2,opt,name=name,proto3,oneof" json:"name,omitempty"` -} +const ( + PatternFlowIcmpv6EchoSequenceNumber_Choice_unspecified PatternFlowIcmpv6EchoSequenceNumber_Choice_Enum = 0 + PatternFlowIcmpv6EchoSequenceNumber_Choice_value PatternFlowIcmpv6EchoSequenceNumber_Choice_Enum = 2 + PatternFlowIcmpv6EchoSequenceNumber_Choice_values PatternFlowIcmpv6EchoSequenceNumber_Choice_Enum = 3 + PatternFlowIcmpv6EchoSequenceNumber_Choice_increment PatternFlowIcmpv6EchoSequenceNumber_Choice_Enum = 4 + PatternFlowIcmpv6EchoSequenceNumber_Choice_decrement PatternFlowIcmpv6EchoSequenceNumber_Choice_Enum = 5 +) -func (x *Port) Reset() { - *x = Port{} - if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[2] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) +// Enum value maps for PatternFlowIcmpv6EchoSequenceNumber_Choice_Enum. +var ( + PatternFlowIcmpv6EchoSequenceNumber_Choice_Enum_name = map[int32]string{ + 0: "unspecified", + 2: "value", + 3: "values", + 4: "increment", + 5: "decrement", } -} + PatternFlowIcmpv6EchoSequenceNumber_Choice_Enum_value = map[string]int32{ + "unspecified": 0, + "value": 2, + "values": 3, + "increment": 4, + "decrement": 5, + } +) -func (x *Port) String() string { - return protoimpl.X.MessageStringOf(x) +func (x PatternFlowIcmpv6EchoSequenceNumber_Choice_Enum) Enum() *PatternFlowIcmpv6EchoSequenceNumber_Choice_Enum { + p := new(PatternFlowIcmpv6EchoSequenceNumber_Choice_Enum) + *p = x + return p } -func (*Port) ProtoMessage() {} +func (x PatternFlowIcmpv6EchoSequenceNumber_Choice_Enum) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} -func (x *Port) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[2] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) +func (PatternFlowIcmpv6EchoSequenceNumber_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { + return file_otg_proto_enumTypes[320].Descriptor() } -// Deprecated: Use Port.ProtoReflect.Descriptor instead. -func (*Port) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{2} +func (PatternFlowIcmpv6EchoSequenceNumber_Choice_Enum) Type() protoreflect.EnumType { + return &file_otg_proto_enumTypes[320] } -func (x *Port) GetLocation() string { - if x != nil && x.Location != nil { - return *x.Location - } - return "" +func (x PatternFlowIcmpv6EchoSequenceNumber_Choice_Enum) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) } -func (x *Port) GetName() string { - if x != nil && x.Name != nil { - return *x.Name - } - return "" +// Deprecated: Use PatternFlowIcmpv6EchoSequenceNumber_Choice_Enum.Descriptor instead. +func (PatternFlowIcmpv6EchoSequenceNumber_Choice_Enum) EnumDescriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{759, 0, 0} } -// Common port options that apply to all configured Port objects. -type PortOptions struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields +type PatternFlowIcmpv6EchoChecksum_Choice_Enum int32 - // Preempt all the test port locations as defined by the Port.Port.properties.location. - // If the test ports defined by their location values are in use and this value is - // true, the test ports will be preempted. - // default = False - LocationPreemption *bool `protobuf:"varint,1,opt,name=location_preemption,json=locationPreemption,proto3,oneof" json:"location_preemption,omitempty"` -} +const ( + PatternFlowIcmpv6EchoChecksum_Choice_unspecified PatternFlowIcmpv6EchoChecksum_Choice_Enum = 0 + PatternFlowIcmpv6EchoChecksum_Choice_generated PatternFlowIcmpv6EchoChecksum_Choice_Enum = 1 + PatternFlowIcmpv6EchoChecksum_Choice_custom PatternFlowIcmpv6EchoChecksum_Choice_Enum = 2 +) -func (x *PortOptions) Reset() { - *x = PortOptions{} - if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[3] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) +// Enum value maps for PatternFlowIcmpv6EchoChecksum_Choice_Enum. +var ( + PatternFlowIcmpv6EchoChecksum_Choice_Enum_name = map[int32]string{ + 0: "unspecified", + 1: "generated", + 2: "custom", } -} + PatternFlowIcmpv6EchoChecksum_Choice_Enum_value = map[string]int32{ + "unspecified": 0, + "generated": 1, + "custom": 2, + } +) -func (x *PortOptions) String() string { - return protoimpl.X.MessageStringOf(x) +func (x PatternFlowIcmpv6EchoChecksum_Choice_Enum) Enum() *PatternFlowIcmpv6EchoChecksum_Choice_Enum { + p := new(PatternFlowIcmpv6EchoChecksum_Choice_Enum) + *p = x + return p } -func (*PortOptions) ProtoMessage() {} - -func (x *PortOptions) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[3] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) +func (x PatternFlowIcmpv6EchoChecksum_Choice_Enum) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } -// Deprecated: Use PortOptions.ProtoReflect.Descriptor instead. -func (*PortOptions) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{3} +func (PatternFlowIcmpv6EchoChecksum_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { + return file_otg_proto_enumTypes[321].Descriptor() } -func (x *PortOptions) GetLocationPreemption() bool { - if x != nil && x.LocationPreemption != nil { - return *x.LocationPreemption - } - return false +func (PatternFlowIcmpv6EchoChecksum_Choice_Enum) Type() protoreflect.EnumType { + return &file_otg_proto_enumTypes[321] } -// The container for LAG (ports group) - aggregation of multiple LAG members (ports) -type Lag struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // Description missing in models - Ports []*LagPort `protobuf:"bytes,1,rep,name=ports,proto3" json:"ports,omitempty"` - // Description missing in models - Protocol *LagProtocol `protobuf:"bytes,2,opt,name=protocol,proto3" json:"protocol,omitempty"` - // Specifies the mininum number of member interfaces that must be active for the aggregate - // interface to be available. - // If the aggregate interface is not available due to min-links criterion not being - // met, LACPDUs continue to be transmitted and received by the member interfaces if - // LACP is enabled, but other PDUs are not transmitted or received. - // default = 1 - MinLinks *uint32 `protobuf:"varint,3,opt,name=min_links,json=minLinks,proto3,oneof" json:"min_links,omitempty"` - // Globally unique name of an object. It also serves as the primary key for arrays of - // objects. - // required = true - Name *string `protobuf:"bytes,4,opt,name=name,proto3,oneof" json:"name,omitempty"` +func (x PatternFlowIcmpv6EchoChecksum_Choice_Enum) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) } -func (x *Lag) Reset() { - *x = Lag{} - if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[4] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +// Deprecated: Use PatternFlowIcmpv6EchoChecksum_Choice_Enum.Descriptor instead. +func (PatternFlowIcmpv6EchoChecksum_Choice_Enum) EnumDescriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{760, 0, 0} } -func (x *Lag) String() string { - return protoimpl.X.MessageStringOf(x) -} +type PatternFlowIcmpv6EchoChecksum_Generated_Enum int32 -func (*Lag) ProtoMessage() {} +const ( + PatternFlowIcmpv6EchoChecksum_Generated_unspecified PatternFlowIcmpv6EchoChecksum_Generated_Enum = 0 + PatternFlowIcmpv6EchoChecksum_Generated_good PatternFlowIcmpv6EchoChecksum_Generated_Enum = 1 + PatternFlowIcmpv6EchoChecksum_Generated_bad PatternFlowIcmpv6EchoChecksum_Generated_Enum = 2 +) -func (x *Lag) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[4] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms +// Enum value maps for PatternFlowIcmpv6EchoChecksum_Generated_Enum. +var ( + PatternFlowIcmpv6EchoChecksum_Generated_Enum_name = map[int32]string{ + 0: "unspecified", + 1: "good", + 2: "bad", } - return mi.MessageOf(x) + PatternFlowIcmpv6EchoChecksum_Generated_Enum_value = map[string]int32{ + "unspecified": 0, + "good": 1, + "bad": 2, + } +) + +func (x PatternFlowIcmpv6EchoChecksum_Generated_Enum) Enum() *PatternFlowIcmpv6EchoChecksum_Generated_Enum { + p := new(PatternFlowIcmpv6EchoChecksum_Generated_Enum) + *p = x + return p } -// Deprecated: Use Lag.ProtoReflect.Descriptor instead. -func (*Lag) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{4} +func (x PatternFlowIcmpv6EchoChecksum_Generated_Enum) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } -func (x *Lag) GetPorts() []*LagPort { - if x != nil { - return x.Ports - } - return nil +func (PatternFlowIcmpv6EchoChecksum_Generated_Enum) Descriptor() protoreflect.EnumDescriptor { + return file_otg_proto_enumTypes[322].Descriptor() } -func (x *Lag) GetProtocol() *LagProtocol { - if x != nil { - return x.Protocol - } - return nil +func (PatternFlowIcmpv6EchoChecksum_Generated_Enum) Type() protoreflect.EnumType { + return &file_otg_proto_enumTypes[322] } -func (x *Lag) GetMinLinks() uint32 { - if x != nil && x.MinLinks != nil { - return *x.MinLinks - } - return 0 +func (x PatternFlowIcmpv6EchoChecksum_Generated_Enum) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) } -func (x *Lag) GetName() string { - if x != nil && x.Name != nil { - return *x.Name - } - return "" +// Deprecated: Use PatternFlowIcmpv6EchoChecksum_Generated_Enum.Descriptor instead. +func (PatternFlowIcmpv6EchoChecksum_Generated_Enum) EnumDescriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{760, 1, 0} } -// The container for a port's ethernet interface and LAG protocol settings -type LagPort struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields +type PatternFlowIcmpv6CommonChecksum_Choice_Enum int32 - // The name of a port object that will be part of the LAG. - // - // x-constraint: - // - /components/schemas/Port/properties/name - // - // x-constraint: - // - /components/schemas/Port/properties/name - // - // required = true - PortName *string `protobuf:"bytes,1,opt,name=port_name,json=portName,proto3,oneof" json:"port_name,omitempty"` - // Description missing in models - Lacp *LagPortLacp `protobuf:"bytes,2,opt,name=lacp,proto3" json:"lacp,omitempty"` - // Description missing in models - // required = true - Ethernet *DeviceEthernetBase `protobuf:"bytes,3,opt,name=ethernet,proto3" json:"ethernet,omitempty"` -} +const ( + PatternFlowIcmpv6CommonChecksum_Choice_unspecified PatternFlowIcmpv6CommonChecksum_Choice_Enum = 0 + PatternFlowIcmpv6CommonChecksum_Choice_generated PatternFlowIcmpv6CommonChecksum_Choice_Enum = 1 + PatternFlowIcmpv6CommonChecksum_Choice_custom PatternFlowIcmpv6CommonChecksum_Choice_Enum = 2 +) -func (x *LagPort) Reset() { - *x = LagPort{} - if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[5] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) +// Enum value maps for PatternFlowIcmpv6CommonChecksum_Choice_Enum. +var ( + PatternFlowIcmpv6CommonChecksum_Choice_Enum_name = map[int32]string{ + 0: "unspecified", + 1: "generated", + 2: "custom", } -} + PatternFlowIcmpv6CommonChecksum_Choice_Enum_value = map[string]int32{ + "unspecified": 0, + "generated": 1, + "custom": 2, + } +) -func (x *LagPort) String() string { - return protoimpl.X.MessageStringOf(x) +func (x PatternFlowIcmpv6CommonChecksum_Choice_Enum) Enum() *PatternFlowIcmpv6CommonChecksum_Choice_Enum { + p := new(PatternFlowIcmpv6CommonChecksum_Choice_Enum) + *p = x + return p } -func (*LagPort) ProtoMessage() {} - -func (x *LagPort) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[5] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) +func (x PatternFlowIcmpv6CommonChecksum_Choice_Enum) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } -// Deprecated: Use LagPort.ProtoReflect.Descriptor instead. -func (*LagPort) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{5} +func (PatternFlowIcmpv6CommonChecksum_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { + return file_otg_proto_enumTypes[323].Descriptor() } -func (x *LagPort) GetPortName() string { - if x != nil && x.PortName != nil { - return *x.PortName - } - return "" +func (PatternFlowIcmpv6CommonChecksum_Choice_Enum) Type() protoreflect.EnumType { + return &file_otg_proto_enumTypes[323] } -func (x *LagPort) GetLacp() *LagPortLacp { - if x != nil { - return x.Lacp - } - return nil +func (x PatternFlowIcmpv6CommonChecksum_Choice_Enum) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) } -func (x *LagPort) GetEthernet() *DeviceEthernetBase { - if x != nil { - return x.Ethernet - } - return nil +// Deprecated: Use PatternFlowIcmpv6CommonChecksum_Choice_Enum.Descriptor instead. +func (PatternFlowIcmpv6CommonChecksum_Choice_Enum) EnumDescriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{761, 0, 0} } -// Description missing in models -type LagProtocol struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields +type PatternFlowIcmpv6CommonChecksum_Generated_Enum int32 - // The type of controlling protocol for the LAG (ports group). - // default = Choice.Enum.lacp - Choice *LagProtocol_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.LagProtocol_Choice_Enum,oneof" json:"choice,omitempty"` - // Description missing in models - Lacp *LagProtocolLacp `protobuf:"bytes,2,opt,name=lacp,proto3" json:"lacp,omitempty"` - // Description missing in models - Static *LagProtocolStatic `protobuf:"bytes,3,opt,name=static,proto3" json:"static,omitempty"` -} +const ( + PatternFlowIcmpv6CommonChecksum_Generated_unspecified PatternFlowIcmpv6CommonChecksum_Generated_Enum = 0 + PatternFlowIcmpv6CommonChecksum_Generated_good PatternFlowIcmpv6CommonChecksum_Generated_Enum = 1 + PatternFlowIcmpv6CommonChecksum_Generated_bad PatternFlowIcmpv6CommonChecksum_Generated_Enum = 2 +) -func (x *LagProtocol) Reset() { - *x = LagProtocol{} - if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[6] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) +// Enum value maps for PatternFlowIcmpv6CommonChecksum_Generated_Enum. +var ( + PatternFlowIcmpv6CommonChecksum_Generated_Enum_name = map[int32]string{ + 0: "unspecified", + 1: "good", + 2: "bad", } -} + PatternFlowIcmpv6CommonChecksum_Generated_Enum_value = map[string]int32{ + "unspecified": 0, + "good": 1, + "bad": 2, + } +) -func (x *LagProtocol) String() string { - return protoimpl.X.MessageStringOf(x) +func (x PatternFlowIcmpv6CommonChecksum_Generated_Enum) Enum() *PatternFlowIcmpv6CommonChecksum_Generated_Enum { + p := new(PatternFlowIcmpv6CommonChecksum_Generated_Enum) + *p = x + return p } -func (*LagProtocol) ProtoMessage() {} - -func (x *LagProtocol) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[6] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) +func (x PatternFlowIcmpv6CommonChecksum_Generated_Enum) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } -// Deprecated: Use LagProtocol.ProtoReflect.Descriptor instead. -func (*LagProtocol) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{6} +func (PatternFlowIcmpv6CommonChecksum_Generated_Enum) Descriptor() protoreflect.EnumDescriptor { + return file_otg_proto_enumTypes[324].Descriptor() } -func (x *LagProtocol) GetChoice() LagProtocol_Choice_Enum { - if x != nil && x.Choice != nil { - return *x.Choice - } - return LagProtocol_Choice_unspecified +func (PatternFlowIcmpv6CommonChecksum_Generated_Enum) Type() protoreflect.EnumType { + return &file_otg_proto_enumTypes[324] } -func (x *LagProtocol) GetLacp() *LagProtocolLacp { - if x != nil { - return x.Lacp - } - return nil +func (x PatternFlowIcmpv6CommonChecksum_Generated_Enum) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) } -func (x *LagProtocol) GetStatic() *LagProtocolStatic { - if x != nil { - return x.Static - } - return nil +// Deprecated: Use PatternFlowIcmpv6CommonChecksum_Generated_Enum.Descriptor instead. +func (PatternFlowIcmpv6CommonChecksum_Generated_Enum) EnumDescriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{761, 1, 0} } -// The container for static link aggregation protocol settings. -type LagProtocolStatic struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields +type PatternFlowPppAddress_Choice_Enum int32 - // The static lag id - // default = 0 - LagId *uint32 `protobuf:"varint,1,opt,name=lag_id,json=lagId,proto3,oneof" json:"lag_id,omitempty"` -} +const ( + PatternFlowPppAddress_Choice_unspecified PatternFlowPppAddress_Choice_Enum = 0 + PatternFlowPppAddress_Choice_value PatternFlowPppAddress_Choice_Enum = 2 + PatternFlowPppAddress_Choice_values PatternFlowPppAddress_Choice_Enum = 3 + PatternFlowPppAddress_Choice_increment PatternFlowPppAddress_Choice_Enum = 4 + PatternFlowPppAddress_Choice_decrement PatternFlowPppAddress_Choice_Enum = 5 +) -func (x *LagProtocolStatic) Reset() { - *x = LagProtocolStatic{} - if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[7] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) +// Enum value maps for PatternFlowPppAddress_Choice_Enum. +var ( + PatternFlowPppAddress_Choice_Enum_name = map[int32]string{ + 0: "unspecified", + 2: "value", + 3: "values", + 4: "increment", + 5: "decrement", + } + PatternFlowPppAddress_Choice_Enum_value = map[string]int32{ + "unspecified": 0, + "value": 2, + "values": 3, + "increment": 4, + "decrement": 5, } +) + +func (x PatternFlowPppAddress_Choice_Enum) Enum() *PatternFlowPppAddress_Choice_Enum { + p := new(PatternFlowPppAddress_Choice_Enum) + *p = x + return p } -func (x *LagProtocolStatic) String() string { - return protoimpl.X.MessageStringOf(x) +func (x PatternFlowPppAddress_Choice_Enum) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } -func (*LagProtocolStatic) ProtoMessage() {} +func (PatternFlowPppAddress_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { + return file_otg_proto_enumTypes[325].Descriptor() +} -func (x *LagProtocolStatic) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[7] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) +func (PatternFlowPppAddress_Choice_Enum) Type() protoreflect.EnumType { + return &file_otg_proto_enumTypes[325] } -// Deprecated: Use LagProtocolStatic.ProtoReflect.Descriptor instead. -func (*LagProtocolStatic) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{7} +func (x PatternFlowPppAddress_Choice_Enum) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) } -func (x *LagProtocolStatic) GetLagId() uint32 { - if x != nil && x.LagId != nil { - return *x.LagId - } - return 0 +// Deprecated: Use PatternFlowPppAddress_Choice_Enum.Descriptor instead. +func (PatternFlowPppAddress_Choice_Enum) EnumDescriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{764, 0, 0} } -// The container for link aggregation control protocol settings of a LAG (ports group). -type LagProtocolLacp struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields +type PatternFlowPppControl_Choice_Enum int32 - // The actor system id - // default = 00:00:00:00:00:00 - ActorSystemId *string `protobuf:"bytes,1,opt,name=actor_system_id,json=actorSystemId,proto3,oneof" json:"actor_system_id,omitempty"` - // The actor system priority - // default = 0 - ActorSystemPriority *uint32 `protobuf:"varint,2,opt,name=actor_system_priority,json=actorSystemPriority,proto3,oneof" json:"actor_system_priority,omitempty"` - // The actor key - // default = 0 - ActorKey *uint32 `protobuf:"varint,3,opt,name=actor_key,json=actorKey,proto3,oneof" json:"actor_key,omitempty"` -} +const ( + PatternFlowPppControl_Choice_unspecified PatternFlowPppControl_Choice_Enum = 0 + PatternFlowPppControl_Choice_value PatternFlowPppControl_Choice_Enum = 2 + PatternFlowPppControl_Choice_values PatternFlowPppControl_Choice_Enum = 3 + PatternFlowPppControl_Choice_increment PatternFlowPppControl_Choice_Enum = 4 + PatternFlowPppControl_Choice_decrement PatternFlowPppControl_Choice_Enum = 5 +) -func (x *LagProtocolLacp) Reset() { - *x = LagProtocolLacp{} - if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[8] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) +// Enum value maps for PatternFlowPppControl_Choice_Enum. +var ( + PatternFlowPppControl_Choice_Enum_name = map[int32]string{ + 0: "unspecified", + 2: "value", + 3: "values", + 4: "increment", + 5: "decrement", } -} + PatternFlowPppControl_Choice_Enum_value = map[string]int32{ + "unspecified": 0, + "value": 2, + "values": 3, + "increment": 4, + "decrement": 5, + } +) -func (x *LagProtocolLacp) String() string { - return protoimpl.X.MessageStringOf(x) +func (x PatternFlowPppControl_Choice_Enum) Enum() *PatternFlowPppControl_Choice_Enum { + p := new(PatternFlowPppControl_Choice_Enum) + *p = x + return p } -func (*LagProtocolLacp) ProtoMessage() {} - -func (x *LagProtocolLacp) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[8] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) +func (x PatternFlowPppControl_Choice_Enum) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } -// Deprecated: Use LagProtocolLacp.ProtoReflect.Descriptor instead. -func (*LagProtocolLacp) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{8} +func (PatternFlowPppControl_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { + return file_otg_proto_enumTypes[326].Descriptor() } -func (x *LagProtocolLacp) GetActorSystemId() string { - if x != nil && x.ActorSystemId != nil { - return *x.ActorSystemId - } - return "" +func (PatternFlowPppControl_Choice_Enum) Type() protoreflect.EnumType { + return &file_otg_proto_enumTypes[326] } -func (x *LagProtocolLacp) GetActorSystemPriority() uint32 { - if x != nil && x.ActorSystemPriority != nil { - return *x.ActorSystemPriority - } - return 0 +func (x PatternFlowPppControl_Choice_Enum) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) } -func (x *LagProtocolLacp) GetActorKey() uint32 { - if x != nil && x.ActorKey != nil { - return *x.ActorKey - } - return 0 +// Deprecated: Use PatternFlowPppControl_Choice_Enum.Descriptor instead. +func (PatternFlowPppControl_Choice_Enum) EnumDescriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{767, 0, 0} } -// The container for link aggregation control protocol settings of a LAG member (port). -type LagPortLacp struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields +type PatternFlowPppProtocolType_Choice_Enum int32 - // The actor port number - // default = 0 - ActorPortNumber *uint32 `protobuf:"varint,1,opt,name=actor_port_number,json=actorPortNumber,proto3,oneof" json:"actor_port_number,omitempty"` - // The actor port priority - // default = 1 - ActorPortPriority *uint32 `protobuf:"varint,2,opt,name=actor_port_priority,json=actorPortPriority,proto3,oneof" json:"actor_port_priority,omitempty"` - // Sets the value of LACP actor activity as either passive or active. - // Passive indicates the port's preference for not transmitting LACPDUs unless its - // partner's control is Active. - // Active indicates the port's preference to participate in the protocol regardless - // of the partner's control value. - // default = ActorActivity.Enum.active - ActorActivity *LagPortLacp_ActorActivity_Enum `protobuf:"varint,3,opt,name=actor_activity,json=actorActivity,proto3,enum=otg.LagPortLacp_ActorActivity_Enum,oneof" json:"actor_activity,omitempty"` - // This field defines how frequently LACPDUs are sent to the link partner - // default = 0 - LacpduPeriodicTimeInterval *uint32 `protobuf:"varint,4,opt,name=lacpdu_periodic_time_interval,json=lacpduPeriodicTimeInterval,proto3,oneof" json:"lacpdu_periodic_time_interval,omitempty"` - // This timer is used to detect whether received protocol information has expired - // default = 0 - LacpduTimeout *uint32 `protobuf:"varint,5,opt,name=lacpdu_timeout,json=lacpduTimeout,proto3,oneof" json:"lacpdu_timeout,omitempty"` -} +const ( + PatternFlowPppProtocolType_Choice_unspecified PatternFlowPppProtocolType_Choice_Enum = 0 + PatternFlowPppProtocolType_Choice_value PatternFlowPppProtocolType_Choice_Enum = 2 + PatternFlowPppProtocolType_Choice_values PatternFlowPppProtocolType_Choice_Enum = 3 + PatternFlowPppProtocolType_Choice_auto PatternFlowPppProtocolType_Choice_Enum = 1 + PatternFlowPppProtocolType_Choice_increment PatternFlowPppProtocolType_Choice_Enum = 4 + PatternFlowPppProtocolType_Choice_decrement PatternFlowPppProtocolType_Choice_Enum = 5 +) -func (x *LagPortLacp) Reset() { - *x = LagPortLacp{} - if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[9] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) +// Enum value maps for PatternFlowPppProtocolType_Choice_Enum. +var ( + PatternFlowPppProtocolType_Choice_Enum_name = map[int32]string{ + 0: "unspecified", + 2: "value", + 3: "values", + 1: "auto", + 4: "increment", + 5: "decrement", } -} + PatternFlowPppProtocolType_Choice_Enum_value = map[string]int32{ + "unspecified": 0, + "value": 2, + "values": 3, + "auto": 1, + "increment": 4, + "decrement": 5, + } +) -func (x *LagPortLacp) String() string { - return protoimpl.X.MessageStringOf(x) +func (x PatternFlowPppProtocolType_Choice_Enum) Enum() *PatternFlowPppProtocolType_Choice_Enum { + p := new(PatternFlowPppProtocolType_Choice_Enum) + *p = x + return p } -func (*LagPortLacp) ProtoMessage() {} - -func (x *LagPortLacp) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[9] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) +func (x PatternFlowPppProtocolType_Choice_Enum) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } -// Deprecated: Use LagPortLacp.ProtoReflect.Descriptor instead. -func (*LagPortLacp) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{9} +func (PatternFlowPppProtocolType_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { + return file_otg_proto_enumTypes[327].Descriptor() } -func (x *LagPortLacp) GetActorPortNumber() uint32 { - if x != nil && x.ActorPortNumber != nil { - return *x.ActorPortNumber - } - return 0 +func (PatternFlowPppProtocolType_Choice_Enum) Type() protoreflect.EnumType { + return &file_otg_proto_enumTypes[327] } -func (x *LagPortLacp) GetActorPortPriority() uint32 { - if x != nil && x.ActorPortPriority != nil { - return *x.ActorPortPriority - } - return 0 +func (x PatternFlowPppProtocolType_Choice_Enum) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) } -func (x *LagPortLacp) GetActorActivity() LagPortLacp_ActorActivity_Enum { - if x != nil && x.ActorActivity != nil { - return *x.ActorActivity - } - return LagPortLacp_ActorActivity_unspecified +// Deprecated: Use PatternFlowPppProtocolType_Choice_Enum.Descriptor instead. +func (PatternFlowPppProtocolType_Choice_Enum) EnumDescriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{770, 0, 0} } -func (x *LagPortLacp) GetLacpduPeriodicTimeInterval() uint32 { - if x != nil && x.LacpduPeriodicTimeInterval != nil { - return *x.LacpduPeriodicTimeInterval +type PatternFlowIgmpv1Version_Choice_Enum int32 + +const ( + PatternFlowIgmpv1Version_Choice_unspecified PatternFlowIgmpv1Version_Choice_Enum = 0 + PatternFlowIgmpv1Version_Choice_value PatternFlowIgmpv1Version_Choice_Enum = 2 + PatternFlowIgmpv1Version_Choice_values PatternFlowIgmpv1Version_Choice_Enum = 3 + PatternFlowIgmpv1Version_Choice_increment PatternFlowIgmpv1Version_Choice_Enum = 4 + PatternFlowIgmpv1Version_Choice_decrement PatternFlowIgmpv1Version_Choice_Enum = 5 +) + +// Enum value maps for PatternFlowIgmpv1Version_Choice_Enum. +var ( + PatternFlowIgmpv1Version_Choice_Enum_name = map[int32]string{ + 0: "unspecified", + 2: "value", + 3: "values", + 4: "increment", + 5: "decrement", } - return 0 + PatternFlowIgmpv1Version_Choice_Enum_value = map[string]int32{ + "unspecified": 0, + "value": 2, + "values": 3, + "increment": 4, + "decrement": 5, + } +) + +func (x PatternFlowIgmpv1Version_Choice_Enum) Enum() *PatternFlowIgmpv1Version_Choice_Enum { + p := new(PatternFlowIgmpv1Version_Choice_Enum) + *p = x + return p } -func (x *LagPortLacp) GetLacpduTimeout() uint32 { - if x != nil && x.LacpduTimeout != nil { - return *x.LacpduTimeout - } - return 0 +func (x PatternFlowIgmpv1Version_Choice_Enum) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } -// Base Ethernet interface. -type DeviceEthernetBase struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields +func (PatternFlowIgmpv1Version_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { + return file_otg_proto_enumTypes[328].Descriptor() +} - // Media Access Control address. - // required = true - Mac *string `protobuf:"bytes,1,opt,name=mac,proto3,oneof" json:"mac,omitempty"` - // Maximum Transmission Unit. - // default = 1500 - Mtu *uint32 `protobuf:"varint,2,opt,name=mtu,proto3,oneof" json:"mtu,omitempty"` - // List of VLANs - Vlans []*DeviceVlan `protobuf:"bytes,3,rep,name=vlans,proto3" json:"vlans,omitempty"` - // Globally unique name of an object. It also serves as the primary key for arrays of - // objects. - // required = true - Name *string `protobuf:"bytes,4,opt,name=name,proto3,oneof" json:"name,omitempty"` +func (PatternFlowIgmpv1Version_Choice_Enum) Type() protoreflect.EnumType { + return &file_otg_proto_enumTypes[328] } -func (x *DeviceEthernetBase) Reset() { - *x = DeviceEthernetBase{} - if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[10] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (x PatternFlowIgmpv1Version_Choice_Enum) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) } -func (x *DeviceEthernetBase) String() string { - return protoimpl.X.MessageStringOf(x) +// Deprecated: Use PatternFlowIgmpv1Version_Choice_Enum.Descriptor instead. +func (PatternFlowIgmpv1Version_Choice_Enum) EnumDescriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{773, 0, 0} } -func (*DeviceEthernetBase) ProtoMessage() {} +type PatternFlowIgmpv1Type_Choice_Enum int32 -func (x *DeviceEthernetBase) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[10] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms +const ( + PatternFlowIgmpv1Type_Choice_unspecified PatternFlowIgmpv1Type_Choice_Enum = 0 + PatternFlowIgmpv1Type_Choice_value PatternFlowIgmpv1Type_Choice_Enum = 2 + PatternFlowIgmpv1Type_Choice_values PatternFlowIgmpv1Type_Choice_Enum = 3 + PatternFlowIgmpv1Type_Choice_increment PatternFlowIgmpv1Type_Choice_Enum = 4 + PatternFlowIgmpv1Type_Choice_decrement PatternFlowIgmpv1Type_Choice_Enum = 5 +) + +// Enum value maps for PatternFlowIgmpv1Type_Choice_Enum. +var ( + PatternFlowIgmpv1Type_Choice_Enum_name = map[int32]string{ + 0: "unspecified", + 2: "value", + 3: "values", + 4: "increment", + 5: "decrement", } - return mi.MessageOf(x) + PatternFlowIgmpv1Type_Choice_Enum_value = map[string]int32{ + "unspecified": 0, + "value": 2, + "values": 3, + "increment": 4, + "decrement": 5, + } +) + +func (x PatternFlowIgmpv1Type_Choice_Enum) Enum() *PatternFlowIgmpv1Type_Choice_Enum { + p := new(PatternFlowIgmpv1Type_Choice_Enum) + *p = x + return p } -// Deprecated: Use DeviceEthernetBase.ProtoReflect.Descriptor instead. -func (*DeviceEthernetBase) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{10} +func (x PatternFlowIgmpv1Type_Choice_Enum) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } -func (x *DeviceEthernetBase) GetMac() string { - if x != nil && x.Mac != nil { - return *x.Mac - } - return "" +func (PatternFlowIgmpv1Type_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { + return file_otg_proto_enumTypes[329].Descriptor() } -func (x *DeviceEthernetBase) GetMtu() uint32 { - if x != nil && x.Mtu != nil { - return *x.Mtu - } - return 0 +func (PatternFlowIgmpv1Type_Choice_Enum) Type() protoreflect.EnumType { + return &file_otg_proto_enumTypes[329] } -func (x *DeviceEthernetBase) GetVlans() []*DeviceVlan { - if x != nil { - return x.Vlans - } - return nil +func (x PatternFlowIgmpv1Type_Choice_Enum) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) } -func (x *DeviceEthernetBase) GetName() string { - if x != nil && x.Name != nil { - return *x.Name - } - return "" +// Deprecated: Use PatternFlowIgmpv1Type_Choice_Enum.Descriptor instead. +func (PatternFlowIgmpv1Type_Choice_Enum) EnumDescriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{776, 0, 0} } -// An Ethernet interface with IPv4 and IPv6 addresses. -type DeviceEthernet struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields +type PatternFlowIgmpv1Unused_Choice_Enum int32 - // Device connection to physical, LAG or another device. - Connection *EthernetConnection `protobuf:"bytes,2,opt,name=connection,proto3" json:"connection,omitempty"` - // List of IPv4 addresses and their gateways. - Ipv4Addresses []*DeviceIpv4 `protobuf:"bytes,3,rep,name=ipv4_addresses,json=ipv4Addresses,proto3" json:"ipv4_addresses,omitempty"` - // List of global IPv6 addresses and their gateways. - // The Link Local IPv6 address will be automatically generated. - Ipv6Addresses []*DeviceIpv6 `protobuf:"bytes,4,rep,name=ipv6_addresses,json=ipv6Addresses,proto3" json:"ipv6_addresses,omitempty"` - // Media Access Control address. - // required = true - Mac *string `protobuf:"bytes,5,opt,name=mac,proto3,oneof" json:"mac,omitempty"` - // Maximum Transmission Unit. - // default = 1500 - Mtu *uint32 `protobuf:"varint,6,opt,name=mtu,proto3,oneof" json:"mtu,omitempty"` - // List of VLANs - Vlans []*DeviceVlan `protobuf:"bytes,7,rep,name=vlans,proto3" json:"vlans,omitempty"` - // Globally unique name of an object. It also serves as the primary key for arrays of - // objects. - // required = true - Name *string `protobuf:"bytes,8,opt,name=name,proto3,oneof" json:"name,omitempty"` -} +const ( + PatternFlowIgmpv1Unused_Choice_unspecified PatternFlowIgmpv1Unused_Choice_Enum = 0 + PatternFlowIgmpv1Unused_Choice_value PatternFlowIgmpv1Unused_Choice_Enum = 2 + PatternFlowIgmpv1Unused_Choice_values PatternFlowIgmpv1Unused_Choice_Enum = 3 + PatternFlowIgmpv1Unused_Choice_increment PatternFlowIgmpv1Unused_Choice_Enum = 4 + PatternFlowIgmpv1Unused_Choice_decrement PatternFlowIgmpv1Unused_Choice_Enum = 5 +) -func (x *DeviceEthernet) Reset() { - *x = DeviceEthernet{} - if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[11] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) +// Enum value maps for PatternFlowIgmpv1Unused_Choice_Enum. +var ( + PatternFlowIgmpv1Unused_Choice_Enum_name = map[int32]string{ + 0: "unspecified", + 2: "value", + 3: "values", + 4: "increment", + 5: "decrement", } -} + PatternFlowIgmpv1Unused_Choice_Enum_value = map[string]int32{ + "unspecified": 0, + "value": 2, + "values": 3, + "increment": 4, + "decrement": 5, + } +) -func (x *DeviceEthernet) String() string { - return protoimpl.X.MessageStringOf(x) +func (x PatternFlowIgmpv1Unused_Choice_Enum) Enum() *PatternFlowIgmpv1Unused_Choice_Enum { + p := new(PatternFlowIgmpv1Unused_Choice_Enum) + *p = x + return p } -func (*DeviceEthernet) ProtoMessage() {} - -func (x *DeviceEthernet) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[11] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) +func (x PatternFlowIgmpv1Unused_Choice_Enum) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } -// Deprecated: Use DeviceEthernet.ProtoReflect.Descriptor instead. -func (*DeviceEthernet) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{11} +func (PatternFlowIgmpv1Unused_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { + return file_otg_proto_enumTypes[330].Descriptor() } -func (x *DeviceEthernet) GetConnection() *EthernetConnection { - if x != nil { - return x.Connection - } - return nil +func (PatternFlowIgmpv1Unused_Choice_Enum) Type() protoreflect.EnumType { + return &file_otg_proto_enumTypes[330] } -func (x *DeviceEthernet) GetIpv4Addresses() []*DeviceIpv4 { - if x != nil { - return x.Ipv4Addresses - } - return nil +func (x PatternFlowIgmpv1Unused_Choice_Enum) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) } -func (x *DeviceEthernet) GetIpv6Addresses() []*DeviceIpv6 { - if x != nil { - return x.Ipv6Addresses - } - return nil +// Deprecated: Use PatternFlowIgmpv1Unused_Choice_Enum.Descriptor instead. +func (PatternFlowIgmpv1Unused_Choice_Enum) EnumDescriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{779, 0, 0} } -func (x *DeviceEthernet) GetMac() string { - if x != nil && x.Mac != nil { - return *x.Mac - } - return "" -} +type PatternFlowIgmpv1Checksum_Choice_Enum int32 -func (x *DeviceEthernet) GetMtu() uint32 { - if x != nil && x.Mtu != nil { - return *x.Mtu - } - return 0 -} +const ( + PatternFlowIgmpv1Checksum_Choice_unspecified PatternFlowIgmpv1Checksum_Choice_Enum = 0 + PatternFlowIgmpv1Checksum_Choice_generated PatternFlowIgmpv1Checksum_Choice_Enum = 1 + PatternFlowIgmpv1Checksum_Choice_custom PatternFlowIgmpv1Checksum_Choice_Enum = 2 +) -func (x *DeviceEthernet) GetVlans() []*DeviceVlan { - if x != nil { - return x.Vlans +// Enum value maps for PatternFlowIgmpv1Checksum_Choice_Enum. +var ( + PatternFlowIgmpv1Checksum_Choice_Enum_name = map[int32]string{ + 0: "unspecified", + 1: "generated", + 2: "custom", } - return nil + PatternFlowIgmpv1Checksum_Choice_Enum_value = map[string]int32{ + "unspecified": 0, + "generated": 1, + "custom": 2, + } +) + +func (x PatternFlowIgmpv1Checksum_Choice_Enum) Enum() *PatternFlowIgmpv1Checksum_Choice_Enum { + p := new(PatternFlowIgmpv1Checksum_Choice_Enum) + *p = x + return p } -func (x *DeviceEthernet) GetName() string { - if x != nil && x.Name != nil { - return *x.Name - } - return "" +func (x PatternFlowIgmpv1Checksum_Choice_Enum) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } -// Ethernet interface connection to a port, LAG or VXLAN tunnel. -type EthernetConnection struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields +func (PatternFlowIgmpv1Checksum_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { + return file_otg_proto_enumTypes[331].Descriptor() +} - // port_name, lag_name or vxlan_name - Choice *EthernetConnection_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.EthernetConnection_Choice_Enum,oneof" json:"choice,omitempty"` - // Name of the port that the Ethernet interface is configured on. - // - // x-constraint: - // - /components/schemas/Port/properties/name - // - // x-constraint: - // - /components/schemas/Port/properties/name - PortName *string `protobuf:"bytes,2,opt,name=port_name,json=portName,proto3,oneof" json:"port_name,omitempty"` - // Name of the LAG that the Ethernet interface is configured on. - // - // x-constraint: - // - /components/schemas/Lag/properties/name - // - // x-constraint: - // - /components/schemas/Lag/properties/name - LagName *string `protobuf:"bytes,3,opt,name=lag_name,json=lagName,proto3,oneof" json:"lag_name,omitempty"` - // Name of the VXLAN instance (or VXLAN tunnel) that this Ethernet interface is connected - // to. - // - // x-constraint: - // - #/components/schemas/Vxlan.V4Tunnel/properties/name - // - #/components/schemas/Vxlan.V6Tunnel/properties/name - // - // x-constraint: - // - #/components/schemas/Vxlan.V4Tunnel/properties/name - // - #/components/schemas/Vxlan.V6Tunnel/properties/name - VxlanName *string `protobuf:"bytes,4,opt,name=vxlan_name,json=vxlanName,proto3,oneof" json:"vxlan_name,omitempty"` +func (PatternFlowIgmpv1Checksum_Choice_Enum) Type() protoreflect.EnumType { + return &file_otg_proto_enumTypes[331] } -func (x *EthernetConnection) Reset() { - *x = EthernetConnection{} - if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[12] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (x PatternFlowIgmpv1Checksum_Choice_Enum) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) } -func (x *EthernetConnection) String() string { - return protoimpl.X.MessageStringOf(x) +// Deprecated: Use PatternFlowIgmpv1Checksum_Choice_Enum.Descriptor instead. +func (PatternFlowIgmpv1Checksum_Choice_Enum) EnumDescriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{780, 0, 0} } -func (*EthernetConnection) ProtoMessage() {} +type PatternFlowIgmpv1Checksum_Generated_Enum int32 -func (x *EthernetConnection) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[12] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms +const ( + PatternFlowIgmpv1Checksum_Generated_unspecified PatternFlowIgmpv1Checksum_Generated_Enum = 0 + PatternFlowIgmpv1Checksum_Generated_good PatternFlowIgmpv1Checksum_Generated_Enum = 1 + PatternFlowIgmpv1Checksum_Generated_bad PatternFlowIgmpv1Checksum_Generated_Enum = 2 +) + +// Enum value maps for PatternFlowIgmpv1Checksum_Generated_Enum. +var ( + PatternFlowIgmpv1Checksum_Generated_Enum_name = map[int32]string{ + 0: "unspecified", + 1: "good", + 2: "bad", } - return mi.MessageOf(x) -} + PatternFlowIgmpv1Checksum_Generated_Enum_value = map[string]int32{ + "unspecified": 0, + "good": 1, + "bad": 2, + } +) -// Deprecated: Use EthernetConnection.ProtoReflect.Descriptor instead. -func (*EthernetConnection) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{12} +func (x PatternFlowIgmpv1Checksum_Generated_Enum) Enum() *PatternFlowIgmpv1Checksum_Generated_Enum { + p := new(PatternFlowIgmpv1Checksum_Generated_Enum) + *p = x + return p } -func (x *EthernetConnection) GetChoice() EthernetConnection_Choice_Enum { - if x != nil && x.Choice != nil { - return *x.Choice - } - return EthernetConnection_Choice_unspecified +func (x PatternFlowIgmpv1Checksum_Generated_Enum) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } -func (x *EthernetConnection) GetPortName() string { - if x != nil && x.PortName != nil { - return *x.PortName - } - return "" +func (PatternFlowIgmpv1Checksum_Generated_Enum) Descriptor() protoreflect.EnumDescriptor { + return file_otg_proto_enumTypes[332].Descriptor() } -func (x *EthernetConnection) GetLagName() string { - if x != nil && x.LagName != nil { - return *x.LagName - } - return "" +func (PatternFlowIgmpv1Checksum_Generated_Enum) Type() protoreflect.EnumType { + return &file_otg_proto_enumTypes[332] } -func (x *EthernetConnection) GetVxlanName() string { - if x != nil && x.VxlanName != nil { - return *x.VxlanName - } - return "" +func (x PatternFlowIgmpv1Checksum_Generated_Enum) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) } -// Emulated VLAN protocol. -type DeviceVlan struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // Tag protocol identifier - // default = Tpid.Enum.x8100 - Tpid *DeviceVlan_Tpid_Enum `protobuf:"varint,1,opt,name=tpid,proto3,enum=otg.DeviceVlan_Tpid_Enum,oneof" json:"tpid,omitempty"` - // Priority code point - // default = 0 - Priority *uint32 `protobuf:"varint,2,opt,name=priority,proto3,oneof" json:"priority,omitempty"` - // VLAN identifier - // default = 1 - Id *uint32 `protobuf:"varint,3,opt,name=id,proto3,oneof" json:"id,omitempty"` - // Globally unique name of an object. It also serves as the primary key for arrays of - // objects. - // required = true - Name *string `protobuf:"bytes,4,opt,name=name,proto3,oneof" json:"name,omitempty"` +// Deprecated: Use PatternFlowIgmpv1Checksum_Generated_Enum.Descriptor instead. +func (PatternFlowIgmpv1Checksum_Generated_Enum) EnumDescriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{780, 1, 0} } -func (x *DeviceVlan) Reset() { - *x = DeviceVlan{} - if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[13] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) +type PatternFlowIgmpv1GroupAddress_Choice_Enum int32 + +const ( + PatternFlowIgmpv1GroupAddress_Choice_unspecified PatternFlowIgmpv1GroupAddress_Choice_Enum = 0 + PatternFlowIgmpv1GroupAddress_Choice_value PatternFlowIgmpv1GroupAddress_Choice_Enum = 2 + PatternFlowIgmpv1GroupAddress_Choice_values PatternFlowIgmpv1GroupAddress_Choice_Enum = 3 + PatternFlowIgmpv1GroupAddress_Choice_increment PatternFlowIgmpv1GroupAddress_Choice_Enum = 4 + PatternFlowIgmpv1GroupAddress_Choice_decrement PatternFlowIgmpv1GroupAddress_Choice_Enum = 5 +) + +// Enum value maps for PatternFlowIgmpv1GroupAddress_Choice_Enum. +var ( + PatternFlowIgmpv1GroupAddress_Choice_Enum_name = map[int32]string{ + 0: "unspecified", + 2: "value", + 3: "values", + 4: "increment", + 5: "decrement", } -} + PatternFlowIgmpv1GroupAddress_Choice_Enum_value = map[string]int32{ + "unspecified": 0, + "value": 2, + "values": 3, + "increment": 4, + "decrement": 5, + } +) -func (x *DeviceVlan) String() string { - return protoimpl.X.MessageStringOf(x) +func (x PatternFlowIgmpv1GroupAddress_Choice_Enum) Enum() *PatternFlowIgmpv1GroupAddress_Choice_Enum { + p := new(PatternFlowIgmpv1GroupAddress_Choice_Enum) + *p = x + return p } -func (*DeviceVlan) ProtoMessage() {} +func (x PatternFlowIgmpv1GroupAddress_Choice_Enum) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} -func (x *DeviceVlan) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[13] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) +func (PatternFlowIgmpv1GroupAddress_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { + return file_otg_proto_enumTypes[333].Descriptor() } -// Deprecated: Use DeviceVlan.ProtoReflect.Descriptor instead. -func (*DeviceVlan) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{13} +func (PatternFlowIgmpv1GroupAddress_Choice_Enum) Type() protoreflect.EnumType { + return &file_otg_proto_enumTypes[333] } -func (x *DeviceVlan) GetTpid() DeviceVlan_Tpid_Enum { - if x != nil && x.Tpid != nil { - return *x.Tpid - } - return DeviceVlan_Tpid_unspecified +func (x PatternFlowIgmpv1GroupAddress_Choice_Enum) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) } -func (x *DeviceVlan) GetPriority() uint32 { - if x != nil && x.Priority != nil { - return *x.Priority - } - return 0 +// Deprecated: Use PatternFlowIgmpv1GroupAddress_Choice_Enum.Descriptor instead. +func (PatternFlowIgmpv1GroupAddress_Choice_Enum) EnumDescriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{783, 0, 0} } -func (x *DeviceVlan) GetId() uint32 { - if x != nil && x.Id != nil { - return *x.Id +type PatternFlowMplsLabel_Choice_Enum int32 + +const ( + PatternFlowMplsLabel_Choice_unspecified PatternFlowMplsLabel_Choice_Enum = 0 + PatternFlowMplsLabel_Choice_value PatternFlowMplsLabel_Choice_Enum = 2 + PatternFlowMplsLabel_Choice_values PatternFlowMplsLabel_Choice_Enum = 3 + PatternFlowMplsLabel_Choice_auto PatternFlowMplsLabel_Choice_Enum = 1 + PatternFlowMplsLabel_Choice_increment PatternFlowMplsLabel_Choice_Enum = 4 + PatternFlowMplsLabel_Choice_decrement PatternFlowMplsLabel_Choice_Enum = 5 +) + +// Enum value maps for PatternFlowMplsLabel_Choice_Enum. +var ( + PatternFlowMplsLabel_Choice_Enum_name = map[int32]string{ + 0: "unspecified", + 2: "value", + 3: "values", + 1: "auto", + 4: "increment", + 5: "decrement", } - return 0 + PatternFlowMplsLabel_Choice_Enum_value = map[string]int32{ + "unspecified": 0, + "value": 2, + "values": 3, + "auto": 1, + "increment": 4, + "decrement": 5, + } +) + +func (x PatternFlowMplsLabel_Choice_Enum) Enum() *PatternFlowMplsLabel_Choice_Enum { + p := new(PatternFlowMplsLabel_Choice_Enum) + *p = x + return p } -func (x *DeviceVlan) GetName() string { - if x != nil && x.Name != nil { - return *x.Name - } - return "" +func (x PatternFlowMplsLabel_Choice_Enum) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } -// An IPv4 interface with gateway -type DeviceIpv4 struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields +func (PatternFlowMplsLabel_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { + return file_otg_proto_enumTypes[334].Descriptor() +} - // The IPv4 address of the gateway - // required = true - Gateway *string `protobuf:"bytes,1,opt,name=gateway,proto3,oneof" json:"gateway,omitempty"` - // Description missing in models - GatewayMac *DeviceIpv4GatewayMAC `protobuf:"bytes,2,opt,name=gateway_mac,json=gatewayMac,proto3" json:"gateway_mac,omitempty"` - // The IPv4 address - // required = true - Address *string `protobuf:"bytes,3,opt,name=address,proto3,oneof" json:"address,omitempty"` - // The prefix of the IPv4 address. - // default = 24 - Prefix *uint32 `protobuf:"varint,4,opt,name=prefix,proto3,oneof" json:"prefix,omitempty"` - // Globally unique name of an object. It also serves as the primary key for arrays of - // objects. - // required = true - Name *string `protobuf:"bytes,5,opt,name=name,proto3,oneof" json:"name,omitempty"` +func (PatternFlowMplsLabel_Choice_Enum) Type() protoreflect.EnumType { + return &file_otg_proto_enumTypes[334] } -func (x *DeviceIpv4) Reset() { - *x = DeviceIpv4{} - if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[14] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (x PatternFlowMplsLabel_Choice_Enum) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) } -func (x *DeviceIpv4) String() string { - return protoimpl.X.MessageStringOf(x) +// Deprecated: Use PatternFlowMplsLabel_Choice_Enum.Descriptor instead. +func (PatternFlowMplsLabel_Choice_Enum) EnumDescriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{786, 0, 0} } -func (*DeviceIpv4) ProtoMessage() {} +type PatternFlowMplsTrafficClass_Choice_Enum int32 -func (x *DeviceIpv4) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[14] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms +const ( + PatternFlowMplsTrafficClass_Choice_unspecified PatternFlowMplsTrafficClass_Choice_Enum = 0 + PatternFlowMplsTrafficClass_Choice_value PatternFlowMplsTrafficClass_Choice_Enum = 2 + PatternFlowMplsTrafficClass_Choice_values PatternFlowMplsTrafficClass_Choice_Enum = 3 + PatternFlowMplsTrafficClass_Choice_increment PatternFlowMplsTrafficClass_Choice_Enum = 4 + PatternFlowMplsTrafficClass_Choice_decrement PatternFlowMplsTrafficClass_Choice_Enum = 5 +) + +// Enum value maps for PatternFlowMplsTrafficClass_Choice_Enum. +var ( + PatternFlowMplsTrafficClass_Choice_Enum_name = map[int32]string{ + 0: "unspecified", + 2: "value", + 3: "values", + 4: "increment", + 5: "decrement", } - return mi.MessageOf(x) -} + PatternFlowMplsTrafficClass_Choice_Enum_value = map[string]int32{ + "unspecified": 0, + "value": 2, + "values": 3, + "increment": 4, + "decrement": 5, + } +) -// Deprecated: Use DeviceIpv4.ProtoReflect.Descriptor instead. -func (*DeviceIpv4) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{14} +func (x PatternFlowMplsTrafficClass_Choice_Enum) Enum() *PatternFlowMplsTrafficClass_Choice_Enum { + p := new(PatternFlowMplsTrafficClass_Choice_Enum) + *p = x + return p } -func (x *DeviceIpv4) GetGateway() string { - if x != nil && x.Gateway != nil { - return *x.Gateway - } - return "" +func (x PatternFlowMplsTrafficClass_Choice_Enum) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } -func (x *DeviceIpv4) GetGatewayMac() *DeviceIpv4GatewayMAC { - if x != nil { - return x.GatewayMac - } - return nil +func (PatternFlowMplsTrafficClass_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { + return file_otg_proto_enumTypes[335].Descriptor() } -func (x *DeviceIpv4) GetAddress() string { - if x != nil && x.Address != nil { - return *x.Address - } - return "" +func (PatternFlowMplsTrafficClass_Choice_Enum) Type() protoreflect.EnumType { + return &file_otg_proto_enumTypes[335] } -func (x *DeviceIpv4) GetPrefix() uint32 { - if x != nil && x.Prefix != nil { - return *x.Prefix - } - return 0 +func (x PatternFlowMplsTrafficClass_Choice_Enum) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) } -func (x *DeviceIpv4) GetName() string { - if x != nil && x.Name != nil { - return *x.Name - } - return "" +// Deprecated: Use PatternFlowMplsTrafficClass_Choice_Enum.Descriptor instead. +func (PatternFlowMplsTrafficClass_Choice_Enum) EnumDescriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{789, 0, 0} } -// An IPv4 Loopback interface. -type DeviceIpv4Loopback struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields +type PatternFlowMplsBottomOfStack_Choice_Enum int32 - // The unique name of the Ethernet interface behind which this Loopback interface will - // be created. - // - // x-constraint: - // - /components/schemas/Device.Ethernet/properties/name - // - // x-constraint: - // - /components/schemas/Device.Ethernet/properties/name - // - // required = true - EthName *string `protobuf:"bytes,1,opt,name=eth_name,json=ethName,proto3,oneof" json:"eth_name,omitempty"` - // The IPv4 Loopback address with prefix length of 32. - // default = 0.0.0.0 - Address *string `protobuf:"bytes,2,opt,name=address,proto3,oneof" json:"address,omitempty"` - // Globally unique name of an object. It also serves as the primary key for arrays of - // objects. - // required = true - Name *string `protobuf:"bytes,3,opt,name=name,proto3,oneof" json:"name,omitempty"` -} +const ( + PatternFlowMplsBottomOfStack_Choice_unspecified PatternFlowMplsBottomOfStack_Choice_Enum = 0 + PatternFlowMplsBottomOfStack_Choice_value PatternFlowMplsBottomOfStack_Choice_Enum = 2 + PatternFlowMplsBottomOfStack_Choice_values PatternFlowMplsBottomOfStack_Choice_Enum = 3 + PatternFlowMplsBottomOfStack_Choice_auto PatternFlowMplsBottomOfStack_Choice_Enum = 1 + PatternFlowMplsBottomOfStack_Choice_increment PatternFlowMplsBottomOfStack_Choice_Enum = 4 + PatternFlowMplsBottomOfStack_Choice_decrement PatternFlowMplsBottomOfStack_Choice_Enum = 5 +) -func (x *DeviceIpv4Loopback) Reset() { - *x = DeviceIpv4Loopback{} - if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[15] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) +// Enum value maps for PatternFlowMplsBottomOfStack_Choice_Enum. +var ( + PatternFlowMplsBottomOfStack_Choice_Enum_name = map[int32]string{ + 0: "unspecified", + 2: "value", + 3: "values", + 1: "auto", + 4: "increment", + 5: "decrement", + } + PatternFlowMplsBottomOfStack_Choice_Enum_value = map[string]int32{ + "unspecified": 0, + "value": 2, + "values": 3, + "auto": 1, + "increment": 4, + "decrement": 5, } +) + +func (x PatternFlowMplsBottomOfStack_Choice_Enum) Enum() *PatternFlowMplsBottomOfStack_Choice_Enum { + p := new(PatternFlowMplsBottomOfStack_Choice_Enum) + *p = x + return p } -func (x *DeviceIpv4Loopback) String() string { - return protoimpl.X.MessageStringOf(x) +func (x PatternFlowMplsBottomOfStack_Choice_Enum) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } -func (*DeviceIpv4Loopback) ProtoMessage() {} +func (PatternFlowMplsBottomOfStack_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { + return file_otg_proto_enumTypes[336].Descriptor() +} -func (x *DeviceIpv4Loopback) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[15] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) +func (PatternFlowMplsBottomOfStack_Choice_Enum) Type() protoreflect.EnumType { + return &file_otg_proto_enumTypes[336] } -// Deprecated: Use DeviceIpv4Loopback.ProtoReflect.Descriptor instead. -func (*DeviceIpv4Loopback) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{15} +func (x PatternFlowMplsBottomOfStack_Choice_Enum) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) } -func (x *DeviceIpv4Loopback) GetEthName() string { - if x != nil && x.EthName != nil { - return *x.EthName - } - return "" +// Deprecated: Use PatternFlowMplsBottomOfStack_Choice_Enum.Descriptor instead. +func (PatternFlowMplsBottomOfStack_Choice_Enum) EnumDescriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{792, 0, 0} } -func (x *DeviceIpv4Loopback) GetAddress() string { - if x != nil && x.Address != nil { - return *x.Address +type PatternFlowMplsTimeToLive_Choice_Enum int32 + +const ( + PatternFlowMplsTimeToLive_Choice_unspecified PatternFlowMplsTimeToLive_Choice_Enum = 0 + PatternFlowMplsTimeToLive_Choice_value PatternFlowMplsTimeToLive_Choice_Enum = 2 + PatternFlowMplsTimeToLive_Choice_values PatternFlowMplsTimeToLive_Choice_Enum = 3 + PatternFlowMplsTimeToLive_Choice_increment PatternFlowMplsTimeToLive_Choice_Enum = 4 + PatternFlowMplsTimeToLive_Choice_decrement PatternFlowMplsTimeToLive_Choice_Enum = 5 +) + +// Enum value maps for PatternFlowMplsTimeToLive_Choice_Enum. +var ( + PatternFlowMplsTimeToLive_Choice_Enum_name = map[int32]string{ + 0: "unspecified", + 2: "value", + 3: "values", + 4: "increment", + 5: "decrement", } - return "" + PatternFlowMplsTimeToLive_Choice_Enum_value = map[string]int32{ + "unspecified": 0, + "value": 2, + "values": 3, + "increment": 4, + "decrement": 5, + } +) + +func (x PatternFlowMplsTimeToLive_Choice_Enum) Enum() *PatternFlowMplsTimeToLive_Choice_Enum { + p := new(PatternFlowMplsTimeToLive_Choice_Enum) + *p = x + return p } -func (x *DeviceIpv4Loopback) GetName() string { - if x != nil && x.Name != nil { - return *x.Name - } - return "" +func (x PatternFlowMplsTimeToLive_Choice_Enum) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } -// By default auto(resolved gateway mac) is set. Setting a value would mean that ARP -// will not be used for learning MAC of connected device. The user-configured MAC address -// will be used for auto-filling the destination -// MAC address in the control and data packets sent from this IPv4 endpoint -// whenever applicable. -type DeviceIpv4GatewayMAC struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields +func (PatternFlowMplsTimeToLive_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { + return file_otg_proto_enumTypes[337].Descriptor() +} - // auto or configured value. - // default = Choice.Enum.auto - Choice *DeviceIpv4GatewayMAC_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.DeviceIpv4GatewayMAC_Choice_Enum,oneof" json:"choice,omitempty"` - // The OTG implementation can provide a system generated value for this property. If - // the OTG is unable to generate a value the default value must be used. - // default = 00:00:00:00:00:00 - Auto *string `protobuf:"bytes,2,opt,name=auto,proto3,oneof" json:"auto,omitempty"` - // Description missing in models - // default = 00:00:00:00:00:00 - Value *string `protobuf:"bytes,3,opt,name=value,proto3,oneof" json:"value,omitempty"` +func (PatternFlowMplsTimeToLive_Choice_Enum) Type() protoreflect.EnumType { + return &file_otg_proto_enumTypes[337] } -func (x *DeviceIpv4GatewayMAC) Reset() { - *x = DeviceIpv4GatewayMAC{} - if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[16] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (x PatternFlowMplsTimeToLive_Choice_Enum) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) } -func (x *DeviceIpv4GatewayMAC) String() string { - return protoimpl.X.MessageStringOf(x) +// Deprecated: Use PatternFlowMplsTimeToLive_Choice_Enum.Descriptor instead. +func (PatternFlowMplsTimeToLive_Choice_Enum) EnumDescriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{795, 0, 0} } -func (*DeviceIpv4GatewayMAC) ProtoMessage() {} +type PatternFlowRsvpVersion_Choice_Enum int32 -func (x *DeviceIpv4GatewayMAC) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[16] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms +const ( + PatternFlowRsvpVersion_Choice_unspecified PatternFlowRsvpVersion_Choice_Enum = 0 + PatternFlowRsvpVersion_Choice_value PatternFlowRsvpVersion_Choice_Enum = 2 + PatternFlowRsvpVersion_Choice_values PatternFlowRsvpVersion_Choice_Enum = 3 + PatternFlowRsvpVersion_Choice_increment PatternFlowRsvpVersion_Choice_Enum = 4 + PatternFlowRsvpVersion_Choice_decrement PatternFlowRsvpVersion_Choice_Enum = 5 +) + +// Enum value maps for PatternFlowRsvpVersion_Choice_Enum. +var ( + PatternFlowRsvpVersion_Choice_Enum_name = map[int32]string{ + 0: "unspecified", + 2: "value", + 3: "values", + 4: "increment", + 5: "decrement", } - return mi.MessageOf(x) -} + PatternFlowRsvpVersion_Choice_Enum_value = map[string]int32{ + "unspecified": 0, + "value": 2, + "values": 3, + "increment": 4, + "decrement": 5, + } +) -// Deprecated: Use DeviceIpv4GatewayMAC.ProtoReflect.Descriptor instead. -func (*DeviceIpv4GatewayMAC) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{16} +func (x PatternFlowRsvpVersion_Choice_Enum) Enum() *PatternFlowRsvpVersion_Choice_Enum { + p := new(PatternFlowRsvpVersion_Choice_Enum) + *p = x + return p } -func (x *DeviceIpv4GatewayMAC) GetChoice() DeviceIpv4GatewayMAC_Choice_Enum { - if x != nil && x.Choice != nil { - return *x.Choice - } - return DeviceIpv4GatewayMAC_Choice_unspecified +func (x PatternFlowRsvpVersion_Choice_Enum) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } -func (x *DeviceIpv4GatewayMAC) GetAuto() string { - if x != nil && x.Auto != nil { - return *x.Auto - } - return "" +func (PatternFlowRsvpVersion_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { + return file_otg_proto_enumTypes[338].Descriptor() } -func (x *DeviceIpv4GatewayMAC) GetValue() string { - if x != nil && x.Value != nil { - return *x.Value - } - return "" +func (PatternFlowRsvpVersion_Choice_Enum) Type() protoreflect.EnumType { + return &file_otg_proto_enumTypes[338] } -// An IPv6 interface with gateway. -type DeviceIpv6 struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields +func (x PatternFlowRsvpVersion_Choice_Enum) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} - // The IPv6 gateway address. - // required = true - Gateway *string `protobuf:"bytes,1,opt,name=gateway,proto3,oneof" json:"gateway,omitempty"` - // Description missing in models - GatewayMac *DeviceIpv6GatewayMAC `protobuf:"bytes,2,opt,name=gateway_mac,json=gatewayMac,proto3" json:"gateway_mac,omitempty"` - // The IPv6 address. - // required = true - Address *string `protobuf:"bytes,3,opt,name=address,proto3,oneof" json:"address,omitempty"` - // The network prefix. - // default = 64 - Prefix *uint32 `protobuf:"varint,4,opt,name=prefix,proto3,oneof" json:"prefix,omitempty"` - // Globally unique name of an object. It also serves as the primary key for arrays of - // objects. - // required = true - Name *string `protobuf:"bytes,5,opt,name=name,proto3,oneof" json:"name,omitempty"` +// Deprecated: Use PatternFlowRsvpVersion_Choice_Enum.Descriptor instead. +func (PatternFlowRsvpVersion_Choice_Enum) EnumDescriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{797, 0, 0} } -func (x *DeviceIpv6) Reset() { - *x = DeviceIpv6{} - if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[17] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) +type PatternFlowRsvpRsvpChecksum_Choice_Enum int32 + +const ( + PatternFlowRsvpRsvpChecksum_Choice_unspecified PatternFlowRsvpRsvpChecksum_Choice_Enum = 0 + PatternFlowRsvpRsvpChecksum_Choice_generated PatternFlowRsvpRsvpChecksum_Choice_Enum = 1 + PatternFlowRsvpRsvpChecksum_Choice_custom PatternFlowRsvpRsvpChecksum_Choice_Enum = 2 +) + +// Enum value maps for PatternFlowRsvpRsvpChecksum_Choice_Enum. +var ( + PatternFlowRsvpRsvpChecksum_Choice_Enum_name = map[int32]string{ + 0: "unspecified", + 1: "generated", + 2: "custom", + } + PatternFlowRsvpRsvpChecksum_Choice_Enum_value = map[string]int32{ + "unspecified": 0, + "generated": 1, + "custom": 2, } +) + +func (x PatternFlowRsvpRsvpChecksum_Choice_Enum) Enum() *PatternFlowRsvpRsvpChecksum_Choice_Enum { + p := new(PatternFlowRsvpRsvpChecksum_Choice_Enum) + *p = x + return p } -func (x *DeviceIpv6) String() string { - return protoimpl.X.MessageStringOf(x) +func (x PatternFlowRsvpRsvpChecksum_Choice_Enum) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } -func (*DeviceIpv6) ProtoMessage() {} +func (PatternFlowRsvpRsvpChecksum_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { + return file_otg_proto_enumTypes[339].Descriptor() +} -func (x *DeviceIpv6) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[17] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) +func (PatternFlowRsvpRsvpChecksum_Choice_Enum) Type() protoreflect.EnumType { + return &file_otg_proto_enumTypes[339] } -// Deprecated: Use DeviceIpv6.ProtoReflect.Descriptor instead. -func (*DeviceIpv6) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{17} +func (x PatternFlowRsvpRsvpChecksum_Choice_Enum) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) } -func (x *DeviceIpv6) GetGateway() string { - if x != nil && x.Gateway != nil { - return *x.Gateway - } - return "" +// Deprecated: Use PatternFlowRsvpRsvpChecksum_Choice_Enum.Descriptor instead. +func (PatternFlowRsvpRsvpChecksum_Choice_Enum) EnumDescriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{798, 0, 0} } -func (x *DeviceIpv6) GetGatewayMac() *DeviceIpv6GatewayMAC { - if x != nil { - return x.GatewayMac +type PatternFlowRsvpRsvpChecksum_Generated_Enum int32 + +const ( + PatternFlowRsvpRsvpChecksum_Generated_unspecified PatternFlowRsvpRsvpChecksum_Generated_Enum = 0 + PatternFlowRsvpRsvpChecksum_Generated_good PatternFlowRsvpRsvpChecksum_Generated_Enum = 1 + PatternFlowRsvpRsvpChecksum_Generated_bad PatternFlowRsvpRsvpChecksum_Generated_Enum = 2 +) + +// Enum value maps for PatternFlowRsvpRsvpChecksum_Generated_Enum. +var ( + PatternFlowRsvpRsvpChecksum_Generated_Enum_name = map[int32]string{ + 0: "unspecified", + 1: "good", + 2: "bad", } - return nil + PatternFlowRsvpRsvpChecksum_Generated_Enum_value = map[string]int32{ + "unspecified": 0, + "good": 1, + "bad": 2, + } +) + +func (x PatternFlowRsvpRsvpChecksum_Generated_Enum) Enum() *PatternFlowRsvpRsvpChecksum_Generated_Enum { + p := new(PatternFlowRsvpRsvpChecksum_Generated_Enum) + *p = x + return p } -func (x *DeviceIpv6) GetAddress() string { - if x != nil && x.Address != nil { - return *x.Address - } - return "" +func (x PatternFlowRsvpRsvpChecksum_Generated_Enum) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } -func (x *DeviceIpv6) GetPrefix() uint32 { - if x != nil && x.Prefix != nil { - return *x.Prefix - } - return 0 +func (PatternFlowRsvpRsvpChecksum_Generated_Enum) Descriptor() protoreflect.EnumDescriptor { + return file_otg_proto_enumTypes[340].Descriptor() } -func (x *DeviceIpv6) GetName() string { - if x != nil && x.Name != nil { - return *x.Name - } - return "" +func (PatternFlowRsvpRsvpChecksum_Generated_Enum) Type() protoreflect.EnumType { + return &file_otg_proto_enumTypes[340] } -// An IPv6 Loopback interface -type DeviceIpv6Loopback struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields +func (x PatternFlowRsvpRsvpChecksum_Generated_Enum) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} - // The unique name of the Ethernet interface behind which this Loopback - // interface will be created. - // - // x-constraint: - // - /components/schemas/Device.Ethernet/properties/name - // - // x-constraint: - // - /components/schemas/Device.Ethernet/properties/name - // - // required = true - EthName *string `protobuf:"bytes,1,opt,name=eth_name,json=ethName,proto3,oneof" json:"eth_name,omitempty"` - // The IPv6 Loopback address with prefix length of 128. - // default = ::0 - Address *string `protobuf:"bytes,2,opt,name=address,proto3,oneof" json:"address,omitempty"` - // Globally unique name of an object. It also serves as the primary key for arrays of - // objects. - // required = true - Name *string `protobuf:"bytes,3,opt,name=name,proto3,oneof" json:"name,omitempty"` +// Deprecated: Use PatternFlowRsvpRsvpChecksum_Generated_Enum.Descriptor instead. +func (PatternFlowRsvpRsvpChecksum_Generated_Enum) EnumDescriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{798, 1, 0} } -func (x *DeviceIpv6Loopback) Reset() { - *x = DeviceIpv6Loopback{} - if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[18] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) +type PatternFlowRsvpTimeToLive_Choice_Enum int32 + +const ( + PatternFlowRsvpTimeToLive_Choice_unspecified PatternFlowRsvpTimeToLive_Choice_Enum = 0 + PatternFlowRsvpTimeToLive_Choice_value PatternFlowRsvpTimeToLive_Choice_Enum = 2 + PatternFlowRsvpTimeToLive_Choice_values PatternFlowRsvpTimeToLive_Choice_Enum = 3 + PatternFlowRsvpTimeToLive_Choice_increment PatternFlowRsvpTimeToLive_Choice_Enum = 4 + PatternFlowRsvpTimeToLive_Choice_decrement PatternFlowRsvpTimeToLive_Choice_Enum = 5 +) + +// Enum value maps for PatternFlowRsvpTimeToLive_Choice_Enum. +var ( + PatternFlowRsvpTimeToLive_Choice_Enum_name = map[int32]string{ + 0: "unspecified", + 2: "value", + 3: "values", + 4: "increment", + 5: "decrement", + } + PatternFlowRsvpTimeToLive_Choice_Enum_value = map[string]int32{ + "unspecified": 0, + "value": 2, + "values": 3, + "increment": 4, + "decrement": 5, } +) + +func (x PatternFlowRsvpTimeToLive_Choice_Enum) Enum() *PatternFlowRsvpTimeToLive_Choice_Enum { + p := new(PatternFlowRsvpTimeToLive_Choice_Enum) + *p = x + return p } -func (x *DeviceIpv6Loopback) String() string { - return protoimpl.X.MessageStringOf(x) +func (x PatternFlowRsvpTimeToLive_Choice_Enum) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } -func (*DeviceIpv6Loopback) ProtoMessage() {} +func (PatternFlowRsvpTimeToLive_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { + return file_otg_proto_enumTypes[341].Descriptor() +} -func (x *DeviceIpv6Loopback) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[18] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) +func (PatternFlowRsvpTimeToLive_Choice_Enum) Type() protoreflect.EnumType { + return &file_otg_proto_enumTypes[341] } -// Deprecated: Use DeviceIpv6Loopback.ProtoReflect.Descriptor instead. -func (*DeviceIpv6Loopback) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{18} +func (x PatternFlowRsvpTimeToLive_Choice_Enum) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) } -func (x *DeviceIpv6Loopback) GetEthName() string { - if x != nil && x.EthName != nil { - return *x.EthName - } - return "" +// Deprecated: Use PatternFlowRsvpTimeToLive_Choice_Enum.Descriptor instead. +func (PatternFlowRsvpTimeToLive_Choice_Enum) EnumDescriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{800, 0, 0} } -func (x *DeviceIpv6Loopback) GetAddress() string { - if x != nil && x.Address != nil { - return *x.Address +type PatternFlowRsvpReserved_Choice_Enum int32 + +const ( + PatternFlowRsvpReserved_Choice_unspecified PatternFlowRsvpReserved_Choice_Enum = 0 + PatternFlowRsvpReserved_Choice_value PatternFlowRsvpReserved_Choice_Enum = 2 + PatternFlowRsvpReserved_Choice_values PatternFlowRsvpReserved_Choice_Enum = 3 + PatternFlowRsvpReserved_Choice_increment PatternFlowRsvpReserved_Choice_Enum = 4 + PatternFlowRsvpReserved_Choice_decrement PatternFlowRsvpReserved_Choice_Enum = 5 +) + +// Enum value maps for PatternFlowRsvpReserved_Choice_Enum. +var ( + PatternFlowRsvpReserved_Choice_Enum_name = map[int32]string{ + 0: "unspecified", + 2: "value", + 3: "values", + 4: "increment", + 5: "decrement", } - return "" + PatternFlowRsvpReserved_Choice_Enum_value = map[string]int32{ + "unspecified": 0, + "value": 2, + "values": 3, + "increment": 4, + "decrement": 5, + } +) + +func (x PatternFlowRsvpReserved_Choice_Enum) Enum() *PatternFlowRsvpReserved_Choice_Enum { + p := new(PatternFlowRsvpReserved_Choice_Enum) + *p = x + return p } -func (x *DeviceIpv6Loopback) GetName() string { - if x != nil && x.Name != nil { - return *x.Name - } - return "" +func (x PatternFlowRsvpReserved_Choice_Enum) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } -// By default auto(resolved gateway mac) is set. Setting a value would mean that ND -// will not be used for learning MAC of connected device. The user-configured MAC address -// will be used for auto-filling the destination -// MAC address in the control and data packets sent from this IPv6 endpoint -// whenever applicable. -type DeviceIpv6GatewayMAC struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields +func (PatternFlowRsvpReserved_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { + return file_otg_proto_enumTypes[342].Descriptor() +} - // auto or configured value. - // default = Choice.Enum.auto - Choice *DeviceIpv6GatewayMAC_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.DeviceIpv6GatewayMAC_Choice_Enum,oneof" json:"choice,omitempty"` - // The OTG implementation can provide a system generated value for this property. If - // the OTG is unable to generate a value the default value must be used. - // default = 00:00:00:00:00:00 - Auto *string `protobuf:"bytes,2,opt,name=auto,proto3,oneof" json:"auto,omitempty"` - // Description missing in models - // default = 00:00:00:00:00:00 - Value *string `protobuf:"bytes,3,opt,name=value,proto3,oneof" json:"value,omitempty"` +func (PatternFlowRsvpReserved_Choice_Enum) Type() protoreflect.EnumType { + return &file_otg_proto_enumTypes[342] } -func (x *DeviceIpv6GatewayMAC) Reset() { - *x = DeviceIpv6GatewayMAC{} - if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[19] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (x PatternFlowRsvpReserved_Choice_Enum) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) } -func (x *DeviceIpv6GatewayMAC) String() string { - return protoimpl.X.MessageStringOf(x) +// Deprecated: Use PatternFlowRsvpReserved_Choice_Enum.Descriptor instead. +func (PatternFlowRsvpReserved_Choice_Enum) EnumDescriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{802, 0, 0} } -func (*DeviceIpv6GatewayMAC) ProtoMessage() {} +type PatternFlowRSVPPathSessionLspTunnelIpv4Ipv4TunnelEndPointAddress_Choice_Enum int32 -func (x *DeviceIpv6GatewayMAC) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[19] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms +const ( + PatternFlowRSVPPathSessionLspTunnelIpv4Ipv4TunnelEndPointAddress_Choice_unspecified PatternFlowRSVPPathSessionLspTunnelIpv4Ipv4TunnelEndPointAddress_Choice_Enum = 0 + PatternFlowRSVPPathSessionLspTunnelIpv4Ipv4TunnelEndPointAddress_Choice_value PatternFlowRSVPPathSessionLspTunnelIpv4Ipv4TunnelEndPointAddress_Choice_Enum = 2 + PatternFlowRSVPPathSessionLspTunnelIpv4Ipv4TunnelEndPointAddress_Choice_values PatternFlowRSVPPathSessionLspTunnelIpv4Ipv4TunnelEndPointAddress_Choice_Enum = 3 + PatternFlowRSVPPathSessionLspTunnelIpv4Ipv4TunnelEndPointAddress_Choice_increment PatternFlowRSVPPathSessionLspTunnelIpv4Ipv4TunnelEndPointAddress_Choice_Enum = 4 + PatternFlowRSVPPathSessionLspTunnelIpv4Ipv4TunnelEndPointAddress_Choice_decrement PatternFlowRSVPPathSessionLspTunnelIpv4Ipv4TunnelEndPointAddress_Choice_Enum = 5 +) + +// Enum value maps for PatternFlowRSVPPathSessionLspTunnelIpv4Ipv4TunnelEndPointAddress_Choice_Enum. +var ( + PatternFlowRSVPPathSessionLspTunnelIpv4Ipv4TunnelEndPointAddress_Choice_Enum_name = map[int32]string{ + 0: "unspecified", + 2: "value", + 3: "values", + 4: "increment", + 5: "decrement", } - return mi.MessageOf(x) -} + PatternFlowRSVPPathSessionLspTunnelIpv4Ipv4TunnelEndPointAddress_Choice_Enum_value = map[string]int32{ + "unspecified": 0, + "value": 2, + "values": 3, + "increment": 4, + "decrement": 5, + } +) -// Deprecated: Use DeviceIpv6GatewayMAC.ProtoReflect.Descriptor instead. -func (*DeviceIpv6GatewayMAC) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{19} +func (x PatternFlowRSVPPathSessionLspTunnelIpv4Ipv4TunnelEndPointAddress_Choice_Enum) Enum() *PatternFlowRSVPPathSessionLspTunnelIpv4Ipv4TunnelEndPointAddress_Choice_Enum { + p := new(PatternFlowRSVPPathSessionLspTunnelIpv4Ipv4TunnelEndPointAddress_Choice_Enum) + *p = x + return p } -func (x *DeviceIpv6GatewayMAC) GetChoice() DeviceIpv6GatewayMAC_Choice_Enum { - if x != nil && x.Choice != nil { - return *x.Choice - } - return DeviceIpv6GatewayMAC_Choice_unspecified +func (x PatternFlowRSVPPathSessionLspTunnelIpv4Ipv4TunnelEndPointAddress_Choice_Enum) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } -func (x *DeviceIpv6GatewayMAC) GetAuto() string { - if x != nil && x.Auto != nil { - return *x.Auto - } - return "" +func (PatternFlowRSVPPathSessionLspTunnelIpv4Ipv4TunnelEndPointAddress_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { + return file_otg_proto_enumTypes[343].Descriptor() } -func (x *DeviceIpv6GatewayMAC) GetValue() string { - if x != nil && x.Value != nil { - return *x.Value - } - return "" +func (PatternFlowRSVPPathSessionLspTunnelIpv4Ipv4TunnelEndPointAddress_Choice_Enum) Type() protoreflect.EnumType { + return &file_otg_proto_enumTypes[343] } -// A container for layer1 settings. -type Layer1 struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields +func (x PatternFlowRSVPPathSessionLspTunnelIpv4Ipv4TunnelEndPointAddress_Choice_Enum) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} - // A list of unique names of port objects that will share the - // choice settings. - // - // x-constraint: - // - /components/schemas/Port/properties/name - // - // x-constraint: - // - /components/schemas/Port/properties/name - PortNames []string `protobuf:"bytes,1,rep,name=port_names,json=portNames,proto3" json:"port_names,omitempty"` - // Set the speed if supported. When no speed is explicitly set, the current - // speed of underlying test interface shall be assumed. - Speed *Layer1_Speed_Enum `protobuf:"varint,2,opt,name=speed,proto3,enum=otg.Layer1_Speed_Enum,oneof" json:"speed,omitempty"` - // Set the type of media for test interface if supported. When no media - // type is explicitly set, the current media type of underlying test - // interface shall be assumed. - Media *Layer1_Media_Enum `protobuf:"varint,3,opt,name=media,proto3,enum=otg.Layer1_Media_Enum,oneof" json:"media,omitempty"` - // Enable promiscuous mode on test interface. A warning shall be raised if - // this field is set to `true`, even when it's not supported, ignoring - // the setting altogether. - // default = True - Promiscuous *bool `protobuf:"varint,4,opt,name=promiscuous,proto3,oneof" json:"promiscuous,omitempty"` - // Set the maximum transmission unit size. A warning shall be raised if - // the specified value is valid but not supported, ignoring the setting altogether. - // default = 1500 - Mtu *uint32 `protobuf:"varint,5,opt,name=mtu,proto3,oneof" json:"mtu,omitempty"` - // Under Review: This field is currently under review for pending exploration on use - // cases - // - // Under Review: This field is currently under review for pending exploration on use - // cases - // - // Set to true to override the auto_negotiate, link_training - // and rs_fec settings for gigabit ethernet interfaces. - IeeeMediaDefaults *bool `protobuf:"varint,6,opt,name=ieee_media_defaults,json=ieeeMediaDefaults,proto3,oneof" json:"ieee_media_defaults,omitempty"` - // Under Review: This field is currently under review for pending exploration on use - // cases, given that a separate configuration called `AutoNegotiation` already exists. - // - // Under Review: This field is currently under review for pending exploration on use - // cases, given that a separate configuration called `AutoNegotiation` already exists. - // - // Enable/disable auto negotiation. - AutoNegotiate *bool `protobuf:"varint,7,opt,name=auto_negotiate,json=autoNegotiate,proto3,oneof" json:"auto_negotiate,omitempty"` - // Description missing in models - AutoNegotiation *Layer1AutoNegotiation `protobuf:"bytes,8,opt,name=auto_negotiation,json=autoNegotiation,proto3" json:"auto_negotiation,omitempty"` - // Description missing in models - FlowControl *Layer1FlowControl `protobuf:"bytes,9,opt,name=flow_control,json=flowControl,proto3" json:"flow_control,omitempty"` - // Globally unique name of an object. It also serves as the primary key for arrays of - // objects. - // required = true - Name *string `protobuf:"bytes,10,opt,name=name,proto3,oneof" json:"name,omitempty"` +// Deprecated: Use PatternFlowRSVPPathSessionLspTunnelIpv4Ipv4TunnelEndPointAddress_Choice_Enum.Descriptor instead. +func (PatternFlowRSVPPathSessionLspTunnelIpv4Ipv4TunnelEndPointAddress_Choice_Enum) EnumDescriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{804, 0, 0} } -func (x *Layer1) Reset() { - *x = Layer1{} - if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[20] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) +type PatternFlowRSVPPathSessionLspTunnelIpv4Reserved_Choice_Enum int32 + +const ( + PatternFlowRSVPPathSessionLspTunnelIpv4Reserved_Choice_unspecified PatternFlowRSVPPathSessionLspTunnelIpv4Reserved_Choice_Enum = 0 + PatternFlowRSVPPathSessionLspTunnelIpv4Reserved_Choice_value PatternFlowRSVPPathSessionLspTunnelIpv4Reserved_Choice_Enum = 2 + PatternFlowRSVPPathSessionLspTunnelIpv4Reserved_Choice_values PatternFlowRSVPPathSessionLspTunnelIpv4Reserved_Choice_Enum = 3 + PatternFlowRSVPPathSessionLspTunnelIpv4Reserved_Choice_increment PatternFlowRSVPPathSessionLspTunnelIpv4Reserved_Choice_Enum = 4 + PatternFlowRSVPPathSessionLspTunnelIpv4Reserved_Choice_decrement PatternFlowRSVPPathSessionLspTunnelIpv4Reserved_Choice_Enum = 5 +) + +// Enum value maps for PatternFlowRSVPPathSessionLspTunnelIpv4Reserved_Choice_Enum. +var ( + PatternFlowRSVPPathSessionLspTunnelIpv4Reserved_Choice_Enum_name = map[int32]string{ + 0: "unspecified", + 2: "value", + 3: "values", + 4: "increment", + 5: "decrement", } -} + PatternFlowRSVPPathSessionLspTunnelIpv4Reserved_Choice_Enum_value = map[string]int32{ + "unspecified": 0, + "value": 2, + "values": 3, + "increment": 4, + "decrement": 5, + } +) -func (x *Layer1) String() string { - return protoimpl.X.MessageStringOf(x) +func (x PatternFlowRSVPPathSessionLspTunnelIpv4Reserved_Choice_Enum) Enum() *PatternFlowRSVPPathSessionLspTunnelIpv4Reserved_Choice_Enum { + p := new(PatternFlowRSVPPathSessionLspTunnelIpv4Reserved_Choice_Enum) + *p = x + return p } -func (*Layer1) ProtoMessage() {} +func (x PatternFlowRSVPPathSessionLspTunnelIpv4Reserved_Choice_Enum) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} -func (x *Layer1) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[20] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) +func (PatternFlowRSVPPathSessionLspTunnelIpv4Reserved_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { + return file_otg_proto_enumTypes[344].Descriptor() } -// Deprecated: Use Layer1.ProtoReflect.Descriptor instead. -func (*Layer1) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{20} +func (PatternFlowRSVPPathSessionLspTunnelIpv4Reserved_Choice_Enum) Type() protoreflect.EnumType { + return &file_otg_proto_enumTypes[344] } -func (x *Layer1) GetPortNames() []string { - if x != nil { - return x.PortNames - } - return nil +func (x PatternFlowRSVPPathSessionLspTunnelIpv4Reserved_Choice_Enum) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) } -func (x *Layer1) GetSpeed() Layer1_Speed_Enum { - if x != nil && x.Speed != nil { - return *x.Speed - } - return Layer1_Speed_unspecified +// Deprecated: Use PatternFlowRSVPPathSessionLspTunnelIpv4Reserved_Choice_Enum.Descriptor instead. +func (PatternFlowRSVPPathSessionLspTunnelIpv4Reserved_Choice_Enum) EnumDescriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{806, 0, 0} } -func (x *Layer1) GetMedia() Layer1_Media_Enum { - if x != nil && x.Media != nil { - return *x.Media +type PatternFlowRSVPPathSessionLspTunnelIpv4TunnelId_Choice_Enum int32 + +const ( + PatternFlowRSVPPathSessionLspTunnelIpv4TunnelId_Choice_unspecified PatternFlowRSVPPathSessionLspTunnelIpv4TunnelId_Choice_Enum = 0 + PatternFlowRSVPPathSessionLspTunnelIpv4TunnelId_Choice_value PatternFlowRSVPPathSessionLspTunnelIpv4TunnelId_Choice_Enum = 2 + PatternFlowRSVPPathSessionLspTunnelIpv4TunnelId_Choice_values PatternFlowRSVPPathSessionLspTunnelIpv4TunnelId_Choice_Enum = 3 + PatternFlowRSVPPathSessionLspTunnelIpv4TunnelId_Choice_increment PatternFlowRSVPPathSessionLspTunnelIpv4TunnelId_Choice_Enum = 4 + PatternFlowRSVPPathSessionLspTunnelIpv4TunnelId_Choice_decrement PatternFlowRSVPPathSessionLspTunnelIpv4TunnelId_Choice_Enum = 5 +) + +// Enum value maps for PatternFlowRSVPPathSessionLspTunnelIpv4TunnelId_Choice_Enum. +var ( + PatternFlowRSVPPathSessionLspTunnelIpv4TunnelId_Choice_Enum_name = map[int32]string{ + 0: "unspecified", + 2: "value", + 3: "values", + 4: "increment", + 5: "decrement", } - return Layer1_Media_unspecified + PatternFlowRSVPPathSessionLspTunnelIpv4TunnelId_Choice_Enum_value = map[string]int32{ + "unspecified": 0, + "value": 2, + "values": 3, + "increment": 4, + "decrement": 5, + } +) + +func (x PatternFlowRSVPPathSessionLspTunnelIpv4TunnelId_Choice_Enum) Enum() *PatternFlowRSVPPathSessionLspTunnelIpv4TunnelId_Choice_Enum { + p := new(PatternFlowRSVPPathSessionLspTunnelIpv4TunnelId_Choice_Enum) + *p = x + return p } -func (x *Layer1) GetPromiscuous() bool { - if x != nil && x.Promiscuous != nil { - return *x.Promiscuous - } - return false +func (x PatternFlowRSVPPathSessionLspTunnelIpv4TunnelId_Choice_Enum) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } -func (x *Layer1) GetMtu() uint32 { - if x != nil && x.Mtu != nil { - return *x.Mtu - } - return 0 +func (PatternFlowRSVPPathSessionLspTunnelIpv4TunnelId_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { + return file_otg_proto_enumTypes[345].Descriptor() } -func (x *Layer1) GetIeeeMediaDefaults() bool { - if x != nil && x.IeeeMediaDefaults != nil { - return *x.IeeeMediaDefaults - } - return false +func (PatternFlowRSVPPathSessionLspTunnelIpv4TunnelId_Choice_Enum) Type() protoreflect.EnumType { + return &file_otg_proto_enumTypes[345] } -func (x *Layer1) GetAutoNegotiate() bool { - if x != nil && x.AutoNegotiate != nil { - return *x.AutoNegotiate - } - return false +func (x PatternFlowRSVPPathSessionLspTunnelIpv4TunnelId_Choice_Enum) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) } -func (x *Layer1) GetAutoNegotiation() *Layer1AutoNegotiation { - if x != nil { - return x.AutoNegotiation - } - return nil +// Deprecated: Use PatternFlowRSVPPathSessionLspTunnelIpv4TunnelId_Choice_Enum.Descriptor instead. +func (PatternFlowRSVPPathSessionLspTunnelIpv4TunnelId_Choice_Enum) EnumDescriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{808, 0, 0} } -func (x *Layer1) GetFlowControl() *Layer1FlowControl { - if x != nil { - return x.FlowControl +type PatternFlowRSVPPathSessionLspTunnelIpv4ExtendedTunnelId_Choice_Enum int32 + +const ( + PatternFlowRSVPPathSessionLspTunnelIpv4ExtendedTunnelId_Choice_unspecified PatternFlowRSVPPathSessionLspTunnelIpv4ExtendedTunnelId_Choice_Enum = 0 + PatternFlowRSVPPathSessionLspTunnelIpv4ExtendedTunnelId_Choice_value PatternFlowRSVPPathSessionLspTunnelIpv4ExtendedTunnelId_Choice_Enum = 2 + PatternFlowRSVPPathSessionLspTunnelIpv4ExtendedTunnelId_Choice_values PatternFlowRSVPPathSessionLspTunnelIpv4ExtendedTunnelId_Choice_Enum = 3 + PatternFlowRSVPPathSessionLspTunnelIpv4ExtendedTunnelId_Choice_increment PatternFlowRSVPPathSessionLspTunnelIpv4ExtendedTunnelId_Choice_Enum = 4 + PatternFlowRSVPPathSessionLspTunnelIpv4ExtendedTunnelId_Choice_decrement PatternFlowRSVPPathSessionLspTunnelIpv4ExtendedTunnelId_Choice_Enum = 5 +) + +// Enum value maps for PatternFlowRSVPPathSessionLspTunnelIpv4ExtendedTunnelId_Choice_Enum. +var ( + PatternFlowRSVPPathSessionLspTunnelIpv4ExtendedTunnelId_Choice_Enum_name = map[int32]string{ + 0: "unspecified", + 2: "value", + 3: "values", + 4: "increment", + 5: "decrement", } - return nil + PatternFlowRSVPPathSessionLspTunnelIpv4ExtendedTunnelId_Choice_Enum_value = map[string]int32{ + "unspecified": 0, + "value": 2, + "values": 3, + "increment": 4, + "decrement": 5, + } +) + +func (x PatternFlowRSVPPathSessionLspTunnelIpv4ExtendedTunnelId_Choice_Enum) Enum() *PatternFlowRSVPPathSessionLspTunnelIpv4ExtendedTunnelId_Choice_Enum { + p := new(PatternFlowRSVPPathSessionLspTunnelIpv4ExtendedTunnelId_Choice_Enum) + *p = x + return p } -func (x *Layer1) GetName() string { - if x != nil && x.Name != nil { - return *x.Name - } - return "" +func (x PatternFlowRSVPPathSessionLspTunnelIpv4ExtendedTunnelId_Choice_Enum) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } -// Configuration for auto negotiation settings -type Layer1AutoNegotiation struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields +func (PatternFlowRSVPPathSessionLspTunnelIpv4ExtendedTunnelId_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { + return file_otg_proto_enumTypes[346].Descriptor() +} - // If auto_negotiate is true and the interface supports this option - // then this speed will be advertised. - // default = True - Advertise_1000Mbps *bool `protobuf:"varint,1,opt,name=advertise_1000_mbps,json=advertise1000Mbps,proto3,oneof" json:"advertise_1000_mbps,omitempty"` - // If auto_negotiate is true and the interface supports this option - // then this speed will be advertised. - // default = True - Advertise_100FdMbps *bool `protobuf:"varint,2,opt,name=advertise_100_fd_mbps,json=advertise100FdMbps,proto3,oneof" json:"advertise_100_fd_mbps,omitempty"` - // If auto_negotiate is true and the interface supports this option - // then this speed will be advertised. - // default = True - Advertise_100HdMbps *bool `protobuf:"varint,3,opt,name=advertise_100_hd_mbps,json=advertise100HdMbps,proto3,oneof" json:"advertise_100_hd_mbps,omitempty"` - // If auto_negotiate is true and the interface supports this option - // then this speed will be advertised. - // default = True - Advertise_10FdMbps *bool `protobuf:"varint,4,opt,name=advertise_10_fd_mbps,json=advertise10FdMbps,proto3,oneof" json:"advertise_10_fd_mbps,omitempty"` - // If auto_negotiate is true and the interface supports this option - // then this speed will be advertised. - // default = True - Advertise_10HdMbps *bool `protobuf:"varint,5,opt,name=advertise_10_hd_mbps,json=advertise10HdMbps,proto3,oneof" json:"advertise_10_hd_mbps,omitempty"` - // Enable/disable gigabit ethernet link training. - // default = False - LinkTraining *bool `protobuf:"varint,6,opt,name=link_training,json=linkTraining,proto3,oneof" json:"link_training,omitempty"` - // Enable/disable gigabit ethernet reed solomon forward error correction (RS FEC). - // default = False - RsFec *bool `protobuf:"varint,7,opt,name=rs_fec,json=rsFec,proto3,oneof" json:"rs_fec,omitempty"` +func (PatternFlowRSVPPathSessionLspTunnelIpv4ExtendedTunnelId_Choice_Enum) Type() protoreflect.EnumType { + return &file_otg_proto_enumTypes[346] } -func (x *Layer1AutoNegotiation) Reset() { - *x = Layer1AutoNegotiation{} - if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[21] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (x PatternFlowRSVPPathSessionLspTunnelIpv4ExtendedTunnelId_Choice_Enum) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) } -func (x *Layer1AutoNegotiation) String() string { - return protoimpl.X.MessageStringOf(x) +// Deprecated: Use PatternFlowRSVPPathSessionLspTunnelIpv4ExtendedTunnelId_Choice_Enum.Descriptor instead. +func (PatternFlowRSVPPathSessionLspTunnelIpv4ExtendedTunnelId_Choice_Enum) EnumDescriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{810, 0, 0} } -func (*Layer1AutoNegotiation) ProtoMessage() {} +type PatternFlowRSVPPathRsvpHopIpv4Ipv4NextPreviousHopAddress_Choice_Enum int32 -func (x *Layer1AutoNegotiation) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[21] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms +const ( + PatternFlowRSVPPathRsvpHopIpv4Ipv4NextPreviousHopAddress_Choice_unspecified PatternFlowRSVPPathRsvpHopIpv4Ipv4NextPreviousHopAddress_Choice_Enum = 0 + PatternFlowRSVPPathRsvpHopIpv4Ipv4NextPreviousHopAddress_Choice_value PatternFlowRSVPPathRsvpHopIpv4Ipv4NextPreviousHopAddress_Choice_Enum = 2 + PatternFlowRSVPPathRsvpHopIpv4Ipv4NextPreviousHopAddress_Choice_values PatternFlowRSVPPathRsvpHopIpv4Ipv4NextPreviousHopAddress_Choice_Enum = 3 + PatternFlowRSVPPathRsvpHopIpv4Ipv4NextPreviousHopAddress_Choice_increment PatternFlowRSVPPathRsvpHopIpv4Ipv4NextPreviousHopAddress_Choice_Enum = 4 + PatternFlowRSVPPathRsvpHopIpv4Ipv4NextPreviousHopAddress_Choice_decrement PatternFlowRSVPPathRsvpHopIpv4Ipv4NextPreviousHopAddress_Choice_Enum = 5 +) + +// Enum value maps for PatternFlowRSVPPathRsvpHopIpv4Ipv4NextPreviousHopAddress_Choice_Enum. +var ( + PatternFlowRSVPPathRsvpHopIpv4Ipv4NextPreviousHopAddress_Choice_Enum_name = map[int32]string{ + 0: "unspecified", + 2: "value", + 3: "values", + 4: "increment", + 5: "decrement", } - return mi.MessageOf(x) -} + PatternFlowRSVPPathRsvpHopIpv4Ipv4NextPreviousHopAddress_Choice_Enum_value = map[string]int32{ + "unspecified": 0, + "value": 2, + "values": 3, + "increment": 4, + "decrement": 5, + } +) -// Deprecated: Use Layer1AutoNegotiation.ProtoReflect.Descriptor instead. -func (*Layer1AutoNegotiation) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{21} +func (x PatternFlowRSVPPathRsvpHopIpv4Ipv4NextPreviousHopAddress_Choice_Enum) Enum() *PatternFlowRSVPPathRsvpHopIpv4Ipv4NextPreviousHopAddress_Choice_Enum { + p := new(PatternFlowRSVPPathRsvpHopIpv4Ipv4NextPreviousHopAddress_Choice_Enum) + *p = x + return p } -func (x *Layer1AutoNegotiation) GetAdvertise_1000Mbps() bool { - if x != nil && x.Advertise_1000Mbps != nil { - return *x.Advertise_1000Mbps - } - return false +func (x PatternFlowRSVPPathRsvpHopIpv4Ipv4NextPreviousHopAddress_Choice_Enum) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } -func (x *Layer1AutoNegotiation) GetAdvertise_100FdMbps() bool { - if x != nil && x.Advertise_100FdMbps != nil { - return *x.Advertise_100FdMbps - } - return false +func (PatternFlowRSVPPathRsvpHopIpv4Ipv4NextPreviousHopAddress_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { + return file_otg_proto_enumTypes[347].Descriptor() } -func (x *Layer1AutoNegotiation) GetAdvertise_100HdMbps() bool { - if x != nil && x.Advertise_100HdMbps != nil { - return *x.Advertise_100HdMbps - } - return false +func (PatternFlowRSVPPathRsvpHopIpv4Ipv4NextPreviousHopAddress_Choice_Enum) Type() protoreflect.EnumType { + return &file_otg_proto_enumTypes[347] } -func (x *Layer1AutoNegotiation) GetAdvertise_10FdMbps() bool { - if x != nil && x.Advertise_10FdMbps != nil { - return *x.Advertise_10FdMbps - } - return false +func (x PatternFlowRSVPPathRsvpHopIpv4Ipv4NextPreviousHopAddress_Choice_Enum) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) } -func (x *Layer1AutoNegotiation) GetAdvertise_10HdMbps() bool { - if x != nil && x.Advertise_10HdMbps != nil { - return *x.Advertise_10HdMbps - } - return false +// Deprecated: Use PatternFlowRSVPPathRsvpHopIpv4Ipv4NextPreviousHopAddress_Choice_Enum.Descriptor instead. +func (PatternFlowRSVPPathRsvpHopIpv4Ipv4NextPreviousHopAddress_Choice_Enum) EnumDescriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{812, 0, 0} } -func (x *Layer1AutoNegotiation) GetLinkTraining() bool { - if x != nil && x.LinkTraining != nil { - return *x.LinkTraining +type PatternFlowRSVPPathRsvpHopIpv4LogicalInterfaceHandle_Choice_Enum int32 + +const ( + PatternFlowRSVPPathRsvpHopIpv4LogicalInterfaceHandle_Choice_unspecified PatternFlowRSVPPathRsvpHopIpv4LogicalInterfaceHandle_Choice_Enum = 0 + PatternFlowRSVPPathRsvpHopIpv4LogicalInterfaceHandle_Choice_value PatternFlowRSVPPathRsvpHopIpv4LogicalInterfaceHandle_Choice_Enum = 2 + PatternFlowRSVPPathRsvpHopIpv4LogicalInterfaceHandle_Choice_values PatternFlowRSVPPathRsvpHopIpv4LogicalInterfaceHandle_Choice_Enum = 3 + PatternFlowRSVPPathRsvpHopIpv4LogicalInterfaceHandle_Choice_increment PatternFlowRSVPPathRsvpHopIpv4LogicalInterfaceHandle_Choice_Enum = 4 + PatternFlowRSVPPathRsvpHopIpv4LogicalInterfaceHandle_Choice_decrement PatternFlowRSVPPathRsvpHopIpv4LogicalInterfaceHandle_Choice_Enum = 5 +) + +// Enum value maps for PatternFlowRSVPPathRsvpHopIpv4LogicalInterfaceHandle_Choice_Enum. +var ( + PatternFlowRSVPPathRsvpHopIpv4LogicalInterfaceHandle_Choice_Enum_name = map[int32]string{ + 0: "unspecified", + 2: "value", + 3: "values", + 4: "increment", + 5: "decrement", } - return false + PatternFlowRSVPPathRsvpHopIpv4LogicalInterfaceHandle_Choice_Enum_value = map[string]int32{ + "unspecified": 0, + "value": 2, + "values": 3, + "increment": 4, + "decrement": 5, + } +) + +func (x PatternFlowRSVPPathRsvpHopIpv4LogicalInterfaceHandle_Choice_Enum) Enum() *PatternFlowRSVPPathRsvpHopIpv4LogicalInterfaceHandle_Choice_Enum { + p := new(PatternFlowRSVPPathRsvpHopIpv4LogicalInterfaceHandle_Choice_Enum) + *p = x + return p } -func (x *Layer1AutoNegotiation) GetRsFec() bool { - if x != nil && x.RsFec != nil { - return *x.RsFec - } - return false +func (x PatternFlowRSVPPathRsvpHopIpv4LogicalInterfaceHandle_Choice_Enum) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } -// A container for layer1 receive flow control settings. -// To enable flow control settings on ports this object must be a valid -// object not a null value. -type Layer1FlowControl struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields +func (PatternFlowRSVPPathRsvpHopIpv4LogicalInterfaceHandle_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { + return file_otg_proto_enumTypes[348].Descriptor() +} - // The 48bit mac address that the layer1 port names will listen on - // for a directed pause. - // default = 01:80:C2:00:00:01 - DirectedAddress *string `protobuf:"bytes,1,opt,name=directed_address,json=directedAddress,proto3,oneof" json:"directed_address,omitempty"` - // The type of priority flow control. - // default = Choice.Enum.ieee_802_1qbb - Choice *Layer1FlowControl_Choice_Enum `protobuf:"varint,2,opt,name=choice,proto3,enum=otg.Layer1FlowControl_Choice_Enum,oneof" json:"choice,omitempty"` - // Description missing in models - Ieee_802_1Qbb *Layer1Ieee8021Qbb `protobuf:"bytes,3,opt,name=ieee_802_1qbb,json=ieee8021qbb,proto3" json:"ieee_802_1qbb,omitempty"` - // Description missing in models - Ieee_802_3X *Layer1Ieee8023X `protobuf:"bytes,4,opt,name=ieee_802_3x,json=ieee8023x,proto3" json:"ieee_802_3x,omitempty"` +func (PatternFlowRSVPPathRsvpHopIpv4LogicalInterfaceHandle_Choice_Enum) Type() protoreflect.EnumType { + return &file_otg_proto_enumTypes[348] } -func (x *Layer1FlowControl) Reset() { - *x = Layer1FlowControl{} - if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[22] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (x PatternFlowRSVPPathRsvpHopIpv4LogicalInterfaceHandle_Choice_Enum) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) } -func (x *Layer1FlowControl) String() string { - return protoimpl.X.MessageStringOf(x) +// Deprecated: Use PatternFlowRSVPPathRsvpHopIpv4LogicalInterfaceHandle_Choice_Enum.Descriptor instead. +func (PatternFlowRSVPPathRsvpHopIpv4LogicalInterfaceHandle_Choice_Enum) EnumDescriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{814, 0, 0} } -func (*Layer1FlowControl) ProtoMessage() {} +type PatternFlowRSVPPathTimeValuesType1RefreshPeriodR_Choice_Enum int32 -func (x *Layer1FlowControl) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[22] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms +const ( + PatternFlowRSVPPathTimeValuesType1RefreshPeriodR_Choice_unspecified PatternFlowRSVPPathTimeValuesType1RefreshPeriodR_Choice_Enum = 0 + PatternFlowRSVPPathTimeValuesType1RefreshPeriodR_Choice_value PatternFlowRSVPPathTimeValuesType1RefreshPeriodR_Choice_Enum = 2 + PatternFlowRSVPPathTimeValuesType1RefreshPeriodR_Choice_values PatternFlowRSVPPathTimeValuesType1RefreshPeriodR_Choice_Enum = 3 + PatternFlowRSVPPathTimeValuesType1RefreshPeriodR_Choice_increment PatternFlowRSVPPathTimeValuesType1RefreshPeriodR_Choice_Enum = 4 + PatternFlowRSVPPathTimeValuesType1RefreshPeriodR_Choice_decrement PatternFlowRSVPPathTimeValuesType1RefreshPeriodR_Choice_Enum = 5 +) + +// Enum value maps for PatternFlowRSVPPathTimeValuesType1RefreshPeriodR_Choice_Enum. +var ( + PatternFlowRSVPPathTimeValuesType1RefreshPeriodR_Choice_Enum_name = map[int32]string{ + 0: "unspecified", + 2: "value", + 3: "values", + 4: "increment", + 5: "decrement", } - return mi.MessageOf(x) -} + PatternFlowRSVPPathTimeValuesType1RefreshPeriodR_Choice_Enum_value = map[string]int32{ + "unspecified": 0, + "value": 2, + "values": 3, + "increment": 4, + "decrement": 5, + } +) -// Deprecated: Use Layer1FlowControl.ProtoReflect.Descriptor instead. -func (*Layer1FlowControl) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{22} +func (x PatternFlowRSVPPathTimeValuesType1RefreshPeriodR_Choice_Enum) Enum() *PatternFlowRSVPPathTimeValuesType1RefreshPeriodR_Choice_Enum { + p := new(PatternFlowRSVPPathTimeValuesType1RefreshPeriodR_Choice_Enum) + *p = x + return p } -func (x *Layer1FlowControl) GetDirectedAddress() string { - if x != nil && x.DirectedAddress != nil { - return *x.DirectedAddress - } - return "" +func (x PatternFlowRSVPPathTimeValuesType1RefreshPeriodR_Choice_Enum) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } -func (x *Layer1FlowControl) GetChoice() Layer1FlowControl_Choice_Enum { - if x != nil && x.Choice != nil { - return *x.Choice - } - return Layer1FlowControl_Choice_unspecified +func (PatternFlowRSVPPathTimeValuesType1RefreshPeriodR_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { + return file_otg_proto_enumTypes[349].Descriptor() } -func (x *Layer1FlowControl) GetIeee_802_1Qbb() *Layer1Ieee8021Qbb { - if x != nil { - return x.Ieee_802_1Qbb - } - return nil +func (PatternFlowRSVPPathTimeValuesType1RefreshPeriodR_Choice_Enum) Type() protoreflect.EnumType { + return &file_otg_proto_enumTypes[349] } -func (x *Layer1FlowControl) GetIeee_802_3X() *Layer1Ieee8023X { - if x != nil { - return x.Ieee_802_3X - } - return nil +func (x PatternFlowRSVPPathTimeValuesType1RefreshPeriodR_Choice_Enum) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) } -// A container for ieee 802.3x rx pause settings -type Layer1Ieee8023X struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields +// Deprecated: Use PatternFlowRSVPPathTimeValuesType1RefreshPeriodR_Choice_Enum.Descriptor instead. +func (PatternFlowRSVPPathTimeValuesType1RefreshPeriodR_Choice_Enum) EnumDescriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{816, 0, 0} } -func (x *Layer1Ieee8023X) Reset() { - *x = Layer1Ieee8023X{} - if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[23] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) +type PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixLBit_Choice_Enum int32 + +const ( + PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixLBit_Choice_unspecified PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixLBit_Choice_Enum = 0 + PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixLBit_Choice_value PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixLBit_Choice_Enum = 2 + PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixLBit_Choice_values PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixLBit_Choice_Enum = 3 + PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixLBit_Choice_increment PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixLBit_Choice_Enum = 4 + PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixLBit_Choice_decrement PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixLBit_Choice_Enum = 5 +) + +// Enum value maps for PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixLBit_Choice_Enum. +var ( + PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixLBit_Choice_Enum_name = map[int32]string{ + 0: "unspecified", + 2: "value", + 3: "values", + 4: "increment", + 5: "decrement", } -} + PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixLBit_Choice_Enum_value = map[string]int32{ + "unspecified": 0, + "value": 2, + "values": 3, + "increment": 4, + "decrement": 5, + } +) -func (x *Layer1Ieee8023X) String() string { - return protoimpl.X.MessageStringOf(x) +func (x PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixLBit_Choice_Enum) Enum() *PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixLBit_Choice_Enum { + p := new(PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixLBit_Choice_Enum) + *p = x + return p } -func (*Layer1Ieee8023X) ProtoMessage() {} +func (x PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixLBit_Choice_Enum) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} -func (x *Layer1Ieee8023X) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[23] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) +func (PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixLBit_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { + return file_otg_proto_enumTypes[350].Descriptor() } -// Deprecated: Use Layer1Ieee8023X.ProtoReflect.Descriptor instead. -func (*Layer1Ieee8023X) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{23} +func (PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixLBit_Choice_Enum) Type() protoreflect.EnumType { + return &file_otg_proto_enumTypes[350] } -// These settings enhance the existing 802.3x pause priority capabilities -// to enable flow control based on 802.1p priorities (classes of service). -type Layer1Ieee8021Qbb struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields +func (x PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixLBit_Choice_Enum) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} - // The upper limit on the transmit time of a queue after receiving a - // message to pause a specified priority. - // A value of 0 or null indicates that pfc delay will not be enabled. - // default = 0 - PfcDelay *uint32 `protobuf:"varint,1,opt,name=pfc_delay,json=pfcDelay,proto3,oneof" json:"pfc_delay,omitempty"` - // The valid values are null, 0 - 7. - // A null value indicates there is no setting for this pfc class. - // default = 0 - PfcClass_0 *uint32 `protobuf:"varint,2,opt,name=pfc_class_0,json=pfcClass0,proto3,oneof" json:"pfc_class_0,omitempty"` - // The valid values are null, 0 - 7. - // A null value indicates there is no setting for this pfc class. - // default = 1 - PfcClass_1 *uint32 `protobuf:"varint,3,opt,name=pfc_class_1,json=pfcClass1,proto3,oneof" json:"pfc_class_1,omitempty"` - // The valid values are null, 0 - 7. - // A null value indicates there is no setting for this pfc class. - // default = 2 - PfcClass_2 *uint32 `protobuf:"varint,4,opt,name=pfc_class_2,json=pfcClass2,proto3,oneof" json:"pfc_class_2,omitempty"` - // The valid values are null, 0 - 7. - // A null value indicates there is no setting for this pfc class. - // default = 3 - PfcClass_3 *uint32 `protobuf:"varint,5,opt,name=pfc_class_3,json=pfcClass3,proto3,oneof" json:"pfc_class_3,omitempty"` - // The valid values are null, 0 - 7. - // A null value indicates there is no setting for this pfc class. - // default = 4 - PfcClass_4 *uint32 `protobuf:"varint,6,opt,name=pfc_class_4,json=pfcClass4,proto3,oneof" json:"pfc_class_4,omitempty"` - // The valid values are null, 0 - 7. - // A null value indicates there is no setting for this pfc class. - // default = 5 - PfcClass_5 *uint32 `protobuf:"varint,7,opt,name=pfc_class_5,json=pfcClass5,proto3,oneof" json:"pfc_class_5,omitempty"` - // The valid values are null, 0 - 7. - // A null value indicates there is no setting for this pfc class. - // default = 6 - PfcClass_6 *uint32 `protobuf:"varint,8,opt,name=pfc_class_6,json=pfcClass6,proto3,oneof" json:"pfc_class_6,omitempty"` - // The valid values are null, 0 - 7. - // A null value indicates there is no setting for this pfc class. - // default = 7 - PfcClass_7 *uint32 `protobuf:"varint,9,opt,name=pfc_class_7,json=pfcClass7,proto3,oneof" json:"pfc_class_7,omitempty"` +// Deprecated: Use PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixLBit_Choice_Enum.Descriptor instead. +func (PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixLBit_Choice_Enum) EnumDescriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{818, 0, 0} } -func (x *Layer1Ieee8021Qbb) Reset() { - *x = Layer1Ieee8021Qbb{} - if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[24] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) +type PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixIpv4Address_Choice_Enum int32 + +const ( + PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixIpv4Address_Choice_unspecified PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixIpv4Address_Choice_Enum = 0 + PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixIpv4Address_Choice_value PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixIpv4Address_Choice_Enum = 2 + PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixIpv4Address_Choice_values PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixIpv4Address_Choice_Enum = 3 + PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixIpv4Address_Choice_increment PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixIpv4Address_Choice_Enum = 4 + PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixIpv4Address_Choice_decrement PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixIpv4Address_Choice_Enum = 5 +) + +// Enum value maps for PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixIpv4Address_Choice_Enum. +var ( + PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixIpv4Address_Choice_Enum_name = map[int32]string{ + 0: "unspecified", + 2: "value", + 3: "values", + 4: "increment", + 5: "decrement", + } + PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixIpv4Address_Choice_Enum_value = map[string]int32{ + "unspecified": 0, + "value": 2, + "values": 3, + "increment": 4, + "decrement": 5, } +) + +func (x PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixIpv4Address_Choice_Enum) Enum() *PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixIpv4Address_Choice_Enum { + p := new(PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixIpv4Address_Choice_Enum) + *p = x + return p } -func (x *Layer1Ieee8021Qbb) String() string { - return protoimpl.X.MessageStringOf(x) +func (x PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixIpv4Address_Choice_Enum) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } -func (*Layer1Ieee8021Qbb) ProtoMessage() {} +func (PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixIpv4Address_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { + return file_otg_proto_enumTypes[351].Descriptor() +} -func (x *Layer1Ieee8021Qbb) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[24] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) +func (PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixIpv4Address_Choice_Enum) Type() protoreflect.EnumType { + return &file_otg_proto_enumTypes[351] } -// Deprecated: Use Layer1Ieee8021Qbb.ProtoReflect.Descriptor instead. -func (*Layer1Ieee8021Qbb) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{24} +func (x PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixIpv4Address_Choice_Enum) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) } -func (x *Layer1Ieee8021Qbb) GetPfcDelay() uint32 { - if x != nil && x.PfcDelay != nil { - return *x.PfcDelay - } - return 0 +// Deprecated: Use PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixIpv4Address_Choice_Enum.Descriptor instead. +func (PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixIpv4Address_Choice_Enum) EnumDescriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{820, 0, 0} } -func (x *Layer1Ieee8021Qbb) GetPfcClass_0() uint32 { - if x != nil && x.PfcClass_0 != nil { - return *x.PfcClass_0 +type PatternFlowRSVPPathExplicitRouteType1FourByteASNumberLBit_Choice_Enum int32 + +const ( + PatternFlowRSVPPathExplicitRouteType1FourByteASNumberLBit_Choice_unspecified PatternFlowRSVPPathExplicitRouteType1FourByteASNumberLBit_Choice_Enum = 0 + PatternFlowRSVPPathExplicitRouteType1FourByteASNumberLBit_Choice_value PatternFlowRSVPPathExplicitRouteType1FourByteASNumberLBit_Choice_Enum = 2 + PatternFlowRSVPPathExplicitRouteType1FourByteASNumberLBit_Choice_values PatternFlowRSVPPathExplicitRouteType1FourByteASNumberLBit_Choice_Enum = 3 + PatternFlowRSVPPathExplicitRouteType1FourByteASNumberLBit_Choice_increment PatternFlowRSVPPathExplicitRouteType1FourByteASNumberLBit_Choice_Enum = 4 + PatternFlowRSVPPathExplicitRouteType1FourByteASNumberLBit_Choice_decrement PatternFlowRSVPPathExplicitRouteType1FourByteASNumberLBit_Choice_Enum = 5 +) + +// Enum value maps for PatternFlowRSVPPathExplicitRouteType1FourByteASNumberLBit_Choice_Enum. +var ( + PatternFlowRSVPPathExplicitRouteType1FourByteASNumberLBit_Choice_Enum_name = map[int32]string{ + 0: "unspecified", + 2: "value", + 3: "values", + 4: "increment", + 5: "decrement", } - return 0 + PatternFlowRSVPPathExplicitRouteType1FourByteASNumberLBit_Choice_Enum_value = map[string]int32{ + "unspecified": 0, + "value": 2, + "values": 3, + "increment": 4, + "decrement": 5, + } +) + +func (x PatternFlowRSVPPathExplicitRouteType1FourByteASNumberLBit_Choice_Enum) Enum() *PatternFlowRSVPPathExplicitRouteType1FourByteASNumberLBit_Choice_Enum { + p := new(PatternFlowRSVPPathExplicitRouteType1FourByteASNumberLBit_Choice_Enum) + *p = x + return p } -func (x *Layer1Ieee8021Qbb) GetPfcClass_1() uint32 { - if x != nil && x.PfcClass_1 != nil { - return *x.PfcClass_1 - } - return 0 +func (x PatternFlowRSVPPathExplicitRouteType1FourByteASNumberLBit_Choice_Enum) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } -func (x *Layer1Ieee8021Qbb) GetPfcClass_2() uint32 { - if x != nil && x.PfcClass_2 != nil { - return *x.PfcClass_2 - } - return 0 +func (PatternFlowRSVPPathExplicitRouteType1FourByteASNumberLBit_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { + return file_otg_proto_enumTypes[352].Descriptor() } -func (x *Layer1Ieee8021Qbb) GetPfcClass_3() uint32 { - if x != nil && x.PfcClass_3 != nil { - return *x.PfcClass_3 - } - return 0 +func (PatternFlowRSVPPathExplicitRouteType1FourByteASNumberLBit_Choice_Enum) Type() protoreflect.EnumType { + return &file_otg_proto_enumTypes[352] } -func (x *Layer1Ieee8021Qbb) GetPfcClass_4() uint32 { - if x != nil && x.PfcClass_4 != nil { - return *x.PfcClass_4 - } - return 0 +func (x PatternFlowRSVPPathExplicitRouteType1FourByteASNumberLBit_Choice_Enum) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) } -func (x *Layer1Ieee8021Qbb) GetPfcClass_5() uint32 { - if x != nil && x.PfcClass_5 != nil { - return *x.PfcClass_5 - } - return 0 +// Deprecated: Use PatternFlowRSVPPathExplicitRouteType1FourByteASNumberLBit_Choice_Enum.Descriptor instead. +func (PatternFlowRSVPPathExplicitRouteType1FourByteASNumberLBit_Choice_Enum) EnumDescriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{822, 0, 0} } -func (x *Layer1Ieee8021Qbb) GetPfcClass_6() uint32 { - if x != nil && x.PfcClass_6 != nil { - return *x.PfcClass_6 +type PatternFlowRSVPPathExplicitRouteType1FourByteASNumberReserved_Choice_Enum int32 + +const ( + PatternFlowRSVPPathExplicitRouteType1FourByteASNumberReserved_Choice_unspecified PatternFlowRSVPPathExplicitRouteType1FourByteASNumberReserved_Choice_Enum = 0 + PatternFlowRSVPPathExplicitRouteType1FourByteASNumberReserved_Choice_value PatternFlowRSVPPathExplicitRouteType1FourByteASNumberReserved_Choice_Enum = 2 + PatternFlowRSVPPathExplicitRouteType1FourByteASNumberReserved_Choice_values PatternFlowRSVPPathExplicitRouteType1FourByteASNumberReserved_Choice_Enum = 3 + PatternFlowRSVPPathExplicitRouteType1FourByteASNumberReserved_Choice_increment PatternFlowRSVPPathExplicitRouteType1FourByteASNumberReserved_Choice_Enum = 4 + PatternFlowRSVPPathExplicitRouteType1FourByteASNumberReserved_Choice_decrement PatternFlowRSVPPathExplicitRouteType1FourByteASNumberReserved_Choice_Enum = 5 +) + +// Enum value maps for PatternFlowRSVPPathExplicitRouteType1FourByteASNumberReserved_Choice_Enum. +var ( + PatternFlowRSVPPathExplicitRouteType1FourByteASNumberReserved_Choice_Enum_name = map[int32]string{ + 0: "unspecified", + 2: "value", + 3: "values", + 4: "increment", + 5: "decrement", } - return 0 + PatternFlowRSVPPathExplicitRouteType1FourByteASNumberReserved_Choice_Enum_value = map[string]int32{ + "unspecified": 0, + "value": 2, + "values": 3, + "increment": 4, + "decrement": 5, + } +) + +func (x PatternFlowRSVPPathExplicitRouteType1FourByteASNumberReserved_Choice_Enum) Enum() *PatternFlowRSVPPathExplicitRouteType1FourByteASNumberReserved_Choice_Enum { + p := new(PatternFlowRSVPPathExplicitRouteType1FourByteASNumberReserved_Choice_Enum) + *p = x + return p } -func (x *Layer1Ieee8021Qbb) GetPfcClass_7() uint32 { - if x != nil && x.PfcClass_7 != nil { - return *x.PfcClass_7 - } - return 0 +func (x PatternFlowRSVPPathExplicitRouteType1FourByteASNumberReserved_Choice_Enum) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } -// Under Review: There may be changes in filter configuration -// -// Under Review: There may be changes in filter configuration -// -// Configuration for capture settings. -type Capture struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields +func (PatternFlowRSVPPathExplicitRouteType1FourByteASNumberReserved_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { + return file_otg_proto_enumTypes[353].Descriptor() +} - // The unique names of ports that the capture settings will apply to. Port_names cannot - // be duplicated between capture objects. - // - // x-constraint: - // - /components/schemas/Port/properties/name - // - // x-constraint: - // - /components/schemas/Port/properties/name - PortNames []string `protobuf:"bytes,1,rep,name=port_names,json=portNames,proto3" json:"port_names,omitempty"` - // A list of filters to apply to the capturing ports. If no filters are specified then - // all packets will be captured. A capture can have multiple filters. The number of - // filters supported is determined by the implementation which can be retrieved using - // the capabilities API. - // When multiple filters are specified the capture implementation must && (and) all - // the filters. - Filters []*CaptureFilter `protobuf:"bytes,2,rep,name=filters,proto3" json:"filters,omitempty"` - // Overwrite the capture buffer. - // default = True - Overwrite *bool `protobuf:"varint,3,opt,name=overwrite,proto3,oneof" json:"overwrite,omitempty"` - // The maximum size of each captured packet. If no value is specified or it is null - // then the entire packet will be captured. - PacketSize *uint32 `protobuf:"varint,4,opt,name=packet_size,json=packetSize,proto3,oneof" json:"packet_size,omitempty"` - // The format of the capture file. - // default = Format.Enum.pcap - Format *Capture_Format_Enum `protobuf:"varint,5,opt,name=format,proto3,enum=otg.Capture_Format_Enum,oneof" json:"format,omitempty"` - // Globally unique name of an object. It also serves as the primary key for arrays of - // objects. - // required = true - Name *string `protobuf:"bytes,6,opt,name=name,proto3,oneof" json:"name,omitempty"` +func (PatternFlowRSVPPathExplicitRouteType1FourByteASNumberReserved_Choice_Enum) Type() protoreflect.EnumType { + return &file_otg_proto_enumTypes[353] } -func (x *Capture) Reset() { - *x = Capture{} - if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[25] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (x PatternFlowRSVPPathExplicitRouteType1FourByteASNumberReserved_Choice_Enum) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) } -func (x *Capture) String() string { - return protoimpl.X.MessageStringOf(x) +// Deprecated: Use PatternFlowRSVPPathExplicitRouteType1FourByteASNumberReserved_Choice_Enum.Descriptor instead. +func (PatternFlowRSVPPathExplicitRouteType1FourByteASNumberReserved_Choice_Enum) EnumDescriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{824, 0, 0} } -func (*Capture) ProtoMessage() {} +type PatternFlowRSVPPathLabelRequestWithoutLabelRangeReserved_Choice_Enum int32 -func (x *Capture) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[25] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms +const ( + PatternFlowRSVPPathLabelRequestWithoutLabelRangeReserved_Choice_unspecified PatternFlowRSVPPathLabelRequestWithoutLabelRangeReserved_Choice_Enum = 0 + PatternFlowRSVPPathLabelRequestWithoutLabelRangeReserved_Choice_value PatternFlowRSVPPathLabelRequestWithoutLabelRangeReserved_Choice_Enum = 2 + PatternFlowRSVPPathLabelRequestWithoutLabelRangeReserved_Choice_values PatternFlowRSVPPathLabelRequestWithoutLabelRangeReserved_Choice_Enum = 3 + PatternFlowRSVPPathLabelRequestWithoutLabelRangeReserved_Choice_increment PatternFlowRSVPPathLabelRequestWithoutLabelRangeReserved_Choice_Enum = 4 + PatternFlowRSVPPathLabelRequestWithoutLabelRangeReserved_Choice_decrement PatternFlowRSVPPathLabelRequestWithoutLabelRangeReserved_Choice_Enum = 5 +) + +// Enum value maps for PatternFlowRSVPPathLabelRequestWithoutLabelRangeReserved_Choice_Enum. +var ( + PatternFlowRSVPPathLabelRequestWithoutLabelRangeReserved_Choice_Enum_name = map[int32]string{ + 0: "unspecified", + 2: "value", + 3: "values", + 4: "increment", + 5: "decrement", } - return mi.MessageOf(x) + PatternFlowRSVPPathLabelRequestWithoutLabelRangeReserved_Choice_Enum_value = map[string]int32{ + "unspecified": 0, + "value": 2, + "values": 3, + "increment": 4, + "decrement": 5, + } +) + +func (x PatternFlowRSVPPathLabelRequestWithoutLabelRangeReserved_Choice_Enum) Enum() *PatternFlowRSVPPathLabelRequestWithoutLabelRangeReserved_Choice_Enum { + p := new(PatternFlowRSVPPathLabelRequestWithoutLabelRangeReserved_Choice_Enum) + *p = x + return p } -// Deprecated: Use Capture.ProtoReflect.Descriptor instead. -func (*Capture) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{25} +func (x PatternFlowRSVPPathLabelRequestWithoutLabelRangeReserved_Choice_Enum) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } -func (x *Capture) GetPortNames() []string { - if x != nil { - return x.PortNames - } - return nil +func (PatternFlowRSVPPathLabelRequestWithoutLabelRangeReserved_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { + return file_otg_proto_enumTypes[354].Descriptor() } -func (x *Capture) GetFilters() []*CaptureFilter { - if x != nil { - return x.Filters - } - return nil +func (PatternFlowRSVPPathLabelRequestWithoutLabelRangeReserved_Choice_Enum) Type() protoreflect.EnumType { + return &file_otg_proto_enumTypes[354] } -func (x *Capture) GetOverwrite() bool { - if x != nil && x.Overwrite != nil { - return *x.Overwrite - } - return false +func (x PatternFlowRSVPPathLabelRequestWithoutLabelRangeReserved_Choice_Enum) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) } -func (x *Capture) GetPacketSize() uint32 { - if x != nil && x.PacketSize != nil { - return *x.PacketSize - } - return 0 +// Deprecated: Use PatternFlowRSVPPathLabelRequestWithoutLabelRangeReserved_Choice_Enum.Descriptor instead. +func (PatternFlowRSVPPathLabelRequestWithoutLabelRangeReserved_Choice_Enum) EnumDescriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{826, 0, 0} } -func (x *Capture) GetFormat() Capture_Format_Enum { - if x != nil && x.Format != nil { - return *x.Format +type PatternFlowRSVPPathLabelRequestWithoutLabelRangeL3Pid_Choice_Enum int32 + +const ( + PatternFlowRSVPPathLabelRequestWithoutLabelRangeL3Pid_Choice_unspecified PatternFlowRSVPPathLabelRequestWithoutLabelRangeL3Pid_Choice_Enum = 0 + PatternFlowRSVPPathLabelRequestWithoutLabelRangeL3Pid_Choice_value PatternFlowRSVPPathLabelRequestWithoutLabelRangeL3Pid_Choice_Enum = 2 + PatternFlowRSVPPathLabelRequestWithoutLabelRangeL3Pid_Choice_values PatternFlowRSVPPathLabelRequestWithoutLabelRangeL3Pid_Choice_Enum = 3 + PatternFlowRSVPPathLabelRequestWithoutLabelRangeL3Pid_Choice_increment PatternFlowRSVPPathLabelRequestWithoutLabelRangeL3Pid_Choice_Enum = 4 + PatternFlowRSVPPathLabelRequestWithoutLabelRangeL3Pid_Choice_decrement PatternFlowRSVPPathLabelRequestWithoutLabelRangeL3Pid_Choice_Enum = 5 +) + +// Enum value maps for PatternFlowRSVPPathLabelRequestWithoutLabelRangeL3Pid_Choice_Enum. +var ( + PatternFlowRSVPPathLabelRequestWithoutLabelRangeL3Pid_Choice_Enum_name = map[int32]string{ + 0: "unspecified", + 2: "value", + 3: "values", + 4: "increment", + 5: "decrement", } - return Capture_Format_unspecified + PatternFlowRSVPPathLabelRequestWithoutLabelRangeL3Pid_Choice_Enum_value = map[string]int32{ + "unspecified": 0, + "value": 2, + "values": 3, + "increment": 4, + "decrement": 5, + } +) + +func (x PatternFlowRSVPPathLabelRequestWithoutLabelRangeL3Pid_Choice_Enum) Enum() *PatternFlowRSVPPathLabelRequestWithoutLabelRangeL3Pid_Choice_Enum { + p := new(PatternFlowRSVPPathLabelRequestWithoutLabelRangeL3Pid_Choice_Enum) + *p = x + return p } -func (x *Capture) GetName() string { - if x != nil && x.Name != nil { - return *x.Name - } - return "" +func (x PatternFlowRSVPPathLabelRequestWithoutLabelRangeL3Pid_Choice_Enum) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } -// Configuration for capture filters -type CaptureFilter struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields +func (PatternFlowRSVPPathLabelRequestWithoutLabelRangeL3Pid_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { + return file_otg_proto_enumTypes[355].Descriptor() +} - // The type of capture filter. - // default = Choice.Enum.custom - Choice *CaptureFilter_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.CaptureFilter_Choice_Enum,oneof" json:"choice,omitempty"` - // Offset from last filter in the list. If no filters are present it is offset from - // position 0. Multiple custom filters can be present, the length of each custom filter - // is the length of the value being filtered. - Custom *CaptureCustom `protobuf:"bytes,2,opt,name=custom,proto3" json:"custom,omitempty"` - // Description missing in models - Ethernet *CaptureEthernet `protobuf:"bytes,3,opt,name=ethernet,proto3" json:"ethernet,omitempty"` - // Description missing in models - Vlan *CaptureVlan `protobuf:"bytes,4,opt,name=vlan,proto3" json:"vlan,omitempty"` - // Description missing in models - Ipv4 *CaptureIpv4 `protobuf:"bytes,5,opt,name=ipv4,proto3" json:"ipv4,omitempty"` - // Description missing in models - Ipv6 *CaptureIpv6 `protobuf:"bytes,6,opt,name=ipv6,proto3" json:"ipv6,omitempty"` +func (PatternFlowRSVPPathLabelRequestWithoutLabelRangeL3Pid_Choice_Enum) Type() protoreflect.EnumType { + return &file_otg_proto_enumTypes[355] } -func (x *CaptureFilter) Reset() { - *x = CaptureFilter{} - if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[26] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (x PatternFlowRSVPPathLabelRequestWithoutLabelRangeL3Pid_Choice_Enum) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) } -func (x *CaptureFilter) String() string { - return protoimpl.X.MessageStringOf(x) +// Deprecated: Use PatternFlowRSVPPathLabelRequestWithoutLabelRangeL3Pid_Choice_Enum.Descriptor instead. +func (PatternFlowRSVPPathLabelRequestWithoutLabelRangeL3Pid_Choice_Enum) EnumDescriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{828, 0, 0} } -func (*CaptureFilter) ProtoMessage() {} +type PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Ipv4TunnelSenderAddress_Choice_Enum int32 -func (x *CaptureFilter) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[26] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use CaptureFilter.ProtoReflect.Descriptor instead. -func (*CaptureFilter) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{26} -} +const ( + PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Ipv4TunnelSenderAddress_Choice_unspecified PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Ipv4TunnelSenderAddress_Choice_Enum = 0 + PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Ipv4TunnelSenderAddress_Choice_value PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Ipv4TunnelSenderAddress_Choice_Enum = 2 + PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Ipv4TunnelSenderAddress_Choice_values PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Ipv4TunnelSenderAddress_Choice_Enum = 3 + PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Ipv4TunnelSenderAddress_Choice_increment PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Ipv4TunnelSenderAddress_Choice_Enum = 4 + PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Ipv4TunnelSenderAddress_Choice_decrement PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Ipv4TunnelSenderAddress_Choice_Enum = 5 +) -func (x *CaptureFilter) GetChoice() CaptureFilter_Choice_Enum { - if x != nil && x.Choice != nil { - return *x.Choice +// Enum value maps for PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Ipv4TunnelSenderAddress_Choice_Enum. +var ( + PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Ipv4TunnelSenderAddress_Choice_Enum_name = map[int32]string{ + 0: "unspecified", + 2: "value", + 3: "values", + 4: "increment", + 5: "decrement", } - return CaptureFilter_Choice_unspecified -} - -func (x *CaptureFilter) GetCustom() *CaptureCustom { - if x != nil { - return x.Custom + PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Ipv4TunnelSenderAddress_Choice_Enum_value = map[string]int32{ + "unspecified": 0, + "value": 2, + "values": 3, + "increment": 4, + "decrement": 5, } - return nil -} +) -func (x *CaptureFilter) GetEthernet() *CaptureEthernet { - if x != nil { - return x.Ethernet - } - return nil +func (x PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Ipv4TunnelSenderAddress_Choice_Enum) Enum() *PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Ipv4TunnelSenderAddress_Choice_Enum { + p := new(PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Ipv4TunnelSenderAddress_Choice_Enum) + *p = x + return p } -func (x *CaptureFilter) GetVlan() *CaptureVlan { - if x != nil { - return x.Vlan - } - return nil +func (x PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Ipv4TunnelSenderAddress_Choice_Enum) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } -func (x *CaptureFilter) GetIpv4() *CaptureIpv4 { - if x != nil { - return x.Ipv4 - } - return nil +func (PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Ipv4TunnelSenderAddress_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { + return file_otg_proto_enumTypes[356].Descriptor() } -func (x *CaptureFilter) GetIpv6() *CaptureIpv6 { - if x != nil { - return x.Ipv6 - } - return nil +func (PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Ipv4TunnelSenderAddress_Choice_Enum) Type() protoreflect.EnumType { + return &file_otg_proto_enumTypes[356] } -// Description missing in models -type CaptureCustom struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // The bit offset of field to filter on - Offset *uint32 `protobuf:"varint,1,opt,name=offset,proto3,oneof" json:"offset,omitempty"` - // The bit length of field to filter on - // default = 8 - BitLength *uint32 `protobuf:"varint,2,opt,name=bit_length,json=bitLength,proto3,oneof" json:"bit_length,omitempty"` - // Description missing in models - // default = 00 - Value *string `protobuf:"bytes,3,opt,name=value,proto3,oneof" json:"value,omitempty"` - // Description missing in models - // default = 00 - Mask *string `protobuf:"bytes,4,opt,name=mask,proto3,oneof" json:"mask,omitempty"` - // Description missing in models - // default = False - Negate *bool `protobuf:"varint,5,opt,name=negate,proto3,oneof" json:"negate,omitempty"` +func (x PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Ipv4TunnelSenderAddress_Choice_Enum) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) } -func (x *CaptureCustom) Reset() { - *x = CaptureCustom{} - if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[27] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +// Deprecated: Use PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Ipv4TunnelSenderAddress_Choice_Enum.Descriptor instead. +func (PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Ipv4TunnelSenderAddress_Choice_Enum) EnumDescriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{830, 0, 0} } -func (x *CaptureCustom) String() string { - return protoimpl.X.MessageStringOf(x) -} +type PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Reserved_Choice_Enum int32 -func (*CaptureCustom) ProtoMessage() {} +const ( + PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Reserved_Choice_unspecified PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Reserved_Choice_Enum = 0 + PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Reserved_Choice_value PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Reserved_Choice_Enum = 2 + PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Reserved_Choice_values PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Reserved_Choice_Enum = 3 + PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Reserved_Choice_increment PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Reserved_Choice_Enum = 4 + PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Reserved_Choice_decrement PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Reserved_Choice_Enum = 5 +) -func (x *CaptureCustom) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[27] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms +// Enum value maps for PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Reserved_Choice_Enum. +var ( + PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Reserved_Choice_Enum_name = map[int32]string{ + 0: "unspecified", + 2: "value", + 3: "values", + 4: "increment", + 5: "decrement", } - return mi.MessageOf(x) -} + PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Reserved_Choice_Enum_value = map[string]int32{ + "unspecified": 0, + "value": 2, + "values": 3, + "increment": 4, + "decrement": 5, + } +) -// Deprecated: Use CaptureCustom.ProtoReflect.Descriptor instead. -func (*CaptureCustom) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{27} +func (x PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Reserved_Choice_Enum) Enum() *PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Reserved_Choice_Enum { + p := new(PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Reserved_Choice_Enum) + *p = x + return p } -func (x *CaptureCustom) GetOffset() uint32 { - if x != nil && x.Offset != nil { - return *x.Offset - } - return 0 +func (x PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Reserved_Choice_Enum) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } -func (x *CaptureCustom) GetBitLength() uint32 { - if x != nil && x.BitLength != nil { - return *x.BitLength - } - return 0 +func (PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Reserved_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { + return file_otg_proto_enumTypes[357].Descriptor() } -func (x *CaptureCustom) GetValue() string { - if x != nil && x.Value != nil { - return *x.Value - } - return "" +func (PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Reserved_Choice_Enum) Type() protoreflect.EnumType { + return &file_otg_proto_enumTypes[357] } -func (x *CaptureCustom) GetMask() string { - if x != nil && x.Mask != nil { - return *x.Mask - } - return "" +func (x PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Reserved_Choice_Enum) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) } -func (x *CaptureCustom) GetNegate() bool { - if x != nil && x.Negate != nil { - return *x.Negate - } - return false +// Deprecated: Use PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Reserved_Choice_Enum.Descriptor instead. +func (PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Reserved_Choice_Enum) EnumDescriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{832, 0, 0} } -// Description missing in models -type CaptureField struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields +type PatternFlowRSVPPathSenderTemplateLspTunnelIpv4LspId_Choice_Enum int32 - // Description missing in models - // default = 00 - Value *string `protobuf:"bytes,1,opt,name=value,proto3,oneof" json:"value,omitempty"` - // Description missing in models - // default = 00 - Mask *string `protobuf:"bytes,2,opt,name=mask,proto3,oneof" json:"mask,omitempty"` - // Description missing in models - // default = False - Negate *bool `protobuf:"varint,3,opt,name=negate,proto3,oneof" json:"negate,omitempty"` -} +const ( + PatternFlowRSVPPathSenderTemplateLspTunnelIpv4LspId_Choice_unspecified PatternFlowRSVPPathSenderTemplateLspTunnelIpv4LspId_Choice_Enum = 0 + PatternFlowRSVPPathSenderTemplateLspTunnelIpv4LspId_Choice_value PatternFlowRSVPPathSenderTemplateLspTunnelIpv4LspId_Choice_Enum = 2 + PatternFlowRSVPPathSenderTemplateLspTunnelIpv4LspId_Choice_values PatternFlowRSVPPathSenderTemplateLspTunnelIpv4LspId_Choice_Enum = 3 + PatternFlowRSVPPathSenderTemplateLspTunnelIpv4LspId_Choice_increment PatternFlowRSVPPathSenderTemplateLspTunnelIpv4LspId_Choice_Enum = 4 + PatternFlowRSVPPathSenderTemplateLspTunnelIpv4LspId_Choice_decrement PatternFlowRSVPPathSenderTemplateLspTunnelIpv4LspId_Choice_Enum = 5 +) -func (x *CaptureField) Reset() { - *x = CaptureField{} - if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[28] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) +// Enum value maps for PatternFlowRSVPPathSenderTemplateLspTunnelIpv4LspId_Choice_Enum. +var ( + PatternFlowRSVPPathSenderTemplateLspTunnelIpv4LspId_Choice_Enum_name = map[int32]string{ + 0: "unspecified", + 2: "value", + 3: "values", + 4: "increment", + 5: "decrement", + } + PatternFlowRSVPPathSenderTemplateLspTunnelIpv4LspId_Choice_Enum_value = map[string]int32{ + "unspecified": 0, + "value": 2, + "values": 3, + "increment": 4, + "decrement": 5, } +) + +func (x PatternFlowRSVPPathSenderTemplateLspTunnelIpv4LspId_Choice_Enum) Enum() *PatternFlowRSVPPathSenderTemplateLspTunnelIpv4LspId_Choice_Enum { + p := new(PatternFlowRSVPPathSenderTemplateLspTunnelIpv4LspId_Choice_Enum) + *p = x + return p } -func (x *CaptureField) String() string { - return protoimpl.X.MessageStringOf(x) +func (x PatternFlowRSVPPathSenderTemplateLspTunnelIpv4LspId_Choice_Enum) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } -func (*CaptureField) ProtoMessage() {} +func (PatternFlowRSVPPathSenderTemplateLspTunnelIpv4LspId_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { + return file_otg_proto_enumTypes[358].Descriptor() +} -func (x *CaptureField) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[28] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) +func (PatternFlowRSVPPathSenderTemplateLspTunnelIpv4LspId_Choice_Enum) Type() protoreflect.EnumType { + return &file_otg_proto_enumTypes[358] } -// Deprecated: Use CaptureField.ProtoReflect.Descriptor instead. -func (*CaptureField) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{28} +func (x PatternFlowRSVPPathSenderTemplateLspTunnelIpv4LspId_Choice_Enum) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) } -func (x *CaptureField) GetValue() string { - if x != nil && x.Value != nil { - return *x.Value - } - return "" +// Deprecated: Use PatternFlowRSVPPathSenderTemplateLspTunnelIpv4LspId_Choice_Enum.Descriptor instead. +func (PatternFlowRSVPPathSenderTemplateLspTunnelIpv4LspId_Choice_Enum) EnumDescriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{834, 0, 0} } -func (x *CaptureField) GetMask() string { - if x != nil && x.Mask != nil { - return *x.Mask +type PatternFlowRSVPPathSenderTspecIntServVersion_Choice_Enum int32 + +const ( + PatternFlowRSVPPathSenderTspecIntServVersion_Choice_unspecified PatternFlowRSVPPathSenderTspecIntServVersion_Choice_Enum = 0 + PatternFlowRSVPPathSenderTspecIntServVersion_Choice_value PatternFlowRSVPPathSenderTspecIntServVersion_Choice_Enum = 2 + PatternFlowRSVPPathSenderTspecIntServVersion_Choice_values PatternFlowRSVPPathSenderTspecIntServVersion_Choice_Enum = 3 + PatternFlowRSVPPathSenderTspecIntServVersion_Choice_increment PatternFlowRSVPPathSenderTspecIntServVersion_Choice_Enum = 4 + PatternFlowRSVPPathSenderTspecIntServVersion_Choice_decrement PatternFlowRSVPPathSenderTspecIntServVersion_Choice_Enum = 5 +) + +// Enum value maps for PatternFlowRSVPPathSenderTspecIntServVersion_Choice_Enum. +var ( + PatternFlowRSVPPathSenderTspecIntServVersion_Choice_Enum_name = map[int32]string{ + 0: "unspecified", + 2: "value", + 3: "values", + 4: "increment", + 5: "decrement", } - return "" + PatternFlowRSVPPathSenderTspecIntServVersion_Choice_Enum_value = map[string]int32{ + "unspecified": 0, + "value": 2, + "values": 3, + "increment": 4, + "decrement": 5, + } +) + +func (x PatternFlowRSVPPathSenderTspecIntServVersion_Choice_Enum) Enum() *PatternFlowRSVPPathSenderTspecIntServVersion_Choice_Enum { + p := new(PatternFlowRSVPPathSenderTspecIntServVersion_Choice_Enum) + *p = x + return p } -func (x *CaptureField) GetNegate() bool { - if x != nil && x.Negate != nil { - return *x.Negate - } - return false +func (x PatternFlowRSVPPathSenderTspecIntServVersion_Choice_Enum) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } -// Description missing in models -type CaptureEthernet struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields +func (PatternFlowRSVPPathSenderTspecIntServVersion_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { + return file_otg_proto_enumTypes[359].Descriptor() +} - // Description missing in models - Src *CaptureField `protobuf:"bytes,1,opt,name=src,proto3" json:"src,omitempty"` - // Description missing in models - Dst *CaptureField `protobuf:"bytes,2,opt,name=dst,proto3" json:"dst,omitempty"` - // Description missing in models - EtherType *CaptureField `protobuf:"bytes,3,opt,name=ether_type,json=etherType,proto3" json:"ether_type,omitempty"` - // Description missing in models - PfcQueue *CaptureField `protobuf:"bytes,4,opt,name=pfc_queue,json=pfcQueue,proto3" json:"pfc_queue,omitempty"` +func (PatternFlowRSVPPathSenderTspecIntServVersion_Choice_Enum) Type() protoreflect.EnumType { + return &file_otg_proto_enumTypes[359] } -func (x *CaptureEthernet) Reset() { - *x = CaptureEthernet{} - if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[29] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (x PatternFlowRSVPPathSenderTspecIntServVersion_Choice_Enum) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) } -func (x *CaptureEthernet) String() string { - return protoimpl.X.MessageStringOf(x) +// Deprecated: Use PatternFlowRSVPPathSenderTspecIntServVersion_Choice_Enum.Descriptor instead. +func (PatternFlowRSVPPathSenderTspecIntServVersion_Choice_Enum) EnumDescriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{836, 0, 0} } -func (*CaptureEthernet) ProtoMessage() {} +type PatternFlowRSVPPathSenderTspecIntServReserved1_Choice_Enum int32 -func (x *CaptureEthernet) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[29] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms +const ( + PatternFlowRSVPPathSenderTspecIntServReserved1_Choice_unspecified PatternFlowRSVPPathSenderTspecIntServReserved1_Choice_Enum = 0 + PatternFlowRSVPPathSenderTspecIntServReserved1_Choice_value PatternFlowRSVPPathSenderTspecIntServReserved1_Choice_Enum = 2 + PatternFlowRSVPPathSenderTspecIntServReserved1_Choice_values PatternFlowRSVPPathSenderTspecIntServReserved1_Choice_Enum = 3 + PatternFlowRSVPPathSenderTspecIntServReserved1_Choice_increment PatternFlowRSVPPathSenderTspecIntServReserved1_Choice_Enum = 4 + PatternFlowRSVPPathSenderTspecIntServReserved1_Choice_decrement PatternFlowRSVPPathSenderTspecIntServReserved1_Choice_Enum = 5 +) + +// Enum value maps for PatternFlowRSVPPathSenderTspecIntServReserved1_Choice_Enum. +var ( + PatternFlowRSVPPathSenderTspecIntServReserved1_Choice_Enum_name = map[int32]string{ + 0: "unspecified", + 2: "value", + 3: "values", + 4: "increment", + 5: "decrement", } - return mi.MessageOf(x) + PatternFlowRSVPPathSenderTspecIntServReserved1_Choice_Enum_value = map[string]int32{ + "unspecified": 0, + "value": 2, + "values": 3, + "increment": 4, + "decrement": 5, + } +) + +func (x PatternFlowRSVPPathSenderTspecIntServReserved1_Choice_Enum) Enum() *PatternFlowRSVPPathSenderTspecIntServReserved1_Choice_Enum { + p := new(PatternFlowRSVPPathSenderTspecIntServReserved1_Choice_Enum) + *p = x + return p } -// Deprecated: Use CaptureEthernet.ProtoReflect.Descriptor instead. -func (*CaptureEthernet) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{29} +func (x PatternFlowRSVPPathSenderTspecIntServReserved1_Choice_Enum) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } -func (x *CaptureEthernet) GetSrc() *CaptureField { - if x != nil { - return x.Src - } - return nil +func (PatternFlowRSVPPathSenderTspecIntServReserved1_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { + return file_otg_proto_enumTypes[360].Descriptor() } -func (x *CaptureEthernet) GetDst() *CaptureField { - if x != nil { - return x.Dst - } - return nil +func (PatternFlowRSVPPathSenderTspecIntServReserved1_Choice_Enum) Type() protoreflect.EnumType { + return &file_otg_proto_enumTypes[360] } -func (x *CaptureEthernet) GetEtherType() *CaptureField { - if x != nil { - return x.EtherType - } - return nil +func (x PatternFlowRSVPPathSenderTspecIntServReserved1_Choice_Enum) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) } -func (x *CaptureEthernet) GetPfcQueue() *CaptureField { - if x != nil { - return x.PfcQueue - } - return nil +// Deprecated: Use PatternFlowRSVPPathSenderTspecIntServReserved1_Choice_Enum.Descriptor instead. +func (PatternFlowRSVPPathSenderTspecIntServReserved1_Choice_Enum) EnumDescriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{838, 0, 0} } -// Description missing in models -type CaptureVlan struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields +type PatternFlowRSVPPathSenderTspecIntServOverallLength_Choice_Enum int32 - // Description missing in models - Priority *CaptureField `protobuf:"bytes,1,opt,name=priority,proto3" json:"priority,omitempty"` - // Description missing in models - Cfi *CaptureField `protobuf:"bytes,2,opt,name=cfi,proto3" json:"cfi,omitempty"` - // Description missing in models - Id *CaptureField `protobuf:"bytes,3,opt,name=id,proto3" json:"id,omitempty"` - // Description missing in models - Protocol *CaptureField `protobuf:"bytes,4,opt,name=protocol,proto3" json:"protocol,omitempty"` -} +const ( + PatternFlowRSVPPathSenderTspecIntServOverallLength_Choice_unspecified PatternFlowRSVPPathSenderTspecIntServOverallLength_Choice_Enum = 0 + PatternFlowRSVPPathSenderTspecIntServOverallLength_Choice_value PatternFlowRSVPPathSenderTspecIntServOverallLength_Choice_Enum = 2 + PatternFlowRSVPPathSenderTspecIntServOverallLength_Choice_values PatternFlowRSVPPathSenderTspecIntServOverallLength_Choice_Enum = 3 + PatternFlowRSVPPathSenderTspecIntServOverallLength_Choice_increment PatternFlowRSVPPathSenderTspecIntServOverallLength_Choice_Enum = 4 + PatternFlowRSVPPathSenderTspecIntServOverallLength_Choice_decrement PatternFlowRSVPPathSenderTspecIntServOverallLength_Choice_Enum = 5 +) -func (x *CaptureVlan) Reset() { - *x = CaptureVlan{} - if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[30] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) +// Enum value maps for PatternFlowRSVPPathSenderTspecIntServOverallLength_Choice_Enum. +var ( + PatternFlowRSVPPathSenderTspecIntServOverallLength_Choice_Enum_name = map[int32]string{ + 0: "unspecified", + 2: "value", + 3: "values", + 4: "increment", + 5: "decrement", } -} + PatternFlowRSVPPathSenderTspecIntServOverallLength_Choice_Enum_value = map[string]int32{ + "unspecified": 0, + "value": 2, + "values": 3, + "increment": 4, + "decrement": 5, + } +) -func (x *CaptureVlan) String() string { - return protoimpl.X.MessageStringOf(x) +func (x PatternFlowRSVPPathSenderTspecIntServOverallLength_Choice_Enum) Enum() *PatternFlowRSVPPathSenderTspecIntServOverallLength_Choice_Enum { + p := new(PatternFlowRSVPPathSenderTspecIntServOverallLength_Choice_Enum) + *p = x + return p } -func (*CaptureVlan) ProtoMessage() {} +func (x PatternFlowRSVPPathSenderTspecIntServOverallLength_Choice_Enum) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} -func (x *CaptureVlan) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[30] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) +func (PatternFlowRSVPPathSenderTspecIntServOverallLength_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { + return file_otg_proto_enumTypes[361].Descriptor() } -// Deprecated: Use CaptureVlan.ProtoReflect.Descriptor instead. -func (*CaptureVlan) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{30} +func (PatternFlowRSVPPathSenderTspecIntServOverallLength_Choice_Enum) Type() protoreflect.EnumType { + return &file_otg_proto_enumTypes[361] } -func (x *CaptureVlan) GetPriority() *CaptureField { - if x != nil { - return x.Priority - } - return nil +func (x PatternFlowRSVPPathSenderTspecIntServOverallLength_Choice_Enum) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) } -func (x *CaptureVlan) GetCfi() *CaptureField { - if x != nil { - return x.Cfi - } - return nil +// Deprecated: Use PatternFlowRSVPPathSenderTspecIntServOverallLength_Choice_Enum.Descriptor instead. +func (PatternFlowRSVPPathSenderTspecIntServOverallLength_Choice_Enum) EnumDescriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{840, 0, 0} } -func (x *CaptureVlan) GetId() *CaptureField { - if x != nil { - return x.Id +type PatternFlowRSVPPathSenderTspecIntServServiceHeader_Choice_Enum int32 + +const ( + PatternFlowRSVPPathSenderTspecIntServServiceHeader_Choice_unspecified PatternFlowRSVPPathSenderTspecIntServServiceHeader_Choice_Enum = 0 + PatternFlowRSVPPathSenderTspecIntServServiceHeader_Choice_value PatternFlowRSVPPathSenderTspecIntServServiceHeader_Choice_Enum = 2 + PatternFlowRSVPPathSenderTspecIntServServiceHeader_Choice_values PatternFlowRSVPPathSenderTspecIntServServiceHeader_Choice_Enum = 3 + PatternFlowRSVPPathSenderTspecIntServServiceHeader_Choice_increment PatternFlowRSVPPathSenderTspecIntServServiceHeader_Choice_Enum = 4 + PatternFlowRSVPPathSenderTspecIntServServiceHeader_Choice_decrement PatternFlowRSVPPathSenderTspecIntServServiceHeader_Choice_Enum = 5 +) + +// Enum value maps for PatternFlowRSVPPathSenderTspecIntServServiceHeader_Choice_Enum. +var ( + PatternFlowRSVPPathSenderTspecIntServServiceHeader_Choice_Enum_name = map[int32]string{ + 0: "unspecified", + 2: "value", + 3: "values", + 4: "increment", + 5: "decrement", } - return nil + PatternFlowRSVPPathSenderTspecIntServServiceHeader_Choice_Enum_value = map[string]int32{ + "unspecified": 0, + "value": 2, + "values": 3, + "increment": 4, + "decrement": 5, + } +) + +func (x PatternFlowRSVPPathSenderTspecIntServServiceHeader_Choice_Enum) Enum() *PatternFlowRSVPPathSenderTspecIntServServiceHeader_Choice_Enum { + p := new(PatternFlowRSVPPathSenderTspecIntServServiceHeader_Choice_Enum) + *p = x + return p } -func (x *CaptureVlan) GetProtocol() *CaptureField { - if x != nil { - return x.Protocol - } - return nil +func (x PatternFlowRSVPPathSenderTspecIntServServiceHeader_Choice_Enum) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } -// Description missing in models -type CaptureIpv4 struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields +func (PatternFlowRSVPPathSenderTspecIntServServiceHeader_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { + return file_otg_proto_enumTypes[362].Descriptor() +} - // Description missing in models - Version *CaptureField `protobuf:"bytes,1,opt,name=version,proto3" json:"version,omitempty"` - // Description missing in models - HeaderLength *CaptureField `protobuf:"bytes,2,opt,name=header_length,json=headerLength,proto3" json:"header_length,omitempty"` - // Description missing in models - Priority *CaptureField `protobuf:"bytes,3,opt,name=priority,proto3" json:"priority,omitempty"` - // Description missing in models - TotalLength *CaptureField `protobuf:"bytes,4,opt,name=total_length,json=totalLength,proto3" json:"total_length,omitempty"` - // Description missing in models - Identification *CaptureField `protobuf:"bytes,5,opt,name=identification,proto3" json:"identification,omitempty"` - // Description missing in models - Reserved *CaptureField `protobuf:"bytes,6,opt,name=reserved,proto3" json:"reserved,omitempty"` - // Description missing in models - DontFragment *CaptureField `protobuf:"bytes,7,opt,name=dont_fragment,json=dontFragment,proto3" json:"dont_fragment,omitempty"` - // Description missing in models - MoreFragments *CaptureField `protobuf:"bytes,8,opt,name=more_fragments,json=moreFragments,proto3" json:"more_fragments,omitempty"` - // Description missing in models - FragmentOffset *CaptureField `protobuf:"bytes,9,opt,name=fragment_offset,json=fragmentOffset,proto3" json:"fragment_offset,omitempty"` - // Description missing in models - TimeToLive *CaptureField `protobuf:"bytes,10,opt,name=time_to_live,json=timeToLive,proto3" json:"time_to_live,omitempty"` - // Description missing in models - Protocol *CaptureField `protobuf:"bytes,11,opt,name=protocol,proto3" json:"protocol,omitempty"` - // Description missing in models - HeaderChecksum *CaptureField `protobuf:"bytes,12,opt,name=header_checksum,json=headerChecksum,proto3" json:"header_checksum,omitempty"` - // Description missing in models - Src *CaptureField `protobuf:"bytes,13,opt,name=src,proto3" json:"src,omitempty"` - // Description missing in models - Dst *CaptureField `protobuf:"bytes,14,opt,name=dst,proto3" json:"dst,omitempty"` +func (PatternFlowRSVPPathSenderTspecIntServServiceHeader_Choice_Enum) Type() protoreflect.EnumType { + return &file_otg_proto_enumTypes[362] } -func (x *CaptureIpv4) Reset() { - *x = CaptureIpv4{} - if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[31] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (x PatternFlowRSVPPathSenderTspecIntServServiceHeader_Choice_Enum) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) } -func (x *CaptureIpv4) String() string { - return protoimpl.X.MessageStringOf(x) +// Deprecated: Use PatternFlowRSVPPathSenderTspecIntServServiceHeader_Choice_Enum.Descriptor instead. +func (PatternFlowRSVPPathSenderTspecIntServServiceHeader_Choice_Enum) EnumDescriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{842, 0, 0} } -func (*CaptureIpv4) ProtoMessage() {} +type PatternFlowRSVPPathSenderTspecIntServZeroBit_Choice_Enum int32 -func (x *CaptureIpv4) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[31] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms +const ( + PatternFlowRSVPPathSenderTspecIntServZeroBit_Choice_unspecified PatternFlowRSVPPathSenderTspecIntServZeroBit_Choice_Enum = 0 + PatternFlowRSVPPathSenderTspecIntServZeroBit_Choice_value PatternFlowRSVPPathSenderTspecIntServZeroBit_Choice_Enum = 2 + PatternFlowRSVPPathSenderTspecIntServZeroBit_Choice_values PatternFlowRSVPPathSenderTspecIntServZeroBit_Choice_Enum = 3 + PatternFlowRSVPPathSenderTspecIntServZeroBit_Choice_increment PatternFlowRSVPPathSenderTspecIntServZeroBit_Choice_Enum = 4 + PatternFlowRSVPPathSenderTspecIntServZeroBit_Choice_decrement PatternFlowRSVPPathSenderTspecIntServZeroBit_Choice_Enum = 5 +) + +// Enum value maps for PatternFlowRSVPPathSenderTspecIntServZeroBit_Choice_Enum. +var ( + PatternFlowRSVPPathSenderTspecIntServZeroBit_Choice_Enum_name = map[int32]string{ + 0: "unspecified", + 2: "value", + 3: "values", + 4: "increment", + 5: "decrement", } - return mi.MessageOf(x) + PatternFlowRSVPPathSenderTspecIntServZeroBit_Choice_Enum_value = map[string]int32{ + "unspecified": 0, + "value": 2, + "values": 3, + "increment": 4, + "decrement": 5, + } +) + +func (x PatternFlowRSVPPathSenderTspecIntServZeroBit_Choice_Enum) Enum() *PatternFlowRSVPPathSenderTspecIntServZeroBit_Choice_Enum { + p := new(PatternFlowRSVPPathSenderTspecIntServZeroBit_Choice_Enum) + *p = x + return p } -// Deprecated: Use CaptureIpv4.ProtoReflect.Descriptor instead. -func (*CaptureIpv4) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{31} +func (x PatternFlowRSVPPathSenderTspecIntServZeroBit_Choice_Enum) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } -func (x *CaptureIpv4) GetVersion() *CaptureField { - if x != nil { - return x.Version - } - return nil +func (PatternFlowRSVPPathSenderTspecIntServZeroBit_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { + return file_otg_proto_enumTypes[363].Descriptor() } -func (x *CaptureIpv4) GetHeaderLength() *CaptureField { - if x != nil { - return x.HeaderLength - } - return nil +func (PatternFlowRSVPPathSenderTspecIntServZeroBit_Choice_Enum) Type() protoreflect.EnumType { + return &file_otg_proto_enumTypes[363] } -func (x *CaptureIpv4) GetPriority() *CaptureField { - if x != nil { - return x.Priority - } - return nil +func (x PatternFlowRSVPPathSenderTspecIntServZeroBit_Choice_Enum) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) } -func (x *CaptureIpv4) GetTotalLength() *CaptureField { - if x != nil { - return x.TotalLength - } - return nil +// Deprecated: Use PatternFlowRSVPPathSenderTspecIntServZeroBit_Choice_Enum.Descriptor instead. +func (PatternFlowRSVPPathSenderTspecIntServZeroBit_Choice_Enum) EnumDescriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{844, 0, 0} } -func (x *CaptureIpv4) GetIdentification() *CaptureField { - if x != nil { - return x.Identification - } - return nil -} +type PatternFlowRSVPPathSenderTspecIntServReserved2_Choice_Enum int32 -func (x *CaptureIpv4) GetReserved() *CaptureField { - if x != nil { - return x.Reserved - } - return nil -} +const ( + PatternFlowRSVPPathSenderTspecIntServReserved2_Choice_unspecified PatternFlowRSVPPathSenderTspecIntServReserved2_Choice_Enum = 0 + PatternFlowRSVPPathSenderTspecIntServReserved2_Choice_value PatternFlowRSVPPathSenderTspecIntServReserved2_Choice_Enum = 2 + PatternFlowRSVPPathSenderTspecIntServReserved2_Choice_values PatternFlowRSVPPathSenderTspecIntServReserved2_Choice_Enum = 3 + PatternFlowRSVPPathSenderTspecIntServReserved2_Choice_increment PatternFlowRSVPPathSenderTspecIntServReserved2_Choice_Enum = 4 + PatternFlowRSVPPathSenderTspecIntServReserved2_Choice_decrement PatternFlowRSVPPathSenderTspecIntServReserved2_Choice_Enum = 5 +) -func (x *CaptureIpv4) GetDontFragment() *CaptureField { - if x != nil { - return x.DontFragment +// Enum value maps for PatternFlowRSVPPathSenderTspecIntServReserved2_Choice_Enum. +var ( + PatternFlowRSVPPathSenderTspecIntServReserved2_Choice_Enum_name = map[int32]string{ + 0: "unspecified", + 2: "value", + 3: "values", + 4: "increment", + 5: "decrement", } - return nil + PatternFlowRSVPPathSenderTspecIntServReserved2_Choice_Enum_value = map[string]int32{ + "unspecified": 0, + "value": 2, + "values": 3, + "increment": 4, + "decrement": 5, + } +) + +func (x PatternFlowRSVPPathSenderTspecIntServReserved2_Choice_Enum) Enum() *PatternFlowRSVPPathSenderTspecIntServReserved2_Choice_Enum { + p := new(PatternFlowRSVPPathSenderTspecIntServReserved2_Choice_Enum) + *p = x + return p } -func (x *CaptureIpv4) GetMoreFragments() *CaptureField { - if x != nil { - return x.MoreFragments - } - return nil +func (x PatternFlowRSVPPathSenderTspecIntServReserved2_Choice_Enum) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } -func (x *CaptureIpv4) GetFragmentOffset() *CaptureField { - if x != nil { - return x.FragmentOffset - } - return nil +func (PatternFlowRSVPPathSenderTspecIntServReserved2_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { + return file_otg_proto_enumTypes[364].Descriptor() } -func (x *CaptureIpv4) GetTimeToLive() *CaptureField { - if x != nil { - return x.TimeToLive - } - return nil +func (PatternFlowRSVPPathSenderTspecIntServReserved2_Choice_Enum) Type() protoreflect.EnumType { + return &file_otg_proto_enumTypes[364] } -func (x *CaptureIpv4) GetProtocol() *CaptureField { - if x != nil { - return x.Protocol - } - return nil +func (x PatternFlowRSVPPathSenderTspecIntServReserved2_Choice_Enum) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) } -func (x *CaptureIpv4) GetHeaderChecksum() *CaptureField { - if x != nil { - return x.HeaderChecksum - } - return nil +// Deprecated: Use PatternFlowRSVPPathSenderTspecIntServReserved2_Choice_Enum.Descriptor instead. +func (PatternFlowRSVPPathSenderTspecIntServReserved2_Choice_Enum) EnumDescriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{846, 0, 0} } -func (x *CaptureIpv4) GetSrc() *CaptureField { - if x != nil { - return x.Src +type PatternFlowRSVPPathSenderTspecIntServLengthOfServiceData_Choice_Enum int32 + +const ( + PatternFlowRSVPPathSenderTspecIntServLengthOfServiceData_Choice_unspecified PatternFlowRSVPPathSenderTspecIntServLengthOfServiceData_Choice_Enum = 0 + PatternFlowRSVPPathSenderTspecIntServLengthOfServiceData_Choice_value PatternFlowRSVPPathSenderTspecIntServLengthOfServiceData_Choice_Enum = 2 + PatternFlowRSVPPathSenderTspecIntServLengthOfServiceData_Choice_values PatternFlowRSVPPathSenderTspecIntServLengthOfServiceData_Choice_Enum = 3 + PatternFlowRSVPPathSenderTspecIntServLengthOfServiceData_Choice_increment PatternFlowRSVPPathSenderTspecIntServLengthOfServiceData_Choice_Enum = 4 + PatternFlowRSVPPathSenderTspecIntServLengthOfServiceData_Choice_decrement PatternFlowRSVPPathSenderTspecIntServLengthOfServiceData_Choice_Enum = 5 +) + +// Enum value maps for PatternFlowRSVPPathSenderTspecIntServLengthOfServiceData_Choice_Enum. +var ( + PatternFlowRSVPPathSenderTspecIntServLengthOfServiceData_Choice_Enum_name = map[int32]string{ + 0: "unspecified", + 2: "value", + 3: "values", + 4: "increment", + 5: "decrement", } - return nil + PatternFlowRSVPPathSenderTspecIntServLengthOfServiceData_Choice_Enum_value = map[string]int32{ + "unspecified": 0, + "value": 2, + "values": 3, + "increment": 4, + "decrement": 5, + } +) + +func (x PatternFlowRSVPPathSenderTspecIntServLengthOfServiceData_Choice_Enum) Enum() *PatternFlowRSVPPathSenderTspecIntServLengthOfServiceData_Choice_Enum { + p := new(PatternFlowRSVPPathSenderTspecIntServLengthOfServiceData_Choice_Enum) + *p = x + return p } -func (x *CaptureIpv4) GetDst() *CaptureField { - if x != nil { - return x.Dst - } - return nil +func (x PatternFlowRSVPPathSenderTspecIntServLengthOfServiceData_Choice_Enum) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } -// Description missing in models -type CaptureIpv6 struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields +func (PatternFlowRSVPPathSenderTspecIntServLengthOfServiceData_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { + return file_otg_proto_enumTypes[365].Descriptor() +} - // Description missing in models - Version *CaptureField `protobuf:"bytes,1,opt,name=version,proto3" json:"version,omitempty"` - // Description missing in models - TrafficClass *CaptureField `protobuf:"bytes,2,opt,name=traffic_class,json=trafficClass,proto3" json:"traffic_class,omitempty"` - // Description missing in models - FlowLabel *CaptureField `protobuf:"bytes,3,opt,name=flow_label,json=flowLabel,proto3" json:"flow_label,omitempty"` - // Description missing in models - PayloadLength *CaptureField `protobuf:"bytes,4,opt,name=payload_length,json=payloadLength,proto3" json:"payload_length,omitempty"` - // Description missing in models - NextHeader *CaptureField `protobuf:"bytes,5,opt,name=next_header,json=nextHeader,proto3" json:"next_header,omitempty"` - // Description missing in models - HopLimit *CaptureField `protobuf:"bytes,6,opt,name=hop_limit,json=hopLimit,proto3" json:"hop_limit,omitempty"` - // Description missing in models - Src *CaptureField `protobuf:"bytes,7,opt,name=src,proto3" json:"src,omitempty"` - // Description missing in models - Dst *CaptureField `protobuf:"bytes,8,opt,name=dst,proto3" json:"dst,omitempty"` +func (PatternFlowRSVPPathSenderTspecIntServLengthOfServiceData_Choice_Enum) Type() protoreflect.EnumType { + return &file_otg_proto_enumTypes[365] } -func (x *CaptureIpv6) Reset() { - *x = CaptureIpv6{} - if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[32] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (x PatternFlowRSVPPathSenderTspecIntServLengthOfServiceData_Choice_Enum) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) } -func (x *CaptureIpv6) String() string { - return protoimpl.X.MessageStringOf(x) +// Deprecated: Use PatternFlowRSVPPathSenderTspecIntServLengthOfServiceData_Choice_Enum.Descriptor instead. +func (PatternFlowRSVPPathSenderTspecIntServLengthOfServiceData_Choice_Enum) EnumDescriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{848, 0, 0} } -func (*CaptureIpv6) ProtoMessage() {} +type PatternFlowRSVPPathSenderTspecIntServParameterIdTokenBucketTspec_Choice_Enum int32 -func (x *CaptureIpv6) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[32] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms +const ( + PatternFlowRSVPPathSenderTspecIntServParameterIdTokenBucketTspec_Choice_unspecified PatternFlowRSVPPathSenderTspecIntServParameterIdTokenBucketTspec_Choice_Enum = 0 + PatternFlowRSVPPathSenderTspecIntServParameterIdTokenBucketTspec_Choice_value PatternFlowRSVPPathSenderTspecIntServParameterIdTokenBucketTspec_Choice_Enum = 2 + PatternFlowRSVPPathSenderTspecIntServParameterIdTokenBucketTspec_Choice_values PatternFlowRSVPPathSenderTspecIntServParameterIdTokenBucketTspec_Choice_Enum = 3 + PatternFlowRSVPPathSenderTspecIntServParameterIdTokenBucketTspec_Choice_increment PatternFlowRSVPPathSenderTspecIntServParameterIdTokenBucketTspec_Choice_Enum = 4 + PatternFlowRSVPPathSenderTspecIntServParameterIdTokenBucketTspec_Choice_decrement PatternFlowRSVPPathSenderTspecIntServParameterIdTokenBucketTspec_Choice_Enum = 5 +) + +// Enum value maps for PatternFlowRSVPPathSenderTspecIntServParameterIdTokenBucketTspec_Choice_Enum. +var ( + PatternFlowRSVPPathSenderTspecIntServParameterIdTokenBucketTspec_Choice_Enum_name = map[int32]string{ + 0: "unspecified", + 2: "value", + 3: "values", + 4: "increment", + 5: "decrement", } - return mi.MessageOf(x) -} + PatternFlowRSVPPathSenderTspecIntServParameterIdTokenBucketTspec_Choice_Enum_value = map[string]int32{ + "unspecified": 0, + "value": 2, + "values": 3, + "increment": 4, + "decrement": 5, + } +) -// Deprecated: Use CaptureIpv6.ProtoReflect.Descriptor instead. -func (*CaptureIpv6) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{32} +func (x PatternFlowRSVPPathSenderTspecIntServParameterIdTokenBucketTspec_Choice_Enum) Enum() *PatternFlowRSVPPathSenderTspecIntServParameterIdTokenBucketTspec_Choice_Enum { + p := new(PatternFlowRSVPPathSenderTspecIntServParameterIdTokenBucketTspec_Choice_Enum) + *p = x + return p } -func (x *CaptureIpv6) GetVersion() *CaptureField { - if x != nil { - return x.Version - } - return nil +func (x PatternFlowRSVPPathSenderTspecIntServParameterIdTokenBucketTspec_Choice_Enum) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } -func (x *CaptureIpv6) GetTrafficClass() *CaptureField { - if x != nil { - return x.TrafficClass - } - return nil +func (PatternFlowRSVPPathSenderTspecIntServParameterIdTokenBucketTspec_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { + return file_otg_proto_enumTypes[366].Descriptor() } -func (x *CaptureIpv6) GetFlowLabel() *CaptureField { - if x != nil { - return x.FlowLabel - } - return nil +func (PatternFlowRSVPPathSenderTspecIntServParameterIdTokenBucketTspec_Choice_Enum) Type() protoreflect.EnumType { + return &file_otg_proto_enumTypes[366] } -func (x *CaptureIpv6) GetPayloadLength() *CaptureField { - if x != nil { - return x.PayloadLength - } - return nil +func (x PatternFlowRSVPPathSenderTspecIntServParameterIdTokenBucketTspec_Choice_Enum) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) } -func (x *CaptureIpv6) GetNextHeader() *CaptureField { - if x != nil { - return x.NextHeader - } - return nil +// Deprecated: Use PatternFlowRSVPPathSenderTspecIntServParameterIdTokenBucketTspec_Choice_Enum.Descriptor instead. +func (PatternFlowRSVPPathSenderTspecIntServParameterIdTokenBucketTspec_Choice_Enum) EnumDescriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{850, 0, 0} } -func (x *CaptureIpv6) GetHopLimit() *CaptureField { - if x != nil { - return x.HopLimit - } - return nil -} +type PatternFlowRSVPPathSenderTspecIntServParameter127Flag_Choice_Enum int32 -func (x *CaptureIpv6) GetSrc() *CaptureField { - if x != nil { - return x.Src +const ( + PatternFlowRSVPPathSenderTspecIntServParameter127Flag_Choice_unspecified PatternFlowRSVPPathSenderTspecIntServParameter127Flag_Choice_Enum = 0 + PatternFlowRSVPPathSenderTspecIntServParameter127Flag_Choice_value PatternFlowRSVPPathSenderTspecIntServParameter127Flag_Choice_Enum = 2 + PatternFlowRSVPPathSenderTspecIntServParameter127Flag_Choice_values PatternFlowRSVPPathSenderTspecIntServParameter127Flag_Choice_Enum = 3 + PatternFlowRSVPPathSenderTspecIntServParameter127Flag_Choice_increment PatternFlowRSVPPathSenderTspecIntServParameter127Flag_Choice_Enum = 4 + PatternFlowRSVPPathSenderTspecIntServParameter127Flag_Choice_decrement PatternFlowRSVPPathSenderTspecIntServParameter127Flag_Choice_Enum = 5 +) + +// Enum value maps for PatternFlowRSVPPathSenderTspecIntServParameter127Flag_Choice_Enum. +var ( + PatternFlowRSVPPathSenderTspecIntServParameter127Flag_Choice_Enum_name = map[int32]string{ + 0: "unspecified", + 2: "value", + 3: "values", + 4: "increment", + 5: "decrement", } - return nil + PatternFlowRSVPPathSenderTspecIntServParameter127Flag_Choice_Enum_value = map[string]int32{ + "unspecified": 0, + "value": 2, + "values": 3, + "increment": 4, + "decrement": 5, + } +) + +func (x PatternFlowRSVPPathSenderTspecIntServParameter127Flag_Choice_Enum) Enum() *PatternFlowRSVPPathSenderTspecIntServParameter127Flag_Choice_Enum { + p := new(PatternFlowRSVPPathSenderTspecIntServParameter127Flag_Choice_Enum) + *p = x + return p } -func (x *CaptureIpv6) GetDst() *CaptureField { - if x != nil { - return x.Dst - } - return nil +func (x PatternFlowRSVPPathSenderTspecIntServParameter127Flag_Choice_Enum) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } -// A container for emulated interfaces, loopback interfaces and protocol configurations. -type Device struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields +func (PatternFlowRSVPPathSenderTspecIntServParameter127Flag_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { + return file_otg_proto_enumTypes[367].Descriptor() +} - // Ethernet configuration for one or more emulated network interfaces. - Ethernets []*DeviceEthernet `protobuf:"bytes,1,rep,name=ethernets,proto3" json:"ethernets,omitempty"` - // IPv4 Loopback interface that can be attached to an Ethernet in the same device or - // to an Ethernet in another device. - Ipv4Loopbacks []*DeviceIpv4Loopback `protobuf:"bytes,2,rep,name=ipv4_loopbacks,json=ipv4Loopbacks,proto3" json:"ipv4_loopbacks,omitempty"` - // IPv6 Loopback interface that can be attached to an Ethernet in the same device or - // to an Ethernet in another device. - Ipv6Loopbacks []*DeviceIpv6Loopback `protobuf:"bytes,3,rep,name=ipv6_loopbacks,json=ipv6Loopbacks,proto3" json:"ipv6_loopbacks,omitempty"` - // The properties of an IS-IS router and its children, such as IS-IS interfaces and - // route ranges. - Isis *DeviceIsisRouter `protobuf:"bytes,4,opt,name=isis,proto3" json:"isis,omitempty"` - // The properties of BGP router and its children, such as BGPv4, BGPv6 peers and their - // route ranges. - Bgp *DeviceBgpRouter `protobuf:"bytes,5,opt,name=bgp,proto3" json:"bgp,omitempty"` - // Configuration of VXLAN tunnel interfaces RFC Ref: https://datatracker.ietf.org/doc/html/rfc7348 - Vxlan *DeviceVxlan `protobuf:"bytes,6,opt,name=vxlan,proto3" json:"vxlan,omitempty"` - // Globally unique name of an object. It also serves as the primary key for arrays of - // objects. - // required = true - Name *string `protobuf:"bytes,7,opt,name=name,proto3,oneof" json:"name,omitempty"` - // The properties of an RSVP router and its children. - Rsvp *DeviceRsvp `protobuf:"bytes,8,opt,name=rsvp,proto3" json:"rsvp,omitempty"` +func (PatternFlowRSVPPathSenderTspecIntServParameter127Flag_Choice_Enum) Type() protoreflect.EnumType { + return &file_otg_proto_enumTypes[367] } -func (x *Device) Reset() { - *x = Device{} - if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[33] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (x PatternFlowRSVPPathSenderTspecIntServParameter127Flag_Choice_Enum) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) } -func (x *Device) String() string { - return protoimpl.X.MessageStringOf(x) +// Deprecated: Use PatternFlowRSVPPathSenderTspecIntServParameter127Flag_Choice_Enum.Descriptor instead. +func (PatternFlowRSVPPathSenderTspecIntServParameter127Flag_Choice_Enum) EnumDescriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{852, 0, 0} } -func (*Device) ProtoMessage() {} +type PatternFlowRSVPPathSenderTspecIntServParameter127Length_Choice_Enum int32 -func (x *Device) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[33] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms +const ( + PatternFlowRSVPPathSenderTspecIntServParameter127Length_Choice_unspecified PatternFlowRSVPPathSenderTspecIntServParameter127Length_Choice_Enum = 0 + PatternFlowRSVPPathSenderTspecIntServParameter127Length_Choice_value PatternFlowRSVPPathSenderTspecIntServParameter127Length_Choice_Enum = 2 + PatternFlowRSVPPathSenderTspecIntServParameter127Length_Choice_values PatternFlowRSVPPathSenderTspecIntServParameter127Length_Choice_Enum = 3 + PatternFlowRSVPPathSenderTspecIntServParameter127Length_Choice_increment PatternFlowRSVPPathSenderTspecIntServParameter127Length_Choice_Enum = 4 + PatternFlowRSVPPathSenderTspecIntServParameter127Length_Choice_decrement PatternFlowRSVPPathSenderTspecIntServParameter127Length_Choice_Enum = 5 +) + +// Enum value maps for PatternFlowRSVPPathSenderTspecIntServParameter127Length_Choice_Enum. +var ( + PatternFlowRSVPPathSenderTspecIntServParameter127Length_Choice_Enum_name = map[int32]string{ + 0: "unspecified", + 2: "value", + 3: "values", + 4: "increment", + 5: "decrement", } - return mi.MessageOf(x) -} + PatternFlowRSVPPathSenderTspecIntServParameter127Length_Choice_Enum_value = map[string]int32{ + "unspecified": 0, + "value": 2, + "values": 3, + "increment": 4, + "decrement": 5, + } +) -// Deprecated: Use Device.ProtoReflect.Descriptor instead. -func (*Device) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{33} +func (x PatternFlowRSVPPathSenderTspecIntServParameter127Length_Choice_Enum) Enum() *PatternFlowRSVPPathSenderTspecIntServParameter127Length_Choice_Enum { + p := new(PatternFlowRSVPPathSenderTspecIntServParameter127Length_Choice_Enum) + *p = x + return p } -func (x *Device) GetEthernets() []*DeviceEthernet { - if x != nil { - return x.Ethernets - } - return nil +func (x PatternFlowRSVPPathSenderTspecIntServParameter127Length_Choice_Enum) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } -func (x *Device) GetIpv4Loopbacks() []*DeviceIpv4Loopback { - if x != nil { - return x.Ipv4Loopbacks - } - return nil +func (PatternFlowRSVPPathSenderTspecIntServParameter127Length_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { + return file_otg_proto_enumTypes[368].Descriptor() } -func (x *Device) GetIpv6Loopbacks() []*DeviceIpv6Loopback { - if x != nil { - return x.Ipv6Loopbacks - } - return nil +func (PatternFlowRSVPPathSenderTspecIntServParameter127Length_Choice_Enum) Type() protoreflect.EnumType { + return &file_otg_proto_enumTypes[368] } -func (x *Device) GetIsis() *DeviceIsisRouter { - if x != nil { - return x.Isis - } - return nil +func (x PatternFlowRSVPPathSenderTspecIntServParameter127Length_Choice_Enum) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) } -func (x *Device) GetBgp() *DeviceBgpRouter { - if x != nil { - return x.Bgp - } - return nil +// Deprecated: Use PatternFlowRSVPPathSenderTspecIntServParameter127Length_Choice_Enum.Descriptor instead. +func (PatternFlowRSVPPathSenderTspecIntServParameter127Length_Choice_Enum) EnumDescriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{854, 0, 0} } -func (x *Device) GetVxlan() *DeviceVxlan { - if x != nil { - return x.Vxlan - } - return nil -} +type PatternFlowRSVPPathSenderTspecIntServMinimumPolicedUnit_Choice_Enum int32 -func (x *Device) GetName() string { - if x != nil && x.Name != nil { - return *x.Name +const ( + PatternFlowRSVPPathSenderTspecIntServMinimumPolicedUnit_Choice_unspecified PatternFlowRSVPPathSenderTspecIntServMinimumPolicedUnit_Choice_Enum = 0 + PatternFlowRSVPPathSenderTspecIntServMinimumPolicedUnit_Choice_value PatternFlowRSVPPathSenderTspecIntServMinimumPolicedUnit_Choice_Enum = 2 + PatternFlowRSVPPathSenderTspecIntServMinimumPolicedUnit_Choice_values PatternFlowRSVPPathSenderTspecIntServMinimumPolicedUnit_Choice_Enum = 3 + PatternFlowRSVPPathSenderTspecIntServMinimumPolicedUnit_Choice_increment PatternFlowRSVPPathSenderTspecIntServMinimumPolicedUnit_Choice_Enum = 4 + PatternFlowRSVPPathSenderTspecIntServMinimumPolicedUnit_Choice_decrement PatternFlowRSVPPathSenderTspecIntServMinimumPolicedUnit_Choice_Enum = 5 +) + +// Enum value maps for PatternFlowRSVPPathSenderTspecIntServMinimumPolicedUnit_Choice_Enum. +var ( + PatternFlowRSVPPathSenderTspecIntServMinimumPolicedUnit_Choice_Enum_name = map[int32]string{ + 0: "unspecified", + 2: "value", + 3: "values", + 4: "increment", + 5: "decrement", } - return "" + PatternFlowRSVPPathSenderTspecIntServMinimumPolicedUnit_Choice_Enum_value = map[string]int32{ + "unspecified": 0, + "value": 2, + "values": 3, + "increment": 4, + "decrement": 5, + } +) + +func (x PatternFlowRSVPPathSenderTspecIntServMinimumPolicedUnit_Choice_Enum) Enum() *PatternFlowRSVPPathSenderTspecIntServMinimumPolicedUnit_Choice_Enum { + p := new(PatternFlowRSVPPathSenderTspecIntServMinimumPolicedUnit_Choice_Enum) + *p = x + return p } -func (x *Device) GetRsvp() *DeviceRsvp { - if x != nil { - return x.Rsvp - } - return nil +func (x PatternFlowRSVPPathSenderTspecIntServMinimumPolicedUnit_Choice_Enum) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } -// Common options that apply to all configured protocols and interfaces. -type ProtocolOptions struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields +func (PatternFlowRSVPPathSenderTspecIntServMinimumPolicedUnit_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { + return file_otg_proto_enumTypes[369].Descriptor() +} - // When set to true, all underlying resources for configured protocols and interfaces - // shall be created and corresponding protocol session negotiation shall be initiated. - // Otherwise, when set to false, corresponding protocol session negotiation will need - // to be initiated using a separate set_protocol_state API call. - // default = True - AutoStartAll *bool `protobuf:"varint,1,opt,name=auto_start_all,json=autoStartAll,proto3,oneof" json:"auto_start_all,omitempty"` +func (PatternFlowRSVPPathSenderTspecIntServMinimumPolicedUnit_Choice_Enum) Type() protoreflect.EnumType { + return &file_otg_proto_enumTypes[369] } -func (x *ProtocolOptions) Reset() { - *x = ProtocolOptions{} - if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[34] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (x PatternFlowRSVPPathSenderTspecIntServMinimumPolicedUnit_Choice_Enum) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) } -func (x *ProtocolOptions) String() string { - return protoimpl.X.MessageStringOf(x) +// Deprecated: Use PatternFlowRSVPPathSenderTspecIntServMinimumPolicedUnit_Choice_Enum.Descriptor instead. +func (PatternFlowRSVPPathSenderTspecIntServMinimumPolicedUnit_Choice_Enum) EnumDescriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{856, 0, 0} } -func (*ProtocolOptions) ProtoMessage() {} +type PatternFlowRSVPPathSenderTspecIntServMaximumPacketSize_Choice_Enum int32 -func (x *ProtocolOptions) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[34] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms +const ( + PatternFlowRSVPPathSenderTspecIntServMaximumPacketSize_Choice_unspecified PatternFlowRSVPPathSenderTspecIntServMaximumPacketSize_Choice_Enum = 0 + PatternFlowRSVPPathSenderTspecIntServMaximumPacketSize_Choice_value PatternFlowRSVPPathSenderTspecIntServMaximumPacketSize_Choice_Enum = 2 + PatternFlowRSVPPathSenderTspecIntServMaximumPacketSize_Choice_values PatternFlowRSVPPathSenderTspecIntServMaximumPacketSize_Choice_Enum = 3 + PatternFlowRSVPPathSenderTspecIntServMaximumPacketSize_Choice_increment PatternFlowRSVPPathSenderTspecIntServMaximumPacketSize_Choice_Enum = 4 + PatternFlowRSVPPathSenderTspecIntServMaximumPacketSize_Choice_decrement PatternFlowRSVPPathSenderTspecIntServMaximumPacketSize_Choice_Enum = 5 +) + +// Enum value maps for PatternFlowRSVPPathSenderTspecIntServMaximumPacketSize_Choice_Enum. +var ( + PatternFlowRSVPPathSenderTspecIntServMaximumPacketSize_Choice_Enum_name = map[int32]string{ + 0: "unspecified", + 2: "value", + 3: "values", + 4: "increment", + 5: "decrement", } - return mi.MessageOf(x) -} + PatternFlowRSVPPathSenderTspecIntServMaximumPacketSize_Choice_Enum_value = map[string]int32{ + "unspecified": 0, + "value": 2, + "values": 3, + "increment": 4, + "decrement": 5, + } +) -// Deprecated: Use ProtocolOptions.ProtoReflect.Descriptor instead. -func (*ProtocolOptions) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{34} +func (x PatternFlowRSVPPathSenderTspecIntServMaximumPacketSize_Choice_Enum) Enum() *PatternFlowRSVPPathSenderTspecIntServMaximumPacketSize_Choice_Enum { + p := new(PatternFlowRSVPPathSenderTspecIntServMaximumPacketSize_Choice_Enum) + *p = x + return p } -func (x *ProtocolOptions) GetAutoStartAll() bool { - if x != nil && x.AutoStartAll != nil { - return *x.AutoStartAll - } - return false +func (x PatternFlowRSVPPathSenderTspecIntServMaximumPacketSize_Choice_Enum) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } -// A container of properties for an ISIS router and its interfaces. -type DeviceIsisRouter struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields +func (PatternFlowRSVPPathSenderTspecIntServMaximumPacketSize_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { + return file_otg_proto_enumTypes[370].Descriptor() +} - // This contains the properties of a Multi-Instance-capable routers or MI-RTR. Each - // router can emulate one ISIS instance at a time. - Instance *DeviceIsisMultiInstance `protobuf:"bytes,1,opt,name=instance,proto3" json:"instance,omitempty"` - // The System ID for this emulated ISIS router, e.g. 640100010000. - // required = true - SystemId *string `protobuf:"bytes,2,opt,name=system_id,json=systemId,proto3,oneof" json:"system_id,omitempty"` - // List of ISIS interfaces for this router. - Interfaces []*IsisInterface `protobuf:"bytes,3,rep,name=interfaces,proto3" json:"interfaces,omitempty"` - // Contains basic properties of an ISIS Router. - Basic *IsisBasic `protobuf:"bytes,4,opt,name=basic,proto3" json:"basic,omitempty"` - // Contains advance properties of an ISIS Router.. - Advanced *IsisAdvanced `protobuf:"bytes,5,opt,name=advanced,proto3" json:"advanced,omitempty"` - // ISIS Router authentication properties. - RouterAuth *IsisAuthentication `protobuf:"bytes,6,opt,name=router_auth,json=routerAuth,proto3" json:"router_auth,omitempty"` - // Emulated ISIS IPv4 routes. - V4Routes []*IsisV4RouteRange `protobuf:"bytes,7,rep,name=v4_routes,json=v4Routes,proto3" json:"v4_routes,omitempty"` - // Emulated ISIS IPv6 routes. - V6Routes []*IsisV6RouteRange `protobuf:"bytes,8,rep,name=v6_routes,json=v6Routes,proto3" json:"v6_routes,omitempty"` - // Globally unique name of an object. It also serves as the primary key for arrays of - // objects. - // required = true - Name *string `protobuf:"bytes,9,opt,name=name,proto3,oneof" json:"name,omitempty"` +func (PatternFlowRSVPPathSenderTspecIntServMaximumPacketSize_Choice_Enum) Type() protoreflect.EnumType { + return &file_otg_proto_enumTypes[370] } -func (x *DeviceIsisRouter) Reset() { - *x = DeviceIsisRouter{} - if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[35] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (x PatternFlowRSVPPathSenderTspecIntServMaximumPacketSize_Choice_Enum) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) } -func (x *DeviceIsisRouter) String() string { - return protoimpl.X.MessageStringOf(x) +// Deprecated: Use PatternFlowRSVPPathSenderTspecIntServMaximumPacketSize_Choice_Enum.Descriptor instead. +func (PatternFlowRSVPPathSenderTspecIntServMaximumPacketSize_Choice_Enum) EnumDescriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{858, 0, 0} } -func (*DeviceIsisRouter) ProtoMessage() {} +type PatternFlowRSVPPathRecordRouteType1Ipv4AddressIpv4Address_Choice_Enum int32 -func (x *DeviceIsisRouter) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[35] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms +const ( + PatternFlowRSVPPathRecordRouteType1Ipv4AddressIpv4Address_Choice_unspecified PatternFlowRSVPPathRecordRouteType1Ipv4AddressIpv4Address_Choice_Enum = 0 + PatternFlowRSVPPathRecordRouteType1Ipv4AddressIpv4Address_Choice_value PatternFlowRSVPPathRecordRouteType1Ipv4AddressIpv4Address_Choice_Enum = 2 + PatternFlowRSVPPathRecordRouteType1Ipv4AddressIpv4Address_Choice_values PatternFlowRSVPPathRecordRouteType1Ipv4AddressIpv4Address_Choice_Enum = 3 + PatternFlowRSVPPathRecordRouteType1Ipv4AddressIpv4Address_Choice_increment PatternFlowRSVPPathRecordRouteType1Ipv4AddressIpv4Address_Choice_Enum = 4 + PatternFlowRSVPPathRecordRouteType1Ipv4AddressIpv4Address_Choice_decrement PatternFlowRSVPPathRecordRouteType1Ipv4AddressIpv4Address_Choice_Enum = 5 +) + +// Enum value maps for PatternFlowRSVPPathRecordRouteType1Ipv4AddressIpv4Address_Choice_Enum. +var ( + PatternFlowRSVPPathRecordRouteType1Ipv4AddressIpv4Address_Choice_Enum_name = map[int32]string{ + 0: "unspecified", + 2: "value", + 3: "values", + 4: "increment", + 5: "decrement", } - return mi.MessageOf(x) -} + PatternFlowRSVPPathRecordRouteType1Ipv4AddressIpv4Address_Choice_Enum_value = map[string]int32{ + "unspecified": 0, + "value": 2, + "values": 3, + "increment": 4, + "decrement": 5, + } +) -// Deprecated: Use DeviceIsisRouter.ProtoReflect.Descriptor instead. -func (*DeviceIsisRouter) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{35} +func (x PatternFlowRSVPPathRecordRouteType1Ipv4AddressIpv4Address_Choice_Enum) Enum() *PatternFlowRSVPPathRecordRouteType1Ipv4AddressIpv4Address_Choice_Enum { + p := new(PatternFlowRSVPPathRecordRouteType1Ipv4AddressIpv4Address_Choice_Enum) + *p = x + return p } -func (x *DeviceIsisRouter) GetInstance() *DeviceIsisMultiInstance { - if x != nil { - return x.Instance - } - return nil +func (x PatternFlowRSVPPathRecordRouteType1Ipv4AddressIpv4Address_Choice_Enum) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } -func (x *DeviceIsisRouter) GetSystemId() string { - if x != nil && x.SystemId != nil { - return *x.SystemId - } - return "" +func (PatternFlowRSVPPathRecordRouteType1Ipv4AddressIpv4Address_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { + return file_otg_proto_enumTypes[371].Descriptor() } -func (x *DeviceIsisRouter) GetInterfaces() []*IsisInterface { - if x != nil { - return x.Interfaces - } - return nil +func (PatternFlowRSVPPathRecordRouteType1Ipv4AddressIpv4Address_Choice_Enum) Type() protoreflect.EnumType { + return &file_otg_proto_enumTypes[371] } -func (x *DeviceIsisRouter) GetBasic() *IsisBasic { - if x != nil { - return x.Basic - } - return nil +func (x PatternFlowRSVPPathRecordRouteType1Ipv4AddressIpv4Address_Choice_Enum) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) } -func (x *DeviceIsisRouter) GetAdvanced() *IsisAdvanced { - if x != nil { - return x.Advanced - } - return nil +// Deprecated: Use PatternFlowRSVPPathRecordRouteType1Ipv4AddressIpv4Address_Choice_Enum.Descriptor instead. +func (PatternFlowRSVPPathRecordRouteType1Ipv4AddressIpv4Address_Choice_Enum) EnumDescriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{860, 0, 0} } -func (x *DeviceIsisRouter) GetRouterAuth() *IsisAuthentication { - if x != nil { - return x.RouterAuth - } - return nil -} +type PatternFlowRSVPPathRecordRouteType1Ipv4AddressPrefixLength_Choice_Enum int32 -func (x *DeviceIsisRouter) GetV4Routes() []*IsisV4RouteRange { - if x != nil { - return x.V4Routes +const ( + PatternFlowRSVPPathRecordRouteType1Ipv4AddressPrefixLength_Choice_unspecified PatternFlowRSVPPathRecordRouteType1Ipv4AddressPrefixLength_Choice_Enum = 0 + PatternFlowRSVPPathRecordRouteType1Ipv4AddressPrefixLength_Choice_value PatternFlowRSVPPathRecordRouteType1Ipv4AddressPrefixLength_Choice_Enum = 2 + PatternFlowRSVPPathRecordRouteType1Ipv4AddressPrefixLength_Choice_values PatternFlowRSVPPathRecordRouteType1Ipv4AddressPrefixLength_Choice_Enum = 3 + PatternFlowRSVPPathRecordRouteType1Ipv4AddressPrefixLength_Choice_increment PatternFlowRSVPPathRecordRouteType1Ipv4AddressPrefixLength_Choice_Enum = 4 + PatternFlowRSVPPathRecordRouteType1Ipv4AddressPrefixLength_Choice_decrement PatternFlowRSVPPathRecordRouteType1Ipv4AddressPrefixLength_Choice_Enum = 5 +) + +// Enum value maps for PatternFlowRSVPPathRecordRouteType1Ipv4AddressPrefixLength_Choice_Enum. +var ( + PatternFlowRSVPPathRecordRouteType1Ipv4AddressPrefixLength_Choice_Enum_name = map[int32]string{ + 0: "unspecified", + 2: "value", + 3: "values", + 4: "increment", + 5: "decrement", } - return nil + PatternFlowRSVPPathRecordRouteType1Ipv4AddressPrefixLength_Choice_Enum_value = map[string]int32{ + "unspecified": 0, + "value": 2, + "values": 3, + "increment": 4, + "decrement": 5, + } +) + +func (x PatternFlowRSVPPathRecordRouteType1Ipv4AddressPrefixLength_Choice_Enum) Enum() *PatternFlowRSVPPathRecordRouteType1Ipv4AddressPrefixLength_Choice_Enum { + p := new(PatternFlowRSVPPathRecordRouteType1Ipv4AddressPrefixLength_Choice_Enum) + *p = x + return p } -func (x *DeviceIsisRouter) GetV6Routes() []*IsisV6RouteRange { - if x != nil { - return x.V6Routes - } - return nil +func (x PatternFlowRSVPPathRecordRouteType1Ipv4AddressPrefixLength_Choice_Enum) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } -func (x *DeviceIsisRouter) GetName() string { - if x != nil && x.Name != nil { - return *x.Name - } - return "" +func (PatternFlowRSVPPathRecordRouteType1Ipv4AddressPrefixLength_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { + return file_otg_proto_enumTypes[372].Descriptor() } -// This container properties of an Multi-Instance-capable router (MI-RTR). -type DeviceIsisMultiInstance struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields +func (PatternFlowRSVPPathRecordRouteType1Ipv4AddressPrefixLength_Choice_Enum) Type() protoreflect.EnumType { + return &file_otg_proto_enumTypes[372] +} - // Instance Identifier (IID) TLV will associate a PDU with an ISIS instance by using - // a unique 16-bit number and including one or more Instance-Specific Topology Identifiers - // (ITIDs). - // default = 1 - Iid *uint32 `protobuf:"varint,1,opt,name=iid,proto3,oneof" json:"iid,omitempty"` - // This contains one or more ITIDs that will be advertised in IID TLV. - Itids []uint32 `protobuf:"varint,2,rep,packed,name=itids,proto3" json:"itids,omitempty"` +func (x PatternFlowRSVPPathRecordRouteType1Ipv4AddressPrefixLength_Choice_Enum) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) } -func (x *DeviceIsisMultiInstance) Reset() { - *x = DeviceIsisMultiInstance{} - if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[36] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) +// Deprecated: Use PatternFlowRSVPPathRecordRouteType1Ipv4AddressPrefixLength_Choice_Enum.Descriptor instead. +func (PatternFlowRSVPPathRecordRouteType1Ipv4AddressPrefixLength_Choice_Enum) EnumDescriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{862, 0, 0} +} + +type PatternFlowRSVPPathRecordRouteType1LabelFlags_Choice_Enum int32 + +const ( + PatternFlowRSVPPathRecordRouteType1LabelFlags_Choice_unspecified PatternFlowRSVPPathRecordRouteType1LabelFlags_Choice_Enum = 0 + PatternFlowRSVPPathRecordRouteType1LabelFlags_Choice_value PatternFlowRSVPPathRecordRouteType1LabelFlags_Choice_Enum = 2 + PatternFlowRSVPPathRecordRouteType1LabelFlags_Choice_values PatternFlowRSVPPathRecordRouteType1LabelFlags_Choice_Enum = 3 +) + +// Enum value maps for PatternFlowRSVPPathRecordRouteType1LabelFlags_Choice_Enum. +var ( + PatternFlowRSVPPathRecordRouteType1LabelFlags_Choice_Enum_name = map[int32]string{ + 0: "unspecified", + 2: "value", + 3: "values", + } + PatternFlowRSVPPathRecordRouteType1LabelFlags_Choice_Enum_value = map[string]int32{ + "unspecified": 0, + "value": 2, + "values": 3, } +) + +func (x PatternFlowRSVPPathRecordRouteType1LabelFlags_Choice_Enum) Enum() *PatternFlowRSVPPathRecordRouteType1LabelFlags_Choice_Enum { + p := new(PatternFlowRSVPPathRecordRouteType1LabelFlags_Choice_Enum) + *p = x + return p } -func (x *DeviceIsisMultiInstance) String() string { - return protoimpl.X.MessageStringOf(x) +func (x PatternFlowRSVPPathRecordRouteType1LabelFlags_Choice_Enum) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } -func (*DeviceIsisMultiInstance) ProtoMessage() {} +func (PatternFlowRSVPPathRecordRouteType1LabelFlags_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { + return file_otg_proto_enumTypes[373].Descriptor() +} -func (x *DeviceIsisMultiInstance) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[36] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) +func (PatternFlowRSVPPathRecordRouteType1LabelFlags_Choice_Enum) Type() protoreflect.EnumType { + return &file_otg_proto_enumTypes[373] } -// Deprecated: Use DeviceIsisMultiInstance.ProtoReflect.Descriptor instead. -func (*DeviceIsisMultiInstance) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{36} +func (x PatternFlowRSVPPathRecordRouteType1LabelFlags_Choice_Enum) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) } -func (x *DeviceIsisMultiInstance) GetIid() uint32 { - if x != nil && x.Iid != nil { - return *x.Iid +// Deprecated: Use PatternFlowRSVPPathRecordRouteType1LabelFlags_Choice_Enum.Descriptor instead. +func (PatternFlowRSVPPathRecordRouteType1LabelFlags_Choice_Enum) EnumDescriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{863, 0, 0} +} + +type PatternFlowRSVPPathRecordRouteType1LabelCType_Choice_Enum int32 + +const ( + PatternFlowRSVPPathRecordRouteType1LabelCType_Choice_unspecified PatternFlowRSVPPathRecordRouteType1LabelCType_Choice_Enum = 0 + PatternFlowRSVPPathRecordRouteType1LabelCType_Choice_value PatternFlowRSVPPathRecordRouteType1LabelCType_Choice_Enum = 2 + PatternFlowRSVPPathRecordRouteType1LabelCType_Choice_values PatternFlowRSVPPathRecordRouteType1LabelCType_Choice_Enum = 3 +) + +// Enum value maps for PatternFlowRSVPPathRecordRouteType1LabelCType_Choice_Enum. +var ( + PatternFlowRSVPPathRecordRouteType1LabelCType_Choice_Enum_name = map[int32]string{ + 0: "unspecified", + 2: "value", + 3: "values", } - return 0 + PatternFlowRSVPPathRecordRouteType1LabelCType_Choice_Enum_value = map[string]int32{ + "unspecified": 0, + "value": 2, + "values": 3, + } +) + +func (x PatternFlowRSVPPathRecordRouteType1LabelCType_Choice_Enum) Enum() *PatternFlowRSVPPathRecordRouteType1LabelCType_Choice_Enum { + p := new(PatternFlowRSVPPathRecordRouteType1LabelCType_Choice_Enum) + *p = x + return p } -func (x *DeviceIsisMultiInstance) GetItids() []uint32 { - if x != nil { - return x.Itids +func (x PatternFlowRSVPPathRecordRouteType1LabelCType_Choice_Enum) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (PatternFlowRSVPPathRecordRouteType1LabelCType_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { + return file_otg_proto_enumTypes[374].Descriptor() +} + +func (PatternFlowRSVPPathRecordRouteType1LabelCType_Choice_Enum) Type() protoreflect.EnumType { + return &file_otg_proto_enumTypes[374] +} + +func (x PatternFlowRSVPPathRecordRouteType1LabelCType_Choice_Enum) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use PatternFlowRSVPPathRecordRouteType1LabelCType_Choice_Enum.Descriptor instead. +func (PatternFlowRSVPPathRecordRouteType1LabelCType_Choice_Enum) EnumDescriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{864, 0, 0} +} + +type PatternFlowRSVPPathObjectsCustomType_Choice_Enum int32 + +const ( + PatternFlowRSVPPathObjectsCustomType_Choice_unspecified PatternFlowRSVPPathObjectsCustomType_Choice_Enum = 0 + PatternFlowRSVPPathObjectsCustomType_Choice_value PatternFlowRSVPPathObjectsCustomType_Choice_Enum = 2 + PatternFlowRSVPPathObjectsCustomType_Choice_values PatternFlowRSVPPathObjectsCustomType_Choice_Enum = 3 + PatternFlowRSVPPathObjectsCustomType_Choice_increment PatternFlowRSVPPathObjectsCustomType_Choice_Enum = 4 + PatternFlowRSVPPathObjectsCustomType_Choice_decrement PatternFlowRSVPPathObjectsCustomType_Choice_Enum = 5 +) + +// Enum value maps for PatternFlowRSVPPathObjectsCustomType_Choice_Enum. +var ( + PatternFlowRSVPPathObjectsCustomType_Choice_Enum_name = map[int32]string{ + 0: "unspecified", + 2: "value", + 3: "values", + 4: "increment", + 5: "decrement", } - return nil + PatternFlowRSVPPathObjectsCustomType_Choice_Enum_value = map[string]int32{ + "unspecified": 0, + "value": 2, + "values": 3, + "increment": 4, + "decrement": 5, + } +) + +func (x PatternFlowRSVPPathObjectsCustomType_Choice_Enum) Enum() *PatternFlowRSVPPathObjectsCustomType_Choice_Enum { + p := new(PatternFlowRSVPPathObjectsCustomType_Choice_Enum) + *p = x + return p } -// Configuration for single ISIS interface. -type IsisInterface struct { +func (x PatternFlowRSVPPathObjectsCustomType_Choice_Enum) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (PatternFlowRSVPPathObjectsCustomType_Choice_Enum) Descriptor() protoreflect.EnumDescriptor { + return file_otg_proto_enumTypes[375].Descriptor() +} + +func (PatternFlowRSVPPathObjectsCustomType_Choice_Enum) Type() protoreflect.EnumType { + return &file_otg_proto_enumTypes[375] +} + +func (x PatternFlowRSVPPathObjectsCustomType_Choice_Enum) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use PatternFlowRSVPPathObjectsCustomType_Choice_Enum.Descriptor instead. +func (PatternFlowRSVPPathObjectsCustomType_Choice_Enum) EnumDescriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{866, 0, 0} +} + +// A container for all models that are part of the configuration. +type Config struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // The unique name of the Ethernet interface on which ISIS is running. Two ISIS interfaces - // cannot share the same Ethernet. - // - // x-constraint: - // - /components/schemas/Device.Ethernet/properties/name - // - // x-constraint: - // - /components/schemas/Device.Ethernet/properties/name - // - // required = true - EthName *string `protobuf:"bytes,1,opt,name=eth_name,json=ethName,proto3,oneof" json:"eth_name,omitempty"` - // The default metric cost for the interface. - // default = 10 - Metric *uint32 `protobuf:"varint,2,opt,name=metric,proto3,oneof" json:"metric,omitempty"` - // The type of network link. - // default = NetworkType.Enum.broadcast - NetworkType *IsisInterface_NetworkType_Enum `protobuf:"varint,3,opt,name=network_type,json=networkType,proto3,enum=otg.IsisInterface_NetworkType_Enum,oneof" json:"network_type,omitempty"` - // This indicates whether this router is participating in Level-1 (L1), - // Level-2 (L2) or both L1 and L2 domains on this interface. - // default = LevelType.Enum.level_2 - LevelType *IsisInterface_LevelType_Enum `protobuf:"varint,4,opt,name=level_type,json=levelType,proto3,enum=otg.IsisInterface_LevelType_Enum,oneof" json:"level_type,omitempty"` - // Settings of Level 1 Hello. - L1Settings *IsisInterfaceLevel `protobuf:"bytes,5,opt,name=l1_settings,json=l1Settings,proto3" json:"l1_settings,omitempty"` - // Settings of Level 2 Hello. - L2Settings *IsisInterfaceLevel `protobuf:"bytes,6,opt,name=l2_settings,json=l2Settings,proto3" json:"l2_settings,omitempty"` - // Contains the properties of multiple topologies. - MultiTopologyIds []*IsisMT `protobuf:"bytes,7,rep,name=multi_topology_ids,json=multiTopologyIds,proto3" json:"multi_topology_ids,omitempty"` - // Contains a list of Traffic Engineering attributes. - TrafficEngineering []*LinkStateTE `protobuf:"bytes,8,rep,name=traffic_engineering,json=trafficEngineering,proto3" json:"traffic_engineering,omitempty"` - // The Circuit authentication method used for the interfaces on this emulated ISIS v4/v6 - // router. - Authentication *IsisInterfaceAuthentication `protobuf:"bytes,9,opt,name=authentication,proto3" json:"authentication,omitempty"` - // Optional container for advanced interface properties. - Advanced *IsisInterfaceAdvanced `protobuf:"bytes,10,opt,name=advanced,proto3" json:"advanced,omitempty"` - // Link protection on the ISIS link between two interfaces. - LinkProtection *IsisInterfaceLinkProtection `protobuf:"bytes,11,opt,name=link_protection,json=linkProtection,proto3" json:"link_protection,omitempty"` - // This contains list of SRLG values for the link between two interfaces. - SrlgValues []uint32 `protobuf:"varint,12,rep,packed,name=srlg_values,json=srlgValues,proto3" json:"srlg_values,omitempty"` - // Globally unique name of an object. It also serves as the primary key for arrays of - // objects. - // required = true - Name *string `protobuf:"bytes,13,opt,name=name,proto3,oneof" json:"name,omitempty"` + // The ports that will be configured on the traffic generator. + Ports []*Port `protobuf:"bytes,1,rep,name=ports,proto3" json:"ports,omitempty"` + // The LAGs that will be configured on the traffic generator. + Lags []*Lag `protobuf:"bytes,2,rep,name=lags,proto3" json:"lags,omitempty"` + // The layer1 settings that will be configured on the traffic generator. + // Since layer1 settings usually vary across variety of test ports, these + // most likely won't be portable. + Layer1 []*Layer1 `protobuf:"bytes,3,rep,name=layer1,proto3" json:"layer1,omitempty"` + // The capture settings that will be configured on the traffic generator. + Captures []*Capture `protobuf:"bytes,4,rep,name=captures,proto3" json:"captures,omitempty"` + // The emulated devices that will be configured on the traffic generator. + // Each device contains configurations for network interfaces and + // protocols running on top of those interfaces. + Devices []*Device `protobuf:"bytes,5,rep,name=devices,proto3" json:"devices,omitempty"` + // The flows that will be configured on the traffic generator. + Flows []*Flow `protobuf:"bytes,6,rep,name=flows,proto3" json:"flows,omitempty"` + // Description missing in models + Events *Event `protobuf:"bytes,7,opt,name=events,proto3" json:"events,omitempty"` + // Description missing in models + Options *ConfigOptions `protobuf:"bytes,8,opt,name=options,proto3" json:"options,omitempty"` + // LLDP protocol that will be configured on traffic generator. + Lldp []*Lldp `protobuf:"bytes,9,rep,name=lldp,proto3" json:"lldp,omitempty"` } -func (x *IsisInterface) Reset() { - *x = IsisInterface{} +func (x *Config) Reset() { + *x = Config{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[37] + mi := &file_otg_proto_msgTypes[0] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *IsisInterface) String() string { +func (x *Config) String() string { return protoimpl.X.MessageStringOf(x) } -func (*IsisInterface) ProtoMessage() {} +func (*Config) ProtoMessage() {} -func (x *IsisInterface) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[37] +func (x *Config) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[0] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -20689,136 +20474,103 @@ func (x *IsisInterface) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use IsisInterface.ProtoReflect.Descriptor instead. -func (*IsisInterface) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{37} -} - -func (x *IsisInterface) GetEthName() string { - if x != nil && x.EthName != nil { - return *x.EthName - } - return "" -} - -func (x *IsisInterface) GetMetric() uint32 { - if x != nil && x.Metric != nil { - return *x.Metric - } - return 0 -} - -func (x *IsisInterface) GetNetworkType() IsisInterface_NetworkType_Enum { - if x != nil && x.NetworkType != nil { - return *x.NetworkType - } - return IsisInterface_NetworkType_unspecified -} - -func (x *IsisInterface) GetLevelType() IsisInterface_LevelType_Enum { - if x != nil && x.LevelType != nil { - return *x.LevelType - } - return IsisInterface_LevelType_unspecified +// Deprecated: Use Config.ProtoReflect.Descriptor instead. +func (*Config) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{0} } -func (x *IsisInterface) GetL1Settings() *IsisInterfaceLevel { +func (x *Config) GetPorts() []*Port { if x != nil { - return x.L1Settings + return x.Ports } return nil } -func (x *IsisInterface) GetL2Settings() *IsisInterfaceLevel { +func (x *Config) GetLags() []*Lag { if x != nil { - return x.L2Settings + return x.Lags } return nil } -func (x *IsisInterface) GetMultiTopologyIds() []*IsisMT { +func (x *Config) GetLayer1() []*Layer1 { if x != nil { - return x.MultiTopologyIds + return x.Layer1 } return nil } -func (x *IsisInterface) GetTrafficEngineering() []*LinkStateTE { +func (x *Config) GetCaptures() []*Capture { if x != nil { - return x.TrafficEngineering + return x.Captures } return nil } -func (x *IsisInterface) GetAuthentication() *IsisInterfaceAuthentication { +func (x *Config) GetDevices() []*Device { if x != nil { - return x.Authentication + return x.Devices } return nil } -func (x *IsisInterface) GetAdvanced() *IsisInterfaceAdvanced { +func (x *Config) GetFlows() []*Flow { if x != nil { - return x.Advanced + return x.Flows } return nil } -func (x *IsisInterface) GetLinkProtection() *IsisInterfaceLinkProtection { +func (x *Config) GetEvents() *Event { if x != nil { - return x.LinkProtection + return x.Events } return nil } -func (x *IsisInterface) GetSrlgValues() []uint32 { +func (x *Config) GetOptions() *ConfigOptions { if x != nil { - return x.SrlgValues + return x.Options } return nil } -func (x *IsisInterface) GetName() string { - if x != nil && x.Name != nil { - return *x.Name +func (x *Config) GetLldp() []*Lldp { + if x != nil { + return x.Lldp } - return "" + return nil } -// Configuration for the properties of Level 1 Hello. -type IsisInterfaceLevel struct { +// Global configuration options. +type ConfigOptions struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // The Priority setting in Level 1 LAN Hellos for Designated Router election. - // default = 0 - Priority *uint32 `protobuf:"varint,1,opt,name=priority,proto3,oneof" json:"priority,omitempty"` - // The Hello interval for Level 1 Hello messages, in seconds. - // default = 10 - HelloInterval *uint32 `protobuf:"varint,2,opt,name=hello_interval,json=helloInterval,proto3,oneof" json:"hello_interval,omitempty"` - // The Dead (Holding Time) interval for Level 1 Hello messages, in seconds. - // default = 30 - DeadInterval *uint32 `protobuf:"varint,3,opt,name=dead_interval,json=deadInterval,proto3,oneof" json:"dead_interval,omitempty"` + // Description missing in models + PortOptions *PortOptions `protobuf:"bytes,1,opt,name=port_options,json=portOptions,proto3" json:"port_options,omitempty"` + // Description missing in models + ProtocolOptions *ProtocolOptions `protobuf:"bytes,2,opt,name=protocol_options,json=protocolOptions,proto3" json:"protocol_options,omitempty"` } -func (x *IsisInterfaceLevel) Reset() { - *x = IsisInterfaceLevel{} +func (x *ConfigOptions) Reset() { + *x = ConfigOptions{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[38] + mi := &file_otg_proto_msgTypes[1] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *IsisInterfaceLevel) String() string { +func (x *ConfigOptions) String() string { return protoimpl.X.MessageStringOf(x) } -func (*IsisInterfaceLevel) ProtoMessage() {} +func (*ConfigOptions) ProtoMessage() {} -func (x *IsisInterfaceLevel) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[38] +func (x *ConfigOptions) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[1] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -20829,65 +20581,65 @@ func (x *IsisInterfaceLevel) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use IsisInterfaceLevel.ProtoReflect.Descriptor instead. -func (*IsisInterfaceLevel) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{38} -} - -func (x *IsisInterfaceLevel) GetPriority() uint32 { - if x != nil && x.Priority != nil { - return *x.Priority - } - return 0 +// Deprecated: Use ConfigOptions.ProtoReflect.Descriptor instead. +func (*ConfigOptions) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{1} } -func (x *IsisInterfaceLevel) GetHelloInterval() uint32 { - if x != nil && x.HelloInterval != nil { - return *x.HelloInterval +func (x *ConfigOptions) GetPortOptions() *PortOptions { + if x != nil { + return x.PortOptions } - return 0 + return nil } -func (x *IsisInterfaceLevel) GetDeadInterval() uint32 { - if x != nil && x.DeadInterval != nil { - return *x.DeadInterval +func (x *ConfigOptions) GetProtocolOptions() *ProtocolOptions { + if x != nil { + return x.ProtocolOptions } - return 0 + return nil } -// Configuration of properties per interface per topology when multiple topologies are -// configured in an ISIS router. -// in a ISIS router. -type IsisMT struct { +// An abstract test port. +type Port struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // The Multi Topology ID for one of the topologies supported on the ISIS interface. - // default = 0 - MtId *uint32 `protobuf:"varint,1,opt,name=mt_id,json=mtId,proto3,oneof" json:"mt_id,omitempty"` - // Specifies the link metric for this topology on the ISIS interface. - // default = 10 - LinkMetric *uint32 `protobuf:"varint,2,opt,name=link_metric,json=linkMetric,proto3,oneof" json:"link_metric,omitempty"` + // The location of a test port. It is the endpoint where packets will emit from. + // Test port locations can be the following: + // - physical appliance with multiple ports + // - physical chassis with multiple cards and ports + // - local interface + // - virtual machine, docker container, kubernetes cluster + // + // The test port location format is implementation specific. Use the /results/capabilities + // API to determine what formats an implementation supports for the location property. + // Get the configured location state by using the /results/port API. + Location *string `protobuf:"bytes,1,opt,name=location,proto3,oneof" json:"location,omitempty"` + // Globally unique name of an object. It also serves as the primary key for arrays of + // objects. + // required = true + Name *string `protobuf:"bytes,2,opt,name=name,proto3,oneof" json:"name,omitempty"` } -func (x *IsisMT) Reset() { - *x = IsisMT{} +func (x *Port) Reset() { + *x = Port{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[39] + mi := &file_otg_proto_msgTypes[2] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *IsisMT) String() string { +func (x *Port) String() string { return protoimpl.X.MessageStringOf(x) } -func (*IsisMT) ProtoMessage() {} +func (*Port) ProtoMessage() {} -func (x *IsisMT) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[39] +func (x *Port) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[2] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -20898,71 +20650,55 @@ func (x *IsisMT) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use IsisMT.ProtoReflect.Descriptor instead. -func (*IsisMT) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{39} +// Deprecated: Use Port.ProtoReflect.Descriptor instead. +func (*Port) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{2} } -func (x *IsisMT) GetMtId() uint32 { - if x != nil && x.MtId != nil { - return *x.MtId +func (x *Port) GetLocation() string { + if x != nil && x.Location != nil { + return *x.Location } - return 0 + return "" } -func (x *IsisMT) GetLinkMetric() uint32 { - if x != nil && x.LinkMetric != nil { - return *x.LinkMetric +func (x *Port) GetName() string { + if x != nil && x.Name != nil { + return *x.Name } - return 0 + return "" } -// A container for Traffic Engineering properties on a interface. -type LinkStateTE struct { +// Common port options that apply to all configured Port objects. +type PortOptions struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // The Administrative group sub-TLV (sub-TLV 3). It is a 4-octet - // user-defined bit mask used to assign administrative group numbers - // to the interface, for use in assigning colors and resource classes. - // Each set bit corresponds to a single administrative group for this - // interface. The settings translate into Group numbers, which range - // from 0 to 31 (integers). - // default = 00000000 - AdministrativeGroup *string `protobuf:"bytes,1,opt,name=administrative_group,json=administrativeGroup,proto3,oneof" json:"administrative_group,omitempty"` - // The user-assigned link metric for Traffic Engineering. - // default = 0 - MetricLevel *uint32 `protobuf:"varint,2,opt,name=metric_level,json=metricLevel,proto3,oneof" json:"metric_level,omitempty"` - // The maximum link bandwidth (sub-TLV 9) in bytes/sec allowed for this - // link for a direction. - // default = 125000000 - MaxBandwith *uint32 `protobuf:"varint,3,opt,name=max_bandwith,json=maxBandwith,proto3,oneof" json:"max_bandwith,omitempty"` - // The maximum link bandwidth (sub-TLV 10) in bytes/sec allowed for this - // link in a direction. - // default = 125000000 - MaxReservableBandwidth *uint32 `protobuf:"varint,4,opt,name=max_reservable_bandwidth,json=maxReservableBandwidth,proto3,oneof" json:"max_reservable_bandwidth,omitempty"` - // Configuration of bandwidths of priority 0 through priority 7. - PriorityBandwidths *LinkStatepriorityBandwidths `protobuf:"bytes,5,opt,name=priority_bandwidths,json=priorityBandwidths,proto3" json:"priority_bandwidths,omitempty"` + // Preempt all the test port locations as defined by the Port.Port.properties.location. + // If the test ports defined by their location values are in use and this value is + // true, the test ports will be preempted. + // default = False + LocationPreemption *bool `protobuf:"varint,1,opt,name=location_preemption,json=locationPreemption,proto3,oneof" json:"location_preemption,omitempty"` } -func (x *LinkStateTE) Reset() { - *x = LinkStateTE{} +func (x *PortOptions) Reset() { + *x = PortOptions{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[40] + mi := &file_otg_proto_msgTypes[3] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *LinkStateTE) String() string { +func (x *PortOptions) String() string { return protoimpl.X.MessageStringOf(x) } -func (*LinkStateTE) ProtoMessage() {} +func (*PortOptions) ProtoMessage() {} -func (x *LinkStateTE) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[40] +func (x *PortOptions) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[3] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -20973,99 +20709,58 @@ func (x *LinkStateTE) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use LinkStateTE.ProtoReflect.Descriptor instead. -func (*LinkStateTE) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{40} +// Deprecated: Use PortOptions.ProtoReflect.Descriptor instead. +func (*PortOptions) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{3} } -func (x *LinkStateTE) GetAdministrativeGroup() string { - if x != nil && x.AdministrativeGroup != nil { - return *x.AdministrativeGroup +func (x *PortOptions) GetLocationPreemption() bool { + if x != nil && x.LocationPreemption != nil { + return *x.LocationPreemption } - return "" + return false } -func (x *LinkStateTE) GetMetricLevel() uint32 { - if x != nil && x.MetricLevel != nil { - return *x.MetricLevel - } - return 0 -} +// The container for LAG (ports group) - aggregation of multiple LAG members (ports) +type Lag struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields -func (x *LinkStateTE) GetMaxBandwith() uint32 { - if x != nil && x.MaxBandwith != nil { - return *x.MaxBandwith - } - return 0 -} - -func (x *LinkStateTE) GetMaxReservableBandwidth() uint32 { - if x != nil && x.MaxReservableBandwidth != nil { - return *x.MaxReservableBandwidth - } - return 0 -} - -func (x *LinkStateTE) GetPriorityBandwidths() *LinkStatepriorityBandwidths { - if x != nil { - return x.PriorityBandwidths - } - return nil -} - -// Specifies the amount of bandwidth that can be reserved with a setup priority of 0 -// -// through 7, arranged in increasing order with priority 0 having highest priority. -// -// In ISIS, this is sent in sub-TLV (11) of Extended IS Reachability TLV. -type LinkStatepriorityBandwidths struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // Specifies the amount of bandwidth that can be reserved for the Priority 0. - // default = 125000000 - Pb0 *uint32 `protobuf:"varint,1,opt,name=pb0,proto3,oneof" json:"pb0,omitempty"` - // Specifies the amount of bandwidth that can be reserved for the Priority 1. - // default = 125000000 - Pb1 *uint32 `protobuf:"varint,2,opt,name=pb1,proto3,oneof" json:"pb1,omitempty"` - // Specify the amount of bandwidth that can be reserved for the Priority 2. - // default = 125000000 - Pb2 *uint32 `protobuf:"varint,3,opt,name=pb2,proto3,oneof" json:"pb2,omitempty"` - // Specifies the amount of bandwidth that can be reserved for the Priority 3. - // default = 125000000 - Pb3 *uint32 `protobuf:"varint,4,opt,name=pb3,proto3,oneof" json:"pb3,omitempty"` - // Specifies the amount of bandwidth that can be reserved for the Priority 4. - // default = 125000000 - Pb4 *uint32 `protobuf:"varint,5,opt,name=pb4,proto3,oneof" json:"pb4,omitempty"` - // Specifies the amount of bandwidth that can be reserved for the Priority 5. - // default = 125000000 - Pb5 *uint32 `protobuf:"varint,6,opt,name=pb5,proto3,oneof" json:"pb5,omitempty"` - // Specifies the amount of bandwidth that can be reserved for the Priority 6. - // default = 125000000 - Pb6 *uint32 `protobuf:"varint,7,opt,name=pb6,proto3,oneof" json:"pb6,omitempty"` - // Specifies the amount of bandwidth that can be reserved for the Priority 7. - // default = 125000000 - Pb7 *uint32 `protobuf:"varint,8,opt,name=pb7,proto3,oneof" json:"pb7,omitempty"` + // Description missing in models + Ports []*LagPort `protobuf:"bytes,1,rep,name=ports,proto3" json:"ports,omitempty"` + // Description missing in models + Protocol *LagProtocol `protobuf:"bytes,2,opt,name=protocol,proto3" json:"protocol,omitempty"` + // Specifies the mininum number of member interfaces that must be active for the aggregate + // interface to be available. + // If the aggregate interface is not available due to min-links criterion not being + // met, LACPDUs continue to be transmitted and received by the member interfaces if + // LACP is enabled, but other PDUs are not transmitted or received. + // default = 1 + MinLinks *uint32 `protobuf:"varint,3,opt,name=min_links,json=minLinks,proto3,oneof" json:"min_links,omitempty"` + // Globally unique name of an object. It also serves as the primary key for arrays of + // objects. + // required = true + Name *string `protobuf:"bytes,4,opt,name=name,proto3,oneof" json:"name,omitempty"` } -func (x *LinkStatepriorityBandwidths) Reset() { - *x = LinkStatepriorityBandwidths{} +func (x *Lag) Reset() { + *x = Lag{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[41] + mi := &file_otg_proto_msgTypes[4] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *LinkStatepriorityBandwidths) String() string { +func (x *Lag) String() string { return protoimpl.X.MessageStringOf(x) } -func (*LinkStatepriorityBandwidths) ProtoMessage() {} +func (*Lag) ProtoMessage() {} -func (x *LinkStatepriorityBandwidths) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[41] +func (x *Lag) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[4] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -21076,99 +20771,76 @@ func (x *LinkStatepriorityBandwidths) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use LinkStatepriorityBandwidths.ProtoReflect.Descriptor instead. -func (*LinkStatepriorityBandwidths) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{41} -} - -func (x *LinkStatepriorityBandwidths) GetPb0() uint32 { - if x != nil && x.Pb0 != nil { - return *x.Pb0 - } - return 0 -} - -func (x *LinkStatepriorityBandwidths) GetPb1() uint32 { - if x != nil && x.Pb1 != nil { - return *x.Pb1 - } - return 0 -} - -func (x *LinkStatepriorityBandwidths) GetPb2() uint32 { - if x != nil && x.Pb2 != nil { - return *x.Pb2 - } - return 0 -} - -func (x *LinkStatepriorityBandwidths) GetPb3() uint32 { - if x != nil && x.Pb3 != nil { - return *x.Pb3 - } - return 0 +// Deprecated: Use Lag.ProtoReflect.Descriptor instead. +func (*Lag) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{4} } -func (x *LinkStatepriorityBandwidths) GetPb4() uint32 { - if x != nil && x.Pb4 != nil { - return *x.Pb4 +func (x *Lag) GetPorts() []*LagPort { + if x != nil { + return x.Ports } - return 0 + return nil } -func (x *LinkStatepriorityBandwidths) GetPb5() uint32 { - if x != nil && x.Pb5 != nil { - return *x.Pb5 +func (x *Lag) GetProtocol() *LagProtocol { + if x != nil { + return x.Protocol } - return 0 + return nil } -func (x *LinkStatepriorityBandwidths) GetPb6() uint32 { - if x != nil && x.Pb6 != nil { - return *x.Pb6 +func (x *Lag) GetMinLinks() uint32 { + if x != nil && x.MinLinks != nil { + return *x.MinLinks } return 0 } -func (x *LinkStatepriorityBandwidths) GetPb7() uint32 { - if x != nil && x.Pb7 != nil { - return *x.Pb7 +func (x *Lag) GetName() string { + if x != nil && x.Name != nil { + return *x.Name } - return 0 + return "" } -// Optional container for circuit authentication properties. -type IsisInterfaceAuthentication struct { +// The container for a port's ethernet interface and LAG protocol settings +type LagPort struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // The circuit authentication method. + // The name of a port object that will be part of the LAG. + // + // x-constraint: + // - /components/schemas/Port/properties/name + // // required = true - AuthType *IsisInterfaceAuthentication_AuthType_Enum `protobuf:"varint,1,opt,name=auth_type,json=authType,proto3,enum=otg.IsisInterfaceAuthentication_AuthType_Enum,oneof" json:"auth_type,omitempty"` - // MD5 key to be used for authentication. - Md5 *string `protobuf:"bytes,2,opt,name=md5,proto3,oneof" json:"md5,omitempty"` - // The password, in clear text, to be used for Authentication. - Password *string `protobuf:"bytes,3,opt,name=password,proto3,oneof" json:"password,omitempty"` + PortName *string `protobuf:"bytes,1,opt,name=port_name,json=portName,proto3,oneof" json:"port_name,omitempty"` + // Description missing in models + Lacp *LagPortLacp `protobuf:"bytes,2,opt,name=lacp,proto3" json:"lacp,omitempty"` + // Description missing in models + // required = true + Ethernet *DeviceEthernetBase `protobuf:"bytes,3,opt,name=ethernet,proto3" json:"ethernet,omitempty"` } -func (x *IsisInterfaceAuthentication) Reset() { - *x = IsisInterfaceAuthentication{} +func (x *LagPort) Reset() { + *x = LagPort{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[42] + mi := &file_otg_proto_msgTypes[5] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *IsisInterfaceAuthentication) String() string { +func (x *LagPort) String() string { return protoimpl.X.MessageStringOf(x) } -func (*IsisInterfaceAuthentication) ProtoMessage() {} +func (*LagPort) ProtoMessage() {} -func (x *IsisInterfaceAuthentication) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[42] +func (x *LagPort) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[5] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -21179,81 +20851,64 @@ func (x *IsisInterfaceAuthentication) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use IsisInterfaceAuthentication.ProtoReflect.Descriptor instead. -func (*IsisInterfaceAuthentication) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{42} +// Deprecated: Use LagPort.ProtoReflect.Descriptor instead. +func (*LagPort) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{5} } -func (x *IsisInterfaceAuthentication) GetAuthType() IsisInterfaceAuthentication_AuthType_Enum { - if x != nil && x.AuthType != nil { - return *x.AuthType +func (x *LagPort) GetPortName() string { + if x != nil && x.PortName != nil { + return *x.PortName } - return IsisInterfaceAuthentication_AuthType_unspecified + return "" } -func (x *IsisInterfaceAuthentication) GetMd5() string { - if x != nil && x.Md5 != nil { - return *x.Md5 +func (x *LagPort) GetLacp() *LagPortLacp { + if x != nil { + return x.Lacp } - return "" + return nil } -func (x *IsisInterfaceAuthentication) GetPassword() string { - if x != nil && x.Password != nil { - return *x.Password +func (x *LagPort) GetEthernet() *DeviceEthernetBase { + if x != nil { + return x.Ethernet } - return "" + return nil } -// Optional container for advanced interface properties. -type IsisInterfaceAdvanced struct { +// Description missing in models +type LagProtocol struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // If a padded Hello message is received on the interface, the length of - // the Hello packets sent out on that interface is adjusted to match. - // default = True - AutoAdjustMtu *bool `protobuf:"varint,1,opt,name=auto_adjust_mtu,json=autoAdjustMtu,proto3,oneof" json:"auto_adjust_mtu,omitempty"` - // If a Level 1 Hello is received on this emulated router for an area - // not currently in its area list, an area from the received Hello is - // added to that list. This ensures an area match for all future - // Level 1 Hellos from the source L1 router. - // default = True - AutoAdjustArea *bool `protobuf:"varint,2,opt,name=auto_adjust_area,json=autoAdjustArea,proto3,oneof" json:"auto_adjust_area,omitempty"` - // If a Hello message listing supported protocols is received on this - // emulated router, the supported protocols advertised by this router - // are changed to match exactly. - // default = False - AutoAdjustSupportedProtocols *bool `protobuf:"varint,3,opt,name=auto_adjust_supported_protocols,json=autoAdjustSupportedProtocols,proto3,oneof" json:"auto_adjust_supported_protocols,omitempty"` - // If it is true, the Point-to-Point circuit will include 3-way TLV in its Point-to-Point - // IIH and attempt to establish the adjacency as specified in RFC 5303. This field - // is not applicable if network_type is set to 'broadcast' type in ISIS interface. - // default = True - Enable_3WayHandshake *bool `protobuf:"varint,4,opt,name=enable_3way_handshake,json=enable3wayHandshake,proto3,oneof" json:"enable_3way_handshake,omitempty"` - // If it is true, the Point-to-Point Hello messages will be sent to the unicast MAC - // address. - // default = False - P2PHellosToUnicastMac *bool `protobuf:"varint,5,opt,name=p2p_hellos_to_unicast_mac,json=p2pHellosToUnicastMac,proto3,oneof" json:"p2p_hellos_to_unicast_mac,omitempty"` + // The type of controlling protocol for the LAG (ports group). + // default = Choice.Enum.lacp + Choice *LagProtocol_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.LagProtocol_Choice_Enum,oneof" json:"choice,omitempty"` + // Description missing in models + Lacp *LagProtocolLacp `protobuf:"bytes,2,opt,name=lacp,proto3" json:"lacp,omitempty"` + // Description missing in models + Static *LagProtocolStatic `protobuf:"bytes,3,opt,name=static,proto3" json:"static,omitempty"` } -func (x *IsisInterfaceAdvanced) Reset() { - *x = IsisInterfaceAdvanced{} +func (x *LagProtocol) Reset() { + *x = LagProtocol{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[43] + mi := &file_otg_proto_msgTypes[6] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *IsisInterfaceAdvanced) String() string { +func (x *LagProtocol) String() string { return protoimpl.X.MessageStringOf(x) } -func (*IsisInterfaceAdvanced) ProtoMessage() {} +func (*LagProtocol) ProtoMessage() {} -func (x *IsisInterfaceAdvanced) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[43] +func (x *LagProtocol) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[6] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -21264,104 +20919,60 @@ func (x *IsisInterfaceAdvanced) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use IsisInterfaceAdvanced.ProtoReflect.Descriptor instead. -func (*IsisInterfaceAdvanced) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{43} -} - -func (x *IsisInterfaceAdvanced) GetAutoAdjustMtu() bool { - if x != nil && x.AutoAdjustMtu != nil { - return *x.AutoAdjustMtu - } - return false -} - -func (x *IsisInterfaceAdvanced) GetAutoAdjustArea() bool { - if x != nil && x.AutoAdjustArea != nil { - return *x.AutoAdjustArea - } - return false +// Deprecated: Use LagProtocol.ProtoReflect.Descriptor instead. +func (*LagProtocol) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{6} } -func (x *IsisInterfaceAdvanced) GetAutoAdjustSupportedProtocols() bool { - if x != nil && x.AutoAdjustSupportedProtocols != nil { - return *x.AutoAdjustSupportedProtocols +func (x *LagProtocol) GetChoice() LagProtocol_Choice_Enum { + if x != nil && x.Choice != nil { + return *x.Choice } - return false + return LagProtocol_Choice_unspecified } -func (x *IsisInterfaceAdvanced) GetEnable_3WayHandshake() bool { - if x != nil && x.Enable_3WayHandshake != nil { - return *x.Enable_3WayHandshake +func (x *LagProtocol) GetLacp() *LagProtocolLacp { + if x != nil { + return x.Lacp } - return false + return nil } -func (x *IsisInterfaceAdvanced) GetP2PHellosToUnicastMac() bool { - if x != nil && x.P2PHellosToUnicastMac != nil { - return *x.P2PHellosToUnicastMac +func (x *LagProtocol) GetStatic() *LagProtocolStatic { + if x != nil { + return x.Static } - return false + return nil } -// Optional container for the link protection sub TLV (type 20). -type IsisInterfaceLinkProtection struct { +// The container for static link aggregation protocol settings. +type LagProtocolStatic struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Enable this to protect other link or links. LSPs on a link of this type are lost - // if any of the links fail. - // default = False - ExtraTraffic *bool `protobuf:"varint,1,opt,name=extra_traffic,json=extraTraffic,proto3,oneof" json:"extra_traffic,omitempty"` - // Enabling this signifies that there is no other link protecting this - // link. LSPs on a link of this type are lost if the link fails. - // default = False - Unprotected *bool `protobuf:"varint,2,opt,name=unprotected,proto3,oneof" json:"unprotected,omitempty"` - // Enable this to share the Extra Traffic links between one or more - // links of type Shared.There are one or more disjoint links of type - // Extra Traffic that are protecting this link. - // default = False - Shared *bool `protobuf:"varint,3,opt,name=shared,proto3,oneof" json:"shared,omitempty"` - // Enabling this signifies that there is one dedicated disjoint link - // of type Extra Traffic that is protecting this link. - // default = False - Dedicated_1To_1 *bool `protobuf:"varint,4,opt,name=dedicated_1_to_1,json=dedicated1To1,proto3,oneof" json:"dedicated_1_to_1,omitempty"` - // Enabling this signifies that a dedicated disjoint link is protecting - // this link. However, the protecting link is not advertised in the - // link state database and is therefore not available for the routing - // of LSPs. - // default = False - Dedicated_1Plus_1 *bool `protobuf:"varint,5,opt,name=dedicated_1_plus_1,json=dedicated1Plus1,proto3,oneof" json:"dedicated_1_plus_1,omitempty"` - // Enabling this signifies that a protection scheme that is more - // reliable than Dedicated 1+1. - // default = False - Enhanced *bool `protobuf:"varint,6,opt,name=enhanced,proto3,oneof" json:"enhanced,omitempty"` - // This is a Protection Scheme with value 0x40. - // default = False - Reserved_40 *bool `protobuf:"varint,7,opt,name=reserved_40,json=reserved40,proto3,oneof" json:"reserved_40,omitempty"` - // This is a Protection Scheme with value 0x80. - // default = False - Reserved_80 *bool `protobuf:"varint,8,opt,name=reserved_80,json=reserved80,proto3,oneof" json:"reserved_80,omitempty"` + // The static lag id + // default = 0 + LagId *uint32 `protobuf:"varint,1,opt,name=lag_id,json=lagId,proto3,oneof" json:"lag_id,omitempty"` } -func (x *IsisInterfaceLinkProtection) Reset() { - *x = IsisInterfaceLinkProtection{} +func (x *LagProtocolStatic) Reset() { + *x = LagProtocolStatic{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[44] + mi := &file_otg_proto_msgTypes[7] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *IsisInterfaceLinkProtection) String() string { +func (x *LagProtocolStatic) String() string { return protoimpl.X.MessageStringOf(x) } -func (*IsisInterfaceLinkProtection) ProtoMessage() {} +func (*LagProtocolStatic) ProtoMessage() {} -func (x *IsisInterfaceLinkProtection) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[44] +func (x *LagProtocolStatic) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[7] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -21372,108 +20983,132 @@ func (x *IsisInterfaceLinkProtection) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use IsisInterfaceLinkProtection.ProtoReflect.Descriptor instead. -func (*IsisInterfaceLinkProtection) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{44} +// Deprecated: Use LagProtocolStatic.ProtoReflect.Descriptor instead. +func (*LagProtocolStatic) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{7} } -func (x *IsisInterfaceLinkProtection) GetExtraTraffic() bool { - if x != nil && x.ExtraTraffic != nil { - return *x.ExtraTraffic +func (x *LagProtocolStatic) GetLagId() uint32 { + if x != nil && x.LagId != nil { + return *x.LagId } - return false + return 0 } -func (x *IsisInterfaceLinkProtection) GetUnprotected() bool { - if x != nil && x.Unprotected != nil { - return *x.Unprotected - } - return false +// The container for link aggregation control protocol settings of a LAG (ports group). +type LagProtocolLacp struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // The actor system id + // default = 00:00:00:00:00:00 + ActorSystemId *string `protobuf:"bytes,1,opt,name=actor_system_id,json=actorSystemId,proto3,oneof" json:"actor_system_id,omitempty"` + // The actor system priority + // default = 0 + ActorSystemPriority *uint32 `protobuf:"varint,2,opt,name=actor_system_priority,json=actorSystemPriority,proto3,oneof" json:"actor_system_priority,omitempty"` + // The actor key + // default = 0 + ActorKey *uint32 `protobuf:"varint,3,opt,name=actor_key,json=actorKey,proto3,oneof" json:"actor_key,omitempty"` } -func (x *IsisInterfaceLinkProtection) GetShared() bool { - if x != nil && x.Shared != nil { - return *x.Shared +func (x *LagProtocolLacp) Reset() { + *x = LagProtocolLacp{} + if protoimpl.UnsafeEnabled { + mi := &file_otg_proto_msgTypes[8] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } - return false } -func (x *IsisInterfaceLinkProtection) GetDedicated_1To_1() bool { - if x != nil && x.Dedicated_1To_1 != nil { - return *x.Dedicated_1To_1 - } - return false +func (x *LagProtocolLacp) String() string { + return protoimpl.X.MessageStringOf(x) } -func (x *IsisInterfaceLinkProtection) GetDedicated_1Plus_1() bool { - if x != nil && x.Dedicated_1Plus_1 != nil { - return *x.Dedicated_1Plus_1 +func (*LagProtocolLacp) ProtoMessage() {} + +func (x *LagProtocolLacp) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[8] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms } - return false + return mi.MessageOf(x) } -func (x *IsisInterfaceLinkProtection) GetEnhanced() bool { - if x != nil && x.Enhanced != nil { - return *x.Enhanced +// Deprecated: Use LagProtocolLacp.ProtoReflect.Descriptor instead. +func (*LagProtocolLacp) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{8} +} + +func (x *LagProtocolLacp) GetActorSystemId() string { + if x != nil && x.ActorSystemId != nil { + return *x.ActorSystemId } - return false + return "" } -func (x *IsisInterfaceLinkProtection) GetReserved_40() bool { - if x != nil && x.Reserved_40 != nil { - return *x.Reserved_40 +func (x *LagProtocolLacp) GetActorSystemPriority() uint32 { + if x != nil && x.ActorSystemPriority != nil { + return *x.ActorSystemPriority } - return false + return 0 } -func (x *IsisInterfaceLinkProtection) GetReserved_80() bool { - if x != nil && x.Reserved_80 != nil { - return *x.Reserved_80 +func (x *LagProtocolLacp) GetActorKey() uint32 { + if x != nil && x.ActorKey != nil { + return *x.ActorKey } - return false + return 0 } -// This contains ISIS router basic properties. -type IsisBasic struct { +// The container for link aggregation control protocol settings of a LAG member (port). +type LagPortLacp struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // IPv4 Traffic Engineering(TE) router id. This address should be configured as an IPv4 - // Loopback address in 'ipv4_loopbacks' in the Device. - Ipv4TeRouterId *string `protobuf:"bytes,1,opt,name=ipv4_te_router_id,json=ipv4TeRouterId,proto3,oneof" json:"ipv4_te_router_id,omitempty"` - // Host name for the router. The host name is transmitted in all the packets sent from - // the router. - Hostname *string `protobuf:"bytes,2,opt,name=hostname,proto3,oneof" json:"hostname,omitempty"` - // When set to true, it allows sending of more detailed metric information for the - // routes using 32-bit wide values using TLV 135 IP reachability and more detailed - // reachability information for IS reachability by using TLV 22. The detailed usage - // is described in RFC3784. - // default = True - EnableWideMetric *bool `protobuf:"varint,3,opt,name=enable_wide_metric,json=enableWideMetric,proto3,oneof" json:"enable_wide_metric,omitempty"` - // Configuration for controlling storage of ISIS learned LSPs are received from the - // neighbors. - // default = False - LearnedLspFilter *bool `protobuf:"varint,4,opt,name=learned_lsp_filter,json=learnedLspFilter,proto3,oneof" json:"learned_lsp_filter,omitempty"` + // The actor port number + // default = 0 + ActorPortNumber *uint32 `protobuf:"varint,1,opt,name=actor_port_number,json=actorPortNumber,proto3,oneof" json:"actor_port_number,omitempty"` + // The actor port priority + // default = 1 + ActorPortPriority *uint32 `protobuf:"varint,2,opt,name=actor_port_priority,json=actorPortPriority,proto3,oneof" json:"actor_port_priority,omitempty"` + // Sets the value of LACP actor activity as either passive or active. + // Passive indicates the port's preference for not transmitting LACPDUs unless its + // partner's control is Active. + // Active indicates the port's preference to participate in the protocol regardless + // of the partner's control value. + // default = ActorActivity.Enum.active + ActorActivity *LagPortLacp_ActorActivity_Enum `protobuf:"varint,3,opt,name=actor_activity,json=actorActivity,proto3,enum=otg.LagPortLacp_ActorActivity_Enum,oneof" json:"actor_activity,omitempty"` + // This field defines how frequently LACPDUs are sent to the link partner + // default = 0 + LacpduPeriodicTimeInterval *uint32 `protobuf:"varint,4,opt,name=lacpdu_periodic_time_interval,json=lacpduPeriodicTimeInterval,proto3,oneof" json:"lacpdu_periodic_time_interval,omitempty"` + // This timer is used to detect whether received protocol information has expired + // default = 0 + LacpduTimeout *uint32 `protobuf:"varint,5,opt,name=lacpdu_timeout,json=lacpduTimeout,proto3,oneof" json:"lacpdu_timeout,omitempty"` } -func (x *IsisBasic) Reset() { - *x = IsisBasic{} +func (x *LagPortLacp) Reset() { + *x = LagPortLacp{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[45] + mi := &file_otg_proto_msgTypes[9] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *IsisBasic) String() string { +func (x *LagPortLacp) String() string { return protoimpl.X.MessageStringOf(x) } -func (*IsisBasic) ProtoMessage() {} +func (*LagPortLacp) ProtoMessage() {} -func (x *IsisBasic) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[45] +func (x *LagPortLacp) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[9] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -21484,101 +21119,83 @@ func (x *IsisBasic) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use IsisBasic.ProtoReflect.Descriptor instead. -func (*IsisBasic) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{45} +// Deprecated: Use LagPortLacp.ProtoReflect.Descriptor instead. +func (*LagPortLacp) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{9} } -func (x *IsisBasic) GetIpv4TeRouterId() string { - if x != nil && x.Ipv4TeRouterId != nil { - return *x.Ipv4TeRouterId +func (x *LagPortLacp) GetActorPortNumber() uint32 { + if x != nil && x.ActorPortNumber != nil { + return *x.ActorPortNumber } - return "" + return 0 } -func (x *IsisBasic) GetHostname() string { - if x != nil && x.Hostname != nil { - return *x.Hostname +func (x *LagPortLacp) GetActorPortPriority() uint32 { + if x != nil && x.ActorPortPriority != nil { + return *x.ActorPortPriority } - return "" + return 0 } -func (x *IsisBasic) GetEnableWideMetric() bool { - if x != nil && x.EnableWideMetric != nil { - return *x.EnableWideMetric +func (x *LagPortLacp) GetActorActivity() LagPortLacp_ActorActivity_Enum { + if x != nil && x.ActorActivity != nil { + return *x.ActorActivity } - return false + return LagPortLacp_ActorActivity_unspecified } -func (x *IsisBasic) GetLearnedLspFilter() bool { - if x != nil && x.LearnedLspFilter != nil { - return *x.LearnedLspFilter +func (x *LagPortLacp) GetLacpduPeriodicTimeInterval() uint32 { + if x != nil && x.LacpduPeriodicTimeInterval != nil { + return *x.LacpduPeriodicTimeInterval } - return false + return 0 } -// Contains ISIS router advanced properties. -type IsisAdvanced struct { +func (x *LagPortLacp) GetLacpduTimeout() uint32 { + if x != nil && x.LacpduTimeout != nil { + return *x.LacpduTimeout + } + return 0 +} + +// Base Ethernet interface. +type DeviceEthernetBase struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // It enables padding of Hello message to MTU size. - // default = True - EnableHelloPadding *bool `protobuf:"varint,1,opt,name=enable_hello_padding,json=enableHelloPadding,proto3,oneof" json:"enable_hello_padding,omitempty"` - // The Number of Area Addresses permitted, with a valid range from 0 to 254. A zero - // indicates a maximum of 3 addresses. - // default = 3 - MaxAreaAddresses *uint32 `protobuf:"varint,2,opt,name=max_area_addresses,json=maxAreaAddresses,proto3,oneof" json:"max_area_addresses,omitempty"` - // Its combination of the ISP and HO-DSP.Usually all nodes within an area have the - // same area address. If no area addresses are configured, a default area of 490001 - // will be advertised. - AreaAddresses []string `protobuf:"bytes,3,rep,name=area_addresses,json=areaAddresses,proto3" json:"area_addresses,omitempty"` - // The rate at which LSPs are re-sent in seconds. - // default = 600 - LspRefreshRate *uint32 `protobuf:"varint,4,opt,name=lsp_refresh_rate,json=lspRefreshRate,proto3,oneof" json:"lsp_refresh_rate,omitempty"` - // The MaxAge for retaining a learned LSP on this router in seconds. - // default = 1200 - LspLifetime *uint32 `protobuf:"varint,5,opt,name=lsp_lifetime,json=lspLifetime,proto3,oneof" json:"lsp_lifetime,omitempty"` - // The number of milliseconds between transmissions of Partial Sequence Number PDU. - // default = 2000 - PsnpInterval *uint32 `protobuf:"varint,6,opt,name=psnp_interval,json=psnpInterval,proto3,oneof" json:"psnp_interval,omitempty"` - // The number of milliseconds between transmissions of Partial Sequence Number PDU. - // default = 10000 - CsnpInterval *uint32 `protobuf:"varint,7,opt,name=csnp_interval,json=csnpInterval,proto3,oneof" json:"csnp_interval,omitempty"` - // The maximum size in bytes of any LSP that can be transmitted over a link of equal - // or less than maximum MTU size. - // default = 1492 - MaxLspSize *uint32 `protobuf:"varint,8,opt,name=max_lsp_size,json=maxLspSize,proto3,oneof" json:"max_lsp_size,omitempty"` - // The number of seconds between transmissions of LSPs/MGROUP-PDUs. - // default = 5000 - LspMgroupMinTransInterval *uint32 `protobuf:"varint,9,opt,name=lsp_mgroup_min_trans_interval,json=lspMgroupMinTransInterval,proto3,oneof" json:"lsp_mgroup_min_trans_interval,omitempty"` - // If the Attached bit is enabled, it indicates that the ISIS router is attached to - // another area or the Level 2 backbone. The purpose of an Attached-Bit is to accomplish - // Inter-Area Routing. When an L1/L2 router is connected to more than one area, it - // sets the Attached-bit on its L1 LSP. This can cause a default route ( 0.0.0.0/0 ) - // to be installed by the receiving router. - // default = True - EnableAttachedBit *bool `protobuf:"varint,10,opt,name=enable_attached_bit,json=enableAttachedBit,proto3,oneof" json:"enable_attached_bit,omitempty"` + // Media Access Control address. + // required = true + Mac *string `protobuf:"bytes,1,opt,name=mac,proto3,oneof" json:"mac,omitempty"` + // Maximum Transmission Unit. + // default = 1500 + Mtu *uint32 `protobuf:"varint,2,opt,name=mtu,proto3,oneof" json:"mtu,omitempty"` + // List of VLANs + Vlans []*DeviceVlan `protobuf:"bytes,3,rep,name=vlans,proto3" json:"vlans,omitempty"` + // Globally unique name of an object. It also serves as the primary key for arrays of + // objects. + // required = true + Name *string `protobuf:"bytes,4,opt,name=name,proto3,oneof" json:"name,omitempty"` } -func (x *IsisAdvanced) Reset() { - *x = IsisAdvanced{} +func (x *DeviceEthernetBase) Reset() { + *x = DeviceEthernetBase{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[46] + mi := &file_otg_proto_msgTypes[10] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *IsisAdvanced) String() string { +func (x *DeviceEthernetBase) String() string { return protoimpl.X.MessageStringOf(x) } -func (*IsisAdvanced) ProtoMessage() {} +func (*DeviceEthernetBase) ProtoMessage() {} -func (x *IsisAdvanced) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[46] +func (x *DeviceEthernetBase) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[10] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -21589,115 +21206,191 @@ func (x *IsisAdvanced) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use IsisAdvanced.ProtoReflect.Descriptor instead. -func (*IsisAdvanced) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{46} +// Deprecated: Use DeviceEthernetBase.ProtoReflect.Descriptor instead. +func (*DeviceEthernetBase) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{10} } -func (x *IsisAdvanced) GetEnableHelloPadding() bool { - if x != nil && x.EnableHelloPadding != nil { - return *x.EnableHelloPadding +func (x *DeviceEthernetBase) GetMac() string { + if x != nil && x.Mac != nil { + return *x.Mac } - return false + return "" } -func (x *IsisAdvanced) GetMaxAreaAddresses() uint32 { - if x != nil && x.MaxAreaAddresses != nil { - return *x.MaxAreaAddresses +func (x *DeviceEthernetBase) GetMtu() uint32 { + if x != nil && x.Mtu != nil { + return *x.Mtu } return 0 } -func (x *IsisAdvanced) GetAreaAddresses() []string { +func (x *DeviceEthernetBase) GetVlans() []*DeviceVlan { if x != nil { - return x.AreaAddresses + return x.Vlans } return nil } -func (x *IsisAdvanced) GetLspRefreshRate() uint32 { - if x != nil && x.LspRefreshRate != nil { - return *x.LspRefreshRate +func (x *DeviceEthernetBase) GetName() string { + if x != nil && x.Name != nil { + return *x.Name } - return 0 + return "" } -func (x *IsisAdvanced) GetLspLifetime() uint32 { - if x != nil && x.LspLifetime != nil { - return *x.LspLifetime +// An Ethernet interface with IPv4 and IPv6 addresses. +type DeviceEthernet struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Device connection to physical, LAG or another device. + Connection *EthernetConnection `protobuf:"bytes,2,opt,name=connection,proto3" json:"connection,omitempty"` + // List of IPv4 addresses and their gateways. + Ipv4Addresses []*DeviceIpv4 `protobuf:"bytes,3,rep,name=ipv4_addresses,json=ipv4Addresses,proto3" json:"ipv4_addresses,omitempty"` + // List of global IPv6 addresses and their gateways. + // The Link Local IPv6 address will be automatically generated. + Ipv6Addresses []*DeviceIpv6 `protobuf:"bytes,4,rep,name=ipv6_addresses,json=ipv6Addresses,proto3" json:"ipv6_addresses,omitempty"` + // Media Access Control address. + // required = true + Mac *string `protobuf:"bytes,5,opt,name=mac,proto3,oneof" json:"mac,omitempty"` + // Maximum Transmission Unit. + // default = 1500 + Mtu *uint32 `protobuf:"varint,6,opt,name=mtu,proto3,oneof" json:"mtu,omitempty"` + // List of VLANs + Vlans []*DeviceVlan `protobuf:"bytes,7,rep,name=vlans,proto3" json:"vlans,omitempty"` + // Globally unique name of an object. It also serves as the primary key for arrays of + // objects. + // required = true + Name *string `protobuf:"bytes,8,opt,name=name,proto3,oneof" json:"name,omitempty"` +} + +func (x *DeviceEthernet) Reset() { + *x = DeviceEthernet{} + if protoimpl.UnsafeEnabled { + mi := &file_otg_proto_msgTypes[11] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } - return 0 } -func (x *IsisAdvanced) GetPsnpInterval() uint32 { - if x != nil && x.PsnpInterval != nil { - return *x.PsnpInterval +func (x *DeviceEthernet) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*DeviceEthernet) ProtoMessage() {} + +func (x *DeviceEthernet) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[11] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms } - return 0 + return mi.MessageOf(x) } -func (x *IsisAdvanced) GetCsnpInterval() uint32 { - if x != nil && x.CsnpInterval != nil { - return *x.CsnpInterval +// Deprecated: Use DeviceEthernet.ProtoReflect.Descriptor instead. +func (*DeviceEthernet) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{11} +} + +func (x *DeviceEthernet) GetConnection() *EthernetConnection { + if x != nil { + return x.Connection } - return 0 + return nil } -func (x *IsisAdvanced) GetMaxLspSize() uint32 { - if x != nil && x.MaxLspSize != nil { - return *x.MaxLspSize +func (x *DeviceEthernet) GetIpv4Addresses() []*DeviceIpv4 { + if x != nil { + return x.Ipv4Addresses } - return 0 + return nil } -func (x *IsisAdvanced) GetLspMgroupMinTransInterval() uint32 { - if x != nil && x.LspMgroupMinTransInterval != nil { - return *x.LspMgroupMinTransInterval +func (x *DeviceEthernet) GetIpv6Addresses() []*DeviceIpv6 { + if x != nil { + return x.Ipv6Addresses + } + return nil +} + +func (x *DeviceEthernet) GetMac() string { + if x != nil && x.Mac != nil { + return *x.Mac + } + return "" +} + +func (x *DeviceEthernet) GetMtu() uint32 { + if x != nil && x.Mtu != nil { + return *x.Mtu } return 0 } -func (x *IsisAdvanced) GetEnableAttachedBit() bool { - if x != nil && x.EnableAttachedBit != nil { - return *x.EnableAttachedBit +func (x *DeviceEthernet) GetVlans() []*DeviceVlan { + if x != nil { + return x.Vlans } - return false + return nil } -// This contains ISIS Area/Domain authentication properties. -type IsisAuthentication struct { +func (x *DeviceEthernet) GetName() string { + if x != nil && x.Name != nil { + return *x.Name + } + return "" +} + +// Ethernet interface connection to a port, LAG or VXLAN tunnel. +type EthernetConnection struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Do not verify MD5 checksum in received LSPs. - // default = True - IgnoreReceiveMd5 *bool `protobuf:"varint,1,opt,name=ignore_receive_md5,json=ignoreReceiveMd5,proto3,oneof" json:"ignore_receive_md5,omitempty"` - // The Area authentication method used for the emulated ISIS router. - // This is used for L1 LSPs. - AreaAuth *IsisAuthenticationBase `protobuf:"bytes,2,opt,name=area_auth,json=areaAuth,proto3" json:"area_auth,omitempty"` - // The Domain authentication method used for the emulated ISIS router. - // This is used for L2 LSPs. - DomainAuth *IsisAuthenticationBase `protobuf:"bytes,3,opt,name=domain_auth,json=domainAuth,proto3" json:"domain_auth,omitempty"` + // port_name, lag_name or vxlan_name + Choice *EthernetConnection_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.EthernetConnection_Choice_Enum,oneof" json:"choice,omitempty"` + // Name of the port that the Ethernet interface is configured on. + // + // x-constraint: + // - /components/schemas/Port/properties/name + PortName *string `protobuf:"bytes,2,opt,name=port_name,json=portName,proto3,oneof" json:"port_name,omitempty"` + // Name of the LAG that the Ethernet interface is configured on. + // + // x-constraint: + // - /components/schemas/Lag/properties/name + LagName *string `protobuf:"bytes,3,opt,name=lag_name,json=lagName,proto3,oneof" json:"lag_name,omitempty"` + // Name of the VXLAN instance (or VXLAN tunnel) that this Ethernet interface is connected + // to. + // + // x-constraint: + // - #/components/schemas/Vxlan.V4Tunnel/properties/name + // - #/components/schemas/Vxlan.V6Tunnel/properties/name + VxlanName *string `protobuf:"bytes,4,opt,name=vxlan_name,json=vxlanName,proto3,oneof" json:"vxlan_name,omitempty"` } -func (x *IsisAuthentication) Reset() { - *x = IsisAuthentication{} +func (x *EthernetConnection) Reset() { + *x = EthernetConnection{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[47] + mi := &file_otg_proto_msgTypes[12] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *IsisAuthentication) String() string { +func (x *EthernetConnection) String() string { return protoimpl.X.MessageStringOf(x) } -func (*IsisAuthentication) ProtoMessage() {} +func (*EthernetConnection) ProtoMessage() {} -func (x *IsisAuthentication) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[47] +func (x *EthernetConnection) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[12] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -21708,64 +21401,77 @@ func (x *IsisAuthentication) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use IsisAuthentication.ProtoReflect.Descriptor instead. -func (*IsisAuthentication) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{47} +// Deprecated: Use EthernetConnection.ProtoReflect.Descriptor instead. +func (*EthernetConnection) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{12} } -func (x *IsisAuthentication) GetIgnoreReceiveMd5() bool { - if x != nil && x.IgnoreReceiveMd5 != nil { - return *x.IgnoreReceiveMd5 +func (x *EthernetConnection) GetChoice() EthernetConnection_Choice_Enum { + if x != nil && x.Choice != nil { + return *x.Choice } - return false + return EthernetConnection_Choice_unspecified } -func (x *IsisAuthentication) GetAreaAuth() *IsisAuthenticationBase { - if x != nil { - return x.AreaAuth +func (x *EthernetConnection) GetPortName() string { + if x != nil && x.PortName != nil { + return *x.PortName } - return nil + return "" } -func (x *IsisAuthentication) GetDomainAuth() *IsisAuthenticationBase { - if x != nil { - return x.DomainAuth +func (x *EthernetConnection) GetLagName() string { + if x != nil && x.LagName != nil { + return *x.LagName } - return nil + return "" } -// Optional container for ISIS authentication properties. -type IsisAuthenticationBase struct { +func (x *EthernetConnection) GetVxlanName() string { + if x != nil && x.VxlanName != nil { + return *x.VxlanName + } + return "" +} + +// Emulated VLAN protocol. +type DeviceVlan struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // The authentication method. + // Tag protocol identifier + // default = Tpid.Enum.x8100 + Tpid *DeviceVlan_Tpid_Enum `protobuf:"varint,1,opt,name=tpid,proto3,enum=otg.DeviceVlan_Tpid_Enum,oneof" json:"tpid,omitempty"` + // Priority code point + // default = 0 + Priority *uint32 `protobuf:"varint,2,opt,name=priority,proto3,oneof" json:"priority,omitempty"` + // VLAN identifier + // default = 1 + Id *uint32 `protobuf:"varint,3,opt,name=id,proto3,oneof" json:"id,omitempty"` + // Globally unique name of an object. It also serves as the primary key for arrays of + // objects. // required = true - AuthType *IsisAuthenticationBase_AuthType_Enum `protobuf:"varint,1,opt,name=auth_type,json=authType,proto3,enum=otg.IsisAuthenticationBase_AuthType_Enum,oneof" json:"auth_type,omitempty"` - // Authentication as an MD5 key. - Md5 *string `protobuf:"bytes,2,opt,name=md5,proto3,oneof" json:"md5,omitempty"` - // Authentication as a clear text password. - Password *string `protobuf:"bytes,3,opt,name=password,proto3,oneof" json:"password,omitempty"` + Name *string `protobuf:"bytes,4,opt,name=name,proto3,oneof" json:"name,omitempty"` } -func (x *IsisAuthenticationBase) Reset() { - *x = IsisAuthenticationBase{} +func (x *DeviceVlan) Reset() { + *x = DeviceVlan{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[48] + mi := &file_otg_proto_msgTypes[13] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *IsisAuthenticationBase) String() string { +func (x *DeviceVlan) String() string { return protoimpl.X.MessageStringOf(x) } -func (*IsisAuthenticationBase) ProtoMessage() {} +func (*DeviceVlan) ProtoMessage() {} -func (x *IsisAuthenticationBase) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[48] +func (x *DeviceVlan) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[13] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -21776,98 +21482,79 @@ func (x *IsisAuthenticationBase) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use IsisAuthenticationBase.ProtoReflect.Descriptor instead. -func (*IsisAuthenticationBase) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{48} +// Deprecated: Use DeviceVlan.ProtoReflect.Descriptor instead. +func (*DeviceVlan) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{13} } -func (x *IsisAuthenticationBase) GetAuthType() IsisAuthenticationBase_AuthType_Enum { - if x != nil && x.AuthType != nil { - return *x.AuthType +func (x *DeviceVlan) GetTpid() DeviceVlan_Tpid_Enum { + if x != nil && x.Tpid != nil { + return *x.Tpid } - return IsisAuthenticationBase_AuthType_unspecified + return DeviceVlan_Tpid_unspecified } -func (x *IsisAuthenticationBase) GetMd5() string { - if x != nil && x.Md5 != nil { - return *x.Md5 +func (x *DeviceVlan) GetPriority() uint32 { + if x != nil && x.Priority != nil { + return *x.Priority } - return "" + return 0 } -func (x *IsisAuthenticationBase) GetPassword() string { - if x != nil && x.Password != nil { - return *x.Password +func (x *DeviceVlan) GetId() uint32 { + if x != nil && x.Id != nil { + return *x.Id + } + return 0 +} + +func (x *DeviceVlan) GetName() string { + if x != nil && x.Name != nil { + return *x.Name } return "" } -// Emulated ISIS IPv4 routes. -type IsisV4RouteRange struct { +// An IPv4 interface with gateway +type DeviceIpv4 struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // A list of group of IPv4 route addresses. - Addresses []*V4RouteAddress `protobuf:"bytes,1,rep,name=addresses,proto3" json:"addresses,omitempty"` - // The user-defined metric associated with this route range. - // default = 0 - LinkMetric *uint32 `protobuf:"varint,2,opt,name=link_metric,json=linkMetric,proto3,oneof" json:"link_metric,omitempty"` - // The origin of the advertised route-internal or external to the ISIS area. Options - // include the following: - // Internal-for intra-area routes, through Level 1 LSPs. - // External-for inter-area routes redistributed within L1, through Level - // 1 LSPs. - // default = OriginType.Enum.internal - OriginType *IsisV4RouteRange_OriginType_Enum `protobuf:"varint,3,opt,name=origin_type,json=originType,proto3,enum=otg.IsisV4RouteRange_OriginType_Enum,oneof" json:"origin_type,omitempty"` - // Defines the Up/Down (Redistribution) bit defined for TLVs 128 and 130 by RFC 2966. - // It is used for domain-wide advertisement of prefix information. - // - // Up (0)-used when a prefix is initially advertised within the ISIS L3 - // hierarchy, - // and for all other prefixes in L1 and L2 LSPs. (default) - // Down (1)-used when an L1/L2 router advertises L2 prefixes in L1 LSPs. - // - // The prefixes are being advertised from a higher level (L2) down to a lower level - // (L1). - // default = RedistributionType.Enum.up - RedistributionType *IsisV4RouteRange_RedistributionType_Enum `protobuf:"varint,4,opt,name=redistribution_type,json=redistributionType,proto3,enum=otg.IsisV4RouteRange_RedistributionType_Enum,oneof" json:"redistribution_type,omitempty"` + // The IPv4 address of the gateway + // required = true + Gateway *string `protobuf:"bytes,1,opt,name=gateway,proto3,oneof" json:"gateway,omitempty"` + // Description missing in models + GatewayMac *DeviceIpv4GatewayMAC `protobuf:"bytes,2,opt,name=gateway_mac,json=gatewayMac,proto3" json:"gateway_mac,omitempty"` + // The IPv4 address + // required = true + Address *string `protobuf:"bytes,3,opt,name=address,proto3,oneof" json:"address,omitempty"` + // The prefix of the IPv4 address. + // default = 24 + Prefix *uint32 `protobuf:"varint,4,opt,name=prefix,proto3,oneof" json:"prefix,omitempty"` // Globally unique name of an object. It also serves as the primary key for arrays of // objects. // required = true Name *string `protobuf:"bytes,5,opt,name=name,proto3,oneof" json:"name,omitempty"` - // Specifies whether the sub-TLV for IPv4/IPv6 Extended Reachability Attribute Flags - // will be advertised or not. - // default = False - PrefixAttrEnabled *bool `protobuf:"varint,6,opt,name=prefix_attr_enabled,json=prefixAttrEnabled,proto3,oneof" json:"prefix_attr_enabled,omitempty"` - // External Prefix Flag (Bit 0) - // default = False - XFlag *bool `protobuf:"varint,7,opt,name=x_flag,json=xFlag,proto3,oneof" json:"x_flag,omitempty"` - // Re-advertisement Flag (Bit 1) - // default = False - RFlag *bool `protobuf:"varint,8,opt,name=r_flag,json=rFlag,proto3,oneof" json:"r_flag,omitempty"` - // Node Flag (Bit 2) - // default = False - NFlag *bool `protobuf:"varint,9,opt,name=n_flag,json=nFlag,proto3,oneof" json:"n_flag,omitempty"` } -func (x *IsisV4RouteRange) Reset() { - *x = IsisV4RouteRange{} +func (x *DeviceIpv4) Reset() { + *x = DeviceIpv4{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[49] + mi := &file_otg_proto_msgTypes[14] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *IsisV4RouteRange) String() string { +func (x *DeviceIpv4) String() string { return protoimpl.X.MessageStringOf(x) } -func (*IsisV4RouteRange) ProtoMessage() {} +func (*DeviceIpv4) ProtoMessage() {} -func (x *IsisV4RouteRange) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[49] +func (x *DeviceIpv4) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[14] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -21878,112 +21565,86 @@ func (x *IsisV4RouteRange) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use IsisV4RouteRange.ProtoReflect.Descriptor instead. -func (*IsisV4RouteRange) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{49} +// Deprecated: Use DeviceIpv4.ProtoReflect.Descriptor instead. +func (*DeviceIpv4) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{14} } -func (x *IsisV4RouteRange) GetAddresses() []*V4RouteAddress { - if x != nil { - return x.Addresses +func (x *DeviceIpv4) GetGateway() string { + if x != nil && x.Gateway != nil { + return *x.Gateway } - return nil + return "" } -func (x *IsisV4RouteRange) GetLinkMetric() uint32 { - if x != nil && x.LinkMetric != nil { - return *x.LinkMetric +func (x *DeviceIpv4) GetGatewayMac() *DeviceIpv4GatewayMAC { + if x != nil { + return x.GatewayMac } - return 0 + return nil } -func (x *IsisV4RouteRange) GetOriginType() IsisV4RouteRange_OriginType_Enum { - if x != nil && x.OriginType != nil { - return *x.OriginType +func (x *DeviceIpv4) GetAddress() string { + if x != nil && x.Address != nil { + return *x.Address } - return IsisV4RouteRange_OriginType_unspecified + return "" } -func (x *IsisV4RouteRange) GetRedistributionType() IsisV4RouteRange_RedistributionType_Enum { - if x != nil && x.RedistributionType != nil { - return *x.RedistributionType +func (x *DeviceIpv4) GetPrefix() uint32 { + if x != nil && x.Prefix != nil { + return *x.Prefix } - return IsisV4RouteRange_RedistributionType_unspecified + return 0 } -func (x *IsisV4RouteRange) GetName() string { +func (x *DeviceIpv4) GetName() string { if x != nil && x.Name != nil { return *x.Name } return "" } -func (x *IsisV4RouteRange) GetPrefixAttrEnabled() bool { - if x != nil && x.PrefixAttrEnabled != nil { - return *x.PrefixAttrEnabled - } - return false -} - -func (x *IsisV4RouteRange) GetXFlag() bool { - if x != nil && x.XFlag != nil { - return *x.XFlag - } - return false -} - -func (x *IsisV4RouteRange) GetRFlag() bool { - if x != nil && x.RFlag != nil { - return *x.RFlag - } - return false -} - -func (x *IsisV4RouteRange) GetNFlag() bool { - if x != nil && x.NFlag != nil { - return *x.NFlag - } - return false -} - -// A container for IPv4 route addresses. -type V4RouteAddress struct { +// An IPv4 Loopback interface. +type DeviceIpv4Loopback struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // The starting address of the network. + // The unique name of the Ethernet interface behind which this Loopback interface will + // be created. + // + // x-constraint: + // - /components/schemas/Device.Ethernet/properties/name + // // required = true - Address *string `protobuf:"bytes,1,opt,name=address,proto3,oneof" json:"address,omitempty"` - // The IPv4 network prefix length to be applied to the address. - // default = 24 - Prefix *uint32 `protobuf:"varint,2,opt,name=prefix,proto3,oneof" json:"prefix,omitempty"` - // The total number of addresses in the range. - // default = 1 - Count *uint32 `protobuf:"varint,3,opt,name=count,proto3,oneof" json:"count,omitempty"` - // Increments the network address prefixes within a route range where multiple routes - // are present. The value is incremented according to the Prefix Length and Step. - // default = 1 - Step *uint32 `protobuf:"varint,4,opt,name=step,proto3,oneof" json:"step,omitempty"` + EthName *string `protobuf:"bytes,1,opt,name=eth_name,json=ethName,proto3,oneof" json:"eth_name,omitempty"` + // The IPv4 Loopback address with prefix length of 32. + // default = 0.0.0.0 + Address *string `protobuf:"bytes,2,opt,name=address,proto3,oneof" json:"address,omitempty"` + // Globally unique name of an object. It also serves as the primary key for arrays of + // objects. + // required = true + Name *string `protobuf:"bytes,3,opt,name=name,proto3,oneof" json:"name,omitempty"` } -func (x *V4RouteAddress) Reset() { - *x = V4RouteAddress{} +func (x *DeviceIpv4Loopback) Reset() { + *x = DeviceIpv4Loopback{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[50] + mi := &file_otg_proto_msgTypes[15] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *V4RouteAddress) String() string { +func (x *DeviceIpv4Loopback) String() string { return protoimpl.X.MessageStringOf(x) } -func (*V4RouteAddress) ProtoMessage() {} +func (*DeviceIpv4Loopback) ProtoMessage() {} -func (x *V4RouteAddress) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[50] +func (x *DeviceIpv4Loopback) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[15] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -21994,77 +21655,71 @@ func (x *V4RouteAddress) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use V4RouteAddress.ProtoReflect.Descriptor instead. -func (*V4RouteAddress) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{50} +// Deprecated: Use DeviceIpv4Loopback.ProtoReflect.Descriptor instead. +func (*DeviceIpv4Loopback) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{15} } -func (x *V4RouteAddress) GetAddress() string { - if x != nil && x.Address != nil { - return *x.Address +func (x *DeviceIpv4Loopback) GetEthName() string { + if x != nil && x.EthName != nil { + return *x.EthName } return "" } -func (x *V4RouteAddress) GetPrefix() uint32 { - if x != nil && x.Prefix != nil { - return *x.Prefix - } - return 0 -} - -func (x *V4RouteAddress) GetCount() uint32 { - if x != nil && x.Count != nil { - return *x.Count +func (x *DeviceIpv4Loopback) GetAddress() string { + if x != nil && x.Address != nil { + return *x.Address } - return 0 + return "" } -func (x *V4RouteAddress) GetStep() uint32 { - if x != nil && x.Step != nil { - return *x.Step +func (x *DeviceIpv4Loopback) GetName() string { + if x != nil && x.Name != nil { + return *x.Name } - return 0 + return "" } -// A container for IPv6 route addresses. -type V6RouteAddress struct { +// By default auto(resolved gateway mac) is set. Setting a value would mean that ARP +// will not be used for learning MAC of connected device. The user-configured MAC address +// will be used for auto-filling the destination +// MAC address in the control and data packets sent from this IPv4 endpoint +// whenever applicable. +type DeviceIpv4GatewayMAC struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // The starting address of the network. - // required = true - Address *string `protobuf:"bytes,1,opt,name=address,proto3,oneof" json:"address,omitempty"` - // The IPv6 network prefix length to be applied to the address. - // default = 64 - Prefix *uint32 `protobuf:"varint,2,opt,name=prefix,proto3,oneof" json:"prefix,omitempty"` - // The total number of addresses in the range. - // default = 1 - Count *uint32 `protobuf:"varint,3,opt,name=count,proto3,oneof" json:"count,omitempty"` - // Increments the network address prefixes within a route range where multiple routes - // are present. The value is incremented according to the Prefix Length and Step. - // default = 1 - Step *uint32 `protobuf:"varint,4,opt,name=step,proto3,oneof" json:"step,omitempty"` + // auto or configured value. + // default = Choice.Enum.auto + Choice *DeviceIpv4GatewayMAC_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.DeviceIpv4GatewayMAC_Choice_Enum,oneof" json:"choice,omitempty"` + // The OTG implementation can provide a system generated value for this property. If + // the OTG is unable to generate a value the default value must be used. + // default = 00:00:00:00:00:00 + Auto *string `protobuf:"bytes,2,opt,name=auto,proto3,oneof" json:"auto,omitempty"` + // Description missing in models + // default = 00:00:00:00:00:00 + Value *string `protobuf:"bytes,3,opt,name=value,proto3,oneof" json:"value,omitempty"` } -func (x *V6RouteAddress) Reset() { - *x = V6RouteAddress{} +func (x *DeviceIpv4GatewayMAC) Reset() { + *x = DeviceIpv4GatewayMAC{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[51] + mi := &file_otg_proto_msgTypes[16] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *V6RouteAddress) String() string { +func (x *DeviceIpv4GatewayMAC) String() string { return protoimpl.X.MessageStringOf(x) } -func (*V6RouteAddress) ProtoMessage() {} +func (*DeviceIpv4GatewayMAC) ProtoMessage() {} -func (x *V6RouteAddress) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[51] +func (x *DeviceIpv4GatewayMAC) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[16] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -22075,77 +21730,72 @@ func (x *V6RouteAddress) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use V6RouteAddress.ProtoReflect.Descriptor instead. -func (*V6RouteAddress) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{51} -} - -func (x *V6RouteAddress) GetAddress() string { - if x != nil && x.Address != nil { - return *x.Address - } - return "" +// Deprecated: Use DeviceIpv4GatewayMAC.ProtoReflect.Descriptor instead. +func (*DeviceIpv4GatewayMAC) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{16} } -func (x *V6RouteAddress) GetPrefix() uint32 { - if x != nil && x.Prefix != nil { - return *x.Prefix +func (x *DeviceIpv4GatewayMAC) GetChoice() DeviceIpv4GatewayMAC_Choice_Enum { + if x != nil && x.Choice != nil { + return *x.Choice } - return 0 + return DeviceIpv4GatewayMAC_Choice_unspecified } -func (x *V6RouteAddress) GetCount() uint32 { - if x != nil && x.Count != nil { - return *x.Count +func (x *DeviceIpv4GatewayMAC) GetAuto() string { + if x != nil && x.Auto != nil { + return *x.Auto } - return 0 + return "" } -func (x *V6RouteAddress) GetStep() uint32 { - if x != nil && x.Step != nil { - return *x.Step +func (x *DeviceIpv4GatewayMAC) GetValue() string { + if x != nil && x.Value != nil { + return *x.Value } - return 0 + return "" } -// A container for MAC route addresses. -type MACRouteAddress struct { +// An IPv6 interface with gateway. +type DeviceIpv6 struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // The starting address of the MAC Range. + // The IPv6 gateway address. // required = true - Address *string `protobuf:"bytes,1,opt,name=address,proto3,oneof" json:"address,omitempty"` - // The MAC prefix length to be applied to the address. - // default = 48 - Prefix *uint32 `protobuf:"varint,2,opt,name=prefix,proto3,oneof" json:"prefix,omitempty"` - // The total number of mac addresses in the range. - // default = 1 - Count *uint32 `protobuf:"varint,3,opt,name=count,proto3,oneof" json:"count,omitempty"` - // Increments the mac address prefixes within a mac range where multiple routes are - // present. The value is incremented according to the mac prefix Length and Step. - // default = 1 - Step *uint32 `protobuf:"varint,4,opt,name=step,proto3,oneof" json:"step,omitempty"` + Gateway *string `protobuf:"bytes,1,opt,name=gateway,proto3,oneof" json:"gateway,omitempty"` + // Description missing in models + GatewayMac *DeviceIpv6GatewayMAC `protobuf:"bytes,2,opt,name=gateway_mac,json=gatewayMac,proto3" json:"gateway_mac,omitempty"` + // The IPv6 address. + // required = true + Address *string `protobuf:"bytes,3,opt,name=address,proto3,oneof" json:"address,omitempty"` + // The network prefix. + // default = 64 + Prefix *uint32 `protobuf:"varint,4,opt,name=prefix,proto3,oneof" json:"prefix,omitempty"` + // Globally unique name of an object. It also serves as the primary key for arrays of + // objects. + // required = true + Name *string `protobuf:"bytes,5,opt,name=name,proto3,oneof" json:"name,omitempty"` } -func (x *MACRouteAddress) Reset() { - *x = MACRouteAddress{} +func (x *DeviceIpv6) Reset() { + *x = DeviceIpv6{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[52] + mi := &file_otg_proto_msgTypes[17] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *MACRouteAddress) String() string { +func (x *DeviceIpv6) String() string { return protoimpl.X.MessageStringOf(x) } -func (*MACRouteAddress) ProtoMessage() {} +func (*DeviceIpv6) ProtoMessage() {} -func (x *MACRouteAddress) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[52] +func (x *DeviceIpv6) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[17] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -22156,105 +21806,86 @@ func (x *MACRouteAddress) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use MACRouteAddress.ProtoReflect.Descriptor instead. -func (*MACRouteAddress) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{52} +// Deprecated: Use DeviceIpv6.ProtoReflect.Descriptor instead. +func (*DeviceIpv6) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{17} } -func (x *MACRouteAddress) GetAddress() string { +func (x *DeviceIpv6) GetGateway() string { + if x != nil && x.Gateway != nil { + return *x.Gateway + } + return "" +} + +func (x *DeviceIpv6) GetGatewayMac() *DeviceIpv6GatewayMAC { + if x != nil { + return x.GatewayMac + } + return nil +} + +func (x *DeviceIpv6) GetAddress() string { if x != nil && x.Address != nil { return *x.Address } return "" } -func (x *MACRouteAddress) GetPrefix() uint32 { +func (x *DeviceIpv6) GetPrefix() uint32 { if x != nil && x.Prefix != nil { return *x.Prefix } return 0 } -func (x *MACRouteAddress) GetCount() uint32 { - if x != nil && x.Count != nil { - return *x.Count - } - return 0 -} - -func (x *MACRouteAddress) GetStep() uint32 { - if x != nil && x.Step != nil { - return *x.Step +func (x *DeviceIpv6) GetName() string { + if x != nil && x.Name != nil { + return *x.Name } - return 0 + return "" } -// Emulated ISIS IPv6 routes. -type IsisV6RouteRange struct { +// An IPv6 Loopback interface +type DeviceIpv6Loopback struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // A list of group of IPv6 route addresses. - Addresses []*V6RouteAddress `protobuf:"bytes,1,rep,name=addresses,proto3" json:"addresses,omitempty"` - // The user-defined metric associated with this route range. - // default = 0 - LinkMetric *uint32 `protobuf:"varint,2,opt,name=link_metric,json=linkMetric,proto3,oneof" json:"link_metric,omitempty"` - // The origin of the advertised route-internal or external to the ISIS area. Options - // include the following: - // Internal-for intra-area routes, through Level 1 LSPs. - // External-for inter-area routes redistributed within L1, through Level - // 1 LSPs. - // default = OriginType.Enum.internal - OriginType *IsisV6RouteRange_OriginType_Enum `protobuf:"varint,3,opt,name=origin_type,json=originType,proto3,enum=otg.IsisV6RouteRange_OriginType_Enum,oneof" json:"origin_type,omitempty"` - // Defines the Up/Down (Redistribution) bit defined for TLVs 128 and 130 by RFC 2966. - // It is used for domain-wide advertisement of prefix information. + // The unique name of the Ethernet interface behind which this Loopback + // interface will be created. // - // Up (0)-used when a prefix is initially advertised within the ISIS L3 - // hierarchy, - // and for all other prefixes in L1 and L2 LSPs. (default) - // Down (1)-used when an L1/L2 router advertises L2 prefixes in L1 LSPs. + // x-constraint: + // - /components/schemas/Device.Ethernet/properties/name // - // The prefixes are being advertised from a higher level (L2) down to a lower level - // (L1). - // default = RedistributionType.Enum.up - RedistributionType *IsisV6RouteRange_RedistributionType_Enum `protobuf:"varint,4,opt,name=redistribution_type,json=redistributionType,proto3,enum=otg.IsisV6RouteRange_RedistributionType_Enum,oneof" json:"redistribution_type,omitempty"` + // required = true + EthName *string `protobuf:"bytes,1,opt,name=eth_name,json=ethName,proto3,oneof" json:"eth_name,omitempty"` + // The IPv6 Loopback address with prefix length of 128. + // default = ::0 + Address *string `protobuf:"bytes,2,opt,name=address,proto3,oneof" json:"address,omitempty"` // Globally unique name of an object. It also serves as the primary key for arrays of // objects. // required = true - Name *string `protobuf:"bytes,5,opt,name=name,proto3,oneof" json:"name,omitempty"` - // Specifies whether the sub-TLV for IPv4/IPv6 Extended Reachability Attribute Flags - // will be advertised or not. - // default = False - PrefixAttrEnabled *bool `protobuf:"varint,6,opt,name=prefix_attr_enabled,json=prefixAttrEnabled,proto3,oneof" json:"prefix_attr_enabled,omitempty"` - // External Prefix Flag (Bit 0) - // default = False - XFlag *bool `protobuf:"varint,7,opt,name=x_flag,json=xFlag,proto3,oneof" json:"x_flag,omitempty"` - // Re-advertisement Flag (Bit 1) - // default = False - RFlag *bool `protobuf:"varint,8,opt,name=r_flag,json=rFlag,proto3,oneof" json:"r_flag,omitempty"` - // Node Flag (Bit 2) - // default = False - NFlag *bool `protobuf:"varint,9,opt,name=n_flag,json=nFlag,proto3,oneof" json:"n_flag,omitempty"` + Name *string `protobuf:"bytes,3,opt,name=name,proto3,oneof" json:"name,omitempty"` } -func (x *IsisV6RouteRange) Reset() { - *x = IsisV6RouteRange{} +func (x *DeviceIpv6Loopback) Reset() { + *x = DeviceIpv6Loopback{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[53] + mi := &file_otg_proto_msgTypes[18] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *IsisV6RouteRange) String() string { +func (x *DeviceIpv6Loopback) String() string { return protoimpl.X.MessageStringOf(x) } -func (*IsisV6RouteRange) ProtoMessage() {} +func (*DeviceIpv6Loopback) ProtoMessage() {} -func (x *IsisV6RouteRange) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[53] +func (x *DeviceIpv6Loopback) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[18] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -22265,109 +21896,71 @@ func (x *IsisV6RouteRange) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use IsisV6RouteRange.ProtoReflect.Descriptor instead. -func (*IsisV6RouteRange) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{53} -} - -func (x *IsisV6RouteRange) GetAddresses() []*V6RouteAddress { - if x != nil { - return x.Addresses - } - return nil -} - -func (x *IsisV6RouteRange) GetLinkMetric() uint32 { - if x != nil && x.LinkMetric != nil { - return *x.LinkMetric - } - return 0 +// Deprecated: Use DeviceIpv6Loopback.ProtoReflect.Descriptor instead. +func (*DeviceIpv6Loopback) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{18} } -func (x *IsisV6RouteRange) GetOriginType() IsisV6RouteRange_OriginType_Enum { - if x != nil && x.OriginType != nil { - return *x.OriginType +func (x *DeviceIpv6Loopback) GetEthName() string { + if x != nil && x.EthName != nil { + return *x.EthName } - return IsisV6RouteRange_OriginType_unspecified + return "" } -func (x *IsisV6RouteRange) GetRedistributionType() IsisV6RouteRange_RedistributionType_Enum { - if x != nil && x.RedistributionType != nil { - return *x.RedistributionType +func (x *DeviceIpv6Loopback) GetAddress() string { + if x != nil && x.Address != nil { + return *x.Address } - return IsisV6RouteRange_RedistributionType_unspecified + return "" } -func (x *IsisV6RouteRange) GetName() string { +func (x *DeviceIpv6Loopback) GetName() string { if x != nil && x.Name != nil { return *x.Name } return "" } -func (x *IsisV6RouteRange) GetPrefixAttrEnabled() bool { - if x != nil && x.PrefixAttrEnabled != nil { - return *x.PrefixAttrEnabled - } - return false -} - -func (x *IsisV6RouteRange) GetXFlag() bool { - if x != nil && x.XFlag != nil { - return *x.XFlag - } - return false -} - -func (x *IsisV6RouteRange) GetRFlag() bool { - if x != nil && x.RFlag != nil { - return *x.RFlag - } - return false -} - -func (x *IsisV6RouteRange) GetNFlag() bool { - if x != nil && x.NFlag != nil { - return *x.NFlag - } - return false -} - -// Configuration for one or more IPv4 or IPv6 BGP peers. -type DeviceBgpRouter struct { +// By default auto(resolved gateway mac) is set. Setting a value would mean that ND +// will not be used for learning MAC of connected device. The user-configured MAC address +// will be used for auto-filling the destination +// MAC address in the control and data packets sent from this IPv6 endpoint +// whenever applicable. +type DeviceIpv6GatewayMAC struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // The BGP router ID is a unique identifier used by BGP. It is a 32-bit value that is - // often represented by an IPv4 address. - // required = true - RouterId *string `protobuf:"bytes,1,opt,name=router_id,json=routerId,proto3,oneof" json:"router_id,omitempty"` - // This contains an array of references to IPv4 interfaces, each of which will have - // list of peers to different destinations. - Ipv4Interfaces []*BgpV4Interface `protobuf:"bytes,2,rep,name=ipv4_interfaces,json=ipv4Interfaces,proto3" json:"ipv4_interfaces,omitempty"` - // This contains an array of references to IPv6 interfaces, each of which will have - // list of peers to different destinations. - Ipv6Interfaces []*BgpV6Interface `protobuf:"bytes,3,rep,name=ipv6_interfaces,json=ipv6Interfaces,proto3" json:"ipv6_interfaces,omitempty"` + // auto or configured value. + // default = Choice.Enum.auto + Choice *DeviceIpv6GatewayMAC_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.DeviceIpv6GatewayMAC_Choice_Enum,oneof" json:"choice,omitempty"` + // The OTG implementation can provide a system generated value for this property. If + // the OTG is unable to generate a value the default value must be used. + // default = 00:00:00:00:00:00 + Auto *string `protobuf:"bytes,2,opt,name=auto,proto3,oneof" json:"auto,omitempty"` + // Description missing in models + // default = 00:00:00:00:00:00 + Value *string `protobuf:"bytes,3,opt,name=value,proto3,oneof" json:"value,omitempty"` } -func (x *DeviceBgpRouter) Reset() { - *x = DeviceBgpRouter{} +func (x *DeviceIpv6GatewayMAC) Reset() { + *x = DeviceIpv6GatewayMAC{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[54] + mi := &file_otg_proto_msgTypes[19] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *DeviceBgpRouter) String() string { +func (x *DeviceIpv6GatewayMAC) String() string { return protoimpl.X.MessageStringOf(x) } -func (*DeviceBgpRouter) ProtoMessage() {} +func (*DeviceIpv6GatewayMAC) ProtoMessage() {} -func (x *DeviceBgpRouter) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[54] +func (x *DeviceIpv6GatewayMAC) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[19] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -22378,116 +21971,98 @@ func (x *DeviceBgpRouter) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use DeviceBgpRouter.ProtoReflect.Descriptor instead. -func (*DeviceBgpRouter) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{54} +// Deprecated: Use DeviceIpv6GatewayMAC.ProtoReflect.Descriptor instead. +func (*DeviceIpv6GatewayMAC) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{19} } -func (x *DeviceBgpRouter) GetRouterId() string { - if x != nil && x.RouterId != nil { - return *x.RouterId +func (x *DeviceIpv6GatewayMAC) GetChoice() DeviceIpv6GatewayMAC_Choice_Enum { + if x != nil && x.Choice != nil { + return *x.Choice } - return "" + return DeviceIpv6GatewayMAC_Choice_unspecified } -func (x *DeviceBgpRouter) GetIpv4Interfaces() []*BgpV4Interface { - if x != nil { - return x.Ipv4Interfaces +func (x *DeviceIpv6GatewayMAC) GetAuto() string { + if x != nil && x.Auto != nil { + return *x.Auto } - return nil + return "" } -func (x *DeviceBgpRouter) GetIpv6Interfaces() []*BgpV6Interface { - if x != nil { - return x.Ipv6Interfaces +func (x *DeviceIpv6GatewayMAC) GetValue() string { + if x != nil && x.Value != nil { + return *x.Value } - return nil + return "" } -// All errors detected while processing the Message Header are indicated by sending -// the NOTIFICATION message with the Error Code-Message Header Error. The Error Subcode -// elaborates on the specific nature of the error. -type DeviceBgpMessageHeaderError struct { +// A container for layer1 settings. +type Layer1 struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // The Error Subcode indicates the specific type of error encountered during Message - // Header processing. - // default = Subcode.Enum.connection_not_synchronized_code1_subcode1 - Subcode *DeviceBgpMessageHeaderError_Subcode_Enum `protobuf:"varint,1,opt,name=subcode,proto3,enum=otg.DeviceBgpMessageHeaderError_Subcode_Enum,oneof" json:"subcode,omitempty"` -} - -func (x *DeviceBgpMessageHeaderError) Reset() { - *x = DeviceBgpMessageHeaderError{} - if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[55] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *DeviceBgpMessageHeaderError) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*DeviceBgpMessageHeaderError) ProtoMessage() {} - -func (x *DeviceBgpMessageHeaderError) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[55] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use DeviceBgpMessageHeaderError.ProtoReflect.Descriptor instead. -func (*DeviceBgpMessageHeaderError) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{55} -} - -func (x *DeviceBgpMessageHeaderError) GetSubcode() DeviceBgpMessageHeaderError_Subcode_Enum { - if x != nil && x.Subcode != nil { - return *x.Subcode - } - return DeviceBgpMessageHeaderError_Subcode_unspecified -} - -// All errors detected while processing the OPEN message are indicated by sending the -// NOTIFICATION message with the Error Code-Open Message Error. The Error Subcode elaborates -// on the specific nature of the error. -type DeviceBgpOpenMessageError struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // The Error Subcode indicates the specific type of error encountered during OPEN message - // processing. - // default = Subcode.Enum.unsupported_version_number_code2_subcode1 - Subcode *DeviceBgpOpenMessageError_Subcode_Enum `protobuf:"varint,1,opt,name=subcode,proto3,enum=otg.DeviceBgpOpenMessageError_Subcode_Enum,oneof" json:"subcode,omitempty"` + // A list of unique names of port objects that will share the + // choice settings. + // + // x-constraint: + // - /components/schemas/Port/properties/name + PortNames []string `protobuf:"bytes,1,rep,name=port_names,json=portNames,proto3" json:"port_names,omitempty"` + // Set the speed if supported. When no speed is explicitly set, the current + // speed of underlying test interface shall be assumed. + Speed *Layer1_Speed_Enum `protobuf:"varint,2,opt,name=speed,proto3,enum=otg.Layer1_Speed_Enum,oneof" json:"speed,omitempty"` + // Set the type of media for test interface if supported. When no media + // type is explicitly set, the current media type of underlying test + // interface shall be assumed. + Media *Layer1_Media_Enum `protobuf:"varint,3,opt,name=media,proto3,enum=otg.Layer1_Media_Enum,oneof" json:"media,omitempty"` + // Enable promiscuous mode on test interface. A warning shall be raised if + // this field is set to `true`, even when it's not supported, ignoring + // the setting altogether. + // default = True + Promiscuous *bool `protobuf:"varint,4,opt,name=promiscuous,proto3,oneof" json:"promiscuous,omitempty"` + // Set the maximum transmission unit size. A warning shall be raised if + // the specified value is valid but not supported, ignoring the setting altogether. + // default = 1500 + Mtu *uint32 `protobuf:"varint,5,opt,name=mtu,proto3,oneof" json:"mtu,omitempty"` + // Under Review: This field is currently under review for pending exploration on use + // cases + // + // Set to true to override the auto_negotiate, link_training + // and rs_fec settings for gigabit ethernet interfaces. + IeeeMediaDefaults *bool `protobuf:"varint,6,opt,name=ieee_media_defaults,json=ieeeMediaDefaults,proto3,oneof" json:"ieee_media_defaults,omitempty"` + // Under Review: This field is currently under review for pending exploration on use + // cases, given that a separate configuration called `AutoNegotiation` already exists. + // + // Enable/disable auto negotiation. + AutoNegotiate *bool `protobuf:"varint,7,opt,name=auto_negotiate,json=autoNegotiate,proto3,oneof" json:"auto_negotiate,omitempty"` + // Description missing in models + AutoNegotiation *Layer1AutoNegotiation `protobuf:"bytes,8,opt,name=auto_negotiation,json=autoNegotiation,proto3" json:"auto_negotiation,omitempty"` + // Description missing in models + FlowControl *Layer1FlowControl `protobuf:"bytes,9,opt,name=flow_control,json=flowControl,proto3" json:"flow_control,omitempty"` + // Globally unique name of an object. It also serves as the primary key for arrays of + // objects. + // required = true + Name *string `protobuf:"bytes,10,opt,name=name,proto3,oneof" json:"name,omitempty"` } -func (x *DeviceBgpOpenMessageError) Reset() { - *x = DeviceBgpOpenMessageError{} +func (x *Layer1) Reset() { + *x = Layer1{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[56] + mi := &file_otg_proto_msgTypes[20] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *DeviceBgpOpenMessageError) String() string { +func (x *Layer1) String() string { return protoimpl.X.MessageStringOf(x) } -func (*DeviceBgpOpenMessageError) ProtoMessage() {} +func (*Layer1) ProtoMessage() {} -func (x *DeviceBgpOpenMessageError) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[56] +func (x *Layer1) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[20] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -22498,48 +22073,132 @@ func (x *DeviceBgpOpenMessageError) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use DeviceBgpOpenMessageError.ProtoReflect.Descriptor instead. -func (*DeviceBgpOpenMessageError) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{56} +// Deprecated: Use Layer1.ProtoReflect.Descriptor instead. +func (*Layer1) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{20} } -func (x *DeviceBgpOpenMessageError) GetSubcode() DeviceBgpOpenMessageError_Subcode_Enum { - if x != nil && x.Subcode != nil { - return *x.Subcode +func (x *Layer1) GetPortNames() []string { + if x != nil { + return x.PortNames } - return DeviceBgpOpenMessageError_Subcode_unspecified + return nil } -// All errors detected while processing the UPDATE message are indicated by sending -// the NOTIFICATION message with the Error Code-Update Message Error. The Error Subcode -// elaborates on the specific nature of the error. -type DeviceBgpUpdateMessageError struct { +func (x *Layer1) GetSpeed() Layer1_Speed_Enum { + if x != nil && x.Speed != nil { + return *x.Speed + } + return Layer1_Speed_unspecified +} + +func (x *Layer1) GetMedia() Layer1_Media_Enum { + if x != nil && x.Media != nil { + return *x.Media + } + return Layer1_Media_unspecified +} + +func (x *Layer1) GetPromiscuous() bool { + if x != nil && x.Promiscuous != nil { + return *x.Promiscuous + } + return false +} + +func (x *Layer1) GetMtu() uint32 { + if x != nil && x.Mtu != nil { + return *x.Mtu + } + return 0 +} + +func (x *Layer1) GetIeeeMediaDefaults() bool { + if x != nil && x.IeeeMediaDefaults != nil { + return *x.IeeeMediaDefaults + } + return false +} + +func (x *Layer1) GetAutoNegotiate() bool { + if x != nil && x.AutoNegotiate != nil { + return *x.AutoNegotiate + } + return false +} + +func (x *Layer1) GetAutoNegotiation() *Layer1AutoNegotiation { + if x != nil { + return x.AutoNegotiation + } + return nil +} + +func (x *Layer1) GetFlowControl() *Layer1FlowControl { + if x != nil { + return x.FlowControl + } + return nil +} + +func (x *Layer1) GetName() string { + if x != nil && x.Name != nil { + return *x.Name + } + return "" +} + +// Configuration for auto negotiation settings +type Layer1AutoNegotiation struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // The Error Subcode, the specific type of error encountered during UPDATE processing. - // default = Subcode.Enum.malformed_attrib_list_code3_subcode1 - Subcode *DeviceBgpUpdateMessageError_Subcode_Enum `protobuf:"varint,1,opt,name=subcode,proto3,enum=otg.DeviceBgpUpdateMessageError_Subcode_Enum,oneof" json:"subcode,omitempty"` + // If auto_negotiate is true and the interface supports this option + // then this speed will be advertised. + // default = True + Advertise_1000Mbps *bool `protobuf:"varint,1,opt,name=advertise_1000_mbps,json=advertise1000Mbps,proto3,oneof" json:"advertise_1000_mbps,omitempty"` + // If auto_negotiate is true and the interface supports this option + // then this speed will be advertised. + // default = True + Advertise_100FdMbps *bool `protobuf:"varint,2,opt,name=advertise_100_fd_mbps,json=advertise100FdMbps,proto3,oneof" json:"advertise_100_fd_mbps,omitempty"` + // If auto_negotiate is true and the interface supports this option + // then this speed will be advertised. + // default = True + Advertise_100HdMbps *bool `protobuf:"varint,3,opt,name=advertise_100_hd_mbps,json=advertise100HdMbps,proto3,oneof" json:"advertise_100_hd_mbps,omitempty"` + // If auto_negotiate is true and the interface supports this option + // then this speed will be advertised. + // default = True + Advertise_10FdMbps *bool `protobuf:"varint,4,opt,name=advertise_10_fd_mbps,json=advertise10FdMbps,proto3,oneof" json:"advertise_10_fd_mbps,omitempty"` + // If auto_negotiate is true and the interface supports this option + // then this speed will be advertised. + // default = True + Advertise_10HdMbps *bool `protobuf:"varint,5,opt,name=advertise_10_hd_mbps,json=advertise10HdMbps,proto3,oneof" json:"advertise_10_hd_mbps,omitempty"` + // Enable/disable gigabit ethernet link training. + // default = False + LinkTraining *bool `protobuf:"varint,6,opt,name=link_training,json=linkTraining,proto3,oneof" json:"link_training,omitempty"` + // Enable/disable gigabit ethernet reed solomon forward error correction (RS FEC). + // default = False + RsFec *bool `protobuf:"varint,7,opt,name=rs_fec,json=rsFec,proto3,oneof" json:"rs_fec,omitempty"` } -func (x *DeviceBgpUpdateMessageError) Reset() { - *x = DeviceBgpUpdateMessageError{} +func (x *Layer1AutoNegotiation) Reset() { + *x = Layer1AutoNegotiation{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[57] + mi := &file_otg_proto_msgTypes[21] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *DeviceBgpUpdateMessageError) String() string { +func (x *Layer1AutoNegotiation) String() string { return protoimpl.X.MessageStringOf(x) } -func (*DeviceBgpUpdateMessageError) ProtoMessage() {} +func (*Layer1AutoNegotiation) ProtoMessage() {} -func (x *DeviceBgpUpdateMessageError) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[57] +func (x *Layer1AutoNegotiation) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[21] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -22550,46 +22209,98 @@ func (x *DeviceBgpUpdateMessageError) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use DeviceBgpUpdateMessageError.ProtoReflect.Descriptor instead. -func (*DeviceBgpUpdateMessageError) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{57} +// Deprecated: Use Layer1AutoNegotiation.ProtoReflect.Descriptor instead. +func (*Layer1AutoNegotiation) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{21} } -func (x *DeviceBgpUpdateMessageError) GetSubcode() DeviceBgpUpdateMessageError_Subcode_Enum { - if x != nil && x.Subcode != nil { - return *x.Subcode +func (x *Layer1AutoNegotiation) GetAdvertise_1000Mbps() bool { + if x != nil && x.Advertise_1000Mbps != nil { + return *x.Advertise_1000Mbps } - return DeviceBgpUpdateMessageError_Subcode_unspecified + return false } -// If a system does not receive successive KEEPALIVE, UPDATE, and/or NOTIFICATION messages -// within the period specified in the Hold Time field of the OPEN message, then the -// NOTIFICATION message with the Hold Timer Expired Error Code(Error Code 4) is sent -// and the BGP connection is closed. The Sub Code used is 0. If a user wants to use -// non zero Sub Code then CustomError can be used. -type DeviceBgpHoldTimerExpired struct { +func (x *Layer1AutoNegotiation) GetAdvertise_100FdMbps() bool { + if x != nil && x.Advertise_100FdMbps != nil { + return *x.Advertise_100FdMbps + } + return false +} + +func (x *Layer1AutoNegotiation) GetAdvertise_100HdMbps() bool { + if x != nil && x.Advertise_100HdMbps != nil { + return *x.Advertise_100HdMbps + } + return false +} + +func (x *Layer1AutoNegotiation) GetAdvertise_10FdMbps() bool { + if x != nil && x.Advertise_10FdMbps != nil { + return *x.Advertise_10FdMbps + } + return false +} + +func (x *Layer1AutoNegotiation) GetAdvertise_10HdMbps() bool { + if x != nil && x.Advertise_10HdMbps != nil { + return *x.Advertise_10HdMbps + } + return false +} + +func (x *Layer1AutoNegotiation) GetLinkTraining() bool { + if x != nil && x.LinkTraining != nil { + return *x.LinkTraining + } + return false +} + +func (x *Layer1AutoNegotiation) GetRsFec() bool { + if x != nil && x.RsFec != nil { + return *x.RsFec + } + return false +} + +// A container for layer1 receive flow control settings. +// To enable flow control settings on ports this object must be a valid +// object not a null value. +type Layer1FlowControl struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields + + // The 48bit mac address that the layer1 port names will listen on + // for a directed pause. + // default = 01:80:C2:00:00:01 + DirectedAddress *string `protobuf:"bytes,1,opt,name=directed_address,json=directedAddress,proto3,oneof" json:"directed_address,omitempty"` + // The type of priority flow control. + // default = Choice.Enum.ieee_802_1qbb + Choice *Layer1FlowControl_Choice_Enum `protobuf:"varint,2,opt,name=choice,proto3,enum=otg.Layer1FlowControl_Choice_Enum,oneof" json:"choice,omitempty"` + // Description missing in models + Ieee_802_1Qbb *Layer1Ieee8021Qbb `protobuf:"bytes,3,opt,name=ieee_802_1qbb,json=ieee8021qbb,proto3" json:"ieee_802_1qbb,omitempty"` + // Description missing in models + Ieee_802_3X *Layer1Ieee8023X `protobuf:"bytes,4,opt,name=ieee_802_3x,json=ieee8023x,proto3" json:"ieee_802_3x,omitempty"` } -func (x *DeviceBgpHoldTimerExpired) Reset() { - *x = DeviceBgpHoldTimerExpired{} +func (x *Layer1FlowControl) Reset() { + *x = Layer1FlowControl{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[58] + mi := &file_otg_proto_msgTypes[22] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *DeviceBgpHoldTimerExpired) String() string { +func (x *Layer1FlowControl) String() string { return protoimpl.X.MessageStringOf(x) } -func (*DeviceBgpHoldTimerExpired) ProtoMessage() {} +func (*Layer1FlowControl) ProtoMessage() {} -func (x *DeviceBgpHoldTimerExpired) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[58] +func (x *Layer1FlowControl) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[22] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -22600,38 +22311,63 @@ func (x *DeviceBgpHoldTimerExpired) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use DeviceBgpHoldTimerExpired.ProtoReflect.Descriptor instead. -func (*DeviceBgpHoldTimerExpired) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{58} +// Deprecated: Use Layer1FlowControl.ProtoReflect.Descriptor instead. +func (*Layer1FlowControl) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{22} } -// Any error detected by the BGP Finite State Machine (e.g., receipt of an unexpected -// event) is indicated by sending the NOTIFICATION message with the Error Code-Finite -// State Machine Error(Error Code 5). The Sub Code used is 0. If a user wants to use -// non zero Sub Code then CustomError can be used. -type DeviceBgpFiniteStateMachineError struct { +func (x *Layer1FlowControl) GetDirectedAddress() string { + if x != nil && x.DirectedAddress != nil { + return *x.DirectedAddress + } + return "" +} + +func (x *Layer1FlowControl) GetChoice() Layer1FlowControl_Choice_Enum { + if x != nil && x.Choice != nil { + return *x.Choice + } + return Layer1FlowControl_Choice_unspecified +} + +func (x *Layer1FlowControl) GetIeee_802_1Qbb() *Layer1Ieee8021Qbb { + if x != nil { + return x.Ieee_802_1Qbb + } + return nil +} + +func (x *Layer1FlowControl) GetIeee_802_3X() *Layer1Ieee8023X { + if x != nil { + return x.Ieee_802_3X + } + return nil +} + +// A container for ieee 802.3x rx pause settings +type Layer1Ieee8023X struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields } -func (x *DeviceBgpFiniteStateMachineError) Reset() { - *x = DeviceBgpFiniteStateMachineError{} +func (x *Layer1Ieee8023X) Reset() { + *x = Layer1Ieee8023X{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[59] + mi := &file_otg_proto_msgTypes[23] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *DeviceBgpFiniteStateMachineError) String() string { +func (x *Layer1Ieee8023X) String() string { return protoimpl.X.MessageStringOf(x) } -func (*DeviceBgpFiniteStateMachineError) ProtoMessage() {} +func (*Layer1Ieee8023X) ProtoMessage() {} -func (x *DeviceBgpFiniteStateMachineError) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[59] +func (x *Layer1Ieee8023X) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[23] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -22642,40 +22378,74 @@ func (x *DeviceBgpFiniteStateMachineError) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use DeviceBgpFiniteStateMachineError.ProtoReflect.Descriptor instead. -func (*DeviceBgpFiniteStateMachineError) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{59} +// Deprecated: Use Layer1Ieee8023X.ProtoReflect.Descriptor instead. +func (*Layer1Ieee8023X) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{23} } -// In the absence of any fatal errors, a BGP peer can close its BGP connection by sending -// the NOTIFICATION message with the Error Code Cease. -type DeviceBgpCeaseError struct { +// These settings enhance the existing 802.3x pause priority capabilities +// to enable flow control based on 802.1p priorities (classes of service). +type Layer1Ieee8021Qbb struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // The Error Subcode to be sent to the peer in the Cease NOTIFICATION. - // default = Subcode.Enum.admin_shutdown_code6_subcode2 - Subcode *DeviceBgpCeaseError_Subcode_Enum `protobuf:"varint,1,opt,name=subcode,proto3,enum=otg.DeviceBgpCeaseError_Subcode_Enum,oneof" json:"subcode,omitempty"` + // The upper limit on the transmit time of a queue after receiving a + // message to pause a specified priority. + // A value of 0 or null indicates that pfc delay will not be enabled. + // default = 0 + PfcDelay *uint32 `protobuf:"varint,1,opt,name=pfc_delay,json=pfcDelay,proto3,oneof" json:"pfc_delay,omitempty"` + // The valid values are null, 0 - 7. + // A null value indicates there is no setting for this pfc class. + // default = 0 + PfcClass_0 *uint32 `protobuf:"varint,2,opt,name=pfc_class_0,json=pfcClass0,proto3,oneof" json:"pfc_class_0,omitempty"` + // The valid values are null, 0 - 7. + // A null value indicates there is no setting for this pfc class. + // default = 1 + PfcClass_1 *uint32 `protobuf:"varint,3,opt,name=pfc_class_1,json=pfcClass1,proto3,oneof" json:"pfc_class_1,omitempty"` + // The valid values are null, 0 - 7. + // A null value indicates there is no setting for this pfc class. + // default = 2 + PfcClass_2 *uint32 `protobuf:"varint,4,opt,name=pfc_class_2,json=pfcClass2,proto3,oneof" json:"pfc_class_2,omitempty"` + // The valid values are null, 0 - 7. + // A null value indicates there is no setting for this pfc class. + // default = 3 + PfcClass_3 *uint32 `protobuf:"varint,5,opt,name=pfc_class_3,json=pfcClass3,proto3,oneof" json:"pfc_class_3,omitempty"` + // The valid values are null, 0 - 7. + // A null value indicates there is no setting for this pfc class. + // default = 4 + PfcClass_4 *uint32 `protobuf:"varint,6,opt,name=pfc_class_4,json=pfcClass4,proto3,oneof" json:"pfc_class_4,omitempty"` + // The valid values are null, 0 - 7. + // A null value indicates there is no setting for this pfc class. + // default = 5 + PfcClass_5 *uint32 `protobuf:"varint,7,opt,name=pfc_class_5,json=pfcClass5,proto3,oneof" json:"pfc_class_5,omitempty"` + // The valid values are null, 0 - 7. + // A null value indicates there is no setting for this pfc class. + // default = 6 + PfcClass_6 *uint32 `protobuf:"varint,8,opt,name=pfc_class_6,json=pfcClass6,proto3,oneof" json:"pfc_class_6,omitempty"` + // The valid values are null, 0 - 7. + // A null value indicates there is no setting for this pfc class. + // default = 7 + PfcClass_7 *uint32 `protobuf:"varint,9,opt,name=pfc_class_7,json=pfcClass7,proto3,oneof" json:"pfc_class_7,omitempty"` } -func (x *DeviceBgpCeaseError) Reset() { - *x = DeviceBgpCeaseError{} +func (x *Layer1Ieee8021Qbb) Reset() { + *x = Layer1Ieee8021Qbb{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[60] + mi := &file_otg_proto_msgTypes[24] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *DeviceBgpCeaseError) String() string { +func (x *Layer1Ieee8021Qbb) String() string { return protoimpl.X.MessageStringOf(x) } -func (*DeviceBgpCeaseError) ProtoMessage() {} +func (*Layer1Ieee8021Qbb) ProtoMessage() {} -func (x *DeviceBgpCeaseError) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[60] +func (x *Layer1Ieee8021Qbb) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[24] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -22686,165 +22456,127 @@ func (x *DeviceBgpCeaseError) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use DeviceBgpCeaseError.ProtoReflect.Descriptor instead. -func (*DeviceBgpCeaseError) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{60} +// Deprecated: Use Layer1Ieee8021Qbb.ProtoReflect.Descriptor instead. +func (*Layer1Ieee8021Qbb) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{24} } -func (x *DeviceBgpCeaseError) GetSubcode() DeviceBgpCeaseError_Subcode_Enum { - if x != nil && x.Subcode != nil { - return *x.Subcode +func (x *Layer1Ieee8021Qbb) GetPfcDelay() uint32 { + if x != nil && x.PfcDelay != nil { + return *x.PfcDelay } - return DeviceBgpCeaseError_Subcode_unspecified + return 0 } -// A BGP peer can send NOTIFICATION message with user defined Error Code and Error Subcode. -type DeviceBgpCustomError struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // The Error code to be sent in the NOTIFICATION message to peer. - Code *uint32 `protobuf:"varint,1,opt,name=code,proto3,oneof" json:"code,omitempty"` - // The Error Subcode to be sent in the NOTIFICATION message to peer. - Subcode *uint32 `protobuf:"varint,2,opt,name=subcode,proto3,oneof" json:"subcode,omitempty"` +func (x *Layer1Ieee8021Qbb) GetPfcClass_0() uint32 { + if x != nil && x.PfcClass_0 != nil { + return *x.PfcClass_0 + } + return 0 } -func (x *DeviceBgpCustomError) Reset() { - *x = DeviceBgpCustomError{} - if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[61] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) +func (x *Layer1Ieee8021Qbb) GetPfcClass_1() uint32 { + if x != nil && x.PfcClass_1 != nil { + return *x.PfcClass_1 } + return 0 } -func (x *DeviceBgpCustomError) String() string { - return protoimpl.X.MessageStringOf(x) +func (x *Layer1Ieee8021Qbb) GetPfcClass_2() uint32 { + if x != nil && x.PfcClass_2 != nil { + return *x.PfcClass_2 + } + return 0 } -func (*DeviceBgpCustomError) ProtoMessage() {} +func (x *Layer1Ieee8021Qbb) GetPfcClass_3() uint32 { + if x != nil && x.PfcClass_3 != nil { + return *x.PfcClass_3 + } + return 0 +} -func (x *DeviceBgpCustomError) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[61] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms +func (x *Layer1Ieee8021Qbb) GetPfcClass_4() uint32 { + if x != nil && x.PfcClass_4 != nil { + return *x.PfcClass_4 } - return mi.MessageOf(x) + return 0 } -// Deprecated: Use DeviceBgpCustomError.ProtoReflect.Descriptor instead. -func (*DeviceBgpCustomError) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{61} +func (x *Layer1Ieee8021Qbb) GetPfcClass_5() uint32 { + if x != nil && x.PfcClass_5 != nil { + return *x.PfcClass_5 + } + return 0 } -func (x *DeviceBgpCustomError) GetCode() uint32 { - if x != nil && x.Code != nil { - return *x.Code +func (x *Layer1Ieee8021Qbb) GetPfcClass_6() uint32 { + if x != nil && x.PfcClass_6 != nil { + return *x.PfcClass_6 } return 0 } -func (x *DeviceBgpCustomError) GetSubcode() uint32 { - if x != nil && x.Subcode != nil { - return *x.Subcode +func (x *Layer1Ieee8021Qbb) GetPfcClass_7() uint32 { + if x != nil && x.PfcClass_7 != nil { + return *x.PfcClass_7 } return 0 } -// Configuration for emulated BGPv4 peers and routes. -type BgpV4Peer struct { +// Under Review: There may be changes in filter configuration +// +// Configuration for capture settings. +type Capture struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // IPv4 address of the BGP peer for the session. - // required = true - PeerAddress *string `protobuf:"bytes,1,opt,name=peer_address,json=peerAddress,proto3,oneof" json:"peer_address,omitempty"` - // This contains the list of Ethernet Virtual Private Network (EVPN) Ethernet Segments - // (ES) Per BGP Peer for IPv4 Address Family Identifier (AFI). - // - // Each Ethernet Segment contains a list of EVPN Instances (EVIs) . - // Each EVI contains a list of Broadcast Domains. - // Each Broadcast Domain contains a list of MAC/IP Ranges. - // - // is responsible for advertising Ethernet - // Auto-discovery Route Per EVI (Type 1). - // - // is responsible for advertising Ethernet Auto-discovery Route - // Per Ethernet Segment (Type 1). - // - // is responsible for advertising - // MAC/IP Advertisement Route (Type 2). - // - // is responsible for advertising Inclusive - // Multicast Ethernet Tag Route (Type 3). + // The unique names of ports that the capture settings will apply to. Port_names cannot + // be duplicated between capture objects. // - // Ethernet Segment is responsible for advertising Ethernet Segment Route (Type 4). - EvpnEthernetSegments []*BgpV4EthernetSegment `protobuf:"bytes,2,rep,name=evpn_ethernet_segments,json=evpnEthernetSegments,proto3" json:"evpn_ethernet_segments,omitempty"` - // The type of BGP autonomous system. External BGP is used for BGP links between two - // or more autonomous systems (ebgp). Internal BGP is used within a single autonomous - // system (ibgp). BGP property defaults are aligned with this object defined as an internal - // BGP peer. If the as_type is specified as 'ebgp' then other properties will need to - // be specified as per an external BGP peer. Specifically, for 'ebgp', 'as_set_mode' - // attribute in 'as_path' field in any Route Range should be changed from default value - // 'do_not_include_local_as' to any other value. - // required = true - AsType *BgpV4Peer_AsType_Enum `protobuf:"varint,3,opt,name=as_type,json=asType,proto3,enum=otg.BgpV4Peer_AsType_Enum,oneof" json:"as_type,omitempty"` - // Autonomous System Number (AS number or ASN) - // required = true - AsNumber *uint32 `protobuf:"varint,4,opt,name=as_number,json=asNumber,proto3,oneof" json:"as_number,omitempty"` - // The width in bytes of the as_number values. Any as_number values that exceeds the - // width MUST result in an error. - // default = AsNumberWidth.Enum.four - AsNumberWidth *BgpV4Peer_AsNumberWidth_Enum `protobuf:"varint,5,opt,name=as_number_width,json=asNumberWidth,proto3,enum=otg.BgpV4Peer_AsNumberWidth_Enum,oneof" json:"as_number_width,omitempty"` - // Description missing in models - Advanced *BgpAdvanced `protobuf:"bytes,6,opt,name=advanced,proto3" json:"advanced,omitempty"` - // Description missing in models - Capability *BgpCapability `protobuf:"bytes,7,opt,name=capability,proto3" json:"capability,omitempty"` - // Description missing in models - LearnedInformationFilter *BgpLearnedInformationFilter `protobuf:"bytes,8,opt,name=learned_information_filter,json=learnedInformationFilter,proto3" json:"learned_information_filter,omitempty"` - // Emulated BGPv4 route ranges. - V4Routes []*BgpV4RouteRange `protobuf:"bytes,9,rep,name=v4_routes,json=v4Routes,proto3" json:"v4_routes,omitempty"` - // Emulated BGPv6 route ranges. - V6Routes []*BgpV6RouteRange `protobuf:"bytes,10,rep,name=v6_routes,json=v6Routes,proto3" json:"v6_routes,omitempty"` - // Segment Routing Traffic Engineering (SR TE) Policies for IPv4 Address Family Identifier - // (AFI). - V4SrtePolicies []*BgpSrteV4Policy `protobuf:"bytes,11,rep,name=v4_srte_policies,json=v4SrtePolicies,proto3" json:"v4_srte_policies,omitempty"` - // Segment Routing Traffic Engineering (SR TE) Policies for IPv6 Address Family Identifier - // (AFI). - V6SrtePolicies []*BgpSrteV6Policy `protobuf:"bytes,12,rep,name=v6_srte_policies,json=v6SrtePolicies,proto3" json:"v6_srte_policies,omitempty"` - // Globally unique name of an object. It also serves as the primary key for arrays of - // objects. + // x-constraint: + // - /components/schemas/Port/properties/name + PortNames []string `protobuf:"bytes,1,rep,name=port_names,json=portNames,proto3" json:"port_names,omitempty"` + // A list of filters to apply to the capturing ports. If no filters are specified then + // all packets will be captured. A capture can have multiple filters. The number of + // filters supported is determined by the implementation which can be retrieved using + // the capabilities API. + // When multiple filters are specified the capture implementation must && (and) all + // the filters. + Filters []*CaptureFilter `protobuf:"bytes,2,rep,name=filters,proto3" json:"filters,omitempty"` + // Overwrite the capture buffer. + // default = True + Overwrite *bool `protobuf:"varint,3,opt,name=overwrite,proto3,oneof" json:"overwrite,omitempty"` + // The maximum size of each captured packet. If no value is specified or it is null + // then the entire packet will be captured. + PacketSize *uint32 `protobuf:"varint,4,opt,name=packet_size,json=packetSize,proto3,oneof" json:"packet_size,omitempty"` + // The format of the capture file. + // default = Format.Enum.pcap + Format *Capture_Format_Enum `protobuf:"varint,5,opt,name=format,proto3,enum=otg.Capture_Format_Enum,oneof" json:"format,omitempty"` // Globally unique name of an object. It also serves as the primary key for arrays of // objects. // required = true - Name *string `protobuf:"bytes,13,opt,name=name,proto3,oneof" json:"name,omitempty"` - // Description missing in models - GracefulRestart *BgpGracefulRestart `protobuf:"bytes,14,opt,name=graceful_restart,json=gracefulRestart,proto3" json:"graceful_restart,omitempty"` + Name *string `protobuf:"bytes,6,opt,name=name,proto3,oneof" json:"name,omitempty"` } -func (x *BgpV4Peer) Reset() { - *x = BgpV4Peer{} +func (x *Capture) Reset() { + *x = Capture{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[62] + mi := &file_otg_proto_msgTypes[25] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *BgpV4Peer) String() string { +func (x *Capture) String() string { return protoimpl.X.MessageStringOf(x) } -func (*BgpV4Peer) ProtoMessage() {} +func (*Capture) ProtoMessage() {} -func (x *BgpV4Peer) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[62] +func (x *Capture) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[25] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -22855,149 +22587,189 @@ func (x *BgpV4Peer) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use BgpV4Peer.ProtoReflect.Descriptor instead. -func (*BgpV4Peer) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{62} +// Deprecated: Use Capture.ProtoReflect.Descriptor instead. +func (*Capture) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{25} } -func (x *BgpV4Peer) GetPeerAddress() string { - if x != nil && x.PeerAddress != nil { - return *x.PeerAddress +func (x *Capture) GetPortNames() []string { + if x != nil { + return x.PortNames } - return "" + return nil } -func (x *BgpV4Peer) GetEvpnEthernetSegments() []*BgpV4EthernetSegment { +func (x *Capture) GetFilters() []*CaptureFilter { if x != nil { - return x.EvpnEthernetSegments + return x.Filters } return nil } -func (x *BgpV4Peer) GetAsType() BgpV4Peer_AsType_Enum { - if x != nil && x.AsType != nil { - return *x.AsType +func (x *Capture) GetOverwrite() bool { + if x != nil && x.Overwrite != nil { + return *x.Overwrite } - return BgpV4Peer_AsType_unspecified + return false } -func (x *BgpV4Peer) GetAsNumber() uint32 { - if x != nil && x.AsNumber != nil { - return *x.AsNumber +func (x *Capture) GetPacketSize() uint32 { + if x != nil && x.PacketSize != nil { + return *x.PacketSize } return 0 } -func (x *BgpV4Peer) GetAsNumberWidth() BgpV4Peer_AsNumberWidth_Enum { - if x != nil && x.AsNumberWidth != nil { - return *x.AsNumberWidth +func (x *Capture) GetFormat() Capture_Format_Enum { + if x != nil && x.Format != nil { + return *x.Format } - return BgpV4Peer_AsNumberWidth_unspecified + return Capture_Format_unspecified } -func (x *BgpV4Peer) GetAdvanced() *BgpAdvanced { - if x != nil { - return x.Advanced +func (x *Capture) GetName() string { + if x != nil && x.Name != nil { + return *x.Name } - return nil + return "" } -func (x *BgpV4Peer) GetCapability() *BgpCapability { - if x != nil { - return x.Capability +// Configuration for capture filters +type CaptureFilter struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // The type of capture filter. + // default = Choice.Enum.custom + Choice *CaptureFilter_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.CaptureFilter_Choice_Enum,oneof" json:"choice,omitempty"` + // Offset from last filter in the list. If no filters are present it is offset from + // position 0. Multiple custom filters can be present, the length of each custom filter + // is the length of the value being filtered. + Custom *CaptureCustom `protobuf:"bytes,2,opt,name=custom,proto3" json:"custom,omitempty"` + // Description missing in models + Ethernet *CaptureEthernet `protobuf:"bytes,3,opt,name=ethernet,proto3" json:"ethernet,omitempty"` + // Description missing in models + Vlan *CaptureVlan `protobuf:"bytes,4,opt,name=vlan,proto3" json:"vlan,omitempty"` + // Description missing in models + Ipv4 *CaptureIpv4 `protobuf:"bytes,5,opt,name=ipv4,proto3" json:"ipv4,omitempty"` + // Description missing in models + Ipv6 *CaptureIpv6 `protobuf:"bytes,6,opt,name=ipv6,proto3" json:"ipv6,omitempty"` +} + +func (x *CaptureFilter) Reset() { + *x = CaptureFilter{} + if protoimpl.UnsafeEnabled { + mi := &file_otg_proto_msgTypes[26] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } - return nil } -func (x *BgpV4Peer) GetLearnedInformationFilter() *BgpLearnedInformationFilter { - if x != nil { - return x.LearnedInformationFilter +func (x *CaptureFilter) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CaptureFilter) ProtoMessage() {} + +func (x *CaptureFilter) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[26] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms } - return nil + return mi.MessageOf(x) } -func (x *BgpV4Peer) GetV4Routes() []*BgpV4RouteRange { - if x != nil { - return x.V4Routes +// Deprecated: Use CaptureFilter.ProtoReflect.Descriptor instead. +func (*CaptureFilter) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{26} +} + +func (x *CaptureFilter) GetChoice() CaptureFilter_Choice_Enum { + if x != nil && x.Choice != nil { + return *x.Choice } - return nil + return CaptureFilter_Choice_unspecified } -func (x *BgpV4Peer) GetV6Routes() []*BgpV6RouteRange { +func (x *CaptureFilter) GetCustom() *CaptureCustom { if x != nil { - return x.V6Routes + return x.Custom } return nil } -func (x *BgpV4Peer) GetV4SrtePolicies() []*BgpSrteV4Policy { +func (x *CaptureFilter) GetEthernet() *CaptureEthernet { if x != nil { - return x.V4SrtePolicies + return x.Ethernet } return nil } -func (x *BgpV4Peer) GetV6SrtePolicies() []*BgpSrteV6Policy { +func (x *CaptureFilter) GetVlan() *CaptureVlan { if x != nil { - return x.V6SrtePolicies + return x.Vlan } return nil } -func (x *BgpV4Peer) GetName() string { - if x != nil && x.Name != nil { - return *x.Name +func (x *CaptureFilter) GetIpv4() *CaptureIpv4 { + if x != nil { + return x.Ipv4 } - return "" + return nil } -func (x *BgpV4Peer) GetGracefulRestart() *BgpGracefulRestart { +func (x *CaptureFilter) GetIpv6() *CaptureIpv6 { if x != nil { - return x.GracefulRestart + return x.Ipv6 } return nil } -// Configuration for emulated BGPv4 peers and routes on a single IPv4 interface. -type BgpV4Interface struct { +// Description missing in models +type CaptureCustom struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // The unique name of the IPv4 or Loopback IPv4 interface used as the source IP for - // this list of BGP peers. - // - // x-constraint: - // - /components/schemas/Device.Ipv4/properties/name - // - /components/schemas/Device.Ipv4Loopback/properties/name - // - // x-constraint: - // - /components/schemas/Device.Ipv4/properties/name - // - /components/schemas/Device.Ipv4Loopback/properties/name - // - // required = true - Ipv4Name *string `protobuf:"bytes,1,opt,name=ipv4_name,json=ipv4Name,proto3,oneof" json:"ipv4_name,omitempty"` - // This contains the list of BGPv4 peers configured on this interface. - Peers []*BgpV4Peer `protobuf:"bytes,2,rep,name=peers,proto3" json:"peers,omitempty"` + // The bit offset of field to filter on + Offset *uint32 `protobuf:"varint,1,opt,name=offset,proto3,oneof" json:"offset,omitempty"` + // The bit length of field to filter on + // default = 8 + BitLength *uint32 `protobuf:"varint,2,opt,name=bit_length,json=bitLength,proto3,oneof" json:"bit_length,omitempty"` + // Description missing in models + // default = 00 + Value *string `protobuf:"bytes,3,opt,name=value,proto3,oneof" json:"value,omitempty"` + // Description missing in models + // default = 00 + Mask *string `protobuf:"bytes,4,opt,name=mask,proto3,oneof" json:"mask,omitempty"` + // Description missing in models + // default = False + Negate *bool `protobuf:"varint,5,opt,name=negate,proto3,oneof" json:"negate,omitempty"` } -func (x *BgpV4Interface) Reset() { - *x = BgpV4Interface{} +func (x *CaptureCustom) Reset() { + *x = CaptureCustom{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[63] + mi := &file_otg_proto_msgTypes[27] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *BgpV4Interface) String() string { +func (x *CaptureCustom) String() string { return protoimpl.X.MessageStringOf(x) } -func (*BgpV4Interface) ProtoMessage() {} +func (*CaptureCustom) ProtoMessage() {} -func (x *BgpV4Interface) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[63] +func (x *CaptureCustom) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[27] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -23008,101 +22780,80 @@ func (x *BgpV4Interface) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use BgpV4Interface.ProtoReflect.Descriptor instead. -func (*BgpV4Interface) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{63} +// Deprecated: Use CaptureCustom.ProtoReflect.Descriptor instead. +func (*CaptureCustom) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{27} } -func (x *BgpV4Interface) GetIpv4Name() string { - if x != nil && x.Ipv4Name != nil { - return *x.Ipv4Name +func (x *CaptureCustom) GetOffset() uint32 { + if x != nil && x.Offset != nil { + return *x.Offset + } + return 0 +} + +func (x *CaptureCustom) GetBitLength() uint32 { + if x != nil && x.BitLength != nil { + return *x.BitLength + } + return 0 +} + +func (x *CaptureCustom) GetValue() string { + if x != nil && x.Value != nil { + return *x.Value } return "" } -func (x *BgpV4Interface) GetPeers() []*BgpV4Peer { - if x != nil { - return x.Peers +func (x *CaptureCustom) GetMask() string { + if x != nil && x.Mask != nil { + return *x.Mask } - return nil + return "" } -// Configuration for BGP Ethernet Segment ranges. Advertises following routes - -// -// Type 4 - Ethernet Segment Route -type BgpV4EthernetSegment struct { +func (x *CaptureCustom) GetNegate() bool { + if x != nil && x.Negate != nil { + return *x.Negate + } + return false +} + +// Description missing in models +type CaptureField struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Designated Forwarder (DF) election configuration. - DfElection *BgpEthernetSegmentDfElection `protobuf:"bytes,1,opt,name=df_election,json=dfElection,proto3" json:"df_election,omitempty"` - // This contains the list of EVIs. - Evis []*BgpV4EvpnEvis `protobuf:"bytes,2,rep,name=evis,proto3" json:"evis,omitempty"` - // 10-octet Ethernet Segment Identifier (ESI) Example - For multi-home scenario nonZero - // ESI is '10000000000000000000' . - // default = 00000000000000000000 - Esi *string `protobuf:"bytes,3,opt,name=esi,proto3,oneof" json:"esi,omitempty"` - // Single Active or All Active mode Redundancy mode selection for Multi-home. - // default = ActiveMode.Enum.all_active - ActiveMode *BgpV4EthernetSegment_ActiveMode_Enum `protobuf:"varint,4,opt,name=active_mode,json=activeMode,proto3,enum=otg.BgpV4EthernetSegment_ActiveMode_Enum,oneof" json:"active_mode,omitempty"` - // The label value to be advertised as ESI Label in ESI Label Extended Community. This - // is included in Ethernet Auto-discovery per ES Routes advertised by a router. - // default = 0 - EsiLabel *uint32 `protobuf:"varint,5,opt,name=esi_label,json=esiLabel,proto3,oneof" json:"esi_label,omitempty"` // Description missing in models - Advanced *BgpRouteAdvanced `protobuf:"bytes,6,opt,name=advanced,proto3" json:"advanced,omitempty"` - // Optional community settings. - Communities []*BgpCommunity `protobuf:"bytes,7,rep,name=communities,proto3" json:"communities,omitempty"` - // Optional Extended Community settings. The Extended Communities Attribute is a transitive - // optional BGP attribute, with the Type Code 16. Community and Extended Communities - // attributes are utilized to trigger routing decisions, such as acceptance, rejection, - // preference, or redistribution. An extended community is an 8-Bytes value. It is - // divided into two main parts. The first 2 Bytes of the community encode a type and - // sub-type fields and the last 6 Bytes carry a unique set of data in a format defined - // by the type and sub-type field. Extended communities provide a larger range for - // grouping or categorizing communities. When type is administrator_as_2octet or administrator_as_4octet, - // the valid sub types are route target and origin. The valid value for administrator_as_2octet - // and administrator_as_4octet type is either two byte AS followed by four byte local - // administrator id or four byte AS followed by two byte local administrator id. When - // type is administrator_ipv4_address the valid sub types are route target and origin. - // The valid value for administrator_ipv4_address is a four byte IPv4 address followed - // by a two byte local administrator id. When type is opaque, valid sub types are color - // and encapsulation. When sub type is color, first two bytes of the value field contain - // flags and last four bytes contains the value of the color. When sub type is encapsulation - // the first four bytes of value field are reserved and last two bytes carries the tunnel - // type from IANA's ETHER TYPES registry e.g IPv4 (protocol type = 0x0800), IPv6 (protocol - // type = 0x86dd), and MPLS (protocol type = 0x8847). When type is administrator_as_2octet_link_bandwidth - // the valid sub type is extended_bandwidth. The first two bytes of the value field - // contains the AS number and the last four bytes contains the bandwidth in IEEE floating - // point format. When type is evpn the valid subtype is mac_address. In the value field - // the low-order bit of the first byte(Flags) is defined as the Sticky/static flag and - // may be set to 1, indicating the MAC address is static and cannot move. The second - // byte is reserved and the last four bytes contain the sequence number which is used - // to ensure that PEs retain the correct MAC/IP Advertisement route when multiple updates - // occur for the same MAC address. - ExtCommunities []*BgpExtCommunity `protobuf:"bytes,8,rep,name=ext_communities,json=extCommunities,proto3" json:"ext_communities,omitempty"` - // Optional AS PATH settings. - AsPath *BgpAsPath `protobuf:"bytes,9,opt,name=as_path,json=asPath,proto3" json:"as_path,omitempty"` + // default = 00 + Value *string `protobuf:"bytes,1,opt,name=value,proto3,oneof" json:"value,omitempty"` + // Description missing in models + // default = 00 + Mask *string `protobuf:"bytes,2,opt,name=mask,proto3,oneof" json:"mask,omitempty"` + // Description missing in models + // default = False + Negate *bool `protobuf:"varint,3,opt,name=negate,proto3,oneof" json:"negate,omitempty"` } -func (x *BgpV4EthernetSegment) Reset() { - *x = BgpV4EthernetSegment{} +func (x *CaptureField) Reset() { + *x = CaptureField{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[64] + mi := &file_otg_proto_msgTypes[28] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *BgpV4EthernetSegment) String() string { +func (x *CaptureField) String() string { return protoimpl.X.MessageStringOf(x) } -func (*BgpV4EthernetSegment) ProtoMessage() {} +func (*CaptureField) ProtoMessage() {} -func (x *BgpV4EthernetSegment) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[64] +func (x *CaptureField) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[28] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -23113,103 +22864,141 @@ func (x *BgpV4EthernetSegment) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use BgpV4EthernetSegment.ProtoReflect.Descriptor instead. -func (*BgpV4EthernetSegment) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{64} +// Deprecated: Use CaptureField.ProtoReflect.Descriptor instead. +func (*CaptureField) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{28} } -func (x *BgpV4EthernetSegment) GetDfElection() *BgpEthernetSegmentDfElection { - if x != nil { - return x.DfElection +func (x *CaptureField) GetValue() string { + if x != nil && x.Value != nil { + return *x.Value } - return nil + return "" } -func (x *BgpV4EthernetSegment) GetEvis() []*BgpV4EvpnEvis { - if x != nil { - return x.Evis +func (x *CaptureField) GetMask() string { + if x != nil && x.Mask != nil { + return *x.Mask } - return nil + return "" } -func (x *BgpV4EthernetSegment) GetEsi() string { - if x != nil && x.Esi != nil { - return *x.Esi +func (x *CaptureField) GetNegate() bool { + if x != nil && x.Negate != nil { + return *x.Negate } - return "" + return false } -func (x *BgpV4EthernetSegment) GetActiveMode() BgpV4EthernetSegment_ActiveMode_Enum { - if x != nil && x.ActiveMode != nil { - return *x.ActiveMode +// Description missing in models +type CaptureEthernet struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Description missing in models + Src *CaptureField `protobuf:"bytes,1,opt,name=src,proto3" json:"src,omitempty"` + // Description missing in models + Dst *CaptureField `protobuf:"bytes,2,opt,name=dst,proto3" json:"dst,omitempty"` + // Description missing in models + EtherType *CaptureField `protobuf:"bytes,3,opt,name=ether_type,json=etherType,proto3" json:"ether_type,omitempty"` + // Description missing in models + PfcQueue *CaptureField `protobuf:"bytes,4,opt,name=pfc_queue,json=pfcQueue,proto3" json:"pfc_queue,omitempty"` +} + +func (x *CaptureEthernet) Reset() { + *x = CaptureEthernet{} + if protoimpl.UnsafeEnabled { + mi := &file_otg_proto_msgTypes[29] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } - return BgpV4EthernetSegment_ActiveMode_unspecified } -func (x *BgpV4EthernetSegment) GetEsiLabel() uint32 { - if x != nil && x.EsiLabel != nil { - return *x.EsiLabel +func (x *CaptureEthernet) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CaptureEthernet) ProtoMessage() {} + +func (x *CaptureEthernet) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[29] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms } - return 0 + return mi.MessageOf(x) } -func (x *BgpV4EthernetSegment) GetAdvanced() *BgpRouteAdvanced { +// Deprecated: Use CaptureEthernet.ProtoReflect.Descriptor instead. +func (*CaptureEthernet) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{29} +} + +func (x *CaptureEthernet) GetSrc() *CaptureField { if x != nil { - return x.Advanced + return x.Src } return nil } -func (x *BgpV4EthernetSegment) GetCommunities() []*BgpCommunity { +func (x *CaptureEthernet) GetDst() *CaptureField { if x != nil { - return x.Communities + return x.Dst } return nil } -func (x *BgpV4EthernetSegment) GetExtCommunities() []*BgpExtCommunity { +func (x *CaptureEthernet) GetEtherType() *CaptureField { if x != nil { - return x.ExtCommunities + return x.EtherType } return nil } -func (x *BgpV4EthernetSegment) GetAsPath() *BgpAsPath { +func (x *CaptureEthernet) GetPfcQueue() *CaptureField { if x != nil { - return x.AsPath + return x.PfcQueue } return nil } -// Configuration for Designated Forwarder (DF) election among the Provider Edge (PE) -// routers on the same Ethernet Segment. -type BgpEthernetSegmentDfElection struct { +// Description missing in models +type CaptureVlan struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // The DF election timer in seconds. - // default = 3 - ElectionTimer *uint32 `protobuf:"varint,1,opt,name=election_timer,json=electionTimer,proto3,oneof" json:"election_timer,omitempty"` + // Description missing in models + Priority *CaptureField `protobuf:"bytes,1,opt,name=priority,proto3" json:"priority,omitempty"` + // Description missing in models + Cfi *CaptureField `protobuf:"bytes,2,opt,name=cfi,proto3" json:"cfi,omitempty"` + // Description missing in models + Id *CaptureField `protobuf:"bytes,3,opt,name=id,proto3" json:"id,omitempty"` + // Description missing in models + Protocol *CaptureField `protobuf:"bytes,4,opt,name=protocol,proto3" json:"protocol,omitempty"` } -func (x *BgpEthernetSegmentDfElection) Reset() { - *x = BgpEthernetSegmentDfElection{} +func (x *CaptureVlan) Reset() { + *x = CaptureVlan{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[65] + mi := &file_otg_proto_msgTypes[30] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *BgpEthernetSegmentDfElection) String() string { +func (x *CaptureVlan) String() string { return protoimpl.X.MessageStringOf(x) } -func (*BgpEthernetSegmentDfElection) ProtoMessage() {} +func (*CaptureVlan) ProtoMessage() {} -func (x *BgpEthernetSegmentDfElection) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[65] +func (x *CaptureVlan) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[30] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -23220,69 +23009,92 @@ func (x *BgpEthernetSegmentDfElection) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use BgpEthernetSegmentDfElection.ProtoReflect.Descriptor instead. -func (*BgpEthernetSegmentDfElection) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{65} +// Deprecated: Use CaptureVlan.ProtoReflect.Descriptor instead. +func (*CaptureVlan) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{30} } -func (x *BgpEthernetSegmentDfElection) GetElectionTimer() uint32 { - if x != nil && x.ElectionTimer != nil { - return *x.ElectionTimer +func (x *CaptureVlan) GetPriority() *CaptureField { + if x != nil { + return x.Priority } - return 0 + return nil } -// Configuration for advanced BGP route range settings. -type BgpRouteAdvanced struct { +func (x *CaptureVlan) GetCfi() *CaptureField { + if x != nil { + return x.Cfi + } + return nil +} + +func (x *CaptureVlan) GetId() *CaptureField { + if x != nil { + return x.Id + } + return nil +} + +func (x *CaptureVlan) GetProtocol() *CaptureField { + if x != nil { + return x.Protocol + } + return nil +} + +// Description missing in models +type CaptureIpv4 struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // BGP Multi Exit Discriminator attribute sent to the peer to help in the route selection - // process. If set to true, the Multi Exit Discriminator attribute will be included - // in the route advertisement. - // default = True - IncludeMultiExitDiscriminator *bool `protobuf:"varint,3,opt,name=include_multi_exit_discriminator,json=includeMultiExitDiscriminator,proto3,oneof" json:"include_multi_exit_discriminator,omitempty"` - // The multi exit discriminator (MED) value used for route selection sent to the peer. - MultiExitDiscriminator *uint32 `protobuf:"varint,1,opt,name=multi_exit_discriminator,json=multiExitDiscriminator,proto3,oneof" json:"multi_exit_discriminator,omitempty"` - // If set to true, the Origin attribute will be included in the route advertisement. - // default = True - IncludeOrigin *bool `protobuf:"varint,4,opt,name=include_origin,json=includeOrigin,proto3,oneof" json:"include_origin,omitempty"` - // The origin attribute of a prefix can take three values: the prefix originates from - // an interior routing protocol 'igp', it originates from 'egp' or the origin is 'incomplete', - // if the prefix is learned through other means. - // default = Origin.Enum.igp - Origin *BgpRouteAdvanced_Origin_Enum `protobuf:"varint,2,opt,name=origin,proto3,enum=otg.BgpRouteAdvanced_Origin_Enum,oneof" json:"origin,omitempty"` - // BGP Local Preference attribute sent to the peer to indicate the degree of preference - // for externally learned routes. If set to true, the Local Preference attribute will - // be included in the route advertisement. This should be included only for internal - // peers. - // default = True - IncludeLocalPreference *bool `protobuf:"varint,5,opt,name=include_local_preference,json=includeLocalPreference,proto3,oneof" json:"include_local_preference,omitempty"` - // Value to be set in Local Preference attribute if include_local_preference is set - // to true. It is used for the selection of the path for the traffic leaving the AS. - // The route with the highest local preference value is preferred. - // default = 100 - LocalPreference *uint32 `protobuf:"varint,6,opt,name=local_preference,json=localPreference,proto3,oneof" json:"local_preference,omitempty"` + // Description missing in models + Version *CaptureField `protobuf:"bytes,1,opt,name=version,proto3" json:"version,omitempty"` + // Description missing in models + HeaderLength *CaptureField `protobuf:"bytes,2,opt,name=header_length,json=headerLength,proto3" json:"header_length,omitempty"` + // Description missing in models + Priority *CaptureField `protobuf:"bytes,3,opt,name=priority,proto3" json:"priority,omitempty"` + // Description missing in models + TotalLength *CaptureField `protobuf:"bytes,4,opt,name=total_length,json=totalLength,proto3" json:"total_length,omitempty"` + // Description missing in models + Identification *CaptureField `protobuf:"bytes,5,opt,name=identification,proto3" json:"identification,omitempty"` + // Description missing in models + Reserved *CaptureField `protobuf:"bytes,6,opt,name=reserved,proto3" json:"reserved,omitempty"` + // Description missing in models + DontFragment *CaptureField `protobuf:"bytes,7,opt,name=dont_fragment,json=dontFragment,proto3" json:"dont_fragment,omitempty"` + // Description missing in models + MoreFragments *CaptureField `protobuf:"bytes,8,opt,name=more_fragments,json=moreFragments,proto3" json:"more_fragments,omitempty"` + // Description missing in models + FragmentOffset *CaptureField `protobuf:"bytes,9,opt,name=fragment_offset,json=fragmentOffset,proto3" json:"fragment_offset,omitempty"` + // Description missing in models + TimeToLive *CaptureField `protobuf:"bytes,10,opt,name=time_to_live,json=timeToLive,proto3" json:"time_to_live,omitempty"` + // Description missing in models + Protocol *CaptureField `protobuf:"bytes,11,opt,name=protocol,proto3" json:"protocol,omitempty"` + // Description missing in models + HeaderChecksum *CaptureField `protobuf:"bytes,12,opt,name=header_checksum,json=headerChecksum,proto3" json:"header_checksum,omitempty"` + // Description missing in models + Src *CaptureField `protobuf:"bytes,13,opt,name=src,proto3" json:"src,omitempty"` + // Description missing in models + Dst *CaptureField `protobuf:"bytes,14,opt,name=dst,proto3" json:"dst,omitempty"` } -func (x *BgpRouteAdvanced) Reset() { - *x = BgpRouteAdvanced{} +func (x *CaptureIpv4) Reset() { + *x = CaptureIpv4{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[66] + mi := &file_otg_proto_msgTypes[31] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *BgpRouteAdvanced) String() string { +func (x *CaptureIpv4) String() string { return protoimpl.X.MessageStringOf(x) } -func (*BgpRouteAdvanced) ProtoMessage() {} +func (*CaptureIpv4) ProtoMessage() {} -func (x *BgpRouteAdvanced) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[66] +func (x *CaptureIpv4) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[31] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -23293,175 +23105,150 @@ func (x *BgpRouteAdvanced) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use BgpRouteAdvanced.ProtoReflect.Descriptor instead. -func (*BgpRouteAdvanced) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{66} +// Deprecated: Use CaptureIpv4.ProtoReflect.Descriptor instead. +func (*CaptureIpv4) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{31} } -func (x *BgpRouteAdvanced) GetIncludeMultiExitDiscriminator() bool { - if x != nil && x.IncludeMultiExitDiscriminator != nil { - return *x.IncludeMultiExitDiscriminator +func (x *CaptureIpv4) GetVersion() *CaptureField { + if x != nil { + return x.Version } - return false + return nil } -func (x *BgpRouteAdvanced) GetMultiExitDiscriminator() uint32 { - if x != nil && x.MultiExitDiscriminator != nil { - return *x.MultiExitDiscriminator +func (x *CaptureIpv4) GetHeaderLength() *CaptureField { + if x != nil { + return x.HeaderLength } - return 0 + return nil } -func (x *BgpRouteAdvanced) GetIncludeOrigin() bool { - if x != nil && x.IncludeOrigin != nil { - return *x.IncludeOrigin +func (x *CaptureIpv4) GetPriority() *CaptureField { + if x != nil { + return x.Priority } - return false + return nil } -func (x *BgpRouteAdvanced) GetOrigin() BgpRouteAdvanced_Origin_Enum { - if x != nil && x.Origin != nil { - return *x.Origin +func (x *CaptureIpv4) GetTotalLength() *CaptureField { + if x != nil { + return x.TotalLength } - return BgpRouteAdvanced_Origin_unspecified + return nil } -func (x *BgpRouteAdvanced) GetIncludeLocalPreference() bool { - if x != nil && x.IncludeLocalPreference != nil { - return *x.IncludeLocalPreference +func (x *CaptureIpv4) GetIdentification() *CaptureField { + if x != nil { + return x.Identification } - return false + return nil } -func (x *BgpRouteAdvanced) GetLocalPreference() uint32 { - if x != nil && x.LocalPreference != nil { - return *x.LocalPreference +func (x *CaptureIpv4) GetReserved() *CaptureField { + if x != nil { + return x.Reserved } - return 0 + return nil } -// BGP communities provide additional capability for tagging routes and for modifying -// BGP routing policy on upstream and downstream routers. BGP community is a 32-bit -// number which is broken into 16-bit AS number and a 16-bit custom value. -type BgpCommunity struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // The type of community AS number. - Type *BgpCommunity_Type_Enum `protobuf:"varint,1,opt,name=type,proto3,enum=otg.BgpCommunity_Type_Enum,oneof" json:"type,omitempty"` - // First two octets of 32 bit community AS number. - // default = 0 - AsNumber *uint32 `protobuf:"varint,2,opt,name=as_number,json=asNumber,proto3,oneof" json:"as_number,omitempty"` - // Last two octets of the community value. - // default = 0 - AsCustom *uint32 `protobuf:"varint,3,opt,name=as_custom,json=asCustom,proto3,oneof" json:"as_custom,omitempty"` +func (x *CaptureIpv4) GetDontFragment() *CaptureField { + if x != nil { + return x.DontFragment + } + return nil } -func (x *BgpCommunity) Reset() { - *x = BgpCommunity{} - if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[67] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) +func (x *CaptureIpv4) GetMoreFragments() *CaptureField { + if x != nil { + return x.MoreFragments } + return nil } -func (x *BgpCommunity) String() string { - return protoimpl.X.MessageStringOf(x) +func (x *CaptureIpv4) GetFragmentOffset() *CaptureField { + if x != nil { + return x.FragmentOffset + } + return nil } -func (*BgpCommunity) ProtoMessage() {} - -func (x *BgpCommunity) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[67] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms +func (x *CaptureIpv4) GetTimeToLive() *CaptureField { + if x != nil { + return x.TimeToLive } - return mi.MessageOf(x) + return nil } -// Deprecated: Use BgpCommunity.ProtoReflect.Descriptor instead. -func (*BgpCommunity) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{67} +func (x *CaptureIpv4) GetProtocol() *CaptureField { + if x != nil { + return x.Protocol + } + return nil } -func (x *BgpCommunity) GetType() BgpCommunity_Type_Enum { - if x != nil && x.Type != nil { - return *x.Type +func (x *CaptureIpv4) GetHeaderChecksum() *CaptureField { + if x != nil { + return x.HeaderChecksum } - return BgpCommunity_Type_unspecified + return nil } -func (x *BgpCommunity) GetAsNumber() uint32 { - if x != nil && x.AsNumber != nil { - return *x.AsNumber +func (x *CaptureIpv4) GetSrc() *CaptureField { + if x != nil { + return x.Src } - return 0 + return nil } -func (x *BgpCommunity) GetAsCustom() uint32 { - if x != nil && x.AsCustom != nil { - return *x.AsCustom +func (x *CaptureIpv4) GetDst() *CaptureField { + if x != nil { + return x.Dst } - return 0 + return nil } -// The Extended Communities Attribute is a transitive optional BGP attribute, with the -// Type Code 16. Community and Extended Communities attributes are utilized to trigger -// routing decisions, such as acceptance, rejection, preference, or redistribution. -// An extended community is an 8-Bytes value. It is divided into two main parts. The -// first 2 Bytes of the community encode a type and sub-type fields and the last 6 Bytes -// carry a unique set of data in a format defined by the type and sub-type field. Extended -// communities provide a larger range for grouping or categorizing communities. -type BgpExtCommunity struct { +// Description missing in models +type CaptureIpv6 struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Extended Community Type field of 1 Byte. - // - administrator_as_2octet: Two-Octet AS Specific Extended Community (RFC 4360). - // - administrator_ipv4_address: IPv4 Address Specific Extended Community (RFC 4360). - // - administrator_as_4octet: 4-Octet AS Specific Extended Community (RFC 5668). - // - opaque: Opaque Extended Community (RFC 7432). - // - evpn: EVPN Extended Community (RFC 7153). - // - administrator_as_2octet_link_bandwidth : Link Bandwidth Extended Community (RFC - // 7153). - Type *BgpExtCommunity_Type_Enum `protobuf:"varint,1,opt,name=type,proto3,enum=otg.BgpExtCommunity_Type_Enum,oneof" json:"type,omitempty"` - // Extended Community Sub Type field of 1 Byte. - // - route_target: Route Target. - // - origin: Origin. - // - extended_bandwidth: Specifies the link bandwidth. - // - color: Specifies the color value. - // - encapsulation: Specifies the Encapsulation Extended Community. - // - mac_address: Specifies the Extended community MAC address. - Subtype *BgpExtCommunity_Subtype_Enum `protobuf:"varint,2,opt,name=subtype,proto3,enum=otg.BgpExtCommunity_Subtype_Enum,oneof" json:"subtype,omitempty"` - // Extended Community value of 6 Bytes. Example - for the Opaque type and Color subtype - // value can be '0000000000c8' for the color value 200. - Value *string `protobuf:"bytes,3,opt,name=value,proto3,oneof" json:"value,omitempty"` + // Description missing in models + Version *CaptureField `protobuf:"bytes,1,opt,name=version,proto3" json:"version,omitempty"` + // Description missing in models + TrafficClass *CaptureField `protobuf:"bytes,2,opt,name=traffic_class,json=trafficClass,proto3" json:"traffic_class,omitempty"` + // Description missing in models + FlowLabel *CaptureField `protobuf:"bytes,3,opt,name=flow_label,json=flowLabel,proto3" json:"flow_label,omitempty"` + // Description missing in models + PayloadLength *CaptureField `protobuf:"bytes,4,opt,name=payload_length,json=payloadLength,proto3" json:"payload_length,omitempty"` + // Description missing in models + NextHeader *CaptureField `protobuf:"bytes,5,opt,name=next_header,json=nextHeader,proto3" json:"next_header,omitempty"` + // Description missing in models + HopLimit *CaptureField `protobuf:"bytes,6,opt,name=hop_limit,json=hopLimit,proto3" json:"hop_limit,omitempty"` + // Description missing in models + Src *CaptureField `protobuf:"bytes,7,opt,name=src,proto3" json:"src,omitempty"` + // Description missing in models + Dst *CaptureField `protobuf:"bytes,8,opt,name=dst,proto3" json:"dst,omitempty"` } -func (x *BgpExtCommunity) Reset() { - *x = BgpExtCommunity{} +func (x *CaptureIpv6) Reset() { + *x = CaptureIpv6{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[68] + mi := &file_otg_proto_msgTypes[32] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *BgpExtCommunity) String() string { +func (x *CaptureIpv6) String() string { return protoimpl.X.MessageStringOf(x) } -func (*BgpExtCommunity) ProtoMessage() {} +func (*CaptureIpv6) ProtoMessage() {} -func (x *BgpExtCommunity) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[68] +func (x *CaptureIpv6) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[32] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -23472,137 +23259,114 @@ func (x *BgpExtCommunity) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use BgpExtCommunity.ProtoReflect.Descriptor instead. -func (*BgpExtCommunity) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{68} +// Deprecated: Use CaptureIpv6.ProtoReflect.Descriptor instead. +func (*CaptureIpv6) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{32} } -func (x *BgpExtCommunity) GetType() BgpExtCommunity_Type_Enum { - if x != nil && x.Type != nil { - return *x.Type +func (x *CaptureIpv6) GetVersion() *CaptureField { + if x != nil { + return x.Version } - return BgpExtCommunity_Type_unspecified + return nil } -func (x *BgpExtCommunity) GetSubtype() BgpExtCommunity_Subtype_Enum { - if x != nil && x.Subtype != nil { - return *x.Subtype +func (x *CaptureIpv6) GetTrafficClass() *CaptureField { + if x != nil { + return x.TrafficClass } - return BgpExtCommunity_Subtype_unspecified + return nil } -func (x *BgpExtCommunity) GetValue() string { - if x != nil && x.Value != nil { - return *x.Value +func (x *CaptureIpv6) GetFlowLabel() *CaptureField { + if x != nil { + return x.FlowLabel } - return "" -} - -// This attribute identifies the autonomous systems through which routing information -// carried in this UPDATE message has passed. This contains the configuration of how -// to include the Local AS in the AS path attribute of the MP REACH NLRI. It also contains -// optional configuration of additional AS Path Segments that can be included in the -// AS Path attribute. The AS Path consists of a Set or Sequence of Autonomous Systems -// (AS) numbers that a routing information passes through to reach the destination. -type BgpAsPath struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // Defines how the Local AS should be included in the MP REACH NLRI. For iBGP sessions, - // Do Not Include Local AS must be chosen. For eBGP sessions, any choice other than - // Do Not Include Local AS can be chosen. - // default = AsSetMode.Enum.do_not_include_local_as - AsSetMode *BgpAsPath_AsSetMode_Enum `protobuf:"varint,1,opt,name=as_set_mode,json=asSetMode,proto3,enum=otg.BgpAsPath_AsSetMode_Enum,oneof" json:"as_set_mode,omitempty"` - // The additional AS path segments to be added in the NLRI. By default, an empty AS - // path is always included and the local AS is added to it as per the value of 'as_set_mode' - // attribute. - Segments []*BgpAsPathSegment `protobuf:"bytes,2,rep,name=segments,proto3" json:"segments,omitempty"` + return nil } -func (x *BgpAsPath) Reset() { - *x = BgpAsPath{} - if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[69] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) +func (x *CaptureIpv6) GetPayloadLength() *CaptureField { + if x != nil { + return x.PayloadLength } + return nil } -func (x *BgpAsPath) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*BgpAsPath) ProtoMessage() {} - -func (x *BgpAsPath) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[69] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms +func (x *CaptureIpv6) GetNextHeader() *CaptureField { + if x != nil { + return x.NextHeader } - return mi.MessageOf(x) + return nil } -// Deprecated: Use BgpAsPath.ProtoReflect.Descriptor instead. -func (*BgpAsPath) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{69} +func (x *CaptureIpv6) GetHopLimit() *CaptureField { + if x != nil { + return x.HopLimit + } + return nil } -func (x *BgpAsPath) GetAsSetMode() BgpAsPath_AsSetMode_Enum { - if x != nil && x.AsSetMode != nil { - return *x.AsSetMode +func (x *CaptureIpv6) GetSrc() *CaptureField { + if x != nil { + return x.Src } - return BgpAsPath_AsSetMode_unspecified + return nil } -func (x *BgpAsPath) GetSegments() []*BgpAsPathSegment { +func (x *CaptureIpv6) GetDst() *CaptureField { if x != nil { - return x.Segments + return x.Dst } return nil } -// Configuration for a single BGP AS path segment -type BgpAsPathSegment struct { +// A container for emulated interfaces, loopback interfaces and protocol configurations. +type Device struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // AS sequence is the most common type of AS_PATH, it contains the list of ASNs starting - // with the most recent ASN being added read from left to right. - // The other three AS_PATH types are used for Confederations - AS_SET is the type of - // AS_PATH attribute that summarizes routes using using the aggregate-address command, - // allowing AS_PATHs to be summarized in the update as well. - AS_CONFED_SEQ gives - // the list of ASNs in the path starting with the most recent ASN to be added reading - // left to right - AS_CONFED_SET will allow summarization of multiple AS PATHs to be - // sent in BGP Updates. - // default = Type.Enum.as_seq - Type *BgpAsPathSegment_Type_Enum `protobuf:"varint,1,opt,name=type,proto3,enum=otg.BgpAsPathSegment_Type_Enum,oneof" json:"type,omitempty"` - // The AS numbers in this AS path segment. - AsNumbers []uint32 `protobuf:"varint,2,rep,packed,name=as_numbers,json=asNumbers,proto3" json:"as_numbers,omitempty"` + // Ethernet configuration for one or more emulated network interfaces. + Ethernets []*DeviceEthernet `protobuf:"bytes,1,rep,name=ethernets,proto3" json:"ethernets,omitempty"` + // IPv4 Loopback interface that can be attached to an Ethernet in the same device or + // to an Ethernet in another device. + Ipv4Loopbacks []*DeviceIpv4Loopback `protobuf:"bytes,2,rep,name=ipv4_loopbacks,json=ipv4Loopbacks,proto3" json:"ipv4_loopbacks,omitempty"` + // IPv6 Loopback interface that can be attached to an Ethernet in the same device or + // to an Ethernet in another device. + Ipv6Loopbacks []*DeviceIpv6Loopback `protobuf:"bytes,3,rep,name=ipv6_loopbacks,json=ipv6Loopbacks,proto3" json:"ipv6_loopbacks,omitempty"` + // The properties of an IS-IS router and its children, such as IS-IS interfaces and + // route ranges. + Isis *DeviceIsisRouter `protobuf:"bytes,4,opt,name=isis,proto3" json:"isis,omitempty"` + // The properties of BGP router and its children, such as BGPv4, BGPv6 peers and their + // route ranges. + Bgp *DeviceBgpRouter `protobuf:"bytes,5,opt,name=bgp,proto3" json:"bgp,omitempty"` + // Configuration of VXLAN tunnel interfaces RFC Ref: https://datatracker.ietf.org/doc/html/rfc7348 + Vxlan *DeviceVxlan `protobuf:"bytes,6,opt,name=vxlan,proto3" json:"vxlan,omitempty"` + // Globally unique name of an object. It also serves as the primary key for arrays of + // objects. + // required = true + Name *string `protobuf:"bytes,7,opt,name=name,proto3,oneof" json:"name,omitempty"` + // The properties of an RSVP router and its children. + Rsvp *DeviceRsvp `protobuf:"bytes,8,opt,name=rsvp,proto3" json:"rsvp,omitempty"` } -func (x *BgpAsPathSegment) Reset() { - *x = BgpAsPathSegment{} +func (x *Device) Reset() { + *x = Device{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[70] + mi := &file_otg_proto_msgTypes[33] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *BgpAsPathSegment) String() string { +func (x *Device) String() string { return protoimpl.X.MessageStringOf(x) } -func (*BgpAsPathSegment) ProtoMessage() {} +func (*Device) ProtoMessage() {} -func (x *BgpAsPathSegment) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[70] +func (x *Device) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[33] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -23613,177 +23377,98 @@ func (x *BgpAsPathSegment) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use BgpAsPathSegment.ProtoReflect.Descriptor instead. -func (*BgpAsPathSegment) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{70} +// Deprecated: Use Device.ProtoReflect.Descriptor instead. +func (*Device) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{33} } -func (x *BgpAsPathSegment) GetType() BgpAsPathSegment_Type_Enum { - if x != nil && x.Type != nil { - return *x.Type +func (x *Device) GetEthernets() []*DeviceEthernet { + if x != nil { + return x.Ethernets } - return BgpAsPathSegment_Type_unspecified + return nil } -func (x *BgpAsPathSegment) GetAsNumbers() []uint32 { +func (x *Device) GetIpv4Loopbacks() []*DeviceIpv4Loopback { if x != nil { - return x.AsNumbers + return x.Ipv4Loopbacks } return nil } -// This contains a list of different flavors of EVPN. -// For example EVPN over VXLAN or EVPN over MPLS etc to be configured per Ethernet segment. -// -// Need to instantiate correct type of EVPN instance as per requirement. -type BgpV4EvpnEvis struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // Description missing in models - // default = Choice.Enum.evi_vxlan - Choice *BgpV4EvpnEvis_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.BgpV4EvpnEvis_Choice_Enum,oneof" json:"choice,omitempty"` - // EVPN VXLAN instance to be configured per Ethernet Segment. - EviVxlan *BgpV4EviVxlan `protobuf:"bytes,2,opt,name=evi_vxlan,json=eviVxlan,proto3" json:"evi_vxlan,omitempty"` +func (x *Device) GetIpv6Loopbacks() []*DeviceIpv6Loopback { + if x != nil { + return x.Ipv6Loopbacks + } + return nil } -func (x *BgpV4EvpnEvis) Reset() { - *x = BgpV4EvpnEvis{} - if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[71] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) +func (x *Device) GetIsis() *DeviceIsisRouter { + if x != nil { + return x.Isis } + return nil } -func (x *BgpV4EvpnEvis) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*BgpV4EvpnEvis) ProtoMessage() {} - -func (x *BgpV4EvpnEvis) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[71] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms +func (x *Device) GetBgp() *DeviceBgpRouter { + if x != nil { + return x.Bgp } - return mi.MessageOf(x) + return nil } -// Deprecated: Use BgpV4EvpnEvis.ProtoReflect.Descriptor instead. -func (*BgpV4EvpnEvis) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{71} +func (x *Device) GetVxlan() *DeviceVxlan { + if x != nil { + return x.Vxlan + } + return nil } -func (x *BgpV4EvpnEvis) GetChoice() BgpV4EvpnEvis_Choice_Enum { - if x != nil && x.Choice != nil { - return *x.Choice +func (x *Device) GetName() string { + if x != nil && x.Name != nil { + return *x.Name } - return BgpV4EvpnEvis_Choice_unspecified + return "" } -func (x *BgpV4EvpnEvis) GetEviVxlan() *BgpV4EviVxlan { +func (x *Device) GetRsvp() *DeviceRsvp { if x != nil { - return x.EviVxlan + return x.Rsvp } return nil } -// Configuration for BGP EVPN EVI. Advertises following routes - -// -// # Type 3 - Inclusive Multicast Ethernet Tag Route -// -// Type 1 - Ethernet Auto-discovery Route (Per EVI) -// -// Type 1 - Ethernet Auto-discovery Route (Per ES) -type BgpV4EviVxlan struct { +// Common options that apply to all configured protocols and interfaces. +type ProtocolOptions struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // This contains the list of Broadcast Domains to be configured per EVI. - BroadcastDomains []*BgpV4EviVxlanBroadcastDomain `protobuf:"bytes,1,rep,name=broadcast_domains,json=broadcastDomains,proto3" json:"broadcast_domains,omitempty"` - // This model only supports Ingress Replication - // default = ReplicationType.Enum.ingress_replication - ReplicationType *BgpV4EviVxlan_ReplicationType_Enum `protobuf:"varint,2,opt,name=replication_type,json=replicationType,proto3,enum=otg.BgpV4EviVxlan_ReplicationType_Enum,oneof" json:"replication_type,omitempty"` - // Downstream assigned VNI to be carried as Part of P-Multicast Service Interface Tunnel - // attribute (PMSI Tunnel Attribute) in Type 3 Inclusive Multicast Ethernet Tag Route. - // default = 16 - PmsiLabel *uint32 `protobuf:"varint,3,opt,name=pmsi_label,json=pmsiLabel,proto3,oneof" json:"pmsi_label,omitempty"` - // The Auto-discovery Route label (AD label) value, which gets advertised in the Ethernet - // Auto-discovery Route per - // default = 0 - AdLabel *uint32 `protobuf:"varint,4,opt,name=ad_label,json=adLabel,proto3,oneof" json:"ad_label,omitempty"` - // Colon separated Extended Community value of 6 Bytes - AS number: Value identifying - // an EVI. Example - for the as_2octet 60005:100. - RouteDistinguisher *BgpRouteDistinguisher `protobuf:"bytes,5,opt,name=route_distinguisher,json=routeDistinguisher,proto3" json:"route_distinguisher,omitempty"` - // List of Layer 2 Virtual Network Identifier (L2VNI) export targets associated with - // this EVI. - RouteTargetExport []*BgpRouteTarget `protobuf:"bytes,6,rep,name=route_target_export,json=routeTargetExport,proto3" json:"route_target_export,omitempty"` - // List of L2VNI import targets associated with this EVI. - RouteTargetImport []*BgpRouteTarget `protobuf:"bytes,7,rep,name=route_target_import,json=routeTargetImport,proto3" json:"route_target_import,omitempty"` - // List of Layer 3 Virtual Network Identifier (L3VNI) Export Route Targets. - L3RouteTargetExport []*BgpRouteTarget `protobuf:"bytes,8,rep,name=l3_route_target_export,json=l3RouteTargetExport,proto3" json:"l3_route_target_export,omitempty"` - // List of L3VNI Import Route Targets. - L3RouteTargetImport []*BgpRouteTarget `protobuf:"bytes,9,rep,name=l3_route_target_import,json=l3RouteTargetImport,proto3" json:"l3_route_target_import,omitempty"` - // Description missing in models - Advanced *BgpRouteAdvanced `protobuf:"bytes,10,opt,name=advanced,proto3" json:"advanced,omitempty"` - // Optional community settings. - Communities []*BgpCommunity `protobuf:"bytes,11,rep,name=communities,proto3" json:"communities,omitempty"` - // Optional Extended Community settings. The Extended Communities Attribute is a transitive - // optional BGP attribute, with the Type Code 16. Community and Extended Communities - // attributes are utilized to trigger routing decisions, such as acceptance, rejection, - // preference, or redistribution. An extended community is an 8-Bytes value. It is - // divided into two main parts. The first 2 Bytes of the community encode a type and - // sub-type fields and the last 6 Bytes carry a unique set of data in a format defined - // by the type and sub-type field. Extended communities provide a larger range for - // grouping or categorizing communities. When type is administrator_as_2octet or administrator_as_4octet, - // the valid sub types are route target and origin. The valid value for administrator_as_2octet - // and administrator_as_4octet type is either two byte AS followed by four byte local - // administrator id or four byte AS followed by two byte local administrator id. When - // type is administrator_ipv4_address the valid sub types are route target and origin. - // The valid value for administrator_ipv4_address is a four byte IPv4 address followed - // by a two byte local administrator id. When type is opaque, valid sub types are color - // and encapsulation. When sub type is color, first two bytes of the value field contain - // flags and last four bytes contains the value of the color. When sub type is encapsulation - // the first four bytes of value field are reserved and last two bytes carries the tunnel - // type from IANA's ETHER TYPES registry e.g IPv4 (protocol type = 0x0800), IPv6 (protocol - // type = 0x86dd), and MPLS (protocol type = 0x8847). When type is administrator_as_2octet_link_bandwidth - // the valid sub type is extended_bandwidth. The first two bytes of the value field - // contains the AS number and the last four bytes contains the bandwidth in IEEE floating - // point format. When type is evpn the valid subtype is mac_address. In the value field - // the low-order bit of the first byte(Flags) is defined as the Sticky/static flag and - // may be set to 1, indicating the MAC address is static and cannot move. The second - // byte is reserved and the last four bytes contain the sequence number which is used - // to ensure that PEs retain the correct MAC/IP Advertisement route when multiple updates - // occur for the same MAC address. - ExtCommunities []*BgpExtCommunity `protobuf:"bytes,12,rep,name=ext_communities,json=extCommunities,proto3" json:"ext_communities,omitempty"` - // Optional AS PATH settings. - AsPath *BgpAsPath `protobuf:"bytes,13,opt,name=as_path,json=asPath,proto3" json:"as_path,omitempty"` + // When set to true, all underlying resources for configured protocols and interfaces + // shall be created and corresponding protocol session negotiation shall be initiated. + // Otherwise, when set to false, corresponding protocol session negotiation will need + // to be initiated using a separate set_protocol_state API call. + // default = True + AutoStartAll *bool `protobuf:"varint,1,opt,name=auto_start_all,json=autoStartAll,proto3,oneof" json:"auto_start_all,omitempty"` } -func (x *BgpV4EviVxlan) Reset() { - *x = BgpV4EviVxlan{} +func (x *ProtocolOptions) Reset() { + *x = ProtocolOptions{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[72] + mi := &file_otg_proto_msgTypes[34] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *BgpV4EviVxlan) String() string { +func (x *ProtocolOptions) String() string { return protoimpl.X.MessageStringOf(x) } -func (*BgpV4EviVxlan) ProtoMessage() {} +func (*ProtocolOptions) ProtoMessage() {} -func (x *BgpV4EviVxlan) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[72] +func (x *ProtocolOptions) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[34] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -23794,138 +23479,175 @@ func (x *BgpV4EviVxlan) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use BgpV4EviVxlan.ProtoReflect.Descriptor instead. -func (*BgpV4EviVxlan) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{72} +// Deprecated: Use ProtocolOptions.ProtoReflect.Descriptor instead. +func (*ProtocolOptions) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{34} } -func (x *BgpV4EviVxlan) GetBroadcastDomains() []*BgpV4EviVxlanBroadcastDomain { - if x != nil { - return x.BroadcastDomains +func (x *ProtocolOptions) GetAutoStartAll() bool { + if x != nil && x.AutoStartAll != nil { + return *x.AutoStartAll } - return nil + return false } -func (x *BgpV4EviVxlan) GetReplicationType() BgpV4EviVxlan_ReplicationType_Enum { - if x != nil && x.ReplicationType != nil { - return *x.ReplicationType - } - return BgpV4EviVxlan_ReplicationType_unspecified +// A container of properties for an ISIS router and its interfaces. +type DeviceIsisRouter struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // This contains the properties of a Multi-Instance-capable routers or MI-RTR. Each + // router can emulate one ISIS instance at a time. + Instance *DeviceIsisMultiInstance `protobuf:"bytes,1,opt,name=instance,proto3" json:"instance,omitempty"` + // The System ID for this emulated ISIS router, e.g. 640100010000. + // required = true + SystemId *string `protobuf:"bytes,2,opt,name=system_id,json=systemId,proto3,oneof" json:"system_id,omitempty"` + // List of ISIS interfaces for this router. + Interfaces []*IsisInterface `protobuf:"bytes,3,rep,name=interfaces,proto3" json:"interfaces,omitempty"` + // Contains basic properties of an ISIS Router. + Basic *IsisBasic `protobuf:"bytes,4,opt,name=basic,proto3" json:"basic,omitempty"` + // Contains advance properties of an ISIS Router.. + Advanced *IsisAdvanced `protobuf:"bytes,5,opt,name=advanced,proto3" json:"advanced,omitempty"` + // ISIS Router authentication properties. + RouterAuth *IsisAuthentication `protobuf:"bytes,6,opt,name=router_auth,json=routerAuth,proto3" json:"router_auth,omitempty"` + // Emulated ISIS IPv4 routes. + V4Routes []*IsisV4RouteRange `protobuf:"bytes,7,rep,name=v4_routes,json=v4Routes,proto3" json:"v4_routes,omitempty"` + // Emulated ISIS IPv6 routes. + V6Routes []*IsisV6RouteRange `protobuf:"bytes,8,rep,name=v6_routes,json=v6Routes,proto3" json:"v6_routes,omitempty"` + // Globally unique name of an object. It also serves as the primary key for arrays of + // objects. + // required = true + Name *string `protobuf:"bytes,9,opt,name=name,proto3,oneof" json:"name,omitempty"` } -func (x *BgpV4EviVxlan) GetPmsiLabel() uint32 { - if x != nil && x.PmsiLabel != nil { - return *x.PmsiLabel +func (x *DeviceIsisRouter) Reset() { + *x = DeviceIsisRouter{} + if protoimpl.UnsafeEnabled { + mi := &file_otg_proto_msgTypes[35] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } - return 0 } -func (x *BgpV4EviVxlan) GetAdLabel() uint32 { - if x != nil && x.AdLabel != nil { - return *x.AdLabel - } - return 0 +func (x *DeviceIsisRouter) String() string { + return protoimpl.X.MessageStringOf(x) } -func (x *BgpV4EviVxlan) GetRouteDistinguisher() *BgpRouteDistinguisher { - if x != nil { - return x.RouteDistinguisher +func (*DeviceIsisRouter) ProtoMessage() {} + +func (x *DeviceIsisRouter) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[35] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms } - return nil + return mi.MessageOf(x) } -func (x *BgpV4EviVxlan) GetRouteTargetExport() []*BgpRouteTarget { +// Deprecated: Use DeviceIsisRouter.ProtoReflect.Descriptor instead. +func (*DeviceIsisRouter) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{35} +} + +func (x *DeviceIsisRouter) GetInstance() *DeviceIsisMultiInstance { if x != nil { - return x.RouteTargetExport + return x.Instance } return nil } -func (x *BgpV4EviVxlan) GetRouteTargetImport() []*BgpRouteTarget { - if x != nil { - return x.RouteTargetImport +func (x *DeviceIsisRouter) GetSystemId() string { + if x != nil && x.SystemId != nil { + return *x.SystemId } - return nil + return "" } -func (x *BgpV4EviVxlan) GetL3RouteTargetExport() []*BgpRouteTarget { +func (x *DeviceIsisRouter) GetInterfaces() []*IsisInterface { if x != nil { - return x.L3RouteTargetExport + return x.Interfaces } return nil } -func (x *BgpV4EviVxlan) GetL3RouteTargetImport() []*BgpRouteTarget { +func (x *DeviceIsisRouter) GetBasic() *IsisBasic { if x != nil { - return x.L3RouteTargetImport + return x.Basic } return nil } -func (x *BgpV4EviVxlan) GetAdvanced() *BgpRouteAdvanced { +func (x *DeviceIsisRouter) GetAdvanced() *IsisAdvanced { if x != nil { return x.Advanced } return nil } -func (x *BgpV4EviVxlan) GetCommunities() []*BgpCommunity { +func (x *DeviceIsisRouter) GetRouterAuth() *IsisAuthentication { if x != nil { - return x.Communities + return x.RouterAuth } return nil } -func (x *BgpV4EviVxlan) GetExtCommunities() []*BgpExtCommunity { +func (x *DeviceIsisRouter) GetV4Routes() []*IsisV4RouteRange { if x != nil { - return x.ExtCommunities + return x.V4Routes } return nil } -func (x *BgpV4EviVxlan) GetAsPath() *BgpAsPath { +func (x *DeviceIsisRouter) GetV6Routes() []*IsisV6RouteRange { if x != nil { - return x.AsPath + return x.V6Routes } return nil } -// Configuration for Broadcast Domains per EVI. -type BgpV4EviVxlanBroadcastDomain struct { +func (x *DeviceIsisRouter) GetName() string { + if x != nil && x.Name != nil { + return *x.Name + } + return "" +} + +// This container properties of an Multi-Instance-capable router (MI-RTR). +type DeviceIsisMultiInstance struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // This contains the list of Customer MAC/IP Ranges to be configured per Broadcast Domain. - // - // Advertises following route - - // Type 2 - MAC/IP Advertisement Route. - CmacIpRange []*BgpCMacIpRange `protobuf:"bytes,1,rep,name=cmac_ip_range,json=cmacIpRange,proto3" json:"cmac_ip_range,omitempty"` - // The Ethernet Tag ID of the Broadcast Domain. - // default = 0 - EthernetTagId *uint32 `protobuf:"varint,2,opt,name=ethernet_tag_id,json=ethernetTagId,proto3,oneof" json:"ethernet_tag_id,omitempty"` - // VLAN-Aware service to be enabled or disabled. - // default = False - VlanAwareService *bool `protobuf:"varint,3,opt,name=vlan_aware_service,json=vlanAwareService,proto3,oneof" json:"vlan_aware_service,omitempty"` + // Instance Identifier (IID) TLV will associate a PDU with an ISIS instance by using + // a unique 16-bit number and including one or more Instance-Specific Topology Identifiers + // (ITIDs). + // default = 1 + Iid *uint32 `protobuf:"varint,1,opt,name=iid,proto3,oneof" json:"iid,omitempty"` + // This contains one or more ITIDs that will be advertised in IID TLV. + Itids []uint32 `protobuf:"varint,2,rep,packed,name=itids,proto3" json:"itids,omitempty"` } -func (x *BgpV4EviVxlanBroadcastDomain) Reset() { - *x = BgpV4EviVxlanBroadcastDomain{} +func (x *DeviceIsisMultiInstance) Reset() { + *x = DeviceIsisMultiInstance{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[73] + mi := &file_otg_proto_msgTypes[36] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *BgpV4EviVxlanBroadcastDomain) String() string { +func (x *DeviceIsisMultiInstance) String() string { return protoimpl.X.MessageStringOf(x) } -func (*BgpV4EviVxlanBroadcastDomain) ProtoMessage() {} +func (*DeviceIsisMultiInstance) ProtoMessage() {} -func (x *BgpV4EviVxlanBroadcastDomain) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[73] +func (x *DeviceIsisMultiInstance) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[36] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -23936,116 +23658,89 @@ func (x *BgpV4EviVxlanBroadcastDomain) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use BgpV4EviVxlanBroadcastDomain.ProtoReflect.Descriptor instead. -func (*BgpV4EviVxlanBroadcastDomain) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{73} -} - -func (x *BgpV4EviVxlanBroadcastDomain) GetCmacIpRange() []*BgpCMacIpRange { - if x != nil { - return x.CmacIpRange - } - return nil +// Deprecated: Use DeviceIsisMultiInstance.ProtoReflect.Descriptor instead. +func (*DeviceIsisMultiInstance) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{36} } -func (x *BgpV4EviVxlanBroadcastDomain) GetEthernetTagId() uint32 { - if x != nil && x.EthernetTagId != nil { - return *x.EthernetTagId +func (x *DeviceIsisMultiInstance) GetIid() uint32 { + if x != nil && x.Iid != nil { + return *x.Iid } return 0 } -func (x *BgpV4EviVxlanBroadcastDomain) GetVlanAwareService() bool { - if x != nil && x.VlanAwareService != nil { - return *x.VlanAwareService +func (x *DeviceIsisMultiInstance) GetItids() []uint32 { + if x != nil { + return x.Itids } - return false + return nil } -// Configuration for MAC/IP Ranges per Broadcast Domain. -// -// Advertises following route - -// -// Type 2 - MAC/IP Advertisement Route. -type BgpCMacIpRange struct { +// Configuration for single ISIS interface. +type IsisInterface struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Host MAC address range per Broadcast Domain. - MacAddresses *MACRouteAddress `protobuf:"bytes,1,opt,name=mac_addresses,json=macAddresses,proto3" json:"mac_addresses,omitempty"` - // Layer 2 Virtual Network Identifier (L2VNI) to be advertised with MAC/IP Advertisement - // Route (Type 2) - // default = 0 - L2Vni *uint32 `protobuf:"varint,2,opt,name=l2vni,proto3,oneof" json:"l2vni,omitempty"` - // Host IPv4 address range per Broadcast Domain. - Ipv4Addresses *V4RouteAddress `protobuf:"bytes,3,opt,name=ipv4_addresses,json=ipv4Addresses,proto3" json:"ipv4_addresses,omitempty"` - // Host IPv6 address range per Broadcast Domain. - Ipv6Addresses *V6RouteAddress `protobuf:"bytes,4,opt,name=ipv6_addresses,json=ipv6Addresses,proto3" json:"ipv6_addresses,omitempty"` - // Layer 3 Virtual Network Identifier (L3VNI) to be advertised with MAC/IP Advertisement - // Route (Type 2). - // default = 0 - L3Vni *uint32 `protobuf:"varint,5,opt,name=l3vni,proto3,oneof" json:"l3vni,omitempty"` - // Include default Gateway Extended Community in MAC/IP Advertisement Route (Type 2). - // default = False - IncludeDefaultGateway *bool `protobuf:"varint,6,opt,name=include_default_gateway,json=includeDefaultGateway,proto3,oneof" json:"include_default_gateway,omitempty"` - // Description missing in models - Advanced *BgpRouteAdvanced `protobuf:"bytes,7,opt,name=advanced,proto3" json:"advanced,omitempty"` - // Optional community settings. - Communities []*BgpCommunity `protobuf:"bytes,8,rep,name=communities,proto3" json:"communities,omitempty"` - // Optional Extended Community settings. The Extended Communities Attribute is a transitive - // optional BGP attribute, with the Type Code 16. Community and Extended Communities - // attributes are utilized to trigger routing decisions, such as acceptance, rejection, - // preference, or redistribution. An extended community is an 8-Bytes value. It is - // divided into two main parts. The first 2 Bytes of the community encode a type and - // sub-type fields and the last 6 Bytes carry a unique set of data in a format defined - // by the type and sub-type field. Extended communities provide a larger range for - // grouping or categorizing communities. When type is administrator_as_2octet or administrator_as_4octet, - // the valid sub types are route target and origin. The valid value for administrator_as_2octet - // and administrator_as_4octet type is either two byte AS followed by four byte local - // administrator id or four byte AS followed by two byte local administrator id. When - // type is administrator_ipv4_address the valid sub types are route target and origin. - // The valid value for administrator_ipv4_address is a four byte IPv4 address followed - // by a two byte local administrator id. When type is opaque, valid sub types are color - // and encapsulation. When sub type is color, first two bytes of the value field contain - // flags and last four bytes contains the value of the color. When sub type is encapsulation - // the first four bytes of value field are reserved and last two bytes carries the tunnel - // type from IANA's ETHER TYPES registry e.g IPv4 (protocol type = 0x0800), IPv6 (protocol - // type = 0x86dd), and MPLS (protocol type = 0x8847). When type is administrator_as_2octet_link_bandwidth - // the valid sub type is extended_bandwidth. The first two bytes of the value field - // contains the AS number and the last four bytes contains the bandwidth in IEEE floating - // point format. When type is evpn the valid subtype is mac_address. In the value field - // the low-order bit of the first byte(Flags) is defined as the Sticky/static flag and - // may be set to 1, indicating the MAC address is static and cannot move. The second - // byte is reserved and the last four bytes contain the sequence number which is used - // to ensure that PEs retain the correct MAC/IP Advertisement route when multiple updates - // occur for the same MAC address. - ExtCommunities []*BgpExtCommunity `protobuf:"bytes,9,rep,name=ext_communities,json=extCommunities,proto3" json:"ext_communities,omitempty"` - // Optional AS PATH settings. - AsPath *BgpAsPath `protobuf:"bytes,10,opt,name=as_path,json=asPath,proto3" json:"as_path,omitempty"` + // The unique name of the Ethernet interface on which ISIS is running. Two ISIS interfaces + // cannot share the same Ethernet. + // + // x-constraint: + // - /components/schemas/Device.Ethernet/properties/name + // + // required = true + EthName *string `protobuf:"bytes,1,opt,name=eth_name,json=ethName,proto3,oneof" json:"eth_name,omitempty"` + // The default metric cost for the interface. + // default = 10 + Metric *uint32 `protobuf:"varint,2,opt,name=metric,proto3,oneof" json:"metric,omitempty"` + // The type of network link. + // default = NetworkType.Enum.broadcast + NetworkType *IsisInterface_NetworkType_Enum `protobuf:"varint,3,opt,name=network_type,json=networkType,proto3,enum=otg.IsisInterface_NetworkType_Enum,oneof" json:"network_type,omitempty"` + // This indicates whether this router is participating in Level-1 (L1), + // Level-2 (L2) or both L1 and L2 domains on this interface. + // default = LevelType.Enum.level_2 + LevelType *IsisInterface_LevelType_Enum `protobuf:"varint,4,opt,name=level_type,json=levelType,proto3,enum=otg.IsisInterface_LevelType_Enum,oneof" json:"level_type,omitempty"` + // Settings of Level 1 Hello. + L1Settings *IsisInterfaceLevel `protobuf:"bytes,5,opt,name=l1_settings,json=l1Settings,proto3" json:"l1_settings,omitempty"` + // Settings of Level 2 Hello. + L2Settings *IsisInterfaceLevel `protobuf:"bytes,6,opt,name=l2_settings,json=l2Settings,proto3" json:"l2_settings,omitempty"` + // Contains the properties of multiple topologies. + MultiTopologyIds []*IsisMT `protobuf:"bytes,7,rep,name=multi_topology_ids,json=multiTopologyIds,proto3" json:"multi_topology_ids,omitempty"` + // Contains a list of Traffic Engineering attributes. + TrafficEngineering []*LinkStateTE `protobuf:"bytes,8,rep,name=traffic_engineering,json=trafficEngineering,proto3" json:"traffic_engineering,omitempty"` + // The Circuit authentication method used for the interfaces on this emulated ISIS v4/v6 + // router. + Authentication *IsisInterfaceAuthentication `protobuf:"bytes,9,opt,name=authentication,proto3" json:"authentication,omitempty"` + // Optional container for advanced interface properties. + Advanced *IsisInterfaceAdvanced `protobuf:"bytes,10,opt,name=advanced,proto3" json:"advanced,omitempty"` + // Link protection on the ISIS link between two interfaces. + LinkProtection *IsisInterfaceLinkProtection `protobuf:"bytes,11,opt,name=link_protection,json=linkProtection,proto3" json:"link_protection,omitempty"` + // This contains list of SRLG values for the link between two interfaces. + SrlgValues []uint32 `protobuf:"varint,12,rep,packed,name=srlg_values,json=srlgValues,proto3" json:"srlg_values,omitempty"` // Globally unique name of an object. It also serves as the primary key for arrays of // objects. // required = true - Name *string `protobuf:"bytes,11,opt,name=name,proto3,oneof" json:"name,omitempty"` + Name *string `protobuf:"bytes,13,opt,name=name,proto3,oneof" json:"name,omitempty"` } -func (x *BgpCMacIpRange) Reset() { - *x = BgpCMacIpRange{} +func (x *IsisInterface) Reset() { + *x = IsisInterface{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[74] + mi := &file_otg_proto_msgTypes[37] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *BgpCMacIpRange) String() string { +func (x *IsisInterface) String() string { return protoimpl.X.MessageStringOf(x) } -func (*BgpCMacIpRange) ProtoMessage() {} +func (*IsisInterface) ProtoMessage() {} -func (x *BgpCMacIpRange) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[74] +func (x *IsisInterface) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[37] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -24056,125 +23751,136 @@ func (x *BgpCMacIpRange) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use BgpCMacIpRange.ProtoReflect.Descriptor instead. -func (*BgpCMacIpRange) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{74} +// Deprecated: Use IsisInterface.ProtoReflect.Descriptor instead. +func (*IsisInterface) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{37} } -func (x *BgpCMacIpRange) GetMacAddresses() *MACRouteAddress { - if x != nil { - return x.MacAddresses +func (x *IsisInterface) GetEthName() string { + if x != nil && x.EthName != nil { + return *x.EthName } - return nil + return "" } -func (x *BgpCMacIpRange) GetL2Vni() uint32 { - if x != nil && x.L2Vni != nil { - return *x.L2Vni +func (x *IsisInterface) GetMetric() uint32 { + if x != nil && x.Metric != nil { + return *x.Metric } return 0 } -func (x *BgpCMacIpRange) GetIpv4Addresses() *V4RouteAddress { +func (x *IsisInterface) GetNetworkType() IsisInterface_NetworkType_Enum { + if x != nil && x.NetworkType != nil { + return *x.NetworkType + } + return IsisInterface_NetworkType_unspecified +} + +func (x *IsisInterface) GetLevelType() IsisInterface_LevelType_Enum { + if x != nil && x.LevelType != nil { + return *x.LevelType + } + return IsisInterface_LevelType_unspecified +} + +func (x *IsisInterface) GetL1Settings() *IsisInterfaceLevel { if x != nil { - return x.Ipv4Addresses + return x.L1Settings } return nil } -func (x *BgpCMacIpRange) GetIpv6Addresses() *V6RouteAddress { +func (x *IsisInterface) GetL2Settings() *IsisInterfaceLevel { if x != nil { - return x.Ipv6Addresses + return x.L2Settings } return nil } -func (x *BgpCMacIpRange) GetL3Vni() uint32 { - if x != nil && x.L3Vni != nil { - return *x.L3Vni +func (x *IsisInterface) GetMultiTopologyIds() []*IsisMT { + if x != nil { + return x.MultiTopologyIds } - return 0 + return nil } -func (x *BgpCMacIpRange) GetIncludeDefaultGateway() bool { - if x != nil && x.IncludeDefaultGateway != nil { - return *x.IncludeDefaultGateway +func (x *IsisInterface) GetTrafficEngineering() []*LinkStateTE { + if x != nil { + return x.TrafficEngineering } - return false + return nil } -func (x *BgpCMacIpRange) GetAdvanced() *BgpRouteAdvanced { +func (x *IsisInterface) GetAuthentication() *IsisInterfaceAuthentication { if x != nil { - return x.Advanced + return x.Authentication } return nil } -func (x *BgpCMacIpRange) GetCommunities() []*BgpCommunity { +func (x *IsisInterface) GetAdvanced() *IsisInterfaceAdvanced { if x != nil { - return x.Communities + return x.Advanced } return nil } -func (x *BgpCMacIpRange) GetExtCommunities() []*BgpExtCommunity { +func (x *IsisInterface) GetLinkProtection() *IsisInterfaceLinkProtection { if x != nil { - return x.ExtCommunities + return x.LinkProtection } return nil } -func (x *BgpCMacIpRange) GetAsPath() *BgpAsPath { +func (x *IsisInterface) GetSrlgValues() []uint32 { if x != nil { - return x.AsPath + return x.SrlgValues } return nil } -func (x *BgpCMacIpRange) GetName() string { +func (x *IsisInterface) GetName() string { if x != nil && x.Name != nil { return *x.Name } return "" } -// BGP Route Distinguisher. -type BgpRouteDistinguisher struct { +// Configuration for the properties of Level 1 Hello. +type IsisInterfaceLevel struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Route Distinguisher Type field of 2 Byte. - // - as_2octet: Two-Octet AS Specific Extended Community (RFC 4360). - // - ipv4_address: IPv4 Address Specific Extended Community (RFC 4360). - // - as_4octet: 4-Octet AS Specific Extended Community (RFC 5668). - // default = RdType.Enum.as_2octet - RdType *BgpRouteDistinguisher_RdType_Enum `protobuf:"varint,1,opt,name=rd_type,json=rdType,proto3,enum=otg.BgpRouteDistinguisher_RdType_Enum,oneof" json:"rd_type,omitempty"` - // Allow to automatically configure RD IP address from local ip. - // default = False - AutoConfigRdIpAddr *bool `protobuf:"varint,2,opt,name=auto_config_rd_ip_addr,json=autoConfigRdIpAddr,proto3,oneof" json:"auto_config_rd_ip_addr,omitempty"` - // Colon separated Extended Community value of 6 Bytes - AS number: Value. Example - // - for the as_2octet or as_4octet 60005:100, for ipv4_address 1.1.1.1:100 - RdValue *string `protobuf:"bytes,3,opt,name=rd_value,json=rdValue,proto3,oneof" json:"rd_value,omitempty"` + // The Priority setting in Level 1 LAN Hellos for Designated Router election. + // default = 0 + Priority *uint32 `protobuf:"varint,1,opt,name=priority,proto3,oneof" json:"priority,omitempty"` + // The Hello interval for Level 1 Hello messages, in seconds. + // default = 10 + HelloInterval *uint32 `protobuf:"varint,2,opt,name=hello_interval,json=helloInterval,proto3,oneof" json:"hello_interval,omitempty"` + // The Dead (Holding Time) interval for Level 1 Hello messages, in seconds. + // default = 30 + DeadInterval *uint32 `protobuf:"varint,3,opt,name=dead_interval,json=deadInterval,proto3,oneof" json:"dead_interval,omitempty"` } -func (x *BgpRouteDistinguisher) Reset() { - *x = BgpRouteDistinguisher{} +func (x *IsisInterfaceLevel) Reset() { + *x = IsisInterfaceLevel{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[75] + mi := &file_otg_proto_msgTypes[38] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *BgpRouteDistinguisher) String() string { +func (x *IsisInterfaceLevel) String() string { return protoimpl.X.MessageStringOf(x) } -func (*BgpRouteDistinguisher) ProtoMessage() {} +func (*IsisInterfaceLevel) ProtoMessage() {} -func (x *BgpRouteDistinguisher) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[75] +func (x *IsisInterfaceLevel) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[38] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -24185,65 +23891,65 @@ func (x *BgpRouteDistinguisher) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use BgpRouteDistinguisher.ProtoReflect.Descriptor instead. -func (*BgpRouteDistinguisher) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{75} +// Deprecated: Use IsisInterfaceLevel.ProtoReflect.Descriptor instead. +func (*IsisInterfaceLevel) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{38} } -func (x *BgpRouteDistinguisher) GetRdType() BgpRouteDistinguisher_RdType_Enum { - if x != nil && x.RdType != nil { - return *x.RdType +func (x *IsisInterfaceLevel) GetPriority() uint32 { + if x != nil && x.Priority != nil { + return *x.Priority } - return BgpRouteDistinguisher_RdType_unspecified + return 0 } -func (x *BgpRouteDistinguisher) GetAutoConfigRdIpAddr() bool { - if x != nil && x.AutoConfigRdIpAddr != nil { - return *x.AutoConfigRdIpAddr +func (x *IsisInterfaceLevel) GetHelloInterval() uint32 { + if x != nil && x.HelloInterval != nil { + return *x.HelloInterval } - return false + return 0 } -func (x *BgpRouteDistinguisher) GetRdValue() string { - if x != nil && x.RdValue != nil { - return *x.RdValue +func (x *IsisInterfaceLevel) GetDeadInterval() uint32 { + if x != nil && x.DeadInterval != nil { + return *x.DeadInterval } - return "" + return 0 } -// BGP Route Target. -type BgpRouteTarget struct { +// Configuration of properties per interface per topology when multiple topologies are +// configured in an ISIS router. +// in a ISIS router. +type IsisMT struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Extended Community Type field of 2 Byte. - // - as_2octet: Two-Octet AS Specific Extended Community (RFC 4360). - // - ipv4_address: IPv4 Address Specific Extended Community (RFC 4360). - // - as_4octet: 4-Octet AS Specific Extended Community (RFC 5668). - RtType *BgpRouteTarget_RtType_Enum `protobuf:"varint,1,opt,name=rt_type,json=rtType,proto3,enum=otg.BgpRouteTarget_RtType_Enum,oneof" json:"rt_type,omitempty"` - // Colon separated Extended Community value of 6 Bytes - AS number: Assigned Number. - // Example - for the as_2octet or as_4octet 60005:100, for ipv4_address 1.1.1.1:100 - RtValue *string `protobuf:"bytes,2,opt,name=rt_value,json=rtValue,proto3,oneof" json:"rt_value,omitempty"` + // The Multi Topology ID for one of the topologies supported on the ISIS interface. + // default = 0 + MtId *uint32 `protobuf:"varint,1,opt,name=mt_id,json=mtId,proto3,oneof" json:"mt_id,omitempty"` + // Specifies the link metric for this topology on the ISIS interface. + // default = 10 + LinkMetric *uint32 `protobuf:"varint,2,opt,name=link_metric,json=linkMetric,proto3,oneof" json:"link_metric,omitempty"` } -func (x *BgpRouteTarget) Reset() { - *x = BgpRouteTarget{} +func (x *IsisMT) Reset() { + *x = IsisMT{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[76] + mi := &file_otg_proto_msgTypes[39] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *BgpRouteTarget) String() string { +func (x *IsisMT) String() string { return protoimpl.X.MessageStringOf(x) } -func (*BgpRouteTarget) ProtoMessage() {} +func (*IsisMT) ProtoMessage() {} -func (x *BgpRouteTarget) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[76] +func (x *IsisMT) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[39] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -24254,82 +23960,71 @@ func (x *BgpRouteTarget) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use BgpRouteTarget.ProtoReflect.Descriptor instead. -func (*BgpRouteTarget) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{76} +// Deprecated: Use IsisMT.ProtoReflect.Descriptor instead. +func (*IsisMT) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{39} } -func (x *BgpRouteTarget) GetRtType() BgpRouteTarget_RtType_Enum { - if x != nil && x.RtType != nil { - return *x.RtType +func (x *IsisMT) GetMtId() uint32 { + if x != nil && x.MtId != nil { + return *x.MtId } - return BgpRouteTarget_RtType_unspecified + return 0 } -func (x *BgpRouteTarget) GetRtValue() string { - if x != nil && x.RtValue != nil { - return *x.RtValue +func (x *IsisMT) GetLinkMetric() uint32 { + if x != nil && x.LinkMetric != nil { + return *x.LinkMetric } - return "" + return 0 } -// Configuration for BGP advanced settings. -type BgpAdvanced struct { +// A container for Traffic Engineering properties on a interface. +type LinkStateTE struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Number of seconds the sender proposes for the value of the Hold Timer. - // default = 90 - HoldTimeInterval *uint32 `protobuf:"varint,1,opt,name=hold_time_interval,json=holdTimeInterval,proto3,oneof" json:"hold_time_interval,omitempty"` - // Number of seconds between transmissions of Keepalive messages by this peer. - // default = 30 - KeepAliveInterval *uint32 `protobuf:"varint,2,opt,name=keep_alive_interval,json=keepAliveInterval,proto3,oneof" json:"keep_alive_interval,omitempty"` - // The time interval at which Update messages are sent to the DUT, expressed as the - // number of milliseconds between Update messages. The update interval 0 implies to - // send all the updates as fast as possible. + // The Administrative group sub-TLV (sub-TLV 3). It is a 4-octet + // user-defined bit mask used to assign administrative group numbers + // to the interface, for use in assigning colors and resource classes. + // Each set bit corresponds to a single administrative group for this + // interface. The settings translate into Group numbers, which range + // from 0 to 31 (integers). + // default = 00000000 + AdministrativeGroup *string `protobuf:"bytes,1,opt,name=administrative_group,json=administrativeGroup,proto3,oneof" json:"administrative_group,omitempty"` + // The user-assigned link metric for Traffic Engineering. // default = 0 - UpdateInterval *uint32 `protobuf:"varint,3,opt,name=update_interval,json=updateInterval,proto3,oneof" json:"update_interval,omitempty"` - // The limited number of iterations that a unit of data can experience before the data - // is discarded. This is placed in the TTL field in the IP header of the transmitted - // packets. - // default = 64 - TimeToLive *uint32 `protobuf:"varint,4,opt,name=time_to_live,json=timeToLive,proto3,oneof" json:"time_to_live,omitempty"` - // The value to be used as a secret MD5 key for authentication. If not configured, MD5 - // authentication will not be enabled. - Md5Key *string `protobuf:"bytes,5,opt,name=md5_key,json=md5Key,proto3,oneof" json:"md5_key,omitempty"` - // If set to true, the local BGP peer will wait for the remote peer to initiate the - // BGP session - // by establishing the TCP connection, rather than initiating sessions from the local - // peer. - // default = False - PassiveMode *bool `protobuf:"varint,6,opt,name=passive_mode,json=passiveMode,proto3,oneof" json:"passive_mode,omitempty"` - // The TCP port number on which to accept BGP connections from the remote peer. - // default = 179 - ListenPort *uint32 `protobuf:"varint,7,opt,name=listen_port,json=listenPort,proto3,oneof" json:"listen_port,omitempty"` - // Destination TCP port number of the BGP peer when initiating a - // session from the local BGP peer. - // default = 179 - NeighborPort *uint32 `protobuf:"varint,8,opt,name=neighbor_port,json=neighborPort,proto3,oneof" json:"neighbor_port,omitempty"` + MetricLevel *uint32 `protobuf:"varint,2,opt,name=metric_level,json=metricLevel,proto3,oneof" json:"metric_level,omitempty"` + // The maximum link bandwidth (sub-TLV 9) in bytes/sec allowed for this + // link for a direction. + // default = 125000000 + MaxBandwith *uint32 `protobuf:"varint,3,opt,name=max_bandwith,json=maxBandwith,proto3,oneof" json:"max_bandwith,omitempty"` + // The maximum link bandwidth (sub-TLV 10) in bytes/sec allowed for this + // link in a direction. + // default = 125000000 + MaxReservableBandwidth *uint32 `protobuf:"varint,4,opt,name=max_reservable_bandwidth,json=maxReservableBandwidth,proto3,oneof" json:"max_reservable_bandwidth,omitempty"` + // Configuration of bandwidths of priority 0 through priority 7. + PriorityBandwidths *LinkStatepriorityBandwidths `protobuf:"bytes,5,opt,name=priority_bandwidths,json=priorityBandwidths,proto3" json:"priority_bandwidths,omitempty"` } -func (x *BgpAdvanced) Reset() { - *x = BgpAdvanced{} +func (x *LinkStateTE) Reset() { + *x = LinkStateTE{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[77] + mi := &file_otg_proto_msgTypes[40] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *BgpAdvanced) String() string { +func (x *LinkStateTE) String() string { return protoimpl.X.MessageStringOf(x) } -func (*BgpAdvanced) ProtoMessage() {} +func (*LinkStateTE) ProtoMessage() {} -func (x *BgpAdvanced) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[77] +func (x *LinkStateTE) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[40] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -24340,179 +24035,99 @@ func (x *BgpAdvanced) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use BgpAdvanced.ProtoReflect.Descriptor instead. -func (*BgpAdvanced) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{77} -} - -func (x *BgpAdvanced) GetHoldTimeInterval() uint32 { - if x != nil && x.HoldTimeInterval != nil { - return *x.HoldTimeInterval - } - return 0 +// Deprecated: Use LinkStateTE.ProtoReflect.Descriptor instead. +func (*LinkStateTE) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{40} } -func (x *BgpAdvanced) GetKeepAliveInterval() uint32 { - if x != nil && x.KeepAliveInterval != nil { - return *x.KeepAliveInterval +func (x *LinkStateTE) GetAdministrativeGroup() string { + if x != nil && x.AdministrativeGroup != nil { + return *x.AdministrativeGroup } - return 0 + return "" } -func (x *BgpAdvanced) GetUpdateInterval() uint32 { - if x != nil && x.UpdateInterval != nil { - return *x.UpdateInterval +func (x *LinkStateTE) GetMetricLevel() uint32 { + if x != nil && x.MetricLevel != nil { + return *x.MetricLevel } return 0 } -func (x *BgpAdvanced) GetTimeToLive() uint32 { - if x != nil && x.TimeToLive != nil { - return *x.TimeToLive +func (x *LinkStateTE) GetMaxBandwith() uint32 { + if x != nil && x.MaxBandwith != nil { + return *x.MaxBandwith } return 0 } -func (x *BgpAdvanced) GetMd5Key() string { - if x != nil && x.Md5Key != nil { - return *x.Md5Key - } - return "" -} - -func (x *BgpAdvanced) GetPassiveMode() bool { - if x != nil && x.PassiveMode != nil { - return *x.PassiveMode - } - return false -} - -func (x *BgpAdvanced) GetListenPort() uint32 { - if x != nil && x.ListenPort != nil { - return *x.ListenPort +func (x *LinkStateTE) GetMaxReservableBandwidth() uint32 { + if x != nil && x.MaxReservableBandwidth != nil { + return *x.MaxReservableBandwidth } return 0 } -func (x *BgpAdvanced) GetNeighborPort() uint32 { - if x != nil && x.NeighborPort != nil { - return *x.NeighborPort +func (x *LinkStateTE) GetPriorityBandwidths() *LinkStatepriorityBandwidths { + if x != nil { + return x.PriorityBandwidths } - return 0 + return nil } -// Configuration for BGP capability settings. -type BgpCapability struct { +// Specifies the amount of bandwidth that can be reserved with a setup priority of 0 +// +// through 7, arranged in increasing order with priority 0 having highest priority. +// +// In ISIS, this is sent in sub-TLV (11) of Extended IS Reachability TLV. +type LinkStatepriorityBandwidths struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Support for the IPv4 Unicast address family. - // default = True - Ipv4Unicast *bool `protobuf:"varint,1,opt,name=ipv4_unicast,json=ipv4Unicast,proto3,oneof" json:"ipv4_unicast,omitempty"` - // Support for the IPv4 Multicast address family. - // default = False - Ipv4Multicast *bool `protobuf:"varint,2,opt,name=ipv4_multicast,json=ipv4Multicast,proto3,oneof" json:"ipv4_multicast,omitempty"` - // Support for the IPv4 Unicast address family. - // default = True - Ipv6Unicast *bool `protobuf:"varint,3,opt,name=ipv6_unicast,json=ipv6Unicast,proto3,oneof" json:"ipv6_unicast,omitempty"` - // Support for the IPv6 Multicast address family. - // default = False - Ipv6Multicast *bool `protobuf:"varint,4,opt,name=ipv6_multicast,json=ipv6Multicast,proto3,oneof" json:"ipv6_multicast,omitempty"` - // Support for VPLS as below. - // RFC4761 - Virtual Private LAN Service (VPLS) using BGP for Auto-Discovery - // and Signaling. - // RFC6624 - Layer 2 Virtual Private Networks using BGP for Auto-Discovery - // and Signaling. - // default = False - Vpls *bool `protobuf:"varint,5,opt,name=vpls,proto3,oneof" json:"vpls,omitempty"` - // Support for the route refresh capabilities. Route Refresh allows the dynamic exchange - // of route refresh requests and routing information between BGP peers and the subsequent - // re-advertisement of the outbound or inbound routing table. - // default = True - RouteRefresh *bool `protobuf:"varint,6,opt,name=route_refresh,json=routeRefresh,proto3,oneof" json:"route_refresh,omitempty"` - // Supports for the route constraint capabilities. Route Constraint allows the advertisement - // of Route Target Membership information. The BGP peers exchange Route Target Reachability - // Information, which is used to build a route distribution graph. This limits the - // propagation of VPN Network Layer Reachability Information (NLRI) between different - // autonomous systems or distinct clusters of the same autonomous system. This is supported - // for Layer 3 Virtual Private Network scenario. - // default = False - RouteConstraint *bool `protobuf:"varint,7,opt,name=route_constraint,json=routeConstraint,proto3,oneof" json:"route_constraint,omitempty"` - // Support for BGP Link State for ISIS and OSPF. - // default = False - LinkStateNonVpn *bool `protobuf:"varint,8,opt,name=link_state_non_vpn,json=linkStateNonVpn,proto3,oneof" json:"link_state_non_vpn,omitempty"` - // Capability advertisement of BGP Link State for VPNs. - // default = False - LinkStateVpn *bool `protobuf:"varint,9,opt,name=link_state_vpn,json=linkStateVpn,proto3,oneof" json:"link_state_vpn,omitempty"` - // Support for the EVPN address family. - // default = False - Evpn *bool `protobuf:"varint,10,opt,name=evpn,proto3,oneof" json:"evpn,omitempty"` - // Support for extended Next Hop Encoding for Nexthop field in IPv4 routes advertisement. - // This allows IPv4 routes being advertised by IPv6 peers to include an IPv6 Nexthop. - // default = False - ExtendedNextHopEncoding *bool `protobuf:"varint,11,opt,name=extended_next_hop_encoding,json=extendedNextHopEncoding,proto3,oneof" json:"extended_next_hop_encoding,omitempty"` - // Support for the IPv4 Multicast VPN address family. - // default = False - Ipv4MulticastVpn *bool `protobuf:"varint,12,opt,name=ipv4_multicast_vpn,json=ipv4MulticastVpn,proto3,oneof" json:"ipv4_multicast_vpn,omitempty"` - // Support for the IPv4 MPLS L3VPN address family. - // default = False - Ipv4MplsVpn *bool `protobuf:"varint,13,opt,name=ipv4_mpls_vpn,json=ipv4MplsVpn,proto3,oneof" json:"ipv4_mpls_vpn,omitempty"` - // Supports for IPv4 MDT address family messages. - // default = False - Ipv4Mdt *bool `protobuf:"varint,14,opt,name=ipv4_mdt,json=ipv4Mdt,proto3,oneof" json:"ipv4_mdt,omitempty"` - // Support for the IPv4 Multicast VPN address family. - // default = False - Ipv4MulticastMplsVpn *bool `protobuf:"varint,15,opt,name=ipv4_multicast_mpls_vpn,json=ipv4MulticastMplsVpn,proto3,oneof" json:"ipv4_multicast_mpls_vpn,omitempty"` - // Support for propagation of IPv4 unicast flow specification rules. - // default = False - Ipv4UnicastFlowSpec *bool `protobuf:"varint,16,opt,name=ipv4_unicast_flow_spec,json=ipv4UnicastFlowSpec,proto3,oneof" json:"ipv4_unicast_flow_spec,omitempty"` - // Support for IPv4 SRTE policy. - // default = False - Ipv4SrTePolicy *bool `protobuf:"varint,17,opt,name=ipv4_sr_te_policy,json=ipv4SrTePolicy,proto3,oneof" json:"ipv4_sr_te_policy,omitempty"` - // Support for IPv4 Unicast Add Path Capability. - // default = False - Ipv4UnicastAddPath *bool `protobuf:"varint,18,opt,name=ipv4_unicast_add_path,json=ipv4UnicastAddPath,proto3,oneof" json:"ipv4_unicast_add_path,omitempty"` - // Support for the IPv6 Multicast VPN address family. - // default = False - Ipv6MulticastVpn *bool `protobuf:"varint,19,opt,name=ipv6_multicast_vpn,json=ipv6MulticastVpn,proto3,oneof" json:"ipv6_multicast_vpn,omitempty"` - // Support for the IPv6 MPLS L3VPN address family. - // default = False - Ipv6MplsVpn *bool `protobuf:"varint,20,opt,name=ipv6_mpls_vpn,json=ipv6MplsVpn,proto3,oneof" json:"ipv6_mpls_vpn,omitempty"` - // Support for IPv6 MDT address family messages. - // default = False - Ipv6Mdt *bool `protobuf:"varint,21,opt,name=ipv6_mdt,json=ipv6Mdt,proto3,oneof" json:"ipv6_mdt,omitempty"` - // Support for the IPv6 Multicast VPN address family. - // default = False - Ipv6MulticastMplsVpn *bool `protobuf:"varint,22,opt,name=ipv6_multicast_mpls_vpn,json=ipv6MulticastMplsVpn,proto3,oneof" json:"ipv6_multicast_mpls_vpn,omitempty"` - // Support for propagation of IPv6 unicast flow specification rules. - // default = False - Ipv6UnicastFlowSpec *bool `protobuf:"varint,23,opt,name=ipv6_unicast_flow_spec,json=ipv6UnicastFlowSpec,proto3,oneof" json:"ipv6_unicast_flow_spec,omitempty"` - // Support for IPv6 SRTE policy. - // default = False - Ipv6SrTePolicy *bool `protobuf:"varint,24,opt,name=ipv6_sr_te_policy,json=ipv6SrTePolicy,proto3,oneof" json:"ipv6_sr_te_policy,omitempty"` - // Support for IPv6 Unicast Add Path Capability. - // default = False - Ipv6UnicastAddPath *bool `protobuf:"varint,25,opt,name=ipv6_unicast_add_path,json=ipv6UnicastAddPath,proto3,oneof" json:"ipv6_unicast_add_path,omitempty"` + // Specifies the amount of bandwidth that can be reserved for the Priority 0. + // default = 125000000 + Pb0 *uint32 `protobuf:"varint,1,opt,name=pb0,proto3,oneof" json:"pb0,omitempty"` + // Specifies the amount of bandwidth that can be reserved for the Priority 1. + // default = 125000000 + Pb1 *uint32 `protobuf:"varint,2,opt,name=pb1,proto3,oneof" json:"pb1,omitempty"` + // Specify the amount of bandwidth that can be reserved for the Priority 2. + // default = 125000000 + Pb2 *uint32 `protobuf:"varint,3,opt,name=pb2,proto3,oneof" json:"pb2,omitempty"` + // Specifies the amount of bandwidth that can be reserved for the Priority 3. + // default = 125000000 + Pb3 *uint32 `protobuf:"varint,4,opt,name=pb3,proto3,oneof" json:"pb3,omitempty"` + // Specifies the amount of bandwidth that can be reserved for the Priority 4. + // default = 125000000 + Pb4 *uint32 `protobuf:"varint,5,opt,name=pb4,proto3,oneof" json:"pb4,omitempty"` + // Specifies the amount of bandwidth that can be reserved for the Priority 5. + // default = 125000000 + Pb5 *uint32 `protobuf:"varint,6,opt,name=pb5,proto3,oneof" json:"pb5,omitempty"` + // Specifies the amount of bandwidth that can be reserved for the Priority 6. + // default = 125000000 + Pb6 *uint32 `protobuf:"varint,7,opt,name=pb6,proto3,oneof" json:"pb6,omitempty"` + // Specifies the amount of bandwidth that can be reserved for the Priority 7. + // default = 125000000 + Pb7 *uint32 `protobuf:"varint,8,opt,name=pb7,proto3,oneof" json:"pb7,omitempty"` } -func (x *BgpCapability) Reset() { - *x = BgpCapability{} +func (x *LinkStatepriorityBandwidths) Reset() { + *x = LinkStatepriorityBandwidths{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[78] + mi := &file_otg_proto_msgTypes[41] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *BgpCapability) String() string { +func (x *LinkStatepriorityBandwidths) String() string { return protoimpl.X.MessageStringOf(x) } -func (*BgpCapability) ProtoMessage() {} +func (*LinkStatepriorityBandwidths) ProtoMessage() {} -func (x *BgpCapability) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[78] +func (x *LinkStatepriorityBandwidths) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[41] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -24523,220 +24138,292 @@ func (x *BgpCapability) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use BgpCapability.ProtoReflect.Descriptor instead. -func (*BgpCapability) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{78} +// Deprecated: Use LinkStatepriorityBandwidths.ProtoReflect.Descriptor instead. +func (*LinkStatepriorityBandwidths) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{41} } -func (x *BgpCapability) GetIpv4Unicast() bool { - if x != nil && x.Ipv4Unicast != nil { - return *x.Ipv4Unicast +func (x *LinkStatepriorityBandwidths) GetPb0() uint32 { + if x != nil && x.Pb0 != nil { + return *x.Pb0 } - return false + return 0 } -func (x *BgpCapability) GetIpv4Multicast() bool { - if x != nil && x.Ipv4Multicast != nil { - return *x.Ipv4Multicast +func (x *LinkStatepriorityBandwidths) GetPb1() uint32 { + if x != nil && x.Pb1 != nil { + return *x.Pb1 } - return false + return 0 } -func (x *BgpCapability) GetIpv6Unicast() bool { - if x != nil && x.Ipv6Unicast != nil { - return *x.Ipv6Unicast +func (x *LinkStatepriorityBandwidths) GetPb2() uint32 { + if x != nil && x.Pb2 != nil { + return *x.Pb2 } - return false + return 0 } -func (x *BgpCapability) GetIpv6Multicast() bool { - if x != nil && x.Ipv6Multicast != nil { - return *x.Ipv6Multicast +func (x *LinkStatepriorityBandwidths) GetPb3() uint32 { + if x != nil && x.Pb3 != nil { + return *x.Pb3 } - return false + return 0 } -func (x *BgpCapability) GetVpls() bool { - if x != nil && x.Vpls != nil { - return *x.Vpls +func (x *LinkStatepriorityBandwidths) GetPb4() uint32 { + if x != nil && x.Pb4 != nil { + return *x.Pb4 } - return false + return 0 } -func (x *BgpCapability) GetRouteRefresh() bool { - if x != nil && x.RouteRefresh != nil { - return *x.RouteRefresh +func (x *LinkStatepriorityBandwidths) GetPb5() uint32 { + if x != nil && x.Pb5 != nil { + return *x.Pb5 } - return false + return 0 } -func (x *BgpCapability) GetRouteConstraint() bool { - if x != nil && x.RouteConstraint != nil { - return *x.RouteConstraint +func (x *LinkStatepriorityBandwidths) GetPb6() uint32 { + if x != nil && x.Pb6 != nil { + return *x.Pb6 } - return false + return 0 } -func (x *BgpCapability) GetLinkStateNonVpn() bool { - if x != nil && x.LinkStateNonVpn != nil { - return *x.LinkStateNonVpn +func (x *LinkStatepriorityBandwidths) GetPb7() uint32 { + if x != nil && x.Pb7 != nil { + return *x.Pb7 } - return false + return 0 } -func (x *BgpCapability) GetLinkStateVpn() bool { - if x != nil && x.LinkStateVpn != nil { - return *x.LinkStateVpn - } - return false -} +// Optional container for circuit authentication properties. +type IsisInterfaceAuthentication struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields -func (x *BgpCapability) GetEvpn() bool { - if x != nil && x.Evpn != nil { - return *x.Evpn - } - return false + // The circuit authentication method. + // required = true + AuthType *IsisInterfaceAuthentication_AuthType_Enum `protobuf:"varint,1,opt,name=auth_type,json=authType,proto3,enum=otg.IsisInterfaceAuthentication_AuthType_Enum,oneof" json:"auth_type,omitempty"` + // MD5 key to be used for authentication. + Md5 *string `protobuf:"bytes,2,opt,name=md5,proto3,oneof" json:"md5,omitempty"` + // The password, in clear text, to be used for Authentication. + Password *string `protobuf:"bytes,3,opt,name=password,proto3,oneof" json:"password,omitempty"` } -func (x *BgpCapability) GetExtendedNextHopEncoding() bool { - if x != nil && x.ExtendedNextHopEncoding != nil { - return *x.ExtendedNextHopEncoding +func (x *IsisInterfaceAuthentication) Reset() { + *x = IsisInterfaceAuthentication{} + if protoimpl.UnsafeEnabled { + mi := &file_otg_proto_msgTypes[42] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } - return false } -func (x *BgpCapability) GetIpv4MulticastVpn() bool { - if x != nil && x.Ipv4MulticastVpn != nil { - return *x.Ipv4MulticastVpn - } - return false +func (x *IsisInterfaceAuthentication) String() string { + return protoimpl.X.MessageStringOf(x) } -func (x *BgpCapability) GetIpv4MplsVpn() bool { - if x != nil && x.Ipv4MplsVpn != nil { - return *x.Ipv4MplsVpn +func (*IsisInterfaceAuthentication) ProtoMessage() {} + +func (x *IsisInterfaceAuthentication) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[42] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms } - return false + return mi.MessageOf(x) } -func (x *BgpCapability) GetIpv4Mdt() bool { - if x != nil && x.Ipv4Mdt != nil { - return *x.Ipv4Mdt - } - return false +// Deprecated: Use IsisInterfaceAuthentication.ProtoReflect.Descriptor instead. +func (*IsisInterfaceAuthentication) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{42} } -func (x *BgpCapability) GetIpv4MulticastMplsVpn() bool { - if x != nil && x.Ipv4MulticastMplsVpn != nil { - return *x.Ipv4MulticastMplsVpn +func (x *IsisInterfaceAuthentication) GetAuthType() IsisInterfaceAuthentication_AuthType_Enum { + if x != nil && x.AuthType != nil { + return *x.AuthType } - return false + return IsisInterfaceAuthentication_AuthType_unspecified } -func (x *BgpCapability) GetIpv4UnicastFlowSpec() bool { - if x != nil && x.Ipv4UnicastFlowSpec != nil { - return *x.Ipv4UnicastFlowSpec +func (x *IsisInterfaceAuthentication) GetMd5() string { + if x != nil && x.Md5 != nil { + return *x.Md5 } - return false + return "" } -func (x *BgpCapability) GetIpv4SrTePolicy() bool { - if x != nil && x.Ipv4SrTePolicy != nil { - return *x.Ipv4SrTePolicy +func (x *IsisInterfaceAuthentication) GetPassword() string { + if x != nil && x.Password != nil { + return *x.Password } - return false + return "" } -func (x *BgpCapability) GetIpv4UnicastAddPath() bool { - if x != nil && x.Ipv4UnicastAddPath != nil { - return *x.Ipv4UnicastAddPath - } - return false +// Optional container for advanced interface properties. +type IsisInterfaceAdvanced struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // If a padded Hello message is received on the interface, the length of + // the Hello packets sent out on that interface is adjusted to match. + // default = True + AutoAdjustMtu *bool `protobuf:"varint,1,opt,name=auto_adjust_mtu,json=autoAdjustMtu,proto3,oneof" json:"auto_adjust_mtu,omitempty"` + // If a Level 1 Hello is received on this emulated router for an area + // not currently in its area list, an area from the received Hello is + // added to that list. This ensures an area match for all future + // Level 1 Hellos from the source L1 router. + // default = True + AutoAdjustArea *bool `protobuf:"varint,2,opt,name=auto_adjust_area,json=autoAdjustArea,proto3,oneof" json:"auto_adjust_area,omitempty"` + // If a Hello message listing supported protocols is received on this + // emulated router, the supported protocols advertised by this router + // are changed to match exactly. + // default = False + AutoAdjustSupportedProtocols *bool `protobuf:"varint,3,opt,name=auto_adjust_supported_protocols,json=autoAdjustSupportedProtocols,proto3,oneof" json:"auto_adjust_supported_protocols,omitempty"` + // If it is true, the Point-to-Point circuit will include 3-way TLV in its Point-to-Point + // IIH and attempt to establish the adjacency as specified in RFC 5303. This field + // is not applicable if network_type is set to 'broadcast' type in ISIS interface. + // default = True + Enable_3WayHandshake *bool `protobuf:"varint,4,opt,name=enable_3way_handshake,json=enable3wayHandshake,proto3,oneof" json:"enable_3way_handshake,omitempty"` + // If it is true, the Point-to-Point Hello messages will be sent to the unicast MAC + // address. + // default = False + P2PHellosToUnicastMac *bool `protobuf:"varint,5,opt,name=p2p_hellos_to_unicast_mac,json=p2pHellosToUnicastMac,proto3,oneof" json:"p2p_hellos_to_unicast_mac,omitempty"` } -func (x *BgpCapability) GetIpv6MulticastVpn() bool { - if x != nil && x.Ipv6MulticastVpn != nil { - return *x.Ipv6MulticastVpn +func (x *IsisInterfaceAdvanced) Reset() { + *x = IsisInterfaceAdvanced{} + if protoimpl.UnsafeEnabled { + mi := &file_otg_proto_msgTypes[43] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } - return false } -func (x *BgpCapability) GetIpv6MplsVpn() bool { - if x != nil && x.Ipv6MplsVpn != nil { - return *x.Ipv6MplsVpn +func (x *IsisInterfaceAdvanced) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*IsisInterfaceAdvanced) ProtoMessage() {} + +func (x *IsisInterfaceAdvanced) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[43] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms } - return false + return mi.MessageOf(x) } -func (x *BgpCapability) GetIpv6Mdt() bool { - if x != nil && x.Ipv6Mdt != nil { - return *x.Ipv6Mdt +// Deprecated: Use IsisInterfaceAdvanced.ProtoReflect.Descriptor instead. +func (*IsisInterfaceAdvanced) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{43} +} + +func (x *IsisInterfaceAdvanced) GetAutoAdjustMtu() bool { + if x != nil && x.AutoAdjustMtu != nil { + return *x.AutoAdjustMtu } return false } -func (x *BgpCapability) GetIpv6MulticastMplsVpn() bool { - if x != nil && x.Ipv6MulticastMplsVpn != nil { - return *x.Ipv6MulticastMplsVpn +func (x *IsisInterfaceAdvanced) GetAutoAdjustArea() bool { + if x != nil && x.AutoAdjustArea != nil { + return *x.AutoAdjustArea } return false } -func (x *BgpCapability) GetIpv6UnicastFlowSpec() bool { - if x != nil && x.Ipv6UnicastFlowSpec != nil { - return *x.Ipv6UnicastFlowSpec +func (x *IsisInterfaceAdvanced) GetAutoAdjustSupportedProtocols() bool { + if x != nil && x.AutoAdjustSupportedProtocols != nil { + return *x.AutoAdjustSupportedProtocols } return false } -func (x *BgpCapability) GetIpv6SrTePolicy() bool { - if x != nil && x.Ipv6SrTePolicy != nil { - return *x.Ipv6SrTePolicy +func (x *IsisInterfaceAdvanced) GetEnable_3WayHandshake() bool { + if x != nil && x.Enable_3WayHandshake != nil { + return *x.Enable_3WayHandshake } return false } -func (x *BgpCapability) GetIpv6UnicastAddPath() bool { - if x != nil && x.Ipv6UnicastAddPath != nil { - return *x.Ipv6UnicastAddPath +func (x *IsisInterfaceAdvanced) GetP2PHellosToUnicastMac() bool { + if x != nil && x.P2PHellosToUnicastMac != nil { + return *x.P2PHellosToUnicastMac } return false } -// Configuration for controlling storage of BGP learned information recieved from the -// peer. -type BgpLearnedInformationFilter struct { +// Optional container for the link protection sub TLV (type 20). +type IsisInterfaceLinkProtection struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // If enabled, will store the information related to Unicast IPv4 Prefixes recieved - // from the peer. + // Enable this to protect other link or links. LSPs on a link of this type are lost + // if any of the links fail. // default = False - UnicastIpv4Prefix *bool `protobuf:"varint,1,opt,name=unicast_ipv4_prefix,json=unicastIpv4Prefix,proto3,oneof" json:"unicast_ipv4_prefix,omitempty"` - // If enabled, will store the information related to Unicast IPv6 Prefixes recieved - // from the peer. + ExtraTraffic *bool `protobuf:"varint,1,opt,name=extra_traffic,json=extraTraffic,proto3,oneof" json:"extra_traffic,omitempty"` + // Enabling this signifies that there is no other link protecting this + // link. LSPs on a link of this type are lost if the link fails. // default = False - UnicastIpv6Prefix *bool `protobuf:"varint,2,opt,name=unicast_ipv6_prefix,json=unicastIpv6Prefix,proto3,oneof" json:"unicast_ipv6_prefix,omitempty"` + Unprotected *bool `protobuf:"varint,2,opt,name=unprotected,proto3,oneof" json:"unprotected,omitempty"` + // Enable this to share the Extra Traffic links between one or more + // links of type Shared.There are one or more disjoint links of type + // Extra Traffic that are protecting this link. + // default = False + Shared *bool `protobuf:"varint,3,opt,name=shared,proto3,oneof" json:"shared,omitempty"` + // Enabling this signifies that there is one dedicated disjoint link + // of type Extra Traffic that is protecting this link. + // default = False + Dedicated_1To_1 *bool `protobuf:"varint,4,opt,name=dedicated_1_to_1,json=dedicated1To1,proto3,oneof" json:"dedicated_1_to_1,omitempty"` + // Enabling this signifies that a dedicated disjoint link is protecting + // this link. However, the protecting link is not advertised in the + // link state database and is therefore not available for the routing + // of LSPs. + // default = False + Dedicated_1Plus_1 *bool `protobuf:"varint,5,opt,name=dedicated_1_plus_1,json=dedicated1Plus1,proto3,oneof" json:"dedicated_1_plus_1,omitempty"` + // Enabling this signifies that a protection scheme that is more + // reliable than Dedicated 1+1. + // default = False + Enhanced *bool `protobuf:"varint,6,opt,name=enhanced,proto3,oneof" json:"enhanced,omitempty"` + // This is a Protection Scheme with value 0x40. + // default = False + Reserved_40 *bool `protobuf:"varint,7,opt,name=reserved_40,json=reserved40,proto3,oneof" json:"reserved_40,omitempty"` + // This is a Protection Scheme with value 0x80. + // default = False + Reserved_80 *bool `protobuf:"varint,8,opt,name=reserved_80,json=reserved80,proto3,oneof" json:"reserved_80,omitempty"` } -func (x *BgpLearnedInformationFilter) Reset() { - *x = BgpLearnedInformationFilter{} +func (x *IsisInterfaceLinkProtection) Reset() { + *x = IsisInterfaceLinkProtection{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[79] + mi := &file_otg_proto_msgTypes[44] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *BgpLearnedInformationFilter) String() string { +func (x *IsisInterfaceLinkProtection) String() string { return protoimpl.X.MessageStringOf(x) } -func (*BgpLearnedInformationFilter) ProtoMessage() {} +func (*IsisInterfaceLinkProtection) ProtoMessage() {} -func (x *BgpLearnedInformationFilter) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[79] +func (x *IsisInterfaceLinkProtection) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[44] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -24747,254 +24434,213 @@ func (x *BgpLearnedInformationFilter) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use BgpLearnedInformationFilter.ProtoReflect.Descriptor instead. -func (*BgpLearnedInformationFilter) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{79} +// Deprecated: Use IsisInterfaceLinkProtection.ProtoReflect.Descriptor instead. +func (*IsisInterfaceLinkProtection) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{44} } -func (x *BgpLearnedInformationFilter) GetUnicastIpv4Prefix() bool { - if x != nil && x.UnicastIpv4Prefix != nil { - return *x.UnicastIpv4Prefix +func (x *IsisInterfaceLinkProtection) GetExtraTraffic() bool { + if x != nil && x.ExtraTraffic != nil { + return *x.ExtraTraffic } return false } -func (x *BgpLearnedInformationFilter) GetUnicastIpv6Prefix() bool { - if x != nil && x.UnicastIpv6Prefix != nil { - return *x.UnicastIpv6Prefix +func (x *IsisInterfaceLinkProtection) GetUnprotected() bool { + if x != nil && x.Unprotected != nil { + return *x.Unprotected } return false } -// Emulated BGPv4 route range. -type BgpV4RouteRange struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // A list of group of IPv4 route addresses. - Addresses []*V4RouteAddress `protobuf:"bytes,1,rep,name=addresses,proto3" json:"addresses,omitempty"` - // Specify the NextHop in MP REACH NLRI. The mode for setting the IP address of the - // NextHop in the MP REACH NLRI can be one of the following: - // Local IP: Automatically fills the Nexthop with the Local IP of the BGP - // peer. - // If BGP peer is of type IPv6, Nexthop Encoding capability should be enabled. - // Manual: Override the Nexthop with any arbitrary IPv4/IPv6 address. - // default = NextHopMode.Enum.local_ip - NextHopMode *BgpV4RouteRange_NextHopMode_Enum `protobuf:"varint,2,opt,name=next_hop_mode,json=nextHopMode,proto3,enum=otg.BgpV4RouteRange_NextHopMode_Enum,oneof" json:"next_hop_mode,omitempty"` - // If the Nexthop Mode is Manual, it sets the type of the NextHop IP address. - // default = NextHopAddressType.Enum.ipv4 - NextHopAddressType *BgpV4RouteRange_NextHopAddressType_Enum `protobuf:"varint,3,opt,name=next_hop_address_type,json=nextHopAddressType,proto3,enum=otg.BgpV4RouteRange_NextHopAddressType_Enum,oneof" json:"next_hop_address_type,omitempty"` - // The IPv4 address of the next hop if the Nexthop Mode is manual and the Nexthop type - // is IPv4. If BGP peer is of type IPv6, Nexthop Encoding capability should be enabled. - // default = 0.0.0.0 - NextHopIpv4Address *string `protobuf:"bytes,4,opt,name=next_hop_ipv4_address,json=nextHopIpv4Address,proto3,oneof" json:"next_hop_ipv4_address,omitempty"` - // The IPv6 address of the next hop if the Nexthop Mode is manual and the Nexthop type - // is IPv6. - // default = ::0 - NextHopIpv6Address *string `protobuf:"bytes,5,opt,name=next_hop_ipv6_address,json=nextHopIpv6Address,proto3,oneof" json:"next_hop_ipv6_address,omitempty"` - // Description missing in models - Advanced *BgpRouteAdvanced `protobuf:"bytes,6,opt,name=advanced,proto3" json:"advanced,omitempty"` - // Optional community settings. - Communities []*BgpCommunity `protobuf:"bytes,7,rep,name=communities,proto3" json:"communities,omitempty"` - // Description missing in models - AsPath *BgpAsPath `protobuf:"bytes,8,opt,name=as_path,json=asPath,proto3" json:"as_path,omitempty"` - // Description missing in models - AddPath *BgpAddPath `protobuf:"bytes,9,opt,name=add_path,json=addPath,proto3" json:"add_path,omitempty"` - // Globally unique name of an object. It also serves as the primary key for arrays of - // objects. - // required = true - Name *string `protobuf:"bytes,10,opt,name=name,proto3,oneof" json:"name,omitempty"` - // Deprecated: This property is deprecated in favor of property extended_communities - // - // Deprecated: This property is deprecated in favor of property extended_communities - // - // Optional Extended Community settings. The Extended Communities Attribute is a transitive - // optional BGP attribute, with the Type Code 16. Community and Extended Communities - // attributes are utilized to trigger routing decisions, such as acceptance, rejection, - // preference, or redistribution. An extended community is an 8-Bytes value. It is - // divided into two main parts. The first 2 Bytes of the community encode a type and - // sub-type fields and the last 6 Bytes carry a unique set of data in a format defined - // by the type and sub-type field. Extended communities provide a larger range for - // grouping or categorizing communities. When type is administrator_as_2octet or administrator_as_4octet, - // the valid sub types are route target and origin. The valid value for administrator_as_2octet - // and administrator_as_4octet type is either two byte AS followed by four byte local - // administrator id or four byte AS followed by two byte local administrator id. When - // type is administrator_ipv4_address the valid sub types are route target and origin. - // The valid value for administrator_ipv4_address is a four byte IPv4 address followed - // by a two byte local administrator id. When type is opaque, valid sub types are color - // and encapsulation. When sub type is color, first two bytes of the value field contain - // flags and last four bytes contains the value of the color. When sub type is encapsulation - // the first four bytes of value field are reserved and last two bytes carries the tunnel - // type from IANA's ETHER TYPES registry e.g IPv4 (protocol type = 0x0800), IPv6 (protocol - // type = 0x86dd), and MPLS (protocol type = 0x8847). When type is administrator_as_2octet_link_bandwidth - // the valid sub type is extended_bandwidth. The first two bytes of the value field - // contains the AS number and the last four bytes contains the bandwidth in IEEE floating - // point format. When type is evpn the valid subtype is mac_address. In the value field - // the low-order bit of the first byte(Flags) is defined as the Sticky/static flag and - // may be set to 1, indicating the MAC address is static and cannot move. The second - // byte is reserved and the last four bytes contain the sequence number which is used - // to ensure that PEs retain the correct MAC/IP Advertisement route when multiple updates - // occur for the same MAC address. Note evpn type is defined mainly for use with evpn - // route updates and not for IPv4 and IPv6 route updates. - ExtCommunities []*BgpExtCommunity `protobuf:"bytes,11,rep,name=ext_communities,json=extCommunities,proto3" json:"ext_communities,omitempty"` - // Optional Extended Community settings. The Extended Communities Attribute is a transitive - // optional BGP attribute, with the Type Code 16. Community and Extended Communities - // attributes are utilized to trigger routing decisions, such as acceptance, rejection, - // preference, or redistribution. An extended community is an eight byte value. It - // is divided into two main parts. The first two bytes of the community encode a type - // and sub-type fields and the last six bytes carry a unique set of data in a format - // defined by the type and sub-type field. Extended communities provide a larger range - // for grouping or categorizing communities. - ExtendedCommunities []*BgpExtendedCommunity `protobuf:"bytes,12,rep,name=extended_communities,json=extendedCommunities,proto3" json:"extended_communities,omitempty"` -} - -func (x *BgpV4RouteRange) Reset() { - *x = BgpV4RouteRange{} - if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[80] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) +func (x *IsisInterfaceLinkProtection) GetShared() bool { + if x != nil && x.Shared != nil { + return *x.Shared } + return false } -func (x *BgpV4RouteRange) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*BgpV4RouteRange) ProtoMessage() {} - -func (x *BgpV4RouteRange) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[80] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms +func (x *IsisInterfaceLinkProtection) GetDedicated_1To_1() bool { + if x != nil && x.Dedicated_1To_1 != nil { + return *x.Dedicated_1To_1 } - return mi.MessageOf(x) + return false } -// Deprecated: Use BgpV4RouteRange.ProtoReflect.Descriptor instead. -func (*BgpV4RouteRange) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{80} +func (x *IsisInterfaceLinkProtection) GetDedicated_1Plus_1() bool { + if x != nil && x.Dedicated_1Plus_1 != nil { + return *x.Dedicated_1Plus_1 + } + return false } -func (x *BgpV4RouteRange) GetAddresses() []*V4RouteAddress { - if x != nil { - return x.Addresses +func (x *IsisInterfaceLinkProtection) GetEnhanced() bool { + if x != nil && x.Enhanced != nil { + return *x.Enhanced } - return nil + return false } -func (x *BgpV4RouteRange) GetNextHopMode() BgpV4RouteRange_NextHopMode_Enum { - if x != nil && x.NextHopMode != nil { - return *x.NextHopMode +func (x *IsisInterfaceLinkProtection) GetReserved_40() bool { + if x != nil && x.Reserved_40 != nil { + return *x.Reserved_40 } - return BgpV4RouteRange_NextHopMode_unspecified + return false } -func (x *BgpV4RouteRange) GetNextHopAddressType() BgpV4RouteRange_NextHopAddressType_Enum { - if x != nil && x.NextHopAddressType != nil { - return *x.NextHopAddressType +func (x *IsisInterfaceLinkProtection) GetReserved_80() bool { + if x != nil && x.Reserved_80 != nil { + return *x.Reserved_80 } - return BgpV4RouteRange_NextHopAddressType_unspecified + return false } -func (x *BgpV4RouteRange) GetNextHopIpv4Address() string { - if x != nil && x.NextHopIpv4Address != nil { - return *x.NextHopIpv4Address - } - return "" +// This contains ISIS router basic properties. +type IsisBasic struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // IPv4 Traffic Engineering(TE) router id. This address should be configured as an IPv4 + // Loopback address in 'ipv4_loopbacks' in the Device. + Ipv4TeRouterId *string `protobuf:"bytes,1,opt,name=ipv4_te_router_id,json=ipv4TeRouterId,proto3,oneof" json:"ipv4_te_router_id,omitempty"` + // Host name for the router. The host name is transmitted in all the packets sent from + // the router. + Hostname *string `protobuf:"bytes,2,opt,name=hostname,proto3,oneof" json:"hostname,omitempty"` + // When set to true, it allows sending of more detailed metric information for the + // routes using 32-bit wide values using TLV 135 IP reachability and more detailed + // reachability information for IS reachability by using TLV 22. The detailed usage + // is described in RFC3784. + // default = True + EnableWideMetric *bool `protobuf:"varint,3,opt,name=enable_wide_metric,json=enableWideMetric,proto3,oneof" json:"enable_wide_metric,omitempty"` + // Configuration for controlling storage of ISIS learned LSPs are received from the + // neighbors. + // default = False + LearnedLspFilter *bool `protobuf:"varint,4,opt,name=learned_lsp_filter,json=learnedLspFilter,proto3,oneof" json:"learned_lsp_filter,omitempty"` } -func (x *BgpV4RouteRange) GetNextHopIpv6Address() string { - if x != nil && x.NextHopIpv6Address != nil { - return *x.NextHopIpv6Address +func (x *IsisBasic) Reset() { + *x = IsisBasic{} + if protoimpl.UnsafeEnabled { + mi := &file_otg_proto_msgTypes[45] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } - return "" } -func (x *BgpV4RouteRange) GetAdvanced() *BgpRouteAdvanced { - if x != nil { - return x.Advanced - } - return nil +func (x *IsisBasic) String() string { + return protoimpl.X.MessageStringOf(x) } -func (x *BgpV4RouteRange) GetCommunities() []*BgpCommunity { - if x != nil { - return x.Communities +func (*IsisBasic) ProtoMessage() {} + +func (x *IsisBasic) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[45] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms } - return nil + return mi.MessageOf(x) } -func (x *BgpV4RouteRange) GetAsPath() *BgpAsPath { - if x != nil { - return x.AsPath - } - return nil +// Deprecated: Use IsisBasic.ProtoReflect.Descriptor instead. +func (*IsisBasic) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{45} } -func (x *BgpV4RouteRange) GetAddPath() *BgpAddPath { - if x != nil { - return x.AddPath +func (x *IsisBasic) GetIpv4TeRouterId() string { + if x != nil && x.Ipv4TeRouterId != nil { + return *x.Ipv4TeRouterId } - return nil + return "" } -func (x *BgpV4RouteRange) GetName() string { - if x != nil && x.Name != nil { - return *x.Name +func (x *IsisBasic) GetHostname() string { + if x != nil && x.Hostname != nil { + return *x.Hostname } return "" } -func (x *BgpV4RouteRange) GetExtCommunities() []*BgpExtCommunity { - if x != nil { - return x.ExtCommunities +func (x *IsisBasic) GetEnableWideMetric() bool { + if x != nil && x.EnableWideMetric != nil { + return *x.EnableWideMetric } - return nil + return false } -func (x *BgpV4RouteRange) GetExtendedCommunities() []*BgpExtendedCommunity { - if x != nil { - return x.ExtendedCommunities +func (x *IsisBasic) GetLearnedLspFilter() bool { + if x != nil && x.LearnedLspFilter != nil { + return *x.LearnedLspFilter } - return nil + return false } -// The BGP Additional Paths feature is a BGP extension that allows the advertisement -// of multiple paths for the same prefix without the new paths implicitly replacing -// any previous paths. -type BgpAddPath struct { +// Contains ISIS router advanced properties. +type IsisAdvanced struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // The id of the additional path. - // default = 1 - PathId *uint32 `protobuf:"varint,1,opt,name=path_id,json=pathId,proto3,oneof" json:"path_id,omitempty"` + // It enables padding of Hello message to MTU size. + // default = True + EnableHelloPadding *bool `protobuf:"varint,1,opt,name=enable_hello_padding,json=enableHelloPadding,proto3,oneof" json:"enable_hello_padding,omitempty"` + // The Number of Area Addresses permitted, with a valid range from 0 to 254. A zero + // indicates a maximum of 3 addresses. + // default = 3 + MaxAreaAddresses *uint32 `protobuf:"varint,2,opt,name=max_area_addresses,json=maxAreaAddresses,proto3,oneof" json:"max_area_addresses,omitempty"` + // Its combination of the ISP and HO-DSP.Usually all nodes within an area have the + // same area address. If no area addresses are configured, a default area of 490001 + // will be advertised. + AreaAddresses []string `protobuf:"bytes,3,rep,name=area_addresses,json=areaAddresses,proto3" json:"area_addresses,omitempty"` + // The rate at which LSPs are re-sent in seconds. + // default = 600 + LspRefreshRate *uint32 `protobuf:"varint,4,opt,name=lsp_refresh_rate,json=lspRefreshRate,proto3,oneof" json:"lsp_refresh_rate,omitempty"` + // The MaxAge for retaining a learned LSP on this router in seconds. + // default = 1200 + LspLifetime *uint32 `protobuf:"varint,5,opt,name=lsp_lifetime,json=lspLifetime,proto3,oneof" json:"lsp_lifetime,omitempty"` + // The number of milliseconds between transmissions of Partial Sequence Number PDU. + // default = 2000 + PsnpInterval *uint32 `protobuf:"varint,6,opt,name=psnp_interval,json=psnpInterval,proto3,oneof" json:"psnp_interval,omitempty"` + // The number of milliseconds between transmissions of Partial Sequence Number PDU. + // default = 10000 + CsnpInterval *uint32 `protobuf:"varint,7,opt,name=csnp_interval,json=csnpInterval,proto3,oneof" json:"csnp_interval,omitempty"` + // The maximum size in bytes of any LSP that can be transmitted over a link of equal + // or less than maximum MTU size. + // default = 1492 + MaxLspSize *uint32 `protobuf:"varint,8,opt,name=max_lsp_size,json=maxLspSize,proto3,oneof" json:"max_lsp_size,omitempty"` + // The number of seconds between transmissions of LSPs/MGROUP-PDUs. + // default = 5000 + LspMgroupMinTransInterval *uint32 `protobuf:"varint,9,opt,name=lsp_mgroup_min_trans_interval,json=lspMgroupMinTransInterval,proto3,oneof" json:"lsp_mgroup_min_trans_interval,omitempty"` + // If the Attached bit is enabled, it indicates that the ISIS router is attached to + // another area or the Level 2 backbone. The purpose of an Attached-Bit is to accomplish + // Inter-Area Routing. When an L1/L2 router is connected to more than one area, it + // sets the Attached-bit on its L1 LSP. This can cause a default route ( 0.0.0.0/0 ) + // to be installed by the receiving router. + // default = True + EnableAttachedBit *bool `protobuf:"varint,10,opt,name=enable_attached_bit,json=enableAttachedBit,proto3,oneof" json:"enable_attached_bit,omitempty"` } -func (x *BgpAddPath) Reset() { - *x = BgpAddPath{} +func (x *IsisAdvanced) Reset() { + *x = IsisAdvanced{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[81] + mi := &file_otg_proto_msgTypes[46] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *BgpAddPath) String() string { +func (x *IsisAdvanced) String() string { return protoimpl.X.MessageStringOf(x) } -func (*BgpAddPath) ProtoMessage() {} +func (*IsisAdvanced) ProtoMessage() {} -func (x *BgpAddPath) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[81] +func (x *IsisAdvanced) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[46] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -25005,173 +24651,115 @@ func (x *BgpAddPath) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use BgpAddPath.ProtoReflect.Descriptor instead. -func (*BgpAddPath) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{81} +// Deprecated: Use IsisAdvanced.ProtoReflect.Descriptor instead. +func (*IsisAdvanced) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{46} } -func (x *BgpAddPath) GetPathId() uint32 { - if x != nil && x.PathId != nil { - return *x.PathId +func (x *IsisAdvanced) GetEnableHelloPadding() bool { + if x != nil && x.EnableHelloPadding != nil { + return *x.EnableHelloPadding } - return 0 + return false } -// The Extended Communities Attribute is a optional BGP attribute,defined in RFC4360 -// with the Type Code 16. Community and Extended Communities attributes are utilized -// to trigger routing decisions, such as acceptance, rejection, preference, or redistribution. -// An extended community is an 8-Bytes value.It is divided into two main parts. The -// first 2 Bytes of the community encode a type and optonal sub-type field. The last -// 6 bytes (or 7 bytes for types without a sub-type) carry a unique set of data in a -// format defined by the type and optional sub-type field. Extended communities provide -// a larger range for grouping or categorizing communities. -type BgpExtendedCommunity struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // Description missing in models - // default = Choice.Enum.transitive_2octet_as_type - Choice *BgpExtendedCommunity_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.BgpExtendedCommunity_Choice_Enum,oneof" json:"choice,omitempty"` - // Description missing in models - Transitive_2OctetAsType *BgpExtendedCommunityTransitive2OctetAsType `protobuf:"bytes,2,opt,name=transitive_2octet_as_type,json=transitive2octetAsType,proto3" json:"transitive_2octet_as_type,omitempty"` - // Description missing in models - TransitiveIpv4AddressType *BgpExtendedCommunityTransitiveIpv4AddressType `protobuf:"bytes,3,opt,name=transitive_ipv4_address_type,json=transitiveIpv4AddressType,proto3" json:"transitive_ipv4_address_type,omitempty"` - // Description missing in models - Transitive_4OctetAsType *BgpExtendedCommunityTransitive4OctetAsType `protobuf:"bytes,4,opt,name=transitive_4octet_as_type,json=transitive4octetAsType,proto3" json:"transitive_4octet_as_type,omitempty"` - // Description missing in models - TransitiveOpaqueType *BgpExtendedCommunityTransitiveOpaqueType `protobuf:"bytes,5,opt,name=transitive_opaque_type,json=transitiveOpaqueType,proto3" json:"transitive_opaque_type,omitempty"` - // Description missing in models - TransitiveEvpnType *BgpExtendedCommunityTransitiveEvpnType `protobuf:"bytes,6,opt,name=transitive_evpn_type,json=transitiveEvpnType,proto3" json:"transitive_evpn_type,omitempty"` - // Description missing in models - NonTransitive_2OctetAsType *BgpExtendedCommunityNonTransitive2OctetAsType `protobuf:"bytes,7,opt,name=non_transitive_2octet_as_type,json=nonTransitive2octetAsType,proto3" json:"non_transitive_2octet_as_type,omitempty"` - // Description missing in models - Custom *BgpExtendedCommunityCustomType `protobuf:"bytes,8,opt,name=custom,proto3" json:"custom,omitempty"` -} - -func (x *BgpExtendedCommunity) Reset() { - *x = BgpExtendedCommunity{} - if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[82] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *BgpExtendedCommunity) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*BgpExtendedCommunity) ProtoMessage() {} - -func (x *BgpExtendedCommunity) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[82] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms +func (x *IsisAdvanced) GetMaxAreaAddresses() uint32 { + if x != nil && x.MaxAreaAddresses != nil { + return *x.MaxAreaAddresses } - return mi.MessageOf(x) -} - -// Deprecated: Use BgpExtendedCommunity.ProtoReflect.Descriptor instead. -func (*BgpExtendedCommunity) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{82} + return 0 } -func (x *BgpExtendedCommunity) GetChoice() BgpExtendedCommunity_Choice_Enum { - if x != nil && x.Choice != nil { - return *x.Choice +func (x *IsisAdvanced) GetAreaAddresses() []string { + if x != nil { + return x.AreaAddresses } - return BgpExtendedCommunity_Choice_unspecified + return nil } -func (x *BgpExtendedCommunity) GetTransitive_2OctetAsType() *BgpExtendedCommunityTransitive2OctetAsType { - if x != nil { - return x.Transitive_2OctetAsType +func (x *IsisAdvanced) GetLspRefreshRate() uint32 { + if x != nil && x.LspRefreshRate != nil { + return *x.LspRefreshRate } - return nil + return 0 } -func (x *BgpExtendedCommunity) GetTransitiveIpv4AddressType() *BgpExtendedCommunityTransitiveIpv4AddressType { - if x != nil { - return x.TransitiveIpv4AddressType +func (x *IsisAdvanced) GetLspLifetime() uint32 { + if x != nil && x.LspLifetime != nil { + return *x.LspLifetime } - return nil + return 0 } -func (x *BgpExtendedCommunity) GetTransitive_4OctetAsType() *BgpExtendedCommunityTransitive4OctetAsType { - if x != nil { - return x.Transitive_4OctetAsType +func (x *IsisAdvanced) GetPsnpInterval() uint32 { + if x != nil && x.PsnpInterval != nil { + return *x.PsnpInterval } - return nil + return 0 } -func (x *BgpExtendedCommunity) GetTransitiveOpaqueType() *BgpExtendedCommunityTransitiveOpaqueType { - if x != nil { - return x.TransitiveOpaqueType +func (x *IsisAdvanced) GetCsnpInterval() uint32 { + if x != nil && x.CsnpInterval != nil { + return *x.CsnpInterval } - return nil + return 0 } -func (x *BgpExtendedCommunity) GetTransitiveEvpnType() *BgpExtendedCommunityTransitiveEvpnType { - if x != nil { - return x.TransitiveEvpnType +func (x *IsisAdvanced) GetMaxLspSize() uint32 { + if x != nil && x.MaxLspSize != nil { + return *x.MaxLspSize } - return nil + return 0 } -func (x *BgpExtendedCommunity) GetNonTransitive_2OctetAsType() *BgpExtendedCommunityNonTransitive2OctetAsType { - if x != nil { - return x.NonTransitive_2OctetAsType +func (x *IsisAdvanced) GetLspMgroupMinTransInterval() uint32 { + if x != nil && x.LspMgroupMinTransInterval != nil { + return *x.LspMgroupMinTransInterval } - return nil + return 0 } -func (x *BgpExtendedCommunity) GetCustom() *BgpExtendedCommunityCustomType { - if x != nil { - return x.Custom +func (x *IsisAdvanced) GetEnableAttachedBit() bool { + if x != nil && x.EnableAttachedBit != nil { + return *x.EnableAttachedBit } - return nil + return false } -// The Route Target Community identifies one or more routers that may receive a set -// of routes (that carry this Community) carried by BGP. It is sent with sub-type as -// 0x02. -type BgpExtendedCommunityTransitive2OctetAsTypeRouteTarget struct { +// This contains ISIS Area/Domain authentication properties. +type IsisAuthentication struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // The two octet IANA assigned AS value assigned to the Autonomous System. - // default = 100 - Global_2ByteAs *uint32 `protobuf:"varint,1,opt,name=global_2byte_as,json=global2byteAs,proto3,oneof" json:"global_2byte_as,omitempty"` - // The Local Administrator sub-field contains a number from a numbering space that is - // administered by the organization to which the Autonomous System number carried in - // the Global Administrator sub-field has been assigned by an appropriate authority. - // default = 1 - Local_4ByteAdmin *uint32 `protobuf:"varint,2,opt,name=local_4byte_admin,json=local4byteAdmin,proto3,oneof" json:"local_4byte_admin,omitempty"` + // Do not verify MD5 checksum in received LSPs. + // default = True + IgnoreReceiveMd5 *bool `protobuf:"varint,1,opt,name=ignore_receive_md5,json=ignoreReceiveMd5,proto3,oneof" json:"ignore_receive_md5,omitempty"` + // The Area authentication method used for the emulated ISIS router. + // This is used for L1 LSPs. + AreaAuth *IsisAuthenticationBase `protobuf:"bytes,2,opt,name=area_auth,json=areaAuth,proto3" json:"area_auth,omitempty"` + // The Domain authentication method used for the emulated ISIS router. + // This is used for L2 LSPs. + DomainAuth *IsisAuthenticationBase `protobuf:"bytes,3,opt,name=domain_auth,json=domainAuth,proto3" json:"domain_auth,omitempty"` } -func (x *BgpExtendedCommunityTransitive2OctetAsTypeRouteTarget) Reset() { - *x = BgpExtendedCommunityTransitive2OctetAsTypeRouteTarget{} +func (x *IsisAuthentication) Reset() { + *x = IsisAuthentication{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[83] + mi := &file_otg_proto_msgTypes[47] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *BgpExtendedCommunityTransitive2OctetAsTypeRouteTarget) String() string { +func (x *IsisAuthentication) String() string { return protoimpl.X.MessageStringOf(x) } -func (*BgpExtendedCommunityTransitive2OctetAsTypeRouteTarget) ProtoMessage() {} +func (*IsisAuthentication) ProtoMessage() {} -func (x *BgpExtendedCommunityTransitive2OctetAsTypeRouteTarget) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[83] +func (x *IsisAuthentication) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[47] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -25182,59 +24770,64 @@ func (x *BgpExtendedCommunityTransitive2OctetAsTypeRouteTarget) ProtoReflect() p return mi.MessageOf(x) } -// Deprecated: Use BgpExtendedCommunityTransitive2OctetAsTypeRouteTarget.ProtoReflect.Descriptor instead. -func (*BgpExtendedCommunityTransitive2OctetAsTypeRouteTarget) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{83} +// Deprecated: Use IsisAuthentication.ProtoReflect.Descriptor instead. +func (*IsisAuthentication) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{47} } -func (x *BgpExtendedCommunityTransitive2OctetAsTypeRouteTarget) GetGlobal_2ByteAs() uint32 { - if x != nil && x.Global_2ByteAs != nil { - return *x.Global_2ByteAs +func (x *IsisAuthentication) GetIgnoreReceiveMd5() bool { + if x != nil && x.IgnoreReceiveMd5 != nil { + return *x.IgnoreReceiveMd5 } - return 0 + return false } -func (x *BgpExtendedCommunityTransitive2OctetAsTypeRouteTarget) GetLocal_4ByteAdmin() uint32 { - if x != nil && x.Local_4ByteAdmin != nil { - return *x.Local_4ByteAdmin +func (x *IsisAuthentication) GetAreaAuth() *IsisAuthenticationBase { + if x != nil { + return x.AreaAuth } - return 0 + return nil } -// The Route Origin Community identifies one or more routers that inject a set of routes -// (that carry this Community) into BGP. It is sent with sub-type as 0x03 . -type BgpExtendedCommunityTransitive2OctetAsTypeRouteOrigin struct { +func (x *IsisAuthentication) GetDomainAuth() *IsisAuthenticationBase { + if x != nil { + return x.DomainAuth + } + return nil +} + +// Optional container for ISIS authentication properties. +type IsisAuthenticationBase struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // The two octet IANA assigned AS value assigned to the Autonomous System. - // default = 100 - Global_2ByteAs *uint32 `protobuf:"varint,1,opt,name=global_2byte_as,json=global2byteAs,proto3,oneof" json:"global_2byte_as,omitempty"` - // The Local Administrator sub-field contains a number from a numbering space that is - // administered by the organization to which the Autonomous System number carried in - // the Global Administrator sub-field has been assigned by an appropriate authority. - // default = 1 - Local_4ByteAdmin *uint32 `protobuf:"varint,2,opt,name=local_4byte_admin,json=local4byteAdmin,proto3,oneof" json:"local_4byte_admin,omitempty"` + // The authentication method. + // required = true + AuthType *IsisAuthenticationBase_AuthType_Enum `protobuf:"varint,1,opt,name=auth_type,json=authType,proto3,enum=otg.IsisAuthenticationBase_AuthType_Enum,oneof" json:"auth_type,omitempty"` + // Authentication as an MD5 key. + Md5 *string `protobuf:"bytes,2,opt,name=md5,proto3,oneof" json:"md5,omitempty"` + // Authentication as a clear text password. + Password *string `protobuf:"bytes,3,opt,name=password,proto3,oneof" json:"password,omitempty"` } -func (x *BgpExtendedCommunityTransitive2OctetAsTypeRouteOrigin) Reset() { - *x = BgpExtendedCommunityTransitive2OctetAsTypeRouteOrigin{} +func (x *IsisAuthenticationBase) Reset() { + *x = IsisAuthenticationBase{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[84] + mi := &file_otg_proto_msgTypes[48] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *BgpExtendedCommunityTransitive2OctetAsTypeRouteOrigin) String() string { +func (x *IsisAuthenticationBase) String() string { return protoimpl.X.MessageStringOf(x) } -func (*BgpExtendedCommunityTransitive2OctetAsTypeRouteOrigin) ProtoMessage() {} +func (*IsisAuthenticationBase) ProtoMessage() {} -func (x *BgpExtendedCommunityTransitive2OctetAsTypeRouteOrigin) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[84] +func (x *IsisAuthenticationBase) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[48] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -25245,57 +24838,98 @@ func (x *BgpExtendedCommunityTransitive2OctetAsTypeRouteOrigin) ProtoReflect() p return mi.MessageOf(x) } -// Deprecated: Use BgpExtendedCommunityTransitive2OctetAsTypeRouteOrigin.ProtoReflect.Descriptor instead. -func (*BgpExtendedCommunityTransitive2OctetAsTypeRouteOrigin) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{84} +// Deprecated: Use IsisAuthenticationBase.ProtoReflect.Descriptor instead. +func (*IsisAuthenticationBase) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{48} } -func (x *BgpExtendedCommunityTransitive2OctetAsTypeRouteOrigin) GetGlobal_2ByteAs() uint32 { - if x != nil && x.Global_2ByteAs != nil { - return *x.Global_2ByteAs +func (x *IsisAuthenticationBase) GetAuthType() IsisAuthenticationBase_AuthType_Enum { + if x != nil && x.AuthType != nil { + return *x.AuthType } - return 0 + return IsisAuthenticationBase_AuthType_unspecified } -func (x *BgpExtendedCommunityTransitive2OctetAsTypeRouteOrigin) GetLocal_4ByteAdmin() uint32 { - if x != nil && x.Local_4ByteAdmin != nil { - return *x.Local_4ByteAdmin +func (x *IsisAuthenticationBase) GetMd5() string { + if x != nil && x.Md5 != nil { + return *x.Md5 } - return 0 + return "" } -// The Transitive Two-Octet AS-Specific Extended Community is sent as type 0x00 . -type BgpExtendedCommunityTransitive2OctetAsType struct { +func (x *IsisAuthenticationBase) GetPassword() string { + if x != nil && x.Password != nil { + return *x.Password + } + return "" +} + +// Emulated ISIS IPv4 routes. +type IsisV4RouteRange struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Description missing in models - // default = Choice.Enum.route_target_subtype - Choice *BgpExtendedCommunityTransitive2OctetAsType_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.BgpExtendedCommunityTransitive2OctetAsType_Choice_Enum,oneof" json:"choice,omitempty"` - // Description missing in models - RouteTargetSubtype *BgpExtendedCommunityTransitive2OctetAsTypeRouteTarget `protobuf:"bytes,2,opt,name=route_target_subtype,json=routeTargetSubtype,proto3" json:"route_target_subtype,omitempty"` - // Description missing in models - RouteOriginSubtype *BgpExtendedCommunityTransitive2OctetAsTypeRouteOrigin `protobuf:"bytes,3,opt,name=route_origin_subtype,json=routeOriginSubtype,proto3" json:"route_origin_subtype,omitempty"` + // A list of group of IPv4 route addresses. + Addresses []*V4RouteAddress `protobuf:"bytes,1,rep,name=addresses,proto3" json:"addresses,omitempty"` + // The user-defined metric associated with this route range. + // default = 0 + LinkMetric *uint32 `protobuf:"varint,2,opt,name=link_metric,json=linkMetric,proto3,oneof" json:"link_metric,omitempty"` + // The origin of the advertised route-internal or external to the ISIS area. Options + // include the following: + // Internal-for intra-area routes, through Level 1 LSPs. + // External-for inter-area routes redistributed within L1, through Level + // 1 LSPs. + // default = OriginType.Enum.internal + OriginType *IsisV4RouteRange_OriginType_Enum `protobuf:"varint,3,opt,name=origin_type,json=originType,proto3,enum=otg.IsisV4RouteRange_OriginType_Enum,oneof" json:"origin_type,omitempty"` + // Defines the Up/Down (Redistribution) bit defined for TLVs 128 and 130 by RFC 2966. + // It is used for domain-wide advertisement of prefix information. + // + // Up (0)-used when a prefix is initially advertised within the ISIS L3 + // hierarchy, + // and for all other prefixes in L1 and L2 LSPs. (default) + // Down (1)-used when an L1/L2 router advertises L2 prefixes in L1 LSPs. + // + // The prefixes are being advertised from a higher level (L2) down to a lower level + // (L1). + // default = RedistributionType.Enum.up + RedistributionType *IsisV4RouteRange_RedistributionType_Enum `protobuf:"varint,4,opt,name=redistribution_type,json=redistributionType,proto3,enum=otg.IsisV4RouteRange_RedistributionType_Enum,oneof" json:"redistribution_type,omitempty"` + // Globally unique name of an object. It also serves as the primary key for arrays of + // objects. + // required = true + Name *string `protobuf:"bytes,5,opt,name=name,proto3,oneof" json:"name,omitempty"` + // Specifies whether the sub-TLV for IPv4/IPv6 Extended Reachability Attribute Flags + // will be advertised or not. + // default = False + PrefixAttrEnabled *bool `protobuf:"varint,6,opt,name=prefix_attr_enabled,json=prefixAttrEnabled,proto3,oneof" json:"prefix_attr_enabled,omitempty"` + // External Prefix Flag (Bit 0) + // default = False + XFlag *bool `protobuf:"varint,7,opt,name=x_flag,json=xFlag,proto3,oneof" json:"x_flag,omitempty"` + // Re-advertisement Flag (Bit 1) + // default = False + RFlag *bool `protobuf:"varint,8,opt,name=r_flag,json=rFlag,proto3,oneof" json:"r_flag,omitempty"` + // Node Flag (Bit 2) + // default = False + NFlag *bool `protobuf:"varint,9,opt,name=n_flag,json=nFlag,proto3,oneof" json:"n_flag,omitempty"` } -func (x *BgpExtendedCommunityTransitive2OctetAsType) Reset() { - *x = BgpExtendedCommunityTransitive2OctetAsType{} +func (x *IsisV4RouteRange) Reset() { + *x = IsisV4RouteRange{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[85] + mi := &file_otg_proto_msgTypes[49] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *BgpExtendedCommunityTransitive2OctetAsType) String() string { +func (x *IsisV4RouteRange) String() string { return protoimpl.X.MessageStringOf(x) } -func (*BgpExtendedCommunityTransitive2OctetAsType) ProtoMessage() {} +func (*IsisV4RouteRange) ProtoMessage() {} -func (x *BgpExtendedCommunityTransitive2OctetAsType) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[85] +func (x *IsisV4RouteRange) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[49] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -25306,66 +24940,112 @@ func (x *BgpExtendedCommunityTransitive2OctetAsType) ProtoReflect() protoreflect return mi.MessageOf(x) } -// Deprecated: Use BgpExtendedCommunityTransitive2OctetAsType.ProtoReflect.Descriptor instead. -func (*BgpExtendedCommunityTransitive2OctetAsType) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{85} +// Deprecated: Use IsisV4RouteRange.ProtoReflect.Descriptor instead. +func (*IsisV4RouteRange) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{49} } -func (x *BgpExtendedCommunityTransitive2OctetAsType) GetChoice() BgpExtendedCommunityTransitive2OctetAsType_Choice_Enum { - if x != nil && x.Choice != nil { - return *x.Choice +func (x *IsisV4RouteRange) GetAddresses() []*V4RouteAddress { + if x != nil { + return x.Addresses } - return BgpExtendedCommunityTransitive2OctetAsType_Choice_unspecified + return nil } -func (x *BgpExtendedCommunityTransitive2OctetAsType) GetRouteTargetSubtype() *BgpExtendedCommunityTransitive2OctetAsTypeRouteTarget { - if x != nil { - return x.RouteTargetSubtype +func (x *IsisV4RouteRange) GetLinkMetric() uint32 { + if x != nil && x.LinkMetric != nil { + return *x.LinkMetric } - return nil + return 0 } -func (x *BgpExtendedCommunityTransitive2OctetAsType) GetRouteOriginSubtype() *BgpExtendedCommunityTransitive2OctetAsTypeRouteOrigin { - if x != nil { - return x.RouteOriginSubtype +func (x *IsisV4RouteRange) GetOriginType() IsisV4RouteRange_OriginType_Enum { + if x != nil && x.OriginType != nil { + return *x.OriginType } - return nil + return IsisV4RouteRange_OriginType_unspecified } -// The Route Origin Community identifies one or more routers that inject a set of routes -// (that carry this Community) into BGP It is sent with sub-type as 0x03. -type BgpExtendedCommunityTransitiveIpv4AddressTypeRouteOrigin struct { +func (x *IsisV4RouteRange) GetRedistributionType() IsisV4RouteRange_RedistributionType_Enum { + if x != nil && x.RedistributionType != nil { + return *x.RedistributionType + } + return IsisV4RouteRange_RedistributionType_unspecified +} + +func (x *IsisV4RouteRange) GetName() string { + if x != nil && x.Name != nil { + return *x.Name + } + return "" +} + +func (x *IsisV4RouteRange) GetPrefixAttrEnabled() bool { + if x != nil && x.PrefixAttrEnabled != nil { + return *x.PrefixAttrEnabled + } + return false +} + +func (x *IsisV4RouteRange) GetXFlag() bool { + if x != nil && x.XFlag != nil { + return *x.XFlag + } + return false +} + +func (x *IsisV4RouteRange) GetRFlag() bool { + if x != nil && x.RFlag != nil { + return *x.RFlag + } + return false +} + +func (x *IsisV4RouteRange) GetNFlag() bool { + if x != nil && x.NFlag != nil { + return *x.NFlag + } + return false +} + +// A container for IPv4 route addresses. +type V4RouteAddress struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // An IPv4 unicast address assigned by one of the Internet registries. - // default = 0.0.0.0 - GlobalIpv4Admin *string `protobuf:"bytes,1,opt,name=global_ipv4_admin,json=globalIpv4Admin,proto3,oneof" json:"global_ipv4_admin,omitempty"` - // The Local Administrator sub-field contains a number from a numbering space that is - // administered by the organization to which the IP address carried in the Global Administrator - // sub-field has been assigned by an appropriate authority. + // The starting address of the network. + // required = true + Address *string `protobuf:"bytes,1,opt,name=address,proto3,oneof" json:"address,omitempty"` + // The IPv4 network prefix length to be applied to the address. + // default = 24 + Prefix *uint32 `protobuf:"varint,2,opt,name=prefix,proto3,oneof" json:"prefix,omitempty"` + // The total number of addresses in the range. // default = 1 - Local_2ByteAdmin *uint32 `protobuf:"varint,2,opt,name=local_2byte_admin,json=local2byteAdmin,proto3,oneof" json:"local_2byte_admin,omitempty"` + Count *uint32 `protobuf:"varint,3,opt,name=count,proto3,oneof" json:"count,omitempty"` + // Increments the network address prefixes within a route range where multiple routes + // are present. The value is incremented according to the Prefix Length and Step. + // default = 1 + Step *uint32 `protobuf:"varint,4,opt,name=step,proto3,oneof" json:"step,omitempty"` } -func (x *BgpExtendedCommunityTransitiveIpv4AddressTypeRouteOrigin) Reset() { - *x = BgpExtendedCommunityTransitiveIpv4AddressTypeRouteOrigin{} +func (x *V4RouteAddress) Reset() { + *x = V4RouteAddress{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[86] + mi := &file_otg_proto_msgTypes[50] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *BgpExtendedCommunityTransitiveIpv4AddressTypeRouteOrigin) String() string { +func (x *V4RouteAddress) String() string { return protoimpl.X.MessageStringOf(x) } -func (*BgpExtendedCommunityTransitiveIpv4AddressTypeRouteOrigin) ProtoMessage() {} +func (*V4RouteAddress) ProtoMessage() {} -func (x *BgpExtendedCommunityTransitiveIpv4AddressTypeRouteOrigin) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[86] +func (x *V4RouteAddress) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[50] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -25376,60 +25056,77 @@ func (x *BgpExtendedCommunityTransitiveIpv4AddressTypeRouteOrigin) ProtoReflect( return mi.MessageOf(x) } -// Deprecated: Use BgpExtendedCommunityTransitiveIpv4AddressTypeRouteOrigin.ProtoReflect.Descriptor instead. -func (*BgpExtendedCommunityTransitiveIpv4AddressTypeRouteOrigin) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{86} +// Deprecated: Use V4RouteAddress.ProtoReflect.Descriptor instead. +func (*V4RouteAddress) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{50} } -func (x *BgpExtendedCommunityTransitiveIpv4AddressTypeRouteOrigin) GetGlobalIpv4Admin() string { - if x != nil && x.GlobalIpv4Admin != nil { - return *x.GlobalIpv4Admin +func (x *V4RouteAddress) GetAddress() string { + if x != nil && x.Address != nil { + return *x.Address } return "" } -func (x *BgpExtendedCommunityTransitiveIpv4AddressTypeRouteOrigin) GetLocal_2ByteAdmin() uint32 { - if x != nil && x.Local_2ByteAdmin != nil { - return *x.Local_2ByteAdmin +func (x *V4RouteAddress) GetPrefix() uint32 { + if x != nil && x.Prefix != nil { + return *x.Prefix } return 0 } -// The Route Target Community identifies one or more routers that may receive a set -// of routes (that carry this Community) carried by BGP. It is sent with sub-type as -// 0x02. -type BgpExtendedCommunityTransitiveIpv4AddressTypeRouteTarget struct { +func (x *V4RouteAddress) GetCount() uint32 { + if x != nil && x.Count != nil { + return *x.Count + } + return 0 +} + +func (x *V4RouteAddress) GetStep() uint32 { + if x != nil && x.Step != nil { + return *x.Step + } + return 0 +} + +// A container for IPv6 route addresses. +type V6RouteAddress struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // An IPv4 unicast address assigned by one of the Internet registries. - // default = 0.0.0.0 - GlobalIpv4Admin *string `protobuf:"bytes,1,opt,name=global_ipv4_admin,json=globalIpv4Admin,proto3,oneof" json:"global_ipv4_admin,omitempty"` - // The Local Administrator sub-field contains a number from a numbering space that is - // administered by the organization to which the IP address carried in the Global Administrator - // sub-field has been assigned by an appropriate authority. + // The starting address of the network. + // required = true + Address *string `protobuf:"bytes,1,opt,name=address,proto3,oneof" json:"address,omitempty"` + // The IPv6 network prefix length to be applied to the address. + // default = 64 + Prefix *uint32 `protobuf:"varint,2,opt,name=prefix,proto3,oneof" json:"prefix,omitempty"` + // The total number of addresses in the range. // default = 1 - Local_2ByteAdmin *uint32 `protobuf:"varint,2,opt,name=local_2byte_admin,json=local2byteAdmin,proto3,oneof" json:"local_2byte_admin,omitempty"` + Count *uint32 `protobuf:"varint,3,opt,name=count,proto3,oneof" json:"count,omitempty"` + // Increments the network address prefixes within a route range where multiple routes + // are present. The value is incremented according to the Prefix Length and Step. + // default = 1 + Step *uint32 `protobuf:"varint,4,opt,name=step,proto3,oneof" json:"step,omitempty"` } -func (x *BgpExtendedCommunityTransitiveIpv4AddressTypeRouteTarget) Reset() { - *x = BgpExtendedCommunityTransitiveIpv4AddressTypeRouteTarget{} +func (x *V6RouteAddress) Reset() { + *x = V6RouteAddress{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[87] + mi := &file_otg_proto_msgTypes[51] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *BgpExtendedCommunityTransitiveIpv4AddressTypeRouteTarget) String() string { +func (x *V6RouteAddress) String() string { return protoimpl.X.MessageStringOf(x) } -func (*BgpExtendedCommunityTransitiveIpv4AddressTypeRouteTarget) ProtoMessage() {} +func (*V6RouteAddress) ProtoMessage() {} -func (x *BgpExtendedCommunityTransitiveIpv4AddressTypeRouteTarget) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[87] +func (x *V6RouteAddress) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[51] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -25440,57 +25137,77 @@ func (x *BgpExtendedCommunityTransitiveIpv4AddressTypeRouteTarget) ProtoReflect( return mi.MessageOf(x) } -// Deprecated: Use BgpExtendedCommunityTransitiveIpv4AddressTypeRouteTarget.ProtoReflect.Descriptor instead. -func (*BgpExtendedCommunityTransitiveIpv4AddressTypeRouteTarget) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{87} +// Deprecated: Use V6RouteAddress.ProtoReflect.Descriptor instead. +func (*V6RouteAddress) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{51} } -func (x *BgpExtendedCommunityTransitiveIpv4AddressTypeRouteTarget) GetGlobalIpv4Admin() string { - if x != nil && x.GlobalIpv4Admin != nil { - return *x.GlobalIpv4Admin +func (x *V6RouteAddress) GetAddress() string { + if x != nil && x.Address != nil { + return *x.Address } return "" } -func (x *BgpExtendedCommunityTransitiveIpv4AddressTypeRouteTarget) GetLocal_2ByteAdmin() uint32 { - if x != nil && x.Local_2ByteAdmin != nil { - return *x.Local_2ByteAdmin +func (x *V6RouteAddress) GetPrefix() uint32 { + if x != nil && x.Prefix != nil { + return *x.Prefix } return 0 } -// The Transitive IPv4 Address Specific Extended Community is sent as type 0x01. -type BgpExtendedCommunityTransitiveIpv4AddressType struct { +func (x *V6RouteAddress) GetCount() uint32 { + if x != nil && x.Count != nil { + return *x.Count + } + return 0 +} + +func (x *V6RouteAddress) GetStep() uint32 { + if x != nil && x.Step != nil { + return *x.Step + } + return 0 +} + +// A container for MAC route addresses. +type MACRouteAddress struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Description missing in models - // default = Choice.Enum.route_target_subtype - Choice *BgpExtendedCommunityTransitiveIpv4AddressType_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.BgpExtendedCommunityTransitiveIpv4AddressType_Choice_Enum,oneof" json:"choice,omitempty"` - // Description missing in models - RouteTargetSubtype *BgpExtendedCommunityTransitiveIpv4AddressTypeRouteTarget `protobuf:"bytes,2,opt,name=route_target_subtype,json=routeTargetSubtype,proto3" json:"route_target_subtype,omitempty"` - // Description missing in models - RouteOriginSubtype *BgpExtendedCommunityTransitiveIpv4AddressTypeRouteOrigin `protobuf:"bytes,3,opt,name=route_origin_subtype,json=routeOriginSubtype,proto3" json:"route_origin_subtype,omitempty"` + // The starting address of the MAC Range. + // required = true + Address *string `protobuf:"bytes,1,opt,name=address,proto3,oneof" json:"address,omitempty"` + // The MAC prefix length to be applied to the address. + // default = 48 + Prefix *uint32 `protobuf:"varint,2,opt,name=prefix,proto3,oneof" json:"prefix,omitempty"` + // The total number of mac addresses in the range. + // default = 1 + Count *uint32 `protobuf:"varint,3,opt,name=count,proto3,oneof" json:"count,omitempty"` + // Increments the mac address prefixes within a mac range where multiple routes are + // present. The value is incremented according to the mac prefix Length and Step. + // default = 1 + Step *uint32 `protobuf:"varint,4,opt,name=step,proto3,oneof" json:"step,omitempty"` } -func (x *BgpExtendedCommunityTransitiveIpv4AddressType) Reset() { - *x = BgpExtendedCommunityTransitiveIpv4AddressType{} +func (x *MACRouteAddress) Reset() { + *x = MACRouteAddress{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[88] + mi := &file_otg_proto_msgTypes[52] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *BgpExtendedCommunityTransitiveIpv4AddressType) String() string { +func (x *MACRouteAddress) String() string { return protoimpl.X.MessageStringOf(x) } -func (*BgpExtendedCommunityTransitiveIpv4AddressType) ProtoMessage() {} +func (*MACRouteAddress) ProtoMessage() {} -func (x *BgpExtendedCommunityTransitiveIpv4AddressType) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[88] +func (x *MACRouteAddress) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[52] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -25501,67 +25218,105 @@ func (x *BgpExtendedCommunityTransitiveIpv4AddressType) ProtoReflect() protorefl return mi.MessageOf(x) } -// Deprecated: Use BgpExtendedCommunityTransitiveIpv4AddressType.ProtoReflect.Descriptor instead. -func (*BgpExtendedCommunityTransitiveIpv4AddressType) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{88} +// Deprecated: Use MACRouteAddress.ProtoReflect.Descriptor instead. +func (*MACRouteAddress) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{52} } -func (x *BgpExtendedCommunityTransitiveIpv4AddressType) GetChoice() BgpExtendedCommunityTransitiveIpv4AddressType_Choice_Enum { - if x != nil && x.Choice != nil { - return *x.Choice +func (x *MACRouteAddress) GetAddress() string { + if x != nil && x.Address != nil { + return *x.Address } - return BgpExtendedCommunityTransitiveIpv4AddressType_Choice_unspecified + return "" } -func (x *BgpExtendedCommunityTransitiveIpv4AddressType) GetRouteTargetSubtype() *BgpExtendedCommunityTransitiveIpv4AddressTypeRouteTarget { - if x != nil { - return x.RouteTargetSubtype +func (x *MACRouteAddress) GetPrefix() uint32 { + if x != nil && x.Prefix != nil { + return *x.Prefix } - return nil + return 0 } -func (x *BgpExtendedCommunityTransitiveIpv4AddressType) GetRouteOriginSubtype() *BgpExtendedCommunityTransitiveIpv4AddressTypeRouteOrigin { - if x != nil { - return x.RouteOriginSubtype +func (x *MACRouteAddress) GetCount() uint32 { + if x != nil && x.Count != nil { + return *x.Count } - return nil + return 0 } -// The Route Target Community identifies one or more routers that may receive a set -// of routes (that carry this Community) carried by BGP. It is sent with sub-type as -// 0x02 -type BgpExtendedCommunityTransitive4OctetAsTypeRouteTarget struct { +func (x *MACRouteAddress) GetStep() uint32 { + if x != nil && x.Step != nil { + return *x.Step + } + return 0 +} + +// Emulated ISIS IPv6 routes. +type IsisV6RouteRange struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // The four octet IANA assigned AS value assigned to the Autonomous System. - // default = 100 - Global_4ByteAs *uint32 `protobuf:"varint,1,opt,name=global_4byte_as,json=global4byteAs,proto3,oneof" json:"global_4byte_as,omitempty"` - // The Local Administrator sub-field contains a number from a numbering space that is - // administered by the organization to which the Autonomous System number carried in - // the Global Administrator sub-field has been assigned by an appropriate authority. - // default = 1 - Local_2ByteAdmin *uint32 `protobuf:"varint,2,opt,name=local_2byte_admin,json=local2byteAdmin,proto3,oneof" json:"local_2byte_admin,omitempty"` + // A list of group of IPv6 route addresses. + Addresses []*V6RouteAddress `protobuf:"bytes,1,rep,name=addresses,proto3" json:"addresses,omitempty"` + // The user-defined metric associated with this route range. + // default = 0 + LinkMetric *uint32 `protobuf:"varint,2,opt,name=link_metric,json=linkMetric,proto3,oneof" json:"link_metric,omitempty"` + // The origin of the advertised route-internal or external to the ISIS area. Options + // include the following: + // Internal-for intra-area routes, through Level 1 LSPs. + // External-for inter-area routes redistributed within L1, through Level + // 1 LSPs. + // default = OriginType.Enum.internal + OriginType *IsisV6RouteRange_OriginType_Enum `protobuf:"varint,3,opt,name=origin_type,json=originType,proto3,enum=otg.IsisV6RouteRange_OriginType_Enum,oneof" json:"origin_type,omitempty"` + // Defines the Up/Down (Redistribution) bit defined for TLVs 128 and 130 by RFC 2966. + // It is used for domain-wide advertisement of prefix information. + // + // Up (0)-used when a prefix is initially advertised within the ISIS L3 + // hierarchy, + // and for all other prefixes in L1 and L2 LSPs. (default) + // Down (1)-used when an L1/L2 router advertises L2 prefixes in L1 LSPs. + // + // The prefixes are being advertised from a higher level (L2) down to a lower level + // (L1). + // default = RedistributionType.Enum.up + RedistributionType *IsisV6RouteRange_RedistributionType_Enum `protobuf:"varint,4,opt,name=redistribution_type,json=redistributionType,proto3,enum=otg.IsisV6RouteRange_RedistributionType_Enum,oneof" json:"redistribution_type,omitempty"` + // Globally unique name of an object. It also serves as the primary key for arrays of + // objects. + // required = true + Name *string `protobuf:"bytes,5,opt,name=name,proto3,oneof" json:"name,omitempty"` + // Specifies whether the sub-TLV for IPv4/IPv6 Extended Reachability Attribute Flags + // will be advertised or not. + // default = False + PrefixAttrEnabled *bool `protobuf:"varint,6,opt,name=prefix_attr_enabled,json=prefixAttrEnabled,proto3,oneof" json:"prefix_attr_enabled,omitempty"` + // External Prefix Flag (Bit 0) + // default = False + XFlag *bool `protobuf:"varint,7,opt,name=x_flag,json=xFlag,proto3,oneof" json:"x_flag,omitempty"` + // Re-advertisement Flag (Bit 1) + // default = False + RFlag *bool `protobuf:"varint,8,opt,name=r_flag,json=rFlag,proto3,oneof" json:"r_flag,omitempty"` + // Node Flag (Bit 2) + // default = False + NFlag *bool `protobuf:"varint,9,opt,name=n_flag,json=nFlag,proto3,oneof" json:"n_flag,omitempty"` } -func (x *BgpExtendedCommunityTransitive4OctetAsTypeRouteTarget) Reset() { - *x = BgpExtendedCommunityTransitive4OctetAsTypeRouteTarget{} +func (x *IsisV6RouteRange) Reset() { + *x = IsisV6RouteRange{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[89] + mi := &file_otg_proto_msgTypes[53] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *BgpExtendedCommunityTransitive4OctetAsTypeRouteTarget) String() string { +func (x *IsisV6RouteRange) String() string { return protoimpl.X.MessageStringOf(x) } -func (*BgpExtendedCommunityTransitive4OctetAsTypeRouteTarget) ProtoMessage() {} +func (*IsisV6RouteRange) ProtoMessage() {} -func (x *BgpExtendedCommunityTransitive4OctetAsTypeRouteTarget) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[89] +func (x *IsisV6RouteRange) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[53] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -25572,121 +25327,109 @@ func (x *BgpExtendedCommunityTransitive4OctetAsTypeRouteTarget) ProtoReflect() p return mi.MessageOf(x) } -// Deprecated: Use BgpExtendedCommunityTransitive4OctetAsTypeRouteTarget.ProtoReflect.Descriptor instead. -func (*BgpExtendedCommunityTransitive4OctetAsTypeRouteTarget) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{89} +// Deprecated: Use IsisV6RouteRange.ProtoReflect.Descriptor instead. +func (*IsisV6RouteRange) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{53} } -func (x *BgpExtendedCommunityTransitive4OctetAsTypeRouteTarget) GetGlobal_4ByteAs() uint32 { - if x != nil && x.Global_4ByteAs != nil { - return *x.Global_4ByteAs +func (x *IsisV6RouteRange) GetAddresses() []*V6RouteAddress { + if x != nil { + return x.Addresses } - return 0 + return nil } -func (x *BgpExtendedCommunityTransitive4OctetAsTypeRouteTarget) GetLocal_2ByteAdmin() uint32 { - if x != nil && x.Local_2ByteAdmin != nil { - return *x.Local_2ByteAdmin +func (x *IsisV6RouteRange) GetLinkMetric() uint32 { + if x != nil && x.LinkMetric != nil { + return *x.LinkMetric } return 0 } -// The Route Origin Community identifies one or more routers that inject a set of routes -// (that carry this Community) into BGP. It is sent with sub-type as 0x03. -type BgpExtendedCommunityTransitive4OctetAsTypeRouteOrigin struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // The four octet IANA assigned AS value assigned to the Autonomous System. - // default = 100 - Global_4ByteAs *uint32 `protobuf:"varint,1,opt,name=global_4byte_as,json=global4byteAs,proto3,oneof" json:"global_4byte_as,omitempty"` - // The Local Administrator sub-field contains a number from a numbering space that is - // administered by the organization to which the Autonomous System number carried in - // the Global Administrator sub-field has been assigned by an appropriate authority. - // default = 1 - Local_2ByteAdmin *uint32 `protobuf:"varint,2,opt,name=local_2byte_admin,json=local2byteAdmin,proto3,oneof" json:"local_2byte_admin,omitempty"` +func (x *IsisV6RouteRange) GetOriginType() IsisV6RouteRange_OriginType_Enum { + if x != nil && x.OriginType != nil { + return *x.OriginType + } + return IsisV6RouteRange_OriginType_unspecified } -func (x *BgpExtendedCommunityTransitive4OctetAsTypeRouteOrigin) Reset() { - *x = BgpExtendedCommunityTransitive4OctetAsTypeRouteOrigin{} - if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[90] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) +func (x *IsisV6RouteRange) GetRedistributionType() IsisV6RouteRange_RedistributionType_Enum { + if x != nil && x.RedistributionType != nil { + return *x.RedistributionType } + return IsisV6RouteRange_RedistributionType_unspecified } -func (x *BgpExtendedCommunityTransitive4OctetAsTypeRouteOrigin) String() string { - return protoimpl.X.MessageStringOf(x) +func (x *IsisV6RouteRange) GetName() string { + if x != nil && x.Name != nil { + return *x.Name + } + return "" } -func (*BgpExtendedCommunityTransitive4OctetAsTypeRouteOrigin) ProtoMessage() {} - -func (x *BgpExtendedCommunityTransitive4OctetAsTypeRouteOrigin) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[90] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms +func (x *IsisV6RouteRange) GetPrefixAttrEnabled() bool { + if x != nil && x.PrefixAttrEnabled != nil { + return *x.PrefixAttrEnabled } - return mi.MessageOf(x) + return false } -// Deprecated: Use BgpExtendedCommunityTransitive4OctetAsTypeRouteOrigin.ProtoReflect.Descriptor instead. -func (*BgpExtendedCommunityTransitive4OctetAsTypeRouteOrigin) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{90} +func (x *IsisV6RouteRange) GetXFlag() bool { + if x != nil && x.XFlag != nil { + return *x.XFlag + } + return false } -func (x *BgpExtendedCommunityTransitive4OctetAsTypeRouteOrigin) GetGlobal_4ByteAs() uint32 { - if x != nil && x.Global_4ByteAs != nil { - return *x.Global_4ByteAs +func (x *IsisV6RouteRange) GetRFlag() bool { + if x != nil && x.RFlag != nil { + return *x.RFlag } - return 0 + return false } -func (x *BgpExtendedCommunityTransitive4OctetAsTypeRouteOrigin) GetLocal_2ByteAdmin() uint32 { - if x != nil && x.Local_2ByteAdmin != nil { - return *x.Local_2ByteAdmin +func (x *IsisV6RouteRange) GetNFlag() bool { + if x != nil && x.NFlag != nil { + return *x.NFlag } - return 0 + return false } -// The Transitive Four-Octet AS-Specific Extended Community is sent as type 0x02. It -// is defined in RFC 5668. -type BgpExtendedCommunityTransitive4OctetAsType struct { +// Configuration for one or more IPv4 or IPv6 BGP peers. +type DeviceBgpRouter struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Description missing in models - // default = Choice.Enum.route_target_subtype - Choice *BgpExtendedCommunityTransitive4OctetAsType_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.BgpExtendedCommunityTransitive4OctetAsType_Choice_Enum,oneof" json:"choice,omitempty"` - // Description missing in models - RouteTargetSubtype *BgpExtendedCommunityTransitive4OctetAsTypeRouteTarget `protobuf:"bytes,2,opt,name=route_target_subtype,json=routeTargetSubtype,proto3" json:"route_target_subtype,omitempty"` - // Description missing in models - RouteOriginSubtype *BgpExtendedCommunityTransitive4OctetAsTypeRouteOrigin `protobuf:"bytes,3,opt,name=route_origin_subtype,json=routeOriginSubtype,proto3" json:"route_origin_subtype,omitempty"` + // The BGP router ID is a unique identifier used by BGP. It is a 32-bit value that is + // often represented by an IPv4 address. + // required = true + RouterId *string `protobuf:"bytes,1,opt,name=router_id,json=routerId,proto3,oneof" json:"router_id,omitempty"` + // This contains an array of references to IPv4 interfaces, each of which will have + // list of peers to different destinations. + Ipv4Interfaces []*BgpV4Interface `protobuf:"bytes,2,rep,name=ipv4_interfaces,json=ipv4Interfaces,proto3" json:"ipv4_interfaces,omitempty"` + // This contains an array of references to IPv6 interfaces, each of which will have + // list of peers to different destinations. + Ipv6Interfaces []*BgpV6Interface `protobuf:"bytes,3,rep,name=ipv6_interfaces,json=ipv6Interfaces,proto3" json:"ipv6_interfaces,omitempty"` } -func (x *BgpExtendedCommunityTransitive4OctetAsType) Reset() { - *x = BgpExtendedCommunityTransitive4OctetAsType{} +func (x *DeviceBgpRouter) Reset() { + *x = DeviceBgpRouter{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[91] + mi := &file_otg_proto_msgTypes[54] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *BgpExtendedCommunityTransitive4OctetAsType) String() string { +func (x *DeviceBgpRouter) String() string { return protoimpl.X.MessageStringOf(x) } -func (*BgpExtendedCommunityTransitive4OctetAsType) ProtoMessage() {} +func (*DeviceBgpRouter) ProtoMessage() {} -func (x *BgpExtendedCommunityTransitive4OctetAsType) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[91] +func (x *DeviceBgpRouter) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[54] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -25697,68 +25440,63 @@ func (x *BgpExtendedCommunityTransitive4OctetAsType) ProtoReflect() protoreflect return mi.MessageOf(x) } -// Deprecated: Use BgpExtendedCommunityTransitive4OctetAsType.ProtoReflect.Descriptor instead. -func (*BgpExtendedCommunityTransitive4OctetAsType) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{91} +// Deprecated: Use DeviceBgpRouter.ProtoReflect.Descriptor instead. +func (*DeviceBgpRouter) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{54} } -func (x *BgpExtendedCommunityTransitive4OctetAsType) GetChoice() BgpExtendedCommunityTransitive4OctetAsType_Choice_Enum { - if x != nil && x.Choice != nil { - return *x.Choice +func (x *DeviceBgpRouter) GetRouterId() string { + if x != nil && x.RouterId != nil { + return *x.RouterId } - return BgpExtendedCommunityTransitive4OctetAsType_Choice_unspecified + return "" } -func (x *BgpExtendedCommunityTransitive4OctetAsType) GetRouteTargetSubtype() *BgpExtendedCommunityTransitive4OctetAsTypeRouteTarget { +func (x *DeviceBgpRouter) GetIpv4Interfaces() []*BgpV4Interface { if x != nil { - return x.RouteTargetSubtype + return x.Ipv4Interfaces } return nil } -func (x *BgpExtendedCommunityTransitive4OctetAsType) GetRouteOriginSubtype() *BgpExtendedCommunityTransitive4OctetAsTypeRouteOrigin { +func (x *DeviceBgpRouter) GetIpv6Interfaces() []*BgpV6Interface { if x != nil { - return x.RouteOriginSubtype + return x.Ipv6Interfaces } return nil } -// The Color Community contains locally administrator defined 'color' value which is -// used in conjunction with Encapsulation attribute to decide whether a data packet -// can be transmitted on a certain tunnel or not. It is defined in RFC9012 and sent -// with sub-type as 0x0b. -type BgpExtendedCommunityTransitiveOpaqueTypeColor struct { +// All errors detected while processing the Message Header are indicated by sending +// the NOTIFICATION message with the Error Code-Message Header Error. The Error Subcode +// elaborates on the specific nature of the error. +type DeviceBgpMessageHeaderError struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Two octet flag values. - // default = 0 - Flags *uint32 `protobuf:"varint,1,opt,name=flags,proto3,oneof" json:"flags,omitempty"` - // The color value is user defined and configured locally and used to determine whether - // a data packet can be transmitted on a certain tunnel or not in conjunction with the - // Encapsulation attribute. It is defined in RFC9012. - // default = 0 - Color *uint32 `protobuf:"varint,2,opt,name=color,proto3,oneof" json:"color,omitempty"` + // The Error Subcode indicates the specific type of error encountered during Message + // Header processing. + // default = Subcode.Enum.connection_not_synchronized_code1_subcode1 + Subcode *DeviceBgpMessageHeaderError_Subcode_Enum `protobuf:"varint,1,opt,name=subcode,proto3,enum=otg.DeviceBgpMessageHeaderError_Subcode_Enum,oneof" json:"subcode,omitempty"` } -func (x *BgpExtendedCommunityTransitiveOpaqueTypeColor) Reset() { - *x = BgpExtendedCommunityTransitiveOpaqueTypeColor{} +func (x *DeviceBgpMessageHeaderError) Reset() { + *x = DeviceBgpMessageHeaderError{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[92] + mi := &file_otg_proto_msgTypes[55] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *BgpExtendedCommunityTransitiveOpaqueTypeColor) String() string { +func (x *DeviceBgpMessageHeaderError) String() string { return protoimpl.X.MessageStringOf(x) } -func (*BgpExtendedCommunityTransitiveOpaqueTypeColor) ProtoMessage() {} +func (*DeviceBgpMessageHeaderError) ProtoMessage() {} -func (x *BgpExtendedCommunityTransitiveOpaqueTypeColor) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[92] +func (x *DeviceBgpMessageHeaderError) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[55] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -25769,67 +25507,49 @@ func (x *BgpExtendedCommunityTransitiveOpaqueTypeColor) ProtoReflect() protorefl return mi.MessageOf(x) } -// Deprecated: Use BgpExtendedCommunityTransitiveOpaqueTypeColor.ProtoReflect.Descriptor instead. -func (*BgpExtendedCommunityTransitiveOpaqueTypeColor) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{92} -} - -func (x *BgpExtendedCommunityTransitiveOpaqueTypeColor) GetFlags() uint32 { - if x != nil && x.Flags != nil { - return *x.Flags - } - return 0 +// Deprecated: Use DeviceBgpMessageHeaderError.ProtoReflect.Descriptor instead. +func (*DeviceBgpMessageHeaderError) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{55} } -func (x *BgpExtendedCommunityTransitiveOpaqueTypeColor) GetColor() uint32 { - if x != nil && x.Color != nil { - return *x.Color +func (x *DeviceBgpMessageHeaderError) GetSubcode() DeviceBgpMessageHeaderError_Subcode_Enum { + if x != nil && x.Subcode != nil { + return *x.Subcode } - return 0 + return DeviceBgpMessageHeaderError_Subcode_unspecified } -// This identifies the type of tunneling technology being signalled. It is defined in -// RFC9012 and sent with sub-type as 0x0c. -type BgpExtendedCommunityTransitiveOpaqueTypeEncapsulation struct { +// All errors detected while processing the OPEN message are indicated by sending the +// NOTIFICATION message with the Error Code-Open Message Error. The Error Subcode elaborates +// on the specific nature of the error. +type DeviceBgpOpenMessageError struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Four bytes of reserved values. Normally set to 0 on transmit and ignored on receive. - // - // default = 0 - Reserved *uint32 `protobuf:"varint,1,opt,name=reserved,proto3,oneof" json:"reserved,omitempty"` - // Identifies the type of tunneling technology being signalled. Initially defined in - // RFC5512 and extended in RFC9012. Some of the important tunnel types include 1 L2TPv3 - // over IP [RFC9012], - // 2 GRE [RFC9012] - // 7 IP in IP [RFC9012] - // 8 VXLAN Encapsulation [RFC8365] - // 9 NVGRE Encapsulation [RFC8365] - // 10 MPLS Encapsulation [RFC8365] - // 15 SR TE Policy Type [draft-ietf-idr-segment-routing-te-policy] - // 19 Geneve Encapsulation [RFC8926] - // default = 1 - TunnelType *uint32 `protobuf:"varint,2,opt,name=tunnel_type,json=tunnelType,proto3,oneof" json:"tunnel_type,omitempty"` + // The Error Subcode indicates the specific type of error encountered during OPEN message + // processing. + // default = Subcode.Enum.unsupported_version_number_code2_subcode1 + Subcode *DeviceBgpOpenMessageError_Subcode_Enum `protobuf:"varint,1,opt,name=subcode,proto3,enum=otg.DeviceBgpOpenMessageError_Subcode_Enum,oneof" json:"subcode,omitempty"` } -func (x *BgpExtendedCommunityTransitiveOpaqueTypeEncapsulation) Reset() { - *x = BgpExtendedCommunityTransitiveOpaqueTypeEncapsulation{} +func (x *DeviceBgpOpenMessageError) Reset() { + *x = DeviceBgpOpenMessageError{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[93] + mi := &file_otg_proto_msgTypes[56] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *BgpExtendedCommunityTransitiveOpaqueTypeEncapsulation) String() string { +func (x *DeviceBgpOpenMessageError) String() string { return protoimpl.X.MessageStringOf(x) } -func (*BgpExtendedCommunityTransitiveOpaqueTypeEncapsulation) ProtoMessage() {} +func (*DeviceBgpOpenMessageError) ProtoMessage() {} -func (x *BgpExtendedCommunityTransitiveOpaqueTypeEncapsulation) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[93] +func (x *DeviceBgpOpenMessageError) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[56] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -25840,57 +25560,48 @@ func (x *BgpExtendedCommunityTransitiveOpaqueTypeEncapsulation) ProtoReflect() p return mi.MessageOf(x) } -// Deprecated: Use BgpExtendedCommunityTransitiveOpaqueTypeEncapsulation.ProtoReflect.Descriptor instead. -func (*BgpExtendedCommunityTransitiveOpaqueTypeEncapsulation) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{93} -} - -func (x *BgpExtendedCommunityTransitiveOpaqueTypeEncapsulation) GetReserved() uint32 { - if x != nil && x.Reserved != nil { - return *x.Reserved - } - return 0 +// Deprecated: Use DeviceBgpOpenMessageError.ProtoReflect.Descriptor instead. +func (*DeviceBgpOpenMessageError) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{56} } -func (x *BgpExtendedCommunityTransitiveOpaqueTypeEncapsulation) GetTunnelType() uint32 { - if x != nil && x.TunnelType != nil { - return *x.TunnelType +func (x *DeviceBgpOpenMessageError) GetSubcode() DeviceBgpOpenMessageError_Subcode_Enum { + if x != nil && x.Subcode != nil { + return *x.Subcode } - return 0 + return DeviceBgpOpenMessageError_Subcode_unspecified } -// The Transitive Opaque Extended Community is sent as type 0x03. -type BgpExtendedCommunityTransitiveOpaqueType struct { +// All errors detected while processing the UPDATE message are indicated by sending +// the NOTIFICATION message with the Error Code-Update Message Error. The Error Subcode +// elaborates on the specific nature of the error. +type DeviceBgpUpdateMessageError struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Description missing in models - // default = Choice.Enum.color_subtype - Choice *BgpExtendedCommunityTransitiveOpaqueType_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.BgpExtendedCommunityTransitiveOpaqueType_Choice_Enum,oneof" json:"choice,omitempty"` - // Description missing in models - ColorSubtype *BgpExtendedCommunityTransitiveOpaqueTypeColor `protobuf:"bytes,2,opt,name=color_subtype,json=colorSubtype,proto3" json:"color_subtype,omitempty"` - // Description missing in models - EncapsulationSubtype *BgpExtendedCommunityTransitiveOpaqueTypeEncapsulation `protobuf:"bytes,3,opt,name=encapsulation_subtype,json=encapsulationSubtype,proto3" json:"encapsulation_subtype,omitempty"` + // The Error Subcode, the specific type of error encountered during UPDATE processing. + // default = Subcode.Enum.malformed_attrib_list_code3_subcode1 + Subcode *DeviceBgpUpdateMessageError_Subcode_Enum `protobuf:"varint,1,opt,name=subcode,proto3,enum=otg.DeviceBgpUpdateMessageError_Subcode_Enum,oneof" json:"subcode,omitempty"` } -func (x *BgpExtendedCommunityTransitiveOpaqueType) Reset() { - *x = BgpExtendedCommunityTransitiveOpaqueType{} +func (x *DeviceBgpUpdateMessageError) Reset() { + *x = DeviceBgpUpdateMessageError{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[94] + mi := &file_otg_proto_msgTypes[57] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *BgpExtendedCommunityTransitiveOpaqueType) String() string { +func (x *DeviceBgpUpdateMessageError) String() string { return protoimpl.X.MessageStringOf(x) } -func (*BgpExtendedCommunityTransitiveOpaqueType) ProtoMessage() {} +func (*DeviceBgpUpdateMessageError) ProtoMessage() {} -func (x *BgpExtendedCommunityTransitiveOpaqueType) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[94] +func (x *DeviceBgpUpdateMessageError) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[57] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -25901,61 +25612,46 @@ func (x *BgpExtendedCommunityTransitiveOpaqueType) ProtoReflect() protoreflect.M return mi.MessageOf(x) } -// Deprecated: Use BgpExtendedCommunityTransitiveOpaqueType.ProtoReflect.Descriptor instead. -func (*BgpExtendedCommunityTransitiveOpaqueType) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{94} -} - -func (x *BgpExtendedCommunityTransitiveOpaqueType) GetChoice() BgpExtendedCommunityTransitiveOpaqueType_Choice_Enum { - if x != nil && x.Choice != nil { - return *x.Choice - } - return BgpExtendedCommunityTransitiveOpaqueType_Choice_unspecified -} - -func (x *BgpExtendedCommunityTransitiveOpaqueType) GetColorSubtype() *BgpExtendedCommunityTransitiveOpaqueTypeColor { - if x != nil { - return x.ColorSubtype - } - return nil +// Deprecated: Use DeviceBgpUpdateMessageError.ProtoReflect.Descriptor instead. +func (*DeviceBgpUpdateMessageError) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{57} } -func (x *BgpExtendedCommunityTransitiveOpaqueType) GetEncapsulationSubtype() *BgpExtendedCommunityTransitiveOpaqueTypeEncapsulation { - if x != nil { - return x.EncapsulationSubtype +func (x *DeviceBgpUpdateMessageError) GetSubcode() DeviceBgpUpdateMessageError_Subcode_Enum { + if x != nil && x.Subcode != nil { + return *x.Subcode } - return nil + return DeviceBgpUpdateMessageError_Subcode_unspecified } -// The Router MAC EVPN Community is defined in RFC9135 and normally sent only for EVPN -// Type-2 Routes . It is sent with sub-type 0x03. -type BgpExtendedCommunityTransitiveEvpnTypeRouterMac struct { +// If a system does not receive successive KEEPALIVE, UPDATE, and/or NOTIFICATION messages +// within the period specified in the Hold Time field of the OPEN message, then the +// NOTIFICATION message with the Hold Timer Expired Error Code(Error Code 4) is sent +// and the BGP connection is closed. The Sub Code used is 0. If a user wants to use +// non zero Sub Code then CustomError can be used. +type DeviceBgpHoldTimerExpired struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - - // MAC Address of the PE Router. - // default = 0:0:0:0:0:0 - RouterMac *string `protobuf:"bytes,1,opt,name=router_mac,json=routerMac,proto3,oneof" json:"router_mac,omitempty"` } -func (x *BgpExtendedCommunityTransitiveEvpnTypeRouterMac) Reset() { - *x = BgpExtendedCommunityTransitiveEvpnTypeRouterMac{} +func (x *DeviceBgpHoldTimerExpired) Reset() { + *x = DeviceBgpHoldTimerExpired{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[95] + mi := &file_otg_proto_msgTypes[58] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *BgpExtendedCommunityTransitiveEvpnTypeRouterMac) String() string { +func (x *DeviceBgpHoldTimerExpired) String() string { return protoimpl.X.MessageStringOf(x) } -func (*BgpExtendedCommunityTransitiveEvpnTypeRouterMac) ProtoMessage() {} +func (*DeviceBgpHoldTimerExpired) ProtoMessage() {} -func (x *BgpExtendedCommunityTransitiveEvpnTypeRouterMac) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[95] +func (x *DeviceBgpHoldTimerExpired) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[58] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -25966,48 +25662,82 @@ func (x *BgpExtendedCommunityTransitiveEvpnTypeRouterMac) ProtoReflect() protore return mi.MessageOf(x) } -// Deprecated: Use BgpExtendedCommunityTransitiveEvpnTypeRouterMac.ProtoReflect.Descriptor instead. -func (*BgpExtendedCommunityTransitiveEvpnTypeRouterMac) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{95} +// Deprecated: Use DeviceBgpHoldTimerExpired.ProtoReflect.Descriptor instead. +func (*DeviceBgpHoldTimerExpired) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{58} } -func (x *BgpExtendedCommunityTransitiveEvpnTypeRouterMac) GetRouterMac() string { - if x != nil && x.RouterMac != nil { - return *x.RouterMac +// Any error detected by the BGP Finite State Machine (e.g., receipt of an unexpected +// event) is indicated by sending the NOTIFICATION message with the Error Code-Finite +// State Machine Error(Error Code 5). The Sub Code used is 0. If a user wants to use +// non zero Sub Code then CustomError can be used. +type DeviceBgpFiniteStateMachineError struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *DeviceBgpFiniteStateMachineError) Reset() { + *x = DeviceBgpFiniteStateMachineError{} + if protoimpl.UnsafeEnabled { + mi := &file_otg_proto_msgTypes[59] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } - return "" } -// The Transitive EVPN Extended Community is sent as type 0x06 . -type BgpExtendedCommunityTransitiveEvpnType struct { +func (x *DeviceBgpFiniteStateMachineError) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*DeviceBgpFiniteStateMachineError) ProtoMessage() {} + +func (x *DeviceBgpFiniteStateMachineError) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[59] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use DeviceBgpFiniteStateMachineError.ProtoReflect.Descriptor instead. +func (*DeviceBgpFiniteStateMachineError) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{59} +} + +// In the absence of any fatal errors, a BGP peer can close its BGP connection by sending +// the NOTIFICATION message with the Error Code Cease. +type DeviceBgpCeaseError struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Description missing in models - // default = Choice.Enum.router_mac_subtype - Choice *BgpExtendedCommunityTransitiveEvpnType_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.BgpExtendedCommunityTransitiveEvpnType_Choice_Enum,oneof" json:"choice,omitempty"` - // Description missing in models - RouterMacSubtype *BgpExtendedCommunityTransitiveEvpnTypeRouterMac `protobuf:"bytes,2,opt,name=router_mac_subtype,json=routerMacSubtype,proto3" json:"router_mac_subtype,omitempty"` + // The Error Subcode to be sent to the peer in the Cease NOTIFICATION. + // default = Subcode.Enum.admin_shutdown_code6_subcode2 + Subcode *DeviceBgpCeaseError_Subcode_Enum `protobuf:"varint,1,opt,name=subcode,proto3,enum=otg.DeviceBgpCeaseError_Subcode_Enum,oneof" json:"subcode,omitempty"` } -func (x *BgpExtendedCommunityTransitiveEvpnType) Reset() { - *x = BgpExtendedCommunityTransitiveEvpnType{} +func (x *DeviceBgpCeaseError) Reset() { + *x = DeviceBgpCeaseError{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[96] + mi := &file_otg_proto_msgTypes[60] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *BgpExtendedCommunityTransitiveEvpnType) String() string { +func (x *DeviceBgpCeaseError) String() string { return protoimpl.X.MessageStringOf(x) } -func (*BgpExtendedCommunityTransitiveEvpnType) ProtoMessage() {} +func (*DeviceBgpCeaseError) ProtoMessage() {} -func (x *BgpExtendedCommunityTransitiveEvpnType) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[96] +func (x *DeviceBgpCeaseError) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[60] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -26018,60 +25748,47 @@ func (x *BgpExtendedCommunityTransitiveEvpnType) ProtoReflect() protoreflect.Mes return mi.MessageOf(x) } -// Deprecated: Use BgpExtendedCommunityTransitiveEvpnType.ProtoReflect.Descriptor instead. -func (*BgpExtendedCommunityTransitiveEvpnType) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{96} -} - -func (x *BgpExtendedCommunityTransitiveEvpnType) GetChoice() BgpExtendedCommunityTransitiveEvpnType_Choice_Enum { - if x != nil && x.Choice != nil { - return *x.Choice - } - return BgpExtendedCommunityTransitiveEvpnType_Choice_unspecified +// Deprecated: Use DeviceBgpCeaseError.ProtoReflect.Descriptor instead. +func (*DeviceBgpCeaseError) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{60} } -func (x *BgpExtendedCommunityTransitiveEvpnType) GetRouterMacSubtype() *BgpExtendedCommunityTransitiveEvpnTypeRouterMac { - if x != nil { - return x.RouterMacSubtype +func (x *DeviceBgpCeaseError) GetSubcode() DeviceBgpCeaseError_Subcode_Enum { + if x != nil && x.Subcode != nil { + return *x.Subcode } - return nil + return DeviceBgpCeaseError_Subcode_unspecified } -// The Link Bandwidth Extended Community attribute is defined in draft-ietf-idr-link-bandwidth. -// It is sent with sub-type as 0x04. -type BgpExtendedCommunityNonTransitive2OctetAsTypeLinkBandwidth struct { +// A BGP peer can send NOTIFICATION message with user defined Error Code and Error Subcode. +type DeviceBgpCustomError struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // The value of the Global Administrator subfield should represent the Autonomous System - // of the router that attaches the Link Bandwidth Community. If four octet AS numbering - // scheme is used, AS_TRANS (23456) should be used. - // default = 100 - Global_2ByteAs *uint32 `protobuf:"varint,1,opt,name=global_2byte_as,json=global2byteAs,proto3,oneof" json:"global_2byte_as,omitempty"` - // Bandwidth of the link in bytes per second. ( 1 Kbps is 1000 bytes per second and - // 1 Mbps is 1000 Kbps per second ) - // default = 0 - Bandwidth *float32 `protobuf:"fixed32,2,opt,name=bandwidth,proto3,oneof" json:"bandwidth,omitempty"` + // The Error code to be sent in the NOTIFICATION message to peer. + Code *uint32 `protobuf:"varint,1,opt,name=code,proto3,oneof" json:"code,omitempty"` + // The Error Subcode to be sent in the NOTIFICATION message to peer. + Subcode *uint32 `protobuf:"varint,2,opt,name=subcode,proto3,oneof" json:"subcode,omitempty"` } -func (x *BgpExtendedCommunityNonTransitive2OctetAsTypeLinkBandwidth) Reset() { - *x = BgpExtendedCommunityNonTransitive2OctetAsTypeLinkBandwidth{} +func (x *DeviceBgpCustomError) Reset() { + *x = DeviceBgpCustomError{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[97] + mi := &file_otg_proto_msgTypes[61] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *BgpExtendedCommunityNonTransitive2OctetAsTypeLinkBandwidth) String() string { +func (x *DeviceBgpCustomError) String() string { return protoimpl.X.MessageStringOf(x) } -func (*BgpExtendedCommunityNonTransitive2OctetAsTypeLinkBandwidth) ProtoMessage() {} +func (*DeviceBgpCustomError) ProtoMessage() {} -func (x *BgpExtendedCommunityNonTransitive2OctetAsTypeLinkBandwidth) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[97] +func (x *DeviceBgpCustomError) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[61] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -26082,55 +25799,114 @@ func (x *BgpExtendedCommunityNonTransitive2OctetAsTypeLinkBandwidth) ProtoReflec return mi.MessageOf(x) } -// Deprecated: Use BgpExtendedCommunityNonTransitive2OctetAsTypeLinkBandwidth.ProtoReflect.Descriptor instead. -func (*BgpExtendedCommunityNonTransitive2OctetAsTypeLinkBandwidth) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{97} +// Deprecated: Use DeviceBgpCustomError.ProtoReflect.Descriptor instead. +func (*DeviceBgpCustomError) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{61} } -func (x *BgpExtendedCommunityNonTransitive2OctetAsTypeLinkBandwidth) GetGlobal_2ByteAs() uint32 { - if x != nil && x.Global_2ByteAs != nil { - return *x.Global_2ByteAs +func (x *DeviceBgpCustomError) GetCode() uint32 { + if x != nil && x.Code != nil { + return *x.Code } return 0 } -func (x *BgpExtendedCommunityNonTransitive2OctetAsTypeLinkBandwidth) GetBandwidth() float32 { - if x != nil && x.Bandwidth != nil { - return *x.Bandwidth +func (x *DeviceBgpCustomError) GetSubcode() uint32 { + if x != nil && x.Subcode != nil { + return *x.Subcode } return 0 } -// The Non-Transitive Two-Octet AS-Specific Extended Community is sent as type 0x40. -type BgpExtendedCommunityNonTransitive2OctetAsType struct { +// Configuration for emulated BGPv4 peers and routes. +type BgpV4Peer struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields + // IPv4 address of the BGP peer for the session. + // required = true + PeerAddress *string `protobuf:"bytes,1,opt,name=peer_address,json=peerAddress,proto3,oneof" json:"peer_address,omitempty"` + // This contains the list of Ethernet Virtual Private Network (EVPN) Ethernet Segments + // (ES) Per BGP Peer for IPv4 Address Family Identifier (AFI). + // + // Each Ethernet Segment contains a list of EVPN Instances (EVIs) . + // Each EVI contains a list of Broadcast Domains. + // Each Broadcast Domain contains a list of MAC/IP Ranges. + // + // is responsible for advertising Ethernet + // Auto-discovery Route Per EVI (Type 1). + // + // is responsible for advertising Ethernet Auto-discovery Route + // Per Ethernet Segment (Type 1). + // + // is responsible for advertising + // MAC/IP Advertisement Route (Type 2). + // + // is responsible for advertising Inclusive + // Multicast Ethernet Tag Route (Type 3). + // + // Ethernet Segment is responsible for advertising Ethernet Segment Route (Type 4). + EvpnEthernetSegments []*BgpV4EthernetSegment `protobuf:"bytes,2,rep,name=evpn_ethernet_segments,json=evpnEthernetSegments,proto3" json:"evpn_ethernet_segments,omitempty"` + // The type of BGP autonomous system. External BGP is used for BGP links between two + // or more autonomous systems (ebgp). Internal BGP is used within a single autonomous + // system (ibgp). BGP property defaults are aligned with this object defined as an internal + // BGP peer. If the as_type is specified as 'ebgp' then other properties will need to + // be specified as per an external BGP peer. Specifically, for 'ebgp', 'as_set_mode' + // attribute in 'as_path' field in any Route Range should be changed from default value + // 'do_not_include_local_as' to any other value. + // required = true + AsType *BgpV4Peer_AsType_Enum `protobuf:"varint,3,opt,name=as_type,json=asType,proto3,enum=otg.BgpV4Peer_AsType_Enum,oneof" json:"as_type,omitempty"` + // Autonomous System Number (AS number or ASN) + // required = true + AsNumber *uint32 `protobuf:"varint,4,opt,name=as_number,json=asNumber,proto3,oneof" json:"as_number,omitempty"` + // The width in bytes of the as_number values. Any as_number values that exceeds the + // width MUST result in an error. + // default = AsNumberWidth.Enum.four + AsNumberWidth *BgpV4Peer_AsNumberWidth_Enum `protobuf:"varint,5,opt,name=as_number_width,json=asNumberWidth,proto3,enum=otg.BgpV4Peer_AsNumberWidth_Enum,oneof" json:"as_number_width,omitempty"` // Description missing in models - // default = Choice.Enum.link_bandwidth_subtype - Choice *BgpExtendedCommunityNonTransitive2OctetAsType_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.BgpExtendedCommunityNonTransitive2OctetAsType_Choice_Enum,oneof" json:"choice,omitempty"` + Advanced *BgpAdvanced `protobuf:"bytes,6,opt,name=advanced,proto3" json:"advanced,omitempty"` // Description missing in models - LinkBandwidthSubtype *BgpExtendedCommunityNonTransitive2OctetAsTypeLinkBandwidth `protobuf:"bytes,2,opt,name=link_bandwidth_subtype,json=linkBandwidthSubtype,proto3" json:"link_bandwidth_subtype,omitempty"` + Capability *BgpCapability `protobuf:"bytes,7,opt,name=capability,proto3" json:"capability,omitempty"` + // Description missing in models + LearnedInformationFilter *BgpLearnedInformationFilter `protobuf:"bytes,8,opt,name=learned_information_filter,json=learnedInformationFilter,proto3" json:"learned_information_filter,omitempty"` + // Emulated BGPv4 route ranges. + V4Routes []*BgpV4RouteRange `protobuf:"bytes,9,rep,name=v4_routes,json=v4Routes,proto3" json:"v4_routes,omitempty"` + // Emulated BGPv6 route ranges. + V6Routes []*BgpV6RouteRange `protobuf:"bytes,10,rep,name=v6_routes,json=v6Routes,proto3" json:"v6_routes,omitempty"` + // Segment Routing Traffic Engineering (SR TE) Policies for IPv4 Address Family Identifier + // (AFI). + V4SrtePolicies []*BgpSrteV4Policy `protobuf:"bytes,11,rep,name=v4_srte_policies,json=v4SrtePolicies,proto3" json:"v4_srte_policies,omitempty"` + // Segment Routing Traffic Engineering (SR TE) Policies for IPv6 Address Family Identifier + // (AFI). + V6SrtePolicies []*BgpSrteV6Policy `protobuf:"bytes,12,rep,name=v6_srte_policies,json=v6SrtePolicies,proto3" json:"v6_srte_policies,omitempty"` + // Globally unique name of an object. It also serves as the primary key for arrays of + // objects. + // Globally unique name of an object. It also serves as the primary key for arrays of + // objects. + // required = true + Name *string `protobuf:"bytes,13,opt,name=name,proto3,oneof" json:"name,omitempty"` + // Description missing in models + GracefulRestart *BgpGracefulRestart `protobuf:"bytes,14,opt,name=graceful_restart,json=gracefulRestart,proto3" json:"graceful_restart,omitempty"` } -func (x *BgpExtendedCommunityNonTransitive2OctetAsType) Reset() { - *x = BgpExtendedCommunityNonTransitive2OctetAsType{} +func (x *BgpV4Peer) Reset() { + *x = BgpV4Peer{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[98] + mi := &file_otg_proto_msgTypes[62] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *BgpExtendedCommunityNonTransitive2OctetAsType) String() string { +func (x *BgpV4Peer) String() string { return protoimpl.X.MessageStringOf(x) } -func (*BgpExtendedCommunityNonTransitive2OctetAsType) ProtoMessage() {} +func (*BgpV4Peer) ProtoMessage() {} -func (x *BgpExtendedCommunityNonTransitive2OctetAsType) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[98] +func (x *BgpV4Peer) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[62] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -26141,64 +25917,145 @@ func (x *BgpExtendedCommunityNonTransitive2OctetAsType) ProtoReflect() protorefl return mi.MessageOf(x) } -// Deprecated: Use BgpExtendedCommunityNonTransitive2OctetAsType.ProtoReflect.Descriptor instead. -func (*BgpExtendedCommunityNonTransitive2OctetAsType) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{98} +// Deprecated: Use BgpV4Peer.ProtoReflect.Descriptor instead. +func (*BgpV4Peer) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{62} } -func (x *BgpExtendedCommunityNonTransitive2OctetAsType) GetChoice() BgpExtendedCommunityNonTransitive2OctetAsType_Choice_Enum { - if x != nil && x.Choice != nil { - return *x.Choice +func (x *BgpV4Peer) GetPeerAddress() string { + if x != nil && x.PeerAddress != nil { + return *x.PeerAddress } - return BgpExtendedCommunityNonTransitive2OctetAsType_Choice_unspecified + return "" } -func (x *BgpExtendedCommunityNonTransitive2OctetAsType) GetLinkBandwidthSubtype() *BgpExtendedCommunityNonTransitive2OctetAsTypeLinkBandwidth { +func (x *BgpV4Peer) GetEvpnEthernetSegments() []*BgpV4EthernetSegment { if x != nil { - return x.LinkBandwidthSubtype + return x.EvpnEthernetSegments } return nil } -// Add a custom Extended Community with a combination of types , sub-types and values -// not explicitly specified above or not defined yet. -type BgpExtendedCommunityCustomType struct { +func (x *BgpV4Peer) GetAsType() BgpV4Peer_AsType_Enum { + if x != nil && x.AsType != nil { + return *x.AsType + } + return BgpV4Peer_AsType_unspecified +} + +func (x *BgpV4Peer) GetAsNumber() uint32 { + if x != nil && x.AsNumber != nil { + return *x.AsNumber + } + return 0 +} + +func (x *BgpV4Peer) GetAsNumberWidth() BgpV4Peer_AsNumberWidth_Enum { + if x != nil && x.AsNumberWidth != nil { + return *x.AsNumberWidth + } + return BgpV4Peer_AsNumberWidth_unspecified +} + +func (x *BgpV4Peer) GetAdvanced() *BgpAdvanced { + if x != nil { + return x.Advanced + } + return nil +} + +func (x *BgpV4Peer) GetCapability() *BgpCapability { + if x != nil { + return x.Capability + } + return nil +} + +func (x *BgpV4Peer) GetLearnedInformationFilter() *BgpLearnedInformationFilter { + if x != nil { + return x.LearnedInformationFilter + } + return nil +} + +func (x *BgpV4Peer) GetV4Routes() []*BgpV4RouteRange { + if x != nil { + return x.V4Routes + } + return nil +} + +func (x *BgpV4Peer) GetV6Routes() []*BgpV6RouteRange { + if x != nil { + return x.V6Routes + } + return nil +} + +func (x *BgpV4Peer) GetV4SrtePolicies() []*BgpSrteV4Policy { + if x != nil { + return x.V4SrtePolicies + } + return nil +} + +func (x *BgpV4Peer) GetV6SrtePolicies() []*BgpSrteV6Policy { + if x != nil { + return x.V6SrtePolicies + } + return nil +} + +func (x *BgpV4Peer) GetName() string { + if x != nil && x.Name != nil { + return *x.Name + } + return "" +} + +func (x *BgpV4Peer) GetGracefulRestart() *BgpGracefulRestart { + if x != nil { + return x.GracefulRestart + } + return nil +} + +// Configuration for emulated BGPv4 peers and routes on a single IPv4 interface. +type BgpV4Interface struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // The type to be set in the Extended Community attribute. Accepts hexadecimal input - // upto ff . - // default = 00 - CommunityType *string `protobuf:"bytes,1,opt,name=community_type,json=communityType,proto3,oneof" json:"community_type,omitempty"` - // The sub-type to be set in the Extended Community attribute. For certain types with - // no sub-type this byte can also be used as part of an extended value field. Accepts - // hexadecimal input upto ff. - // default = 00 - CommunitySubtype *string `protobuf:"bytes,2,opt,name=community_subtype,json=communitySubtype,proto3,oneof" json:"community_subtype,omitempty"` - // 6 byte hex value to be carried in the last 6 bytes of the Extended Community. Accepts - // hexadecimal input upto ffffffffffff. - // default = 000000000000 - Value *string `protobuf:"bytes,3,opt,name=value,proto3,oneof" json:"value,omitempty"` + // The unique name of the IPv4 or Loopback IPv4 interface used as the source IP for + // this list of BGP peers. + // + // x-constraint: + // - /components/schemas/Device.Ipv4/properties/name + // - /components/schemas/Device.Ipv4Loopback/properties/name + // + // required = true + Ipv4Name *string `protobuf:"bytes,1,opt,name=ipv4_name,json=ipv4Name,proto3,oneof" json:"ipv4_name,omitempty"` + // This contains the list of BGPv4 peers configured on this interface. + Peers []*BgpV4Peer `protobuf:"bytes,2,rep,name=peers,proto3" json:"peers,omitempty"` } -func (x *BgpExtendedCommunityCustomType) Reset() { - *x = BgpExtendedCommunityCustomType{} +func (x *BgpV4Interface) Reset() { + *x = BgpV4Interface{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[99] + mi := &file_otg_proto_msgTypes[63] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *BgpExtendedCommunityCustomType) String() string { +func (x *BgpV4Interface) String() string { return protoimpl.X.MessageStringOf(x) } -func (*BgpExtendedCommunityCustomType) ProtoMessage() {} +func (*BgpV4Interface) ProtoMessage() {} -func (x *BgpExtendedCommunityCustomType) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[99] +func (x *BgpV4Interface) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[63] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -26209,75 +26066,52 @@ func (x *BgpExtendedCommunityCustomType) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use BgpExtendedCommunityCustomType.ProtoReflect.Descriptor instead. -func (*BgpExtendedCommunityCustomType) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{99} -} - -func (x *BgpExtendedCommunityCustomType) GetCommunityType() string { - if x != nil && x.CommunityType != nil { - return *x.CommunityType - } - return "" +// Deprecated: Use BgpV4Interface.ProtoReflect.Descriptor instead. +func (*BgpV4Interface) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{63} } -func (x *BgpExtendedCommunityCustomType) GetCommunitySubtype() string { - if x != nil && x.CommunitySubtype != nil { - return *x.CommunitySubtype +func (x *BgpV4Interface) GetIpv4Name() string { + if x != nil && x.Ipv4Name != nil { + return *x.Ipv4Name } return "" } -func (x *BgpExtendedCommunityCustomType) GetValue() string { - if x != nil && x.Value != nil { - return *x.Value +func (x *BgpV4Interface) GetPeers() []*BgpV4Peer { + if x != nil { + return x.Peers } - return "" + return nil } -// Emulated BGPv6 route range. -type BgpV6RouteRange struct { +// Configuration for BGP Ethernet Segment ranges. Advertises following routes - +// +// Type 4 - Ethernet Segment Route +type BgpV4EthernetSegment struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // A list of group of IPv6 route addresses. - Addresses []*V6RouteAddress `protobuf:"bytes,1,rep,name=addresses,proto3" json:"addresses,omitempty"` - // Specify the NextHop in MP REACH NLRI. The mode for setting the IP address of the - // NextHop in the MP REACH NLRI can be one of the following: - // Local IP: Automatically fills the Nexthop with the Local IP of the BGP - // peer. - // If BGP peer is of type IPv6, Nexthop Encoding capability should be enabled. - // Manual: Override the Nexthop with any arbitrary IPv4/IPv6 address. - // default = NextHopMode.Enum.local_ip - NextHopMode *BgpV6RouteRange_NextHopMode_Enum `protobuf:"varint,2,opt,name=next_hop_mode,json=nextHopMode,proto3,enum=otg.BgpV6RouteRange_NextHopMode_Enum,oneof" json:"next_hop_mode,omitempty"` - // If the Nexthop Mode is Manual, it sets the type of the NextHop IP address. - // default = NextHopAddressType.Enum.ipv6 - NextHopAddressType *BgpV6RouteRange_NextHopAddressType_Enum `protobuf:"varint,3,opt,name=next_hop_address_type,json=nextHopAddressType,proto3,enum=otg.BgpV6RouteRange_NextHopAddressType_Enum,oneof" json:"next_hop_address_type,omitempty"` - // The IPv4 address of the next hop if the Nexthop Mode is manual and the Nexthop type - // is IPv4. If BGP peer is of type IPv6, Nexthop Encoding capability should be enabled. - // default = 0.0.0.0 - NextHopIpv4Address *string `protobuf:"bytes,4,opt,name=next_hop_ipv4_address,json=nextHopIpv4Address,proto3,oneof" json:"next_hop_ipv4_address,omitempty"` - // The IPv6 address of the next hop if the Nexthop Mode is manual and the Nexthop type - // is IPv6. - // default = ::0 - NextHopIpv6Address *string `protobuf:"bytes,5,opt,name=next_hop_ipv6_address,json=nextHopIpv6Address,proto3,oneof" json:"next_hop_ipv6_address,omitempty"` + // Designated Forwarder (DF) election configuration. + DfElection *BgpEthernetSegmentDfElection `protobuf:"bytes,1,opt,name=df_election,json=dfElection,proto3" json:"df_election,omitempty"` + // This contains the list of EVIs. + Evis []*BgpV4EvpnEvis `protobuf:"bytes,2,rep,name=evis,proto3" json:"evis,omitempty"` + // 10-octet Ethernet Segment Identifier (ESI) Example - For multi-home scenario nonZero + // ESI is '10000000000000000000' . + // default = 00000000000000000000 + Esi *string `protobuf:"bytes,3,opt,name=esi,proto3,oneof" json:"esi,omitempty"` + // Single Active or All Active mode Redundancy mode selection for Multi-home. + // default = ActiveMode.Enum.all_active + ActiveMode *BgpV4EthernetSegment_ActiveMode_Enum `protobuf:"varint,4,opt,name=active_mode,json=activeMode,proto3,enum=otg.BgpV4EthernetSegment_ActiveMode_Enum,oneof" json:"active_mode,omitempty"` + // The label value to be advertised as ESI Label in ESI Label Extended Community. This + // is included in Ethernet Auto-discovery per ES Routes advertised by a router. + // default = 0 + EsiLabel *uint32 `protobuf:"varint,5,opt,name=esi_label,json=esiLabel,proto3,oneof" json:"esi_label,omitempty"` // Description missing in models Advanced *BgpRouteAdvanced `protobuf:"bytes,6,opt,name=advanced,proto3" json:"advanced,omitempty"` // Optional community settings. Communities []*BgpCommunity `protobuf:"bytes,7,rep,name=communities,proto3" json:"communities,omitempty"` - // Description missing in models - AsPath *BgpAsPath `protobuf:"bytes,8,opt,name=as_path,json=asPath,proto3" json:"as_path,omitempty"` - // Description missing in models - AddPath *BgpAddPath `protobuf:"bytes,9,opt,name=add_path,json=addPath,proto3" json:"add_path,omitempty"` - // Globally unique name of an object. It also serves as the primary key for arrays of - // objects. - // required = true - Name *string `protobuf:"bytes,10,opt,name=name,proto3,oneof" json:"name,omitempty"` - // Deprecated: This property is deprecated in favor of property extended_communities - // - // Deprecated: This property is deprecated in favor of property extended_communities - // // Optional Extended Community settings. The Extended Communities Attribute is a transitive // optional BGP attribute, with the Type Code 16. Community and Extended Communities // attributes are utilized to trigger routing decisions, such as acceptance, rejection, @@ -26304,37 +26138,29 @@ type BgpV6RouteRange struct { // may be set to 1, indicating the MAC address is static and cannot move. The second // byte is reserved and the last four bytes contain the sequence number which is used // to ensure that PEs retain the correct MAC/IP Advertisement route when multiple updates - // occur for the same MAC address. Note evpn type is defined mainly for use with evpn - // route updates and not for IPv4 and IPv6 route updates. - ExtCommunities []*BgpExtCommunity `protobuf:"bytes,11,rep,name=ext_communities,json=extCommunities,proto3" json:"ext_communities,omitempty"` - // Optional Extended Community settings. The Extended Communities Attribute is a transitive - // optional BGP attribute, with the Type Code 16. Community and Extended Communities - // attributes are utilized to trigger routing decisions, such as acceptance, rejection, - // preference, or redistribution. An extended community is an eight byte value. It - // is divided into two main parts. The first two bytes of the community encode a type - // and sub-type fields and the last six bytes carry a unique set of data in a format - // defined by the type and sub-type field. Extended communities provide a larger range - // for grouping or categorizing communities. - ExtendedCommunities []*BgpExtendedCommunity `protobuf:"bytes,12,rep,name=extended_communities,json=extendedCommunities,proto3" json:"extended_communities,omitempty"` + // occur for the same MAC address. + ExtCommunities []*BgpExtCommunity `protobuf:"bytes,8,rep,name=ext_communities,json=extCommunities,proto3" json:"ext_communities,omitempty"` + // Optional AS PATH settings. + AsPath *BgpAsPath `protobuf:"bytes,9,opt,name=as_path,json=asPath,proto3" json:"as_path,omitempty"` } -func (x *BgpV6RouteRange) Reset() { - *x = BgpV6RouteRange{} +func (x *BgpV4EthernetSegment) Reset() { + *x = BgpV4EthernetSegment{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[100] + mi := &file_otg_proto_msgTypes[64] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *BgpV6RouteRange) String() string { +func (x *BgpV4EthernetSegment) String() string { return protoimpl.X.MessageStringOf(x) } -func (*BgpV6RouteRange) ProtoMessage() {} +func (*BgpV4EthernetSegment) ProtoMessage() {} -func (x *BgpV6RouteRange) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[100] +func (x *BgpV4EthernetSegment) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[64] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -26345,200 +26171,103 @@ func (x *BgpV6RouteRange) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use BgpV6RouteRange.ProtoReflect.Descriptor instead. -func (*BgpV6RouteRange) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{100} +// Deprecated: Use BgpV4EthernetSegment.ProtoReflect.Descriptor instead. +func (*BgpV4EthernetSegment) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{64} } -func (x *BgpV6RouteRange) GetAddresses() []*V6RouteAddress { +func (x *BgpV4EthernetSegment) GetDfElection() *BgpEthernetSegmentDfElection { if x != nil { - return x.Addresses + return x.DfElection } return nil } -func (x *BgpV6RouteRange) GetNextHopMode() BgpV6RouteRange_NextHopMode_Enum { - if x != nil && x.NextHopMode != nil { - return *x.NextHopMode - } - return BgpV6RouteRange_NextHopMode_unspecified -} - -func (x *BgpV6RouteRange) GetNextHopAddressType() BgpV6RouteRange_NextHopAddressType_Enum { - if x != nil && x.NextHopAddressType != nil { - return *x.NextHopAddressType - } - return BgpV6RouteRange_NextHopAddressType_unspecified -} - -func (x *BgpV6RouteRange) GetNextHopIpv4Address() string { - if x != nil && x.NextHopIpv4Address != nil { - return *x.NextHopIpv4Address +func (x *BgpV4EthernetSegment) GetEvis() []*BgpV4EvpnEvis { + if x != nil { + return x.Evis } - return "" + return nil } -func (x *BgpV6RouteRange) GetNextHopIpv6Address() string { - if x != nil && x.NextHopIpv6Address != nil { - return *x.NextHopIpv6Address +func (x *BgpV4EthernetSegment) GetEsi() string { + if x != nil && x.Esi != nil { + return *x.Esi } return "" } -func (x *BgpV6RouteRange) GetAdvanced() *BgpRouteAdvanced { - if x != nil { - return x.Advanced +func (x *BgpV4EthernetSegment) GetActiveMode() BgpV4EthernetSegment_ActiveMode_Enum { + if x != nil && x.ActiveMode != nil { + return *x.ActiveMode } - return nil + return BgpV4EthernetSegment_ActiveMode_unspecified } -func (x *BgpV6RouteRange) GetCommunities() []*BgpCommunity { - if x != nil { - return x.Communities +func (x *BgpV4EthernetSegment) GetEsiLabel() uint32 { + if x != nil && x.EsiLabel != nil { + return *x.EsiLabel } - return nil + return 0 } -func (x *BgpV6RouteRange) GetAsPath() *BgpAsPath { +func (x *BgpV4EthernetSegment) GetAdvanced() *BgpRouteAdvanced { if x != nil { - return x.AsPath + return x.Advanced } return nil } -func (x *BgpV6RouteRange) GetAddPath() *BgpAddPath { +func (x *BgpV4EthernetSegment) GetCommunities() []*BgpCommunity { if x != nil { - return x.AddPath + return x.Communities } return nil } -func (x *BgpV6RouteRange) GetName() string { - if x != nil && x.Name != nil { - return *x.Name - } - return "" -} - -func (x *BgpV6RouteRange) GetExtCommunities() []*BgpExtCommunity { +func (x *BgpV4EthernetSegment) GetExtCommunities() []*BgpExtCommunity { if x != nil { return x.ExtCommunities } return nil } -func (x *BgpV6RouteRange) GetExtendedCommunities() []*BgpExtendedCommunity { +func (x *BgpV4EthernetSegment) GetAsPath() *BgpAsPath { if x != nil { - return x.ExtendedCommunities + return x.AsPath } return nil } -// Configuration for BGP Segment Routing Traffic Engineering(SRTE) -// policy. -type BgpSrteV4Policy struct { +// Configuration for Designated Forwarder (DF) election among the Provider Edge (PE) +// routers on the same Ethernet Segment. +type BgpEthernetSegmentDfElection struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // 4-octet value uniquely identifying the policy in the context of (color, endpoint) - // tuple. It is used by the SR Policy originator to make unique (from an NLRI perspective) - // both for multiple candidate paths of the same SR Policy as well as candidate paths - // of different SR Policies (i.e. with different segment list) with the same Color - // and Endpoint but meant for different head-ends. - // default = 1 - Distinguisher *uint32 `protobuf:"varint,1,opt,name=distinguisher,proto3,oneof" json:"distinguisher,omitempty"` - // Policy color is used to match the color of the destination prefixes to steer traffic - // into the SR Policy. - // default = 100 - Color *uint32 `protobuf:"varint,2,opt,name=color,proto3,oneof" json:"color,omitempty"` - // Specifies a single node or a set of nodes (e.g. an anycast address). It is selected - // on the basis of the SR Policy type (AFI). - // required = true - Ipv4Endpoint *string `protobuf:"bytes,3,opt,name=ipv4_endpoint,json=ipv4Endpoint,proto3,oneof" json:"ipv4_endpoint,omitempty"` - // Mode for choosing the NextHop in MP REACH NLRI. Available modes are : Local IP: Automatically - // fills the Nexthop with the Local IP of the BGP peer. For IPv6 BGP peer the Nexthop - // Encoding capability should be enabled. Manual: Override the Nexthop with any arbitrary - // IPv4/IPv6 address. - // default = NextHopMode.Enum.local_ip - NextHopMode *BgpSrteV4Policy_NextHopMode_Enum `protobuf:"varint,4,opt,name=next_hop_mode,json=nextHopMode,proto3,enum=otg.BgpSrteV4Policy_NextHopMode_Enum,oneof" json:"next_hop_mode,omitempty"` - // Type of next hop IP address to be used when 'next_hop_mode' is set to 'manual'. - // default = NextHopAddressType.Enum.ipv4 - NextHopAddressType *BgpSrteV4Policy_NextHopAddressType_Enum `protobuf:"varint,5,opt,name=next_hop_address_type,json=nextHopAddressType,proto3,enum=otg.BgpSrteV4Policy_NextHopAddressType_Enum,oneof" json:"next_hop_address_type,omitempty"` - // The IPv4 address of the next hop if the Nexthop type 'next_hop_mode' is 'manual' - // and the Nexthop type 'next_hop_address_type' is IPv4. If BGP peer is of type IPv6, - // Nexthop Encoding capability extended_next_hop_encoding should be enabled. - NextHopIpv4Address *string `protobuf:"bytes,6,opt,name=next_hop_ipv4_address,json=nextHopIpv4Address,proto3,oneof" json:"next_hop_ipv4_address,omitempty"` - // The IPv6 address of the next hop if the Nexthop Mode 'next_hop_address_type' is 'manual' - // and the Nexthop type 'next_hop_address_type' is IPv6. - NextHopIpv6Address *string `protobuf:"bytes,7,opt,name=next_hop_ipv6_address,json=nextHopIpv6Address,proto3,oneof" json:"next_hop_ipv6_address,omitempty"` - // Description missing in models - Advanced *BgpRouteAdvanced `protobuf:"bytes,8,opt,name=advanced,proto3" json:"advanced,omitempty"` - // Description missing in models - AddPath *BgpAddPath `protobuf:"bytes,9,opt,name=add_path,json=addPath,proto3" json:"add_path,omitempty"` - // Description missing in models - AsPath *BgpAsPath `protobuf:"bytes,10,opt,name=as_path,json=asPath,proto3" json:"as_path,omitempty"` - // Optional Community settings. - Communities []*BgpCommunity `protobuf:"bytes,11,rep,name=communities,proto3" json:"communities,omitempty"` - // Optional Extended Community settings. The Extended Communities Attribute is a transitive - // optional BGP attribute, with the Type Code 16. Community and Extended Communities - // attributes are utilized to trigger routing decisions, such as acceptance, rejection, - // preference, or redistribution. An extended community is an 8-Bytes value. It is - // divided into two main parts. The first 2 Bytes of the community encode a type and - // sub-type fields and the last 6 Bytes carry a unique set of data in a format defined - // by the type and sub-type field. Extended communities provide a larger range for - // grouping or categorizing communities. When type is administrator_as_2octet or administrator_as_4octet, - // the valid sub types are route target and origin. The valid value for administrator_as_2octet - // and administrator_as_4octet type is either two byte AS followed by four byte local - // administrator id or four byte AS followed by two byte local administrator id. When - // type is administrator_ipv4_address the valid sub types are route target and origin. - // The valid value for administrator_ipv4_address is a four byte IPv4 address followed - // by a two byte local administrator id. When type is opaque, valid sub types are color - // and encapsulation. When sub type is color, first two bytes of the value field contain - // flags and last four bytes contains the value of the color. When sub type is encapsulation - // the first four bytes of value field are reserved and last two bytes carries the tunnel - // type from IANA's ETHER TYPES registry e.g IPv4 (protocol type = 0x0800), IPv6 (protocol - // type = 0x86dd), and MPLS (protocol type = 0x8847). When type is administrator_as_2octet_link_bandwidth - // the valid sub type is extended_bandwidth. The first two bytes of the value field - // contains the AS number and the last four bytes contains the bandwidth in IEEE floating - // point format. When type is evpn the valid subtype is mac_address. In the value field - // the low-order bit of the first byte(Flags) is defined as the Sticky/static flag and - // may be set to 1, indicating the MAC address is static and cannot move. The second - // byte is reserved and the last four bytes contain the sequence number which is used - // to ensure that PEs retain the correct MAC/IP Advertisement route when multiple updates - // occur for the same MAC address. - ExtCommunities []*BgpExtCommunity `protobuf:"bytes,12,rep,name=ext_communities,json=extCommunities,proto3" json:"ext_communities,omitempty"` - // List Tunnel Encapsulation Attributes. - TunnelTlvs []*BgpSrteV4TunnelTlv `protobuf:"bytes,13,rep,name=tunnel_tlvs,json=tunnelTlvs,proto3" json:"tunnel_tlvs,omitempty"` - // Globally unique name of an object. It also serves as the primary key for arrays of - // objects. - // required = true - Name *string `protobuf:"bytes,14,opt,name=name,proto3,oneof" json:"name,omitempty"` - // If enabled means that this part of the configuration including any active 'children' - // nodes will be advertised to peer. If disabled, this means that though config is - // present, it is not taking any part of the test but can be activated at run-time to - // advertise just this part of the configuration to the peer. - // default = True - Active *bool `protobuf:"varint,15,opt,name=active,proto3,oneof" json:"active,omitempty"` + // The DF election timer in seconds. + // default = 3 + ElectionTimer *uint32 `protobuf:"varint,1,opt,name=election_timer,json=electionTimer,proto3,oneof" json:"election_timer,omitempty"` } -func (x *BgpSrteV4Policy) Reset() { - *x = BgpSrteV4Policy{} +func (x *BgpEthernetSegmentDfElection) Reset() { + *x = BgpEthernetSegmentDfElection{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[101] + mi := &file_otg_proto_msgTypes[65] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *BgpSrteV4Policy) String() string { +func (x *BgpEthernetSegmentDfElection) String() string { return protoimpl.X.MessageStringOf(x) } -func (*BgpSrteV4Policy) ProtoMessage() {} +func (*BgpEthernetSegmentDfElection) ProtoMessage() {} -func (x *BgpSrteV4Policy) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[101] +func (x *BgpEthernetSegmentDfElection) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[65] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -26549,167 +26278,161 @@ func (x *BgpSrteV4Policy) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use BgpSrteV4Policy.ProtoReflect.Descriptor instead. -func (*BgpSrteV4Policy) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{101} -} - -func (x *BgpSrteV4Policy) GetDistinguisher() uint32 { - if x != nil && x.Distinguisher != nil { - return *x.Distinguisher - } - return 0 +// Deprecated: Use BgpEthernetSegmentDfElection.ProtoReflect.Descriptor instead. +func (*BgpEthernetSegmentDfElection) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{65} } -func (x *BgpSrteV4Policy) GetColor() uint32 { - if x != nil && x.Color != nil { - return *x.Color +func (x *BgpEthernetSegmentDfElection) GetElectionTimer() uint32 { + if x != nil && x.ElectionTimer != nil { + return *x.ElectionTimer } return 0 } -func (x *BgpSrteV4Policy) GetIpv4Endpoint() string { - if x != nil && x.Ipv4Endpoint != nil { - return *x.Ipv4Endpoint - } - return "" -} +// Configuration for advanced BGP route range settings. +type BgpRouteAdvanced struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields -func (x *BgpSrteV4Policy) GetNextHopMode() BgpSrteV4Policy_NextHopMode_Enum { - if x != nil && x.NextHopMode != nil { - return *x.NextHopMode - } - return BgpSrteV4Policy_NextHopMode_unspecified + // BGP Multi Exit Discriminator attribute sent to the peer to help in the route selection + // process. If set to true, the Multi Exit Discriminator attribute will be included + // in the route advertisement. + // default = True + IncludeMultiExitDiscriminator *bool `protobuf:"varint,3,opt,name=include_multi_exit_discriminator,json=includeMultiExitDiscriminator,proto3,oneof" json:"include_multi_exit_discriminator,omitempty"` + // The multi exit discriminator (MED) value used for route selection sent to the peer. + MultiExitDiscriminator *uint32 `protobuf:"varint,1,opt,name=multi_exit_discriminator,json=multiExitDiscriminator,proto3,oneof" json:"multi_exit_discriminator,omitempty"` + // If set to true, the Origin attribute will be included in the route advertisement. + // default = True + IncludeOrigin *bool `protobuf:"varint,4,opt,name=include_origin,json=includeOrigin,proto3,oneof" json:"include_origin,omitempty"` + // The origin attribute of a prefix can take three values: the prefix originates from + // an interior routing protocol 'igp', it originates from 'egp' or the origin is 'incomplete', + // if the prefix is learned through other means. + // default = Origin.Enum.igp + Origin *BgpRouteAdvanced_Origin_Enum `protobuf:"varint,2,opt,name=origin,proto3,enum=otg.BgpRouteAdvanced_Origin_Enum,oneof" json:"origin,omitempty"` + // BGP Local Preference attribute sent to the peer to indicate the degree of preference + // for externally learned routes. If set to true, the Local Preference attribute will + // be included in the route advertisement. This should be included only for internal + // peers. + // default = True + IncludeLocalPreference *bool `protobuf:"varint,5,opt,name=include_local_preference,json=includeLocalPreference,proto3,oneof" json:"include_local_preference,omitempty"` + // Value to be set in Local Preference attribute if include_local_preference is set + // to true. It is used for the selection of the path for the traffic leaving the AS. + // The route with the highest local preference value is preferred. + // default = 100 + LocalPreference *uint32 `protobuf:"varint,6,opt,name=local_preference,json=localPreference,proto3,oneof" json:"local_preference,omitempty"` } -func (x *BgpSrteV4Policy) GetNextHopAddressType() BgpSrteV4Policy_NextHopAddressType_Enum { - if x != nil && x.NextHopAddressType != nil { - return *x.NextHopAddressType +func (x *BgpRouteAdvanced) Reset() { + *x = BgpRouteAdvanced{} + if protoimpl.UnsafeEnabled { + mi := &file_otg_proto_msgTypes[66] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } - return BgpSrteV4Policy_NextHopAddressType_unspecified } -func (x *BgpSrteV4Policy) GetNextHopIpv4Address() string { - if x != nil && x.NextHopIpv4Address != nil { - return *x.NextHopIpv4Address - } - return "" +func (x *BgpRouteAdvanced) String() string { + return protoimpl.X.MessageStringOf(x) } -func (x *BgpSrteV4Policy) GetNextHopIpv6Address() string { - if x != nil && x.NextHopIpv6Address != nil { - return *x.NextHopIpv6Address - } - return "" -} +func (*BgpRouteAdvanced) ProtoMessage() {} -func (x *BgpSrteV4Policy) GetAdvanced() *BgpRouteAdvanced { - if x != nil { - return x.Advanced +func (x *BgpRouteAdvanced) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[66] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms } - return nil + return mi.MessageOf(x) } -func (x *BgpSrteV4Policy) GetAddPath() *BgpAddPath { - if x != nil { - return x.AddPath - } - return nil +// Deprecated: Use BgpRouteAdvanced.ProtoReflect.Descriptor instead. +func (*BgpRouteAdvanced) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{66} } -func (x *BgpSrteV4Policy) GetAsPath() *BgpAsPath { - if x != nil { - return x.AsPath +func (x *BgpRouteAdvanced) GetIncludeMultiExitDiscriminator() bool { + if x != nil && x.IncludeMultiExitDiscriminator != nil { + return *x.IncludeMultiExitDiscriminator } - return nil + return false } -func (x *BgpSrteV4Policy) GetCommunities() []*BgpCommunity { - if x != nil { - return x.Communities +func (x *BgpRouteAdvanced) GetMultiExitDiscriminator() uint32 { + if x != nil && x.MultiExitDiscriminator != nil { + return *x.MultiExitDiscriminator } - return nil + return 0 } -func (x *BgpSrteV4Policy) GetExtCommunities() []*BgpExtCommunity { - if x != nil { - return x.ExtCommunities +func (x *BgpRouteAdvanced) GetIncludeOrigin() bool { + if x != nil && x.IncludeOrigin != nil { + return *x.IncludeOrigin } - return nil + return false } -func (x *BgpSrteV4Policy) GetTunnelTlvs() []*BgpSrteV4TunnelTlv { - if x != nil { - return x.TunnelTlvs +func (x *BgpRouteAdvanced) GetOrigin() BgpRouteAdvanced_Origin_Enum { + if x != nil && x.Origin != nil { + return *x.Origin } - return nil + return BgpRouteAdvanced_Origin_unspecified } -func (x *BgpSrteV4Policy) GetName() string { - if x != nil && x.Name != nil { - return *x.Name +func (x *BgpRouteAdvanced) GetIncludeLocalPreference() bool { + if x != nil && x.IncludeLocalPreference != nil { + return *x.IncludeLocalPreference } - return "" + return false } -func (x *BgpSrteV4Policy) GetActive() bool { - if x != nil && x.Active != nil { - return *x.Active +func (x *BgpRouteAdvanced) GetLocalPreference() uint32 { + if x != nil && x.LocalPreference != nil { + return *x.LocalPreference } - return false + return 0 } -// Configuration for BGP SRTE Tunnel TLV. -type BgpSrteV4TunnelTlv struct { +// BGP communities provide additional capability for tagging routes and for modifying +// BGP routing policy on upstream and downstream routers. BGP community is a 32-bit +// number which is broken into 16-bit AS number and a 16-bit custom value. +type BgpCommunity struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Description missing in models - RemoteEndpointSubTlv *BgpSrteRemoteEndpointSubTlv `protobuf:"bytes,1,opt,name=remote_endpoint_sub_tlv,json=remoteEndpointSubTlv,proto3" json:"remote_endpoint_sub_tlv,omitempty"` - // Description missing in models - ColorSubTlv *BgpSrteColorSubTlv `protobuf:"bytes,2,opt,name=color_sub_tlv,json=colorSubTlv,proto3" json:"color_sub_tlv,omitempty"` - // Description missing in models - BindingSubTlv *BgpSrteBindingSubTlv `protobuf:"bytes,3,opt,name=binding_sub_tlv,json=bindingSubTlv,proto3" json:"binding_sub_tlv,omitempty"` - // Description missing in models - PreferenceSubTlv *BgpSrtePreferenceSubTlv `protobuf:"bytes,4,opt,name=preference_sub_tlv,json=preferenceSubTlv,proto3" json:"preference_sub_tlv,omitempty"` - // Description missing in models - PolicyPrioritySubTlv *BgpSrtePolicyPrioritySubTlv `protobuf:"bytes,5,opt,name=policy_priority_sub_tlv,json=policyPrioritySubTlv,proto3" json:"policy_priority_sub_tlv,omitempty"` - // Description missing in models - PolicyNameSubTlv *BgpSrtePolicyNameSubTlv `protobuf:"bytes,6,opt,name=policy_name_sub_tlv,json=policyNameSubTlv,proto3" json:"policy_name_sub_tlv,omitempty"` - // Description missing in models - ExplicitNullLabelPolicySubTlv *BgpSrteExplicitNullLabelPolicySubTlv `protobuf:"bytes,7,opt,name=explicit_null_label_policy_sub_tlv,json=explicitNullLabelPolicySubTlv,proto3" json:"explicit_null_label_policy_sub_tlv,omitempty"` - // Description missing in models - SegmentLists []*BgpSrteSegmentList `protobuf:"bytes,8,rep,name=segment_lists,json=segmentLists,proto3" json:"segment_lists,omitempty"` - // Globally unique name of an object. It also serves as the primary key for arrays of - // objects. - // required = true - Name *string `protobuf:"bytes,9,opt,name=name,proto3,oneof" json:"name,omitempty"` - // If enabled means that this part of the configuration including any active 'children' - // nodes will be advertised to peer. If disabled, this means that though config is - // present, it is not taking any part of the test but can be activated at run-time to - // advertise just this part of the configuration to the peer. - // default = True - Active *bool `protobuf:"varint,10,opt,name=active,proto3,oneof" json:"active,omitempty"` + // The type of community AS number. + Type *BgpCommunity_Type_Enum `protobuf:"varint,1,opt,name=type,proto3,enum=otg.BgpCommunity_Type_Enum,oneof" json:"type,omitempty"` + // First two octets of 32 bit community AS number. + // default = 0 + AsNumber *uint32 `protobuf:"varint,2,opt,name=as_number,json=asNumber,proto3,oneof" json:"as_number,omitempty"` + // Last two octets of the community value. + // default = 0 + AsCustom *uint32 `protobuf:"varint,3,opt,name=as_custom,json=asCustom,proto3,oneof" json:"as_custom,omitempty"` } -func (x *BgpSrteV4TunnelTlv) Reset() { - *x = BgpSrteV4TunnelTlv{} +func (x *BgpCommunity) Reset() { + *x = BgpCommunity{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[102] + mi := &file_otg_proto_msgTypes[67] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *BgpSrteV4TunnelTlv) String() string { +func (x *BgpCommunity) String() string { return protoimpl.X.MessageStringOf(x) } -func (*BgpSrteV4TunnelTlv) ProtoMessage() {} +func (*BgpCommunity) ProtoMessage() {} -func (x *BgpSrteV4TunnelTlv) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[102] +func (x *BgpCommunity) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[67] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -26720,118 +26443,83 @@ func (x *BgpSrteV4TunnelTlv) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use BgpSrteV4TunnelTlv.ProtoReflect.Descriptor instead. -func (*BgpSrteV4TunnelTlv) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{102} -} - -func (x *BgpSrteV4TunnelTlv) GetRemoteEndpointSubTlv() *BgpSrteRemoteEndpointSubTlv { - if x != nil { - return x.RemoteEndpointSubTlv - } - return nil -} - -func (x *BgpSrteV4TunnelTlv) GetColorSubTlv() *BgpSrteColorSubTlv { - if x != nil { - return x.ColorSubTlv - } - return nil -} - -func (x *BgpSrteV4TunnelTlv) GetBindingSubTlv() *BgpSrteBindingSubTlv { - if x != nil { - return x.BindingSubTlv - } - return nil -} - -func (x *BgpSrteV4TunnelTlv) GetPreferenceSubTlv() *BgpSrtePreferenceSubTlv { - if x != nil { - return x.PreferenceSubTlv - } - return nil -} - -func (x *BgpSrteV4TunnelTlv) GetPolicyPrioritySubTlv() *BgpSrtePolicyPrioritySubTlv { - if x != nil { - return x.PolicyPrioritySubTlv - } - return nil -} - -func (x *BgpSrteV4TunnelTlv) GetPolicyNameSubTlv() *BgpSrtePolicyNameSubTlv { - if x != nil { - return x.PolicyNameSubTlv - } - return nil -} - -func (x *BgpSrteV4TunnelTlv) GetExplicitNullLabelPolicySubTlv() *BgpSrteExplicitNullLabelPolicySubTlv { - if x != nil { - return x.ExplicitNullLabelPolicySubTlv - } - return nil +// Deprecated: Use BgpCommunity.ProtoReflect.Descriptor instead. +func (*BgpCommunity) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{67} } -func (x *BgpSrteV4TunnelTlv) GetSegmentLists() []*BgpSrteSegmentList { - if x != nil { - return x.SegmentLists +func (x *BgpCommunity) GetType() BgpCommunity_Type_Enum { + if x != nil && x.Type != nil { + return *x.Type } - return nil + return BgpCommunity_Type_unspecified } -func (x *BgpSrteV4TunnelTlv) GetName() string { - if x != nil && x.Name != nil { - return *x.Name +func (x *BgpCommunity) GetAsNumber() uint32 { + if x != nil && x.AsNumber != nil { + return *x.AsNumber } - return "" + return 0 } -func (x *BgpSrteV4TunnelTlv) GetActive() bool { - if x != nil && x.Active != nil { - return *x.Active +func (x *BgpCommunity) GetAsCustom() uint32 { + if x != nil && x.AsCustom != nil { + return *x.AsCustom } - return false + return 0 } -// Configuration for the BGP remote endpoint sub TLV. -type BgpSrteRemoteEndpointSubTlv struct { +// The Extended Communities Attribute is a transitive optional BGP attribute, with the +// Type Code 16. Community and Extended Communities attributes are utilized to trigger +// routing decisions, such as acceptance, rejection, preference, or redistribution. +// An extended community is an 8-Bytes value. It is divided into two main parts. The +// first 2 Bytes of the community encode a type and sub-type fields and the last 6 Bytes +// carry a unique set of data in a format defined by the type and sub-type field. Extended +// communities provide a larger range for grouping or categorizing communities. +type BgpExtCommunity struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Autonomous system (AS) number - // default = 0 - AsNumber *uint32 `protobuf:"varint,1,opt,name=as_number,json=asNumber,proto3,oneof" json:"as_number,omitempty"` - // Determines the address type - // default = AddressFamily.Enum.ipv4 - AddressFamily *BgpSrteRemoteEndpointSubTlv_AddressFamily_Enum `protobuf:"varint,2,opt,name=address_family,json=addressFamily,proto3,enum=otg.BgpSrteRemoteEndpointSubTlv_AddressFamily_Enum,oneof" json:"address_family,omitempty"` - // The IPv4 address of the Remote Endpoint. - // default = 0.0.0.0 - Ipv4Address *string `protobuf:"bytes,3,opt,name=ipv4_address,json=ipv4Address,proto3,oneof" json:"ipv4_address,omitempty"` - // The IPv6 address of the Remote Endpoint. - // default = ::0 - Ipv6Address *string `protobuf:"bytes,4,opt,name=ipv6_address,json=ipv6Address,proto3,oneof" json:"ipv6_address,omitempty"` + // Extended Community Type field of 1 Byte. + // - administrator_as_2octet: Two-Octet AS Specific Extended Community (RFC 4360). + // - administrator_ipv4_address: IPv4 Address Specific Extended Community (RFC 4360). + // - administrator_as_4octet: 4-Octet AS Specific Extended Community (RFC 5668). + // - opaque: Opaque Extended Community (RFC 7432). + // - evpn: EVPN Extended Community (RFC 7153). + // - administrator_as_2octet_link_bandwidth : Link Bandwidth Extended Community (RFC + // 7153). + Type *BgpExtCommunity_Type_Enum `protobuf:"varint,1,opt,name=type,proto3,enum=otg.BgpExtCommunity_Type_Enum,oneof" json:"type,omitempty"` + // Extended Community Sub Type field of 1 Byte. + // - route_target: Route Target. + // - origin: Origin. + // - extended_bandwidth: Specifies the link bandwidth. + // - color: Specifies the color value. + // - encapsulation: Specifies the Encapsulation Extended Community. + // - mac_address: Specifies the Extended community MAC address. + Subtype *BgpExtCommunity_Subtype_Enum `protobuf:"varint,2,opt,name=subtype,proto3,enum=otg.BgpExtCommunity_Subtype_Enum,oneof" json:"subtype,omitempty"` + // Extended Community value of 6 Bytes. Example - for the Opaque type and Color subtype + // value can be '0000000000c8' for the color value 200. + Value *string `protobuf:"bytes,3,opt,name=value,proto3,oneof" json:"value,omitempty"` } -func (x *BgpSrteRemoteEndpointSubTlv) Reset() { - *x = BgpSrteRemoteEndpointSubTlv{} +func (x *BgpExtCommunity) Reset() { + *x = BgpExtCommunity{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[103] + mi := &file_otg_proto_msgTypes[68] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *BgpSrteRemoteEndpointSubTlv) String() string { +func (x *BgpExtCommunity) String() string { return protoimpl.X.MessageStringOf(x) } -func (*BgpSrteRemoteEndpointSubTlv) ProtoMessage() {} +func (*BgpExtCommunity) ProtoMessage() {} -func (x *BgpSrteRemoteEndpointSubTlv) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[103] +func (x *BgpExtCommunity) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[68] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -26842,70 +26530,71 @@ func (x *BgpSrteRemoteEndpointSubTlv) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use BgpSrteRemoteEndpointSubTlv.ProtoReflect.Descriptor instead. -func (*BgpSrteRemoteEndpointSubTlv) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{103} +// Deprecated: Use BgpExtCommunity.ProtoReflect.Descriptor instead. +func (*BgpExtCommunity) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{68} } -func (x *BgpSrteRemoteEndpointSubTlv) GetAsNumber() uint32 { - if x != nil && x.AsNumber != nil { - return *x.AsNumber - } - return 0 -} - -func (x *BgpSrteRemoteEndpointSubTlv) GetAddressFamily() BgpSrteRemoteEndpointSubTlv_AddressFamily_Enum { - if x != nil && x.AddressFamily != nil { - return *x.AddressFamily +func (x *BgpExtCommunity) GetType() BgpExtCommunity_Type_Enum { + if x != nil && x.Type != nil { + return *x.Type } - return BgpSrteRemoteEndpointSubTlv_AddressFamily_unspecified + return BgpExtCommunity_Type_unspecified } -func (x *BgpSrteRemoteEndpointSubTlv) GetIpv4Address() string { - if x != nil && x.Ipv4Address != nil { - return *x.Ipv4Address +func (x *BgpExtCommunity) GetSubtype() BgpExtCommunity_Subtype_Enum { + if x != nil && x.Subtype != nil { + return *x.Subtype } - return "" + return BgpExtCommunity_Subtype_unspecified } -func (x *BgpSrteRemoteEndpointSubTlv) GetIpv6Address() string { - if x != nil && x.Ipv6Address != nil { - return *x.Ipv6Address +func (x *BgpExtCommunity) GetValue() string { + if x != nil && x.Value != nil { + return *x.Value } return "" } -// Configuration for the Policy Color attribute sub-TLV. The Color sub-TLV MAY be used -// as a way to color the corresponding Tunnel TLV. The Value field of the sub-TLV is -// eight octets long and consists of a Color Extended Community. First two octets of -// its Value field are 0x030b as type and subtype of extended community. Remaining -// six octets are are exposed to configure. -type BgpSrteColorSubTlv struct { +// This attribute identifies the autonomous systems through which routing information +// carried in this UPDATE message has passed. This contains the configuration of how +// to include the Local AS in the AS path attribute of the MP REACH NLRI. It also contains +// optional configuration of additional AS Path Segments that can be included in the +// AS Path attribute. The AS Path consists of a Set or Sequence of Autonomous Systems +// (AS) numbers that a routing information passes through to reach the destination. +type BgpAsPath struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Six octet values. Example: 000000000064 for color value 100. - Color *string `protobuf:"bytes,1,opt,name=color,proto3,oneof" json:"color,omitempty"` + // Defines how the Local AS should be included in the MP REACH NLRI. For iBGP sessions, + // Do Not Include Local AS must be chosen. For eBGP sessions, any choice other than + // Do Not Include Local AS can be chosen. + // default = AsSetMode.Enum.do_not_include_local_as + AsSetMode *BgpAsPath_AsSetMode_Enum `protobuf:"varint,1,opt,name=as_set_mode,json=asSetMode,proto3,enum=otg.BgpAsPath_AsSetMode_Enum,oneof" json:"as_set_mode,omitempty"` + // The additional AS path segments to be added in the NLRI. By default, an empty AS + // path is always included and the local AS is added to it as per the value of 'as_set_mode' + // attribute. + Segments []*BgpAsPathSegment `protobuf:"bytes,2,rep,name=segments,proto3" json:"segments,omitempty"` } -func (x *BgpSrteColorSubTlv) Reset() { - *x = BgpSrteColorSubTlv{} +func (x *BgpAsPath) Reset() { + *x = BgpAsPath{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[104] + mi := &file_otg_proto_msgTypes[69] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *BgpSrteColorSubTlv) String() string { +func (x *BgpAsPath) String() string { return protoimpl.X.MessageStringOf(x) } -func (*BgpSrteColorSubTlv) ProtoMessage() {} +func (*BgpAsPath) ProtoMessage() {} -func (x *BgpSrteColorSubTlv) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[104] +func (x *BgpAsPath) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[69] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -26916,58 +26605,62 @@ func (x *BgpSrteColorSubTlv) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use BgpSrteColorSubTlv.ProtoReflect.Descriptor instead. -func (*BgpSrteColorSubTlv) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{104} +// Deprecated: Use BgpAsPath.ProtoReflect.Descriptor instead. +func (*BgpAsPath) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{69} } -func (x *BgpSrteColorSubTlv) GetColor() string { - if x != nil && x.Color != nil { - return *x.Color +func (x *BgpAsPath) GetAsSetMode() BgpAsPath_AsSetMode_Enum { + if x != nil && x.AsSetMode != nil { + return *x.AsSetMode } - return "" + return BgpAsPath_AsSetMode_unspecified } -// Configuration for the binding SID sub-TLV. This is used to signal the binding SID -// related information of the SR Policy candidate path. -type BgpSrteBindingSubTlv struct { +func (x *BgpAsPath) GetSegments() []*BgpAsPathSegment { + if x != nil { + return x.Segments + } + return nil +} + +// Configuration for a single BGP AS path segment +type BgpAsPathSegment struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Type of the binding SID. Supported types are No Binding SID or Four Octets Sid or - // IPv6 SID. - // default = BindingSidType.Enum.no_binding - BindingSidType *BgpSrteBindingSubTlv_BindingSidType_Enum `protobuf:"varint,1,opt,name=binding_sid_type,json=bindingSidType,proto3,enum=otg.BgpSrteBindingSubTlv_BindingSidType_Enum,oneof" json:"binding_sid_type,omitempty"` - // Binding SID is encoded in 4 octets. - FourOctetSid *uint32 `protobuf:"varint,2,opt,name=four_octet_sid,json=fourOctetSid,proto3,oneof" json:"four_octet_sid,omitempty"` - // IPv6 SID value. - Ipv6Sid *string `protobuf:"bytes,3,opt,name=ipv6_sid,json=ipv6Sid,proto3,oneof" json:"ipv6_sid,omitempty"` - // S-Flag encodes the Specified-BSID-only behavior. - // default = False - SFlag *bool `protobuf:"varint,4,opt,name=s_flag,json=sFlag,proto3,oneof" json:"s_flag,omitempty"` - // I-Flag encodes the Drop Upon Invalid behavior. - // default = False - IFlag *bool `protobuf:"varint,5,opt,name=i_flag,json=iFlag,proto3,oneof" json:"i_flag,omitempty"` + // AS sequence is the most common type of AS_PATH, it contains the list of ASNs starting + // with the most recent ASN being added read from left to right. + // The other three AS_PATH types are used for Confederations - AS_SET is the type of + // AS_PATH attribute that summarizes routes using using the aggregate-address command, + // allowing AS_PATHs to be summarized in the update as well. - AS_CONFED_SEQ gives + // the list of ASNs in the path starting with the most recent ASN to be added reading + // left to right - AS_CONFED_SET will allow summarization of multiple AS PATHs to be + // sent in BGP Updates. + // default = Type.Enum.as_seq + Type *BgpAsPathSegment_Type_Enum `protobuf:"varint,1,opt,name=type,proto3,enum=otg.BgpAsPathSegment_Type_Enum,oneof" json:"type,omitempty"` + // The AS numbers in this AS path segment. + AsNumbers []uint32 `protobuf:"varint,2,rep,packed,name=as_numbers,json=asNumbers,proto3" json:"as_numbers,omitempty"` } -func (x *BgpSrteBindingSubTlv) Reset() { - *x = BgpSrteBindingSubTlv{} +func (x *BgpAsPathSegment) Reset() { + *x = BgpAsPathSegment{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[105] + mi := &file_otg_proto_msgTypes[70] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *BgpSrteBindingSubTlv) String() string { +func (x *BgpAsPathSegment) String() string { return protoimpl.X.MessageStringOf(x) } -func (*BgpSrteBindingSubTlv) ProtoMessage() {} +func (*BgpAsPathSegment) ProtoMessage() {} -func (x *BgpSrteBindingSubTlv) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[105] +func (x *BgpAsPathSegment) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[70] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -26978,74 +26671,58 @@ func (x *BgpSrteBindingSubTlv) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use BgpSrteBindingSubTlv.ProtoReflect.Descriptor instead. -func (*BgpSrteBindingSubTlv) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{105} -} - -func (x *BgpSrteBindingSubTlv) GetBindingSidType() BgpSrteBindingSubTlv_BindingSidType_Enum { - if x != nil && x.BindingSidType != nil { - return *x.BindingSidType - } - return BgpSrteBindingSubTlv_BindingSidType_unspecified -} - -func (x *BgpSrteBindingSubTlv) GetFourOctetSid() uint32 { - if x != nil && x.FourOctetSid != nil { - return *x.FourOctetSid - } - return 0 -} - -func (x *BgpSrteBindingSubTlv) GetIpv6Sid() string { - if x != nil && x.Ipv6Sid != nil { - return *x.Ipv6Sid - } - return "" +// Deprecated: Use BgpAsPathSegment.ProtoReflect.Descriptor instead. +func (*BgpAsPathSegment) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{70} } -func (x *BgpSrteBindingSubTlv) GetSFlag() bool { - if x != nil && x.SFlag != nil { - return *x.SFlag +func (x *BgpAsPathSegment) GetType() BgpAsPathSegment_Type_Enum { + if x != nil && x.Type != nil { + return *x.Type } - return false + return BgpAsPathSegment_Type_unspecified } -func (x *BgpSrteBindingSubTlv) GetIFlag() bool { - if x != nil && x.IFlag != nil { - return *x.IFlag +func (x *BgpAsPathSegment) GetAsNumbers() []uint32 { + if x != nil { + return x.AsNumbers } - return false + return nil } -// Configuration for BGP preference sub TLV of the SR Policy candidate path. -type BgpSrtePreferenceSubTlv struct { +// This contains a list of different flavors of EVPN. +// For example EVPN over VXLAN or EVPN over MPLS etc to be configured per Ethernet segment. +// +// Need to instantiate correct type of EVPN instance as per requirement. +type BgpV4EvpnEvis struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // The preference value of the SR Policy candidate path. - // default = 0 - Preference *uint32 `protobuf:"varint,1,opt,name=preference,proto3,oneof" json:"preference,omitempty"` + // Description missing in models + // default = Choice.Enum.evi_vxlan + Choice *BgpV4EvpnEvis_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.BgpV4EvpnEvis_Choice_Enum,oneof" json:"choice,omitempty"` + // EVPN VXLAN instance to be configured per Ethernet Segment. + EviVxlan *BgpV4EviVxlan `protobuf:"bytes,2,opt,name=evi_vxlan,json=eviVxlan,proto3" json:"evi_vxlan,omitempty"` } -func (x *BgpSrtePreferenceSubTlv) Reset() { - *x = BgpSrtePreferenceSubTlv{} +func (x *BgpV4EvpnEvis) Reset() { + *x = BgpV4EvpnEvis{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[106] + mi := &file_otg_proto_msgTypes[71] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *BgpSrtePreferenceSubTlv) String() string { +func (x *BgpV4EvpnEvis) String() string { return protoimpl.X.MessageStringOf(x) } -func (*BgpSrtePreferenceSubTlv) ProtoMessage() {} +func (*BgpV4EvpnEvis) ProtoMessage() {} -func (x *BgpSrtePreferenceSubTlv) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[106] +func (x *BgpV4EvpnEvis) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[71] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -27056,46 +26733,115 @@ func (x *BgpSrtePreferenceSubTlv) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use BgpSrtePreferenceSubTlv.ProtoReflect.Descriptor instead. -func (*BgpSrtePreferenceSubTlv) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{106} +// Deprecated: Use BgpV4EvpnEvis.ProtoReflect.Descriptor instead. +func (*BgpV4EvpnEvis) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{71} } -func (x *BgpSrtePreferenceSubTlv) GetPreference() uint32 { - if x != nil && x.Preference != nil { - return *x.Preference +func (x *BgpV4EvpnEvis) GetChoice() BgpV4EvpnEvis_Choice_Enum { + if x != nil && x.Choice != nil { + return *x.Choice } - return 0 + return BgpV4EvpnEvis_Choice_unspecified } -// Configuration for the Policy Priority sub-TLV. The Policy Priority to indicate the -// order in which the SR policies are re-computed upon topological change. -type BgpSrtePolicyPrioritySubTlv struct { +func (x *BgpV4EvpnEvis) GetEviVxlan() *BgpV4EviVxlan { + if x != nil { + return x.EviVxlan + } + return nil +} + +// Configuration for BGP EVPN EVI. Advertises following routes - +// +// # Type 3 - Inclusive Multicast Ethernet Tag Route +// +// Type 1 - Ethernet Auto-discovery Route (Per EVI) +// +// Type 1 - Ethernet Auto-discovery Route (Per ES) +type BgpV4EviVxlan struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // One-octet Priority value. - PolicyPriority *uint32 `protobuf:"varint,1,opt,name=policy_priority,json=policyPriority,proto3,oneof" json:"policy_priority,omitempty"` + // This contains the list of Broadcast Domains to be configured per EVI. + BroadcastDomains []*BgpV4EviVxlanBroadcastDomain `protobuf:"bytes,1,rep,name=broadcast_domains,json=broadcastDomains,proto3" json:"broadcast_domains,omitempty"` + // This model only supports Ingress Replication + // default = ReplicationType.Enum.ingress_replication + ReplicationType *BgpV4EviVxlan_ReplicationType_Enum `protobuf:"varint,2,opt,name=replication_type,json=replicationType,proto3,enum=otg.BgpV4EviVxlan_ReplicationType_Enum,oneof" json:"replication_type,omitempty"` + // Downstream assigned VNI to be carried as Part of P-Multicast Service Interface Tunnel + // attribute (PMSI Tunnel Attribute) in Type 3 Inclusive Multicast Ethernet Tag Route. + // default = 16 + PmsiLabel *uint32 `protobuf:"varint,3,opt,name=pmsi_label,json=pmsiLabel,proto3,oneof" json:"pmsi_label,omitempty"` + // The Auto-discovery Route label (AD label) value, which gets advertised in the Ethernet + // Auto-discovery Route per + // default = 0 + AdLabel *uint32 `protobuf:"varint,4,opt,name=ad_label,json=adLabel,proto3,oneof" json:"ad_label,omitempty"` + // Colon separated Extended Community value of 6 Bytes - AS number: Value identifying + // an EVI. Example - for the as_2octet 60005:100. + RouteDistinguisher *BgpRouteDistinguisher `protobuf:"bytes,5,opt,name=route_distinguisher,json=routeDistinguisher,proto3" json:"route_distinguisher,omitempty"` + // List of Layer 2 Virtual Network Identifier (L2VNI) export targets associated with + // this EVI. + RouteTargetExport []*BgpRouteTarget `protobuf:"bytes,6,rep,name=route_target_export,json=routeTargetExport,proto3" json:"route_target_export,omitempty"` + // List of L2VNI import targets associated with this EVI. + RouteTargetImport []*BgpRouteTarget `protobuf:"bytes,7,rep,name=route_target_import,json=routeTargetImport,proto3" json:"route_target_import,omitempty"` + // List of Layer 3 Virtual Network Identifier (L3VNI) Export Route Targets. + L3RouteTargetExport []*BgpRouteTarget `protobuf:"bytes,8,rep,name=l3_route_target_export,json=l3RouteTargetExport,proto3" json:"l3_route_target_export,omitempty"` + // List of L3VNI Import Route Targets. + L3RouteTargetImport []*BgpRouteTarget `protobuf:"bytes,9,rep,name=l3_route_target_import,json=l3RouteTargetImport,proto3" json:"l3_route_target_import,omitempty"` + // Description missing in models + Advanced *BgpRouteAdvanced `protobuf:"bytes,10,opt,name=advanced,proto3" json:"advanced,omitempty"` + // Optional community settings. + Communities []*BgpCommunity `protobuf:"bytes,11,rep,name=communities,proto3" json:"communities,omitempty"` + // Optional Extended Community settings. The Extended Communities Attribute is a transitive + // optional BGP attribute, with the Type Code 16. Community and Extended Communities + // attributes are utilized to trigger routing decisions, such as acceptance, rejection, + // preference, or redistribution. An extended community is an 8-Bytes value. It is + // divided into two main parts. The first 2 Bytes of the community encode a type and + // sub-type fields and the last 6 Bytes carry a unique set of data in a format defined + // by the type and sub-type field. Extended communities provide a larger range for + // grouping or categorizing communities. When type is administrator_as_2octet or administrator_as_4octet, + // the valid sub types are route target and origin. The valid value for administrator_as_2octet + // and administrator_as_4octet type is either two byte AS followed by four byte local + // administrator id or four byte AS followed by two byte local administrator id. When + // type is administrator_ipv4_address the valid sub types are route target and origin. + // The valid value for administrator_ipv4_address is a four byte IPv4 address followed + // by a two byte local administrator id. When type is opaque, valid sub types are color + // and encapsulation. When sub type is color, first two bytes of the value field contain + // flags and last four bytes contains the value of the color. When sub type is encapsulation + // the first four bytes of value field are reserved and last two bytes carries the tunnel + // type from IANA's ETHER TYPES registry e.g IPv4 (protocol type = 0x0800), IPv6 (protocol + // type = 0x86dd), and MPLS (protocol type = 0x8847). When type is administrator_as_2octet_link_bandwidth + // the valid sub type is extended_bandwidth. The first two bytes of the value field + // contains the AS number and the last four bytes contains the bandwidth in IEEE floating + // point format. When type is evpn the valid subtype is mac_address. In the value field + // the low-order bit of the first byte(Flags) is defined as the Sticky/static flag and + // may be set to 1, indicating the MAC address is static and cannot move. The second + // byte is reserved and the last four bytes contain the sequence number which is used + // to ensure that PEs retain the correct MAC/IP Advertisement route when multiple updates + // occur for the same MAC address. + ExtCommunities []*BgpExtCommunity `protobuf:"bytes,12,rep,name=ext_communities,json=extCommunities,proto3" json:"ext_communities,omitempty"` + // Optional AS PATH settings. + AsPath *BgpAsPath `protobuf:"bytes,13,opt,name=as_path,json=asPath,proto3" json:"as_path,omitempty"` } -func (x *BgpSrtePolicyPrioritySubTlv) Reset() { - *x = BgpSrtePolicyPrioritySubTlv{} +func (x *BgpV4EviVxlan) Reset() { + *x = BgpV4EviVxlan{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[107] + mi := &file_otg_proto_msgTypes[72] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *BgpSrtePolicyPrioritySubTlv) String() string { +func (x *BgpV4EviVxlan) String() string { return protoimpl.X.MessageStringOf(x) } -func (*BgpSrtePolicyPrioritySubTlv) ProtoMessage() {} +func (*BgpV4EviVxlan) ProtoMessage() {} -func (x *BgpSrtePolicyPrioritySubTlv) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[107] +func (x *BgpV4EviVxlan) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[72] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -27106,160 +26852,138 @@ func (x *BgpSrtePolicyPrioritySubTlv) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use BgpSrtePolicyPrioritySubTlv.ProtoReflect.Descriptor instead. -func (*BgpSrtePolicyPrioritySubTlv) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{107} +// Deprecated: Use BgpV4EviVxlan.ProtoReflect.Descriptor instead. +func (*BgpV4EviVxlan) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{72} } -func (x *BgpSrtePolicyPrioritySubTlv) GetPolicyPriority() uint32 { - if x != nil && x.PolicyPriority != nil { - return *x.PolicyPriority +func (x *BgpV4EviVxlan) GetBroadcastDomains() []*BgpV4EviVxlanBroadcastDomain { + if x != nil { + return x.BroadcastDomains } - return 0 + return nil } -// Configuration for the Policy Name sub-TLV. The Policy Name sub-TLV is used to attach -// a symbolic name to the SR Policy candidate path. -type BgpSrtePolicyNameSubTlv struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // Symbolic name for the policy that should be a string of printable ASCII characters, - // without a NULL terminator. - PolicyName *string `protobuf:"bytes,1,opt,name=policy_name,json=policyName,proto3,oneof" json:"policy_name,omitempty"` +func (x *BgpV4EviVxlan) GetReplicationType() BgpV4EviVxlan_ReplicationType_Enum { + if x != nil && x.ReplicationType != nil { + return *x.ReplicationType + } + return BgpV4EviVxlan_ReplicationType_unspecified } -func (x *BgpSrtePolicyNameSubTlv) Reset() { - *x = BgpSrtePolicyNameSubTlv{} - if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[108] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) +func (x *BgpV4EviVxlan) GetPmsiLabel() uint32 { + if x != nil && x.PmsiLabel != nil { + return *x.PmsiLabel } + return 0 } -func (x *BgpSrtePolicyNameSubTlv) String() string { - return protoimpl.X.MessageStringOf(x) +func (x *BgpV4EviVxlan) GetAdLabel() uint32 { + if x != nil && x.AdLabel != nil { + return *x.AdLabel + } + return 0 } -func (*BgpSrtePolicyNameSubTlv) ProtoMessage() {} - -func (x *BgpSrtePolicyNameSubTlv) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[108] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms +func (x *BgpV4EviVxlan) GetRouteDistinguisher() *BgpRouteDistinguisher { + if x != nil { + return x.RouteDistinguisher } - return mi.MessageOf(x) + return nil } -// Deprecated: Use BgpSrtePolicyNameSubTlv.ProtoReflect.Descriptor instead. -func (*BgpSrtePolicyNameSubTlv) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{108} +func (x *BgpV4EviVxlan) GetRouteTargetExport() []*BgpRouteTarget { + if x != nil { + return x.RouteTargetExport + } + return nil } -func (x *BgpSrtePolicyNameSubTlv) GetPolicyName() string { - if x != nil && x.PolicyName != nil { - return *x.PolicyName +func (x *BgpV4EviVxlan) GetRouteTargetImport() []*BgpRouteTarget { + if x != nil { + return x.RouteTargetImport } - return "" + return nil } -// Configuration for BGP explicit null label policy sub TLV settings. -type BgpSrteExplicitNullLabelPolicySubTlv struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // The value of the explicit null label policy - // default = ExplicitNullLabelPolicy.Enum.do_not_push_enlp - ExplicitNullLabelPolicy *BgpSrteExplicitNullLabelPolicySubTlv_ExplicitNullLabelPolicy_Enum `protobuf:"varint,1,opt,name=explicit_null_label_policy,json=explicitNullLabelPolicy,proto3,enum=otg.BgpSrteExplicitNullLabelPolicySubTlv_ExplicitNullLabelPolicy_Enum,oneof" json:"explicit_null_label_policy,omitempty"` +func (x *BgpV4EviVxlan) GetL3RouteTargetExport() []*BgpRouteTarget { + if x != nil { + return x.L3RouteTargetExport + } + return nil } -func (x *BgpSrteExplicitNullLabelPolicySubTlv) Reset() { - *x = BgpSrteExplicitNullLabelPolicySubTlv{} - if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[109] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) +func (x *BgpV4EviVxlan) GetL3RouteTargetImport() []*BgpRouteTarget { + if x != nil { + return x.L3RouteTargetImport } + return nil } -func (x *BgpSrteExplicitNullLabelPolicySubTlv) String() string { - return protoimpl.X.MessageStringOf(x) +func (x *BgpV4EviVxlan) GetAdvanced() *BgpRouteAdvanced { + if x != nil { + return x.Advanced + } + return nil } -func (*BgpSrteExplicitNullLabelPolicySubTlv) ProtoMessage() {} - -func (x *BgpSrteExplicitNullLabelPolicySubTlv) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[109] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms +func (x *BgpV4EviVxlan) GetCommunities() []*BgpCommunity { + if x != nil { + return x.Communities } - return mi.MessageOf(x) + return nil } -// Deprecated: Use BgpSrteExplicitNullLabelPolicySubTlv.ProtoReflect.Descriptor instead. -func (*BgpSrteExplicitNullLabelPolicySubTlv) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{109} +func (x *BgpV4EviVxlan) GetExtCommunities() []*BgpExtCommunity { + if x != nil { + return x.ExtCommunities + } + return nil } -func (x *BgpSrteExplicitNullLabelPolicySubTlv) GetExplicitNullLabelPolicy() BgpSrteExplicitNullLabelPolicySubTlv_ExplicitNullLabelPolicy_Enum { - if x != nil && x.ExplicitNullLabelPolicy != nil { - return *x.ExplicitNullLabelPolicy +func (x *BgpV4EviVxlan) GetAsPath() *BgpAsPath { + if x != nil { + return x.AsPath } - return BgpSrteExplicitNullLabelPolicySubTlv_ExplicitNullLabelPolicy_unspecified + return nil } -// Optional configuration for BGP SR TE Policy segment list. The Segment List sub-TLV -// encodes a single explicit path towards the Endpoint. -type BgpSrteSegmentList struct { +// Configuration for Broadcast Domains per EVI. +type BgpV4EviVxlanBroadcastDomain struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // The Weight associated with a given path and the sub-TLV is optional. + // This contains the list of Customer MAC/IP Ranges to be configured per Broadcast Domain. + // + // Advertises following route - + // Type 2 - MAC/IP Advertisement Route. + CmacIpRange []*BgpCMacIpRange `protobuf:"bytes,1,rep,name=cmac_ip_range,json=cmacIpRange,proto3" json:"cmac_ip_range,omitempty"` + // The Ethernet Tag ID of the Broadcast Domain. // default = 0 - Weight *uint32 `protobuf:"varint,1,opt,name=weight,proto3,oneof" json:"weight,omitempty"` - // Description missing in models - Segments []*BgpSrteSegment `protobuf:"bytes,2,rep,name=segments,proto3" json:"segments,omitempty"` - // Globally unique name of an object. It also serves as the primary key for arrays of - // objects. - // required = true - Name *string `protobuf:"bytes,3,opt,name=name,proto3,oneof" json:"name,omitempty"` - // If enabled means that this part of the configuration including any active 'children' - // nodes will be advertised to peer. If disabled, this means that though config is - // present, it is not taking any part of the test but can be activated at run-time to - // advertise just this part of the configuration to the peer. - // default = True - Active *bool `protobuf:"varint,4,opt,name=active,proto3,oneof" json:"active,omitempty"` + EthernetTagId *uint32 `protobuf:"varint,2,opt,name=ethernet_tag_id,json=ethernetTagId,proto3,oneof" json:"ethernet_tag_id,omitempty"` + // VLAN-Aware service to be enabled or disabled. + // default = False + VlanAwareService *bool `protobuf:"varint,3,opt,name=vlan_aware_service,json=vlanAwareService,proto3,oneof" json:"vlan_aware_service,omitempty"` } -func (x *BgpSrteSegmentList) Reset() { - *x = BgpSrteSegmentList{} +func (x *BgpV4EviVxlanBroadcastDomain) Reset() { + *x = BgpV4EviVxlanBroadcastDomain{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[110] + mi := &file_otg_proto_msgTypes[73] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *BgpSrteSegmentList) String() string { +func (x *BgpV4EviVxlanBroadcastDomain) String() string { return protoimpl.X.MessageStringOf(x) } -func (*BgpSrteSegmentList) ProtoMessage() {} +func (*BgpV4EviVxlanBroadcastDomain) ProtoMessage() {} -func (x *BgpSrteSegmentList) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[110] +func (x *BgpV4EviVxlanBroadcastDomain) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[73] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -27270,114 +26994,116 @@ func (x *BgpSrteSegmentList) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use BgpSrteSegmentList.ProtoReflect.Descriptor instead. -func (*BgpSrteSegmentList) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{110} -} - -func (x *BgpSrteSegmentList) GetWeight() uint32 { - if x != nil && x.Weight != nil { - return *x.Weight - } - return 0 +// Deprecated: Use BgpV4EviVxlanBroadcastDomain.ProtoReflect.Descriptor instead. +func (*BgpV4EviVxlanBroadcastDomain) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{73} } -func (x *BgpSrteSegmentList) GetSegments() []*BgpSrteSegment { +func (x *BgpV4EviVxlanBroadcastDomain) GetCmacIpRange() []*BgpCMacIpRange { if x != nil { - return x.Segments + return x.CmacIpRange } return nil } -func (x *BgpSrteSegmentList) GetName() string { - if x != nil && x.Name != nil { - return *x.Name +func (x *BgpV4EviVxlanBroadcastDomain) GetEthernetTagId() uint32 { + if x != nil && x.EthernetTagId != nil { + return *x.EthernetTagId } - return "" + return 0 } -func (x *BgpSrteSegmentList) GetActive() bool { - if x != nil && x.Active != nil { - return *x.Active +func (x *BgpV4EviVxlanBroadcastDomain) GetVlanAwareService() bool { + if x != nil && x.VlanAwareService != nil { + return *x.VlanAwareService } return false } -// A Segment sub-TLV describes a single segment in a segment list i.e., a single element -// of the explicit path. The Segment sub-TLVs are optional. -type BgpSrteSegment struct { +// Configuration for MAC/IP Ranges per Broadcast Domain. +// +// Advertises following route - +// +// Type 2 - MAC/IP Advertisement Route. +type BgpCMacIpRange struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Specify one of the segment type. - // https://datatracker.ietf.org/doc/html/draft-ietf-idr-segment-routing-te-policy-13 - // Type A: SID only, in the form of MPLS Label. - // Type B: SID only, in the form of IPv6 Address. - // Type C: IPv4 Node Address with optional SID. - // Type D: IPv6 Node Address with optional SID for SR MPLS. - // Type E: IPv4 Address and index with optional SID. - // Type F: IPv4 Local and Remote addresses with optional SID. - // Type G: IPv6 Address and index for local and remote pair with optional - // SID for SR MPLS. - // Type H: IPv6 Local and Remote addresses with optional SID for SR MPLS. - // Type I: IPv6 Node Address with optional SID for SRv6. - // Type J: IPv6 Address and index for local and remote pair with optional - // SID for SRv6. - // Type K: IPv6 Local and Remote addresses for SRv6. - // required = true - SegmentType *BgpSrteSegment_SegmentType_Enum `protobuf:"varint,1,opt,name=segment_type,json=segmentType,proto3,enum=otg.BgpSrteSegment_SegmentType_Enum,oneof" json:"segment_type,omitempty"` - // Description missing in models - TypeA *BgpSrteSegmentATypeSubTlv `protobuf:"bytes,2,opt,name=type_a,json=typeA,proto3" json:"type_a,omitempty"` - // Description missing in models - TypeB *BgpSrteSegmentBTypeSubTlv `protobuf:"bytes,3,opt,name=type_b,json=typeB,proto3" json:"type_b,omitempty"` - // Description missing in models - TypeC *BgpSrteSegmentCTypeSubTlv `protobuf:"bytes,4,opt,name=type_c,json=typeC,proto3" json:"type_c,omitempty"` - // Description missing in models - TypeD *BgpSrteSegmentDTypeSubTlv `protobuf:"bytes,5,opt,name=type_d,json=typeD,proto3" json:"type_d,omitempty"` - // Description missing in models - TypeE *BgpSrteSegmentETypeSubTlv `protobuf:"bytes,6,opt,name=type_e,json=typeE,proto3" json:"type_e,omitempty"` - // Description missing in models - TypeF *BgpSrteSegmentFTypeSubTlv `protobuf:"bytes,7,opt,name=type_f,json=typeF,proto3" json:"type_f,omitempty"` - // Description missing in models - TypeG *BgpSrteSegmentGTypeSubTlv `protobuf:"bytes,8,opt,name=type_g,json=typeG,proto3" json:"type_g,omitempty"` - // Description missing in models - TypeH *BgpSrteSegmentHTypeSubTlv `protobuf:"bytes,9,opt,name=type_h,json=typeH,proto3" json:"type_h,omitempty"` - // Description missing in models - TypeI *BgpSrteSegmentITypeSubTlv `protobuf:"bytes,10,opt,name=type_i,json=typeI,proto3" json:"type_i,omitempty"` - // Description missing in models - TypeJ *BgpSrteSegmentJTypeSubTlv `protobuf:"bytes,11,opt,name=type_j,json=typeJ,proto3" json:"type_j,omitempty"` + // Host MAC address range per Broadcast Domain. + MacAddresses *MACRouteAddress `protobuf:"bytes,1,opt,name=mac_addresses,json=macAddresses,proto3" json:"mac_addresses,omitempty"` + // Layer 2 Virtual Network Identifier (L2VNI) to be advertised with MAC/IP Advertisement + // Route (Type 2) + // default = 0 + L2Vni *uint32 `protobuf:"varint,2,opt,name=l2vni,proto3,oneof" json:"l2vni,omitempty"` + // Host IPv4 address range per Broadcast Domain. + Ipv4Addresses *V4RouteAddress `protobuf:"bytes,3,opt,name=ipv4_addresses,json=ipv4Addresses,proto3" json:"ipv4_addresses,omitempty"` + // Host IPv6 address range per Broadcast Domain. + Ipv6Addresses *V6RouteAddress `protobuf:"bytes,4,opt,name=ipv6_addresses,json=ipv6Addresses,proto3" json:"ipv6_addresses,omitempty"` + // Layer 3 Virtual Network Identifier (L3VNI) to be advertised with MAC/IP Advertisement + // Route (Type 2). + // default = 0 + L3Vni *uint32 `protobuf:"varint,5,opt,name=l3vni,proto3,oneof" json:"l3vni,omitempty"` + // Include default Gateway Extended Community in MAC/IP Advertisement Route (Type 2). + // default = False + IncludeDefaultGateway *bool `protobuf:"varint,6,opt,name=include_default_gateway,json=includeDefaultGateway,proto3,oneof" json:"include_default_gateway,omitempty"` // Description missing in models - TypeK *BgpSrteSegmentKTypeSubTlv `protobuf:"bytes,12,opt,name=type_k,json=typeK,proto3" json:"type_k,omitempty"` + Advanced *BgpRouteAdvanced `protobuf:"bytes,7,opt,name=advanced,proto3" json:"advanced,omitempty"` + // Optional community settings. + Communities []*BgpCommunity `protobuf:"bytes,8,rep,name=communities,proto3" json:"communities,omitempty"` + // Optional Extended Community settings. The Extended Communities Attribute is a transitive + // optional BGP attribute, with the Type Code 16. Community and Extended Communities + // attributes are utilized to trigger routing decisions, such as acceptance, rejection, + // preference, or redistribution. An extended community is an 8-Bytes value. It is + // divided into two main parts. The first 2 Bytes of the community encode a type and + // sub-type fields and the last 6 Bytes carry a unique set of data in a format defined + // by the type and sub-type field. Extended communities provide a larger range for + // grouping or categorizing communities. When type is administrator_as_2octet or administrator_as_4octet, + // the valid sub types are route target and origin. The valid value for administrator_as_2octet + // and administrator_as_4octet type is either two byte AS followed by four byte local + // administrator id or four byte AS followed by two byte local administrator id. When + // type is administrator_ipv4_address the valid sub types are route target and origin. + // The valid value for administrator_ipv4_address is a four byte IPv4 address followed + // by a two byte local administrator id. When type is opaque, valid sub types are color + // and encapsulation. When sub type is color, first two bytes of the value field contain + // flags and last four bytes contains the value of the color. When sub type is encapsulation + // the first four bytes of value field are reserved and last two bytes carries the tunnel + // type from IANA's ETHER TYPES registry e.g IPv4 (protocol type = 0x0800), IPv6 (protocol + // type = 0x86dd), and MPLS (protocol type = 0x8847). When type is administrator_as_2octet_link_bandwidth + // the valid sub type is extended_bandwidth. The first two bytes of the value field + // contains the AS number and the last four bytes contains the bandwidth in IEEE floating + // point format. When type is evpn the valid subtype is mac_address. In the value field + // the low-order bit of the first byte(Flags) is defined as the Sticky/static flag and + // may be set to 1, indicating the MAC address is static and cannot move. The second + // byte is reserved and the last four bytes contain the sequence number which is used + // to ensure that PEs retain the correct MAC/IP Advertisement route when multiple updates + // occur for the same MAC address. + ExtCommunities []*BgpExtCommunity `protobuf:"bytes,9,rep,name=ext_communities,json=extCommunities,proto3" json:"ext_communities,omitempty"` + // Optional AS PATH settings. + AsPath *BgpAsPath `protobuf:"bytes,10,opt,name=as_path,json=asPath,proto3" json:"as_path,omitempty"` // Globally unique name of an object. It also serves as the primary key for arrays of // objects. // required = true - Name *string `protobuf:"bytes,13,opt,name=name,proto3,oneof" json:"name,omitempty"` - // If enabled means that this part of the configuration including any active 'children' - // nodes will be advertised to peer. If disabled, this means that though config is - // present, it is not taking any part of the test but can be activated at run-time to - // advertise just this part of the configuration to the peer. - // default = True - Active *bool `protobuf:"varint,14,opt,name=active,proto3,oneof" json:"active,omitempty"` + Name *string `protobuf:"bytes,11,opt,name=name,proto3,oneof" json:"name,omitempty"` } -func (x *BgpSrteSegment) Reset() { - *x = BgpSrteSegment{} +func (x *BgpCMacIpRange) Reset() { + *x = BgpCMacIpRange{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[111] + mi := &file_otg_proto_msgTypes[74] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *BgpSrteSegment) String() string { +func (x *BgpCMacIpRange) String() string { return protoimpl.X.MessageStringOf(x) } -func (*BgpSrteSegment) ProtoMessage() {} +func (*BgpCMacIpRange) ProtoMessage() {} -func (x *BgpSrteSegment) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[111] +func (x *BgpCMacIpRange) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[74] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -27388,142 +27114,125 @@ func (x *BgpSrteSegment) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use BgpSrteSegment.ProtoReflect.Descriptor instead. -func (*BgpSrteSegment) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{111} -} - -func (x *BgpSrteSegment) GetSegmentType() BgpSrteSegment_SegmentType_Enum { - if x != nil && x.SegmentType != nil { - return *x.SegmentType - } - return BgpSrteSegment_SegmentType_unspecified -} - -func (x *BgpSrteSegment) GetTypeA() *BgpSrteSegmentATypeSubTlv { - if x != nil { - return x.TypeA - } - return nil +// Deprecated: Use BgpCMacIpRange.ProtoReflect.Descriptor instead. +func (*BgpCMacIpRange) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{74} } -func (x *BgpSrteSegment) GetTypeB() *BgpSrteSegmentBTypeSubTlv { +func (x *BgpCMacIpRange) GetMacAddresses() *MACRouteAddress { if x != nil { - return x.TypeB + return x.MacAddresses } return nil } -func (x *BgpSrteSegment) GetTypeC() *BgpSrteSegmentCTypeSubTlv { - if x != nil { - return x.TypeC +func (x *BgpCMacIpRange) GetL2Vni() uint32 { + if x != nil && x.L2Vni != nil { + return *x.L2Vni } - return nil + return 0 } -func (x *BgpSrteSegment) GetTypeD() *BgpSrteSegmentDTypeSubTlv { +func (x *BgpCMacIpRange) GetIpv4Addresses() *V4RouteAddress { if x != nil { - return x.TypeD + return x.Ipv4Addresses } return nil } -func (x *BgpSrteSegment) GetTypeE() *BgpSrteSegmentETypeSubTlv { +func (x *BgpCMacIpRange) GetIpv6Addresses() *V6RouteAddress { if x != nil { - return x.TypeE + return x.Ipv6Addresses } return nil } -func (x *BgpSrteSegment) GetTypeF() *BgpSrteSegmentFTypeSubTlv { - if x != nil { - return x.TypeF +func (x *BgpCMacIpRange) GetL3Vni() uint32 { + if x != nil && x.L3Vni != nil { + return *x.L3Vni } - return nil + return 0 } -func (x *BgpSrteSegment) GetTypeG() *BgpSrteSegmentGTypeSubTlv { - if x != nil { - return x.TypeG +func (x *BgpCMacIpRange) GetIncludeDefaultGateway() bool { + if x != nil && x.IncludeDefaultGateway != nil { + return *x.IncludeDefaultGateway } - return nil + return false } -func (x *BgpSrteSegment) GetTypeH() *BgpSrteSegmentHTypeSubTlv { +func (x *BgpCMacIpRange) GetAdvanced() *BgpRouteAdvanced { if x != nil { - return x.TypeH + return x.Advanced } return nil } -func (x *BgpSrteSegment) GetTypeI() *BgpSrteSegmentITypeSubTlv { +func (x *BgpCMacIpRange) GetCommunities() []*BgpCommunity { if x != nil { - return x.TypeI + return x.Communities } return nil } -func (x *BgpSrteSegment) GetTypeJ() *BgpSrteSegmentJTypeSubTlv { +func (x *BgpCMacIpRange) GetExtCommunities() []*BgpExtCommunity { if x != nil { - return x.TypeJ + return x.ExtCommunities } return nil } -func (x *BgpSrteSegment) GetTypeK() *BgpSrteSegmentKTypeSubTlv { +func (x *BgpCMacIpRange) GetAsPath() *BgpAsPath { if x != nil { - return x.TypeK + return x.AsPath } return nil } -func (x *BgpSrteSegment) GetName() string { +func (x *BgpCMacIpRange) GetName() string { if x != nil && x.Name != nil { return *x.Name } return "" } -func (x *BgpSrteSegment) GetActive() bool { - if x != nil && x.Active != nil { - return *x.Active - } - return false -} - -// Configuration for SR-MPLS with Label, TC, Bottom-of-Stack and TTL. -type BgpSrteSrMplsSid struct { +// BGP Route Distinguisher. +type BgpRouteDistinguisher struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Label value in [0, 2^20 -1]. - Label *uint32 `protobuf:"varint,1,opt,name=label,proto3,oneof" json:"label,omitempty"` - // Traffic class in bits. - Tc *uint32 `protobuf:"varint,2,opt,name=tc,proto3,oneof" json:"tc,omitempty"` - // Bottom-of-Stack bit. - SBit *bool `protobuf:"varint,3,opt,name=s_bit,json=sBit,proto3,oneof" json:"s_bit,omitempty"` - // Time To Live. - Ttl *uint32 `protobuf:"varint,4,opt,name=ttl,proto3,oneof" json:"ttl,omitempty"` + // Route Distinguisher Type field of 2 Byte. + // - as_2octet: Two-Octet AS Specific Extended Community (RFC 4360). + // - ipv4_address: IPv4 Address Specific Extended Community (RFC 4360). + // - as_4octet: 4-Octet AS Specific Extended Community (RFC 5668). + // default = RdType.Enum.as_2octet + RdType *BgpRouteDistinguisher_RdType_Enum `protobuf:"varint,1,opt,name=rd_type,json=rdType,proto3,enum=otg.BgpRouteDistinguisher_RdType_Enum,oneof" json:"rd_type,omitempty"` + // Allow to automatically configure RD IP address from local ip. + // default = False + AutoConfigRdIpAddr *bool `protobuf:"varint,2,opt,name=auto_config_rd_ip_addr,json=autoConfigRdIpAddr,proto3,oneof" json:"auto_config_rd_ip_addr,omitempty"` + // Colon separated Extended Community value of 6 Bytes - AS number: Value. Example + // - for the as_2octet or as_4octet 60005:100, for ipv4_address 1.1.1.1:100 + RdValue *string `protobuf:"bytes,3,opt,name=rd_value,json=rdValue,proto3,oneof" json:"rd_value,omitempty"` } -func (x *BgpSrteSrMplsSid) Reset() { - *x = BgpSrteSrMplsSid{} +func (x *BgpRouteDistinguisher) Reset() { + *x = BgpRouteDistinguisher{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[112] + mi := &file_otg_proto_msgTypes[75] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *BgpSrteSrMplsSid) String() string { +func (x *BgpRouteDistinguisher) String() string { return protoimpl.X.MessageStringOf(x) } -func (*BgpSrteSrMplsSid) ProtoMessage() {} +func (*BgpRouteDistinguisher) ProtoMessage() {} -func (x *BgpSrteSrMplsSid) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[112] +func (x *BgpRouteDistinguisher) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[75] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -27534,78 +27243,65 @@ func (x *BgpSrteSrMplsSid) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use BgpSrteSrMplsSid.ProtoReflect.Descriptor instead. -func (*BgpSrteSrMplsSid) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{112} -} - -func (x *BgpSrteSrMplsSid) GetLabel() uint32 { - if x != nil && x.Label != nil { - return *x.Label - } - return 0 +// Deprecated: Use BgpRouteDistinguisher.ProtoReflect.Descriptor instead. +func (*BgpRouteDistinguisher) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{75} } -func (x *BgpSrteSrMplsSid) GetTc() uint32 { - if x != nil && x.Tc != nil { - return *x.Tc +func (x *BgpRouteDistinguisher) GetRdType() BgpRouteDistinguisher_RdType_Enum { + if x != nil && x.RdType != nil { + return *x.RdType } - return 0 + return BgpRouteDistinguisher_RdType_unspecified } -func (x *BgpSrteSrMplsSid) GetSBit() bool { - if x != nil && x.SBit != nil { - return *x.SBit +func (x *BgpRouteDistinguisher) GetAutoConfigRdIpAddr() bool { + if x != nil && x.AutoConfigRdIpAddr != nil { + return *x.AutoConfigRdIpAddr } return false } -func (x *BgpSrteSrMplsSid) GetTtl() uint32 { - if x != nil && x.Ttl != nil { - return *x.Ttl +func (x *BgpRouteDistinguisher) GetRdValue() string { + if x != nil && x.RdValue != nil { + return *x.RdValue } - return 0 + return "" } -// Configuration for SRv6 Endpoint Behavior and SID Structure. Its optional. Summation -// of lengths for Locator Block, Locator Node, Function, and Argument MUST be less -// than or equal to 128. -type BgpSrteSRv6SIDEndpointBehaviorAndStructure struct { +// BGP Route Target. +type BgpRouteTarget struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // SRv6 SID Locator Block length in bits. - // default = 0 - LbLength *uint32 `protobuf:"varint,1,opt,name=lb_length,json=lbLength,proto3,oneof" json:"lb_length,omitempty"` - // SRv6 SID Locator Node length in bits. - // default = 0 - LnLength *uint32 `protobuf:"varint,2,opt,name=ln_length,json=lnLength,proto3,oneof" json:"ln_length,omitempty"` - // SRv6 SID Function length in bits. - // default = 0 - FuncLength *uint32 `protobuf:"varint,3,opt,name=func_length,json=funcLength,proto3,oneof" json:"func_length,omitempty"` - // SRv6 SID Arguments length in bits. - // default = 0 - ArgLength *uint32 `protobuf:"varint,4,opt,name=arg_length,json=argLength,proto3,oneof" json:"arg_length,omitempty"` + // Extended Community Type field of 2 Byte. + // - as_2octet: Two-Octet AS Specific Extended Community (RFC 4360). + // - ipv4_address: IPv4 Address Specific Extended Community (RFC 4360). + // - as_4octet: 4-Octet AS Specific Extended Community (RFC 5668). + RtType *BgpRouteTarget_RtType_Enum `protobuf:"varint,1,opt,name=rt_type,json=rtType,proto3,enum=otg.BgpRouteTarget_RtType_Enum,oneof" json:"rt_type,omitempty"` + // Colon separated Extended Community value of 6 Bytes - AS number: Assigned Number. + // Example - for the as_2octet or as_4octet 60005:100, for ipv4_address 1.1.1.1:100 + RtValue *string `protobuf:"bytes,2,opt,name=rt_value,json=rtValue,proto3,oneof" json:"rt_value,omitempty"` } -func (x *BgpSrteSRv6SIDEndpointBehaviorAndStructure) Reset() { - *x = BgpSrteSRv6SIDEndpointBehaviorAndStructure{} +func (x *BgpRouteTarget) Reset() { + *x = BgpRouteTarget{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[113] + mi := &file_otg_proto_msgTypes[76] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *BgpSrteSRv6SIDEndpointBehaviorAndStructure) String() string { +func (x *BgpRouteTarget) String() string { return protoimpl.X.MessageStringOf(x) } -func (*BgpSrteSRv6SIDEndpointBehaviorAndStructure) ProtoMessage() {} +func (*BgpRouteTarget) ProtoMessage() {} -func (x *BgpSrteSRv6SIDEndpointBehaviorAndStructure) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[113] +func (x *BgpRouteTarget) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[76] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -27616,75 +27312,82 @@ func (x *BgpSrteSRv6SIDEndpointBehaviorAndStructure) ProtoReflect() protoreflect return mi.MessageOf(x) } -// Deprecated: Use BgpSrteSRv6SIDEndpointBehaviorAndStructure.ProtoReflect.Descriptor instead. -func (*BgpSrteSRv6SIDEndpointBehaviorAndStructure) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{113} -} - -func (x *BgpSrteSRv6SIDEndpointBehaviorAndStructure) GetLbLength() uint32 { - if x != nil && x.LbLength != nil { - return *x.LbLength - } - return 0 -} - -func (x *BgpSrteSRv6SIDEndpointBehaviorAndStructure) GetLnLength() uint32 { - if x != nil && x.LnLength != nil { - return *x.LnLength - } - return 0 +// Deprecated: Use BgpRouteTarget.ProtoReflect.Descriptor instead. +func (*BgpRouteTarget) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{76} } -func (x *BgpSrteSRv6SIDEndpointBehaviorAndStructure) GetFuncLength() uint32 { - if x != nil && x.FuncLength != nil { - return *x.FuncLength +func (x *BgpRouteTarget) GetRtType() BgpRouteTarget_RtType_Enum { + if x != nil && x.RtType != nil { + return *x.RtType } - return 0 + return BgpRouteTarget_RtType_unspecified } -func (x *BgpSrteSRv6SIDEndpointBehaviorAndStructure) GetArgLength() uint32 { - if x != nil && x.ArgLength != nil { - return *x.ArgLength +func (x *BgpRouteTarget) GetRtValue() string { + if x != nil && x.RtValue != nil { + return *x.RtValue } - return 0 + return "" } -// Type A: SID only, in the form of MPLS Label. -type BgpSrteSegmentATypeSubTlv struct { +// Configuration for BGP advanced settings. +type BgpAdvanced struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // One octet bitmap for flags including V-Flag, A-Flag, S-Flag, B-Flag etc. as defined - // in https://datatracker.ietf.org/doc/html/draft-ietf-idr-segment-routing-te-policy-13#section-2.4.4.2.12 - Flags *string `protobuf:"bytes,1,opt,name=flags,proto3,oneof" json:"flags,omitempty"` - // Label value in [0, 2^20 -1]. - Label *uint32 `protobuf:"varint,2,opt,name=label,proto3,oneof" json:"label,omitempty"` - // Traffic class in bits. - Tc *uint32 `protobuf:"varint,3,opt,name=tc,proto3,oneof" json:"tc,omitempty"` - // Bottom-of-Stack bit. - SBit *bool `protobuf:"varint,4,opt,name=s_bit,json=sBit,proto3,oneof" json:"s_bit,omitempty"` - // Time To Live. - Ttl *uint32 `protobuf:"varint,5,opt,name=ttl,proto3,oneof" json:"ttl,omitempty"` + // Number of seconds the sender proposes for the value of the Hold Timer. + // default = 90 + HoldTimeInterval *uint32 `protobuf:"varint,1,opt,name=hold_time_interval,json=holdTimeInterval,proto3,oneof" json:"hold_time_interval,omitempty"` + // Number of seconds between transmissions of Keepalive messages by this peer. + // default = 30 + KeepAliveInterval *uint32 `protobuf:"varint,2,opt,name=keep_alive_interval,json=keepAliveInterval,proto3,oneof" json:"keep_alive_interval,omitempty"` + // The time interval at which Update messages are sent to the DUT, expressed as the + // number of milliseconds between Update messages. The update interval 0 implies to + // send all the updates as fast as possible. + // default = 0 + UpdateInterval *uint32 `protobuf:"varint,3,opt,name=update_interval,json=updateInterval,proto3,oneof" json:"update_interval,omitempty"` + // The limited number of iterations that a unit of data can experience before the data + // is discarded. This is placed in the TTL field in the IP header of the transmitted + // packets. + // default = 64 + TimeToLive *uint32 `protobuf:"varint,4,opt,name=time_to_live,json=timeToLive,proto3,oneof" json:"time_to_live,omitempty"` + // The value to be used as a secret MD5 key for authentication. If not configured, MD5 + // authentication will not be enabled. + Md5Key *string `protobuf:"bytes,5,opt,name=md5_key,json=md5Key,proto3,oneof" json:"md5_key,omitempty"` + // If set to true, the local BGP peer will wait for the remote peer to initiate the + // BGP session + // by establishing the TCP connection, rather than initiating sessions from the local + // peer. + // default = False + PassiveMode *bool `protobuf:"varint,6,opt,name=passive_mode,json=passiveMode,proto3,oneof" json:"passive_mode,omitempty"` + // The TCP port number on which to accept BGP connections from the remote peer. + // default = 179 + ListenPort *uint32 `protobuf:"varint,7,opt,name=listen_port,json=listenPort,proto3,oneof" json:"listen_port,omitempty"` + // Destination TCP port number of the BGP peer when initiating a + // session from the local BGP peer. + // default = 179 + NeighborPort *uint32 `protobuf:"varint,8,opt,name=neighbor_port,json=neighborPort,proto3,oneof" json:"neighbor_port,omitempty"` } -func (x *BgpSrteSegmentATypeSubTlv) Reset() { - *x = BgpSrteSegmentATypeSubTlv{} +func (x *BgpAdvanced) Reset() { + *x = BgpAdvanced{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[114] + mi := &file_otg_proto_msgTypes[77] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *BgpSrteSegmentATypeSubTlv) String() string { +func (x *BgpAdvanced) String() string { return protoimpl.X.MessageStringOf(x) } -func (*BgpSrteSegmentATypeSubTlv) ProtoMessage() {} +func (*BgpAdvanced) ProtoMessage() {} -func (x *BgpSrteSegmentATypeSubTlv) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[114] +func (x *BgpAdvanced) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[77] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -27695,151 +27398,179 @@ func (x *BgpSrteSegmentATypeSubTlv) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use BgpSrteSegmentATypeSubTlv.ProtoReflect.Descriptor instead. -func (*BgpSrteSegmentATypeSubTlv) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{114} +// Deprecated: Use BgpAdvanced.ProtoReflect.Descriptor instead. +func (*BgpAdvanced) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{77} } -func (x *BgpSrteSegmentATypeSubTlv) GetFlags() string { - if x != nil && x.Flags != nil { - return *x.Flags +func (x *BgpAdvanced) GetHoldTimeInterval() uint32 { + if x != nil && x.HoldTimeInterval != nil { + return *x.HoldTimeInterval } - return "" + return 0 } -func (x *BgpSrteSegmentATypeSubTlv) GetLabel() uint32 { - if x != nil && x.Label != nil { - return *x.Label +func (x *BgpAdvanced) GetKeepAliveInterval() uint32 { + if x != nil && x.KeepAliveInterval != nil { + return *x.KeepAliveInterval } return 0 } -func (x *BgpSrteSegmentATypeSubTlv) GetTc() uint32 { - if x != nil && x.Tc != nil { - return *x.Tc +func (x *BgpAdvanced) GetUpdateInterval() uint32 { + if x != nil && x.UpdateInterval != nil { + return *x.UpdateInterval } return 0 } -func (x *BgpSrteSegmentATypeSubTlv) GetSBit() bool { - if x != nil && x.SBit != nil { - return *x.SBit +func (x *BgpAdvanced) GetTimeToLive() uint32 { + if x != nil && x.TimeToLive != nil { + return *x.TimeToLive } - return false + return 0 } -func (x *BgpSrteSegmentATypeSubTlv) GetTtl() uint32 { - if x != nil && x.Ttl != nil { - return *x.Ttl +func (x *BgpAdvanced) GetMd5Key() string { + if x != nil && x.Md5Key != nil { + return *x.Md5Key } - return 0 + return "" } -// Type B: SID only, in the form of IPv6 address. -type BgpSrteSegmentBTypeSubTlv struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // One octet bitmap for flags including V-Flag, A-Flag, S-Flag, B-Flag etc. as defined - // in https://datatracker.ietf.org/doc/html/draft-ietf-idr-segment-routing-te-policy-13#section-2.4.4.2.12 - Flags *string `protobuf:"bytes,1,opt,name=flags,proto3,oneof" json:"flags,omitempty"` - // SRv6 SID. - // required = true - Srv6Sid *string `protobuf:"bytes,2,opt,name=srv6_sid,json=srv6Sid,proto3,oneof" json:"srv6_sid,omitempty"` - // Optional SRv6 Endpoint Behavior and SID Structure. - Srv6SidEndpointBehavior *BgpSrteSRv6SIDEndpointBehaviorAndStructure `protobuf:"bytes,3,opt,name=srv6_sid_endpoint_behavior,json=srv6SidEndpointBehavior,proto3" json:"srv6_sid_endpoint_behavior,omitempty"` +func (x *BgpAdvanced) GetPassiveMode() bool { + if x != nil && x.PassiveMode != nil { + return *x.PassiveMode + } + return false } -func (x *BgpSrteSegmentBTypeSubTlv) Reset() { - *x = BgpSrteSegmentBTypeSubTlv{} - if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[115] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) +func (x *BgpAdvanced) GetListenPort() uint32 { + if x != nil && x.ListenPort != nil { + return *x.ListenPort } + return 0 } -func (x *BgpSrteSegmentBTypeSubTlv) String() string { - return protoimpl.X.MessageStringOf(x) +func (x *BgpAdvanced) GetNeighborPort() uint32 { + if x != nil && x.NeighborPort != nil { + return *x.NeighborPort + } + return 0 } -func (*BgpSrteSegmentBTypeSubTlv) ProtoMessage() {} +// Configuration for BGP capability settings. +type BgpCapability struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields -func (x *BgpSrteSegmentBTypeSubTlv) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[115] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use BgpSrteSegmentBTypeSubTlv.ProtoReflect.Descriptor instead. -func (*BgpSrteSegmentBTypeSubTlv) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{115} -} - -func (x *BgpSrteSegmentBTypeSubTlv) GetFlags() string { - if x != nil && x.Flags != nil { - return *x.Flags - } - return "" -} - -func (x *BgpSrteSegmentBTypeSubTlv) GetSrv6Sid() string { - if x != nil && x.Srv6Sid != nil { - return *x.Srv6Sid - } - return "" -} - -func (x *BgpSrteSegmentBTypeSubTlv) GetSrv6SidEndpointBehavior() *BgpSrteSRv6SIDEndpointBehaviorAndStructure { - if x != nil { - return x.Srv6SidEndpointBehavior - } - return nil -} - -// Type C: IPv4 Node Address with optional SID. -type BgpSrteSegmentCTypeSubTlv struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // One octet bitmap for flags including V-Flag, A-Flag, S-Flag, B-Flag etc. as defined - // in https://datatracker.ietf.org/doc/html/draft-ietf-idr-segment-routing-te-policy-13#section-2.4.4.2.12 - Flags *string `protobuf:"bytes,1,opt,name=flags,proto3,oneof" json:"flags,omitempty"` - // SR Algorithm identifier when A-Flag in on. - // default = 0 - SrAlgorithm *uint32 `protobuf:"varint,2,opt,name=sr_algorithm,json=srAlgorithm,proto3,oneof" json:"sr_algorithm,omitempty"` - // IPv4 address representing a node. - // required = true - Ipv4NodeAddress *string `protobuf:"bytes,3,opt,name=ipv4_node_address,json=ipv4NodeAddress,proto3,oneof" json:"ipv4_node_address,omitempty"` - // Optional SR-MPLS SID. - SrMplsSid *BgpSrteSrMplsSid `protobuf:"bytes,4,opt,name=sr_mpls_sid,json=srMplsSid,proto3" json:"sr_mpls_sid,omitempty"` + // Support for the IPv4 Unicast address family. + // default = True + Ipv4Unicast *bool `protobuf:"varint,1,opt,name=ipv4_unicast,json=ipv4Unicast,proto3,oneof" json:"ipv4_unicast,omitempty"` + // Support for the IPv4 Multicast address family. + // default = False + Ipv4Multicast *bool `protobuf:"varint,2,opt,name=ipv4_multicast,json=ipv4Multicast,proto3,oneof" json:"ipv4_multicast,omitempty"` + // Support for the IPv4 Unicast address family. + // default = True + Ipv6Unicast *bool `protobuf:"varint,3,opt,name=ipv6_unicast,json=ipv6Unicast,proto3,oneof" json:"ipv6_unicast,omitempty"` + // Support for the IPv6 Multicast address family. + // default = False + Ipv6Multicast *bool `protobuf:"varint,4,opt,name=ipv6_multicast,json=ipv6Multicast,proto3,oneof" json:"ipv6_multicast,omitempty"` + // Support for VPLS as below. + // RFC4761 - Virtual Private LAN Service (VPLS) using BGP for Auto-Discovery + // and Signaling. + // RFC6624 - Layer 2 Virtual Private Networks using BGP for Auto-Discovery + // and Signaling. + // default = False + Vpls *bool `protobuf:"varint,5,opt,name=vpls,proto3,oneof" json:"vpls,omitempty"` + // Support for the route refresh capabilities. Route Refresh allows the dynamic exchange + // of route refresh requests and routing information between BGP peers and the subsequent + // re-advertisement of the outbound or inbound routing table. + // default = True + RouteRefresh *bool `protobuf:"varint,6,opt,name=route_refresh,json=routeRefresh,proto3,oneof" json:"route_refresh,omitempty"` + // Supports for the route constraint capabilities. Route Constraint allows the advertisement + // of Route Target Membership information. The BGP peers exchange Route Target Reachability + // Information, which is used to build a route distribution graph. This limits the + // propagation of VPN Network Layer Reachability Information (NLRI) between different + // autonomous systems or distinct clusters of the same autonomous system. This is supported + // for Layer 3 Virtual Private Network scenario. + // default = False + RouteConstraint *bool `protobuf:"varint,7,opt,name=route_constraint,json=routeConstraint,proto3,oneof" json:"route_constraint,omitempty"` + // Support for BGP Link State for ISIS and OSPF. + // default = False + LinkStateNonVpn *bool `protobuf:"varint,8,opt,name=link_state_non_vpn,json=linkStateNonVpn,proto3,oneof" json:"link_state_non_vpn,omitempty"` + // Capability advertisement of BGP Link State for VPNs. + // default = False + LinkStateVpn *bool `protobuf:"varint,9,opt,name=link_state_vpn,json=linkStateVpn,proto3,oneof" json:"link_state_vpn,omitempty"` + // Support for the EVPN address family. + // default = False + Evpn *bool `protobuf:"varint,10,opt,name=evpn,proto3,oneof" json:"evpn,omitempty"` + // Support for extended Next Hop Encoding for Nexthop field in IPv4 routes advertisement. + // This allows IPv4 routes being advertised by IPv6 peers to include an IPv6 Nexthop. + // default = False + ExtendedNextHopEncoding *bool `protobuf:"varint,11,opt,name=extended_next_hop_encoding,json=extendedNextHopEncoding,proto3,oneof" json:"extended_next_hop_encoding,omitempty"` + // Support for the IPv4 Multicast VPN address family. + // default = False + Ipv4MulticastVpn *bool `protobuf:"varint,12,opt,name=ipv4_multicast_vpn,json=ipv4MulticastVpn,proto3,oneof" json:"ipv4_multicast_vpn,omitempty"` + // Support for the IPv4 MPLS L3VPN address family. + // default = False + Ipv4MplsVpn *bool `protobuf:"varint,13,opt,name=ipv4_mpls_vpn,json=ipv4MplsVpn,proto3,oneof" json:"ipv4_mpls_vpn,omitempty"` + // Supports for IPv4 MDT address family messages. + // default = False + Ipv4Mdt *bool `protobuf:"varint,14,opt,name=ipv4_mdt,json=ipv4Mdt,proto3,oneof" json:"ipv4_mdt,omitempty"` + // Support for the IPv4 Multicast VPN address family. + // default = False + Ipv4MulticastMplsVpn *bool `protobuf:"varint,15,opt,name=ipv4_multicast_mpls_vpn,json=ipv4MulticastMplsVpn,proto3,oneof" json:"ipv4_multicast_mpls_vpn,omitempty"` + // Support for propagation of IPv4 unicast flow specification rules. + // default = False + Ipv4UnicastFlowSpec *bool `protobuf:"varint,16,opt,name=ipv4_unicast_flow_spec,json=ipv4UnicastFlowSpec,proto3,oneof" json:"ipv4_unicast_flow_spec,omitempty"` + // Support for IPv4 SRTE policy. + // default = False + Ipv4SrTePolicy *bool `protobuf:"varint,17,opt,name=ipv4_sr_te_policy,json=ipv4SrTePolicy,proto3,oneof" json:"ipv4_sr_te_policy,omitempty"` + // Support for IPv4 Unicast Add Path Capability. + // default = False + Ipv4UnicastAddPath *bool `protobuf:"varint,18,opt,name=ipv4_unicast_add_path,json=ipv4UnicastAddPath,proto3,oneof" json:"ipv4_unicast_add_path,omitempty"` + // Support for the IPv6 Multicast VPN address family. + // default = False + Ipv6MulticastVpn *bool `protobuf:"varint,19,opt,name=ipv6_multicast_vpn,json=ipv6MulticastVpn,proto3,oneof" json:"ipv6_multicast_vpn,omitempty"` + // Support for the IPv6 MPLS L3VPN address family. + // default = False + Ipv6MplsVpn *bool `protobuf:"varint,20,opt,name=ipv6_mpls_vpn,json=ipv6MplsVpn,proto3,oneof" json:"ipv6_mpls_vpn,omitempty"` + // Support for IPv6 MDT address family messages. + // default = False + Ipv6Mdt *bool `protobuf:"varint,21,opt,name=ipv6_mdt,json=ipv6Mdt,proto3,oneof" json:"ipv6_mdt,omitempty"` + // Support for the IPv6 Multicast VPN address family. + // default = False + Ipv6MulticastMplsVpn *bool `protobuf:"varint,22,opt,name=ipv6_multicast_mpls_vpn,json=ipv6MulticastMplsVpn,proto3,oneof" json:"ipv6_multicast_mpls_vpn,omitempty"` + // Support for propagation of IPv6 unicast flow specification rules. + // default = False + Ipv6UnicastFlowSpec *bool `protobuf:"varint,23,opt,name=ipv6_unicast_flow_spec,json=ipv6UnicastFlowSpec,proto3,oneof" json:"ipv6_unicast_flow_spec,omitempty"` + // Support for IPv6 SRTE policy. + // default = False + Ipv6SrTePolicy *bool `protobuf:"varint,24,opt,name=ipv6_sr_te_policy,json=ipv6SrTePolicy,proto3,oneof" json:"ipv6_sr_te_policy,omitempty"` + // Support for IPv6 Unicast Add Path Capability. + // default = False + Ipv6UnicastAddPath *bool `protobuf:"varint,25,opt,name=ipv6_unicast_add_path,json=ipv6UnicastAddPath,proto3,oneof" json:"ipv6_unicast_add_path,omitempty"` } -func (x *BgpSrteSegmentCTypeSubTlv) Reset() { - *x = BgpSrteSegmentCTypeSubTlv{} +func (x *BgpCapability) Reset() { + *x = BgpCapability{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[116] + mi := &file_otg_proto_msgTypes[78] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *BgpSrteSegmentCTypeSubTlv) String() string { +func (x *BgpCapability) String() string { return protoimpl.X.MessageStringOf(x) } -func (*BgpSrteSegmentCTypeSubTlv) ProtoMessage() {} +func (*BgpCapability) ProtoMessage() {} -func (x *BgpSrteSegmentCTypeSubTlv) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[116] +func (x *BgpCapability) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[78] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -27850,319 +27581,220 @@ func (x *BgpSrteSegmentCTypeSubTlv) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use BgpSrteSegmentCTypeSubTlv.ProtoReflect.Descriptor instead. -func (*BgpSrteSegmentCTypeSubTlv) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{116} +// Deprecated: Use BgpCapability.ProtoReflect.Descriptor instead. +func (*BgpCapability) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{78} } -func (x *BgpSrteSegmentCTypeSubTlv) GetFlags() string { - if x != nil && x.Flags != nil { - return *x.Flags +func (x *BgpCapability) GetIpv4Unicast() bool { + if x != nil && x.Ipv4Unicast != nil { + return *x.Ipv4Unicast } - return "" + return false } -func (x *BgpSrteSegmentCTypeSubTlv) GetSrAlgorithm() uint32 { - if x != nil && x.SrAlgorithm != nil { - return *x.SrAlgorithm +func (x *BgpCapability) GetIpv4Multicast() bool { + if x != nil && x.Ipv4Multicast != nil { + return *x.Ipv4Multicast } - return 0 + return false } -func (x *BgpSrteSegmentCTypeSubTlv) GetIpv4NodeAddress() string { - if x != nil && x.Ipv4NodeAddress != nil { - return *x.Ipv4NodeAddress +func (x *BgpCapability) GetIpv6Unicast() bool { + if x != nil && x.Ipv6Unicast != nil { + return *x.Ipv6Unicast } - return "" + return false } -func (x *BgpSrteSegmentCTypeSubTlv) GetSrMplsSid() *BgpSrteSrMplsSid { - if x != nil { - return x.SrMplsSid +func (x *BgpCapability) GetIpv6Multicast() bool { + if x != nil && x.Ipv6Multicast != nil { + return *x.Ipv6Multicast } - return nil -} - -// Type D: IPv6 Node Address with optional SID for SR MPLS. -type BgpSrteSegmentDTypeSubTlv struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // One octet bitmap for flags including V-Flag, A-Flag, S-Flag, B-Flag etc. as defined - // in https://datatracker.ietf.org/doc/html/draft-ietf-idr-segment-routing-te-policy-13#section-2.4.4.2.12 - Flags *string `protobuf:"bytes,1,opt,name=flags,proto3,oneof" json:"flags,omitempty"` - // specifying SR Algorithm when when A-Flag as defined in above flags. - // default = 0 - SrAlgorithm *uint32 `protobuf:"varint,2,opt,name=sr_algorithm,json=srAlgorithm,proto3,oneof" json:"sr_algorithm,omitempty"` - // IPv6 address representing a node. - // required = true - Ipv6NodeAddress *string `protobuf:"bytes,3,opt,name=ipv6_node_address,json=ipv6NodeAddress,proto3,oneof" json:"ipv6_node_address,omitempty"` - // Optional SR-MPLS SID. - SrMplsSid *BgpSrteSrMplsSid `protobuf:"bytes,4,opt,name=sr_mpls_sid,json=srMplsSid,proto3" json:"sr_mpls_sid,omitempty"` + return false } -func (x *BgpSrteSegmentDTypeSubTlv) Reset() { - *x = BgpSrteSegmentDTypeSubTlv{} - if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[117] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) +func (x *BgpCapability) GetVpls() bool { + if x != nil && x.Vpls != nil { + return *x.Vpls } + return false } -func (x *BgpSrteSegmentDTypeSubTlv) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*BgpSrteSegmentDTypeSubTlv) ProtoMessage() {} - -func (x *BgpSrteSegmentDTypeSubTlv) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[117] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms +func (x *BgpCapability) GetRouteRefresh() bool { + if x != nil && x.RouteRefresh != nil { + return *x.RouteRefresh } - return mi.MessageOf(x) -} - -// Deprecated: Use BgpSrteSegmentDTypeSubTlv.ProtoReflect.Descriptor instead. -func (*BgpSrteSegmentDTypeSubTlv) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{117} + return false } -func (x *BgpSrteSegmentDTypeSubTlv) GetFlags() string { - if x != nil && x.Flags != nil { - return *x.Flags +func (x *BgpCapability) GetRouteConstraint() bool { + if x != nil && x.RouteConstraint != nil { + return *x.RouteConstraint } - return "" + return false } -func (x *BgpSrteSegmentDTypeSubTlv) GetSrAlgorithm() uint32 { - if x != nil && x.SrAlgorithm != nil { - return *x.SrAlgorithm +func (x *BgpCapability) GetLinkStateNonVpn() bool { + if x != nil && x.LinkStateNonVpn != nil { + return *x.LinkStateNonVpn } - return 0 + return false } -func (x *BgpSrteSegmentDTypeSubTlv) GetIpv6NodeAddress() string { - if x != nil && x.Ipv6NodeAddress != nil { - return *x.Ipv6NodeAddress +func (x *BgpCapability) GetLinkStateVpn() bool { + if x != nil && x.LinkStateVpn != nil { + return *x.LinkStateVpn } - return "" + return false } -func (x *BgpSrteSegmentDTypeSubTlv) GetSrMplsSid() *BgpSrteSrMplsSid { - if x != nil { - return x.SrMplsSid +func (x *BgpCapability) GetEvpn() bool { + if x != nil && x.Evpn != nil { + return *x.Evpn } - return nil -} - -// Type E: IPv4 Address and Local Interface ID with optional SID -type BgpSrteSegmentETypeSubTlv struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // One octet bitmap for flags including V-Flag, A-Flag, S-Flag, B-Flag etc. as defined - // in https://datatracker.ietf.org/doc/html/draft-ietf-idr-segment-routing-te-policy-13#section-2.4.4.2.12 - Flags *string `protobuf:"bytes,1,opt,name=flags,proto3,oneof" json:"flags,omitempty"` - // Local Interface ID: The Interface Index as defined in [RFC8664]. - // default = 0 - LocalInterfaceId *uint32 `protobuf:"varint,2,opt,name=local_interface_id,json=localInterfaceId,proto3,oneof" json:"local_interface_id,omitempty"` - // IPv4 address representing a node. - // required = true - Ipv4NodeAddress *string `protobuf:"bytes,3,opt,name=ipv4_node_address,json=ipv4NodeAddress,proto3,oneof" json:"ipv4_node_address,omitempty"` - // Optional SR-MPLS SID. - SrMplsSid *BgpSrteSrMplsSid `protobuf:"bytes,4,opt,name=sr_mpls_sid,json=srMplsSid,proto3" json:"sr_mpls_sid,omitempty"` + return false } -func (x *BgpSrteSegmentETypeSubTlv) Reset() { - *x = BgpSrteSegmentETypeSubTlv{} - if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[118] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) +func (x *BgpCapability) GetExtendedNextHopEncoding() bool { + if x != nil && x.ExtendedNextHopEncoding != nil { + return *x.ExtendedNextHopEncoding } + return false } -func (x *BgpSrteSegmentETypeSubTlv) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*BgpSrteSegmentETypeSubTlv) ProtoMessage() {} - -func (x *BgpSrteSegmentETypeSubTlv) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[118] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms +func (x *BgpCapability) GetIpv4MulticastVpn() bool { + if x != nil && x.Ipv4MulticastVpn != nil { + return *x.Ipv4MulticastVpn } - return mi.MessageOf(x) -} - -// Deprecated: Use BgpSrteSegmentETypeSubTlv.ProtoReflect.Descriptor instead. -func (*BgpSrteSegmentETypeSubTlv) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{118} + return false } -func (x *BgpSrteSegmentETypeSubTlv) GetFlags() string { - if x != nil && x.Flags != nil { - return *x.Flags +func (x *BgpCapability) GetIpv4MplsVpn() bool { + if x != nil && x.Ipv4MplsVpn != nil { + return *x.Ipv4MplsVpn } - return "" + return false } -func (x *BgpSrteSegmentETypeSubTlv) GetLocalInterfaceId() uint32 { - if x != nil && x.LocalInterfaceId != nil { - return *x.LocalInterfaceId +func (x *BgpCapability) GetIpv4Mdt() bool { + if x != nil && x.Ipv4Mdt != nil { + return *x.Ipv4Mdt } - return 0 + return false } -func (x *BgpSrteSegmentETypeSubTlv) GetIpv4NodeAddress() string { - if x != nil && x.Ipv4NodeAddress != nil { - return *x.Ipv4NodeAddress +func (x *BgpCapability) GetIpv4MulticastMplsVpn() bool { + if x != nil && x.Ipv4MulticastMplsVpn != nil { + return *x.Ipv4MulticastMplsVpn } - return "" + return false } -func (x *BgpSrteSegmentETypeSubTlv) GetSrMplsSid() *BgpSrteSrMplsSid { - if x != nil { - return x.SrMplsSid +func (x *BgpCapability) GetIpv4UnicastFlowSpec() bool { + if x != nil && x.Ipv4UnicastFlowSpec != nil { + return *x.Ipv4UnicastFlowSpec } - return nil + return false } -// Type F: IPv4 Local and Remote addresses with optional SID. -type BgpSrteSegmentFTypeSubTlv struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // One octet bitmap for flags including V-Flag, A-Flag, S-Flag, B-Flag etc. as defined - // in https://datatracker.ietf.org/doc/html/draft-ietf-idr-segment-routing-te-policy-13#section-2.4.4.2.12 - Flags *string `protobuf:"bytes,1,opt,name=flags,proto3,oneof" json:"flags,omitempty"` - // Local IPv4 Address. - // required = true - LocalIpv4Address *string `protobuf:"bytes,2,opt,name=local_ipv4_address,json=localIpv4Address,proto3,oneof" json:"local_ipv4_address,omitempty"` - // Remote IPv4 Address. - // required = true - RemoteIpv4Address *string `protobuf:"bytes,3,opt,name=remote_ipv4_address,json=remoteIpv4Address,proto3,oneof" json:"remote_ipv4_address,omitempty"` - // Optional SR-MPLS SID. - SrMplsSid *BgpSrteSrMplsSid `protobuf:"bytes,4,opt,name=sr_mpls_sid,json=srMplsSid,proto3" json:"sr_mpls_sid,omitempty"` +func (x *BgpCapability) GetIpv4SrTePolicy() bool { + if x != nil && x.Ipv4SrTePolicy != nil { + return *x.Ipv4SrTePolicy + } + return false } -func (x *BgpSrteSegmentFTypeSubTlv) Reset() { - *x = BgpSrteSegmentFTypeSubTlv{} - if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[119] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) +func (x *BgpCapability) GetIpv4UnicastAddPath() bool { + if x != nil && x.Ipv4UnicastAddPath != nil { + return *x.Ipv4UnicastAddPath } + return false } -func (x *BgpSrteSegmentFTypeSubTlv) String() string { - return protoimpl.X.MessageStringOf(x) +func (x *BgpCapability) GetIpv6MulticastVpn() bool { + if x != nil && x.Ipv6MulticastVpn != nil { + return *x.Ipv6MulticastVpn + } + return false } -func (*BgpSrteSegmentFTypeSubTlv) ProtoMessage() {} - -func (x *BgpSrteSegmentFTypeSubTlv) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[119] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms +func (x *BgpCapability) GetIpv6MplsVpn() bool { + if x != nil && x.Ipv6MplsVpn != nil { + return *x.Ipv6MplsVpn } - return mi.MessageOf(x) + return false } -// Deprecated: Use BgpSrteSegmentFTypeSubTlv.ProtoReflect.Descriptor instead. -func (*BgpSrteSegmentFTypeSubTlv) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{119} +func (x *BgpCapability) GetIpv6Mdt() bool { + if x != nil && x.Ipv6Mdt != nil { + return *x.Ipv6Mdt + } + return false } -func (x *BgpSrteSegmentFTypeSubTlv) GetFlags() string { - if x != nil && x.Flags != nil { - return *x.Flags +func (x *BgpCapability) GetIpv6MulticastMplsVpn() bool { + if x != nil && x.Ipv6MulticastMplsVpn != nil { + return *x.Ipv6MulticastMplsVpn } - return "" + return false } -func (x *BgpSrteSegmentFTypeSubTlv) GetLocalIpv4Address() string { - if x != nil && x.LocalIpv4Address != nil { - return *x.LocalIpv4Address +func (x *BgpCapability) GetIpv6UnicastFlowSpec() bool { + if x != nil && x.Ipv6UnicastFlowSpec != nil { + return *x.Ipv6UnicastFlowSpec } - return "" + return false } -func (x *BgpSrteSegmentFTypeSubTlv) GetRemoteIpv4Address() string { - if x != nil && x.RemoteIpv4Address != nil { - return *x.RemoteIpv4Address +func (x *BgpCapability) GetIpv6SrTePolicy() bool { + if x != nil && x.Ipv6SrTePolicy != nil { + return *x.Ipv6SrTePolicy } - return "" + return false } -func (x *BgpSrteSegmentFTypeSubTlv) GetSrMplsSid() *BgpSrteSrMplsSid { - if x != nil { - return x.SrMplsSid +func (x *BgpCapability) GetIpv6UnicastAddPath() bool { + if x != nil && x.Ipv6UnicastAddPath != nil { + return *x.Ipv6UnicastAddPath } - return nil + return false } -// Type G: IPv6 Address, Interface ID for local and remote pair with optional SID for -// SR MPLS. -type BgpSrteSegmentGTypeSubTlv struct { +// Configuration for controlling storage of BGP learned information recieved from the +// peer. +type BgpLearnedInformationFilter struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // One octet bitmap for flags including V-Flag, A-Flag, S-Flag, B-Flag etc. as defined - // in https://datatracker.ietf.org/doc/html/draft-ietf-idr-segment-routing-te-policy-13#section-2.4.4.2.12 - Flags *string `protobuf:"bytes,1,opt,name=flags,proto3,oneof" json:"flags,omitempty"` - // Local Interface ID: The Interface Index as defined in [RFC8664]. - // default = 0 - LocalInterfaceId *uint32 `protobuf:"varint,2,opt,name=local_interface_id,json=localInterfaceId,proto3,oneof" json:"local_interface_id,omitempty"` - // IPv6 address representing a node. - // required = true - LocalIpv6NodeAddress *string `protobuf:"bytes,3,opt,name=local_ipv6_node_address,json=localIpv6NodeAddress,proto3,oneof" json:"local_ipv6_node_address,omitempty"` - // Local Interface ID: The Interface Index as defined in [RFC8664]. - // default = 0 - RemoteInterfaceId *uint32 `protobuf:"varint,4,opt,name=remote_interface_id,json=remoteInterfaceId,proto3,oneof" json:"remote_interface_id,omitempty"` - // IPv6 address representing a node. - // required = true - RemoteIpv6NodeAddress *string `protobuf:"bytes,5,opt,name=remote_ipv6_node_address,json=remoteIpv6NodeAddress,proto3,oneof" json:"remote_ipv6_node_address,omitempty"` - // Optional SR-MPLS SID. - SrMplsSid *BgpSrteSrMplsSid `protobuf:"bytes,6,opt,name=sr_mpls_sid,json=srMplsSid,proto3" json:"sr_mpls_sid,omitempty"` + // If enabled, will store the information related to Unicast IPv4 Prefixes recieved + // from the peer. + // default = False + UnicastIpv4Prefix *bool `protobuf:"varint,1,opt,name=unicast_ipv4_prefix,json=unicastIpv4Prefix,proto3,oneof" json:"unicast_ipv4_prefix,omitempty"` + // If enabled, will store the information related to Unicast IPv6 Prefixes recieved + // from the peer. + // default = False + UnicastIpv6Prefix *bool `protobuf:"varint,2,opt,name=unicast_ipv6_prefix,json=unicastIpv6Prefix,proto3,oneof" json:"unicast_ipv6_prefix,omitempty"` } -func (x *BgpSrteSegmentGTypeSubTlv) Reset() { - *x = BgpSrteSegmentGTypeSubTlv{} +func (x *BgpLearnedInformationFilter) Reset() { + *x = BgpLearnedInformationFilter{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[120] + mi := &file_otg_proto_msgTypes[79] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *BgpSrteSegmentGTypeSubTlv) String() string { +func (x *BgpLearnedInformationFilter) String() string { return protoimpl.X.MessageStringOf(x) } -func (*BgpSrteSegmentGTypeSubTlv) ProtoMessage() {} +func (*BgpLearnedInformationFilter) ProtoMessage() {} -func (x *BgpSrteSegmentGTypeSubTlv) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[120] +func (x *BgpLearnedInformationFilter) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[79] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -28173,89 +27805,123 @@ func (x *BgpSrteSegmentGTypeSubTlv) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use BgpSrteSegmentGTypeSubTlv.ProtoReflect.Descriptor instead. -func (*BgpSrteSegmentGTypeSubTlv) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{120} +// Deprecated: Use BgpLearnedInformationFilter.ProtoReflect.Descriptor instead. +func (*BgpLearnedInformationFilter) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{79} } -func (x *BgpSrteSegmentGTypeSubTlv) GetFlags() string { - if x != nil && x.Flags != nil { - return *x.Flags +func (x *BgpLearnedInformationFilter) GetUnicastIpv4Prefix() bool { + if x != nil && x.UnicastIpv4Prefix != nil { + return *x.UnicastIpv4Prefix } - return "" + return false } -func (x *BgpSrteSegmentGTypeSubTlv) GetLocalInterfaceId() uint32 { - if x != nil && x.LocalInterfaceId != nil { - return *x.LocalInterfaceId - } - return 0 -} - -func (x *BgpSrteSegmentGTypeSubTlv) GetLocalIpv6NodeAddress() string { - if x != nil && x.LocalIpv6NodeAddress != nil { - return *x.LocalIpv6NodeAddress - } - return "" -} - -func (x *BgpSrteSegmentGTypeSubTlv) GetRemoteInterfaceId() uint32 { - if x != nil && x.RemoteInterfaceId != nil { - return *x.RemoteInterfaceId - } - return 0 -} - -func (x *BgpSrteSegmentGTypeSubTlv) GetRemoteIpv6NodeAddress() string { - if x != nil && x.RemoteIpv6NodeAddress != nil { - return *x.RemoteIpv6NodeAddress - } - return "" -} - -func (x *BgpSrteSegmentGTypeSubTlv) GetSrMplsSid() *BgpSrteSrMplsSid { - if x != nil { - return x.SrMplsSid +func (x *BgpLearnedInformationFilter) GetUnicastIpv6Prefix() bool { + if x != nil && x.UnicastIpv6Prefix != nil { + return *x.UnicastIpv6Prefix } - return nil + return false } -// Type H: IPv6 Local and Remote addresses with optional SID for SR MPLS. -type BgpSrteSegmentHTypeSubTlv struct { +// Emulated BGPv4 route range. +type BgpV4RouteRange struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // One octet bitmap for flags including V-Flag, A-Flag, S-Flag, B-Flag etc. as defined - // in https://datatracker.ietf.org/doc/html/draft-ietf-idr-segment-routing-te-policy-13#section-2.4.4.2.12 - Flags *string `protobuf:"bytes,1,opt,name=flags,proto3,oneof" json:"flags,omitempty"` - // Local IPv6 Address. - // required = true - LocalIpv6Address *string `protobuf:"bytes,2,opt,name=local_ipv6_address,json=localIpv6Address,proto3,oneof" json:"local_ipv6_address,omitempty"` - // Remote IPv6 Address. + // A list of group of IPv4 route addresses. + Addresses []*V4RouteAddress `protobuf:"bytes,1,rep,name=addresses,proto3" json:"addresses,omitempty"` + // Specify the NextHop in MP REACH NLRI. The mode for setting the IP address of the + // NextHop in the MP REACH NLRI can be one of the following: + // Local IP: Automatically fills the Nexthop with the Local IP of the BGP + // peer. + // If BGP peer is of type IPv6, Nexthop Encoding capability should be enabled. + // Manual: Override the Nexthop with any arbitrary IPv4/IPv6 address. + // default = NextHopMode.Enum.local_ip + NextHopMode *BgpV4RouteRange_NextHopMode_Enum `protobuf:"varint,2,opt,name=next_hop_mode,json=nextHopMode,proto3,enum=otg.BgpV4RouteRange_NextHopMode_Enum,oneof" json:"next_hop_mode,omitempty"` + // If the Nexthop Mode is Manual, it sets the type of the NextHop IP address. + // default = NextHopAddressType.Enum.ipv4 + NextHopAddressType *BgpV4RouteRange_NextHopAddressType_Enum `protobuf:"varint,3,opt,name=next_hop_address_type,json=nextHopAddressType,proto3,enum=otg.BgpV4RouteRange_NextHopAddressType_Enum,oneof" json:"next_hop_address_type,omitempty"` + // The IPv4 address of the next hop if the Nexthop Mode is manual and the Nexthop type + // is IPv4. If BGP peer is of type IPv6, Nexthop Encoding capability should be enabled. + // default = 0.0.0.0 + NextHopIpv4Address *string `protobuf:"bytes,4,opt,name=next_hop_ipv4_address,json=nextHopIpv4Address,proto3,oneof" json:"next_hop_ipv4_address,omitempty"` + // The IPv6 address of the next hop if the Nexthop Mode is manual and the Nexthop type + // is IPv6. + // default = ::0 + NextHopIpv6Address *string `protobuf:"bytes,5,opt,name=next_hop_ipv6_address,json=nextHopIpv6Address,proto3,oneof" json:"next_hop_ipv6_address,omitempty"` + // Description missing in models + Advanced *BgpRouteAdvanced `protobuf:"bytes,6,opt,name=advanced,proto3" json:"advanced,omitempty"` + // Optional community settings. + Communities []*BgpCommunity `protobuf:"bytes,7,rep,name=communities,proto3" json:"communities,omitempty"` + // Description missing in models + AsPath *BgpAsPath `protobuf:"bytes,8,opt,name=as_path,json=asPath,proto3" json:"as_path,omitempty"` + // Description missing in models + AddPath *BgpAddPath `protobuf:"bytes,9,opt,name=add_path,json=addPath,proto3" json:"add_path,omitempty"` + // Globally unique name of an object. It also serves as the primary key for arrays of + // objects. // required = true - RemoteIpv6Address *string `protobuf:"bytes,3,opt,name=remote_ipv6_address,json=remoteIpv6Address,proto3,oneof" json:"remote_ipv6_address,omitempty"` - // Optional SR-MPLS SID. - SrMplsSid *BgpSrteSrMplsSid `protobuf:"bytes,4,opt,name=sr_mpls_sid,json=srMplsSid,proto3" json:"sr_mpls_sid,omitempty"` + Name *string `protobuf:"bytes,10,opt,name=name,proto3,oneof" json:"name,omitempty"` + // Deprecated: This property is deprecated in favor of property extended_communities + // + // Optional Extended Community settings. The Extended Communities Attribute is a transitive + // optional BGP attribute, with the Type Code 16. Community and Extended Communities + // attributes are utilized to trigger routing decisions, such as acceptance, rejection, + // preference, or redistribution. An extended community is an 8-Bytes value. It is + // divided into two main parts. The first 2 Bytes of the community encode a type and + // sub-type fields and the last 6 Bytes carry a unique set of data in a format defined + // by the type and sub-type field. Extended communities provide a larger range for + // grouping or categorizing communities. When type is administrator_as_2octet or administrator_as_4octet, + // the valid sub types are route target and origin. The valid value for administrator_as_2octet + // and administrator_as_4octet type is either two byte AS followed by four byte local + // administrator id or four byte AS followed by two byte local administrator id. When + // type is administrator_ipv4_address the valid sub types are route target and origin. + // The valid value for administrator_ipv4_address is a four byte IPv4 address followed + // by a two byte local administrator id. When type is opaque, valid sub types are color + // and encapsulation. When sub type is color, first two bytes of the value field contain + // flags and last four bytes contains the value of the color. When sub type is encapsulation + // the first four bytes of value field are reserved and last two bytes carries the tunnel + // type from IANA's ETHER TYPES registry e.g IPv4 (protocol type = 0x0800), IPv6 (protocol + // type = 0x86dd), and MPLS (protocol type = 0x8847). When type is administrator_as_2octet_link_bandwidth + // the valid sub type is extended_bandwidth. The first two bytes of the value field + // contains the AS number and the last four bytes contains the bandwidth in IEEE floating + // point format. When type is evpn the valid subtype is mac_address. In the value field + // the low-order bit of the first byte(Flags) is defined as the Sticky/static flag and + // may be set to 1, indicating the MAC address is static and cannot move. The second + // byte is reserved and the last four bytes contain the sequence number which is used + // to ensure that PEs retain the correct MAC/IP Advertisement route when multiple updates + // occur for the same MAC address. Note evpn type is defined mainly for use with evpn + // route updates and not for IPv4 and IPv6 route updates. + ExtCommunities []*BgpExtCommunity `protobuf:"bytes,11,rep,name=ext_communities,json=extCommunities,proto3" json:"ext_communities,omitempty"` + // Optional Extended Community settings. The Extended Communities Attribute is a transitive + // optional BGP attribute, with the Type Code 16. Community and Extended Communities + // attributes are utilized to trigger routing decisions, such as acceptance, rejection, + // preference, or redistribution. An extended community is an eight byte value. It + // is divided into two main parts. The first two bytes of the community encode a type + // and sub-type fields and the last six bytes carry a unique set of data in a format + // defined by the type and sub-type field. Extended communities provide a larger range + // for grouping or categorizing communities. + ExtendedCommunities []*BgpExtendedCommunity `protobuf:"bytes,12,rep,name=extended_communities,json=extendedCommunities,proto3" json:"extended_communities,omitempty"` } -func (x *BgpSrteSegmentHTypeSubTlv) Reset() { - *x = BgpSrteSegmentHTypeSubTlv{} +func (x *BgpV4RouteRange) Reset() { + *x = BgpV4RouteRange{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[121] + mi := &file_otg_proto_msgTypes[80] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *BgpSrteSegmentHTypeSubTlv) String() string { +func (x *BgpV4RouteRange) String() string { return protoimpl.X.MessageStringOf(x) } -func (*BgpSrteSegmentHTypeSubTlv) ProtoMessage() {} +func (*BgpV4RouteRange) ProtoMessage() {} -func (x *BgpSrteSegmentHTypeSubTlv) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[121] +func (x *BgpV4RouteRange) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[80] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -28266,74 +27932,125 @@ func (x *BgpSrteSegmentHTypeSubTlv) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use BgpSrteSegmentHTypeSubTlv.ProtoReflect.Descriptor instead. -func (*BgpSrteSegmentHTypeSubTlv) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{121} +// Deprecated: Use BgpV4RouteRange.ProtoReflect.Descriptor instead. +func (*BgpV4RouteRange) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{80} } -func (x *BgpSrteSegmentHTypeSubTlv) GetFlags() string { - if x != nil && x.Flags != nil { - return *x.Flags +func (x *BgpV4RouteRange) GetAddresses() []*V4RouteAddress { + if x != nil { + return x.Addresses + } + return nil +} + +func (x *BgpV4RouteRange) GetNextHopMode() BgpV4RouteRange_NextHopMode_Enum { + if x != nil && x.NextHopMode != nil { + return *x.NextHopMode + } + return BgpV4RouteRange_NextHopMode_unspecified +} + +func (x *BgpV4RouteRange) GetNextHopAddressType() BgpV4RouteRange_NextHopAddressType_Enum { + if x != nil && x.NextHopAddressType != nil { + return *x.NextHopAddressType + } + return BgpV4RouteRange_NextHopAddressType_unspecified +} + +func (x *BgpV4RouteRange) GetNextHopIpv4Address() string { + if x != nil && x.NextHopIpv4Address != nil { + return *x.NextHopIpv4Address } return "" } -func (x *BgpSrteSegmentHTypeSubTlv) GetLocalIpv6Address() string { - if x != nil && x.LocalIpv6Address != nil { - return *x.LocalIpv6Address +func (x *BgpV4RouteRange) GetNextHopIpv6Address() string { + if x != nil && x.NextHopIpv6Address != nil { + return *x.NextHopIpv6Address } return "" } -func (x *BgpSrteSegmentHTypeSubTlv) GetRemoteIpv6Address() string { - if x != nil && x.RemoteIpv6Address != nil { - return *x.RemoteIpv6Address +func (x *BgpV4RouteRange) GetAdvanced() *BgpRouteAdvanced { + if x != nil { + return x.Advanced + } + return nil +} + +func (x *BgpV4RouteRange) GetCommunities() []*BgpCommunity { + if x != nil { + return x.Communities + } + return nil +} + +func (x *BgpV4RouteRange) GetAsPath() *BgpAsPath { + if x != nil { + return x.AsPath + } + return nil +} + +func (x *BgpV4RouteRange) GetAddPath() *BgpAddPath { + if x != nil { + return x.AddPath + } + return nil +} + +func (x *BgpV4RouteRange) GetName() string { + if x != nil && x.Name != nil { + return *x.Name } return "" } -func (x *BgpSrteSegmentHTypeSubTlv) GetSrMplsSid() *BgpSrteSrMplsSid { +func (x *BgpV4RouteRange) GetExtCommunities() []*BgpExtCommunity { if x != nil { - return x.SrMplsSid + return x.ExtCommunities } return nil } -// Type I: IPv6 Node Address with optional SRv6 SID. -type BgpSrteSegmentITypeSubTlv struct { +func (x *BgpV4RouteRange) GetExtendedCommunities() []*BgpExtendedCommunity { + if x != nil { + return x.ExtendedCommunities + } + return nil +} + +// The BGP Additional Paths feature is a BGP extension that allows the advertisement +// of multiple paths for the same prefix without the new paths implicitly replacing +// any previous paths. +type BgpAddPath struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // One octet bitmap for flags including V-Flag, A-Flag, S-Flag, B-Flag etc. as defined - // in https://datatracker.ietf.org/doc/html/draft-ietf-idr-segment-routing-te-policy-13#section-2.4.4.2.12 - Flags *string `protobuf:"bytes,1,opt,name=flags,proto3,oneof" json:"flags,omitempty"` - // IPv6 address representing a node. - // required = true - Ipv6NodeAddress *string `protobuf:"bytes,2,opt,name=ipv6_node_address,json=ipv6NodeAddress,proto3,oneof" json:"ipv6_node_address,omitempty"` - // Optional SRv6 SID. - Srv6Sid *string `protobuf:"bytes,3,opt,name=srv6_sid,json=srv6Sid,proto3,oneof" json:"srv6_sid,omitempty"` - // Optional SRv6 Endpoint Behavior and SID Structure. - Srv6SidEndpointBehavior *BgpSrteSRv6SIDEndpointBehaviorAndStructure `protobuf:"bytes,4,opt,name=srv6_sid_endpoint_behavior,json=srv6SidEndpointBehavior,proto3" json:"srv6_sid_endpoint_behavior,omitempty"` + // The id of the additional path. + // default = 1 + PathId *uint32 `protobuf:"varint,1,opt,name=path_id,json=pathId,proto3,oneof" json:"path_id,omitempty"` } -func (x *BgpSrteSegmentITypeSubTlv) Reset() { - *x = BgpSrteSegmentITypeSubTlv{} +func (x *BgpAddPath) Reset() { + *x = BgpAddPath{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[122] + mi := &file_otg_proto_msgTypes[81] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *BgpSrteSegmentITypeSubTlv) String() string { +func (x *BgpAddPath) String() string { return protoimpl.X.MessageStringOf(x) } -func (*BgpSrteSegmentITypeSubTlv) ProtoMessage() {} +func (*BgpAddPath) ProtoMessage() {} -func (x *BgpSrteSegmentITypeSubTlv) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[122] +func (x *BgpAddPath) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[81] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -28344,87 +28061,67 @@ func (x *BgpSrteSegmentITypeSubTlv) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use BgpSrteSegmentITypeSubTlv.ProtoReflect.Descriptor instead. -func (*BgpSrteSegmentITypeSubTlv) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{122} -} - -func (x *BgpSrteSegmentITypeSubTlv) GetFlags() string { - if x != nil && x.Flags != nil { - return *x.Flags - } - return "" -} - -func (x *BgpSrteSegmentITypeSubTlv) GetIpv6NodeAddress() string { - if x != nil && x.Ipv6NodeAddress != nil { - return *x.Ipv6NodeAddress - } - return "" -} - -func (x *BgpSrteSegmentITypeSubTlv) GetSrv6Sid() string { - if x != nil && x.Srv6Sid != nil { - return *x.Srv6Sid - } - return "" +// Deprecated: Use BgpAddPath.ProtoReflect.Descriptor instead. +func (*BgpAddPath) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{81} } -func (x *BgpSrteSegmentITypeSubTlv) GetSrv6SidEndpointBehavior() *BgpSrteSRv6SIDEndpointBehaviorAndStructure { - if x != nil { - return x.Srv6SidEndpointBehavior +func (x *BgpAddPath) GetPathId() uint32 { + if x != nil && x.PathId != nil { + return *x.PathId } - return nil + return 0 } -// Type J: IPv6 Address, Interface ID for local and remote pair for SRv6 with optional -// SID. -type BgpSrteSegmentJTypeSubTlv struct { +// The Extended Communities Attribute is a optional BGP attribute,defined in RFC4360 +// with the Type Code 16. Community and Extended Communities attributes are utilized +// to trigger routing decisions, such as acceptance, rejection, preference, or redistribution. +// An extended community is an 8-Bytes value.It is divided into two main parts. The +// first 2 Bytes of the community encode a type and optonal sub-type field. The last +// 6 bytes (or 7 bytes for types without a sub-type) carry a unique set of data in a +// format defined by the type and optional sub-type field. Extended communities provide +// a larger range for grouping or categorizing communities. +type BgpExtendedCommunity struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // One octet bitmap for flags including V-Flag, A-Flag, S-Flag, B-Flag etc. as defined - // in https://datatracker.ietf.org/doc/html/draft-ietf-idr-segment-routing-te-policy-13#section-2.4.4.2.12 - Flags *string `protobuf:"bytes,1,opt,name=flags,proto3,oneof" json:"flags,omitempty"` - // SR Algorithm identifier when A-Flag in on. - // default = 0 - SrAlgorithm *uint32 `protobuf:"varint,2,opt,name=sr_algorithm,json=srAlgorithm,proto3,oneof" json:"sr_algorithm,omitempty"` - // Local Interface ID: The Interface Index as defined in [RFC8664]. - // default = 0 - LocalInterfaceId *uint32 `protobuf:"varint,3,opt,name=local_interface_id,json=localInterfaceId,proto3,oneof" json:"local_interface_id,omitempty"` - // IPv6 address representing a node. - // required = true - LocalIpv6NodeAddress *string `protobuf:"bytes,4,opt,name=local_ipv6_node_address,json=localIpv6NodeAddress,proto3,oneof" json:"local_ipv6_node_address,omitempty"` - // Local Interface ID: The Interface Index as defined in [RFC8664]. - // default = 0 - RemoteInterfaceId *uint32 `protobuf:"varint,5,opt,name=remote_interface_id,json=remoteInterfaceId,proto3,oneof" json:"remote_interface_id,omitempty"` - // IPv6 address representing a node. - // required = true - RemoteIpv6NodeAddress *string `protobuf:"bytes,6,opt,name=remote_ipv6_node_address,json=remoteIpv6NodeAddress,proto3,oneof" json:"remote_ipv6_node_address,omitempty"` - // Optional SRv6 SID. - Srv6Sid *string `protobuf:"bytes,7,opt,name=srv6_sid,json=srv6Sid,proto3,oneof" json:"srv6_sid,omitempty"` - // Optional SRv6 Endpoint Behavior and SID Structure. - Srv6SidEndpointBehavior *BgpSrteSRv6SIDEndpointBehaviorAndStructure `protobuf:"bytes,8,opt,name=srv6_sid_endpoint_behavior,json=srv6SidEndpointBehavior,proto3" json:"srv6_sid_endpoint_behavior,omitempty"` + // Description missing in models + // default = Choice.Enum.transitive_2octet_as_type + Choice *BgpExtendedCommunity_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.BgpExtendedCommunity_Choice_Enum,oneof" json:"choice,omitempty"` + // Description missing in models + Transitive_2OctetAsType *BgpExtendedCommunityTransitive2OctetAsType `protobuf:"bytes,2,opt,name=transitive_2octet_as_type,json=transitive2octetAsType,proto3" json:"transitive_2octet_as_type,omitempty"` + // Description missing in models + TransitiveIpv4AddressType *BgpExtendedCommunityTransitiveIpv4AddressType `protobuf:"bytes,3,opt,name=transitive_ipv4_address_type,json=transitiveIpv4AddressType,proto3" json:"transitive_ipv4_address_type,omitempty"` + // Description missing in models + Transitive_4OctetAsType *BgpExtendedCommunityTransitive4OctetAsType `protobuf:"bytes,4,opt,name=transitive_4octet_as_type,json=transitive4octetAsType,proto3" json:"transitive_4octet_as_type,omitempty"` + // Description missing in models + TransitiveOpaqueType *BgpExtendedCommunityTransitiveOpaqueType `protobuf:"bytes,5,opt,name=transitive_opaque_type,json=transitiveOpaqueType,proto3" json:"transitive_opaque_type,omitempty"` + // Description missing in models + TransitiveEvpnType *BgpExtendedCommunityTransitiveEvpnType `protobuf:"bytes,6,opt,name=transitive_evpn_type,json=transitiveEvpnType,proto3" json:"transitive_evpn_type,omitempty"` + // Description missing in models + NonTransitive_2OctetAsType *BgpExtendedCommunityNonTransitive2OctetAsType `protobuf:"bytes,7,opt,name=non_transitive_2octet_as_type,json=nonTransitive2octetAsType,proto3" json:"non_transitive_2octet_as_type,omitempty"` + // Description missing in models + Custom *BgpExtendedCommunityCustomType `protobuf:"bytes,8,opt,name=custom,proto3" json:"custom,omitempty"` } -func (x *BgpSrteSegmentJTypeSubTlv) Reset() { - *x = BgpSrteSegmentJTypeSubTlv{} +func (x *BgpExtendedCommunity) Reset() { + *x = BgpExtendedCommunity{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[123] + mi := &file_otg_proto_msgTypes[82] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *BgpSrteSegmentJTypeSubTlv) String() string { +func (x *BgpExtendedCommunity) String() string { return protoimpl.X.MessageStringOf(x) } -func (*BgpSrteSegmentJTypeSubTlv) ProtoMessage() {} +func (*BgpExtendedCommunity) ProtoMessage() {} -func (x *BgpSrteSegmentJTypeSubTlv) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[123] +func (x *BgpExtendedCommunity) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[82] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -28435,108 +28132,102 @@ func (x *BgpSrteSegmentJTypeSubTlv) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use BgpSrteSegmentJTypeSubTlv.ProtoReflect.Descriptor instead. -func (*BgpSrteSegmentJTypeSubTlv) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{123} +// Deprecated: Use BgpExtendedCommunity.ProtoReflect.Descriptor instead. +func (*BgpExtendedCommunity) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{82} } -func (x *BgpSrteSegmentJTypeSubTlv) GetFlags() string { - if x != nil && x.Flags != nil { - return *x.Flags +func (x *BgpExtendedCommunity) GetChoice() BgpExtendedCommunity_Choice_Enum { + if x != nil && x.Choice != nil { + return *x.Choice } - return "" + return BgpExtendedCommunity_Choice_unspecified } -func (x *BgpSrteSegmentJTypeSubTlv) GetSrAlgorithm() uint32 { - if x != nil && x.SrAlgorithm != nil { - return *x.SrAlgorithm +func (x *BgpExtendedCommunity) GetTransitive_2OctetAsType() *BgpExtendedCommunityTransitive2OctetAsType { + if x != nil { + return x.Transitive_2OctetAsType } - return 0 + return nil } -func (x *BgpSrteSegmentJTypeSubTlv) GetLocalInterfaceId() uint32 { - if x != nil && x.LocalInterfaceId != nil { - return *x.LocalInterfaceId +func (x *BgpExtendedCommunity) GetTransitiveIpv4AddressType() *BgpExtendedCommunityTransitiveIpv4AddressType { + if x != nil { + return x.TransitiveIpv4AddressType } - return 0 + return nil } -func (x *BgpSrteSegmentJTypeSubTlv) GetLocalIpv6NodeAddress() string { - if x != nil && x.LocalIpv6NodeAddress != nil { - return *x.LocalIpv6NodeAddress +func (x *BgpExtendedCommunity) GetTransitive_4OctetAsType() *BgpExtendedCommunityTransitive4OctetAsType { + if x != nil { + return x.Transitive_4OctetAsType } - return "" + return nil } -func (x *BgpSrteSegmentJTypeSubTlv) GetRemoteInterfaceId() uint32 { - if x != nil && x.RemoteInterfaceId != nil { - return *x.RemoteInterfaceId +func (x *BgpExtendedCommunity) GetTransitiveOpaqueType() *BgpExtendedCommunityTransitiveOpaqueType { + if x != nil { + return x.TransitiveOpaqueType } - return 0 + return nil } -func (x *BgpSrteSegmentJTypeSubTlv) GetRemoteIpv6NodeAddress() string { - if x != nil && x.RemoteIpv6NodeAddress != nil { - return *x.RemoteIpv6NodeAddress +func (x *BgpExtendedCommunity) GetTransitiveEvpnType() *BgpExtendedCommunityTransitiveEvpnType { + if x != nil { + return x.TransitiveEvpnType } - return "" + return nil } -func (x *BgpSrteSegmentJTypeSubTlv) GetSrv6Sid() string { - if x != nil && x.Srv6Sid != nil { - return *x.Srv6Sid +func (x *BgpExtendedCommunity) GetNonTransitive_2OctetAsType() *BgpExtendedCommunityNonTransitive2OctetAsType { + if x != nil { + return x.NonTransitive_2OctetAsType } - return "" + return nil } -func (x *BgpSrteSegmentJTypeSubTlv) GetSrv6SidEndpointBehavior() *BgpSrteSRv6SIDEndpointBehaviorAndStructure { +func (x *BgpExtendedCommunity) GetCustom() *BgpExtendedCommunityCustomType { if x != nil { - return x.Srv6SidEndpointBehavior + return x.Custom } return nil } -// Type K: IPv6 Local and Remote addresses for SRv6 with optional SID. -type BgpSrteSegmentKTypeSubTlv struct { +// The Route Target Community identifies one or more routers that may receive a set +// of routes (that carry this Community) carried by BGP. It is sent with sub-type as +// 0x02. +type BgpExtendedCommunityTransitive2OctetAsTypeRouteTarget struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // One octet bitmap for flags including V-Flag, A-Flag, S-Flag, B-Flag etc. as defined - // in https://datatracker.ietf.org/doc/html/draft-ietf-idr-segment-routing-te-policy-13#section-2.4.4.2.12 - Flags *string `protobuf:"bytes,1,opt,name=flags,proto3,oneof" json:"flags,omitempty"` - // SR Algorithm identifier when A-Flag in on. - // default = 0 - SrAlgorithm *uint32 `protobuf:"varint,2,opt,name=sr_algorithm,json=srAlgorithm,proto3,oneof" json:"sr_algorithm,omitempty"` - // IPv6 address representing a node. - // required = true - LocalIpv6Address *string `protobuf:"bytes,3,opt,name=local_ipv6_address,json=localIpv6Address,proto3,oneof" json:"local_ipv6_address,omitempty"` - // IPv6 address representing a node. - // required = true - RemoteIpv6Address *string `protobuf:"bytes,4,opt,name=remote_ipv6_address,json=remoteIpv6Address,proto3,oneof" json:"remote_ipv6_address,omitempty"` - // Optional SRv6 SID. - Srv6Sid *string `protobuf:"bytes,5,opt,name=srv6_sid,json=srv6Sid,proto3,oneof" json:"srv6_sid,omitempty"` - // Optional SRv6 Endpoint Behavior and SID Structure. - Srv6SidEndpointBehavior *BgpSrteSRv6SIDEndpointBehaviorAndStructure `protobuf:"bytes,6,opt,name=srv6_sid_endpoint_behavior,json=srv6SidEndpointBehavior,proto3" json:"srv6_sid_endpoint_behavior,omitempty"` + // The two octet IANA assigned AS value assigned to the Autonomous System. + // default = 100 + Global_2ByteAs *uint32 `protobuf:"varint,1,opt,name=global_2byte_as,json=global2byteAs,proto3,oneof" json:"global_2byte_as,omitempty"` + // The Local Administrator sub-field contains a number from a numbering space that is + // administered by the organization to which the Autonomous System number carried in + // the Global Administrator sub-field has been assigned by an appropriate authority. + // default = 1 + Local_4ByteAdmin *uint32 `protobuf:"varint,2,opt,name=local_4byte_admin,json=local4byteAdmin,proto3,oneof" json:"local_4byte_admin,omitempty"` } -func (x *BgpSrteSegmentKTypeSubTlv) Reset() { - *x = BgpSrteSegmentKTypeSubTlv{} +func (x *BgpExtendedCommunityTransitive2OctetAsTypeRouteTarget) Reset() { + *x = BgpExtendedCommunityTransitive2OctetAsTypeRouteTarget{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[124] + mi := &file_otg_proto_msgTypes[83] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *BgpSrteSegmentKTypeSubTlv) String() string { +func (x *BgpExtendedCommunityTransitive2OctetAsTypeRouteTarget) String() string { return protoimpl.X.MessageStringOf(x) } -func (*BgpSrteSegmentKTypeSubTlv) ProtoMessage() {} +func (*BgpExtendedCommunityTransitive2OctetAsTypeRouteTarget) ProtoMessage() {} -func (x *BgpSrteSegmentKTypeSubTlv) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[124] +func (x *BgpExtendedCommunityTransitive2OctetAsTypeRouteTarget) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[83] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -28547,156 +28238,120 @@ func (x *BgpSrteSegmentKTypeSubTlv) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use BgpSrteSegmentKTypeSubTlv.ProtoReflect.Descriptor instead. -func (*BgpSrteSegmentKTypeSubTlv) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{124} +// Deprecated: Use BgpExtendedCommunityTransitive2OctetAsTypeRouteTarget.ProtoReflect.Descriptor instead. +func (*BgpExtendedCommunityTransitive2OctetAsTypeRouteTarget) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{83} } -func (x *BgpSrteSegmentKTypeSubTlv) GetFlags() string { - if x != nil && x.Flags != nil { - return *x.Flags +func (x *BgpExtendedCommunityTransitive2OctetAsTypeRouteTarget) GetGlobal_2ByteAs() uint32 { + if x != nil && x.Global_2ByteAs != nil { + return *x.Global_2ByteAs } - return "" + return 0 } -func (x *BgpSrteSegmentKTypeSubTlv) GetSrAlgorithm() uint32 { - if x != nil && x.SrAlgorithm != nil { - return *x.SrAlgorithm +func (x *BgpExtendedCommunityTransitive2OctetAsTypeRouteTarget) GetLocal_4ByteAdmin() uint32 { + if x != nil && x.Local_4ByteAdmin != nil { + return *x.Local_4ByteAdmin } return 0 } -func (x *BgpSrteSegmentKTypeSubTlv) GetLocalIpv6Address() string { - if x != nil && x.LocalIpv6Address != nil { - return *x.LocalIpv6Address - } - return "" -} +// The Route Origin Community identifies one or more routers that inject a set of routes +// (that carry this Community) into BGP. It is sent with sub-type as 0x03 . +type BgpExtendedCommunityTransitive2OctetAsTypeRouteOrigin struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields -func (x *BgpSrteSegmentKTypeSubTlv) GetRemoteIpv6Address() string { - if x != nil && x.RemoteIpv6Address != nil { - return *x.RemoteIpv6Address - } - return "" + // The two octet IANA assigned AS value assigned to the Autonomous System. + // default = 100 + Global_2ByteAs *uint32 `protobuf:"varint,1,opt,name=global_2byte_as,json=global2byteAs,proto3,oneof" json:"global_2byte_as,omitempty"` + // The Local Administrator sub-field contains a number from a numbering space that is + // administered by the organization to which the Autonomous System number carried in + // the Global Administrator sub-field has been assigned by an appropriate authority. + // default = 1 + Local_4ByteAdmin *uint32 `protobuf:"varint,2,opt,name=local_4byte_admin,json=local4byteAdmin,proto3,oneof" json:"local_4byte_admin,omitempty"` } -func (x *BgpSrteSegmentKTypeSubTlv) GetSrv6Sid() string { - if x != nil && x.Srv6Sid != nil { - return *x.Srv6Sid - } - return "" +func (x *BgpExtendedCommunityTransitive2OctetAsTypeRouteOrigin) Reset() { + *x = BgpExtendedCommunityTransitive2OctetAsTypeRouteOrigin{} + if protoimpl.UnsafeEnabled { + mi := &file_otg_proto_msgTypes[84] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (x *BgpSrteSegmentKTypeSubTlv) GetSrv6SidEndpointBehavior() *BgpSrteSRv6SIDEndpointBehaviorAndStructure { - if x != nil { - return x.Srv6SidEndpointBehavior +func (x *BgpExtendedCommunityTransitive2OctetAsTypeRouteOrigin) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*BgpExtendedCommunityTransitive2OctetAsTypeRouteOrigin) ProtoMessage() {} + +func (x *BgpExtendedCommunityTransitive2OctetAsTypeRouteOrigin) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[84] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms } - return nil + return mi.MessageOf(x) } -// Configuration for BGP Segment Routing Traffic Engineering policy. -type BgpSrteV6Policy struct { +// Deprecated: Use BgpExtendedCommunityTransitive2OctetAsTypeRouteOrigin.ProtoReflect.Descriptor instead. +func (*BgpExtendedCommunityTransitive2OctetAsTypeRouteOrigin) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{84} +} + +func (x *BgpExtendedCommunityTransitive2OctetAsTypeRouteOrigin) GetGlobal_2ByteAs() uint32 { + if x != nil && x.Global_2ByteAs != nil { + return *x.Global_2ByteAs + } + return 0 +} + +func (x *BgpExtendedCommunityTransitive2OctetAsTypeRouteOrigin) GetLocal_4ByteAdmin() uint32 { + if x != nil && x.Local_4ByteAdmin != nil { + return *x.Local_4ByteAdmin + } + return 0 +} + +// The Transitive Two-Octet AS-Specific Extended Community is sent as type 0x00 . +type BgpExtendedCommunityTransitive2OctetAsType struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Identifies the policy in the context of (color and endpoint) tuple. It is used by - // the SR Policy originator to make unique multiple occurrences of the same SR Policy. - // default = 1 - Distinguisher *uint32 `protobuf:"varint,1,opt,name=distinguisher,proto3,oneof" json:"distinguisher,omitempty"` - // Identifies the policy. It is used to match the color of the destination prefixes - // to steer traffic into the SR Policy. - // default = 100 - Color *uint32 `protobuf:"varint,2,opt,name=color,proto3,oneof" json:"color,omitempty"` - // Specifies a single node or a set of nodes (e.g., an anycast address). It is selected - // on the basis of the SR Policy type (AFI). - // required = true - Ipv6Endpoint *string `protobuf:"bytes,3,opt,name=ipv6_endpoint,json=ipv6Endpoint,proto3,oneof" json:"ipv6_endpoint,omitempty"` - // Mode for choosing the NextHop in MP REACH NLRI. Available modes are : Local IP: Automatically - // fills the Nexthop with the Local IP of the BGP peer. For IPv6 BGP peer the Nexthop - // Encoding capability should be enabled. Manual: Override the Nexthop with any arbitrary - // IPv4/IPv6 address. - // default = NextHopMode.Enum.local_ip - NextHopMode *BgpSrteV6Policy_NextHopMode_Enum `protobuf:"varint,4,opt,name=next_hop_mode,json=nextHopMode,proto3,enum=otg.BgpSrteV6Policy_NextHopMode_Enum,oneof" json:"next_hop_mode,omitempty"` - // Type of next hop IP address to be used when 'next_hop_mode' is set to 'manual'. - // default = NextHopAddressType.Enum.ipv6 - NextHopAddressType *BgpSrteV6Policy_NextHopAddressType_Enum `protobuf:"varint,5,opt,name=next_hop_address_type,json=nextHopAddressType,proto3,enum=otg.BgpSrteV6Policy_NextHopAddressType_Enum,oneof" json:"next_hop_address_type,omitempty"` - // The IPv4 address of the Nexthop if the 'next_hop_mode' is 'manual' and the Nexthop - // type 'next_hop_address_type' is IPv4. If BGP peer is of type IPv6, Nexthop Encoding - // capability extended_next_hop_encoding should be enabled. - // default = 0.0.0.0 - NextHopIpv4Address *string `protobuf:"bytes,6,opt,name=next_hop_ipv4_address,json=nextHopIpv4Address,proto3,oneof" json:"next_hop_ipv4_address,omitempty"` - // The IPv6 address of the next hop if the Nexthop Mode 'next_hop_address_type' is 'manual' - // and the Nexthop type 'next_hop_address_type' is IPv6. - // default = ::0 - NextHopIpv6Address *string `protobuf:"bytes,7,opt,name=next_hop_ipv6_address,json=nextHopIpv6Address,proto3,oneof" json:"next_hop_ipv6_address,omitempty"` // Description missing in models - Advanced *BgpRouteAdvanced `protobuf:"bytes,8,opt,name=advanced,proto3" json:"advanced,omitempty"` + // default = Choice.Enum.route_target_subtype + Choice *BgpExtendedCommunityTransitive2OctetAsType_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.BgpExtendedCommunityTransitive2OctetAsType_Choice_Enum,oneof" json:"choice,omitempty"` // Description missing in models - AddPath *BgpAddPath `protobuf:"bytes,9,opt,name=add_path,json=addPath,proto3" json:"add_path,omitempty"` + RouteTargetSubtype *BgpExtendedCommunityTransitive2OctetAsTypeRouteTarget `protobuf:"bytes,2,opt,name=route_target_subtype,json=routeTargetSubtype,proto3" json:"route_target_subtype,omitempty"` // Description missing in models - AsPath *BgpAsPath `protobuf:"bytes,10,opt,name=as_path,json=asPath,proto3" json:"as_path,omitempty"` - // Optional community settings. - Communities []*BgpCommunity `protobuf:"bytes,11,rep,name=communities,proto3" json:"communities,omitempty"` - // Optional Extended Community settings. The Extended Communities Attribute is a transitive - // optional BGP attribute, with the Type Code 16. Community and Extended Communities - // attributes are utilized to trigger routing decisions, such as acceptance, rejection, - // preference, or redistribution. An extended community is an 8-Bytes value. It is - // divided into two main parts. The first 2 Bytes of the community encode a type and - // sub-type fields and the last 6 Bytes carry a unique set of data in a format defined - // by the type and sub-type field. Extended communities provide a larger range for - // grouping or categorizing communities. When type is administrator_as_2octet or administrator_as_4octet, - // the valid sub types are route target and origin. The valid value for administrator_as_2octet - // and administrator_as_4octet type is either two byte AS followed by four byte local - // administrator id or four byte AS followed by two byte local administrator id. When - // type is administrator_ipv4_address the valid sub types are route target and origin. - // The valid value for administrator_ipv4_address is a four byte IPv4 address followed - // by a two byte local administrator id. When type is opaque, valid sub types are color - // and encapsulation. When sub type is color, first two bytes of the value field contain - // flags and last four bytes contains the value of the color. When sub type is encapsulation - // the first four bytes of value field are reserved and last two bytes carries the tunnel - // type from IANA's ETHER TYPES registry e.g IPv4 (protocol type = 0x0800), IPv6 (protocol - // type = 0x86dd), and MPLS (protocol type = 0x8847). When type is administrator_as_2octet_link_bandwidth - // the valid sub type is extended_bandwidth. The first two bytes of the value field - // contains the AS number and the last four bytes contains the bandwidth in IEEE floating - // point format. When type is evpn the valid subtype is mac_address. In the value field - // the low-order bit of the first byte(Flags) is defined as the Sticky/static flag and - // may be set to 1, indicating the MAC address is static and cannot move. The second - // byte is reserved and the last four bytes contain the sequence number which is used - // to ensure that PEs retain the correct MAC/IP Advertisement route when multiple updates - // occur for the same MAC address. - Extcommunities []*BgpExtCommunity `protobuf:"bytes,12,rep,name=extcommunities,proto3" json:"extcommunities,omitempty"` - // List of optional tunnel TLV settings. - TunnelTlvs []*BgpSrteV6TunnelTlv `protobuf:"bytes,13,rep,name=tunnel_tlvs,json=tunnelTlvs,proto3" json:"tunnel_tlvs,omitempty"` - // Globally unique name of an object. It also serves as the primary key for arrays of - // objects. - // required = true - Name *string `protobuf:"bytes,14,opt,name=name,proto3,oneof" json:"name,omitempty"` - // If enabled means that this part of the configuration including any active 'children' - // nodes will be advertised to peer. If disabled, this means that though config is - // present, it is not taking any part of the test but can be activated at run-time to - // advertise just this part of the configuration to the peer. - // default = True - Active *bool `protobuf:"varint,15,opt,name=active,proto3,oneof" json:"active,omitempty"` + RouteOriginSubtype *BgpExtendedCommunityTransitive2OctetAsTypeRouteOrigin `protobuf:"bytes,3,opt,name=route_origin_subtype,json=routeOriginSubtype,proto3" json:"route_origin_subtype,omitempty"` } -func (x *BgpSrteV6Policy) Reset() { - *x = BgpSrteV6Policy{} +func (x *BgpExtendedCommunityTransitive2OctetAsType) Reset() { + *x = BgpExtendedCommunityTransitive2OctetAsType{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[125] + mi := &file_otg_proto_msgTypes[85] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *BgpSrteV6Policy) String() string { +func (x *BgpExtendedCommunityTransitive2OctetAsType) String() string { return protoimpl.X.MessageStringOf(x) } -func (*BgpSrteV6Policy) ProtoMessage() {} +func (*BgpExtendedCommunityTransitive2OctetAsType) ProtoMessage() {} -func (x *BgpSrteV6Policy) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[125] +func (x *BgpExtendedCommunityTransitive2OctetAsType) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[85] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -28707,167 +28362,191 @@ func (x *BgpSrteV6Policy) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use BgpSrteV6Policy.ProtoReflect.Descriptor instead. -func (*BgpSrteV6Policy) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{125} +// Deprecated: Use BgpExtendedCommunityTransitive2OctetAsType.ProtoReflect.Descriptor instead. +func (*BgpExtendedCommunityTransitive2OctetAsType) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{85} } -func (x *BgpSrteV6Policy) GetDistinguisher() uint32 { - if x != nil && x.Distinguisher != nil { - return *x.Distinguisher +func (x *BgpExtendedCommunityTransitive2OctetAsType) GetChoice() BgpExtendedCommunityTransitive2OctetAsType_Choice_Enum { + if x != nil && x.Choice != nil { + return *x.Choice } - return 0 + return BgpExtendedCommunityTransitive2OctetAsType_Choice_unspecified } -func (x *BgpSrteV6Policy) GetColor() uint32 { - if x != nil && x.Color != nil { - return *x.Color +func (x *BgpExtendedCommunityTransitive2OctetAsType) GetRouteTargetSubtype() *BgpExtendedCommunityTransitive2OctetAsTypeRouteTarget { + if x != nil { + return x.RouteTargetSubtype } - return 0 + return nil } -func (x *BgpSrteV6Policy) GetIpv6Endpoint() string { - if x != nil && x.Ipv6Endpoint != nil { - return *x.Ipv6Endpoint +func (x *BgpExtendedCommunityTransitive2OctetAsType) GetRouteOriginSubtype() *BgpExtendedCommunityTransitive2OctetAsTypeRouteOrigin { + if x != nil { + return x.RouteOriginSubtype } - return "" + return nil } -func (x *BgpSrteV6Policy) GetNextHopMode() BgpSrteV6Policy_NextHopMode_Enum { - if x != nil && x.NextHopMode != nil { - return *x.NextHopMode - } - return BgpSrteV6Policy_NextHopMode_unspecified +// The Route Origin Community identifies one or more routers that inject a set of routes +// (that carry this Community) into BGP It is sent with sub-type as 0x03. +type BgpExtendedCommunityTransitiveIpv4AddressTypeRouteOrigin struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // An IPv4 unicast address assigned by one of the Internet registries. + // default = 0.0.0.0 + GlobalIpv4Admin *string `protobuf:"bytes,1,opt,name=global_ipv4_admin,json=globalIpv4Admin,proto3,oneof" json:"global_ipv4_admin,omitempty"` + // The Local Administrator sub-field contains a number from a numbering space that is + // administered by the organization to which the IP address carried in the Global Administrator + // sub-field has been assigned by an appropriate authority. + // default = 1 + Local_2ByteAdmin *uint32 `protobuf:"varint,2,opt,name=local_2byte_admin,json=local2byteAdmin,proto3,oneof" json:"local_2byte_admin,omitempty"` } -func (x *BgpSrteV6Policy) GetNextHopAddressType() BgpSrteV6Policy_NextHopAddressType_Enum { - if x != nil && x.NextHopAddressType != nil { - return *x.NextHopAddressType +func (x *BgpExtendedCommunityTransitiveIpv4AddressTypeRouteOrigin) Reset() { + *x = BgpExtendedCommunityTransitiveIpv4AddressTypeRouteOrigin{} + if protoimpl.UnsafeEnabled { + mi := &file_otg_proto_msgTypes[86] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } - return BgpSrteV6Policy_NextHopAddressType_unspecified } -func (x *BgpSrteV6Policy) GetNextHopIpv4Address() string { - if x != nil && x.NextHopIpv4Address != nil { - return *x.NextHopIpv4Address +func (x *BgpExtendedCommunityTransitiveIpv4AddressTypeRouteOrigin) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*BgpExtendedCommunityTransitiveIpv4AddressTypeRouteOrigin) ProtoMessage() {} + +func (x *BgpExtendedCommunityTransitiveIpv4AddressTypeRouteOrigin) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[86] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms } - return "" + return mi.MessageOf(x) } -func (x *BgpSrteV6Policy) GetNextHopIpv6Address() string { - if x != nil && x.NextHopIpv6Address != nil { - return *x.NextHopIpv6Address +// Deprecated: Use BgpExtendedCommunityTransitiveIpv4AddressTypeRouteOrigin.ProtoReflect.Descriptor instead. +func (*BgpExtendedCommunityTransitiveIpv4AddressTypeRouteOrigin) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{86} +} + +func (x *BgpExtendedCommunityTransitiveIpv4AddressTypeRouteOrigin) GetGlobalIpv4Admin() string { + if x != nil && x.GlobalIpv4Admin != nil { + return *x.GlobalIpv4Admin } return "" } -func (x *BgpSrteV6Policy) GetAdvanced() *BgpRouteAdvanced { - if x != nil { - return x.Advanced +func (x *BgpExtendedCommunityTransitiveIpv4AddressTypeRouteOrigin) GetLocal_2ByteAdmin() uint32 { + if x != nil && x.Local_2ByteAdmin != nil { + return *x.Local_2ByteAdmin } - return nil + return 0 } -func (x *BgpSrteV6Policy) GetAddPath() *BgpAddPath { - if x != nil { - return x.AddPath - } - return nil +// The Route Target Community identifies one or more routers that may receive a set +// of routes (that carry this Community) carried by BGP. It is sent with sub-type as +// 0x02. +type BgpExtendedCommunityTransitiveIpv4AddressTypeRouteTarget struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // An IPv4 unicast address assigned by one of the Internet registries. + // default = 0.0.0.0 + GlobalIpv4Admin *string `protobuf:"bytes,1,opt,name=global_ipv4_admin,json=globalIpv4Admin,proto3,oneof" json:"global_ipv4_admin,omitempty"` + // The Local Administrator sub-field contains a number from a numbering space that is + // administered by the organization to which the IP address carried in the Global Administrator + // sub-field has been assigned by an appropriate authority. + // default = 1 + Local_2ByteAdmin *uint32 `protobuf:"varint,2,opt,name=local_2byte_admin,json=local2byteAdmin,proto3,oneof" json:"local_2byte_admin,omitempty"` } -func (x *BgpSrteV6Policy) GetAsPath() *BgpAsPath { - if x != nil { - return x.AsPath +func (x *BgpExtendedCommunityTransitiveIpv4AddressTypeRouteTarget) Reset() { + *x = BgpExtendedCommunityTransitiveIpv4AddressTypeRouteTarget{} + if protoimpl.UnsafeEnabled { + mi := &file_otg_proto_msgTypes[87] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } - return nil } -func (x *BgpSrteV6Policy) GetCommunities() []*BgpCommunity { - if x != nil { - return x.Communities - } - return nil +func (x *BgpExtendedCommunityTransitiveIpv4AddressTypeRouteTarget) String() string { + return protoimpl.X.MessageStringOf(x) } -func (x *BgpSrteV6Policy) GetExtcommunities() []*BgpExtCommunity { - if x != nil { - return x.Extcommunities +func (*BgpExtendedCommunityTransitiveIpv4AddressTypeRouteTarget) ProtoMessage() {} + +func (x *BgpExtendedCommunityTransitiveIpv4AddressTypeRouteTarget) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[87] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms } - return nil + return mi.MessageOf(x) } -func (x *BgpSrteV6Policy) GetTunnelTlvs() []*BgpSrteV6TunnelTlv { - if x != nil { - return x.TunnelTlvs - } - return nil +// Deprecated: Use BgpExtendedCommunityTransitiveIpv4AddressTypeRouteTarget.ProtoReflect.Descriptor instead. +func (*BgpExtendedCommunityTransitiveIpv4AddressTypeRouteTarget) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{87} } -func (x *BgpSrteV6Policy) GetName() string { - if x != nil && x.Name != nil { - return *x.Name +func (x *BgpExtendedCommunityTransitiveIpv4AddressTypeRouteTarget) GetGlobalIpv4Admin() string { + if x != nil && x.GlobalIpv4Admin != nil { + return *x.GlobalIpv4Admin } return "" } -func (x *BgpSrteV6Policy) GetActive() bool { - if x != nil && x.Active != nil { - return *x.Active +func (x *BgpExtendedCommunityTransitiveIpv4AddressTypeRouteTarget) GetLocal_2ByteAdmin() uint32 { + if x != nil && x.Local_2ByteAdmin != nil { + return *x.Local_2ByteAdmin } - return false + return 0 } -// Configuration for BGP SRTE Tunnel TLV. -type BgpSrteV6TunnelTlv struct { +// The Transitive IPv4 Address Specific Extended Community is sent as type 0x01. +type BgpExtendedCommunityTransitiveIpv4AddressType struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // Description missing in models - RemoteEndpointSubTlv *BgpSrteRemoteEndpointSubTlv `protobuf:"bytes,1,opt,name=remote_endpoint_sub_tlv,json=remoteEndpointSubTlv,proto3" json:"remote_endpoint_sub_tlv,omitempty"` - // Description missing in models - ColorSubTlv *BgpSrteColorSubTlv `protobuf:"bytes,2,opt,name=color_sub_tlv,json=colorSubTlv,proto3" json:"color_sub_tlv,omitempty"` - // Description missing in models - BindingSubTlv *BgpSrteBindingSubTlv `protobuf:"bytes,3,opt,name=binding_sub_tlv,json=bindingSubTlv,proto3" json:"binding_sub_tlv,omitempty"` - // Description missing in models - PreferenceSubTlv *BgpSrtePreferenceSubTlv `protobuf:"bytes,4,opt,name=preference_sub_tlv,json=preferenceSubTlv,proto3" json:"preference_sub_tlv,omitempty"` - // Description missing in models - PolicyPrioritySubTlv *BgpSrtePolicyPrioritySubTlv `protobuf:"bytes,5,opt,name=policy_priority_sub_tlv,json=policyPrioritySubTlv,proto3" json:"policy_priority_sub_tlv,omitempty"` - // Description missing in models - PolicyNameSubTlv *BgpSrtePolicyNameSubTlv `protobuf:"bytes,6,opt,name=policy_name_sub_tlv,json=policyNameSubTlv,proto3" json:"policy_name_sub_tlv,omitempty"` + // default = Choice.Enum.route_target_subtype + Choice *BgpExtendedCommunityTransitiveIpv4AddressType_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.BgpExtendedCommunityTransitiveIpv4AddressType_Choice_Enum,oneof" json:"choice,omitempty"` // Description missing in models - ExplicitNullLabelPolicySubTlv *BgpSrteExplicitNullLabelPolicySubTlv `protobuf:"bytes,7,opt,name=explicit_null_label_policy_sub_tlv,json=explicitNullLabelPolicySubTlv,proto3" json:"explicit_null_label_policy_sub_tlv,omitempty"` + RouteTargetSubtype *BgpExtendedCommunityTransitiveIpv4AddressTypeRouteTarget `protobuf:"bytes,2,opt,name=route_target_subtype,json=routeTargetSubtype,proto3" json:"route_target_subtype,omitempty"` // Description missing in models - SegmentLists []*BgpSrteSegmentList `protobuf:"bytes,8,rep,name=segment_lists,json=segmentLists,proto3" json:"segment_lists,omitempty"` - // Globally unique name of an object. It also serves as the primary key for arrays of - // objects. - // required = true - Name *string `protobuf:"bytes,9,opt,name=name,proto3,oneof" json:"name,omitempty"` - // If enabled means that this part of the configuration including any active 'children' - // nodes will be advertised to peer. If disabled, this means that though config is - // present, it is not taking any part of the test but can be activated at run-time to - // advertise just this part of the configuration to the peer. - // default = True - Active *bool `protobuf:"varint,10,opt,name=active,proto3,oneof" json:"active,omitempty"` + RouteOriginSubtype *BgpExtendedCommunityTransitiveIpv4AddressTypeRouteOrigin `protobuf:"bytes,3,opt,name=route_origin_subtype,json=routeOriginSubtype,proto3" json:"route_origin_subtype,omitempty"` } -func (x *BgpSrteV6TunnelTlv) Reset() { - *x = BgpSrteV6TunnelTlv{} +func (x *BgpExtendedCommunityTransitiveIpv4AddressType) Reset() { + *x = BgpExtendedCommunityTransitiveIpv4AddressType{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[126] + mi := &file_otg_proto_msgTypes[88] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *BgpSrteV6TunnelTlv) String() string { +func (x *BgpExtendedCommunityTransitiveIpv4AddressType) String() string { return protoimpl.X.MessageStringOf(x) } -func (*BgpSrteV6TunnelTlv) ProtoMessage() {} +func (*BgpExtendedCommunityTransitiveIpv4AddressType) ProtoMessage() {} -func (x *BgpSrteV6TunnelTlv) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[126] +func (x *BgpExtendedCommunityTransitiveIpv4AddressType) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[88] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -28878,130 +28557,130 @@ func (x *BgpSrteV6TunnelTlv) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use BgpSrteV6TunnelTlv.ProtoReflect.Descriptor instead. -func (*BgpSrteV6TunnelTlv) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{126} +// Deprecated: Use BgpExtendedCommunityTransitiveIpv4AddressType.ProtoReflect.Descriptor instead. +func (*BgpExtendedCommunityTransitiveIpv4AddressType) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{88} } -func (x *BgpSrteV6TunnelTlv) GetRemoteEndpointSubTlv() *BgpSrteRemoteEndpointSubTlv { - if x != nil { - return x.RemoteEndpointSubTlv +func (x *BgpExtendedCommunityTransitiveIpv4AddressType) GetChoice() BgpExtendedCommunityTransitiveIpv4AddressType_Choice_Enum { + if x != nil && x.Choice != nil { + return *x.Choice } - return nil + return BgpExtendedCommunityTransitiveIpv4AddressType_Choice_unspecified } -func (x *BgpSrteV6TunnelTlv) GetColorSubTlv() *BgpSrteColorSubTlv { +func (x *BgpExtendedCommunityTransitiveIpv4AddressType) GetRouteTargetSubtype() *BgpExtendedCommunityTransitiveIpv4AddressTypeRouteTarget { if x != nil { - return x.ColorSubTlv + return x.RouteTargetSubtype } return nil } -func (x *BgpSrteV6TunnelTlv) GetBindingSubTlv() *BgpSrteBindingSubTlv { +func (x *BgpExtendedCommunityTransitiveIpv4AddressType) GetRouteOriginSubtype() *BgpExtendedCommunityTransitiveIpv4AddressTypeRouteOrigin { if x != nil { - return x.BindingSubTlv + return x.RouteOriginSubtype } return nil } -func (x *BgpSrteV6TunnelTlv) GetPreferenceSubTlv() *BgpSrtePreferenceSubTlv { - if x != nil { - return x.PreferenceSubTlv - } - return nil +// The Route Target Community identifies one or more routers that may receive a set +// of routes (that carry this Community) carried by BGP. It is sent with sub-type as +// 0x02 +type BgpExtendedCommunityTransitive4OctetAsTypeRouteTarget struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // The four octet IANA assigned AS value assigned to the Autonomous System. + // default = 100 + Global_4ByteAs *uint32 `protobuf:"varint,1,opt,name=global_4byte_as,json=global4byteAs,proto3,oneof" json:"global_4byte_as,omitempty"` + // The Local Administrator sub-field contains a number from a numbering space that is + // administered by the organization to which the Autonomous System number carried in + // the Global Administrator sub-field has been assigned by an appropriate authority. + // default = 1 + Local_2ByteAdmin *uint32 `protobuf:"varint,2,opt,name=local_2byte_admin,json=local2byteAdmin,proto3,oneof" json:"local_2byte_admin,omitempty"` } -func (x *BgpSrteV6TunnelTlv) GetPolicyPrioritySubTlv() *BgpSrtePolicyPrioritySubTlv { - if x != nil { - return x.PolicyPrioritySubTlv +func (x *BgpExtendedCommunityTransitive4OctetAsTypeRouteTarget) Reset() { + *x = BgpExtendedCommunityTransitive4OctetAsTypeRouteTarget{} + if protoimpl.UnsafeEnabled { + mi := &file_otg_proto_msgTypes[89] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } - return nil } -func (x *BgpSrteV6TunnelTlv) GetPolicyNameSubTlv() *BgpSrtePolicyNameSubTlv { - if x != nil { - return x.PolicyNameSubTlv - } - return nil +func (x *BgpExtendedCommunityTransitive4OctetAsTypeRouteTarget) String() string { + return protoimpl.X.MessageStringOf(x) } -func (x *BgpSrteV6TunnelTlv) GetExplicitNullLabelPolicySubTlv() *BgpSrteExplicitNullLabelPolicySubTlv { - if x != nil { - return x.ExplicitNullLabelPolicySubTlv +func (*BgpExtendedCommunityTransitive4OctetAsTypeRouteTarget) ProtoMessage() {} + +func (x *BgpExtendedCommunityTransitive4OctetAsTypeRouteTarget) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[89] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms } - return nil + return mi.MessageOf(x) } -func (x *BgpSrteV6TunnelTlv) GetSegmentLists() []*BgpSrteSegmentList { - if x != nil { - return x.SegmentLists - } - return nil +// Deprecated: Use BgpExtendedCommunityTransitive4OctetAsTypeRouteTarget.ProtoReflect.Descriptor instead. +func (*BgpExtendedCommunityTransitive4OctetAsTypeRouteTarget) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{89} } -func (x *BgpSrteV6TunnelTlv) GetName() string { - if x != nil && x.Name != nil { - return *x.Name +func (x *BgpExtendedCommunityTransitive4OctetAsTypeRouteTarget) GetGlobal_4ByteAs() uint32 { + if x != nil && x.Global_4ByteAs != nil { + return *x.Global_4ByteAs } - return "" + return 0 } -func (x *BgpSrteV6TunnelTlv) GetActive() bool { - if x != nil && x.Active != nil { - return *x.Active +func (x *BgpExtendedCommunityTransitive4OctetAsTypeRouteTarget) GetLocal_2ByteAdmin() uint32 { + if x != nil && x.Local_2ByteAdmin != nil { + return *x.Local_2ByteAdmin } - return false + return 0 } -// The Graceful Restart Capability (RFC 4724) is a BGP capability that can be used by -// a BGP speaker to indicate its ability to preserve its forwarding state during BGP -// restart. The Graceful Restart (GR) capability is advertised in OPEN messages sent -// between BGP peers. After a BGP session has been established, and the initial routing -// update has been completed, an End-of-RIB (Routing Information Base) marker is sent -// in an UPDATE message to convey information about routing convergence. -type BgpGracefulRestart struct { +// The Route Origin Community identifies one or more routers that inject a set of routes +// (that carry this Community) into BGP. It is sent with sub-type as 0x03. +type BgpExtendedCommunityTransitive4OctetAsTypeRouteOrigin struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // If enabled, Graceful Restart capability is advertised in BGP OPEN messages. - // default = False - EnableGr *bool `protobuf:"varint,1,opt,name=enable_gr,json=enableGr,proto3,oneof" json:"enable_gr,omitempty"` - // This is the estimated duration (in seconds) it will take for the BGP session to be - // re-established after a restart. This can be used to speed up routing convergence - // by its peer in case the BGP speaker does not come back after a restart. - // default = 45 - RestartTime *uint32 `protobuf:"varint,2,opt,name=restart_time,json=restartTime,proto3,oneof" json:"restart_time,omitempty"` - // If enabled, the Long-lived Graceful Restart Capability, or LLGR Capability - // will be advertised. - // This capability MUST be advertised in conjunction with the Graceful Restart - // capability. - // default = False - EnableLlgr *bool `protobuf:"varint,3,opt,name=enable_llgr,json=enableLlgr,proto3,oneof" json:"enable_llgr,omitempty"` - // Duration (in seconds) specifying how long stale information (for the AFI/SAFI) - // may be retained. This is a three byte field and is applicable - // only if 'enable_llgr' is set to 'true'. - // default = 10 - StaleTime *uint32 `protobuf:"varint,4,opt,name=stale_time,json=staleTime,proto3,oneof" json:"stale_time,omitempty"` + // The four octet IANA assigned AS value assigned to the Autonomous System. + // default = 100 + Global_4ByteAs *uint32 `protobuf:"varint,1,opt,name=global_4byte_as,json=global4byteAs,proto3,oneof" json:"global_4byte_as,omitempty"` + // The Local Administrator sub-field contains a number from a numbering space that is + // administered by the organization to which the Autonomous System number carried in + // the Global Administrator sub-field has been assigned by an appropriate authority. + // default = 1 + Local_2ByteAdmin *uint32 `protobuf:"varint,2,opt,name=local_2byte_admin,json=local2byteAdmin,proto3,oneof" json:"local_2byte_admin,omitempty"` } -func (x *BgpGracefulRestart) Reset() { - *x = BgpGracefulRestart{} +func (x *BgpExtendedCommunityTransitive4OctetAsTypeRouteOrigin) Reset() { + *x = BgpExtendedCommunityTransitive4OctetAsTypeRouteOrigin{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[127] + mi := &file_otg_proto_msgTypes[90] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *BgpGracefulRestart) String() string { +func (x *BgpExtendedCommunityTransitive4OctetAsTypeRouteOrigin) String() string { return protoimpl.X.MessageStringOf(x) } -func (*BgpGracefulRestart) ProtoMessage() {} +func (*BgpExtendedCommunityTransitive4OctetAsTypeRouteOrigin) ProtoMessage() {} -func (x *BgpGracefulRestart) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[127] +func (x *BgpExtendedCommunityTransitive4OctetAsTypeRouteOrigin) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[90] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -29012,130 +28691,58 @@ func (x *BgpGracefulRestart) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use BgpGracefulRestart.ProtoReflect.Descriptor instead. -func (*BgpGracefulRestart) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{127} -} - -func (x *BgpGracefulRestart) GetEnableGr() bool { - if x != nil && x.EnableGr != nil { - return *x.EnableGr - } - return false +// Deprecated: Use BgpExtendedCommunityTransitive4OctetAsTypeRouteOrigin.ProtoReflect.Descriptor instead. +func (*BgpExtendedCommunityTransitive4OctetAsTypeRouteOrigin) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{90} } -func (x *BgpGracefulRestart) GetRestartTime() uint32 { - if x != nil && x.RestartTime != nil { - return *x.RestartTime +func (x *BgpExtendedCommunityTransitive4OctetAsTypeRouteOrigin) GetGlobal_4ByteAs() uint32 { + if x != nil && x.Global_4ByteAs != nil { + return *x.Global_4ByteAs } return 0 } -func (x *BgpGracefulRestart) GetEnableLlgr() bool { - if x != nil && x.EnableLlgr != nil { - return *x.EnableLlgr - } - return false -} - -func (x *BgpGracefulRestart) GetStaleTime() uint32 { - if x != nil && x.StaleTime != nil { - return *x.StaleTime +func (x *BgpExtendedCommunityTransitive4OctetAsTypeRouteOrigin) GetLocal_2ByteAdmin() uint32 { + if x != nil && x.Local_2ByteAdmin != nil { + return *x.Local_2ByteAdmin } return 0 } -// Configuration for BGPv6 peer settings and routes. -type BgpV6Peer struct { +// The Transitive Four-Octet AS-Specific Extended Community is sent as type 0x02. It +// is defined in RFC 5668. +type BgpExtendedCommunityTransitive4OctetAsType struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // IPv6 address of the BGP peer for the session - // required = true - PeerAddress *string `protobuf:"bytes,1,opt,name=peer_address,json=peerAddress,proto3,oneof" json:"peer_address,omitempty"` - // Description missing in models - SegmentRouting *BgpV6SegmentRouting `protobuf:"bytes,2,opt,name=segment_routing,json=segmentRouting,proto3" json:"segment_routing,omitempty"` - // This contains the list of Ethernet Virtual Private Network (EVPN) Ethernet Segments - // (ES) Per BGP Peer for IPv6 Address Family Identifier (AFI). - // - // Each Ethernet Segment contains a list of EVPN Instances (EVIs) . - // Each EVI contains a list of Broadcast Domains. - // Each Broadcast Domain contains a list of MAC/IP Ranges. - // - // is responsible for advertising Ethernet - // Auto-discovery Route Per EVI (Type 1). - // - // is responsible for advertising Ethernet Auto-discovery Route - // Per Ethernet Segment (Type 1). - // - // is responsible for advertising - // MAC/IP Advertisement Route (Type 2). - // - // is responsible for advertising Inclusive - // Multicast Ethernet Tag Route (Type 3). - // - // Ethernet Segment is responsible for advertising Ethernet Segment Route (Type 4). - EvpnEthernetSegments []*BgpV6EthernetSegment `protobuf:"bytes,3,rep,name=evpn_ethernet_segments,json=evpnEthernetSegments,proto3" json:"evpn_ethernet_segments,omitempty"` - // The type of BGP autonomous system. External BGP is used for BGP links between two - // or more autonomous systems (ebgp). Internal BGP is used within a single autonomous - // system (ibgp). BGP property defaults are aligned with this object defined as an internal - // BGP peer. If the as_type is specified as 'ebgp' then other properties will need to - // be specified as per an external BGP peer. Specifically, for 'ebgp', 'as_set_mode' - // attribute in 'as_path' field in any Route Range should be changed from default value - // 'do_not_include_local_as' to any other value. - // required = true - AsType *BgpV6Peer_AsType_Enum `protobuf:"varint,4,opt,name=as_type,json=asType,proto3,enum=otg.BgpV6Peer_AsType_Enum,oneof" json:"as_type,omitempty"` - // Autonomous System Number (AS number or ASN) - // required = true - AsNumber *uint32 `protobuf:"varint,5,opt,name=as_number,json=asNumber,proto3,oneof" json:"as_number,omitempty"` - // The width in bytes of the as_number values. Any as_number values that exceeds the - // width MUST result in an error. - // default = AsNumberWidth.Enum.four - AsNumberWidth *BgpV6Peer_AsNumberWidth_Enum `protobuf:"varint,6,opt,name=as_number_width,json=asNumberWidth,proto3,enum=otg.BgpV6Peer_AsNumberWidth_Enum,oneof" json:"as_number_width,omitempty"` - // Description missing in models - Advanced *BgpAdvanced `protobuf:"bytes,7,opt,name=advanced,proto3" json:"advanced,omitempty"` // Description missing in models - Capability *BgpCapability `protobuf:"bytes,8,opt,name=capability,proto3" json:"capability,omitempty"` + // default = Choice.Enum.route_target_subtype + Choice *BgpExtendedCommunityTransitive4OctetAsType_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.BgpExtendedCommunityTransitive4OctetAsType_Choice_Enum,oneof" json:"choice,omitempty"` // Description missing in models - LearnedInformationFilter *BgpLearnedInformationFilter `protobuf:"bytes,9,opt,name=learned_information_filter,json=learnedInformationFilter,proto3" json:"learned_information_filter,omitempty"` - // Emulated BGPv4 route ranges. - V4Routes []*BgpV4RouteRange `protobuf:"bytes,10,rep,name=v4_routes,json=v4Routes,proto3" json:"v4_routes,omitempty"` - // Emulated BGPv6 route ranges. - V6Routes []*BgpV6RouteRange `protobuf:"bytes,11,rep,name=v6_routes,json=v6Routes,proto3" json:"v6_routes,omitempty"` - // Segment Routing Traffic Engineering (SR TE) Policies for IPv4 Address Family Identifier - // (AFI). - V4SrtePolicies []*BgpSrteV4Policy `protobuf:"bytes,12,rep,name=v4_srte_policies,json=v4SrtePolicies,proto3" json:"v4_srte_policies,omitempty"` - // Segment Routing Traffic Engineering (SR TE) Policies for IPv6 Address Family Identifier - // (AFI). - V6SrtePolicies []*BgpSrteV6Policy `protobuf:"bytes,13,rep,name=v6_srte_policies,json=v6SrtePolicies,proto3" json:"v6_srte_policies,omitempty"` - // Globally unique name of an object. It also serves as the primary key for arrays of - // objects. - // Globally unique name of an object. It also serves as the primary key for arrays of - // objects. - // required = true - Name *string `protobuf:"bytes,14,opt,name=name,proto3,oneof" json:"name,omitempty"` + RouteTargetSubtype *BgpExtendedCommunityTransitive4OctetAsTypeRouteTarget `protobuf:"bytes,2,opt,name=route_target_subtype,json=routeTargetSubtype,proto3" json:"route_target_subtype,omitempty"` // Description missing in models - GracefulRestart *BgpGracefulRestart `protobuf:"bytes,15,opt,name=graceful_restart,json=gracefulRestart,proto3" json:"graceful_restart,omitempty"` + RouteOriginSubtype *BgpExtendedCommunityTransitive4OctetAsTypeRouteOrigin `protobuf:"bytes,3,opt,name=route_origin_subtype,json=routeOriginSubtype,proto3" json:"route_origin_subtype,omitempty"` } -func (x *BgpV6Peer) Reset() { - *x = BgpV6Peer{} +func (x *BgpExtendedCommunityTransitive4OctetAsType) Reset() { + *x = BgpExtendedCommunityTransitive4OctetAsType{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[128] + mi := &file_otg_proto_msgTypes[91] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *BgpV6Peer) String() string { +func (x *BgpExtendedCommunityTransitive4OctetAsType) String() string { return protoimpl.X.MessageStringOf(x) } -func (*BgpV6Peer) ProtoMessage() {} +func (*BgpExtendedCommunityTransitive4OctetAsType) ProtoMessage() {} -func (x *BgpV6Peer) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[128] +func (x *BgpExtendedCommunityTransitive4OctetAsType) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[91] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -29146,156 +28753,200 @@ func (x *BgpV6Peer) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use BgpV6Peer.ProtoReflect.Descriptor instead. -func (*BgpV6Peer) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{128} +// Deprecated: Use BgpExtendedCommunityTransitive4OctetAsType.ProtoReflect.Descriptor instead. +func (*BgpExtendedCommunityTransitive4OctetAsType) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{91} } -func (x *BgpV6Peer) GetPeerAddress() string { - if x != nil && x.PeerAddress != nil { - return *x.PeerAddress +func (x *BgpExtendedCommunityTransitive4OctetAsType) GetChoice() BgpExtendedCommunityTransitive4OctetAsType_Choice_Enum { + if x != nil && x.Choice != nil { + return *x.Choice } - return "" + return BgpExtendedCommunityTransitive4OctetAsType_Choice_unspecified } -func (x *BgpV6Peer) GetSegmentRouting() *BgpV6SegmentRouting { +func (x *BgpExtendedCommunityTransitive4OctetAsType) GetRouteTargetSubtype() *BgpExtendedCommunityTransitive4OctetAsTypeRouteTarget { if x != nil { - return x.SegmentRouting + return x.RouteTargetSubtype } return nil } -func (x *BgpV6Peer) GetEvpnEthernetSegments() []*BgpV6EthernetSegment { +func (x *BgpExtendedCommunityTransitive4OctetAsType) GetRouteOriginSubtype() *BgpExtendedCommunityTransitive4OctetAsTypeRouteOrigin { if x != nil { - return x.EvpnEthernetSegments + return x.RouteOriginSubtype } return nil } -func (x *BgpV6Peer) GetAsType() BgpV6Peer_AsType_Enum { - if x != nil && x.AsType != nil { - return *x.AsType - } - return BgpV6Peer_AsType_unspecified +// The Color Community contains locally administrator defined 'color' value which is +// used in conjunction with Encapsulation attribute to decide whether a data packet +// can be transmitted on a certain tunnel or not. It is defined in RFC9012 and sent +// with sub-type as 0x0b. +type BgpExtendedCommunityTransitiveOpaqueTypeColor struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Two octet flag values. + // default = 0 + Flags *uint32 `protobuf:"varint,1,opt,name=flags,proto3,oneof" json:"flags,omitempty"` + // The color value is user defined and configured locally and used to determine whether + // a data packet can be transmitted on a certain tunnel or not in conjunction with the + // Encapsulation attribute. It is defined in RFC9012. + // default = 0 + Color *uint32 `protobuf:"varint,2,opt,name=color,proto3,oneof" json:"color,omitempty"` } -func (x *BgpV6Peer) GetAsNumber() uint32 { - if x != nil && x.AsNumber != nil { - return *x.AsNumber +func (x *BgpExtendedCommunityTransitiveOpaqueTypeColor) Reset() { + *x = BgpExtendedCommunityTransitiveOpaqueTypeColor{} + if protoimpl.UnsafeEnabled { + mi := &file_otg_proto_msgTypes[92] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } - return 0 } -func (x *BgpV6Peer) GetAsNumberWidth() BgpV6Peer_AsNumberWidth_Enum { - if x != nil && x.AsNumberWidth != nil { - return *x.AsNumberWidth - } - return BgpV6Peer_AsNumberWidth_unspecified +func (x *BgpExtendedCommunityTransitiveOpaqueTypeColor) String() string { + return protoimpl.X.MessageStringOf(x) } -func (x *BgpV6Peer) GetAdvanced() *BgpAdvanced { - if x != nil { - return x.Advanced +func (*BgpExtendedCommunityTransitiveOpaqueTypeColor) ProtoMessage() {} + +func (x *BgpExtendedCommunityTransitiveOpaqueTypeColor) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[92] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms } - return nil + return mi.MessageOf(x) } -func (x *BgpV6Peer) GetCapability() *BgpCapability { - if x != nil { - return x.Capability - } - return nil +// Deprecated: Use BgpExtendedCommunityTransitiveOpaqueTypeColor.ProtoReflect.Descriptor instead. +func (*BgpExtendedCommunityTransitiveOpaqueTypeColor) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{92} } -func (x *BgpV6Peer) GetLearnedInformationFilter() *BgpLearnedInformationFilter { - if x != nil { - return x.LearnedInformationFilter +func (x *BgpExtendedCommunityTransitiveOpaqueTypeColor) GetFlags() uint32 { + if x != nil && x.Flags != nil { + return *x.Flags } - return nil + return 0 } -func (x *BgpV6Peer) GetV4Routes() []*BgpV4RouteRange { - if x != nil { - return x.V4Routes +func (x *BgpExtendedCommunityTransitiveOpaqueTypeColor) GetColor() uint32 { + if x != nil && x.Color != nil { + return *x.Color } - return nil + return 0 } -func (x *BgpV6Peer) GetV6Routes() []*BgpV6RouteRange { - if x != nil { - return x.V6Routes - } - return nil +// This identifies the type of tunneling technology being signalled. It is defined in +// RFC9012 and sent with sub-type as 0x0c. +type BgpExtendedCommunityTransitiveOpaqueTypeEncapsulation struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Four bytes of reserved values. Normally set to 0 on transmit and ignored on receive. + // + // default = 0 + Reserved *uint32 `protobuf:"varint,1,opt,name=reserved,proto3,oneof" json:"reserved,omitempty"` + // Identifies the type of tunneling technology being signalled. Initially defined in + // RFC5512 and extended in RFC9012. Some of the important tunnel types include 1 L2TPv3 + // over IP [RFC9012], + // 2 GRE [RFC9012] + // 7 IP in IP [RFC9012] + // 8 VXLAN Encapsulation [RFC8365] + // 9 NVGRE Encapsulation [RFC8365] + // 10 MPLS Encapsulation [RFC8365] + // 15 SR TE Policy Type [draft-ietf-idr-segment-routing-te-policy] + // 19 Geneve Encapsulation [RFC8926] + // default = 1 + TunnelType *uint32 `protobuf:"varint,2,opt,name=tunnel_type,json=tunnelType,proto3,oneof" json:"tunnel_type,omitempty"` } -func (x *BgpV6Peer) GetV4SrtePolicies() []*BgpSrteV4Policy { - if x != nil { - return x.V4SrtePolicies +func (x *BgpExtendedCommunityTransitiveOpaqueTypeEncapsulation) Reset() { + *x = BgpExtendedCommunityTransitiveOpaqueTypeEncapsulation{} + if protoimpl.UnsafeEnabled { + mi := &file_otg_proto_msgTypes[93] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } - return nil } -func (x *BgpV6Peer) GetV6SrtePolicies() []*BgpSrteV6Policy { - if x != nil { - return x.V6SrtePolicies +func (x *BgpExtendedCommunityTransitiveOpaqueTypeEncapsulation) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*BgpExtendedCommunityTransitiveOpaqueTypeEncapsulation) ProtoMessage() {} + +func (x *BgpExtendedCommunityTransitiveOpaqueTypeEncapsulation) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[93] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms } - return nil + return mi.MessageOf(x) } -func (x *BgpV6Peer) GetName() string { - if x != nil && x.Name != nil { - return *x.Name +// Deprecated: Use BgpExtendedCommunityTransitiveOpaqueTypeEncapsulation.ProtoReflect.Descriptor instead. +func (*BgpExtendedCommunityTransitiveOpaqueTypeEncapsulation) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{93} +} + +func (x *BgpExtendedCommunityTransitiveOpaqueTypeEncapsulation) GetReserved() uint32 { + if x != nil && x.Reserved != nil { + return *x.Reserved } - return "" + return 0 } -func (x *BgpV6Peer) GetGracefulRestart() *BgpGracefulRestart { - if x != nil { - return x.GracefulRestart +func (x *BgpExtendedCommunityTransitiveOpaqueTypeEncapsulation) GetTunnelType() uint32 { + if x != nil && x.TunnelType != nil { + return *x.TunnelType } - return nil + return 0 } -// Configuration for emulated BGPv6 peers and routes on a single IPv6 interface. -type BgpV6Interface struct { +// The Transitive Opaque Extended Community is sent as type 0x03. +type BgpExtendedCommunityTransitiveOpaqueType struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // The unique name of IPv6 or Loopback IPv6 interface used as the source IP for this - // list of BGP peers. - // - // x-constraint: - // - /components/schemas/Device.Ipv6/properties/name - // - /components/schemas/Device.Ipv6Loopback/properties/name - // - // x-constraint: - // - /components/schemas/Device.Ipv6/properties/name - // - /components/schemas/Device.Ipv6Loopback/properties/name - // - // required = true - Ipv6Name *string `protobuf:"bytes,1,opt,name=ipv6_name,json=ipv6Name,proto3,oneof" json:"ipv6_name,omitempty"` - // This contains the list of BGPv6 peers configured on this interface. - Peers []*BgpV6Peer `protobuf:"bytes,2,rep,name=peers,proto3" json:"peers,omitempty"` + // Description missing in models + // default = Choice.Enum.color_subtype + Choice *BgpExtendedCommunityTransitiveOpaqueType_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.BgpExtendedCommunityTransitiveOpaqueType_Choice_Enum,oneof" json:"choice,omitempty"` + // Description missing in models + ColorSubtype *BgpExtendedCommunityTransitiveOpaqueTypeColor `protobuf:"bytes,2,opt,name=color_subtype,json=colorSubtype,proto3" json:"color_subtype,omitempty"` + // Description missing in models + EncapsulationSubtype *BgpExtendedCommunityTransitiveOpaqueTypeEncapsulation `protobuf:"bytes,3,opt,name=encapsulation_subtype,json=encapsulationSubtype,proto3" json:"encapsulation_subtype,omitempty"` } -func (x *BgpV6Interface) Reset() { - *x = BgpV6Interface{} +func (x *BgpExtendedCommunityTransitiveOpaqueType) Reset() { + *x = BgpExtendedCommunityTransitiveOpaqueType{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[129] + mi := &file_otg_proto_msgTypes[94] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *BgpV6Interface) String() string { +func (x *BgpExtendedCommunityTransitiveOpaqueType) String() string { return protoimpl.X.MessageStringOf(x) } -func (*BgpV6Interface) ProtoMessage() {} +func (*BgpExtendedCommunityTransitiveOpaqueType) ProtoMessage() {} -func (x *BgpV6Interface) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[129] +func (x *BgpExtendedCommunityTransitiveOpaqueType) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[94] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -29306,74 +28957,61 @@ func (x *BgpV6Interface) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use BgpV6Interface.ProtoReflect.Descriptor instead. -func (*BgpV6Interface) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{129} +// Deprecated: Use BgpExtendedCommunityTransitiveOpaqueType.ProtoReflect.Descriptor instead. +func (*BgpExtendedCommunityTransitiveOpaqueType) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{94} } -func (x *BgpV6Interface) GetIpv6Name() string { - if x != nil && x.Ipv6Name != nil { - return *x.Ipv6Name +func (x *BgpExtendedCommunityTransitiveOpaqueType) GetChoice() BgpExtendedCommunityTransitiveOpaqueType_Choice_Enum { + if x != nil && x.Choice != nil { + return *x.Choice } - return "" + return BgpExtendedCommunityTransitiveOpaqueType_Choice_unspecified } -func (x *BgpV6Interface) GetPeers() []*BgpV6Peer { +func (x *BgpExtendedCommunityTransitiveOpaqueType) GetColorSubtype() *BgpExtendedCommunityTransitiveOpaqueTypeColor { if x != nil { - return x.Peers + return x.ColorSubtype } return nil } -// Configuration for BGPv6 segment routing settings. -type BgpV6SegmentRouting struct { +func (x *BgpExtendedCommunityTransitiveOpaqueType) GetEncapsulationSubtype() *BgpExtendedCommunityTransitiveOpaqueTypeEncapsulation { + if x != nil { + return x.EncapsulationSubtype + } + return nil +} + +// The Router MAC EVPN Community is defined in RFC9135 and normally sent only for EVPN +// Type-2 Routes . It is sent with sub-type 0x03. +type BgpExtendedCommunityTransitiveEvpnTypeRouterMac struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // TBD - // default = False - IngressSupportsVpn *bool `protobuf:"varint,1,opt,name=ingress_supports_vpn,json=ingressSupportsVpn,proto3,oneof" json:"ingress_supports_vpn,omitempty"` - // TBD - // default = False - ReducedEncapsulation *bool `protobuf:"varint,2,opt,name=reduced_encapsulation,json=reducedEncapsulation,proto3,oneof" json:"reduced_encapsulation,omitempty"` - // TBD - // default = False - CopyTimeToLive *bool `protobuf:"varint,3,opt,name=copy_time_to_live,json=copyTimeToLive,proto3,oneof" json:"copy_time_to_live,omitempty"` - // TBD - // default = 0 - TimeToLive *uint32 `protobuf:"varint,4,opt,name=time_to_live,json=timeToLive,proto3,oneof" json:"time_to_live,omitempty"` - // TBD - // default = 0 - MaxSidsPerSrh *uint32 `protobuf:"varint,5,opt,name=max_sids_per_srh,json=maxSidsPerSrh,proto3,oneof" json:"max_sids_per_srh,omitempty"` - // TBD - // default = False - AutoGenerateSegmentLeftValue *bool `protobuf:"varint,6,opt,name=auto_generate_segment_left_value,json=autoGenerateSegmentLeftValue,proto3,oneof" json:"auto_generate_segment_left_value,omitempty"` - // TBD - // default = 0 - SegmentLeftValue *uint32 `protobuf:"varint,7,opt,name=segment_left_value,json=segmentLeftValue,proto3,oneof" json:"segment_left_value,omitempty"` - // TBD - // default = False - AdvertiseSrTePolicy *bool `protobuf:"varint,8,opt,name=advertise_sr_te_policy,json=advertiseSrTePolicy,proto3,oneof" json:"advertise_sr_te_policy,omitempty"` + // MAC Address of the PE Router. + // default = 0:0:0:0:0:0 + RouterMac *string `protobuf:"bytes,1,opt,name=router_mac,json=routerMac,proto3,oneof" json:"router_mac,omitempty"` } -func (x *BgpV6SegmentRouting) Reset() { - *x = BgpV6SegmentRouting{} +func (x *BgpExtendedCommunityTransitiveEvpnTypeRouterMac) Reset() { + *x = BgpExtendedCommunityTransitiveEvpnTypeRouterMac{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[130] + mi := &file_otg_proto_msgTypes[95] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *BgpV6SegmentRouting) String() string { +func (x *BgpExtendedCommunityTransitiveEvpnTypeRouterMac) String() string { return protoimpl.X.MessageStringOf(x) } -func (*BgpV6SegmentRouting) ProtoMessage() {} +func (*BgpExtendedCommunityTransitiveEvpnTypeRouterMac) ProtoMessage() {} -func (x *BgpV6SegmentRouting) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[130] +func (x *BgpExtendedCommunityTransitiveEvpnTypeRouterMac) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[95] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -29384,143 +29022,112 @@ func (x *BgpV6SegmentRouting) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use BgpV6SegmentRouting.ProtoReflect.Descriptor instead. -func (*BgpV6SegmentRouting) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{130} +// Deprecated: Use BgpExtendedCommunityTransitiveEvpnTypeRouterMac.ProtoReflect.Descriptor instead. +func (*BgpExtendedCommunityTransitiveEvpnTypeRouterMac) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{95} } -func (x *BgpV6SegmentRouting) GetIngressSupportsVpn() bool { - if x != nil && x.IngressSupportsVpn != nil { - return *x.IngressSupportsVpn +func (x *BgpExtendedCommunityTransitiveEvpnTypeRouterMac) GetRouterMac() string { + if x != nil && x.RouterMac != nil { + return *x.RouterMac } - return false + return "" } -func (x *BgpV6SegmentRouting) GetReducedEncapsulation() bool { - if x != nil && x.ReducedEncapsulation != nil { - return *x.ReducedEncapsulation - } - return false +// The Transitive EVPN Extended Community is sent as type 0x06 . +type BgpExtendedCommunityTransitiveEvpnType struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Description missing in models + // default = Choice.Enum.router_mac_subtype + Choice *BgpExtendedCommunityTransitiveEvpnType_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.BgpExtendedCommunityTransitiveEvpnType_Choice_Enum,oneof" json:"choice,omitempty"` + // Description missing in models + RouterMacSubtype *BgpExtendedCommunityTransitiveEvpnTypeRouterMac `protobuf:"bytes,2,opt,name=router_mac_subtype,json=routerMacSubtype,proto3" json:"router_mac_subtype,omitempty"` } -func (x *BgpV6SegmentRouting) GetCopyTimeToLive() bool { - if x != nil && x.CopyTimeToLive != nil { - return *x.CopyTimeToLive +func (x *BgpExtendedCommunityTransitiveEvpnType) Reset() { + *x = BgpExtendedCommunityTransitiveEvpnType{} + if protoimpl.UnsafeEnabled { + mi := &file_otg_proto_msgTypes[96] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } - return false } -func (x *BgpV6SegmentRouting) GetTimeToLive() uint32 { - if x != nil && x.TimeToLive != nil { - return *x.TimeToLive - } - return 0 +func (x *BgpExtendedCommunityTransitiveEvpnType) String() string { + return protoimpl.X.MessageStringOf(x) } -func (x *BgpV6SegmentRouting) GetMaxSidsPerSrh() uint32 { - if x != nil && x.MaxSidsPerSrh != nil { - return *x.MaxSidsPerSrh +func (*BgpExtendedCommunityTransitiveEvpnType) ProtoMessage() {} + +func (x *BgpExtendedCommunityTransitiveEvpnType) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[96] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms } - return 0 + return mi.MessageOf(x) } -func (x *BgpV6SegmentRouting) GetAutoGenerateSegmentLeftValue() bool { - if x != nil && x.AutoGenerateSegmentLeftValue != nil { - return *x.AutoGenerateSegmentLeftValue - } - return false +// Deprecated: Use BgpExtendedCommunityTransitiveEvpnType.ProtoReflect.Descriptor instead. +func (*BgpExtendedCommunityTransitiveEvpnType) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{96} } -func (x *BgpV6SegmentRouting) GetSegmentLeftValue() uint32 { - if x != nil && x.SegmentLeftValue != nil { - return *x.SegmentLeftValue +func (x *BgpExtendedCommunityTransitiveEvpnType) GetChoice() BgpExtendedCommunityTransitiveEvpnType_Choice_Enum { + if x != nil && x.Choice != nil { + return *x.Choice } - return 0 + return BgpExtendedCommunityTransitiveEvpnType_Choice_unspecified } -func (x *BgpV6SegmentRouting) GetAdvertiseSrTePolicy() bool { - if x != nil && x.AdvertiseSrTePolicy != nil { - return *x.AdvertiseSrTePolicy +func (x *BgpExtendedCommunityTransitiveEvpnType) GetRouterMacSubtype() *BgpExtendedCommunityTransitiveEvpnTypeRouterMac { + if x != nil { + return x.RouterMacSubtype } - return false + return nil } -// Configuration for BGP Ethernet Segment ranges. Advertises following routes - -// -// Type 4 - Ethernet Segment Route -type BgpV6EthernetSegment struct { +// The Link Bandwidth Extended Community attribute is defined in draft-ietf-idr-link-bandwidth. +// It is sent with sub-type as 0x04. +type BgpExtendedCommunityNonTransitive2OctetAsTypeLinkBandwidth struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Designated Forwarder (DF) election configuration. - DfElection *BgpEthernetSegmentDfElection `protobuf:"bytes,1,opt,name=df_election,json=dfElection,proto3" json:"df_election,omitempty"` - // This contains the list of EVIs. - Evis []*BgpV6EvpnEvis `protobuf:"bytes,2,rep,name=evis,proto3" json:"evis,omitempty"` - // 10-octet Ethernet Segment Identifier (ESI) Example - For multi-home scenario nonZero - // ESI is '10000000000000000000' . - // default = 00000000000000000000 - Esi *string `protobuf:"bytes,3,opt,name=esi,proto3,oneof" json:"esi,omitempty"` - // Single Active or All Active mode Redundancy mode selection for Multi-home. - // default = ActiveMode.Enum.all_active - ActiveMode *BgpV6EthernetSegment_ActiveMode_Enum `protobuf:"varint,4,opt,name=active_mode,json=activeMode,proto3,enum=otg.BgpV6EthernetSegment_ActiveMode_Enum,oneof" json:"active_mode,omitempty"` - // The label value to be advertised as ESI Label in ESI Label Extended Community. This - // is included in Ethernet Auto-discovery per ES Routes advertised by a router. + // The value of the Global Administrator subfield should represent the Autonomous System + // of the router that attaches the Link Bandwidth Community. If four octet AS numbering + // scheme is used, AS_TRANS (23456) should be used. + // default = 100 + Global_2ByteAs *uint32 `protobuf:"varint,1,opt,name=global_2byte_as,json=global2byteAs,proto3,oneof" json:"global_2byte_as,omitempty"` + // Bandwidth of the link in bytes per second. ( 1 Kbps is 1000 bytes per second and + // 1 Mbps is 1000 Kbps per second ) // default = 0 - EsiLabel *uint32 `protobuf:"varint,5,opt,name=esi_label,json=esiLabel,proto3,oneof" json:"esi_label,omitempty"` - // Description missing in models - Advanced *BgpRouteAdvanced `protobuf:"bytes,6,opt,name=advanced,proto3" json:"advanced,omitempty"` - // Optional community settings. - Communities []*BgpCommunity `protobuf:"bytes,7,rep,name=communities,proto3" json:"communities,omitempty"` - // Optional Extended Community settings. The Extended Communities Attribute is a transitive - // optional BGP attribute, with the Type Code 16. Community and Extended Communities - // attributes are utilized to trigger routing decisions, such as acceptance, rejection, - // preference, or redistribution. An extended community is an 8-Bytes value. It is - // divided into two main parts. The first 2 Bytes of the community encode a type and - // sub-type fields and the last 6 Bytes carry a unique set of data in a format defined - // by the type and sub-type field. Extended communities provide a larger range for - // grouping or categorizing communities. When type is administrator_as_2octet or administrator_as_4octet, - // the valid sub types are route target and origin. The valid value for administrator_as_2octet - // and administrator_as_4octet type is either two byte AS followed by four byte local - // administrator id or four byte AS followed by two byte local administrator id. When - // type is administrator_ipv4_address the valid sub types are route target and origin. - // The valid value for administrator_ipv4_address is a four byte IPv4 address followed - // by a two byte local administrator id. When type is opaque, valid sub types are color - // and encapsulation. When sub type is color, first two bytes of the value field contain - // flags and last four bytes contains the value of the color. When sub type is encapsulation - // the first four bytes of value field are reserved and last two bytes carries the tunnel - // type from IANA's ETHER TYPES registry e.g IPv4 (protocol type = 0x0800), IPv6 (protocol - // type = 0x86dd), and MPLS (protocol type = 0x8847). When type is administrator_as_2octet_link_bandwidth - // the valid sub type is extended_bandwidth. The first two bytes of the value field - // contains the AS number and the last four bytes contains the bandwidth in IEEE floating - // point format. When type is evpn the valid subtype is mac_address. In the value field - // the low-order bit of the first byte(Flags) is defined as the Sticky/static flag and - // may be set to 1, indicating the MAC address is static and cannot move. The second - // byte is reserved and the last four bytes contain the sequence number which is used - // to ensure that PEs retain the correct MAC/IP Advertisement route when multiple updates - // occur for the same MAC address. - ExtCommunities []*BgpExtCommunity `protobuf:"bytes,8,rep,name=ext_communities,json=extCommunities,proto3" json:"ext_communities,omitempty"` - // Optional AS PATH settings. - AsPath *BgpAsPath `protobuf:"bytes,9,opt,name=as_path,json=asPath,proto3" json:"as_path,omitempty"` + Bandwidth *float32 `protobuf:"fixed32,2,opt,name=bandwidth,proto3,oneof" json:"bandwidth,omitempty"` } -func (x *BgpV6EthernetSegment) Reset() { - *x = BgpV6EthernetSegment{} +func (x *BgpExtendedCommunityNonTransitive2OctetAsTypeLinkBandwidth) Reset() { + *x = BgpExtendedCommunityNonTransitive2OctetAsTypeLinkBandwidth{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[131] + mi := &file_otg_proto_msgTypes[97] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *BgpV6EthernetSegment) String() string { +func (x *BgpExtendedCommunityNonTransitive2OctetAsTypeLinkBandwidth) String() string { return protoimpl.X.MessageStringOf(x) } -func (*BgpV6EthernetSegment) ProtoMessage() {} +func (*BgpExtendedCommunityNonTransitive2OctetAsTypeLinkBandwidth) ProtoMessage() {} -func (x *BgpV6EthernetSegment) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[131] +func (x *BgpExtendedCommunityNonTransitive2OctetAsTypeLinkBandwidth) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[97] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -29531,107 +29138,123 @@ func (x *BgpV6EthernetSegment) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use BgpV6EthernetSegment.ProtoReflect.Descriptor instead. -func (*BgpV6EthernetSegment) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{131} +// Deprecated: Use BgpExtendedCommunityNonTransitive2OctetAsTypeLinkBandwidth.ProtoReflect.Descriptor instead. +func (*BgpExtendedCommunityNonTransitive2OctetAsTypeLinkBandwidth) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{97} } -func (x *BgpV6EthernetSegment) GetDfElection() *BgpEthernetSegmentDfElection { - if x != nil { - return x.DfElection +func (x *BgpExtendedCommunityNonTransitive2OctetAsTypeLinkBandwidth) GetGlobal_2ByteAs() uint32 { + if x != nil && x.Global_2ByteAs != nil { + return *x.Global_2ByteAs } - return nil + return 0 } -func (x *BgpV6EthernetSegment) GetEvis() []*BgpV6EvpnEvis { - if x != nil { - return x.Evis +func (x *BgpExtendedCommunityNonTransitive2OctetAsTypeLinkBandwidth) GetBandwidth() float32 { + if x != nil && x.Bandwidth != nil { + return *x.Bandwidth } - return nil + return 0 } -func (x *BgpV6EthernetSegment) GetEsi() string { - if x != nil && x.Esi != nil { - return *x.Esi - } - return "" +// The Non-Transitive Two-Octet AS-Specific Extended Community is sent as type 0x40. +type BgpExtendedCommunityNonTransitive2OctetAsType struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Description missing in models + // default = Choice.Enum.link_bandwidth_subtype + Choice *BgpExtendedCommunityNonTransitive2OctetAsType_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.BgpExtendedCommunityNonTransitive2OctetAsType_Choice_Enum,oneof" json:"choice,omitempty"` + // Description missing in models + LinkBandwidthSubtype *BgpExtendedCommunityNonTransitive2OctetAsTypeLinkBandwidth `protobuf:"bytes,2,opt,name=link_bandwidth_subtype,json=linkBandwidthSubtype,proto3" json:"link_bandwidth_subtype,omitempty"` } -func (x *BgpV6EthernetSegment) GetActiveMode() BgpV6EthernetSegment_ActiveMode_Enum { - if x != nil && x.ActiveMode != nil { - return *x.ActiveMode +func (x *BgpExtendedCommunityNonTransitive2OctetAsType) Reset() { + *x = BgpExtendedCommunityNonTransitive2OctetAsType{} + if protoimpl.UnsafeEnabled { + mi := &file_otg_proto_msgTypes[98] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } - return BgpV6EthernetSegment_ActiveMode_unspecified } -func (x *BgpV6EthernetSegment) GetEsiLabel() uint32 { - if x != nil && x.EsiLabel != nil { - return *x.EsiLabel - } - return 0 +func (x *BgpExtendedCommunityNonTransitive2OctetAsType) String() string { + return protoimpl.X.MessageStringOf(x) } -func (x *BgpV6EthernetSegment) GetAdvanced() *BgpRouteAdvanced { - if x != nil { - return x.Advanced +func (*BgpExtendedCommunityNonTransitive2OctetAsType) ProtoMessage() {} + +func (x *BgpExtendedCommunityNonTransitive2OctetAsType) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[98] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms } - return nil + return mi.MessageOf(x) } -func (x *BgpV6EthernetSegment) GetCommunities() []*BgpCommunity { - if x != nil { - return x.Communities - } - return nil +// Deprecated: Use BgpExtendedCommunityNonTransitive2OctetAsType.ProtoReflect.Descriptor instead. +func (*BgpExtendedCommunityNonTransitive2OctetAsType) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{98} } -func (x *BgpV6EthernetSegment) GetExtCommunities() []*BgpExtCommunity { - if x != nil { - return x.ExtCommunities +func (x *BgpExtendedCommunityNonTransitive2OctetAsType) GetChoice() BgpExtendedCommunityNonTransitive2OctetAsType_Choice_Enum { + if x != nil && x.Choice != nil { + return *x.Choice } - return nil + return BgpExtendedCommunityNonTransitive2OctetAsType_Choice_unspecified } -func (x *BgpV6EthernetSegment) GetAsPath() *BgpAsPath { +func (x *BgpExtendedCommunityNonTransitive2OctetAsType) GetLinkBandwidthSubtype() *BgpExtendedCommunityNonTransitive2OctetAsTypeLinkBandwidth { if x != nil { - return x.AsPath + return x.LinkBandwidthSubtype } return nil } -// This contains a list of different flavors of EVPN. -// For example EVPN over VXLAN or EVPN over MPLS etc to be configured per Ethernet segment. -// -// Need to instantiate correct type of EVPN instance as per requirement. -type BgpV6EvpnEvis struct { +// Add a custom Extended Community with a combination of types , sub-types and values +// not explicitly specified above or not defined yet. +type BgpExtendedCommunityCustomType struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Description missing in models - // default = Choice.Enum.evi_vxlan - Choice *BgpV6EvpnEvis_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.BgpV6EvpnEvis_Choice_Enum,oneof" json:"choice,omitempty"` - // EVPN VXLAN instance to be configured per Ethernet Segment. - EviVxlan *BgpV6EviVxlan `protobuf:"bytes,2,opt,name=evi_vxlan,json=eviVxlan,proto3" json:"evi_vxlan,omitempty"` + // The type to be set in the Extended Community attribute. Accepts hexadecimal input + // upto ff . + // default = 00 + CommunityType *string `protobuf:"bytes,1,opt,name=community_type,json=communityType,proto3,oneof" json:"community_type,omitempty"` + // The sub-type to be set in the Extended Community attribute. For certain types with + // no sub-type this byte can also be used as part of an extended value field. Accepts + // hexadecimal input upto ff. + // default = 00 + CommunitySubtype *string `protobuf:"bytes,2,opt,name=community_subtype,json=communitySubtype,proto3,oneof" json:"community_subtype,omitempty"` + // 6 byte hex value to be carried in the last 6 bytes of the Extended Community. Accepts + // hexadecimal input upto ffffffffffff. + // default = 000000000000 + Value *string `protobuf:"bytes,3,opt,name=value,proto3,oneof" json:"value,omitempty"` } -func (x *BgpV6EvpnEvis) Reset() { - *x = BgpV6EvpnEvis{} +func (x *BgpExtendedCommunityCustomType) Reset() { + *x = BgpExtendedCommunityCustomType{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[132] + mi := &file_otg_proto_msgTypes[99] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *BgpV6EvpnEvis) String() string { +func (x *BgpExtendedCommunityCustomType) String() string { return protoimpl.X.MessageStringOf(x) } -func (*BgpV6EvpnEvis) ProtoMessage() {} +func (*BgpExtendedCommunityCustomType) ProtoMessage() {} -func (x *BgpV6EvpnEvis) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[132] +func (x *BgpExtendedCommunityCustomType) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[99] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -29642,66 +29265,73 @@ func (x *BgpV6EvpnEvis) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use BgpV6EvpnEvis.ProtoReflect.Descriptor instead. -func (*BgpV6EvpnEvis) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{132} +// Deprecated: Use BgpExtendedCommunityCustomType.ProtoReflect.Descriptor instead. +func (*BgpExtendedCommunityCustomType) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{99} } -func (x *BgpV6EvpnEvis) GetChoice() BgpV6EvpnEvis_Choice_Enum { - if x != nil && x.Choice != nil { - return *x.Choice +func (x *BgpExtendedCommunityCustomType) GetCommunityType() string { + if x != nil && x.CommunityType != nil { + return *x.CommunityType } - return BgpV6EvpnEvis_Choice_unspecified + return "" } -func (x *BgpV6EvpnEvis) GetEviVxlan() *BgpV6EviVxlan { - if x != nil { - return x.EviVxlan +func (x *BgpExtendedCommunityCustomType) GetCommunitySubtype() string { + if x != nil && x.CommunitySubtype != nil { + return *x.CommunitySubtype } - return nil + return "" } -// Configuration for BGP EVPN EVI. Advertises following routes - -// -// # Type 3 - Inclusive Multicast Ethernet Tag Route -// -// Type 1 - Ethernet Auto-discovery Route (Per EVI) -// -// Type 1 - Ethernet Auto-discovery Route (Per ES) -type BgpV6EviVxlan struct { +func (x *BgpExtendedCommunityCustomType) GetValue() string { + if x != nil && x.Value != nil { + return *x.Value + } + return "" +} + +// Emulated BGPv6 route range. +type BgpV6RouteRange struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // This contains the list of Broadcast Domains to be configured per EVI. - BroadcastDomains []*BgpV6EviVxlanBroadcastDomain `protobuf:"bytes,1,rep,name=broadcast_domains,json=broadcastDomains,proto3" json:"broadcast_domains,omitempty"` - // This model only supports Ingress Replication - // default = ReplicationType.Enum.ingress_replication - ReplicationType *BgpV6EviVxlan_ReplicationType_Enum `protobuf:"varint,2,opt,name=replication_type,json=replicationType,proto3,enum=otg.BgpV6EviVxlan_ReplicationType_Enum,oneof" json:"replication_type,omitempty"` - // Downstream assigned VNI to be carried as Part of P-Multicast Service Interface Tunnel - // attribute (PMSI Tunnel Attribute) in Type 3 Inclusive Multicast Ethernet Tag Route. - // default = 16 - PmsiLabel *uint32 `protobuf:"varint,3,opt,name=pmsi_label,json=pmsiLabel,proto3,oneof" json:"pmsi_label,omitempty"` - // The Auto-discovery Route label (AD label) value, which gets advertised in the Ethernet - // Auto-discovery Route per - // default = 0 - AdLabel *uint32 `protobuf:"varint,4,opt,name=ad_label,json=adLabel,proto3,oneof" json:"ad_label,omitempty"` - // Colon separated Extended Community value of 6 Bytes - AS number: Value identifying - // an EVI. Example - for the as_2octet 60005:100. - RouteDistinguisher *BgpRouteDistinguisher `protobuf:"bytes,5,opt,name=route_distinguisher,json=routeDistinguisher,proto3" json:"route_distinguisher,omitempty"` - // List of Layer 2 Virtual Network Identifier (L2VNI) export targets associated with - // this EVI. - RouteTargetExport []*BgpRouteTarget `protobuf:"bytes,6,rep,name=route_target_export,json=routeTargetExport,proto3" json:"route_target_export,omitempty"` - // List of L2VNI import targets associated with this EVI. - RouteTargetImport []*BgpRouteTarget `protobuf:"bytes,7,rep,name=route_target_import,json=routeTargetImport,proto3" json:"route_target_import,omitempty"` - // List of Layer 3 Virtual Network Identifier (L3VNI) Export Route Targets. - L3RouteTargetExport []*BgpRouteTarget `protobuf:"bytes,8,rep,name=l3_route_target_export,json=l3RouteTargetExport,proto3" json:"l3_route_target_export,omitempty"` - // List of L3VNI Import Route Targets. - L3RouteTargetImport []*BgpRouteTarget `protobuf:"bytes,9,rep,name=l3_route_target_import,json=l3RouteTargetImport,proto3" json:"l3_route_target_import,omitempty"` + // A list of group of IPv6 route addresses. + Addresses []*V6RouteAddress `protobuf:"bytes,1,rep,name=addresses,proto3" json:"addresses,omitempty"` + // Specify the NextHop in MP REACH NLRI. The mode for setting the IP address of the + // NextHop in the MP REACH NLRI can be one of the following: + // Local IP: Automatically fills the Nexthop with the Local IP of the BGP + // peer. + // If BGP peer is of type IPv6, Nexthop Encoding capability should be enabled. + // Manual: Override the Nexthop with any arbitrary IPv4/IPv6 address. + // default = NextHopMode.Enum.local_ip + NextHopMode *BgpV6RouteRange_NextHopMode_Enum `protobuf:"varint,2,opt,name=next_hop_mode,json=nextHopMode,proto3,enum=otg.BgpV6RouteRange_NextHopMode_Enum,oneof" json:"next_hop_mode,omitempty"` + // If the Nexthop Mode is Manual, it sets the type of the NextHop IP address. + // default = NextHopAddressType.Enum.ipv6 + NextHopAddressType *BgpV6RouteRange_NextHopAddressType_Enum `protobuf:"varint,3,opt,name=next_hop_address_type,json=nextHopAddressType,proto3,enum=otg.BgpV6RouteRange_NextHopAddressType_Enum,oneof" json:"next_hop_address_type,omitempty"` + // The IPv4 address of the next hop if the Nexthop Mode is manual and the Nexthop type + // is IPv4. If BGP peer is of type IPv6, Nexthop Encoding capability should be enabled. + // default = 0.0.0.0 + NextHopIpv4Address *string `protobuf:"bytes,4,opt,name=next_hop_ipv4_address,json=nextHopIpv4Address,proto3,oneof" json:"next_hop_ipv4_address,omitempty"` + // The IPv6 address of the next hop if the Nexthop Mode is manual and the Nexthop type + // is IPv6. + // default = ::0 + NextHopIpv6Address *string `protobuf:"bytes,5,opt,name=next_hop_ipv6_address,json=nextHopIpv6Address,proto3,oneof" json:"next_hop_ipv6_address,omitempty"` // Description missing in models - Advanced *BgpRouteAdvanced `protobuf:"bytes,10,opt,name=advanced,proto3" json:"advanced,omitempty"` + Advanced *BgpRouteAdvanced `protobuf:"bytes,6,opt,name=advanced,proto3" json:"advanced,omitempty"` // Optional community settings. - Communities []*BgpCommunity `protobuf:"bytes,11,rep,name=communities,proto3" json:"communities,omitempty"` + Communities []*BgpCommunity `protobuf:"bytes,7,rep,name=communities,proto3" json:"communities,omitempty"` + // Description missing in models + AsPath *BgpAsPath `protobuf:"bytes,8,opt,name=as_path,json=asPath,proto3" json:"as_path,omitempty"` + // Description missing in models + AddPath *BgpAddPath `protobuf:"bytes,9,opt,name=add_path,json=addPath,proto3" json:"add_path,omitempty"` + // Globally unique name of an object. It also serves as the primary key for arrays of + // objects. + // required = true + Name *string `protobuf:"bytes,10,opt,name=name,proto3,oneof" json:"name,omitempty"` + // Deprecated: This property is deprecated in favor of property extended_communities + // // Optional Extended Community settings. The Extended Communities Attribute is a transitive // optional BGP attribute, with the Type Code 16. Community and Extended Communities // attributes are utilized to trigger routing decisions, such as acceptance, rejection, @@ -29728,29 +29358,37 @@ type BgpV6EviVxlan struct { // may be set to 1, indicating the MAC address is static and cannot move. The second // byte is reserved and the last four bytes contain the sequence number which is used // to ensure that PEs retain the correct MAC/IP Advertisement route when multiple updates - // occur for the same MAC address. - ExtCommunities []*BgpExtCommunity `protobuf:"bytes,12,rep,name=ext_communities,json=extCommunities,proto3" json:"ext_communities,omitempty"` - // Optional AS PATH settings. - AsPath *BgpAsPath `protobuf:"bytes,13,opt,name=as_path,json=asPath,proto3" json:"as_path,omitempty"` + // occur for the same MAC address. Note evpn type is defined mainly for use with evpn + // route updates and not for IPv4 and IPv6 route updates. + ExtCommunities []*BgpExtCommunity `protobuf:"bytes,11,rep,name=ext_communities,json=extCommunities,proto3" json:"ext_communities,omitempty"` + // Optional Extended Community settings. The Extended Communities Attribute is a transitive + // optional BGP attribute, with the Type Code 16. Community and Extended Communities + // attributes are utilized to trigger routing decisions, such as acceptance, rejection, + // preference, or redistribution. An extended community is an eight byte value. It + // is divided into two main parts. The first two bytes of the community encode a type + // and sub-type fields and the last six bytes carry a unique set of data in a format + // defined by the type and sub-type field. Extended communities provide a larger range + // for grouping or categorizing communities. + ExtendedCommunities []*BgpExtendedCommunity `protobuf:"bytes,12,rep,name=extended_communities,json=extendedCommunities,proto3" json:"extended_communities,omitempty"` } -func (x *BgpV6EviVxlan) Reset() { - *x = BgpV6EviVxlan{} +func (x *BgpV6RouteRange) Reset() { + *x = BgpV6RouteRange{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[133] + mi := &file_otg_proto_msgTypes[100] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *BgpV6EviVxlan) String() string { +func (x *BgpV6RouteRange) String() string { return protoimpl.X.MessageStringOf(x) } -func (*BgpV6EviVxlan) ProtoMessage() {} +func (*BgpV6RouteRange) ProtoMessage() {} -func (x *BgpV6EviVxlan) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[133] +func (x *BgpV6RouteRange) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[100] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -29761,138 +29399,200 @@ func (x *BgpV6EviVxlan) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use BgpV6EviVxlan.ProtoReflect.Descriptor instead. -func (*BgpV6EviVxlan) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{133} +// Deprecated: Use BgpV6RouteRange.ProtoReflect.Descriptor instead. +func (*BgpV6RouteRange) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{100} } -func (x *BgpV6EviVxlan) GetBroadcastDomains() []*BgpV6EviVxlanBroadcastDomain { +func (x *BgpV6RouteRange) GetAddresses() []*V6RouteAddress { if x != nil { - return x.BroadcastDomains + return x.Addresses } return nil } -func (x *BgpV6EviVxlan) GetReplicationType() BgpV6EviVxlan_ReplicationType_Enum { - if x != nil && x.ReplicationType != nil { - return *x.ReplicationType - } - return BgpV6EviVxlan_ReplicationType_unspecified -} - -func (x *BgpV6EviVxlan) GetPmsiLabel() uint32 { - if x != nil && x.PmsiLabel != nil { - return *x.PmsiLabel +func (x *BgpV6RouteRange) GetNextHopMode() BgpV6RouteRange_NextHopMode_Enum { + if x != nil && x.NextHopMode != nil { + return *x.NextHopMode } - return 0 + return BgpV6RouteRange_NextHopMode_unspecified } -func (x *BgpV6EviVxlan) GetAdLabel() uint32 { - if x != nil && x.AdLabel != nil { - return *x.AdLabel +func (x *BgpV6RouteRange) GetNextHopAddressType() BgpV6RouteRange_NextHopAddressType_Enum { + if x != nil && x.NextHopAddressType != nil { + return *x.NextHopAddressType } - return 0 + return BgpV6RouteRange_NextHopAddressType_unspecified } -func (x *BgpV6EviVxlan) GetRouteDistinguisher() *BgpRouteDistinguisher { - if x != nil { - return x.RouteDistinguisher +func (x *BgpV6RouteRange) GetNextHopIpv4Address() string { + if x != nil && x.NextHopIpv4Address != nil { + return *x.NextHopIpv4Address } - return nil + return "" } -func (x *BgpV6EviVxlan) GetRouteTargetExport() []*BgpRouteTarget { - if x != nil { - return x.RouteTargetExport +func (x *BgpV6RouteRange) GetNextHopIpv6Address() string { + if x != nil && x.NextHopIpv6Address != nil { + return *x.NextHopIpv6Address } - return nil + return "" } -func (x *BgpV6EviVxlan) GetRouteTargetImport() []*BgpRouteTarget { +func (x *BgpV6RouteRange) GetAdvanced() *BgpRouteAdvanced { if x != nil { - return x.RouteTargetImport + return x.Advanced } return nil } -func (x *BgpV6EviVxlan) GetL3RouteTargetExport() []*BgpRouteTarget { +func (x *BgpV6RouteRange) GetCommunities() []*BgpCommunity { if x != nil { - return x.L3RouteTargetExport + return x.Communities } return nil } -func (x *BgpV6EviVxlan) GetL3RouteTargetImport() []*BgpRouteTarget { +func (x *BgpV6RouteRange) GetAsPath() *BgpAsPath { if x != nil { - return x.L3RouteTargetImport + return x.AsPath } return nil } -func (x *BgpV6EviVxlan) GetAdvanced() *BgpRouteAdvanced { +func (x *BgpV6RouteRange) GetAddPath() *BgpAddPath { if x != nil { - return x.Advanced + return x.AddPath } return nil } -func (x *BgpV6EviVxlan) GetCommunities() []*BgpCommunity { - if x != nil { - return x.Communities +func (x *BgpV6RouteRange) GetName() string { + if x != nil && x.Name != nil { + return *x.Name } - return nil + return "" } -func (x *BgpV6EviVxlan) GetExtCommunities() []*BgpExtCommunity { +func (x *BgpV6RouteRange) GetExtCommunities() []*BgpExtCommunity { if x != nil { return x.ExtCommunities } return nil } -func (x *BgpV6EviVxlan) GetAsPath() *BgpAsPath { +func (x *BgpV6RouteRange) GetExtendedCommunities() []*BgpExtendedCommunity { if x != nil { - return x.AsPath + return x.ExtendedCommunities } return nil } -// Configuration for Broadcast Domains per EVI. -type BgpV6EviVxlanBroadcastDomain struct { +// Configuration for BGP Segment Routing Traffic Engineering(SRTE) +// policy. +type BgpSrteV4Policy struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // This contains the list of Customer MAC/IP Ranges to be configured per Broadcast Domain. - // - // Advertises following route - - // Type 2 - MAC/IP Advertisement Route. - CmacIpRange []*BgpCMacIpRange `protobuf:"bytes,1,rep,name=cmac_ip_range,json=cmacIpRange,proto3" json:"cmac_ip_range,omitempty"` - // The Ethernet Tag ID of the Broadcast Domain. - // default = 0 - EthernetTagId *uint32 `protobuf:"varint,2,opt,name=ethernet_tag_id,json=ethernetTagId,proto3,oneof" json:"ethernet_tag_id,omitempty"` - // VLAN-Aware service to be enabled or disabled. - // default = False - VlanAwareService *bool `protobuf:"varint,3,opt,name=vlan_aware_service,json=vlanAwareService,proto3,oneof" json:"vlan_aware_service,omitempty"` + // 4-octet value uniquely identifying the policy in the context of (color, endpoint) + // tuple. It is used by the SR Policy originator to make unique (from an NLRI perspective) + // both for multiple candidate paths of the same SR Policy as well as candidate paths + // of different SR Policies (i.e. with different segment list) with the same Color + // and Endpoint but meant for different head-ends. + // default = 1 + Distinguisher *uint32 `protobuf:"varint,1,opt,name=distinguisher,proto3,oneof" json:"distinguisher,omitempty"` + // Policy color is used to match the color of the destination prefixes to steer traffic + // into the SR Policy. + // default = 100 + Color *uint32 `protobuf:"varint,2,opt,name=color,proto3,oneof" json:"color,omitempty"` + // Specifies a single node or a set of nodes (e.g. an anycast address). It is selected + // on the basis of the SR Policy type (AFI). + // required = true + Ipv4Endpoint *string `protobuf:"bytes,3,opt,name=ipv4_endpoint,json=ipv4Endpoint,proto3,oneof" json:"ipv4_endpoint,omitempty"` + // Mode for choosing the NextHop in MP REACH NLRI. Available modes are : Local IP: Automatically + // fills the Nexthop with the Local IP of the BGP peer. For IPv6 BGP peer the Nexthop + // Encoding capability should be enabled. Manual: Override the Nexthop with any arbitrary + // IPv4/IPv6 address. + // default = NextHopMode.Enum.local_ip + NextHopMode *BgpSrteV4Policy_NextHopMode_Enum `protobuf:"varint,4,opt,name=next_hop_mode,json=nextHopMode,proto3,enum=otg.BgpSrteV4Policy_NextHopMode_Enum,oneof" json:"next_hop_mode,omitempty"` + // Type of next hop IP address to be used when 'next_hop_mode' is set to 'manual'. + // default = NextHopAddressType.Enum.ipv4 + NextHopAddressType *BgpSrteV4Policy_NextHopAddressType_Enum `protobuf:"varint,5,opt,name=next_hop_address_type,json=nextHopAddressType,proto3,enum=otg.BgpSrteV4Policy_NextHopAddressType_Enum,oneof" json:"next_hop_address_type,omitempty"` + // The IPv4 address of the next hop if the Nexthop type 'next_hop_mode' is 'manual' + // and the Nexthop type 'next_hop_address_type' is IPv4. If BGP peer is of type IPv6, + // Nexthop Encoding capability extended_next_hop_encoding should be enabled. + NextHopIpv4Address *string `protobuf:"bytes,6,opt,name=next_hop_ipv4_address,json=nextHopIpv4Address,proto3,oneof" json:"next_hop_ipv4_address,omitempty"` + // The IPv6 address of the next hop if the Nexthop Mode 'next_hop_address_type' is 'manual' + // and the Nexthop type 'next_hop_address_type' is IPv6. + NextHopIpv6Address *string `protobuf:"bytes,7,opt,name=next_hop_ipv6_address,json=nextHopIpv6Address,proto3,oneof" json:"next_hop_ipv6_address,omitempty"` + // Description missing in models + Advanced *BgpRouteAdvanced `protobuf:"bytes,8,opt,name=advanced,proto3" json:"advanced,omitempty"` + // Description missing in models + AddPath *BgpAddPath `protobuf:"bytes,9,opt,name=add_path,json=addPath,proto3" json:"add_path,omitempty"` + // Description missing in models + AsPath *BgpAsPath `protobuf:"bytes,10,opt,name=as_path,json=asPath,proto3" json:"as_path,omitempty"` + // Optional Community settings. + Communities []*BgpCommunity `protobuf:"bytes,11,rep,name=communities,proto3" json:"communities,omitempty"` + // Optional Extended Community settings. The Extended Communities Attribute is a transitive + // optional BGP attribute, with the Type Code 16. Community and Extended Communities + // attributes are utilized to trigger routing decisions, such as acceptance, rejection, + // preference, or redistribution. An extended community is an 8-Bytes value. It is + // divided into two main parts. The first 2 Bytes of the community encode a type and + // sub-type fields and the last 6 Bytes carry a unique set of data in a format defined + // by the type and sub-type field. Extended communities provide a larger range for + // grouping or categorizing communities. When type is administrator_as_2octet or administrator_as_4octet, + // the valid sub types are route target and origin. The valid value for administrator_as_2octet + // and administrator_as_4octet type is either two byte AS followed by four byte local + // administrator id or four byte AS followed by two byte local administrator id. When + // type is administrator_ipv4_address the valid sub types are route target and origin. + // The valid value for administrator_ipv4_address is a four byte IPv4 address followed + // by a two byte local administrator id. When type is opaque, valid sub types are color + // and encapsulation. When sub type is color, first two bytes of the value field contain + // flags and last four bytes contains the value of the color. When sub type is encapsulation + // the first four bytes of value field are reserved and last two bytes carries the tunnel + // type from IANA's ETHER TYPES registry e.g IPv4 (protocol type = 0x0800), IPv6 (protocol + // type = 0x86dd), and MPLS (protocol type = 0x8847). When type is administrator_as_2octet_link_bandwidth + // the valid sub type is extended_bandwidth. The first two bytes of the value field + // contains the AS number and the last four bytes contains the bandwidth in IEEE floating + // point format. When type is evpn the valid subtype is mac_address. In the value field + // the low-order bit of the first byte(Flags) is defined as the Sticky/static flag and + // may be set to 1, indicating the MAC address is static and cannot move. The second + // byte is reserved and the last four bytes contain the sequence number which is used + // to ensure that PEs retain the correct MAC/IP Advertisement route when multiple updates + // occur for the same MAC address. + ExtCommunities []*BgpExtCommunity `protobuf:"bytes,12,rep,name=ext_communities,json=extCommunities,proto3" json:"ext_communities,omitempty"` + // List Tunnel Encapsulation Attributes. + TunnelTlvs []*BgpSrteV4TunnelTlv `protobuf:"bytes,13,rep,name=tunnel_tlvs,json=tunnelTlvs,proto3" json:"tunnel_tlvs,omitempty"` + // Globally unique name of an object. It also serves as the primary key for arrays of + // objects. + // required = true + Name *string `protobuf:"bytes,14,opt,name=name,proto3,oneof" json:"name,omitempty"` + // If enabled means that this part of the configuration including any active 'children' + // nodes will be advertised to peer. If disabled, this means that though config is + // present, it is not taking any part of the test but can be activated at run-time to + // advertise just this part of the configuration to the peer. + // default = True + Active *bool `protobuf:"varint,15,opt,name=active,proto3,oneof" json:"active,omitempty"` } -func (x *BgpV6EviVxlanBroadcastDomain) Reset() { - *x = BgpV6EviVxlanBroadcastDomain{} +func (x *BgpSrteV4Policy) Reset() { + *x = BgpSrteV4Policy{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[134] + mi := &file_otg_proto_msgTypes[101] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *BgpV6EviVxlanBroadcastDomain) String() string { +func (x *BgpSrteV4Policy) String() string { return protoimpl.X.MessageStringOf(x) } -func (*BgpV6EviVxlanBroadcastDomain) ProtoMessage() {} +func (*BgpSrteV4Policy) ProtoMessage() {} -func (x *BgpV6EviVxlanBroadcastDomain) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[134] +func (x *BgpSrteV4Policy) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[101] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -29903,139 +29603,167 @@ func (x *BgpV6EviVxlanBroadcastDomain) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use BgpV6EviVxlanBroadcastDomain.ProtoReflect.Descriptor instead. -func (*BgpV6EviVxlanBroadcastDomain) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{134} +// Deprecated: Use BgpSrteV4Policy.ProtoReflect.Descriptor instead. +func (*BgpSrteV4Policy) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{101} } -func (x *BgpV6EviVxlanBroadcastDomain) GetCmacIpRange() []*BgpCMacIpRange { - if x != nil { - return x.CmacIpRange +func (x *BgpSrteV4Policy) GetDistinguisher() uint32 { + if x != nil && x.Distinguisher != nil { + return *x.Distinguisher } - return nil + return 0 } -func (x *BgpV6EviVxlanBroadcastDomain) GetEthernetTagId() uint32 { - if x != nil && x.EthernetTagId != nil { - return *x.EthernetTagId +func (x *BgpSrteV4Policy) GetColor() uint32 { + if x != nil && x.Color != nil { + return *x.Color } return 0 } -func (x *BgpV6EviVxlanBroadcastDomain) GetVlanAwareService() bool { - if x != nil && x.VlanAwareService != nil { - return *x.VlanAwareService +func (x *BgpSrteV4Policy) GetIpv4Endpoint() string { + if x != nil && x.Ipv4Endpoint != nil { + return *x.Ipv4Endpoint } - return false + return "" } -// Description missing in models -type DeviceVxlan struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields +func (x *BgpSrteV4Policy) GetNextHopMode() BgpSrteV4Policy_NextHopMode_Enum { + if x != nil && x.NextHopMode != nil { + return *x.NextHopMode + } + return BgpSrteV4Policy_NextHopMode_unspecified +} - // IPv4 VXLAN Tunnels - V4Tunnels []*VxlanV4Tunnel `protobuf:"bytes,1,rep,name=v4_tunnels,json=v4Tunnels,proto3" json:"v4_tunnels,omitempty"` - // IPv6 VXLAN Tunnels - V6Tunnels []*VxlanV6Tunnel `protobuf:"bytes,2,rep,name=v6_tunnels,json=v6Tunnels,proto3" json:"v6_tunnels,omitempty"` +func (x *BgpSrteV4Policy) GetNextHopAddressType() BgpSrteV4Policy_NextHopAddressType_Enum { + if x != nil && x.NextHopAddressType != nil { + return *x.NextHopAddressType + } + return BgpSrteV4Policy_NextHopAddressType_unspecified } -func (x *DeviceVxlan) Reset() { - *x = DeviceVxlan{} - if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[135] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) +func (x *BgpSrteV4Policy) GetNextHopIpv4Address() string { + if x != nil && x.NextHopIpv4Address != nil { + return *x.NextHopIpv4Address } + return "" } -func (x *DeviceVxlan) String() string { - return protoimpl.X.MessageStringOf(x) +func (x *BgpSrteV4Policy) GetNextHopIpv6Address() string { + if x != nil && x.NextHopIpv6Address != nil { + return *x.NextHopIpv6Address + } + return "" } -func (*DeviceVxlan) ProtoMessage() {} +func (x *BgpSrteV4Policy) GetAdvanced() *BgpRouteAdvanced { + if x != nil { + return x.Advanced + } + return nil +} -func (x *DeviceVxlan) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[135] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms +func (x *BgpSrteV4Policy) GetAddPath() *BgpAddPath { + if x != nil { + return x.AddPath } - return mi.MessageOf(x) + return nil } -// Deprecated: Use DeviceVxlan.ProtoReflect.Descriptor instead. -func (*DeviceVxlan) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{135} +func (x *BgpSrteV4Policy) GetAsPath() *BgpAsPath { + if x != nil { + return x.AsPath + } + return nil } -func (x *DeviceVxlan) GetV4Tunnels() []*VxlanV4Tunnel { +func (x *BgpSrteV4Policy) GetCommunities() []*BgpCommunity { if x != nil { - return x.V4Tunnels + return x.Communities } return nil } -func (x *DeviceVxlan) GetV6Tunnels() []*VxlanV6Tunnel { +func (x *BgpSrteV4Policy) GetExtCommunities() []*BgpExtCommunity { if x != nil { - return x.V6Tunnels + return x.ExtCommunities } return nil } -// Configuration and operational state parameters relating to IPv4 VXLAN tunnel end-point -// interface. -type VxlanV4Tunnel struct { +func (x *BgpSrteV4Policy) GetTunnelTlvs() []*BgpSrteV4TunnelTlv { + if x != nil { + return x.TunnelTlvs + } + return nil +} + +func (x *BgpSrteV4Policy) GetName() string { + if x != nil && x.Name != nil { + return *x.Name + } + return "" +} + +func (x *BgpSrteV4Policy) GetActive() bool { + if x != nil && x.Active != nil { + return *x.Active + } + return false +} + +// Configuration for BGP SRTE Tunnel TLV. +type BgpSrteV4TunnelTlv struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Determines the source interface. - // - // x-constraint: - // - /components/schemas/Device.Ipv4/properties/name - // - /components/schemas/Device.Ipv4Loopback/properties/name - // - // x-constraint: - // - /components/schemas/Device.Ipv4/properties/name - // - /components/schemas/Device.Ipv4Loopback/properties/name - // - // required = true - SourceInterface *string `protobuf:"bytes,1,opt,name=source_interface,json=sourceInterface,proto3,oneof" json:"source_interface,omitempty"` // Description missing in models - DestinationIpMode *VxlanV4TunnelDestinationIPMode `protobuf:"bytes,2,opt,name=destination_ip_mode,json=destinationIpMode,proto3" json:"destination_ip_mode,omitempty"` - // VXLAN Network Identifier (VNI) to distinguish network instances on the wire - // required = true - Vni *uint32 `protobuf:"varint,3,opt,name=vni,proto3,oneof" json:"vni,omitempty"` - // Globally unique name of an object. It also serves as the primary key for arrays of - // objects. + RemoteEndpointSubTlv *BgpSrteRemoteEndpointSubTlv `protobuf:"bytes,1,opt,name=remote_endpoint_sub_tlv,json=remoteEndpointSubTlv,proto3" json:"remote_endpoint_sub_tlv,omitempty"` + // Description missing in models + ColorSubTlv *BgpSrteColorSubTlv `protobuf:"bytes,2,opt,name=color_sub_tlv,json=colorSubTlv,proto3" json:"color_sub_tlv,omitempty"` + // Description missing in models + BindingSubTlv *BgpSrteBindingSubTlv `protobuf:"bytes,3,opt,name=binding_sub_tlv,json=bindingSubTlv,proto3" json:"binding_sub_tlv,omitempty"` + // Description missing in models + PreferenceSubTlv *BgpSrtePreferenceSubTlv `protobuf:"bytes,4,opt,name=preference_sub_tlv,json=preferenceSubTlv,proto3" json:"preference_sub_tlv,omitempty"` + // Description missing in models + PolicyPrioritySubTlv *BgpSrtePolicyPrioritySubTlv `protobuf:"bytes,5,opt,name=policy_priority_sub_tlv,json=policyPrioritySubTlv,proto3" json:"policy_priority_sub_tlv,omitempty"` + // Description missing in models + PolicyNameSubTlv *BgpSrtePolicyNameSubTlv `protobuf:"bytes,6,opt,name=policy_name_sub_tlv,json=policyNameSubTlv,proto3" json:"policy_name_sub_tlv,omitempty"` + // Description missing in models + ExplicitNullLabelPolicySubTlv *BgpSrteExplicitNullLabelPolicySubTlv `protobuf:"bytes,7,opt,name=explicit_null_label_policy_sub_tlv,json=explicitNullLabelPolicySubTlv,proto3" json:"explicit_null_label_policy_sub_tlv,omitempty"` + // Description missing in models + SegmentLists []*BgpSrteSegmentList `protobuf:"bytes,8,rep,name=segment_lists,json=segmentLists,proto3" json:"segment_lists,omitempty"` // Globally unique name of an object. It also serves as the primary key for arrays of // objects. // required = true - Name *string `protobuf:"bytes,4,opt,name=name,proto3,oneof" json:"name,omitempty"` + Name *string `protobuf:"bytes,9,opt,name=name,proto3,oneof" json:"name,omitempty"` + // If enabled means that this part of the configuration including any active 'children' + // nodes will be advertised to peer. If disabled, this means that though config is + // present, it is not taking any part of the test but can be activated at run-time to + // advertise just this part of the configuration to the peer. + // default = True + Active *bool `protobuf:"varint,10,opt,name=active,proto3,oneof" json:"active,omitempty"` } -func (x *VxlanV4Tunnel) Reset() { - *x = VxlanV4Tunnel{} +func (x *BgpSrteV4TunnelTlv) Reset() { + *x = BgpSrteV4TunnelTlv{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[136] + mi := &file_otg_proto_msgTypes[102] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *VxlanV4Tunnel) String() string { +func (x *BgpSrteV4TunnelTlv) String() string { return protoimpl.X.MessageStringOf(x) } -func (*VxlanV4Tunnel) ProtoMessage() {} +func (*BgpSrteV4TunnelTlv) ProtoMessage() {} -func (x *VxlanV4Tunnel) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[136] +func (x *BgpSrteV4TunnelTlv) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[102] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -30046,88 +29774,118 @@ func (x *VxlanV4Tunnel) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use VxlanV4Tunnel.ProtoReflect.Descriptor instead. -func (*VxlanV4Tunnel) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{136} +// Deprecated: Use BgpSrteV4TunnelTlv.ProtoReflect.Descriptor instead. +func (*BgpSrteV4TunnelTlv) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{102} } -func (x *VxlanV4Tunnel) GetSourceInterface() string { - if x != nil && x.SourceInterface != nil { - return *x.SourceInterface +func (x *BgpSrteV4TunnelTlv) GetRemoteEndpointSubTlv() *BgpSrteRemoteEndpointSubTlv { + if x != nil { + return x.RemoteEndpointSubTlv } - return "" + return nil } -func (x *VxlanV4Tunnel) GetDestinationIpMode() *VxlanV4TunnelDestinationIPMode { +func (x *BgpSrteV4TunnelTlv) GetColorSubTlv() *BgpSrteColorSubTlv { if x != nil { - return x.DestinationIpMode + return x.ColorSubTlv } return nil } -func (x *VxlanV4Tunnel) GetVni() uint32 { - if x != nil && x.Vni != nil { - return *x.Vni +func (x *BgpSrteV4TunnelTlv) GetBindingSubTlv() *BgpSrteBindingSubTlv { + if x != nil { + return x.BindingSubTlv } - return 0 + return nil } -func (x *VxlanV4Tunnel) GetName() string { +func (x *BgpSrteV4TunnelTlv) GetPreferenceSubTlv() *BgpSrtePreferenceSubTlv { + if x != nil { + return x.PreferenceSubTlv + } + return nil +} + +func (x *BgpSrteV4TunnelTlv) GetPolicyPrioritySubTlv() *BgpSrtePolicyPrioritySubTlv { + if x != nil { + return x.PolicyPrioritySubTlv + } + return nil +} + +func (x *BgpSrteV4TunnelTlv) GetPolicyNameSubTlv() *BgpSrtePolicyNameSubTlv { + if x != nil { + return x.PolicyNameSubTlv + } + return nil +} + +func (x *BgpSrteV4TunnelTlv) GetExplicitNullLabelPolicySubTlv() *BgpSrteExplicitNullLabelPolicySubTlv { + if x != nil { + return x.ExplicitNullLabelPolicySubTlv + } + return nil +} + +func (x *BgpSrteV4TunnelTlv) GetSegmentLists() []*BgpSrteSegmentList { + if x != nil { + return x.SegmentLists + } + return nil +} + +func (x *BgpSrteV4TunnelTlv) GetName() string { if x != nil && x.Name != nil { return *x.Name } return "" } -// Configuration and operational state parameters relating to IPv6 VXLAN tunnel end-point -// interface. -type VxlanV6Tunnel struct { +func (x *BgpSrteV4TunnelTlv) GetActive() bool { + if x != nil && x.Active != nil { + return *x.Active + } + return false +} + +// Configuration for the BGP remote endpoint sub TLV. +type BgpSrteRemoteEndpointSubTlv struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Determines the source interface. - // - // x-constraint: - // - /components/schemas/Device.Ipv6/properties/name - // - /components/schemas/Device.Ipv6Loopback/properties/name - // - // x-constraint: - // - /components/schemas/Device.Ipv6/properties/name - // - /components/schemas/Device.Ipv6Loopback/properties/name - // - // required = true - SourceInterface *string `protobuf:"bytes,1,opt,name=source_interface,json=sourceInterface,proto3,oneof" json:"source_interface,omitempty"` - // Description missing in models - DestinationIpMode *VxlanV6TunnelDestinationIPMode `protobuf:"bytes,2,opt,name=destination_ip_mode,json=destinationIpMode,proto3" json:"destination_ip_mode,omitempty"` - // VXLAN Network Identifier (VNI) to distinguish network instances on the wire - // required = true - Vni *uint32 `protobuf:"varint,3,opt,name=vni,proto3,oneof" json:"vni,omitempty"` - // Globally unique name of an object. It also serves as the primary key for arrays of - // objects. - // Globally unique name of an object. It also serves as the primary key for arrays of - // objects. - // required = true - Name *string `protobuf:"bytes,4,opt,name=name,proto3,oneof" json:"name,omitempty"` + // Autonomous system (AS) number + // default = 0 + AsNumber *uint32 `protobuf:"varint,1,opt,name=as_number,json=asNumber,proto3,oneof" json:"as_number,omitempty"` + // Determines the address type + // default = AddressFamily.Enum.ipv4 + AddressFamily *BgpSrteRemoteEndpointSubTlv_AddressFamily_Enum `protobuf:"varint,2,opt,name=address_family,json=addressFamily,proto3,enum=otg.BgpSrteRemoteEndpointSubTlv_AddressFamily_Enum,oneof" json:"address_family,omitempty"` + // The IPv4 address of the Remote Endpoint. + // default = 0.0.0.0 + Ipv4Address *string `protobuf:"bytes,3,opt,name=ipv4_address,json=ipv4Address,proto3,oneof" json:"ipv4_address,omitempty"` + // The IPv6 address of the Remote Endpoint. + // default = ::0 + Ipv6Address *string `protobuf:"bytes,4,opt,name=ipv6_address,json=ipv6Address,proto3,oneof" json:"ipv6_address,omitempty"` } -func (x *VxlanV6Tunnel) Reset() { - *x = VxlanV6Tunnel{} +func (x *BgpSrteRemoteEndpointSubTlv) Reset() { + *x = BgpSrteRemoteEndpointSubTlv{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[137] + mi := &file_otg_proto_msgTypes[103] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *VxlanV6Tunnel) String() string { +func (x *BgpSrteRemoteEndpointSubTlv) String() string { return protoimpl.X.MessageStringOf(x) } -func (*VxlanV6Tunnel) ProtoMessage() {} +func (*BgpSrteRemoteEndpointSubTlv) ProtoMessage() {} -func (x *VxlanV6Tunnel) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[137] +func (x *BgpSrteRemoteEndpointSubTlv) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[103] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -30138,71 +29896,70 @@ func (x *VxlanV6Tunnel) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use VxlanV6Tunnel.ProtoReflect.Descriptor instead. -func (*VxlanV6Tunnel) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{137} +// Deprecated: Use BgpSrteRemoteEndpointSubTlv.ProtoReflect.Descriptor instead. +func (*BgpSrteRemoteEndpointSubTlv) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{103} } -func (x *VxlanV6Tunnel) GetSourceInterface() string { - if x != nil && x.SourceInterface != nil { - return *x.SourceInterface +func (x *BgpSrteRemoteEndpointSubTlv) GetAsNumber() uint32 { + if x != nil && x.AsNumber != nil { + return *x.AsNumber } - return "" + return 0 } -func (x *VxlanV6Tunnel) GetDestinationIpMode() *VxlanV6TunnelDestinationIPMode { - if x != nil { - return x.DestinationIpMode +func (x *BgpSrteRemoteEndpointSubTlv) GetAddressFamily() BgpSrteRemoteEndpointSubTlv_AddressFamily_Enum { + if x != nil && x.AddressFamily != nil { + return *x.AddressFamily } - return nil + return BgpSrteRemoteEndpointSubTlv_AddressFamily_unspecified } -func (x *VxlanV6Tunnel) GetVni() uint32 { - if x != nil && x.Vni != nil { - return *x.Vni +func (x *BgpSrteRemoteEndpointSubTlv) GetIpv4Address() string { + if x != nil && x.Ipv4Address != nil { + return *x.Ipv4Address } - return 0 + return "" } -func (x *VxlanV6Tunnel) GetName() string { - if x != nil && x.Name != nil { - return *x.Name +func (x *BgpSrteRemoteEndpointSubTlv) GetIpv6Address() string { + if x != nil && x.Ipv6Address != nil { + return *x.Ipv6Address } return "" } -// Communication mode between the VTEPs, either unicast or multicast. -type VxlanV4TunnelDestinationIPMode struct { +// Configuration for the Policy Color attribute sub-TLV. The Color sub-TLV MAY be used +// as a way to color the corresponding Tunnel TLV. The Value field of the sub-TLV is +// eight octets long and consists of a Color Extended Community. First two octets of +// its Value field are 0x030b as type and subtype of extended community. Remaining +// six octets are are exposed to configure. +type BgpSrteColorSubTlv struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // unicast or multicast - // default = Choice.Enum.multicast - Choice *VxlanV4TunnelDestinationIPMode_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.VxlanV4TunnelDestinationIPMode_Choice_Enum,oneof" json:"choice,omitempty"` - // Description missing in models - Unicast *VxlanV4TunnelDestinationIPModeUnicast `protobuf:"bytes,2,opt,name=unicast,proto3" json:"unicast,omitempty"` - // Description missing in models - Multicast *VxlanV4TunnelDestinationIPModeMulticast `protobuf:"bytes,3,opt,name=multicast,proto3" json:"multicast,omitempty"` + // Six octet values. Example: 000000000064 for color value 100. + Color *string `protobuf:"bytes,1,opt,name=color,proto3,oneof" json:"color,omitempty"` } -func (x *VxlanV4TunnelDestinationIPMode) Reset() { - *x = VxlanV4TunnelDestinationIPMode{} +func (x *BgpSrteColorSubTlv) Reset() { + *x = BgpSrteColorSubTlv{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[138] + mi := &file_otg_proto_msgTypes[104] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *VxlanV4TunnelDestinationIPMode) String() string { +func (x *BgpSrteColorSubTlv) String() string { return protoimpl.X.MessageStringOf(x) } -func (*VxlanV4TunnelDestinationIPMode) ProtoMessage() {} +func (*BgpSrteColorSubTlv) ProtoMessage() {} -func (x *VxlanV4TunnelDestinationIPMode) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[138] +func (x *BgpSrteColorSubTlv) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[104] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -30213,64 +29970,58 @@ func (x *VxlanV4TunnelDestinationIPMode) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use VxlanV4TunnelDestinationIPMode.ProtoReflect.Descriptor instead. -func (*VxlanV4TunnelDestinationIPMode) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{138} -} - -func (x *VxlanV4TunnelDestinationIPMode) GetChoice() VxlanV4TunnelDestinationIPMode_Choice_Enum { - if x != nil && x.Choice != nil { - return *x.Choice - } - return VxlanV4TunnelDestinationIPMode_Choice_unspecified -} - -func (x *VxlanV4TunnelDestinationIPMode) GetUnicast() *VxlanV4TunnelDestinationIPModeUnicast { - if x != nil { - return x.Unicast - } - return nil +// Deprecated: Use BgpSrteColorSubTlv.ProtoReflect.Descriptor instead. +func (*BgpSrteColorSubTlv) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{104} } -func (x *VxlanV4TunnelDestinationIPMode) GetMulticast() *VxlanV4TunnelDestinationIPModeMulticast { - if x != nil { - return x.Multicast +func (x *BgpSrteColorSubTlv) GetColor() string { + if x != nil && x.Color != nil { + return *x.Color } - return nil + return "" } -// Communication mode between the VTEPs, either unicast or multicast. -type VxlanV6TunnelDestinationIPMode struct { +// Configuration for the binding SID sub-TLV. This is used to signal the binding SID +// related information of the SR Policy candidate path. +type BgpSrteBindingSubTlv struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // unicast or multicast - // default = Choice.Enum.multicast - Choice *VxlanV6TunnelDestinationIPMode_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.VxlanV6TunnelDestinationIPMode_Choice_Enum,oneof" json:"choice,omitempty"` - // Description missing in models - Unicast *VxlanV6TunnelDestinationIPModeUnicast `protobuf:"bytes,2,opt,name=unicast,proto3" json:"unicast,omitempty"` - // Description missing in models - Multicast *VxlanV6TunnelDestinationIPModeMulticast `protobuf:"bytes,3,opt,name=multicast,proto3" json:"multicast,omitempty"` + // Type of the binding SID. Supported types are No Binding SID or Four Octets Sid or + // IPv6 SID. + // default = BindingSidType.Enum.no_binding + BindingSidType *BgpSrteBindingSubTlv_BindingSidType_Enum `protobuf:"varint,1,opt,name=binding_sid_type,json=bindingSidType,proto3,enum=otg.BgpSrteBindingSubTlv_BindingSidType_Enum,oneof" json:"binding_sid_type,omitempty"` + // Binding SID is encoded in 4 octets. + FourOctetSid *uint32 `protobuf:"varint,2,opt,name=four_octet_sid,json=fourOctetSid,proto3,oneof" json:"four_octet_sid,omitempty"` + // IPv6 SID value. + Ipv6Sid *string `protobuf:"bytes,3,opt,name=ipv6_sid,json=ipv6Sid,proto3,oneof" json:"ipv6_sid,omitempty"` + // S-Flag encodes the Specified-BSID-only behavior. + // default = False + SFlag *bool `protobuf:"varint,4,opt,name=s_flag,json=sFlag,proto3,oneof" json:"s_flag,omitempty"` + // I-Flag encodes the Drop Upon Invalid behavior. + // default = False + IFlag *bool `protobuf:"varint,5,opt,name=i_flag,json=iFlag,proto3,oneof" json:"i_flag,omitempty"` } -func (x *VxlanV6TunnelDestinationIPMode) Reset() { - *x = VxlanV6TunnelDestinationIPMode{} +func (x *BgpSrteBindingSubTlv) Reset() { + *x = BgpSrteBindingSubTlv{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[139] + mi := &file_otg_proto_msgTypes[105] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *VxlanV6TunnelDestinationIPMode) String() string { +func (x *BgpSrteBindingSubTlv) String() string { return protoimpl.X.MessageStringOf(x) } -func (*VxlanV6TunnelDestinationIPMode) ProtoMessage() {} +func (*BgpSrteBindingSubTlv) ProtoMessage() {} -func (x *VxlanV6TunnelDestinationIPMode) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[139] +func (x *BgpSrteBindingSubTlv) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[105] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -30281,59 +30032,74 @@ func (x *VxlanV6TunnelDestinationIPMode) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use VxlanV6TunnelDestinationIPMode.ProtoReflect.Descriptor instead. -func (*VxlanV6TunnelDestinationIPMode) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{139} +// Deprecated: Use BgpSrteBindingSubTlv.ProtoReflect.Descriptor instead. +func (*BgpSrteBindingSubTlv) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{105} } -func (x *VxlanV6TunnelDestinationIPMode) GetChoice() VxlanV6TunnelDestinationIPMode_Choice_Enum { - if x != nil && x.Choice != nil { - return *x.Choice +func (x *BgpSrteBindingSubTlv) GetBindingSidType() BgpSrteBindingSubTlv_BindingSidType_Enum { + if x != nil && x.BindingSidType != nil { + return *x.BindingSidType } - return VxlanV6TunnelDestinationIPMode_Choice_unspecified + return BgpSrteBindingSubTlv_BindingSidType_unspecified } -func (x *VxlanV6TunnelDestinationIPMode) GetUnicast() *VxlanV6TunnelDestinationIPModeUnicast { - if x != nil { - return x.Unicast +func (x *BgpSrteBindingSubTlv) GetFourOctetSid() uint32 { + if x != nil && x.FourOctetSid != nil { + return *x.FourOctetSid } - return nil + return 0 } -func (x *VxlanV6TunnelDestinationIPMode) GetMulticast() *VxlanV6TunnelDestinationIPModeMulticast { - if x != nil { - return x.Multicast +func (x *BgpSrteBindingSubTlv) GetIpv6Sid() string { + if x != nil && x.Ipv6Sid != nil { + return *x.Ipv6Sid } - return nil + return "" } -// Description missing in models -type VxlanV4TunnelDestinationIPModeUnicast struct { +func (x *BgpSrteBindingSubTlv) GetSFlag() bool { + if x != nil && x.SFlag != nil { + return *x.SFlag + } + return false +} + +func (x *BgpSrteBindingSubTlv) GetIFlag() bool { + if x != nil && x.IFlag != nil { + return *x.IFlag + } + return false +} + +// Configuration for BGP preference sub TLV of the SR Policy candidate path. +type BgpSrtePreferenceSubTlv struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // List of VTEPs for member VNI(VXLAN Network Identifier) - Vteps []*VxlanV4TunnelDestinationIPModeUnicastVtep `protobuf:"bytes,1,rep,name=vteps,proto3" json:"vteps,omitempty"` + // The preference value of the SR Policy candidate path. + // default = 0 + Preference *uint32 `protobuf:"varint,1,opt,name=preference,proto3,oneof" json:"preference,omitempty"` } -func (x *VxlanV4TunnelDestinationIPModeUnicast) Reset() { - *x = VxlanV4TunnelDestinationIPModeUnicast{} +func (x *BgpSrtePreferenceSubTlv) Reset() { + *x = BgpSrtePreferenceSubTlv{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[140] + mi := &file_otg_proto_msgTypes[106] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *VxlanV4TunnelDestinationIPModeUnicast) String() string { +func (x *BgpSrtePreferenceSubTlv) String() string { return protoimpl.X.MessageStringOf(x) } -func (*VxlanV4TunnelDestinationIPModeUnicast) ProtoMessage() {} +func (*BgpSrtePreferenceSubTlv) ProtoMessage() {} -func (x *VxlanV4TunnelDestinationIPModeUnicast) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[140] +func (x *BgpSrtePreferenceSubTlv) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[106] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -30344,45 +30110,46 @@ func (x *VxlanV4TunnelDestinationIPModeUnicast) ProtoReflect() protoreflect.Mess return mi.MessageOf(x) } -// Deprecated: Use VxlanV4TunnelDestinationIPModeUnicast.ProtoReflect.Descriptor instead. -func (*VxlanV4TunnelDestinationIPModeUnicast) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{140} +// Deprecated: Use BgpSrtePreferenceSubTlv.ProtoReflect.Descriptor instead. +func (*BgpSrtePreferenceSubTlv) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{106} } -func (x *VxlanV4TunnelDestinationIPModeUnicast) GetVteps() []*VxlanV4TunnelDestinationIPModeUnicastVtep { - if x != nil { - return x.Vteps +func (x *BgpSrtePreferenceSubTlv) GetPreference() uint32 { + if x != nil && x.Preference != nil { + return *x.Preference } - return nil + return 0 } -// Description missing in models -type VxlanV6TunnelDestinationIPModeUnicast struct { +// Configuration for the Policy Priority sub-TLV. The Policy Priority to indicate the +// order in which the SR policies are re-computed upon topological change. +type BgpSrtePolicyPrioritySubTlv struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // List of VTEPs for member VNI(VXLAN Network Identifier) - Vteps []*VxlanV6TunnelDestinationIPModeUnicastVtep `protobuf:"bytes,1,rep,name=vteps,proto3" json:"vteps,omitempty"` + // One-octet Priority value. + PolicyPriority *uint32 `protobuf:"varint,1,opt,name=policy_priority,json=policyPriority,proto3,oneof" json:"policy_priority,omitempty"` } -func (x *VxlanV6TunnelDestinationIPModeUnicast) Reset() { - *x = VxlanV6TunnelDestinationIPModeUnicast{} +func (x *BgpSrtePolicyPrioritySubTlv) Reset() { + *x = BgpSrtePolicyPrioritySubTlv{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[141] + mi := &file_otg_proto_msgTypes[107] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *VxlanV6TunnelDestinationIPModeUnicast) String() string { +func (x *BgpSrtePolicyPrioritySubTlv) String() string { return protoimpl.X.MessageStringOf(x) } -func (*VxlanV6TunnelDestinationIPModeUnicast) ProtoMessage() {} +func (*BgpSrtePolicyPrioritySubTlv) ProtoMessage() {} -func (x *VxlanV6TunnelDestinationIPModeUnicast) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[141] +func (x *BgpSrtePolicyPrioritySubTlv) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[107] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -30393,51 +30160,47 @@ func (x *VxlanV6TunnelDestinationIPModeUnicast) ProtoReflect() protoreflect.Mess return mi.MessageOf(x) } -// Deprecated: Use VxlanV6TunnelDestinationIPModeUnicast.ProtoReflect.Descriptor instead. -func (*VxlanV6TunnelDestinationIPModeUnicast) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{141} +// Deprecated: Use BgpSrtePolicyPrioritySubTlv.ProtoReflect.Descriptor instead. +func (*BgpSrtePolicyPrioritySubTlv) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{107} } -func (x *VxlanV6TunnelDestinationIPModeUnicast) GetVteps() []*VxlanV6TunnelDestinationIPModeUnicastVtep { - if x != nil { - return x.Vteps +func (x *BgpSrtePolicyPrioritySubTlv) GetPolicyPriority() uint32 { + if x != nil && x.PolicyPriority != nil { + return *x.PolicyPriority } - return nil + return 0 } -// Each VTEP maintains an ARP suppression cache table for known IP hosts and their associated -// MAC addresses in the VNI segment. When an end host in the VNI sends an ARP request -// for another end-host IP address, its local VTEP intercepts the ARP request and checks -// for the ARP-resolved IP address in its ARP suppression cache table. If it finds -// a match, the local VTEP sends an ARP response on behalf of the remote end host. -type VxlanTunnelDestinationIPModeUnicastArpSuppressionCache struct { +// Configuration for the Policy Name sub-TLV. The Policy Name sub-TLV is used to attach +// a symbolic name to the SR Policy candidate path. +type BgpSrtePolicyNameSubTlv struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Remote VM MAC address bound to Remote VM IPv4 address - RemoteVmMac *string `protobuf:"bytes,1,opt,name=remote_vm_mac,json=remoteVmMac,proto3,oneof" json:"remote_vm_mac,omitempty"` - // Remote VM IPv4 address - RemoteVmIpv4 *string `protobuf:"bytes,2,opt,name=remote_vm_ipv4,json=remoteVmIpv4,proto3,oneof" json:"remote_vm_ipv4,omitempty"` + // Symbolic name for the policy that should be a string of printable ASCII characters, + // without a NULL terminator. + PolicyName *string `protobuf:"bytes,1,opt,name=policy_name,json=policyName,proto3,oneof" json:"policy_name,omitempty"` } -func (x *VxlanTunnelDestinationIPModeUnicastArpSuppressionCache) Reset() { - *x = VxlanTunnelDestinationIPModeUnicastArpSuppressionCache{} +func (x *BgpSrtePolicyNameSubTlv) Reset() { + *x = BgpSrtePolicyNameSubTlv{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[142] + mi := &file_otg_proto_msgTypes[108] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *VxlanTunnelDestinationIPModeUnicastArpSuppressionCache) String() string { +func (x *BgpSrtePolicyNameSubTlv) String() string { return protoimpl.X.MessageStringOf(x) } -func (*VxlanTunnelDestinationIPModeUnicastArpSuppressionCache) ProtoMessage() {} +func (*BgpSrtePolicyNameSubTlv) ProtoMessage() {} -func (x *VxlanTunnelDestinationIPModeUnicastArpSuppressionCache) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[142] +func (x *BgpSrtePolicyNameSubTlv) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[108] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -30448,58 +30211,46 @@ func (x *VxlanTunnelDestinationIPModeUnicastArpSuppressionCache) ProtoReflect() return mi.MessageOf(x) } -// Deprecated: Use VxlanTunnelDestinationIPModeUnicastArpSuppressionCache.ProtoReflect.Descriptor instead. -func (*VxlanTunnelDestinationIPModeUnicastArpSuppressionCache) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{142} -} - -func (x *VxlanTunnelDestinationIPModeUnicastArpSuppressionCache) GetRemoteVmMac() string { - if x != nil && x.RemoteVmMac != nil { - return *x.RemoteVmMac - } - return "" +// Deprecated: Use BgpSrtePolicyNameSubTlv.ProtoReflect.Descriptor instead. +func (*BgpSrtePolicyNameSubTlv) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{108} } -func (x *VxlanTunnelDestinationIPModeUnicastArpSuppressionCache) GetRemoteVmIpv4() string { - if x != nil && x.RemoteVmIpv4 != nil { - return *x.RemoteVmIpv4 +func (x *BgpSrtePolicyNameSubTlv) GetPolicyName() string { + if x != nil && x.PolicyName != nil { + return *x.PolicyName } return "" } -// VTEP (VXLAN Tunnel End Point (VTEP)) parameters -type VxlanV4TunnelDestinationIPModeUnicastVtep struct { +// Configuration for BGP explicit null label policy sub TLV settings. +type BgpSrteExplicitNullLabelPolicySubTlv struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Remote VXLAN Tunnel End Point address - RemoteVtepAddress *string `protobuf:"bytes,1,opt,name=remote_vtep_address,json=remoteVtepAddress,proto3,oneof" json:"remote_vtep_address,omitempty"` - // Each VTEP maintains an ARP suppression cache table for known IP hosts and their associated - // MAC addresses in the VNI segment. When an end host in the VNI sends an ARP request - // for another end-host IP address, its local VTEP intercepts the ARP request and checks - // for the ARP-resolved IP address in its ARP suppression cache table. If it finds - // a match, the local VTEP sends an ARP response on behalf of the remote end host. - ArpSuppressionCache []*VxlanTunnelDestinationIPModeUnicastArpSuppressionCache `protobuf:"bytes,2,rep,name=arp_suppression_cache,json=arpSuppressionCache,proto3" json:"arp_suppression_cache,omitempty"` + // The value of the explicit null label policy + // default = ExplicitNullLabelPolicy.Enum.do_not_push_enlp + ExplicitNullLabelPolicy *BgpSrteExplicitNullLabelPolicySubTlv_ExplicitNullLabelPolicy_Enum `protobuf:"varint,1,opt,name=explicit_null_label_policy,json=explicitNullLabelPolicy,proto3,enum=otg.BgpSrteExplicitNullLabelPolicySubTlv_ExplicitNullLabelPolicy_Enum,oneof" json:"explicit_null_label_policy,omitempty"` } -func (x *VxlanV4TunnelDestinationIPModeUnicastVtep) Reset() { - *x = VxlanV4TunnelDestinationIPModeUnicastVtep{} +func (x *BgpSrteExplicitNullLabelPolicySubTlv) Reset() { + *x = BgpSrteExplicitNullLabelPolicySubTlv{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[143] + mi := &file_otg_proto_msgTypes[109] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *VxlanV4TunnelDestinationIPModeUnicastVtep) String() string { +func (x *BgpSrteExplicitNullLabelPolicySubTlv) String() string { return protoimpl.X.MessageStringOf(x) } -func (*VxlanV4TunnelDestinationIPModeUnicastVtep) ProtoMessage() {} +func (*BgpSrteExplicitNullLabelPolicySubTlv) ProtoMessage() {} -func (x *VxlanV4TunnelDestinationIPModeUnicastVtep) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[143] +func (x *BgpSrteExplicitNullLabelPolicySubTlv) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[109] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -30510,58 +30261,59 @@ func (x *VxlanV4TunnelDestinationIPModeUnicastVtep) ProtoReflect() protoreflect. return mi.MessageOf(x) } -// Deprecated: Use VxlanV4TunnelDestinationIPModeUnicastVtep.ProtoReflect.Descriptor instead. -func (*VxlanV4TunnelDestinationIPModeUnicastVtep) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{143} -} - -func (x *VxlanV4TunnelDestinationIPModeUnicastVtep) GetRemoteVtepAddress() string { - if x != nil && x.RemoteVtepAddress != nil { - return *x.RemoteVtepAddress - } - return "" +// Deprecated: Use BgpSrteExplicitNullLabelPolicySubTlv.ProtoReflect.Descriptor instead. +func (*BgpSrteExplicitNullLabelPolicySubTlv) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{109} } -func (x *VxlanV4TunnelDestinationIPModeUnicastVtep) GetArpSuppressionCache() []*VxlanTunnelDestinationIPModeUnicastArpSuppressionCache { - if x != nil { - return x.ArpSuppressionCache +func (x *BgpSrteExplicitNullLabelPolicySubTlv) GetExplicitNullLabelPolicy() BgpSrteExplicitNullLabelPolicySubTlv_ExplicitNullLabelPolicy_Enum { + if x != nil && x.ExplicitNullLabelPolicy != nil { + return *x.ExplicitNullLabelPolicy } - return nil + return BgpSrteExplicitNullLabelPolicySubTlv_ExplicitNullLabelPolicy_unspecified } -// VTEP (VXLAN Tunnel End Point (VTEP)) parameters -type VxlanV6TunnelDestinationIPModeUnicastVtep struct { +// Optional configuration for BGP SR TE Policy segment list. The Segment List sub-TLV +// encodes a single explicit path towards the Endpoint. +type BgpSrteSegmentList struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Remote VXLAN Tunnel End Point address - RemoteVtepAddress *string `protobuf:"bytes,1,opt,name=remote_vtep_address,json=remoteVtepAddress,proto3,oneof" json:"remote_vtep_address,omitempty"` - // Each VTEP maintains an ARP suppression cache table for known IP hosts and their associated - // MAC addresses in the VNI segment. When an end host in the VNI sends an ARP request - // for another end-host IP address, its local VTEP intercepts the ARP request and checks - // for the ARP-resolved IP address in its ARP suppression cache table. If it finds - // a match, the local VTEP sends an ARP response on behalf of the remote end host. - ArpSuppressionCache []*VxlanTunnelDestinationIPModeUnicastArpSuppressionCache `protobuf:"bytes,2,rep,name=arp_suppression_cache,json=arpSuppressionCache,proto3" json:"arp_suppression_cache,omitempty"` + // The Weight associated with a given path and the sub-TLV is optional. + // default = 0 + Weight *uint32 `protobuf:"varint,1,opt,name=weight,proto3,oneof" json:"weight,omitempty"` + // Description missing in models + Segments []*BgpSrteSegment `protobuf:"bytes,2,rep,name=segments,proto3" json:"segments,omitempty"` + // Globally unique name of an object. It also serves as the primary key for arrays of + // objects. + // required = true + Name *string `protobuf:"bytes,3,opt,name=name,proto3,oneof" json:"name,omitempty"` + // If enabled means that this part of the configuration including any active 'children' + // nodes will be advertised to peer. If disabled, this means that though config is + // present, it is not taking any part of the test but can be activated at run-time to + // advertise just this part of the configuration to the peer. + // default = True + Active *bool `protobuf:"varint,4,opt,name=active,proto3,oneof" json:"active,omitempty"` } -func (x *VxlanV6TunnelDestinationIPModeUnicastVtep) Reset() { - *x = VxlanV6TunnelDestinationIPModeUnicastVtep{} +func (x *BgpSrteSegmentList) Reset() { + *x = BgpSrteSegmentList{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[144] + mi := &file_otg_proto_msgTypes[110] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *VxlanV6TunnelDestinationIPModeUnicastVtep) String() string { +func (x *BgpSrteSegmentList) String() string { return protoimpl.X.MessageStringOf(x) } -func (*VxlanV6TunnelDestinationIPModeUnicastVtep) ProtoMessage() {} +func (*BgpSrteSegmentList) ProtoMessage() {} -func (x *VxlanV6TunnelDestinationIPModeUnicastVtep) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[144] +func (x *BgpSrteSegmentList) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[110] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -30572,52 +30324,114 @@ func (x *VxlanV6TunnelDestinationIPModeUnicastVtep) ProtoReflect() protoreflect. return mi.MessageOf(x) } -// Deprecated: Use VxlanV6TunnelDestinationIPModeUnicastVtep.ProtoReflect.Descriptor instead. -func (*VxlanV6TunnelDestinationIPModeUnicastVtep) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{144} +// Deprecated: Use BgpSrteSegmentList.ProtoReflect.Descriptor instead. +func (*BgpSrteSegmentList) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{110} } -func (x *VxlanV6TunnelDestinationIPModeUnicastVtep) GetRemoteVtepAddress() string { - if x != nil && x.RemoteVtepAddress != nil { - return *x.RemoteVtepAddress +func (x *BgpSrteSegmentList) GetWeight() uint32 { + if x != nil && x.Weight != nil { + return *x.Weight } - return "" + return 0 } -func (x *VxlanV6TunnelDestinationIPModeUnicastVtep) GetArpSuppressionCache() []*VxlanTunnelDestinationIPModeUnicastArpSuppressionCache { +func (x *BgpSrteSegmentList) GetSegments() []*BgpSrteSegment { if x != nil { - return x.ArpSuppressionCache + return x.Segments } return nil } -// Multicast Group address for member VNI(VXLAN Network Identifier) -type VxlanV4TunnelDestinationIPModeMulticast struct { +func (x *BgpSrteSegmentList) GetName() string { + if x != nil && x.Name != nil { + return *x.Name + } + return "" +} + +func (x *BgpSrteSegmentList) GetActive() bool { + if x != nil && x.Active != nil { + return *x.Active + } + return false +} + +// A Segment sub-TLV describes a single segment in a segment list i.e., a single element +// of the explicit path. The Segment sub-TLVs are optional. +type BgpSrteSegment struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // IPv4 Multicast address - Address *string `protobuf:"bytes,1,opt,name=address,proto3,oneof" json:"address,omitempty"` + // Specify one of the segment type. + // https://datatracker.ietf.org/doc/html/draft-ietf-idr-segment-routing-te-policy-13 + // Type A: SID only, in the form of MPLS Label. + // Type B: SID only, in the form of IPv6 Address. + // Type C: IPv4 Node Address with optional SID. + // Type D: IPv6 Node Address with optional SID for SR MPLS. + // Type E: IPv4 Address and index with optional SID. + // Type F: IPv4 Local and Remote addresses with optional SID. + // Type G: IPv6 Address and index for local and remote pair with optional + // SID for SR MPLS. + // Type H: IPv6 Local and Remote addresses with optional SID for SR MPLS. + // Type I: IPv6 Node Address with optional SID for SRv6. + // Type J: IPv6 Address and index for local and remote pair with optional + // SID for SRv6. + // Type K: IPv6 Local and Remote addresses for SRv6. + // required = true + SegmentType *BgpSrteSegment_SegmentType_Enum `protobuf:"varint,1,opt,name=segment_type,json=segmentType,proto3,enum=otg.BgpSrteSegment_SegmentType_Enum,oneof" json:"segment_type,omitempty"` + // Description missing in models + TypeA *BgpSrteSegmentATypeSubTlv `protobuf:"bytes,2,opt,name=type_a,json=typeA,proto3" json:"type_a,omitempty"` + // Description missing in models + TypeB *BgpSrteSegmentBTypeSubTlv `protobuf:"bytes,3,opt,name=type_b,json=typeB,proto3" json:"type_b,omitempty"` + // Description missing in models + TypeC *BgpSrteSegmentCTypeSubTlv `protobuf:"bytes,4,opt,name=type_c,json=typeC,proto3" json:"type_c,omitempty"` + // Description missing in models + TypeD *BgpSrteSegmentDTypeSubTlv `protobuf:"bytes,5,opt,name=type_d,json=typeD,proto3" json:"type_d,omitempty"` + // Description missing in models + TypeE *BgpSrteSegmentETypeSubTlv `protobuf:"bytes,6,opt,name=type_e,json=typeE,proto3" json:"type_e,omitempty"` + // Description missing in models + TypeF *BgpSrteSegmentFTypeSubTlv `protobuf:"bytes,7,opt,name=type_f,json=typeF,proto3" json:"type_f,omitempty"` + // Description missing in models + TypeG *BgpSrteSegmentGTypeSubTlv `protobuf:"bytes,8,opt,name=type_g,json=typeG,proto3" json:"type_g,omitempty"` + // Description missing in models + TypeH *BgpSrteSegmentHTypeSubTlv `protobuf:"bytes,9,opt,name=type_h,json=typeH,proto3" json:"type_h,omitempty"` + // Description missing in models + TypeI *BgpSrteSegmentITypeSubTlv `protobuf:"bytes,10,opt,name=type_i,json=typeI,proto3" json:"type_i,omitempty"` + // Description missing in models + TypeJ *BgpSrteSegmentJTypeSubTlv `protobuf:"bytes,11,opt,name=type_j,json=typeJ,proto3" json:"type_j,omitempty"` + // Description missing in models + TypeK *BgpSrteSegmentKTypeSubTlv `protobuf:"bytes,12,opt,name=type_k,json=typeK,proto3" json:"type_k,omitempty"` + // Globally unique name of an object. It also serves as the primary key for arrays of + // objects. + // required = true + Name *string `protobuf:"bytes,13,opt,name=name,proto3,oneof" json:"name,omitempty"` + // If enabled means that this part of the configuration including any active 'children' + // nodes will be advertised to peer. If disabled, this means that though config is + // present, it is not taking any part of the test but can be activated at run-time to + // advertise just this part of the configuration to the peer. + // default = True + Active *bool `protobuf:"varint,14,opt,name=active,proto3,oneof" json:"active,omitempty"` } -func (x *VxlanV4TunnelDestinationIPModeMulticast) Reset() { - *x = VxlanV4TunnelDestinationIPModeMulticast{} +func (x *BgpSrteSegment) Reset() { + *x = BgpSrteSegment{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[145] + mi := &file_otg_proto_msgTypes[111] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *VxlanV4TunnelDestinationIPModeMulticast) String() string { +func (x *BgpSrteSegment) String() string { return protoimpl.X.MessageStringOf(x) } -func (*VxlanV4TunnelDestinationIPModeMulticast) ProtoMessage() {} +func (*BgpSrteSegment) ProtoMessage() {} -func (x *VxlanV4TunnelDestinationIPModeMulticast) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[145] +func (x *BgpSrteSegment) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[111] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -30628,215 +30442,142 @@ func (x *VxlanV4TunnelDestinationIPModeMulticast) ProtoReflect() protoreflect.Me return mi.MessageOf(x) } -// Deprecated: Use VxlanV4TunnelDestinationIPModeMulticast.ProtoReflect.Descriptor instead. -func (*VxlanV4TunnelDestinationIPModeMulticast) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{145} +// Deprecated: Use BgpSrteSegment.ProtoReflect.Descriptor instead. +func (*BgpSrteSegment) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{111} } -func (x *VxlanV4TunnelDestinationIPModeMulticast) GetAddress() string { - if x != nil && x.Address != nil { - return *x.Address +func (x *BgpSrteSegment) GetSegmentType() BgpSrteSegment_SegmentType_Enum { + if x != nil && x.SegmentType != nil { + return *x.SegmentType } - return "" -} - -// Multicast Group address for member VNI(VXLAN Network Identifier) -type VxlanV6TunnelDestinationIPModeMulticast struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // IPv6 Multicast address - Address *string `protobuf:"bytes,1,opt,name=address,proto3,oneof" json:"address,omitempty"` + return BgpSrteSegment_SegmentType_unspecified } -func (x *VxlanV6TunnelDestinationIPModeMulticast) Reset() { - *x = VxlanV6TunnelDestinationIPModeMulticast{} - if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[146] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) +func (x *BgpSrteSegment) GetTypeA() *BgpSrteSegmentATypeSubTlv { + if x != nil { + return x.TypeA } + return nil } -func (x *VxlanV6TunnelDestinationIPModeMulticast) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*VxlanV6TunnelDestinationIPModeMulticast) ProtoMessage() {} - -func (x *VxlanV6TunnelDestinationIPModeMulticast) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[146] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms +func (x *BgpSrteSegment) GetTypeB() *BgpSrteSegmentBTypeSubTlv { + if x != nil { + return x.TypeB } - return mi.MessageOf(x) + return nil } -// Deprecated: Use VxlanV6TunnelDestinationIPModeMulticast.ProtoReflect.Descriptor instead. -func (*VxlanV6TunnelDestinationIPModeMulticast) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{146} +func (x *BgpSrteSegment) GetTypeC() *BgpSrteSegmentCTypeSubTlv { + if x != nil { + return x.TypeC + } + return nil } -func (x *VxlanV6TunnelDestinationIPModeMulticast) GetAddress() string { - if x != nil && x.Address != nil { - return *x.Address +func (x *BgpSrteSegment) GetTypeD() *BgpSrteSegmentDTypeSubTlv { + if x != nil { + return x.TypeD } - return "" + return nil } -// Configuration for one or more RSVP interfaces, ingress and egress LSPs. In this model, -// currently IPv4 RSVP and point-to-point LSPs are supported as per RFC3209 and related -// specifications. -type DeviceRsvp struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // List of IPv4 RSVP connected interfaces. At least one interface should be present - // for device connected to the DUT. For unconnected devices, this array must be empty. - Ipv4Interfaces []*RsvpIpv4Interface `protobuf:"bytes,1,rep,name=ipv4_interfaces,json=ipv4Interfaces,proto3" json:"ipv4_interfaces,omitempty"` - // List of IPv4 Loopback or IPv4 connected interfaces acting as RSVP ingress and egress - // endpoints. - LspIpv4Interfaces []*RsvpLspIpv4Interface `protobuf:"bytes,2,rep,name=lsp_ipv4_interfaces,json=lspIpv4Interfaces,proto3" json:"lsp_ipv4_interfaces,omitempty"` - // Globally unique name of an object. It also serves as the primary key for arrays of - // objects. - Name *string `protobuf:"bytes,3,opt,name=name,proto3,oneof" json:"name,omitempty"` +func (x *BgpSrteSegment) GetTypeE() *BgpSrteSegmentETypeSubTlv { + if x != nil { + return x.TypeE + } + return nil } -func (x *DeviceRsvp) Reset() { - *x = DeviceRsvp{} - if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[147] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) +func (x *BgpSrteSegment) GetTypeF() *BgpSrteSegmentFTypeSubTlv { + if x != nil { + return x.TypeF } + return nil } -func (x *DeviceRsvp) String() string { - return protoimpl.X.MessageStringOf(x) +func (x *BgpSrteSegment) GetTypeG() *BgpSrteSegmentGTypeSubTlv { + if x != nil { + return x.TypeG + } + return nil } -func (*DeviceRsvp) ProtoMessage() {} - -func (x *DeviceRsvp) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[147] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms +func (x *BgpSrteSegment) GetTypeH() *BgpSrteSegmentHTypeSubTlv { + if x != nil { + return x.TypeH } - return mi.MessageOf(x) + return nil } -// Deprecated: Use DeviceRsvp.ProtoReflect.Descriptor instead. -func (*DeviceRsvp) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{147} +func (x *BgpSrteSegment) GetTypeI() *BgpSrteSegmentITypeSubTlv { + if x != nil { + return x.TypeI + } + return nil } -func (x *DeviceRsvp) GetIpv4Interfaces() []*RsvpIpv4Interface { +func (x *BgpSrteSegment) GetTypeJ() *BgpSrteSegmentJTypeSubTlv { if x != nil { - return x.Ipv4Interfaces + return x.TypeJ } return nil } -func (x *DeviceRsvp) GetLspIpv4Interfaces() []*RsvpLspIpv4Interface { +func (x *BgpSrteSegment) GetTypeK() *BgpSrteSegmentKTypeSubTlv { if x != nil { - return x.LspIpv4Interfaces + return x.TypeK } return nil } -func (x *DeviceRsvp) GetName() string { +func (x *BgpSrteSegment) GetName() string { if x != nil && x.Name != nil { return *x.Name } return "" } -// Configuration for RSVP Interface. -type RsvpIpv4Interface struct { +func (x *BgpSrteSegment) GetActive() bool { + if x != nil && x.Active != nil { + return *x.Active + } + return false +} + +// Configuration for SR-MPLS with Label, TC, Bottom-of-Stack and TTL. +type BgpSrteSrMplsSid struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // The globally unique name of the IPv4 interface connected to the DUT. This name must - // match the name field of the ipv4_addresses on top which this RSVP interface is configured. - // - // x-constraint: - // - /components/schemas/Device.Ipv4/properties/name - // - // x-constraint: - // - /components/schemas/Device.Ipv4/properties/name - // - // required = true - Ipv4Name *string `protobuf:"bytes,1,opt,name=ipv4_name,json=ipv4Name,proto3,oneof" json:"ipv4_name,omitempty"` - // IPv4 address of the RSVP neighbor on this interface. - // required = true - NeighborIp *string `protobuf:"bytes,2,opt,name=neighbor_ip,json=neighborIp,proto3,oneof" json:"neighbor_ip,omitempty"` - // The user-defined label space start value. The LSPs for which this router acts as - // a egress are assigned labels from this label pool.Thelabel_space_start and label_space_end - // together defines this label-pool. - // default = 1000 - LabelSpaceStart *uint32 `protobuf:"varint,3,opt,name=label_space_start,json=labelSpaceStart,proto3,oneof" json:"label_space_start,omitempty"` - // The user-defined label space end value.The last label value that can be assigned - // to the LSPs for which this router acts as egress. - // default = 100000 - LabelSpaceEnd *uint32 `protobuf:"varint,4,opt,name=label_space_end,json=labelSpaceEnd,proto3,oneof" json:"label_space_end,omitempty"` - // Enables sending of Refresh Reduction as described in RFC2961. - // default = False - EnableRefreshReduction *bool `protobuf:"varint,5,opt,name=enable_refresh_reduction,json=enableRefreshReduction,proto3,oneof" json:"enable_refresh_reduction,omitempty"` - // The number of seconds between transmissions of successive Summary Refreshes. There - // is no specification specified maximum value. For clarity, setting the maximum to - // 1 hour. - // default = 30 - SummaryRefreshInterval *uint32 `protobuf:"varint,6,opt,name=summary_refresh_interval,json=summaryRefreshInterval,proto3,oneof" json:"summary_refresh_interval,omitempty"` - // Enables aggregration of different RSVP messages within a single PDU. - // default = False - SendBundle *bool `protobuf:"varint,7,opt,name=send_bundle,json=sendBundle,proto3,oneof" json:"send_bundle,omitempty"` - // The number of milliseconds to wait after which RSVP will bundle different RSVP messages - // and transmit Bundle messages. - // default = 50 - BundleThreshold *uint32 `protobuf:"varint,8,opt,name=bundle_threshold,json=bundleThreshold,proto3,oneof" json:"bundle_threshold,omitempty"` - // Enables sending of Hello Messages as per RFC3209. - // default = False - EnableHello *bool `protobuf:"varint,9,opt,name=enable_hello,json=enableHello,proto3,oneof" json:"enable_hello,omitempty"` - // If enable_hello is set to 'true', this specifies the minimum hello interval in seconds - // at which successive Hello Messages are sent as per RFC3209. There is no specification - // specified maximum value. For clarity, setting the maximum to 1 hour. - // default = 9 - HelloInterval *uint32 `protobuf:"varint,10,opt,name=hello_interval,json=helloInterval,proto3,oneof" json:"hello_interval,omitempty"` - // The number of missed hellos after which the node should consider RSVP Neighbor to - // have timed out. There is no specification specified maximum value. Setting the maximum - // allowed value to 10. - // default = 3 - TimeoutMultiplier *uint32 `protobuf:"varint,11,opt,name=timeout_multiplier,json=timeoutMultiplier,proto3,oneof" json:"timeout_multiplier,omitempty"` + // Label value in [0, 2^20 -1]. + Label *uint32 `protobuf:"varint,1,opt,name=label,proto3,oneof" json:"label,omitempty"` + // Traffic class in bits. + Tc *uint32 `protobuf:"varint,2,opt,name=tc,proto3,oneof" json:"tc,omitempty"` + // Bottom-of-Stack bit. + SBit *bool `protobuf:"varint,3,opt,name=s_bit,json=sBit,proto3,oneof" json:"s_bit,omitempty"` + // Time To Live. + Ttl *uint32 `protobuf:"varint,4,opt,name=ttl,proto3,oneof" json:"ttl,omitempty"` } -func (x *RsvpIpv4Interface) Reset() { - *x = RsvpIpv4Interface{} +func (x *BgpSrteSrMplsSid) Reset() { + *x = BgpSrteSrMplsSid{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[148] + mi := &file_otg_proto_msgTypes[112] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *RsvpIpv4Interface) String() string { +func (x *BgpSrteSrMplsSid) String() string { return protoimpl.X.MessageStringOf(x) } -func (*RsvpIpv4Interface) ProtoMessage() {} +func (*BgpSrteSrMplsSid) ProtoMessage() {} -func (x *RsvpIpv4Interface) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[148] +func (x *BgpSrteSrMplsSid) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[112] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -30847,132 +30588,157 @@ func (x *RsvpIpv4Interface) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use RsvpIpv4Interface.ProtoReflect.Descriptor instead. -func (*RsvpIpv4Interface) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{148} -} - -func (x *RsvpIpv4Interface) GetIpv4Name() string { - if x != nil && x.Ipv4Name != nil { - return *x.Ipv4Name - } - return "" -} - -func (x *RsvpIpv4Interface) GetNeighborIp() string { - if x != nil && x.NeighborIp != nil { - return *x.NeighborIp - } - return "" +// Deprecated: Use BgpSrteSrMplsSid.ProtoReflect.Descriptor instead. +func (*BgpSrteSrMplsSid) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{112} } -func (x *RsvpIpv4Interface) GetLabelSpaceStart() uint32 { - if x != nil && x.LabelSpaceStart != nil { - return *x.LabelSpaceStart +func (x *BgpSrteSrMplsSid) GetLabel() uint32 { + if x != nil && x.Label != nil { + return *x.Label } return 0 } -func (x *RsvpIpv4Interface) GetLabelSpaceEnd() uint32 { - if x != nil && x.LabelSpaceEnd != nil { - return *x.LabelSpaceEnd +func (x *BgpSrteSrMplsSid) GetTc() uint32 { + if x != nil && x.Tc != nil { + return *x.Tc } return 0 } -func (x *RsvpIpv4Interface) GetEnableRefreshReduction() bool { - if x != nil && x.EnableRefreshReduction != nil { - return *x.EnableRefreshReduction +func (x *BgpSrteSrMplsSid) GetSBit() bool { + if x != nil && x.SBit != nil { + return *x.SBit } return false } -func (x *RsvpIpv4Interface) GetSummaryRefreshInterval() uint32 { - if x != nil && x.SummaryRefreshInterval != nil { - return *x.SummaryRefreshInterval +func (x *BgpSrteSrMplsSid) GetTtl() uint32 { + if x != nil && x.Ttl != nil { + return *x.Ttl } return 0 } -func (x *RsvpIpv4Interface) GetSendBundle() bool { - if x != nil && x.SendBundle != nil { - return *x.SendBundle +// Configuration for SRv6 Endpoint Behavior and SID Structure. Its optional. Summation +// of lengths for Locator Block, Locator Node, Function, and Argument MUST be less +// than or equal to 128. +type BgpSrteSRv6SIDEndpointBehaviorAndStructure struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // SRv6 SID Locator Block length in bits. + // default = 0 + LbLength *uint32 `protobuf:"varint,1,opt,name=lb_length,json=lbLength,proto3,oneof" json:"lb_length,omitempty"` + // SRv6 SID Locator Node length in bits. + // default = 0 + LnLength *uint32 `protobuf:"varint,2,opt,name=ln_length,json=lnLength,proto3,oneof" json:"ln_length,omitempty"` + // SRv6 SID Function length in bits. + // default = 0 + FuncLength *uint32 `protobuf:"varint,3,opt,name=func_length,json=funcLength,proto3,oneof" json:"func_length,omitempty"` + // SRv6 SID Arguments length in bits. + // default = 0 + ArgLength *uint32 `protobuf:"varint,4,opt,name=arg_length,json=argLength,proto3,oneof" json:"arg_length,omitempty"` +} + +func (x *BgpSrteSRv6SIDEndpointBehaviorAndStructure) Reset() { + *x = BgpSrteSRv6SIDEndpointBehaviorAndStructure{} + if protoimpl.UnsafeEnabled { + mi := &file_otg_proto_msgTypes[113] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } - return false } -func (x *RsvpIpv4Interface) GetBundleThreshold() uint32 { - if x != nil && x.BundleThreshold != nil { - return *x.BundleThreshold +func (x *BgpSrteSRv6SIDEndpointBehaviorAndStructure) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*BgpSrteSRv6SIDEndpointBehaviorAndStructure) ProtoMessage() {} + +func (x *BgpSrteSRv6SIDEndpointBehaviorAndStructure) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[113] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use BgpSrteSRv6SIDEndpointBehaviorAndStructure.ProtoReflect.Descriptor instead. +func (*BgpSrteSRv6SIDEndpointBehaviorAndStructure) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{113} +} + +func (x *BgpSrteSRv6SIDEndpointBehaviorAndStructure) GetLbLength() uint32 { + if x != nil && x.LbLength != nil { + return *x.LbLength } return 0 } -func (x *RsvpIpv4Interface) GetEnableHello() bool { - if x != nil && x.EnableHello != nil { - return *x.EnableHello +func (x *BgpSrteSRv6SIDEndpointBehaviorAndStructure) GetLnLength() uint32 { + if x != nil && x.LnLength != nil { + return *x.LnLength } - return false + return 0 } -func (x *RsvpIpv4Interface) GetHelloInterval() uint32 { - if x != nil && x.HelloInterval != nil { - return *x.HelloInterval +func (x *BgpSrteSRv6SIDEndpointBehaviorAndStructure) GetFuncLength() uint32 { + if x != nil && x.FuncLength != nil { + return *x.FuncLength } return 0 } -func (x *RsvpIpv4Interface) GetTimeoutMultiplier() uint32 { - if x != nil && x.TimeoutMultiplier != nil { - return *x.TimeoutMultiplier +func (x *BgpSrteSRv6SIDEndpointBehaviorAndStructure) GetArgLength() uint32 { + if x != nil && x.ArgLength != nil { + return *x.ArgLength } return 0 } -// Configuration for RSVP LSP IPv4 Interface. -type RsvpLspIpv4Interface struct { +// Type A: SID only, in the form of MPLS Label. +type BgpSrteSegmentATypeSubTlv struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // The globally unique name of the IPv4 or Loopback IPv4 interface acting as the RSVP - // ingress and egress endpoint for the LSPs configured on this interface. This must - // match the name field of either ipv4_addresses or ipv4_loopbacks on which this LSP - // interface is configured. - // - // x-constraint: - // - /components/schemas/Device.Ipv4/properties/name - // - /components/schemas/Device.Ipv4Loopback/properties/name - // - // x-constraint: - // - /components/schemas/Device.Ipv4/properties/name - // - /components/schemas/Device.Ipv4Loopback/properties/name - // - // required = true - Ipv4Name *string `protobuf:"bytes,1,opt,name=ipv4_name,json=ipv4Name,proto3,oneof" json:"ipv4_name,omitempty"` - // Contains properties of Tail(Egress) LSPs. - P2PEgressIpv4Lsps *RsvpLspIpv4InterfaceP2PEgressIpv4Lsp `protobuf:"bytes,2,opt,name=p2p_egress_ipv4_lsps,json=p2pEgressIpv4Lsps,proto3" json:"p2p_egress_ipv4_lsps,omitempty"` - // Array of point-to-point RSVP-TE P2P LSPs originating from this interface. - P2PIngressIpv4Lsps []*RsvpLspIpv4InterfaceP2PIngressIpv4Lsp `protobuf:"bytes,3,rep,name=p2p_ingress_ipv4_lsps,json=p2pIngressIpv4Lsps,proto3" json:"p2p_ingress_ipv4_lsps,omitempty"` + // One octet bitmap for flags including V-Flag, A-Flag, S-Flag, B-Flag etc. as defined + // in https://datatracker.ietf.org/doc/html/draft-ietf-idr-segment-routing-te-policy-13#section-2.4.4.2.12 + Flags *string `protobuf:"bytes,1,opt,name=flags,proto3,oneof" json:"flags,omitempty"` + // Label value in [0, 2^20 -1]. + Label *uint32 `protobuf:"varint,2,opt,name=label,proto3,oneof" json:"label,omitempty"` + // Traffic class in bits. + Tc *uint32 `protobuf:"varint,3,opt,name=tc,proto3,oneof" json:"tc,omitempty"` + // Bottom-of-Stack bit. + SBit *bool `protobuf:"varint,4,opt,name=s_bit,json=sBit,proto3,oneof" json:"s_bit,omitempty"` + // Time To Live. + Ttl *uint32 `protobuf:"varint,5,opt,name=ttl,proto3,oneof" json:"ttl,omitempty"` } -func (x *RsvpLspIpv4Interface) Reset() { - *x = RsvpLspIpv4Interface{} +func (x *BgpSrteSegmentATypeSubTlv) Reset() { + *x = BgpSrteSegmentATypeSubTlv{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[149] + mi := &file_otg_proto_msgTypes[114] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *RsvpLspIpv4Interface) String() string { +func (x *BgpSrteSegmentATypeSubTlv) String() string { return protoimpl.X.MessageStringOf(x) } -func (*RsvpLspIpv4Interface) ProtoMessage() {} +func (*BgpSrteSegmentATypeSubTlv) ProtoMessage() {} -func (x *RsvpLspIpv4Interface) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[149] +func (x *BgpSrteSegmentATypeSubTlv) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[114] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -30983,88 +30749,79 @@ func (x *RsvpLspIpv4Interface) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use RsvpLspIpv4Interface.ProtoReflect.Descriptor instead. -func (*RsvpLspIpv4Interface) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{149} +// Deprecated: Use BgpSrteSegmentATypeSubTlv.ProtoReflect.Descriptor instead. +func (*BgpSrteSegmentATypeSubTlv) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{114} } -func (x *RsvpLspIpv4Interface) GetIpv4Name() string { - if x != nil && x.Ipv4Name != nil { - return *x.Ipv4Name +func (x *BgpSrteSegmentATypeSubTlv) GetFlags() string { + if x != nil && x.Flags != nil { + return *x.Flags } return "" } -func (x *RsvpLspIpv4Interface) GetP2PEgressIpv4Lsps() *RsvpLspIpv4InterfaceP2PEgressIpv4Lsp { - if x != nil { - return x.P2PEgressIpv4Lsps +func (x *BgpSrteSegmentATypeSubTlv) GetLabel() uint32 { + if x != nil && x.Label != nil { + return *x.Label } - return nil + return 0 } -func (x *RsvpLspIpv4Interface) GetP2PIngressIpv4Lsps() []*RsvpLspIpv4InterfaceP2PIngressIpv4Lsp { - if x != nil { - return x.P2PIngressIpv4Lsps +func (x *BgpSrteSegmentATypeSubTlv) GetTc() uint32 { + if x != nil && x.Tc != nil { + return *x.Tc } - return nil + return 0 } -// Configuration for RSVP Egress Point-to-Point(P2P) IPv4 LSPs. -type RsvpLspIpv4InterfaceP2PEgressIpv4Lsp struct { +func (x *BgpSrteSegmentATypeSubTlv) GetSBit() bool { + if x != nil && x.SBit != nil { + return *x.SBit + } + return false +} + +func (x *BgpSrteSegmentATypeSubTlv) GetTtl() uint32 { + if x != nil && x.Ttl != nil { + return *x.Ttl + } + return 0 +} + +// Type B: SID only, in the form of IPv6 address. +type BgpSrteSegmentBTypeSubTlv struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Globally unique name of an object. It also serves as the primary key for arrays of - // objects. + // One octet bitmap for flags including V-Flag, A-Flag, S-Flag, B-Flag etc. as defined + // in https://datatracker.ietf.org/doc/html/draft-ietf-idr-segment-routing-te-policy-13#section-2.4.4.2.12 + Flags *string `protobuf:"bytes,1,opt,name=flags,proto3,oneof" json:"flags,omitempty"` + // SRv6 SID. // required = true - Name *string `protobuf:"bytes,1,opt,name=name,proto3,oneof" json:"name,omitempty"` - // The time in seconds between successive transmissions of RESV Refreshes. The actual - // refresh interval is jittered by upto 50%. There is no specification specified maximum - // value. For clarity, setting the maximum to 1 hour. - // default = 30 - RefreshInterval *uint32 `protobuf:"varint,2,opt,name=refresh_interval,json=refreshInterval,proto3,oneof" json:"refresh_interval,omitempty"` - // The number of missed PATH refreshes after which a recieving node should consider - // the LSP state to have timed out. There is no specification specified maximum value. - // Setting the maximum allowed value to 10. - // default = 3 - TimeoutMultiplier *uint32 `protobuf:"varint,3,opt,name=timeout_multiplier,json=timeoutMultiplier,proto3,oneof" json:"timeout_multiplier,omitempty"` - // It determines how RSVP-TE enabled network devices set up reservations along the path - // between an end-to-end QOS-enabled connection. If 'auto' is enabled, the style is - // chosen based on whether the incoming Path has 'SE Desired' flag set. Otherwise, the - // style is chosen based on the value selected for this attribute. - // default = ReservationStyle.Enum.shared_explicit - ReservationStyle *RsvpLspIpv4InterfaceP2PEgressIpv4Lsp_ReservationStyle_Enum `protobuf:"varint,4,opt,name=reservation_style,json=reservationStyle,proto3,enum=otg.RsvpLspIpv4InterfaceP2PEgressIpv4Lsp_ReservationStyle_Enum,oneof" json:"reservation_style,omitempty"` - // If enabled, a specific fixed label will be advertised by the egress or tail end for - // all Path messages received by this egress. This can be leveraged to advertise Explicit - // or Implicit null labels. - // default = False - EnableFixedLabel *bool `protobuf:"varint,5,opt,name=enable_fixed_label,json=enableFixedLabel,proto3,oneof" json:"enable_fixed_label,omitempty"` - // The fixed label value as advertised by egress in RESV message. Applicable only if - // 'fixed_label' is set to 'true'. Special values are '0 - IPv4 Explicit NULL', '2 - - // IPv6 Explicit NULL' and '3 - Implicit NULL'. Outside of this, labels are expected - // to have a minimum value of 16. - // default = 0 - FixedLabelValue *uint32 `protobuf:"varint,6,opt,name=fixed_label_value,json=fixedLabelValue,proto3,oneof" json:"fixed_label_value,omitempty"` + Srv6Sid *string `protobuf:"bytes,2,opt,name=srv6_sid,json=srv6Sid,proto3,oneof" json:"srv6_sid,omitempty"` + // Optional SRv6 Endpoint Behavior and SID Structure. + Srv6SidEndpointBehavior *BgpSrteSRv6SIDEndpointBehaviorAndStructure `protobuf:"bytes,3,opt,name=srv6_sid_endpoint_behavior,json=srv6SidEndpointBehavior,proto3" json:"srv6_sid_endpoint_behavior,omitempty"` } -func (x *RsvpLspIpv4InterfaceP2PEgressIpv4Lsp) Reset() { - *x = RsvpLspIpv4InterfaceP2PEgressIpv4Lsp{} +func (x *BgpSrteSegmentBTypeSubTlv) Reset() { + *x = BgpSrteSegmentBTypeSubTlv{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[150] + mi := &file_otg_proto_msgTypes[115] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *RsvpLspIpv4InterfaceP2PEgressIpv4Lsp) String() string { +func (x *BgpSrteSegmentBTypeSubTlv) String() string { return protoimpl.X.MessageStringOf(x) } -func (*RsvpLspIpv4InterfaceP2PEgressIpv4Lsp) ProtoMessage() {} +func (*BgpSrteSegmentBTypeSubTlv) ProtoMessage() {} -func (x *RsvpLspIpv4InterfaceP2PEgressIpv4Lsp) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[150] +func (x *BgpSrteSegmentBTypeSubTlv) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[115] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -31075,134 +30832,68 @@ func (x *RsvpLspIpv4InterfaceP2PEgressIpv4Lsp) ProtoReflect() protoreflect.Messa return mi.MessageOf(x) } -// Deprecated: Use RsvpLspIpv4InterfaceP2PEgressIpv4Lsp.ProtoReflect.Descriptor instead. -func (*RsvpLspIpv4InterfaceP2PEgressIpv4Lsp) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{150} +// Deprecated: Use BgpSrteSegmentBTypeSubTlv.ProtoReflect.Descriptor instead. +func (*BgpSrteSegmentBTypeSubTlv) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{115} } -func (x *RsvpLspIpv4InterfaceP2PEgressIpv4Lsp) GetName() string { - if x != nil && x.Name != nil { - return *x.Name +func (x *BgpSrteSegmentBTypeSubTlv) GetFlags() string { + if x != nil && x.Flags != nil { + return *x.Flags } return "" } -func (x *RsvpLspIpv4InterfaceP2PEgressIpv4Lsp) GetRefreshInterval() uint32 { - if x != nil && x.RefreshInterval != nil { - return *x.RefreshInterval - } - return 0 -} - -func (x *RsvpLspIpv4InterfaceP2PEgressIpv4Lsp) GetTimeoutMultiplier() uint32 { - if x != nil && x.TimeoutMultiplier != nil { - return *x.TimeoutMultiplier - } - return 0 -} - -func (x *RsvpLspIpv4InterfaceP2PEgressIpv4Lsp) GetReservationStyle() RsvpLspIpv4InterfaceP2PEgressIpv4Lsp_ReservationStyle_Enum { - if x != nil && x.ReservationStyle != nil { - return *x.ReservationStyle - } - return RsvpLspIpv4InterfaceP2PEgressIpv4Lsp_ReservationStyle_unspecified -} - -func (x *RsvpLspIpv4InterfaceP2PEgressIpv4Lsp) GetEnableFixedLabel() bool { - if x != nil && x.EnableFixedLabel != nil { - return *x.EnableFixedLabel +func (x *BgpSrteSegmentBTypeSubTlv) GetSrv6Sid() string { + if x != nil && x.Srv6Sid != nil { + return *x.Srv6Sid } - return false + return "" } -func (x *RsvpLspIpv4InterfaceP2PEgressIpv4Lsp) GetFixedLabelValue() uint32 { - if x != nil && x.FixedLabelValue != nil { - return *x.FixedLabelValue +func (x *BgpSrteSegmentBTypeSubTlv) GetSrv6SidEndpointBehavior() *BgpSrteSRv6SIDEndpointBehaviorAndStructure { + if x != nil { + return x.Srv6SidEndpointBehavior } - return 0 + return nil } -// Configuration for an RSVP Ingress point-to-point LSP. -type RsvpLspIpv4InterfaceP2PIngressIpv4Lsp struct { +// Type C: IPv4 Node Address with optional SID. +type BgpSrteSegmentCTypeSubTlv struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Globally unique name of an object. It also serves as the primary key for arrays of - // objects. - // required = true - Name *string `protobuf:"bytes,1,opt,name=name,proto3,oneof" json:"name,omitempty"` - // IPv4 address of the remote endpoint of the LSP. - // required = true - RemoteAddress *string `protobuf:"bytes,2,opt,name=remote_address,json=remoteAddress,proto3,oneof" json:"remote_address,omitempty"` - // The Tunnel ID of the RSVP LSP. Carried in the SESSION object in Path Messages. - // default = 1 - TunnelId *uint32 `protobuf:"varint,3,opt,name=tunnel_id,json=tunnelId,proto3,oneof" json:"tunnel_id,omitempty"` - // The LSP ID of the RSVP LSP. Carried in the SENDER_TEMPLATE object in Path Messages. - // default = 1 - LspId *uint32 `protobuf:"varint,4,opt,name=lsp_id,json=lspId,proto3,oneof" json:"lsp_id,omitempty"` - // The time in seconds between successive transmissions of PATH Refreshes. The actual - // refresh interval is jittered by upto 50%. There is no specification specified maximum - // value. For clarity, setting the maximum to 1 hour. - // default = 30 - RefreshInterval *uint32 `protobuf:"varint,5,opt,name=refresh_interval,json=refreshInterval,proto3,oneof" json:"refresh_interval,omitempty"` - // The number of missed RESV refreshes after which a recieving node should consider - // the LSP state to have timed out. There is no specification specified maximum value. - // Setting the maximum allowed value to 10. - // default = 3 - TimeoutMultiplier *uint32 `protobuf:"varint,6,opt,name=timeout_multiplier,json=timeoutMultiplier,proto3,oneof" json:"timeout_multiplier,omitempty"` - // The LSP id that will be used when creating a Make-Before-Break LSP when the active - // LSP is using lsp_id. If the active LSP on which Make-Before-Break is being done is - // using the backup_lsp_id, the new LSP created will toggle to use the lsp_id instead. - // default = 2 - BackupLspId *uint32 `protobuf:"varint,7,opt,name=backup_lsp_id,json=backupLspId,proto3,oneof" json:"backup_lsp_id,omitempty"` - // The amount of delay in milliseconds that an implementation should wait for before - // switching traffic to the new LSP created after a Make-Before-Break is done on an - // LSP. The default value is 0 which means to switch immediately. An implementation - // should support a minimum delay value of at least 50ms . There is no specification - // specified maximum value. Setting maximum allowed value to 1 minute. If a delay value - // is supplied which is lesser than the minimum delay value supported, a warning should - // be provided indicating that the minimum value of LSP switchover delay is automatically - // increased to the supported minimum value. This warning should be included in the - // list of warnings in the 'Response.Warning' attribute sent in the SetConfig 'Success' - // Response. + // One octet bitmap for flags including V-Flag, A-Flag, S-Flag, B-Flag etc. as defined + // in https://datatracker.ietf.org/doc/html/draft-ietf-idr-segment-routing-te-policy-13#section-2.4.4.2.12 + Flags *string `protobuf:"bytes,1,opt,name=flags,proto3,oneof" json:"flags,omitempty"` + // SR Algorithm identifier when A-Flag in on. // default = 0 - LspSwitchoverDelay *uint32 `protobuf:"varint,8,opt,name=lsp_switchover_delay,json=lspSwitchoverDelay,proto3,oneof" json:"lsp_switchover_delay,omitempty"` - // This contains the values of the fields to be included in the SESSION_ATTRIBUTE object - // in the Path Message sent for the LSP. - SessionAttribute *RsvpSessionAttribute `protobuf:"bytes,9,opt,name=session_attribute,json=sessionAttribute,proto3" json:"session_attribute,omitempty"` - // This contains the values of the fields to be included in the TSPEC object in the - // Path Message sent for the LSP. - Tspec *RsvpTspec `protobuf:"bytes,10,opt,name=tspec,proto3" json:"tspec,omitempty"` - // This contains the values of the fields to be included in the FAST_REROUTE object - // in the Path Message sent for the LSP. - // This is an optional object . If this attribute is not included , the FAST_REROUTE - // object will not be included. - FastReroute *RsvpFastReroute `protobuf:"bytes,11,opt,name=fast_reroute,json=fastReroute,proto3" json:"fast_reroute,omitempty"` - // This contains the values of the fields to be included in the ERO object in the Path - // Message sent for the LSP. - // This is an optional object . If this attribute is not included , the ERO object will - // not be included. - Ero *RsvpEro `protobuf:"bytes,12,opt,name=ero,proto3" json:"ero,omitempty"` + SrAlgorithm *uint32 `protobuf:"varint,2,opt,name=sr_algorithm,json=srAlgorithm,proto3,oneof" json:"sr_algorithm,omitempty"` + // IPv4 address representing a node. + // required = true + Ipv4NodeAddress *string `protobuf:"bytes,3,opt,name=ipv4_node_address,json=ipv4NodeAddress,proto3,oneof" json:"ipv4_node_address,omitempty"` + // Optional SR-MPLS SID. + SrMplsSid *BgpSrteSrMplsSid `protobuf:"bytes,4,opt,name=sr_mpls_sid,json=srMplsSid,proto3" json:"sr_mpls_sid,omitempty"` } -func (x *RsvpLspIpv4InterfaceP2PIngressIpv4Lsp) Reset() { - *x = RsvpLspIpv4InterfaceP2PIngressIpv4Lsp{} +func (x *BgpSrteSegmentCTypeSubTlv) Reset() { + *x = BgpSrteSegmentCTypeSubTlv{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[151] + mi := &file_otg_proto_msgTypes[116] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *RsvpLspIpv4InterfaceP2PIngressIpv4Lsp) String() string { +func (x *BgpSrteSegmentCTypeSubTlv) String() string { return protoimpl.X.MessageStringOf(x) } -func (*RsvpLspIpv4InterfaceP2PIngressIpv4Lsp) ProtoMessage() {} +func (*BgpSrteSegmentCTypeSubTlv) ProtoMessage() {} -func (x *RsvpLspIpv4InterfaceP2PIngressIpv4Lsp) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[151] +func (x *BgpSrteSegmentCTypeSubTlv) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[116] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -31213,177 +30904,154 @@ func (x *RsvpLspIpv4InterfaceP2PIngressIpv4Lsp) ProtoReflect() protoreflect.Mess return mi.MessageOf(x) } -// Deprecated: Use RsvpLspIpv4InterfaceP2PIngressIpv4Lsp.ProtoReflect.Descriptor instead. -func (*RsvpLspIpv4InterfaceP2PIngressIpv4Lsp) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{151} +// Deprecated: Use BgpSrteSegmentCTypeSubTlv.ProtoReflect.Descriptor instead. +func (*BgpSrteSegmentCTypeSubTlv) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{116} } -func (x *RsvpLspIpv4InterfaceP2PIngressIpv4Lsp) GetName() string { - if x != nil && x.Name != nil { - return *x.Name +func (x *BgpSrteSegmentCTypeSubTlv) GetFlags() string { + if x != nil && x.Flags != nil { + return *x.Flags } return "" } -func (x *RsvpLspIpv4InterfaceP2PIngressIpv4Lsp) GetRemoteAddress() string { - if x != nil && x.RemoteAddress != nil { - return *x.RemoteAddress +func (x *BgpSrteSegmentCTypeSubTlv) GetSrAlgorithm() uint32 { + if x != nil && x.SrAlgorithm != nil { + return *x.SrAlgorithm } - return "" + return 0 } -func (x *RsvpLspIpv4InterfaceP2PIngressIpv4Lsp) GetTunnelId() uint32 { - if x != nil && x.TunnelId != nil { - return *x.TunnelId +func (x *BgpSrteSegmentCTypeSubTlv) GetIpv4NodeAddress() string { + if x != nil && x.Ipv4NodeAddress != nil { + return *x.Ipv4NodeAddress } - return 0 + return "" } -func (x *RsvpLspIpv4InterfaceP2PIngressIpv4Lsp) GetLspId() uint32 { - if x != nil && x.LspId != nil { - return *x.LspId +func (x *BgpSrteSegmentCTypeSubTlv) GetSrMplsSid() *BgpSrteSrMplsSid { + if x != nil { + return x.SrMplsSid } - return 0 + return nil } -func (x *RsvpLspIpv4InterfaceP2PIngressIpv4Lsp) GetRefreshInterval() uint32 { - if x != nil && x.RefreshInterval != nil { - return *x.RefreshInterval +// Type D: IPv6 Node Address with optional SID for SR MPLS. +type BgpSrteSegmentDTypeSubTlv struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // One octet bitmap for flags including V-Flag, A-Flag, S-Flag, B-Flag etc. as defined + // in https://datatracker.ietf.org/doc/html/draft-ietf-idr-segment-routing-te-policy-13#section-2.4.4.2.12 + Flags *string `protobuf:"bytes,1,opt,name=flags,proto3,oneof" json:"flags,omitempty"` + // specifying SR Algorithm when when A-Flag as defined in above flags. + // default = 0 + SrAlgorithm *uint32 `protobuf:"varint,2,opt,name=sr_algorithm,json=srAlgorithm,proto3,oneof" json:"sr_algorithm,omitempty"` + // IPv6 address representing a node. + // required = true + Ipv6NodeAddress *string `protobuf:"bytes,3,opt,name=ipv6_node_address,json=ipv6NodeAddress,proto3,oneof" json:"ipv6_node_address,omitempty"` + // Optional SR-MPLS SID. + SrMplsSid *BgpSrteSrMplsSid `protobuf:"bytes,4,opt,name=sr_mpls_sid,json=srMplsSid,proto3" json:"sr_mpls_sid,omitempty"` +} + +func (x *BgpSrteSegmentDTypeSubTlv) Reset() { + *x = BgpSrteSegmentDTypeSubTlv{} + if protoimpl.UnsafeEnabled { + mi := &file_otg_proto_msgTypes[117] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } - return 0 } -func (x *RsvpLspIpv4InterfaceP2PIngressIpv4Lsp) GetTimeoutMultiplier() uint32 { - if x != nil && x.TimeoutMultiplier != nil { - return *x.TimeoutMultiplier +func (x *BgpSrteSegmentDTypeSubTlv) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*BgpSrteSegmentDTypeSubTlv) ProtoMessage() {} + +func (x *BgpSrteSegmentDTypeSubTlv) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[117] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms } - return 0 + return mi.MessageOf(x) } -func (x *RsvpLspIpv4InterfaceP2PIngressIpv4Lsp) GetBackupLspId() uint32 { - if x != nil && x.BackupLspId != nil { - return *x.BackupLspId +// Deprecated: Use BgpSrteSegmentDTypeSubTlv.ProtoReflect.Descriptor instead. +func (*BgpSrteSegmentDTypeSubTlv) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{117} +} + +func (x *BgpSrteSegmentDTypeSubTlv) GetFlags() string { + if x != nil && x.Flags != nil { + return *x.Flags } - return 0 + return "" } -func (x *RsvpLspIpv4InterfaceP2PIngressIpv4Lsp) GetLspSwitchoverDelay() uint32 { - if x != nil && x.LspSwitchoverDelay != nil { - return *x.LspSwitchoverDelay +func (x *BgpSrteSegmentDTypeSubTlv) GetSrAlgorithm() uint32 { + if x != nil && x.SrAlgorithm != nil { + return *x.SrAlgorithm } return 0 } -func (x *RsvpLspIpv4InterfaceP2PIngressIpv4Lsp) GetSessionAttribute() *RsvpSessionAttribute { - if x != nil { - return x.SessionAttribute +func (x *BgpSrteSegmentDTypeSubTlv) GetIpv6NodeAddress() string { + if x != nil && x.Ipv6NodeAddress != nil { + return *x.Ipv6NodeAddress } - return nil + return "" } -func (x *RsvpLspIpv4InterfaceP2PIngressIpv4Lsp) GetTspec() *RsvpTspec { +func (x *BgpSrteSegmentDTypeSubTlv) GetSrMplsSid() *BgpSrteSrMplsSid { if x != nil { - return x.Tspec + return x.SrMplsSid } return nil } -func (x *RsvpLspIpv4InterfaceP2PIngressIpv4Lsp) GetFastReroute() *RsvpFastReroute { - if x != nil { - return x.FastReroute - } - return nil -} - -func (x *RsvpLspIpv4InterfaceP2PIngressIpv4Lsp) GetEro() *RsvpEro { - if x != nil { - return x.Ero - } - return nil -} - -// Configuration for RSVP-TE SESSION_ATTRIBUTE object included in Path Messages as defined -// in RFC3209. The bandwidth_protection_desired and node_protection_desired flags are -// defined in RFC4090 (Fast Reroute). -type RsvpSessionAttribute struct { +// Type E: IPv4 Address and Local Interface ID with optional SID +type BgpSrteSegmentETypeSubTlv struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // If this is enabled, an auto-generated Session Name is included in the SESSION_ATTRIBUTE - // object in the Path Message for this LSP. - // default = True - AutoGenerateSessionName *bool `protobuf:"varint,1,opt,name=auto_generate_session_name,json=autoGenerateSessionName,proto3,oneof" json:"auto_generate_session_name,omitempty"` - // If auto_generate_session_name is set to 'false', then the value of this field is - // used to fill the Session Name field of the SESSION_ATTRIBUTE object in the Path Message - // for this LSP. It is suggested to include the Local IP, Remote IP, Tunnel ID and LSP - // ID in the auto-generated Session Name to ensure uniqueness of the name in the test. - // The maximum length of session name is 254 bytes. - SessionName *string `protobuf:"bytes,2,opt,name=session_name,json=sessionName,proto3,oneof" json:"session_name,omitempty"` - // Specifies the value of the Setup Priority field. This controls whether the LSP should - // pre-empt existing LSP setup with certain Holding Priority if resource limitation - // is encountered when setting up the LSP. (e.g. bandwidth availability). The value - // 0 is the highest priority while 7 is the lowest. - // default = 7 - SetupPriority *uint32 `protobuf:"varint,3,opt,name=setup_priority,json=setupPriority,proto3,oneof" json:"setup_priority,omitempty"` - // Specifies the value of the Holding Priority field. This controls whether a new LSP - // being created with certain Setup Priority should pre-empt this LSP if resource limitation - // is encountered when setting up the LSP. (e.g. bandwidth availability). The value - // 0 is the highest priority while 7 is the lowest. - // default = 7 - HoldingPriority *uint32 `protobuf:"varint,4,opt,name=holding_priority,json=holdingPriority,proto3,oneof" json:"holding_priority,omitempty"` - // This flag permits transit routers to use a local repair mechanism which may result - // in violation of the explicit route object. When a fault is detected on an adjacent - // downstream link or node, a transit router can reroute traffic for fast service restoration. - // default = False - LocalProtectionDesired *bool `protobuf:"varint,5,opt,name=local_protection_desired,json=localProtectionDesired,proto3,oneof" json:"local_protection_desired,omitempty"` - // This flag indicates that label information should be included when doing a route - // record. - // default = False - LabelRecordingDesired *bool `protobuf:"varint,6,opt,name=label_recording_desired,json=labelRecordingDesired,proto3,oneof" json:"label_recording_desired,omitempty"` - // This flag indicates that the tunnel ingress node may choose to reroute this tunnel - // without tearing it down. A tunnel egress node SHOULD use the Shared Explicit(SE) - // Style when responding with a Resv message. - // default = False - SeStyleDesired *bool `protobuf:"varint,7,opt,name=se_style_desired,json=seStyleDesired,proto3,oneof" json:"se_style_desired,omitempty"` - // This flag in the SESSION_ATTRIBUTE object in the Path Message indicates to the PLRs - // along the protected LSP path that a backup path with a bandwidth guarantee is desired. - // This bandwidth has to be guaranteed for the protected LSP, if no FAST_REROUTE object - // is included in the PATH message. If a FAST_REROUTE object is present in the Path - // message, then the bandwidth specified therein is to be guaranteed. - // default = False - BandwidthProtectionDesired *bool `protobuf:"varint,8,opt,name=bandwidth_protection_desired,json=bandwidthProtectionDesired,proto3,oneof" json:"bandwidth_protection_desired,omitempty"` - // This flag in the SESSION_ATTRIBUTE object in the Path Message indicates to the PLRs - // along a protected LSP path that it is desired to have a backup path that bypasses - // at least the next node of the protected LSP. - // default = False - NodeProtectionDesired *bool `protobuf:"varint,9,opt,name=node_protection_desired,json=nodeProtectionDesired,proto3,oneof" json:"node_protection_desired,omitempty"` - // This is an optional object. If included the extended SESSION_ATTRIBUTE object is - // sent in the Path message containing - // the additional fields included in this object. This contains a set of three bitmaps - // using which further constraints can be - // set on the path calculated for the LSP based on the Admin Group settings in the IGP - // (e.g ISIS or OSPF interface). - ResourceAffinities *RsvpResourceAffinities `protobuf:"bytes,10,opt,name=resource_affinities,json=resourceAffinities,proto3" json:"resource_affinities,omitempty"` + // One octet bitmap for flags including V-Flag, A-Flag, S-Flag, B-Flag etc. as defined + // in https://datatracker.ietf.org/doc/html/draft-ietf-idr-segment-routing-te-policy-13#section-2.4.4.2.12 + Flags *string `protobuf:"bytes,1,opt,name=flags,proto3,oneof" json:"flags,omitempty"` + // Local Interface ID: The Interface Index as defined in [RFC8664]. + // default = 0 + LocalInterfaceId *uint32 `protobuf:"varint,2,opt,name=local_interface_id,json=localInterfaceId,proto3,oneof" json:"local_interface_id,omitempty"` + // IPv4 address representing a node. + // required = true + Ipv4NodeAddress *string `protobuf:"bytes,3,opt,name=ipv4_node_address,json=ipv4NodeAddress,proto3,oneof" json:"ipv4_node_address,omitempty"` + // Optional SR-MPLS SID. + SrMplsSid *BgpSrteSrMplsSid `protobuf:"bytes,4,opt,name=sr_mpls_sid,json=srMplsSid,proto3" json:"sr_mpls_sid,omitempty"` } -func (x *RsvpSessionAttribute) Reset() { - *x = RsvpSessionAttribute{} +func (x *BgpSrteSegmentETypeSubTlv) Reset() { + *x = BgpSrteSegmentETypeSubTlv{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[152] + mi := &file_otg_proto_msgTypes[118] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *RsvpSessionAttribute) String() string { +func (x *BgpSrteSegmentETypeSubTlv) String() string { return protoimpl.X.MessageStringOf(x) } -func (*RsvpSessionAttribute) ProtoMessage() {} +func (*BgpSrteSegmentETypeSubTlv) ProtoMessage() {} -func (x *RsvpSessionAttribute) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[152] +func (x *BgpSrteSegmentETypeSubTlv) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[118] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -31394,132 +31062,75 @@ func (x *RsvpSessionAttribute) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use RsvpSessionAttribute.ProtoReflect.Descriptor instead. -func (*RsvpSessionAttribute) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{152} -} - -func (x *RsvpSessionAttribute) GetAutoGenerateSessionName() bool { - if x != nil && x.AutoGenerateSessionName != nil { - return *x.AutoGenerateSessionName - } - return false +// Deprecated: Use BgpSrteSegmentETypeSubTlv.ProtoReflect.Descriptor instead. +func (*BgpSrteSegmentETypeSubTlv) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{118} } -func (x *RsvpSessionAttribute) GetSessionName() string { - if x != nil && x.SessionName != nil { - return *x.SessionName +func (x *BgpSrteSegmentETypeSubTlv) GetFlags() string { + if x != nil && x.Flags != nil { + return *x.Flags } return "" } -func (x *RsvpSessionAttribute) GetSetupPriority() uint32 { - if x != nil && x.SetupPriority != nil { - return *x.SetupPriority - } - return 0 -} - -func (x *RsvpSessionAttribute) GetHoldingPriority() uint32 { - if x != nil && x.HoldingPriority != nil { - return *x.HoldingPriority +func (x *BgpSrteSegmentETypeSubTlv) GetLocalInterfaceId() uint32 { + if x != nil && x.LocalInterfaceId != nil { + return *x.LocalInterfaceId } return 0 } -func (x *RsvpSessionAttribute) GetLocalProtectionDesired() bool { - if x != nil && x.LocalProtectionDesired != nil { - return *x.LocalProtectionDesired - } - return false -} - -func (x *RsvpSessionAttribute) GetLabelRecordingDesired() bool { - if x != nil && x.LabelRecordingDesired != nil { - return *x.LabelRecordingDesired - } - return false -} - -func (x *RsvpSessionAttribute) GetSeStyleDesired() bool { - if x != nil && x.SeStyleDesired != nil { - return *x.SeStyleDesired - } - return false -} - -func (x *RsvpSessionAttribute) GetBandwidthProtectionDesired() bool { - if x != nil && x.BandwidthProtectionDesired != nil { - return *x.BandwidthProtectionDesired - } - return false -} - -func (x *RsvpSessionAttribute) GetNodeProtectionDesired() bool { - if x != nil && x.NodeProtectionDesired != nil { - return *x.NodeProtectionDesired +func (x *BgpSrteSegmentETypeSubTlv) GetIpv4NodeAddress() string { + if x != nil && x.Ipv4NodeAddress != nil { + return *x.Ipv4NodeAddress } - return false + return "" } -func (x *RsvpSessionAttribute) GetResourceAffinities() *RsvpResourceAffinities { +func (x *BgpSrteSegmentETypeSubTlv) GetSrMplsSid() *BgpSrteSrMplsSid { if x != nil { - return x.ResourceAffinities + return x.SrMplsSid } return nil } -// This is an optional object. If included, the extended SESSION_ATTRIBUTE object is -// sent in the Path message containing -// the additional fields included in this object. This contains a set of three bitmaps -// using which further constraints can be -// set on the path calculated for the LSP based on the Admin Group settings in the IGP -// (e.g ISIS or OSPF interface). -type RsvpResourceAffinities struct { +// Type F: IPv4 Local and Remote addresses with optional SID. +type BgpSrteSegmentFTypeSubTlv struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // A 32-bit vector representing a set of attribute filters associated with a tunnel - // any of which renders a link unacceptable. A null set (all bits set to zero) doesn't - // render the link unacceptable. The most significant byte in the hex-string is the - // farthest to the left in the byte sequence. Leading zero bytes in the configured - // value may be omitted for brevity. - // default = 0 - ExcludeAny *string `protobuf:"bytes,1,opt,name=exclude_any,json=excludeAny,proto3,oneof" json:"exclude_any,omitempty"` - // A 32-bit vector representing a set of attribute filters associated with a tunnel - // any of which renders a link acceptable. A null set (all bits set to zero) automatically - // passes. The most significant byte in the hex-string is the farthest to the left - // in the byte sequence. Leading zero bytes in the configured value may be omitted - // for brevity. - // default = 0 - IncludeAny *string `protobuf:"bytes,2,opt,name=include_any,json=includeAny,proto3,oneof" json:"include_any,omitempty"` - // A 32-bit vector representing a set of attribute filters associated with a tunnel - // all of which must be present for a link to be acceptable. A null set (all bits set - // to zero) automatically passes. The most significant byte in the hex-string is the - // farthest to the left in the byte sequence. Leading zero bytes in the configured - // value may be omitted for brevity. - // default = 0 - IncludeAll *string `protobuf:"bytes,3,opt,name=include_all,json=includeAll,proto3,oneof" json:"include_all,omitempty"` + // One octet bitmap for flags including V-Flag, A-Flag, S-Flag, B-Flag etc. as defined + // in https://datatracker.ietf.org/doc/html/draft-ietf-idr-segment-routing-te-policy-13#section-2.4.4.2.12 + Flags *string `protobuf:"bytes,1,opt,name=flags,proto3,oneof" json:"flags,omitempty"` + // Local IPv4 Address. + // required = true + LocalIpv4Address *string `protobuf:"bytes,2,opt,name=local_ipv4_address,json=localIpv4Address,proto3,oneof" json:"local_ipv4_address,omitempty"` + // Remote IPv4 Address. + // required = true + RemoteIpv4Address *string `protobuf:"bytes,3,opt,name=remote_ipv4_address,json=remoteIpv4Address,proto3,oneof" json:"remote_ipv4_address,omitempty"` + // Optional SR-MPLS SID. + SrMplsSid *BgpSrteSrMplsSid `protobuf:"bytes,4,opt,name=sr_mpls_sid,json=srMplsSid,proto3" json:"sr_mpls_sid,omitempty"` } -func (x *RsvpResourceAffinities) Reset() { - *x = RsvpResourceAffinities{} +func (x *BgpSrteSegmentFTypeSubTlv) Reset() { + *x = BgpSrteSegmentFTypeSubTlv{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[153] + mi := &file_otg_proto_msgTypes[119] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *RsvpResourceAffinities) String() string { +func (x *BgpSrteSegmentFTypeSubTlv) String() string { return protoimpl.X.MessageStringOf(x) } -func (*RsvpResourceAffinities) ProtoMessage() {} +func (*BgpSrteSegmentFTypeSubTlv) ProtoMessage() {} -func (x *RsvpResourceAffinities) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[153] +func (x *BgpSrteSegmentFTypeSubTlv) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[119] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -31530,78 +31141,82 @@ func (x *RsvpResourceAffinities) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use RsvpResourceAffinities.ProtoReflect.Descriptor instead. -func (*RsvpResourceAffinities) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{153} +// Deprecated: Use BgpSrteSegmentFTypeSubTlv.ProtoReflect.Descriptor instead. +func (*BgpSrteSegmentFTypeSubTlv) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{119} } -func (x *RsvpResourceAffinities) GetExcludeAny() string { - if x != nil && x.ExcludeAny != nil { - return *x.ExcludeAny +func (x *BgpSrteSegmentFTypeSubTlv) GetFlags() string { + if x != nil && x.Flags != nil { + return *x.Flags } return "" } -func (x *RsvpResourceAffinities) GetIncludeAny() string { - if x != nil && x.IncludeAny != nil { - return *x.IncludeAny +func (x *BgpSrteSegmentFTypeSubTlv) GetLocalIpv4Address() string { + if x != nil && x.LocalIpv4Address != nil { + return *x.LocalIpv4Address } return "" } -func (x *RsvpResourceAffinities) GetIncludeAll() string { - if x != nil && x.IncludeAll != nil { - return *x.IncludeAll +func (x *BgpSrteSegmentFTypeSubTlv) GetRemoteIpv4Address() string { + if x != nil && x.RemoteIpv4Address != nil { + return *x.RemoteIpv4Address } return "" } -// Configuration for RSVP-TE TSPEC object included in Path Messages. The usage of these -// parameters is defined in RFC2215. -type RsvpTspec struct { +func (x *BgpSrteSegmentFTypeSubTlv) GetSrMplsSid() *BgpSrteSrMplsSid { + if x != nil { + return x.SrMplsSid + } + return nil +} + +// Type G: IPv6 Address, Interface ID for local and remote pair with optional SID for +// SR MPLS. +type BgpSrteSegmentGTypeSubTlv struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // The rate of the traffic to be carried in this LSP in bytes per second. This is part - // of the Token Bucket specification defined for a traffic flow defined in RFC2215. - // default = 0 - TokenBucketRate *float32 `protobuf:"fixed32,1,opt,name=token_bucket_rate,json=tokenBucketRate,proto3,oneof" json:"token_bucket_rate,omitempty"` - // The depth of the token bucket in bytes used to specify the Token Bucket characteristics - // of the traffic to be carried in the LSP. This is part of the Token Bucket specification - // defined for a traffic flow defined in RFC2215. - // default = 0 - TokenBucketSize *float32 `protobuf:"fixed32,2,opt,name=token_bucket_size,json=tokenBucketSize,proto3,oneof" json:"token_bucket_size,omitempty"` - // The peak data rate of the traffic in bytes per second used to specify the Token Bucket - // characteristics of the traffic to be carried in the LSP. This is part of the Token - // Bucket specification defined for a traffic flow defined in RFC2215. - // default = 0 - PeakDataRate *float32 `protobuf:"fixed32,3,opt,name=peak_data_rate,json=peakDataRate,proto3,oneof" json:"peak_data_rate,omitempty"` - // Specifies the minium length of packet frames that will be policed. + // One octet bitmap for flags including V-Flag, A-Flag, S-Flag, B-Flag etc. as defined + // in https://datatracker.ietf.org/doc/html/draft-ietf-idr-segment-routing-te-policy-13#section-2.4.4.2.12 + Flags *string `protobuf:"bytes,1,opt,name=flags,proto3,oneof" json:"flags,omitempty"` + // Local Interface ID: The Interface Index as defined in [RFC8664]. // default = 0 - MinimumPolicedUnit *uint32 `protobuf:"varint,4,opt,name=minimum_policed_unit,json=minimumPolicedUnit,proto3,oneof" json:"minimum_policed_unit,omitempty"` - // Specifies the maximum length of packet frames that will be policed. + LocalInterfaceId *uint32 `protobuf:"varint,2,opt,name=local_interface_id,json=localInterfaceId,proto3,oneof" json:"local_interface_id,omitempty"` + // IPv6 address representing a node. + // required = true + LocalIpv6NodeAddress *string `protobuf:"bytes,3,opt,name=local_ipv6_node_address,json=localIpv6NodeAddress,proto3,oneof" json:"local_ipv6_node_address,omitempty"` + // Local Interface ID: The Interface Index as defined in [RFC8664]. // default = 0 - MaximumPolicedUnit *uint32 `protobuf:"varint,5,opt,name=maximum_policed_unit,json=maximumPolicedUnit,proto3,oneof" json:"maximum_policed_unit,omitempty"` + RemoteInterfaceId *uint32 `protobuf:"varint,4,opt,name=remote_interface_id,json=remoteInterfaceId,proto3,oneof" json:"remote_interface_id,omitempty"` + // IPv6 address representing a node. + // required = true + RemoteIpv6NodeAddress *string `protobuf:"bytes,5,opt,name=remote_ipv6_node_address,json=remoteIpv6NodeAddress,proto3,oneof" json:"remote_ipv6_node_address,omitempty"` + // Optional SR-MPLS SID. + SrMplsSid *BgpSrteSrMplsSid `protobuf:"bytes,6,opt,name=sr_mpls_sid,json=srMplsSid,proto3" json:"sr_mpls_sid,omitempty"` } -func (x *RsvpTspec) Reset() { - *x = RsvpTspec{} +func (x *BgpSrteSegmentGTypeSubTlv) Reset() { + *x = BgpSrteSegmentGTypeSubTlv{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[154] + mi := &file_otg_proto_msgTypes[120] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *RsvpTspec) String() string { +func (x *BgpSrteSegmentGTypeSubTlv) String() string { return protoimpl.X.MessageStringOf(x) } -func (*RsvpTspec) ProtoMessage() {} +func (*BgpSrteSegmentGTypeSubTlv) ProtoMessage() {} -func (x *RsvpTspec) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[154] +func (x *BgpSrteSegmentGTypeSubTlv) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[120] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -31612,119 +31227,89 @@ func (x *RsvpTspec) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use RsvpTspec.ProtoReflect.Descriptor instead. -func (*RsvpTspec) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{154} +// Deprecated: Use BgpSrteSegmentGTypeSubTlv.ProtoReflect.Descriptor instead. +func (*BgpSrteSegmentGTypeSubTlv) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{120} } -func (x *RsvpTspec) GetTokenBucketRate() float32 { - if x != nil && x.TokenBucketRate != nil { - return *x.TokenBucketRate +func (x *BgpSrteSegmentGTypeSubTlv) GetFlags() string { + if x != nil && x.Flags != nil { + return *x.Flags } - return 0 + return "" } -func (x *RsvpTspec) GetTokenBucketSize() float32 { - if x != nil && x.TokenBucketSize != nil { - return *x.TokenBucketSize +func (x *BgpSrteSegmentGTypeSubTlv) GetLocalInterfaceId() uint32 { + if x != nil && x.LocalInterfaceId != nil { + return *x.LocalInterfaceId } return 0 } -func (x *RsvpTspec) GetPeakDataRate() float32 { - if x != nil && x.PeakDataRate != nil { - return *x.PeakDataRate +func (x *BgpSrteSegmentGTypeSubTlv) GetLocalIpv6NodeAddress() string { + if x != nil && x.LocalIpv6NodeAddress != nil { + return *x.LocalIpv6NodeAddress } - return 0 + return "" } -func (x *RsvpTspec) GetMinimumPolicedUnit() uint32 { - if x != nil && x.MinimumPolicedUnit != nil { - return *x.MinimumPolicedUnit +func (x *BgpSrteSegmentGTypeSubTlv) GetRemoteInterfaceId() uint32 { + if x != nil && x.RemoteInterfaceId != nil { + return *x.RemoteInterfaceId } return 0 } -func (x *RsvpTspec) GetMaximumPolicedUnit() uint32 { - if x != nil && x.MaximumPolicedUnit != nil { - return *x.MaximumPolicedUnit +func (x *BgpSrteSegmentGTypeSubTlv) GetRemoteIpv6NodeAddress() string { + if x != nil && x.RemoteIpv6NodeAddress != nil { + return *x.RemoteIpv6NodeAddress } - return 0 + return "" } -// Configuration for the optional RSVP-TE FAST_REROUTE object included in Path Messages -// as defined in RFC4090. -type RsvpFastReroute struct { +func (x *BgpSrteSegmentGTypeSubTlv) GetSrMplsSid() *BgpSrteSrMplsSid { + if x != nil { + return x.SrMplsSid + } + return nil +} + +// Type H: IPv6 Local and Remote addresses with optional SID for SR MPLS. +type BgpSrteSegmentHTypeSubTlv struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Specifies the value of the Setup Priority field. This controls whether the backup - // LSP should pre-empt existing LSP that is setup with certain Holding Priority. While - // setting up a backup LSP, preemption of existing LSP can happen if resource limitation - // is encountered (e.g bandwidth availability). - // default = 7 - SetupPriority *uint32 `protobuf:"varint,1,opt,name=setup_priority,json=setupPriority,proto3,oneof" json:"setup_priority,omitempty"` - // Specifies the value of the Holding Priority field. This controls whether a new LSP - // being created with certain Setup Priority should pre-empt this LSP set up with this - // Holding Priority. While setting up a new LSP, preemption of existing LSP can happen - // if resource limitation is encountered (e.g bandwidth availability). - // default = 7 - HoldingPriority *uint32 `protobuf:"varint,2,opt,name=holding_priority,json=holdingPriority,proto3,oneof" json:"holding_priority,omitempty"` - // Specifies the value of the Hop Limit field. This controls the maximum number of hops - // the LSP should traverse to reach the LSP end-point. - // default = 3 - HopLimit *uint32 `protobuf:"varint,3,opt,name=hop_limit,json=hopLimit,proto3,oneof" json:"hop_limit,omitempty"` - // Specifies the value of the Bandwidth field as a 32-bit IEEE floating point integer, - // in bytes per second, as desired for the LSP. - // default = 0 - Bandwidth *float32 `protobuf:"fixed32,4,opt,name=bandwidth,proto3,oneof" json:"bandwidth,omitempty"` - // A 32-bit vector representing a set of attribute filters associated with a tunnel - // any of which renders a link unacceptable. A null set (all bits set to zero) doesn't - // render the link unacceptable. The most significant byte in the hex-string is the - // farthest to the left in the byte sequence. Leading zero bytes in the configured - // value may be omitted for brevity. - // default = 0 - ExcludeAny *string `protobuf:"bytes,5,opt,name=exclude_any,json=excludeAny,proto3,oneof" json:"exclude_any,omitempty"` - // A 32-bit vector representing a set of attribute filters associated with a tunnel - // any of which renders a link acceptable. A null set (all bits set to zero) automatically - // passes. The most significant byte in the hex-string is the farthest to the left - // in the byte sequence. Leading zero bytes in the configured value may be omitted - // for brevity. - // default = 0 - IncludeAny *string `protobuf:"bytes,6,opt,name=include_any,json=includeAny,proto3,oneof" json:"include_any,omitempty"` - // A 32-bit vector representing a set of attribute filters associated with a tunnel - // all of which must be present for a link to be acceptable. A null set (all bits set - // to zero) automatically passes. The most significant byte in the hex-string is the - // farthest to the left in the byte sequence. Leading zero bytes in the configured - // value may be omitted for brevity. - // default = 0 - IncludeAll *string `protobuf:"bytes,7,opt,name=include_all,json=includeAll,proto3,oneof" json:"include_all,omitempty"` - // Requests protection via the one-to-one backup method. - // default = False - OneToOneBackupDesired *bool `protobuf:"varint,8,opt,name=one_to_one_backup_desired,json=oneToOneBackupDesired,proto3,oneof" json:"one_to_one_backup_desired,omitempty"` - // Requests protection via the facility backup method. - // default = False - FacilityBackupDesired *bool `protobuf:"varint,9,opt,name=facility_backup_desired,json=facilityBackupDesired,proto3,oneof" json:"facility_backup_desired,omitempty"` + // One octet bitmap for flags including V-Flag, A-Flag, S-Flag, B-Flag etc. as defined + // in https://datatracker.ietf.org/doc/html/draft-ietf-idr-segment-routing-te-policy-13#section-2.4.4.2.12 + Flags *string `protobuf:"bytes,1,opt,name=flags,proto3,oneof" json:"flags,omitempty"` + // Local IPv6 Address. + // required = true + LocalIpv6Address *string `protobuf:"bytes,2,opt,name=local_ipv6_address,json=localIpv6Address,proto3,oneof" json:"local_ipv6_address,omitempty"` + // Remote IPv6 Address. + // required = true + RemoteIpv6Address *string `protobuf:"bytes,3,opt,name=remote_ipv6_address,json=remoteIpv6Address,proto3,oneof" json:"remote_ipv6_address,omitempty"` + // Optional SR-MPLS SID. + SrMplsSid *BgpSrteSrMplsSid `protobuf:"bytes,4,opt,name=sr_mpls_sid,json=srMplsSid,proto3" json:"sr_mpls_sid,omitempty"` } -func (x *RsvpFastReroute) Reset() { - *x = RsvpFastReroute{} +func (x *BgpSrteSegmentHTypeSubTlv) Reset() { + *x = BgpSrteSegmentHTypeSubTlv{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[155] + mi := &file_otg_proto_msgTypes[121] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *RsvpFastReroute) String() string { +func (x *BgpSrteSegmentHTypeSubTlv) String() string { return protoimpl.X.MessageStringOf(x) } -func (*RsvpFastReroute) ProtoMessage() {} +func (*BgpSrteSegmentHTypeSubTlv) ProtoMessage() {} -func (x *RsvpFastReroute) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[155] +func (x *BgpSrteSegmentHTypeSubTlv) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[121] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -31735,115 +31320,74 @@ func (x *RsvpFastReroute) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use RsvpFastReroute.ProtoReflect.Descriptor instead. -func (*RsvpFastReroute) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{155} -} - -func (x *RsvpFastReroute) GetSetupPriority() uint32 { - if x != nil && x.SetupPriority != nil { - return *x.SetupPriority - } - return 0 -} - -func (x *RsvpFastReroute) GetHoldingPriority() uint32 { - if x != nil && x.HoldingPriority != nil { - return *x.HoldingPriority - } - return 0 -} - -func (x *RsvpFastReroute) GetHopLimit() uint32 { - if x != nil && x.HopLimit != nil { - return *x.HopLimit - } - return 0 -} - -func (x *RsvpFastReroute) GetBandwidth() float32 { - if x != nil && x.Bandwidth != nil { - return *x.Bandwidth - } - return 0 +// Deprecated: Use BgpSrteSegmentHTypeSubTlv.ProtoReflect.Descriptor instead. +func (*BgpSrteSegmentHTypeSubTlv) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{121} } -func (x *RsvpFastReroute) GetExcludeAny() string { - if x != nil && x.ExcludeAny != nil { - return *x.ExcludeAny +func (x *BgpSrteSegmentHTypeSubTlv) GetFlags() string { + if x != nil && x.Flags != nil { + return *x.Flags } return "" } -func (x *RsvpFastReroute) GetIncludeAny() string { - if x != nil && x.IncludeAny != nil { - return *x.IncludeAny +func (x *BgpSrteSegmentHTypeSubTlv) GetLocalIpv6Address() string { + if x != nil && x.LocalIpv6Address != nil { + return *x.LocalIpv6Address } return "" } -func (x *RsvpFastReroute) GetIncludeAll() string { - if x != nil && x.IncludeAll != nil { - return *x.IncludeAll +func (x *BgpSrteSegmentHTypeSubTlv) GetRemoteIpv6Address() string { + if x != nil && x.RemoteIpv6Address != nil { + return *x.RemoteIpv6Address } return "" } -func (x *RsvpFastReroute) GetOneToOneBackupDesired() bool { - if x != nil && x.OneToOneBackupDesired != nil { - return *x.OneToOneBackupDesired - } - return false -} - -func (x *RsvpFastReroute) GetFacilityBackupDesired() bool { - if x != nil && x.FacilityBackupDesired != nil { - return *x.FacilityBackupDesired +func (x *BgpSrteSegmentHTypeSubTlv) GetSrMplsSid() *BgpSrteSrMplsSid { + if x != nil { + return x.SrMplsSid } - return false + return nil } -// Configuration for the optional RSVP-TE explicit route object(ERO) object included -// in Path Messages. -type RsvpEro struct { +// Type I: IPv6 Node Address with optional SRv6 SID. +type BgpSrteSegmentITypeSubTlv struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Determines whether the IP address of the RSVP neighbor should be added as an ERO - // sub-object. If it is to be included, it can be included as a Loose hop or as a Strict - // hop. - // default = PrependNeighborIp.Enum.prepend_loose - PrependNeighborIp *RsvpEro_PrependNeighborIp_Enum `protobuf:"varint,1,opt,name=prepend_neighbor_ip,json=prependNeighborIp,proto3,enum=otg.RsvpEro_PrependNeighborIp_Enum,oneof" json:"prepend_neighbor_ip,omitempty"` - // If prepend_egress_ip is set to one of 'prepend_loose' or 'prepend_strict', then set - // this value as the prefix length of the ERO sub-object containing egress IP address. - // - // default = 32 - PrefixLength *uint32 `protobuf:"varint,2,opt,name=prefix_length,json=prefixLength,proto3,oneof" json:"prefix_length,omitempty"` - // Array of sub-objects to be included in the ERO. These sub-objects contain the intermediate - // hops to be traversed by the LSP while being forwarded towards the egress endpoint. - // These sub-objects are included after the optional sub-object containing IP address - // of egress endpoint of the LSP (when present). - Subobjects []*RsvpEroSubobject `protobuf:"bytes,3,rep,name=subobjects,proto3" json:"subobjects,omitempty"` + // One octet bitmap for flags including V-Flag, A-Flag, S-Flag, B-Flag etc. as defined + // in https://datatracker.ietf.org/doc/html/draft-ietf-idr-segment-routing-te-policy-13#section-2.4.4.2.12 + Flags *string `protobuf:"bytes,1,opt,name=flags,proto3,oneof" json:"flags,omitempty"` + // IPv6 address representing a node. + // required = true + Ipv6NodeAddress *string `protobuf:"bytes,2,opt,name=ipv6_node_address,json=ipv6NodeAddress,proto3,oneof" json:"ipv6_node_address,omitempty"` + // Optional SRv6 SID. + Srv6Sid *string `protobuf:"bytes,3,opt,name=srv6_sid,json=srv6Sid,proto3,oneof" json:"srv6_sid,omitempty"` + // Optional SRv6 Endpoint Behavior and SID Structure. + Srv6SidEndpointBehavior *BgpSrteSRv6SIDEndpointBehaviorAndStructure `protobuf:"bytes,4,opt,name=srv6_sid_endpoint_behavior,json=srv6SidEndpointBehavior,proto3" json:"srv6_sid_endpoint_behavior,omitempty"` } -func (x *RsvpEro) Reset() { - *x = RsvpEro{} +func (x *BgpSrteSegmentITypeSubTlv) Reset() { + *x = BgpSrteSegmentITypeSubTlv{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[156] + mi := &file_otg_proto_msgTypes[122] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *RsvpEro) String() string { +func (x *BgpSrteSegmentITypeSubTlv) String() string { return protoimpl.X.MessageStringOf(x) } -func (*RsvpEro) ProtoMessage() {} +func (*BgpSrteSegmentITypeSubTlv) ProtoMessage() {} -func (x *RsvpEro) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[156] +func (x *BgpSrteSegmentITypeSubTlv) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[122] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -31854,76 +31398,87 @@ func (x *RsvpEro) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use RsvpEro.ProtoReflect.Descriptor instead. -func (*RsvpEro) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{156} +// Deprecated: Use BgpSrteSegmentITypeSubTlv.ProtoReflect.Descriptor instead. +func (*BgpSrteSegmentITypeSubTlv) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{122} } -func (x *RsvpEro) GetPrependNeighborIp() RsvpEro_PrependNeighborIp_Enum { - if x != nil && x.PrependNeighborIp != nil { - return *x.PrependNeighborIp +func (x *BgpSrteSegmentITypeSubTlv) GetFlags() string { + if x != nil && x.Flags != nil { + return *x.Flags } - return RsvpEro_PrependNeighborIp_unspecified + return "" } -func (x *RsvpEro) GetPrefixLength() uint32 { - if x != nil && x.PrefixLength != nil { - return *x.PrefixLength +func (x *BgpSrteSegmentITypeSubTlv) GetIpv6NodeAddress() string { + if x != nil && x.Ipv6NodeAddress != nil { + return *x.Ipv6NodeAddress } - return 0 + return "" } -func (x *RsvpEro) GetSubobjects() []*RsvpEroSubobject { +func (x *BgpSrteSegmentITypeSubTlv) GetSrv6Sid() string { + if x != nil && x.Srv6Sid != nil { + return *x.Srv6Sid + } + return "" +} + +func (x *BgpSrteSegmentITypeSubTlv) GetSrv6SidEndpointBehavior() *BgpSrteSRv6SIDEndpointBehaviorAndStructure { if x != nil { - return x.Subobjects + return x.Srv6SidEndpointBehavior } return nil } -// Configuration for the ERO sub-object. -type RsvpEroSubobject struct { +// Type J: IPv6 Address, Interface ID for local and remote pair for SRv6 with optional +// SID. +type BgpSrteSegmentJTypeSubTlv struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // The type of the ERO sub-object, one of IPv4 Address or AS Number. - // default = Type.Enum.ipv4 - Type *RsvpEroSubobject_Type_Enum `protobuf:"varint,1,opt,name=type,proto3,enum=otg.RsvpEroSubobject_Type_Enum,oneof" json:"type,omitempty"` - // IPv4 address that this LSP should traverse through. This field is applicable only - // if the value of 'type' is set to 'ipv4'. - // default = 0.0.0.0 - Ipv4Address *string `protobuf:"bytes,2,opt,name=ipv4_address,json=ipv4Address,proto3,oneof" json:"ipv4_address,omitempty"` - // Prefix length for the IPv4 address in the ERO sub-object. This field is applicable - // only if the value of 'type' is set to 'ipv4'. - // default = 32 - PrefixLength *uint32 `protobuf:"varint,3,opt,name=prefix_length,json=prefixLength,proto3,oneof" json:"prefix_length,omitempty"` - // Autonomous System number to be set in the ERO sub-object that this LSP should traverse - // through. This field is applicable only if the value of 'type' is set to 'as_number'. - // Note that as per RFC3209, 4-byte AS encoding is not supported. + // One octet bitmap for flags including V-Flag, A-Flag, S-Flag, B-Flag etc. as defined + // in https://datatracker.ietf.org/doc/html/draft-ietf-idr-segment-routing-te-policy-13#section-2.4.4.2.12 + Flags *string `protobuf:"bytes,1,opt,name=flags,proto3,oneof" json:"flags,omitempty"` + // SR Algorithm identifier when A-Flag in on. // default = 0 - AsNumber *uint32 `protobuf:"varint,4,opt,name=as_number,json=asNumber,proto3,oneof" json:"as_number,omitempty"` - // The hop type of the ERO sub-object, one of Strict or Loose. - // default = HopType.Enum.loose - HopType *RsvpEroSubobject_HopType_Enum `protobuf:"varint,5,opt,name=hop_type,json=hopType,proto3,enum=otg.RsvpEroSubobject_HopType_Enum,oneof" json:"hop_type,omitempty"` + SrAlgorithm *uint32 `protobuf:"varint,2,opt,name=sr_algorithm,json=srAlgorithm,proto3,oneof" json:"sr_algorithm,omitempty"` + // Local Interface ID: The Interface Index as defined in [RFC8664]. + // default = 0 + LocalInterfaceId *uint32 `protobuf:"varint,3,opt,name=local_interface_id,json=localInterfaceId,proto3,oneof" json:"local_interface_id,omitempty"` + // IPv6 address representing a node. + // required = true + LocalIpv6NodeAddress *string `protobuf:"bytes,4,opt,name=local_ipv6_node_address,json=localIpv6NodeAddress,proto3,oneof" json:"local_ipv6_node_address,omitempty"` + // Local Interface ID: The Interface Index as defined in [RFC8664]. + // default = 0 + RemoteInterfaceId *uint32 `protobuf:"varint,5,opt,name=remote_interface_id,json=remoteInterfaceId,proto3,oneof" json:"remote_interface_id,omitempty"` + // IPv6 address representing a node. + // required = true + RemoteIpv6NodeAddress *string `protobuf:"bytes,6,opt,name=remote_ipv6_node_address,json=remoteIpv6NodeAddress,proto3,oneof" json:"remote_ipv6_node_address,omitempty"` + // Optional SRv6 SID. + Srv6Sid *string `protobuf:"bytes,7,opt,name=srv6_sid,json=srv6Sid,proto3,oneof" json:"srv6_sid,omitempty"` + // Optional SRv6 Endpoint Behavior and SID Structure. + Srv6SidEndpointBehavior *BgpSrteSRv6SIDEndpointBehaviorAndStructure `protobuf:"bytes,8,opt,name=srv6_sid_endpoint_behavior,json=srv6SidEndpointBehavior,proto3" json:"srv6_sid_endpoint_behavior,omitempty"` } -func (x *RsvpEroSubobject) Reset() { - *x = RsvpEroSubobject{} +func (x *BgpSrteSegmentJTypeSubTlv) Reset() { + *x = BgpSrteSegmentJTypeSubTlv{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[157] + mi := &file_otg_proto_msgTypes[123] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *RsvpEroSubobject) String() string { +func (x *BgpSrteSegmentJTypeSubTlv) String() string { return protoimpl.X.MessageStringOf(x) } -func (*RsvpEroSubobject) ProtoMessage() {} +func (*BgpSrteSegmentJTypeSubTlv) ProtoMessage() {} -func (x *RsvpEroSubobject) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[157] +func (x *BgpSrteSegmentJTypeSubTlv) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[123] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -31934,115 +31489,108 @@ func (x *RsvpEroSubobject) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use RsvpEroSubobject.ProtoReflect.Descriptor instead. -func (*RsvpEroSubobject) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{157} +// Deprecated: Use BgpSrteSegmentJTypeSubTlv.ProtoReflect.Descriptor instead. +func (*BgpSrteSegmentJTypeSubTlv) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{123} } -func (x *RsvpEroSubobject) GetType() RsvpEroSubobject_Type_Enum { - if x != nil && x.Type != nil { - return *x.Type +func (x *BgpSrteSegmentJTypeSubTlv) GetFlags() string { + if x != nil && x.Flags != nil { + return *x.Flags } - return RsvpEroSubobject_Type_unspecified + return "" } -func (x *RsvpEroSubobject) GetIpv4Address() string { - if x != nil && x.Ipv4Address != nil { - return *x.Ipv4Address +func (x *BgpSrteSegmentJTypeSubTlv) GetSrAlgorithm() uint32 { + if x != nil && x.SrAlgorithm != nil { + return *x.SrAlgorithm } - return "" + return 0 } -func (x *RsvpEroSubobject) GetPrefixLength() uint32 { - if x != nil && x.PrefixLength != nil { - return *x.PrefixLength +func (x *BgpSrteSegmentJTypeSubTlv) GetLocalInterfaceId() uint32 { + if x != nil && x.LocalInterfaceId != nil { + return *x.LocalInterfaceId } return 0 } -func (x *RsvpEroSubobject) GetAsNumber() uint32 { - if x != nil && x.AsNumber != nil { - return *x.AsNumber +func (x *BgpSrteSegmentJTypeSubTlv) GetLocalIpv6NodeAddress() string { + if x != nil && x.LocalIpv6NodeAddress != nil { + return *x.LocalIpv6NodeAddress + } + return "" +} + +func (x *BgpSrteSegmentJTypeSubTlv) GetRemoteInterfaceId() uint32 { + if x != nil && x.RemoteInterfaceId != nil { + return *x.RemoteInterfaceId } return 0 } -func (x *RsvpEroSubobject) GetHopType() RsvpEroSubobject_HopType_Enum { - if x != nil && x.HopType != nil { - return *x.HopType +func (x *BgpSrteSegmentJTypeSubTlv) GetRemoteIpv6NodeAddress() string { + if x != nil && x.RemoteIpv6NodeAddress != nil { + return *x.RemoteIpv6NodeAddress } - return RsvpEroSubobject_HopType_unspecified + return "" } -// A high level data plane traffic flow. -type Flow struct { +func (x *BgpSrteSegmentJTypeSubTlv) GetSrv6Sid() string { + if x != nil && x.Srv6Sid != nil { + return *x.Srv6Sid + } + return "" +} + +func (x *BgpSrteSegmentJTypeSubTlv) GetSrv6SidEndpointBehavior() *BgpSrteSRv6SIDEndpointBehaviorAndStructure { + if x != nil { + return x.Srv6SidEndpointBehavior + } + return nil +} + +// Type K: IPv6 Local and Remote addresses for SRv6 with optional SID. +type BgpSrteSegmentKTypeSubTlv struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // The transmit and receive endpoints. + // One octet bitmap for flags including V-Flag, A-Flag, S-Flag, B-Flag etc. as defined + // in https://datatracker.ietf.org/doc/html/draft-ietf-idr-segment-routing-te-policy-13#section-2.4.4.2.12 + Flags *string `protobuf:"bytes,1,opt,name=flags,proto3,oneof" json:"flags,omitempty"` + // SR Algorithm identifier when A-Flag in on. + // default = 0 + SrAlgorithm *uint32 `protobuf:"varint,2,opt,name=sr_algorithm,json=srAlgorithm,proto3,oneof" json:"sr_algorithm,omitempty"` + // IPv6 address representing a node. // required = true - TxRx *FlowTxRx `protobuf:"bytes,1,opt,name=tx_rx,json=txRx,proto3" json:"tx_rx,omitempty"` - // The list of protocol headers defining the shape of all - // intended packets in corresponding flow as it is transmitted - // by traffic-generator port. - // - // The order of protocol headers assigned to the list is the - // order they will appear on the wire. - // - // In the case of an empty list the keyword/value of minItems: 1 - // indicates that an implementation MUST provide at least one - // Flow.Header object. - // - // The default value for the Flow.Header choice property is ethernet - // which will result in an implementation by default providing at least - // one ethernet packet header. - Packet []*FlowHeader `protobuf:"bytes,2,rep,name=packet,proto3" json:"packet,omitempty"` - // Under Review: The packet header schema for egress tracking currently exposes unwanted - // fields. The query structure for tagged metrics inside flows metrics requires documenting - // expected response format. - // - // Under Review: The packet header schema for egress tracking currently exposes unwanted - // fields. The query structure for tagged metrics inside flows metrics requires documenting - // expected response format. - // - // The list of protocol headers defining the shape of all - // intended packets in corresponding flow as it is received - // by traffic-generator port. - // - // For all protocol headers, only the `metric_tags` property is configurable. - EgressPacket []*FlowHeader `protobuf:"bytes,9,rep,name=egress_packet,json=egressPacket,proto3" json:"egress_packet,omitempty"` - // The size of the packets. - Size *FlowSize `protobuf:"bytes,3,opt,name=size,proto3" json:"size,omitempty"` - // The transmit rate of the packets. - Rate *FlowRate `protobuf:"bytes,4,opt,name=rate,proto3" json:"rate,omitempty"` - // The transmit duration of the packets. - Duration *FlowDuration `protobuf:"bytes,5,opt,name=duration,proto3" json:"duration,omitempty"` - // Flow metrics. - Metrics *FlowMetrics `protobuf:"bytes,6,opt,name=metrics,proto3" json:"metrics,omitempty"` - // Globally unique name of an object. It also serves as the primary key for arrays of - // objects. + LocalIpv6Address *string `protobuf:"bytes,3,opt,name=local_ipv6_address,json=localIpv6Address,proto3,oneof" json:"local_ipv6_address,omitempty"` + // IPv6 address representing a node. // required = true - Name *string `protobuf:"bytes,7,opt,name=name,proto3,oneof" json:"name,omitempty"` + RemoteIpv6Address *string `protobuf:"bytes,4,opt,name=remote_ipv6_address,json=remoteIpv6Address,proto3,oneof" json:"remote_ipv6_address,omitempty"` + // Optional SRv6 SID. + Srv6Sid *string `protobuf:"bytes,5,opt,name=srv6_sid,json=srv6Sid,proto3,oneof" json:"srv6_sid,omitempty"` + // Optional SRv6 Endpoint Behavior and SID Structure. + Srv6SidEndpointBehavior *BgpSrteSRv6SIDEndpointBehaviorAndStructure `protobuf:"bytes,6,opt,name=srv6_sid_endpoint_behavior,json=srv6SidEndpointBehavior,proto3" json:"srv6_sid_endpoint_behavior,omitempty"` } -func (x *Flow) Reset() { - *x = Flow{} +func (x *BgpSrteSegmentKTypeSubTlv) Reset() { + *x = BgpSrteSegmentKTypeSubTlv{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[158] + mi := &file_otg_proto_msgTypes[124] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *Flow) String() string { +func (x *BgpSrteSegmentKTypeSubTlv) String() string { return protoimpl.X.MessageStringOf(x) } -func (*Flow) ProtoMessage() {} +func (*BgpSrteSegmentKTypeSubTlv) ProtoMessage() {} -func (x *Flow) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[158] +func (x *BgpSrteSegmentKTypeSubTlv) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[124] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -32053,100 +31601,156 @@ func (x *Flow) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use Flow.ProtoReflect.Descriptor instead. -func (*Flow) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{158} -} - -func (x *Flow) GetTxRx() *FlowTxRx { - if x != nil { - return x.TxRx - } - return nil +// Deprecated: Use BgpSrteSegmentKTypeSubTlv.ProtoReflect.Descriptor instead. +func (*BgpSrteSegmentKTypeSubTlv) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{124} } -func (x *Flow) GetPacket() []*FlowHeader { - if x != nil { - return x.Packet +func (x *BgpSrteSegmentKTypeSubTlv) GetFlags() string { + if x != nil && x.Flags != nil { + return *x.Flags } - return nil + return "" } -func (x *Flow) GetEgressPacket() []*FlowHeader { - if x != nil { - return x.EgressPacket +func (x *BgpSrteSegmentKTypeSubTlv) GetSrAlgorithm() uint32 { + if x != nil && x.SrAlgorithm != nil { + return *x.SrAlgorithm } - return nil + return 0 } -func (x *Flow) GetSize() *FlowSize { - if x != nil { - return x.Size +func (x *BgpSrteSegmentKTypeSubTlv) GetLocalIpv6Address() string { + if x != nil && x.LocalIpv6Address != nil { + return *x.LocalIpv6Address } - return nil + return "" } -func (x *Flow) GetRate() *FlowRate { - if x != nil { - return x.Rate +func (x *BgpSrteSegmentKTypeSubTlv) GetRemoteIpv6Address() string { + if x != nil && x.RemoteIpv6Address != nil { + return *x.RemoteIpv6Address } - return nil + return "" } -func (x *Flow) GetDuration() *FlowDuration { - if x != nil { - return x.Duration +func (x *BgpSrteSegmentKTypeSubTlv) GetSrv6Sid() string { + if x != nil && x.Srv6Sid != nil { + return *x.Srv6Sid } - return nil + return "" } -func (x *Flow) GetMetrics() *FlowMetrics { +func (x *BgpSrteSegmentKTypeSubTlv) GetSrv6SidEndpointBehavior() *BgpSrteSRv6SIDEndpointBehaviorAndStructure { if x != nil { - return x.Metrics + return x.Srv6SidEndpointBehavior } return nil } -func (x *Flow) GetName() string { - if x != nil && x.Name != nil { - return *x.Name - } - return "" -} - -// A container for different types of transmit and receive -// endpoint containers. -type FlowTxRx struct { +// Configuration for BGP Segment Routing Traffic Engineering policy. +type BgpSrteV6Policy struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // The type of transmit and receive container used by the flow. - // default = Choice.Enum.port - Choice *FlowTxRx_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.FlowTxRx_Choice_Enum,oneof" json:"choice,omitempty"` + // Identifies the policy in the context of (color and endpoint) tuple. It is used by + // the SR Policy originator to make unique multiple occurrences of the same SR Policy. + // default = 1 + Distinguisher *uint32 `protobuf:"varint,1,opt,name=distinguisher,proto3,oneof" json:"distinguisher,omitempty"` + // Identifies the policy. It is used to match the color of the destination prefixes + // to steer traffic into the SR Policy. + // default = 100 + Color *uint32 `protobuf:"varint,2,opt,name=color,proto3,oneof" json:"color,omitempty"` + // Specifies a single node or a set of nodes (e.g., an anycast address). It is selected + // on the basis of the SR Policy type (AFI). + // required = true + Ipv6Endpoint *string `protobuf:"bytes,3,opt,name=ipv6_endpoint,json=ipv6Endpoint,proto3,oneof" json:"ipv6_endpoint,omitempty"` + // Mode for choosing the NextHop in MP REACH NLRI. Available modes are : Local IP: Automatically + // fills the Nexthop with the Local IP of the BGP peer. For IPv6 BGP peer the Nexthop + // Encoding capability should be enabled. Manual: Override the Nexthop with any arbitrary + // IPv4/IPv6 address. + // default = NextHopMode.Enum.local_ip + NextHopMode *BgpSrteV6Policy_NextHopMode_Enum `protobuf:"varint,4,opt,name=next_hop_mode,json=nextHopMode,proto3,enum=otg.BgpSrteV6Policy_NextHopMode_Enum,oneof" json:"next_hop_mode,omitempty"` + // Type of next hop IP address to be used when 'next_hop_mode' is set to 'manual'. + // default = NextHopAddressType.Enum.ipv6 + NextHopAddressType *BgpSrteV6Policy_NextHopAddressType_Enum `protobuf:"varint,5,opt,name=next_hop_address_type,json=nextHopAddressType,proto3,enum=otg.BgpSrteV6Policy_NextHopAddressType_Enum,oneof" json:"next_hop_address_type,omitempty"` + // The IPv4 address of the Nexthop if the 'next_hop_mode' is 'manual' and the Nexthop + // type 'next_hop_address_type' is IPv4. If BGP peer is of type IPv6, Nexthop Encoding + // capability extended_next_hop_encoding should be enabled. + // default = 0.0.0.0 + NextHopIpv4Address *string `protobuf:"bytes,6,opt,name=next_hop_ipv4_address,json=nextHopIpv4Address,proto3,oneof" json:"next_hop_ipv4_address,omitempty"` + // The IPv6 address of the next hop if the Nexthop Mode 'next_hop_address_type' is 'manual' + // and the Nexthop type 'next_hop_address_type' is IPv6. + // default = ::0 + NextHopIpv6Address *string `protobuf:"bytes,7,opt,name=next_hop_ipv6_address,json=nextHopIpv6Address,proto3,oneof" json:"next_hop_ipv6_address,omitempty"` // Description missing in models - Port *FlowPort `protobuf:"bytes,2,opt,name=port,proto3" json:"port,omitempty"` + Advanced *BgpRouteAdvanced `protobuf:"bytes,8,opt,name=advanced,proto3" json:"advanced,omitempty"` // Description missing in models - Device *FlowRouter `protobuf:"bytes,3,opt,name=device,proto3" json:"device,omitempty"` + AddPath *BgpAddPath `protobuf:"bytes,9,opt,name=add_path,json=addPath,proto3" json:"add_path,omitempty"` + // Description missing in models + AsPath *BgpAsPath `protobuf:"bytes,10,opt,name=as_path,json=asPath,proto3" json:"as_path,omitempty"` + // Optional community settings. + Communities []*BgpCommunity `protobuf:"bytes,11,rep,name=communities,proto3" json:"communities,omitempty"` + // Optional Extended Community settings. The Extended Communities Attribute is a transitive + // optional BGP attribute, with the Type Code 16. Community and Extended Communities + // attributes are utilized to trigger routing decisions, such as acceptance, rejection, + // preference, or redistribution. An extended community is an 8-Bytes value. It is + // divided into two main parts. The first 2 Bytes of the community encode a type and + // sub-type fields and the last 6 Bytes carry a unique set of data in a format defined + // by the type and sub-type field. Extended communities provide a larger range for + // grouping or categorizing communities. When type is administrator_as_2octet or administrator_as_4octet, + // the valid sub types are route target and origin. The valid value for administrator_as_2octet + // and administrator_as_4octet type is either two byte AS followed by four byte local + // administrator id or four byte AS followed by two byte local administrator id. When + // type is administrator_ipv4_address the valid sub types are route target and origin. + // The valid value for administrator_ipv4_address is a four byte IPv4 address followed + // by a two byte local administrator id. When type is opaque, valid sub types are color + // and encapsulation. When sub type is color, first two bytes of the value field contain + // flags and last four bytes contains the value of the color. When sub type is encapsulation + // the first four bytes of value field are reserved and last two bytes carries the tunnel + // type from IANA's ETHER TYPES registry e.g IPv4 (protocol type = 0x0800), IPv6 (protocol + // type = 0x86dd), and MPLS (protocol type = 0x8847). When type is administrator_as_2octet_link_bandwidth + // the valid sub type is extended_bandwidth. The first two bytes of the value field + // contains the AS number and the last four bytes contains the bandwidth in IEEE floating + // point format. When type is evpn the valid subtype is mac_address. In the value field + // the low-order bit of the first byte(Flags) is defined as the Sticky/static flag and + // may be set to 1, indicating the MAC address is static and cannot move. The second + // byte is reserved and the last four bytes contain the sequence number which is used + // to ensure that PEs retain the correct MAC/IP Advertisement route when multiple updates + // occur for the same MAC address. + Extcommunities []*BgpExtCommunity `protobuf:"bytes,12,rep,name=extcommunities,proto3" json:"extcommunities,omitempty"` + // List of optional tunnel TLV settings. + TunnelTlvs []*BgpSrteV6TunnelTlv `protobuf:"bytes,13,rep,name=tunnel_tlvs,json=tunnelTlvs,proto3" json:"tunnel_tlvs,omitempty"` + // Globally unique name of an object. It also serves as the primary key for arrays of + // objects. + // required = true + Name *string `protobuf:"bytes,14,opt,name=name,proto3,oneof" json:"name,omitempty"` + // If enabled means that this part of the configuration including any active 'children' + // nodes will be advertised to peer. If disabled, this means that though config is + // present, it is not taking any part of the test but can be activated at run-time to + // advertise just this part of the configuration to the peer. + // default = True + Active *bool `protobuf:"varint,15,opt,name=active,proto3,oneof" json:"active,omitempty"` } -func (x *FlowTxRx) Reset() { - *x = FlowTxRx{} +func (x *BgpSrteV6Policy) Reset() { + *x = BgpSrteV6Policy{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[159] + mi := &file_otg_proto_msgTypes[125] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *FlowTxRx) String() string { +func (x *BgpSrteV6Policy) String() string { return protoimpl.X.MessageStringOf(x) } -func (*FlowTxRx) ProtoMessage() {} +func (*BgpSrteV6Policy) ProtoMessage() {} -func (x *FlowTxRx) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[159] +func (x *BgpSrteV6Policy) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[125] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -32157,355 +31761,167 @@ func (x *FlowTxRx) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use FlowTxRx.ProtoReflect.Descriptor instead. -func (*FlowTxRx) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{159} +// Deprecated: Use BgpSrteV6Policy.ProtoReflect.Descriptor instead. +func (*BgpSrteV6Policy) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{125} } -func (x *FlowTxRx) GetChoice() FlowTxRx_Choice_Enum { - if x != nil && x.Choice != nil { - return *x.Choice +func (x *BgpSrteV6Policy) GetDistinguisher() uint32 { + if x != nil && x.Distinguisher != nil { + return *x.Distinguisher } - return FlowTxRx_Choice_unspecified + return 0 } -func (x *FlowTxRx) GetPort() *FlowPort { +func (x *BgpSrteV6Policy) GetColor() uint32 { + if x != nil && x.Color != nil { + return *x.Color + } + return 0 +} + +func (x *BgpSrteV6Policy) GetIpv6Endpoint() string { + if x != nil && x.Ipv6Endpoint != nil { + return *x.Ipv6Endpoint + } + return "" +} + +func (x *BgpSrteV6Policy) GetNextHopMode() BgpSrteV6Policy_NextHopMode_Enum { + if x != nil && x.NextHopMode != nil { + return *x.NextHopMode + } + return BgpSrteV6Policy_NextHopMode_unspecified +} + +func (x *BgpSrteV6Policy) GetNextHopAddressType() BgpSrteV6Policy_NextHopAddressType_Enum { + if x != nil && x.NextHopAddressType != nil { + return *x.NextHopAddressType + } + return BgpSrteV6Policy_NextHopAddressType_unspecified +} + +func (x *BgpSrteV6Policy) GetNextHopIpv4Address() string { + if x != nil && x.NextHopIpv4Address != nil { + return *x.NextHopIpv4Address + } + return "" +} + +func (x *BgpSrteV6Policy) GetNextHopIpv6Address() string { + if x != nil && x.NextHopIpv6Address != nil { + return *x.NextHopIpv6Address + } + return "" +} + +func (x *BgpSrteV6Policy) GetAdvanced() *BgpRouteAdvanced { if x != nil { - return x.Port + return x.Advanced } return nil } -func (x *FlowTxRx) GetDevice() *FlowRouter { +func (x *BgpSrteV6Policy) GetAddPath() *BgpAddPath { if x != nil { - return x.Device + return x.AddPath } return nil } -// A container for a transmit port and 0..n intended receive ports. -// When assigning this container to a flow the flows's -// packet headers will not be populated with any address resolution -// information such as source and/or destination addresses. -// For example Flow.Ethernet dst mac address values will be defaulted to 0. -// For full control over the Flow.properties.packet header contents use this -// container. -type FlowPort struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields +func (x *BgpSrteV6Policy) GetAsPath() *BgpAsPath { + if x != nil { + return x.AsPath + } + return nil +} - // The unique name of a port that is the transmit port. - // - // x-constraint: - // - /components/schemas/Port/properties/name - // - /components/schemas/Lag/properties/name - // - // x-constraint: - // - /components/schemas/Port/properties/name - // - /components/schemas/Lag/properties/name - // - // required = true - TxName *string `protobuf:"bytes,1,opt,name=tx_name,json=txName,proto3,oneof" json:"tx_name,omitempty"` - // Deprecated: This property is deprecated in favor of property rx_names - // - // Deprecated: This property is deprecated in favor of property rx_names - // - // The unique name of a port that is the intended receive port. - // - // x-constraint: - // - /components/schemas/Port/properties/name - // - /components/schemas/Lag/properties/name - // - // x-constraint: - // - /components/schemas/Port/properties/name - // - /components/schemas/Lag/properties/name - RxName *string `protobuf:"bytes,2,opt,name=rx_name,json=rxName,proto3,oneof" json:"rx_name,omitempty"` - // Unique name of ports or lags that are intended receive endpoints. - // - // x-constraint: - // - /components/schemas/Port/properties/name - // - /components/schemas/Lag/properties/name - // - // x-constraint: - // - /components/schemas/Port/properties/name - // - /components/schemas/Lag/properties/name - RxNames []string `protobuf:"bytes,3,rep,name=rx_names,json=rxNames,proto3" json:"rx_names,omitempty"` -} - -func (x *FlowPort) Reset() { - *x = FlowPort{} - if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[160] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *FlowPort) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*FlowPort) ProtoMessage() {} - -func (x *FlowPort) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[160] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use FlowPort.ProtoReflect.Descriptor instead. -func (*FlowPort) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{160} -} - -func (x *FlowPort) GetTxName() string { - if x != nil && x.TxName != nil { - return *x.TxName - } - return "" -} - -func (x *FlowPort) GetRxName() string { - if x != nil && x.RxName != nil { - return *x.RxName - } - return "" -} - -func (x *FlowPort) GetRxNames() []string { +func (x *BgpSrteV6Policy) GetCommunities() []*BgpCommunity { if x != nil { - return x.RxNames + return x.Communities } return nil } -// A container for declaring a map of 1..n transmit devices to 1..n receive devices. -// This allows for a single flow to have different tx to rx device flows such as a -// single one to one map or a many to many map. -type FlowRouter struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // Determines the intent of creating traffic sub-flow(s) between the device - // endpoints, from the entities of tx_names to the entities of rx_names - // - // to derive how auto packet fields can be populated with - // the actual value(s) by the implementation. - // - // The one_to_one mode creates traffic sub-flow(s) between each device endpoint - // pair in - // tx_names to rx_names by index. - // The length of tx_names and rx_names MUST be the same. - // The same device name can be repeated multiple times in tx_names or rx_names, in any - // order to create desired meshing between device(s). - // For 2 values in tx_names and 2 values in rx_names, 2 device endpoint pairs would - // be generated (each pair representing a traffic sub-flow). - // - // The mesh mode creates traffic sub-flow(s) between each value in tx_names to - // every value in rx_names, forming the device endpoint pair(s). - // For 2 values in tx_names and 3 values in rx_names, generated device endpoint pairs - // would be 2x3=6. - // - // A generated device endpoint pair with same device endpoint name for both transmit - // & receive device endpoint MUST raise an error. - // - // Packet fields of type auto would be populated with one value for each device - // endpoint pair (representing the traffic sub-flow). - // The value would be determined considering transmit & receive device of the sub-flow. - // And the sequence of the populated value(s) - // would be in the order of generated device endpoint pair(s). - // If 2 device endpoint pairs are generated (based on mode, tx_names and rx_names), - // say (d1 to d3) and (d2 to d3), and ethernet.dst is set as auto, then - // the auto field would be replaced by the implementation with a sequence of - // 2 values, [v1,v2] where - // v1 is determined using context (d1,d3) and v2 using context (d2,d3). - // The final outcome is that packets generated on the wire will contain the values v1,v2,v1,... - // for ethernet.dst field. Any non-auto packet fields - // should be configured accordingly. For example, non-auto packet field ethernet.src - // can be configured with values [u1, u2], where - // u1 & u2 are source MAC of the connected interface of device d1 and d2 respectively. - // Then packets on the wire will contain correct value pairs - // (u1,v1),(u2,v2),(u1,v1),... for (ethernet.src,ethernet.dst) fields. - // default = Mode.Enum.mesh - Mode *FlowRouter_Mode_Enum `protobuf:"varint,1,opt,name=mode,proto3,enum=otg.FlowRouter_Mode_Enum,oneof" json:"mode,omitempty"` - // TBD - // - // x-constraint: - // - /components/schemas/Device.Ethernet/properties/name - // - /components/schemas/Device.Ipv4/properties/name - // - /components/schemas/Device.Ipv6/properties/name - // - /components/schemas/Bgp.V4RouteRange/properties/name - // - /components/schemas/Bgp.V6RouteRange/properties/name - // - /components/schemas/Bgp.CMacIpRange/properties/name - // - /components/schemas/Rsvp.LspIpv4Interface.P2PIngressIpv4Lsp/properties/name - // - /components/schemas/Isis.V4RouteRange/properties/name - // - /components/schemas/Isis.V6RouteRange/properties/name - // - // x-constraint: - // - /components/schemas/Device.Ethernet/properties/name - // - /components/schemas/Device.Ipv4/properties/name - // - /components/schemas/Device.Ipv6/properties/name - // - /components/schemas/Bgp.V4RouteRange/properties/name - // - /components/schemas/Bgp.V6RouteRange/properties/name - // - /components/schemas/Bgp.CMacIpRange/properties/name - // - /components/schemas/Rsvp.LspIpv4Interface.P2PIngressIpv4Lsp/properties/name - // - /components/schemas/Isis.V4RouteRange/properties/name - // - /components/schemas/Isis.V6RouteRange/properties/name - TxNames []string `protobuf:"bytes,2,rep,name=tx_names,json=txNames,proto3" json:"tx_names,omitempty"` - // TBD - // - // x-constraint: - // - /components/schemas/Device.Ethernet/properties/name - // - /components/schemas/Device.Ipv4/properties/name - // - /components/schemas/Device.Ipv6/properties/name - // - /components/schemas/Bgp.V4RouteRange/properties/name - // - /components/schemas/Bgp.V6RouteRange/properties/name - // - /components/schemas/Bgp.CMacIpRange/properties/name - // - /components/schemas/Rsvp.LspIpv4Interface.P2PEgressIpv4Lsp/properties/name - // - /components/schemas/Isis.V4RouteRange/properties/name - // - /components/schemas/Isis.V6RouteRange/properties/name - // - // x-constraint: - // - /components/schemas/Device.Ethernet/properties/name - // - /components/schemas/Device.Ipv4/properties/name - // - /components/schemas/Device.Ipv6/properties/name - // - /components/schemas/Bgp.V4RouteRange/properties/name - // - /components/schemas/Bgp.V6RouteRange/properties/name - // - /components/schemas/Bgp.CMacIpRange/properties/name - // - /components/schemas/Rsvp.LspIpv4Interface.P2PEgressIpv4Lsp/properties/name - // - /components/schemas/Isis.V4RouteRange/properties/name - // - /components/schemas/Isis.V6RouteRange/properties/name - RxNames []string `protobuf:"bytes,3,rep,name=rx_names,json=rxNames,proto3" json:"rx_names,omitempty"` -} - -func (x *FlowRouter) Reset() { - *x = FlowRouter{} - if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[161] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *FlowRouter) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*FlowRouter) ProtoMessage() {} - -func (x *FlowRouter) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[161] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms +func (x *BgpSrteV6Policy) GetExtcommunities() []*BgpExtCommunity { + if x != nil { + return x.Extcommunities } - return mi.MessageOf(x) -} - -// Deprecated: Use FlowRouter.ProtoReflect.Descriptor instead. -func (*FlowRouter) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{161} + return nil } -func (x *FlowRouter) GetMode() FlowRouter_Mode_Enum { - if x != nil && x.Mode != nil { - return *x.Mode +func (x *BgpSrteV6Policy) GetTunnelTlvs() []*BgpSrteV6TunnelTlv { + if x != nil { + return x.TunnelTlvs } - return FlowRouter_Mode_unspecified + return nil } -func (x *FlowRouter) GetTxNames() []string { - if x != nil { - return x.TxNames +func (x *BgpSrteV6Policy) GetName() string { + if x != nil && x.Name != nil { + return *x.Name } - return nil + return "" } -func (x *FlowRouter) GetRxNames() []string { - if x != nil { - return x.RxNames +func (x *BgpSrteV6Policy) GetActive() bool { + if x != nil && x.Active != nil { + return *x.Active } - return nil + return false } -// Configuration for all traffic packet headers -type FlowHeader struct { +// Configuration for BGP SRTE Tunnel TLV. +type BgpSrteV6TunnelTlv struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // The available types of flow headers. If one is not provided the - // default ethernet packet header MUST be provided. - // default = Choice.Enum.ethernet - Choice *FlowHeader_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.FlowHeader_Choice_Enum,oneof" json:"choice,omitempty"` - // Description missing in models - Custom *FlowCustom `protobuf:"bytes,2,opt,name=custom,proto3" json:"custom,omitempty"` - // Description missing in models - Ethernet *FlowEthernet `protobuf:"bytes,3,opt,name=ethernet,proto3" json:"ethernet,omitempty"` - // Description missing in models - Vlan *FlowVlan `protobuf:"bytes,4,opt,name=vlan,proto3" json:"vlan,omitempty"` // Description missing in models - Vxlan *FlowVxlan `protobuf:"bytes,5,opt,name=vxlan,proto3" json:"vxlan,omitempty"` - // Description missing in models - Ipv4 *FlowIpv4 `protobuf:"bytes,6,opt,name=ipv4,proto3" json:"ipv4,omitempty"` - // Description missing in models - Ipv6 *FlowIpv6 `protobuf:"bytes,7,opt,name=ipv6,proto3" json:"ipv6,omitempty"` - // Description missing in models - Pfcpause *FlowPfcPause `protobuf:"bytes,8,opt,name=pfcpause,proto3" json:"pfcpause,omitempty"` - // Description missing in models - Ethernetpause *FlowEthernetPause `protobuf:"bytes,9,opt,name=ethernetpause,proto3" json:"ethernetpause,omitempty"` - // Description missing in models - Tcp *FlowTcp `protobuf:"bytes,10,opt,name=tcp,proto3" json:"tcp,omitempty"` - // Description missing in models - Udp *FlowUdp `protobuf:"bytes,11,opt,name=udp,proto3" json:"udp,omitempty"` - // Description missing in models - Gre *FlowGre `protobuf:"bytes,12,opt,name=gre,proto3" json:"gre,omitempty"` - // Description missing in models - Gtpv1 *FlowGtpv1 `protobuf:"bytes,13,opt,name=gtpv1,proto3" json:"gtpv1,omitempty"` + RemoteEndpointSubTlv *BgpSrteRemoteEndpointSubTlv `protobuf:"bytes,1,opt,name=remote_endpoint_sub_tlv,json=remoteEndpointSubTlv,proto3" json:"remote_endpoint_sub_tlv,omitempty"` // Description missing in models - Gtpv2 *FlowGtpv2 `protobuf:"bytes,14,opt,name=gtpv2,proto3" json:"gtpv2,omitempty"` + ColorSubTlv *BgpSrteColorSubTlv `protobuf:"bytes,2,opt,name=color_sub_tlv,json=colorSubTlv,proto3" json:"color_sub_tlv,omitempty"` // Description missing in models - Arp *FlowArp `protobuf:"bytes,15,opt,name=arp,proto3" json:"arp,omitempty"` + BindingSubTlv *BgpSrteBindingSubTlv `protobuf:"bytes,3,opt,name=binding_sub_tlv,json=bindingSubTlv,proto3" json:"binding_sub_tlv,omitempty"` // Description missing in models - Icmp *FlowIcmp `protobuf:"bytes,16,opt,name=icmp,proto3" json:"icmp,omitempty"` + PreferenceSubTlv *BgpSrtePreferenceSubTlv `protobuf:"bytes,4,opt,name=preference_sub_tlv,json=preferenceSubTlv,proto3" json:"preference_sub_tlv,omitempty"` // Description missing in models - Icmpv6 *FlowIcmpv6 `protobuf:"bytes,17,opt,name=icmpv6,proto3" json:"icmpv6,omitempty"` + PolicyPrioritySubTlv *BgpSrtePolicyPrioritySubTlv `protobuf:"bytes,5,opt,name=policy_priority_sub_tlv,json=policyPrioritySubTlv,proto3" json:"policy_priority_sub_tlv,omitempty"` // Description missing in models - Ppp *FlowPpp `protobuf:"bytes,18,opt,name=ppp,proto3" json:"ppp,omitempty"` + PolicyNameSubTlv *BgpSrtePolicyNameSubTlv `protobuf:"bytes,6,opt,name=policy_name_sub_tlv,json=policyNameSubTlv,proto3" json:"policy_name_sub_tlv,omitempty"` // Description missing in models - Igmpv1 *FlowIgmpv1 `protobuf:"bytes,19,opt,name=igmpv1,proto3" json:"igmpv1,omitempty"` + ExplicitNullLabelPolicySubTlv *BgpSrteExplicitNullLabelPolicySubTlv `protobuf:"bytes,7,opt,name=explicit_null_label_policy_sub_tlv,json=explicitNullLabelPolicySubTlv,proto3" json:"explicit_null_label_policy_sub_tlv,omitempty"` // Description missing in models - Mpls *FlowMpls `protobuf:"bytes,20,opt,name=mpls,proto3" json:"mpls,omitempty"` + SegmentLists []*BgpSrteSegmentList `protobuf:"bytes,8,rep,name=segment_lists,json=segmentLists,proto3" json:"segment_lists,omitempty"` + // Globally unique name of an object. It also serves as the primary key for arrays of + // objects. + // required = true + Name *string `protobuf:"bytes,9,opt,name=name,proto3,oneof" json:"name,omitempty"` + // If enabled means that this part of the configuration including any active 'children' + // nodes will be advertised to peer. If disabled, this means that though config is + // present, it is not taking any part of the test but can be activated at run-time to + // advertise just this part of the configuration to the peer. + // default = True + Active *bool `protobuf:"varint,10,opt,name=active,proto3,oneof" json:"active,omitempty"` } -func (x *FlowHeader) Reset() { - *x = FlowHeader{} +func (x *BgpSrteV6TunnelTlv) Reset() { + *x = BgpSrteV6TunnelTlv{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[162] + mi := &file_otg_proto_msgTypes[126] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *FlowHeader) String() string { +func (x *BgpSrteV6TunnelTlv) String() string { return protoimpl.X.MessageStringOf(x) } -func (*FlowHeader) ProtoMessage() {} +func (*BgpSrteV6TunnelTlv) ProtoMessage() {} -func (x *FlowHeader) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[162] +func (x *BgpSrteV6TunnelTlv) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[126] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -32516,185 +31932,130 @@ func (x *FlowHeader) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use FlowHeader.ProtoReflect.Descriptor instead. -func (*FlowHeader) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{162} -} - -func (x *FlowHeader) GetChoice() FlowHeader_Choice_Enum { - if x != nil && x.Choice != nil { - return *x.Choice - } - return FlowHeader_Choice_unspecified -} - -func (x *FlowHeader) GetCustom() *FlowCustom { - if x != nil { - return x.Custom - } - return nil -} - -func (x *FlowHeader) GetEthernet() *FlowEthernet { - if x != nil { - return x.Ethernet - } - return nil -} - -func (x *FlowHeader) GetVlan() *FlowVlan { - if x != nil { - return x.Vlan - } - return nil -} - -func (x *FlowHeader) GetVxlan() *FlowVxlan { - if x != nil { - return x.Vxlan - } - return nil -} - -func (x *FlowHeader) GetIpv4() *FlowIpv4 { - if x != nil { - return x.Ipv4 - } - return nil -} - -func (x *FlowHeader) GetIpv6() *FlowIpv6 { - if x != nil { - return x.Ipv6 - } - return nil -} - -func (x *FlowHeader) GetPfcpause() *FlowPfcPause { - if x != nil { - return x.Pfcpause - } - return nil -} - -func (x *FlowHeader) GetEthernetpause() *FlowEthernetPause { - if x != nil { - return x.Ethernetpause - } - return nil -} - -func (x *FlowHeader) GetTcp() *FlowTcp { - if x != nil { - return x.Tcp - } - return nil +// Deprecated: Use BgpSrteV6TunnelTlv.ProtoReflect.Descriptor instead. +func (*BgpSrteV6TunnelTlv) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{126} } -func (x *FlowHeader) GetUdp() *FlowUdp { +func (x *BgpSrteV6TunnelTlv) GetRemoteEndpointSubTlv() *BgpSrteRemoteEndpointSubTlv { if x != nil { - return x.Udp + return x.RemoteEndpointSubTlv } return nil } -func (x *FlowHeader) GetGre() *FlowGre { +func (x *BgpSrteV6TunnelTlv) GetColorSubTlv() *BgpSrteColorSubTlv { if x != nil { - return x.Gre + return x.ColorSubTlv } return nil } -func (x *FlowHeader) GetGtpv1() *FlowGtpv1 { +func (x *BgpSrteV6TunnelTlv) GetBindingSubTlv() *BgpSrteBindingSubTlv { if x != nil { - return x.Gtpv1 + return x.BindingSubTlv } return nil } -func (x *FlowHeader) GetGtpv2() *FlowGtpv2 { +func (x *BgpSrteV6TunnelTlv) GetPreferenceSubTlv() *BgpSrtePreferenceSubTlv { if x != nil { - return x.Gtpv2 + return x.PreferenceSubTlv } return nil } -func (x *FlowHeader) GetArp() *FlowArp { +func (x *BgpSrteV6TunnelTlv) GetPolicyPrioritySubTlv() *BgpSrtePolicyPrioritySubTlv { if x != nil { - return x.Arp + return x.PolicyPrioritySubTlv } return nil } -func (x *FlowHeader) GetIcmp() *FlowIcmp { +func (x *BgpSrteV6TunnelTlv) GetPolicyNameSubTlv() *BgpSrtePolicyNameSubTlv { if x != nil { - return x.Icmp + return x.PolicyNameSubTlv } return nil } -func (x *FlowHeader) GetIcmpv6() *FlowIcmpv6 { +func (x *BgpSrteV6TunnelTlv) GetExplicitNullLabelPolicySubTlv() *BgpSrteExplicitNullLabelPolicySubTlv { if x != nil { - return x.Icmpv6 + return x.ExplicitNullLabelPolicySubTlv } return nil } -func (x *FlowHeader) GetPpp() *FlowPpp { +func (x *BgpSrteV6TunnelTlv) GetSegmentLists() []*BgpSrteSegmentList { if x != nil { - return x.Ppp + return x.SegmentLists } return nil } -func (x *FlowHeader) GetIgmpv1() *FlowIgmpv1 { - if x != nil { - return x.Igmpv1 +func (x *BgpSrteV6TunnelTlv) GetName() string { + if x != nil && x.Name != nil { + return *x.Name } - return nil + return "" } -func (x *FlowHeader) GetMpls() *FlowMpls { - if x != nil { - return x.Mpls +func (x *BgpSrteV6TunnelTlv) GetActive() bool { + if x != nil && x.Active != nil { + return *x.Active } - return nil + return false } -// Custom packet header -type FlowCustom struct { +// The Graceful Restart Capability (RFC 4724) is a BGP capability that can be used by +// a BGP speaker to indicate its ability to preserve its forwarding state during BGP +// restart. The Graceful Restart (GR) capability is advertised in OPEN messages sent +// between BGP peers. After a BGP session has been established, and the initial routing +// update has been completed, an End-of-RIB (Routing Information Base) marker is sent +// in an UPDATE message to convey information about routing convergence. +type BgpGracefulRestart struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // A custom packet header defined as a string of hex bytes. The string MUST contain - // sequence of valid hex bytes. Spaces or colons can be part of the bytes but will be - // discarded. This packet header can be used in multiple places in the packet. - // required = true - Bytes *string `protobuf:"bytes,1,opt,name=bytes,proto3,oneof" json:"bytes,omitempty"` - // One or more metric tags can be used to enable tracking portion of or all bits - // in a corresponding header field for metrics per each applicable value. - // These would appear as tagged metrics in corresponding flow metrics. - MetricTags []*FlowCustomMetricTag `protobuf:"bytes,2,rep,name=metric_tags,json=metricTags,proto3" json:"metric_tags,omitempty"` + // If enabled, Graceful Restart capability is advertised in BGP OPEN messages. + // default = False + EnableGr *bool `protobuf:"varint,1,opt,name=enable_gr,json=enableGr,proto3,oneof" json:"enable_gr,omitempty"` + // This is the estimated duration (in seconds) it will take for the BGP session to be + // re-established after a restart. This can be used to speed up routing convergence + // by its peer in case the BGP speaker does not come back after a restart. + // default = 45 + RestartTime *uint32 `protobuf:"varint,2,opt,name=restart_time,json=restartTime,proto3,oneof" json:"restart_time,omitempty"` + // If enabled, the Long-lived Graceful Restart Capability, or LLGR Capability + // will be advertised. + // This capability MUST be advertised in conjunction with the Graceful Restart + // capability. + // default = False + EnableLlgr *bool `protobuf:"varint,3,opt,name=enable_llgr,json=enableLlgr,proto3,oneof" json:"enable_llgr,omitempty"` + // Duration (in seconds) specifying how long stale information (for the AFI/SAFI) + // may be retained. This is a three byte field and is applicable + // only if 'enable_llgr' is set to 'true'. + // default = 10 + StaleTime *uint32 `protobuf:"varint,4,opt,name=stale_time,json=staleTime,proto3,oneof" json:"stale_time,omitempty"` } -func (x *FlowCustom) Reset() { - *x = FlowCustom{} +func (x *BgpGracefulRestart) Reset() { + *x = BgpGracefulRestart{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[163] + mi := &file_otg_proto_msgTypes[127] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *FlowCustom) String() string { +func (x *BgpGracefulRestart) String() string { return protoimpl.X.MessageStringOf(x) } -func (*FlowCustom) ProtoMessage() {} +func (*BgpGracefulRestart) ProtoMessage() {} -func (x *FlowCustom) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[163] +func (x *BgpGracefulRestart) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[127] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -32705,63 +32066,130 @@ func (x *FlowCustom) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use FlowCustom.ProtoReflect.Descriptor instead. -func (*FlowCustom) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{163} +// Deprecated: Use BgpGracefulRestart.ProtoReflect.Descriptor instead. +func (*BgpGracefulRestart) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{127} } -func (x *FlowCustom) GetBytes() string { - if x != nil && x.Bytes != nil { - return *x.Bytes +func (x *BgpGracefulRestart) GetEnableGr() bool { + if x != nil && x.EnableGr != nil { + return *x.EnableGr } - return "" + return false } -func (x *FlowCustom) GetMetricTags() []*FlowCustomMetricTag { - if x != nil { - return x.MetricTags +func (x *BgpGracefulRestart) GetRestartTime() uint32 { + if x != nil && x.RestartTime != nil { + return *x.RestartTime } - return nil + return 0 } -// Metric Tag can be used to enable tracking portion of or all bits -// in a corresponding header field for metrics per each applicable value. -// These would appear as tagged metrics in corresponding flow metrics. -type FlowCustomMetricTag struct { +func (x *BgpGracefulRestart) GetEnableLlgr() bool { + if x != nil && x.EnableLlgr != nil { + return *x.EnableLlgr + } + return false +} + +func (x *BgpGracefulRestart) GetStaleTime() uint32 { + if x != nil && x.StaleTime != nil { + return *x.StaleTime + } + return 0 +} + +// Configuration for BGPv6 peer settings and routes. +type BgpV6Peer struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Name used to identify the metrics associated with the values applicable - // for configured offset and length inside corresponding header field + // IPv6 address of the BGP peer for the session // required = true - Name *string `protobuf:"bytes,1,opt,name=name,proto3,oneof" json:"name,omitempty"` - // Offset in bits relative to start of corresponding header field - // default = 0 - Offset *uint32 `protobuf:"varint,2,opt,name=offset,proto3,oneof" json:"offset,omitempty"` - // Number of bits to track for metrics starting from configured offset - // of corresponding header field - // default = 1 - Length *uint32 `protobuf:"varint,3,opt,name=length,proto3,oneof" json:"length,omitempty"` + PeerAddress *string `protobuf:"bytes,1,opt,name=peer_address,json=peerAddress,proto3,oneof" json:"peer_address,omitempty"` + // Description missing in models + SegmentRouting *BgpV6SegmentRouting `protobuf:"bytes,2,opt,name=segment_routing,json=segmentRouting,proto3" json:"segment_routing,omitempty"` + // This contains the list of Ethernet Virtual Private Network (EVPN) Ethernet Segments + // (ES) Per BGP Peer for IPv6 Address Family Identifier (AFI). + // + // Each Ethernet Segment contains a list of EVPN Instances (EVIs) . + // Each EVI contains a list of Broadcast Domains. + // Each Broadcast Domain contains a list of MAC/IP Ranges. + // + // is responsible for advertising Ethernet + // Auto-discovery Route Per EVI (Type 1). + // + // is responsible for advertising Ethernet Auto-discovery Route + // Per Ethernet Segment (Type 1). + // + // is responsible for advertising + // MAC/IP Advertisement Route (Type 2). + // + // is responsible for advertising Inclusive + // Multicast Ethernet Tag Route (Type 3). + // + // Ethernet Segment is responsible for advertising Ethernet Segment Route (Type 4). + EvpnEthernetSegments []*BgpV6EthernetSegment `protobuf:"bytes,3,rep,name=evpn_ethernet_segments,json=evpnEthernetSegments,proto3" json:"evpn_ethernet_segments,omitempty"` + // The type of BGP autonomous system. External BGP is used for BGP links between two + // or more autonomous systems (ebgp). Internal BGP is used within a single autonomous + // system (ibgp). BGP property defaults are aligned with this object defined as an internal + // BGP peer. If the as_type is specified as 'ebgp' then other properties will need to + // be specified as per an external BGP peer. Specifically, for 'ebgp', 'as_set_mode' + // attribute in 'as_path' field in any Route Range should be changed from default value + // 'do_not_include_local_as' to any other value. + // required = true + AsType *BgpV6Peer_AsType_Enum `protobuf:"varint,4,opt,name=as_type,json=asType,proto3,enum=otg.BgpV6Peer_AsType_Enum,oneof" json:"as_type,omitempty"` + // Autonomous System Number (AS number or ASN) + // required = true + AsNumber *uint32 `protobuf:"varint,5,opt,name=as_number,json=asNumber,proto3,oneof" json:"as_number,omitempty"` + // The width in bytes of the as_number values. Any as_number values that exceeds the + // width MUST result in an error. + // default = AsNumberWidth.Enum.four + AsNumberWidth *BgpV6Peer_AsNumberWidth_Enum `protobuf:"varint,6,opt,name=as_number_width,json=asNumberWidth,proto3,enum=otg.BgpV6Peer_AsNumberWidth_Enum,oneof" json:"as_number_width,omitempty"` + // Description missing in models + Advanced *BgpAdvanced `protobuf:"bytes,7,opt,name=advanced,proto3" json:"advanced,omitempty"` + // Description missing in models + Capability *BgpCapability `protobuf:"bytes,8,opt,name=capability,proto3" json:"capability,omitempty"` + // Description missing in models + LearnedInformationFilter *BgpLearnedInformationFilter `protobuf:"bytes,9,opt,name=learned_information_filter,json=learnedInformationFilter,proto3" json:"learned_information_filter,omitempty"` + // Emulated BGPv4 route ranges. + V4Routes []*BgpV4RouteRange `protobuf:"bytes,10,rep,name=v4_routes,json=v4Routes,proto3" json:"v4_routes,omitempty"` + // Emulated BGPv6 route ranges. + V6Routes []*BgpV6RouteRange `protobuf:"bytes,11,rep,name=v6_routes,json=v6Routes,proto3" json:"v6_routes,omitempty"` + // Segment Routing Traffic Engineering (SR TE) Policies for IPv4 Address Family Identifier + // (AFI). + V4SrtePolicies []*BgpSrteV4Policy `protobuf:"bytes,12,rep,name=v4_srte_policies,json=v4SrtePolicies,proto3" json:"v4_srte_policies,omitempty"` + // Segment Routing Traffic Engineering (SR TE) Policies for IPv6 Address Family Identifier + // (AFI). + V6SrtePolicies []*BgpSrteV6Policy `protobuf:"bytes,13,rep,name=v6_srte_policies,json=v6SrtePolicies,proto3" json:"v6_srte_policies,omitempty"` + // Globally unique name of an object. It also serves as the primary key for arrays of + // objects. + // Globally unique name of an object. It also serves as the primary key for arrays of + // objects. + // required = true + Name *string `protobuf:"bytes,14,opt,name=name,proto3,oneof" json:"name,omitempty"` + // Description missing in models + GracefulRestart *BgpGracefulRestart `protobuf:"bytes,15,opt,name=graceful_restart,json=gracefulRestart,proto3" json:"graceful_restart,omitempty"` } -func (x *FlowCustomMetricTag) Reset() { - *x = FlowCustomMetricTag{} +func (x *BgpV6Peer) Reset() { + *x = BgpV6Peer{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[164] + mi := &file_otg_proto_msgTypes[128] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *FlowCustomMetricTag) String() string { +func (x *BgpV6Peer) String() string { return protoimpl.X.MessageStringOf(x) } -func (*FlowCustomMetricTag) ProtoMessage() {} +func (*BgpV6Peer) ProtoMessage() {} -func (x *FlowCustomMetricTag) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[164] +func (x *BgpV6Peer) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[128] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -32772,141 +32200,152 @@ func (x *FlowCustomMetricTag) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use FlowCustomMetricTag.ProtoReflect.Descriptor instead. -func (*FlowCustomMetricTag) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{164} +// Deprecated: Use BgpV6Peer.ProtoReflect.Descriptor instead. +func (*BgpV6Peer) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{128} } -func (x *FlowCustomMetricTag) GetName() string { - if x != nil && x.Name != nil { - return *x.Name +func (x *BgpV6Peer) GetPeerAddress() string { + if x != nil && x.PeerAddress != nil { + return *x.PeerAddress } return "" } -func (x *FlowCustomMetricTag) GetOffset() uint32 { - if x != nil && x.Offset != nil { - return *x.Offset +func (x *BgpV6Peer) GetSegmentRouting() *BgpV6SegmentRouting { + if x != nil { + return x.SegmentRouting } - return 0 + return nil } -func (x *FlowCustomMetricTag) GetLength() uint32 { - if x != nil && x.Length != nil { - return *x.Length +func (x *BgpV6Peer) GetEvpnEthernetSegments() []*BgpV6EthernetSegment { + if x != nil { + return x.EvpnEthernetSegments } - return 0 + return nil } -// Ethernet packet header -type FlowEthernet struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields +func (x *BgpV6Peer) GetAsType() BgpV6Peer_AsType_Enum { + if x != nil && x.AsType != nil { + return *x.AsType + } + return BgpV6Peer_AsType_unspecified +} - // Description missing in models - Dst *PatternFlowEthernetDst `protobuf:"bytes,1,opt,name=dst,proto3" json:"dst,omitempty"` - // Description missing in models - Src *PatternFlowEthernetSrc `protobuf:"bytes,2,opt,name=src,proto3" json:"src,omitempty"` - // Description missing in models - EtherType *PatternFlowEthernetEtherType `protobuf:"bytes,3,opt,name=ether_type,json=etherType,proto3" json:"ether_type,omitempty"` - // Description missing in models - PfcQueue *PatternFlowEthernetPfcQueue `protobuf:"bytes,4,opt,name=pfc_queue,json=pfcQueue,proto3" json:"pfc_queue,omitempty"` +func (x *BgpV6Peer) GetAsNumber() uint32 { + if x != nil && x.AsNumber != nil { + return *x.AsNumber + } + return 0 } -func (x *FlowEthernet) Reset() { - *x = FlowEthernet{} - if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[165] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) +func (x *BgpV6Peer) GetAsNumberWidth() BgpV6Peer_AsNumberWidth_Enum { + if x != nil && x.AsNumberWidth != nil { + return *x.AsNumberWidth } + return BgpV6Peer_AsNumberWidth_unspecified } -func (x *FlowEthernet) String() string { - return protoimpl.X.MessageStringOf(x) +func (x *BgpV6Peer) GetAdvanced() *BgpAdvanced { + if x != nil { + return x.Advanced + } + return nil } -func (*FlowEthernet) ProtoMessage() {} +func (x *BgpV6Peer) GetCapability() *BgpCapability { + if x != nil { + return x.Capability + } + return nil +} -func (x *FlowEthernet) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[165] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms +func (x *BgpV6Peer) GetLearnedInformationFilter() *BgpLearnedInformationFilter { + if x != nil { + return x.LearnedInformationFilter } - return mi.MessageOf(x) + return nil } -// Deprecated: Use FlowEthernet.ProtoReflect.Descriptor instead. -func (*FlowEthernet) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{165} +func (x *BgpV6Peer) GetV4Routes() []*BgpV4RouteRange { + if x != nil { + return x.V4Routes + } + return nil } -func (x *FlowEthernet) GetDst() *PatternFlowEthernetDst { +func (x *BgpV6Peer) GetV6Routes() []*BgpV6RouteRange { if x != nil { - return x.Dst + return x.V6Routes } return nil } -func (x *FlowEthernet) GetSrc() *PatternFlowEthernetSrc { +func (x *BgpV6Peer) GetV4SrtePolicies() []*BgpSrteV4Policy { if x != nil { - return x.Src + return x.V4SrtePolicies } return nil } -func (x *FlowEthernet) GetEtherType() *PatternFlowEthernetEtherType { +func (x *BgpV6Peer) GetV6SrtePolicies() []*BgpSrteV6Policy { if x != nil { - return x.EtherType + return x.V6SrtePolicies } return nil } -func (x *FlowEthernet) GetPfcQueue() *PatternFlowEthernetPfcQueue { +func (x *BgpV6Peer) GetName() string { + if x != nil && x.Name != nil { + return *x.Name + } + return "" +} + +func (x *BgpV6Peer) GetGracefulRestart() *BgpGracefulRestart { if x != nil { - return x.PfcQueue + return x.GracefulRestart } return nil } -// VLAN packet header -type FlowVlan struct { +// Configuration for emulated BGPv6 peers and routes on a single IPv6 interface. +type BgpV6Interface struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Description missing in models - Priority *PatternFlowVlanPriority `protobuf:"bytes,1,opt,name=priority,proto3" json:"priority,omitempty"` - // Description missing in models - Cfi *PatternFlowVlanCfi `protobuf:"bytes,2,opt,name=cfi,proto3" json:"cfi,omitempty"` - // Description missing in models - Id *PatternFlowVlanId `protobuf:"bytes,3,opt,name=id,proto3" json:"id,omitempty"` - // Description missing in models - Tpid *PatternFlowVlanTpid `protobuf:"bytes,4,opt,name=tpid,proto3" json:"tpid,omitempty"` + // The unique name of IPv6 or Loopback IPv6 interface used as the source IP for this + // list of BGP peers. + // + // x-constraint: + // - /components/schemas/Device.Ipv6/properties/name + // - /components/schemas/Device.Ipv6Loopback/properties/name + // + // required = true + Ipv6Name *string `protobuf:"bytes,1,opt,name=ipv6_name,json=ipv6Name,proto3,oneof" json:"ipv6_name,omitempty"` + // This contains the list of BGPv6 peers configured on this interface. + Peers []*BgpV6Peer `protobuf:"bytes,2,rep,name=peers,proto3" json:"peers,omitempty"` } -func (x *FlowVlan) Reset() { - *x = FlowVlan{} +func (x *BgpV6Interface) Reset() { + *x = BgpV6Interface{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[166] + mi := &file_otg_proto_msgTypes[129] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *FlowVlan) String() string { +func (x *BgpV6Interface) String() string { return protoimpl.X.MessageStringOf(x) } -func (*FlowVlan) ProtoMessage() {} +func (*BgpV6Interface) ProtoMessage() {} -func (x *FlowVlan) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[166] +func (x *BgpV6Interface) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[129] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -32917,72 +32356,74 @@ func (x *FlowVlan) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use FlowVlan.ProtoReflect.Descriptor instead. -func (*FlowVlan) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{166} -} - -func (x *FlowVlan) GetPriority() *PatternFlowVlanPriority { - if x != nil { - return x.Priority - } - return nil -} - -func (x *FlowVlan) GetCfi() *PatternFlowVlanCfi { - if x != nil { - return x.Cfi - } - return nil +// Deprecated: Use BgpV6Interface.ProtoReflect.Descriptor instead. +func (*BgpV6Interface) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{129} } -func (x *FlowVlan) GetId() *PatternFlowVlanId { - if x != nil { - return x.Id +func (x *BgpV6Interface) GetIpv6Name() string { + if x != nil && x.Ipv6Name != nil { + return *x.Ipv6Name } - return nil + return "" } -func (x *FlowVlan) GetTpid() *PatternFlowVlanTpid { +func (x *BgpV6Interface) GetPeers() []*BgpV6Peer { if x != nil { - return x.Tpid + return x.Peers } return nil } -// VXLAN packet header -type FlowVxlan struct { +// Configuration for BGPv6 segment routing settings. +type BgpV6SegmentRouting struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Description missing in models - Flags *PatternFlowVxlanFlags `protobuf:"bytes,1,opt,name=flags,proto3" json:"flags,omitempty"` - // Description missing in models - Reserved0 *PatternFlowVxlanReserved0 `protobuf:"bytes,2,opt,name=reserved0,proto3" json:"reserved0,omitempty"` - // Description missing in models - Vni *PatternFlowVxlanVni `protobuf:"bytes,3,opt,name=vni,proto3" json:"vni,omitempty"` - // Description missing in models - Reserved1 *PatternFlowVxlanReserved1 `protobuf:"bytes,4,opt,name=reserved1,proto3" json:"reserved1,omitempty"` + // TBD + // default = False + IngressSupportsVpn *bool `protobuf:"varint,1,opt,name=ingress_supports_vpn,json=ingressSupportsVpn,proto3,oneof" json:"ingress_supports_vpn,omitempty"` + // TBD + // default = False + ReducedEncapsulation *bool `protobuf:"varint,2,opt,name=reduced_encapsulation,json=reducedEncapsulation,proto3,oneof" json:"reduced_encapsulation,omitempty"` + // TBD + // default = False + CopyTimeToLive *bool `protobuf:"varint,3,opt,name=copy_time_to_live,json=copyTimeToLive,proto3,oneof" json:"copy_time_to_live,omitempty"` + // TBD + // default = 0 + TimeToLive *uint32 `protobuf:"varint,4,opt,name=time_to_live,json=timeToLive,proto3,oneof" json:"time_to_live,omitempty"` + // TBD + // default = 0 + MaxSidsPerSrh *uint32 `protobuf:"varint,5,opt,name=max_sids_per_srh,json=maxSidsPerSrh,proto3,oneof" json:"max_sids_per_srh,omitempty"` + // TBD + // default = False + AutoGenerateSegmentLeftValue *bool `protobuf:"varint,6,opt,name=auto_generate_segment_left_value,json=autoGenerateSegmentLeftValue,proto3,oneof" json:"auto_generate_segment_left_value,omitempty"` + // TBD + // default = 0 + SegmentLeftValue *uint32 `protobuf:"varint,7,opt,name=segment_left_value,json=segmentLeftValue,proto3,oneof" json:"segment_left_value,omitempty"` + // TBD + // default = False + AdvertiseSrTePolicy *bool `protobuf:"varint,8,opt,name=advertise_sr_te_policy,json=advertiseSrTePolicy,proto3,oneof" json:"advertise_sr_te_policy,omitempty"` } -func (x *FlowVxlan) Reset() { - *x = FlowVxlan{} +func (x *BgpV6SegmentRouting) Reset() { + *x = BgpV6SegmentRouting{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[167] + mi := &file_otg_proto_msgTypes[130] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *FlowVxlan) String() string { +func (x *BgpV6SegmentRouting) String() string { return protoimpl.X.MessageStringOf(x) } -func (*FlowVxlan) ProtoMessage() {} +func (*BgpV6SegmentRouting) ProtoMessage() {} -func (x *FlowVxlan) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[167] +func (x *BgpV6SegmentRouting) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[130] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -32993,92 +32434,143 @@ func (x *FlowVxlan) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use FlowVxlan.ProtoReflect.Descriptor instead. -func (*FlowVxlan) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{167} +// Deprecated: Use BgpV6SegmentRouting.ProtoReflect.Descriptor instead. +func (*BgpV6SegmentRouting) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{130} } -func (x *FlowVxlan) GetFlags() *PatternFlowVxlanFlags { - if x != nil { - return x.Flags +func (x *BgpV6SegmentRouting) GetIngressSupportsVpn() bool { + if x != nil && x.IngressSupportsVpn != nil { + return *x.IngressSupportsVpn } - return nil + return false } -func (x *FlowVxlan) GetReserved0() *PatternFlowVxlanReserved0 { - if x != nil { - return x.Reserved0 +func (x *BgpV6SegmentRouting) GetReducedEncapsulation() bool { + if x != nil && x.ReducedEncapsulation != nil { + return *x.ReducedEncapsulation } - return nil + return false } -func (x *FlowVxlan) GetVni() *PatternFlowVxlanVni { - if x != nil { - return x.Vni +func (x *BgpV6SegmentRouting) GetCopyTimeToLive() bool { + if x != nil && x.CopyTimeToLive != nil { + return *x.CopyTimeToLive } - return nil + return false } -func (x *FlowVxlan) GetReserved1() *PatternFlowVxlanReserved1 { - if x != nil { - return x.Reserved1 +func (x *BgpV6SegmentRouting) GetTimeToLive() uint32 { + if x != nil && x.TimeToLive != nil { + return *x.TimeToLive } - return nil + return 0 } -// IPv4 packet header -type FlowIpv4 struct { +func (x *BgpV6SegmentRouting) GetMaxSidsPerSrh() uint32 { + if x != nil && x.MaxSidsPerSrh != nil { + return *x.MaxSidsPerSrh + } + return 0 +} + +func (x *BgpV6SegmentRouting) GetAutoGenerateSegmentLeftValue() bool { + if x != nil && x.AutoGenerateSegmentLeftValue != nil { + return *x.AutoGenerateSegmentLeftValue + } + return false +} + +func (x *BgpV6SegmentRouting) GetSegmentLeftValue() uint32 { + if x != nil && x.SegmentLeftValue != nil { + return *x.SegmentLeftValue + } + return 0 +} + +func (x *BgpV6SegmentRouting) GetAdvertiseSrTePolicy() bool { + if x != nil && x.AdvertiseSrTePolicy != nil { + return *x.AdvertiseSrTePolicy + } + return false +} + +// Configuration for BGP Ethernet Segment ranges. Advertises following routes - +// +// Type 4 - Ethernet Segment Route +type BgpV6EthernetSegment struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields + // Designated Forwarder (DF) election configuration. + DfElection *BgpEthernetSegmentDfElection `protobuf:"bytes,1,opt,name=df_election,json=dfElection,proto3" json:"df_election,omitempty"` + // This contains the list of EVIs. + Evis []*BgpV6EvpnEvis `protobuf:"bytes,2,rep,name=evis,proto3" json:"evis,omitempty"` + // 10-octet Ethernet Segment Identifier (ESI) Example - For multi-home scenario nonZero + // ESI is '10000000000000000000' . + // default = 00000000000000000000 + Esi *string `protobuf:"bytes,3,opt,name=esi,proto3,oneof" json:"esi,omitempty"` + // Single Active or All Active mode Redundancy mode selection for Multi-home. + // default = ActiveMode.Enum.all_active + ActiveMode *BgpV6EthernetSegment_ActiveMode_Enum `protobuf:"varint,4,opt,name=active_mode,json=activeMode,proto3,enum=otg.BgpV6EthernetSegment_ActiveMode_Enum,oneof" json:"active_mode,omitempty"` + // The label value to be advertised as ESI Label in ESI Label Extended Community. This + // is included in Ethernet Auto-discovery per ES Routes advertised by a router. + // default = 0 + EsiLabel *uint32 `protobuf:"varint,5,opt,name=esi_label,json=esiLabel,proto3,oneof" json:"esi_label,omitempty"` // Description missing in models - Version *PatternFlowIpv4Version `protobuf:"bytes,1,opt,name=version,proto3" json:"version,omitempty"` - // Description missing in models - HeaderLength *PatternFlowIpv4HeaderLength `protobuf:"bytes,2,opt,name=header_length,json=headerLength,proto3" json:"header_length,omitempty"` - // Description missing in models - Priority *FlowIpv4Priority `protobuf:"bytes,3,opt,name=priority,proto3" json:"priority,omitempty"` - // Description missing in models - TotalLength *PatternFlowIpv4TotalLength `protobuf:"bytes,4,opt,name=total_length,json=totalLength,proto3" json:"total_length,omitempty"` - // Description missing in models - Identification *PatternFlowIpv4Identification `protobuf:"bytes,5,opt,name=identification,proto3" json:"identification,omitempty"` - // Description missing in models - Reserved *PatternFlowIpv4Reserved `protobuf:"bytes,6,opt,name=reserved,proto3" json:"reserved,omitempty"` - // Description missing in models - DontFragment *PatternFlowIpv4DontFragment `protobuf:"bytes,7,opt,name=dont_fragment,json=dontFragment,proto3" json:"dont_fragment,omitempty"` - // Description missing in models - MoreFragments *PatternFlowIpv4MoreFragments `protobuf:"bytes,8,opt,name=more_fragments,json=moreFragments,proto3" json:"more_fragments,omitempty"` - // Description missing in models - FragmentOffset *PatternFlowIpv4FragmentOffset `protobuf:"bytes,9,opt,name=fragment_offset,json=fragmentOffset,proto3" json:"fragment_offset,omitempty"` - // Description missing in models - TimeToLive *PatternFlowIpv4TimeToLive `protobuf:"bytes,10,opt,name=time_to_live,json=timeToLive,proto3" json:"time_to_live,omitempty"` - // Description missing in models - Protocol *PatternFlowIpv4Protocol `protobuf:"bytes,11,opt,name=protocol,proto3" json:"protocol,omitempty"` - // Description missing in models - HeaderChecksum *PatternFlowIpv4HeaderChecksum `protobuf:"bytes,12,opt,name=header_checksum,json=headerChecksum,proto3" json:"header_checksum,omitempty"` - // Description missing in models - Src *PatternFlowIpv4Src `protobuf:"bytes,13,opt,name=src,proto3" json:"src,omitempty"` - // Description missing in models - Dst *PatternFlowIpv4Dst `protobuf:"bytes,14,opt,name=dst,proto3" json:"dst,omitempty"` + Advanced *BgpRouteAdvanced `protobuf:"bytes,6,opt,name=advanced,proto3" json:"advanced,omitempty"` + // Optional community settings. + Communities []*BgpCommunity `protobuf:"bytes,7,rep,name=communities,proto3" json:"communities,omitempty"` + // Optional Extended Community settings. The Extended Communities Attribute is a transitive + // optional BGP attribute, with the Type Code 16. Community and Extended Communities + // attributes are utilized to trigger routing decisions, such as acceptance, rejection, + // preference, or redistribution. An extended community is an 8-Bytes value. It is + // divided into two main parts. The first 2 Bytes of the community encode a type and + // sub-type fields and the last 6 Bytes carry a unique set of data in a format defined + // by the type and sub-type field. Extended communities provide a larger range for + // grouping or categorizing communities. When type is administrator_as_2octet or administrator_as_4octet, + // the valid sub types are route target and origin. The valid value for administrator_as_2octet + // and administrator_as_4octet type is either two byte AS followed by four byte local + // administrator id or four byte AS followed by two byte local administrator id. When + // type is administrator_ipv4_address the valid sub types are route target and origin. + // The valid value for administrator_ipv4_address is a four byte IPv4 address followed + // by a two byte local administrator id. When type is opaque, valid sub types are color + // and encapsulation. When sub type is color, first two bytes of the value field contain + // flags and last four bytes contains the value of the color. When sub type is encapsulation + // the first four bytes of value field are reserved and last two bytes carries the tunnel + // type from IANA's ETHER TYPES registry e.g IPv4 (protocol type = 0x0800), IPv6 (protocol + // type = 0x86dd), and MPLS (protocol type = 0x8847). When type is administrator_as_2octet_link_bandwidth + // the valid sub type is extended_bandwidth. The first two bytes of the value field + // contains the AS number and the last four bytes contains the bandwidth in IEEE floating + // point format. When type is evpn the valid subtype is mac_address. In the value field + // the low-order bit of the first byte(Flags) is defined as the Sticky/static flag and + // may be set to 1, indicating the MAC address is static and cannot move. The second + // byte is reserved and the last four bytes contain the sequence number which is used + // to ensure that PEs retain the correct MAC/IP Advertisement route when multiple updates + // occur for the same MAC address. + ExtCommunities []*BgpExtCommunity `protobuf:"bytes,8,rep,name=ext_communities,json=extCommunities,proto3" json:"ext_communities,omitempty"` + // Optional AS PATH settings. + AsPath *BgpAsPath `protobuf:"bytes,9,opt,name=as_path,json=asPath,proto3" json:"as_path,omitempty"` } -func (x *FlowIpv4) Reset() { - *x = FlowIpv4{} +func (x *BgpV6EthernetSegment) Reset() { + *x = BgpV6EthernetSegment{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[168] + mi := &file_otg_proto_msgTypes[131] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *FlowIpv4) String() string { +func (x *BgpV6EthernetSegment) String() string { return protoimpl.X.MessageStringOf(x) } -func (*FlowIpv4) ProtoMessage() {} +func (*BgpV6EthernetSegment) ProtoMessage() {} -func (x *FlowIpv4) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[168] +func (x *BgpV6EthernetSegment) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[131] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -33089,143 +32581,107 @@ func (x *FlowIpv4) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use FlowIpv4.ProtoReflect.Descriptor instead. -func (*FlowIpv4) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{168} +// Deprecated: Use BgpV6EthernetSegment.ProtoReflect.Descriptor instead. +func (*BgpV6EthernetSegment) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{131} } -func (x *FlowIpv4) GetVersion() *PatternFlowIpv4Version { - if x != nil { - return x.Version - } - return nil -} - -func (x *FlowIpv4) GetHeaderLength() *PatternFlowIpv4HeaderLength { - if x != nil { - return x.HeaderLength - } - return nil -} - -func (x *FlowIpv4) GetPriority() *FlowIpv4Priority { - if x != nil { - return x.Priority - } - return nil -} - -func (x *FlowIpv4) GetTotalLength() *PatternFlowIpv4TotalLength { - if x != nil { - return x.TotalLength - } - return nil -} - -func (x *FlowIpv4) GetIdentification() *PatternFlowIpv4Identification { - if x != nil { - return x.Identification - } - return nil -} - -func (x *FlowIpv4) GetReserved() *PatternFlowIpv4Reserved { +func (x *BgpV6EthernetSegment) GetDfElection() *BgpEthernetSegmentDfElection { if x != nil { - return x.Reserved + return x.DfElection } return nil } -func (x *FlowIpv4) GetDontFragment() *PatternFlowIpv4DontFragment { +func (x *BgpV6EthernetSegment) GetEvis() []*BgpV6EvpnEvis { if x != nil { - return x.DontFragment + return x.Evis } return nil } -func (x *FlowIpv4) GetMoreFragments() *PatternFlowIpv4MoreFragments { - if x != nil { - return x.MoreFragments +func (x *BgpV6EthernetSegment) GetEsi() string { + if x != nil && x.Esi != nil { + return *x.Esi } - return nil + return "" } -func (x *FlowIpv4) GetFragmentOffset() *PatternFlowIpv4FragmentOffset { - if x != nil { - return x.FragmentOffset +func (x *BgpV6EthernetSegment) GetActiveMode() BgpV6EthernetSegment_ActiveMode_Enum { + if x != nil && x.ActiveMode != nil { + return *x.ActiveMode } - return nil + return BgpV6EthernetSegment_ActiveMode_unspecified } -func (x *FlowIpv4) GetTimeToLive() *PatternFlowIpv4TimeToLive { - if x != nil { - return x.TimeToLive +func (x *BgpV6EthernetSegment) GetEsiLabel() uint32 { + if x != nil && x.EsiLabel != nil { + return *x.EsiLabel } - return nil + return 0 } -func (x *FlowIpv4) GetProtocol() *PatternFlowIpv4Protocol { +func (x *BgpV6EthernetSegment) GetAdvanced() *BgpRouteAdvanced { if x != nil { - return x.Protocol + return x.Advanced } return nil } -func (x *FlowIpv4) GetHeaderChecksum() *PatternFlowIpv4HeaderChecksum { +func (x *BgpV6EthernetSegment) GetCommunities() []*BgpCommunity { if x != nil { - return x.HeaderChecksum + return x.Communities } return nil } -func (x *FlowIpv4) GetSrc() *PatternFlowIpv4Src { +func (x *BgpV6EthernetSegment) GetExtCommunities() []*BgpExtCommunity { if x != nil { - return x.Src + return x.ExtCommunities } return nil } -func (x *FlowIpv4) GetDst() *PatternFlowIpv4Dst { +func (x *BgpV6EthernetSegment) GetAsPath() *BgpAsPath { if x != nil { - return x.Dst + return x.AsPath } return nil } -// A container for ipv4 raw, tos, dscp ip priorities. -type FlowIpv4Priority struct { +// This contains a list of different flavors of EVPN. +// For example EVPN over VXLAN or EVPN over MPLS etc to be configured per Ethernet segment. +// +// Need to instantiate correct type of EVPN instance as per requirement. +type BgpV6EvpnEvis struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // Description missing in models - // default = Choice.Enum.dscp - Choice *FlowIpv4Priority_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.FlowIpv4Priority_Choice_Enum,oneof" json:"choice,omitempty"` - // Description missing in models - Raw *PatternFlowIpv4PriorityRaw `protobuf:"bytes,2,opt,name=raw,proto3" json:"raw,omitempty"` - // Description missing in models - Tos *FlowIpv4Tos `protobuf:"bytes,3,opt,name=tos,proto3" json:"tos,omitempty"` - // Description missing in models - Dscp *FlowIpv4Dscp `protobuf:"bytes,4,opt,name=dscp,proto3" json:"dscp,omitempty"` + // default = Choice.Enum.evi_vxlan + Choice *BgpV6EvpnEvis_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.BgpV6EvpnEvis_Choice_Enum,oneof" json:"choice,omitempty"` + // EVPN VXLAN instance to be configured per Ethernet Segment. + EviVxlan *BgpV6EviVxlan `protobuf:"bytes,2,opt,name=evi_vxlan,json=eviVxlan,proto3" json:"evi_vxlan,omitempty"` } -func (x *FlowIpv4Priority) Reset() { - *x = FlowIpv4Priority{} +func (x *BgpV6EvpnEvis) Reset() { + *x = BgpV6EvpnEvis{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[169] + mi := &file_otg_proto_msgTypes[132] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *FlowIpv4Priority) String() string { +func (x *BgpV6EvpnEvis) String() string { return protoimpl.X.MessageStringOf(x) } -func (*FlowIpv4Priority) ProtoMessage() {} +func (*BgpV6EvpnEvis) ProtoMessage() {} -func (x *FlowIpv4Priority) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[169] +func (x *BgpV6EvpnEvis) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[132] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -33236,68 +32692,115 @@ func (x *FlowIpv4Priority) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use FlowIpv4Priority.ProtoReflect.Descriptor instead. -func (*FlowIpv4Priority) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{169} +// Deprecated: Use BgpV6EvpnEvis.ProtoReflect.Descriptor instead. +func (*BgpV6EvpnEvis) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{132} } -func (x *FlowIpv4Priority) GetChoice() FlowIpv4Priority_Choice_Enum { +func (x *BgpV6EvpnEvis) GetChoice() BgpV6EvpnEvis_Choice_Enum { if x != nil && x.Choice != nil { return *x.Choice } - return FlowIpv4Priority_Choice_unspecified -} - -func (x *FlowIpv4Priority) GetRaw() *PatternFlowIpv4PriorityRaw { - if x != nil { - return x.Raw - } - return nil -} - -func (x *FlowIpv4Priority) GetTos() *FlowIpv4Tos { - if x != nil { - return x.Tos - } - return nil + return BgpV6EvpnEvis_Choice_unspecified } -func (x *FlowIpv4Priority) GetDscp() *FlowIpv4Dscp { +func (x *BgpV6EvpnEvis) GetEviVxlan() *BgpV6EviVxlan { if x != nil { - return x.Dscp + return x.EviVxlan } return nil } -// Differentiated services code point (DSCP) packet field. -type FlowIpv4Dscp struct { +// Configuration for BGP EVPN EVI. Advertises following routes - +// +// # Type 3 - Inclusive Multicast Ethernet Tag Route +// +// Type 1 - Ethernet Auto-discovery Route (Per EVI) +// +// Type 1 - Ethernet Auto-discovery Route (Per ES) +type BgpV6EviVxlan struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields + // This contains the list of Broadcast Domains to be configured per EVI. + BroadcastDomains []*BgpV6EviVxlanBroadcastDomain `protobuf:"bytes,1,rep,name=broadcast_domains,json=broadcastDomains,proto3" json:"broadcast_domains,omitempty"` + // This model only supports Ingress Replication + // default = ReplicationType.Enum.ingress_replication + ReplicationType *BgpV6EviVxlan_ReplicationType_Enum `protobuf:"varint,2,opt,name=replication_type,json=replicationType,proto3,enum=otg.BgpV6EviVxlan_ReplicationType_Enum,oneof" json:"replication_type,omitempty"` + // Downstream assigned VNI to be carried as Part of P-Multicast Service Interface Tunnel + // attribute (PMSI Tunnel Attribute) in Type 3 Inclusive Multicast Ethernet Tag Route. + // default = 16 + PmsiLabel *uint32 `protobuf:"varint,3,opt,name=pmsi_label,json=pmsiLabel,proto3,oneof" json:"pmsi_label,omitempty"` + // The Auto-discovery Route label (AD label) value, which gets advertised in the Ethernet + // Auto-discovery Route per + // default = 0 + AdLabel *uint32 `protobuf:"varint,4,opt,name=ad_label,json=adLabel,proto3,oneof" json:"ad_label,omitempty"` + // Colon separated Extended Community value of 6 Bytes - AS number: Value identifying + // an EVI. Example - for the as_2octet 60005:100. + RouteDistinguisher *BgpRouteDistinguisher `protobuf:"bytes,5,opt,name=route_distinguisher,json=routeDistinguisher,proto3" json:"route_distinguisher,omitempty"` + // List of Layer 2 Virtual Network Identifier (L2VNI) export targets associated with + // this EVI. + RouteTargetExport []*BgpRouteTarget `protobuf:"bytes,6,rep,name=route_target_export,json=routeTargetExport,proto3" json:"route_target_export,omitempty"` + // List of L2VNI import targets associated with this EVI. + RouteTargetImport []*BgpRouteTarget `protobuf:"bytes,7,rep,name=route_target_import,json=routeTargetImport,proto3" json:"route_target_import,omitempty"` + // List of Layer 3 Virtual Network Identifier (L3VNI) Export Route Targets. + L3RouteTargetExport []*BgpRouteTarget `protobuf:"bytes,8,rep,name=l3_route_target_export,json=l3RouteTargetExport,proto3" json:"l3_route_target_export,omitempty"` + // List of L3VNI Import Route Targets. + L3RouteTargetImport []*BgpRouteTarget `protobuf:"bytes,9,rep,name=l3_route_target_import,json=l3RouteTargetImport,proto3" json:"l3_route_target_import,omitempty"` // Description missing in models - Phb *PatternFlowIpv4DscpPhb `protobuf:"bytes,1,opt,name=phb,proto3" json:"phb,omitempty"` - // Description missing in models - Ecn *PatternFlowIpv4DscpEcn `protobuf:"bytes,2,opt,name=ecn,proto3" json:"ecn,omitempty"` + Advanced *BgpRouteAdvanced `protobuf:"bytes,10,opt,name=advanced,proto3" json:"advanced,omitempty"` + // Optional community settings. + Communities []*BgpCommunity `protobuf:"bytes,11,rep,name=communities,proto3" json:"communities,omitempty"` + // Optional Extended Community settings. The Extended Communities Attribute is a transitive + // optional BGP attribute, with the Type Code 16. Community and Extended Communities + // attributes are utilized to trigger routing decisions, such as acceptance, rejection, + // preference, or redistribution. An extended community is an 8-Bytes value. It is + // divided into two main parts. The first 2 Bytes of the community encode a type and + // sub-type fields and the last 6 Bytes carry a unique set of data in a format defined + // by the type and sub-type field. Extended communities provide a larger range for + // grouping or categorizing communities. When type is administrator_as_2octet or administrator_as_4octet, + // the valid sub types are route target and origin. The valid value for administrator_as_2octet + // and administrator_as_4octet type is either two byte AS followed by four byte local + // administrator id or four byte AS followed by two byte local administrator id. When + // type is administrator_ipv4_address the valid sub types are route target and origin. + // The valid value for administrator_ipv4_address is a four byte IPv4 address followed + // by a two byte local administrator id. When type is opaque, valid sub types are color + // and encapsulation. When sub type is color, first two bytes of the value field contain + // flags and last four bytes contains the value of the color. When sub type is encapsulation + // the first four bytes of value field are reserved and last two bytes carries the tunnel + // type from IANA's ETHER TYPES registry e.g IPv4 (protocol type = 0x0800), IPv6 (protocol + // type = 0x86dd), and MPLS (protocol type = 0x8847). When type is administrator_as_2octet_link_bandwidth + // the valid sub type is extended_bandwidth. The first two bytes of the value field + // contains the AS number and the last four bytes contains the bandwidth in IEEE floating + // point format. When type is evpn the valid subtype is mac_address. In the value field + // the low-order bit of the first byte(Flags) is defined as the Sticky/static flag and + // may be set to 1, indicating the MAC address is static and cannot move. The second + // byte is reserved and the last four bytes contain the sequence number which is used + // to ensure that PEs retain the correct MAC/IP Advertisement route when multiple updates + // occur for the same MAC address. + ExtCommunities []*BgpExtCommunity `protobuf:"bytes,12,rep,name=ext_communities,json=extCommunities,proto3" json:"ext_communities,omitempty"` + // Optional AS PATH settings. + AsPath *BgpAsPath `protobuf:"bytes,13,opt,name=as_path,json=asPath,proto3" json:"as_path,omitempty"` } -func (x *FlowIpv4Dscp) Reset() { - *x = FlowIpv4Dscp{} +func (x *BgpV6EviVxlan) Reset() { + *x = BgpV6EviVxlan{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[170] + mi := &file_otg_proto_msgTypes[133] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *FlowIpv4Dscp) String() string { +func (x *BgpV6EviVxlan) String() string { return protoimpl.X.MessageStringOf(x) } -func (*FlowIpv4Dscp) ProtoMessage() {} +func (*BgpV6EviVxlan) ProtoMessage() {} -func (x *FlowIpv4Dscp) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[170] +func (x *BgpV6EviVxlan) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[133] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -33308,160 +32811,138 @@ func (x *FlowIpv4Dscp) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use FlowIpv4Dscp.ProtoReflect.Descriptor instead. -func (*FlowIpv4Dscp) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{170} +// Deprecated: Use BgpV6EviVxlan.ProtoReflect.Descriptor instead. +func (*BgpV6EviVxlan) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{133} } -func (x *FlowIpv4Dscp) GetPhb() *PatternFlowIpv4DscpPhb { +func (x *BgpV6EviVxlan) GetBroadcastDomains() []*BgpV6EviVxlanBroadcastDomain { if x != nil { - return x.Phb + return x.BroadcastDomains } return nil } -func (x *FlowIpv4Dscp) GetEcn() *PatternFlowIpv4DscpEcn { - if x != nil { - return x.Ecn +func (x *BgpV6EviVxlan) GetReplicationType() BgpV6EviVxlan_ReplicationType_Enum { + if x != nil && x.ReplicationType != nil { + return *x.ReplicationType } - return nil + return BgpV6EviVxlan_ReplicationType_unspecified } -// Type of service (TOS) packet field. -type FlowIpv4Tos struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // Description missing in models - Precedence *PatternFlowIpv4TosPrecedence `protobuf:"bytes,1,opt,name=precedence,proto3" json:"precedence,omitempty"` - // Description missing in models - Delay *PatternFlowIpv4TosDelay `protobuf:"bytes,2,opt,name=delay,proto3" json:"delay,omitempty"` - // Description missing in models - Throughput *PatternFlowIpv4TosThroughput `protobuf:"bytes,3,opt,name=throughput,proto3" json:"throughput,omitempty"` - // Description missing in models - Reliability *PatternFlowIpv4TosReliability `protobuf:"bytes,4,opt,name=reliability,proto3" json:"reliability,omitempty"` - // Description missing in models - Monetary *PatternFlowIpv4TosMonetary `protobuf:"bytes,5,opt,name=monetary,proto3" json:"monetary,omitempty"` - // Description missing in models - Unused *PatternFlowIpv4TosUnused `protobuf:"bytes,6,opt,name=unused,proto3" json:"unused,omitempty"` +func (x *BgpV6EviVxlan) GetPmsiLabel() uint32 { + if x != nil && x.PmsiLabel != nil { + return *x.PmsiLabel + } + return 0 } -func (x *FlowIpv4Tos) Reset() { - *x = FlowIpv4Tos{} - if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[171] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) +func (x *BgpV6EviVxlan) GetAdLabel() uint32 { + if x != nil && x.AdLabel != nil { + return *x.AdLabel } + return 0 } -func (x *FlowIpv4Tos) String() string { - return protoimpl.X.MessageStringOf(x) +func (x *BgpV6EviVxlan) GetRouteDistinguisher() *BgpRouteDistinguisher { + if x != nil { + return x.RouteDistinguisher + } + return nil } -func (*FlowIpv4Tos) ProtoMessage() {} - -func (x *FlowIpv4Tos) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[171] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms +func (x *BgpV6EviVxlan) GetRouteTargetExport() []*BgpRouteTarget { + if x != nil { + return x.RouteTargetExport } - return mi.MessageOf(x) + return nil } -// Deprecated: Use FlowIpv4Tos.ProtoReflect.Descriptor instead. -func (*FlowIpv4Tos) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{171} +func (x *BgpV6EviVxlan) GetRouteTargetImport() []*BgpRouteTarget { + if x != nil { + return x.RouteTargetImport + } + return nil } -func (x *FlowIpv4Tos) GetPrecedence() *PatternFlowIpv4TosPrecedence { +func (x *BgpV6EviVxlan) GetL3RouteTargetExport() []*BgpRouteTarget { if x != nil { - return x.Precedence + return x.L3RouteTargetExport } return nil } -func (x *FlowIpv4Tos) GetDelay() *PatternFlowIpv4TosDelay { +func (x *BgpV6EviVxlan) GetL3RouteTargetImport() []*BgpRouteTarget { if x != nil { - return x.Delay + return x.L3RouteTargetImport } return nil } -func (x *FlowIpv4Tos) GetThroughput() *PatternFlowIpv4TosThroughput { +func (x *BgpV6EviVxlan) GetAdvanced() *BgpRouteAdvanced { if x != nil { - return x.Throughput + return x.Advanced } return nil } -func (x *FlowIpv4Tos) GetReliability() *PatternFlowIpv4TosReliability { +func (x *BgpV6EviVxlan) GetCommunities() []*BgpCommunity { if x != nil { - return x.Reliability + return x.Communities } return nil } -func (x *FlowIpv4Tos) GetMonetary() *PatternFlowIpv4TosMonetary { +func (x *BgpV6EviVxlan) GetExtCommunities() []*BgpExtCommunity { if x != nil { - return x.Monetary + return x.ExtCommunities } return nil } -func (x *FlowIpv4Tos) GetUnused() *PatternFlowIpv4TosUnused { +func (x *BgpV6EviVxlan) GetAsPath() *BgpAsPath { if x != nil { - return x.Unused + return x.AsPath } return nil } -// IPv6 packet header -type FlowIpv6 struct { +// Configuration for Broadcast Domains per EVI. +type BgpV6EviVxlanBroadcastDomain struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Description missing in models - Version *PatternFlowIpv6Version `protobuf:"bytes,1,opt,name=version,proto3" json:"version,omitempty"` - // Description missing in models - TrafficClass *PatternFlowIpv6TrafficClass `protobuf:"bytes,2,opt,name=traffic_class,json=trafficClass,proto3" json:"traffic_class,omitempty"` - // Description missing in models - FlowLabel *PatternFlowIpv6FlowLabel `protobuf:"bytes,3,opt,name=flow_label,json=flowLabel,proto3" json:"flow_label,omitempty"` - // Description missing in models - PayloadLength *PatternFlowIpv6PayloadLength `protobuf:"bytes,4,opt,name=payload_length,json=payloadLength,proto3" json:"payload_length,omitempty"` - // Description missing in models - NextHeader *PatternFlowIpv6NextHeader `protobuf:"bytes,5,opt,name=next_header,json=nextHeader,proto3" json:"next_header,omitempty"` - // Description missing in models - HopLimit *PatternFlowIpv6HopLimit `protobuf:"bytes,6,opt,name=hop_limit,json=hopLimit,proto3" json:"hop_limit,omitempty"` - // Description missing in models - Src *PatternFlowIpv6Src `protobuf:"bytes,7,opt,name=src,proto3" json:"src,omitempty"` - // Description missing in models - Dst *PatternFlowIpv6Dst `protobuf:"bytes,8,opt,name=dst,proto3" json:"dst,omitempty"` + // This contains the list of Customer MAC/IP Ranges to be configured per Broadcast Domain. + // + // Advertises following route - + // Type 2 - MAC/IP Advertisement Route. + CmacIpRange []*BgpCMacIpRange `protobuf:"bytes,1,rep,name=cmac_ip_range,json=cmacIpRange,proto3" json:"cmac_ip_range,omitempty"` + // The Ethernet Tag ID of the Broadcast Domain. + // default = 0 + EthernetTagId *uint32 `protobuf:"varint,2,opt,name=ethernet_tag_id,json=ethernetTagId,proto3,oneof" json:"ethernet_tag_id,omitempty"` + // VLAN-Aware service to be enabled or disabled. + // default = False + VlanAwareService *bool `protobuf:"varint,3,opt,name=vlan_aware_service,json=vlanAwareService,proto3,oneof" json:"vlan_aware_service,omitempty"` } -func (x *FlowIpv6) Reset() { - *x = FlowIpv6{} +func (x *BgpV6EviVxlanBroadcastDomain) Reset() { + *x = BgpV6EviVxlanBroadcastDomain{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[172] + mi := &file_otg_proto_msgTypes[134] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *FlowIpv6) String() string { +func (x *BgpV6EviVxlanBroadcastDomain) String() string { return protoimpl.X.MessageStringOf(x) } -func (*FlowIpv6) ProtoMessage() {} +func (*BgpV6EviVxlanBroadcastDomain) ProtoMessage() {} -func (x *FlowIpv6) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[172] +func (x *BgpV6EviVxlanBroadcastDomain) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[134] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -33472,118 +32953,61 @@ func (x *FlowIpv6) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use FlowIpv6.ProtoReflect.Descriptor instead. -func (*FlowIpv6) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{172} -} - -func (x *FlowIpv6) GetVersion() *PatternFlowIpv6Version { - if x != nil { - return x.Version - } - return nil -} - -func (x *FlowIpv6) GetTrafficClass() *PatternFlowIpv6TrafficClass { - if x != nil { - return x.TrafficClass - } - return nil -} - -func (x *FlowIpv6) GetFlowLabel() *PatternFlowIpv6FlowLabel { - if x != nil { - return x.FlowLabel - } - return nil -} - -func (x *FlowIpv6) GetPayloadLength() *PatternFlowIpv6PayloadLength { - if x != nil { - return x.PayloadLength - } - return nil -} - -func (x *FlowIpv6) GetNextHeader() *PatternFlowIpv6NextHeader { - if x != nil { - return x.NextHeader - } - return nil +// Deprecated: Use BgpV6EviVxlanBroadcastDomain.ProtoReflect.Descriptor instead. +func (*BgpV6EviVxlanBroadcastDomain) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{134} } -func (x *FlowIpv6) GetHopLimit() *PatternFlowIpv6HopLimit { +func (x *BgpV6EviVxlanBroadcastDomain) GetCmacIpRange() []*BgpCMacIpRange { if x != nil { - return x.HopLimit + return x.CmacIpRange } return nil } -func (x *FlowIpv6) GetSrc() *PatternFlowIpv6Src { - if x != nil { - return x.Src +func (x *BgpV6EviVxlanBroadcastDomain) GetEthernetTagId() uint32 { + if x != nil && x.EthernetTagId != nil { + return *x.EthernetTagId } - return nil + return 0 } -func (x *FlowIpv6) GetDst() *PatternFlowIpv6Dst { - if x != nil { - return x.Dst +func (x *BgpV6EviVxlanBroadcastDomain) GetVlanAwareService() bool { + if x != nil && x.VlanAwareService != nil { + return *x.VlanAwareService } - return nil + return false } -// IEEE 802.1Qbb PFC Pause packet header. -type FlowPfcPause struct { +// Description missing in models +type DeviceVxlan struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Description missing in models - Dst *PatternFlowPfcPauseDst `protobuf:"bytes,1,opt,name=dst,proto3" json:"dst,omitempty"` - // Description missing in models - Src *PatternFlowPfcPauseSrc `protobuf:"bytes,2,opt,name=src,proto3" json:"src,omitempty"` - // Description missing in models - EtherType *PatternFlowPfcPauseEtherType `protobuf:"bytes,3,opt,name=ether_type,json=etherType,proto3" json:"ether_type,omitempty"` - // Description missing in models - ControlOpCode *PatternFlowPfcPauseControlOpCode `protobuf:"bytes,4,opt,name=control_op_code,json=controlOpCode,proto3" json:"control_op_code,omitempty"` - // Description missing in models - ClassEnableVector *PatternFlowPfcPauseClassEnableVector `protobuf:"bytes,5,opt,name=class_enable_vector,json=classEnableVector,proto3" json:"class_enable_vector,omitempty"` - // Description missing in models - PauseClass_0 *PatternFlowPfcPausePauseClass0 `protobuf:"bytes,6,opt,name=pause_class_0,json=pauseClass0,proto3" json:"pause_class_0,omitempty"` - // Description missing in models - PauseClass_1 *PatternFlowPfcPausePauseClass1 `protobuf:"bytes,7,opt,name=pause_class_1,json=pauseClass1,proto3" json:"pause_class_1,omitempty"` - // Description missing in models - PauseClass_2 *PatternFlowPfcPausePauseClass2 `protobuf:"bytes,8,opt,name=pause_class_2,json=pauseClass2,proto3" json:"pause_class_2,omitempty"` - // Description missing in models - PauseClass_3 *PatternFlowPfcPausePauseClass3 `protobuf:"bytes,9,opt,name=pause_class_3,json=pauseClass3,proto3" json:"pause_class_3,omitempty"` - // Description missing in models - PauseClass_4 *PatternFlowPfcPausePauseClass4 `protobuf:"bytes,10,opt,name=pause_class_4,json=pauseClass4,proto3" json:"pause_class_4,omitempty"` - // Description missing in models - PauseClass_5 *PatternFlowPfcPausePauseClass5 `protobuf:"bytes,11,opt,name=pause_class_5,json=pauseClass5,proto3" json:"pause_class_5,omitempty"` - // Description missing in models - PauseClass_6 *PatternFlowPfcPausePauseClass6 `protobuf:"bytes,12,opt,name=pause_class_6,json=pauseClass6,proto3" json:"pause_class_6,omitempty"` - // Description missing in models - PauseClass_7 *PatternFlowPfcPausePauseClass7 `protobuf:"bytes,13,opt,name=pause_class_7,json=pauseClass7,proto3" json:"pause_class_7,omitempty"` + // IPv4 VXLAN Tunnels + V4Tunnels []*VxlanV4Tunnel `protobuf:"bytes,1,rep,name=v4_tunnels,json=v4Tunnels,proto3" json:"v4_tunnels,omitempty"` + // IPv6 VXLAN Tunnels + V6Tunnels []*VxlanV6Tunnel `protobuf:"bytes,2,rep,name=v6_tunnels,json=v6Tunnels,proto3" json:"v6_tunnels,omitempty"` } -func (x *FlowPfcPause) Reset() { - *x = FlowPfcPause{} +func (x *DeviceVxlan) Reset() { + *x = DeviceVxlan{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[173] + mi := &file_otg_proto_msgTypes[135] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *FlowPfcPause) String() string { +func (x *DeviceVxlan) String() string { return protoimpl.X.MessageStringOf(x) } -func (*FlowPfcPause) ProtoMessage() {} +func (*DeviceVxlan) ProtoMessage() {} -func (x *FlowPfcPause) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[173] +func (x *DeviceVxlan) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[135] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -33594,137 +33018,158 @@ func (x *FlowPfcPause) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use FlowPfcPause.ProtoReflect.Descriptor instead. -func (*FlowPfcPause) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{173} -} - -func (x *FlowPfcPause) GetDst() *PatternFlowPfcPauseDst { - if x != nil { - return x.Dst - } - return nil +// Deprecated: Use DeviceVxlan.ProtoReflect.Descriptor instead. +func (*DeviceVxlan) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{135} } -func (x *FlowPfcPause) GetSrc() *PatternFlowPfcPauseSrc { +func (x *DeviceVxlan) GetV4Tunnels() []*VxlanV4Tunnel { if x != nil { - return x.Src + return x.V4Tunnels } return nil } -func (x *FlowPfcPause) GetEtherType() *PatternFlowPfcPauseEtherType { +func (x *DeviceVxlan) GetV6Tunnels() []*VxlanV6Tunnel { if x != nil { - return x.EtherType + return x.V6Tunnels } return nil } -func (x *FlowPfcPause) GetControlOpCode() *PatternFlowPfcPauseControlOpCode { - if x != nil { - return x.ControlOpCode - } - return nil -} +// Configuration and operational state parameters relating to IPv4 VXLAN tunnel end-point +// interface. +type VxlanV4Tunnel struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields -func (x *FlowPfcPause) GetClassEnableVector() *PatternFlowPfcPauseClassEnableVector { - if x != nil { - return x.ClassEnableVector - } - return nil + // Determines the source interface. + // + // x-constraint: + // - /components/schemas/Device.Ipv4/properties/name + // - /components/schemas/Device.Ipv4Loopback/properties/name + // + // required = true + SourceInterface *string `protobuf:"bytes,1,opt,name=source_interface,json=sourceInterface,proto3,oneof" json:"source_interface,omitempty"` + // Description missing in models + DestinationIpMode *VxlanV4TunnelDestinationIPMode `protobuf:"bytes,2,opt,name=destination_ip_mode,json=destinationIpMode,proto3" json:"destination_ip_mode,omitempty"` + // VXLAN Network Identifier (VNI) to distinguish network instances on the wire + // required = true + Vni *uint32 `protobuf:"varint,3,opt,name=vni,proto3,oneof" json:"vni,omitempty"` + // Globally unique name of an object. It also serves as the primary key for arrays of + // objects. + // Globally unique name of an object. It also serves as the primary key for arrays of + // objects. + // required = true + Name *string `protobuf:"bytes,4,opt,name=name,proto3,oneof" json:"name,omitempty"` } -func (x *FlowPfcPause) GetPauseClass_0() *PatternFlowPfcPausePauseClass0 { - if x != nil { - return x.PauseClass_0 +func (x *VxlanV4Tunnel) Reset() { + *x = VxlanV4Tunnel{} + if protoimpl.UnsafeEnabled { + mi := &file_otg_proto_msgTypes[136] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } - return nil } -func (x *FlowPfcPause) GetPauseClass_1() *PatternFlowPfcPausePauseClass1 { - if x != nil { - return x.PauseClass_1 - } - return nil +func (x *VxlanV4Tunnel) String() string { + return protoimpl.X.MessageStringOf(x) } -func (x *FlowPfcPause) GetPauseClass_2() *PatternFlowPfcPausePauseClass2 { - if x != nil { - return x.PauseClass_2 +func (*VxlanV4Tunnel) ProtoMessage() {} + +func (x *VxlanV4Tunnel) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[136] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms } - return nil + return mi.MessageOf(x) } -func (x *FlowPfcPause) GetPauseClass_3() *PatternFlowPfcPausePauseClass3 { - if x != nil { - return x.PauseClass_3 - } - return nil +// Deprecated: Use VxlanV4Tunnel.ProtoReflect.Descriptor instead. +func (*VxlanV4Tunnel) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{136} } -func (x *FlowPfcPause) GetPauseClass_4() *PatternFlowPfcPausePauseClass4 { - if x != nil { - return x.PauseClass_4 +func (x *VxlanV4Tunnel) GetSourceInterface() string { + if x != nil && x.SourceInterface != nil { + return *x.SourceInterface } - return nil + return "" } -func (x *FlowPfcPause) GetPauseClass_5() *PatternFlowPfcPausePauseClass5 { +func (x *VxlanV4Tunnel) GetDestinationIpMode() *VxlanV4TunnelDestinationIPMode { if x != nil { - return x.PauseClass_5 + return x.DestinationIpMode } return nil } -func (x *FlowPfcPause) GetPauseClass_6() *PatternFlowPfcPausePauseClass6 { - if x != nil { - return x.PauseClass_6 +func (x *VxlanV4Tunnel) GetVni() uint32 { + if x != nil && x.Vni != nil { + return *x.Vni } - return nil + return 0 } -func (x *FlowPfcPause) GetPauseClass_7() *PatternFlowPfcPausePauseClass7 { - if x != nil { - return x.PauseClass_7 +func (x *VxlanV4Tunnel) GetName() string { + if x != nil && x.Name != nil { + return *x.Name } - return nil + return "" } -// IEEE 802.3x global ethernet pause packet header -type FlowEthernetPause struct { +// Configuration and operational state parameters relating to IPv6 VXLAN tunnel end-point +// interface. +type VxlanV6Tunnel struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields + // Determines the source interface. + // + // x-constraint: + // - /components/schemas/Device.Ipv6/properties/name + // - /components/schemas/Device.Ipv6Loopback/properties/name + // + // required = true + SourceInterface *string `protobuf:"bytes,1,opt,name=source_interface,json=sourceInterface,proto3,oneof" json:"source_interface,omitempty"` // Description missing in models - Dst *PatternFlowEthernetPauseDst `protobuf:"bytes,1,opt,name=dst,proto3" json:"dst,omitempty"` - // Description missing in models - Src *PatternFlowEthernetPauseSrc `protobuf:"bytes,2,opt,name=src,proto3" json:"src,omitempty"` - // Description missing in models - EtherType *PatternFlowEthernetPauseEtherType `protobuf:"bytes,3,opt,name=ether_type,json=etherType,proto3" json:"ether_type,omitempty"` - // Description missing in models - ControlOpCode *PatternFlowEthernetPauseControlOpCode `protobuf:"bytes,4,opt,name=control_op_code,json=controlOpCode,proto3" json:"control_op_code,omitempty"` - // Description missing in models - Time *PatternFlowEthernetPauseTime `protobuf:"bytes,5,opt,name=time,proto3" json:"time,omitempty"` + DestinationIpMode *VxlanV6TunnelDestinationIPMode `protobuf:"bytes,2,opt,name=destination_ip_mode,json=destinationIpMode,proto3" json:"destination_ip_mode,omitempty"` + // VXLAN Network Identifier (VNI) to distinguish network instances on the wire + // required = true + Vni *uint32 `protobuf:"varint,3,opt,name=vni,proto3,oneof" json:"vni,omitempty"` + // Globally unique name of an object. It also serves as the primary key for arrays of + // objects. + // Globally unique name of an object. It also serves as the primary key for arrays of + // objects. + // required = true + Name *string `protobuf:"bytes,4,opt,name=name,proto3,oneof" json:"name,omitempty"` } -func (x *FlowEthernetPause) Reset() { - *x = FlowEthernetPause{} +func (x *VxlanV6Tunnel) Reset() { + *x = VxlanV6Tunnel{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[174] + mi := &file_otg_proto_msgTypes[137] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *FlowEthernetPause) String() string { +func (x *VxlanV6Tunnel) String() string { return protoimpl.X.MessageStringOf(x) } -func (*FlowEthernetPause) ProtoMessage() {} +func (*VxlanV6Tunnel) ProtoMessage() {} -func (x *FlowEthernetPause) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[174] +func (x *VxlanV6Tunnel) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[137] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -33735,101 +33180,71 @@ func (x *FlowEthernetPause) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use FlowEthernetPause.ProtoReflect.Descriptor instead. -func (*FlowEthernetPause) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{174} -} - -func (x *FlowEthernetPause) GetDst() *PatternFlowEthernetPauseDst { - if x != nil { - return x.Dst - } - return nil +// Deprecated: Use VxlanV6Tunnel.ProtoReflect.Descriptor instead. +func (*VxlanV6Tunnel) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{137} } -func (x *FlowEthernetPause) GetSrc() *PatternFlowEthernetPauseSrc { - if x != nil { - return x.Src +func (x *VxlanV6Tunnel) GetSourceInterface() string { + if x != nil && x.SourceInterface != nil { + return *x.SourceInterface } - return nil + return "" } -func (x *FlowEthernetPause) GetEtherType() *PatternFlowEthernetPauseEtherType { +func (x *VxlanV6Tunnel) GetDestinationIpMode() *VxlanV6TunnelDestinationIPMode { if x != nil { - return x.EtherType + return x.DestinationIpMode } return nil } -func (x *FlowEthernetPause) GetControlOpCode() *PatternFlowEthernetPauseControlOpCode { - if x != nil { - return x.ControlOpCode +func (x *VxlanV6Tunnel) GetVni() uint32 { + if x != nil && x.Vni != nil { + return *x.Vni } - return nil + return 0 } -func (x *FlowEthernetPause) GetTime() *PatternFlowEthernetPauseTime { - if x != nil { - return x.Time +func (x *VxlanV6Tunnel) GetName() string { + if x != nil && x.Name != nil { + return *x.Name } - return nil + return "" } -// TCP packet header -type FlowTcp struct { +// Communication mode between the VTEPs, either unicast or multicast. +type VxlanV4TunnelDestinationIPMode struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields + // unicast or multicast + // default = Choice.Enum.multicast + Choice *VxlanV4TunnelDestinationIPMode_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.VxlanV4TunnelDestinationIPMode_Choice_Enum,oneof" json:"choice,omitempty"` // Description missing in models - SrcPort *PatternFlowTcpSrcPort `protobuf:"bytes,1,opt,name=src_port,json=srcPort,proto3" json:"src_port,omitempty"` - // Description missing in models - DstPort *PatternFlowTcpDstPort `protobuf:"bytes,2,opt,name=dst_port,json=dstPort,proto3" json:"dst_port,omitempty"` - // Description missing in models - SeqNum *PatternFlowTcpSeqNum `protobuf:"bytes,3,opt,name=seq_num,json=seqNum,proto3" json:"seq_num,omitempty"` - // Description missing in models - AckNum *PatternFlowTcpAckNum `protobuf:"bytes,4,opt,name=ack_num,json=ackNum,proto3" json:"ack_num,omitempty"` - // Description missing in models - DataOffset *PatternFlowTcpDataOffset `protobuf:"bytes,5,opt,name=data_offset,json=dataOffset,proto3" json:"data_offset,omitempty"` - // Description missing in models - EcnNs *PatternFlowTcpEcnNs `protobuf:"bytes,6,opt,name=ecn_ns,json=ecnNs,proto3" json:"ecn_ns,omitempty"` - // Description missing in models - EcnCwr *PatternFlowTcpEcnCwr `protobuf:"bytes,7,opt,name=ecn_cwr,json=ecnCwr,proto3" json:"ecn_cwr,omitempty"` - // Description missing in models - EcnEcho *PatternFlowTcpEcnEcho `protobuf:"bytes,8,opt,name=ecn_echo,json=ecnEcho,proto3" json:"ecn_echo,omitempty"` - // Description missing in models - CtlUrg *PatternFlowTcpCtlUrg `protobuf:"bytes,9,opt,name=ctl_urg,json=ctlUrg,proto3" json:"ctl_urg,omitempty"` - // Description missing in models - CtlAck *PatternFlowTcpCtlAck `protobuf:"bytes,10,opt,name=ctl_ack,json=ctlAck,proto3" json:"ctl_ack,omitempty"` - // Description missing in models - CtlPsh *PatternFlowTcpCtlPsh `protobuf:"bytes,11,opt,name=ctl_psh,json=ctlPsh,proto3" json:"ctl_psh,omitempty"` - // Description missing in models - CtlRst *PatternFlowTcpCtlRst `protobuf:"bytes,12,opt,name=ctl_rst,json=ctlRst,proto3" json:"ctl_rst,omitempty"` - // Description missing in models - CtlSyn *PatternFlowTcpCtlSyn `protobuf:"bytes,13,opt,name=ctl_syn,json=ctlSyn,proto3" json:"ctl_syn,omitempty"` - // Description missing in models - CtlFin *PatternFlowTcpCtlFin `protobuf:"bytes,14,opt,name=ctl_fin,json=ctlFin,proto3" json:"ctl_fin,omitempty"` + Unicast *VxlanV4TunnelDestinationIPModeUnicast `protobuf:"bytes,2,opt,name=unicast,proto3" json:"unicast,omitempty"` // Description missing in models - Window *PatternFlowTcpWindow `protobuf:"bytes,15,opt,name=window,proto3" json:"window,omitempty"` + Multicast *VxlanV4TunnelDestinationIPModeMulticast `protobuf:"bytes,3,opt,name=multicast,proto3" json:"multicast,omitempty"` } -func (x *FlowTcp) Reset() { - *x = FlowTcp{} +func (x *VxlanV4TunnelDestinationIPMode) Reset() { + *x = VxlanV4TunnelDestinationIPMode{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[175] + mi := &file_otg_proto_msgTypes[138] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *FlowTcp) String() string { +func (x *VxlanV4TunnelDestinationIPMode) String() string { return protoimpl.X.MessageStringOf(x) } -func (*FlowTcp) ProtoMessage() {} +func (*VxlanV4TunnelDestinationIPMode) ProtoMessage() {} -func (x *FlowTcp) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[175] +func (x *VxlanV4TunnelDestinationIPMode) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[138] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -33840,149 +33255,127 @@ func (x *FlowTcp) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use FlowTcp.ProtoReflect.Descriptor instead. -func (*FlowTcp) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{175} -} - -func (x *FlowTcp) GetSrcPort() *PatternFlowTcpSrcPort { - if x != nil { - return x.SrcPort - } - return nil -} - -func (x *FlowTcp) GetDstPort() *PatternFlowTcpDstPort { - if x != nil { - return x.DstPort - } - return nil +// Deprecated: Use VxlanV4TunnelDestinationIPMode.ProtoReflect.Descriptor instead. +func (*VxlanV4TunnelDestinationIPMode) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{138} } -func (x *FlowTcp) GetSeqNum() *PatternFlowTcpSeqNum { - if x != nil { - return x.SeqNum +func (x *VxlanV4TunnelDestinationIPMode) GetChoice() VxlanV4TunnelDestinationIPMode_Choice_Enum { + if x != nil && x.Choice != nil { + return *x.Choice } - return nil + return VxlanV4TunnelDestinationIPMode_Choice_unspecified } -func (x *FlowTcp) GetAckNum() *PatternFlowTcpAckNum { +func (x *VxlanV4TunnelDestinationIPMode) GetUnicast() *VxlanV4TunnelDestinationIPModeUnicast { if x != nil { - return x.AckNum + return x.Unicast } return nil } -func (x *FlowTcp) GetDataOffset() *PatternFlowTcpDataOffset { +func (x *VxlanV4TunnelDestinationIPMode) GetMulticast() *VxlanV4TunnelDestinationIPModeMulticast { if x != nil { - return x.DataOffset + return x.Multicast } return nil } -func (x *FlowTcp) GetEcnNs() *PatternFlowTcpEcnNs { - if x != nil { - return x.EcnNs - } - return nil -} +// Communication mode between the VTEPs, either unicast or multicast. +type VxlanV6TunnelDestinationIPMode struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields -func (x *FlowTcp) GetEcnCwr() *PatternFlowTcpEcnCwr { - if x != nil { - return x.EcnCwr - } - return nil + // unicast or multicast + // default = Choice.Enum.multicast + Choice *VxlanV6TunnelDestinationIPMode_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.VxlanV6TunnelDestinationIPMode_Choice_Enum,oneof" json:"choice,omitempty"` + // Description missing in models + Unicast *VxlanV6TunnelDestinationIPModeUnicast `protobuf:"bytes,2,opt,name=unicast,proto3" json:"unicast,omitempty"` + // Description missing in models + Multicast *VxlanV6TunnelDestinationIPModeMulticast `protobuf:"bytes,3,opt,name=multicast,proto3" json:"multicast,omitempty"` } -func (x *FlowTcp) GetEcnEcho() *PatternFlowTcpEcnEcho { - if x != nil { - return x.EcnEcho +func (x *VxlanV6TunnelDestinationIPMode) Reset() { + *x = VxlanV6TunnelDestinationIPMode{} + if protoimpl.UnsafeEnabled { + mi := &file_otg_proto_msgTypes[139] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } - return nil } -func (x *FlowTcp) GetCtlUrg() *PatternFlowTcpCtlUrg { - if x != nil { - return x.CtlUrg - } - return nil +func (x *VxlanV6TunnelDestinationIPMode) String() string { + return protoimpl.X.MessageStringOf(x) } -func (x *FlowTcp) GetCtlAck() *PatternFlowTcpCtlAck { - if x != nil { - return x.CtlAck - } - return nil -} +func (*VxlanV6TunnelDestinationIPMode) ProtoMessage() {} -func (x *FlowTcp) GetCtlPsh() *PatternFlowTcpCtlPsh { - if x != nil { - return x.CtlPsh +func (x *VxlanV6TunnelDestinationIPMode) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[139] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms } - return nil + return mi.MessageOf(x) } -func (x *FlowTcp) GetCtlRst() *PatternFlowTcpCtlRst { - if x != nil { - return x.CtlRst - } - return nil +// Deprecated: Use VxlanV6TunnelDestinationIPMode.ProtoReflect.Descriptor instead. +func (*VxlanV6TunnelDestinationIPMode) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{139} } -func (x *FlowTcp) GetCtlSyn() *PatternFlowTcpCtlSyn { - if x != nil { - return x.CtlSyn +func (x *VxlanV6TunnelDestinationIPMode) GetChoice() VxlanV6TunnelDestinationIPMode_Choice_Enum { + if x != nil && x.Choice != nil { + return *x.Choice } - return nil + return VxlanV6TunnelDestinationIPMode_Choice_unspecified } -func (x *FlowTcp) GetCtlFin() *PatternFlowTcpCtlFin { +func (x *VxlanV6TunnelDestinationIPMode) GetUnicast() *VxlanV6TunnelDestinationIPModeUnicast { if x != nil { - return x.CtlFin + return x.Unicast } return nil } -func (x *FlowTcp) GetWindow() *PatternFlowTcpWindow { +func (x *VxlanV6TunnelDestinationIPMode) GetMulticast() *VxlanV6TunnelDestinationIPModeMulticast { if x != nil { - return x.Window + return x.Multicast } return nil } -// UDP packet header -type FlowUdp struct { +// Description missing in models +type VxlanV4TunnelDestinationIPModeUnicast struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Description missing in models - SrcPort *PatternFlowUdpSrcPort `protobuf:"bytes,1,opt,name=src_port,json=srcPort,proto3" json:"src_port,omitempty"` - // Description missing in models - DstPort *PatternFlowUdpDstPort `protobuf:"bytes,2,opt,name=dst_port,json=dstPort,proto3" json:"dst_port,omitempty"` - // Description missing in models - Length *PatternFlowUdpLength `protobuf:"bytes,3,opt,name=length,proto3" json:"length,omitempty"` - // Description missing in models - Checksum *PatternFlowUdpChecksum `protobuf:"bytes,4,opt,name=checksum,proto3" json:"checksum,omitempty"` + // List of VTEPs for member VNI(VXLAN Network Identifier) + Vteps []*VxlanV4TunnelDestinationIPModeUnicastVtep `protobuf:"bytes,1,rep,name=vteps,proto3" json:"vteps,omitempty"` } -func (x *FlowUdp) Reset() { - *x = FlowUdp{} +func (x *VxlanV4TunnelDestinationIPModeUnicast) Reset() { + *x = VxlanV4TunnelDestinationIPModeUnicast{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[176] + mi := &file_otg_proto_msgTypes[140] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *FlowUdp) String() string { +func (x *VxlanV4TunnelDestinationIPModeUnicast) String() string { return protoimpl.X.MessageStringOf(x) } -func (*FlowUdp) ProtoMessage() {} +func (*VxlanV4TunnelDestinationIPModeUnicast) ProtoMessage() {} -func (x *FlowUdp) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[176] +func (x *VxlanV4TunnelDestinationIPModeUnicast) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[140] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -33993,76 +33386,100 @@ func (x *FlowUdp) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use FlowUdp.ProtoReflect.Descriptor instead. -func (*FlowUdp) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{176} +// Deprecated: Use VxlanV4TunnelDestinationIPModeUnicast.ProtoReflect.Descriptor instead. +func (*VxlanV4TunnelDestinationIPModeUnicast) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{140} } -func (x *FlowUdp) GetSrcPort() *PatternFlowUdpSrcPort { +func (x *VxlanV4TunnelDestinationIPModeUnicast) GetVteps() []*VxlanV4TunnelDestinationIPModeUnicastVtep { if x != nil { - return x.SrcPort + return x.Vteps } return nil } -func (x *FlowUdp) GetDstPort() *PatternFlowUdpDstPort { - if x != nil { - return x.DstPort +// Description missing in models +type VxlanV6TunnelDestinationIPModeUnicast struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // List of VTEPs for member VNI(VXLAN Network Identifier) + Vteps []*VxlanV6TunnelDestinationIPModeUnicastVtep `protobuf:"bytes,1,rep,name=vteps,proto3" json:"vteps,omitempty"` +} + +func (x *VxlanV6TunnelDestinationIPModeUnicast) Reset() { + *x = VxlanV6TunnelDestinationIPModeUnicast{} + if protoimpl.UnsafeEnabled { + mi := &file_otg_proto_msgTypes[141] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } - return nil } -func (x *FlowUdp) GetLength() *PatternFlowUdpLength { - if x != nil { - return x.Length +func (x *VxlanV6TunnelDestinationIPModeUnicast) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*VxlanV6TunnelDestinationIPModeUnicast) ProtoMessage() {} + +func (x *VxlanV6TunnelDestinationIPModeUnicast) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[141] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms } - return nil + return mi.MessageOf(x) } -func (x *FlowUdp) GetChecksum() *PatternFlowUdpChecksum { +// Deprecated: Use VxlanV6TunnelDestinationIPModeUnicast.ProtoReflect.Descriptor instead. +func (*VxlanV6TunnelDestinationIPModeUnicast) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{141} +} + +func (x *VxlanV6TunnelDestinationIPModeUnicast) GetVteps() []*VxlanV6TunnelDestinationIPModeUnicastVtep { if x != nil { - return x.Checksum + return x.Vteps } return nil } -// Standard GRE packet header (RFC2784) -type FlowGre struct { +// Each VTEP maintains an ARP suppression cache table for known IP hosts and their associated +// MAC addresses in the VNI segment. When an end host in the VNI sends an ARP request +// for another end-host IP address, its local VTEP intercepts the ARP request and checks +// for the ARP-resolved IP address in its ARP suppression cache table. If it finds +// a match, the local VTEP sends an ARP response on behalf of the remote end host. +type VxlanTunnelDestinationIPModeUnicastArpSuppressionCache struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Description missing in models - ChecksumPresent *PatternFlowGreChecksumPresent `protobuf:"bytes,1,opt,name=checksum_present,json=checksumPresent,proto3" json:"checksum_present,omitempty"` - // Description missing in models - Reserved0 *PatternFlowGreReserved0 `protobuf:"bytes,2,opt,name=reserved0,proto3" json:"reserved0,omitempty"` - // Description missing in models - Version *PatternFlowGreVersion `protobuf:"bytes,3,opt,name=version,proto3" json:"version,omitempty"` - // Description missing in models - Protocol *PatternFlowGreProtocol `protobuf:"bytes,4,opt,name=protocol,proto3" json:"protocol,omitempty"` - // Description missing in models - Checksum *PatternFlowGreChecksum `protobuf:"bytes,5,opt,name=checksum,proto3" json:"checksum,omitempty"` - // Description missing in models - Reserved1 *PatternFlowGreReserved1 `protobuf:"bytes,6,opt,name=reserved1,proto3" json:"reserved1,omitempty"` + // Remote VM MAC address bound to Remote VM IPv4 address + RemoteVmMac *string `protobuf:"bytes,1,opt,name=remote_vm_mac,json=remoteVmMac,proto3,oneof" json:"remote_vm_mac,omitempty"` + // Remote VM IPv4 address + RemoteVmIpv4 *string `protobuf:"bytes,2,opt,name=remote_vm_ipv4,json=remoteVmIpv4,proto3,oneof" json:"remote_vm_ipv4,omitempty"` } -func (x *FlowGre) Reset() { - *x = FlowGre{} +func (x *VxlanTunnelDestinationIPModeUnicastArpSuppressionCache) Reset() { + *x = VxlanTunnelDestinationIPModeUnicastArpSuppressionCache{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[177] + mi := &file_otg_proto_msgTypes[142] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *FlowGre) String() string { +func (x *VxlanTunnelDestinationIPModeUnicastArpSuppressionCache) String() string { return protoimpl.X.MessageStringOf(x) } -func (*FlowGre) ProtoMessage() {} +func (*VxlanTunnelDestinationIPModeUnicastArpSuppressionCache) ProtoMessage() {} -func (x *FlowGre) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[177] +func (x *VxlanTunnelDestinationIPModeUnicastArpSuppressionCache) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[142] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -34073,104 +33490,58 @@ func (x *FlowGre) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use FlowGre.ProtoReflect.Descriptor instead. -func (*FlowGre) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{177} -} - -func (x *FlowGre) GetChecksumPresent() *PatternFlowGreChecksumPresent { - if x != nil { - return x.ChecksumPresent - } - return nil +// Deprecated: Use VxlanTunnelDestinationIPModeUnicastArpSuppressionCache.ProtoReflect.Descriptor instead. +func (*VxlanTunnelDestinationIPModeUnicastArpSuppressionCache) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{142} } -func (x *FlowGre) GetReserved0() *PatternFlowGreReserved0 { - if x != nil { - return x.Reserved0 +func (x *VxlanTunnelDestinationIPModeUnicastArpSuppressionCache) GetRemoteVmMac() string { + if x != nil && x.RemoteVmMac != nil { + return *x.RemoteVmMac } - return nil + return "" } -func (x *FlowGre) GetVersion() *PatternFlowGreVersion { - if x != nil { - return x.Version +func (x *VxlanTunnelDestinationIPModeUnicastArpSuppressionCache) GetRemoteVmIpv4() string { + if x != nil && x.RemoteVmIpv4 != nil { + return *x.RemoteVmIpv4 } - return nil + return "" } -func (x *FlowGre) GetProtocol() *PatternFlowGreProtocol { - if x != nil { - return x.Protocol - } - return nil -} - -func (x *FlowGre) GetChecksum() *PatternFlowGreChecksum { - if x != nil { - return x.Checksum - } - return nil -} - -func (x *FlowGre) GetReserved1() *PatternFlowGreReserved1 { - if x != nil { - return x.Reserved1 - } - return nil -} - -// GTPv1 packet header -type FlowGtpv1 struct { +// VTEP (VXLAN Tunnel End Point (VTEP)) parameters +type VxlanV4TunnelDestinationIPModeUnicastVtep struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Description missing in models - Version *PatternFlowGtpv1Version `protobuf:"bytes,1,opt,name=version,proto3" json:"version,omitempty"` - // Description missing in models - ProtocolType *PatternFlowGtpv1ProtocolType `protobuf:"bytes,2,opt,name=protocol_type,json=protocolType,proto3" json:"protocol_type,omitempty"` - // Description missing in models - Reserved *PatternFlowGtpv1Reserved `protobuf:"bytes,3,opt,name=reserved,proto3" json:"reserved,omitempty"` - // Description missing in models - EFlag *PatternFlowGtpv1EFlag `protobuf:"bytes,4,opt,name=e_flag,json=eFlag,proto3" json:"e_flag,omitempty"` - // Description missing in models - SFlag *PatternFlowGtpv1SFlag `protobuf:"bytes,5,opt,name=s_flag,json=sFlag,proto3" json:"s_flag,omitempty"` - // Description missing in models - PnFlag *PatternFlowGtpv1PnFlag `protobuf:"bytes,6,opt,name=pn_flag,json=pnFlag,proto3" json:"pn_flag,omitempty"` - // Description missing in models - MessageType *PatternFlowGtpv1MessageType `protobuf:"bytes,7,opt,name=message_type,json=messageType,proto3" json:"message_type,omitempty"` - // Description missing in models - MessageLength *PatternFlowGtpv1MessageLength `protobuf:"bytes,8,opt,name=message_length,json=messageLength,proto3" json:"message_length,omitempty"` - // Description missing in models - Teid *PatternFlowGtpv1Teid `protobuf:"bytes,9,opt,name=teid,proto3" json:"teid,omitempty"` - // Description missing in models - SquenceNumber *PatternFlowGtpv1SquenceNumber `protobuf:"bytes,10,opt,name=squence_number,json=squenceNumber,proto3" json:"squence_number,omitempty"` - // Description missing in models - NPduNumber *PatternFlowGtpv1NPduNumber `protobuf:"bytes,11,opt,name=n_pdu_number,json=nPduNumber,proto3" json:"n_pdu_number,omitempty"` - // Description missing in models - NextExtensionHeaderType *PatternFlowGtpv1NextExtensionHeaderType `protobuf:"bytes,12,opt,name=next_extension_header_type,json=nextExtensionHeaderType,proto3" json:"next_extension_header_type,omitempty"` - // A list of optional extension headers. - ExtensionHeaders []*FlowGtpExtension `protobuf:"bytes,13,rep,name=extension_headers,json=extensionHeaders,proto3" json:"extension_headers,omitempty"` + // Remote VXLAN Tunnel End Point address + RemoteVtepAddress *string `protobuf:"bytes,1,opt,name=remote_vtep_address,json=remoteVtepAddress,proto3,oneof" json:"remote_vtep_address,omitempty"` + // Each VTEP maintains an ARP suppression cache table for known IP hosts and their associated + // MAC addresses in the VNI segment. When an end host in the VNI sends an ARP request + // for another end-host IP address, its local VTEP intercepts the ARP request and checks + // for the ARP-resolved IP address in its ARP suppression cache table. If it finds + // a match, the local VTEP sends an ARP response on behalf of the remote end host. + ArpSuppressionCache []*VxlanTunnelDestinationIPModeUnicastArpSuppressionCache `protobuf:"bytes,2,rep,name=arp_suppression_cache,json=arpSuppressionCache,proto3" json:"arp_suppression_cache,omitempty"` } -func (x *FlowGtpv1) Reset() { - *x = FlowGtpv1{} +func (x *VxlanV4TunnelDestinationIPModeUnicastVtep) Reset() { + *x = VxlanV4TunnelDestinationIPModeUnicastVtep{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[178] + mi := &file_otg_proto_msgTypes[143] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *FlowGtpv1) String() string { +func (x *VxlanV4TunnelDestinationIPModeUnicastVtep) String() string { return protoimpl.X.MessageStringOf(x) } -func (*FlowGtpv1) ProtoMessage() {} +func (*VxlanV4TunnelDestinationIPModeUnicastVtep) ProtoMessage() {} -func (x *FlowGtpv1) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[178] +func (x *VxlanV4TunnelDestinationIPModeUnicastVtep) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[143] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -34181,133 +33552,114 @@ func (x *FlowGtpv1) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use FlowGtpv1.ProtoReflect.Descriptor instead. -func (*FlowGtpv1) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{178} -} - -func (x *FlowGtpv1) GetVersion() *PatternFlowGtpv1Version { - if x != nil { - return x.Version - } - return nil -} - -func (x *FlowGtpv1) GetProtocolType() *PatternFlowGtpv1ProtocolType { - if x != nil { - return x.ProtocolType - } - return nil +// Deprecated: Use VxlanV4TunnelDestinationIPModeUnicastVtep.ProtoReflect.Descriptor instead. +func (*VxlanV4TunnelDestinationIPModeUnicastVtep) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{143} } -func (x *FlowGtpv1) GetReserved() *PatternFlowGtpv1Reserved { - if x != nil { - return x.Reserved +func (x *VxlanV4TunnelDestinationIPModeUnicastVtep) GetRemoteVtepAddress() string { + if x != nil && x.RemoteVtepAddress != nil { + return *x.RemoteVtepAddress } - return nil + return "" } -func (x *FlowGtpv1) GetEFlag() *PatternFlowGtpv1EFlag { +func (x *VxlanV4TunnelDestinationIPModeUnicastVtep) GetArpSuppressionCache() []*VxlanTunnelDestinationIPModeUnicastArpSuppressionCache { if x != nil { - return x.EFlag + return x.ArpSuppressionCache } return nil } -func (x *FlowGtpv1) GetSFlag() *PatternFlowGtpv1SFlag { - if x != nil { - return x.SFlag - } - return nil -} +// VTEP (VXLAN Tunnel End Point (VTEP)) parameters +type VxlanV6TunnelDestinationIPModeUnicastVtep struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields -func (x *FlowGtpv1) GetPnFlag() *PatternFlowGtpv1PnFlag { - if x != nil { - return x.PnFlag - } - return nil + // Remote VXLAN Tunnel End Point address + RemoteVtepAddress *string `protobuf:"bytes,1,opt,name=remote_vtep_address,json=remoteVtepAddress,proto3,oneof" json:"remote_vtep_address,omitempty"` + // Each VTEP maintains an ARP suppression cache table for known IP hosts and their associated + // MAC addresses in the VNI segment. When an end host in the VNI sends an ARP request + // for another end-host IP address, its local VTEP intercepts the ARP request and checks + // for the ARP-resolved IP address in its ARP suppression cache table. If it finds + // a match, the local VTEP sends an ARP response on behalf of the remote end host. + ArpSuppressionCache []*VxlanTunnelDestinationIPModeUnicastArpSuppressionCache `protobuf:"bytes,2,rep,name=arp_suppression_cache,json=arpSuppressionCache,proto3" json:"arp_suppression_cache,omitempty"` } -func (x *FlowGtpv1) GetMessageType() *PatternFlowGtpv1MessageType { - if x != nil { - return x.MessageType +func (x *VxlanV6TunnelDestinationIPModeUnicastVtep) Reset() { + *x = VxlanV6TunnelDestinationIPModeUnicastVtep{} + if protoimpl.UnsafeEnabled { + mi := &file_otg_proto_msgTypes[144] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } - return nil } -func (x *FlowGtpv1) GetMessageLength() *PatternFlowGtpv1MessageLength { - if x != nil { - return x.MessageLength - } - return nil +func (x *VxlanV6TunnelDestinationIPModeUnicastVtep) String() string { + return protoimpl.X.MessageStringOf(x) } -func (x *FlowGtpv1) GetTeid() *PatternFlowGtpv1Teid { - if x != nil { - return x.Teid - } - return nil -} +func (*VxlanV6TunnelDestinationIPModeUnicastVtep) ProtoMessage() {} -func (x *FlowGtpv1) GetSquenceNumber() *PatternFlowGtpv1SquenceNumber { - if x != nil { - return x.SquenceNumber +func (x *VxlanV6TunnelDestinationIPModeUnicastVtep) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[144] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms } - return nil + return mi.MessageOf(x) } -func (x *FlowGtpv1) GetNPduNumber() *PatternFlowGtpv1NPduNumber { - if x != nil { - return x.NPduNumber - } - return nil +// Deprecated: Use VxlanV6TunnelDestinationIPModeUnicastVtep.ProtoReflect.Descriptor instead. +func (*VxlanV6TunnelDestinationIPModeUnicastVtep) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{144} } -func (x *FlowGtpv1) GetNextExtensionHeaderType() *PatternFlowGtpv1NextExtensionHeaderType { - if x != nil { - return x.NextExtensionHeaderType +func (x *VxlanV6TunnelDestinationIPModeUnicastVtep) GetRemoteVtepAddress() string { + if x != nil && x.RemoteVtepAddress != nil { + return *x.RemoteVtepAddress } - return nil + return "" } -func (x *FlowGtpv1) GetExtensionHeaders() []*FlowGtpExtension { +func (x *VxlanV6TunnelDestinationIPModeUnicastVtep) GetArpSuppressionCache() []*VxlanTunnelDestinationIPModeUnicastArpSuppressionCache { if x != nil { - return x.ExtensionHeaders + return x.ArpSuppressionCache } return nil } -// Description missing in models -type FlowGtpExtension struct { +// Multicast Group address for member VNI(VXLAN Network Identifier) +type VxlanV4TunnelDestinationIPModeMulticast struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Description missing in models - ExtensionLength *PatternFlowGtpExtensionExtensionLength `protobuf:"bytes,1,opt,name=extension_length,json=extensionLength,proto3" json:"extension_length,omitempty"` - // Description missing in models - Contents *PatternFlowGtpExtensionContents `protobuf:"bytes,2,opt,name=contents,proto3" json:"contents,omitempty"` - // Description missing in models - NextExtensionHeader *PatternFlowGtpExtensionNextExtensionHeader `protobuf:"bytes,3,opt,name=next_extension_header,json=nextExtensionHeader,proto3" json:"next_extension_header,omitempty"` + // IPv4 Multicast address + Address *string `protobuf:"bytes,1,opt,name=address,proto3,oneof" json:"address,omitempty"` } -func (x *FlowGtpExtension) Reset() { - *x = FlowGtpExtension{} +func (x *VxlanV4TunnelDestinationIPModeMulticast) Reset() { + *x = VxlanV4TunnelDestinationIPModeMulticast{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[179] + mi := &file_otg_proto_msgTypes[145] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *FlowGtpExtension) String() string { +func (x *VxlanV4TunnelDestinationIPModeMulticast) String() string { return protoimpl.X.MessageStringOf(x) } -func (*FlowGtpExtension) ProtoMessage() {} +func (*VxlanV4TunnelDestinationIPModeMulticast) ProtoMessage() {} -func (x *FlowGtpExtension) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[179] +func (x *VxlanV4TunnelDestinationIPModeMulticast) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[145] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -34318,75 +33670,45 @@ func (x *FlowGtpExtension) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use FlowGtpExtension.ProtoReflect.Descriptor instead. -func (*FlowGtpExtension) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{179} -} - -func (x *FlowGtpExtension) GetExtensionLength() *PatternFlowGtpExtensionExtensionLength { - if x != nil { - return x.ExtensionLength - } - return nil -} - -func (x *FlowGtpExtension) GetContents() *PatternFlowGtpExtensionContents { - if x != nil { - return x.Contents - } - return nil +// Deprecated: Use VxlanV4TunnelDestinationIPModeMulticast.ProtoReflect.Descriptor instead. +func (*VxlanV4TunnelDestinationIPModeMulticast) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{145} } -func (x *FlowGtpExtension) GetNextExtensionHeader() *PatternFlowGtpExtensionNextExtensionHeader { - if x != nil { - return x.NextExtensionHeader +func (x *VxlanV4TunnelDestinationIPModeMulticast) GetAddress() string { + if x != nil && x.Address != nil { + return *x.Address } - return nil + return "" } -// GTPv2 packet header -type FlowGtpv2 struct { +// Multicast Group address for member VNI(VXLAN Network Identifier) +type VxlanV6TunnelDestinationIPModeMulticast struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Description missing in models - Version *PatternFlowGtpv2Version `protobuf:"bytes,1,opt,name=version,proto3" json:"version,omitempty"` - // Description missing in models - PiggybackingFlag *PatternFlowGtpv2PiggybackingFlag `protobuf:"bytes,2,opt,name=piggybacking_flag,json=piggybackingFlag,proto3" json:"piggybacking_flag,omitempty"` - // Description missing in models - TeidFlag *PatternFlowGtpv2TeidFlag `protobuf:"bytes,3,opt,name=teid_flag,json=teidFlag,proto3" json:"teid_flag,omitempty"` - // Description missing in models - Spare1 *PatternFlowGtpv2Spare1 `protobuf:"bytes,4,opt,name=spare1,proto3" json:"spare1,omitempty"` - // Description missing in models - MessageType *PatternFlowGtpv2MessageType `protobuf:"bytes,5,opt,name=message_type,json=messageType,proto3" json:"message_type,omitempty"` - // Description missing in models - MessageLength *PatternFlowGtpv2MessageLength `protobuf:"bytes,6,opt,name=message_length,json=messageLength,proto3" json:"message_length,omitempty"` - // Description missing in models - Teid *PatternFlowGtpv2Teid `protobuf:"bytes,7,opt,name=teid,proto3" json:"teid,omitempty"` - // Description missing in models - SequenceNumber *PatternFlowGtpv2SequenceNumber `protobuf:"bytes,8,opt,name=sequence_number,json=sequenceNumber,proto3" json:"sequence_number,omitempty"` - // Description missing in models - Spare2 *PatternFlowGtpv2Spare2 `protobuf:"bytes,9,opt,name=spare2,proto3" json:"spare2,omitempty"` + // IPv6 Multicast address + Address *string `protobuf:"bytes,1,opt,name=address,proto3,oneof" json:"address,omitempty"` } -func (x *FlowGtpv2) Reset() { - *x = FlowGtpv2{} +func (x *VxlanV6TunnelDestinationIPModeMulticast) Reset() { + *x = VxlanV6TunnelDestinationIPModeMulticast{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[180] + mi := &file_otg_proto_msgTypes[146] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *FlowGtpv2) String() string { +func (x *VxlanV6TunnelDestinationIPModeMulticast) String() string { return protoimpl.X.MessageStringOf(x) } -func (*FlowGtpv2) ProtoMessage() {} +func (*VxlanV6TunnelDestinationIPModeMulticast) ProtoMessage() {} -func (x *FlowGtpv2) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[180] +func (x *VxlanV6TunnelDestinationIPModeMulticast) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[146] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -34397,117 +33719,163 @@ func (x *FlowGtpv2) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use FlowGtpv2.ProtoReflect.Descriptor instead. -func (*FlowGtpv2) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{180} +// Deprecated: Use VxlanV6TunnelDestinationIPModeMulticast.ProtoReflect.Descriptor instead. +func (*VxlanV6TunnelDestinationIPModeMulticast) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{146} } -func (x *FlowGtpv2) GetVersion() *PatternFlowGtpv2Version { - if x != nil { - return x.Version +func (x *VxlanV6TunnelDestinationIPModeMulticast) GetAddress() string { + if x != nil && x.Address != nil { + return *x.Address } - return nil + return "" } -func (x *FlowGtpv2) GetPiggybackingFlag() *PatternFlowGtpv2PiggybackingFlag { - if x != nil { - return x.PiggybackingFlag - } - return nil +// Configuration for one or more RSVP interfaces, ingress and egress LSPs. In this model, +// currently IPv4 RSVP and point-to-point LSPs are supported as per RFC3209 and related +// specifications. +type DeviceRsvp struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // List of IPv4 RSVP connected interfaces. At least one interface should be present + // for device connected to the DUT. For unconnected devices, this array must be empty. + Ipv4Interfaces []*RsvpIpv4Interface `protobuf:"bytes,1,rep,name=ipv4_interfaces,json=ipv4Interfaces,proto3" json:"ipv4_interfaces,omitempty"` + // List of IPv4 Loopback or IPv4 connected interfaces acting as RSVP ingress and egress + // endpoints. + LspIpv4Interfaces []*RsvpLspIpv4Interface `protobuf:"bytes,2,rep,name=lsp_ipv4_interfaces,json=lspIpv4Interfaces,proto3" json:"lsp_ipv4_interfaces,omitempty"` + // Globally unique name of an object. It also serves as the primary key for arrays of + // objects. + Name *string `protobuf:"bytes,3,opt,name=name,proto3,oneof" json:"name,omitempty"` } -func (x *FlowGtpv2) GetTeidFlag() *PatternFlowGtpv2TeidFlag { - if x != nil { - return x.TeidFlag +func (x *DeviceRsvp) Reset() { + *x = DeviceRsvp{} + if protoimpl.UnsafeEnabled { + mi := &file_otg_proto_msgTypes[147] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } - return nil } -func (x *FlowGtpv2) GetSpare1() *PatternFlowGtpv2Spare1 { - if x != nil { - return x.Spare1 - } - return nil +func (x *DeviceRsvp) String() string { + return protoimpl.X.MessageStringOf(x) } -func (x *FlowGtpv2) GetMessageType() *PatternFlowGtpv2MessageType { - if x != nil { - return x.MessageType +func (*DeviceRsvp) ProtoMessage() {} + +func (x *DeviceRsvp) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[147] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms } - return nil + return mi.MessageOf(x) } -func (x *FlowGtpv2) GetMessageLength() *PatternFlowGtpv2MessageLength { - if x != nil { - return x.MessageLength - } - return nil +// Deprecated: Use DeviceRsvp.ProtoReflect.Descriptor instead. +func (*DeviceRsvp) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{147} } -func (x *FlowGtpv2) GetTeid() *PatternFlowGtpv2Teid { +func (x *DeviceRsvp) GetIpv4Interfaces() []*RsvpIpv4Interface { if x != nil { - return x.Teid + return x.Ipv4Interfaces } return nil } -func (x *FlowGtpv2) GetSequenceNumber() *PatternFlowGtpv2SequenceNumber { +func (x *DeviceRsvp) GetLspIpv4Interfaces() []*RsvpLspIpv4Interface { if x != nil { - return x.SequenceNumber + return x.LspIpv4Interfaces } return nil } -func (x *FlowGtpv2) GetSpare2() *PatternFlowGtpv2Spare2 { - if x != nil { - return x.Spare2 +func (x *DeviceRsvp) GetName() string { + if x != nil && x.Name != nil { + return *x.Name } - return nil + return "" } -// ARP packet header -type FlowArp struct { +// Configuration for RSVP Interface. +type RsvpIpv4Interface struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Description missing in models - HardwareType *PatternFlowArpHardwareType `protobuf:"bytes,1,opt,name=hardware_type,json=hardwareType,proto3" json:"hardware_type,omitempty"` - // Description missing in models - ProtocolType *PatternFlowArpProtocolType `protobuf:"bytes,2,opt,name=protocol_type,json=protocolType,proto3" json:"protocol_type,omitempty"` - // Description missing in models - HardwareLength *PatternFlowArpHardwareLength `protobuf:"bytes,3,opt,name=hardware_length,json=hardwareLength,proto3" json:"hardware_length,omitempty"` - // Description missing in models - ProtocolLength *PatternFlowArpProtocolLength `protobuf:"bytes,4,opt,name=protocol_length,json=protocolLength,proto3" json:"protocol_length,omitempty"` - // Description missing in models - Operation *PatternFlowArpOperation `protobuf:"bytes,5,opt,name=operation,proto3" json:"operation,omitempty"` - // Description missing in models - SenderHardwareAddr *PatternFlowArpSenderHardwareAddr `protobuf:"bytes,6,opt,name=sender_hardware_addr,json=senderHardwareAddr,proto3" json:"sender_hardware_addr,omitempty"` - // Description missing in models - SenderProtocolAddr *PatternFlowArpSenderProtocolAddr `protobuf:"bytes,7,opt,name=sender_protocol_addr,json=senderProtocolAddr,proto3" json:"sender_protocol_addr,omitempty"` - // Description missing in models - TargetHardwareAddr *PatternFlowArpTargetHardwareAddr `protobuf:"bytes,8,opt,name=target_hardware_addr,json=targetHardwareAddr,proto3" json:"target_hardware_addr,omitempty"` - // Description missing in models - TargetProtocolAddr *PatternFlowArpTargetProtocolAddr `protobuf:"bytes,9,opt,name=target_protocol_addr,json=targetProtocolAddr,proto3" json:"target_protocol_addr,omitempty"` + // The globally unique name of the IPv4 interface connected to the DUT. This name must + // match the name field of the ipv4_addresses on top which this RSVP interface is configured. + // + // x-constraint: + // - /components/schemas/Device.Ipv4/properties/name + // + // required = true + Ipv4Name *string `protobuf:"bytes,1,opt,name=ipv4_name,json=ipv4Name,proto3,oneof" json:"ipv4_name,omitempty"` + // IPv4 address of the RSVP neighbor on this interface. + // required = true + NeighborIp *string `protobuf:"bytes,2,opt,name=neighbor_ip,json=neighborIp,proto3,oneof" json:"neighbor_ip,omitempty"` + // The user-defined label space start value. The LSPs for which this router acts as + // a egress are assigned labels from this label pool.Thelabel_space_start and label_space_end + // together defines this label-pool. + // default = 1000 + LabelSpaceStart *uint32 `protobuf:"varint,3,opt,name=label_space_start,json=labelSpaceStart,proto3,oneof" json:"label_space_start,omitempty"` + // The user-defined label space end value.The last label value that can be assigned + // to the LSPs for which this router acts as egress. + // default = 100000 + LabelSpaceEnd *uint32 `protobuf:"varint,4,opt,name=label_space_end,json=labelSpaceEnd,proto3,oneof" json:"label_space_end,omitempty"` + // Enables sending of Refresh Reduction as described in RFC2961. + // default = False + EnableRefreshReduction *bool `protobuf:"varint,5,opt,name=enable_refresh_reduction,json=enableRefreshReduction,proto3,oneof" json:"enable_refresh_reduction,omitempty"` + // The number of seconds between transmissions of successive Summary Refreshes. There + // is no specification specified maximum value. For clarity, setting the maximum to + // 1 hour. + // default = 30 + SummaryRefreshInterval *uint32 `protobuf:"varint,6,opt,name=summary_refresh_interval,json=summaryRefreshInterval,proto3,oneof" json:"summary_refresh_interval,omitempty"` + // Enables aggregration of different RSVP messages within a single PDU. + // default = False + SendBundle *bool `protobuf:"varint,7,opt,name=send_bundle,json=sendBundle,proto3,oneof" json:"send_bundle,omitempty"` + // The number of milliseconds to wait after which RSVP will bundle different RSVP messages + // and transmit Bundle messages. + // default = 50 + BundleThreshold *uint32 `protobuf:"varint,8,opt,name=bundle_threshold,json=bundleThreshold,proto3,oneof" json:"bundle_threshold,omitempty"` + // Enables sending of Hello Messages as per RFC3209. + // default = False + EnableHello *bool `protobuf:"varint,9,opt,name=enable_hello,json=enableHello,proto3,oneof" json:"enable_hello,omitempty"` + // If enable_hello is set to 'true', this specifies the minimum hello interval in seconds + // at which successive Hello Messages are sent as per RFC3209. There is no specification + // specified maximum value. For clarity, setting the maximum to 1 hour. + // default = 9 + HelloInterval *uint32 `protobuf:"varint,10,opt,name=hello_interval,json=helloInterval,proto3,oneof" json:"hello_interval,omitempty"` + // The number of missed hellos after which the node should consider RSVP Neighbor to + // have timed out. There is no specification specified maximum value. Setting the maximum + // allowed value to 10. + // default = 3 + TimeoutMultiplier *uint32 `protobuf:"varint,11,opt,name=timeout_multiplier,json=timeoutMultiplier,proto3,oneof" json:"timeout_multiplier,omitempty"` } -func (x *FlowArp) Reset() { - *x = FlowArp{} +func (x *RsvpIpv4Interface) Reset() { + *x = RsvpIpv4Interface{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[181] + mi := &file_otg_proto_msgTypes[148] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *FlowArp) String() string { +func (x *RsvpIpv4Interface) String() string { return protoimpl.X.MessageStringOf(x) } -func (*FlowArp) ProtoMessage() {} +func (*RsvpIpv4Interface) ProtoMessage() {} -func (x *FlowArp) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[181] +func (x *RsvpIpv4Interface) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[148] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -34518,104 +33886,128 @@ func (x *FlowArp) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use FlowArp.ProtoReflect.Descriptor instead. -func (*FlowArp) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{181} +// Deprecated: Use RsvpIpv4Interface.ProtoReflect.Descriptor instead. +func (*RsvpIpv4Interface) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{148} } -func (x *FlowArp) GetHardwareType() *PatternFlowArpHardwareType { - if x != nil { - return x.HardwareType +func (x *RsvpIpv4Interface) GetIpv4Name() string { + if x != nil && x.Ipv4Name != nil { + return *x.Ipv4Name } - return nil + return "" } -func (x *FlowArp) GetProtocolType() *PatternFlowArpProtocolType { - if x != nil { - return x.ProtocolType +func (x *RsvpIpv4Interface) GetNeighborIp() string { + if x != nil && x.NeighborIp != nil { + return *x.NeighborIp } - return nil + return "" } -func (x *FlowArp) GetHardwareLength() *PatternFlowArpHardwareLength { - if x != nil { - return x.HardwareLength +func (x *RsvpIpv4Interface) GetLabelSpaceStart() uint32 { + if x != nil && x.LabelSpaceStart != nil { + return *x.LabelSpaceStart } - return nil + return 0 } -func (x *FlowArp) GetProtocolLength() *PatternFlowArpProtocolLength { - if x != nil { - return x.ProtocolLength +func (x *RsvpIpv4Interface) GetLabelSpaceEnd() uint32 { + if x != nil && x.LabelSpaceEnd != nil { + return *x.LabelSpaceEnd } - return nil + return 0 } -func (x *FlowArp) GetOperation() *PatternFlowArpOperation { - if x != nil { - return x.Operation +func (x *RsvpIpv4Interface) GetEnableRefreshReduction() bool { + if x != nil && x.EnableRefreshReduction != nil { + return *x.EnableRefreshReduction } - return nil + return false } -func (x *FlowArp) GetSenderHardwareAddr() *PatternFlowArpSenderHardwareAddr { - if x != nil { - return x.SenderHardwareAddr +func (x *RsvpIpv4Interface) GetSummaryRefreshInterval() uint32 { + if x != nil && x.SummaryRefreshInterval != nil { + return *x.SummaryRefreshInterval } - return nil + return 0 } -func (x *FlowArp) GetSenderProtocolAddr() *PatternFlowArpSenderProtocolAddr { - if x != nil { - return x.SenderProtocolAddr - } - return nil +func (x *RsvpIpv4Interface) GetSendBundle() bool { + if x != nil && x.SendBundle != nil { + return *x.SendBundle + } + return false } -func (x *FlowArp) GetTargetHardwareAddr() *PatternFlowArpTargetHardwareAddr { - if x != nil { - return x.TargetHardwareAddr +func (x *RsvpIpv4Interface) GetBundleThreshold() uint32 { + if x != nil && x.BundleThreshold != nil { + return *x.BundleThreshold } - return nil + return 0 } -func (x *FlowArp) GetTargetProtocolAddr() *PatternFlowArpTargetProtocolAddr { - if x != nil { - return x.TargetProtocolAddr +func (x *RsvpIpv4Interface) GetEnableHello() bool { + if x != nil && x.EnableHello != nil { + return *x.EnableHello } - return nil + return false } -// ICMP packet header -type FlowIcmp struct { +func (x *RsvpIpv4Interface) GetHelloInterval() uint32 { + if x != nil && x.HelloInterval != nil { + return *x.HelloInterval + } + return 0 +} + +func (x *RsvpIpv4Interface) GetTimeoutMultiplier() uint32 { + if x != nil && x.TimeoutMultiplier != nil { + return *x.TimeoutMultiplier + } + return 0 +} + +// Configuration for RSVP LSP IPv4 Interface. +type RsvpLspIpv4Interface struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Description missing in models - // default = Choice.Enum.echo - Choice *FlowIcmp_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.FlowIcmp_Choice_Enum,oneof" json:"choice,omitempty"` - // Description missing in models - Echo *FlowIcmpEcho `protobuf:"bytes,2,opt,name=echo,proto3" json:"echo,omitempty"` + // The globally unique name of the IPv4 or Loopback IPv4 interface acting as the RSVP + // ingress and egress endpoint for the LSPs configured on this interface. This must + // match the name field of either ipv4_addresses or ipv4_loopbacks on which this LSP + // interface is configured. + // + // x-constraint: + // - /components/schemas/Device.Ipv4/properties/name + // - /components/schemas/Device.Ipv4Loopback/properties/name + // + // required = true + Ipv4Name *string `protobuf:"bytes,1,opt,name=ipv4_name,json=ipv4Name,proto3,oneof" json:"ipv4_name,omitempty"` + // Contains properties of Tail(Egress) LSPs. + P2PEgressIpv4Lsps *RsvpLspIpv4InterfaceP2PEgressIpv4Lsp `protobuf:"bytes,2,opt,name=p2p_egress_ipv4_lsps,json=p2pEgressIpv4Lsps,proto3" json:"p2p_egress_ipv4_lsps,omitempty"` + // Array of point-to-point RSVP-TE P2P LSPs originating from this interface. + P2PIngressIpv4Lsps []*RsvpLspIpv4InterfaceP2PIngressIpv4Lsp `protobuf:"bytes,3,rep,name=p2p_ingress_ipv4_lsps,json=p2pIngressIpv4Lsps,proto3" json:"p2p_ingress_ipv4_lsps,omitempty"` } -func (x *FlowIcmp) Reset() { - *x = FlowIcmp{} +func (x *RsvpLspIpv4Interface) Reset() { + *x = RsvpLspIpv4Interface{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[182] + mi := &file_otg_proto_msgTypes[149] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *FlowIcmp) String() string { +func (x *RsvpLspIpv4Interface) String() string { return protoimpl.X.MessageStringOf(x) } -func (*FlowIcmp) ProtoMessage() {} +func (*RsvpLspIpv4Interface) ProtoMessage() {} -func (x *FlowIcmp) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[182] +func (x *RsvpLspIpv4Interface) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[149] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -34626,60 +34018,88 @@ func (x *FlowIcmp) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use FlowIcmp.ProtoReflect.Descriptor instead. -func (*FlowIcmp) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{182} +// Deprecated: Use RsvpLspIpv4Interface.ProtoReflect.Descriptor instead. +func (*RsvpLspIpv4Interface) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{149} } -func (x *FlowIcmp) GetChoice() FlowIcmp_Choice_Enum { - if x != nil && x.Choice != nil { - return *x.Choice +func (x *RsvpLspIpv4Interface) GetIpv4Name() string { + if x != nil && x.Ipv4Name != nil { + return *x.Ipv4Name } - return FlowIcmp_Choice_unspecified + return "" } -func (x *FlowIcmp) GetEcho() *FlowIcmpEcho { +func (x *RsvpLspIpv4Interface) GetP2PEgressIpv4Lsps() *RsvpLspIpv4InterfaceP2PEgressIpv4Lsp { if x != nil { - return x.Echo + return x.P2PEgressIpv4Lsps } return nil } -// Packet Header for ICMP echo request -type FlowIcmpEcho struct { +func (x *RsvpLspIpv4Interface) GetP2PIngressIpv4Lsps() []*RsvpLspIpv4InterfaceP2PIngressIpv4Lsp { + if x != nil { + return x.P2PIngressIpv4Lsps + } + return nil +} + +// Configuration for RSVP Egress Point-to-Point(P2P) IPv4 LSPs. +type RsvpLspIpv4InterfaceP2PEgressIpv4Lsp struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Description missing in models - Type *PatternFlowIcmpEchoType `protobuf:"bytes,1,opt,name=type,proto3" json:"type,omitempty"` - // Description missing in models - Code *PatternFlowIcmpEchoCode `protobuf:"bytes,2,opt,name=code,proto3" json:"code,omitempty"` - // Description missing in models - Checksum *PatternFlowIcmpEchoChecksum `protobuf:"bytes,3,opt,name=checksum,proto3" json:"checksum,omitempty"` - // Description missing in models - Identifier *PatternFlowIcmpEchoIdentifier `protobuf:"bytes,4,opt,name=identifier,proto3" json:"identifier,omitempty"` - // Description missing in models - SequenceNumber *PatternFlowIcmpEchoSequenceNumber `protobuf:"bytes,5,opt,name=sequence_number,json=sequenceNumber,proto3" json:"sequence_number,omitempty"` + // Globally unique name of an object. It also serves as the primary key for arrays of + // objects. + // required = true + Name *string `protobuf:"bytes,1,opt,name=name,proto3,oneof" json:"name,omitempty"` + // The time in seconds between successive transmissions of RESV Refreshes. The actual + // refresh interval is jittered by upto 50%. There is no specification specified maximum + // value. For clarity, setting the maximum to 1 hour. + // default = 30 + RefreshInterval *uint32 `protobuf:"varint,2,opt,name=refresh_interval,json=refreshInterval,proto3,oneof" json:"refresh_interval,omitempty"` + // The number of missed PATH refreshes after which a recieving node should consider + // the LSP state to have timed out. There is no specification specified maximum value. + // Setting the maximum allowed value to 10. + // default = 3 + TimeoutMultiplier *uint32 `protobuf:"varint,3,opt,name=timeout_multiplier,json=timeoutMultiplier,proto3,oneof" json:"timeout_multiplier,omitempty"` + // It determines how RSVP-TE enabled network devices set up reservations along the path + // between an end-to-end QOS-enabled connection. If 'auto' is enabled, the style is + // chosen based on whether the incoming Path has 'SE Desired' flag set. Otherwise, the + // style is chosen based on the value selected for this attribute. + // default = ReservationStyle.Enum.shared_explicit + ReservationStyle *RsvpLspIpv4InterfaceP2PEgressIpv4Lsp_ReservationStyle_Enum `protobuf:"varint,4,opt,name=reservation_style,json=reservationStyle,proto3,enum=otg.RsvpLspIpv4InterfaceP2PEgressIpv4Lsp_ReservationStyle_Enum,oneof" json:"reservation_style,omitempty"` + // If enabled, a specific fixed label will be advertised by the egress or tail end for + // all Path messages received by this egress. This can be leveraged to advertise Explicit + // or Implicit null labels. + // default = False + EnableFixedLabel *bool `protobuf:"varint,5,opt,name=enable_fixed_label,json=enableFixedLabel,proto3,oneof" json:"enable_fixed_label,omitempty"` + // The fixed label value as advertised by egress in RESV message. Applicable only if + // 'fixed_label' is set to 'true'. Special values are '0 - IPv4 Explicit NULL', '2 - + // IPv6 Explicit NULL' and '3 - Implicit NULL'. Outside of this, labels are expected + // to have a minimum value of 16. + // default = 0 + FixedLabelValue *uint32 `protobuf:"varint,6,opt,name=fixed_label_value,json=fixedLabelValue,proto3,oneof" json:"fixed_label_value,omitempty"` } -func (x *FlowIcmpEcho) Reset() { - *x = FlowIcmpEcho{} +func (x *RsvpLspIpv4InterfaceP2PEgressIpv4Lsp) Reset() { + *x = RsvpLspIpv4InterfaceP2PEgressIpv4Lsp{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[183] + mi := &file_otg_proto_msgTypes[150] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *FlowIcmpEcho) String() string { +func (x *RsvpLspIpv4InterfaceP2PEgressIpv4Lsp) String() string { return protoimpl.X.MessageStringOf(x) } -func (*FlowIcmpEcho) ProtoMessage() {} +func (*RsvpLspIpv4InterfaceP2PEgressIpv4Lsp) ProtoMessage() {} -func (x *FlowIcmpEcho) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[183] +func (x *RsvpLspIpv4InterfaceP2PEgressIpv4Lsp) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[150] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -34690,76 +34110,134 @@ func (x *FlowIcmpEcho) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use FlowIcmpEcho.ProtoReflect.Descriptor instead. -func (*FlowIcmpEcho) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{183} +// Deprecated: Use RsvpLspIpv4InterfaceP2PEgressIpv4Lsp.ProtoReflect.Descriptor instead. +func (*RsvpLspIpv4InterfaceP2PEgressIpv4Lsp) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{150} } -func (x *FlowIcmpEcho) GetType() *PatternFlowIcmpEchoType { - if x != nil { - return x.Type +func (x *RsvpLspIpv4InterfaceP2PEgressIpv4Lsp) GetName() string { + if x != nil && x.Name != nil { + return *x.Name } - return nil + return "" } -func (x *FlowIcmpEcho) GetCode() *PatternFlowIcmpEchoCode { - if x != nil { - return x.Code +func (x *RsvpLspIpv4InterfaceP2PEgressIpv4Lsp) GetRefreshInterval() uint32 { + if x != nil && x.RefreshInterval != nil { + return *x.RefreshInterval } - return nil + return 0 } -func (x *FlowIcmpEcho) GetChecksum() *PatternFlowIcmpEchoChecksum { - if x != nil { - return x.Checksum +func (x *RsvpLspIpv4InterfaceP2PEgressIpv4Lsp) GetTimeoutMultiplier() uint32 { + if x != nil && x.TimeoutMultiplier != nil { + return *x.TimeoutMultiplier } - return nil + return 0 } -func (x *FlowIcmpEcho) GetIdentifier() *PatternFlowIcmpEchoIdentifier { - if x != nil { - return x.Identifier +func (x *RsvpLspIpv4InterfaceP2PEgressIpv4Lsp) GetReservationStyle() RsvpLspIpv4InterfaceP2PEgressIpv4Lsp_ReservationStyle_Enum { + if x != nil && x.ReservationStyle != nil { + return *x.ReservationStyle } - return nil + return RsvpLspIpv4InterfaceP2PEgressIpv4Lsp_ReservationStyle_unspecified } -func (x *FlowIcmpEcho) GetSequenceNumber() *PatternFlowIcmpEchoSequenceNumber { - if x != nil { - return x.SequenceNumber +func (x *RsvpLspIpv4InterfaceP2PEgressIpv4Lsp) GetEnableFixedLabel() bool { + if x != nil && x.EnableFixedLabel != nil { + return *x.EnableFixedLabel } - return nil + return false } -// ICMPv6 packet header -type FlowIcmpv6 struct { +func (x *RsvpLspIpv4InterfaceP2PEgressIpv4Lsp) GetFixedLabelValue() uint32 { + if x != nil && x.FixedLabelValue != nil { + return *x.FixedLabelValue + } + return 0 +} + +// Configuration for an RSVP Ingress point-to-point LSP. +type RsvpLspIpv4InterfaceP2PIngressIpv4Lsp struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Description missing in models - // default = Choice.Enum.echo - Choice *FlowIcmpv6_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.FlowIcmpv6_Choice_Enum,oneof" json:"choice,omitempty"` - // Description missing in models - Echo *FlowIcmpv6Echo `protobuf:"bytes,2,opt,name=echo,proto3" json:"echo,omitempty"` + // Globally unique name of an object. It also serves as the primary key for arrays of + // objects. + // required = true + Name *string `protobuf:"bytes,1,opt,name=name,proto3,oneof" json:"name,omitempty"` + // IPv4 address of the remote endpoint of the LSP. + // required = true + RemoteAddress *string `protobuf:"bytes,2,opt,name=remote_address,json=remoteAddress,proto3,oneof" json:"remote_address,omitempty"` + // The Tunnel ID of the RSVP LSP. Carried in the SESSION object in Path Messages. + // default = 1 + TunnelId *uint32 `protobuf:"varint,3,opt,name=tunnel_id,json=tunnelId,proto3,oneof" json:"tunnel_id,omitempty"` + // The LSP ID of the RSVP LSP. Carried in the SENDER_TEMPLATE object in Path Messages. + // default = 1 + LspId *uint32 `protobuf:"varint,4,opt,name=lsp_id,json=lspId,proto3,oneof" json:"lsp_id,omitempty"` + // The time in seconds between successive transmissions of PATH Refreshes. The actual + // refresh interval is jittered by upto 50%. There is no specification specified maximum + // value. For clarity, setting the maximum to 1 hour. + // default = 30 + RefreshInterval *uint32 `protobuf:"varint,5,opt,name=refresh_interval,json=refreshInterval,proto3,oneof" json:"refresh_interval,omitempty"` + // The number of missed RESV refreshes after which a recieving node should consider + // the LSP state to have timed out. There is no specification specified maximum value. + // Setting the maximum allowed value to 10. + // default = 3 + TimeoutMultiplier *uint32 `protobuf:"varint,6,opt,name=timeout_multiplier,json=timeoutMultiplier,proto3,oneof" json:"timeout_multiplier,omitempty"` + // The LSP id that will be used when creating a Make-Before-Break LSP when the active + // LSP is using lsp_id. If the active LSP on which Make-Before-Break is being done is + // using the backup_lsp_id, the new LSP created will toggle to use the lsp_id instead. + // default = 2 + BackupLspId *uint32 `protobuf:"varint,7,opt,name=backup_lsp_id,json=backupLspId,proto3,oneof" json:"backup_lsp_id,omitempty"` + // The amount of delay in milliseconds that an implementation should wait for before + // switching traffic to the new LSP created after a Make-Before-Break is done on an + // LSP. The default value is 0 which means to switch immediately. An implementation + // should support a minimum delay value of at least 50ms . There is no specification + // specified maximum value. Setting maximum allowed value to 1 minute. If a delay value + // is supplied which is lesser than the minimum delay value supported, a warning should + // be provided indicating that the minimum value of LSP switchover delay is automatically + // increased to the supported minimum value. This warning should be included in the + // list of warnings in the 'Response.Warning' attribute sent in the SetConfig 'Success' + // Response. + // default = 0 + LspSwitchoverDelay *uint32 `protobuf:"varint,8,opt,name=lsp_switchover_delay,json=lspSwitchoverDelay,proto3,oneof" json:"lsp_switchover_delay,omitempty"` + // This contains the values of the fields to be included in the SESSION_ATTRIBUTE object + // in the Path Message sent for the LSP. + SessionAttribute *RsvpSessionAttribute `protobuf:"bytes,9,opt,name=session_attribute,json=sessionAttribute,proto3" json:"session_attribute,omitempty"` + // This contains the values of the fields to be included in the TSPEC object in the + // Path Message sent for the LSP. + Tspec *RsvpTspec `protobuf:"bytes,10,opt,name=tspec,proto3" json:"tspec,omitempty"` + // This contains the values of the fields to be included in the FAST_REROUTE object + // in the Path Message sent for the LSP. + // This is an optional object . If this attribute is not included , the FAST_REROUTE + // object will not be included. + FastReroute *RsvpFastReroute `protobuf:"bytes,11,opt,name=fast_reroute,json=fastReroute,proto3" json:"fast_reroute,omitempty"` + // This contains the values of the fields to be included in the ERO object in the Path + // Message sent for the LSP. + // This is an optional object . If this attribute is not included , the ERO object will + // not be included. + Ero *RsvpEro `protobuf:"bytes,12,opt,name=ero,proto3" json:"ero,omitempty"` } -func (x *FlowIcmpv6) Reset() { - *x = FlowIcmpv6{} +func (x *RsvpLspIpv4InterfaceP2PIngressIpv4Lsp) Reset() { + *x = RsvpLspIpv4InterfaceP2PIngressIpv4Lsp{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[184] + mi := &file_otg_proto_msgTypes[151] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *FlowIcmpv6) String() string { +func (x *RsvpLspIpv4InterfaceP2PIngressIpv4Lsp) String() string { return protoimpl.X.MessageStringOf(x) } -func (*FlowIcmpv6) ProtoMessage() {} +func (*RsvpLspIpv4InterfaceP2PIngressIpv4Lsp) ProtoMessage() {} -func (x *FlowIcmpv6) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[184] +func (x *RsvpLspIpv4InterfaceP2PIngressIpv4Lsp) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[151] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -34770,141 +34248,177 @@ func (x *FlowIcmpv6) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use FlowIcmpv6.ProtoReflect.Descriptor instead. -func (*FlowIcmpv6) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{184} +// Deprecated: Use RsvpLspIpv4InterfaceP2PIngressIpv4Lsp.ProtoReflect.Descriptor instead. +func (*RsvpLspIpv4InterfaceP2PIngressIpv4Lsp) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{151} } -func (x *FlowIcmpv6) GetChoice() FlowIcmpv6_Choice_Enum { - if x != nil && x.Choice != nil { - return *x.Choice +func (x *RsvpLspIpv4InterfaceP2PIngressIpv4Lsp) GetName() string { + if x != nil && x.Name != nil { + return *x.Name } - return FlowIcmpv6_Choice_unspecified + return "" } -func (x *FlowIcmpv6) GetEcho() *FlowIcmpv6Echo { - if x != nil { - return x.Echo +func (x *RsvpLspIpv4InterfaceP2PIngressIpv4Lsp) GetRemoteAddress() string { + if x != nil && x.RemoteAddress != nil { + return *x.RemoteAddress } - return nil + return "" } -// Packet Header for ICMPv6 Echo -type FlowIcmpv6Echo struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // Description missing in models - Type *PatternFlowIcmpv6EchoType `protobuf:"bytes,1,opt,name=type,proto3" json:"type,omitempty"` - // Description missing in models - Code *PatternFlowIcmpv6EchoCode `protobuf:"bytes,2,opt,name=code,proto3" json:"code,omitempty"` - // Description missing in models - Identifier *PatternFlowIcmpv6EchoIdentifier `protobuf:"bytes,3,opt,name=identifier,proto3" json:"identifier,omitempty"` - // Description missing in models - SequenceNumber *PatternFlowIcmpv6EchoSequenceNumber `protobuf:"bytes,4,opt,name=sequence_number,json=sequenceNumber,proto3" json:"sequence_number,omitempty"` - // Description missing in models - Checksum *PatternFlowIcmpv6EchoChecksum `protobuf:"bytes,5,opt,name=checksum,proto3" json:"checksum,omitempty"` +func (x *RsvpLspIpv4InterfaceP2PIngressIpv4Lsp) GetTunnelId() uint32 { + if x != nil && x.TunnelId != nil { + return *x.TunnelId + } + return 0 } -func (x *FlowIcmpv6Echo) Reset() { - *x = FlowIcmpv6Echo{} - if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[185] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) +func (x *RsvpLspIpv4InterfaceP2PIngressIpv4Lsp) GetLspId() uint32 { + if x != nil && x.LspId != nil { + return *x.LspId } + return 0 } -func (x *FlowIcmpv6Echo) String() string { - return protoimpl.X.MessageStringOf(x) +func (x *RsvpLspIpv4InterfaceP2PIngressIpv4Lsp) GetRefreshInterval() uint32 { + if x != nil && x.RefreshInterval != nil { + return *x.RefreshInterval + } + return 0 } -func (*FlowIcmpv6Echo) ProtoMessage() {} - -func (x *FlowIcmpv6Echo) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[185] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms +func (x *RsvpLspIpv4InterfaceP2PIngressIpv4Lsp) GetTimeoutMultiplier() uint32 { + if x != nil && x.TimeoutMultiplier != nil { + return *x.TimeoutMultiplier } - return mi.MessageOf(x) + return 0 } -// Deprecated: Use FlowIcmpv6Echo.ProtoReflect.Descriptor instead. -func (*FlowIcmpv6Echo) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{185} +func (x *RsvpLspIpv4InterfaceP2PIngressIpv4Lsp) GetBackupLspId() uint32 { + if x != nil && x.BackupLspId != nil { + return *x.BackupLspId + } + return 0 } -func (x *FlowIcmpv6Echo) GetType() *PatternFlowIcmpv6EchoType { - if x != nil { - return x.Type +func (x *RsvpLspIpv4InterfaceP2PIngressIpv4Lsp) GetLspSwitchoverDelay() uint32 { + if x != nil && x.LspSwitchoverDelay != nil { + return *x.LspSwitchoverDelay } - return nil + return 0 } -func (x *FlowIcmpv6Echo) GetCode() *PatternFlowIcmpv6EchoCode { +func (x *RsvpLspIpv4InterfaceP2PIngressIpv4Lsp) GetSessionAttribute() *RsvpSessionAttribute { if x != nil { - return x.Code + return x.SessionAttribute } return nil } -func (x *FlowIcmpv6Echo) GetIdentifier() *PatternFlowIcmpv6EchoIdentifier { +func (x *RsvpLspIpv4InterfaceP2PIngressIpv4Lsp) GetTspec() *RsvpTspec { if x != nil { - return x.Identifier + return x.Tspec } return nil } -func (x *FlowIcmpv6Echo) GetSequenceNumber() *PatternFlowIcmpv6EchoSequenceNumber { +func (x *RsvpLspIpv4InterfaceP2PIngressIpv4Lsp) GetFastReroute() *RsvpFastReroute { if x != nil { - return x.SequenceNumber + return x.FastReroute } return nil } -func (x *FlowIcmpv6Echo) GetChecksum() *PatternFlowIcmpv6EchoChecksum { +func (x *RsvpLspIpv4InterfaceP2PIngressIpv4Lsp) GetEro() *RsvpEro { if x != nil { - return x.Checksum + return x.Ero } return nil } -// PPP packet header -type FlowPpp struct { +// Configuration for RSVP-TE SESSION_ATTRIBUTE object included in Path Messages as defined +// in RFC3209. The bandwidth_protection_desired and node_protection_desired flags are +// defined in RFC4090 (Fast Reroute). +type RsvpSessionAttribute struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Description missing in models - Address *PatternFlowPppAddress `protobuf:"bytes,1,opt,name=address,proto3" json:"address,omitempty"` - // Description missing in models - Control *PatternFlowPppControl `protobuf:"bytes,2,opt,name=control,proto3" json:"control,omitempty"` - // Description missing in models - ProtocolType *PatternFlowPppProtocolType `protobuf:"bytes,3,opt,name=protocol_type,json=protocolType,proto3" json:"protocol_type,omitempty"` + // If this is enabled, an auto-generated Session Name is included in the SESSION_ATTRIBUTE + // object in the Path Message for this LSP. + // default = True + AutoGenerateSessionName *bool `protobuf:"varint,1,opt,name=auto_generate_session_name,json=autoGenerateSessionName,proto3,oneof" json:"auto_generate_session_name,omitempty"` + // If auto_generate_session_name is set to 'false', then the value of this field is + // used to fill the Session Name field of the SESSION_ATTRIBUTE object in the Path Message + // for this LSP. It is suggested to include the Local IP, Remote IP, Tunnel ID and LSP + // ID in the auto-generated Session Name to ensure uniqueness of the name in the test. + // The maximum length of session name is 254 bytes. + SessionName *string `protobuf:"bytes,2,opt,name=session_name,json=sessionName,proto3,oneof" json:"session_name,omitempty"` + // Specifies the value of the Setup Priority field. This controls whether the LSP should + // pre-empt existing LSP setup with certain Holding Priority if resource limitation + // is encountered when setting up the LSP. (e.g. bandwidth availability). The value + // 0 is the highest priority while 7 is the lowest. + // default = 7 + SetupPriority *uint32 `protobuf:"varint,3,opt,name=setup_priority,json=setupPriority,proto3,oneof" json:"setup_priority,omitempty"` + // Specifies the value of the Holding Priority field. This controls whether a new LSP + // being created with certain Setup Priority should pre-empt this LSP if resource limitation + // is encountered when setting up the LSP. (e.g. bandwidth availability). The value + // 0 is the highest priority while 7 is the lowest. + // default = 7 + HoldingPriority *uint32 `protobuf:"varint,4,opt,name=holding_priority,json=holdingPriority,proto3,oneof" json:"holding_priority,omitempty"` + // This flag permits transit routers to use a local repair mechanism which may result + // in violation of the explicit route object. When a fault is detected on an adjacent + // downstream link or node, a transit router can reroute traffic for fast service restoration. + // default = False + LocalProtectionDesired *bool `protobuf:"varint,5,opt,name=local_protection_desired,json=localProtectionDesired,proto3,oneof" json:"local_protection_desired,omitempty"` + // This flag indicates that label information should be included when doing a route + // record. + // default = False + LabelRecordingDesired *bool `protobuf:"varint,6,opt,name=label_recording_desired,json=labelRecordingDesired,proto3,oneof" json:"label_recording_desired,omitempty"` + // This flag indicates that the tunnel ingress node may choose to reroute this tunnel + // without tearing it down. A tunnel egress node SHOULD use the Shared Explicit(SE) + // Style when responding with a Resv message. + // default = False + SeStyleDesired *bool `protobuf:"varint,7,opt,name=se_style_desired,json=seStyleDesired,proto3,oneof" json:"se_style_desired,omitempty"` + // This flag in the SESSION_ATTRIBUTE object in the Path Message indicates to the PLRs + // along the protected LSP path that a backup path with a bandwidth guarantee is desired. + // This bandwidth has to be guaranteed for the protected LSP, if no FAST_REROUTE object + // is included in the PATH message. If a FAST_REROUTE object is present in the Path + // message, then the bandwidth specified therein is to be guaranteed. + // default = False + BandwidthProtectionDesired *bool `protobuf:"varint,8,opt,name=bandwidth_protection_desired,json=bandwidthProtectionDesired,proto3,oneof" json:"bandwidth_protection_desired,omitempty"` + // This flag in the SESSION_ATTRIBUTE object in the Path Message indicates to the PLRs + // along a protected LSP path that it is desired to have a backup path that bypasses + // at least the next node of the protected LSP. + // default = False + NodeProtectionDesired *bool `protobuf:"varint,9,opt,name=node_protection_desired,json=nodeProtectionDesired,proto3,oneof" json:"node_protection_desired,omitempty"` + // This is an optional object. If included the extended SESSION_ATTRIBUTE object is + // sent in the Path message containing + // the additional fields included in this object. This contains a set of three bitmaps + // using which further constraints can be + // set on the path calculated for the LSP based on the Admin Group settings in the IGP + // (e.g ISIS or OSPF interface). + ResourceAffinities *RsvpResourceAffinities `protobuf:"bytes,10,opt,name=resource_affinities,json=resourceAffinities,proto3" json:"resource_affinities,omitempty"` } -func (x *FlowPpp) Reset() { - *x = FlowPpp{} +func (x *RsvpSessionAttribute) Reset() { + *x = RsvpSessionAttribute{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[186] + mi := &file_otg_proto_msgTypes[152] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *FlowPpp) String() string { +func (x *RsvpSessionAttribute) String() string { return protoimpl.X.MessageStringOf(x) } -func (*FlowPpp) ProtoMessage() {} +func (*RsvpSessionAttribute) ProtoMessage() {} -func (x *FlowPpp) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[186] +func (x *RsvpSessionAttribute) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[152] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -34915,151 +34429,132 @@ func (x *FlowPpp) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use FlowPpp.ProtoReflect.Descriptor instead. -func (*FlowPpp) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{186} +// Deprecated: Use RsvpSessionAttribute.ProtoReflect.Descriptor instead. +func (*RsvpSessionAttribute) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{152} } -func (x *FlowPpp) GetAddress() *PatternFlowPppAddress { - if x != nil { - return x.Address +func (x *RsvpSessionAttribute) GetAutoGenerateSessionName() bool { + if x != nil && x.AutoGenerateSessionName != nil { + return *x.AutoGenerateSessionName } - return nil + return false } -func (x *FlowPpp) GetControl() *PatternFlowPppControl { - if x != nil { - return x.Control +func (x *RsvpSessionAttribute) GetSessionName() string { + if x != nil && x.SessionName != nil { + return *x.SessionName } - return nil + return "" } -func (x *FlowPpp) GetProtocolType() *PatternFlowPppProtocolType { - if x != nil { - return x.ProtocolType +func (x *RsvpSessionAttribute) GetSetupPriority() uint32 { + if x != nil && x.SetupPriority != nil { + return *x.SetupPriority } - return nil + return 0 } -// IGMPv1 packet header -type FlowIgmpv1 struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // Description missing in models - Version *PatternFlowIgmpv1Version `protobuf:"bytes,1,opt,name=version,proto3" json:"version,omitempty"` - // Description missing in models - Type *PatternFlowIgmpv1Type `protobuf:"bytes,2,opt,name=type,proto3" json:"type,omitempty"` - // Description missing in models - Unused *PatternFlowIgmpv1Unused `protobuf:"bytes,3,opt,name=unused,proto3" json:"unused,omitempty"` - // Description missing in models - Checksum *PatternFlowIgmpv1Checksum `protobuf:"bytes,4,opt,name=checksum,proto3" json:"checksum,omitempty"` - // Description missing in models - GroupAddress *PatternFlowIgmpv1GroupAddress `protobuf:"bytes,5,opt,name=group_address,json=groupAddress,proto3" json:"group_address,omitempty"` -} - -func (x *FlowIgmpv1) Reset() { - *x = FlowIgmpv1{} - if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[187] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) +func (x *RsvpSessionAttribute) GetHoldingPriority() uint32 { + if x != nil && x.HoldingPriority != nil { + return *x.HoldingPriority } + return 0 } -func (x *FlowIgmpv1) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*FlowIgmpv1) ProtoMessage() {} - -func (x *FlowIgmpv1) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[187] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms +func (x *RsvpSessionAttribute) GetLocalProtectionDesired() bool { + if x != nil && x.LocalProtectionDesired != nil { + return *x.LocalProtectionDesired } - return mi.MessageOf(x) -} - -// Deprecated: Use FlowIgmpv1.ProtoReflect.Descriptor instead. -func (*FlowIgmpv1) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{187} + return false } -func (x *FlowIgmpv1) GetVersion() *PatternFlowIgmpv1Version { - if x != nil { - return x.Version +func (x *RsvpSessionAttribute) GetLabelRecordingDesired() bool { + if x != nil && x.LabelRecordingDesired != nil { + return *x.LabelRecordingDesired } - return nil + return false } -func (x *FlowIgmpv1) GetType() *PatternFlowIgmpv1Type { - if x != nil { - return x.Type +func (x *RsvpSessionAttribute) GetSeStyleDesired() bool { + if x != nil && x.SeStyleDesired != nil { + return *x.SeStyleDesired } - return nil + return false } -func (x *FlowIgmpv1) GetUnused() *PatternFlowIgmpv1Unused { - if x != nil { - return x.Unused +func (x *RsvpSessionAttribute) GetBandwidthProtectionDesired() bool { + if x != nil && x.BandwidthProtectionDesired != nil { + return *x.BandwidthProtectionDesired } - return nil + return false } -func (x *FlowIgmpv1) GetChecksum() *PatternFlowIgmpv1Checksum { - if x != nil { - return x.Checksum +func (x *RsvpSessionAttribute) GetNodeProtectionDesired() bool { + if x != nil && x.NodeProtectionDesired != nil { + return *x.NodeProtectionDesired } - return nil + return false } -func (x *FlowIgmpv1) GetGroupAddress() *PatternFlowIgmpv1GroupAddress { +func (x *RsvpSessionAttribute) GetResourceAffinities() *RsvpResourceAffinities { if x != nil { - return x.GroupAddress + return x.ResourceAffinities } return nil } -// MPLS packet header; When configuring multiple such headers, the count shall not exceed -// 20. -type FlowMpls struct { +// This is an optional object. If included, the extended SESSION_ATTRIBUTE object is +// sent in the Path message containing +// the additional fields included in this object. This contains a set of three bitmaps +// using which further constraints can be +// set on the path calculated for the LSP based on the Admin Group settings in the IGP +// (e.g ISIS or OSPF interface). +type RsvpResourceAffinities struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Description missing in models - Label *PatternFlowMplsLabel `protobuf:"bytes,1,opt,name=label,proto3" json:"label,omitempty"` - // Description missing in models - TrafficClass *PatternFlowMplsTrafficClass `protobuf:"bytes,2,opt,name=traffic_class,json=trafficClass,proto3" json:"traffic_class,omitempty"` - // Description missing in models - BottomOfStack *PatternFlowMplsBottomOfStack `protobuf:"bytes,3,opt,name=bottom_of_stack,json=bottomOfStack,proto3" json:"bottom_of_stack,omitempty"` - // Description missing in models - TimeToLive *PatternFlowMplsTimeToLive `protobuf:"bytes,4,opt,name=time_to_live,json=timeToLive,proto3" json:"time_to_live,omitempty"` + // A 32-bit vector representing a set of attribute filters associated with a tunnel + // any of which renders a link unacceptable. A null set (all bits set to zero) doesn't + // render the link unacceptable. The most significant byte in the hex-string is the + // farthest to the left in the byte sequence. Leading zero bytes in the configured + // value may be omitted for brevity. + // default = 0 + ExcludeAny *string `protobuf:"bytes,1,opt,name=exclude_any,json=excludeAny,proto3,oneof" json:"exclude_any,omitempty"` + // A 32-bit vector representing a set of attribute filters associated with a tunnel + // any of which renders a link acceptable. A null set (all bits set to zero) automatically + // passes. The most significant byte in the hex-string is the farthest to the left + // in the byte sequence. Leading zero bytes in the configured value may be omitted + // for brevity. + // default = 0 + IncludeAny *string `protobuf:"bytes,2,opt,name=include_any,json=includeAny,proto3,oneof" json:"include_any,omitempty"` + // A 32-bit vector representing a set of attribute filters associated with a tunnel + // all of which must be present for a link to be acceptable. A null set (all bits set + // to zero) automatically passes. The most significant byte in the hex-string is the + // farthest to the left in the byte sequence. Leading zero bytes in the configured + // value may be omitted for brevity. + // default = 0 + IncludeAll *string `protobuf:"bytes,3,opt,name=include_all,json=includeAll,proto3,oneof" json:"include_all,omitempty"` } -func (x *FlowMpls) Reset() { - *x = FlowMpls{} +func (x *RsvpResourceAffinities) Reset() { + *x = RsvpResourceAffinities{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[188] + mi := &file_otg_proto_msgTypes[153] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *FlowMpls) String() string { +func (x *RsvpResourceAffinities) String() string { return protoimpl.X.MessageStringOf(x) } -func (*FlowMpls) ProtoMessage() {} +func (*RsvpResourceAffinities) ProtoMessage() {} -func (x *FlowMpls) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[188] +func (x *RsvpResourceAffinities) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[153] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -35070,76 +34565,78 @@ func (x *FlowMpls) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use FlowMpls.ProtoReflect.Descriptor instead. -func (*FlowMpls) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{188} -} - -func (x *FlowMpls) GetLabel() *PatternFlowMplsLabel { - if x != nil { - return x.Label - } - return nil +// Deprecated: Use RsvpResourceAffinities.ProtoReflect.Descriptor instead. +func (*RsvpResourceAffinities) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{153} } -func (x *FlowMpls) GetTrafficClass() *PatternFlowMplsTrafficClass { - if x != nil { - return x.TrafficClass +func (x *RsvpResourceAffinities) GetExcludeAny() string { + if x != nil && x.ExcludeAny != nil { + return *x.ExcludeAny } - return nil + return "" } -func (x *FlowMpls) GetBottomOfStack() *PatternFlowMplsBottomOfStack { - if x != nil { - return x.BottomOfStack +func (x *RsvpResourceAffinities) GetIncludeAny() string { + if x != nil && x.IncludeAny != nil { + return *x.IncludeAny } - return nil + return "" } -func (x *FlowMpls) GetTimeToLive() *PatternFlowMplsTimeToLive { - if x != nil { - return x.TimeToLive +func (x *RsvpResourceAffinities) GetIncludeAll() string { + if x != nil && x.IncludeAll != nil { + return *x.IncludeAll } - return nil + return "" } -// The frame size which overrides the total length of the packet -type FlowSize struct { +// Configuration for RSVP-TE TSPEC object included in Path Messages. The usage of these +// parameters is defined in RFC2215. +type RsvpTspec struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Description missing in models - // default = Choice.Enum.fixed - Choice *FlowSize_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.FlowSize_Choice_Enum,oneof" json:"choice,omitempty"` - // Description missing in models - // default = 64 - Fixed *uint32 `protobuf:"varint,2,opt,name=fixed,proto3,oneof" json:"fixed,omitempty"` - // Description missing in models - Increment *FlowSizeIncrement `protobuf:"bytes,3,opt,name=increment,proto3" json:"increment,omitempty"` - // Description missing in models - Random *FlowSizeRandom `protobuf:"bytes,4,opt,name=random,proto3" json:"random,omitempty"` - // Description missing in models - WeightPairs *FlowSizeWeightPairs `protobuf:"bytes,5,opt,name=weight_pairs,json=weightPairs,proto3" json:"weight_pairs,omitempty"` + // The rate of the traffic to be carried in this LSP in bytes per second. This is part + // of the Token Bucket specification defined for a traffic flow defined in RFC2215. + // default = 0 + TokenBucketRate *float32 `protobuf:"fixed32,1,opt,name=token_bucket_rate,json=tokenBucketRate,proto3,oneof" json:"token_bucket_rate,omitempty"` + // The depth of the token bucket in bytes used to specify the Token Bucket characteristics + // of the traffic to be carried in the LSP. This is part of the Token Bucket specification + // defined for a traffic flow defined in RFC2215. + // default = 0 + TokenBucketSize *float32 `protobuf:"fixed32,2,opt,name=token_bucket_size,json=tokenBucketSize,proto3,oneof" json:"token_bucket_size,omitempty"` + // The peak data rate of the traffic in bytes per second used to specify the Token Bucket + // characteristics of the traffic to be carried in the LSP. This is part of the Token + // Bucket specification defined for a traffic flow defined in RFC2215. + // default = 0 + PeakDataRate *float32 `protobuf:"fixed32,3,opt,name=peak_data_rate,json=peakDataRate,proto3,oneof" json:"peak_data_rate,omitempty"` + // Specifies the minium length of packet frames that will be policed. + // default = 0 + MinimumPolicedUnit *uint32 `protobuf:"varint,4,opt,name=minimum_policed_unit,json=minimumPolicedUnit,proto3,oneof" json:"minimum_policed_unit,omitempty"` + // Specifies the maximum length of packet frames that will be policed. + // default = 0 + MaximumPolicedUnit *uint32 `protobuf:"varint,5,opt,name=maximum_policed_unit,json=maximumPolicedUnit,proto3,oneof" json:"maximum_policed_unit,omitempty"` } -func (x *FlowSize) Reset() { - *x = FlowSize{} +func (x *RsvpTspec) Reset() { + *x = RsvpTspec{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[189] + mi := &file_otg_proto_msgTypes[154] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *FlowSize) String() string { +func (x *RsvpTspec) String() string { return protoimpl.X.MessageStringOf(x) } -func (*FlowSize) ProtoMessage() {} +func (*RsvpTspec) ProtoMessage() {} -func (x *FlowSize) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[189] +func (x *RsvpTspec) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[154] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -35150,81 +34647,119 @@ func (x *FlowSize) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use FlowSize.ProtoReflect.Descriptor instead. -func (*FlowSize) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{189} +// Deprecated: Use RsvpTspec.ProtoReflect.Descriptor instead. +func (*RsvpTspec) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{154} } -func (x *FlowSize) GetChoice() FlowSize_Choice_Enum { - if x != nil && x.Choice != nil { - return *x.Choice +func (x *RsvpTspec) GetTokenBucketRate() float32 { + if x != nil && x.TokenBucketRate != nil { + return *x.TokenBucketRate } - return FlowSize_Choice_unspecified + return 0 } -func (x *FlowSize) GetFixed() uint32 { - if x != nil && x.Fixed != nil { - return *x.Fixed +func (x *RsvpTspec) GetTokenBucketSize() float32 { + if x != nil && x.TokenBucketSize != nil { + return *x.TokenBucketSize } return 0 } -func (x *FlowSize) GetIncrement() *FlowSizeIncrement { - if x != nil { - return x.Increment +func (x *RsvpTspec) GetPeakDataRate() float32 { + if x != nil && x.PeakDataRate != nil { + return *x.PeakDataRate } - return nil + return 0 } -func (x *FlowSize) GetRandom() *FlowSizeRandom { - if x != nil { - return x.Random +func (x *RsvpTspec) GetMinimumPolicedUnit() uint32 { + if x != nil && x.MinimumPolicedUnit != nil { + return *x.MinimumPolicedUnit } - return nil + return 0 } -func (x *FlowSize) GetWeightPairs() *FlowSizeWeightPairs { - if x != nil { - return x.WeightPairs +func (x *RsvpTspec) GetMaximumPolicedUnit() uint32 { + if x != nil && x.MaximumPolicedUnit != nil { + return *x.MaximumPolicedUnit } - return nil + return 0 } -// Frame size that increments from a starting size to -// an ending size incrementing by a step size. -type FlowSizeIncrement struct { +// Configuration for the optional RSVP-TE FAST_REROUTE object included in Path Messages +// as defined in RFC4090. +type RsvpFastReroute struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Starting frame size in bytes - // default = 64 - Start *uint32 `protobuf:"varint,1,opt,name=start,proto3,oneof" json:"start,omitempty"` - // Ending frame size in bytes - // default = 1518 - End *uint32 `protobuf:"varint,2,opt,name=end,proto3,oneof" json:"end,omitempty"` - // Step frame size in bytes - // default = 1 - Step *uint32 `protobuf:"varint,3,opt,name=step,proto3,oneof" json:"step,omitempty"` + // Specifies the value of the Setup Priority field. This controls whether the backup + // LSP should pre-empt existing LSP that is setup with certain Holding Priority. While + // setting up a backup LSP, preemption of existing LSP can happen if resource limitation + // is encountered (e.g bandwidth availability). + // default = 7 + SetupPriority *uint32 `protobuf:"varint,1,opt,name=setup_priority,json=setupPriority,proto3,oneof" json:"setup_priority,omitempty"` + // Specifies the value of the Holding Priority field. This controls whether a new LSP + // being created with certain Setup Priority should pre-empt this LSP set up with this + // Holding Priority. While setting up a new LSP, preemption of existing LSP can happen + // if resource limitation is encountered (e.g bandwidth availability). + // default = 7 + HoldingPriority *uint32 `protobuf:"varint,2,opt,name=holding_priority,json=holdingPriority,proto3,oneof" json:"holding_priority,omitempty"` + // Specifies the value of the Hop Limit field. This controls the maximum number of hops + // the LSP should traverse to reach the LSP end-point. + // default = 3 + HopLimit *uint32 `protobuf:"varint,3,opt,name=hop_limit,json=hopLimit,proto3,oneof" json:"hop_limit,omitempty"` + // Specifies the value of the Bandwidth field as a 32-bit IEEE floating point integer, + // in bytes per second, as desired for the LSP. + // default = 0 + Bandwidth *float32 `protobuf:"fixed32,4,opt,name=bandwidth,proto3,oneof" json:"bandwidth,omitempty"` + // A 32-bit vector representing a set of attribute filters associated with a tunnel + // any of which renders a link unacceptable. A null set (all bits set to zero) doesn't + // render the link unacceptable. The most significant byte in the hex-string is the + // farthest to the left in the byte sequence. Leading zero bytes in the configured + // value may be omitted for brevity. + // default = 0 + ExcludeAny *string `protobuf:"bytes,5,opt,name=exclude_any,json=excludeAny,proto3,oneof" json:"exclude_any,omitempty"` + // A 32-bit vector representing a set of attribute filters associated with a tunnel + // any of which renders a link acceptable. A null set (all bits set to zero) automatically + // passes. The most significant byte in the hex-string is the farthest to the left + // in the byte sequence. Leading zero bytes in the configured value may be omitted + // for brevity. + // default = 0 + IncludeAny *string `protobuf:"bytes,6,opt,name=include_any,json=includeAny,proto3,oneof" json:"include_any,omitempty"` + // A 32-bit vector representing a set of attribute filters associated with a tunnel + // all of which must be present for a link to be acceptable. A null set (all bits set + // to zero) automatically passes. The most significant byte in the hex-string is the + // farthest to the left in the byte sequence. Leading zero bytes in the configured + // value may be omitted for brevity. + // default = 0 + IncludeAll *string `protobuf:"bytes,7,opt,name=include_all,json=includeAll,proto3,oneof" json:"include_all,omitempty"` + // Requests protection via the one-to-one backup method. + // default = False + OneToOneBackupDesired *bool `protobuf:"varint,8,opt,name=one_to_one_backup_desired,json=oneToOneBackupDesired,proto3,oneof" json:"one_to_one_backup_desired,omitempty"` + // Requests protection via the facility backup method. + // default = False + FacilityBackupDesired *bool `protobuf:"varint,9,opt,name=facility_backup_desired,json=facilityBackupDesired,proto3,oneof" json:"facility_backup_desired,omitempty"` } -func (x *FlowSizeIncrement) Reset() { - *x = FlowSizeIncrement{} +func (x *RsvpFastReroute) Reset() { + *x = RsvpFastReroute{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[190] + mi := &file_otg_proto_msgTypes[155] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *FlowSizeIncrement) String() string { +func (x *RsvpFastReroute) String() string { return protoimpl.X.MessageStringOf(x) } -func (*FlowSizeIncrement) ProtoMessage() {} +func (*RsvpFastReroute) ProtoMessage() {} -func (x *FlowSizeIncrement) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[190] +func (x *RsvpFastReroute) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[155] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -35235,140 +34770,115 @@ func (x *FlowSizeIncrement) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use FlowSizeIncrement.ProtoReflect.Descriptor instead. -func (*FlowSizeIncrement) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{190} +// Deprecated: Use RsvpFastReroute.ProtoReflect.Descriptor instead. +func (*RsvpFastReroute) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{155} } -func (x *FlowSizeIncrement) GetStart() uint32 { - if x != nil && x.Start != nil { - return *x.Start +func (x *RsvpFastReroute) GetSetupPriority() uint32 { + if x != nil && x.SetupPriority != nil { + return *x.SetupPriority } return 0 } -func (x *FlowSizeIncrement) GetEnd() uint32 { - if x != nil && x.End != nil { - return *x.End +func (x *RsvpFastReroute) GetHoldingPriority() uint32 { + if x != nil && x.HoldingPriority != nil { + return *x.HoldingPriority } return 0 } -func (x *FlowSizeIncrement) GetStep() uint32 { - if x != nil && x.Step != nil { - return *x.Step +func (x *RsvpFastReroute) GetHopLimit() uint32 { + if x != nil && x.HopLimit != nil { + return *x.HopLimit } return 0 } -// Random frame size from a min value to a max value. -type FlowSizeRandom struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // Description missing in models - // default = 64 - Min *uint32 `protobuf:"varint,1,opt,name=min,proto3,oneof" json:"min,omitempty"` - // Description missing in models - // default = 1518 - Max *uint32 `protobuf:"varint,2,opt,name=max,proto3,oneof" json:"max,omitempty"` -} - -func (x *FlowSizeRandom) Reset() { - *x = FlowSizeRandom{} - if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[191] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) +func (x *RsvpFastReroute) GetBandwidth() float32 { + if x != nil && x.Bandwidth != nil { + return *x.Bandwidth } + return 0 } -func (x *FlowSizeRandom) String() string { - return protoimpl.X.MessageStringOf(x) +func (x *RsvpFastReroute) GetExcludeAny() string { + if x != nil && x.ExcludeAny != nil { + return *x.ExcludeAny + } + return "" } -func (*FlowSizeRandom) ProtoMessage() {} - -func (x *FlowSizeRandom) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[191] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms +func (x *RsvpFastReroute) GetIncludeAny() string { + if x != nil && x.IncludeAny != nil { + return *x.IncludeAny } - return mi.MessageOf(x) + return "" } -// Deprecated: Use FlowSizeRandom.ProtoReflect.Descriptor instead. -func (*FlowSizeRandom) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{191} +func (x *RsvpFastReroute) GetIncludeAll() string { + if x != nil && x.IncludeAll != nil { + return *x.IncludeAll + } + return "" } -func (x *FlowSizeRandom) GetMin() uint32 { - if x != nil && x.Min != nil { - return *x.Min +func (x *RsvpFastReroute) GetOneToOneBackupDesired() bool { + if x != nil && x.OneToOneBackupDesired != nil { + return *x.OneToOneBackupDesired } - return 0 + return false } -func (x *FlowSizeRandom) GetMax() uint32 { - if x != nil && x.Max != nil { - return *x.Max +func (x *RsvpFastReroute) GetFacilityBackupDesired() bool { + if x != nil && x.FacilityBackupDesired != nil { + return *x.FacilityBackupDesired } - return 0 + return false } -// Frame size distribution, defined as pairs (including IMIX distribution). -// Frames are randomly generated such that the proportion of each frame size out of -// the total number of frames -// are matching with the weight value of the pair. However, as with any -// other probability -// distribution, the sample distribution is close to theoretical value only if the size -// of the sample is reasonably large. -// When the number of frames is very low the transmitted frames may not come close to -// the ratio described in the weight. -type FlowSizeWeightPairs struct { +// Configuration for the optional RSVP-TE explicit route object(ERO) object included +// in Path Messages. +type RsvpEro struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Description missing in models - // default = Choice.Enum.predefined - Choice *FlowSizeWeightPairs_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.FlowSizeWeightPairs_Choice_Enum,oneof" json:"choice,omitempty"` - // Specify predefined frame size distribution pairs (including IMIX distribution). + // Determines whether the IP address of the RSVP neighbor should be added as an ERO + // sub-object. If it is to be included, it can be included as a Loose hop or as a Strict + // hop. + // default = PrependNeighborIp.Enum.prepend_loose + PrependNeighborIp *RsvpEro_PrependNeighborIp_Enum `protobuf:"varint,1,opt,name=prepend_neighbor_ip,json=prependNeighborIp,proto3,enum=otg.RsvpEro_PrependNeighborIp_Enum,oneof" json:"prepend_neighbor_ip,omitempty"` + // If prepend_egress_ip is set to one of 'prepend_loose' or 'prepend_strict', then set + // this value as the prefix length of the ERO sub-object containing egress IP address. // - // The available predefined distribution pairs are: - // - IMIX (64:7, 570:4, and 1518:1) - // - IPSec IMIX (90:58.67, 92:2, 594:23.66 and 1418:15.67) - // - IPv6 IMIX (60:58.67, 496:2, 594:23.66 and 1518:15.67) - // - Standard IMIX (58:58.67, 62:2, 594:23.66 and 1518:15.67) - // - TCP IMIX (90:58.67, 92:2, 594:23.66 and 1518:15.67) - // default = Predefined.Enum.imix - Predefined *FlowSizeWeightPairs_Predefined_Enum `protobuf:"varint,2,opt,name=predefined,proto3,enum=otg.FlowSizeWeightPairs_Predefined_Enum,oneof" json:"predefined,omitempty"` - // Description missing in models - Custom []*FlowSizeWeightPairsCustom `protobuf:"bytes,3,rep,name=custom,proto3" json:"custom,omitempty"` + // default = 32 + PrefixLength *uint32 `protobuf:"varint,2,opt,name=prefix_length,json=prefixLength,proto3,oneof" json:"prefix_length,omitempty"` + // Array of sub-objects to be included in the ERO. These sub-objects contain the intermediate + // hops to be traversed by the LSP while being forwarded towards the egress endpoint. + // These sub-objects are included after the optional sub-object containing IP address + // of egress endpoint of the LSP (when present). + Subobjects []*RsvpEroSubobject `protobuf:"bytes,3,rep,name=subobjects,proto3" json:"subobjects,omitempty"` } -func (x *FlowSizeWeightPairs) Reset() { - *x = FlowSizeWeightPairs{} +func (x *RsvpEro) Reset() { + *x = RsvpEro{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[192] + mi := &file_otg_proto_msgTypes[156] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *FlowSizeWeightPairs) String() string { +func (x *RsvpEro) String() string { return protoimpl.X.MessageStringOf(x) } -func (*FlowSizeWeightPairs) ProtoMessage() {} +func (*RsvpEro) ProtoMessage() {} -func (x *FlowSizeWeightPairs) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[192] +func (x *RsvpEro) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[156] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -35379,64 +34889,76 @@ func (x *FlowSizeWeightPairs) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use FlowSizeWeightPairs.ProtoReflect.Descriptor instead. -func (*FlowSizeWeightPairs) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{192} +// Deprecated: Use RsvpEro.ProtoReflect.Descriptor instead. +func (*RsvpEro) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{156} } -func (x *FlowSizeWeightPairs) GetChoice() FlowSizeWeightPairs_Choice_Enum { - if x != nil && x.Choice != nil { - return *x.Choice +func (x *RsvpEro) GetPrependNeighborIp() RsvpEro_PrependNeighborIp_Enum { + if x != nil && x.PrependNeighborIp != nil { + return *x.PrependNeighborIp } - return FlowSizeWeightPairs_Choice_unspecified + return RsvpEro_PrependNeighborIp_unspecified } -func (x *FlowSizeWeightPairs) GetPredefined() FlowSizeWeightPairs_Predefined_Enum { - if x != nil && x.Predefined != nil { - return *x.Predefined - } - return FlowSizeWeightPairs_Predefined_unspecified +func (x *RsvpEro) GetPrefixLength() uint32 { + if x != nil && x.PrefixLength != nil { + return *x.PrefixLength + } + return 0 } -func (x *FlowSizeWeightPairs) GetCustom() []*FlowSizeWeightPairsCustom { +func (x *RsvpEro) GetSubobjects() []*RsvpEroSubobject { if x != nil { - return x.Custom + return x.Subobjects } return nil } -// Custom frame size distribution pair. -type FlowSizeWeightPairsCustom struct { +// Configuration for the ERO sub-object. +type RsvpEroSubobject struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // The size of the frame (in bytes) for this weight pair. - // default = 64 - Size *uint32 `protobuf:"varint,1,opt,name=size,proto3,oneof" json:"size,omitempty"` - // Weight assigned to the corresponding frame size in this weight pair. - // Higher weight means more packets. - // default = 1 - Weight *float32 `protobuf:"fixed32,2,opt,name=weight,proto3,oneof" json:"weight,omitempty"` + // The type of the ERO sub-object, one of IPv4 Address or AS Number. + // default = Type.Enum.ipv4 + Type *RsvpEroSubobject_Type_Enum `protobuf:"varint,1,opt,name=type,proto3,enum=otg.RsvpEroSubobject_Type_Enum,oneof" json:"type,omitempty"` + // IPv4 address that this LSP should traverse through. This field is applicable only + // if the value of 'type' is set to 'ipv4'. + // default = 0.0.0.0 + Ipv4Address *string `protobuf:"bytes,2,opt,name=ipv4_address,json=ipv4Address,proto3,oneof" json:"ipv4_address,omitempty"` + // Prefix length for the IPv4 address in the ERO sub-object. This field is applicable + // only if the value of 'type' is set to 'ipv4'. + // default = 32 + PrefixLength *uint32 `protobuf:"varint,3,opt,name=prefix_length,json=prefixLength,proto3,oneof" json:"prefix_length,omitempty"` + // Autonomous System number to be set in the ERO sub-object that this LSP should traverse + // through. This field is applicable only if the value of 'type' is set to 'as_number'. + // Note that as per RFC3209, 4-byte AS encoding is not supported. + // default = 0 + AsNumber *uint32 `protobuf:"varint,4,opt,name=as_number,json=asNumber,proto3,oneof" json:"as_number,omitempty"` + // The hop type of the ERO sub-object, one of Strict or Loose. + // default = HopType.Enum.loose + HopType *RsvpEroSubobject_HopType_Enum `protobuf:"varint,5,opt,name=hop_type,json=hopType,proto3,enum=otg.RsvpEroSubobject_HopType_Enum,oneof" json:"hop_type,omitempty"` } -func (x *FlowSizeWeightPairsCustom) Reset() { - *x = FlowSizeWeightPairsCustom{} +func (x *RsvpEroSubobject) Reset() { + *x = RsvpEroSubobject{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[193] + mi := &file_otg_proto_msgTypes[157] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *FlowSizeWeightPairsCustom) String() string { +func (x *RsvpEroSubobject) String() string { return protoimpl.X.MessageStringOf(x) } -func (*FlowSizeWeightPairsCustom) ProtoMessage() {} +func (*RsvpEroSubobject) ProtoMessage() {} -func (x *FlowSizeWeightPairsCustom) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[193] +func (x *RsvpEroSubobject) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[157] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -35447,71 +34969,111 @@ func (x *FlowSizeWeightPairsCustom) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use FlowSizeWeightPairsCustom.ProtoReflect.Descriptor instead. -func (*FlowSizeWeightPairsCustom) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{193} +// Deprecated: Use RsvpEroSubobject.ProtoReflect.Descriptor instead. +func (*RsvpEroSubobject) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{157} } -func (x *FlowSizeWeightPairsCustom) GetSize() uint32 { - if x != nil && x.Size != nil { - return *x.Size +func (x *RsvpEroSubobject) GetType() RsvpEroSubobject_Type_Enum { + if x != nil && x.Type != nil { + return *x.Type + } + return RsvpEroSubobject_Type_unspecified +} + +func (x *RsvpEroSubobject) GetIpv4Address() string { + if x != nil && x.Ipv4Address != nil { + return *x.Ipv4Address + } + return "" +} + +func (x *RsvpEroSubobject) GetPrefixLength() uint32 { + if x != nil && x.PrefixLength != nil { + return *x.PrefixLength } return 0 } -func (x *FlowSizeWeightPairsCustom) GetWeight() float32 { - if x != nil && x.Weight != nil { - return *x.Weight +func (x *RsvpEroSubobject) GetAsNumber() uint32 { + if x != nil && x.AsNumber != nil { + return *x.AsNumber } return 0 } -// The rate of packet transmission -type FlowRate struct { +func (x *RsvpEroSubobject) GetHopType() RsvpEroSubobject_HopType_Enum { + if x != nil && x.HopType != nil { + return *x.HopType + } + return RsvpEroSubobject_HopType_unspecified +} + +// A high level data plane traffic flow. +type Flow struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // The available types of flow rate. - // default = Choice.Enum.pps - Choice *FlowRate_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.FlowRate_Choice_Enum,oneof" json:"choice,omitempty"` - // Packets per second. - // default = 1000 - Pps *uint64 `protobuf:"varint,2,opt,name=pps,proto3,oneof" json:"pps,omitempty"` - // Bits per second. - // default = 1000000000 - Bps *uint64 `protobuf:"varint,3,opt,name=bps,proto3,oneof" json:"bps,omitempty"` - // Kilobits per second. - // default = 1000000 - Kbps *uint64 `protobuf:"varint,4,opt,name=kbps,proto3,oneof" json:"kbps,omitempty"` - // Megabits per second. - // default = 1000 - Mbps *uint64 `protobuf:"varint,5,opt,name=mbps,proto3,oneof" json:"mbps,omitempty"` - // Gigabits per second. - // default = 1 - Gbps *uint32 `protobuf:"varint,6,opt,name=gbps,proto3,oneof" json:"gbps,omitempty"` - // The percentage of a port location's available bandwidth. - // default = 100 - Percentage *float32 `protobuf:"fixed32,7,opt,name=percentage,proto3,oneof" json:"percentage,omitempty"` + // The transmit and receive endpoints. + // required = true + TxRx *FlowTxRx `protobuf:"bytes,1,opt,name=tx_rx,json=txRx,proto3" json:"tx_rx,omitempty"` + // The list of protocol headers defining the shape of all + // intended packets in corresponding flow as it is transmitted + // by traffic-generator port. + // + // The order of protocol headers assigned to the list is the + // order they will appear on the wire. + // + // In the case of an empty list the keyword/value of minItems: 1 + // indicates that an implementation MUST provide at least one + // Flow.Header object. + // + // The default value for the Flow.Header choice property is ethernet + // which will result in an implementation by default providing at least + // one ethernet packet header. + Packet []*FlowHeader `protobuf:"bytes,2,rep,name=packet,proto3" json:"packet,omitempty"` + // Under Review: The packet header schema for egress tracking currently exposes unwanted + // fields. The query structure for tagged metrics inside flows metrics requires documenting + // expected response format. + // + // The list of protocol headers defining the shape of all + // intended packets in corresponding flow as it is received + // by traffic-generator port. + // + // For all protocol headers, only the `metric_tags` property is configurable. + EgressPacket []*FlowHeader `protobuf:"bytes,9,rep,name=egress_packet,json=egressPacket,proto3" json:"egress_packet,omitempty"` + // The size of the packets. + Size *FlowSize `protobuf:"bytes,3,opt,name=size,proto3" json:"size,omitempty"` + // The transmit rate of the packets. + Rate *FlowRate `protobuf:"bytes,4,opt,name=rate,proto3" json:"rate,omitempty"` + // The transmit duration of the packets. + Duration *FlowDuration `protobuf:"bytes,5,opt,name=duration,proto3" json:"duration,omitempty"` + // Flow metrics. + Metrics *FlowMetrics `protobuf:"bytes,6,opt,name=metrics,proto3" json:"metrics,omitempty"` + // Globally unique name of an object. It also serves as the primary key for arrays of + // objects. + // required = true + Name *string `protobuf:"bytes,7,opt,name=name,proto3,oneof" json:"name,omitempty"` } -func (x *FlowRate) Reset() { - *x = FlowRate{} +func (x *Flow) Reset() { + *x = Flow{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[194] + mi := &file_otg_proto_msgTypes[158] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *FlowRate) String() string { +func (x *Flow) String() string { return protoimpl.X.MessageStringOf(x) } -func (*FlowRate) ProtoMessage() {} +func (*Flow) ProtoMessage() {} -func (x *FlowRate) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[194] +func (x *Flow) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[158] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -35522,96 +35084,100 @@ func (x *FlowRate) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use FlowRate.ProtoReflect.Descriptor instead. -func (*FlowRate) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{194} +// Deprecated: Use Flow.ProtoReflect.Descriptor instead. +func (*Flow) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{158} } -func (x *FlowRate) GetChoice() FlowRate_Choice_Enum { - if x != nil && x.Choice != nil { - return *x.Choice +func (x *Flow) GetTxRx() *FlowTxRx { + if x != nil { + return x.TxRx } - return FlowRate_Choice_unspecified + return nil } -func (x *FlowRate) GetPps() uint64 { - if x != nil && x.Pps != nil { - return *x.Pps +func (x *Flow) GetPacket() []*FlowHeader { + if x != nil { + return x.Packet } - return 0 + return nil } -func (x *FlowRate) GetBps() uint64 { - if x != nil && x.Bps != nil { - return *x.Bps +func (x *Flow) GetEgressPacket() []*FlowHeader { + if x != nil { + return x.EgressPacket } - return 0 + return nil } -func (x *FlowRate) GetKbps() uint64 { - if x != nil && x.Kbps != nil { - return *x.Kbps +func (x *Flow) GetSize() *FlowSize { + if x != nil { + return x.Size } - return 0 + return nil } -func (x *FlowRate) GetMbps() uint64 { - if x != nil && x.Mbps != nil { - return *x.Mbps +func (x *Flow) GetRate() *FlowRate { + if x != nil { + return x.Rate } - return 0 + return nil } -func (x *FlowRate) GetGbps() uint32 { - if x != nil && x.Gbps != nil { - return *x.Gbps +func (x *Flow) GetDuration() *FlowDuration { + if x != nil { + return x.Duration } - return 0 + return nil } -func (x *FlowRate) GetPercentage() float32 { - if x != nil && x.Percentage != nil { - return *x.Percentage +func (x *Flow) GetMetrics() *FlowMetrics { + if x != nil { + return x.Metrics } - return 0 + return nil } -// A container for different transmit durations. -type FlowDuration struct { +func (x *Flow) GetName() string { + if x != nil && x.Name != nil { + return *x.Name + } + return "" +} + +// A container for different types of transmit and receive +// endpoint containers. +type FlowTxRx struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // A choice used to determine the type of duration. - // default = Choice.Enum.continuous - Choice *FlowDuration_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.FlowDuration_Choice_Enum,oneof" json:"choice,omitempty"` - // Description missing in models - FixedPackets *FlowFixedPackets `protobuf:"bytes,2,opt,name=fixed_packets,json=fixedPackets,proto3" json:"fixed_packets,omitempty"` - // Description missing in models - FixedSeconds *FlowFixedSeconds `protobuf:"bytes,3,opt,name=fixed_seconds,json=fixedSeconds,proto3" json:"fixed_seconds,omitempty"` + // The type of transmit and receive container used by the flow. + // default = Choice.Enum.port + Choice *FlowTxRx_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.FlowTxRx_Choice_Enum,oneof" json:"choice,omitempty"` // Description missing in models - Burst *FlowBurst `protobuf:"bytes,4,opt,name=burst,proto3" json:"burst,omitempty"` + Port *FlowPort `protobuf:"bytes,2,opt,name=port,proto3" json:"port,omitempty"` // Description missing in models - Continuous *FlowContinuous `protobuf:"bytes,5,opt,name=continuous,proto3" json:"continuous,omitempty"` + Device *FlowRouter `protobuf:"bytes,3,opt,name=device,proto3" json:"device,omitempty"` } -func (x *FlowDuration) Reset() { - *x = FlowDuration{} +func (x *FlowTxRx) Reset() { + *x = FlowTxRx{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[195] + mi := &file_otg_proto_msgTypes[159] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *FlowDuration) String() string { +func (x *FlowTxRx) String() string { return protoimpl.X.MessageStringOf(x) } -func (*FlowDuration) ProtoMessage() {} +func (*FlowTxRx) ProtoMessage() {} -func (x *FlowDuration) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[195] +func (x *FlowTxRx) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[159] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -35622,76 +35188,85 @@ func (x *FlowDuration) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use FlowDuration.ProtoReflect.Descriptor instead. -func (*FlowDuration) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{195} +// Deprecated: Use FlowTxRx.ProtoReflect.Descriptor instead. +func (*FlowTxRx) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{159} } -func (x *FlowDuration) GetChoice() FlowDuration_Choice_Enum { +func (x *FlowTxRx) GetChoice() FlowTxRx_Choice_Enum { if x != nil && x.Choice != nil { return *x.Choice } - return FlowDuration_Choice_unspecified -} - -func (x *FlowDuration) GetFixedPackets() *FlowFixedPackets { - if x != nil { - return x.FixedPackets - } - return nil -} - -func (x *FlowDuration) GetFixedSeconds() *FlowFixedSeconds { - if x != nil { - return x.FixedSeconds - } - return nil + return FlowTxRx_Choice_unspecified } -func (x *FlowDuration) GetBurst() *FlowBurst { +func (x *FlowTxRx) GetPort() *FlowPort { if x != nil { - return x.Burst + return x.Port } return nil } -func (x *FlowDuration) GetContinuous() *FlowContinuous { +func (x *FlowTxRx) GetDevice() *FlowRouter { if x != nil { - return x.Continuous + return x.Device } return nil } -// Transmit will be continuous and will not stop automatically. -type FlowContinuous struct { +// A container for a transmit port and 0..n intended receive ports. +// When assigning this container to a flow the flows's +// packet headers will not be populated with any address resolution +// information such as source and/or destination addresses. +// For example Flow.Ethernet dst mac address values will be defaulted to 0. +// For full control over the Flow.properties.packet header contents use this +// container. +type FlowPort struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // The minimum gap between packets expressed as bytes. - // default = 12 - Gap *uint32 `protobuf:"varint,1,opt,name=gap,proto3,oneof" json:"gap,omitempty"` - // Description missing in models - Delay *FlowDelay `protobuf:"bytes,2,opt,name=delay,proto3" json:"delay,omitempty"` + // The unique name of a port that is the transmit port. + // + // x-constraint: + // - /components/schemas/Port/properties/name + // - /components/schemas/Lag/properties/name + // + // required = true + TxName *string `protobuf:"bytes,1,opt,name=tx_name,json=txName,proto3,oneof" json:"tx_name,omitempty"` + // Deprecated: This property is deprecated in favor of property rx_names + // + // The unique name of a port that is the intended receive port. + // + // x-constraint: + // - /components/schemas/Port/properties/name + // - /components/schemas/Lag/properties/name + RxName *string `protobuf:"bytes,2,opt,name=rx_name,json=rxName,proto3,oneof" json:"rx_name,omitempty"` + // Unique name of ports or lags that are intended receive endpoints. + // + // x-constraint: + // - /components/schemas/Port/properties/name + // - /components/schemas/Lag/properties/name + RxNames []string `protobuf:"bytes,3,rep,name=rx_names,json=rxNames,proto3" json:"rx_names,omitempty"` } -func (x *FlowContinuous) Reset() { - *x = FlowContinuous{} +func (x *FlowPort) Reset() { + *x = FlowPort{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[196] + mi := &file_otg_proto_msgTypes[160] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *FlowContinuous) String() string { +func (x *FlowPort) String() string { return protoimpl.X.MessageStringOf(x) } -func (*FlowContinuous) ProtoMessage() {} +func (*FlowPort) ProtoMessage() {} -func (x *FlowContinuous) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[196] +func (x *FlowPort) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[160] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -35702,66 +35277,127 @@ func (x *FlowContinuous) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use FlowContinuous.ProtoReflect.Descriptor instead. -func (*FlowContinuous) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{196} +// Deprecated: Use FlowPort.ProtoReflect.Descriptor instead. +func (*FlowPort) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{160} } -func (x *FlowContinuous) GetGap() uint32 { - if x != nil && x.Gap != nil { - return *x.Gap +func (x *FlowPort) GetTxName() string { + if x != nil && x.TxName != nil { + return *x.TxName } - return 0 + return "" } -func (x *FlowContinuous) GetDelay() *FlowDelay { +func (x *FlowPort) GetRxName() string { + if x != nil && x.RxName != nil { + return *x.RxName + } + return "" +} + +func (x *FlowPort) GetRxNames() []string { if x != nil { - return x.Delay + return x.RxNames } return nil } -// The optional container to specify the delay before starting -// transmission of packets. -type FlowDelay struct { +// A container for declaring a map of 1..n transmit devices to 1..n receive devices. +// This allows for a single flow to have different tx to rx device flows such as a +// single one to one map or a many to many map. +type FlowRouter struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Description missing in models - // default = Choice.Enum.bytes - Choice *FlowDelay_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.FlowDelay_Choice_Enum,oneof" json:"choice,omitempty"` - // The delay before starting transmission of packets. - // A value of 0 indicates no delay. - // default = 0 - Bytes *float32 `protobuf:"fixed32,2,opt,name=bytes,proto3,oneof" json:"bytes,omitempty"` - // The delay before starting transmission of packets. - // A value of 0 indicates no delay. - // default = 0 - Nanoseconds *float32 `protobuf:"fixed32,3,opt,name=nanoseconds,proto3,oneof" json:"nanoseconds,omitempty"` - // The delay before starting transmission of packets. - // A value of 0 indicates no delay. - // default = 0 - Microseconds *float32 `protobuf:"fixed32,4,opt,name=microseconds,proto3,oneof" json:"microseconds,omitempty"` + // Determines the intent of creating traffic sub-flow(s) between the device + // endpoints, from the entities of tx_names to the entities of rx_names + // + // to derive how auto packet fields can be populated with + // the actual value(s) by the implementation. + // + // The one_to_one mode creates traffic sub-flow(s) between each device endpoint + // pair in + // tx_names to rx_names by index. + // The length of tx_names and rx_names MUST be the same. + // The same device name can be repeated multiple times in tx_names or rx_names, in any + // order to create desired meshing between device(s). + // For 2 values in tx_names and 2 values in rx_names, 2 device endpoint pairs would + // be generated (each pair representing a traffic sub-flow). + // + // The mesh mode creates traffic sub-flow(s) between each value in tx_names to + // every value in rx_names, forming the device endpoint pair(s). + // For 2 values in tx_names and 3 values in rx_names, generated device endpoint pairs + // would be 2x3=6. + // + // A generated device endpoint pair with same device endpoint name for both transmit + // & receive device endpoint MUST raise an error. + // + // Packet fields of type auto would be populated with one value for each device + // endpoint pair (representing the traffic sub-flow). + // The value would be determined considering transmit & receive device of the sub-flow. + // And the sequence of the populated value(s) + // would be in the order of generated device endpoint pair(s). + // If 2 device endpoint pairs are generated (based on mode, tx_names and rx_names), + // say (d1 to d3) and (d2 to d3), and ethernet.dst is set as auto, then + // the auto field would be replaced by the implementation with a sequence of + // 2 values, [v1,v2] where + // v1 is determined using context (d1,d3) and v2 using context (d2,d3). + // The final outcome is that packets generated on the wire will contain the values v1,v2,v1,... + // for ethernet.dst field. Any non-auto packet fields + // should be configured accordingly. For example, non-auto packet field ethernet.src + // can be configured with values [u1, u2], where + // u1 & u2 are source MAC of the connected interface of device d1 and d2 respectively. + // Then packets on the wire will contain correct value pairs + // (u1,v1),(u2,v2),(u1,v1),... for (ethernet.src,ethernet.dst) fields. + // default = Mode.Enum.mesh + Mode *FlowRouter_Mode_Enum `protobuf:"varint,1,opt,name=mode,proto3,enum=otg.FlowRouter_Mode_Enum,oneof" json:"mode,omitempty"` + // TBD + // + // x-constraint: + // - /components/schemas/Device.Ethernet/properties/name + // - /components/schemas/Device.Ipv4/properties/name + // - /components/schemas/Device.Ipv6/properties/name + // - /components/schemas/Bgp.V4RouteRange/properties/name + // - /components/schemas/Bgp.V6RouteRange/properties/name + // - /components/schemas/Bgp.CMacIpRange/properties/name + // - /components/schemas/Rsvp.LspIpv4Interface.P2PIngressIpv4Lsp/properties/name + // - /components/schemas/Isis.V4RouteRange/properties/name + // - /components/schemas/Isis.V6RouteRange/properties/name + TxNames []string `protobuf:"bytes,2,rep,name=tx_names,json=txNames,proto3" json:"tx_names,omitempty"` + // TBD + // + // x-constraint: + // - /components/schemas/Device.Ethernet/properties/name + // - /components/schemas/Device.Ipv4/properties/name + // - /components/schemas/Device.Ipv6/properties/name + // - /components/schemas/Bgp.V4RouteRange/properties/name + // - /components/schemas/Bgp.V6RouteRange/properties/name + // - /components/schemas/Bgp.CMacIpRange/properties/name + // - /components/schemas/Rsvp.LspIpv4Interface.P2PEgressIpv4Lsp/properties/name + // - /components/schemas/Isis.V4RouteRange/properties/name + // - /components/schemas/Isis.V6RouteRange/properties/name + RxNames []string `protobuf:"bytes,3,rep,name=rx_names,json=rxNames,proto3" json:"rx_names,omitempty"` } -func (x *FlowDelay) Reset() { - *x = FlowDelay{} +func (x *FlowRouter) Reset() { + *x = FlowRouter{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[197] + mi := &file_otg_proto_msgTypes[161] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *FlowDelay) String() string { +func (x *FlowRouter) String() string { return protoimpl.X.MessageStringOf(x) } -func (*FlowDelay) ProtoMessage() {} +func (*FlowRouter) ProtoMessage() {} -func (x *FlowDelay) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[197] +func (x *FlowRouter) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[161] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -35772,72 +35408,101 @@ func (x *FlowDelay) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use FlowDelay.ProtoReflect.Descriptor instead. -func (*FlowDelay) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{197} +// Deprecated: Use FlowRouter.ProtoReflect.Descriptor instead. +func (*FlowRouter) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{161} } -func (x *FlowDelay) GetChoice() FlowDelay_Choice_Enum { - if x != nil && x.Choice != nil { - return *x.Choice +func (x *FlowRouter) GetMode() FlowRouter_Mode_Enum { + if x != nil && x.Mode != nil { + return *x.Mode } - return FlowDelay_Choice_unspecified + return FlowRouter_Mode_unspecified } -func (x *FlowDelay) GetBytes() float32 { - if x != nil && x.Bytes != nil { - return *x.Bytes +func (x *FlowRouter) GetTxNames() []string { + if x != nil { + return x.TxNames } - return 0 + return nil } -func (x *FlowDelay) GetNanoseconds() float32 { - if x != nil && x.Nanoseconds != nil { - return *x.Nanoseconds - } - return 0 -} - -func (x *FlowDelay) GetMicroseconds() float32 { - if x != nil && x.Microseconds != nil { - return *x.Microseconds +func (x *FlowRouter) GetRxNames() []string { + if x != nil { + return x.RxNames } - return 0 + return nil } -// Transmit a fixed number of packets after which the flow will stop. -type FlowFixedPackets struct { +// Configuration for all traffic packet headers +type FlowHeader struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Stop transmit of the flow after this number of packets. - // default = 1 - Packets *uint32 `protobuf:"varint,1,opt,name=packets,proto3,oneof" json:"packets,omitempty"` - // The minimum gap between packets expressed as bytes. - // default = 12 - Gap *uint32 `protobuf:"varint,2,opt,name=gap,proto3,oneof" json:"gap,omitempty"` + // The available types of flow headers. If one is not provided the + // default ethernet packet header MUST be provided. + // default = Choice.Enum.ethernet + Choice *FlowHeader_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.FlowHeader_Choice_Enum,oneof" json:"choice,omitempty"` // Description missing in models - Delay *FlowDelay `protobuf:"bytes,3,opt,name=delay,proto3" json:"delay,omitempty"` + Custom *FlowCustom `protobuf:"bytes,2,opt,name=custom,proto3" json:"custom,omitempty"` + // Description missing in models + Ethernet *FlowEthernet `protobuf:"bytes,3,opt,name=ethernet,proto3" json:"ethernet,omitempty"` + // Description missing in models + Vlan *FlowVlan `protobuf:"bytes,4,opt,name=vlan,proto3" json:"vlan,omitempty"` + // Description missing in models + Vxlan *FlowVxlan `protobuf:"bytes,5,opt,name=vxlan,proto3" json:"vxlan,omitempty"` + // Description missing in models + Ipv4 *FlowIpv4 `protobuf:"bytes,6,opt,name=ipv4,proto3" json:"ipv4,omitempty"` + // Description missing in models + Ipv6 *FlowIpv6 `protobuf:"bytes,7,opt,name=ipv6,proto3" json:"ipv6,omitempty"` + // Description missing in models + Pfcpause *FlowPfcPause `protobuf:"bytes,8,opt,name=pfcpause,proto3" json:"pfcpause,omitempty"` + // Description missing in models + Ethernetpause *FlowEthernetPause `protobuf:"bytes,9,opt,name=ethernetpause,proto3" json:"ethernetpause,omitempty"` + // Description missing in models + Tcp *FlowTcp `protobuf:"bytes,10,opt,name=tcp,proto3" json:"tcp,omitempty"` + // Description missing in models + Udp *FlowUdp `protobuf:"bytes,11,opt,name=udp,proto3" json:"udp,omitempty"` + // Description missing in models + Gre *FlowGre `protobuf:"bytes,12,opt,name=gre,proto3" json:"gre,omitempty"` + // Description missing in models + Gtpv1 *FlowGtpv1 `protobuf:"bytes,13,opt,name=gtpv1,proto3" json:"gtpv1,omitempty"` + // Description missing in models + Gtpv2 *FlowGtpv2 `protobuf:"bytes,14,opt,name=gtpv2,proto3" json:"gtpv2,omitempty"` + // Description missing in models + Arp *FlowArp `protobuf:"bytes,15,opt,name=arp,proto3" json:"arp,omitempty"` + // Description missing in models + Icmp *FlowIcmp `protobuf:"bytes,16,opt,name=icmp,proto3" json:"icmp,omitempty"` + // Description missing in models + Icmpv6 *FlowIcmpv6 `protobuf:"bytes,17,opt,name=icmpv6,proto3" json:"icmpv6,omitempty"` + // Description missing in models + Ppp *FlowPpp `protobuf:"bytes,18,opt,name=ppp,proto3" json:"ppp,omitempty"` + // Description missing in models + Igmpv1 *FlowIgmpv1 `protobuf:"bytes,19,opt,name=igmpv1,proto3" json:"igmpv1,omitempty"` + // Description missing in models + Mpls *FlowMpls `protobuf:"bytes,20,opt,name=mpls,proto3" json:"mpls,omitempty"` + // Description missing in models + Rsvp *FlowRsvp `protobuf:"bytes,21,opt,name=rsvp,proto3" json:"rsvp,omitempty"` } -func (x *FlowFixedPackets) Reset() { - *x = FlowFixedPackets{} +func (x *FlowHeader) Reset() { + *x = FlowHeader{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[198] + mi := &file_otg_proto_msgTypes[162] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *FlowFixedPackets) String() string { +func (x *FlowHeader) String() string { return protoimpl.X.MessageStringOf(x) } -func (*FlowFixedPackets) ProtoMessage() {} +func (*FlowHeader) ProtoMessage() {} -func (x *FlowFixedPackets) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[198] +func (x *FlowHeader) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[162] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -35848,65 +35513,192 @@ func (x *FlowFixedPackets) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use FlowFixedPackets.ProtoReflect.Descriptor instead. -func (*FlowFixedPackets) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{198} +// Deprecated: Use FlowHeader.ProtoReflect.Descriptor instead. +func (*FlowHeader) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{162} } -func (x *FlowFixedPackets) GetPackets() uint32 { - if x != nil && x.Packets != nil { - return *x.Packets +func (x *FlowHeader) GetChoice() FlowHeader_Choice_Enum { + if x != nil && x.Choice != nil { + return *x.Choice } - return 0 + return FlowHeader_Choice_unspecified } -func (x *FlowFixedPackets) GetGap() uint32 { - if x != nil && x.Gap != nil { - return *x.Gap +func (x *FlowHeader) GetCustom() *FlowCustom { + if x != nil { + return x.Custom } - return 0 + return nil } -func (x *FlowFixedPackets) GetDelay() *FlowDelay { +func (x *FlowHeader) GetEthernet() *FlowEthernet { if x != nil { - return x.Delay + return x.Ethernet } return nil } -// Transmit for a fixed number of seconds after which the flow will stop. -type FlowFixedSeconds struct { +func (x *FlowHeader) GetVlan() *FlowVlan { + if x != nil { + return x.Vlan + } + return nil +} + +func (x *FlowHeader) GetVxlan() *FlowVxlan { + if x != nil { + return x.Vxlan + } + return nil +} + +func (x *FlowHeader) GetIpv4() *FlowIpv4 { + if x != nil { + return x.Ipv4 + } + return nil +} + +func (x *FlowHeader) GetIpv6() *FlowIpv6 { + if x != nil { + return x.Ipv6 + } + return nil +} + +func (x *FlowHeader) GetPfcpause() *FlowPfcPause { + if x != nil { + return x.Pfcpause + } + return nil +} + +func (x *FlowHeader) GetEthernetpause() *FlowEthernetPause { + if x != nil { + return x.Ethernetpause + } + return nil +} + +func (x *FlowHeader) GetTcp() *FlowTcp { + if x != nil { + return x.Tcp + } + return nil +} + +func (x *FlowHeader) GetUdp() *FlowUdp { + if x != nil { + return x.Udp + } + return nil +} + +func (x *FlowHeader) GetGre() *FlowGre { + if x != nil { + return x.Gre + } + return nil +} + +func (x *FlowHeader) GetGtpv1() *FlowGtpv1 { + if x != nil { + return x.Gtpv1 + } + return nil +} + +func (x *FlowHeader) GetGtpv2() *FlowGtpv2 { + if x != nil { + return x.Gtpv2 + } + return nil +} + +func (x *FlowHeader) GetArp() *FlowArp { + if x != nil { + return x.Arp + } + return nil +} + +func (x *FlowHeader) GetIcmp() *FlowIcmp { + if x != nil { + return x.Icmp + } + return nil +} + +func (x *FlowHeader) GetIcmpv6() *FlowIcmpv6 { + if x != nil { + return x.Icmpv6 + } + return nil +} + +func (x *FlowHeader) GetPpp() *FlowPpp { + if x != nil { + return x.Ppp + } + return nil +} + +func (x *FlowHeader) GetIgmpv1() *FlowIgmpv1 { + if x != nil { + return x.Igmpv1 + } + return nil +} + +func (x *FlowHeader) GetMpls() *FlowMpls { + if x != nil { + return x.Mpls + } + return nil +} + +func (x *FlowHeader) GetRsvp() *FlowRsvp { + if x != nil { + return x.Rsvp + } + return nil +} + +// Custom packet header +type FlowCustom struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Stop transmit of the flow after this number of seconds. - // default = 1 - Seconds *float32 `protobuf:"fixed32,1,opt,name=seconds,proto3,oneof" json:"seconds,omitempty"` - // The minimum gap between packets expressed as bytes. - // default = 12 - Gap *uint32 `protobuf:"varint,2,opt,name=gap,proto3,oneof" json:"gap,omitempty"` - // Description missing in models - Delay *FlowDelay `protobuf:"bytes,3,opt,name=delay,proto3" json:"delay,omitempty"` + // A custom packet header defined as a string of hex bytes. The string MUST contain + // sequence of valid hex bytes. Spaces or colons can be part of the bytes but will be + // discarded. This packet header can be used in multiple places in the packet. + // required = true + Bytes *string `protobuf:"bytes,1,opt,name=bytes,proto3,oneof" json:"bytes,omitempty"` + // One or more metric tags can be used to enable tracking portion of or all bits + // in a corresponding header field for metrics per each applicable value. + // These would appear as tagged metrics in corresponding flow metrics. + MetricTags []*FlowCustomMetricTag `protobuf:"bytes,2,rep,name=metric_tags,json=metricTags,proto3" json:"metric_tags,omitempty"` } -func (x *FlowFixedSeconds) Reset() { - *x = FlowFixedSeconds{} +func (x *FlowCustom) Reset() { + *x = FlowCustom{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[199] + mi := &file_otg_proto_msgTypes[163] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *FlowFixedSeconds) String() string { +func (x *FlowCustom) String() string { return protoimpl.X.MessageStringOf(x) } -func (*FlowFixedSeconds) ProtoMessage() {} +func (*FlowCustom) ProtoMessage() {} -func (x *FlowFixedSeconds) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[199] +func (x *FlowCustom) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[163] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -35917,71 +35709,63 @@ func (x *FlowFixedSeconds) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use FlowFixedSeconds.ProtoReflect.Descriptor instead. -func (*FlowFixedSeconds) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{199} -} - -func (x *FlowFixedSeconds) GetSeconds() float32 { - if x != nil && x.Seconds != nil { - return *x.Seconds - } - return 0 +// Deprecated: Use FlowCustom.ProtoReflect.Descriptor instead. +func (*FlowCustom) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{163} } -func (x *FlowFixedSeconds) GetGap() uint32 { - if x != nil && x.Gap != nil { - return *x.Gap +func (x *FlowCustom) GetBytes() string { + if x != nil && x.Bytes != nil { + return *x.Bytes } - return 0 + return "" } -func (x *FlowFixedSeconds) GetDelay() *FlowDelay { +func (x *FlowCustom) GetMetricTags() []*FlowCustomMetricTag { if x != nil { - return x.Delay + return x.MetricTags } return nil } -// Transmits continuous or fixed burst of packets. -// For continuous burst of packets, it will not automatically stop. -// For fixed burst of packets, it will stop after transmitting fixed number of bursts. -type FlowBurst struct { +// Metric Tag can be used to enable tracking portion of or all bits +// in a corresponding header field for metrics per each applicable value. +// These would appear as tagged metrics in corresponding flow metrics. +type FlowCustomMetricTag struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // The number of packet bursts transmitted per flow. - // A value of 0 implies continuous burst of packets. + // Name used to identify the metrics associated with the values applicable + // for configured offset and length inside corresponding header field + // required = true + Name *string `protobuf:"bytes,1,opt,name=name,proto3,oneof" json:"name,omitempty"` + // Offset in bits relative to start of corresponding header field // default = 0 - Bursts *uint32 `protobuf:"varint,1,opt,name=bursts,proto3,oneof" json:"bursts,omitempty"` - // The number of packets transmitted per burst. + Offset *uint32 `protobuf:"varint,2,opt,name=offset,proto3,oneof" json:"offset,omitempty"` + // Number of bits to track for metrics starting from configured offset + // of corresponding header field // default = 1 - Packets *uint32 `protobuf:"varint,2,opt,name=packets,proto3,oneof" json:"packets,omitempty"` - // The minimum gap between packets expressed as bytes. - // default = 12 - Gap *uint32 `protobuf:"varint,3,opt,name=gap,proto3,oneof" json:"gap,omitempty"` - // Description missing in models - InterBurstGap *FlowDurationInterBurstGap `protobuf:"bytes,4,opt,name=inter_burst_gap,json=interBurstGap,proto3" json:"inter_burst_gap,omitempty"` + Length *uint32 `protobuf:"varint,3,opt,name=length,proto3,oneof" json:"length,omitempty"` } -func (x *FlowBurst) Reset() { - *x = FlowBurst{} +func (x *FlowCustomMetricTag) Reset() { + *x = FlowCustomMetricTag{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[200] + mi := &file_otg_proto_msgTypes[164] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *FlowBurst) String() string { +func (x *FlowCustomMetricTag) String() string { return protoimpl.X.MessageStringOf(x) } -func (*FlowBurst) ProtoMessage() {} +func (*FlowCustomMetricTag) ProtoMessage() {} -func (x *FlowBurst) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[200] +func (x *FlowCustomMetricTag) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[164] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -35992,79 +35776,65 @@ func (x *FlowBurst) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use FlowBurst.ProtoReflect.Descriptor instead. -func (*FlowBurst) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{200} +// Deprecated: Use FlowCustomMetricTag.ProtoReflect.Descriptor instead. +func (*FlowCustomMetricTag) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{164} } -func (x *FlowBurst) GetBursts() uint32 { - if x != nil && x.Bursts != nil { - return *x.Bursts +func (x *FlowCustomMetricTag) GetName() string { + if x != nil && x.Name != nil { + return *x.Name } - return 0 + return "" } -func (x *FlowBurst) GetPackets() uint32 { - if x != nil && x.Packets != nil { - return *x.Packets +func (x *FlowCustomMetricTag) GetOffset() uint32 { + if x != nil && x.Offset != nil { + return *x.Offset } return 0 } -func (x *FlowBurst) GetGap() uint32 { - if x != nil && x.Gap != nil { - return *x.Gap +func (x *FlowCustomMetricTag) GetLength() uint32 { + if x != nil && x.Length != nil { + return *x.Length } return 0 } -func (x *FlowBurst) GetInterBurstGap() *FlowDurationInterBurstGap { - if x != nil { - return x.InterBurstGap - } - return nil -} - -// The optional container for specifying a gap between bursts. -type FlowDurationInterBurstGap struct { +// Ethernet packet header +type FlowEthernet struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // The type of inter burst gap units. - // default = Choice.Enum.bytes - Choice *FlowDurationInterBurstGap_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.FlowDurationInterBurstGap_Choice_Enum,oneof" json:"choice,omitempty"` - // The amount of time between bursts expressed in bytes. - // A value of 0 indicates no gap between bursts. - // default = 12 - Bytes *float64 `protobuf:"fixed64,2,opt,name=bytes,proto3,oneof" json:"bytes,omitempty"` - // The amount of time between bursts expressed in nanoseconds. - // A value of 0 indicates no gap between bursts. - // default = 96 - Nanoseconds *float64 `protobuf:"fixed64,3,opt,name=nanoseconds,proto3,oneof" json:"nanoseconds,omitempty"` - // The amount of time between bursts expressed in microseconds. - // A value of 0 indicates no gap between bursts. - // default = 0.096 - Microseconds *float64 `protobuf:"fixed64,4,opt,name=microseconds,proto3,oneof" json:"microseconds,omitempty"` + // Description missing in models + Dst *PatternFlowEthernetDst `protobuf:"bytes,1,opt,name=dst,proto3" json:"dst,omitempty"` + // Description missing in models + Src *PatternFlowEthernetSrc `protobuf:"bytes,2,opt,name=src,proto3" json:"src,omitempty"` + // Description missing in models + EtherType *PatternFlowEthernetEtherType `protobuf:"bytes,3,opt,name=ether_type,json=etherType,proto3" json:"ether_type,omitempty"` + // Description missing in models + PfcQueue *PatternFlowEthernetPfcQueue `protobuf:"bytes,4,opt,name=pfc_queue,json=pfcQueue,proto3" json:"pfc_queue,omitempty"` } -func (x *FlowDurationInterBurstGap) Reset() { - *x = FlowDurationInterBurstGap{} +func (x *FlowEthernet) Reset() { + *x = FlowEthernet{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[201] + mi := &file_otg_proto_msgTypes[165] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *FlowDurationInterBurstGap) String() string { +func (x *FlowEthernet) String() string { return protoimpl.X.MessageStringOf(x) } -func (*FlowDurationInterBurstGap) ProtoMessage() {} +func (*FlowEthernet) ProtoMessage() {} -func (x *FlowDurationInterBurstGap) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[201] +func (x *FlowEthernet) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[165] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -36075,81 +35845,72 @@ func (x *FlowDurationInterBurstGap) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use FlowDurationInterBurstGap.ProtoReflect.Descriptor instead. -func (*FlowDurationInterBurstGap) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{201} +// Deprecated: Use FlowEthernet.ProtoReflect.Descriptor instead. +func (*FlowEthernet) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{165} } -func (x *FlowDurationInterBurstGap) GetChoice() FlowDurationInterBurstGap_Choice_Enum { - if x != nil && x.Choice != nil { - return *x.Choice +func (x *FlowEthernet) GetDst() *PatternFlowEthernetDst { + if x != nil { + return x.Dst } - return FlowDurationInterBurstGap_Choice_unspecified + return nil } -func (x *FlowDurationInterBurstGap) GetBytes() float64 { - if x != nil && x.Bytes != nil { - return *x.Bytes +func (x *FlowEthernet) GetSrc() *PatternFlowEthernetSrc { + if x != nil { + return x.Src } - return 0 + return nil } -func (x *FlowDurationInterBurstGap) GetNanoseconds() float64 { - if x != nil && x.Nanoseconds != nil { - return *x.Nanoseconds +func (x *FlowEthernet) GetEtherType() *PatternFlowEthernetEtherType { + if x != nil { + return x.EtherType } - return 0 + return nil } -func (x *FlowDurationInterBurstGap) GetMicroseconds() float64 { - if x != nil && x.Microseconds != nil { - return *x.Microseconds +func (x *FlowEthernet) GetPfcQueue() *PatternFlowEthernetPfcQueue { + if x != nil { + return x.PfcQueue } - return 0 + return nil } -// The optional container for configuring flow metrics. -type FlowMetrics struct { +// VLAN packet header +type FlowVlan struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Enables flow metrics. - // Enabling this option may affect the resultant packet payload due to - // additional instrumentation data. - // default = False - Enable *bool `protobuf:"varint,1,opt,name=enable,proto3,oneof" json:"enable,omitempty"` - // Enables additional flow metric loss calculation. - // default = False - Loss *bool `protobuf:"varint,2,opt,name=loss,proto3,oneof" json:"loss,omitempty"` - // Rx Tx ratio. - RxTxRatio *FlowRxTxRatio `protobuf:"bytes,6,opt,name=rx_tx_ratio,json=rxTxRatio,proto3" json:"rx_tx_ratio,omitempty"` - // Enables additional flow metric first and last timestamps. - // default = False - Timestamps *bool `protobuf:"varint,3,opt,name=timestamps,proto3,oneof" json:"timestamps,omitempty"` - // Latency metrics. - Latency *FlowLatencyMetrics `protobuf:"bytes,4,opt,name=latency,proto3" json:"latency,omitempty"` - // Predefined metric tags - PredefinedMetricTags *FlowPredefinedTags `protobuf:"bytes,5,opt,name=predefined_metric_tags,json=predefinedMetricTags,proto3" json:"predefined_metric_tags,omitempty"` + // Description missing in models + Priority *PatternFlowVlanPriority `protobuf:"bytes,1,opt,name=priority,proto3" json:"priority,omitempty"` + // Description missing in models + Cfi *PatternFlowVlanCfi `protobuf:"bytes,2,opt,name=cfi,proto3" json:"cfi,omitempty"` + // Description missing in models + Id *PatternFlowVlanId `protobuf:"bytes,3,opt,name=id,proto3" json:"id,omitempty"` + // Description missing in models + Tpid *PatternFlowVlanTpid `protobuf:"bytes,4,opt,name=tpid,proto3" json:"tpid,omitempty"` } -func (x *FlowMetrics) Reset() { - *x = FlowMetrics{} +func (x *FlowVlan) Reset() { + *x = FlowVlan{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[202] + mi := &file_otg_proto_msgTypes[166] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *FlowMetrics) String() string { +func (x *FlowVlan) String() string { return protoimpl.X.MessageStringOf(x) } -func (*FlowMetrics) ProtoMessage() {} +func (*FlowVlan) ProtoMessage() {} -func (x *FlowMetrics) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[202] +func (x *FlowVlan) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[166] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -36160,99 +35921,72 @@ func (x *FlowMetrics) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use FlowMetrics.ProtoReflect.Descriptor instead. -func (*FlowMetrics) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{202} +// Deprecated: Use FlowVlan.ProtoReflect.Descriptor instead. +func (*FlowVlan) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{166} } -func (x *FlowMetrics) GetEnable() bool { - if x != nil && x.Enable != nil { - return *x.Enable +func (x *FlowVlan) GetPriority() *PatternFlowVlanPriority { + if x != nil { + return x.Priority } - return false + return nil } -func (x *FlowMetrics) GetLoss() bool { - if x != nil && x.Loss != nil { - return *x.Loss +func (x *FlowVlan) GetCfi() *PatternFlowVlanCfi { + if x != nil { + return x.Cfi } - return false + return nil } -func (x *FlowMetrics) GetRxTxRatio() *FlowRxTxRatio { +func (x *FlowVlan) GetId() *PatternFlowVlanId { if x != nil { - return x.RxTxRatio + return x.Id } return nil } -func (x *FlowMetrics) GetTimestamps() bool { - if x != nil && x.Timestamps != nil { - return *x.Timestamps - } - return false -} - -func (x *FlowMetrics) GetLatency() *FlowLatencyMetrics { - if x != nil { - return x.Latency - } - return nil -} - -func (x *FlowMetrics) GetPredefinedMetricTags() *FlowPredefinedTags { +func (x *FlowVlan) GetTpid() *PatternFlowVlanTpid { if x != nil { - return x.PredefinedMetricTags + return x.Tpid } return nil } -// The optional container for per flow latency metric configuration. -type FlowLatencyMetrics struct { +// VXLAN packet header +type FlowVxlan struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // True to enable latency metrics using timestamps. - // - // Enabling this option may affect the resultant packet payload due to - // additional instrumentation data. - // default = False - Enable *bool `protobuf:"varint,1,opt,name=enable,proto3,oneof" json:"enable,omitempty"` - // Select the type of latency measurement. The different types of - // latency measurements are: - // - // store_forward: - // The time interval starting when the last bit of the frame leaves the - // sending port and ending when the first bit of the frame is seen on - // the receiving port (LIFO). This is based on the RFC 1242 standard. - // - // cut_through: - // The time interval starting when the first bit of the frame leaves - // the sending port and ending when the first bit of the frame is seen - // on the receiving port (FIFO). This is based on the RFC 1242 - // standard. - // default = Mode.Enum.store_forward - Mode *FlowLatencyMetrics_Mode_Enum `protobuf:"varint,2,opt,name=mode,proto3,enum=otg.FlowLatencyMetrics_Mode_Enum,oneof" json:"mode,omitempty"` + // Description missing in models + Flags *PatternFlowVxlanFlags `protobuf:"bytes,1,opt,name=flags,proto3" json:"flags,omitempty"` + // Description missing in models + Reserved0 *PatternFlowVxlanReserved0 `protobuf:"bytes,2,opt,name=reserved0,proto3" json:"reserved0,omitempty"` + // Description missing in models + Vni *PatternFlowVxlanVni `protobuf:"bytes,3,opt,name=vni,proto3" json:"vni,omitempty"` + // Description missing in models + Reserved1 *PatternFlowVxlanReserved1 `protobuf:"bytes,4,opt,name=reserved1,proto3" json:"reserved1,omitempty"` } -func (x *FlowLatencyMetrics) Reset() { - *x = FlowLatencyMetrics{} +func (x *FlowVxlan) Reset() { + *x = FlowVxlan{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[203] + mi := &file_otg_proto_msgTypes[167] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *FlowLatencyMetrics) String() string { +func (x *FlowVxlan) String() string { return protoimpl.X.MessageStringOf(x) } -func (*FlowLatencyMetrics) ProtoMessage() {} +func (*FlowVxlan) ProtoMessage() {} -func (x *FlowLatencyMetrics) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[203] +func (x *FlowVxlan) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[167] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -36263,56 +35997,92 @@ func (x *FlowLatencyMetrics) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use FlowLatencyMetrics.ProtoReflect.Descriptor instead. -func (*FlowLatencyMetrics) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{203} +// Deprecated: Use FlowVxlan.ProtoReflect.Descriptor instead. +func (*FlowVxlan) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{167} } -func (x *FlowLatencyMetrics) GetEnable() bool { - if x != nil && x.Enable != nil { - return *x.Enable +func (x *FlowVxlan) GetFlags() *PatternFlowVxlanFlags { + if x != nil { + return x.Flags } - return false + return nil } -func (x *FlowLatencyMetrics) GetMode() FlowLatencyMetrics_Mode_Enum { - if x != nil && x.Mode != nil { - return *x.Mode +func (x *FlowVxlan) GetReserved0() *PatternFlowVxlanReserved0 { + if x != nil { + return x.Reserved0 } - return FlowLatencyMetrics_Mode_unspecified + return nil } -// List of predefined flow tracking options, outside packet fields, that can be enabled. -type FlowPredefinedTags struct { +func (x *FlowVxlan) GetVni() *PatternFlowVxlanVni { + if x != nil { + return x.Vni + } + return nil +} + +func (x *FlowVxlan) GetReserved1() *PatternFlowVxlanReserved1 { + if x != nil { + return x.Reserved1 + } + return nil +} + +// IPv4 packet header +type FlowIpv4 struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Enables Rx port or lag level disaggregation with predefined metrics tag name set - // as rx_name. - // The Rx port / lag names can be found under tagged_metrics tag names in flow metrics - // response. - // default = False - RxName *bool `protobuf:"varint,1,opt,name=rx_name,json=rxName,proto3,oneof" json:"rx_name,omitempty"` + // Description missing in models + Version *PatternFlowIpv4Version `protobuf:"bytes,1,opt,name=version,proto3" json:"version,omitempty"` + // Description missing in models + HeaderLength *PatternFlowIpv4HeaderLength `protobuf:"bytes,2,opt,name=header_length,json=headerLength,proto3" json:"header_length,omitempty"` + // Description missing in models + Priority *FlowIpv4Priority `protobuf:"bytes,3,opt,name=priority,proto3" json:"priority,omitempty"` + // Description missing in models + TotalLength *PatternFlowIpv4TotalLength `protobuf:"bytes,4,opt,name=total_length,json=totalLength,proto3" json:"total_length,omitempty"` + // Description missing in models + Identification *PatternFlowIpv4Identification `protobuf:"bytes,5,opt,name=identification,proto3" json:"identification,omitempty"` + // Description missing in models + Reserved *PatternFlowIpv4Reserved `protobuf:"bytes,6,opt,name=reserved,proto3" json:"reserved,omitempty"` + // Description missing in models + DontFragment *PatternFlowIpv4DontFragment `protobuf:"bytes,7,opt,name=dont_fragment,json=dontFragment,proto3" json:"dont_fragment,omitempty"` + // Description missing in models + MoreFragments *PatternFlowIpv4MoreFragments `protobuf:"bytes,8,opt,name=more_fragments,json=moreFragments,proto3" json:"more_fragments,omitempty"` + // Description missing in models + FragmentOffset *PatternFlowIpv4FragmentOffset `protobuf:"bytes,9,opt,name=fragment_offset,json=fragmentOffset,proto3" json:"fragment_offset,omitempty"` + // Description missing in models + TimeToLive *PatternFlowIpv4TimeToLive `protobuf:"bytes,10,opt,name=time_to_live,json=timeToLive,proto3" json:"time_to_live,omitempty"` + // Description missing in models + Protocol *PatternFlowIpv4Protocol `protobuf:"bytes,11,opt,name=protocol,proto3" json:"protocol,omitempty"` + // Description missing in models + HeaderChecksum *PatternFlowIpv4HeaderChecksum `protobuf:"bytes,12,opt,name=header_checksum,json=headerChecksum,proto3" json:"header_checksum,omitempty"` + // Description missing in models + Src *PatternFlowIpv4Src `protobuf:"bytes,13,opt,name=src,proto3" json:"src,omitempty"` + // Description missing in models + Dst *PatternFlowIpv4Dst `protobuf:"bytes,14,opt,name=dst,proto3" json:"dst,omitempty"` } -func (x *FlowPredefinedTags) Reset() { - *x = FlowPredefinedTags{} +func (x *FlowIpv4) Reset() { + *x = FlowIpv4{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[204] + mi := &file_otg_proto_msgTypes[168] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *FlowPredefinedTags) String() string { +func (x *FlowIpv4) String() string { return protoimpl.X.MessageStringOf(x) } -func (*FlowPredefinedTags) ProtoMessage() {} +func (*FlowIpv4) ProtoMessage() {} -func (x *FlowPredefinedTags) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[204] +func (x *FlowIpv4) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[168] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -36323,180 +36093,143 @@ func (x *FlowPredefinedTags) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use FlowPredefinedTags.ProtoReflect.Descriptor instead. -func (*FlowPredefinedTags) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{204} +// Deprecated: Use FlowIpv4.ProtoReflect.Descriptor instead. +func (*FlowIpv4) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{168} } -func (x *FlowPredefinedTags) GetRxName() bool { - if x != nil && x.RxName != nil { - return *x.RxName +func (x *FlowIpv4) GetVersion() *PatternFlowIpv4Version { + if x != nil { + return x.Version } - return false + return nil } -// Rx Tx ratio is the ratio of expected number of Rx packets across all Rx ports to -// the Tx packets -// for the configured flow. It is a factor by which the Tx packet count is multiplied -// to calculate -// the sum of expected Rx packet count, across all Rx ports. This will be used to calculate -// loss -// percentage of flow at aggregate level. -type FlowRxTxRatio struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // Description missing in models - // default = Choice.Enum.value - Choice *FlowRxTxRatio_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.FlowRxTxRatio_Choice_Enum,oneof" json:"choice,omitempty"` - // Description missing in models - RxCount *FlowRxTxRatioRxCount `protobuf:"bytes,2,opt,name=rx_count,json=rxCount,proto3" json:"rx_count,omitempty"` - // Should be a positive, non-zero value. The default value of 1, is when the Rx packet - // count across - // all ports is expected to match the Tx packet count. A custom integer value (>1) can - // be specified for - // loss calculation for cases when there are multiple destination addresses configured - // within one flow, - // but DUT is configured to replicate only to a subset of Rx ports. For cases when Tx - // side generates two - // packets from each source in 1:1 protection mode but only one of the two packets are - // received by the - // Rx port, we may need to specify a fractional value instead. - // default = 1.0 - Value *float32 `protobuf:"fixed32,3,opt,name=value,proto3,oneof" json:"value,omitempty"` +func (x *FlowIpv4) GetHeaderLength() *PatternFlowIpv4HeaderLength { + if x != nil { + return x.HeaderLength + } + return nil } -func (x *FlowRxTxRatio) Reset() { - *x = FlowRxTxRatio{} - if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[205] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) +func (x *FlowIpv4) GetPriority() *FlowIpv4Priority { + if x != nil { + return x.Priority } + return nil } -func (x *FlowRxTxRatio) String() string { - return protoimpl.X.MessageStringOf(x) +func (x *FlowIpv4) GetTotalLength() *PatternFlowIpv4TotalLength { + if x != nil { + return x.TotalLength + } + return nil } -func (*FlowRxTxRatio) ProtoMessage() {} - -func (x *FlowRxTxRatio) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[205] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms +func (x *FlowIpv4) GetIdentification() *PatternFlowIpv4Identification { + if x != nil { + return x.Identification } - return mi.MessageOf(x) + return nil } -// Deprecated: Use FlowRxTxRatio.ProtoReflect.Descriptor instead. -func (*FlowRxTxRatio) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{205} +func (x *FlowIpv4) GetReserved() *PatternFlowIpv4Reserved { + if x != nil { + return x.Reserved + } + return nil } -func (x *FlowRxTxRatio) GetChoice() FlowRxTxRatio_Choice_Enum { - if x != nil && x.Choice != nil { - return *x.Choice +func (x *FlowIpv4) GetDontFragment() *PatternFlowIpv4DontFragment { + if x != nil { + return x.DontFragment } - return FlowRxTxRatio_Choice_unspecified + return nil } -func (x *FlowRxTxRatio) GetRxCount() *FlowRxTxRatioRxCount { +func (x *FlowIpv4) GetMoreFragments() *PatternFlowIpv4MoreFragments { if x != nil { - return x.RxCount + return x.MoreFragments } return nil } -func (x *FlowRxTxRatio) GetValue() float32 { - if x != nil && x.Value != nil { - return *x.Value +func (x *FlowIpv4) GetFragmentOffset() *PatternFlowIpv4FragmentOffset { + if x != nil { + return x.FragmentOffset } - return 0 + return nil } -// This is for cases where one copy of Tx packet is received on all Rx ports and so -// the sum total of Rx packets -// received across all Rx ports is a multiple of Rx port count and Tx packets. -type FlowRxTxRatioRxCount struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields +func (x *FlowIpv4) GetTimeToLive() *PatternFlowIpv4TimeToLive { + if x != nil { + return x.TimeToLive + } + return nil } -func (x *FlowRxTxRatioRxCount) Reset() { - *x = FlowRxTxRatioRxCount{} - if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[206] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) +func (x *FlowIpv4) GetProtocol() *PatternFlowIpv4Protocol { + if x != nil { + return x.Protocol } + return nil } -func (x *FlowRxTxRatioRxCount) String() string { - return protoimpl.X.MessageStringOf(x) +func (x *FlowIpv4) GetHeaderChecksum() *PatternFlowIpv4HeaderChecksum { + if x != nil { + return x.HeaderChecksum + } + return nil } -func (*FlowRxTxRatioRxCount) ProtoMessage() {} - -func (x *FlowRxTxRatioRxCount) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[206] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms +func (x *FlowIpv4) GetSrc() *PatternFlowIpv4Src { + if x != nil { + return x.Src } - return mi.MessageOf(x) + return nil } -// Deprecated: Use FlowRxTxRatioRxCount.ProtoReflect.Descriptor instead. -func (*FlowRxTxRatioRxCount) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{206} +func (x *FlowIpv4) GetDst() *PatternFlowIpv4Dst { + if x != nil { + return x.Dst + } + return nil } -// The optional container for event configuration. -type Event struct { +// A container for ipv4 raw, tos, dscp ip priorities. +type FlowIpv4Priority struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // True to enable all events. - // Enabling this option may affect the resultant packet payload due to - // additional instrumentation data. - // default = False - Enable *bool `protobuf:"varint,1,opt,name=enable,proto3,oneof" json:"enable,omitempty"` // Description missing in models - Link *EventLink `protobuf:"bytes,2,opt,name=link,proto3" json:"link,omitempty"` + // default = Choice.Enum.dscp + Choice *FlowIpv4Priority_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.FlowIpv4Priority_Choice_Enum,oneof" json:"choice,omitempty"` // Description missing in models - RxRateThreshold *EventRxRateThreshold `protobuf:"bytes,3,opt,name=rx_rate_threshold,json=rxRateThreshold,proto3" json:"rx_rate_threshold,omitempty"` + Raw *PatternFlowIpv4PriorityRaw `protobuf:"bytes,2,opt,name=raw,proto3" json:"raw,omitempty"` // Description missing in models - RouteAdvertiseWithdraw *EventRouteAdvertiseWithdraw `protobuf:"bytes,4,opt,name=route_advertise_withdraw,json=routeAdvertiseWithdraw,proto3" json:"route_advertise_withdraw,omitempty"` + Tos *FlowIpv4Tos `protobuf:"bytes,3,opt,name=tos,proto3" json:"tos,omitempty"` + // Description missing in models + Dscp *FlowIpv4Dscp `protobuf:"bytes,4,opt,name=dscp,proto3" json:"dscp,omitempty"` } -func (x *Event) Reset() { - *x = Event{} +func (x *FlowIpv4Priority) Reset() { + *x = FlowIpv4Priority{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[207] + mi := &file_otg_proto_msgTypes[169] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *Event) String() string { +func (x *FlowIpv4Priority) String() string { return protoimpl.X.MessageStringOf(x) } -func (*Event) ProtoMessage() {} +func (*FlowIpv4Priority) ProtoMessage() {} -func (x *Event) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[207] +func (x *FlowIpv4Priority) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[169] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -36507,73 +36240,68 @@ func (x *Event) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use Event.ProtoReflect.Descriptor instead. -func (*Event) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{207} +// Deprecated: Use FlowIpv4Priority.ProtoReflect.Descriptor instead. +func (*FlowIpv4Priority) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{169} } -func (x *Event) GetEnable() bool { - if x != nil && x.Enable != nil { - return *x.Enable +func (x *FlowIpv4Priority) GetChoice() FlowIpv4Priority_Choice_Enum { + if x != nil && x.Choice != nil { + return *x.Choice } - return false + return FlowIpv4Priority_Choice_unspecified } -func (x *Event) GetLink() *EventLink { +func (x *FlowIpv4Priority) GetRaw() *PatternFlowIpv4PriorityRaw { if x != nil { - return x.Link + return x.Raw } return nil } -func (x *Event) GetRxRateThreshold() *EventRxRateThreshold { +func (x *FlowIpv4Priority) GetTos() *FlowIpv4Tos { if x != nil { - return x.RxRateThreshold + return x.Tos } return nil } -func (x *Event) GetRouteAdvertiseWithdraw() *EventRouteAdvertiseWithdraw { +func (x *FlowIpv4Priority) GetDscp() *FlowIpv4Dscp { if x != nil { - return x.RouteAdvertiseWithdraw + return x.Dscp } return nil } -// The optional container for rx rate threshold event configuration. -type EventRxRateThreshold struct { +// Differentiated services code point (DSCP) packet field. +type FlowIpv4Dscp struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // True to enable the rx_rate_threshold event. - // Enabling this option may affect the resultant packet payload due to - // additional instrumentation data. - // default = False - Enable *bool `protobuf:"varint,1,opt,name=enable,proto3,oneof" json:"enable,omitempty"` - // True to enable notifications when the rx rate of a flow passes above - // or below the threshold value. - // default = 95 - Threshold *float32 `protobuf:"fixed32,2,opt,name=threshold,proto3,oneof" json:"threshold,omitempty"` + // Description missing in models + Phb *PatternFlowIpv4DscpPhb `protobuf:"bytes,1,opt,name=phb,proto3" json:"phb,omitempty"` + // Description missing in models + Ecn *PatternFlowIpv4DscpEcn `protobuf:"bytes,2,opt,name=ecn,proto3" json:"ecn,omitempty"` } -func (x *EventRxRateThreshold) Reset() { - *x = EventRxRateThreshold{} +func (x *FlowIpv4Dscp) Reset() { + *x = FlowIpv4Dscp{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[208] + mi := &file_otg_proto_msgTypes[170] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *EventRxRateThreshold) String() string { +func (x *FlowIpv4Dscp) String() string { return protoimpl.X.MessageStringOf(x) } -func (*EventRxRateThreshold) ProtoMessage() {} +func (*FlowIpv4Dscp) ProtoMessage() {} -func (x *EventRxRateThreshold) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[208] +func (x *FlowIpv4Dscp) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[170] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -36584,53 +36312,62 @@ func (x *EventRxRateThreshold) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use EventRxRateThreshold.ProtoReflect.Descriptor instead. -func (*EventRxRateThreshold) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{208} +// Deprecated: Use FlowIpv4Dscp.ProtoReflect.Descriptor instead. +func (*FlowIpv4Dscp) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{170} } -func (x *EventRxRateThreshold) GetEnable() bool { - if x != nil && x.Enable != nil { - return *x.Enable +func (x *FlowIpv4Dscp) GetPhb() *PatternFlowIpv4DscpPhb { + if x != nil { + return x.Phb } - return false + return nil } -func (x *EventRxRateThreshold) GetThreshold() float32 { - if x != nil && x.Threshold != nil { - return *x.Threshold +func (x *FlowIpv4Dscp) GetEcn() *PatternFlowIpv4DscpEcn { + if x != nil { + return x.Ecn } - return 0 + return nil } -// The optional container for link up/down event configuration. -type EventLink struct { +// Type of service (TOS) packet field. +type FlowIpv4Tos struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // True to enable notifications when a link up/down event occurs. - // default = False - Enable *bool `protobuf:"varint,1,opt,name=enable,proto3,oneof" json:"enable,omitempty"` + // Description missing in models + Precedence *PatternFlowIpv4TosPrecedence `protobuf:"bytes,1,opt,name=precedence,proto3" json:"precedence,omitempty"` + // Description missing in models + Delay *PatternFlowIpv4TosDelay `protobuf:"bytes,2,opt,name=delay,proto3" json:"delay,omitempty"` + // Description missing in models + Throughput *PatternFlowIpv4TosThroughput `protobuf:"bytes,3,opt,name=throughput,proto3" json:"throughput,omitempty"` + // Description missing in models + Reliability *PatternFlowIpv4TosReliability `protobuf:"bytes,4,opt,name=reliability,proto3" json:"reliability,omitempty"` + // Description missing in models + Monetary *PatternFlowIpv4TosMonetary `protobuf:"bytes,5,opt,name=monetary,proto3" json:"monetary,omitempty"` + // Description missing in models + Unused *PatternFlowIpv4TosUnused `protobuf:"bytes,6,opt,name=unused,proto3" json:"unused,omitempty"` } -func (x *EventLink) Reset() { - *x = EventLink{} +func (x *FlowIpv4Tos) Reset() { + *x = FlowIpv4Tos{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[209] + mi := &file_otg_proto_msgTypes[171] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *EventLink) String() string { +func (x *FlowIpv4Tos) String() string { return protoimpl.X.MessageStringOf(x) } -func (*EventLink) ProtoMessage() {} +func (*FlowIpv4Tos) ProtoMessage() {} -func (x *EventLink) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[209] +func (x *FlowIpv4Tos) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[171] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -36641,110 +36378,94 @@ func (x *EventLink) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use EventLink.ProtoReflect.Descriptor instead. -func (*EventLink) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{209} +// Deprecated: Use FlowIpv4Tos.ProtoReflect.Descriptor instead. +func (*FlowIpv4Tos) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{171} } -func (x *EventLink) GetEnable() bool { - if x != nil && x.Enable != nil { - return *x.Enable +func (x *FlowIpv4Tos) GetPrecedence() *PatternFlowIpv4TosPrecedence { + if x != nil { + return x.Precedence } - return false + return nil } -// The optional container for route advertise/withdraw event configuration. -type EventRouteAdvertiseWithdraw struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // True to enable notifications when a route advertise/withdraw - // event occurs. - // default = False - Enable *bool `protobuf:"varint,1,opt,name=enable,proto3,oneof" json:"enable,omitempty"` +func (x *FlowIpv4Tos) GetDelay() *PatternFlowIpv4TosDelay { + if x != nil { + return x.Delay + } + return nil } -func (x *EventRouteAdvertiseWithdraw) Reset() { - *x = EventRouteAdvertiseWithdraw{} - if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[210] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) +func (x *FlowIpv4Tos) GetThroughput() *PatternFlowIpv4TosThroughput { + if x != nil { + return x.Throughput } + return nil } -func (x *EventRouteAdvertiseWithdraw) String() string { - return protoimpl.X.MessageStringOf(x) +func (x *FlowIpv4Tos) GetReliability() *PatternFlowIpv4TosReliability { + if x != nil { + return x.Reliability + } + return nil } -func (*EventRouteAdvertiseWithdraw) ProtoMessage() {} +func (x *FlowIpv4Tos) GetMonetary() *PatternFlowIpv4TosMonetary { + if x != nil { + return x.Monetary + } + return nil +} -func (x *EventRouteAdvertiseWithdraw) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[210] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use EventRouteAdvertiseWithdraw.ProtoReflect.Descriptor instead. -func (*EventRouteAdvertiseWithdraw) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{210} -} - -func (x *EventRouteAdvertiseWithdraw) GetEnable() bool { - if x != nil && x.Enable != nil { - return *x.Enable +func (x *FlowIpv4Tos) GetUnused() *PatternFlowIpv4TosUnused { + if x != nil { + return x.Unused } - return false + return nil } -// Description missing in models -type EventRequest struct { +// IPv6 packet header +type FlowIpv6 struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Constrain the events being returned by specifying event types. - // If the list is empty then all event types will be returned. - Type []EventRequest_Type_Enum `protobuf:"varint,1,rep,packed,name=type,proto3,enum=otg.EventRequest_Type_Enum" json:"type,omitempty"` - // Constrain the events being returned by specifying event sources. - // If the list is empty then all event sources will be returned. - // - // x-constraint: - // - /components/schemas/Port/properties/name - // - /components/schemas/Bgp.V4RouteRange/name - // - /components/schemas/Bgp.V6RouteRange/name - // - // x-constraint: - // - /components/schemas/Port/properties/name - // - /components/schemas/Bgp.V4RouteRange/name - // - /components/schemas/Bgp.V6RouteRange/name - Source []string `protobuf:"bytes,2,rep,name=source,proto3" json:"source,omitempty"` + // Description missing in models + Version *PatternFlowIpv6Version `protobuf:"bytes,1,opt,name=version,proto3" json:"version,omitempty"` + // Description missing in models + TrafficClass *PatternFlowIpv6TrafficClass `protobuf:"bytes,2,opt,name=traffic_class,json=trafficClass,proto3" json:"traffic_class,omitempty"` + // Description missing in models + FlowLabel *PatternFlowIpv6FlowLabel `protobuf:"bytes,3,opt,name=flow_label,json=flowLabel,proto3" json:"flow_label,omitempty"` + // Description missing in models + PayloadLength *PatternFlowIpv6PayloadLength `protobuf:"bytes,4,opt,name=payload_length,json=payloadLength,proto3" json:"payload_length,omitempty"` + // Description missing in models + NextHeader *PatternFlowIpv6NextHeader `protobuf:"bytes,5,opt,name=next_header,json=nextHeader,proto3" json:"next_header,omitempty"` + // Description missing in models + HopLimit *PatternFlowIpv6HopLimit `protobuf:"bytes,6,opt,name=hop_limit,json=hopLimit,proto3" json:"hop_limit,omitempty"` + // Description missing in models + Src *PatternFlowIpv6Src `protobuf:"bytes,7,opt,name=src,proto3" json:"src,omitempty"` + // Description missing in models + Dst *PatternFlowIpv6Dst `protobuf:"bytes,8,opt,name=dst,proto3" json:"dst,omitempty"` } -func (x *EventRequest) Reset() { - *x = EventRequest{} +func (x *FlowIpv6) Reset() { + *x = FlowIpv6{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[211] + mi := &file_otg_proto_msgTypes[172] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *EventRequest) String() string { +func (x *FlowIpv6) String() string { return protoimpl.X.MessageStringOf(x) } -func (*EventRequest) ProtoMessage() {} +func (*FlowIpv6) ProtoMessage() {} -func (x *EventRequest) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[211] +func (x *FlowIpv6) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[172] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -36755,139 +36476,118 @@ func (x *EventRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use EventRequest.ProtoReflect.Descriptor instead. -func (*EventRequest) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{211} +// Deprecated: Use FlowIpv6.ProtoReflect.Descriptor instead. +func (*FlowIpv6) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{172} } -func (x *EventRequest) GetType() []EventRequest_Type_Enum { +func (x *FlowIpv6) GetVersion() *PatternFlowIpv6Version { if x != nil { - return x.Type + return x.Version } return nil } -func (x *EventRequest) GetSource() []string { +func (x *FlowIpv6) GetTrafficClass() *PatternFlowIpv6TrafficClass { if x != nil { - return x.Source + return x.TrafficClass } return nil } -// A container that describes what events a system should provide and -// optionally where to publish them. -type EventSubscription struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // Description missing in models - Events *EventRequest `protobuf:"bytes,1,opt,name=events,proto3" json:"events,omitempty"` - // Indicates where a client wants to be notified of the events set in - // the events property. - // If this property is empty or null then no event notifications will - // be forwarded. - CallbackUrl *string `protobuf:"bytes,2,opt,name=callback_url,json=callbackUrl,proto3,oneof" json:"callback_url,omitempty"` -} - -func (x *EventSubscription) Reset() { - *x = EventSubscription{} - if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[212] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) +func (x *FlowIpv6) GetFlowLabel() *PatternFlowIpv6FlowLabel { + if x != nil { + return x.FlowLabel } + return nil } -func (x *EventSubscription) String() string { - return protoimpl.X.MessageStringOf(x) +func (x *FlowIpv6) GetPayloadLength() *PatternFlowIpv6PayloadLength { + if x != nil { + return x.PayloadLength + } + return nil } -func (*EventSubscription) ProtoMessage() {} - -func (x *EventSubscription) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[212] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms +func (x *FlowIpv6) GetNextHeader() *PatternFlowIpv6NextHeader { + if x != nil { + return x.NextHeader } - return mi.MessageOf(x) + return nil } -// Deprecated: Use EventSubscription.ProtoReflect.Descriptor instead. -func (*EventSubscription) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{212} +func (x *FlowIpv6) GetHopLimit() *PatternFlowIpv6HopLimit { + if x != nil { + return x.HopLimit + } + return nil } -func (x *EventSubscription) GetEvents() *EventRequest { +func (x *FlowIpv6) GetSrc() *PatternFlowIpv6Src { if x != nil { - return x.Events + return x.Src } return nil } -func (x *EventSubscription) GetCallbackUrl() string { - if x != nil && x.CallbackUrl != nil { - return *x.CallbackUrl +func (x *FlowIpv6) GetDst() *PatternFlowIpv6Dst { + if x != nil { + return x.Dst } - return "" + return nil } -// Configuration of LLDP protocol IEEE Ref: https://www.ieee802.org/1/files/public/docs2002/lldp-protocol-00.pdf -type Lldp struct { +// IEEE 802.1Qbb PFC Pause packet header. +type FlowPfcPause struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // The unique name of the object on which LLDP is running. - // required = true - Connection *LldpConnection `protobuf:"bytes,1,opt,name=connection,proto3" json:"connection,omitempty"` - // The Chassis ID is a mandatory TLV which identifies the chassis component of the endpoint - // identifier associated with the transmitting LLDP agent. If mac address is specified - // it should be in colon seperated mac address format. - ChassisId *LldpChassisId `protobuf:"bytes,2,opt,name=chassis_id,json=chassisId,proto3" json:"chassis_id,omitempty"` - // The Port ID is a mandatory TLV which identifies the port component of the endpoint - // identifier associated with the transmitting LLDP agent. If the specified port is - // an IEEE 802.3 Repeater port, then this TLV is optional. - PortId *LldpPortId `protobuf:"bytes,3,opt,name=port_id,json=portId,proto3" json:"port_id,omitempty"` - // The system name field shall contain an alpha-numeric string that indicates the system's - // administratively assigned name. The system name should be the system's fully qualified - // domain name. If implementations support IETF RFC 3418, the sysName object should - // be used for this field. - SystemName *LldpSystemName `protobuf:"bytes,4,opt,name=system_name,json=systemName,proto3" json:"system_name,omitempty"` - // Specifies the amount of time in seconds a receiving device should maintain LLDP information - // sent by the device before discarding it. - // default = 120 - HoldTime *uint32 `protobuf:"varint,5,opt,name=hold_time,json=holdTime,proto3,oneof" json:"hold_time,omitempty"` - // Set the transmission frequency of LLDP updates in seconds. - // default = 30 - AdvertisementInterval *uint32 `protobuf:"varint,6,opt,name=advertisement_interval,json=advertisementInterval,proto3,oneof" json:"advertisement_interval,omitempty"` - // Globally unique name of an object. It also serves as the primary key for arrays of - // objects. - // required = true - Name *string `protobuf:"bytes,7,opt,name=name,proto3,oneof" json:"name,omitempty"` + // Description missing in models + Dst *PatternFlowPfcPauseDst `protobuf:"bytes,1,opt,name=dst,proto3" json:"dst,omitempty"` + // Description missing in models + Src *PatternFlowPfcPauseSrc `protobuf:"bytes,2,opt,name=src,proto3" json:"src,omitempty"` + // Description missing in models + EtherType *PatternFlowPfcPauseEtherType `protobuf:"bytes,3,opt,name=ether_type,json=etherType,proto3" json:"ether_type,omitempty"` + // Description missing in models + ControlOpCode *PatternFlowPfcPauseControlOpCode `protobuf:"bytes,4,opt,name=control_op_code,json=controlOpCode,proto3" json:"control_op_code,omitempty"` + // Description missing in models + ClassEnableVector *PatternFlowPfcPauseClassEnableVector `protobuf:"bytes,5,opt,name=class_enable_vector,json=classEnableVector,proto3" json:"class_enable_vector,omitempty"` + // Description missing in models + PauseClass_0 *PatternFlowPfcPausePauseClass0 `protobuf:"bytes,6,opt,name=pause_class_0,json=pauseClass0,proto3" json:"pause_class_0,omitempty"` + // Description missing in models + PauseClass_1 *PatternFlowPfcPausePauseClass1 `protobuf:"bytes,7,opt,name=pause_class_1,json=pauseClass1,proto3" json:"pause_class_1,omitempty"` + // Description missing in models + PauseClass_2 *PatternFlowPfcPausePauseClass2 `protobuf:"bytes,8,opt,name=pause_class_2,json=pauseClass2,proto3" json:"pause_class_2,omitempty"` + // Description missing in models + PauseClass_3 *PatternFlowPfcPausePauseClass3 `protobuf:"bytes,9,opt,name=pause_class_3,json=pauseClass3,proto3" json:"pause_class_3,omitempty"` + // Description missing in models + PauseClass_4 *PatternFlowPfcPausePauseClass4 `protobuf:"bytes,10,opt,name=pause_class_4,json=pauseClass4,proto3" json:"pause_class_4,omitempty"` + // Description missing in models + PauseClass_5 *PatternFlowPfcPausePauseClass5 `protobuf:"bytes,11,opt,name=pause_class_5,json=pauseClass5,proto3" json:"pause_class_5,omitempty"` + // Description missing in models + PauseClass_6 *PatternFlowPfcPausePauseClass6 `protobuf:"bytes,12,opt,name=pause_class_6,json=pauseClass6,proto3" json:"pause_class_6,omitempty"` + // Description missing in models + PauseClass_7 *PatternFlowPfcPausePauseClass7 `protobuf:"bytes,13,opt,name=pause_class_7,json=pauseClass7,proto3" json:"pause_class_7,omitempty"` } -func (x *Lldp) Reset() { - *x = Lldp{} +func (x *FlowPfcPause) Reset() { + *x = FlowPfcPause{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[213] + mi := &file_otg_proto_msgTypes[173] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *Lldp) String() string { +func (x *FlowPfcPause) String() string { return protoimpl.X.MessageStringOf(x) } -func (*Lldp) ProtoMessage() {} +func (*FlowPfcPause) ProtoMessage() {} -func (x *Lldp) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[213] +func (x *FlowPfcPause) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[173] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -36898,162 +36598,137 @@ func (x *Lldp) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use Lldp.ProtoReflect.Descriptor instead. -func (*Lldp) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{213} +// Deprecated: Use FlowPfcPause.ProtoReflect.Descriptor instead. +func (*FlowPfcPause) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{173} } -func (x *Lldp) GetConnection() *LldpConnection { +func (x *FlowPfcPause) GetDst() *PatternFlowPfcPauseDst { if x != nil { - return x.Connection + return x.Dst } return nil } -func (x *Lldp) GetChassisId() *LldpChassisId { +func (x *FlowPfcPause) GetSrc() *PatternFlowPfcPauseSrc { if x != nil { - return x.ChassisId + return x.Src } return nil } -func (x *Lldp) GetPortId() *LldpPortId { +func (x *FlowPfcPause) GetEtherType() *PatternFlowPfcPauseEtherType { if x != nil { - return x.PortId + return x.EtherType } return nil } -func (x *Lldp) GetSystemName() *LldpSystemName { +func (x *FlowPfcPause) GetControlOpCode() *PatternFlowPfcPauseControlOpCode { if x != nil { - return x.SystemName + return x.ControlOpCode } return nil } -func (x *Lldp) GetHoldTime() uint32 { - if x != nil && x.HoldTime != nil { - return *x.HoldTime +func (x *FlowPfcPause) GetClassEnableVector() *PatternFlowPfcPauseClassEnableVector { + if x != nil { + return x.ClassEnableVector } - return 0 + return nil } -func (x *Lldp) GetAdvertisementInterval() uint32 { - if x != nil && x.AdvertisementInterval != nil { - return *x.AdvertisementInterval +func (x *FlowPfcPause) GetPauseClass_0() *PatternFlowPfcPausePauseClass0 { + if x != nil { + return x.PauseClass_0 } - return 0 + return nil } -func (x *Lldp) GetName() string { - if x != nil && x.Name != nil { - return *x.Name +func (x *FlowPfcPause) GetPauseClass_1() *PatternFlowPfcPausePauseClass1 { + if x != nil { + return x.PauseClass_1 } - return "" -} - -// LLDP connection to a test port. In future if more connection options arise LLDP -// connection object will be enhanced. -type LldpConnection struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // The name of the test port or other connection objects on which LLDP is configured. - Choice *LldpConnection_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.LldpConnection_Choice_Enum,oneof" json:"choice,omitempty"` - // Name of the test port on which LLDP is configured on. - // - // x-constraint: - // - /components/schemas/Port/properties/name - // - // x-constraint: - // - /components/schemas/Port/properties/name - PortName *string `protobuf:"bytes,2,opt,name=port_name,json=portName,proto3,oneof" json:"port_name,omitempty"` + return nil } -func (x *LldpConnection) Reset() { - *x = LldpConnection{} - if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[214] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) +func (x *FlowPfcPause) GetPauseClass_2() *PatternFlowPfcPausePauseClass2 { + if x != nil { + return x.PauseClass_2 } + return nil } -func (x *LldpConnection) String() string { - return protoimpl.X.MessageStringOf(x) +func (x *FlowPfcPause) GetPauseClass_3() *PatternFlowPfcPausePauseClass3 { + if x != nil { + return x.PauseClass_3 + } + return nil } -func (*LldpConnection) ProtoMessage() {} - -func (x *LldpConnection) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[214] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms +func (x *FlowPfcPause) GetPauseClass_4() *PatternFlowPfcPausePauseClass4 { + if x != nil { + return x.PauseClass_4 } - return mi.MessageOf(x) + return nil } -// Deprecated: Use LldpConnection.ProtoReflect.Descriptor instead. -func (*LldpConnection) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{214} +func (x *FlowPfcPause) GetPauseClass_5() *PatternFlowPfcPausePauseClass5 { + if x != nil { + return x.PauseClass_5 + } + return nil } -func (x *LldpConnection) GetChoice() LldpConnection_Choice_Enum { - if x != nil && x.Choice != nil { - return *x.Choice +func (x *FlowPfcPause) GetPauseClass_6() *PatternFlowPfcPausePauseClass6 { + if x != nil { + return x.PauseClass_6 } - return LldpConnection_Choice_unspecified + return nil } -func (x *LldpConnection) GetPortName() string { - if x != nil && x.PortName != nil { - return *x.PortName +func (x *FlowPfcPause) GetPauseClass_7() *PatternFlowPfcPausePauseClass7 { + if x != nil { + return x.PauseClass_7 } - return "" + return nil } -// The Chassis ID is a mandatory TLV which identifies the chassis component of the endpoint -// identifier associated with the transmitting LLDP agent. This field identifies the -// format and source of the chassis identifier string. It is based on the enumerator -// defined by the LldpChassisIdSubtype object from IEEE 802.1AB MIB. -type LldpChassisId struct { +// IEEE 802.3x global ethernet pause packet header +type FlowEthernetPause struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Chassis ID subtype to be used in Chassis ID TLV. - // default = Choice.Enum.mac_address_subtype - Choice *LldpChassisId_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.LldpChassisId_Choice_Enum,oneof" json:"choice,omitempty"` // Description missing in models - MacAddressSubtype *LldpChassisMacSubType `protobuf:"bytes,2,opt,name=mac_address_subtype,json=macAddressSubtype,proto3" json:"mac_address_subtype,omitempty"` - // Name of an interface of the chassis that uniquely identifies the chassis. - InterfaceNameSubtype *string `protobuf:"bytes,3,opt,name=interface_name_subtype,json=interfaceNameSubtype,proto3,oneof" json:"interface_name_subtype,omitempty"` - // Locally assigned name of the chassis. - LocalSubtype *string `protobuf:"bytes,4,opt,name=local_subtype,json=localSubtype,proto3,oneof" json:"local_subtype,omitempty"` + Dst *PatternFlowEthernetPauseDst `protobuf:"bytes,1,opt,name=dst,proto3" json:"dst,omitempty"` + // Description missing in models + Src *PatternFlowEthernetPauseSrc `protobuf:"bytes,2,opt,name=src,proto3" json:"src,omitempty"` + // Description missing in models + EtherType *PatternFlowEthernetPauseEtherType `protobuf:"bytes,3,opt,name=ether_type,json=etherType,proto3" json:"ether_type,omitempty"` + // Description missing in models + ControlOpCode *PatternFlowEthernetPauseControlOpCode `protobuf:"bytes,4,opt,name=control_op_code,json=controlOpCode,proto3" json:"control_op_code,omitempty"` + // Description missing in models + Time *PatternFlowEthernetPauseTime `protobuf:"bytes,5,opt,name=time,proto3" json:"time,omitempty"` } -func (x *LldpChassisId) Reset() { - *x = LldpChassisId{} +func (x *FlowEthernetPause) Reset() { + *x = FlowEthernetPause{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[215] + mi := &file_otg_proto_msgTypes[174] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *LldpChassisId) String() string { +func (x *FlowEthernetPause) String() string { return protoimpl.X.MessageStringOf(x) } -func (*LldpChassisId) ProtoMessage() {} +func (*FlowEthernetPause) ProtoMessage() {} -func (x *LldpChassisId) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[215] +func (x *FlowEthernetPause) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[174] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -37064,76 +36739,101 @@ func (x *LldpChassisId) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use LldpChassisId.ProtoReflect.Descriptor instead. -func (*LldpChassisId) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{215} +// Deprecated: Use FlowEthernetPause.ProtoReflect.Descriptor instead. +func (*FlowEthernetPause) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{174} } -func (x *LldpChassisId) GetChoice() LldpChassisId_Choice_Enum { - if x != nil && x.Choice != nil { - return *x.Choice +func (x *FlowEthernetPause) GetDst() *PatternFlowEthernetPauseDst { + if x != nil { + return x.Dst } - return LldpChassisId_Choice_unspecified + return nil } -func (x *LldpChassisId) GetMacAddressSubtype() *LldpChassisMacSubType { +func (x *FlowEthernetPause) GetSrc() *PatternFlowEthernetPauseSrc { if x != nil { - return x.MacAddressSubtype + return x.Src } return nil } -func (x *LldpChassisId) GetInterfaceNameSubtype() string { - if x != nil && x.InterfaceNameSubtype != nil { - return *x.InterfaceNameSubtype +func (x *FlowEthernetPause) GetEtherType() *PatternFlowEthernetPauseEtherType { + if x != nil { + return x.EtherType } - return "" + return nil } -func (x *LldpChassisId) GetLocalSubtype() string { - if x != nil && x.LocalSubtype != nil { - return *x.LocalSubtype +func (x *FlowEthernetPause) GetControlOpCode() *PatternFlowEthernetPauseControlOpCode { + if x != nil { + return x.ControlOpCode } - return "" + return nil } -// The Port ID is a mandatory TLV which identifies the port component of the endpoint -// identifier associated with the transmitting LLDP agent.This field identifies the -// format and source of the port identifier string. It is based on the enumerator defined -// by the PtopoPortIdType object from RFC2922. -type LldpPortId struct { +func (x *FlowEthernetPause) GetTime() *PatternFlowEthernetPauseTime { + if x != nil { + return x.Time + } + return nil +} + +// TCP packet header +type FlowTcp struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Port ID subtype to be used in Port ID TLV. - // default = Choice.Enum.interface_name_subtype - Choice *LldpPortId_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.LldpPortId_Choice_Enum,oneof" json:"choice,omitempty"` - // The MAC Address configured in the Port ID TLV. - MacAddressSubtype *string `protobuf:"bytes,2,opt,name=mac_address_subtype,json=macAddressSubtype,proto3,oneof" json:"mac_address_subtype,omitempty"` // Description missing in models - InterfaceNameSubtype *LldpPortInterfaceNameSubType `protobuf:"bytes,3,opt,name=interface_name_subtype,json=interfaceNameSubtype,proto3" json:"interface_name_subtype,omitempty"` - // The Locally assigned name configured in the Port ID TLV. - LocalSubtype *string `protobuf:"bytes,4,opt,name=local_subtype,json=localSubtype,proto3,oneof" json:"local_subtype,omitempty"` + SrcPort *PatternFlowTcpSrcPort `protobuf:"bytes,1,opt,name=src_port,json=srcPort,proto3" json:"src_port,omitempty"` + // Description missing in models + DstPort *PatternFlowTcpDstPort `protobuf:"bytes,2,opt,name=dst_port,json=dstPort,proto3" json:"dst_port,omitempty"` + // Description missing in models + SeqNum *PatternFlowTcpSeqNum `protobuf:"bytes,3,opt,name=seq_num,json=seqNum,proto3" json:"seq_num,omitempty"` + // Description missing in models + AckNum *PatternFlowTcpAckNum `protobuf:"bytes,4,opt,name=ack_num,json=ackNum,proto3" json:"ack_num,omitempty"` + // Description missing in models + DataOffset *PatternFlowTcpDataOffset `protobuf:"bytes,5,opt,name=data_offset,json=dataOffset,proto3" json:"data_offset,omitempty"` + // Description missing in models + EcnNs *PatternFlowTcpEcnNs `protobuf:"bytes,6,opt,name=ecn_ns,json=ecnNs,proto3" json:"ecn_ns,omitempty"` + // Description missing in models + EcnCwr *PatternFlowTcpEcnCwr `protobuf:"bytes,7,opt,name=ecn_cwr,json=ecnCwr,proto3" json:"ecn_cwr,omitempty"` + // Description missing in models + EcnEcho *PatternFlowTcpEcnEcho `protobuf:"bytes,8,opt,name=ecn_echo,json=ecnEcho,proto3" json:"ecn_echo,omitempty"` + // Description missing in models + CtlUrg *PatternFlowTcpCtlUrg `protobuf:"bytes,9,opt,name=ctl_urg,json=ctlUrg,proto3" json:"ctl_urg,omitempty"` + // Description missing in models + CtlAck *PatternFlowTcpCtlAck `protobuf:"bytes,10,opt,name=ctl_ack,json=ctlAck,proto3" json:"ctl_ack,omitempty"` + // Description missing in models + CtlPsh *PatternFlowTcpCtlPsh `protobuf:"bytes,11,opt,name=ctl_psh,json=ctlPsh,proto3" json:"ctl_psh,omitempty"` + // Description missing in models + CtlRst *PatternFlowTcpCtlRst `protobuf:"bytes,12,opt,name=ctl_rst,json=ctlRst,proto3" json:"ctl_rst,omitempty"` + // Description missing in models + CtlSyn *PatternFlowTcpCtlSyn `protobuf:"bytes,13,opt,name=ctl_syn,json=ctlSyn,proto3" json:"ctl_syn,omitempty"` + // Description missing in models + CtlFin *PatternFlowTcpCtlFin `protobuf:"bytes,14,opt,name=ctl_fin,json=ctlFin,proto3" json:"ctl_fin,omitempty"` + // Description missing in models + Window *PatternFlowTcpWindow `protobuf:"bytes,15,opt,name=window,proto3" json:"window,omitempty"` } -func (x *LldpPortId) Reset() { - *x = LldpPortId{} +func (x *FlowTcp) Reset() { + *x = FlowTcp{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[216] + mi := &file_otg_proto_msgTypes[175] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *LldpPortId) String() string { +func (x *FlowTcp) String() string { return protoimpl.X.MessageStringOf(x) } -func (*LldpPortId) ProtoMessage() {} +func (*FlowTcp) ProtoMessage() {} -func (x *LldpPortId) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[216] +func (x *FlowTcp) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[175] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -37144,141 +36844,149 @@ func (x *LldpPortId) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use LldpPortId.ProtoReflect.Descriptor instead. -func (*LldpPortId) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{216} +// Deprecated: Use FlowTcp.ProtoReflect.Descriptor instead. +func (*FlowTcp) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{175} } -func (x *LldpPortId) GetChoice() LldpPortId_Choice_Enum { - if x != nil && x.Choice != nil { - return *x.Choice +func (x *FlowTcp) GetSrcPort() *PatternFlowTcpSrcPort { + if x != nil { + return x.SrcPort } - return LldpPortId_Choice_unspecified + return nil } -func (x *LldpPortId) GetMacAddressSubtype() string { - if x != nil && x.MacAddressSubtype != nil { - return *x.MacAddressSubtype +func (x *FlowTcp) GetDstPort() *PatternFlowTcpDstPort { + if x != nil { + return x.DstPort } - return "" + return nil } -func (x *LldpPortId) GetInterfaceNameSubtype() *LldpPortInterfaceNameSubType { +func (x *FlowTcp) GetSeqNum() *PatternFlowTcpSeqNum { if x != nil { - return x.InterfaceNameSubtype + return x.SeqNum } return nil } -func (x *LldpPortId) GetLocalSubtype() string { - if x != nil && x.LocalSubtype != nil { - return *x.LocalSubtype +func (x *FlowTcp) GetAckNum() *PatternFlowTcpAckNum { + if x != nil { + return x.AckNum } - return "" + return nil } -// The MAC address configured in the Chassis ID TLV. -type LldpChassisMacSubType struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields +func (x *FlowTcp) GetDataOffset() *PatternFlowTcpDataOffset { + if x != nil { + return x.DataOffset + } + return nil +} - // In auto mode the system generated value is set for this property, while if the choice - // is selected as value, a user configured value will be used for this property. - // default = Choice.Enum.auto - Choice *LldpChassisMacSubType_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.LldpChassisMacSubType_Choice_Enum,oneof" json:"choice,omitempty"` - // The OTG implementation must provide a system generated value for this property. - Auto *string `protobuf:"bytes,2,opt,name=auto,proto3,oneof" json:"auto,omitempty"` - // User must specify a value if mode is not auto. - Value *string `protobuf:"bytes,3,opt,name=value,proto3,oneof" json:"value,omitempty"` +func (x *FlowTcp) GetEcnNs() *PatternFlowTcpEcnNs { + if x != nil { + return x.EcnNs + } + return nil } -func (x *LldpChassisMacSubType) Reset() { - *x = LldpChassisMacSubType{} - if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[217] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) +func (x *FlowTcp) GetEcnCwr() *PatternFlowTcpEcnCwr { + if x != nil { + return x.EcnCwr } + return nil } -func (x *LldpChassisMacSubType) String() string { - return protoimpl.X.MessageStringOf(x) +func (x *FlowTcp) GetEcnEcho() *PatternFlowTcpEcnEcho { + if x != nil { + return x.EcnEcho + } + return nil } -func (*LldpChassisMacSubType) ProtoMessage() {} +func (x *FlowTcp) GetCtlUrg() *PatternFlowTcpCtlUrg { + if x != nil { + return x.CtlUrg + } + return nil +} -func (x *LldpChassisMacSubType) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[217] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms +func (x *FlowTcp) GetCtlAck() *PatternFlowTcpCtlAck { + if x != nil { + return x.CtlAck } - return mi.MessageOf(x) + return nil } -// Deprecated: Use LldpChassisMacSubType.ProtoReflect.Descriptor instead. -func (*LldpChassisMacSubType) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{217} +func (x *FlowTcp) GetCtlPsh() *PatternFlowTcpCtlPsh { + if x != nil { + return x.CtlPsh + } + return nil } -func (x *LldpChassisMacSubType) GetChoice() LldpChassisMacSubType_Choice_Enum { - if x != nil && x.Choice != nil { - return *x.Choice +func (x *FlowTcp) GetCtlRst() *PatternFlowTcpCtlRst { + if x != nil { + return x.CtlRst } - return LldpChassisMacSubType_Choice_unspecified + return nil } -func (x *LldpChassisMacSubType) GetAuto() string { - if x != nil && x.Auto != nil { - return *x.Auto +func (x *FlowTcp) GetCtlSyn() *PatternFlowTcpCtlSyn { + if x != nil { + return x.CtlSyn } - return "" + return nil } -func (x *LldpChassisMacSubType) GetValue() string { - if x != nil && x.Value != nil { - return *x.Value +func (x *FlowTcp) GetCtlFin() *PatternFlowTcpCtlFin { + if x != nil { + return x.CtlFin } - return "" + return nil } -// The interface name configured in the Port ID TLV. -type LldpPortInterfaceNameSubType struct { +func (x *FlowTcp) GetWindow() *PatternFlowTcpWindow { + if x != nil { + return x.Window + } + return nil +} + +// UDP packet header +type FlowUdp struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // In auto mode the system generated value is set for this property, while if the choice - // is selected as value, a user configured value will be used for this property. - // default = Choice.Enum.auto - Choice *LldpPortInterfaceNameSubType_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.LldpPortInterfaceNameSubType_Choice_Enum,oneof" json:"choice,omitempty"` - // The OTG implementation must provide a system generated value for this property. - Auto *string `protobuf:"bytes,2,opt,name=auto,proto3,oneof" json:"auto,omitempty"` - // User must specify a value if mode is not auto. - Value *string `protobuf:"bytes,3,opt,name=value,proto3,oneof" json:"value,omitempty"` + // Description missing in models + SrcPort *PatternFlowUdpSrcPort `protobuf:"bytes,1,opt,name=src_port,json=srcPort,proto3" json:"src_port,omitempty"` + // Description missing in models + DstPort *PatternFlowUdpDstPort `protobuf:"bytes,2,opt,name=dst_port,json=dstPort,proto3" json:"dst_port,omitempty"` + // Description missing in models + Length *PatternFlowUdpLength `protobuf:"bytes,3,opt,name=length,proto3" json:"length,omitempty"` + // Description missing in models + Checksum *PatternFlowUdpChecksum `protobuf:"bytes,4,opt,name=checksum,proto3" json:"checksum,omitempty"` } -func (x *LldpPortInterfaceNameSubType) Reset() { - *x = LldpPortInterfaceNameSubType{} +func (x *FlowUdp) Reset() { + *x = FlowUdp{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[218] + mi := &file_otg_proto_msgTypes[176] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *LldpPortInterfaceNameSubType) String() string { +func (x *FlowUdp) String() string { return protoimpl.X.MessageStringOf(x) } -func (*LldpPortInterfaceNameSubType) ProtoMessage() {} +func (*FlowUdp) ProtoMessage() {} -func (x *LldpPortInterfaceNameSubType) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[218] +func (x *FlowUdp) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[176] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -37289,65 +36997,76 @@ func (x *LldpPortInterfaceNameSubType) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use LldpPortInterfaceNameSubType.ProtoReflect.Descriptor instead. -func (*LldpPortInterfaceNameSubType) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{218} +// Deprecated: Use FlowUdp.ProtoReflect.Descriptor instead. +func (*FlowUdp) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{176} } -func (x *LldpPortInterfaceNameSubType) GetChoice() LldpPortInterfaceNameSubType_Choice_Enum { - if x != nil && x.Choice != nil { - return *x.Choice +func (x *FlowUdp) GetSrcPort() *PatternFlowUdpSrcPort { + if x != nil { + return x.SrcPort } - return LldpPortInterfaceNameSubType_Choice_unspecified + return nil } -func (x *LldpPortInterfaceNameSubType) GetAuto() string { - if x != nil && x.Auto != nil { - return *x.Auto +func (x *FlowUdp) GetDstPort() *PatternFlowUdpDstPort { + if x != nil { + return x.DstPort } - return "" + return nil } -func (x *LldpPortInterfaceNameSubType) GetValue() string { - if x != nil && x.Value != nil { - return *x.Value +func (x *FlowUdp) GetLength() *PatternFlowUdpLength { + if x != nil { + return x.Length } - return "" + return nil } -// The system Name configured in the System Name TLV. -type LldpSystemName struct { +func (x *FlowUdp) GetChecksum() *PatternFlowUdpChecksum { + if x != nil { + return x.Checksum + } + return nil +} + +// Standard GRE packet header (RFC2784) +type FlowGre struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // In auto mode the system generated value is set for this property, while if the choice - // is selected as value, a user configured value will be used for this property. - // default = Choice.Enum.auto - Choice *LldpSystemName_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.LldpSystemName_Choice_Enum,oneof" json:"choice,omitempty"` - // The OTG implementation must provide a system generated value for this property. - Auto *string `protobuf:"bytes,2,opt,name=auto,proto3,oneof" json:"auto,omitempty"` - // User must specify a value if mode is not auto. - Value *string `protobuf:"bytes,3,opt,name=value,proto3,oneof" json:"value,omitempty"` + // Description missing in models + ChecksumPresent *PatternFlowGreChecksumPresent `protobuf:"bytes,1,opt,name=checksum_present,json=checksumPresent,proto3" json:"checksum_present,omitempty"` + // Description missing in models + Reserved0 *PatternFlowGreReserved0 `protobuf:"bytes,2,opt,name=reserved0,proto3" json:"reserved0,omitempty"` + // Description missing in models + Version *PatternFlowGreVersion `protobuf:"bytes,3,opt,name=version,proto3" json:"version,omitempty"` + // Description missing in models + Protocol *PatternFlowGreProtocol `protobuf:"bytes,4,opt,name=protocol,proto3" json:"protocol,omitempty"` + // Description missing in models + Checksum *PatternFlowGreChecksum `protobuf:"bytes,5,opt,name=checksum,proto3" json:"checksum,omitempty"` + // Description missing in models + Reserved1 *PatternFlowGreReserved1 `protobuf:"bytes,6,opt,name=reserved1,proto3" json:"reserved1,omitempty"` } -func (x *LldpSystemName) Reset() { - *x = LldpSystemName{} +func (x *FlowGre) Reset() { + *x = FlowGre{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[219] + mi := &file_otg_proto_msgTypes[177] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *LldpSystemName) String() string { +func (x *FlowGre) String() string { return protoimpl.X.MessageStringOf(x) } -func (*LldpSystemName) ProtoMessage() {} +func (*FlowGre) ProtoMessage() {} -func (x *LldpSystemName) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[219] +func (x *FlowGre) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[177] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -37358,71 +37077,104 @@ func (x *LldpSystemName) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use LldpSystemName.ProtoReflect.Descriptor instead. -func (*LldpSystemName) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{219} +// Deprecated: Use FlowGre.ProtoReflect.Descriptor instead. +func (*FlowGre) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{177} } -func (x *LldpSystemName) GetChoice() LldpSystemName_Choice_Enum { - if x != nil && x.Choice != nil { - return *x.Choice +func (x *FlowGre) GetChecksumPresent() *PatternFlowGreChecksumPresent { + if x != nil { + return x.ChecksumPresent } - return LldpSystemName_Choice_unspecified + return nil } -func (x *LldpSystemName) GetAuto() string { - if x != nil && x.Auto != nil { - return *x.Auto +func (x *FlowGre) GetReserved0() *PatternFlowGreReserved0 { + if x != nil { + return x.Reserved0 } - return "" + return nil } -func (x *LldpSystemName) GetValue() string { - if x != nil && x.Value != nil { - return *x.Value +func (x *FlowGre) GetVersion() *PatternFlowGreVersion { + if x != nil { + return x.Version } - return "" + return nil } -// Error response generated while serving API request. -type Error struct { +func (x *FlowGre) GetProtocol() *PatternFlowGreProtocol { + if x != nil { + return x.Protocol + } + return nil +} + +func (x *FlowGre) GetChecksum() *PatternFlowGreChecksum { + if x != nil { + return x.Checksum + } + return nil +} + +func (x *FlowGre) GetReserved1() *PatternFlowGreReserved1 { + if x != nil { + return x.Reserved1 + } + return nil +} + +// GTPv1 packet header +type FlowGtpv1 struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Numeric status code based on the underlying transport being used. - // The API server MUST set this code explicitly based on following references: - // - HTTP 4xx errors: https://datatracker.ietf.org/doc/html/rfc9110#section-15.5 - // - HTTP 5xx errors: https://datatracker.ietf.org/doc/html/rfc9110#section-15.6 - // - gRPC errors: https://grpc.github.io/grpc/core/md_doc_statuscodes.html - // required = true - Code *int32 `protobuf:"varint,1,opt,name=code,proto3,oneof" json:"code,omitempty"` - // Classification of error originating from within API server that may not be mapped - // to the value in `code`. - // Absence of this field may indicate that the error did not originate from within API - // server. - Kind *Error_Kind_Enum `protobuf:"varint,2,opt,name=kind,proto3,enum=otg.Error_Kind_Enum,oneof" json:"kind,omitempty"` - // List of error messages generated while executing the request. - Errors []string `protobuf:"bytes,3,rep,name=errors,proto3" json:"errors,omitempty"` + // Description missing in models + Version *PatternFlowGtpv1Version `protobuf:"bytes,1,opt,name=version,proto3" json:"version,omitempty"` + // Description missing in models + ProtocolType *PatternFlowGtpv1ProtocolType `protobuf:"bytes,2,opt,name=protocol_type,json=protocolType,proto3" json:"protocol_type,omitempty"` + // Description missing in models + Reserved *PatternFlowGtpv1Reserved `protobuf:"bytes,3,opt,name=reserved,proto3" json:"reserved,omitempty"` + // Description missing in models + EFlag *PatternFlowGtpv1EFlag `protobuf:"bytes,4,opt,name=e_flag,json=eFlag,proto3" json:"e_flag,omitempty"` + // Description missing in models + SFlag *PatternFlowGtpv1SFlag `protobuf:"bytes,5,opt,name=s_flag,json=sFlag,proto3" json:"s_flag,omitempty"` + // Description missing in models + PnFlag *PatternFlowGtpv1PnFlag `protobuf:"bytes,6,opt,name=pn_flag,json=pnFlag,proto3" json:"pn_flag,omitempty"` + // Description missing in models + MessageType *PatternFlowGtpv1MessageType `protobuf:"bytes,7,opt,name=message_type,json=messageType,proto3" json:"message_type,omitempty"` + // Description missing in models + MessageLength *PatternFlowGtpv1MessageLength `protobuf:"bytes,8,opt,name=message_length,json=messageLength,proto3" json:"message_length,omitempty"` + // Description missing in models + Teid *PatternFlowGtpv1Teid `protobuf:"bytes,9,opt,name=teid,proto3" json:"teid,omitempty"` + // Description missing in models + SquenceNumber *PatternFlowGtpv1SquenceNumber `protobuf:"bytes,10,opt,name=squence_number,json=squenceNumber,proto3" json:"squence_number,omitempty"` + // Description missing in models + NPduNumber *PatternFlowGtpv1NPduNumber `protobuf:"bytes,11,opt,name=n_pdu_number,json=nPduNumber,proto3" json:"n_pdu_number,omitempty"` + // Description missing in models + NextExtensionHeaderType *PatternFlowGtpv1NextExtensionHeaderType `protobuf:"bytes,12,opt,name=next_extension_header_type,json=nextExtensionHeaderType,proto3" json:"next_extension_header_type,omitempty"` + // A list of optional extension headers. + ExtensionHeaders []*FlowGtpExtension `protobuf:"bytes,13,rep,name=extension_headers,json=extensionHeaders,proto3" json:"extension_headers,omitempty"` } -func (x *Error) Reset() { - *x = Error{} +func (x *FlowGtpv1) Reset() { + *x = FlowGtpv1{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[220] + mi := &file_otg_proto_msgTypes[178] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *Error) String() string { +func (x *FlowGtpv1) String() string { return protoimpl.X.MessageStringOf(x) } -func (*Error) ProtoMessage() {} +func (*FlowGtpv1) ProtoMessage() {} -func (x *Error) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[220] +func (x *FlowGtpv1) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[178] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -37433,170 +37185,133 @@ func (x *Error) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use Error.ProtoReflect.Descriptor instead. -func (*Error) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{220} +// Deprecated: Use FlowGtpv1.ProtoReflect.Descriptor instead. +func (*FlowGtpv1) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{178} } -func (x *Error) GetCode() int32 { - if x != nil && x.Code != nil { - return *x.Code +func (x *FlowGtpv1) GetVersion() *PatternFlowGtpv1Version { + if x != nil { + return x.Version } - return 0 + return nil } -func (x *Error) GetKind() Error_Kind_Enum { - if x != nil && x.Kind != nil { - return *x.Kind +func (x *FlowGtpv1) GetProtocolType() *PatternFlowGtpv1ProtocolType { + if x != nil { + return x.ProtocolType } - return Error_Kind_unspecified + return nil } -func (x *Error) GetErrors() []string { +func (x *FlowGtpv1) GetReserved() *PatternFlowGtpv1Reserved { if x != nil { - return x.Errors + return x.Reserved } return nil } -// A list of warnings that have occurred while executing the request. -type Warning struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // A list of any system specific warnings that have occurred while - // executing the request. - Warnings []string `protobuf:"bytes,1,rep,name=warnings,proto3" json:"warnings,omitempty"` -} - -func (x *Warning) Reset() { - *x = Warning{} - if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[221] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) +func (x *FlowGtpv1) GetEFlag() *PatternFlowGtpv1EFlag { + if x != nil { + return x.EFlag } + return nil } -func (x *Warning) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*Warning) ProtoMessage() {} - -func (x *Warning) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[221] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms +func (x *FlowGtpv1) GetSFlag() *PatternFlowGtpv1SFlag { + if x != nil { + return x.SFlag } - return mi.MessageOf(x) -} - -// Deprecated: Use Warning.ProtoReflect.Descriptor instead. -func (*Warning) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{221} + return nil } -func (x *Warning) GetWarnings() []string { +func (x *FlowGtpv1) GetPnFlag() *PatternFlowGtpv1PnFlag { if x != nil { - return x.Warnings + return x.PnFlag } return nil } -// Request for updating specific attributes of resources in traffic generator -type ConfigUpdate struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // Description missing in models - Choice *ConfigUpdate_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.ConfigUpdate_Choice_Enum,oneof" json:"choice,omitempty"` - // Description missing in models - Flows *FlowsUpdate `protobuf:"bytes,2,opt,name=flows,proto3" json:"flows,omitempty"` +func (x *FlowGtpv1) GetMessageType() *PatternFlowGtpv1MessageType { + if x != nil { + return x.MessageType + } + return nil } -func (x *ConfigUpdate) Reset() { - *x = ConfigUpdate{} - if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[222] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) +func (x *FlowGtpv1) GetMessageLength() *PatternFlowGtpv1MessageLength { + if x != nil { + return x.MessageLength } + return nil } -func (x *ConfigUpdate) String() string { - return protoimpl.X.MessageStringOf(x) +func (x *FlowGtpv1) GetTeid() *PatternFlowGtpv1Teid { + if x != nil { + return x.Teid + } + return nil } -func (*ConfigUpdate) ProtoMessage() {} - -func (x *ConfigUpdate) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[222] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms +func (x *FlowGtpv1) GetSquenceNumber() *PatternFlowGtpv1SquenceNumber { + if x != nil { + return x.SquenceNumber } - return mi.MessageOf(x) + return nil } -// Deprecated: Use ConfigUpdate.ProtoReflect.Descriptor instead. -func (*ConfigUpdate) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{222} +func (x *FlowGtpv1) GetNPduNumber() *PatternFlowGtpv1NPduNumber { + if x != nil { + return x.NPduNumber + } + return nil } -func (x *ConfigUpdate) GetChoice() ConfigUpdate_Choice_Enum { - if x != nil && x.Choice != nil { - return *x.Choice +func (x *FlowGtpv1) GetNextExtensionHeaderType() *PatternFlowGtpv1NextExtensionHeaderType { + if x != nil { + return x.NextExtensionHeaderType } - return ConfigUpdate_Choice_unspecified + return nil } -func (x *ConfigUpdate) GetFlows() *FlowsUpdate { +func (x *FlowGtpv1) GetExtensionHeaders() []*FlowGtpExtension { if x != nil { - return x.Flows + return x.ExtensionHeaders } return nil } -// A container of flows with associated properties to be updated without affecting the -// flows current transmit state. -type FlowsUpdate struct { +// Description missing in models +type FlowGtpExtension struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Flow properties to be updated without affecting the transmit state. - PropertyNames []FlowsUpdate_PropertyNames_Enum `protobuf:"varint,1,rep,packed,name=property_names,json=propertyNames,proto3,enum=otg.FlowsUpdate_PropertyNames_Enum" json:"property_names,omitempty"` - // The list of configured flows for which given property will be updated. - Flows []*Flow `protobuf:"bytes,2,rep,name=flows,proto3" json:"flows,omitempty"` + // Description missing in models + ExtensionLength *PatternFlowGtpExtensionExtensionLength `protobuf:"bytes,1,opt,name=extension_length,json=extensionLength,proto3" json:"extension_length,omitempty"` + // Description missing in models + Contents *PatternFlowGtpExtensionContents `protobuf:"bytes,2,opt,name=contents,proto3" json:"contents,omitempty"` + // Description missing in models + NextExtensionHeader *PatternFlowGtpExtensionNextExtensionHeader `protobuf:"bytes,3,opt,name=next_extension_header,json=nextExtensionHeader,proto3" json:"next_extension_header,omitempty"` } -func (x *FlowsUpdate) Reset() { - *x = FlowsUpdate{} +func (x *FlowGtpExtension) Reset() { + *x = FlowGtpExtension{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[223] + mi := &file_otg_proto_msgTypes[179] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *FlowsUpdate) String() string { +func (x *FlowGtpExtension) String() string { return protoimpl.X.MessageStringOf(x) } -func (*FlowsUpdate) ProtoMessage() {} +func (*FlowGtpExtension) ProtoMessage() {} -func (x *FlowsUpdate) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[223] +func (x *FlowGtpExtension) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[179] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -37607,59 +37322,75 @@ func (x *FlowsUpdate) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use FlowsUpdate.ProtoReflect.Descriptor instead. -func (*FlowsUpdate) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{223} +// Deprecated: Use FlowGtpExtension.ProtoReflect.Descriptor instead. +func (*FlowGtpExtension) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{179} } -func (x *FlowsUpdate) GetPropertyNames() []FlowsUpdate_PropertyNames_Enum { +func (x *FlowGtpExtension) GetExtensionLength() *PatternFlowGtpExtensionExtensionLength { if x != nil { - return x.PropertyNames + return x.ExtensionLength } return nil } -func (x *FlowsUpdate) GetFlows() []*Flow { +func (x *FlowGtpExtension) GetContents() *PatternFlowGtpExtensionContents { if x != nil { - return x.Flows + return x.Contents } return nil } -// Request for setting operational state of configured resources. -type ControlState struct { - state protoimpl.MessageState +func (x *FlowGtpExtension) GetNextExtensionHeader() *PatternFlowGtpExtensionNextExtensionHeader { + if x != nil { + return x.NextExtensionHeader + } + return nil +} + +// GTPv2 packet header +type FlowGtpv2 struct { + state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // Description missing in models - // required = true - Choice *ControlState_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.ControlState_Choice_Enum,oneof" json:"choice,omitempty"` + Version *PatternFlowGtpv2Version `protobuf:"bytes,1,opt,name=version,proto3" json:"version,omitempty"` // Description missing in models - Port *StatePort `protobuf:"bytes,2,opt,name=port,proto3" json:"port,omitempty"` + PiggybackingFlag *PatternFlowGtpv2PiggybackingFlag `protobuf:"bytes,2,opt,name=piggybacking_flag,json=piggybackingFlag,proto3" json:"piggybacking_flag,omitempty"` // Description missing in models - Protocol *StateProtocol `protobuf:"bytes,3,opt,name=protocol,proto3" json:"protocol,omitempty"` + TeidFlag *PatternFlowGtpv2TeidFlag `protobuf:"bytes,3,opt,name=teid_flag,json=teidFlag,proto3" json:"teid_flag,omitempty"` // Description missing in models - Traffic *StateTraffic `protobuf:"bytes,4,opt,name=traffic,proto3" json:"traffic,omitempty"` + Spare1 *PatternFlowGtpv2Spare1 `protobuf:"bytes,4,opt,name=spare1,proto3" json:"spare1,omitempty"` + // Description missing in models + MessageType *PatternFlowGtpv2MessageType `protobuf:"bytes,5,opt,name=message_type,json=messageType,proto3" json:"message_type,omitempty"` + // Description missing in models + MessageLength *PatternFlowGtpv2MessageLength `protobuf:"bytes,6,opt,name=message_length,json=messageLength,proto3" json:"message_length,omitempty"` + // Description missing in models + Teid *PatternFlowGtpv2Teid `protobuf:"bytes,7,opt,name=teid,proto3" json:"teid,omitempty"` + // Description missing in models + SequenceNumber *PatternFlowGtpv2SequenceNumber `protobuf:"bytes,8,opt,name=sequence_number,json=sequenceNumber,proto3" json:"sequence_number,omitempty"` + // Description missing in models + Spare2 *PatternFlowGtpv2Spare2 `protobuf:"bytes,9,opt,name=spare2,proto3" json:"spare2,omitempty"` } -func (x *ControlState) Reset() { - *x = ControlState{} +func (x *FlowGtpv2) Reset() { + *x = FlowGtpv2{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[224] + mi := &file_otg_proto_msgTypes[180] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *ControlState) String() string { +func (x *FlowGtpv2) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ControlState) ProtoMessage() {} +func (*FlowGtpv2) ProtoMessage() {} -func (x *ControlState) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[224] +func (x *FlowGtpv2) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[180] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -37670,71 +37401,117 @@ func (x *ControlState) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use ControlState.ProtoReflect.Descriptor instead. -func (*ControlState) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{224} +// Deprecated: Use FlowGtpv2.ProtoReflect.Descriptor instead. +func (*FlowGtpv2) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{180} } -func (x *ControlState) GetChoice() ControlState_Choice_Enum { - if x != nil && x.Choice != nil { - return *x.Choice +func (x *FlowGtpv2) GetVersion() *PatternFlowGtpv2Version { + if x != nil { + return x.Version } - return ControlState_Choice_unspecified + return nil } -func (x *ControlState) GetPort() *StatePort { +func (x *FlowGtpv2) GetPiggybackingFlag() *PatternFlowGtpv2PiggybackingFlag { if x != nil { - return x.Port + return x.PiggybackingFlag } return nil } -func (x *ControlState) GetProtocol() *StateProtocol { +func (x *FlowGtpv2) GetTeidFlag() *PatternFlowGtpv2TeidFlag { if x != nil { - return x.Protocol + return x.TeidFlag } return nil } -func (x *ControlState) GetTraffic() *StateTraffic { +func (x *FlowGtpv2) GetSpare1() *PatternFlowGtpv2Spare1 { if x != nil { - return x.Traffic + return x.Spare1 } return nil } -// States associated with configured ports. -type StatePort struct { +func (x *FlowGtpv2) GetMessageType() *PatternFlowGtpv2MessageType { + if x != nil { + return x.MessageType + } + return nil +} + +func (x *FlowGtpv2) GetMessageLength() *PatternFlowGtpv2MessageLength { + if x != nil { + return x.MessageLength + } + return nil +} + +func (x *FlowGtpv2) GetTeid() *PatternFlowGtpv2Teid { + if x != nil { + return x.Teid + } + return nil +} + +func (x *FlowGtpv2) GetSequenceNumber() *PatternFlowGtpv2SequenceNumber { + if x != nil { + return x.SequenceNumber + } + return nil +} + +func (x *FlowGtpv2) GetSpare2() *PatternFlowGtpv2Spare2 { + if x != nil { + return x.Spare2 + } + return nil +} + +// ARP packet header +type FlowArp struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // Description missing in models - // required = true - Choice *StatePort_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.StatePort_Choice_Enum,oneof" json:"choice,omitempty"` + HardwareType *PatternFlowArpHardwareType `protobuf:"bytes,1,opt,name=hardware_type,json=hardwareType,proto3" json:"hardware_type,omitempty"` // Description missing in models - Link *StatePortLink `protobuf:"bytes,2,opt,name=link,proto3" json:"link,omitempty"` + ProtocolType *PatternFlowArpProtocolType `protobuf:"bytes,2,opt,name=protocol_type,json=protocolType,proto3" json:"protocol_type,omitempty"` // Description missing in models - Capture *StatePortCapture `protobuf:"bytes,3,opt,name=capture,proto3" json:"capture,omitempty"` + HardwareLength *PatternFlowArpHardwareLength `protobuf:"bytes,3,opt,name=hardware_length,json=hardwareLength,proto3" json:"hardware_length,omitempty"` + // Description missing in models + ProtocolLength *PatternFlowArpProtocolLength `protobuf:"bytes,4,opt,name=protocol_length,json=protocolLength,proto3" json:"protocol_length,omitempty"` + // Description missing in models + Operation *PatternFlowArpOperation `protobuf:"bytes,5,opt,name=operation,proto3" json:"operation,omitempty"` + // Description missing in models + SenderHardwareAddr *PatternFlowArpSenderHardwareAddr `protobuf:"bytes,6,opt,name=sender_hardware_addr,json=senderHardwareAddr,proto3" json:"sender_hardware_addr,omitempty"` + // Description missing in models + SenderProtocolAddr *PatternFlowArpSenderProtocolAddr `protobuf:"bytes,7,opt,name=sender_protocol_addr,json=senderProtocolAddr,proto3" json:"sender_protocol_addr,omitempty"` + // Description missing in models + TargetHardwareAddr *PatternFlowArpTargetHardwareAddr `protobuf:"bytes,8,opt,name=target_hardware_addr,json=targetHardwareAddr,proto3" json:"target_hardware_addr,omitempty"` + // Description missing in models + TargetProtocolAddr *PatternFlowArpTargetProtocolAddr `protobuf:"bytes,9,opt,name=target_protocol_addr,json=targetProtocolAddr,proto3" json:"target_protocol_addr,omitempty"` } -func (x *StatePort) Reset() { - *x = StatePort{} +func (x *FlowArp) Reset() { + *x = FlowArp{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[225] + mi := &file_otg_proto_msgTypes[181] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *StatePort) String() string { +func (x *FlowArp) String() string { return protoimpl.X.MessageStringOf(x) } -func (*StatePort) ProtoMessage() {} +func (*FlowArp) ProtoMessage() {} -func (x *StatePort) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[225] +func (x *FlowArp) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[181] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -37745,62 +37522,104 @@ func (x *StatePort) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use StatePort.ProtoReflect.Descriptor instead. -func (*StatePort) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{225} +// Deprecated: Use FlowArp.ProtoReflect.Descriptor instead. +func (*FlowArp) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{181} } -func (x *StatePort) GetChoice() StatePort_Choice_Enum { - if x != nil && x.Choice != nil { - return *x.Choice +func (x *FlowArp) GetHardwareType() *PatternFlowArpHardwareType { + if x != nil { + return x.HardwareType } - return StatePort_Choice_unspecified + return nil } -func (x *StatePort) GetLink() *StatePortLink { +func (x *FlowArp) GetProtocolType() *PatternFlowArpProtocolType { if x != nil { - return x.Link + return x.ProtocolType } return nil } -func (x *StatePort) GetCapture() *StatePortCapture { +func (x *FlowArp) GetHardwareLength() *PatternFlowArpHardwareLength { if x != nil { - return x.Capture + return x.HardwareLength } return nil } -// States associated with configured flows -type StateTraffic struct { +func (x *FlowArp) GetProtocolLength() *PatternFlowArpProtocolLength { + if x != nil { + return x.ProtocolLength + } + return nil +} + +func (x *FlowArp) GetOperation() *PatternFlowArpOperation { + if x != nil { + return x.Operation + } + return nil +} + +func (x *FlowArp) GetSenderHardwareAddr() *PatternFlowArpSenderHardwareAddr { + if x != nil { + return x.SenderHardwareAddr + } + return nil +} + +func (x *FlowArp) GetSenderProtocolAddr() *PatternFlowArpSenderProtocolAddr { + if x != nil { + return x.SenderProtocolAddr + } + return nil +} + +func (x *FlowArp) GetTargetHardwareAddr() *PatternFlowArpTargetHardwareAddr { + if x != nil { + return x.TargetHardwareAddr + } + return nil +} + +func (x *FlowArp) GetTargetProtocolAddr() *PatternFlowArpTargetProtocolAddr { + if x != nil { + return x.TargetProtocolAddr + } + return nil +} + +// ICMP packet header +type FlowIcmp struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // Description missing in models - // required = true - Choice *StateTraffic_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.StateTraffic_Choice_Enum,oneof" json:"choice,omitempty"` + // default = Choice.Enum.echo + Choice *FlowIcmp_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.FlowIcmp_Choice_Enum,oneof" json:"choice,omitempty"` // Description missing in models - FlowTransmit *StateTrafficFlowTransmit `protobuf:"bytes,2,opt,name=flow_transmit,json=flowTransmit,proto3" json:"flow_transmit,omitempty"` + Echo *FlowIcmpEcho `protobuf:"bytes,2,opt,name=echo,proto3" json:"echo,omitempty"` } -func (x *StateTraffic) Reset() { - *x = StateTraffic{} +func (x *FlowIcmp) Reset() { + *x = FlowIcmp{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[226] + mi := &file_otg_proto_msgTypes[182] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *StateTraffic) String() string { +func (x *FlowIcmp) String() string { return protoimpl.X.MessageStringOf(x) } -func (*StateTraffic) ProtoMessage() {} +func (*FlowIcmp) ProtoMessage() {} -func (x *StateTraffic) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[226] +func (x *FlowIcmp) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[182] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -37811,63 +37630,60 @@ func (x *StateTraffic) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use StateTraffic.ProtoReflect.Descriptor instead. -func (*StateTraffic) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{226} +// Deprecated: Use FlowIcmp.ProtoReflect.Descriptor instead. +func (*FlowIcmp) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{182} } -func (x *StateTraffic) GetChoice() StateTraffic_Choice_Enum { +func (x *FlowIcmp) GetChoice() FlowIcmp_Choice_Enum { if x != nil && x.Choice != nil { return *x.Choice } - return StateTraffic_Choice_unspecified + return FlowIcmp_Choice_unspecified } -func (x *StateTraffic) GetFlowTransmit() *StateTrafficFlowTransmit { +func (x *FlowIcmp) GetEcho() *FlowIcmpEcho { if x != nil { - return x.FlowTransmit + return x.Echo } return nil } -// States associated with protocols on configured resources. -type StateProtocol struct { +// Packet Header for ICMP echo request +type FlowIcmpEcho struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // Description missing in models - // required = true - Choice *StateProtocol_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.StateProtocol_Choice_Enum,oneof" json:"choice,omitempty"` - // Description missing in models - All *StateProtocolAll `protobuf:"bytes,2,opt,name=all,proto3" json:"all,omitempty"` + Type *PatternFlowIcmpEchoType `protobuf:"bytes,1,opt,name=type,proto3" json:"type,omitempty"` // Description missing in models - Route *StateProtocolRoute `protobuf:"bytes,3,opt,name=route,proto3" json:"route,omitempty"` + Code *PatternFlowIcmpEchoCode `protobuf:"bytes,2,opt,name=code,proto3" json:"code,omitempty"` // Description missing in models - Lacp *StateProtocolLacp `protobuf:"bytes,4,opt,name=lacp,proto3" json:"lacp,omitempty"` + Checksum *PatternFlowIcmpEchoChecksum `protobuf:"bytes,3,opt,name=checksum,proto3" json:"checksum,omitempty"` // Description missing in models - Bgp *StateProtocolBgp `protobuf:"bytes,5,opt,name=bgp,proto3" json:"bgp,omitempty"` + Identifier *PatternFlowIcmpEchoIdentifier `protobuf:"bytes,4,opt,name=identifier,proto3" json:"identifier,omitempty"` // Description missing in models - Isis *StateProtocolIsis `protobuf:"bytes,6,opt,name=isis,proto3" json:"isis,omitempty"` + SequenceNumber *PatternFlowIcmpEchoSequenceNumber `protobuf:"bytes,5,opt,name=sequence_number,json=sequenceNumber,proto3" json:"sequence_number,omitempty"` } -func (x *StateProtocol) Reset() { - *x = StateProtocol{} +func (x *FlowIcmpEcho) Reset() { + *x = FlowIcmpEcho{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[227] + mi := &file_otg_proto_msgTypes[183] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *StateProtocol) String() string { +func (x *FlowIcmpEcho) String() string { return protoimpl.X.MessageStringOf(x) } -func (*StateProtocol) ProtoMessage() {} +func (*FlowIcmpEcho) ProtoMessage() {} -func (x *StateProtocol) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[227] +func (x *FlowIcmpEcho) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[183] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -37878,89 +37694,76 @@ func (x *StateProtocol) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use StateProtocol.ProtoReflect.Descriptor instead. -func (*StateProtocol) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{227} -} - -func (x *StateProtocol) GetChoice() StateProtocol_Choice_Enum { - if x != nil && x.Choice != nil { - return *x.Choice - } - return StateProtocol_Choice_unspecified +// Deprecated: Use FlowIcmpEcho.ProtoReflect.Descriptor instead. +func (*FlowIcmpEcho) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{183} } -func (x *StateProtocol) GetAll() *StateProtocolAll { +func (x *FlowIcmpEcho) GetType() *PatternFlowIcmpEchoType { if x != nil { - return x.All + return x.Type } return nil } -func (x *StateProtocol) GetRoute() *StateProtocolRoute { +func (x *FlowIcmpEcho) GetCode() *PatternFlowIcmpEchoCode { if x != nil { - return x.Route + return x.Code } return nil } -func (x *StateProtocol) GetLacp() *StateProtocolLacp { +func (x *FlowIcmpEcho) GetChecksum() *PatternFlowIcmpEchoChecksum { if x != nil { - return x.Lacp + return x.Checksum } return nil } -func (x *StateProtocol) GetBgp() *StateProtocolBgp { +func (x *FlowIcmpEcho) GetIdentifier() *PatternFlowIcmpEchoIdentifier { if x != nil { - return x.Bgp + return x.Identifier } return nil } -func (x *StateProtocol) GetIsis() *StateProtocolIsis { +func (x *FlowIcmpEcho) GetSequenceNumber() *PatternFlowIcmpEchoSequenceNumber { if x != nil { - return x.Isis + return x.SequenceNumber } return nil } -// Sets the link of configured ports. -type StatePortLink struct { +// ICMPv6 packet header +type FlowIcmpv6 struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // The names of target ports. An empty or null list will target all ports. - // - // x-constraint: - // - /components/schemas/Port/properties/name - // - // x-constraint: - // - /components/schemas/Port/properties/name - PortNames []string `protobuf:"bytes,1,rep,name=port_names,json=portNames,proto3" json:"port_names,omitempty"` - // The link state. - // required = true - State *StatePortLink_State_Enum `protobuf:"varint,2,opt,name=state,proto3,enum=otg.StatePortLink_State_Enum,oneof" json:"state,omitempty"` + // Description missing in models + // default = Choice.Enum.echo + Choice *FlowIcmpv6_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.FlowIcmpv6_Choice_Enum,oneof" json:"choice,omitempty"` + // Description missing in models + Echo *FlowIcmpv6Echo `protobuf:"bytes,2,opt,name=echo,proto3" json:"echo,omitempty"` } -func (x *StatePortLink) Reset() { - *x = StatePortLink{} +func (x *FlowIcmpv6) Reset() { + *x = FlowIcmpv6{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[228] + mi := &file_otg_proto_msgTypes[184] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *StatePortLink) String() string { +func (x *FlowIcmpv6) String() string { return protoimpl.X.MessageStringOf(x) } -func (*StatePortLink) ProtoMessage() {} +func (*FlowIcmpv6) ProtoMessage() {} -func (x *StatePortLink) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[228] +func (x *FlowIcmpv6) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[184] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -37971,64 +37774,60 @@ func (x *StatePortLink) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use StatePortLink.ProtoReflect.Descriptor instead. -func (*StatePortLink) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{228} +// Deprecated: Use FlowIcmpv6.ProtoReflect.Descriptor instead. +func (*FlowIcmpv6) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{184} } -func (x *StatePortLink) GetPortNames() []string { - if x != nil { - return x.PortNames +func (x *FlowIcmpv6) GetChoice() FlowIcmpv6_Choice_Enum { + if x != nil && x.Choice != nil { + return *x.Choice } - return nil + return FlowIcmpv6_Choice_unspecified } -func (x *StatePortLink) GetState() StatePortLink_State_Enum { - if x != nil && x.State != nil { - return *x.State +func (x *FlowIcmpv6) GetEcho() *FlowIcmpv6Echo { + if x != nil { + return x.Echo } - return StatePortLink_State_unspecified + return nil } -// Sets the capture state of configured ports -type StatePortCapture struct { +// Packet Header for ICMPv6 Echo +type FlowIcmpv6Echo struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // The names of ports to which the capture state will be applied to. If the list of - // port_names is empty or null the state will be applied to all configured ports. - // If the list is not empty any port that is not included in the list of port_names - // MUST be ignored and not included in the state change. - // - // x-constraint: - // - /components/schemas/Port/properties/name - // - // x-constraint: - // - /components/schemas/Port/properties/name - PortNames []string `protobuf:"bytes,1,rep,name=port_names,json=portNames,proto3" json:"port_names,omitempty"` - // The capture state. - // required = true - State *StatePortCapture_State_Enum `protobuf:"varint,2,opt,name=state,proto3,enum=otg.StatePortCapture_State_Enum,oneof" json:"state,omitempty"` + // Description missing in models + Type *PatternFlowIcmpv6EchoType `protobuf:"bytes,1,opt,name=type,proto3" json:"type,omitempty"` + // Description missing in models + Code *PatternFlowIcmpv6EchoCode `protobuf:"bytes,2,opt,name=code,proto3" json:"code,omitempty"` + // Description missing in models + Identifier *PatternFlowIcmpv6EchoIdentifier `protobuf:"bytes,3,opt,name=identifier,proto3" json:"identifier,omitempty"` + // Description missing in models + SequenceNumber *PatternFlowIcmpv6EchoSequenceNumber `protobuf:"bytes,4,opt,name=sequence_number,json=sequenceNumber,proto3" json:"sequence_number,omitempty"` + // Description missing in models + Checksum *PatternFlowIcmpv6EchoChecksum `protobuf:"bytes,5,opt,name=checksum,proto3" json:"checksum,omitempty"` } -func (x *StatePortCapture) Reset() { - *x = StatePortCapture{} +func (x *FlowIcmpv6Echo) Reset() { + *x = FlowIcmpv6Echo{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[229] + mi := &file_otg_proto_msgTypes[185] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *StatePortCapture) String() string { +func (x *FlowIcmpv6Echo) String() string { return protoimpl.X.MessageStringOf(x) } -func (*StatePortCapture) ProtoMessage() {} +func (*FlowIcmpv6Echo) ProtoMessage() {} -func (x *StatePortCapture) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[229] +func (x *FlowIcmpv6Echo) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[185] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -38039,75 +37838,77 @@ func (x *StatePortCapture) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use StatePortCapture.ProtoReflect.Descriptor instead. -func (*StatePortCapture) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{229} +// Deprecated: Use FlowIcmpv6Echo.ProtoReflect.Descriptor instead. +func (*FlowIcmpv6Echo) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{185} } -func (x *StatePortCapture) GetPortNames() []string { +func (x *FlowIcmpv6Echo) GetType() *PatternFlowIcmpv6EchoType { if x != nil { - return x.PortNames + return x.Type } return nil } -func (x *StatePortCapture) GetState() StatePortCapture_State_Enum { - if x != nil && x.State != nil { - return *x.State +func (x *FlowIcmpv6Echo) GetCode() *PatternFlowIcmpv6EchoCode { + if x != nil { + return x.Code } - return StatePortCapture_State_unspecified + return nil } -// Provides state control of flow transmission. -type StateTrafficFlowTransmit struct { +func (x *FlowIcmpv6Echo) GetIdentifier() *PatternFlowIcmpv6EchoIdentifier { + if x != nil { + return x.Identifier + } + return nil +} + +func (x *FlowIcmpv6Echo) GetSequenceNumber() *PatternFlowIcmpv6EchoSequenceNumber { + if x != nil { + return x.SequenceNumber + } + return nil +} + +func (x *FlowIcmpv6Echo) GetChecksum() *PatternFlowIcmpv6EchoChecksum { + if x != nil { + return x.Checksum + } + return nil +} + +// PPP packet header +type FlowPpp struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // The names of flows to which the transmit state will be applied to. If the list of - // flow_names is empty or null the state will be applied to all configured flows. - // If the list is not empty any flow that is not included in the list of flow_names - // MUST be ignored and not included in the state change. - // - // x-constraint: - // - /components/schemas/Flow/properties/name - // - // x-constraint: - // - /components/schemas/Flow/properties/name - FlowNames []string `protobuf:"bytes,1,rep,name=flow_names,json=flowNames,proto3" json:"flow_names,omitempty"` - // The transmit state. - // If the value of the state property is 'start' then all flows defined by the 'flow_names' - // property will be started and the metric counters MUST be cleared prior to starting - // the flow(s). - // If the value of the state property is 'stop' then all flows defined by the 'flow_names' - // property will be stopped and the metric counters MUST NOT be cleared. - // If the value of the state property is 'pause' then all flows defined by the 'flow_names' - // property will be paused and the metric counters MUST NOT be cleared. - // If the value of the state property is 'resume' then any paused flows defined by the - // 'flow_names' property will start transmit at the point at which they were paused. - // Any flow that is stopped will start transmit at the beginning of the flow. The flow(s) - // MUST NOT have their metric counters cleared. - // required = true - State *StateTrafficFlowTransmit_State_Enum `protobuf:"varint,2,opt,name=state,proto3,enum=otg.StateTrafficFlowTransmit_State_Enum,oneof" json:"state,omitempty"` + // Description missing in models + Address *PatternFlowPppAddress `protobuf:"bytes,1,opt,name=address,proto3" json:"address,omitempty"` + // Description missing in models + Control *PatternFlowPppControl `protobuf:"bytes,2,opt,name=control,proto3" json:"control,omitempty"` + // Description missing in models + ProtocolType *PatternFlowPppProtocolType `protobuf:"bytes,3,opt,name=protocol_type,json=protocolType,proto3" json:"protocol_type,omitempty"` } -func (x *StateTrafficFlowTransmit) Reset() { - *x = StateTrafficFlowTransmit{} +func (x *FlowPpp) Reset() { + *x = FlowPpp{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[230] + mi := &file_otg_proto_msgTypes[186] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *StateTrafficFlowTransmit) String() string { +func (x *FlowPpp) String() string { return protoimpl.X.MessageStringOf(x) } -func (*StateTrafficFlowTransmit) ProtoMessage() {} +func (*FlowPpp) ProtoMessage() {} -func (x *StateTrafficFlowTransmit) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[230] +func (x *FlowPpp) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[186] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -38118,56 +37919,67 @@ func (x *StateTrafficFlowTransmit) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use StateTrafficFlowTransmit.ProtoReflect.Descriptor instead. -func (*StateTrafficFlowTransmit) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{230} +// Deprecated: Use FlowPpp.ProtoReflect.Descriptor instead. +func (*FlowPpp) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{186} } -func (x *StateTrafficFlowTransmit) GetFlowNames() []string { +func (x *FlowPpp) GetAddress() *PatternFlowPppAddress { if x != nil { - return x.FlowNames + return x.Address } return nil } -func (x *StateTrafficFlowTransmit) GetState() StateTrafficFlowTransmit_State_Enum { - if x != nil && x.State != nil { - return *x.State +func (x *FlowPpp) GetControl() *PatternFlowPppControl { + if x != nil { + return x.Control } - return StateTrafficFlowTransmit_State_unspecified + return nil } -// Sets all configured protocols to `start` or `stop` state. -// Setting protocol state to `start` shall be a no-op if preceding `set_config` API -// call was made with `config.options.protocol_options.auto_start_all` set to `true` -// or if all the configured protocols are already started. -type StateProtocolAll struct { +func (x *FlowPpp) GetProtocolType() *PatternFlowPppProtocolType { + if x != nil { + return x.ProtocolType + } + return nil +} + +// IGMPv1 packet header +type FlowIgmpv1 struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Protocol states - // required = true - State *StateProtocolAll_State_Enum `protobuf:"varint,1,opt,name=state,proto3,enum=otg.StateProtocolAll_State_Enum,oneof" json:"state,omitempty"` + // Description missing in models + Version *PatternFlowIgmpv1Version `protobuf:"bytes,1,opt,name=version,proto3" json:"version,omitempty"` + // Description missing in models + Type *PatternFlowIgmpv1Type `protobuf:"bytes,2,opt,name=type,proto3" json:"type,omitempty"` + // Description missing in models + Unused *PatternFlowIgmpv1Unused `protobuf:"bytes,3,opt,name=unused,proto3" json:"unused,omitempty"` + // Description missing in models + Checksum *PatternFlowIgmpv1Checksum `protobuf:"bytes,4,opt,name=checksum,proto3" json:"checksum,omitempty"` + // Description missing in models + GroupAddress *PatternFlowIgmpv1GroupAddress `protobuf:"bytes,5,opt,name=group_address,json=groupAddress,proto3" json:"group_address,omitempty"` } -func (x *StateProtocolAll) Reset() { - *x = StateProtocolAll{} +func (x *FlowIgmpv1) Reset() { + *x = FlowIgmpv1{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[231] + mi := &file_otg_proto_msgTypes[187] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *StateProtocolAll) String() string { +func (x *FlowIgmpv1) String() string { return protoimpl.X.MessageStringOf(x) } -func (*StateProtocolAll) ProtoMessage() {} +func (*FlowIgmpv1) ProtoMessage() {} -func (x *StateProtocolAll) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[231] +func (x *FlowIgmpv1) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[187] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -38178,61 +37990,80 @@ func (x *StateProtocolAll) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use StateProtocolAll.ProtoReflect.Descriptor instead. -func (*StateProtocolAll) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{231} +// Deprecated: Use FlowIgmpv1.ProtoReflect.Descriptor instead. +func (*FlowIgmpv1) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{187} } -func (x *StateProtocolAll) GetState() StateProtocolAll_State_Enum { - if x != nil && x.State != nil { - return *x.State +func (x *FlowIgmpv1) GetVersion() *PatternFlowIgmpv1Version { + if x != nil { + return x.Version } - return StateProtocolAll_State_unspecified + return nil } -// Sets the state of configured routes -type StateProtocolRoute struct { +func (x *FlowIgmpv1) GetType() *PatternFlowIgmpv1Type { + if x != nil { + return x.Type + } + return nil +} + +func (x *FlowIgmpv1) GetUnused() *PatternFlowIgmpv1Unused { + if x != nil { + return x.Unused + } + return nil +} + +func (x *FlowIgmpv1) GetChecksum() *PatternFlowIgmpv1Checksum { + if x != nil { + return x.Checksum + } + return nil +} + +func (x *FlowIgmpv1) GetGroupAddress() *PatternFlowIgmpv1GroupAddress { + if x != nil { + return x.GroupAddress + } + return nil +} + +// MPLS packet header; When configuring multiple such headers, the count shall not exceed +// 20. +type FlowMpls struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // The names of device route objects to control. If no names are specified then all - // route objects that match the x-constraint will be affected. - // - // x-constraint: - // - /components/schemas/Bgp.V4RouteRange/properties/name - // - /components/schemas/Bgp.V6RouteRange/properties/name - // - /components/schemas/Isis.V4RouteRange/properties/name - // - /components/schemas/Isis.V6RouteRange/properties/name - // - // x-constraint: - // - /components/schemas/Bgp.V4RouteRange/properties/name - // - /components/schemas/Bgp.V6RouteRange/properties/name - // - /components/schemas/Isis.V4RouteRange/properties/name - // - /components/schemas/Isis.V6RouteRange/properties/name - Names []string `protobuf:"bytes,1,rep,name=names,proto3" json:"names,omitempty"` - // Route states - // required = true - State *StateProtocolRoute_State_Enum `protobuf:"varint,2,opt,name=state,proto3,enum=otg.StateProtocolRoute_State_Enum,oneof" json:"state,omitempty"` + // Description missing in models + Label *PatternFlowMplsLabel `protobuf:"bytes,1,opt,name=label,proto3" json:"label,omitempty"` + // Description missing in models + TrafficClass *PatternFlowMplsTrafficClass `protobuf:"bytes,2,opt,name=traffic_class,json=trafficClass,proto3" json:"traffic_class,omitempty"` + // Description missing in models + BottomOfStack *PatternFlowMplsBottomOfStack `protobuf:"bytes,3,opt,name=bottom_of_stack,json=bottomOfStack,proto3" json:"bottom_of_stack,omitempty"` + // Description missing in models + TimeToLive *PatternFlowMplsTimeToLive `protobuf:"bytes,4,opt,name=time_to_live,json=timeToLive,proto3" json:"time_to_live,omitempty"` } -func (x *StateProtocolRoute) Reset() { - *x = StateProtocolRoute{} +func (x *FlowMpls) Reset() { + *x = FlowMpls{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[232] + mi := &file_otg_proto_msgTypes[188] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *StateProtocolRoute) String() string { +func (x *FlowMpls) String() string { return protoimpl.X.MessageStringOf(x) } -func (*StateProtocolRoute) ProtoMessage() {} +func (*FlowMpls) ProtoMessage() {} -func (x *StateProtocolRoute) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[232] +func (x *FlowMpls) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[188] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -38243,57 +38074,81 @@ func (x *StateProtocolRoute) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use StateProtocolRoute.ProtoReflect.Descriptor instead. -func (*StateProtocolRoute) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{232} +// Deprecated: Use FlowMpls.ProtoReflect.Descriptor instead. +func (*FlowMpls) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{188} } -func (x *StateProtocolRoute) GetNames() []string { +func (x *FlowMpls) GetLabel() *PatternFlowMplsLabel { if x != nil { - return x.Names + return x.Label } return nil } -func (x *StateProtocolRoute) GetState() StateProtocolRoute_State_Enum { - if x != nil && x.State != nil { - return *x.State +func (x *FlowMpls) GetTrafficClass() *PatternFlowMplsTrafficClass { + if x != nil { + return x.TrafficClass } - return StateProtocolRoute_State_unspecified + return nil } -// Sets state of configured LACP -type StateProtocolLacp struct { +func (x *FlowMpls) GetBottomOfStack() *PatternFlowMplsBottomOfStack { + if x != nil { + return x.BottomOfStack + } + return nil +} + +func (x *FlowMpls) GetTimeToLive() *PatternFlowMplsTimeToLive { + if x != nil { + return x.TimeToLive + } + return nil +} + +// RSVP packet header as defined in RFC2205 and RFC3209. Currently only supported message +// type is path with mandatory objects and sub-objects. +type FlowRsvp struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // Description missing in models - // required = true - Choice *StateProtocolLacp_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.StateProtocolLacp_Choice_Enum,oneof" json:"choice,omitempty"` + Version *PatternFlowRsvpVersion `protobuf:"bytes,1,opt,name=version,proto3" json:"version,omitempty"` + // Flag, 0x01-0x08: Reserved. + Flag *FlowRSVPFlag `protobuf:"bytes,2,opt,name=flag,proto3" json:"flag,omitempty"` // Description missing in models - Admin *StateProtocolLacpAdmin `protobuf:"bytes,2,opt,name=admin,proto3" json:"admin,omitempty"` + RsvpChecksum *PatternFlowRsvpRsvpChecksum `protobuf:"bytes,3,opt,name=rsvp_checksum,json=rsvpChecksum,proto3" json:"rsvp_checksum,omitempty"` // Description missing in models - MemberPorts *StateProtocolLacpMemberPorts `protobuf:"bytes,3,opt,name=member_ports,json=memberPorts,proto3" json:"member_ports,omitempty"` + TimeToLive *PatternFlowRsvpTimeToLive `protobuf:"bytes,4,opt,name=time_to_live,json=timeToLive,proto3" json:"time_to_live,omitempty"` + // Description missing in models + Reserved *PatternFlowRsvpReserved `protobuf:"bytes,5,opt,name=reserved,proto3" json:"reserved,omitempty"` + // The sum of the lengths of the common header and all objects included in the message. + RsvpLength *FlowRSVPLength `protobuf:"bytes,6,opt,name=rsvp_length,json=rsvpLength,proto3" json:"rsvp_length,omitempty"` + // An 8-bit number that identifies the function of the RSVP message. There are aound + // 20 message types is defined https://www.iana.org/assignments/rsvp-parameters/rsvp-parameters.xhtml#rsvp-parameters-2 + // . Among Those we are presently supporting path(value: 1) message type. + MessageType *FlowRSVPMessage `protobuf:"bytes,7,opt,name=message_type,json=messageType,proto3" json:"message_type,omitempty"` } -func (x *StateProtocolLacp) Reset() { - *x = StateProtocolLacp{} +func (x *FlowRsvp) Reset() { + *x = FlowRsvp{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[233] + mi := &file_otg_proto_msgTypes[189] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *StateProtocolLacp) String() string { +func (x *FlowRsvp) String() string { return protoimpl.X.MessageStringOf(x) } -func (*StateProtocolLacp) ProtoMessage() {} +func (*FlowRsvp) ProtoMessage() {} -func (x *StateProtocolLacp) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[233] +func (x *FlowRsvp) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[189] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -38304,71 +38159,88 @@ func (x *StateProtocolLacp) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use StateProtocolLacp.ProtoReflect.Descriptor instead. -func (*StateProtocolLacp) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{233} +// Deprecated: Use FlowRsvp.ProtoReflect.Descriptor instead. +func (*FlowRsvp) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{189} } -func (x *StateProtocolLacp) GetChoice() StateProtocolLacp_Choice_Enum { - if x != nil && x.Choice != nil { - return *x.Choice +func (x *FlowRsvp) GetVersion() *PatternFlowRsvpVersion { + if x != nil { + return x.Version } - return StateProtocolLacp_Choice_unspecified + return nil } -func (x *StateProtocolLacp) GetAdmin() *StateProtocolLacpAdmin { +func (x *FlowRsvp) GetFlag() *FlowRSVPFlag { if x != nil { - return x.Admin + return x.Flag } return nil } -func (x *StateProtocolLacp) GetMemberPorts() *StateProtocolLacpMemberPorts { +func (x *FlowRsvp) GetRsvpChecksum() *PatternFlowRsvpRsvpChecksum { if x != nil { - return x.MemberPorts + return x.RsvpChecksum } return nil } -// Sets admin state of LACP configured on LAG members -type StateProtocolLacpAdmin struct { +func (x *FlowRsvp) GetTimeToLive() *PatternFlowRsvpTimeToLive { + if x != nil { + return x.TimeToLive + } + return nil +} + +func (x *FlowRsvp) GetReserved() *PatternFlowRsvpReserved { + if x != nil { + return x.Reserved + } + return nil +} + +func (x *FlowRsvp) GetRsvpLength() *FlowRSVPLength { + if x != nil { + return x.RsvpLength + } + return nil +} + +func (x *FlowRsvp) GetMessageType() *FlowRSVPMessage { + if x != nil { + return x.MessageType + } + return nil +} + +// Description missing in models +type FlowRSVPFlag struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // The names of LAG members (ports) for which the state has to be applied. An empty - // or null list will control all LAG members. - // - // x-constraint: - // - /components/schemas/Port/properties/name - // - // x-constraint: - // - /components/schemas/Port/properties/name - LagMemberNames []string `protobuf:"bytes,1,rep,name=lag_member_names,json=lagMemberNames,proto3" json:"lag_member_names,omitempty"` - // The LACP Member admin state. 'up' will send LACPDUs with 'sync' flag set on selected - // member ports. 'down' will send LACPDUs with 'sync' flag unset on selected member - // ports. - // required = true - State *StateProtocolLacpAdmin_State_Enum `protobuf:"varint,2,opt,name=state,proto3,enum=otg.StateProtocolLacpAdmin_State_Enum,oneof" json:"state,omitempty"` + // Description missing in models + // default = Choice.Enum.not_refresh_reduction_capable + Choice *FlowRSVPFlag_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.FlowRSVPFlag_Choice_Enum,oneof" json:"choice,omitempty"` } -func (x *StateProtocolLacpAdmin) Reset() { - *x = StateProtocolLacpAdmin{} +func (x *FlowRSVPFlag) Reset() { + *x = FlowRSVPFlag{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[234] + mi := &file_otg_proto_msgTypes[190] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *StateProtocolLacpAdmin) String() string { +func (x *FlowRSVPFlag) String() string { return protoimpl.X.MessageStringOf(x) } -func (*StateProtocolLacpAdmin) ProtoMessage() {} +func (*FlowRSVPFlag) ProtoMessage() {} -func (x *StateProtocolLacpAdmin) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[234] +func (x *FlowRSVPFlag) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[190] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -38379,62 +38251,53 @@ func (x *StateProtocolLacpAdmin) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use StateProtocolLacpAdmin.ProtoReflect.Descriptor instead. -func (*StateProtocolLacpAdmin) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{234} -} - -func (x *StateProtocolLacpAdmin) GetLagMemberNames() []string { - if x != nil { - return x.LagMemberNames - } - return nil +// Deprecated: Use FlowRSVPFlag.ProtoReflect.Descriptor instead. +func (*FlowRSVPFlag) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{190} } -func (x *StateProtocolLacpAdmin) GetState() StateProtocolLacpAdmin_State_Enum { - if x != nil && x.State != nil { - return *x.State +func (x *FlowRSVPFlag) GetChoice() FlowRSVPFlag_Choice_Enum { + if x != nil && x.Choice != nil { + return *x.Choice } - return StateProtocolLacpAdmin_State_unspecified + return FlowRSVPFlag_Choice_unspecified } -// Sets state of LACP member ports configured on LAG. -type StateProtocolLacpMemberPorts struct { +// Description missing in models +type FlowRSVPLength struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // The names of LAG members (ports) for which the state has to be applied. An empty - // or null list will control all LAG members. - // - // x-constraint: - // - /components/schemas/Port/properties/name - // - // x-constraint: - // - /components/schemas/Port/properties/name - LagMemberNames []string `protobuf:"bytes,1,rep,name=lag_member_names,json=lagMemberNames,proto3" json:"lag_member_names,omitempty"` - // The desired LACP member port state. - // required = true - State *StateProtocolLacpMemberPorts_State_Enum `protobuf:"varint,2,opt,name=state,proto3,enum=otg.StateProtocolLacpMemberPorts_State_Enum,oneof" json:"state,omitempty"` + // auto or configured value. + // default = Choice.Enum.auto + Choice *FlowRSVPLength_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.FlowRSVPLength_Choice_Enum,oneof" json:"choice,omitempty"` + // The OTG implementation can provide a system generated value for this property. If + // the OTG is unable to generate a value the default value must be used. + // default = 0 + Auto *uint32 `protobuf:"varint,2,opt,name=auto,proto3,oneof" json:"auto,omitempty"` + // Description missing in models + // default = 0 + Value *uint32 `protobuf:"varint,3,opt,name=value,proto3,oneof" json:"value,omitempty"` } -func (x *StateProtocolLacpMemberPorts) Reset() { - *x = StateProtocolLacpMemberPorts{} +func (x *FlowRSVPLength) Reset() { + *x = FlowRSVPLength{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[235] + mi := &file_otg_proto_msgTypes[191] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *StateProtocolLacpMemberPorts) String() string { +func (x *FlowRSVPLength) String() string { return protoimpl.X.MessageStringOf(x) } -func (*StateProtocolLacpMemberPorts) ProtoMessage() {} +func (*FlowRSVPLength) ProtoMessage() {} -func (x *StateProtocolLacpMemberPorts) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[235] +func (x *FlowRSVPLength) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[191] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -38445,55 +38308,62 @@ func (x *StateProtocolLacpMemberPorts) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use StateProtocolLacpMemberPorts.ProtoReflect.Descriptor instead. -func (*StateProtocolLacpMemberPorts) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{235} +// Deprecated: Use FlowRSVPLength.ProtoReflect.Descriptor instead. +func (*FlowRSVPLength) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{191} } -func (x *StateProtocolLacpMemberPorts) GetLagMemberNames() []string { - if x != nil { - return x.LagMemberNames +func (x *FlowRSVPLength) GetChoice() FlowRSVPLength_Choice_Enum { + if x != nil && x.Choice != nil { + return *x.Choice } - return nil + return FlowRSVPLength_Choice_unspecified } -func (x *StateProtocolLacpMemberPorts) GetState() StateProtocolLacpMemberPorts_State_Enum { - if x != nil && x.State != nil { - return *x.State +func (x *FlowRSVPLength) GetAuto() uint32 { + if x != nil && x.Auto != nil { + return *x.Auto } - return StateProtocolLacpMemberPorts_State_unspecified + return 0 } -// Sets state of configured BGP peers. -type StateProtocolBgp struct { +func (x *FlowRSVPLength) GetValue() uint32 { + if x != nil && x.Value != nil { + return *x.Value + } + return 0 +} + +// Description missing in models +type FlowRSVPMessage struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // Description missing in models - // required = true - Choice *StateProtocolBgp_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.StateProtocolBgp_Choice_Enum,oneof" json:"choice,omitempty"` + // default = Choice.Enum.path + Choice *FlowRSVPMessage_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.FlowRSVPMessage_Choice_Enum,oneof" json:"choice,omitempty"` // Description missing in models - Peers *StateProtocolBgpPeers `protobuf:"bytes,2,opt,name=peers,proto3" json:"peers,omitempty"` + Path *FlowRSVPPathMessage `protobuf:"bytes,2,opt,name=path,proto3" json:"path,omitempty"` } -func (x *StateProtocolBgp) Reset() { - *x = StateProtocolBgp{} +func (x *FlowRSVPMessage) Reset() { + *x = FlowRSVPMessage{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[236] + mi := &file_otg_proto_msgTypes[192] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *StateProtocolBgp) String() string { +func (x *FlowRSVPMessage) String() string { return protoimpl.X.MessageStringOf(x) } -func (*StateProtocolBgp) ProtoMessage() {} +func (*FlowRSVPMessage) ProtoMessage() {} -func (x *StateProtocolBgp) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[236] +func (x *FlowRSVPMessage) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[192] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -38504,67 +38374,56 @@ func (x *StateProtocolBgp) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use StateProtocolBgp.ProtoReflect.Descriptor instead. -func (*StateProtocolBgp) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{236} +// Deprecated: Use FlowRSVPMessage.ProtoReflect.Descriptor instead. +func (*FlowRSVPMessage) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{192} } -func (x *StateProtocolBgp) GetChoice() StateProtocolBgp_Choice_Enum { +func (x *FlowRSVPMessage) GetChoice() FlowRSVPMessage_Choice_Enum { if x != nil && x.Choice != nil { return *x.Choice } - return StateProtocolBgp_Choice_unspecified + return FlowRSVPMessage_Choice_unspecified } -func (x *StateProtocolBgp) GetPeers() *StateProtocolBgpPeers { +func (x *FlowRSVPMessage) GetPath() *FlowRSVPPathMessage { if x != nil { - return x.Peers + return x.Path } return nil } -// Sets state of configured BGP peers. -type StateProtocolBgpPeers struct { +// path message required the follwoing list of objects in order as defined in https://www.rfc-editor.org/rfc/rfc3209.html#page-15: +// 1. SESSION 2. RSVP_HOP 3. TIME_VALUES 4. EXPLICIT_ROUTE [optional] 5. LABEL_REQUEST +// 6. SESSION_ATTRIBUTE [optional] 7. SENDER_TEMPLATE 8. SENDER_TSPEC 9. RECORD_ROUTE +// [optional] +type FlowRSVPPathMessage struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // The names of BGP peers for which the state has to be applied. An empty or null list - // will control all BGP peers. - // - // x-constraint: - // - /components/schemas/Bgp.V4Peer/properties/name - // - /components/schemas/Bgp.V6Peer/properties/name - // - // x-constraint: - // - /components/schemas/Bgp.V4Peer/properties/name - // - /components/schemas/Bgp.V6Peer/properties/name - PeerNames []string `protobuf:"bytes,1,rep,name=peer_names,json=peerNames,proto3" json:"peer_names,omitempty"` - // The desired state of BGP peer. If the desired state is 'up', underlying IP interface(s) - // would be brought up automatically (if not already up), would attempt to bring up - // the BGP session(s) and advertise route(s), if configured. If the desired state is - // 'down', BGP session(s) would be brought down. - // required = true - State *StateProtocolBgpPeers_State_Enum `protobuf:"varint,2,opt,name=state,proto3,enum=otg.StateProtocolBgpPeers_State_Enum,oneof" json:"state,omitempty"` + // path message required atleast SESSION, RSVP_HOP, TIME_VALUES, LABEL_REQUEST, SENDER_TEMPLATE + // and SENDER_TSPEC objects in order. + Objects []*FlowRSVPPathObjects `protobuf:"bytes,1,rep,name=objects,proto3" json:"objects,omitempty"` } -func (x *StateProtocolBgpPeers) Reset() { - *x = StateProtocolBgpPeers{} +func (x *FlowRSVPPathMessage) Reset() { + *x = FlowRSVPPathMessage{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[237] + mi := &file_otg_proto_msgTypes[193] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *StateProtocolBgpPeers) String() string { +func (x *FlowRSVPPathMessage) String() string { return protoimpl.X.MessageStringOf(x) } -func (*StateProtocolBgpPeers) ProtoMessage() {} +func (*FlowRSVPPathMessage) ProtoMessage() {} -func (x *StateProtocolBgpPeers) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[237] +func (x *FlowRSVPPathMessage) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[193] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -38575,55 +38434,49 @@ func (x *StateProtocolBgpPeers) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use StateProtocolBgpPeers.ProtoReflect.Descriptor instead. -func (*StateProtocolBgpPeers) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{237} +// Deprecated: Use FlowRSVPPathMessage.ProtoReflect.Descriptor instead. +func (*FlowRSVPPathMessage) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{193} } -func (x *StateProtocolBgpPeers) GetPeerNames() []string { +func (x *FlowRSVPPathMessage) GetObjects() []*FlowRSVPPathObjects { if x != nil { - return x.PeerNames + return x.Objects } return nil } -func (x *StateProtocolBgpPeers) GetState() StateProtocolBgpPeers_State_Enum { - if x != nil && x.State != nil { - return *x.State - } - return StateProtocolBgpPeers_State_unspecified -} - -// Sets state of configured ISIS routers. -type StateProtocolIsis struct { +// Every RSVP object encapsulated in an RSVP message consists of a 32-bit word header +// and the object's contents. +type FlowRSVPPathObjects struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields + // A 16-bit field containing the total object length in bytes. Must always be a multiple + // of 4, and at least 4. + Length *FlowRSVPPathObjectLength `protobuf:"bytes,1,opt,name=length,proto3" json:"length,omitempty"` // Description missing in models - // required = true - Choice *StateProtocolIsis_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.StateProtocolIsis_Choice_Enum,oneof" json:"choice,omitempty"` - // Description missing in models - Routers *StateProtocolIsisRouters `protobuf:"bytes,2,opt,name=routers,proto3" json:"routers,omitempty"` + ClassNum *FlowRSVPPathObjectsClass `protobuf:"bytes,2,opt,name=class_num,json=classNum,proto3" json:"class_num,omitempty"` } -func (x *StateProtocolIsis) Reset() { - *x = StateProtocolIsis{} +func (x *FlowRSVPPathObjects) Reset() { + *x = FlowRSVPPathObjects{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[238] + mi := &file_otg_proto_msgTypes[194] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *StateProtocolIsis) String() string { +func (x *FlowRSVPPathObjects) String() string { return protoimpl.X.MessageStringOf(x) } -func (*StateProtocolIsis) ProtoMessage() {} +func (*FlowRSVPPathObjects) ProtoMessage() {} -func (x *StateProtocolIsis) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[238] +func (x *FlowRSVPPathObjects) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[194] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -38634,65 +38487,60 @@ func (x *StateProtocolIsis) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use StateProtocolIsis.ProtoReflect.Descriptor instead. -func (*StateProtocolIsis) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{238} +// Deprecated: Use FlowRSVPPathObjects.ProtoReflect.Descriptor instead. +func (*FlowRSVPPathObjects) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{194} } -func (x *StateProtocolIsis) GetChoice() StateProtocolIsis_Choice_Enum { - if x != nil && x.Choice != nil { - return *x.Choice +func (x *FlowRSVPPathObjects) GetLength() *FlowRSVPPathObjectLength { + if x != nil { + return x.Length } - return StateProtocolIsis_Choice_unspecified + return nil } -func (x *StateProtocolIsis) GetRouters() *StateProtocolIsisRouters { +func (x *FlowRSVPPathObjects) GetClassNum() *FlowRSVPPathObjectsClass { if x != nil { - return x.Routers + return x.ClassNum } return nil } -// Sets state of configured ISIS routers. -type StateProtocolIsisRouters struct { +// Description missing in models +type FlowRSVPPathObjectLength struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // The names of ISIS routers for which the state has to be applied. An empty or null - // list will control all ISIS routers. - // - // x-constraint: - // - /components/schemas/Device.IsisRouter/properties/name - // - // x-constraint: - // - /components/schemas/Device.IsisRouter/properties/name - RouterNames []string `protobuf:"bytes,1,rep,name=router_names,json=routerNames,proto3" json:"router_names,omitempty"` - // The desired state of ISIS router. If the desired state is 'up', would attempt to - // bring up the ISIS session(s) with respective peer(s) and advertise route(s), if configured. - // If the desired state is 'down', would bring down ISIS session(s) with respective - // peer(s). - // required = true - State *StateProtocolIsisRouters_State_Enum `protobuf:"varint,2,opt,name=state,proto3,enum=otg.StateProtocolIsisRouters_State_Enum,oneof" json:"state,omitempty"` + // auto or configured value. + // default = Choice.Enum.auto + Choice *FlowRSVPPathObjectLength_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.FlowRSVPPathObjectLength_Choice_Enum,oneof" json:"choice,omitempty"` + // The OTG implementation can provide a system generated value for this property. If + // the OTG is unable to generate a value the default value must be used. + // default = 4 + Auto *uint32 `protobuf:"varint,2,opt,name=auto,proto3,oneof" json:"auto,omitempty"` + // Description missing in models + // default = 4 + Value *uint32 `protobuf:"varint,3,opt,name=value,proto3,oneof" json:"value,omitempty"` } -func (x *StateProtocolIsisRouters) Reset() { - *x = StateProtocolIsisRouters{} +func (x *FlowRSVPPathObjectLength) Reset() { + *x = FlowRSVPPathObjectLength{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[239] + mi := &file_otg_proto_msgTypes[195] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *StateProtocolIsisRouters) String() string { +func (x *FlowRSVPPathObjectLength) String() string { return protoimpl.X.MessageStringOf(x) } -func (*StateProtocolIsisRouters) ProtoMessage() {} +func (*FlowRSVPPathObjectLength) ProtoMessage() {} -func (x *StateProtocolIsisRouters) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[239] +func (x *FlowRSVPPathObjectLength) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[195] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -38703,55 +38551,85 @@ func (x *StateProtocolIsisRouters) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use StateProtocolIsisRouters.ProtoReflect.Descriptor instead. -func (*StateProtocolIsisRouters) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{239} +// Deprecated: Use FlowRSVPPathObjectLength.ProtoReflect.Descriptor instead. +func (*FlowRSVPPathObjectLength) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{195} } -func (x *StateProtocolIsisRouters) GetRouterNames() []string { - if x != nil { - return x.RouterNames +func (x *FlowRSVPPathObjectLength) GetChoice() FlowRSVPPathObjectLength_Choice_Enum { + if x != nil && x.Choice != nil { + return *x.Choice } - return nil + return FlowRSVPPathObjectLength_Choice_unspecified } -func (x *StateProtocolIsisRouters) GetState() StateProtocolIsisRouters_State_Enum { - if x != nil && x.State != nil { - return *x.State +func (x *FlowRSVPPathObjectLength) GetAuto() uint32 { + if x != nil && x.Auto != nil { + return *x.Auto } - return StateProtocolIsisRouters_State_unspecified + return 0 } -// Request for triggering action against configured resources. -type ControlAction struct { +func (x *FlowRSVPPathObjectLength) GetValue() uint32 { + if x != nil && x.Value != nil { + return *x.Value + } + return 0 +} + +// The class number is used to identify the class of an object. Defined in https://www.iana.org/assignments/rsvp-parameters/rsvp-parameters.xhtml#rsvp-parameters-4 +// . Curently supported class numbers are for path message type. path message: Supported +// Class numbers and it's value: SESSION: 1, RSVP_HOP: 3, TIME_VALUES: 5, EXPLICIT_ROUTE: +// 20, LABEL_REQUEST: 19, SESSION_ATTRIBUTE: 207, SENDER_TEMPLATE: 11, SENDER_TSPEC: +// 12, RECORD_ROUTE: 21, Custom: User defined bytes based on class and c-types not suppored +// in above options. +type FlowRSVPPathObjectsClass struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // Description missing in models // required = true - Choice *ControlAction_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.ControlAction_Choice_Enum,oneof" json:"choice,omitempty"` + Choice *FlowRSVPPathObjectsClass_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.FlowRSVPPathObjectsClass_Choice_Enum,oneof" json:"choice,omitempty"` // Description missing in models - Protocol *ActionProtocol `protobuf:"bytes,2,opt,name=protocol,proto3" json:"protocol,omitempty"` + Session *FlowRSVPPathObjectsClassSession `protobuf:"bytes,2,opt,name=session,proto3" json:"session,omitempty"` + // Description missing in models + RsvpHop *FlowRSVPPathObjectsClassRsvpHop `protobuf:"bytes,3,opt,name=rsvp_hop,json=rsvpHop,proto3" json:"rsvp_hop,omitempty"` + // Description missing in models + TimeValues *FlowRSVPPathObjectsClassTimeValues `protobuf:"bytes,4,opt,name=time_values,json=timeValues,proto3" json:"time_values,omitempty"` + // Description missing in models + ExplicitRoute *FlowRSVPPathObjectsClassExplicitRoute `protobuf:"bytes,5,opt,name=explicit_route,json=explicitRoute,proto3" json:"explicit_route,omitempty"` + // Description missing in models + LabelRequest *FlowRSVPPathObjectsClassLabelRequest `protobuf:"bytes,6,opt,name=label_request,json=labelRequest,proto3" json:"label_request,omitempty"` + // Description missing in models + SessionAttribute *FlowRSVPPathObjectsClassSessionAttribute `protobuf:"bytes,7,opt,name=session_attribute,json=sessionAttribute,proto3" json:"session_attribute,omitempty"` + // Description missing in models + SenderTemplate *FlowRSVPPathObjectsClassSenderTemplate `protobuf:"bytes,8,opt,name=sender_template,json=senderTemplate,proto3" json:"sender_template,omitempty"` + // Description missing in models + SenderTspec *FlowRSVPPathObjectsClassSenderTspec `protobuf:"bytes,9,opt,name=sender_tspec,json=senderTspec,proto3" json:"sender_tspec,omitempty"` + // Description missing in models + RecordRoute *FlowRSVPPathObjectsClassRecordRoute `protobuf:"bytes,10,opt,name=record_route,json=recordRoute,proto3" json:"record_route,omitempty"` + // Description missing in models + Custom *FlowRSVPPathObjectsCustom `protobuf:"bytes,11,opt,name=custom,proto3" json:"custom,omitempty"` } -func (x *ControlAction) Reset() { - *x = ControlAction{} +func (x *FlowRSVPPathObjectsClass) Reset() { + *x = FlowRSVPPathObjectsClass{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[240] + mi := &file_otg_proto_msgTypes[196] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *ControlAction) String() string { +func (x *FlowRSVPPathObjectsClass) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ControlAction) ProtoMessage() {} +func (*FlowRSVPPathObjectsClass) ProtoMessage() {} -func (x *ControlAction) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[240] +func (x *FlowRSVPPathObjectsClass) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[196] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -38762,54 +38640,115 @@ func (x *ControlAction) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use ControlAction.ProtoReflect.Descriptor instead. -func (*ControlAction) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{240} +// Deprecated: Use FlowRSVPPathObjectsClass.ProtoReflect.Descriptor instead. +func (*FlowRSVPPathObjectsClass) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{196} } -func (x *ControlAction) GetChoice() ControlAction_Choice_Enum { +func (x *FlowRSVPPathObjectsClass) GetChoice() FlowRSVPPathObjectsClass_Choice_Enum { if x != nil && x.Choice != nil { return *x.Choice } - return ControlAction_Choice_unspecified + return FlowRSVPPathObjectsClass_Choice_unspecified } -func (x *ControlAction) GetProtocol() *ActionProtocol { +func (x *FlowRSVPPathObjectsClass) GetSession() *FlowRSVPPathObjectsClassSession { if x != nil { - return x.Protocol + return x.Session } return nil } -// Response for action triggered against configured resources along with warnings. -type ControlActionResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // List of warnings generated while triggering specified action - Warnings []string `protobuf:"bytes,1,rep,name=warnings,proto3" json:"warnings,omitempty"` - // Description missing in models - Response *ActionResponse `protobuf:"bytes,2,opt,name=response,proto3" json:"response,omitempty"` +func (x *FlowRSVPPathObjectsClass) GetRsvpHop() *FlowRSVPPathObjectsClassRsvpHop { + if x != nil { + return x.RsvpHop + } + return nil } -func (x *ControlActionResponse) Reset() { - *x = ControlActionResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[241] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) +func (x *FlowRSVPPathObjectsClass) GetTimeValues() *FlowRSVPPathObjectsClassTimeValues { + if x != nil { + return x.TimeValues } + return nil } -func (x *ControlActionResponse) String() string { +func (x *FlowRSVPPathObjectsClass) GetExplicitRoute() *FlowRSVPPathObjectsClassExplicitRoute { + if x != nil { + return x.ExplicitRoute + } + return nil +} + +func (x *FlowRSVPPathObjectsClass) GetLabelRequest() *FlowRSVPPathObjectsClassLabelRequest { + if x != nil { + return x.LabelRequest + } + return nil +} + +func (x *FlowRSVPPathObjectsClass) GetSessionAttribute() *FlowRSVPPathObjectsClassSessionAttribute { + if x != nil { + return x.SessionAttribute + } + return nil +} + +func (x *FlowRSVPPathObjectsClass) GetSenderTemplate() *FlowRSVPPathObjectsClassSenderTemplate { + if x != nil { + return x.SenderTemplate + } + return nil +} + +func (x *FlowRSVPPathObjectsClass) GetSenderTspec() *FlowRSVPPathObjectsClassSenderTspec { + if x != nil { + return x.SenderTspec + } + return nil +} + +func (x *FlowRSVPPathObjectsClass) GetRecordRoute() *FlowRSVPPathObjectsClassRecordRoute { + if x != nil { + return x.RecordRoute + } + return nil +} + +func (x *FlowRSVPPathObjectsClass) GetCustom() *FlowRSVPPathObjectsCustom { + if x != nil { + return x.Custom + } + return nil +} + +// C-Type is specific to a class num. +type FlowRSVPPathObjectsClassSession struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Description missing in models + CType *FlowRSVPPathObjectsSessionCType `protobuf:"bytes,1,opt,name=c_type,json=cType,proto3" json:"c_type,omitempty"` +} + +func (x *FlowRSVPPathObjectsClassSession) Reset() { + *x = FlowRSVPPathObjectsClassSession{} + if protoimpl.UnsafeEnabled { + mi := &file_otg_proto_msgTypes[197] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *FlowRSVPPathObjectsClassSession) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ControlActionResponse) ProtoMessage() {} +func (*FlowRSVPPathObjectsClassSession) ProtoMessage() {} -func (x *ControlActionResponse) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[241] +func (x *FlowRSVPPathObjectsClassSession) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[197] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -38820,55 +38759,49 @@ func (x *ControlActionResponse) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use ControlActionResponse.ProtoReflect.Descriptor instead. -func (*ControlActionResponse) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{241} -} - -func (x *ControlActionResponse) GetWarnings() []string { - if x != nil { - return x.Warnings - } - return nil +// Deprecated: Use FlowRSVPPathObjectsClassSession.ProtoReflect.Descriptor instead. +func (*FlowRSVPPathObjectsClassSession) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{197} } -func (x *ControlActionResponse) GetResponse() *ActionResponse { +func (x *FlowRSVPPathObjectsClassSession) GetCType() *FlowRSVPPathObjectsSessionCType { if x != nil { - return x.Response + return x.CType } return nil } -// Response for action triggered against configured resources. -type ActionResponse struct { +// The body of an object corresponding to the class number and c-type. Currently supported +// c-type for SESSION object is LSP Tunnel IPv4 (7). +type FlowRSVPPathObjectsSessionCType struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // Description missing in models - // required = true - Choice *ActionResponse_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.ActionResponse_Choice_Enum,oneof" json:"choice,omitempty"` + // default = Choice.Enum.lsp_tunnel_ipv4 + Choice *FlowRSVPPathObjectsSessionCType_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.FlowRSVPPathObjectsSessionCType_Choice_Enum,oneof" json:"choice,omitempty"` // Description missing in models - Protocol *ActionResponseProtocol `protobuf:"bytes,2,opt,name=protocol,proto3" json:"protocol,omitempty"` + LspTunnelIpv4 *FlowRSVPPathSessionLspTunnelIpv4 `protobuf:"bytes,2,opt,name=lsp_tunnel_ipv4,json=lspTunnelIpv4,proto3" json:"lsp_tunnel_ipv4,omitempty"` } -func (x *ActionResponse) Reset() { - *x = ActionResponse{} +func (x *FlowRSVPPathObjectsSessionCType) Reset() { + *x = FlowRSVPPathObjectsSessionCType{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[242] + mi := &file_otg_proto_msgTypes[198] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *ActionResponse) String() string { +func (x *FlowRSVPPathObjectsSessionCType) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ActionResponse) ProtoMessage() {} +func (*FlowRSVPPathObjectsSessionCType) ProtoMessage() {} -func (x *ActionResponse) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[242] +func (x *FlowRSVPPathObjectsSessionCType) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[198] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -38879,59 +38812,58 @@ func (x *ActionResponse) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use ActionResponse.ProtoReflect.Descriptor instead. -func (*ActionResponse) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{242} +// Deprecated: Use FlowRSVPPathObjectsSessionCType.ProtoReflect.Descriptor instead. +func (*FlowRSVPPathObjectsSessionCType) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{198} } -func (x *ActionResponse) GetChoice() ActionResponse_Choice_Enum { +func (x *FlowRSVPPathObjectsSessionCType) GetChoice() FlowRSVPPathObjectsSessionCType_Choice_Enum { if x != nil && x.Choice != nil { return *x.Choice } - return ActionResponse_Choice_unspecified + return FlowRSVPPathObjectsSessionCType_Choice_unspecified } -func (x *ActionResponse) GetProtocol() *ActionResponseProtocol { +func (x *FlowRSVPPathObjectsSessionCType) GetLspTunnelIpv4() *FlowRSVPPathSessionLspTunnelIpv4 { if x != nil { - return x.Protocol + return x.LspTunnelIpv4 } return nil } -// Actions associated with protocols on configured resources. -type ActionProtocol struct { +// Class = SESSION, LSP_TUNNEL_IPv4 C-Type = 7. +type FlowRSVPPathSessionLspTunnelIpv4 struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // Description missing in models - // required = true - Choice *ActionProtocol_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.ActionProtocol_Choice_Enum,oneof" json:"choice,omitempty"` + Ipv4TunnelEndPointAddress *PatternFlowRSVPPathSessionLspTunnelIpv4Ipv4TunnelEndPointAddress `protobuf:"bytes,1,opt,name=ipv4_tunnel_end_point_address,json=ipv4TunnelEndPointAddress,proto3" json:"ipv4_tunnel_end_point_address,omitempty"` // Description missing in models - Ipv4 *ActionProtocolIpv4 `protobuf:"bytes,2,opt,name=ipv4,proto3" json:"ipv4,omitempty"` + Reserved *PatternFlowRSVPPathSessionLspTunnelIpv4Reserved `protobuf:"bytes,2,opt,name=reserved,proto3" json:"reserved,omitempty"` // Description missing in models - Ipv6 *ActionProtocolIpv6 `protobuf:"bytes,3,opt,name=ipv6,proto3" json:"ipv6,omitempty"` + TunnelId *PatternFlowRSVPPathSessionLspTunnelIpv4TunnelId `protobuf:"bytes,3,opt,name=tunnel_id,json=tunnelId,proto3" json:"tunnel_id,omitempty"` // Description missing in models - Bgp *ActionProtocolBgp `protobuf:"bytes,4,opt,name=bgp,proto3" json:"bgp,omitempty"` + ExtendedTunnelId *PatternFlowRSVPPathSessionLspTunnelIpv4ExtendedTunnelId `protobuf:"bytes,4,opt,name=extended_tunnel_id,json=extendedTunnelId,proto3" json:"extended_tunnel_id,omitempty"` } -func (x *ActionProtocol) Reset() { - *x = ActionProtocol{} +func (x *FlowRSVPPathSessionLspTunnelIpv4) Reset() { + *x = FlowRSVPPathSessionLspTunnelIpv4{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[243] + mi := &file_otg_proto_msgTypes[199] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *ActionProtocol) String() string { +func (x *FlowRSVPPathSessionLspTunnelIpv4) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ActionProtocol) ProtoMessage() {} +func (*FlowRSVPPathSessionLspTunnelIpv4) ProtoMessage() {} -func (x *ActionProtocol) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[243] +func (x *FlowRSVPPathSessionLspTunnelIpv4) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[199] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -38942,71 +38874,66 @@ func (x *ActionProtocol) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use ActionProtocol.ProtoReflect.Descriptor instead. -func (*ActionProtocol) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{243} +// Deprecated: Use FlowRSVPPathSessionLspTunnelIpv4.ProtoReflect.Descriptor instead. +func (*FlowRSVPPathSessionLspTunnelIpv4) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{199} } -func (x *ActionProtocol) GetChoice() ActionProtocol_Choice_Enum { - if x != nil && x.Choice != nil { - return *x.Choice +func (x *FlowRSVPPathSessionLspTunnelIpv4) GetIpv4TunnelEndPointAddress() *PatternFlowRSVPPathSessionLspTunnelIpv4Ipv4TunnelEndPointAddress { + if x != nil { + return x.Ipv4TunnelEndPointAddress } - return ActionProtocol_Choice_unspecified + return nil } -func (x *ActionProtocol) GetIpv4() *ActionProtocolIpv4 { +func (x *FlowRSVPPathSessionLspTunnelIpv4) GetReserved() *PatternFlowRSVPPathSessionLspTunnelIpv4Reserved { if x != nil { - return x.Ipv4 + return x.Reserved } return nil } -func (x *ActionProtocol) GetIpv6() *ActionProtocolIpv6 { +func (x *FlowRSVPPathSessionLspTunnelIpv4) GetTunnelId() *PatternFlowRSVPPathSessionLspTunnelIpv4TunnelId { if x != nil { - return x.Ipv6 + return x.TunnelId } return nil } -func (x *ActionProtocol) GetBgp() *ActionProtocolBgp { +func (x *FlowRSVPPathSessionLspTunnelIpv4) GetExtendedTunnelId() *PatternFlowRSVPPathSessionLspTunnelIpv4ExtendedTunnelId { if x != nil { - return x.Bgp + return x.ExtendedTunnelId } return nil } -// Response for actions associated with protocols on configured resources. -type ActionResponseProtocol struct { +// C-Type is specific to a class num. +type FlowRSVPPathObjectsClassRsvpHop struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // Description missing in models - // required = true - Choice *ActionResponseProtocol_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.ActionResponseProtocol_Choice_Enum,oneof" json:"choice,omitempty"` - // Description missing in models - Ipv4 *ActionResponseProtocolIpv4 `protobuf:"bytes,2,opt,name=ipv4,proto3" json:"ipv4,omitempty"` - // Description missing in models - Ipv6 *ActionResponseProtocolIpv6 `protobuf:"bytes,3,opt,name=ipv6,proto3" json:"ipv6,omitempty"` + CType *FlowRSVPPathObjectsRsvpHopCType `protobuf:"bytes,1,opt,name=c_type,json=cType,proto3" json:"c_type,omitempty"` } -func (x *ActionResponseProtocol) Reset() { - *x = ActionResponseProtocol{} +func (x *FlowRSVPPathObjectsClassRsvpHop) Reset() { + *x = FlowRSVPPathObjectsClassRsvpHop{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[244] + mi := &file_otg_proto_msgTypes[200] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *ActionResponseProtocol) String() string { +func (x *FlowRSVPPathObjectsClassRsvpHop) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ActionResponseProtocol) ProtoMessage() {} +func (*FlowRSVPPathObjectsClassRsvpHop) ProtoMessage() {} -func (x *ActionResponseProtocol) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[244] +func (x *FlowRSVPPathObjectsClassRsvpHop) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[200] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -39017,62 +38944,48 @@ func (x *ActionResponseProtocol) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use ActionResponseProtocol.ProtoReflect.Descriptor instead. -func (*ActionResponseProtocol) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{244} -} - -func (x *ActionResponseProtocol) GetChoice() ActionResponseProtocol_Choice_Enum { - if x != nil && x.Choice != nil { - return *x.Choice - } - return ActionResponseProtocol_Choice_unspecified -} - -func (x *ActionResponseProtocol) GetIpv4() *ActionResponseProtocolIpv4 { - if x != nil { - return x.Ipv4 - } - return nil +// Deprecated: Use FlowRSVPPathObjectsClassRsvpHop.ProtoReflect.Descriptor instead. +func (*FlowRSVPPathObjectsClassRsvpHop) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{200} } -func (x *ActionResponseProtocol) GetIpv6() *ActionResponseProtocolIpv6 { +func (x *FlowRSVPPathObjectsClassRsvpHop) GetCType() *FlowRSVPPathObjectsRsvpHopCType { if x != nil { - return x.Ipv6 + return x.CType } return nil } -// Actions associated with IPv4 on configured resources. -type ActionProtocolIpv4 struct { +// Object for RSVP_HOP class. Currently supported c-type is IPv4 (1). +type FlowRSVPPathObjectsRsvpHopCType struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // Description missing in models - // required = true - Choice *ActionProtocolIpv4_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.ActionProtocolIpv4_Choice_Enum,oneof" json:"choice,omitempty"` + // default = Choice.Enum.ipv4 + Choice *FlowRSVPPathObjectsRsvpHopCType_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.FlowRSVPPathObjectsRsvpHopCType_Choice_Enum,oneof" json:"choice,omitempty"` // Description missing in models - Ping *ActionProtocolIpv4Ping `protobuf:"bytes,2,opt,name=ping,proto3" json:"ping,omitempty"` + Ipv4 *FlowRSVPPathRsvpHopIpv4 `protobuf:"bytes,2,opt,name=ipv4,proto3" json:"ipv4,omitempty"` } -func (x *ActionProtocolIpv4) Reset() { - *x = ActionProtocolIpv4{} +func (x *FlowRSVPPathObjectsRsvpHopCType) Reset() { + *x = FlowRSVPPathObjectsRsvpHopCType{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[245] + mi := &file_otg_proto_msgTypes[201] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *ActionProtocolIpv4) String() string { +func (x *FlowRSVPPathObjectsRsvpHopCType) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ActionProtocolIpv4) ProtoMessage() {} +func (*FlowRSVPPathObjectsRsvpHopCType) ProtoMessage() {} -func (x *ActionProtocolIpv4) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[245] +func (x *FlowRSVPPathObjectsRsvpHopCType) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[201] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -39083,55 +38996,54 @@ func (x *ActionProtocolIpv4) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use ActionProtocolIpv4.ProtoReflect.Descriptor instead. -func (*ActionProtocolIpv4) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{245} +// Deprecated: Use FlowRSVPPathObjectsRsvpHopCType.ProtoReflect.Descriptor instead. +func (*FlowRSVPPathObjectsRsvpHopCType) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{201} } -func (x *ActionProtocolIpv4) GetChoice() ActionProtocolIpv4_Choice_Enum { +func (x *FlowRSVPPathObjectsRsvpHopCType) GetChoice() FlowRSVPPathObjectsRsvpHopCType_Choice_Enum { if x != nil && x.Choice != nil { return *x.Choice } - return ActionProtocolIpv4_Choice_unspecified + return FlowRSVPPathObjectsRsvpHopCType_Choice_unspecified } -func (x *ActionProtocolIpv4) GetPing() *ActionProtocolIpv4Ping { +func (x *FlowRSVPPathObjectsRsvpHopCType) GetIpv4() *FlowRSVPPathRsvpHopIpv4 { if x != nil { - return x.Ping + return x.Ipv4 } return nil } -// Response for actions associated with IPv4 on configured resources. -type ActionResponseProtocolIpv4 struct { +// IPv4 RSVP_HOP object: Class = 3, C-Type = 1 +type FlowRSVPPathRsvpHopIpv4 struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // Description missing in models - // required = true - Choice *ActionResponseProtocolIpv4_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.ActionResponseProtocolIpv4_Choice_Enum,oneof" json:"choice,omitempty"` + Ipv4NextPreviousHopAddress *PatternFlowRSVPPathRsvpHopIpv4Ipv4NextPreviousHopAddress `protobuf:"bytes,1,opt,name=ipv4_next_previous_hop_address,json=ipv4NextPreviousHopAddress,proto3" json:"ipv4_next_previous_hop_address,omitempty"` // Description missing in models - Ping *ActionResponseProtocolIpv4Ping `protobuf:"bytes,2,opt,name=ping,proto3" json:"ping,omitempty"` + LogicalInterfaceHandle *PatternFlowRSVPPathRsvpHopIpv4LogicalInterfaceHandle `protobuf:"bytes,2,opt,name=logical_interface_handle,json=logicalInterfaceHandle,proto3" json:"logical_interface_handle,omitempty"` } -func (x *ActionResponseProtocolIpv4) Reset() { - *x = ActionResponseProtocolIpv4{} +func (x *FlowRSVPPathRsvpHopIpv4) Reset() { + *x = FlowRSVPPathRsvpHopIpv4{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[246] + mi := &file_otg_proto_msgTypes[202] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *ActionResponseProtocolIpv4) String() string { +func (x *FlowRSVPPathRsvpHopIpv4) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ActionResponseProtocolIpv4) ProtoMessage() {} +func (*FlowRSVPPathRsvpHopIpv4) ProtoMessage() {} -func (x *ActionResponseProtocolIpv4) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[246] +func (x *FlowRSVPPathRsvpHopIpv4) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[202] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -39142,52 +39054,52 @@ func (x *ActionResponseProtocolIpv4) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use ActionResponseProtocolIpv4.ProtoReflect.Descriptor instead. -func (*ActionResponseProtocolIpv4) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{246} +// Deprecated: Use FlowRSVPPathRsvpHopIpv4.ProtoReflect.Descriptor instead. +func (*FlowRSVPPathRsvpHopIpv4) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{202} } -func (x *ActionResponseProtocolIpv4) GetChoice() ActionResponseProtocolIpv4_Choice_Enum { - if x != nil && x.Choice != nil { - return *x.Choice +func (x *FlowRSVPPathRsvpHopIpv4) GetIpv4NextPreviousHopAddress() *PatternFlowRSVPPathRsvpHopIpv4Ipv4NextPreviousHopAddress { + if x != nil { + return x.Ipv4NextPreviousHopAddress } - return ActionResponseProtocolIpv4_Choice_unspecified + return nil } -func (x *ActionResponseProtocolIpv4) GetPing() *ActionResponseProtocolIpv4Ping { +func (x *FlowRSVPPathRsvpHopIpv4) GetLogicalInterfaceHandle() *PatternFlowRSVPPathRsvpHopIpv4LogicalInterfaceHandle { if x != nil { - return x.Ping + return x.LogicalInterfaceHandle } return nil } -// Request for initiating ping between multiple source and destination pairs. -type ActionProtocolIpv4Ping struct { +// C-Type is specific to a class num. +type FlowRSVPPathObjectsClassTimeValues struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // List of IPv4 ping requests. - Requests []*ActionProtocolIpv4PingRequest `protobuf:"bytes,1,rep,name=requests,proto3" json:"requests,omitempty"` + // Description missing in models + CType *FlowRSVPPathObjectsTimeValuesCType `protobuf:"bytes,1,opt,name=c_type,json=cType,proto3" json:"c_type,omitempty"` } -func (x *ActionProtocolIpv4Ping) Reset() { - *x = ActionProtocolIpv4Ping{} +func (x *FlowRSVPPathObjectsClassTimeValues) Reset() { + *x = FlowRSVPPathObjectsClassTimeValues{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[247] + mi := &file_otg_proto_msgTypes[203] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *ActionProtocolIpv4Ping) String() string { +func (x *FlowRSVPPathObjectsClassTimeValues) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ActionProtocolIpv4Ping) ProtoMessage() {} +func (*FlowRSVPPathObjectsClassTimeValues) ProtoMessage() {} -func (x *ActionProtocolIpv4Ping) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[247] +func (x *FlowRSVPPathObjectsClassTimeValues) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[203] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -39198,59 +39110,48 @@ func (x *ActionProtocolIpv4Ping) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use ActionProtocolIpv4Ping.ProtoReflect.Descriptor instead. -func (*ActionProtocolIpv4Ping) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{247} +// Deprecated: Use FlowRSVPPathObjectsClassTimeValues.ProtoReflect.Descriptor instead. +func (*FlowRSVPPathObjectsClassTimeValues) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{203} } -func (x *ActionProtocolIpv4Ping) GetRequests() []*ActionProtocolIpv4PingRequest { +func (x *FlowRSVPPathObjectsClassTimeValues) GetCType() *FlowRSVPPathObjectsTimeValuesCType { if x != nil { - return x.Requests + return x.CType } return nil } -// Under Review: Most ping request parameters are still TBD. -// -// Under Review: Most ping request parameters are still TBD. -// -// Request for initiating ping between a single source and destination pair. -// For ping request, 1 IPv4 ICMP Echo Request shall be sent and wait for ping response -// to either succeed or time out. The API wait timeout for each request shall be 300ms. -type ActionProtocolIpv4PingRequest struct { +// Object for TIME_VALUES class. Currently supported c-type is Type 1 Time Value (1). +type FlowRSVPPathObjectsTimeValuesCType struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Name of source IPv4 interface to be used. - // - // x-constraint: - // - /components/schemas/Device.Ipv4/properties/name - // - // x-constraint: - // - /components/schemas/Device.Ipv4/properties/name - SrcName *string `protobuf:"bytes,1,opt,name=src_name,json=srcName,proto3,oneof" json:"src_name,omitempty"` - // Destination IPv4 address to ping. - DstIp *string `protobuf:"bytes,2,opt,name=dst_ip,json=dstIp,proto3,oneof" json:"dst_ip,omitempty"` + // Description missing in models + // default = Choice.Enum.type_1_time_value + Choice *FlowRSVPPathObjectsTimeValuesCType_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.FlowRSVPPathObjectsTimeValuesCType_Choice_Enum,oneof" json:"choice,omitempty"` + // Description missing in models + Type_1TimeValue *FlowRSVPPathTimeValuesType1 `protobuf:"bytes,2,opt,name=type_1_time_value,json=type1TimeValue,proto3" json:"type_1_time_value,omitempty"` } -func (x *ActionProtocolIpv4PingRequest) Reset() { - *x = ActionProtocolIpv4PingRequest{} +func (x *FlowRSVPPathObjectsTimeValuesCType) Reset() { + *x = FlowRSVPPathObjectsTimeValuesCType{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[248] + mi := &file_otg_proto_msgTypes[204] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *ActionProtocolIpv4PingRequest) String() string { +func (x *FlowRSVPPathObjectsTimeValuesCType) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ActionProtocolIpv4PingRequest) ProtoMessage() {} +func (*FlowRSVPPathObjectsTimeValuesCType) ProtoMessage() {} -func (x *ActionProtocolIpv4PingRequest) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[248] +func (x *FlowRSVPPathObjectsTimeValuesCType) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[204] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -39261,52 +39162,52 @@ func (x *ActionProtocolIpv4PingRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use ActionProtocolIpv4PingRequest.ProtoReflect.Descriptor instead. -func (*ActionProtocolIpv4PingRequest) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{248} +// Deprecated: Use FlowRSVPPathObjectsTimeValuesCType.ProtoReflect.Descriptor instead. +func (*FlowRSVPPathObjectsTimeValuesCType) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{204} } -func (x *ActionProtocolIpv4PingRequest) GetSrcName() string { - if x != nil && x.SrcName != nil { - return *x.SrcName +func (x *FlowRSVPPathObjectsTimeValuesCType) GetChoice() FlowRSVPPathObjectsTimeValuesCType_Choice_Enum { + if x != nil && x.Choice != nil { + return *x.Choice } - return "" + return FlowRSVPPathObjectsTimeValuesCType_Choice_unspecified } -func (x *ActionProtocolIpv4PingRequest) GetDstIp() string { - if x != nil && x.DstIp != nil { - return *x.DstIp +func (x *FlowRSVPPathObjectsTimeValuesCType) GetType_1TimeValue() *FlowRSVPPathTimeValuesType1 { + if x != nil { + return x.Type_1TimeValue } - return "" + return nil } -// Response for ping initiated between multiple source and destination pairs. -type ActionResponseProtocolIpv4Ping struct { +// TIME_VALUES Object: Class = 5, C-Type = 1 +type FlowRSVPPathTimeValuesType1 struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // List of responses for IPv4 ping responses. - Responses []*ActionResponseProtocolIpv4PingResponse `protobuf:"bytes,1,rep,name=responses,proto3" json:"responses,omitempty"` + // Description missing in models + RefreshPeriodR *PatternFlowRSVPPathTimeValuesType1RefreshPeriodR `protobuf:"bytes,1,opt,name=refresh_period_r,json=refreshPeriodR,proto3" json:"refresh_period_r,omitempty"` } -func (x *ActionResponseProtocolIpv4Ping) Reset() { - *x = ActionResponseProtocolIpv4Ping{} +func (x *FlowRSVPPathTimeValuesType1) Reset() { + *x = FlowRSVPPathTimeValuesType1{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[249] + mi := &file_otg_proto_msgTypes[205] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *ActionResponseProtocolIpv4Ping) String() string { +func (x *FlowRSVPPathTimeValuesType1) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ActionResponseProtocolIpv4Ping) ProtoMessage() {} +func (*FlowRSVPPathTimeValuesType1) ProtoMessage() {} -func (x *ActionResponseProtocolIpv4Ping) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[249] +func (x *FlowRSVPPathTimeValuesType1) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[205] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -39317,59 +39218,45 @@ func (x *ActionResponseProtocolIpv4Ping) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use ActionResponseProtocolIpv4Ping.ProtoReflect.Descriptor instead. -func (*ActionResponseProtocolIpv4Ping) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{249} +// Deprecated: Use FlowRSVPPathTimeValuesType1.ProtoReflect.Descriptor instead. +func (*FlowRSVPPathTimeValuesType1) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{205} } -func (x *ActionResponseProtocolIpv4Ping) GetResponses() []*ActionResponseProtocolIpv4PingResponse { +func (x *FlowRSVPPathTimeValuesType1) GetRefreshPeriodR() *PatternFlowRSVPPathTimeValuesType1RefreshPeriodR { if x != nil { - return x.Responses + return x.RefreshPeriodR } return nil } -// Response for ping initiated between a single source and destination pair. -type ActionResponseProtocolIpv4PingResponse struct { +// C-Type is specific to a class num. +type FlowRSVPPathObjectsClassExplicitRoute struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Name of source IPv4 interface used for ping. - // - // x-constraint: - // - /components/schemas/Device.Ipv4/properties/name - // - // x-constraint: - // - /components/schemas/Device.Ipv4/properties/name - // - // required = true - SrcName *string `protobuf:"bytes,1,opt,name=src_name,json=srcName,proto3,oneof" json:"src_name,omitempty"` - // Destination IPv4 address used for ping. - // required = true - DstIp *string `protobuf:"bytes,2,opt,name=dst_ip,json=dstIp,proto3,oneof" json:"dst_ip,omitempty"` - // Result of the ping request. - // required = true - Result *ActionResponseProtocolIpv4PingResponse_Result_Enum `protobuf:"varint,3,opt,name=result,proto3,enum=otg.ActionResponseProtocolIpv4PingResponse_Result_Enum,oneof" json:"result,omitempty"` + // Description missing in models + CType *FlowRSVPPathObjectsClassExplicitRouteCType `protobuf:"bytes,1,opt,name=c_type,json=cType,proto3" json:"c_type,omitempty"` } -func (x *ActionResponseProtocolIpv4PingResponse) Reset() { - *x = ActionResponseProtocolIpv4PingResponse{} +func (x *FlowRSVPPathObjectsClassExplicitRoute) Reset() { + *x = FlowRSVPPathObjectsClassExplicitRoute{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[250] + mi := &file_otg_proto_msgTypes[206] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *ActionResponseProtocolIpv4PingResponse) String() string { +func (x *FlowRSVPPathObjectsClassExplicitRoute) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ActionResponseProtocolIpv4PingResponse) ProtoMessage() {} +func (*FlowRSVPPathObjectsClassExplicitRoute) ProtoMessage() {} -func (x *ActionResponseProtocolIpv4PingResponse) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[250] +func (x *FlowRSVPPathObjectsClassExplicitRoute) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[206] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -39380,62 +39267,48 @@ func (x *ActionResponseProtocolIpv4PingResponse) ProtoReflect() protoreflect.Mes return mi.MessageOf(x) } -// Deprecated: Use ActionResponseProtocolIpv4PingResponse.ProtoReflect.Descriptor instead. -func (*ActionResponseProtocolIpv4PingResponse) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{250} -} - -func (x *ActionResponseProtocolIpv4PingResponse) GetSrcName() string { - if x != nil && x.SrcName != nil { - return *x.SrcName - } - return "" -} - -func (x *ActionResponseProtocolIpv4PingResponse) GetDstIp() string { - if x != nil && x.DstIp != nil { - return *x.DstIp - } - return "" +// Deprecated: Use FlowRSVPPathObjectsClassExplicitRoute.ProtoReflect.Descriptor instead. +func (*FlowRSVPPathObjectsClassExplicitRoute) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{206} } -func (x *ActionResponseProtocolIpv4PingResponse) GetResult() ActionResponseProtocolIpv4PingResponse_Result_Enum { - if x != nil && x.Result != nil { - return *x.Result +func (x *FlowRSVPPathObjectsClassExplicitRoute) GetCType() *FlowRSVPPathObjectsClassExplicitRouteCType { + if x != nil { + return x.CType } - return ActionResponseProtocolIpv4PingResponse_Result_unspecified + return nil } -// Actions associated with IPv6 on configured resources. -type ActionProtocolIpv6 struct { +// Object for EXPLICIT_ROUTE class and c-type is Type 1 Explicit Route (1). +type FlowRSVPPathObjectsClassExplicitRouteCType struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // Description missing in models - // required = true - Choice *ActionProtocolIpv6_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.ActionProtocolIpv6_Choice_Enum,oneof" json:"choice,omitempty"` + // default = Choice.Enum.type_1_explicit_route + Choice *FlowRSVPPathObjectsClassExplicitRouteCType_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.FlowRSVPPathObjectsClassExplicitRouteCType_Choice_Enum,oneof" json:"choice,omitempty"` // Description missing in models - Ping *ActionProtocolIpv6Ping `protobuf:"bytes,2,opt,name=ping,proto3" json:"ping,omitempty"` + Type_1ExplicitRoute *FlowRSVPPathExplicitRouteType1 `protobuf:"bytes,2,opt,name=type_1_explicit_route,json=type1ExplicitRoute,proto3" json:"type_1_explicit_route,omitempty"` } -func (x *ActionProtocolIpv6) Reset() { - *x = ActionProtocolIpv6{} +func (x *FlowRSVPPathObjectsClassExplicitRouteCType) Reset() { + *x = FlowRSVPPathObjectsClassExplicitRouteCType{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[251] + mi := &file_otg_proto_msgTypes[207] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *ActionProtocolIpv6) String() string { +func (x *FlowRSVPPathObjectsClassExplicitRouteCType) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ActionProtocolIpv6) ProtoMessage() {} +func (*FlowRSVPPathObjectsClassExplicitRouteCType) ProtoMessage() {} -func (x *ActionProtocolIpv6) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[251] +func (x *FlowRSVPPathObjectsClassExplicitRouteCType) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[207] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -39446,55 +39319,53 @@ func (x *ActionProtocolIpv6) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use ActionProtocolIpv6.ProtoReflect.Descriptor instead. -func (*ActionProtocolIpv6) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{251} +// Deprecated: Use FlowRSVPPathObjectsClassExplicitRouteCType.ProtoReflect.Descriptor instead. +func (*FlowRSVPPathObjectsClassExplicitRouteCType) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{207} } -func (x *ActionProtocolIpv6) GetChoice() ActionProtocolIpv6_Choice_Enum { +func (x *FlowRSVPPathObjectsClassExplicitRouteCType) GetChoice() FlowRSVPPathObjectsClassExplicitRouteCType_Choice_Enum { if x != nil && x.Choice != nil { return *x.Choice } - return ActionProtocolIpv6_Choice_unspecified + return FlowRSVPPathObjectsClassExplicitRouteCType_Choice_unspecified } -func (x *ActionProtocolIpv6) GetPing() *ActionProtocolIpv6Ping { +func (x *FlowRSVPPathObjectsClassExplicitRouteCType) GetType_1ExplicitRoute() *FlowRSVPPathExplicitRouteType1 { if x != nil { - return x.Ping + return x.Type_1ExplicitRoute } return nil } -// Response for actions associated with IPv6 on configured resources. -type ActionResponseProtocolIpv6 struct { +// Type1 Explicit Route has subobjects. Currently supported subobjects are IPv4 prefix +// and 4-byte AS number. +type FlowRSVPPathExplicitRouteType1 struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // Description missing in models - // required = true - Choice *ActionResponseProtocolIpv6_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.ActionResponseProtocolIpv6_Choice_Enum,oneof" json:"choice,omitempty"` - // Description missing in models - Ping *ActionResponseProtocolIpv6Ping `protobuf:"bytes,2,opt,name=ping,proto3" json:"ping,omitempty"` + Subobjects []*FlowRSVPType1ExplicitRouteSubobjects `protobuf:"bytes,1,rep,name=subobjects,proto3" json:"subobjects,omitempty"` } -func (x *ActionResponseProtocolIpv6) Reset() { - *x = ActionResponseProtocolIpv6{} +func (x *FlowRSVPPathExplicitRouteType1) Reset() { + *x = FlowRSVPPathExplicitRouteType1{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[252] + mi := &file_otg_proto_msgTypes[208] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *ActionResponseProtocolIpv6) String() string { +func (x *FlowRSVPPathExplicitRouteType1) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ActionResponseProtocolIpv6) ProtoMessage() {} +func (*FlowRSVPPathExplicitRouteType1) ProtoMessage() {} -func (x *ActionResponseProtocolIpv6) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[252] +func (x *FlowRSVPPathExplicitRouteType1) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[208] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -39505,52 +39376,45 @@ func (x *ActionResponseProtocolIpv6) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use ActionResponseProtocolIpv6.ProtoReflect.Descriptor instead. -func (*ActionResponseProtocolIpv6) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{252} -} - -func (x *ActionResponseProtocolIpv6) GetChoice() ActionResponseProtocolIpv6_Choice_Enum { - if x != nil && x.Choice != nil { - return *x.Choice - } - return ActionResponseProtocolIpv6_Choice_unspecified +// Deprecated: Use FlowRSVPPathExplicitRouteType1.ProtoReflect.Descriptor instead. +func (*FlowRSVPPathExplicitRouteType1) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{208} } -func (x *ActionResponseProtocolIpv6) GetPing() *ActionResponseProtocolIpv6Ping { +func (x *FlowRSVPPathExplicitRouteType1) GetSubobjects() []*FlowRSVPType1ExplicitRouteSubobjects { if x != nil { - return x.Ping + return x.Subobjects } return nil } -// Request for initiating ping between multiple source and destination pairs. -type ActionProtocolIpv6Ping struct { +// Type is specific to a subobject. +type FlowRSVPType1ExplicitRouteSubobjects struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // List of IPv6 ping requests. - Requests []*ActionProtocolIpv6PingRequest `protobuf:"bytes,1,rep,name=requests,proto3" json:"requests,omitempty"` + // Description missing in models + Type *FlowRSVPType1ExplicitRouteSubobjectsType `protobuf:"bytes,1,opt,name=type,proto3" json:"type,omitempty"` } -func (x *ActionProtocolIpv6Ping) Reset() { - *x = ActionProtocolIpv6Ping{} +func (x *FlowRSVPType1ExplicitRouteSubobjects) Reset() { + *x = FlowRSVPType1ExplicitRouteSubobjects{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[253] + mi := &file_otg_proto_msgTypes[209] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *ActionProtocolIpv6Ping) String() string { +func (x *FlowRSVPType1ExplicitRouteSubobjects) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ActionProtocolIpv6Ping) ProtoMessage() {} +func (*FlowRSVPType1ExplicitRouteSubobjects) ProtoMessage() {} -func (x *ActionProtocolIpv6Ping) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[253] +func (x *FlowRSVPType1ExplicitRouteSubobjects) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[209] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -39561,59 +39425,50 @@ func (x *ActionProtocolIpv6Ping) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use ActionProtocolIpv6Ping.ProtoReflect.Descriptor instead. -func (*ActionProtocolIpv6Ping) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{253} +// Deprecated: Use FlowRSVPType1ExplicitRouteSubobjects.ProtoReflect.Descriptor instead. +func (*FlowRSVPType1ExplicitRouteSubobjects) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{209} } -func (x *ActionProtocolIpv6Ping) GetRequests() []*ActionProtocolIpv6PingRequest { +func (x *FlowRSVPType1ExplicitRouteSubobjects) GetType() *FlowRSVPType1ExplicitRouteSubobjectsType { if x != nil { - return x.Requests + return x.Type } return nil } -// Under Review: Most ping request parameters are still TBD. -// -// Under Review: Most ping request parameters are still TBD. -// -// Request for initiating ping between a single source and destination pair. -// For ping request, 1 IPv6 ICMP Echo Request shall be sent and wait for ping response -// to either succeed or time out. The API wait timeout for each request shall be 300ms. -type ActionProtocolIpv6PingRequest struct { +// Currently supported subobjects are IPv4 address(1) and 4-byte AS number(5). +type FlowRSVPType1ExplicitRouteSubobjectsType struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Name of source IPv6 interface to be used. - // - // x-constraint: - // - /components/schemas/Device.Ipv6/properties/name - // - // x-constraint: - // - /components/schemas/Device.Ipv6/properties/name - SrcName *string `protobuf:"bytes,1,opt,name=src_name,json=srcName,proto3,oneof" json:"src_name,omitempty"` - // Destination IPv6 address to ping. - DstIp *string `protobuf:"bytes,2,opt,name=dst_ip,json=dstIp,proto3,oneof" json:"dst_ip,omitempty"` + // Description missing in models + // default = Choice.Enum.ipv4_prefix + Choice *FlowRSVPType1ExplicitRouteSubobjectsType_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.FlowRSVPType1ExplicitRouteSubobjectsType_Choice_Enum,oneof" json:"choice,omitempty"` + // Description missing in models + Ipv4Prefix *FlowRSVPPathExplicitRouteType1Ipv4Prefix `protobuf:"bytes,2,opt,name=ipv4_prefix,json=ipv4Prefix,proto3" json:"ipv4_prefix,omitempty"` + // Description missing in models + FourByteAsNumber *FlowRSVPPathExplicitRouteType1FourByteASNumber `protobuf:"bytes,3,opt,name=four_byte_as_number,json=fourByteAsNumber,proto3" json:"four_byte_as_number,omitempty"` } -func (x *ActionProtocolIpv6PingRequest) Reset() { - *x = ActionProtocolIpv6PingRequest{} +func (x *FlowRSVPType1ExplicitRouteSubobjectsType) Reset() { + *x = FlowRSVPType1ExplicitRouteSubobjectsType{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[254] + mi := &file_otg_proto_msgTypes[210] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *ActionProtocolIpv6PingRequest) String() string { +func (x *FlowRSVPType1ExplicitRouteSubobjectsType) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ActionProtocolIpv6PingRequest) ProtoMessage() {} +func (*FlowRSVPType1ExplicitRouteSubobjectsType) ProtoMessage() {} -func (x *ActionProtocolIpv6PingRequest) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[254] +func (x *FlowRSVPType1ExplicitRouteSubobjectsType) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[210] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -39624,52 +39479,68 @@ func (x *ActionProtocolIpv6PingRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use ActionProtocolIpv6PingRequest.ProtoReflect.Descriptor instead. -func (*ActionProtocolIpv6PingRequest) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{254} +// Deprecated: Use FlowRSVPType1ExplicitRouteSubobjectsType.ProtoReflect.Descriptor instead. +func (*FlowRSVPType1ExplicitRouteSubobjectsType) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{210} } -func (x *ActionProtocolIpv6PingRequest) GetSrcName() string { - if x != nil && x.SrcName != nil { - return *x.SrcName +func (x *FlowRSVPType1ExplicitRouteSubobjectsType) GetChoice() FlowRSVPType1ExplicitRouteSubobjectsType_Choice_Enum { + if x != nil && x.Choice != nil { + return *x.Choice } - return "" + return FlowRSVPType1ExplicitRouteSubobjectsType_Choice_unspecified } -func (x *ActionProtocolIpv6PingRequest) GetDstIp() string { - if x != nil && x.DstIp != nil { - return *x.DstIp +func (x *FlowRSVPType1ExplicitRouteSubobjectsType) GetIpv4Prefix() *FlowRSVPPathExplicitRouteType1Ipv4Prefix { + if x != nil { + return x.Ipv4Prefix } - return "" + return nil } -// Response for ping initiated between multiple source and destination pairs. -type ActionResponseProtocolIpv6Ping struct { +func (x *FlowRSVPType1ExplicitRouteSubobjectsType) GetFourByteAsNumber() *FlowRSVPPathExplicitRouteType1FourByteASNumber { + if x != nil { + return x.FourByteAsNumber + } + return nil +} + +// Class = EXPLICIT_ROUTE, Type1 ROUTE_RECORD C-Type = 1 Subobject: IPv4 Prefix, C-Type: +// 1 +type FlowRSVPPathExplicitRouteType1Ipv4Prefix struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // List of responses for IPv6 ping responses. - Responses []*ActionResponseProtocolIpv6PingResponse `protobuf:"bytes,1,rep,name=responses,proto3" json:"responses,omitempty"` + // Description missing in models + LBit *PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixLBit `protobuf:"bytes,1,opt,name=l_bit,json=lBit,proto3" json:"l_bit,omitempty"` + // The Length contains the total length of the subobject in bytes,including L ,Type + // and Length fields. The Length MUST be atleast 4, and MUST be a multiple of 4. + Length *FlowRSVPExplicitRouteLength `protobuf:"bytes,2,opt,name=length,proto3" json:"length,omitempty"` + // Description missing in models + Ipv4Address *PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixIpv4Address `protobuf:"bytes,3,opt,name=ipv4_address,json=ipv4Address,proto3" json:"ipv4_address,omitempty"` + // The prefix of the IPv4 address. + // default = 32 + Prefix *uint32 `protobuf:"varint,4,opt,name=prefix,proto3,oneof" json:"prefix,omitempty"` } -func (x *ActionResponseProtocolIpv6Ping) Reset() { - *x = ActionResponseProtocolIpv6Ping{} +func (x *FlowRSVPPathExplicitRouteType1Ipv4Prefix) Reset() { + *x = FlowRSVPPathExplicitRouteType1Ipv4Prefix{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[255] + mi := &file_otg_proto_msgTypes[211] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *ActionResponseProtocolIpv6Ping) String() string { +func (x *FlowRSVPPathExplicitRouteType1Ipv4Prefix) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ActionResponseProtocolIpv6Ping) ProtoMessage() {} +func (*FlowRSVPPathExplicitRouteType1Ipv4Prefix) ProtoMessage() {} -func (x *ActionResponseProtocolIpv6Ping) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[255] +func (x *FlowRSVPPathExplicitRouteType1Ipv4Prefix) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[211] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -39680,59 +39551,77 @@ func (x *ActionResponseProtocolIpv6Ping) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use ActionResponseProtocolIpv6Ping.ProtoReflect.Descriptor instead. -func (*ActionResponseProtocolIpv6Ping) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{255} +// Deprecated: Use FlowRSVPPathExplicitRouteType1Ipv4Prefix.ProtoReflect.Descriptor instead. +func (*FlowRSVPPathExplicitRouteType1Ipv4Prefix) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{211} } -func (x *ActionResponseProtocolIpv6Ping) GetResponses() []*ActionResponseProtocolIpv6PingResponse { +func (x *FlowRSVPPathExplicitRouteType1Ipv4Prefix) GetLBit() *PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixLBit { if x != nil { - return x.Responses + return x.LBit } return nil } -// Response for ping initiated between a single source and destination pair. -type ActionResponseProtocolIpv6PingResponse struct { +func (x *FlowRSVPPathExplicitRouteType1Ipv4Prefix) GetLength() *FlowRSVPExplicitRouteLength { + if x != nil { + return x.Length + } + return nil +} + +func (x *FlowRSVPPathExplicitRouteType1Ipv4Prefix) GetIpv4Address() *PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixIpv4Address { + if x != nil { + return x.Ipv4Address + } + return nil +} + +func (x *FlowRSVPPathExplicitRouteType1Ipv4Prefix) GetPrefix() uint32 { + if x != nil && x.Prefix != nil { + return *x.Prefix + } + return 0 +} + +// Class = EXPLICIT_ROUTE, Type1 ROUTE_RECORD C-Type = 1 Subobject: 4-byte AS number, +// C-Type: 32 +type FlowRSVPPathExplicitRouteType1FourByteASNumber struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Name of source IPv6 interface used for ping. - // - // x-constraint: - // - /components/schemas/Device.Ipv6/properties/name - // - // x-constraint: - // - /components/schemas/Device.Ipv6/properties/name - // - // required = true - SrcName *string `protobuf:"bytes,1,opt,name=src_name,json=srcName,proto3,oneof" json:"src_name,omitempty"` - // Destination IPv6 address used for ping. - // required = true - DstIp *string `protobuf:"bytes,2,opt,name=dst_ip,json=dstIp,proto3,oneof" json:"dst_ip,omitempty"` - // Result of the ping request. - // required = true - Result *ActionResponseProtocolIpv6PingResponse_Result_Enum `protobuf:"varint,3,opt,name=result,proto3,enum=otg.ActionResponseProtocolIpv6PingResponse_Result_Enum,oneof" json:"result,omitempty"` + // Description missing in models + LBit *PatternFlowRSVPPathExplicitRouteType1FourByteASNumberLBit `protobuf:"bytes,1,opt,name=l_bit,json=lBit,proto3" json:"l_bit,omitempty"` + // The Length contains the total length of the subobject in bytes,including L ,Type + // and Length fields. The Length MUST be atleast 4, and MUST be a multiple of 4. + Length *FlowRSVPExplicitRouteLength `protobuf:"bytes,2,opt,name=length,proto3" json:"length,omitempty"` + // Description missing in models + Reserved *PatternFlowRSVPPathExplicitRouteType1FourByteASNumberReserved `protobuf:"bytes,3,opt,name=reserved,proto3" json:"reserved,omitempty"` + // Autonomous System number to be set in the ERO sub-object that this LSP should traverse + // through. This field is applicable only if the value of 'type' is set to 'as_number'. + // Note that as per RFC3209, 4-byte AS encoding is not supported. + // default = 0 + AsNumber *uint32 `protobuf:"varint,4,opt,name=as_number,json=asNumber,proto3,oneof" json:"as_number,omitempty"` } -func (x *ActionResponseProtocolIpv6PingResponse) Reset() { - *x = ActionResponseProtocolIpv6PingResponse{} +func (x *FlowRSVPPathExplicitRouteType1FourByteASNumber) Reset() { + *x = FlowRSVPPathExplicitRouteType1FourByteASNumber{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[256] + mi := &file_otg_proto_msgTypes[212] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *ActionResponseProtocolIpv6PingResponse) String() string { +func (x *FlowRSVPPathExplicitRouteType1FourByteASNumber) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ActionResponseProtocolIpv6PingResponse) ProtoMessage() {} +func (*FlowRSVPPathExplicitRouteType1FourByteASNumber) ProtoMessage() {} -func (x *ActionResponseProtocolIpv6PingResponse) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[256] +func (x *FlowRSVPPathExplicitRouteType1FourByteASNumber) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[212] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -39743,64 +39632,74 @@ func (x *ActionResponseProtocolIpv6PingResponse) ProtoReflect() protoreflect.Mes return mi.MessageOf(x) } -// Deprecated: Use ActionResponseProtocolIpv6PingResponse.ProtoReflect.Descriptor instead. -func (*ActionResponseProtocolIpv6PingResponse) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{256} +// Deprecated: Use FlowRSVPPathExplicitRouteType1FourByteASNumber.ProtoReflect.Descriptor instead. +func (*FlowRSVPPathExplicitRouteType1FourByteASNumber) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{212} } -func (x *ActionResponseProtocolIpv6PingResponse) GetSrcName() string { - if x != nil && x.SrcName != nil { - return *x.SrcName +func (x *FlowRSVPPathExplicitRouteType1FourByteASNumber) GetLBit() *PatternFlowRSVPPathExplicitRouteType1FourByteASNumberLBit { + if x != nil { + return x.LBit } - return "" + return nil } -func (x *ActionResponseProtocolIpv6PingResponse) GetDstIp() string { - if x != nil && x.DstIp != nil { - return *x.DstIp +func (x *FlowRSVPPathExplicitRouteType1FourByteASNumber) GetLength() *FlowRSVPExplicitRouteLength { + if x != nil { + return x.Length } - return "" + return nil } -func (x *ActionResponseProtocolIpv6PingResponse) GetResult() ActionResponseProtocolIpv6PingResponse_Result_Enum { - if x != nil && x.Result != nil { - return *x.Result +func (x *FlowRSVPPathExplicitRouteType1FourByteASNumber) GetReserved() *PatternFlowRSVPPathExplicitRouteType1FourByteASNumberReserved { + if x != nil { + return x.Reserved } - return ActionResponseProtocolIpv6PingResponse_Result_unspecified + return nil } -// Actions associated with BGP on configured resources. -type ActionProtocolBgp struct { +func (x *FlowRSVPPathExplicitRouteType1FourByteASNumber) GetAsNumber() uint32 { + if x != nil && x.AsNumber != nil { + return *x.AsNumber + } + return 0 +} + +// Description missing in models +type FlowRSVPExplicitRouteLength struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields + // auto or configured value. + // default = Choice.Enum.auto + Choice *FlowRSVPExplicitRouteLength_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.FlowRSVPExplicitRouteLength_Choice_Enum,oneof" json:"choice,omitempty"` + // The OTG implementation can provide a system generated value for this property. If + // the OTG is unable to generate a value the default value must be used. + // default = 8 + Auto *uint32 `protobuf:"varint,2,opt,name=auto,proto3,oneof" json:"auto,omitempty"` // Description missing in models - // required = true - Choice *ActionProtocolBgp_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.ActionProtocolBgp_Choice_Enum,oneof" json:"choice,omitempty"` - // Description missing in models - Notification *ActionProtocolBgpNotification `protobuf:"bytes,2,opt,name=notification,proto3" json:"notification,omitempty"` - // Description missing in models - InitiateGracefulRestart *ActionProtocolBgpInitiateGracefulRestart `protobuf:"bytes,3,opt,name=initiate_graceful_restart,json=initiateGracefulRestart,proto3" json:"initiate_graceful_restart,omitempty"` + // default = 8 + Value *uint32 `protobuf:"varint,3,opt,name=value,proto3,oneof" json:"value,omitempty"` } -func (x *ActionProtocolBgp) Reset() { - *x = ActionProtocolBgp{} +func (x *FlowRSVPExplicitRouteLength) Reset() { + *x = FlowRSVPExplicitRouteLength{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[257] + mi := &file_otg_proto_msgTypes[213] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *ActionProtocolBgp) String() string { +func (x *FlowRSVPExplicitRouteLength) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ActionProtocolBgp) ProtoMessage() {} +func (*FlowRSVPExplicitRouteLength) ProtoMessage() {} -func (x *ActionProtocolBgp) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[257] +func (x *FlowRSVPExplicitRouteLength) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[213] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -39811,94 +39710,59 @@ func (x *ActionProtocolBgp) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use ActionProtocolBgp.ProtoReflect.Descriptor instead. -func (*ActionProtocolBgp) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{257} +// Deprecated: Use FlowRSVPExplicitRouteLength.ProtoReflect.Descriptor instead. +func (*FlowRSVPExplicitRouteLength) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{213} } -func (x *ActionProtocolBgp) GetChoice() ActionProtocolBgp_Choice_Enum { +func (x *FlowRSVPExplicitRouteLength) GetChoice() FlowRSVPExplicitRouteLength_Choice_Enum { if x != nil && x.Choice != nil { return *x.Choice } - return ActionProtocolBgp_Choice_unspecified + return FlowRSVPExplicitRouteLength_Choice_unspecified } -func (x *ActionProtocolBgp) GetNotification() *ActionProtocolBgpNotification { - if x != nil { - return x.Notification +func (x *FlowRSVPExplicitRouteLength) GetAuto() uint32 { + if x != nil && x.Auto != nil { + return *x.Auto } - return nil + return 0 } -func (x *ActionProtocolBgp) GetInitiateGracefulRestart() *ActionProtocolBgpInitiateGracefulRestart { - if x != nil { - return x.InitiateGracefulRestart +func (x *FlowRSVPExplicitRouteLength) GetValue() uint32 { + if x != nil && x.Value != nil { + return *x.Value } - return nil + return 0 } -// A NOTIFICATION message is sent when an error is detected with the BGP session, such -// as hold timer expiring, misconfigured AS number or a BGP session reset is requested. -// This causes the BGP connection to close. Send explicit NOTIFICATIONs for list of -// specified BGP peers. If a user wants to send custom Error Code and Error Subcode -// the custom object should be configured. A user can send IANA defined BGP NOTIFICATIONs -// according to https://www.iana.org/assignments/bgp-parameters/bgp-parameters.xhtml. -type ActionProtocolBgpNotification struct { +// C-Type is specific to a class num. +type FlowRSVPPathObjectsClassLabelRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // The names of BGP Peers to send NOTIFICATION to. If no name is specified then NOTIFICATION - // will be sent to all configured BGP peers. - // - // x-constraint: - // - /components/schemas/Device.Bgp/properties/name - // - // x-constraint: - // - /components/schemas/Device.Bgp/properties/name - Names []string `protobuf:"bytes,1,rep,name=names,proto3" json:"names,omitempty"` - // Each BGP NOTIFICATION message includes an Error Code field indicating what type of - // problem occurred. For certain Error Codes, an Error Subcode field provides additional - // details about the specific nature of the problem. The choice value will provide - // the Error Code used in NOTIFICATION message. The Subcode can be set for each of - // the corresponding errors except for Hold Timer Expired error and BGP Finite State - // Machine error. In both of these cases Subcode 0 will be sent. If a user wants to - // use non zero Sub Code then custom choice can be used. - // default = Choice.Enum.cease - Choice *ActionProtocolBgpNotification_Choice_Enum `protobuf:"varint,2,opt,name=choice,proto3,enum=otg.ActionProtocolBgpNotification_Choice_Enum,oneof" json:"choice,omitempty"` - // Description missing in models - Cease *DeviceBgpCeaseError `protobuf:"bytes,3,opt,name=cease,proto3" json:"cease,omitempty"` - // Description missing in models - MessageHeaderError *DeviceBgpMessageHeaderError `protobuf:"bytes,4,opt,name=message_header_error,json=messageHeaderError,proto3" json:"message_header_error,omitempty"` - // Description missing in models - OpenMessageError *DeviceBgpOpenMessageError `protobuf:"bytes,5,opt,name=open_message_error,json=openMessageError,proto3" json:"open_message_error,omitempty"` - // Description missing in models - UpdateMessageError *DeviceBgpUpdateMessageError `protobuf:"bytes,6,opt,name=update_message_error,json=updateMessageError,proto3" json:"update_message_error,omitempty"` - // Description missing in models - HoldTimerExpired *DeviceBgpHoldTimerExpired `protobuf:"bytes,7,opt,name=hold_timer_expired,json=holdTimerExpired,proto3" json:"hold_timer_expired,omitempty"` - // Description missing in models - FiniteStateMachineError *DeviceBgpFiniteStateMachineError `protobuf:"bytes,8,opt,name=finite_state_machine_error,json=finiteStateMachineError,proto3" json:"finite_state_machine_error,omitempty"` // Description missing in models - Custom *DeviceBgpCustomError `protobuf:"bytes,9,opt,name=custom,proto3" json:"custom,omitempty"` + CType *FlowRSVPPathObjectsLabelRequestCType `protobuf:"bytes,1,opt,name=c_type,json=cType,proto3" json:"c_type,omitempty"` } -func (x *ActionProtocolBgpNotification) Reset() { - *x = ActionProtocolBgpNotification{} +func (x *FlowRSVPPathObjectsClassLabelRequest) Reset() { + *x = FlowRSVPPathObjectsClassLabelRequest{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[258] + mi := &file_otg_proto_msgTypes[214] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *ActionProtocolBgpNotification) String() string { +func (x *FlowRSVPPathObjectsClassLabelRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ActionProtocolBgpNotification) ProtoMessage() {} +func (*FlowRSVPPathObjectsClassLabelRequest) ProtoMessage() {} -func (x *ActionProtocolBgpNotification) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[258] +func (x *FlowRSVPPathObjectsClassLabelRequest) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[214] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -39909,113 +39773,49 @@ func (x *ActionProtocolBgpNotification) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use ActionProtocolBgpNotification.ProtoReflect.Descriptor instead. -func (*ActionProtocolBgpNotification) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{258} -} - -func (x *ActionProtocolBgpNotification) GetNames() []string { - if x != nil { - return x.Names - } - return nil -} - -func (x *ActionProtocolBgpNotification) GetChoice() ActionProtocolBgpNotification_Choice_Enum { - if x != nil && x.Choice != nil { - return *x.Choice - } - return ActionProtocolBgpNotification_Choice_unspecified -} - -func (x *ActionProtocolBgpNotification) GetCease() *DeviceBgpCeaseError { - if x != nil { - return x.Cease - } - return nil -} - -func (x *ActionProtocolBgpNotification) GetMessageHeaderError() *DeviceBgpMessageHeaderError { - if x != nil { - return x.MessageHeaderError - } - return nil -} - -func (x *ActionProtocolBgpNotification) GetOpenMessageError() *DeviceBgpOpenMessageError { - if x != nil { - return x.OpenMessageError - } - return nil -} - -func (x *ActionProtocolBgpNotification) GetUpdateMessageError() *DeviceBgpUpdateMessageError { - if x != nil { - return x.UpdateMessageError - } - return nil -} - -func (x *ActionProtocolBgpNotification) GetHoldTimerExpired() *DeviceBgpHoldTimerExpired { - if x != nil { - return x.HoldTimerExpired - } - return nil -} - -func (x *ActionProtocolBgpNotification) GetFiniteStateMachineError() *DeviceBgpFiniteStateMachineError { - if x != nil { - return x.FiniteStateMachineError - } - return nil +// Deprecated: Use FlowRSVPPathObjectsClassLabelRequest.ProtoReflect.Descriptor instead. +func (*FlowRSVPPathObjectsClassLabelRequest) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{214} } -func (x *ActionProtocolBgpNotification) GetCustom() *DeviceBgpCustomError { +func (x *FlowRSVPPathObjectsClassLabelRequest) GetCType() *FlowRSVPPathObjectsLabelRequestCType { if x != nil { - return x.Custom + return x.CType } return nil } -// Initiates BGP Graceful Restart process for the selected BGP peers. If no name is -// specified then Graceful Restart will be sent to all configured BGP peers. -type ActionProtocolBgpInitiateGracefulRestart struct { +// Object for LABEL_REQUEST class. Currently supported c-type is Without Label Range +// (1). +type FlowRSVPPathObjectsLabelRequestCType struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // The names of device BGP peers objects to control. - // - // x-constraint: - // - /components/schemas/Device.Bgp/properties/name - // - // x-constraint: - // - /components/schemas/Device.Bgp/properties/name - PeerNames []string `protobuf:"bytes,1,rep,name=peer_names,json=peerNames,proto3" json:"peer_names,omitempty"` - // Duration (in seconds) after which selected BGP peers will initiate - // Graceful restart by sending the Open Message with Restart State bit set in the Graceful - // Restart capability. - // default = 30 - RestartDelay *uint32 `protobuf:"varint,2,opt,name=restart_delay,json=restartDelay,proto3,oneof" json:"restart_delay,omitempty"` + // Description missing in models + // default = Choice.Enum.without_label_range + Choice *FlowRSVPPathObjectsLabelRequestCType_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.FlowRSVPPathObjectsLabelRequestCType_Choice_Enum,oneof" json:"choice,omitempty"` + // Description missing in models + WithoutLabelRange *FlowRSVPPathLabelRequestWithoutLabelRange `protobuf:"bytes,2,opt,name=without_label_range,json=withoutLabelRange,proto3" json:"without_label_range,omitempty"` } -func (x *ActionProtocolBgpInitiateGracefulRestart) Reset() { - *x = ActionProtocolBgpInitiateGracefulRestart{} +func (x *FlowRSVPPathObjectsLabelRequestCType) Reset() { + *x = FlowRSVPPathObjectsLabelRequestCType{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[259] + mi := &file_otg_proto_msgTypes[215] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *ActionProtocolBgpInitiateGracefulRestart) String() string { +func (x *FlowRSVPPathObjectsLabelRequestCType) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ActionProtocolBgpInitiateGracefulRestart) ProtoMessage() {} +func (*FlowRSVPPathObjectsLabelRequestCType) ProtoMessage() {} -func (x *ActionProtocolBgpInitiateGracefulRestart) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[259] +func (x *FlowRSVPPathObjectsLabelRequestCType) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[215] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -40026,71 +39826,54 @@ func (x *ActionProtocolBgpInitiateGracefulRestart) ProtoReflect() protoreflect.M return mi.MessageOf(x) } -// Deprecated: Use ActionProtocolBgpInitiateGracefulRestart.ProtoReflect.Descriptor instead. -func (*ActionProtocolBgpInitiateGracefulRestart) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{259} +// Deprecated: Use FlowRSVPPathObjectsLabelRequestCType.ProtoReflect.Descriptor instead. +func (*FlowRSVPPathObjectsLabelRequestCType) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{215} } -func (x *ActionProtocolBgpInitiateGracefulRestart) GetPeerNames() []string { - if x != nil { - return x.PeerNames +func (x *FlowRSVPPathObjectsLabelRequestCType) GetChoice() FlowRSVPPathObjectsLabelRequestCType_Choice_Enum { + if x != nil && x.Choice != nil { + return *x.Choice } - return nil + return FlowRSVPPathObjectsLabelRequestCType_Choice_unspecified } -func (x *ActionProtocolBgpInitiateGracefulRestart) GetRestartDelay() uint32 { - if x != nil && x.RestartDelay != nil { - return *x.RestartDelay +func (x *FlowRSVPPathObjectsLabelRequestCType) GetWithoutLabelRange() *FlowRSVPPathLabelRequestWithoutLabelRange { + if x != nil { + return x.WithoutLabelRange } - return 0 + return nil } -// Request to traffic generator for metrics of choice. -type MetricsRequest struct { +// Class = LABEL_REQUEST, Without Label Range C-Type = 1 +type FlowRSVPPathLabelRequestWithoutLabelRange struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // Description missing in models - // default = Choice.Enum.port - Choice *MetricsRequest_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.MetricsRequest_Choice_Enum,oneof" json:"choice,omitempty"` - // Description missing in models - Port *PortMetricsRequest `protobuf:"bytes,2,opt,name=port,proto3" json:"port,omitempty"` - // Description missing in models - Flow *FlowMetricsRequest `protobuf:"bytes,3,opt,name=flow,proto3" json:"flow,omitempty"` - // Description missing in models - Bgpv4 *Bgpv4MetricsRequest `protobuf:"bytes,4,opt,name=bgpv4,proto3" json:"bgpv4,omitempty"` - // Description missing in models - Bgpv6 *Bgpv6MetricsRequest `protobuf:"bytes,5,opt,name=bgpv6,proto3" json:"bgpv6,omitempty"` - // Description missing in models - Isis *IsisMetricsRequest `protobuf:"bytes,6,opt,name=isis,proto3" json:"isis,omitempty"` - // Description missing in models - Lag *LagMetricsRequest `protobuf:"bytes,7,opt,name=lag,proto3" json:"lag,omitempty"` - // Description missing in models - Lacp *LacpMetricsRequest `protobuf:"bytes,8,opt,name=lacp,proto3" json:"lacp,omitempty"` - // Description missing in models - Lldp *LldpMetricsRequest `protobuf:"bytes,9,opt,name=lldp,proto3" json:"lldp,omitempty"` + Reserved *PatternFlowRSVPPathLabelRequestWithoutLabelRangeReserved `protobuf:"bytes,1,opt,name=reserved,proto3" json:"reserved,omitempty"` // Description missing in models - Rsvp *RsvpMetricsRequest `protobuf:"bytes,10,opt,name=rsvp,proto3" json:"rsvp,omitempty"` + L3Pid *PatternFlowRSVPPathLabelRequestWithoutLabelRangeL3Pid `protobuf:"bytes,2,opt,name=l3pid,proto3" json:"l3pid,omitempty"` } -func (x *MetricsRequest) Reset() { - *x = MetricsRequest{} +func (x *FlowRSVPPathLabelRequestWithoutLabelRange) Reset() { + *x = FlowRSVPPathLabelRequestWithoutLabelRange{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[260] + mi := &file_otg_proto_msgTypes[216] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *MetricsRequest) String() string { +func (x *FlowRSVPPathLabelRequestWithoutLabelRange) String() string { return protoimpl.X.MessageStringOf(x) } -func (*MetricsRequest) ProtoMessage() {} +func (*FlowRSVPPathLabelRequestWithoutLabelRange) ProtoMessage() {} -func (x *MetricsRequest) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[260] +func (x *FlowRSVPPathLabelRequestWithoutLabelRange) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[216] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -40101,127 +39884,107 @@ func (x *MetricsRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use MetricsRequest.ProtoReflect.Descriptor instead. -func (*MetricsRequest) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{260} -} - -func (x *MetricsRequest) GetChoice() MetricsRequest_Choice_Enum { - if x != nil && x.Choice != nil { - return *x.Choice - } - return MetricsRequest_Choice_unspecified +// Deprecated: Use FlowRSVPPathLabelRequestWithoutLabelRange.ProtoReflect.Descriptor instead. +func (*FlowRSVPPathLabelRequestWithoutLabelRange) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{216} } -func (x *MetricsRequest) GetPort() *PortMetricsRequest { +func (x *FlowRSVPPathLabelRequestWithoutLabelRange) GetReserved() *PatternFlowRSVPPathLabelRequestWithoutLabelRangeReserved { if x != nil { - return x.Port + return x.Reserved } return nil } -func (x *MetricsRequest) GetFlow() *FlowMetricsRequest { +func (x *FlowRSVPPathLabelRequestWithoutLabelRange) GetL3Pid() *PatternFlowRSVPPathLabelRequestWithoutLabelRangeL3Pid { if x != nil { - return x.Flow + return x.L3Pid } return nil } -func (x *MetricsRequest) GetBgpv4() *Bgpv4MetricsRequest { - if x != nil { - return x.Bgpv4 - } - return nil -} +// C-Type is specific to a class num. +type FlowRSVPPathObjectsClassSessionAttribute struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields -func (x *MetricsRequest) GetBgpv6() *Bgpv6MetricsRequest { - if x != nil { - return x.Bgpv6 - } - return nil + // Description missing in models + CType *FlowRSVPPathObjectsSessionAttributeCType `protobuf:"bytes,1,opt,name=c_type,json=cType,proto3" json:"c_type,omitempty"` } -func (x *MetricsRequest) GetIsis() *IsisMetricsRequest { - if x != nil { - return x.Isis +func (x *FlowRSVPPathObjectsClassSessionAttribute) Reset() { + *x = FlowRSVPPathObjectsClassSessionAttribute{} + if protoimpl.UnsafeEnabled { + mi := &file_otg_proto_msgTypes[217] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } - return nil } -func (x *MetricsRequest) GetLag() *LagMetricsRequest { - if x != nil { - return x.Lag - } - return nil +func (x *FlowRSVPPathObjectsClassSessionAttribute) String() string { + return protoimpl.X.MessageStringOf(x) } -func (x *MetricsRequest) GetLacp() *LacpMetricsRequest { - if x != nil { - return x.Lacp +func (*FlowRSVPPathObjectsClassSessionAttribute) ProtoMessage() {} + +func (x *FlowRSVPPathObjectsClassSessionAttribute) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[217] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms } - return nil + return mi.MessageOf(x) } -func (x *MetricsRequest) GetLldp() *LldpMetricsRequest { - if x != nil { - return x.Lldp - } - return nil +// Deprecated: Use FlowRSVPPathObjectsClassSessionAttribute.ProtoReflect.Descriptor instead. +func (*FlowRSVPPathObjectsClassSessionAttribute) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{217} } -func (x *MetricsRequest) GetRsvp() *RsvpMetricsRequest { +func (x *FlowRSVPPathObjectsClassSessionAttribute) GetCType() *FlowRSVPPathObjectsSessionAttributeCType { if x != nil { - return x.Rsvp + return x.CType } return nil } -// Response containing chosen traffic generator metrics. -type MetricsResponse struct { +// Object for SESSION_ATTRIBUTE class. Currently supported c-type is LSP_Tunnel (1) +// and LSP_Tunnel (7). +type FlowRSVPPathObjectsSessionAttributeCType struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // Description missing in models - // default = Choice.Enum.port_metrics - Choice *MetricsResponse_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.MetricsResponse_Choice_Enum,oneof" json:"choice,omitempty"` - // Description missing in models - PortMetrics []*PortMetric `protobuf:"bytes,2,rep,name=port_metrics,json=portMetrics,proto3" json:"port_metrics,omitempty"` - // Description missing in models - FlowMetrics []*FlowMetric `protobuf:"bytes,3,rep,name=flow_metrics,json=flowMetrics,proto3" json:"flow_metrics,omitempty"` - // Description missing in models - Bgpv4Metrics []*Bgpv4Metric `protobuf:"bytes,4,rep,name=bgpv4_metrics,json=bgpv4Metrics,proto3" json:"bgpv4_metrics,omitempty"` - // Description missing in models - Bgpv6Metrics []*Bgpv6Metric `protobuf:"bytes,5,rep,name=bgpv6_metrics,json=bgpv6Metrics,proto3" json:"bgpv6_metrics,omitempty"` - // Description missing in models - IsisMetrics []*IsisMetric `protobuf:"bytes,6,rep,name=isis_metrics,json=isisMetrics,proto3" json:"isis_metrics,omitempty"` - // Description missing in models - LagMetrics []*LagMetric `protobuf:"bytes,7,rep,name=lag_metrics,json=lagMetrics,proto3" json:"lag_metrics,omitempty"` - // Description missing in models - LacpMetrics []*LacpMetric `protobuf:"bytes,8,rep,name=lacp_metrics,json=lacpMetrics,proto3" json:"lacp_metrics,omitempty"` + // default = Choice.Enum.lsp_tunnel + Choice *FlowRSVPPathObjectsSessionAttributeCType_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.FlowRSVPPathObjectsSessionAttributeCType_Choice_Enum,oneof" json:"choice,omitempty"` // Description missing in models - LldpMetrics []*LldpMetric `protobuf:"bytes,9,rep,name=lldp_metrics,json=lldpMetrics,proto3" json:"lldp_metrics,omitempty"` + LspTunnel *FlowRSVPPathSessionAttributeLspTunnel `protobuf:"bytes,2,opt,name=lsp_tunnel,json=lspTunnel,proto3" json:"lsp_tunnel,omitempty"` // Description missing in models - RsvpMetrics []*RsvpMetric `protobuf:"bytes,10,rep,name=rsvp_metrics,json=rsvpMetrics,proto3" json:"rsvp_metrics,omitempty"` + LspTunnelRa *FlowRSVPPathSessionAttributeLspTunnelRa `protobuf:"bytes,3,opt,name=lsp_tunnel_ra,json=lspTunnelRa,proto3" json:"lsp_tunnel_ra,omitempty"` } -func (x *MetricsResponse) Reset() { - *x = MetricsResponse{} +func (x *FlowRSVPPathObjectsSessionAttributeCType) Reset() { + *x = FlowRSVPPathObjectsSessionAttributeCType{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[261] + mi := &file_otg_proto_msgTypes[218] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *MetricsResponse) String() string { +func (x *FlowRSVPPathObjectsSessionAttributeCType) String() string { return protoimpl.X.MessageStringOf(x) } -func (*MetricsResponse) ProtoMessage() {} +func (*FlowRSVPPathObjectsSessionAttributeCType) ProtoMessage() {} -func (x *MetricsResponse) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[261] +func (x *FlowRSVPPathObjectsSessionAttributeCType) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[218] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -40232,118 +39995,188 @@ func (x *MetricsResponse) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use MetricsResponse.ProtoReflect.Descriptor instead. -func (*MetricsResponse) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{261} +// Deprecated: Use FlowRSVPPathObjectsSessionAttributeCType.ProtoReflect.Descriptor instead. +func (*FlowRSVPPathObjectsSessionAttributeCType) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{218} } -func (x *MetricsResponse) GetChoice() MetricsResponse_Choice_Enum { +func (x *FlowRSVPPathObjectsSessionAttributeCType) GetChoice() FlowRSVPPathObjectsSessionAttributeCType_Choice_Enum { if x != nil && x.Choice != nil { return *x.Choice } - return MetricsResponse_Choice_unspecified + return FlowRSVPPathObjectsSessionAttributeCType_Choice_unspecified } -func (x *MetricsResponse) GetPortMetrics() []*PortMetric { +func (x *FlowRSVPPathObjectsSessionAttributeCType) GetLspTunnel() *FlowRSVPPathSessionAttributeLspTunnel { if x != nil { - return x.PortMetrics + return x.LspTunnel } return nil } -func (x *MetricsResponse) GetFlowMetrics() []*FlowMetric { +func (x *FlowRSVPPathObjectsSessionAttributeCType) GetLspTunnelRa() *FlowRSVPPathSessionAttributeLspTunnelRa { if x != nil { - return x.FlowMetrics + return x.LspTunnelRa } return nil } -func (x *MetricsResponse) GetBgpv4Metrics() []*Bgpv4Metric { - if x != nil { - return x.Bgpv4Metrics +// SESSION_ATTRIBUTE class = 207, LSP_TUNNEL_RA C-Type = 7, resource affinity information. +type FlowRSVPPathSessionAttributeLspTunnel struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // The priority of the session with respect to taking resources,in the range of 0 to + // 7. The value 0 is the highest priority. The Setup Priority is used in deciding whether + // this session can preempt another session. + // default = 7 + SetupPriority *uint32 `protobuf:"varint,1,opt,name=setup_priority,json=setupPriority,proto3,oneof" json:"setup_priority,omitempty"` + // The priority of the session with respect to holding resources,in the range of 0 to + // 7. The value 0 is the highest priority. The Setup Priority is used in deciding whether + // this session can preempt another session. + // default = 7 + HoldingPriority *uint32 `protobuf:"varint,2,opt,name=holding_priority,json=holdingPriority,proto3,oneof" json:"holding_priority,omitempty"` + // 0x01 Local protection desired, 0x02 Label recording desired, 0x04 SE Style desired + Flags *FlowRSVPLspTunnelFlag `protobuf:"bytes,3,opt,name=flags,proto3" json:"flags,omitempty"` + // The length of the display string before padding, in bytes. + // default = 0 + NameLength *string `protobuf:"bytes,4,opt,name=name_length,json=nameLength,proto3,oneof" json:"name_length,omitempty"` + // A null padded string of characters. + SessionName *string `protobuf:"bytes,5,opt,name=session_name,json=sessionName,proto3,oneof" json:"session_name,omitempty"` +} + +func (x *FlowRSVPPathSessionAttributeLspTunnel) Reset() { + *x = FlowRSVPPathSessionAttributeLspTunnel{} + if protoimpl.UnsafeEnabled { + mi := &file_otg_proto_msgTypes[219] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } - return nil } -func (x *MetricsResponse) GetBgpv6Metrics() []*Bgpv6Metric { - if x != nil { - return x.Bgpv6Metrics +func (x *FlowRSVPPathSessionAttributeLspTunnel) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*FlowRSVPPathSessionAttributeLspTunnel) ProtoMessage() {} + +func (x *FlowRSVPPathSessionAttributeLspTunnel) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[219] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms } - return nil + return mi.MessageOf(x) } -func (x *MetricsResponse) GetIsisMetrics() []*IsisMetric { - if x != nil { - return x.IsisMetrics +// Deprecated: Use FlowRSVPPathSessionAttributeLspTunnel.ProtoReflect.Descriptor instead. +func (*FlowRSVPPathSessionAttributeLspTunnel) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{219} +} + +func (x *FlowRSVPPathSessionAttributeLspTunnel) GetSetupPriority() uint32 { + if x != nil && x.SetupPriority != nil { + return *x.SetupPriority } - return nil + return 0 } -func (x *MetricsResponse) GetLagMetrics() []*LagMetric { - if x != nil { - return x.LagMetrics +func (x *FlowRSVPPathSessionAttributeLspTunnel) GetHoldingPriority() uint32 { + if x != nil && x.HoldingPriority != nil { + return *x.HoldingPriority } - return nil + return 0 } -func (x *MetricsResponse) GetLacpMetrics() []*LacpMetric { +func (x *FlowRSVPPathSessionAttributeLspTunnel) GetFlags() *FlowRSVPLspTunnelFlag { if x != nil { - return x.LacpMetrics + return x.Flags } return nil } -func (x *MetricsResponse) GetLldpMetrics() []*LldpMetric { - if x != nil { - return x.LldpMetrics +func (x *FlowRSVPPathSessionAttributeLspTunnel) GetNameLength() string { + if x != nil && x.NameLength != nil { + return *x.NameLength } - return nil + return "" } -func (x *MetricsResponse) GetRsvpMetrics() []*RsvpMetric { - if x != nil { - return x.RsvpMetrics +func (x *FlowRSVPPathSessionAttributeLspTunnel) GetSessionName() string { + if x != nil && x.SessionName != nil { + return *x.SessionName } - return nil + return "" } -// The port result request to the traffic generator -type PortMetricsRequest struct { +// SESSION_ATTRIBUTE class = 207, LSP_TUNNEL_RA C-Type = 1, it carries resource affinity +// information. +type FlowRSVPPathSessionAttributeLspTunnelRa struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // The names of objects to return results for. An empty list will return all port row - // results. - // - // x-constraint: - // - /components/schemas/Port/properties/name - // - // x-constraint: - // - /components/schemas/Port/properties/name - PortNames []string `protobuf:"bytes,1,rep,name=port_names,json=portNames,proto3" json:"port_names,omitempty"` - // The list of column names that the returned result set will contain. If the list is - // empty then all columns will be returned. The name of the port cannot be excluded. - ColumnNames []PortMetricsRequest_ColumnNames_Enum `protobuf:"varint,2,rep,packed,name=column_names,json=columnNames,proto3,enum=otg.PortMetricsRequest_ColumnNames_Enum" json:"column_names,omitempty"` + // A 32-bit vector representing a set of attribute filters associated with a tunnel + // any of which renders a link unacceptable. A null set (all bits set to zero) doesn't + // render the link unacceptable. The most significant byte in the hex-string is the + // farthest to the left in the byte sequence. Leading zero bytes in the configured + // value may be omitted for brevity. + // default = 0 + ExcludeAny *string `protobuf:"bytes,1,opt,name=exclude_any,json=excludeAny,proto3,oneof" json:"exclude_any,omitempty"` + // A 32-bit vector representing a set of attribute filters associated with a tunnel + // any of which renders a link acceptable. A null set (all bits set to zero) automatically + // passes. The most significant byte in the hex-string is the farthest to the left + // in the byte sequence. Leading zero bytes in the configured value may be omitted + // for brevity. + // default = 0 + IncludeAny *string `protobuf:"bytes,2,opt,name=include_any,json=includeAny,proto3,oneof" json:"include_any,omitempty"` + // A 32-bit vector representing a set of attribute filters associated with a tunnel + // all of which must be present for a link to be acceptable. A null set (all bits set + // to zero) automatically passes. The most significant byte in the hex-string is the + // farthest to the left in the byte sequence. Leading zero bytes in the configured + // value may be omitted for brevity. + // default = 0 + IncludeAll *string `protobuf:"bytes,3,opt,name=include_all,json=includeAll,proto3,oneof" json:"include_all,omitempty"` + // The priority of the session with respect to taking resources,in the range of 0 to + // 7. The value 0 is the highest priority. The Setup Priority is used in deciding whether + // this session can preempt another session. + // default = 7 + SetupPriority *uint32 `protobuf:"varint,4,opt,name=setup_priority,json=setupPriority,proto3,oneof" json:"setup_priority,omitempty"` + // The priority of the session with respect to holding resources,in the range of 0 to + // 7. The value 0 is the highest priority. The Setup Priority is used in deciding whether + // this session can preempt another session. + // default = 7 + HoldingPriority *uint32 `protobuf:"varint,5,opt,name=holding_priority,json=holdingPriority,proto3,oneof" json:"holding_priority,omitempty"` + // 0x01 Local protection desired, 0x02 Label recording desired, 0x04 SE Style desired + Flags *FlowRSVPLspTunnelFlag `protobuf:"bytes,6,opt,name=flags,proto3" json:"flags,omitempty"` + // The length of the display string before padding, in bytes. + // default = 0 + NameLength *string `protobuf:"bytes,7,opt,name=name_length,json=nameLength,proto3,oneof" json:"name_length,omitempty"` + // A null padded string of characters. + SessionName *string `protobuf:"bytes,8,opt,name=session_name,json=sessionName,proto3,oneof" json:"session_name,omitempty"` } -func (x *PortMetricsRequest) Reset() { - *x = PortMetricsRequest{} +func (x *FlowRSVPPathSessionAttributeLspTunnelRa) Reset() { + *x = FlowRSVPPathSessionAttributeLspTunnelRa{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[262] + mi := &file_otg_proto_msgTypes[220] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PortMetricsRequest) String() string { +func (x *FlowRSVPPathSessionAttributeLspTunnelRa) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PortMetricsRequest) ProtoMessage() {} +func (*FlowRSVPPathSessionAttributeLspTunnelRa) ProtoMessage() {} -func (x *PortMetricsRequest) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[262] +func (x *FlowRSVPPathSessionAttributeLspTunnelRa) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[220] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -40354,84 +40187,95 @@ func (x *PortMetricsRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use PortMetricsRequest.ProtoReflect.Descriptor instead. -func (*PortMetricsRequest) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{262} +// Deprecated: Use FlowRSVPPathSessionAttributeLspTunnelRa.ProtoReflect.Descriptor instead. +func (*FlowRSVPPathSessionAttributeLspTunnelRa) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{220} } -func (x *PortMetricsRequest) GetPortNames() []string { - if x != nil { - return x.PortNames +func (x *FlowRSVPPathSessionAttributeLspTunnelRa) GetExcludeAny() string { + if x != nil && x.ExcludeAny != nil { + return *x.ExcludeAny } - return nil + return "" } -func (x *PortMetricsRequest) GetColumnNames() []PortMetricsRequest_ColumnNames_Enum { +func (x *FlowRSVPPathSessionAttributeLspTunnelRa) GetIncludeAny() string { + if x != nil && x.IncludeAny != nil { + return *x.IncludeAny + } + return "" +} + +func (x *FlowRSVPPathSessionAttributeLspTunnelRa) GetIncludeAll() string { + if x != nil && x.IncludeAll != nil { + return *x.IncludeAll + } + return "" +} + +func (x *FlowRSVPPathSessionAttributeLspTunnelRa) GetSetupPriority() uint32 { + if x != nil && x.SetupPriority != nil { + return *x.SetupPriority + } + return 0 +} + +func (x *FlowRSVPPathSessionAttributeLspTunnelRa) GetHoldingPriority() uint32 { + if x != nil && x.HoldingPriority != nil { + return *x.HoldingPriority + } + return 0 +} + +func (x *FlowRSVPPathSessionAttributeLspTunnelRa) GetFlags() *FlowRSVPLspTunnelFlag { if x != nil { - return x.ColumnNames + return x.Flags } return nil } +func (x *FlowRSVPPathSessionAttributeLspTunnelRa) GetNameLength() string { + if x != nil && x.NameLength != nil { + return *x.NameLength + } + return "" +} + +func (x *FlowRSVPPathSessionAttributeLspTunnelRa) GetSessionName() string { + if x != nil && x.SessionName != nil { + return *x.SessionName + } + return "" +} + // Description missing in models -type PortMetric struct { +type FlowRSVPLspTunnelFlag struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // The name of a configured port - // - // x-constraint: - // - /components/schemas/Port/properties/name - // - // x-constraint: - // - /components/schemas/Port/properties/name - Name *string `protobuf:"bytes,1,opt,name=name,proto3,oneof" json:"name,omitempty"` - // The state of the connection to the test port location. The format should be the configured - // port location along with any custom connection state message. - Location *string `protobuf:"bytes,2,opt,name=location,proto3,oneof" json:"location,omitempty"` - // The state of the test port link The string can be up, down or a custom error message. - Link *PortMetric_Link_Enum `protobuf:"varint,3,opt,name=link,proto3,enum=otg.PortMetric_Link_Enum,oneof" json:"link,omitempty"` - // The state of the test port capture infrastructure. The string can be started, stopped - // or a custom error message. - Capture *PortMetric_Capture_Enum `protobuf:"varint,4,opt,name=capture,proto3,enum=otg.PortMetric_Capture_Enum,oneof" json:"capture,omitempty"` - // The current total number of frames transmitted - FramesTx *uint64 `protobuf:"varint,5,opt,name=frames_tx,json=framesTx,proto3,oneof" json:"frames_tx,omitempty"` - // The current total number of valid frames received - FramesRx *uint64 `protobuf:"varint,6,opt,name=frames_rx,json=framesRx,proto3,oneof" json:"frames_rx,omitempty"` - // The current total number of bytes transmitted - BytesTx *uint64 `protobuf:"varint,7,opt,name=bytes_tx,json=bytesTx,proto3,oneof" json:"bytes_tx,omitempty"` - // The current total number of valid bytes received - BytesRx *uint64 `protobuf:"varint,8,opt,name=bytes_rx,json=bytesRx,proto3,oneof" json:"bytes_rx,omitempty"` - // The current rate of frames transmitted - FramesTxRate *float32 `protobuf:"fixed32,9,opt,name=frames_tx_rate,json=framesTxRate,proto3,oneof" json:"frames_tx_rate,omitempty"` - // The current rate of valid frames received - FramesRxRate *float32 `protobuf:"fixed32,10,opt,name=frames_rx_rate,json=framesRxRate,proto3,oneof" json:"frames_rx_rate,omitempty"` - // The current rate of bytes transmitted - BytesTxRate *float32 `protobuf:"fixed32,11,opt,name=bytes_tx_rate,json=bytesTxRate,proto3,oneof" json:"bytes_tx_rate,omitempty"` - // The current rate of bytes received - BytesRxRate *float32 `protobuf:"fixed32,12,opt,name=bytes_rx_rate,json=bytesRxRate,proto3,oneof" json:"bytes_rx_rate,omitempty"` - // The transmit state of the flow. - Transmit *PortMetric_Transmit_Enum `protobuf:"varint,13,opt,name=transmit,proto3,enum=otg.PortMetric_Transmit_Enum,oneof" json:"transmit,omitempty"` + // Description missing in models + // default = Choice.Enum.local_protection_desired + Choice *FlowRSVPLspTunnelFlag_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.FlowRSVPLspTunnelFlag_Choice_Enum,oneof" json:"choice,omitempty"` } -func (x *PortMetric) Reset() { - *x = PortMetric{} +func (x *FlowRSVPLspTunnelFlag) Reset() { + *x = FlowRSVPLspTunnelFlag{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[263] + mi := &file_otg_proto_msgTypes[221] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PortMetric) String() string { +func (x *FlowRSVPLspTunnelFlag) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PortMetric) ProtoMessage() {} +func (*FlowRSVPLspTunnelFlag) ProtoMessage() {} -func (x *PortMetric) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[263] +func (x *FlowRSVPLspTunnelFlag) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[221] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -40442,141 +40286,157 @@ func (x *PortMetric) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use PortMetric.ProtoReflect.Descriptor instead. -func (*PortMetric) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{263} +// Deprecated: Use FlowRSVPLspTunnelFlag.ProtoReflect.Descriptor instead. +func (*FlowRSVPLspTunnelFlag) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{221} } -func (x *PortMetric) GetName() string { - if x != nil && x.Name != nil { - return *x.Name +func (x *FlowRSVPLspTunnelFlag) GetChoice() FlowRSVPLspTunnelFlag_Choice_Enum { + if x != nil && x.Choice != nil { + return *x.Choice } - return "" + return FlowRSVPLspTunnelFlag_Choice_unspecified } -func (x *PortMetric) GetLocation() string { - if x != nil && x.Location != nil { - return *x.Location - } - return "" +// C-Type is specific to a class num. +type FlowRSVPPathObjectsClassSenderTemplate struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Description missing in models + CType *FlowRSVPPathObjectsSenderTemplateCType `protobuf:"bytes,1,opt,name=c_type,json=cType,proto3" json:"c_type,omitempty"` } -func (x *PortMetric) GetLink() PortMetric_Link_Enum { - if x != nil && x.Link != nil { - return *x.Link +func (x *FlowRSVPPathObjectsClassSenderTemplate) Reset() { + *x = FlowRSVPPathObjectsClassSenderTemplate{} + if protoimpl.UnsafeEnabled { + mi := &file_otg_proto_msgTypes[222] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } - return PortMetric_Link_unspecified } -func (x *PortMetric) GetCapture() PortMetric_Capture_Enum { - if x != nil && x.Capture != nil { - return *x.Capture - } - return PortMetric_Capture_unspecified +func (x *FlowRSVPPathObjectsClassSenderTemplate) String() string { + return protoimpl.X.MessageStringOf(x) } -func (x *PortMetric) GetFramesTx() uint64 { - if x != nil && x.FramesTx != nil { - return *x.FramesTx +func (*FlowRSVPPathObjectsClassSenderTemplate) ProtoMessage() {} + +func (x *FlowRSVPPathObjectsClassSenderTemplate) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[222] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms } - return 0 + return mi.MessageOf(x) } -func (x *PortMetric) GetFramesRx() uint64 { - if x != nil && x.FramesRx != nil { - return *x.FramesRx - } - return 0 +// Deprecated: Use FlowRSVPPathObjectsClassSenderTemplate.ProtoReflect.Descriptor instead. +func (*FlowRSVPPathObjectsClassSenderTemplate) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{222} } -func (x *PortMetric) GetBytesTx() uint64 { - if x != nil && x.BytesTx != nil { - return *x.BytesTx +func (x *FlowRSVPPathObjectsClassSenderTemplate) GetCType() *FlowRSVPPathObjectsSenderTemplateCType { + if x != nil { + return x.CType } - return 0 + return nil } -func (x *PortMetric) GetBytesRx() uint64 { - if x != nil && x.BytesRx != nil { - return *x.BytesRx - } - return 0 +// Object for SENDER_TEMPLATE class. Currently supported c-type is LSP Tunnel IPv4 (7). +type FlowRSVPPathObjectsSenderTemplateCType struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Description missing in models + // default = Choice.Enum.lsp_tunnel_ipv4 + Choice *FlowRSVPPathObjectsSenderTemplateCType_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.FlowRSVPPathObjectsSenderTemplateCType_Choice_Enum,oneof" json:"choice,omitempty"` + // Description missing in models + LspTunnelIpv4 *FlowRSVPPathSenderTemplateLspTunnelIpv4 `protobuf:"bytes,2,opt,name=lsp_tunnel_ipv4,json=lspTunnelIpv4,proto3" json:"lsp_tunnel_ipv4,omitempty"` } -func (x *PortMetric) GetFramesTxRate() float32 { - if x != nil && x.FramesTxRate != nil { - return *x.FramesTxRate +func (x *FlowRSVPPathObjectsSenderTemplateCType) Reset() { + *x = FlowRSVPPathObjectsSenderTemplateCType{} + if protoimpl.UnsafeEnabled { + mi := &file_otg_proto_msgTypes[223] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } - return 0 } -func (x *PortMetric) GetFramesRxRate() float32 { - if x != nil && x.FramesRxRate != nil { - return *x.FramesRxRate - } - return 0 +func (x *FlowRSVPPathObjectsSenderTemplateCType) String() string { + return protoimpl.X.MessageStringOf(x) } -func (x *PortMetric) GetBytesTxRate() float32 { - if x != nil && x.BytesTxRate != nil { - return *x.BytesTxRate +func (*FlowRSVPPathObjectsSenderTemplateCType) ProtoMessage() {} + +func (x *FlowRSVPPathObjectsSenderTemplateCType) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[223] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms } - return 0 + return mi.MessageOf(x) } -func (x *PortMetric) GetBytesRxRate() float32 { - if x != nil && x.BytesRxRate != nil { - return *x.BytesRxRate +// Deprecated: Use FlowRSVPPathObjectsSenderTemplateCType.ProtoReflect.Descriptor instead. +func (*FlowRSVPPathObjectsSenderTemplateCType) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{223} +} + +func (x *FlowRSVPPathObjectsSenderTemplateCType) GetChoice() FlowRSVPPathObjectsSenderTemplateCType_Choice_Enum { + if x != nil && x.Choice != nil { + return *x.Choice } - return 0 + return FlowRSVPPathObjectsSenderTemplateCType_Choice_unspecified } -func (x *PortMetric) GetTransmit() PortMetric_Transmit_Enum { - if x != nil && x.Transmit != nil { - return *x.Transmit +func (x *FlowRSVPPathObjectsSenderTemplateCType) GetLspTunnelIpv4() *FlowRSVPPathSenderTemplateLspTunnelIpv4 { + if x != nil { + return x.LspTunnelIpv4 } - return PortMetric_Transmit_unspecified + return nil } -// The container for a flow metric request. -type FlowMetricsRequest struct { +// Class = SENDER_TEMPLATE, LSP_TUNNEL_IPv4 C-Type = 7 +type FlowRSVPPathSenderTemplateLspTunnelIpv4 struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Flow metrics will be retrieved for these flow names. - // If no flow names are specified then all flows will be returned. - // - // x-constraint: - // - /components/schemas/Flow/properties/name - // - // x-constraint: - // - /components/schemas/Flow/properties/name - FlowNames []string `protobuf:"bytes,1,rep,name=flow_names,json=flowNames,proto3" json:"flow_names,omitempty"` - // The list of metric names that the returned result set will contain. If the list is - // empty then all metrics will be returned. - MetricNames []FlowMetricsRequest_MetricNames_Enum `protobuf:"varint,3,rep,packed,name=metric_names,json=metricNames,proto3,enum=otg.FlowMetricsRequest_MetricNames_Enum" json:"metric_names,omitempty"` // Description missing in models - TaggedMetrics *FlowTaggedMetricsFilter `protobuf:"bytes,4,opt,name=tagged_metrics,json=taggedMetrics,proto3" json:"tagged_metrics,omitempty"` + Ipv4TunnelSenderAddress *PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Ipv4TunnelSenderAddress `protobuf:"bytes,1,opt,name=ipv4_tunnel_sender_address,json=ipv4TunnelSenderAddress,proto3" json:"ipv4_tunnel_sender_address,omitempty"` + // Description missing in models + Reserved *PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Reserved `protobuf:"bytes,2,opt,name=reserved,proto3" json:"reserved,omitempty"` + // Description missing in models + LspId *PatternFlowRSVPPathSenderTemplateLspTunnelIpv4LspId `protobuf:"bytes,3,opt,name=lsp_id,json=lspId,proto3" json:"lsp_id,omitempty"` } -func (x *FlowMetricsRequest) Reset() { - *x = FlowMetricsRequest{} +func (x *FlowRSVPPathSenderTemplateLspTunnelIpv4) Reset() { + *x = FlowRSVPPathSenderTemplateLspTunnelIpv4{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[264] + mi := &file_otg_proto_msgTypes[224] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *FlowMetricsRequest) String() string { +func (x *FlowRSVPPathSenderTemplateLspTunnelIpv4) String() string { return protoimpl.X.MessageStringOf(x) } -func (*FlowMetricsRequest) ProtoMessage() {} +func (*FlowRSVPPathSenderTemplateLspTunnelIpv4) ProtoMessage() {} -func (x *FlowMetricsRequest) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[264] +func (x *FlowRSVPPathSenderTemplateLspTunnelIpv4) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[224] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -40587,70 +40447,59 @@ func (x *FlowMetricsRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use FlowMetricsRequest.ProtoReflect.Descriptor instead. -func (*FlowMetricsRequest) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{264} +// Deprecated: Use FlowRSVPPathSenderTemplateLspTunnelIpv4.ProtoReflect.Descriptor instead. +func (*FlowRSVPPathSenderTemplateLspTunnelIpv4) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{224} } -func (x *FlowMetricsRequest) GetFlowNames() []string { +func (x *FlowRSVPPathSenderTemplateLspTunnelIpv4) GetIpv4TunnelSenderAddress() *PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Ipv4TunnelSenderAddress { if x != nil { - return x.FlowNames + return x.Ipv4TunnelSenderAddress } return nil } -func (x *FlowMetricsRequest) GetMetricNames() []FlowMetricsRequest_MetricNames_Enum { +func (x *FlowRSVPPathSenderTemplateLspTunnelIpv4) GetReserved() *PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Reserved { if x != nil { - return x.MetricNames + return x.Reserved } return nil } -func (x *FlowMetricsRequest) GetTaggedMetrics() *FlowTaggedMetricsFilter { +func (x *FlowRSVPPathSenderTemplateLspTunnelIpv4) GetLspId() *PatternFlowRSVPPathSenderTemplateLspTunnelIpv4LspId { if x != nil { - return x.TaggedMetrics + return x.LspId } return nil } -// Filter for tagged metrics -type FlowTaggedMetricsFilter struct { +// C-Type is specific to a class num. +type FlowRSVPPathObjectsClassSenderTspec struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Controls inclusion/exclusion of tagged metrics when fetching flow metrics. - // default = True - Include *bool `protobuf:"varint,1,opt,name=include,proto3,oneof" json:"include,omitempty"` - // Controls inclusion/exclusion of tagged metrics where each underlying attributes has - // zero value or absent value. - // default = False - IncludeEmptyMetrics *bool `protobuf:"varint,2,opt,name=include_empty_metrics,json=includeEmptyMetrics,proto3,oneof" json:"include_empty_metrics,omitempty"` - // The list of metric names that the returned result set will contain. If the list is - // empty then all metrics will be returned. - MetricNames []FlowTaggedMetricsFilter_MetricNames_Enum `protobuf:"varint,3,rep,packed,name=metric_names,json=metricNames,proto3,enum=otg.FlowTaggedMetricsFilter_MetricNames_Enum" json:"metric_names,omitempty"` - // List of filters to selectively fetch tagged metrics with certain tag and corresponding - // value. - Filters []*FlowMetricTagFilter `protobuf:"bytes,4,rep,name=filters,proto3" json:"filters,omitempty"` + // Description missing in models + CType *FlowRSVPPathObjectsSenderTspecCType `protobuf:"bytes,1,opt,name=c_type,json=cType,proto3" json:"c_type,omitempty"` } -func (x *FlowTaggedMetricsFilter) Reset() { - *x = FlowTaggedMetricsFilter{} +func (x *FlowRSVPPathObjectsClassSenderTspec) Reset() { + *x = FlowRSVPPathObjectsClassSenderTspec{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[265] + mi := &file_otg_proto_msgTypes[225] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *FlowTaggedMetricsFilter) String() string { +func (x *FlowRSVPPathObjectsClassSenderTspec) String() string { return protoimpl.X.MessageStringOf(x) } -func (*FlowTaggedMetricsFilter) ProtoMessage() {} +func (*FlowRSVPPathObjectsClassSenderTspec) ProtoMessage() {} -func (x *FlowTaggedMetricsFilter) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[265] +func (x *FlowRSVPPathObjectsClassSenderTspec) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[225] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -40661,71 +40510,48 @@ func (x *FlowTaggedMetricsFilter) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use FlowTaggedMetricsFilter.ProtoReflect.Descriptor instead. -func (*FlowTaggedMetricsFilter) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{265} -} - -func (x *FlowTaggedMetricsFilter) GetInclude() bool { - if x != nil && x.Include != nil { - return *x.Include - } - return false -} - -func (x *FlowTaggedMetricsFilter) GetIncludeEmptyMetrics() bool { - if x != nil && x.IncludeEmptyMetrics != nil { - return *x.IncludeEmptyMetrics - } - return false -} - -func (x *FlowTaggedMetricsFilter) GetMetricNames() []FlowTaggedMetricsFilter_MetricNames_Enum { - if x != nil { - return x.MetricNames - } - return nil +// Deprecated: Use FlowRSVPPathObjectsClassSenderTspec.ProtoReflect.Descriptor instead. +func (*FlowRSVPPathObjectsClassSenderTspec) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{225} } -func (x *FlowTaggedMetricsFilter) GetFilters() []*FlowMetricTagFilter { +func (x *FlowRSVPPathObjectsClassSenderTspec) GetCType() *FlowRSVPPathObjectsSenderTspecCType { if x != nil { - return x.Filters + return x.CType } return nil } -// A container for filtering ingress and/or egress metric tags. -// The Tx stats may not be applicable in both the request and response filter. -type FlowMetricTagFilter struct { +// Object for SENDER_TSPEC class. Currently supported c-type is int-serv (2). +type FlowRSVPPathObjectsSenderTspecCType struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // A metric tag name that MUST exist in a flow packet or - // flow egress_packet configuration - Name *string `protobuf:"bytes,1,opt,name=name,proto3,oneof" json:"name,omitempty"` - // A list of filters that can be applied to the metric tag name. - // By default all values will be included in the flow metric results. - Values []string `protobuf:"bytes,2,rep,name=values,proto3" json:"values,omitempty"` + // Description missing in models + // default = Choice.Enum.int_serv + Choice *FlowRSVPPathObjectsSenderTspecCType_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.FlowRSVPPathObjectsSenderTspecCType_Choice_Enum,oneof" json:"choice,omitempty"` + // Description missing in models + IntServ *FlowRSVPPathSenderTspecIntServ `protobuf:"bytes,2,opt,name=int_serv,json=intServ,proto3" json:"int_serv,omitempty"` } -func (x *FlowMetricTagFilter) Reset() { - *x = FlowMetricTagFilter{} +func (x *FlowRSVPPathObjectsSenderTspecCType) Reset() { + *x = FlowRSVPPathObjectsSenderTspecCType{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[266] + mi := &file_otg_proto_msgTypes[226] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *FlowMetricTagFilter) String() string { +func (x *FlowRSVPPathObjectsSenderTspecCType) String() string { return protoimpl.X.MessageStringOf(x) } -func (*FlowMetricTagFilter) ProtoMessage() {} +func (*FlowRSVPPathObjectsSenderTspecCType) ProtoMessage() {} -func (x *FlowMetricTagFilter) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[266] +func (x *FlowRSVPPathObjectsSenderTspecCType) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[226] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -40736,82 +40562,85 @@ func (x *FlowMetricTagFilter) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use FlowMetricTagFilter.ProtoReflect.Descriptor instead. -func (*FlowMetricTagFilter) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{266} +// Deprecated: Use FlowRSVPPathObjectsSenderTspecCType.ProtoReflect.Descriptor instead. +func (*FlowRSVPPathObjectsSenderTspecCType) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{226} } -func (x *FlowMetricTagFilter) GetName() string { - if x != nil && x.Name != nil { - return *x.Name +func (x *FlowRSVPPathObjectsSenderTspecCType) GetChoice() FlowRSVPPathObjectsSenderTspecCType_Choice_Enum { + if x != nil && x.Choice != nil { + return *x.Choice } - return "" + return FlowRSVPPathObjectsSenderTspecCType_Choice_unspecified } -func (x *FlowMetricTagFilter) GetValues() []string { +func (x *FlowRSVPPathObjectsSenderTspecCType) GetIntServ() *FlowRSVPPathSenderTspecIntServ { if x != nil { - return x.Values + return x.IntServ } return nil } -// A container for flow metrics. -// The container is keyed by the name, port_tx and port_rx. -type FlowMetric struct { +// int-serv SENDER_TSPEC object: Class = 12, C-Type = 2 +type FlowRSVPPathSenderTspecIntServ struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // The name of the flow - Name *string `protobuf:"bytes,1,opt,name=name,proto3,oneof" json:"name,omitempty"` - // The name of the transmit port - PortTx *string `protobuf:"bytes,2,opt,name=port_tx,json=portTx,proto3,oneof" json:"port_tx,omitempty"` - // The name of the receive port - PortRx *string `protobuf:"bytes,3,opt,name=port_rx,json=portRx,proto3,oneof" json:"port_rx,omitempty"` - // The transmit state of the flow. - Transmit *FlowMetric_Transmit_Enum `protobuf:"varint,5,opt,name=transmit,proto3,enum=otg.FlowMetric_Transmit_Enum,oneof" json:"transmit,omitempty"` - // The current total number of frames transmitted - FramesTx *uint64 `protobuf:"varint,6,opt,name=frames_tx,json=framesTx,proto3,oneof" json:"frames_tx,omitempty"` - // The current total number of valid frames received - FramesRx *uint64 `protobuf:"varint,7,opt,name=frames_rx,json=framesRx,proto3,oneof" json:"frames_rx,omitempty"` - // The current total number of bytes transmitted - BytesTx *uint64 `protobuf:"varint,8,opt,name=bytes_tx,json=bytesTx,proto3,oneof" json:"bytes_tx,omitempty"` - // The current total number of bytes received - BytesRx *uint64 `protobuf:"varint,9,opt,name=bytes_rx,json=bytesRx,proto3,oneof" json:"bytes_rx,omitempty"` - // The current rate of frames transmitted - FramesTxRate *float32 `protobuf:"fixed32,10,opt,name=frames_tx_rate,json=framesTxRate,proto3,oneof" json:"frames_tx_rate,omitempty"` - // The current rate of valid frames received - FramesRxRate *float32 `protobuf:"fixed32,11,opt,name=frames_rx_rate,json=framesRxRate,proto3,oneof" json:"frames_rx_rate,omitempty"` - // The percentage of lost frames - Loss *float32 `protobuf:"fixed32,12,opt,name=loss,proto3,oneof" json:"loss,omitempty"` // Description missing in models - Timestamps *MetricTimestamp `protobuf:"bytes,13,opt,name=timestamps,proto3" json:"timestamps,omitempty"` + Version *PatternFlowRSVPPathSenderTspecIntServVersion `protobuf:"bytes,1,opt,name=version,proto3" json:"version,omitempty"` // Description missing in models - Latency *MetricLatency `protobuf:"bytes,14,opt,name=latency,proto3" json:"latency,omitempty"` - // List of metrics corresponding to a set of values applicable - // for configured metric tags in ingress or egress packet header fields of corresponding - // flow. - // The container is keyed by list of tag-value pairs. - TaggedMetrics []*FlowTaggedMetric `protobuf:"bytes,15,rep,name=tagged_metrics,json=taggedMetrics,proto3" json:"tagged_metrics,omitempty"` + Reserved1 *PatternFlowRSVPPathSenderTspecIntServReserved1 `protobuf:"bytes,2,opt,name=reserved1,proto3" json:"reserved1,omitempty"` + // Description missing in models + OverallLength *PatternFlowRSVPPathSenderTspecIntServOverallLength `protobuf:"bytes,3,opt,name=overall_length,json=overallLength,proto3" json:"overall_length,omitempty"` + // Description missing in models + ServiceHeader *PatternFlowRSVPPathSenderTspecIntServServiceHeader `protobuf:"bytes,4,opt,name=service_header,json=serviceHeader,proto3" json:"service_header,omitempty"` + // Description missing in models + ZeroBit *PatternFlowRSVPPathSenderTspecIntServZeroBit `protobuf:"bytes,5,opt,name=zero_bit,json=zeroBit,proto3" json:"zero_bit,omitempty"` + // Description missing in models + Reserved2 *PatternFlowRSVPPathSenderTspecIntServReserved2 `protobuf:"bytes,6,opt,name=reserved2,proto3" json:"reserved2,omitempty"` + // Description missing in models + LengthOfServiceData *PatternFlowRSVPPathSenderTspecIntServLengthOfServiceData `protobuf:"bytes,7,opt,name=length_of_service_data,json=lengthOfServiceData,proto3" json:"length_of_service_data,omitempty"` + // Description missing in models + ParameterIdTokenBucketTspec *PatternFlowRSVPPathSenderTspecIntServParameterIdTokenBucketTspec `protobuf:"bytes,8,opt,name=parameter_id_token_bucket_tspec,json=parameterIdTokenBucketTspec,proto3" json:"parameter_id_token_bucket_tspec,omitempty"` + // Description missing in models + Parameter_127Flag *PatternFlowRSVPPathSenderTspecIntServParameter127Flag `protobuf:"bytes,9,opt,name=parameter_127_flag,json=parameter127Flag,proto3" json:"parameter_127_flag,omitempty"` + // Description missing in models + Parameter_127Length *PatternFlowRSVPPathSenderTspecIntServParameter127Length `protobuf:"bytes,10,opt,name=parameter_127_length,json=parameter127Length,proto3" json:"parameter_127_length,omitempty"` + // Token bucket rate is set to sender's view of its generated traffic. + // default = 0 + TokenBucketRate *float32 `protobuf:"fixed32,11,opt,name=token_bucket_rate,json=tokenBucketRate,proto3,oneof" json:"token_bucket_rate,omitempty"` + // Token bucket size is set to sender's view of its generated traffic. + // default = 0 + TokenBucketSize *float32 `protobuf:"fixed32,12,opt,name=token_bucket_size,json=tokenBucketSize,proto3,oneof" json:"token_bucket_size,omitempty"` + // The peak rate may be set to the sender's peak traffic generation rate (if known and + // controlled), the physical interface line rate (if known), or positive infinity (if + // no better value is available). + // default = 0 + PeakDataRate *float32 `protobuf:"fixed32,13,opt,name=peak_data_rate,json=peakDataRate,proto3,oneof" json:"peak_data_rate,omitempty"` + // Description missing in models + MinimumPolicedUnit *PatternFlowRSVPPathSenderTspecIntServMinimumPolicedUnit `protobuf:"bytes,14,opt,name=minimum_policed_unit,json=minimumPolicedUnit,proto3" json:"minimum_policed_unit,omitempty"` + // Description missing in models + MaximumPacketSize *PatternFlowRSVPPathSenderTspecIntServMaximumPacketSize `protobuf:"bytes,15,opt,name=maximum_packet_size,json=maximumPacketSize,proto3" json:"maximum_packet_size,omitempty"` } -func (x *FlowMetric) Reset() { - *x = FlowMetric{} +func (x *FlowRSVPPathSenderTspecIntServ) Reset() { + *x = FlowRSVPPathSenderTspecIntServ{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[267] + mi := &file_otg_proto_msgTypes[227] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *FlowMetric) String() string { +func (x *FlowRSVPPathSenderTspecIntServ) String() string { return protoimpl.X.MessageStringOf(x) } -func (*FlowMetric) ProtoMessage() {} +func (*FlowRSVPPathSenderTspecIntServ) ProtoMessage() {} -func (x *FlowMetric) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[267] +func (x *FlowRSVPPathSenderTspecIntServ) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[227] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -40822,156 +40651,143 @@ func (x *FlowMetric) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use FlowMetric.ProtoReflect.Descriptor instead. -func (*FlowMetric) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{267} +// Deprecated: Use FlowRSVPPathSenderTspecIntServ.ProtoReflect.Descriptor instead. +func (*FlowRSVPPathSenderTspecIntServ) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{227} } -func (x *FlowMetric) GetName() string { - if x != nil && x.Name != nil { - return *x.Name +func (x *FlowRSVPPathSenderTspecIntServ) GetVersion() *PatternFlowRSVPPathSenderTspecIntServVersion { + if x != nil { + return x.Version } - return "" + return nil } -func (x *FlowMetric) GetPortTx() string { - if x != nil && x.PortTx != nil { - return *x.PortTx +func (x *FlowRSVPPathSenderTspecIntServ) GetReserved1() *PatternFlowRSVPPathSenderTspecIntServReserved1 { + if x != nil { + return x.Reserved1 } - return "" + return nil } -func (x *FlowMetric) GetPortRx() string { - if x != nil && x.PortRx != nil { - return *x.PortRx +func (x *FlowRSVPPathSenderTspecIntServ) GetOverallLength() *PatternFlowRSVPPathSenderTspecIntServOverallLength { + if x != nil { + return x.OverallLength } - return "" + return nil } -func (x *FlowMetric) GetTransmit() FlowMetric_Transmit_Enum { - if x != nil && x.Transmit != nil { - return *x.Transmit +func (x *FlowRSVPPathSenderTspecIntServ) GetServiceHeader() *PatternFlowRSVPPathSenderTspecIntServServiceHeader { + if x != nil { + return x.ServiceHeader } - return FlowMetric_Transmit_unspecified + return nil } -func (x *FlowMetric) GetFramesTx() uint64 { - if x != nil && x.FramesTx != nil { - return *x.FramesTx +func (x *FlowRSVPPathSenderTspecIntServ) GetZeroBit() *PatternFlowRSVPPathSenderTspecIntServZeroBit { + if x != nil { + return x.ZeroBit } - return 0 + return nil } -func (x *FlowMetric) GetFramesRx() uint64 { - if x != nil && x.FramesRx != nil { - return *x.FramesRx +func (x *FlowRSVPPathSenderTspecIntServ) GetReserved2() *PatternFlowRSVPPathSenderTspecIntServReserved2 { + if x != nil { + return x.Reserved2 } - return 0 + return nil } -func (x *FlowMetric) GetBytesTx() uint64 { - if x != nil && x.BytesTx != nil { - return *x.BytesTx +func (x *FlowRSVPPathSenderTspecIntServ) GetLengthOfServiceData() *PatternFlowRSVPPathSenderTspecIntServLengthOfServiceData { + if x != nil { + return x.LengthOfServiceData } - return 0 + return nil } -func (x *FlowMetric) GetBytesRx() uint64 { - if x != nil && x.BytesRx != nil { - return *x.BytesRx +func (x *FlowRSVPPathSenderTspecIntServ) GetParameterIdTokenBucketTspec() *PatternFlowRSVPPathSenderTspecIntServParameterIdTokenBucketTspec { + if x != nil { + return x.ParameterIdTokenBucketTspec } - return 0 + return nil } -func (x *FlowMetric) GetFramesTxRate() float32 { - if x != nil && x.FramesTxRate != nil { - return *x.FramesTxRate +func (x *FlowRSVPPathSenderTspecIntServ) GetParameter_127Flag() *PatternFlowRSVPPathSenderTspecIntServParameter127Flag { + if x != nil { + return x.Parameter_127Flag } - return 0 + return nil } -func (x *FlowMetric) GetFramesRxRate() float32 { - if x != nil && x.FramesRxRate != nil { - return *x.FramesRxRate +func (x *FlowRSVPPathSenderTspecIntServ) GetParameter_127Length() *PatternFlowRSVPPathSenderTspecIntServParameter127Length { + if x != nil { + return x.Parameter_127Length + } + return nil +} + +func (x *FlowRSVPPathSenderTspecIntServ) GetTokenBucketRate() float32 { + if x != nil && x.TokenBucketRate != nil { + return *x.TokenBucketRate } return 0 } -func (x *FlowMetric) GetLoss() float32 { - if x != nil && x.Loss != nil { - return *x.Loss +func (x *FlowRSVPPathSenderTspecIntServ) GetTokenBucketSize() float32 { + if x != nil && x.TokenBucketSize != nil { + return *x.TokenBucketSize } return 0 } -func (x *FlowMetric) GetTimestamps() *MetricTimestamp { - if x != nil { - return x.Timestamps +func (x *FlowRSVPPathSenderTspecIntServ) GetPeakDataRate() float32 { + if x != nil && x.PeakDataRate != nil { + return *x.PeakDataRate } - return nil + return 0 } -func (x *FlowMetric) GetLatency() *MetricLatency { +func (x *FlowRSVPPathSenderTspecIntServ) GetMinimumPolicedUnit() *PatternFlowRSVPPathSenderTspecIntServMinimumPolicedUnit { if x != nil { - return x.Latency + return x.MinimumPolicedUnit } return nil } -func (x *FlowMetric) GetTaggedMetrics() []*FlowTaggedMetric { +func (x *FlowRSVPPathSenderTspecIntServ) GetMaximumPacketSize() *PatternFlowRSVPPathSenderTspecIntServMaximumPacketSize { if x != nil { - return x.TaggedMetrics + return x.MaximumPacketSize } return nil } -// Metrics for each set of values applicable for configured -// metric tags in ingress or egress packet header fields of corresponding flow. -// The container is keyed by list of tag-value pairs. -type FlowTaggedMetric struct { +// C-Type is specific to a class num. +type FlowRSVPPathObjectsClassRecordRoute struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // List of tag and value pairs - Tags []*FlowMetricTag `protobuf:"bytes,1,rep,name=tags,proto3" json:"tags,omitempty"` - // The current total number of frames transmitted - FramesTx *uint64 `protobuf:"varint,2,opt,name=frames_tx,json=framesTx,proto3,oneof" json:"frames_tx,omitempty"` - // The current total number of valid frames received - FramesRx *uint64 `protobuf:"varint,3,opt,name=frames_rx,json=framesRx,proto3,oneof" json:"frames_rx,omitempty"` - // The current total number of bytes transmitted - BytesTx *uint64 `protobuf:"varint,4,opt,name=bytes_tx,json=bytesTx,proto3,oneof" json:"bytes_tx,omitempty"` - // The current total number of bytes received - BytesRx *uint64 `protobuf:"varint,5,opt,name=bytes_rx,json=bytesRx,proto3,oneof" json:"bytes_rx,omitempty"` - // The current rate of frames transmitted - FramesTxRate *float32 `protobuf:"fixed32,6,opt,name=frames_tx_rate,json=framesTxRate,proto3,oneof" json:"frames_tx_rate,omitempty"` - // The current rate of valid frames received - FramesRxRate *float32 `protobuf:"fixed32,7,opt,name=frames_rx_rate,json=framesRxRate,proto3,oneof" json:"frames_rx_rate,omitempty"` - // The percentage of lost frames - Loss *float32 `protobuf:"fixed32,8,opt,name=loss,proto3,oneof" json:"loss,omitempty"` - // Description missing in models - Timestamps *MetricTimestamp `protobuf:"bytes,9,opt,name=timestamps,proto3" json:"timestamps,omitempty"` // Description missing in models - Latency *MetricLatency `protobuf:"bytes,10,opt,name=latency,proto3" json:"latency,omitempty"` + CType *FlowRSVPPathObjectsRecordRouteCType `protobuf:"bytes,1,opt,name=c_type,json=cType,proto3" json:"c_type,omitempty"` } -func (x *FlowTaggedMetric) Reset() { - *x = FlowTaggedMetric{} +func (x *FlowRSVPPathObjectsClassRecordRoute) Reset() { + *x = FlowRSVPPathObjectsClassRecordRoute{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[268] + mi := &file_otg_proto_msgTypes[228] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *FlowTaggedMetric) String() string { +func (x *FlowRSVPPathObjectsClassRecordRoute) String() string { return protoimpl.X.MessageStringOf(x) } -func (*FlowTaggedMetric) ProtoMessage() {} +func (*FlowRSVPPathObjectsClassRecordRoute) ProtoMessage() {} -func (x *FlowTaggedMetric) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[268] +func (x *FlowRSVPPathObjectsClassRecordRoute) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[228] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -40982,110 +40798,105 @@ func (x *FlowTaggedMetric) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use FlowTaggedMetric.ProtoReflect.Descriptor instead. -func (*FlowTaggedMetric) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{268} +// Deprecated: Use FlowRSVPPathObjectsClassRecordRoute.ProtoReflect.Descriptor instead. +func (*FlowRSVPPathObjectsClassRecordRoute) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{228} } -func (x *FlowTaggedMetric) GetTags() []*FlowMetricTag { +func (x *FlowRSVPPathObjectsClassRecordRoute) GetCType() *FlowRSVPPathObjectsRecordRouteCType { if x != nil { - return x.Tags + return x.CType } return nil } -func (x *FlowTaggedMetric) GetFramesTx() uint64 { - if x != nil && x.FramesTx != nil { - return *x.FramesTx - } - return 0 +// Object for RECORD_ROUTE class. c-type is Type 1 Route Record (1). +type FlowRSVPPathObjectsRecordRouteCType struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Description missing in models + // default = Choice.Enum.type_1_route_record + Choice *FlowRSVPPathObjectsRecordRouteCType_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.FlowRSVPPathObjectsRecordRouteCType_Choice_Enum,oneof" json:"choice,omitempty"` + // Description missing in models + Type_1RouteRecord *FlowRSVPPathRecordRouteType1 `protobuf:"bytes,2,opt,name=type_1_route_record,json=type1RouteRecord,proto3" json:"type_1_route_record,omitempty"` } -func (x *FlowTaggedMetric) GetFramesRx() uint64 { - if x != nil && x.FramesRx != nil { - return *x.FramesRx - } - return 0 -} - -func (x *FlowTaggedMetric) GetBytesTx() uint64 { - if x != nil && x.BytesTx != nil { - return *x.BytesTx +func (x *FlowRSVPPathObjectsRecordRouteCType) Reset() { + *x = FlowRSVPPathObjectsRecordRouteCType{} + if protoimpl.UnsafeEnabled { + mi := &file_otg_proto_msgTypes[229] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } - return 0 } -func (x *FlowTaggedMetric) GetBytesRx() uint64 { - if x != nil && x.BytesRx != nil { - return *x.BytesRx - } - return 0 +func (x *FlowRSVPPathObjectsRecordRouteCType) String() string { + return protoimpl.X.MessageStringOf(x) } -func (x *FlowTaggedMetric) GetFramesTxRate() float32 { - if x != nil && x.FramesTxRate != nil { - return *x.FramesTxRate - } - return 0 -} +func (*FlowRSVPPathObjectsRecordRouteCType) ProtoMessage() {} -func (x *FlowTaggedMetric) GetFramesRxRate() float32 { - if x != nil && x.FramesRxRate != nil { - return *x.FramesRxRate +func (x *FlowRSVPPathObjectsRecordRouteCType) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[229] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms } - return 0 + return mi.MessageOf(x) } -func (x *FlowTaggedMetric) GetLoss() float32 { - if x != nil && x.Loss != nil { - return *x.Loss - } - return 0 +// Deprecated: Use FlowRSVPPathObjectsRecordRouteCType.ProtoReflect.Descriptor instead. +func (*FlowRSVPPathObjectsRecordRouteCType) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{229} } -func (x *FlowTaggedMetric) GetTimestamps() *MetricTimestamp { - if x != nil { - return x.Timestamps +func (x *FlowRSVPPathObjectsRecordRouteCType) GetChoice() FlowRSVPPathObjectsRecordRouteCType_Choice_Enum { + if x != nil && x.Choice != nil { + return *x.Choice } - return nil + return FlowRSVPPathObjectsRecordRouteCType_Choice_unspecified } -func (x *FlowTaggedMetric) GetLatency() *MetricLatency { +func (x *FlowRSVPPathObjectsRecordRouteCType) GetType_1RouteRecord() *FlowRSVPPathRecordRouteType1 { if x != nil { - return x.Latency + return x.Type_1RouteRecord } return nil } -// Description missing in models -type FlowMetricTag struct { +// Type1 record route has list of subobjects. Currently supported subobjects are IPv4 +// address(1) and Label(3). +type FlowRSVPPathRecordRouteType1 struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Name of packet field metric tag - Name *string `protobuf:"bytes,1,opt,name=name,proto3,oneof" json:"name,omitempty"` // Description missing in models - Value *FlowMetricTagValue `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty"` + Subobjects []*FlowRSVPType1RecordRouteSubobjects `protobuf:"bytes,1,rep,name=subobjects,proto3" json:"subobjects,omitempty"` } -func (x *FlowMetricTag) Reset() { - *x = FlowMetricTag{} +func (x *FlowRSVPPathRecordRouteType1) Reset() { + *x = FlowRSVPPathRecordRouteType1{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[269] + mi := &file_otg_proto_msgTypes[230] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *FlowMetricTag) String() string { +func (x *FlowRSVPPathRecordRouteType1) String() string { return protoimpl.X.MessageStringOf(x) } -func (*FlowMetricTag) ProtoMessage() {} +func (*FlowRSVPPathRecordRouteType1) ProtoMessage() {} -func (x *FlowMetricTag) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[269] +func (x *FlowRSVPPathRecordRouteType1) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[230] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -41096,57 +40907,45 @@ func (x *FlowMetricTag) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use FlowMetricTag.ProtoReflect.Descriptor instead. -func (*FlowMetricTag) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{269} -} - -func (x *FlowMetricTag) GetName() string { - if x != nil && x.Name != nil { - return *x.Name - } - return "" +// Deprecated: Use FlowRSVPPathRecordRouteType1.ProtoReflect.Descriptor instead. +func (*FlowRSVPPathRecordRouteType1) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{230} } -func (x *FlowMetricTag) GetValue() *FlowMetricTagValue { +func (x *FlowRSVPPathRecordRouteType1) GetSubobjects() []*FlowRSVPType1RecordRouteSubobjects { if x != nil { - return x.Value + return x.Subobjects } return nil } -// A container for metric tag value -type FlowMetricTagValue struct { +// Type is specific to a subobject. +type FlowRSVPType1RecordRouteSubobjects struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Available formats for metric tag value - // default = Choice.Enum.hex - Choice *FlowMetricTagValue_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.FlowMetricTagValue_Choice_Enum,oneof" json:"choice,omitempty"` - // Value represented in hexadecimal format - Hex *string `protobuf:"bytes,2,opt,name=hex,proto3,oneof" json:"hex,omitempty"` - // Value represented in string format - Str *string `protobuf:"bytes,3,opt,name=str,proto3,oneof" json:"str,omitempty"` + // Description missing in models + Type *FlowRSVPPathObjectsRecordRouteSubObjectType `protobuf:"bytes,1,opt,name=type,proto3" json:"type,omitempty"` } -func (x *FlowMetricTagValue) Reset() { - *x = FlowMetricTagValue{} +func (x *FlowRSVPType1RecordRouteSubobjects) Reset() { + *x = FlowRSVPType1RecordRouteSubobjects{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[270] + mi := &file_otg_proto_msgTypes[231] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *FlowMetricTagValue) String() string { +func (x *FlowRSVPType1RecordRouteSubobjects) String() string { return protoimpl.X.MessageStringOf(x) } -func (*FlowMetricTagValue) ProtoMessage() {} +func (*FlowRSVPType1RecordRouteSubobjects) ProtoMessage() {} -func (x *FlowMetricTagValue) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[270] +func (x *FlowRSVPType1RecordRouteSubobjects) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[231] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -41157,63 +40956,50 @@ func (x *FlowMetricTagValue) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use FlowMetricTagValue.ProtoReflect.Descriptor instead. -func (*FlowMetricTagValue) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{270} -} - -func (x *FlowMetricTagValue) GetChoice() FlowMetricTagValue_Choice_Enum { - if x != nil && x.Choice != nil { - return *x.Choice - } - return FlowMetricTagValue_Choice_unspecified -} - -func (x *FlowMetricTagValue) GetHex() string { - if x != nil && x.Hex != nil { - return *x.Hex - } - return "" +// Deprecated: Use FlowRSVPType1RecordRouteSubobjects.ProtoReflect.Descriptor instead. +func (*FlowRSVPType1RecordRouteSubobjects) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{231} } -func (x *FlowMetricTagValue) GetStr() string { - if x != nil && x.Str != nil { - return *x.Str +func (x *FlowRSVPType1RecordRouteSubobjects) GetType() *FlowRSVPPathObjectsRecordRouteSubObjectType { + if x != nil { + return x.Type } - return "" + return nil } -// The container for timestamp metrics. -// The container will be empty if the timestamp has not been configured for -// the flow. -type MetricTimestamp struct { +// Currently supported subobjects are IPv4 address(1) and Label(3). +type FlowRSVPPathObjectsRecordRouteSubObjectType struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // First timestamp in nanoseconds - FirstTimestampNs *float64 `protobuf:"fixed64,1,opt,name=first_timestamp_ns,json=firstTimestampNs,proto3,oneof" json:"first_timestamp_ns,omitempty"` - // Last timestamp in nanoseconds - LastTimestampNs *float64 `protobuf:"fixed64,2,opt,name=last_timestamp_ns,json=lastTimestampNs,proto3,oneof" json:"last_timestamp_ns,omitempty"` + // Description missing in models + // default = Choice.Enum.ipv4_address + Choice *FlowRSVPPathObjectsRecordRouteSubObjectType_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.FlowRSVPPathObjectsRecordRouteSubObjectType_Choice_Enum,oneof" json:"choice,omitempty"` + // Description missing in models + Ipv4Address *FlowRSVPPathRecordRouteType1Ipv4Address `protobuf:"bytes,2,opt,name=ipv4_address,json=ipv4Address,proto3" json:"ipv4_address,omitempty"` + // Description missing in models + Label *FlowRSVPPathRecordRouteType1Label `protobuf:"bytes,3,opt,name=label,proto3" json:"label,omitempty"` } -func (x *MetricTimestamp) Reset() { - *x = MetricTimestamp{} +func (x *FlowRSVPPathObjectsRecordRouteSubObjectType) Reset() { + *x = FlowRSVPPathObjectsRecordRouteSubObjectType{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[271] + mi := &file_otg_proto_msgTypes[232] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *MetricTimestamp) String() string { +func (x *FlowRSVPPathObjectsRecordRouteSubObjectType) String() string { return protoimpl.X.MessageStringOf(x) } -func (*MetricTimestamp) ProtoMessage() {} +func (*FlowRSVPPathObjectsRecordRouteSubObjectType) ProtoMessage() {} -func (x *MetricTimestamp) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[271] +func (x *FlowRSVPPathObjectsRecordRouteSubObjectType) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[232] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -41224,60 +41010,67 @@ func (x *MetricTimestamp) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use MetricTimestamp.ProtoReflect.Descriptor instead. -func (*MetricTimestamp) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{271} +// Deprecated: Use FlowRSVPPathObjectsRecordRouteSubObjectType.ProtoReflect.Descriptor instead. +func (*FlowRSVPPathObjectsRecordRouteSubObjectType) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{232} } -func (x *MetricTimestamp) GetFirstTimestampNs() float64 { - if x != nil && x.FirstTimestampNs != nil { - return *x.FirstTimestampNs +func (x *FlowRSVPPathObjectsRecordRouteSubObjectType) GetChoice() FlowRSVPPathObjectsRecordRouteSubObjectType_Choice_Enum { + if x != nil && x.Choice != nil { + return *x.Choice } - return 0 + return FlowRSVPPathObjectsRecordRouteSubObjectType_Choice_unspecified } -func (x *MetricTimestamp) GetLastTimestampNs() float64 { - if x != nil && x.LastTimestampNs != nil { - return *x.LastTimestampNs +func (x *FlowRSVPPathObjectsRecordRouteSubObjectType) GetIpv4Address() *FlowRSVPPathRecordRouteType1Ipv4Address { + if x != nil { + return x.Ipv4Address } - return 0 + return nil } -// The container for latency metrics. -// The min/max/avg values are dependent on the type of latency measurement -// mode that is configured. -// The container will be empty if the latency has not been configured for -// the flow. -type MetricLatency struct { +func (x *FlowRSVPPathObjectsRecordRouteSubObjectType) GetLabel() *FlowRSVPPathRecordRouteType1Label { + if x != nil { + return x.Label + } + return nil +} + +// Class = RECORD_ROUTE, Type1 ROUTE_RECORD C-Type = 1 Subobject: IPv4 Address, C-Type: +// 1 +type FlowRSVPPathRecordRouteType1Ipv4Address struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Minimum latency in nanoseconds - MinimumNs *float64 `protobuf:"fixed64,1,opt,name=minimum_ns,json=minimumNs,proto3,oneof" json:"minimum_ns,omitempty"` - // Maximum latency in nanoseconds - MaximumNs *float64 `protobuf:"fixed64,2,opt,name=maximum_ns,json=maximumNs,proto3,oneof" json:"maximum_ns,omitempty"` - // Average latency in nanoseconds - AverageNs *float64 `protobuf:"fixed64,3,opt,name=average_ns,json=averageNs,proto3,oneof" json:"average_ns,omitempty"` + // The Length contains the total length of the subobject in bytes, including the Type + // and Length fields. The Length MUST be atleast 4, and MUST be a multiple of 4. + Length *FlowRSVPRouteRecordLength `protobuf:"bytes,1,opt,name=length,proto3" json:"length,omitempty"` + // Description missing in models + Ipv4Address *PatternFlowRSVPPathRecordRouteType1Ipv4AddressIpv4Address `protobuf:"bytes,2,opt,name=ipv4_address,json=ipv4Address,proto3" json:"ipv4_address,omitempty"` + // Description missing in models + PrefixLength *PatternFlowRSVPPathRecordRouteType1Ipv4AddressPrefixLength `protobuf:"bytes,3,opt,name=prefix_length,json=prefixLength,proto3" json:"prefix_length,omitempty"` + // 0x01 local_protection_available, 0x02 local_protection_in_use + Flags *FlowRSVPRecordRouteIPv4Flag `protobuf:"bytes,4,opt,name=flags,proto3" json:"flags,omitempty"` } -func (x *MetricLatency) Reset() { - *x = MetricLatency{} +func (x *FlowRSVPPathRecordRouteType1Ipv4Address) Reset() { + *x = FlowRSVPPathRecordRouteType1Ipv4Address{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[272] + mi := &file_otg_proto_msgTypes[233] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *MetricLatency) String() string { +func (x *FlowRSVPPathRecordRouteType1Ipv4Address) String() string { return protoimpl.X.MessageStringOf(x) } -func (*MetricLatency) ProtoMessage() {} +func (*FlowRSVPPathRecordRouteType1Ipv4Address) ProtoMessage() {} -func (x *MetricLatency) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[272] +func (x *FlowRSVPPathRecordRouteType1Ipv4Address) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[233] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -41288,70 +41081,67 @@ func (x *MetricLatency) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use MetricLatency.ProtoReflect.Descriptor instead. -func (*MetricLatency) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{272} +// Deprecated: Use FlowRSVPPathRecordRouteType1Ipv4Address.ProtoReflect.Descriptor instead. +func (*FlowRSVPPathRecordRouteType1Ipv4Address) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{233} } -func (x *MetricLatency) GetMinimumNs() float64 { - if x != nil && x.MinimumNs != nil { - return *x.MinimumNs +func (x *FlowRSVPPathRecordRouteType1Ipv4Address) GetLength() *FlowRSVPRouteRecordLength { + if x != nil { + return x.Length } - return 0 + return nil } -func (x *MetricLatency) GetMaximumNs() float64 { - if x != nil && x.MaximumNs != nil { - return *x.MaximumNs +func (x *FlowRSVPPathRecordRouteType1Ipv4Address) GetIpv4Address() *PatternFlowRSVPPathRecordRouteType1Ipv4AddressIpv4Address { + if x != nil { + return x.Ipv4Address } - return 0 + return nil } -func (x *MetricLatency) GetAverageNs() float64 { - if x != nil && x.AverageNs != nil { - return *x.AverageNs +func (x *FlowRSVPPathRecordRouteType1Ipv4Address) GetPrefixLength() *PatternFlowRSVPPathRecordRouteType1Ipv4AddressPrefixLength { + if x != nil { + return x.PrefixLength } - return 0 + return nil } -// The request to retrieve BGPv4 per peer metrics/statistics. -type Bgpv4MetricsRequest struct { +func (x *FlowRSVPPathRecordRouteType1Ipv4Address) GetFlags() *FlowRSVPRecordRouteIPv4Flag { + if x != nil { + return x.Flags + } + return nil +} + +// Description missing in models +type FlowRSVPRecordRouteIPv4Flag struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // The names of BGPv4 peers to return results for. An empty list will return results - // for all BGPv4 peers. - // - // x-constraint: - // - /components/schemas/Bgp.V4peer/properties/name - // - // x-constraint: - // - /components/schemas/Bgp.V4peer/properties/name - PeerNames []string `protobuf:"bytes,1,rep,name=peer_names,json=peerNames,proto3" json:"peer_names,omitempty"` - // The list of column names that the returned result set will contain. If the list is - // empty then all columns will be returned except for any result_groups. The name of - // the BGPv4 peer cannot be excluded. - ColumnNames []Bgpv4MetricsRequest_ColumnNames_Enum `protobuf:"varint,2,rep,packed,name=column_names,json=columnNames,proto3,enum=otg.Bgpv4MetricsRequest_ColumnNames_Enum" json:"column_names,omitempty"` + // Description missing in models + // default = Choice.Enum.local_protection_available + Choice *FlowRSVPRecordRouteIPv4Flag_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.FlowRSVPRecordRouteIPv4Flag_Choice_Enum,oneof" json:"choice,omitempty"` } -func (x *Bgpv4MetricsRequest) Reset() { - *x = Bgpv4MetricsRequest{} +func (x *FlowRSVPRecordRouteIPv4Flag) Reset() { + *x = FlowRSVPRecordRouteIPv4Flag{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[273] + mi := &file_otg_proto_msgTypes[234] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *Bgpv4MetricsRequest) String() string { +func (x *FlowRSVPRecordRouteIPv4Flag) String() string { return protoimpl.X.MessageStringOf(x) } -func (*Bgpv4MetricsRequest) ProtoMessage() {} +func (*FlowRSVPRecordRouteIPv4Flag) ProtoMessage() {} -func (x *Bgpv4MetricsRequest) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[273] +func (x *FlowRSVPRecordRouteIPv4Flag) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[234] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -41362,99 +41152,53 @@ func (x *Bgpv4MetricsRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use Bgpv4MetricsRequest.ProtoReflect.Descriptor instead. -func (*Bgpv4MetricsRequest) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{273} -} - -func (x *Bgpv4MetricsRequest) GetPeerNames() []string { - if x != nil { - return x.PeerNames - } - return nil +// Deprecated: Use FlowRSVPRecordRouteIPv4Flag.ProtoReflect.Descriptor instead. +func (*FlowRSVPRecordRouteIPv4Flag) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{234} } -func (x *Bgpv4MetricsRequest) GetColumnNames() []Bgpv4MetricsRequest_ColumnNames_Enum { - if x != nil { - return x.ColumnNames +func (x *FlowRSVPRecordRouteIPv4Flag) GetChoice() FlowRSVPRecordRouteIPv4Flag_Choice_Enum { + if x != nil && x.Choice != nil { + return *x.Choice } - return nil + return FlowRSVPRecordRouteIPv4Flag_Choice_unspecified } -// BGPv4 per peer statistics information. -type Bgpv4Metric struct { +// Class = RECORD_ROUTE, Type1 ROUTE_RECORD C-Type = 1 Subobject: Label, C-Type: 3 +type FlowRSVPPathRecordRouteType1Label struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // The name of a configured BGPv4 peer. - Name *string `protobuf:"bytes,1,opt,name=name,proto3,oneof" json:"name,omitempty"` - // Session state as up or down. Up refers to an Established state and Down refers to - // any other state. - SessionState *Bgpv4Metric_SessionState_Enum `protobuf:"varint,2,opt,name=session_state,json=sessionState,proto3,enum=otg.Bgpv4Metric_SessionState_Enum,oneof" json:"session_state,omitempty"` - // Number of times the session went from Up to Down state. - SessionFlapCount *uint64 `protobuf:"varint,3,opt,name=session_flap_count,json=sessionFlapCount,proto3,oneof" json:"session_flap_count,omitempty"` - // Number of routes advertised. - RoutesAdvertised *uint64 `protobuf:"varint,4,opt,name=routes_advertised,json=routesAdvertised,proto3,oneof" json:"routes_advertised,omitempty"` - // Number of routes received. - RoutesReceived *uint64 `protobuf:"varint,5,opt,name=routes_received,json=routesReceived,proto3,oneof" json:"routes_received,omitempty"` - // Number of route withdraws sent. - RouteWithdrawsSent *uint64 `protobuf:"varint,6,opt,name=route_withdraws_sent,json=routeWithdrawsSent,proto3,oneof" json:"route_withdraws_sent,omitempty"` - // Number of route withdraws received. - RouteWithdrawsReceived *uint64 `protobuf:"varint,7,opt,name=route_withdraws_received,json=routeWithdrawsReceived,proto3,oneof" json:"route_withdraws_received,omitempty"` - // Number of Update messages sent. - UpdatesSent *uint64 `protobuf:"varint,8,opt,name=updates_sent,json=updatesSent,proto3,oneof" json:"updates_sent,omitempty"` - // Number of Update messages received. - UpdatesReceived *uint64 `protobuf:"varint,9,opt,name=updates_received,json=updatesReceived,proto3,oneof" json:"updates_received,omitempty"` - // Number of Open messages sent. - OpensSent *uint64 `protobuf:"varint,10,opt,name=opens_sent,json=opensSent,proto3,oneof" json:"opens_sent,omitempty"` - // Number of Open messages received. - OpensReceived *uint64 `protobuf:"varint,11,opt,name=opens_received,json=opensReceived,proto3,oneof" json:"opens_received,omitempty"` - // Number of Keepalive messages sent. - KeepalivesSent *uint64 `protobuf:"varint,12,opt,name=keepalives_sent,json=keepalivesSent,proto3,oneof" json:"keepalives_sent,omitempty"` - // Number of Keepalive messages received. - KeepalivesReceived *uint64 `protobuf:"varint,13,opt,name=keepalives_received,json=keepalivesReceived,proto3,oneof" json:"keepalives_received,omitempty"` - // Number of Notification messages sent. - NotificationsSent *uint64 `protobuf:"varint,14,opt,name=notifications_sent,json=notificationsSent,proto3,oneof" json:"notifications_sent,omitempty"` - // Number of Notification messages received. - NotificationsReceived *uint64 `protobuf:"varint,15,opt,name=notifications_received,json=notificationsReceived,proto3,oneof" json:"notifications_received,omitempty"` - // BGP peer FSM (Finite State Machine) state as Idle, Connect, Active, OpenSent, OpenConfirm - // and Established. In all the states except Established the BGP session is down. Idle - // refers to the Idle state of the FSM. Connect refers to the state where the session - // is waiting for the underlying transport session to be established. Active refers - // to the state where the session is awaiting for a connection from the remote peer. - // OpenSent refers to the state where the session is in the process of being established. - // The local system has sent an OPEN message. OpenConfirm refers to the state where - // the session is in the process of being established. The local system has sent and - // received an OPEN message and is awaiting a NOTIFICATION or KEEPALIVE message from - // remote peer. Established refers to the state where the BGP session with the peer - // is established. - FsmState *Bgpv4Metric_FsmState_Enum `protobuf:"varint,16,opt,name=fsm_state,json=fsmState,proto3,enum=otg.Bgpv4Metric_FsmState_Enum,oneof" json:"fsm_state,omitempty"` - // Number of End-of-RIB markers received indicating the completion of the initial routing - // update for a particular address family after the session is established. - // For the IPv4 unicast address family, the End-of-RIB marker is an UPDATE message with - // the minimum length. For any other address family, it is an UPDATE message that contains - // only the MP_UNREACH_NLRI attribute with no withdrawn routes for that . - EndOfRibReceived *uint64 `protobuf:"varint,17,opt,name=end_of_rib_received,json=endOfRibReceived,proto3,oneof" json:"end_of_rib_received,omitempty"` + // The Length contains the total length of the subobject in bytes, including the Type + // and Length fields. The Length MUST be atleast 4, and MUST be a multiple of 4. + Length *FlowRSVPRouteRecordLength `protobuf:"bytes,1,opt,name=length,proto3" json:"length,omitempty"` + // Description missing in models + Flags *PatternFlowRSVPPathRecordRouteType1LabelFlags `protobuf:"bytes,2,opt,name=flags,proto3" json:"flags,omitempty"` + // Description missing in models + CType *PatternFlowRSVPPathRecordRouteType1LabelCType `protobuf:"bytes,3,opt,name=c_type,json=cType,proto3" json:"c_type,omitempty"` + // The contents of the Label Object. Copied from the Label Object. + // default = 00 + ContentsOfLabelObejct *string `protobuf:"bytes,4,opt,name=contents_of_label_obejct,json=contentsOfLabelObejct,proto3,oneof" json:"contents_of_label_obejct,omitempty"` } -func (x *Bgpv4Metric) Reset() { - *x = Bgpv4Metric{} +func (x *FlowRSVPPathRecordRouteType1Label) Reset() { + *x = FlowRSVPPathRecordRouteType1Label{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[274] + mi := &file_otg_proto_msgTypes[235] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *Bgpv4Metric) String() string { +func (x *FlowRSVPPathRecordRouteType1Label) String() string { return protoimpl.X.MessageStringOf(x) } -func (*Bgpv4Metric) ProtoMessage() {} +func (*FlowRSVPPathRecordRouteType1Label) ProtoMessage() {} -func (x *Bgpv4Metric) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[274] +func (x *FlowRSVPPathRecordRouteType1Label) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[235] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -41465,168 +41209,144 @@ func (x *Bgpv4Metric) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use Bgpv4Metric.ProtoReflect.Descriptor instead. -func (*Bgpv4Metric) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{274} -} - -func (x *Bgpv4Metric) GetName() string { - if x != nil && x.Name != nil { - return *x.Name - } - return "" -} - -func (x *Bgpv4Metric) GetSessionState() Bgpv4Metric_SessionState_Enum { - if x != nil && x.SessionState != nil { - return *x.SessionState - } - return Bgpv4Metric_SessionState_unspecified +// Deprecated: Use FlowRSVPPathRecordRouteType1Label.ProtoReflect.Descriptor instead. +func (*FlowRSVPPathRecordRouteType1Label) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{235} } -func (x *Bgpv4Metric) GetSessionFlapCount() uint64 { - if x != nil && x.SessionFlapCount != nil { - return *x.SessionFlapCount +func (x *FlowRSVPPathRecordRouteType1Label) GetLength() *FlowRSVPRouteRecordLength { + if x != nil { + return x.Length } - return 0 + return nil } -func (x *Bgpv4Metric) GetRoutesAdvertised() uint64 { - if x != nil && x.RoutesAdvertised != nil { - return *x.RoutesAdvertised +func (x *FlowRSVPPathRecordRouteType1Label) GetFlags() *PatternFlowRSVPPathRecordRouteType1LabelFlags { + if x != nil { + return x.Flags } - return 0 + return nil } -func (x *Bgpv4Metric) GetRoutesReceived() uint64 { - if x != nil && x.RoutesReceived != nil { - return *x.RoutesReceived +func (x *FlowRSVPPathRecordRouteType1Label) GetCType() *PatternFlowRSVPPathRecordRouteType1LabelCType { + if x != nil { + return x.CType } - return 0 + return nil } -func (x *Bgpv4Metric) GetRouteWithdrawsSent() uint64 { - if x != nil && x.RouteWithdrawsSent != nil { - return *x.RouteWithdrawsSent +func (x *FlowRSVPPathRecordRouteType1Label) GetContentsOfLabelObejct() string { + if x != nil && x.ContentsOfLabelObejct != nil { + return *x.ContentsOfLabelObejct } - return 0 + return "" } -func (x *Bgpv4Metric) GetRouteWithdrawsReceived() uint64 { - if x != nil && x.RouteWithdrawsReceived != nil { - return *x.RouteWithdrawsReceived - } - return 0 -} +// Description missing in models +type FlowRSVPRouteRecordLength struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields -func (x *Bgpv4Metric) GetUpdatesSent() uint64 { - if x != nil && x.UpdatesSent != nil { - return *x.UpdatesSent - } - return 0 + // auto or configured value. + // default = Choice.Enum.auto + Choice *FlowRSVPRouteRecordLength_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.FlowRSVPRouteRecordLength_Choice_Enum,oneof" json:"choice,omitempty"` + // The OTG implementation can provide a system generated value for this property. If + // the OTG is unable to generate a value the default value must be used. + // default = 8 + Auto *uint32 `protobuf:"varint,2,opt,name=auto,proto3,oneof" json:"auto,omitempty"` + // Description missing in models + // default = 8 + Value *uint32 `protobuf:"varint,3,opt,name=value,proto3,oneof" json:"value,omitempty"` } -func (x *Bgpv4Metric) GetUpdatesReceived() uint64 { - if x != nil && x.UpdatesReceived != nil { - return *x.UpdatesReceived +func (x *FlowRSVPRouteRecordLength) Reset() { + *x = FlowRSVPRouteRecordLength{} + if protoimpl.UnsafeEnabled { + mi := &file_otg_proto_msgTypes[236] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } - return 0 } -func (x *Bgpv4Metric) GetOpensSent() uint64 { - if x != nil && x.OpensSent != nil { - return *x.OpensSent - } - return 0 +func (x *FlowRSVPRouteRecordLength) String() string { + return protoimpl.X.MessageStringOf(x) } -func (x *Bgpv4Metric) GetOpensReceived() uint64 { - if x != nil && x.OpensReceived != nil { - return *x.OpensReceived - } - return 0 -} +func (*FlowRSVPRouteRecordLength) ProtoMessage() {} -func (x *Bgpv4Metric) GetKeepalivesSent() uint64 { - if x != nil && x.KeepalivesSent != nil { - return *x.KeepalivesSent +func (x *FlowRSVPRouteRecordLength) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[236] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms } - return 0 + return mi.MessageOf(x) } -func (x *Bgpv4Metric) GetKeepalivesReceived() uint64 { - if x != nil && x.KeepalivesReceived != nil { - return *x.KeepalivesReceived - } - return 0 +// Deprecated: Use FlowRSVPRouteRecordLength.ProtoReflect.Descriptor instead. +func (*FlowRSVPRouteRecordLength) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{236} } -func (x *Bgpv4Metric) GetNotificationsSent() uint64 { - if x != nil && x.NotificationsSent != nil { - return *x.NotificationsSent +func (x *FlowRSVPRouteRecordLength) GetChoice() FlowRSVPRouteRecordLength_Choice_Enum { + if x != nil && x.Choice != nil { + return *x.Choice } - return 0 + return FlowRSVPRouteRecordLength_Choice_unspecified } -func (x *Bgpv4Metric) GetNotificationsReceived() uint64 { - if x != nil && x.NotificationsReceived != nil { - return *x.NotificationsReceived +func (x *FlowRSVPRouteRecordLength) GetAuto() uint32 { + if x != nil && x.Auto != nil { + return *x.Auto } return 0 } -func (x *Bgpv4Metric) GetFsmState() Bgpv4Metric_FsmState_Enum { - if x != nil && x.FsmState != nil { - return *x.FsmState - } - return Bgpv4Metric_FsmState_unspecified -} - -func (x *Bgpv4Metric) GetEndOfRibReceived() uint64 { - if x != nil && x.EndOfRibReceived != nil { - return *x.EndOfRibReceived +func (x *FlowRSVPRouteRecordLength) GetValue() uint32 { + if x != nil && x.Value != nil { + return *x.Value } return 0 } -// The request to retrieve BGPv6 per peer metrics/statistics. -type Bgpv6MetricsRequest struct { +// Custom packet header +type FlowRSVPPathObjectsCustom struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // The names of BGPv6 peers to return results for. An empty list will return results - // for all BGPv6 peers. - // - // x-constraint: - // - /components/schemas/Bgp.V6peer/properties/name - // - // x-constraint: - // - /components/schemas/Bgp.V6peer/properties/name - PeerNames []string `protobuf:"bytes,1,rep,name=peer_names,json=peerNames,proto3" json:"peer_names,omitempty"` - // The list of column names that the returned result set will contain. If the list is - // empty then all columns will be returned except for any result_groups. The name of - // the BGPv6 peer cannot be excluded. - ColumnNames []Bgpv6MetricsRequest_ColumnNames_Enum `protobuf:"varint,2,rep,packed,name=column_names,json=columnNames,proto3,enum=otg.Bgpv6MetricsRequest_ColumnNames_Enum" json:"column_names,omitempty"` + // Description missing in models + Type *PatternFlowRSVPPathObjectsCustomType `protobuf:"bytes,1,opt,name=type,proto3" json:"type,omitempty"` + // Description missing in models + Length *FlowRSVPObjectOptionsCustomLength `protobuf:"bytes,2,opt,name=length,proto3" json:"length,omitempty"` + // A custom packet header defined as a string of hex bytes. The string MUST contain + // sequence of valid hex bytes. Spaces or colons can be part of the bytes but will be + // discarded. This packet header can be used in multiple places in the packet. + // required = true + Bytes *string `protobuf:"bytes,3,opt,name=bytes,proto3,oneof" json:"bytes,omitempty"` } -func (x *Bgpv6MetricsRequest) Reset() { - *x = Bgpv6MetricsRequest{} +func (x *FlowRSVPPathObjectsCustom) Reset() { + *x = FlowRSVPPathObjectsCustom{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[275] + mi := &file_otg_proto_msgTypes[237] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *Bgpv6MetricsRequest) String() string { +func (x *FlowRSVPPathObjectsCustom) String() string { return protoimpl.X.MessageStringOf(x) } -func (*Bgpv6MetricsRequest) ProtoMessage() {} +func (*FlowRSVPPathObjectsCustom) ProtoMessage() {} -func (x *Bgpv6MetricsRequest) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[275] +func (x *FlowRSVPPathObjectsCustom) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[237] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -41637,99 +41357,67 @@ func (x *Bgpv6MetricsRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use Bgpv6MetricsRequest.ProtoReflect.Descriptor instead. -func (*Bgpv6MetricsRequest) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{275} +// Deprecated: Use FlowRSVPPathObjectsCustom.ProtoReflect.Descriptor instead. +func (*FlowRSVPPathObjectsCustom) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{237} } -func (x *Bgpv6MetricsRequest) GetPeerNames() []string { +func (x *FlowRSVPPathObjectsCustom) GetType() *PatternFlowRSVPPathObjectsCustomType { if x != nil { - return x.PeerNames + return x.Type } return nil } -func (x *Bgpv6MetricsRequest) GetColumnNames() []Bgpv6MetricsRequest_ColumnNames_Enum { +func (x *FlowRSVPPathObjectsCustom) GetLength() *FlowRSVPObjectOptionsCustomLength { if x != nil { - return x.ColumnNames + return x.Length } return nil } -// BGPv6 per peer statistics information. -type Bgpv6Metric struct { +func (x *FlowRSVPPathObjectsCustom) GetBytes() string { + if x != nil && x.Bytes != nil { + return *x.Bytes + } + return "" +} + +// Length for custom options. +type FlowRSVPObjectOptionsCustomLength struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // The name of a configured BGPv6 peer. - Name *string `protobuf:"bytes,1,opt,name=name,proto3,oneof" json:"name,omitempty"` - // Session state as up or down. Up refers to an Established state and Down refers to - // any other state. - SessionState *Bgpv6Metric_SessionState_Enum `protobuf:"varint,2,opt,name=session_state,json=sessionState,proto3,enum=otg.Bgpv6Metric_SessionState_Enum,oneof" json:"session_state,omitempty"` - // Number of times the session went from Up to Down state. - SessionFlapCount *uint64 `protobuf:"varint,3,opt,name=session_flap_count,json=sessionFlapCount,proto3,oneof" json:"session_flap_count,omitempty"` - // Number of routes advertised. - RoutesAdvertised *uint64 `protobuf:"varint,4,opt,name=routes_advertised,json=routesAdvertised,proto3,oneof" json:"routes_advertised,omitempty"` - // Number of routes received. - RoutesReceived *uint64 `protobuf:"varint,5,opt,name=routes_received,json=routesReceived,proto3,oneof" json:"routes_received,omitempty"` - // Number of route withdraws sent. - RouteWithdrawsSent *uint64 `protobuf:"varint,6,opt,name=route_withdraws_sent,json=routeWithdrawsSent,proto3,oneof" json:"route_withdraws_sent,omitempty"` - // Number of route withdraws received. - RouteWithdrawsReceived *uint64 `protobuf:"varint,7,opt,name=route_withdraws_received,json=routeWithdrawsReceived,proto3,oneof" json:"route_withdraws_received,omitempty"` - // Number of Update messages sent. - UpdatesSent *uint64 `protobuf:"varint,8,opt,name=updates_sent,json=updatesSent,proto3,oneof" json:"updates_sent,omitempty"` - // Number of Update messages received. - UpdatesReceived *uint64 `protobuf:"varint,9,opt,name=updates_received,json=updatesReceived,proto3,oneof" json:"updates_received,omitempty"` - // Number of Open messages sent. - OpensSent *uint64 `protobuf:"varint,10,opt,name=opens_sent,json=opensSent,proto3,oneof" json:"opens_sent,omitempty"` - // Number of Open messages received. - OpensReceived *uint64 `protobuf:"varint,11,opt,name=opens_received,json=opensReceived,proto3,oneof" json:"opens_received,omitempty"` - // Number of Keepalive messages sent. - KeepalivesSent *uint64 `protobuf:"varint,12,opt,name=keepalives_sent,json=keepalivesSent,proto3,oneof" json:"keepalives_sent,omitempty"` - // Number of Keepalive messages received. - KeepalivesReceived *uint64 `protobuf:"varint,13,opt,name=keepalives_received,json=keepalivesReceived,proto3,oneof" json:"keepalives_received,omitempty"` - // Number of Notification messages sent. - NotificationsSent *uint64 `protobuf:"varint,14,opt,name=notifications_sent,json=notificationsSent,proto3,oneof" json:"notifications_sent,omitempty"` - // Number of Notification messages received. - NotificationsReceived *uint64 `protobuf:"varint,15,opt,name=notifications_received,json=notificationsReceived,proto3,oneof" json:"notifications_received,omitempty"` - // BGP peer FSM (Finite State Machine) state as Idle, Connect, Active, OpenSent, OpenConfirm - // and Established. In all the states except Established the BGP session is down. Idle - // refers to the Idle state of the FSM. Connect refers to the state where the session - // is waiting for the underlying transport session to be established. Active refers - // to the state where the session is awaiting for a connection from the remote peer. - // OpenSent refers to the state where the session is in the process of being established. - // The local system has sent an OPEN message. OpenConfirm refers to the state where - // the session is in the process of being established. The local system has sent and - // received an OPEN message and is awaiting a NOTIFICATION or KEEPALIVE message from - // remote peer. Established refers to the state where the BGP session with the peer - // is established. - FsmState *Bgpv6Metric_FsmState_Enum `protobuf:"varint,16,opt,name=fsm_state,json=fsmState,proto3,enum=otg.Bgpv6Metric_FsmState_Enum,oneof" json:"fsm_state,omitempty"` - // Number of End-of-RIB markers received indicating the completion of the initial routing - // update for a particular address family after the session is established. - // For the IPv4 unicast address family, the End-of-RIB marker is an UPDATE message with - // the minimum length. For any other address family, it is an UPDATE message that contains - // only the MP_UNREACH_NLRI attribute with no withdrawn routes for that . - EndOfRibReceived *uint64 `protobuf:"varint,17,opt,name=end_of_rib_received,json=endOfRibReceived,proto3,oneof" json:"end_of_rib_received,omitempty"` + // auto or configured value. + // default = Choice.Enum.auto + Choice *FlowRSVPObjectOptionsCustomLength_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.FlowRSVPObjectOptionsCustomLength_Choice_Enum,oneof" json:"choice,omitempty"` + // The OTG implementation can provide a system generated value for this property. If + // the OTG is unable to generate a value the default value must be used. + // default = 4 + Auto *uint32 `protobuf:"varint,2,opt,name=auto,proto3,oneof" json:"auto,omitempty"` + // Description missing in models + // default = 4 + Value *uint32 `protobuf:"varint,3,opt,name=value,proto3,oneof" json:"value,omitempty"` } -func (x *Bgpv6Metric) Reset() { - *x = Bgpv6Metric{} +func (x *FlowRSVPObjectOptionsCustomLength) Reset() { + *x = FlowRSVPObjectOptionsCustomLength{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[276] + mi := &file_otg_proto_msgTypes[238] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *Bgpv6Metric) String() string { +func (x *FlowRSVPObjectOptionsCustomLength) String() string { return protoimpl.X.MessageStringOf(x) } -func (*Bgpv6Metric) ProtoMessage() {} +func (*FlowRSVPObjectOptionsCustomLength) ProtoMessage() {} -func (x *Bgpv6Metric) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[276] +func (x *FlowRSVPObjectOptionsCustomLength) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[238] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -41740,168 +41428,221 @@ func (x *Bgpv6Metric) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use Bgpv6Metric.ProtoReflect.Descriptor instead. -func (*Bgpv6Metric) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{276} +// Deprecated: Use FlowRSVPObjectOptionsCustomLength.ProtoReflect.Descriptor instead. +func (*FlowRSVPObjectOptionsCustomLength) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{238} } -func (x *Bgpv6Metric) GetName() string { - if x != nil && x.Name != nil { - return *x.Name +func (x *FlowRSVPObjectOptionsCustomLength) GetChoice() FlowRSVPObjectOptionsCustomLength_Choice_Enum { + if x != nil && x.Choice != nil { + return *x.Choice } - return "" + return FlowRSVPObjectOptionsCustomLength_Choice_unspecified } -func (x *Bgpv6Metric) GetSessionState() Bgpv6Metric_SessionState_Enum { - if x != nil && x.SessionState != nil { - return *x.SessionState +func (x *FlowRSVPObjectOptionsCustomLength) GetAuto() uint32 { + if x != nil && x.Auto != nil { + return *x.Auto } - return Bgpv6Metric_SessionState_unspecified + return 0 } -func (x *Bgpv6Metric) GetSessionFlapCount() uint64 { - if x != nil && x.SessionFlapCount != nil { - return *x.SessionFlapCount +func (x *FlowRSVPObjectOptionsCustomLength) GetValue() uint32 { + if x != nil && x.Value != nil { + return *x.Value } return 0 } -func (x *Bgpv6Metric) GetRoutesAdvertised() uint64 { - if x != nil && x.RoutesAdvertised != nil { - return *x.RoutesAdvertised - } - return 0 +// The frame size which overrides the total length of the packet +type FlowSize struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Description missing in models + // default = Choice.Enum.fixed + Choice *FlowSize_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.FlowSize_Choice_Enum,oneof" json:"choice,omitempty"` + // Description missing in models + // default = 64 + Fixed *uint32 `protobuf:"varint,2,opt,name=fixed,proto3,oneof" json:"fixed,omitempty"` + // Description missing in models + Increment *FlowSizeIncrement `protobuf:"bytes,3,opt,name=increment,proto3" json:"increment,omitempty"` + // Description missing in models + Random *FlowSizeRandom `protobuf:"bytes,4,opt,name=random,proto3" json:"random,omitempty"` + // Description missing in models + WeightPairs *FlowSizeWeightPairs `protobuf:"bytes,5,opt,name=weight_pairs,json=weightPairs,proto3" json:"weight_pairs,omitempty"` } -func (x *Bgpv6Metric) GetRoutesReceived() uint64 { - if x != nil && x.RoutesReceived != nil { - return *x.RoutesReceived +func (x *FlowSize) Reset() { + *x = FlowSize{} + if protoimpl.UnsafeEnabled { + mi := &file_otg_proto_msgTypes[239] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } - return 0 } -func (x *Bgpv6Metric) GetRouteWithdrawsSent() uint64 { - if x != nil && x.RouteWithdrawsSent != nil { - return *x.RouteWithdrawsSent - } - return 0 +func (x *FlowSize) String() string { + return protoimpl.X.MessageStringOf(x) } -func (x *Bgpv6Metric) GetRouteWithdrawsReceived() uint64 { - if x != nil && x.RouteWithdrawsReceived != nil { - return *x.RouteWithdrawsReceived +func (*FlowSize) ProtoMessage() {} + +func (x *FlowSize) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[239] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms } - return 0 + return mi.MessageOf(x) } -func (x *Bgpv6Metric) GetUpdatesSent() uint64 { - if x != nil && x.UpdatesSent != nil { - return *x.UpdatesSent +// Deprecated: Use FlowSize.ProtoReflect.Descriptor instead. +func (*FlowSize) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{239} +} + +func (x *FlowSize) GetChoice() FlowSize_Choice_Enum { + if x != nil && x.Choice != nil { + return *x.Choice } - return 0 + return FlowSize_Choice_unspecified } -func (x *Bgpv6Metric) GetUpdatesReceived() uint64 { - if x != nil && x.UpdatesReceived != nil { - return *x.UpdatesReceived +func (x *FlowSize) GetFixed() uint32 { + if x != nil && x.Fixed != nil { + return *x.Fixed } return 0 } -func (x *Bgpv6Metric) GetOpensSent() uint64 { - if x != nil && x.OpensSent != nil { - return *x.OpensSent +func (x *FlowSize) GetIncrement() *FlowSizeIncrement { + if x != nil { + return x.Increment } - return 0 + return nil } -func (x *Bgpv6Metric) GetOpensReceived() uint64 { - if x != nil && x.OpensReceived != nil { - return *x.OpensReceived +func (x *FlowSize) GetRandom() *FlowSizeRandom { + if x != nil { + return x.Random } - return 0 + return nil } -func (x *Bgpv6Metric) GetKeepalivesSent() uint64 { - if x != nil && x.KeepalivesSent != nil { - return *x.KeepalivesSent +func (x *FlowSize) GetWeightPairs() *FlowSizeWeightPairs { + if x != nil { + return x.WeightPairs } - return 0 + return nil } -func (x *Bgpv6Metric) GetKeepalivesReceived() uint64 { - if x != nil && x.KeepalivesReceived != nil { - return *x.KeepalivesReceived +// Frame size that increments from a starting size to +// an ending size incrementing by a step size. +type FlowSizeIncrement struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Starting frame size in bytes + // default = 64 + Start *uint32 `protobuf:"varint,1,opt,name=start,proto3,oneof" json:"start,omitempty"` + // Ending frame size in bytes + // default = 1518 + End *uint32 `protobuf:"varint,2,opt,name=end,proto3,oneof" json:"end,omitempty"` + // Step frame size in bytes + // default = 1 + Step *uint32 `protobuf:"varint,3,opt,name=step,proto3,oneof" json:"step,omitempty"` +} + +func (x *FlowSizeIncrement) Reset() { + *x = FlowSizeIncrement{} + if protoimpl.UnsafeEnabled { + mi := &file_otg_proto_msgTypes[240] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } - return 0 } -func (x *Bgpv6Metric) GetNotificationsSent() uint64 { - if x != nil && x.NotificationsSent != nil { - return *x.NotificationsSent +func (x *FlowSizeIncrement) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*FlowSizeIncrement) ProtoMessage() {} + +func (x *FlowSizeIncrement) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[240] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms } - return 0 + return mi.MessageOf(x) } -func (x *Bgpv6Metric) GetNotificationsReceived() uint64 { - if x != nil && x.NotificationsReceived != nil { - return *x.NotificationsReceived +// Deprecated: Use FlowSizeIncrement.ProtoReflect.Descriptor instead. +func (*FlowSizeIncrement) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{240} +} + +func (x *FlowSizeIncrement) GetStart() uint32 { + if x != nil && x.Start != nil { + return *x.Start } return 0 } -func (x *Bgpv6Metric) GetFsmState() Bgpv6Metric_FsmState_Enum { - if x != nil && x.FsmState != nil { - return *x.FsmState +func (x *FlowSizeIncrement) GetEnd() uint32 { + if x != nil && x.End != nil { + return *x.End } - return Bgpv6Metric_FsmState_unspecified + return 0 } -func (x *Bgpv6Metric) GetEndOfRibReceived() uint64 { - if x != nil && x.EndOfRibReceived != nil { - return *x.EndOfRibReceived +func (x *FlowSizeIncrement) GetStep() uint32 { + if x != nil && x.Step != nil { + return *x.Step } return 0 } -// The request to retrieve ISIS per Router metrics/statistics. -type IsisMetricsRequest struct { +// Random frame size from a min value to a max value. +type FlowSizeRandom struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // The names of ISIS Routers to return results for. An empty list will return results - // for all ISIS router. - // - // x-constraint: - // - /components/schemas/Device.IsisRouter/properties/name - // - // x-constraint: - // - /components/schemas/Device.IsisRouter/properties/name - RouterNames []string `protobuf:"bytes,1,rep,name=router_names,json=routerNames,proto3" json:"router_names,omitempty"` - // The list of column names that the returned result set will contain. If the list is - // empty then all columns will be returned except for any result_groups. The name of - // the ISIS Router cannot be excluded. - ColumnNames []IsisMetricsRequest_ColumnNames_Enum `protobuf:"varint,2,rep,packed,name=column_names,json=columnNames,proto3,enum=otg.IsisMetricsRequest_ColumnNames_Enum" json:"column_names,omitempty"` + // Description missing in models + // default = 64 + Min *uint32 `protobuf:"varint,1,opt,name=min,proto3,oneof" json:"min,omitempty"` + // Description missing in models + // default = 1518 + Max *uint32 `protobuf:"varint,2,opt,name=max,proto3,oneof" json:"max,omitempty"` } -func (x *IsisMetricsRequest) Reset() { - *x = IsisMetricsRequest{} +func (x *FlowSizeRandom) Reset() { + *x = FlowSizeRandom{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[277] + mi := &file_otg_proto_msgTypes[241] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *IsisMetricsRequest) String() string { +func (x *FlowSizeRandom) String() string { return protoimpl.X.MessageStringOf(x) } -func (*IsisMetricsRequest) ProtoMessage() {} +func (*FlowSizeRandom) ProtoMessage() {} -func (x *IsisMetricsRequest) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[277] +func (x *FlowSizeRandom) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[241] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -41912,104 +41653,73 @@ func (x *IsisMetricsRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use IsisMetricsRequest.ProtoReflect.Descriptor instead. -func (*IsisMetricsRequest) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{277} +// Deprecated: Use FlowSizeRandom.ProtoReflect.Descriptor instead. +func (*FlowSizeRandom) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{241} } -func (x *IsisMetricsRequest) GetRouterNames() []string { - if x != nil { - return x.RouterNames +func (x *FlowSizeRandom) GetMin() uint32 { + if x != nil && x.Min != nil { + return *x.Min } - return nil + return 0 } -func (x *IsisMetricsRequest) GetColumnNames() []IsisMetricsRequest_ColumnNames_Enum { - if x != nil { - return x.ColumnNames +func (x *FlowSizeRandom) GetMax() uint32 { + if x != nil && x.Max != nil { + return *x.Max } - return nil + return 0 } -// ISIS per router statistics information. -type IsisMetric struct { +// Frame size distribution, defined as pairs (including IMIX distribution). +// Frames are randomly generated such that the proportion of each frame size out of +// the total number of frames +// are matching with the weight value of the pair. However, as with any +// other probability +// distribution, the sample distribution is close to theoretical value only if the size +// of the sample is reasonably large. +// When the number of frames is very low the transmitted frames may not come close to +// the ratio described in the weight. +type FlowSizeWeightPairs struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // The name of a configured ISIS router. - Name *string `protobuf:"bytes,1,opt,name=name,proto3,oneof" json:"name,omitempty"` - // The number of Level 1 (L1) sessions that are fully up. - L1SessionsUp *uint32 `protobuf:"varint,2,opt,name=l1_sessions_up,json=l1SessionsUp,proto3,oneof" json:"l1_sessions_up,omitempty"` - // The number of Level 1 Sessions Flap. - L1SessionFlap *uint64 `protobuf:"varint,3,opt,name=l1_session_flap,json=l1SessionFlap,proto3,oneof" json:"l1_session_flap,omitempty"` - // Number of Level 1 Hello messages sent. - L1BroadcastHellosSent *uint64 `protobuf:"varint,4,opt,name=l1_broadcast_hellos_sent,json=l1BroadcastHellosSent,proto3,oneof" json:"l1_broadcast_hellos_sent,omitempty"` - // Number of Level 1 Hello messages received. - L1BroadcastHellosReceived *uint64 `protobuf:"varint,5,opt,name=l1_broadcast_hellos_received,json=l1BroadcastHellosReceived,proto3,oneof" json:"l1_broadcast_hellos_received,omitempty"` - // Number of Level 1 Point-to-Point(P2P) Hello messages sent. - L1PointToPointHellosSent *uint64 `protobuf:"varint,6,opt,name=l1_point_to_point_hellos_sent,json=l1PointToPointHellosSent,proto3,oneof" json:"l1_point_to_point_hellos_sent,omitempty"` - // Number of Level 1 Point-to-Point(P2P) Hello messages received. - L1PointToPointHellosReceived *uint64 `protobuf:"varint,7,opt,name=l1_point_to_point_hellos_received,json=l1PointToPointHellosReceived,proto3,oneof" json:"l1_point_to_point_hellos_received,omitempty"` - // Number of Link State Updates (LSPs) in the Level 1 LSP Databases. - L1DatabaseSize *uint64 `protobuf:"varint,8,opt,name=l1_database_size,json=l1DatabaseSize,proto3,oneof" json:"l1_database_size,omitempty"` - // Number of Level 1 (L1) Partial Sequence Number Packet (PSNPs) sent. - L1PsnpSent *uint64 `protobuf:"varint,9,opt,name=l1_psnp_sent,json=l1PsnpSent,proto3,oneof" json:"l1_psnp_sent,omitempty"` - // Number of Level 1 (L1) Complete Sequence Number Packet (PSNPs) received. - L1PsnpReceived *uint64 `protobuf:"varint,10,opt,name=l1_psnp_received,json=l1PsnpReceived,proto3,oneof" json:"l1_psnp_received,omitempty"` - // Number of Level 1 (L1) Complete Sequence Number Packet (CSNPs) sent. - L1CsnpSent *uint64 `protobuf:"varint,11,opt,name=l1_csnp_sent,json=l1CsnpSent,proto3,oneof" json:"l1_csnp_sent,omitempty"` - // Number of Level 1 (L1) Complete Sequence Number Packet (CSNPs) received. - L1CsnpReceived *uint64 `protobuf:"varint,12,opt,name=l1_csnp_received,json=l1CsnpReceived,proto3,oneof" json:"l1_csnp_received,omitempty"` - // Number of Level 1 (L1) Link State Protocol Data Units (LSPs) sent. - L1LspSent *uint64 `protobuf:"varint,13,opt,name=l1_lsp_sent,json=l1LspSent,proto3,oneof" json:"l1_lsp_sent,omitempty"` - // Number of Level 1 (L1) Link State Protocol Data Units (LSPs) received. - L1LspReceived *uint64 `protobuf:"varint,14,opt,name=l1_lsp_received,json=l1LspReceived,proto3,oneof" json:"l1_lsp_received,omitempty"` - // The number of Level 2 (L2) sessions that are fully up. - L2SessionsUp *uint32 `protobuf:"varint,15,opt,name=l2_sessions_up,json=l2SessionsUp,proto3,oneof" json:"l2_sessions_up,omitempty"` - // The number of Level 2 Sessions Flap. - L2SessionFlap *uint64 `protobuf:"varint,16,opt,name=l2_session_flap,json=l2SessionFlap,proto3,oneof" json:"l2_session_flap,omitempty"` - // Number of Level 2 Hello messages sent. - L2BroadcastHellosSent *uint64 `protobuf:"varint,17,opt,name=l2_broadcast_hellos_sent,json=l2BroadcastHellosSent,proto3,oneof" json:"l2_broadcast_hellos_sent,omitempty"` - // Number of Level 2 Hello messages received. - L2BroadcastHellosReceived *uint64 `protobuf:"varint,18,opt,name=l2_broadcast_hellos_received,json=l2BroadcastHellosReceived,proto3,oneof" json:"l2_broadcast_hellos_received,omitempty"` - // Number of Level 2 Point-to-Point(P2P) Hello messages sent. - L2PointToPointHellosSent *uint64 `protobuf:"varint,19,opt,name=l2_point_to_point_hellos_sent,json=l2PointToPointHellosSent,proto3,oneof" json:"l2_point_to_point_hellos_sent,omitempty"` - // Number of Level 2 Point-to-Point(P2P) Hello messages received. - L2PointToPointHellosReceived *uint64 `protobuf:"varint,20,opt,name=l2_point_to_point_hellos_received,json=l2PointToPointHellosReceived,proto3,oneof" json:"l2_point_to_point_hellos_received,omitempty"` - // Number of Link State Updates (LSPs) in the Level 2 LSP Databases. - L2DatabaseSize *uint64 `protobuf:"varint,21,opt,name=l2_database_size,json=l2DatabaseSize,proto3,oneof" json:"l2_database_size,omitempty"` - // Number of Level 2 (L2) Partial Sequence Number Packet (PSNPs) sent. - L2PsnpSent *uint64 `protobuf:"varint,22,opt,name=l2_psnp_sent,json=l2PsnpSent,proto3,oneof" json:"l2_psnp_sent,omitempty"` - // Number of Level 2 (L2) Complete Sequence Number Packet (PSNPs) received. - L2PsnpReceived *uint64 `protobuf:"varint,23,opt,name=l2_psnp_received,json=l2PsnpReceived,proto3,oneof" json:"l2_psnp_received,omitempty"` - // Number of Level 2 (L2) Complete Sequence Number Packet (CSNPs) sent. - L2CsnpSent *uint64 `protobuf:"varint,24,opt,name=l2_csnp_sent,json=l2CsnpSent,proto3,oneof" json:"l2_csnp_sent,omitempty"` - // Number of Level 2 (L2) Complete Sequence Number Packet (CSNPs) received. - L2CsnpReceived *uint64 `protobuf:"varint,25,opt,name=l2_csnp_received,json=l2CsnpReceived,proto3,oneof" json:"l2_csnp_received,omitempty"` - // Number of Level 2 (L2) Link State Protocol Data Units (LSPs) sent. - L2LspSent *uint64 `protobuf:"varint,26,opt,name=l2_lsp_sent,json=l2LspSent,proto3,oneof" json:"l2_lsp_sent,omitempty"` - // Number of Level 2 (L2) Link State Protocol Data Units (LSPs) received. - L2LspReceived *uint64 `protobuf:"varint,27,opt,name=l2_lsp_received,json=l2LspReceived,proto3,oneof" json:"l2_lsp_received,omitempty"` + // Description missing in models + // default = Choice.Enum.predefined + Choice *FlowSizeWeightPairs_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.FlowSizeWeightPairs_Choice_Enum,oneof" json:"choice,omitempty"` + // Specify predefined frame size distribution pairs (including IMIX distribution). + // + // The available predefined distribution pairs are: + // - IMIX (64:7, 570:4, and 1518:1) + // - IPSec IMIX (90:58.67, 92:2, 594:23.66 and 1418:15.67) + // - IPv6 IMIX (60:58.67, 496:2, 594:23.66 and 1518:15.67) + // - Standard IMIX (58:58.67, 62:2, 594:23.66 and 1518:15.67) + // - TCP IMIX (90:58.67, 92:2, 594:23.66 and 1518:15.67) + // default = Predefined.Enum.imix + Predefined *FlowSizeWeightPairs_Predefined_Enum `protobuf:"varint,2,opt,name=predefined,proto3,enum=otg.FlowSizeWeightPairs_Predefined_Enum,oneof" json:"predefined,omitempty"` + // Description missing in models + Custom []*FlowSizeWeightPairsCustom `protobuf:"bytes,3,rep,name=custom,proto3" json:"custom,omitempty"` } -func (x *IsisMetric) Reset() { - *x = IsisMetric{} +func (x *FlowSizeWeightPairs) Reset() { + *x = FlowSizeWeightPairs{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[278] + mi := &file_otg_proto_msgTypes[242] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *IsisMetric) String() string { +func (x *FlowSizeWeightPairs) String() string { return protoimpl.X.MessageStringOf(x) } -func (*IsisMetric) ProtoMessage() {} +func (*FlowSizeWeightPairs) ProtoMessage() {} -func (x *IsisMetric) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[278] +func (x *FlowSizeWeightPairs) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[242] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -42020,237 +41730,239 @@ func (x *IsisMetric) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use IsisMetric.ProtoReflect.Descriptor instead. -func (*IsisMetric) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{278} +// Deprecated: Use FlowSizeWeightPairs.ProtoReflect.Descriptor instead. +func (*FlowSizeWeightPairs) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{242} } -func (x *IsisMetric) GetName() string { - if x != nil && x.Name != nil { - return *x.Name +func (x *FlowSizeWeightPairs) GetChoice() FlowSizeWeightPairs_Choice_Enum { + if x != nil && x.Choice != nil { + return *x.Choice } - return "" + return FlowSizeWeightPairs_Choice_unspecified } -func (x *IsisMetric) GetL1SessionsUp() uint32 { - if x != nil && x.L1SessionsUp != nil { - return *x.L1SessionsUp +func (x *FlowSizeWeightPairs) GetPredefined() FlowSizeWeightPairs_Predefined_Enum { + if x != nil && x.Predefined != nil { + return *x.Predefined } - return 0 + return FlowSizeWeightPairs_Predefined_unspecified } -func (x *IsisMetric) GetL1SessionFlap() uint64 { - if x != nil && x.L1SessionFlap != nil { - return *x.L1SessionFlap +func (x *FlowSizeWeightPairs) GetCustom() []*FlowSizeWeightPairsCustom { + if x != nil { + return x.Custom } - return 0 + return nil } -func (x *IsisMetric) GetL1BroadcastHellosSent() uint64 { - if x != nil && x.L1BroadcastHellosSent != nil { - return *x.L1BroadcastHellosSent - } - return 0 -} +// Custom frame size distribution pair. +type FlowSizeWeightPairsCustom struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields -func (x *IsisMetric) GetL1BroadcastHellosReceived() uint64 { - if x != nil && x.L1BroadcastHellosReceived != nil { - return *x.L1BroadcastHellosReceived - } - return 0 + // The size of the frame (in bytes) for this weight pair. + // default = 64 + Size *uint32 `protobuf:"varint,1,opt,name=size,proto3,oneof" json:"size,omitempty"` + // Weight assigned to the corresponding frame size in this weight pair. + // Higher weight means more packets. + // default = 1 + Weight *float32 `protobuf:"fixed32,2,opt,name=weight,proto3,oneof" json:"weight,omitempty"` } -func (x *IsisMetric) GetL1PointToPointHellosSent() uint64 { - if x != nil && x.L1PointToPointHellosSent != nil { - return *x.L1PointToPointHellosSent +func (x *FlowSizeWeightPairsCustom) Reset() { + *x = FlowSizeWeightPairsCustom{} + if protoimpl.UnsafeEnabled { + mi := &file_otg_proto_msgTypes[243] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } - return 0 } -func (x *IsisMetric) GetL1PointToPointHellosReceived() uint64 { - if x != nil && x.L1PointToPointHellosReceived != nil { - return *x.L1PointToPointHellosReceived - } - return 0 +func (x *FlowSizeWeightPairsCustom) String() string { + return protoimpl.X.MessageStringOf(x) } -func (x *IsisMetric) GetL1DatabaseSize() uint64 { - if x != nil && x.L1DatabaseSize != nil { - return *x.L1DatabaseSize - } - return 0 -} +func (*FlowSizeWeightPairsCustom) ProtoMessage() {} -func (x *IsisMetric) GetL1PsnpSent() uint64 { - if x != nil && x.L1PsnpSent != nil { - return *x.L1PsnpSent +func (x *FlowSizeWeightPairsCustom) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[243] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms } - return 0 + return mi.MessageOf(x) } -func (x *IsisMetric) GetL1PsnpReceived() uint64 { - if x != nil && x.L1PsnpReceived != nil { - return *x.L1PsnpReceived - } - return 0 +// Deprecated: Use FlowSizeWeightPairsCustom.ProtoReflect.Descriptor instead. +func (*FlowSizeWeightPairsCustom) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{243} } -func (x *IsisMetric) GetL1CsnpSent() uint64 { - if x != nil && x.L1CsnpSent != nil { - return *x.L1CsnpSent +func (x *FlowSizeWeightPairsCustom) GetSize() uint32 { + if x != nil && x.Size != nil { + return *x.Size } return 0 } -func (x *IsisMetric) GetL1CsnpReceived() uint64 { - if x != nil && x.L1CsnpReceived != nil { - return *x.L1CsnpReceived +func (x *FlowSizeWeightPairsCustom) GetWeight() float32 { + if x != nil && x.Weight != nil { + return *x.Weight } return 0 } -func (x *IsisMetric) GetL1LspSent() uint64 { - if x != nil && x.L1LspSent != nil { - return *x.L1LspSent - } - return 0 -} - -func (x *IsisMetric) GetL1LspReceived() uint64 { - if x != nil && x.L1LspReceived != nil { - return *x.L1LspReceived - } - return 0 -} +// The rate of packet transmission +type FlowRate struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields -func (x *IsisMetric) GetL2SessionsUp() uint32 { - if x != nil && x.L2SessionsUp != nil { - return *x.L2SessionsUp - } - return 0 + // The available types of flow rate. + // default = Choice.Enum.pps + Choice *FlowRate_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.FlowRate_Choice_Enum,oneof" json:"choice,omitempty"` + // Packets per second. + // default = 1000 + Pps *uint64 `protobuf:"varint,2,opt,name=pps,proto3,oneof" json:"pps,omitempty"` + // Bits per second. + // default = 1000000000 + Bps *uint64 `protobuf:"varint,3,opt,name=bps,proto3,oneof" json:"bps,omitempty"` + // Kilobits per second. + // default = 1000000 + Kbps *uint64 `protobuf:"varint,4,opt,name=kbps,proto3,oneof" json:"kbps,omitempty"` + // Megabits per second. + // default = 1000 + Mbps *uint64 `protobuf:"varint,5,opt,name=mbps,proto3,oneof" json:"mbps,omitempty"` + // Gigabits per second. + // default = 1 + Gbps *uint32 `protobuf:"varint,6,opt,name=gbps,proto3,oneof" json:"gbps,omitempty"` + // The percentage of a port location's available bandwidth. + // default = 100 + Percentage *float32 `protobuf:"fixed32,7,opt,name=percentage,proto3,oneof" json:"percentage,omitempty"` } -func (x *IsisMetric) GetL2SessionFlap() uint64 { - if x != nil && x.L2SessionFlap != nil { - return *x.L2SessionFlap +func (x *FlowRate) Reset() { + *x = FlowRate{} + if protoimpl.UnsafeEnabled { + mi := &file_otg_proto_msgTypes[244] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } - return 0 } -func (x *IsisMetric) GetL2BroadcastHellosSent() uint64 { - if x != nil && x.L2BroadcastHellosSent != nil { - return *x.L2BroadcastHellosSent - } - return 0 +func (x *FlowRate) String() string { + return protoimpl.X.MessageStringOf(x) } -func (x *IsisMetric) GetL2BroadcastHellosReceived() uint64 { - if x != nil && x.L2BroadcastHellosReceived != nil { - return *x.L2BroadcastHellosReceived - } - return 0 -} +func (*FlowRate) ProtoMessage() {} -func (x *IsisMetric) GetL2PointToPointHellosSent() uint64 { - if x != nil && x.L2PointToPointHellosSent != nil { - return *x.L2PointToPointHellosSent +func (x *FlowRate) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[244] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms } - return 0 + return mi.MessageOf(x) } -func (x *IsisMetric) GetL2PointToPointHellosReceived() uint64 { - if x != nil && x.L2PointToPointHellosReceived != nil { - return *x.L2PointToPointHellosReceived - } - return 0 +// Deprecated: Use FlowRate.ProtoReflect.Descriptor instead. +func (*FlowRate) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{244} } -func (x *IsisMetric) GetL2DatabaseSize() uint64 { - if x != nil && x.L2DatabaseSize != nil { - return *x.L2DatabaseSize +func (x *FlowRate) GetChoice() FlowRate_Choice_Enum { + if x != nil && x.Choice != nil { + return *x.Choice } - return 0 + return FlowRate_Choice_unspecified } -func (x *IsisMetric) GetL2PsnpSent() uint64 { - if x != nil && x.L2PsnpSent != nil { - return *x.L2PsnpSent +func (x *FlowRate) GetPps() uint64 { + if x != nil && x.Pps != nil { + return *x.Pps } return 0 } -func (x *IsisMetric) GetL2PsnpReceived() uint64 { - if x != nil && x.L2PsnpReceived != nil { - return *x.L2PsnpReceived +func (x *FlowRate) GetBps() uint64 { + if x != nil && x.Bps != nil { + return *x.Bps } return 0 } -func (x *IsisMetric) GetL2CsnpSent() uint64 { - if x != nil && x.L2CsnpSent != nil { - return *x.L2CsnpSent +func (x *FlowRate) GetKbps() uint64 { + if x != nil && x.Kbps != nil { + return *x.Kbps } return 0 } -func (x *IsisMetric) GetL2CsnpReceived() uint64 { - if x != nil && x.L2CsnpReceived != nil { - return *x.L2CsnpReceived +func (x *FlowRate) GetMbps() uint64 { + if x != nil && x.Mbps != nil { + return *x.Mbps } return 0 } -func (x *IsisMetric) GetL2LspSent() uint64 { - if x != nil && x.L2LspSent != nil { - return *x.L2LspSent +func (x *FlowRate) GetGbps() uint32 { + if x != nil && x.Gbps != nil { + return *x.Gbps } return 0 } -func (x *IsisMetric) GetL2LspReceived() uint64 { - if x != nil && x.L2LspReceived != nil { - return *x.L2LspReceived +func (x *FlowRate) GetPercentage() float32 { + if x != nil && x.Percentage != nil { + return *x.Percentage } return 0 } -// The request to retrieve per LAG metrics/statistics. -type LagMetricsRequest struct { +// A container for different transmit durations. +type FlowDuration struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // The names of LAGs to return results for. An empty list will return results for all - // LAGs. - // - // x-constraint: - // - /components/schemas/Lag/properties/name - // - // x-constraint: - // - /components/schemas/Lag/properties/name - LagNames []string `protobuf:"bytes,1,rep,name=lag_names,json=lagNames,proto3" json:"lag_names,omitempty"` - // The list of column names that the returned result set will contain. If the list is - // empty then all columns will be returned. The name of the LAG cannot be excluded. - ColumnNames []LagMetricsRequest_ColumnNames_Enum `protobuf:"varint,2,rep,packed,name=column_names,json=columnNames,proto3,enum=otg.LagMetricsRequest_ColumnNames_Enum" json:"column_names,omitempty"` + // A choice used to determine the type of duration. + // default = Choice.Enum.continuous + Choice *FlowDuration_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.FlowDuration_Choice_Enum,oneof" json:"choice,omitempty"` + // Description missing in models + FixedPackets *FlowFixedPackets `protobuf:"bytes,2,opt,name=fixed_packets,json=fixedPackets,proto3" json:"fixed_packets,omitempty"` + // Description missing in models + FixedSeconds *FlowFixedSeconds `protobuf:"bytes,3,opt,name=fixed_seconds,json=fixedSeconds,proto3" json:"fixed_seconds,omitempty"` + // Description missing in models + Burst *FlowBurst `protobuf:"bytes,4,opt,name=burst,proto3" json:"burst,omitempty"` + // Description missing in models + Continuous *FlowContinuous `protobuf:"bytes,5,opt,name=continuous,proto3" json:"continuous,omitempty"` } -func (x *LagMetricsRequest) Reset() { - *x = LagMetricsRequest{} +func (x *FlowDuration) Reset() { + *x = FlowDuration{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[279] + mi := &file_otg_proto_msgTypes[245] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *LagMetricsRequest) String() string { +func (x *FlowDuration) String() string { return protoimpl.X.MessageStringOf(x) } -func (*LagMetricsRequest) ProtoMessage() {} +func (*FlowDuration) ProtoMessage() {} -func (x *LagMetricsRequest) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[279] +func (x *FlowDuration) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[245] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -42261,79 +41973,76 @@ func (x *LagMetricsRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use LagMetricsRequest.ProtoReflect.Descriptor instead. -func (*LagMetricsRequest) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{279} +// Deprecated: Use FlowDuration.ProtoReflect.Descriptor instead. +func (*FlowDuration) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{245} } -func (x *LagMetricsRequest) GetLagNames() []string { +func (x *FlowDuration) GetChoice() FlowDuration_Choice_Enum { + if x != nil && x.Choice != nil { + return *x.Choice + } + return FlowDuration_Choice_unspecified +} + +func (x *FlowDuration) GetFixedPackets() *FlowFixedPackets { if x != nil { - return x.LagNames + return x.FixedPackets } return nil } -func (x *LagMetricsRequest) GetColumnNames() []LagMetricsRequest_ColumnNames_Enum { +func (x *FlowDuration) GetFixedSeconds() *FlowFixedSeconds { if x != nil { - return x.ColumnNames + return x.FixedSeconds } return nil } -// Description missing in models -type LagMetric struct { +func (x *FlowDuration) GetBurst() *FlowBurst { + if x != nil { + return x.Burst + } + return nil +} + +func (x *FlowDuration) GetContinuous() *FlowContinuous { + if x != nil { + return x.Continuous + } + return nil +} + +// Transmit will be continuous and will not stop automatically. +type FlowContinuous struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // The name of a configured LAG - // - // x-constraint: - // - /components/schemas/Lag/properties/name - // - // x-constraint: - // - /components/schemas/Lag/properties/name - Name *string `protobuf:"bytes,1,opt,name=name,proto3,oneof" json:"name,omitempty"` - // The current operational state of the LAG. The state can be up or down. State 'up' - // indicates member_ports_up >= min_links. - OperStatus *LagMetric_OperStatus_Enum `protobuf:"varint,2,opt,name=oper_status,json=operStatus,proto3,enum=otg.LagMetric_OperStatus_Enum,oneof" json:"oper_status,omitempty"` - // The number of LAG member ports up. - MemberPortsUp *uint32 `protobuf:"varint,3,opt,name=member_ports_up,json=memberPortsUp,proto3,oneof" json:"member_ports_up,omitempty"` - // The current total number of frames transmitted. - FramesTx *uint64 `protobuf:"varint,4,opt,name=frames_tx,json=framesTx,proto3,oneof" json:"frames_tx,omitempty"` - // The current total number of valid frames received. - FramesRx *uint64 `protobuf:"varint,5,opt,name=frames_rx,json=framesRx,proto3,oneof" json:"frames_rx,omitempty"` - // The current total number of bytes transmitted. - BytesTx *uint64 `protobuf:"varint,6,opt,name=bytes_tx,json=bytesTx,proto3,oneof" json:"bytes_tx,omitempty"` - // The current total number of valid bytes received. - BytesRx *uint64 `protobuf:"varint,7,opt,name=bytes_rx,json=bytesRx,proto3,oneof" json:"bytes_rx,omitempty"` - // The current rate of frames transmitted. - FramesTxRate *float32 `protobuf:"fixed32,8,opt,name=frames_tx_rate,json=framesTxRate,proto3,oneof" json:"frames_tx_rate,omitempty"` - // The current rate of valid frames received. - FramesRxRate *float32 `protobuf:"fixed32,9,opt,name=frames_rx_rate,json=framesRxRate,proto3,oneof" json:"frames_rx_rate,omitempty"` - // The current rate of bytes transmitted. - BytesTxRate *float32 `protobuf:"fixed32,10,opt,name=bytes_tx_rate,json=bytesTxRate,proto3,oneof" json:"bytes_tx_rate,omitempty"` - // The current rate of bytes received. - BytesRxRate *float32 `protobuf:"fixed32,11,opt,name=bytes_rx_rate,json=bytesRxRate,proto3,oneof" json:"bytes_rx_rate,omitempty"` + // The minimum gap between packets expressed as bytes. + // default = 12 + Gap *uint32 `protobuf:"varint,1,opt,name=gap,proto3,oneof" json:"gap,omitempty"` + // Description missing in models + Delay *FlowDelay `protobuf:"bytes,2,opt,name=delay,proto3" json:"delay,omitempty"` } -func (x *LagMetric) Reset() { - *x = LagMetric{} +func (x *FlowContinuous) Reset() { + *x = FlowContinuous{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[280] + mi := &file_otg_proto_msgTypes[246] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *LagMetric) String() string { +func (x *FlowContinuous) String() string { return protoimpl.X.MessageStringOf(x) } -func (*LagMetric) ProtoMessage() {} +func (*FlowContinuous) ProtoMessage() {} -func (x *LagMetric) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[280] +func (x *FlowContinuous) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[246] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -42344,135 +42053,142 @@ func (x *LagMetric) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use LagMetric.ProtoReflect.Descriptor instead. -func (*LagMetric) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{280} +// Deprecated: Use FlowContinuous.ProtoReflect.Descriptor instead. +func (*FlowContinuous) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{246} } -func (x *LagMetric) GetName() string { - if x != nil && x.Name != nil { - return *x.Name +func (x *FlowContinuous) GetGap() uint32 { + if x != nil && x.Gap != nil { + return *x.Gap } - return "" + return 0 } -func (x *LagMetric) GetOperStatus() LagMetric_OperStatus_Enum { - if x != nil && x.OperStatus != nil { - return *x.OperStatus +func (x *FlowContinuous) GetDelay() *FlowDelay { + if x != nil { + return x.Delay } - return LagMetric_OperStatus_unspecified + return nil } -func (x *LagMetric) GetMemberPortsUp() uint32 { - if x != nil && x.MemberPortsUp != nil { - return *x.MemberPortsUp - } - return 0 +// The optional container to specify the delay before starting +// transmission of packets. +type FlowDelay struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Description missing in models + // default = Choice.Enum.bytes + Choice *FlowDelay_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.FlowDelay_Choice_Enum,oneof" json:"choice,omitempty"` + // The delay before starting transmission of packets. + // A value of 0 indicates no delay. + // default = 0 + Bytes *float32 `protobuf:"fixed32,2,opt,name=bytes,proto3,oneof" json:"bytes,omitempty"` + // The delay before starting transmission of packets. + // A value of 0 indicates no delay. + // default = 0 + Nanoseconds *float32 `protobuf:"fixed32,3,opt,name=nanoseconds,proto3,oneof" json:"nanoseconds,omitempty"` + // The delay before starting transmission of packets. + // A value of 0 indicates no delay. + // default = 0 + Microseconds *float32 `protobuf:"fixed32,4,opt,name=microseconds,proto3,oneof" json:"microseconds,omitempty"` } -func (x *LagMetric) GetFramesTx() uint64 { - if x != nil && x.FramesTx != nil { - return *x.FramesTx +func (x *FlowDelay) Reset() { + *x = FlowDelay{} + if protoimpl.UnsafeEnabled { + mi := &file_otg_proto_msgTypes[247] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } - return 0 } -func (x *LagMetric) GetFramesRx() uint64 { - if x != nil && x.FramesRx != nil { - return *x.FramesRx - } - return 0 +func (x *FlowDelay) String() string { + return protoimpl.X.MessageStringOf(x) } -func (x *LagMetric) GetBytesTx() uint64 { - if x != nil && x.BytesTx != nil { - return *x.BytesTx +func (*FlowDelay) ProtoMessage() {} + +func (x *FlowDelay) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[247] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms } - return 0 + return mi.MessageOf(x) } -func (x *LagMetric) GetBytesRx() uint64 { - if x != nil && x.BytesRx != nil { - return *x.BytesRx - } - return 0 +// Deprecated: Use FlowDelay.ProtoReflect.Descriptor instead. +func (*FlowDelay) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{247} } -func (x *LagMetric) GetFramesTxRate() float32 { - if x != nil && x.FramesTxRate != nil { - return *x.FramesTxRate +func (x *FlowDelay) GetChoice() FlowDelay_Choice_Enum { + if x != nil && x.Choice != nil { + return *x.Choice } - return 0 + return FlowDelay_Choice_unspecified } -func (x *LagMetric) GetFramesRxRate() float32 { - if x != nil && x.FramesRxRate != nil { - return *x.FramesRxRate +func (x *FlowDelay) GetBytes() float32 { + if x != nil && x.Bytes != nil { + return *x.Bytes } return 0 } -func (x *LagMetric) GetBytesTxRate() float32 { - if x != nil && x.BytesTxRate != nil { - return *x.BytesTxRate +func (x *FlowDelay) GetNanoseconds() float32 { + if x != nil && x.Nanoseconds != nil { + return *x.Nanoseconds } return 0 } -func (x *LagMetric) GetBytesRxRate() float32 { - if x != nil && x.BytesRxRate != nil { - return *x.BytesRxRate +func (x *FlowDelay) GetMicroseconds() float32 { + if x != nil && x.Microseconds != nil { + return *x.Microseconds } return 0 } -// The request to retrieve LACP per LAG member metrics/statistics. -type LacpMetricsRequest struct { +// Transmit a fixed number of packets after which the flow will stop. +type FlowFixedPackets struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // The names of LAG (ports group) for which LACP metrics to be returned. An empty list - // will return metrics for all LAGs. - // - // x-constraint: - // - /components/schemas/Lag/properties/name - // - // x-constraint: - // - /components/schemas/Lag/properties/name - LagNames []string `protobuf:"bytes,1,rep,name=lag_names,json=lagNames,proto3" json:"lag_names,omitempty"` - // The names of LAG members (ports) for which LACP metrics to be returned. An empty - // list will return metrics for all LAG members. - // - // x-constraint: - // - /components/schemas/Port/properties/name - // - // x-constraint: - // - /components/schemas/Port/properties/name - LagMemberPortNames []string `protobuf:"bytes,2,rep,name=lag_member_port_names,json=lagMemberPortNames,proto3" json:"lag_member_port_names,omitempty"` - // The list of column names that the returned result set will contain. If the list is - // empty then all columns will be returned. The name of LAG and LAG member can not be - // excluded. - ColumnNames []LacpMetricsRequest_ColumnNames_Enum `protobuf:"varint,3,rep,packed,name=column_names,json=columnNames,proto3,enum=otg.LacpMetricsRequest_ColumnNames_Enum" json:"column_names,omitempty"` + // Stop transmit of the flow after this number of packets. + // default = 1 + Packets *uint32 `protobuf:"varint,1,opt,name=packets,proto3,oneof" json:"packets,omitempty"` + // The minimum gap between packets expressed as bytes. + // default = 12 + Gap *uint32 `protobuf:"varint,2,opt,name=gap,proto3,oneof" json:"gap,omitempty"` + // Description missing in models + Delay *FlowDelay `protobuf:"bytes,3,opt,name=delay,proto3" json:"delay,omitempty"` } -func (x *LacpMetricsRequest) Reset() { - *x = LacpMetricsRequest{} +func (x *FlowFixedPackets) Reset() { + *x = FlowFixedPackets{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[281] + mi := &file_otg_proto_msgTypes[248] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *LacpMetricsRequest) String() string { +func (x *FlowFixedPackets) String() string { return protoimpl.X.MessageStringOf(x) } -func (*LacpMetricsRequest) ProtoMessage() {} +func (*FlowFixedPackets) ProtoMessage() {} -func (x *LacpMetricsRequest) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[281] +func (x *FlowFixedPackets) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[248] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -42483,94 +42199,65 @@ func (x *LacpMetricsRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use LacpMetricsRequest.ProtoReflect.Descriptor instead. -func (*LacpMetricsRequest) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{281} +// Deprecated: Use FlowFixedPackets.ProtoReflect.Descriptor instead. +func (*FlowFixedPackets) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{248} } -func (x *LacpMetricsRequest) GetLagNames() []string { - if x != nil { - return x.LagNames +func (x *FlowFixedPackets) GetPackets() uint32 { + if x != nil && x.Packets != nil { + return *x.Packets } - return nil + return 0 } -func (x *LacpMetricsRequest) GetLagMemberPortNames() []string { - if x != nil { - return x.LagMemberPortNames +func (x *FlowFixedPackets) GetGap() uint32 { + if x != nil && x.Gap != nil { + return *x.Gap } - return nil + return 0 } -func (x *LacpMetricsRequest) GetColumnNames() []LacpMetricsRequest_ColumnNames_Enum { +func (x *FlowFixedPackets) GetDelay() *FlowDelay { if x != nil { - return x.ColumnNames + return x.Delay } return nil } -// LACP metrics (statistics) per LAG member. -type LacpMetric struct { +// Transmit for a fixed number of seconds after which the flow will stop. +type FlowFixedSeconds struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // The name of a LAG (ports group) configured with LACP. - LagName *string `protobuf:"bytes,1,opt,name=lag_name,json=lagName,proto3,oneof" json:"lag_name,omitempty"` - // The name of a LAG member (port) configured with LACP. - LagMemberPortName *string `protobuf:"bytes,2,opt,name=lag_member_port_name,json=lagMemberPortName,proto3,oneof" json:"lag_member_port_name,omitempty"` - // Number of LACPDUs received. - LacpPacketsRx *uint64 `protobuf:"varint,3,opt,name=lacp_packets_rx,json=lacpPacketsRx,proto3,oneof" json:"lacp_packets_rx,omitempty"` - // Number of LACPDUs transmitted. - LacpPacketsTx *uint64 `protobuf:"varint,4,opt,name=lacp_packets_tx,json=lacpPacketsTx,proto3,oneof" json:"lacp_packets_tx,omitempty"` - // Number of LACPDUs receive packet errors. - LacpRxErrors *uint64 `protobuf:"varint,5,opt,name=lacp_rx_errors,json=lacpRxErrors,proto3,oneof" json:"lacp_rx_errors,omitempty"` - // Indicates participant is active or passive. - Activity *LacpMetric_Activity_Enum `protobuf:"varint,6,opt,name=activity,proto3,enum=otg.LacpMetric_Activity_Enum,oneof" json:"activity,omitempty"` - // The timeout type (short or long) used by the participant. - Timeout *LacpMetric_Timeout_Enum `protobuf:"varint,7,opt,name=timeout,proto3,enum=otg.LacpMetric_Timeout_Enum,oneof" json:"timeout,omitempty"` - // Indicates whether the participant is in-sync or out-of-sync. - Synchronization *LacpMetric_Synchronization_Enum `protobuf:"varint,8,opt,name=synchronization,proto3,enum=otg.LacpMetric_Synchronization_Enum,oneof" json:"synchronization,omitempty"` - // A true value indicates that the participant will allow the link to be used as part - // of the aggregate. A false value indicates the link should be used as an individual - // link. - Aggregatable *bool `protobuf:"varint,9,opt,name=aggregatable,proto3,oneof" json:"aggregatable,omitempty"` - // If true, the participant is collecting incoming frames on the link, otherwise false. - Collecting *bool `protobuf:"varint,10,opt,name=collecting,proto3,oneof" json:"collecting,omitempty"` - // When true, the participant is distributing outgoing frames; when false, distribution - // is disabled. - Distributing *bool `protobuf:"varint,11,opt,name=distributing,proto3,oneof" json:"distributing,omitempty"` - // MAC address that defines the local system ID for the aggregate interface. - SystemId *string `protobuf:"bytes,12,opt,name=system_id,json=systemId,proto3,oneof" json:"system_id,omitempty"` - // Current operational value of the key for the aggregate interface. - OperKey *uint32 `protobuf:"varint,13,opt,name=oper_key,json=operKey,proto3,oneof" json:"oper_key,omitempty"` - // MAC address representing the protocol partner's interface system ID. - PartnerId *string `protobuf:"bytes,14,opt,name=partner_id,json=partnerId,proto3,oneof" json:"partner_id,omitempty"` - // Operational value of the protocol partner's key. - PartnerKey *uint32 `protobuf:"varint,15,opt,name=partner_key,json=partnerKey,proto3,oneof" json:"partner_key,omitempty"` - // Port number of the local (actor) aggregation member. - PortNum *uint32 `protobuf:"varint,16,opt,name=port_num,json=portNum,proto3,oneof" json:"port_num,omitempty"` - // Port number of the partner (remote) port for this member port. - PartnerPortNum *uint32 `protobuf:"varint,17,opt,name=partner_port_num,json=partnerPortNum,proto3,oneof" json:"partner_port_num,omitempty"` + // Stop transmit of the flow after this number of seconds. + // default = 1 + Seconds *float32 `protobuf:"fixed32,1,opt,name=seconds,proto3,oneof" json:"seconds,omitempty"` + // The minimum gap between packets expressed as bytes. + // default = 12 + Gap *uint32 `protobuf:"varint,2,opt,name=gap,proto3,oneof" json:"gap,omitempty"` + // Description missing in models + Delay *FlowDelay `protobuf:"bytes,3,opt,name=delay,proto3" json:"delay,omitempty"` } -func (x *LacpMetric) Reset() { - *x = LacpMetric{} +func (x *FlowFixedSeconds) Reset() { + *x = FlowFixedSeconds{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[282] + mi := &file_otg_proto_msgTypes[249] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *LacpMetric) String() string { +func (x *FlowFixedSeconds) String() string { return protoimpl.X.MessageStringOf(x) } -func (*LacpMetric) ProtoMessage() {} +func (*FlowFixedSeconds) ProtoMessage() {} -func (x *LacpMetric) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[282] +func (x *FlowFixedSeconds) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[249] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -42581,167 +42268,154 @@ func (x *LacpMetric) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use LacpMetric.ProtoReflect.Descriptor instead. -func (*LacpMetric) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{282} -} - -func (x *LacpMetric) GetLagName() string { - if x != nil && x.LagName != nil { - return *x.LagName - } - return "" -} - -func (x *LacpMetric) GetLagMemberPortName() string { - if x != nil && x.LagMemberPortName != nil { - return *x.LagMemberPortName - } - return "" +// Deprecated: Use FlowFixedSeconds.ProtoReflect.Descriptor instead. +func (*FlowFixedSeconds) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{249} } -func (x *LacpMetric) GetLacpPacketsRx() uint64 { - if x != nil && x.LacpPacketsRx != nil { - return *x.LacpPacketsRx +func (x *FlowFixedSeconds) GetSeconds() float32 { + if x != nil && x.Seconds != nil { + return *x.Seconds } return 0 } -func (x *LacpMetric) GetLacpPacketsTx() uint64 { - if x != nil && x.LacpPacketsTx != nil { - return *x.LacpPacketsTx +func (x *FlowFixedSeconds) GetGap() uint32 { + if x != nil && x.Gap != nil { + return *x.Gap } return 0 } -func (x *LacpMetric) GetLacpRxErrors() uint64 { - if x != nil && x.LacpRxErrors != nil { - return *x.LacpRxErrors +func (x *FlowFixedSeconds) GetDelay() *FlowDelay { + if x != nil { + return x.Delay } - return 0 + return nil } -func (x *LacpMetric) GetActivity() LacpMetric_Activity_Enum { - if x != nil && x.Activity != nil { - return *x.Activity - } - return LacpMetric_Activity_unspecified -} +// Transmits continuous or fixed burst of packets. +// For continuous burst of packets, it will not automatically stop. +// For fixed burst of packets, it will stop after transmitting fixed number of bursts. +type FlowBurst struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields -func (x *LacpMetric) GetTimeout() LacpMetric_Timeout_Enum { - if x != nil && x.Timeout != nil { - return *x.Timeout - } - return LacpMetric_Timeout_unspecified + // The number of packet bursts transmitted per flow. + // A value of 0 implies continuous burst of packets. + // default = 0 + Bursts *uint32 `protobuf:"varint,1,opt,name=bursts,proto3,oneof" json:"bursts,omitempty"` + // The number of packets transmitted per burst. + // default = 1 + Packets *uint32 `protobuf:"varint,2,opt,name=packets,proto3,oneof" json:"packets,omitempty"` + // The minimum gap between packets expressed as bytes. + // default = 12 + Gap *uint32 `protobuf:"varint,3,opt,name=gap,proto3,oneof" json:"gap,omitempty"` + // Description missing in models + InterBurstGap *FlowDurationInterBurstGap `protobuf:"bytes,4,opt,name=inter_burst_gap,json=interBurstGap,proto3" json:"inter_burst_gap,omitempty"` } -func (x *LacpMetric) GetSynchronization() LacpMetric_Synchronization_Enum { - if x != nil && x.Synchronization != nil { - return *x.Synchronization +func (x *FlowBurst) Reset() { + *x = FlowBurst{} + if protoimpl.UnsafeEnabled { + mi := &file_otg_proto_msgTypes[250] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } - return LacpMetric_Synchronization_unspecified } -func (x *LacpMetric) GetAggregatable() bool { - if x != nil && x.Aggregatable != nil { - return *x.Aggregatable - } - return false +func (x *FlowBurst) String() string { + return protoimpl.X.MessageStringOf(x) } -func (x *LacpMetric) GetCollecting() bool { - if x != nil && x.Collecting != nil { - return *x.Collecting - } - return false -} +func (*FlowBurst) ProtoMessage() {} -func (x *LacpMetric) GetDistributing() bool { - if x != nil && x.Distributing != nil { - return *x.Distributing +func (x *FlowBurst) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[250] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms } - return false + return mi.MessageOf(x) } -func (x *LacpMetric) GetSystemId() string { - if x != nil && x.SystemId != nil { - return *x.SystemId - } - return "" +// Deprecated: Use FlowBurst.ProtoReflect.Descriptor instead. +func (*FlowBurst) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{250} } -func (x *LacpMetric) GetOperKey() uint32 { - if x != nil && x.OperKey != nil { - return *x.OperKey +func (x *FlowBurst) GetBursts() uint32 { + if x != nil && x.Bursts != nil { + return *x.Bursts } return 0 } -func (x *LacpMetric) GetPartnerId() string { - if x != nil && x.PartnerId != nil { - return *x.PartnerId - } - return "" -} - -func (x *LacpMetric) GetPartnerKey() uint32 { - if x != nil && x.PartnerKey != nil { - return *x.PartnerKey +func (x *FlowBurst) GetPackets() uint32 { + if x != nil && x.Packets != nil { + return *x.Packets } return 0 } -func (x *LacpMetric) GetPortNum() uint32 { - if x != nil && x.PortNum != nil { - return *x.PortNum +func (x *FlowBurst) GetGap() uint32 { + if x != nil && x.Gap != nil { + return *x.Gap } return 0 } -func (x *LacpMetric) GetPartnerPortNum() uint32 { - if x != nil && x.PartnerPortNum != nil { - return *x.PartnerPortNum +func (x *FlowBurst) GetInterBurstGap() *FlowDurationInterBurstGap { + if x != nil { + return x.InterBurstGap } - return 0 + return nil } -// The request to retrieve LLDP per instance metrics/statistics. -type LldpMetricsRequest struct { +// The optional container for specifying a gap between bursts. +type FlowDurationInterBurstGap struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // The names of LLDP instances to return results for. An empty list will return results - // for all LLDP instances. - // - // x-constraint: - // - /components/schemas/Lldp/properties/name - // - // x-constraint: - // - /components/schemas/Lldp/properties/name - LldpNames []string `protobuf:"bytes,1,rep,name=lldp_names,json=lldpNames,proto3" json:"lldp_names,omitempty"` - // The requested list of column names for the result set. If the list is empty then - // metrics for all columns will be returned. The name of LLDP instance can not be excluded. - ColumnNames []LldpMetricsRequest_ColumnNames_Enum `protobuf:"varint,2,rep,packed,name=column_names,json=columnNames,proto3,enum=otg.LldpMetricsRequest_ColumnNames_Enum" json:"column_names,omitempty"` + // The type of inter burst gap units. + // default = Choice.Enum.bytes + Choice *FlowDurationInterBurstGap_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.FlowDurationInterBurstGap_Choice_Enum,oneof" json:"choice,omitempty"` + // The amount of time between bursts expressed in bytes. + // A value of 0 indicates no gap between bursts. + // default = 12 + Bytes *float64 `protobuf:"fixed64,2,opt,name=bytes,proto3,oneof" json:"bytes,omitempty"` + // The amount of time between bursts expressed in nanoseconds. + // A value of 0 indicates no gap between bursts. + // default = 96 + Nanoseconds *float64 `protobuf:"fixed64,3,opt,name=nanoseconds,proto3,oneof" json:"nanoseconds,omitempty"` + // The amount of time between bursts expressed in microseconds. + // A value of 0 indicates no gap between bursts. + // default = 0.096 + Microseconds *float64 `protobuf:"fixed64,4,opt,name=microseconds,proto3,oneof" json:"microseconds,omitempty"` } -func (x *LldpMetricsRequest) Reset() { - *x = LldpMetricsRequest{} +func (x *FlowDurationInterBurstGap) Reset() { + *x = FlowDurationInterBurstGap{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[283] + mi := &file_otg_proto_msgTypes[251] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *LldpMetricsRequest) String() string { +func (x *FlowDurationInterBurstGap) String() string { return protoimpl.X.MessageStringOf(x) } -func (*LldpMetricsRequest) ProtoMessage() {} +func (*FlowDurationInterBurstGap) ProtoMessage() {} -func (x *LldpMetricsRequest) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[283] +func (x *FlowDurationInterBurstGap) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[251] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -42752,74 +42426,81 @@ func (x *LldpMetricsRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use LldpMetricsRequest.ProtoReflect.Descriptor instead. -func (*LldpMetricsRequest) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{283} +// Deprecated: Use FlowDurationInterBurstGap.ProtoReflect.Descriptor instead. +func (*FlowDurationInterBurstGap) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{251} } -func (x *LldpMetricsRequest) GetLldpNames() []string { - if x != nil { - return x.LldpNames +func (x *FlowDurationInterBurstGap) GetChoice() FlowDurationInterBurstGap_Choice_Enum { + if x != nil && x.Choice != nil { + return *x.Choice } - return nil + return FlowDurationInterBurstGap_Choice_unspecified } -func (x *LldpMetricsRequest) GetColumnNames() []LldpMetricsRequest_ColumnNames_Enum { - if x != nil { - return x.ColumnNames +func (x *FlowDurationInterBurstGap) GetBytes() float64 { + if x != nil && x.Bytes != nil { + return *x.Bytes } - return nil + return 0 } -// LLDP per instance statistics information. -type LldpMetric struct { +func (x *FlowDurationInterBurstGap) GetNanoseconds() float64 { + if x != nil && x.Nanoseconds != nil { + return *x.Nanoseconds + } + return 0 +} + +func (x *FlowDurationInterBurstGap) GetMicroseconds() float64 { + if x != nil && x.Microseconds != nil { + return *x.Microseconds + } + return 0 +} + +// The optional container for configuring flow metrics. +type FlowMetrics struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // The name of the configured LLDP instance. - Name *string `protobuf:"bytes,1,opt,name=name,proto3,oneof" json:"name,omitempty"` - // Number of LLDP frames received. - FramesRx *uint64 `protobuf:"varint,2,opt,name=frames_rx,json=framesRx,proto3,oneof" json:"frames_rx,omitempty"` - // Number of LLDP frames transmitted. - FramesTx *uint64 `protobuf:"varint,3,opt,name=frames_tx,json=framesTx,proto3,oneof" json:"frames_tx,omitempty"` - // Number of LLDP frames received with packet errors. This stat should be incremented - // based on statsFramesInErrorsTotal increment rule in section 10.3.2 of IEEE Std 802.1 - // AB-2005. - FramesErrorRx *uint64 `protobuf:"varint,4,opt,name=frames_error_rx,json=framesErrorRx,proto3,oneof" json:"frames_error_rx,omitempty"` - // Number of LLDP frames received that are discarded. This stat should be incremented - // when one or more of the three mandatory TLVs at the beginning of the LLDPDU is missing, - // out of order or contains an out of range information string length. This stat should - // follow the validation rules in section 10.3.2 of IEEE Std 802.1 AB-2005. - FramesDiscard *uint64 `protobuf:"varint,5,opt,name=frames_discard,json=framesDiscard,proto3,oneof" json:"frames_discard,omitempty"` - // Number of LLDP tlvs received that are discarded. If any TLV contains an error condition - // specific for that particular TLV or if any TLV extends past the physical end of - // the frame then these TLVs will be discarded. - TlvsDiscard *uint64 `protobuf:"varint,6,opt,name=tlvs_discard,json=tlvsDiscard,proto3,oneof" json:"tlvs_discard,omitempty"` - // Number of LLDP unknown tlvs received. If the OUI of the organizationlly specific - // TLV and/or organizationally defined subtype are not recognized,or if TLV type value - // is in the range of reserved TLV types then these TLVs will be considered as unknown - // TLVs. - TlvsUnknown *uint64 `protobuf:"varint,7,opt,name=tlvs_unknown,json=tlvsUnknown,proto3,oneof" json:"tlvs_unknown,omitempty"` + // Enables flow metrics. + // Enabling this option may affect the resultant packet payload due to + // additional instrumentation data. + // default = False + Enable *bool `protobuf:"varint,1,opt,name=enable,proto3,oneof" json:"enable,omitempty"` + // Enables additional flow metric loss calculation. + // default = False + Loss *bool `protobuf:"varint,2,opt,name=loss,proto3,oneof" json:"loss,omitempty"` + // Rx Tx ratio. + RxTxRatio *FlowRxTxRatio `protobuf:"bytes,6,opt,name=rx_tx_ratio,json=rxTxRatio,proto3" json:"rx_tx_ratio,omitempty"` + // Enables additional flow metric first and last timestamps. + // default = False + Timestamps *bool `protobuf:"varint,3,opt,name=timestamps,proto3,oneof" json:"timestamps,omitempty"` + // Latency metrics. + Latency *FlowLatencyMetrics `protobuf:"bytes,4,opt,name=latency,proto3" json:"latency,omitempty"` + // Predefined metric tags + PredefinedMetricTags *FlowPredefinedTags `protobuf:"bytes,5,opt,name=predefined_metric_tags,json=predefinedMetricTags,proto3" json:"predefined_metric_tags,omitempty"` } -func (x *LldpMetric) Reset() { - *x = LldpMetric{} +func (x *FlowMetrics) Reset() { + *x = FlowMetrics{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[284] + mi := &file_otg_proto_msgTypes[252] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *LldpMetric) String() string { +func (x *FlowMetrics) String() string { return protoimpl.X.MessageStringOf(x) } -func (*LldpMetric) ProtoMessage() {} +func (*FlowMetrics) ProtoMessage() {} -func (x *LldpMetric) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[284] +func (x *FlowMetrics) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[252] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -42830,97 +42511,99 @@ func (x *LldpMetric) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use LldpMetric.ProtoReflect.Descriptor instead. -func (*LldpMetric) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{284} -} - -func (x *LldpMetric) GetName() string { - if x != nil && x.Name != nil { - return *x.Name - } - return "" +// Deprecated: Use FlowMetrics.ProtoReflect.Descriptor instead. +func (*FlowMetrics) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{252} } -func (x *LldpMetric) GetFramesRx() uint64 { - if x != nil && x.FramesRx != nil { - return *x.FramesRx +func (x *FlowMetrics) GetEnable() bool { + if x != nil && x.Enable != nil { + return *x.Enable } - return 0 + return false } -func (x *LldpMetric) GetFramesTx() uint64 { - if x != nil && x.FramesTx != nil { - return *x.FramesTx +func (x *FlowMetrics) GetLoss() bool { + if x != nil && x.Loss != nil { + return *x.Loss } - return 0 + return false } -func (x *LldpMetric) GetFramesErrorRx() uint64 { - if x != nil && x.FramesErrorRx != nil { - return *x.FramesErrorRx +func (x *FlowMetrics) GetRxTxRatio() *FlowRxTxRatio { + if x != nil { + return x.RxTxRatio } - return 0 + return nil } -func (x *LldpMetric) GetFramesDiscard() uint64 { - if x != nil && x.FramesDiscard != nil { - return *x.FramesDiscard +func (x *FlowMetrics) GetTimestamps() bool { + if x != nil && x.Timestamps != nil { + return *x.Timestamps } - return 0 + return false } -func (x *LldpMetric) GetTlvsDiscard() uint64 { - if x != nil && x.TlvsDiscard != nil { - return *x.TlvsDiscard +func (x *FlowMetrics) GetLatency() *FlowLatencyMetrics { + if x != nil { + return x.Latency } - return 0 + return nil } -func (x *LldpMetric) GetTlvsUnknown() uint64 { - if x != nil && x.TlvsUnknown != nil { - return *x.TlvsUnknown +func (x *FlowMetrics) GetPredefinedMetricTags() *FlowPredefinedTags { + if x != nil { + return x.PredefinedMetricTags } - return 0 + return nil } -// The request to retrieve RSVP-TE per Router metrics/statistics. -type RsvpMetricsRequest struct { +// The optional container for per flow latency metric configuration. +type FlowLatencyMetrics struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // The names of RSVP-TE Routers to return results for. An empty list as input will return - // results for all RSVP-TE routers. + // True to enable latency metrics using timestamps. // - // x-constraint: - // - /components/schemas/Device.Rsvp/properties/name + // Enabling this option may affect the resultant packet payload due to + // additional instrumentation data. + // default = False + Enable *bool `protobuf:"varint,1,opt,name=enable,proto3,oneof" json:"enable,omitempty"` + // Select the type of latency measurement. The different types of + // latency measurements are: // - // x-constraint: - // - /components/schemas/Device.Rsvp/properties/name - RouterNames []string `protobuf:"bytes,1,rep,name=router_names,json=routerNames,proto3" json:"router_names,omitempty"` - // The list of column names that the returned result set will contain. If the input - // list is empty then all columns will be returned except for any result_groups. - ColumnNames []RsvpMetricsRequest_ColumnNames_Enum `protobuf:"varint,2,rep,packed,name=column_names,json=columnNames,proto3,enum=otg.RsvpMetricsRequest_ColumnNames_Enum" json:"column_names,omitempty"` + // store_forward: + // The time interval starting when the last bit of the frame leaves the + // sending port and ending when the first bit of the frame is seen on + // the receiving port (LIFO). This is based on the RFC 1242 standard. + // + // cut_through: + // The time interval starting when the first bit of the frame leaves + // the sending port and ending when the first bit of the frame is seen + // on the receiving port (FIFO). This is based on the RFC 1242 + // standard. + // default = Mode.Enum.store_forward + Mode *FlowLatencyMetrics_Mode_Enum `protobuf:"varint,2,opt,name=mode,proto3,enum=otg.FlowLatencyMetrics_Mode_Enum,oneof" json:"mode,omitempty"` } -func (x *RsvpMetricsRequest) Reset() { - *x = RsvpMetricsRequest{} +func (x *FlowLatencyMetrics) Reset() { + *x = FlowLatencyMetrics{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[285] + mi := &file_otg_proto_msgTypes[253] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *RsvpMetricsRequest) String() string { +func (x *FlowLatencyMetrics) String() string { return protoimpl.X.MessageStringOf(x) } -func (*RsvpMetricsRequest) ProtoMessage() {} +func (*FlowLatencyMetrics) ProtoMessage() {} -func (x *RsvpMetricsRequest) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[285] +func (x *FlowLatencyMetrics) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[253] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -42931,119 +42614,56 @@ func (x *RsvpMetricsRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use RsvpMetricsRequest.ProtoReflect.Descriptor instead. -func (*RsvpMetricsRequest) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{285} +// Deprecated: Use FlowLatencyMetrics.ProtoReflect.Descriptor instead. +func (*FlowLatencyMetrics) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{253} } -func (x *RsvpMetricsRequest) GetRouterNames() []string { - if x != nil { - return x.RouterNames +func (x *FlowLatencyMetrics) GetEnable() bool { + if x != nil && x.Enable != nil { + return *x.Enable } - return nil + return false } -func (x *RsvpMetricsRequest) GetColumnNames() []RsvpMetricsRequest_ColumnNames_Enum { - if x != nil { - return x.ColumnNames +func (x *FlowLatencyMetrics) GetMode() FlowLatencyMetrics_Mode_Enum { + if x != nil && x.Mode != nil { + return *x.Mode } - return nil + return FlowLatencyMetrics_Mode_unspecified } -// RSVP-TE per router statistics information. -type RsvpMetric struct { +// List of predefined flow tracking options, outside packet fields, that can be enabled. +type FlowPredefinedTags struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // The name of a configured RSVP router. - Name *string `protobuf:"bytes,1,opt,name=name,proto3,oneof" json:"name,omitempty"` - // The number of ingress point-to-point LSPs configured or transiting through the RSVP - // router which have been initated from the test port. - IngressP2PLspsConfigured *uint32 `protobuf:"varint,2,opt,name=ingress_p2p_lsps_configured,json=ingressP2pLspsConfigured,proto3,oneof" json:"ingress_p2p_lsps_configured,omitempty"` - // The number of ingress point-to-point LSPs for which Resv has been received and is - // currently up. - IngressP2PLspsUp *uint32 `protobuf:"varint,3,opt,name=ingress_p2p_lsps_up,json=ingressP2pLspsUp,proto3,oneof" json:"ingress_p2p_lsps_up,omitempty"` - // The number of egress point-to-point LSPs for which Path requests were successfully - // processed and is currently up. - EgressP2PLspsUp *uint32 `protobuf:"varint,4,opt,name=egress_p2p_lsps_up,json=egressP2pLspsUp,proto3,oneof" json:"egress_p2p_lsps_up,omitempty"` - // The number of times an LSP went from up to down state either because it timed out - // while waiting for Refreshes or a PathTear or ResvTear message was received which - // caused the LSP to flap. - LspFlapCount *uint64 `protobuf:"varint,5,opt,name=lsp_flap_count,json=lspFlapCount,proto3,oneof" json:"lsp_flap_count,omitempty"` - // The number of Path messages sent by this RSVP router. - PathsTx *uint64 `protobuf:"varint,6,opt,name=paths_tx,json=pathsTx,proto3,oneof" json:"paths_tx,omitempty"` - // The number of Path messages received by this RSVP router. - PathsRx *uint64 `protobuf:"varint,7,opt,name=paths_rx,json=pathsRx,proto3,oneof" json:"paths_rx,omitempty"` - // The number of Resv messages sent by this RSVP router. - ResvsTx *uint64 `protobuf:"varint,8,opt,name=resvs_tx,json=resvsTx,proto3,oneof" json:"resvs_tx,omitempty"` - // The number of Resv messages received by this RSVP router. - ResvsRx *uint64 `protobuf:"varint,9,opt,name=resvs_rx,json=resvsRx,proto3,oneof" json:"resvs_rx,omitempty"` - // The number of Path Tear messages sent by this RSVP router. - PathTearsTx *uint64 `protobuf:"varint,10,opt,name=path_tears_tx,json=pathTearsTx,proto3,oneof" json:"path_tears_tx,omitempty"` - // The number of Path Tear messages received by this RSVP router. - PathTearsRx *uint64 `protobuf:"varint,11,opt,name=path_tears_rx,json=pathTearsRx,proto3,oneof" json:"path_tears_rx,omitempty"` - // The number of Resv Tear messages sent by this RSVP router. - ResvTearsTx *uint64 `protobuf:"varint,12,opt,name=resv_tears_tx,json=resvTearsTx,proto3,oneof" json:"resv_tears_tx,omitempty"` - // The number of Resv Tear messages received by this RSVP router. - ResvTearsRx *uint64 `protobuf:"varint,13,opt,name=resv_tears_rx,json=resvTearsRx,proto3,oneof" json:"resv_tears_rx,omitempty"` - // The number of Path Error messages sent by this RSVP router. - PathErrorsTx *uint64 `protobuf:"varint,14,opt,name=path_errors_tx,json=pathErrorsTx,proto3,oneof" json:"path_errors_tx,omitempty"` - // The number of Path Error messages received by this RSVP router. - PathErrorsRx *uint64 `protobuf:"varint,15,opt,name=path_errors_rx,json=pathErrorsRx,proto3,oneof" json:"path_errors_rx,omitempty"` - // The number of Resv Error messages sent by this RSVP router. - ResvErrorsTx *uint64 `protobuf:"varint,16,opt,name=resv_errors_tx,json=resvErrorsTx,proto3,oneof" json:"resv_errors_tx,omitempty"` - // The number of Resv Error messages received by this RSVP router. - ResvErrorsRx *uint64 `protobuf:"varint,17,opt,name=resv_errors_rx,json=resvErrorsRx,proto3,oneof" json:"resv_errors_rx,omitempty"` - // The number of ResvConf messages sent by this RSVP router. - ResvConfTx *uint64 `protobuf:"varint,18,opt,name=resv_conf_tx,json=resvConfTx,proto3,oneof" json:"resv_conf_tx,omitempty"` - // The number of ResvConf messages received by this RSVP router. - ResvConfRx *uint64 `protobuf:"varint,19,opt,name=resv_conf_rx,json=resvConfRx,proto3,oneof" json:"resv_conf_rx,omitempty"` - // The number of Hello messages sent by this RSVP router. - HellosTx *uint64 `protobuf:"varint,20,opt,name=hellos_tx,json=hellosTx,proto3,oneof" json:"hellos_tx,omitempty"` - // The number of Hello messages received by this RSVP router. - HellosRx *uint64 `protobuf:"varint,21,opt,name=hellos_rx,json=hellosRx,proto3,oneof" json:"hellos_rx,omitempty"` - // The number of Ack messages sent by this RSVP router. - AcksTx *uint64 `protobuf:"varint,22,opt,name=acks_tx,json=acksTx,proto3,oneof" json:"acks_tx,omitempty"` - // The number of Ack messages received by this RSVP router. - AcksRx *uint64 `protobuf:"varint,23,opt,name=acks_rx,json=acksRx,proto3,oneof" json:"acks_rx,omitempty"` - // The number of Nack messages sent by this RSVP router. - NacksTx *uint64 `protobuf:"varint,24,opt,name=nacks_tx,json=nacksTx,proto3,oneof" json:"nacks_tx,omitempty"` - // The number of Nack messages received by this RSVP router. - NacksRx *uint64 `protobuf:"varint,25,opt,name=nacks_rx,json=nacksRx,proto3,oneof" json:"nacks_rx,omitempty"` - // The number of SRefresh messages sent by this RSVP router. - SrefreshTx *uint64 `protobuf:"varint,26,opt,name=srefresh_tx,json=srefreshTx,proto3,oneof" json:"srefresh_tx,omitempty"` - // The number of SRefresh messages received by this RSVP router. - SrefreshRx *uint64 `protobuf:"varint,27,opt,name=srefresh_rx,json=srefreshRx,proto3,oneof" json:"srefresh_rx,omitempty"` - // The number of Bundle messages sent by this RSVP router. - BundleTx *uint64 `protobuf:"varint,28,opt,name=bundle_tx,json=bundleTx,proto3,oneof" json:"bundle_tx,omitempty"` - // The number of Bundle messages received by this RSVP router. - BundleRx *uint64 `protobuf:"varint,29,opt,name=bundle_rx,json=bundleRx,proto3,oneof" json:"bundle_rx,omitempty"` - // The number of Path messages with Path Re-evaluation Request enabled sent by this - // RSVP router. - PathReevaluationRequestTx *uint64 `protobuf:"varint,30,opt,name=path_reevaluation_request_tx,json=pathReevaluationRequestTx,proto3,oneof" json:"path_reevaluation_request_tx,omitempty"` - // The number of successfully completed Make-Before-Break operations on LSPs on this - // RSVP router. - PathReoptimizations *uint64 `protobuf:"varint,31,opt,name=path_reoptimizations,json=pathReoptimizations,proto3,oneof" json:"path_reoptimizations,omitempty"` + // Enables Rx port or lag level disaggregation with predefined metrics tag name set + // as rx_name. + // The Rx port / lag names can be found under tagged_metrics tag names in flow metrics + // response. + // default = False + RxName *bool `protobuf:"varint,1,opt,name=rx_name,json=rxName,proto3,oneof" json:"rx_name,omitempty"` } -func (x *RsvpMetric) Reset() { - *x = RsvpMetric{} +func (x *FlowPredefinedTags) Reset() { + *x = FlowPredefinedTags{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[286] + mi := &file_otg_proto_msgTypes[254] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *RsvpMetric) String() string { +func (x *FlowPredefinedTags) String() string { return protoimpl.X.MessageStringOf(x) } -func (*RsvpMetric) ProtoMessage() {} +func (*FlowPredefinedTags) ProtoMessage() {} -func (x *RsvpMetric) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[286] +func (x *FlowPredefinedTags) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[254] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -43054,268 +42674,314 @@ func (x *RsvpMetric) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use RsvpMetric.ProtoReflect.Descriptor instead. -func (*RsvpMetric) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{286} -} - -func (x *RsvpMetric) GetName() string { - if x != nil && x.Name != nil { - return *x.Name - } - return "" +// Deprecated: Use FlowPredefinedTags.ProtoReflect.Descriptor instead. +func (*FlowPredefinedTags) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{254} } -func (x *RsvpMetric) GetIngressP2PLspsConfigured() uint32 { - if x != nil && x.IngressP2PLspsConfigured != nil { - return *x.IngressP2PLspsConfigured +func (x *FlowPredefinedTags) GetRxName() bool { + if x != nil && x.RxName != nil { + return *x.RxName } - return 0 + return false } -func (x *RsvpMetric) GetIngressP2PLspsUp() uint32 { - if x != nil && x.IngressP2PLspsUp != nil { - return *x.IngressP2PLspsUp - } - return 0 +// Rx Tx ratio is the ratio of expected number of Rx packets across all Rx ports to +// the Tx packets +// for the configured flow. It is a factor by which the Tx packet count is multiplied +// to calculate +// the sum of expected Rx packet count, across all Rx ports. This will be used to calculate +// loss +// percentage of flow at aggregate level. +type FlowRxTxRatio struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Description missing in models + // default = Choice.Enum.value + Choice *FlowRxTxRatio_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.FlowRxTxRatio_Choice_Enum,oneof" json:"choice,omitempty"` + // Description missing in models + RxCount *FlowRxTxRatioRxCount `protobuf:"bytes,2,opt,name=rx_count,json=rxCount,proto3" json:"rx_count,omitempty"` + // Should be a positive, non-zero value. The default value of 1, is when the Rx packet + // count across + // all ports is expected to match the Tx packet count. A custom integer value (>1) can + // be specified for + // loss calculation for cases when there are multiple destination addresses configured + // within one flow, + // but DUT is configured to replicate only to a subset of Rx ports. For cases when Tx + // side generates two + // packets from each source in 1:1 protection mode but only one of the two packets are + // received by the + // Rx port, we may need to specify a fractional value instead. + // default = 1.0 + Value *float32 `protobuf:"fixed32,3,opt,name=value,proto3,oneof" json:"value,omitempty"` } -func (x *RsvpMetric) GetEgressP2PLspsUp() uint32 { - if x != nil && x.EgressP2PLspsUp != nil { - return *x.EgressP2PLspsUp +func (x *FlowRxTxRatio) Reset() { + *x = FlowRxTxRatio{} + if protoimpl.UnsafeEnabled { + mi := &file_otg_proto_msgTypes[255] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } - return 0 } -func (x *RsvpMetric) GetLspFlapCount() uint64 { - if x != nil && x.LspFlapCount != nil { - return *x.LspFlapCount - } - return 0 +func (x *FlowRxTxRatio) String() string { + return protoimpl.X.MessageStringOf(x) } -func (x *RsvpMetric) GetPathsTx() uint64 { - if x != nil && x.PathsTx != nil { - return *x.PathsTx +func (*FlowRxTxRatio) ProtoMessage() {} + +func (x *FlowRxTxRatio) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[255] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms } - return 0 + return mi.MessageOf(x) } -func (x *RsvpMetric) GetPathsRx() uint64 { - if x != nil && x.PathsRx != nil { - return *x.PathsRx - } - return 0 +// Deprecated: Use FlowRxTxRatio.ProtoReflect.Descriptor instead. +func (*FlowRxTxRatio) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{255} } -func (x *RsvpMetric) GetResvsTx() uint64 { - if x != nil && x.ResvsTx != nil { - return *x.ResvsTx +func (x *FlowRxTxRatio) GetChoice() FlowRxTxRatio_Choice_Enum { + if x != nil && x.Choice != nil { + return *x.Choice } - return 0 + return FlowRxTxRatio_Choice_unspecified } -func (x *RsvpMetric) GetResvsRx() uint64 { - if x != nil && x.ResvsRx != nil { - return *x.ResvsRx +func (x *FlowRxTxRatio) GetRxCount() *FlowRxTxRatioRxCount { + if x != nil { + return x.RxCount } - return 0 + return nil } -func (x *RsvpMetric) GetPathTearsTx() uint64 { - if x != nil && x.PathTearsTx != nil { - return *x.PathTearsTx +func (x *FlowRxTxRatio) GetValue() float32 { + if x != nil && x.Value != nil { + return *x.Value } return 0 } -func (x *RsvpMetric) GetPathTearsRx() uint64 { - if x != nil && x.PathTearsRx != nil { - return *x.PathTearsRx - } - return 0 +// This is for cases where one copy of Tx packet is received on all Rx ports and so +// the sum total of Rx packets +// received across all Rx ports is a multiple of Rx port count and Tx packets. +type FlowRxTxRatioRxCount struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields } -func (x *RsvpMetric) GetResvTearsTx() uint64 { - if x != nil && x.ResvTearsTx != nil { - return *x.ResvTearsTx +func (x *FlowRxTxRatioRxCount) Reset() { + *x = FlowRxTxRatioRxCount{} + if protoimpl.UnsafeEnabled { + mi := &file_otg_proto_msgTypes[256] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } - return 0 } -func (x *RsvpMetric) GetResvTearsRx() uint64 { - if x != nil && x.ResvTearsRx != nil { - return *x.ResvTearsRx - } - return 0 +func (x *FlowRxTxRatioRxCount) String() string { + return protoimpl.X.MessageStringOf(x) } -func (x *RsvpMetric) GetPathErrorsTx() uint64 { - if x != nil && x.PathErrorsTx != nil { - return *x.PathErrorsTx +func (*FlowRxTxRatioRxCount) ProtoMessage() {} + +func (x *FlowRxTxRatioRxCount) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[256] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms } - return 0 + return mi.MessageOf(x) } -func (x *RsvpMetric) GetPathErrorsRx() uint64 { - if x != nil && x.PathErrorsRx != nil { - return *x.PathErrorsRx - } - return 0 +// Deprecated: Use FlowRxTxRatioRxCount.ProtoReflect.Descriptor instead. +func (*FlowRxTxRatioRxCount) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{256} } -func (x *RsvpMetric) GetResvErrorsTx() uint64 { - if x != nil && x.ResvErrorsTx != nil { - return *x.ResvErrorsTx - } - return 0 +// The optional container for event configuration. +type Event struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // True to enable all events. + // Enabling this option may affect the resultant packet payload due to + // additional instrumentation data. + // default = False + Enable *bool `protobuf:"varint,1,opt,name=enable,proto3,oneof" json:"enable,omitempty"` + // Description missing in models + Link *EventLink `protobuf:"bytes,2,opt,name=link,proto3" json:"link,omitempty"` + // Description missing in models + RxRateThreshold *EventRxRateThreshold `protobuf:"bytes,3,opt,name=rx_rate_threshold,json=rxRateThreshold,proto3" json:"rx_rate_threshold,omitempty"` + // Description missing in models + RouteAdvertiseWithdraw *EventRouteAdvertiseWithdraw `protobuf:"bytes,4,opt,name=route_advertise_withdraw,json=routeAdvertiseWithdraw,proto3" json:"route_advertise_withdraw,omitempty"` } -func (x *RsvpMetric) GetResvErrorsRx() uint64 { - if x != nil && x.ResvErrorsRx != nil { - return *x.ResvErrorsRx +func (x *Event) Reset() { + *x = Event{} + if protoimpl.UnsafeEnabled { + mi := &file_otg_proto_msgTypes[257] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } - return 0 } -func (x *RsvpMetric) GetResvConfTx() uint64 { - if x != nil && x.ResvConfTx != nil { - return *x.ResvConfTx - } - return 0 +func (x *Event) String() string { + return protoimpl.X.MessageStringOf(x) } -func (x *RsvpMetric) GetResvConfRx() uint64 { - if x != nil && x.ResvConfRx != nil { - return *x.ResvConfRx +func (*Event) ProtoMessage() {} + +func (x *Event) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[257] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms } - return 0 + return mi.MessageOf(x) } -func (x *RsvpMetric) GetHellosTx() uint64 { - if x != nil && x.HellosTx != nil { - return *x.HellosTx - } - return 0 +// Deprecated: Use Event.ProtoReflect.Descriptor instead. +func (*Event) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{257} } -func (x *RsvpMetric) GetHellosRx() uint64 { - if x != nil && x.HellosRx != nil { - return *x.HellosRx +func (x *Event) GetEnable() bool { + if x != nil && x.Enable != nil { + return *x.Enable } - return 0 + return false } -func (x *RsvpMetric) GetAcksTx() uint64 { - if x != nil && x.AcksTx != nil { - return *x.AcksTx +func (x *Event) GetLink() *EventLink { + if x != nil { + return x.Link } - return 0 + return nil } -func (x *RsvpMetric) GetAcksRx() uint64 { - if x != nil && x.AcksRx != nil { - return *x.AcksRx +func (x *Event) GetRxRateThreshold() *EventRxRateThreshold { + if x != nil { + return x.RxRateThreshold } - return 0 + return nil } -func (x *RsvpMetric) GetNacksTx() uint64 { - if x != nil && x.NacksTx != nil { - return *x.NacksTx +func (x *Event) GetRouteAdvertiseWithdraw() *EventRouteAdvertiseWithdraw { + if x != nil { + return x.RouteAdvertiseWithdraw } - return 0 + return nil } -func (x *RsvpMetric) GetNacksRx() uint64 { - if x != nil && x.NacksRx != nil { - return *x.NacksRx - } - return 0 +// The optional container for rx rate threshold event configuration. +type EventRxRateThreshold struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // True to enable the rx_rate_threshold event. + // Enabling this option may affect the resultant packet payload due to + // additional instrumentation data. + // default = False + Enable *bool `protobuf:"varint,1,opt,name=enable,proto3,oneof" json:"enable,omitempty"` + // True to enable notifications when the rx rate of a flow passes above + // or below the threshold value. + // default = 95 + Threshold *float32 `protobuf:"fixed32,2,opt,name=threshold,proto3,oneof" json:"threshold,omitempty"` } -func (x *RsvpMetric) GetSrefreshTx() uint64 { - if x != nil && x.SrefreshTx != nil { - return *x.SrefreshTx +func (x *EventRxRateThreshold) Reset() { + *x = EventRxRateThreshold{} + if protoimpl.UnsafeEnabled { + mi := &file_otg_proto_msgTypes[258] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } - return 0 } -func (x *RsvpMetric) GetSrefreshRx() uint64 { - if x != nil && x.SrefreshRx != nil { - return *x.SrefreshRx - } - return 0 +func (x *EventRxRateThreshold) String() string { + return protoimpl.X.MessageStringOf(x) } -func (x *RsvpMetric) GetBundleTx() uint64 { - if x != nil && x.BundleTx != nil { - return *x.BundleTx +func (*EventRxRateThreshold) ProtoMessage() {} + +func (x *EventRxRateThreshold) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[258] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms } - return 0 + return mi.MessageOf(x) } -func (x *RsvpMetric) GetBundleRx() uint64 { - if x != nil && x.BundleRx != nil { - return *x.BundleRx - } - return 0 +// Deprecated: Use EventRxRateThreshold.ProtoReflect.Descriptor instead. +func (*EventRxRateThreshold) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{258} } -func (x *RsvpMetric) GetPathReevaluationRequestTx() uint64 { - if x != nil && x.PathReevaluationRequestTx != nil { - return *x.PathReevaluationRequestTx +func (x *EventRxRateThreshold) GetEnable() bool { + if x != nil && x.Enable != nil { + return *x.Enable } - return 0 + return false } -func (x *RsvpMetric) GetPathReoptimizations() uint64 { - if x != nil && x.PathReoptimizations != nil { - return *x.PathReoptimizations +func (x *EventRxRateThreshold) GetThreshold() float32 { + if x != nil && x.Threshold != nil { + return *x.Threshold } return 0 } -// Request to traffic generator for states of choice -type StatesRequest struct { +// The optional container for link up/down event configuration. +type EventLink struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Description missing in models - // default = Choice.Enum.ipv4_neighbors - Choice *StatesRequest_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.StatesRequest_Choice_Enum,oneof" json:"choice,omitempty"` - // Description missing in models - Ipv4Neighbors *Neighborsv4StatesRequest `protobuf:"bytes,2,opt,name=ipv4_neighbors,json=ipv4Neighbors,proto3" json:"ipv4_neighbors,omitempty"` - // Description missing in models - Ipv6Neighbors *Neighborsv6StatesRequest `protobuf:"bytes,3,opt,name=ipv6_neighbors,json=ipv6Neighbors,proto3" json:"ipv6_neighbors,omitempty"` - // Description missing in models - BgpPrefixes *BgpPrefixStateRequest `protobuf:"bytes,4,opt,name=bgp_prefixes,json=bgpPrefixes,proto3" json:"bgp_prefixes,omitempty"` - // Description missing in models - IsisLsps *IsisLspsStateRequest `protobuf:"bytes,5,opt,name=isis_lsps,json=isisLsps,proto3" json:"isis_lsps,omitempty"` - // Description missing in models - LldpNeighbors *LldpNeighborsStateRequest `protobuf:"bytes,6,opt,name=lldp_neighbors,json=lldpNeighbors,proto3" json:"lldp_neighbors,omitempty"` - // Description missing in models - RsvpLsps *RsvpLspsStateRequest `protobuf:"bytes,7,opt,name=rsvp_lsps,json=rsvpLsps,proto3" json:"rsvp_lsps,omitempty"` + // True to enable notifications when a link up/down event occurs. + // default = False + Enable *bool `protobuf:"varint,1,opt,name=enable,proto3,oneof" json:"enable,omitempty"` } -func (x *StatesRequest) Reset() { - *x = StatesRequest{} +func (x *EventLink) Reset() { + *x = EventLink{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[287] + mi := &file_otg_proto_msgTypes[259] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *StatesRequest) String() string { +func (x *EventLink) String() string { return protoimpl.X.MessageStringOf(x) } -func (*StatesRequest) ProtoMessage() {} +func (*EventLink) ProtoMessage() {} -func (x *StatesRequest) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[287] +func (x *EventLink) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[259] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -43326,100 +42992,105 @@ func (x *StatesRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use StatesRequest.ProtoReflect.Descriptor instead. -func (*StatesRequest) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{287} +// Deprecated: Use EventLink.ProtoReflect.Descriptor instead. +func (*EventLink) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{259} } -func (x *StatesRequest) GetChoice() StatesRequest_Choice_Enum { - if x != nil && x.Choice != nil { - return *x.Choice +func (x *EventLink) GetEnable() bool { + if x != nil && x.Enable != nil { + return *x.Enable } - return StatesRequest_Choice_unspecified + return false } -func (x *StatesRequest) GetIpv4Neighbors() *Neighborsv4StatesRequest { - if x != nil { - return x.Ipv4Neighbors - } - return nil +// The optional container for route advertise/withdraw event configuration. +type EventRouteAdvertiseWithdraw struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // True to enable notifications when a route advertise/withdraw + // event occurs. + // default = False + Enable *bool `protobuf:"varint,1,opt,name=enable,proto3,oneof" json:"enable,omitempty"` } -func (x *StatesRequest) GetIpv6Neighbors() *Neighborsv6StatesRequest { - if x != nil { - return x.Ipv6Neighbors +func (x *EventRouteAdvertiseWithdraw) Reset() { + *x = EventRouteAdvertiseWithdraw{} + if protoimpl.UnsafeEnabled { + mi := &file_otg_proto_msgTypes[260] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } - return nil } -func (x *StatesRequest) GetBgpPrefixes() *BgpPrefixStateRequest { - if x != nil { - return x.BgpPrefixes - } - return nil +func (x *EventRouteAdvertiseWithdraw) String() string { + return protoimpl.X.MessageStringOf(x) } -func (x *StatesRequest) GetIsisLsps() *IsisLspsStateRequest { - if x != nil { - return x.IsisLsps +func (*EventRouteAdvertiseWithdraw) ProtoMessage() {} + +func (x *EventRouteAdvertiseWithdraw) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[260] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms } - return nil + return mi.MessageOf(x) } -func (x *StatesRequest) GetLldpNeighbors() *LldpNeighborsStateRequest { - if x != nil { - return x.LldpNeighbors - } - return nil +// Deprecated: Use EventRouteAdvertiseWithdraw.ProtoReflect.Descriptor instead. +func (*EventRouteAdvertiseWithdraw) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{260} } -func (x *StatesRequest) GetRsvpLsps() *RsvpLspsStateRequest { - if x != nil { - return x.RsvpLsps +func (x *EventRouteAdvertiseWithdraw) GetEnable() bool { + if x != nil && x.Enable != nil { + return *x.Enable } - return nil + return false } -// Response containing chosen traffic generator states -type StatesResponse struct { +// Description missing in models +type EventRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Description missing in models - // default = Choice.Enum.ipv4_neighbors - Choice *StatesResponse_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.StatesResponse_Choice_Enum,oneof" json:"choice,omitempty"` - // Description missing in models - Ipv4Neighbors []*Neighborsv4State `protobuf:"bytes,2,rep,name=ipv4_neighbors,json=ipv4Neighbors,proto3" json:"ipv4_neighbors,omitempty"` - // Description missing in models - Ipv6Neighbors []*Neighborsv6State `protobuf:"bytes,3,rep,name=ipv6_neighbors,json=ipv6Neighbors,proto3" json:"ipv6_neighbors,omitempty"` - // Description missing in models - BgpPrefixes []*BgpPrefixesState `protobuf:"bytes,4,rep,name=bgp_prefixes,json=bgpPrefixes,proto3" json:"bgp_prefixes,omitempty"` - // Description missing in models - IsisLsps []*IsisLspsState `protobuf:"bytes,5,rep,name=isis_lsps,json=isisLsps,proto3" json:"isis_lsps,omitempty"` - // Description missing in models - LldpNeighbors []*LldpNeighborsState `protobuf:"bytes,6,rep,name=lldp_neighbors,json=lldpNeighbors,proto3" json:"lldp_neighbors,omitempty"` - // Description missing in models - RsvpLsps []*RsvpLspsState `protobuf:"bytes,7,rep,name=rsvp_lsps,json=rsvpLsps,proto3" json:"rsvp_lsps,omitempty"` + // Constrain the events being returned by specifying event types. + // If the list is empty then all event types will be returned. + Type []EventRequest_Type_Enum `protobuf:"varint,1,rep,packed,name=type,proto3,enum=otg.EventRequest_Type_Enum" json:"type,omitempty"` + // Constrain the events being returned by specifying event sources. + // If the list is empty then all event sources will be returned. + // + // x-constraint: + // - /components/schemas/Port/properties/name + // - /components/schemas/Bgp.V4RouteRange/name + // - /components/schemas/Bgp.V6RouteRange/name + Source []string `protobuf:"bytes,2,rep,name=source,proto3" json:"source,omitempty"` } -func (x *StatesResponse) Reset() { - *x = StatesResponse{} +func (x *EventRequest) Reset() { + *x = EventRequest{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[288] + mi := &file_otg_proto_msgTypes[261] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *StatesResponse) String() string { +func (x *EventRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*StatesResponse) ProtoMessage() {} +func (*EventRequest) ProtoMessage() {} -func (x *StatesResponse) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[288] +func (x *EventRequest) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[261] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -43430,95 +43101,58 @@ func (x *StatesResponse) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use StatesResponse.ProtoReflect.Descriptor instead. -func (*StatesResponse) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{288} -} - -func (x *StatesResponse) GetChoice() StatesResponse_Choice_Enum { - if x != nil && x.Choice != nil { - return *x.Choice - } - return StatesResponse_Choice_unspecified +// Deprecated: Use EventRequest.ProtoReflect.Descriptor instead. +func (*EventRequest) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{261} } -func (x *StatesResponse) GetIpv4Neighbors() []*Neighborsv4State { +func (x *EventRequest) GetType() []EventRequest_Type_Enum { if x != nil { - return x.Ipv4Neighbors + return x.Type } return nil } -func (x *StatesResponse) GetIpv6Neighbors() []*Neighborsv6State { +func (x *EventRequest) GetSource() []string { if x != nil { - return x.Ipv6Neighbors + return x.Source } return nil } -func (x *StatesResponse) GetBgpPrefixes() []*BgpPrefixesState { - if x != nil { - return x.BgpPrefixes - } - return nil -} - -func (x *StatesResponse) GetIsisLsps() []*IsisLspsState { - if x != nil { - return x.IsisLsps - } - return nil -} - -func (x *StatesResponse) GetLldpNeighbors() []*LldpNeighborsState { - if x != nil { - return x.LldpNeighbors - } - return nil -} - -func (x *StatesResponse) GetRsvpLsps() []*RsvpLspsState { - if x != nil { - return x.RsvpLsps - } - return nil -} - -// The request to retrieve IPv4 Neighbor state (ARP cache entries) of a network interface(s). -type Neighborsv4StatesRequest struct { +// A container that describes what events a system should provide and +// optionally where to publish them. +type EventSubscription struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // The names of Ethernet interfaces for which Neighbor state (ARP cache entries) will - // be retrieved. If no names are specified then the results will contain Neighbor state - // (ARP cache entries) for all available Ethernet interfaces. - // - // x-constraint: - // - /components/schemas/Device.Ethernet/properties/name - // - // x-constraint: - // - /components/schemas/Device.Ethernet/properties/name - EthernetNames []string `protobuf:"bytes,1,rep,name=ethernet_names,json=ethernetNames,proto3" json:"ethernet_names,omitempty"` + // Description missing in models + Events *EventRequest `protobuf:"bytes,1,opt,name=events,proto3" json:"events,omitempty"` + // Indicates where a client wants to be notified of the events set in + // the events property. + // If this property is empty or null then no event notifications will + // be forwarded. + CallbackUrl *string `protobuf:"bytes,2,opt,name=callback_url,json=callbackUrl,proto3,oneof" json:"callback_url,omitempty"` } -func (x *Neighborsv4StatesRequest) Reset() { - *x = Neighborsv4StatesRequest{} +func (x *EventSubscription) Reset() { + *x = EventSubscription{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[289] + mi := &file_otg_proto_msgTypes[262] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *Neighborsv4StatesRequest) String() string { +func (x *EventSubscription) String() string { return protoimpl.X.MessageStringOf(x) } -func (*Neighborsv4StatesRequest) ProtoMessage() {} +func (*EventSubscription) ProtoMessage() {} -func (x *Neighborsv4StatesRequest) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[289] +func (x *EventSubscription) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[262] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -43529,52 +43163,77 @@ func (x *Neighborsv4StatesRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use Neighborsv4StatesRequest.ProtoReflect.Descriptor instead. -func (*Neighborsv4StatesRequest) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{289} +// Deprecated: Use EventSubscription.ProtoReflect.Descriptor instead. +func (*EventSubscription) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{262} } -func (x *Neighborsv4StatesRequest) GetEthernetNames() []string { +func (x *EventSubscription) GetEvents() *EventRequest { if x != nil { - return x.EthernetNames + return x.Events } return nil } -// IPv4 Neighbor state (ARP cache entry). -type Neighborsv4State struct { +func (x *EventSubscription) GetCallbackUrl() string { + if x != nil && x.CallbackUrl != nil { + return *x.CallbackUrl + } + return "" +} + +// Configuration of LLDP protocol IEEE Ref: https://www.ieee802.org/1/files/public/docs2002/lldp-protocol-00.pdf +type Lldp struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // The name of the Ethernet interface associated with the Neighbor state (ARP cache - // entry). + // The unique name of the object on which LLDP is running. // required = true - EthernetName *string `protobuf:"bytes,1,opt,name=ethernet_name,json=ethernetName,proto3,oneof" json:"ethernet_name,omitempty"` - // The IPv4 address of the neighbor. + Connection *LldpConnection `protobuf:"bytes,1,opt,name=connection,proto3" json:"connection,omitempty"` + // The Chassis ID is a mandatory TLV which identifies the chassis component of the endpoint + // identifier associated with the transmitting LLDP agent. If mac address is specified + // it should be in colon seperated mac address format. + ChassisId *LldpChassisId `protobuf:"bytes,2,opt,name=chassis_id,json=chassisId,proto3" json:"chassis_id,omitempty"` + // The Port ID is a mandatory TLV which identifies the port component of the endpoint + // identifier associated with the transmitting LLDP agent. If the specified port is + // an IEEE 802.3 Repeater port, then this TLV is optional. + PortId *LldpPortId `protobuf:"bytes,3,opt,name=port_id,json=portId,proto3" json:"port_id,omitempty"` + // The system name field shall contain an alpha-numeric string that indicates the system's + // administratively assigned name. The system name should be the system's fully qualified + // domain name. If implementations support IETF RFC 3418, the sysName object should + // be used for this field. + SystemName *LldpSystemName `protobuf:"bytes,4,opt,name=system_name,json=systemName,proto3" json:"system_name,omitempty"` + // Specifies the amount of time in seconds a receiving device should maintain LLDP information + // sent by the device before discarding it. + // default = 120 + HoldTime *uint32 `protobuf:"varint,5,opt,name=hold_time,json=holdTime,proto3,oneof" json:"hold_time,omitempty"` + // Set the transmission frequency of LLDP updates in seconds. + // default = 30 + AdvertisementInterval *uint32 `protobuf:"varint,6,opt,name=advertisement_interval,json=advertisementInterval,proto3,oneof" json:"advertisement_interval,omitempty"` + // Globally unique name of an object. It also serves as the primary key for arrays of + // objects. // required = true - Ipv4Address *string `protobuf:"bytes,2,opt,name=ipv4_address,json=ipv4Address,proto3,oneof" json:"ipv4_address,omitempty"` - // The link-layer address (MAC) of the neighbor. - LinkLayerAddress *string `protobuf:"bytes,3,opt,name=link_layer_address,json=linkLayerAddress,proto3,oneof" json:"link_layer_address,omitempty"` + Name *string `protobuf:"bytes,7,opt,name=name,proto3,oneof" json:"name,omitempty"` } -func (x *Neighborsv4State) Reset() { - *x = Neighborsv4State{} +func (x *Lldp) Reset() { + *x = Lldp{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[290] + mi := &file_otg_proto_msgTypes[263] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *Neighborsv4State) String() string { +func (x *Lldp) String() string { return protoimpl.X.MessageStringOf(x) } -func (*Neighborsv4State) ProtoMessage() {} +func (*Lldp) ProtoMessage() {} -func (x *Neighborsv4State) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[290] +func (x *Lldp) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[263] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -43585,67 +43244,93 @@ func (x *Neighborsv4State) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use Neighborsv4State.ProtoReflect.Descriptor instead. -func (*Neighborsv4State) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{290} +// Deprecated: Use Lldp.ProtoReflect.Descriptor instead. +func (*Lldp) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{263} } -func (x *Neighborsv4State) GetEthernetName() string { - if x != nil && x.EthernetName != nil { - return *x.EthernetName +func (x *Lldp) GetConnection() *LldpConnection { + if x != nil { + return x.Connection } - return "" + return nil } -func (x *Neighborsv4State) GetIpv4Address() string { - if x != nil && x.Ipv4Address != nil { - return *x.Ipv4Address +func (x *Lldp) GetChassisId() *LldpChassisId { + if x != nil { + return x.ChassisId } - return "" + return nil } -func (x *Neighborsv4State) GetLinkLayerAddress() string { - if x != nil && x.LinkLayerAddress != nil { - return *x.LinkLayerAddress +func (x *Lldp) GetPortId() *LldpPortId { + if x != nil { + return x.PortId + } + return nil +} + +func (x *Lldp) GetSystemName() *LldpSystemName { + if x != nil { + return x.SystemName + } + return nil +} + +func (x *Lldp) GetHoldTime() uint32 { + if x != nil && x.HoldTime != nil { + return *x.HoldTime + } + return 0 +} + +func (x *Lldp) GetAdvertisementInterval() uint32 { + if x != nil && x.AdvertisementInterval != nil { + return *x.AdvertisementInterval + } + return 0 +} + +func (x *Lldp) GetName() string { + if x != nil && x.Name != nil { + return *x.Name } return "" } -// The request to retrieve IPv6 Neighbor state (NDISC cache entries) of a network interface(s). -type Neighborsv6StatesRequest struct { +// LLDP connection to a test port. In future if more connection options arise LLDP +// connection object will be enhanced. +type LldpConnection struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // The names of Ethernet interfaces for which Neighbor state (NDISC cache entries) will - // be retrieved. If no names are specified then the results will contain Neighbor state - // (NDISC cache entries) for all available Ethernet interfaces. - // - // x-constraint: - // - /components/schemas/Device.Ethernet/properties/name + // The name of the test port or other connection objects on which LLDP is configured. + Choice *LldpConnection_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.LldpConnection_Choice_Enum,oneof" json:"choice,omitempty"` + // Name of the test port on which LLDP is configured on. // // x-constraint: - // - /components/schemas/Device.Ethernet/properties/name - EthernetNames []string `protobuf:"bytes,1,rep,name=ethernet_names,json=ethernetNames,proto3" json:"ethernet_names,omitempty"` + // - /components/schemas/Port/properties/name + PortName *string `protobuf:"bytes,2,opt,name=port_name,json=portName,proto3,oneof" json:"port_name,omitempty"` } -func (x *Neighborsv6StatesRequest) Reset() { - *x = Neighborsv6StatesRequest{} +func (x *LldpConnection) Reset() { + *x = LldpConnection{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[291] + mi := &file_otg_proto_msgTypes[264] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *Neighborsv6StatesRequest) String() string { +func (x *LldpConnection) String() string { return protoimpl.X.MessageStringOf(x) } -func (*Neighborsv6StatesRequest) ProtoMessage() {} +func (*LldpConnection) ProtoMessage() {} -func (x *Neighborsv6StatesRequest) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[291] +func (x *LldpConnection) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[264] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -43656,52 +43341,62 @@ func (x *Neighborsv6StatesRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use Neighborsv6StatesRequest.ProtoReflect.Descriptor instead. -func (*Neighborsv6StatesRequest) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{291} +// Deprecated: Use LldpConnection.ProtoReflect.Descriptor instead. +func (*LldpConnection) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{264} } -func (x *Neighborsv6StatesRequest) GetEthernetNames() []string { - if x != nil { - return x.EthernetNames +func (x *LldpConnection) GetChoice() LldpConnection_Choice_Enum { + if x != nil && x.Choice != nil { + return *x.Choice } - return nil + return LldpConnection_Choice_unspecified } -// IPv6 Neighbor state (NDISC cache entry). -type Neighborsv6State struct { +func (x *LldpConnection) GetPortName() string { + if x != nil && x.PortName != nil { + return *x.PortName + } + return "" +} + +// The Chassis ID is a mandatory TLV which identifies the chassis component of the endpoint +// identifier associated with the transmitting LLDP agent. This field identifies the +// format and source of the chassis identifier string. It is based on the enumerator +// defined by the LldpChassisIdSubtype object from IEEE 802.1AB MIB. +type LldpChassisId struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // The name of the Ethernet interface associated with the Neighbor state (NDISC cache - // entry). - // required = true - EthernetName *string `protobuf:"bytes,1,opt,name=ethernet_name,json=ethernetName,proto3,oneof" json:"ethernet_name,omitempty"` - // The IPv6 address of the neighbor. - // required = true - Ipv6Address *string `protobuf:"bytes,2,opt,name=ipv6_address,json=ipv6Address,proto3,oneof" json:"ipv6_address,omitempty"` - // The link-layer address (MAC) of the neighbor. - LinkLayerAddress *string `protobuf:"bytes,3,opt,name=link_layer_address,json=linkLayerAddress,proto3,oneof" json:"link_layer_address,omitempty"` + // Chassis ID subtype to be used in Chassis ID TLV. + // default = Choice.Enum.mac_address_subtype + Choice *LldpChassisId_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.LldpChassisId_Choice_Enum,oneof" json:"choice,omitempty"` + // Description missing in models + MacAddressSubtype *LldpChassisMacSubType `protobuf:"bytes,2,opt,name=mac_address_subtype,json=macAddressSubtype,proto3" json:"mac_address_subtype,omitempty"` + // Name of an interface of the chassis that uniquely identifies the chassis. + InterfaceNameSubtype *string `protobuf:"bytes,3,opt,name=interface_name_subtype,json=interfaceNameSubtype,proto3,oneof" json:"interface_name_subtype,omitempty"` + // Locally assigned name of the chassis. + LocalSubtype *string `protobuf:"bytes,4,opt,name=local_subtype,json=localSubtype,proto3,oneof" json:"local_subtype,omitempty"` } -func (x *Neighborsv6State) Reset() { - *x = Neighborsv6State{} +func (x *LldpChassisId) Reset() { + *x = LldpChassisId{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[292] + mi := &file_otg_proto_msgTypes[265] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *Neighborsv6State) String() string { +func (x *LldpChassisId) String() string { return protoimpl.X.MessageStringOf(x) } -func (*Neighborsv6State) ProtoMessage() {} +func (*LldpChassisId) ProtoMessage() {} -func (x *Neighborsv6State) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[292] +func (x *LldpChassisId) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[265] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -43712,80 +43407,76 @@ func (x *Neighborsv6State) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use Neighborsv6State.ProtoReflect.Descriptor instead. -func (*Neighborsv6State) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{292} +// Deprecated: Use LldpChassisId.ProtoReflect.Descriptor instead. +func (*LldpChassisId) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{265} } -func (x *Neighborsv6State) GetEthernetName() string { - if x != nil && x.EthernetName != nil { - return *x.EthernetName +func (x *LldpChassisId) GetChoice() LldpChassisId_Choice_Enum { + if x != nil && x.Choice != nil { + return *x.Choice } - return "" + return LldpChassisId_Choice_unspecified } -func (x *Neighborsv6State) GetIpv6Address() string { - if x != nil && x.Ipv6Address != nil { - return *x.Ipv6Address +func (x *LldpChassisId) GetMacAddressSubtype() *LldpChassisMacSubType { + if x != nil { + return x.MacAddressSubtype + } + return nil +} + +func (x *LldpChassisId) GetInterfaceNameSubtype() string { + if x != nil && x.InterfaceNameSubtype != nil { + return *x.InterfaceNameSubtype } return "" } -func (x *Neighborsv6State) GetLinkLayerAddress() string { - if x != nil && x.LinkLayerAddress != nil { - return *x.LinkLayerAddress +func (x *LldpChassisId) GetLocalSubtype() string { + if x != nil && x.LocalSubtype != nil { + return *x.LocalSubtype } return "" } -// The request to retrieve BGP peer prefix information. -type BgpPrefixStateRequest struct { +// The Port ID is a mandatory TLV which identifies the port component of the endpoint +// identifier associated with the transmitting LLDP agent.This field identifies the +// format and source of the port identifier string. It is based on the enumerator defined +// by the PtopoPortIdType object from RFC2922. +type LldpPortId struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // The names of BGP peers for which prefix information will be retrieved. If no names - // are specified then the results will contain prefix information for all configured - // BGP peers. - // - // x-constraint: - // - /components/schemas/Bgp.V4Peer/properties/name - // - /components/schemas/Bgp.V6Peer/properties/name - // - // x-constraint: - // - /components/schemas/Bgp.V4Peer/properties/name - // - /components/schemas/Bgp.V6Peer/properties/name - BgpPeerNames []string `protobuf:"bytes,1,rep,name=bgp_peer_names,json=bgpPeerNames,proto3" json:"bgp_peer_names,omitempty"` - // Specify which prefixes to return. If the list is empty or missing then all prefixes - // will be returned. - PrefixFilters []BgpPrefixStateRequest_PrefixFilters_Enum `protobuf:"varint,2,rep,packed,name=prefix_filters,json=prefixFilters,proto3,enum=otg.BgpPrefixStateRequest_PrefixFilters_Enum" json:"prefix_filters,omitempty"` - // The IPv4 unicast results can be filtered by specifying additional prefix search criteria. - // If the ipv4_unicast_filters property is missing or empty then all IPv4 prefixes will - // be returned. - Ipv4UnicastFilters []*BgpPrefixIpv4UnicastFilter `protobuf:"bytes,3,rep,name=ipv4_unicast_filters,json=ipv4UnicastFilters,proto3" json:"ipv4_unicast_filters,omitempty"` - // The IPv6 unicast results can be filtered by specifying additional prefix search criteria. - // If the ipv6_unicast_filters property is missing or empty then all IPv6 prefixes will - // be returned. - Ipv6UnicastFilters []*BgpPrefixIpv6UnicastFilter `protobuf:"bytes,4,rep,name=ipv6_unicast_filters,json=ipv6UnicastFilters,proto3" json:"ipv6_unicast_filters,omitempty"` + // Port ID subtype to be used in Port ID TLV. + // default = Choice.Enum.interface_name_subtype + Choice *LldpPortId_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.LldpPortId_Choice_Enum,oneof" json:"choice,omitempty"` + // The MAC Address configured in the Port ID TLV. + MacAddressSubtype *string `protobuf:"bytes,2,opt,name=mac_address_subtype,json=macAddressSubtype,proto3,oneof" json:"mac_address_subtype,omitempty"` + // Description missing in models + InterfaceNameSubtype *LldpPortInterfaceNameSubType `protobuf:"bytes,3,opt,name=interface_name_subtype,json=interfaceNameSubtype,proto3" json:"interface_name_subtype,omitempty"` + // The Locally assigned name configured in the Port ID TLV. + LocalSubtype *string `protobuf:"bytes,4,opt,name=local_subtype,json=localSubtype,proto3,oneof" json:"local_subtype,omitempty"` } -func (x *BgpPrefixStateRequest) Reset() { - *x = BgpPrefixStateRequest{} +func (x *LldpPortId) Reset() { + *x = LldpPortId{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[293] + mi := &file_otg_proto_msgTypes[266] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *BgpPrefixStateRequest) String() string { +func (x *LldpPortId) String() string { return protoimpl.X.MessageStringOf(x) } -func (*BgpPrefixStateRequest) ProtoMessage() {} +func (*LldpPortId) ProtoMessage() {} -func (x *BgpPrefixStateRequest) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[293] +func (x *LldpPortId) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[266] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -43796,74 +43487,72 @@ func (x *BgpPrefixStateRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use BgpPrefixStateRequest.ProtoReflect.Descriptor instead. -func (*BgpPrefixStateRequest) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{293} +// Deprecated: Use LldpPortId.ProtoReflect.Descriptor instead. +func (*LldpPortId) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{266} } -func (x *BgpPrefixStateRequest) GetBgpPeerNames() []string { - if x != nil { - return x.BgpPeerNames +func (x *LldpPortId) GetChoice() LldpPortId_Choice_Enum { + if x != nil && x.Choice != nil { + return *x.Choice } - return nil + return LldpPortId_Choice_unspecified } -func (x *BgpPrefixStateRequest) GetPrefixFilters() []BgpPrefixStateRequest_PrefixFilters_Enum { - if x != nil { - return x.PrefixFilters +func (x *LldpPortId) GetMacAddressSubtype() string { + if x != nil && x.MacAddressSubtype != nil { + return *x.MacAddressSubtype } - return nil + return "" } -func (x *BgpPrefixStateRequest) GetIpv4UnicastFilters() []*BgpPrefixIpv4UnicastFilter { +func (x *LldpPortId) GetInterfaceNameSubtype() *LldpPortInterfaceNameSubType { if x != nil { - return x.Ipv4UnicastFilters + return x.InterfaceNameSubtype } return nil } -func (x *BgpPrefixStateRequest) GetIpv6UnicastFilters() []*BgpPrefixIpv6UnicastFilter { - if x != nil { - return x.Ipv6UnicastFilters +func (x *LldpPortId) GetLocalSubtype() string { + if x != nil && x.LocalSubtype != nil { + return *x.LocalSubtype } - return nil + return "" } -// Description missing in models -type BgpPrefixIpv4UnicastFilter struct { +// The MAC address configured in the Chassis ID TLV. +type LldpChassisMacSubType struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // The addresses to match. If the addresses property is missing or empty then all addresses - // will match. - Addresses []string `protobuf:"bytes,1,rep,name=addresses,proto3" json:"addresses,omitempty"` - // The prefix length to match. If the prefix length is missing then all prefix lengths - // will match. - PrefixLength *uint32 `protobuf:"varint,2,opt,name=prefix_length,json=prefixLength,proto3,oneof" json:"prefix_length,omitempty"` - // The origin to match. If the origin is missing then all origins will match. - Origin *BgpPrefixIpv4UnicastFilter_Origin_Enum `protobuf:"varint,3,opt,name=origin,proto3,enum=otg.BgpPrefixIpv4UnicastFilter_Origin_Enum,oneof" json:"origin,omitempty"` - // The path id to match. If the path id is missing then all path ids will match. - PathId *uint32 `protobuf:"varint,4,opt,name=path_id,json=pathId,proto3,oneof" json:"path_id,omitempty"` + // In auto mode the system generated value is set for this property, while if the choice + // is selected as value, a user configured value will be used for this property. + // default = Choice.Enum.auto + Choice *LldpChassisMacSubType_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.LldpChassisMacSubType_Choice_Enum,oneof" json:"choice,omitempty"` + // The OTG implementation must provide a system generated value for this property. + Auto *string `protobuf:"bytes,2,opt,name=auto,proto3,oneof" json:"auto,omitempty"` + // User must specify a value if mode is not auto. + Value *string `protobuf:"bytes,3,opt,name=value,proto3,oneof" json:"value,omitempty"` } -func (x *BgpPrefixIpv4UnicastFilter) Reset() { - *x = BgpPrefixIpv4UnicastFilter{} +func (x *LldpChassisMacSubType) Reset() { + *x = LldpChassisMacSubType{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[294] + mi := &file_otg_proto_msgTypes[267] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *BgpPrefixIpv4UnicastFilter) String() string { +func (x *LldpChassisMacSubType) String() string { return protoimpl.X.MessageStringOf(x) } -func (*BgpPrefixIpv4UnicastFilter) ProtoMessage() {} +func (*LldpChassisMacSubType) ProtoMessage() {} -func (x *BgpPrefixIpv4UnicastFilter) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[294] +func (x *LldpChassisMacSubType) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[267] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -43874,74 +43563,65 @@ func (x *BgpPrefixIpv4UnicastFilter) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use BgpPrefixIpv4UnicastFilter.ProtoReflect.Descriptor instead. -func (*BgpPrefixIpv4UnicastFilter) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{294} -} - -func (x *BgpPrefixIpv4UnicastFilter) GetAddresses() []string { - if x != nil { - return x.Addresses - } - return nil +// Deprecated: Use LldpChassisMacSubType.ProtoReflect.Descriptor instead. +func (*LldpChassisMacSubType) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{267} } -func (x *BgpPrefixIpv4UnicastFilter) GetPrefixLength() uint32 { - if x != nil && x.PrefixLength != nil { - return *x.PrefixLength +func (x *LldpChassisMacSubType) GetChoice() LldpChassisMacSubType_Choice_Enum { + if x != nil && x.Choice != nil { + return *x.Choice } - return 0 + return LldpChassisMacSubType_Choice_unspecified } -func (x *BgpPrefixIpv4UnicastFilter) GetOrigin() BgpPrefixIpv4UnicastFilter_Origin_Enum { - if x != nil && x.Origin != nil { - return *x.Origin +func (x *LldpChassisMacSubType) GetAuto() string { + if x != nil && x.Auto != nil { + return *x.Auto } - return BgpPrefixIpv4UnicastFilter_Origin_unspecified + return "" } -func (x *BgpPrefixIpv4UnicastFilter) GetPathId() uint32 { - if x != nil && x.PathId != nil { - return *x.PathId +func (x *LldpChassisMacSubType) GetValue() string { + if x != nil && x.Value != nil { + return *x.Value } - return 0 + return "" } -// Description missing in models -type BgpPrefixIpv6UnicastFilter struct { +// The interface name configured in the Port ID TLV. +type LldpPortInterfaceNameSubType struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // The addresses to match. If the addresses property is missing or empty then all addresses - // will match. - Addresses []string `protobuf:"bytes,1,rep,name=addresses,proto3" json:"addresses,omitempty"` - // The prefix length to match. If the prefix length is missing then all prefix lengths - // will match. - PrefixLength *uint32 `protobuf:"varint,2,opt,name=prefix_length,json=prefixLength,proto3,oneof" json:"prefix_length,omitempty"` - // The origin to match. If the origin is missing then all origins will match. - Origin *BgpPrefixIpv6UnicastFilter_Origin_Enum `protobuf:"varint,3,opt,name=origin,proto3,enum=otg.BgpPrefixIpv6UnicastFilter_Origin_Enum,oneof" json:"origin,omitempty"` - // The path id to match. If the path id is missing then all path ids will match. - PathId *uint32 `protobuf:"varint,4,opt,name=path_id,json=pathId,proto3,oneof" json:"path_id,omitempty"` + // In auto mode the system generated value is set for this property, while if the choice + // is selected as value, a user configured value will be used for this property. + // default = Choice.Enum.auto + Choice *LldpPortInterfaceNameSubType_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.LldpPortInterfaceNameSubType_Choice_Enum,oneof" json:"choice,omitempty"` + // The OTG implementation must provide a system generated value for this property. + Auto *string `protobuf:"bytes,2,opt,name=auto,proto3,oneof" json:"auto,omitempty"` + // User must specify a value if mode is not auto. + Value *string `protobuf:"bytes,3,opt,name=value,proto3,oneof" json:"value,omitempty"` } -func (x *BgpPrefixIpv6UnicastFilter) Reset() { - *x = BgpPrefixIpv6UnicastFilter{} +func (x *LldpPortInterfaceNameSubType) Reset() { + *x = LldpPortInterfaceNameSubType{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[295] + mi := &file_otg_proto_msgTypes[268] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *BgpPrefixIpv6UnicastFilter) String() string { +func (x *LldpPortInterfaceNameSubType) String() string { return protoimpl.X.MessageStringOf(x) } -func (*BgpPrefixIpv6UnicastFilter) ProtoMessage() {} +func (*LldpPortInterfaceNameSubType) ProtoMessage() {} -func (x *BgpPrefixIpv6UnicastFilter) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[295] +func (x *LldpPortInterfaceNameSubType) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[268] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -43952,70 +43632,65 @@ func (x *BgpPrefixIpv6UnicastFilter) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use BgpPrefixIpv6UnicastFilter.ProtoReflect.Descriptor instead. -func (*BgpPrefixIpv6UnicastFilter) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{295} -} - -func (x *BgpPrefixIpv6UnicastFilter) GetAddresses() []string { - if x != nil { - return x.Addresses - } - return nil +// Deprecated: Use LldpPortInterfaceNameSubType.ProtoReflect.Descriptor instead. +func (*LldpPortInterfaceNameSubType) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{268} } -func (x *BgpPrefixIpv6UnicastFilter) GetPrefixLength() uint32 { - if x != nil && x.PrefixLength != nil { - return *x.PrefixLength +func (x *LldpPortInterfaceNameSubType) GetChoice() LldpPortInterfaceNameSubType_Choice_Enum { + if x != nil && x.Choice != nil { + return *x.Choice } - return 0 + return LldpPortInterfaceNameSubType_Choice_unspecified } -func (x *BgpPrefixIpv6UnicastFilter) GetOrigin() BgpPrefixIpv6UnicastFilter_Origin_Enum { - if x != nil && x.Origin != nil { - return *x.Origin +func (x *LldpPortInterfaceNameSubType) GetAuto() string { + if x != nil && x.Auto != nil { + return *x.Auto } - return BgpPrefixIpv6UnicastFilter_Origin_unspecified + return "" } -func (x *BgpPrefixIpv6UnicastFilter) GetPathId() uint32 { - if x != nil && x.PathId != nil { - return *x.PathId +func (x *LldpPortInterfaceNameSubType) GetValue() string { + if x != nil && x.Value != nil { + return *x.Value } - return 0 + return "" } -// BGP peer prefixes. -type BgpPrefixesState struct { +// The system Name configured in the System Name TLV. +type LldpSystemName struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // The name of a BGP peer. - BgpPeerName *string `protobuf:"bytes,1,opt,name=bgp_peer_name,json=bgpPeerName,proto3,oneof" json:"bgp_peer_name,omitempty"` - // Description missing in models - Ipv4UnicastPrefixes []*BgpPrefixIpv4UnicastState `protobuf:"bytes,2,rep,name=ipv4_unicast_prefixes,json=ipv4UnicastPrefixes,proto3" json:"ipv4_unicast_prefixes,omitempty"` - // Description missing in models - Ipv6UnicastPrefixes []*BgpPrefixIpv6UnicastState `protobuf:"bytes,3,rep,name=ipv6_unicast_prefixes,json=ipv6UnicastPrefixes,proto3" json:"ipv6_unicast_prefixes,omitempty"` + // In auto mode the system generated value is set for this property, while if the choice + // is selected as value, a user configured value will be used for this property. + // default = Choice.Enum.auto + Choice *LldpSystemName_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.LldpSystemName_Choice_Enum,oneof" json:"choice,omitempty"` + // The OTG implementation must provide a system generated value for this property. + Auto *string `protobuf:"bytes,2,opt,name=auto,proto3,oneof" json:"auto,omitempty"` + // User must specify a value if mode is not auto. + Value *string `protobuf:"bytes,3,opt,name=value,proto3,oneof" json:"value,omitempty"` } -func (x *BgpPrefixesState) Reset() { - *x = BgpPrefixesState{} +func (x *LldpSystemName) Reset() { + *x = LldpSystemName{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[296] + mi := &file_otg_proto_msgTypes[269] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *BgpPrefixesState) String() string { +func (x *LldpSystemName) String() string { return protoimpl.X.MessageStringOf(x) } -func (*BgpPrefixesState) ProtoMessage() {} +func (*LldpSystemName) ProtoMessage() {} -func (x *BgpPrefixesState) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[296] +func (x *LldpSystemName) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[269] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -44026,79 +43701,71 @@ func (x *BgpPrefixesState) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use BgpPrefixesState.ProtoReflect.Descriptor instead. -func (*BgpPrefixesState) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{296} +// Deprecated: Use LldpSystemName.ProtoReflect.Descriptor instead. +func (*LldpSystemName) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{269} } -func (x *BgpPrefixesState) GetBgpPeerName() string { - if x != nil && x.BgpPeerName != nil { - return *x.BgpPeerName +func (x *LldpSystemName) GetChoice() LldpSystemName_Choice_Enum { + if x != nil && x.Choice != nil { + return *x.Choice } - return "" + return LldpSystemName_Choice_unspecified } -func (x *BgpPrefixesState) GetIpv4UnicastPrefixes() []*BgpPrefixIpv4UnicastState { - if x != nil { - return x.Ipv4UnicastPrefixes +func (x *LldpSystemName) GetAuto() string { + if x != nil && x.Auto != nil { + return *x.Auto } - return nil + return "" } -func (x *BgpPrefixesState) GetIpv6UnicastPrefixes() []*BgpPrefixIpv6UnicastState { - if x != nil { - return x.Ipv6UnicastPrefixes +func (x *LldpSystemName) GetValue() string { + if x != nil && x.Value != nil { + return *x.Value } - return nil + return "" } -// IPv4 unicast prefix. -type BgpPrefixIpv4UnicastState struct { +// Error response generated while serving API request. +type Error struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // An IPv4 unicast address - Ipv4Address *string `protobuf:"bytes,1,opt,name=ipv4_address,json=ipv4Address,proto3,oneof" json:"ipv4_address,omitempty"` - // The length of the prefix. - PrefixLength *uint32 `protobuf:"varint,2,opt,name=prefix_length,json=prefixLength,proto3,oneof" json:"prefix_length,omitempty"` - // The origin of the prefix. - Origin *BgpPrefixIpv4UnicastState_Origin_Enum `protobuf:"varint,3,opt,name=origin,proto3,enum=otg.BgpPrefixIpv4UnicastState_Origin_Enum,oneof" json:"origin,omitempty"` - // The path id. - PathId *uint32 `protobuf:"varint,4,opt,name=path_id,json=pathId,proto3,oneof" json:"path_id,omitempty"` - // The IPv4 address of the egress interface. - Ipv4NextHop *string `protobuf:"bytes,5,opt,name=ipv4_next_hop,json=ipv4NextHop,proto3,oneof" json:"ipv4_next_hop,omitempty"` - // The IPv6 address of the egress interface. - Ipv6NextHop *string `protobuf:"bytes,6,opt,name=ipv6_next_hop,json=ipv6NextHop,proto3,oneof" json:"ipv6_next_hop,omitempty"` - // Optional community attributes. - Communities []*ResultBgpCommunity `protobuf:"bytes,7,rep,name=communities,proto3" json:"communities,omitempty"` - // Description missing in models - AsPath *ResultBgpAsPath `protobuf:"bytes,8,opt,name=as_path,json=asPath,proto3" json:"as_path,omitempty"` - // The local preference is a well-known attribute and the value is used for route selection. - // The route with the highest local preference value is preferred. - LocalPreference *uint32 `protobuf:"varint,9,opt,name=local_preference,json=localPreference,proto3,oneof" json:"local_preference,omitempty"` - // The multi exit discriminator (MED) is an optional non-transitive attribute and the - // value is used for route selection. The route with the lowest MED value is preferred. - MultiExitDiscriminator *uint32 `protobuf:"varint,10,opt,name=multi_exit_discriminator,json=multiExitDiscriminator,proto3,oneof" json:"multi_exit_discriminator,omitempty"` + // Numeric status code based on the underlying transport being used. + // The API server MUST set this code explicitly based on following references: + // - HTTP 4xx errors: https://datatracker.ietf.org/doc/html/rfc9110#section-15.5 + // - HTTP 5xx errors: https://datatracker.ietf.org/doc/html/rfc9110#section-15.6 + // - gRPC errors: https://grpc.github.io/grpc/core/md_doc_statuscodes.html + // required = true + Code *int32 `protobuf:"varint,1,opt,name=code,proto3,oneof" json:"code,omitempty"` + // Classification of error originating from within API server that may not be mapped + // to the value in `code`. + // Absence of this field may indicate that the error did not originate from within API + // server. + Kind *Error_Kind_Enum `protobuf:"varint,2,opt,name=kind,proto3,enum=otg.Error_Kind_Enum,oneof" json:"kind,omitempty"` + // List of error messages generated while executing the request. + Errors []string `protobuf:"bytes,3,rep,name=errors,proto3" json:"errors,omitempty"` } -func (x *BgpPrefixIpv4UnicastState) Reset() { - *x = BgpPrefixIpv4UnicastState{} +func (x *Error) Reset() { + *x = Error{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[297] + mi := &file_otg_proto_msgTypes[270] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *BgpPrefixIpv4UnicastState) String() string { +func (x *Error) String() string { return protoimpl.X.MessageStringOf(x) } -func (*BgpPrefixIpv4UnicastState) ProtoMessage() {} +func (*Error) ProtoMessage() {} -func (x *BgpPrefixIpv4UnicastState) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[297] +func (x *Error) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[270] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -44109,128 +43776,111 @@ func (x *BgpPrefixIpv4UnicastState) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use BgpPrefixIpv4UnicastState.ProtoReflect.Descriptor instead. -func (*BgpPrefixIpv4UnicastState) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{297} -} - -func (x *BgpPrefixIpv4UnicastState) GetIpv4Address() string { - if x != nil && x.Ipv4Address != nil { - return *x.Ipv4Address - } - return "" +// Deprecated: Use Error.ProtoReflect.Descriptor instead. +func (*Error) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{270} } -func (x *BgpPrefixIpv4UnicastState) GetPrefixLength() uint32 { - if x != nil && x.PrefixLength != nil { - return *x.PrefixLength +func (x *Error) GetCode() int32 { + if x != nil && x.Code != nil { + return *x.Code } return 0 } -func (x *BgpPrefixIpv4UnicastState) GetOrigin() BgpPrefixIpv4UnicastState_Origin_Enum { - if x != nil && x.Origin != nil { - return *x.Origin +func (x *Error) GetKind() Error_Kind_Enum { + if x != nil && x.Kind != nil { + return *x.Kind } - return BgpPrefixIpv4UnicastState_Origin_unspecified + return Error_Kind_unspecified } -func (x *BgpPrefixIpv4UnicastState) GetPathId() uint32 { - if x != nil && x.PathId != nil { - return *x.PathId +func (x *Error) GetErrors() []string { + if x != nil { + return x.Errors } - return 0 + return nil } -func (x *BgpPrefixIpv4UnicastState) GetIpv4NextHop() string { - if x != nil && x.Ipv4NextHop != nil { - return *x.Ipv4NextHop - } - return "" +// A list of warnings that have occurred while executing the request. +type Warning struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // A list of any system specific warnings that have occurred while + // executing the request. + Warnings []string `protobuf:"bytes,1,rep,name=warnings,proto3" json:"warnings,omitempty"` } -func (x *BgpPrefixIpv4UnicastState) GetIpv6NextHop() string { - if x != nil && x.Ipv6NextHop != nil { - return *x.Ipv6NextHop +func (x *Warning) Reset() { + *x = Warning{} + if protoimpl.UnsafeEnabled { + mi := &file_otg_proto_msgTypes[271] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } - return "" } -func (x *BgpPrefixIpv4UnicastState) GetCommunities() []*ResultBgpCommunity { - if x != nil { - return x.Communities - } - return nil +func (x *Warning) String() string { + return protoimpl.X.MessageStringOf(x) } -func (x *BgpPrefixIpv4UnicastState) GetAsPath() *ResultBgpAsPath { - if x != nil { - return x.AsPath +func (*Warning) ProtoMessage() {} + +func (x *Warning) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[271] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms } - return nil + return mi.MessageOf(x) } -func (x *BgpPrefixIpv4UnicastState) GetLocalPreference() uint32 { - if x != nil && x.LocalPreference != nil { - return *x.LocalPreference - } - return 0 +// Deprecated: Use Warning.ProtoReflect.Descriptor instead. +func (*Warning) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{271} } -func (x *BgpPrefixIpv4UnicastState) GetMultiExitDiscriminator() uint32 { - if x != nil && x.MultiExitDiscriminator != nil { - return *x.MultiExitDiscriminator +func (x *Warning) GetWarnings() []string { + if x != nil { + return x.Warnings } - return 0 + return nil } -// IPv6 unicast prefix. -type BgpPrefixIpv6UnicastState struct { +// Request for updating specific attributes of resources in traffic generator +type ConfigUpdate struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // An IPv6 unicast address - Ipv6Address *string `protobuf:"bytes,1,opt,name=ipv6_address,json=ipv6Address,proto3,oneof" json:"ipv6_address,omitempty"` - // The length of the prefix. - PrefixLength *uint32 `protobuf:"varint,2,opt,name=prefix_length,json=prefixLength,proto3,oneof" json:"prefix_length,omitempty"` - // The origin of the prefix. - Origin *BgpPrefixIpv6UnicastState_Origin_Enum `protobuf:"varint,3,opt,name=origin,proto3,enum=otg.BgpPrefixIpv6UnicastState_Origin_Enum,oneof" json:"origin,omitempty"` - // The path id. - PathId *uint32 `protobuf:"varint,4,opt,name=path_id,json=pathId,proto3,oneof" json:"path_id,omitempty"` - // The IPv4 address of the egress interface. - Ipv4NextHop *string `protobuf:"bytes,5,opt,name=ipv4_next_hop,json=ipv4NextHop,proto3,oneof" json:"ipv4_next_hop,omitempty"` - // The IPv6 address of the egress interface. - Ipv6NextHop *string `protobuf:"bytes,6,opt,name=ipv6_next_hop,json=ipv6NextHop,proto3,oneof" json:"ipv6_next_hop,omitempty"` - // Optional community attributes. - Communities []*ResultBgpCommunity `protobuf:"bytes,7,rep,name=communities,proto3" json:"communities,omitempty"` // Description missing in models - AsPath *ResultBgpAsPath `protobuf:"bytes,8,opt,name=as_path,json=asPath,proto3" json:"as_path,omitempty"` - // The local preference is a well-known attribute and the value is used for route selection. - // The route with the highest local preference value is preferred. - LocalPreference *uint32 `protobuf:"varint,9,opt,name=local_preference,json=localPreference,proto3,oneof" json:"local_preference,omitempty"` - // The multi exit discriminator (MED) is an optional non-transitive attribute and the - // value is used for route selection. The route with the lowest MED value is preferred. - MultiExitDiscriminator *uint32 `protobuf:"varint,10,opt,name=multi_exit_discriminator,json=multiExitDiscriminator,proto3,oneof" json:"multi_exit_discriminator,omitempty"` + Choice *ConfigUpdate_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.ConfigUpdate_Choice_Enum,oneof" json:"choice,omitempty"` + // Description missing in models + Flows *FlowsUpdate `protobuf:"bytes,2,opt,name=flows,proto3" json:"flows,omitempty"` } -func (x *BgpPrefixIpv6UnicastState) Reset() { - *x = BgpPrefixIpv6UnicastState{} +func (x *ConfigUpdate) Reset() { + *x = ConfigUpdate{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[298] + mi := &file_otg_proto_msgTypes[272] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *BgpPrefixIpv6UnicastState) String() string { +func (x *ConfigUpdate) String() string { return protoimpl.X.MessageStringOf(x) } -func (*BgpPrefixIpv6UnicastState) ProtoMessage() {} +func (*ConfigUpdate) ProtoMessage() {} -func (x *BgpPrefixIpv6UnicastState) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[298] +func (x *ConfigUpdate) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[272] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -44241,115 +43891,118 @@ func (x *BgpPrefixIpv6UnicastState) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use BgpPrefixIpv6UnicastState.ProtoReflect.Descriptor instead. -func (*BgpPrefixIpv6UnicastState) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{298} +// Deprecated: Use ConfigUpdate.ProtoReflect.Descriptor instead. +func (*ConfigUpdate) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{272} } -func (x *BgpPrefixIpv6UnicastState) GetIpv6Address() string { - if x != nil && x.Ipv6Address != nil { - return *x.Ipv6Address +func (x *ConfigUpdate) GetChoice() ConfigUpdate_Choice_Enum { + if x != nil && x.Choice != nil { + return *x.Choice } - return "" + return ConfigUpdate_Choice_unspecified } -func (x *BgpPrefixIpv6UnicastState) GetPrefixLength() uint32 { - if x != nil && x.PrefixLength != nil { - return *x.PrefixLength +func (x *ConfigUpdate) GetFlows() *FlowsUpdate { + if x != nil { + return x.Flows } - return 0 + return nil } -func (x *BgpPrefixIpv6UnicastState) GetOrigin() BgpPrefixIpv6UnicastState_Origin_Enum { - if x != nil && x.Origin != nil { - return *x.Origin - } - return BgpPrefixIpv6UnicastState_Origin_unspecified +// A container of flows with associated properties to be updated without affecting the +// flows current transmit state. +type FlowsUpdate struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Flow properties to be updated without affecting the transmit state. + PropertyNames []FlowsUpdate_PropertyNames_Enum `protobuf:"varint,1,rep,packed,name=property_names,json=propertyNames,proto3,enum=otg.FlowsUpdate_PropertyNames_Enum" json:"property_names,omitempty"` + // The list of configured flows for which given property will be updated. + Flows []*Flow `protobuf:"bytes,2,rep,name=flows,proto3" json:"flows,omitempty"` } -func (x *BgpPrefixIpv6UnicastState) GetPathId() uint32 { - if x != nil && x.PathId != nil { - return *x.PathId +func (x *FlowsUpdate) Reset() { + *x = FlowsUpdate{} + if protoimpl.UnsafeEnabled { + mi := &file_otg_proto_msgTypes[273] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } - return 0 } -func (x *BgpPrefixIpv6UnicastState) GetIpv4NextHop() string { - if x != nil && x.Ipv4NextHop != nil { - return *x.Ipv4NextHop - } - return "" +func (x *FlowsUpdate) String() string { + return protoimpl.X.MessageStringOf(x) } -func (x *BgpPrefixIpv6UnicastState) GetIpv6NextHop() string { - if x != nil && x.Ipv6NextHop != nil { - return *x.Ipv6NextHop +func (*FlowsUpdate) ProtoMessage() {} + +func (x *FlowsUpdate) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[273] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms } - return "" + return mi.MessageOf(x) } -func (x *BgpPrefixIpv6UnicastState) GetCommunities() []*ResultBgpCommunity { - if x != nil { - return x.Communities - } - return nil +// Deprecated: Use FlowsUpdate.ProtoReflect.Descriptor instead. +func (*FlowsUpdate) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{273} } -func (x *BgpPrefixIpv6UnicastState) GetAsPath() *ResultBgpAsPath { +func (x *FlowsUpdate) GetPropertyNames() []FlowsUpdate_PropertyNames_Enum { if x != nil { - return x.AsPath + return x.PropertyNames } return nil } -func (x *BgpPrefixIpv6UnicastState) GetLocalPreference() uint32 { - if x != nil && x.LocalPreference != nil { - return *x.LocalPreference - } - return 0 -} - -func (x *BgpPrefixIpv6UnicastState) GetMultiExitDiscriminator() uint32 { - if x != nil && x.MultiExitDiscriminator != nil { - return *x.MultiExitDiscriminator +func (x *FlowsUpdate) GetFlows() []*Flow { + if x != nil { + return x.Flows } - return 0 + return nil } -// BGP communities provide additional capability for tagging routes and for modifying -// BGP routing policy on upstream and downstream routers. BGP community is a 32-bit -// number which is broken into 16-bit AS number and a 16-bit custom value. -type ResultBgpCommunity struct { +// Request for setting operational state of configured resources. +type ControlState struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // The type of community AS number. If community type is manual_as_number then as_number - // and as_custom will be available. - Type *ResultBgpCommunity_Type_Enum `protobuf:"varint,1,opt,name=type,proto3,enum=otg.ResultBgpCommunity_Type_Enum,oneof" json:"type,omitempty"` - // First two octets of 32 bit community AS number. - AsNumber *uint32 `protobuf:"varint,2,opt,name=as_number,json=asNumber,proto3,oneof" json:"as_number,omitempty"` - // Last two octets of the community value. - AsCustom *uint32 `protobuf:"varint,3,opt,name=as_custom,json=asCustom,proto3,oneof" json:"as_custom,omitempty"` + // Description missing in models + // required = true + Choice *ControlState_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.ControlState_Choice_Enum,oneof" json:"choice,omitempty"` + // Description missing in models + Port *StatePort `protobuf:"bytes,2,opt,name=port,proto3" json:"port,omitempty"` + // Description missing in models + Protocol *StateProtocol `protobuf:"bytes,3,opt,name=protocol,proto3" json:"protocol,omitempty"` + // Description missing in models + Traffic *StateTraffic `protobuf:"bytes,4,opt,name=traffic,proto3" json:"traffic,omitempty"` } -func (x *ResultBgpCommunity) Reset() { - *x = ResultBgpCommunity{} +func (x *ControlState) Reset() { + *x = ControlState{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[299] + mi := &file_otg_proto_msgTypes[274] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *ResultBgpCommunity) String() string { +func (x *ControlState) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ResultBgpCommunity) ProtoMessage() {} +func (*ControlState) ProtoMessage() {} -func (x *ResultBgpCommunity) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[299] +func (x *ControlState) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[274] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -44360,60 +44013,71 @@ func (x *ResultBgpCommunity) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use ResultBgpCommunity.ProtoReflect.Descriptor instead. -func (*ResultBgpCommunity) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{299} +// Deprecated: Use ControlState.ProtoReflect.Descriptor instead. +func (*ControlState) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{274} } -func (x *ResultBgpCommunity) GetType() ResultBgpCommunity_Type_Enum { - if x != nil && x.Type != nil { - return *x.Type +func (x *ControlState) GetChoice() ControlState_Choice_Enum { + if x != nil && x.Choice != nil { + return *x.Choice } - return ResultBgpCommunity_Type_unspecified + return ControlState_Choice_unspecified } -func (x *ResultBgpCommunity) GetAsNumber() uint32 { - if x != nil && x.AsNumber != nil { - return *x.AsNumber +func (x *ControlState) GetPort() *StatePort { + if x != nil { + return x.Port } - return 0 + return nil } -func (x *ResultBgpCommunity) GetAsCustom() uint32 { - if x != nil && x.AsCustom != nil { - return *x.AsCustom +func (x *ControlState) GetProtocol() *StateProtocol { + if x != nil { + return x.Protocol } - return 0 + return nil } -// This attribute identifies the autonomous systems through which routing information -// carried in this UPDATE message has passed. -type ResultBgpAsPath struct { +func (x *ControlState) GetTraffic() *StateTraffic { + if x != nil { + return x.Traffic + } + return nil +} + +// States associated with configured ports. +type StatePort struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // AS Path segments present in the received AS Path attribute. - Segments []*ResultBgpAsPathSegment `protobuf:"bytes,1,rep,name=segments,proto3" json:"segments,omitempty"` + // Description missing in models + // required = true + Choice *StatePort_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.StatePort_Choice_Enum,oneof" json:"choice,omitempty"` + // Description missing in models + Link *StatePortLink `protobuf:"bytes,2,opt,name=link,proto3" json:"link,omitempty"` + // Description missing in models + Capture *StatePortCapture `protobuf:"bytes,3,opt,name=capture,proto3" json:"capture,omitempty"` } -func (x *ResultBgpAsPath) Reset() { - *x = ResultBgpAsPath{} +func (x *StatePort) Reset() { + *x = StatePort{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[300] + mi := &file_otg_proto_msgTypes[275] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *ResultBgpAsPath) String() string { +func (x *StatePort) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ResultBgpAsPath) ProtoMessage() {} +func (*StatePort) ProtoMessage() {} -func (x *ResultBgpAsPath) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[300] +func (x *StatePort) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[275] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -44424,54 +44088,62 @@ func (x *ResultBgpAsPath) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use ResultBgpAsPath.ProtoReflect.Descriptor instead. -func (*ResultBgpAsPath) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{300} +// Deprecated: Use StatePort.ProtoReflect.Descriptor instead. +func (*StatePort) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{275} } -func (x *ResultBgpAsPath) GetSegments() []*ResultBgpAsPathSegment { +func (x *StatePort) GetChoice() StatePort_Choice_Enum { + if x != nil && x.Choice != nil { + return *x.Choice + } + return StatePort_Choice_unspecified +} + +func (x *StatePort) GetLink() *StatePortLink { if x != nil { - return x.Segments + return x.Link } return nil } -// Configuration for a single BGP AS path segment -type ResultBgpAsPathSegment struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // AS sequence is the most common type of AS_PATH, it contains the list of ASNs starting - // with the most recent ASN being added read from left to right. - // The other three AS_PATH types are used for Confederations - AS_SET is the type of - // AS_PATH attribute that summarizes routes using using the aggregate-address command, - // allowing AS_PATHs to be summarized in the update as well. - AS_CONFED_SEQ gives - // the list of ASNs in the path starting with the most recent ASN to be added reading - // left to right - AS_CONFED_SET will allow summarization of multiple AS PATHs to be - // sent in BGP Updates. - Type *ResultBgpAsPathSegment_Type_Enum `protobuf:"varint,1,opt,name=type,proto3,enum=otg.ResultBgpAsPathSegment_Type_Enum,oneof" json:"type,omitempty"` - // The AS numbers in this AS path segment. - AsNumbers []uint32 `protobuf:"varint,2,rep,packed,name=as_numbers,json=asNumbers,proto3" json:"as_numbers,omitempty"` +func (x *StatePort) GetCapture() *StatePortCapture { + if x != nil { + return x.Capture + } + return nil } -func (x *ResultBgpAsPathSegment) Reset() { - *x = ResultBgpAsPathSegment{} +// States associated with configured flows +type StateTraffic struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Description missing in models + // required = true + Choice *StateTraffic_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.StateTraffic_Choice_Enum,oneof" json:"choice,omitempty"` + // Description missing in models + FlowTransmit *StateTrafficFlowTransmit `protobuf:"bytes,2,opt,name=flow_transmit,json=flowTransmit,proto3" json:"flow_transmit,omitempty"` +} + +func (x *StateTraffic) Reset() { + *x = StateTraffic{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[301] + mi := &file_otg_proto_msgTypes[276] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *ResultBgpAsPathSegment) String() string { +func (x *StateTraffic) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ResultBgpAsPathSegment) ProtoMessage() {} +func (*StateTraffic) ProtoMessage() {} -func (x *ResultBgpAsPathSegment) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[301] +func (x *StateTraffic) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[276] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -44482,59 +44154,63 @@ func (x *ResultBgpAsPathSegment) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use ResultBgpAsPathSegment.ProtoReflect.Descriptor instead. -func (*ResultBgpAsPathSegment) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{301} +// Deprecated: Use StateTraffic.ProtoReflect.Descriptor instead. +func (*StateTraffic) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{276} } -func (x *ResultBgpAsPathSegment) GetType() ResultBgpAsPathSegment_Type_Enum { - if x != nil && x.Type != nil { - return *x.Type +func (x *StateTraffic) GetChoice() StateTraffic_Choice_Enum { + if x != nil && x.Choice != nil { + return *x.Choice } - return ResultBgpAsPathSegment_Type_unspecified + return StateTraffic_Choice_unspecified } -func (x *ResultBgpAsPathSegment) GetAsNumbers() []uint32 { +func (x *StateTraffic) GetFlowTransmit() *StateTrafficFlowTransmit { if x != nil { - return x.AsNumbers + return x.FlowTransmit } return nil } -// The request to retrieve ISIS Link State PDU (LSP) information learned by the router. -type IsisLspsStateRequest struct { +// States associated with protocols on configured resources. +type StateProtocol struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // The names of ISIS routers for which learned information is requested. An empty list - // will return results for all ISIS routers. - // - // x-constraint: - // - /components/schemas/Device.IsisRouter/properties/name - // - // x-constraint: - // - /components/schemas/Device.IsisRouter/properties/name - IsisRouterNames []string `protobuf:"bytes,1,rep,name=isis_router_names,json=isisRouterNames,proto3" json:"isis_router_names,omitempty"` + // Description missing in models + // required = true + Choice *StateProtocol_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.StateProtocol_Choice_Enum,oneof" json:"choice,omitempty"` + // Description missing in models + All *StateProtocolAll `protobuf:"bytes,2,opt,name=all,proto3" json:"all,omitempty"` + // Description missing in models + Route *StateProtocolRoute `protobuf:"bytes,3,opt,name=route,proto3" json:"route,omitempty"` + // Description missing in models + Lacp *StateProtocolLacp `protobuf:"bytes,4,opt,name=lacp,proto3" json:"lacp,omitempty"` + // Description missing in models + Bgp *StateProtocolBgp `protobuf:"bytes,5,opt,name=bgp,proto3" json:"bgp,omitempty"` + // Description missing in models + Isis *StateProtocolIsis `protobuf:"bytes,6,opt,name=isis,proto3" json:"isis,omitempty"` } -func (x *IsisLspsStateRequest) Reset() { - *x = IsisLspsStateRequest{} +func (x *StateProtocol) Reset() { + *x = StateProtocol{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[302] + mi := &file_otg_proto_msgTypes[277] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *IsisLspsStateRequest) String() string { +func (x *StateProtocol) String() string { return protoimpl.X.MessageStringOf(x) } -func (*IsisLspsStateRequest) ProtoMessage() {} +func (*StateProtocol) ProtoMessage() {} -func (x *IsisLspsStateRequest) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[302] +func (x *StateProtocol) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[277] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -44545,47 +44221,86 @@ func (x *IsisLspsStateRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use IsisLspsStateRequest.ProtoReflect.Descriptor instead. -func (*IsisLspsStateRequest) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{302} +// Deprecated: Use StateProtocol.ProtoReflect.Descriptor instead. +func (*StateProtocol) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{277} } -func (x *IsisLspsStateRequest) GetIsisRouterNames() []string { +func (x *StateProtocol) GetChoice() StateProtocol_Choice_Enum { + if x != nil && x.Choice != nil { + return *x.Choice + } + return StateProtocol_Choice_unspecified +} + +func (x *StateProtocol) GetAll() *StateProtocolAll { if x != nil { - return x.IsisRouterNames + return x.All } return nil } -// The result of ISIS LSP information that are retrieved. -type IsisLspsState struct { +func (x *StateProtocol) GetRoute() *StateProtocolRoute { + if x != nil { + return x.Route + } + return nil +} + +func (x *StateProtocol) GetLacp() *StateProtocolLacp { + if x != nil { + return x.Lacp + } + return nil +} + +func (x *StateProtocol) GetBgp() *StateProtocolBgp { + if x != nil { + return x.Bgp + } + return nil +} + +func (x *StateProtocol) GetIsis() *StateProtocolIsis { + if x != nil { + return x.Isis + } + return nil +} + +// Sets the link of configured ports. +type StatePortLink struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // The name of the ISIS Router. - IsisRouterName *string `protobuf:"bytes,1,opt,name=isis_router_name,json=isisRouterName,proto3,oneof" json:"isis_router_name,omitempty"` - // One or more LSPs that are learned by this ISIS router. - Lsps []*IsisLspState `protobuf:"bytes,2,rep,name=lsps,proto3" json:"lsps,omitempty"` + // The names of target ports. An empty or null list will target all ports. + // + // x-constraint: + // - /components/schemas/Port/properties/name + PortNames []string `protobuf:"bytes,1,rep,name=port_names,json=portNames,proto3" json:"port_names,omitempty"` + // The link state. + // required = true + State *StatePortLink_State_Enum `protobuf:"varint,2,opt,name=state,proto3,enum=otg.StatePortLink_State_Enum,oneof" json:"state,omitempty"` } -func (x *IsisLspsState) Reset() { - *x = IsisLspsState{} +func (x *StatePortLink) Reset() { + *x = StatePortLink{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[303] + mi := &file_otg_proto_msgTypes[278] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *IsisLspsState) String() string { +func (x *StatePortLink) String() string { return protoimpl.X.MessageStringOf(x) } -func (*IsisLspsState) ProtoMessage() {} +func (*StatePortLink) ProtoMessage() {} -func (x *IsisLspsState) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[303] +func (x *StatePortLink) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[278] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -44596,76 +44311,61 @@ func (x *IsisLspsState) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use IsisLspsState.ProtoReflect.Descriptor instead. -func (*IsisLspsState) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{303} +// Deprecated: Use StatePortLink.ProtoReflect.Descriptor instead. +func (*StatePortLink) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{278} } -func (x *IsisLspsState) GetIsisRouterName() string { - if x != nil && x.IsisRouterName != nil { - return *x.IsisRouterName +func (x *StatePortLink) GetPortNames() []string { + if x != nil { + return x.PortNames } - return "" + return nil } -func (x *IsisLspsState) GetLsps() []*IsisLspState { - if x != nil { - return x.Lsps +func (x *StatePortLink) GetState() StatePortLink_State_Enum { + if x != nil && x.State != nil { + return *x.State } - return nil + return StatePortLink_State_unspecified } -// ISIS LSP. -type IsisLspState struct { +// Sets the capture state of configured ports +type StatePortCapture struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // LSP ID in the format, e.g. '640000000001-00-00'. LSP ID consists of the System ID - // of a neighbor, the Pseudonode ID, and the LSP number. The last two bytes represent - // Pseudonode ID and LSP number respectively. A pseudonode is a logical representation - // of the LAN which is generated by a Designated Intermediate System (DIS) on a LAN - // segment. If one LSP exceeds the maximum LSP size then it is sent in another LSP with - // the LSP number incremented by one. A router's learned LSP gets refreshed by 'remaining_lifetime'. - // Then the sequence number is incremented by 1. + // The names of ports to which the capture state will be applied to. If the list of + // port_names is empty or null the state will be applied to all configured ports. + // If the list is not empty any port that is not included in the list of port_names + // MUST be ignored and not included in the state change. + // + // x-constraint: + // - /components/schemas/Port/properties/name + PortNames []string `protobuf:"bytes,1,rep,name=port_names,json=portNames,proto3" json:"port_names,omitempty"` + // The capture state. // required = true - LspId *string `protobuf:"bytes,1,opt,name=lsp_id,json=lspId,proto3,oneof" json:"lsp_id,omitempty"` - // Link State PDU type. - PduType *IsisLspState_PduType_Enum `protobuf:"varint,2,opt,name=pdu_type,json=pduType,proto3,enum=otg.IsisLspState_PduType_Enum,oneof" json:"pdu_type,omitempty"` - // Remaining lifetime in seconds before LSP expires. - RemainingLifetime *uint32 `protobuf:"varint,3,opt,name=remaining_lifetime,json=remainingLifetime,proto3,oneof" json:"remaining_lifetime,omitempty"` - // Sequence number of the LSP. - SequenceNumber *uint64 `protobuf:"varint,4,opt,name=sequence_number,json=sequenceNumber,proto3,oneof" json:"sequence_number,omitempty"` - // Total length of the LSP. - PduLength *uint32 `protobuf:"varint,5,opt,name=pdu_length,json=pduLength,proto3,oneof" json:"pdu_length,omitempty"` - // LSP Type-Block flags. - Flags *IsisLspFlags `protobuf:"bytes,6,opt,name=flags,proto3" json:"flags,omitempty"` - // IS Type - bits 1 and 2 indicate the type of Intermediate System. - // 1 - ( i.e. bit 1 set) Level 1 Intermediate system. - // 2 - Unused value. - // 3 - (i.e. bits 1 and 2 set) Level 2 Intermediate system. - IsType *uint32 `protobuf:"varint,7,opt,name=is_type,json=isType,proto3,oneof" json:"is_type,omitempty"` - // It refers to Link State PDU State TLVs container. - Tlvs *IsisLspTlvs `protobuf:"bytes,8,opt,name=tlvs,proto3" json:"tlvs,omitempty"` + State *StatePortCapture_State_Enum `protobuf:"varint,2,opt,name=state,proto3,enum=otg.StatePortCapture_State_Enum,oneof" json:"state,omitempty"` } -func (x *IsisLspState) Reset() { - *x = IsisLspState{} +func (x *StatePortCapture) Reset() { + *x = StatePortCapture{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[304] + mi := &file_otg_proto_msgTypes[279] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *IsisLspState) String() string { +func (x *StatePortCapture) String() string { return protoimpl.X.MessageStringOf(x) } -func (*IsisLspState) ProtoMessage() {} +func (*StatePortCapture) ProtoMessage() {} -func (x *IsisLspState) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[304] +func (x *StatePortCapture) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[279] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -44676,106 +44376,72 @@ func (x *IsisLspState) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use IsisLspState.ProtoReflect.Descriptor instead. -func (*IsisLspState) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{304} -} - -func (x *IsisLspState) GetLspId() string { - if x != nil && x.LspId != nil { - return *x.LspId - } - return "" -} - -func (x *IsisLspState) GetPduType() IsisLspState_PduType_Enum { - if x != nil && x.PduType != nil { - return *x.PduType - } - return IsisLspState_PduType_unspecified -} - -func (x *IsisLspState) GetRemainingLifetime() uint32 { - if x != nil && x.RemainingLifetime != nil { - return *x.RemainingLifetime - } - return 0 -} - -func (x *IsisLspState) GetSequenceNumber() uint64 { - if x != nil && x.SequenceNumber != nil { - return *x.SequenceNumber - } - return 0 -} - -func (x *IsisLspState) GetPduLength() uint32 { - if x != nil && x.PduLength != nil { - return *x.PduLength - } - return 0 +// Deprecated: Use StatePortCapture.ProtoReflect.Descriptor instead. +func (*StatePortCapture) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{279} } -func (x *IsisLspState) GetFlags() *IsisLspFlags { +func (x *StatePortCapture) GetPortNames() []string { if x != nil { - return x.Flags + return x.PortNames } return nil } -func (x *IsisLspState) GetIsType() uint32 { - if x != nil && x.IsType != nil { - return *x.IsType - } - return 0 -} - -func (x *IsisLspState) GetTlvs() *IsisLspTlvs { - if x != nil { - return x.Tlvs +func (x *StatePortCapture) GetState() StatePortCapture_State_Enum { + if x != nil && x.State != nil { + return *x.State } - return nil + return StatePortCapture_State_unspecified } -// This contains the list of TLVs present in one LSP. -type IsisLspTlvs struct { +// Provides state control of flow transmission. +type StateTrafficFlowTransmit struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Array of Hostname TLVs ( type 137) present in this LSP. - HostnameTlvs []*IsisLspHostname `protobuf:"bytes,1,rep,name=hostname_tlvs,json=hostnameTlvs,proto3" json:"hostname_tlvs,omitempty"` - // Array of IS-Reachability TLVs (type 2) present in this LSP. - IsReachabilityTlvs []*IsisLspIsReachabilityTlv `protobuf:"bytes,2,rep,name=is_reachability_tlvs,json=isReachabilityTlvs,proto3" json:"is_reachability_tlvs,omitempty"` - // Array of Extended IS-Reachability TLVs (type 22) present in this LSP. - ExtendedIsReachabilityTlvs []*IsisLspExtendedIsReachabilityTlv `protobuf:"bytes,3,rep,name=extended_is_reachability_tlvs,json=extendedIsReachabilityTlvs,proto3" json:"extended_is_reachability_tlvs,omitempty"` - // Array of IPv4 Internal Reachability TLVs (type 128) present in this LSP. - Ipv4InternalReachabilityTlvs []*IsisLspIpv4InternalReachabilityTlv `protobuf:"bytes,4,rep,name=ipv4_internal_reachability_tlvs,json=ipv4InternalReachabilityTlvs,proto3" json:"ipv4_internal_reachability_tlvs,omitempty"` - // Array of IPv4 External Reachability TLVs (type 130) present in this LSP. - Ipv4ExternalReachabilityTlvs []*IsisLspIpv4ExternalReachabilityTlv `protobuf:"bytes,5,rep,name=ipv4_external_reachability_tlvs,json=ipv4ExternalReachabilityTlvs,proto3" json:"ipv4_external_reachability_tlvs,omitempty"` - // Array of IPv4 Extended Reachability TLVs (type 135) present in this LSP. - ExtendedIpv4ReachabilityTlvs []*IsisLspExtendedIpv4ReachabilityTlv `protobuf:"bytes,6,rep,name=extended_ipv4_reachability_tlvs,json=extendedIpv4ReachabilityTlvs,proto3" json:"extended_ipv4_reachability_tlvs,omitempty"` - // Array of IPv6 Reachability TLVs (type 236) present in this LSP. - Ipv6ReachabilityTlvs []*IsisLspIpv6ReachabilityTlv `protobuf:"bytes,7,rep,name=ipv6_reachability_tlvs,json=ipv6ReachabilityTlvs,proto3" json:"ipv6_reachability_tlvs,omitempty"` + // The names of flows to which the transmit state will be applied to. If the list of + // flow_names is empty or null the state will be applied to all configured flows. + // If the list is not empty any flow that is not included in the list of flow_names + // MUST be ignored and not included in the state change. + // + // x-constraint: + // - /components/schemas/Flow/properties/name + FlowNames []string `protobuf:"bytes,1,rep,name=flow_names,json=flowNames,proto3" json:"flow_names,omitempty"` + // The transmit state. + // If the value of the state property is 'start' then all flows defined by the 'flow_names' + // property will be started and the metric counters MUST be cleared prior to starting + // the flow(s). + // If the value of the state property is 'stop' then all flows defined by the 'flow_names' + // property will be stopped and the metric counters MUST NOT be cleared. + // If the value of the state property is 'pause' then all flows defined by the 'flow_names' + // property will be paused and the metric counters MUST NOT be cleared. + // If the value of the state property is 'resume' then any paused flows defined by the + // 'flow_names' property will start transmit at the point at which they were paused. + // Any flow that is stopped will start transmit at the beginning of the flow. The flow(s) + // MUST NOT have their metric counters cleared. + // required = true + State *StateTrafficFlowTransmit_State_Enum `protobuf:"varint,2,opt,name=state,proto3,enum=otg.StateTrafficFlowTransmit_State_Enum,oneof" json:"state,omitempty"` } -func (x *IsisLspTlvs) Reset() { - *x = IsisLspTlvs{} +func (x *StateTrafficFlowTransmit) Reset() { + *x = StateTrafficFlowTransmit{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[305] + mi := &file_otg_proto_msgTypes[280] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *IsisLspTlvs) String() string { +func (x *StateTrafficFlowTransmit) String() string { return protoimpl.X.MessageStringOf(x) } -func (*IsisLspTlvs) ProtoMessage() {} +func (*StateTrafficFlowTransmit) ProtoMessage() {} -func (x *IsisLspTlvs) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[305] +func (x *StateTrafficFlowTransmit) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[280] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -44786,87 +44452,56 @@ func (x *IsisLspTlvs) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use IsisLspTlvs.ProtoReflect.Descriptor instead. -func (*IsisLspTlvs) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{305} -} - -func (x *IsisLspTlvs) GetHostnameTlvs() []*IsisLspHostname { - if x != nil { - return x.HostnameTlvs - } - return nil -} - -func (x *IsisLspTlvs) GetIsReachabilityTlvs() []*IsisLspIsReachabilityTlv { - if x != nil { - return x.IsReachabilityTlvs - } - return nil -} - -func (x *IsisLspTlvs) GetExtendedIsReachabilityTlvs() []*IsisLspExtendedIsReachabilityTlv { - if x != nil { - return x.ExtendedIsReachabilityTlvs - } - return nil -} - -func (x *IsisLspTlvs) GetIpv4InternalReachabilityTlvs() []*IsisLspIpv4InternalReachabilityTlv { - if x != nil { - return x.Ipv4InternalReachabilityTlvs - } - return nil -} - -func (x *IsisLspTlvs) GetIpv4ExternalReachabilityTlvs() []*IsisLspIpv4ExternalReachabilityTlv { - if x != nil { - return x.Ipv4ExternalReachabilityTlvs - } - return nil +// Deprecated: Use StateTrafficFlowTransmit.ProtoReflect.Descriptor instead. +func (*StateTrafficFlowTransmit) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{280} } -func (x *IsisLspTlvs) GetExtendedIpv4ReachabilityTlvs() []*IsisLspExtendedIpv4ReachabilityTlv { +func (x *StateTrafficFlowTransmit) GetFlowNames() []string { if x != nil { - return x.ExtendedIpv4ReachabilityTlvs + return x.FlowNames } return nil } -func (x *IsisLspTlvs) GetIpv6ReachabilityTlvs() []*IsisLspIpv6ReachabilityTlv { - if x != nil { - return x.Ipv6ReachabilityTlvs +func (x *StateTrafficFlowTransmit) GetState() StateTrafficFlowTransmit_State_Enum { + if x != nil && x.State != nil { + return *x.State } - return nil + return StateTrafficFlowTransmit_State_unspecified } -// It contains Hostname for the TLV 137. -type IsisLspHostname struct { +// Sets all configured protocols to `start` or `stop` state. +// Setting protocol state to `start` shall be a no-op if preceding `set_config` API +// call was made with `config.options.protocol_options.auto_start_all` set to `true` +// or if all the configured protocols are already started. +type StateProtocolAll struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Hostname for an ISIS router. - Hostname *string `protobuf:"bytes,1,opt,name=hostname,proto3,oneof" json:"hostname,omitempty"` + // Protocol states + // required = true + State *StateProtocolAll_State_Enum `protobuf:"varint,1,opt,name=state,proto3,enum=otg.StateProtocolAll_State_Enum,oneof" json:"state,omitempty"` } -func (x *IsisLspHostname) Reset() { - *x = IsisLspHostname{} +func (x *StateProtocolAll) Reset() { + *x = StateProtocolAll{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[306] + mi := &file_otg_proto_msgTypes[281] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *IsisLspHostname) String() string { +func (x *StateProtocolAll) String() string { return protoimpl.X.MessageStringOf(x) } -func (*IsisLspHostname) ProtoMessage() {} +func (*StateProtocolAll) ProtoMessage() {} -func (x *IsisLspHostname) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[306] +func (x *StateProtocolAll) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[281] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -44877,59 +44512,55 @@ func (x *IsisLspHostname) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use IsisLspHostname.ProtoReflect.Descriptor instead. -func (*IsisLspHostname) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{306} +// Deprecated: Use StateProtocolAll.ProtoReflect.Descriptor instead. +func (*StateProtocolAll) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{281} } -func (x *IsisLspHostname) GetHostname() string { - if x != nil && x.Hostname != nil { - return *x.Hostname +func (x *StateProtocolAll) GetState() StateProtocolAll_State_Enum { + if x != nil && x.State != nil { + return *x.State } - return "" + return StateProtocolAll_State_unspecified } -// LSP Type flags. -type IsisLspFlags struct { +// Sets the state of configured routes +type StateProtocolRoute struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // When set, the originator supports partition repair. - PartitionRepair *bool `protobuf:"varint,1,opt,name=partition_repair,json=partitionRepair,proto3,oneof" json:"partition_repair,omitempty"` - // When set, the originator is attached to another area using the referred metric. - AttachedError *bool `protobuf:"varint,2,opt,name=attached_error,json=attachedError,proto3,oneof" json:"attached_error,omitempty"` - // When set, the originator is attached to another - // area using the referred metric. - AttachedExpense *bool `protobuf:"varint,3,opt,name=attached_expense,json=attachedExpense,proto3,oneof" json:"attached_expense,omitempty"` - // Delay Metric - when set, the originator is attached to another - // area using the referred metric. - AttachedDelay *bool `protobuf:"varint,4,opt,name=attached_delay,json=attachedDelay,proto3,oneof" json:"attached_delay,omitempty"` - // Default Metric - when set, the originator is attached to another - // area using the referred metric. - AttachedDefault *bool `protobuf:"varint,5,opt,name=attached_default,json=attachedDefault,proto3,oneof" json:"attached_default,omitempty"` - // Overload bit - when set, the originator is overloaded, and must - // be avoided in path calculation. - Overload *bool `protobuf:"varint,6,opt,name=overload,proto3,oneof" json:"overload,omitempty"` + // The names of device route objects to control. If no names are specified then all + // route objects that match the x-constraint will be affected. + // + // x-constraint: + // - /components/schemas/Bgp.V4RouteRange/properties/name + // - /components/schemas/Bgp.V6RouteRange/properties/name + // - /components/schemas/Isis.V4RouteRange/properties/name + // - /components/schemas/Isis.V6RouteRange/properties/name + Names []string `protobuf:"bytes,1,rep,name=names,proto3" json:"names,omitempty"` + // Route states + // required = true + State *StateProtocolRoute_State_Enum `protobuf:"varint,2,opt,name=state,proto3,enum=otg.StateProtocolRoute_State_Enum,oneof" json:"state,omitempty"` } -func (x *IsisLspFlags) Reset() { - *x = IsisLspFlags{} +func (x *StateProtocolRoute) Reset() { + *x = StateProtocolRoute{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[307] + mi := &file_otg_proto_msgTypes[282] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *IsisLspFlags) String() string { +func (x *StateProtocolRoute) String() string { return protoimpl.X.MessageStringOf(x) } -func (*IsisLspFlags) ProtoMessage() {} +func (*StateProtocolRoute) ProtoMessage() {} -func (x *IsisLspFlags) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[307] +func (x *StateProtocolRoute) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[282] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -44940,81 +44571,57 @@ func (x *IsisLspFlags) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use IsisLspFlags.ProtoReflect.Descriptor instead. -func (*IsisLspFlags) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{307} +// Deprecated: Use StateProtocolRoute.ProtoReflect.Descriptor instead. +func (*StateProtocolRoute) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{282} } -func (x *IsisLspFlags) GetPartitionRepair() bool { - if x != nil && x.PartitionRepair != nil { - return *x.PartitionRepair +func (x *StateProtocolRoute) GetNames() []string { + if x != nil { + return x.Names } - return false -} - -func (x *IsisLspFlags) GetAttachedError() bool { - if x != nil && x.AttachedError != nil { - return *x.AttachedError - } - return false -} - -func (x *IsisLspFlags) GetAttachedExpense() bool { - if x != nil && x.AttachedExpense != nil { - return *x.AttachedExpense - } - return false -} - -func (x *IsisLspFlags) GetAttachedDelay() bool { - if x != nil && x.AttachedDelay != nil { - return *x.AttachedDelay - } - return false -} - -func (x *IsisLspFlags) GetAttachedDefault() bool { - if x != nil && x.AttachedDefault != nil { - return *x.AttachedDefault - } - return false + return nil } -func (x *IsisLspFlags) GetOverload() bool { - if x != nil && x.Overload != nil { - return *x.Overload +func (x *StateProtocolRoute) GetState() StateProtocolRoute_State_Enum { + if x != nil && x.State != nil { + return *x.State } - return false + return StateProtocolRoute_State_unspecified } -// This container describes list of ISIS neighbors and attributes in IS-Reachability -// TLV (type 2). -type IsisLspIsReachabilityTlv struct { +// Sets state of configured LACP +type StateProtocolLacp struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // This container describes Intermediate System (IS) neighbors. - Neighbors []*IsisLspneighbor `protobuf:"bytes,1,rep,name=neighbors,proto3" json:"neighbors,omitempty"` + // Description missing in models + // required = true + Choice *StateProtocolLacp_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.StateProtocolLacp_Choice_Enum,oneof" json:"choice,omitempty"` + // Description missing in models + Admin *StateProtocolLacpAdmin `protobuf:"bytes,2,opt,name=admin,proto3" json:"admin,omitempty"` + // Description missing in models + MemberPorts *StateProtocolLacpMemberPorts `protobuf:"bytes,3,opt,name=member_ports,json=memberPorts,proto3" json:"member_ports,omitempty"` } -func (x *IsisLspIsReachabilityTlv) Reset() { - *x = IsisLspIsReachabilityTlv{} +func (x *StateProtocolLacp) Reset() { + *x = StateProtocolLacp{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[308] + mi := &file_otg_proto_msgTypes[283] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *IsisLspIsReachabilityTlv) String() string { +func (x *StateProtocolLacp) String() string { return protoimpl.X.MessageStringOf(x) } -func (*IsisLspIsReachabilityTlv) ProtoMessage() {} +func (*StateProtocolLacp) ProtoMessage() {} -func (x *IsisLspIsReachabilityTlv) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[308] +func (x *StateProtocolLacp) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[283] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -45025,46 +44632,68 @@ func (x *IsisLspIsReachabilityTlv) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use IsisLspIsReachabilityTlv.ProtoReflect.Descriptor instead. -func (*IsisLspIsReachabilityTlv) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{308} +// Deprecated: Use StateProtocolLacp.ProtoReflect.Descriptor instead. +func (*StateProtocolLacp) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{283} } -func (x *IsisLspIsReachabilityTlv) GetNeighbors() []*IsisLspneighbor { +func (x *StateProtocolLacp) GetChoice() StateProtocolLacp_Choice_Enum { + if x != nil && x.Choice != nil { + return *x.Choice + } + return StateProtocolLacp_Choice_unspecified +} + +func (x *StateProtocolLacp) GetAdmin() *StateProtocolLacpAdmin { if x != nil { - return x.Neighbors + return x.Admin } return nil } -// This is list of ISIS neighbors and attributes in Extended-IS-Reachability TLV (type -// 22). -type IsisLspExtendedIsReachabilityTlv struct { +func (x *StateProtocolLacp) GetMemberPorts() *StateProtocolLacpMemberPorts { + if x != nil { + return x.MemberPorts + } + return nil +} + +// Sets admin state of LACP configured on LAG members +type StateProtocolLacpAdmin struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // This container describes IS neighbors. - Neighbors []*IsisLspneighbor `protobuf:"bytes,1,rep,name=neighbors,proto3" json:"neighbors,omitempty"` + // The names of LAG members (ports) for which the state has to be applied. An empty + // or null list will control all LAG members. + // + // x-constraint: + // - /components/schemas/Port/properties/name + LagMemberNames []string `protobuf:"bytes,1,rep,name=lag_member_names,json=lagMemberNames,proto3" json:"lag_member_names,omitempty"` + // The LACP Member admin state. 'up' will send LACPDUs with 'sync' flag set on selected + // member ports. 'down' will send LACPDUs with 'sync' flag unset on selected member + // ports. + // required = true + State *StateProtocolLacpAdmin_State_Enum `protobuf:"varint,2,opt,name=state,proto3,enum=otg.StateProtocolLacpAdmin_State_Enum,oneof" json:"state,omitempty"` } -func (x *IsisLspExtendedIsReachabilityTlv) Reset() { - *x = IsisLspExtendedIsReachabilityTlv{} +func (x *StateProtocolLacpAdmin) Reset() { + *x = StateProtocolLacpAdmin{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[309] + mi := &file_otg_proto_msgTypes[284] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *IsisLspExtendedIsReachabilityTlv) String() string { +func (x *StateProtocolLacpAdmin) String() string { return protoimpl.X.MessageStringOf(x) } -func (*IsisLspExtendedIsReachabilityTlv) ProtoMessage() {} +func (*StateProtocolLacpAdmin) ProtoMessage() {} -func (x *IsisLspExtendedIsReachabilityTlv) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[309] +func (x *StateProtocolLacpAdmin) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[284] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -45075,45 +44704,59 @@ func (x *IsisLspExtendedIsReachabilityTlv) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use IsisLspExtendedIsReachabilityTlv.ProtoReflect.Descriptor instead. -func (*IsisLspExtendedIsReachabilityTlv) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{309} +// Deprecated: Use StateProtocolLacpAdmin.ProtoReflect.Descriptor instead. +func (*StateProtocolLacpAdmin) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{284} } -func (x *IsisLspExtendedIsReachabilityTlv) GetNeighbors() []*IsisLspneighbor { +func (x *StateProtocolLacpAdmin) GetLagMemberNames() []string { if x != nil { - return x.Neighbors + return x.LagMemberNames } return nil } -// This contains IS neighbors. -type IsisLspneighbor struct { +func (x *StateProtocolLacpAdmin) GetState() StateProtocolLacpAdmin_State_Enum { + if x != nil && x.State != nil { + return *x.State + } + return StateProtocolLacpAdmin_State_unspecified +} + +// Sets state of LACP member ports configured on LAG. +type StateProtocolLacpMemberPorts struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // The System ID for this emulated ISIS router, e.g. 640100010000. - SystemId *string `protobuf:"bytes,1,opt,name=system_id,json=systemId,proto3,oneof" json:"system_id,omitempty"` + // The names of LAG members (ports) for which the state has to be applied. An empty + // or null list will control all LAG members. + // + // x-constraint: + // - /components/schemas/Port/properties/name + LagMemberNames []string `protobuf:"bytes,1,rep,name=lag_member_names,json=lagMemberNames,proto3" json:"lag_member_names,omitempty"` + // The desired LACP member port state. + // required = true + State *StateProtocolLacpMemberPorts_State_Enum `protobuf:"varint,2,opt,name=state,proto3,enum=otg.StateProtocolLacpMemberPorts_State_Enum,oneof" json:"state,omitempty"` } -func (x *IsisLspneighbor) Reset() { - *x = IsisLspneighbor{} +func (x *StateProtocolLacpMemberPorts) Reset() { + *x = StateProtocolLacpMemberPorts{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[310] + mi := &file_otg_proto_msgTypes[285] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *IsisLspneighbor) String() string { +func (x *StateProtocolLacpMemberPorts) String() string { return protoimpl.X.MessageStringOf(x) } -func (*IsisLspneighbor) ProtoMessage() {} +func (*StateProtocolLacpMemberPorts) ProtoMessage() {} -func (x *IsisLspneighbor) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[310] +func (x *StateProtocolLacpMemberPorts) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[285] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -45124,47 +44767,55 @@ func (x *IsisLspneighbor) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use IsisLspneighbor.ProtoReflect.Descriptor instead. -func (*IsisLspneighbor) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{310} +// Deprecated: Use StateProtocolLacpMemberPorts.ProtoReflect.Descriptor instead. +func (*StateProtocolLacpMemberPorts) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{285} } -func (x *IsisLspneighbor) GetSystemId() string { - if x != nil && x.SystemId != nil { - return *x.SystemId +func (x *StateProtocolLacpMemberPorts) GetLagMemberNames() []string { + if x != nil { + return x.LagMemberNames } - return "" + return nil } -// This container defines list of IPv4 internal reachability information in one IPv4 -// internal reachability TLV. -// This is advertised when the origin-type is set 'internal' in route range configurations. -type IsisLspIpv4InternalReachabilityTlv struct { +func (x *StateProtocolLacpMemberPorts) GetState() StateProtocolLacpMemberPorts_State_Enum { + if x != nil && x.State != nil { + return *x.State + } + return StateProtocolLacpMemberPorts_State_unspecified +} + +// Sets state of configured BGP peers. +type StateProtocolBgp struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Describes list of IPv4 prefixes in this TLV. - Prefixes []*IsisLspV4Prefix `protobuf:"bytes,1,rep,name=prefixes,proto3" json:"prefixes,omitempty"` + // Description missing in models + // required = true + Choice *StateProtocolBgp_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.StateProtocolBgp_Choice_Enum,oneof" json:"choice,omitempty"` + // Description missing in models + Peers *StateProtocolBgpPeers `protobuf:"bytes,2,opt,name=peers,proto3" json:"peers,omitempty"` } -func (x *IsisLspIpv4InternalReachabilityTlv) Reset() { - *x = IsisLspIpv4InternalReachabilityTlv{} +func (x *StateProtocolBgp) Reset() { + *x = StateProtocolBgp{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[311] + mi := &file_otg_proto_msgTypes[286] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *IsisLspIpv4InternalReachabilityTlv) String() string { +func (x *StateProtocolBgp) String() string { return protoimpl.X.MessageStringOf(x) } -func (*IsisLspIpv4InternalReachabilityTlv) ProtoMessage() {} +func (*StateProtocolBgp) ProtoMessage() {} -func (x *IsisLspIpv4InternalReachabilityTlv) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[311] +func (x *StateProtocolBgp) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[286] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -45175,47 +44826,63 @@ func (x *IsisLspIpv4InternalReachabilityTlv) ProtoReflect() protoreflect.Message return mi.MessageOf(x) } -// Deprecated: Use IsisLspIpv4InternalReachabilityTlv.ProtoReflect.Descriptor instead. -func (*IsisLspIpv4InternalReachabilityTlv) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{311} +// Deprecated: Use StateProtocolBgp.ProtoReflect.Descriptor instead. +func (*StateProtocolBgp) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{286} } -func (x *IsisLspIpv4InternalReachabilityTlv) GetPrefixes() []*IsisLspV4Prefix { +func (x *StateProtocolBgp) GetChoice() StateProtocolBgp_Choice_Enum { + if x != nil && x.Choice != nil { + return *x.Choice + } + return StateProtocolBgp_Choice_unspecified +} + +func (x *StateProtocolBgp) GetPeers() *StateProtocolBgpPeers { if x != nil { - return x.Prefixes + return x.Peers } return nil } -// This container defines list of IPv4 external reachability information in one IPv4 -// external reachability TLV. -// This is advertised when the origin-type is set 'external' in route range configurations. -type IsisLspIpv4ExternalReachabilityTlv struct { +// Sets state of configured BGP peers. +type StateProtocolBgpPeers struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Describes list of IPv4 prefixes in this TLV.. - Prefixes []*IsisLspV4Prefix `protobuf:"bytes,1,rep,name=prefixes,proto3" json:"prefixes,omitempty"` + // The names of BGP peers for which the state has to be applied. An empty or null list + // will control all BGP peers. + // + // x-constraint: + // - /components/schemas/Bgp.V4Peer/properties/name + // - /components/schemas/Bgp.V6Peer/properties/name + PeerNames []string `protobuf:"bytes,1,rep,name=peer_names,json=peerNames,proto3" json:"peer_names,omitempty"` + // The desired state of BGP peer. If the desired state is 'up', underlying IP interface(s) + // would be brought up automatically (if not already up), would attempt to bring up + // the BGP session(s) and advertise route(s), if configured. If the desired state is + // 'down', BGP session(s) would be brought down. + // required = true + State *StateProtocolBgpPeers_State_Enum `protobuf:"varint,2,opt,name=state,proto3,enum=otg.StateProtocolBgpPeers_State_Enum,oneof" json:"state,omitempty"` } -func (x *IsisLspIpv4ExternalReachabilityTlv) Reset() { - *x = IsisLspIpv4ExternalReachabilityTlv{} +func (x *StateProtocolBgpPeers) Reset() { + *x = StateProtocolBgpPeers{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[312] + mi := &file_otg_proto_msgTypes[287] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *IsisLspIpv4ExternalReachabilityTlv) String() string { +func (x *StateProtocolBgpPeers) String() string { return protoimpl.X.MessageStringOf(x) } -func (*IsisLspIpv4ExternalReachabilityTlv) ProtoMessage() {} +func (*StateProtocolBgpPeers) ProtoMessage() {} -func (x *IsisLspIpv4ExternalReachabilityTlv) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[312] +func (x *StateProtocolBgpPeers) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[287] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -45226,61 +44893,55 @@ func (x *IsisLspIpv4ExternalReachabilityTlv) ProtoReflect() protoreflect.Message return mi.MessageOf(x) } -// Deprecated: Use IsisLspIpv4ExternalReachabilityTlv.ProtoReflect.Descriptor instead. -func (*IsisLspIpv4ExternalReachabilityTlv) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{312} +// Deprecated: Use StateProtocolBgpPeers.ProtoReflect.Descriptor instead. +func (*StateProtocolBgpPeers) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{287} } -func (x *IsisLspIpv4ExternalReachabilityTlv) GetPrefixes() []*IsisLspV4Prefix { +func (x *StateProtocolBgpPeers) GetPeerNames() []string { if x != nil { - return x.Prefixes + return x.PeerNames } return nil } -// This group defines attributes of an IPv4 standard prefix. -type IsisLspV4Prefix struct { +func (x *StateProtocolBgpPeers) GetState() StateProtocolBgpPeers_State_Enum { + if x != nil && x.State != nil { + return *x.State + } + return StateProtocolBgpPeers_State_unspecified +} + +// Sets state of configured ISIS routers. +type StateProtocolIsis struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // An IPv4 unicast prefix reachable via the originator of this LSP. - Ipv4Address *string `protobuf:"bytes,1,opt,name=ipv4_address,json=ipv4Address,proto3,oneof" json:"ipv4_address,omitempty"` - // The length of the IPv4 prefix. - PrefixLength *uint32 `protobuf:"varint,2,opt,name=prefix_length,json=prefixLength,proto3,oneof" json:"prefix_length,omitempty"` - // Up (0)-used when a prefix is initially advertised within the ISIS L3 hierarchy, - // and for all other prefixes in L1 and L2 LSPs. (default) - // Down (1)-used when an L1/L2 router advertises L2 prefixes in L1 LSPs. - // The prefixes are being advertised from a higher level (L2) down to a lower level - // (L1). - RedistributionType *IsisLspV4Prefix_RedistributionType_Enum `protobuf:"varint,3,opt,name=redistribution_type,json=redistributionType,proto3,enum=otg.IsisLspV4Prefix_RedistributionType_Enum,oneof" json:"redistribution_type,omitempty"` - // ISIS default metric value. - DefaultMetric *uint32 `protobuf:"varint,4,opt,name=default_metric,json=defaultMetric,proto3,oneof" json:"default_metric,omitempty"` - // The origin of the advertised route-internal or external to the ISIS area. Options - // include the following: - // Internal-for intra-area routes, through Level 1 LSPs. - // External-for inter-area routes redistributed within L1, through Level - // 1 LSPs. - OriginType *IsisLspV4Prefix_OriginType_Enum `protobuf:"varint,5,opt,name=origin_type,json=originType,proto3,enum=otg.IsisLspV4Prefix_OriginType_Enum,oneof" json:"origin_type,omitempty"` + // Description missing in models + // required = true + Choice *StateProtocolIsis_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.StateProtocolIsis_Choice_Enum,oneof" json:"choice,omitempty"` + // Description missing in models + Routers *StateProtocolIsisRouters `protobuf:"bytes,2,opt,name=routers,proto3" json:"routers,omitempty"` } -func (x *IsisLspV4Prefix) Reset() { - *x = IsisLspV4Prefix{} +func (x *StateProtocolIsis) Reset() { + *x = StateProtocolIsis{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[313] + mi := &file_otg_proto_msgTypes[288] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *IsisLspV4Prefix) String() string { +func (x *StateProtocolIsis) String() string { return protoimpl.X.MessageStringOf(x) } -func (*IsisLspV4Prefix) ProtoMessage() {} +func (*StateProtocolIsis) ProtoMessage() {} -func (x *IsisLspV4Prefix) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[313] +func (x *StateProtocolIsis) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[288] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -45291,75 +44952,62 @@ func (x *IsisLspV4Prefix) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use IsisLspV4Prefix.ProtoReflect.Descriptor instead. -func (*IsisLspV4Prefix) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{313} -} - -func (x *IsisLspV4Prefix) GetIpv4Address() string { - if x != nil && x.Ipv4Address != nil { - return *x.Ipv4Address - } - return "" -} - -func (x *IsisLspV4Prefix) GetPrefixLength() uint32 { - if x != nil && x.PrefixLength != nil { - return *x.PrefixLength - } - return 0 -} - -func (x *IsisLspV4Prefix) GetRedistributionType() IsisLspV4Prefix_RedistributionType_Enum { - if x != nil && x.RedistributionType != nil { - return *x.RedistributionType - } - return IsisLspV4Prefix_RedistributionType_unspecified +// Deprecated: Use StateProtocolIsis.ProtoReflect.Descriptor instead. +func (*StateProtocolIsis) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{288} } -func (x *IsisLspV4Prefix) GetDefaultMetric() uint32 { - if x != nil && x.DefaultMetric != nil { - return *x.DefaultMetric +func (x *StateProtocolIsis) GetChoice() StateProtocolIsis_Choice_Enum { + if x != nil && x.Choice != nil { + return *x.Choice } - return 0 + return StateProtocolIsis_Choice_unspecified } -func (x *IsisLspV4Prefix) GetOriginType() IsisLspV4Prefix_OriginType_Enum { - if x != nil && x.OriginType != nil { - return *x.OriginType +func (x *StateProtocolIsis) GetRouters() *StateProtocolIsisRouters { + if x != nil { + return x.Routers } - return IsisLspV4Prefix_OriginType_unspecified + return nil } -// This container defines list of IPv4 extended reachability information in one Extended -// IPv4 External Reachability TLV. -// It is advertised when the 'wide metric' is enabled. -type IsisLspExtendedIpv4ReachabilityTlv struct { +// Sets state of configured ISIS routers. +type StateProtocolIsisRouters struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // IPv4 prefix contained within extended reachability TLVs. - Prefixes []*IsisLspExtendedV4Prefix `protobuf:"bytes,1,rep,name=prefixes,proto3" json:"prefixes,omitempty"` + // The names of ISIS routers for which the state has to be applied. An empty or null + // list will control all ISIS routers. + // + // x-constraint: + // - /components/schemas/Device.IsisRouter/properties/name + RouterNames []string `protobuf:"bytes,1,rep,name=router_names,json=routerNames,proto3" json:"router_names,omitempty"` + // The desired state of ISIS router. If the desired state is 'up', would attempt to + // bring up the ISIS session(s) with respective peer(s) and advertise route(s), if configured. + // If the desired state is 'down', would bring down ISIS session(s) with respective + // peer(s). + // required = true + State *StateProtocolIsisRouters_State_Enum `protobuf:"varint,2,opt,name=state,proto3,enum=otg.StateProtocolIsisRouters_State_Enum,oneof" json:"state,omitempty"` } -func (x *IsisLspExtendedIpv4ReachabilityTlv) Reset() { - *x = IsisLspExtendedIpv4ReachabilityTlv{} +func (x *StateProtocolIsisRouters) Reset() { + *x = StateProtocolIsisRouters{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[314] + mi := &file_otg_proto_msgTypes[289] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *IsisLspExtendedIpv4ReachabilityTlv) String() string { +func (x *StateProtocolIsisRouters) String() string { return protoimpl.X.MessageStringOf(x) } -func (*IsisLspExtendedIpv4ReachabilityTlv) ProtoMessage() {} +func (*StateProtocolIsisRouters) ProtoMessage() {} -func (x *IsisLspExtendedIpv4ReachabilityTlv) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[314] +func (x *StateProtocolIsisRouters) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[289] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -45370,57 +45018,55 @@ func (x *IsisLspExtendedIpv4ReachabilityTlv) ProtoReflect() protoreflect.Message return mi.MessageOf(x) } -// Deprecated: Use IsisLspExtendedIpv4ReachabilityTlv.ProtoReflect.Descriptor instead. -func (*IsisLspExtendedIpv4ReachabilityTlv) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{314} +// Deprecated: Use StateProtocolIsisRouters.ProtoReflect.Descriptor instead. +func (*StateProtocolIsisRouters) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{289} } -func (x *IsisLspExtendedIpv4ReachabilityTlv) GetPrefixes() []*IsisLspExtendedV4Prefix { +func (x *StateProtocolIsisRouters) GetRouterNames() []string { if x != nil { - return x.Prefixes + return x.RouterNames } return nil } -// This group defines attributes of an IPv4 standard prefix. -type IsisLspExtendedV4Prefix struct { +func (x *StateProtocolIsisRouters) GetState() StateProtocolIsisRouters_State_Enum { + if x != nil && x.State != nil { + return *x.State + } + return StateProtocolIsisRouters_State_unspecified +} + +// Request for triggering action against configured resources. +type ControlAction struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // An IPv4 unicast prefix reachable via the originator of this LSP. - Ipv4Address *string `protobuf:"bytes,1,opt,name=ipv4_address,json=ipv4Address,proto3,oneof" json:"ipv4_address,omitempty"` - // The length of the IPv4 prefix. - PrefixLength *uint32 `protobuf:"varint,2,opt,name=prefix_length,json=prefixLength,proto3,oneof" json:"prefix_length,omitempty"` - // ISIS wide metric. - Metric *uint32 `protobuf:"varint,3,opt,name=metric,proto3,oneof" json:"metric,omitempty"` - // Up (0)-used when a prefix is initially advertised within the ISIS L3 hierarchy, - // and for all other prefixes in L1 and L2 LSPs. (default) - // Down (1)-used when an L1/L2 router advertises L2 prefixes in L1 LSPs. - // The prefixes are being advertised from a higher level (L2) down to a lower level - // (L1). - RedistributionType *IsisLspExtendedV4Prefix_RedistributionType_Enum `protobuf:"varint,4,opt,name=redistribution_type,json=redistributionType,proto3,enum=otg.IsisLspExtendedV4Prefix_RedistributionType_Enum,oneof" json:"redistribution_type,omitempty"` // Description missing in models - PrefixAttributes *IsisLspPrefixAttributes `protobuf:"bytes,5,opt,name=prefix_attributes,json=prefixAttributes,proto3" json:"prefix_attributes,omitempty"` + // required = true + Choice *ControlAction_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.ControlAction_Choice_Enum,oneof" json:"choice,omitempty"` + // Description missing in models + Protocol *ActionProtocol `protobuf:"bytes,2,opt,name=protocol,proto3" json:"protocol,omitempty"` } -func (x *IsisLspExtendedV4Prefix) Reset() { - *x = IsisLspExtendedV4Prefix{} +func (x *ControlAction) Reset() { + *x = ControlAction{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[315] + mi := &file_otg_proto_msgTypes[290] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *IsisLspExtendedV4Prefix) String() string { +func (x *ControlAction) String() string { return protoimpl.X.MessageStringOf(x) } -func (*IsisLspExtendedV4Prefix) ProtoMessage() {} +func (*ControlAction) ProtoMessage() {} -func (x *IsisLspExtendedV4Prefix) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[315] +func (x *ControlAction) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[290] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -45431,74 +45077,54 @@ func (x *IsisLspExtendedV4Prefix) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use IsisLspExtendedV4Prefix.ProtoReflect.Descriptor instead. -func (*IsisLspExtendedV4Prefix) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{315} -} - -func (x *IsisLspExtendedV4Prefix) GetIpv4Address() string { - if x != nil && x.Ipv4Address != nil { - return *x.Ipv4Address - } - return "" -} - -func (x *IsisLspExtendedV4Prefix) GetPrefixLength() uint32 { - if x != nil && x.PrefixLength != nil { - return *x.PrefixLength - } - return 0 -} - -func (x *IsisLspExtendedV4Prefix) GetMetric() uint32 { - if x != nil && x.Metric != nil { - return *x.Metric - } - return 0 +// Deprecated: Use ControlAction.ProtoReflect.Descriptor instead. +func (*ControlAction) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{290} } -func (x *IsisLspExtendedV4Prefix) GetRedistributionType() IsisLspExtendedV4Prefix_RedistributionType_Enum { - if x != nil && x.RedistributionType != nil { - return *x.RedistributionType +func (x *ControlAction) GetChoice() ControlAction_Choice_Enum { + if x != nil && x.Choice != nil { + return *x.Choice } - return IsisLspExtendedV4Prefix_RedistributionType_unspecified + return ControlAction_Choice_unspecified } -func (x *IsisLspExtendedV4Prefix) GetPrefixAttributes() *IsisLspPrefixAttributes { +func (x *ControlAction) GetProtocol() *ActionProtocol { if x != nil { - return x.PrefixAttributes + return x.Protocol } return nil } -// It defines list of IPv6 extended reachability information in one IPv6 Reachability -// TLV. -type IsisLspIpv6ReachabilityTlv struct { +// Response for action triggered against configured resources along with warnings. +type ControlActionResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // IPv6 prefix contained within reachability TLVs. - Prefixes []*IsisLspV6Prefix `protobuf:"bytes,1,rep,name=prefixes,proto3" json:"prefixes,omitempty"` + // List of warnings generated while triggering specified action + Warnings []string `protobuf:"bytes,1,rep,name=warnings,proto3" json:"warnings,omitempty"` + // Description missing in models + Response *ActionResponse `protobuf:"bytes,2,opt,name=response,proto3" json:"response,omitempty"` } -func (x *IsisLspIpv6ReachabilityTlv) Reset() { - *x = IsisLspIpv6ReachabilityTlv{} +func (x *ControlActionResponse) Reset() { + *x = ControlActionResponse{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[316] + mi := &file_otg_proto_msgTypes[291] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *IsisLspIpv6ReachabilityTlv) String() string { +func (x *ControlActionResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*IsisLspIpv6ReachabilityTlv) ProtoMessage() {} +func (*ControlActionResponse) ProtoMessage() {} -func (x *IsisLspIpv6ReachabilityTlv) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[316] +func (x *ControlActionResponse) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[291] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -45509,63 +45135,55 @@ func (x *IsisLspIpv6ReachabilityTlv) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use IsisLspIpv6ReachabilityTlv.ProtoReflect.Descriptor instead. -func (*IsisLspIpv6ReachabilityTlv) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{316} +// Deprecated: Use ControlActionResponse.ProtoReflect.Descriptor instead. +func (*ControlActionResponse) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{291} } -func (x *IsisLspIpv6ReachabilityTlv) GetPrefixes() []*IsisLspV6Prefix { +func (x *ControlActionResponse) GetWarnings() []string { if x != nil { - return x.Prefixes + return x.Warnings } return nil } -// It defines attributes of an IPv6 standard prefix. -type IsisLspV6Prefix struct { +func (x *ControlActionResponse) GetResponse() *ActionResponse { + if x != nil { + return x.Response + } + return nil +} + +// Response for action triggered against configured resources. +type ActionResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // An IPv6 unicast prefix reachable via the originator of this LSP. - Ipv6Address *string `protobuf:"bytes,1,opt,name=ipv6_address,json=ipv6Address,proto3,oneof" json:"ipv6_address,omitempty"` - // The length of the IPv6 prefix. - PrefixLength *uint32 `protobuf:"varint,2,opt,name=prefix_length,json=prefixLength,proto3,oneof" json:"prefix_length,omitempty"` - // ISIS wide metric. - Metric *uint32 `protobuf:"varint,3,opt,name=metric,proto3,oneof" json:"metric,omitempty"` - // Up (0)-used when a prefix is initially advertised within the ISIS L3 hierarchy, - // and for all other prefixes in L1 and L2 LSPs. (default) - // Down (1)-used when an L1/L2 router advertises L2 prefixes in L1 LSPs. - // The prefixes are being advertised from a higher level (L2) down to a lower level - // (L1). - RedistributionType *IsisLspV6Prefix_RedistributionType_Enum `protobuf:"varint,4,opt,name=redistribution_type,json=redistributionType,proto3,enum=otg.IsisLspV6Prefix_RedistributionType_Enum,oneof" json:"redistribution_type,omitempty"` - // The origin of the advertised route-internal or external to the ISIS area. Options - // include the following: - // Internal-for intra-area routes, through Level 1 LSPs. - // External-for inter-area routes redistributed within L1, through Level - // 1 LSPs. - OriginType *IsisLspV6Prefix_OriginType_Enum `protobuf:"varint,5,opt,name=origin_type,json=originType,proto3,enum=otg.IsisLspV6Prefix_OriginType_Enum,oneof" json:"origin_type,omitempty"` // Description missing in models - PrefixAttributes *IsisLspPrefixAttributes `protobuf:"bytes,6,opt,name=prefix_attributes,json=prefixAttributes,proto3" json:"prefix_attributes,omitempty"` + // required = true + Choice *ActionResponse_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.ActionResponse_Choice_Enum,oneof" json:"choice,omitempty"` + // Description missing in models + Protocol *ActionResponseProtocol `protobuf:"bytes,2,opt,name=protocol,proto3" json:"protocol,omitempty"` } -func (x *IsisLspV6Prefix) Reset() { - *x = IsisLspV6Prefix{} +func (x *ActionResponse) Reset() { + *x = ActionResponse{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[317] + mi := &file_otg_proto_msgTypes[292] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *IsisLspV6Prefix) String() string { +func (x *ActionResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*IsisLspV6Prefix) ProtoMessage() {} +func (*ActionResponse) ProtoMessage() {} -func (x *IsisLspV6Prefix) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[317] +func (x *ActionResponse) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[292] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -45576,85 +45194,59 @@ func (x *IsisLspV6Prefix) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use IsisLspV6Prefix.ProtoReflect.Descriptor instead. -func (*IsisLspV6Prefix) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{317} -} - -func (x *IsisLspV6Prefix) GetIpv6Address() string { - if x != nil && x.Ipv6Address != nil { - return *x.Ipv6Address - } - return "" -} - -func (x *IsisLspV6Prefix) GetPrefixLength() uint32 { - if x != nil && x.PrefixLength != nil { - return *x.PrefixLength - } - return 0 -} - -func (x *IsisLspV6Prefix) GetMetric() uint32 { - if x != nil && x.Metric != nil { - return *x.Metric - } - return 0 -} - -func (x *IsisLspV6Prefix) GetRedistributionType() IsisLspV6Prefix_RedistributionType_Enum { - if x != nil && x.RedistributionType != nil { - return *x.RedistributionType - } - return IsisLspV6Prefix_RedistributionType_unspecified +// Deprecated: Use ActionResponse.ProtoReflect.Descriptor instead. +func (*ActionResponse) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{292} } -func (x *IsisLspV6Prefix) GetOriginType() IsisLspV6Prefix_OriginType_Enum { - if x != nil && x.OriginType != nil { - return *x.OriginType +func (x *ActionResponse) GetChoice() ActionResponse_Choice_Enum { + if x != nil && x.Choice != nil { + return *x.Choice } - return IsisLspV6Prefix_OriginType_unspecified + return ActionResponse_Choice_unspecified } -func (x *IsisLspV6Prefix) GetPrefixAttributes() *IsisLspPrefixAttributes { +func (x *ActionResponse) GetProtocol() *ActionResponseProtocol { if x != nil { - return x.PrefixAttributes + return x.Protocol } return nil } -// This contains the properties of ISIS Prefix attributes for the extended IPv4 and -// IPv6 reachability. https://www.rfc-editor.org/rfc/rfc7794.html -type IsisLspPrefixAttributes struct { +// Actions associated with protocols on configured resources. +type ActionProtocol struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // External Prefix Flag (Bit 0) - XFlag *bool `protobuf:"varint,1,opt,name=x_flag,json=xFlag,proto3,oneof" json:"x_flag,omitempty"` - // Re-advertisement Flag (Bit 1) - RFlag *bool `protobuf:"varint,2,opt,name=r_flag,json=rFlag,proto3,oneof" json:"r_flag,omitempty"` - // Node Flag (Bit 2) - NFlag *bool `protobuf:"varint,3,opt,name=n_flag,json=nFlag,proto3,oneof" json:"n_flag,omitempty"` + // Description missing in models + // required = true + Choice *ActionProtocol_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.ActionProtocol_Choice_Enum,oneof" json:"choice,omitempty"` + // Description missing in models + Ipv4 *ActionProtocolIpv4 `protobuf:"bytes,2,opt,name=ipv4,proto3" json:"ipv4,omitempty"` + // Description missing in models + Ipv6 *ActionProtocolIpv6 `protobuf:"bytes,3,opt,name=ipv6,proto3" json:"ipv6,omitempty"` + // Description missing in models + Bgp *ActionProtocolBgp `protobuf:"bytes,4,opt,name=bgp,proto3" json:"bgp,omitempty"` } -func (x *IsisLspPrefixAttributes) Reset() { - *x = IsisLspPrefixAttributes{} +func (x *ActionProtocol) Reset() { + *x = ActionProtocol{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[318] + mi := &file_otg_proto_msgTypes[293] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *IsisLspPrefixAttributes) String() string { +func (x *ActionProtocol) String() string { return protoimpl.X.MessageStringOf(x) } -func (*IsisLspPrefixAttributes) ProtoMessage() {} +func (*ActionProtocol) ProtoMessage() {} -func (x *IsisLspPrefixAttributes) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[318] +func (x *ActionProtocol) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[293] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -45665,70 +45257,71 @@ func (x *IsisLspPrefixAttributes) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use IsisLspPrefixAttributes.ProtoReflect.Descriptor instead. -func (*IsisLspPrefixAttributes) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{318} +// Deprecated: Use ActionProtocol.ProtoReflect.Descriptor instead. +func (*ActionProtocol) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{293} } -func (x *IsisLspPrefixAttributes) GetXFlag() bool { - if x != nil && x.XFlag != nil { - return *x.XFlag +func (x *ActionProtocol) GetChoice() ActionProtocol_Choice_Enum { + if x != nil && x.Choice != nil { + return *x.Choice } - return false + return ActionProtocol_Choice_unspecified } -func (x *IsisLspPrefixAttributes) GetRFlag() bool { - if x != nil && x.RFlag != nil { - return *x.RFlag +func (x *ActionProtocol) GetIpv4() *ActionProtocolIpv4 { + if x != nil { + return x.Ipv4 } - return false + return nil } -func (x *IsisLspPrefixAttributes) GetNFlag() bool { - if x != nil && x.NFlag != nil { - return *x.NFlag +func (x *ActionProtocol) GetIpv6() *ActionProtocolIpv6 { + if x != nil { + return x.Ipv6 } - return false + return nil } -// The request to retrieve LLDP neighbor information for a given instance. -type LldpNeighborsStateRequest struct { +func (x *ActionProtocol) GetBgp() *ActionProtocolBgp { + if x != nil { + return x.Bgp + } + return nil +} + +// Response for actions associated with protocols on configured resources. +type ActionResponseProtocol struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // The names of LLDP instances for which neighbor information will be retrieved. If - // no names are specified then the results will contain neighbor information for all - // configured LLDP instances. - // - // x-constraint: - // - /components/schemas/Lldp/properties/name - // - // x-constraint: - // - /components/schemas/Lldp/properties/name - LldpNames []string `protobuf:"bytes,1,rep,name=lldp_names,json=lldpNames,proto3" json:"lldp_names,omitempty"` - // Specify the neighbors for which information will be returned. If empty or missing - // then information for all neighbors will be returned. - NeighborIdFilters []string `protobuf:"bytes,2,rep,name=neighbor_id_filters,json=neighborIdFilters,proto3" json:"neighbor_id_filters,omitempty"` + // Description missing in models + // required = true + Choice *ActionResponseProtocol_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.ActionResponseProtocol_Choice_Enum,oneof" json:"choice,omitempty"` + // Description missing in models + Ipv4 *ActionResponseProtocolIpv4 `protobuf:"bytes,2,opt,name=ipv4,proto3" json:"ipv4,omitempty"` + // Description missing in models + Ipv6 *ActionResponseProtocolIpv6 `protobuf:"bytes,3,opt,name=ipv6,proto3" json:"ipv6,omitempty"` } -func (x *LldpNeighborsStateRequest) Reset() { - *x = LldpNeighborsStateRequest{} +func (x *ActionResponseProtocol) Reset() { + *x = ActionResponseProtocol{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[319] + mi := &file_otg_proto_msgTypes[294] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *LldpNeighborsStateRequest) String() string { +func (x *ActionResponseProtocol) String() string { return protoimpl.X.MessageStringOf(x) } -func (*LldpNeighborsStateRequest) ProtoMessage() {} +func (*ActionResponseProtocol) ProtoMessage() {} -func (x *LldpNeighborsStateRequest) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[319] +func (x *ActionResponseProtocol) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[294] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -45739,101 +45332,62 @@ func (x *LldpNeighborsStateRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use LldpNeighborsStateRequest.ProtoReflect.Descriptor instead. -func (*LldpNeighborsStateRequest) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{319} +// Deprecated: Use ActionResponseProtocol.ProtoReflect.Descriptor instead. +func (*ActionResponseProtocol) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{294} } -func (x *LldpNeighborsStateRequest) GetLldpNames() []string { +func (x *ActionResponseProtocol) GetChoice() ActionResponseProtocol_Choice_Enum { + if x != nil && x.Choice != nil { + return *x.Choice + } + return ActionResponseProtocol_Choice_unspecified +} + +func (x *ActionResponseProtocol) GetIpv4() *ActionResponseProtocolIpv4 { if x != nil { - return x.LldpNames + return x.Ipv4 } return nil } -func (x *LldpNeighborsStateRequest) GetNeighborIdFilters() []string { +func (x *ActionResponseProtocol) GetIpv6() *ActionResponseProtocolIpv6 { if x != nil { - return x.NeighborIdFilters + return x.Ipv6 } return nil } -// LLDP neighbor information. -type LldpNeighborsState struct { +// Actions associated with IPv4 on configured resources. +type ActionProtocolIpv4 struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // The name of the LLDP instance. - LldpName *string `protobuf:"bytes,1,opt,name=lldp_name,json=lldpName,proto3,oneof" json:"lldp_name,omitempty"` - // The system name field shall contain an alpha-numeric string that indicates the system's - // administratively assigned name. The system name should be the system's fully qualified - // domain name. If implementations support IETF RFC 3418, the sysName object should - // be used for this field. - SystemName *string `protobuf:"bytes,2,opt,name=system_name,json=systemName,proto3,oneof" json:"system_name,omitempty"` - // The system description field shall contain an alpha-numeric string that is the textual - // description of the network entity. The system description should include the full - // name and version identification of the system's hardware type, software operating - // system, and networking software. If implementations support IETF RFC 3418, the sysDescr - // object should be used for this field. - SystemDescription *string `protobuf:"bytes,3,opt,name=system_description,json=systemDescription,proto3,oneof" json:"system_description,omitempty"` - // The Chassis ID is a mandatory TLV which identifies the chassis component of the - // endpoint identifier associated with the transmitting LLDP agent. - ChassisId *string `protobuf:"bytes,4,opt,name=chassis_id,json=chassisId,proto3,oneof" json:"chassis_id,omitempty"` - // This field identifies the format and source of the chassis identifier string. It - // is an enumerator defined by the LldpChassisIdSubtype object from IEEE 802.1AB MIB. - ChassisIdType *LldpNeighborsState_ChassisIdType_Enum `protobuf:"varint,5,opt,name=chassis_id_type,json=chassisIdType,proto3,enum=otg.LldpNeighborsState_ChassisIdType_Enum,oneof" json:"chassis_id_type,omitempty"` - // System generated identifier for the neighbor on the LLDP instance. - NeighborId *string `protobuf:"bytes,6,opt,name=neighbor_id,json=neighborId,proto3,oneof" json:"neighbor_id,omitempty"` - // Age since discovery in seconds. - Age *uint32 `protobuf:"varint,7,opt,name=age,proto3,oneof" json:"age,omitempty"` - // Seconds since last update received. - LastUpdate *uint32 `protobuf:"varint,8,opt,name=last_update,json=lastUpdate,proto3,oneof" json:"last_update,omitempty"` - // The time-to-live (TTL) in seconds is a mandatory TLV which indicates how long information - // from the neighbor should be considered valid. - Ttl *uint32 `protobuf:"varint,9,opt,name=ttl,proto3,oneof" json:"ttl,omitempty"` - // The Port ID is a mandatory TLV which identifies the port component of the endpoint - // identifier associated with the transmitting LLDP agent. If the specified port is - // an IEEE 802.3 Repeater port, then this TLV is optional. - PortId *string `protobuf:"bytes,10,opt,name=port_id,json=portId,proto3,oneof" json:"port_id,omitempty"` - // This field identifies the format and source of the port identifier string. It is - // an enumerator defined by the PtopoPortIdType object from RFC2922. - PortIdType *LldpNeighborsState_PortIdType_Enum `protobuf:"varint,11,opt,name=port_id_type,json=portIdType,proto3,enum=otg.LldpNeighborsState_PortIdType_Enum,oneof" json:"port_id_type,omitempty"` - // The binary string containing the actual port identifier for the port which this LLDP - // PDU was transmitted. The source and format of this field is defined by PtopoPortId - // from RFC2922. - PortDescription *string `protobuf:"bytes,12,opt,name=port_description,json=portDescription,proto3,oneof" json:"port_description,omitempty"` - // The Management Address is a mandatory TLV which identifies a network address associated - // with the local LLDP agent, which can be used to reach the agent on the port identified - // in the Port ID TLV. - ManagementAddress *string `protobuf:"bytes,13,opt,name=management_address,json=managementAddress,proto3,oneof" json:"management_address,omitempty"` - // The enumerated value for the network address type identified in this TLV. This enumeration - // is defined in the 'Assigned Numbers' RFC [RFC3232] and the ianaAddressFamilyNumbers - // object. - ManagementAddressType *string `protobuf:"bytes,14,opt,name=management_address_type,json=managementAddressType,proto3,oneof" json:"management_address_type,omitempty"` // Description missing in models - CustomTlvs []*LldpCustomTLVState `protobuf:"bytes,15,rep,name=custom_tlvs,json=customTlvs,proto3" json:"custom_tlvs,omitempty"` + // required = true + Choice *ActionProtocolIpv4_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.ActionProtocolIpv4_Choice_Enum,oneof" json:"choice,omitempty"` // Description missing in models - Capabilities []*LldpCapabilityState `protobuf:"bytes,16,rep,name=capabilities,proto3" json:"capabilities,omitempty"` + Ping *ActionProtocolIpv4Ping `protobuf:"bytes,2,opt,name=ping,proto3" json:"ping,omitempty"` } -func (x *LldpNeighborsState) Reset() { - *x = LldpNeighborsState{} +func (x *ActionProtocolIpv4) Reset() { + *x = ActionProtocolIpv4{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[320] + mi := &file_otg_proto_msgTypes[295] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *LldpNeighborsState) String() string { +func (x *ActionProtocolIpv4) String() string { return protoimpl.X.MessageStringOf(x) } -func (*LldpNeighborsState) ProtoMessage() {} +func (*ActionProtocolIpv4) ProtoMessage() {} -func (x *LldpNeighborsState) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[320] +func (x *ActionProtocolIpv4) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[295] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -45844,159 +45398,169 @@ func (x *LldpNeighborsState) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use LldpNeighborsState.ProtoReflect.Descriptor instead. -func (*LldpNeighborsState) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{320} +// Deprecated: Use ActionProtocolIpv4.ProtoReflect.Descriptor instead. +func (*ActionProtocolIpv4) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{295} } -func (x *LldpNeighborsState) GetLldpName() string { - if x != nil && x.LldpName != nil { - return *x.LldpName +func (x *ActionProtocolIpv4) GetChoice() ActionProtocolIpv4_Choice_Enum { + if x != nil && x.Choice != nil { + return *x.Choice } - return "" + return ActionProtocolIpv4_Choice_unspecified } -func (x *LldpNeighborsState) GetSystemName() string { - if x != nil && x.SystemName != nil { - return *x.SystemName +func (x *ActionProtocolIpv4) GetPing() *ActionProtocolIpv4Ping { + if x != nil { + return x.Ping } - return "" + return nil } -func (x *LldpNeighborsState) GetSystemDescription() string { - if x != nil && x.SystemDescription != nil { - return *x.SystemDescription - } - return "" -} +// Response for actions associated with IPv4 on configured resources. +type ActionResponseProtocolIpv4 struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields -func (x *LldpNeighborsState) GetChassisId() string { - if x != nil && x.ChassisId != nil { - return *x.ChassisId - } - return "" + // Description missing in models + // required = true + Choice *ActionResponseProtocolIpv4_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.ActionResponseProtocolIpv4_Choice_Enum,oneof" json:"choice,omitempty"` + // Description missing in models + Ping *ActionResponseProtocolIpv4Ping `protobuf:"bytes,2,opt,name=ping,proto3" json:"ping,omitempty"` } -func (x *LldpNeighborsState) GetChassisIdType() LldpNeighborsState_ChassisIdType_Enum { - if x != nil && x.ChassisIdType != nil { - return *x.ChassisIdType +func (x *ActionResponseProtocolIpv4) Reset() { + *x = ActionResponseProtocolIpv4{} + if protoimpl.UnsafeEnabled { + mi := &file_otg_proto_msgTypes[296] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } - return LldpNeighborsState_ChassisIdType_unspecified } -func (x *LldpNeighborsState) GetNeighborId() string { - if x != nil && x.NeighborId != nil { - return *x.NeighborId - } - return "" +func (x *ActionResponseProtocolIpv4) String() string { + return protoimpl.X.MessageStringOf(x) } -func (x *LldpNeighborsState) GetAge() uint32 { - if x != nil && x.Age != nil { - return *x.Age +func (*ActionResponseProtocolIpv4) ProtoMessage() {} + +func (x *ActionResponseProtocolIpv4) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[296] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms } - return 0 + return mi.MessageOf(x) } -func (x *LldpNeighborsState) GetLastUpdate() uint32 { - if x != nil && x.LastUpdate != nil { - return *x.LastUpdate - } - return 0 +// Deprecated: Use ActionResponseProtocolIpv4.ProtoReflect.Descriptor instead. +func (*ActionResponseProtocolIpv4) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{296} } -func (x *LldpNeighborsState) GetTtl() uint32 { - if x != nil && x.Ttl != nil { - return *x.Ttl +func (x *ActionResponseProtocolIpv4) GetChoice() ActionResponseProtocolIpv4_Choice_Enum { + if x != nil && x.Choice != nil { + return *x.Choice } - return 0 + return ActionResponseProtocolIpv4_Choice_unspecified } -func (x *LldpNeighborsState) GetPortId() string { - if x != nil && x.PortId != nil { - return *x.PortId +func (x *ActionResponseProtocolIpv4) GetPing() *ActionResponseProtocolIpv4Ping { + if x != nil { + return x.Ping } - return "" + return nil } -func (x *LldpNeighborsState) GetPortIdType() LldpNeighborsState_PortIdType_Enum { - if x != nil && x.PortIdType != nil { - return *x.PortIdType - } - return LldpNeighborsState_PortIdType_unspecified +// Request for initiating ping between multiple source and destination pairs. +type ActionProtocolIpv4Ping struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // List of IPv4 ping requests. + Requests []*ActionProtocolIpv4PingRequest `protobuf:"bytes,1,rep,name=requests,proto3" json:"requests,omitempty"` } -func (x *LldpNeighborsState) GetPortDescription() string { - if x != nil && x.PortDescription != nil { - return *x.PortDescription +func (x *ActionProtocolIpv4Ping) Reset() { + *x = ActionProtocolIpv4Ping{} + if protoimpl.UnsafeEnabled { + mi := &file_otg_proto_msgTypes[297] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } - return "" } -func (x *LldpNeighborsState) GetManagementAddress() string { - if x != nil && x.ManagementAddress != nil { - return *x.ManagementAddress - } - return "" +func (x *ActionProtocolIpv4Ping) String() string { + return protoimpl.X.MessageStringOf(x) } -func (x *LldpNeighborsState) GetManagementAddressType() string { - if x != nil && x.ManagementAddressType != nil { - return *x.ManagementAddressType +func (*ActionProtocolIpv4Ping) ProtoMessage() {} + +func (x *ActionProtocolIpv4Ping) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[297] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms } - return "" + return mi.MessageOf(x) } -func (x *LldpNeighborsState) GetCustomTlvs() []*LldpCustomTLVState { - if x != nil { - return x.CustomTlvs - } - return nil +// Deprecated: Use ActionProtocolIpv4Ping.ProtoReflect.Descriptor instead. +func (*ActionProtocolIpv4Ping) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{297} } -func (x *LldpNeighborsState) GetCapabilities() []*LldpCapabilityState { +func (x *ActionProtocolIpv4Ping) GetRequests() []*ActionProtocolIpv4PingRequest { if x != nil { - return x.Capabilities + return x.Requests } return nil } -// Custom TLV received from a neighbor.Custom TLVs are organization specific TLVs advertised -// with TLV type 127. -type LldpCustomTLVState struct { +// Under Review: Most ping request parameters are still TBD. +// +// Request for initiating ping between a single source and destination pair. +// For ping request, 1 IPv4 ICMP Echo Request shall be sent and wait for ping response +// to either succeed or time out. The API wait timeout for each request shall be 300ms. +type ActionProtocolIpv4PingRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // The integer value identifying the type of information contained in the value field. - CustomType *uint32 `protobuf:"varint,1,opt,name=custom_type,json=customType,proto3,oneof" json:"custom_type,omitempty"` - // The organizationally unique identifier field shall contain the organization's OUI - // as defined in Clause 9 of IEEE Std 802. The high-order octet is 0 and the low-order - // 3 octets are the SMI Network Management Private Enterprise Code of the Vendor in - // network byte order, as defined in the 'Assigned Numbers' RFC [RFC3232]. - Oui *string `protobuf:"bytes,2,opt,name=oui,proto3,oneof" json:"oui,omitempty"` - // The organizationally defined subtype field shall contain a unique subtype value assigned - // by the defining organization. - OuiSubtype *string `protobuf:"bytes,3,opt,name=oui_subtype,json=ouiSubtype,proto3,oneof" json:"oui_subtype,omitempty"` + // Name of source IPv4 interface to be used. + // + // x-constraint: + // - /components/schemas/Device.Ipv4/properties/name + SrcName *string `protobuf:"bytes,1,opt,name=src_name,json=srcName,proto3,oneof" json:"src_name,omitempty"` + // Destination IPv4 address to ping. + DstIp *string `protobuf:"bytes,2,opt,name=dst_ip,json=dstIp,proto3,oneof" json:"dst_ip,omitempty"` } -func (x *LldpCustomTLVState) Reset() { - *x = LldpCustomTLVState{} +func (x *ActionProtocolIpv4PingRequest) Reset() { + *x = ActionProtocolIpv4PingRequest{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[321] + mi := &file_otg_proto_msgTypes[298] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *LldpCustomTLVState) String() string { +func (x *ActionProtocolIpv4PingRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*LldpCustomTLVState) ProtoMessage() {} +func (*ActionProtocolIpv4PingRequest) ProtoMessage() {} -func (x *LldpCustomTLVState) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[321] +func (x *ActionProtocolIpv4PingRequest) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[298] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -46007,63 +45571,52 @@ func (x *LldpCustomTLVState) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use LldpCustomTLVState.ProtoReflect.Descriptor instead. -func (*LldpCustomTLVState) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{321} -} - -func (x *LldpCustomTLVState) GetCustomType() uint32 { - if x != nil && x.CustomType != nil { - return *x.CustomType - } - return 0 +// Deprecated: Use ActionProtocolIpv4PingRequest.ProtoReflect.Descriptor instead. +func (*ActionProtocolIpv4PingRequest) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{298} } -func (x *LldpCustomTLVState) GetOui() string { - if x != nil && x.Oui != nil { - return *x.Oui +func (x *ActionProtocolIpv4PingRequest) GetSrcName() string { + if x != nil && x.SrcName != nil { + return *x.SrcName } return "" } -func (x *LldpCustomTLVState) GetOuiSubtype() string { - if x != nil && x.OuiSubtype != nil { - return *x.OuiSubtype +func (x *ActionProtocolIpv4PingRequest) GetDstIp() string { + if x != nil && x.DstIp != nil { + return *x.DstIp } return "" } -// LLDP system capability advertised by the neighbor -type LldpCapabilityState struct { +// Response for ping initiated between multiple source and destination pairs. +type ActionResponseProtocolIpv4Ping struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Name of the system capability advertised by the neighbor. Capabilities are represented - // in a bitmap that defines the primary functions of the system. The capabilities are - // defined in IEEE 802.1AB. - CapabilityName *LldpCapabilityState_CapabilityName_Enum `protobuf:"varint,1,opt,name=capability_name,json=capabilityName,proto3,enum=otg.LldpCapabilityState_CapabilityName_Enum,oneof" json:"capability_name,omitempty"` - // Indicates whether the corresponding system capability is enabled on the neighbor. - CapabilityEnabled *bool `protobuf:"varint,2,opt,name=capability_enabled,json=capabilityEnabled,proto3,oneof" json:"capability_enabled,omitempty"` + // List of responses for IPv4 ping responses. + Responses []*ActionResponseProtocolIpv4PingResponse `protobuf:"bytes,1,rep,name=responses,proto3" json:"responses,omitempty"` } -func (x *LldpCapabilityState) Reset() { - *x = LldpCapabilityState{} +func (x *ActionResponseProtocolIpv4Ping) Reset() { + *x = ActionResponseProtocolIpv4Ping{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[322] + mi := &file_otg_proto_msgTypes[299] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *LldpCapabilityState) String() string { +func (x *ActionResponseProtocolIpv4Ping) String() string { return protoimpl.X.MessageStringOf(x) } -func (*LldpCapabilityState) ProtoMessage() {} +func (*ActionResponseProtocolIpv4Ping) ProtoMessage() {} -func (x *LldpCapabilityState) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[322] +func (x *ActionResponseProtocolIpv4Ping) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[299] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -46074,60 +45627,56 @@ func (x *LldpCapabilityState) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use LldpCapabilityState.ProtoReflect.Descriptor instead. -func (*LldpCapabilityState) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{322} -} - -func (x *LldpCapabilityState) GetCapabilityName() LldpCapabilityState_CapabilityName_Enum { - if x != nil && x.CapabilityName != nil { - return *x.CapabilityName - } - return LldpCapabilityState_CapabilityName_unspecified +// Deprecated: Use ActionResponseProtocolIpv4Ping.ProtoReflect.Descriptor instead. +func (*ActionResponseProtocolIpv4Ping) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{299} } -func (x *LldpCapabilityState) GetCapabilityEnabled() bool { - if x != nil && x.CapabilityEnabled != nil { - return *x.CapabilityEnabled +func (x *ActionResponseProtocolIpv4Ping) GetResponses() []*ActionResponseProtocolIpv4PingResponse { + if x != nil { + return x.Responses } - return false + return nil } -// The request to retrieve RSVP Label Switched Path (LSP) information learned by the -// router. -type RsvpLspsStateRequest struct { +// Response for ping initiated between a single source and destination pair. +type ActionResponseProtocolIpv4PingResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // The names of RSVP-TE routers for which learned information is requested. An empty - // list will return results for all RSVP=TE routers. + // Name of source IPv4 interface used for ping. // // x-constraint: - // - /components/schemas/Device.Rsvp/properties/name + // - /components/schemas/Device.Ipv4/properties/name // - // x-constraint: - // - /components/schemas/Device.Rsvp/properties/name - RsvpRouterNames []string `protobuf:"bytes,1,rep,name=rsvp_router_names,json=rsvpRouterNames,proto3" json:"rsvp_router_names,omitempty"` + // required = true + SrcName *string `protobuf:"bytes,1,opt,name=src_name,json=srcName,proto3,oneof" json:"src_name,omitempty"` + // Destination IPv4 address used for ping. + // required = true + DstIp *string `protobuf:"bytes,2,opt,name=dst_ip,json=dstIp,proto3,oneof" json:"dst_ip,omitempty"` + // Result of the ping request. + // required = true + Result *ActionResponseProtocolIpv4PingResponse_Result_Enum `protobuf:"varint,3,opt,name=result,proto3,enum=otg.ActionResponseProtocolIpv4PingResponse_Result_Enum,oneof" json:"result,omitempty"` } -func (x *RsvpLspsStateRequest) Reset() { - *x = RsvpLspsStateRequest{} +func (x *ActionResponseProtocolIpv4PingResponse) Reset() { + *x = ActionResponseProtocolIpv4PingResponse{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[323] + mi := &file_otg_proto_msgTypes[300] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *RsvpLspsStateRequest) String() string { +func (x *ActionResponseProtocolIpv4PingResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*RsvpLspsStateRequest) ProtoMessage() {} +func (*ActionResponseProtocolIpv4PingResponse) ProtoMessage() {} -func (x *RsvpLspsStateRequest) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[323] +func (x *ActionResponseProtocolIpv4PingResponse) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[300] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -46138,47 +45687,62 @@ func (x *RsvpLspsStateRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use RsvpLspsStateRequest.ProtoReflect.Descriptor instead. -func (*RsvpLspsStateRequest) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{323} +// Deprecated: Use ActionResponseProtocolIpv4PingResponse.ProtoReflect.Descriptor instead. +func (*ActionResponseProtocolIpv4PingResponse) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{300} } -func (x *RsvpLspsStateRequest) GetRsvpRouterNames() []string { - if x != nil { - return x.RsvpRouterNames +func (x *ActionResponseProtocolIpv4PingResponse) GetSrcName() string { + if x != nil && x.SrcName != nil { + return *x.SrcName } - return nil + return "" } -// Discovered IPv4 Point-to-Point LSPs of a RSVP-TE router. -type RsvpLspsState struct { +func (x *ActionResponseProtocolIpv4PingResponse) GetDstIp() string { + if x != nil && x.DstIp != nil { + return *x.DstIp + } + return "" +} + +func (x *ActionResponseProtocolIpv4PingResponse) GetResult() ActionResponseProtocolIpv4PingResponse_Result_Enum { + if x != nil && x.Result != nil { + return *x.Result + } + return ActionResponseProtocolIpv4PingResponse_Result_unspecified +} + +// Actions associated with IPv6 on configured resources. +type ActionProtocolIpv6 struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // The name of the RSVP-TE Router. - RsvpRouterName *string `protobuf:"bytes,1,opt,name=rsvp_router_name,json=rsvpRouterName,proto3,oneof" json:"rsvp_router_name,omitempty"` - // IPv4 Point-to-Point RSVP-TE Discovered LSPs. - Ipv4Lsps []*RsvpIPv4LspState `protobuf:"bytes,2,rep,name=ipv4_lsps,json=ipv4Lsps,proto3" json:"ipv4_lsps,omitempty"` + // Description missing in models + // required = true + Choice *ActionProtocolIpv6_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.ActionProtocolIpv6_Choice_Enum,oneof" json:"choice,omitempty"` + // Description missing in models + Ping *ActionProtocolIpv6Ping `protobuf:"bytes,2,opt,name=ping,proto3" json:"ping,omitempty"` } -func (x *RsvpLspsState) Reset() { - *x = RsvpLspsState{} +func (x *ActionProtocolIpv6) Reset() { + *x = ActionProtocolIpv6{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[324] + mi := &file_otg_proto_msgTypes[301] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *RsvpLspsState) String() string { +func (x *ActionProtocolIpv6) String() string { return protoimpl.X.MessageStringOf(x) } -func (*RsvpLspsState) ProtoMessage() {} +func (*ActionProtocolIpv6) ProtoMessage() {} -func (x *RsvpLspsState) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[324] +func (x *ActionProtocolIpv6) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[301] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -46189,60 +45753,55 @@ func (x *RsvpLspsState) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use RsvpLspsState.ProtoReflect.Descriptor instead. -func (*RsvpLspsState) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{324} +// Deprecated: Use ActionProtocolIpv6.ProtoReflect.Descriptor instead. +func (*ActionProtocolIpv6) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{301} } -func (x *RsvpLspsState) GetRsvpRouterName() string { - if x != nil && x.RsvpRouterName != nil { - return *x.RsvpRouterName +func (x *ActionProtocolIpv6) GetChoice() ActionProtocolIpv6_Choice_Enum { + if x != nil && x.Choice != nil { + return *x.Choice } - return "" + return ActionProtocolIpv6_Choice_unspecified } -func (x *RsvpLspsState) GetIpv4Lsps() []*RsvpIPv4LspState { +func (x *ActionProtocolIpv6) GetPing() *ActionProtocolIpv6Ping { if x != nil { - return x.Ipv4Lsps + return x.Ping } return nil } -// IPv4 RSVP-TE Discovered LSPs. -type RsvpIPv4LspState struct { +// Response for actions associated with IPv6 on configured resources. +type ActionResponseProtocolIpv6 struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // The origin IPv4 address of RSVP session. - SourceAddress *string `protobuf:"bytes,1,opt,name=source_address,json=sourceAddress,proto3,oneof" json:"source_address,omitempty"` - // The IPv4 destination address of RSVP session. - DestinationAddress *string `protobuf:"bytes,2,opt,name=destination_address,json=destinationAddress,proto3,oneof" json:"destination_address,omitempty"` - // It refers to the RSVP LSP properties. - Lsp *RsvpLspState `protobuf:"bytes,3,opt,name=lsp,proto3" json:"lsp,omitempty"` - // It refers to RSVP RRO objects container. - Rros []*RsvpLspIpv4Rro `protobuf:"bytes,4,rep,name=rros,proto3" json:"rros,omitempty"` - // It refers to RSVP ERO objects container. - Eros []*RsvpLspIpv4Ero `protobuf:"bytes,5,rep,name=eros,proto3" json:"eros,omitempty"` + // Description missing in models + // required = true + Choice *ActionResponseProtocolIpv6_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.ActionResponseProtocolIpv6_Choice_Enum,oneof" json:"choice,omitempty"` + // Description missing in models + Ping *ActionResponseProtocolIpv6Ping `protobuf:"bytes,2,opt,name=ping,proto3" json:"ping,omitempty"` } -func (x *RsvpIPv4LspState) Reset() { - *x = RsvpIPv4LspState{} +func (x *ActionResponseProtocolIpv6) Reset() { + *x = ActionResponseProtocolIpv6{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[325] + mi := &file_otg_proto_msgTypes[302] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *RsvpIPv4LspState) String() string { +func (x *ActionResponseProtocolIpv6) String() string { return protoimpl.X.MessageStringOf(x) } -func (*RsvpIPv4LspState) ProtoMessage() {} +func (*ActionResponseProtocolIpv6) ProtoMessage() {} -func (x *RsvpIPv4LspState) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[325] +func (x *ActionResponseProtocolIpv6) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[302] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -46253,90 +45812,52 @@ func (x *RsvpIPv4LspState) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use RsvpIPv4LspState.ProtoReflect.Descriptor instead. -func (*RsvpIPv4LspState) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{325} -} - -func (x *RsvpIPv4LspState) GetSourceAddress() string { - if x != nil && x.SourceAddress != nil { - return *x.SourceAddress - } - return "" -} - -func (x *RsvpIPv4LspState) GetDestinationAddress() string { - if x != nil && x.DestinationAddress != nil { - return *x.DestinationAddress - } - return "" -} - -func (x *RsvpIPv4LspState) GetLsp() *RsvpLspState { - if x != nil { - return x.Lsp - } - return nil +// Deprecated: Use ActionResponseProtocolIpv6.ProtoReflect.Descriptor instead. +func (*ActionResponseProtocolIpv6) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{302} } -func (x *RsvpIPv4LspState) GetRros() []*RsvpLspIpv4Rro { - if x != nil { - return x.Rros +func (x *ActionResponseProtocolIpv6) GetChoice() ActionResponseProtocolIpv6_Choice_Enum { + if x != nil && x.Choice != nil { + return *x.Choice } - return nil + return ActionResponseProtocolIpv6_Choice_unspecified } -func (x *RsvpIPv4LspState) GetEros() []*RsvpLspIpv4Ero { +func (x *ActionResponseProtocolIpv6) GetPing() *ActionResponseProtocolIpv6Ping { if x != nil { - return x.Eros + return x.Ping } return nil } -// IPv4 RSVP-TE Discovered LSPs. -type RsvpLspState struct { +// Request for initiating ping between multiple source and destination pairs. +type ActionProtocolIpv6Ping struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // The tunnel id of RSVP session which acts as an identifier that remains constant over - // the life of the tunnel. - TunnelId *uint32 `protobuf:"varint,1,opt,name=tunnel_id,json=tunnelId,proto3,oneof" json:"tunnel_id,omitempty"` - // The lsp-id of RSVP session which acts as a differentiator for two lsps originating - // from the same headend, commonly used to distinguish RSVP sessions during make before - // break operations. - LspId *uint32 `protobuf:"varint,2,opt,name=lsp_id,json=lspId,proto3,oneof" json:"lsp_id,omitempty"` - // The value of RSVP-TE Session Name field of the Session Attribute object. - SessionName *string `protobuf:"bytes,3,opt,name=session_name,json=sessionName,proto3,oneof" json:"session_name,omitempty"` - // The label received by RSVP-TE ingress. - LabelIn *uint32 `protobuf:"varint,4,opt,name=label_in,json=labelIn,proto3,oneof" json:"label_in,omitempty"` - // The label assigned by RSVP-TE egress. - LabelOut *uint32 `protobuf:"varint,5,opt,name=label_out,json=labelOut,proto3,oneof" json:"label_out,omitempty"` - // Operational state of the RSVP LSP. - SessionStatus *RsvpLspState_SessionStatus_Enum `protobuf:"varint,6,opt,name=session_status,json=sessionStatus,proto3,enum=otg.RsvpLspState_SessionStatus_Enum,oneof" json:"session_status,omitempty"` - // The reason for the last flap of this RSVP session. - LastFlapReason *RsvpLspState_LastFlapReason_Enum `protobuf:"varint,7,opt,name=last_flap_reason,json=lastFlapReason,proto3,enum=otg.RsvpLspState_LastFlapReason_Enum,oneof" json:"last_flap_reason,omitempty"` - // The tunnel UP time in milli seconds. If the tunnel is DOWN the UP time will be zero. - UpTime *uint64 `protobuf:"varint,8,opt,name=up_time,json=upTime,proto3,oneof" json:"up_time,omitempty"` + // List of IPv6 ping requests. + Requests []*ActionProtocolIpv6PingRequest `protobuf:"bytes,1,rep,name=requests,proto3" json:"requests,omitempty"` } -func (x *RsvpLspState) Reset() { - *x = RsvpLspState{} +func (x *ActionProtocolIpv6Ping) Reset() { + *x = ActionProtocolIpv6Ping{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[326] + mi := &file_otg_proto_msgTypes[303] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *RsvpLspState) String() string { +func (x *ActionProtocolIpv6Ping) String() string { return protoimpl.X.MessageStringOf(x) } -func (*RsvpLspState) ProtoMessage() {} +func (*ActionProtocolIpv6Ping) ProtoMessage() {} -func (x *RsvpLspState) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[326] +func (x *ActionProtocolIpv6Ping) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[303] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -46347,104 +45868,54 @@ func (x *RsvpLspState) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use RsvpLspState.ProtoReflect.Descriptor instead. -func (*RsvpLspState) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{326} -} - -func (x *RsvpLspState) GetTunnelId() uint32 { - if x != nil && x.TunnelId != nil { - return *x.TunnelId - } - return 0 -} - -func (x *RsvpLspState) GetLspId() uint32 { - if x != nil && x.LspId != nil { - return *x.LspId - } - return 0 -} - -func (x *RsvpLspState) GetSessionName() string { - if x != nil && x.SessionName != nil { - return *x.SessionName - } - return "" -} - -func (x *RsvpLspState) GetLabelIn() uint32 { - if x != nil && x.LabelIn != nil { - return *x.LabelIn - } - return 0 -} - -func (x *RsvpLspState) GetLabelOut() uint32 { - if x != nil && x.LabelOut != nil { - return *x.LabelOut - } - return 0 -} - -func (x *RsvpLspState) GetSessionStatus() RsvpLspState_SessionStatus_Enum { - if x != nil && x.SessionStatus != nil { - return *x.SessionStatus - } - return RsvpLspState_SessionStatus_unspecified -} - -func (x *RsvpLspState) GetLastFlapReason() RsvpLspState_LastFlapReason_Enum { - if x != nil && x.LastFlapReason != nil { - return *x.LastFlapReason - } - return RsvpLspState_LastFlapReason_unspecified +// Deprecated: Use ActionProtocolIpv6Ping.ProtoReflect.Descriptor instead. +func (*ActionProtocolIpv6Ping) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{303} } -func (x *RsvpLspState) GetUpTime() uint64 { - if x != nil && x.UpTime != nil { - return *x.UpTime +func (x *ActionProtocolIpv6Ping) GetRequests() []*ActionProtocolIpv6PingRequest { + if x != nil { + return x.Requests } - return 0 + return nil } -// This contains the list of Record Route Object(RRO) objects associated with the traffic -// engineering tunnel. The Record Route Object(RRO) is used in RSVP-TE to record the -// route traversed by the LSP. The RRO might be present in both Path message and Resv -// message, the RRO stores the IP addresses of the routers that the traffic engineering -// tunnel traversed and also the label generated and distributed by the routers. The -// RROs in the Resv message mirrors that of the Path message, the only difference is -// that the RRO in a Resv message records the path information in the reverse direction. -type RsvpLspIpv4Rro struct { +// Under Review: Most ping request parameters are still TBD. +// +// Request for initiating ping between a single source and destination pair. +// For ping request, 1 IPv6 ICMP Echo Request shall be sent and wait for ping response +// to either succeed or time out. The API wait timeout for each request shall be 300ms. +type ActionProtocolIpv6PingRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // The IPv4 addresses of the routers that the traffic engineering tunnel traversed. - Address *string `protobuf:"bytes,1,opt,name=address,proto3,oneof" json:"address,omitempty"` - // Label reported for RRO hop. When the Label_Recording flag is set in the Session Attribute - // object, nodes doing route recording should include the Label Record subobject containing - // the reported label. - ReportedLabel *uint32 `protobuf:"varint,2,opt,name=reported_label,json=reportedLabel,proto3,oneof" json:"reported_label,omitempty"` + // Name of source IPv6 interface to be used. + // + // x-constraint: + // - /components/schemas/Device.Ipv6/properties/name + SrcName *string `protobuf:"bytes,1,opt,name=src_name,json=srcName,proto3,oneof" json:"src_name,omitempty"` + // Destination IPv6 address to ping. + DstIp *string `protobuf:"bytes,2,opt,name=dst_ip,json=dstIp,proto3,oneof" json:"dst_ip,omitempty"` } -func (x *RsvpLspIpv4Rro) Reset() { - *x = RsvpLspIpv4Rro{} +func (x *ActionProtocolIpv6PingRequest) Reset() { + *x = ActionProtocolIpv6PingRequest{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[327] + mi := &file_otg_proto_msgTypes[304] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *RsvpLspIpv4Rro) String() string { +func (x *ActionProtocolIpv6PingRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*RsvpLspIpv4Rro) ProtoMessage() {} +func (*ActionProtocolIpv6PingRequest) ProtoMessage() {} -func (x *RsvpLspIpv4Rro) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[327] +func (x *ActionProtocolIpv6PingRequest) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[304] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -46455,60 +45926,52 @@ func (x *RsvpLspIpv4Rro) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use RsvpLspIpv4Rro.ProtoReflect.Descriptor instead. -func (*RsvpLspIpv4Rro) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{327} +// Deprecated: Use ActionProtocolIpv6PingRequest.ProtoReflect.Descriptor instead. +func (*ActionProtocolIpv6PingRequest) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{304} } -func (x *RsvpLspIpv4Rro) GetAddress() string { - if x != nil && x.Address != nil { - return *x.Address +func (x *ActionProtocolIpv6PingRequest) GetSrcName() string { + if x != nil && x.SrcName != nil { + return *x.SrcName } return "" } -func (x *RsvpLspIpv4Rro) GetReportedLabel() uint32 { - if x != nil && x.ReportedLabel != nil { - return *x.ReportedLabel +func (x *ActionProtocolIpv6PingRequest) GetDstIp() string { + if x != nil && x.DstIp != nil { + return *x.DstIp } - return 0 + return "" } -// This contains the list of sub-objects included in the Explicit Route Object(ERO) -// object send in the PATH message from the ingress. These sub-objects contain the intermediate -// hops to be traversed by the LSP while being forwarded towards the egress endpoint. -type RsvpLspIpv4Ero struct { +// Response for ping initiated between multiple source and destination pairs. +type ActionResponseProtocolIpv6Ping struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // The IPv4 prefix indicated by the ERO. Specified only when the ERO hop is an IPv4 - // prefix. - Prefix *string `protobuf:"bytes,1,opt,name=prefix,proto3,oneof" json:"prefix,omitempty"` - // The autonomous system number indicated by the ERO. Specified only when the ERO hop - // is an 2 or 4-byte AS number. - Asn *uint32 `protobuf:"varint,2,opt,name=asn,proto3,oneof" json:"asn,omitempty"` - // The type indicated by the ERO. - Type *RsvpLspIpv4Ero_Type_Enum `protobuf:"varint,3,opt,name=type,proto3,enum=otg.RsvpLspIpv4Ero_Type_Enum,oneof" json:"type,omitempty"` + // List of responses for IPv6 ping responses. + Responses []*ActionResponseProtocolIpv6PingResponse `protobuf:"bytes,1,rep,name=responses,proto3" json:"responses,omitempty"` } -func (x *RsvpLspIpv4Ero) Reset() { - *x = RsvpLspIpv4Ero{} +func (x *ActionResponseProtocolIpv6Ping) Reset() { + *x = ActionResponseProtocolIpv6Ping{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[328] + mi := &file_otg_proto_msgTypes[305] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *RsvpLspIpv4Ero) String() string { +func (x *ActionResponseProtocolIpv6Ping) String() string { return protoimpl.X.MessageStringOf(x) } -func (*RsvpLspIpv4Ero) ProtoMessage() {} +func (*ActionResponseProtocolIpv6Ping) ProtoMessage() {} -func (x *RsvpLspIpv4Ero) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[328] +func (x *ActionResponseProtocolIpv6Ping) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[305] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -46519,68 +45982,56 @@ func (x *RsvpLspIpv4Ero) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use RsvpLspIpv4Ero.ProtoReflect.Descriptor instead. -func (*RsvpLspIpv4Ero) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{328} -} - -func (x *RsvpLspIpv4Ero) GetPrefix() string { - if x != nil && x.Prefix != nil { - return *x.Prefix - } - return "" -} - -func (x *RsvpLspIpv4Ero) GetAsn() uint32 { - if x != nil && x.Asn != nil { - return *x.Asn - } - return 0 +// Deprecated: Use ActionResponseProtocolIpv6Ping.ProtoReflect.Descriptor instead. +func (*ActionResponseProtocolIpv6Ping) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{305} } -func (x *RsvpLspIpv4Ero) GetType() RsvpLspIpv4Ero_Type_Enum { - if x != nil && x.Type != nil { - return *x.Type +func (x *ActionResponseProtocolIpv6Ping) GetResponses() []*ActionResponseProtocolIpv6PingResponse { + if x != nil { + return x.Responses } - return RsvpLspIpv4Ero_Type_unspecified + return nil } -// The capture result request to the traffic generator. Stops the port capture on the -// port_name and returns the capture. -type CaptureRequest struct { +// Response for ping initiated between a single source and destination pair. +type ActionResponseProtocolIpv6PingResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // The name of a port a capture is started on. - // - // x-constraint: - // - /components/schemas/Port/properties/name + // Name of source IPv6 interface used for ping. // // x-constraint: - // - /components/schemas/Port/properties/name + // - /components/schemas/Device.Ipv6/properties/name // // required = true - PortName *string `protobuf:"bytes,1,opt,name=port_name,json=portName,proto3,oneof" json:"port_name,omitempty"` + SrcName *string `protobuf:"bytes,1,opt,name=src_name,json=srcName,proto3,oneof" json:"src_name,omitempty"` + // Destination IPv6 address used for ping. + // required = true + DstIp *string `protobuf:"bytes,2,opt,name=dst_ip,json=dstIp,proto3,oneof" json:"dst_ip,omitempty"` + // Result of the ping request. + // required = true + Result *ActionResponseProtocolIpv6PingResponse_Result_Enum `protobuf:"varint,3,opt,name=result,proto3,enum=otg.ActionResponseProtocolIpv6PingResponse_Result_Enum,oneof" json:"result,omitempty"` } -func (x *CaptureRequest) Reset() { - *x = CaptureRequest{} +func (x *ActionResponseProtocolIpv6PingResponse) Reset() { + *x = ActionResponseProtocolIpv6PingResponse{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[329] + mi := &file_otg_proto_msgTypes[306] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *CaptureRequest) String() string { +func (x *ActionResponseProtocolIpv6PingResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*CaptureRequest) ProtoMessage() {} +func (*ActionResponseProtocolIpv6PingResponse) ProtoMessage() {} -func (x *CaptureRequest) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[329] +func (x *ActionResponseProtocolIpv6PingResponse) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[306] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -46591,126 +46042,64 @@ func (x *CaptureRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use CaptureRequest.ProtoReflect.Descriptor instead. -func (*CaptureRequest) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{329} +// Deprecated: Use ActionResponseProtocolIpv6PingResponse.ProtoReflect.Descriptor instead. +func (*ActionResponseProtocolIpv6PingResponse) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{306} } -func (x *CaptureRequest) GetPortName() string { - if x != nil && x.PortName != nil { - return *x.PortName - } - return "" -} - -// mac counter pattern -type PatternFlowEthernetDstCounter struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // Description missing in models - // default = 00:00:00:00:00:00 - Start *string `protobuf:"bytes,1,opt,name=start,proto3,oneof" json:"start,omitempty"` - // Description missing in models - // default = 00:00:00:00:00:01 - Step *string `protobuf:"bytes,2,opt,name=step,proto3,oneof" json:"step,omitempty"` - // Description missing in models - // default = 1 - Count *uint32 `protobuf:"varint,3,opt,name=count,proto3,oneof" json:"count,omitempty"` -} - -func (x *PatternFlowEthernetDstCounter) Reset() { - *x = PatternFlowEthernetDstCounter{} - if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[330] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *PatternFlowEthernetDstCounter) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*PatternFlowEthernetDstCounter) ProtoMessage() {} - -func (x *PatternFlowEthernetDstCounter) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[330] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use PatternFlowEthernetDstCounter.ProtoReflect.Descriptor instead. -func (*PatternFlowEthernetDstCounter) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{330} -} - -func (x *PatternFlowEthernetDstCounter) GetStart() string { - if x != nil && x.Start != nil { - return *x.Start +func (x *ActionResponseProtocolIpv6PingResponse) GetSrcName() string { + if x != nil && x.SrcName != nil { + return *x.SrcName } return "" } -func (x *PatternFlowEthernetDstCounter) GetStep() string { - if x != nil && x.Step != nil { - return *x.Step +func (x *ActionResponseProtocolIpv6PingResponse) GetDstIp() string { + if x != nil && x.DstIp != nil { + return *x.DstIp } return "" } -func (x *PatternFlowEthernetDstCounter) GetCount() uint32 { - if x != nil && x.Count != nil { - return *x.Count +func (x *ActionResponseProtocolIpv6PingResponse) GetResult() ActionResponseProtocolIpv6PingResponse_Result_Enum { + if x != nil && x.Result != nil { + return *x.Result } - return 0 + return ActionResponseProtocolIpv6PingResponse_Result_unspecified } -// Metric tag can be used to enable tracking portion of or all bits in a corresponding -// header field for metrics per each applicable value. These would appear as tagged -// metrics in corresponding flow metrics. -type PatternFlowEthernetDstMetricTag struct { +// Actions associated with BGP on configured resources. +type ActionProtocolBgp struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Name used to identify the metrics associated with the values applicable for configured - // offset and length inside corresponding header field + // Description missing in models // required = true - Name *string `protobuf:"bytes,1,opt,name=name,proto3,oneof" json:"name,omitempty"` - // Offset in bits relative to start of corresponding header field - // default = 0 - Offset *uint32 `protobuf:"varint,2,opt,name=offset,proto3,oneof" json:"offset,omitempty"` - // Number of bits to track for metrics starting from configured offset of corresponding - // header field - // default = 48 - Length *uint32 `protobuf:"varint,3,opt,name=length,proto3,oneof" json:"length,omitempty"` + Choice *ActionProtocolBgp_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.ActionProtocolBgp_Choice_Enum,oneof" json:"choice,omitempty"` + // Description missing in models + Notification *ActionProtocolBgpNotification `protobuf:"bytes,2,opt,name=notification,proto3" json:"notification,omitempty"` + // Description missing in models + InitiateGracefulRestart *ActionProtocolBgpInitiateGracefulRestart `protobuf:"bytes,3,opt,name=initiate_graceful_restart,json=initiateGracefulRestart,proto3" json:"initiate_graceful_restart,omitempty"` } -func (x *PatternFlowEthernetDstMetricTag) Reset() { - *x = PatternFlowEthernetDstMetricTag{} +func (x *ActionProtocolBgp) Reset() { + *x = ActionProtocolBgp{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[331] + mi := &file_otg_proto_msgTypes[307] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowEthernetDstMetricTag) String() string { +func (x *ActionProtocolBgp) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowEthernetDstMetricTag) ProtoMessage() {} +func (*ActionProtocolBgp) ProtoMessage() {} -func (x *PatternFlowEthernetDstMetricTag) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[331] +func (x *ActionProtocolBgp) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[307] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -46721,79 +46110,91 @@ func (x *PatternFlowEthernetDstMetricTag) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use PatternFlowEthernetDstMetricTag.ProtoReflect.Descriptor instead. -func (*PatternFlowEthernetDstMetricTag) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{331} +// Deprecated: Use ActionProtocolBgp.ProtoReflect.Descriptor instead. +func (*ActionProtocolBgp) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{307} } -func (x *PatternFlowEthernetDstMetricTag) GetName() string { - if x != nil && x.Name != nil { - return *x.Name +func (x *ActionProtocolBgp) GetChoice() ActionProtocolBgp_Choice_Enum { + if x != nil && x.Choice != nil { + return *x.Choice } - return "" + return ActionProtocolBgp_Choice_unspecified } -func (x *PatternFlowEthernetDstMetricTag) GetOffset() uint32 { - if x != nil && x.Offset != nil { - return *x.Offset +func (x *ActionProtocolBgp) GetNotification() *ActionProtocolBgpNotification { + if x != nil { + return x.Notification } - return 0 + return nil } -func (x *PatternFlowEthernetDstMetricTag) GetLength() uint32 { - if x != nil && x.Length != nil { - return *x.Length +func (x *ActionProtocolBgp) GetInitiateGracefulRestart() *ActionProtocolBgpInitiateGracefulRestart { + if x != nil { + return x.InitiateGracefulRestart } - return 0 + return nil } -// Destination MAC address -type PatternFlowEthernetDst struct { +// A NOTIFICATION message is sent when an error is detected with the BGP session, such +// as hold timer expiring, misconfigured AS number or a BGP session reset is requested. +// This causes the BGP connection to close. Send explicit NOTIFICATIONs for list of +// specified BGP peers. If a user wants to send custom Error Code and Error Subcode +// the custom object should be configured. A user can send IANA defined BGP NOTIFICATIONs +// according to https://www.iana.org/assignments/bgp-parameters/bgp-parameters.xhtml. +type ActionProtocolBgpNotification struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields + // The names of BGP Peers to send NOTIFICATION to. If no name is specified then NOTIFICATION + // will be sent to all configured BGP peers. + // + // x-constraint: + // - /components/schemas/Device.Bgp/properties/name + Names []string `protobuf:"bytes,1,rep,name=names,proto3" json:"names,omitempty"` + // Each BGP NOTIFICATION message includes an Error Code field indicating what type of + // problem occurred. For certain Error Codes, an Error Subcode field provides additional + // details about the specific nature of the problem. The choice value will provide + // the Error Code used in NOTIFICATION message. The Subcode can be set for each of + // the corresponding errors except for Hold Timer Expired error and BGP Finite State + // Machine error. In both of these cases Subcode 0 will be sent. If a user wants to + // use non zero Sub Code then custom choice can be used. + // default = Choice.Enum.cease + Choice *ActionProtocolBgpNotification_Choice_Enum `protobuf:"varint,2,opt,name=choice,proto3,enum=otg.ActionProtocolBgpNotification_Choice_Enum,oneof" json:"choice,omitempty"` // Description missing in models - // default = Choice.Enum.auto - Choice *PatternFlowEthernetDst_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.PatternFlowEthernetDst_Choice_Enum,oneof" json:"choice,omitempty"` + Cease *DeviceBgpCeaseError `protobuf:"bytes,3,opt,name=cease,proto3" json:"cease,omitempty"` // Description missing in models - // default = 00:00:00:00:00:00 - Value *string `protobuf:"bytes,2,opt,name=value,proto3,oneof" json:"value,omitempty"` + MessageHeaderError *DeviceBgpMessageHeaderError `protobuf:"bytes,4,opt,name=message_header_error,json=messageHeaderError,proto3" json:"message_header_error,omitempty"` // Description missing in models - // default = ['00:00:00:00:00:00'] - Values []string `protobuf:"bytes,3,rep,name=values,proto3" json:"values,omitempty"` - // The OTG implementation can provide a system generated - // value for this property. If the OTG is unable to generate a value - // the default value must be used. - // default = 00:00:00:00:00:00 - Auto *string `protobuf:"bytes,4,opt,name=auto,proto3,oneof" json:"auto,omitempty"` + OpenMessageError *DeviceBgpOpenMessageError `protobuf:"bytes,5,opt,name=open_message_error,json=openMessageError,proto3" json:"open_message_error,omitempty"` // Description missing in models - Increment *PatternFlowEthernetDstCounter `protobuf:"bytes,6,opt,name=increment,proto3" json:"increment,omitempty"` + UpdateMessageError *DeviceBgpUpdateMessageError `protobuf:"bytes,6,opt,name=update_message_error,json=updateMessageError,proto3" json:"update_message_error,omitempty"` // Description missing in models - Decrement *PatternFlowEthernetDstCounter `protobuf:"bytes,7,opt,name=decrement,proto3" json:"decrement,omitempty"` - // One or more metric tags can be used to enable tracking portion of or all bits in - // a corresponding header field for metrics per each applicable value. These would appear - // as tagged metrics in corresponding flow metrics. - MetricTags []*PatternFlowEthernetDstMetricTag `protobuf:"bytes,8,rep,name=metric_tags,json=metricTags,proto3" json:"metric_tags,omitempty"` + HoldTimerExpired *DeviceBgpHoldTimerExpired `protobuf:"bytes,7,opt,name=hold_timer_expired,json=holdTimerExpired,proto3" json:"hold_timer_expired,omitempty"` + // Description missing in models + FiniteStateMachineError *DeviceBgpFiniteStateMachineError `protobuf:"bytes,8,opt,name=finite_state_machine_error,json=finiteStateMachineError,proto3" json:"finite_state_machine_error,omitempty"` + // Description missing in models + Custom *DeviceBgpCustomError `protobuf:"bytes,9,opt,name=custom,proto3" json:"custom,omitempty"` } -func (x *PatternFlowEthernetDst) Reset() { - *x = PatternFlowEthernetDst{} +func (x *ActionProtocolBgpNotification) Reset() { + *x = ActionProtocolBgpNotification{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[332] + mi := &file_otg_proto_msgTypes[308] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowEthernetDst) String() string { +func (x *ActionProtocolBgpNotification) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowEthernetDst) ProtoMessage() {} +func (*ActionProtocolBgpNotification) ProtoMessage() {} -func (x *PatternFlowEthernetDst) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[332] +func (x *ActionProtocolBgpNotification) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[308] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -46804,94 +46205,110 @@ func (x *PatternFlowEthernetDst) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use PatternFlowEthernetDst.ProtoReflect.Descriptor instead. -func (*PatternFlowEthernetDst) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{332} +// Deprecated: Use ActionProtocolBgpNotification.ProtoReflect.Descriptor instead. +func (*ActionProtocolBgpNotification) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{308} } -func (x *PatternFlowEthernetDst) GetChoice() PatternFlowEthernetDst_Choice_Enum { +func (x *ActionProtocolBgpNotification) GetNames() []string { + if x != nil { + return x.Names + } + return nil +} + +func (x *ActionProtocolBgpNotification) GetChoice() ActionProtocolBgpNotification_Choice_Enum { if x != nil && x.Choice != nil { return *x.Choice } - return PatternFlowEthernetDst_Choice_unspecified + return ActionProtocolBgpNotification_Choice_unspecified } -func (x *PatternFlowEthernetDst) GetValue() string { - if x != nil && x.Value != nil { - return *x.Value +func (x *ActionProtocolBgpNotification) GetCease() *DeviceBgpCeaseError { + if x != nil { + return x.Cease } - return "" + return nil } -func (x *PatternFlowEthernetDst) GetValues() []string { +func (x *ActionProtocolBgpNotification) GetMessageHeaderError() *DeviceBgpMessageHeaderError { if x != nil { - return x.Values + return x.MessageHeaderError } return nil } -func (x *PatternFlowEthernetDst) GetAuto() string { - if x != nil && x.Auto != nil { - return *x.Auto +func (x *ActionProtocolBgpNotification) GetOpenMessageError() *DeviceBgpOpenMessageError { + if x != nil { + return x.OpenMessageError } - return "" + return nil } -func (x *PatternFlowEthernetDst) GetIncrement() *PatternFlowEthernetDstCounter { +func (x *ActionProtocolBgpNotification) GetUpdateMessageError() *DeviceBgpUpdateMessageError { if x != nil { - return x.Increment + return x.UpdateMessageError } return nil } -func (x *PatternFlowEthernetDst) GetDecrement() *PatternFlowEthernetDstCounter { +func (x *ActionProtocolBgpNotification) GetHoldTimerExpired() *DeviceBgpHoldTimerExpired { if x != nil { - return x.Decrement + return x.HoldTimerExpired } return nil } -func (x *PatternFlowEthernetDst) GetMetricTags() []*PatternFlowEthernetDstMetricTag { +func (x *ActionProtocolBgpNotification) GetFiniteStateMachineError() *DeviceBgpFiniteStateMachineError { if x != nil { - return x.MetricTags + return x.FiniteStateMachineError } return nil } -// mac counter pattern -type PatternFlowEthernetSrcCounter struct { +func (x *ActionProtocolBgpNotification) GetCustom() *DeviceBgpCustomError { + if x != nil { + return x.Custom + } + return nil +} + +// Initiates BGP Graceful Restart process for the selected BGP peers. If no name is +// specified then Graceful Restart will be sent to all configured BGP peers. +type ActionProtocolBgpInitiateGracefulRestart struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Description missing in models - // default = 00:00:00:00:00:00 - Start *string `protobuf:"bytes,1,opt,name=start,proto3,oneof" json:"start,omitempty"` - // Description missing in models - // default = 00:00:00:00:00:01 - Step *string `protobuf:"bytes,2,opt,name=step,proto3,oneof" json:"step,omitempty"` - // Description missing in models - // default = 1 - Count *uint32 `protobuf:"varint,3,opt,name=count,proto3,oneof" json:"count,omitempty"` + // The names of device BGP peers objects to control. + // + // x-constraint: + // - /components/schemas/Device.Bgp/properties/name + PeerNames []string `protobuf:"bytes,1,rep,name=peer_names,json=peerNames,proto3" json:"peer_names,omitempty"` + // Duration (in seconds) after which selected BGP peers will initiate + // Graceful restart by sending the Open Message with Restart State bit set in the Graceful + // Restart capability. + // default = 30 + RestartDelay *uint32 `protobuf:"varint,2,opt,name=restart_delay,json=restartDelay,proto3,oneof" json:"restart_delay,omitempty"` } -func (x *PatternFlowEthernetSrcCounter) Reset() { - *x = PatternFlowEthernetSrcCounter{} +func (x *ActionProtocolBgpInitiateGracefulRestart) Reset() { + *x = ActionProtocolBgpInitiateGracefulRestart{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[333] + mi := &file_otg_proto_msgTypes[309] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowEthernetSrcCounter) String() string { +func (x *ActionProtocolBgpInitiateGracefulRestart) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowEthernetSrcCounter) ProtoMessage() {} +func (*ActionProtocolBgpInitiateGracefulRestart) ProtoMessage() {} -func (x *PatternFlowEthernetSrcCounter) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[333] +func (x *ActionProtocolBgpInitiateGracefulRestart) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[309] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -46902,70 +46319,71 @@ func (x *PatternFlowEthernetSrcCounter) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use PatternFlowEthernetSrcCounter.ProtoReflect.Descriptor instead. -func (*PatternFlowEthernetSrcCounter) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{333} -} - -func (x *PatternFlowEthernetSrcCounter) GetStart() string { - if x != nil && x.Start != nil { - return *x.Start - } - return "" +// Deprecated: Use ActionProtocolBgpInitiateGracefulRestart.ProtoReflect.Descriptor instead. +func (*ActionProtocolBgpInitiateGracefulRestart) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{309} } -func (x *PatternFlowEthernetSrcCounter) GetStep() string { - if x != nil && x.Step != nil { - return *x.Step +func (x *ActionProtocolBgpInitiateGracefulRestart) GetPeerNames() []string { + if x != nil { + return x.PeerNames } - return "" + return nil } -func (x *PatternFlowEthernetSrcCounter) GetCount() uint32 { - if x != nil && x.Count != nil { - return *x.Count +func (x *ActionProtocolBgpInitiateGracefulRestart) GetRestartDelay() uint32 { + if x != nil && x.RestartDelay != nil { + return *x.RestartDelay } return 0 } -// Metric tag can be used to enable tracking portion of or all bits in a corresponding -// header field for metrics per each applicable value. These would appear as tagged -// metrics in corresponding flow metrics. -type PatternFlowEthernetSrcMetricTag struct { +// Request to traffic generator for metrics of choice. +type MetricsRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Name used to identify the metrics associated with the values applicable for configured - // offset and length inside corresponding header field - // required = true - Name *string `protobuf:"bytes,1,opt,name=name,proto3,oneof" json:"name,omitempty"` - // Offset in bits relative to start of corresponding header field - // default = 0 - Offset *uint32 `protobuf:"varint,2,opt,name=offset,proto3,oneof" json:"offset,omitempty"` - // Number of bits to track for metrics starting from configured offset of corresponding - // header field - // default = 48 - Length *uint32 `protobuf:"varint,3,opt,name=length,proto3,oneof" json:"length,omitempty"` + // Description missing in models + // default = Choice.Enum.port + Choice *MetricsRequest_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.MetricsRequest_Choice_Enum,oneof" json:"choice,omitempty"` + // Description missing in models + Port *PortMetricsRequest `protobuf:"bytes,2,opt,name=port,proto3" json:"port,omitempty"` + // Description missing in models + Flow *FlowMetricsRequest `protobuf:"bytes,3,opt,name=flow,proto3" json:"flow,omitempty"` + // Description missing in models + Bgpv4 *Bgpv4MetricsRequest `protobuf:"bytes,4,opt,name=bgpv4,proto3" json:"bgpv4,omitempty"` + // Description missing in models + Bgpv6 *Bgpv6MetricsRequest `protobuf:"bytes,5,opt,name=bgpv6,proto3" json:"bgpv6,omitempty"` + // Description missing in models + Isis *IsisMetricsRequest `protobuf:"bytes,6,opt,name=isis,proto3" json:"isis,omitempty"` + // Description missing in models + Lag *LagMetricsRequest `protobuf:"bytes,7,opt,name=lag,proto3" json:"lag,omitempty"` + // Description missing in models + Lacp *LacpMetricsRequest `protobuf:"bytes,8,opt,name=lacp,proto3" json:"lacp,omitempty"` + // Description missing in models + Lldp *LldpMetricsRequest `protobuf:"bytes,9,opt,name=lldp,proto3" json:"lldp,omitempty"` + // Description missing in models + Rsvp *RsvpMetricsRequest `protobuf:"bytes,10,opt,name=rsvp,proto3" json:"rsvp,omitempty"` } -func (x *PatternFlowEthernetSrcMetricTag) Reset() { - *x = PatternFlowEthernetSrcMetricTag{} +func (x *MetricsRequest) Reset() { + *x = MetricsRequest{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[334] + mi := &file_otg_proto_msgTypes[310] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowEthernetSrcMetricTag) String() string { +func (x *MetricsRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowEthernetSrcMetricTag) ProtoMessage() {} +func (*MetricsRequest) ProtoMessage() {} -func (x *PatternFlowEthernetSrcMetricTag) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[334] +func (x *MetricsRequest) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[310] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -46976,74 +46394,127 @@ func (x *PatternFlowEthernetSrcMetricTag) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use PatternFlowEthernetSrcMetricTag.ProtoReflect.Descriptor instead. -func (*PatternFlowEthernetSrcMetricTag) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{334} +// Deprecated: Use MetricsRequest.ProtoReflect.Descriptor instead. +func (*MetricsRequest) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{310} } -func (x *PatternFlowEthernetSrcMetricTag) GetName() string { - if x != nil && x.Name != nil { - return *x.Name +func (x *MetricsRequest) GetChoice() MetricsRequest_Choice_Enum { + if x != nil && x.Choice != nil { + return *x.Choice } - return "" + return MetricsRequest_Choice_unspecified } -func (x *PatternFlowEthernetSrcMetricTag) GetOffset() uint32 { - if x != nil && x.Offset != nil { - return *x.Offset +func (x *MetricsRequest) GetPort() *PortMetricsRequest { + if x != nil { + return x.Port } - return 0 + return nil } -func (x *PatternFlowEthernetSrcMetricTag) GetLength() uint32 { - if x != nil && x.Length != nil { - return *x.Length +func (x *MetricsRequest) GetFlow() *FlowMetricsRequest { + if x != nil { + return x.Flow } - return 0 + return nil } -// Source MAC address -type PatternFlowEthernetSrc struct { +func (x *MetricsRequest) GetBgpv4() *Bgpv4MetricsRequest { + if x != nil { + return x.Bgpv4 + } + return nil +} + +func (x *MetricsRequest) GetBgpv6() *Bgpv6MetricsRequest { + if x != nil { + return x.Bgpv6 + } + return nil +} + +func (x *MetricsRequest) GetIsis() *IsisMetricsRequest { + if x != nil { + return x.Isis + } + return nil +} + +func (x *MetricsRequest) GetLag() *LagMetricsRequest { + if x != nil { + return x.Lag + } + return nil +} + +func (x *MetricsRequest) GetLacp() *LacpMetricsRequest { + if x != nil { + return x.Lacp + } + return nil +} + +func (x *MetricsRequest) GetLldp() *LldpMetricsRequest { + if x != nil { + return x.Lldp + } + return nil +} + +func (x *MetricsRequest) GetRsvp() *RsvpMetricsRequest { + if x != nil { + return x.Rsvp + } + return nil +} + +// Response containing chosen traffic generator metrics. +type MetricsResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // Description missing in models - // default = Choice.Enum.value - Choice *PatternFlowEthernetSrc_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.PatternFlowEthernetSrc_Choice_Enum,oneof" json:"choice,omitempty"` + // default = Choice.Enum.port_metrics + Choice *MetricsResponse_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.MetricsResponse_Choice_Enum,oneof" json:"choice,omitempty"` // Description missing in models - // default = 00:00:00:00:00:00 - Value *string `protobuf:"bytes,2,opt,name=value,proto3,oneof" json:"value,omitempty"` + PortMetrics []*PortMetric `protobuf:"bytes,2,rep,name=port_metrics,json=portMetrics,proto3" json:"port_metrics,omitempty"` // Description missing in models - // default = ['00:00:00:00:00:00'] - Values []string `protobuf:"bytes,3,rep,name=values,proto3" json:"values,omitempty"` + FlowMetrics []*FlowMetric `protobuf:"bytes,3,rep,name=flow_metrics,json=flowMetrics,proto3" json:"flow_metrics,omitempty"` // Description missing in models - Increment *PatternFlowEthernetSrcCounter `protobuf:"bytes,5,opt,name=increment,proto3" json:"increment,omitempty"` + Bgpv4Metrics []*Bgpv4Metric `protobuf:"bytes,4,rep,name=bgpv4_metrics,json=bgpv4Metrics,proto3" json:"bgpv4_metrics,omitempty"` // Description missing in models - Decrement *PatternFlowEthernetSrcCounter `protobuf:"bytes,6,opt,name=decrement,proto3" json:"decrement,omitempty"` - // One or more metric tags can be used to enable tracking portion of or all bits in - // a corresponding header field for metrics per each applicable value. These would appear - // as tagged metrics in corresponding flow metrics. - MetricTags []*PatternFlowEthernetSrcMetricTag `protobuf:"bytes,7,rep,name=metric_tags,json=metricTags,proto3" json:"metric_tags,omitempty"` + Bgpv6Metrics []*Bgpv6Metric `protobuf:"bytes,5,rep,name=bgpv6_metrics,json=bgpv6Metrics,proto3" json:"bgpv6_metrics,omitempty"` + // Description missing in models + IsisMetrics []*IsisMetric `protobuf:"bytes,6,rep,name=isis_metrics,json=isisMetrics,proto3" json:"isis_metrics,omitempty"` + // Description missing in models + LagMetrics []*LagMetric `protobuf:"bytes,7,rep,name=lag_metrics,json=lagMetrics,proto3" json:"lag_metrics,omitempty"` + // Description missing in models + LacpMetrics []*LacpMetric `protobuf:"bytes,8,rep,name=lacp_metrics,json=lacpMetrics,proto3" json:"lacp_metrics,omitempty"` + // Description missing in models + LldpMetrics []*LldpMetric `protobuf:"bytes,9,rep,name=lldp_metrics,json=lldpMetrics,proto3" json:"lldp_metrics,omitempty"` + // Description missing in models + RsvpMetrics []*RsvpMetric `protobuf:"bytes,10,rep,name=rsvp_metrics,json=rsvpMetrics,proto3" json:"rsvp_metrics,omitempty"` } -func (x *PatternFlowEthernetSrc) Reset() { - *x = PatternFlowEthernetSrc{} +func (x *MetricsResponse) Reset() { + *x = MetricsResponse{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[335] + mi := &file_otg_proto_msgTypes[311] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowEthernetSrc) String() string { +func (x *MetricsResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowEthernetSrc) ProtoMessage() {} +func (*MetricsResponse) ProtoMessage() {} -func (x *PatternFlowEthernetSrc) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[335] +func (x *MetricsResponse) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[311] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -47054,87 +46525,115 @@ func (x *PatternFlowEthernetSrc) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use PatternFlowEthernetSrc.ProtoReflect.Descriptor instead. -func (*PatternFlowEthernetSrc) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{335} +// Deprecated: Use MetricsResponse.ProtoReflect.Descriptor instead. +func (*MetricsResponse) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{311} } -func (x *PatternFlowEthernetSrc) GetChoice() PatternFlowEthernetSrc_Choice_Enum { +func (x *MetricsResponse) GetChoice() MetricsResponse_Choice_Enum { if x != nil && x.Choice != nil { return *x.Choice } - return PatternFlowEthernetSrc_Choice_unspecified + return MetricsResponse_Choice_unspecified } -func (x *PatternFlowEthernetSrc) GetValue() string { - if x != nil && x.Value != nil { - return *x.Value +func (x *MetricsResponse) GetPortMetrics() []*PortMetric { + if x != nil { + return x.PortMetrics } - return "" + return nil } -func (x *PatternFlowEthernetSrc) GetValues() []string { +func (x *MetricsResponse) GetFlowMetrics() []*FlowMetric { if x != nil { - return x.Values + return x.FlowMetrics } return nil } -func (x *PatternFlowEthernetSrc) GetIncrement() *PatternFlowEthernetSrcCounter { +func (x *MetricsResponse) GetBgpv4Metrics() []*Bgpv4Metric { if x != nil { - return x.Increment + return x.Bgpv4Metrics } return nil } -func (x *PatternFlowEthernetSrc) GetDecrement() *PatternFlowEthernetSrcCounter { +func (x *MetricsResponse) GetBgpv6Metrics() []*Bgpv6Metric { if x != nil { - return x.Decrement + return x.Bgpv6Metrics } return nil } -func (x *PatternFlowEthernetSrc) GetMetricTags() []*PatternFlowEthernetSrcMetricTag { +func (x *MetricsResponse) GetIsisMetrics() []*IsisMetric { if x != nil { - return x.MetricTags + return x.IsisMetrics } return nil } -// integer counter pattern -type PatternFlowEthernetEtherTypeCounter struct { +func (x *MetricsResponse) GetLagMetrics() []*LagMetric { + if x != nil { + return x.LagMetrics + } + return nil +} + +func (x *MetricsResponse) GetLacpMetrics() []*LacpMetric { + if x != nil { + return x.LacpMetrics + } + return nil +} + +func (x *MetricsResponse) GetLldpMetrics() []*LldpMetric { + if x != nil { + return x.LldpMetrics + } + return nil +} + +func (x *MetricsResponse) GetRsvpMetrics() []*RsvpMetric { + if x != nil { + return x.RsvpMetrics + } + return nil +} + +// The port result request to the traffic generator +type PortMetricsRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Description missing in models - // default = 65535 - Start *uint32 `protobuf:"varint,1,opt,name=start,proto3,oneof" json:"start,omitempty"` - // Description missing in models - // default = 1 - Step *uint32 `protobuf:"varint,2,opt,name=step,proto3,oneof" json:"step,omitempty"` - // Description missing in models - // default = 1 - Count *uint32 `protobuf:"varint,3,opt,name=count,proto3,oneof" json:"count,omitempty"` + // The names of objects to return results for. An empty list will return all port row + // results. + // + // x-constraint: + // - /components/schemas/Port/properties/name + PortNames []string `protobuf:"bytes,1,rep,name=port_names,json=portNames,proto3" json:"port_names,omitempty"` + // The list of column names that the returned result set will contain. If the list is + // empty then all columns will be returned. The name of the port cannot be excluded. + ColumnNames []PortMetricsRequest_ColumnNames_Enum `protobuf:"varint,2,rep,packed,name=column_names,json=columnNames,proto3,enum=otg.PortMetricsRequest_ColumnNames_Enum" json:"column_names,omitempty"` } -func (x *PatternFlowEthernetEtherTypeCounter) Reset() { - *x = PatternFlowEthernetEtherTypeCounter{} +func (x *PortMetricsRequest) Reset() { + *x = PortMetricsRequest{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[336] + mi := &file_otg_proto_msgTypes[312] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowEthernetEtherTypeCounter) String() string { +func (x *PortMetricsRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowEthernetEtherTypeCounter) ProtoMessage() {} +func (*PortMetricsRequest) ProtoMessage() {} -func (x *PatternFlowEthernetEtherTypeCounter) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[336] +func (x *PortMetricsRequest) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[312] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -47145,70 +46644,81 @@ func (x *PatternFlowEthernetEtherTypeCounter) ProtoReflect() protoreflect.Messag return mi.MessageOf(x) } -// Deprecated: Use PatternFlowEthernetEtherTypeCounter.ProtoReflect.Descriptor instead. -func (*PatternFlowEthernetEtherTypeCounter) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{336} -} - -func (x *PatternFlowEthernetEtherTypeCounter) GetStart() uint32 { - if x != nil && x.Start != nil { - return *x.Start - } - return 0 +// Deprecated: Use PortMetricsRequest.ProtoReflect.Descriptor instead. +func (*PortMetricsRequest) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{312} } -func (x *PatternFlowEthernetEtherTypeCounter) GetStep() uint32 { - if x != nil && x.Step != nil { - return *x.Step +func (x *PortMetricsRequest) GetPortNames() []string { + if x != nil { + return x.PortNames } - return 0 + return nil } -func (x *PatternFlowEthernetEtherTypeCounter) GetCount() uint32 { - if x != nil && x.Count != nil { - return *x.Count +func (x *PortMetricsRequest) GetColumnNames() []PortMetricsRequest_ColumnNames_Enum { + if x != nil { + return x.ColumnNames } - return 0 + return nil } -// Metric tag can be used to enable tracking portion of or all bits in a corresponding -// header field for metrics per each applicable value. These would appear as tagged -// metrics in corresponding flow metrics. -type PatternFlowEthernetEtherTypeMetricTag struct { +// Description missing in models +type PortMetric struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Name used to identify the metrics associated with the values applicable for configured - // offset and length inside corresponding header field - // required = true + // The name of a configured port + // + // x-constraint: + // - /components/schemas/Port/properties/name Name *string `protobuf:"bytes,1,opt,name=name,proto3,oneof" json:"name,omitempty"` - // Offset in bits relative to start of corresponding header field - // default = 0 - Offset *uint32 `protobuf:"varint,2,opt,name=offset,proto3,oneof" json:"offset,omitempty"` - // Number of bits to track for metrics starting from configured offset of corresponding - // header field - // default = 16 - Length *uint32 `protobuf:"varint,3,opt,name=length,proto3,oneof" json:"length,omitempty"` + // The state of the connection to the test port location. The format should be the configured + // port location along with any custom connection state message. + Location *string `protobuf:"bytes,2,opt,name=location,proto3,oneof" json:"location,omitempty"` + // The state of the test port link The string can be up, down or a custom error message. + Link *PortMetric_Link_Enum `protobuf:"varint,3,opt,name=link,proto3,enum=otg.PortMetric_Link_Enum,oneof" json:"link,omitempty"` + // The state of the test port capture infrastructure. The string can be started, stopped + // or a custom error message. + Capture *PortMetric_Capture_Enum `protobuf:"varint,4,opt,name=capture,proto3,enum=otg.PortMetric_Capture_Enum,oneof" json:"capture,omitempty"` + // The current total number of frames transmitted + FramesTx *uint64 `protobuf:"varint,5,opt,name=frames_tx,json=framesTx,proto3,oneof" json:"frames_tx,omitempty"` + // The current total number of valid frames received + FramesRx *uint64 `protobuf:"varint,6,opt,name=frames_rx,json=framesRx,proto3,oneof" json:"frames_rx,omitempty"` + // The current total number of bytes transmitted + BytesTx *uint64 `protobuf:"varint,7,opt,name=bytes_tx,json=bytesTx,proto3,oneof" json:"bytes_tx,omitempty"` + // The current total number of valid bytes received + BytesRx *uint64 `protobuf:"varint,8,opt,name=bytes_rx,json=bytesRx,proto3,oneof" json:"bytes_rx,omitempty"` + // The current rate of frames transmitted + FramesTxRate *float32 `protobuf:"fixed32,9,opt,name=frames_tx_rate,json=framesTxRate,proto3,oneof" json:"frames_tx_rate,omitempty"` + // The current rate of valid frames received + FramesRxRate *float32 `protobuf:"fixed32,10,opt,name=frames_rx_rate,json=framesRxRate,proto3,oneof" json:"frames_rx_rate,omitempty"` + // The current rate of bytes transmitted + BytesTxRate *float32 `protobuf:"fixed32,11,opt,name=bytes_tx_rate,json=bytesTxRate,proto3,oneof" json:"bytes_tx_rate,omitempty"` + // The current rate of bytes received + BytesRxRate *float32 `protobuf:"fixed32,12,opt,name=bytes_rx_rate,json=bytesRxRate,proto3,oneof" json:"bytes_rx_rate,omitempty"` + // The transmit state of the flow. + Transmit *PortMetric_Transmit_Enum `protobuf:"varint,13,opt,name=transmit,proto3,enum=otg.PortMetric_Transmit_Enum,oneof" json:"transmit,omitempty"` } -func (x *PatternFlowEthernetEtherTypeMetricTag) Reset() { - *x = PatternFlowEthernetEtherTypeMetricTag{} +func (x *PortMetric) Reset() { + *x = PortMetric{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[337] + mi := &file_otg_proto_msgTypes[313] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowEthernetEtherTypeMetricTag) String() string { +func (x *PortMetric) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowEthernetEtherTypeMetricTag) ProtoMessage() {} +func (*PortMetric) ProtoMessage() {} -func (x *PatternFlowEthernetEtherTypeMetricTag) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[337] +func (x *PortMetric) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[313] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -47219,177 +46729,138 @@ func (x *PatternFlowEthernetEtherTypeMetricTag) ProtoReflect() protoreflect.Mess return mi.MessageOf(x) } -// Deprecated: Use PatternFlowEthernetEtherTypeMetricTag.ProtoReflect.Descriptor instead. -func (*PatternFlowEthernetEtherTypeMetricTag) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{337} +// Deprecated: Use PortMetric.ProtoReflect.Descriptor instead. +func (*PortMetric) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{313} } -func (x *PatternFlowEthernetEtherTypeMetricTag) GetName() string { +func (x *PortMetric) GetName() string { if x != nil && x.Name != nil { return *x.Name } return "" } -func (x *PatternFlowEthernetEtherTypeMetricTag) GetOffset() uint32 { - if x != nil && x.Offset != nil { - return *x.Offset +func (x *PortMetric) GetLocation() string { + if x != nil && x.Location != nil { + return *x.Location } - return 0 + return "" } -func (x *PatternFlowEthernetEtherTypeMetricTag) GetLength() uint32 { - if x != nil && x.Length != nil { - return *x.Length +func (x *PortMetric) GetLink() PortMetric_Link_Enum { + if x != nil && x.Link != nil { + return *x.Link } - return 0 -} - -// Ethernet type -type PatternFlowEthernetEtherType struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // Description missing in models - // default = Choice.Enum.auto - Choice *PatternFlowEthernetEtherType_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.PatternFlowEthernetEtherType_Choice_Enum,oneof" json:"choice,omitempty"` - // Description missing in models - // default = 65535 - Value *uint32 `protobuf:"varint,2,opt,name=value,proto3,oneof" json:"value,omitempty"` - // Description missing in models - // default = [65535] - Values []uint32 `protobuf:"varint,3,rep,packed,name=values,proto3" json:"values,omitempty"` - // The OTG implementation can provide a system generated - // value for this property. If the OTG is unable to generate a value - // the default value must be used. - // default = 65535 - Auto *uint32 `protobuf:"varint,4,opt,name=auto,proto3,oneof" json:"auto,omitempty"` - // Description missing in models - Increment *PatternFlowEthernetEtherTypeCounter `protobuf:"bytes,6,opt,name=increment,proto3" json:"increment,omitempty"` - // Description missing in models - Decrement *PatternFlowEthernetEtherTypeCounter `protobuf:"bytes,7,opt,name=decrement,proto3" json:"decrement,omitempty"` - // One or more metric tags can be used to enable tracking portion of or all bits in - // a corresponding header field for metrics per each applicable value. These would appear - // as tagged metrics in corresponding flow metrics. - MetricTags []*PatternFlowEthernetEtherTypeMetricTag `protobuf:"bytes,8,rep,name=metric_tags,json=metricTags,proto3" json:"metric_tags,omitempty"` + return PortMetric_Link_unspecified } -func (x *PatternFlowEthernetEtherType) Reset() { - *x = PatternFlowEthernetEtherType{} - if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[338] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) +func (x *PortMetric) GetCapture() PortMetric_Capture_Enum { + if x != nil && x.Capture != nil { + return *x.Capture } + return PortMetric_Capture_unspecified } -func (x *PatternFlowEthernetEtherType) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*PatternFlowEthernetEtherType) ProtoMessage() {} - -func (x *PatternFlowEthernetEtherType) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[338] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms +func (x *PortMetric) GetFramesTx() uint64 { + if x != nil && x.FramesTx != nil { + return *x.FramesTx } - return mi.MessageOf(x) + return 0 } -// Deprecated: Use PatternFlowEthernetEtherType.ProtoReflect.Descriptor instead. -func (*PatternFlowEthernetEtherType) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{338} +func (x *PortMetric) GetFramesRx() uint64 { + if x != nil && x.FramesRx != nil { + return *x.FramesRx + } + return 0 } -func (x *PatternFlowEthernetEtherType) GetChoice() PatternFlowEthernetEtherType_Choice_Enum { - if x != nil && x.Choice != nil { - return *x.Choice +func (x *PortMetric) GetBytesTx() uint64 { + if x != nil && x.BytesTx != nil { + return *x.BytesTx } - return PatternFlowEthernetEtherType_Choice_unspecified + return 0 } -func (x *PatternFlowEthernetEtherType) GetValue() uint32 { - if x != nil && x.Value != nil { - return *x.Value +func (x *PortMetric) GetBytesRx() uint64 { + if x != nil && x.BytesRx != nil { + return *x.BytesRx } return 0 } -func (x *PatternFlowEthernetEtherType) GetValues() []uint32 { - if x != nil { - return x.Values +func (x *PortMetric) GetFramesTxRate() float32 { + if x != nil && x.FramesTxRate != nil { + return *x.FramesTxRate } - return nil + return 0 } -func (x *PatternFlowEthernetEtherType) GetAuto() uint32 { - if x != nil && x.Auto != nil { - return *x.Auto +func (x *PortMetric) GetFramesRxRate() float32 { + if x != nil && x.FramesRxRate != nil { + return *x.FramesRxRate } return 0 } -func (x *PatternFlowEthernetEtherType) GetIncrement() *PatternFlowEthernetEtherTypeCounter { - if x != nil { - return x.Increment +func (x *PortMetric) GetBytesTxRate() float32 { + if x != nil && x.BytesTxRate != nil { + return *x.BytesTxRate } - return nil + return 0 } -func (x *PatternFlowEthernetEtherType) GetDecrement() *PatternFlowEthernetEtherTypeCounter { - if x != nil { - return x.Decrement +func (x *PortMetric) GetBytesRxRate() float32 { + if x != nil && x.BytesRxRate != nil { + return *x.BytesRxRate } - return nil + return 0 } -func (x *PatternFlowEthernetEtherType) GetMetricTags() []*PatternFlowEthernetEtherTypeMetricTag { - if x != nil { - return x.MetricTags +func (x *PortMetric) GetTransmit() PortMetric_Transmit_Enum { + if x != nil && x.Transmit != nil { + return *x.Transmit } - return nil + return PortMetric_Transmit_unspecified } -// integer counter pattern -type PatternFlowEthernetPfcQueueCounter struct { +// The container for a flow metric request. +type FlowMetricsRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields + // Flow metrics will be retrieved for these flow names. + // If no flow names are specified then all flows will be returned. + // + // x-constraint: + // - /components/schemas/Flow/properties/name + FlowNames []string `protobuf:"bytes,1,rep,name=flow_names,json=flowNames,proto3" json:"flow_names,omitempty"` + // The list of metric names that the returned result set will contain. If the list is + // empty then all metrics will be returned. + MetricNames []FlowMetricsRequest_MetricNames_Enum `protobuf:"varint,3,rep,packed,name=metric_names,json=metricNames,proto3,enum=otg.FlowMetricsRequest_MetricNames_Enum" json:"metric_names,omitempty"` // Description missing in models - // default = 0 - Start *uint32 `protobuf:"varint,1,opt,name=start,proto3,oneof" json:"start,omitempty"` - // Description missing in models - // default = 1 - Step *uint32 `protobuf:"varint,2,opt,name=step,proto3,oneof" json:"step,omitempty"` - // Description missing in models - // default = 1 - Count *uint32 `protobuf:"varint,3,opt,name=count,proto3,oneof" json:"count,omitempty"` + TaggedMetrics *FlowTaggedMetricsFilter `protobuf:"bytes,4,opt,name=tagged_metrics,json=taggedMetrics,proto3" json:"tagged_metrics,omitempty"` } -func (x *PatternFlowEthernetPfcQueueCounter) Reset() { - *x = PatternFlowEthernetPfcQueueCounter{} +func (x *FlowMetricsRequest) Reset() { + *x = FlowMetricsRequest{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[339] + mi := &file_otg_proto_msgTypes[314] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowEthernetPfcQueueCounter) String() string { +func (x *FlowMetricsRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowEthernetPfcQueueCounter) ProtoMessage() {} +func (*FlowMetricsRequest) ProtoMessage() {} -func (x *PatternFlowEthernetPfcQueueCounter) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[339] +func (x *FlowMetricsRequest) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[314] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -47400,70 +46871,70 @@ func (x *PatternFlowEthernetPfcQueueCounter) ProtoReflect() protoreflect.Message return mi.MessageOf(x) } -// Deprecated: Use PatternFlowEthernetPfcQueueCounter.ProtoReflect.Descriptor instead. -func (*PatternFlowEthernetPfcQueueCounter) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{339} +// Deprecated: Use FlowMetricsRequest.ProtoReflect.Descriptor instead. +func (*FlowMetricsRequest) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{314} } -func (x *PatternFlowEthernetPfcQueueCounter) GetStart() uint32 { - if x != nil && x.Start != nil { - return *x.Start +func (x *FlowMetricsRequest) GetFlowNames() []string { + if x != nil { + return x.FlowNames } - return 0 + return nil } -func (x *PatternFlowEthernetPfcQueueCounter) GetStep() uint32 { - if x != nil && x.Step != nil { - return *x.Step +func (x *FlowMetricsRequest) GetMetricNames() []FlowMetricsRequest_MetricNames_Enum { + if x != nil { + return x.MetricNames } - return 0 + return nil } -func (x *PatternFlowEthernetPfcQueueCounter) GetCount() uint32 { - if x != nil && x.Count != nil { - return *x.Count +func (x *FlowMetricsRequest) GetTaggedMetrics() *FlowTaggedMetricsFilter { + if x != nil { + return x.TaggedMetrics } - return 0 + return nil } -// Metric tag can be used to enable tracking portion of or all bits in a corresponding -// header field for metrics per each applicable value. These would appear as tagged -// metrics in corresponding flow metrics. -type PatternFlowEthernetPfcQueueMetricTag struct { +// Filter for tagged metrics +type FlowTaggedMetricsFilter struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Name used to identify the metrics associated with the values applicable for configured - // offset and length inside corresponding header field - // required = true - Name *string `protobuf:"bytes,1,opt,name=name,proto3,oneof" json:"name,omitempty"` - // Offset in bits relative to start of corresponding header field - // default = 0 - Offset *uint32 `protobuf:"varint,2,opt,name=offset,proto3,oneof" json:"offset,omitempty"` - // Number of bits to track for metrics starting from configured offset of corresponding - // header field - // default = 3 - Length *uint32 `protobuf:"varint,3,opt,name=length,proto3,oneof" json:"length,omitempty"` + // Controls inclusion/exclusion of tagged metrics when fetching flow metrics. + // default = True + Include *bool `protobuf:"varint,1,opt,name=include,proto3,oneof" json:"include,omitempty"` + // Controls inclusion/exclusion of tagged metrics where each underlying attributes has + // zero value or absent value. + // default = False + IncludeEmptyMetrics *bool `protobuf:"varint,2,opt,name=include_empty_metrics,json=includeEmptyMetrics,proto3,oneof" json:"include_empty_metrics,omitempty"` + // The list of metric names that the returned result set will contain. If the list is + // empty then all metrics will be returned. + MetricNames []FlowTaggedMetricsFilter_MetricNames_Enum `protobuf:"varint,3,rep,packed,name=metric_names,json=metricNames,proto3,enum=otg.FlowTaggedMetricsFilter_MetricNames_Enum" json:"metric_names,omitempty"` + // List of filters to selectively fetch tagged metrics with certain tag and corresponding + // value. + Filters []*FlowMetricTagFilter `protobuf:"bytes,4,rep,name=filters,proto3" json:"filters,omitempty"` } -func (x *PatternFlowEthernetPfcQueueMetricTag) Reset() { - *x = PatternFlowEthernetPfcQueueMetricTag{} +func (x *FlowTaggedMetricsFilter) Reset() { + *x = FlowTaggedMetricsFilter{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[340] + mi := &file_otg_proto_msgTypes[315] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowEthernetPfcQueueMetricTag) String() string { +func (x *FlowTaggedMetricsFilter) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowEthernetPfcQueueMetricTag) ProtoMessage() {} +func (*FlowTaggedMetricsFilter) ProtoMessage() {} -func (x *PatternFlowEthernetPfcQueueMetricTag) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[340] +func (x *FlowTaggedMetricsFilter) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[315] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -47474,74 +46945,71 @@ func (x *PatternFlowEthernetPfcQueueMetricTag) ProtoReflect() protoreflect.Messa return mi.MessageOf(x) } -// Deprecated: Use PatternFlowEthernetPfcQueueMetricTag.ProtoReflect.Descriptor instead. -func (*PatternFlowEthernetPfcQueueMetricTag) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{340} +// Deprecated: Use FlowTaggedMetricsFilter.ProtoReflect.Descriptor instead. +func (*FlowTaggedMetricsFilter) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{315} } -func (x *PatternFlowEthernetPfcQueueMetricTag) GetName() string { - if x != nil && x.Name != nil { - return *x.Name +func (x *FlowTaggedMetricsFilter) GetInclude() bool { + if x != nil && x.Include != nil { + return *x.Include } - return "" + return false } -func (x *PatternFlowEthernetPfcQueueMetricTag) GetOffset() uint32 { - if x != nil && x.Offset != nil { - return *x.Offset +func (x *FlowTaggedMetricsFilter) GetIncludeEmptyMetrics() bool { + if x != nil && x.IncludeEmptyMetrics != nil { + return *x.IncludeEmptyMetrics } - return 0 + return false } -func (x *PatternFlowEthernetPfcQueueMetricTag) GetLength() uint32 { - if x != nil && x.Length != nil { - return *x.Length +func (x *FlowTaggedMetricsFilter) GetMetricNames() []FlowTaggedMetricsFilter_MetricNames_Enum { + if x != nil { + return x.MetricNames } - return 0 + return nil } -// Priority flow control queue -type PatternFlowEthernetPfcQueue struct { +func (x *FlowTaggedMetricsFilter) GetFilters() []*FlowMetricTagFilter { + if x != nil { + return x.Filters + } + return nil +} + +// A container for filtering ingress and/or egress metric tags. +// The Tx stats may not be applicable in both the request and response filter. +type FlowMetricTagFilter struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Description missing in models - // default = Choice.Enum.value - Choice *PatternFlowEthernetPfcQueue_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.PatternFlowEthernetPfcQueue_Choice_Enum,oneof" json:"choice,omitempty"` - // Description missing in models - // default = 0 - Value *uint32 `protobuf:"varint,2,opt,name=value,proto3,oneof" json:"value,omitempty"` - // Description missing in models - // default = [0] - Values []uint32 `protobuf:"varint,3,rep,packed,name=values,proto3" json:"values,omitempty"` - // Description missing in models - Increment *PatternFlowEthernetPfcQueueCounter `protobuf:"bytes,5,opt,name=increment,proto3" json:"increment,omitempty"` - // Description missing in models - Decrement *PatternFlowEthernetPfcQueueCounter `protobuf:"bytes,6,opt,name=decrement,proto3" json:"decrement,omitempty"` - // One or more metric tags can be used to enable tracking portion of or all bits in - // a corresponding header field for metrics per each applicable value. These would appear - // as tagged metrics in corresponding flow metrics. - MetricTags []*PatternFlowEthernetPfcQueueMetricTag `protobuf:"bytes,7,rep,name=metric_tags,json=metricTags,proto3" json:"metric_tags,omitempty"` + // A metric tag name that MUST exist in a flow packet or + // flow egress_packet configuration + Name *string `protobuf:"bytes,1,opt,name=name,proto3,oneof" json:"name,omitempty"` + // A list of filters that can be applied to the metric tag name. + // By default all values will be included in the flow metric results. + Values []string `protobuf:"bytes,2,rep,name=values,proto3" json:"values,omitempty"` } -func (x *PatternFlowEthernetPfcQueue) Reset() { - *x = PatternFlowEthernetPfcQueue{} +func (x *FlowMetricTagFilter) Reset() { + *x = FlowMetricTagFilter{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[341] + mi := &file_otg_proto_msgTypes[316] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowEthernetPfcQueue) String() string { +func (x *FlowMetricTagFilter) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowEthernetPfcQueue) ProtoMessage() {} +func (*FlowMetricTagFilter) ProtoMessage() {} -func (x *PatternFlowEthernetPfcQueue) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[341] +func (x *FlowMetricTagFilter) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[316] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -47552,87 +47020,82 @@ func (x *PatternFlowEthernetPfcQueue) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use PatternFlowEthernetPfcQueue.ProtoReflect.Descriptor instead. -func (*PatternFlowEthernetPfcQueue) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{341} -} - -func (x *PatternFlowEthernetPfcQueue) GetChoice() PatternFlowEthernetPfcQueue_Choice_Enum { - if x != nil && x.Choice != nil { - return *x.Choice - } - return PatternFlowEthernetPfcQueue_Choice_unspecified +// Deprecated: Use FlowMetricTagFilter.ProtoReflect.Descriptor instead. +func (*FlowMetricTagFilter) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{316} } -func (x *PatternFlowEthernetPfcQueue) GetValue() uint32 { - if x != nil && x.Value != nil { - return *x.Value +func (x *FlowMetricTagFilter) GetName() string { + if x != nil && x.Name != nil { + return *x.Name } - return 0 + return "" } -func (x *PatternFlowEthernetPfcQueue) GetValues() []uint32 { +func (x *FlowMetricTagFilter) GetValues() []string { if x != nil { return x.Values } return nil } -func (x *PatternFlowEthernetPfcQueue) GetIncrement() *PatternFlowEthernetPfcQueueCounter { - if x != nil { - return x.Increment - } - return nil -} - -func (x *PatternFlowEthernetPfcQueue) GetDecrement() *PatternFlowEthernetPfcQueueCounter { - if x != nil { - return x.Decrement - } - return nil -} - -func (x *PatternFlowEthernetPfcQueue) GetMetricTags() []*PatternFlowEthernetPfcQueueMetricTag { - if x != nil { - return x.MetricTags - } - return nil -} - -// integer counter pattern -type PatternFlowVlanPriorityCounter struct { +// A container for flow metrics. +// The container is keyed by the name, port_tx and port_rx. +type FlowMetric struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields + // The name of the flow + Name *string `protobuf:"bytes,1,opt,name=name,proto3,oneof" json:"name,omitempty"` + // The name of the transmit port + PortTx *string `protobuf:"bytes,2,opt,name=port_tx,json=portTx,proto3,oneof" json:"port_tx,omitempty"` + // The name of the receive port + PortRx *string `protobuf:"bytes,3,opt,name=port_rx,json=portRx,proto3,oneof" json:"port_rx,omitempty"` + // The transmit state of the flow. + Transmit *FlowMetric_Transmit_Enum `protobuf:"varint,5,opt,name=transmit,proto3,enum=otg.FlowMetric_Transmit_Enum,oneof" json:"transmit,omitempty"` + // The current total number of frames transmitted + FramesTx *uint64 `protobuf:"varint,6,opt,name=frames_tx,json=framesTx,proto3,oneof" json:"frames_tx,omitempty"` + // The current total number of valid frames received + FramesRx *uint64 `protobuf:"varint,7,opt,name=frames_rx,json=framesRx,proto3,oneof" json:"frames_rx,omitempty"` + // The current total number of bytes transmitted + BytesTx *uint64 `protobuf:"varint,8,opt,name=bytes_tx,json=bytesTx,proto3,oneof" json:"bytes_tx,omitempty"` + // The current total number of bytes received + BytesRx *uint64 `protobuf:"varint,9,opt,name=bytes_rx,json=bytesRx,proto3,oneof" json:"bytes_rx,omitempty"` + // The current rate of frames transmitted + FramesTxRate *float32 `protobuf:"fixed32,10,opt,name=frames_tx_rate,json=framesTxRate,proto3,oneof" json:"frames_tx_rate,omitempty"` + // The current rate of valid frames received + FramesRxRate *float32 `protobuf:"fixed32,11,opt,name=frames_rx_rate,json=framesRxRate,proto3,oneof" json:"frames_rx_rate,omitempty"` + // The percentage of lost frames + Loss *float32 `protobuf:"fixed32,12,opt,name=loss,proto3,oneof" json:"loss,omitempty"` // Description missing in models - // default = 0 - Start *uint32 `protobuf:"varint,1,opt,name=start,proto3,oneof" json:"start,omitempty"` - // Description missing in models - // default = 1 - Step *uint32 `protobuf:"varint,2,opt,name=step,proto3,oneof" json:"step,omitempty"` + Timestamps *MetricTimestamp `protobuf:"bytes,13,opt,name=timestamps,proto3" json:"timestamps,omitempty"` // Description missing in models - // default = 1 - Count *uint32 `protobuf:"varint,3,opt,name=count,proto3,oneof" json:"count,omitempty"` + Latency *MetricLatency `protobuf:"bytes,14,opt,name=latency,proto3" json:"latency,omitempty"` + // List of metrics corresponding to a set of values applicable + // for configured metric tags in ingress or egress packet header fields of corresponding + // flow. + // The container is keyed by list of tag-value pairs. + TaggedMetrics []*FlowTaggedMetric `protobuf:"bytes,15,rep,name=tagged_metrics,json=taggedMetrics,proto3" json:"tagged_metrics,omitempty"` } -func (x *PatternFlowVlanPriorityCounter) Reset() { - *x = PatternFlowVlanPriorityCounter{} +func (x *FlowMetric) Reset() { + *x = FlowMetric{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[342] + mi := &file_otg_proto_msgTypes[317] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowVlanPriorityCounter) String() string { +func (x *FlowMetric) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowVlanPriorityCounter) ProtoMessage() {} +func (*FlowMetric) ProtoMessage() {} -func (x *PatternFlowVlanPriorityCounter) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[342] +func (x *FlowMetric) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[317] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -47643,148 +47106,156 @@ func (x *PatternFlowVlanPriorityCounter) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use PatternFlowVlanPriorityCounter.ProtoReflect.Descriptor instead. -func (*PatternFlowVlanPriorityCounter) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{342} +// Deprecated: Use FlowMetric.ProtoReflect.Descriptor instead. +func (*FlowMetric) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{317} } -func (x *PatternFlowVlanPriorityCounter) GetStart() uint32 { - if x != nil && x.Start != nil { - return *x.Start +func (x *FlowMetric) GetName() string { + if x != nil && x.Name != nil { + return *x.Name } - return 0 + return "" } -func (x *PatternFlowVlanPriorityCounter) GetStep() uint32 { - if x != nil && x.Step != nil { - return *x.Step +func (x *FlowMetric) GetPortTx() string { + if x != nil && x.PortTx != nil { + return *x.PortTx } - return 0 + return "" } -func (x *PatternFlowVlanPriorityCounter) GetCount() uint32 { - if x != nil && x.Count != nil { - return *x.Count +func (x *FlowMetric) GetPortRx() string { + if x != nil && x.PortRx != nil { + return *x.PortRx } - return 0 + return "" } -// Metric tag can be used to enable tracking portion of or all bits in a corresponding -// header field for metrics per each applicable value. These would appear as tagged -// metrics in corresponding flow metrics. -type PatternFlowVlanPriorityMetricTag struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // Name used to identify the metrics associated with the values applicable for configured - // offset and length inside corresponding header field - // required = true - Name *string `protobuf:"bytes,1,opt,name=name,proto3,oneof" json:"name,omitempty"` - // Offset in bits relative to start of corresponding header field - // default = 0 - Offset *uint32 `protobuf:"varint,2,opt,name=offset,proto3,oneof" json:"offset,omitempty"` - // Number of bits to track for metrics starting from configured offset of corresponding - // header field - // default = 3 - Length *uint32 `protobuf:"varint,3,opt,name=length,proto3,oneof" json:"length,omitempty"` +func (x *FlowMetric) GetTransmit() FlowMetric_Transmit_Enum { + if x != nil && x.Transmit != nil { + return *x.Transmit + } + return FlowMetric_Transmit_unspecified } -func (x *PatternFlowVlanPriorityMetricTag) Reset() { - *x = PatternFlowVlanPriorityMetricTag{} - if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[343] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) +func (x *FlowMetric) GetFramesTx() uint64 { + if x != nil && x.FramesTx != nil { + return *x.FramesTx } + return 0 } -func (x *PatternFlowVlanPriorityMetricTag) String() string { - return protoimpl.X.MessageStringOf(x) +func (x *FlowMetric) GetFramesRx() uint64 { + if x != nil && x.FramesRx != nil { + return *x.FramesRx + } + return 0 } -func (*PatternFlowVlanPriorityMetricTag) ProtoMessage() {} - -func (x *PatternFlowVlanPriorityMetricTag) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[343] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms +func (x *FlowMetric) GetBytesTx() uint64 { + if x != nil && x.BytesTx != nil { + return *x.BytesTx } - return mi.MessageOf(x) + return 0 } -// Deprecated: Use PatternFlowVlanPriorityMetricTag.ProtoReflect.Descriptor instead. -func (*PatternFlowVlanPriorityMetricTag) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{343} +func (x *FlowMetric) GetBytesRx() uint64 { + if x != nil && x.BytesRx != nil { + return *x.BytesRx + } + return 0 } -func (x *PatternFlowVlanPriorityMetricTag) GetName() string { - if x != nil && x.Name != nil { - return *x.Name +func (x *FlowMetric) GetFramesTxRate() float32 { + if x != nil && x.FramesTxRate != nil { + return *x.FramesTxRate } - return "" + return 0 } -func (x *PatternFlowVlanPriorityMetricTag) GetOffset() uint32 { - if x != nil && x.Offset != nil { - return *x.Offset +func (x *FlowMetric) GetFramesRxRate() float32 { + if x != nil && x.FramesRxRate != nil { + return *x.FramesRxRate } return 0 } -func (x *PatternFlowVlanPriorityMetricTag) GetLength() uint32 { - if x != nil && x.Length != nil { - return *x.Length +func (x *FlowMetric) GetLoss() float32 { + if x != nil && x.Loss != nil { + return *x.Loss } return 0 } -// Priority code point -type PatternFlowVlanPriority struct { +func (x *FlowMetric) GetTimestamps() *MetricTimestamp { + if x != nil { + return x.Timestamps + } + return nil +} + +func (x *FlowMetric) GetLatency() *MetricLatency { + if x != nil { + return x.Latency + } + return nil +} + +func (x *FlowMetric) GetTaggedMetrics() []*FlowTaggedMetric { + if x != nil { + return x.TaggedMetrics + } + return nil +} + +// Metrics for each set of values applicable for configured +// metric tags in ingress or egress packet header fields of corresponding flow. +// The container is keyed by list of tag-value pairs. +type FlowTaggedMetric struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields + // List of tag and value pairs + Tags []*FlowMetricTag `protobuf:"bytes,1,rep,name=tags,proto3" json:"tags,omitempty"` + // The current total number of frames transmitted + FramesTx *uint64 `protobuf:"varint,2,opt,name=frames_tx,json=framesTx,proto3,oneof" json:"frames_tx,omitempty"` + // The current total number of valid frames received + FramesRx *uint64 `protobuf:"varint,3,opt,name=frames_rx,json=framesRx,proto3,oneof" json:"frames_rx,omitempty"` + // The current total number of bytes transmitted + BytesTx *uint64 `protobuf:"varint,4,opt,name=bytes_tx,json=bytesTx,proto3,oneof" json:"bytes_tx,omitempty"` + // The current total number of bytes received + BytesRx *uint64 `protobuf:"varint,5,opt,name=bytes_rx,json=bytesRx,proto3,oneof" json:"bytes_rx,omitempty"` + // The current rate of frames transmitted + FramesTxRate *float32 `protobuf:"fixed32,6,opt,name=frames_tx_rate,json=framesTxRate,proto3,oneof" json:"frames_tx_rate,omitempty"` + // The current rate of valid frames received + FramesRxRate *float32 `protobuf:"fixed32,7,opt,name=frames_rx_rate,json=framesRxRate,proto3,oneof" json:"frames_rx_rate,omitempty"` + // The percentage of lost frames + Loss *float32 `protobuf:"fixed32,8,opt,name=loss,proto3,oneof" json:"loss,omitempty"` // Description missing in models - // default = Choice.Enum.value - Choice *PatternFlowVlanPriority_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.PatternFlowVlanPriority_Choice_Enum,oneof" json:"choice,omitempty"` - // Description missing in models - // default = 0 - Value *uint32 `protobuf:"varint,2,opt,name=value,proto3,oneof" json:"value,omitempty"` - // Description missing in models - // default = [0] - Values []uint32 `protobuf:"varint,3,rep,packed,name=values,proto3" json:"values,omitempty"` - // Description missing in models - Increment *PatternFlowVlanPriorityCounter `protobuf:"bytes,5,opt,name=increment,proto3" json:"increment,omitempty"` + Timestamps *MetricTimestamp `protobuf:"bytes,9,opt,name=timestamps,proto3" json:"timestamps,omitempty"` // Description missing in models - Decrement *PatternFlowVlanPriorityCounter `protobuf:"bytes,6,opt,name=decrement,proto3" json:"decrement,omitempty"` - // One or more metric tags can be used to enable tracking portion of or all bits in - // a corresponding header field for metrics per each applicable value. These would appear - // as tagged metrics in corresponding flow metrics. - MetricTags []*PatternFlowVlanPriorityMetricTag `protobuf:"bytes,7,rep,name=metric_tags,json=metricTags,proto3" json:"metric_tags,omitempty"` + Latency *MetricLatency `protobuf:"bytes,10,opt,name=latency,proto3" json:"latency,omitempty"` } -func (x *PatternFlowVlanPriority) Reset() { - *x = PatternFlowVlanPriority{} +func (x *FlowTaggedMetric) Reset() { + *x = FlowTaggedMetric{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[344] + mi := &file_otg_proto_msgTypes[318] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowVlanPriority) String() string { +func (x *FlowTaggedMetric) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowVlanPriority) ProtoMessage() {} +func (*FlowTaggedMetric) ProtoMessage() {} -func (x *PatternFlowVlanPriority) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[344] +func (x *FlowTaggedMetric) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[318] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -47795,87 +47266,110 @@ func (x *PatternFlowVlanPriority) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use PatternFlowVlanPriority.ProtoReflect.Descriptor instead. -func (*PatternFlowVlanPriority) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{344} +// Deprecated: Use FlowTaggedMetric.ProtoReflect.Descriptor instead. +func (*FlowTaggedMetric) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{318} } -func (x *PatternFlowVlanPriority) GetChoice() PatternFlowVlanPriority_Choice_Enum { - if x != nil && x.Choice != nil { - return *x.Choice +func (x *FlowTaggedMetric) GetTags() []*FlowMetricTag { + if x != nil { + return x.Tags } - return PatternFlowVlanPriority_Choice_unspecified + return nil } -func (x *PatternFlowVlanPriority) GetValue() uint32 { - if x != nil && x.Value != nil { - return *x.Value +func (x *FlowTaggedMetric) GetFramesTx() uint64 { + if x != nil && x.FramesTx != nil { + return *x.FramesTx } return 0 } -func (x *PatternFlowVlanPriority) GetValues() []uint32 { - if x != nil { - return x.Values +func (x *FlowTaggedMetric) GetFramesRx() uint64 { + if x != nil && x.FramesRx != nil { + return *x.FramesRx } - return nil + return 0 } -func (x *PatternFlowVlanPriority) GetIncrement() *PatternFlowVlanPriorityCounter { - if x != nil { - return x.Increment +func (x *FlowTaggedMetric) GetBytesTx() uint64 { + if x != nil && x.BytesTx != nil { + return *x.BytesTx } - return nil + return 0 } -func (x *PatternFlowVlanPriority) GetDecrement() *PatternFlowVlanPriorityCounter { +func (x *FlowTaggedMetric) GetBytesRx() uint64 { + if x != nil && x.BytesRx != nil { + return *x.BytesRx + } + return 0 +} + +func (x *FlowTaggedMetric) GetFramesTxRate() float32 { + if x != nil && x.FramesTxRate != nil { + return *x.FramesTxRate + } + return 0 +} + +func (x *FlowTaggedMetric) GetFramesRxRate() float32 { + if x != nil && x.FramesRxRate != nil { + return *x.FramesRxRate + } + return 0 +} + +func (x *FlowTaggedMetric) GetLoss() float32 { + if x != nil && x.Loss != nil { + return *x.Loss + } + return 0 +} + +func (x *FlowTaggedMetric) GetTimestamps() *MetricTimestamp { if x != nil { - return x.Decrement + return x.Timestamps } return nil } -func (x *PatternFlowVlanPriority) GetMetricTags() []*PatternFlowVlanPriorityMetricTag { +func (x *FlowTaggedMetric) GetLatency() *MetricLatency { if x != nil { - return x.MetricTags + return x.Latency } return nil } -// integer counter pattern -type PatternFlowVlanCfiCounter struct { +// Description missing in models +type FlowMetricTag struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields + // Name of packet field metric tag + Name *string `protobuf:"bytes,1,opt,name=name,proto3,oneof" json:"name,omitempty"` // Description missing in models - // default = 0 - Start *uint32 `protobuf:"varint,1,opt,name=start,proto3,oneof" json:"start,omitempty"` - // Description missing in models - // default = 1 - Step *uint32 `protobuf:"varint,2,opt,name=step,proto3,oneof" json:"step,omitempty"` - // Description missing in models - // default = 1 - Count *uint32 `protobuf:"varint,3,opt,name=count,proto3,oneof" json:"count,omitempty"` + Value *FlowMetricTagValue `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty"` } -func (x *PatternFlowVlanCfiCounter) Reset() { - *x = PatternFlowVlanCfiCounter{} +func (x *FlowMetricTag) Reset() { + *x = FlowMetricTag{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[345] + mi := &file_otg_proto_msgTypes[319] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowVlanCfiCounter) String() string { +func (x *FlowMetricTag) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowVlanCfiCounter) ProtoMessage() {} +func (*FlowMetricTag) ProtoMessage() {} -func (x *PatternFlowVlanCfiCounter) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[345] +func (x *FlowMetricTag) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[319] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -47886,70 +47380,57 @@ func (x *PatternFlowVlanCfiCounter) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use PatternFlowVlanCfiCounter.ProtoReflect.Descriptor instead. -func (*PatternFlowVlanCfiCounter) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{345} -} - -func (x *PatternFlowVlanCfiCounter) GetStart() uint32 { - if x != nil && x.Start != nil { - return *x.Start - } - return 0 +// Deprecated: Use FlowMetricTag.ProtoReflect.Descriptor instead. +func (*FlowMetricTag) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{319} } -func (x *PatternFlowVlanCfiCounter) GetStep() uint32 { - if x != nil && x.Step != nil { - return *x.Step +func (x *FlowMetricTag) GetName() string { + if x != nil && x.Name != nil { + return *x.Name } - return 0 + return "" } -func (x *PatternFlowVlanCfiCounter) GetCount() uint32 { - if x != nil && x.Count != nil { - return *x.Count +func (x *FlowMetricTag) GetValue() *FlowMetricTagValue { + if x != nil { + return x.Value } - return 0 + return nil } -// Metric tag can be used to enable tracking portion of or all bits in a corresponding -// header field for metrics per each applicable value. These would appear as tagged -// metrics in corresponding flow metrics. -type PatternFlowVlanCfiMetricTag struct { +// A container for metric tag value +type FlowMetricTagValue struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Name used to identify the metrics associated with the values applicable for configured - // offset and length inside corresponding header field - // required = true - Name *string `protobuf:"bytes,1,opt,name=name,proto3,oneof" json:"name,omitempty"` - // Offset in bits relative to start of corresponding header field - // default = 0 - Offset *uint32 `protobuf:"varint,2,opt,name=offset,proto3,oneof" json:"offset,omitempty"` - // Number of bits to track for metrics starting from configured offset of corresponding - // header field - // default = 1 - Length *uint32 `protobuf:"varint,3,opt,name=length,proto3,oneof" json:"length,omitempty"` + // Available formats for metric tag value + // default = Choice.Enum.hex + Choice *FlowMetricTagValue_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.FlowMetricTagValue_Choice_Enum,oneof" json:"choice,omitempty"` + // Value represented in hexadecimal format + Hex *string `protobuf:"bytes,2,opt,name=hex,proto3,oneof" json:"hex,omitempty"` + // Value represented in string format + Str *string `protobuf:"bytes,3,opt,name=str,proto3,oneof" json:"str,omitempty"` } -func (x *PatternFlowVlanCfiMetricTag) Reset() { - *x = PatternFlowVlanCfiMetricTag{} +func (x *FlowMetricTagValue) Reset() { + *x = FlowMetricTagValue{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[346] + mi := &file_otg_proto_msgTypes[320] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowVlanCfiMetricTag) String() string { +func (x *FlowMetricTagValue) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowVlanCfiMetricTag) ProtoMessage() {} +func (*FlowMetricTagValue) ProtoMessage() {} -func (x *PatternFlowVlanCfiMetricTag) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[346] +func (x *FlowMetricTagValue) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[320] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -47960,74 +47441,63 @@ func (x *PatternFlowVlanCfiMetricTag) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use PatternFlowVlanCfiMetricTag.ProtoReflect.Descriptor instead. -func (*PatternFlowVlanCfiMetricTag) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{346} +// Deprecated: Use FlowMetricTagValue.ProtoReflect.Descriptor instead. +func (*FlowMetricTagValue) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{320} } -func (x *PatternFlowVlanCfiMetricTag) GetName() string { - if x != nil && x.Name != nil { - return *x.Name +func (x *FlowMetricTagValue) GetChoice() FlowMetricTagValue_Choice_Enum { + if x != nil && x.Choice != nil { + return *x.Choice } - return "" + return FlowMetricTagValue_Choice_unspecified } -func (x *PatternFlowVlanCfiMetricTag) GetOffset() uint32 { - if x != nil && x.Offset != nil { - return *x.Offset +func (x *FlowMetricTagValue) GetHex() string { + if x != nil && x.Hex != nil { + return *x.Hex } - return 0 + return "" } -func (x *PatternFlowVlanCfiMetricTag) GetLength() uint32 { - if x != nil && x.Length != nil { - return *x.Length +func (x *FlowMetricTagValue) GetStr() string { + if x != nil && x.Str != nil { + return *x.Str } - return 0 + return "" } -// Canonical format indicator or drop elegible indicator -type PatternFlowVlanCfi struct { +// The container for timestamp metrics. +// The container will be empty if the timestamp has not been configured for +// the flow. +type MetricTimestamp struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Description missing in models - // default = Choice.Enum.value - Choice *PatternFlowVlanCfi_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.PatternFlowVlanCfi_Choice_Enum,oneof" json:"choice,omitempty"` - // Description missing in models - // default = 0 - Value *uint32 `protobuf:"varint,2,opt,name=value,proto3,oneof" json:"value,omitempty"` - // Description missing in models - // default = [0] - Values []uint32 `protobuf:"varint,3,rep,packed,name=values,proto3" json:"values,omitempty"` - // Description missing in models - Increment *PatternFlowVlanCfiCounter `protobuf:"bytes,5,opt,name=increment,proto3" json:"increment,omitempty"` - // Description missing in models - Decrement *PatternFlowVlanCfiCounter `protobuf:"bytes,6,opt,name=decrement,proto3" json:"decrement,omitempty"` - // One or more metric tags can be used to enable tracking portion of or all bits in - // a corresponding header field for metrics per each applicable value. These would appear - // as tagged metrics in corresponding flow metrics. - MetricTags []*PatternFlowVlanCfiMetricTag `protobuf:"bytes,7,rep,name=metric_tags,json=metricTags,proto3" json:"metric_tags,omitempty"` + // First timestamp in nanoseconds + FirstTimestampNs *float64 `protobuf:"fixed64,1,opt,name=first_timestamp_ns,json=firstTimestampNs,proto3,oneof" json:"first_timestamp_ns,omitempty"` + // Last timestamp in nanoseconds + LastTimestampNs *float64 `protobuf:"fixed64,2,opt,name=last_timestamp_ns,json=lastTimestampNs,proto3,oneof" json:"last_timestamp_ns,omitempty"` } -func (x *PatternFlowVlanCfi) Reset() { - *x = PatternFlowVlanCfi{} +func (x *MetricTimestamp) Reset() { + *x = MetricTimestamp{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[347] + mi := &file_otg_proto_msgTypes[321] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowVlanCfi) String() string { +func (x *MetricTimestamp) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowVlanCfi) ProtoMessage() {} +func (*MetricTimestamp) ProtoMessage() {} -func (x *PatternFlowVlanCfi) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[347] +func (x *MetricTimestamp) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[321] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -48038,87 +47508,60 @@ func (x *PatternFlowVlanCfi) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use PatternFlowVlanCfi.ProtoReflect.Descriptor instead. -func (*PatternFlowVlanCfi) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{347} -} - -func (x *PatternFlowVlanCfi) GetChoice() PatternFlowVlanCfi_Choice_Enum { - if x != nil && x.Choice != nil { - return *x.Choice - } - return PatternFlowVlanCfi_Choice_unspecified +// Deprecated: Use MetricTimestamp.ProtoReflect.Descriptor instead. +func (*MetricTimestamp) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{321} } -func (x *PatternFlowVlanCfi) GetValue() uint32 { - if x != nil && x.Value != nil { - return *x.Value +func (x *MetricTimestamp) GetFirstTimestampNs() float64 { + if x != nil && x.FirstTimestampNs != nil { + return *x.FirstTimestampNs } return 0 } -func (x *PatternFlowVlanCfi) GetValues() []uint32 { - if x != nil { - return x.Values - } - return nil -} - -func (x *PatternFlowVlanCfi) GetIncrement() *PatternFlowVlanCfiCounter { - if x != nil { - return x.Increment - } - return nil -} - -func (x *PatternFlowVlanCfi) GetDecrement() *PatternFlowVlanCfiCounter { - if x != nil { - return x.Decrement - } - return nil -} - -func (x *PatternFlowVlanCfi) GetMetricTags() []*PatternFlowVlanCfiMetricTag { - if x != nil { - return x.MetricTags +func (x *MetricTimestamp) GetLastTimestampNs() float64 { + if x != nil && x.LastTimestampNs != nil { + return *x.LastTimestampNs } - return nil + return 0 } -// integer counter pattern -type PatternFlowVlanIdCounter struct { +// The container for latency metrics. +// The min/max/avg values are dependent on the type of latency measurement +// mode that is configured. +// The container will be empty if the latency has not been configured for +// the flow. +type MetricLatency struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Description missing in models - // default = 0 - Start *uint32 `protobuf:"varint,1,opt,name=start,proto3,oneof" json:"start,omitempty"` - // Description missing in models - // default = 1 - Step *uint32 `protobuf:"varint,2,opt,name=step,proto3,oneof" json:"step,omitempty"` - // Description missing in models - // default = 1 - Count *uint32 `protobuf:"varint,3,opt,name=count,proto3,oneof" json:"count,omitempty"` + // Minimum latency in nanoseconds + MinimumNs *float64 `protobuf:"fixed64,1,opt,name=minimum_ns,json=minimumNs,proto3,oneof" json:"minimum_ns,omitempty"` + // Maximum latency in nanoseconds + MaximumNs *float64 `protobuf:"fixed64,2,opt,name=maximum_ns,json=maximumNs,proto3,oneof" json:"maximum_ns,omitempty"` + // Average latency in nanoseconds + AverageNs *float64 `protobuf:"fixed64,3,opt,name=average_ns,json=averageNs,proto3,oneof" json:"average_ns,omitempty"` } -func (x *PatternFlowVlanIdCounter) Reset() { - *x = PatternFlowVlanIdCounter{} +func (x *MetricLatency) Reset() { + *x = MetricLatency{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[348] + mi := &file_otg_proto_msgTypes[322] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowVlanIdCounter) String() string { +func (x *MetricLatency) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowVlanIdCounter) ProtoMessage() {} +func (*MetricLatency) ProtoMessage() {} -func (x *PatternFlowVlanIdCounter) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[348] +func (x *MetricLatency) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[322] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -48129,70 +47572,67 @@ func (x *PatternFlowVlanIdCounter) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use PatternFlowVlanIdCounter.ProtoReflect.Descriptor instead. -func (*PatternFlowVlanIdCounter) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{348} +// Deprecated: Use MetricLatency.ProtoReflect.Descriptor instead. +func (*MetricLatency) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{322} } -func (x *PatternFlowVlanIdCounter) GetStart() uint32 { - if x != nil && x.Start != nil { - return *x.Start +func (x *MetricLatency) GetMinimumNs() float64 { + if x != nil && x.MinimumNs != nil { + return *x.MinimumNs } return 0 } -func (x *PatternFlowVlanIdCounter) GetStep() uint32 { - if x != nil && x.Step != nil { - return *x.Step +func (x *MetricLatency) GetMaximumNs() float64 { + if x != nil && x.MaximumNs != nil { + return *x.MaximumNs } return 0 } -func (x *PatternFlowVlanIdCounter) GetCount() uint32 { - if x != nil && x.Count != nil { - return *x.Count +func (x *MetricLatency) GetAverageNs() float64 { + if x != nil && x.AverageNs != nil { + return *x.AverageNs } return 0 } -// Metric tag can be used to enable tracking portion of or all bits in a corresponding -// header field for metrics per each applicable value. These would appear as tagged -// metrics in corresponding flow metrics. -type PatternFlowVlanIdMetricTag struct { +// The request to retrieve BGPv4 per peer metrics/statistics. +type Bgpv4MetricsRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Name used to identify the metrics associated with the values applicable for configured - // offset and length inside corresponding header field - // required = true - Name *string `protobuf:"bytes,1,opt,name=name,proto3,oneof" json:"name,omitempty"` - // Offset in bits relative to start of corresponding header field - // default = 0 - Offset *uint32 `protobuf:"varint,2,opt,name=offset,proto3,oneof" json:"offset,omitempty"` - // Number of bits to track for metrics starting from configured offset of corresponding - // header field - // default = 12 - Length *uint32 `protobuf:"varint,3,opt,name=length,proto3,oneof" json:"length,omitempty"` + // The names of BGPv4 peers to return results for. An empty list will return results + // for all BGPv4 peers. + // + // x-constraint: + // - /components/schemas/Bgp.V4peer/properties/name + PeerNames []string `protobuf:"bytes,1,rep,name=peer_names,json=peerNames,proto3" json:"peer_names,omitempty"` + // The list of column names that the returned result set will contain. If the list is + // empty then all columns will be returned except for any result_groups. The name of + // the BGPv4 peer cannot be excluded. + ColumnNames []Bgpv4MetricsRequest_ColumnNames_Enum `protobuf:"varint,2,rep,packed,name=column_names,json=columnNames,proto3,enum=otg.Bgpv4MetricsRequest_ColumnNames_Enum" json:"column_names,omitempty"` } -func (x *PatternFlowVlanIdMetricTag) Reset() { - *x = PatternFlowVlanIdMetricTag{} +func (x *Bgpv4MetricsRequest) Reset() { + *x = Bgpv4MetricsRequest{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[349] + mi := &file_otg_proto_msgTypes[323] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowVlanIdMetricTag) String() string { +func (x *Bgpv4MetricsRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowVlanIdMetricTag) ProtoMessage() {} +func (*Bgpv4MetricsRequest) ProtoMessage() {} -func (x *PatternFlowVlanIdMetricTag) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[349] +func (x *Bgpv4MetricsRequest) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[323] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -48203,74 +47643,99 @@ func (x *PatternFlowVlanIdMetricTag) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use PatternFlowVlanIdMetricTag.ProtoReflect.Descriptor instead. -func (*PatternFlowVlanIdMetricTag) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{349} -} - -func (x *PatternFlowVlanIdMetricTag) GetName() string { - if x != nil && x.Name != nil { - return *x.Name - } - return "" +// Deprecated: Use Bgpv4MetricsRequest.ProtoReflect.Descriptor instead. +func (*Bgpv4MetricsRequest) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{323} } -func (x *PatternFlowVlanIdMetricTag) GetOffset() uint32 { - if x != nil && x.Offset != nil { - return *x.Offset +func (x *Bgpv4MetricsRequest) GetPeerNames() []string { + if x != nil { + return x.PeerNames } - return 0 + return nil } -func (x *PatternFlowVlanIdMetricTag) GetLength() uint32 { - if x != nil && x.Length != nil { - return *x.Length +func (x *Bgpv4MetricsRequest) GetColumnNames() []Bgpv4MetricsRequest_ColumnNames_Enum { + if x != nil { + return x.ColumnNames } - return 0 + return nil } -// Vlan identifier -type PatternFlowVlanId struct { +// BGPv4 per peer statistics information. +type Bgpv4Metric struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Description missing in models - // default = Choice.Enum.value - Choice *PatternFlowVlanId_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.PatternFlowVlanId_Choice_Enum,oneof" json:"choice,omitempty"` - // Description missing in models - // default = 0 - Value *uint32 `protobuf:"varint,2,opt,name=value,proto3,oneof" json:"value,omitempty"` - // Description missing in models - // default = [0] - Values []uint32 `protobuf:"varint,3,rep,packed,name=values,proto3" json:"values,omitempty"` - // Description missing in models - Increment *PatternFlowVlanIdCounter `protobuf:"bytes,5,opt,name=increment,proto3" json:"increment,omitempty"` - // Description missing in models - Decrement *PatternFlowVlanIdCounter `protobuf:"bytes,6,opt,name=decrement,proto3" json:"decrement,omitempty"` - // One or more metric tags can be used to enable tracking portion of or all bits in - // a corresponding header field for metrics per each applicable value. These would appear - // as tagged metrics in corresponding flow metrics. - MetricTags []*PatternFlowVlanIdMetricTag `protobuf:"bytes,7,rep,name=metric_tags,json=metricTags,proto3" json:"metric_tags,omitempty"` + // The name of a configured BGPv4 peer. + Name *string `protobuf:"bytes,1,opt,name=name,proto3,oneof" json:"name,omitempty"` + // Session state as up or down. Up refers to an Established state and Down refers to + // any other state. + SessionState *Bgpv4Metric_SessionState_Enum `protobuf:"varint,2,opt,name=session_state,json=sessionState,proto3,enum=otg.Bgpv4Metric_SessionState_Enum,oneof" json:"session_state,omitempty"` + // Number of times the session went from Up to Down state. + SessionFlapCount *uint64 `protobuf:"varint,3,opt,name=session_flap_count,json=sessionFlapCount,proto3,oneof" json:"session_flap_count,omitempty"` + // Number of routes advertised. + RoutesAdvertised *uint64 `protobuf:"varint,4,opt,name=routes_advertised,json=routesAdvertised,proto3,oneof" json:"routes_advertised,omitempty"` + // Number of routes received. + RoutesReceived *uint64 `protobuf:"varint,5,opt,name=routes_received,json=routesReceived,proto3,oneof" json:"routes_received,omitempty"` + // Number of route withdraws sent. + RouteWithdrawsSent *uint64 `protobuf:"varint,6,opt,name=route_withdraws_sent,json=routeWithdrawsSent,proto3,oneof" json:"route_withdraws_sent,omitempty"` + // Number of route withdraws received. + RouteWithdrawsReceived *uint64 `protobuf:"varint,7,opt,name=route_withdraws_received,json=routeWithdrawsReceived,proto3,oneof" json:"route_withdraws_received,omitempty"` + // Number of Update messages sent. + UpdatesSent *uint64 `protobuf:"varint,8,opt,name=updates_sent,json=updatesSent,proto3,oneof" json:"updates_sent,omitempty"` + // Number of Update messages received. + UpdatesReceived *uint64 `protobuf:"varint,9,opt,name=updates_received,json=updatesReceived,proto3,oneof" json:"updates_received,omitempty"` + // Number of Open messages sent. + OpensSent *uint64 `protobuf:"varint,10,opt,name=opens_sent,json=opensSent,proto3,oneof" json:"opens_sent,omitempty"` + // Number of Open messages received. + OpensReceived *uint64 `protobuf:"varint,11,opt,name=opens_received,json=opensReceived,proto3,oneof" json:"opens_received,omitempty"` + // Number of Keepalive messages sent. + KeepalivesSent *uint64 `protobuf:"varint,12,opt,name=keepalives_sent,json=keepalivesSent,proto3,oneof" json:"keepalives_sent,omitempty"` + // Number of Keepalive messages received. + KeepalivesReceived *uint64 `protobuf:"varint,13,opt,name=keepalives_received,json=keepalivesReceived,proto3,oneof" json:"keepalives_received,omitempty"` + // Number of Notification messages sent. + NotificationsSent *uint64 `protobuf:"varint,14,opt,name=notifications_sent,json=notificationsSent,proto3,oneof" json:"notifications_sent,omitempty"` + // Number of Notification messages received. + NotificationsReceived *uint64 `protobuf:"varint,15,opt,name=notifications_received,json=notificationsReceived,proto3,oneof" json:"notifications_received,omitempty"` + // BGP peer FSM (Finite State Machine) state as Idle, Connect, Active, OpenSent, OpenConfirm + // and Established. In all the states except Established the BGP session is down. Idle + // refers to the Idle state of the FSM. Connect refers to the state where the session + // is waiting for the underlying transport session to be established. Active refers + // to the state where the session is awaiting for a connection from the remote peer. + // OpenSent refers to the state where the session is in the process of being established. + // The local system has sent an OPEN message. OpenConfirm refers to the state where + // the session is in the process of being established. The local system has sent and + // received an OPEN message and is awaiting a NOTIFICATION or KEEPALIVE message from + // remote peer. Established refers to the state where the BGP session with the peer + // is established. + FsmState *Bgpv4Metric_FsmState_Enum `protobuf:"varint,16,opt,name=fsm_state,json=fsmState,proto3,enum=otg.Bgpv4Metric_FsmState_Enum,oneof" json:"fsm_state,omitempty"` + // Number of End-of-RIB markers received indicating the completion of the initial routing + // update for a particular address family after the session is established. + // For the IPv4 unicast address family, the End-of-RIB marker is an UPDATE message with + // the minimum length. For any other address family, it is an UPDATE message that contains + // only the MP_UNREACH_NLRI attribute with no withdrawn routes for that . + EndOfRibReceived *uint64 `protobuf:"varint,17,opt,name=end_of_rib_received,json=endOfRibReceived,proto3,oneof" json:"end_of_rib_received,omitempty"` } -func (x *PatternFlowVlanId) Reset() { - *x = PatternFlowVlanId{} +func (x *Bgpv4Metric) Reset() { + *x = Bgpv4Metric{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[350] + mi := &file_otg_proto_msgTypes[324] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowVlanId) String() string { +func (x *Bgpv4Metric) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowVlanId) ProtoMessage() {} +func (*Bgpv4Metric) ProtoMessage() {} -func (x *PatternFlowVlanId) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[350] +func (x *Bgpv4Metric) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[324] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -48281,161 +47746,165 @@ func (x *PatternFlowVlanId) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use PatternFlowVlanId.ProtoReflect.Descriptor instead. -func (*PatternFlowVlanId) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{350} +// Deprecated: Use Bgpv4Metric.ProtoReflect.Descriptor instead. +func (*Bgpv4Metric) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{324} } -func (x *PatternFlowVlanId) GetChoice() PatternFlowVlanId_Choice_Enum { - if x != nil && x.Choice != nil { - return *x.Choice +func (x *Bgpv4Metric) GetName() string { + if x != nil && x.Name != nil { + return *x.Name } - return PatternFlowVlanId_Choice_unspecified + return "" } -func (x *PatternFlowVlanId) GetValue() uint32 { - if x != nil && x.Value != nil { - return *x.Value +func (x *Bgpv4Metric) GetSessionState() Bgpv4Metric_SessionState_Enum { + if x != nil && x.SessionState != nil { + return *x.SessionState } - return 0 + return Bgpv4Metric_SessionState_unspecified } -func (x *PatternFlowVlanId) GetValues() []uint32 { - if x != nil { - return x.Values +func (x *Bgpv4Metric) GetSessionFlapCount() uint64 { + if x != nil && x.SessionFlapCount != nil { + return *x.SessionFlapCount } - return nil + return 0 } -func (x *PatternFlowVlanId) GetIncrement() *PatternFlowVlanIdCounter { - if x != nil { - return x.Increment +func (x *Bgpv4Metric) GetRoutesAdvertised() uint64 { + if x != nil && x.RoutesAdvertised != nil { + return *x.RoutesAdvertised } - return nil + return 0 } -func (x *PatternFlowVlanId) GetDecrement() *PatternFlowVlanIdCounter { - if x != nil { - return x.Decrement +func (x *Bgpv4Metric) GetRoutesReceived() uint64 { + if x != nil && x.RoutesReceived != nil { + return *x.RoutesReceived } - return nil + return 0 } -func (x *PatternFlowVlanId) GetMetricTags() []*PatternFlowVlanIdMetricTag { - if x != nil { - return x.MetricTags +func (x *Bgpv4Metric) GetRouteWithdrawsSent() uint64 { + if x != nil && x.RouteWithdrawsSent != nil { + return *x.RouteWithdrawsSent } - return nil + return 0 } -// integer counter pattern -type PatternFlowVlanTpidCounter struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields +func (x *Bgpv4Metric) GetRouteWithdrawsReceived() uint64 { + if x != nil && x.RouteWithdrawsReceived != nil { + return *x.RouteWithdrawsReceived + } + return 0 +} - // Description missing in models - // default = 65535 - Start *uint32 `protobuf:"varint,1,opt,name=start,proto3,oneof" json:"start,omitempty"` - // Description missing in models - // default = 1 - Step *uint32 `protobuf:"varint,2,opt,name=step,proto3,oneof" json:"step,omitempty"` - // Description missing in models - // default = 1 - Count *uint32 `protobuf:"varint,3,opt,name=count,proto3,oneof" json:"count,omitempty"` +func (x *Bgpv4Metric) GetUpdatesSent() uint64 { + if x != nil && x.UpdatesSent != nil { + return *x.UpdatesSent + } + return 0 } -func (x *PatternFlowVlanTpidCounter) Reset() { - *x = PatternFlowVlanTpidCounter{} - if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[351] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) +func (x *Bgpv4Metric) GetUpdatesReceived() uint64 { + if x != nil && x.UpdatesReceived != nil { + return *x.UpdatesReceived } + return 0 } -func (x *PatternFlowVlanTpidCounter) String() string { - return protoimpl.X.MessageStringOf(x) +func (x *Bgpv4Metric) GetOpensSent() uint64 { + if x != nil && x.OpensSent != nil { + return *x.OpensSent + } + return 0 } -func (*PatternFlowVlanTpidCounter) ProtoMessage() {} +func (x *Bgpv4Metric) GetOpensReceived() uint64 { + if x != nil && x.OpensReceived != nil { + return *x.OpensReceived + } + return 0 +} -func (x *PatternFlowVlanTpidCounter) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[351] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms +func (x *Bgpv4Metric) GetKeepalivesSent() uint64 { + if x != nil && x.KeepalivesSent != nil { + return *x.KeepalivesSent } - return mi.MessageOf(x) + return 0 } -// Deprecated: Use PatternFlowVlanTpidCounter.ProtoReflect.Descriptor instead. -func (*PatternFlowVlanTpidCounter) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{351} +func (x *Bgpv4Metric) GetKeepalivesReceived() uint64 { + if x != nil && x.KeepalivesReceived != nil { + return *x.KeepalivesReceived + } + return 0 } -func (x *PatternFlowVlanTpidCounter) GetStart() uint32 { - if x != nil && x.Start != nil { - return *x.Start +func (x *Bgpv4Metric) GetNotificationsSent() uint64 { + if x != nil && x.NotificationsSent != nil { + return *x.NotificationsSent } return 0 } -func (x *PatternFlowVlanTpidCounter) GetStep() uint32 { - if x != nil && x.Step != nil { - return *x.Step +func (x *Bgpv4Metric) GetNotificationsReceived() uint64 { + if x != nil && x.NotificationsReceived != nil { + return *x.NotificationsReceived } return 0 } -func (x *PatternFlowVlanTpidCounter) GetCount() uint32 { - if x != nil && x.Count != nil { - return *x.Count +func (x *Bgpv4Metric) GetFsmState() Bgpv4Metric_FsmState_Enum { + if x != nil && x.FsmState != nil { + return *x.FsmState + } + return Bgpv4Metric_FsmState_unspecified +} + +func (x *Bgpv4Metric) GetEndOfRibReceived() uint64 { + if x != nil && x.EndOfRibReceived != nil { + return *x.EndOfRibReceived } return 0 } -// Metric tag can be used to enable tracking portion of or all bits in a corresponding -// header field for metrics per each applicable value. These would appear as tagged -// metrics in corresponding flow metrics. -type PatternFlowVlanTpidMetricTag struct { +// The request to retrieve BGPv6 per peer metrics/statistics. +type Bgpv6MetricsRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Name used to identify the metrics associated with the values applicable for configured - // offset and length inside corresponding header field - // required = true - Name *string `protobuf:"bytes,1,opt,name=name,proto3,oneof" json:"name,omitempty"` - // Offset in bits relative to start of corresponding header field - // default = 0 - Offset *uint32 `protobuf:"varint,2,opt,name=offset,proto3,oneof" json:"offset,omitempty"` - // Number of bits to track for metrics starting from configured offset of corresponding - // header field - // default = 16 - Length *uint32 `protobuf:"varint,3,opt,name=length,proto3,oneof" json:"length,omitempty"` + // The names of BGPv6 peers to return results for. An empty list will return results + // for all BGPv6 peers. + // + // x-constraint: + // - /components/schemas/Bgp.V6peer/properties/name + PeerNames []string `protobuf:"bytes,1,rep,name=peer_names,json=peerNames,proto3" json:"peer_names,omitempty"` + // The list of column names that the returned result set will contain. If the list is + // empty then all columns will be returned except for any result_groups. The name of + // the BGPv6 peer cannot be excluded. + ColumnNames []Bgpv6MetricsRequest_ColumnNames_Enum `protobuf:"varint,2,rep,packed,name=column_names,json=columnNames,proto3,enum=otg.Bgpv6MetricsRequest_ColumnNames_Enum" json:"column_names,omitempty"` } -func (x *PatternFlowVlanTpidMetricTag) Reset() { - *x = PatternFlowVlanTpidMetricTag{} +func (x *Bgpv6MetricsRequest) Reset() { + *x = Bgpv6MetricsRequest{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[352] + mi := &file_otg_proto_msgTypes[325] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowVlanTpidMetricTag) String() string { +func (x *Bgpv6MetricsRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowVlanTpidMetricTag) ProtoMessage() {} +func (*Bgpv6MetricsRequest) ProtoMessage() {} -func (x *PatternFlowVlanTpidMetricTag) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[352] +func (x *Bgpv6MetricsRequest) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[325] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -48446,74 +47915,99 @@ func (x *PatternFlowVlanTpidMetricTag) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use PatternFlowVlanTpidMetricTag.ProtoReflect.Descriptor instead. -func (*PatternFlowVlanTpidMetricTag) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{352} -} - -func (x *PatternFlowVlanTpidMetricTag) GetName() string { - if x != nil && x.Name != nil { - return *x.Name - } - return "" +// Deprecated: Use Bgpv6MetricsRequest.ProtoReflect.Descriptor instead. +func (*Bgpv6MetricsRequest) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{325} } -func (x *PatternFlowVlanTpidMetricTag) GetOffset() uint32 { - if x != nil && x.Offset != nil { - return *x.Offset +func (x *Bgpv6MetricsRequest) GetPeerNames() []string { + if x != nil { + return x.PeerNames } - return 0 + return nil } -func (x *PatternFlowVlanTpidMetricTag) GetLength() uint32 { - if x != nil && x.Length != nil { - return *x.Length +func (x *Bgpv6MetricsRequest) GetColumnNames() []Bgpv6MetricsRequest_ColumnNames_Enum { + if x != nil { + return x.ColumnNames } - return 0 + return nil } -// Protocol identifier -type PatternFlowVlanTpid struct { +// BGPv6 per peer statistics information. +type Bgpv6Metric struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Description missing in models - // default = Choice.Enum.value - Choice *PatternFlowVlanTpid_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.PatternFlowVlanTpid_Choice_Enum,oneof" json:"choice,omitempty"` - // Description missing in models - // default = 65535 - Value *uint32 `protobuf:"varint,2,opt,name=value,proto3,oneof" json:"value,omitempty"` - // Description missing in models - // default = [65535] - Values []uint32 `protobuf:"varint,3,rep,packed,name=values,proto3" json:"values,omitempty"` - // Description missing in models - Increment *PatternFlowVlanTpidCounter `protobuf:"bytes,5,opt,name=increment,proto3" json:"increment,omitempty"` - // Description missing in models - Decrement *PatternFlowVlanTpidCounter `protobuf:"bytes,6,opt,name=decrement,proto3" json:"decrement,omitempty"` - // One or more metric tags can be used to enable tracking portion of or all bits in - // a corresponding header field for metrics per each applicable value. These would appear - // as tagged metrics in corresponding flow metrics. - MetricTags []*PatternFlowVlanTpidMetricTag `protobuf:"bytes,7,rep,name=metric_tags,json=metricTags,proto3" json:"metric_tags,omitempty"` + // The name of a configured BGPv6 peer. + Name *string `protobuf:"bytes,1,opt,name=name,proto3,oneof" json:"name,omitempty"` + // Session state as up or down. Up refers to an Established state and Down refers to + // any other state. + SessionState *Bgpv6Metric_SessionState_Enum `protobuf:"varint,2,opt,name=session_state,json=sessionState,proto3,enum=otg.Bgpv6Metric_SessionState_Enum,oneof" json:"session_state,omitempty"` + // Number of times the session went from Up to Down state. + SessionFlapCount *uint64 `protobuf:"varint,3,opt,name=session_flap_count,json=sessionFlapCount,proto3,oneof" json:"session_flap_count,omitempty"` + // Number of routes advertised. + RoutesAdvertised *uint64 `protobuf:"varint,4,opt,name=routes_advertised,json=routesAdvertised,proto3,oneof" json:"routes_advertised,omitempty"` + // Number of routes received. + RoutesReceived *uint64 `protobuf:"varint,5,opt,name=routes_received,json=routesReceived,proto3,oneof" json:"routes_received,omitempty"` + // Number of route withdraws sent. + RouteWithdrawsSent *uint64 `protobuf:"varint,6,opt,name=route_withdraws_sent,json=routeWithdrawsSent,proto3,oneof" json:"route_withdraws_sent,omitempty"` + // Number of route withdraws received. + RouteWithdrawsReceived *uint64 `protobuf:"varint,7,opt,name=route_withdraws_received,json=routeWithdrawsReceived,proto3,oneof" json:"route_withdraws_received,omitempty"` + // Number of Update messages sent. + UpdatesSent *uint64 `protobuf:"varint,8,opt,name=updates_sent,json=updatesSent,proto3,oneof" json:"updates_sent,omitempty"` + // Number of Update messages received. + UpdatesReceived *uint64 `protobuf:"varint,9,opt,name=updates_received,json=updatesReceived,proto3,oneof" json:"updates_received,omitempty"` + // Number of Open messages sent. + OpensSent *uint64 `protobuf:"varint,10,opt,name=opens_sent,json=opensSent,proto3,oneof" json:"opens_sent,omitempty"` + // Number of Open messages received. + OpensReceived *uint64 `protobuf:"varint,11,opt,name=opens_received,json=opensReceived,proto3,oneof" json:"opens_received,omitempty"` + // Number of Keepalive messages sent. + KeepalivesSent *uint64 `protobuf:"varint,12,opt,name=keepalives_sent,json=keepalivesSent,proto3,oneof" json:"keepalives_sent,omitempty"` + // Number of Keepalive messages received. + KeepalivesReceived *uint64 `protobuf:"varint,13,opt,name=keepalives_received,json=keepalivesReceived,proto3,oneof" json:"keepalives_received,omitempty"` + // Number of Notification messages sent. + NotificationsSent *uint64 `protobuf:"varint,14,opt,name=notifications_sent,json=notificationsSent,proto3,oneof" json:"notifications_sent,omitempty"` + // Number of Notification messages received. + NotificationsReceived *uint64 `protobuf:"varint,15,opt,name=notifications_received,json=notificationsReceived,proto3,oneof" json:"notifications_received,omitempty"` + // BGP peer FSM (Finite State Machine) state as Idle, Connect, Active, OpenSent, OpenConfirm + // and Established. In all the states except Established the BGP session is down. Idle + // refers to the Idle state of the FSM. Connect refers to the state where the session + // is waiting for the underlying transport session to be established. Active refers + // to the state where the session is awaiting for a connection from the remote peer. + // OpenSent refers to the state where the session is in the process of being established. + // The local system has sent an OPEN message. OpenConfirm refers to the state where + // the session is in the process of being established. The local system has sent and + // received an OPEN message and is awaiting a NOTIFICATION or KEEPALIVE message from + // remote peer. Established refers to the state where the BGP session with the peer + // is established. + FsmState *Bgpv6Metric_FsmState_Enum `protobuf:"varint,16,opt,name=fsm_state,json=fsmState,proto3,enum=otg.Bgpv6Metric_FsmState_Enum,oneof" json:"fsm_state,omitempty"` + // Number of End-of-RIB markers received indicating the completion of the initial routing + // update for a particular address family after the session is established. + // For the IPv4 unicast address family, the End-of-RIB marker is an UPDATE message with + // the minimum length. For any other address family, it is an UPDATE message that contains + // only the MP_UNREACH_NLRI attribute with no withdrawn routes for that . + EndOfRibReceived *uint64 `protobuf:"varint,17,opt,name=end_of_rib_received,json=endOfRibReceived,proto3,oneof" json:"end_of_rib_received,omitempty"` } -func (x *PatternFlowVlanTpid) Reset() { - *x = PatternFlowVlanTpid{} +func (x *Bgpv6Metric) Reset() { + *x = Bgpv6Metric{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[353] + mi := &file_otg_proto_msgTypes[326] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowVlanTpid) String() string { +func (x *Bgpv6Metric) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowVlanTpid) ProtoMessage() {} +func (*Bgpv6Metric) ProtoMessage() {} -func (x *PatternFlowVlanTpid) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[353] +func (x *Bgpv6Metric) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[326] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -48524,161 +48018,165 @@ func (x *PatternFlowVlanTpid) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use PatternFlowVlanTpid.ProtoReflect.Descriptor instead. -func (*PatternFlowVlanTpid) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{353} +// Deprecated: Use Bgpv6Metric.ProtoReflect.Descriptor instead. +func (*Bgpv6Metric) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{326} } -func (x *PatternFlowVlanTpid) GetChoice() PatternFlowVlanTpid_Choice_Enum { - if x != nil && x.Choice != nil { - return *x.Choice +func (x *Bgpv6Metric) GetName() string { + if x != nil && x.Name != nil { + return *x.Name } - return PatternFlowVlanTpid_Choice_unspecified + return "" } -func (x *PatternFlowVlanTpid) GetValue() uint32 { - if x != nil && x.Value != nil { - return *x.Value +func (x *Bgpv6Metric) GetSessionState() Bgpv6Metric_SessionState_Enum { + if x != nil && x.SessionState != nil { + return *x.SessionState } - return 0 + return Bgpv6Metric_SessionState_unspecified } -func (x *PatternFlowVlanTpid) GetValues() []uint32 { - if x != nil { - return x.Values +func (x *Bgpv6Metric) GetSessionFlapCount() uint64 { + if x != nil && x.SessionFlapCount != nil { + return *x.SessionFlapCount } - return nil + return 0 } -func (x *PatternFlowVlanTpid) GetIncrement() *PatternFlowVlanTpidCounter { - if x != nil { - return x.Increment +func (x *Bgpv6Metric) GetRoutesAdvertised() uint64 { + if x != nil && x.RoutesAdvertised != nil { + return *x.RoutesAdvertised } - return nil + return 0 } -func (x *PatternFlowVlanTpid) GetDecrement() *PatternFlowVlanTpidCounter { - if x != nil { - return x.Decrement +func (x *Bgpv6Metric) GetRoutesReceived() uint64 { + if x != nil && x.RoutesReceived != nil { + return *x.RoutesReceived } - return nil + return 0 } -func (x *PatternFlowVlanTpid) GetMetricTags() []*PatternFlowVlanTpidMetricTag { - if x != nil { - return x.MetricTags +func (x *Bgpv6Metric) GetRouteWithdrawsSent() uint64 { + if x != nil && x.RouteWithdrawsSent != nil { + return *x.RouteWithdrawsSent } - return nil + return 0 } -// integer counter pattern -type PatternFlowVxlanFlagsCounter struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields +func (x *Bgpv6Metric) GetRouteWithdrawsReceived() uint64 { + if x != nil && x.RouteWithdrawsReceived != nil { + return *x.RouteWithdrawsReceived + } + return 0 +} - // Description missing in models - // default = 8 - Start *uint32 `protobuf:"varint,1,opt,name=start,proto3,oneof" json:"start,omitempty"` - // Description missing in models - // default = 1 - Step *uint32 `protobuf:"varint,2,opt,name=step,proto3,oneof" json:"step,omitempty"` - // Description missing in models - // default = 1 - Count *uint32 `protobuf:"varint,3,opt,name=count,proto3,oneof" json:"count,omitempty"` +func (x *Bgpv6Metric) GetUpdatesSent() uint64 { + if x != nil && x.UpdatesSent != nil { + return *x.UpdatesSent + } + return 0 } -func (x *PatternFlowVxlanFlagsCounter) Reset() { - *x = PatternFlowVxlanFlagsCounter{} - if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[354] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) +func (x *Bgpv6Metric) GetUpdatesReceived() uint64 { + if x != nil && x.UpdatesReceived != nil { + return *x.UpdatesReceived } + return 0 } -func (x *PatternFlowVxlanFlagsCounter) String() string { - return protoimpl.X.MessageStringOf(x) +func (x *Bgpv6Metric) GetOpensSent() uint64 { + if x != nil && x.OpensSent != nil { + return *x.OpensSent + } + return 0 } -func (*PatternFlowVxlanFlagsCounter) ProtoMessage() {} +func (x *Bgpv6Metric) GetOpensReceived() uint64 { + if x != nil && x.OpensReceived != nil { + return *x.OpensReceived + } + return 0 +} -func (x *PatternFlowVxlanFlagsCounter) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[354] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms +func (x *Bgpv6Metric) GetKeepalivesSent() uint64 { + if x != nil && x.KeepalivesSent != nil { + return *x.KeepalivesSent } - return mi.MessageOf(x) + return 0 } -// Deprecated: Use PatternFlowVxlanFlagsCounter.ProtoReflect.Descriptor instead. -func (*PatternFlowVxlanFlagsCounter) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{354} +func (x *Bgpv6Metric) GetKeepalivesReceived() uint64 { + if x != nil && x.KeepalivesReceived != nil { + return *x.KeepalivesReceived + } + return 0 } -func (x *PatternFlowVxlanFlagsCounter) GetStart() uint32 { - if x != nil && x.Start != nil { - return *x.Start +func (x *Bgpv6Metric) GetNotificationsSent() uint64 { + if x != nil && x.NotificationsSent != nil { + return *x.NotificationsSent } return 0 } -func (x *PatternFlowVxlanFlagsCounter) GetStep() uint32 { - if x != nil && x.Step != nil { - return *x.Step +func (x *Bgpv6Metric) GetNotificationsReceived() uint64 { + if x != nil && x.NotificationsReceived != nil { + return *x.NotificationsReceived } return 0 } -func (x *PatternFlowVxlanFlagsCounter) GetCount() uint32 { - if x != nil && x.Count != nil { - return *x.Count +func (x *Bgpv6Metric) GetFsmState() Bgpv6Metric_FsmState_Enum { + if x != nil && x.FsmState != nil { + return *x.FsmState + } + return Bgpv6Metric_FsmState_unspecified +} + +func (x *Bgpv6Metric) GetEndOfRibReceived() uint64 { + if x != nil && x.EndOfRibReceived != nil { + return *x.EndOfRibReceived } return 0 } -// Metric tag can be used to enable tracking portion of or all bits in a corresponding -// header field for metrics per each applicable value. These would appear as tagged -// metrics in corresponding flow metrics. -type PatternFlowVxlanFlagsMetricTag struct { +// The request to retrieve ISIS per Router metrics/statistics. +type IsisMetricsRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Name used to identify the metrics associated with the values applicable for configured - // offset and length inside corresponding header field - // required = true - Name *string `protobuf:"bytes,1,opt,name=name,proto3,oneof" json:"name,omitempty"` - // Offset in bits relative to start of corresponding header field - // default = 0 - Offset *uint32 `protobuf:"varint,2,opt,name=offset,proto3,oneof" json:"offset,omitempty"` - // Number of bits to track for metrics starting from configured offset of corresponding - // header field - // default = 8 - Length *uint32 `protobuf:"varint,3,opt,name=length,proto3,oneof" json:"length,omitempty"` + // The names of ISIS Routers to return results for. An empty list will return results + // for all ISIS router. + // + // x-constraint: + // - /components/schemas/Device.IsisRouter/properties/name + RouterNames []string `protobuf:"bytes,1,rep,name=router_names,json=routerNames,proto3" json:"router_names,omitempty"` + // The list of column names that the returned result set will contain. If the list is + // empty then all columns will be returned except for any result_groups. The name of + // the ISIS Router cannot be excluded. + ColumnNames []IsisMetricsRequest_ColumnNames_Enum `protobuf:"varint,2,rep,packed,name=column_names,json=columnNames,proto3,enum=otg.IsisMetricsRequest_ColumnNames_Enum" json:"column_names,omitempty"` } -func (x *PatternFlowVxlanFlagsMetricTag) Reset() { - *x = PatternFlowVxlanFlagsMetricTag{} +func (x *IsisMetricsRequest) Reset() { + *x = IsisMetricsRequest{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[355] + mi := &file_otg_proto_msgTypes[327] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowVxlanFlagsMetricTag) String() string { +func (x *IsisMetricsRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowVxlanFlagsMetricTag) ProtoMessage() {} +func (*IsisMetricsRequest) ProtoMessage() {} -func (x *PatternFlowVxlanFlagsMetricTag) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[355] +func (x *IsisMetricsRequest) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[327] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -48689,76 +48187,104 @@ func (x *PatternFlowVxlanFlagsMetricTag) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use PatternFlowVxlanFlagsMetricTag.ProtoReflect.Descriptor instead. -func (*PatternFlowVxlanFlagsMetricTag) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{355} -} - -func (x *PatternFlowVxlanFlagsMetricTag) GetName() string { - if x != nil && x.Name != nil { - return *x.Name - } - return "" +// Deprecated: Use IsisMetricsRequest.ProtoReflect.Descriptor instead. +func (*IsisMetricsRequest) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{327} } -func (x *PatternFlowVxlanFlagsMetricTag) GetOffset() uint32 { - if x != nil && x.Offset != nil { - return *x.Offset +func (x *IsisMetricsRequest) GetRouterNames() []string { + if x != nil { + return x.RouterNames } - return 0 + return nil } -func (x *PatternFlowVxlanFlagsMetricTag) GetLength() uint32 { - if x != nil && x.Length != nil { - return *x.Length +func (x *IsisMetricsRequest) GetColumnNames() []IsisMetricsRequest_ColumnNames_Enum { + if x != nil { + return x.ColumnNames } - return 0 + return nil } -// Flags field with a bit format of RRRRIRRR. The I flag MUST be set to 1 for a valid -// vxlan network id (VNI). The other 7 bits (designated R) are reserved fields and -// MUST be set to zero on transmission and ignored on receipt. -type PatternFlowVxlanFlags struct { +// ISIS per router statistics information. +type IsisMetric struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Description missing in models - // default = Choice.Enum.value - Choice *PatternFlowVxlanFlags_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.PatternFlowVxlanFlags_Choice_Enum,oneof" json:"choice,omitempty"` - // Description missing in models - // default = 8 - Value *uint32 `protobuf:"varint,2,opt,name=value,proto3,oneof" json:"value,omitempty"` - // Description missing in models - // default = [8] - Values []uint32 `protobuf:"varint,3,rep,packed,name=values,proto3" json:"values,omitempty"` - // Description missing in models - Increment *PatternFlowVxlanFlagsCounter `protobuf:"bytes,5,opt,name=increment,proto3" json:"increment,omitempty"` - // Description missing in models - Decrement *PatternFlowVxlanFlagsCounter `protobuf:"bytes,6,opt,name=decrement,proto3" json:"decrement,omitempty"` - // One or more metric tags can be used to enable tracking portion of or all bits in - // a corresponding header field for metrics per each applicable value. These would appear - // as tagged metrics in corresponding flow metrics. - MetricTags []*PatternFlowVxlanFlagsMetricTag `protobuf:"bytes,7,rep,name=metric_tags,json=metricTags,proto3" json:"metric_tags,omitempty"` + // The name of a configured ISIS router. + Name *string `protobuf:"bytes,1,opt,name=name,proto3,oneof" json:"name,omitempty"` + // The number of Level 1 (L1) sessions that are fully up. + L1SessionsUp *uint32 `protobuf:"varint,2,opt,name=l1_sessions_up,json=l1SessionsUp,proto3,oneof" json:"l1_sessions_up,omitempty"` + // The number of Level 1 Sessions Flap. + L1SessionFlap *uint64 `protobuf:"varint,3,opt,name=l1_session_flap,json=l1SessionFlap,proto3,oneof" json:"l1_session_flap,omitempty"` + // Number of Level 1 Hello messages sent. + L1BroadcastHellosSent *uint64 `protobuf:"varint,4,opt,name=l1_broadcast_hellos_sent,json=l1BroadcastHellosSent,proto3,oneof" json:"l1_broadcast_hellos_sent,omitempty"` + // Number of Level 1 Hello messages received. + L1BroadcastHellosReceived *uint64 `protobuf:"varint,5,opt,name=l1_broadcast_hellos_received,json=l1BroadcastHellosReceived,proto3,oneof" json:"l1_broadcast_hellos_received,omitempty"` + // Number of Level 1 Point-to-Point(P2P) Hello messages sent. + L1PointToPointHellosSent *uint64 `protobuf:"varint,6,opt,name=l1_point_to_point_hellos_sent,json=l1PointToPointHellosSent,proto3,oneof" json:"l1_point_to_point_hellos_sent,omitempty"` + // Number of Level 1 Point-to-Point(P2P) Hello messages received. + L1PointToPointHellosReceived *uint64 `protobuf:"varint,7,opt,name=l1_point_to_point_hellos_received,json=l1PointToPointHellosReceived,proto3,oneof" json:"l1_point_to_point_hellos_received,omitempty"` + // Number of Link State Updates (LSPs) in the Level 1 LSP Databases. + L1DatabaseSize *uint64 `protobuf:"varint,8,opt,name=l1_database_size,json=l1DatabaseSize,proto3,oneof" json:"l1_database_size,omitempty"` + // Number of Level 1 (L1) Partial Sequence Number Packet (PSNPs) sent. + L1PsnpSent *uint64 `protobuf:"varint,9,opt,name=l1_psnp_sent,json=l1PsnpSent,proto3,oneof" json:"l1_psnp_sent,omitempty"` + // Number of Level 1 (L1) Complete Sequence Number Packet (PSNPs) received. + L1PsnpReceived *uint64 `protobuf:"varint,10,opt,name=l1_psnp_received,json=l1PsnpReceived,proto3,oneof" json:"l1_psnp_received,omitempty"` + // Number of Level 1 (L1) Complete Sequence Number Packet (CSNPs) sent. + L1CsnpSent *uint64 `protobuf:"varint,11,opt,name=l1_csnp_sent,json=l1CsnpSent,proto3,oneof" json:"l1_csnp_sent,omitempty"` + // Number of Level 1 (L1) Complete Sequence Number Packet (CSNPs) received. + L1CsnpReceived *uint64 `protobuf:"varint,12,opt,name=l1_csnp_received,json=l1CsnpReceived,proto3,oneof" json:"l1_csnp_received,omitempty"` + // Number of Level 1 (L1) Link State Protocol Data Units (LSPs) sent. + L1LspSent *uint64 `protobuf:"varint,13,opt,name=l1_lsp_sent,json=l1LspSent,proto3,oneof" json:"l1_lsp_sent,omitempty"` + // Number of Level 1 (L1) Link State Protocol Data Units (LSPs) received. + L1LspReceived *uint64 `protobuf:"varint,14,opt,name=l1_lsp_received,json=l1LspReceived,proto3,oneof" json:"l1_lsp_received,omitempty"` + // The number of Level 2 (L2) sessions that are fully up. + L2SessionsUp *uint32 `protobuf:"varint,15,opt,name=l2_sessions_up,json=l2SessionsUp,proto3,oneof" json:"l2_sessions_up,omitempty"` + // The number of Level 2 Sessions Flap. + L2SessionFlap *uint64 `protobuf:"varint,16,opt,name=l2_session_flap,json=l2SessionFlap,proto3,oneof" json:"l2_session_flap,omitempty"` + // Number of Level 2 Hello messages sent. + L2BroadcastHellosSent *uint64 `protobuf:"varint,17,opt,name=l2_broadcast_hellos_sent,json=l2BroadcastHellosSent,proto3,oneof" json:"l2_broadcast_hellos_sent,omitempty"` + // Number of Level 2 Hello messages received. + L2BroadcastHellosReceived *uint64 `protobuf:"varint,18,opt,name=l2_broadcast_hellos_received,json=l2BroadcastHellosReceived,proto3,oneof" json:"l2_broadcast_hellos_received,omitempty"` + // Number of Level 2 Point-to-Point(P2P) Hello messages sent. + L2PointToPointHellosSent *uint64 `protobuf:"varint,19,opt,name=l2_point_to_point_hellos_sent,json=l2PointToPointHellosSent,proto3,oneof" json:"l2_point_to_point_hellos_sent,omitempty"` + // Number of Level 2 Point-to-Point(P2P) Hello messages received. + L2PointToPointHellosReceived *uint64 `protobuf:"varint,20,opt,name=l2_point_to_point_hellos_received,json=l2PointToPointHellosReceived,proto3,oneof" json:"l2_point_to_point_hellos_received,omitempty"` + // Number of Link State Updates (LSPs) in the Level 2 LSP Databases. + L2DatabaseSize *uint64 `protobuf:"varint,21,opt,name=l2_database_size,json=l2DatabaseSize,proto3,oneof" json:"l2_database_size,omitempty"` + // Number of Level 2 (L2) Partial Sequence Number Packet (PSNPs) sent. + L2PsnpSent *uint64 `protobuf:"varint,22,opt,name=l2_psnp_sent,json=l2PsnpSent,proto3,oneof" json:"l2_psnp_sent,omitempty"` + // Number of Level 2 (L2) Complete Sequence Number Packet (PSNPs) received. + L2PsnpReceived *uint64 `protobuf:"varint,23,opt,name=l2_psnp_received,json=l2PsnpReceived,proto3,oneof" json:"l2_psnp_received,omitempty"` + // Number of Level 2 (L2) Complete Sequence Number Packet (CSNPs) sent. + L2CsnpSent *uint64 `protobuf:"varint,24,opt,name=l2_csnp_sent,json=l2CsnpSent,proto3,oneof" json:"l2_csnp_sent,omitempty"` + // Number of Level 2 (L2) Complete Sequence Number Packet (CSNPs) received. + L2CsnpReceived *uint64 `protobuf:"varint,25,opt,name=l2_csnp_received,json=l2CsnpReceived,proto3,oneof" json:"l2_csnp_received,omitempty"` + // Number of Level 2 (L2) Link State Protocol Data Units (LSPs) sent. + L2LspSent *uint64 `protobuf:"varint,26,opt,name=l2_lsp_sent,json=l2LspSent,proto3,oneof" json:"l2_lsp_sent,omitempty"` + // Number of Level 2 (L2) Link State Protocol Data Units (LSPs) received. + L2LspReceived *uint64 `protobuf:"varint,27,opt,name=l2_lsp_received,json=l2LspReceived,proto3,oneof" json:"l2_lsp_received,omitempty"` } -func (x *PatternFlowVxlanFlags) Reset() { - *x = PatternFlowVxlanFlags{} +func (x *IsisMetric) Reset() { + *x = IsisMetric{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[356] + mi := &file_otg_proto_msgTypes[328] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowVxlanFlags) String() string { +func (x *IsisMetric) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowVxlanFlags) ProtoMessage() {} +func (*IsisMetric) ProtoMessage() {} -func (x *PatternFlowVxlanFlags) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[356] +func (x *IsisMetric) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[328] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -48769,330 +48295,234 @@ func (x *PatternFlowVxlanFlags) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use PatternFlowVxlanFlags.ProtoReflect.Descriptor instead. -func (*PatternFlowVxlanFlags) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{356} +// Deprecated: Use IsisMetric.ProtoReflect.Descriptor instead. +func (*IsisMetric) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{328} } -func (x *PatternFlowVxlanFlags) GetChoice() PatternFlowVxlanFlags_Choice_Enum { - if x != nil && x.Choice != nil { - return *x.Choice +func (x *IsisMetric) GetName() string { + if x != nil && x.Name != nil { + return *x.Name } - return PatternFlowVxlanFlags_Choice_unspecified + return "" } -func (x *PatternFlowVxlanFlags) GetValue() uint32 { - if x != nil && x.Value != nil { - return *x.Value +func (x *IsisMetric) GetL1SessionsUp() uint32 { + if x != nil && x.L1SessionsUp != nil { + return *x.L1SessionsUp } return 0 } -func (x *PatternFlowVxlanFlags) GetValues() []uint32 { - if x != nil { - return x.Values +func (x *IsisMetric) GetL1SessionFlap() uint64 { + if x != nil && x.L1SessionFlap != nil { + return *x.L1SessionFlap } - return nil + return 0 } -func (x *PatternFlowVxlanFlags) GetIncrement() *PatternFlowVxlanFlagsCounter { - if x != nil { - return x.Increment +func (x *IsisMetric) GetL1BroadcastHellosSent() uint64 { + if x != nil && x.L1BroadcastHellosSent != nil { + return *x.L1BroadcastHellosSent } - return nil + return 0 } -func (x *PatternFlowVxlanFlags) GetDecrement() *PatternFlowVxlanFlagsCounter { - if x != nil { - return x.Decrement +func (x *IsisMetric) GetL1BroadcastHellosReceived() uint64 { + if x != nil && x.L1BroadcastHellosReceived != nil { + return *x.L1BroadcastHellosReceived } - return nil + return 0 } -func (x *PatternFlowVxlanFlags) GetMetricTags() []*PatternFlowVxlanFlagsMetricTag { - if x != nil { - return x.MetricTags +func (x *IsisMetric) GetL1PointToPointHellosSent() uint64 { + if x != nil && x.L1PointToPointHellosSent != nil { + return *x.L1PointToPointHellosSent } - return nil + return 0 } -// integer counter pattern -type PatternFlowVxlanReserved0Counter struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // Description missing in models - // default = 0 - Start *uint32 `protobuf:"varint,1,opt,name=start,proto3,oneof" json:"start,omitempty"` - // Description missing in models - // default = 1 - Step *uint32 `protobuf:"varint,2,opt,name=step,proto3,oneof" json:"step,omitempty"` - // Description missing in models - // default = 1 - Count *uint32 `protobuf:"varint,3,opt,name=count,proto3,oneof" json:"count,omitempty"` +func (x *IsisMetric) GetL1PointToPointHellosReceived() uint64 { + if x != nil && x.L1PointToPointHellosReceived != nil { + return *x.L1PointToPointHellosReceived + } + return 0 } -func (x *PatternFlowVxlanReserved0Counter) Reset() { - *x = PatternFlowVxlanReserved0Counter{} - if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[357] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) +func (x *IsisMetric) GetL1DatabaseSize() uint64 { + if x != nil && x.L1DatabaseSize != nil { + return *x.L1DatabaseSize } + return 0 } -func (x *PatternFlowVxlanReserved0Counter) String() string { - return protoimpl.X.MessageStringOf(x) +func (x *IsisMetric) GetL1PsnpSent() uint64 { + if x != nil && x.L1PsnpSent != nil { + return *x.L1PsnpSent + } + return 0 } -func (*PatternFlowVxlanReserved0Counter) ProtoMessage() {} +func (x *IsisMetric) GetL1PsnpReceived() uint64 { + if x != nil && x.L1PsnpReceived != nil { + return *x.L1PsnpReceived + } + return 0 +} -func (x *PatternFlowVxlanReserved0Counter) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[357] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms +func (x *IsisMetric) GetL1CsnpSent() uint64 { + if x != nil && x.L1CsnpSent != nil { + return *x.L1CsnpSent } - return mi.MessageOf(x) + return 0 } -// Deprecated: Use PatternFlowVxlanReserved0Counter.ProtoReflect.Descriptor instead. -func (*PatternFlowVxlanReserved0Counter) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{357} +func (x *IsisMetric) GetL1CsnpReceived() uint64 { + if x != nil && x.L1CsnpReceived != nil { + return *x.L1CsnpReceived + } + return 0 } -func (x *PatternFlowVxlanReserved0Counter) GetStart() uint32 { - if x != nil && x.Start != nil { - return *x.Start +func (x *IsisMetric) GetL1LspSent() uint64 { + if x != nil && x.L1LspSent != nil { + return *x.L1LspSent } return 0 } -func (x *PatternFlowVxlanReserved0Counter) GetStep() uint32 { - if x != nil && x.Step != nil { - return *x.Step +func (x *IsisMetric) GetL1LspReceived() uint64 { + if x != nil && x.L1LspReceived != nil { + return *x.L1LspReceived } return 0 } -func (x *PatternFlowVxlanReserved0Counter) GetCount() uint32 { - if x != nil && x.Count != nil { - return *x.Count +func (x *IsisMetric) GetL2SessionsUp() uint32 { + if x != nil && x.L2SessionsUp != nil { + return *x.L2SessionsUp } return 0 } -// Metric tag can be used to enable tracking portion of or all bits in a corresponding -// header field for metrics per each applicable value. These would appear as tagged -// metrics in corresponding flow metrics. -type PatternFlowVxlanReserved0MetricTag struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // Name used to identify the metrics associated with the values applicable for configured - // offset and length inside corresponding header field - // required = true - Name *string `protobuf:"bytes,1,opt,name=name,proto3,oneof" json:"name,omitempty"` - // Offset in bits relative to start of corresponding header field - // default = 0 - Offset *uint32 `protobuf:"varint,2,opt,name=offset,proto3,oneof" json:"offset,omitempty"` - // Number of bits to track for metrics starting from configured offset of corresponding - // header field - // default = 24 - Length *uint32 `protobuf:"varint,3,opt,name=length,proto3,oneof" json:"length,omitempty"` -} - -func (x *PatternFlowVxlanReserved0MetricTag) Reset() { - *x = PatternFlowVxlanReserved0MetricTag{} - if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[358] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *PatternFlowVxlanReserved0MetricTag) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*PatternFlowVxlanReserved0MetricTag) ProtoMessage() {} - -func (x *PatternFlowVxlanReserved0MetricTag) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[358] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms +func (x *IsisMetric) GetL2SessionFlap() uint64 { + if x != nil && x.L2SessionFlap != nil { + return *x.L2SessionFlap } - return mi.MessageOf(x) -} - -// Deprecated: Use PatternFlowVxlanReserved0MetricTag.ProtoReflect.Descriptor instead. -func (*PatternFlowVxlanReserved0MetricTag) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{358} + return 0 } -func (x *PatternFlowVxlanReserved0MetricTag) GetName() string { - if x != nil && x.Name != nil { - return *x.Name +func (x *IsisMetric) GetL2BroadcastHellosSent() uint64 { + if x != nil && x.L2BroadcastHellosSent != nil { + return *x.L2BroadcastHellosSent } - return "" + return 0 } -func (x *PatternFlowVxlanReserved0MetricTag) GetOffset() uint32 { - if x != nil && x.Offset != nil { - return *x.Offset +func (x *IsisMetric) GetL2BroadcastHellosReceived() uint64 { + if x != nil && x.L2BroadcastHellosReceived != nil { + return *x.L2BroadcastHellosReceived } return 0 } -func (x *PatternFlowVxlanReserved0MetricTag) GetLength() uint32 { - if x != nil && x.Length != nil { - return *x.Length +func (x *IsisMetric) GetL2PointToPointHellosSent() uint64 { + if x != nil && x.L2PointToPointHellosSent != nil { + return *x.L2PointToPointHellosSent } return 0 } -// Reserved field -type PatternFlowVxlanReserved0 struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // Description missing in models - // default = Choice.Enum.value - Choice *PatternFlowVxlanReserved0_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.PatternFlowVxlanReserved0_Choice_Enum,oneof" json:"choice,omitempty"` - // Description missing in models - // default = 0 - Value *uint32 `protobuf:"varint,2,opt,name=value,proto3,oneof" json:"value,omitempty"` - // Description missing in models - // default = [0] - Values []uint32 `protobuf:"varint,3,rep,packed,name=values,proto3" json:"values,omitempty"` - // Description missing in models - Increment *PatternFlowVxlanReserved0Counter `protobuf:"bytes,5,opt,name=increment,proto3" json:"increment,omitempty"` - // Description missing in models - Decrement *PatternFlowVxlanReserved0Counter `protobuf:"bytes,6,opt,name=decrement,proto3" json:"decrement,omitempty"` - // One or more metric tags can be used to enable tracking portion of or all bits in - // a corresponding header field for metrics per each applicable value. These would appear - // as tagged metrics in corresponding flow metrics. - MetricTags []*PatternFlowVxlanReserved0MetricTag `protobuf:"bytes,7,rep,name=metric_tags,json=metricTags,proto3" json:"metric_tags,omitempty"` -} - -func (x *PatternFlowVxlanReserved0) Reset() { - *x = PatternFlowVxlanReserved0{} - if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[359] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) +func (x *IsisMetric) GetL2PointToPointHellosReceived() uint64 { + if x != nil && x.L2PointToPointHellosReceived != nil { + return *x.L2PointToPointHellosReceived } + return 0 } -func (x *PatternFlowVxlanReserved0) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*PatternFlowVxlanReserved0) ProtoMessage() {} - -func (x *PatternFlowVxlanReserved0) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[359] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms +func (x *IsisMetric) GetL2DatabaseSize() uint64 { + if x != nil && x.L2DatabaseSize != nil { + return *x.L2DatabaseSize } - return mi.MessageOf(x) -} - -// Deprecated: Use PatternFlowVxlanReserved0.ProtoReflect.Descriptor instead. -func (*PatternFlowVxlanReserved0) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{359} + return 0 } -func (x *PatternFlowVxlanReserved0) GetChoice() PatternFlowVxlanReserved0_Choice_Enum { - if x != nil && x.Choice != nil { - return *x.Choice +func (x *IsisMetric) GetL2PsnpSent() uint64 { + if x != nil && x.L2PsnpSent != nil { + return *x.L2PsnpSent } - return PatternFlowVxlanReserved0_Choice_unspecified + return 0 } -func (x *PatternFlowVxlanReserved0) GetValue() uint32 { - if x != nil && x.Value != nil { - return *x.Value +func (x *IsisMetric) GetL2PsnpReceived() uint64 { + if x != nil && x.L2PsnpReceived != nil { + return *x.L2PsnpReceived } return 0 } -func (x *PatternFlowVxlanReserved0) GetValues() []uint32 { - if x != nil { - return x.Values +func (x *IsisMetric) GetL2CsnpSent() uint64 { + if x != nil && x.L2CsnpSent != nil { + return *x.L2CsnpSent } - return nil + return 0 } -func (x *PatternFlowVxlanReserved0) GetIncrement() *PatternFlowVxlanReserved0Counter { - if x != nil { - return x.Increment +func (x *IsisMetric) GetL2CsnpReceived() uint64 { + if x != nil && x.L2CsnpReceived != nil { + return *x.L2CsnpReceived } - return nil + return 0 } -func (x *PatternFlowVxlanReserved0) GetDecrement() *PatternFlowVxlanReserved0Counter { - if x != nil { - return x.Decrement +func (x *IsisMetric) GetL2LspSent() uint64 { + if x != nil && x.L2LspSent != nil { + return *x.L2LspSent } - return nil + return 0 } -func (x *PatternFlowVxlanReserved0) GetMetricTags() []*PatternFlowVxlanReserved0MetricTag { - if x != nil { - return x.MetricTags +func (x *IsisMetric) GetL2LspReceived() uint64 { + if x != nil && x.L2LspReceived != nil { + return *x.L2LspReceived } - return nil + return 0 } -// integer counter pattern -type PatternFlowVxlanVniCounter struct { +// The request to retrieve per LAG metrics/statistics. +type LagMetricsRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Description missing in models - // default = 0 - Start *uint32 `protobuf:"varint,1,opt,name=start,proto3,oneof" json:"start,omitempty"` - // Description missing in models - // default = 1 - Step *uint32 `protobuf:"varint,2,opt,name=step,proto3,oneof" json:"step,omitempty"` - // Description missing in models - // default = 1 - Count *uint32 `protobuf:"varint,3,opt,name=count,proto3,oneof" json:"count,omitempty"` + // The names of LAGs to return results for. An empty list will return results for all + // LAGs. + // + // x-constraint: + // - /components/schemas/Lag/properties/name + LagNames []string `protobuf:"bytes,1,rep,name=lag_names,json=lagNames,proto3" json:"lag_names,omitempty"` + // The list of column names that the returned result set will contain. If the list is + // empty then all columns will be returned. The name of the LAG cannot be excluded. + ColumnNames []LagMetricsRequest_ColumnNames_Enum `protobuf:"varint,2,rep,packed,name=column_names,json=columnNames,proto3,enum=otg.LagMetricsRequest_ColumnNames_Enum" json:"column_names,omitempty"` } -func (x *PatternFlowVxlanVniCounter) Reset() { - *x = PatternFlowVxlanVniCounter{} +func (x *LagMetricsRequest) Reset() { + *x = LagMetricsRequest{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[360] + mi := &file_otg_proto_msgTypes[329] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowVxlanVniCounter) String() string { +func (x *LagMetricsRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowVxlanVniCounter) ProtoMessage() {} +func (*LagMetricsRequest) ProtoMessage() {} -func (x *PatternFlowVxlanVniCounter) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[360] +func (x *LagMetricsRequest) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[329] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -49103,70 +48533,76 @@ func (x *PatternFlowVxlanVniCounter) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use PatternFlowVxlanVniCounter.ProtoReflect.Descriptor instead. -func (*PatternFlowVxlanVniCounter) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{360} -} - -func (x *PatternFlowVxlanVniCounter) GetStart() uint32 { - if x != nil && x.Start != nil { - return *x.Start - } - return 0 +// Deprecated: Use LagMetricsRequest.ProtoReflect.Descriptor instead. +func (*LagMetricsRequest) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{329} } -func (x *PatternFlowVxlanVniCounter) GetStep() uint32 { - if x != nil && x.Step != nil { - return *x.Step +func (x *LagMetricsRequest) GetLagNames() []string { + if x != nil { + return x.LagNames } - return 0 + return nil } -func (x *PatternFlowVxlanVniCounter) GetCount() uint32 { - if x != nil && x.Count != nil { - return *x.Count +func (x *LagMetricsRequest) GetColumnNames() []LagMetricsRequest_ColumnNames_Enum { + if x != nil { + return x.ColumnNames } - return 0 + return nil } -// Metric tag can be used to enable tracking portion of or all bits in a corresponding -// header field for metrics per each applicable value. These would appear as tagged -// metrics in corresponding flow metrics. -type PatternFlowVxlanVniMetricTag struct { +// Description missing in models +type LagMetric struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Name used to identify the metrics associated with the values applicable for configured - // offset and length inside corresponding header field - // required = true + // The name of a configured LAG + // + // x-constraint: + // - /components/schemas/Lag/properties/name Name *string `protobuf:"bytes,1,opt,name=name,proto3,oneof" json:"name,omitempty"` - // Offset in bits relative to start of corresponding header field - // default = 0 - Offset *uint32 `protobuf:"varint,2,opt,name=offset,proto3,oneof" json:"offset,omitempty"` - // Number of bits to track for metrics starting from configured offset of corresponding - // header field - // default = 24 - Length *uint32 `protobuf:"varint,3,opt,name=length,proto3,oneof" json:"length,omitempty"` + // The current operational state of the LAG. The state can be up or down. State 'up' + // indicates member_ports_up >= min_links. + OperStatus *LagMetric_OperStatus_Enum `protobuf:"varint,2,opt,name=oper_status,json=operStatus,proto3,enum=otg.LagMetric_OperStatus_Enum,oneof" json:"oper_status,omitempty"` + // The number of LAG member ports up. + MemberPortsUp *uint32 `protobuf:"varint,3,opt,name=member_ports_up,json=memberPortsUp,proto3,oneof" json:"member_ports_up,omitempty"` + // The current total number of frames transmitted. + FramesTx *uint64 `protobuf:"varint,4,opt,name=frames_tx,json=framesTx,proto3,oneof" json:"frames_tx,omitempty"` + // The current total number of valid frames received. + FramesRx *uint64 `protobuf:"varint,5,opt,name=frames_rx,json=framesRx,proto3,oneof" json:"frames_rx,omitempty"` + // The current total number of bytes transmitted. + BytesTx *uint64 `protobuf:"varint,6,opt,name=bytes_tx,json=bytesTx,proto3,oneof" json:"bytes_tx,omitempty"` + // The current total number of valid bytes received. + BytesRx *uint64 `protobuf:"varint,7,opt,name=bytes_rx,json=bytesRx,proto3,oneof" json:"bytes_rx,omitempty"` + // The current rate of frames transmitted. + FramesTxRate *float32 `protobuf:"fixed32,8,opt,name=frames_tx_rate,json=framesTxRate,proto3,oneof" json:"frames_tx_rate,omitempty"` + // The current rate of valid frames received. + FramesRxRate *float32 `protobuf:"fixed32,9,opt,name=frames_rx_rate,json=framesRxRate,proto3,oneof" json:"frames_rx_rate,omitempty"` + // The current rate of bytes transmitted. + BytesTxRate *float32 `protobuf:"fixed32,10,opt,name=bytes_tx_rate,json=bytesTxRate,proto3,oneof" json:"bytes_tx_rate,omitempty"` + // The current rate of bytes received. + BytesRxRate *float32 `protobuf:"fixed32,11,opt,name=bytes_rx_rate,json=bytesRxRate,proto3,oneof" json:"bytes_rx_rate,omitempty"` } -func (x *PatternFlowVxlanVniMetricTag) Reset() { - *x = PatternFlowVxlanVniMetricTag{} +func (x *LagMetric) Reset() { + *x = LagMetric{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[361] + mi := &file_otg_proto_msgTypes[330] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowVxlanVniMetricTag) String() string { +func (x *LagMetric) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowVxlanVniMetricTag) ProtoMessage() {} +func (*LagMetric) ProtoMessage() {} -func (x *PatternFlowVxlanVniMetricTag) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[361] +func (x *LagMetric) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[330] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -49177,177 +48613,129 @@ func (x *PatternFlowVxlanVniMetricTag) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use PatternFlowVxlanVniMetricTag.ProtoReflect.Descriptor instead. -func (*PatternFlowVxlanVniMetricTag) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{361} +// Deprecated: Use LagMetric.ProtoReflect.Descriptor instead. +func (*LagMetric) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{330} } -func (x *PatternFlowVxlanVniMetricTag) GetName() string { +func (x *LagMetric) GetName() string { if x != nil && x.Name != nil { return *x.Name } return "" } -func (x *PatternFlowVxlanVniMetricTag) GetOffset() uint32 { - if x != nil && x.Offset != nil { - return *x.Offset +func (x *LagMetric) GetOperStatus() LagMetric_OperStatus_Enum { + if x != nil && x.OperStatus != nil { + return *x.OperStatus } - return 0 + return LagMetric_OperStatus_unspecified } -func (x *PatternFlowVxlanVniMetricTag) GetLength() uint32 { - if x != nil && x.Length != nil { - return *x.Length +func (x *LagMetric) GetMemberPortsUp() uint32 { + if x != nil && x.MemberPortsUp != nil { + return *x.MemberPortsUp } return 0 } -// VXLAN network id -type PatternFlowVxlanVni struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // Description missing in models - // default = Choice.Enum.auto - Choice *PatternFlowVxlanVni_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.PatternFlowVxlanVni_Choice_Enum,oneof" json:"choice,omitempty"` - // Description missing in models - // default = 0 - Value *uint32 `protobuf:"varint,2,opt,name=value,proto3,oneof" json:"value,omitempty"` - // Description missing in models - // default = [0] - Values []uint32 `protobuf:"varint,3,rep,packed,name=values,proto3" json:"values,omitempty"` - // The OTG implementation can provide a system generated - // value for this property. If the OTG is unable to generate a value - // the default value must be used. - // default = 0 - Auto *uint32 `protobuf:"varint,4,opt,name=auto,proto3,oneof" json:"auto,omitempty"` - // Description missing in models - Increment *PatternFlowVxlanVniCounter `protobuf:"bytes,6,opt,name=increment,proto3" json:"increment,omitempty"` - // Description missing in models - Decrement *PatternFlowVxlanVniCounter `protobuf:"bytes,7,opt,name=decrement,proto3" json:"decrement,omitempty"` - // One or more metric tags can be used to enable tracking portion of or all bits in - // a corresponding header field for metrics per each applicable value. These would appear - // as tagged metrics in corresponding flow metrics. - MetricTags []*PatternFlowVxlanVniMetricTag `protobuf:"bytes,8,rep,name=metric_tags,json=metricTags,proto3" json:"metric_tags,omitempty"` -} - -func (x *PatternFlowVxlanVni) Reset() { - *x = PatternFlowVxlanVni{} - if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[362] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *PatternFlowVxlanVni) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*PatternFlowVxlanVni) ProtoMessage() {} - -func (x *PatternFlowVxlanVni) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[362] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms +func (x *LagMetric) GetFramesTx() uint64 { + if x != nil && x.FramesTx != nil { + return *x.FramesTx } - return mi.MessageOf(x) -} - -// Deprecated: Use PatternFlowVxlanVni.ProtoReflect.Descriptor instead. -func (*PatternFlowVxlanVni) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{362} + return 0 } -func (x *PatternFlowVxlanVni) GetChoice() PatternFlowVxlanVni_Choice_Enum { - if x != nil && x.Choice != nil { - return *x.Choice +func (x *LagMetric) GetFramesRx() uint64 { + if x != nil && x.FramesRx != nil { + return *x.FramesRx } - return PatternFlowVxlanVni_Choice_unspecified + return 0 } -func (x *PatternFlowVxlanVni) GetValue() uint32 { - if x != nil && x.Value != nil { - return *x.Value +func (x *LagMetric) GetBytesTx() uint64 { + if x != nil && x.BytesTx != nil { + return *x.BytesTx } return 0 } -func (x *PatternFlowVxlanVni) GetValues() []uint32 { - if x != nil { - return x.Values +func (x *LagMetric) GetBytesRx() uint64 { + if x != nil && x.BytesRx != nil { + return *x.BytesRx } - return nil + return 0 } -func (x *PatternFlowVxlanVni) GetAuto() uint32 { - if x != nil && x.Auto != nil { - return *x.Auto +func (x *LagMetric) GetFramesTxRate() float32 { + if x != nil && x.FramesTxRate != nil { + return *x.FramesTxRate } return 0 } -func (x *PatternFlowVxlanVni) GetIncrement() *PatternFlowVxlanVniCounter { - if x != nil { - return x.Increment +func (x *LagMetric) GetFramesRxRate() float32 { + if x != nil && x.FramesRxRate != nil { + return *x.FramesRxRate } - return nil + return 0 } -func (x *PatternFlowVxlanVni) GetDecrement() *PatternFlowVxlanVniCounter { - if x != nil { - return x.Decrement +func (x *LagMetric) GetBytesTxRate() float32 { + if x != nil && x.BytesTxRate != nil { + return *x.BytesTxRate } - return nil + return 0 } -func (x *PatternFlowVxlanVni) GetMetricTags() []*PatternFlowVxlanVniMetricTag { - if x != nil { - return x.MetricTags +func (x *LagMetric) GetBytesRxRate() float32 { + if x != nil && x.BytesRxRate != nil { + return *x.BytesRxRate } - return nil + return 0 } -// integer counter pattern -type PatternFlowVxlanReserved1Counter struct { +// The request to retrieve LACP per LAG member metrics/statistics. +type LacpMetricsRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Description missing in models - // default = 0 - Start *uint32 `protobuf:"varint,1,opt,name=start,proto3,oneof" json:"start,omitempty"` - // Description missing in models - // default = 1 - Step *uint32 `protobuf:"varint,2,opt,name=step,proto3,oneof" json:"step,omitempty"` - // Description missing in models - // default = 1 - Count *uint32 `protobuf:"varint,3,opt,name=count,proto3,oneof" json:"count,omitempty"` + // The names of LAG (ports group) for which LACP metrics to be returned. An empty list + // will return metrics for all LAGs. + // + // x-constraint: + // - /components/schemas/Lag/properties/name + LagNames []string `protobuf:"bytes,1,rep,name=lag_names,json=lagNames,proto3" json:"lag_names,omitempty"` + // The names of LAG members (ports) for which LACP metrics to be returned. An empty + // list will return metrics for all LAG members. + // + // x-constraint: + // - /components/schemas/Port/properties/name + LagMemberPortNames []string `protobuf:"bytes,2,rep,name=lag_member_port_names,json=lagMemberPortNames,proto3" json:"lag_member_port_names,omitempty"` + // The list of column names that the returned result set will contain. If the list is + // empty then all columns will be returned. The name of LAG and LAG member can not be + // excluded. + ColumnNames []LacpMetricsRequest_ColumnNames_Enum `protobuf:"varint,3,rep,packed,name=column_names,json=columnNames,proto3,enum=otg.LacpMetricsRequest_ColumnNames_Enum" json:"column_names,omitempty"` } -func (x *PatternFlowVxlanReserved1Counter) Reset() { - *x = PatternFlowVxlanReserved1Counter{} +func (x *LacpMetricsRequest) Reset() { + *x = LacpMetricsRequest{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[363] + mi := &file_otg_proto_msgTypes[331] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowVxlanReserved1Counter) String() string { +func (x *LacpMetricsRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowVxlanReserved1Counter) ProtoMessage() {} +func (*LacpMetricsRequest) ProtoMessage() {} -func (x *PatternFlowVxlanReserved1Counter) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[363] +func (x *LacpMetricsRequest) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[331] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -49358,70 +48746,94 @@ func (x *PatternFlowVxlanReserved1Counter) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use PatternFlowVxlanReserved1Counter.ProtoReflect.Descriptor instead. -func (*PatternFlowVxlanReserved1Counter) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{363} +// Deprecated: Use LacpMetricsRequest.ProtoReflect.Descriptor instead. +func (*LacpMetricsRequest) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{331} } -func (x *PatternFlowVxlanReserved1Counter) GetStart() uint32 { - if x != nil && x.Start != nil { - return *x.Start +func (x *LacpMetricsRequest) GetLagNames() []string { + if x != nil { + return x.LagNames } - return 0 + return nil } -func (x *PatternFlowVxlanReserved1Counter) GetStep() uint32 { - if x != nil && x.Step != nil { - return *x.Step +func (x *LacpMetricsRequest) GetLagMemberPortNames() []string { + if x != nil { + return x.LagMemberPortNames } - return 0 + return nil } -func (x *PatternFlowVxlanReserved1Counter) GetCount() uint32 { - if x != nil && x.Count != nil { - return *x.Count +func (x *LacpMetricsRequest) GetColumnNames() []LacpMetricsRequest_ColumnNames_Enum { + if x != nil { + return x.ColumnNames } - return 0 + return nil } -// Metric tag can be used to enable tracking portion of or all bits in a corresponding -// header field for metrics per each applicable value. These would appear as tagged -// metrics in corresponding flow metrics. -type PatternFlowVxlanReserved1MetricTag struct { +// LACP metrics (statistics) per LAG member. +type LacpMetric struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Name used to identify the metrics associated with the values applicable for configured - // offset and length inside corresponding header field - // required = true - Name *string `protobuf:"bytes,1,opt,name=name,proto3,oneof" json:"name,omitempty"` - // Offset in bits relative to start of corresponding header field - // default = 0 - Offset *uint32 `protobuf:"varint,2,opt,name=offset,proto3,oneof" json:"offset,omitempty"` - // Number of bits to track for metrics starting from configured offset of corresponding - // header field - // default = 8 - Length *uint32 `protobuf:"varint,3,opt,name=length,proto3,oneof" json:"length,omitempty"` + // The name of a LAG (ports group) configured with LACP. + LagName *string `protobuf:"bytes,1,opt,name=lag_name,json=lagName,proto3,oneof" json:"lag_name,omitempty"` + // The name of a LAG member (port) configured with LACP. + LagMemberPortName *string `protobuf:"bytes,2,opt,name=lag_member_port_name,json=lagMemberPortName,proto3,oneof" json:"lag_member_port_name,omitempty"` + // Number of LACPDUs received. + LacpPacketsRx *uint64 `protobuf:"varint,3,opt,name=lacp_packets_rx,json=lacpPacketsRx,proto3,oneof" json:"lacp_packets_rx,omitempty"` + // Number of LACPDUs transmitted. + LacpPacketsTx *uint64 `protobuf:"varint,4,opt,name=lacp_packets_tx,json=lacpPacketsTx,proto3,oneof" json:"lacp_packets_tx,omitempty"` + // Number of LACPDUs receive packet errors. + LacpRxErrors *uint64 `protobuf:"varint,5,opt,name=lacp_rx_errors,json=lacpRxErrors,proto3,oneof" json:"lacp_rx_errors,omitempty"` + // Indicates participant is active or passive. + Activity *LacpMetric_Activity_Enum `protobuf:"varint,6,opt,name=activity,proto3,enum=otg.LacpMetric_Activity_Enum,oneof" json:"activity,omitempty"` + // The timeout type (short or long) used by the participant. + Timeout *LacpMetric_Timeout_Enum `protobuf:"varint,7,opt,name=timeout,proto3,enum=otg.LacpMetric_Timeout_Enum,oneof" json:"timeout,omitempty"` + // Indicates whether the participant is in-sync or out-of-sync. + Synchronization *LacpMetric_Synchronization_Enum `protobuf:"varint,8,opt,name=synchronization,proto3,enum=otg.LacpMetric_Synchronization_Enum,oneof" json:"synchronization,omitempty"` + // A true value indicates that the participant will allow the link to be used as part + // of the aggregate. A false value indicates the link should be used as an individual + // link. + Aggregatable *bool `protobuf:"varint,9,opt,name=aggregatable,proto3,oneof" json:"aggregatable,omitempty"` + // If true, the participant is collecting incoming frames on the link, otherwise false. + Collecting *bool `protobuf:"varint,10,opt,name=collecting,proto3,oneof" json:"collecting,omitempty"` + // When true, the participant is distributing outgoing frames; when false, distribution + // is disabled. + Distributing *bool `protobuf:"varint,11,opt,name=distributing,proto3,oneof" json:"distributing,omitempty"` + // MAC address that defines the local system ID for the aggregate interface. + SystemId *string `protobuf:"bytes,12,opt,name=system_id,json=systemId,proto3,oneof" json:"system_id,omitempty"` + // Current operational value of the key for the aggregate interface. + OperKey *uint32 `protobuf:"varint,13,opt,name=oper_key,json=operKey,proto3,oneof" json:"oper_key,omitempty"` + // MAC address representing the protocol partner's interface system ID. + PartnerId *string `protobuf:"bytes,14,opt,name=partner_id,json=partnerId,proto3,oneof" json:"partner_id,omitempty"` + // Operational value of the protocol partner's key. + PartnerKey *uint32 `protobuf:"varint,15,opt,name=partner_key,json=partnerKey,proto3,oneof" json:"partner_key,omitempty"` + // Port number of the local (actor) aggregation member. + PortNum *uint32 `protobuf:"varint,16,opt,name=port_num,json=portNum,proto3,oneof" json:"port_num,omitempty"` + // Port number of the partner (remote) port for this member port. + PartnerPortNum *uint32 `protobuf:"varint,17,opt,name=partner_port_num,json=partnerPortNum,proto3,oneof" json:"partner_port_num,omitempty"` } -func (x *PatternFlowVxlanReserved1MetricTag) Reset() { - *x = PatternFlowVxlanReserved1MetricTag{} +func (x *LacpMetric) Reset() { + *x = LacpMetric{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[364] + mi := &file_otg_proto_msgTypes[332] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowVxlanReserved1MetricTag) String() string { +func (x *LacpMetric) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowVxlanReserved1MetricTag) ProtoMessage() {} +func (*LacpMetric) ProtoMessage() {} -func (x *PatternFlowVxlanReserved1MetricTag) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[364] +func (x *LacpMetric) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[332] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -49432,239 +48844,164 @@ func (x *PatternFlowVxlanReserved1MetricTag) ProtoReflect() protoreflect.Message return mi.MessageOf(x) } -// Deprecated: Use PatternFlowVxlanReserved1MetricTag.ProtoReflect.Descriptor instead. -func (*PatternFlowVxlanReserved1MetricTag) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{364} +// Deprecated: Use LacpMetric.ProtoReflect.Descriptor instead. +func (*LacpMetric) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{332} } -func (x *PatternFlowVxlanReserved1MetricTag) GetName() string { - if x != nil && x.Name != nil { - return *x.Name +func (x *LacpMetric) GetLagName() string { + if x != nil && x.LagName != nil { + return *x.LagName } return "" } -func (x *PatternFlowVxlanReserved1MetricTag) GetOffset() uint32 { - if x != nil && x.Offset != nil { - return *x.Offset +func (x *LacpMetric) GetLagMemberPortName() string { + if x != nil && x.LagMemberPortName != nil { + return *x.LagMemberPortName } - return 0 + return "" } -func (x *PatternFlowVxlanReserved1MetricTag) GetLength() uint32 { - if x != nil && x.Length != nil { - return *x.Length +func (x *LacpMetric) GetLacpPacketsRx() uint64 { + if x != nil && x.LacpPacketsRx != nil { + return *x.LacpPacketsRx } return 0 } -// Reserved field -type PatternFlowVxlanReserved1 struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // Description missing in models - // default = Choice.Enum.value - Choice *PatternFlowVxlanReserved1_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.PatternFlowVxlanReserved1_Choice_Enum,oneof" json:"choice,omitempty"` - // Description missing in models - // default = 0 - Value *uint32 `protobuf:"varint,2,opt,name=value,proto3,oneof" json:"value,omitempty"` - // Description missing in models - // default = [0] - Values []uint32 `protobuf:"varint,3,rep,packed,name=values,proto3" json:"values,omitempty"` - // Description missing in models - Increment *PatternFlowVxlanReserved1Counter `protobuf:"bytes,5,opt,name=increment,proto3" json:"increment,omitempty"` - // Description missing in models - Decrement *PatternFlowVxlanReserved1Counter `protobuf:"bytes,6,opt,name=decrement,proto3" json:"decrement,omitempty"` - // One or more metric tags can be used to enable tracking portion of or all bits in - // a corresponding header field for metrics per each applicable value. These would appear - // as tagged metrics in corresponding flow metrics. - MetricTags []*PatternFlowVxlanReserved1MetricTag `protobuf:"bytes,7,rep,name=metric_tags,json=metricTags,proto3" json:"metric_tags,omitempty"` -} - -func (x *PatternFlowVxlanReserved1) Reset() { - *x = PatternFlowVxlanReserved1{} - if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[365] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) +func (x *LacpMetric) GetLacpPacketsTx() uint64 { + if x != nil && x.LacpPacketsTx != nil { + return *x.LacpPacketsTx } + return 0 } -func (x *PatternFlowVxlanReserved1) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*PatternFlowVxlanReserved1) ProtoMessage() {} - -func (x *PatternFlowVxlanReserved1) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[365] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms +func (x *LacpMetric) GetLacpRxErrors() uint64 { + if x != nil && x.LacpRxErrors != nil { + return *x.LacpRxErrors } - return mi.MessageOf(x) -} - -// Deprecated: Use PatternFlowVxlanReserved1.ProtoReflect.Descriptor instead. -func (*PatternFlowVxlanReserved1) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{365} + return 0 } -func (x *PatternFlowVxlanReserved1) GetChoice() PatternFlowVxlanReserved1_Choice_Enum { - if x != nil && x.Choice != nil { - return *x.Choice +func (x *LacpMetric) GetActivity() LacpMetric_Activity_Enum { + if x != nil && x.Activity != nil { + return *x.Activity } - return PatternFlowVxlanReserved1_Choice_unspecified + return LacpMetric_Activity_unspecified } -func (x *PatternFlowVxlanReserved1) GetValue() uint32 { - if x != nil && x.Value != nil { - return *x.Value +func (x *LacpMetric) GetTimeout() LacpMetric_Timeout_Enum { + if x != nil && x.Timeout != nil { + return *x.Timeout } - return 0 + return LacpMetric_Timeout_unspecified } -func (x *PatternFlowVxlanReserved1) GetValues() []uint32 { - if x != nil { - return x.Values +func (x *LacpMetric) GetSynchronization() LacpMetric_Synchronization_Enum { + if x != nil && x.Synchronization != nil { + return *x.Synchronization } - return nil + return LacpMetric_Synchronization_unspecified } -func (x *PatternFlowVxlanReserved1) GetIncrement() *PatternFlowVxlanReserved1Counter { - if x != nil { - return x.Increment +func (x *LacpMetric) GetAggregatable() bool { + if x != nil && x.Aggregatable != nil { + return *x.Aggregatable } - return nil + return false } -func (x *PatternFlowVxlanReserved1) GetDecrement() *PatternFlowVxlanReserved1Counter { - if x != nil { - return x.Decrement +func (x *LacpMetric) GetCollecting() bool { + if x != nil && x.Collecting != nil { + return *x.Collecting } - return nil + return false } -func (x *PatternFlowVxlanReserved1) GetMetricTags() []*PatternFlowVxlanReserved1MetricTag { - if x != nil { - return x.MetricTags +func (x *LacpMetric) GetDistributing() bool { + if x != nil && x.Distributing != nil { + return *x.Distributing } - return nil -} - -// integer counter pattern -type PatternFlowIpv4VersionCounter struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // Description missing in models - // default = 4 - Start *uint32 `protobuf:"varint,1,opt,name=start,proto3,oneof" json:"start,omitempty"` - // Description missing in models - // default = 1 - Step *uint32 `protobuf:"varint,2,opt,name=step,proto3,oneof" json:"step,omitempty"` - // Description missing in models - // default = 1 - Count *uint32 `protobuf:"varint,3,opt,name=count,proto3,oneof" json:"count,omitempty"` + return false } -func (x *PatternFlowIpv4VersionCounter) Reset() { - *x = PatternFlowIpv4VersionCounter{} - if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[366] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) +func (x *LacpMetric) GetSystemId() string { + if x != nil && x.SystemId != nil { + return *x.SystemId } + return "" } -func (x *PatternFlowIpv4VersionCounter) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*PatternFlowIpv4VersionCounter) ProtoMessage() {} - -func (x *PatternFlowIpv4VersionCounter) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[366] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms +func (x *LacpMetric) GetOperKey() uint32 { + if x != nil && x.OperKey != nil { + return *x.OperKey } - return mi.MessageOf(x) + return 0 } -// Deprecated: Use PatternFlowIpv4VersionCounter.ProtoReflect.Descriptor instead. -func (*PatternFlowIpv4VersionCounter) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{366} +func (x *LacpMetric) GetPartnerId() string { + if x != nil && x.PartnerId != nil { + return *x.PartnerId + } + return "" } -func (x *PatternFlowIpv4VersionCounter) GetStart() uint32 { - if x != nil && x.Start != nil { - return *x.Start +func (x *LacpMetric) GetPartnerKey() uint32 { + if x != nil && x.PartnerKey != nil { + return *x.PartnerKey } return 0 } -func (x *PatternFlowIpv4VersionCounter) GetStep() uint32 { - if x != nil && x.Step != nil { - return *x.Step +func (x *LacpMetric) GetPortNum() uint32 { + if x != nil && x.PortNum != nil { + return *x.PortNum } return 0 } -func (x *PatternFlowIpv4VersionCounter) GetCount() uint32 { - if x != nil && x.Count != nil { - return *x.Count +func (x *LacpMetric) GetPartnerPortNum() uint32 { + if x != nil && x.PartnerPortNum != nil { + return *x.PartnerPortNum } return 0 } -// Metric tag can be used to enable tracking portion of or all bits in a corresponding -// header field for metrics per each applicable value. These would appear as tagged -// metrics in corresponding flow metrics. -type PatternFlowIpv4VersionMetricTag struct { +// The request to retrieve LLDP per instance metrics/statistics. +type LldpMetricsRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Name used to identify the metrics associated with the values applicable for configured - // offset and length inside corresponding header field - // required = true - Name *string `protobuf:"bytes,1,opt,name=name,proto3,oneof" json:"name,omitempty"` - // Offset in bits relative to start of corresponding header field - // default = 0 - Offset *uint32 `protobuf:"varint,2,opt,name=offset,proto3,oneof" json:"offset,omitempty"` - // Number of bits to track for metrics starting from configured offset of corresponding - // header field - // default = 4 - Length *uint32 `protobuf:"varint,3,opt,name=length,proto3,oneof" json:"length,omitempty"` + // The names of LLDP instances to return results for. An empty list will return results + // for all LLDP instances. + // + // x-constraint: + // - /components/schemas/Lldp/properties/name + LldpNames []string `protobuf:"bytes,1,rep,name=lldp_names,json=lldpNames,proto3" json:"lldp_names,omitempty"` + // The requested list of column names for the result set. If the list is empty then + // metrics for all columns will be returned. The name of LLDP instance can not be excluded. + ColumnNames []LldpMetricsRequest_ColumnNames_Enum `protobuf:"varint,2,rep,packed,name=column_names,json=columnNames,proto3,enum=otg.LldpMetricsRequest_ColumnNames_Enum" json:"column_names,omitempty"` } -func (x *PatternFlowIpv4VersionMetricTag) Reset() { - *x = PatternFlowIpv4VersionMetricTag{} +func (x *LldpMetricsRequest) Reset() { + *x = LldpMetricsRequest{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[367] + mi := &file_otg_proto_msgTypes[333] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowIpv4VersionMetricTag) String() string { +func (x *LldpMetricsRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowIpv4VersionMetricTag) ProtoMessage() {} +func (*LldpMetricsRequest) ProtoMessage() {} -func (x *PatternFlowIpv4VersionMetricTag) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[367] +func (x *LldpMetricsRequest) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[333] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -49675,74 +49012,74 @@ func (x *PatternFlowIpv4VersionMetricTag) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use PatternFlowIpv4VersionMetricTag.ProtoReflect.Descriptor instead. -func (*PatternFlowIpv4VersionMetricTag) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{367} -} - -func (x *PatternFlowIpv4VersionMetricTag) GetName() string { - if x != nil && x.Name != nil { - return *x.Name - } - return "" +// Deprecated: Use LldpMetricsRequest.ProtoReflect.Descriptor instead. +func (*LldpMetricsRequest) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{333} } -func (x *PatternFlowIpv4VersionMetricTag) GetOffset() uint32 { - if x != nil && x.Offset != nil { - return *x.Offset +func (x *LldpMetricsRequest) GetLldpNames() []string { + if x != nil { + return x.LldpNames } - return 0 + return nil } -func (x *PatternFlowIpv4VersionMetricTag) GetLength() uint32 { - if x != nil && x.Length != nil { - return *x.Length +func (x *LldpMetricsRequest) GetColumnNames() []LldpMetricsRequest_ColumnNames_Enum { + if x != nil { + return x.ColumnNames } - return 0 + return nil } -// Version -type PatternFlowIpv4Version struct { +// LLDP per instance statistics information. +type LldpMetric struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Description missing in models - // default = Choice.Enum.value - Choice *PatternFlowIpv4Version_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.PatternFlowIpv4Version_Choice_Enum,oneof" json:"choice,omitempty"` - // Description missing in models - // default = 4 - Value *uint32 `protobuf:"varint,2,opt,name=value,proto3,oneof" json:"value,omitempty"` - // Description missing in models - // default = [4] - Values []uint32 `protobuf:"varint,3,rep,packed,name=values,proto3" json:"values,omitempty"` - // Description missing in models - Increment *PatternFlowIpv4VersionCounter `protobuf:"bytes,5,opt,name=increment,proto3" json:"increment,omitempty"` - // Description missing in models - Decrement *PatternFlowIpv4VersionCounter `protobuf:"bytes,6,opt,name=decrement,proto3" json:"decrement,omitempty"` - // One or more metric tags can be used to enable tracking portion of or all bits in - // a corresponding header field for metrics per each applicable value. These would appear - // as tagged metrics in corresponding flow metrics. - MetricTags []*PatternFlowIpv4VersionMetricTag `protobuf:"bytes,7,rep,name=metric_tags,json=metricTags,proto3" json:"metric_tags,omitempty"` + // The name of the configured LLDP instance. + Name *string `protobuf:"bytes,1,opt,name=name,proto3,oneof" json:"name,omitempty"` + // Number of LLDP frames received. + FramesRx *uint64 `protobuf:"varint,2,opt,name=frames_rx,json=framesRx,proto3,oneof" json:"frames_rx,omitempty"` + // Number of LLDP frames transmitted. + FramesTx *uint64 `protobuf:"varint,3,opt,name=frames_tx,json=framesTx,proto3,oneof" json:"frames_tx,omitempty"` + // Number of LLDP frames received with packet errors. This stat should be incremented + // based on statsFramesInErrorsTotal increment rule in section 10.3.2 of IEEE Std 802.1 + // AB-2005. + FramesErrorRx *uint64 `protobuf:"varint,4,opt,name=frames_error_rx,json=framesErrorRx,proto3,oneof" json:"frames_error_rx,omitempty"` + // Number of LLDP frames received that are discarded. This stat should be incremented + // when one or more of the three mandatory TLVs at the beginning of the LLDPDU is missing, + // out of order or contains an out of range information string length. This stat should + // follow the validation rules in section 10.3.2 of IEEE Std 802.1 AB-2005. + FramesDiscard *uint64 `protobuf:"varint,5,opt,name=frames_discard,json=framesDiscard,proto3,oneof" json:"frames_discard,omitempty"` + // Number of LLDP tlvs received that are discarded. If any TLV contains an error condition + // specific for that particular TLV or if any TLV extends past the physical end of + // the frame then these TLVs will be discarded. + TlvsDiscard *uint64 `protobuf:"varint,6,opt,name=tlvs_discard,json=tlvsDiscard,proto3,oneof" json:"tlvs_discard,omitempty"` + // Number of LLDP unknown tlvs received. If the OUI of the organizationlly specific + // TLV and/or organizationally defined subtype are not recognized,or if TLV type value + // is in the range of reserved TLV types then these TLVs will be considered as unknown + // TLVs. + TlvsUnknown *uint64 `protobuf:"varint,7,opt,name=tlvs_unknown,json=tlvsUnknown,proto3,oneof" json:"tlvs_unknown,omitempty"` } -func (x *PatternFlowIpv4Version) Reset() { - *x = PatternFlowIpv4Version{} +func (x *LldpMetric) Reset() { + *x = LldpMetric{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[368] + mi := &file_otg_proto_msgTypes[334] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowIpv4Version) String() string { +func (x *LldpMetric) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowIpv4Version) ProtoMessage() {} +func (*LldpMetric) ProtoMessage() {} -func (x *PatternFlowIpv4Version) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[368] +func (x *LldpMetric) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[334] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -49753,87 +49090,94 @@ func (x *PatternFlowIpv4Version) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use PatternFlowIpv4Version.ProtoReflect.Descriptor instead. -func (*PatternFlowIpv4Version) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{368} +// Deprecated: Use LldpMetric.ProtoReflect.Descriptor instead. +func (*LldpMetric) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{334} } -func (x *PatternFlowIpv4Version) GetChoice() PatternFlowIpv4Version_Choice_Enum { - if x != nil && x.Choice != nil { - return *x.Choice +func (x *LldpMetric) GetName() string { + if x != nil && x.Name != nil { + return *x.Name } - return PatternFlowIpv4Version_Choice_unspecified + return "" } -func (x *PatternFlowIpv4Version) GetValue() uint32 { - if x != nil && x.Value != nil { - return *x.Value +func (x *LldpMetric) GetFramesRx() uint64 { + if x != nil && x.FramesRx != nil { + return *x.FramesRx } return 0 } -func (x *PatternFlowIpv4Version) GetValues() []uint32 { - if x != nil { - return x.Values +func (x *LldpMetric) GetFramesTx() uint64 { + if x != nil && x.FramesTx != nil { + return *x.FramesTx } - return nil + return 0 } -func (x *PatternFlowIpv4Version) GetIncrement() *PatternFlowIpv4VersionCounter { - if x != nil { - return x.Increment +func (x *LldpMetric) GetFramesErrorRx() uint64 { + if x != nil && x.FramesErrorRx != nil { + return *x.FramesErrorRx } - return nil + return 0 } -func (x *PatternFlowIpv4Version) GetDecrement() *PatternFlowIpv4VersionCounter { - if x != nil { - return x.Decrement +func (x *LldpMetric) GetFramesDiscard() uint64 { + if x != nil && x.FramesDiscard != nil { + return *x.FramesDiscard } - return nil + return 0 } -func (x *PatternFlowIpv4Version) GetMetricTags() []*PatternFlowIpv4VersionMetricTag { - if x != nil { - return x.MetricTags +func (x *LldpMetric) GetTlvsDiscard() uint64 { + if x != nil && x.TlvsDiscard != nil { + return *x.TlvsDiscard } - return nil + return 0 } -// integer counter pattern -type PatternFlowIpv4HeaderLengthCounter struct { +func (x *LldpMetric) GetTlvsUnknown() uint64 { + if x != nil && x.TlvsUnknown != nil { + return *x.TlvsUnknown + } + return 0 +} + +// The request to retrieve RSVP-TE per Router metrics/statistics. +type RsvpMetricsRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Description missing in models - // default = 5 - Start *uint32 `protobuf:"varint,1,opt,name=start,proto3,oneof" json:"start,omitempty"` - // Description missing in models - // default = 1 - Step *uint32 `protobuf:"varint,2,opt,name=step,proto3,oneof" json:"step,omitempty"` - // Description missing in models - // default = 1 - Count *uint32 `protobuf:"varint,3,opt,name=count,proto3,oneof" json:"count,omitempty"` + // The names of RSVP-TE Routers to return results for. An empty list as input will return + // results for all RSVP-TE routers. + // + // x-constraint: + // - /components/schemas/Device.Rsvp/properties/name + RouterNames []string `protobuf:"bytes,1,rep,name=router_names,json=routerNames,proto3" json:"router_names,omitempty"` + // The list of column names that the returned result set will contain. If the input + // list is empty then all columns will be returned except for any result_groups. + ColumnNames []RsvpMetricsRequest_ColumnNames_Enum `protobuf:"varint,2,rep,packed,name=column_names,json=columnNames,proto3,enum=otg.RsvpMetricsRequest_ColumnNames_Enum" json:"column_names,omitempty"` } -func (x *PatternFlowIpv4HeaderLengthCounter) Reset() { - *x = PatternFlowIpv4HeaderLengthCounter{} +func (x *RsvpMetricsRequest) Reset() { + *x = RsvpMetricsRequest{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[369] + mi := &file_otg_proto_msgTypes[335] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowIpv4HeaderLengthCounter) String() string { +func (x *RsvpMetricsRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowIpv4HeaderLengthCounter) ProtoMessage() {} +func (*RsvpMetricsRequest) ProtoMessage() {} -func (x *PatternFlowIpv4HeaderLengthCounter) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[369] +func (x *RsvpMetricsRequest) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[335] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -49844,70 +49188,119 @@ func (x *PatternFlowIpv4HeaderLengthCounter) ProtoReflect() protoreflect.Message return mi.MessageOf(x) } -// Deprecated: Use PatternFlowIpv4HeaderLengthCounter.ProtoReflect.Descriptor instead. -func (*PatternFlowIpv4HeaderLengthCounter) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{369} +// Deprecated: Use RsvpMetricsRequest.ProtoReflect.Descriptor instead. +func (*RsvpMetricsRequest) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{335} } -func (x *PatternFlowIpv4HeaderLengthCounter) GetStart() uint32 { - if x != nil && x.Start != nil { - return *x.Start +func (x *RsvpMetricsRequest) GetRouterNames() []string { + if x != nil { + return x.RouterNames } - return 0 + return nil } -func (x *PatternFlowIpv4HeaderLengthCounter) GetStep() uint32 { - if x != nil && x.Step != nil { - return *x.Step +func (x *RsvpMetricsRequest) GetColumnNames() []RsvpMetricsRequest_ColumnNames_Enum { + if x != nil { + return x.ColumnNames } - return 0 + return nil } -func (x *PatternFlowIpv4HeaderLengthCounter) GetCount() uint32 { - if x != nil && x.Count != nil { - return *x.Count - } - return 0 -} - -// Metric tag can be used to enable tracking portion of or all bits in a corresponding -// header field for metrics per each applicable value. These would appear as tagged -// metrics in corresponding flow metrics. -type PatternFlowIpv4HeaderLengthMetricTag struct { +// RSVP-TE per router statistics information. +type RsvpMetric struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Name used to identify the metrics associated with the values applicable for configured - // offset and length inside corresponding header field - // required = true + // The name of a configured RSVP router. Name *string `protobuf:"bytes,1,opt,name=name,proto3,oneof" json:"name,omitempty"` - // Offset in bits relative to start of corresponding header field - // default = 0 - Offset *uint32 `protobuf:"varint,2,opt,name=offset,proto3,oneof" json:"offset,omitempty"` - // Number of bits to track for metrics starting from configured offset of corresponding - // header field - // default = 4 - Length *uint32 `protobuf:"varint,3,opt,name=length,proto3,oneof" json:"length,omitempty"` + // The number of ingress point-to-point LSPs configured or transiting through the RSVP + // router which have been initated from the test port. + IngressP2PLspsConfigured *uint32 `protobuf:"varint,2,opt,name=ingress_p2p_lsps_configured,json=ingressP2pLspsConfigured,proto3,oneof" json:"ingress_p2p_lsps_configured,omitempty"` + // The number of ingress point-to-point LSPs for which Resv has been received and is + // currently up. + IngressP2PLspsUp *uint32 `protobuf:"varint,3,opt,name=ingress_p2p_lsps_up,json=ingressP2pLspsUp,proto3,oneof" json:"ingress_p2p_lsps_up,omitempty"` + // The number of egress point-to-point LSPs for which Path requests were successfully + // processed and is currently up. + EgressP2PLspsUp *uint32 `protobuf:"varint,4,opt,name=egress_p2p_lsps_up,json=egressP2pLspsUp,proto3,oneof" json:"egress_p2p_lsps_up,omitempty"` + // The number of times an LSP went from up to down state either because it timed out + // while waiting for Refreshes or a PathTear or ResvTear message was received which + // caused the LSP to flap. + LspFlapCount *uint64 `protobuf:"varint,5,opt,name=lsp_flap_count,json=lspFlapCount,proto3,oneof" json:"lsp_flap_count,omitempty"` + // The number of Path messages sent by this RSVP router. + PathsTx *uint64 `protobuf:"varint,6,opt,name=paths_tx,json=pathsTx,proto3,oneof" json:"paths_tx,omitempty"` + // The number of Path messages received by this RSVP router. + PathsRx *uint64 `protobuf:"varint,7,opt,name=paths_rx,json=pathsRx,proto3,oneof" json:"paths_rx,omitempty"` + // The number of Resv messages sent by this RSVP router. + ResvsTx *uint64 `protobuf:"varint,8,opt,name=resvs_tx,json=resvsTx,proto3,oneof" json:"resvs_tx,omitempty"` + // The number of Resv messages received by this RSVP router. + ResvsRx *uint64 `protobuf:"varint,9,opt,name=resvs_rx,json=resvsRx,proto3,oneof" json:"resvs_rx,omitempty"` + // The number of Path Tear messages sent by this RSVP router. + PathTearsTx *uint64 `protobuf:"varint,10,opt,name=path_tears_tx,json=pathTearsTx,proto3,oneof" json:"path_tears_tx,omitempty"` + // The number of Path Tear messages received by this RSVP router. + PathTearsRx *uint64 `protobuf:"varint,11,opt,name=path_tears_rx,json=pathTearsRx,proto3,oneof" json:"path_tears_rx,omitempty"` + // The number of Resv Tear messages sent by this RSVP router. + ResvTearsTx *uint64 `protobuf:"varint,12,opt,name=resv_tears_tx,json=resvTearsTx,proto3,oneof" json:"resv_tears_tx,omitempty"` + // The number of Resv Tear messages received by this RSVP router. + ResvTearsRx *uint64 `protobuf:"varint,13,opt,name=resv_tears_rx,json=resvTearsRx,proto3,oneof" json:"resv_tears_rx,omitempty"` + // The number of Path Error messages sent by this RSVP router. + PathErrorsTx *uint64 `protobuf:"varint,14,opt,name=path_errors_tx,json=pathErrorsTx,proto3,oneof" json:"path_errors_tx,omitempty"` + // The number of Path Error messages received by this RSVP router. + PathErrorsRx *uint64 `protobuf:"varint,15,opt,name=path_errors_rx,json=pathErrorsRx,proto3,oneof" json:"path_errors_rx,omitempty"` + // The number of Resv Error messages sent by this RSVP router. + ResvErrorsTx *uint64 `protobuf:"varint,16,opt,name=resv_errors_tx,json=resvErrorsTx,proto3,oneof" json:"resv_errors_tx,omitempty"` + // The number of Resv Error messages received by this RSVP router. + ResvErrorsRx *uint64 `protobuf:"varint,17,opt,name=resv_errors_rx,json=resvErrorsRx,proto3,oneof" json:"resv_errors_rx,omitempty"` + // The number of ResvConf messages sent by this RSVP router. + ResvConfTx *uint64 `protobuf:"varint,18,opt,name=resv_conf_tx,json=resvConfTx,proto3,oneof" json:"resv_conf_tx,omitempty"` + // The number of ResvConf messages received by this RSVP router. + ResvConfRx *uint64 `protobuf:"varint,19,opt,name=resv_conf_rx,json=resvConfRx,proto3,oneof" json:"resv_conf_rx,omitempty"` + // The number of Hello messages sent by this RSVP router. + HellosTx *uint64 `protobuf:"varint,20,opt,name=hellos_tx,json=hellosTx,proto3,oneof" json:"hellos_tx,omitempty"` + // The number of Hello messages received by this RSVP router. + HellosRx *uint64 `protobuf:"varint,21,opt,name=hellos_rx,json=hellosRx,proto3,oneof" json:"hellos_rx,omitempty"` + // The number of Ack messages sent by this RSVP router. + AcksTx *uint64 `protobuf:"varint,22,opt,name=acks_tx,json=acksTx,proto3,oneof" json:"acks_tx,omitempty"` + // The number of Ack messages received by this RSVP router. + AcksRx *uint64 `protobuf:"varint,23,opt,name=acks_rx,json=acksRx,proto3,oneof" json:"acks_rx,omitempty"` + // The number of Nack messages sent by this RSVP router. + NacksTx *uint64 `protobuf:"varint,24,opt,name=nacks_tx,json=nacksTx,proto3,oneof" json:"nacks_tx,omitempty"` + // The number of Nack messages received by this RSVP router. + NacksRx *uint64 `protobuf:"varint,25,opt,name=nacks_rx,json=nacksRx,proto3,oneof" json:"nacks_rx,omitempty"` + // The number of SRefresh messages sent by this RSVP router. + SrefreshTx *uint64 `protobuf:"varint,26,opt,name=srefresh_tx,json=srefreshTx,proto3,oneof" json:"srefresh_tx,omitempty"` + // The number of SRefresh messages received by this RSVP router. + SrefreshRx *uint64 `protobuf:"varint,27,opt,name=srefresh_rx,json=srefreshRx,proto3,oneof" json:"srefresh_rx,omitempty"` + // The number of Bundle messages sent by this RSVP router. + BundleTx *uint64 `protobuf:"varint,28,opt,name=bundle_tx,json=bundleTx,proto3,oneof" json:"bundle_tx,omitempty"` + // The number of Bundle messages received by this RSVP router. + BundleRx *uint64 `protobuf:"varint,29,opt,name=bundle_rx,json=bundleRx,proto3,oneof" json:"bundle_rx,omitempty"` + // The number of Path messages with Path Re-evaluation Request enabled sent by this + // RSVP router. + PathReevaluationRequestTx *uint64 `protobuf:"varint,30,opt,name=path_reevaluation_request_tx,json=pathReevaluationRequestTx,proto3,oneof" json:"path_reevaluation_request_tx,omitempty"` + // The number of successfully completed Make-Before-Break operations on LSPs on this + // RSVP router. + PathReoptimizations *uint64 `protobuf:"varint,31,opt,name=path_reoptimizations,json=pathReoptimizations,proto3,oneof" json:"path_reoptimizations,omitempty"` } -func (x *PatternFlowIpv4HeaderLengthMetricTag) Reset() { - *x = PatternFlowIpv4HeaderLengthMetricTag{} +func (x *RsvpMetric) Reset() { + *x = RsvpMetric{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[370] + mi := &file_otg_proto_msgTypes[336] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowIpv4HeaderLengthMetricTag) String() string { +func (x *RsvpMetric) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowIpv4HeaderLengthMetricTag) ProtoMessage() {} +func (*RsvpMetric) ProtoMessage() {} -func (x *PatternFlowIpv4HeaderLengthMetricTag) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[370] +func (x *RsvpMetric) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[336] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -49918,334 +49311,268 @@ func (x *PatternFlowIpv4HeaderLengthMetricTag) ProtoReflect() protoreflect.Messa return mi.MessageOf(x) } -// Deprecated: Use PatternFlowIpv4HeaderLengthMetricTag.ProtoReflect.Descriptor instead. -func (*PatternFlowIpv4HeaderLengthMetricTag) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{370} +// Deprecated: Use RsvpMetric.ProtoReflect.Descriptor instead. +func (*RsvpMetric) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{336} } -func (x *PatternFlowIpv4HeaderLengthMetricTag) GetName() string { +func (x *RsvpMetric) GetName() string { if x != nil && x.Name != nil { return *x.Name } return "" } -func (x *PatternFlowIpv4HeaderLengthMetricTag) GetOffset() uint32 { - if x != nil && x.Offset != nil { - return *x.Offset +func (x *RsvpMetric) GetIngressP2PLspsConfigured() uint32 { + if x != nil && x.IngressP2PLspsConfigured != nil { + return *x.IngressP2PLspsConfigured } return 0 } -func (x *PatternFlowIpv4HeaderLengthMetricTag) GetLength() uint32 { - if x != nil && x.Length != nil { - return *x.Length +func (x *RsvpMetric) GetIngressP2PLspsUp() uint32 { + if x != nil && x.IngressP2PLspsUp != nil { + return *x.IngressP2PLspsUp } return 0 } -// Header length -type PatternFlowIpv4HeaderLength struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // Description missing in models - // default = Choice.Enum.auto - Choice *PatternFlowIpv4HeaderLength_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.PatternFlowIpv4HeaderLength_Choice_Enum,oneof" json:"choice,omitempty"` - // Description missing in models - // default = 5 - Value *uint32 `protobuf:"varint,2,opt,name=value,proto3,oneof" json:"value,omitempty"` - // Description missing in models - // default = [5] - Values []uint32 `protobuf:"varint,3,rep,packed,name=values,proto3" json:"values,omitempty"` - // The OTG implementation can provide a system generated - // value for this property. If the OTG is unable to generate a value - // the default value must be used. - // default = 5 - Auto *uint32 `protobuf:"varint,4,opt,name=auto,proto3,oneof" json:"auto,omitempty"` - // Description missing in models - Increment *PatternFlowIpv4HeaderLengthCounter `protobuf:"bytes,6,opt,name=increment,proto3" json:"increment,omitempty"` - // Description missing in models - Decrement *PatternFlowIpv4HeaderLengthCounter `protobuf:"bytes,7,opt,name=decrement,proto3" json:"decrement,omitempty"` - // One or more metric tags can be used to enable tracking portion of or all bits in - // a corresponding header field for metrics per each applicable value. These would appear - // as tagged metrics in corresponding flow metrics. - MetricTags []*PatternFlowIpv4HeaderLengthMetricTag `protobuf:"bytes,8,rep,name=metric_tags,json=metricTags,proto3" json:"metric_tags,omitempty"` +func (x *RsvpMetric) GetEgressP2PLspsUp() uint32 { + if x != nil && x.EgressP2PLspsUp != nil { + return *x.EgressP2PLspsUp + } + return 0 } -func (x *PatternFlowIpv4HeaderLength) Reset() { - *x = PatternFlowIpv4HeaderLength{} - if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[371] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) +func (x *RsvpMetric) GetLspFlapCount() uint64 { + if x != nil && x.LspFlapCount != nil { + return *x.LspFlapCount } + return 0 } -func (x *PatternFlowIpv4HeaderLength) String() string { - return protoimpl.X.MessageStringOf(x) +func (x *RsvpMetric) GetPathsTx() uint64 { + if x != nil && x.PathsTx != nil { + return *x.PathsTx + } + return 0 } -func (*PatternFlowIpv4HeaderLength) ProtoMessage() {} - -func (x *PatternFlowIpv4HeaderLength) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[371] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms +func (x *RsvpMetric) GetPathsRx() uint64 { + if x != nil && x.PathsRx != nil { + return *x.PathsRx } - return mi.MessageOf(x) + return 0 } -// Deprecated: Use PatternFlowIpv4HeaderLength.ProtoReflect.Descriptor instead. -func (*PatternFlowIpv4HeaderLength) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{371} +func (x *RsvpMetric) GetResvsTx() uint64 { + if x != nil && x.ResvsTx != nil { + return *x.ResvsTx + } + return 0 } -func (x *PatternFlowIpv4HeaderLength) GetChoice() PatternFlowIpv4HeaderLength_Choice_Enum { - if x != nil && x.Choice != nil { - return *x.Choice +func (x *RsvpMetric) GetResvsRx() uint64 { + if x != nil && x.ResvsRx != nil { + return *x.ResvsRx } - return PatternFlowIpv4HeaderLength_Choice_unspecified + return 0 } -func (x *PatternFlowIpv4HeaderLength) GetValue() uint32 { - if x != nil && x.Value != nil { - return *x.Value +func (x *RsvpMetric) GetPathTearsTx() uint64 { + if x != nil && x.PathTearsTx != nil { + return *x.PathTearsTx } return 0 } -func (x *PatternFlowIpv4HeaderLength) GetValues() []uint32 { - if x != nil { - return x.Values +func (x *RsvpMetric) GetPathTearsRx() uint64 { + if x != nil && x.PathTearsRx != nil { + return *x.PathTearsRx } - return nil + return 0 } -func (x *PatternFlowIpv4HeaderLength) GetAuto() uint32 { - if x != nil && x.Auto != nil { - return *x.Auto +func (x *RsvpMetric) GetResvTearsTx() uint64 { + if x != nil && x.ResvTearsTx != nil { + return *x.ResvTearsTx } return 0 } -func (x *PatternFlowIpv4HeaderLength) GetIncrement() *PatternFlowIpv4HeaderLengthCounter { - if x != nil { - return x.Increment +func (x *RsvpMetric) GetResvTearsRx() uint64 { + if x != nil && x.ResvTearsRx != nil { + return *x.ResvTearsRx } - return nil + return 0 } -func (x *PatternFlowIpv4HeaderLength) GetDecrement() *PatternFlowIpv4HeaderLengthCounter { - if x != nil { - return x.Decrement +func (x *RsvpMetric) GetPathErrorsTx() uint64 { + if x != nil && x.PathErrorsTx != nil { + return *x.PathErrorsTx } - return nil + return 0 } -func (x *PatternFlowIpv4HeaderLength) GetMetricTags() []*PatternFlowIpv4HeaderLengthMetricTag { - if x != nil { - return x.MetricTags +func (x *RsvpMetric) GetPathErrorsRx() uint64 { + if x != nil && x.PathErrorsRx != nil { + return *x.PathErrorsRx } - return nil + return 0 } -// integer counter pattern -type PatternFlowIpv4TotalLengthCounter struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // Description missing in models - // default = 46 - Start *uint32 `protobuf:"varint,1,opt,name=start,proto3,oneof" json:"start,omitempty"` - // Description missing in models - // default = 1 - Step *uint32 `protobuf:"varint,2,opt,name=step,proto3,oneof" json:"step,omitempty"` - // Description missing in models - // default = 1 - Count *uint32 `protobuf:"varint,3,opt,name=count,proto3,oneof" json:"count,omitempty"` +func (x *RsvpMetric) GetResvErrorsTx() uint64 { + if x != nil && x.ResvErrorsTx != nil { + return *x.ResvErrorsTx + } + return 0 } -func (x *PatternFlowIpv4TotalLengthCounter) Reset() { - *x = PatternFlowIpv4TotalLengthCounter{} - if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[372] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) +func (x *RsvpMetric) GetResvErrorsRx() uint64 { + if x != nil && x.ResvErrorsRx != nil { + return *x.ResvErrorsRx } + return 0 } -func (x *PatternFlowIpv4TotalLengthCounter) String() string { - return protoimpl.X.MessageStringOf(x) +func (x *RsvpMetric) GetResvConfTx() uint64 { + if x != nil && x.ResvConfTx != nil { + return *x.ResvConfTx + } + return 0 } -func (*PatternFlowIpv4TotalLengthCounter) ProtoMessage() {} - -func (x *PatternFlowIpv4TotalLengthCounter) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[372] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms +func (x *RsvpMetric) GetResvConfRx() uint64 { + if x != nil && x.ResvConfRx != nil { + return *x.ResvConfRx } - return mi.MessageOf(x) + return 0 } -// Deprecated: Use PatternFlowIpv4TotalLengthCounter.ProtoReflect.Descriptor instead. -func (*PatternFlowIpv4TotalLengthCounter) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{372} +func (x *RsvpMetric) GetHellosTx() uint64 { + if x != nil && x.HellosTx != nil { + return *x.HellosTx + } + return 0 } -func (x *PatternFlowIpv4TotalLengthCounter) GetStart() uint32 { - if x != nil && x.Start != nil { - return *x.Start +func (x *RsvpMetric) GetHellosRx() uint64 { + if x != nil && x.HellosRx != nil { + return *x.HellosRx } return 0 } -func (x *PatternFlowIpv4TotalLengthCounter) GetStep() uint32 { - if x != nil && x.Step != nil { - return *x.Step +func (x *RsvpMetric) GetAcksTx() uint64 { + if x != nil && x.AcksTx != nil { + return *x.AcksTx } return 0 } -func (x *PatternFlowIpv4TotalLengthCounter) GetCount() uint32 { - if x != nil && x.Count != nil { - return *x.Count +func (x *RsvpMetric) GetAcksRx() uint64 { + if x != nil && x.AcksRx != nil { + return *x.AcksRx } return 0 } -// Metric tag can be used to enable tracking portion of or all bits in a corresponding -// header field for metrics per each applicable value. These would appear as tagged -// metrics in corresponding flow metrics. -type PatternFlowIpv4TotalLengthMetricTag struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // Name used to identify the metrics associated with the values applicable for configured - // offset and length inside corresponding header field - // required = true - Name *string `protobuf:"bytes,1,opt,name=name,proto3,oneof" json:"name,omitempty"` - // Offset in bits relative to start of corresponding header field - // default = 0 - Offset *uint32 `protobuf:"varint,2,opt,name=offset,proto3,oneof" json:"offset,omitempty"` - // Number of bits to track for metrics starting from configured offset of corresponding - // header field - // default = 16 - Length *uint32 `protobuf:"varint,3,opt,name=length,proto3,oneof" json:"length,omitempty"` +func (x *RsvpMetric) GetNacksTx() uint64 { + if x != nil && x.NacksTx != nil { + return *x.NacksTx + } + return 0 } -func (x *PatternFlowIpv4TotalLengthMetricTag) Reset() { - *x = PatternFlowIpv4TotalLengthMetricTag{} - if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[373] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) +func (x *RsvpMetric) GetNacksRx() uint64 { + if x != nil && x.NacksRx != nil { + return *x.NacksRx } + return 0 } -func (x *PatternFlowIpv4TotalLengthMetricTag) String() string { - return protoimpl.X.MessageStringOf(x) +func (x *RsvpMetric) GetSrefreshTx() uint64 { + if x != nil && x.SrefreshTx != nil { + return *x.SrefreshTx + } + return 0 } -func (*PatternFlowIpv4TotalLengthMetricTag) ProtoMessage() {} - -func (x *PatternFlowIpv4TotalLengthMetricTag) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[373] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms +func (x *RsvpMetric) GetSrefreshRx() uint64 { + if x != nil && x.SrefreshRx != nil { + return *x.SrefreshRx } - return mi.MessageOf(x) + return 0 } -// Deprecated: Use PatternFlowIpv4TotalLengthMetricTag.ProtoReflect.Descriptor instead. -func (*PatternFlowIpv4TotalLengthMetricTag) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{373} +func (x *RsvpMetric) GetBundleTx() uint64 { + if x != nil && x.BundleTx != nil { + return *x.BundleTx + } + return 0 } -func (x *PatternFlowIpv4TotalLengthMetricTag) GetName() string { - if x != nil && x.Name != nil { - return *x.Name +func (x *RsvpMetric) GetBundleRx() uint64 { + if x != nil && x.BundleRx != nil { + return *x.BundleRx } - return "" + return 0 } -func (x *PatternFlowIpv4TotalLengthMetricTag) GetOffset() uint32 { - if x != nil && x.Offset != nil { - return *x.Offset +func (x *RsvpMetric) GetPathReevaluationRequestTx() uint64 { + if x != nil && x.PathReevaluationRequestTx != nil { + return *x.PathReevaluationRequestTx } return 0 } -func (x *PatternFlowIpv4TotalLengthMetricTag) GetLength() uint32 { - if x != nil && x.Length != nil { - return *x.Length +func (x *RsvpMetric) GetPathReoptimizations() uint64 { + if x != nil && x.PathReoptimizations != nil { + return *x.PathReoptimizations } return 0 } -// Total length -type PatternFlowIpv4TotalLength struct { +// Request to traffic generator for states of choice +type StatesRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // Description missing in models - // default = Choice.Enum.auto - Choice *PatternFlowIpv4TotalLength_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.PatternFlowIpv4TotalLength_Choice_Enum,oneof" json:"choice,omitempty"` + // default = Choice.Enum.ipv4_neighbors + Choice *StatesRequest_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.StatesRequest_Choice_Enum,oneof" json:"choice,omitempty"` // Description missing in models - // default = 46 - Value *uint32 `protobuf:"varint,2,opt,name=value,proto3,oneof" json:"value,omitempty"` + Ipv4Neighbors *Neighborsv4StatesRequest `protobuf:"bytes,2,opt,name=ipv4_neighbors,json=ipv4Neighbors,proto3" json:"ipv4_neighbors,omitempty"` // Description missing in models - // default = [46] - Values []uint32 `protobuf:"varint,3,rep,packed,name=values,proto3" json:"values,omitempty"` - // The OTG implementation can provide a system generated - // value for this property. If the OTG is unable to generate a value - // the default value must be used. - // default = 46 - Auto *uint32 `protobuf:"varint,4,opt,name=auto,proto3,oneof" json:"auto,omitempty"` + Ipv6Neighbors *Neighborsv6StatesRequest `protobuf:"bytes,3,opt,name=ipv6_neighbors,json=ipv6Neighbors,proto3" json:"ipv6_neighbors,omitempty"` // Description missing in models - Increment *PatternFlowIpv4TotalLengthCounter `protobuf:"bytes,6,opt,name=increment,proto3" json:"increment,omitempty"` + BgpPrefixes *BgpPrefixStateRequest `protobuf:"bytes,4,opt,name=bgp_prefixes,json=bgpPrefixes,proto3" json:"bgp_prefixes,omitempty"` // Description missing in models - Decrement *PatternFlowIpv4TotalLengthCounter `protobuf:"bytes,7,opt,name=decrement,proto3" json:"decrement,omitempty"` - // One or more metric tags can be used to enable tracking portion of or all bits in - // a corresponding header field for metrics per each applicable value. These would appear - // as tagged metrics in corresponding flow metrics. - MetricTags []*PatternFlowIpv4TotalLengthMetricTag `protobuf:"bytes,8,rep,name=metric_tags,json=metricTags,proto3" json:"metric_tags,omitempty"` + IsisLsps *IsisLspsStateRequest `protobuf:"bytes,5,opt,name=isis_lsps,json=isisLsps,proto3" json:"isis_lsps,omitempty"` + // Description missing in models + LldpNeighbors *LldpNeighborsStateRequest `protobuf:"bytes,6,opt,name=lldp_neighbors,json=lldpNeighbors,proto3" json:"lldp_neighbors,omitempty"` + // Description missing in models + RsvpLsps *RsvpLspsStateRequest `protobuf:"bytes,7,opt,name=rsvp_lsps,json=rsvpLsps,proto3" json:"rsvp_lsps,omitempty"` } -func (x *PatternFlowIpv4TotalLength) Reset() { - *x = PatternFlowIpv4TotalLength{} +func (x *StatesRequest) Reset() { + *x = StatesRequest{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[374] + mi := &file_otg_proto_msgTypes[337] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowIpv4TotalLength) String() string { +func (x *StatesRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowIpv4TotalLength) ProtoMessage() {} +func (*StatesRequest) ProtoMessage() {} -func (x *PatternFlowIpv4TotalLength) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[374] +func (x *StatesRequest) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[337] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -50256,94 +49583,100 @@ func (x *PatternFlowIpv4TotalLength) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use PatternFlowIpv4TotalLength.ProtoReflect.Descriptor instead. -func (*PatternFlowIpv4TotalLength) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{374} +// Deprecated: Use StatesRequest.ProtoReflect.Descriptor instead. +func (*StatesRequest) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{337} } -func (x *PatternFlowIpv4TotalLength) GetChoice() PatternFlowIpv4TotalLength_Choice_Enum { +func (x *StatesRequest) GetChoice() StatesRequest_Choice_Enum { if x != nil && x.Choice != nil { return *x.Choice } - return PatternFlowIpv4TotalLength_Choice_unspecified + return StatesRequest_Choice_unspecified } -func (x *PatternFlowIpv4TotalLength) GetValue() uint32 { - if x != nil && x.Value != nil { - return *x.Value +func (x *StatesRequest) GetIpv4Neighbors() *Neighborsv4StatesRequest { + if x != nil { + return x.Ipv4Neighbors } - return 0 + return nil } -func (x *PatternFlowIpv4TotalLength) GetValues() []uint32 { +func (x *StatesRequest) GetIpv6Neighbors() *Neighborsv6StatesRequest { if x != nil { - return x.Values + return x.Ipv6Neighbors } return nil } -func (x *PatternFlowIpv4TotalLength) GetAuto() uint32 { - if x != nil && x.Auto != nil { - return *x.Auto +func (x *StatesRequest) GetBgpPrefixes() *BgpPrefixStateRequest { + if x != nil { + return x.BgpPrefixes } - return 0 + return nil } -func (x *PatternFlowIpv4TotalLength) GetIncrement() *PatternFlowIpv4TotalLengthCounter { +func (x *StatesRequest) GetIsisLsps() *IsisLspsStateRequest { if x != nil { - return x.Increment + return x.IsisLsps } return nil } -func (x *PatternFlowIpv4TotalLength) GetDecrement() *PatternFlowIpv4TotalLengthCounter { +func (x *StatesRequest) GetLldpNeighbors() *LldpNeighborsStateRequest { if x != nil { - return x.Decrement + return x.LldpNeighbors } return nil } -func (x *PatternFlowIpv4TotalLength) GetMetricTags() []*PatternFlowIpv4TotalLengthMetricTag { +func (x *StatesRequest) GetRsvpLsps() *RsvpLspsStateRequest { if x != nil { - return x.MetricTags + return x.RsvpLsps } return nil } -// integer counter pattern -type PatternFlowIpv4IdentificationCounter struct { +// Response containing chosen traffic generator states +type StatesResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // Description missing in models - // default = 0 - Start *uint32 `protobuf:"varint,1,opt,name=start,proto3,oneof" json:"start,omitempty"` + // default = Choice.Enum.ipv4_neighbors + Choice *StatesResponse_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.StatesResponse_Choice_Enum,oneof" json:"choice,omitempty"` // Description missing in models - // default = 1 - Step *uint32 `protobuf:"varint,2,opt,name=step,proto3,oneof" json:"step,omitempty"` + Ipv4Neighbors []*Neighborsv4State `protobuf:"bytes,2,rep,name=ipv4_neighbors,json=ipv4Neighbors,proto3" json:"ipv4_neighbors,omitempty"` // Description missing in models - // default = 1 - Count *uint32 `protobuf:"varint,3,opt,name=count,proto3,oneof" json:"count,omitempty"` -} + Ipv6Neighbors []*Neighborsv6State `protobuf:"bytes,3,rep,name=ipv6_neighbors,json=ipv6Neighbors,proto3" json:"ipv6_neighbors,omitempty"` + // Description missing in models + BgpPrefixes []*BgpPrefixesState `protobuf:"bytes,4,rep,name=bgp_prefixes,json=bgpPrefixes,proto3" json:"bgp_prefixes,omitempty"` + // Description missing in models + IsisLsps []*IsisLspsState `protobuf:"bytes,5,rep,name=isis_lsps,json=isisLsps,proto3" json:"isis_lsps,omitempty"` + // Description missing in models + LldpNeighbors []*LldpNeighborsState `protobuf:"bytes,6,rep,name=lldp_neighbors,json=lldpNeighbors,proto3" json:"lldp_neighbors,omitempty"` + // Description missing in models + RsvpLsps []*RsvpLspsState `protobuf:"bytes,7,rep,name=rsvp_lsps,json=rsvpLsps,proto3" json:"rsvp_lsps,omitempty"` +} -func (x *PatternFlowIpv4IdentificationCounter) Reset() { - *x = PatternFlowIpv4IdentificationCounter{} +func (x *StatesResponse) Reset() { + *x = StatesResponse{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[375] + mi := &file_otg_proto_msgTypes[338] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowIpv4IdentificationCounter) String() string { +func (x *StatesResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowIpv4IdentificationCounter) ProtoMessage() {} +func (*StatesResponse) ProtoMessage() {} -func (x *PatternFlowIpv4IdentificationCounter) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[375] +func (x *StatesResponse) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[338] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -50354,70 +49687,92 @@ func (x *PatternFlowIpv4IdentificationCounter) ProtoReflect() protoreflect.Messa return mi.MessageOf(x) } -// Deprecated: Use PatternFlowIpv4IdentificationCounter.ProtoReflect.Descriptor instead. -func (*PatternFlowIpv4IdentificationCounter) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{375} +// Deprecated: Use StatesResponse.ProtoReflect.Descriptor instead. +func (*StatesResponse) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{338} } -func (x *PatternFlowIpv4IdentificationCounter) GetStart() uint32 { - if x != nil && x.Start != nil { - return *x.Start +func (x *StatesResponse) GetChoice() StatesResponse_Choice_Enum { + if x != nil && x.Choice != nil { + return *x.Choice } - return 0 + return StatesResponse_Choice_unspecified } -func (x *PatternFlowIpv4IdentificationCounter) GetStep() uint32 { - if x != nil && x.Step != nil { - return *x.Step +func (x *StatesResponse) GetIpv4Neighbors() []*Neighborsv4State { + if x != nil { + return x.Ipv4Neighbors } - return 0 + return nil } -func (x *PatternFlowIpv4IdentificationCounter) GetCount() uint32 { - if x != nil && x.Count != nil { - return *x.Count +func (x *StatesResponse) GetIpv6Neighbors() []*Neighborsv6State { + if x != nil { + return x.Ipv6Neighbors } - return 0 + return nil } -// Metric tag can be used to enable tracking portion of or all bits in a corresponding -// header field for metrics per each applicable value. These would appear as tagged -// metrics in corresponding flow metrics. -type PatternFlowIpv4IdentificationMetricTag struct { +func (x *StatesResponse) GetBgpPrefixes() []*BgpPrefixesState { + if x != nil { + return x.BgpPrefixes + } + return nil +} + +func (x *StatesResponse) GetIsisLsps() []*IsisLspsState { + if x != nil { + return x.IsisLsps + } + return nil +} + +func (x *StatesResponse) GetLldpNeighbors() []*LldpNeighborsState { + if x != nil { + return x.LldpNeighbors + } + return nil +} + +func (x *StatesResponse) GetRsvpLsps() []*RsvpLspsState { + if x != nil { + return x.RsvpLsps + } + return nil +} + +// The request to retrieve IPv4 Neighbor state (ARP cache entries) of a network interface(s). +type Neighborsv4StatesRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Name used to identify the metrics associated with the values applicable for configured - // offset and length inside corresponding header field - // required = true - Name *string `protobuf:"bytes,1,opt,name=name,proto3,oneof" json:"name,omitempty"` - // Offset in bits relative to start of corresponding header field - // default = 0 - Offset *uint32 `protobuf:"varint,2,opt,name=offset,proto3,oneof" json:"offset,omitempty"` - // Number of bits to track for metrics starting from configured offset of corresponding - // header field - // default = 16 - Length *uint32 `protobuf:"varint,3,opt,name=length,proto3,oneof" json:"length,omitempty"` + // The names of Ethernet interfaces for which Neighbor state (ARP cache entries) will + // be retrieved. If no names are specified then the results will contain Neighbor state + // (ARP cache entries) for all available Ethernet interfaces. + // + // x-constraint: + // - /components/schemas/Device.Ethernet/properties/name + EthernetNames []string `protobuf:"bytes,1,rep,name=ethernet_names,json=ethernetNames,proto3" json:"ethernet_names,omitempty"` } -func (x *PatternFlowIpv4IdentificationMetricTag) Reset() { - *x = PatternFlowIpv4IdentificationMetricTag{} +func (x *Neighborsv4StatesRequest) Reset() { + *x = Neighborsv4StatesRequest{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[376] + mi := &file_otg_proto_msgTypes[339] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowIpv4IdentificationMetricTag) String() string { +func (x *Neighborsv4StatesRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowIpv4IdentificationMetricTag) ProtoMessage() {} +func (*Neighborsv4StatesRequest) ProtoMessage() {} -func (x *PatternFlowIpv4IdentificationMetricTag) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[376] +func (x *Neighborsv4StatesRequest) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[339] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -50428,74 +49783,52 @@ func (x *PatternFlowIpv4IdentificationMetricTag) ProtoReflect() protoreflect.Mes return mi.MessageOf(x) } -// Deprecated: Use PatternFlowIpv4IdentificationMetricTag.ProtoReflect.Descriptor instead. -func (*PatternFlowIpv4IdentificationMetricTag) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{376} -} - -func (x *PatternFlowIpv4IdentificationMetricTag) GetName() string { - if x != nil && x.Name != nil { - return *x.Name - } - return "" -} - -func (x *PatternFlowIpv4IdentificationMetricTag) GetOffset() uint32 { - if x != nil && x.Offset != nil { - return *x.Offset - } - return 0 +// Deprecated: Use Neighborsv4StatesRequest.ProtoReflect.Descriptor instead. +func (*Neighborsv4StatesRequest) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{339} } -func (x *PatternFlowIpv4IdentificationMetricTag) GetLength() uint32 { - if x != nil && x.Length != nil { - return *x.Length +func (x *Neighborsv4StatesRequest) GetEthernetNames() []string { + if x != nil { + return x.EthernetNames } - return 0 + return nil } -// Identification -type PatternFlowIpv4Identification struct { +// IPv4 Neighbor state (ARP cache entry). +type Neighborsv4State struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Description missing in models - // default = Choice.Enum.value - Choice *PatternFlowIpv4Identification_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.PatternFlowIpv4Identification_Choice_Enum,oneof" json:"choice,omitempty"` - // Description missing in models - // default = 0 - Value *uint32 `protobuf:"varint,2,opt,name=value,proto3,oneof" json:"value,omitempty"` - // Description missing in models - // default = [0] - Values []uint32 `protobuf:"varint,3,rep,packed,name=values,proto3" json:"values,omitempty"` - // Description missing in models - Increment *PatternFlowIpv4IdentificationCounter `protobuf:"bytes,5,opt,name=increment,proto3" json:"increment,omitempty"` - // Description missing in models - Decrement *PatternFlowIpv4IdentificationCounter `protobuf:"bytes,6,opt,name=decrement,proto3" json:"decrement,omitempty"` - // One or more metric tags can be used to enable tracking portion of or all bits in - // a corresponding header field for metrics per each applicable value. These would appear - // as tagged metrics in corresponding flow metrics. - MetricTags []*PatternFlowIpv4IdentificationMetricTag `protobuf:"bytes,7,rep,name=metric_tags,json=metricTags,proto3" json:"metric_tags,omitempty"` + // The name of the Ethernet interface associated with the Neighbor state (ARP cache + // entry). + // required = true + EthernetName *string `protobuf:"bytes,1,opt,name=ethernet_name,json=ethernetName,proto3,oneof" json:"ethernet_name,omitempty"` + // The IPv4 address of the neighbor. + // required = true + Ipv4Address *string `protobuf:"bytes,2,opt,name=ipv4_address,json=ipv4Address,proto3,oneof" json:"ipv4_address,omitempty"` + // The link-layer address (MAC) of the neighbor. + LinkLayerAddress *string `protobuf:"bytes,3,opt,name=link_layer_address,json=linkLayerAddress,proto3,oneof" json:"link_layer_address,omitempty"` } -func (x *PatternFlowIpv4Identification) Reset() { - *x = PatternFlowIpv4Identification{} +func (x *Neighborsv4State) Reset() { + *x = Neighborsv4State{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[377] + mi := &file_otg_proto_msgTypes[340] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowIpv4Identification) String() string { +func (x *Neighborsv4State) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowIpv4Identification) ProtoMessage() {} +func (*Neighborsv4State) ProtoMessage() {} -func (x *PatternFlowIpv4Identification) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[377] +func (x *Neighborsv4State) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[340] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -50506,87 +49839,64 @@ func (x *PatternFlowIpv4Identification) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use PatternFlowIpv4Identification.ProtoReflect.Descriptor instead. -func (*PatternFlowIpv4Identification) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{377} -} - -func (x *PatternFlowIpv4Identification) GetChoice() PatternFlowIpv4Identification_Choice_Enum { - if x != nil && x.Choice != nil { - return *x.Choice - } - return PatternFlowIpv4Identification_Choice_unspecified -} - -func (x *PatternFlowIpv4Identification) GetValue() uint32 { - if x != nil && x.Value != nil { - return *x.Value - } - return 0 -} - -func (x *PatternFlowIpv4Identification) GetValues() []uint32 { - if x != nil { - return x.Values - } - return nil +// Deprecated: Use Neighborsv4State.ProtoReflect.Descriptor instead. +func (*Neighborsv4State) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{340} } -func (x *PatternFlowIpv4Identification) GetIncrement() *PatternFlowIpv4IdentificationCounter { - if x != nil { - return x.Increment +func (x *Neighborsv4State) GetEthernetName() string { + if x != nil && x.EthernetName != nil { + return *x.EthernetName } - return nil + return "" } -func (x *PatternFlowIpv4Identification) GetDecrement() *PatternFlowIpv4IdentificationCounter { - if x != nil { - return x.Decrement +func (x *Neighborsv4State) GetIpv4Address() string { + if x != nil && x.Ipv4Address != nil { + return *x.Ipv4Address } - return nil + return "" } -func (x *PatternFlowIpv4Identification) GetMetricTags() []*PatternFlowIpv4IdentificationMetricTag { - if x != nil { - return x.MetricTags +func (x *Neighborsv4State) GetLinkLayerAddress() string { + if x != nil && x.LinkLayerAddress != nil { + return *x.LinkLayerAddress } - return nil + return "" } -// integer counter pattern -type PatternFlowIpv4ReservedCounter struct { +// The request to retrieve IPv6 Neighbor state (NDISC cache entries) of a network interface(s). +type Neighborsv6StatesRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Description missing in models - // default = 0 - Start *uint32 `protobuf:"varint,1,opt,name=start,proto3,oneof" json:"start,omitempty"` - // Description missing in models - // default = 1 - Step *uint32 `protobuf:"varint,2,opt,name=step,proto3,oneof" json:"step,omitempty"` - // Description missing in models - // default = 1 - Count *uint32 `protobuf:"varint,3,opt,name=count,proto3,oneof" json:"count,omitempty"` + // The names of Ethernet interfaces for which Neighbor state (NDISC cache entries) will + // be retrieved. If no names are specified then the results will contain Neighbor state + // (NDISC cache entries) for all available Ethernet interfaces. + // + // x-constraint: + // - /components/schemas/Device.Ethernet/properties/name + EthernetNames []string `protobuf:"bytes,1,rep,name=ethernet_names,json=ethernetNames,proto3" json:"ethernet_names,omitempty"` } -func (x *PatternFlowIpv4ReservedCounter) Reset() { - *x = PatternFlowIpv4ReservedCounter{} +func (x *Neighborsv6StatesRequest) Reset() { + *x = Neighborsv6StatesRequest{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[378] + mi := &file_otg_proto_msgTypes[341] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowIpv4ReservedCounter) String() string { +func (x *Neighborsv6StatesRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowIpv4ReservedCounter) ProtoMessage() {} +func (*Neighborsv6StatesRequest) ProtoMessage() {} -func (x *PatternFlowIpv4ReservedCounter) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[378] +func (x *Neighborsv6StatesRequest) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[341] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -50597,70 +49907,52 @@ func (x *PatternFlowIpv4ReservedCounter) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use PatternFlowIpv4ReservedCounter.ProtoReflect.Descriptor instead. -func (*PatternFlowIpv4ReservedCounter) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{378} -} - -func (x *PatternFlowIpv4ReservedCounter) GetStart() uint32 { - if x != nil && x.Start != nil { - return *x.Start - } - return 0 -} - -func (x *PatternFlowIpv4ReservedCounter) GetStep() uint32 { - if x != nil && x.Step != nil { - return *x.Step - } - return 0 +// Deprecated: Use Neighborsv6StatesRequest.ProtoReflect.Descriptor instead. +func (*Neighborsv6StatesRequest) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{341} } -func (x *PatternFlowIpv4ReservedCounter) GetCount() uint32 { - if x != nil && x.Count != nil { - return *x.Count +func (x *Neighborsv6StatesRequest) GetEthernetNames() []string { + if x != nil { + return x.EthernetNames } - return 0 + return nil } -// Metric tag can be used to enable tracking portion of or all bits in a corresponding -// header field for metrics per each applicable value. These would appear as tagged -// metrics in corresponding flow metrics. -type PatternFlowIpv4ReservedMetricTag struct { +// IPv6 Neighbor state (NDISC cache entry). +type Neighborsv6State struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Name used to identify the metrics associated with the values applicable for configured - // offset and length inside corresponding header field + // The name of the Ethernet interface associated with the Neighbor state (NDISC cache + // entry). // required = true - Name *string `protobuf:"bytes,1,opt,name=name,proto3,oneof" json:"name,omitempty"` - // Offset in bits relative to start of corresponding header field - // default = 0 - Offset *uint32 `protobuf:"varint,2,opt,name=offset,proto3,oneof" json:"offset,omitempty"` - // Number of bits to track for metrics starting from configured offset of corresponding - // header field - // default = 1 - Length *uint32 `protobuf:"varint,3,opt,name=length,proto3,oneof" json:"length,omitempty"` + EthernetName *string `protobuf:"bytes,1,opt,name=ethernet_name,json=ethernetName,proto3,oneof" json:"ethernet_name,omitempty"` + // The IPv6 address of the neighbor. + // required = true + Ipv6Address *string `protobuf:"bytes,2,opt,name=ipv6_address,json=ipv6Address,proto3,oneof" json:"ipv6_address,omitempty"` + // The link-layer address (MAC) of the neighbor. + LinkLayerAddress *string `protobuf:"bytes,3,opt,name=link_layer_address,json=linkLayerAddress,proto3,oneof" json:"link_layer_address,omitempty"` } -func (x *PatternFlowIpv4ReservedMetricTag) Reset() { - *x = PatternFlowIpv4ReservedMetricTag{} +func (x *Neighborsv6State) Reset() { + *x = Neighborsv6State{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[379] + mi := &file_otg_proto_msgTypes[342] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowIpv4ReservedMetricTag) String() string { +func (x *Neighborsv6State) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowIpv4ReservedMetricTag) ProtoMessage() {} +func (*Neighborsv6State) ProtoMessage() {} -func (x *PatternFlowIpv4ReservedMetricTag) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[379] +func (x *Neighborsv6State) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[342] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -50671,74 +49963,76 @@ func (x *PatternFlowIpv4ReservedMetricTag) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use PatternFlowIpv4ReservedMetricTag.ProtoReflect.Descriptor instead. -func (*PatternFlowIpv4ReservedMetricTag) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{379} +// Deprecated: Use Neighborsv6State.ProtoReflect.Descriptor instead. +func (*Neighborsv6State) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{342} } -func (x *PatternFlowIpv4ReservedMetricTag) GetName() string { - if x != nil && x.Name != nil { - return *x.Name +func (x *Neighborsv6State) GetEthernetName() string { + if x != nil && x.EthernetName != nil { + return *x.EthernetName } return "" } -func (x *PatternFlowIpv4ReservedMetricTag) GetOffset() uint32 { - if x != nil && x.Offset != nil { - return *x.Offset +func (x *Neighborsv6State) GetIpv6Address() string { + if x != nil && x.Ipv6Address != nil { + return *x.Ipv6Address } - return 0 + return "" } -func (x *PatternFlowIpv4ReservedMetricTag) GetLength() uint32 { - if x != nil && x.Length != nil { - return *x.Length +func (x *Neighborsv6State) GetLinkLayerAddress() string { + if x != nil && x.LinkLayerAddress != nil { + return *x.LinkLayerAddress } - return 0 + return "" } -// Reserved flag. -type PatternFlowIpv4Reserved struct { +// The request to retrieve BGP peer prefix information. +type BgpPrefixStateRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Description missing in models - // default = Choice.Enum.value - Choice *PatternFlowIpv4Reserved_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.PatternFlowIpv4Reserved_Choice_Enum,oneof" json:"choice,omitempty"` - // Description missing in models - // default = 0 - Value *uint32 `protobuf:"varint,2,opt,name=value,proto3,oneof" json:"value,omitempty"` - // Description missing in models - // default = [0] - Values []uint32 `protobuf:"varint,3,rep,packed,name=values,proto3" json:"values,omitempty"` - // Description missing in models - Increment *PatternFlowIpv4ReservedCounter `protobuf:"bytes,5,opt,name=increment,proto3" json:"increment,omitempty"` - // Description missing in models - Decrement *PatternFlowIpv4ReservedCounter `protobuf:"bytes,6,opt,name=decrement,proto3" json:"decrement,omitempty"` - // One or more metric tags can be used to enable tracking portion of or all bits in - // a corresponding header field for metrics per each applicable value. These would appear - // as tagged metrics in corresponding flow metrics. - MetricTags []*PatternFlowIpv4ReservedMetricTag `protobuf:"bytes,7,rep,name=metric_tags,json=metricTags,proto3" json:"metric_tags,omitempty"` + // The names of BGP peers for which prefix information will be retrieved. If no names + // are specified then the results will contain prefix information for all configured + // BGP peers. + // + // x-constraint: + // - /components/schemas/Bgp.V4Peer/properties/name + // - /components/schemas/Bgp.V6Peer/properties/name + BgpPeerNames []string `protobuf:"bytes,1,rep,name=bgp_peer_names,json=bgpPeerNames,proto3" json:"bgp_peer_names,omitempty"` + // Specify which prefixes to return. If the list is empty or missing then all prefixes + // will be returned. + PrefixFilters []BgpPrefixStateRequest_PrefixFilters_Enum `protobuf:"varint,2,rep,packed,name=prefix_filters,json=prefixFilters,proto3,enum=otg.BgpPrefixStateRequest_PrefixFilters_Enum" json:"prefix_filters,omitempty"` + // The IPv4 unicast results can be filtered by specifying additional prefix search criteria. + // If the ipv4_unicast_filters property is missing or empty then all IPv4 prefixes will + // be returned. + Ipv4UnicastFilters []*BgpPrefixIpv4UnicastFilter `protobuf:"bytes,3,rep,name=ipv4_unicast_filters,json=ipv4UnicastFilters,proto3" json:"ipv4_unicast_filters,omitempty"` + // The IPv6 unicast results can be filtered by specifying additional prefix search criteria. + // If the ipv6_unicast_filters property is missing or empty then all IPv6 prefixes will + // be returned. + Ipv6UnicastFilters []*BgpPrefixIpv6UnicastFilter `protobuf:"bytes,4,rep,name=ipv6_unicast_filters,json=ipv6UnicastFilters,proto3" json:"ipv6_unicast_filters,omitempty"` } -func (x *PatternFlowIpv4Reserved) Reset() { - *x = PatternFlowIpv4Reserved{} +func (x *BgpPrefixStateRequest) Reset() { + *x = BgpPrefixStateRequest{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[380] + mi := &file_otg_proto_msgTypes[343] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowIpv4Reserved) String() string { +func (x *BgpPrefixStateRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowIpv4Reserved) ProtoMessage() {} +func (*BgpPrefixStateRequest) ProtoMessage() {} -func (x *PatternFlowIpv4Reserved) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[380] +func (x *BgpPrefixStateRequest) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[343] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -50749,87 +50043,74 @@ func (x *PatternFlowIpv4Reserved) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use PatternFlowIpv4Reserved.ProtoReflect.Descriptor instead. -func (*PatternFlowIpv4Reserved) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{380} -} - -func (x *PatternFlowIpv4Reserved) GetChoice() PatternFlowIpv4Reserved_Choice_Enum { - if x != nil && x.Choice != nil { - return *x.Choice - } - return PatternFlowIpv4Reserved_Choice_unspecified -} - -func (x *PatternFlowIpv4Reserved) GetValue() uint32 { - if x != nil && x.Value != nil { - return *x.Value - } - return 0 +// Deprecated: Use BgpPrefixStateRequest.ProtoReflect.Descriptor instead. +func (*BgpPrefixStateRequest) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{343} } -func (x *PatternFlowIpv4Reserved) GetValues() []uint32 { +func (x *BgpPrefixStateRequest) GetBgpPeerNames() []string { if x != nil { - return x.Values + return x.BgpPeerNames } return nil } -func (x *PatternFlowIpv4Reserved) GetIncrement() *PatternFlowIpv4ReservedCounter { +func (x *BgpPrefixStateRequest) GetPrefixFilters() []BgpPrefixStateRequest_PrefixFilters_Enum { if x != nil { - return x.Increment + return x.PrefixFilters } return nil } -func (x *PatternFlowIpv4Reserved) GetDecrement() *PatternFlowIpv4ReservedCounter { +func (x *BgpPrefixStateRequest) GetIpv4UnicastFilters() []*BgpPrefixIpv4UnicastFilter { if x != nil { - return x.Decrement + return x.Ipv4UnicastFilters } return nil } -func (x *PatternFlowIpv4Reserved) GetMetricTags() []*PatternFlowIpv4ReservedMetricTag { +func (x *BgpPrefixStateRequest) GetIpv6UnicastFilters() []*BgpPrefixIpv6UnicastFilter { if x != nil { - return x.MetricTags + return x.Ipv6UnicastFilters } return nil } -// integer counter pattern -type PatternFlowIpv4DontFragmentCounter struct { +// Description missing in models +type BgpPrefixIpv4UnicastFilter struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Description missing in models - // default = 0 - Start *uint32 `protobuf:"varint,1,opt,name=start,proto3,oneof" json:"start,omitempty"` - // Description missing in models - // default = 1 - Step *uint32 `protobuf:"varint,2,opt,name=step,proto3,oneof" json:"step,omitempty"` - // Description missing in models - // default = 1 - Count *uint32 `protobuf:"varint,3,opt,name=count,proto3,oneof" json:"count,omitempty"` + // The addresses to match. If the addresses property is missing or empty then all addresses + // will match. + Addresses []string `protobuf:"bytes,1,rep,name=addresses,proto3" json:"addresses,omitempty"` + // The prefix length to match. If the prefix length is missing then all prefix lengths + // will match. + PrefixLength *uint32 `protobuf:"varint,2,opt,name=prefix_length,json=prefixLength,proto3,oneof" json:"prefix_length,omitempty"` + // The origin to match. If the origin is missing then all origins will match. + Origin *BgpPrefixIpv4UnicastFilter_Origin_Enum `protobuf:"varint,3,opt,name=origin,proto3,enum=otg.BgpPrefixIpv4UnicastFilter_Origin_Enum,oneof" json:"origin,omitempty"` + // The path id to match. If the path id is missing then all path ids will match. + PathId *uint32 `protobuf:"varint,4,opt,name=path_id,json=pathId,proto3,oneof" json:"path_id,omitempty"` } -func (x *PatternFlowIpv4DontFragmentCounter) Reset() { - *x = PatternFlowIpv4DontFragmentCounter{} +func (x *BgpPrefixIpv4UnicastFilter) Reset() { + *x = BgpPrefixIpv4UnicastFilter{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[381] + mi := &file_otg_proto_msgTypes[344] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowIpv4DontFragmentCounter) String() string { +func (x *BgpPrefixIpv4UnicastFilter) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowIpv4DontFragmentCounter) ProtoMessage() {} +func (*BgpPrefixIpv4UnicastFilter) ProtoMessage() {} -func (x *PatternFlowIpv4DontFragmentCounter) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[381] +func (x *BgpPrefixIpv4UnicastFilter) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[344] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -50840,70 +50121,74 @@ func (x *PatternFlowIpv4DontFragmentCounter) ProtoReflect() protoreflect.Message return mi.MessageOf(x) } -// Deprecated: Use PatternFlowIpv4DontFragmentCounter.ProtoReflect.Descriptor instead. -func (*PatternFlowIpv4DontFragmentCounter) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{381} +// Deprecated: Use BgpPrefixIpv4UnicastFilter.ProtoReflect.Descriptor instead. +func (*BgpPrefixIpv4UnicastFilter) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{344} } -func (x *PatternFlowIpv4DontFragmentCounter) GetStart() uint32 { - if x != nil && x.Start != nil { - return *x.Start +func (x *BgpPrefixIpv4UnicastFilter) GetAddresses() []string { + if x != nil { + return x.Addresses } - return 0 + return nil } -func (x *PatternFlowIpv4DontFragmentCounter) GetStep() uint32 { - if x != nil && x.Step != nil { - return *x.Step +func (x *BgpPrefixIpv4UnicastFilter) GetPrefixLength() uint32 { + if x != nil && x.PrefixLength != nil { + return *x.PrefixLength } return 0 } -func (x *PatternFlowIpv4DontFragmentCounter) GetCount() uint32 { - if x != nil && x.Count != nil { - return *x.Count +func (x *BgpPrefixIpv4UnicastFilter) GetOrigin() BgpPrefixIpv4UnicastFilter_Origin_Enum { + if x != nil && x.Origin != nil { + return *x.Origin + } + return BgpPrefixIpv4UnicastFilter_Origin_unspecified +} + +func (x *BgpPrefixIpv4UnicastFilter) GetPathId() uint32 { + if x != nil && x.PathId != nil { + return *x.PathId } return 0 } -// Metric tag can be used to enable tracking portion of or all bits in a corresponding -// header field for metrics per each applicable value. These would appear as tagged -// metrics in corresponding flow metrics. -type PatternFlowIpv4DontFragmentMetricTag struct { +// Description missing in models +type BgpPrefixIpv6UnicastFilter struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Name used to identify the metrics associated with the values applicable for configured - // offset and length inside corresponding header field - // required = true - Name *string `protobuf:"bytes,1,opt,name=name,proto3,oneof" json:"name,omitempty"` - // Offset in bits relative to start of corresponding header field - // default = 0 - Offset *uint32 `protobuf:"varint,2,opt,name=offset,proto3,oneof" json:"offset,omitempty"` - // Number of bits to track for metrics starting from configured offset of corresponding - // header field - // default = 1 - Length *uint32 `protobuf:"varint,3,opt,name=length,proto3,oneof" json:"length,omitempty"` + // The addresses to match. If the addresses property is missing or empty then all addresses + // will match. + Addresses []string `protobuf:"bytes,1,rep,name=addresses,proto3" json:"addresses,omitempty"` + // The prefix length to match. If the prefix length is missing then all prefix lengths + // will match. + PrefixLength *uint32 `protobuf:"varint,2,opt,name=prefix_length,json=prefixLength,proto3,oneof" json:"prefix_length,omitempty"` + // The origin to match. If the origin is missing then all origins will match. + Origin *BgpPrefixIpv6UnicastFilter_Origin_Enum `protobuf:"varint,3,opt,name=origin,proto3,enum=otg.BgpPrefixIpv6UnicastFilter_Origin_Enum,oneof" json:"origin,omitempty"` + // The path id to match. If the path id is missing then all path ids will match. + PathId *uint32 `protobuf:"varint,4,opt,name=path_id,json=pathId,proto3,oneof" json:"path_id,omitempty"` } -func (x *PatternFlowIpv4DontFragmentMetricTag) Reset() { - *x = PatternFlowIpv4DontFragmentMetricTag{} +func (x *BgpPrefixIpv6UnicastFilter) Reset() { + *x = BgpPrefixIpv6UnicastFilter{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[382] + mi := &file_otg_proto_msgTypes[345] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowIpv4DontFragmentMetricTag) String() string { +func (x *BgpPrefixIpv6UnicastFilter) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowIpv4DontFragmentMetricTag) ProtoMessage() {} +func (*BgpPrefixIpv6UnicastFilter) ProtoMessage() {} -func (x *PatternFlowIpv4DontFragmentMetricTag) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[382] +func (x *BgpPrefixIpv6UnicastFilter) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[345] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -50914,75 +50199,70 @@ func (x *PatternFlowIpv4DontFragmentMetricTag) ProtoReflect() protoreflect.Messa return mi.MessageOf(x) } -// Deprecated: Use PatternFlowIpv4DontFragmentMetricTag.ProtoReflect.Descriptor instead. -func (*PatternFlowIpv4DontFragmentMetricTag) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{382} +// Deprecated: Use BgpPrefixIpv6UnicastFilter.ProtoReflect.Descriptor instead. +func (*BgpPrefixIpv6UnicastFilter) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{345} } -func (x *PatternFlowIpv4DontFragmentMetricTag) GetName() string { - if x != nil && x.Name != nil { - return *x.Name +func (x *BgpPrefixIpv6UnicastFilter) GetAddresses() []string { + if x != nil { + return x.Addresses } - return "" + return nil } -func (x *PatternFlowIpv4DontFragmentMetricTag) GetOffset() uint32 { - if x != nil && x.Offset != nil { - return *x.Offset +func (x *BgpPrefixIpv6UnicastFilter) GetPrefixLength() uint32 { + if x != nil && x.PrefixLength != nil { + return *x.PrefixLength } return 0 } -func (x *PatternFlowIpv4DontFragmentMetricTag) GetLength() uint32 { - if x != nil && x.Length != nil { - return *x.Length +func (x *BgpPrefixIpv6UnicastFilter) GetOrigin() BgpPrefixIpv6UnicastFilter_Origin_Enum { + if x != nil && x.Origin != nil { + return *x.Origin + } + return BgpPrefixIpv6UnicastFilter_Origin_unspecified +} + +func (x *BgpPrefixIpv6UnicastFilter) GetPathId() uint32 { + if x != nil && x.PathId != nil { + return *x.PathId } return 0 } -// Dont fragment flag If the dont_fragment flag is set and fragmentation is required -// to route the packet then the packet is dropped. -type PatternFlowIpv4DontFragment struct { +// BGP peer prefixes. +type BgpPrefixesState struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields + // The name of a BGP peer. + BgpPeerName *string `protobuf:"bytes,1,opt,name=bgp_peer_name,json=bgpPeerName,proto3,oneof" json:"bgp_peer_name,omitempty"` // Description missing in models - // default = Choice.Enum.value - Choice *PatternFlowIpv4DontFragment_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.PatternFlowIpv4DontFragment_Choice_Enum,oneof" json:"choice,omitempty"` - // Description missing in models - // default = 0 - Value *uint32 `protobuf:"varint,2,opt,name=value,proto3,oneof" json:"value,omitempty"` - // Description missing in models - // default = [0] - Values []uint32 `protobuf:"varint,3,rep,packed,name=values,proto3" json:"values,omitempty"` - // Description missing in models - Increment *PatternFlowIpv4DontFragmentCounter `protobuf:"bytes,5,opt,name=increment,proto3" json:"increment,omitempty"` + Ipv4UnicastPrefixes []*BgpPrefixIpv4UnicastState `protobuf:"bytes,2,rep,name=ipv4_unicast_prefixes,json=ipv4UnicastPrefixes,proto3" json:"ipv4_unicast_prefixes,omitempty"` // Description missing in models - Decrement *PatternFlowIpv4DontFragmentCounter `protobuf:"bytes,6,opt,name=decrement,proto3" json:"decrement,omitempty"` - // One or more metric tags can be used to enable tracking portion of or all bits in - // a corresponding header field for metrics per each applicable value. These would appear - // as tagged metrics in corresponding flow metrics. - MetricTags []*PatternFlowIpv4DontFragmentMetricTag `protobuf:"bytes,7,rep,name=metric_tags,json=metricTags,proto3" json:"metric_tags,omitempty"` + Ipv6UnicastPrefixes []*BgpPrefixIpv6UnicastState `protobuf:"bytes,3,rep,name=ipv6_unicast_prefixes,json=ipv6UnicastPrefixes,proto3" json:"ipv6_unicast_prefixes,omitempty"` } -func (x *PatternFlowIpv4DontFragment) Reset() { - *x = PatternFlowIpv4DontFragment{} +func (x *BgpPrefixesState) Reset() { + *x = BgpPrefixesState{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[383] + mi := &file_otg_proto_msgTypes[346] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowIpv4DontFragment) String() string { +func (x *BgpPrefixesState) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowIpv4DontFragment) ProtoMessage() {} +func (*BgpPrefixesState) ProtoMessage() {} -func (x *PatternFlowIpv4DontFragment) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[383] +func (x *BgpPrefixesState) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[346] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -50993,87 +50273,79 @@ func (x *PatternFlowIpv4DontFragment) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use PatternFlowIpv4DontFragment.ProtoReflect.Descriptor instead. -func (*PatternFlowIpv4DontFragment) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{383} -} - -func (x *PatternFlowIpv4DontFragment) GetChoice() PatternFlowIpv4DontFragment_Choice_Enum { - if x != nil && x.Choice != nil { - return *x.Choice - } - return PatternFlowIpv4DontFragment_Choice_unspecified -} - -func (x *PatternFlowIpv4DontFragment) GetValue() uint32 { - if x != nil && x.Value != nil { - return *x.Value - } - return 0 -} - -func (x *PatternFlowIpv4DontFragment) GetValues() []uint32 { - if x != nil { - return x.Values - } - return nil +// Deprecated: Use BgpPrefixesState.ProtoReflect.Descriptor instead. +func (*BgpPrefixesState) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{346} } -func (x *PatternFlowIpv4DontFragment) GetIncrement() *PatternFlowIpv4DontFragmentCounter { - if x != nil { - return x.Increment +func (x *BgpPrefixesState) GetBgpPeerName() string { + if x != nil && x.BgpPeerName != nil { + return *x.BgpPeerName } - return nil + return "" } -func (x *PatternFlowIpv4DontFragment) GetDecrement() *PatternFlowIpv4DontFragmentCounter { +func (x *BgpPrefixesState) GetIpv4UnicastPrefixes() []*BgpPrefixIpv4UnicastState { if x != nil { - return x.Decrement + return x.Ipv4UnicastPrefixes } return nil } -func (x *PatternFlowIpv4DontFragment) GetMetricTags() []*PatternFlowIpv4DontFragmentMetricTag { +func (x *BgpPrefixesState) GetIpv6UnicastPrefixes() []*BgpPrefixIpv6UnicastState { if x != nil { - return x.MetricTags + return x.Ipv6UnicastPrefixes } return nil } -// integer counter pattern -type PatternFlowIpv4MoreFragmentsCounter struct { +// IPv4 unicast prefix. +type BgpPrefixIpv4UnicastState struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields + // An IPv4 unicast address + Ipv4Address *string `protobuf:"bytes,1,opt,name=ipv4_address,json=ipv4Address,proto3,oneof" json:"ipv4_address,omitempty"` + // The length of the prefix. + PrefixLength *uint32 `protobuf:"varint,2,opt,name=prefix_length,json=prefixLength,proto3,oneof" json:"prefix_length,omitempty"` + // The origin of the prefix. + Origin *BgpPrefixIpv4UnicastState_Origin_Enum `protobuf:"varint,3,opt,name=origin,proto3,enum=otg.BgpPrefixIpv4UnicastState_Origin_Enum,oneof" json:"origin,omitempty"` + // The path id. + PathId *uint32 `protobuf:"varint,4,opt,name=path_id,json=pathId,proto3,oneof" json:"path_id,omitempty"` + // The IPv4 address of the egress interface. + Ipv4NextHop *string `protobuf:"bytes,5,opt,name=ipv4_next_hop,json=ipv4NextHop,proto3,oneof" json:"ipv4_next_hop,omitempty"` + // The IPv6 address of the egress interface. + Ipv6NextHop *string `protobuf:"bytes,6,opt,name=ipv6_next_hop,json=ipv6NextHop,proto3,oneof" json:"ipv6_next_hop,omitempty"` + // Optional community attributes. + Communities []*ResultBgpCommunity `protobuf:"bytes,7,rep,name=communities,proto3" json:"communities,omitempty"` // Description missing in models - // default = 0 - Start *uint32 `protobuf:"varint,1,opt,name=start,proto3,oneof" json:"start,omitempty"` - // Description missing in models - // default = 1 - Step *uint32 `protobuf:"varint,2,opt,name=step,proto3,oneof" json:"step,omitempty"` - // Description missing in models - // default = 1 - Count *uint32 `protobuf:"varint,3,opt,name=count,proto3,oneof" json:"count,omitempty"` + AsPath *ResultBgpAsPath `protobuf:"bytes,8,opt,name=as_path,json=asPath,proto3" json:"as_path,omitempty"` + // The local preference is a well-known attribute and the value is used for route selection. + // The route with the highest local preference value is preferred. + LocalPreference *uint32 `protobuf:"varint,9,opt,name=local_preference,json=localPreference,proto3,oneof" json:"local_preference,omitempty"` + // The multi exit discriminator (MED) is an optional non-transitive attribute and the + // value is used for route selection. The route with the lowest MED value is preferred. + MultiExitDiscriminator *uint32 `protobuf:"varint,10,opt,name=multi_exit_discriminator,json=multiExitDiscriminator,proto3,oneof" json:"multi_exit_discriminator,omitempty"` } -func (x *PatternFlowIpv4MoreFragmentsCounter) Reset() { - *x = PatternFlowIpv4MoreFragmentsCounter{} +func (x *BgpPrefixIpv4UnicastState) Reset() { + *x = BgpPrefixIpv4UnicastState{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[384] + mi := &file_otg_proto_msgTypes[347] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowIpv4MoreFragmentsCounter) String() string { +func (x *BgpPrefixIpv4UnicastState) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowIpv4MoreFragmentsCounter) ProtoMessage() {} +func (*BgpPrefixIpv4UnicastState) ProtoMessage() {} -func (x *PatternFlowIpv4MoreFragmentsCounter) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[384] +func (x *BgpPrefixIpv4UnicastState) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[347] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -51084,148 +50356,128 @@ func (x *PatternFlowIpv4MoreFragmentsCounter) ProtoReflect() protoreflect.Messag return mi.MessageOf(x) } -// Deprecated: Use PatternFlowIpv4MoreFragmentsCounter.ProtoReflect.Descriptor instead. -func (*PatternFlowIpv4MoreFragmentsCounter) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{384} +// Deprecated: Use BgpPrefixIpv4UnicastState.ProtoReflect.Descriptor instead. +func (*BgpPrefixIpv4UnicastState) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{347} } -func (x *PatternFlowIpv4MoreFragmentsCounter) GetStart() uint32 { - if x != nil && x.Start != nil { - return *x.Start +func (x *BgpPrefixIpv4UnicastState) GetIpv4Address() string { + if x != nil && x.Ipv4Address != nil { + return *x.Ipv4Address } - return 0 + return "" } -func (x *PatternFlowIpv4MoreFragmentsCounter) GetStep() uint32 { - if x != nil && x.Step != nil { - return *x.Step +func (x *BgpPrefixIpv4UnicastState) GetPrefixLength() uint32 { + if x != nil && x.PrefixLength != nil { + return *x.PrefixLength } return 0 } -func (x *PatternFlowIpv4MoreFragmentsCounter) GetCount() uint32 { - if x != nil && x.Count != nil { - return *x.Count +func (x *BgpPrefixIpv4UnicastState) GetOrigin() BgpPrefixIpv4UnicastState_Origin_Enum { + if x != nil && x.Origin != nil { + return *x.Origin } - return 0 -} - -// Metric tag can be used to enable tracking portion of or all bits in a corresponding -// header field for metrics per each applicable value. These would appear as tagged -// metrics in corresponding flow metrics. -type PatternFlowIpv4MoreFragmentsMetricTag struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // Name used to identify the metrics associated with the values applicable for configured - // offset and length inside corresponding header field - // required = true - Name *string `protobuf:"bytes,1,opt,name=name,proto3,oneof" json:"name,omitempty"` - // Offset in bits relative to start of corresponding header field - // default = 0 - Offset *uint32 `protobuf:"varint,2,opt,name=offset,proto3,oneof" json:"offset,omitempty"` - // Number of bits to track for metrics starting from configured offset of corresponding - // header field - // default = 1 - Length *uint32 `protobuf:"varint,3,opt,name=length,proto3,oneof" json:"length,omitempty"` + return BgpPrefixIpv4UnicastState_Origin_unspecified } -func (x *PatternFlowIpv4MoreFragmentsMetricTag) Reset() { - *x = PatternFlowIpv4MoreFragmentsMetricTag{} - if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[385] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) +func (x *BgpPrefixIpv4UnicastState) GetPathId() uint32 { + if x != nil && x.PathId != nil { + return *x.PathId } + return 0 } -func (x *PatternFlowIpv4MoreFragmentsMetricTag) String() string { - return protoimpl.X.MessageStringOf(x) +func (x *BgpPrefixIpv4UnicastState) GetIpv4NextHop() string { + if x != nil && x.Ipv4NextHop != nil { + return *x.Ipv4NextHop + } + return "" } -func (*PatternFlowIpv4MoreFragmentsMetricTag) ProtoMessage() {} - -func (x *PatternFlowIpv4MoreFragmentsMetricTag) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[385] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms +func (x *BgpPrefixIpv4UnicastState) GetIpv6NextHop() string { + if x != nil && x.Ipv6NextHop != nil { + return *x.Ipv6NextHop } - return mi.MessageOf(x) + return "" } -// Deprecated: Use PatternFlowIpv4MoreFragmentsMetricTag.ProtoReflect.Descriptor instead. -func (*PatternFlowIpv4MoreFragmentsMetricTag) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{385} +func (x *BgpPrefixIpv4UnicastState) GetCommunities() []*ResultBgpCommunity { + if x != nil { + return x.Communities + } + return nil } -func (x *PatternFlowIpv4MoreFragmentsMetricTag) GetName() string { - if x != nil && x.Name != nil { - return *x.Name +func (x *BgpPrefixIpv4UnicastState) GetAsPath() *ResultBgpAsPath { + if x != nil { + return x.AsPath } - return "" + return nil } -func (x *PatternFlowIpv4MoreFragmentsMetricTag) GetOffset() uint32 { - if x != nil && x.Offset != nil { - return *x.Offset +func (x *BgpPrefixIpv4UnicastState) GetLocalPreference() uint32 { + if x != nil && x.LocalPreference != nil { + return *x.LocalPreference } return 0 } -func (x *PatternFlowIpv4MoreFragmentsMetricTag) GetLength() uint32 { - if x != nil && x.Length != nil { - return *x.Length +func (x *BgpPrefixIpv4UnicastState) GetMultiExitDiscriminator() uint32 { + if x != nil && x.MultiExitDiscriminator != nil { + return *x.MultiExitDiscriminator } return 0 } -// More fragments flag -type PatternFlowIpv4MoreFragments struct { +// IPv6 unicast prefix. +type BgpPrefixIpv6UnicastState struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields + // An IPv6 unicast address + Ipv6Address *string `protobuf:"bytes,1,opt,name=ipv6_address,json=ipv6Address,proto3,oneof" json:"ipv6_address,omitempty"` + // The length of the prefix. + PrefixLength *uint32 `protobuf:"varint,2,opt,name=prefix_length,json=prefixLength,proto3,oneof" json:"prefix_length,omitempty"` + // The origin of the prefix. + Origin *BgpPrefixIpv6UnicastState_Origin_Enum `protobuf:"varint,3,opt,name=origin,proto3,enum=otg.BgpPrefixIpv6UnicastState_Origin_Enum,oneof" json:"origin,omitempty"` + // The path id. + PathId *uint32 `protobuf:"varint,4,opt,name=path_id,json=pathId,proto3,oneof" json:"path_id,omitempty"` + // The IPv4 address of the egress interface. + Ipv4NextHop *string `protobuf:"bytes,5,opt,name=ipv4_next_hop,json=ipv4NextHop,proto3,oneof" json:"ipv4_next_hop,omitempty"` + // The IPv6 address of the egress interface. + Ipv6NextHop *string `protobuf:"bytes,6,opt,name=ipv6_next_hop,json=ipv6NextHop,proto3,oneof" json:"ipv6_next_hop,omitempty"` + // Optional community attributes. + Communities []*ResultBgpCommunity `protobuf:"bytes,7,rep,name=communities,proto3" json:"communities,omitempty"` // Description missing in models - // default = Choice.Enum.value - Choice *PatternFlowIpv4MoreFragments_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.PatternFlowIpv4MoreFragments_Choice_Enum,oneof" json:"choice,omitempty"` - // Description missing in models - // default = 0 - Value *uint32 `protobuf:"varint,2,opt,name=value,proto3,oneof" json:"value,omitempty"` - // Description missing in models - // default = [0] - Values []uint32 `protobuf:"varint,3,rep,packed,name=values,proto3" json:"values,omitempty"` - // Description missing in models - Increment *PatternFlowIpv4MoreFragmentsCounter `protobuf:"bytes,5,opt,name=increment,proto3" json:"increment,omitempty"` - // Description missing in models - Decrement *PatternFlowIpv4MoreFragmentsCounter `protobuf:"bytes,6,opt,name=decrement,proto3" json:"decrement,omitempty"` - // One or more metric tags can be used to enable tracking portion of or all bits in - // a corresponding header field for metrics per each applicable value. These would appear - // as tagged metrics in corresponding flow metrics. - MetricTags []*PatternFlowIpv4MoreFragmentsMetricTag `protobuf:"bytes,7,rep,name=metric_tags,json=metricTags,proto3" json:"metric_tags,omitempty"` + AsPath *ResultBgpAsPath `protobuf:"bytes,8,opt,name=as_path,json=asPath,proto3" json:"as_path,omitempty"` + // The local preference is a well-known attribute and the value is used for route selection. + // The route with the highest local preference value is preferred. + LocalPreference *uint32 `protobuf:"varint,9,opt,name=local_preference,json=localPreference,proto3,oneof" json:"local_preference,omitempty"` + // The multi exit discriminator (MED) is an optional non-transitive attribute and the + // value is used for route selection. The route with the lowest MED value is preferred. + MultiExitDiscriminator *uint32 `protobuf:"varint,10,opt,name=multi_exit_discriminator,json=multiExitDiscriminator,proto3,oneof" json:"multi_exit_discriminator,omitempty"` } -func (x *PatternFlowIpv4MoreFragments) Reset() { - *x = PatternFlowIpv4MoreFragments{} +func (x *BgpPrefixIpv6UnicastState) Reset() { + *x = BgpPrefixIpv6UnicastState{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[386] + mi := &file_otg_proto_msgTypes[348] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowIpv4MoreFragments) String() string { +func (x *BgpPrefixIpv6UnicastState) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowIpv4MoreFragments) ProtoMessage() {} +func (*BgpPrefixIpv6UnicastState) ProtoMessage() {} -func (x *PatternFlowIpv4MoreFragments) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[386] +func (x *BgpPrefixIpv6UnicastState) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[348] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -51236,87 +50488,115 @@ func (x *PatternFlowIpv4MoreFragments) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use PatternFlowIpv4MoreFragments.ProtoReflect.Descriptor instead. -func (*PatternFlowIpv4MoreFragments) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{386} +// Deprecated: Use BgpPrefixIpv6UnicastState.ProtoReflect.Descriptor instead. +func (*BgpPrefixIpv6UnicastState) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{348} } -func (x *PatternFlowIpv4MoreFragments) GetChoice() PatternFlowIpv4MoreFragments_Choice_Enum { - if x != nil && x.Choice != nil { - return *x.Choice +func (x *BgpPrefixIpv6UnicastState) GetIpv6Address() string { + if x != nil && x.Ipv6Address != nil { + return *x.Ipv6Address } - return PatternFlowIpv4MoreFragments_Choice_unspecified + return "" } -func (x *PatternFlowIpv4MoreFragments) GetValue() uint32 { - if x != nil && x.Value != nil { - return *x.Value +func (x *BgpPrefixIpv6UnicastState) GetPrefixLength() uint32 { + if x != nil && x.PrefixLength != nil { + return *x.PrefixLength } return 0 } -func (x *PatternFlowIpv4MoreFragments) GetValues() []uint32 { - if x != nil { - return x.Values +func (x *BgpPrefixIpv6UnicastState) GetOrigin() BgpPrefixIpv6UnicastState_Origin_Enum { + if x != nil && x.Origin != nil { + return *x.Origin } - return nil + return BgpPrefixIpv6UnicastState_Origin_unspecified } -func (x *PatternFlowIpv4MoreFragments) GetIncrement() *PatternFlowIpv4MoreFragmentsCounter { - if x != nil { - return x.Increment +func (x *BgpPrefixIpv6UnicastState) GetPathId() uint32 { + if x != nil && x.PathId != nil { + return *x.PathId } - return nil + return 0 } -func (x *PatternFlowIpv4MoreFragments) GetDecrement() *PatternFlowIpv4MoreFragmentsCounter { +func (x *BgpPrefixIpv6UnicastState) GetIpv4NextHop() string { + if x != nil && x.Ipv4NextHop != nil { + return *x.Ipv4NextHop + } + return "" +} + +func (x *BgpPrefixIpv6UnicastState) GetIpv6NextHop() string { + if x != nil && x.Ipv6NextHop != nil { + return *x.Ipv6NextHop + } + return "" +} + +func (x *BgpPrefixIpv6UnicastState) GetCommunities() []*ResultBgpCommunity { if x != nil { - return x.Decrement + return x.Communities } return nil } -func (x *PatternFlowIpv4MoreFragments) GetMetricTags() []*PatternFlowIpv4MoreFragmentsMetricTag { +func (x *BgpPrefixIpv6UnicastState) GetAsPath() *ResultBgpAsPath { if x != nil { - return x.MetricTags + return x.AsPath } return nil } -// integer counter pattern -type PatternFlowIpv4FragmentOffsetCounter struct { +func (x *BgpPrefixIpv6UnicastState) GetLocalPreference() uint32 { + if x != nil && x.LocalPreference != nil { + return *x.LocalPreference + } + return 0 +} + +func (x *BgpPrefixIpv6UnicastState) GetMultiExitDiscriminator() uint32 { + if x != nil && x.MultiExitDiscriminator != nil { + return *x.MultiExitDiscriminator + } + return 0 +} + +// BGP communities provide additional capability for tagging routes and for modifying +// BGP routing policy on upstream and downstream routers. BGP community is a 32-bit +// number which is broken into 16-bit AS number and a 16-bit custom value. +type ResultBgpCommunity struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Description missing in models - // default = 0 - Start *uint32 `protobuf:"varint,1,opt,name=start,proto3,oneof" json:"start,omitempty"` - // Description missing in models - // default = 1 - Step *uint32 `protobuf:"varint,2,opt,name=step,proto3,oneof" json:"step,omitempty"` - // Description missing in models - // default = 1 - Count *uint32 `protobuf:"varint,3,opt,name=count,proto3,oneof" json:"count,omitempty"` + // The type of community AS number. If community type is manual_as_number then as_number + // and as_custom will be available. + Type *ResultBgpCommunity_Type_Enum `protobuf:"varint,1,opt,name=type,proto3,enum=otg.ResultBgpCommunity_Type_Enum,oneof" json:"type,omitempty"` + // First two octets of 32 bit community AS number. + AsNumber *uint32 `protobuf:"varint,2,opt,name=as_number,json=asNumber,proto3,oneof" json:"as_number,omitempty"` + // Last two octets of the community value. + AsCustom *uint32 `protobuf:"varint,3,opt,name=as_custom,json=asCustom,proto3,oneof" json:"as_custom,omitempty"` } -func (x *PatternFlowIpv4FragmentOffsetCounter) Reset() { - *x = PatternFlowIpv4FragmentOffsetCounter{} +func (x *ResultBgpCommunity) Reset() { + *x = ResultBgpCommunity{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[387] + mi := &file_otg_proto_msgTypes[349] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowIpv4FragmentOffsetCounter) String() string { +func (x *ResultBgpCommunity) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowIpv4FragmentOffsetCounter) ProtoMessage() {} +func (*ResultBgpCommunity) ProtoMessage() {} -func (x *PatternFlowIpv4FragmentOffsetCounter) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[387] +func (x *ResultBgpCommunity) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[349] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -51327,70 +50607,60 @@ func (x *PatternFlowIpv4FragmentOffsetCounter) ProtoReflect() protoreflect.Messa return mi.MessageOf(x) } -// Deprecated: Use PatternFlowIpv4FragmentOffsetCounter.ProtoReflect.Descriptor instead. -func (*PatternFlowIpv4FragmentOffsetCounter) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{387} +// Deprecated: Use ResultBgpCommunity.ProtoReflect.Descriptor instead. +func (*ResultBgpCommunity) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{349} } -func (x *PatternFlowIpv4FragmentOffsetCounter) GetStart() uint32 { - if x != nil && x.Start != nil { - return *x.Start +func (x *ResultBgpCommunity) GetType() ResultBgpCommunity_Type_Enum { + if x != nil && x.Type != nil { + return *x.Type + } + return ResultBgpCommunity_Type_unspecified +} + +func (x *ResultBgpCommunity) GetAsNumber() uint32 { + if x != nil && x.AsNumber != nil { + return *x.AsNumber } return 0 } -func (x *PatternFlowIpv4FragmentOffsetCounter) GetStep() uint32 { - if x != nil && x.Step != nil { - return *x.Step - } - return 0 -} - -func (x *PatternFlowIpv4FragmentOffsetCounter) GetCount() uint32 { - if x != nil && x.Count != nil { - return *x.Count +func (x *ResultBgpCommunity) GetAsCustom() uint32 { + if x != nil && x.AsCustom != nil { + return *x.AsCustom } return 0 } -// Metric tag can be used to enable tracking portion of or all bits in a corresponding -// header field for metrics per each applicable value. These would appear as tagged -// metrics in corresponding flow metrics. -type PatternFlowIpv4FragmentOffsetMetricTag struct { +// This attribute identifies the autonomous systems through which routing information +// carried in this UPDATE message has passed. +type ResultBgpAsPath struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Name used to identify the metrics associated with the values applicable for configured - // offset and length inside corresponding header field - // required = true - Name *string `protobuf:"bytes,1,opt,name=name,proto3,oneof" json:"name,omitempty"` - // Offset in bits relative to start of corresponding header field - // default = 0 - Offset *uint32 `protobuf:"varint,2,opt,name=offset,proto3,oneof" json:"offset,omitempty"` - // Number of bits to track for metrics starting from configured offset of corresponding - // header field - // default = 5 - Length *uint32 `protobuf:"varint,3,opt,name=length,proto3,oneof" json:"length,omitempty"` + // AS Path segments present in the received AS Path attribute. + Segments []*ResultBgpAsPathSegment `protobuf:"bytes,1,rep,name=segments,proto3" json:"segments,omitempty"` } -func (x *PatternFlowIpv4FragmentOffsetMetricTag) Reset() { - *x = PatternFlowIpv4FragmentOffsetMetricTag{} +func (x *ResultBgpAsPath) Reset() { + *x = ResultBgpAsPath{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[388] + mi := &file_otg_proto_msgTypes[350] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowIpv4FragmentOffsetMetricTag) String() string { +func (x *ResultBgpAsPath) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowIpv4FragmentOffsetMetricTag) ProtoMessage() {} +func (*ResultBgpAsPath) ProtoMessage() {} -func (x *PatternFlowIpv4FragmentOffsetMetricTag) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[388] +func (x *ResultBgpAsPath) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[350] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -51401,74 +50671,54 @@ func (x *PatternFlowIpv4FragmentOffsetMetricTag) ProtoReflect() protoreflect.Mes return mi.MessageOf(x) } -// Deprecated: Use PatternFlowIpv4FragmentOffsetMetricTag.ProtoReflect.Descriptor instead. -func (*PatternFlowIpv4FragmentOffsetMetricTag) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{388} -} - -func (x *PatternFlowIpv4FragmentOffsetMetricTag) GetName() string { - if x != nil && x.Name != nil { - return *x.Name - } - return "" -} - -func (x *PatternFlowIpv4FragmentOffsetMetricTag) GetOffset() uint32 { - if x != nil && x.Offset != nil { - return *x.Offset - } - return 0 +// Deprecated: Use ResultBgpAsPath.ProtoReflect.Descriptor instead. +func (*ResultBgpAsPath) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{350} } -func (x *PatternFlowIpv4FragmentOffsetMetricTag) GetLength() uint32 { - if x != nil && x.Length != nil { - return *x.Length +func (x *ResultBgpAsPath) GetSegments() []*ResultBgpAsPathSegment { + if x != nil { + return x.Segments } - return 0 + return nil } -// Fragment offset -type PatternFlowIpv4FragmentOffset struct { +// Configuration for a single BGP AS path segment +type ResultBgpAsPathSegment struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Description missing in models - // default = Choice.Enum.value - Choice *PatternFlowIpv4FragmentOffset_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.PatternFlowIpv4FragmentOffset_Choice_Enum,oneof" json:"choice,omitempty"` - // Description missing in models - // default = 0 - Value *uint32 `protobuf:"varint,2,opt,name=value,proto3,oneof" json:"value,omitempty"` - // Description missing in models - // default = [0] - Values []uint32 `protobuf:"varint,3,rep,packed,name=values,proto3" json:"values,omitempty"` - // Description missing in models - Increment *PatternFlowIpv4FragmentOffsetCounter `protobuf:"bytes,5,opt,name=increment,proto3" json:"increment,omitempty"` - // Description missing in models - Decrement *PatternFlowIpv4FragmentOffsetCounter `protobuf:"bytes,6,opt,name=decrement,proto3" json:"decrement,omitempty"` - // One or more metric tags can be used to enable tracking portion of or all bits in - // a corresponding header field for metrics per each applicable value. These would appear - // as tagged metrics in corresponding flow metrics. - MetricTags []*PatternFlowIpv4FragmentOffsetMetricTag `protobuf:"bytes,7,rep,name=metric_tags,json=metricTags,proto3" json:"metric_tags,omitempty"` + // AS sequence is the most common type of AS_PATH, it contains the list of ASNs starting + // with the most recent ASN being added read from left to right. + // The other three AS_PATH types are used for Confederations - AS_SET is the type of + // AS_PATH attribute that summarizes routes using using the aggregate-address command, + // allowing AS_PATHs to be summarized in the update as well. - AS_CONFED_SEQ gives + // the list of ASNs in the path starting with the most recent ASN to be added reading + // left to right - AS_CONFED_SET will allow summarization of multiple AS PATHs to be + // sent in BGP Updates. + Type *ResultBgpAsPathSegment_Type_Enum `protobuf:"varint,1,opt,name=type,proto3,enum=otg.ResultBgpAsPathSegment_Type_Enum,oneof" json:"type,omitempty"` + // The AS numbers in this AS path segment. + AsNumbers []uint32 `protobuf:"varint,2,rep,packed,name=as_numbers,json=asNumbers,proto3" json:"as_numbers,omitempty"` } -func (x *PatternFlowIpv4FragmentOffset) Reset() { - *x = PatternFlowIpv4FragmentOffset{} +func (x *ResultBgpAsPathSegment) Reset() { + *x = ResultBgpAsPathSegment{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[389] + mi := &file_otg_proto_msgTypes[351] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowIpv4FragmentOffset) String() string { +func (x *ResultBgpAsPathSegment) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowIpv4FragmentOffset) ProtoMessage() {} +func (*ResultBgpAsPathSegment) ProtoMessage() {} -func (x *PatternFlowIpv4FragmentOffset) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[389] +func (x *ResultBgpAsPathSegment) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[351] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -51479,87 +50729,107 @@ func (x *PatternFlowIpv4FragmentOffset) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use PatternFlowIpv4FragmentOffset.ProtoReflect.Descriptor instead. -func (*PatternFlowIpv4FragmentOffset) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{389} -} - -func (x *PatternFlowIpv4FragmentOffset) GetChoice() PatternFlowIpv4FragmentOffset_Choice_Enum { - if x != nil && x.Choice != nil { - return *x.Choice - } - return PatternFlowIpv4FragmentOffset_Choice_unspecified +// Deprecated: Use ResultBgpAsPathSegment.ProtoReflect.Descriptor instead. +func (*ResultBgpAsPathSegment) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{351} } -func (x *PatternFlowIpv4FragmentOffset) GetValue() uint32 { - if x != nil && x.Value != nil { - return *x.Value +func (x *ResultBgpAsPathSegment) GetType() ResultBgpAsPathSegment_Type_Enum { + if x != nil && x.Type != nil { + return *x.Type } - return 0 + return ResultBgpAsPathSegment_Type_unspecified } -func (x *PatternFlowIpv4FragmentOffset) GetValues() []uint32 { +func (x *ResultBgpAsPathSegment) GetAsNumbers() []uint32 { if x != nil { - return x.Values + return x.AsNumbers } return nil } -func (x *PatternFlowIpv4FragmentOffset) GetIncrement() *PatternFlowIpv4FragmentOffsetCounter { - if x != nil { - return x.Increment +// The request to retrieve ISIS Link State PDU (LSP) information learned by the router. +type IsisLspsStateRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // The names of ISIS routers for which learned information is requested. An empty list + // will return results for all ISIS routers. + // + // x-constraint: + // - /components/schemas/Device.IsisRouter/properties/name + IsisRouterNames []string `protobuf:"bytes,1,rep,name=isis_router_names,json=isisRouterNames,proto3" json:"isis_router_names,omitempty"` +} + +func (x *IsisLspsStateRequest) Reset() { + *x = IsisLspsStateRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_otg_proto_msgTypes[352] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } - return nil } -func (x *PatternFlowIpv4FragmentOffset) GetDecrement() *PatternFlowIpv4FragmentOffsetCounter { - if x != nil { - return x.Decrement +func (x *IsisLspsStateRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*IsisLspsStateRequest) ProtoMessage() {} + +func (x *IsisLspsStateRequest) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[352] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms } - return nil + return mi.MessageOf(x) } -func (x *PatternFlowIpv4FragmentOffset) GetMetricTags() []*PatternFlowIpv4FragmentOffsetMetricTag { +// Deprecated: Use IsisLspsStateRequest.ProtoReflect.Descriptor instead. +func (*IsisLspsStateRequest) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{352} +} + +func (x *IsisLspsStateRequest) GetIsisRouterNames() []string { if x != nil { - return x.MetricTags + return x.IsisRouterNames } return nil } -// integer counter pattern -type PatternFlowIpv4TimeToLiveCounter struct { +// The result of ISIS LSP information that are retrieved. +type IsisLspsState struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Description missing in models - // default = 64 - Start *uint32 `protobuf:"varint,1,opt,name=start,proto3,oneof" json:"start,omitempty"` - // Description missing in models - // default = 1 - Step *uint32 `protobuf:"varint,2,opt,name=step,proto3,oneof" json:"step,omitempty"` - // Description missing in models - // default = 1 - Count *uint32 `protobuf:"varint,3,opt,name=count,proto3,oneof" json:"count,omitempty"` + // The name of the ISIS Router. + IsisRouterName *string `protobuf:"bytes,1,opt,name=isis_router_name,json=isisRouterName,proto3,oneof" json:"isis_router_name,omitempty"` + // One or more LSPs that are learned by this ISIS router. + Lsps []*IsisLspState `protobuf:"bytes,2,rep,name=lsps,proto3" json:"lsps,omitempty"` } -func (x *PatternFlowIpv4TimeToLiveCounter) Reset() { - *x = PatternFlowIpv4TimeToLiveCounter{} +func (x *IsisLspsState) Reset() { + *x = IsisLspsState{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[390] + mi := &file_otg_proto_msgTypes[353] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowIpv4TimeToLiveCounter) String() string { +func (x *IsisLspsState) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowIpv4TimeToLiveCounter) ProtoMessage() {} +func (*IsisLspsState) ProtoMessage() {} -func (x *PatternFlowIpv4TimeToLiveCounter) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[390] +func (x *IsisLspsState) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[353] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -51570,70 +50840,76 @@ func (x *PatternFlowIpv4TimeToLiveCounter) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use PatternFlowIpv4TimeToLiveCounter.ProtoReflect.Descriptor instead. -func (*PatternFlowIpv4TimeToLiveCounter) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{390} -} - -func (x *PatternFlowIpv4TimeToLiveCounter) GetStart() uint32 { - if x != nil && x.Start != nil { - return *x.Start - } - return 0 +// Deprecated: Use IsisLspsState.ProtoReflect.Descriptor instead. +func (*IsisLspsState) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{353} } -func (x *PatternFlowIpv4TimeToLiveCounter) GetStep() uint32 { - if x != nil && x.Step != nil { - return *x.Step +func (x *IsisLspsState) GetIsisRouterName() string { + if x != nil && x.IsisRouterName != nil { + return *x.IsisRouterName } - return 0 + return "" } -func (x *PatternFlowIpv4TimeToLiveCounter) GetCount() uint32 { - if x != nil && x.Count != nil { - return *x.Count +func (x *IsisLspsState) GetLsps() []*IsisLspState { + if x != nil { + return x.Lsps } - return 0 + return nil } -// Metric tag can be used to enable tracking portion of or all bits in a corresponding -// header field for metrics per each applicable value. These would appear as tagged -// metrics in corresponding flow metrics. -type PatternFlowIpv4TimeToLiveMetricTag struct { +// ISIS LSP. +type IsisLspState struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Name used to identify the metrics associated with the values applicable for configured - // offset and length inside corresponding header field + // LSP ID in the format, e.g. '640000000001-00-00'. LSP ID consists of the System ID + // of a neighbor, the Pseudonode ID, and the LSP number. The last two bytes represent + // Pseudonode ID and LSP number respectively. A pseudonode is a logical representation + // of the LAN which is generated by a Designated Intermediate System (DIS) on a LAN + // segment. If one LSP exceeds the maximum LSP size then it is sent in another LSP with + // the LSP number incremented by one. A router's learned LSP gets refreshed by 'remaining_lifetime'. + // Then the sequence number is incremented by 1. // required = true - Name *string `protobuf:"bytes,1,opt,name=name,proto3,oneof" json:"name,omitempty"` - // Offset in bits relative to start of corresponding header field - // default = 0 - Offset *uint32 `protobuf:"varint,2,opt,name=offset,proto3,oneof" json:"offset,omitempty"` - // Number of bits to track for metrics starting from configured offset of corresponding - // header field - // default = 8 - Length *uint32 `protobuf:"varint,3,opt,name=length,proto3,oneof" json:"length,omitempty"` + LspId *string `protobuf:"bytes,1,opt,name=lsp_id,json=lspId,proto3,oneof" json:"lsp_id,omitempty"` + // Link State PDU type. + PduType *IsisLspState_PduType_Enum `protobuf:"varint,2,opt,name=pdu_type,json=pduType,proto3,enum=otg.IsisLspState_PduType_Enum,oneof" json:"pdu_type,omitempty"` + // Remaining lifetime in seconds before LSP expires. + RemainingLifetime *uint32 `protobuf:"varint,3,opt,name=remaining_lifetime,json=remainingLifetime,proto3,oneof" json:"remaining_lifetime,omitempty"` + // Sequence number of the LSP. + SequenceNumber *uint64 `protobuf:"varint,4,opt,name=sequence_number,json=sequenceNumber,proto3,oneof" json:"sequence_number,omitempty"` + // Total length of the LSP. + PduLength *uint32 `protobuf:"varint,5,opt,name=pdu_length,json=pduLength,proto3,oneof" json:"pdu_length,omitempty"` + // LSP Type-Block flags. + Flags *IsisLspFlags `protobuf:"bytes,6,opt,name=flags,proto3" json:"flags,omitempty"` + // IS Type - bits 1 and 2 indicate the type of Intermediate System. + // 1 - ( i.e. bit 1 set) Level 1 Intermediate system. + // 2 - Unused value. + // 3 - (i.e. bits 1 and 2 set) Level 2 Intermediate system. + IsType *uint32 `protobuf:"varint,7,opt,name=is_type,json=isType,proto3,oneof" json:"is_type,omitempty"` + // It refers to Link State PDU State TLVs container. + Tlvs *IsisLspTlvs `protobuf:"bytes,8,opt,name=tlvs,proto3" json:"tlvs,omitempty"` } -func (x *PatternFlowIpv4TimeToLiveMetricTag) Reset() { - *x = PatternFlowIpv4TimeToLiveMetricTag{} +func (x *IsisLspState) Reset() { + *x = IsisLspState{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[391] + mi := &file_otg_proto_msgTypes[354] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowIpv4TimeToLiveMetricTag) String() string { +func (x *IsisLspState) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowIpv4TimeToLiveMetricTag) ProtoMessage() {} +func (*IsisLspState) ProtoMessage() {} -func (x *PatternFlowIpv4TimeToLiveMetricTag) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[391] +func (x *IsisLspState) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[354] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -51644,74 +50920,106 @@ func (x *PatternFlowIpv4TimeToLiveMetricTag) ProtoReflect() protoreflect.Message return mi.MessageOf(x) } -// Deprecated: Use PatternFlowIpv4TimeToLiveMetricTag.ProtoReflect.Descriptor instead. -func (*PatternFlowIpv4TimeToLiveMetricTag) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{391} +// Deprecated: Use IsisLspState.ProtoReflect.Descriptor instead. +func (*IsisLspState) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{354} } -func (x *PatternFlowIpv4TimeToLiveMetricTag) GetName() string { - if x != nil && x.Name != nil { - return *x.Name +func (x *IsisLspState) GetLspId() string { + if x != nil && x.LspId != nil { + return *x.LspId } return "" } -func (x *PatternFlowIpv4TimeToLiveMetricTag) GetOffset() uint32 { - if x != nil && x.Offset != nil { - return *x.Offset +func (x *IsisLspState) GetPduType() IsisLspState_PduType_Enum { + if x != nil && x.PduType != nil { + return *x.PduType + } + return IsisLspState_PduType_unspecified +} + +func (x *IsisLspState) GetRemainingLifetime() uint32 { + if x != nil && x.RemainingLifetime != nil { + return *x.RemainingLifetime } return 0 } -func (x *PatternFlowIpv4TimeToLiveMetricTag) GetLength() uint32 { - if x != nil && x.Length != nil { - return *x.Length +func (x *IsisLspState) GetSequenceNumber() uint64 { + if x != nil && x.SequenceNumber != nil { + return *x.SequenceNumber } return 0 } -// Time to live -type PatternFlowIpv4TimeToLive struct { +func (x *IsisLspState) GetPduLength() uint32 { + if x != nil && x.PduLength != nil { + return *x.PduLength + } + return 0 +} + +func (x *IsisLspState) GetFlags() *IsisLspFlags { + if x != nil { + return x.Flags + } + return nil +} + +func (x *IsisLspState) GetIsType() uint32 { + if x != nil && x.IsType != nil { + return *x.IsType + } + return 0 +} + +func (x *IsisLspState) GetTlvs() *IsisLspTlvs { + if x != nil { + return x.Tlvs + } + return nil +} + +// This contains the list of TLVs present in one LSP. +type IsisLspTlvs struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Description missing in models - // default = Choice.Enum.value - Choice *PatternFlowIpv4TimeToLive_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.PatternFlowIpv4TimeToLive_Choice_Enum,oneof" json:"choice,omitempty"` - // Description missing in models - // default = 64 - Value *uint32 `protobuf:"varint,2,opt,name=value,proto3,oneof" json:"value,omitempty"` - // Description missing in models - // default = [64] - Values []uint32 `protobuf:"varint,3,rep,packed,name=values,proto3" json:"values,omitempty"` - // Description missing in models - Increment *PatternFlowIpv4TimeToLiveCounter `protobuf:"bytes,5,opt,name=increment,proto3" json:"increment,omitempty"` - // Description missing in models - Decrement *PatternFlowIpv4TimeToLiveCounter `protobuf:"bytes,6,opt,name=decrement,proto3" json:"decrement,omitempty"` - // One or more metric tags can be used to enable tracking portion of or all bits in - // a corresponding header field for metrics per each applicable value. These would appear - // as tagged metrics in corresponding flow metrics. - MetricTags []*PatternFlowIpv4TimeToLiveMetricTag `protobuf:"bytes,7,rep,name=metric_tags,json=metricTags,proto3" json:"metric_tags,omitempty"` + // Array of Hostname TLVs ( type 137) present in this LSP. + HostnameTlvs []*IsisLspHostname `protobuf:"bytes,1,rep,name=hostname_tlvs,json=hostnameTlvs,proto3" json:"hostname_tlvs,omitempty"` + // Array of IS-Reachability TLVs (type 2) present in this LSP. + IsReachabilityTlvs []*IsisLspIsReachabilityTlv `protobuf:"bytes,2,rep,name=is_reachability_tlvs,json=isReachabilityTlvs,proto3" json:"is_reachability_tlvs,omitempty"` + // Array of Extended IS-Reachability TLVs (type 22) present in this LSP. + ExtendedIsReachabilityTlvs []*IsisLspExtendedIsReachabilityTlv `protobuf:"bytes,3,rep,name=extended_is_reachability_tlvs,json=extendedIsReachabilityTlvs,proto3" json:"extended_is_reachability_tlvs,omitempty"` + // Array of IPv4 Internal Reachability TLVs (type 128) present in this LSP. + Ipv4InternalReachabilityTlvs []*IsisLspIpv4InternalReachabilityTlv `protobuf:"bytes,4,rep,name=ipv4_internal_reachability_tlvs,json=ipv4InternalReachabilityTlvs,proto3" json:"ipv4_internal_reachability_tlvs,omitempty"` + // Array of IPv4 External Reachability TLVs (type 130) present in this LSP. + Ipv4ExternalReachabilityTlvs []*IsisLspIpv4ExternalReachabilityTlv `protobuf:"bytes,5,rep,name=ipv4_external_reachability_tlvs,json=ipv4ExternalReachabilityTlvs,proto3" json:"ipv4_external_reachability_tlvs,omitempty"` + // Array of IPv4 Extended Reachability TLVs (type 135) present in this LSP. + ExtendedIpv4ReachabilityTlvs []*IsisLspExtendedIpv4ReachabilityTlv `protobuf:"bytes,6,rep,name=extended_ipv4_reachability_tlvs,json=extendedIpv4ReachabilityTlvs,proto3" json:"extended_ipv4_reachability_tlvs,omitempty"` + // Array of IPv6 Reachability TLVs (type 236) present in this LSP. + Ipv6ReachabilityTlvs []*IsisLspIpv6ReachabilityTlv `protobuf:"bytes,7,rep,name=ipv6_reachability_tlvs,json=ipv6ReachabilityTlvs,proto3" json:"ipv6_reachability_tlvs,omitempty"` } -func (x *PatternFlowIpv4TimeToLive) Reset() { - *x = PatternFlowIpv4TimeToLive{} +func (x *IsisLspTlvs) Reset() { + *x = IsisLspTlvs{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[392] + mi := &file_otg_proto_msgTypes[355] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowIpv4TimeToLive) String() string { +func (x *IsisLspTlvs) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowIpv4TimeToLive) ProtoMessage() {} +func (*IsisLspTlvs) ProtoMessage() {} -func (x *PatternFlowIpv4TimeToLive) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[392] +func (x *IsisLspTlvs) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[355] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -51722,87 +51030,87 @@ func (x *PatternFlowIpv4TimeToLive) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use PatternFlowIpv4TimeToLive.ProtoReflect.Descriptor instead. -func (*PatternFlowIpv4TimeToLive) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{392} +// Deprecated: Use IsisLspTlvs.ProtoReflect.Descriptor instead. +func (*IsisLspTlvs) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{355} } -func (x *PatternFlowIpv4TimeToLive) GetChoice() PatternFlowIpv4TimeToLive_Choice_Enum { - if x != nil && x.Choice != nil { - return *x.Choice +func (x *IsisLspTlvs) GetHostnameTlvs() []*IsisLspHostname { + if x != nil { + return x.HostnameTlvs } - return PatternFlowIpv4TimeToLive_Choice_unspecified + return nil } -func (x *PatternFlowIpv4TimeToLive) GetValue() uint32 { - if x != nil && x.Value != nil { - return *x.Value +func (x *IsisLspTlvs) GetIsReachabilityTlvs() []*IsisLspIsReachabilityTlv { + if x != nil { + return x.IsReachabilityTlvs } - return 0 + return nil } -func (x *PatternFlowIpv4TimeToLive) GetValues() []uint32 { +func (x *IsisLspTlvs) GetExtendedIsReachabilityTlvs() []*IsisLspExtendedIsReachabilityTlv { if x != nil { - return x.Values + return x.ExtendedIsReachabilityTlvs } return nil } -func (x *PatternFlowIpv4TimeToLive) GetIncrement() *PatternFlowIpv4TimeToLiveCounter { +func (x *IsisLspTlvs) GetIpv4InternalReachabilityTlvs() []*IsisLspIpv4InternalReachabilityTlv { if x != nil { - return x.Increment + return x.Ipv4InternalReachabilityTlvs } return nil } -func (x *PatternFlowIpv4TimeToLive) GetDecrement() *PatternFlowIpv4TimeToLiveCounter { +func (x *IsisLspTlvs) GetIpv4ExternalReachabilityTlvs() []*IsisLspIpv4ExternalReachabilityTlv { if x != nil { - return x.Decrement + return x.Ipv4ExternalReachabilityTlvs } return nil } -func (x *PatternFlowIpv4TimeToLive) GetMetricTags() []*PatternFlowIpv4TimeToLiveMetricTag { +func (x *IsisLspTlvs) GetExtendedIpv4ReachabilityTlvs() []*IsisLspExtendedIpv4ReachabilityTlv { if x != nil { - return x.MetricTags + return x.ExtendedIpv4ReachabilityTlvs } return nil } -// integer counter pattern -type PatternFlowIpv4ProtocolCounter struct { +func (x *IsisLspTlvs) GetIpv6ReachabilityTlvs() []*IsisLspIpv6ReachabilityTlv { + if x != nil { + return x.Ipv6ReachabilityTlvs + } + return nil +} + +// It contains Hostname for the TLV 137. +type IsisLspHostname struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Description missing in models - // default = 61 - Start *uint32 `protobuf:"varint,1,opt,name=start,proto3,oneof" json:"start,omitempty"` - // Description missing in models - // default = 1 - Step *uint32 `protobuf:"varint,2,opt,name=step,proto3,oneof" json:"step,omitempty"` - // Description missing in models - // default = 1 - Count *uint32 `protobuf:"varint,3,opt,name=count,proto3,oneof" json:"count,omitempty"` + // Hostname for an ISIS router. + Hostname *string `protobuf:"bytes,1,opt,name=hostname,proto3,oneof" json:"hostname,omitempty"` } -func (x *PatternFlowIpv4ProtocolCounter) Reset() { - *x = PatternFlowIpv4ProtocolCounter{} +func (x *IsisLspHostname) Reset() { + *x = IsisLspHostname{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[393] + mi := &file_otg_proto_msgTypes[356] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowIpv4ProtocolCounter) String() string { +func (x *IsisLspHostname) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowIpv4ProtocolCounter) ProtoMessage() {} +func (*IsisLspHostname) ProtoMessage() {} -func (x *PatternFlowIpv4ProtocolCounter) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[393] +func (x *IsisLspHostname) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[356] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -51813,70 +51121,59 @@ func (x *PatternFlowIpv4ProtocolCounter) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use PatternFlowIpv4ProtocolCounter.ProtoReflect.Descriptor instead. -func (*PatternFlowIpv4ProtocolCounter) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{393} +// Deprecated: Use IsisLspHostname.ProtoReflect.Descriptor instead. +func (*IsisLspHostname) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{356} } -func (x *PatternFlowIpv4ProtocolCounter) GetStart() uint32 { - if x != nil && x.Start != nil { - return *x.Start +func (x *IsisLspHostname) GetHostname() string { + if x != nil && x.Hostname != nil { + return *x.Hostname } - return 0 + return "" } -func (x *PatternFlowIpv4ProtocolCounter) GetStep() uint32 { - if x != nil && x.Step != nil { - return *x.Step - } - return 0 -} - -func (x *PatternFlowIpv4ProtocolCounter) GetCount() uint32 { - if x != nil && x.Count != nil { - return *x.Count - } - return 0 -} - -// Metric tag can be used to enable tracking portion of or all bits in a corresponding -// header field for metrics per each applicable value. These would appear as tagged -// metrics in corresponding flow metrics. -type PatternFlowIpv4ProtocolMetricTag struct { +// LSP Type flags. +type IsisLspFlags struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Name used to identify the metrics associated with the values applicable for configured - // offset and length inside corresponding header field - // required = true - Name *string `protobuf:"bytes,1,opt,name=name,proto3,oneof" json:"name,omitempty"` - // Offset in bits relative to start of corresponding header field - // default = 0 - Offset *uint32 `protobuf:"varint,2,opt,name=offset,proto3,oneof" json:"offset,omitempty"` - // Number of bits to track for metrics starting from configured offset of corresponding - // header field - // default = 8 - Length *uint32 `protobuf:"varint,3,opt,name=length,proto3,oneof" json:"length,omitempty"` + // When set, the originator supports partition repair. + PartitionRepair *bool `protobuf:"varint,1,opt,name=partition_repair,json=partitionRepair,proto3,oneof" json:"partition_repair,omitempty"` + // When set, the originator is attached to another area using the referred metric. + AttachedError *bool `protobuf:"varint,2,opt,name=attached_error,json=attachedError,proto3,oneof" json:"attached_error,omitempty"` + // When set, the originator is attached to another + // area using the referred metric. + AttachedExpense *bool `protobuf:"varint,3,opt,name=attached_expense,json=attachedExpense,proto3,oneof" json:"attached_expense,omitempty"` + // Delay Metric - when set, the originator is attached to another + // area using the referred metric. + AttachedDelay *bool `protobuf:"varint,4,opt,name=attached_delay,json=attachedDelay,proto3,oneof" json:"attached_delay,omitempty"` + // Default Metric - when set, the originator is attached to another + // area using the referred metric. + AttachedDefault *bool `protobuf:"varint,5,opt,name=attached_default,json=attachedDefault,proto3,oneof" json:"attached_default,omitempty"` + // Overload bit - when set, the originator is overloaded, and must + // be avoided in path calculation. + Overload *bool `protobuf:"varint,6,opt,name=overload,proto3,oneof" json:"overload,omitempty"` } -func (x *PatternFlowIpv4ProtocolMetricTag) Reset() { - *x = PatternFlowIpv4ProtocolMetricTag{} +func (x *IsisLspFlags) Reset() { + *x = IsisLspFlags{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[394] + mi := &file_otg_proto_msgTypes[357] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowIpv4ProtocolMetricTag) String() string { +func (x *IsisLspFlags) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowIpv4ProtocolMetricTag) ProtoMessage() {} +func (*IsisLspFlags) ProtoMessage() {} -func (x *PatternFlowIpv4ProtocolMetricTag) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[394] +func (x *IsisLspFlags) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[357] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -51887,79 +51184,81 @@ func (x *PatternFlowIpv4ProtocolMetricTag) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use PatternFlowIpv4ProtocolMetricTag.ProtoReflect.Descriptor instead. -func (*PatternFlowIpv4ProtocolMetricTag) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{394} +// Deprecated: Use IsisLspFlags.ProtoReflect.Descriptor instead. +func (*IsisLspFlags) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{357} } -func (x *PatternFlowIpv4ProtocolMetricTag) GetName() string { - if x != nil && x.Name != nil { - return *x.Name +func (x *IsisLspFlags) GetPartitionRepair() bool { + if x != nil && x.PartitionRepair != nil { + return *x.PartitionRepair } - return "" + return false } -func (x *PatternFlowIpv4ProtocolMetricTag) GetOffset() uint32 { - if x != nil && x.Offset != nil { - return *x.Offset +func (x *IsisLspFlags) GetAttachedError() bool { + if x != nil && x.AttachedError != nil { + return *x.AttachedError } - return 0 + return false } -func (x *PatternFlowIpv4ProtocolMetricTag) GetLength() uint32 { - if x != nil && x.Length != nil { - return *x.Length +func (x *IsisLspFlags) GetAttachedExpense() bool { + if x != nil && x.AttachedExpense != nil { + return *x.AttachedExpense } - return 0 + return false } -// Protocol, default is 61 any host internal protocol -type PatternFlowIpv4Protocol struct { +func (x *IsisLspFlags) GetAttachedDelay() bool { + if x != nil && x.AttachedDelay != nil { + return *x.AttachedDelay + } + return false +} + +func (x *IsisLspFlags) GetAttachedDefault() bool { + if x != nil && x.AttachedDefault != nil { + return *x.AttachedDefault + } + return false +} + +func (x *IsisLspFlags) GetOverload() bool { + if x != nil && x.Overload != nil { + return *x.Overload + } + return false +} + +// This container describes list of ISIS neighbors and attributes in IS-Reachability +// TLV (type 2). +type IsisLspIsReachabilityTlv struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Description missing in models - // default = Choice.Enum.auto - Choice *PatternFlowIpv4Protocol_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.PatternFlowIpv4Protocol_Choice_Enum,oneof" json:"choice,omitempty"` - // Description missing in models - // default = 61 - Value *uint32 `protobuf:"varint,2,opt,name=value,proto3,oneof" json:"value,omitempty"` - // Description missing in models - // default = [61] - Values []uint32 `protobuf:"varint,3,rep,packed,name=values,proto3" json:"values,omitempty"` - // The OTG implementation can provide a system generated - // value for this property. If the OTG is unable to generate a value - // the default value must be used. - // default = 61 - Auto *uint32 `protobuf:"varint,4,opt,name=auto,proto3,oneof" json:"auto,omitempty"` - // Description missing in models - Increment *PatternFlowIpv4ProtocolCounter `protobuf:"bytes,6,opt,name=increment,proto3" json:"increment,omitempty"` - // Description missing in models - Decrement *PatternFlowIpv4ProtocolCounter `protobuf:"bytes,7,opt,name=decrement,proto3" json:"decrement,omitempty"` - // One or more metric tags can be used to enable tracking portion of or all bits in - // a corresponding header field for metrics per each applicable value. These would appear - // as tagged metrics in corresponding flow metrics. - MetricTags []*PatternFlowIpv4ProtocolMetricTag `protobuf:"bytes,8,rep,name=metric_tags,json=metricTags,proto3" json:"metric_tags,omitempty"` + // This container describes Intermediate System (IS) neighbors. + Neighbors []*IsisLspneighbor `protobuf:"bytes,1,rep,name=neighbors,proto3" json:"neighbors,omitempty"` } -func (x *PatternFlowIpv4Protocol) Reset() { - *x = PatternFlowIpv4Protocol{} +func (x *IsisLspIsReachabilityTlv) Reset() { + *x = IsisLspIsReachabilityTlv{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[395] + mi := &file_otg_proto_msgTypes[358] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowIpv4Protocol) String() string { +func (x *IsisLspIsReachabilityTlv) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowIpv4Protocol) ProtoMessage() {} +func (*IsisLspIsReachabilityTlv) ProtoMessage() {} -func (x *PatternFlowIpv4Protocol) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[395] +func (x *IsisLspIsReachabilityTlv) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[358] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -51970,93 +51269,95 @@ func (x *PatternFlowIpv4Protocol) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use PatternFlowIpv4Protocol.ProtoReflect.Descriptor instead. -func (*PatternFlowIpv4Protocol) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{395} +// Deprecated: Use IsisLspIsReachabilityTlv.ProtoReflect.Descriptor instead. +func (*IsisLspIsReachabilityTlv) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{358} } -func (x *PatternFlowIpv4Protocol) GetChoice() PatternFlowIpv4Protocol_Choice_Enum { - if x != nil && x.Choice != nil { - return *x.Choice +func (x *IsisLspIsReachabilityTlv) GetNeighbors() []*IsisLspneighbor { + if x != nil { + return x.Neighbors } - return PatternFlowIpv4Protocol_Choice_unspecified + return nil } -func (x *PatternFlowIpv4Protocol) GetValue() uint32 { - if x != nil && x.Value != nil { - return *x.Value - } - return 0 +// This is list of ISIS neighbors and attributes in Extended-IS-Reachability TLV (type +// 22). +type IsisLspExtendedIsReachabilityTlv struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // This container describes IS neighbors. + Neighbors []*IsisLspneighbor `protobuf:"bytes,1,rep,name=neighbors,proto3" json:"neighbors,omitempty"` } -func (x *PatternFlowIpv4Protocol) GetValues() []uint32 { - if x != nil { - return x.Values +func (x *IsisLspExtendedIsReachabilityTlv) Reset() { + *x = IsisLspExtendedIsReachabilityTlv{} + if protoimpl.UnsafeEnabled { + mi := &file_otg_proto_msgTypes[359] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } - return nil } -func (x *PatternFlowIpv4Protocol) GetAuto() uint32 { - if x != nil && x.Auto != nil { - return *x.Auto - } - return 0 +func (x *IsisLspExtendedIsReachabilityTlv) String() string { + return protoimpl.X.MessageStringOf(x) } -func (x *PatternFlowIpv4Protocol) GetIncrement() *PatternFlowIpv4ProtocolCounter { - if x != nil { - return x.Increment +func (*IsisLspExtendedIsReachabilityTlv) ProtoMessage() {} + +func (x *IsisLspExtendedIsReachabilityTlv) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[359] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms } - return nil + return mi.MessageOf(x) } -func (x *PatternFlowIpv4Protocol) GetDecrement() *PatternFlowIpv4ProtocolCounter { - if x != nil { - return x.Decrement - } - return nil +// Deprecated: Use IsisLspExtendedIsReachabilityTlv.ProtoReflect.Descriptor instead. +func (*IsisLspExtendedIsReachabilityTlv) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{359} } -func (x *PatternFlowIpv4Protocol) GetMetricTags() []*PatternFlowIpv4ProtocolMetricTag { +func (x *IsisLspExtendedIsReachabilityTlv) GetNeighbors() []*IsisLspneighbor { if x != nil { - return x.MetricTags + return x.Neighbors } return nil } -// Header checksum -type PatternFlowIpv4HeaderChecksum struct { +// This contains IS neighbors. +type IsisLspneighbor struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // The type of checksum - // default = Choice.Enum.generated - Choice *PatternFlowIpv4HeaderChecksum_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.PatternFlowIpv4HeaderChecksum_Choice_Enum,oneof" json:"choice,omitempty"` - // A system generated checksum value - // default = Generated.Enum.good - Generated *PatternFlowIpv4HeaderChecksum_Generated_Enum `protobuf:"varint,2,opt,name=generated,proto3,enum=otg.PatternFlowIpv4HeaderChecksum_Generated_Enum,oneof" json:"generated,omitempty"` - // A custom checksum value - Custom *uint32 `protobuf:"varint,3,opt,name=custom,proto3,oneof" json:"custom,omitempty"` + // The System ID for this emulated ISIS router, e.g. 640100010000. + SystemId *string `protobuf:"bytes,1,opt,name=system_id,json=systemId,proto3,oneof" json:"system_id,omitempty"` } -func (x *PatternFlowIpv4HeaderChecksum) Reset() { - *x = PatternFlowIpv4HeaderChecksum{} +func (x *IsisLspneighbor) Reset() { + *x = IsisLspneighbor{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[396] + mi := &file_otg_proto_msgTypes[360] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowIpv4HeaderChecksum) String() string { +func (x *IsisLspneighbor) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowIpv4HeaderChecksum) ProtoMessage() {} +func (*IsisLspneighbor) ProtoMessage() {} -func (x *PatternFlowIpv4HeaderChecksum) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[396] +func (x *IsisLspneighbor) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[360] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -52067,66 +51368,47 @@ func (x *PatternFlowIpv4HeaderChecksum) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use PatternFlowIpv4HeaderChecksum.ProtoReflect.Descriptor instead. -func (*PatternFlowIpv4HeaderChecksum) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{396} -} - -func (x *PatternFlowIpv4HeaderChecksum) GetChoice() PatternFlowIpv4HeaderChecksum_Choice_Enum { - if x != nil && x.Choice != nil { - return *x.Choice - } - return PatternFlowIpv4HeaderChecksum_Choice_unspecified -} - -func (x *PatternFlowIpv4HeaderChecksum) GetGenerated() PatternFlowIpv4HeaderChecksum_Generated_Enum { - if x != nil && x.Generated != nil { - return *x.Generated - } - return PatternFlowIpv4HeaderChecksum_Generated_unspecified +// Deprecated: Use IsisLspneighbor.ProtoReflect.Descriptor instead. +func (*IsisLspneighbor) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{360} } -func (x *PatternFlowIpv4HeaderChecksum) GetCustom() uint32 { - if x != nil && x.Custom != nil { - return *x.Custom +func (x *IsisLspneighbor) GetSystemId() string { + if x != nil && x.SystemId != nil { + return *x.SystemId } - return 0 + return "" } -// ipv4 counter pattern -type PatternFlowIpv4SrcCounter struct { +// This container defines list of IPv4 internal reachability information in one IPv4 +// internal reachability TLV. +// This is advertised when the origin-type is set 'internal' in route range configurations. +type IsisLspIpv4InternalReachabilityTlv struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Description missing in models - // default = 0.0.0.0 - Start *string `protobuf:"bytes,1,opt,name=start,proto3,oneof" json:"start,omitempty"` - // Description missing in models - // default = 0.0.0.1 - Step *string `protobuf:"bytes,2,opt,name=step,proto3,oneof" json:"step,omitempty"` - // Description missing in models - // default = 1 - Count *uint32 `protobuf:"varint,3,opt,name=count,proto3,oneof" json:"count,omitempty"` + // Describes list of IPv4 prefixes in this TLV. + Prefixes []*IsisLspV4Prefix `protobuf:"bytes,1,rep,name=prefixes,proto3" json:"prefixes,omitempty"` } -func (x *PatternFlowIpv4SrcCounter) Reset() { - *x = PatternFlowIpv4SrcCounter{} +func (x *IsisLspIpv4InternalReachabilityTlv) Reset() { + *x = IsisLspIpv4InternalReachabilityTlv{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[397] + mi := &file_otg_proto_msgTypes[361] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowIpv4SrcCounter) String() string { +func (x *IsisLspIpv4InternalReachabilityTlv) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowIpv4SrcCounter) ProtoMessage() {} +func (*IsisLspIpv4InternalReachabilityTlv) ProtoMessage() {} -func (x *PatternFlowIpv4SrcCounter) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[397] +func (x *IsisLspIpv4InternalReachabilityTlv) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[361] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -52137,70 +51419,47 @@ func (x *PatternFlowIpv4SrcCounter) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use PatternFlowIpv4SrcCounter.ProtoReflect.Descriptor instead. -func (*PatternFlowIpv4SrcCounter) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{397} -} - -func (x *PatternFlowIpv4SrcCounter) GetStart() string { - if x != nil && x.Start != nil { - return *x.Start - } - return "" -} - -func (x *PatternFlowIpv4SrcCounter) GetStep() string { - if x != nil && x.Step != nil { - return *x.Step - } - return "" +// Deprecated: Use IsisLspIpv4InternalReachabilityTlv.ProtoReflect.Descriptor instead. +func (*IsisLspIpv4InternalReachabilityTlv) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{361} } -func (x *PatternFlowIpv4SrcCounter) GetCount() uint32 { - if x != nil && x.Count != nil { - return *x.Count +func (x *IsisLspIpv4InternalReachabilityTlv) GetPrefixes() []*IsisLspV4Prefix { + if x != nil { + return x.Prefixes } - return 0 + return nil } -// Metric tag can be used to enable tracking portion of or all bits in a corresponding -// header field for metrics per each applicable value. These would appear as tagged -// metrics in corresponding flow metrics. -type PatternFlowIpv4SrcMetricTag struct { +// This container defines list of IPv4 external reachability information in one IPv4 +// external reachability TLV. +// This is advertised when the origin-type is set 'external' in route range configurations. +type IsisLspIpv4ExternalReachabilityTlv struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Name used to identify the metrics associated with the values applicable for configured - // offset and length inside corresponding header field - // required = true - Name *string `protobuf:"bytes,1,opt,name=name,proto3,oneof" json:"name,omitempty"` - // Offset in bits relative to start of corresponding header field - // default = 0 - Offset *uint32 `protobuf:"varint,2,opt,name=offset,proto3,oneof" json:"offset,omitempty"` - // Number of bits to track for metrics starting from configured offset of corresponding - // header field - // default = 32 - Length *uint32 `protobuf:"varint,3,opt,name=length,proto3,oneof" json:"length,omitempty"` + // Describes list of IPv4 prefixes in this TLV.. + Prefixes []*IsisLspV4Prefix `protobuf:"bytes,1,rep,name=prefixes,proto3" json:"prefixes,omitempty"` } -func (x *PatternFlowIpv4SrcMetricTag) Reset() { - *x = PatternFlowIpv4SrcMetricTag{} +func (x *IsisLspIpv4ExternalReachabilityTlv) Reset() { + *x = IsisLspIpv4ExternalReachabilityTlv{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[398] + mi := &file_otg_proto_msgTypes[362] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowIpv4SrcMetricTag) String() string { +func (x *IsisLspIpv4ExternalReachabilityTlv) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowIpv4SrcMetricTag) ProtoMessage() {} +func (*IsisLspIpv4ExternalReachabilityTlv) ProtoMessage() {} -func (x *PatternFlowIpv4SrcMetricTag) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[398] +func (x *IsisLspIpv4ExternalReachabilityTlv) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[362] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -52211,74 +51470,61 @@ func (x *PatternFlowIpv4SrcMetricTag) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use PatternFlowIpv4SrcMetricTag.ProtoReflect.Descriptor instead. -func (*PatternFlowIpv4SrcMetricTag) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{398} -} - -func (x *PatternFlowIpv4SrcMetricTag) GetName() string { - if x != nil && x.Name != nil { - return *x.Name - } - return "" -} - -func (x *PatternFlowIpv4SrcMetricTag) GetOffset() uint32 { - if x != nil && x.Offset != nil { - return *x.Offset - } - return 0 +// Deprecated: Use IsisLspIpv4ExternalReachabilityTlv.ProtoReflect.Descriptor instead. +func (*IsisLspIpv4ExternalReachabilityTlv) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{362} } -func (x *PatternFlowIpv4SrcMetricTag) GetLength() uint32 { - if x != nil && x.Length != nil { - return *x.Length +func (x *IsisLspIpv4ExternalReachabilityTlv) GetPrefixes() []*IsisLspV4Prefix { + if x != nil { + return x.Prefixes } - return 0 + return nil } -// Source address -type PatternFlowIpv4Src struct { +// This group defines attributes of an IPv4 standard prefix. +type IsisLspV4Prefix struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Description missing in models - // default = Choice.Enum.value - Choice *PatternFlowIpv4Src_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.PatternFlowIpv4Src_Choice_Enum,oneof" json:"choice,omitempty"` - // Description missing in models - // default = 0.0.0.0 - Value *string `protobuf:"bytes,2,opt,name=value,proto3,oneof" json:"value,omitempty"` - // Description missing in models - // default = ['0.0.0.0'] - Values []string `protobuf:"bytes,3,rep,name=values,proto3" json:"values,omitempty"` - // Description missing in models - Increment *PatternFlowIpv4SrcCounter `protobuf:"bytes,5,opt,name=increment,proto3" json:"increment,omitempty"` - // Description missing in models - Decrement *PatternFlowIpv4SrcCounter `protobuf:"bytes,6,opt,name=decrement,proto3" json:"decrement,omitempty"` - // One or more metric tags can be used to enable tracking portion of or all bits in - // a corresponding header field for metrics per each applicable value. These would appear - // as tagged metrics in corresponding flow metrics. - MetricTags []*PatternFlowIpv4SrcMetricTag `protobuf:"bytes,7,rep,name=metric_tags,json=metricTags,proto3" json:"metric_tags,omitempty"` + // An IPv4 unicast prefix reachable via the originator of this LSP. + Ipv4Address *string `protobuf:"bytes,1,opt,name=ipv4_address,json=ipv4Address,proto3,oneof" json:"ipv4_address,omitempty"` + // The length of the IPv4 prefix. + PrefixLength *uint32 `protobuf:"varint,2,opt,name=prefix_length,json=prefixLength,proto3,oneof" json:"prefix_length,omitempty"` + // Up (0)-used when a prefix is initially advertised within the ISIS L3 hierarchy, + // and for all other prefixes in L1 and L2 LSPs. (default) + // Down (1)-used when an L1/L2 router advertises L2 prefixes in L1 LSPs. + // The prefixes are being advertised from a higher level (L2) down to a lower level + // (L1). + RedistributionType *IsisLspV4Prefix_RedistributionType_Enum `protobuf:"varint,3,opt,name=redistribution_type,json=redistributionType,proto3,enum=otg.IsisLspV4Prefix_RedistributionType_Enum,oneof" json:"redistribution_type,omitempty"` + // ISIS default metric value. + DefaultMetric *uint32 `protobuf:"varint,4,opt,name=default_metric,json=defaultMetric,proto3,oneof" json:"default_metric,omitempty"` + // The origin of the advertised route-internal or external to the ISIS area. Options + // include the following: + // Internal-for intra-area routes, through Level 1 LSPs. + // External-for inter-area routes redistributed within L1, through Level + // 1 LSPs. + OriginType *IsisLspV4Prefix_OriginType_Enum `protobuf:"varint,5,opt,name=origin_type,json=originType,proto3,enum=otg.IsisLspV4Prefix_OriginType_Enum,oneof" json:"origin_type,omitempty"` } -func (x *PatternFlowIpv4Src) Reset() { - *x = PatternFlowIpv4Src{} +func (x *IsisLspV4Prefix) Reset() { + *x = IsisLspV4Prefix{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[399] + mi := &file_otg_proto_msgTypes[363] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowIpv4Src) String() string { +func (x *IsisLspV4Prefix) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowIpv4Src) ProtoMessage() {} +func (*IsisLspV4Prefix) ProtoMessage() {} -func (x *PatternFlowIpv4Src) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[399] +func (x *IsisLspV4Prefix) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[363] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -52289,87 +51535,75 @@ func (x *PatternFlowIpv4Src) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use PatternFlowIpv4Src.ProtoReflect.Descriptor instead. -func (*PatternFlowIpv4Src) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{399} -} - -func (x *PatternFlowIpv4Src) GetChoice() PatternFlowIpv4Src_Choice_Enum { - if x != nil && x.Choice != nil { - return *x.Choice - } - return PatternFlowIpv4Src_Choice_unspecified +// Deprecated: Use IsisLspV4Prefix.ProtoReflect.Descriptor instead. +func (*IsisLspV4Prefix) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{363} } -func (x *PatternFlowIpv4Src) GetValue() string { - if x != nil && x.Value != nil { - return *x.Value +func (x *IsisLspV4Prefix) GetIpv4Address() string { + if x != nil && x.Ipv4Address != nil { + return *x.Ipv4Address } return "" } -func (x *PatternFlowIpv4Src) GetValues() []string { - if x != nil { - return x.Values +func (x *IsisLspV4Prefix) GetPrefixLength() uint32 { + if x != nil && x.PrefixLength != nil { + return *x.PrefixLength } - return nil + return 0 } -func (x *PatternFlowIpv4Src) GetIncrement() *PatternFlowIpv4SrcCounter { - if x != nil { - return x.Increment +func (x *IsisLspV4Prefix) GetRedistributionType() IsisLspV4Prefix_RedistributionType_Enum { + if x != nil && x.RedistributionType != nil { + return *x.RedistributionType } - return nil + return IsisLspV4Prefix_RedistributionType_unspecified } -func (x *PatternFlowIpv4Src) GetDecrement() *PatternFlowIpv4SrcCounter { - if x != nil { - return x.Decrement +func (x *IsisLspV4Prefix) GetDefaultMetric() uint32 { + if x != nil && x.DefaultMetric != nil { + return *x.DefaultMetric } - return nil + return 0 } -func (x *PatternFlowIpv4Src) GetMetricTags() []*PatternFlowIpv4SrcMetricTag { - if x != nil { - return x.MetricTags +func (x *IsisLspV4Prefix) GetOriginType() IsisLspV4Prefix_OriginType_Enum { + if x != nil && x.OriginType != nil { + return *x.OriginType } - return nil + return IsisLspV4Prefix_OriginType_unspecified } -// ipv4 counter pattern -type PatternFlowIpv4DstCounter struct { +// This container defines list of IPv4 extended reachability information in one Extended +// IPv4 External Reachability TLV. +// It is advertised when the 'wide metric' is enabled. +type IsisLspExtendedIpv4ReachabilityTlv struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Description missing in models - // default = 0.0.0.0 - Start *string `protobuf:"bytes,1,opt,name=start,proto3,oneof" json:"start,omitempty"` - // Description missing in models - // default = 0.0.0.1 - Step *string `protobuf:"bytes,2,opt,name=step,proto3,oneof" json:"step,omitempty"` - // Description missing in models - // default = 1 - Count *uint32 `protobuf:"varint,3,opt,name=count,proto3,oneof" json:"count,omitempty"` + // IPv4 prefix contained within extended reachability TLVs. + Prefixes []*IsisLspExtendedV4Prefix `protobuf:"bytes,1,rep,name=prefixes,proto3" json:"prefixes,omitempty"` } -func (x *PatternFlowIpv4DstCounter) Reset() { - *x = PatternFlowIpv4DstCounter{} +func (x *IsisLspExtendedIpv4ReachabilityTlv) Reset() { + *x = IsisLspExtendedIpv4ReachabilityTlv{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[400] + mi := &file_otg_proto_msgTypes[364] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowIpv4DstCounter) String() string { +func (x *IsisLspExtendedIpv4ReachabilityTlv) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowIpv4DstCounter) ProtoMessage() {} +func (*IsisLspExtendedIpv4ReachabilityTlv) ProtoMessage() {} -func (x *PatternFlowIpv4DstCounter) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[400] +func (x *IsisLspExtendedIpv4ReachabilityTlv) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[364] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -52380,70 +51614,57 @@ func (x *PatternFlowIpv4DstCounter) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use PatternFlowIpv4DstCounter.ProtoReflect.Descriptor instead. -func (*PatternFlowIpv4DstCounter) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{400} -} - -func (x *PatternFlowIpv4DstCounter) GetStart() string { - if x != nil && x.Start != nil { - return *x.Start - } - return "" -} - -func (x *PatternFlowIpv4DstCounter) GetStep() string { - if x != nil && x.Step != nil { - return *x.Step - } - return "" +// Deprecated: Use IsisLspExtendedIpv4ReachabilityTlv.ProtoReflect.Descriptor instead. +func (*IsisLspExtendedIpv4ReachabilityTlv) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{364} } -func (x *PatternFlowIpv4DstCounter) GetCount() uint32 { - if x != nil && x.Count != nil { - return *x.Count +func (x *IsisLspExtendedIpv4ReachabilityTlv) GetPrefixes() []*IsisLspExtendedV4Prefix { + if x != nil { + return x.Prefixes } - return 0 + return nil } -// Metric tag can be used to enable tracking portion of or all bits in a corresponding -// header field for metrics per each applicable value. These would appear as tagged -// metrics in corresponding flow metrics. -type PatternFlowIpv4DstMetricTag struct { +// This group defines attributes of an IPv4 standard prefix. +type IsisLspExtendedV4Prefix struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Name used to identify the metrics associated with the values applicable for configured - // offset and length inside corresponding header field - // required = true - Name *string `protobuf:"bytes,1,opt,name=name,proto3,oneof" json:"name,omitempty"` - // Offset in bits relative to start of corresponding header field - // default = 0 - Offset *uint32 `protobuf:"varint,2,opt,name=offset,proto3,oneof" json:"offset,omitempty"` - // Number of bits to track for metrics starting from configured offset of corresponding - // header field - // default = 32 - Length *uint32 `protobuf:"varint,3,opt,name=length,proto3,oneof" json:"length,omitempty"` + // An IPv4 unicast prefix reachable via the originator of this LSP. + Ipv4Address *string `protobuf:"bytes,1,opt,name=ipv4_address,json=ipv4Address,proto3,oneof" json:"ipv4_address,omitempty"` + // The length of the IPv4 prefix. + PrefixLength *uint32 `protobuf:"varint,2,opt,name=prefix_length,json=prefixLength,proto3,oneof" json:"prefix_length,omitempty"` + // ISIS wide metric. + Metric *uint32 `protobuf:"varint,3,opt,name=metric,proto3,oneof" json:"metric,omitempty"` + // Up (0)-used when a prefix is initially advertised within the ISIS L3 hierarchy, + // and for all other prefixes in L1 and L2 LSPs. (default) + // Down (1)-used when an L1/L2 router advertises L2 prefixes in L1 LSPs. + // The prefixes are being advertised from a higher level (L2) down to a lower level + // (L1). + RedistributionType *IsisLspExtendedV4Prefix_RedistributionType_Enum `protobuf:"varint,4,opt,name=redistribution_type,json=redistributionType,proto3,enum=otg.IsisLspExtendedV4Prefix_RedistributionType_Enum,oneof" json:"redistribution_type,omitempty"` + // Description missing in models + PrefixAttributes *IsisLspPrefixAttributes `protobuf:"bytes,5,opt,name=prefix_attributes,json=prefixAttributes,proto3" json:"prefix_attributes,omitempty"` } -func (x *PatternFlowIpv4DstMetricTag) Reset() { - *x = PatternFlowIpv4DstMetricTag{} +func (x *IsisLspExtendedV4Prefix) Reset() { + *x = IsisLspExtendedV4Prefix{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[401] + mi := &file_otg_proto_msgTypes[365] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowIpv4DstMetricTag) String() string { +func (x *IsisLspExtendedV4Prefix) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowIpv4DstMetricTag) ProtoMessage() {} +func (*IsisLspExtendedV4Prefix) ProtoMessage() {} -func (x *PatternFlowIpv4DstMetricTag) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[401] +func (x *IsisLspExtendedV4Prefix) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[365] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -52454,74 +51675,74 @@ func (x *PatternFlowIpv4DstMetricTag) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use PatternFlowIpv4DstMetricTag.ProtoReflect.Descriptor instead. -func (*PatternFlowIpv4DstMetricTag) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{401} +// Deprecated: Use IsisLspExtendedV4Prefix.ProtoReflect.Descriptor instead. +func (*IsisLspExtendedV4Prefix) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{365} } -func (x *PatternFlowIpv4DstMetricTag) GetName() string { - if x != nil && x.Name != nil { - return *x.Name +func (x *IsisLspExtendedV4Prefix) GetIpv4Address() string { + if x != nil && x.Ipv4Address != nil { + return *x.Ipv4Address } return "" } -func (x *PatternFlowIpv4DstMetricTag) GetOffset() uint32 { - if x != nil && x.Offset != nil { - return *x.Offset +func (x *IsisLspExtendedV4Prefix) GetPrefixLength() uint32 { + if x != nil && x.PrefixLength != nil { + return *x.PrefixLength } return 0 } -func (x *PatternFlowIpv4DstMetricTag) GetLength() uint32 { - if x != nil && x.Length != nil { - return *x.Length +func (x *IsisLspExtendedV4Prefix) GetMetric() uint32 { + if x != nil && x.Metric != nil { + return *x.Metric } return 0 } -// Destination address -type PatternFlowIpv4Dst struct { +func (x *IsisLspExtendedV4Prefix) GetRedistributionType() IsisLspExtendedV4Prefix_RedistributionType_Enum { + if x != nil && x.RedistributionType != nil { + return *x.RedistributionType + } + return IsisLspExtendedV4Prefix_RedistributionType_unspecified +} + +func (x *IsisLspExtendedV4Prefix) GetPrefixAttributes() *IsisLspPrefixAttributes { + if x != nil { + return x.PrefixAttributes + } + return nil +} + +// It defines list of IPv6 extended reachability information in one IPv6 Reachability +// TLV. +type IsisLspIpv6ReachabilityTlv struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Description missing in models - // default = Choice.Enum.value - Choice *PatternFlowIpv4Dst_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.PatternFlowIpv4Dst_Choice_Enum,oneof" json:"choice,omitempty"` - // Description missing in models - // default = 0.0.0.0 - Value *string `protobuf:"bytes,2,opt,name=value,proto3,oneof" json:"value,omitempty"` - // Description missing in models - // default = ['0.0.0.0'] - Values []string `protobuf:"bytes,3,rep,name=values,proto3" json:"values,omitempty"` - // Description missing in models - Increment *PatternFlowIpv4DstCounter `protobuf:"bytes,5,opt,name=increment,proto3" json:"increment,omitempty"` - // Description missing in models - Decrement *PatternFlowIpv4DstCounter `protobuf:"bytes,6,opt,name=decrement,proto3" json:"decrement,omitempty"` - // One or more metric tags can be used to enable tracking portion of or all bits in - // a corresponding header field for metrics per each applicable value. These would appear - // as tagged metrics in corresponding flow metrics. - MetricTags []*PatternFlowIpv4DstMetricTag `protobuf:"bytes,7,rep,name=metric_tags,json=metricTags,proto3" json:"metric_tags,omitempty"` + // IPv6 prefix contained within reachability TLVs. + Prefixes []*IsisLspV6Prefix `protobuf:"bytes,1,rep,name=prefixes,proto3" json:"prefixes,omitempty"` } -func (x *PatternFlowIpv4Dst) Reset() { - *x = PatternFlowIpv4Dst{} +func (x *IsisLspIpv6ReachabilityTlv) Reset() { + *x = IsisLspIpv6ReachabilityTlv{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[402] + mi := &file_otg_proto_msgTypes[366] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowIpv4Dst) String() string { +func (x *IsisLspIpv6ReachabilityTlv) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowIpv4Dst) ProtoMessage() {} +func (*IsisLspIpv6ReachabilityTlv) ProtoMessage() {} -func (x *PatternFlowIpv4Dst) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[402] +func (x *IsisLspIpv6ReachabilityTlv) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[366] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -52532,87 +51753,63 @@ func (x *PatternFlowIpv4Dst) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use PatternFlowIpv4Dst.ProtoReflect.Descriptor instead. -func (*PatternFlowIpv4Dst) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{402} -} - -func (x *PatternFlowIpv4Dst) GetChoice() PatternFlowIpv4Dst_Choice_Enum { - if x != nil && x.Choice != nil { - return *x.Choice - } - return PatternFlowIpv4Dst_Choice_unspecified -} - -func (x *PatternFlowIpv4Dst) GetValue() string { - if x != nil && x.Value != nil { - return *x.Value - } - return "" -} - -func (x *PatternFlowIpv4Dst) GetValues() []string { - if x != nil { - return x.Values - } - return nil -} - -func (x *PatternFlowIpv4Dst) GetIncrement() *PatternFlowIpv4DstCounter { - if x != nil { - return x.Increment - } - return nil -} - -func (x *PatternFlowIpv4Dst) GetDecrement() *PatternFlowIpv4DstCounter { - if x != nil { - return x.Decrement - } - return nil +// Deprecated: Use IsisLspIpv6ReachabilityTlv.ProtoReflect.Descriptor instead. +func (*IsisLspIpv6ReachabilityTlv) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{366} } -func (x *PatternFlowIpv4Dst) GetMetricTags() []*PatternFlowIpv4DstMetricTag { +func (x *IsisLspIpv6ReachabilityTlv) GetPrefixes() []*IsisLspV6Prefix { if x != nil { - return x.MetricTags + return x.Prefixes } return nil } -// integer counter pattern -type PatternFlowIpv4PriorityRawCounter struct { +// It defines attributes of an IPv6 standard prefix. +type IsisLspV6Prefix struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields + // An IPv6 unicast prefix reachable via the originator of this LSP. + Ipv6Address *string `protobuf:"bytes,1,opt,name=ipv6_address,json=ipv6Address,proto3,oneof" json:"ipv6_address,omitempty"` + // The length of the IPv6 prefix. + PrefixLength *uint32 `protobuf:"varint,2,opt,name=prefix_length,json=prefixLength,proto3,oneof" json:"prefix_length,omitempty"` + // ISIS wide metric. + Metric *uint32 `protobuf:"varint,3,opt,name=metric,proto3,oneof" json:"metric,omitempty"` + // Up (0)-used when a prefix is initially advertised within the ISIS L3 hierarchy, + // and for all other prefixes in L1 and L2 LSPs. (default) + // Down (1)-used when an L1/L2 router advertises L2 prefixes in L1 LSPs. + // The prefixes are being advertised from a higher level (L2) down to a lower level + // (L1). + RedistributionType *IsisLspV6Prefix_RedistributionType_Enum `protobuf:"varint,4,opt,name=redistribution_type,json=redistributionType,proto3,enum=otg.IsisLspV6Prefix_RedistributionType_Enum,oneof" json:"redistribution_type,omitempty"` + // The origin of the advertised route-internal or external to the ISIS area. Options + // include the following: + // Internal-for intra-area routes, through Level 1 LSPs. + // External-for inter-area routes redistributed within L1, through Level + // 1 LSPs. + OriginType *IsisLspV6Prefix_OriginType_Enum `protobuf:"varint,5,opt,name=origin_type,json=originType,proto3,enum=otg.IsisLspV6Prefix_OriginType_Enum,oneof" json:"origin_type,omitempty"` // Description missing in models - // default = 0 - Start *uint32 `protobuf:"varint,1,opt,name=start,proto3,oneof" json:"start,omitempty"` - // Description missing in models - // default = 1 - Step *uint32 `protobuf:"varint,2,opt,name=step,proto3,oneof" json:"step,omitempty"` - // Description missing in models - // default = 1 - Count *uint32 `protobuf:"varint,3,opt,name=count,proto3,oneof" json:"count,omitempty"` + PrefixAttributes *IsisLspPrefixAttributes `protobuf:"bytes,6,opt,name=prefix_attributes,json=prefixAttributes,proto3" json:"prefix_attributes,omitempty"` } -func (x *PatternFlowIpv4PriorityRawCounter) Reset() { - *x = PatternFlowIpv4PriorityRawCounter{} +func (x *IsisLspV6Prefix) Reset() { + *x = IsisLspV6Prefix{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[403] + mi := &file_otg_proto_msgTypes[367] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowIpv4PriorityRawCounter) String() string { +func (x *IsisLspV6Prefix) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowIpv4PriorityRawCounter) ProtoMessage() {} +func (*IsisLspV6Prefix) ProtoMessage() {} -func (x *PatternFlowIpv4PriorityRawCounter) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[403] +func (x *IsisLspV6Prefix) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[367] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -52623,70 +51820,85 @@ func (x *PatternFlowIpv4PriorityRawCounter) ProtoReflect() protoreflect.Message return mi.MessageOf(x) } -// Deprecated: Use PatternFlowIpv4PriorityRawCounter.ProtoReflect.Descriptor instead. -func (*PatternFlowIpv4PriorityRawCounter) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{403} +// Deprecated: Use IsisLspV6Prefix.ProtoReflect.Descriptor instead. +func (*IsisLspV6Prefix) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{367} } -func (x *PatternFlowIpv4PriorityRawCounter) GetStart() uint32 { - if x != nil && x.Start != nil { - return *x.Start +func (x *IsisLspV6Prefix) GetIpv6Address() string { + if x != nil && x.Ipv6Address != nil { + return *x.Ipv6Address } - return 0 + return "" } -func (x *PatternFlowIpv4PriorityRawCounter) GetStep() uint32 { - if x != nil && x.Step != nil { - return *x.Step +func (x *IsisLspV6Prefix) GetPrefixLength() uint32 { + if x != nil && x.PrefixLength != nil { + return *x.PrefixLength } return 0 } -func (x *PatternFlowIpv4PriorityRawCounter) GetCount() uint32 { - if x != nil && x.Count != nil { - return *x.Count +func (x *IsisLspV6Prefix) GetMetric() uint32 { + if x != nil && x.Metric != nil { + return *x.Metric } return 0 } -// Metric tag can be used to enable tracking portion of or all bits in a corresponding -// header field for metrics per each applicable value. These would appear as tagged -// metrics in corresponding flow metrics. -type PatternFlowIpv4PriorityRawMetricTag struct { +func (x *IsisLspV6Prefix) GetRedistributionType() IsisLspV6Prefix_RedistributionType_Enum { + if x != nil && x.RedistributionType != nil { + return *x.RedistributionType + } + return IsisLspV6Prefix_RedistributionType_unspecified +} + +func (x *IsisLspV6Prefix) GetOriginType() IsisLspV6Prefix_OriginType_Enum { + if x != nil && x.OriginType != nil { + return *x.OriginType + } + return IsisLspV6Prefix_OriginType_unspecified +} + +func (x *IsisLspV6Prefix) GetPrefixAttributes() *IsisLspPrefixAttributes { + if x != nil { + return x.PrefixAttributes + } + return nil +} + +// This contains the properties of ISIS Prefix attributes for the extended IPv4 and +// IPv6 reachability. https://www.rfc-editor.org/rfc/rfc7794.html +type IsisLspPrefixAttributes struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Name used to identify the metrics associated with the values applicable for configured - // offset and length inside corresponding header field - // required = true - Name *string `protobuf:"bytes,1,opt,name=name,proto3,oneof" json:"name,omitempty"` - // Offset in bits relative to start of corresponding header field - // default = 0 - Offset *uint32 `protobuf:"varint,2,opt,name=offset,proto3,oneof" json:"offset,omitempty"` - // Number of bits to track for metrics starting from configured offset of corresponding - // header field - // default = 8 - Length *uint32 `protobuf:"varint,3,opt,name=length,proto3,oneof" json:"length,omitempty"` + // External Prefix Flag (Bit 0) + XFlag *bool `protobuf:"varint,1,opt,name=x_flag,json=xFlag,proto3,oneof" json:"x_flag,omitempty"` + // Re-advertisement Flag (Bit 1) + RFlag *bool `protobuf:"varint,2,opt,name=r_flag,json=rFlag,proto3,oneof" json:"r_flag,omitempty"` + // Node Flag (Bit 2) + NFlag *bool `protobuf:"varint,3,opt,name=n_flag,json=nFlag,proto3,oneof" json:"n_flag,omitempty"` } -func (x *PatternFlowIpv4PriorityRawMetricTag) Reset() { - *x = PatternFlowIpv4PriorityRawMetricTag{} +func (x *IsisLspPrefixAttributes) Reset() { + *x = IsisLspPrefixAttributes{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[404] + mi := &file_otg_proto_msgTypes[368] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowIpv4PriorityRawMetricTag) String() string { +func (x *IsisLspPrefixAttributes) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowIpv4PriorityRawMetricTag) ProtoMessage() {} +func (*IsisLspPrefixAttributes) ProtoMessage() {} -func (x *PatternFlowIpv4PriorityRawMetricTag) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[404] +func (x *IsisLspPrefixAttributes) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[368] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -52697,74 +51909,67 @@ func (x *PatternFlowIpv4PriorityRawMetricTag) ProtoReflect() protoreflect.Messag return mi.MessageOf(x) } -// Deprecated: Use PatternFlowIpv4PriorityRawMetricTag.ProtoReflect.Descriptor instead. -func (*PatternFlowIpv4PriorityRawMetricTag) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{404} +// Deprecated: Use IsisLspPrefixAttributes.ProtoReflect.Descriptor instead. +func (*IsisLspPrefixAttributes) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{368} } -func (x *PatternFlowIpv4PriorityRawMetricTag) GetName() string { - if x != nil && x.Name != nil { - return *x.Name +func (x *IsisLspPrefixAttributes) GetXFlag() bool { + if x != nil && x.XFlag != nil { + return *x.XFlag } - return "" + return false } -func (x *PatternFlowIpv4PriorityRawMetricTag) GetOffset() uint32 { - if x != nil && x.Offset != nil { - return *x.Offset +func (x *IsisLspPrefixAttributes) GetRFlag() bool { + if x != nil && x.RFlag != nil { + return *x.RFlag } - return 0 + return false } -func (x *PatternFlowIpv4PriorityRawMetricTag) GetLength() uint32 { - if x != nil && x.Length != nil { - return *x.Length +func (x *IsisLspPrefixAttributes) GetNFlag() bool { + if x != nil && x.NFlag != nil { + return *x.NFlag } - return 0 + return false } -// Raw priority -type PatternFlowIpv4PriorityRaw struct { +// The request to retrieve LLDP neighbor information for a given instance. +type LldpNeighborsStateRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Description missing in models - // default = Choice.Enum.value - Choice *PatternFlowIpv4PriorityRaw_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.PatternFlowIpv4PriorityRaw_Choice_Enum,oneof" json:"choice,omitempty"` - // Description missing in models - // default = 0 - Value *uint32 `protobuf:"varint,2,opt,name=value,proto3,oneof" json:"value,omitempty"` - // Description missing in models - // default = [0] - Values []uint32 `protobuf:"varint,3,rep,packed,name=values,proto3" json:"values,omitempty"` - // Description missing in models - Increment *PatternFlowIpv4PriorityRawCounter `protobuf:"bytes,5,opt,name=increment,proto3" json:"increment,omitempty"` - // Description missing in models - Decrement *PatternFlowIpv4PriorityRawCounter `protobuf:"bytes,6,opt,name=decrement,proto3" json:"decrement,omitempty"` - // One or more metric tags can be used to enable tracking portion of or all bits in - // a corresponding header field for metrics per each applicable value. These would appear - // as tagged metrics in corresponding flow metrics. - MetricTags []*PatternFlowIpv4PriorityRawMetricTag `protobuf:"bytes,7,rep,name=metric_tags,json=metricTags,proto3" json:"metric_tags,omitempty"` + // The names of LLDP instances for which neighbor information will be retrieved. If + // no names are specified then the results will contain neighbor information for all + // configured LLDP instances. + // + // x-constraint: + // - /components/schemas/Lldp/properties/name + LldpNames []string `protobuf:"bytes,1,rep,name=lldp_names,json=lldpNames,proto3" json:"lldp_names,omitempty"` + // Specify the neighbors for which information will be returned. If empty or missing + // then information for all neighbors will be returned. + NeighborIdFilters []string `protobuf:"bytes,2,rep,name=neighbor_id_filters,json=neighborIdFilters,proto3" json:"neighbor_id_filters,omitempty"` } -func (x *PatternFlowIpv4PriorityRaw) Reset() { - *x = PatternFlowIpv4PriorityRaw{} +func (x *LldpNeighborsStateRequest) Reset() { + *x = LldpNeighborsStateRequest{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[405] + mi := &file_otg_proto_msgTypes[369] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowIpv4PriorityRaw) String() string { +func (x *LldpNeighborsStateRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowIpv4PriorityRaw) ProtoMessage() {} +func (*LldpNeighborsStateRequest) ProtoMessage() {} -func (x *PatternFlowIpv4PriorityRaw) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[405] +func (x *LldpNeighborsStateRequest) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[369] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -52775,161 +51980,101 @@ func (x *PatternFlowIpv4PriorityRaw) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use PatternFlowIpv4PriorityRaw.ProtoReflect.Descriptor instead. -func (*PatternFlowIpv4PriorityRaw) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{405} -} - -func (x *PatternFlowIpv4PriorityRaw) GetChoice() PatternFlowIpv4PriorityRaw_Choice_Enum { - if x != nil && x.Choice != nil { - return *x.Choice - } - return PatternFlowIpv4PriorityRaw_Choice_unspecified -} - -func (x *PatternFlowIpv4PriorityRaw) GetValue() uint32 { - if x != nil && x.Value != nil { - return *x.Value - } - return 0 -} - -func (x *PatternFlowIpv4PriorityRaw) GetValues() []uint32 { - if x != nil { - return x.Values - } - return nil -} - -func (x *PatternFlowIpv4PriorityRaw) GetIncrement() *PatternFlowIpv4PriorityRawCounter { - if x != nil { - return x.Increment - } - return nil +// Deprecated: Use LldpNeighborsStateRequest.ProtoReflect.Descriptor instead. +func (*LldpNeighborsStateRequest) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{369} } -func (x *PatternFlowIpv4PriorityRaw) GetDecrement() *PatternFlowIpv4PriorityRawCounter { +func (x *LldpNeighborsStateRequest) GetLldpNames() []string { if x != nil { - return x.Decrement + return x.LldpNames } return nil } -func (x *PatternFlowIpv4PriorityRaw) GetMetricTags() []*PatternFlowIpv4PriorityRawMetricTag { +func (x *LldpNeighborsStateRequest) GetNeighborIdFilters() []string { if x != nil { - return x.MetricTags + return x.NeighborIdFilters } return nil } -// integer counter pattern -type PatternFlowIpv4DscpPhbCounter struct { +// LLDP neighbor information. +type LldpNeighborsState struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Description missing in models - // default = 0 - Start *uint32 `protobuf:"varint,1,opt,name=start,proto3,oneof" json:"start,omitempty"` - // Description missing in models - // default = 1 - Step *uint32 `protobuf:"varint,2,opt,name=step,proto3,oneof" json:"step,omitempty"` - // Description missing in models - // default = 1 - Count *uint32 `protobuf:"varint,3,opt,name=count,proto3,oneof" json:"count,omitempty"` -} - -func (x *PatternFlowIpv4DscpPhbCounter) Reset() { - *x = PatternFlowIpv4DscpPhbCounter{} - if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[406] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *PatternFlowIpv4DscpPhbCounter) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*PatternFlowIpv4DscpPhbCounter) ProtoMessage() {} - -func (x *PatternFlowIpv4DscpPhbCounter) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[406] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use PatternFlowIpv4DscpPhbCounter.ProtoReflect.Descriptor instead. -func (*PatternFlowIpv4DscpPhbCounter) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{406} -} - -func (x *PatternFlowIpv4DscpPhbCounter) GetStart() uint32 { - if x != nil && x.Start != nil { - return *x.Start - } - return 0 -} - -func (x *PatternFlowIpv4DscpPhbCounter) GetStep() uint32 { - if x != nil && x.Step != nil { - return *x.Step - } - return 0 -} - -func (x *PatternFlowIpv4DscpPhbCounter) GetCount() uint32 { - if x != nil && x.Count != nil { - return *x.Count - } - return 0 -} - -// Metric tag can be used to enable tracking portion of or all bits in a corresponding -// header field for metrics per each applicable value. These would appear as tagged -// metrics in corresponding flow metrics. -type PatternFlowIpv4DscpPhbMetricTag struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // Name used to identify the metrics associated with the values applicable for configured - // offset and length inside corresponding header field - // required = true - Name *string `protobuf:"bytes,1,opt,name=name,proto3,oneof" json:"name,omitempty"` - // Offset in bits relative to start of corresponding header field - // default = 0 - Offset *uint32 `protobuf:"varint,2,opt,name=offset,proto3,oneof" json:"offset,omitempty"` - // Number of bits to track for metrics starting from configured offset of corresponding - // header field - // default = 6 - Length *uint32 `protobuf:"varint,3,opt,name=length,proto3,oneof" json:"length,omitempty"` + // The name of the LLDP instance. + LldpName *string `protobuf:"bytes,1,opt,name=lldp_name,json=lldpName,proto3,oneof" json:"lldp_name,omitempty"` + // The system name field shall contain an alpha-numeric string that indicates the system's + // administratively assigned name. The system name should be the system's fully qualified + // domain name. If implementations support IETF RFC 3418, the sysName object should + // be used for this field. + SystemName *string `protobuf:"bytes,2,opt,name=system_name,json=systemName,proto3,oneof" json:"system_name,omitempty"` + // The system description field shall contain an alpha-numeric string that is the textual + // description of the network entity. The system description should include the full + // name and version identification of the system's hardware type, software operating + // system, and networking software. If implementations support IETF RFC 3418, the sysDescr + // object should be used for this field. + SystemDescription *string `protobuf:"bytes,3,opt,name=system_description,json=systemDescription,proto3,oneof" json:"system_description,omitempty"` + // The Chassis ID is a mandatory TLV which identifies the chassis component of the + // endpoint identifier associated with the transmitting LLDP agent. + ChassisId *string `protobuf:"bytes,4,opt,name=chassis_id,json=chassisId,proto3,oneof" json:"chassis_id,omitempty"` + // This field identifies the format and source of the chassis identifier string. It + // is an enumerator defined by the LldpChassisIdSubtype object from IEEE 802.1AB MIB. + ChassisIdType *LldpNeighborsState_ChassisIdType_Enum `protobuf:"varint,5,opt,name=chassis_id_type,json=chassisIdType,proto3,enum=otg.LldpNeighborsState_ChassisIdType_Enum,oneof" json:"chassis_id_type,omitempty"` + // System generated identifier for the neighbor on the LLDP instance. + NeighborId *string `protobuf:"bytes,6,opt,name=neighbor_id,json=neighborId,proto3,oneof" json:"neighbor_id,omitempty"` + // Age since discovery in seconds. + Age *uint32 `protobuf:"varint,7,opt,name=age,proto3,oneof" json:"age,omitempty"` + // Seconds since last update received. + LastUpdate *uint32 `protobuf:"varint,8,opt,name=last_update,json=lastUpdate,proto3,oneof" json:"last_update,omitempty"` + // The time-to-live (TTL) in seconds is a mandatory TLV which indicates how long information + // from the neighbor should be considered valid. + Ttl *uint32 `protobuf:"varint,9,opt,name=ttl,proto3,oneof" json:"ttl,omitempty"` + // The Port ID is a mandatory TLV which identifies the port component of the endpoint + // identifier associated with the transmitting LLDP agent. If the specified port is + // an IEEE 802.3 Repeater port, then this TLV is optional. + PortId *string `protobuf:"bytes,10,opt,name=port_id,json=portId,proto3,oneof" json:"port_id,omitempty"` + // This field identifies the format and source of the port identifier string. It is + // an enumerator defined by the PtopoPortIdType object from RFC2922. + PortIdType *LldpNeighborsState_PortIdType_Enum `protobuf:"varint,11,opt,name=port_id_type,json=portIdType,proto3,enum=otg.LldpNeighborsState_PortIdType_Enum,oneof" json:"port_id_type,omitempty"` + // The binary string containing the actual port identifier for the port which this LLDP + // PDU was transmitted. The source and format of this field is defined by PtopoPortId + // from RFC2922. + PortDescription *string `protobuf:"bytes,12,opt,name=port_description,json=portDescription,proto3,oneof" json:"port_description,omitempty"` + // The Management Address is a mandatory TLV which identifies a network address associated + // with the local LLDP agent, which can be used to reach the agent on the port identified + // in the Port ID TLV. + ManagementAddress *string `protobuf:"bytes,13,opt,name=management_address,json=managementAddress,proto3,oneof" json:"management_address,omitempty"` + // The enumerated value for the network address type identified in this TLV. This enumeration + // is defined in the 'Assigned Numbers' RFC [RFC3232] and the ianaAddressFamilyNumbers + // object. + ManagementAddressType *string `protobuf:"bytes,14,opt,name=management_address_type,json=managementAddressType,proto3,oneof" json:"management_address_type,omitempty"` + // Description missing in models + CustomTlvs []*LldpCustomTLVState `protobuf:"bytes,15,rep,name=custom_tlvs,json=customTlvs,proto3" json:"custom_tlvs,omitempty"` + // Description missing in models + Capabilities []*LldpCapabilityState `protobuf:"bytes,16,rep,name=capabilities,proto3" json:"capabilities,omitempty"` } -func (x *PatternFlowIpv4DscpPhbMetricTag) Reset() { - *x = PatternFlowIpv4DscpPhbMetricTag{} +func (x *LldpNeighborsState) Reset() { + *x = LldpNeighborsState{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[407] + mi := &file_otg_proto_msgTypes[370] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowIpv4DscpPhbMetricTag) String() string { +func (x *LldpNeighborsState) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowIpv4DscpPhbMetricTag) ProtoMessage() {} +func (*LldpNeighborsState) ProtoMessage() {} -func (x *PatternFlowIpv4DscpPhbMetricTag) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[407] +func (x *LldpNeighborsState) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[370] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -52940,165 +52085,159 @@ func (x *PatternFlowIpv4DscpPhbMetricTag) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use PatternFlowIpv4DscpPhbMetricTag.ProtoReflect.Descriptor instead. -func (*PatternFlowIpv4DscpPhbMetricTag) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{407} +// Deprecated: Use LldpNeighborsState.ProtoReflect.Descriptor instead. +func (*LldpNeighborsState) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{370} } -func (x *PatternFlowIpv4DscpPhbMetricTag) GetName() string { - if x != nil && x.Name != nil { - return *x.Name +func (x *LldpNeighborsState) GetLldpName() string { + if x != nil && x.LldpName != nil { + return *x.LldpName } return "" } -func (x *PatternFlowIpv4DscpPhbMetricTag) GetOffset() uint32 { - if x != nil && x.Offset != nil { - return *x.Offset +func (x *LldpNeighborsState) GetSystemName() string { + if x != nil && x.SystemName != nil { + return *x.SystemName } - return 0 + return "" } -func (x *PatternFlowIpv4DscpPhbMetricTag) GetLength() uint32 { - if x != nil && x.Length != nil { - return *x.Length +func (x *LldpNeighborsState) GetSystemDescription() string { + if x != nil && x.SystemDescription != nil { + return *x.SystemDescription } - return 0 + return "" } -// Per hop behavior -type PatternFlowIpv4DscpPhb struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields +func (x *LldpNeighborsState) GetChassisId() string { + if x != nil && x.ChassisId != nil { + return *x.ChassisId + } + return "" +} - // Description missing in models - // default = Choice.Enum.value - Choice *PatternFlowIpv4DscpPhb_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.PatternFlowIpv4DscpPhb_Choice_Enum,oneof" json:"choice,omitempty"` - // Description missing in models - // default = 0 - Value *uint32 `protobuf:"varint,2,opt,name=value,proto3,oneof" json:"value,omitempty"` - // Description missing in models - // default = [0] - Values []uint32 `protobuf:"varint,3,rep,packed,name=values,proto3" json:"values,omitempty"` - // Description missing in models - Increment *PatternFlowIpv4DscpPhbCounter `protobuf:"bytes,5,opt,name=increment,proto3" json:"increment,omitempty"` - // Description missing in models - Decrement *PatternFlowIpv4DscpPhbCounter `protobuf:"bytes,6,opt,name=decrement,proto3" json:"decrement,omitempty"` - // One or more metric tags can be used to enable tracking portion of or all bits in - // a corresponding header field for metrics per each applicable value. These would appear - // as tagged metrics in corresponding flow metrics. - MetricTags []*PatternFlowIpv4DscpPhbMetricTag `protobuf:"bytes,7,rep,name=metric_tags,json=metricTags,proto3" json:"metric_tags,omitempty"` +func (x *LldpNeighborsState) GetChassisIdType() LldpNeighborsState_ChassisIdType_Enum { + if x != nil && x.ChassisIdType != nil { + return *x.ChassisIdType + } + return LldpNeighborsState_ChassisIdType_unspecified } -func (x *PatternFlowIpv4DscpPhb) Reset() { - *x = PatternFlowIpv4DscpPhb{} - if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[408] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) +func (x *LldpNeighborsState) GetNeighborId() string { + if x != nil && x.NeighborId != nil { + return *x.NeighborId } + return "" } -func (x *PatternFlowIpv4DscpPhb) String() string { - return protoimpl.X.MessageStringOf(x) +func (x *LldpNeighborsState) GetAge() uint32 { + if x != nil && x.Age != nil { + return *x.Age + } + return 0 } -func (*PatternFlowIpv4DscpPhb) ProtoMessage() {} +func (x *LldpNeighborsState) GetLastUpdate() uint32 { + if x != nil && x.LastUpdate != nil { + return *x.LastUpdate + } + return 0 +} -func (x *PatternFlowIpv4DscpPhb) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[408] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms +func (x *LldpNeighborsState) GetTtl() uint32 { + if x != nil && x.Ttl != nil { + return *x.Ttl } - return mi.MessageOf(x) + return 0 } -// Deprecated: Use PatternFlowIpv4DscpPhb.ProtoReflect.Descriptor instead. -func (*PatternFlowIpv4DscpPhb) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{408} +func (x *LldpNeighborsState) GetPortId() string { + if x != nil && x.PortId != nil { + return *x.PortId + } + return "" } -func (x *PatternFlowIpv4DscpPhb) GetChoice() PatternFlowIpv4DscpPhb_Choice_Enum { - if x != nil && x.Choice != nil { - return *x.Choice +func (x *LldpNeighborsState) GetPortIdType() LldpNeighborsState_PortIdType_Enum { + if x != nil && x.PortIdType != nil { + return *x.PortIdType } - return PatternFlowIpv4DscpPhb_Choice_unspecified + return LldpNeighborsState_PortIdType_unspecified } -func (x *PatternFlowIpv4DscpPhb) GetValue() uint32 { - if x != nil && x.Value != nil { - return *x.Value +func (x *LldpNeighborsState) GetPortDescription() string { + if x != nil && x.PortDescription != nil { + return *x.PortDescription } - return 0 + return "" } -func (x *PatternFlowIpv4DscpPhb) GetValues() []uint32 { - if x != nil { - return x.Values +func (x *LldpNeighborsState) GetManagementAddress() string { + if x != nil && x.ManagementAddress != nil { + return *x.ManagementAddress } - return nil + return "" } -func (x *PatternFlowIpv4DscpPhb) GetIncrement() *PatternFlowIpv4DscpPhbCounter { - if x != nil { - return x.Increment +func (x *LldpNeighborsState) GetManagementAddressType() string { + if x != nil && x.ManagementAddressType != nil { + return *x.ManagementAddressType } - return nil + return "" } -func (x *PatternFlowIpv4DscpPhb) GetDecrement() *PatternFlowIpv4DscpPhbCounter { +func (x *LldpNeighborsState) GetCustomTlvs() []*LldpCustomTLVState { if x != nil { - return x.Decrement + return x.CustomTlvs } return nil } -func (x *PatternFlowIpv4DscpPhb) GetMetricTags() []*PatternFlowIpv4DscpPhbMetricTag { +func (x *LldpNeighborsState) GetCapabilities() []*LldpCapabilityState { if x != nil { - return x.MetricTags + return x.Capabilities } return nil } -// integer counter pattern -type PatternFlowIpv4DscpEcnCounter struct { +// Custom TLV received from a neighbor.Custom TLVs are organization specific TLVs advertised +// with TLV type 127. +type LldpCustomTLVState struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Description missing in models - // default = 0 - Start *uint32 `protobuf:"varint,1,opt,name=start,proto3,oneof" json:"start,omitempty"` - // Description missing in models - // default = 1 - Step *uint32 `protobuf:"varint,2,opt,name=step,proto3,oneof" json:"step,omitempty"` - // Description missing in models - // default = 1 - Count *uint32 `protobuf:"varint,3,opt,name=count,proto3,oneof" json:"count,omitempty"` + // The integer value identifying the type of information contained in the value field. + CustomType *uint32 `protobuf:"varint,1,opt,name=custom_type,json=customType,proto3,oneof" json:"custom_type,omitempty"` + // The organizationally unique identifier field shall contain the organization's OUI + // as defined in Clause 9 of IEEE Std 802. The high-order octet is 0 and the low-order + // 3 octets are the SMI Network Management Private Enterprise Code of the Vendor in + // network byte order, as defined in the 'Assigned Numbers' RFC [RFC3232]. + Oui *string `protobuf:"bytes,2,opt,name=oui,proto3,oneof" json:"oui,omitempty"` + // The organizationally defined subtype field shall contain a unique subtype value assigned + // by the defining organization. + OuiSubtype *string `protobuf:"bytes,3,opt,name=oui_subtype,json=ouiSubtype,proto3,oneof" json:"oui_subtype,omitempty"` } -func (x *PatternFlowIpv4DscpEcnCounter) Reset() { - *x = PatternFlowIpv4DscpEcnCounter{} +func (x *LldpCustomTLVState) Reset() { + *x = LldpCustomTLVState{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[409] + mi := &file_otg_proto_msgTypes[371] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowIpv4DscpEcnCounter) String() string { +func (x *LldpCustomTLVState) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowIpv4DscpEcnCounter) ProtoMessage() {} +func (*LldpCustomTLVState) ProtoMessage() {} -func (x *PatternFlowIpv4DscpEcnCounter) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[409] +func (x *LldpCustomTLVState) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[371] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -53109,70 +52248,63 @@ func (x *PatternFlowIpv4DscpEcnCounter) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use PatternFlowIpv4DscpEcnCounter.ProtoReflect.Descriptor instead. -func (*PatternFlowIpv4DscpEcnCounter) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{409} +// Deprecated: Use LldpCustomTLVState.ProtoReflect.Descriptor instead. +func (*LldpCustomTLVState) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{371} } -func (x *PatternFlowIpv4DscpEcnCounter) GetStart() uint32 { - if x != nil && x.Start != nil { - return *x.Start +func (x *LldpCustomTLVState) GetCustomType() uint32 { + if x != nil && x.CustomType != nil { + return *x.CustomType } return 0 } -func (x *PatternFlowIpv4DscpEcnCounter) GetStep() uint32 { - if x != nil && x.Step != nil { - return *x.Step +func (x *LldpCustomTLVState) GetOui() string { + if x != nil && x.Oui != nil { + return *x.Oui } - return 0 + return "" } -func (x *PatternFlowIpv4DscpEcnCounter) GetCount() uint32 { - if x != nil && x.Count != nil { - return *x.Count +func (x *LldpCustomTLVState) GetOuiSubtype() string { + if x != nil && x.OuiSubtype != nil { + return *x.OuiSubtype } - return 0 + return "" } -// Metric tag can be used to enable tracking portion of or all bits in a corresponding -// header field for metrics per each applicable value. These would appear as tagged -// metrics in corresponding flow metrics. -type PatternFlowIpv4DscpEcnMetricTag struct { +// LLDP system capability advertised by the neighbor +type LldpCapabilityState struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Name used to identify the metrics associated with the values applicable for configured - // offset and length inside corresponding header field - // required = true - Name *string `protobuf:"bytes,1,opt,name=name,proto3,oneof" json:"name,omitempty"` - // Offset in bits relative to start of corresponding header field - // default = 0 - Offset *uint32 `protobuf:"varint,2,opt,name=offset,proto3,oneof" json:"offset,omitempty"` - // Number of bits to track for metrics starting from configured offset of corresponding - // header field - // default = 2 - Length *uint32 `protobuf:"varint,3,opt,name=length,proto3,oneof" json:"length,omitempty"` + // Name of the system capability advertised by the neighbor. Capabilities are represented + // in a bitmap that defines the primary functions of the system. The capabilities are + // defined in IEEE 802.1AB. + CapabilityName *LldpCapabilityState_CapabilityName_Enum `protobuf:"varint,1,opt,name=capability_name,json=capabilityName,proto3,enum=otg.LldpCapabilityState_CapabilityName_Enum,oneof" json:"capability_name,omitempty"` + // Indicates whether the corresponding system capability is enabled on the neighbor. + CapabilityEnabled *bool `protobuf:"varint,2,opt,name=capability_enabled,json=capabilityEnabled,proto3,oneof" json:"capability_enabled,omitempty"` } -func (x *PatternFlowIpv4DscpEcnMetricTag) Reset() { - *x = PatternFlowIpv4DscpEcnMetricTag{} +func (x *LldpCapabilityState) Reset() { + *x = LldpCapabilityState{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[410] + mi := &file_otg_proto_msgTypes[372] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowIpv4DscpEcnMetricTag) String() string { +func (x *LldpCapabilityState) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowIpv4DscpEcnMetricTag) ProtoMessage() {} +func (*LldpCapabilityState) ProtoMessage() {} -func (x *PatternFlowIpv4DscpEcnMetricTag) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[410] +func (x *LldpCapabilityState) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[372] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -53183,74 +52315,57 @@ func (x *PatternFlowIpv4DscpEcnMetricTag) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use PatternFlowIpv4DscpEcnMetricTag.ProtoReflect.Descriptor instead. -func (*PatternFlowIpv4DscpEcnMetricTag) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{410} -} - -func (x *PatternFlowIpv4DscpEcnMetricTag) GetName() string { - if x != nil && x.Name != nil { - return *x.Name - } - return "" +// Deprecated: Use LldpCapabilityState.ProtoReflect.Descriptor instead. +func (*LldpCapabilityState) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{372} } -func (x *PatternFlowIpv4DscpEcnMetricTag) GetOffset() uint32 { - if x != nil && x.Offset != nil { - return *x.Offset +func (x *LldpCapabilityState) GetCapabilityName() LldpCapabilityState_CapabilityName_Enum { + if x != nil && x.CapabilityName != nil { + return *x.CapabilityName } - return 0 + return LldpCapabilityState_CapabilityName_unspecified } -func (x *PatternFlowIpv4DscpEcnMetricTag) GetLength() uint32 { - if x != nil && x.Length != nil { - return *x.Length +func (x *LldpCapabilityState) GetCapabilityEnabled() bool { + if x != nil && x.CapabilityEnabled != nil { + return *x.CapabilityEnabled } - return 0 + return false } -// Explicit congestion notification -type PatternFlowIpv4DscpEcn struct { +// The request to retrieve RSVP Label Switched Path (LSP) information learned by the +// router. +type RsvpLspsStateRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Description missing in models - // default = Choice.Enum.value - Choice *PatternFlowIpv4DscpEcn_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.PatternFlowIpv4DscpEcn_Choice_Enum,oneof" json:"choice,omitempty"` - // Description missing in models - // default = 0 - Value *uint32 `protobuf:"varint,2,opt,name=value,proto3,oneof" json:"value,omitempty"` - // Description missing in models - // default = [0] - Values []uint32 `protobuf:"varint,3,rep,packed,name=values,proto3" json:"values,omitempty"` - // Description missing in models - Increment *PatternFlowIpv4DscpEcnCounter `protobuf:"bytes,5,opt,name=increment,proto3" json:"increment,omitempty"` - // Description missing in models - Decrement *PatternFlowIpv4DscpEcnCounter `protobuf:"bytes,6,opt,name=decrement,proto3" json:"decrement,omitempty"` - // One or more metric tags can be used to enable tracking portion of or all bits in - // a corresponding header field for metrics per each applicable value. These would appear - // as tagged metrics in corresponding flow metrics. - MetricTags []*PatternFlowIpv4DscpEcnMetricTag `protobuf:"bytes,7,rep,name=metric_tags,json=metricTags,proto3" json:"metric_tags,omitempty"` + // The names of RSVP-TE routers for which learned information is requested. An empty + // list will return results for all RSVP=TE routers. + // + // x-constraint: + // - /components/schemas/Device.Rsvp/properties/name + RsvpRouterNames []string `protobuf:"bytes,1,rep,name=rsvp_router_names,json=rsvpRouterNames,proto3" json:"rsvp_router_names,omitempty"` } -func (x *PatternFlowIpv4DscpEcn) Reset() { - *x = PatternFlowIpv4DscpEcn{} +func (x *RsvpLspsStateRequest) Reset() { + *x = RsvpLspsStateRequest{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[411] + mi := &file_otg_proto_msgTypes[373] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowIpv4DscpEcn) String() string { +func (x *RsvpLspsStateRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowIpv4DscpEcn) ProtoMessage() {} +func (*RsvpLspsStateRequest) ProtoMessage() {} -func (x *PatternFlowIpv4DscpEcn) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[411] +func (x *RsvpLspsStateRequest) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[373] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -53261,87 +52376,47 @@ func (x *PatternFlowIpv4DscpEcn) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use PatternFlowIpv4DscpEcn.ProtoReflect.Descriptor instead. -func (*PatternFlowIpv4DscpEcn) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{411} -} - -func (x *PatternFlowIpv4DscpEcn) GetChoice() PatternFlowIpv4DscpEcn_Choice_Enum { - if x != nil && x.Choice != nil { - return *x.Choice - } - return PatternFlowIpv4DscpEcn_Choice_unspecified -} - -func (x *PatternFlowIpv4DscpEcn) GetValue() uint32 { - if x != nil && x.Value != nil { - return *x.Value - } - return 0 -} - -func (x *PatternFlowIpv4DscpEcn) GetValues() []uint32 { - if x != nil { - return x.Values - } - return nil -} - -func (x *PatternFlowIpv4DscpEcn) GetIncrement() *PatternFlowIpv4DscpEcnCounter { - if x != nil { - return x.Increment - } - return nil -} - -func (x *PatternFlowIpv4DscpEcn) GetDecrement() *PatternFlowIpv4DscpEcnCounter { - if x != nil { - return x.Decrement - } - return nil +// Deprecated: Use RsvpLspsStateRequest.ProtoReflect.Descriptor instead. +func (*RsvpLspsStateRequest) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{373} } -func (x *PatternFlowIpv4DscpEcn) GetMetricTags() []*PatternFlowIpv4DscpEcnMetricTag { +func (x *RsvpLspsStateRequest) GetRsvpRouterNames() []string { if x != nil { - return x.MetricTags + return x.RsvpRouterNames } return nil } -// integer counter pattern -type PatternFlowIpv4TosPrecedenceCounter struct { +// Discovered IPv4 Point-to-Point LSPs of a RSVP-TE router. +type RsvpLspsState struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Description missing in models - // default = 0 - Start *uint32 `protobuf:"varint,1,opt,name=start,proto3,oneof" json:"start,omitempty"` - // Description missing in models - // default = 1 - Step *uint32 `protobuf:"varint,2,opt,name=step,proto3,oneof" json:"step,omitempty"` - // Description missing in models - // default = 1 - Count *uint32 `protobuf:"varint,3,opt,name=count,proto3,oneof" json:"count,omitempty"` + // The name of the RSVP-TE Router. + RsvpRouterName *string `protobuf:"bytes,1,opt,name=rsvp_router_name,json=rsvpRouterName,proto3,oneof" json:"rsvp_router_name,omitempty"` + // IPv4 Point-to-Point RSVP-TE Discovered LSPs. + Ipv4Lsps []*RsvpIPv4LspState `protobuf:"bytes,2,rep,name=ipv4_lsps,json=ipv4Lsps,proto3" json:"ipv4_lsps,omitempty"` } -func (x *PatternFlowIpv4TosPrecedenceCounter) Reset() { - *x = PatternFlowIpv4TosPrecedenceCounter{} +func (x *RsvpLspsState) Reset() { + *x = RsvpLspsState{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[412] + mi := &file_otg_proto_msgTypes[374] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowIpv4TosPrecedenceCounter) String() string { +func (x *RsvpLspsState) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowIpv4TosPrecedenceCounter) ProtoMessage() {} +func (*RsvpLspsState) ProtoMessage() {} -func (x *PatternFlowIpv4TosPrecedenceCounter) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[412] +func (x *RsvpLspsState) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[374] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -53352,70 +52427,60 @@ func (x *PatternFlowIpv4TosPrecedenceCounter) ProtoReflect() protoreflect.Messag return mi.MessageOf(x) } -// Deprecated: Use PatternFlowIpv4TosPrecedenceCounter.ProtoReflect.Descriptor instead. -func (*PatternFlowIpv4TosPrecedenceCounter) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{412} +// Deprecated: Use RsvpLspsState.ProtoReflect.Descriptor instead. +func (*RsvpLspsState) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{374} } -func (x *PatternFlowIpv4TosPrecedenceCounter) GetStart() uint32 { - if x != nil && x.Start != nil { - return *x.Start - } - return 0 -} - -func (x *PatternFlowIpv4TosPrecedenceCounter) GetStep() uint32 { - if x != nil && x.Step != nil { - return *x.Step +func (x *RsvpLspsState) GetRsvpRouterName() string { + if x != nil && x.RsvpRouterName != nil { + return *x.RsvpRouterName } - return 0 + return "" } -func (x *PatternFlowIpv4TosPrecedenceCounter) GetCount() uint32 { - if x != nil && x.Count != nil { - return *x.Count +func (x *RsvpLspsState) GetIpv4Lsps() []*RsvpIPv4LspState { + if x != nil { + return x.Ipv4Lsps } - return 0 + return nil } -// Metric tag can be used to enable tracking portion of or all bits in a corresponding -// header field for metrics per each applicable value. These would appear as tagged -// metrics in corresponding flow metrics. -type PatternFlowIpv4TosPrecedenceMetricTag struct { +// IPv4 RSVP-TE Discovered LSPs. +type RsvpIPv4LspState struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Name used to identify the metrics associated with the values applicable for configured - // offset and length inside corresponding header field - // required = true - Name *string `protobuf:"bytes,1,opt,name=name,proto3,oneof" json:"name,omitempty"` - // Offset in bits relative to start of corresponding header field - // default = 0 - Offset *uint32 `protobuf:"varint,2,opt,name=offset,proto3,oneof" json:"offset,omitempty"` - // Number of bits to track for metrics starting from configured offset of corresponding - // header field - // default = 3 - Length *uint32 `protobuf:"varint,3,opt,name=length,proto3,oneof" json:"length,omitempty"` + // The origin IPv4 address of RSVP session. + SourceAddress *string `protobuf:"bytes,1,opt,name=source_address,json=sourceAddress,proto3,oneof" json:"source_address,omitempty"` + // The IPv4 destination address of RSVP session. + DestinationAddress *string `protobuf:"bytes,2,opt,name=destination_address,json=destinationAddress,proto3,oneof" json:"destination_address,omitempty"` + // It refers to the RSVP LSP properties. + Lsp *RsvpLspState `protobuf:"bytes,3,opt,name=lsp,proto3" json:"lsp,omitempty"` + // It refers to RSVP RRO objects container. + Rros []*RsvpLspIpv4Rro `protobuf:"bytes,4,rep,name=rros,proto3" json:"rros,omitempty"` + // It refers to RSVP ERO objects container. + Eros []*RsvpLspIpv4Ero `protobuf:"bytes,5,rep,name=eros,proto3" json:"eros,omitempty"` } -func (x *PatternFlowIpv4TosPrecedenceMetricTag) Reset() { - *x = PatternFlowIpv4TosPrecedenceMetricTag{} +func (x *RsvpIPv4LspState) Reset() { + *x = RsvpIPv4LspState{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[413] + mi := &file_otg_proto_msgTypes[375] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowIpv4TosPrecedenceMetricTag) String() string { +func (x *RsvpIPv4LspState) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowIpv4TosPrecedenceMetricTag) ProtoMessage() {} +func (*RsvpIPv4LspState) ProtoMessage() {} -func (x *PatternFlowIpv4TosPrecedenceMetricTag) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[413] +func (x *RsvpIPv4LspState) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[375] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -53426,74 +52491,90 @@ func (x *PatternFlowIpv4TosPrecedenceMetricTag) ProtoReflect() protoreflect.Mess return mi.MessageOf(x) } -// Deprecated: Use PatternFlowIpv4TosPrecedenceMetricTag.ProtoReflect.Descriptor instead. -func (*PatternFlowIpv4TosPrecedenceMetricTag) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{413} +// Deprecated: Use RsvpIPv4LspState.ProtoReflect.Descriptor instead. +func (*RsvpIPv4LspState) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{375} } -func (x *PatternFlowIpv4TosPrecedenceMetricTag) GetName() string { - if x != nil && x.Name != nil { - return *x.Name +func (x *RsvpIPv4LspState) GetSourceAddress() string { + if x != nil && x.SourceAddress != nil { + return *x.SourceAddress } return "" } -func (x *PatternFlowIpv4TosPrecedenceMetricTag) GetOffset() uint32 { - if x != nil && x.Offset != nil { - return *x.Offset +func (x *RsvpIPv4LspState) GetDestinationAddress() string { + if x != nil && x.DestinationAddress != nil { + return *x.DestinationAddress } - return 0 + return "" } -func (x *PatternFlowIpv4TosPrecedenceMetricTag) GetLength() uint32 { - if x != nil && x.Length != nil { - return *x.Length +func (x *RsvpIPv4LspState) GetLsp() *RsvpLspState { + if x != nil { + return x.Lsp } - return 0 + return nil } -// Precedence -type PatternFlowIpv4TosPrecedence struct { +func (x *RsvpIPv4LspState) GetRros() []*RsvpLspIpv4Rro { + if x != nil { + return x.Rros + } + return nil +} + +func (x *RsvpIPv4LspState) GetEros() []*RsvpLspIpv4Ero { + if x != nil { + return x.Eros + } + return nil +} + +// IPv4 RSVP-TE Discovered LSPs. +type RsvpLspState struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Description missing in models - // default = Choice.Enum.value - Choice *PatternFlowIpv4TosPrecedence_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.PatternFlowIpv4TosPrecedence_Choice_Enum,oneof" json:"choice,omitempty"` - // Description missing in models - // default = 0 - Value *uint32 `protobuf:"varint,2,opt,name=value,proto3,oneof" json:"value,omitempty"` - // Description missing in models - // default = [0] - Values []uint32 `protobuf:"varint,3,rep,packed,name=values,proto3" json:"values,omitempty"` - // Description missing in models - Increment *PatternFlowIpv4TosPrecedenceCounter `protobuf:"bytes,5,opt,name=increment,proto3" json:"increment,omitempty"` - // Description missing in models - Decrement *PatternFlowIpv4TosPrecedenceCounter `protobuf:"bytes,6,opt,name=decrement,proto3" json:"decrement,omitempty"` - // One or more metric tags can be used to enable tracking portion of or all bits in - // a corresponding header field for metrics per each applicable value. These would appear - // as tagged metrics in corresponding flow metrics. - MetricTags []*PatternFlowIpv4TosPrecedenceMetricTag `protobuf:"bytes,7,rep,name=metric_tags,json=metricTags,proto3" json:"metric_tags,omitempty"` + // The tunnel id of RSVP session which acts as an identifier that remains constant over + // the life of the tunnel. + TunnelId *uint32 `protobuf:"varint,1,opt,name=tunnel_id,json=tunnelId,proto3,oneof" json:"tunnel_id,omitempty"` + // The lsp-id of RSVP session which acts as a differentiator for two lsps originating + // from the same headend, commonly used to distinguish RSVP sessions during make before + // break operations. + LspId *uint32 `protobuf:"varint,2,opt,name=lsp_id,json=lspId,proto3,oneof" json:"lsp_id,omitempty"` + // The value of RSVP-TE Session Name field of the Session Attribute object. + SessionName *string `protobuf:"bytes,3,opt,name=session_name,json=sessionName,proto3,oneof" json:"session_name,omitempty"` + // The label received by RSVP-TE ingress. + LabelIn *uint32 `protobuf:"varint,4,opt,name=label_in,json=labelIn,proto3,oneof" json:"label_in,omitempty"` + // The label assigned by RSVP-TE egress. + LabelOut *uint32 `protobuf:"varint,5,opt,name=label_out,json=labelOut,proto3,oneof" json:"label_out,omitempty"` + // Operational state of the RSVP LSP. + SessionStatus *RsvpLspState_SessionStatus_Enum `protobuf:"varint,6,opt,name=session_status,json=sessionStatus,proto3,enum=otg.RsvpLspState_SessionStatus_Enum,oneof" json:"session_status,omitempty"` + // The reason for the last flap of this RSVP session. + LastFlapReason *RsvpLspState_LastFlapReason_Enum `protobuf:"varint,7,opt,name=last_flap_reason,json=lastFlapReason,proto3,enum=otg.RsvpLspState_LastFlapReason_Enum,oneof" json:"last_flap_reason,omitempty"` + // The tunnel UP time in milli seconds. If the tunnel is DOWN the UP time will be zero. + UpTime *uint64 `protobuf:"varint,8,opt,name=up_time,json=upTime,proto3,oneof" json:"up_time,omitempty"` } -func (x *PatternFlowIpv4TosPrecedence) Reset() { - *x = PatternFlowIpv4TosPrecedence{} +func (x *RsvpLspState) Reset() { + *x = RsvpLspState{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[414] + mi := &file_otg_proto_msgTypes[376] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowIpv4TosPrecedence) String() string { +func (x *RsvpLspState) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowIpv4TosPrecedence) ProtoMessage() {} +func (*RsvpLspState) ProtoMessage() {} -func (x *PatternFlowIpv4TosPrecedence) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[414] +func (x *RsvpLspState) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[376] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -53504,87 +52585,104 @@ func (x *PatternFlowIpv4TosPrecedence) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use PatternFlowIpv4TosPrecedence.ProtoReflect.Descriptor instead. -func (*PatternFlowIpv4TosPrecedence) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{414} +// Deprecated: Use RsvpLspState.ProtoReflect.Descriptor instead. +func (*RsvpLspState) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{376} } -func (x *PatternFlowIpv4TosPrecedence) GetChoice() PatternFlowIpv4TosPrecedence_Choice_Enum { - if x != nil && x.Choice != nil { - return *x.Choice +func (x *RsvpLspState) GetTunnelId() uint32 { + if x != nil && x.TunnelId != nil { + return *x.TunnelId } - return PatternFlowIpv4TosPrecedence_Choice_unspecified + return 0 } -func (x *PatternFlowIpv4TosPrecedence) GetValue() uint32 { - if x != nil && x.Value != nil { - return *x.Value +func (x *RsvpLspState) GetLspId() uint32 { + if x != nil && x.LspId != nil { + return *x.LspId } return 0 } -func (x *PatternFlowIpv4TosPrecedence) GetValues() []uint32 { - if x != nil { - return x.Values +func (x *RsvpLspState) GetSessionName() string { + if x != nil && x.SessionName != nil { + return *x.SessionName } - return nil + return "" } -func (x *PatternFlowIpv4TosPrecedence) GetIncrement() *PatternFlowIpv4TosPrecedenceCounter { - if x != nil { - return x.Increment +func (x *RsvpLspState) GetLabelIn() uint32 { + if x != nil && x.LabelIn != nil { + return *x.LabelIn } - return nil + return 0 } -func (x *PatternFlowIpv4TosPrecedence) GetDecrement() *PatternFlowIpv4TosPrecedenceCounter { - if x != nil { - return x.Decrement +func (x *RsvpLspState) GetLabelOut() uint32 { + if x != nil && x.LabelOut != nil { + return *x.LabelOut } - return nil + return 0 } -func (x *PatternFlowIpv4TosPrecedence) GetMetricTags() []*PatternFlowIpv4TosPrecedenceMetricTag { - if x != nil { - return x.MetricTags +func (x *RsvpLspState) GetSessionStatus() RsvpLspState_SessionStatus_Enum { + if x != nil && x.SessionStatus != nil { + return *x.SessionStatus } - return nil + return RsvpLspState_SessionStatus_unspecified } -// integer counter pattern -type PatternFlowIpv4TosDelayCounter struct { +func (x *RsvpLspState) GetLastFlapReason() RsvpLspState_LastFlapReason_Enum { + if x != nil && x.LastFlapReason != nil { + return *x.LastFlapReason + } + return RsvpLspState_LastFlapReason_unspecified +} + +func (x *RsvpLspState) GetUpTime() uint64 { + if x != nil && x.UpTime != nil { + return *x.UpTime + } + return 0 +} + +// This contains the list of Record Route Object(RRO) objects associated with the traffic +// engineering tunnel. The Record Route Object(RRO) is used in RSVP-TE to record the +// route traversed by the LSP. The RRO might be present in both Path message and Resv +// message, the RRO stores the IP addresses of the routers that the traffic engineering +// tunnel traversed and also the label generated and distributed by the routers. The +// RROs in the Resv message mirrors that of the Path message, the only difference is +// that the RRO in a Resv message records the path information in the reverse direction. +type RsvpLspIpv4Rro struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Description missing in models - // default = 0 - Start *uint32 `protobuf:"varint,1,opt,name=start,proto3,oneof" json:"start,omitempty"` - // Description missing in models - // default = 1 - Step *uint32 `protobuf:"varint,2,opt,name=step,proto3,oneof" json:"step,omitempty"` - // Description missing in models - // default = 1 - Count *uint32 `protobuf:"varint,3,opt,name=count,proto3,oneof" json:"count,omitempty"` + // The IPv4 addresses of the routers that the traffic engineering tunnel traversed. + Address *string `protobuf:"bytes,1,opt,name=address,proto3,oneof" json:"address,omitempty"` + // Label reported for RRO hop. When the Label_Recording flag is set in the Session Attribute + // object, nodes doing route recording should include the Label Record subobject containing + // the reported label. + ReportedLabel *uint32 `protobuf:"varint,2,opt,name=reported_label,json=reportedLabel,proto3,oneof" json:"reported_label,omitempty"` } -func (x *PatternFlowIpv4TosDelayCounter) Reset() { - *x = PatternFlowIpv4TosDelayCounter{} +func (x *RsvpLspIpv4Rro) Reset() { + *x = RsvpLspIpv4Rro{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[415] + mi := &file_otg_proto_msgTypes[377] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowIpv4TosDelayCounter) String() string { +func (x *RsvpLspIpv4Rro) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowIpv4TosDelayCounter) ProtoMessage() {} +func (*RsvpLspIpv4Rro) ProtoMessage() {} -func (x *PatternFlowIpv4TosDelayCounter) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[415] +func (x *RsvpLspIpv4Rro) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[377] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -53595,70 +52693,60 @@ func (x *PatternFlowIpv4TosDelayCounter) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use PatternFlowIpv4TosDelayCounter.ProtoReflect.Descriptor instead. -func (*PatternFlowIpv4TosDelayCounter) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{415} -} - -func (x *PatternFlowIpv4TosDelayCounter) GetStart() uint32 { - if x != nil && x.Start != nil { - return *x.Start - } - return 0 +// Deprecated: Use RsvpLspIpv4Rro.ProtoReflect.Descriptor instead. +func (*RsvpLspIpv4Rro) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{377} } -func (x *PatternFlowIpv4TosDelayCounter) GetStep() uint32 { - if x != nil && x.Step != nil { - return *x.Step +func (x *RsvpLspIpv4Rro) GetAddress() string { + if x != nil && x.Address != nil { + return *x.Address } - return 0 + return "" } -func (x *PatternFlowIpv4TosDelayCounter) GetCount() uint32 { - if x != nil && x.Count != nil { - return *x.Count +func (x *RsvpLspIpv4Rro) GetReportedLabel() uint32 { + if x != nil && x.ReportedLabel != nil { + return *x.ReportedLabel } return 0 } -// Metric tag can be used to enable tracking portion of or all bits in a corresponding -// header field for metrics per each applicable value. These would appear as tagged -// metrics in corresponding flow metrics. -type PatternFlowIpv4TosDelayMetricTag struct { +// This contains the list of sub-objects included in the Explicit Route Object(ERO) +// object send in the PATH message from the ingress. These sub-objects contain the intermediate +// hops to be traversed by the LSP while being forwarded towards the egress endpoint. +type RsvpLspIpv4Ero struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Name used to identify the metrics associated with the values applicable for configured - // offset and length inside corresponding header field - // required = true - Name *string `protobuf:"bytes,1,opt,name=name,proto3,oneof" json:"name,omitempty"` - // Offset in bits relative to start of corresponding header field - // default = 0 - Offset *uint32 `protobuf:"varint,2,opt,name=offset,proto3,oneof" json:"offset,omitempty"` - // Number of bits to track for metrics starting from configured offset of corresponding - // header field - // default = 1 - Length *uint32 `protobuf:"varint,3,opt,name=length,proto3,oneof" json:"length,omitempty"` + // The IPv4 prefix indicated by the ERO. Specified only when the ERO hop is an IPv4 + // prefix. + Prefix *string `protobuf:"bytes,1,opt,name=prefix,proto3,oneof" json:"prefix,omitempty"` + // The autonomous system number indicated by the ERO. Specified only when the ERO hop + // is an 2 or 4-byte AS number. + Asn *uint32 `protobuf:"varint,2,opt,name=asn,proto3,oneof" json:"asn,omitempty"` + // The type indicated by the ERO. + Type *RsvpLspIpv4Ero_Type_Enum `protobuf:"varint,3,opt,name=type,proto3,enum=otg.RsvpLspIpv4Ero_Type_Enum,oneof" json:"type,omitempty"` } -func (x *PatternFlowIpv4TosDelayMetricTag) Reset() { - *x = PatternFlowIpv4TosDelayMetricTag{} +func (x *RsvpLspIpv4Ero) Reset() { + *x = RsvpLspIpv4Ero{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[416] + mi := &file_otg_proto_msgTypes[378] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowIpv4TosDelayMetricTag) String() string { +func (x *RsvpLspIpv4Ero) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowIpv4TosDelayMetricTag) ProtoMessage() {} +func (*RsvpLspIpv4Ero) ProtoMessage() {} -func (x *PatternFlowIpv4TosDelayMetricTag) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[416] +func (x *RsvpLspIpv4Ero) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[378] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -53669,74 +52757,65 @@ func (x *PatternFlowIpv4TosDelayMetricTag) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use PatternFlowIpv4TosDelayMetricTag.ProtoReflect.Descriptor instead. -func (*PatternFlowIpv4TosDelayMetricTag) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{416} +// Deprecated: Use RsvpLspIpv4Ero.ProtoReflect.Descriptor instead. +func (*RsvpLspIpv4Ero) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{378} } -func (x *PatternFlowIpv4TosDelayMetricTag) GetName() string { - if x != nil && x.Name != nil { - return *x.Name +func (x *RsvpLspIpv4Ero) GetPrefix() string { + if x != nil && x.Prefix != nil { + return *x.Prefix } return "" } -func (x *PatternFlowIpv4TosDelayMetricTag) GetOffset() uint32 { - if x != nil && x.Offset != nil { - return *x.Offset +func (x *RsvpLspIpv4Ero) GetAsn() uint32 { + if x != nil && x.Asn != nil { + return *x.Asn } return 0 } -func (x *PatternFlowIpv4TosDelayMetricTag) GetLength() uint32 { - if x != nil && x.Length != nil { - return *x.Length +func (x *RsvpLspIpv4Ero) GetType() RsvpLspIpv4Ero_Type_Enum { + if x != nil && x.Type != nil { + return *x.Type } - return 0 + return RsvpLspIpv4Ero_Type_unspecified } -// Delay -type PatternFlowIpv4TosDelay struct { +// The capture result request to the traffic generator. Stops the port capture on the +// port_name and returns the capture. +type CaptureRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Description missing in models - // default = Choice.Enum.value - Choice *PatternFlowIpv4TosDelay_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.PatternFlowIpv4TosDelay_Choice_Enum,oneof" json:"choice,omitempty"` - // Description missing in models - // default = 0 - Value *uint32 `protobuf:"varint,2,opt,name=value,proto3,oneof" json:"value,omitempty"` - // Description missing in models - // default = [0] - Values []uint32 `protobuf:"varint,3,rep,packed,name=values,proto3" json:"values,omitempty"` - // Description missing in models - Increment *PatternFlowIpv4TosDelayCounter `protobuf:"bytes,5,opt,name=increment,proto3" json:"increment,omitempty"` - // Description missing in models - Decrement *PatternFlowIpv4TosDelayCounter `protobuf:"bytes,6,opt,name=decrement,proto3" json:"decrement,omitempty"` - // One or more metric tags can be used to enable tracking portion of or all bits in - // a corresponding header field for metrics per each applicable value. These would appear - // as tagged metrics in corresponding flow metrics. - MetricTags []*PatternFlowIpv4TosDelayMetricTag `protobuf:"bytes,7,rep,name=metric_tags,json=metricTags,proto3" json:"metric_tags,omitempty"` + // The name of a port a capture is started on. + // + // x-constraint: + // - /components/schemas/Port/properties/name + // + // required = true + PortName *string `protobuf:"bytes,1,opt,name=port_name,json=portName,proto3,oneof" json:"port_name,omitempty"` } -func (x *PatternFlowIpv4TosDelay) Reset() { - *x = PatternFlowIpv4TosDelay{} +func (x *CaptureRequest) Reset() { + *x = CaptureRequest{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[417] + mi := &file_otg_proto_msgTypes[379] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowIpv4TosDelay) String() string { +func (x *CaptureRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowIpv4TosDelay) ProtoMessage() {} +func (*CaptureRequest) ProtoMessage() {} -func (x *PatternFlowIpv4TosDelay) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[417] +func (x *CaptureRequest) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[379] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -53747,87 +52826,52 @@ func (x *PatternFlowIpv4TosDelay) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use PatternFlowIpv4TosDelay.ProtoReflect.Descriptor instead. -func (*PatternFlowIpv4TosDelay) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{417} -} - -func (x *PatternFlowIpv4TosDelay) GetChoice() PatternFlowIpv4TosDelay_Choice_Enum { - if x != nil && x.Choice != nil { - return *x.Choice - } - return PatternFlowIpv4TosDelay_Choice_unspecified -} - -func (x *PatternFlowIpv4TosDelay) GetValue() uint32 { - if x != nil && x.Value != nil { - return *x.Value - } - return 0 -} - -func (x *PatternFlowIpv4TosDelay) GetValues() []uint32 { - if x != nil { - return x.Values - } - return nil -} - -func (x *PatternFlowIpv4TosDelay) GetIncrement() *PatternFlowIpv4TosDelayCounter { - if x != nil { - return x.Increment - } - return nil -} - -func (x *PatternFlowIpv4TosDelay) GetDecrement() *PatternFlowIpv4TosDelayCounter { - if x != nil { - return x.Decrement - } - return nil +// Deprecated: Use CaptureRequest.ProtoReflect.Descriptor instead. +func (*CaptureRequest) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{379} } -func (x *PatternFlowIpv4TosDelay) GetMetricTags() []*PatternFlowIpv4TosDelayMetricTag { - if x != nil { - return x.MetricTags +func (x *CaptureRequest) GetPortName() string { + if x != nil && x.PortName != nil { + return *x.PortName } - return nil + return "" } -// integer counter pattern -type PatternFlowIpv4TosThroughputCounter struct { +// mac counter pattern +type PatternFlowEthernetDstCounter struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // Description missing in models - // default = 0 - Start *uint32 `protobuf:"varint,1,opt,name=start,proto3,oneof" json:"start,omitempty"` + // default = 00:00:00:00:00:00 + Start *string `protobuf:"bytes,1,opt,name=start,proto3,oneof" json:"start,omitempty"` // Description missing in models - // default = 1 - Step *uint32 `protobuf:"varint,2,opt,name=step,proto3,oneof" json:"step,omitempty"` + // default = 00:00:00:00:00:01 + Step *string `protobuf:"bytes,2,opt,name=step,proto3,oneof" json:"step,omitempty"` // Description missing in models // default = 1 Count *uint32 `protobuf:"varint,3,opt,name=count,proto3,oneof" json:"count,omitempty"` } -func (x *PatternFlowIpv4TosThroughputCounter) Reset() { - *x = PatternFlowIpv4TosThroughputCounter{} +func (x *PatternFlowEthernetDstCounter) Reset() { + *x = PatternFlowEthernetDstCounter{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[418] + mi := &file_otg_proto_msgTypes[380] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowIpv4TosThroughputCounter) String() string { +func (x *PatternFlowEthernetDstCounter) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowIpv4TosThroughputCounter) ProtoMessage() {} +func (*PatternFlowEthernetDstCounter) ProtoMessage() {} -func (x *PatternFlowIpv4TosThroughputCounter) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[418] +func (x *PatternFlowEthernetDstCounter) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[380] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -53838,26 +52882,26 @@ func (x *PatternFlowIpv4TosThroughputCounter) ProtoReflect() protoreflect.Messag return mi.MessageOf(x) } -// Deprecated: Use PatternFlowIpv4TosThroughputCounter.ProtoReflect.Descriptor instead. -func (*PatternFlowIpv4TosThroughputCounter) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{418} +// Deprecated: Use PatternFlowEthernetDstCounter.ProtoReflect.Descriptor instead. +func (*PatternFlowEthernetDstCounter) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{380} } -func (x *PatternFlowIpv4TosThroughputCounter) GetStart() uint32 { +func (x *PatternFlowEthernetDstCounter) GetStart() string { if x != nil && x.Start != nil { return *x.Start } - return 0 + return "" } -func (x *PatternFlowIpv4TosThroughputCounter) GetStep() uint32 { +func (x *PatternFlowEthernetDstCounter) GetStep() string { if x != nil && x.Step != nil { return *x.Step } - return 0 + return "" } -func (x *PatternFlowIpv4TosThroughputCounter) GetCount() uint32 { +func (x *PatternFlowEthernetDstCounter) GetCount() uint32 { if x != nil && x.Count != nil { return *x.Count } @@ -53867,7 +52911,7 @@ func (x *PatternFlowIpv4TosThroughputCounter) GetCount() uint32 { // Metric tag can be used to enable tracking portion of or all bits in a corresponding // header field for metrics per each applicable value. These would appear as tagged // metrics in corresponding flow metrics. -type PatternFlowIpv4TosThroughputMetricTag struct { +type PatternFlowEthernetDstMetricTag struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields @@ -53881,27 +52925,27 @@ type PatternFlowIpv4TosThroughputMetricTag struct { Offset *uint32 `protobuf:"varint,2,opt,name=offset,proto3,oneof" json:"offset,omitempty"` // Number of bits to track for metrics starting from configured offset of corresponding // header field - // default = 1 + // default = 48 Length *uint32 `protobuf:"varint,3,opt,name=length,proto3,oneof" json:"length,omitempty"` } -func (x *PatternFlowIpv4TosThroughputMetricTag) Reset() { - *x = PatternFlowIpv4TosThroughputMetricTag{} +func (x *PatternFlowEthernetDstMetricTag) Reset() { + *x = PatternFlowEthernetDstMetricTag{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[419] + mi := &file_otg_proto_msgTypes[381] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowIpv4TosThroughputMetricTag) String() string { +func (x *PatternFlowEthernetDstMetricTag) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowIpv4TosThroughputMetricTag) ProtoMessage() {} +func (*PatternFlowEthernetDstMetricTag) ProtoMessage() {} -func (x *PatternFlowIpv4TosThroughputMetricTag) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[419] +func (x *PatternFlowEthernetDstMetricTag) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[381] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -53912,74 +52956,79 @@ func (x *PatternFlowIpv4TosThroughputMetricTag) ProtoReflect() protoreflect.Mess return mi.MessageOf(x) } -// Deprecated: Use PatternFlowIpv4TosThroughputMetricTag.ProtoReflect.Descriptor instead. -func (*PatternFlowIpv4TosThroughputMetricTag) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{419} -} - -func (x *PatternFlowIpv4TosThroughputMetricTag) GetName() string { +// Deprecated: Use PatternFlowEthernetDstMetricTag.ProtoReflect.Descriptor instead. +func (*PatternFlowEthernetDstMetricTag) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{381} +} + +func (x *PatternFlowEthernetDstMetricTag) GetName() string { if x != nil && x.Name != nil { return *x.Name } return "" } -func (x *PatternFlowIpv4TosThroughputMetricTag) GetOffset() uint32 { +func (x *PatternFlowEthernetDstMetricTag) GetOffset() uint32 { if x != nil && x.Offset != nil { return *x.Offset } return 0 } -func (x *PatternFlowIpv4TosThroughputMetricTag) GetLength() uint32 { +func (x *PatternFlowEthernetDstMetricTag) GetLength() uint32 { if x != nil && x.Length != nil { return *x.Length } return 0 } -// Throughput -type PatternFlowIpv4TosThroughput struct { +// Destination MAC address +type PatternFlowEthernetDst struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // Description missing in models - // default = Choice.Enum.value - Choice *PatternFlowIpv4TosThroughput_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.PatternFlowIpv4TosThroughput_Choice_Enum,oneof" json:"choice,omitempty"` + // default = Choice.Enum.auto + Choice *PatternFlowEthernetDst_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.PatternFlowEthernetDst_Choice_Enum,oneof" json:"choice,omitempty"` // Description missing in models - // default = 0 - Value *uint32 `protobuf:"varint,2,opt,name=value,proto3,oneof" json:"value,omitempty"` + // default = 00:00:00:00:00:00 + Value *string `protobuf:"bytes,2,opt,name=value,proto3,oneof" json:"value,omitempty"` // Description missing in models - // default = [0] - Values []uint32 `protobuf:"varint,3,rep,packed,name=values,proto3" json:"values,omitempty"` + // default = ['00:00:00:00:00:00'] + Values []string `protobuf:"bytes,3,rep,name=values,proto3" json:"values,omitempty"` + // The OTG implementation can provide a system generated + // value for this property. If the OTG is unable to generate a value + // the default value must be used. + // default = 00:00:00:00:00:00 + Auto *string `protobuf:"bytes,4,opt,name=auto,proto3,oneof" json:"auto,omitempty"` // Description missing in models - Increment *PatternFlowIpv4TosThroughputCounter `protobuf:"bytes,5,opt,name=increment,proto3" json:"increment,omitempty"` + Increment *PatternFlowEthernetDstCounter `protobuf:"bytes,6,opt,name=increment,proto3" json:"increment,omitempty"` // Description missing in models - Decrement *PatternFlowIpv4TosThroughputCounter `protobuf:"bytes,6,opt,name=decrement,proto3" json:"decrement,omitempty"` + Decrement *PatternFlowEthernetDstCounter `protobuf:"bytes,7,opt,name=decrement,proto3" json:"decrement,omitempty"` // One or more metric tags can be used to enable tracking portion of or all bits in // a corresponding header field for metrics per each applicable value. These would appear // as tagged metrics in corresponding flow metrics. - MetricTags []*PatternFlowIpv4TosThroughputMetricTag `protobuf:"bytes,7,rep,name=metric_tags,json=metricTags,proto3" json:"metric_tags,omitempty"` + MetricTags []*PatternFlowEthernetDstMetricTag `protobuf:"bytes,8,rep,name=metric_tags,json=metricTags,proto3" json:"metric_tags,omitempty"` } -func (x *PatternFlowIpv4TosThroughput) Reset() { - *x = PatternFlowIpv4TosThroughput{} +func (x *PatternFlowEthernetDst) Reset() { + *x = PatternFlowEthernetDst{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[420] + mi := &file_otg_proto_msgTypes[382] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowIpv4TosThroughput) String() string { +func (x *PatternFlowEthernetDst) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowIpv4TosThroughput) ProtoMessage() {} +func (*PatternFlowEthernetDst) ProtoMessage() {} -func (x *PatternFlowIpv4TosThroughput) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[420] +func (x *PatternFlowEthernetDst) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[382] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -53990,87 +53039,94 @@ func (x *PatternFlowIpv4TosThroughput) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use PatternFlowIpv4TosThroughput.ProtoReflect.Descriptor instead. -func (*PatternFlowIpv4TosThroughput) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{420} +// Deprecated: Use PatternFlowEthernetDst.ProtoReflect.Descriptor instead. +func (*PatternFlowEthernetDst) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{382} } -func (x *PatternFlowIpv4TosThroughput) GetChoice() PatternFlowIpv4TosThroughput_Choice_Enum { +func (x *PatternFlowEthernetDst) GetChoice() PatternFlowEthernetDst_Choice_Enum { if x != nil && x.Choice != nil { return *x.Choice } - return PatternFlowIpv4TosThroughput_Choice_unspecified + return PatternFlowEthernetDst_Choice_unspecified } -func (x *PatternFlowIpv4TosThroughput) GetValue() uint32 { +func (x *PatternFlowEthernetDst) GetValue() string { if x != nil && x.Value != nil { return *x.Value } - return 0 + return "" } -func (x *PatternFlowIpv4TosThroughput) GetValues() []uint32 { +func (x *PatternFlowEthernetDst) GetValues() []string { if x != nil { return x.Values } return nil } -func (x *PatternFlowIpv4TosThroughput) GetIncrement() *PatternFlowIpv4TosThroughputCounter { +func (x *PatternFlowEthernetDst) GetAuto() string { + if x != nil && x.Auto != nil { + return *x.Auto + } + return "" +} + +func (x *PatternFlowEthernetDst) GetIncrement() *PatternFlowEthernetDstCounter { if x != nil { return x.Increment } return nil } -func (x *PatternFlowIpv4TosThroughput) GetDecrement() *PatternFlowIpv4TosThroughputCounter { +func (x *PatternFlowEthernetDst) GetDecrement() *PatternFlowEthernetDstCounter { if x != nil { return x.Decrement } return nil } -func (x *PatternFlowIpv4TosThroughput) GetMetricTags() []*PatternFlowIpv4TosThroughputMetricTag { +func (x *PatternFlowEthernetDst) GetMetricTags() []*PatternFlowEthernetDstMetricTag { if x != nil { return x.MetricTags } return nil } -// integer counter pattern -type PatternFlowIpv4TosReliabilityCounter struct { +// mac counter pattern +type PatternFlowEthernetSrcCounter struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // Description missing in models - // default = 0 - Start *uint32 `protobuf:"varint,1,opt,name=start,proto3,oneof" json:"start,omitempty"` + // default = 00:00:00:00:00:00 + Start *string `protobuf:"bytes,1,opt,name=start,proto3,oneof" json:"start,omitempty"` // Description missing in models - // default = 1 - Step *uint32 `protobuf:"varint,2,opt,name=step,proto3,oneof" json:"step,omitempty"` + // default = 00:00:00:00:00:01 + Step *string `protobuf:"bytes,2,opt,name=step,proto3,oneof" json:"step,omitempty"` // Description missing in models // default = 1 Count *uint32 `protobuf:"varint,3,opt,name=count,proto3,oneof" json:"count,omitempty"` } -func (x *PatternFlowIpv4TosReliabilityCounter) Reset() { - *x = PatternFlowIpv4TosReliabilityCounter{} +func (x *PatternFlowEthernetSrcCounter) Reset() { + *x = PatternFlowEthernetSrcCounter{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[421] + mi := &file_otg_proto_msgTypes[383] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowIpv4TosReliabilityCounter) String() string { +func (x *PatternFlowEthernetSrcCounter) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowIpv4TosReliabilityCounter) ProtoMessage() {} +func (*PatternFlowEthernetSrcCounter) ProtoMessage() {} -func (x *PatternFlowIpv4TosReliabilityCounter) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[421] +func (x *PatternFlowEthernetSrcCounter) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[383] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -54081,26 +53137,26 @@ func (x *PatternFlowIpv4TosReliabilityCounter) ProtoReflect() protoreflect.Messa return mi.MessageOf(x) } -// Deprecated: Use PatternFlowIpv4TosReliabilityCounter.ProtoReflect.Descriptor instead. -func (*PatternFlowIpv4TosReliabilityCounter) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{421} +// Deprecated: Use PatternFlowEthernetSrcCounter.ProtoReflect.Descriptor instead. +func (*PatternFlowEthernetSrcCounter) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{383} } -func (x *PatternFlowIpv4TosReliabilityCounter) GetStart() uint32 { +func (x *PatternFlowEthernetSrcCounter) GetStart() string { if x != nil && x.Start != nil { return *x.Start } - return 0 + return "" } -func (x *PatternFlowIpv4TosReliabilityCounter) GetStep() uint32 { +func (x *PatternFlowEthernetSrcCounter) GetStep() string { if x != nil && x.Step != nil { return *x.Step } - return 0 + return "" } -func (x *PatternFlowIpv4TosReliabilityCounter) GetCount() uint32 { +func (x *PatternFlowEthernetSrcCounter) GetCount() uint32 { if x != nil && x.Count != nil { return *x.Count } @@ -54110,7 +53166,7 @@ func (x *PatternFlowIpv4TosReliabilityCounter) GetCount() uint32 { // Metric tag can be used to enable tracking portion of or all bits in a corresponding // header field for metrics per each applicable value. These would appear as tagged // metrics in corresponding flow metrics. -type PatternFlowIpv4TosReliabilityMetricTag struct { +type PatternFlowEthernetSrcMetricTag struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields @@ -54124,27 +53180,27 @@ type PatternFlowIpv4TosReliabilityMetricTag struct { Offset *uint32 `protobuf:"varint,2,opt,name=offset,proto3,oneof" json:"offset,omitempty"` // Number of bits to track for metrics starting from configured offset of corresponding // header field - // default = 1 + // default = 48 Length *uint32 `protobuf:"varint,3,opt,name=length,proto3,oneof" json:"length,omitempty"` } -func (x *PatternFlowIpv4TosReliabilityMetricTag) Reset() { - *x = PatternFlowIpv4TosReliabilityMetricTag{} +func (x *PatternFlowEthernetSrcMetricTag) Reset() { + *x = PatternFlowEthernetSrcMetricTag{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[422] + mi := &file_otg_proto_msgTypes[384] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowIpv4TosReliabilityMetricTag) String() string { +func (x *PatternFlowEthernetSrcMetricTag) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowIpv4TosReliabilityMetricTag) ProtoMessage() {} +func (*PatternFlowEthernetSrcMetricTag) ProtoMessage() {} -func (x *PatternFlowIpv4TosReliabilityMetricTag) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[422] +func (x *PatternFlowEthernetSrcMetricTag) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[384] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -54155,74 +53211,74 @@ func (x *PatternFlowIpv4TosReliabilityMetricTag) ProtoReflect() protoreflect.Mes return mi.MessageOf(x) } -// Deprecated: Use PatternFlowIpv4TosReliabilityMetricTag.ProtoReflect.Descriptor instead. -func (*PatternFlowIpv4TosReliabilityMetricTag) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{422} +// Deprecated: Use PatternFlowEthernetSrcMetricTag.ProtoReflect.Descriptor instead. +func (*PatternFlowEthernetSrcMetricTag) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{384} } -func (x *PatternFlowIpv4TosReliabilityMetricTag) GetName() string { +func (x *PatternFlowEthernetSrcMetricTag) GetName() string { if x != nil && x.Name != nil { return *x.Name } return "" } -func (x *PatternFlowIpv4TosReliabilityMetricTag) GetOffset() uint32 { +func (x *PatternFlowEthernetSrcMetricTag) GetOffset() uint32 { if x != nil && x.Offset != nil { return *x.Offset } return 0 } -func (x *PatternFlowIpv4TosReliabilityMetricTag) GetLength() uint32 { +func (x *PatternFlowEthernetSrcMetricTag) GetLength() uint32 { if x != nil && x.Length != nil { return *x.Length } return 0 } -// Reliability -type PatternFlowIpv4TosReliability struct { +// Source MAC address +type PatternFlowEthernetSrc struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // Description missing in models // default = Choice.Enum.value - Choice *PatternFlowIpv4TosReliability_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.PatternFlowIpv4TosReliability_Choice_Enum,oneof" json:"choice,omitempty"` + Choice *PatternFlowEthernetSrc_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.PatternFlowEthernetSrc_Choice_Enum,oneof" json:"choice,omitempty"` // Description missing in models - // default = 0 - Value *uint32 `protobuf:"varint,2,opt,name=value,proto3,oneof" json:"value,omitempty"` + // default = 00:00:00:00:00:00 + Value *string `protobuf:"bytes,2,opt,name=value,proto3,oneof" json:"value,omitempty"` // Description missing in models - // default = [0] - Values []uint32 `protobuf:"varint,3,rep,packed,name=values,proto3" json:"values,omitempty"` + // default = ['00:00:00:00:00:00'] + Values []string `protobuf:"bytes,3,rep,name=values,proto3" json:"values,omitempty"` // Description missing in models - Increment *PatternFlowIpv4TosReliabilityCounter `protobuf:"bytes,5,opt,name=increment,proto3" json:"increment,omitempty"` + Increment *PatternFlowEthernetSrcCounter `protobuf:"bytes,5,opt,name=increment,proto3" json:"increment,omitempty"` // Description missing in models - Decrement *PatternFlowIpv4TosReliabilityCounter `protobuf:"bytes,6,opt,name=decrement,proto3" json:"decrement,omitempty"` + Decrement *PatternFlowEthernetSrcCounter `protobuf:"bytes,6,opt,name=decrement,proto3" json:"decrement,omitempty"` // One or more metric tags can be used to enable tracking portion of or all bits in // a corresponding header field for metrics per each applicable value. These would appear // as tagged metrics in corresponding flow metrics. - MetricTags []*PatternFlowIpv4TosReliabilityMetricTag `protobuf:"bytes,7,rep,name=metric_tags,json=metricTags,proto3" json:"metric_tags,omitempty"` + MetricTags []*PatternFlowEthernetSrcMetricTag `protobuf:"bytes,7,rep,name=metric_tags,json=metricTags,proto3" json:"metric_tags,omitempty"` } -func (x *PatternFlowIpv4TosReliability) Reset() { - *x = PatternFlowIpv4TosReliability{} +func (x *PatternFlowEthernetSrc) Reset() { + *x = PatternFlowEthernetSrc{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[423] + mi := &file_otg_proto_msgTypes[385] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowIpv4TosReliability) String() string { +func (x *PatternFlowEthernetSrc) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowIpv4TosReliability) ProtoMessage() {} +func (*PatternFlowEthernetSrc) ProtoMessage() {} -func (x *PatternFlowIpv4TosReliability) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[423] +func (x *PatternFlowEthernetSrc) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[385] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -54233,47 +53289,47 @@ func (x *PatternFlowIpv4TosReliability) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use PatternFlowIpv4TosReliability.ProtoReflect.Descriptor instead. -func (*PatternFlowIpv4TosReliability) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{423} +// Deprecated: Use PatternFlowEthernetSrc.ProtoReflect.Descriptor instead. +func (*PatternFlowEthernetSrc) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{385} } -func (x *PatternFlowIpv4TosReliability) GetChoice() PatternFlowIpv4TosReliability_Choice_Enum { +func (x *PatternFlowEthernetSrc) GetChoice() PatternFlowEthernetSrc_Choice_Enum { if x != nil && x.Choice != nil { return *x.Choice } - return PatternFlowIpv4TosReliability_Choice_unspecified + return PatternFlowEthernetSrc_Choice_unspecified } -func (x *PatternFlowIpv4TosReliability) GetValue() uint32 { +func (x *PatternFlowEthernetSrc) GetValue() string { if x != nil && x.Value != nil { return *x.Value } - return 0 + return "" } -func (x *PatternFlowIpv4TosReliability) GetValues() []uint32 { +func (x *PatternFlowEthernetSrc) GetValues() []string { if x != nil { return x.Values } return nil } -func (x *PatternFlowIpv4TosReliability) GetIncrement() *PatternFlowIpv4TosReliabilityCounter { +func (x *PatternFlowEthernetSrc) GetIncrement() *PatternFlowEthernetSrcCounter { if x != nil { return x.Increment } return nil } -func (x *PatternFlowIpv4TosReliability) GetDecrement() *PatternFlowIpv4TosReliabilityCounter { +func (x *PatternFlowEthernetSrc) GetDecrement() *PatternFlowEthernetSrcCounter { if x != nil { return x.Decrement } return nil } -func (x *PatternFlowIpv4TosReliability) GetMetricTags() []*PatternFlowIpv4TosReliabilityMetricTag { +func (x *PatternFlowEthernetSrc) GetMetricTags() []*PatternFlowEthernetSrcMetricTag { if x != nil { return x.MetricTags } @@ -54281,13 +53337,13 @@ func (x *PatternFlowIpv4TosReliability) GetMetricTags() []*PatternFlowIpv4TosRel } // integer counter pattern -type PatternFlowIpv4TosMonetaryCounter struct { +type PatternFlowEthernetEtherTypeCounter struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // Description missing in models - // default = 0 + // default = 65535 Start *uint32 `protobuf:"varint,1,opt,name=start,proto3,oneof" json:"start,omitempty"` // Description missing in models // default = 1 @@ -54297,23 +53353,23 @@ type PatternFlowIpv4TosMonetaryCounter struct { Count *uint32 `protobuf:"varint,3,opt,name=count,proto3,oneof" json:"count,omitempty"` } -func (x *PatternFlowIpv4TosMonetaryCounter) Reset() { - *x = PatternFlowIpv4TosMonetaryCounter{} +func (x *PatternFlowEthernetEtherTypeCounter) Reset() { + *x = PatternFlowEthernetEtherTypeCounter{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[424] + mi := &file_otg_proto_msgTypes[386] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowIpv4TosMonetaryCounter) String() string { +func (x *PatternFlowEthernetEtherTypeCounter) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowIpv4TosMonetaryCounter) ProtoMessage() {} +func (*PatternFlowEthernetEtherTypeCounter) ProtoMessage() {} -func (x *PatternFlowIpv4TosMonetaryCounter) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[424] +func (x *PatternFlowEthernetEtherTypeCounter) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[386] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -54324,26 +53380,26 @@ func (x *PatternFlowIpv4TosMonetaryCounter) ProtoReflect() protoreflect.Message return mi.MessageOf(x) } -// Deprecated: Use PatternFlowIpv4TosMonetaryCounter.ProtoReflect.Descriptor instead. -func (*PatternFlowIpv4TosMonetaryCounter) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{424} +// Deprecated: Use PatternFlowEthernetEtherTypeCounter.ProtoReflect.Descriptor instead. +func (*PatternFlowEthernetEtherTypeCounter) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{386} } -func (x *PatternFlowIpv4TosMonetaryCounter) GetStart() uint32 { +func (x *PatternFlowEthernetEtherTypeCounter) GetStart() uint32 { if x != nil && x.Start != nil { return *x.Start } return 0 } -func (x *PatternFlowIpv4TosMonetaryCounter) GetStep() uint32 { +func (x *PatternFlowEthernetEtherTypeCounter) GetStep() uint32 { if x != nil && x.Step != nil { return *x.Step } return 0 } -func (x *PatternFlowIpv4TosMonetaryCounter) GetCount() uint32 { +func (x *PatternFlowEthernetEtherTypeCounter) GetCount() uint32 { if x != nil && x.Count != nil { return *x.Count } @@ -54353,7 +53409,7 @@ func (x *PatternFlowIpv4TosMonetaryCounter) GetCount() uint32 { // Metric tag can be used to enable tracking portion of or all bits in a corresponding // header field for metrics per each applicable value. These would appear as tagged // metrics in corresponding flow metrics. -type PatternFlowIpv4TosMonetaryMetricTag struct { +type PatternFlowEthernetEtherTypeMetricTag struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields @@ -54367,27 +53423,27 @@ type PatternFlowIpv4TosMonetaryMetricTag struct { Offset *uint32 `protobuf:"varint,2,opt,name=offset,proto3,oneof" json:"offset,omitempty"` // Number of bits to track for metrics starting from configured offset of corresponding // header field - // default = 1 + // default = 16 Length *uint32 `protobuf:"varint,3,opt,name=length,proto3,oneof" json:"length,omitempty"` } -func (x *PatternFlowIpv4TosMonetaryMetricTag) Reset() { - *x = PatternFlowIpv4TosMonetaryMetricTag{} +func (x *PatternFlowEthernetEtherTypeMetricTag) Reset() { + *x = PatternFlowEthernetEtherTypeMetricTag{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[425] + mi := &file_otg_proto_msgTypes[387] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowIpv4TosMonetaryMetricTag) String() string { +func (x *PatternFlowEthernetEtherTypeMetricTag) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowIpv4TosMonetaryMetricTag) ProtoMessage() {} +func (*PatternFlowEthernetEtherTypeMetricTag) ProtoMessage() {} -func (x *PatternFlowIpv4TosMonetaryMetricTag) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[425] +func (x *PatternFlowEthernetEtherTypeMetricTag) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[387] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -54398,74 +53454,79 @@ func (x *PatternFlowIpv4TosMonetaryMetricTag) ProtoReflect() protoreflect.Messag return mi.MessageOf(x) } -// Deprecated: Use PatternFlowIpv4TosMonetaryMetricTag.ProtoReflect.Descriptor instead. -func (*PatternFlowIpv4TosMonetaryMetricTag) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{425} +// Deprecated: Use PatternFlowEthernetEtherTypeMetricTag.ProtoReflect.Descriptor instead. +func (*PatternFlowEthernetEtherTypeMetricTag) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{387} } -func (x *PatternFlowIpv4TosMonetaryMetricTag) GetName() string { +func (x *PatternFlowEthernetEtherTypeMetricTag) GetName() string { if x != nil && x.Name != nil { return *x.Name } return "" } -func (x *PatternFlowIpv4TosMonetaryMetricTag) GetOffset() uint32 { +func (x *PatternFlowEthernetEtherTypeMetricTag) GetOffset() uint32 { if x != nil && x.Offset != nil { return *x.Offset } return 0 } -func (x *PatternFlowIpv4TosMonetaryMetricTag) GetLength() uint32 { +func (x *PatternFlowEthernetEtherTypeMetricTag) GetLength() uint32 { if x != nil && x.Length != nil { return *x.Length } return 0 } -// Monetary -type PatternFlowIpv4TosMonetary struct { +// Ethernet type +type PatternFlowEthernetEtherType struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // Description missing in models - // default = Choice.Enum.value - Choice *PatternFlowIpv4TosMonetary_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.PatternFlowIpv4TosMonetary_Choice_Enum,oneof" json:"choice,omitempty"` + // default = Choice.Enum.auto + Choice *PatternFlowEthernetEtherType_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.PatternFlowEthernetEtherType_Choice_Enum,oneof" json:"choice,omitempty"` // Description missing in models - // default = 0 + // default = 65535 Value *uint32 `protobuf:"varint,2,opt,name=value,proto3,oneof" json:"value,omitempty"` // Description missing in models - // default = [0] + // default = [65535] Values []uint32 `protobuf:"varint,3,rep,packed,name=values,proto3" json:"values,omitempty"` + // The OTG implementation can provide a system generated + // value for this property. If the OTG is unable to generate a value + // the default value must be used. + // default = 65535 + Auto *uint32 `protobuf:"varint,4,opt,name=auto,proto3,oneof" json:"auto,omitempty"` // Description missing in models - Increment *PatternFlowIpv4TosMonetaryCounter `protobuf:"bytes,5,opt,name=increment,proto3" json:"increment,omitempty"` + Increment *PatternFlowEthernetEtherTypeCounter `protobuf:"bytes,6,opt,name=increment,proto3" json:"increment,omitempty"` // Description missing in models - Decrement *PatternFlowIpv4TosMonetaryCounter `protobuf:"bytes,6,opt,name=decrement,proto3" json:"decrement,omitempty"` + Decrement *PatternFlowEthernetEtherTypeCounter `protobuf:"bytes,7,opt,name=decrement,proto3" json:"decrement,omitempty"` // One or more metric tags can be used to enable tracking portion of or all bits in // a corresponding header field for metrics per each applicable value. These would appear // as tagged metrics in corresponding flow metrics. - MetricTags []*PatternFlowIpv4TosMonetaryMetricTag `protobuf:"bytes,7,rep,name=metric_tags,json=metricTags,proto3" json:"metric_tags,omitempty"` + MetricTags []*PatternFlowEthernetEtherTypeMetricTag `protobuf:"bytes,8,rep,name=metric_tags,json=metricTags,proto3" json:"metric_tags,omitempty"` } -func (x *PatternFlowIpv4TosMonetary) Reset() { - *x = PatternFlowIpv4TosMonetary{} +func (x *PatternFlowEthernetEtherType) Reset() { + *x = PatternFlowEthernetEtherType{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[426] + mi := &file_otg_proto_msgTypes[388] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowIpv4TosMonetary) String() string { +func (x *PatternFlowEthernetEtherType) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowIpv4TosMonetary) ProtoMessage() {} +func (*PatternFlowEthernetEtherType) ProtoMessage() {} -func (x *PatternFlowIpv4TosMonetary) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[426] +func (x *PatternFlowEthernetEtherType) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[388] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -54476,47 +53537,54 @@ func (x *PatternFlowIpv4TosMonetary) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use PatternFlowIpv4TosMonetary.ProtoReflect.Descriptor instead. -func (*PatternFlowIpv4TosMonetary) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{426} +// Deprecated: Use PatternFlowEthernetEtherType.ProtoReflect.Descriptor instead. +func (*PatternFlowEthernetEtherType) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{388} } -func (x *PatternFlowIpv4TosMonetary) GetChoice() PatternFlowIpv4TosMonetary_Choice_Enum { +func (x *PatternFlowEthernetEtherType) GetChoice() PatternFlowEthernetEtherType_Choice_Enum { if x != nil && x.Choice != nil { return *x.Choice } - return PatternFlowIpv4TosMonetary_Choice_unspecified + return PatternFlowEthernetEtherType_Choice_unspecified } -func (x *PatternFlowIpv4TosMonetary) GetValue() uint32 { +func (x *PatternFlowEthernetEtherType) GetValue() uint32 { if x != nil && x.Value != nil { return *x.Value } return 0 } -func (x *PatternFlowIpv4TosMonetary) GetValues() []uint32 { +func (x *PatternFlowEthernetEtherType) GetValues() []uint32 { if x != nil { return x.Values } return nil } -func (x *PatternFlowIpv4TosMonetary) GetIncrement() *PatternFlowIpv4TosMonetaryCounter { +func (x *PatternFlowEthernetEtherType) GetAuto() uint32 { + if x != nil && x.Auto != nil { + return *x.Auto + } + return 0 +} + +func (x *PatternFlowEthernetEtherType) GetIncrement() *PatternFlowEthernetEtherTypeCounter { if x != nil { return x.Increment } return nil } -func (x *PatternFlowIpv4TosMonetary) GetDecrement() *PatternFlowIpv4TosMonetaryCounter { +func (x *PatternFlowEthernetEtherType) GetDecrement() *PatternFlowEthernetEtherTypeCounter { if x != nil { return x.Decrement } return nil } -func (x *PatternFlowIpv4TosMonetary) GetMetricTags() []*PatternFlowIpv4TosMonetaryMetricTag { +func (x *PatternFlowEthernetEtherType) GetMetricTags() []*PatternFlowEthernetEtherTypeMetricTag { if x != nil { return x.MetricTags } @@ -54524,7 +53592,7 @@ func (x *PatternFlowIpv4TosMonetary) GetMetricTags() []*PatternFlowIpv4TosMoneta } // integer counter pattern -type PatternFlowIpv4TosUnusedCounter struct { +type PatternFlowEthernetPfcQueueCounter struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields @@ -54540,23 +53608,23 @@ type PatternFlowIpv4TosUnusedCounter struct { Count *uint32 `protobuf:"varint,3,opt,name=count,proto3,oneof" json:"count,omitempty"` } -func (x *PatternFlowIpv4TosUnusedCounter) Reset() { - *x = PatternFlowIpv4TosUnusedCounter{} +func (x *PatternFlowEthernetPfcQueueCounter) Reset() { + *x = PatternFlowEthernetPfcQueueCounter{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[427] + mi := &file_otg_proto_msgTypes[389] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowIpv4TosUnusedCounter) String() string { +func (x *PatternFlowEthernetPfcQueueCounter) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowIpv4TosUnusedCounter) ProtoMessage() {} +func (*PatternFlowEthernetPfcQueueCounter) ProtoMessage() {} -func (x *PatternFlowIpv4TosUnusedCounter) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[427] +func (x *PatternFlowEthernetPfcQueueCounter) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[389] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -54567,26 +53635,26 @@ func (x *PatternFlowIpv4TosUnusedCounter) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use PatternFlowIpv4TosUnusedCounter.ProtoReflect.Descriptor instead. -func (*PatternFlowIpv4TosUnusedCounter) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{427} +// Deprecated: Use PatternFlowEthernetPfcQueueCounter.ProtoReflect.Descriptor instead. +func (*PatternFlowEthernetPfcQueueCounter) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{389} } -func (x *PatternFlowIpv4TosUnusedCounter) GetStart() uint32 { +func (x *PatternFlowEthernetPfcQueueCounter) GetStart() uint32 { if x != nil && x.Start != nil { return *x.Start } return 0 } -func (x *PatternFlowIpv4TosUnusedCounter) GetStep() uint32 { +func (x *PatternFlowEthernetPfcQueueCounter) GetStep() uint32 { if x != nil && x.Step != nil { return *x.Step } return 0 } -func (x *PatternFlowIpv4TosUnusedCounter) GetCount() uint32 { +func (x *PatternFlowEthernetPfcQueueCounter) GetCount() uint32 { if x != nil && x.Count != nil { return *x.Count } @@ -54596,7 +53664,7 @@ func (x *PatternFlowIpv4TosUnusedCounter) GetCount() uint32 { // Metric tag can be used to enable tracking portion of or all bits in a corresponding // header field for metrics per each applicable value. These would appear as tagged // metrics in corresponding flow metrics. -type PatternFlowIpv4TosUnusedMetricTag struct { +type PatternFlowEthernetPfcQueueMetricTag struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields @@ -54610,27 +53678,27 @@ type PatternFlowIpv4TosUnusedMetricTag struct { Offset *uint32 `protobuf:"varint,2,opt,name=offset,proto3,oneof" json:"offset,omitempty"` // Number of bits to track for metrics starting from configured offset of corresponding // header field - // default = 1 + // default = 3 Length *uint32 `protobuf:"varint,3,opt,name=length,proto3,oneof" json:"length,omitempty"` } -func (x *PatternFlowIpv4TosUnusedMetricTag) Reset() { - *x = PatternFlowIpv4TosUnusedMetricTag{} +func (x *PatternFlowEthernetPfcQueueMetricTag) Reset() { + *x = PatternFlowEthernetPfcQueueMetricTag{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[428] + mi := &file_otg_proto_msgTypes[390] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowIpv4TosUnusedMetricTag) String() string { +func (x *PatternFlowEthernetPfcQueueMetricTag) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowIpv4TosUnusedMetricTag) ProtoMessage() {} +func (*PatternFlowEthernetPfcQueueMetricTag) ProtoMessage() {} -func (x *PatternFlowIpv4TosUnusedMetricTag) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[428] +func (x *PatternFlowEthernetPfcQueueMetricTag) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[390] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -54641,41 +53709,41 @@ func (x *PatternFlowIpv4TosUnusedMetricTag) ProtoReflect() protoreflect.Message return mi.MessageOf(x) } -// Deprecated: Use PatternFlowIpv4TosUnusedMetricTag.ProtoReflect.Descriptor instead. -func (*PatternFlowIpv4TosUnusedMetricTag) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{428} +// Deprecated: Use PatternFlowEthernetPfcQueueMetricTag.ProtoReflect.Descriptor instead. +func (*PatternFlowEthernetPfcQueueMetricTag) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{390} } -func (x *PatternFlowIpv4TosUnusedMetricTag) GetName() string { +func (x *PatternFlowEthernetPfcQueueMetricTag) GetName() string { if x != nil && x.Name != nil { return *x.Name } return "" } -func (x *PatternFlowIpv4TosUnusedMetricTag) GetOffset() uint32 { +func (x *PatternFlowEthernetPfcQueueMetricTag) GetOffset() uint32 { if x != nil && x.Offset != nil { return *x.Offset } return 0 } -func (x *PatternFlowIpv4TosUnusedMetricTag) GetLength() uint32 { +func (x *PatternFlowEthernetPfcQueueMetricTag) GetLength() uint32 { if x != nil && x.Length != nil { return *x.Length } return 0 } -// Unused -type PatternFlowIpv4TosUnused struct { +// Priority flow control queue +type PatternFlowEthernetPfcQueue struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // Description missing in models // default = Choice.Enum.value - Choice *PatternFlowIpv4TosUnused_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.PatternFlowIpv4TosUnused_Choice_Enum,oneof" json:"choice,omitempty"` + Choice *PatternFlowEthernetPfcQueue_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.PatternFlowEthernetPfcQueue_Choice_Enum,oneof" json:"choice,omitempty"` // Description missing in models // default = 0 Value *uint32 `protobuf:"varint,2,opt,name=value,proto3,oneof" json:"value,omitempty"` @@ -54683,32 +53751,32 @@ type PatternFlowIpv4TosUnused struct { // default = [0] Values []uint32 `protobuf:"varint,3,rep,packed,name=values,proto3" json:"values,omitempty"` // Description missing in models - Increment *PatternFlowIpv4TosUnusedCounter `protobuf:"bytes,5,opt,name=increment,proto3" json:"increment,omitempty"` + Increment *PatternFlowEthernetPfcQueueCounter `protobuf:"bytes,5,opt,name=increment,proto3" json:"increment,omitempty"` // Description missing in models - Decrement *PatternFlowIpv4TosUnusedCounter `protobuf:"bytes,6,opt,name=decrement,proto3" json:"decrement,omitempty"` + Decrement *PatternFlowEthernetPfcQueueCounter `protobuf:"bytes,6,opt,name=decrement,proto3" json:"decrement,omitempty"` // One or more metric tags can be used to enable tracking portion of or all bits in // a corresponding header field for metrics per each applicable value. These would appear // as tagged metrics in corresponding flow metrics. - MetricTags []*PatternFlowIpv4TosUnusedMetricTag `protobuf:"bytes,7,rep,name=metric_tags,json=metricTags,proto3" json:"metric_tags,omitempty"` + MetricTags []*PatternFlowEthernetPfcQueueMetricTag `protobuf:"bytes,7,rep,name=metric_tags,json=metricTags,proto3" json:"metric_tags,omitempty"` } -func (x *PatternFlowIpv4TosUnused) Reset() { - *x = PatternFlowIpv4TosUnused{} +func (x *PatternFlowEthernetPfcQueue) Reset() { + *x = PatternFlowEthernetPfcQueue{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[429] + mi := &file_otg_proto_msgTypes[391] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowIpv4TosUnused) String() string { +func (x *PatternFlowEthernetPfcQueue) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowIpv4TosUnused) ProtoMessage() {} +func (*PatternFlowEthernetPfcQueue) ProtoMessage() {} -func (x *PatternFlowIpv4TosUnused) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[429] +func (x *PatternFlowEthernetPfcQueue) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[391] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -54719,47 +53787,47 @@ func (x *PatternFlowIpv4TosUnused) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use PatternFlowIpv4TosUnused.ProtoReflect.Descriptor instead. -func (*PatternFlowIpv4TosUnused) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{429} +// Deprecated: Use PatternFlowEthernetPfcQueue.ProtoReflect.Descriptor instead. +func (*PatternFlowEthernetPfcQueue) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{391} } -func (x *PatternFlowIpv4TosUnused) GetChoice() PatternFlowIpv4TosUnused_Choice_Enum { +func (x *PatternFlowEthernetPfcQueue) GetChoice() PatternFlowEthernetPfcQueue_Choice_Enum { if x != nil && x.Choice != nil { return *x.Choice } - return PatternFlowIpv4TosUnused_Choice_unspecified + return PatternFlowEthernetPfcQueue_Choice_unspecified } -func (x *PatternFlowIpv4TosUnused) GetValue() uint32 { +func (x *PatternFlowEthernetPfcQueue) GetValue() uint32 { if x != nil && x.Value != nil { return *x.Value } return 0 } -func (x *PatternFlowIpv4TosUnused) GetValues() []uint32 { +func (x *PatternFlowEthernetPfcQueue) GetValues() []uint32 { if x != nil { return x.Values } return nil } -func (x *PatternFlowIpv4TosUnused) GetIncrement() *PatternFlowIpv4TosUnusedCounter { +func (x *PatternFlowEthernetPfcQueue) GetIncrement() *PatternFlowEthernetPfcQueueCounter { if x != nil { return x.Increment } return nil } -func (x *PatternFlowIpv4TosUnused) GetDecrement() *PatternFlowIpv4TosUnusedCounter { +func (x *PatternFlowEthernetPfcQueue) GetDecrement() *PatternFlowEthernetPfcQueueCounter { if x != nil { return x.Decrement } return nil } -func (x *PatternFlowIpv4TosUnused) GetMetricTags() []*PatternFlowIpv4TosUnusedMetricTag { +func (x *PatternFlowEthernetPfcQueue) GetMetricTags() []*PatternFlowEthernetPfcQueueMetricTag { if x != nil { return x.MetricTags } @@ -54767,13 +53835,13 @@ func (x *PatternFlowIpv4TosUnused) GetMetricTags() []*PatternFlowIpv4TosUnusedMe } // integer counter pattern -type PatternFlowIpv6VersionCounter struct { +type PatternFlowVlanPriorityCounter struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // Description missing in models - // default = 6 + // default = 0 Start *uint32 `protobuf:"varint,1,opt,name=start,proto3,oneof" json:"start,omitempty"` // Description missing in models // default = 1 @@ -54783,23 +53851,23 @@ type PatternFlowIpv6VersionCounter struct { Count *uint32 `protobuf:"varint,3,opt,name=count,proto3,oneof" json:"count,omitempty"` } -func (x *PatternFlowIpv6VersionCounter) Reset() { - *x = PatternFlowIpv6VersionCounter{} +func (x *PatternFlowVlanPriorityCounter) Reset() { + *x = PatternFlowVlanPriorityCounter{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[430] + mi := &file_otg_proto_msgTypes[392] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowIpv6VersionCounter) String() string { +func (x *PatternFlowVlanPriorityCounter) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowIpv6VersionCounter) ProtoMessage() {} +func (*PatternFlowVlanPriorityCounter) ProtoMessage() {} -func (x *PatternFlowIpv6VersionCounter) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[430] +func (x *PatternFlowVlanPriorityCounter) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[392] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -54810,26 +53878,26 @@ func (x *PatternFlowIpv6VersionCounter) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use PatternFlowIpv6VersionCounter.ProtoReflect.Descriptor instead. -func (*PatternFlowIpv6VersionCounter) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{430} +// Deprecated: Use PatternFlowVlanPriorityCounter.ProtoReflect.Descriptor instead. +func (*PatternFlowVlanPriorityCounter) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{392} } -func (x *PatternFlowIpv6VersionCounter) GetStart() uint32 { +func (x *PatternFlowVlanPriorityCounter) GetStart() uint32 { if x != nil && x.Start != nil { return *x.Start } return 0 } -func (x *PatternFlowIpv6VersionCounter) GetStep() uint32 { +func (x *PatternFlowVlanPriorityCounter) GetStep() uint32 { if x != nil && x.Step != nil { return *x.Step } return 0 } -func (x *PatternFlowIpv6VersionCounter) GetCount() uint32 { +func (x *PatternFlowVlanPriorityCounter) GetCount() uint32 { if x != nil && x.Count != nil { return *x.Count } @@ -54839,7 +53907,7 @@ func (x *PatternFlowIpv6VersionCounter) GetCount() uint32 { // Metric tag can be used to enable tracking portion of or all bits in a corresponding // header field for metrics per each applicable value. These would appear as tagged // metrics in corresponding flow metrics. -type PatternFlowIpv6VersionMetricTag struct { +type PatternFlowVlanPriorityMetricTag struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields @@ -54853,27 +53921,27 @@ type PatternFlowIpv6VersionMetricTag struct { Offset *uint32 `protobuf:"varint,2,opt,name=offset,proto3,oneof" json:"offset,omitempty"` // Number of bits to track for metrics starting from configured offset of corresponding // header field - // default = 4 + // default = 3 Length *uint32 `protobuf:"varint,3,opt,name=length,proto3,oneof" json:"length,omitempty"` } -func (x *PatternFlowIpv6VersionMetricTag) Reset() { - *x = PatternFlowIpv6VersionMetricTag{} +func (x *PatternFlowVlanPriorityMetricTag) Reset() { + *x = PatternFlowVlanPriorityMetricTag{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[431] + mi := &file_otg_proto_msgTypes[393] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowIpv6VersionMetricTag) String() string { +func (x *PatternFlowVlanPriorityMetricTag) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowIpv6VersionMetricTag) ProtoMessage() {} +func (*PatternFlowVlanPriorityMetricTag) ProtoMessage() {} -func (x *PatternFlowIpv6VersionMetricTag) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[431] +func (x *PatternFlowVlanPriorityMetricTag) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[393] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -54884,74 +53952,74 @@ func (x *PatternFlowIpv6VersionMetricTag) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use PatternFlowIpv6VersionMetricTag.ProtoReflect.Descriptor instead. -func (*PatternFlowIpv6VersionMetricTag) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{431} +// Deprecated: Use PatternFlowVlanPriorityMetricTag.ProtoReflect.Descriptor instead. +func (*PatternFlowVlanPriorityMetricTag) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{393} } -func (x *PatternFlowIpv6VersionMetricTag) GetName() string { +func (x *PatternFlowVlanPriorityMetricTag) GetName() string { if x != nil && x.Name != nil { return *x.Name } return "" } -func (x *PatternFlowIpv6VersionMetricTag) GetOffset() uint32 { +func (x *PatternFlowVlanPriorityMetricTag) GetOffset() uint32 { if x != nil && x.Offset != nil { return *x.Offset } return 0 } -func (x *PatternFlowIpv6VersionMetricTag) GetLength() uint32 { +func (x *PatternFlowVlanPriorityMetricTag) GetLength() uint32 { if x != nil && x.Length != nil { return *x.Length } return 0 } -// Version number -type PatternFlowIpv6Version struct { +// Priority code point +type PatternFlowVlanPriority struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // Description missing in models // default = Choice.Enum.value - Choice *PatternFlowIpv6Version_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.PatternFlowIpv6Version_Choice_Enum,oneof" json:"choice,omitempty"` + Choice *PatternFlowVlanPriority_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.PatternFlowVlanPriority_Choice_Enum,oneof" json:"choice,omitempty"` // Description missing in models - // default = 6 + // default = 0 Value *uint32 `protobuf:"varint,2,opt,name=value,proto3,oneof" json:"value,omitempty"` // Description missing in models - // default = [6] + // default = [0] Values []uint32 `protobuf:"varint,3,rep,packed,name=values,proto3" json:"values,omitempty"` // Description missing in models - Increment *PatternFlowIpv6VersionCounter `protobuf:"bytes,5,opt,name=increment,proto3" json:"increment,omitempty"` + Increment *PatternFlowVlanPriorityCounter `protobuf:"bytes,5,opt,name=increment,proto3" json:"increment,omitempty"` // Description missing in models - Decrement *PatternFlowIpv6VersionCounter `protobuf:"bytes,6,opt,name=decrement,proto3" json:"decrement,omitempty"` + Decrement *PatternFlowVlanPriorityCounter `protobuf:"bytes,6,opt,name=decrement,proto3" json:"decrement,omitempty"` // One or more metric tags can be used to enable tracking portion of or all bits in // a corresponding header field for metrics per each applicable value. These would appear // as tagged metrics in corresponding flow metrics. - MetricTags []*PatternFlowIpv6VersionMetricTag `protobuf:"bytes,7,rep,name=metric_tags,json=metricTags,proto3" json:"metric_tags,omitempty"` + MetricTags []*PatternFlowVlanPriorityMetricTag `protobuf:"bytes,7,rep,name=metric_tags,json=metricTags,proto3" json:"metric_tags,omitempty"` } -func (x *PatternFlowIpv6Version) Reset() { - *x = PatternFlowIpv6Version{} +func (x *PatternFlowVlanPriority) Reset() { + *x = PatternFlowVlanPriority{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[432] + mi := &file_otg_proto_msgTypes[394] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowIpv6Version) String() string { +func (x *PatternFlowVlanPriority) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowIpv6Version) ProtoMessage() {} +func (*PatternFlowVlanPriority) ProtoMessage() {} -func (x *PatternFlowIpv6Version) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[432] +func (x *PatternFlowVlanPriority) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[394] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -54962,47 +54030,47 @@ func (x *PatternFlowIpv6Version) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use PatternFlowIpv6Version.ProtoReflect.Descriptor instead. -func (*PatternFlowIpv6Version) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{432} +// Deprecated: Use PatternFlowVlanPriority.ProtoReflect.Descriptor instead. +func (*PatternFlowVlanPriority) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{394} } -func (x *PatternFlowIpv6Version) GetChoice() PatternFlowIpv6Version_Choice_Enum { +func (x *PatternFlowVlanPriority) GetChoice() PatternFlowVlanPriority_Choice_Enum { if x != nil && x.Choice != nil { return *x.Choice } - return PatternFlowIpv6Version_Choice_unspecified + return PatternFlowVlanPriority_Choice_unspecified } -func (x *PatternFlowIpv6Version) GetValue() uint32 { +func (x *PatternFlowVlanPriority) GetValue() uint32 { if x != nil && x.Value != nil { return *x.Value } return 0 } -func (x *PatternFlowIpv6Version) GetValues() []uint32 { +func (x *PatternFlowVlanPriority) GetValues() []uint32 { if x != nil { return x.Values } return nil } -func (x *PatternFlowIpv6Version) GetIncrement() *PatternFlowIpv6VersionCounter { +func (x *PatternFlowVlanPriority) GetIncrement() *PatternFlowVlanPriorityCounter { if x != nil { return x.Increment } return nil } -func (x *PatternFlowIpv6Version) GetDecrement() *PatternFlowIpv6VersionCounter { +func (x *PatternFlowVlanPriority) GetDecrement() *PatternFlowVlanPriorityCounter { if x != nil { return x.Decrement } return nil } -func (x *PatternFlowIpv6Version) GetMetricTags() []*PatternFlowIpv6VersionMetricTag { +func (x *PatternFlowVlanPriority) GetMetricTags() []*PatternFlowVlanPriorityMetricTag { if x != nil { return x.MetricTags } @@ -55010,7 +54078,7 @@ func (x *PatternFlowIpv6Version) GetMetricTags() []*PatternFlowIpv6VersionMetric } // integer counter pattern -type PatternFlowIpv6TrafficClassCounter struct { +type PatternFlowVlanCfiCounter struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields @@ -55026,23 +54094,23 @@ type PatternFlowIpv6TrafficClassCounter struct { Count *uint32 `protobuf:"varint,3,opt,name=count,proto3,oneof" json:"count,omitempty"` } -func (x *PatternFlowIpv6TrafficClassCounter) Reset() { - *x = PatternFlowIpv6TrafficClassCounter{} +func (x *PatternFlowVlanCfiCounter) Reset() { + *x = PatternFlowVlanCfiCounter{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[433] + mi := &file_otg_proto_msgTypes[395] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowIpv6TrafficClassCounter) String() string { +func (x *PatternFlowVlanCfiCounter) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowIpv6TrafficClassCounter) ProtoMessage() {} +func (*PatternFlowVlanCfiCounter) ProtoMessage() {} -func (x *PatternFlowIpv6TrafficClassCounter) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[433] +func (x *PatternFlowVlanCfiCounter) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[395] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -55053,26 +54121,26 @@ func (x *PatternFlowIpv6TrafficClassCounter) ProtoReflect() protoreflect.Message return mi.MessageOf(x) } -// Deprecated: Use PatternFlowIpv6TrafficClassCounter.ProtoReflect.Descriptor instead. -func (*PatternFlowIpv6TrafficClassCounter) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{433} +// Deprecated: Use PatternFlowVlanCfiCounter.ProtoReflect.Descriptor instead. +func (*PatternFlowVlanCfiCounter) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{395} } -func (x *PatternFlowIpv6TrafficClassCounter) GetStart() uint32 { +func (x *PatternFlowVlanCfiCounter) GetStart() uint32 { if x != nil && x.Start != nil { return *x.Start } return 0 } -func (x *PatternFlowIpv6TrafficClassCounter) GetStep() uint32 { +func (x *PatternFlowVlanCfiCounter) GetStep() uint32 { if x != nil && x.Step != nil { return *x.Step } return 0 } -func (x *PatternFlowIpv6TrafficClassCounter) GetCount() uint32 { +func (x *PatternFlowVlanCfiCounter) GetCount() uint32 { if x != nil && x.Count != nil { return *x.Count } @@ -55082,7 +54150,7 @@ func (x *PatternFlowIpv6TrafficClassCounter) GetCount() uint32 { // Metric tag can be used to enable tracking portion of or all bits in a corresponding // header field for metrics per each applicable value. These would appear as tagged // metrics in corresponding flow metrics. -type PatternFlowIpv6TrafficClassMetricTag struct { +type PatternFlowVlanCfiMetricTag struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields @@ -55096,27 +54164,27 @@ type PatternFlowIpv6TrafficClassMetricTag struct { Offset *uint32 `protobuf:"varint,2,opt,name=offset,proto3,oneof" json:"offset,omitempty"` // Number of bits to track for metrics starting from configured offset of corresponding // header field - // default = 8 + // default = 1 Length *uint32 `protobuf:"varint,3,opt,name=length,proto3,oneof" json:"length,omitempty"` } -func (x *PatternFlowIpv6TrafficClassMetricTag) Reset() { - *x = PatternFlowIpv6TrafficClassMetricTag{} +func (x *PatternFlowVlanCfiMetricTag) Reset() { + *x = PatternFlowVlanCfiMetricTag{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[434] + mi := &file_otg_proto_msgTypes[396] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowIpv6TrafficClassMetricTag) String() string { +func (x *PatternFlowVlanCfiMetricTag) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowIpv6TrafficClassMetricTag) ProtoMessage() {} +func (*PatternFlowVlanCfiMetricTag) ProtoMessage() {} -func (x *PatternFlowIpv6TrafficClassMetricTag) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[434] +func (x *PatternFlowVlanCfiMetricTag) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[396] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -55127,41 +54195,41 @@ func (x *PatternFlowIpv6TrafficClassMetricTag) ProtoReflect() protoreflect.Messa return mi.MessageOf(x) } -// Deprecated: Use PatternFlowIpv6TrafficClassMetricTag.ProtoReflect.Descriptor instead. -func (*PatternFlowIpv6TrafficClassMetricTag) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{434} +// Deprecated: Use PatternFlowVlanCfiMetricTag.ProtoReflect.Descriptor instead. +func (*PatternFlowVlanCfiMetricTag) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{396} } -func (x *PatternFlowIpv6TrafficClassMetricTag) GetName() string { +func (x *PatternFlowVlanCfiMetricTag) GetName() string { if x != nil && x.Name != nil { return *x.Name } return "" } -func (x *PatternFlowIpv6TrafficClassMetricTag) GetOffset() uint32 { +func (x *PatternFlowVlanCfiMetricTag) GetOffset() uint32 { if x != nil && x.Offset != nil { return *x.Offset } return 0 } -func (x *PatternFlowIpv6TrafficClassMetricTag) GetLength() uint32 { +func (x *PatternFlowVlanCfiMetricTag) GetLength() uint32 { if x != nil && x.Length != nil { return *x.Length } return 0 } -// Traffic class -type PatternFlowIpv6TrafficClass struct { +// Canonical format indicator or drop elegible indicator +type PatternFlowVlanCfi struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // Description missing in models // default = Choice.Enum.value - Choice *PatternFlowIpv6TrafficClass_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.PatternFlowIpv6TrafficClass_Choice_Enum,oneof" json:"choice,omitempty"` + Choice *PatternFlowVlanCfi_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.PatternFlowVlanCfi_Choice_Enum,oneof" json:"choice,omitempty"` // Description missing in models // default = 0 Value *uint32 `protobuf:"varint,2,opt,name=value,proto3,oneof" json:"value,omitempty"` @@ -55169,32 +54237,32 @@ type PatternFlowIpv6TrafficClass struct { // default = [0] Values []uint32 `protobuf:"varint,3,rep,packed,name=values,proto3" json:"values,omitempty"` // Description missing in models - Increment *PatternFlowIpv6TrafficClassCounter `protobuf:"bytes,5,opt,name=increment,proto3" json:"increment,omitempty"` + Increment *PatternFlowVlanCfiCounter `protobuf:"bytes,5,opt,name=increment,proto3" json:"increment,omitempty"` // Description missing in models - Decrement *PatternFlowIpv6TrafficClassCounter `protobuf:"bytes,6,opt,name=decrement,proto3" json:"decrement,omitempty"` + Decrement *PatternFlowVlanCfiCounter `protobuf:"bytes,6,opt,name=decrement,proto3" json:"decrement,omitempty"` // One or more metric tags can be used to enable tracking portion of or all bits in // a corresponding header field for metrics per each applicable value. These would appear // as tagged metrics in corresponding flow metrics. - MetricTags []*PatternFlowIpv6TrafficClassMetricTag `protobuf:"bytes,7,rep,name=metric_tags,json=metricTags,proto3" json:"metric_tags,omitempty"` + MetricTags []*PatternFlowVlanCfiMetricTag `protobuf:"bytes,7,rep,name=metric_tags,json=metricTags,proto3" json:"metric_tags,omitempty"` } -func (x *PatternFlowIpv6TrafficClass) Reset() { - *x = PatternFlowIpv6TrafficClass{} +func (x *PatternFlowVlanCfi) Reset() { + *x = PatternFlowVlanCfi{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[435] + mi := &file_otg_proto_msgTypes[397] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowIpv6TrafficClass) String() string { +func (x *PatternFlowVlanCfi) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowIpv6TrafficClass) ProtoMessage() {} +func (*PatternFlowVlanCfi) ProtoMessage() {} -func (x *PatternFlowIpv6TrafficClass) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[435] +func (x *PatternFlowVlanCfi) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[397] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -55205,47 +54273,47 @@ func (x *PatternFlowIpv6TrafficClass) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use PatternFlowIpv6TrafficClass.ProtoReflect.Descriptor instead. -func (*PatternFlowIpv6TrafficClass) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{435} +// Deprecated: Use PatternFlowVlanCfi.ProtoReflect.Descriptor instead. +func (*PatternFlowVlanCfi) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{397} } -func (x *PatternFlowIpv6TrafficClass) GetChoice() PatternFlowIpv6TrafficClass_Choice_Enum { +func (x *PatternFlowVlanCfi) GetChoice() PatternFlowVlanCfi_Choice_Enum { if x != nil && x.Choice != nil { return *x.Choice } - return PatternFlowIpv6TrafficClass_Choice_unspecified + return PatternFlowVlanCfi_Choice_unspecified } -func (x *PatternFlowIpv6TrafficClass) GetValue() uint32 { +func (x *PatternFlowVlanCfi) GetValue() uint32 { if x != nil && x.Value != nil { return *x.Value } return 0 } -func (x *PatternFlowIpv6TrafficClass) GetValues() []uint32 { +func (x *PatternFlowVlanCfi) GetValues() []uint32 { if x != nil { return x.Values } return nil } -func (x *PatternFlowIpv6TrafficClass) GetIncrement() *PatternFlowIpv6TrafficClassCounter { +func (x *PatternFlowVlanCfi) GetIncrement() *PatternFlowVlanCfiCounter { if x != nil { return x.Increment } return nil } -func (x *PatternFlowIpv6TrafficClass) GetDecrement() *PatternFlowIpv6TrafficClassCounter { +func (x *PatternFlowVlanCfi) GetDecrement() *PatternFlowVlanCfiCounter { if x != nil { return x.Decrement } return nil } -func (x *PatternFlowIpv6TrafficClass) GetMetricTags() []*PatternFlowIpv6TrafficClassMetricTag { +func (x *PatternFlowVlanCfi) GetMetricTags() []*PatternFlowVlanCfiMetricTag { if x != nil { return x.MetricTags } @@ -55253,7 +54321,7 @@ func (x *PatternFlowIpv6TrafficClass) GetMetricTags() []*PatternFlowIpv6TrafficC } // integer counter pattern -type PatternFlowIpv6FlowLabelCounter struct { +type PatternFlowVlanIdCounter struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields @@ -55269,23 +54337,23 @@ type PatternFlowIpv6FlowLabelCounter struct { Count *uint32 `protobuf:"varint,3,opt,name=count,proto3,oneof" json:"count,omitempty"` } -func (x *PatternFlowIpv6FlowLabelCounter) Reset() { - *x = PatternFlowIpv6FlowLabelCounter{} +func (x *PatternFlowVlanIdCounter) Reset() { + *x = PatternFlowVlanIdCounter{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[436] + mi := &file_otg_proto_msgTypes[398] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowIpv6FlowLabelCounter) String() string { +func (x *PatternFlowVlanIdCounter) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowIpv6FlowLabelCounter) ProtoMessage() {} +func (*PatternFlowVlanIdCounter) ProtoMessage() {} -func (x *PatternFlowIpv6FlowLabelCounter) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[436] +func (x *PatternFlowVlanIdCounter) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[398] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -55296,26 +54364,26 @@ func (x *PatternFlowIpv6FlowLabelCounter) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use PatternFlowIpv6FlowLabelCounter.ProtoReflect.Descriptor instead. -func (*PatternFlowIpv6FlowLabelCounter) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{436} +// Deprecated: Use PatternFlowVlanIdCounter.ProtoReflect.Descriptor instead. +func (*PatternFlowVlanIdCounter) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{398} } -func (x *PatternFlowIpv6FlowLabelCounter) GetStart() uint32 { +func (x *PatternFlowVlanIdCounter) GetStart() uint32 { if x != nil && x.Start != nil { return *x.Start } return 0 } -func (x *PatternFlowIpv6FlowLabelCounter) GetStep() uint32 { +func (x *PatternFlowVlanIdCounter) GetStep() uint32 { if x != nil && x.Step != nil { return *x.Step } return 0 } -func (x *PatternFlowIpv6FlowLabelCounter) GetCount() uint32 { +func (x *PatternFlowVlanIdCounter) GetCount() uint32 { if x != nil && x.Count != nil { return *x.Count } @@ -55325,7 +54393,7 @@ func (x *PatternFlowIpv6FlowLabelCounter) GetCount() uint32 { // Metric tag can be used to enable tracking portion of or all bits in a corresponding // header field for metrics per each applicable value. These would appear as tagged // metrics in corresponding flow metrics. -type PatternFlowIpv6FlowLabelMetricTag struct { +type PatternFlowVlanIdMetricTag struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields @@ -55339,27 +54407,27 @@ type PatternFlowIpv6FlowLabelMetricTag struct { Offset *uint32 `protobuf:"varint,2,opt,name=offset,proto3,oneof" json:"offset,omitempty"` // Number of bits to track for metrics starting from configured offset of corresponding // header field - // default = 20 + // default = 12 Length *uint32 `protobuf:"varint,3,opt,name=length,proto3,oneof" json:"length,omitempty"` } -func (x *PatternFlowIpv6FlowLabelMetricTag) Reset() { - *x = PatternFlowIpv6FlowLabelMetricTag{} +func (x *PatternFlowVlanIdMetricTag) Reset() { + *x = PatternFlowVlanIdMetricTag{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[437] + mi := &file_otg_proto_msgTypes[399] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowIpv6FlowLabelMetricTag) String() string { +func (x *PatternFlowVlanIdMetricTag) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowIpv6FlowLabelMetricTag) ProtoMessage() {} +func (*PatternFlowVlanIdMetricTag) ProtoMessage() {} -func (x *PatternFlowIpv6FlowLabelMetricTag) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[437] +func (x *PatternFlowVlanIdMetricTag) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[399] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -55370,41 +54438,41 @@ func (x *PatternFlowIpv6FlowLabelMetricTag) ProtoReflect() protoreflect.Message return mi.MessageOf(x) } -// Deprecated: Use PatternFlowIpv6FlowLabelMetricTag.ProtoReflect.Descriptor instead. -func (*PatternFlowIpv6FlowLabelMetricTag) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{437} +// Deprecated: Use PatternFlowVlanIdMetricTag.ProtoReflect.Descriptor instead. +func (*PatternFlowVlanIdMetricTag) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{399} } -func (x *PatternFlowIpv6FlowLabelMetricTag) GetName() string { +func (x *PatternFlowVlanIdMetricTag) GetName() string { if x != nil && x.Name != nil { return *x.Name } return "" } -func (x *PatternFlowIpv6FlowLabelMetricTag) GetOffset() uint32 { +func (x *PatternFlowVlanIdMetricTag) GetOffset() uint32 { if x != nil && x.Offset != nil { return *x.Offset } return 0 } -func (x *PatternFlowIpv6FlowLabelMetricTag) GetLength() uint32 { +func (x *PatternFlowVlanIdMetricTag) GetLength() uint32 { if x != nil && x.Length != nil { return *x.Length } return 0 } -// Flow label -type PatternFlowIpv6FlowLabel struct { +// Vlan identifier +type PatternFlowVlanId struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // Description missing in models // default = Choice.Enum.value - Choice *PatternFlowIpv6FlowLabel_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.PatternFlowIpv6FlowLabel_Choice_Enum,oneof" json:"choice,omitempty"` + Choice *PatternFlowVlanId_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.PatternFlowVlanId_Choice_Enum,oneof" json:"choice,omitempty"` // Description missing in models // default = 0 Value *uint32 `protobuf:"varint,2,opt,name=value,proto3,oneof" json:"value,omitempty"` @@ -55412,32 +54480,32 @@ type PatternFlowIpv6FlowLabel struct { // default = [0] Values []uint32 `protobuf:"varint,3,rep,packed,name=values,proto3" json:"values,omitempty"` // Description missing in models - Increment *PatternFlowIpv6FlowLabelCounter `protobuf:"bytes,5,opt,name=increment,proto3" json:"increment,omitempty"` + Increment *PatternFlowVlanIdCounter `protobuf:"bytes,5,opt,name=increment,proto3" json:"increment,omitempty"` // Description missing in models - Decrement *PatternFlowIpv6FlowLabelCounter `protobuf:"bytes,6,opt,name=decrement,proto3" json:"decrement,omitempty"` + Decrement *PatternFlowVlanIdCounter `protobuf:"bytes,6,opt,name=decrement,proto3" json:"decrement,omitempty"` // One or more metric tags can be used to enable tracking portion of or all bits in // a corresponding header field for metrics per each applicable value. These would appear // as tagged metrics in corresponding flow metrics. - MetricTags []*PatternFlowIpv6FlowLabelMetricTag `protobuf:"bytes,7,rep,name=metric_tags,json=metricTags,proto3" json:"metric_tags,omitempty"` + MetricTags []*PatternFlowVlanIdMetricTag `protobuf:"bytes,7,rep,name=metric_tags,json=metricTags,proto3" json:"metric_tags,omitempty"` } -func (x *PatternFlowIpv6FlowLabel) Reset() { - *x = PatternFlowIpv6FlowLabel{} +func (x *PatternFlowVlanId) Reset() { + *x = PatternFlowVlanId{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[438] + mi := &file_otg_proto_msgTypes[400] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowIpv6FlowLabel) String() string { +func (x *PatternFlowVlanId) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowIpv6FlowLabel) ProtoMessage() {} +func (*PatternFlowVlanId) ProtoMessage() {} -func (x *PatternFlowIpv6FlowLabel) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[438] +func (x *PatternFlowVlanId) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[400] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -55448,47 +54516,47 @@ func (x *PatternFlowIpv6FlowLabel) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use PatternFlowIpv6FlowLabel.ProtoReflect.Descriptor instead. -func (*PatternFlowIpv6FlowLabel) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{438} +// Deprecated: Use PatternFlowVlanId.ProtoReflect.Descriptor instead. +func (*PatternFlowVlanId) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{400} } -func (x *PatternFlowIpv6FlowLabel) GetChoice() PatternFlowIpv6FlowLabel_Choice_Enum { +func (x *PatternFlowVlanId) GetChoice() PatternFlowVlanId_Choice_Enum { if x != nil && x.Choice != nil { return *x.Choice } - return PatternFlowIpv6FlowLabel_Choice_unspecified + return PatternFlowVlanId_Choice_unspecified } -func (x *PatternFlowIpv6FlowLabel) GetValue() uint32 { +func (x *PatternFlowVlanId) GetValue() uint32 { if x != nil && x.Value != nil { return *x.Value } return 0 } -func (x *PatternFlowIpv6FlowLabel) GetValues() []uint32 { +func (x *PatternFlowVlanId) GetValues() []uint32 { if x != nil { return x.Values } return nil } -func (x *PatternFlowIpv6FlowLabel) GetIncrement() *PatternFlowIpv6FlowLabelCounter { +func (x *PatternFlowVlanId) GetIncrement() *PatternFlowVlanIdCounter { if x != nil { return x.Increment } return nil } -func (x *PatternFlowIpv6FlowLabel) GetDecrement() *PatternFlowIpv6FlowLabelCounter { +func (x *PatternFlowVlanId) GetDecrement() *PatternFlowVlanIdCounter { if x != nil { return x.Decrement } return nil } -func (x *PatternFlowIpv6FlowLabel) GetMetricTags() []*PatternFlowIpv6FlowLabelMetricTag { +func (x *PatternFlowVlanId) GetMetricTags() []*PatternFlowVlanIdMetricTag { if x != nil { return x.MetricTags } @@ -55496,13 +54564,13 @@ func (x *PatternFlowIpv6FlowLabel) GetMetricTags() []*PatternFlowIpv6FlowLabelMe } // integer counter pattern -type PatternFlowIpv6PayloadLengthCounter struct { +type PatternFlowVlanTpidCounter struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // Description missing in models - // default = 0 + // default = 65535 Start *uint32 `protobuf:"varint,1,opt,name=start,proto3,oneof" json:"start,omitempty"` // Description missing in models // default = 1 @@ -55512,23 +54580,23 @@ type PatternFlowIpv6PayloadLengthCounter struct { Count *uint32 `protobuf:"varint,3,opt,name=count,proto3,oneof" json:"count,omitempty"` } -func (x *PatternFlowIpv6PayloadLengthCounter) Reset() { - *x = PatternFlowIpv6PayloadLengthCounter{} +func (x *PatternFlowVlanTpidCounter) Reset() { + *x = PatternFlowVlanTpidCounter{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[439] + mi := &file_otg_proto_msgTypes[401] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowIpv6PayloadLengthCounter) String() string { +func (x *PatternFlowVlanTpidCounter) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowIpv6PayloadLengthCounter) ProtoMessage() {} +func (*PatternFlowVlanTpidCounter) ProtoMessage() {} -func (x *PatternFlowIpv6PayloadLengthCounter) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[439] +func (x *PatternFlowVlanTpidCounter) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[401] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -55539,26 +54607,26 @@ func (x *PatternFlowIpv6PayloadLengthCounter) ProtoReflect() protoreflect.Messag return mi.MessageOf(x) } -// Deprecated: Use PatternFlowIpv6PayloadLengthCounter.ProtoReflect.Descriptor instead. -func (*PatternFlowIpv6PayloadLengthCounter) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{439} +// Deprecated: Use PatternFlowVlanTpidCounter.ProtoReflect.Descriptor instead. +func (*PatternFlowVlanTpidCounter) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{401} } -func (x *PatternFlowIpv6PayloadLengthCounter) GetStart() uint32 { +func (x *PatternFlowVlanTpidCounter) GetStart() uint32 { if x != nil && x.Start != nil { return *x.Start } return 0 } -func (x *PatternFlowIpv6PayloadLengthCounter) GetStep() uint32 { +func (x *PatternFlowVlanTpidCounter) GetStep() uint32 { if x != nil && x.Step != nil { return *x.Step } return 0 } -func (x *PatternFlowIpv6PayloadLengthCounter) GetCount() uint32 { +func (x *PatternFlowVlanTpidCounter) GetCount() uint32 { if x != nil && x.Count != nil { return *x.Count } @@ -55568,7 +54636,7 @@ func (x *PatternFlowIpv6PayloadLengthCounter) GetCount() uint32 { // Metric tag can be used to enable tracking portion of or all bits in a corresponding // header field for metrics per each applicable value. These would appear as tagged // metrics in corresponding flow metrics. -type PatternFlowIpv6PayloadLengthMetricTag struct { +type PatternFlowVlanTpidMetricTag struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields @@ -55586,23 +54654,23 @@ type PatternFlowIpv6PayloadLengthMetricTag struct { Length *uint32 `protobuf:"varint,3,opt,name=length,proto3,oneof" json:"length,omitempty"` } -func (x *PatternFlowIpv6PayloadLengthMetricTag) Reset() { - *x = PatternFlowIpv6PayloadLengthMetricTag{} +func (x *PatternFlowVlanTpidMetricTag) Reset() { + *x = PatternFlowVlanTpidMetricTag{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[440] + mi := &file_otg_proto_msgTypes[402] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowIpv6PayloadLengthMetricTag) String() string { +func (x *PatternFlowVlanTpidMetricTag) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowIpv6PayloadLengthMetricTag) ProtoMessage() {} +func (*PatternFlowVlanTpidMetricTag) ProtoMessage() {} -func (x *PatternFlowIpv6PayloadLengthMetricTag) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[440] +func (x *PatternFlowVlanTpidMetricTag) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[402] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -55613,79 +54681,74 @@ func (x *PatternFlowIpv6PayloadLengthMetricTag) ProtoReflect() protoreflect.Mess return mi.MessageOf(x) } -// Deprecated: Use PatternFlowIpv6PayloadLengthMetricTag.ProtoReflect.Descriptor instead. -func (*PatternFlowIpv6PayloadLengthMetricTag) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{440} +// Deprecated: Use PatternFlowVlanTpidMetricTag.ProtoReflect.Descriptor instead. +func (*PatternFlowVlanTpidMetricTag) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{402} } -func (x *PatternFlowIpv6PayloadLengthMetricTag) GetName() string { +func (x *PatternFlowVlanTpidMetricTag) GetName() string { if x != nil && x.Name != nil { return *x.Name } return "" } -func (x *PatternFlowIpv6PayloadLengthMetricTag) GetOffset() uint32 { +func (x *PatternFlowVlanTpidMetricTag) GetOffset() uint32 { if x != nil && x.Offset != nil { return *x.Offset } return 0 } -func (x *PatternFlowIpv6PayloadLengthMetricTag) GetLength() uint32 { +func (x *PatternFlowVlanTpidMetricTag) GetLength() uint32 { if x != nil && x.Length != nil { return *x.Length } return 0 } -// Payload length -type PatternFlowIpv6PayloadLength struct { +// Protocol identifier +type PatternFlowVlanTpid struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // Description missing in models - // default = Choice.Enum.auto - Choice *PatternFlowIpv6PayloadLength_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.PatternFlowIpv6PayloadLength_Choice_Enum,oneof" json:"choice,omitempty"` + // default = Choice.Enum.value + Choice *PatternFlowVlanTpid_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.PatternFlowVlanTpid_Choice_Enum,oneof" json:"choice,omitempty"` // Description missing in models - // default = 0 + // default = 65535 Value *uint32 `protobuf:"varint,2,opt,name=value,proto3,oneof" json:"value,omitempty"` // Description missing in models - // default = [0] + // default = [65535] Values []uint32 `protobuf:"varint,3,rep,packed,name=values,proto3" json:"values,omitempty"` - // The OTG implementation can provide a system generated - // value for this property. If the OTG is unable to generate a value - // the default value must be used. - // default = 0 - Auto *uint32 `protobuf:"varint,4,opt,name=auto,proto3,oneof" json:"auto,omitempty"` // Description missing in models - Increment *PatternFlowIpv6PayloadLengthCounter `protobuf:"bytes,6,opt,name=increment,proto3" json:"increment,omitempty"` + Increment *PatternFlowVlanTpidCounter `protobuf:"bytes,5,opt,name=increment,proto3" json:"increment,omitempty"` // Description missing in models - Decrement *PatternFlowIpv6PayloadLengthCounter `protobuf:"bytes,7,opt,name=decrement,proto3" json:"decrement,omitempty"` + Decrement *PatternFlowVlanTpidCounter `protobuf:"bytes,6,opt,name=decrement,proto3" json:"decrement,omitempty"` // One or more metric tags can be used to enable tracking portion of or all bits in // a corresponding header field for metrics per each applicable value. These would appear // as tagged metrics in corresponding flow metrics. - MetricTags []*PatternFlowIpv6PayloadLengthMetricTag `protobuf:"bytes,8,rep,name=metric_tags,json=metricTags,proto3" json:"metric_tags,omitempty"` + MetricTags []*PatternFlowVlanTpidMetricTag `protobuf:"bytes,7,rep,name=metric_tags,json=metricTags,proto3" json:"metric_tags,omitempty"` } -func (x *PatternFlowIpv6PayloadLength) Reset() { - *x = PatternFlowIpv6PayloadLength{} +func (x *PatternFlowVlanTpid) Reset() { + *x = PatternFlowVlanTpid{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[441] + mi := &file_otg_proto_msgTypes[403] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowIpv6PayloadLength) String() string { +func (x *PatternFlowVlanTpid) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowIpv6PayloadLength) ProtoMessage() {} +func (*PatternFlowVlanTpid) ProtoMessage() {} -func (x *PatternFlowIpv6PayloadLength) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[441] +func (x *PatternFlowVlanTpid) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[403] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -55696,54 +54759,47 @@ func (x *PatternFlowIpv6PayloadLength) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use PatternFlowIpv6PayloadLength.ProtoReflect.Descriptor instead. -func (*PatternFlowIpv6PayloadLength) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{441} +// Deprecated: Use PatternFlowVlanTpid.ProtoReflect.Descriptor instead. +func (*PatternFlowVlanTpid) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{403} } -func (x *PatternFlowIpv6PayloadLength) GetChoice() PatternFlowIpv6PayloadLength_Choice_Enum { +func (x *PatternFlowVlanTpid) GetChoice() PatternFlowVlanTpid_Choice_Enum { if x != nil && x.Choice != nil { return *x.Choice } - return PatternFlowIpv6PayloadLength_Choice_unspecified + return PatternFlowVlanTpid_Choice_unspecified } -func (x *PatternFlowIpv6PayloadLength) GetValue() uint32 { +func (x *PatternFlowVlanTpid) GetValue() uint32 { if x != nil && x.Value != nil { return *x.Value } return 0 } -func (x *PatternFlowIpv6PayloadLength) GetValues() []uint32 { +func (x *PatternFlowVlanTpid) GetValues() []uint32 { if x != nil { return x.Values } return nil } -func (x *PatternFlowIpv6PayloadLength) GetAuto() uint32 { - if x != nil && x.Auto != nil { - return *x.Auto - } - return 0 -} - -func (x *PatternFlowIpv6PayloadLength) GetIncrement() *PatternFlowIpv6PayloadLengthCounter { +func (x *PatternFlowVlanTpid) GetIncrement() *PatternFlowVlanTpidCounter { if x != nil { return x.Increment } return nil } -func (x *PatternFlowIpv6PayloadLength) GetDecrement() *PatternFlowIpv6PayloadLengthCounter { +func (x *PatternFlowVlanTpid) GetDecrement() *PatternFlowVlanTpidCounter { if x != nil { return x.Decrement } return nil } -func (x *PatternFlowIpv6PayloadLength) GetMetricTags() []*PatternFlowIpv6PayloadLengthMetricTag { +func (x *PatternFlowVlanTpid) GetMetricTags() []*PatternFlowVlanTpidMetricTag { if x != nil { return x.MetricTags } @@ -55751,13 +54807,13 @@ func (x *PatternFlowIpv6PayloadLength) GetMetricTags() []*PatternFlowIpv6Payload } // integer counter pattern -type PatternFlowIpv6NextHeaderCounter struct { +type PatternFlowVxlanFlagsCounter struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // Description missing in models - // default = 59 + // default = 8 Start *uint32 `protobuf:"varint,1,opt,name=start,proto3,oneof" json:"start,omitempty"` // Description missing in models // default = 1 @@ -55767,23 +54823,23 @@ type PatternFlowIpv6NextHeaderCounter struct { Count *uint32 `protobuf:"varint,3,opt,name=count,proto3,oneof" json:"count,omitempty"` } -func (x *PatternFlowIpv6NextHeaderCounter) Reset() { - *x = PatternFlowIpv6NextHeaderCounter{} +func (x *PatternFlowVxlanFlagsCounter) Reset() { + *x = PatternFlowVxlanFlagsCounter{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[442] + mi := &file_otg_proto_msgTypes[404] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowIpv6NextHeaderCounter) String() string { +func (x *PatternFlowVxlanFlagsCounter) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowIpv6NextHeaderCounter) ProtoMessage() {} +func (*PatternFlowVxlanFlagsCounter) ProtoMessage() {} -func (x *PatternFlowIpv6NextHeaderCounter) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[442] +func (x *PatternFlowVxlanFlagsCounter) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[404] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -55794,26 +54850,26 @@ func (x *PatternFlowIpv6NextHeaderCounter) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use PatternFlowIpv6NextHeaderCounter.ProtoReflect.Descriptor instead. -func (*PatternFlowIpv6NextHeaderCounter) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{442} +// Deprecated: Use PatternFlowVxlanFlagsCounter.ProtoReflect.Descriptor instead. +func (*PatternFlowVxlanFlagsCounter) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{404} } -func (x *PatternFlowIpv6NextHeaderCounter) GetStart() uint32 { +func (x *PatternFlowVxlanFlagsCounter) GetStart() uint32 { if x != nil && x.Start != nil { return *x.Start } return 0 } -func (x *PatternFlowIpv6NextHeaderCounter) GetStep() uint32 { +func (x *PatternFlowVxlanFlagsCounter) GetStep() uint32 { if x != nil && x.Step != nil { return *x.Step } return 0 } -func (x *PatternFlowIpv6NextHeaderCounter) GetCount() uint32 { +func (x *PatternFlowVxlanFlagsCounter) GetCount() uint32 { if x != nil && x.Count != nil { return *x.Count } @@ -55823,7 +54879,7 @@ func (x *PatternFlowIpv6NextHeaderCounter) GetCount() uint32 { // Metric tag can be used to enable tracking portion of or all bits in a corresponding // header field for metrics per each applicable value. These would appear as tagged // metrics in corresponding flow metrics. -type PatternFlowIpv6NextHeaderMetricTag struct { +type PatternFlowVxlanFlagsMetricTag struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields @@ -55841,23 +54897,23 @@ type PatternFlowIpv6NextHeaderMetricTag struct { Length *uint32 `protobuf:"varint,3,opt,name=length,proto3,oneof" json:"length,omitempty"` } -func (x *PatternFlowIpv6NextHeaderMetricTag) Reset() { - *x = PatternFlowIpv6NextHeaderMetricTag{} +func (x *PatternFlowVxlanFlagsMetricTag) Reset() { + *x = PatternFlowVxlanFlagsMetricTag{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[443] + mi := &file_otg_proto_msgTypes[405] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowIpv6NextHeaderMetricTag) String() string { +func (x *PatternFlowVxlanFlagsMetricTag) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowIpv6NextHeaderMetricTag) ProtoMessage() {} +func (*PatternFlowVxlanFlagsMetricTag) ProtoMessage() {} -func (x *PatternFlowIpv6NextHeaderMetricTag) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[443] +func (x *PatternFlowVxlanFlagsMetricTag) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[405] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -55868,79 +54924,76 @@ func (x *PatternFlowIpv6NextHeaderMetricTag) ProtoReflect() protoreflect.Message return mi.MessageOf(x) } -// Deprecated: Use PatternFlowIpv6NextHeaderMetricTag.ProtoReflect.Descriptor instead. -func (*PatternFlowIpv6NextHeaderMetricTag) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{443} +// Deprecated: Use PatternFlowVxlanFlagsMetricTag.ProtoReflect.Descriptor instead. +func (*PatternFlowVxlanFlagsMetricTag) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{405} } -func (x *PatternFlowIpv6NextHeaderMetricTag) GetName() string { +func (x *PatternFlowVxlanFlagsMetricTag) GetName() string { if x != nil && x.Name != nil { return *x.Name } return "" } -func (x *PatternFlowIpv6NextHeaderMetricTag) GetOffset() uint32 { +func (x *PatternFlowVxlanFlagsMetricTag) GetOffset() uint32 { if x != nil && x.Offset != nil { return *x.Offset } return 0 } -func (x *PatternFlowIpv6NextHeaderMetricTag) GetLength() uint32 { +func (x *PatternFlowVxlanFlagsMetricTag) GetLength() uint32 { if x != nil && x.Length != nil { return *x.Length } return 0 } -// Next header -type PatternFlowIpv6NextHeader struct { +// Flags field with a bit format of RRRRIRRR. The I flag MUST be set to 1 for a valid +// vxlan network id (VNI). The other 7 bits (designated R) are reserved fields and +// MUST be set to zero on transmission and ignored on receipt. +type PatternFlowVxlanFlags struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // Description missing in models - // default = Choice.Enum.auto - Choice *PatternFlowIpv6NextHeader_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.PatternFlowIpv6NextHeader_Choice_Enum,oneof" json:"choice,omitempty"` + // default = Choice.Enum.value + Choice *PatternFlowVxlanFlags_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.PatternFlowVxlanFlags_Choice_Enum,oneof" json:"choice,omitempty"` // Description missing in models - // default = 59 + // default = 8 Value *uint32 `protobuf:"varint,2,opt,name=value,proto3,oneof" json:"value,omitempty"` // Description missing in models - // default = [59] + // default = [8] Values []uint32 `protobuf:"varint,3,rep,packed,name=values,proto3" json:"values,omitempty"` - // The OTG implementation can provide a system generated - // value for this property. If the OTG is unable to generate a value - // the default value must be used. - // default = 59 - Auto *uint32 `protobuf:"varint,4,opt,name=auto,proto3,oneof" json:"auto,omitempty"` // Description missing in models - Increment *PatternFlowIpv6NextHeaderCounter `protobuf:"bytes,6,opt,name=increment,proto3" json:"increment,omitempty"` + Increment *PatternFlowVxlanFlagsCounter `protobuf:"bytes,5,opt,name=increment,proto3" json:"increment,omitempty"` // Description missing in models - Decrement *PatternFlowIpv6NextHeaderCounter `protobuf:"bytes,7,opt,name=decrement,proto3" json:"decrement,omitempty"` + Decrement *PatternFlowVxlanFlagsCounter `protobuf:"bytes,6,opt,name=decrement,proto3" json:"decrement,omitempty"` // One or more metric tags can be used to enable tracking portion of or all bits in // a corresponding header field for metrics per each applicable value. These would appear // as tagged metrics in corresponding flow metrics. - MetricTags []*PatternFlowIpv6NextHeaderMetricTag `protobuf:"bytes,8,rep,name=metric_tags,json=metricTags,proto3" json:"metric_tags,omitempty"` + MetricTags []*PatternFlowVxlanFlagsMetricTag `protobuf:"bytes,7,rep,name=metric_tags,json=metricTags,proto3" json:"metric_tags,omitempty"` } -func (x *PatternFlowIpv6NextHeader) Reset() { - *x = PatternFlowIpv6NextHeader{} +func (x *PatternFlowVxlanFlags) Reset() { + *x = PatternFlowVxlanFlags{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[444] + mi := &file_otg_proto_msgTypes[406] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowIpv6NextHeader) String() string { +func (x *PatternFlowVxlanFlags) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowIpv6NextHeader) ProtoMessage() {} +func (*PatternFlowVxlanFlags) ProtoMessage() {} -func (x *PatternFlowIpv6NextHeader) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[444] +func (x *PatternFlowVxlanFlags) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[406] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -55951,54 +55004,47 @@ func (x *PatternFlowIpv6NextHeader) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use PatternFlowIpv6NextHeader.ProtoReflect.Descriptor instead. -func (*PatternFlowIpv6NextHeader) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{444} +// Deprecated: Use PatternFlowVxlanFlags.ProtoReflect.Descriptor instead. +func (*PatternFlowVxlanFlags) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{406} } -func (x *PatternFlowIpv6NextHeader) GetChoice() PatternFlowIpv6NextHeader_Choice_Enum { +func (x *PatternFlowVxlanFlags) GetChoice() PatternFlowVxlanFlags_Choice_Enum { if x != nil && x.Choice != nil { return *x.Choice } - return PatternFlowIpv6NextHeader_Choice_unspecified + return PatternFlowVxlanFlags_Choice_unspecified } -func (x *PatternFlowIpv6NextHeader) GetValue() uint32 { +func (x *PatternFlowVxlanFlags) GetValue() uint32 { if x != nil && x.Value != nil { return *x.Value } return 0 } -func (x *PatternFlowIpv6NextHeader) GetValues() []uint32 { +func (x *PatternFlowVxlanFlags) GetValues() []uint32 { if x != nil { return x.Values } return nil } -func (x *PatternFlowIpv6NextHeader) GetAuto() uint32 { - if x != nil && x.Auto != nil { - return *x.Auto - } - return 0 -} - -func (x *PatternFlowIpv6NextHeader) GetIncrement() *PatternFlowIpv6NextHeaderCounter { +func (x *PatternFlowVxlanFlags) GetIncrement() *PatternFlowVxlanFlagsCounter { if x != nil { return x.Increment } return nil } -func (x *PatternFlowIpv6NextHeader) GetDecrement() *PatternFlowIpv6NextHeaderCounter { +func (x *PatternFlowVxlanFlags) GetDecrement() *PatternFlowVxlanFlagsCounter { if x != nil { return x.Decrement } return nil } -func (x *PatternFlowIpv6NextHeader) GetMetricTags() []*PatternFlowIpv6NextHeaderMetricTag { +func (x *PatternFlowVxlanFlags) GetMetricTags() []*PatternFlowVxlanFlagsMetricTag { if x != nil { return x.MetricTags } @@ -56006,13 +55052,13 @@ func (x *PatternFlowIpv6NextHeader) GetMetricTags() []*PatternFlowIpv6NextHeader } // integer counter pattern -type PatternFlowIpv6HopLimitCounter struct { +type PatternFlowVxlanReserved0Counter struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // Description missing in models - // default = 64 + // default = 0 Start *uint32 `protobuf:"varint,1,opt,name=start,proto3,oneof" json:"start,omitempty"` // Description missing in models // default = 1 @@ -56022,23 +55068,23 @@ type PatternFlowIpv6HopLimitCounter struct { Count *uint32 `protobuf:"varint,3,opt,name=count,proto3,oneof" json:"count,omitempty"` } -func (x *PatternFlowIpv6HopLimitCounter) Reset() { - *x = PatternFlowIpv6HopLimitCounter{} +func (x *PatternFlowVxlanReserved0Counter) Reset() { + *x = PatternFlowVxlanReserved0Counter{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[445] + mi := &file_otg_proto_msgTypes[407] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowIpv6HopLimitCounter) String() string { +func (x *PatternFlowVxlanReserved0Counter) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowIpv6HopLimitCounter) ProtoMessage() {} +func (*PatternFlowVxlanReserved0Counter) ProtoMessage() {} -func (x *PatternFlowIpv6HopLimitCounter) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[445] +func (x *PatternFlowVxlanReserved0Counter) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[407] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -56049,26 +55095,26 @@ func (x *PatternFlowIpv6HopLimitCounter) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use PatternFlowIpv6HopLimitCounter.ProtoReflect.Descriptor instead. -func (*PatternFlowIpv6HopLimitCounter) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{445} -} - -func (x *PatternFlowIpv6HopLimitCounter) GetStart() uint32 { +// Deprecated: Use PatternFlowVxlanReserved0Counter.ProtoReflect.Descriptor instead. +func (*PatternFlowVxlanReserved0Counter) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{407} +} + +func (x *PatternFlowVxlanReserved0Counter) GetStart() uint32 { if x != nil && x.Start != nil { return *x.Start } return 0 } -func (x *PatternFlowIpv6HopLimitCounter) GetStep() uint32 { +func (x *PatternFlowVxlanReserved0Counter) GetStep() uint32 { if x != nil && x.Step != nil { return *x.Step } return 0 } -func (x *PatternFlowIpv6HopLimitCounter) GetCount() uint32 { +func (x *PatternFlowVxlanReserved0Counter) GetCount() uint32 { if x != nil && x.Count != nil { return *x.Count } @@ -56078,7 +55124,7 @@ func (x *PatternFlowIpv6HopLimitCounter) GetCount() uint32 { // Metric tag can be used to enable tracking portion of or all bits in a corresponding // header field for metrics per each applicable value. These would appear as tagged // metrics in corresponding flow metrics. -type PatternFlowIpv6HopLimitMetricTag struct { +type PatternFlowVxlanReserved0MetricTag struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields @@ -56092,27 +55138,27 @@ type PatternFlowIpv6HopLimitMetricTag struct { Offset *uint32 `protobuf:"varint,2,opt,name=offset,proto3,oneof" json:"offset,omitempty"` // Number of bits to track for metrics starting from configured offset of corresponding // header field - // default = 8 + // default = 24 Length *uint32 `protobuf:"varint,3,opt,name=length,proto3,oneof" json:"length,omitempty"` } -func (x *PatternFlowIpv6HopLimitMetricTag) Reset() { - *x = PatternFlowIpv6HopLimitMetricTag{} +func (x *PatternFlowVxlanReserved0MetricTag) Reset() { + *x = PatternFlowVxlanReserved0MetricTag{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[446] + mi := &file_otg_proto_msgTypes[408] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowIpv6HopLimitMetricTag) String() string { +func (x *PatternFlowVxlanReserved0MetricTag) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowIpv6HopLimitMetricTag) ProtoMessage() {} +func (*PatternFlowVxlanReserved0MetricTag) ProtoMessage() {} -func (x *PatternFlowIpv6HopLimitMetricTag) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[446] +func (x *PatternFlowVxlanReserved0MetricTag) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[408] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -56123,74 +55169,74 @@ func (x *PatternFlowIpv6HopLimitMetricTag) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use PatternFlowIpv6HopLimitMetricTag.ProtoReflect.Descriptor instead. -func (*PatternFlowIpv6HopLimitMetricTag) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{446} +// Deprecated: Use PatternFlowVxlanReserved0MetricTag.ProtoReflect.Descriptor instead. +func (*PatternFlowVxlanReserved0MetricTag) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{408} } -func (x *PatternFlowIpv6HopLimitMetricTag) GetName() string { +func (x *PatternFlowVxlanReserved0MetricTag) GetName() string { if x != nil && x.Name != nil { return *x.Name } return "" } -func (x *PatternFlowIpv6HopLimitMetricTag) GetOffset() uint32 { +func (x *PatternFlowVxlanReserved0MetricTag) GetOffset() uint32 { if x != nil && x.Offset != nil { return *x.Offset } return 0 } -func (x *PatternFlowIpv6HopLimitMetricTag) GetLength() uint32 { +func (x *PatternFlowVxlanReserved0MetricTag) GetLength() uint32 { if x != nil && x.Length != nil { return *x.Length } return 0 } -// Hop limit -type PatternFlowIpv6HopLimit struct { +// Reserved field +type PatternFlowVxlanReserved0 struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // Description missing in models // default = Choice.Enum.value - Choice *PatternFlowIpv6HopLimit_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.PatternFlowIpv6HopLimit_Choice_Enum,oneof" json:"choice,omitempty"` + Choice *PatternFlowVxlanReserved0_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.PatternFlowVxlanReserved0_Choice_Enum,oneof" json:"choice,omitempty"` // Description missing in models - // default = 64 + // default = 0 Value *uint32 `protobuf:"varint,2,opt,name=value,proto3,oneof" json:"value,omitempty"` // Description missing in models - // default = [64] + // default = [0] Values []uint32 `protobuf:"varint,3,rep,packed,name=values,proto3" json:"values,omitempty"` // Description missing in models - Increment *PatternFlowIpv6HopLimitCounter `protobuf:"bytes,5,opt,name=increment,proto3" json:"increment,omitempty"` + Increment *PatternFlowVxlanReserved0Counter `protobuf:"bytes,5,opt,name=increment,proto3" json:"increment,omitempty"` // Description missing in models - Decrement *PatternFlowIpv6HopLimitCounter `protobuf:"bytes,6,opt,name=decrement,proto3" json:"decrement,omitempty"` + Decrement *PatternFlowVxlanReserved0Counter `protobuf:"bytes,6,opt,name=decrement,proto3" json:"decrement,omitempty"` // One or more metric tags can be used to enable tracking portion of or all bits in // a corresponding header field for metrics per each applicable value. These would appear // as tagged metrics in corresponding flow metrics. - MetricTags []*PatternFlowIpv6HopLimitMetricTag `protobuf:"bytes,7,rep,name=metric_tags,json=metricTags,proto3" json:"metric_tags,omitempty"` + MetricTags []*PatternFlowVxlanReserved0MetricTag `protobuf:"bytes,7,rep,name=metric_tags,json=metricTags,proto3" json:"metric_tags,omitempty"` } -func (x *PatternFlowIpv6HopLimit) Reset() { - *x = PatternFlowIpv6HopLimit{} +func (x *PatternFlowVxlanReserved0) Reset() { + *x = PatternFlowVxlanReserved0{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[447] + mi := &file_otg_proto_msgTypes[409] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowIpv6HopLimit) String() string { +func (x *PatternFlowVxlanReserved0) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowIpv6HopLimit) ProtoMessage() {} +func (*PatternFlowVxlanReserved0) ProtoMessage() {} -func (x *PatternFlowIpv6HopLimit) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[447] +func (x *PatternFlowVxlanReserved0) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[409] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -56201,87 +55247,87 @@ func (x *PatternFlowIpv6HopLimit) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use PatternFlowIpv6HopLimit.ProtoReflect.Descriptor instead. -func (*PatternFlowIpv6HopLimit) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{447} +// Deprecated: Use PatternFlowVxlanReserved0.ProtoReflect.Descriptor instead. +func (*PatternFlowVxlanReserved0) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{409} } -func (x *PatternFlowIpv6HopLimit) GetChoice() PatternFlowIpv6HopLimit_Choice_Enum { +func (x *PatternFlowVxlanReserved0) GetChoice() PatternFlowVxlanReserved0_Choice_Enum { if x != nil && x.Choice != nil { return *x.Choice } - return PatternFlowIpv6HopLimit_Choice_unspecified + return PatternFlowVxlanReserved0_Choice_unspecified } -func (x *PatternFlowIpv6HopLimit) GetValue() uint32 { +func (x *PatternFlowVxlanReserved0) GetValue() uint32 { if x != nil && x.Value != nil { return *x.Value } return 0 } -func (x *PatternFlowIpv6HopLimit) GetValues() []uint32 { +func (x *PatternFlowVxlanReserved0) GetValues() []uint32 { if x != nil { return x.Values } return nil } -func (x *PatternFlowIpv6HopLimit) GetIncrement() *PatternFlowIpv6HopLimitCounter { +func (x *PatternFlowVxlanReserved0) GetIncrement() *PatternFlowVxlanReserved0Counter { if x != nil { return x.Increment } return nil } -func (x *PatternFlowIpv6HopLimit) GetDecrement() *PatternFlowIpv6HopLimitCounter { +func (x *PatternFlowVxlanReserved0) GetDecrement() *PatternFlowVxlanReserved0Counter { if x != nil { return x.Decrement } return nil } -func (x *PatternFlowIpv6HopLimit) GetMetricTags() []*PatternFlowIpv6HopLimitMetricTag { +func (x *PatternFlowVxlanReserved0) GetMetricTags() []*PatternFlowVxlanReserved0MetricTag { if x != nil { return x.MetricTags } return nil } -// ipv6 counter pattern -type PatternFlowIpv6SrcCounter struct { +// integer counter pattern +type PatternFlowVxlanVniCounter struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // Description missing in models - // default = ::0 - Start *string `protobuf:"bytes,1,opt,name=start,proto3,oneof" json:"start,omitempty"` + // default = 0 + Start *uint32 `protobuf:"varint,1,opt,name=start,proto3,oneof" json:"start,omitempty"` // Description missing in models - // default = ::1 - Step *string `protobuf:"bytes,2,opt,name=step,proto3,oneof" json:"step,omitempty"` + // default = 1 + Step *uint32 `protobuf:"varint,2,opt,name=step,proto3,oneof" json:"step,omitempty"` // Description missing in models // default = 1 Count *uint32 `protobuf:"varint,3,opt,name=count,proto3,oneof" json:"count,omitempty"` } -func (x *PatternFlowIpv6SrcCounter) Reset() { - *x = PatternFlowIpv6SrcCounter{} +func (x *PatternFlowVxlanVniCounter) Reset() { + *x = PatternFlowVxlanVniCounter{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[448] + mi := &file_otg_proto_msgTypes[410] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowIpv6SrcCounter) String() string { +func (x *PatternFlowVxlanVniCounter) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowIpv6SrcCounter) ProtoMessage() {} +func (*PatternFlowVxlanVniCounter) ProtoMessage() {} -func (x *PatternFlowIpv6SrcCounter) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[448] +func (x *PatternFlowVxlanVniCounter) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[410] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -56292,26 +55338,26 @@ func (x *PatternFlowIpv6SrcCounter) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use PatternFlowIpv6SrcCounter.ProtoReflect.Descriptor instead. -func (*PatternFlowIpv6SrcCounter) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{448} +// Deprecated: Use PatternFlowVxlanVniCounter.ProtoReflect.Descriptor instead. +func (*PatternFlowVxlanVniCounter) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{410} } -func (x *PatternFlowIpv6SrcCounter) GetStart() string { +func (x *PatternFlowVxlanVniCounter) GetStart() uint32 { if x != nil && x.Start != nil { return *x.Start } - return "" + return 0 } -func (x *PatternFlowIpv6SrcCounter) GetStep() string { +func (x *PatternFlowVxlanVniCounter) GetStep() uint32 { if x != nil && x.Step != nil { return *x.Step } - return "" + return 0 } -func (x *PatternFlowIpv6SrcCounter) GetCount() uint32 { +func (x *PatternFlowVxlanVniCounter) GetCount() uint32 { if x != nil && x.Count != nil { return *x.Count } @@ -56321,7 +55367,7 @@ func (x *PatternFlowIpv6SrcCounter) GetCount() uint32 { // Metric tag can be used to enable tracking portion of or all bits in a corresponding // header field for metrics per each applicable value. These would appear as tagged // metrics in corresponding flow metrics. -type PatternFlowIpv6SrcMetricTag struct { +type PatternFlowVxlanVniMetricTag struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields @@ -56335,27 +55381,27 @@ type PatternFlowIpv6SrcMetricTag struct { Offset *uint32 `protobuf:"varint,2,opt,name=offset,proto3,oneof" json:"offset,omitempty"` // Number of bits to track for metrics starting from configured offset of corresponding // header field - // default = 128 + // default = 24 Length *uint32 `protobuf:"varint,3,opt,name=length,proto3,oneof" json:"length,omitempty"` } -func (x *PatternFlowIpv6SrcMetricTag) Reset() { - *x = PatternFlowIpv6SrcMetricTag{} +func (x *PatternFlowVxlanVniMetricTag) Reset() { + *x = PatternFlowVxlanVniMetricTag{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[449] + mi := &file_otg_proto_msgTypes[411] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowIpv6SrcMetricTag) String() string { +func (x *PatternFlowVxlanVniMetricTag) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowIpv6SrcMetricTag) ProtoMessage() {} +func (*PatternFlowVxlanVniMetricTag) ProtoMessage() {} -func (x *PatternFlowIpv6SrcMetricTag) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[449] +func (x *PatternFlowVxlanVniMetricTag) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[411] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -56366,74 +55412,79 @@ func (x *PatternFlowIpv6SrcMetricTag) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use PatternFlowIpv6SrcMetricTag.ProtoReflect.Descriptor instead. -func (*PatternFlowIpv6SrcMetricTag) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{449} +// Deprecated: Use PatternFlowVxlanVniMetricTag.ProtoReflect.Descriptor instead. +func (*PatternFlowVxlanVniMetricTag) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{411} } -func (x *PatternFlowIpv6SrcMetricTag) GetName() string { +func (x *PatternFlowVxlanVniMetricTag) GetName() string { if x != nil && x.Name != nil { return *x.Name } return "" } -func (x *PatternFlowIpv6SrcMetricTag) GetOffset() uint32 { +func (x *PatternFlowVxlanVniMetricTag) GetOffset() uint32 { if x != nil && x.Offset != nil { return *x.Offset } return 0 } -func (x *PatternFlowIpv6SrcMetricTag) GetLength() uint32 { +func (x *PatternFlowVxlanVniMetricTag) GetLength() uint32 { if x != nil && x.Length != nil { return *x.Length } return 0 } -// Source address -type PatternFlowIpv6Src struct { +// VXLAN network id +type PatternFlowVxlanVni struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // Description missing in models - // default = Choice.Enum.value - Choice *PatternFlowIpv6Src_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.PatternFlowIpv6Src_Choice_Enum,oneof" json:"choice,omitempty"` + // default = Choice.Enum.auto + Choice *PatternFlowVxlanVni_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.PatternFlowVxlanVni_Choice_Enum,oneof" json:"choice,omitempty"` // Description missing in models - // default = ::0 - Value *string `protobuf:"bytes,2,opt,name=value,proto3,oneof" json:"value,omitempty"` + // default = 0 + Value *uint32 `protobuf:"varint,2,opt,name=value,proto3,oneof" json:"value,omitempty"` // Description missing in models - // default = ['::0'] - Values []string `protobuf:"bytes,3,rep,name=values,proto3" json:"values,omitempty"` + // default = [0] + Values []uint32 `protobuf:"varint,3,rep,packed,name=values,proto3" json:"values,omitempty"` + // The OTG implementation can provide a system generated + // value for this property. If the OTG is unable to generate a value + // the default value must be used. + // default = 0 + Auto *uint32 `protobuf:"varint,4,opt,name=auto,proto3,oneof" json:"auto,omitempty"` // Description missing in models - Increment *PatternFlowIpv6SrcCounter `protobuf:"bytes,5,opt,name=increment,proto3" json:"increment,omitempty"` + Increment *PatternFlowVxlanVniCounter `protobuf:"bytes,6,opt,name=increment,proto3" json:"increment,omitempty"` // Description missing in models - Decrement *PatternFlowIpv6SrcCounter `protobuf:"bytes,6,opt,name=decrement,proto3" json:"decrement,omitempty"` + Decrement *PatternFlowVxlanVniCounter `protobuf:"bytes,7,opt,name=decrement,proto3" json:"decrement,omitempty"` // One or more metric tags can be used to enable tracking portion of or all bits in // a corresponding header field for metrics per each applicable value. These would appear // as tagged metrics in corresponding flow metrics. - MetricTags []*PatternFlowIpv6SrcMetricTag `protobuf:"bytes,7,rep,name=metric_tags,json=metricTags,proto3" json:"metric_tags,omitempty"` + MetricTags []*PatternFlowVxlanVniMetricTag `protobuf:"bytes,8,rep,name=metric_tags,json=metricTags,proto3" json:"metric_tags,omitempty"` } -func (x *PatternFlowIpv6Src) Reset() { - *x = PatternFlowIpv6Src{} +func (x *PatternFlowVxlanVni) Reset() { + *x = PatternFlowVxlanVni{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[450] + mi := &file_otg_proto_msgTypes[412] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowIpv6Src) String() string { +func (x *PatternFlowVxlanVni) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowIpv6Src) ProtoMessage() {} +func (*PatternFlowVxlanVni) ProtoMessage() {} -func (x *PatternFlowIpv6Src) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[450] +func (x *PatternFlowVxlanVni) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[412] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -56444,87 +55495,94 @@ func (x *PatternFlowIpv6Src) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use PatternFlowIpv6Src.ProtoReflect.Descriptor instead. -func (*PatternFlowIpv6Src) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{450} +// Deprecated: Use PatternFlowVxlanVni.ProtoReflect.Descriptor instead. +func (*PatternFlowVxlanVni) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{412} } -func (x *PatternFlowIpv6Src) GetChoice() PatternFlowIpv6Src_Choice_Enum { +func (x *PatternFlowVxlanVni) GetChoice() PatternFlowVxlanVni_Choice_Enum { if x != nil && x.Choice != nil { return *x.Choice } - return PatternFlowIpv6Src_Choice_unspecified + return PatternFlowVxlanVni_Choice_unspecified } -func (x *PatternFlowIpv6Src) GetValue() string { +func (x *PatternFlowVxlanVni) GetValue() uint32 { if x != nil && x.Value != nil { return *x.Value } - return "" + return 0 } -func (x *PatternFlowIpv6Src) GetValues() []string { +func (x *PatternFlowVxlanVni) GetValues() []uint32 { if x != nil { return x.Values } return nil } -func (x *PatternFlowIpv6Src) GetIncrement() *PatternFlowIpv6SrcCounter { +func (x *PatternFlowVxlanVni) GetAuto() uint32 { + if x != nil && x.Auto != nil { + return *x.Auto + } + return 0 +} + +func (x *PatternFlowVxlanVni) GetIncrement() *PatternFlowVxlanVniCounter { if x != nil { return x.Increment } return nil } -func (x *PatternFlowIpv6Src) GetDecrement() *PatternFlowIpv6SrcCounter { +func (x *PatternFlowVxlanVni) GetDecrement() *PatternFlowVxlanVniCounter { if x != nil { return x.Decrement } return nil } -func (x *PatternFlowIpv6Src) GetMetricTags() []*PatternFlowIpv6SrcMetricTag { +func (x *PatternFlowVxlanVni) GetMetricTags() []*PatternFlowVxlanVniMetricTag { if x != nil { return x.MetricTags } return nil } -// ipv6 counter pattern -type PatternFlowIpv6DstCounter struct { +// integer counter pattern +type PatternFlowVxlanReserved1Counter struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // Description missing in models - // default = ::0 - Start *string `protobuf:"bytes,1,opt,name=start,proto3,oneof" json:"start,omitempty"` + // default = 0 + Start *uint32 `protobuf:"varint,1,opt,name=start,proto3,oneof" json:"start,omitempty"` // Description missing in models - // default = ::1 - Step *string `protobuf:"bytes,2,opt,name=step,proto3,oneof" json:"step,omitempty"` + // default = 1 + Step *uint32 `protobuf:"varint,2,opt,name=step,proto3,oneof" json:"step,omitempty"` // Description missing in models // default = 1 Count *uint32 `protobuf:"varint,3,opt,name=count,proto3,oneof" json:"count,omitempty"` } -func (x *PatternFlowIpv6DstCounter) Reset() { - *x = PatternFlowIpv6DstCounter{} +func (x *PatternFlowVxlanReserved1Counter) Reset() { + *x = PatternFlowVxlanReserved1Counter{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[451] + mi := &file_otg_proto_msgTypes[413] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowIpv6DstCounter) String() string { +func (x *PatternFlowVxlanReserved1Counter) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowIpv6DstCounter) ProtoMessage() {} +func (*PatternFlowVxlanReserved1Counter) ProtoMessage() {} -func (x *PatternFlowIpv6DstCounter) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[451] +func (x *PatternFlowVxlanReserved1Counter) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[413] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -56535,26 +55593,26 @@ func (x *PatternFlowIpv6DstCounter) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use PatternFlowIpv6DstCounter.ProtoReflect.Descriptor instead. -func (*PatternFlowIpv6DstCounter) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{451} +// Deprecated: Use PatternFlowVxlanReserved1Counter.ProtoReflect.Descriptor instead. +func (*PatternFlowVxlanReserved1Counter) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{413} } -func (x *PatternFlowIpv6DstCounter) GetStart() string { +func (x *PatternFlowVxlanReserved1Counter) GetStart() uint32 { if x != nil && x.Start != nil { return *x.Start } - return "" + return 0 } -func (x *PatternFlowIpv6DstCounter) GetStep() string { +func (x *PatternFlowVxlanReserved1Counter) GetStep() uint32 { if x != nil && x.Step != nil { return *x.Step } - return "" + return 0 } -func (x *PatternFlowIpv6DstCounter) GetCount() uint32 { +func (x *PatternFlowVxlanReserved1Counter) GetCount() uint32 { if x != nil && x.Count != nil { return *x.Count } @@ -56564,7 +55622,7 @@ func (x *PatternFlowIpv6DstCounter) GetCount() uint32 { // Metric tag can be used to enable tracking portion of or all bits in a corresponding // header field for metrics per each applicable value. These would appear as tagged // metrics in corresponding flow metrics. -type PatternFlowIpv6DstMetricTag struct { +type PatternFlowVxlanReserved1MetricTag struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields @@ -56578,27 +55636,27 @@ type PatternFlowIpv6DstMetricTag struct { Offset *uint32 `protobuf:"varint,2,opt,name=offset,proto3,oneof" json:"offset,omitempty"` // Number of bits to track for metrics starting from configured offset of corresponding // header field - // default = 128 + // default = 8 Length *uint32 `protobuf:"varint,3,opt,name=length,proto3,oneof" json:"length,omitempty"` } -func (x *PatternFlowIpv6DstMetricTag) Reset() { - *x = PatternFlowIpv6DstMetricTag{} +func (x *PatternFlowVxlanReserved1MetricTag) Reset() { + *x = PatternFlowVxlanReserved1MetricTag{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[452] + mi := &file_otg_proto_msgTypes[414] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowIpv6DstMetricTag) String() string { +func (x *PatternFlowVxlanReserved1MetricTag) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowIpv6DstMetricTag) ProtoMessage() {} +func (*PatternFlowVxlanReserved1MetricTag) ProtoMessage() {} -func (x *PatternFlowIpv6DstMetricTag) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[452] +func (x *PatternFlowVxlanReserved1MetricTag) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[414] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -56609,74 +55667,74 @@ func (x *PatternFlowIpv6DstMetricTag) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use PatternFlowIpv6DstMetricTag.ProtoReflect.Descriptor instead. -func (*PatternFlowIpv6DstMetricTag) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{452} +// Deprecated: Use PatternFlowVxlanReserved1MetricTag.ProtoReflect.Descriptor instead. +func (*PatternFlowVxlanReserved1MetricTag) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{414} } -func (x *PatternFlowIpv6DstMetricTag) GetName() string { +func (x *PatternFlowVxlanReserved1MetricTag) GetName() string { if x != nil && x.Name != nil { return *x.Name } return "" } -func (x *PatternFlowIpv6DstMetricTag) GetOffset() uint32 { +func (x *PatternFlowVxlanReserved1MetricTag) GetOffset() uint32 { if x != nil && x.Offset != nil { return *x.Offset } return 0 } -func (x *PatternFlowIpv6DstMetricTag) GetLength() uint32 { +func (x *PatternFlowVxlanReserved1MetricTag) GetLength() uint32 { if x != nil && x.Length != nil { return *x.Length } return 0 } -// Destination address -type PatternFlowIpv6Dst struct { +// Reserved field +type PatternFlowVxlanReserved1 struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // Description missing in models // default = Choice.Enum.value - Choice *PatternFlowIpv6Dst_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.PatternFlowIpv6Dst_Choice_Enum,oneof" json:"choice,omitempty"` + Choice *PatternFlowVxlanReserved1_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.PatternFlowVxlanReserved1_Choice_Enum,oneof" json:"choice,omitempty"` // Description missing in models - // default = ::0 - Value *string `protobuf:"bytes,2,opt,name=value,proto3,oneof" json:"value,omitempty"` + // default = 0 + Value *uint32 `protobuf:"varint,2,opt,name=value,proto3,oneof" json:"value,omitempty"` // Description missing in models - // default = ['::0'] - Values []string `protobuf:"bytes,3,rep,name=values,proto3" json:"values,omitempty"` + // default = [0] + Values []uint32 `protobuf:"varint,3,rep,packed,name=values,proto3" json:"values,omitempty"` // Description missing in models - Increment *PatternFlowIpv6DstCounter `protobuf:"bytes,5,opt,name=increment,proto3" json:"increment,omitempty"` + Increment *PatternFlowVxlanReserved1Counter `protobuf:"bytes,5,opt,name=increment,proto3" json:"increment,omitempty"` // Description missing in models - Decrement *PatternFlowIpv6DstCounter `protobuf:"bytes,6,opt,name=decrement,proto3" json:"decrement,omitempty"` + Decrement *PatternFlowVxlanReserved1Counter `protobuf:"bytes,6,opt,name=decrement,proto3" json:"decrement,omitempty"` // One or more metric tags can be used to enable tracking portion of or all bits in // a corresponding header field for metrics per each applicable value. These would appear // as tagged metrics in corresponding flow metrics. - MetricTags []*PatternFlowIpv6DstMetricTag `protobuf:"bytes,7,rep,name=metric_tags,json=metricTags,proto3" json:"metric_tags,omitempty"` + MetricTags []*PatternFlowVxlanReserved1MetricTag `protobuf:"bytes,7,rep,name=metric_tags,json=metricTags,proto3" json:"metric_tags,omitempty"` } -func (x *PatternFlowIpv6Dst) Reset() { - *x = PatternFlowIpv6Dst{} +func (x *PatternFlowVxlanReserved1) Reset() { + *x = PatternFlowVxlanReserved1{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[453] + mi := &file_otg_proto_msgTypes[415] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowIpv6Dst) String() string { +func (x *PatternFlowVxlanReserved1) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowIpv6Dst) ProtoMessage() {} +func (*PatternFlowVxlanReserved1) ProtoMessage() {} -func (x *PatternFlowIpv6Dst) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[453] +func (x *PatternFlowVxlanReserved1) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[415] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -56687,87 +55745,87 @@ func (x *PatternFlowIpv6Dst) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use PatternFlowIpv6Dst.ProtoReflect.Descriptor instead. -func (*PatternFlowIpv6Dst) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{453} +// Deprecated: Use PatternFlowVxlanReserved1.ProtoReflect.Descriptor instead. +func (*PatternFlowVxlanReserved1) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{415} } -func (x *PatternFlowIpv6Dst) GetChoice() PatternFlowIpv6Dst_Choice_Enum { +func (x *PatternFlowVxlanReserved1) GetChoice() PatternFlowVxlanReserved1_Choice_Enum { if x != nil && x.Choice != nil { return *x.Choice } - return PatternFlowIpv6Dst_Choice_unspecified + return PatternFlowVxlanReserved1_Choice_unspecified } -func (x *PatternFlowIpv6Dst) GetValue() string { +func (x *PatternFlowVxlanReserved1) GetValue() uint32 { if x != nil && x.Value != nil { return *x.Value } - return "" + return 0 } -func (x *PatternFlowIpv6Dst) GetValues() []string { +func (x *PatternFlowVxlanReserved1) GetValues() []uint32 { if x != nil { return x.Values } return nil } -func (x *PatternFlowIpv6Dst) GetIncrement() *PatternFlowIpv6DstCounter { +func (x *PatternFlowVxlanReserved1) GetIncrement() *PatternFlowVxlanReserved1Counter { if x != nil { return x.Increment } return nil } -func (x *PatternFlowIpv6Dst) GetDecrement() *PatternFlowIpv6DstCounter { +func (x *PatternFlowVxlanReserved1) GetDecrement() *PatternFlowVxlanReserved1Counter { if x != nil { return x.Decrement } return nil } -func (x *PatternFlowIpv6Dst) GetMetricTags() []*PatternFlowIpv6DstMetricTag { +func (x *PatternFlowVxlanReserved1) GetMetricTags() []*PatternFlowVxlanReserved1MetricTag { if x != nil { return x.MetricTags } return nil } -// mac counter pattern -type PatternFlowPfcPauseDstCounter struct { +// integer counter pattern +type PatternFlowIpv4VersionCounter struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // Description missing in models - // default = 01:80:c2:00:00:01 - Start *string `protobuf:"bytes,1,opt,name=start,proto3,oneof" json:"start,omitempty"` + // default = 4 + Start *uint32 `protobuf:"varint,1,opt,name=start,proto3,oneof" json:"start,omitempty"` // Description missing in models - // default = 00:00:00:00:00:01 - Step *string `protobuf:"bytes,2,opt,name=step,proto3,oneof" json:"step,omitempty"` + // default = 1 + Step *uint32 `protobuf:"varint,2,opt,name=step,proto3,oneof" json:"step,omitempty"` // Description missing in models // default = 1 Count *uint32 `protobuf:"varint,3,opt,name=count,proto3,oneof" json:"count,omitempty"` } -func (x *PatternFlowPfcPauseDstCounter) Reset() { - *x = PatternFlowPfcPauseDstCounter{} +func (x *PatternFlowIpv4VersionCounter) Reset() { + *x = PatternFlowIpv4VersionCounter{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[454] + mi := &file_otg_proto_msgTypes[416] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowPfcPauseDstCounter) String() string { +func (x *PatternFlowIpv4VersionCounter) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowPfcPauseDstCounter) ProtoMessage() {} +func (*PatternFlowIpv4VersionCounter) ProtoMessage() {} -func (x *PatternFlowPfcPauseDstCounter) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[454] +func (x *PatternFlowIpv4VersionCounter) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[416] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -56778,26 +55836,26 @@ func (x *PatternFlowPfcPauseDstCounter) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use PatternFlowPfcPauseDstCounter.ProtoReflect.Descriptor instead. -func (*PatternFlowPfcPauseDstCounter) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{454} +// Deprecated: Use PatternFlowIpv4VersionCounter.ProtoReflect.Descriptor instead. +func (*PatternFlowIpv4VersionCounter) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{416} } -func (x *PatternFlowPfcPauseDstCounter) GetStart() string { +func (x *PatternFlowIpv4VersionCounter) GetStart() uint32 { if x != nil && x.Start != nil { return *x.Start } - return "" + return 0 } -func (x *PatternFlowPfcPauseDstCounter) GetStep() string { +func (x *PatternFlowIpv4VersionCounter) GetStep() uint32 { if x != nil && x.Step != nil { return *x.Step } - return "" + return 0 } -func (x *PatternFlowPfcPauseDstCounter) GetCount() uint32 { +func (x *PatternFlowIpv4VersionCounter) GetCount() uint32 { if x != nil && x.Count != nil { return *x.Count } @@ -56807,7 +55865,7 @@ func (x *PatternFlowPfcPauseDstCounter) GetCount() uint32 { // Metric tag can be used to enable tracking portion of or all bits in a corresponding // header field for metrics per each applicable value. These would appear as tagged // metrics in corresponding flow metrics. -type PatternFlowPfcPauseDstMetricTag struct { +type PatternFlowIpv4VersionMetricTag struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields @@ -56821,27 +55879,27 @@ type PatternFlowPfcPauseDstMetricTag struct { Offset *uint32 `protobuf:"varint,2,opt,name=offset,proto3,oneof" json:"offset,omitempty"` // Number of bits to track for metrics starting from configured offset of corresponding // header field - // default = 48 + // default = 4 Length *uint32 `protobuf:"varint,3,opt,name=length,proto3,oneof" json:"length,omitempty"` } -func (x *PatternFlowPfcPauseDstMetricTag) Reset() { - *x = PatternFlowPfcPauseDstMetricTag{} +func (x *PatternFlowIpv4VersionMetricTag) Reset() { + *x = PatternFlowIpv4VersionMetricTag{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[455] + mi := &file_otg_proto_msgTypes[417] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowPfcPauseDstMetricTag) String() string { +func (x *PatternFlowIpv4VersionMetricTag) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowPfcPauseDstMetricTag) ProtoMessage() {} +func (*PatternFlowIpv4VersionMetricTag) ProtoMessage() {} -func (x *PatternFlowPfcPauseDstMetricTag) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[455] +func (x *PatternFlowIpv4VersionMetricTag) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[417] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -56852,74 +55910,74 @@ func (x *PatternFlowPfcPauseDstMetricTag) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use PatternFlowPfcPauseDstMetricTag.ProtoReflect.Descriptor instead. -func (*PatternFlowPfcPauseDstMetricTag) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{455} +// Deprecated: Use PatternFlowIpv4VersionMetricTag.ProtoReflect.Descriptor instead. +func (*PatternFlowIpv4VersionMetricTag) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{417} } -func (x *PatternFlowPfcPauseDstMetricTag) GetName() string { +func (x *PatternFlowIpv4VersionMetricTag) GetName() string { if x != nil && x.Name != nil { return *x.Name } return "" } -func (x *PatternFlowPfcPauseDstMetricTag) GetOffset() uint32 { +func (x *PatternFlowIpv4VersionMetricTag) GetOffset() uint32 { if x != nil && x.Offset != nil { return *x.Offset } return 0 } -func (x *PatternFlowPfcPauseDstMetricTag) GetLength() uint32 { +func (x *PatternFlowIpv4VersionMetricTag) GetLength() uint32 { if x != nil && x.Length != nil { return *x.Length } return 0 } -// Destination MAC address -type PatternFlowPfcPauseDst struct { +// Version +type PatternFlowIpv4Version struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // Description missing in models // default = Choice.Enum.value - Choice *PatternFlowPfcPauseDst_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.PatternFlowPfcPauseDst_Choice_Enum,oneof" json:"choice,omitempty"` + Choice *PatternFlowIpv4Version_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.PatternFlowIpv4Version_Choice_Enum,oneof" json:"choice,omitempty"` // Description missing in models - // default = 01:80:c2:00:00:01 - Value *string `protobuf:"bytes,2,opt,name=value,proto3,oneof" json:"value,omitempty"` + // default = 4 + Value *uint32 `protobuf:"varint,2,opt,name=value,proto3,oneof" json:"value,omitempty"` // Description missing in models - // default = ['01:80:c2:00:00:01'] - Values []string `protobuf:"bytes,3,rep,name=values,proto3" json:"values,omitempty"` + // default = [4] + Values []uint32 `protobuf:"varint,3,rep,packed,name=values,proto3" json:"values,omitempty"` // Description missing in models - Increment *PatternFlowPfcPauseDstCounter `protobuf:"bytes,5,opt,name=increment,proto3" json:"increment,omitempty"` + Increment *PatternFlowIpv4VersionCounter `protobuf:"bytes,5,opt,name=increment,proto3" json:"increment,omitempty"` // Description missing in models - Decrement *PatternFlowPfcPauseDstCounter `protobuf:"bytes,6,opt,name=decrement,proto3" json:"decrement,omitempty"` + Decrement *PatternFlowIpv4VersionCounter `protobuf:"bytes,6,opt,name=decrement,proto3" json:"decrement,omitempty"` // One or more metric tags can be used to enable tracking portion of or all bits in // a corresponding header field for metrics per each applicable value. These would appear // as tagged metrics in corresponding flow metrics. - MetricTags []*PatternFlowPfcPauseDstMetricTag `protobuf:"bytes,7,rep,name=metric_tags,json=metricTags,proto3" json:"metric_tags,omitempty"` + MetricTags []*PatternFlowIpv4VersionMetricTag `protobuf:"bytes,7,rep,name=metric_tags,json=metricTags,proto3" json:"metric_tags,omitempty"` } -func (x *PatternFlowPfcPauseDst) Reset() { - *x = PatternFlowPfcPauseDst{} +func (x *PatternFlowIpv4Version) Reset() { + *x = PatternFlowIpv4Version{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[456] + mi := &file_otg_proto_msgTypes[418] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowPfcPauseDst) String() string { +func (x *PatternFlowIpv4Version) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowPfcPauseDst) ProtoMessage() {} +func (*PatternFlowIpv4Version) ProtoMessage() {} -func (x *PatternFlowPfcPauseDst) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[456] +func (x *PatternFlowIpv4Version) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[418] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -56930,87 +55988,87 @@ func (x *PatternFlowPfcPauseDst) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use PatternFlowPfcPauseDst.ProtoReflect.Descriptor instead. -func (*PatternFlowPfcPauseDst) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{456} +// Deprecated: Use PatternFlowIpv4Version.ProtoReflect.Descriptor instead. +func (*PatternFlowIpv4Version) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{418} } -func (x *PatternFlowPfcPauseDst) GetChoice() PatternFlowPfcPauseDst_Choice_Enum { +func (x *PatternFlowIpv4Version) GetChoice() PatternFlowIpv4Version_Choice_Enum { if x != nil && x.Choice != nil { return *x.Choice } - return PatternFlowPfcPauseDst_Choice_unspecified + return PatternFlowIpv4Version_Choice_unspecified } -func (x *PatternFlowPfcPauseDst) GetValue() string { +func (x *PatternFlowIpv4Version) GetValue() uint32 { if x != nil && x.Value != nil { return *x.Value } - return "" + return 0 } -func (x *PatternFlowPfcPauseDst) GetValues() []string { +func (x *PatternFlowIpv4Version) GetValues() []uint32 { if x != nil { return x.Values } return nil } -func (x *PatternFlowPfcPauseDst) GetIncrement() *PatternFlowPfcPauseDstCounter { +func (x *PatternFlowIpv4Version) GetIncrement() *PatternFlowIpv4VersionCounter { if x != nil { return x.Increment } return nil } -func (x *PatternFlowPfcPauseDst) GetDecrement() *PatternFlowPfcPauseDstCounter { +func (x *PatternFlowIpv4Version) GetDecrement() *PatternFlowIpv4VersionCounter { if x != nil { return x.Decrement } return nil } -func (x *PatternFlowPfcPauseDst) GetMetricTags() []*PatternFlowPfcPauseDstMetricTag { +func (x *PatternFlowIpv4Version) GetMetricTags() []*PatternFlowIpv4VersionMetricTag { if x != nil { return x.MetricTags } return nil } -// mac counter pattern -type PatternFlowPfcPauseSrcCounter struct { +// integer counter pattern +type PatternFlowIpv4HeaderLengthCounter struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // Description missing in models - // default = 00:00:00:00:00:00 - Start *string `protobuf:"bytes,1,opt,name=start,proto3,oneof" json:"start,omitempty"` + // default = 5 + Start *uint32 `protobuf:"varint,1,opt,name=start,proto3,oneof" json:"start,omitempty"` // Description missing in models - // default = 00:00:00:00:00:01 - Step *string `protobuf:"bytes,2,opt,name=step,proto3,oneof" json:"step,omitempty"` + // default = 1 + Step *uint32 `protobuf:"varint,2,opt,name=step,proto3,oneof" json:"step,omitempty"` // Description missing in models // default = 1 Count *uint32 `protobuf:"varint,3,opt,name=count,proto3,oneof" json:"count,omitempty"` } -func (x *PatternFlowPfcPauseSrcCounter) Reset() { - *x = PatternFlowPfcPauseSrcCounter{} +func (x *PatternFlowIpv4HeaderLengthCounter) Reset() { + *x = PatternFlowIpv4HeaderLengthCounter{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[457] + mi := &file_otg_proto_msgTypes[419] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowPfcPauseSrcCounter) String() string { +func (x *PatternFlowIpv4HeaderLengthCounter) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowPfcPauseSrcCounter) ProtoMessage() {} +func (*PatternFlowIpv4HeaderLengthCounter) ProtoMessage() {} -func (x *PatternFlowPfcPauseSrcCounter) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[457] +func (x *PatternFlowIpv4HeaderLengthCounter) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[419] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -57021,26 +56079,26 @@ func (x *PatternFlowPfcPauseSrcCounter) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use PatternFlowPfcPauseSrcCounter.ProtoReflect.Descriptor instead. -func (*PatternFlowPfcPauseSrcCounter) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{457} +// Deprecated: Use PatternFlowIpv4HeaderLengthCounter.ProtoReflect.Descriptor instead. +func (*PatternFlowIpv4HeaderLengthCounter) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{419} } -func (x *PatternFlowPfcPauseSrcCounter) GetStart() string { +func (x *PatternFlowIpv4HeaderLengthCounter) GetStart() uint32 { if x != nil && x.Start != nil { return *x.Start } - return "" + return 0 } -func (x *PatternFlowPfcPauseSrcCounter) GetStep() string { +func (x *PatternFlowIpv4HeaderLengthCounter) GetStep() uint32 { if x != nil && x.Step != nil { return *x.Step } - return "" + return 0 } -func (x *PatternFlowPfcPauseSrcCounter) GetCount() uint32 { +func (x *PatternFlowIpv4HeaderLengthCounter) GetCount() uint32 { if x != nil && x.Count != nil { return *x.Count } @@ -57050,7 +56108,7 @@ func (x *PatternFlowPfcPauseSrcCounter) GetCount() uint32 { // Metric tag can be used to enable tracking portion of or all bits in a corresponding // header field for metrics per each applicable value. These would appear as tagged // metrics in corresponding flow metrics. -type PatternFlowPfcPauseSrcMetricTag struct { +type PatternFlowIpv4HeaderLengthMetricTag struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields @@ -57064,27 +56122,27 @@ type PatternFlowPfcPauseSrcMetricTag struct { Offset *uint32 `protobuf:"varint,2,opt,name=offset,proto3,oneof" json:"offset,omitempty"` // Number of bits to track for metrics starting from configured offset of corresponding // header field - // default = 48 + // default = 4 Length *uint32 `protobuf:"varint,3,opt,name=length,proto3,oneof" json:"length,omitempty"` } -func (x *PatternFlowPfcPauseSrcMetricTag) Reset() { - *x = PatternFlowPfcPauseSrcMetricTag{} +func (x *PatternFlowIpv4HeaderLengthMetricTag) Reset() { + *x = PatternFlowIpv4HeaderLengthMetricTag{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[458] + mi := &file_otg_proto_msgTypes[420] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowPfcPauseSrcMetricTag) String() string { +func (x *PatternFlowIpv4HeaderLengthMetricTag) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowPfcPauseSrcMetricTag) ProtoMessage() {} +func (*PatternFlowIpv4HeaderLengthMetricTag) ProtoMessage() {} -func (x *PatternFlowPfcPauseSrcMetricTag) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[458] +func (x *PatternFlowIpv4HeaderLengthMetricTag) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[420] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -57095,74 +56153,79 @@ func (x *PatternFlowPfcPauseSrcMetricTag) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use PatternFlowPfcPauseSrcMetricTag.ProtoReflect.Descriptor instead. -func (*PatternFlowPfcPauseSrcMetricTag) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{458} +// Deprecated: Use PatternFlowIpv4HeaderLengthMetricTag.ProtoReflect.Descriptor instead. +func (*PatternFlowIpv4HeaderLengthMetricTag) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{420} } -func (x *PatternFlowPfcPauseSrcMetricTag) GetName() string { +func (x *PatternFlowIpv4HeaderLengthMetricTag) GetName() string { if x != nil && x.Name != nil { return *x.Name } return "" } -func (x *PatternFlowPfcPauseSrcMetricTag) GetOffset() uint32 { +func (x *PatternFlowIpv4HeaderLengthMetricTag) GetOffset() uint32 { if x != nil && x.Offset != nil { return *x.Offset } return 0 } -func (x *PatternFlowPfcPauseSrcMetricTag) GetLength() uint32 { +func (x *PatternFlowIpv4HeaderLengthMetricTag) GetLength() uint32 { if x != nil && x.Length != nil { return *x.Length } return 0 } -// Source MAC address -type PatternFlowPfcPauseSrc struct { +// Header length +type PatternFlowIpv4HeaderLength struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // Description missing in models - // default = Choice.Enum.value - Choice *PatternFlowPfcPauseSrc_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.PatternFlowPfcPauseSrc_Choice_Enum,oneof" json:"choice,omitempty"` + // default = Choice.Enum.auto + Choice *PatternFlowIpv4HeaderLength_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.PatternFlowIpv4HeaderLength_Choice_Enum,oneof" json:"choice,omitempty"` // Description missing in models - // default = 00:00:00:00:00:00 - Value *string `protobuf:"bytes,2,opt,name=value,proto3,oneof" json:"value,omitempty"` + // default = 5 + Value *uint32 `protobuf:"varint,2,opt,name=value,proto3,oneof" json:"value,omitempty"` // Description missing in models - // default = ['00:00:00:00:00:00'] - Values []string `protobuf:"bytes,3,rep,name=values,proto3" json:"values,omitempty"` + // default = [5] + Values []uint32 `protobuf:"varint,3,rep,packed,name=values,proto3" json:"values,omitempty"` + // The OTG implementation can provide a system generated + // value for this property. If the OTG is unable to generate a value + // the default value must be used. + // default = 5 + Auto *uint32 `protobuf:"varint,4,opt,name=auto,proto3,oneof" json:"auto,omitempty"` // Description missing in models - Increment *PatternFlowPfcPauseSrcCounter `protobuf:"bytes,5,opt,name=increment,proto3" json:"increment,omitempty"` + Increment *PatternFlowIpv4HeaderLengthCounter `protobuf:"bytes,6,opt,name=increment,proto3" json:"increment,omitempty"` // Description missing in models - Decrement *PatternFlowPfcPauseSrcCounter `protobuf:"bytes,6,opt,name=decrement,proto3" json:"decrement,omitempty"` + Decrement *PatternFlowIpv4HeaderLengthCounter `protobuf:"bytes,7,opt,name=decrement,proto3" json:"decrement,omitempty"` // One or more metric tags can be used to enable tracking portion of or all bits in // a corresponding header field for metrics per each applicable value. These would appear // as tagged metrics in corresponding flow metrics. - MetricTags []*PatternFlowPfcPauseSrcMetricTag `protobuf:"bytes,7,rep,name=metric_tags,json=metricTags,proto3" json:"metric_tags,omitempty"` + MetricTags []*PatternFlowIpv4HeaderLengthMetricTag `protobuf:"bytes,8,rep,name=metric_tags,json=metricTags,proto3" json:"metric_tags,omitempty"` } -func (x *PatternFlowPfcPauseSrc) Reset() { - *x = PatternFlowPfcPauseSrc{} +func (x *PatternFlowIpv4HeaderLength) Reset() { + *x = PatternFlowIpv4HeaderLength{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[459] + mi := &file_otg_proto_msgTypes[421] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowPfcPauseSrc) String() string { +func (x *PatternFlowIpv4HeaderLength) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowPfcPauseSrc) ProtoMessage() {} +func (*PatternFlowIpv4HeaderLength) ProtoMessage() {} -func (x *PatternFlowPfcPauseSrc) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[459] +func (x *PatternFlowIpv4HeaderLength) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[421] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -57173,47 +56236,54 @@ func (x *PatternFlowPfcPauseSrc) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use PatternFlowPfcPauseSrc.ProtoReflect.Descriptor instead. -func (*PatternFlowPfcPauseSrc) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{459} +// Deprecated: Use PatternFlowIpv4HeaderLength.ProtoReflect.Descriptor instead. +func (*PatternFlowIpv4HeaderLength) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{421} } -func (x *PatternFlowPfcPauseSrc) GetChoice() PatternFlowPfcPauseSrc_Choice_Enum { +func (x *PatternFlowIpv4HeaderLength) GetChoice() PatternFlowIpv4HeaderLength_Choice_Enum { if x != nil && x.Choice != nil { return *x.Choice } - return PatternFlowPfcPauseSrc_Choice_unspecified + return PatternFlowIpv4HeaderLength_Choice_unspecified } -func (x *PatternFlowPfcPauseSrc) GetValue() string { +func (x *PatternFlowIpv4HeaderLength) GetValue() uint32 { if x != nil && x.Value != nil { return *x.Value } - return "" + return 0 } -func (x *PatternFlowPfcPauseSrc) GetValues() []string { +func (x *PatternFlowIpv4HeaderLength) GetValues() []uint32 { if x != nil { return x.Values } return nil } -func (x *PatternFlowPfcPauseSrc) GetIncrement() *PatternFlowPfcPauseSrcCounter { +func (x *PatternFlowIpv4HeaderLength) GetAuto() uint32 { + if x != nil && x.Auto != nil { + return *x.Auto + } + return 0 +} + +func (x *PatternFlowIpv4HeaderLength) GetIncrement() *PatternFlowIpv4HeaderLengthCounter { if x != nil { return x.Increment } return nil } -func (x *PatternFlowPfcPauseSrc) GetDecrement() *PatternFlowPfcPauseSrcCounter { +func (x *PatternFlowIpv4HeaderLength) GetDecrement() *PatternFlowIpv4HeaderLengthCounter { if x != nil { return x.Decrement } return nil } -func (x *PatternFlowPfcPauseSrc) GetMetricTags() []*PatternFlowPfcPauseSrcMetricTag { +func (x *PatternFlowIpv4HeaderLength) GetMetricTags() []*PatternFlowIpv4HeaderLengthMetricTag { if x != nil { return x.MetricTags } @@ -57221,13 +56291,13 @@ func (x *PatternFlowPfcPauseSrc) GetMetricTags() []*PatternFlowPfcPauseSrcMetric } // integer counter pattern -type PatternFlowPfcPauseEtherTypeCounter struct { +type PatternFlowIpv4TotalLengthCounter struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // Description missing in models - // default = 34824 + // default = 46 Start *uint32 `protobuf:"varint,1,opt,name=start,proto3,oneof" json:"start,omitempty"` // Description missing in models // default = 1 @@ -57237,23 +56307,23 @@ type PatternFlowPfcPauseEtherTypeCounter struct { Count *uint32 `protobuf:"varint,3,opt,name=count,proto3,oneof" json:"count,omitempty"` } -func (x *PatternFlowPfcPauseEtherTypeCounter) Reset() { - *x = PatternFlowPfcPauseEtherTypeCounter{} +func (x *PatternFlowIpv4TotalLengthCounter) Reset() { + *x = PatternFlowIpv4TotalLengthCounter{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[460] + mi := &file_otg_proto_msgTypes[422] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowPfcPauseEtherTypeCounter) String() string { +func (x *PatternFlowIpv4TotalLengthCounter) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowPfcPauseEtherTypeCounter) ProtoMessage() {} +func (*PatternFlowIpv4TotalLengthCounter) ProtoMessage() {} -func (x *PatternFlowPfcPauseEtherTypeCounter) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[460] +func (x *PatternFlowIpv4TotalLengthCounter) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[422] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -57264,26 +56334,26 @@ func (x *PatternFlowPfcPauseEtherTypeCounter) ProtoReflect() protoreflect.Messag return mi.MessageOf(x) } -// Deprecated: Use PatternFlowPfcPauseEtherTypeCounter.ProtoReflect.Descriptor instead. -func (*PatternFlowPfcPauseEtherTypeCounter) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{460} +// Deprecated: Use PatternFlowIpv4TotalLengthCounter.ProtoReflect.Descriptor instead. +func (*PatternFlowIpv4TotalLengthCounter) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{422} } -func (x *PatternFlowPfcPauseEtherTypeCounter) GetStart() uint32 { +func (x *PatternFlowIpv4TotalLengthCounter) GetStart() uint32 { if x != nil && x.Start != nil { return *x.Start } return 0 } -func (x *PatternFlowPfcPauseEtherTypeCounter) GetStep() uint32 { +func (x *PatternFlowIpv4TotalLengthCounter) GetStep() uint32 { if x != nil && x.Step != nil { return *x.Step } return 0 } -func (x *PatternFlowPfcPauseEtherTypeCounter) GetCount() uint32 { +func (x *PatternFlowIpv4TotalLengthCounter) GetCount() uint32 { if x != nil && x.Count != nil { return *x.Count } @@ -57293,7 +56363,7 @@ func (x *PatternFlowPfcPauseEtherTypeCounter) GetCount() uint32 { // Metric tag can be used to enable tracking portion of or all bits in a corresponding // header field for metrics per each applicable value. These would appear as tagged // metrics in corresponding flow metrics. -type PatternFlowPfcPauseEtherTypeMetricTag struct { +type PatternFlowIpv4TotalLengthMetricTag struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields @@ -57311,23 +56381,23 @@ type PatternFlowPfcPauseEtherTypeMetricTag struct { Length *uint32 `protobuf:"varint,3,opt,name=length,proto3,oneof" json:"length,omitempty"` } -func (x *PatternFlowPfcPauseEtherTypeMetricTag) Reset() { - *x = PatternFlowPfcPauseEtherTypeMetricTag{} +func (x *PatternFlowIpv4TotalLengthMetricTag) Reset() { + *x = PatternFlowIpv4TotalLengthMetricTag{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[461] + mi := &file_otg_proto_msgTypes[423] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowPfcPauseEtherTypeMetricTag) String() string { +func (x *PatternFlowIpv4TotalLengthMetricTag) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowPfcPauseEtherTypeMetricTag) ProtoMessage() {} +func (*PatternFlowIpv4TotalLengthMetricTag) ProtoMessage() {} -func (x *PatternFlowPfcPauseEtherTypeMetricTag) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[461] +func (x *PatternFlowIpv4TotalLengthMetricTag) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[423] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -57338,74 +56408,79 @@ func (x *PatternFlowPfcPauseEtherTypeMetricTag) ProtoReflect() protoreflect.Mess return mi.MessageOf(x) } -// Deprecated: Use PatternFlowPfcPauseEtherTypeMetricTag.ProtoReflect.Descriptor instead. -func (*PatternFlowPfcPauseEtherTypeMetricTag) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{461} +// Deprecated: Use PatternFlowIpv4TotalLengthMetricTag.ProtoReflect.Descriptor instead. +func (*PatternFlowIpv4TotalLengthMetricTag) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{423} } -func (x *PatternFlowPfcPauseEtherTypeMetricTag) GetName() string { +func (x *PatternFlowIpv4TotalLengthMetricTag) GetName() string { if x != nil && x.Name != nil { return *x.Name } return "" } -func (x *PatternFlowPfcPauseEtherTypeMetricTag) GetOffset() uint32 { +func (x *PatternFlowIpv4TotalLengthMetricTag) GetOffset() uint32 { if x != nil && x.Offset != nil { return *x.Offset } return 0 } -func (x *PatternFlowPfcPauseEtherTypeMetricTag) GetLength() uint32 { +func (x *PatternFlowIpv4TotalLengthMetricTag) GetLength() uint32 { if x != nil && x.Length != nil { return *x.Length } return 0 } -// Ethernet type -type PatternFlowPfcPauseEtherType struct { +// Total length +type PatternFlowIpv4TotalLength struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // Description missing in models - // default = Choice.Enum.value - Choice *PatternFlowPfcPauseEtherType_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.PatternFlowPfcPauseEtherType_Choice_Enum,oneof" json:"choice,omitempty"` + // default = Choice.Enum.auto + Choice *PatternFlowIpv4TotalLength_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.PatternFlowIpv4TotalLength_Choice_Enum,oneof" json:"choice,omitempty"` // Description missing in models - // default = 34824 + // default = 46 Value *uint32 `protobuf:"varint,2,opt,name=value,proto3,oneof" json:"value,omitempty"` // Description missing in models - // default = [34824] + // default = [46] Values []uint32 `protobuf:"varint,3,rep,packed,name=values,proto3" json:"values,omitempty"` + // The OTG implementation can provide a system generated + // value for this property. If the OTG is unable to generate a value + // the default value must be used. + // default = 46 + Auto *uint32 `protobuf:"varint,4,opt,name=auto,proto3,oneof" json:"auto,omitempty"` // Description missing in models - Increment *PatternFlowPfcPauseEtherTypeCounter `protobuf:"bytes,5,opt,name=increment,proto3" json:"increment,omitempty"` + Increment *PatternFlowIpv4TotalLengthCounter `protobuf:"bytes,6,opt,name=increment,proto3" json:"increment,omitempty"` // Description missing in models - Decrement *PatternFlowPfcPauseEtherTypeCounter `protobuf:"bytes,6,opt,name=decrement,proto3" json:"decrement,omitempty"` + Decrement *PatternFlowIpv4TotalLengthCounter `protobuf:"bytes,7,opt,name=decrement,proto3" json:"decrement,omitempty"` // One or more metric tags can be used to enable tracking portion of or all bits in // a corresponding header field for metrics per each applicable value. These would appear // as tagged metrics in corresponding flow metrics. - MetricTags []*PatternFlowPfcPauseEtherTypeMetricTag `protobuf:"bytes,7,rep,name=metric_tags,json=metricTags,proto3" json:"metric_tags,omitempty"` + MetricTags []*PatternFlowIpv4TotalLengthMetricTag `protobuf:"bytes,8,rep,name=metric_tags,json=metricTags,proto3" json:"metric_tags,omitempty"` } -func (x *PatternFlowPfcPauseEtherType) Reset() { - *x = PatternFlowPfcPauseEtherType{} +func (x *PatternFlowIpv4TotalLength) Reset() { + *x = PatternFlowIpv4TotalLength{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[462] + mi := &file_otg_proto_msgTypes[424] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowPfcPauseEtherType) String() string { +func (x *PatternFlowIpv4TotalLength) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowPfcPauseEtherType) ProtoMessage() {} +func (*PatternFlowIpv4TotalLength) ProtoMessage() {} -func (x *PatternFlowPfcPauseEtherType) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[462] +func (x *PatternFlowIpv4TotalLength) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[424] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -57416,47 +56491,54 @@ func (x *PatternFlowPfcPauseEtherType) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use PatternFlowPfcPauseEtherType.ProtoReflect.Descriptor instead. -func (*PatternFlowPfcPauseEtherType) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{462} +// Deprecated: Use PatternFlowIpv4TotalLength.ProtoReflect.Descriptor instead. +func (*PatternFlowIpv4TotalLength) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{424} } -func (x *PatternFlowPfcPauseEtherType) GetChoice() PatternFlowPfcPauseEtherType_Choice_Enum { +func (x *PatternFlowIpv4TotalLength) GetChoice() PatternFlowIpv4TotalLength_Choice_Enum { if x != nil && x.Choice != nil { return *x.Choice } - return PatternFlowPfcPauseEtherType_Choice_unspecified + return PatternFlowIpv4TotalLength_Choice_unspecified } -func (x *PatternFlowPfcPauseEtherType) GetValue() uint32 { +func (x *PatternFlowIpv4TotalLength) GetValue() uint32 { if x != nil && x.Value != nil { return *x.Value } return 0 } -func (x *PatternFlowPfcPauseEtherType) GetValues() []uint32 { +func (x *PatternFlowIpv4TotalLength) GetValues() []uint32 { if x != nil { return x.Values } return nil } -func (x *PatternFlowPfcPauseEtherType) GetIncrement() *PatternFlowPfcPauseEtherTypeCounter { +func (x *PatternFlowIpv4TotalLength) GetAuto() uint32 { + if x != nil && x.Auto != nil { + return *x.Auto + } + return 0 +} + +func (x *PatternFlowIpv4TotalLength) GetIncrement() *PatternFlowIpv4TotalLengthCounter { if x != nil { return x.Increment } return nil } -func (x *PatternFlowPfcPauseEtherType) GetDecrement() *PatternFlowPfcPauseEtherTypeCounter { +func (x *PatternFlowIpv4TotalLength) GetDecrement() *PatternFlowIpv4TotalLengthCounter { if x != nil { return x.Decrement } return nil } -func (x *PatternFlowPfcPauseEtherType) GetMetricTags() []*PatternFlowPfcPauseEtherTypeMetricTag { +func (x *PatternFlowIpv4TotalLength) GetMetricTags() []*PatternFlowIpv4TotalLengthMetricTag { if x != nil { return x.MetricTags } @@ -57464,13 +56546,13 @@ func (x *PatternFlowPfcPauseEtherType) GetMetricTags() []*PatternFlowPfcPauseEth } // integer counter pattern -type PatternFlowPfcPauseControlOpCodeCounter struct { +type PatternFlowIpv4IdentificationCounter struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // Description missing in models - // default = 257 + // default = 0 Start *uint32 `protobuf:"varint,1,opt,name=start,proto3,oneof" json:"start,omitempty"` // Description missing in models // default = 1 @@ -57480,23 +56562,23 @@ type PatternFlowPfcPauseControlOpCodeCounter struct { Count *uint32 `protobuf:"varint,3,opt,name=count,proto3,oneof" json:"count,omitempty"` } -func (x *PatternFlowPfcPauseControlOpCodeCounter) Reset() { - *x = PatternFlowPfcPauseControlOpCodeCounter{} +func (x *PatternFlowIpv4IdentificationCounter) Reset() { + *x = PatternFlowIpv4IdentificationCounter{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[463] + mi := &file_otg_proto_msgTypes[425] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowPfcPauseControlOpCodeCounter) String() string { +func (x *PatternFlowIpv4IdentificationCounter) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowPfcPauseControlOpCodeCounter) ProtoMessage() {} +func (*PatternFlowIpv4IdentificationCounter) ProtoMessage() {} -func (x *PatternFlowPfcPauseControlOpCodeCounter) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[463] +func (x *PatternFlowIpv4IdentificationCounter) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[425] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -57507,26 +56589,26 @@ func (x *PatternFlowPfcPauseControlOpCodeCounter) ProtoReflect() protoreflect.Me return mi.MessageOf(x) } -// Deprecated: Use PatternFlowPfcPauseControlOpCodeCounter.ProtoReflect.Descriptor instead. -func (*PatternFlowPfcPauseControlOpCodeCounter) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{463} +// Deprecated: Use PatternFlowIpv4IdentificationCounter.ProtoReflect.Descriptor instead. +func (*PatternFlowIpv4IdentificationCounter) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{425} } -func (x *PatternFlowPfcPauseControlOpCodeCounter) GetStart() uint32 { +func (x *PatternFlowIpv4IdentificationCounter) GetStart() uint32 { if x != nil && x.Start != nil { return *x.Start } return 0 } -func (x *PatternFlowPfcPauseControlOpCodeCounter) GetStep() uint32 { +func (x *PatternFlowIpv4IdentificationCounter) GetStep() uint32 { if x != nil && x.Step != nil { return *x.Step } return 0 } -func (x *PatternFlowPfcPauseControlOpCodeCounter) GetCount() uint32 { +func (x *PatternFlowIpv4IdentificationCounter) GetCount() uint32 { if x != nil && x.Count != nil { return *x.Count } @@ -57536,7 +56618,7 @@ func (x *PatternFlowPfcPauseControlOpCodeCounter) GetCount() uint32 { // Metric tag can be used to enable tracking portion of or all bits in a corresponding // header field for metrics per each applicable value. These would appear as tagged // metrics in corresponding flow metrics. -type PatternFlowPfcPauseControlOpCodeMetricTag struct { +type PatternFlowIpv4IdentificationMetricTag struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields @@ -57554,23 +56636,23 @@ type PatternFlowPfcPauseControlOpCodeMetricTag struct { Length *uint32 `protobuf:"varint,3,opt,name=length,proto3,oneof" json:"length,omitempty"` } -func (x *PatternFlowPfcPauseControlOpCodeMetricTag) Reset() { - *x = PatternFlowPfcPauseControlOpCodeMetricTag{} +func (x *PatternFlowIpv4IdentificationMetricTag) Reset() { + *x = PatternFlowIpv4IdentificationMetricTag{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[464] + mi := &file_otg_proto_msgTypes[426] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowPfcPauseControlOpCodeMetricTag) String() string { +func (x *PatternFlowIpv4IdentificationMetricTag) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowPfcPauseControlOpCodeMetricTag) ProtoMessage() {} +func (*PatternFlowIpv4IdentificationMetricTag) ProtoMessage() {} -func (x *PatternFlowPfcPauseControlOpCodeMetricTag) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[464] +func (x *PatternFlowIpv4IdentificationMetricTag) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[426] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -57581,74 +56663,74 @@ func (x *PatternFlowPfcPauseControlOpCodeMetricTag) ProtoReflect() protoreflect. return mi.MessageOf(x) } -// Deprecated: Use PatternFlowPfcPauseControlOpCodeMetricTag.ProtoReflect.Descriptor instead. -func (*PatternFlowPfcPauseControlOpCodeMetricTag) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{464} +// Deprecated: Use PatternFlowIpv4IdentificationMetricTag.ProtoReflect.Descriptor instead. +func (*PatternFlowIpv4IdentificationMetricTag) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{426} } -func (x *PatternFlowPfcPauseControlOpCodeMetricTag) GetName() string { +func (x *PatternFlowIpv4IdentificationMetricTag) GetName() string { if x != nil && x.Name != nil { return *x.Name } return "" } -func (x *PatternFlowPfcPauseControlOpCodeMetricTag) GetOffset() uint32 { +func (x *PatternFlowIpv4IdentificationMetricTag) GetOffset() uint32 { if x != nil && x.Offset != nil { return *x.Offset } return 0 } -func (x *PatternFlowPfcPauseControlOpCodeMetricTag) GetLength() uint32 { +func (x *PatternFlowIpv4IdentificationMetricTag) GetLength() uint32 { if x != nil && x.Length != nil { return *x.Length } return 0 } -// Control operation code -type PatternFlowPfcPauseControlOpCode struct { +// Identification +type PatternFlowIpv4Identification struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // Description missing in models // default = Choice.Enum.value - Choice *PatternFlowPfcPauseControlOpCode_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.PatternFlowPfcPauseControlOpCode_Choice_Enum,oneof" json:"choice,omitempty"` + Choice *PatternFlowIpv4Identification_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.PatternFlowIpv4Identification_Choice_Enum,oneof" json:"choice,omitempty"` // Description missing in models - // default = 257 + // default = 0 Value *uint32 `protobuf:"varint,2,opt,name=value,proto3,oneof" json:"value,omitempty"` // Description missing in models - // default = [257] + // default = [0] Values []uint32 `protobuf:"varint,3,rep,packed,name=values,proto3" json:"values,omitempty"` // Description missing in models - Increment *PatternFlowPfcPauseControlOpCodeCounter `protobuf:"bytes,5,opt,name=increment,proto3" json:"increment,omitempty"` + Increment *PatternFlowIpv4IdentificationCounter `protobuf:"bytes,5,opt,name=increment,proto3" json:"increment,omitempty"` // Description missing in models - Decrement *PatternFlowPfcPauseControlOpCodeCounter `protobuf:"bytes,6,opt,name=decrement,proto3" json:"decrement,omitempty"` + Decrement *PatternFlowIpv4IdentificationCounter `protobuf:"bytes,6,opt,name=decrement,proto3" json:"decrement,omitempty"` // One or more metric tags can be used to enable tracking portion of or all bits in // a corresponding header field for metrics per each applicable value. These would appear // as tagged metrics in corresponding flow metrics. - MetricTags []*PatternFlowPfcPauseControlOpCodeMetricTag `protobuf:"bytes,7,rep,name=metric_tags,json=metricTags,proto3" json:"metric_tags,omitempty"` + MetricTags []*PatternFlowIpv4IdentificationMetricTag `protobuf:"bytes,7,rep,name=metric_tags,json=metricTags,proto3" json:"metric_tags,omitempty"` } -func (x *PatternFlowPfcPauseControlOpCode) Reset() { - *x = PatternFlowPfcPauseControlOpCode{} +func (x *PatternFlowIpv4Identification) Reset() { + *x = PatternFlowIpv4Identification{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[465] + mi := &file_otg_proto_msgTypes[427] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowPfcPauseControlOpCode) String() string { +func (x *PatternFlowIpv4Identification) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowPfcPauseControlOpCode) ProtoMessage() {} +func (*PatternFlowIpv4Identification) ProtoMessage() {} -func (x *PatternFlowPfcPauseControlOpCode) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[465] +func (x *PatternFlowIpv4Identification) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[427] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -57659,47 +56741,47 @@ func (x *PatternFlowPfcPauseControlOpCode) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use PatternFlowPfcPauseControlOpCode.ProtoReflect.Descriptor instead. -func (*PatternFlowPfcPauseControlOpCode) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{465} +// Deprecated: Use PatternFlowIpv4Identification.ProtoReflect.Descriptor instead. +func (*PatternFlowIpv4Identification) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{427} } -func (x *PatternFlowPfcPauseControlOpCode) GetChoice() PatternFlowPfcPauseControlOpCode_Choice_Enum { +func (x *PatternFlowIpv4Identification) GetChoice() PatternFlowIpv4Identification_Choice_Enum { if x != nil && x.Choice != nil { return *x.Choice } - return PatternFlowPfcPauseControlOpCode_Choice_unspecified + return PatternFlowIpv4Identification_Choice_unspecified } -func (x *PatternFlowPfcPauseControlOpCode) GetValue() uint32 { +func (x *PatternFlowIpv4Identification) GetValue() uint32 { if x != nil && x.Value != nil { return *x.Value } return 0 } -func (x *PatternFlowPfcPauseControlOpCode) GetValues() []uint32 { +func (x *PatternFlowIpv4Identification) GetValues() []uint32 { if x != nil { return x.Values } return nil } -func (x *PatternFlowPfcPauseControlOpCode) GetIncrement() *PatternFlowPfcPauseControlOpCodeCounter { +func (x *PatternFlowIpv4Identification) GetIncrement() *PatternFlowIpv4IdentificationCounter { if x != nil { return x.Increment } return nil } -func (x *PatternFlowPfcPauseControlOpCode) GetDecrement() *PatternFlowPfcPauseControlOpCodeCounter { +func (x *PatternFlowIpv4Identification) GetDecrement() *PatternFlowIpv4IdentificationCounter { if x != nil { return x.Decrement } return nil } -func (x *PatternFlowPfcPauseControlOpCode) GetMetricTags() []*PatternFlowPfcPauseControlOpCodeMetricTag { +func (x *PatternFlowIpv4Identification) GetMetricTags() []*PatternFlowIpv4IdentificationMetricTag { if x != nil { return x.MetricTags } @@ -57707,7 +56789,7 @@ func (x *PatternFlowPfcPauseControlOpCode) GetMetricTags() []*PatternFlowPfcPaus } // integer counter pattern -type PatternFlowPfcPauseClassEnableVectorCounter struct { +type PatternFlowIpv4ReservedCounter struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields @@ -57723,23 +56805,23 @@ type PatternFlowPfcPauseClassEnableVectorCounter struct { Count *uint32 `protobuf:"varint,3,opt,name=count,proto3,oneof" json:"count,omitempty"` } -func (x *PatternFlowPfcPauseClassEnableVectorCounter) Reset() { - *x = PatternFlowPfcPauseClassEnableVectorCounter{} +func (x *PatternFlowIpv4ReservedCounter) Reset() { + *x = PatternFlowIpv4ReservedCounter{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[466] + mi := &file_otg_proto_msgTypes[428] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowPfcPauseClassEnableVectorCounter) String() string { +func (x *PatternFlowIpv4ReservedCounter) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowPfcPauseClassEnableVectorCounter) ProtoMessage() {} +func (*PatternFlowIpv4ReservedCounter) ProtoMessage() {} -func (x *PatternFlowPfcPauseClassEnableVectorCounter) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[466] +func (x *PatternFlowIpv4ReservedCounter) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[428] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -57750,26 +56832,26 @@ func (x *PatternFlowPfcPauseClassEnableVectorCounter) ProtoReflect() protoreflec return mi.MessageOf(x) } -// Deprecated: Use PatternFlowPfcPauseClassEnableVectorCounter.ProtoReflect.Descriptor instead. -func (*PatternFlowPfcPauseClassEnableVectorCounter) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{466} +// Deprecated: Use PatternFlowIpv4ReservedCounter.ProtoReflect.Descriptor instead. +func (*PatternFlowIpv4ReservedCounter) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{428} } -func (x *PatternFlowPfcPauseClassEnableVectorCounter) GetStart() uint32 { +func (x *PatternFlowIpv4ReservedCounter) GetStart() uint32 { if x != nil && x.Start != nil { return *x.Start } return 0 } -func (x *PatternFlowPfcPauseClassEnableVectorCounter) GetStep() uint32 { +func (x *PatternFlowIpv4ReservedCounter) GetStep() uint32 { if x != nil && x.Step != nil { return *x.Step } return 0 } -func (x *PatternFlowPfcPauseClassEnableVectorCounter) GetCount() uint32 { +func (x *PatternFlowIpv4ReservedCounter) GetCount() uint32 { if x != nil && x.Count != nil { return *x.Count } @@ -57779,7 +56861,7 @@ func (x *PatternFlowPfcPauseClassEnableVectorCounter) GetCount() uint32 { // Metric tag can be used to enable tracking portion of or all bits in a corresponding // header field for metrics per each applicable value. These would appear as tagged // metrics in corresponding flow metrics. -type PatternFlowPfcPauseClassEnableVectorMetricTag struct { +type PatternFlowIpv4ReservedMetricTag struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields @@ -57793,27 +56875,27 @@ type PatternFlowPfcPauseClassEnableVectorMetricTag struct { Offset *uint32 `protobuf:"varint,2,opt,name=offset,proto3,oneof" json:"offset,omitempty"` // Number of bits to track for metrics starting from configured offset of corresponding // header field - // default = 16 + // default = 1 Length *uint32 `protobuf:"varint,3,opt,name=length,proto3,oneof" json:"length,omitempty"` } -func (x *PatternFlowPfcPauseClassEnableVectorMetricTag) Reset() { - *x = PatternFlowPfcPauseClassEnableVectorMetricTag{} +func (x *PatternFlowIpv4ReservedMetricTag) Reset() { + *x = PatternFlowIpv4ReservedMetricTag{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[467] + mi := &file_otg_proto_msgTypes[429] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowPfcPauseClassEnableVectorMetricTag) String() string { +func (x *PatternFlowIpv4ReservedMetricTag) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowPfcPauseClassEnableVectorMetricTag) ProtoMessage() {} +func (*PatternFlowIpv4ReservedMetricTag) ProtoMessage() {} -func (x *PatternFlowPfcPauseClassEnableVectorMetricTag) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[467] +func (x *PatternFlowIpv4ReservedMetricTag) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[429] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -57824,41 +56906,41 @@ func (x *PatternFlowPfcPauseClassEnableVectorMetricTag) ProtoReflect() protorefl return mi.MessageOf(x) } -// Deprecated: Use PatternFlowPfcPauseClassEnableVectorMetricTag.ProtoReflect.Descriptor instead. -func (*PatternFlowPfcPauseClassEnableVectorMetricTag) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{467} +// Deprecated: Use PatternFlowIpv4ReservedMetricTag.ProtoReflect.Descriptor instead. +func (*PatternFlowIpv4ReservedMetricTag) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{429} } -func (x *PatternFlowPfcPauseClassEnableVectorMetricTag) GetName() string { +func (x *PatternFlowIpv4ReservedMetricTag) GetName() string { if x != nil && x.Name != nil { return *x.Name } return "" } -func (x *PatternFlowPfcPauseClassEnableVectorMetricTag) GetOffset() uint32 { +func (x *PatternFlowIpv4ReservedMetricTag) GetOffset() uint32 { if x != nil && x.Offset != nil { return *x.Offset } return 0 } -func (x *PatternFlowPfcPauseClassEnableVectorMetricTag) GetLength() uint32 { +func (x *PatternFlowIpv4ReservedMetricTag) GetLength() uint32 { if x != nil && x.Length != nil { return *x.Length } return 0 } -// Destination -type PatternFlowPfcPauseClassEnableVector struct { +// Reserved flag. +type PatternFlowIpv4Reserved struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // Description missing in models // default = Choice.Enum.value - Choice *PatternFlowPfcPauseClassEnableVector_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.PatternFlowPfcPauseClassEnableVector_Choice_Enum,oneof" json:"choice,omitempty"` + Choice *PatternFlowIpv4Reserved_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.PatternFlowIpv4Reserved_Choice_Enum,oneof" json:"choice,omitempty"` // Description missing in models // default = 0 Value *uint32 `protobuf:"varint,2,opt,name=value,proto3,oneof" json:"value,omitempty"` @@ -57866,32 +56948,32 @@ type PatternFlowPfcPauseClassEnableVector struct { // default = [0] Values []uint32 `protobuf:"varint,3,rep,packed,name=values,proto3" json:"values,omitempty"` // Description missing in models - Increment *PatternFlowPfcPauseClassEnableVectorCounter `protobuf:"bytes,5,opt,name=increment,proto3" json:"increment,omitempty"` + Increment *PatternFlowIpv4ReservedCounter `protobuf:"bytes,5,opt,name=increment,proto3" json:"increment,omitempty"` // Description missing in models - Decrement *PatternFlowPfcPauseClassEnableVectorCounter `protobuf:"bytes,6,opt,name=decrement,proto3" json:"decrement,omitempty"` + Decrement *PatternFlowIpv4ReservedCounter `protobuf:"bytes,6,opt,name=decrement,proto3" json:"decrement,omitempty"` // One or more metric tags can be used to enable tracking portion of or all bits in // a corresponding header field for metrics per each applicable value. These would appear // as tagged metrics in corresponding flow metrics. - MetricTags []*PatternFlowPfcPauseClassEnableVectorMetricTag `protobuf:"bytes,7,rep,name=metric_tags,json=metricTags,proto3" json:"metric_tags,omitempty"` + MetricTags []*PatternFlowIpv4ReservedMetricTag `protobuf:"bytes,7,rep,name=metric_tags,json=metricTags,proto3" json:"metric_tags,omitempty"` } -func (x *PatternFlowPfcPauseClassEnableVector) Reset() { - *x = PatternFlowPfcPauseClassEnableVector{} +func (x *PatternFlowIpv4Reserved) Reset() { + *x = PatternFlowIpv4Reserved{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[468] + mi := &file_otg_proto_msgTypes[430] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowPfcPauseClassEnableVector) String() string { +func (x *PatternFlowIpv4Reserved) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowPfcPauseClassEnableVector) ProtoMessage() {} +func (*PatternFlowIpv4Reserved) ProtoMessage() {} -func (x *PatternFlowPfcPauseClassEnableVector) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[468] +func (x *PatternFlowIpv4Reserved) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[430] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -57902,47 +56984,47 @@ func (x *PatternFlowPfcPauseClassEnableVector) ProtoReflect() protoreflect.Messa return mi.MessageOf(x) } -// Deprecated: Use PatternFlowPfcPauseClassEnableVector.ProtoReflect.Descriptor instead. -func (*PatternFlowPfcPauseClassEnableVector) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{468} +// Deprecated: Use PatternFlowIpv4Reserved.ProtoReflect.Descriptor instead. +func (*PatternFlowIpv4Reserved) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{430} } -func (x *PatternFlowPfcPauseClassEnableVector) GetChoice() PatternFlowPfcPauseClassEnableVector_Choice_Enum { +func (x *PatternFlowIpv4Reserved) GetChoice() PatternFlowIpv4Reserved_Choice_Enum { if x != nil && x.Choice != nil { return *x.Choice } - return PatternFlowPfcPauseClassEnableVector_Choice_unspecified + return PatternFlowIpv4Reserved_Choice_unspecified } -func (x *PatternFlowPfcPauseClassEnableVector) GetValue() uint32 { +func (x *PatternFlowIpv4Reserved) GetValue() uint32 { if x != nil && x.Value != nil { return *x.Value } return 0 } -func (x *PatternFlowPfcPauseClassEnableVector) GetValues() []uint32 { +func (x *PatternFlowIpv4Reserved) GetValues() []uint32 { if x != nil { return x.Values } return nil } -func (x *PatternFlowPfcPauseClassEnableVector) GetIncrement() *PatternFlowPfcPauseClassEnableVectorCounter { +func (x *PatternFlowIpv4Reserved) GetIncrement() *PatternFlowIpv4ReservedCounter { if x != nil { return x.Increment } return nil } -func (x *PatternFlowPfcPauseClassEnableVector) GetDecrement() *PatternFlowPfcPauseClassEnableVectorCounter { +func (x *PatternFlowIpv4Reserved) GetDecrement() *PatternFlowIpv4ReservedCounter { if x != nil { return x.Decrement } return nil } -func (x *PatternFlowPfcPauseClassEnableVector) GetMetricTags() []*PatternFlowPfcPauseClassEnableVectorMetricTag { +func (x *PatternFlowIpv4Reserved) GetMetricTags() []*PatternFlowIpv4ReservedMetricTag { if x != nil { return x.MetricTags } @@ -57950,7 +57032,7 @@ func (x *PatternFlowPfcPauseClassEnableVector) GetMetricTags() []*PatternFlowPfc } // integer counter pattern -type PatternFlowPfcPausePauseClass0Counter struct { +type PatternFlowIpv4DontFragmentCounter struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields @@ -57966,23 +57048,23 @@ type PatternFlowPfcPausePauseClass0Counter struct { Count *uint32 `protobuf:"varint,3,opt,name=count,proto3,oneof" json:"count,omitempty"` } -func (x *PatternFlowPfcPausePauseClass0Counter) Reset() { - *x = PatternFlowPfcPausePauseClass0Counter{} +func (x *PatternFlowIpv4DontFragmentCounter) Reset() { + *x = PatternFlowIpv4DontFragmentCounter{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[469] + mi := &file_otg_proto_msgTypes[431] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowPfcPausePauseClass0Counter) String() string { +func (x *PatternFlowIpv4DontFragmentCounter) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowPfcPausePauseClass0Counter) ProtoMessage() {} +func (*PatternFlowIpv4DontFragmentCounter) ProtoMessage() {} -func (x *PatternFlowPfcPausePauseClass0Counter) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[469] +func (x *PatternFlowIpv4DontFragmentCounter) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[431] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -57993,26 +57075,26 @@ func (x *PatternFlowPfcPausePauseClass0Counter) ProtoReflect() protoreflect.Mess return mi.MessageOf(x) } -// Deprecated: Use PatternFlowPfcPausePauseClass0Counter.ProtoReflect.Descriptor instead. -func (*PatternFlowPfcPausePauseClass0Counter) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{469} +// Deprecated: Use PatternFlowIpv4DontFragmentCounter.ProtoReflect.Descriptor instead. +func (*PatternFlowIpv4DontFragmentCounter) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{431} } -func (x *PatternFlowPfcPausePauseClass0Counter) GetStart() uint32 { +func (x *PatternFlowIpv4DontFragmentCounter) GetStart() uint32 { if x != nil && x.Start != nil { return *x.Start } return 0 } -func (x *PatternFlowPfcPausePauseClass0Counter) GetStep() uint32 { +func (x *PatternFlowIpv4DontFragmentCounter) GetStep() uint32 { if x != nil && x.Step != nil { return *x.Step } return 0 } -func (x *PatternFlowPfcPausePauseClass0Counter) GetCount() uint32 { +func (x *PatternFlowIpv4DontFragmentCounter) GetCount() uint32 { if x != nil && x.Count != nil { return *x.Count } @@ -58022,7 +57104,7 @@ func (x *PatternFlowPfcPausePauseClass0Counter) GetCount() uint32 { // Metric tag can be used to enable tracking portion of or all bits in a corresponding // header field for metrics per each applicable value. These would appear as tagged // metrics in corresponding flow metrics. -type PatternFlowPfcPausePauseClass0MetricTag struct { +type PatternFlowIpv4DontFragmentMetricTag struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields @@ -58036,27 +57118,27 @@ type PatternFlowPfcPausePauseClass0MetricTag struct { Offset *uint32 `protobuf:"varint,2,opt,name=offset,proto3,oneof" json:"offset,omitempty"` // Number of bits to track for metrics starting from configured offset of corresponding // header field - // default = 16 + // default = 1 Length *uint32 `protobuf:"varint,3,opt,name=length,proto3,oneof" json:"length,omitempty"` } -func (x *PatternFlowPfcPausePauseClass0MetricTag) Reset() { - *x = PatternFlowPfcPausePauseClass0MetricTag{} +func (x *PatternFlowIpv4DontFragmentMetricTag) Reset() { + *x = PatternFlowIpv4DontFragmentMetricTag{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[470] + mi := &file_otg_proto_msgTypes[432] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowPfcPausePauseClass0MetricTag) String() string { +func (x *PatternFlowIpv4DontFragmentMetricTag) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowPfcPausePauseClass0MetricTag) ProtoMessage() {} +func (*PatternFlowIpv4DontFragmentMetricTag) ProtoMessage() {} -func (x *PatternFlowPfcPausePauseClass0MetricTag) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[470] +func (x *PatternFlowIpv4DontFragmentMetricTag) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[432] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -58067,41 +57149,42 @@ func (x *PatternFlowPfcPausePauseClass0MetricTag) ProtoReflect() protoreflect.Me return mi.MessageOf(x) } -// Deprecated: Use PatternFlowPfcPausePauseClass0MetricTag.ProtoReflect.Descriptor instead. -func (*PatternFlowPfcPausePauseClass0MetricTag) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{470} +// Deprecated: Use PatternFlowIpv4DontFragmentMetricTag.ProtoReflect.Descriptor instead. +func (*PatternFlowIpv4DontFragmentMetricTag) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{432} } -func (x *PatternFlowPfcPausePauseClass0MetricTag) GetName() string { +func (x *PatternFlowIpv4DontFragmentMetricTag) GetName() string { if x != nil && x.Name != nil { return *x.Name } return "" } -func (x *PatternFlowPfcPausePauseClass0MetricTag) GetOffset() uint32 { +func (x *PatternFlowIpv4DontFragmentMetricTag) GetOffset() uint32 { if x != nil && x.Offset != nil { return *x.Offset } return 0 } -func (x *PatternFlowPfcPausePauseClass0MetricTag) GetLength() uint32 { +func (x *PatternFlowIpv4DontFragmentMetricTag) GetLength() uint32 { if x != nil && x.Length != nil { return *x.Length } return 0 } -// Pause class 0 -type PatternFlowPfcPausePauseClass0 struct { +// Dont fragment flag If the dont_fragment flag is set and fragmentation is required +// to route the packet then the packet is dropped. +type PatternFlowIpv4DontFragment struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // Description missing in models // default = Choice.Enum.value - Choice *PatternFlowPfcPausePauseClass0_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.PatternFlowPfcPausePauseClass0_Choice_Enum,oneof" json:"choice,omitempty"` + Choice *PatternFlowIpv4DontFragment_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.PatternFlowIpv4DontFragment_Choice_Enum,oneof" json:"choice,omitempty"` // Description missing in models // default = 0 Value *uint32 `protobuf:"varint,2,opt,name=value,proto3,oneof" json:"value,omitempty"` @@ -58109,32 +57192,32 @@ type PatternFlowPfcPausePauseClass0 struct { // default = [0] Values []uint32 `protobuf:"varint,3,rep,packed,name=values,proto3" json:"values,omitempty"` // Description missing in models - Increment *PatternFlowPfcPausePauseClass0Counter `protobuf:"bytes,5,opt,name=increment,proto3" json:"increment,omitempty"` + Increment *PatternFlowIpv4DontFragmentCounter `protobuf:"bytes,5,opt,name=increment,proto3" json:"increment,omitempty"` // Description missing in models - Decrement *PatternFlowPfcPausePauseClass0Counter `protobuf:"bytes,6,opt,name=decrement,proto3" json:"decrement,omitempty"` + Decrement *PatternFlowIpv4DontFragmentCounter `protobuf:"bytes,6,opt,name=decrement,proto3" json:"decrement,omitempty"` // One or more metric tags can be used to enable tracking portion of or all bits in // a corresponding header field for metrics per each applicable value. These would appear // as tagged metrics in corresponding flow metrics. - MetricTags []*PatternFlowPfcPausePauseClass0MetricTag `protobuf:"bytes,7,rep,name=metric_tags,json=metricTags,proto3" json:"metric_tags,omitempty"` + MetricTags []*PatternFlowIpv4DontFragmentMetricTag `protobuf:"bytes,7,rep,name=metric_tags,json=metricTags,proto3" json:"metric_tags,omitempty"` } -func (x *PatternFlowPfcPausePauseClass0) Reset() { - *x = PatternFlowPfcPausePauseClass0{} +func (x *PatternFlowIpv4DontFragment) Reset() { + *x = PatternFlowIpv4DontFragment{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[471] + mi := &file_otg_proto_msgTypes[433] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowPfcPausePauseClass0) String() string { +func (x *PatternFlowIpv4DontFragment) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowPfcPausePauseClass0) ProtoMessage() {} +func (*PatternFlowIpv4DontFragment) ProtoMessage() {} -func (x *PatternFlowPfcPausePauseClass0) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[471] +func (x *PatternFlowIpv4DontFragment) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[433] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -58145,47 +57228,47 @@ func (x *PatternFlowPfcPausePauseClass0) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use PatternFlowPfcPausePauseClass0.ProtoReflect.Descriptor instead. -func (*PatternFlowPfcPausePauseClass0) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{471} +// Deprecated: Use PatternFlowIpv4DontFragment.ProtoReflect.Descriptor instead. +func (*PatternFlowIpv4DontFragment) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{433} } -func (x *PatternFlowPfcPausePauseClass0) GetChoice() PatternFlowPfcPausePauseClass0_Choice_Enum { +func (x *PatternFlowIpv4DontFragment) GetChoice() PatternFlowIpv4DontFragment_Choice_Enum { if x != nil && x.Choice != nil { return *x.Choice } - return PatternFlowPfcPausePauseClass0_Choice_unspecified + return PatternFlowIpv4DontFragment_Choice_unspecified } -func (x *PatternFlowPfcPausePauseClass0) GetValue() uint32 { +func (x *PatternFlowIpv4DontFragment) GetValue() uint32 { if x != nil && x.Value != nil { return *x.Value } return 0 } -func (x *PatternFlowPfcPausePauseClass0) GetValues() []uint32 { +func (x *PatternFlowIpv4DontFragment) GetValues() []uint32 { if x != nil { return x.Values } return nil } -func (x *PatternFlowPfcPausePauseClass0) GetIncrement() *PatternFlowPfcPausePauseClass0Counter { +func (x *PatternFlowIpv4DontFragment) GetIncrement() *PatternFlowIpv4DontFragmentCounter { if x != nil { return x.Increment } return nil } -func (x *PatternFlowPfcPausePauseClass0) GetDecrement() *PatternFlowPfcPausePauseClass0Counter { +func (x *PatternFlowIpv4DontFragment) GetDecrement() *PatternFlowIpv4DontFragmentCounter { if x != nil { return x.Decrement } return nil } -func (x *PatternFlowPfcPausePauseClass0) GetMetricTags() []*PatternFlowPfcPausePauseClass0MetricTag { +func (x *PatternFlowIpv4DontFragment) GetMetricTags() []*PatternFlowIpv4DontFragmentMetricTag { if x != nil { return x.MetricTags } @@ -58193,7 +57276,7 @@ func (x *PatternFlowPfcPausePauseClass0) GetMetricTags() []*PatternFlowPfcPauseP } // integer counter pattern -type PatternFlowPfcPausePauseClass1Counter struct { +type PatternFlowIpv4MoreFragmentsCounter struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields @@ -58209,23 +57292,23 @@ type PatternFlowPfcPausePauseClass1Counter struct { Count *uint32 `protobuf:"varint,3,opt,name=count,proto3,oneof" json:"count,omitempty"` } -func (x *PatternFlowPfcPausePauseClass1Counter) Reset() { - *x = PatternFlowPfcPausePauseClass1Counter{} +func (x *PatternFlowIpv4MoreFragmentsCounter) Reset() { + *x = PatternFlowIpv4MoreFragmentsCounter{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[472] + mi := &file_otg_proto_msgTypes[434] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowPfcPausePauseClass1Counter) String() string { +func (x *PatternFlowIpv4MoreFragmentsCounter) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowPfcPausePauseClass1Counter) ProtoMessage() {} +func (*PatternFlowIpv4MoreFragmentsCounter) ProtoMessage() {} -func (x *PatternFlowPfcPausePauseClass1Counter) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[472] +func (x *PatternFlowIpv4MoreFragmentsCounter) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[434] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -58236,26 +57319,26 @@ func (x *PatternFlowPfcPausePauseClass1Counter) ProtoReflect() protoreflect.Mess return mi.MessageOf(x) } -// Deprecated: Use PatternFlowPfcPausePauseClass1Counter.ProtoReflect.Descriptor instead. -func (*PatternFlowPfcPausePauseClass1Counter) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{472} +// Deprecated: Use PatternFlowIpv4MoreFragmentsCounter.ProtoReflect.Descriptor instead. +func (*PatternFlowIpv4MoreFragmentsCounter) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{434} } -func (x *PatternFlowPfcPausePauseClass1Counter) GetStart() uint32 { +func (x *PatternFlowIpv4MoreFragmentsCounter) GetStart() uint32 { if x != nil && x.Start != nil { return *x.Start } return 0 } -func (x *PatternFlowPfcPausePauseClass1Counter) GetStep() uint32 { +func (x *PatternFlowIpv4MoreFragmentsCounter) GetStep() uint32 { if x != nil && x.Step != nil { return *x.Step } return 0 } -func (x *PatternFlowPfcPausePauseClass1Counter) GetCount() uint32 { +func (x *PatternFlowIpv4MoreFragmentsCounter) GetCount() uint32 { if x != nil && x.Count != nil { return *x.Count } @@ -58265,7 +57348,7 @@ func (x *PatternFlowPfcPausePauseClass1Counter) GetCount() uint32 { // Metric tag can be used to enable tracking portion of or all bits in a corresponding // header field for metrics per each applicable value. These would appear as tagged // metrics in corresponding flow metrics. -type PatternFlowPfcPausePauseClass1MetricTag struct { +type PatternFlowIpv4MoreFragmentsMetricTag struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields @@ -58279,27 +57362,27 @@ type PatternFlowPfcPausePauseClass1MetricTag struct { Offset *uint32 `protobuf:"varint,2,opt,name=offset,proto3,oneof" json:"offset,omitempty"` // Number of bits to track for metrics starting from configured offset of corresponding // header field - // default = 16 + // default = 1 Length *uint32 `protobuf:"varint,3,opt,name=length,proto3,oneof" json:"length,omitempty"` } -func (x *PatternFlowPfcPausePauseClass1MetricTag) Reset() { - *x = PatternFlowPfcPausePauseClass1MetricTag{} +func (x *PatternFlowIpv4MoreFragmentsMetricTag) Reset() { + *x = PatternFlowIpv4MoreFragmentsMetricTag{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[473] + mi := &file_otg_proto_msgTypes[435] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowPfcPausePauseClass1MetricTag) String() string { +func (x *PatternFlowIpv4MoreFragmentsMetricTag) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowPfcPausePauseClass1MetricTag) ProtoMessage() {} +func (*PatternFlowIpv4MoreFragmentsMetricTag) ProtoMessage() {} -func (x *PatternFlowPfcPausePauseClass1MetricTag) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[473] +func (x *PatternFlowIpv4MoreFragmentsMetricTag) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[435] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -58310,41 +57393,41 @@ func (x *PatternFlowPfcPausePauseClass1MetricTag) ProtoReflect() protoreflect.Me return mi.MessageOf(x) } -// Deprecated: Use PatternFlowPfcPausePauseClass1MetricTag.ProtoReflect.Descriptor instead. -func (*PatternFlowPfcPausePauseClass1MetricTag) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{473} +// Deprecated: Use PatternFlowIpv4MoreFragmentsMetricTag.ProtoReflect.Descriptor instead. +func (*PatternFlowIpv4MoreFragmentsMetricTag) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{435} } -func (x *PatternFlowPfcPausePauseClass1MetricTag) GetName() string { +func (x *PatternFlowIpv4MoreFragmentsMetricTag) GetName() string { if x != nil && x.Name != nil { return *x.Name } return "" } -func (x *PatternFlowPfcPausePauseClass1MetricTag) GetOffset() uint32 { +func (x *PatternFlowIpv4MoreFragmentsMetricTag) GetOffset() uint32 { if x != nil && x.Offset != nil { return *x.Offset } return 0 } -func (x *PatternFlowPfcPausePauseClass1MetricTag) GetLength() uint32 { +func (x *PatternFlowIpv4MoreFragmentsMetricTag) GetLength() uint32 { if x != nil && x.Length != nil { return *x.Length } return 0 } -// Pause class 1 -type PatternFlowPfcPausePauseClass1 struct { +// More fragments flag +type PatternFlowIpv4MoreFragments struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // Description missing in models // default = Choice.Enum.value - Choice *PatternFlowPfcPausePauseClass1_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.PatternFlowPfcPausePauseClass1_Choice_Enum,oneof" json:"choice,omitempty"` + Choice *PatternFlowIpv4MoreFragments_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.PatternFlowIpv4MoreFragments_Choice_Enum,oneof" json:"choice,omitempty"` // Description missing in models // default = 0 Value *uint32 `protobuf:"varint,2,opt,name=value,proto3,oneof" json:"value,omitempty"` @@ -58352,32 +57435,32 @@ type PatternFlowPfcPausePauseClass1 struct { // default = [0] Values []uint32 `protobuf:"varint,3,rep,packed,name=values,proto3" json:"values,omitempty"` // Description missing in models - Increment *PatternFlowPfcPausePauseClass1Counter `protobuf:"bytes,5,opt,name=increment,proto3" json:"increment,omitempty"` + Increment *PatternFlowIpv4MoreFragmentsCounter `protobuf:"bytes,5,opt,name=increment,proto3" json:"increment,omitempty"` // Description missing in models - Decrement *PatternFlowPfcPausePauseClass1Counter `protobuf:"bytes,6,opt,name=decrement,proto3" json:"decrement,omitempty"` + Decrement *PatternFlowIpv4MoreFragmentsCounter `protobuf:"bytes,6,opt,name=decrement,proto3" json:"decrement,omitempty"` // One or more metric tags can be used to enable tracking portion of or all bits in // a corresponding header field for metrics per each applicable value. These would appear // as tagged metrics in corresponding flow metrics. - MetricTags []*PatternFlowPfcPausePauseClass1MetricTag `protobuf:"bytes,7,rep,name=metric_tags,json=metricTags,proto3" json:"metric_tags,omitempty"` + MetricTags []*PatternFlowIpv4MoreFragmentsMetricTag `protobuf:"bytes,7,rep,name=metric_tags,json=metricTags,proto3" json:"metric_tags,omitempty"` } -func (x *PatternFlowPfcPausePauseClass1) Reset() { - *x = PatternFlowPfcPausePauseClass1{} +func (x *PatternFlowIpv4MoreFragments) Reset() { + *x = PatternFlowIpv4MoreFragments{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[474] + mi := &file_otg_proto_msgTypes[436] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowPfcPausePauseClass1) String() string { +func (x *PatternFlowIpv4MoreFragments) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowPfcPausePauseClass1) ProtoMessage() {} +func (*PatternFlowIpv4MoreFragments) ProtoMessage() {} -func (x *PatternFlowPfcPausePauseClass1) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[474] +func (x *PatternFlowIpv4MoreFragments) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[436] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -58388,47 +57471,47 @@ func (x *PatternFlowPfcPausePauseClass1) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use PatternFlowPfcPausePauseClass1.ProtoReflect.Descriptor instead. -func (*PatternFlowPfcPausePauseClass1) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{474} +// Deprecated: Use PatternFlowIpv4MoreFragments.ProtoReflect.Descriptor instead. +func (*PatternFlowIpv4MoreFragments) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{436} } -func (x *PatternFlowPfcPausePauseClass1) GetChoice() PatternFlowPfcPausePauseClass1_Choice_Enum { +func (x *PatternFlowIpv4MoreFragments) GetChoice() PatternFlowIpv4MoreFragments_Choice_Enum { if x != nil && x.Choice != nil { return *x.Choice } - return PatternFlowPfcPausePauseClass1_Choice_unspecified + return PatternFlowIpv4MoreFragments_Choice_unspecified } -func (x *PatternFlowPfcPausePauseClass1) GetValue() uint32 { +func (x *PatternFlowIpv4MoreFragments) GetValue() uint32 { if x != nil && x.Value != nil { return *x.Value } return 0 } -func (x *PatternFlowPfcPausePauseClass1) GetValues() []uint32 { +func (x *PatternFlowIpv4MoreFragments) GetValues() []uint32 { if x != nil { return x.Values } return nil } -func (x *PatternFlowPfcPausePauseClass1) GetIncrement() *PatternFlowPfcPausePauseClass1Counter { +func (x *PatternFlowIpv4MoreFragments) GetIncrement() *PatternFlowIpv4MoreFragmentsCounter { if x != nil { return x.Increment } return nil } -func (x *PatternFlowPfcPausePauseClass1) GetDecrement() *PatternFlowPfcPausePauseClass1Counter { +func (x *PatternFlowIpv4MoreFragments) GetDecrement() *PatternFlowIpv4MoreFragmentsCounter { if x != nil { return x.Decrement } return nil } -func (x *PatternFlowPfcPausePauseClass1) GetMetricTags() []*PatternFlowPfcPausePauseClass1MetricTag { +func (x *PatternFlowIpv4MoreFragments) GetMetricTags() []*PatternFlowIpv4MoreFragmentsMetricTag { if x != nil { return x.MetricTags } @@ -58436,7 +57519,7 @@ func (x *PatternFlowPfcPausePauseClass1) GetMetricTags() []*PatternFlowPfcPauseP } // integer counter pattern -type PatternFlowPfcPausePauseClass2Counter struct { +type PatternFlowIpv4FragmentOffsetCounter struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields @@ -58452,23 +57535,23 @@ type PatternFlowPfcPausePauseClass2Counter struct { Count *uint32 `protobuf:"varint,3,opt,name=count,proto3,oneof" json:"count,omitempty"` } -func (x *PatternFlowPfcPausePauseClass2Counter) Reset() { - *x = PatternFlowPfcPausePauseClass2Counter{} +func (x *PatternFlowIpv4FragmentOffsetCounter) Reset() { + *x = PatternFlowIpv4FragmentOffsetCounter{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[475] + mi := &file_otg_proto_msgTypes[437] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowPfcPausePauseClass2Counter) String() string { +func (x *PatternFlowIpv4FragmentOffsetCounter) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowPfcPausePauseClass2Counter) ProtoMessage() {} +func (*PatternFlowIpv4FragmentOffsetCounter) ProtoMessage() {} -func (x *PatternFlowPfcPausePauseClass2Counter) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[475] +func (x *PatternFlowIpv4FragmentOffsetCounter) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[437] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -58479,26 +57562,26 @@ func (x *PatternFlowPfcPausePauseClass2Counter) ProtoReflect() protoreflect.Mess return mi.MessageOf(x) } -// Deprecated: Use PatternFlowPfcPausePauseClass2Counter.ProtoReflect.Descriptor instead. -func (*PatternFlowPfcPausePauseClass2Counter) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{475} +// Deprecated: Use PatternFlowIpv4FragmentOffsetCounter.ProtoReflect.Descriptor instead. +func (*PatternFlowIpv4FragmentOffsetCounter) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{437} } -func (x *PatternFlowPfcPausePauseClass2Counter) GetStart() uint32 { +func (x *PatternFlowIpv4FragmentOffsetCounter) GetStart() uint32 { if x != nil && x.Start != nil { return *x.Start } return 0 } -func (x *PatternFlowPfcPausePauseClass2Counter) GetStep() uint32 { +func (x *PatternFlowIpv4FragmentOffsetCounter) GetStep() uint32 { if x != nil && x.Step != nil { return *x.Step } return 0 } -func (x *PatternFlowPfcPausePauseClass2Counter) GetCount() uint32 { +func (x *PatternFlowIpv4FragmentOffsetCounter) GetCount() uint32 { if x != nil && x.Count != nil { return *x.Count } @@ -58508,7 +57591,7 @@ func (x *PatternFlowPfcPausePauseClass2Counter) GetCount() uint32 { // Metric tag can be used to enable tracking portion of or all bits in a corresponding // header field for metrics per each applicable value. These would appear as tagged // metrics in corresponding flow metrics. -type PatternFlowPfcPausePauseClass2MetricTag struct { +type PatternFlowIpv4FragmentOffsetMetricTag struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields @@ -58522,27 +57605,27 @@ type PatternFlowPfcPausePauseClass2MetricTag struct { Offset *uint32 `protobuf:"varint,2,opt,name=offset,proto3,oneof" json:"offset,omitempty"` // Number of bits to track for metrics starting from configured offset of corresponding // header field - // default = 16 + // default = 5 Length *uint32 `protobuf:"varint,3,opt,name=length,proto3,oneof" json:"length,omitempty"` } -func (x *PatternFlowPfcPausePauseClass2MetricTag) Reset() { - *x = PatternFlowPfcPausePauseClass2MetricTag{} +func (x *PatternFlowIpv4FragmentOffsetMetricTag) Reset() { + *x = PatternFlowIpv4FragmentOffsetMetricTag{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[476] + mi := &file_otg_proto_msgTypes[438] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowPfcPausePauseClass2MetricTag) String() string { +func (x *PatternFlowIpv4FragmentOffsetMetricTag) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowPfcPausePauseClass2MetricTag) ProtoMessage() {} +func (*PatternFlowIpv4FragmentOffsetMetricTag) ProtoMessage() {} -func (x *PatternFlowPfcPausePauseClass2MetricTag) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[476] +func (x *PatternFlowIpv4FragmentOffsetMetricTag) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[438] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -58553,41 +57636,41 @@ func (x *PatternFlowPfcPausePauseClass2MetricTag) ProtoReflect() protoreflect.Me return mi.MessageOf(x) } -// Deprecated: Use PatternFlowPfcPausePauseClass2MetricTag.ProtoReflect.Descriptor instead. -func (*PatternFlowPfcPausePauseClass2MetricTag) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{476} +// Deprecated: Use PatternFlowIpv4FragmentOffsetMetricTag.ProtoReflect.Descriptor instead. +func (*PatternFlowIpv4FragmentOffsetMetricTag) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{438} } -func (x *PatternFlowPfcPausePauseClass2MetricTag) GetName() string { +func (x *PatternFlowIpv4FragmentOffsetMetricTag) GetName() string { if x != nil && x.Name != nil { return *x.Name } return "" } -func (x *PatternFlowPfcPausePauseClass2MetricTag) GetOffset() uint32 { +func (x *PatternFlowIpv4FragmentOffsetMetricTag) GetOffset() uint32 { if x != nil && x.Offset != nil { return *x.Offset } return 0 } -func (x *PatternFlowPfcPausePauseClass2MetricTag) GetLength() uint32 { +func (x *PatternFlowIpv4FragmentOffsetMetricTag) GetLength() uint32 { if x != nil && x.Length != nil { return *x.Length } return 0 } -// Pause class 2 -type PatternFlowPfcPausePauseClass2 struct { +// Fragment offset +type PatternFlowIpv4FragmentOffset struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // Description missing in models // default = Choice.Enum.value - Choice *PatternFlowPfcPausePauseClass2_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.PatternFlowPfcPausePauseClass2_Choice_Enum,oneof" json:"choice,omitempty"` + Choice *PatternFlowIpv4FragmentOffset_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.PatternFlowIpv4FragmentOffset_Choice_Enum,oneof" json:"choice,omitempty"` // Description missing in models // default = 0 Value *uint32 `protobuf:"varint,2,opt,name=value,proto3,oneof" json:"value,omitempty"` @@ -58595,32 +57678,32 @@ type PatternFlowPfcPausePauseClass2 struct { // default = [0] Values []uint32 `protobuf:"varint,3,rep,packed,name=values,proto3" json:"values,omitempty"` // Description missing in models - Increment *PatternFlowPfcPausePauseClass2Counter `protobuf:"bytes,5,opt,name=increment,proto3" json:"increment,omitempty"` + Increment *PatternFlowIpv4FragmentOffsetCounter `protobuf:"bytes,5,opt,name=increment,proto3" json:"increment,omitempty"` // Description missing in models - Decrement *PatternFlowPfcPausePauseClass2Counter `protobuf:"bytes,6,opt,name=decrement,proto3" json:"decrement,omitempty"` + Decrement *PatternFlowIpv4FragmentOffsetCounter `protobuf:"bytes,6,opt,name=decrement,proto3" json:"decrement,omitempty"` // One or more metric tags can be used to enable tracking portion of or all bits in // a corresponding header field for metrics per each applicable value. These would appear // as tagged metrics in corresponding flow metrics. - MetricTags []*PatternFlowPfcPausePauseClass2MetricTag `protobuf:"bytes,7,rep,name=metric_tags,json=metricTags,proto3" json:"metric_tags,omitempty"` + MetricTags []*PatternFlowIpv4FragmentOffsetMetricTag `protobuf:"bytes,7,rep,name=metric_tags,json=metricTags,proto3" json:"metric_tags,omitempty"` } -func (x *PatternFlowPfcPausePauseClass2) Reset() { - *x = PatternFlowPfcPausePauseClass2{} +func (x *PatternFlowIpv4FragmentOffset) Reset() { + *x = PatternFlowIpv4FragmentOffset{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[477] + mi := &file_otg_proto_msgTypes[439] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowPfcPausePauseClass2) String() string { +func (x *PatternFlowIpv4FragmentOffset) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowPfcPausePauseClass2) ProtoMessage() {} +func (*PatternFlowIpv4FragmentOffset) ProtoMessage() {} -func (x *PatternFlowPfcPausePauseClass2) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[477] +func (x *PatternFlowIpv4FragmentOffset) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[439] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -58631,47 +57714,47 @@ func (x *PatternFlowPfcPausePauseClass2) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use PatternFlowPfcPausePauseClass2.ProtoReflect.Descriptor instead. -func (*PatternFlowPfcPausePauseClass2) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{477} +// Deprecated: Use PatternFlowIpv4FragmentOffset.ProtoReflect.Descriptor instead. +func (*PatternFlowIpv4FragmentOffset) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{439} } -func (x *PatternFlowPfcPausePauseClass2) GetChoice() PatternFlowPfcPausePauseClass2_Choice_Enum { +func (x *PatternFlowIpv4FragmentOffset) GetChoice() PatternFlowIpv4FragmentOffset_Choice_Enum { if x != nil && x.Choice != nil { return *x.Choice } - return PatternFlowPfcPausePauseClass2_Choice_unspecified + return PatternFlowIpv4FragmentOffset_Choice_unspecified } -func (x *PatternFlowPfcPausePauseClass2) GetValue() uint32 { +func (x *PatternFlowIpv4FragmentOffset) GetValue() uint32 { if x != nil && x.Value != nil { return *x.Value } return 0 } -func (x *PatternFlowPfcPausePauseClass2) GetValues() []uint32 { +func (x *PatternFlowIpv4FragmentOffset) GetValues() []uint32 { if x != nil { return x.Values } return nil } -func (x *PatternFlowPfcPausePauseClass2) GetIncrement() *PatternFlowPfcPausePauseClass2Counter { +func (x *PatternFlowIpv4FragmentOffset) GetIncrement() *PatternFlowIpv4FragmentOffsetCounter { if x != nil { return x.Increment } return nil } -func (x *PatternFlowPfcPausePauseClass2) GetDecrement() *PatternFlowPfcPausePauseClass2Counter { +func (x *PatternFlowIpv4FragmentOffset) GetDecrement() *PatternFlowIpv4FragmentOffsetCounter { if x != nil { return x.Decrement } return nil } -func (x *PatternFlowPfcPausePauseClass2) GetMetricTags() []*PatternFlowPfcPausePauseClass2MetricTag { +func (x *PatternFlowIpv4FragmentOffset) GetMetricTags() []*PatternFlowIpv4FragmentOffsetMetricTag { if x != nil { return x.MetricTags } @@ -58679,13 +57762,13 @@ func (x *PatternFlowPfcPausePauseClass2) GetMetricTags() []*PatternFlowPfcPauseP } // integer counter pattern -type PatternFlowPfcPausePauseClass3Counter struct { +type PatternFlowIpv4TimeToLiveCounter struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // Description missing in models - // default = 0 + // default = 64 Start *uint32 `protobuf:"varint,1,opt,name=start,proto3,oneof" json:"start,omitempty"` // Description missing in models // default = 1 @@ -58695,23 +57778,23 @@ type PatternFlowPfcPausePauseClass3Counter struct { Count *uint32 `protobuf:"varint,3,opt,name=count,proto3,oneof" json:"count,omitempty"` } -func (x *PatternFlowPfcPausePauseClass3Counter) Reset() { - *x = PatternFlowPfcPausePauseClass3Counter{} +func (x *PatternFlowIpv4TimeToLiveCounter) Reset() { + *x = PatternFlowIpv4TimeToLiveCounter{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[478] + mi := &file_otg_proto_msgTypes[440] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowPfcPausePauseClass3Counter) String() string { +func (x *PatternFlowIpv4TimeToLiveCounter) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowPfcPausePauseClass3Counter) ProtoMessage() {} +func (*PatternFlowIpv4TimeToLiveCounter) ProtoMessage() {} -func (x *PatternFlowPfcPausePauseClass3Counter) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[478] +func (x *PatternFlowIpv4TimeToLiveCounter) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[440] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -58722,26 +57805,26 @@ func (x *PatternFlowPfcPausePauseClass3Counter) ProtoReflect() protoreflect.Mess return mi.MessageOf(x) } -// Deprecated: Use PatternFlowPfcPausePauseClass3Counter.ProtoReflect.Descriptor instead. -func (*PatternFlowPfcPausePauseClass3Counter) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{478} +// Deprecated: Use PatternFlowIpv4TimeToLiveCounter.ProtoReflect.Descriptor instead. +func (*PatternFlowIpv4TimeToLiveCounter) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{440} } -func (x *PatternFlowPfcPausePauseClass3Counter) GetStart() uint32 { +func (x *PatternFlowIpv4TimeToLiveCounter) GetStart() uint32 { if x != nil && x.Start != nil { return *x.Start } return 0 } -func (x *PatternFlowPfcPausePauseClass3Counter) GetStep() uint32 { +func (x *PatternFlowIpv4TimeToLiveCounter) GetStep() uint32 { if x != nil && x.Step != nil { return *x.Step } return 0 } -func (x *PatternFlowPfcPausePauseClass3Counter) GetCount() uint32 { +func (x *PatternFlowIpv4TimeToLiveCounter) GetCount() uint32 { if x != nil && x.Count != nil { return *x.Count } @@ -58751,7 +57834,7 @@ func (x *PatternFlowPfcPausePauseClass3Counter) GetCount() uint32 { // Metric tag can be used to enable tracking portion of or all bits in a corresponding // header field for metrics per each applicable value. These would appear as tagged // metrics in corresponding flow metrics. -type PatternFlowPfcPausePauseClass3MetricTag struct { +type PatternFlowIpv4TimeToLiveMetricTag struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields @@ -58765,27 +57848,27 @@ type PatternFlowPfcPausePauseClass3MetricTag struct { Offset *uint32 `protobuf:"varint,2,opt,name=offset,proto3,oneof" json:"offset,omitempty"` // Number of bits to track for metrics starting from configured offset of corresponding // header field - // default = 16 + // default = 8 Length *uint32 `protobuf:"varint,3,opt,name=length,proto3,oneof" json:"length,omitempty"` } -func (x *PatternFlowPfcPausePauseClass3MetricTag) Reset() { - *x = PatternFlowPfcPausePauseClass3MetricTag{} +func (x *PatternFlowIpv4TimeToLiveMetricTag) Reset() { + *x = PatternFlowIpv4TimeToLiveMetricTag{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[479] + mi := &file_otg_proto_msgTypes[441] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowPfcPausePauseClass3MetricTag) String() string { +func (x *PatternFlowIpv4TimeToLiveMetricTag) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowPfcPausePauseClass3MetricTag) ProtoMessage() {} +func (*PatternFlowIpv4TimeToLiveMetricTag) ProtoMessage() {} -func (x *PatternFlowPfcPausePauseClass3MetricTag) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[479] +func (x *PatternFlowIpv4TimeToLiveMetricTag) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[441] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -58796,74 +57879,74 @@ func (x *PatternFlowPfcPausePauseClass3MetricTag) ProtoReflect() protoreflect.Me return mi.MessageOf(x) } -// Deprecated: Use PatternFlowPfcPausePauseClass3MetricTag.ProtoReflect.Descriptor instead. -func (*PatternFlowPfcPausePauseClass3MetricTag) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{479} +// Deprecated: Use PatternFlowIpv4TimeToLiveMetricTag.ProtoReflect.Descriptor instead. +func (*PatternFlowIpv4TimeToLiveMetricTag) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{441} } -func (x *PatternFlowPfcPausePauseClass3MetricTag) GetName() string { +func (x *PatternFlowIpv4TimeToLiveMetricTag) GetName() string { if x != nil && x.Name != nil { return *x.Name } return "" } -func (x *PatternFlowPfcPausePauseClass3MetricTag) GetOffset() uint32 { +func (x *PatternFlowIpv4TimeToLiveMetricTag) GetOffset() uint32 { if x != nil && x.Offset != nil { return *x.Offset } return 0 } -func (x *PatternFlowPfcPausePauseClass3MetricTag) GetLength() uint32 { +func (x *PatternFlowIpv4TimeToLiveMetricTag) GetLength() uint32 { if x != nil && x.Length != nil { return *x.Length } return 0 } -// Pause class 3 -type PatternFlowPfcPausePauseClass3 struct { +// Time to live +type PatternFlowIpv4TimeToLive struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // Description missing in models // default = Choice.Enum.value - Choice *PatternFlowPfcPausePauseClass3_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.PatternFlowPfcPausePauseClass3_Choice_Enum,oneof" json:"choice,omitempty"` + Choice *PatternFlowIpv4TimeToLive_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.PatternFlowIpv4TimeToLive_Choice_Enum,oneof" json:"choice,omitempty"` // Description missing in models - // default = 0 + // default = 64 Value *uint32 `protobuf:"varint,2,opt,name=value,proto3,oneof" json:"value,omitempty"` // Description missing in models - // default = [0] + // default = [64] Values []uint32 `protobuf:"varint,3,rep,packed,name=values,proto3" json:"values,omitempty"` // Description missing in models - Increment *PatternFlowPfcPausePauseClass3Counter `protobuf:"bytes,5,opt,name=increment,proto3" json:"increment,omitempty"` + Increment *PatternFlowIpv4TimeToLiveCounter `protobuf:"bytes,5,opt,name=increment,proto3" json:"increment,omitempty"` // Description missing in models - Decrement *PatternFlowPfcPausePauseClass3Counter `protobuf:"bytes,6,opt,name=decrement,proto3" json:"decrement,omitempty"` + Decrement *PatternFlowIpv4TimeToLiveCounter `protobuf:"bytes,6,opt,name=decrement,proto3" json:"decrement,omitempty"` // One or more metric tags can be used to enable tracking portion of or all bits in // a corresponding header field for metrics per each applicable value. These would appear // as tagged metrics in corresponding flow metrics. - MetricTags []*PatternFlowPfcPausePauseClass3MetricTag `protobuf:"bytes,7,rep,name=metric_tags,json=metricTags,proto3" json:"metric_tags,omitempty"` + MetricTags []*PatternFlowIpv4TimeToLiveMetricTag `protobuf:"bytes,7,rep,name=metric_tags,json=metricTags,proto3" json:"metric_tags,omitempty"` } -func (x *PatternFlowPfcPausePauseClass3) Reset() { - *x = PatternFlowPfcPausePauseClass3{} +func (x *PatternFlowIpv4TimeToLive) Reset() { + *x = PatternFlowIpv4TimeToLive{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[480] + mi := &file_otg_proto_msgTypes[442] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowPfcPausePauseClass3) String() string { +func (x *PatternFlowIpv4TimeToLive) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowPfcPausePauseClass3) ProtoMessage() {} +func (*PatternFlowIpv4TimeToLive) ProtoMessage() {} -func (x *PatternFlowPfcPausePauseClass3) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[480] +func (x *PatternFlowIpv4TimeToLive) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[442] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -58874,47 +57957,47 @@ func (x *PatternFlowPfcPausePauseClass3) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use PatternFlowPfcPausePauseClass3.ProtoReflect.Descriptor instead. -func (*PatternFlowPfcPausePauseClass3) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{480} +// Deprecated: Use PatternFlowIpv4TimeToLive.ProtoReflect.Descriptor instead. +func (*PatternFlowIpv4TimeToLive) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{442} } -func (x *PatternFlowPfcPausePauseClass3) GetChoice() PatternFlowPfcPausePauseClass3_Choice_Enum { +func (x *PatternFlowIpv4TimeToLive) GetChoice() PatternFlowIpv4TimeToLive_Choice_Enum { if x != nil && x.Choice != nil { return *x.Choice } - return PatternFlowPfcPausePauseClass3_Choice_unspecified + return PatternFlowIpv4TimeToLive_Choice_unspecified } -func (x *PatternFlowPfcPausePauseClass3) GetValue() uint32 { +func (x *PatternFlowIpv4TimeToLive) GetValue() uint32 { if x != nil && x.Value != nil { return *x.Value } return 0 } -func (x *PatternFlowPfcPausePauseClass3) GetValues() []uint32 { +func (x *PatternFlowIpv4TimeToLive) GetValues() []uint32 { if x != nil { return x.Values } return nil } -func (x *PatternFlowPfcPausePauseClass3) GetIncrement() *PatternFlowPfcPausePauseClass3Counter { +func (x *PatternFlowIpv4TimeToLive) GetIncrement() *PatternFlowIpv4TimeToLiveCounter { if x != nil { return x.Increment } return nil } -func (x *PatternFlowPfcPausePauseClass3) GetDecrement() *PatternFlowPfcPausePauseClass3Counter { +func (x *PatternFlowIpv4TimeToLive) GetDecrement() *PatternFlowIpv4TimeToLiveCounter { if x != nil { return x.Decrement } return nil } -func (x *PatternFlowPfcPausePauseClass3) GetMetricTags() []*PatternFlowPfcPausePauseClass3MetricTag { +func (x *PatternFlowIpv4TimeToLive) GetMetricTags() []*PatternFlowIpv4TimeToLiveMetricTag { if x != nil { return x.MetricTags } @@ -58922,13 +58005,13 @@ func (x *PatternFlowPfcPausePauseClass3) GetMetricTags() []*PatternFlowPfcPauseP } // integer counter pattern -type PatternFlowPfcPausePauseClass4Counter struct { +type PatternFlowIpv4ProtocolCounter struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // Description missing in models - // default = 0 + // default = 61 Start *uint32 `protobuf:"varint,1,opt,name=start,proto3,oneof" json:"start,omitempty"` // Description missing in models // default = 1 @@ -58938,23 +58021,23 @@ type PatternFlowPfcPausePauseClass4Counter struct { Count *uint32 `protobuf:"varint,3,opt,name=count,proto3,oneof" json:"count,omitempty"` } -func (x *PatternFlowPfcPausePauseClass4Counter) Reset() { - *x = PatternFlowPfcPausePauseClass4Counter{} +func (x *PatternFlowIpv4ProtocolCounter) Reset() { + *x = PatternFlowIpv4ProtocolCounter{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[481] + mi := &file_otg_proto_msgTypes[443] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowPfcPausePauseClass4Counter) String() string { +func (x *PatternFlowIpv4ProtocolCounter) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowPfcPausePauseClass4Counter) ProtoMessage() {} +func (*PatternFlowIpv4ProtocolCounter) ProtoMessage() {} -func (x *PatternFlowPfcPausePauseClass4Counter) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[481] +func (x *PatternFlowIpv4ProtocolCounter) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[443] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -58965,26 +58048,26 @@ func (x *PatternFlowPfcPausePauseClass4Counter) ProtoReflect() protoreflect.Mess return mi.MessageOf(x) } -// Deprecated: Use PatternFlowPfcPausePauseClass4Counter.ProtoReflect.Descriptor instead. -func (*PatternFlowPfcPausePauseClass4Counter) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{481} +// Deprecated: Use PatternFlowIpv4ProtocolCounter.ProtoReflect.Descriptor instead. +func (*PatternFlowIpv4ProtocolCounter) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{443} } -func (x *PatternFlowPfcPausePauseClass4Counter) GetStart() uint32 { +func (x *PatternFlowIpv4ProtocolCounter) GetStart() uint32 { if x != nil && x.Start != nil { return *x.Start } return 0 } -func (x *PatternFlowPfcPausePauseClass4Counter) GetStep() uint32 { +func (x *PatternFlowIpv4ProtocolCounter) GetStep() uint32 { if x != nil && x.Step != nil { return *x.Step } return 0 } -func (x *PatternFlowPfcPausePauseClass4Counter) GetCount() uint32 { +func (x *PatternFlowIpv4ProtocolCounter) GetCount() uint32 { if x != nil && x.Count != nil { return *x.Count } @@ -58994,7 +58077,7 @@ func (x *PatternFlowPfcPausePauseClass4Counter) GetCount() uint32 { // Metric tag can be used to enable tracking portion of or all bits in a corresponding // header field for metrics per each applicable value. These would appear as tagged // metrics in corresponding flow metrics. -type PatternFlowPfcPausePauseClass4MetricTag struct { +type PatternFlowIpv4ProtocolMetricTag struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields @@ -59008,27 +58091,27 @@ type PatternFlowPfcPausePauseClass4MetricTag struct { Offset *uint32 `protobuf:"varint,2,opt,name=offset,proto3,oneof" json:"offset,omitempty"` // Number of bits to track for metrics starting from configured offset of corresponding // header field - // default = 16 + // default = 8 Length *uint32 `protobuf:"varint,3,opt,name=length,proto3,oneof" json:"length,omitempty"` } -func (x *PatternFlowPfcPausePauseClass4MetricTag) Reset() { - *x = PatternFlowPfcPausePauseClass4MetricTag{} +func (x *PatternFlowIpv4ProtocolMetricTag) Reset() { + *x = PatternFlowIpv4ProtocolMetricTag{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[482] + mi := &file_otg_proto_msgTypes[444] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowPfcPausePauseClass4MetricTag) String() string { +func (x *PatternFlowIpv4ProtocolMetricTag) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowPfcPausePauseClass4MetricTag) ProtoMessage() {} +func (*PatternFlowIpv4ProtocolMetricTag) ProtoMessage() {} -func (x *PatternFlowPfcPausePauseClass4MetricTag) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[482] +func (x *PatternFlowIpv4ProtocolMetricTag) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[444] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -59039,74 +58122,79 @@ func (x *PatternFlowPfcPausePauseClass4MetricTag) ProtoReflect() protoreflect.Me return mi.MessageOf(x) } -// Deprecated: Use PatternFlowPfcPausePauseClass4MetricTag.ProtoReflect.Descriptor instead. -func (*PatternFlowPfcPausePauseClass4MetricTag) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{482} +// Deprecated: Use PatternFlowIpv4ProtocolMetricTag.ProtoReflect.Descriptor instead. +func (*PatternFlowIpv4ProtocolMetricTag) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{444} } -func (x *PatternFlowPfcPausePauseClass4MetricTag) GetName() string { +func (x *PatternFlowIpv4ProtocolMetricTag) GetName() string { if x != nil && x.Name != nil { return *x.Name } return "" } -func (x *PatternFlowPfcPausePauseClass4MetricTag) GetOffset() uint32 { +func (x *PatternFlowIpv4ProtocolMetricTag) GetOffset() uint32 { if x != nil && x.Offset != nil { return *x.Offset } return 0 } -func (x *PatternFlowPfcPausePauseClass4MetricTag) GetLength() uint32 { +func (x *PatternFlowIpv4ProtocolMetricTag) GetLength() uint32 { if x != nil && x.Length != nil { return *x.Length } return 0 } -// Pause class 4 -type PatternFlowPfcPausePauseClass4 struct { +// Protocol, default is 61 any host internal protocol +type PatternFlowIpv4Protocol struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // Description missing in models - // default = Choice.Enum.value - Choice *PatternFlowPfcPausePauseClass4_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.PatternFlowPfcPausePauseClass4_Choice_Enum,oneof" json:"choice,omitempty"` + // default = Choice.Enum.auto + Choice *PatternFlowIpv4Protocol_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.PatternFlowIpv4Protocol_Choice_Enum,oneof" json:"choice,omitempty"` // Description missing in models - // default = 0 + // default = 61 Value *uint32 `protobuf:"varint,2,opt,name=value,proto3,oneof" json:"value,omitempty"` // Description missing in models - // default = [0] + // default = [61] Values []uint32 `protobuf:"varint,3,rep,packed,name=values,proto3" json:"values,omitempty"` + // The OTG implementation can provide a system generated + // value for this property. If the OTG is unable to generate a value + // the default value must be used. + // default = 61 + Auto *uint32 `protobuf:"varint,4,opt,name=auto,proto3,oneof" json:"auto,omitempty"` // Description missing in models - Increment *PatternFlowPfcPausePauseClass4Counter `protobuf:"bytes,5,opt,name=increment,proto3" json:"increment,omitempty"` + Increment *PatternFlowIpv4ProtocolCounter `protobuf:"bytes,6,opt,name=increment,proto3" json:"increment,omitempty"` // Description missing in models - Decrement *PatternFlowPfcPausePauseClass4Counter `protobuf:"bytes,6,opt,name=decrement,proto3" json:"decrement,omitempty"` + Decrement *PatternFlowIpv4ProtocolCounter `protobuf:"bytes,7,opt,name=decrement,proto3" json:"decrement,omitempty"` // One or more metric tags can be used to enable tracking portion of or all bits in // a corresponding header field for metrics per each applicable value. These would appear // as tagged metrics in corresponding flow metrics. - MetricTags []*PatternFlowPfcPausePauseClass4MetricTag `protobuf:"bytes,7,rep,name=metric_tags,json=metricTags,proto3" json:"metric_tags,omitempty"` + MetricTags []*PatternFlowIpv4ProtocolMetricTag `protobuf:"bytes,8,rep,name=metric_tags,json=metricTags,proto3" json:"metric_tags,omitempty"` } -func (x *PatternFlowPfcPausePauseClass4) Reset() { - *x = PatternFlowPfcPausePauseClass4{} +func (x *PatternFlowIpv4Protocol) Reset() { + *x = PatternFlowIpv4Protocol{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[483] + mi := &file_otg_proto_msgTypes[445] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowPfcPausePauseClass4) String() string { +func (x *PatternFlowIpv4Protocol) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowPfcPausePauseClass4) ProtoMessage() {} +func (*PatternFlowIpv4Protocol) ProtoMessage() {} -func (x *PatternFlowPfcPausePauseClass4) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[483] +func (x *PatternFlowIpv4Protocol) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[445] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -59117,87 +58205,93 @@ func (x *PatternFlowPfcPausePauseClass4) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use PatternFlowPfcPausePauseClass4.ProtoReflect.Descriptor instead. -func (*PatternFlowPfcPausePauseClass4) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{483} +// Deprecated: Use PatternFlowIpv4Protocol.ProtoReflect.Descriptor instead. +func (*PatternFlowIpv4Protocol) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{445} } -func (x *PatternFlowPfcPausePauseClass4) GetChoice() PatternFlowPfcPausePauseClass4_Choice_Enum { +func (x *PatternFlowIpv4Protocol) GetChoice() PatternFlowIpv4Protocol_Choice_Enum { if x != nil && x.Choice != nil { return *x.Choice } - return PatternFlowPfcPausePauseClass4_Choice_unspecified + return PatternFlowIpv4Protocol_Choice_unspecified } -func (x *PatternFlowPfcPausePauseClass4) GetValue() uint32 { +func (x *PatternFlowIpv4Protocol) GetValue() uint32 { if x != nil && x.Value != nil { return *x.Value } return 0 } -func (x *PatternFlowPfcPausePauseClass4) GetValues() []uint32 { +func (x *PatternFlowIpv4Protocol) GetValues() []uint32 { if x != nil { return x.Values } return nil } -func (x *PatternFlowPfcPausePauseClass4) GetIncrement() *PatternFlowPfcPausePauseClass4Counter { +func (x *PatternFlowIpv4Protocol) GetAuto() uint32 { + if x != nil && x.Auto != nil { + return *x.Auto + } + return 0 +} + +func (x *PatternFlowIpv4Protocol) GetIncrement() *PatternFlowIpv4ProtocolCounter { if x != nil { return x.Increment } return nil } -func (x *PatternFlowPfcPausePauseClass4) GetDecrement() *PatternFlowPfcPausePauseClass4Counter { +func (x *PatternFlowIpv4Protocol) GetDecrement() *PatternFlowIpv4ProtocolCounter { if x != nil { return x.Decrement } return nil } -func (x *PatternFlowPfcPausePauseClass4) GetMetricTags() []*PatternFlowPfcPausePauseClass4MetricTag { +func (x *PatternFlowIpv4Protocol) GetMetricTags() []*PatternFlowIpv4ProtocolMetricTag { if x != nil { return x.MetricTags } return nil } -// integer counter pattern -type PatternFlowPfcPausePauseClass5Counter struct { +// Header checksum +type PatternFlowIpv4HeaderChecksum struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Description missing in models - // default = 0 - Start *uint32 `protobuf:"varint,1,opt,name=start,proto3,oneof" json:"start,omitempty"` - // Description missing in models - // default = 1 - Step *uint32 `protobuf:"varint,2,opt,name=step,proto3,oneof" json:"step,omitempty"` - // Description missing in models - // default = 1 - Count *uint32 `protobuf:"varint,3,opt,name=count,proto3,oneof" json:"count,omitempty"` + // The type of checksum + // default = Choice.Enum.generated + Choice *PatternFlowIpv4HeaderChecksum_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.PatternFlowIpv4HeaderChecksum_Choice_Enum,oneof" json:"choice,omitempty"` + // A system generated checksum value + // default = Generated.Enum.good + Generated *PatternFlowIpv4HeaderChecksum_Generated_Enum `protobuf:"varint,2,opt,name=generated,proto3,enum=otg.PatternFlowIpv4HeaderChecksum_Generated_Enum,oneof" json:"generated,omitempty"` + // A custom checksum value + Custom *uint32 `protobuf:"varint,3,opt,name=custom,proto3,oneof" json:"custom,omitempty"` } -func (x *PatternFlowPfcPausePauseClass5Counter) Reset() { - *x = PatternFlowPfcPausePauseClass5Counter{} - if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[484] +func (x *PatternFlowIpv4HeaderChecksum) Reset() { + *x = PatternFlowIpv4HeaderChecksum{} + if protoimpl.UnsafeEnabled { + mi := &file_otg_proto_msgTypes[446] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowPfcPausePauseClass5Counter) String() string { +func (x *PatternFlowIpv4HeaderChecksum) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowPfcPausePauseClass5Counter) ProtoMessage() {} +func (*PatternFlowIpv4HeaderChecksum) ProtoMessage() {} -func (x *PatternFlowPfcPausePauseClass5Counter) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[484] +func (x *PatternFlowIpv4HeaderChecksum) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[446] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -59208,26 +58302,96 @@ func (x *PatternFlowPfcPausePauseClass5Counter) ProtoReflect() protoreflect.Mess return mi.MessageOf(x) } -// Deprecated: Use PatternFlowPfcPausePauseClass5Counter.ProtoReflect.Descriptor instead. -func (*PatternFlowPfcPausePauseClass5Counter) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{484} +// Deprecated: Use PatternFlowIpv4HeaderChecksum.ProtoReflect.Descriptor instead. +func (*PatternFlowIpv4HeaderChecksum) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{446} } -func (x *PatternFlowPfcPausePauseClass5Counter) GetStart() uint32 { +func (x *PatternFlowIpv4HeaderChecksum) GetChoice() PatternFlowIpv4HeaderChecksum_Choice_Enum { + if x != nil && x.Choice != nil { + return *x.Choice + } + return PatternFlowIpv4HeaderChecksum_Choice_unspecified +} + +func (x *PatternFlowIpv4HeaderChecksum) GetGenerated() PatternFlowIpv4HeaderChecksum_Generated_Enum { + if x != nil && x.Generated != nil { + return *x.Generated + } + return PatternFlowIpv4HeaderChecksum_Generated_unspecified +} + +func (x *PatternFlowIpv4HeaderChecksum) GetCustom() uint32 { + if x != nil && x.Custom != nil { + return *x.Custom + } + return 0 +} + +// ipv4 counter pattern +type PatternFlowIpv4SrcCounter struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Description missing in models + // default = 0.0.0.0 + Start *string `protobuf:"bytes,1,opt,name=start,proto3,oneof" json:"start,omitempty"` + // Description missing in models + // default = 0.0.0.1 + Step *string `protobuf:"bytes,2,opt,name=step,proto3,oneof" json:"step,omitempty"` + // Description missing in models + // default = 1 + Count *uint32 `protobuf:"varint,3,opt,name=count,proto3,oneof" json:"count,omitempty"` +} + +func (x *PatternFlowIpv4SrcCounter) Reset() { + *x = PatternFlowIpv4SrcCounter{} + if protoimpl.UnsafeEnabled { + mi := &file_otg_proto_msgTypes[447] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *PatternFlowIpv4SrcCounter) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PatternFlowIpv4SrcCounter) ProtoMessage() {} + +func (x *PatternFlowIpv4SrcCounter) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[447] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use PatternFlowIpv4SrcCounter.ProtoReflect.Descriptor instead. +func (*PatternFlowIpv4SrcCounter) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{447} +} + +func (x *PatternFlowIpv4SrcCounter) GetStart() string { if x != nil && x.Start != nil { return *x.Start } - return 0 + return "" } -func (x *PatternFlowPfcPausePauseClass5Counter) GetStep() uint32 { +func (x *PatternFlowIpv4SrcCounter) GetStep() string { if x != nil && x.Step != nil { return *x.Step } - return 0 + return "" } -func (x *PatternFlowPfcPausePauseClass5Counter) GetCount() uint32 { +func (x *PatternFlowIpv4SrcCounter) GetCount() uint32 { if x != nil && x.Count != nil { return *x.Count } @@ -59237,7 +58401,7 @@ func (x *PatternFlowPfcPausePauseClass5Counter) GetCount() uint32 { // Metric tag can be used to enable tracking portion of or all bits in a corresponding // header field for metrics per each applicable value. These would appear as tagged // metrics in corresponding flow metrics. -type PatternFlowPfcPausePauseClass5MetricTag struct { +type PatternFlowIpv4SrcMetricTag struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields @@ -59251,27 +58415,27 @@ type PatternFlowPfcPausePauseClass5MetricTag struct { Offset *uint32 `protobuf:"varint,2,opt,name=offset,proto3,oneof" json:"offset,omitempty"` // Number of bits to track for metrics starting from configured offset of corresponding // header field - // default = 16 + // default = 32 Length *uint32 `protobuf:"varint,3,opt,name=length,proto3,oneof" json:"length,omitempty"` } -func (x *PatternFlowPfcPausePauseClass5MetricTag) Reset() { - *x = PatternFlowPfcPausePauseClass5MetricTag{} +func (x *PatternFlowIpv4SrcMetricTag) Reset() { + *x = PatternFlowIpv4SrcMetricTag{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[485] + mi := &file_otg_proto_msgTypes[448] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowPfcPausePauseClass5MetricTag) String() string { +func (x *PatternFlowIpv4SrcMetricTag) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowPfcPausePauseClass5MetricTag) ProtoMessage() {} +func (*PatternFlowIpv4SrcMetricTag) ProtoMessage() {} -func (x *PatternFlowPfcPausePauseClass5MetricTag) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[485] +func (x *PatternFlowIpv4SrcMetricTag) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[448] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -59282,74 +58446,74 @@ func (x *PatternFlowPfcPausePauseClass5MetricTag) ProtoReflect() protoreflect.Me return mi.MessageOf(x) } -// Deprecated: Use PatternFlowPfcPausePauseClass5MetricTag.ProtoReflect.Descriptor instead. -func (*PatternFlowPfcPausePauseClass5MetricTag) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{485} +// Deprecated: Use PatternFlowIpv4SrcMetricTag.ProtoReflect.Descriptor instead. +func (*PatternFlowIpv4SrcMetricTag) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{448} } -func (x *PatternFlowPfcPausePauseClass5MetricTag) GetName() string { +func (x *PatternFlowIpv4SrcMetricTag) GetName() string { if x != nil && x.Name != nil { return *x.Name } return "" } -func (x *PatternFlowPfcPausePauseClass5MetricTag) GetOffset() uint32 { +func (x *PatternFlowIpv4SrcMetricTag) GetOffset() uint32 { if x != nil && x.Offset != nil { return *x.Offset } return 0 } -func (x *PatternFlowPfcPausePauseClass5MetricTag) GetLength() uint32 { +func (x *PatternFlowIpv4SrcMetricTag) GetLength() uint32 { if x != nil && x.Length != nil { return *x.Length } return 0 } -// Pause class 5 -type PatternFlowPfcPausePauseClass5 struct { +// Source address +type PatternFlowIpv4Src struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // Description missing in models // default = Choice.Enum.value - Choice *PatternFlowPfcPausePauseClass5_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.PatternFlowPfcPausePauseClass5_Choice_Enum,oneof" json:"choice,omitempty"` + Choice *PatternFlowIpv4Src_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.PatternFlowIpv4Src_Choice_Enum,oneof" json:"choice,omitempty"` // Description missing in models - // default = 0 - Value *uint32 `protobuf:"varint,2,opt,name=value,proto3,oneof" json:"value,omitempty"` + // default = 0.0.0.0 + Value *string `protobuf:"bytes,2,opt,name=value,proto3,oneof" json:"value,omitempty"` // Description missing in models - // default = [0] - Values []uint32 `protobuf:"varint,3,rep,packed,name=values,proto3" json:"values,omitempty"` + // default = ['0.0.0.0'] + Values []string `protobuf:"bytes,3,rep,name=values,proto3" json:"values,omitempty"` // Description missing in models - Increment *PatternFlowPfcPausePauseClass5Counter `protobuf:"bytes,5,opt,name=increment,proto3" json:"increment,omitempty"` + Increment *PatternFlowIpv4SrcCounter `protobuf:"bytes,5,opt,name=increment,proto3" json:"increment,omitempty"` // Description missing in models - Decrement *PatternFlowPfcPausePauseClass5Counter `protobuf:"bytes,6,opt,name=decrement,proto3" json:"decrement,omitempty"` + Decrement *PatternFlowIpv4SrcCounter `protobuf:"bytes,6,opt,name=decrement,proto3" json:"decrement,omitempty"` // One or more metric tags can be used to enable tracking portion of or all bits in // a corresponding header field for metrics per each applicable value. These would appear // as tagged metrics in corresponding flow metrics. - MetricTags []*PatternFlowPfcPausePauseClass5MetricTag `protobuf:"bytes,7,rep,name=metric_tags,json=metricTags,proto3" json:"metric_tags,omitempty"` + MetricTags []*PatternFlowIpv4SrcMetricTag `protobuf:"bytes,7,rep,name=metric_tags,json=metricTags,proto3" json:"metric_tags,omitempty"` } -func (x *PatternFlowPfcPausePauseClass5) Reset() { - *x = PatternFlowPfcPausePauseClass5{} +func (x *PatternFlowIpv4Src) Reset() { + *x = PatternFlowIpv4Src{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[486] + mi := &file_otg_proto_msgTypes[449] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowPfcPausePauseClass5) String() string { +func (x *PatternFlowIpv4Src) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowPfcPausePauseClass5) ProtoMessage() {} +func (*PatternFlowIpv4Src) ProtoMessage() {} -func (x *PatternFlowPfcPausePauseClass5) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[486] +func (x *PatternFlowIpv4Src) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[449] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -59360,87 +58524,87 @@ func (x *PatternFlowPfcPausePauseClass5) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use PatternFlowPfcPausePauseClass5.ProtoReflect.Descriptor instead. -func (*PatternFlowPfcPausePauseClass5) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{486} +// Deprecated: Use PatternFlowIpv4Src.ProtoReflect.Descriptor instead. +func (*PatternFlowIpv4Src) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{449} } -func (x *PatternFlowPfcPausePauseClass5) GetChoice() PatternFlowPfcPausePauseClass5_Choice_Enum { +func (x *PatternFlowIpv4Src) GetChoice() PatternFlowIpv4Src_Choice_Enum { if x != nil && x.Choice != nil { return *x.Choice } - return PatternFlowPfcPausePauseClass5_Choice_unspecified + return PatternFlowIpv4Src_Choice_unspecified } -func (x *PatternFlowPfcPausePauseClass5) GetValue() uint32 { +func (x *PatternFlowIpv4Src) GetValue() string { if x != nil && x.Value != nil { return *x.Value } - return 0 + return "" } -func (x *PatternFlowPfcPausePauseClass5) GetValues() []uint32 { +func (x *PatternFlowIpv4Src) GetValues() []string { if x != nil { return x.Values } return nil } -func (x *PatternFlowPfcPausePauseClass5) GetIncrement() *PatternFlowPfcPausePauseClass5Counter { +func (x *PatternFlowIpv4Src) GetIncrement() *PatternFlowIpv4SrcCounter { if x != nil { return x.Increment } return nil } -func (x *PatternFlowPfcPausePauseClass5) GetDecrement() *PatternFlowPfcPausePauseClass5Counter { +func (x *PatternFlowIpv4Src) GetDecrement() *PatternFlowIpv4SrcCounter { if x != nil { return x.Decrement } return nil } -func (x *PatternFlowPfcPausePauseClass5) GetMetricTags() []*PatternFlowPfcPausePauseClass5MetricTag { +func (x *PatternFlowIpv4Src) GetMetricTags() []*PatternFlowIpv4SrcMetricTag { if x != nil { return x.MetricTags } return nil } -// integer counter pattern -type PatternFlowPfcPausePauseClass6Counter struct { +// ipv4 counter pattern +type PatternFlowIpv4DstCounter struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // Description missing in models - // default = 0 - Start *uint32 `protobuf:"varint,1,opt,name=start,proto3,oneof" json:"start,omitempty"` + // default = 0.0.0.0 + Start *string `protobuf:"bytes,1,opt,name=start,proto3,oneof" json:"start,omitempty"` // Description missing in models - // default = 1 - Step *uint32 `protobuf:"varint,2,opt,name=step,proto3,oneof" json:"step,omitempty"` + // default = 0.0.0.1 + Step *string `protobuf:"bytes,2,opt,name=step,proto3,oneof" json:"step,omitempty"` // Description missing in models // default = 1 Count *uint32 `protobuf:"varint,3,opt,name=count,proto3,oneof" json:"count,omitempty"` } -func (x *PatternFlowPfcPausePauseClass6Counter) Reset() { - *x = PatternFlowPfcPausePauseClass6Counter{} +func (x *PatternFlowIpv4DstCounter) Reset() { + *x = PatternFlowIpv4DstCounter{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[487] + mi := &file_otg_proto_msgTypes[450] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowPfcPausePauseClass6Counter) String() string { +func (x *PatternFlowIpv4DstCounter) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowPfcPausePauseClass6Counter) ProtoMessage() {} +func (*PatternFlowIpv4DstCounter) ProtoMessage() {} -func (x *PatternFlowPfcPausePauseClass6Counter) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[487] +func (x *PatternFlowIpv4DstCounter) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[450] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -59451,26 +58615,26 @@ func (x *PatternFlowPfcPausePauseClass6Counter) ProtoReflect() protoreflect.Mess return mi.MessageOf(x) } -// Deprecated: Use PatternFlowPfcPausePauseClass6Counter.ProtoReflect.Descriptor instead. -func (*PatternFlowPfcPausePauseClass6Counter) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{487} +// Deprecated: Use PatternFlowIpv4DstCounter.ProtoReflect.Descriptor instead. +func (*PatternFlowIpv4DstCounter) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{450} } -func (x *PatternFlowPfcPausePauseClass6Counter) GetStart() uint32 { +func (x *PatternFlowIpv4DstCounter) GetStart() string { if x != nil && x.Start != nil { return *x.Start } - return 0 + return "" } -func (x *PatternFlowPfcPausePauseClass6Counter) GetStep() uint32 { +func (x *PatternFlowIpv4DstCounter) GetStep() string { if x != nil && x.Step != nil { return *x.Step } - return 0 + return "" } -func (x *PatternFlowPfcPausePauseClass6Counter) GetCount() uint32 { +func (x *PatternFlowIpv4DstCounter) GetCount() uint32 { if x != nil && x.Count != nil { return *x.Count } @@ -59480,7 +58644,7 @@ func (x *PatternFlowPfcPausePauseClass6Counter) GetCount() uint32 { // Metric tag can be used to enable tracking portion of or all bits in a corresponding // header field for metrics per each applicable value. These would appear as tagged // metrics in corresponding flow metrics. -type PatternFlowPfcPausePauseClass6MetricTag struct { +type PatternFlowIpv4DstMetricTag struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields @@ -59494,27 +58658,27 @@ type PatternFlowPfcPausePauseClass6MetricTag struct { Offset *uint32 `protobuf:"varint,2,opt,name=offset,proto3,oneof" json:"offset,omitempty"` // Number of bits to track for metrics starting from configured offset of corresponding // header field - // default = 16 + // default = 32 Length *uint32 `protobuf:"varint,3,opt,name=length,proto3,oneof" json:"length,omitempty"` } -func (x *PatternFlowPfcPausePauseClass6MetricTag) Reset() { - *x = PatternFlowPfcPausePauseClass6MetricTag{} +func (x *PatternFlowIpv4DstMetricTag) Reset() { + *x = PatternFlowIpv4DstMetricTag{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[488] + mi := &file_otg_proto_msgTypes[451] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowPfcPausePauseClass6MetricTag) String() string { +func (x *PatternFlowIpv4DstMetricTag) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowPfcPausePauseClass6MetricTag) ProtoMessage() {} +func (*PatternFlowIpv4DstMetricTag) ProtoMessage() {} -func (x *PatternFlowPfcPausePauseClass6MetricTag) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[488] +func (x *PatternFlowIpv4DstMetricTag) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[451] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -59525,74 +58689,74 @@ func (x *PatternFlowPfcPausePauseClass6MetricTag) ProtoReflect() protoreflect.Me return mi.MessageOf(x) } -// Deprecated: Use PatternFlowPfcPausePauseClass6MetricTag.ProtoReflect.Descriptor instead. -func (*PatternFlowPfcPausePauseClass6MetricTag) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{488} +// Deprecated: Use PatternFlowIpv4DstMetricTag.ProtoReflect.Descriptor instead. +func (*PatternFlowIpv4DstMetricTag) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{451} } -func (x *PatternFlowPfcPausePauseClass6MetricTag) GetName() string { +func (x *PatternFlowIpv4DstMetricTag) GetName() string { if x != nil && x.Name != nil { return *x.Name } return "" } -func (x *PatternFlowPfcPausePauseClass6MetricTag) GetOffset() uint32 { +func (x *PatternFlowIpv4DstMetricTag) GetOffset() uint32 { if x != nil && x.Offset != nil { return *x.Offset } return 0 } -func (x *PatternFlowPfcPausePauseClass6MetricTag) GetLength() uint32 { +func (x *PatternFlowIpv4DstMetricTag) GetLength() uint32 { if x != nil && x.Length != nil { return *x.Length } return 0 } -// Pause class 6 -type PatternFlowPfcPausePauseClass6 struct { +// Destination address +type PatternFlowIpv4Dst struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // Description missing in models // default = Choice.Enum.value - Choice *PatternFlowPfcPausePauseClass6_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.PatternFlowPfcPausePauseClass6_Choice_Enum,oneof" json:"choice,omitempty"` + Choice *PatternFlowIpv4Dst_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.PatternFlowIpv4Dst_Choice_Enum,oneof" json:"choice,omitempty"` // Description missing in models - // default = 0 - Value *uint32 `protobuf:"varint,2,opt,name=value,proto3,oneof" json:"value,omitempty"` + // default = 0.0.0.0 + Value *string `protobuf:"bytes,2,opt,name=value,proto3,oneof" json:"value,omitempty"` // Description missing in models - // default = [0] - Values []uint32 `protobuf:"varint,3,rep,packed,name=values,proto3" json:"values,omitempty"` + // default = ['0.0.0.0'] + Values []string `protobuf:"bytes,3,rep,name=values,proto3" json:"values,omitempty"` // Description missing in models - Increment *PatternFlowPfcPausePauseClass6Counter `protobuf:"bytes,5,opt,name=increment,proto3" json:"increment,omitempty"` + Increment *PatternFlowIpv4DstCounter `protobuf:"bytes,5,opt,name=increment,proto3" json:"increment,omitempty"` // Description missing in models - Decrement *PatternFlowPfcPausePauseClass6Counter `protobuf:"bytes,6,opt,name=decrement,proto3" json:"decrement,omitempty"` + Decrement *PatternFlowIpv4DstCounter `protobuf:"bytes,6,opt,name=decrement,proto3" json:"decrement,omitempty"` // One or more metric tags can be used to enable tracking portion of or all bits in // a corresponding header field for metrics per each applicable value. These would appear // as tagged metrics in corresponding flow metrics. - MetricTags []*PatternFlowPfcPausePauseClass6MetricTag `protobuf:"bytes,7,rep,name=metric_tags,json=metricTags,proto3" json:"metric_tags,omitempty"` + MetricTags []*PatternFlowIpv4DstMetricTag `protobuf:"bytes,7,rep,name=metric_tags,json=metricTags,proto3" json:"metric_tags,omitempty"` } -func (x *PatternFlowPfcPausePauseClass6) Reset() { - *x = PatternFlowPfcPausePauseClass6{} +func (x *PatternFlowIpv4Dst) Reset() { + *x = PatternFlowIpv4Dst{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[489] + mi := &file_otg_proto_msgTypes[452] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowPfcPausePauseClass6) String() string { +func (x *PatternFlowIpv4Dst) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowPfcPausePauseClass6) ProtoMessage() {} +func (*PatternFlowIpv4Dst) ProtoMessage() {} -func (x *PatternFlowPfcPausePauseClass6) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[489] +func (x *PatternFlowIpv4Dst) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[452] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -59603,47 +58767,47 @@ func (x *PatternFlowPfcPausePauseClass6) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use PatternFlowPfcPausePauseClass6.ProtoReflect.Descriptor instead. -func (*PatternFlowPfcPausePauseClass6) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{489} +// Deprecated: Use PatternFlowIpv4Dst.ProtoReflect.Descriptor instead. +func (*PatternFlowIpv4Dst) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{452} } -func (x *PatternFlowPfcPausePauseClass6) GetChoice() PatternFlowPfcPausePauseClass6_Choice_Enum { +func (x *PatternFlowIpv4Dst) GetChoice() PatternFlowIpv4Dst_Choice_Enum { if x != nil && x.Choice != nil { return *x.Choice } - return PatternFlowPfcPausePauseClass6_Choice_unspecified + return PatternFlowIpv4Dst_Choice_unspecified } -func (x *PatternFlowPfcPausePauseClass6) GetValue() uint32 { +func (x *PatternFlowIpv4Dst) GetValue() string { if x != nil && x.Value != nil { return *x.Value } - return 0 + return "" } -func (x *PatternFlowPfcPausePauseClass6) GetValues() []uint32 { +func (x *PatternFlowIpv4Dst) GetValues() []string { if x != nil { return x.Values } return nil } -func (x *PatternFlowPfcPausePauseClass6) GetIncrement() *PatternFlowPfcPausePauseClass6Counter { +func (x *PatternFlowIpv4Dst) GetIncrement() *PatternFlowIpv4DstCounter { if x != nil { return x.Increment } return nil } -func (x *PatternFlowPfcPausePauseClass6) GetDecrement() *PatternFlowPfcPausePauseClass6Counter { +func (x *PatternFlowIpv4Dst) GetDecrement() *PatternFlowIpv4DstCounter { if x != nil { return x.Decrement } return nil } -func (x *PatternFlowPfcPausePauseClass6) GetMetricTags() []*PatternFlowPfcPausePauseClass6MetricTag { +func (x *PatternFlowIpv4Dst) GetMetricTags() []*PatternFlowIpv4DstMetricTag { if x != nil { return x.MetricTags } @@ -59651,7 +58815,7 @@ func (x *PatternFlowPfcPausePauseClass6) GetMetricTags() []*PatternFlowPfcPauseP } // integer counter pattern -type PatternFlowPfcPausePauseClass7Counter struct { +type PatternFlowIpv4PriorityRawCounter struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields @@ -59667,23 +58831,23 @@ type PatternFlowPfcPausePauseClass7Counter struct { Count *uint32 `protobuf:"varint,3,opt,name=count,proto3,oneof" json:"count,omitempty"` } -func (x *PatternFlowPfcPausePauseClass7Counter) Reset() { - *x = PatternFlowPfcPausePauseClass7Counter{} +func (x *PatternFlowIpv4PriorityRawCounter) Reset() { + *x = PatternFlowIpv4PriorityRawCounter{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[490] + mi := &file_otg_proto_msgTypes[453] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowPfcPausePauseClass7Counter) String() string { +func (x *PatternFlowIpv4PriorityRawCounter) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowPfcPausePauseClass7Counter) ProtoMessage() {} +func (*PatternFlowIpv4PriorityRawCounter) ProtoMessage() {} -func (x *PatternFlowPfcPausePauseClass7Counter) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[490] +func (x *PatternFlowIpv4PriorityRawCounter) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[453] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -59694,26 +58858,26 @@ func (x *PatternFlowPfcPausePauseClass7Counter) ProtoReflect() protoreflect.Mess return mi.MessageOf(x) } -// Deprecated: Use PatternFlowPfcPausePauseClass7Counter.ProtoReflect.Descriptor instead. -func (*PatternFlowPfcPausePauseClass7Counter) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{490} +// Deprecated: Use PatternFlowIpv4PriorityRawCounter.ProtoReflect.Descriptor instead. +func (*PatternFlowIpv4PriorityRawCounter) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{453} } -func (x *PatternFlowPfcPausePauseClass7Counter) GetStart() uint32 { +func (x *PatternFlowIpv4PriorityRawCounter) GetStart() uint32 { if x != nil && x.Start != nil { return *x.Start } return 0 } -func (x *PatternFlowPfcPausePauseClass7Counter) GetStep() uint32 { +func (x *PatternFlowIpv4PriorityRawCounter) GetStep() uint32 { if x != nil && x.Step != nil { return *x.Step } return 0 } -func (x *PatternFlowPfcPausePauseClass7Counter) GetCount() uint32 { +func (x *PatternFlowIpv4PriorityRawCounter) GetCount() uint32 { if x != nil && x.Count != nil { return *x.Count } @@ -59723,7 +58887,7 @@ func (x *PatternFlowPfcPausePauseClass7Counter) GetCount() uint32 { // Metric tag can be used to enable tracking portion of or all bits in a corresponding // header field for metrics per each applicable value. These would appear as tagged // metrics in corresponding flow metrics. -type PatternFlowPfcPausePauseClass7MetricTag struct { +type PatternFlowIpv4PriorityRawMetricTag struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields @@ -59737,27 +58901,27 @@ type PatternFlowPfcPausePauseClass7MetricTag struct { Offset *uint32 `protobuf:"varint,2,opt,name=offset,proto3,oneof" json:"offset,omitempty"` // Number of bits to track for metrics starting from configured offset of corresponding // header field - // default = 16 + // default = 8 Length *uint32 `protobuf:"varint,3,opt,name=length,proto3,oneof" json:"length,omitempty"` } -func (x *PatternFlowPfcPausePauseClass7MetricTag) Reset() { - *x = PatternFlowPfcPausePauseClass7MetricTag{} +func (x *PatternFlowIpv4PriorityRawMetricTag) Reset() { + *x = PatternFlowIpv4PriorityRawMetricTag{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[491] + mi := &file_otg_proto_msgTypes[454] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowPfcPausePauseClass7MetricTag) String() string { +func (x *PatternFlowIpv4PriorityRawMetricTag) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowPfcPausePauseClass7MetricTag) ProtoMessage() {} +func (*PatternFlowIpv4PriorityRawMetricTag) ProtoMessage() {} -func (x *PatternFlowPfcPausePauseClass7MetricTag) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[491] +func (x *PatternFlowIpv4PriorityRawMetricTag) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[454] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -59768,41 +58932,41 @@ func (x *PatternFlowPfcPausePauseClass7MetricTag) ProtoReflect() protoreflect.Me return mi.MessageOf(x) } -// Deprecated: Use PatternFlowPfcPausePauseClass7MetricTag.ProtoReflect.Descriptor instead. -func (*PatternFlowPfcPausePauseClass7MetricTag) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{491} +// Deprecated: Use PatternFlowIpv4PriorityRawMetricTag.ProtoReflect.Descriptor instead. +func (*PatternFlowIpv4PriorityRawMetricTag) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{454} } -func (x *PatternFlowPfcPausePauseClass7MetricTag) GetName() string { +func (x *PatternFlowIpv4PriorityRawMetricTag) GetName() string { if x != nil && x.Name != nil { return *x.Name } return "" } -func (x *PatternFlowPfcPausePauseClass7MetricTag) GetOffset() uint32 { +func (x *PatternFlowIpv4PriorityRawMetricTag) GetOffset() uint32 { if x != nil && x.Offset != nil { return *x.Offset } return 0 } -func (x *PatternFlowPfcPausePauseClass7MetricTag) GetLength() uint32 { +func (x *PatternFlowIpv4PriorityRawMetricTag) GetLength() uint32 { if x != nil && x.Length != nil { return *x.Length } return 0 } -// Pause class 7 -type PatternFlowPfcPausePauseClass7 struct { +// Raw priority +type PatternFlowIpv4PriorityRaw struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // Description missing in models // default = Choice.Enum.value - Choice *PatternFlowPfcPausePauseClass7_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.PatternFlowPfcPausePauseClass7_Choice_Enum,oneof" json:"choice,omitempty"` + Choice *PatternFlowIpv4PriorityRaw_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.PatternFlowIpv4PriorityRaw_Choice_Enum,oneof" json:"choice,omitempty"` // Description missing in models // default = 0 Value *uint32 `protobuf:"varint,2,opt,name=value,proto3,oneof" json:"value,omitempty"` @@ -59810,32 +58974,32 @@ type PatternFlowPfcPausePauseClass7 struct { // default = [0] Values []uint32 `protobuf:"varint,3,rep,packed,name=values,proto3" json:"values,omitempty"` // Description missing in models - Increment *PatternFlowPfcPausePauseClass7Counter `protobuf:"bytes,5,opt,name=increment,proto3" json:"increment,omitempty"` + Increment *PatternFlowIpv4PriorityRawCounter `protobuf:"bytes,5,opt,name=increment,proto3" json:"increment,omitempty"` // Description missing in models - Decrement *PatternFlowPfcPausePauseClass7Counter `protobuf:"bytes,6,opt,name=decrement,proto3" json:"decrement,omitempty"` + Decrement *PatternFlowIpv4PriorityRawCounter `protobuf:"bytes,6,opt,name=decrement,proto3" json:"decrement,omitempty"` // One or more metric tags can be used to enable tracking portion of or all bits in // a corresponding header field for metrics per each applicable value. These would appear // as tagged metrics in corresponding flow metrics. - MetricTags []*PatternFlowPfcPausePauseClass7MetricTag `protobuf:"bytes,7,rep,name=metric_tags,json=metricTags,proto3" json:"metric_tags,omitempty"` + MetricTags []*PatternFlowIpv4PriorityRawMetricTag `protobuf:"bytes,7,rep,name=metric_tags,json=metricTags,proto3" json:"metric_tags,omitempty"` } -func (x *PatternFlowPfcPausePauseClass7) Reset() { - *x = PatternFlowPfcPausePauseClass7{} +func (x *PatternFlowIpv4PriorityRaw) Reset() { + *x = PatternFlowIpv4PriorityRaw{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[492] + mi := &file_otg_proto_msgTypes[455] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowPfcPausePauseClass7) String() string { +func (x *PatternFlowIpv4PriorityRaw) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowPfcPausePauseClass7) ProtoMessage() {} +func (*PatternFlowIpv4PriorityRaw) ProtoMessage() {} -func (x *PatternFlowPfcPausePauseClass7) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[492] +func (x *PatternFlowIpv4PriorityRaw) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[455] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -59846,87 +59010,87 @@ func (x *PatternFlowPfcPausePauseClass7) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use PatternFlowPfcPausePauseClass7.ProtoReflect.Descriptor instead. -func (*PatternFlowPfcPausePauseClass7) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{492} +// Deprecated: Use PatternFlowIpv4PriorityRaw.ProtoReflect.Descriptor instead. +func (*PatternFlowIpv4PriorityRaw) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{455} } -func (x *PatternFlowPfcPausePauseClass7) GetChoice() PatternFlowPfcPausePauseClass7_Choice_Enum { +func (x *PatternFlowIpv4PriorityRaw) GetChoice() PatternFlowIpv4PriorityRaw_Choice_Enum { if x != nil && x.Choice != nil { return *x.Choice } - return PatternFlowPfcPausePauseClass7_Choice_unspecified + return PatternFlowIpv4PriorityRaw_Choice_unspecified } -func (x *PatternFlowPfcPausePauseClass7) GetValue() uint32 { +func (x *PatternFlowIpv4PriorityRaw) GetValue() uint32 { if x != nil && x.Value != nil { return *x.Value } return 0 } -func (x *PatternFlowPfcPausePauseClass7) GetValues() []uint32 { +func (x *PatternFlowIpv4PriorityRaw) GetValues() []uint32 { if x != nil { return x.Values } return nil } -func (x *PatternFlowPfcPausePauseClass7) GetIncrement() *PatternFlowPfcPausePauseClass7Counter { +func (x *PatternFlowIpv4PriorityRaw) GetIncrement() *PatternFlowIpv4PriorityRawCounter { if x != nil { return x.Increment } return nil } -func (x *PatternFlowPfcPausePauseClass7) GetDecrement() *PatternFlowPfcPausePauseClass7Counter { +func (x *PatternFlowIpv4PriorityRaw) GetDecrement() *PatternFlowIpv4PriorityRawCounter { if x != nil { return x.Decrement } return nil } -func (x *PatternFlowPfcPausePauseClass7) GetMetricTags() []*PatternFlowPfcPausePauseClass7MetricTag { +func (x *PatternFlowIpv4PriorityRaw) GetMetricTags() []*PatternFlowIpv4PriorityRawMetricTag { if x != nil { return x.MetricTags } return nil } -// mac counter pattern -type PatternFlowEthernetPauseDstCounter struct { +// integer counter pattern +type PatternFlowIpv4DscpPhbCounter struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // Description missing in models - // default = 01:80:c2:00:00:01 - Start *string `protobuf:"bytes,1,opt,name=start,proto3,oneof" json:"start,omitempty"` + // default = 0 + Start *uint32 `protobuf:"varint,1,opt,name=start,proto3,oneof" json:"start,omitempty"` // Description missing in models - // default = 00:00:00:00:00:01 - Step *string `protobuf:"bytes,2,opt,name=step,proto3,oneof" json:"step,omitempty"` + // default = 1 + Step *uint32 `protobuf:"varint,2,opt,name=step,proto3,oneof" json:"step,omitempty"` // Description missing in models // default = 1 Count *uint32 `protobuf:"varint,3,opt,name=count,proto3,oneof" json:"count,omitempty"` } -func (x *PatternFlowEthernetPauseDstCounter) Reset() { - *x = PatternFlowEthernetPauseDstCounter{} +func (x *PatternFlowIpv4DscpPhbCounter) Reset() { + *x = PatternFlowIpv4DscpPhbCounter{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[493] + mi := &file_otg_proto_msgTypes[456] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowEthernetPauseDstCounter) String() string { +func (x *PatternFlowIpv4DscpPhbCounter) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowEthernetPauseDstCounter) ProtoMessage() {} +func (*PatternFlowIpv4DscpPhbCounter) ProtoMessage() {} -func (x *PatternFlowEthernetPauseDstCounter) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[493] +func (x *PatternFlowIpv4DscpPhbCounter) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[456] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -59937,26 +59101,26 @@ func (x *PatternFlowEthernetPauseDstCounter) ProtoReflect() protoreflect.Message return mi.MessageOf(x) } -// Deprecated: Use PatternFlowEthernetPauseDstCounter.ProtoReflect.Descriptor instead. -func (*PatternFlowEthernetPauseDstCounter) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{493} +// Deprecated: Use PatternFlowIpv4DscpPhbCounter.ProtoReflect.Descriptor instead. +func (*PatternFlowIpv4DscpPhbCounter) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{456} } -func (x *PatternFlowEthernetPauseDstCounter) GetStart() string { +func (x *PatternFlowIpv4DscpPhbCounter) GetStart() uint32 { if x != nil && x.Start != nil { return *x.Start } - return "" + return 0 } -func (x *PatternFlowEthernetPauseDstCounter) GetStep() string { +func (x *PatternFlowIpv4DscpPhbCounter) GetStep() uint32 { if x != nil && x.Step != nil { return *x.Step } - return "" + return 0 } -func (x *PatternFlowEthernetPauseDstCounter) GetCount() uint32 { +func (x *PatternFlowIpv4DscpPhbCounter) GetCount() uint32 { if x != nil && x.Count != nil { return *x.Count } @@ -59966,7 +59130,7 @@ func (x *PatternFlowEthernetPauseDstCounter) GetCount() uint32 { // Metric tag can be used to enable tracking portion of or all bits in a corresponding // header field for metrics per each applicable value. These would appear as tagged // metrics in corresponding flow metrics. -type PatternFlowEthernetPauseDstMetricTag struct { +type PatternFlowIpv4DscpPhbMetricTag struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields @@ -59980,27 +59144,27 @@ type PatternFlowEthernetPauseDstMetricTag struct { Offset *uint32 `protobuf:"varint,2,opt,name=offset,proto3,oneof" json:"offset,omitempty"` // Number of bits to track for metrics starting from configured offset of corresponding // header field - // default = 48 + // default = 6 Length *uint32 `protobuf:"varint,3,opt,name=length,proto3,oneof" json:"length,omitempty"` } -func (x *PatternFlowEthernetPauseDstMetricTag) Reset() { - *x = PatternFlowEthernetPauseDstMetricTag{} +func (x *PatternFlowIpv4DscpPhbMetricTag) Reset() { + *x = PatternFlowIpv4DscpPhbMetricTag{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[494] + mi := &file_otg_proto_msgTypes[457] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowEthernetPauseDstMetricTag) String() string { +func (x *PatternFlowIpv4DscpPhbMetricTag) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowEthernetPauseDstMetricTag) ProtoMessage() {} +func (*PatternFlowIpv4DscpPhbMetricTag) ProtoMessage() {} -func (x *PatternFlowEthernetPauseDstMetricTag) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[494] +func (x *PatternFlowIpv4DscpPhbMetricTag) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[457] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -60011,74 +59175,74 @@ func (x *PatternFlowEthernetPauseDstMetricTag) ProtoReflect() protoreflect.Messa return mi.MessageOf(x) } -// Deprecated: Use PatternFlowEthernetPauseDstMetricTag.ProtoReflect.Descriptor instead. -func (*PatternFlowEthernetPauseDstMetricTag) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{494} +// Deprecated: Use PatternFlowIpv4DscpPhbMetricTag.ProtoReflect.Descriptor instead. +func (*PatternFlowIpv4DscpPhbMetricTag) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{457} } -func (x *PatternFlowEthernetPauseDstMetricTag) GetName() string { +func (x *PatternFlowIpv4DscpPhbMetricTag) GetName() string { if x != nil && x.Name != nil { return *x.Name } return "" } -func (x *PatternFlowEthernetPauseDstMetricTag) GetOffset() uint32 { +func (x *PatternFlowIpv4DscpPhbMetricTag) GetOffset() uint32 { if x != nil && x.Offset != nil { return *x.Offset } return 0 } -func (x *PatternFlowEthernetPauseDstMetricTag) GetLength() uint32 { +func (x *PatternFlowIpv4DscpPhbMetricTag) GetLength() uint32 { if x != nil && x.Length != nil { return *x.Length } return 0 } -// Destination MAC address -type PatternFlowEthernetPauseDst struct { +// Per hop behavior +type PatternFlowIpv4DscpPhb struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // Description missing in models // default = Choice.Enum.value - Choice *PatternFlowEthernetPauseDst_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.PatternFlowEthernetPauseDst_Choice_Enum,oneof" json:"choice,omitempty"` + Choice *PatternFlowIpv4DscpPhb_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.PatternFlowIpv4DscpPhb_Choice_Enum,oneof" json:"choice,omitempty"` // Description missing in models - // default = 01:80:c2:00:00:01 - Value *string `protobuf:"bytes,2,opt,name=value,proto3,oneof" json:"value,omitempty"` + // default = 0 + Value *uint32 `protobuf:"varint,2,opt,name=value,proto3,oneof" json:"value,omitempty"` // Description missing in models - // default = ['01:80:c2:00:00:01'] - Values []string `protobuf:"bytes,3,rep,name=values,proto3" json:"values,omitempty"` + // default = [0] + Values []uint32 `protobuf:"varint,3,rep,packed,name=values,proto3" json:"values,omitempty"` // Description missing in models - Increment *PatternFlowEthernetPauseDstCounter `protobuf:"bytes,5,opt,name=increment,proto3" json:"increment,omitempty"` + Increment *PatternFlowIpv4DscpPhbCounter `protobuf:"bytes,5,opt,name=increment,proto3" json:"increment,omitempty"` // Description missing in models - Decrement *PatternFlowEthernetPauseDstCounter `protobuf:"bytes,6,opt,name=decrement,proto3" json:"decrement,omitempty"` + Decrement *PatternFlowIpv4DscpPhbCounter `protobuf:"bytes,6,opt,name=decrement,proto3" json:"decrement,omitempty"` // One or more metric tags can be used to enable tracking portion of or all bits in // a corresponding header field for metrics per each applicable value. These would appear // as tagged metrics in corresponding flow metrics. - MetricTags []*PatternFlowEthernetPauseDstMetricTag `protobuf:"bytes,7,rep,name=metric_tags,json=metricTags,proto3" json:"metric_tags,omitempty"` + MetricTags []*PatternFlowIpv4DscpPhbMetricTag `protobuf:"bytes,7,rep,name=metric_tags,json=metricTags,proto3" json:"metric_tags,omitempty"` } -func (x *PatternFlowEthernetPauseDst) Reset() { - *x = PatternFlowEthernetPauseDst{} - if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[495] +func (x *PatternFlowIpv4DscpPhb) Reset() { + *x = PatternFlowIpv4DscpPhb{} + if protoimpl.UnsafeEnabled { + mi := &file_otg_proto_msgTypes[458] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowEthernetPauseDst) String() string { +func (x *PatternFlowIpv4DscpPhb) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowEthernetPauseDst) ProtoMessage() {} +func (*PatternFlowIpv4DscpPhb) ProtoMessage() {} -func (x *PatternFlowEthernetPauseDst) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[495] +func (x *PatternFlowIpv4DscpPhb) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[458] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -60089,87 +59253,87 @@ func (x *PatternFlowEthernetPauseDst) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use PatternFlowEthernetPauseDst.ProtoReflect.Descriptor instead. -func (*PatternFlowEthernetPauseDst) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{495} +// Deprecated: Use PatternFlowIpv4DscpPhb.ProtoReflect.Descriptor instead. +func (*PatternFlowIpv4DscpPhb) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{458} } -func (x *PatternFlowEthernetPauseDst) GetChoice() PatternFlowEthernetPauseDst_Choice_Enum { +func (x *PatternFlowIpv4DscpPhb) GetChoice() PatternFlowIpv4DscpPhb_Choice_Enum { if x != nil && x.Choice != nil { return *x.Choice } - return PatternFlowEthernetPauseDst_Choice_unspecified + return PatternFlowIpv4DscpPhb_Choice_unspecified } -func (x *PatternFlowEthernetPauseDst) GetValue() string { +func (x *PatternFlowIpv4DscpPhb) GetValue() uint32 { if x != nil && x.Value != nil { return *x.Value } - return "" + return 0 } -func (x *PatternFlowEthernetPauseDst) GetValues() []string { +func (x *PatternFlowIpv4DscpPhb) GetValues() []uint32 { if x != nil { return x.Values } return nil } -func (x *PatternFlowEthernetPauseDst) GetIncrement() *PatternFlowEthernetPauseDstCounter { +func (x *PatternFlowIpv4DscpPhb) GetIncrement() *PatternFlowIpv4DscpPhbCounter { if x != nil { return x.Increment } return nil } -func (x *PatternFlowEthernetPauseDst) GetDecrement() *PatternFlowEthernetPauseDstCounter { +func (x *PatternFlowIpv4DscpPhb) GetDecrement() *PatternFlowIpv4DscpPhbCounter { if x != nil { return x.Decrement } return nil } -func (x *PatternFlowEthernetPauseDst) GetMetricTags() []*PatternFlowEthernetPauseDstMetricTag { +func (x *PatternFlowIpv4DscpPhb) GetMetricTags() []*PatternFlowIpv4DscpPhbMetricTag { if x != nil { return x.MetricTags } return nil } -// mac counter pattern -type PatternFlowEthernetPauseSrcCounter struct { +// integer counter pattern +type PatternFlowIpv4DscpEcnCounter struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // Description missing in models - // default = 00:00:00:00:00:00 - Start *string `protobuf:"bytes,1,opt,name=start,proto3,oneof" json:"start,omitempty"` + // default = 0 + Start *uint32 `protobuf:"varint,1,opt,name=start,proto3,oneof" json:"start,omitempty"` // Description missing in models - // default = 00:00:00:00:00:01 - Step *string `protobuf:"bytes,2,opt,name=step,proto3,oneof" json:"step,omitempty"` + // default = 1 + Step *uint32 `protobuf:"varint,2,opt,name=step,proto3,oneof" json:"step,omitempty"` // Description missing in models // default = 1 Count *uint32 `protobuf:"varint,3,opt,name=count,proto3,oneof" json:"count,omitempty"` } -func (x *PatternFlowEthernetPauseSrcCounter) Reset() { - *x = PatternFlowEthernetPauseSrcCounter{} +func (x *PatternFlowIpv4DscpEcnCounter) Reset() { + *x = PatternFlowIpv4DscpEcnCounter{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[496] + mi := &file_otg_proto_msgTypes[459] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowEthernetPauseSrcCounter) String() string { +func (x *PatternFlowIpv4DscpEcnCounter) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowEthernetPauseSrcCounter) ProtoMessage() {} +func (*PatternFlowIpv4DscpEcnCounter) ProtoMessage() {} -func (x *PatternFlowEthernetPauseSrcCounter) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[496] +func (x *PatternFlowIpv4DscpEcnCounter) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[459] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -60180,26 +59344,26 @@ func (x *PatternFlowEthernetPauseSrcCounter) ProtoReflect() protoreflect.Message return mi.MessageOf(x) } -// Deprecated: Use PatternFlowEthernetPauseSrcCounter.ProtoReflect.Descriptor instead. -func (*PatternFlowEthernetPauseSrcCounter) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{496} +// Deprecated: Use PatternFlowIpv4DscpEcnCounter.ProtoReflect.Descriptor instead. +func (*PatternFlowIpv4DscpEcnCounter) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{459} } -func (x *PatternFlowEthernetPauseSrcCounter) GetStart() string { +func (x *PatternFlowIpv4DscpEcnCounter) GetStart() uint32 { if x != nil && x.Start != nil { return *x.Start } - return "" + return 0 } -func (x *PatternFlowEthernetPauseSrcCounter) GetStep() string { +func (x *PatternFlowIpv4DscpEcnCounter) GetStep() uint32 { if x != nil && x.Step != nil { return *x.Step } - return "" + return 0 } -func (x *PatternFlowEthernetPauseSrcCounter) GetCount() uint32 { +func (x *PatternFlowIpv4DscpEcnCounter) GetCount() uint32 { if x != nil && x.Count != nil { return *x.Count } @@ -60209,7 +59373,7 @@ func (x *PatternFlowEthernetPauseSrcCounter) GetCount() uint32 { // Metric tag can be used to enable tracking portion of or all bits in a corresponding // header field for metrics per each applicable value. These would appear as tagged // metrics in corresponding flow metrics. -type PatternFlowEthernetPauseSrcMetricTag struct { +type PatternFlowIpv4DscpEcnMetricTag struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields @@ -60223,27 +59387,27 @@ type PatternFlowEthernetPauseSrcMetricTag struct { Offset *uint32 `protobuf:"varint,2,opt,name=offset,proto3,oneof" json:"offset,omitempty"` // Number of bits to track for metrics starting from configured offset of corresponding // header field - // default = 48 + // default = 2 Length *uint32 `protobuf:"varint,3,opt,name=length,proto3,oneof" json:"length,omitempty"` } -func (x *PatternFlowEthernetPauseSrcMetricTag) Reset() { - *x = PatternFlowEthernetPauseSrcMetricTag{} +func (x *PatternFlowIpv4DscpEcnMetricTag) Reset() { + *x = PatternFlowIpv4DscpEcnMetricTag{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[497] + mi := &file_otg_proto_msgTypes[460] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowEthernetPauseSrcMetricTag) String() string { +func (x *PatternFlowIpv4DscpEcnMetricTag) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowEthernetPauseSrcMetricTag) ProtoMessage() {} +func (*PatternFlowIpv4DscpEcnMetricTag) ProtoMessage() {} -func (x *PatternFlowEthernetPauseSrcMetricTag) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[497] +func (x *PatternFlowIpv4DscpEcnMetricTag) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[460] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -60254,74 +59418,74 @@ func (x *PatternFlowEthernetPauseSrcMetricTag) ProtoReflect() protoreflect.Messa return mi.MessageOf(x) } -// Deprecated: Use PatternFlowEthernetPauseSrcMetricTag.ProtoReflect.Descriptor instead. -func (*PatternFlowEthernetPauseSrcMetricTag) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{497} +// Deprecated: Use PatternFlowIpv4DscpEcnMetricTag.ProtoReflect.Descriptor instead. +func (*PatternFlowIpv4DscpEcnMetricTag) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{460} } -func (x *PatternFlowEthernetPauseSrcMetricTag) GetName() string { +func (x *PatternFlowIpv4DscpEcnMetricTag) GetName() string { if x != nil && x.Name != nil { return *x.Name } return "" } -func (x *PatternFlowEthernetPauseSrcMetricTag) GetOffset() uint32 { +func (x *PatternFlowIpv4DscpEcnMetricTag) GetOffset() uint32 { if x != nil && x.Offset != nil { return *x.Offset } return 0 } -func (x *PatternFlowEthernetPauseSrcMetricTag) GetLength() uint32 { +func (x *PatternFlowIpv4DscpEcnMetricTag) GetLength() uint32 { if x != nil && x.Length != nil { return *x.Length } return 0 } -// Source MAC address -type PatternFlowEthernetPauseSrc struct { +// Explicit congestion notification +type PatternFlowIpv4DscpEcn struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // Description missing in models // default = Choice.Enum.value - Choice *PatternFlowEthernetPauseSrc_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.PatternFlowEthernetPauseSrc_Choice_Enum,oneof" json:"choice,omitempty"` + Choice *PatternFlowIpv4DscpEcn_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.PatternFlowIpv4DscpEcn_Choice_Enum,oneof" json:"choice,omitempty"` // Description missing in models - // default = 00:00:00:00:00:00 - Value *string `protobuf:"bytes,2,opt,name=value,proto3,oneof" json:"value,omitempty"` + // default = 0 + Value *uint32 `protobuf:"varint,2,opt,name=value,proto3,oneof" json:"value,omitempty"` // Description missing in models - // default = ['00:00:00:00:00:00'] - Values []string `protobuf:"bytes,3,rep,name=values,proto3" json:"values,omitempty"` + // default = [0] + Values []uint32 `protobuf:"varint,3,rep,packed,name=values,proto3" json:"values,omitempty"` // Description missing in models - Increment *PatternFlowEthernetPauseSrcCounter `protobuf:"bytes,5,opt,name=increment,proto3" json:"increment,omitempty"` + Increment *PatternFlowIpv4DscpEcnCounter `protobuf:"bytes,5,opt,name=increment,proto3" json:"increment,omitempty"` // Description missing in models - Decrement *PatternFlowEthernetPauseSrcCounter `protobuf:"bytes,6,opt,name=decrement,proto3" json:"decrement,omitempty"` + Decrement *PatternFlowIpv4DscpEcnCounter `protobuf:"bytes,6,opt,name=decrement,proto3" json:"decrement,omitempty"` // One or more metric tags can be used to enable tracking portion of or all bits in // a corresponding header field for metrics per each applicable value. These would appear // as tagged metrics in corresponding flow metrics. - MetricTags []*PatternFlowEthernetPauseSrcMetricTag `protobuf:"bytes,7,rep,name=metric_tags,json=metricTags,proto3" json:"metric_tags,omitempty"` + MetricTags []*PatternFlowIpv4DscpEcnMetricTag `protobuf:"bytes,7,rep,name=metric_tags,json=metricTags,proto3" json:"metric_tags,omitempty"` } -func (x *PatternFlowEthernetPauseSrc) Reset() { - *x = PatternFlowEthernetPauseSrc{} +func (x *PatternFlowIpv4DscpEcn) Reset() { + *x = PatternFlowIpv4DscpEcn{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[498] + mi := &file_otg_proto_msgTypes[461] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowEthernetPauseSrc) String() string { +func (x *PatternFlowIpv4DscpEcn) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowEthernetPauseSrc) ProtoMessage() {} +func (*PatternFlowIpv4DscpEcn) ProtoMessage() {} -func (x *PatternFlowEthernetPauseSrc) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[498] +func (x *PatternFlowIpv4DscpEcn) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[461] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -60332,47 +59496,47 @@ func (x *PatternFlowEthernetPauseSrc) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use PatternFlowEthernetPauseSrc.ProtoReflect.Descriptor instead. -func (*PatternFlowEthernetPauseSrc) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{498} +// Deprecated: Use PatternFlowIpv4DscpEcn.ProtoReflect.Descriptor instead. +func (*PatternFlowIpv4DscpEcn) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{461} } -func (x *PatternFlowEthernetPauseSrc) GetChoice() PatternFlowEthernetPauseSrc_Choice_Enum { +func (x *PatternFlowIpv4DscpEcn) GetChoice() PatternFlowIpv4DscpEcn_Choice_Enum { if x != nil && x.Choice != nil { return *x.Choice } - return PatternFlowEthernetPauseSrc_Choice_unspecified + return PatternFlowIpv4DscpEcn_Choice_unspecified } -func (x *PatternFlowEthernetPauseSrc) GetValue() string { +func (x *PatternFlowIpv4DscpEcn) GetValue() uint32 { if x != nil && x.Value != nil { return *x.Value } - return "" + return 0 } -func (x *PatternFlowEthernetPauseSrc) GetValues() []string { +func (x *PatternFlowIpv4DscpEcn) GetValues() []uint32 { if x != nil { return x.Values } return nil } -func (x *PatternFlowEthernetPauseSrc) GetIncrement() *PatternFlowEthernetPauseSrcCounter { +func (x *PatternFlowIpv4DscpEcn) GetIncrement() *PatternFlowIpv4DscpEcnCounter { if x != nil { return x.Increment } return nil } -func (x *PatternFlowEthernetPauseSrc) GetDecrement() *PatternFlowEthernetPauseSrcCounter { +func (x *PatternFlowIpv4DscpEcn) GetDecrement() *PatternFlowIpv4DscpEcnCounter { if x != nil { return x.Decrement } return nil } -func (x *PatternFlowEthernetPauseSrc) GetMetricTags() []*PatternFlowEthernetPauseSrcMetricTag { +func (x *PatternFlowIpv4DscpEcn) GetMetricTags() []*PatternFlowIpv4DscpEcnMetricTag { if x != nil { return x.MetricTags } @@ -60380,13 +59544,13 @@ func (x *PatternFlowEthernetPauseSrc) GetMetricTags() []*PatternFlowEthernetPaus } // integer counter pattern -type PatternFlowEthernetPauseEtherTypeCounter struct { +type PatternFlowIpv4TosPrecedenceCounter struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // Description missing in models - // default = 34824 + // default = 0 Start *uint32 `protobuf:"varint,1,opt,name=start,proto3,oneof" json:"start,omitempty"` // Description missing in models // default = 1 @@ -60396,23 +59560,23 @@ type PatternFlowEthernetPauseEtherTypeCounter struct { Count *uint32 `protobuf:"varint,3,opt,name=count,proto3,oneof" json:"count,omitempty"` } -func (x *PatternFlowEthernetPauseEtherTypeCounter) Reset() { - *x = PatternFlowEthernetPauseEtherTypeCounter{} +func (x *PatternFlowIpv4TosPrecedenceCounter) Reset() { + *x = PatternFlowIpv4TosPrecedenceCounter{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[499] + mi := &file_otg_proto_msgTypes[462] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowEthernetPauseEtherTypeCounter) String() string { +func (x *PatternFlowIpv4TosPrecedenceCounter) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowEthernetPauseEtherTypeCounter) ProtoMessage() {} +func (*PatternFlowIpv4TosPrecedenceCounter) ProtoMessage() {} -func (x *PatternFlowEthernetPauseEtherTypeCounter) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[499] +func (x *PatternFlowIpv4TosPrecedenceCounter) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[462] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -60423,26 +59587,26 @@ func (x *PatternFlowEthernetPauseEtherTypeCounter) ProtoReflect() protoreflect.M return mi.MessageOf(x) } -// Deprecated: Use PatternFlowEthernetPauseEtherTypeCounter.ProtoReflect.Descriptor instead. -func (*PatternFlowEthernetPauseEtherTypeCounter) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{499} +// Deprecated: Use PatternFlowIpv4TosPrecedenceCounter.ProtoReflect.Descriptor instead. +func (*PatternFlowIpv4TosPrecedenceCounter) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{462} } -func (x *PatternFlowEthernetPauseEtherTypeCounter) GetStart() uint32 { +func (x *PatternFlowIpv4TosPrecedenceCounter) GetStart() uint32 { if x != nil && x.Start != nil { return *x.Start } return 0 } -func (x *PatternFlowEthernetPauseEtherTypeCounter) GetStep() uint32 { +func (x *PatternFlowIpv4TosPrecedenceCounter) GetStep() uint32 { if x != nil && x.Step != nil { return *x.Step } return 0 } -func (x *PatternFlowEthernetPauseEtherTypeCounter) GetCount() uint32 { +func (x *PatternFlowIpv4TosPrecedenceCounter) GetCount() uint32 { if x != nil && x.Count != nil { return *x.Count } @@ -60452,7 +59616,7 @@ func (x *PatternFlowEthernetPauseEtherTypeCounter) GetCount() uint32 { // Metric tag can be used to enable tracking portion of or all bits in a corresponding // header field for metrics per each applicable value. These would appear as tagged // metrics in corresponding flow metrics. -type PatternFlowEthernetPauseEtherTypeMetricTag struct { +type PatternFlowIpv4TosPrecedenceMetricTag struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields @@ -60466,27 +59630,27 @@ type PatternFlowEthernetPauseEtherTypeMetricTag struct { Offset *uint32 `protobuf:"varint,2,opt,name=offset,proto3,oneof" json:"offset,omitempty"` // Number of bits to track for metrics starting from configured offset of corresponding // header field - // default = 16 + // default = 3 Length *uint32 `protobuf:"varint,3,opt,name=length,proto3,oneof" json:"length,omitempty"` } -func (x *PatternFlowEthernetPauseEtherTypeMetricTag) Reset() { - *x = PatternFlowEthernetPauseEtherTypeMetricTag{} +func (x *PatternFlowIpv4TosPrecedenceMetricTag) Reset() { + *x = PatternFlowIpv4TosPrecedenceMetricTag{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[500] + mi := &file_otg_proto_msgTypes[463] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowEthernetPauseEtherTypeMetricTag) String() string { +func (x *PatternFlowIpv4TosPrecedenceMetricTag) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowEthernetPauseEtherTypeMetricTag) ProtoMessage() {} +func (*PatternFlowIpv4TosPrecedenceMetricTag) ProtoMessage() {} -func (x *PatternFlowEthernetPauseEtherTypeMetricTag) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[500] +func (x *PatternFlowIpv4TosPrecedenceMetricTag) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[463] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -60497,74 +59661,74 @@ func (x *PatternFlowEthernetPauseEtherTypeMetricTag) ProtoReflect() protoreflect return mi.MessageOf(x) } -// Deprecated: Use PatternFlowEthernetPauseEtherTypeMetricTag.ProtoReflect.Descriptor instead. -func (*PatternFlowEthernetPauseEtherTypeMetricTag) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{500} +// Deprecated: Use PatternFlowIpv4TosPrecedenceMetricTag.ProtoReflect.Descriptor instead. +func (*PatternFlowIpv4TosPrecedenceMetricTag) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{463} } -func (x *PatternFlowEthernetPauseEtherTypeMetricTag) GetName() string { +func (x *PatternFlowIpv4TosPrecedenceMetricTag) GetName() string { if x != nil && x.Name != nil { return *x.Name } return "" } -func (x *PatternFlowEthernetPauseEtherTypeMetricTag) GetOffset() uint32 { +func (x *PatternFlowIpv4TosPrecedenceMetricTag) GetOffset() uint32 { if x != nil && x.Offset != nil { return *x.Offset } return 0 } -func (x *PatternFlowEthernetPauseEtherTypeMetricTag) GetLength() uint32 { +func (x *PatternFlowIpv4TosPrecedenceMetricTag) GetLength() uint32 { if x != nil && x.Length != nil { return *x.Length } return 0 } -// Ethernet type -type PatternFlowEthernetPauseEtherType struct { +// Precedence +type PatternFlowIpv4TosPrecedence struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // Description missing in models // default = Choice.Enum.value - Choice *PatternFlowEthernetPauseEtherType_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.PatternFlowEthernetPauseEtherType_Choice_Enum,oneof" json:"choice,omitempty"` + Choice *PatternFlowIpv4TosPrecedence_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.PatternFlowIpv4TosPrecedence_Choice_Enum,oneof" json:"choice,omitempty"` // Description missing in models - // default = 34824 + // default = 0 Value *uint32 `protobuf:"varint,2,opt,name=value,proto3,oneof" json:"value,omitempty"` // Description missing in models - // default = [34824] + // default = [0] Values []uint32 `protobuf:"varint,3,rep,packed,name=values,proto3" json:"values,omitempty"` // Description missing in models - Increment *PatternFlowEthernetPauseEtherTypeCounter `protobuf:"bytes,5,opt,name=increment,proto3" json:"increment,omitempty"` + Increment *PatternFlowIpv4TosPrecedenceCounter `protobuf:"bytes,5,opt,name=increment,proto3" json:"increment,omitempty"` // Description missing in models - Decrement *PatternFlowEthernetPauseEtherTypeCounter `protobuf:"bytes,6,opt,name=decrement,proto3" json:"decrement,omitempty"` + Decrement *PatternFlowIpv4TosPrecedenceCounter `protobuf:"bytes,6,opt,name=decrement,proto3" json:"decrement,omitempty"` // One or more metric tags can be used to enable tracking portion of or all bits in // a corresponding header field for metrics per each applicable value. These would appear // as tagged metrics in corresponding flow metrics. - MetricTags []*PatternFlowEthernetPauseEtherTypeMetricTag `protobuf:"bytes,7,rep,name=metric_tags,json=metricTags,proto3" json:"metric_tags,omitempty"` + MetricTags []*PatternFlowIpv4TosPrecedenceMetricTag `protobuf:"bytes,7,rep,name=metric_tags,json=metricTags,proto3" json:"metric_tags,omitempty"` } -func (x *PatternFlowEthernetPauseEtherType) Reset() { - *x = PatternFlowEthernetPauseEtherType{} +func (x *PatternFlowIpv4TosPrecedence) Reset() { + *x = PatternFlowIpv4TosPrecedence{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[501] + mi := &file_otg_proto_msgTypes[464] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowEthernetPauseEtherType) String() string { +func (x *PatternFlowIpv4TosPrecedence) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowEthernetPauseEtherType) ProtoMessage() {} +func (*PatternFlowIpv4TosPrecedence) ProtoMessage() {} -func (x *PatternFlowEthernetPauseEtherType) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[501] +func (x *PatternFlowIpv4TosPrecedence) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[464] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -60575,47 +59739,47 @@ func (x *PatternFlowEthernetPauseEtherType) ProtoReflect() protoreflect.Message return mi.MessageOf(x) } -// Deprecated: Use PatternFlowEthernetPauseEtherType.ProtoReflect.Descriptor instead. -func (*PatternFlowEthernetPauseEtherType) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{501} +// Deprecated: Use PatternFlowIpv4TosPrecedence.ProtoReflect.Descriptor instead. +func (*PatternFlowIpv4TosPrecedence) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{464} } -func (x *PatternFlowEthernetPauseEtherType) GetChoice() PatternFlowEthernetPauseEtherType_Choice_Enum { +func (x *PatternFlowIpv4TosPrecedence) GetChoice() PatternFlowIpv4TosPrecedence_Choice_Enum { if x != nil && x.Choice != nil { return *x.Choice } - return PatternFlowEthernetPauseEtherType_Choice_unspecified + return PatternFlowIpv4TosPrecedence_Choice_unspecified } -func (x *PatternFlowEthernetPauseEtherType) GetValue() uint32 { +func (x *PatternFlowIpv4TosPrecedence) GetValue() uint32 { if x != nil && x.Value != nil { return *x.Value } return 0 } -func (x *PatternFlowEthernetPauseEtherType) GetValues() []uint32 { +func (x *PatternFlowIpv4TosPrecedence) GetValues() []uint32 { if x != nil { return x.Values } return nil } -func (x *PatternFlowEthernetPauseEtherType) GetIncrement() *PatternFlowEthernetPauseEtherTypeCounter { +func (x *PatternFlowIpv4TosPrecedence) GetIncrement() *PatternFlowIpv4TosPrecedenceCounter { if x != nil { return x.Increment } return nil } -func (x *PatternFlowEthernetPauseEtherType) GetDecrement() *PatternFlowEthernetPauseEtherTypeCounter { +func (x *PatternFlowIpv4TosPrecedence) GetDecrement() *PatternFlowIpv4TosPrecedenceCounter { if x != nil { return x.Decrement } return nil } -func (x *PatternFlowEthernetPauseEtherType) GetMetricTags() []*PatternFlowEthernetPauseEtherTypeMetricTag { +func (x *PatternFlowIpv4TosPrecedence) GetMetricTags() []*PatternFlowIpv4TosPrecedenceMetricTag { if x != nil { return x.MetricTags } @@ -60623,13 +59787,13 @@ func (x *PatternFlowEthernetPauseEtherType) GetMetricTags() []*PatternFlowEthern } // integer counter pattern -type PatternFlowEthernetPauseControlOpCodeCounter struct { +type PatternFlowIpv4TosDelayCounter struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // Description missing in models - // default = 1 + // default = 0 Start *uint32 `protobuf:"varint,1,opt,name=start,proto3,oneof" json:"start,omitempty"` // Description missing in models // default = 1 @@ -60639,23 +59803,23 @@ type PatternFlowEthernetPauseControlOpCodeCounter struct { Count *uint32 `protobuf:"varint,3,opt,name=count,proto3,oneof" json:"count,omitempty"` } -func (x *PatternFlowEthernetPauseControlOpCodeCounter) Reset() { - *x = PatternFlowEthernetPauseControlOpCodeCounter{} +func (x *PatternFlowIpv4TosDelayCounter) Reset() { + *x = PatternFlowIpv4TosDelayCounter{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[502] + mi := &file_otg_proto_msgTypes[465] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowEthernetPauseControlOpCodeCounter) String() string { +func (x *PatternFlowIpv4TosDelayCounter) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowEthernetPauseControlOpCodeCounter) ProtoMessage() {} +func (*PatternFlowIpv4TosDelayCounter) ProtoMessage() {} -func (x *PatternFlowEthernetPauseControlOpCodeCounter) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[502] +func (x *PatternFlowIpv4TosDelayCounter) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[465] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -60666,26 +59830,26 @@ func (x *PatternFlowEthernetPauseControlOpCodeCounter) ProtoReflect() protorefle return mi.MessageOf(x) } -// Deprecated: Use PatternFlowEthernetPauseControlOpCodeCounter.ProtoReflect.Descriptor instead. -func (*PatternFlowEthernetPauseControlOpCodeCounter) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{502} +// Deprecated: Use PatternFlowIpv4TosDelayCounter.ProtoReflect.Descriptor instead. +func (*PatternFlowIpv4TosDelayCounter) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{465} } -func (x *PatternFlowEthernetPauseControlOpCodeCounter) GetStart() uint32 { +func (x *PatternFlowIpv4TosDelayCounter) GetStart() uint32 { if x != nil && x.Start != nil { return *x.Start } return 0 } -func (x *PatternFlowEthernetPauseControlOpCodeCounter) GetStep() uint32 { +func (x *PatternFlowIpv4TosDelayCounter) GetStep() uint32 { if x != nil && x.Step != nil { return *x.Step } return 0 } -func (x *PatternFlowEthernetPauseControlOpCodeCounter) GetCount() uint32 { +func (x *PatternFlowIpv4TosDelayCounter) GetCount() uint32 { if x != nil && x.Count != nil { return *x.Count } @@ -60695,7 +59859,7 @@ func (x *PatternFlowEthernetPauseControlOpCodeCounter) GetCount() uint32 { // Metric tag can be used to enable tracking portion of or all bits in a corresponding // header field for metrics per each applicable value. These would appear as tagged // metrics in corresponding flow metrics. -type PatternFlowEthernetPauseControlOpCodeMetricTag struct { +type PatternFlowIpv4TosDelayMetricTag struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields @@ -60709,27 +59873,27 @@ type PatternFlowEthernetPauseControlOpCodeMetricTag struct { Offset *uint32 `protobuf:"varint,2,opt,name=offset,proto3,oneof" json:"offset,omitempty"` // Number of bits to track for metrics starting from configured offset of corresponding // header field - // default = 16 + // default = 1 Length *uint32 `protobuf:"varint,3,opt,name=length,proto3,oneof" json:"length,omitempty"` } -func (x *PatternFlowEthernetPauseControlOpCodeMetricTag) Reset() { - *x = PatternFlowEthernetPauseControlOpCodeMetricTag{} +func (x *PatternFlowIpv4TosDelayMetricTag) Reset() { + *x = PatternFlowIpv4TosDelayMetricTag{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[503] + mi := &file_otg_proto_msgTypes[466] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowEthernetPauseControlOpCodeMetricTag) String() string { +func (x *PatternFlowIpv4TosDelayMetricTag) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowEthernetPauseControlOpCodeMetricTag) ProtoMessage() {} +func (*PatternFlowIpv4TosDelayMetricTag) ProtoMessage() {} -func (x *PatternFlowEthernetPauseControlOpCodeMetricTag) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[503] +func (x *PatternFlowIpv4TosDelayMetricTag) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[466] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -60740,74 +59904,74 @@ func (x *PatternFlowEthernetPauseControlOpCodeMetricTag) ProtoReflect() protoref return mi.MessageOf(x) } -// Deprecated: Use PatternFlowEthernetPauseControlOpCodeMetricTag.ProtoReflect.Descriptor instead. -func (*PatternFlowEthernetPauseControlOpCodeMetricTag) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{503} +// Deprecated: Use PatternFlowIpv4TosDelayMetricTag.ProtoReflect.Descriptor instead. +func (*PatternFlowIpv4TosDelayMetricTag) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{466} } -func (x *PatternFlowEthernetPauseControlOpCodeMetricTag) GetName() string { +func (x *PatternFlowIpv4TosDelayMetricTag) GetName() string { if x != nil && x.Name != nil { return *x.Name } return "" } -func (x *PatternFlowEthernetPauseControlOpCodeMetricTag) GetOffset() uint32 { +func (x *PatternFlowIpv4TosDelayMetricTag) GetOffset() uint32 { if x != nil && x.Offset != nil { return *x.Offset } return 0 } -func (x *PatternFlowEthernetPauseControlOpCodeMetricTag) GetLength() uint32 { +func (x *PatternFlowIpv4TosDelayMetricTag) GetLength() uint32 { if x != nil && x.Length != nil { return *x.Length } return 0 } -// Control operation code -type PatternFlowEthernetPauseControlOpCode struct { +// Delay +type PatternFlowIpv4TosDelay struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // Description missing in models // default = Choice.Enum.value - Choice *PatternFlowEthernetPauseControlOpCode_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.PatternFlowEthernetPauseControlOpCode_Choice_Enum,oneof" json:"choice,omitempty"` + Choice *PatternFlowIpv4TosDelay_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.PatternFlowIpv4TosDelay_Choice_Enum,oneof" json:"choice,omitempty"` // Description missing in models - // default = 1 + // default = 0 Value *uint32 `protobuf:"varint,2,opt,name=value,proto3,oneof" json:"value,omitempty"` // Description missing in models - // default = [1] + // default = [0] Values []uint32 `protobuf:"varint,3,rep,packed,name=values,proto3" json:"values,omitempty"` // Description missing in models - Increment *PatternFlowEthernetPauseControlOpCodeCounter `protobuf:"bytes,5,opt,name=increment,proto3" json:"increment,omitempty"` + Increment *PatternFlowIpv4TosDelayCounter `protobuf:"bytes,5,opt,name=increment,proto3" json:"increment,omitempty"` // Description missing in models - Decrement *PatternFlowEthernetPauseControlOpCodeCounter `protobuf:"bytes,6,opt,name=decrement,proto3" json:"decrement,omitempty"` + Decrement *PatternFlowIpv4TosDelayCounter `protobuf:"bytes,6,opt,name=decrement,proto3" json:"decrement,omitempty"` // One or more metric tags can be used to enable tracking portion of or all bits in // a corresponding header field for metrics per each applicable value. These would appear // as tagged metrics in corresponding flow metrics. - MetricTags []*PatternFlowEthernetPauseControlOpCodeMetricTag `protobuf:"bytes,7,rep,name=metric_tags,json=metricTags,proto3" json:"metric_tags,omitempty"` + MetricTags []*PatternFlowIpv4TosDelayMetricTag `protobuf:"bytes,7,rep,name=metric_tags,json=metricTags,proto3" json:"metric_tags,omitempty"` } -func (x *PatternFlowEthernetPauseControlOpCode) Reset() { - *x = PatternFlowEthernetPauseControlOpCode{} +func (x *PatternFlowIpv4TosDelay) Reset() { + *x = PatternFlowIpv4TosDelay{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[504] + mi := &file_otg_proto_msgTypes[467] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowEthernetPauseControlOpCode) String() string { +func (x *PatternFlowIpv4TosDelay) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowEthernetPauseControlOpCode) ProtoMessage() {} +func (*PatternFlowIpv4TosDelay) ProtoMessage() {} -func (x *PatternFlowEthernetPauseControlOpCode) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[504] +func (x *PatternFlowIpv4TosDelay) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[467] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -60818,47 +59982,47 @@ func (x *PatternFlowEthernetPauseControlOpCode) ProtoReflect() protoreflect.Mess return mi.MessageOf(x) } -// Deprecated: Use PatternFlowEthernetPauseControlOpCode.ProtoReflect.Descriptor instead. -func (*PatternFlowEthernetPauseControlOpCode) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{504} +// Deprecated: Use PatternFlowIpv4TosDelay.ProtoReflect.Descriptor instead. +func (*PatternFlowIpv4TosDelay) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{467} } -func (x *PatternFlowEthernetPauseControlOpCode) GetChoice() PatternFlowEthernetPauseControlOpCode_Choice_Enum { +func (x *PatternFlowIpv4TosDelay) GetChoice() PatternFlowIpv4TosDelay_Choice_Enum { if x != nil && x.Choice != nil { return *x.Choice } - return PatternFlowEthernetPauseControlOpCode_Choice_unspecified + return PatternFlowIpv4TosDelay_Choice_unspecified } -func (x *PatternFlowEthernetPauseControlOpCode) GetValue() uint32 { +func (x *PatternFlowIpv4TosDelay) GetValue() uint32 { if x != nil && x.Value != nil { return *x.Value } return 0 } -func (x *PatternFlowEthernetPauseControlOpCode) GetValues() []uint32 { +func (x *PatternFlowIpv4TosDelay) GetValues() []uint32 { if x != nil { return x.Values } return nil } -func (x *PatternFlowEthernetPauseControlOpCode) GetIncrement() *PatternFlowEthernetPauseControlOpCodeCounter { +func (x *PatternFlowIpv4TosDelay) GetIncrement() *PatternFlowIpv4TosDelayCounter { if x != nil { return x.Increment } return nil } -func (x *PatternFlowEthernetPauseControlOpCode) GetDecrement() *PatternFlowEthernetPauseControlOpCodeCounter { +func (x *PatternFlowIpv4TosDelay) GetDecrement() *PatternFlowIpv4TosDelayCounter { if x != nil { return x.Decrement } return nil } -func (x *PatternFlowEthernetPauseControlOpCode) GetMetricTags() []*PatternFlowEthernetPauseControlOpCodeMetricTag { +func (x *PatternFlowIpv4TosDelay) GetMetricTags() []*PatternFlowIpv4TosDelayMetricTag { if x != nil { return x.MetricTags } @@ -60866,7 +60030,7 @@ func (x *PatternFlowEthernetPauseControlOpCode) GetMetricTags() []*PatternFlowEt } // integer counter pattern -type PatternFlowEthernetPauseTimeCounter struct { +type PatternFlowIpv4TosThroughputCounter struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields @@ -60882,23 +60046,23 @@ type PatternFlowEthernetPauseTimeCounter struct { Count *uint32 `protobuf:"varint,3,opt,name=count,proto3,oneof" json:"count,omitempty"` } -func (x *PatternFlowEthernetPauseTimeCounter) Reset() { - *x = PatternFlowEthernetPauseTimeCounter{} +func (x *PatternFlowIpv4TosThroughputCounter) Reset() { + *x = PatternFlowIpv4TosThroughputCounter{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[505] + mi := &file_otg_proto_msgTypes[468] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowEthernetPauseTimeCounter) String() string { +func (x *PatternFlowIpv4TosThroughputCounter) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowEthernetPauseTimeCounter) ProtoMessage() {} +func (*PatternFlowIpv4TosThroughputCounter) ProtoMessage() {} -func (x *PatternFlowEthernetPauseTimeCounter) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[505] +func (x *PatternFlowIpv4TosThroughputCounter) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[468] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -60909,26 +60073,26 @@ func (x *PatternFlowEthernetPauseTimeCounter) ProtoReflect() protoreflect.Messag return mi.MessageOf(x) } -// Deprecated: Use PatternFlowEthernetPauseTimeCounter.ProtoReflect.Descriptor instead. -func (*PatternFlowEthernetPauseTimeCounter) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{505} +// Deprecated: Use PatternFlowIpv4TosThroughputCounter.ProtoReflect.Descriptor instead. +func (*PatternFlowIpv4TosThroughputCounter) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{468} } -func (x *PatternFlowEthernetPauseTimeCounter) GetStart() uint32 { +func (x *PatternFlowIpv4TosThroughputCounter) GetStart() uint32 { if x != nil && x.Start != nil { return *x.Start } return 0 } -func (x *PatternFlowEthernetPauseTimeCounter) GetStep() uint32 { +func (x *PatternFlowIpv4TosThroughputCounter) GetStep() uint32 { if x != nil && x.Step != nil { return *x.Step } return 0 } -func (x *PatternFlowEthernetPauseTimeCounter) GetCount() uint32 { +func (x *PatternFlowIpv4TosThroughputCounter) GetCount() uint32 { if x != nil && x.Count != nil { return *x.Count } @@ -60938,7 +60102,7 @@ func (x *PatternFlowEthernetPauseTimeCounter) GetCount() uint32 { // Metric tag can be used to enable tracking portion of or all bits in a corresponding // header field for metrics per each applicable value. These would appear as tagged // metrics in corresponding flow metrics. -type PatternFlowEthernetPauseTimeMetricTag struct { +type PatternFlowIpv4TosThroughputMetricTag struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields @@ -60952,27 +60116,27 @@ type PatternFlowEthernetPauseTimeMetricTag struct { Offset *uint32 `protobuf:"varint,2,opt,name=offset,proto3,oneof" json:"offset,omitempty"` // Number of bits to track for metrics starting from configured offset of corresponding // header field - // default = 16 + // default = 1 Length *uint32 `protobuf:"varint,3,opt,name=length,proto3,oneof" json:"length,omitempty"` } -func (x *PatternFlowEthernetPauseTimeMetricTag) Reset() { - *x = PatternFlowEthernetPauseTimeMetricTag{} +func (x *PatternFlowIpv4TosThroughputMetricTag) Reset() { + *x = PatternFlowIpv4TosThroughputMetricTag{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[506] + mi := &file_otg_proto_msgTypes[469] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowEthernetPauseTimeMetricTag) String() string { +func (x *PatternFlowIpv4TosThroughputMetricTag) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowEthernetPauseTimeMetricTag) ProtoMessage() {} +func (*PatternFlowIpv4TosThroughputMetricTag) ProtoMessage() {} -func (x *PatternFlowEthernetPauseTimeMetricTag) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[506] +func (x *PatternFlowIpv4TosThroughputMetricTag) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[469] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -60983,41 +60147,41 @@ func (x *PatternFlowEthernetPauseTimeMetricTag) ProtoReflect() protoreflect.Mess return mi.MessageOf(x) } -// Deprecated: Use PatternFlowEthernetPauseTimeMetricTag.ProtoReflect.Descriptor instead. -func (*PatternFlowEthernetPauseTimeMetricTag) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{506} +// Deprecated: Use PatternFlowIpv4TosThroughputMetricTag.ProtoReflect.Descriptor instead. +func (*PatternFlowIpv4TosThroughputMetricTag) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{469} } -func (x *PatternFlowEthernetPauseTimeMetricTag) GetName() string { +func (x *PatternFlowIpv4TosThroughputMetricTag) GetName() string { if x != nil && x.Name != nil { return *x.Name } return "" } -func (x *PatternFlowEthernetPauseTimeMetricTag) GetOffset() uint32 { +func (x *PatternFlowIpv4TosThroughputMetricTag) GetOffset() uint32 { if x != nil && x.Offset != nil { return *x.Offset } return 0 } -func (x *PatternFlowEthernetPauseTimeMetricTag) GetLength() uint32 { +func (x *PatternFlowIpv4TosThroughputMetricTag) GetLength() uint32 { if x != nil && x.Length != nil { return *x.Length } return 0 } -// Time -type PatternFlowEthernetPauseTime struct { +// Throughput +type PatternFlowIpv4TosThroughput struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // Description missing in models // default = Choice.Enum.value - Choice *PatternFlowEthernetPauseTime_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.PatternFlowEthernetPauseTime_Choice_Enum,oneof" json:"choice,omitempty"` + Choice *PatternFlowIpv4TosThroughput_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.PatternFlowIpv4TosThroughput_Choice_Enum,oneof" json:"choice,omitempty"` // Description missing in models // default = 0 Value *uint32 `protobuf:"varint,2,opt,name=value,proto3,oneof" json:"value,omitempty"` @@ -61025,32 +60189,32 @@ type PatternFlowEthernetPauseTime struct { // default = [0] Values []uint32 `protobuf:"varint,3,rep,packed,name=values,proto3" json:"values,omitempty"` // Description missing in models - Increment *PatternFlowEthernetPauseTimeCounter `protobuf:"bytes,5,opt,name=increment,proto3" json:"increment,omitempty"` + Increment *PatternFlowIpv4TosThroughputCounter `protobuf:"bytes,5,opt,name=increment,proto3" json:"increment,omitempty"` // Description missing in models - Decrement *PatternFlowEthernetPauseTimeCounter `protobuf:"bytes,6,opt,name=decrement,proto3" json:"decrement,omitempty"` + Decrement *PatternFlowIpv4TosThroughputCounter `protobuf:"bytes,6,opt,name=decrement,proto3" json:"decrement,omitempty"` // One or more metric tags can be used to enable tracking portion of or all bits in // a corresponding header field for metrics per each applicable value. These would appear // as tagged metrics in corresponding flow metrics. - MetricTags []*PatternFlowEthernetPauseTimeMetricTag `protobuf:"bytes,7,rep,name=metric_tags,json=metricTags,proto3" json:"metric_tags,omitempty"` + MetricTags []*PatternFlowIpv4TosThroughputMetricTag `protobuf:"bytes,7,rep,name=metric_tags,json=metricTags,proto3" json:"metric_tags,omitempty"` } -func (x *PatternFlowEthernetPauseTime) Reset() { - *x = PatternFlowEthernetPauseTime{} +func (x *PatternFlowIpv4TosThroughput) Reset() { + *x = PatternFlowIpv4TosThroughput{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[507] + mi := &file_otg_proto_msgTypes[470] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowEthernetPauseTime) String() string { +func (x *PatternFlowIpv4TosThroughput) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowEthernetPauseTime) ProtoMessage() {} +func (*PatternFlowIpv4TosThroughput) ProtoMessage() {} -func (x *PatternFlowEthernetPauseTime) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[507] +func (x *PatternFlowIpv4TosThroughput) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[470] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -61061,47 +60225,47 @@ func (x *PatternFlowEthernetPauseTime) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use PatternFlowEthernetPauseTime.ProtoReflect.Descriptor instead. -func (*PatternFlowEthernetPauseTime) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{507} +// Deprecated: Use PatternFlowIpv4TosThroughput.ProtoReflect.Descriptor instead. +func (*PatternFlowIpv4TosThroughput) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{470} } -func (x *PatternFlowEthernetPauseTime) GetChoice() PatternFlowEthernetPauseTime_Choice_Enum { +func (x *PatternFlowIpv4TosThroughput) GetChoice() PatternFlowIpv4TosThroughput_Choice_Enum { if x != nil && x.Choice != nil { return *x.Choice } - return PatternFlowEthernetPauseTime_Choice_unspecified + return PatternFlowIpv4TosThroughput_Choice_unspecified } -func (x *PatternFlowEthernetPauseTime) GetValue() uint32 { +func (x *PatternFlowIpv4TosThroughput) GetValue() uint32 { if x != nil && x.Value != nil { return *x.Value } return 0 } -func (x *PatternFlowEthernetPauseTime) GetValues() []uint32 { +func (x *PatternFlowIpv4TosThroughput) GetValues() []uint32 { if x != nil { return x.Values } return nil } -func (x *PatternFlowEthernetPauseTime) GetIncrement() *PatternFlowEthernetPauseTimeCounter { +func (x *PatternFlowIpv4TosThroughput) GetIncrement() *PatternFlowIpv4TosThroughputCounter { if x != nil { return x.Increment } return nil } -func (x *PatternFlowEthernetPauseTime) GetDecrement() *PatternFlowEthernetPauseTimeCounter { +func (x *PatternFlowIpv4TosThroughput) GetDecrement() *PatternFlowIpv4TosThroughputCounter { if x != nil { return x.Decrement } return nil } -func (x *PatternFlowEthernetPauseTime) GetMetricTags() []*PatternFlowEthernetPauseTimeMetricTag { +func (x *PatternFlowIpv4TosThroughput) GetMetricTags() []*PatternFlowIpv4TosThroughputMetricTag { if x != nil { return x.MetricTags } @@ -61109,7 +60273,7 @@ func (x *PatternFlowEthernetPauseTime) GetMetricTags() []*PatternFlowEthernetPau } // integer counter pattern -type PatternFlowTcpSrcPortCounter struct { +type PatternFlowIpv4TosReliabilityCounter struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields @@ -61125,23 +60289,23 @@ type PatternFlowTcpSrcPortCounter struct { Count *uint32 `protobuf:"varint,3,opt,name=count,proto3,oneof" json:"count,omitempty"` } -func (x *PatternFlowTcpSrcPortCounter) Reset() { - *x = PatternFlowTcpSrcPortCounter{} +func (x *PatternFlowIpv4TosReliabilityCounter) Reset() { + *x = PatternFlowIpv4TosReliabilityCounter{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[508] + mi := &file_otg_proto_msgTypes[471] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowTcpSrcPortCounter) String() string { +func (x *PatternFlowIpv4TosReliabilityCounter) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowTcpSrcPortCounter) ProtoMessage() {} +func (*PatternFlowIpv4TosReliabilityCounter) ProtoMessage() {} -func (x *PatternFlowTcpSrcPortCounter) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[508] +func (x *PatternFlowIpv4TosReliabilityCounter) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[471] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -61152,26 +60316,26 @@ func (x *PatternFlowTcpSrcPortCounter) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use PatternFlowTcpSrcPortCounter.ProtoReflect.Descriptor instead. -func (*PatternFlowTcpSrcPortCounter) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{508} +// Deprecated: Use PatternFlowIpv4TosReliabilityCounter.ProtoReflect.Descriptor instead. +func (*PatternFlowIpv4TosReliabilityCounter) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{471} } -func (x *PatternFlowTcpSrcPortCounter) GetStart() uint32 { +func (x *PatternFlowIpv4TosReliabilityCounter) GetStart() uint32 { if x != nil && x.Start != nil { return *x.Start } return 0 } -func (x *PatternFlowTcpSrcPortCounter) GetStep() uint32 { +func (x *PatternFlowIpv4TosReliabilityCounter) GetStep() uint32 { if x != nil && x.Step != nil { return *x.Step } return 0 } -func (x *PatternFlowTcpSrcPortCounter) GetCount() uint32 { +func (x *PatternFlowIpv4TosReliabilityCounter) GetCount() uint32 { if x != nil && x.Count != nil { return *x.Count } @@ -61181,7 +60345,7 @@ func (x *PatternFlowTcpSrcPortCounter) GetCount() uint32 { // Metric tag can be used to enable tracking portion of or all bits in a corresponding // header field for metrics per each applicable value. These would appear as tagged // metrics in corresponding flow metrics. -type PatternFlowTcpSrcPortMetricTag struct { +type PatternFlowIpv4TosReliabilityMetricTag struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields @@ -61195,27 +60359,27 @@ type PatternFlowTcpSrcPortMetricTag struct { Offset *uint32 `protobuf:"varint,2,opt,name=offset,proto3,oneof" json:"offset,omitempty"` // Number of bits to track for metrics starting from configured offset of corresponding // header field - // default = 16 + // default = 1 Length *uint32 `protobuf:"varint,3,opt,name=length,proto3,oneof" json:"length,omitempty"` } -func (x *PatternFlowTcpSrcPortMetricTag) Reset() { - *x = PatternFlowTcpSrcPortMetricTag{} +func (x *PatternFlowIpv4TosReliabilityMetricTag) Reset() { + *x = PatternFlowIpv4TosReliabilityMetricTag{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[509] + mi := &file_otg_proto_msgTypes[472] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowTcpSrcPortMetricTag) String() string { +func (x *PatternFlowIpv4TosReliabilityMetricTag) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowTcpSrcPortMetricTag) ProtoMessage() {} +func (*PatternFlowIpv4TosReliabilityMetricTag) ProtoMessage() {} -func (x *PatternFlowTcpSrcPortMetricTag) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[509] +func (x *PatternFlowIpv4TosReliabilityMetricTag) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[472] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -61226,41 +60390,41 @@ func (x *PatternFlowTcpSrcPortMetricTag) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use PatternFlowTcpSrcPortMetricTag.ProtoReflect.Descriptor instead. -func (*PatternFlowTcpSrcPortMetricTag) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{509} +// Deprecated: Use PatternFlowIpv4TosReliabilityMetricTag.ProtoReflect.Descriptor instead. +func (*PatternFlowIpv4TosReliabilityMetricTag) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{472} } -func (x *PatternFlowTcpSrcPortMetricTag) GetName() string { +func (x *PatternFlowIpv4TosReliabilityMetricTag) GetName() string { if x != nil && x.Name != nil { return *x.Name } return "" } -func (x *PatternFlowTcpSrcPortMetricTag) GetOffset() uint32 { +func (x *PatternFlowIpv4TosReliabilityMetricTag) GetOffset() uint32 { if x != nil && x.Offset != nil { return *x.Offset } return 0 } -func (x *PatternFlowTcpSrcPortMetricTag) GetLength() uint32 { +func (x *PatternFlowIpv4TosReliabilityMetricTag) GetLength() uint32 { if x != nil && x.Length != nil { return *x.Length } return 0 } -// Source port -type PatternFlowTcpSrcPort struct { +// Reliability +type PatternFlowIpv4TosReliability struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // Description missing in models // default = Choice.Enum.value - Choice *PatternFlowTcpSrcPort_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.PatternFlowTcpSrcPort_Choice_Enum,oneof" json:"choice,omitempty"` + Choice *PatternFlowIpv4TosReliability_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.PatternFlowIpv4TosReliability_Choice_Enum,oneof" json:"choice,omitempty"` // Description missing in models // default = 0 Value *uint32 `protobuf:"varint,2,opt,name=value,proto3,oneof" json:"value,omitempty"` @@ -61268,32 +60432,32 @@ type PatternFlowTcpSrcPort struct { // default = [0] Values []uint32 `protobuf:"varint,3,rep,packed,name=values,proto3" json:"values,omitempty"` // Description missing in models - Increment *PatternFlowTcpSrcPortCounter `protobuf:"bytes,5,opt,name=increment,proto3" json:"increment,omitempty"` + Increment *PatternFlowIpv4TosReliabilityCounter `protobuf:"bytes,5,opt,name=increment,proto3" json:"increment,omitempty"` // Description missing in models - Decrement *PatternFlowTcpSrcPortCounter `protobuf:"bytes,6,opt,name=decrement,proto3" json:"decrement,omitempty"` + Decrement *PatternFlowIpv4TosReliabilityCounter `protobuf:"bytes,6,opt,name=decrement,proto3" json:"decrement,omitempty"` // One or more metric tags can be used to enable tracking portion of or all bits in // a corresponding header field for metrics per each applicable value. These would appear // as tagged metrics in corresponding flow metrics. - MetricTags []*PatternFlowTcpSrcPortMetricTag `protobuf:"bytes,7,rep,name=metric_tags,json=metricTags,proto3" json:"metric_tags,omitempty"` + MetricTags []*PatternFlowIpv4TosReliabilityMetricTag `protobuf:"bytes,7,rep,name=metric_tags,json=metricTags,proto3" json:"metric_tags,omitempty"` } -func (x *PatternFlowTcpSrcPort) Reset() { - *x = PatternFlowTcpSrcPort{} +func (x *PatternFlowIpv4TosReliability) Reset() { + *x = PatternFlowIpv4TosReliability{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[510] + mi := &file_otg_proto_msgTypes[473] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowTcpSrcPort) String() string { +func (x *PatternFlowIpv4TosReliability) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowTcpSrcPort) ProtoMessage() {} +func (*PatternFlowIpv4TosReliability) ProtoMessage() {} -func (x *PatternFlowTcpSrcPort) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[510] +func (x *PatternFlowIpv4TosReliability) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[473] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -61304,47 +60468,47 @@ func (x *PatternFlowTcpSrcPort) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use PatternFlowTcpSrcPort.ProtoReflect.Descriptor instead. -func (*PatternFlowTcpSrcPort) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{510} +// Deprecated: Use PatternFlowIpv4TosReliability.ProtoReflect.Descriptor instead. +func (*PatternFlowIpv4TosReliability) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{473} } -func (x *PatternFlowTcpSrcPort) GetChoice() PatternFlowTcpSrcPort_Choice_Enum { +func (x *PatternFlowIpv4TosReliability) GetChoice() PatternFlowIpv4TosReliability_Choice_Enum { if x != nil && x.Choice != nil { return *x.Choice } - return PatternFlowTcpSrcPort_Choice_unspecified + return PatternFlowIpv4TosReliability_Choice_unspecified } -func (x *PatternFlowTcpSrcPort) GetValue() uint32 { +func (x *PatternFlowIpv4TosReliability) GetValue() uint32 { if x != nil && x.Value != nil { return *x.Value } return 0 } -func (x *PatternFlowTcpSrcPort) GetValues() []uint32 { +func (x *PatternFlowIpv4TosReliability) GetValues() []uint32 { if x != nil { return x.Values } return nil } -func (x *PatternFlowTcpSrcPort) GetIncrement() *PatternFlowTcpSrcPortCounter { +func (x *PatternFlowIpv4TosReliability) GetIncrement() *PatternFlowIpv4TosReliabilityCounter { if x != nil { return x.Increment } return nil } -func (x *PatternFlowTcpSrcPort) GetDecrement() *PatternFlowTcpSrcPortCounter { +func (x *PatternFlowIpv4TosReliability) GetDecrement() *PatternFlowIpv4TosReliabilityCounter { if x != nil { return x.Decrement } return nil } -func (x *PatternFlowTcpSrcPort) GetMetricTags() []*PatternFlowTcpSrcPortMetricTag { +func (x *PatternFlowIpv4TosReliability) GetMetricTags() []*PatternFlowIpv4TosReliabilityMetricTag { if x != nil { return x.MetricTags } @@ -61352,7 +60516,7 @@ func (x *PatternFlowTcpSrcPort) GetMetricTags() []*PatternFlowTcpSrcPortMetricTa } // integer counter pattern -type PatternFlowTcpDstPortCounter struct { +type PatternFlowIpv4TosMonetaryCounter struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields @@ -61368,23 +60532,23 @@ type PatternFlowTcpDstPortCounter struct { Count *uint32 `protobuf:"varint,3,opt,name=count,proto3,oneof" json:"count,omitempty"` } -func (x *PatternFlowTcpDstPortCounter) Reset() { - *x = PatternFlowTcpDstPortCounter{} +func (x *PatternFlowIpv4TosMonetaryCounter) Reset() { + *x = PatternFlowIpv4TosMonetaryCounter{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[511] + mi := &file_otg_proto_msgTypes[474] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowTcpDstPortCounter) String() string { +func (x *PatternFlowIpv4TosMonetaryCounter) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowTcpDstPortCounter) ProtoMessage() {} +func (*PatternFlowIpv4TosMonetaryCounter) ProtoMessage() {} -func (x *PatternFlowTcpDstPortCounter) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[511] +func (x *PatternFlowIpv4TosMonetaryCounter) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[474] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -61395,26 +60559,26 @@ func (x *PatternFlowTcpDstPortCounter) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use PatternFlowTcpDstPortCounter.ProtoReflect.Descriptor instead. -func (*PatternFlowTcpDstPortCounter) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{511} +// Deprecated: Use PatternFlowIpv4TosMonetaryCounter.ProtoReflect.Descriptor instead. +func (*PatternFlowIpv4TosMonetaryCounter) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{474} } -func (x *PatternFlowTcpDstPortCounter) GetStart() uint32 { +func (x *PatternFlowIpv4TosMonetaryCounter) GetStart() uint32 { if x != nil && x.Start != nil { return *x.Start } return 0 } -func (x *PatternFlowTcpDstPortCounter) GetStep() uint32 { +func (x *PatternFlowIpv4TosMonetaryCounter) GetStep() uint32 { if x != nil && x.Step != nil { return *x.Step } return 0 } -func (x *PatternFlowTcpDstPortCounter) GetCount() uint32 { +func (x *PatternFlowIpv4TosMonetaryCounter) GetCount() uint32 { if x != nil && x.Count != nil { return *x.Count } @@ -61424,7 +60588,7 @@ func (x *PatternFlowTcpDstPortCounter) GetCount() uint32 { // Metric tag can be used to enable tracking portion of or all bits in a corresponding // header field for metrics per each applicable value. These would appear as tagged // metrics in corresponding flow metrics. -type PatternFlowTcpDstPortMetricTag struct { +type PatternFlowIpv4TosMonetaryMetricTag struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields @@ -61438,27 +60602,27 @@ type PatternFlowTcpDstPortMetricTag struct { Offset *uint32 `protobuf:"varint,2,opt,name=offset,proto3,oneof" json:"offset,omitempty"` // Number of bits to track for metrics starting from configured offset of corresponding // header field - // default = 16 + // default = 1 Length *uint32 `protobuf:"varint,3,opt,name=length,proto3,oneof" json:"length,omitempty"` } -func (x *PatternFlowTcpDstPortMetricTag) Reset() { - *x = PatternFlowTcpDstPortMetricTag{} +func (x *PatternFlowIpv4TosMonetaryMetricTag) Reset() { + *x = PatternFlowIpv4TosMonetaryMetricTag{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[512] + mi := &file_otg_proto_msgTypes[475] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowTcpDstPortMetricTag) String() string { +func (x *PatternFlowIpv4TosMonetaryMetricTag) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowTcpDstPortMetricTag) ProtoMessage() {} +func (*PatternFlowIpv4TosMonetaryMetricTag) ProtoMessage() {} -func (x *PatternFlowTcpDstPortMetricTag) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[512] +func (x *PatternFlowIpv4TosMonetaryMetricTag) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[475] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -61469,41 +60633,41 @@ func (x *PatternFlowTcpDstPortMetricTag) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use PatternFlowTcpDstPortMetricTag.ProtoReflect.Descriptor instead. -func (*PatternFlowTcpDstPortMetricTag) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{512} +// Deprecated: Use PatternFlowIpv4TosMonetaryMetricTag.ProtoReflect.Descriptor instead. +func (*PatternFlowIpv4TosMonetaryMetricTag) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{475} } -func (x *PatternFlowTcpDstPortMetricTag) GetName() string { +func (x *PatternFlowIpv4TosMonetaryMetricTag) GetName() string { if x != nil && x.Name != nil { return *x.Name } return "" } -func (x *PatternFlowTcpDstPortMetricTag) GetOffset() uint32 { +func (x *PatternFlowIpv4TosMonetaryMetricTag) GetOffset() uint32 { if x != nil && x.Offset != nil { return *x.Offset } return 0 } -func (x *PatternFlowTcpDstPortMetricTag) GetLength() uint32 { +func (x *PatternFlowIpv4TosMonetaryMetricTag) GetLength() uint32 { if x != nil && x.Length != nil { return *x.Length } return 0 } -// Destination port -type PatternFlowTcpDstPort struct { +// Monetary +type PatternFlowIpv4TosMonetary struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // Description missing in models // default = Choice.Enum.value - Choice *PatternFlowTcpDstPort_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.PatternFlowTcpDstPort_Choice_Enum,oneof" json:"choice,omitempty"` + Choice *PatternFlowIpv4TosMonetary_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.PatternFlowIpv4TosMonetary_Choice_Enum,oneof" json:"choice,omitempty"` // Description missing in models // default = 0 Value *uint32 `protobuf:"varint,2,opt,name=value,proto3,oneof" json:"value,omitempty"` @@ -61511,32 +60675,32 @@ type PatternFlowTcpDstPort struct { // default = [0] Values []uint32 `protobuf:"varint,3,rep,packed,name=values,proto3" json:"values,omitempty"` // Description missing in models - Increment *PatternFlowTcpDstPortCounter `protobuf:"bytes,5,opt,name=increment,proto3" json:"increment,omitempty"` + Increment *PatternFlowIpv4TosMonetaryCounter `protobuf:"bytes,5,opt,name=increment,proto3" json:"increment,omitempty"` // Description missing in models - Decrement *PatternFlowTcpDstPortCounter `protobuf:"bytes,6,opt,name=decrement,proto3" json:"decrement,omitempty"` + Decrement *PatternFlowIpv4TosMonetaryCounter `protobuf:"bytes,6,opt,name=decrement,proto3" json:"decrement,omitempty"` // One or more metric tags can be used to enable tracking portion of or all bits in // a corresponding header field for metrics per each applicable value. These would appear // as tagged metrics in corresponding flow metrics. - MetricTags []*PatternFlowTcpDstPortMetricTag `protobuf:"bytes,7,rep,name=metric_tags,json=metricTags,proto3" json:"metric_tags,omitempty"` + MetricTags []*PatternFlowIpv4TosMonetaryMetricTag `protobuf:"bytes,7,rep,name=metric_tags,json=metricTags,proto3" json:"metric_tags,omitempty"` } -func (x *PatternFlowTcpDstPort) Reset() { - *x = PatternFlowTcpDstPort{} +func (x *PatternFlowIpv4TosMonetary) Reset() { + *x = PatternFlowIpv4TosMonetary{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[513] + mi := &file_otg_proto_msgTypes[476] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowTcpDstPort) String() string { +func (x *PatternFlowIpv4TosMonetary) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowTcpDstPort) ProtoMessage() {} +func (*PatternFlowIpv4TosMonetary) ProtoMessage() {} -func (x *PatternFlowTcpDstPort) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[513] +func (x *PatternFlowIpv4TosMonetary) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[476] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -61547,47 +60711,47 @@ func (x *PatternFlowTcpDstPort) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use PatternFlowTcpDstPort.ProtoReflect.Descriptor instead. -func (*PatternFlowTcpDstPort) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{513} +// Deprecated: Use PatternFlowIpv4TosMonetary.ProtoReflect.Descriptor instead. +func (*PatternFlowIpv4TosMonetary) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{476} } -func (x *PatternFlowTcpDstPort) GetChoice() PatternFlowTcpDstPort_Choice_Enum { +func (x *PatternFlowIpv4TosMonetary) GetChoice() PatternFlowIpv4TosMonetary_Choice_Enum { if x != nil && x.Choice != nil { return *x.Choice } - return PatternFlowTcpDstPort_Choice_unspecified + return PatternFlowIpv4TosMonetary_Choice_unspecified } -func (x *PatternFlowTcpDstPort) GetValue() uint32 { +func (x *PatternFlowIpv4TosMonetary) GetValue() uint32 { if x != nil && x.Value != nil { return *x.Value } return 0 } -func (x *PatternFlowTcpDstPort) GetValues() []uint32 { +func (x *PatternFlowIpv4TosMonetary) GetValues() []uint32 { if x != nil { return x.Values } return nil } -func (x *PatternFlowTcpDstPort) GetIncrement() *PatternFlowTcpDstPortCounter { +func (x *PatternFlowIpv4TosMonetary) GetIncrement() *PatternFlowIpv4TosMonetaryCounter { if x != nil { return x.Increment } return nil } -func (x *PatternFlowTcpDstPort) GetDecrement() *PatternFlowTcpDstPortCounter { +func (x *PatternFlowIpv4TosMonetary) GetDecrement() *PatternFlowIpv4TosMonetaryCounter { if x != nil { return x.Decrement } return nil } -func (x *PatternFlowTcpDstPort) GetMetricTags() []*PatternFlowTcpDstPortMetricTag { +func (x *PatternFlowIpv4TosMonetary) GetMetricTags() []*PatternFlowIpv4TosMonetaryMetricTag { if x != nil { return x.MetricTags } @@ -61595,7 +60759,7 @@ func (x *PatternFlowTcpDstPort) GetMetricTags() []*PatternFlowTcpDstPortMetricTa } // integer counter pattern -type PatternFlowTcpSeqNumCounter struct { +type PatternFlowIpv4TosUnusedCounter struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields @@ -61611,23 +60775,23 @@ type PatternFlowTcpSeqNumCounter struct { Count *uint32 `protobuf:"varint,3,opt,name=count,proto3,oneof" json:"count,omitempty"` } -func (x *PatternFlowTcpSeqNumCounter) Reset() { - *x = PatternFlowTcpSeqNumCounter{} +func (x *PatternFlowIpv4TosUnusedCounter) Reset() { + *x = PatternFlowIpv4TosUnusedCounter{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[514] + mi := &file_otg_proto_msgTypes[477] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowTcpSeqNumCounter) String() string { +func (x *PatternFlowIpv4TosUnusedCounter) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowTcpSeqNumCounter) ProtoMessage() {} +func (*PatternFlowIpv4TosUnusedCounter) ProtoMessage() {} -func (x *PatternFlowTcpSeqNumCounter) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[514] +func (x *PatternFlowIpv4TosUnusedCounter) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[477] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -61638,26 +60802,26 @@ func (x *PatternFlowTcpSeqNumCounter) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use PatternFlowTcpSeqNumCounter.ProtoReflect.Descriptor instead. -func (*PatternFlowTcpSeqNumCounter) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{514} +// Deprecated: Use PatternFlowIpv4TosUnusedCounter.ProtoReflect.Descriptor instead. +func (*PatternFlowIpv4TosUnusedCounter) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{477} } -func (x *PatternFlowTcpSeqNumCounter) GetStart() uint32 { +func (x *PatternFlowIpv4TosUnusedCounter) GetStart() uint32 { if x != nil && x.Start != nil { return *x.Start } return 0 } -func (x *PatternFlowTcpSeqNumCounter) GetStep() uint32 { +func (x *PatternFlowIpv4TosUnusedCounter) GetStep() uint32 { if x != nil && x.Step != nil { return *x.Step } return 0 } -func (x *PatternFlowTcpSeqNumCounter) GetCount() uint32 { +func (x *PatternFlowIpv4TosUnusedCounter) GetCount() uint32 { if x != nil && x.Count != nil { return *x.Count } @@ -61667,7 +60831,7 @@ func (x *PatternFlowTcpSeqNumCounter) GetCount() uint32 { // Metric tag can be used to enable tracking portion of or all bits in a corresponding // header field for metrics per each applicable value. These would appear as tagged // metrics in corresponding flow metrics. -type PatternFlowTcpSeqNumMetricTag struct { +type PatternFlowIpv4TosUnusedMetricTag struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields @@ -61681,27 +60845,27 @@ type PatternFlowTcpSeqNumMetricTag struct { Offset *uint32 `protobuf:"varint,2,opt,name=offset,proto3,oneof" json:"offset,omitempty"` // Number of bits to track for metrics starting from configured offset of corresponding // header field - // default = 32 + // default = 1 Length *uint32 `protobuf:"varint,3,opt,name=length,proto3,oneof" json:"length,omitempty"` } -func (x *PatternFlowTcpSeqNumMetricTag) Reset() { - *x = PatternFlowTcpSeqNumMetricTag{} +func (x *PatternFlowIpv4TosUnusedMetricTag) Reset() { + *x = PatternFlowIpv4TosUnusedMetricTag{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[515] + mi := &file_otg_proto_msgTypes[478] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowTcpSeqNumMetricTag) String() string { +func (x *PatternFlowIpv4TosUnusedMetricTag) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowTcpSeqNumMetricTag) ProtoMessage() {} +func (*PatternFlowIpv4TosUnusedMetricTag) ProtoMessage() {} -func (x *PatternFlowTcpSeqNumMetricTag) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[515] +func (x *PatternFlowIpv4TosUnusedMetricTag) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[478] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -61712,41 +60876,41 @@ func (x *PatternFlowTcpSeqNumMetricTag) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use PatternFlowTcpSeqNumMetricTag.ProtoReflect.Descriptor instead. -func (*PatternFlowTcpSeqNumMetricTag) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{515} +// Deprecated: Use PatternFlowIpv4TosUnusedMetricTag.ProtoReflect.Descriptor instead. +func (*PatternFlowIpv4TosUnusedMetricTag) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{478} } -func (x *PatternFlowTcpSeqNumMetricTag) GetName() string { +func (x *PatternFlowIpv4TosUnusedMetricTag) GetName() string { if x != nil && x.Name != nil { return *x.Name } return "" } -func (x *PatternFlowTcpSeqNumMetricTag) GetOffset() uint32 { +func (x *PatternFlowIpv4TosUnusedMetricTag) GetOffset() uint32 { if x != nil && x.Offset != nil { return *x.Offset } return 0 } -func (x *PatternFlowTcpSeqNumMetricTag) GetLength() uint32 { +func (x *PatternFlowIpv4TosUnusedMetricTag) GetLength() uint32 { if x != nil && x.Length != nil { return *x.Length } return 0 } -// Sequence number -type PatternFlowTcpSeqNum struct { +// Unused +type PatternFlowIpv4TosUnused struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // Description missing in models // default = Choice.Enum.value - Choice *PatternFlowTcpSeqNum_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.PatternFlowTcpSeqNum_Choice_Enum,oneof" json:"choice,omitempty"` + Choice *PatternFlowIpv4TosUnused_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.PatternFlowIpv4TosUnused_Choice_Enum,oneof" json:"choice,omitempty"` // Description missing in models // default = 0 Value *uint32 `protobuf:"varint,2,opt,name=value,proto3,oneof" json:"value,omitempty"` @@ -61754,32 +60918,32 @@ type PatternFlowTcpSeqNum struct { // default = [0] Values []uint32 `protobuf:"varint,3,rep,packed,name=values,proto3" json:"values,omitempty"` // Description missing in models - Increment *PatternFlowTcpSeqNumCounter `protobuf:"bytes,5,opt,name=increment,proto3" json:"increment,omitempty"` + Increment *PatternFlowIpv4TosUnusedCounter `protobuf:"bytes,5,opt,name=increment,proto3" json:"increment,omitempty"` // Description missing in models - Decrement *PatternFlowTcpSeqNumCounter `protobuf:"bytes,6,opt,name=decrement,proto3" json:"decrement,omitempty"` + Decrement *PatternFlowIpv4TosUnusedCounter `protobuf:"bytes,6,opt,name=decrement,proto3" json:"decrement,omitempty"` // One or more metric tags can be used to enable tracking portion of or all bits in // a corresponding header field for metrics per each applicable value. These would appear // as tagged metrics in corresponding flow metrics. - MetricTags []*PatternFlowTcpSeqNumMetricTag `protobuf:"bytes,7,rep,name=metric_tags,json=metricTags,proto3" json:"metric_tags,omitempty"` + MetricTags []*PatternFlowIpv4TosUnusedMetricTag `protobuf:"bytes,7,rep,name=metric_tags,json=metricTags,proto3" json:"metric_tags,omitempty"` } -func (x *PatternFlowTcpSeqNum) Reset() { - *x = PatternFlowTcpSeqNum{} +func (x *PatternFlowIpv4TosUnused) Reset() { + *x = PatternFlowIpv4TosUnused{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[516] + mi := &file_otg_proto_msgTypes[479] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowTcpSeqNum) String() string { +func (x *PatternFlowIpv4TosUnused) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowTcpSeqNum) ProtoMessage() {} +func (*PatternFlowIpv4TosUnused) ProtoMessage() {} -func (x *PatternFlowTcpSeqNum) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[516] +func (x *PatternFlowIpv4TosUnused) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[479] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -61790,47 +60954,47 @@ func (x *PatternFlowTcpSeqNum) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use PatternFlowTcpSeqNum.ProtoReflect.Descriptor instead. -func (*PatternFlowTcpSeqNum) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{516} +// Deprecated: Use PatternFlowIpv4TosUnused.ProtoReflect.Descriptor instead. +func (*PatternFlowIpv4TosUnused) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{479} } -func (x *PatternFlowTcpSeqNum) GetChoice() PatternFlowTcpSeqNum_Choice_Enum { +func (x *PatternFlowIpv4TosUnused) GetChoice() PatternFlowIpv4TosUnused_Choice_Enum { if x != nil && x.Choice != nil { return *x.Choice } - return PatternFlowTcpSeqNum_Choice_unspecified + return PatternFlowIpv4TosUnused_Choice_unspecified } -func (x *PatternFlowTcpSeqNum) GetValue() uint32 { +func (x *PatternFlowIpv4TosUnused) GetValue() uint32 { if x != nil && x.Value != nil { return *x.Value } return 0 } -func (x *PatternFlowTcpSeqNum) GetValues() []uint32 { +func (x *PatternFlowIpv4TosUnused) GetValues() []uint32 { if x != nil { return x.Values } return nil } -func (x *PatternFlowTcpSeqNum) GetIncrement() *PatternFlowTcpSeqNumCounter { +func (x *PatternFlowIpv4TosUnused) GetIncrement() *PatternFlowIpv4TosUnusedCounter { if x != nil { return x.Increment } return nil } -func (x *PatternFlowTcpSeqNum) GetDecrement() *PatternFlowTcpSeqNumCounter { +func (x *PatternFlowIpv4TosUnused) GetDecrement() *PatternFlowIpv4TosUnusedCounter { if x != nil { return x.Decrement } return nil } -func (x *PatternFlowTcpSeqNum) GetMetricTags() []*PatternFlowTcpSeqNumMetricTag { +func (x *PatternFlowIpv4TosUnused) GetMetricTags() []*PatternFlowIpv4TosUnusedMetricTag { if x != nil { return x.MetricTags } @@ -61838,13 +61002,13 @@ func (x *PatternFlowTcpSeqNum) GetMetricTags() []*PatternFlowTcpSeqNumMetricTag } // integer counter pattern -type PatternFlowTcpAckNumCounter struct { +type PatternFlowIpv6VersionCounter struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // Description missing in models - // default = 0 + // default = 6 Start *uint32 `protobuf:"varint,1,opt,name=start,proto3,oneof" json:"start,omitempty"` // Description missing in models // default = 1 @@ -61854,23 +61018,23 @@ type PatternFlowTcpAckNumCounter struct { Count *uint32 `protobuf:"varint,3,opt,name=count,proto3,oneof" json:"count,omitempty"` } -func (x *PatternFlowTcpAckNumCounter) Reset() { - *x = PatternFlowTcpAckNumCounter{} +func (x *PatternFlowIpv6VersionCounter) Reset() { + *x = PatternFlowIpv6VersionCounter{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[517] + mi := &file_otg_proto_msgTypes[480] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowTcpAckNumCounter) String() string { +func (x *PatternFlowIpv6VersionCounter) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowTcpAckNumCounter) ProtoMessage() {} +func (*PatternFlowIpv6VersionCounter) ProtoMessage() {} -func (x *PatternFlowTcpAckNumCounter) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[517] +func (x *PatternFlowIpv6VersionCounter) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[480] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -61881,26 +61045,26 @@ func (x *PatternFlowTcpAckNumCounter) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use PatternFlowTcpAckNumCounter.ProtoReflect.Descriptor instead. -func (*PatternFlowTcpAckNumCounter) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{517} +// Deprecated: Use PatternFlowIpv6VersionCounter.ProtoReflect.Descriptor instead. +func (*PatternFlowIpv6VersionCounter) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{480} } -func (x *PatternFlowTcpAckNumCounter) GetStart() uint32 { +func (x *PatternFlowIpv6VersionCounter) GetStart() uint32 { if x != nil && x.Start != nil { return *x.Start } return 0 } -func (x *PatternFlowTcpAckNumCounter) GetStep() uint32 { +func (x *PatternFlowIpv6VersionCounter) GetStep() uint32 { if x != nil && x.Step != nil { return *x.Step } return 0 } -func (x *PatternFlowTcpAckNumCounter) GetCount() uint32 { +func (x *PatternFlowIpv6VersionCounter) GetCount() uint32 { if x != nil && x.Count != nil { return *x.Count } @@ -61910,7 +61074,7 @@ func (x *PatternFlowTcpAckNumCounter) GetCount() uint32 { // Metric tag can be used to enable tracking portion of or all bits in a corresponding // header field for metrics per each applicable value. These would appear as tagged // metrics in corresponding flow metrics. -type PatternFlowTcpAckNumMetricTag struct { +type PatternFlowIpv6VersionMetricTag struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields @@ -61924,27 +61088,27 @@ type PatternFlowTcpAckNumMetricTag struct { Offset *uint32 `protobuf:"varint,2,opt,name=offset,proto3,oneof" json:"offset,omitempty"` // Number of bits to track for metrics starting from configured offset of corresponding // header field - // default = 32 + // default = 4 Length *uint32 `protobuf:"varint,3,opt,name=length,proto3,oneof" json:"length,omitempty"` } -func (x *PatternFlowTcpAckNumMetricTag) Reset() { - *x = PatternFlowTcpAckNumMetricTag{} +func (x *PatternFlowIpv6VersionMetricTag) Reset() { + *x = PatternFlowIpv6VersionMetricTag{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[518] + mi := &file_otg_proto_msgTypes[481] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowTcpAckNumMetricTag) String() string { +func (x *PatternFlowIpv6VersionMetricTag) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowTcpAckNumMetricTag) ProtoMessage() {} +func (*PatternFlowIpv6VersionMetricTag) ProtoMessage() {} -func (x *PatternFlowTcpAckNumMetricTag) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[518] +func (x *PatternFlowIpv6VersionMetricTag) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[481] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -61955,74 +61119,74 @@ func (x *PatternFlowTcpAckNumMetricTag) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use PatternFlowTcpAckNumMetricTag.ProtoReflect.Descriptor instead. -func (*PatternFlowTcpAckNumMetricTag) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{518} +// Deprecated: Use PatternFlowIpv6VersionMetricTag.ProtoReflect.Descriptor instead. +func (*PatternFlowIpv6VersionMetricTag) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{481} } -func (x *PatternFlowTcpAckNumMetricTag) GetName() string { +func (x *PatternFlowIpv6VersionMetricTag) GetName() string { if x != nil && x.Name != nil { return *x.Name } return "" } -func (x *PatternFlowTcpAckNumMetricTag) GetOffset() uint32 { +func (x *PatternFlowIpv6VersionMetricTag) GetOffset() uint32 { if x != nil && x.Offset != nil { return *x.Offset } return 0 } -func (x *PatternFlowTcpAckNumMetricTag) GetLength() uint32 { +func (x *PatternFlowIpv6VersionMetricTag) GetLength() uint32 { if x != nil && x.Length != nil { return *x.Length } return 0 } -// Acknowledgement number -type PatternFlowTcpAckNum struct { +// Version number +type PatternFlowIpv6Version struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // Description missing in models // default = Choice.Enum.value - Choice *PatternFlowTcpAckNum_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.PatternFlowTcpAckNum_Choice_Enum,oneof" json:"choice,omitempty"` + Choice *PatternFlowIpv6Version_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.PatternFlowIpv6Version_Choice_Enum,oneof" json:"choice,omitempty"` // Description missing in models - // default = 0 + // default = 6 Value *uint32 `protobuf:"varint,2,opt,name=value,proto3,oneof" json:"value,omitempty"` // Description missing in models - // default = [0] + // default = [6] Values []uint32 `protobuf:"varint,3,rep,packed,name=values,proto3" json:"values,omitempty"` // Description missing in models - Increment *PatternFlowTcpAckNumCounter `protobuf:"bytes,5,opt,name=increment,proto3" json:"increment,omitempty"` + Increment *PatternFlowIpv6VersionCounter `protobuf:"bytes,5,opt,name=increment,proto3" json:"increment,omitempty"` // Description missing in models - Decrement *PatternFlowTcpAckNumCounter `protobuf:"bytes,6,opt,name=decrement,proto3" json:"decrement,omitempty"` + Decrement *PatternFlowIpv6VersionCounter `protobuf:"bytes,6,opt,name=decrement,proto3" json:"decrement,omitempty"` // One or more metric tags can be used to enable tracking portion of or all bits in // a corresponding header field for metrics per each applicable value. These would appear // as tagged metrics in corresponding flow metrics. - MetricTags []*PatternFlowTcpAckNumMetricTag `protobuf:"bytes,7,rep,name=metric_tags,json=metricTags,proto3" json:"metric_tags,omitempty"` + MetricTags []*PatternFlowIpv6VersionMetricTag `protobuf:"bytes,7,rep,name=metric_tags,json=metricTags,proto3" json:"metric_tags,omitempty"` } -func (x *PatternFlowTcpAckNum) Reset() { - *x = PatternFlowTcpAckNum{} +func (x *PatternFlowIpv6Version) Reset() { + *x = PatternFlowIpv6Version{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[519] + mi := &file_otg_proto_msgTypes[482] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowTcpAckNum) String() string { +func (x *PatternFlowIpv6Version) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowTcpAckNum) ProtoMessage() {} +func (*PatternFlowIpv6Version) ProtoMessage() {} -func (x *PatternFlowTcpAckNum) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[519] +func (x *PatternFlowIpv6Version) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[482] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -62033,47 +61197,47 @@ func (x *PatternFlowTcpAckNum) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use PatternFlowTcpAckNum.ProtoReflect.Descriptor instead. -func (*PatternFlowTcpAckNum) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{519} +// Deprecated: Use PatternFlowIpv6Version.ProtoReflect.Descriptor instead. +func (*PatternFlowIpv6Version) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{482} } -func (x *PatternFlowTcpAckNum) GetChoice() PatternFlowTcpAckNum_Choice_Enum { +func (x *PatternFlowIpv6Version) GetChoice() PatternFlowIpv6Version_Choice_Enum { if x != nil && x.Choice != nil { return *x.Choice } - return PatternFlowTcpAckNum_Choice_unspecified + return PatternFlowIpv6Version_Choice_unspecified } -func (x *PatternFlowTcpAckNum) GetValue() uint32 { +func (x *PatternFlowIpv6Version) GetValue() uint32 { if x != nil && x.Value != nil { return *x.Value } return 0 } -func (x *PatternFlowTcpAckNum) GetValues() []uint32 { +func (x *PatternFlowIpv6Version) GetValues() []uint32 { if x != nil { return x.Values } return nil } -func (x *PatternFlowTcpAckNum) GetIncrement() *PatternFlowTcpAckNumCounter { +func (x *PatternFlowIpv6Version) GetIncrement() *PatternFlowIpv6VersionCounter { if x != nil { return x.Increment } return nil } -func (x *PatternFlowTcpAckNum) GetDecrement() *PatternFlowTcpAckNumCounter { +func (x *PatternFlowIpv6Version) GetDecrement() *PatternFlowIpv6VersionCounter { if x != nil { return x.Decrement } return nil } -func (x *PatternFlowTcpAckNum) GetMetricTags() []*PatternFlowTcpAckNumMetricTag { +func (x *PatternFlowIpv6Version) GetMetricTags() []*PatternFlowIpv6VersionMetricTag { if x != nil { return x.MetricTags } @@ -62081,7 +61245,7 @@ func (x *PatternFlowTcpAckNum) GetMetricTags() []*PatternFlowTcpAckNumMetricTag } // integer counter pattern -type PatternFlowTcpDataOffsetCounter struct { +type PatternFlowIpv6TrafficClassCounter struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields @@ -62097,23 +61261,23 @@ type PatternFlowTcpDataOffsetCounter struct { Count *uint32 `protobuf:"varint,3,opt,name=count,proto3,oneof" json:"count,omitempty"` } -func (x *PatternFlowTcpDataOffsetCounter) Reset() { - *x = PatternFlowTcpDataOffsetCounter{} +func (x *PatternFlowIpv6TrafficClassCounter) Reset() { + *x = PatternFlowIpv6TrafficClassCounter{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[520] + mi := &file_otg_proto_msgTypes[483] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowTcpDataOffsetCounter) String() string { +func (x *PatternFlowIpv6TrafficClassCounter) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowTcpDataOffsetCounter) ProtoMessage() {} +func (*PatternFlowIpv6TrafficClassCounter) ProtoMessage() {} -func (x *PatternFlowTcpDataOffsetCounter) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[520] +func (x *PatternFlowIpv6TrafficClassCounter) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[483] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -62124,26 +61288,26 @@ func (x *PatternFlowTcpDataOffsetCounter) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use PatternFlowTcpDataOffsetCounter.ProtoReflect.Descriptor instead. -func (*PatternFlowTcpDataOffsetCounter) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{520} +// Deprecated: Use PatternFlowIpv6TrafficClassCounter.ProtoReflect.Descriptor instead. +func (*PatternFlowIpv6TrafficClassCounter) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{483} } -func (x *PatternFlowTcpDataOffsetCounter) GetStart() uint32 { +func (x *PatternFlowIpv6TrafficClassCounter) GetStart() uint32 { if x != nil && x.Start != nil { return *x.Start } return 0 } -func (x *PatternFlowTcpDataOffsetCounter) GetStep() uint32 { +func (x *PatternFlowIpv6TrafficClassCounter) GetStep() uint32 { if x != nil && x.Step != nil { return *x.Step } return 0 } -func (x *PatternFlowTcpDataOffsetCounter) GetCount() uint32 { +func (x *PatternFlowIpv6TrafficClassCounter) GetCount() uint32 { if x != nil && x.Count != nil { return *x.Count } @@ -62153,7 +61317,7 @@ func (x *PatternFlowTcpDataOffsetCounter) GetCount() uint32 { // Metric tag can be used to enable tracking portion of or all bits in a corresponding // header field for metrics per each applicable value. These would appear as tagged // metrics in corresponding flow metrics. -type PatternFlowTcpDataOffsetMetricTag struct { +type PatternFlowIpv6TrafficClassMetricTag struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields @@ -62167,27 +61331,27 @@ type PatternFlowTcpDataOffsetMetricTag struct { Offset *uint32 `protobuf:"varint,2,opt,name=offset,proto3,oneof" json:"offset,omitempty"` // Number of bits to track for metrics starting from configured offset of corresponding // header field - // default = 4 + // default = 8 Length *uint32 `protobuf:"varint,3,opt,name=length,proto3,oneof" json:"length,omitempty"` } -func (x *PatternFlowTcpDataOffsetMetricTag) Reset() { - *x = PatternFlowTcpDataOffsetMetricTag{} +func (x *PatternFlowIpv6TrafficClassMetricTag) Reset() { + *x = PatternFlowIpv6TrafficClassMetricTag{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[521] + mi := &file_otg_proto_msgTypes[484] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowTcpDataOffsetMetricTag) String() string { +func (x *PatternFlowIpv6TrafficClassMetricTag) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowTcpDataOffsetMetricTag) ProtoMessage() {} +func (*PatternFlowIpv6TrafficClassMetricTag) ProtoMessage() {} -func (x *PatternFlowTcpDataOffsetMetricTag) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[521] +func (x *PatternFlowIpv6TrafficClassMetricTag) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[484] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -62198,41 +61362,41 @@ func (x *PatternFlowTcpDataOffsetMetricTag) ProtoReflect() protoreflect.Message return mi.MessageOf(x) } -// Deprecated: Use PatternFlowTcpDataOffsetMetricTag.ProtoReflect.Descriptor instead. -func (*PatternFlowTcpDataOffsetMetricTag) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{521} +// Deprecated: Use PatternFlowIpv6TrafficClassMetricTag.ProtoReflect.Descriptor instead. +func (*PatternFlowIpv6TrafficClassMetricTag) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{484} } -func (x *PatternFlowTcpDataOffsetMetricTag) GetName() string { +func (x *PatternFlowIpv6TrafficClassMetricTag) GetName() string { if x != nil && x.Name != nil { return *x.Name } return "" } -func (x *PatternFlowTcpDataOffsetMetricTag) GetOffset() uint32 { +func (x *PatternFlowIpv6TrafficClassMetricTag) GetOffset() uint32 { if x != nil && x.Offset != nil { return *x.Offset } return 0 } -func (x *PatternFlowTcpDataOffsetMetricTag) GetLength() uint32 { +func (x *PatternFlowIpv6TrafficClassMetricTag) GetLength() uint32 { if x != nil && x.Length != nil { return *x.Length } return 0 } -// The number of 32 bit words in the TCP header. This indicates where the data begins. -type PatternFlowTcpDataOffset struct { +// Traffic class +type PatternFlowIpv6TrafficClass struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // Description missing in models // default = Choice.Enum.value - Choice *PatternFlowTcpDataOffset_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.PatternFlowTcpDataOffset_Choice_Enum,oneof" json:"choice,omitempty"` + Choice *PatternFlowIpv6TrafficClass_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.PatternFlowIpv6TrafficClass_Choice_Enum,oneof" json:"choice,omitempty"` // Description missing in models // default = 0 Value *uint32 `protobuf:"varint,2,opt,name=value,proto3,oneof" json:"value,omitempty"` @@ -62240,32 +61404,32 @@ type PatternFlowTcpDataOffset struct { // default = [0] Values []uint32 `protobuf:"varint,3,rep,packed,name=values,proto3" json:"values,omitempty"` // Description missing in models - Increment *PatternFlowTcpDataOffsetCounter `protobuf:"bytes,5,opt,name=increment,proto3" json:"increment,omitempty"` + Increment *PatternFlowIpv6TrafficClassCounter `protobuf:"bytes,5,opt,name=increment,proto3" json:"increment,omitempty"` // Description missing in models - Decrement *PatternFlowTcpDataOffsetCounter `protobuf:"bytes,6,opt,name=decrement,proto3" json:"decrement,omitempty"` + Decrement *PatternFlowIpv6TrafficClassCounter `protobuf:"bytes,6,opt,name=decrement,proto3" json:"decrement,omitempty"` // One or more metric tags can be used to enable tracking portion of or all bits in // a corresponding header field for metrics per each applicable value. These would appear // as tagged metrics in corresponding flow metrics. - MetricTags []*PatternFlowTcpDataOffsetMetricTag `protobuf:"bytes,7,rep,name=metric_tags,json=metricTags,proto3" json:"metric_tags,omitempty"` + MetricTags []*PatternFlowIpv6TrafficClassMetricTag `protobuf:"bytes,7,rep,name=metric_tags,json=metricTags,proto3" json:"metric_tags,omitempty"` } -func (x *PatternFlowTcpDataOffset) Reset() { - *x = PatternFlowTcpDataOffset{} +func (x *PatternFlowIpv6TrafficClass) Reset() { + *x = PatternFlowIpv6TrafficClass{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[522] + mi := &file_otg_proto_msgTypes[485] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowTcpDataOffset) String() string { +func (x *PatternFlowIpv6TrafficClass) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowTcpDataOffset) ProtoMessage() {} +func (*PatternFlowIpv6TrafficClass) ProtoMessage() {} -func (x *PatternFlowTcpDataOffset) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[522] +func (x *PatternFlowIpv6TrafficClass) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[485] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -62276,47 +61440,47 @@ func (x *PatternFlowTcpDataOffset) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use PatternFlowTcpDataOffset.ProtoReflect.Descriptor instead. -func (*PatternFlowTcpDataOffset) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{522} +// Deprecated: Use PatternFlowIpv6TrafficClass.ProtoReflect.Descriptor instead. +func (*PatternFlowIpv6TrafficClass) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{485} } -func (x *PatternFlowTcpDataOffset) GetChoice() PatternFlowTcpDataOffset_Choice_Enum { +func (x *PatternFlowIpv6TrafficClass) GetChoice() PatternFlowIpv6TrafficClass_Choice_Enum { if x != nil && x.Choice != nil { return *x.Choice } - return PatternFlowTcpDataOffset_Choice_unspecified + return PatternFlowIpv6TrafficClass_Choice_unspecified } -func (x *PatternFlowTcpDataOffset) GetValue() uint32 { +func (x *PatternFlowIpv6TrafficClass) GetValue() uint32 { if x != nil && x.Value != nil { return *x.Value } return 0 } -func (x *PatternFlowTcpDataOffset) GetValues() []uint32 { +func (x *PatternFlowIpv6TrafficClass) GetValues() []uint32 { if x != nil { return x.Values } return nil } -func (x *PatternFlowTcpDataOffset) GetIncrement() *PatternFlowTcpDataOffsetCounter { +func (x *PatternFlowIpv6TrafficClass) GetIncrement() *PatternFlowIpv6TrafficClassCounter { if x != nil { return x.Increment } return nil } -func (x *PatternFlowTcpDataOffset) GetDecrement() *PatternFlowTcpDataOffsetCounter { +func (x *PatternFlowIpv6TrafficClass) GetDecrement() *PatternFlowIpv6TrafficClassCounter { if x != nil { return x.Decrement } return nil } -func (x *PatternFlowTcpDataOffset) GetMetricTags() []*PatternFlowTcpDataOffsetMetricTag { +func (x *PatternFlowIpv6TrafficClass) GetMetricTags() []*PatternFlowIpv6TrafficClassMetricTag { if x != nil { return x.MetricTags } @@ -62324,7 +61488,7 @@ func (x *PatternFlowTcpDataOffset) GetMetricTags() []*PatternFlowTcpDataOffsetMe } // integer counter pattern -type PatternFlowTcpEcnNsCounter struct { +type PatternFlowIpv6FlowLabelCounter struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields @@ -62340,23 +61504,23 @@ type PatternFlowTcpEcnNsCounter struct { Count *uint32 `protobuf:"varint,3,opt,name=count,proto3,oneof" json:"count,omitempty"` } -func (x *PatternFlowTcpEcnNsCounter) Reset() { - *x = PatternFlowTcpEcnNsCounter{} +func (x *PatternFlowIpv6FlowLabelCounter) Reset() { + *x = PatternFlowIpv6FlowLabelCounter{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[523] + mi := &file_otg_proto_msgTypes[486] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowTcpEcnNsCounter) String() string { +func (x *PatternFlowIpv6FlowLabelCounter) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowTcpEcnNsCounter) ProtoMessage() {} +func (*PatternFlowIpv6FlowLabelCounter) ProtoMessage() {} -func (x *PatternFlowTcpEcnNsCounter) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[523] +func (x *PatternFlowIpv6FlowLabelCounter) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[486] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -62367,26 +61531,26 @@ func (x *PatternFlowTcpEcnNsCounter) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use PatternFlowTcpEcnNsCounter.ProtoReflect.Descriptor instead. -func (*PatternFlowTcpEcnNsCounter) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{523} +// Deprecated: Use PatternFlowIpv6FlowLabelCounter.ProtoReflect.Descriptor instead. +func (*PatternFlowIpv6FlowLabelCounter) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{486} } -func (x *PatternFlowTcpEcnNsCounter) GetStart() uint32 { +func (x *PatternFlowIpv6FlowLabelCounter) GetStart() uint32 { if x != nil && x.Start != nil { return *x.Start } return 0 } -func (x *PatternFlowTcpEcnNsCounter) GetStep() uint32 { +func (x *PatternFlowIpv6FlowLabelCounter) GetStep() uint32 { if x != nil && x.Step != nil { return *x.Step } return 0 } -func (x *PatternFlowTcpEcnNsCounter) GetCount() uint32 { +func (x *PatternFlowIpv6FlowLabelCounter) GetCount() uint32 { if x != nil && x.Count != nil { return *x.Count } @@ -62396,7 +61560,7 @@ func (x *PatternFlowTcpEcnNsCounter) GetCount() uint32 { // Metric tag can be used to enable tracking portion of or all bits in a corresponding // header field for metrics per each applicable value. These would appear as tagged // metrics in corresponding flow metrics. -type PatternFlowTcpEcnNsMetricTag struct { +type PatternFlowIpv6FlowLabelMetricTag struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields @@ -62410,27 +61574,27 @@ type PatternFlowTcpEcnNsMetricTag struct { Offset *uint32 `protobuf:"varint,2,opt,name=offset,proto3,oneof" json:"offset,omitempty"` // Number of bits to track for metrics starting from configured offset of corresponding // header field - // default = 1 + // default = 20 Length *uint32 `protobuf:"varint,3,opt,name=length,proto3,oneof" json:"length,omitempty"` } -func (x *PatternFlowTcpEcnNsMetricTag) Reset() { - *x = PatternFlowTcpEcnNsMetricTag{} +func (x *PatternFlowIpv6FlowLabelMetricTag) Reset() { + *x = PatternFlowIpv6FlowLabelMetricTag{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[524] + mi := &file_otg_proto_msgTypes[487] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowTcpEcnNsMetricTag) String() string { +func (x *PatternFlowIpv6FlowLabelMetricTag) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowTcpEcnNsMetricTag) ProtoMessage() {} +func (*PatternFlowIpv6FlowLabelMetricTag) ProtoMessage() {} -func (x *PatternFlowTcpEcnNsMetricTag) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[524] +func (x *PatternFlowIpv6FlowLabelMetricTag) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[487] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -62441,41 +61605,41 @@ func (x *PatternFlowTcpEcnNsMetricTag) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use PatternFlowTcpEcnNsMetricTag.ProtoReflect.Descriptor instead. -func (*PatternFlowTcpEcnNsMetricTag) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{524} +// Deprecated: Use PatternFlowIpv6FlowLabelMetricTag.ProtoReflect.Descriptor instead. +func (*PatternFlowIpv6FlowLabelMetricTag) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{487} } -func (x *PatternFlowTcpEcnNsMetricTag) GetName() string { +func (x *PatternFlowIpv6FlowLabelMetricTag) GetName() string { if x != nil && x.Name != nil { return *x.Name } return "" } -func (x *PatternFlowTcpEcnNsMetricTag) GetOffset() uint32 { +func (x *PatternFlowIpv6FlowLabelMetricTag) GetOffset() uint32 { if x != nil && x.Offset != nil { return *x.Offset } return 0 } -func (x *PatternFlowTcpEcnNsMetricTag) GetLength() uint32 { +func (x *PatternFlowIpv6FlowLabelMetricTag) GetLength() uint32 { if x != nil && x.Length != nil { return *x.Length } return 0 } -// Explicit congestion notification, concealment protection. -type PatternFlowTcpEcnNs struct { +// Flow label +type PatternFlowIpv6FlowLabel struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // Description missing in models // default = Choice.Enum.value - Choice *PatternFlowTcpEcnNs_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.PatternFlowTcpEcnNs_Choice_Enum,oneof" json:"choice,omitempty"` + Choice *PatternFlowIpv6FlowLabel_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.PatternFlowIpv6FlowLabel_Choice_Enum,oneof" json:"choice,omitempty"` // Description missing in models // default = 0 Value *uint32 `protobuf:"varint,2,opt,name=value,proto3,oneof" json:"value,omitempty"` @@ -62483,32 +61647,32 @@ type PatternFlowTcpEcnNs struct { // default = [0] Values []uint32 `protobuf:"varint,3,rep,packed,name=values,proto3" json:"values,omitempty"` // Description missing in models - Increment *PatternFlowTcpEcnNsCounter `protobuf:"bytes,5,opt,name=increment,proto3" json:"increment,omitempty"` + Increment *PatternFlowIpv6FlowLabelCounter `protobuf:"bytes,5,opt,name=increment,proto3" json:"increment,omitempty"` // Description missing in models - Decrement *PatternFlowTcpEcnNsCounter `protobuf:"bytes,6,opt,name=decrement,proto3" json:"decrement,omitempty"` + Decrement *PatternFlowIpv6FlowLabelCounter `protobuf:"bytes,6,opt,name=decrement,proto3" json:"decrement,omitempty"` // One or more metric tags can be used to enable tracking portion of or all bits in // a corresponding header field for metrics per each applicable value. These would appear // as tagged metrics in corresponding flow metrics. - MetricTags []*PatternFlowTcpEcnNsMetricTag `protobuf:"bytes,7,rep,name=metric_tags,json=metricTags,proto3" json:"metric_tags,omitempty"` + MetricTags []*PatternFlowIpv6FlowLabelMetricTag `protobuf:"bytes,7,rep,name=metric_tags,json=metricTags,proto3" json:"metric_tags,omitempty"` } -func (x *PatternFlowTcpEcnNs) Reset() { - *x = PatternFlowTcpEcnNs{} +func (x *PatternFlowIpv6FlowLabel) Reset() { + *x = PatternFlowIpv6FlowLabel{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[525] + mi := &file_otg_proto_msgTypes[488] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowTcpEcnNs) String() string { +func (x *PatternFlowIpv6FlowLabel) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowTcpEcnNs) ProtoMessage() {} +func (*PatternFlowIpv6FlowLabel) ProtoMessage() {} -func (x *PatternFlowTcpEcnNs) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[525] +func (x *PatternFlowIpv6FlowLabel) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[488] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -62519,47 +61683,47 @@ func (x *PatternFlowTcpEcnNs) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use PatternFlowTcpEcnNs.ProtoReflect.Descriptor instead. -func (*PatternFlowTcpEcnNs) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{525} +// Deprecated: Use PatternFlowIpv6FlowLabel.ProtoReflect.Descriptor instead. +func (*PatternFlowIpv6FlowLabel) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{488} } -func (x *PatternFlowTcpEcnNs) GetChoice() PatternFlowTcpEcnNs_Choice_Enum { +func (x *PatternFlowIpv6FlowLabel) GetChoice() PatternFlowIpv6FlowLabel_Choice_Enum { if x != nil && x.Choice != nil { return *x.Choice } - return PatternFlowTcpEcnNs_Choice_unspecified + return PatternFlowIpv6FlowLabel_Choice_unspecified } -func (x *PatternFlowTcpEcnNs) GetValue() uint32 { +func (x *PatternFlowIpv6FlowLabel) GetValue() uint32 { if x != nil && x.Value != nil { return *x.Value } return 0 } -func (x *PatternFlowTcpEcnNs) GetValues() []uint32 { +func (x *PatternFlowIpv6FlowLabel) GetValues() []uint32 { if x != nil { return x.Values } return nil } -func (x *PatternFlowTcpEcnNs) GetIncrement() *PatternFlowTcpEcnNsCounter { +func (x *PatternFlowIpv6FlowLabel) GetIncrement() *PatternFlowIpv6FlowLabelCounter { if x != nil { return x.Increment } return nil } -func (x *PatternFlowTcpEcnNs) GetDecrement() *PatternFlowTcpEcnNsCounter { +func (x *PatternFlowIpv6FlowLabel) GetDecrement() *PatternFlowIpv6FlowLabelCounter { if x != nil { return x.Decrement } return nil } -func (x *PatternFlowTcpEcnNs) GetMetricTags() []*PatternFlowTcpEcnNsMetricTag { +func (x *PatternFlowIpv6FlowLabel) GetMetricTags() []*PatternFlowIpv6FlowLabelMetricTag { if x != nil { return x.MetricTags } @@ -62567,7 +61731,7 @@ func (x *PatternFlowTcpEcnNs) GetMetricTags() []*PatternFlowTcpEcnNsMetricTag { } // integer counter pattern -type PatternFlowTcpEcnCwrCounter struct { +type PatternFlowIpv6PayloadLengthCounter struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields @@ -62583,23 +61747,23 @@ type PatternFlowTcpEcnCwrCounter struct { Count *uint32 `protobuf:"varint,3,opt,name=count,proto3,oneof" json:"count,omitempty"` } -func (x *PatternFlowTcpEcnCwrCounter) Reset() { - *x = PatternFlowTcpEcnCwrCounter{} +func (x *PatternFlowIpv6PayloadLengthCounter) Reset() { + *x = PatternFlowIpv6PayloadLengthCounter{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[526] + mi := &file_otg_proto_msgTypes[489] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowTcpEcnCwrCounter) String() string { +func (x *PatternFlowIpv6PayloadLengthCounter) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowTcpEcnCwrCounter) ProtoMessage() {} +func (*PatternFlowIpv6PayloadLengthCounter) ProtoMessage() {} -func (x *PatternFlowTcpEcnCwrCounter) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[526] +func (x *PatternFlowIpv6PayloadLengthCounter) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[489] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -62610,26 +61774,26 @@ func (x *PatternFlowTcpEcnCwrCounter) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use PatternFlowTcpEcnCwrCounter.ProtoReflect.Descriptor instead. -func (*PatternFlowTcpEcnCwrCounter) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{526} +// Deprecated: Use PatternFlowIpv6PayloadLengthCounter.ProtoReflect.Descriptor instead. +func (*PatternFlowIpv6PayloadLengthCounter) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{489} } -func (x *PatternFlowTcpEcnCwrCounter) GetStart() uint32 { +func (x *PatternFlowIpv6PayloadLengthCounter) GetStart() uint32 { if x != nil && x.Start != nil { return *x.Start } return 0 } -func (x *PatternFlowTcpEcnCwrCounter) GetStep() uint32 { +func (x *PatternFlowIpv6PayloadLengthCounter) GetStep() uint32 { if x != nil && x.Step != nil { return *x.Step } return 0 } -func (x *PatternFlowTcpEcnCwrCounter) GetCount() uint32 { +func (x *PatternFlowIpv6PayloadLengthCounter) GetCount() uint32 { if x != nil && x.Count != nil { return *x.Count } @@ -62639,7 +61803,7 @@ func (x *PatternFlowTcpEcnCwrCounter) GetCount() uint32 { // Metric tag can be used to enable tracking portion of or all bits in a corresponding // header field for metrics per each applicable value. These would appear as tagged // metrics in corresponding flow metrics. -type PatternFlowTcpEcnCwrMetricTag struct { +type PatternFlowIpv6PayloadLengthMetricTag struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields @@ -62653,27 +61817,27 @@ type PatternFlowTcpEcnCwrMetricTag struct { Offset *uint32 `protobuf:"varint,2,opt,name=offset,proto3,oneof" json:"offset,omitempty"` // Number of bits to track for metrics starting from configured offset of corresponding // header field - // default = 1 + // default = 16 Length *uint32 `protobuf:"varint,3,opt,name=length,proto3,oneof" json:"length,omitempty"` } -func (x *PatternFlowTcpEcnCwrMetricTag) Reset() { - *x = PatternFlowTcpEcnCwrMetricTag{} +func (x *PatternFlowIpv6PayloadLengthMetricTag) Reset() { + *x = PatternFlowIpv6PayloadLengthMetricTag{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[527] + mi := &file_otg_proto_msgTypes[490] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowTcpEcnCwrMetricTag) String() string { +func (x *PatternFlowIpv6PayloadLengthMetricTag) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowTcpEcnCwrMetricTag) ProtoMessage() {} +func (*PatternFlowIpv6PayloadLengthMetricTag) ProtoMessage() {} -func (x *PatternFlowTcpEcnCwrMetricTag) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[527] +func (x *PatternFlowIpv6PayloadLengthMetricTag) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[490] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -62684,74 +61848,79 @@ func (x *PatternFlowTcpEcnCwrMetricTag) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use PatternFlowTcpEcnCwrMetricTag.ProtoReflect.Descriptor instead. -func (*PatternFlowTcpEcnCwrMetricTag) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{527} +// Deprecated: Use PatternFlowIpv6PayloadLengthMetricTag.ProtoReflect.Descriptor instead. +func (*PatternFlowIpv6PayloadLengthMetricTag) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{490} } -func (x *PatternFlowTcpEcnCwrMetricTag) GetName() string { +func (x *PatternFlowIpv6PayloadLengthMetricTag) GetName() string { if x != nil && x.Name != nil { return *x.Name } return "" } -func (x *PatternFlowTcpEcnCwrMetricTag) GetOffset() uint32 { +func (x *PatternFlowIpv6PayloadLengthMetricTag) GetOffset() uint32 { if x != nil && x.Offset != nil { return *x.Offset } return 0 } -func (x *PatternFlowTcpEcnCwrMetricTag) GetLength() uint32 { +func (x *PatternFlowIpv6PayloadLengthMetricTag) GetLength() uint32 { if x != nil && x.Length != nil { return *x.Length } return 0 } -// Explicit congestion notification, congestion window reduced. -type PatternFlowTcpEcnCwr struct { +// Payload length +type PatternFlowIpv6PayloadLength struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // Description missing in models - // default = Choice.Enum.value - Choice *PatternFlowTcpEcnCwr_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.PatternFlowTcpEcnCwr_Choice_Enum,oneof" json:"choice,omitempty"` + // default = Choice.Enum.auto + Choice *PatternFlowIpv6PayloadLength_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.PatternFlowIpv6PayloadLength_Choice_Enum,oneof" json:"choice,omitempty"` // Description missing in models // default = 0 Value *uint32 `protobuf:"varint,2,opt,name=value,proto3,oneof" json:"value,omitempty"` // Description missing in models // default = [0] Values []uint32 `protobuf:"varint,3,rep,packed,name=values,proto3" json:"values,omitempty"` + // The OTG implementation can provide a system generated + // value for this property. If the OTG is unable to generate a value + // the default value must be used. + // default = 0 + Auto *uint32 `protobuf:"varint,4,opt,name=auto,proto3,oneof" json:"auto,omitempty"` // Description missing in models - Increment *PatternFlowTcpEcnCwrCounter `protobuf:"bytes,5,opt,name=increment,proto3" json:"increment,omitempty"` + Increment *PatternFlowIpv6PayloadLengthCounter `protobuf:"bytes,6,opt,name=increment,proto3" json:"increment,omitempty"` // Description missing in models - Decrement *PatternFlowTcpEcnCwrCounter `protobuf:"bytes,6,opt,name=decrement,proto3" json:"decrement,omitempty"` + Decrement *PatternFlowIpv6PayloadLengthCounter `protobuf:"bytes,7,opt,name=decrement,proto3" json:"decrement,omitempty"` // One or more metric tags can be used to enable tracking portion of or all bits in // a corresponding header field for metrics per each applicable value. These would appear // as tagged metrics in corresponding flow metrics. - MetricTags []*PatternFlowTcpEcnCwrMetricTag `protobuf:"bytes,7,rep,name=metric_tags,json=metricTags,proto3" json:"metric_tags,omitempty"` + MetricTags []*PatternFlowIpv6PayloadLengthMetricTag `protobuf:"bytes,8,rep,name=metric_tags,json=metricTags,proto3" json:"metric_tags,omitempty"` } -func (x *PatternFlowTcpEcnCwr) Reset() { - *x = PatternFlowTcpEcnCwr{} +func (x *PatternFlowIpv6PayloadLength) Reset() { + *x = PatternFlowIpv6PayloadLength{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[528] + mi := &file_otg_proto_msgTypes[491] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowTcpEcnCwr) String() string { +func (x *PatternFlowIpv6PayloadLength) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowTcpEcnCwr) ProtoMessage() {} +func (*PatternFlowIpv6PayloadLength) ProtoMessage() {} -func (x *PatternFlowTcpEcnCwr) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[528] +func (x *PatternFlowIpv6PayloadLength) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[491] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -62762,47 +61931,54 @@ func (x *PatternFlowTcpEcnCwr) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use PatternFlowTcpEcnCwr.ProtoReflect.Descriptor instead. -func (*PatternFlowTcpEcnCwr) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{528} +// Deprecated: Use PatternFlowIpv6PayloadLength.ProtoReflect.Descriptor instead. +func (*PatternFlowIpv6PayloadLength) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{491} } -func (x *PatternFlowTcpEcnCwr) GetChoice() PatternFlowTcpEcnCwr_Choice_Enum { +func (x *PatternFlowIpv6PayloadLength) GetChoice() PatternFlowIpv6PayloadLength_Choice_Enum { if x != nil && x.Choice != nil { return *x.Choice } - return PatternFlowTcpEcnCwr_Choice_unspecified + return PatternFlowIpv6PayloadLength_Choice_unspecified } -func (x *PatternFlowTcpEcnCwr) GetValue() uint32 { +func (x *PatternFlowIpv6PayloadLength) GetValue() uint32 { if x != nil && x.Value != nil { return *x.Value } return 0 } -func (x *PatternFlowTcpEcnCwr) GetValues() []uint32 { +func (x *PatternFlowIpv6PayloadLength) GetValues() []uint32 { if x != nil { return x.Values } return nil } -func (x *PatternFlowTcpEcnCwr) GetIncrement() *PatternFlowTcpEcnCwrCounter { +func (x *PatternFlowIpv6PayloadLength) GetAuto() uint32 { + if x != nil && x.Auto != nil { + return *x.Auto + } + return 0 +} + +func (x *PatternFlowIpv6PayloadLength) GetIncrement() *PatternFlowIpv6PayloadLengthCounter { if x != nil { return x.Increment } return nil } -func (x *PatternFlowTcpEcnCwr) GetDecrement() *PatternFlowTcpEcnCwrCounter { +func (x *PatternFlowIpv6PayloadLength) GetDecrement() *PatternFlowIpv6PayloadLengthCounter { if x != nil { return x.Decrement } return nil } -func (x *PatternFlowTcpEcnCwr) GetMetricTags() []*PatternFlowTcpEcnCwrMetricTag { +func (x *PatternFlowIpv6PayloadLength) GetMetricTags() []*PatternFlowIpv6PayloadLengthMetricTag { if x != nil { return x.MetricTags } @@ -62810,13 +61986,13 @@ func (x *PatternFlowTcpEcnCwr) GetMetricTags() []*PatternFlowTcpEcnCwrMetricTag } // integer counter pattern -type PatternFlowTcpEcnEchoCounter struct { +type PatternFlowIpv6NextHeaderCounter struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // Description missing in models - // default = 0 + // default = 59 Start *uint32 `protobuf:"varint,1,opt,name=start,proto3,oneof" json:"start,omitempty"` // Description missing in models // default = 1 @@ -62826,23 +62002,23 @@ type PatternFlowTcpEcnEchoCounter struct { Count *uint32 `protobuf:"varint,3,opt,name=count,proto3,oneof" json:"count,omitempty"` } -func (x *PatternFlowTcpEcnEchoCounter) Reset() { - *x = PatternFlowTcpEcnEchoCounter{} +func (x *PatternFlowIpv6NextHeaderCounter) Reset() { + *x = PatternFlowIpv6NextHeaderCounter{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[529] + mi := &file_otg_proto_msgTypes[492] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowTcpEcnEchoCounter) String() string { +func (x *PatternFlowIpv6NextHeaderCounter) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowTcpEcnEchoCounter) ProtoMessage() {} +func (*PatternFlowIpv6NextHeaderCounter) ProtoMessage() {} -func (x *PatternFlowTcpEcnEchoCounter) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[529] +func (x *PatternFlowIpv6NextHeaderCounter) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[492] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -62853,26 +62029,26 @@ func (x *PatternFlowTcpEcnEchoCounter) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use PatternFlowTcpEcnEchoCounter.ProtoReflect.Descriptor instead. -func (*PatternFlowTcpEcnEchoCounter) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{529} +// Deprecated: Use PatternFlowIpv6NextHeaderCounter.ProtoReflect.Descriptor instead. +func (*PatternFlowIpv6NextHeaderCounter) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{492} } -func (x *PatternFlowTcpEcnEchoCounter) GetStart() uint32 { +func (x *PatternFlowIpv6NextHeaderCounter) GetStart() uint32 { if x != nil && x.Start != nil { return *x.Start } return 0 } -func (x *PatternFlowTcpEcnEchoCounter) GetStep() uint32 { +func (x *PatternFlowIpv6NextHeaderCounter) GetStep() uint32 { if x != nil && x.Step != nil { return *x.Step } return 0 } -func (x *PatternFlowTcpEcnEchoCounter) GetCount() uint32 { +func (x *PatternFlowIpv6NextHeaderCounter) GetCount() uint32 { if x != nil && x.Count != nil { return *x.Count } @@ -62882,7 +62058,7 @@ func (x *PatternFlowTcpEcnEchoCounter) GetCount() uint32 { // Metric tag can be used to enable tracking portion of or all bits in a corresponding // header field for metrics per each applicable value. These would appear as tagged // metrics in corresponding flow metrics. -type PatternFlowTcpEcnEchoMetricTag struct { +type PatternFlowIpv6NextHeaderMetricTag struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields @@ -62896,27 +62072,27 @@ type PatternFlowTcpEcnEchoMetricTag struct { Offset *uint32 `protobuf:"varint,2,opt,name=offset,proto3,oneof" json:"offset,omitempty"` // Number of bits to track for metrics starting from configured offset of corresponding // header field - // default = 1 + // default = 8 Length *uint32 `protobuf:"varint,3,opt,name=length,proto3,oneof" json:"length,omitempty"` } -func (x *PatternFlowTcpEcnEchoMetricTag) Reset() { - *x = PatternFlowTcpEcnEchoMetricTag{} +func (x *PatternFlowIpv6NextHeaderMetricTag) Reset() { + *x = PatternFlowIpv6NextHeaderMetricTag{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[530] + mi := &file_otg_proto_msgTypes[493] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowTcpEcnEchoMetricTag) String() string { +func (x *PatternFlowIpv6NextHeaderMetricTag) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowTcpEcnEchoMetricTag) ProtoMessage() {} +func (*PatternFlowIpv6NextHeaderMetricTag) ProtoMessage() {} -func (x *PatternFlowTcpEcnEchoMetricTag) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[530] +func (x *PatternFlowIpv6NextHeaderMetricTag) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[493] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -62927,75 +62103,79 @@ func (x *PatternFlowTcpEcnEchoMetricTag) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use PatternFlowTcpEcnEchoMetricTag.ProtoReflect.Descriptor instead. -func (*PatternFlowTcpEcnEchoMetricTag) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{530} +// Deprecated: Use PatternFlowIpv6NextHeaderMetricTag.ProtoReflect.Descriptor instead. +func (*PatternFlowIpv6NextHeaderMetricTag) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{493} } -func (x *PatternFlowTcpEcnEchoMetricTag) GetName() string { +func (x *PatternFlowIpv6NextHeaderMetricTag) GetName() string { if x != nil && x.Name != nil { return *x.Name } return "" } -func (x *PatternFlowTcpEcnEchoMetricTag) GetOffset() uint32 { +func (x *PatternFlowIpv6NextHeaderMetricTag) GetOffset() uint32 { if x != nil && x.Offset != nil { return *x.Offset } return 0 } -func (x *PatternFlowTcpEcnEchoMetricTag) GetLength() uint32 { +func (x *PatternFlowIpv6NextHeaderMetricTag) GetLength() uint32 { if x != nil && x.Length != nil { return *x.Length } return 0 } -// Explicit congestion notification, echo. 1 indicates the peer is ecn capable. 0 indicates -// that a packet with ipv4.ecn = 11 in the ip header was received during normal transmission. -type PatternFlowTcpEcnEcho struct { +// Next header +type PatternFlowIpv6NextHeader struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // Description missing in models - // default = Choice.Enum.value - Choice *PatternFlowTcpEcnEcho_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.PatternFlowTcpEcnEcho_Choice_Enum,oneof" json:"choice,omitempty"` + // default = Choice.Enum.auto + Choice *PatternFlowIpv6NextHeader_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.PatternFlowIpv6NextHeader_Choice_Enum,oneof" json:"choice,omitempty"` // Description missing in models - // default = 0 + // default = 59 Value *uint32 `protobuf:"varint,2,opt,name=value,proto3,oneof" json:"value,omitempty"` // Description missing in models - // default = [0] + // default = [59] Values []uint32 `protobuf:"varint,3,rep,packed,name=values,proto3" json:"values,omitempty"` + // The OTG implementation can provide a system generated + // value for this property. If the OTG is unable to generate a value + // the default value must be used. + // default = 59 + Auto *uint32 `protobuf:"varint,4,opt,name=auto,proto3,oneof" json:"auto,omitempty"` // Description missing in models - Increment *PatternFlowTcpEcnEchoCounter `protobuf:"bytes,5,opt,name=increment,proto3" json:"increment,omitempty"` + Increment *PatternFlowIpv6NextHeaderCounter `protobuf:"bytes,6,opt,name=increment,proto3" json:"increment,omitempty"` // Description missing in models - Decrement *PatternFlowTcpEcnEchoCounter `protobuf:"bytes,6,opt,name=decrement,proto3" json:"decrement,omitempty"` + Decrement *PatternFlowIpv6NextHeaderCounter `protobuf:"bytes,7,opt,name=decrement,proto3" json:"decrement,omitempty"` // One or more metric tags can be used to enable tracking portion of or all bits in // a corresponding header field for metrics per each applicable value. These would appear // as tagged metrics in corresponding flow metrics. - MetricTags []*PatternFlowTcpEcnEchoMetricTag `protobuf:"bytes,7,rep,name=metric_tags,json=metricTags,proto3" json:"metric_tags,omitempty"` + MetricTags []*PatternFlowIpv6NextHeaderMetricTag `protobuf:"bytes,8,rep,name=metric_tags,json=metricTags,proto3" json:"metric_tags,omitempty"` } -func (x *PatternFlowTcpEcnEcho) Reset() { - *x = PatternFlowTcpEcnEcho{} +func (x *PatternFlowIpv6NextHeader) Reset() { + *x = PatternFlowIpv6NextHeader{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[531] + mi := &file_otg_proto_msgTypes[494] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowTcpEcnEcho) String() string { +func (x *PatternFlowIpv6NextHeader) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowTcpEcnEcho) ProtoMessage() {} +func (*PatternFlowIpv6NextHeader) ProtoMessage() {} -func (x *PatternFlowTcpEcnEcho) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[531] +func (x *PatternFlowIpv6NextHeader) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[494] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -63006,47 +62186,54 @@ func (x *PatternFlowTcpEcnEcho) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use PatternFlowTcpEcnEcho.ProtoReflect.Descriptor instead. -func (*PatternFlowTcpEcnEcho) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{531} +// Deprecated: Use PatternFlowIpv6NextHeader.ProtoReflect.Descriptor instead. +func (*PatternFlowIpv6NextHeader) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{494} } -func (x *PatternFlowTcpEcnEcho) GetChoice() PatternFlowTcpEcnEcho_Choice_Enum { +func (x *PatternFlowIpv6NextHeader) GetChoice() PatternFlowIpv6NextHeader_Choice_Enum { if x != nil && x.Choice != nil { return *x.Choice } - return PatternFlowTcpEcnEcho_Choice_unspecified + return PatternFlowIpv6NextHeader_Choice_unspecified } -func (x *PatternFlowTcpEcnEcho) GetValue() uint32 { +func (x *PatternFlowIpv6NextHeader) GetValue() uint32 { if x != nil && x.Value != nil { return *x.Value } return 0 } -func (x *PatternFlowTcpEcnEcho) GetValues() []uint32 { +func (x *PatternFlowIpv6NextHeader) GetValues() []uint32 { if x != nil { return x.Values } return nil } -func (x *PatternFlowTcpEcnEcho) GetIncrement() *PatternFlowTcpEcnEchoCounter { +func (x *PatternFlowIpv6NextHeader) GetAuto() uint32 { + if x != nil && x.Auto != nil { + return *x.Auto + } + return 0 +} + +func (x *PatternFlowIpv6NextHeader) GetIncrement() *PatternFlowIpv6NextHeaderCounter { if x != nil { return x.Increment } return nil } -func (x *PatternFlowTcpEcnEcho) GetDecrement() *PatternFlowTcpEcnEchoCounter { +func (x *PatternFlowIpv6NextHeader) GetDecrement() *PatternFlowIpv6NextHeaderCounter { if x != nil { return x.Decrement } return nil } -func (x *PatternFlowTcpEcnEcho) GetMetricTags() []*PatternFlowTcpEcnEchoMetricTag { +func (x *PatternFlowIpv6NextHeader) GetMetricTags() []*PatternFlowIpv6NextHeaderMetricTag { if x != nil { return x.MetricTags } @@ -63054,13 +62241,13 @@ func (x *PatternFlowTcpEcnEcho) GetMetricTags() []*PatternFlowTcpEcnEchoMetricTa } // integer counter pattern -type PatternFlowTcpCtlUrgCounter struct { +type PatternFlowIpv6HopLimitCounter struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // Description missing in models - // default = 0 + // default = 64 Start *uint32 `protobuf:"varint,1,opt,name=start,proto3,oneof" json:"start,omitempty"` // Description missing in models // default = 1 @@ -63070,23 +62257,23 @@ type PatternFlowTcpCtlUrgCounter struct { Count *uint32 `protobuf:"varint,3,opt,name=count,proto3,oneof" json:"count,omitempty"` } -func (x *PatternFlowTcpCtlUrgCounter) Reset() { - *x = PatternFlowTcpCtlUrgCounter{} +func (x *PatternFlowIpv6HopLimitCounter) Reset() { + *x = PatternFlowIpv6HopLimitCounter{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[532] + mi := &file_otg_proto_msgTypes[495] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowTcpCtlUrgCounter) String() string { +func (x *PatternFlowIpv6HopLimitCounter) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowTcpCtlUrgCounter) ProtoMessage() {} +func (*PatternFlowIpv6HopLimitCounter) ProtoMessage() {} -func (x *PatternFlowTcpCtlUrgCounter) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[532] +func (x *PatternFlowIpv6HopLimitCounter) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[495] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -63097,26 +62284,26 @@ func (x *PatternFlowTcpCtlUrgCounter) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use PatternFlowTcpCtlUrgCounter.ProtoReflect.Descriptor instead. -func (*PatternFlowTcpCtlUrgCounter) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{532} +// Deprecated: Use PatternFlowIpv6HopLimitCounter.ProtoReflect.Descriptor instead. +func (*PatternFlowIpv6HopLimitCounter) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{495} } -func (x *PatternFlowTcpCtlUrgCounter) GetStart() uint32 { +func (x *PatternFlowIpv6HopLimitCounter) GetStart() uint32 { if x != nil && x.Start != nil { return *x.Start } return 0 } -func (x *PatternFlowTcpCtlUrgCounter) GetStep() uint32 { +func (x *PatternFlowIpv6HopLimitCounter) GetStep() uint32 { if x != nil && x.Step != nil { return *x.Step } return 0 } -func (x *PatternFlowTcpCtlUrgCounter) GetCount() uint32 { +func (x *PatternFlowIpv6HopLimitCounter) GetCount() uint32 { if x != nil && x.Count != nil { return *x.Count } @@ -63126,7 +62313,7 @@ func (x *PatternFlowTcpCtlUrgCounter) GetCount() uint32 { // Metric tag can be used to enable tracking portion of or all bits in a corresponding // header field for metrics per each applicable value. These would appear as tagged // metrics in corresponding flow metrics. -type PatternFlowTcpCtlUrgMetricTag struct { +type PatternFlowIpv6HopLimitMetricTag struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields @@ -63140,27 +62327,27 @@ type PatternFlowTcpCtlUrgMetricTag struct { Offset *uint32 `protobuf:"varint,2,opt,name=offset,proto3,oneof" json:"offset,omitempty"` // Number of bits to track for metrics starting from configured offset of corresponding // header field - // default = 1 + // default = 8 Length *uint32 `protobuf:"varint,3,opt,name=length,proto3,oneof" json:"length,omitempty"` } -func (x *PatternFlowTcpCtlUrgMetricTag) Reset() { - *x = PatternFlowTcpCtlUrgMetricTag{} +func (x *PatternFlowIpv6HopLimitMetricTag) Reset() { + *x = PatternFlowIpv6HopLimitMetricTag{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[533] + mi := &file_otg_proto_msgTypes[496] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowTcpCtlUrgMetricTag) String() string { +func (x *PatternFlowIpv6HopLimitMetricTag) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowTcpCtlUrgMetricTag) ProtoMessage() {} +func (*PatternFlowIpv6HopLimitMetricTag) ProtoMessage() {} -func (x *PatternFlowTcpCtlUrgMetricTag) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[533] +func (x *PatternFlowIpv6HopLimitMetricTag) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[496] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -63171,74 +62358,74 @@ func (x *PatternFlowTcpCtlUrgMetricTag) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use PatternFlowTcpCtlUrgMetricTag.ProtoReflect.Descriptor instead. -func (*PatternFlowTcpCtlUrgMetricTag) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{533} +// Deprecated: Use PatternFlowIpv6HopLimitMetricTag.ProtoReflect.Descriptor instead. +func (*PatternFlowIpv6HopLimitMetricTag) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{496} } -func (x *PatternFlowTcpCtlUrgMetricTag) GetName() string { +func (x *PatternFlowIpv6HopLimitMetricTag) GetName() string { if x != nil && x.Name != nil { return *x.Name } return "" } -func (x *PatternFlowTcpCtlUrgMetricTag) GetOffset() uint32 { +func (x *PatternFlowIpv6HopLimitMetricTag) GetOffset() uint32 { if x != nil && x.Offset != nil { return *x.Offset } return 0 } -func (x *PatternFlowTcpCtlUrgMetricTag) GetLength() uint32 { +func (x *PatternFlowIpv6HopLimitMetricTag) GetLength() uint32 { if x != nil && x.Length != nil { return *x.Length } return 0 } -// A value of 1 indicates that the urgent pointer field is significant. -type PatternFlowTcpCtlUrg struct { +// Hop limit +type PatternFlowIpv6HopLimit struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // Description missing in models // default = Choice.Enum.value - Choice *PatternFlowTcpCtlUrg_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.PatternFlowTcpCtlUrg_Choice_Enum,oneof" json:"choice,omitempty"` + Choice *PatternFlowIpv6HopLimit_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.PatternFlowIpv6HopLimit_Choice_Enum,oneof" json:"choice,omitempty"` // Description missing in models - // default = 0 + // default = 64 Value *uint32 `protobuf:"varint,2,opt,name=value,proto3,oneof" json:"value,omitempty"` // Description missing in models - // default = [0] + // default = [64] Values []uint32 `protobuf:"varint,3,rep,packed,name=values,proto3" json:"values,omitempty"` // Description missing in models - Increment *PatternFlowTcpCtlUrgCounter `protobuf:"bytes,5,opt,name=increment,proto3" json:"increment,omitempty"` + Increment *PatternFlowIpv6HopLimitCounter `protobuf:"bytes,5,opt,name=increment,proto3" json:"increment,omitempty"` // Description missing in models - Decrement *PatternFlowTcpCtlUrgCounter `protobuf:"bytes,6,opt,name=decrement,proto3" json:"decrement,omitempty"` + Decrement *PatternFlowIpv6HopLimitCounter `protobuf:"bytes,6,opt,name=decrement,proto3" json:"decrement,omitempty"` // One or more metric tags can be used to enable tracking portion of or all bits in // a corresponding header field for metrics per each applicable value. These would appear // as tagged metrics in corresponding flow metrics. - MetricTags []*PatternFlowTcpCtlUrgMetricTag `protobuf:"bytes,7,rep,name=metric_tags,json=metricTags,proto3" json:"metric_tags,omitempty"` + MetricTags []*PatternFlowIpv6HopLimitMetricTag `protobuf:"bytes,7,rep,name=metric_tags,json=metricTags,proto3" json:"metric_tags,omitempty"` } -func (x *PatternFlowTcpCtlUrg) Reset() { - *x = PatternFlowTcpCtlUrg{} +func (x *PatternFlowIpv6HopLimit) Reset() { + *x = PatternFlowIpv6HopLimit{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[534] + mi := &file_otg_proto_msgTypes[497] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowTcpCtlUrg) String() string { +func (x *PatternFlowIpv6HopLimit) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowTcpCtlUrg) ProtoMessage() {} +func (*PatternFlowIpv6HopLimit) ProtoMessage() {} -func (x *PatternFlowTcpCtlUrg) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[534] +func (x *PatternFlowIpv6HopLimit) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[497] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -63249,87 +62436,87 @@ func (x *PatternFlowTcpCtlUrg) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use PatternFlowTcpCtlUrg.ProtoReflect.Descriptor instead. -func (*PatternFlowTcpCtlUrg) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{534} +// Deprecated: Use PatternFlowIpv6HopLimit.ProtoReflect.Descriptor instead. +func (*PatternFlowIpv6HopLimit) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{497} } -func (x *PatternFlowTcpCtlUrg) GetChoice() PatternFlowTcpCtlUrg_Choice_Enum { +func (x *PatternFlowIpv6HopLimit) GetChoice() PatternFlowIpv6HopLimit_Choice_Enum { if x != nil && x.Choice != nil { return *x.Choice } - return PatternFlowTcpCtlUrg_Choice_unspecified + return PatternFlowIpv6HopLimit_Choice_unspecified } -func (x *PatternFlowTcpCtlUrg) GetValue() uint32 { +func (x *PatternFlowIpv6HopLimit) GetValue() uint32 { if x != nil && x.Value != nil { return *x.Value } return 0 } -func (x *PatternFlowTcpCtlUrg) GetValues() []uint32 { +func (x *PatternFlowIpv6HopLimit) GetValues() []uint32 { if x != nil { return x.Values } return nil } -func (x *PatternFlowTcpCtlUrg) GetIncrement() *PatternFlowTcpCtlUrgCounter { +func (x *PatternFlowIpv6HopLimit) GetIncrement() *PatternFlowIpv6HopLimitCounter { if x != nil { return x.Increment } return nil } -func (x *PatternFlowTcpCtlUrg) GetDecrement() *PatternFlowTcpCtlUrgCounter { +func (x *PatternFlowIpv6HopLimit) GetDecrement() *PatternFlowIpv6HopLimitCounter { if x != nil { return x.Decrement } return nil } -func (x *PatternFlowTcpCtlUrg) GetMetricTags() []*PatternFlowTcpCtlUrgMetricTag { +func (x *PatternFlowIpv6HopLimit) GetMetricTags() []*PatternFlowIpv6HopLimitMetricTag { if x != nil { return x.MetricTags } return nil } -// integer counter pattern -type PatternFlowTcpCtlAckCounter struct { +// ipv6 counter pattern +type PatternFlowIpv6SrcCounter struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // Description missing in models - // default = 0 - Start *uint32 `protobuf:"varint,1,opt,name=start,proto3,oneof" json:"start,omitempty"` + // default = ::0 + Start *string `protobuf:"bytes,1,opt,name=start,proto3,oneof" json:"start,omitempty"` // Description missing in models - // default = 1 - Step *uint32 `protobuf:"varint,2,opt,name=step,proto3,oneof" json:"step,omitempty"` + // default = ::1 + Step *string `protobuf:"bytes,2,opt,name=step,proto3,oneof" json:"step,omitempty"` // Description missing in models // default = 1 Count *uint32 `protobuf:"varint,3,opt,name=count,proto3,oneof" json:"count,omitempty"` } -func (x *PatternFlowTcpCtlAckCounter) Reset() { - *x = PatternFlowTcpCtlAckCounter{} +func (x *PatternFlowIpv6SrcCounter) Reset() { + *x = PatternFlowIpv6SrcCounter{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[535] + mi := &file_otg_proto_msgTypes[498] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowTcpCtlAckCounter) String() string { +func (x *PatternFlowIpv6SrcCounter) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowTcpCtlAckCounter) ProtoMessage() {} +func (*PatternFlowIpv6SrcCounter) ProtoMessage() {} -func (x *PatternFlowTcpCtlAckCounter) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[535] +func (x *PatternFlowIpv6SrcCounter) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[498] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -63340,26 +62527,26 @@ func (x *PatternFlowTcpCtlAckCounter) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use PatternFlowTcpCtlAckCounter.ProtoReflect.Descriptor instead. -func (*PatternFlowTcpCtlAckCounter) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{535} +// Deprecated: Use PatternFlowIpv6SrcCounter.ProtoReflect.Descriptor instead. +func (*PatternFlowIpv6SrcCounter) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{498} } -func (x *PatternFlowTcpCtlAckCounter) GetStart() uint32 { +func (x *PatternFlowIpv6SrcCounter) GetStart() string { if x != nil && x.Start != nil { return *x.Start } - return 0 + return "" } -func (x *PatternFlowTcpCtlAckCounter) GetStep() uint32 { +func (x *PatternFlowIpv6SrcCounter) GetStep() string { if x != nil && x.Step != nil { return *x.Step } - return 0 + return "" } -func (x *PatternFlowTcpCtlAckCounter) GetCount() uint32 { +func (x *PatternFlowIpv6SrcCounter) GetCount() uint32 { if x != nil && x.Count != nil { return *x.Count } @@ -63369,7 +62556,7 @@ func (x *PatternFlowTcpCtlAckCounter) GetCount() uint32 { // Metric tag can be used to enable tracking portion of or all bits in a corresponding // header field for metrics per each applicable value. These would appear as tagged // metrics in corresponding flow metrics. -type PatternFlowTcpCtlAckMetricTag struct { +type PatternFlowIpv6SrcMetricTag struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields @@ -63383,27 +62570,27 @@ type PatternFlowTcpCtlAckMetricTag struct { Offset *uint32 `protobuf:"varint,2,opt,name=offset,proto3,oneof" json:"offset,omitempty"` // Number of bits to track for metrics starting from configured offset of corresponding // header field - // default = 1 + // default = 128 Length *uint32 `protobuf:"varint,3,opt,name=length,proto3,oneof" json:"length,omitempty"` } -func (x *PatternFlowTcpCtlAckMetricTag) Reset() { - *x = PatternFlowTcpCtlAckMetricTag{} +func (x *PatternFlowIpv6SrcMetricTag) Reset() { + *x = PatternFlowIpv6SrcMetricTag{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[536] + mi := &file_otg_proto_msgTypes[499] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowTcpCtlAckMetricTag) String() string { +func (x *PatternFlowIpv6SrcMetricTag) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowTcpCtlAckMetricTag) ProtoMessage() {} +func (*PatternFlowIpv6SrcMetricTag) ProtoMessage() {} -func (x *PatternFlowTcpCtlAckMetricTag) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[536] +func (x *PatternFlowIpv6SrcMetricTag) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[499] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -63414,74 +62601,74 @@ func (x *PatternFlowTcpCtlAckMetricTag) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use PatternFlowTcpCtlAckMetricTag.ProtoReflect.Descriptor instead. -func (*PatternFlowTcpCtlAckMetricTag) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{536} +// Deprecated: Use PatternFlowIpv6SrcMetricTag.ProtoReflect.Descriptor instead. +func (*PatternFlowIpv6SrcMetricTag) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{499} } -func (x *PatternFlowTcpCtlAckMetricTag) GetName() string { +func (x *PatternFlowIpv6SrcMetricTag) GetName() string { if x != nil && x.Name != nil { return *x.Name } return "" } -func (x *PatternFlowTcpCtlAckMetricTag) GetOffset() uint32 { +func (x *PatternFlowIpv6SrcMetricTag) GetOffset() uint32 { if x != nil && x.Offset != nil { return *x.Offset } return 0 } -func (x *PatternFlowTcpCtlAckMetricTag) GetLength() uint32 { +func (x *PatternFlowIpv6SrcMetricTag) GetLength() uint32 { if x != nil && x.Length != nil { return *x.Length } return 0 } -// A value of 1 indicates that the ackknowledgment field is significant. -type PatternFlowTcpCtlAck struct { +// Source address +type PatternFlowIpv6Src struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // Description missing in models // default = Choice.Enum.value - Choice *PatternFlowTcpCtlAck_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.PatternFlowTcpCtlAck_Choice_Enum,oneof" json:"choice,omitempty"` + Choice *PatternFlowIpv6Src_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.PatternFlowIpv6Src_Choice_Enum,oneof" json:"choice,omitempty"` // Description missing in models - // default = 0 - Value *uint32 `protobuf:"varint,2,opt,name=value,proto3,oneof" json:"value,omitempty"` + // default = ::0 + Value *string `protobuf:"bytes,2,opt,name=value,proto3,oneof" json:"value,omitempty"` // Description missing in models - // default = [0] - Values []uint32 `protobuf:"varint,3,rep,packed,name=values,proto3" json:"values,omitempty"` + // default = ['::0'] + Values []string `protobuf:"bytes,3,rep,name=values,proto3" json:"values,omitempty"` // Description missing in models - Increment *PatternFlowTcpCtlAckCounter `protobuf:"bytes,5,opt,name=increment,proto3" json:"increment,omitempty"` + Increment *PatternFlowIpv6SrcCounter `protobuf:"bytes,5,opt,name=increment,proto3" json:"increment,omitempty"` // Description missing in models - Decrement *PatternFlowTcpCtlAckCounter `protobuf:"bytes,6,opt,name=decrement,proto3" json:"decrement,omitempty"` + Decrement *PatternFlowIpv6SrcCounter `protobuf:"bytes,6,opt,name=decrement,proto3" json:"decrement,omitempty"` // One or more metric tags can be used to enable tracking portion of or all bits in // a corresponding header field for metrics per each applicable value. These would appear // as tagged metrics in corresponding flow metrics. - MetricTags []*PatternFlowTcpCtlAckMetricTag `protobuf:"bytes,7,rep,name=metric_tags,json=metricTags,proto3" json:"metric_tags,omitempty"` + MetricTags []*PatternFlowIpv6SrcMetricTag `protobuf:"bytes,7,rep,name=metric_tags,json=metricTags,proto3" json:"metric_tags,omitempty"` } -func (x *PatternFlowTcpCtlAck) Reset() { - *x = PatternFlowTcpCtlAck{} +func (x *PatternFlowIpv6Src) Reset() { + *x = PatternFlowIpv6Src{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[537] + mi := &file_otg_proto_msgTypes[500] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowTcpCtlAck) String() string { +func (x *PatternFlowIpv6Src) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowTcpCtlAck) ProtoMessage() {} +func (*PatternFlowIpv6Src) ProtoMessage() {} -func (x *PatternFlowTcpCtlAck) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[537] +func (x *PatternFlowIpv6Src) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[500] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -63492,87 +62679,87 @@ func (x *PatternFlowTcpCtlAck) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use PatternFlowTcpCtlAck.ProtoReflect.Descriptor instead. -func (*PatternFlowTcpCtlAck) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{537} +// Deprecated: Use PatternFlowIpv6Src.ProtoReflect.Descriptor instead. +func (*PatternFlowIpv6Src) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{500} } -func (x *PatternFlowTcpCtlAck) GetChoice() PatternFlowTcpCtlAck_Choice_Enum { +func (x *PatternFlowIpv6Src) GetChoice() PatternFlowIpv6Src_Choice_Enum { if x != nil && x.Choice != nil { return *x.Choice } - return PatternFlowTcpCtlAck_Choice_unspecified + return PatternFlowIpv6Src_Choice_unspecified } -func (x *PatternFlowTcpCtlAck) GetValue() uint32 { +func (x *PatternFlowIpv6Src) GetValue() string { if x != nil && x.Value != nil { return *x.Value } - return 0 + return "" } -func (x *PatternFlowTcpCtlAck) GetValues() []uint32 { +func (x *PatternFlowIpv6Src) GetValues() []string { if x != nil { return x.Values } return nil } -func (x *PatternFlowTcpCtlAck) GetIncrement() *PatternFlowTcpCtlAckCounter { +func (x *PatternFlowIpv6Src) GetIncrement() *PatternFlowIpv6SrcCounter { if x != nil { return x.Increment } return nil } -func (x *PatternFlowTcpCtlAck) GetDecrement() *PatternFlowTcpCtlAckCounter { +func (x *PatternFlowIpv6Src) GetDecrement() *PatternFlowIpv6SrcCounter { if x != nil { return x.Decrement } return nil } -func (x *PatternFlowTcpCtlAck) GetMetricTags() []*PatternFlowTcpCtlAckMetricTag { +func (x *PatternFlowIpv6Src) GetMetricTags() []*PatternFlowIpv6SrcMetricTag { if x != nil { return x.MetricTags } return nil } -// integer counter pattern -type PatternFlowTcpCtlPshCounter struct { +// ipv6 counter pattern +type PatternFlowIpv6DstCounter struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // Description missing in models - // default = 0 - Start *uint32 `protobuf:"varint,1,opt,name=start,proto3,oneof" json:"start,omitempty"` + // default = ::0 + Start *string `protobuf:"bytes,1,opt,name=start,proto3,oneof" json:"start,omitempty"` // Description missing in models - // default = 1 - Step *uint32 `protobuf:"varint,2,opt,name=step,proto3,oneof" json:"step,omitempty"` + // default = ::1 + Step *string `protobuf:"bytes,2,opt,name=step,proto3,oneof" json:"step,omitempty"` // Description missing in models // default = 1 Count *uint32 `protobuf:"varint,3,opt,name=count,proto3,oneof" json:"count,omitempty"` } -func (x *PatternFlowTcpCtlPshCounter) Reset() { - *x = PatternFlowTcpCtlPshCounter{} +func (x *PatternFlowIpv6DstCounter) Reset() { + *x = PatternFlowIpv6DstCounter{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[538] + mi := &file_otg_proto_msgTypes[501] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowTcpCtlPshCounter) String() string { +func (x *PatternFlowIpv6DstCounter) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowTcpCtlPshCounter) ProtoMessage() {} +func (*PatternFlowIpv6DstCounter) ProtoMessage() {} -func (x *PatternFlowTcpCtlPshCounter) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[538] +func (x *PatternFlowIpv6DstCounter) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[501] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -63583,26 +62770,26 @@ func (x *PatternFlowTcpCtlPshCounter) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use PatternFlowTcpCtlPshCounter.ProtoReflect.Descriptor instead. -func (*PatternFlowTcpCtlPshCounter) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{538} +// Deprecated: Use PatternFlowIpv6DstCounter.ProtoReflect.Descriptor instead. +func (*PatternFlowIpv6DstCounter) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{501} } -func (x *PatternFlowTcpCtlPshCounter) GetStart() uint32 { +func (x *PatternFlowIpv6DstCounter) GetStart() string { if x != nil && x.Start != nil { return *x.Start } - return 0 + return "" } -func (x *PatternFlowTcpCtlPshCounter) GetStep() uint32 { +func (x *PatternFlowIpv6DstCounter) GetStep() string { if x != nil && x.Step != nil { return *x.Step } - return 0 + return "" } -func (x *PatternFlowTcpCtlPshCounter) GetCount() uint32 { +func (x *PatternFlowIpv6DstCounter) GetCount() uint32 { if x != nil && x.Count != nil { return *x.Count } @@ -63612,7 +62799,7 @@ func (x *PatternFlowTcpCtlPshCounter) GetCount() uint32 { // Metric tag can be used to enable tracking portion of or all bits in a corresponding // header field for metrics per each applicable value. These would appear as tagged // metrics in corresponding flow metrics. -type PatternFlowTcpCtlPshMetricTag struct { +type PatternFlowIpv6DstMetricTag struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields @@ -63626,27 +62813,27 @@ type PatternFlowTcpCtlPshMetricTag struct { Offset *uint32 `protobuf:"varint,2,opt,name=offset,proto3,oneof" json:"offset,omitempty"` // Number of bits to track for metrics starting from configured offset of corresponding // header field - // default = 1 + // default = 128 Length *uint32 `protobuf:"varint,3,opt,name=length,proto3,oneof" json:"length,omitempty"` } -func (x *PatternFlowTcpCtlPshMetricTag) Reset() { - *x = PatternFlowTcpCtlPshMetricTag{} +func (x *PatternFlowIpv6DstMetricTag) Reset() { + *x = PatternFlowIpv6DstMetricTag{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[539] + mi := &file_otg_proto_msgTypes[502] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowTcpCtlPshMetricTag) String() string { +func (x *PatternFlowIpv6DstMetricTag) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowTcpCtlPshMetricTag) ProtoMessage() {} +func (*PatternFlowIpv6DstMetricTag) ProtoMessage() {} -func (x *PatternFlowTcpCtlPshMetricTag) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[539] +func (x *PatternFlowIpv6DstMetricTag) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[502] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -63657,74 +62844,74 @@ func (x *PatternFlowTcpCtlPshMetricTag) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use PatternFlowTcpCtlPshMetricTag.ProtoReflect.Descriptor instead. -func (*PatternFlowTcpCtlPshMetricTag) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{539} +// Deprecated: Use PatternFlowIpv6DstMetricTag.ProtoReflect.Descriptor instead. +func (*PatternFlowIpv6DstMetricTag) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{502} } -func (x *PatternFlowTcpCtlPshMetricTag) GetName() string { +func (x *PatternFlowIpv6DstMetricTag) GetName() string { if x != nil && x.Name != nil { return *x.Name } return "" } -func (x *PatternFlowTcpCtlPshMetricTag) GetOffset() uint32 { +func (x *PatternFlowIpv6DstMetricTag) GetOffset() uint32 { if x != nil && x.Offset != nil { return *x.Offset } return 0 } -func (x *PatternFlowTcpCtlPshMetricTag) GetLength() uint32 { +func (x *PatternFlowIpv6DstMetricTag) GetLength() uint32 { if x != nil && x.Length != nil { return *x.Length } return 0 } -// Asks to push the buffered data to the receiving application. -type PatternFlowTcpCtlPsh struct { +// Destination address +type PatternFlowIpv6Dst struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // Description missing in models // default = Choice.Enum.value - Choice *PatternFlowTcpCtlPsh_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.PatternFlowTcpCtlPsh_Choice_Enum,oneof" json:"choice,omitempty"` + Choice *PatternFlowIpv6Dst_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.PatternFlowIpv6Dst_Choice_Enum,oneof" json:"choice,omitempty"` // Description missing in models - // default = 0 - Value *uint32 `protobuf:"varint,2,opt,name=value,proto3,oneof" json:"value,omitempty"` + // default = ::0 + Value *string `protobuf:"bytes,2,opt,name=value,proto3,oneof" json:"value,omitempty"` // Description missing in models - // default = [0] - Values []uint32 `protobuf:"varint,3,rep,packed,name=values,proto3" json:"values,omitempty"` + // default = ['::0'] + Values []string `protobuf:"bytes,3,rep,name=values,proto3" json:"values,omitempty"` // Description missing in models - Increment *PatternFlowTcpCtlPshCounter `protobuf:"bytes,5,opt,name=increment,proto3" json:"increment,omitempty"` + Increment *PatternFlowIpv6DstCounter `protobuf:"bytes,5,opt,name=increment,proto3" json:"increment,omitempty"` // Description missing in models - Decrement *PatternFlowTcpCtlPshCounter `protobuf:"bytes,6,opt,name=decrement,proto3" json:"decrement,omitempty"` + Decrement *PatternFlowIpv6DstCounter `protobuf:"bytes,6,opt,name=decrement,proto3" json:"decrement,omitempty"` // One or more metric tags can be used to enable tracking portion of or all bits in // a corresponding header field for metrics per each applicable value. These would appear // as tagged metrics in corresponding flow metrics. - MetricTags []*PatternFlowTcpCtlPshMetricTag `protobuf:"bytes,7,rep,name=metric_tags,json=metricTags,proto3" json:"metric_tags,omitempty"` + MetricTags []*PatternFlowIpv6DstMetricTag `protobuf:"bytes,7,rep,name=metric_tags,json=metricTags,proto3" json:"metric_tags,omitempty"` } -func (x *PatternFlowTcpCtlPsh) Reset() { - *x = PatternFlowTcpCtlPsh{} +func (x *PatternFlowIpv6Dst) Reset() { + *x = PatternFlowIpv6Dst{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[540] + mi := &file_otg_proto_msgTypes[503] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowTcpCtlPsh) String() string { +func (x *PatternFlowIpv6Dst) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowTcpCtlPsh) ProtoMessage() {} +func (*PatternFlowIpv6Dst) ProtoMessage() {} -func (x *PatternFlowTcpCtlPsh) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[540] +func (x *PatternFlowIpv6Dst) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[503] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -63735,87 +62922,87 @@ func (x *PatternFlowTcpCtlPsh) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use PatternFlowTcpCtlPsh.ProtoReflect.Descriptor instead. -func (*PatternFlowTcpCtlPsh) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{540} +// Deprecated: Use PatternFlowIpv6Dst.ProtoReflect.Descriptor instead. +func (*PatternFlowIpv6Dst) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{503} } -func (x *PatternFlowTcpCtlPsh) GetChoice() PatternFlowTcpCtlPsh_Choice_Enum { +func (x *PatternFlowIpv6Dst) GetChoice() PatternFlowIpv6Dst_Choice_Enum { if x != nil && x.Choice != nil { return *x.Choice } - return PatternFlowTcpCtlPsh_Choice_unspecified + return PatternFlowIpv6Dst_Choice_unspecified } -func (x *PatternFlowTcpCtlPsh) GetValue() uint32 { +func (x *PatternFlowIpv6Dst) GetValue() string { if x != nil && x.Value != nil { return *x.Value } - return 0 + return "" } -func (x *PatternFlowTcpCtlPsh) GetValues() []uint32 { +func (x *PatternFlowIpv6Dst) GetValues() []string { if x != nil { return x.Values } return nil } -func (x *PatternFlowTcpCtlPsh) GetIncrement() *PatternFlowTcpCtlPshCounter { +func (x *PatternFlowIpv6Dst) GetIncrement() *PatternFlowIpv6DstCounter { if x != nil { return x.Increment } return nil } -func (x *PatternFlowTcpCtlPsh) GetDecrement() *PatternFlowTcpCtlPshCounter { +func (x *PatternFlowIpv6Dst) GetDecrement() *PatternFlowIpv6DstCounter { if x != nil { return x.Decrement } return nil } -func (x *PatternFlowTcpCtlPsh) GetMetricTags() []*PatternFlowTcpCtlPshMetricTag { +func (x *PatternFlowIpv6Dst) GetMetricTags() []*PatternFlowIpv6DstMetricTag { if x != nil { return x.MetricTags } return nil } -// integer counter pattern -type PatternFlowTcpCtlRstCounter struct { +// mac counter pattern +type PatternFlowPfcPauseDstCounter struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // Description missing in models - // default = 0 - Start *uint32 `protobuf:"varint,1,opt,name=start,proto3,oneof" json:"start,omitempty"` + // default = 01:80:c2:00:00:01 + Start *string `protobuf:"bytes,1,opt,name=start,proto3,oneof" json:"start,omitempty"` // Description missing in models - // default = 1 - Step *uint32 `protobuf:"varint,2,opt,name=step,proto3,oneof" json:"step,omitempty"` + // default = 00:00:00:00:00:01 + Step *string `protobuf:"bytes,2,opt,name=step,proto3,oneof" json:"step,omitempty"` // Description missing in models // default = 1 Count *uint32 `protobuf:"varint,3,opt,name=count,proto3,oneof" json:"count,omitempty"` } -func (x *PatternFlowTcpCtlRstCounter) Reset() { - *x = PatternFlowTcpCtlRstCounter{} +func (x *PatternFlowPfcPauseDstCounter) Reset() { + *x = PatternFlowPfcPauseDstCounter{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[541] + mi := &file_otg_proto_msgTypes[504] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowTcpCtlRstCounter) String() string { +func (x *PatternFlowPfcPauseDstCounter) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowTcpCtlRstCounter) ProtoMessage() {} +func (*PatternFlowPfcPauseDstCounter) ProtoMessage() {} -func (x *PatternFlowTcpCtlRstCounter) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[541] +func (x *PatternFlowPfcPauseDstCounter) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[504] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -63826,26 +63013,26 @@ func (x *PatternFlowTcpCtlRstCounter) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use PatternFlowTcpCtlRstCounter.ProtoReflect.Descriptor instead. -func (*PatternFlowTcpCtlRstCounter) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{541} +// Deprecated: Use PatternFlowPfcPauseDstCounter.ProtoReflect.Descriptor instead. +func (*PatternFlowPfcPauseDstCounter) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{504} } -func (x *PatternFlowTcpCtlRstCounter) GetStart() uint32 { +func (x *PatternFlowPfcPauseDstCounter) GetStart() string { if x != nil && x.Start != nil { return *x.Start } - return 0 + return "" } -func (x *PatternFlowTcpCtlRstCounter) GetStep() uint32 { +func (x *PatternFlowPfcPauseDstCounter) GetStep() string { if x != nil && x.Step != nil { return *x.Step } - return 0 + return "" } -func (x *PatternFlowTcpCtlRstCounter) GetCount() uint32 { +func (x *PatternFlowPfcPauseDstCounter) GetCount() uint32 { if x != nil && x.Count != nil { return *x.Count } @@ -63855,7 +63042,7 @@ func (x *PatternFlowTcpCtlRstCounter) GetCount() uint32 { // Metric tag can be used to enable tracking portion of or all bits in a corresponding // header field for metrics per each applicable value. These would appear as tagged // metrics in corresponding flow metrics. -type PatternFlowTcpCtlRstMetricTag struct { +type PatternFlowPfcPauseDstMetricTag struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields @@ -63869,27 +63056,27 @@ type PatternFlowTcpCtlRstMetricTag struct { Offset *uint32 `protobuf:"varint,2,opt,name=offset,proto3,oneof" json:"offset,omitempty"` // Number of bits to track for metrics starting from configured offset of corresponding // header field - // default = 1 + // default = 48 Length *uint32 `protobuf:"varint,3,opt,name=length,proto3,oneof" json:"length,omitempty"` } -func (x *PatternFlowTcpCtlRstMetricTag) Reset() { - *x = PatternFlowTcpCtlRstMetricTag{} +func (x *PatternFlowPfcPauseDstMetricTag) Reset() { + *x = PatternFlowPfcPauseDstMetricTag{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[542] + mi := &file_otg_proto_msgTypes[505] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowTcpCtlRstMetricTag) String() string { +func (x *PatternFlowPfcPauseDstMetricTag) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowTcpCtlRstMetricTag) ProtoMessage() {} +func (*PatternFlowPfcPauseDstMetricTag) ProtoMessage() {} -func (x *PatternFlowTcpCtlRstMetricTag) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[542] +func (x *PatternFlowPfcPauseDstMetricTag) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[505] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -63900,74 +63087,74 @@ func (x *PatternFlowTcpCtlRstMetricTag) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use PatternFlowTcpCtlRstMetricTag.ProtoReflect.Descriptor instead. -func (*PatternFlowTcpCtlRstMetricTag) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{542} +// Deprecated: Use PatternFlowPfcPauseDstMetricTag.ProtoReflect.Descriptor instead. +func (*PatternFlowPfcPauseDstMetricTag) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{505} } -func (x *PatternFlowTcpCtlRstMetricTag) GetName() string { +func (x *PatternFlowPfcPauseDstMetricTag) GetName() string { if x != nil && x.Name != nil { return *x.Name } return "" } -func (x *PatternFlowTcpCtlRstMetricTag) GetOffset() uint32 { +func (x *PatternFlowPfcPauseDstMetricTag) GetOffset() uint32 { if x != nil && x.Offset != nil { return *x.Offset } return 0 } -func (x *PatternFlowTcpCtlRstMetricTag) GetLength() uint32 { +func (x *PatternFlowPfcPauseDstMetricTag) GetLength() uint32 { if x != nil && x.Length != nil { return *x.Length } return 0 } -// Reset the connection. -type PatternFlowTcpCtlRst struct { +// Destination MAC address +type PatternFlowPfcPauseDst struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // Description missing in models // default = Choice.Enum.value - Choice *PatternFlowTcpCtlRst_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.PatternFlowTcpCtlRst_Choice_Enum,oneof" json:"choice,omitempty"` + Choice *PatternFlowPfcPauseDst_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.PatternFlowPfcPauseDst_Choice_Enum,oneof" json:"choice,omitempty"` // Description missing in models - // default = 0 - Value *uint32 `protobuf:"varint,2,opt,name=value,proto3,oneof" json:"value,omitempty"` + // default = 01:80:c2:00:00:01 + Value *string `protobuf:"bytes,2,opt,name=value,proto3,oneof" json:"value,omitempty"` // Description missing in models - // default = [0] - Values []uint32 `protobuf:"varint,3,rep,packed,name=values,proto3" json:"values,omitempty"` + // default = ['01:80:c2:00:00:01'] + Values []string `protobuf:"bytes,3,rep,name=values,proto3" json:"values,omitempty"` // Description missing in models - Increment *PatternFlowTcpCtlRstCounter `protobuf:"bytes,5,opt,name=increment,proto3" json:"increment,omitempty"` + Increment *PatternFlowPfcPauseDstCounter `protobuf:"bytes,5,opt,name=increment,proto3" json:"increment,omitempty"` // Description missing in models - Decrement *PatternFlowTcpCtlRstCounter `protobuf:"bytes,6,opt,name=decrement,proto3" json:"decrement,omitempty"` + Decrement *PatternFlowPfcPauseDstCounter `protobuf:"bytes,6,opt,name=decrement,proto3" json:"decrement,omitempty"` // One or more metric tags can be used to enable tracking portion of or all bits in // a corresponding header field for metrics per each applicable value. These would appear // as tagged metrics in corresponding flow metrics. - MetricTags []*PatternFlowTcpCtlRstMetricTag `protobuf:"bytes,7,rep,name=metric_tags,json=metricTags,proto3" json:"metric_tags,omitempty"` + MetricTags []*PatternFlowPfcPauseDstMetricTag `protobuf:"bytes,7,rep,name=metric_tags,json=metricTags,proto3" json:"metric_tags,omitempty"` } -func (x *PatternFlowTcpCtlRst) Reset() { - *x = PatternFlowTcpCtlRst{} +func (x *PatternFlowPfcPauseDst) Reset() { + *x = PatternFlowPfcPauseDst{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[543] + mi := &file_otg_proto_msgTypes[506] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowTcpCtlRst) String() string { +func (x *PatternFlowPfcPauseDst) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowTcpCtlRst) ProtoMessage() {} +func (*PatternFlowPfcPauseDst) ProtoMessage() {} -func (x *PatternFlowTcpCtlRst) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[543] +func (x *PatternFlowPfcPauseDst) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[506] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -63978,87 +63165,87 @@ func (x *PatternFlowTcpCtlRst) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use PatternFlowTcpCtlRst.ProtoReflect.Descriptor instead. -func (*PatternFlowTcpCtlRst) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{543} +// Deprecated: Use PatternFlowPfcPauseDst.ProtoReflect.Descriptor instead. +func (*PatternFlowPfcPauseDst) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{506} } -func (x *PatternFlowTcpCtlRst) GetChoice() PatternFlowTcpCtlRst_Choice_Enum { +func (x *PatternFlowPfcPauseDst) GetChoice() PatternFlowPfcPauseDst_Choice_Enum { if x != nil && x.Choice != nil { return *x.Choice } - return PatternFlowTcpCtlRst_Choice_unspecified + return PatternFlowPfcPauseDst_Choice_unspecified } -func (x *PatternFlowTcpCtlRst) GetValue() uint32 { +func (x *PatternFlowPfcPauseDst) GetValue() string { if x != nil && x.Value != nil { return *x.Value } - return 0 + return "" } -func (x *PatternFlowTcpCtlRst) GetValues() []uint32 { +func (x *PatternFlowPfcPauseDst) GetValues() []string { if x != nil { return x.Values } return nil } -func (x *PatternFlowTcpCtlRst) GetIncrement() *PatternFlowTcpCtlRstCounter { +func (x *PatternFlowPfcPauseDst) GetIncrement() *PatternFlowPfcPauseDstCounter { if x != nil { return x.Increment } return nil } -func (x *PatternFlowTcpCtlRst) GetDecrement() *PatternFlowTcpCtlRstCounter { +func (x *PatternFlowPfcPauseDst) GetDecrement() *PatternFlowPfcPauseDstCounter { if x != nil { return x.Decrement } return nil } -func (x *PatternFlowTcpCtlRst) GetMetricTags() []*PatternFlowTcpCtlRstMetricTag { +func (x *PatternFlowPfcPauseDst) GetMetricTags() []*PatternFlowPfcPauseDstMetricTag { if x != nil { return x.MetricTags } return nil } -// integer counter pattern -type PatternFlowTcpCtlSynCounter struct { +// mac counter pattern +type PatternFlowPfcPauseSrcCounter struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // Description missing in models - // default = 0 - Start *uint32 `protobuf:"varint,1,opt,name=start,proto3,oneof" json:"start,omitempty"` + // default = 00:00:00:00:00:00 + Start *string `protobuf:"bytes,1,opt,name=start,proto3,oneof" json:"start,omitempty"` // Description missing in models - // default = 1 - Step *uint32 `protobuf:"varint,2,opt,name=step,proto3,oneof" json:"step,omitempty"` + // default = 00:00:00:00:00:01 + Step *string `protobuf:"bytes,2,opt,name=step,proto3,oneof" json:"step,omitempty"` // Description missing in models // default = 1 Count *uint32 `protobuf:"varint,3,opt,name=count,proto3,oneof" json:"count,omitempty"` } -func (x *PatternFlowTcpCtlSynCounter) Reset() { - *x = PatternFlowTcpCtlSynCounter{} +func (x *PatternFlowPfcPauseSrcCounter) Reset() { + *x = PatternFlowPfcPauseSrcCounter{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[544] + mi := &file_otg_proto_msgTypes[507] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowTcpCtlSynCounter) String() string { +func (x *PatternFlowPfcPauseSrcCounter) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowTcpCtlSynCounter) ProtoMessage() {} +func (*PatternFlowPfcPauseSrcCounter) ProtoMessage() {} -func (x *PatternFlowTcpCtlSynCounter) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[544] +func (x *PatternFlowPfcPauseSrcCounter) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[507] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -64069,26 +63256,26 @@ func (x *PatternFlowTcpCtlSynCounter) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use PatternFlowTcpCtlSynCounter.ProtoReflect.Descriptor instead. -func (*PatternFlowTcpCtlSynCounter) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{544} +// Deprecated: Use PatternFlowPfcPauseSrcCounter.ProtoReflect.Descriptor instead. +func (*PatternFlowPfcPauseSrcCounter) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{507} } -func (x *PatternFlowTcpCtlSynCounter) GetStart() uint32 { +func (x *PatternFlowPfcPauseSrcCounter) GetStart() string { if x != nil && x.Start != nil { return *x.Start } - return 0 + return "" } -func (x *PatternFlowTcpCtlSynCounter) GetStep() uint32 { +func (x *PatternFlowPfcPauseSrcCounter) GetStep() string { if x != nil && x.Step != nil { return *x.Step } - return 0 + return "" } -func (x *PatternFlowTcpCtlSynCounter) GetCount() uint32 { +func (x *PatternFlowPfcPauseSrcCounter) GetCount() uint32 { if x != nil && x.Count != nil { return *x.Count } @@ -64098,7 +63285,7 @@ func (x *PatternFlowTcpCtlSynCounter) GetCount() uint32 { // Metric tag can be used to enable tracking portion of or all bits in a corresponding // header field for metrics per each applicable value. These would appear as tagged // metrics in corresponding flow metrics. -type PatternFlowTcpCtlSynMetricTag struct { +type PatternFlowPfcPauseSrcMetricTag struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields @@ -64112,27 +63299,27 @@ type PatternFlowTcpCtlSynMetricTag struct { Offset *uint32 `protobuf:"varint,2,opt,name=offset,proto3,oneof" json:"offset,omitempty"` // Number of bits to track for metrics starting from configured offset of corresponding // header field - // default = 1 + // default = 48 Length *uint32 `protobuf:"varint,3,opt,name=length,proto3,oneof" json:"length,omitempty"` } -func (x *PatternFlowTcpCtlSynMetricTag) Reset() { - *x = PatternFlowTcpCtlSynMetricTag{} +func (x *PatternFlowPfcPauseSrcMetricTag) Reset() { + *x = PatternFlowPfcPauseSrcMetricTag{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[545] + mi := &file_otg_proto_msgTypes[508] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowTcpCtlSynMetricTag) String() string { +func (x *PatternFlowPfcPauseSrcMetricTag) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowTcpCtlSynMetricTag) ProtoMessage() {} +func (*PatternFlowPfcPauseSrcMetricTag) ProtoMessage() {} -func (x *PatternFlowTcpCtlSynMetricTag) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[545] +func (x *PatternFlowPfcPauseSrcMetricTag) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[508] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -64143,74 +63330,74 @@ func (x *PatternFlowTcpCtlSynMetricTag) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use PatternFlowTcpCtlSynMetricTag.ProtoReflect.Descriptor instead. -func (*PatternFlowTcpCtlSynMetricTag) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{545} +// Deprecated: Use PatternFlowPfcPauseSrcMetricTag.ProtoReflect.Descriptor instead. +func (*PatternFlowPfcPauseSrcMetricTag) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{508} } -func (x *PatternFlowTcpCtlSynMetricTag) GetName() string { +func (x *PatternFlowPfcPauseSrcMetricTag) GetName() string { if x != nil && x.Name != nil { return *x.Name } return "" } -func (x *PatternFlowTcpCtlSynMetricTag) GetOffset() uint32 { +func (x *PatternFlowPfcPauseSrcMetricTag) GetOffset() uint32 { if x != nil && x.Offset != nil { return *x.Offset } return 0 } -func (x *PatternFlowTcpCtlSynMetricTag) GetLength() uint32 { +func (x *PatternFlowPfcPauseSrcMetricTag) GetLength() uint32 { if x != nil && x.Length != nil { return *x.Length } return 0 } -// Synchronize sequenece numbers. -type PatternFlowTcpCtlSyn struct { +// Source MAC address +type PatternFlowPfcPauseSrc struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // Description missing in models // default = Choice.Enum.value - Choice *PatternFlowTcpCtlSyn_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.PatternFlowTcpCtlSyn_Choice_Enum,oneof" json:"choice,omitempty"` + Choice *PatternFlowPfcPauseSrc_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.PatternFlowPfcPauseSrc_Choice_Enum,oneof" json:"choice,omitempty"` // Description missing in models - // default = 0 - Value *uint32 `protobuf:"varint,2,opt,name=value,proto3,oneof" json:"value,omitempty"` + // default = 00:00:00:00:00:00 + Value *string `protobuf:"bytes,2,opt,name=value,proto3,oneof" json:"value,omitempty"` // Description missing in models - // default = [0] - Values []uint32 `protobuf:"varint,3,rep,packed,name=values,proto3" json:"values,omitempty"` + // default = ['00:00:00:00:00:00'] + Values []string `protobuf:"bytes,3,rep,name=values,proto3" json:"values,omitempty"` // Description missing in models - Increment *PatternFlowTcpCtlSynCounter `protobuf:"bytes,5,opt,name=increment,proto3" json:"increment,omitempty"` + Increment *PatternFlowPfcPauseSrcCounter `protobuf:"bytes,5,opt,name=increment,proto3" json:"increment,omitempty"` // Description missing in models - Decrement *PatternFlowTcpCtlSynCounter `protobuf:"bytes,6,opt,name=decrement,proto3" json:"decrement,omitempty"` + Decrement *PatternFlowPfcPauseSrcCounter `protobuf:"bytes,6,opt,name=decrement,proto3" json:"decrement,omitempty"` // One or more metric tags can be used to enable tracking portion of or all bits in // a corresponding header field for metrics per each applicable value. These would appear // as tagged metrics in corresponding flow metrics. - MetricTags []*PatternFlowTcpCtlSynMetricTag `protobuf:"bytes,7,rep,name=metric_tags,json=metricTags,proto3" json:"metric_tags,omitempty"` + MetricTags []*PatternFlowPfcPauseSrcMetricTag `protobuf:"bytes,7,rep,name=metric_tags,json=metricTags,proto3" json:"metric_tags,omitempty"` } -func (x *PatternFlowTcpCtlSyn) Reset() { - *x = PatternFlowTcpCtlSyn{} +func (x *PatternFlowPfcPauseSrc) Reset() { + *x = PatternFlowPfcPauseSrc{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[546] + mi := &file_otg_proto_msgTypes[509] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowTcpCtlSyn) String() string { +func (x *PatternFlowPfcPauseSrc) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowTcpCtlSyn) ProtoMessage() {} +func (*PatternFlowPfcPauseSrc) ProtoMessage() {} -func (x *PatternFlowTcpCtlSyn) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[546] +func (x *PatternFlowPfcPauseSrc) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[509] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -64221,47 +63408,47 @@ func (x *PatternFlowTcpCtlSyn) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use PatternFlowTcpCtlSyn.ProtoReflect.Descriptor instead. -func (*PatternFlowTcpCtlSyn) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{546} +// Deprecated: Use PatternFlowPfcPauseSrc.ProtoReflect.Descriptor instead. +func (*PatternFlowPfcPauseSrc) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{509} } -func (x *PatternFlowTcpCtlSyn) GetChoice() PatternFlowTcpCtlSyn_Choice_Enum { +func (x *PatternFlowPfcPauseSrc) GetChoice() PatternFlowPfcPauseSrc_Choice_Enum { if x != nil && x.Choice != nil { return *x.Choice } - return PatternFlowTcpCtlSyn_Choice_unspecified + return PatternFlowPfcPauseSrc_Choice_unspecified } -func (x *PatternFlowTcpCtlSyn) GetValue() uint32 { +func (x *PatternFlowPfcPauseSrc) GetValue() string { if x != nil && x.Value != nil { return *x.Value } - return 0 + return "" } -func (x *PatternFlowTcpCtlSyn) GetValues() []uint32 { +func (x *PatternFlowPfcPauseSrc) GetValues() []string { if x != nil { return x.Values } return nil } -func (x *PatternFlowTcpCtlSyn) GetIncrement() *PatternFlowTcpCtlSynCounter { +func (x *PatternFlowPfcPauseSrc) GetIncrement() *PatternFlowPfcPauseSrcCounter { if x != nil { return x.Increment } return nil } -func (x *PatternFlowTcpCtlSyn) GetDecrement() *PatternFlowTcpCtlSynCounter { +func (x *PatternFlowPfcPauseSrc) GetDecrement() *PatternFlowPfcPauseSrcCounter { if x != nil { return x.Decrement } return nil } -func (x *PatternFlowTcpCtlSyn) GetMetricTags() []*PatternFlowTcpCtlSynMetricTag { +func (x *PatternFlowPfcPauseSrc) GetMetricTags() []*PatternFlowPfcPauseSrcMetricTag { if x != nil { return x.MetricTags } @@ -64269,13 +63456,13 @@ func (x *PatternFlowTcpCtlSyn) GetMetricTags() []*PatternFlowTcpCtlSynMetricTag } // integer counter pattern -type PatternFlowTcpCtlFinCounter struct { +type PatternFlowPfcPauseEtherTypeCounter struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // Description missing in models - // default = 0 + // default = 34824 Start *uint32 `protobuf:"varint,1,opt,name=start,proto3,oneof" json:"start,omitempty"` // Description missing in models // default = 1 @@ -64285,23 +63472,23 @@ type PatternFlowTcpCtlFinCounter struct { Count *uint32 `protobuf:"varint,3,opt,name=count,proto3,oneof" json:"count,omitempty"` } -func (x *PatternFlowTcpCtlFinCounter) Reset() { - *x = PatternFlowTcpCtlFinCounter{} +func (x *PatternFlowPfcPauseEtherTypeCounter) Reset() { + *x = PatternFlowPfcPauseEtherTypeCounter{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[547] + mi := &file_otg_proto_msgTypes[510] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowTcpCtlFinCounter) String() string { +func (x *PatternFlowPfcPauseEtherTypeCounter) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowTcpCtlFinCounter) ProtoMessage() {} +func (*PatternFlowPfcPauseEtherTypeCounter) ProtoMessage() {} -func (x *PatternFlowTcpCtlFinCounter) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[547] +func (x *PatternFlowPfcPauseEtherTypeCounter) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[510] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -64312,26 +63499,26 @@ func (x *PatternFlowTcpCtlFinCounter) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use PatternFlowTcpCtlFinCounter.ProtoReflect.Descriptor instead. -func (*PatternFlowTcpCtlFinCounter) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{547} +// Deprecated: Use PatternFlowPfcPauseEtherTypeCounter.ProtoReflect.Descriptor instead. +func (*PatternFlowPfcPauseEtherTypeCounter) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{510} } -func (x *PatternFlowTcpCtlFinCounter) GetStart() uint32 { +func (x *PatternFlowPfcPauseEtherTypeCounter) GetStart() uint32 { if x != nil && x.Start != nil { return *x.Start } return 0 } -func (x *PatternFlowTcpCtlFinCounter) GetStep() uint32 { +func (x *PatternFlowPfcPauseEtherTypeCounter) GetStep() uint32 { if x != nil && x.Step != nil { return *x.Step } return 0 } -func (x *PatternFlowTcpCtlFinCounter) GetCount() uint32 { +func (x *PatternFlowPfcPauseEtherTypeCounter) GetCount() uint32 { if x != nil && x.Count != nil { return *x.Count } @@ -64341,7 +63528,7 @@ func (x *PatternFlowTcpCtlFinCounter) GetCount() uint32 { // Metric tag can be used to enable tracking portion of or all bits in a corresponding // header field for metrics per each applicable value. These would appear as tagged // metrics in corresponding flow metrics. -type PatternFlowTcpCtlFinMetricTag struct { +type PatternFlowPfcPauseEtherTypeMetricTag struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields @@ -64355,27 +63542,27 @@ type PatternFlowTcpCtlFinMetricTag struct { Offset *uint32 `protobuf:"varint,2,opt,name=offset,proto3,oneof" json:"offset,omitempty"` // Number of bits to track for metrics starting from configured offset of corresponding // header field - // default = 1 + // default = 16 Length *uint32 `protobuf:"varint,3,opt,name=length,proto3,oneof" json:"length,omitempty"` } -func (x *PatternFlowTcpCtlFinMetricTag) Reset() { - *x = PatternFlowTcpCtlFinMetricTag{} +func (x *PatternFlowPfcPauseEtherTypeMetricTag) Reset() { + *x = PatternFlowPfcPauseEtherTypeMetricTag{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[548] + mi := &file_otg_proto_msgTypes[511] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowTcpCtlFinMetricTag) String() string { +func (x *PatternFlowPfcPauseEtherTypeMetricTag) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowTcpCtlFinMetricTag) ProtoMessage() {} +func (*PatternFlowPfcPauseEtherTypeMetricTag) ProtoMessage() {} -func (x *PatternFlowTcpCtlFinMetricTag) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[548] +func (x *PatternFlowPfcPauseEtherTypeMetricTag) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[511] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -64386,74 +63573,74 @@ func (x *PatternFlowTcpCtlFinMetricTag) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use PatternFlowTcpCtlFinMetricTag.ProtoReflect.Descriptor instead. -func (*PatternFlowTcpCtlFinMetricTag) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{548} +// Deprecated: Use PatternFlowPfcPauseEtherTypeMetricTag.ProtoReflect.Descriptor instead. +func (*PatternFlowPfcPauseEtherTypeMetricTag) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{511} } -func (x *PatternFlowTcpCtlFinMetricTag) GetName() string { +func (x *PatternFlowPfcPauseEtherTypeMetricTag) GetName() string { if x != nil && x.Name != nil { return *x.Name } return "" } -func (x *PatternFlowTcpCtlFinMetricTag) GetOffset() uint32 { +func (x *PatternFlowPfcPauseEtherTypeMetricTag) GetOffset() uint32 { if x != nil && x.Offset != nil { return *x.Offset } return 0 } -func (x *PatternFlowTcpCtlFinMetricTag) GetLength() uint32 { +func (x *PatternFlowPfcPauseEtherTypeMetricTag) GetLength() uint32 { if x != nil && x.Length != nil { return *x.Length } return 0 } -// Last packet from the sender. -type PatternFlowTcpCtlFin struct { +// Ethernet type +type PatternFlowPfcPauseEtherType struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // Description missing in models // default = Choice.Enum.value - Choice *PatternFlowTcpCtlFin_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.PatternFlowTcpCtlFin_Choice_Enum,oneof" json:"choice,omitempty"` + Choice *PatternFlowPfcPauseEtherType_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.PatternFlowPfcPauseEtherType_Choice_Enum,oneof" json:"choice,omitempty"` // Description missing in models - // default = 0 + // default = 34824 Value *uint32 `protobuf:"varint,2,opt,name=value,proto3,oneof" json:"value,omitempty"` // Description missing in models - // default = [0] + // default = [34824] Values []uint32 `protobuf:"varint,3,rep,packed,name=values,proto3" json:"values,omitempty"` // Description missing in models - Increment *PatternFlowTcpCtlFinCounter `protobuf:"bytes,5,opt,name=increment,proto3" json:"increment,omitempty"` + Increment *PatternFlowPfcPauseEtherTypeCounter `protobuf:"bytes,5,opt,name=increment,proto3" json:"increment,omitempty"` // Description missing in models - Decrement *PatternFlowTcpCtlFinCounter `protobuf:"bytes,6,opt,name=decrement,proto3" json:"decrement,omitempty"` + Decrement *PatternFlowPfcPauseEtherTypeCounter `protobuf:"bytes,6,opt,name=decrement,proto3" json:"decrement,omitempty"` // One or more metric tags can be used to enable tracking portion of or all bits in // a corresponding header field for metrics per each applicable value. These would appear // as tagged metrics in corresponding flow metrics. - MetricTags []*PatternFlowTcpCtlFinMetricTag `protobuf:"bytes,7,rep,name=metric_tags,json=metricTags,proto3" json:"metric_tags,omitempty"` + MetricTags []*PatternFlowPfcPauseEtherTypeMetricTag `protobuf:"bytes,7,rep,name=metric_tags,json=metricTags,proto3" json:"metric_tags,omitempty"` } -func (x *PatternFlowTcpCtlFin) Reset() { - *x = PatternFlowTcpCtlFin{} +func (x *PatternFlowPfcPauseEtherType) Reset() { + *x = PatternFlowPfcPauseEtherType{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[549] + mi := &file_otg_proto_msgTypes[512] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowTcpCtlFin) String() string { +func (x *PatternFlowPfcPauseEtherType) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowTcpCtlFin) ProtoMessage() {} +func (*PatternFlowPfcPauseEtherType) ProtoMessage() {} -func (x *PatternFlowTcpCtlFin) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[549] +func (x *PatternFlowPfcPauseEtherType) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[512] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -64464,47 +63651,47 @@ func (x *PatternFlowTcpCtlFin) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use PatternFlowTcpCtlFin.ProtoReflect.Descriptor instead. -func (*PatternFlowTcpCtlFin) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{549} +// Deprecated: Use PatternFlowPfcPauseEtherType.ProtoReflect.Descriptor instead. +func (*PatternFlowPfcPauseEtherType) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{512} } -func (x *PatternFlowTcpCtlFin) GetChoice() PatternFlowTcpCtlFin_Choice_Enum { +func (x *PatternFlowPfcPauseEtherType) GetChoice() PatternFlowPfcPauseEtherType_Choice_Enum { if x != nil && x.Choice != nil { return *x.Choice } - return PatternFlowTcpCtlFin_Choice_unspecified + return PatternFlowPfcPauseEtherType_Choice_unspecified } -func (x *PatternFlowTcpCtlFin) GetValue() uint32 { +func (x *PatternFlowPfcPauseEtherType) GetValue() uint32 { if x != nil && x.Value != nil { return *x.Value } return 0 } -func (x *PatternFlowTcpCtlFin) GetValues() []uint32 { +func (x *PatternFlowPfcPauseEtherType) GetValues() []uint32 { if x != nil { return x.Values } return nil } -func (x *PatternFlowTcpCtlFin) GetIncrement() *PatternFlowTcpCtlFinCounter { +func (x *PatternFlowPfcPauseEtherType) GetIncrement() *PatternFlowPfcPauseEtherTypeCounter { if x != nil { return x.Increment } return nil } -func (x *PatternFlowTcpCtlFin) GetDecrement() *PatternFlowTcpCtlFinCounter { +func (x *PatternFlowPfcPauseEtherType) GetDecrement() *PatternFlowPfcPauseEtherTypeCounter { if x != nil { return x.Decrement } return nil } -func (x *PatternFlowTcpCtlFin) GetMetricTags() []*PatternFlowTcpCtlFinMetricTag { +func (x *PatternFlowPfcPauseEtherType) GetMetricTags() []*PatternFlowPfcPauseEtherTypeMetricTag { if x != nil { return x.MetricTags } @@ -64512,13 +63699,13 @@ func (x *PatternFlowTcpCtlFin) GetMetricTags() []*PatternFlowTcpCtlFinMetricTag } // integer counter pattern -type PatternFlowTcpWindowCounter struct { +type PatternFlowPfcPauseControlOpCodeCounter struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // Description missing in models - // default = 0 + // default = 257 Start *uint32 `protobuf:"varint,1,opt,name=start,proto3,oneof" json:"start,omitempty"` // Description missing in models // default = 1 @@ -64528,23 +63715,23 @@ type PatternFlowTcpWindowCounter struct { Count *uint32 `protobuf:"varint,3,opt,name=count,proto3,oneof" json:"count,omitempty"` } -func (x *PatternFlowTcpWindowCounter) Reset() { - *x = PatternFlowTcpWindowCounter{} +func (x *PatternFlowPfcPauseControlOpCodeCounter) Reset() { + *x = PatternFlowPfcPauseControlOpCodeCounter{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[550] + mi := &file_otg_proto_msgTypes[513] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowTcpWindowCounter) String() string { +func (x *PatternFlowPfcPauseControlOpCodeCounter) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowTcpWindowCounter) ProtoMessage() {} +func (*PatternFlowPfcPauseControlOpCodeCounter) ProtoMessage() {} -func (x *PatternFlowTcpWindowCounter) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[550] +func (x *PatternFlowPfcPauseControlOpCodeCounter) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[513] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -64555,26 +63742,26 @@ func (x *PatternFlowTcpWindowCounter) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use PatternFlowTcpWindowCounter.ProtoReflect.Descriptor instead. -func (*PatternFlowTcpWindowCounter) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{550} +// Deprecated: Use PatternFlowPfcPauseControlOpCodeCounter.ProtoReflect.Descriptor instead. +func (*PatternFlowPfcPauseControlOpCodeCounter) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{513} } -func (x *PatternFlowTcpWindowCounter) GetStart() uint32 { +func (x *PatternFlowPfcPauseControlOpCodeCounter) GetStart() uint32 { if x != nil && x.Start != nil { return *x.Start } return 0 } -func (x *PatternFlowTcpWindowCounter) GetStep() uint32 { +func (x *PatternFlowPfcPauseControlOpCodeCounter) GetStep() uint32 { if x != nil && x.Step != nil { return *x.Step } return 0 } -func (x *PatternFlowTcpWindowCounter) GetCount() uint32 { +func (x *PatternFlowPfcPauseControlOpCodeCounter) GetCount() uint32 { if x != nil && x.Count != nil { return *x.Count } @@ -64584,7 +63771,7 @@ func (x *PatternFlowTcpWindowCounter) GetCount() uint32 { // Metric tag can be used to enable tracking portion of or all bits in a corresponding // header field for metrics per each applicable value. These would appear as tagged // metrics in corresponding flow metrics. -type PatternFlowTcpWindowMetricTag struct { +type PatternFlowPfcPauseControlOpCodeMetricTag struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields @@ -64602,23 +63789,23 @@ type PatternFlowTcpWindowMetricTag struct { Length *uint32 `protobuf:"varint,3,opt,name=length,proto3,oneof" json:"length,omitempty"` } -func (x *PatternFlowTcpWindowMetricTag) Reset() { - *x = PatternFlowTcpWindowMetricTag{} +func (x *PatternFlowPfcPauseControlOpCodeMetricTag) Reset() { + *x = PatternFlowPfcPauseControlOpCodeMetricTag{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[551] + mi := &file_otg_proto_msgTypes[514] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowTcpWindowMetricTag) String() string { +func (x *PatternFlowPfcPauseControlOpCodeMetricTag) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowTcpWindowMetricTag) ProtoMessage() {} +func (*PatternFlowPfcPauseControlOpCodeMetricTag) ProtoMessage() {} -func (x *PatternFlowTcpWindowMetricTag) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[551] +func (x *PatternFlowPfcPauseControlOpCodeMetricTag) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[514] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -64629,74 +63816,74 @@ func (x *PatternFlowTcpWindowMetricTag) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use PatternFlowTcpWindowMetricTag.ProtoReflect.Descriptor instead. -func (*PatternFlowTcpWindowMetricTag) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{551} +// Deprecated: Use PatternFlowPfcPauseControlOpCodeMetricTag.ProtoReflect.Descriptor instead. +func (*PatternFlowPfcPauseControlOpCodeMetricTag) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{514} } -func (x *PatternFlowTcpWindowMetricTag) GetName() string { +func (x *PatternFlowPfcPauseControlOpCodeMetricTag) GetName() string { if x != nil && x.Name != nil { return *x.Name } return "" } -func (x *PatternFlowTcpWindowMetricTag) GetOffset() uint32 { +func (x *PatternFlowPfcPauseControlOpCodeMetricTag) GetOffset() uint32 { if x != nil && x.Offset != nil { return *x.Offset } return 0 } -func (x *PatternFlowTcpWindowMetricTag) GetLength() uint32 { +func (x *PatternFlowPfcPauseControlOpCodeMetricTag) GetLength() uint32 { if x != nil && x.Length != nil { return *x.Length } return 0 } -// Tcp connection window. -type PatternFlowTcpWindow struct { +// Control operation code +type PatternFlowPfcPauseControlOpCode struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // Description missing in models // default = Choice.Enum.value - Choice *PatternFlowTcpWindow_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.PatternFlowTcpWindow_Choice_Enum,oneof" json:"choice,omitempty"` + Choice *PatternFlowPfcPauseControlOpCode_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.PatternFlowPfcPauseControlOpCode_Choice_Enum,oneof" json:"choice,omitempty"` // Description missing in models - // default = 0 + // default = 257 Value *uint32 `protobuf:"varint,2,opt,name=value,proto3,oneof" json:"value,omitempty"` // Description missing in models - // default = [0] + // default = [257] Values []uint32 `protobuf:"varint,3,rep,packed,name=values,proto3" json:"values,omitempty"` // Description missing in models - Increment *PatternFlowTcpWindowCounter `protobuf:"bytes,5,opt,name=increment,proto3" json:"increment,omitempty"` + Increment *PatternFlowPfcPauseControlOpCodeCounter `protobuf:"bytes,5,opt,name=increment,proto3" json:"increment,omitempty"` // Description missing in models - Decrement *PatternFlowTcpWindowCounter `protobuf:"bytes,6,opt,name=decrement,proto3" json:"decrement,omitempty"` + Decrement *PatternFlowPfcPauseControlOpCodeCounter `protobuf:"bytes,6,opt,name=decrement,proto3" json:"decrement,omitempty"` // One or more metric tags can be used to enable tracking portion of or all bits in // a corresponding header field for metrics per each applicable value. These would appear // as tagged metrics in corresponding flow metrics. - MetricTags []*PatternFlowTcpWindowMetricTag `protobuf:"bytes,7,rep,name=metric_tags,json=metricTags,proto3" json:"metric_tags,omitempty"` + MetricTags []*PatternFlowPfcPauseControlOpCodeMetricTag `protobuf:"bytes,7,rep,name=metric_tags,json=metricTags,proto3" json:"metric_tags,omitempty"` } -func (x *PatternFlowTcpWindow) Reset() { - *x = PatternFlowTcpWindow{} +func (x *PatternFlowPfcPauseControlOpCode) Reset() { + *x = PatternFlowPfcPauseControlOpCode{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[552] + mi := &file_otg_proto_msgTypes[515] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowTcpWindow) String() string { +func (x *PatternFlowPfcPauseControlOpCode) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowTcpWindow) ProtoMessage() {} +func (*PatternFlowPfcPauseControlOpCode) ProtoMessage() {} -func (x *PatternFlowTcpWindow) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[552] +func (x *PatternFlowPfcPauseControlOpCode) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[515] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -64707,47 +63894,47 @@ func (x *PatternFlowTcpWindow) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use PatternFlowTcpWindow.ProtoReflect.Descriptor instead. -func (*PatternFlowTcpWindow) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{552} +// Deprecated: Use PatternFlowPfcPauseControlOpCode.ProtoReflect.Descriptor instead. +func (*PatternFlowPfcPauseControlOpCode) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{515} } -func (x *PatternFlowTcpWindow) GetChoice() PatternFlowTcpWindow_Choice_Enum { +func (x *PatternFlowPfcPauseControlOpCode) GetChoice() PatternFlowPfcPauseControlOpCode_Choice_Enum { if x != nil && x.Choice != nil { return *x.Choice } - return PatternFlowTcpWindow_Choice_unspecified + return PatternFlowPfcPauseControlOpCode_Choice_unspecified } -func (x *PatternFlowTcpWindow) GetValue() uint32 { +func (x *PatternFlowPfcPauseControlOpCode) GetValue() uint32 { if x != nil && x.Value != nil { return *x.Value } return 0 } -func (x *PatternFlowTcpWindow) GetValues() []uint32 { +func (x *PatternFlowPfcPauseControlOpCode) GetValues() []uint32 { if x != nil { return x.Values } return nil } -func (x *PatternFlowTcpWindow) GetIncrement() *PatternFlowTcpWindowCounter { +func (x *PatternFlowPfcPauseControlOpCode) GetIncrement() *PatternFlowPfcPauseControlOpCodeCounter { if x != nil { return x.Increment } return nil } -func (x *PatternFlowTcpWindow) GetDecrement() *PatternFlowTcpWindowCounter { +func (x *PatternFlowPfcPauseControlOpCode) GetDecrement() *PatternFlowPfcPauseControlOpCodeCounter { if x != nil { return x.Decrement } return nil } -func (x *PatternFlowTcpWindow) GetMetricTags() []*PatternFlowTcpWindowMetricTag { +func (x *PatternFlowPfcPauseControlOpCode) GetMetricTags() []*PatternFlowPfcPauseControlOpCodeMetricTag { if x != nil { return x.MetricTags } @@ -64755,7 +63942,7 @@ func (x *PatternFlowTcpWindow) GetMetricTags() []*PatternFlowTcpWindowMetricTag } // integer counter pattern -type PatternFlowUdpSrcPortCounter struct { +type PatternFlowPfcPauseClassEnableVectorCounter struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields @@ -64771,23 +63958,23 @@ type PatternFlowUdpSrcPortCounter struct { Count *uint32 `protobuf:"varint,3,opt,name=count,proto3,oneof" json:"count,omitempty"` } -func (x *PatternFlowUdpSrcPortCounter) Reset() { - *x = PatternFlowUdpSrcPortCounter{} +func (x *PatternFlowPfcPauseClassEnableVectorCounter) Reset() { + *x = PatternFlowPfcPauseClassEnableVectorCounter{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[553] + mi := &file_otg_proto_msgTypes[516] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowUdpSrcPortCounter) String() string { +func (x *PatternFlowPfcPauseClassEnableVectorCounter) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowUdpSrcPortCounter) ProtoMessage() {} +func (*PatternFlowPfcPauseClassEnableVectorCounter) ProtoMessage() {} -func (x *PatternFlowUdpSrcPortCounter) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[553] +func (x *PatternFlowPfcPauseClassEnableVectorCounter) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[516] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -64798,26 +63985,26 @@ func (x *PatternFlowUdpSrcPortCounter) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use PatternFlowUdpSrcPortCounter.ProtoReflect.Descriptor instead. -func (*PatternFlowUdpSrcPortCounter) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{553} +// Deprecated: Use PatternFlowPfcPauseClassEnableVectorCounter.ProtoReflect.Descriptor instead. +func (*PatternFlowPfcPauseClassEnableVectorCounter) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{516} } -func (x *PatternFlowUdpSrcPortCounter) GetStart() uint32 { +func (x *PatternFlowPfcPauseClassEnableVectorCounter) GetStart() uint32 { if x != nil && x.Start != nil { return *x.Start } return 0 } -func (x *PatternFlowUdpSrcPortCounter) GetStep() uint32 { +func (x *PatternFlowPfcPauseClassEnableVectorCounter) GetStep() uint32 { if x != nil && x.Step != nil { return *x.Step } return 0 } -func (x *PatternFlowUdpSrcPortCounter) GetCount() uint32 { +func (x *PatternFlowPfcPauseClassEnableVectorCounter) GetCount() uint32 { if x != nil && x.Count != nil { return *x.Count } @@ -64827,7 +64014,7 @@ func (x *PatternFlowUdpSrcPortCounter) GetCount() uint32 { // Metric tag can be used to enable tracking portion of or all bits in a corresponding // header field for metrics per each applicable value. These would appear as tagged // metrics in corresponding flow metrics. -type PatternFlowUdpSrcPortMetricTag struct { +type PatternFlowPfcPauseClassEnableVectorMetricTag struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields @@ -64845,23 +64032,23 @@ type PatternFlowUdpSrcPortMetricTag struct { Length *uint32 `protobuf:"varint,3,opt,name=length,proto3,oneof" json:"length,omitempty"` } -func (x *PatternFlowUdpSrcPortMetricTag) Reset() { - *x = PatternFlowUdpSrcPortMetricTag{} +func (x *PatternFlowPfcPauseClassEnableVectorMetricTag) Reset() { + *x = PatternFlowPfcPauseClassEnableVectorMetricTag{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[554] + mi := &file_otg_proto_msgTypes[517] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowUdpSrcPortMetricTag) String() string { +func (x *PatternFlowPfcPauseClassEnableVectorMetricTag) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowUdpSrcPortMetricTag) ProtoMessage() {} +func (*PatternFlowPfcPauseClassEnableVectorMetricTag) ProtoMessage() {} -func (x *PatternFlowUdpSrcPortMetricTag) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[554] +func (x *PatternFlowPfcPauseClassEnableVectorMetricTag) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[517] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -64872,41 +64059,41 @@ func (x *PatternFlowUdpSrcPortMetricTag) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use PatternFlowUdpSrcPortMetricTag.ProtoReflect.Descriptor instead. -func (*PatternFlowUdpSrcPortMetricTag) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{554} +// Deprecated: Use PatternFlowPfcPauseClassEnableVectorMetricTag.ProtoReflect.Descriptor instead. +func (*PatternFlowPfcPauseClassEnableVectorMetricTag) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{517} } -func (x *PatternFlowUdpSrcPortMetricTag) GetName() string { +func (x *PatternFlowPfcPauseClassEnableVectorMetricTag) GetName() string { if x != nil && x.Name != nil { return *x.Name } return "" } -func (x *PatternFlowUdpSrcPortMetricTag) GetOffset() uint32 { +func (x *PatternFlowPfcPauseClassEnableVectorMetricTag) GetOffset() uint32 { if x != nil && x.Offset != nil { return *x.Offset } return 0 } -func (x *PatternFlowUdpSrcPortMetricTag) GetLength() uint32 { +func (x *PatternFlowPfcPauseClassEnableVectorMetricTag) GetLength() uint32 { if x != nil && x.Length != nil { return *x.Length } return 0 } -// Source port -type PatternFlowUdpSrcPort struct { +// Destination +type PatternFlowPfcPauseClassEnableVector struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // Description missing in models // default = Choice.Enum.value - Choice *PatternFlowUdpSrcPort_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.PatternFlowUdpSrcPort_Choice_Enum,oneof" json:"choice,omitempty"` + Choice *PatternFlowPfcPauseClassEnableVector_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.PatternFlowPfcPauseClassEnableVector_Choice_Enum,oneof" json:"choice,omitempty"` // Description missing in models // default = 0 Value *uint32 `protobuf:"varint,2,opt,name=value,proto3,oneof" json:"value,omitempty"` @@ -64914,32 +64101,32 @@ type PatternFlowUdpSrcPort struct { // default = [0] Values []uint32 `protobuf:"varint,3,rep,packed,name=values,proto3" json:"values,omitempty"` // Description missing in models - Increment *PatternFlowUdpSrcPortCounter `protobuf:"bytes,5,opt,name=increment,proto3" json:"increment,omitempty"` + Increment *PatternFlowPfcPauseClassEnableVectorCounter `protobuf:"bytes,5,opt,name=increment,proto3" json:"increment,omitempty"` // Description missing in models - Decrement *PatternFlowUdpSrcPortCounter `protobuf:"bytes,6,opt,name=decrement,proto3" json:"decrement,omitempty"` + Decrement *PatternFlowPfcPauseClassEnableVectorCounter `protobuf:"bytes,6,opt,name=decrement,proto3" json:"decrement,omitempty"` // One or more metric tags can be used to enable tracking portion of or all bits in // a corresponding header field for metrics per each applicable value. These would appear // as tagged metrics in corresponding flow metrics. - MetricTags []*PatternFlowUdpSrcPortMetricTag `protobuf:"bytes,7,rep,name=metric_tags,json=metricTags,proto3" json:"metric_tags,omitempty"` + MetricTags []*PatternFlowPfcPauseClassEnableVectorMetricTag `protobuf:"bytes,7,rep,name=metric_tags,json=metricTags,proto3" json:"metric_tags,omitempty"` } -func (x *PatternFlowUdpSrcPort) Reset() { - *x = PatternFlowUdpSrcPort{} +func (x *PatternFlowPfcPauseClassEnableVector) Reset() { + *x = PatternFlowPfcPauseClassEnableVector{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[555] + mi := &file_otg_proto_msgTypes[518] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowUdpSrcPort) String() string { +func (x *PatternFlowPfcPauseClassEnableVector) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowUdpSrcPort) ProtoMessage() {} +func (*PatternFlowPfcPauseClassEnableVector) ProtoMessage() {} -func (x *PatternFlowUdpSrcPort) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[555] +func (x *PatternFlowPfcPauseClassEnableVector) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[518] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -64950,47 +64137,47 @@ func (x *PatternFlowUdpSrcPort) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use PatternFlowUdpSrcPort.ProtoReflect.Descriptor instead. -func (*PatternFlowUdpSrcPort) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{555} +// Deprecated: Use PatternFlowPfcPauseClassEnableVector.ProtoReflect.Descriptor instead. +func (*PatternFlowPfcPauseClassEnableVector) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{518} } -func (x *PatternFlowUdpSrcPort) GetChoice() PatternFlowUdpSrcPort_Choice_Enum { +func (x *PatternFlowPfcPauseClassEnableVector) GetChoice() PatternFlowPfcPauseClassEnableVector_Choice_Enum { if x != nil && x.Choice != nil { return *x.Choice } - return PatternFlowUdpSrcPort_Choice_unspecified + return PatternFlowPfcPauseClassEnableVector_Choice_unspecified } -func (x *PatternFlowUdpSrcPort) GetValue() uint32 { +func (x *PatternFlowPfcPauseClassEnableVector) GetValue() uint32 { if x != nil && x.Value != nil { return *x.Value } return 0 } -func (x *PatternFlowUdpSrcPort) GetValues() []uint32 { +func (x *PatternFlowPfcPauseClassEnableVector) GetValues() []uint32 { if x != nil { return x.Values } return nil } -func (x *PatternFlowUdpSrcPort) GetIncrement() *PatternFlowUdpSrcPortCounter { +func (x *PatternFlowPfcPauseClassEnableVector) GetIncrement() *PatternFlowPfcPauseClassEnableVectorCounter { if x != nil { return x.Increment } return nil } -func (x *PatternFlowUdpSrcPort) GetDecrement() *PatternFlowUdpSrcPortCounter { +func (x *PatternFlowPfcPauseClassEnableVector) GetDecrement() *PatternFlowPfcPauseClassEnableVectorCounter { if x != nil { return x.Decrement } return nil } -func (x *PatternFlowUdpSrcPort) GetMetricTags() []*PatternFlowUdpSrcPortMetricTag { +func (x *PatternFlowPfcPauseClassEnableVector) GetMetricTags() []*PatternFlowPfcPauseClassEnableVectorMetricTag { if x != nil { return x.MetricTags } @@ -64998,7 +64185,7 @@ func (x *PatternFlowUdpSrcPort) GetMetricTags() []*PatternFlowUdpSrcPortMetricTa } // integer counter pattern -type PatternFlowUdpDstPortCounter struct { +type PatternFlowPfcPausePauseClass0Counter struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields @@ -65014,23 +64201,23 @@ type PatternFlowUdpDstPortCounter struct { Count *uint32 `protobuf:"varint,3,opt,name=count,proto3,oneof" json:"count,omitempty"` } -func (x *PatternFlowUdpDstPortCounter) Reset() { - *x = PatternFlowUdpDstPortCounter{} +func (x *PatternFlowPfcPausePauseClass0Counter) Reset() { + *x = PatternFlowPfcPausePauseClass0Counter{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[556] + mi := &file_otg_proto_msgTypes[519] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowUdpDstPortCounter) String() string { +func (x *PatternFlowPfcPausePauseClass0Counter) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowUdpDstPortCounter) ProtoMessage() {} +func (*PatternFlowPfcPausePauseClass0Counter) ProtoMessage() {} -func (x *PatternFlowUdpDstPortCounter) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[556] +func (x *PatternFlowPfcPausePauseClass0Counter) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[519] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -65041,26 +64228,26 @@ func (x *PatternFlowUdpDstPortCounter) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use PatternFlowUdpDstPortCounter.ProtoReflect.Descriptor instead. -func (*PatternFlowUdpDstPortCounter) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{556} +// Deprecated: Use PatternFlowPfcPausePauseClass0Counter.ProtoReflect.Descriptor instead. +func (*PatternFlowPfcPausePauseClass0Counter) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{519} } -func (x *PatternFlowUdpDstPortCounter) GetStart() uint32 { +func (x *PatternFlowPfcPausePauseClass0Counter) GetStart() uint32 { if x != nil && x.Start != nil { return *x.Start } return 0 } -func (x *PatternFlowUdpDstPortCounter) GetStep() uint32 { +func (x *PatternFlowPfcPausePauseClass0Counter) GetStep() uint32 { if x != nil && x.Step != nil { return *x.Step } return 0 } -func (x *PatternFlowUdpDstPortCounter) GetCount() uint32 { +func (x *PatternFlowPfcPausePauseClass0Counter) GetCount() uint32 { if x != nil && x.Count != nil { return *x.Count } @@ -65070,7 +64257,7 @@ func (x *PatternFlowUdpDstPortCounter) GetCount() uint32 { // Metric tag can be used to enable tracking portion of or all bits in a corresponding // header field for metrics per each applicable value. These would appear as tagged // metrics in corresponding flow metrics. -type PatternFlowUdpDstPortMetricTag struct { +type PatternFlowPfcPausePauseClass0MetricTag struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields @@ -65088,23 +64275,23 @@ type PatternFlowUdpDstPortMetricTag struct { Length *uint32 `protobuf:"varint,3,opt,name=length,proto3,oneof" json:"length,omitempty"` } -func (x *PatternFlowUdpDstPortMetricTag) Reset() { - *x = PatternFlowUdpDstPortMetricTag{} +func (x *PatternFlowPfcPausePauseClass0MetricTag) Reset() { + *x = PatternFlowPfcPausePauseClass0MetricTag{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[557] + mi := &file_otg_proto_msgTypes[520] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowUdpDstPortMetricTag) String() string { +func (x *PatternFlowPfcPausePauseClass0MetricTag) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowUdpDstPortMetricTag) ProtoMessage() {} +func (*PatternFlowPfcPausePauseClass0MetricTag) ProtoMessage() {} -func (x *PatternFlowUdpDstPortMetricTag) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[557] +func (x *PatternFlowPfcPausePauseClass0MetricTag) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[520] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -65115,41 +64302,41 @@ func (x *PatternFlowUdpDstPortMetricTag) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use PatternFlowUdpDstPortMetricTag.ProtoReflect.Descriptor instead. -func (*PatternFlowUdpDstPortMetricTag) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{557} +// Deprecated: Use PatternFlowPfcPausePauseClass0MetricTag.ProtoReflect.Descriptor instead. +func (*PatternFlowPfcPausePauseClass0MetricTag) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{520} } -func (x *PatternFlowUdpDstPortMetricTag) GetName() string { +func (x *PatternFlowPfcPausePauseClass0MetricTag) GetName() string { if x != nil && x.Name != nil { return *x.Name } return "" } -func (x *PatternFlowUdpDstPortMetricTag) GetOffset() uint32 { +func (x *PatternFlowPfcPausePauseClass0MetricTag) GetOffset() uint32 { if x != nil && x.Offset != nil { return *x.Offset } return 0 } -func (x *PatternFlowUdpDstPortMetricTag) GetLength() uint32 { +func (x *PatternFlowPfcPausePauseClass0MetricTag) GetLength() uint32 { if x != nil && x.Length != nil { return *x.Length } return 0 } -// Destination port -type PatternFlowUdpDstPort struct { +// Pause class 0 +type PatternFlowPfcPausePauseClass0 struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // Description missing in models // default = Choice.Enum.value - Choice *PatternFlowUdpDstPort_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.PatternFlowUdpDstPort_Choice_Enum,oneof" json:"choice,omitempty"` + Choice *PatternFlowPfcPausePauseClass0_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.PatternFlowPfcPausePauseClass0_Choice_Enum,oneof" json:"choice,omitempty"` // Description missing in models // default = 0 Value *uint32 `protobuf:"varint,2,opt,name=value,proto3,oneof" json:"value,omitempty"` @@ -65157,32 +64344,32 @@ type PatternFlowUdpDstPort struct { // default = [0] Values []uint32 `protobuf:"varint,3,rep,packed,name=values,proto3" json:"values,omitempty"` // Description missing in models - Increment *PatternFlowUdpDstPortCounter `protobuf:"bytes,5,opt,name=increment,proto3" json:"increment,omitempty"` + Increment *PatternFlowPfcPausePauseClass0Counter `protobuf:"bytes,5,opt,name=increment,proto3" json:"increment,omitempty"` // Description missing in models - Decrement *PatternFlowUdpDstPortCounter `protobuf:"bytes,6,opt,name=decrement,proto3" json:"decrement,omitempty"` + Decrement *PatternFlowPfcPausePauseClass0Counter `protobuf:"bytes,6,opt,name=decrement,proto3" json:"decrement,omitempty"` // One or more metric tags can be used to enable tracking portion of or all bits in // a corresponding header field for metrics per each applicable value. These would appear // as tagged metrics in corresponding flow metrics. - MetricTags []*PatternFlowUdpDstPortMetricTag `protobuf:"bytes,7,rep,name=metric_tags,json=metricTags,proto3" json:"metric_tags,omitempty"` + MetricTags []*PatternFlowPfcPausePauseClass0MetricTag `protobuf:"bytes,7,rep,name=metric_tags,json=metricTags,proto3" json:"metric_tags,omitempty"` } -func (x *PatternFlowUdpDstPort) Reset() { - *x = PatternFlowUdpDstPort{} +func (x *PatternFlowPfcPausePauseClass0) Reset() { + *x = PatternFlowPfcPausePauseClass0{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[558] + mi := &file_otg_proto_msgTypes[521] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowUdpDstPort) String() string { +func (x *PatternFlowPfcPausePauseClass0) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowUdpDstPort) ProtoMessage() {} +func (*PatternFlowPfcPausePauseClass0) ProtoMessage() {} -func (x *PatternFlowUdpDstPort) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[558] +func (x *PatternFlowPfcPausePauseClass0) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[521] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -65193,47 +64380,47 @@ func (x *PatternFlowUdpDstPort) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use PatternFlowUdpDstPort.ProtoReflect.Descriptor instead. -func (*PatternFlowUdpDstPort) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{558} +// Deprecated: Use PatternFlowPfcPausePauseClass0.ProtoReflect.Descriptor instead. +func (*PatternFlowPfcPausePauseClass0) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{521} } -func (x *PatternFlowUdpDstPort) GetChoice() PatternFlowUdpDstPort_Choice_Enum { +func (x *PatternFlowPfcPausePauseClass0) GetChoice() PatternFlowPfcPausePauseClass0_Choice_Enum { if x != nil && x.Choice != nil { return *x.Choice } - return PatternFlowUdpDstPort_Choice_unspecified + return PatternFlowPfcPausePauseClass0_Choice_unspecified } -func (x *PatternFlowUdpDstPort) GetValue() uint32 { +func (x *PatternFlowPfcPausePauseClass0) GetValue() uint32 { if x != nil && x.Value != nil { return *x.Value } return 0 } -func (x *PatternFlowUdpDstPort) GetValues() []uint32 { +func (x *PatternFlowPfcPausePauseClass0) GetValues() []uint32 { if x != nil { return x.Values } return nil } -func (x *PatternFlowUdpDstPort) GetIncrement() *PatternFlowUdpDstPortCounter { +func (x *PatternFlowPfcPausePauseClass0) GetIncrement() *PatternFlowPfcPausePauseClass0Counter { if x != nil { return x.Increment } return nil } -func (x *PatternFlowUdpDstPort) GetDecrement() *PatternFlowUdpDstPortCounter { +func (x *PatternFlowPfcPausePauseClass0) GetDecrement() *PatternFlowPfcPausePauseClass0Counter { if x != nil { return x.Decrement } return nil } -func (x *PatternFlowUdpDstPort) GetMetricTags() []*PatternFlowUdpDstPortMetricTag { +func (x *PatternFlowPfcPausePauseClass0) GetMetricTags() []*PatternFlowPfcPausePauseClass0MetricTag { if x != nil { return x.MetricTags } @@ -65241,7 +64428,7 @@ func (x *PatternFlowUdpDstPort) GetMetricTags() []*PatternFlowUdpDstPortMetricTa } // integer counter pattern -type PatternFlowUdpLengthCounter struct { +type PatternFlowPfcPausePauseClass1Counter struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields @@ -65257,23 +64444,23 @@ type PatternFlowUdpLengthCounter struct { Count *uint32 `protobuf:"varint,3,opt,name=count,proto3,oneof" json:"count,omitempty"` } -func (x *PatternFlowUdpLengthCounter) Reset() { - *x = PatternFlowUdpLengthCounter{} +func (x *PatternFlowPfcPausePauseClass1Counter) Reset() { + *x = PatternFlowPfcPausePauseClass1Counter{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[559] + mi := &file_otg_proto_msgTypes[522] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowUdpLengthCounter) String() string { +func (x *PatternFlowPfcPausePauseClass1Counter) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowUdpLengthCounter) ProtoMessage() {} +func (*PatternFlowPfcPausePauseClass1Counter) ProtoMessage() {} -func (x *PatternFlowUdpLengthCounter) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[559] +func (x *PatternFlowPfcPausePauseClass1Counter) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[522] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -65284,26 +64471,26 @@ func (x *PatternFlowUdpLengthCounter) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use PatternFlowUdpLengthCounter.ProtoReflect.Descriptor instead. -func (*PatternFlowUdpLengthCounter) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{559} +// Deprecated: Use PatternFlowPfcPausePauseClass1Counter.ProtoReflect.Descriptor instead. +func (*PatternFlowPfcPausePauseClass1Counter) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{522} } -func (x *PatternFlowUdpLengthCounter) GetStart() uint32 { +func (x *PatternFlowPfcPausePauseClass1Counter) GetStart() uint32 { if x != nil && x.Start != nil { return *x.Start } return 0 } -func (x *PatternFlowUdpLengthCounter) GetStep() uint32 { +func (x *PatternFlowPfcPausePauseClass1Counter) GetStep() uint32 { if x != nil && x.Step != nil { return *x.Step } return 0 } -func (x *PatternFlowUdpLengthCounter) GetCount() uint32 { +func (x *PatternFlowPfcPausePauseClass1Counter) GetCount() uint32 { if x != nil && x.Count != nil { return *x.Count } @@ -65313,7 +64500,7 @@ func (x *PatternFlowUdpLengthCounter) GetCount() uint32 { // Metric tag can be used to enable tracking portion of or all bits in a corresponding // header field for metrics per each applicable value. These would appear as tagged // metrics in corresponding flow metrics. -type PatternFlowUdpLengthMetricTag struct { +type PatternFlowPfcPausePauseClass1MetricTag struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields @@ -65331,23 +64518,23 @@ type PatternFlowUdpLengthMetricTag struct { Length *uint32 `protobuf:"varint,3,opt,name=length,proto3,oneof" json:"length,omitempty"` } -func (x *PatternFlowUdpLengthMetricTag) Reset() { - *x = PatternFlowUdpLengthMetricTag{} +func (x *PatternFlowPfcPausePauseClass1MetricTag) Reset() { + *x = PatternFlowPfcPausePauseClass1MetricTag{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[560] + mi := &file_otg_proto_msgTypes[523] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowUdpLengthMetricTag) String() string { +func (x *PatternFlowPfcPausePauseClass1MetricTag) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowUdpLengthMetricTag) ProtoMessage() {} +func (*PatternFlowPfcPausePauseClass1MetricTag) ProtoMessage() {} -func (x *PatternFlowUdpLengthMetricTag) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[560] +func (x *PatternFlowPfcPausePauseClass1MetricTag) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[523] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -65358,41 +64545,41 @@ func (x *PatternFlowUdpLengthMetricTag) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use PatternFlowUdpLengthMetricTag.ProtoReflect.Descriptor instead. -func (*PatternFlowUdpLengthMetricTag) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{560} +// Deprecated: Use PatternFlowPfcPausePauseClass1MetricTag.ProtoReflect.Descriptor instead. +func (*PatternFlowPfcPausePauseClass1MetricTag) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{523} } -func (x *PatternFlowUdpLengthMetricTag) GetName() string { +func (x *PatternFlowPfcPausePauseClass1MetricTag) GetName() string { if x != nil && x.Name != nil { return *x.Name } return "" } -func (x *PatternFlowUdpLengthMetricTag) GetOffset() uint32 { +func (x *PatternFlowPfcPausePauseClass1MetricTag) GetOffset() uint32 { if x != nil && x.Offset != nil { return *x.Offset } return 0 } -func (x *PatternFlowUdpLengthMetricTag) GetLength() uint32 { +func (x *PatternFlowPfcPausePauseClass1MetricTag) GetLength() uint32 { if x != nil && x.Length != nil { return *x.Length } return 0 } -// Length -type PatternFlowUdpLength struct { +// Pause class 1 +type PatternFlowPfcPausePauseClass1 struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // Description missing in models // default = Choice.Enum.value - Choice *PatternFlowUdpLength_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.PatternFlowUdpLength_Choice_Enum,oneof" json:"choice,omitempty"` + Choice *PatternFlowPfcPausePauseClass1_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.PatternFlowPfcPausePauseClass1_Choice_Enum,oneof" json:"choice,omitempty"` // Description missing in models // default = 0 Value *uint32 `protobuf:"varint,2,opt,name=value,proto3,oneof" json:"value,omitempty"` @@ -65400,32 +64587,32 @@ type PatternFlowUdpLength struct { // default = [0] Values []uint32 `protobuf:"varint,3,rep,packed,name=values,proto3" json:"values,omitempty"` // Description missing in models - Increment *PatternFlowUdpLengthCounter `protobuf:"bytes,5,opt,name=increment,proto3" json:"increment,omitempty"` + Increment *PatternFlowPfcPausePauseClass1Counter `protobuf:"bytes,5,opt,name=increment,proto3" json:"increment,omitempty"` // Description missing in models - Decrement *PatternFlowUdpLengthCounter `protobuf:"bytes,6,opt,name=decrement,proto3" json:"decrement,omitempty"` + Decrement *PatternFlowPfcPausePauseClass1Counter `protobuf:"bytes,6,opt,name=decrement,proto3" json:"decrement,omitempty"` // One or more metric tags can be used to enable tracking portion of or all bits in // a corresponding header field for metrics per each applicable value. These would appear // as tagged metrics in corresponding flow metrics. - MetricTags []*PatternFlowUdpLengthMetricTag `protobuf:"bytes,7,rep,name=metric_tags,json=metricTags,proto3" json:"metric_tags,omitempty"` + MetricTags []*PatternFlowPfcPausePauseClass1MetricTag `protobuf:"bytes,7,rep,name=metric_tags,json=metricTags,proto3" json:"metric_tags,omitempty"` } -func (x *PatternFlowUdpLength) Reset() { - *x = PatternFlowUdpLength{} +func (x *PatternFlowPfcPausePauseClass1) Reset() { + *x = PatternFlowPfcPausePauseClass1{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[561] + mi := &file_otg_proto_msgTypes[524] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowUdpLength) String() string { +func (x *PatternFlowPfcPausePauseClass1) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowUdpLength) ProtoMessage() {} +func (*PatternFlowPfcPausePauseClass1) ProtoMessage() {} -func (x *PatternFlowUdpLength) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[561] +func (x *PatternFlowPfcPausePauseClass1) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[524] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -65436,86 +64623,87 @@ func (x *PatternFlowUdpLength) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use PatternFlowUdpLength.ProtoReflect.Descriptor instead. -func (*PatternFlowUdpLength) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{561} +// Deprecated: Use PatternFlowPfcPausePauseClass1.ProtoReflect.Descriptor instead. +func (*PatternFlowPfcPausePauseClass1) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{524} } -func (x *PatternFlowUdpLength) GetChoice() PatternFlowUdpLength_Choice_Enum { +func (x *PatternFlowPfcPausePauseClass1) GetChoice() PatternFlowPfcPausePauseClass1_Choice_Enum { if x != nil && x.Choice != nil { return *x.Choice } - return PatternFlowUdpLength_Choice_unspecified + return PatternFlowPfcPausePauseClass1_Choice_unspecified } -func (x *PatternFlowUdpLength) GetValue() uint32 { +func (x *PatternFlowPfcPausePauseClass1) GetValue() uint32 { if x != nil && x.Value != nil { return *x.Value } return 0 } -func (x *PatternFlowUdpLength) GetValues() []uint32 { +func (x *PatternFlowPfcPausePauseClass1) GetValues() []uint32 { if x != nil { return x.Values } return nil } -func (x *PatternFlowUdpLength) GetIncrement() *PatternFlowUdpLengthCounter { +func (x *PatternFlowPfcPausePauseClass1) GetIncrement() *PatternFlowPfcPausePauseClass1Counter { if x != nil { return x.Increment } return nil } -func (x *PatternFlowUdpLength) GetDecrement() *PatternFlowUdpLengthCounter { +func (x *PatternFlowPfcPausePauseClass1) GetDecrement() *PatternFlowPfcPausePauseClass1Counter { if x != nil { return x.Decrement } return nil } -func (x *PatternFlowUdpLength) GetMetricTags() []*PatternFlowUdpLengthMetricTag { +func (x *PatternFlowPfcPausePauseClass1) GetMetricTags() []*PatternFlowPfcPausePauseClass1MetricTag { if x != nil { return x.MetricTags } return nil } -// UDP checksum -type PatternFlowUdpChecksum struct { +// integer counter pattern +type PatternFlowPfcPausePauseClass2Counter struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // The type of checksum - // default = Choice.Enum.generated - Choice *PatternFlowUdpChecksum_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.PatternFlowUdpChecksum_Choice_Enum,oneof" json:"choice,omitempty"` - // A system generated checksum value - // default = Generated.Enum.good - Generated *PatternFlowUdpChecksum_Generated_Enum `protobuf:"varint,2,opt,name=generated,proto3,enum=otg.PatternFlowUdpChecksum_Generated_Enum,oneof" json:"generated,omitempty"` - // A custom checksum value - Custom *uint32 `protobuf:"varint,3,opt,name=custom,proto3,oneof" json:"custom,omitempty"` + // Description missing in models + // default = 0 + Start *uint32 `protobuf:"varint,1,opt,name=start,proto3,oneof" json:"start,omitempty"` + // Description missing in models + // default = 1 + Step *uint32 `protobuf:"varint,2,opt,name=step,proto3,oneof" json:"step,omitempty"` + // Description missing in models + // default = 1 + Count *uint32 `protobuf:"varint,3,opt,name=count,proto3,oneof" json:"count,omitempty"` } -func (x *PatternFlowUdpChecksum) Reset() { - *x = PatternFlowUdpChecksum{} +func (x *PatternFlowPfcPausePauseClass2Counter) Reset() { + *x = PatternFlowPfcPausePauseClass2Counter{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[562] + mi := &file_otg_proto_msgTypes[525] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowUdpChecksum) String() string { +func (x *PatternFlowPfcPausePauseClass2Counter) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowUdpChecksum) ProtoMessage() {} +func (*PatternFlowPfcPausePauseClass2Counter) ProtoMessage() {} -func (x *PatternFlowUdpChecksum) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[562] +func (x *PatternFlowPfcPausePauseClass2Counter) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[525] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -65526,96 +64714,26 @@ func (x *PatternFlowUdpChecksum) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use PatternFlowUdpChecksum.ProtoReflect.Descriptor instead. -func (*PatternFlowUdpChecksum) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{562} +// Deprecated: Use PatternFlowPfcPausePauseClass2Counter.ProtoReflect.Descriptor instead. +func (*PatternFlowPfcPausePauseClass2Counter) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{525} } -func (x *PatternFlowUdpChecksum) GetChoice() PatternFlowUdpChecksum_Choice_Enum { - if x != nil && x.Choice != nil { - return *x.Choice +func (x *PatternFlowPfcPausePauseClass2Counter) GetStart() uint32 { + if x != nil && x.Start != nil { + return *x.Start } - return PatternFlowUdpChecksum_Choice_unspecified + return 0 } -func (x *PatternFlowUdpChecksum) GetGenerated() PatternFlowUdpChecksum_Generated_Enum { - if x != nil && x.Generated != nil { - return *x.Generated - } - return PatternFlowUdpChecksum_Generated_unspecified -} - -func (x *PatternFlowUdpChecksum) GetCustom() uint32 { - if x != nil && x.Custom != nil { - return *x.Custom - } - return 0 -} - -// integer counter pattern -type PatternFlowGreChecksumPresentCounter struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // Description missing in models - // default = 0 - Start *uint32 `protobuf:"varint,1,opt,name=start,proto3,oneof" json:"start,omitempty"` - // Description missing in models - // default = 1 - Step *uint32 `protobuf:"varint,2,opt,name=step,proto3,oneof" json:"step,omitempty"` - // Description missing in models - // default = 1 - Count *uint32 `protobuf:"varint,3,opt,name=count,proto3,oneof" json:"count,omitempty"` -} - -func (x *PatternFlowGreChecksumPresentCounter) Reset() { - *x = PatternFlowGreChecksumPresentCounter{} - if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[563] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *PatternFlowGreChecksumPresentCounter) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*PatternFlowGreChecksumPresentCounter) ProtoMessage() {} - -func (x *PatternFlowGreChecksumPresentCounter) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[563] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use PatternFlowGreChecksumPresentCounter.ProtoReflect.Descriptor instead. -func (*PatternFlowGreChecksumPresentCounter) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{563} -} - -func (x *PatternFlowGreChecksumPresentCounter) GetStart() uint32 { - if x != nil && x.Start != nil { - return *x.Start - } - return 0 -} - -func (x *PatternFlowGreChecksumPresentCounter) GetStep() uint32 { +func (x *PatternFlowPfcPausePauseClass2Counter) GetStep() uint32 { if x != nil && x.Step != nil { return *x.Step } return 0 } -func (x *PatternFlowGreChecksumPresentCounter) GetCount() uint32 { +func (x *PatternFlowPfcPausePauseClass2Counter) GetCount() uint32 { if x != nil && x.Count != nil { return *x.Count } @@ -65625,7 +64743,7 @@ func (x *PatternFlowGreChecksumPresentCounter) GetCount() uint32 { // Metric tag can be used to enable tracking portion of or all bits in a corresponding // header field for metrics per each applicable value. These would appear as tagged // metrics in corresponding flow metrics. -type PatternFlowGreChecksumPresentMetricTag struct { +type PatternFlowPfcPausePauseClass2MetricTag struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields @@ -65639,27 +64757,27 @@ type PatternFlowGreChecksumPresentMetricTag struct { Offset *uint32 `protobuf:"varint,2,opt,name=offset,proto3,oneof" json:"offset,omitempty"` // Number of bits to track for metrics starting from configured offset of corresponding // header field - // default = 1 + // default = 16 Length *uint32 `protobuf:"varint,3,opt,name=length,proto3,oneof" json:"length,omitempty"` } -func (x *PatternFlowGreChecksumPresentMetricTag) Reset() { - *x = PatternFlowGreChecksumPresentMetricTag{} +func (x *PatternFlowPfcPausePauseClass2MetricTag) Reset() { + *x = PatternFlowPfcPausePauseClass2MetricTag{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[564] + mi := &file_otg_proto_msgTypes[526] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowGreChecksumPresentMetricTag) String() string { +func (x *PatternFlowPfcPausePauseClass2MetricTag) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowGreChecksumPresentMetricTag) ProtoMessage() {} +func (*PatternFlowPfcPausePauseClass2MetricTag) ProtoMessage() {} -func (x *PatternFlowGreChecksumPresentMetricTag) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[564] +func (x *PatternFlowPfcPausePauseClass2MetricTag) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[526] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -65670,41 +64788,41 @@ func (x *PatternFlowGreChecksumPresentMetricTag) ProtoReflect() protoreflect.Mes return mi.MessageOf(x) } -// Deprecated: Use PatternFlowGreChecksumPresentMetricTag.ProtoReflect.Descriptor instead. -func (*PatternFlowGreChecksumPresentMetricTag) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{564} +// Deprecated: Use PatternFlowPfcPausePauseClass2MetricTag.ProtoReflect.Descriptor instead. +func (*PatternFlowPfcPausePauseClass2MetricTag) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{526} } -func (x *PatternFlowGreChecksumPresentMetricTag) GetName() string { +func (x *PatternFlowPfcPausePauseClass2MetricTag) GetName() string { if x != nil && x.Name != nil { return *x.Name } return "" } -func (x *PatternFlowGreChecksumPresentMetricTag) GetOffset() uint32 { +func (x *PatternFlowPfcPausePauseClass2MetricTag) GetOffset() uint32 { if x != nil && x.Offset != nil { return *x.Offset } return 0 } -func (x *PatternFlowGreChecksumPresentMetricTag) GetLength() uint32 { +func (x *PatternFlowPfcPausePauseClass2MetricTag) GetLength() uint32 { if x != nil && x.Length != nil { return *x.Length } return 0 } -// Checksum present bit -type PatternFlowGreChecksumPresent struct { +// Pause class 2 +type PatternFlowPfcPausePauseClass2 struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // Description missing in models // default = Choice.Enum.value - Choice *PatternFlowGreChecksumPresent_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.PatternFlowGreChecksumPresent_Choice_Enum,oneof" json:"choice,omitempty"` + Choice *PatternFlowPfcPausePauseClass2_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.PatternFlowPfcPausePauseClass2_Choice_Enum,oneof" json:"choice,omitempty"` // Description missing in models // default = 0 Value *uint32 `protobuf:"varint,2,opt,name=value,proto3,oneof" json:"value,omitempty"` @@ -65712,32 +64830,32 @@ type PatternFlowGreChecksumPresent struct { // default = [0] Values []uint32 `protobuf:"varint,3,rep,packed,name=values,proto3" json:"values,omitempty"` // Description missing in models - Increment *PatternFlowGreChecksumPresentCounter `protobuf:"bytes,5,opt,name=increment,proto3" json:"increment,omitempty"` + Increment *PatternFlowPfcPausePauseClass2Counter `protobuf:"bytes,5,opt,name=increment,proto3" json:"increment,omitempty"` // Description missing in models - Decrement *PatternFlowGreChecksumPresentCounter `protobuf:"bytes,6,opt,name=decrement,proto3" json:"decrement,omitempty"` + Decrement *PatternFlowPfcPausePauseClass2Counter `protobuf:"bytes,6,opt,name=decrement,proto3" json:"decrement,omitempty"` // One or more metric tags can be used to enable tracking portion of or all bits in // a corresponding header field for metrics per each applicable value. These would appear // as tagged metrics in corresponding flow metrics. - MetricTags []*PatternFlowGreChecksumPresentMetricTag `protobuf:"bytes,7,rep,name=metric_tags,json=metricTags,proto3" json:"metric_tags,omitempty"` + MetricTags []*PatternFlowPfcPausePauseClass2MetricTag `protobuf:"bytes,7,rep,name=metric_tags,json=metricTags,proto3" json:"metric_tags,omitempty"` } -func (x *PatternFlowGreChecksumPresent) Reset() { - *x = PatternFlowGreChecksumPresent{} +func (x *PatternFlowPfcPausePauseClass2) Reset() { + *x = PatternFlowPfcPausePauseClass2{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[565] + mi := &file_otg_proto_msgTypes[527] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowGreChecksumPresent) String() string { +func (x *PatternFlowPfcPausePauseClass2) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowGreChecksumPresent) ProtoMessage() {} +func (*PatternFlowPfcPausePauseClass2) ProtoMessage() {} -func (x *PatternFlowGreChecksumPresent) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[565] +func (x *PatternFlowPfcPausePauseClass2) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[527] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -65748,47 +64866,47 @@ func (x *PatternFlowGreChecksumPresent) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use PatternFlowGreChecksumPresent.ProtoReflect.Descriptor instead. -func (*PatternFlowGreChecksumPresent) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{565} +// Deprecated: Use PatternFlowPfcPausePauseClass2.ProtoReflect.Descriptor instead. +func (*PatternFlowPfcPausePauseClass2) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{527} } -func (x *PatternFlowGreChecksumPresent) GetChoice() PatternFlowGreChecksumPresent_Choice_Enum { +func (x *PatternFlowPfcPausePauseClass2) GetChoice() PatternFlowPfcPausePauseClass2_Choice_Enum { if x != nil && x.Choice != nil { return *x.Choice } - return PatternFlowGreChecksumPresent_Choice_unspecified + return PatternFlowPfcPausePauseClass2_Choice_unspecified } -func (x *PatternFlowGreChecksumPresent) GetValue() uint32 { +func (x *PatternFlowPfcPausePauseClass2) GetValue() uint32 { if x != nil && x.Value != nil { return *x.Value } return 0 } -func (x *PatternFlowGreChecksumPresent) GetValues() []uint32 { +func (x *PatternFlowPfcPausePauseClass2) GetValues() []uint32 { if x != nil { return x.Values } return nil } -func (x *PatternFlowGreChecksumPresent) GetIncrement() *PatternFlowGreChecksumPresentCounter { +func (x *PatternFlowPfcPausePauseClass2) GetIncrement() *PatternFlowPfcPausePauseClass2Counter { if x != nil { return x.Increment } return nil } -func (x *PatternFlowGreChecksumPresent) GetDecrement() *PatternFlowGreChecksumPresentCounter { +func (x *PatternFlowPfcPausePauseClass2) GetDecrement() *PatternFlowPfcPausePauseClass2Counter { if x != nil { return x.Decrement } return nil } -func (x *PatternFlowGreChecksumPresent) GetMetricTags() []*PatternFlowGreChecksumPresentMetricTag { +func (x *PatternFlowPfcPausePauseClass2) GetMetricTags() []*PatternFlowPfcPausePauseClass2MetricTag { if x != nil { return x.MetricTags } @@ -65796,7 +64914,7 @@ func (x *PatternFlowGreChecksumPresent) GetMetricTags() []*PatternFlowGreChecksu } // integer counter pattern -type PatternFlowGreReserved0Counter struct { +type PatternFlowPfcPausePauseClass3Counter struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields @@ -65812,23 +64930,23 @@ type PatternFlowGreReserved0Counter struct { Count *uint32 `protobuf:"varint,3,opt,name=count,proto3,oneof" json:"count,omitempty"` } -func (x *PatternFlowGreReserved0Counter) Reset() { - *x = PatternFlowGreReserved0Counter{} +func (x *PatternFlowPfcPausePauseClass3Counter) Reset() { + *x = PatternFlowPfcPausePauseClass3Counter{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[566] + mi := &file_otg_proto_msgTypes[528] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowGreReserved0Counter) String() string { +func (x *PatternFlowPfcPausePauseClass3Counter) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowGreReserved0Counter) ProtoMessage() {} +func (*PatternFlowPfcPausePauseClass3Counter) ProtoMessage() {} -func (x *PatternFlowGreReserved0Counter) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[566] +func (x *PatternFlowPfcPausePauseClass3Counter) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[528] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -65839,26 +64957,26 @@ func (x *PatternFlowGreReserved0Counter) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use PatternFlowGreReserved0Counter.ProtoReflect.Descriptor instead. -func (*PatternFlowGreReserved0Counter) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{566} +// Deprecated: Use PatternFlowPfcPausePauseClass3Counter.ProtoReflect.Descriptor instead. +func (*PatternFlowPfcPausePauseClass3Counter) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{528} } -func (x *PatternFlowGreReserved0Counter) GetStart() uint32 { +func (x *PatternFlowPfcPausePauseClass3Counter) GetStart() uint32 { if x != nil && x.Start != nil { return *x.Start } return 0 } -func (x *PatternFlowGreReserved0Counter) GetStep() uint32 { +func (x *PatternFlowPfcPausePauseClass3Counter) GetStep() uint32 { if x != nil && x.Step != nil { return *x.Step } return 0 } -func (x *PatternFlowGreReserved0Counter) GetCount() uint32 { +func (x *PatternFlowPfcPausePauseClass3Counter) GetCount() uint32 { if x != nil && x.Count != nil { return *x.Count } @@ -65868,7 +64986,7 @@ func (x *PatternFlowGreReserved0Counter) GetCount() uint32 { // Metric tag can be used to enable tracking portion of or all bits in a corresponding // header field for metrics per each applicable value. These would appear as tagged // metrics in corresponding flow metrics. -type PatternFlowGreReserved0MetricTag struct { +type PatternFlowPfcPausePauseClass3MetricTag struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields @@ -65882,27 +65000,27 @@ type PatternFlowGreReserved0MetricTag struct { Offset *uint32 `protobuf:"varint,2,opt,name=offset,proto3,oneof" json:"offset,omitempty"` // Number of bits to track for metrics starting from configured offset of corresponding // header field - // default = 12 + // default = 16 Length *uint32 `protobuf:"varint,3,opt,name=length,proto3,oneof" json:"length,omitempty"` } -func (x *PatternFlowGreReserved0MetricTag) Reset() { - *x = PatternFlowGreReserved0MetricTag{} +func (x *PatternFlowPfcPausePauseClass3MetricTag) Reset() { + *x = PatternFlowPfcPausePauseClass3MetricTag{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[567] + mi := &file_otg_proto_msgTypes[529] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowGreReserved0MetricTag) String() string { +func (x *PatternFlowPfcPausePauseClass3MetricTag) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowGreReserved0MetricTag) ProtoMessage() {} +func (*PatternFlowPfcPausePauseClass3MetricTag) ProtoMessage() {} -func (x *PatternFlowGreReserved0MetricTag) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[567] +func (x *PatternFlowPfcPausePauseClass3MetricTag) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[529] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -65913,41 +65031,41 @@ func (x *PatternFlowGreReserved0MetricTag) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use PatternFlowGreReserved0MetricTag.ProtoReflect.Descriptor instead. -func (*PatternFlowGreReserved0MetricTag) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{567} +// Deprecated: Use PatternFlowPfcPausePauseClass3MetricTag.ProtoReflect.Descriptor instead. +func (*PatternFlowPfcPausePauseClass3MetricTag) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{529} } -func (x *PatternFlowGreReserved0MetricTag) GetName() string { +func (x *PatternFlowPfcPausePauseClass3MetricTag) GetName() string { if x != nil && x.Name != nil { return *x.Name } return "" } -func (x *PatternFlowGreReserved0MetricTag) GetOffset() uint32 { +func (x *PatternFlowPfcPausePauseClass3MetricTag) GetOffset() uint32 { if x != nil && x.Offset != nil { return *x.Offset } return 0 } -func (x *PatternFlowGreReserved0MetricTag) GetLength() uint32 { +func (x *PatternFlowPfcPausePauseClass3MetricTag) GetLength() uint32 { if x != nil && x.Length != nil { return *x.Length } return 0 } -// Reserved bits -type PatternFlowGreReserved0 struct { +// Pause class 3 +type PatternFlowPfcPausePauseClass3 struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // Description missing in models // default = Choice.Enum.value - Choice *PatternFlowGreReserved0_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.PatternFlowGreReserved0_Choice_Enum,oneof" json:"choice,omitempty"` + Choice *PatternFlowPfcPausePauseClass3_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.PatternFlowPfcPausePauseClass3_Choice_Enum,oneof" json:"choice,omitempty"` // Description missing in models // default = 0 Value *uint32 `protobuf:"varint,2,opt,name=value,proto3,oneof" json:"value,omitempty"` @@ -65955,32 +65073,32 @@ type PatternFlowGreReserved0 struct { // default = [0] Values []uint32 `protobuf:"varint,3,rep,packed,name=values,proto3" json:"values,omitempty"` // Description missing in models - Increment *PatternFlowGreReserved0Counter `protobuf:"bytes,5,opt,name=increment,proto3" json:"increment,omitempty"` + Increment *PatternFlowPfcPausePauseClass3Counter `protobuf:"bytes,5,opt,name=increment,proto3" json:"increment,omitempty"` // Description missing in models - Decrement *PatternFlowGreReserved0Counter `protobuf:"bytes,6,opt,name=decrement,proto3" json:"decrement,omitempty"` + Decrement *PatternFlowPfcPausePauseClass3Counter `protobuf:"bytes,6,opt,name=decrement,proto3" json:"decrement,omitempty"` // One or more metric tags can be used to enable tracking portion of or all bits in // a corresponding header field for metrics per each applicable value. These would appear // as tagged metrics in corresponding flow metrics. - MetricTags []*PatternFlowGreReserved0MetricTag `protobuf:"bytes,7,rep,name=metric_tags,json=metricTags,proto3" json:"metric_tags,omitempty"` + MetricTags []*PatternFlowPfcPausePauseClass3MetricTag `protobuf:"bytes,7,rep,name=metric_tags,json=metricTags,proto3" json:"metric_tags,omitempty"` } -func (x *PatternFlowGreReserved0) Reset() { - *x = PatternFlowGreReserved0{} +func (x *PatternFlowPfcPausePauseClass3) Reset() { + *x = PatternFlowPfcPausePauseClass3{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[568] + mi := &file_otg_proto_msgTypes[530] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowGreReserved0) String() string { +func (x *PatternFlowPfcPausePauseClass3) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowGreReserved0) ProtoMessage() {} +func (*PatternFlowPfcPausePauseClass3) ProtoMessage() {} -func (x *PatternFlowGreReserved0) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[568] +func (x *PatternFlowPfcPausePauseClass3) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[530] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -65991,47 +65109,47 @@ func (x *PatternFlowGreReserved0) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use PatternFlowGreReserved0.ProtoReflect.Descriptor instead. -func (*PatternFlowGreReserved0) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{568} +// Deprecated: Use PatternFlowPfcPausePauseClass3.ProtoReflect.Descriptor instead. +func (*PatternFlowPfcPausePauseClass3) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{530} } -func (x *PatternFlowGreReserved0) GetChoice() PatternFlowGreReserved0_Choice_Enum { +func (x *PatternFlowPfcPausePauseClass3) GetChoice() PatternFlowPfcPausePauseClass3_Choice_Enum { if x != nil && x.Choice != nil { return *x.Choice } - return PatternFlowGreReserved0_Choice_unspecified + return PatternFlowPfcPausePauseClass3_Choice_unspecified } -func (x *PatternFlowGreReserved0) GetValue() uint32 { +func (x *PatternFlowPfcPausePauseClass3) GetValue() uint32 { if x != nil && x.Value != nil { return *x.Value } return 0 } -func (x *PatternFlowGreReserved0) GetValues() []uint32 { +func (x *PatternFlowPfcPausePauseClass3) GetValues() []uint32 { if x != nil { return x.Values } return nil } -func (x *PatternFlowGreReserved0) GetIncrement() *PatternFlowGreReserved0Counter { +func (x *PatternFlowPfcPausePauseClass3) GetIncrement() *PatternFlowPfcPausePauseClass3Counter { if x != nil { return x.Increment } return nil } -func (x *PatternFlowGreReserved0) GetDecrement() *PatternFlowGreReserved0Counter { +func (x *PatternFlowPfcPausePauseClass3) GetDecrement() *PatternFlowPfcPausePauseClass3Counter { if x != nil { return x.Decrement } return nil } -func (x *PatternFlowGreReserved0) GetMetricTags() []*PatternFlowGreReserved0MetricTag { +func (x *PatternFlowPfcPausePauseClass3) GetMetricTags() []*PatternFlowPfcPausePauseClass3MetricTag { if x != nil { return x.MetricTags } @@ -66039,7 +65157,7 @@ func (x *PatternFlowGreReserved0) GetMetricTags() []*PatternFlowGreReserved0Metr } // integer counter pattern -type PatternFlowGreVersionCounter struct { +type PatternFlowPfcPausePauseClass4Counter struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields @@ -66055,23 +65173,23 @@ type PatternFlowGreVersionCounter struct { Count *uint32 `protobuf:"varint,3,opt,name=count,proto3,oneof" json:"count,omitempty"` } -func (x *PatternFlowGreVersionCounter) Reset() { - *x = PatternFlowGreVersionCounter{} +func (x *PatternFlowPfcPausePauseClass4Counter) Reset() { + *x = PatternFlowPfcPausePauseClass4Counter{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[569] + mi := &file_otg_proto_msgTypes[531] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowGreVersionCounter) String() string { +func (x *PatternFlowPfcPausePauseClass4Counter) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowGreVersionCounter) ProtoMessage() {} +func (*PatternFlowPfcPausePauseClass4Counter) ProtoMessage() {} -func (x *PatternFlowGreVersionCounter) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[569] +func (x *PatternFlowPfcPausePauseClass4Counter) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[531] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -66082,26 +65200,26 @@ func (x *PatternFlowGreVersionCounter) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use PatternFlowGreVersionCounter.ProtoReflect.Descriptor instead. -func (*PatternFlowGreVersionCounter) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{569} +// Deprecated: Use PatternFlowPfcPausePauseClass4Counter.ProtoReflect.Descriptor instead. +func (*PatternFlowPfcPausePauseClass4Counter) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{531} } -func (x *PatternFlowGreVersionCounter) GetStart() uint32 { +func (x *PatternFlowPfcPausePauseClass4Counter) GetStart() uint32 { if x != nil && x.Start != nil { return *x.Start } return 0 } -func (x *PatternFlowGreVersionCounter) GetStep() uint32 { +func (x *PatternFlowPfcPausePauseClass4Counter) GetStep() uint32 { if x != nil && x.Step != nil { return *x.Step } return 0 } -func (x *PatternFlowGreVersionCounter) GetCount() uint32 { +func (x *PatternFlowPfcPausePauseClass4Counter) GetCount() uint32 { if x != nil && x.Count != nil { return *x.Count } @@ -66111,7 +65229,7 @@ func (x *PatternFlowGreVersionCounter) GetCount() uint32 { // Metric tag can be used to enable tracking portion of or all bits in a corresponding // header field for metrics per each applicable value. These would appear as tagged // metrics in corresponding flow metrics. -type PatternFlowGreVersionMetricTag struct { +type PatternFlowPfcPausePauseClass4MetricTag struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields @@ -66125,27 +65243,27 @@ type PatternFlowGreVersionMetricTag struct { Offset *uint32 `protobuf:"varint,2,opt,name=offset,proto3,oneof" json:"offset,omitempty"` // Number of bits to track for metrics starting from configured offset of corresponding // header field - // default = 3 + // default = 16 Length *uint32 `protobuf:"varint,3,opt,name=length,proto3,oneof" json:"length,omitempty"` } -func (x *PatternFlowGreVersionMetricTag) Reset() { - *x = PatternFlowGreVersionMetricTag{} +func (x *PatternFlowPfcPausePauseClass4MetricTag) Reset() { + *x = PatternFlowPfcPausePauseClass4MetricTag{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[570] + mi := &file_otg_proto_msgTypes[532] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowGreVersionMetricTag) String() string { +func (x *PatternFlowPfcPausePauseClass4MetricTag) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowGreVersionMetricTag) ProtoMessage() {} +func (*PatternFlowPfcPausePauseClass4MetricTag) ProtoMessage() {} -func (x *PatternFlowGreVersionMetricTag) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[570] +func (x *PatternFlowPfcPausePauseClass4MetricTag) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[532] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -66156,41 +65274,41 @@ func (x *PatternFlowGreVersionMetricTag) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use PatternFlowGreVersionMetricTag.ProtoReflect.Descriptor instead. -func (*PatternFlowGreVersionMetricTag) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{570} +// Deprecated: Use PatternFlowPfcPausePauseClass4MetricTag.ProtoReflect.Descriptor instead. +func (*PatternFlowPfcPausePauseClass4MetricTag) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{532} } -func (x *PatternFlowGreVersionMetricTag) GetName() string { +func (x *PatternFlowPfcPausePauseClass4MetricTag) GetName() string { if x != nil && x.Name != nil { return *x.Name } return "" } -func (x *PatternFlowGreVersionMetricTag) GetOffset() uint32 { +func (x *PatternFlowPfcPausePauseClass4MetricTag) GetOffset() uint32 { if x != nil && x.Offset != nil { return *x.Offset } return 0 } -func (x *PatternFlowGreVersionMetricTag) GetLength() uint32 { +func (x *PatternFlowPfcPausePauseClass4MetricTag) GetLength() uint32 { if x != nil && x.Length != nil { return *x.Length } return 0 } -// GRE version number -type PatternFlowGreVersion struct { +// Pause class 4 +type PatternFlowPfcPausePauseClass4 struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // Description missing in models // default = Choice.Enum.value - Choice *PatternFlowGreVersion_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.PatternFlowGreVersion_Choice_Enum,oneof" json:"choice,omitempty"` + Choice *PatternFlowPfcPausePauseClass4_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.PatternFlowPfcPausePauseClass4_Choice_Enum,oneof" json:"choice,omitempty"` // Description missing in models // default = 0 Value *uint32 `protobuf:"varint,2,opt,name=value,proto3,oneof" json:"value,omitempty"` @@ -66198,32 +65316,32 @@ type PatternFlowGreVersion struct { // default = [0] Values []uint32 `protobuf:"varint,3,rep,packed,name=values,proto3" json:"values,omitempty"` // Description missing in models - Increment *PatternFlowGreVersionCounter `protobuf:"bytes,5,opt,name=increment,proto3" json:"increment,omitempty"` + Increment *PatternFlowPfcPausePauseClass4Counter `protobuf:"bytes,5,opt,name=increment,proto3" json:"increment,omitempty"` // Description missing in models - Decrement *PatternFlowGreVersionCounter `protobuf:"bytes,6,opt,name=decrement,proto3" json:"decrement,omitempty"` + Decrement *PatternFlowPfcPausePauseClass4Counter `protobuf:"bytes,6,opt,name=decrement,proto3" json:"decrement,omitempty"` // One or more metric tags can be used to enable tracking portion of or all bits in // a corresponding header field for metrics per each applicable value. These would appear // as tagged metrics in corresponding flow metrics. - MetricTags []*PatternFlowGreVersionMetricTag `protobuf:"bytes,7,rep,name=metric_tags,json=metricTags,proto3" json:"metric_tags,omitempty"` + MetricTags []*PatternFlowPfcPausePauseClass4MetricTag `protobuf:"bytes,7,rep,name=metric_tags,json=metricTags,proto3" json:"metric_tags,omitempty"` } -func (x *PatternFlowGreVersion) Reset() { - *x = PatternFlowGreVersion{} +func (x *PatternFlowPfcPausePauseClass4) Reset() { + *x = PatternFlowPfcPausePauseClass4{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[571] + mi := &file_otg_proto_msgTypes[533] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowGreVersion) String() string { +func (x *PatternFlowPfcPausePauseClass4) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowGreVersion) ProtoMessage() {} +func (*PatternFlowPfcPausePauseClass4) ProtoMessage() {} -func (x *PatternFlowGreVersion) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[571] +func (x *PatternFlowPfcPausePauseClass4) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[533] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -66234,47 +65352,47 @@ func (x *PatternFlowGreVersion) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use PatternFlowGreVersion.ProtoReflect.Descriptor instead. -func (*PatternFlowGreVersion) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{571} +// Deprecated: Use PatternFlowPfcPausePauseClass4.ProtoReflect.Descriptor instead. +func (*PatternFlowPfcPausePauseClass4) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{533} } -func (x *PatternFlowGreVersion) GetChoice() PatternFlowGreVersion_Choice_Enum { +func (x *PatternFlowPfcPausePauseClass4) GetChoice() PatternFlowPfcPausePauseClass4_Choice_Enum { if x != nil && x.Choice != nil { return *x.Choice } - return PatternFlowGreVersion_Choice_unspecified + return PatternFlowPfcPausePauseClass4_Choice_unspecified } -func (x *PatternFlowGreVersion) GetValue() uint32 { +func (x *PatternFlowPfcPausePauseClass4) GetValue() uint32 { if x != nil && x.Value != nil { return *x.Value } return 0 } -func (x *PatternFlowGreVersion) GetValues() []uint32 { +func (x *PatternFlowPfcPausePauseClass4) GetValues() []uint32 { if x != nil { return x.Values } return nil } -func (x *PatternFlowGreVersion) GetIncrement() *PatternFlowGreVersionCounter { +func (x *PatternFlowPfcPausePauseClass4) GetIncrement() *PatternFlowPfcPausePauseClass4Counter { if x != nil { return x.Increment } return nil } -func (x *PatternFlowGreVersion) GetDecrement() *PatternFlowGreVersionCounter { +func (x *PatternFlowPfcPausePauseClass4) GetDecrement() *PatternFlowPfcPausePauseClass4Counter { if x != nil { return x.Decrement } return nil } -func (x *PatternFlowGreVersion) GetMetricTags() []*PatternFlowGreVersionMetricTag { +func (x *PatternFlowPfcPausePauseClass4) GetMetricTags() []*PatternFlowPfcPausePauseClass4MetricTag { if x != nil { return x.MetricTags } @@ -66282,13 +65400,13 @@ func (x *PatternFlowGreVersion) GetMetricTags() []*PatternFlowGreVersionMetricTa } // integer counter pattern -type PatternFlowGreProtocolCounter struct { +type PatternFlowPfcPausePauseClass5Counter struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // Description missing in models - // default = 2048 + // default = 0 Start *uint32 `protobuf:"varint,1,opt,name=start,proto3,oneof" json:"start,omitempty"` // Description missing in models // default = 1 @@ -66298,23 +65416,23 @@ type PatternFlowGreProtocolCounter struct { Count *uint32 `protobuf:"varint,3,opt,name=count,proto3,oneof" json:"count,omitempty"` } -func (x *PatternFlowGreProtocolCounter) Reset() { - *x = PatternFlowGreProtocolCounter{} +func (x *PatternFlowPfcPausePauseClass5Counter) Reset() { + *x = PatternFlowPfcPausePauseClass5Counter{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[572] + mi := &file_otg_proto_msgTypes[534] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowGreProtocolCounter) String() string { +func (x *PatternFlowPfcPausePauseClass5Counter) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowGreProtocolCounter) ProtoMessage() {} +func (*PatternFlowPfcPausePauseClass5Counter) ProtoMessage() {} -func (x *PatternFlowGreProtocolCounter) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[572] +func (x *PatternFlowPfcPausePauseClass5Counter) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[534] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -66325,26 +65443,26 @@ func (x *PatternFlowGreProtocolCounter) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use PatternFlowGreProtocolCounter.ProtoReflect.Descriptor instead. -func (*PatternFlowGreProtocolCounter) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{572} +// Deprecated: Use PatternFlowPfcPausePauseClass5Counter.ProtoReflect.Descriptor instead. +func (*PatternFlowPfcPausePauseClass5Counter) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{534} } -func (x *PatternFlowGreProtocolCounter) GetStart() uint32 { +func (x *PatternFlowPfcPausePauseClass5Counter) GetStart() uint32 { if x != nil && x.Start != nil { return *x.Start } return 0 } -func (x *PatternFlowGreProtocolCounter) GetStep() uint32 { +func (x *PatternFlowPfcPausePauseClass5Counter) GetStep() uint32 { if x != nil && x.Step != nil { return *x.Step } return 0 } -func (x *PatternFlowGreProtocolCounter) GetCount() uint32 { +func (x *PatternFlowPfcPausePauseClass5Counter) GetCount() uint32 { if x != nil && x.Count != nil { return *x.Count } @@ -66354,7 +65472,7 @@ func (x *PatternFlowGreProtocolCounter) GetCount() uint32 { // Metric tag can be used to enable tracking portion of or all bits in a corresponding // header field for metrics per each applicable value. These would appear as tagged // metrics in corresponding flow metrics. -type PatternFlowGreProtocolMetricTag struct { +type PatternFlowPfcPausePauseClass5MetricTag struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields @@ -66372,23 +65490,23 @@ type PatternFlowGreProtocolMetricTag struct { Length *uint32 `protobuf:"varint,3,opt,name=length,proto3,oneof" json:"length,omitempty"` } -func (x *PatternFlowGreProtocolMetricTag) Reset() { - *x = PatternFlowGreProtocolMetricTag{} +func (x *PatternFlowPfcPausePauseClass5MetricTag) Reset() { + *x = PatternFlowPfcPausePauseClass5MetricTag{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[573] + mi := &file_otg_proto_msgTypes[535] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowGreProtocolMetricTag) String() string { +func (x *PatternFlowPfcPausePauseClass5MetricTag) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowGreProtocolMetricTag) ProtoMessage() {} +func (*PatternFlowPfcPausePauseClass5MetricTag) ProtoMessage() {} -func (x *PatternFlowGreProtocolMetricTag) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[573] +func (x *PatternFlowPfcPausePauseClass5MetricTag) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[535] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -66399,74 +65517,74 @@ func (x *PatternFlowGreProtocolMetricTag) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use PatternFlowGreProtocolMetricTag.ProtoReflect.Descriptor instead. -func (*PatternFlowGreProtocolMetricTag) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{573} +// Deprecated: Use PatternFlowPfcPausePauseClass5MetricTag.ProtoReflect.Descriptor instead. +func (*PatternFlowPfcPausePauseClass5MetricTag) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{535} } -func (x *PatternFlowGreProtocolMetricTag) GetName() string { +func (x *PatternFlowPfcPausePauseClass5MetricTag) GetName() string { if x != nil && x.Name != nil { return *x.Name } return "" } -func (x *PatternFlowGreProtocolMetricTag) GetOffset() uint32 { +func (x *PatternFlowPfcPausePauseClass5MetricTag) GetOffset() uint32 { if x != nil && x.Offset != nil { return *x.Offset } return 0 } -func (x *PatternFlowGreProtocolMetricTag) GetLength() uint32 { +func (x *PatternFlowPfcPausePauseClass5MetricTag) GetLength() uint32 { if x != nil && x.Length != nil { return *x.Length } return 0 } -// Protocol type of encapsulated payload -type PatternFlowGreProtocol struct { +// Pause class 5 +type PatternFlowPfcPausePauseClass5 struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // Description missing in models // default = Choice.Enum.value - Choice *PatternFlowGreProtocol_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.PatternFlowGreProtocol_Choice_Enum,oneof" json:"choice,omitempty"` + Choice *PatternFlowPfcPausePauseClass5_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.PatternFlowPfcPausePauseClass5_Choice_Enum,oneof" json:"choice,omitempty"` // Description missing in models - // default = 2048 + // default = 0 Value *uint32 `protobuf:"varint,2,opt,name=value,proto3,oneof" json:"value,omitempty"` // Description missing in models - // default = [2048] + // default = [0] Values []uint32 `protobuf:"varint,3,rep,packed,name=values,proto3" json:"values,omitempty"` // Description missing in models - Increment *PatternFlowGreProtocolCounter `protobuf:"bytes,5,opt,name=increment,proto3" json:"increment,omitempty"` + Increment *PatternFlowPfcPausePauseClass5Counter `protobuf:"bytes,5,opt,name=increment,proto3" json:"increment,omitempty"` // Description missing in models - Decrement *PatternFlowGreProtocolCounter `protobuf:"bytes,6,opt,name=decrement,proto3" json:"decrement,omitempty"` + Decrement *PatternFlowPfcPausePauseClass5Counter `protobuf:"bytes,6,opt,name=decrement,proto3" json:"decrement,omitempty"` // One or more metric tags can be used to enable tracking portion of or all bits in // a corresponding header field for metrics per each applicable value. These would appear // as tagged metrics in corresponding flow metrics. - MetricTags []*PatternFlowGreProtocolMetricTag `protobuf:"bytes,7,rep,name=metric_tags,json=metricTags,proto3" json:"metric_tags,omitempty"` + MetricTags []*PatternFlowPfcPausePauseClass5MetricTag `protobuf:"bytes,7,rep,name=metric_tags,json=metricTags,proto3" json:"metric_tags,omitempty"` } -func (x *PatternFlowGreProtocol) Reset() { - *x = PatternFlowGreProtocol{} +func (x *PatternFlowPfcPausePauseClass5) Reset() { + *x = PatternFlowPfcPausePauseClass5{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[574] + mi := &file_otg_proto_msgTypes[536] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowGreProtocol) String() string { +func (x *PatternFlowPfcPausePauseClass5) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowGreProtocol) ProtoMessage() {} +func (*PatternFlowPfcPausePauseClass5) ProtoMessage() {} -func (x *PatternFlowGreProtocol) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[574] +func (x *PatternFlowPfcPausePauseClass5) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[536] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -66477,87 +65595,87 @@ func (x *PatternFlowGreProtocol) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use PatternFlowGreProtocol.ProtoReflect.Descriptor instead. -func (*PatternFlowGreProtocol) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{574} +// Deprecated: Use PatternFlowPfcPausePauseClass5.ProtoReflect.Descriptor instead. +func (*PatternFlowPfcPausePauseClass5) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{536} } -func (x *PatternFlowGreProtocol) GetChoice() PatternFlowGreProtocol_Choice_Enum { +func (x *PatternFlowPfcPausePauseClass5) GetChoice() PatternFlowPfcPausePauseClass5_Choice_Enum { if x != nil && x.Choice != nil { return *x.Choice } - return PatternFlowGreProtocol_Choice_unspecified + return PatternFlowPfcPausePauseClass5_Choice_unspecified } -func (x *PatternFlowGreProtocol) GetValue() uint32 { +func (x *PatternFlowPfcPausePauseClass5) GetValue() uint32 { if x != nil && x.Value != nil { return *x.Value } return 0 } -func (x *PatternFlowGreProtocol) GetValues() []uint32 { +func (x *PatternFlowPfcPausePauseClass5) GetValues() []uint32 { if x != nil { return x.Values } return nil } -func (x *PatternFlowGreProtocol) GetIncrement() *PatternFlowGreProtocolCounter { +func (x *PatternFlowPfcPausePauseClass5) GetIncrement() *PatternFlowPfcPausePauseClass5Counter { if x != nil { return x.Increment } return nil } -func (x *PatternFlowGreProtocol) GetDecrement() *PatternFlowGreProtocolCounter { +func (x *PatternFlowPfcPausePauseClass5) GetDecrement() *PatternFlowPfcPausePauseClass5Counter { if x != nil { return x.Decrement } return nil } -func (x *PatternFlowGreProtocol) GetMetricTags() []*PatternFlowGreProtocolMetricTag { +func (x *PatternFlowPfcPausePauseClass5) GetMetricTags() []*PatternFlowPfcPausePauseClass5MetricTag { if x != nil { return x.MetricTags } return nil } -// Optional checksum of GRE header and payload. Only present if the checksum_present -// bit is set. -type PatternFlowGreChecksum struct { +// integer counter pattern +type PatternFlowPfcPausePauseClass6Counter struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // The type of checksum - // default = Choice.Enum.generated - Choice *PatternFlowGreChecksum_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.PatternFlowGreChecksum_Choice_Enum,oneof" json:"choice,omitempty"` - // A system generated checksum value - // default = Generated.Enum.good - Generated *PatternFlowGreChecksum_Generated_Enum `protobuf:"varint,2,opt,name=generated,proto3,enum=otg.PatternFlowGreChecksum_Generated_Enum,oneof" json:"generated,omitempty"` - // A custom checksum value - Custom *uint32 `protobuf:"varint,3,opt,name=custom,proto3,oneof" json:"custom,omitempty"` + // Description missing in models + // default = 0 + Start *uint32 `protobuf:"varint,1,opt,name=start,proto3,oneof" json:"start,omitempty"` + // Description missing in models + // default = 1 + Step *uint32 `protobuf:"varint,2,opt,name=step,proto3,oneof" json:"step,omitempty"` + // Description missing in models + // default = 1 + Count *uint32 `protobuf:"varint,3,opt,name=count,proto3,oneof" json:"count,omitempty"` } -func (x *PatternFlowGreChecksum) Reset() { - *x = PatternFlowGreChecksum{} +func (x *PatternFlowPfcPausePauseClass6Counter) Reset() { + *x = PatternFlowPfcPausePauseClass6Counter{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[575] + mi := &file_otg_proto_msgTypes[537] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowGreChecksum) String() string { +func (x *PatternFlowPfcPausePauseClass6Counter) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowGreChecksum) ProtoMessage() {} +func (*PatternFlowPfcPausePauseClass6Counter) ProtoMessage() {} -func (x *PatternFlowGreChecksum) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[575] +func (x *PatternFlowPfcPausePauseClass6Counter) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[537] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -66568,96 +65686,26 @@ func (x *PatternFlowGreChecksum) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use PatternFlowGreChecksum.ProtoReflect.Descriptor instead. -func (*PatternFlowGreChecksum) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{575} +// Deprecated: Use PatternFlowPfcPausePauseClass6Counter.ProtoReflect.Descriptor instead. +func (*PatternFlowPfcPausePauseClass6Counter) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{537} } -func (x *PatternFlowGreChecksum) GetChoice() PatternFlowGreChecksum_Choice_Enum { - if x != nil && x.Choice != nil { - return *x.Choice +func (x *PatternFlowPfcPausePauseClass6Counter) GetStart() uint32 { + if x != nil && x.Start != nil { + return *x.Start } - return PatternFlowGreChecksum_Choice_unspecified + return 0 } -func (x *PatternFlowGreChecksum) GetGenerated() PatternFlowGreChecksum_Generated_Enum { - if x != nil && x.Generated != nil { - return *x.Generated - } - return PatternFlowGreChecksum_Generated_unspecified -} - -func (x *PatternFlowGreChecksum) GetCustom() uint32 { - if x != nil && x.Custom != nil { - return *x.Custom - } - return 0 -} - -// integer counter pattern -type PatternFlowGreReserved1Counter struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // Description missing in models - // default = 0 - Start *uint32 `protobuf:"varint,1,opt,name=start,proto3,oneof" json:"start,omitempty"` - // Description missing in models - // default = 1 - Step *uint32 `protobuf:"varint,2,opt,name=step,proto3,oneof" json:"step,omitempty"` - // Description missing in models - // default = 1 - Count *uint32 `protobuf:"varint,3,opt,name=count,proto3,oneof" json:"count,omitempty"` -} - -func (x *PatternFlowGreReserved1Counter) Reset() { - *x = PatternFlowGreReserved1Counter{} - if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[576] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *PatternFlowGreReserved1Counter) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*PatternFlowGreReserved1Counter) ProtoMessage() {} - -func (x *PatternFlowGreReserved1Counter) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[576] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use PatternFlowGreReserved1Counter.ProtoReflect.Descriptor instead. -func (*PatternFlowGreReserved1Counter) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{576} -} - -func (x *PatternFlowGreReserved1Counter) GetStart() uint32 { - if x != nil && x.Start != nil { - return *x.Start - } - return 0 -} - -func (x *PatternFlowGreReserved1Counter) GetStep() uint32 { +func (x *PatternFlowPfcPausePauseClass6Counter) GetStep() uint32 { if x != nil && x.Step != nil { return *x.Step } return 0 } -func (x *PatternFlowGreReserved1Counter) GetCount() uint32 { +func (x *PatternFlowPfcPausePauseClass6Counter) GetCount() uint32 { if x != nil && x.Count != nil { return *x.Count } @@ -66667,7 +65715,7 @@ func (x *PatternFlowGreReserved1Counter) GetCount() uint32 { // Metric tag can be used to enable tracking portion of or all bits in a corresponding // header field for metrics per each applicable value. These would appear as tagged // metrics in corresponding flow metrics. -type PatternFlowGreReserved1MetricTag struct { +type PatternFlowPfcPausePauseClass6MetricTag struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields @@ -66685,23 +65733,23 @@ type PatternFlowGreReserved1MetricTag struct { Length *uint32 `protobuf:"varint,3,opt,name=length,proto3,oneof" json:"length,omitempty"` } -func (x *PatternFlowGreReserved1MetricTag) Reset() { - *x = PatternFlowGreReserved1MetricTag{} +func (x *PatternFlowPfcPausePauseClass6MetricTag) Reset() { + *x = PatternFlowPfcPausePauseClass6MetricTag{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[577] + mi := &file_otg_proto_msgTypes[538] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowGreReserved1MetricTag) String() string { +func (x *PatternFlowPfcPausePauseClass6MetricTag) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowGreReserved1MetricTag) ProtoMessage() {} +func (*PatternFlowPfcPausePauseClass6MetricTag) ProtoMessage() {} -func (x *PatternFlowGreReserved1MetricTag) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[577] +func (x *PatternFlowPfcPausePauseClass6MetricTag) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[538] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -66712,41 +65760,41 @@ func (x *PatternFlowGreReserved1MetricTag) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use PatternFlowGreReserved1MetricTag.ProtoReflect.Descriptor instead. -func (*PatternFlowGreReserved1MetricTag) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{577} +// Deprecated: Use PatternFlowPfcPausePauseClass6MetricTag.ProtoReflect.Descriptor instead. +func (*PatternFlowPfcPausePauseClass6MetricTag) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{538} } -func (x *PatternFlowGreReserved1MetricTag) GetName() string { +func (x *PatternFlowPfcPausePauseClass6MetricTag) GetName() string { if x != nil && x.Name != nil { return *x.Name } return "" } -func (x *PatternFlowGreReserved1MetricTag) GetOffset() uint32 { +func (x *PatternFlowPfcPausePauseClass6MetricTag) GetOffset() uint32 { if x != nil && x.Offset != nil { return *x.Offset } return 0 } -func (x *PatternFlowGreReserved1MetricTag) GetLength() uint32 { +func (x *PatternFlowPfcPausePauseClass6MetricTag) GetLength() uint32 { if x != nil && x.Length != nil { return *x.Length } return 0 } -// Optional reserved field. Only present if the checksum_present bit is set. -type PatternFlowGreReserved1 struct { +// Pause class 6 +type PatternFlowPfcPausePauseClass6 struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // Description missing in models // default = Choice.Enum.value - Choice *PatternFlowGreReserved1_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.PatternFlowGreReserved1_Choice_Enum,oneof" json:"choice,omitempty"` + Choice *PatternFlowPfcPausePauseClass6_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.PatternFlowPfcPausePauseClass6_Choice_Enum,oneof" json:"choice,omitempty"` // Description missing in models // default = 0 Value *uint32 `protobuf:"varint,2,opt,name=value,proto3,oneof" json:"value,omitempty"` @@ -66754,32 +65802,32 @@ type PatternFlowGreReserved1 struct { // default = [0] Values []uint32 `protobuf:"varint,3,rep,packed,name=values,proto3" json:"values,omitempty"` // Description missing in models - Increment *PatternFlowGreReserved1Counter `protobuf:"bytes,5,opt,name=increment,proto3" json:"increment,omitempty"` + Increment *PatternFlowPfcPausePauseClass6Counter `protobuf:"bytes,5,opt,name=increment,proto3" json:"increment,omitempty"` // Description missing in models - Decrement *PatternFlowGreReserved1Counter `protobuf:"bytes,6,opt,name=decrement,proto3" json:"decrement,omitempty"` + Decrement *PatternFlowPfcPausePauseClass6Counter `protobuf:"bytes,6,opt,name=decrement,proto3" json:"decrement,omitempty"` // One or more metric tags can be used to enable tracking portion of or all bits in // a corresponding header field for metrics per each applicable value. These would appear // as tagged metrics in corresponding flow metrics. - MetricTags []*PatternFlowGreReserved1MetricTag `protobuf:"bytes,7,rep,name=metric_tags,json=metricTags,proto3" json:"metric_tags,omitempty"` + MetricTags []*PatternFlowPfcPausePauseClass6MetricTag `protobuf:"bytes,7,rep,name=metric_tags,json=metricTags,proto3" json:"metric_tags,omitempty"` } -func (x *PatternFlowGreReserved1) Reset() { - *x = PatternFlowGreReserved1{} +func (x *PatternFlowPfcPausePauseClass6) Reset() { + *x = PatternFlowPfcPausePauseClass6{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[578] + mi := &file_otg_proto_msgTypes[539] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowGreReserved1) String() string { +func (x *PatternFlowPfcPausePauseClass6) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowGreReserved1) ProtoMessage() {} +func (*PatternFlowPfcPausePauseClass6) ProtoMessage() {} -func (x *PatternFlowGreReserved1) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[578] +func (x *PatternFlowPfcPausePauseClass6) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[539] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -66790,47 +65838,47 @@ func (x *PatternFlowGreReserved1) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use PatternFlowGreReserved1.ProtoReflect.Descriptor instead. -func (*PatternFlowGreReserved1) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{578} +// Deprecated: Use PatternFlowPfcPausePauseClass6.ProtoReflect.Descriptor instead. +func (*PatternFlowPfcPausePauseClass6) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{539} } -func (x *PatternFlowGreReserved1) GetChoice() PatternFlowGreReserved1_Choice_Enum { +func (x *PatternFlowPfcPausePauseClass6) GetChoice() PatternFlowPfcPausePauseClass6_Choice_Enum { if x != nil && x.Choice != nil { return *x.Choice } - return PatternFlowGreReserved1_Choice_unspecified + return PatternFlowPfcPausePauseClass6_Choice_unspecified } -func (x *PatternFlowGreReserved1) GetValue() uint32 { +func (x *PatternFlowPfcPausePauseClass6) GetValue() uint32 { if x != nil && x.Value != nil { return *x.Value } return 0 } -func (x *PatternFlowGreReserved1) GetValues() []uint32 { +func (x *PatternFlowPfcPausePauseClass6) GetValues() []uint32 { if x != nil { return x.Values } return nil } -func (x *PatternFlowGreReserved1) GetIncrement() *PatternFlowGreReserved1Counter { +func (x *PatternFlowPfcPausePauseClass6) GetIncrement() *PatternFlowPfcPausePauseClass6Counter { if x != nil { return x.Increment } return nil } -func (x *PatternFlowGreReserved1) GetDecrement() *PatternFlowGreReserved1Counter { +func (x *PatternFlowPfcPausePauseClass6) GetDecrement() *PatternFlowPfcPausePauseClass6Counter { if x != nil { return x.Decrement } return nil } -func (x *PatternFlowGreReserved1) GetMetricTags() []*PatternFlowGreReserved1MetricTag { +func (x *PatternFlowPfcPausePauseClass6) GetMetricTags() []*PatternFlowPfcPausePauseClass6MetricTag { if x != nil { return x.MetricTags } @@ -66838,13 +65886,13 @@ func (x *PatternFlowGreReserved1) GetMetricTags() []*PatternFlowGreReserved1Metr } // integer counter pattern -type PatternFlowGtpv1VersionCounter struct { +type PatternFlowPfcPausePauseClass7Counter struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // Description missing in models - // default = 1 + // default = 0 Start *uint32 `protobuf:"varint,1,opt,name=start,proto3,oneof" json:"start,omitempty"` // Description missing in models // default = 1 @@ -66854,23 +65902,23 @@ type PatternFlowGtpv1VersionCounter struct { Count *uint32 `protobuf:"varint,3,opt,name=count,proto3,oneof" json:"count,omitempty"` } -func (x *PatternFlowGtpv1VersionCounter) Reset() { - *x = PatternFlowGtpv1VersionCounter{} +func (x *PatternFlowPfcPausePauseClass7Counter) Reset() { + *x = PatternFlowPfcPausePauseClass7Counter{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[579] + mi := &file_otg_proto_msgTypes[540] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowGtpv1VersionCounter) String() string { +func (x *PatternFlowPfcPausePauseClass7Counter) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowGtpv1VersionCounter) ProtoMessage() {} +func (*PatternFlowPfcPausePauseClass7Counter) ProtoMessage() {} -func (x *PatternFlowGtpv1VersionCounter) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[579] +func (x *PatternFlowPfcPausePauseClass7Counter) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[540] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -66881,26 +65929,26 @@ func (x *PatternFlowGtpv1VersionCounter) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use PatternFlowGtpv1VersionCounter.ProtoReflect.Descriptor instead. -func (*PatternFlowGtpv1VersionCounter) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{579} +// Deprecated: Use PatternFlowPfcPausePauseClass7Counter.ProtoReflect.Descriptor instead. +func (*PatternFlowPfcPausePauseClass7Counter) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{540} } -func (x *PatternFlowGtpv1VersionCounter) GetStart() uint32 { +func (x *PatternFlowPfcPausePauseClass7Counter) GetStart() uint32 { if x != nil && x.Start != nil { return *x.Start } return 0 } -func (x *PatternFlowGtpv1VersionCounter) GetStep() uint32 { +func (x *PatternFlowPfcPausePauseClass7Counter) GetStep() uint32 { if x != nil && x.Step != nil { return *x.Step } return 0 } -func (x *PatternFlowGtpv1VersionCounter) GetCount() uint32 { +func (x *PatternFlowPfcPausePauseClass7Counter) GetCount() uint32 { if x != nil && x.Count != nil { return *x.Count } @@ -66910,7 +65958,7 @@ func (x *PatternFlowGtpv1VersionCounter) GetCount() uint32 { // Metric tag can be used to enable tracking portion of or all bits in a corresponding // header field for metrics per each applicable value. These would appear as tagged // metrics in corresponding flow metrics. -type PatternFlowGtpv1VersionMetricTag struct { +type PatternFlowPfcPausePauseClass7MetricTag struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields @@ -66924,27 +65972,27 @@ type PatternFlowGtpv1VersionMetricTag struct { Offset *uint32 `protobuf:"varint,2,opt,name=offset,proto3,oneof" json:"offset,omitempty"` // Number of bits to track for metrics starting from configured offset of corresponding // header field - // default = 3 + // default = 16 Length *uint32 `protobuf:"varint,3,opt,name=length,proto3,oneof" json:"length,omitempty"` } -func (x *PatternFlowGtpv1VersionMetricTag) Reset() { - *x = PatternFlowGtpv1VersionMetricTag{} +func (x *PatternFlowPfcPausePauseClass7MetricTag) Reset() { + *x = PatternFlowPfcPausePauseClass7MetricTag{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[580] + mi := &file_otg_proto_msgTypes[541] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowGtpv1VersionMetricTag) String() string { +func (x *PatternFlowPfcPausePauseClass7MetricTag) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowGtpv1VersionMetricTag) ProtoMessage() {} +func (*PatternFlowPfcPausePauseClass7MetricTag) ProtoMessage() {} -func (x *PatternFlowGtpv1VersionMetricTag) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[580] +func (x *PatternFlowPfcPausePauseClass7MetricTag) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[541] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -66955,74 +66003,74 @@ func (x *PatternFlowGtpv1VersionMetricTag) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use PatternFlowGtpv1VersionMetricTag.ProtoReflect.Descriptor instead. -func (*PatternFlowGtpv1VersionMetricTag) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{580} +// Deprecated: Use PatternFlowPfcPausePauseClass7MetricTag.ProtoReflect.Descriptor instead. +func (*PatternFlowPfcPausePauseClass7MetricTag) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{541} } -func (x *PatternFlowGtpv1VersionMetricTag) GetName() string { +func (x *PatternFlowPfcPausePauseClass7MetricTag) GetName() string { if x != nil && x.Name != nil { return *x.Name } return "" } -func (x *PatternFlowGtpv1VersionMetricTag) GetOffset() uint32 { +func (x *PatternFlowPfcPausePauseClass7MetricTag) GetOffset() uint32 { if x != nil && x.Offset != nil { return *x.Offset } return 0 } -func (x *PatternFlowGtpv1VersionMetricTag) GetLength() uint32 { +func (x *PatternFlowPfcPausePauseClass7MetricTag) GetLength() uint32 { if x != nil && x.Length != nil { return *x.Length } return 0 } -// GTPv1 version -type PatternFlowGtpv1Version struct { +// Pause class 7 +type PatternFlowPfcPausePauseClass7 struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // Description missing in models // default = Choice.Enum.value - Choice *PatternFlowGtpv1Version_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.PatternFlowGtpv1Version_Choice_Enum,oneof" json:"choice,omitempty"` + Choice *PatternFlowPfcPausePauseClass7_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.PatternFlowPfcPausePauseClass7_Choice_Enum,oneof" json:"choice,omitempty"` // Description missing in models - // default = 1 + // default = 0 Value *uint32 `protobuf:"varint,2,opt,name=value,proto3,oneof" json:"value,omitempty"` // Description missing in models - // default = [1] + // default = [0] Values []uint32 `protobuf:"varint,3,rep,packed,name=values,proto3" json:"values,omitempty"` // Description missing in models - Increment *PatternFlowGtpv1VersionCounter `protobuf:"bytes,5,opt,name=increment,proto3" json:"increment,omitempty"` + Increment *PatternFlowPfcPausePauseClass7Counter `protobuf:"bytes,5,opt,name=increment,proto3" json:"increment,omitempty"` // Description missing in models - Decrement *PatternFlowGtpv1VersionCounter `protobuf:"bytes,6,opt,name=decrement,proto3" json:"decrement,omitempty"` + Decrement *PatternFlowPfcPausePauseClass7Counter `protobuf:"bytes,6,opt,name=decrement,proto3" json:"decrement,omitempty"` // One or more metric tags can be used to enable tracking portion of or all bits in // a corresponding header field for metrics per each applicable value. These would appear // as tagged metrics in corresponding flow metrics. - MetricTags []*PatternFlowGtpv1VersionMetricTag `protobuf:"bytes,7,rep,name=metric_tags,json=metricTags,proto3" json:"metric_tags,omitempty"` + MetricTags []*PatternFlowPfcPausePauseClass7MetricTag `protobuf:"bytes,7,rep,name=metric_tags,json=metricTags,proto3" json:"metric_tags,omitempty"` } -func (x *PatternFlowGtpv1Version) Reset() { - *x = PatternFlowGtpv1Version{} +func (x *PatternFlowPfcPausePauseClass7) Reset() { + *x = PatternFlowPfcPausePauseClass7{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[581] + mi := &file_otg_proto_msgTypes[542] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowGtpv1Version) String() string { +func (x *PatternFlowPfcPausePauseClass7) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowGtpv1Version) ProtoMessage() {} +func (*PatternFlowPfcPausePauseClass7) ProtoMessage() {} -func (x *PatternFlowGtpv1Version) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[581] +func (x *PatternFlowPfcPausePauseClass7) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[542] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -67033,87 +66081,87 @@ func (x *PatternFlowGtpv1Version) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use PatternFlowGtpv1Version.ProtoReflect.Descriptor instead. -func (*PatternFlowGtpv1Version) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{581} +// Deprecated: Use PatternFlowPfcPausePauseClass7.ProtoReflect.Descriptor instead. +func (*PatternFlowPfcPausePauseClass7) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{542} } -func (x *PatternFlowGtpv1Version) GetChoice() PatternFlowGtpv1Version_Choice_Enum { +func (x *PatternFlowPfcPausePauseClass7) GetChoice() PatternFlowPfcPausePauseClass7_Choice_Enum { if x != nil && x.Choice != nil { return *x.Choice } - return PatternFlowGtpv1Version_Choice_unspecified + return PatternFlowPfcPausePauseClass7_Choice_unspecified } -func (x *PatternFlowGtpv1Version) GetValue() uint32 { +func (x *PatternFlowPfcPausePauseClass7) GetValue() uint32 { if x != nil && x.Value != nil { return *x.Value } return 0 } -func (x *PatternFlowGtpv1Version) GetValues() []uint32 { +func (x *PatternFlowPfcPausePauseClass7) GetValues() []uint32 { if x != nil { return x.Values } return nil } -func (x *PatternFlowGtpv1Version) GetIncrement() *PatternFlowGtpv1VersionCounter { +func (x *PatternFlowPfcPausePauseClass7) GetIncrement() *PatternFlowPfcPausePauseClass7Counter { if x != nil { return x.Increment } return nil } -func (x *PatternFlowGtpv1Version) GetDecrement() *PatternFlowGtpv1VersionCounter { +func (x *PatternFlowPfcPausePauseClass7) GetDecrement() *PatternFlowPfcPausePauseClass7Counter { if x != nil { return x.Decrement } return nil } -func (x *PatternFlowGtpv1Version) GetMetricTags() []*PatternFlowGtpv1VersionMetricTag { +func (x *PatternFlowPfcPausePauseClass7) GetMetricTags() []*PatternFlowPfcPausePauseClass7MetricTag { if x != nil { return x.MetricTags } return nil } -// integer counter pattern -type PatternFlowGtpv1ProtocolTypeCounter struct { +// mac counter pattern +type PatternFlowEthernetPauseDstCounter struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // Description missing in models - // default = 1 - Start *uint32 `protobuf:"varint,1,opt,name=start,proto3,oneof" json:"start,omitempty"` + // default = 01:80:c2:00:00:01 + Start *string `protobuf:"bytes,1,opt,name=start,proto3,oneof" json:"start,omitempty"` // Description missing in models - // default = 1 - Step *uint32 `protobuf:"varint,2,opt,name=step,proto3,oneof" json:"step,omitempty"` + // default = 00:00:00:00:00:01 + Step *string `protobuf:"bytes,2,opt,name=step,proto3,oneof" json:"step,omitempty"` // Description missing in models // default = 1 Count *uint32 `protobuf:"varint,3,opt,name=count,proto3,oneof" json:"count,omitempty"` } -func (x *PatternFlowGtpv1ProtocolTypeCounter) Reset() { - *x = PatternFlowGtpv1ProtocolTypeCounter{} +func (x *PatternFlowEthernetPauseDstCounter) Reset() { + *x = PatternFlowEthernetPauseDstCounter{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[582] + mi := &file_otg_proto_msgTypes[543] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowGtpv1ProtocolTypeCounter) String() string { +func (x *PatternFlowEthernetPauseDstCounter) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowGtpv1ProtocolTypeCounter) ProtoMessage() {} +func (*PatternFlowEthernetPauseDstCounter) ProtoMessage() {} -func (x *PatternFlowGtpv1ProtocolTypeCounter) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[582] +func (x *PatternFlowEthernetPauseDstCounter) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[543] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -67124,26 +66172,26 @@ func (x *PatternFlowGtpv1ProtocolTypeCounter) ProtoReflect() protoreflect.Messag return mi.MessageOf(x) } -// Deprecated: Use PatternFlowGtpv1ProtocolTypeCounter.ProtoReflect.Descriptor instead. -func (*PatternFlowGtpv1ProtocolTypeCounter) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{582} +// Deprecated: Use PatternFlowEthernetPauseDstCounter.ProtoReflect.Descriptor instead. +func (*PatternFlowEthernetPauseDstCounter) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{543} } -func (x *PatternFlowGtpv1ProtocolTypeCounter) GetStart() uint32 { +func (x *PatternFlowEthernetPauseDstCounter) GetStart() string { if x != nil && x.Start != nil { return *x.Start } - return 0 + return "" } -func (x *PatternFlowGtpv1ProtocolTypeCounter) GetStep() uint32 { +func (x *PatternFlowEthernetPauseDstCounter) GetStep() string { if x != nil && x.Step != nil { return *x.Step } - return 0 + return "" } -func (x *PatternFlowGtpv1ProtocolTypeCounter) GetCount() uint32 { +func (x *PatternFlowEthernetPauseDstCounter) GetCount() uint32 { if x != nil && x.Count != nil { return *x.Count } @@ -67153,7 +66201,7 @@ func (x *PatternFlowGtpv1ProtocolTypeCounter) GetCount() uint32 { // Metric tag can be used to enable tracking portion of or all bits in a corresponding // header field for metrics per each applicable value. These would appear as tagged // metrics in corresponding flow metrics. -type PatternFlowGtpv1ProtocolTypeMetricTag struct { +type PatternFlowEthernetPauseDstMetricTag struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields @@ -67167,27 +66215,27 @@ type PatternFlowGtpv1ProtocolTypeMetricTag struct { Offset *uint32 `protobuf:"varint,2,opt,name=offset,proto3,oneof" json:"offset,omitempty"` // Number of bits to track for metrics starting from configured offset of corresponding // header field - // default = 1 + // default = 48 Length *uint32 `protobuf:"varint,3,opt,name=length,proto3,oneof" json:"length,omitempty"` } -func (x *PatternFlowGtpv1ProtocolTypeMetricTag) Reset() { - *x = PatternFlowGtpv1ProtocolTypeMetricTag{} +func (x *PatternFlowEthernetPauseDstMetricTag) Reset() { + *x = PatternFlowEthernetPauseDstMetricTag{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[583] + mi := &file_otg_proto_msgTypes[544] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowGtpv1ProtocolTypeMetricTag) String() string { +func (x *PatternFlowEthernetPauseDstMetricTag) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowGtpv1ProtocolTypeMetricTag) ProtoMessage() {} +func (*PatternFlowEthernetPauseDstMetricTag) ProtoMessage() {} -func (x *PatternFlowGtpv1ProtocolTypeMetricTag) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[583] +func (x *PatternFlowEthernetPauseDstMetricTag) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[544] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -67198,74 +66246,74 @@ func (x *PatternFlowGtpv1ProtocolTypeMetricTag) ProtoReflect() protoreflect.Mess return mi.MessageOf(x) } -// Deprecated: Use PatternFlowGtpv1ProtocolTypeMetricTag.ProtoReflect.Descriptor instead. -func (*PatternFlowGtpv1ProtocolTypeMetricTag) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{583} +// Deprecated: Use PatternFlowEthernetPauseDstMetricTag.ProtoReflect.Descriptor instead. +func (*PatternFlowEthernetPauseDstMetricTag) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{544} } -func (x *PatternFlowGtpv1ProtocolTypeMetricTag) GetName() string { +func (x *PatternFlowEthernetPauseDstMetricTag) GetName() string { if x != nil && x.Name != nil { return *x.Name } return "" } -func (x *PatternFlowGtpv1ProtocolTypeMetricTag) GetOffset() uint32 { +func (x *PatternFlowEthernetPauseDstMetricTag) GetOffset() uint32 { if x != nil && x.Offset != nil { return *x.Offset } return 0 } -func (x *PatternFlowGtpv1ProtocolTypeMetricTag) GetLength() uint32 { +func (x *PatternFlowEthernetPauseDstMetricTag) GetLength() uint32 { if x != nil && x.Length != nil { return *x.Length } return 0 } -// Protocol type, GTP is 1, GTP' is 0 -type PatternFlowGtpv1ProtocolType struct { +// Destination MAC address +type PatternFlowEthernetPauseDst struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // Description missing in models // default = Choice.Enum.value - Choice *PatternFlowGtpv1ProtocolType_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.PatternFlowGtpv1ProtocolType_Choice_Enum,oneof" json:"choice,omitempty"` + Choice *PatternFlowEthernetPauseDst_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.PatternFlowEthernetPauseDst_Choice_Enum,oneof" json:"choice,omitempty"` // Description missing in models - // default = 1 - Value *uint32 `protobuf:"varint,2,opt,name=value,proto3,oneof" json:"value,omitempty"` + // default = 01:80:c2:00:00:01 + Value *string `protobuf:"bytes,2,opt,name=value,proto3,oneof" json:"value,omitempty"` // Description missing in models - // default = [1] - Values []uint32 `protobuf:"varint,3,rep,packed,name=values,proto3" json:"values,omitempty"` + // default = ['01:80:c2:00:00:01'] + Values []string `protobuf:"bytes,3,rep,name=values,proto3" json:"values,omitempty"` // Description missing in models - Increment *PatternFlowGtpv1ProtocolTypeCounter `protobuf:"bytes,5,opt,name=increment,proto3" json:"increment,omitempty"` + Increment *PatternFlowEthernetPauseDstCounter `protobuf:"bytes,5,opt,name=increment,proto3" json:"increment,omitempty"` // Description missing in models - Decrement *PatternFlowGtpv1ProtocolTypeCounter `protobuf:"bytes,6,opt,name=decrement,proto3" json:"decrement,omitempty"` + Decrement *PatternFlowEthernetPauseDstCounter `protobuf:"bytes,6,opt,name=decrement,proto3" json:"decrement,omitempty"` // One or more metric tags can be used to enable tracking portion of or all bits in // a corresponding header field for metrics per each applicable value. These would appear // as tagged metrics in corresponding flow metrics. - MetricTags []*PatternFlowGtpv1ProtocolTypeMetricTag `protobuf:"bytes,7,rep,name=metric_tags,json=metricTags,proto3" json:"metric_tags,omitempty"` + MetricTags []*PatternFlowEthernetPauseDstMetricTag `protobuf:"bytes,7,rep,name=metric_tags,json=metricTags,proto3" json:"metric_tags,omitempty"` } -func (x *PatternFlowGtpv1ProtocolType) Reset() { - *x = PatternFlowGtpv1ProtocolType{} +func (x *PatternFlowEthernetPauseDst) Reset() { + *x = PatternFlowEthernetPauseDst{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[584] + mi := &file_otg_proto_msgTypes[545] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowGtpv1ProtocolType) String() string { +func (x *PatternFlowEthernetPauseDst) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowGtpv1ProtocolType) ProtoMessage() {} +func (*PatternFlowEthernetPauseDst) ProtoMessage() {} -func (x *PatternFlowGtpv1ProtocolType) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[584] +func (x *PatternFlowEthernetPauseDst) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[545] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -67276,87 +66324,87 @@ func (x *PatternFlowGtpv1ProtocolType) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use PatternFlowGtpv1ProtocolType.ProtoReflect.Descriptor instead. -func (*PatternFlowGtpv1ProtocolType) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{584} +// Deprecated: Use PatternFlowEthernetPauseDst.ProtoReflect.Descriptor instead. +func (*PatternFlowEthernetPauseDst) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{545} } -func (x *PatternFlowGtpv1ProtocolType) GetChoice() PatternFlowGtpv1ProtocolType_Choice_Enum { +func (x *PatternFlowEthernetPauseDst) GetChoice() PatternFlowEthernetPauseDst_Choice_Enum { if x != nil && x.Choice != nil { return *x.Choice } - return PatternFlowGtpv1ProtocolType_Choice_unspecified + return PatternFlowEthernetPauseDst_Choice_unspecified } -func (x *PatternFlowGtpv1ProtocolType) GetValue() uint32 { +func (x *PatternFlowEthernetPauseDst) GetValue() string { if x != nil && x.Value != nil { return *x.Value } - return 0 + return "" } -func (x *PatternFlowGtpv1ProtocolType) GetValues() []uint32 { +func (x *PatternFlowEthernetPauseDst) GetValues() []string { if x != nil { return x.Values } return nil } -func (x *PatternFlowGtpv1ProtocolType) GetIncrement() *PatternFlowGtpv1ProtocolTypeCounter { +func (x *PatternFlowEthernetPauseDst) GetIncrement() *PatternFlowEthernetPauseDstCounter { if x != nil { return x.Increment } return nil } -func (x *PatternFlowGtpv1ProtocolType) GetDecrement() *PatternFlowGtpv1ProtocolTypeCounter { +func (x *PatternFlowEthernetPauseDst) GetDecrement() *PatternFlowEthernetPauseDstCounter { if x != nil { return x.Decrement } return nil } -func (x *PatternFlowGtpv1ProtocolType) GetMetricTags() []*PatternFlowGtpv1ProtocolTypeMetricTag { +func (x *PatternFlowEthernetPauseDst) GetMetricTags() []*PatternFlowEthernetPauseDstMetricTag { if x != nil { return x.MetricTags } return nil } -// integer counter pattern -type PatternFlowGtpv1ReservedCounter struct { +// mac counter pattern +type PatternFlowEthernetPauseSrcCounter struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // Description missing in models - // default = 0 - Start *uint32 `protobuf:"varint,1,opt,name=start,proto3,oneof" json:"start,omitempty"` + // default = 00:00:00:00:00:00 + Start *string `protobuf:"bytes,1,opt,name=start,proto3,oneof" json:"start,omitempty"` // Description missing in models - // default = 1 - Step *uint32 `protobuf:"varint,2,opt,name=step,proto3,oneof" json:"step,omitempty"` + // default = 00:00:00:00:00:01 + Step *string `protobuf:"bytes,2,opt,name=step,proto3,oneof" json:"step,omitempty"` // Description missing in models // default = 1 Count *uint32 `protobuf:"varint,3,opt,name=count,proto3,oneof" json:"count,omitempty"` } -func (x *PatternFlowGtpv1ReservedCounter) Reset() { - *x = PatternFlowGtpv1ReservedCounter{} +func (x *PatternFlowEthernetPauseSrcCounter) Reset() { + *x = PatternFlowEthernetPauseSrcCounter{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[585] + mi := &file_otg_proto_msgTypes[546] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowGtpv1ReservedCounter) String() string { +func (x *PatternFlowEthernetPauseSrcCounter) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowGtpv1ReservedCounter) ProtoMessage() {} +func (*PatternFlowEthernetPauseSrcCounter) ProtoMessage() {} -func (x *PatternFlowGtpv1ReservedCounter) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[585] +func (x *PatternFlowEthernetPauseSrcCounter) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[546] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -67367,26 +66415,26 @@ func (x *PatternFlowGtpv1ReservedCounter) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use PatternFlowGtpv1ReservedCounter.ProtoReflect.Descriptor instead. -func (*PatternFlowGtpv1ReservedCounter) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{585} +// Deprecated: Use PatternFlowEthernetPauseSrcCounter.ProtoReflect.Descriptor instead. +func (*PatternFlowEthernetPauseSrcCounter) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{546} } -func (x *PatternFlowGtpv1ReservedCounter) GetStart() uint32 { +func (x *PatternFlowEthernetPauseSrcCounter) GetStart() string { if x != nil && x.Start != nil { return *x.Start } - return 0 + return "" } -func (x *PatternFlowGtpv1ReservedCounter) GetStep() uint32 { +func (x *PatternFlowEthernetPauseSrcCounter) GetStep() string { if x != nil && x.Step != nil { return *x.Step } - return 0 + return "" } -func (x *PatternFlowGtpv1ReservedCounter) GetCount() uint32 { +func (x *PatternFlowEthernetPauseSrcCounter) GetCount() uint32 { if x != nil && x.Count != nil { return *x.Count } @@ -67396,7 +66444,7 @@ func (x *PatternFlowGtpv1ReservedCounter) GetCount() uint32 { // Metric tag can be used to enable tracking portion of or all bits in a corresponding // header field for metrics per each applicable value. These would appear as tagged // metrics in corresponding flow metrics. -type PatternFlowGtpv1ReservedMetricTag struct { +type PatternFlowEthernetPauseSrcMetricTag struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields @@ -67410,27 +66458,27 @@ type PatternFlowGtpv1ReservedMetricTag struct { Offset *uint32 `protobuf:"varint,2,opt,name=offset,proto3,oneof" json:"offset,omitempty"` // Number of bits to track for metrics starting from configured offset of corresponding // header field - // default = 1 + // default = 48 Length *uint32 `protobuf:"varint,3,opt,name=length,proto3,oneof" json:"length,omitempty"` } -func (x *PatternFlowGtpv1ReservedMetricTag) Reset() { - *x = PatternFlowGtpv1ReservedMetricTag{} +func (x *PatternFlowEthernetPauseSrcMetricTag) Reset() { + *x = PatternFlowEthernetPauseSrcMetricTag{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[586] + mi := &file_otg_proto_msgTypes[547] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowGtpv1ReservedMetricTag) String() string { +func (x *PatternFlowEthernetPauseSrcMetricTag) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowGtpv1ReservedMetricTag) ProtoMessage() {} +func (*PatternFlowEthernetPauseSrcMetricTag) ProtoMessage() {} -func (x *PatternFlowGtpv1ReservedMetricTag) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[586] +func (x *PatternFlowEthernetPauseSrcMetricTag) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[547] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -67441,74 +66489,74 @@ func (x *PatternFlowGtpv1ReservedMetricTag) ProtoReflect() protoreflect.Message return mi.MessageOf(x) } -// Deprecated: Use PatternFlowGtpv1ReservedMetricTag.ProtoReflect.Descriptor instead. -func (*PatternFlowGtpv1ReservedMetricTag) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{586} +// Deprecated: Use PatternFlowEthernetPauseSrcMetricTag.ProtoReflect.Descriptor instead. +func (*PatternFlowEthernetPauseSrcMetricTag) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{547} } -func (x *PatternFlowGtpv1ReservedMetricTag) GetName() string { +func (x *PatternFlowEthernetPauseSrcMetricTag) GetName() string { if x != nil && x.Name != nil { return *x.Name } return "" } -func (x *PatternFlowGtpv1ReservedMetricTag) GetOffset() uint32 { +func (x *PatternFlowEthernetPauseSrcMetricTag) GetOffset() uint32 { if x != nil && x.Offset != nil { return *x.Offset } return 0 } -func (x *PatternFlowGtpv1ReservedMetricTag) GetLength() uint32 { +func (x *PatternFlowEthernetPauseSrcMetricTag) GetLength() uint32 { if x != nil && x.Length != nil { return *x.Length } return 0 } -// Reserved field -type PatternFlowGtpv1Reserved struct { +// Source MAC address +type PatternFlowEthernetPauseSrc struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // Description missing in models // default = Choice.Enum.value - Choice *PatternFlowGtpv1Reserved_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.PatternFlowGtpv1Reserved_Choice_Enum,oneof" json:"choice,omitempty"` + Choice *PatternFlowEthernetPauseSrc_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.PatternFlowEthernetPauseSrc_Choice_Enum,oneof" json:"choice,omitempty"` // Description missing in models - // default = 0 - Value *uint32 `protobuf:"varint,2,opt,name=value,proto3,oneof" json:"value,omitempty"` + // default = 00:00:00:00:00:00 + Value *string `protobuf:"bytes,2,opt,name=value,proto3,oneof" json:"value,omitempty"` // Description missing in models - // default = [0] - Values []uint32 `protobuf:"varint,3,rep,packed,name=values,proto3" json:"values,omitempty"` + // default = ['00:00:00:00:00:00'] + Values []string `protobuf:"bytes,3,rep,name=values,proto3" json:"values,omitempty"` // Description missing in models - Increment *PatternFlowGtpv1ReservedCounter `protobuf:"bytes,5,opt,name=increment,proto3" json:"increment,omitempty"` + Increment *PatternFlowEthernetPauseSrcCounter `protobuf:"bytes,5,opt,name=increment,proto3" json:"increment,omitempty"` // Description missing in models - Decrement *PatternFlowGtpv1ReservedCounter `protobuf:"bytes,6,opt,name=decrement,proto3" json:"decrement,omitempty"` + Decrement *PatternFlowEthernetPauseSrcCounter `protobuf:"bytes,6,opt,name=decrement,proto3" json:"decrement,omitempty"` // One or more metric tags can be used to enable tracking portion of or all bits in // a corresponding header field for metrics per each applicable value. These would appear // as tagged metrics in corresponding flow metrics. - MetricTags []*PatternFlowGtpv1ReservedMetricTag `protobuf:"bytes,7,rep,name=metric_tags,json=metricTags,proto3" json:"metric_tags,omitempty"` + MetricTags []*PatternFlowEthernetPauseSrcMetricTag `protobuf:"bytes,7,rep,name=metric_tags,json=metricTags,proto3" json:"metric_tags,omitempty"` } -func (x *PatternFlowGtpv1Reserved) Reset() { - *x = PatternFlowGtpv1Reserved{} +func (x *PatternFlowEthernetPauseSrc) Reset() { + *x = PatternFlowEthernetPauseSrc{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[587] + mi := &file_otg_proto_msgTypes[548] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowGtpv1Reserved) String() string { +func (x *PatternFlowEthernetPauseSrc) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowGtpv1Reserved) ProtoMessage() {} +func (*PatternFlowEthernetPauseSrc) ProtoMessage() {} -func (x *PatternFlowGtpv1Reserved) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[587] +func (x *PatternFlowEthernetPauseSrc) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[548] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -67519,47 +66567,47 @@ func (x *PatternFlowGtpv1Reserved) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use PatternFlowGtpv1Reserved.ProtoReflect.Descriptor instead. -func (*PatternFlowGtpv1Reserved) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{587} +// Deprecated: Use PatternFlowEthernetPauseSrc.ProtoReflect.Descriptor instead. +func (*PatternFlowEthernetPauseSrc) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{548} } -func (x *PatternFlowGtpv1Reserved) GetChoice() PatternFlowGtpv1Reserved_Choice_Enum { +func (x *PatternFlowEthernetPauseSrc) GetChoice() PatternFlowEthernetPauseSrc_Choice_Enum { if x != nil && x.Choice != nil { return *x.Choice } - return PatternFlowGtpv1Reserved_Choice_unspecified + return PatternFlowEthernetPauseSrc_Choice_unspecified } -func (x *PatternFlowGtpv1Reserved) GetValue() uint32 { +func (x *PatternFlowEthernetPauseSrc) GetValue() string { if x != nil && x.Value != nil { return *x.Value } - return 0 + return "" } -func (x *PatternFlowGtpv1Reserved) GetValues() []uint32 { +func (x *PatternFlowEthernetPauseSrc) GetValues() []string { if x != nil { return x.Values } return nil } -func (x *PatternFlowGtpv1Reserved) GetIncrement() *PatternFlowGtpv1ReservedCounter { +func (x *PatternFlowEthernetPauseSrc) GetIncrement() *PatternFlowEthernetPauseSrcCounter { if x != nil { return x.Increment } return nil } -func (x *PatternFlowGtpv1Reserved) GetDecrement() *PatternFlowGtpv1ReservedCounter { +func (x *PatternFlowEthernetPauseSrc) GetDecrement() *PatternFlowEthernetPauseSrcCounter { if x != nil { return x.Decrement } return nil } -func (x *PatternFlowGtpv1Reserved) GetMetricTags() []*PatternFlowGtpv1ReservedMetricTag { +func (x *PatternFlowEthernetPauseSrc) GetMetricTags() []*PatternFlowEthernetPauseSrcMetricTag { if x != nil { return x.MetricTags } @@ -67567,13 +66615,13 @@ func (x *PatternFlowGtpv1Reserved) GetMetricTags() []*PatternFlowGtpv1ReservedMe } // integer counter pattern -type PatternFlowGtpv1EFlagCounter struct { +type PatternFlowEthernetPauseEtherTypeCounter struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // Description missing in models - // default = 0 + // default = 34824 Start *uint32 `protobuf:"varint,1,opt,name=start,proto3,oneof" json:"start,omitempty"` // Description missing in models // default = 1 @@ -67583,23 +66631,23 @@ type PatternFlowGtpv1EFlagCounter struct { Count *uint32 `protobuf:"varint,3,opt,name=count,proto3,oneof" json:"count,omitempty"` } -func (x *PatternFlowGtpv1EFlagCounter) Reset() { - *x = PatternFlowGtpv1EFlagCounter{} +func (x *PatternFlowEthernetPauseEtherTypeCounter) Reset() { + *x = PatternFlowEthernetPauseEtherTypeCounter{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[588] + mi := &file_otg_proto_msgTypes[549] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowGtpv1EFlagCounter) String() string { +func (x *PatternFlowEthernetPauseEtherTypeCounter) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowGtpv1EFlagCounter) ProtoMessage() {} +func (*PatternFlowEthernetPauseEtherTypeCounter) ProtoMessage() {} -func (x *PatternFlowGtpv1EFlagCounter) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[588] +func (x *PatternFlowEthernetPauseEtherTypeCounter) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[549] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -67610,26 +66658,26 @@ func (x *PatternFlowGtpv1EFlagCounter) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use PatternFlowGtpv1EFlagCounter.ProtoReflect.Descriptor instead. -func (*PatternFlowGtpv1EFlagCounter) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{588} +// Deprecated: Use PatternFlowEthernetPauseEtherTypeCounter.ProtoReflect.Descriptor instead. +func (*PatternFlowEthernetPauseEtherTypeCounter) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{549} } -func (x *PatternFlowGtpv1EFlagCounter) GetStart() uint32 { +func (x *PatternFlowEthernetPauseEtherTypeCounter) GetStart() uint32 { if x != nil && x.Start != nil { return *x.Start } return 0 } -func (x *PatternFlowGtpv1EFlagCounter) GetStep() uint32 { +func (x *PatternFlowEthernetPauseEtherTypeCounter) GetStep() uint32 { if x != nil && x.Step != nil { return *x.Step } return 0 } -func (x *PatternFlowGtpv1EFlagCounter) GetCount() uint32 { +func (x *PatternFlowEthernetPauseEtherTypeCounter) GetCount() uint32 { if x != nil && x.Count != nil { return *x.Count } @@ -67639,7 +66687,7 @@ func (x *PatternFlowGtpv1EFlagCounter) GetCount() uint32 { // Metric tag can be used to enable tracking portion of or all bits in a corresponding // header field for metrics per each applicable value. These would appear as tagged // metrics in corresponding flow metrics. -type PatternFlowGtpv1EFlagMetricTag struct { +type PatternFlowEthernetPauseEtherTypeMetricTag struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields @@ -67653,27 +66701,27 @@ type PatternFlowGtpv1EFlagMetricTag struct { Offset *uint32 `protobuf:"varint,2,opt,name=offset,proto3,oneof" json:"offset,omitempty"` // Number of bits to track for metrics starting from configured offset of corresponding // header field - // default = 1 + // default = 16 Length *uint32 `protobuf:"varint,3,opt,name=length,proto3,oneof" json:"length,omitempty"` } -func (x *PatternFlowGtpv1EFlagMetricTag) Reset() { - *x = PatternFlowGtpv1EFlagMetricTag{} +func (x *PatternFlowEthernetPauseEtherTypeMetricTag) Reset() { + *x = PatternFlowEthernetPauseEtherTypeMetricTag{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[589] + mi := &file_otg_proto_msgTypes[550] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowGtpv1EFlagMetricTag) String() string { +func (x *PatternFlowEthernetPauseEtherTypeMetricTag) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowGtpv1EFlagMetricTag) ProtoMessage() {} +func (*PatternFlowEthernetPauseEtherTypeMetricTag) ProtoMessage() {} -func (x *PatternFlowGtpv1EFlagMetricTag) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[589] +func (x *PatternFlowEthernetPauseEtherTypeMetricTag) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[550] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -67684,74 +66732,74 @@ func (x *PatternFlowGtpv1EFlagMetricTag) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use PatternFlowGtpv1EFlagMetricTag.ProtoReflect.Descriptor instead. -func (*PatternFlowGtpv1EFlagMetricTag) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{589} +// Deprecated: Use PatternFlowEthernetPauseEtherTypeMetricTag.ProtoReflect.Descriptor instead. +func (*PatternFlowEthernetPauseEtherTypeMetricTag) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{550} } -func (x *PatternFlowGtpv1EFlagMetricTag) GetName() string { +func (x *PatternFlowEthernetPauseEtherTypeMetricTag) GetName() string { if x != nil && x.Name != nil { return *x.Name } return "" } -func (x *PatternFlowGtpv1EFlagMetricTag) GetOffset() uint32 { +func (x *PatternFlowEthernetPauseEtherTypeMetricTag) GetOffset() uint32 { if x != nil && x.Offset != nil { return *x.Offset } return 0 } -func (x *PatternFlowGtpv1EFlagMetricTag) GetLength() uint32 { +func (x *PatternFlowEthernetPauseEtherTypeMetricTag) GetLength() uint32 { if x != nil && x.Length != nil { return *x.Length } return 0 } -// Extension header field present -type PatternFlowGtpv1EFlag struct { +// Ethernet type +type PatternFlowEthernetPauseEtherType struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // Description missing in models // default = Choice.Enum.value - Choice *PatternFlowGtpv1EFlag_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.PatternFlowGtpv1EFlag_Choice_Enum,oneof" json:"choice,omitempty"` + Choice *PatternFlowEthernetPauseEtherType_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.PatternFlowEthernetPauseEtherType_Choice_Enum,oneof" json:"choice,omitempty"` // Description missing in models - // default = 0 + // default = 34824 Value *uint32 `protobuf:"varint,2,opt,name=value,proto3,oneof" json:"value,omitempty"` // Description missing in models - // default = [0] + // default = [34824] Values []uint32 `protobuf:"varint,3,rep,packed,name=values,proto3" json:"values,omitempty"` // Description missing in models - Increment *PatternFlowGtpv1EFlagCounter `protobuf:"bytes,5,opt,name=increment,proto3" json:"increment,omitempty"` + Increment *PatternFlowEthernetPauseEtherTypeCounter `protobuf:"bytes,5,opt,name=increment,proto3" json:"increment,omitempty"` // Description missing in models - Decrement *PatternFlowGtpv1EFlagCounter `protobuf:"bytes,6,opt,name=decrement,proto3" json:"decrement,omitempty"` + Decrement *PatternFlowEthernetPauseEtherTypeCounter `protobuf:"bytes,6,opt,name=decrement,proto3" json:"decrement,omitempty"` // One or more metric tags can be used to enable tracking portion of or all bits in // a corresponding header field for metrics per each applicable value. These would appear // as tagged metrics in corresponding flow metrics. - MetricTags []*PatternFlowGtpv1EFlagMetricTag `protobuf:"bytes,7,rep,name=metric_tags,json=metricTags,proto3" json:"metric_tags,omitempty"` + MetricTags []*PatternFlowEthernetPauseEtherTypeMetricTag `protobuf:"bytes,7,rep,name=metric_tags,json=metricTags,proto3" json:"metric_tags,omitempty"` } -func (x *PatternFlowGtpv1EFlag) Reset() { - *x = PatternFlowGtpv1EFlag{} +func (x *PatternFlowEthernetPauseEtherType) Reset() { + *x = PatternFlowEthernetPauseEtherType{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[590] + mi := &file_otg_proto_msgTypes[551] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowGtpv1EFlag) String() string { +func (x *PatternFlowEthernetPauseEtherType) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowGtpv1EFlag) ProtoMessage() {} +func (*PatternFlowEthernetPauseEtherType) ProtoMessage() {} -func (x *PatternFlowGtpv1EFlag) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[590] +func (x *PatternFlowEthernetPauseEtherType) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[551] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -67762,47 +66810,47 @@ func (x *PatternFlowGtpv1EFlag) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use PatternFlowGtpv1EFlag.ProtoReflect.Descriptor instead. -func (*PatternFlowGtpv1EFlag) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{590} +// Deprecated: Use PatternFlowEthernetPauseEtherType.ProtoReflect.Descriptor instead. +func (*PatternFlowEthernetPauseEtherType) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{551} } -func (x *PatternFlowGtpv1EFlag) GetChoice() PatternFlowGtpv1EFlag_Choice_Enum { +func (x *PatternFlowEthernetPauseEtherType) GetChoice() PatternFlowEthernetPauseEtherType_Choice_Enum { if x != nil && x.Choice != nil { return *x.Choice } - return PatternFlowGtpv1EFlag_Choice_unspecified + return PatternFlowEthernetPauseEtherType_Choice_unspecified } -func (x *PatternFlowGtpv1EFlag) GetValue() uint32 { +func (x *PatternFlowEthernetPauseEtherType) GetValue() uint32 { if x != nil && x.Value != nil { return *x.Value } return 0 } -func (x *PatternFlowGtpv1EFlag) GetValues() []uint32 { +func (x *PatternFlowEthernetPauseEtherType) GetValues() []uint32 { if x != nil { return x.Values } return nil } -func (x *PatternFlowGtpv1EFlag) GetIncrement() *PatternFlowGtpv1EFlagCounter { +func (x *PatternFlowEthernetPauseEtherType) GetIncrement() *PatternFlowEthernetPauseEtherTypeCounter { if x != nil { return x.Increment } return nil } -func (x *PatternFlowGtpv1EFlag) GetDecrement() *PatternFlowGtpv1EFlagCounter { +func (x *PatternFlowEthernetPauseEtherType) GetDecrement() *PatternFlowEthernetPauseEtherTypeCounter { if x != nil { return x.Decrement } return nil } -func (x *PatternFlowGtpv1EFlag) GetMetricTags() []*PatternFlowGtpv1EFlagMetricTag { +func (x *PatternFlowEthernetPauseEtherType) GetMetricTags() []*PatternFlowEthernetPauseEtherTypeMetricTag { if x != nil { return x.MetricTags } @@ -67810,13 +66858,13 @@ func (x *PatternFlowGtpv1EFlag) GetMetricTags() []*PatternFlowGtpv1EFlagMetricTa } // integer counter pattern -type PatternFlowGtpv1SFlagCounter struct { +type PatternFlowEthernetPauseControlOpCodeCounter struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // Description missing in models - // default = 0 + // default = 1 Start *uint32 `protobuf:"varint,1,opt,name=start,proto3,oneof" json:"start,omitempty"` // Description missing in models // default = 1 @@ -67826,23 +66874,23 @@ type PatternFlowGtpv1SFlagCounter struct { Count *uint32 `protobuf:"varint,3,opt,name=count,proto3,oneof" json:"count,omitempty"` } -func (x *PatternFlowGtpv1SFlagCounter) Reset() { - *x = PatternFlowGtpv1SFlagCounter{} +func (x *PatternFlowEthernetPauseControlOpCodeCounter) Reset() { + *x = PatternFlowEthernetPauseControlOpCodeCounter{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[591] + mi := &file_otg_proto_msgTypes[552] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowGtpv1SFlagCounter) String() string { +func (x *PatternFlowEthernetPauseControlOpCodeCounter) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowGtpv1SFlagCounter) ProtoMessage() {} +func (*PatternFlowEthernetPauseControlOpCodeCounter) ProtoMessage() {} -func (x *PatternFlowGtpv1SFlagCounter) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[591] +func (x *PatternFlowEthernetPauseControlOpCodeCounter) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[552] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -67853,26 +66901,26 @@ func (x *PatternFlowGtpv1SFlagCounter) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use PatternFlowGtpv1SFlagCounter.ProtoReflect.Descriptor instead. -func (*PatternFlowGtpv1SFlagCounter) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{591} +// Deprecated: Use PatternFlowEthernetPauseControlOpCodeCounter.ProtoReflect.Descriptor instead. +func (*PatternFlowEthernetPauseControlOpCodeCounter) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{552} } -func (x *PatternFlowGtpv1SFlagCounter) GetStart() uint32 { +func (x *PatternFlowEthernetPauseControlOpCodeCounter) GetStart() uint32 { if x != nil && x.Start != nil { return *x.Start } return 0 } -func (x *PatternFlowGtpv1SFlagCounter) GetStep() uint32 { +func (x *PatternFlowEthernetPauseControlOpCodeCounter) GetStep() uint32 { if x != nil && x.Step != nil { return *x.Step } return 0 } -func (x *PatternFlowGtpv1SFlagCounter) GetCount() uint32 { +func (x *PatternFlowEthernetPauseControlOpCodeCounter) GetCount() uint32 { if x != nil && x.Count != nil { return *x.Count } @@ -67882,7 +66930,7 @@ func (x *PatternFlowGtpv1SFlagCounter) GetCount() uint32 { // Metric tag can be used to enable tracking portion of or all bits in a corresponding // header field for metrics per each applicable value. These would appear as tagged // metrics in corresponding flow metrics. -type PatternFlowGtpv1SFlagMetricTag struct { +type PatternFlowEthernetPauseControlOpCodeMetricTag struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields @@ -67896,27 +66944,27 @@ type PatternFlowGtpv1SFlagMetricTag struct { Offset *uint32 `protobuf:"varint,2,opt,name=offset,proto3,oneof" json:"offset,omitempty"` // Number of bits to track for metrics starting from configured offset of corresponding // header field - // default = 1 + // default = 16 Length *uint32 `protobuf:"varint,3,opt,name=length,proto3,oneof" json:"length,omitempty"` } -func (x *PatternFlowGtpv1SFlagMetricTag) Reset() { - *x = PatternFlowGtpv1SFlagMetricTag{} +func (x *PatternFlowEthernetPauseControlOpCodeMetricTag) Reset() { + *x = PatternFlowEthernetPauseControlOpCodeMetricTag{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[592] + mi := &file_otg_proto_msgTypes[553] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowGtpv1SFlagMetricTag) String() string { +func (x *PatternFlowEthernetPauseControlOpCodeMetricTag) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowGtpv1SFlagMetricTag) ProtoMessage() {} +func (*PatternFlowEthernetPauseControlOpCodeMetricTag) ProtoMessage() {} -func (x *PatternFlowGtpv1SFlagMetricTag) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[592] +func (x *PatternFlowEthernetPauseControlOpCodeMetricTag) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[553] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -67927,74 +66975,74 @@ func (x *PatternFlowGtpv1SFlagMetricTag) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use PatternFlowGtpv1SFlagMetricTag.ProtoReflect.Descriptor instead. -func (*PatternFlowGtpv1SFlagMetricTag) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{592} +// Deprecated: Use PatternFlowEthernetPauseControlOpCodeMetricTag.ProtoReflect.Descriptor instead. +func (*PatternFlowEthernetPauseControlOpCodeMetricTag) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{553} } -func (x *PatternFlowGtpv1SFlagMetricTag) GetName() string { +func (x *PatternFlowEthernetPauseControlOpCodeMetricTag) GetName() string { if x != nil && x.Name != nil { return *x.Name } return "" } -func (x *PatternFlowGtpv1SFlagMetricTag) GetOffset() uint32 { +func (x *PatternFlowEthernetPauseControlOpCodeMetricTag) GetOffset() uint32 { if x != nil && x.Offset != nil { return *x.Offset } return 0 } -func (x *PatternFlowGtpv1SFlagMetricTag) GetLength() uint32 { +func (x *PatternFlowEthernetPauseControlOpCodeMetricTag) GetLength() uint32 { if x != nil && x.Length != nil { return *x.Length } return 0 } -// Sequence number field present -type PatternFlowGtpv1SFlag struct { +// Control operation code +type PatternFlowEthernetPauseControlOpCode struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // Description missing in models // default = Choice.Enum.value - Choice *PatternFlowGtpv1SFlag_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.PatternFlowGtpv1SFlag_Choice_Enum,oneof" json:"choice,omitempty"` + Choice *PatternFlowEthernetPauseControlOpCode_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.PatternFlowEthernetPauseControlOpCode_Choice_Enum,oneof" json:"choice,omitempty"` // Description missing in models - // default = 0 + // default = 1 Value *uint32 `protobuf:"varint,2,opt,name=value,proto3,oneof" json:"value,omitempty"` // Description missing in models - // default = [0] + // default = [1] Values []uint32 `protobuf:"varint,3,rep,packed,name=values,proto3" json:"values,omitempty"` // Description missing in models - Increment *PatternFlowGtpv1SFlagCounter `protobuf:"bytes,5,opt,name=increment,proto3" json:"increment,omitempty"` + Increment *PatternFlowEthernetPauseControlOpCodeCounter `protobuf:"bytes,5,opt,name=increment,proto3" json:"increment,omitempty"` // Description missing in models - Decrement *PatternFlowGtpv1SFlagCounter `protobuf:"bytes,6,opt,name=decrement,proto3" json:"decrement,omitempty"` + Decrement *PatternFlowEthernetPauseControlOpCodeCounter `protobuf:"bytes,6,opt,name=decrement,proto3" json:"decrement,omitempty"` // One or more metric tags can be used to enable tracking portion of or all bits in // a corresponding header field for metrics per each applicable value. These would appear // as tagged metrics in corresponding flow metrics. - MetricTags []*PatternFlowGtpv1SFlagMetricTag `protobuf:"bytes,7,rep,name=metric_tags,json=metricTags,proto3" json:"metric_tags,omitempty"` + MetricTags []*PatternFlowEthernetPauseControlOpCodeMetricTag `protobuf:"bytes,7,rep,name=metric_tags,json=metricTags,proto3" json:"metric_tags,omitempty"` } -func (x *PatternFlowGtpv1SFlag) Reset() { - *x = PatternFlowGtpv1SFlag{} +func (x *PatternFlowEthernetPauseControlOpCode) Reset() { + *x = PatternFlowEthernetPauseControlOpCode{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[593] + mi := &file_otg_proto_msgTypes[554] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowGtpv1SFlag) String() string { +func (x *PatternFlowEthernetPauseControlOpCode) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowGtpv1SFlag) ProtoMessage() {} +func (*PatternFlowEthernetPauseControlOpCode) ProtoMessage() {} -func (x *PatternFlowGtpv1SFlag) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[593] +func (x *PatternFlowEthernetPauseControlOpCode) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[554] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -68005,47 +67053,47 @@ func (x *PatternFlowGtpv1SFlag) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use PatternFlowGtpv1SFlag.ProtoReflect.Descriptor instead. -func (*PatternFlowGtpv1SFlag) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{593} +// Deprecated: Use PatternFlowEthernetPauseControlOpCode.ProtoReflect.Descriptor instead. +func (*PatternFlowEthernetPauseControlOpCode) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{554} } -func (x *PatternFlowGtpv1SFlag) GetChoice() PatternFlowGtpv1SFlag_Choice_Enum { +func (x *PatternFlowEthernetPauseControlOpCode) GetChoice() PatternFlowEthernetPauseControlOpCode_Choice_Enum { if x != nil && x.Choice != nil { return *x.Choice } - return PatternFlowGtpv1SFlag_Choice_unspecified + return PatternFlowEthernetPauseControlOpCode_Choice_unspecified } -func (x *PatternFlowGtpv1SFlag) GetValue() uint32 { +func (x *PatternFlowEthernetPauseControlOpCode) GetValue() uint32 { if x != nil && x.Value != nil { return *x.Value } return 0 } -func (x *PatternFlowGtpv1SFlag) GetValues() []uint32 { +func (x *PatternFlowEthernetPauseControlOpCode) GetValues() []uint32 { if x != nil { return x.Values } return nil } -func (x *PatternFlowGtpv1SFlag) GetIncrement() *PatternFlowGtpv1SFlagCounter { +func (x *PatternFlowEthernetPauseControlOpCode) GetIncrement() *PatternFlowEthernetPauseControlOpCodeCounter { if x != nil { return x.Increment } return nil } -func (x *PatternFlowGtpv1SFlag) GetDecrement() *PatternFlowGtpv1SFlagCounter { +func (x *PatternFlowEthernetPauseControlOpCode) GetDecrement() *PatternFlowEthernetPauseControlOpCodeCounter { if x != nil { return x.Decrement } return nil } -func (x *PatternFlowGtpv1SFlag) GetMetricTags() []*PatternFlowGtpv1SFlagMetricTag { +func (x *PatternFlowEthernetPauseControlOpCode) GetMetricTags() []*PatternFlowEthernetPauseControlOpCodeMetricTag { if x != nil { return x.MetricTags } @@ -68053,7 +67101,7 @@ func (x *PatternFlowGtpv1SFlag) GetMetricTags() []*PatternFlowGtpv1SFlagMetricTa } // integer counter pattern -type PatternFlowGtpv1PnFlagCounter struct { +type PatternFlowEthernetPauseTimeCounter struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields @@ -68069,23 +67117,23 @@ type PatternFlowGtpv1PnFlagCounter struct { Count *uint32 `protobuf:"varint,3,opt,name=count,proto3,oneof" json:"count,omitempty"` } -func (x *PatternFlowGtpv1PnFlagCounter) Reset() { - *x = PatternFlowGtpv1PnFlagCounter{} +func (x *PatternFlowEthernetPauseTimeCounter) Reset() { + *x = PatternFlowEthernetPauseTimeCounter{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[594] + mi := &file_otg_proto_msgTypes[555] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowGtpv1PnFlagCounter) String() string { +func (x *PatternFlowEthernetPauseTimeCounter) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowGtpv1PnFlagCounter) ProtoMessage() {} +func (*PatternFlowEthernetPauseTimeCounter) ProtoMessage() {} -func (x *PatternFlowGtpv1PnFlagCounter) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[594] +func (x *PatternFlowEthernetPauseTimeCounter) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[555] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -68096,26 +67144,26 @@ func (x *PatternFlowGtpv1PnFlagCounter) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use PatternFlowGtpv1PnFlagCounter.ProtoReflect.Descriptor instead. -func (*PatternFlowGtpv1PnFlagCounter) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{594} +// Deprecated: Use PatternFlowEthernetPauseTimeCounter.ProtoReflect.Descriptor instead. +func (*PatternFlowEthernetPauseTimeCounter) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{555} } -func (x *PatternFlowGtpv1PnFlagCounter) GetStart() uint32 { +func (x *PatternFlowEthernetPauseTimeCounter) GetStart() uint32 { if x != nil && x.Start != nil { return *x.Start } return 0 } -func (x *PatternFlowGtpv1PnFlagCounter) GetStep() uint32 { +func (x *PatternFlowEthernetPauseTimeCounter) GetStep() uint32 { if x != nil && x.Step != nil { return *x.Step } return 0 } -func (x *PatternFlowGtpv1PnFlagCounter) GetCount() uint32 { +func (x *PatternFlowEthernetPauseTimeCounter) GetCount() uint32 { if x != nil && x.Count != nil { return *x.Count } @@ -68125,7 +67173,7 @@ func (x *PatternFlowGtpv1PnFlagCounter) GetCount() uint32 { // Metric tag can be used to enable tracking portion of or all bits in a corresponding // header field for metrics per each applicable value. These would appear as tagged // metrics in corresponding flow metrics. -type PatternFlowGtpv1PnFlagMetricTag struct { +type PatternFlowEthernetPauseTimeMetricTag struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields @@ -68139,27 +67187,27 @@ type PatternFlowGtpv1PnFlagMetricTag struct { Offset *uint32 `protobuf:"varint,2,opt,name=offset,proto3,oneof" json:"offset,omitempty"` // Number of bits to track for metrics starting from configured offset of corresponding // header field - // default = 1 + // default = 16 Length *uint32 `protobuf:"varint,3,opt,name=length,proto3,oneof" json:"length,omitempty"` } -func (x *PatternFlowGtpv1PnFlagMetricTag) Reset() { - *x = PatternFlowGtpv1PnFlagMetricTag{} +func (x *PatternFlowEthernetPauseTimeMetricTag) Reset() { + *x = PatternFlowEthernetPauseTimeMetricTag{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[595] + mi := &file_otg_proto_msgTypes[556] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowGtpv1PnFlagMetricTag) String() string { +func (x *PatternFlowEthernetPauseTimeMetricTag) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowGtpv1PnFlagMetricTag) ProtoMessage() {} +func (*PatternFlowEthernetPauseTimeMetricTag) ProtoMessage() {} -func (x *PatternFlowGtpv1PnFlagMetricTag) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[595] +func (x *PatternFlowEthernetPauseTimeMetricTag) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[556] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -68170,41 +67218,41 @@ func (x *PatternFlowGtpv1PnFlagMetricTag) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use PatternFlowGtpv1PnFlagMetricTag.ProtoReflect.Descriptor instead. -func (*PatternFlowGtpv1PnFlagMetricTag) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{595} +// Deprecated: Use PatternFlowEthernetPauseTimeMetricTag.ProtoReflect.Descriptor instead. +func (*PatternFlowEthernetPauseTimeMetricTag) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{556} } -func (x *PatternFlowGtpv1PnFlagMetricTag) GetName() string { +func (x *PatternFlowEthernetPauseTimeMetricTag) GetName() string { if x != nil && x.Name != nil { return *x.Name } return "" } -func (x *PatternFlowGtpv1PnFlagMetricTag) GetOffset() uint32 { +func (x *PatternFlowEthernetPauseTimeMetricTag) GetOffset() uint32 { if x != nil && x.Offset != nil { return *x.Offset } return 0 } -func (x *PatternFlowGtpv1PnFlagMetricTag) GetLength() uint32 { +func (x *PatternFlowEthernetPauseTimeMetricTag) GetLength() uint32 { if x != nil && x.Length != nil { return *x.Length } return 0 } -// N-PDU field present -type PatternFlowGtpv1PnFlag struct { +// Time +type PatternFlowEthernetPauseTime struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // Description missing in models // default = Choice.Enum.value - Choice *PatternFlowGtpv1PnFlag_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.PatternFlowGtpv1PnFlag_Choice_Enum,oneof" json:"choice,omitempty"` + Choice *PatternFlowEthernetPauseTime_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.PatternFlowEthernetPauseTime_Choice_Enum,oneof" json:"choice,omitempty"` // Description missing in models // default = 0 Value *uint32 `protobuf:"varint,2,opt,name=value,proto3,oneof" json:"value,omitempty"` @@ -68212,32 +67260,32 @@ type PatternFlowGtpv1PnFlag struct { // default = [0] Values []uint32 `protobuf:"varint,3,rep,packed,name=values,proto3" json:"values,omitempty"` // Description missing in models - Increment *PatternFlowGtpv1PnFlagCounter `protobuf:"bytes,5,opt,name=increment,proto3" json:"increment,omitempty"` + Increment *PatternFlowEthernetPauseTimeCounter `protobuf:"bytes,5,opt,name=increment,proto3" json:"increment,omitempty"` // Description missing in models - Decrement *PatternFlowGtpv1PnFlagCounter `protobuf:"bytes,6,opt,name=decrement,proto3" json:"decrement,omitempty"` + Decrement *PatternFlowEthernetPauseTimeCounter `protobuf:"bytes,6,opt,name=decrement,proto3" json:"decrement,omitempty"` // One or more metric tags can be used to enable tracking portion of or all bits in // a corresponding header field for metrics per each applicable value. These would appear // as tagged metrics in corresponding flow metrics. - MetricTags []*PatternFlowGtpv1PnFlagMetricTag `protobuf:"bytes,7,rep,name=metric_tags,json=metricTags,proto3" json:"metric_tags,omitempty"` + MetricTags []*PatternFlowEthernetPauseTimeMetricTag `protobuf:"bytes,7,rep,name=metric_tags,json=metricTags,proto3" json:"metric_tags,omitempty"` } -func (x *PatternFlowGtpv1PnFlag) Reset() { - *x = PatternFlowGtpv1PnFlag{} +func (x *PatternFlowEthernetPauseTime) Reset() { + *x = PatternFlowEthernetPauseTime{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[596] + mi := &file_otg_proto_msgTypes[557] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowGtpv1PnFlag) String() string { +func (x *PatternFlowEthernetPauseTime) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowGtpv1PnFlag) ProtoMessage() {} +func (*PatternFlowEthernetPauseTime) ProtoMessage() {} -func (x *PatternFlowGtpv1PnFlag) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[596] +func (x *PatternFlowEthernetPauseTime) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[557] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -68248,47 +67296,47 @@ func (x *PatternFlowGtpv1PnFlag) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use PatternFlowGtpv1PnFlag.ProtoReflect.Descriptor instead. -func (*PatternFlowGtpv1PnFlag) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{596} +// Deprecated: Use PatternFlowEthernetPauseTime.ProtoReflect.Descriptor instead. +func (*PatternFlowEthernetPauseTime) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{557} } -func (x *PatternFlowGtpv1PnFlag) GetChoice() PatternFlowGtpv1PnFlag_Choice_Enum { +func (x *PatternFlowEthernetPauseTime) GetChoice() PatternFlowEthernetPauseTime_Choice_Enum { if x != nil && x.Choice != nil { return *x.Choice } - return PatternFlowGtpv1PnFlag_Choice_unspecified + return PatternFlowEthernetPauseTime_Choice_unspecified } -func (x *PatternFlowGtpv1PnFlag) GetValue() uint32 { +func (x *PatternFlowEthernetPauseTime) GetValue() uint32 { if x != nil && x.Value != nil { return *x.Value } return 0 } -func (x *PatternFlowGtpv1PnFlag) GetValues() []uint32 { +func (x *PatternFlowEthernetPauseTime) GetValues() []uint32 { if x != nil { return x.Values } return nil } -func (x *PatternFlowGtpv1PnFlag) GetIncrement() *PatternFlowGtpv1PnFlagCounter { +func (x *PatternFlowEthernetPauseTime) GetIncrement() *PatternFlowEthernetPauseTimeCounter { if x != nil { return x.Increment } return nil } -func (x *PatternFlowGtpv1PnFlag) GetDecrement() *PatternFlowGtpv1PnFlagCounter { +func (x *PatternFlowEthernetPauseTime) GetDecrement() *PatternFlowEthernetPauseTimeCounter { if x != nil { return x.Decrement } return nil } -func (x *PatternFlowGtpv1PnFlag) GetMetricTags() []*PatternFlowGtpv1PnFlagMetricTag { +func (x *PatternFlowEthernetPauseTime) GetMetricTags() []*PatternFlowEthernetPauseTimeMetricTag { if x != nil { return x.MetricTags } @@ -68296,7 +67344,7 @@ func (x *PatternFlowGtpv1PnFlag) GetMetricTags() []*PatternFlowGtpv1PnFlagMetric } // integer counter pattern -type PatternFlowGtpv1MessageTypeCounter struct { +type PatternFlowTcpSrcPortCounter struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields @@ -68312,23 +67360,23 @@ type PatternFlowGtpv1MessageTypeCounter struct { Count *uint32 `protobuf:"varint,3,opt,name=count,proto3,oneof" json:"count,omitempty"` } -func (x *PatternFlowGtpv1MessageTypeCounter) Reset() { - *x = PatternFlowGtpv1MessageTypeCounter{} +func (x *PatternFlowTcpSrcPortCounter) Reset() { + *x = PatternFlowTcpSrcPortCounter{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[597] + mi := &file_otg_proto_msgTypes[558] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowGtpv1MessageTypeCounter) String() string { +func (x *PatternFlowTcpSrcPortCounter) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowGtpv1MessageTypeCounter) ProtoMessage() {} +func (*PatternFlowTcpSrcPortCounter) ProtoMessage() {} -func (x *PatternFlowGtpv1MessageTypeCounter) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[597] +func (x *PatternFlowTcpSrcPortCounter) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[558] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -68339,26 +67387,26 @@ func (x *PatternFlowGtpv1MessageTypeCounter) ProtoReflect() protoreflect.Message return mi.MessageOf(x) } -// Deprecated: Use PatternFlowGtpv1MessageTypeCounter.ProtoReflect.Descriptor instead. -func (*PatternFlowGtpv1MessageTypeCounter) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{597} +// Deprecated: Use PatternFlowTcpSrcPortCounter.ProtoReflect.Descriptor instead. +func (*PatternFlowTcpSrcPortCounter) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{558} } -func (x *PatternFlowGtpv1MessageTypeCounter) GetStart() uint32 { +func (x *PatternFlowTcpSrcPortCounter) GetStart() uint32 { if x != nil && x.Start != nil { return *x.Start } return 0 } -func (x *PatternFlowGtpv1MessageTypeCounter) GetStep() uint32 { +func (x *PatternFlowTcpSrcPortCounter) GetStep() uint32 { if x != nil && x.Step != nil { return *x.Step } return 0 } -func (x *PatternFlowGtpv1MessageTypeCounter) GetCount() uint32 { +func (x *PatternFlowTcpSrcPortCounter) GetCount() uint32 { if x != nil && x.Count != nil { return *x.Count } @@ -68368,7 +67416,7 @@ func (x *PatternFlowGtpv1MessageTypeCounter) GetCount() uint32 { // Metric tag can be used to enable tracking portion of or all bits in a corresponding // header field for metrics per each applicable value. These would appear as tagged // metrics in corresponding flow metrics. -type PatternFlowGtpv1MessageTypeMetricTag struct { +type PatternFlowTcpSrcPortMetricTag struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields @@ -68382,27 +67430,27 @@ type PatternFlowGtpv1MessageTypeMetricTag struct { Offset *uint32 `protobuf:"varint,2,opt,name=offset,proto3,oneof" json:"offset,omitempty"` // Number of bits to track for metrics starting from configured offset of corresponding // header field - // default = 8 + // default = 16 Length *uint32 `protobuf:"varint,3,opt,name=length,proto3,oneof" json:"length,omitempty"` } -func (x *PatternFlowGtpv1MessageTypeMetricTag) Reset() { - *x = PatternFlowGtpv1MessageTypeMetricTag{} +func (x *PatternFlowTcpSrcPortMetricTag) Reset() { + *x = PatternFlowTcpSrcPortMetricTag{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[598] + mi := &file_otg_proto_msgTypes[559] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowGtpv1MessageTypeMetricTag) String() string { +func (x *PatternFlowTcpSrcPortMetricTag) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowGtpv1MessageTypeMetricTag) ProtoMessage() {} +func (*PatternFlowTcpSrcPortMetricTag) ProtoMessage() {} -func (x *PatternFlowGtpv1MessageTypeMetricTag) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[598] +func (x *PatternFlowTcpSrcPortMetricTag) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[559] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -68413,42 +67461,41 @@ func (x *PatternFlowGtpv1MessageTypeMetricTag) ProtoReflect() protoreflect.Messa return mi.MessageOf(x) } -// Deprecated: Use PatternFlowGtpv1MessageTypeMetricTag.ProtoReflect.Descriptor instead. -func (*PatternFlowGtpv1MessageTypeMetricTag) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{598} +// Deprecated: Use PatternFlowTcpSrcPortMetricTag.ProtoReflect.Descriptor instead. +func (*PatternFlowTcpSrcPortMetricTag) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{559} } -func (x *PatternFlowGtpv1MessageTypeMetricTag) GetName() string { +func (x *PatternFlowTcpSrcPortMetricTag) GetName() string { if x != nil && x.Name != nil { return *x.Name } return "" } -func (x *PatternFlowGtpv1MessageTypeMetricTag) GetOffset() uint32 { +func (x *PatternFlowTcpSrcPortMetricTag) GetOffset() uint32 { if x != nil && x.Offset != nil { return *x.Offset } return 0 } -func (x *PatternFlowGtpv1MessageTypeMetricTag) GetLength() uint32 { +func (x *PatternFlowTcpSrcPortMetricTag) GetLength() uint32 { if x != nil && x.Length != nil { return *x.Length } return 0 } -// The type of GTP message Different types of messages are defined in 3GPP TS 29.060 -// section 7.1 -type PatternFlowGtpv1MessageType struct { +// Source port +type PatternFlowTcpSrcPort struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // Description missing in models // default = Choice.Enum.value - Choice *PatternFlowGtpv1MessageType_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.PatternFlowGtpv1MessageType_Choice_Enum,oneof" json:"choice,omitempty"` + Choice *PatternFlowTcpSrcPort_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.PatternFlowTcpSrcPort_Choice_Enum,oneof" json:"choice,omitempty"` // Description missing in models // default = 0 Value *uint32 `protobuf:"varint,2,opt,name=value,proto3,oneof" json:"value,omitempty"` @@ -68456,32 +67503,32 @@ type PatternFlowGtpv1MessageType struct { // default = [0] Values []uint32 `protobuf:"varint,3,rep,packed,name=values,proto3" json:"values,omitempty"` // Description missing in models - Increment *PatternFlowGtpv1MessageTypeCounter `protobuf:"bytes,5,opt,name=increment,proto3" json:"increment,omitempty"` + Increment *PatternFlowTcpSrcPortCounter `protobuf:"bytes,5,opt,name=increment,proto3" json:"increment,omitempty"` // Description missing in models - Decrement *PatternFlowGtpv1MessageTypeCounter `protobuf:"bytes,6,opt,name=decrement,proto3" json:"decrement,omitempty"` + Decrement *PatternFlowTcpSrcPortCounter `protobuf:"bytes,6,opt,name=decrement,proto3" json:"decrement,omitempty"` // One or more metric tags can be used to enable tracking portion of or all bits in // a corresponding header field for metrics per each applicable value. These would appear // as tagged metrics in corresponding flow metrics. - MetricTags []*PatternFlowGtpv1MessageTypeMetricTag `protobuf:"bytes,7,rep,name=metric_tags,json=metricTags,proto3" json:"metric_tags,omitempty"` + MetricTags []*PatternFlowTcpSrcPortMetricTag `protobuf:"bytes,7,rep,name=metric_tags,json=metricTags,proto3" json:"metric_tags,omitempty"` } -func (x *PatternFlowGtpv1MessageType) Reset() { - *x = PatternFlowGtpv1MessageType{} +func (x *PatternFlowTcpSrcPort) Reset() { + *x = PatternFlowTcpSrcPort{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[599] + mi := &file_otg_proto_msgTypes[560] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowGtpv1MessageType) String() string { +func (x *PatternFlowTcpSrcPort) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowGtpv1MessageType) ProtoMessage() {} +func (*PatternFlowTcpSrcPort) ProtoMessage() {} -func (x *PatternFlowGtpv1MessageType) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[599] +func (x *PatternFlowTcpSrcPort) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[560] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -68492,47 +67539,47 @@ func (x *PatternFlowGtpv1MessageType) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use PatternFlowGtpv1MessageType.ProtoReflect.Descriptor instead. -func (*PatternFlowGtpv1MessageType) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{599} +// Deprecated: Use PatternFlowTcpSrcPort.ProtoReflect.Descriptor instead. +func (*PatternFlowTcpSrcPort) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{560} } -func (x *PatternFlowGtpv1MessageType) GetChoice() PatternFlowGtpv1MessageType_Choice_Enum { +func (x *PatternFlowTcpSrcPort) GetChoice() PatternFlowTcpSrcPort_Choice_Enum { if x != nil && x.Choice != nil { return *x.Choice } - return PatternFlowGtpv1MessageType_Choice_unspecified + return PatternFlowTcpSrcPort_Choice_unspecified } -func (x *PatternFlowGtpv1MessageType) GetValue() uint32 { +func (x *PatternFlowTcpSrcPort) GetValue() uint32 { if x != nil && x.Value != nil { return *x.Value } return 0 } -func (x *PatternFlowGtpv1MessageType) GetValues() []uint32 { +func (x *PatternFlowTcpSrcPort) GetValues() []uint32 { if x != nil { return x.Values } return nil } -func (x *PatternFlowGtpv1MessageType) GetIncrement() *PatternFlowGtpv1MessageTypeCounter { +func (x *PatternFlowTcpSrcPort) GetIncrement() *PatternFlowTcpSrcPortCounter { if x != nil { return x.Increment } return nil } -func (x *PatternFlowGtpv1MessageType) GetDecrement() *PatternFlowGtpv1MessageTypeCounter { +func (x *PatternFlowTcpSrcPort) GetDecrement() *PatternFlowTcpSrcPortCounter { if x != nil { return x.Decrement } return nil } -func (x *PatternFlowGtpv1MessageType) GetMetricTags() []*PatternFlowGtpv1MessageTypeMetricTag { +func (x *PatternFlowTcpSrcPort) GetMetricTags() []*PatternFlowTcpSrcPortMetricTag { if x != nil { return x.MetricTags } @@ -68540,7 +67587,7 @@ func (x *PatternFlowGtpv1MessageType) GetMetricTags() []*PatternFlowGtpv1Message } // integer counter pattern -type PatternFlowGtpv1MessageLengthCounter struct { +type PatternFlowTcpDstPortCounter struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields @@ -68556,23 +67603,23 @@ type PatternFlowGtpv1MessageLengthCounter struct { Count *uint32 `protobuf:"varint,3,opt,name=count,proto3,oneof" json:"count,omitempty"` } -func (x *PatternFlowGtpv1MessageLengthCounter) Reset() { - *x = PatternFlowGtpv1MessageLengthCounter{} +func (x *PatternFlowTcpDstPortCounter) Reset() { + *x = PatternFlowTcpDstPortCounter{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[600] + mi := &file_otg_proto_msgTypes[561] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowGtpv1MessageLengthCounter) String() string { +func (x *PatternFlowTcpDstPortCounter) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowGtpv1MessageLengthCounter) ProtoMessage() {} +func (*PatternFlowTcpDstPortCounter) ProtoMessage() {} -func (x *PatternFlowGtpv1MessageLengthCounter) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[600] +func (x *PatternFlowTcpDstPortCounter) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[561] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -68583,26 +67630,26 @@ func (x *PatternFlowGtpv1MessageLengthCounter) ProtoReflect() protoreflect.Messa return mi.MessageOf(x) } -// Deprecated: Use PatternFlowGtpv1MessageLengthCounter.ProtoReflect.Descriptor instead. -func (*PatternFlowGtpv1MessageLengthCounter) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{600} +// Deprecated: Use PatternFlowTcpDstPortCounter.ProtoReflect.Descriptor instead. +func (*PatternFlowTcpDstPortCounter) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{561} } -func (x *PatternFlowGtpv1MessageLengthCounter) GetStart() uint32 { +func (x *PatternFlowTcpDstPortCounter) GetStart() uint32 { if x != nil && x.Start != nil { return *x.Start } return 0 } -func (x *PatternFlowGtpv1MessageLengthCounter) GetStep() uint32 { +func (x *PatternFlowTcpDstPortCounter) GetStep() uint32 { if x != nil && x.Step != nil { return *x.Step } return 0 } -func (x *PatternFlowGtpv1MessageLengthCounter) GetCount() uint32 { +func (x *PatternFlowTcpDstPortCounter) GetCount() uint32 { if x != nil && x.Count != nil { return *x.Count } @@ -68612,7 +67659,7 @@ func (x *PatternFlowGtpv1MessageLengthCounter) GetCount() uint32 { // Metric tag can be used to enable tracking portion of or all bits in a corresponding // header field for metrics per each applicable value. These would appear as tagged // metrics in corresponding flow metrics. -type PatternFlowGtpv1MessageLengthMetricTag struct { +type PatternFlowTcpDstPortMetricTag struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields @@ -68630,23 +67677,23 @@ type PatternFlowGtpv1MessageLengthMetricTag struct { Length *uint32 `protobuf:"varint,3,opt,name=length,proto3,oneof" json:"length,omitempty"` } -func (x *PatternFlowGtpv1MessageLengthMetricTag) Reset() { - *x = PatternFlowGtpv1MessageLengthMetricTag{} +func (x *PatternFlowTcpDstPortMetricTag) Reset() { + *x = PatternFlowTcpDstPortMetricTag{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[601] + mi := &file_otg_proto_msgTypes[562] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowGtpv1MessageLengthMetricTag) String() string { +func (x *PatternFlowTcpDstPortMetricTag) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowGtpv1MessageLengthMetricTag) ProtoMessage() {} +func (*PatternFlowTcpDstPortMetricTag) ProtoMessage() {} -func (x *PatternFlowGtpv1MessageLengthMetricTag) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[601] +func (x *PatternFlowTcpDstPortMetricTag) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[562] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -68657,42 +67704,41 @@ func (x *PatternFlowGtpv1MessageLengthMetricTag) ProtoReflect() protoreflect.Mes return mi.MessageOf(x) } -// Deprecated: Use PatternFlowGtpv1MessageLengthMetricTag.ProtoReflect.Descriptor instead. -func (*PatternFlowGtpv1MessageLengthMetricTag) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{601} +// Deprecated: Use PatternFlowTcpDstPortMetricTag.ProtoReflect.Descriptor instead. +func (*PatternFlowTcpDstPortMetricTag) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{562} } -func (x *PatternFlowGtpv1MessageLengthMetricTag) GetName() string { +func (x *PatternFlowTcpDstPortMetricTag) GetName() string { if x != nil && x.Name != nil { return *x.Name } return "" } -func (x *PatternFlowGtpv1MessageLengthMetricTag) GetOffset() uint32 { +func (x *PatternFlowTcpDstPortMetricTag) GetOffset() uint32 { if x != nil && x.Offset != nil { return *x.Offset } return 0 } -func (x *PatternFlowGtpv1MessageLengthMetricTag) GetLength() uint32 { +func (x *PatternFlowTcpDstPortMetricTag) GetLength() uint32 { if x != nil && x.Length != nil { return *x.Length } return 0 } -// The length of the payload (the bytes following the mandatory 8-byte GTP header) in -// bytes that includes any optional fields -type PatternFlowGtpv1MessageLength struct { +// Destination port +type PatternFlowTcpDstPort struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // Description missing in models // default = Choice.Enum.value - Choice *PatternFlowGtpv1MessageLength_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.PatternFlowGtpv1MessageLength_Choice_Enum,oneof" json:"choice,omitempty"` + Choice *PatternFlowTcpDstPort_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.PatternFlowTcpDstPort_Choice_Enum,oneof" json:"choice,omitempty"` // Description missing in models // default = 0 Value *uint32 `protobuf:"varint,2,opt,name=value,proto3,oneof" json:"value,omitempty"` @@ -68700,33 +67746,33 @@ type PatternFlowGtpv1MessageLength struct { // default = [0] Values []uint32 `protobuf:"varint,3,rep,packed,name=values,proto3" json:"values,omitempty"` // Description missing in models - Increment *PatternFlowGtpv1MessageLengthCounter `protobuf:"bytes,5,opt,name=increment,proto3" json:"increment,omitempty"` + Increment *PatternFlowTcpDstPortCounter `protobuf:"bytes,5,opt,name=increment,proto3" json:"increment,omitempty"` // Description missing in models - Decrement *PatternFlowGtpv1MessageLengthCounter `protobuf:"bytes,6,opt,name=decrement,proto3" json:"decrement,omitempty"` + Decrement *PatternFlowTcpDstPortCounter `protobuf:"bytes,6,opt,name=decrement,proto3" json:"decrement,omitempty"` // One or more metric tags can be used to enable tracking portion of or all bits in // a corresponding header field for metrics per each applicable value. These would appear // as tagged metrics in corresponding flow metrics. - MetricTags []*PatternFlowGtpv1MessageLengthMetricTag `protobuf:"bytes,7,rep,name=metric_tags,json=metricTags,proto3" json:"metric_tags,omitempty"` + MetricTags []*PatternFlowTcpDstPortMetricTag `protobuf:"bytes,7,rep,name=metric_tags,json=metricTags,proto3" json:"metric_tags,omitempty"` } -func (x *PatternFlowGtpv1MessageLength) Reset() { - *x = PatternFlowGtpv1MessageLength{} +func (x *PatternFlowTcpDstPort) Reset() { + *x = PatternFlowTcpDstPort{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[602] + mi := &file_otg_proto_msgTypes[563] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowGtpv1MessageLength) String() string { +func (x *PatternFlowTcpDstPort) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowGtpv1MessageLength) ProtoMessage() {} +func (*PatternFlowTcpDstPort) ProtoMessage() {} -func (x *PatternFlowGtpv1MessageLength) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[602] - if protoimpl.UnsafeEnabled && x != nil { +func (x *PatternFlowTcpDstPort) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[563] + if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -68736,47 +67782,47 @@ func (x *PatternFlowGtpv1MessageLength) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use PatternFlowGtpv1MessageLength.ProtoReflect.Descriptor instead. -func (*PatternFlowGtpv1MessageLength) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{602} +// Deprecated: Use PatternFlowTcpDstPort.ProtoReflect.Descriptor instead. +func (*PatternFlowTcpDstPort) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{563} } -func (x *PatternFlowGtpv1MessageLength) GetChoice() PatternFlowGtpv1MessageLength_Choice_Enum { +func (x *PatternFlowTcpDstPort) GetChoice() PatternFlowTcpDstPort_Choice_Enum { if x != nil && x.Choice != nil { return *x.Choice } - return PatternFlowGtpv1MessageLength_Choice_unspecified + return PatternFlowTcpDstPort_Choice_unspecified } -func (x *PatternFlowGtpv1MessageLength) GetValue() uint32 { +func (x *PatternFlowTcpDstPort) GetValue() uint32 { if x != nil && x.Value != nil { return *x.Value } return 0 } -func (x *PatternFlowGtpv1MessageLength) GetValues() []uint32 { +func (x *PatternFlowTcpDstPort) GetValues() []uint32 { if x != nil { return x.Values } return nil } -func (x *PatternFlowGtpv1MessageLength) GetIncrement() *PatternFlowGtpv1MessageLengthCounter { +func (x *PatternFlowTcpDstPort) GetIncrement() *PatternFlowTcpDstPortCounter { if x != nil { return x.Increment } return nil } -func (x *PatternFlowGtpv1MessageLength) GetDecrement() *PatternFlowGtpv1MessageLengthCounter { +func (x *PatternFlowTcpDstPort) GetDecrement() *PatternFlowTcpDstPortCounter { if x != nil { return x.Decrement } return nil } -func (x *PatternFlowGtpv1MessageLength) GetMetricTags() []*PatternFlowGtpv1MessageLengthMetricTag { +func (x *PatternFlowTcpDstPort) GetMetricTags() []*PatternFlowTcpDstPortMetricTag { if x != nil { return x.MetricTags } @@ -68784,7 +67830,7 @@ func (x *PatternFlowGtpv1MessageLength) GetMetricTags() []*PatternFlowGtpv1Messa } // integer counter pattern -type PatternFlowGtpv1TeidCounter struct { +type PatternFlowTcpSeqNumCounter struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields @@ -68800,23 +67846,23 @@ type PatternFlowGtpv1TeidCounter struct { Count *uint32 `protobuf:"varint,3,opt,name=count,proto3,oneof" json:"count,omitempty"` } -func (x *PatternFlowGtpv1TeidCounter) Reset() { - *x = PatternFlowGtpv1TeidCounter{} +func (x *PatternFlowTcpSeqNumCounter) Reset() { + *x = PatternFlowTcpSeqNumCounter{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[603] + mi := &file_otg_proto_msgTypes[564] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowGtpv1TeidCounter) String() string { +func (x *PatternFlowTcpSeqNumCounter) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowGtpv1TeidCounter) ProtoMessage() {} +func (*PatternFlowTcpSeqNumCounter) ProtoMessage() {} -func (x *PatternFlowGtpv1TeidCounter) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[603] +func (x *PatternFlowTcpSeqNumCounter) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[564] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -68827,26 +67873,26 @@ func (x *PatternFlowGtpv1TeidCounter) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use PatternFlowGtpv1TeidCounter.ProtoReflect.Descriptor instead. -func (*PatternFlowGtpv1TeidCounter) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{603} +// Deprecated: Use PatternFlowTcpSeqNumCounter.ProtoReflect.Descriptor instead. +func (*PatternFlowTcpSeqNumCounter) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{564} } -func (x *PatternFlowGtpv1TeidCounter) GetStart() uint32 { +func (x *PatternFlowTcpSeqNumCounter) GetStart() uint32 { if x != nil && x.Start != nil { return *x.Start } return 0 } -func (x *PatternFlowGtpv1TeidCounter) GetStep() uint32 { +func (x *PatternFlowTcpSeqNumCounter) GetStep() uint32 { if x != nil && x.Step != nil { return *x.Step } return 0 } -func (x *PatternFlowGtpv1TeidCounter) GetCount() uint32 { +func (x *PatternFlowTcpSeqNumCounter) GetCount() uint32 { if x != nil && x.Count != nil { return *x.Count } @@ -68856,7 +67902,7 @@ func (x *PatternFlowGtpv1TeidCounter) GetCount() uint32 { // Metric tag can be used to enable tracking portion of or all bits in a corresponding // header field for metrics per each applicable value. These would appear as tagged // metrics in corresponding flow metrics. -type PatternFlowGtpv1TeidMetricTag struct { +type PatternFlowTcpSeqNumMetricTag struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields @@ -68874,23 +67920,23 @@ type PatternFlowGtpv1TeidMetricTag struct { Length *uint32 `protobuf:"varint,3,opt,name=length,proto3,oneof" json:"length,omitempty"` } -func (x *PatternFlowGtpv1TeidMetricTag) Reset() { - *x = PatternFlowGtpv1TeidMetricTag{} +func (x *PatternFlowTcpSeqNumMetricTag) Reset() { + *x = PatternFlowTcpSeqNumMetricTag{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[604] + mi := &file_otg_proto_msgTypes[565] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowGtpv1TeidMetricTag) String() string { +func (x *PatternFlowTcpSeqNumMetricTag) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowGtpv1TeidMetricTag) ProtoMessage() {} +func (*PatternFlowTcpSeqNumMetricTag) ProtoMessage() {} -func (x *PatternFlowGtpv1TeidMetricTag) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[604] +func (x *PatternFlowTcpSeqNumMetricTag) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[565] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -68901,41 +67947,41 @@ func (x *PatternFlowGtpv1TeidMetricTag) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use PatternFlowGtpv1TeidMetricTag.ProtoReflect.Descriptor instead. -func (*PatternFlowGtpv1TeidMetricTag) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{604} +// Deprecated: Use PatternFlowTcpSeqNumMetricTag.ProtoReflect.Descriptor instead. +func (*PatternFlowTcpSeqNumMetricTag) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{565} } -func (x *PatternFlowGtpv1TeidMetricTag) GetName() string { +func (x *PatternFlowTcpSeqNumMetricTag) GetName() string { if x != nil && x.Name != nil { return *x.Name } return "" } -func (x *PatternFlowGtpv1TeidMetricTag) GetOffset() uint32 { +func (x *PatternFlowTcpSeqNumMetricTag) GetOffset() uint32 { if x != nil && x.Offset != nil { return *x.Offset } return 0 } -func (x *PatternFlowGtpv1TeidMetricTag) GetLength() uint32 { +func (x *PatternFlowTcpSeqNumMetricTag) GetLength() uint32 { if x != nil && x.Length != nil { return *x.Length } return 0 } -// Tunnel endpoint identifier (TEID) used to multiplex connections in the same GTP tunnel -type PatternFlowGtpv1Teid struct { +// Sequence number +type PatternFlowTcpSeqNum struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // Description missing in models // default = Choice.Enum.value - Choice *PatternFlowGtpv1Teid_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.PatternFlowGtpv1Teid_Choice_Enum,oneof" json:"choice,omitempty"` + Choice *PatternFlowTcpSeqNum_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.PatternFlowTcpSeqNum_Choice_Enum,oneof" json:"choice,omitempty"` // Description missing in models // default = 0 Value *uint32 `protobuf:"varint,2,opt,name=value,proto3,oneof" json:"value,omitempty"` @@ -68943,32 +67989,32 @@ type PatternFlowGtpv1Teid struct { // default = [0] Values []uint32 `protobuf:"varint,3,rep,packed,name=values,proto3" json:"values,omitempty"` // Description missing in models - Increment *PatternFlowGtpv1TeidCounter `protobuf:"bytes,5,opt,name=increment,proto3" json:"increment,omitempty"` + Increment *PatternFlowTcpSeqNumCounter `protobuf:"bytes,5,opt,name=increment,proto3" json:"increment,omitempty"` // Description missing in models - Decrement *PatternFlowGtpv1TeidCounter `protobuf:"bytes,6,opt,name=decrement,proto3" json:"decrement,omitempty"` + Decrement *PatternFlowTcpSeqNumCounter `protobuf:"bytes,6,opt,name=decrement,proto3" json:"decrement,omitempty"` // One or more metric tags can be used to enable tracking portion of or all bits in // a corresponding header field for metrics per each applicable value. These would appear // as tagged metrics in corresponding flow metrics. - MetricTags []*PatternFlowGtpv1TeidMetricTag `protobuf:"bytes,7,rep,name=metric_tags,json=metricTags,proto3" json:"metric_tags,omitempty"` + MetricTags []*PatternFlowTcpSeqNumMetricTag `protobuf:"bytes,7,rep,name=metric_tags,json=metricTags,proto3" json:"metric_tags,omitempty"` } -func (x *PatternFlowGtpv1Teid) Reset() { - *x = PatternFlowGtpv1Teid{} +func (x *PatternFlowTcpSeqNum) Reset() { + *x = PatternFlowTcpSeqNum{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[605] + mi := &file_otg_proto_msgTypes[566] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowGtpv1Teid) String() string { +func (x *PatternFlowTcpSeqNum) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowGtpv1Teid) ProtoMessage() {} +func (*PatternFlowTcpSeqNum) ProtoMessage() {} -func (x *PatternFlowGtpv1Teid) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[605] +func (x *PatternFlowTcpSeqNum) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[566] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -68979,47 +68025,47 @@ func (x *PatternFlowGtpv1Teid) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use PatternFlowGtpv1Teid.ProtoReflect.Descriptor instead. -func (*PatternFlowGtpv1Teid) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{605} +// Deprecated: Use PatternFlowTcpSeqNum.ProtoReflect.Descriptor instead. +func (*PatternFlowTcpSeqNum) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{566} } -func (x *PatternFlowGtpv1Teid) GetChoice() PatternFlowGtpv1Teid_Choice_Enum { +func (x *PatternFlowTcpSeqNum) GetChoice() PatternFlowTcpSeqNum_Choice_Enum { if x != nil && x.Choice != nil { return *x.Choice } - return PatternFlowGtpv1Teid_Choice_unspecified + return PatternFlowTcpSeqNum_Choice_unspecified } -func (x *PatternFlowGtpv1Teid) GetValue() uint32 { +func (x *PatternFlowTcpSeqNum) GetValue() uint32 { if x != nil && x.Value != nil { return *x.Value } return 0 } -func (x *PatternFlowGtpv1Teid) GetValues() []uint32 { +func (x *PatternFlowTcpSeqNum) GetValues() []uint32 { if x != nil { return x.Values } return nil } -func (x *PatternFlowGtpv1Teid) GetIncrement() *PatternFlowGtpv1TeidCounter { +func (x *PatternFlowTcpSeqNum) GetIncrement() *PatternFlowTcpSeqNumCounter { if x != nil { return x.Increment } return nil } -func (x *PatternFlowGtpv1Teid) GetDecrement() *PatternFlowGtpv1TeidCounter { +func (x *PatternFlowTcpSeqNum) GetDecrement() *PatternFlowTcpSeqNumCounter { if x != nil { return x.Decrement } return nil } -func (x *PatternFlowGtpv1Teid) GetMetricTags() []*PatternFlowGtpv1TeidMetricTag { +func (x *PatternFlowTcpSeqNum) GetMetricTags() []*PatternFlowTcpSeqNumMetricTag { if x != nil { return x.MetricTags } @@ -69027,7 +68073,7 @@ func (x *PatternFlowGtpv1Teid) GetMetricTags() []*PatternFlowGtpv1TeidMetricTag } // integer counter pattern -type PatternFlowGtpv1SquenceNumberCounter struct { +type PatternFlowTcpAckNumCounter struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields @@ -69043,23 +68089,23 @@ type PatternFlowGtpv1SquenceNumberCounter struct { Count *uint32 `protobuf:"varint,3,opt,name=count,proto3,oneof" json:"count,omitempty"` } -func (x *PatternFlowGtpv1SquenceNumberCounter) Reset() { - *x = PatternFlowGtpv1SquenceNumberCounter{} +func (x *PatternFlowTcpAckNumCounter) Reset() { + *x = PatternFlowTcpAckNumCounter{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[606] + mi := &file_otg_proto_msgTypes[567] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowGtpv1SquenceNumberCounter) String() string { +func (x *PatternFlowTcpAckNumCounter) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowGtpv1SquenceNumberCounter) ProtoMessage() {} +func (*PatternFlowTcpAckNumCounter) ProtoMessage() {} -func (x *PatternFlowGtpv1SquenceNumberCounter) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[606] +func (x *PatternFlowTcpAckNumCounter) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[567] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -69070,26 +68116,26 @@ func (x *PatternFlowGtpv1SquenceNumberCounter) ProtoReflect() protoreflect.Messa return mi.MessageOf(x) } -// Deprecated: Use PatternFlowGtpv1SquenceNumberCounter.ProtoReflect.Descriptor instead. -func (*PatternFlowGtpv1SquenceNumberCounter) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{606} +// Deprecated: Use PatternFlowTcpAckNumCounter.ProtoReflect.Descriptor instead. +func (*PatternFlowTcpAckNumCounter) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{567} } -func (x *PatternFlowGtpv1SquenceNumberCounter) GetStart() uint32 { +func (x *PatternFlowTcpAckNumCounter) GetStart() uint32 { if x != nil && x.Start != nil { return *x.Start } return 0 } -func (x *PatternFlowGtpv1SquenceNumberCounter) GetStep() uint32 { +func (x *PatternFlowTcpAckNumCounter) GetStep() uint32 { if x != nil && x.Step != nil { return *x.Step } return 0 } -func (x *PatternFlowGtpv1SquenceNumberCounter) GetCount() uint32 { +func (x *PatternFlowTcpAckNumCounter) GetCount() uint32 { if x != nil && x.Count != nil { return *x.Count } @@ -69099,7 +68145,7 @@ func (x *PatternFlowGtpv1SquenceNumberCounter) GetCount() uint32 { // Metric tag can be used to enable tracking portion of or all bits in a corresponding // header field for metrics per each applicable value. These would appear as tagged // metrics in corresponding flow metrics. -type PatternFlowGtpv1SquenceNumberMetricTag struct { +type PatternFlowTcpAckNumMetricTag struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields @@ -69113,27 +68159,27 @@ type PatternFlowGtpv1SquenceNumberMetricTag struct { Offset *uint32 `protobuf:"varint,2,opt,name=offset,proto3,oneof" json:"offset,omitempty"` // Number of bits to track for metrics starting from configured offset of corresponding // header field - // default = 16 + // default = 32 Length *uint32 `protobuf:"varint,3,opt,name=length,proto3,oneof" json:"length,omitempty"` } -func (x *PatternFlowGtpv1SquenceNumberMetricTag) Reset() { - *x = PatternFlowGtpv1SquenceNumberMetricTag{} +func (x *PatternFlowTcpAckNumMetricTag) Reset() { + *x = PatternFlowTcpAckNumMetricTag{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[607] + mi := &file_otg_proto_msgTypes[568] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowGtpv1SquenceNumberMetricTag) String() string { +func (x *PatternFlowTcpAckNumMetricTag) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowGtpv1SquenceNumberMetricTag) ProtoMessage() {} +func (*PatternFlowTcpAckNumMetricTag) ProtoMessage() {} -func (x *PatternFlowGtpv1SquenceNumberMetricTag) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[607] +func (x *PatternFlowTcpAckNumMetricTag) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[568] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -69144,42 +68190,41 @@ func (x *PatternFlowGtpv1SquenceNumberMetricTag) ProtoReflect() protoreflect.Mes return mi.MessageOf(x) } -// Deprecated: Use PatternFlowGtpv1SquenceNumberMetricTag.ProtoReflect.Descriptor instead. -func (*PatternFlowGtpv1SquenceNumberMetricTag) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{607} +// Deprecated: Use PatternFlowTcpAckNumMetricTag.ProtoReflect.Descriptor instead. +func (*PatternFlowTcpAckNumMetricTag) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{568} } -func (x *PatternFlowGtpv1SquenceNumberMetricTag) GetName() string { +func (x *PatternFlowTcpAckNumMetricTag) GetName() string { if x != nil && x.Name != nil { return *x.Name } return "" } -func (x *PatternFlowGtpv1SquenceNumberMetricTag) GetOffset() uint32 { +func (x *PatternFlowTcpAckNumMetricTag) GetOffset() uint32 { if x != nil && x.Offset != nil { return *x.Offset } return 0 } -func (x *PatternFlowGtpv1SquenceNumberMetricTag) GetLength() uint32 { +func (x *PatternFlowTcpAckNumMetricTag) GetLength() uint32 { if x != nil && x.Length != nil { return *x.Length } return 0 } -// Sequence number. Exists if any of the e_flag, s_flag, or pn_flag bits are on. Must -// be interpreted only if the s_flag bit is on. -type PatternFlowGtpv1SquenceNumber struct { +// Acknowledgement number +type PatternFlowTcpAckNum struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // Description missing in models // default = Choice.Enum.value - Choice *PatternFlowGtpv1SquenceNumber_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.PatternFlowGtpv1SquenceNumber_Choice_Enum,oneof" json:"choice,omitempty"` + Choice *PatternFlowTcpAckNum_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.PatternFlowTcpAckNum_Choice_Enum,oneof" json:"choice,omitempty"` // Description missing in models // default = 0 Value *uint32 `protobuf:"varint,2,opt,name=value,proto3,oneof" json:"value,omitempty"` @@ -69187,32 +68232,32 @@ type PatternFlowGtpv1SquenceNumber struct { // default = [0] Values []uint32 `protobuf:"varint,3,rep,packed,name=values,proto3" json:"values,omitempty"` // Description missing in models - Increment *PatternFlowGtpv1SquenceNumberCounter `protobuf:"bytes,5,opt,name=increment,proto3" json:"increment,omitempty"` + Increment *PatternFlowTcpAckNumCounter `protobuf:"bytes,5,opt,name=increment,proto3" json:"increment,omitempty"` // Description missing in models - Decrement *PatternFlowGtpv1SquenceNumberCounter `protobuf:"bytes,6,opt,name=decrement,proto3" json:"decrement,omitempty"` + Decrement *PatternFlowTcpAckNumCounter `protobuf:"bytes,6,opt,name=decrement,proto3" json:"decrement,omitempty"` // One or more metric tags can be used to enable tracking portion of or all bits in // a corresponding header field for metrics per each applicable value. These would appear // as tagged metrics in corresponding flow metrics. - MetricTags []*PatternFlowGtpv1SquenceNumberMetricTag `protobuf:"bytes,7,rep,name=metric_tags,json=metricTags,proto3" json:"metric_tags,omitempty"` + MetricTags []*PatternFlowTcpAckNumMetricTag `protobuf:"bytes,7,rep,name=metric_tags,json=metricTags,proto3" json:"metric_tags,omitempty"` } -func (x *PatternFlowGtpv1SquenceNumber) Reset() { - *x = PatternFlowGtpv1SquenceNumber{} +func (x *PatternFlowTcpAckNum) Reset() { + *x = PatternFlowTcpAckNum{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[608] + mi := &file_otg_proto_msgTypes[569] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowGtpv1SquenceNumber) String() string { +func (x *PatternFlowTcpAckNum) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowGtpv1SquenceNumber) ProtoMessage() {} +func (*PatternFlowTcpAckNum) ProtoMessage() {} -func (x *PatternFlowGtpv1SquenceNumber) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[608] +func (x *PatternFlowTcpAckNum) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[569] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -69223,47 +68268,47 @@ func (x *PatternFlowGtpv1SquenceNumber) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use PatternFlowGtpv1SquenceNumber.ProtoReflect.Descriptor instead. -func (*PatternFlowGtpv1SquenceNumber) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{608} +// Deprecated: Use PatternFlowTcpAckNum.ProtoReflect.Descriptor instead. +func (*PatternFlowTcpAckNum) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{569} } -func (x *PatternFlowGtpv1SquenceNumber) GetChoice() PatternFlowGtpv1SquenceNumber_Choice_Enum { +func (x *PatternFlowTcpAckNum) GetChoice() PatternFlowTcpAckNum_Choice_Enum { if x != nil && x.Choice != nil { return *x.Choice } - return PatternFlowGtpv1SquenceNumber_Choice_unspecified + return PatternFlowTcpAckNum_Choice_unspecified } -func (x *PatternFlowGtpv1SquenceNumber) GetValue() uint32 { +func (x *PatternFlowTcpAckNum) GetValue() uint32 { if x != nil && x.Value != nil { return *x.Value } return 0 } -func (x *PatternFlowGtpv1SquenceNumber) GetValues() []uint32 { +func (x *PatternFlowTcpAckNum) GetValues() []uint32 { if x != nil { return x.Values } return nil } -func (x *PatternFlowGtpv1SquenceNumber) GetIncrement() *PatternFlowGtpv1SquenceNumberCounter { +func (x *PatternFlowTcpAckNum) GetIncrement() *PatternFlowTcpAckNumCounter { if x != nil { return x.Increment } return nil } -func (x *PatternFlowGtpv1SquenceNumber) GetDecrement() *PatternFlowGtpv1SquenceNumberCounter { +func (x *PatternFlowTcpAckNum) GetDecrement() *PatternFlowTcpAckNumCounter { if x != nil { return x.Decrement } return nil } -func (x *PatternFlowGtpv1SquenceNumber) GetMetricTags() []*PatternFlowGtpv1SquenceNumberMetricTag { +func (x *PatternFlowTcpAckNum) GetMetricTags() []*PatternFlowTcpAckNumMetricTag { if x != nil { return x.MetricTags } @@ -69271,7 +68316,7 @@ func (x *PatternFlowGtpv1SquenceNumber) GetMetricTags() []*PatternFlowGtpv1Squen } // integer counter pattern -type PatternFlowGtpv1NPduNumberCounter struct { +type PatternFlowTcpDataOffsetCounter struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields @@ -69287,23 +68332,23 @@ type PatternFlowGtpv1NPduNumberCounter struct { Count *uint32 `protobuf:"varint,3,opt,name=count,proto3,oneof" json:"count,omitempty"` } -func (x *PatternFlowGtpv1NPduNumberCounter) Reset() { - *x = PatternFlowGtpv1NPduNumberCounter{} +func (x *PatternFlowTcpDataOffsetCounter) Reset() { + *x = PatternFlowTcpDataOffsetCounter{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[609] + mi := &file_otg_proto_msgTypes[570] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowGtpv1NPduNumberCounter) String() string { +func (x *PatternFlowTcpDataOffsetCounter) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowGtpv1NPduNumberCounter) ProtoMessage() {} +func (*PatternFlowTcpDataOffsetCounter) ProtoMessage() {} -func (x *PatternFlowGtpv1NPduNumberCounter) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[609] +func (x *PatternFlowTcpDataOffsetCounter) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[570] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -69314,26 +68359,26 @@ func (x *PatternFlowGtpv1NPduNumberCounter) ProtoReflect() protoreflect.Message return mi.MessageOf(x) } -// Deprecated: Use PatternFlowGtpv1NPduNumberCounter.ProtoReflect.Descriptor instead. -func (*PatternFlowGtpv1NPduNumberCounter) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{609} +// Deprecated: Use PatternFlowTcpDataOffsetCounter.ProtoReflect.Descriptor instead. +func (*PatternFlowTcpDataOffsetCounter) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{570} } -func (x *PatternFlowGtpv1NPduNumberCounter) GetStart() uint32 { +func (x *PatternFlowTcpDataOffsetCounter) GetStart() uint32 { if x != nil && x.Start != nil { return *x.Start } return 0 } -func (x *PatternFlowGtpv1NPduNumberCounter) GetStep() uint32 { +func (x *PatternFlowTcpDataOffsetCounter) GetStep() uint32 { if x != nil && x.Step != nil { return *x.Step } return 0 } -func (x *PatternFlowGtpv1NPduNumberCounter) GetCount() uint32 { +func (x *PatternFlowTcpDataOffsetCounter) GetCount() uint32 { if x != nil && x.Count != nil { return *x.Count } @@ -69343,7 +68388,7 @@ func (x *PatternFlowGtpv1NPduNumberCounter) GetCount() uint32 { // Metric tag can be used to enable tracking portion of or all bits in a corresponding // header field for metrics per each applicable value. These would appear as tagged // metrics in corresponding flow metrics. -type PatternFlowGtpv1NPduNumberMetricTag struct { +type PatternFlowTcpDataOffsetMetricTag struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields @@ -69357,27 +68402,27 @@ type PatternFlowGtpv1NPduNumberMetricTag struct { Offset *uint32 `protobuf:"varint,2,opt,name=offset,proto3,oneof" json:"offset,omitempty"` // Number of bits to track for metrics starting from configured offset of corresponding // header field - // default = 8 + // default = 4 Length *uint32 `protobuf:"varint,3,opt,name=length,proto3,oneof" json:"length,omitempty"` } -func (x *PatternFlowGtpv1NPduNumberMetricTag) Reset() { - *x = PatternFlowGtpv1NPduNumberMetricTag{} +func (x *PatternFlowTcpDataOffsetMetricTag) Reset() { + *x = PatternFlowTcpDataOffsetMetricTag{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[610] + mi := &file_otg_proto_msgTypes[571] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowGtpv1NPduNumberMetricTag) String() string { +func (x *PatternFlowTcpDataOffsetMetricTag) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowGtpv1NPduNumberMetricTag) ProtoMessage() {} +func (*PatternFlowTcpDataOffsetMetricTag) ProtoMessage() {} -func (x *PatternFlowGtpv1NPduNumberMetricTag) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[610] +func (x *PatternFlowTcpDataOffsetMetricTag) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[571] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -69388,42 +68433,41 @@ func (x *PatternFlowGtpv1NPduNumberMetricTag) ProtoReflect() protoreflect.Messag return mi.MessageOf(x) } -// Deprecated: Use PatternFlowGtpv1NPduNumberMetricTag.ProtoReflect.Descriptor instead. -func (*PatternFlowGtpv1NPduNumberMetricTag) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{610} +// Deprecated: Use PatternFlowTcpDataOffsetMetricTag.ProtoReflect.Descriptor instead. +func (*PatternFlowTcpDataOffsetMetricTag) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{571} } -func (x *PatternFlowGtpv1NPduNumberMetricTag) GetName() string { +func (x *PatternFlowTcpDataOffsetMetricTag) GetName() string { if x != nil && x.Name != nil { return *x.Name } return "" } -func (x *PatternFlowGtpv1NPduNumberMetricTag) GetOffset() uint32 { +func (x *PatternFlowTcpDataOffsetMetricTag) GetOffset() uint32 { if x != nil && x.Offset != nil { return *x.Offset } return 0 } -func (x *PatternFlowGtpv1NPduNumberMetricTag) GetLength() uint32 { +func (x *PatternFlowTcpDataOffsetMetricTag) GetLength() uint32 { if x != nil && x.Length != nil { return *x.Length } return 0 } -// N-PDU number. Exists if any of the e_flag, s_flag, or pn_flag bits are on. Must -// be interpreted only if the pn_flag bit is on. -type PatternFlowGtpv1NPduNumber struct { +// The number of 32 bit words in the TCP header. This indicates where the data begins. +type PatternFlowTcpDataOffset struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // Description missing in models // default = Choice.Enum.value - Choice *PatternFlowGtpv1NPduNumber_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.PatternFlowGtpv1NPduNumber_Choice_Enum,oneof" json:"choice,omitempty"` + Choice *PatternFlowTcpDataOffset_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.PatternFlowTcpDataOffset_Choice_Enum,oneof" json:"choice,omitempty"` // Description missing in models // default = 0 Value *uint32 `protobuf:"varint,2,opt,name=value,proto3,oneof" json:"value,omitempty"` @@ -69431,32 +68475,32 @@ type PatternFlowGtpv1NPduNumber struct { // default = [0] Values []uint32 `protobuf:"varint,3,rep,packed,name=values,proto3" json:"values,omitempty"` // Description missing in models - Increment *PatternFlowGtpv1NPduNumberCounter `protobuf:"bytes,5,opt,name=increment,proto3" json:"increment,omitempty"` + Increment *PatternFlowTcpDataOffsetCounter `protobuf:"bytes,5,opt,name=increment,proto3" json:"increment,omitempty"` // Description missing in models - Decrement *PatternFlowGtpv1NPduNumberCounter `protobuf:"bytes,6,opt,name=decrement,proto3" json:"decrement,omitempty"` + Decrement *PatternFlowTcpDataOffsetCounter `protobuf:"bytes,6,opt,name=decrement,proto3" json:"decrement,omitempty"` // One or more metric tags can be used to enable tracking portion of or all bits in // a corresponding header field for metrics per each applicable value. These would appear // as tagged metrics in corresponding flow metrics. - MetricTags []*PatternFlowGtpv1NPduNumberMetricTag `protobuf:"bytes,7,rep,name=metric_tags,json=metricTags,proto3" json:"metric_tags,omitempty"` + MetricTags []*PatternFlowTcpDataOffsetMetricTag `protobuf:"bytes,7,rep,name=metric_tags,json=metricTags,proto3" json:"metric_tags,omitempty"` } -func (x *PatternFlowGtpv1NPduNumber) Reset() { - *x = PatternFlowGtpv1NPduNumber{} +func (x *PatternFlowTcpDataOffset) Reset() { + *x = PatternFlowTcpDataOffset{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[611] + mi := &file_otg_proto_msgTypes[572] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowGtpv1NPduNumber) String() string { +func (x *PatternFlowTcpDataOffset) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowGtpv1NPduNumber) ProtoMessage() {} +func (*PatternFlowTcpDataOffset) ProtoMessage() {} -func (x *PatternFlowGtpv1NPduNumber) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[611] +func (x *PatternFlowTcpDataOffset) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[572] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -69467,47 +68511,47 @@ func (x *PatternFlowGtpv1NPduNumber) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use PatternFlowGtpv1NPduNumber.ProtoReflect.Descriptor instead. -func (*PatternFlowGtpv1NPduNumber) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{611} +// Deprecated: Use PatternFlowTcpDataOffset.ProtoReflect.Descriptor instead. +func (*PatternFlowTcpDataOffset) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{572} } -func (x *PatternFlowGtpv1NPduNumber) GetChoice() PatternFlowGtpv1NPduNumber_Choice_Enum { +func (x *PatternFlowTcpDataOffset) GetChoice() PatternFlowTcpDataOffset_Choice_Enum { if x != nil && x.Choice != nil { return *x.Choice } - return PatternFlowGtpv1NPduNumber_Choice_unspecified + return PatternFlowTcpDataOffset_Choice_unspecified } -func (x *PatternFlowGtpv1NPduNumber) GetValue() uint32 { +func (x *PatternFlowTcpDataOffset) GetValue() uint32 { if x != nil && x.Value != nil { return *x.Value } return 0 } -func (x *PatternFlowGtpv1NPduNumber) GetValues() []uint32 { +func (x *PatternFlowTcpDataOffset) GetValues() []uint32 { if x != nil { return x.Values } return nil } -func (x *PatternFlowGtpv1NPduNumber) GetIncrement() *PatternFlowGtpv1NPduNumberCounter { +func (x *PatternFlowTcpDataOffset) GetIncrement() *PatternFlowTcpDataOffsetCounter { if x != nil { return x.Increment } return nil } -func (x *PatternFlowGtpv1NPduNumber) GetDecrement() *PatternFlowGtpv1NPduNumberCounter { +func (x *PatternFlowTcpDataOffset) GetDecrement() *PatternFlowTcpDataOffsetCounter { if x != nil { return x.Decrement } return nil } -func (x *PatternFlowGtpv1NPduNumber) GetMetricTags() []*PatternFlowGtpv1NPduNumberMetricTag { +func (x *PatternFlowTcpDataOffset) GetMetricTags() []*PatternFlowTcpDataOffsetMetricTag { if x != nil { return x.MetricTags } @@ -69515,7 +68559,7 @@ func (x *PatternFlowGtpv1NPduNumber) GetMetricTags() []*PatternFlowGtpv1NPduNumb } // integer counter pattern -type PatternFlowGtpv1NextExtensionHeaderTypeCounter struct { +type PatternFlowTcpEcnNsCounter struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields @@ -69531,23 +68575,23 @@ type PatternFlowGtpv1NextExtensionHeaderTypeCounter struct { Count *uint32 `protobuf:"varint,3,opt,name=count,proto3,oneof" json:"count,omitempty"` } -func (x *PatternFlowGtpv1NextExtensionHeaderTypeCounter) Reset() { - *x = PatternFlowGtpv1NextExtensionHeaderTypeCounter{} +func (x *PatternFlowTcpEcnNsCounter) Reset() { + *x = PatternFlowTcpEcnNsCounter{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[612] + mi := &file_otg_proto_msgTypes[573] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowGtpv1NextExtensionHeaderTypeCounter) String() string { +func (x *PatternFlowTcpEcnNsCounter) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowGtpv1NextExtensionHeaderTypeCounter) ProtoMessage() {} +func (*PatternFlowTcpEcnNsCounter) ProtoMessage() {} -func (x *PatternFlowGtpv1NextExtensionHeaderTypeCounter) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[612] +func (x *PatternFlowTcpEcnNsCounter) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[573] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -69558,26 +68602,26 @@ func (x *PatternFlowGtpv1NextExtensionHeaderTypeCounter) ProtoReflect() protoref return mi.MessageOf(x) } -// Deprecated: Use PatternFlowGtpv1NextExtensionHeaderTypeCounter.ProtoReflect.Descriptor instead. -func (*PatternFlowGtpv1NextExtensionHeaderTypeCounter) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{612} +// Deprecated: Use PatternFlowTcpEcnNsCounter.ProtoReflect.Descriptor instead. +func (*PatternFlowTcpEcnNsCounter) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{573} } -func (x *PatternFlowGtpv1NextExtensionHeaderTypeCounter) GetStart() uint32 { +func (x *PatternFlowTcpEcnNsCounter) GetStart() uint32 { if x != nil && x.Start != nil { return *x.Start } return 0 } -func (x *PatternFlowGtpv1NextExtensionHeaderTypeCounter) GetStep() uint32 { +func (x *PatternFlowTcpEcnNsCounter) GetStep() uint32 { if x != nil && x.Step != nil { return *x.Step } return 0 } -func (x *PatternFlowGtpv1NextExtensionHeaderTypeCounter) GetCount() uint32 { +func (x *PatternFlowTcpEcnNsCounter) GetCount() uint32 { if x != nil && x.Count != nil { return *x.Count } @@ -69587,7 +68631,7 @@ func (x *PatternFlowGtpv1NextExtensionHeaderTypeCounter) GetCount() uint32 { // Metric tag can be used to enable tracking portion of or all bits in a corresponding // header field for metrics per each applicable value. These would appear as tagged // metrics in corresponding flow metrics. -type PatternFlowGtpv1NextExtensionHeaderTypeMetricTag struct { +type PatternFlowTcpEcnNsMetricTag struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields @@ -69601,27 +68645,27 @@ type PatternFlowGtpv1NextExtensionHeaderTypeMetricTag struct { Offset *uint32 `protobuf:"varint,2,opt,name=offset,proto3,oneof" json:"offset,omitempty"` // Number of bits to track for metrics starting from configured offset of corresponding // header field - // default = 8 + // default = 1 Length *uint32 `protobuf:"varint,3,opt,name=length,proto3,oneof" json:"length,omitempty"` } -func (x *PatternFlowGtpv1NextExtensionHeaderTypeMetricTag) Reset() { - *x = PatternFlowGtpv1NextExtensionHeaderTypeMetricTag{} +func (x *PatternFlowTcpEcnNsMetricTag) Reset() { + *x = PatternFlowTcpEcnNsMetricTag{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[613] + mi := &file_otg_proto_msgTypes[574] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowGtpv1NextExtensionHeaderTypeMetricTag) String() string { +func (x *PatternFlowTcpEcnNsMetricTag) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowGtpv1NextExtensionHeaderTypeMetricTag) ProtoMessage() {} +func (*PatternFlowTcpEcnNsMetricTag) ProtoMessage() {} -func (x *PatternFlowGtpv1NextExtensionHeaderTypeMetricTag) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[613] +func (x *PatternFlowTcpEcnNsMetricTag) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[574] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -69632,42 +68676,41 @@ func (x *PatternFlowGtpv1NextExtensionHeaderTypeMetricTag) ProtoReflect() protor return mi.MessageOf(x) } -// Deprecated: Use PatternFlowGtpv1NextExtensionHeaderTypeMetricTag.ProtoReflect.Descriptor instead. -func (*PatternFlowGtpv1NextExtensionHeaderTypeMetricTag) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{613} +// Deprecated: Use PatternFlowTcpEcnNsMetricTag.ProtoReflect.Descriptor instead. +func (*PatternFlowTcpEcnNsMetricTag) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{574} } -func (x *PatternFlowGtpv1NextExtensionHeaderTypeMetricTag) GetName() string { +func (x *PatternFlowTcpEcnNsMetricTag) GetName() string { if x != nil && x.Name != nil { return *x.Name } return "" } -func (x *PatternFlowGtpv1NextExtensionHeaderTypeMetricTag) GetOffset() uint32 { +func (x *PatternFlowTcpEcnNsMetricTag) GetOffset() uint32 { if x != nil && x.Offset != nil { return *x.Offset } return 0 } -func (x *PatternFlowGtpv1NextExtensionHeaderTypeMetricTag) GetLength() uint32 { +func (x *PatternFlowTcpEcnNsMetricTag) GetLength() uint32 { if x != nil && x.Length != nil { return *x.Length } return 0 } -// Next extension header. Exists if any of the e_flag, s_flag, or pn_flag bits are on. -// Must be interpreted only if the e_flag bit is on. -type PatternFlowGtpv1NextExtensionHeaderType struct { +// Explicit congestion notification, concealment protection. +type PatternFlowTcpEcnNs struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // Description missing in models // default = Choice.Enum.value - Choice *PatternFlowGtpv1NextExtensionHeaderType_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.PatternFlowGtpv1NextExtensionHeaderType_Choice_Enum,oneof" json:"choice,omitempty"` + Choice *PatternFlowTcpEcnNs_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.PatternFlowTcpEcnNs_Choice_Enum,oneof" json:"choice,omitempty"` // Description missing in models // default = 0 Value *uint32 `protobuf:"varint,2,opt,name=value,proto3,oneof" json:"value,omitempty"` @@ -69675,32 +68718,32 @@ type PatternFlowGtpv1NextExtensionHeaderType struct { // default = [0] Values []uint32 `protobuf:"varint,3,rep,packed,name=values,proto3" json:"values,omitempty"` // Description missing in models - Increment *PatternFlowGtpv1NextExtensionHeaderTypeCounter `protobuf:"bytes,5,opt,name=increment,proto3" json:"increment,omitempty"` + Increment *PatternFlowTcpEcnNsCounter `protobuf:"bytes,5,opt,name=increment,proto3" json:"increment,omitempty"` // Description missing in models - Decrement *PatternFlowGtpv1NextExtensionHeaderTypeCounter `protobuf:"bytes,6,opt,name=decrement,proto3" json:"decrement,omitempty"` + Decrement *PatternFlowTcpEcnNsCounter `protobuf:"bytes,6,opt,name=decrement,proto3" json:"decrement,omitempty"` // One or more metric tags can be used to enable tracking portion of or all bits in // a corresponding header field for metrics per each applicable value. These would appear // as tagged metrics in corresponding flow metrics. - MetricTags []*PatternFlowGtpv1NextExtensionHeaderTypeMetricTag `protobuf:"bytes,7,rep,name=metric_tags,json=metricTags,proto3" json:"metric_tags,omitempty"` + MetricTags []*PatternFlowTcpEcnNsMetricTag `protobuf:"bytes,7,rep,name=metric_tags,json=metricTags,proto3" json:"metric_tags,omitempty"` } -func (x *PatternFlowGtpv1NextExtensionHeaderType) Reset() { - *x = PatternFlowGtpv1NextExtensionHeaderType{} +func (x *PatternFlowTcpEcnNs) Reset() { + *x = PatternFlowTcpEcnNs{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[614] + mi := &file_otg_proto_msgTypes[575] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowGtpv1NextExtensionHeaderType) String() string { +func (x *PatternFlowTcpEcnNs) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowGtpv1NextExtensionHeaderType) ProtoMessage() {} +func (*PatternFlowTcpEcnNs) ProtoMessage() {} -func (x *PatternFlowGtpv1NextExtensionHeaderType) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[614] +func (x *PatternFlowTcpEcnNs) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[575] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -69711,47 +68754,47 @@ func (x *PatternFlowGtpv1NextExtensionHeaderType) ProtoReflect() protoreflect.Me return mi.MessageOf(x) } -// Deprecated: Use PatternFlowGtpv1NextExtensionHeaderType.ProtoReflect.Descriptor instead. -func (*PatternFlowGtpv1NextExtensionHeaderType) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{614} +// Deprecated: Use PatternFlowTcpEcnNs.ProtoReflect.Descriptor instead. +func (*PatternFlowTcpEcnNs) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{575} } -func (x *PatternFlowGtpv1NextExtensionHeaderType) GetChoice() PatternFlowGtpv1NextExtensionHeaderType_Choice_Enum { +func (x *PatternFlowTcpEcnNs) GetChoice() PatternFlowTcpEcnNs_Choice_Enum { if x != nil && x.Choice != nil { return *x.Choice } - return PatternFlowGtpv1NextExtensionHeaderType_Choice_unspecified + return PatternFlowTcpEcnNs_Choice_unspecified } -func (x *PatternFlowGtpv1NextExtensionHeaderType) GetValue() uint32 { +func (x *PatternFlowTcpEcnNs) GetValue() uint32 { if x != nil && x.Value != nil { return *x.Value } return 0 } -func (x *PatternFlowGtpv1NextExtensionHeaderType) GetValues() []uint32 { +func (x *PatternFlowTcpEcnNs) GetValues() []uint32 { if x != nil { return x.Values } return nil } -func (x *PatternFlowGtpv1NextExtensionHeaderType) GetIncrement() *PatternFlowGtpv1NextExtensionHeaderTypeCounter { +func (x *PatternFlowTcpEcnNs) GetIncrement() *PatternFlowTcpEcnNsCounter { if x != nil { return x.Increment } return nil } -func (x *PatternFlowGtpv1NextExtensionHeaderType) GetDecrement() *PatternFlowGtpv1NextExtensionHeaderTypeCounter { +func (x *PatternFlowTcpEcnNs) GetDecrement() *PatternFlowTcpEcnNsCounter { if x != nil { return x.Decrement } return nil } -func (x *PatternFlowGtpv1NextExtensionHeaderType) GetMetricTags() []*PatternFlowGtpv1NextExtensionHeaderTypeMetricTag { +func (x *PatternFlowTcpEcnNs) GetMetricTags() []*PatternFlowTcpEcnNsMetricTag { if x != nil { return x.MetricTags } @@ -69759,7 +68802,7 @@ func (x *PatternFlowGtpv1NextExtensionHeaderType) GetMetricTags() []*PatternFlow } // integer counter pattern -type PatternFlowGtpExtensionExtensionLengthCounter struct { +type PatternFlowTcpEcnCwrCounter struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields @@ -69775,23 +68818,23 @@ type PatternFlowGtpExtensionExtensionLengthCounter struct { Count *uint32 `protobuf:"varint,3,opt,name=count,proto3,oneof" json:"count,omitempty"` } -func (x *PatternFlowGtpExtensionExtensionLengthCounter) Reset() { - *x = PatternFlowGtpExtensionExtensionLengthCounter{} +func (x *PatternFlowTcpEcnCwrCounter) Reset() { + *x = PatternFlowTcpEcnCwrCounter{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[615] + mi := &file_otg_proto_msgTypes[576] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowGtpExtensionExtensionLengthCounter) String() string { +func (x *PatternFlowTcpEcnCwrCounter) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowGtpExtensionExtensionLengthCounter) ProtoMessage() {} +func (*PatternFlowTcpEcnCwrCounter) ProtoMessage() {} -func (x *PatternFlowGtpExtensionExtensionLengthCounter) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[615] +func (x *PatternFlowTcpEcnCwrCounter) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[576] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -69802,26 +68845,26 @@ func (x *PatternFlowGtpExtensionExtensionLengthCounter) ProtoReflect() protorefl return mi.MessageOf(x) } -// Deprecated: Use PatternFlowGtpExtensionExtensionLengthCounter.ProtoReflect.Descriptor instead. -func (*PatternFlowGtpExtensionExtensionLengthCounter) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{615} +// Deprecated: Use PatternFlowTcpEcnCwrCounter.ProtoReflect.Descriptor instead. +func (*PatternFlowTcpEcnCwrCounter) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{576} } -func (x *PatternFlowGtpExtensionExtensionLengthCounter) GetStart() uint32 { +func (x *PatternFlowTcpEcnCwrCounter) GetStart() uint32 { if x != nil && x.Start != nil { return *x.Start } return 0 } -func (x *PatternFlowGtpExtensionExtensionLengthCounter) GetStep() uint32 { +func (x *PatternFlowTcpEcnCwrCounter) GetStep() uint32 { if x != nil && x.Step != nil { return *x.Step } return 0 } -func (x *PatternFlowGtpExtensionExtensionLengthCounter) GetCount() uint32 { +func (x *PatternFlowTcpEcnCwrCounter) GetCount() uint32 { if x != nil && x.Count != nil { return *x.Count } @@ -69831,7 +68874,7 @@ func (x *PatternFlowGtpExtensionExtensionLengthCounter) GetCount() uint32 { // Metric tag can be used to enable tracking portion of or all bits in a corresponding // header field for metrics per each applicable value. These would appear as tagged // metrics in corresponding flow metrics. -type PatternFlowGtpExtensionExtensionLengthMetricTag struct { +type PatternFlowTcpEcnCwrMetricTag struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields @@ -69845,27 +68888,27 @@ type PatternFlowGtpExtensionExtensionLengthMetricTag struct { Offset *uint32 `protobuf:"varint,2,opt,name=offset,proto3,oneof" json:"offset,omitempty"` // Number of bits to track for metrics starting from configured offset of corresponding // header field - // default = 8 + // default = 1 Length *uint32 `protobuf:"varint,3,opt,name=length,proto3,oneof" json:"length,omitempty"` } -func (x *PatternFlowGtpExtensionExtensionLengthMetricTag) Reset() { - *x = PatternFlowGtpExtensionExtensionLengthMetricTag{} +func (x *PatternFlowTcpEcnCwrMetricTag) Reset() { + *x = PatternFlowTcpEcnCwrMetricTag{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[616] + mi := &file_otg_proto_msgTypes[577] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowGtpExtensionExtensionLengthMetricTag) String() string { +func (x *PatternFlowTcpEcnCwrMetricTag) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowGtpExtensionExtensionLengthMetricTag) ProtoMessage() {} +func (*PatternFlowTcpEcnCwrMetricTag) ProtoMessage() {} -func (x *PatternFlowGtpExtensionExtensionLengthMetricTag) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[616] +func (x *PatternFlowTcpEcnCwrMetricTag) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[577] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -69876,43 +68919,41 @@ func (x *PatternFlowGtpExtensionExtensionLengthMetricTag) ProtoReflect() protore return mi.MessageOf(x) } -// Deprecated: Use PatternFlowGtpExtensionExtensionLengthMetricTag.ProtoReflect.Descriptor instead. -func (*PatternFlowGtpExtensionExtensionLengthMetricTag) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{616} +// Deprecated: Use PatternFlowTcpEcnCwrMetricTag.ProtoReflect.Descriptor instead. +func (*PatternFlowTcpEcnCwrMetricTag) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{577} } -func (x *PatternFlowGtpExtensionExtensionLengthMetricTag) GetName() string { +func (x *PatternFlowTcpEcnCwrMetricTag) GetName() string { if x != nil && x.Name != nil { return *x.Name } return "" } -func (x *PatternFlowGtpExtensionExtensionLengthMetricTag) GetOffset() uint32 { +func (x *PatternFlowTcpEcnCwrMetricTag) GetOffset() uint32 { if x != nil && x.Offset != nil { return *x.Offset } return 0 } -func (x *PatternFlowGtpExtensionExtensionLengthMetricTag) GetLength() uint32 { +func (x *PatternFlowTcpEcnCwrMetricTag) GetLength() uint32 { if x != nil && x.Length != nil { return *x.Length } return 0 } -// This field states the length of this extension header, including the length, the -// contents, and the next extension header field, in 4-octet units, so the length of -// the extension must always be a multiple of 4. -type PatternFlowGtpExtensionExtensionLength struct { +// Explicit congestion notification, congestion window reduced. +type PatternFlowTcpEcnCwr struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // Description missing in models // default = Choice.Enum.value - Choice *PatternFlowGtpExtensionExtensionLength_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.PatternFlowGtpExtensionExtensionLength_Choice_Enum,oneof" json:"choice,omitempty"` + Choice *PatternFlowTcpEcnCwr_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.PatternFlowTcpEcnCwr_Choice_Enum,oneof" json:"choice,omitempty"` // Description missing in models // default = 0 Value *uint32 `protobuf:"varint,2,opt,name=value,proto3,oneof" json:"value,omitempty"` @@ -69920,32 +68961,32 @@ type PatternFlowGtpExtensionExtensionLength struct { // default = [0] Values []uint32 `protobuf:"varint,3,rep,packed,name=values,proto3" json:"values,omitempty"` // Description missing in models - Increment *PatternFlowGtpExtensionExtensionLengthCounter `protobuf:"bytes,5,opt,name=increment,proto3" json:"increment,omitempty"` + Increment *PatternFlowTcpEcnCwrCounter `protobuf:"bytes,5,opt,name=increment,proto3" json:"increment,omitempty"` // Description missing in models - Decrement *PatternFlowGtpExtensionExtensionLengthCounter `protobuf:"bytes,6,opt,name=decrement,proto3" json:"decrement,omitempty"` + Decrement *PatternFlowTcpEcnCwrCounter `protobuf:"bytes,6,opt,name=decrement,proto3" json:"decrement,omitempty"` // One or more metric tags can be used to enable tracking portion of or all bits in // a corresponding header field for metrics per each applicable value. These would appear // as tagged metrics in corresponding flow metrics. - MetricTags []*PatternFlowGtpExtensionExtensionLengthMetricTag `protobuf:"bytes,7,rep,name=metric_tags,json=metricTags,proto3" json:"metric_tags,omitempty"` + MetricTags []*PatternFlowTcpEcnCwrMetricTag `protobuf:"bytes,7,rep,name=metric_tags,json=metricTags,proto3" json:"metric_tags,omitempty"` } -func (x *PatternFlowGtpExtensionExtensionLength) Reset() { - *x = PatternFlowGtpExtensionExtensionLength{} +func (x *PatternFlowTcpEcnCwr) Reset() { + *x = PatternFlowTcpEcnCwr{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[617] + mi := &file_otg_proto_msgTypes[578] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowGtpExtensionExtensionLength) String() string { +func (x *PatternFlowTcpEcnCwr) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowGtpExtensionExtensionLength) ProtoMessage() {} +func (*PatternFlowTcpEcnCwr) ProtoMessage() {} -func (x *PatternFlowGtpExtensionExtensionLength) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[617] +func (x *PatternFlowTcpEcnCwr) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[578] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -69956,47 +68997,47 @@ func (x *PatternFlowGtpExtensionExtensionLength) ProtoReflect() protoreflect.Mes return mi.MessageOf(x) } -// Deprecated: Use PatternFlowGtpExtensionExtensionLength.ProtoReflect.Descriptor instead. -func (*PatternFlowGtpExtensionExtensionLength) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{617} +// Deprecated: Use PatternFlowTcpEcnCwr.ProtoReflect.Descriptor instead. +func (*PatternFlowTcpEcnCwr) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{578} } -func (x *PatternFlowGtpExtensionExtensionLength) GetChoice() PatternFlowGtpExtensionExtensionLength_Choice_Enum { +func (x *PatternFlowTcpEcnCwr) GetChoice() PatternFlowTcpEcnCwr_Choice_Enum { if x != nil && x.Choice != nil { return *x.Choice } - return PatternFlowGtpExtensionExtensionLength_Choice_unspecified + return PatternFlowTcpEcnCwr_Choice_unspecified } -func (x *PatternFlowGtpExtensionExtensionLength) GetValue() uint32 { +func (x *PatternFlowTcpEcnCwr) GetValue() uint32 { if x != nil && x.Value != nil { return *x.Value } return 0 } -func (x *PatternFlowGtpExtensionExtensionLength) GetValues() []uint32 { +func (x *PatternFlowTcpEcnCwr) GetValues() []uint32 { if x != nil { return x.Values } return nil } -func (x *PatternFlowGtpExtensionExtensionLength) GetIncrement() *PatternFlowGtpExtensionExtensionLengthCounter { +func (x *PatternFlowTcpEcnCwr) GetIncrement() *PatternFlowTcpEcnCwrCounter { if x != nil { return x.Increment } return nil } -func (x *PatternFlowGtpExtensionExtensionLength) GetDecrement() *PatternFlowGtpExtensionExtensionLengthCounter { +func (x *PatternFlowTcpEcnCwr) GetDecrement() *PatternFlowTcpEcnCwrCounter { if x != nil { return x.Decrement } return nil } -func (x *PatternFlowGtpExtensionExtensionLength) GetMetricTags() []*PatternFlowGtpExtensionExtensionLengthMetricTag { +func (x *PatternFlowTcpEcnCwr) GetMetricTags() []*PatternFlowTcpEcnCwrMetricTag { if x != nil { return x.MetricTags } @@ -70004,39 +69045,39 @@ func (x *PatternFlowGtpExtensionExtensionLength) GetMetricTags() []*PatternFlowG } // integer counter pattern -type PatternFlowGtpExtensionContentsCounter struct { +type PatternFlowTcpEcnEchoCounter struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // Description missing in models // default = 0 - Start *uint64 `protobuf:"varint,1,opt,name=start,proto3,oneof" json:"start,omitempty"` + Start *uint32 `protobuf:"varint,1,opt,name=start,proto3,oneof" json:"start,omitempty"` // Description missing in models // default = 1 - Step *uint64 `protobuf:"varint,2,opt,name=step,proto3,oneof" json:"step,omitempty"` + Step *uint32 `protobuf:"varint,2,opt,name=step,proto3,oneof" json:"step,omitempty"` // Description missing in models // default = 1 - Count *uint64 `protobuf:"varint,3,opt,name=count,proto3,oneof" json:"count,omitempty"` + Count *uint32 `protobuf:"varint,3,opt,name=count,proto3,oneof" json:"count,omitempty"` } -func (x *PatternFlowGtpExtensionContentsCounter) Reset() { - *x = PatternFlowGtpExtensionContentsCounter{} +func (x *PatternFlowTcpEcnEchoCounter) Reset() { + *x = PatternFlowTcpEcnEchoCounter{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[618] + mi := &file_otg_proto_msgTypes[579] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowGtpExtensionContentsCounter) String() string { +func (x *PatternFlowTcpEcnEchoCounter) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowGtpExtensionContentsCounter) ProtoMessage() {} +func (*PatternFlowTcpEcnEchoCounter) ProtoMessage() {} -func (x *PatternFlowGtpExtensionContentsCounter) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[618] +func (x *PatternFlowTcpEcnEchoCounter) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[579] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -70047,26 +69088,26 @@ func (x *PatternFlowGtpExtensionContentsCounter) ProtoReflect() protoreflect.Mes return mi.MessageOf(x) } -// Deprecated: Use PatternFlowGtpExtensionContentsCounter.ProtoReflect.Descriptor instead. -func (*PatternFlowGtpExtensionContentsCounter) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{618} +// Deprecated: Use PatternFlowTcpEcnEchoCounter.ProtoReflect.Descriptor instead. +func (*PatternFlowTcpEcnEchoCounter) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{579} } -func (x *PatternFlowGtpExtensionContentsCounter) GetStart() uint64 { +func (x *PatternFlowTcpEcnEchoCounter) GetStart() uint32 { if x != nil && x.Start != nil { return *x.Start } return 0 } -func (x *PatternFlowGtpExtensionContentsCounter) GetStep() uint64 { +func (x *PatternFlowTcpEcnEchoCounter) GetStep() uint32 { if x != nil && x.Step != nil { return *x.Step } return 0 } -func (x *PatternFlowGtpExtensionContentsCounter) GetCount() uint64 { +func (x *PatternFlowTcpEcnEchoCounter) GetCount() uint32 { if x != nil && x.Count != nil { return *x.Count } @@ -70076,7 +69117,7 @@ func (x *PatternFlowGtpExtensionContentsCounter) GetCount() uint64 { // Metric tag can be used to enable tracking portion of or all bits in a corresponding // header field for metrics per each applicable value. These would appear as tagged // metrics in corresponding flow metrics. -type PatternFlowGtpExtensionContentsMetricTag struct { +type PatternFlowTcpEcnEchoMetricTag struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields @@ -70087,30 +69128,30 @@ type PatternFlowGtpExtensionContentsMetricTag struct { Name *string `protobuf:"bytes,1,opt,name=name,proto3,oneof" json:"name,omitempty"` // Offset in bits relative to start of corresponding header field // default = 0 - Offset *uint64 `protobuf:"varint,2,opt,name=offset,proto3,oneof" json:"offset,omitempty"` + Offset *uint32 `protobuf:"varint,2,opt,name=offset,proto3,oneof" json:"offset,omitempty"` // Number of bits to track for metrics starting from configured offset of corresponding // header field - // default = 48 - Length *uint64 `protobuf:"varint,3,opt,name=length,proto3,oneof" json:"length,omitempty"` + // default = 1 + Length *uint32 `protobuf:"varint,3,opt,name=length,proto3,oneof" json:"length,omitempty"` } -func (x *PatternFlowGtpExtensionContentsMetricTag) Reset() { - *x = PatternFlowGtpExtensionContentsMetricTag{} +func (x *PatternFlowTcpEcnEchoMetricTag) Reset() { + *x = PatternFlowTcpEcnEchoMetricTag{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[619] + mi := &file_otg_proto_msgTypes[580] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowGtpExtensionContentsMetricTag) String() string { +func (x *PatternFlowTcpEcnEchoMetricTag) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowGtpExtensionContentsMetricTag) ProtoMessage() {} +func (*PatternFlowTcpEcnEchoMetricTag) ProtoMessage() {} -func (x *PatternFlowGtpExtensionContentsMetricTag) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[619] +func (x *PatternFlowTcpEcnEchoMetricTag) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[580] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -70121,74 +69162,75 @@ func (x *PatternFlowGtpExtensionContentsMetricTag) ProtoReflect() protoreflect.M return mi.MessageOf(x) } -// Deprecated: Use PatternFlowGtpExtensionContentsMetricTag.ProtoReflect.Descriptor instead. -func (*PatternFlowGtpExtensionContentsMetricTag) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{619} +// Deprecated: Use PatternFlowTcpEcnEchoMetricTag.ProtoReflect.Descriptor instead. +func (*PatternFlowTcpEcnEchoMetricTag) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{580} } -func (x *PatternFlowGtpExtensionContentsMetricTag) GetName() string { +func (x *PatternFlowTcpEcnEchoMetricTag) GetName() string { if x != nil && x.Name != nil { return *x.Name } return "" } -func (x *PatternFlowGtpExtensionContentsMetricTag) GetOffset() uint64 { +func (x *PatternFlowTcpEcnEchoMetricTag) GetOffset() uint32 { if x != nil && x.Offset != nil { return *x.Offset } return 0 } -func (x *PatternFlowGtpExtensionContentsMetricTag) GetLength() uint64 { +func (x *PatternFlowTcpEcnEchoMetricTag) GetLength() uint32 { if x != nil && x.Length != nil { return *x.Length } return 0 } -// The extension header contents -type PatternFlowGtpExtensionContents struct { +// Explicit congestion notification, echo. 1 indicates the peer is ecn capable. 0 indicates +// that a packet with ipv4.ecn = 11 in the ip header was received during normal transmission. +type PatternFlowTcpEcnEcho struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // Description missing in models // default = Choice.Enum.value - Choice *PatternFlowGtpExtensionContents_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.PatternFlowGtpExtensionContents_Choice_Enum,oneof" json:"choice,omitempty"` + Choice *PatternFlowTcpEcnEcho_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.PatternFlowTcpEcnEcho_Choice_Enum,oneof" json:"choice,omitempty"` // Description missing in models // default = 0 - Value *uint64 `protobuf:"varint,2,opt,name=value,proto3,oneof" json:"value,omitempty"` + Value *uint32 `protobuf:"varint,2,opt,name=value,proto3,oneof" json:"value,omitempty"` // Description missing in models // default = [0] - Values []uint64 `protobuf:"varint,3,rep,packed,name=values,proto3" json:"values,omitempty"` + Values []uint32 `protobuf:"varint,3,rep,packed,name=values,proto3" json:"values,omitempty"` // Description missing in models - Increment *PatternFlowGtpExtensionContentsCounter `protobuf:"bytes,5,opt,name=increment,proto3" json:"increment,omitempty"` + Increment *PatternFlowTcpEcnEchoCounter `protobuf:"bytes,5,opt,name=increment,proto3" json:"increment,omitempty"` // Description missing in models - Decrement *PatternFlowGtpExtensionContentsCounter `protobuf:"bytes,6,opt,name=decrement,proto3" json:"decrement,omitempty"` + Decrement *PatternFlowTcpEcnEchoCounter `protobuf:"bytes,6,opt,name=decrement,proto3" json:"decrement,omitempty"` // One or more metric tags can be used to enable tracking portion of or all bits in // a corresponding header field for metrics per each applicable value. These would appear // as tagged metrics in corresponding flow metrics. - MetricTags []*PatternFlowGtpExtensionContentsMetricTag `protobuf:"bytes,7,rep,name=metric_tags,json=metricTags,proto3" json:"metric_tags,omitempty"` + MetricTags []*PatternFlowTcpEcnEchoMetricTag `protobuf:"bytes,7,rep,name=metric_tags,json=metricTags,proto3" json:"metric_tags,omitempty"` } -func (x *PatternFlowGtpExtensionContents) Reset() { - *x = PatternFlowGtpExtensionContents{} +func (x *PatternFlowTcpEcnEcho) Reset() { + *x = PatternFlowTcpEcnEcho{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[620] + mi := &file_otg_proto_msgTypes[581] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowGtpExtensionContents) String() string { +func (x *PatternFlowTcpEcnEcho) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowGtpExtensionContents) ProtoMessage() {} +func (*PatternFlowTcpEcnEcho) ProtoMessage() {} -func (x *PatternFlowGtpExtensionContents) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[620] +func (x *PatternFlowTcpEcnEcho) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[581] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -70199,47 +69241,47 @@ func (x *PatternFlowGtpExtensionContents) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use PatternFlowGtpExtensionContents.ProtoReflect.Descriptor instead. -func (*PatternFlowGtpExtensionContents) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{620} +// Deprecated: Use PatternFlowTcpEcnEcho.ProtoReflect.Descriptor instead. +func (*PatternFlowTcpEcnEcho) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{581} } -func (x *PatternFlowGtpExtensionContents) GetChoice() PatternFlowGtpExtensionContents_Choice_Enum { +func (x *PatternFlowTcpEcnEcho) GetChoice() PatternFlowTcpEcnEcho_Choice_Enum { if x != nil && x.Choice != nil { return *x.Choice } - return PatternFlowGtpExtensionContents_Choice_unspecified + return PatternFlowTcpEcnEcho_Choice_unspecified } -func (x *PatternFlowGtpExtensionContents) GetValue() uint64 { +func (x *PatternFlowTcpEcnEcho) GetValue() uint32 { if x != nil && x.Value != nil { return *x.Value } return 0 } -func (x *PatternFlowGtpExtensionContents) GetValues() []uint64 { +func (x *PatternFlowTcpEcnEcho) GetValues() []uint32 { if x != nil { return x.Values } return nil } -func (x *PatternFlowGtpExtensionContents) GetIncrement() *PatternFlowGtpExtensionContentsCounter { +func (x *PatternFlowTcpEcnEcho) GetIncrement() *PatternFlowTcpEcnEchoCounter { if x != nil { return x.Increment } return nil } -func (x *PatternFlowGtpExtensionContents) GetDecrement() *PatternFlowGtpExtensionContentsCounter { +func (x *PatternFlowTcpEcnEcho) GetDecrement() *PatternFlowTcpEcnEchoCounter { if x != nil { return x.Decrement } return nil } -func (x *PatternFlowGtpExtensionContents) GetMetricTags() []*PatternFlowGtpExtensionContentsMetricTag { +func (x *PatternFlowTcpEcnEcho) GetMetricTags() []*PatternFlowTcpEcnEchoMetricTag { if x != nil { return x.MetricTags } @@ -70247,7 +69289,7 @@ func (x *PatternFlowGtpExtensionContents) GetMetricTags() []*PatternFlowGtpExten } // integer counter pattern -type PatternFlowGtpExtensionNextExtensionHeaderCounter struct { +type PatternFlowTcpCtlUrgCounter struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields @@ -70263,23 +69305,23 @@ type PatternFlowGtpExtensionNextExtensionHeaderCounter struct { Count *uint32 `protobuf:"varint,3,opt,name=count,proto3,oneof" json:"count,omitempty"` } -func (x *PatternFlowGtpExtensionNextExtensionHeaderCounter) Reset() { - *x = PatternFlowGtpExtensionNextExtensionHeaderCounter{} +func (x *PatternFlowTcpCtlUrgCounter) Reset() { + *x = PatternFlowTcpCtlUrgCounter{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[621] + mi := &file_otg_proto_msgTypes[582] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowGtpExtensionNextExtensionHeaderCounter) String() string { +func (x *PatternFlowTcpCtlUrgCounter) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowGtpExtensionNextExtensionHeaderCounter) ProtoMessage() {} +func (*PatternFlowTcpCtlUrgCounter) ProtoMessage() {} -func (x *PatternFlowGtpExtensionNextExtensionHeaderCounter) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[621] +func (x *PatternFlowTcpCtlUrgCounter) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[582] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -70290,26 +69332,26 @@ func (x *PatternFlowGtpExtensionNextExtensionHeaderCounter) ProtoReflect() proto return mi.MessageOf(x) } -// Deprecated: Use PatternFlowGtpExtensionNextExtensionHeaderCounter.ProtoReflect.Descriptor instead. -func (*PatternFlowGtpExtensionNextExtensionHeaderCounter) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{621} +// Deprecated: Use PatternFlowTcpCtlUrgCounter.ProtoReflect.Descriptor instead. +func (*PatternFlowTcpCtlUrgCounter) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{582} } -func (x *PatternFlowGtpExtensionNextExtensionHeaderCounter) GetStart() uint32 { +func (x *PatternFlowTcpCtlUrgCounter) GetStart() uint32 { if x != nil && x.Start != nil { return *x.Start } return 0 } -func (x *PatternFlowGtpExtensionNextExtensionHeaderCounter) GetStep() uint32 { +func (x *PatternFlowTcpCtlUrgCounter) GetStep() uint32 { if x != nil && x.Step != nil { return *x.Step } return 0 } -func (x *PatternFlowGtpExtensionNextExtensionHeaderCounter) GetCount() uint32 { +func (x *PatternFlowTcpCtlUrgCounter) GetCount() uint32 { if x != nil && x.Count != nil { return *x.Count } @@ -70319,7 +69361,7 @@ func (x *PatternFlowGtpExtensionNextExtensionHeaderCounter) GetCount() uint32 { // Metric tag can be used to enable tracking portion of or all bits in a corresponding // header field for metrics per each applicable value. These would appear as tagged // metrics in corresponding flow metrics. -type PatternFlowGtpExtensionNextExtensionHeaderMetricTag struct { +type PatternFlowTcpCtlUrgMetricTag struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields @@ -70333,27 +69375,27 @@ type PatternFlowGtpExtensionNextExtensionHeaderMetricTag struct { Offset *uint32 `protobuf:"varint,2,opt,name=offset,proto3,oneof" json:"offset,omitempty"` // Number of bits to track for metrics starting from configured offset of corresponding // header field - // default = 8 + // default = 1 Length *uint32 `protobuf:"varint,3,opt,name=length,proto3,oneof" json:"length,omitempty"` } -func (x *PatternFlowGtpExtensionNextExtensionHeaderMetricTag) Reset() { - *x = PatternFlowGtpExtensionNextExtensionHeaderMetricTag{} +func (x *PatternFlowTcpCtlUrgMetricTag) Reset() { + *x = PatternFlowTcpCtlUrgMetricTag{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[622] + mi := &file_otg_proto_msgTypes[583] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowGtpExtensionNextExtensionHeaderMetricTag) String() string { +func (x *PatternFlowTcpCtlUrgMetricTag) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowGtpExtensionNextExtensionHeaderMetricTag) ProtoMessage() {} +func (*PatternFlowTcpCtlUrgMetricTag) ProtoMessage() {} -func (x *PatternFlowGtpExtensionNextExtensionHeaderMetricTag) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[622] +func (x *PatternFlowTcpCtlUrgMetricTag) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[583] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -70364,42 +69406,41 @@ func (x *PatternFlowGtpExtensionNextExtensionHeaderMetricTag) ProtoReflect() pro return mi.MessageOf(x) } -// Deprecated: Use PatternFlowGtpExtensionNextExtensionHeaderMetricTag.ProtoReflect.Descriptor instead. -func (*PatternFlowGtpExtensionNextExtensionHeaderMetricTag) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{622} +// Deprecated: Use PatternFlowTcpCtlUrgMetricTag.ProtoReflect.Descriptor instead. +func (*PatternFlowTcpCtlUrgMetricTag) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{583} } -func (x *PatternFlowGtpExtensionNextExtensionHeaderMetricTag) GetName() string { +func (x *PatternFlowTcpCtlUrgMetricTag) GetName() string { if x != nil && x.Name != nil { return *x.Name } return "" } -func (x *PatternFlowGtpExtensionNextExtensionHeaderMetricTag) GetOffset() uint32 { +func (x *PatternFlowTcpCtlUrgMetricTag) GetOffset() uint32 { if x != nil && x.Offset != nil { return *x.Offset } return 0 } -func (x *PatternFlowGtpExtensionNextExtensionHeaderMetricTag) GetLength() uint32 { +func (x *PatternFlowTcpCtlUrgMetricTag) GetLength() uint32 { if x != nil && x.Length != nil { return *x.Length } return 0 } -// It states the type of the next extension, or 0 if no next extension exists. This -// permits chaining several next extension headers. -type PatternFlowGtpExtensionNextExtensionHeader struct { +// A value of 1 indicates that the urgent pointer field is significant. +type PatternFlowTcpCtlUrg struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // Description missing in models // default = Choice.Enum.value - Choice *PatternFlowGtpExtensionNextExtensionHeader_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.PatternFlowGtpExtensionNextExtensionHeader_Choice_Enum,oneof" json:"choice,omitempty"` + Choice *PatternFlowTcpCtlUrg_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.PatternFlowTcpCtlUrg_Choice_Enum,oneof" json:"choice,omitempty"` // Description missing in models // default = 0 Value *uint32 `protobuf:"varint,2,opt,name=value,proto3,oneof" json:"value,omitempty"` @@ -70407,32 +69448,32 @@ type PatternFlowGtpExtensionNextExtensionHeader struct { // default = [0] Values []uint32 `protobuf:"varint,3,rep,packed,name=values,proto3" json:"values,omitempty"` // Description missing in models - Increment *PatternFlowGtpExtensionNextExtensionHeaderCounter `protobuf:"bytes,5,opt,name=increment,proto3" json:"increment,omitempty"` + Increment *PatternFlowTcpCtlUrgCounter `protobuf:"bytes,5,opt,name=increment,proto3" json:"increment,omitempty"` // Description missing in models - Decrement *PatternFlowGtpExtensionNextExtensionHeaderCounter `protobuf:"bytes,6,opt,name=decrement,proto3" json:"decrement,omitempty"` + Decrement *PatternFlowTcpCtlUrgCounter `protobuf:"bytes,6,opt,name=decrement,proto3" json:"decrement,omitempty"` // One or more metric tags can be used to enable tracking portion of or all bits in // a corresponding header field for metrics per each applicable value. These would appear // as tagged metrics in corresponding flow metrics. - MetricTags []*PatternFlowGtpExtensionNextExtensionHeaderMetricTag `protobuf:"bytes,7,rep,name=metric_tags,json=metricTags,proto3" json:"metric_tags,omitempty"` + MetricTags []*PatternFlowTcpCtlUrgMetricTag `protobuf:"bytes,7,rep,name=metric_tags,json=metricTags,proto3" json:"metric_tags,omitempty"` } -func (x *PatternFlowGtpExtensionNextExtensionHeader) Reset() { - *x = PatternFlowGtpExtensionNextExtensionHeader{} +func (x *PatternFlowTcpCtlUrg) Reset() { + *x = PatternFlowTcpCtlUrg{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[623] + mi := &file_otg_proto_msgTypes[584] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowGtpExtensionNextExtensionHeader) String() string { +func (x *PatternFlowTcpCtlUrg) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowGtpExtensionNextExtensionHeader) ProtoMessage() {} +func (*PatternFlowTcpCtlUrg) ProtoMessage() {} -func (x *PatternFlowGtpExtensionNextExtensionHeader) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[623] +func (x *PatternFlowTcpCtlUrg) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[584] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -70443,47 +69484,47 @@ func (x *PatternFlowGtpExtensionNextExtensionHeader) ProtoReflect() protoreflect return mi.MessageOf(x) } -// Deprecated: Use PatternFlowGtpExtensionNextExtensionHeader.ProtoReflect.Descriptor instead. -func (*PatternFlowGtpExtensionNextExtensionHeader) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{623} +// Deprecated: Use PatternFlowTcpCtlUrg.ProtoReflect.Descriptor instead. +func (*PatternFlowTcpCtlUrg) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{584} } -func (x *PatternFlowGtpExtensionNextExtensionHeader) GetChoice() PatternFlowGtpExtensionNextExtensionHeader_Choice_Enum { +func (x *PatternFlowTcpCtlUrg) GetChoice() PatternFlowTcpCtlUrg_Choice_Enum { if x != nil && x.Choice != nil { return *x.Choice } - return PatternFlowGtpExtensionNextExtensionHeader_Choice_unspecified + return PatternFlowTcpCtlUrg_Choice_unspecified } -func (x *PatternFlowGtpExtensionNextExtensionHeader) GetValue() uint32 { +func (x *PatternFlowTcpCtlUrg) GetValue() uint32 { if x != nil && x.Value != nil { return *x.Value } return 0 } -func (x *PatternFlowGtpExtensionNextExtensionHeader) GetValues() []uint32 { +func (x *PatternFlowTcpCtlUrg) GetValues() []uint32 { if x != nil { return x.Values } return nil } -func (x *PatternFlowGtpExtensionNextExtensionHeader) GetIncrement() *PatternFlowGtpExtensionNextExtensionHeaderCounter { +func (x *PatternFlowTcpCtlUrg) GetIncrement() *PatternFlowTcpCtlUrgCounter { if x != nil { return x.Increment } return nil } -func (x *PatternFlowGtpExtensionNextExtensionHeader) GetDecrement() *PatternFlowGtpExtensionNextExtensionHeaderCounter { +func (x *PatternFlowTcpCtlUrg) GetDecrement() *PatternFlowTcpCtlUrgCounter { if x != nil { return x.Decrement } return nil } -func (x *PatternFlowGtpExtensionNextExtensionHeader) GetMetricTags() []*PatternFlowGtpExtensionNextExtensionHeaderMetricTag { +func (x *PatternFlowTcpCtlUrg) GetMetricTags() []*PatternFlowTcpCtlUrgMetricTag { if x != nil { return x.MetricTags } @@ -70491,13 +69532,13 @@ func (x *PatternFlowGtpExtensionNextExtensionHeader) GetMetricTags() []*PatternF } // integer counter pattern -type PatternFlowGtpv2VersionCounter struct { +type PatternFlowTcpCtlAckCounter struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // Description missing in models - // default = 2 + // default = 0 Start *uint32 `protobuf:"varint,1,opt,name=start,proto3,oneof" json:"start,omitempty"` // Description missing in models // default = 1 @@ -70507,23 +69548,23 @@ type PatternFlowGtpv2VersionCounter struct { Count *uint32 `protobuf:"varint,3,opt,name=count,proto3,oneof" json:"count,omitempty"` } -func (x *PatternFlowGtpv2VersionCounter) Reset() { - *x = PatternFlowGtpv2VersionCounter{} +func (x *PatternFlowTcpCtlAckCounter) Reset() { + *x = PatternFlowTcpCtlAckCounter{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[624] + mi := &file_otg_proto_msgTypes[585] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowGtpv2VersionCounter) String() string { +func (x *PatternFlowTcpCtlAckCounter) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowGtpv2VersionCounter) ProtoMessage() {} +func (*PatternFlowTcpCtlAckCounter) ProtoMessage() {} -func (x *PatternFlowGtpv2VersionCounter) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[624] +func (x *PatternFlowTcpCtlAckCounter) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[585] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -70534,26 +69575,26 @@ func (x *PatternFlowGtpv2VersionCounter) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use PatternFlowGtpv2VersionCounter.ProtoReflect.Descriptor instead. -func (*PatternFlowGtpv2VersionCounter) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{624} +// Deprecated: Use PatternFlowTcpCtlAckCounter.ProtoReflect.Descriptor instead. +func (*PatternFlowTcpCtlAckCounter) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{585} } -func (x *PatternFlowGtpv2VersionCounter) GetStart() uint32 { +func (x *PatternFlowTcpCtlAckCounter) GetStart() uint32 { if x != nil && x.Start != nil { return *x.Start } return 0 } -func (x *PatternFlowGtpv2VersionCounter) GetStep() uint32 { +func (x *PatternFlowTcpCtlAckCounter) GetStep() uint32 { if x != nil && x.Step != nil { return *x.Step } return 0 } -func (x *PatternFlowGtpv2VersionCounter) GetCount() uint32 { +func (x *PatternFlowTcpCtlAckCounter) GetCount() uint32 { if x != nil && x.Count != nil { return *x.Count } @@ -70563,7 +69604,7 @@ func (x *PatternFlowGtpv2VersionCounter) GetCount() uint32 { // Metric tag can be used to enable tracking portion of or all bits in a corresponding // header field for metrics per each applicable value. These would appear as tagged // metrics in corresponding flow metrics. -type PatternFlowGtpv2VersionMetricTag struct { +type PatternFlowTcpCtlAckMetricTag struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields @@ -70577,27 +69618,27 @@ type PatternFlowGtpv2VersionMetricTag struct { Offset *uint32 `protobuf:"varint,2,opt,name=offset,proto3,oneof" json:"offset,omitempty"` // Number of bits to track for metrics starting from configured offset of corresponding // header field - // default = 3 + // default = 1 Length *uint32 `protobuf:"varint,3,opt,name=length,proto3,oneof" json:"length,omitempty"` } -func (x *PatternFlowGtpv2VersionMetricTag) Reset() { - *x = PatternFlowGtpv2VersionMetricTag{} +func (x *PatternFlowTcpCtlAckMetricTag) Reset() { + *x = PatternFlowTcpCtlAckMetricTag{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[625] + mi := &file_otg_proto_msgTypes[586] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowGtpv2VersionMetricTag) String() string { +func (x *PatternFlowTcpCtlAckMetricTag) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowGtpv2VersionMetricTag) ProtoMessage() {} +func (*PatternFlowTcpCtlAckMetricTag) ProtoMessage() {} -func (x *PatternFlowGtpv2VersionMetricTag) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[625] +func (x *PatternFlowTcpCtlAckMetricTag) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[586] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -70608,74 +69649,74 @@ func (x *PatternFlowGtpv2VersionMetricTag) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use PatternFlowGtpv2VersionMetricTag.ProtoReflect.Descriptor instead. -func (*PatternFlowGtpv2VersionMetricTag) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{625} +// Deprecated: Use PatternFlowTcpCtlAckMetricTag.ProtoReflect.Descriptor instead. +func (*PatternFlowTcpCtlAckMetricTag) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{586} } -func (x *PatternFlowGtpv2VersionMetricTag) GetName() string { +func (x *PatternFlowTcpCtlAckMetricTag) GetName() string { if x != nil && x.Name != nil { return *x.Name } return "" } -func (x *PatternFlowGtpv2VersionMetricTag) GetOffset() uint32 { +func (x *PatternFlowTcpCtlAckMetricTag) GetOffset() uint32 { if x != nil && x.Offset != nil { return *x.Offset } return 0 } -func (x *PatternFlowGtpv2VersionMetricTag) GetLength() uint32 { +func (x *PatternFlowTcpCtlAckMetricTag) GetLength() uint32 { if x != nil && x.Length != nil { return *x.Length } return 0 } -// Version number -type PatternFlowGtpv2Version struct { +// A value of 1 indicates that the ackknowledgment field is significant. +type PatternFlowTcpCtlAck struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // Description missing in models // default = Choice.Enum.value - Choice *PatternFlowGtpv2Version_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.PatternFlowGtpv2Version_Choice_Enum,oneof" json:"choice,omitempty"` + Choice *PatternFlowTcpCtlAck_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.PatternFlowTcpCtlAck_Choice_Enum,oneof" json:"choice,omitempty"` // Description missing in models - // default = 2 + // default = 0 Value *uint32 `protobuf:"varint,2,opt,name=value,proto3,oneof" json:"value,omitempty"` // Description missing in models - // default = [2] + // default = [0] Values []uint32 `protobuf:"varint,3,rep,packed,name=values,proto3" json:"values,omitempty"` // Description missing in models - Increment *PatternFlowGtpv2VersionCounter `protobuf:"bytes,5,opt,name=increment,proto3" json:"increment,omitempty"` + Increment *PatternFlowTcpCtlAckCounter `protobuf:"bytes,5,opt,name=increment,proto3" json:"increment,omitempty"` // Description missing in models - Decrement *PatternFlowGtpv2VersionCounter `protobuf:"bytes,6,opt,name=decrement,proto3" json:"decrement,omitempty"` + Decrement *PatternFlowTcpCtlAckCounter `protobuf:"bytes,6,opt,name=decrement,proto3" json:"decrement,omitempty"` // One or more metric tags can be used to enable tracking portion of or all bits in // a corresponding header field for metrics per each applicable value. These would appear // as tagged metrics in corresponding flow metrics. - MetricTags []*PatternFlowGtpv2VersionMetricTag `protobuf:"bytes,7,rep,name=metric_tags,json=metricTags,proto3" json:"metric_tags,omitempty"` + MetricTags []*PatternFlowTcpCtlAckMetricTag `protobuf:"bytes,7,rep,name=metric_tags,json=metricTags,proto3" json:"metric_tags,omitempty"` } -func (x *PatternFlowGtpv2Version) Reset() { - *x = PatternFlowGtpv2Version{} +func (x *PatternFlowTcpCtlAck) Reset() { + *x = PatternFlowTcpCtlAck{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[626] + mi := &file_otg_proto_msgTypes[587] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowGtpv2Version) String() string { +func (x *PatternFlowTcpCtlAck) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowGtpv2Version) ProtoMessage() {} +func (*PatternFlowTcpCtlAck) ProtoMessage() {} -func (x *PatternFlowGtpv2Version) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[626] +func (x *PatternFlowTcpCtlAck) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[587] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -70686,47 +69727,47 @@ func (x *PatternFlowGtpv2Version) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use PatternFlowGtpv2Version.ProtoReflect.Descriptor instead. -func (*PatternFlowGtpv2Version) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{626} +// Deprecated: Use PatternFlowTcpCtlAck.ProtoReflect.Descriptor instead. +func (*PatternFlowTcpCtlAck) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{587} } -func (x *PatternFlowGtpv2Version) GetChoice() PatternFlowGtpv2Version_Choice_Enum { +func (x *PatternFlowTcpCtlAck) GetChoice() PatternFlowTcpCtlAck_Choice_Enum { if x != nil && x.Choice != nil { return *x.Choice } - return PatternFlowGtpv2Version_Choice_unspecified + return PatternFlowTcpCtlAck_Choice_unspecified } -func (x *PatternFlowGtpv2Version) GetValue() uint32 { +func (x *PatternFlowTcpCtlAck) GetValue() uint32 { if x != nil && x.Value != nil { return *x.Value } return 0 } -func (x *PatternFlowGtpv2Version) GetValues() []uint32 { +func (x *PatternFlowTcpCtlAck) GetValues() []uint32 { if x != nil { return x.Values } return nil } -func (x *PatternFlowGtpv2Version) GetIncrement() *PatternFlowGtpv2VersionCounter { +func (x *PatternFlowTcpCtlAck) GetIncrement() *PatternFlowTcpCtlAckCounter { if x != nil { return x.Increment } return nil } -func (x *PatternFlowGtpv2Version) GetDecrement() *PatternFlowGtpv2VersionCounter { +func (x *PatternFlowTcpCtlAck) GetDecrement() *PatternFlowTcpCtlAckCounter { if x != nil { return x.Decrement } return nil } -func (x *PatternFlowGtpv2Version) GetMetricTags() []*PatternFlowGtpv2VersionMetricTag { +func (x *PatternFlowTcpCtlAck) GetMetricTags() []*PatternFlowTcpCtlAckMetricTag { if x != nil { return x.MetricTags } @@ -70734,7 +69775,7 @@ func (x *PatternFlowGtpv2Version) GetMetricTags() []*PatternFlowGtpv2VersionMetr } // integer counter pattern -type PatternFlowGtpv2PiggybackingFlagCounter struct { +type PatternFlowTcpCtlPshCounter struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields @@ -70750,23 +69791,23 @@ type PatternFlowGtpv2PiggybackingFlagCounter struct { Count *uint32 `protobuf:"varint,3,opt,name=count,proto3,oneof" json:"count,omitempty"` } -func (x *PatternFlowGtpv2PiggybackingFlagCounter) Reset() { - *x = PatternFlowGtpv2PiggybackingFlagCounter{} +func (x *PatternFlowTcpCtlPshCounter) Reset() { + *x = PatternFlowTcpCtlPshCounter{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[627] + mi := &file_otg_proto_msgTypes[588] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowGtpv2PiggybackingFlagCounter) String() string { +func (x *PatternFlowTcpCtlPshCounter) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowGtpv2PiggybackingFlagCounter) ProtoMessage() {} +func (*PatternFlowTcpCtlPshCounter) ProtoMessage() {} -func (x *PatternFlowGtpv2PiggybackingFlagCounter) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[627] +func (x *PatternFlowTcpCtlPshCounter) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[588] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -70777,26 +69818,26 @@ func (x *PatternFlowGtpv2PiggybackingFlagCounter) ProtoReflect() protoreflect.Me return mi.MessageOf(x) } -// Deprecated: Use PatternFlowGtpv2PiggybackingFlagCounter.ProtoReflect.Descriptor instead. -func (*PatternFlowGtpv2PiggybackingFlagCounter) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{627} +// Deprecated: Use PatternFlowTcpCtlPshCounter.ProtoReflect.Descriptor instead. +func (*PatternFlowTcpCtlPshCounter) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{588} } -func (x *PatternFlowGtpv2PiggybackingFlagCounter) GetStart() uint32 { +func (x *PatternFlowTcpCtlPshCounter) GetStart() uint32 { if x != nil && x.Start != nil { return *x.Start } return 0 } -func (x *PatternFlowGtpv2PiggybackingFlagCounter) GetStep() uint32 { +func (x *PatternFlowTcpCtlPshCounter) GetStep() uint32 { if x != nil && x.Step != nil { return *x.Step } return 0 } -func (x *PatternFlowGtpv2PiggybackingFlagCounter) GetCount() uint32 { +func (x *PatternFlowTcpCtlPshCounter) GetCount() uint32 { if x != nil && x.Count != nil { return *x.Count } @@ -70806,7 +69847,7 @@ func (x *PatternFlowGtpv2PiggybackingFlagCounter) GetCount() uint32 { // Metric tag can be used to enable tracking portion of or all bits in a corresponding // header field for metrics per each applicable value. These would appear as tagged // metrics in corresponding flow metrics. -type PatternFlowGtpv2PiggybackingFlagMetricTag struct { +type PatternFlowTcpCtlPshMetricTag struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields @@ -70824,23 +69865,23 @@ type PatternFlowGtpv2PiggybackingFlagMetricTag struct { Length *uint32 `protobuf:"varint,3,opt,name=length,proto3,oneof" json:"length,omitempty"` } -func (x *PatternFlowGtpv2PiggybackingFlagMetricTag) Reset() { - *x = PatternFlowGtpv2PiggybackingFlagMetricTag{} +func (x *PatternFlowTcpCtlPshMetricTag) Reset() { + *x = PatternFlowTcpCtlPshMetricTag{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[628] + mi := &file_otg_proto_msgTypes[589] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowGtpv2PiggybackingFlagMetricTag) String() string { +func (x *PatternFlowTcpCtlPshMetricTag) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowGtpv2PiggybackingFlagMetricTag) ProtoMessage() {} +func (*PatternFlowTcpCtlPshMetricTag) ProtoMessage() {} -func (x *PatternFlowGtpv2PiggybackingFlagMetricTag) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[628] +func (x *PatternFlowTcpCtlPshMetricTag) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[589] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -70851,42 +69892,41 @@ func (x *PatternFlowGtpv2PiggybackingFlagMetricTag) ProtoReflect() protoreflect. return mi.MessageOf(x) } -// Deprecated: Use PatternFlowGtpv2PiggybackingFlagMetricTag.ProtoReflect.Descriptor instead. -func (*PatternFlowGtpv2PiggybackingFlagMetricTag) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{628} +// Deprecated: Use PatternFlowTcpCtlPshMetricTag.ProtoReflect.Descriptor instead. +func (*PatternFlowTcpCtlPshMetricTag) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{589} } -func (x *PatternFlowGtpv2PiggybackingFlagMetricTag) GetName() string { +func (x *PatternFlowTcpCtlPshMetricTag) GetName() string { if x != nil && x.Name != nil { return *x.Name } return "" } -func (x *PatternFlowGtpv2PiggybackingFlagMetricTag) GetOffset() uint32 { +func (x *PatternFlowTcpCtlPshMetricTag) GetOffset() uint32 { if x != nil && x.Offset != nil { return *x.Offset } return 0 } -func (x *PatternFlowGtpv2PiggybackingFlagMetricTag) GetLength() uint32 { +func (x *PatternFlowTcpCtlPshMetricTag) GetLength() uint32 { if x != nil && x.Length != nil { return *x.Length } return 0 } -// If piggybacking_flag is set to 1 then another GTP-C message with its own header shall -// be present at the end of the current message -type PatternFlowGtpv2PiggybackingFlag struct { +// Asks to push the buffered data to the receiving application. +type PatternFlowTcpCtlPsh struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // Description missing in models // default = Choice.Enum.value - Choice *PatternFlowGtpv2PiggybackingFlag_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.PatternFlowGtpv2PiggybackingFlag_Choice_Enum,oneof" json:"choice,omitempty"` + Choice *PatternFlowTcpCtlPsh_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.PatternFlowTcpCtlPsh_Choice_Enum,oneof" json:"choice,omitempty"` // Description missing in models // default = 0 Value *uint32 `protobuf:"varint,2,opt,name=value,proto3,oneof" json:"value,omitempty"` @@ -70894,32 +69934,32 @@ type PatternFlowGtpv2PiggybackingFlag struct { // default = [0] Values []uint32 `protobuf:"varint,3,rep,packed,name=values,proto3" json:"values,omitempty"` // Description missing in models - Increment *PatternFlowGtpv2PiggybackingFlagCounter `protobuf:"bytes,5,opt,name=increment,proto3" json:"increment,omitempty"` + Increment *PatternFlowTcpCtlPshCounter `protobuf:"bytes,5,opt,name=increment,proto3" json:"increment,omitempty"` // Description missing in models - Decrement *PatternFlowGtpv2PiggybackingFlagCounter `protobuf:"bytes,6,opt,name=decrement,proto3" json:"decrement,omitempty"` + Decrement *PatternFlowTcpCtlPshCounter `protobuf:"bytes,6,opt,name=decrement,proto3" json:"decrement,omitempty"` // One or more metric tags can be used to enable tracking portion of or all bits in // a corresponding header field for metrics per each applicable value. These would appear // as tagged metrics in corresponding flow metrics. - MetricTags []*PatternFlowGtpv2PiggybackingFlagMetricTag `protobuf:"bytes,7,rep,name=metric_tags,json=metricTags,proto3" json:"metric_tags,omitempty"` + MetricTags []*PatternFlowTcpCtlPshMetricTag `protobuf:"bytes,7,rep,name=metric_tags,json=metricTags,proto3" json:"metric_tags,omitempty"` } -func (x *PatternFlowGtpv2PiggybackingFlag) Reset() { - *x = PatternFlowGtpv2PiggybackingFlag{} +func (x *PatternFlowTcpCtlPsh) Reset() { + *x = PatternFlowTcpCtlPsh{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[629] + mi := &file_otg_proto_msgTypes[590] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowGtpv2PiggybackingFlag) String() string { +func (x *PatternFlowTcpCtlPsh) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowGtpv2PiggybackingFlag) ProtoMessage() {} +func (*PatternFlowTcpCtlPsh) ProtoMessage() {} -func (x *PatternFlowGtpv2PiggybackingFlag) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[629] +func (x *PatternFlowTcpCtlPsh) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[590] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -70930,47 +69970,47 @@ func (x *PatternFlowGtpv2PiggybackingFlag) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use PatternFlowGtpv2PiggybackingFlag.ProtoReflect.Descriptor instead. -func (*PatternFlowGtpv2PiggybackingFlag) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{629} +// Deprecated: Use PatternFlowTcpCtlPsh.ProtoReflect.Descriptor instead. +func (*PatternFlowTcpCtlPsh) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{590} } -func (x *PatternFlowGtpv2PiggybackingFlag) GetChoice() PatternFlowGtpv2PiggybackingFlag_Choice_Enum { +func (x *PatternFlowTcpCtlPsh) GetChoice() PatternFlowTcpCtlPsh_Choice_Enum { if x != nil && x.Choice != nil { return *x.Choice } - return PatternFlowGtpv2PiggybackingFlag_Choice_unspecified + return PatternFlowTcpCtlPsh_Choice_unspecified } -func (x *PatternFlowGtpv2PiggybackingFlag) GetValue() uint32 { +func (x *PatternFlowTcpCtlPsh) GetValue() uint32 { if x != nil && x.Value != nil { return *x.Value } return 0 } -func (x *PatternFlowGtpv2PiggybackingFlag) GetValues() []uint32 { +func (x *PatternFlowTcpCtlPsh) GetValues() []uint32 { if x != nil { return x.Values } return nil } -func (x *PatternFlowGtpv2PiggybackingFlag) GetIncrement() *PatternFlowGtpv2PiggybackingFlagCounter { +func (x *PatternFlowTcpCtlPsh) GetIncrement() *PatternFlowTcpCtlPshCounter { if x != nil { return x.Increment } return nil } -func (x *PatternFlowGtpv2PiggybackingFlag) GetDecrement() *PatternFlowGtpv2PiggybackingFlagCounter { +func (x *PatternFlowTcpCtlPsh) GetDecrement() *PatternFlowTcpCtlPshCounter { if x != nil { return x.Decrement } return nil } -func (x *PatternFlowGtpv2PiggybackingFlag) GetMetricTags() []*PatternFlowGtpv2PiggybackingFlagMetricTag { +func (x *PatternFlowTcpCtlPsh) GetMetricTags() []*PatternFlowTcpCtlPshMetricTag { if x != nil { return x.MetricTags } @@ -70978,7 +70018,7 @@ func (x *PatternFlowGtpv2PiggybackingFlag) GetMetricTags() []*PatternFlowGtpv2Pi } // integer counter pattern -type PatternFlowGtpv2TeidFlagCounter struct { +type PatternFlowTcpCtlRstCounter struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields @@ -70994,23 +70034,23 @@ type PatternFlowGtpv2TeidFlagCounter struct { Count *uint32 `protobuf:"varint,3,opt,name=count,proto3,oneof" json:"count,omitempty"` } -func (x *PatternFlowGtpv2TeidFlagCounter) Reset() { - *x = PatternFlowGtpv2TeidFlagCounter{} +func (x *PatternFlowTcpCtlRstCounter) Reset() { + *x = PatternFlowTcpCtlRstCounter{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[630] + mi := &file_otg_proto_msgTypes[591] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowGtpv2TeidFlagCounter) String() string { +func (x *PatternFlowTcpCtlRstCounter) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowGtpv2TeidFlagCounter) ProtoMessage() {} +func (*PatternFlowTcpCtlRstCounter) ProtoMessage() {} -func (x *PatternFlowGtpv2TeidFlagCounter) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[630] +func (x *PatternFlowTcpCtlRstCounter) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[591] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -71021,26 +70061,26 @@ func (x *PatternFlowGtpv2TeidFlagCounter) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use PatternFlowGtpv2TeidFlagCounter.ProtoReflect.Descriptor instead. -func (*PatternFlowGtpv2TeidFlagCounter) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{630} +// Deprecated: Use PatternFlowTcpCtlRstCounter.ProtoReflect.Descriptor instead. +func (*PatternFlowTcpCtlRstCounter) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{591} } -func (x *PatternFlowGtpv2TeidFlagCounter) GetStart() uint32 { +func (x *PatternFlowTcpCtlRstCounter) GetStart() uint32 { if x != nil && x.Start != nil { return *x.Start } return 0 } -func (x *PatternFlowGtpv2TeidFlagCounter) GetStep() uint32 { +func (x *PatternFlowTcpCtlRstCounter) GetStep() uint32 { if x != nil && x.Step != nil { return *x.Step } return 0 } -func (x *PatternFlowGtpv2TeidFlagCounter) GetCount() uint32 { +func (x *PatternFlowTcpCtlRstCounter) GetCount() uint32 { if x != nil && x.Count != nil { return *x.Count } @@ -71050,7 +70090,7 @@ func (x *PatternFlowGtpv2TeidFlagCounter) GetCount() uint32 { // Metric tag can be used to enable tracking portion of or all bits in a corresponding // header field for metrics per each applicable value. These would appear as tagged // metrics in corresponding flow metrics. -type PatternFlowGtpv2TeidFlagMetricTag struct { +type PatternFlowTcpCtlRstMetricTag struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields @@ -71068,23 +70108,23 @@ type PatternFlowGtpv2TeidFlagMetricTag struct { Length *uint32 `protobuf:"varint,3,opt,name=length,proto3,oneof" json:"length,omitempty"` } -func (x *PatternFlowGtpv2TeidFlagMetricTag) Reset() { - *x = PatternFlowGtpv2TeidFlagMetricTag{} +func (x *PatternFlowTcpCtlRstMetricTag) Reset() { + *x = PatternFlowTcpCtlRstMetricTag{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[631] + mi := &file_otg_proto_msgTypes[592] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowGtpv2TeidFlagMetricTag) String() string { +func (x *PatternFlowTcpCtlRstMetricTag) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowGtpv2TeidFlagMetricTag) ProtoMessage() {} +func (*PatternFlowTcpCtlRstMetricTag) ProtoMessage() {} -func (x *PatternFlowGtpv2TeidFlagMetricTag) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[631] +func (x *PatternFlowTcpCtlRstMetricTag) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[592] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -71095,43 +70135,41 @@ func (x *PatternFlowGtpv2TeidFlagMetricTag) ProtoReflect() protoreflect.Message return mi.MessageOf(x) } -// Deprecated: Use PatternFlowGtpv2TeidFlagMetricTag.ProtoReflect.Descriptor instead. -func (*PatternFlowGtpv2TeidFlagMetricTag) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{631} +// Deprecated: Use PatternFlowTcpCtlRstMetricTag.ProtoReflect.Descriptor instead. +func (*PatternFlowTcpCtlRstMetricTag) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{592} } -func (x *PatternFlowGtpv2TeidFlagMetricTag) GetName() string { +func (x *PatternFlowTcpCtlRstMetricTag) GetName() string { if x != nil && x.Name != nil { return *x.Name } return "" } -func (x *PatternFlowGtpv2TeidFlagMetricTag) GetOffset() uint32 { +func (x *PatternFlowTcpCtlRstMetricTag) GetOffset() uint32 { if x != nil && x.Offset != nil { return *x.Offset } return 0 } -func (x *PatternFlowGtpv2TeidFlagMetricTag) GetLength() uint32 { +func (x *PatternFlowTcpCtlRstMetricTag) GetLength() uint32 { if x != nil && x.Length != nil { return *x.Length } return 0 } -// If teid_flag is set to 1 then the TEID field will be present between the message -// length and the sequence number. All messages except Echo and Echo reply require TEID -// to be present -type PatternFlowGtpv2TeidFlag struct { +// Reset the connection. +type PatternFlowTcpCtlRst struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // Description missing in models // default = Choice.Enum.value - Choice *PatternFlowGtpv2TeidFlag_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.PatternFlowGtpv2TeidFlag_Choice_Enum,oneof" json:"choice,omitempty"` + Choice *PatternFlowTcpCtlRst_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.PatternFlowTcpCtlRst_Choice_Enum,oneof" json:"choice,omitempty"` // Description missing in models // default = 0 Value *uint32 `protobuf:"varint,2,opt,name=value,proto3,oneof" json:"value,omitempty"` @@ -71139,32 +70177,32 @@ type PatternFlowGtpv2TeidFlag struct { // default = [0] Values []uint32 `protobuf:"varint,3,rep,packed,name=values,proto3" json:"values,omitempty"` // Description missing in models - Increment *PatternFlowGtpv2TeidFlagCounter `protobuf:"bytes,5,opt,name=increment,proto3" json:"increment,omitempty"` + Increment *PatternFlowTcpCtlRstCounter `protobuf:"bytes,5,opt,name=increment,proto3" json:"increment,omitempty"` // Description missing in models - Decrement *PatternFlowGtpv2TeidFlagCounter `protobuf:"bytes,6,opt,name=decrement,proto3" json:"decrement,omitempty"` + Decrement *PatternFlowTcpCtlRstCounter `protobuf:"bytes,6,opt,name=decrement,proto3" json:"decrement,omitempty"` // One or more metric tags can be used to enable tracking portion of or all bits in // a corresponding header field for metrics per each applicable value. These would appear // as tagged metrics in corresponding flow metrics. - MetricTags []*PatternFlowGtpv2TeidFlagMetricTag `protobuf:"bytes,7,rep,name=metric_tags,json=metricTags,proto3" json:"metric_tags,omitempty"` + MetricTags []*PatternFlowTcpCtlRstMetricTag `protobuf:"bytes,7,rep,name=metric_tags,json=metricTags,proto3" json:"metric_tags,omitempty"` } -func (x *PatternFlowGtpv2TeidFlag) Reset() { - *x = PatternFlowGtpv2TeidFlag{} +func (x *PatternFlowTcpCtlRst) Reset() { + *x = PatternFlowTcpCtlRst{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[632] + mi := &file_otg_proto_msgTypes[593] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowGtpv2TeidFlag) String() string { +func (x *PatternFlowTcpCtlRst) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowGtpv2TeidFlag) ProtoMessage() {} +func (*PatternFlowTcpCtlRst) ProtoMessage() {} -func (x *PatternFlowGtpv2TeidFlag) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[632] +func (x *PatternFlowTcpCtlRst) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[593] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -71175,47 +70213,47 @@ func (x *PatternFlowGtpv2TeidFlag) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use PatternFlowGtpv2TeidFlag.ProtoReflect.Descriptor instead. -func (*PatternFlowGtpv2TeidFlag) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{632} +// Deprecated: Use PatternFlowTcpCtlRst.ProtoReflect.Descriptor instead. +func (*PatternFlowTcpCtlRst) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{593} } -func (x *PatternFlowGtpv2TeidFlag) GetChoice() PatternFlowGtpv2TeidFlag_Choice_Enum { +func (x *PatternFlowTcpCtlRst) GetChoice() PatternFlowTcpCtlRst_Choice_Enum { if x != nil && x.Choice != nil { return *x.Choice } - return PatternFlowGtpv2TeidFlag_Choice_unspecified + return PatternFlowTcpCtlRst_Choice_unspecified } -func (x *PatternFlowGtpv2TeidFlag) GetValue() uint32 { +func (x *PatternFlowTcpCtlRst) GetValue() uint32 { if x != nil && x.Value != nil { return *x.Value } return 0 } -func (x *PatternFlowGtpv2TeidFlag) GetValues() []uint32 { +func (x *PatternFlowTcpCtlRst) GetValues() []uint32 { if x != nil { return x.Values } return nil } -func (x *PatternFlowGtpv2TeidFlag) GetIncrement() *PatternFlowGtpv2TeidFlagCounter { +func (x *PatternFlowTcpCtlRst) GetIncrement() *PatternFlowTcpCtlRstCounter { if x != nil { return x.Increment } return nil } -func (x *PatternFlowGtpv2TeidFlag) GetDecrement() *PatternFlowGtpv2TeidFlagCounter { +func (x *PatternFlowTcpCtlRst) GetDecrement() *PatternFlowTcpCtlRstCounter { if x != nil { return x.Decrement } return nil } -func (x *PatternFlowGtpv2TeidFlag) GetMetricTags() []*PatternFlowGtpv2TeidFlagMetricTag { +func (x *PatternFlowTcpCtlRst) GetMetricTags() []*PatternFlowTcpCtlRstMetricTag { if x != nil { return x.MetricTags } @@ -71223,7 +70261,7 @@ func (x *PatternFlowGtpv2TeidFlag) GetMetricTags() []*PatternFlowGtpv2TeidFlagMe } // integer counter pattern -type PatternFlowGtpv2Spare1Counter struct { +type PatternFlowTcpCtlSynCounter struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields @@ -71239,23 +70277,23 @@ type PatternFlowGtpv2Spare1Counter struct { Count *uint32 `protobuf:"varint,3,opt,name=count,proto3,oneof" json:"count,omitempty"` } -func (x *PatternFlowGtpv2Spare1Counter) Reset() { - *x = PatternFlowGtpv2Spare1Counter{} +func (x *PatternFlowTcpCtlSynCounter) Reset() { + *x = PatternFlowTcpCtlSynCounter{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[633] + mi := &file_otg_proto_msgTypes[594] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowGtpv2Spare1Counter) String() string { +func (x *PatternFlowTcpCtlSynCounter) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowGtpv2Spare1Counter) ProtoMessage() {} +func (*PatternFlowTcpCtlSynCounter) ProtoMessage() {} -func (x *PatternFlowGtpv2Spare1Counter) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[633] +func (x *PatternFlowTcpCtlSynCounter) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[594] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -71266,26 +70304,26 @@ func (x *PatternFlowGtpv2Spare1Counter) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use PatternFlowGtpv2Spare1Counter.ProtoReflect.Descriptor instead. -func (*PatternFlowGtpv2Spare1Counter) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{633} +// Deprecated: Use PatternFlowTcpCtlSynCounter.ProtoReflect.Descriptor instead. +func (*PatternFlowTcpCtlSynCounter) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{594} } -func (x *PatternFlowGtpv2Spare1Counter) GetStart() uint32 { +func (x *PatternFlowTcpCtlSynCounter) GetStart() uint32 { if x != nil && x.Start != nil { return *x.Start } return 0 } -func (x *PatternFlowGtpv2Spare1Counter) GetStep() uint32 { +func (x *PatternFlowTcpCtlSynCounter) GetStep() uint32 { if x != nil && x.Step != nil { return *x.Step } return 0 } -func (x *PatternFlowGtpv2Spare1Counter) GetCount() uint32 { +func (x *PatternFlowTcpCtlSynCounter) GetCount() uint32 { if x != nil && x.Count != nil { return *x.Count } @@ -71295,7 +70333,7 @@ func (x *PatternFlowGtpv2Spare1Counter) GetCount() uint32 { // Metric tag can be used to enable tracking portion of or all bits in a corresponding // header field for metrics per each applicable value. These would appear as tagged // metrics in corresponding flow metrics. -type PatternFlowGtpv2Spare1MetricTag struct { +type PatternFlowTcpCtlSynMetricTag struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields @@ -71309,27 +70347,27 @@ type PatternFlowGtpv2Spare1MetricTag struct { Offset *uint32 `protobuf:"varint,2,opt,name=offset,proto3,oneof" json:"offset,omitempty"` // Number of bits to track for metrics starting from configured offset of corresponding // header field - // default = 3 + // default = 1 Length *uint32 `protobuf:"varint,3,opt,name=length,proto3,oneof" json:"length,omitempty"` } -func (x *PatternFlowGtpv2Spare1MetricTag) Reset() { - *x = PatternFlowGtpv2Spare1MetricTag{} +func (x *PatternFlowTcpCtlSynMetricTag) Reset() { + *x = PatternFlowTcpCtlSynMetricTag{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[634] + mi := &file_otg_proto_msgTypes[595] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowGtpv2Spare1MetricTag) String() string { +func (x *PatternFlowTcpCtlSynMetricTag) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowGtpv2Spare1MetricTag) ProtoMessage() {} +func (*PatternFlowTcpCtlSynMetricTag) ProtoMessage() {} -func (x *PatternFlowGtpv2Spare1MetricTag) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[634] +func (x *PatternFlowTcpCtlSynMetricTag) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[595] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -71340,41 +70378,41 @@ func (x *PatternFlowGtpv2Spare1MetricTag) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use PatternFlowGtpv2Spare1MetricTag.ProtoReflect.Descriptor instead. -func (*PatternFlowGtpv2Spare1MetricTag) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{634} +// Deprecated: Use PatternFlowTcpCtlSynMetricTag.ProtoReflect.Descriptor instead. +func (*PatternFlowTcpCtlSynMetricTag) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{595} } -func (x *PatternFlowGtpv2Spare1MetricTag) GetName() string { +func (x *PatternFlowTcpCtlSynMetricTag) GetName() string { if x != nil && x.Name != nil { return *x.Name } return "" } -func (x *PatternFlowGtpv2Spare1MetricTag) GetOffset() uint32 { +func (x *PatternFlowTcpCtlSynMetricTag) GetOffset() uint32 { if x != nil && x.Offset != nil { return *x.Offset } return 0 } -func (x *PatternFlowGtpv2Spare1MetricTag) GetLength() uint32 { +func (x *PatternFlowTcpCtlSynMetricTag) GetLength() uint32 { if x != nil && x.Length != nil { return *x.Length } return 0 } -// A 3-bit reserved field (must be 0). -type PatternFlowGtpv2Spare1 struct { +// Synchronize sequenece numbers. +type PatternFlowTcpCtlSyn struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // Description missing in models // default = Choice.Enum.value - Choice *PatternFlowGtpv2Spare1_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.PatternFlowGtpv2Spare1_Choice_Enum,oneof" json:"choice,omitempty"` + Choice *PatternFlowTcpCtlSyn_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.PatternFlowTcpCtlSyn_Choice_Enum,oneof" json:"choice,omitempty"` // Description missing in models // default = 0 Value *uint32 `protobuf:"varint,2,opt,name=value,proto3,oneof" json:"value,omitempty"` @@ -71382,32 +70420,32 @@ type PatternFlowGtpv2Spare1 struct { // default = [0] Values []uint32 `protobuf:"varint,3,rep,packed,name=values,proto3" json:"values,omitempty"` // Description missing in models - Increment *PatternFlowGtpv2Spare1Counter `protobuf:"bytes,5,opt,name=increment,proto3" json:"increment,omitempty"` + Increment *PatternFlowTcpCtlSynCounter `protobuf:"bytes,5,opt,name=increment,proto3" json:"increment,omitempty"` // Description missing in models - Decrement *PatternFlowGtpv2Spare1Counter `protobuf:"bytes,6,opt,name=decrement,proto3" json:"decrement,omitempty"` + Decrement *PatternFlowTcpCtlSynCounter `protobuf:"bytes,6,opt,name=decrement,proto3" json:"decrement,omitempty"` // One or more metric tags can be used to enable tracking portion of or all bits in // a corresponding header field for metrics per each applicable value. These would appear // as tagged metrics in corresponding flow metrics. - MetricTags []*PatternFlowGtpv2Spare1MetricTag `protobuf:"bytes,7,rep,name=metric_tags,json=metricTags,proto3" json:"metric_tags,omitempty"` + MetricTags []*PatternFlowTcpCtlSynMetricTag `protobuf:"bytes,7,rep,name=metric_tags,json=metricTags,proto3" json:"metric_tags,omitempty"` } -func (x *PatternFlowGtpv2Spare1) Reset() { - *x = PatternFlowGtpv2Spare1{} +func (x *PatternFlowTcpCtlSyn) Reset() { + *x = PatternFlowTcpCtlSyn{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[635] + mi := &file_otg_proto_msgTypes[596] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowGtpv2Spare1) String() string { +func (x *PatternFlowTcpCtlSyn) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowGtpv2Spare1) ProtoMessage() {} +func (*PatternFlowTcpCtlSyn) ProtoMessage() {} -func (x *PatternFlowGtpv2Spare1) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[635] +func (x *PatternFlowTcpCtlSyn) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[596] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -71418,47 +70456,47 @@ func (x *PatternFlowGtpv2Spare1) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use PatternFlowGtpv2Spare1.ProtoReflect.Descriptor instead. -func (*PatternFlowGtpv2Spare1) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{635} +// Deprecated: Use PatternFlowTcpCtlSyn.ProtoReflect.Descriptor instead. +func (*PatternFlowTcpCtlSyn) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{596} } -func (x *PatternFlowGtpv2Spare1) GetChoice() PatternFlowGtpv2Spare1_Choice_Enum { +func (x *PatternFlowTcpCtlSyn) GetChoice() PatternFlowTcpCtlSyn_Choice_Enum { if x != nil && x.Choice != nil { return *x.Choice } - return PatternFlowGtpv2Spare1_Choice_unspecified + return PatternFlowTcpCtlSyn_Choice_unspecified } -func (x *PatternFlowGtpv2Spare1) GetValue() uint32 { +func (x *PatternFlowTcpCtlSyn) GetValue() uint32 { if x != nil && x.Value != nil { return *x.Value } return 0 } -func (x *PatternFlowGtpv2Spare1) GetValues() []uint32 { +func (x *PatternFlowTcpCtlSyn) GetValues() []uint32 { if x != nil { return x.Values } return nil } -func (x *PatternFlowGtpv2Spare1) GetIncrement() *PatternFlowGtpv2Spare1Counter { +func (x *PatternFlowTcpCtlSyn) GetIncrement() *PatternFlowTcpCtlSynCounter { if x != nil { return x.Increment } return nil } -func (x *PatternFlowGtpv2Spare1) GetDecrement() *PatternFlowGtpv2Spare1Counter { +func (x *PatternFlowTcpCtlSyn) GetDecrement() *PatternFlowTcpCtlSynCounter { if x != nil { return x.Decrement } return nil } -func (x *PatternFlowGtpv2Spare1) GetMetricTags() []*PatternFlowGtpv2Spare1MetricTag { +func (x *PatternFlowTcpCtlSyn) GetMetricTags() []*PatternFlowTcpCtlSynMetricTag { if x != nil { return x.MetricTags } @@ -71466,7 +70504,7 @@ func (x *PatternFlowGtpv2Spare1) GetMetricTags() []*PatternFlowGtpv2Spare1Metric } // integer counter pattern -type PatternFlowGtpv2MessageTypeCounter struct { +type PatternFlowTcpCtlFinCounter struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields @@ -71482,23 +70520,23 @@ type PatternFlowGtpv2MessageTypeCounter struct { Count *uint32 `protobuf:"varint,3,opt,name=count,proto3,oneof" json:"count,omitempty"` } -func (x *PatternFlowGtpv2MessageTypeCounter) Reset() { - *x = PatternFlowGtpv2MessageTypeCounter{} +func (x *PatternFlowTcpCtlFinCounter) Reset() { + *x = PatternFlowTcpCtlFinCounter{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[636] + mi := &file_otg_proto_msgTypes[597] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowGtpv2MessageTypeCounter) String() string { +func (x *PatternFlowTcpCtlFinCounter) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowGtpv2MessageTypeCounter) ProtoMessage() {} +func (*PatternFlowTcpCtlFinCounter) ProtoMessage() {} -func (x *PatternFlowGtpv2MessageTypeCounter) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[636] +func (x *PatternFlowTcpCtlFinCounter) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[597] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -71509,26 +70547,26 @@ func (x *PatternFlowGtpv2MessageTypeCounter) ProtoReflect() protoreflect.Message return mi.MessageOf(x) } -// Deprecated: Use PatternFlowGtpv2MessageTypeCounter.ProtoReflect.Descriptor instead. -func (*PatternFlowGtpv2MessageTypeCounter) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{636} +// Deprecated: Use PatternFlowTcpCtlFinCounter.ProtoReflect.Descriptor instead. +func (*PatternFlowTcpCtlFinCounter) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{597} } -func (x *PatternFlowGtpv2MessageTypeCounter) GetStart() uint32 { +func (x *PatternFlowTcpCtlFinCounter) GetStart() uint32 { if x != nil && x.Start != nil { return *x.Start } return 0 } -func (x *PatternFlowGtpv2MessageTypeCounter) GetStep() uint32 { +func (x *PatternFlowTcpCtlFinCounter) GetStep() uint32 { if x != nil && x.Step != nil { return *x.Step } return 0 } -func (x *PatternFlowGtpv2MessageTypeCounter) GetCount() uint32 { +func (x *PatternFlowTcpCtlFinCounter) GetCount() uint32 { if x != nil && x.Count != nil { return *x.Count } @@ -71538,7 +70576,7 @@ func (x *PatternFlowGtpv2MessageTypeCounter) GetCount() uint32 { // Metric tag can be used to enable tracking portion of or all bits in a corresponding // header field for metrics per each applicable value. These would appear as tagged // metrics in corresponding flow metrics. -type PatternFlowGtpv2MessageTypeMetricTag struct { +type PatternFlowTcpCtlFinMetricTag struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields @@ -71552,27 +70590,27 @@ type PatternFlowGtpv2MessageTypeMetricTag struct { Offset *uint32 `protobuf:"varint,2,opt,name=offset,proto3,oneof" json:"offset,omitempty"` // Number of bits to track for metrics starting from configured offset of corresponding // header field - // default = 8 + // default = 1 Length *uint32 `protobuf:"varint,3,opt,name=length,proto3,oneof" json:"length,omitempty"` } -func (x *PatternFlowGtpv2MessageTypeMetricTag) Reset() { - *x = PatternFlowGtpv2MessageTypeMetricTag{} +func (x *PatternFlowTcpCtlFinMetricTag) Reset() { + *x = PatternFlowTcpCtlFinMetricTag{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[637] + mi := &file_otg_proto_msgTypes[598] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowGtpv2MessageTypeMetricTag) String() string { +func (x *PatternFlowTcpCtlFinMetricTag) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowGtpv2MessageTypeMetricTag) ProtoMessage() {} +func (*PatternFlowTcpCtlFinMetricTag) ProtoMessage() {} -func (x *PatternFlowGtpv2MessageTypeMetricTag) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[637] +func (x *PatternFlowTcpCtlFinMetricTag) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[598] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -71583,42 +70621,41 @@ func (x *PatternFlowGtpv2MessageTypeMetricTag) ProtoReflect() protoreflect.Messa return mi.MessageOf(x) } -// Deprecated: Use PatternFlowGtpv2MessageTypeMetricTag.ProtoReflect.Descriptor instead. -func (*PatternFlowGtpv2MessageTypeMetricTag) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{637} +// Deprecated: Use PatternFlowTcpCtlFinMetricTag.ProtoReflect.Descriptor instead. +func (*PatternFlowTcpCtlFinMetricTag) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{598} } -func (x *PatternFlowGtpv2MessageTypeMetricTag) GetName() string { +func (x *PatternFlowTcpCtlFinMetricTag) GetName() string { if x != nil && x.Name != nil { return *x.Name } return "" } -func (x *PatternFlowGtpv2MessageTypeMetricTag) GetOffset() uint32 { +func (x *PatternFlowTcpCtlFinMetricTag) GetOffset() uint32 { if x != nil && x.Offset != nil { return *x.Offset } return 0 } -func (x *PatternFlowGtpv2MessageTypeMetricTag) GetLength() uint32 { +func (x *PatternFlowTcpCtlFinMetricTag) GetLength() uint32 { if x != nil && x.Length != nil { return *x.Length } return 0 } -// An 8-bit field that indicates the type of GTP message. Different types of messages -// are defined in 3GPP TS 29.060 section 7.1 -type PatternFlowGtpv2MessageType struct { +// Last packet from the sender. +type PatternFlowTcpCtlFin struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // Description missing in models // default = Choice.Enum.value - Choice *PatternFlowGtpv2MessageType_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.PatternFlowGtpv2MessageType_Choice_Enum,oneof" json:"choice,omitempty"` + Choice *PatternFlowTcpCtlFin_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.PatternFlowTcpCtlFin_Choice_Enum,oneof" json:"choice,omitempty"` // Description missing in models // default = 0 Value *uint32 `protobuf:"varint,2,opt,name=value,proto3,oneof" json:"value,omitempty"` @@ -71626,32 +70663,32 @@ type PatternFlowGtpv2MessageType struct { // default = [0] Values []uint32 `protobuf:"varint,3,rep,packed,name=values,proto3" json:"values,omitempty"` // Description missing in models - Increment *PatternFlowGtpv2MessageTypeCounter `protobuf:"bytes,5,opt,name=increment,proto3" json:"increment,omitempty"` + Increment *PatternFlowTcpCtlFinCounter `protobuf:"bytes,5,opt,name=increment,proto3" json:"increment,omitempty"` // Description missing in models - Decrement *PatternFlowGtpv2MessageTypeCounter `protobuf:"bytes,6,opt,name=decrement,proto3" json:"decrement,omitempty"` + Decrement *PatternFlowTcpCtlFinCounter `protobuf:"bytes,6,opt,name=decrement,proto3" json:"decrement,omitempty"` // One or more metric tags can be used to enable tracking portion of or all bits in // a corresponding header field for metrics per each applicable value. These would appear // as tagged metrics in corresponding flow metrics. - MetricTags []*PatternFlowGtpv2MessageTypeMetricTag `protobuf:"bytes,7,rep,name=metric_tags,json=metricTags,proto3" json:"metric_tags,omitempty"` + MetricTags []*PatternFlowTcpCtlFinMetricTag `protobuf:"bytes,7,rep,name=metric_tags,json=metricTags,proto3" json:"metric_tags,omitempty"` } -func (x *PatternFlowGtpv2MessageType) Reset() { - *x = PatternFlowGtpv2MessageType{} +func (x *PatternFlowTcpCtlFin) Reset() { + *x = PatternFlowTcpCtlFin{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[638] + mi := &file_otg_proto_msgTypes[599] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowGtpv2MessageType) String() string { +func (x *PatternFlowTcpCtlFin) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowGtpv2MessageType) ProtoMessage() {} +func (*PatternFlowTcpCtlFin) ProtoMessage() {} -func (x *PatternFlowGtpv2MessageType) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[638] +func (x *PatternFlowTcpCtlFin) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[599] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -71662,47 +70699,47 @@ func (x *PatternFlowGtpv2MessageType) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use PatternFlowGtpv2MessageType.ProtoReflect.Descriptor instead. -func (*PatternFlowGtpv2MessageType) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{638} +// Deprecated: Use PatternFlowTcpCtlFin.ProtoReflect.Descriptor instead. +func (*PatternFlowTcpCtlFin) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{599} } -func (x *PatternFlowGtpv2MessageType) GetChoice() PatternFlowGtpv2MessageType_Choice_Enum { +func (x *PatternFlowTcpCtlFin) GetChoice() PatternFlowTcpCtlFin_Choice_Enum { if x != nil && x.Choice != nil { return *x.Choice } - return PatternFlowGtpv2MessageType_Choice_unspecified + return PatternFlowTcpCtlFin_Choice_unspecified } -func (x *PatternFlowGtpv2MessageType) GetValue() uint32 { +func (x *PatternFlowTcpCtlFin) GetValue() uint32 { if x != nil && x.Value != nil { return *x.Value } return 0 } -func (x *PatternFlowGtpv2MessageType) GetValues() []uint32 { +func (x *PatternFlowTcpCtlFin) GetValues() []uint32 { if x != nil { return x.Values } return nil } -func (x *PatternFlowGtpv2MessageType) GetIncrement() *PatternFlowGtpv2MessageTypeCounter { +func (x *PatternFlowTcpCtlFin) GetIncrement() *PatternFlowTcpCtlFinCounter { if x != nil { return x.Increment } return nil } -func (x *PatternFlowGtpv2MessageType) GetDecrement() *PatternFlowGtpv2MessageTypeCounter { +func (x *PatternFlowTcpCtlFin) GetDecrement() *PatternFlowTcpCtlFinCounter { if x != nil { return x.Decrement } return nil } -func (x *PatternFlowGtpv2MessageType) GetMetricTags() []*PatternFlowGtpv2MessageTypeMetricTag { +func (x *PatternFlowTcpCtlFin) GetMetricTags() []*PatternFlowTcpCtlFinMetricTag { if x != nil { return x.MetricTags } @@ -71710,7 +70747,7 @@ func (x *PatternFlowGtpv2MessageType) GetMetricTags() []*PatternFlowGtpv2Message } // integer counter pattern -type PatternFlowGtpv2MessageLengthCounter struct { +type PatternFlowTcpWindowCounter struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields @@ -71726,23 +70763,23 @@ type PatternFlowGtpv2MessageLengthCounter struct { Count *uint32 `protobuf:"varint,3,opt,name=count,proto3,oneof" json:"count,omitempty"` } -func (x *PatternFlowGtpv2MessageLengthCounter) Reset() { - *x = PatternFlowGtpv2MessageLengthCounter{} +func (x *PatternFlowTcpWindowCounter) Reset() { + *x = PatternFlowTcpWindowCounter{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[639] + mi := &file_otg_proto_msgTypes[600] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowGtpv2MessageLengthCounter) String() string { +func (x *PatternFlowTcpWindowCounter) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowGtpv2MessageLengthCounter) ProtoMessage() {} +func (*PatternFlowTcpWindowCounter) ProtoMessage() {} -func (x *PatternFlowGtpv2MessageLengthCounter) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[639] +func (x *PatternFlowTcpWindowCounter) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[600] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -71753,26 +70790,26 @@ func (x *PatternFlowGtpv2MessageLengthCounter) ProtoReflect() protoreflect.Messa return mi.MessageOf(x) } -// Deprecated: Use PatternFlowGtpv2MessageLengthCounter.ProtoReflect.Descriptor instead. -func (*PatternFlowGtpv2MessageLengthCounter) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{639} +// Deprecated: Use PatternFlowTcpWindowCounter.ProtoReflect.Descriptor instead. +func (*PatternFlowTcpWindowCounter) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{600} } -func (x *PatternFlowGtpv2MessageLengthCounter) GetStart() uint32 { +func (x *PatternFlowTcpWindowCounter) GetStart() uint32 { if x != nil && x.Start != nil { return *x.Start } return 0 } -func (x *PatternFlowGtpv2MessageLengthCounter) GetStep() uint32 { +func (x *PatternFlowTcpWindowCounter) GetStep() uint32 { if x != nil && x.Step != nil { return *x.Step } return 0 } -func (x *PatternFlowGtpv2MessageLengthCounter) GetCount() uint32 { +func (x *PatternFlowTcpWindowCounter) GetCount() uint32 { if x != nil && x.Count != nil { return *x.Count } @@ -71782,7 +70819,7 @@ func (x *PatternFlowGtpv2MessageLengthCounter) GetCount() uint32 { // Metric tag can be used to enable tracking portion of or all bits in a corresponding // header field for metrics per each applicable value. These would appear as tagged // metrics in corresponding flow metrics. -type PatternFlowGtpv2MessageLengthMetricTag struct { +type PatternFlowTcpWindowMetricTag struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields @@ -71800,23 +70837,23 @@ type PatternFlowGtpv2MessageLengthMetricTag struct { Length *uint32 `protobuf:"varint,3,opt,name=length,proto3,oneof" json:"length,omitempty"` } -func (x *PatternFlowGtpv2MessageLengthMetricTag) Reset() { - *x = PatternFlowGtpv2MessageLengthMetricTag{} +func (x *PatternFlowTcpWindowMetricTag) Reset() { + *x = PatternFlowTcpWindowMetricTag{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[640] + mi := &file_otg_proto_msgTypes[601] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowGtpv2MessageLengthMetricTag) String() string { +func (x *PatternFlowTcpWindowMetricTag) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowGtpv2MessageLengthMetricTag) ProtoMessage() {} +func (*PatternFlowTcpWindowMetricTag) ProtoMessage() {} -func (x *PatternFlowGtpv2MessageLengthMetricTag) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[640] +func (x *PatternFlowTcpWindowMetricTag) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[601] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -71827,42 +70864,41 @@ func (x *PatternFlowGtpv2MessageLengthMetricTag) ProtoReflect() protoreflect.Mes return mi.MessageOf(x) } -// Deprecated: Use PatternFlowGtpv2MessageLengthMetricTag.ProtoReflect.Descriptor instead. -func (*PatternFlowGtpv2MessageLengthMetricTag) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{640} +// Deprecated: Use PatternFlowTcpWindowMetricTag.ProtoReflect.Descriptor instead. +func (*PatternFlowTcpWindowMetricTag) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{601} } -func (x *PatternFlowGtpv2MessageLengthMetricTag) GetName() string { +func (x *PatternFlowTcpWindowMetricTag) GetName() string { if x != nil && x.Name != nil { return *x.Name } return "" } -func (x *PatternFlowGtpv2MessageLengthMetricTag) GetOffset() uint32 { +func (x *PatternFlowTcpWindowMetricTag) GetOffset() uint32 { if x != nil && x.Offset != nil { return *x.Offset } return 0 } -func (x *PatternFlowGtpv2MessageLengthMetricTag) GetLength() uint32 { +func (x *PatternFlowTcpWindowMetricTag) GetLength() uint32 { if x != nil && x.Length != nil { return *x.Length } return 0 } -// A 16-bit field that indicates the length of the payload in bytes, excluding the mandatory -// GTP-c header (first 4 bytes). Includes the TEID and sequence_number if they are present. -type PatternFlowGtpv2MessageLength struct { +// Tcp connection window. +type PatternFlowTcpWindow struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // Description missing in models // default = Choice.Enum.value - Choice *PatternFlowGtpv2MessageLength_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.PatternFlowGtpv2MessageLength_Choice_Enum,oneof" json:"choice,omitempty"` + Choice *PatternFlowTcpWindow_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.PatternFlowTcpWindow_Choice_Enum,oneof" json:"choice,omitempty"` // Description missing in models // default = 0 Value *uint32 `protobuf:"varint,2,opt,name=value,proto3,oneof" json:"value,omitempty"` @@ -71870,32 +70906,32 @@ type PatternFlowGtpv2MessageLength struct { // default = [0] Values []uint32 `protobuf:"varint,3,rep,packed,name=values,proto3" json:"values,omitempty"` // Description missing in models - Increment *PatternFlowGtpv2MessageLengthCounter `protobuf:"bytes,5,opt,name=increment,proto3" json:"increment,omitempty"` + Increment *PatternFlowTcpWindowCounter `protobuf:"bytes,5,opt,name=increment,proto3" json:"increment,omitempty"` // Description missing in models - Decrement *PatternFlowGtpv2MessageLengthCounter `protobuf:"bytes,6,opt,name=decrement,proto3" json:"decrement,omitempty"` + Decrement *PatternFlowTcpWindowCounter `protobuf:"bytes,6,opt,name=decrement,proto3" json:"decrement,omitempty"` // One or more metric tags can be used to enable tracking portion of or all bits in // a corresponding header field for metrics per each applicable value. These would appear // as tagged metrics in corresponding flow metrics. - MetricTags []*PatternFlowGtpv2MessageLengthMetricTag `protobuf:"bytes,7,rep,name=metric_tags,json=metricTags,proto3" json:"metric_tags,omitempty"` + MetricTags []*PatternFlowTcpWindowMetricTag `protobuf:"bytes,7,rep,name=metric_tags,json=metricTags,proto3" json:"metric_tags,omitempty"` } -func (x *PatternFlowGtpv2MessageLength) Reset() { - *x = PatternFlowGtpv2MessageLength{} +func (x *PatternFlowTcpWindow) Reset() { + *x = PatternFlowTcpWindow{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[641] + mi := &file_otg_proto_msgTypes[602] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowGtpv2MessageLength) String() string { +func (x *PatternFlowTcpWindow) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowGtpv2MessageLength) ProtoMessage() {} +func (*PatternFlowTcpWindow) ProtoMessage() {} -func (x *PatternFlowGtpv2MessageLength) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[641] +func (x *PatternFlowTcpWindow) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[602] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -71906,47 +70942,47 @@ func (x *PatternFlowGtpv2MessageLength) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use PatternFlowGtpv2MessageLength.ProtoReflect.Descriptor instead. -func (*PatternFlowGtpv2MessageLength) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{641} +// Deprecated: Use PatternFlowTcpWindow.ProtoReflect.Descriptor instead. +func (*PatternFlowTcpWindow) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{602} } -func (x *PatternFlowGtpv2MessageLength) GetChoice() PatternFlowGtpv2MessageLength_Choice_Enum { +func (x *PatternFlowTcpWindow) GetChoice() PatternFlowTcpWindow_Choice_Enum { if x != nil && x.Choice != nil { return *x.Choice } - return PatternFlowGtpv2MessageLength_Choice_unspecified + return PatternFlowTcpWindow_Choice_unspecified } -func (x *PatternFlowGtpv2MessageLength) GetValue() uint32 { +func (x *PatternFlowTcpWindow) GetValue() uint32 { if x != nil && x.Value != nil { return *x.Value } return 0 } -func (x *PatternFlowGtpv2MessageLength) GetValues() []uint32 { +func (x *PatternFlowTcpWindow) GetValues() []uint32 { if x != nil { return x.Values } return nil } -func (x *PatternFlowGtpv2MessageLength) GetIncrement() *PatternFlowGtpv2MessageLengthCounter { +func (x *PatternFlowTcpWindow) GetIncrement() *PatternFlowTcpWindowCounter { if x != nil { return x.Increment } return nil } -func (x *PatternFlowGtpv2MessageLength) GetDecrement() *PatternFlowGtpv2MessageLengthCounter { +func (x *PatternFlowTcpWindow) GetDecrement() *PatternFlowTcpWindowCounter { if x != nil { return x.Decrement } return nil } -func (x *PatternFlowGtpv2MessageLength) GetMetricTags() []*PatternFlowGtpv2MessageLengthMetricTag { +func (x *PatternFlowTcpWindow) GetMetricTags() []*PatternFlowTcpWindowMetricTag { if x != nil { return x.MetricTags } @@ -71954,7 +70990,7 @@ func (x *PatternFlowGtpv2MessageLength) GetMetricTags() []*PatternFlowGtpv2Messa } // integer counter pattern -type PatternFlowGtpv2TeidCounter struct { +type PatternFlowUdpSrcPortCounter struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields @@ -71970,23 +71006,23 @@ type PatternFlowGtpv2TeidCounter struct { Count *uint32 `protobuf:"varint,3,opt,name=count,proto3,oneof" json:"count,omitempty"` } -func (x *PatternFlowGtpv2TeidCounter) Reset() { - *x = PatternFlowGtpv2TeidCounter{} +func (x *PatternFlowUdpSrcPortCounter) Reset() { + *x = PatternFlowUdpSrcPortCounter{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[642] + mi := &file_otg_proto_msgTypes[603] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowGtpv2TeidCounter) String() string { +func (x *PatternFlowUdpSrcPortCounter) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowGtpv2TeidCounter) ProtoMessage() {} +func (*PatternFlowUdpSrcPortCounter) ProtoMessage() {} -func (x *PatternFlowGtpv2TeidCounter) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[642] +func (x *PatternFlowUdpSrcPortCounter) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[603] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -71997,26 +71033,26 @@ func (x *PatternFlowGtpv2TeidCounter) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use PatternFlowGtpv2TeidCounter.ProtoReflect.Descriptor instead. -func (*PatternFlowGtpv2TeidCounter) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{642} +// Deprecated: Use PatternFlowUdpSrcPortCounter.ProtoReflect.Descriptor instead. +func (*PatternFlowUdpSrcPortCounter) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{603} } -func (x *PatternFlowGtpv2TeidCounter) GetStart() uint32 { +func (x *PatternFlowUdpSrcPortCounter) GetStart() uint32 { if x != nil && x.Start != nil { return *x.Start } return 0 } -func (x *PatternFlowGtpv2TeidCounter) GetStep() uint32 { +func (x *PatternFlowUdpSrcPortCounter) GetStep() uint32 { if x != nil && x.Step != nil { return *x.Step } return 0 } -func (x *PatternFlowGtpv2TeidCounter) GetCount() uint32 { +func (x *PatternFlowUdpSrcPortCounter) GetCount() uint32 { if x != nil && x.Count != nil { return *x.Count } @@ -72026,7 +71062,7 @@ func (x *PatternFlowGtpv2TeidCounter) GetCount() uint32 { // Metric tag can be used to enable tracking portion of or all bits in a corresponding // header field for metrics per each applicable value. These would appear as tagged // metrics in corresponding flow metrics. -type PatternFlowGtpv2TeidMetricTag struct { +type PatternFlowUdpSrcPortMetricTag struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields @@ -72040,27 +71076,27 @@ type PatternFlowGtpv2TeidMetricTag struct { Offset *uint32 `protobuf:"varint,2,opt,name=offset,proto3,oneof" json:"offset,omitempty"` // Number of bits to track for metrics starting from configured offset of corresponding // header field - // default = 32 + // default = 16 Length *uint32 `protobuf:"varint,3,opt,name=length,proto3,oneof" json:"length,omitempty"` } -func (x *PatternFlowGtpv2TeidMetricTag) Reset() { - *x = PatternFlowGtpv2TeidMetricTag{} +func (x *PatternFlowUdpSrcPortMetricTag) Reset() { + *x = PatternFlowUdpSrcPortMetricTag{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[643] + mi := &file_otg_proto_msgTypes[604] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowGtpv2TeidMetricTag) String() string { +func (x *PatternFlowUdpSrcPortMetricTag) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowGtpv2TeidMetricTag) ProtoMessage() {} +func (*PatternFlowUdpSrcPortMetricTag) ProtoMessage() {} -func (x *PatternFlowGtpv2TeidMetricTag) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[643] +func (x *PatternFlowUdpSrcPortMetricTag) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[604] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -72071,42 +71107,41 @@ func (x *PatternFlowGtpv2TeidMetricTag) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use PatternFlowGtpv2TeidMetricTag.ProtoReflect.Descriptor instead. -func (*PatternFlowGtpv2TeidMetricTag) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{643} +// Deprecated: Use PatternFlowUdpSrcPortMetricTag.ProtoReflect.Descriptor instead. +func (*PatternFlowUdpSrcPortMetricTag) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{604} } -func (x *PatternFlowGtpv2TeidMetricTag) GetName() string { +func (x *PatternFlowUdpSrcPortMetricTag) GetName() string { if x != nil && x.Name != nil { return *x.Name } return "" } -func (x *PatternFlowGtpv2TeidMetricTag) GetOffset() uint32 { +func (x *PatternFlowUdpSrcPortMetricTag) GetOffset() uint32 { if x != nil && x.Offset != nil { return *x.Offset } return 0 } -func (x *PatternFlowGtpv2TeidMetricTag) GetLength() uint32 { +func (x *PatternFlowUdpSrcPortMetricTag) GetLength() uint32 { if x != nil && x.Length != nil { return *x.Length } return 0 } -// Tunnel endpoint identifier. A 32-bit (4-octet) field used to multiplex different -// connections in the same GTP tunnel. Is present only if the teid_flag is set. -type PatternFlowGtpv2Teid struct { +// Source port +type PatternFlowUdpSrcPort struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // Description missing in models // default = Choice.Enum.value - Choice *PatternFlowGtpv2Teid_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.PatternFlowGtpv2Teid_Choice_Enum,oneof" json:"choice,omitempty"` + Choice *PatternFlowUdpSrcPort_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.PatternFlowUdpSrcPort_Choice_Enum,oneof" json:"choice,omitempty"` // Description missing in models // default = 0 Value *uint32 `protobuf:"varint,2,opt,name=value,proto3,oneof" json:"value,omitempty"` @@ -72114,32 +71149,32 @@ type PatternFlowGtpv2Teid struct { // default = [0] Values []uint32 `protobuf:"varint,3,rep,packed,name=values,proto3" json:"values,omitempty"` // Description missing in models - Increment *PatternFlowGtpv2TeidCounter `protobuf:"bytes,5,opt,name=increment,proto3" json:"increment,omitempty"` + Increment *PatternFlowUdpSrcPortCounter `protobuf:"bytes,5,opt,name=increment,proto3" json:"increment,omitempty"` // Description missing in models - Decrement *PatternFlowGtpv2TeidCounter `protobuf:"bytes,6,opt,name=decrement,proto3" json:"decrement,omitempty"` + Decrement *PatternFlowUdpSrcPortCounter `protobuf:"bytes,6,opt,name=decrement,proto3" json:"decrement,omitempty"` // One or more metric tags can be used to enable tracking portion of or all bits in // a corresponding header field for metrics per each applicable value. These would appear // as tagged metrics in corresponding flow metrics. - MetricTags []*PatternFlowGtpv2TeidMetricTag `protobuf:"bytes,7,rep,name=metric_tags,json=metricTags,proto3" json:"metric_tags,omitempty"` + MetricTags []*PatternFlowUdpSrcPortMetricTag `protobuf:"bytes,7,rep,name=metric_tags,json=metricTags,proto3" json:"metric_tags,omitempty"` } -func (x *PatternFlowGtpv2Teid) Reset() { - *x = PatternFlowGtpv2Teid{} +func (x *PatternFlowUdpSrcPort) Reset() { + *x = PatternFlowUdpSrcPort{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[644] + mi := &file_otg_proto_msgTypes[605] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowGtpv2Teid) String() string { +func (x *PatternFlowUdpSrcPort) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowGtpv2Teid) ProtoMessage() {} +func (*PatternFlowUdpSrcPort) ProtoMessage() {} -func (x *PatternFlowGtpv2Teid) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[644] +func (x *PatternFlowUdpSrcPort) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[605] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -72150,47 +71185,47 @@ func (x *PatternFlowGtpv2Teid) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use PatternFlowGtpv2Teid.ProtoReflect.Descriptor instead. -func (*PatternFlowGtpv2Teid) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{644} +// Deprecated: Use PatternFlowUdpSrcPort.ProtoReflect.Descriptor instead. +func (*PatternFlowUdpSrcPort) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{605} } -func (x *PatternFlowGtpv2Teid) GetChoice() PatternFlowGtpv2Teid_Choice_Enum { +func (x *PatternFlowUdpSrcPort) GetChoice() PatternFlowUdpSrcPort_Choice_Enum { if x != nil && x.Choice != nil { return *x.Choice } - return PatternFlowGtpv2Teid_Choice_unspecified + return PatternFlowUdpSrcPort_Choice_unspecified } -func (x *PatternFlowGtpv2Teid) GetValue() uint32 { +func (x *PatternFlowUdpSrcPort) GetValue() uint32 { if x != nil && x.Value != nil { return *x.Value } return 0 } -func (x *PatternFlowGtpv2Teid) GetValues() []uint32 { +func (x *PatternFlowUdpSrcPort) GetValues() []uint32 { if x != nil { return x.Values } return nil } -func (x *PatternFlowGtpv2Teid) GetIncrement() *PatternFlowGtpv2TeidCounter { +func (x *PatternFlowUdpSrcPort) GetIncrement() *PatternFlowUdpSrcPortCounter { if x != nil { return x.Increment } return nil } -func (x *PatternFlowGtpv2Teid) GetDecrement() *PatternFlowGtpv2TeidCounter { +func (x *PatternFlowUdpSrcPort) GetDecrement() *PatternFlowUdpSrcPortCounter { if x != nil { return x.Decrement } return nil } -func (x *PatternFlowGtpv2Teid) GetMetricTags() []*PatternFlowGtpv2TeidMetricTag { +func (x *PatternFlowUdpSrcPort) GetMetricTags() []*PatternFlowUdpSrcPortMetricTag { if x != nil { return x.MetricTags } @@ -72198,7 +71233,7 @@ func (x *PatternFlowGtpv2Teid) GetMetricTags() []*PatternFlowGtpv2TeidMetricTag } // integer counter pattern -type PatternFlowGtpv2SequenceNumberCounter struct { +type PatternFlowUdpDstPortCounter struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields @@ -72214,23 +71249,23 @@ type PatternFlowGtpv2SequenceNumberCounter struct { Count *uint32 `protobuf:"varint,3,opt,name=count,proto3,oneof" json:"count,omitempty"` } -func (x *PatternFlowGtpv2SequenceNumberCounter) Reset() { - *x = PatternFlowGtpv2SequenceNumberCounter{} +func (x *PatternFlowUdpDstPortCounter) Reset() { + *x = PatternFlowUdpDstPortCounter{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[645] + mi := &file_otg_proto_msgTypes[606] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowGtpv2SequenceNumberCounter) String() string { +func (x *PatternFlowUdpDstPortCounter) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowGtpv2SequenceNumberCounter) ProtoMessage() {} +func (*PatternFlowUdpDstPortCounter) ProtoMessage() {} -func (x *PatternFlowGtpv2SequenceNumberCounter) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[645] +func (x *PatternFlowUdpDstPortCounter) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[606] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -72241,26 +71276,26 @@ func (x *PatternFlowGtpv2SequenceNumberCounter) ProtoReflect() protoreflect.Mess return mi.MessageOf(x) } -// Deprecated: Use PatternFlowGtpv2SequenceNumberCounter.ProtoReflect.Descriptor instead. -func (*PatternFlowGtpv2SequenceNumberCounter) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{645} +// Deprecated: Use PatternFlowUdpDstPortCounter.ProtoReflect.Descriptor instead. +func (*PatternFlowUdpDstPortCounter) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{606} } -func (x *PatternFlowGtpv2SequenceNumberCounter) GetStart() uint32 { +func (x *PatternFlowUdpDstPortCounter) GetStart() uint32 { if x != nil && x.Start != nil { return *x.Start } return 0 } -func (x *PatternFlowGtpv2SequenceNumberCounter) GetStep() uint32 { +func (x *PatternFlowUdpDstPortCounter) GetStep() uint32 { if x != nil && x.Step != nil { return *x.Step } return 0 } -func (x *PatternFlowGtpv2SequenceNumberCounter) GetCount() uint32 { +func (x *PatternFlowUdpDstPortCounter) GetCount() uint32 { if x != nil && x.Count != nil { return *x.Count } @@ -72270,7 +71305,7 @@ func (x *PatternFlowGtpv2SequenceNumberCounter) GetCount() uint32 { // Metric tag can be used to enable tracking portion of or all bits in a corresponding // header field for metrics per each applicable value. These would appear as tagged // metrics in corresponding flow metrics. -type PatternFlowGtpv2SequenceNumberMetricTag struct { +type PatternFlowUdpDstPortMetricTag struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields @@ -72284,27 +71319,27 @@ type PatternFlowGtpv2SequenceNumberMetricTag struct { Offset *uint32 `protobuf:"varint,2,opt,name=offset,proto3,oneof" json:"offset,omitempty"` // Number of bits to track for metrics starting from configured offset of corresponding // header field - // default = 24 + // default = 16 Length *uint32 `protobuf:"varint,3,opt,name=length,proto3,oneof" json:"length,omitempty"` } -func (x *PatternFlowGtpv2SequenceNumberMetricTag) Reset() { - *x = PatternFlowGtpv2SequenceNumberMetricTag{} +func (x *PatternFlowUdpDstPortMetricTag) Reset() { + *x = PatternFlowUdpDstPortMetricTag{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[646] + mi := &file_otg_proto_msgTypes[607] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowGtpv2SequenceNumberMetricTag) String() string { +func (x *PatternFlowUdpDstPortMetricTag) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowGtpv2SequenceNumberMetricTag) ProtoMessage() {} +func (*PatternFlowUdpDstPortMetricTag) ProtoMessage() {} -func (x *PatternFlowGtpv2SequenceNumberMetricTag) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[646] +func (x *PatternFlowUdpDstPortMetricTag) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[607] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -72315,41 +71350,41 @@ func (x *PatternFlowGtpv2SequenceNumberMetricTag) ProtoReflect() protoreflect.Me return mi.MessageOf(x) } -// Deprecated: Use PatternFlowGtpv2SequenceNumberMetricTag.ProtoReflect.Descriptor instead. -func (*PatternFlowGtpv2SequenceNumberMetricTag) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{646} +// Deprecated: Use PatternFlowUdpDstPortMetricTag.ProtoReflect.Descriptor instead. +func (*PatternFlowUdpDstPortMetricTag) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{607} } -func (x *PatternFlowGtpv2SequenceNumberMetricTag) GetName() string { +func (x *PatternFlowUdpDstPortMetricTag) GetName() string { if x != nil && x.Name != nil { return *x.Name } return "" } -func (x *PatternFlowGtpv2SequenceNumberMetricTag) GetOffset() uint32 { +func (x *PatternFlowUdpDstPortMetricTag) GetOffset() uint32 { if x != nil && x.Offset != nil { return *x.Offset } return 0 } -func (x *PatternFlowGtpv2SequenceNumberMetricTag) GetLength() uint32 { +func (x *PatternFlowUdpDstPortMetricTag) GetLength() uint32 { if x != nil && x.Length != nil { return *x.Length } return 0 } -// The sequence number -type PatternFlowGtpv2SequenceNumber struct { +// Destination port +type PatternFlowUdpDstPort struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // Description missing in models // default = Choice.Enum.value - Choice *PatternFlowGtpv2SequenceNumber_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.PatternFlowGtpv2SequenceNumber_Choice_Enum,oneof" json:"choice,omitempty"` + Choice *PatternFlowUdpDstPort_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.PatternFlowUdpDstPort_Choice_Enum,oneof" json:"choice,omitempty"` // Description missing in models // default = 0 Value *uint32 `protobuf:"varint,2,opt,name=value,proto3,oneof" json:"value,omitempty"` @@ -72357,32 +71392,32 @@ type PatternFlowGtpv2SequenceNumber struct { // default = [0] Values []uint32 `protobuf:"varint,3,rep,packed,name=values,proto3" json:"values,omitempty"` // Description missing in models - Increment *PatternFlowGtpv2SequenceNumberCounter `protobuf:"bytes,5,opt,name=increment,proto3" json:"increment,omitempty"` + Increment *PatternFlowUdpDstPortCounter `protobuf:"bytes,5,opt,name=increment,proto3" json:"increment,omitempty"` // Description missing in models - Decrement *PatternFlowGtpv2SequenceNumberCounter `protobuf:"bytes,6,opt,name=decrement,proto3" json:"decrement,omitempty"` + Decrement *PatternFlowUdpDstPortCounter `protobuf:"bytes,6,opt,name=decrement,proto3" json:"decrement,omitempty"` // One or more metric tags can be used to enable tracking portion of or all bits in // a corresponding header field for metrics per each applicable value. These would appear // as tagged metrics in corresponding flow metrics. - MetricTags []*PatternFlowGtpv2SequenceNumberMetricTag `protobuf:"bytes,7,rep,name=metric_tags,json=metricTags,proto3" json:"metric_tags,omitempty"` + MetricTags []*PatternFlowUdpDstPortMetricTag `protobuf:"bytes,7,rep,name=metric_tags,json=metricTags,proto3" json:"metric_tags,omitempty"` } -func (x *PatternFlowGtpv2SequenceNumber) Reset() { - *x = PatternFlowGtpv2SequenceNumber{} +func (x *PatternFlowUdpDstPort) Reset() { + *x = PatternFlowUdpDstPort{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[647] + mi := &file_otg_proto_msgTypes[608] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowGtpv2SequenceNumber) String() string { +func (x *PatternFlowUdpDstPort) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowGtpv2SequenceNumber) ProtoMessage() {} +func (*PatternFlowUdpDstPort) ProtoMessage() {} -func (x *PatternFlowGtpv2SequenceNumber) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[647] +func (x *PatternFlowUdpDstPort) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[608] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -72393,47 +71428,47 @@ func (x *PatternFlowGtpv2SequenceNumber) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use PatternFlowGtpv2SequenceNumber.ProtoReflect.Descriptor instead. -func (*PatternFlowGtpv2SequenceNumber) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{647} +// Deprecated: Use PatternFlowUdpDstPort.ProtoReflect.Descriptor instead. +func (*PatternFlowUdpDstPort) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{608} } -func (x *PatternFlowGtpv2SequenceNumber) GetChoice() PatternFlowGtpv2SequenceNumber_Choice_Enum { +func (x *PatternFlowUdpDstPort) GetChoice() PatternFlowUdpDstPort_Choice_Enum { if x != nil && x.Choice != nil { return *x.Choice } - return PatternFlowGtpv2SequenceNumber_Choice_unspecified + return PatternFlowUdpDstPort_Choice_unspecified } -func (x *PatternFlowGtpv2SequenceNumber) GetValue() uint32 { +func (x *PatternFlowUdpDstPort) GetValue() uint32 { if x != nil && x.Value != nil { return *x.Value } return 0 } -func (x *PatternFlowGtpv2SequenceNumber) GetValues() []uint32 { +func (x *PatternFlowUdpDstPort) GetValues() []uint32 { if x != nil { return x.Values } return nil } -func (x *PatternFlowGtpv2SequenceNumber) GetIncrement() *PatternFlowGtpv2SequenceNumberCounter { +func (x *PatternFlowUdpDstPort) GetIncrement() *PatternFlowUdpDstPortCounter { if x != nil { return x.Increment } return nil } -func (x *PatternFlowGtpv2SequenceNumber) GetDecrement() *PatternFlowGtpv2SequenceNumberCounter { +func (x *PatternFlowUdpDstPort) GetDecrement() *PatternFlowUdpDstPortCounter { if x != nil { return x.Decrement } return nil } -func (x *PatternFlowGtpv2SequenceNumber) GetMetricTags() []*PatternFlowGtpv2SequenceNumberMetricTag { +func (x *PatternFlowUdpDstPort) GetMetricTags() []*PatternFlowUdpDstPortMetricTag { if x != nil { return x.MetricTags } @@ -72441,7 +71476,7 @@ func (x *PatternFlowGtpv2SequenceNumber) GetMetricTags() []*PatternFlowGtpv2Sequ } // integer counter pattern -type PatternFlowGtpv2Spare2Counter struct { +type PatternFlowUdpLengthCounter struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields @@ -72457,23 +71492,23 @@ type PatternFlowGtpv2Spare2Counter struct { Count *uint32 `protobuf:"varint,3,opt,name=count,proto3,oneof" json:"count,omitempty"` } -func (x *PatternFlowGtpv2Spare2Counter) Reset() { - *x = PatternFlowGtpv2Spare2Counter{} +func (x *PatternFlowUdpLengthCounter) Reset() { + *x = PatternFlowUdpLengthCounter{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[648] + mi := &file_otg_proto_msgTypes[609] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowGtpv2Spare2Counter) String() string { +func (x *PatternFlowUdpLengthCounter) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowGtpv2Spare2Counter) ProtoMessage() {} +func (*PatternFlowUdpLengthCounter) ProtoMessage() {} -func (x *PatternFlowGtpv2Spare2Counter) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[648] +func (x *PatternFlowUdpLengthCounter) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[609] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -72484,26 +71519,26 @@ func (x *PatternFlowGtpv2Spare2Counter) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use PatternFlowGtpv2Spare2Counter.ProtoReflect.Descriptor instead. -func (*PatternFlowGtpv2Spare2Counter) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{648} +// Deprecated: Use PatternFlowUdpLengthCounter.ProtoReflect.Descriptor instead. +func (*PatternFlowUdpLengthCounter) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{609} } -func (x *PatternFlowGtpv2Spare2Counter) GetStart() uint32 { +func (x *PatternFlowUdpLengthCounter) GetStart() uint32 { if x != nil && x.Start != nil { return *x.Start } return 0 } -func (x *PatternFlowGtpv2Spare2Counter) GetStep() uint32 { +func (x *PatternFlowUdpLengthCounter) GetStep() uint32 { if x != nil && x.Step != nil { return *x.Step } return 0 } -func (x *PatternFlowGtpv2Spare2Counter) GetCount() uint32 { +func (x *PatternFlowUdpLengthCounter) GetCount() uint32 { if x != nil && x.Count != nil { return *x.Count } @@ -72513,7 +71548,7 @@ func (x *PatternFlowGtpv2Spare2Counter) GetCount() uint32 { // Metric tag can be used to enable tracking portion of or all bits in a corresponding // header field for metrics per each applicable value. These would appear as tagged // metrics in corresponding flow metrics. -type PatternFlowGtpv2Spare2MetricTag struct { +type PatternFlowUdpLengthMetricTag struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields @@ -72527,27 +71562,27 @@ type PatternFlowGtpv2Spare2MetricTag struct { Offset *uint32 `protobuf:"varint,2,opt,name=offset,proto3,oneof" json:"offset,omitempty"` // Number of bits to track for metrics starting from configured offset of corresponding // header field - // default = 8 + // default = 16 Length *uint32 `protobuf:"varint,3,opt,name=length,proto3,oneof" json:"length,omitempty"` } -func (x *PatternFlowGtpv2Spare2MetricTag) Reset() { - *x = PatternFlowGtpv2Spare2MetricTag{} +func (x *PatternFlowUdpLengthMetricTag) Reset() { + *x = PatternFlowUdpLengthMetricTag{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[649] + mi := &file_otg_proto_msgTypes[610] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowGtpv2Spare2MetricTag) String() string { +func (x *PatternFlowUdpLengthMetricTag) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowGtpv2Spare2MetricTag) ProtoMessage() {} +func (*PatternFlowUdpLengthMetricTag) ProtoMessage() {} -func (x *PatternFlowGtpv2Spare2MetricTag) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[649] +func (x *PatternFlowUdpLengthMetricTag) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[610] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -72558,41 +71593,41 @@ func (x *PatternFlowGtpv2Spare2MetricTag) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use PatternFlowGtpv2Spare2MetricTag.ProtoReflect.Descriptor instead. -func (*PatternFlowGtpv2Spare2MetricTag) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{649} +// Deprecated: Use PatternFlowUdpLengthMetricTag.ProtoReflect.Descriptor instead. +func (*PatternFlowUdpLengthMetricTag) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{610} } -func (x *PatternFlowGtpv2Spare2MetricTag) GetName() string { +func (x *PatternFlowUdpLengthMetricTag) GetName() string { if x != nil && x.Name != nil { return *x.Name } return "" } -func (x *PatternFlowGtpv2Spare2MetricTag) GetOffset() uint32 { +func (x *PatternFlowUdpLengthMetricTag) GetOffset() uint32 { if x != nil && x.Offset != nil { return *x.Offset } return 0 } -func (x *PatternFlowGtpv2Spare2MetricTag) GetLength() uint32 { +func (x *PatternFlowUdpLengthMetricTag) GetLength() uint32 { if x != nil && x.Length != nil { return *x.Length } return 0 } -// Reserved field -type PatternFlowGtpv2Spare2 struct { +// Length +type PatternFlowUdpLength struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // Description missing in models // default = Choice.Enum.value - Choice *PatternFlowGtpv2Spare2_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.PatternFlowGtpv2Spare2_Choice_Enum,oneof" json:"choice,omitempty"` + Choice *PatternFlowUdpLength_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.PatternFlowUdpLength_Choice_Enum,oneof" json:"choice,omitempty"` // Description missing in models // default = 0 Value *uint32 `protobuf:"varint,2,opt,name=value,proto3,oneof" json:"value,omitempty"` @@ -72600,32 +71635,32 @@ type PatternFlowGtpv2Spare2 struct { // default = [0] Values []uint32 `protobuf:"varint,3,rep,packed,name=values,proto3" json:"values,omitempty"` // Description missing in models - Increment *PatternFlowGtpv2Spare2Counter `protobuf:"bytes,5,opt,name=increment,proto3" json:"increment,omitempty"` + Increment *PatternFlowUdpLengthCounter `protobuf:"bytes,5,opt,name=increment,proto3" json:"increment,omitempty"` // Description missing in models - Decrement *PatternFlowGtpv2Spare2Counter `protobuf:"bytes,6,opt,name=decrement,proto3" json:"decrement,omitempty"` + Decrement *PatternFlowUdpLengthCounter `protobuf:"bytes,6,opt,name=decrement,proto3" json:"decrement,omitempty"` // One or more metric tags can be used to enable tracking portion of or all bits in // a corresponding header field for metrics per each applicable value. These would appear // as tagged metrics in corresponding flow metrics. - MetricTags []*PatternFlowGtpv2Spare2MetricTag `protobuf:"bytes,7,rep,name=metric_tags,json=metricTags,proto3" json:"metric_tags,omitempty"` + MetricTags []*PatternFlowUdpLengthMetricTag `protobuf:"bytes,7,rep,name=metric_tags,json=metricTags,proto3" json:"metric_tags,omitempty"` } -func (x *PatternFlowGtpv2Spare2) Reset() { - *x = PatternFlowGtpv2Spare2{} +func (x *PatternFlowUdpLength) Reset() { + *x = PatternFlowUdpLength{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[650] + mi := &file_otg_proto_msgTypes[611] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowGtpv2Spare2) String() string { +func (x *PatternFlowUdpLength) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowGtpv2Spare2) ProtoMessage() {} +func (*PatternFlowUdpLength) ProtoMessage() {} -func (x *PatternFlowGtpv2Spare2) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[650] +func (x *PatternFlowUdpLength) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[611] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -72636,61 +71671,130 @@ func (x *PatternFlowGtpv2Spare2) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use PatternFlowGtpv2Spare2.ProtoReflect.Descriptor instead. -func (*PatternFlowGtpv2Spare2) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{650} +// Deprecated: Use PatternFlowUdpLength.ProtoReflect.Descriptor instead. +func (*PatternFlowUdpLength) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{611} } -func (x *PatternFlowGtpv2Spare2) GetChoice() PatternFlowGtpv2Spare2_Choice_Enum { +func (x *PatternFlowUdpLength) GetChoice() PatternFlowUdpLength_Choice_Enum { if x != nil && x.Choice != nil { return *x.Choice } - return PatternFlowGtpv2Spare2_Choice_unspecified + return PatternFlowUdpLength_Choice_unspecified } -func (x *PatternFlowGtpv2Spare2) GetValue() uint32 { +func (x *PatternFlowUdpLength) GetValue() uint32 { if x != nil && x.Value != nil { return *x.Value } return 0 } -func (x *PatternFlowGtpv2Spare2) GetValues() []uint32 { +func (x *PatternFlowUdpLength) GetValues() []uint32 { if x != nil { return x.Values } return nil } -func (x *PatternFlowGtpv2Spare2) GetIncrement() *PatternFlowGtpv2Spare2Counter { +func (x *PatternFlowUdpLength) GetIncrement() *PatternFlowUdpLengthCounter { if x != nil { return x.Increment } return nil } -func (x *PatternFlowGtpv2Spare2) GetDecrement() *PatternFlowGtpv2Spare2Counter { +func (x *PatternFlowUdpLength) GetDecrement() *PatternFlowUdpLengthCounter { if x != nil { return x.Decrement } return nil } -func (x *PatternFlowGtpv2Spare2) GetMetricTags() []*PatternFlowGtpv2Spare2MetricTag { +func (x *PatternFlowUdpLength) GetMetricTags() []*PatternFlowUdpLengthMetricTag { if x != nil { return x.MetricTags } return nil } +// UDP checksum +type PatternFlowUdpChecksum struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // The type of checksum + // default = Choice.Enum.generated + Choice *PatternFlowUdpChecksum_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.PatternFlowUdpChecksum_Choice_Enum,oneof" json:"choice,omitempty"` + // A system generated checksum value + // default = Generated.Enum.good + Generated *PatternFlowUdpChecksum_Generated_Enum `protobuf:"varint,2,opt,name=generated,proto3,enum=otg.PatternFlowUdpChecksum_Generated_Enum,oneof" json:"generated,omitempty"` + // A custom checksum value + Custom *uint32 `protobuf:"varint,3,opt,name=custom,proto3,oneof" json:"custom,omitempty"` +} + +func (x *PatternFlowUdpChecksum) Reset() { + *x = PatternFlowUdpChecksum{} + if protoimpl.UnsafeEnabled { + mi := &file_otg_proto_msgTypes[612] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *PatternFlowUdpChecksum) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PatternFlowUdpChecksum) ProtoMessage() {} + +func (x *PatternFlowUdpChecksum) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[612] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use PatternFlowUdpChecksum.ProtoReflect.Descriptor instead. +func (*PatternFlowUdpChecksum) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{612} +} + +func (x *PatternFlowUdpChecksum) GetChoice() PatternFlowUdpChecksum_Choice_Enum { + if x != nil && x.Choice != nil { + return *x.Choice + } + return PatternFlowUdpChecksum_Choice_unspecified +} + +func (x *PatternFlowUdpChecksum) GetGenerated() PatternFlowUdpChecksum_Generated_Enum { + if x != nil && x.Generated != nil { + return *x.Generated + } + return PatternFlowUdpChecksum_Generated_unspecified +} + +func (x *PatternFlowUdpChecksum) GetCustom() uint32 { + if x != nil && x.Custom != nil { + return *x.Custom + } + return 0 +} + // integer counter pattern -type PatternFlowArpHardwareTypeCounter struct { +type PatternFlowGreChecksumPresentCounter struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // Description missing in models - // default = 1 + // default = 0 Start *uint32 `protobuf:"varint,1,opt,name=start,proto3,oneof" json:"start,omitempty"` // Description missing in models // default = 1 @@ -72700,23 +71804,23 @@ type PatternFlowArpHardwareTypeCounter struct { Count *uint32 `protobuf:"varint,3,opt,name=count,proto3,oneof" json:"count,omitempty"` } -func (x *PatternFlowArpHardwareTypeCounter) Reset() { - *x = PatternFlowArpHardwareTypeCounter{} +func (x *PatternFlowGreChecksumPresentCounter) Reset() { + *x = PatternFlowGreChecksumPresentCounter{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[651] + mi := &file_otg_proto_msgTypes[613] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowArpHardwareTypeCounter) String() string { +func (x *PatternFlowGreChecksumPresentCounter) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowArpHardwareTypeCounter) ProtoMessage() {} +func (*PatternFlowGreChecksumPresentCounter) ProtoMessage() {} -func (x *PatternFlowArpHardwareTypeCounter) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[651] +func (x *PatternFlowGreChecksumPresentCounter) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[613] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -72727,26 +71831,26 @@ func (x *PatternFlowArpHardwareTypeCounter) ProtoReflect() protoreflect.Message return mi.MessageOf(x) } -// Deprecated: Use PatternFlowArpHardwareTypeCounter.ProtoReflect.Descriptor instead. -func (*PatternFlowArpHardwareTypeCounter) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{651} +// Deprecated: Use PatternFlowGreChecksumPresentCounter.ProtoReflect.Descriptor instead. +func (*PatternFlowGreChecksumPresentCounter) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{613} } -func (x *PatternFlowArpHardwareTypeCounter) GetStart() uint32 { +func (x *PatternFlowGreChecksumPresentCounter) GetStart() uint32 { if x != nil && x.Start != nil { return *x.Start } return 0 } -func (x *PatternFlowArpHardwareTypeCounter) GetStep() uint32 { +func (x *PatternFlowGreChecksumPresentCounter) GetStep() uint32 { if x != nil && x.Step != nil { return *x.Step } return 0 } -func (x *PatternFlowArpHardwareTypeCounter) GetCount() uint32 { +func (x *PatternFlowGreChecksumPresentCounter) GetCount() uint32 { if x != nil && x.Count != nil { return *x.Count } @@ -72756,7 +71860,7 @@ func (x *PatternFlowArpHardwareTypeCounter) GetCount() uint32 { // Metric tag can be used to enable tracking portion of or all bits in a corresponding // header field for metrics per each applicable value. These would appear as tagged // metrics in corresponding flow metrics. -type PatternFlowArpHardwareTypeMetricTag struct { +type PatternFlowGreChecksumPresentMetricTag struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields @@ -72770,27 +71874,27 @@ type PatternFlowArpHardwareTypeMetricTag struct { Offset *uint32 `protobuf:"varint,2,opt,name=offset,proto3,oneof" json:"offset,omitempty"` // Number of bits to track for metrics starting from configured offset of corresponding // header field - // default = 16 + // default = 1 Length *uint32 `protobuf:"varint,3,opt,name=length,proto3,oneof" json:"length,omitempty"` } -func (x *PatternFlowArpHardwareTypeMetricTag) Reset() { - *x = PatternFlowArpHardwareTypeMetricTag{} +func (x *PatternFlowGreChecksumPresentMetricTag) Reset() { + *x = PatternFlowGreChecksumPresentMetricTag{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[652] + mi := &file_otg_proto_msgTypes[614] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowArpHardwareTypeMetricTag) String() string { +func (x *PatternFlowGreChecksumPresentMetricTag) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowArpHardwareTypeMetricTag) ProtoMessage() {} +func (*PatternFlowGreChecksumPresentMetricTag) ProtoMessage() {} -func (x *PatternFlowArpHardwareTypeMetricTag) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[652] +func (x *PatternFlowGreChecksumPresentMetricTag) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[614] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -72801,74 +71905,74 @@ func (x *PatternFlowArpHardwareTypeMetricTag) ProtoReflect() protoreflect.Messag return mi.MessageOf(x) } -// Deprecated: Use PatternFlowArpHardwareTypeMetricTag.ProtoReflect.Descriptor instead. -func (*PatternFlowArpHardwareTypeMetricTag) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{652} +// Deprecated: Use PatternFlowGreChecksumPresentMetricTag.ProtoReflect.Descriptor instead. +func (*PatternFlowGreChecksumPresentMetricTag) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{614} } -func (x *PatternFlowArpHardwareTypeMetricTag) GetName() string { +func (x *PatternFlowGreChecksumPresentMetricTag) GetName() string { if x != nil && x.Name != nil { return *x.Name } return "" } -func (x *PatternFlowArpHardwareTypeMetricTag) GetOffset() uint32 { +func (x *PatternFlowGreChecksumPresentMetricTag) GetOffset() uint32 { if x != nil && x.Offset != nil { return *x.Offset } return 0 } -func (x *PatternFlowArpHardwareTypeMetricTag) GetLength() uint32 { +func (x *PatternFlowGreChecksumPresentMetricTag) GetLength() uint32 { if x != nil && x.Length != nil { return *x.Length } return 0 } -// Network link protocol type -type PatternFlowArpHardwareType struct { +// Checksum present bit +type PatternFlowGreChecksumPresent struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // Description missing in models // default = Choice.Enum.value - Choice *PatternFlowArpHardwareType_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.PatternFlowArpHardwareType_Choice_Enum,oneof" json:"choice,omitempty"` + Choice *PatternFlowGreChecksumPresent_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.PatternFlowGreChecksumPresent_Choice_Enum,oneof" json:"choice,omitempty"` // Description missing in models - // default = 1 + // default = 0 Value *uint32 `protobuf:"varint,2,opt,name=value,proto3,oneof" json:"value,omitempty"` // Description missing in models - // default = [1] + // default = [0] Values []uint32 `protobuf:"varint,3,rep,packed,name=values,proto3" json:"values,omitempty"` // Description missing in models - Increment *PatternFlowArpHardwareTypeCounter `protobuf:"bytes,5,opt,name=increment,proto3" json:"increment,omitempty"` + Increment *PatternFlowGreChecksumPresentCounter `protobuf:"bytes,5,opt,name=increment,proto3" json:"increment,omitempty"` // Description missing in models - Decrement *PatternFlowArpHardwareTypeCounter `protobuf:"bytes,6,opt,name=decrement,proto3" json:"decrement,omitempty"` + Decrement *PatternFlowGreChecksumPresentCounter `protobuf:"bytes,6,opt,name=decrement,proto3" json:"decrement,omitempty"` // One or more metric tags can be used to enable tracking portion of or all bits in // a corresponding header field for metrics per each applicable value. These would appear // as tagged metrics in corresponding flow metrics. - MetricTags []*PatternFlowArpHardwareTypeMetricTag `protobuf:"bytes,7,rep,name=metric_tags,json=metricTags,proto3" json:"metric_tags,omitempty"` + MetricTags []*PatternFlowGreChecksumPresentMetricTag `protobuf:"bytes,7,rep,name=metric_tags,json=metricTags,proto3" json:"metric_tags,omitempty"` } -func (x *PatternFlowArpHardwareType) Reset() { - *x = PatternFlowArpHardwareType{} +func (x *PatternFlowGreChecksumPresent) Reset() { + *x = PatternFlowGreChecksumPresent{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[653] + mi := &file_otg_proto_msgTypes[615] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowArpHardwareType) String() string { +func (x *PatternFlowGreChecksumPresent) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowArpHardwareType) ProtoMessage() {} +func (*PatternFlowGreChecksumPresent) ProtoMessage() {} -func (x *PatternFlowArpHardwareType) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[653] +func (x *PatternFlowGreChecksumPresent) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[615] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -72879,47 +71983,47 @@ func (x *PatternFlowArpHardwareType) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use PatternFlowArpHardwareType.ProtoReflect.Descriptor instead. -func (*PatternFlowArpHardwareType) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{653} +// Deprecated: Use PatternFlowGreChecksumPresent.ProtoReflect.Descriptor instead. +func (*PatternFlowGreChecksumPresent) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{615} } -func (x *PatternFlowArpHardwareType) GetChoice() PatternFlowArpHardwareType_Choice_Enum { +func (x *PatternFlowGreChecksumPresent) GetChoice() PatternFlowGreChecksumPresent_Choice_Enum { if x != nil && x.Choice != nil { return *x.Choice } - return PatternFlowArpHardwareType_Choice_unspecified + return PatternFlowGreChecksumPresent_Choice_unspecified } -func (x *PatternFlowArpHardwareType) GetValue() uint32 { +func (x *PatternFlowGreChecksumPresent) GetValue() uint32 { if x != nil && x.Value != nil { return *x.Value } return 0 } -func (x *PatternFlowArpHardwareType) GetValues() []uint32 { +func (x *PatternFlowGreChecksumPresent) GetValues() []uint32 { if x != nil { return x.Values } return nil } -func (x *PatternFlowArpHardwareType) GetIncrement() *PatternFlowArpHardwareTypeCounter { +func (x *PatternFlowGreChecksumPresent) GetIncrement() *PatternFlowGreChecksumPresentCounter { if x != nil { return x.Increment } return nil } -func (x *PatternFlowArpHardwareType) GetDecrement() *PatternFlowArpHardwareTypeCounter { +func (x *PatternFlowGreChecksumPresent) GetDecrement() *PatternFlowGreChecksumPresentCounter { if x != nil { return x.Decrement } return nil } -func (x *PatternFlowArpHardwareType) GetMetricTags() []*PatternFlowArpHardwareTypeMetricTag { +func (x *PatternFlowGreChecksumPresent) GetMetricTags() []*PatternFlowGreChecksumPresentMetricTag { if x != nil { return x.MetricTags } @@ -72927,13 +72031,13 @@ func (x *PatternFlowArpHardwareType) GetMetricTags() []*PatternFlowArpHardwareTy } // integer counter pattern -type PatternFlowArpProtocolTypeCounter struct { +type PatternFlowGreReserved0Counter struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // Description missing in models - // default = 2048 + // default = 0 Start *uint32 `protobuf:"varint,1,opt,name=start,proto3,oneof" json:"start,omitempty"` // Description missing in models // default = 1 @@ -72943,23 +72047,23 @@ type PatternFlowArpProtocolTypeCounter struct { Count *uint32 `protobuf:"varint,3,opt,name=count,proto3,oneof" json:"count,omitempty"` } -func (x *PatternFlowArpProtocolTypeCounter) Reset() { - *x = PatternFlowArpProtocolTypeCounter{} +func (x *PatternFlowGreReserved0Counter) Reset() { + *x = PatternFlowGreReserved0Counter{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[654] + mi := &file_otg_proto_msgTypes[616] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowArpProtocolTypeCounter) String() string { +func (x *PatternFlowGreReserved0Counter) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowArpProtocolTypeCounter) ProtoMessage() {} +func (*PatternFlowGreReserved0Counter) ProtoMessage() {} -func (x *PatternFlowArpProtocolTypeCounter) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[654] +func (x *PatternFlowGreReserved0Counter) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[616] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -72970,26 +72074,26 @@ func (x *PatternFlowArpProtocolTypeCounter) ProtoReflect() protoreflect.Message return mi.MessageOf(x) } -// Deprecated: Use PatternFlowArpProtocolTypeCounter.ProtoReflect.Descriptor instead. -func (*PatternFlowArpProtocolTypeCounter) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{654} +// Deprecated: Use PatternFlowGreReserved0Counter.ProtoReflect.Descriptor instead. +func (*PatternFlowGreReserved0Counter) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{616} } -func (x *PatternFlowArpProtocolTypeCounter) GetStart() uint32 { +func (x *PatternFlowGreReserved0Counter) GetStart() uint32 { if x != nil && x.Start != nil { return *x.Start } return 0 } -func (x *PatternFlowArpProtocolTypeCounter) GetStep() uint32 { +func (x *PatternFlowGreReserved0Counter) GetStep() uint32 { if x != nil && x.Step != nil { return *x.Step } return 0 } -func (x *PatternFlowArpProtocolTypeCounter) GetCount() uint32 { +func (x *PatternFlowGreReserved0Counter) GetCount() uint32 { if x != nil && x.Count != nil { return *x.Count } @@ -72999,7 +72103,7 @@ func (x *PatternFlowArpProtocolTypeCounter) GetCount() uint32 { // Metric tag can be used to enable tracking portion of or all bits in a corresponding // header field for metrics per each applicable value. These would appear as tagged // metrics in corresponding flow metrics. -type PatternFlowArpProtocolTypeMetricTag struct { +type PatternFlowGreReserved0MetricTag struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields @@ -73013,27 +72117,27 @@ type PatternFlowArpProtocolTypeMetricTag struct { Offset *uint32 `protobuf:"varint,2,opt,name=offset,proto3,oneof" json:"offset,omitempty"` // Number of bits to track for metrics starting from configured offset of corresponding // header field - // default = 16 + // default = 12 Length *uint32 `protobuf:"varint,3,opt,name=length,proto3,oneof" json:"length,omitempty"` } -func (x *PatternFlowArpProtocolTypeMetricTag) Reset() { - *x = PatternFlowArpProtocolTypeMetricTag{} +func (x *PatternFlowGreReserved0MetricTag) Reset() { + *x = PatternFlowGreReserved0MetricTag{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[655] + mi := &file_otg_proto_msgTypes[617] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowArpProtocolTypeMetricTag) String() string { +func (x *PatternFlowGreReserved0MetricTag) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowArpProtocolTypeMetricTag) ProtoMessage() {} +func (*PatternFlowGreReserved0MetricTag) ProtoMessage() {} -func (x *PatternFlowArpProtocolTypeMetricTag) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[655] +func (x *PatternFlowGreReserved0MetricTag) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[617] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -73044,74 +72148,74 @@ func (x *PatternFlowArpProtocolTypeMetricTag) ProtoReflect() protoreflect.Messag return mi.MessageOf(x) } -// Deprecated: Use PatternFlowArpProtocolTypeMetricTag.ProtoReflect.Descriptor instead. -func (*PatternFlowArpProtocolTypeMetricTag) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{655} +// Deprecated: Use PatternFlowGreReserved0MetricTag.ProtoReflect.Descriptor instead. +func (*PatternFlowGreReserved0MetricTag) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{617} } -func (x *PatternFlowArpProtocolTypeMetricTag) GetName() string { +func (x *PatternFlowGreReserved0MetricTag) GetName() string { if x != nil && x.Name != nil { return *x.Name } return "" } -func (x *PatternFlowArpProtocolTypeMetricTag) GetOffset() uint32 { +func (x *PatternFlowGreReserved0MetricTag) GetOffset() uint32 { if x != nil && x.Offset != nil { return *x.Offset } return 0 } -func (x *PatternFlowArpProtocolTypeMetricTag) GetLength() uint32 { +func (x *PatternFlowGreReserved0MetricTag) GetLength() uint32 { if x != nil && x.Length != nil { return *x.Length } return 0 } -// The internetwork protocol for which the ARP request is intended -type PatternFlowArpProtocolType struct { +// Reserved bits +type PatternFlowGreReserved0 struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // Description missing in models // default = Choice.Enum.value - Choice *PatternFlowArpProtocolType_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.PatternFlowArpProtocolType_Choice_Enum,oneof" json:"choice,omitempty"` + Choice *PatternFlowGreReserved0_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.PatternFlowGreReserved0_Choice_Enum,oneof" json:"choice,omitempty"` // Description missing in models - // default = 2048 + // default = 0 Value *uint32 `protobuf:"varint,2,opt,name=value,proto3,oneof" json:"value,omitempty"` // Description missing in models - // default = [2048] + // default = [0] Values []uint32 `protobuf:"varint,3,rep,packed,name=values,proto3" json:"values,omitempty"` // Description missing in models - Increment *PatternFlowArpProtocolTypeCounter `protobuf:"bytes,5,opt,name=increment,proto3" json:"increment,omitempty"` + Increment *PatternFlowGreReserved0Counter `protobuf:"bytes,5,opt,name=increment,proto3" json:"increment,omitempty"` // Description missing in models - Decrement *PatternFlowArpProtocolTypeCounter `protobuf:"bytes,6,opt,name=decrement,proto3" json:"decrement,omitempty"` + Decrement *PatternFlowGreReserved0Counter `protobuf:"bytes,6,opt,name=decrement,proto3" json:"decrement,omitempty"` // One or more metric tags can be used to enable tracking portion of or all bits in // a corresponding header field for metrics per each applicable value. These would appear // as tagged metrics in corresponding flow metrics. - MetricTags []*PatternFlowArpProtocolTypeMetricTag `protobuf:"bytes,7,rep,name=metric_tags,json=metricTags,proto3" json:"metric_tags,omitempty"` + MetricTags []*PatternFlowGreReserved0MetricTag `protobuf:"bytes,7,rep,name=metric_tags,json=metricTags,proto3" json:"metric_tags,omitempty"` } -func (x *PatternFlowArpProtocolType) Reset() { - *x = PatternFlowArpProtocolType{} +func (x *PatternFlowGreReserved0) Reset() { + *x = PatternFlowGreReserved0{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[656] + mi := &file_otg_proto_msgTypes[618] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowArpProtocolType) String() string { +func (x *PatternFlowGreReserved0) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowArpProtocolType) ProtoMessage() {} +func (*PatternFlowGreReserved0) ProtoMessage() {} -func (x *PatternFlowArpProtocolType) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[656] +func (x *PatternFlowGreReserved0) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[618] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -73122,47 +72226,47 @@ func (x *PatternFlowArpProtocolType) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use PatternFlowArpProtocolType.ProtoReflect.Descriptor instead. -func (*PatternFlowArpProtocolType) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{656} +// Deprecated: Use PatternFlowGreReserved0.ProtoReflect.Descriptor instead. +func (*PatternFlowGreReserved0) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{618} } -func (x *PatternFlowArpProtocolType) GetChoice() PatternFlowArpProtocolType_Choice_Enum { +func (x *PatternFlowGreReserved0) GetChoice() PatternFlowGreReserved0_Choice_Enum { if x != nil && x.Choice != nil { return *x.Choice } - return PatternFlowArpProtocolType_Choice_unspecified + return PatternFlowGreReserved0_Choice_unspecified } -func (x *PatternFlowArpProtocolType) GetValue() uint32 { +func (x *PatternFlowGreReserved0) GetValue() uint32 { if x != nil && x.Value != nil { return *x.Value } return 0 } -func (x *PatternFlowArpProtocolType) GetValues() []uint32 { +func (x *PatternFlowGreReserved0) GetValues() []uint32 { if x != nil { return x.Values } return nil } -func (x *PatternFlowArpProtocolType) GetIncrement() *PatternFlowArpProtocolTypeCounter { +func (x *PatternFlowGreReserved0) GetIncrement() *PatternFlowGreReserved0Counter { if x != nil { return x.Increment } return nil } -func (x *PatternFlowArpProtocolType) GetDecrement() *PatternFlowArpProtocolTypeCounter { +func (x *PatternFlowGreReserved0) GetDecrement() *PatternFlowGreReserved0Counter { if x != nil { return x.Decrement } return nil } -func (x *PatternFlowArpProtocolType) GetMetricTags() []*PatternFlowArpProtocolTypeMetricTag { +func (x *PatternFlowGreReserved0) GetMetricTags() []*PatternFlowGreReserved0MetricTag { if x != nil { return x.MetricTags } @@ -73170,13 +72274,13 @@ func (x *PatternFlowArpProtocolType) GetMetricTags() []*PatternFlowArpProtocolTy } // integer counter pattern -type PatternFlowArpHardwareLengthCounter struct { +type PatternFlowGreVersionCounter struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // Description missing in models - // default = 6 + // default = 0 Start *uint32 `protobuf:"varint,1,opt,name=start,proto3,oneof" json:"start,omitempty"` // Description missing in models // default = 1 @@ -73186,23 +72290,23 @@ type PatternFlowArpHardwareLengthCounter struct { Count *uint32 `protobuf:"varint,3,opt,name=count,proto3,oneof" json:"count,omitempty"` } -func (x *PatternFlowArpHardwareLengthCounter) Reset() { - *x = PatternFlowArpHardwareLengthCounter{} +func (x *PatternFlowGreVersionCounter) Reset() { + *x = PatternFlowGreVersionCounter{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[657] + mi := &file_otg_proto_msgTypes[619] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowArpHardwareLengthCounter) String() string { +func (x *PatternFlowGreVersionCounter) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowArpHardwareLengthCounter) ProtoMessage() {} +func (*PatternFlowGreVersionCounter) ProtoMessage() {} -func (x *PatternFlowArpHardwareLengthCounter) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[657] +func (x *PatternFlowGreVersionCounter) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[619] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -73213,26 +72317,26 @@ func (x *PatternFlowArpHardwareLengthCounter) ProtoReflect() protoreflect.Messag return mi.MessageOf(x) } -// Deprecated: Use PatternFlowArpHardwareLengthCounter.ProtoReflect.Descriptor instead. -func (*PatternFlowArpHardwareLengthCounter) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{657} +// Deprecated: Use PatternFlowGreVersionCounter.ProtoReflect.Descriptor instead. +func (*PatternFlowGreVersionCounter) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{619} } -func (x *PatternFlowArpHardwareLengthCounter) GetStart() uint32 { +func (x *PatternFlowGreVersionCounter) GetStart() uint32 { if x != nil && x.Start != nil { return *x.Start } return 0 } -func (x *PatternFlowArpHardwareLengthCounter) GetStep() uint32 { +func (x *PatternFlowGreVersionCounter) GetStep() uint32 { if x != nil && x.Step != nil { return *x.Step } return 0 } -func (x *PatternFlowArpHardwareLengthCounter) GetCount() uint32 { +func (x *PatternFlowGreVersionCounter) GetCount() uint32 { if x != nil && x.Count != nil { return *x.Count } @@ -73242,7 +72346,7 @@ func (x *PatternFlowArpHardwareLengthCounter) GetCount() uint32 { // Metric tag can be used to enable tracking portion of or all bits in a corresponding // header field for metrics per each applicable value. These would appear as tagged // metrics in corresponding flow metrics. -type PatternFlowArpHardwareLengthMetricTag struct { +type PatternFlowGreVersionMetricTag struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields @@ -73256,28 +72360,28 @@ type PatternFlowArpHardwareLengthMetricTag struct { Offset *uint32 `protobuf:"varint,2,opt,name=offset,proto3,oneof" json:"offset,omitempty"` // Number of bits to track for metrics starting from configured offset of corresponding // header field - // default = 8 + // default = 3 Length *uint32 `protobuf:"varint,3,opt,name=length,proto3,oneof" json:"length,omitempty"` } -func (x *PatternFlowArpHardwareLengthMetricTag) Reset() { - *x = PatternFlowArpHardwareLengthMetricTag{} +func (x *PatternFlowGreVersionMetricTag) Reset() { + *x = PatternFlowGreVersionMetricTag{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[658] + mi := &file_otg_proto_msgTypes[620] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowArpHardwareLengthMetricTag) String() string { +func (x *PatternFlowGreVersionMetricTag) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowArpHardwareLengthMetricTag) ProtoMessage() {} +func (*PatternFlowGreVersionMetricTag) ProtoMessage() {} -func (x *PatternFlowArpHardwareLengthMetricTag) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[658] - if protoimpl.UnsafeEnabled && x != nil { +func (x *PatternFlowGreVersionMetricTag) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[620] + if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -73287,74 +72391,74 @@ func (x *PatternFlowArpHardwareLengthMetricTag) ProtoReflect() protoreflect.Mess return mi.MessageOf(x) } -// Deprecated: Use PatternFlowArpHardwareLengthMetricTag.ProtoReflect.Descriptor instead. -func (*PatternFlowArpHardwareLengthMetricTag) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{658} +// Deprecated: Use PatternFlowGreVersionMetricTag.ProtoReflect.Descriptor instead. +func (*PatternFlowGreVersionMetricTag) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{620} } -func (x *PatternFlowArpHardwareLengthMetricTag) GetName() string { +func (x *PatternFlowGreVersionMetricTag) GetName() string { if x != nil && x.Name != nil { return *x.Name } return "" } -func (x *PatternFlowArpHardwareLengthMetricTag) GetOffset() uint32 { +func (x *PatternFlowGreVersionMetricTag) GetOffset() uint32 { if x != nil && x.Offset != nil { return *x.Offset } return 0 } -func (x *PatternFlowArpHardwareLengthMetricTag) GetLength() uint32 { +func (x *PatternFlowGreVersionMetricTag) GetLength() uint32 { if x != nil && x.Length != nil { return *x.Length } return 0 } -// Length (in octets) of a hardware address -type PatternFlowArpHardwareLength struct { +// GRE version number +type PatternFlowGreVersion struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // Description missing in models // default = Choice.Enum.value - Choice *PatternFlowArpHardwareLength_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.PatternFlowArpHardwareLength_Choice_Enum,oneof" json:"choice,omitempty"` + Choice *PatternFlowGreVersion_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.PatternFlowGreVersion_Choice_Enum,oneof" json:"choice,omitempty"` // Description missing in models - // default = 6 + // default = 0 Value *uint32 `protobuf:"varint,2,opt,name=value,proto3,oneof" json:"value,omitempty"` // Description missing in models - // default = [6] + // default = [0] Values []uint32 `protobuf:"varint,3,rep,packed,name=values,proto3" json:"values,omitempty"` // Description missing in models - Increment *PatternFlowArpHardwareLengthCounter `protobuf:"bytes,5,opt,name=increment,proto3" json:"increment,omitempty"` + Increment *PatternFlowGreVersionCounter `protobuf:"bytes,5,opt,name=increment,proto3" json:"increment,omitempty"` // Description missing in models - Decrement *PatternFlowArpHardwareLengthCounter `protobuf:"bytes,6,opt,name=decrement,proto3" json:"decrement,omitempty"` + Decrement *PatternFlowGreVersionCounter `protobuf:"bytes,6,opt,name=decrement,proto3" json:"decrement,omitempty"` // One or more metric tags can be used to enable tracking portion of or all bits in // a corresponding header field for metrics per each applicable value. These would appear // as tagged metrics in corresponding flow metrics. - MetricTags []*PatternFlowArpHardwareLengthMetricTag `protobuf:"bytes,7,rep,name=metric_tags,json=metricTags,proto3" json:"metric_tags,omitempty"` + MetricTags []*PatternFlowGreVersionMetricTag `protobuf:"bytes,7,rep,name=metric_tags,json=metricTags,proto3" json:"metric_tags,omitempty"` } -func (x *PatternFlowArpHardwareLength) Reset() { - *x = PatternFlowArpHardwareLength{} +func (x *PatternFlowGreVersion) Reset() { + *x = PatternFlowGreVersion{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[659] + mi := &file_otg_proto_msgTypes[621] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowArpHardwareLength) String() string { +func (x *PatternFlowGreVersion) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowArpHardwareLength) ProtoMessage() {} +func (*PatternFlowGreVersion) ProtoMessage() {} -func (x *PatternFlowArpHardwareLength) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[659] +func (x *PatternFlowGreVersion) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[621] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -73365,47 +72469,47 @@ func (x *PatternFlowArpHardwareLength) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use PatternFlowArpHardwareLength.ProtoReflect.Descriptor instead. -func (*PatternFlowArpHardwareLength) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{659} +// Deprecated: Use PatternFlowGreVersion.ProtoReflect.Descriptor instead. +func (*PatternFlowGreVersion) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{621} } -func (x *PatternFlowArpHardwareLength) GetChoice() PatternFlowArpHardwareLength_Choice_Enum { +func (x *PatternFlowGreVersion) GetChoice() PatternFlowGreVersion_Choice_Enum { if x != nil && x.Choice != nil { return *x.Choice } - return PatternFlowArpHardwareLength_Choice_unspecified + return PatternFlowGreVersion_Choice_unspecified } -func (x *PatternFlowArpHardwareLength) GetValue() uint32 { +func (x *PatternFlowGreVersion) GetValue() uint32 { if x != nil && x.Value != nil { return *x.Value } return 0 } -func (x *PatternFlowArpHardwareLength) GetValues() []uint32 { +func (x *PatternFlowGreVersion) GetValues() []uint32 { if x != nil { return x.Values } return nil } -func (x *PatternFlowArpHardwareLength) GetIncrement() *PatternFlowArpHardwareLengthCounter { +func (x *PatternFlowGreVersion) GetIncrement() *PatternFlowGreVersionCounter { if x != nil { return x.Increment } return nil } -func (x *PatternFlowArpHardwareLength) GetDecrement() *PatternFlowArpHardwareLengthCounter { +func (x *PatternFlowGreVersion) GetDecrement() *PatternFlowGreVersionCounter { if x != nil { return x.Decrement } return nil } -func (x *PatternFlowArpHardwareLength) GetMetricTags() []*PatternFlowArpHardwareLengthMetricTag { +func (x *PatternFlowGreVersion) GetMetricTags() []*PatternFlowGreVersionMetricTag { if x != nil { return x.MetricTags } @@ -73413,13 +72517,13 @@ func (x *PatternFlowArpHardwareLength) GetMetricTags() []*PatternFlowArpHardware } // integer counter pattern -type PatternFlowArpProtocolLengthCounter struct { +type PatternFlowGreProtocolCounter struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // Description missing in models - // default = 4 + // default = 2048 Start *uint32 `protobuf:"varint,1,opt,name=start,proto3,oneof" json:"start,omitempty"` // Description missing in models // default = 1 @@ -73429,23 +72533,23 @@ type PatternFlowArpProtocolLengthCounter struct { Count *uint32 `protobuf:"varint,3,opt,name=count,proto3,oneof" json:"count,omitempty"` } -func (x *PatternFlowArpProtocolLengthCounter) Reset() { - *x = PatternFlowArpProtocolLengthCounter{} +func (x *PatternFlowGreProtocolCounter) Reset() { + *x = PatternFlowGreProtocolCounter{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[660] + mi := &file_otg_proto_msgTypes[622] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowArpProtocolLengthCounter) String() string { +func (x *PatternFlowGreProtocolCounter) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowArpProtocolLengthCounter) ProtoMessage() {} +func (*PatternFlowGreProtocolCounter) ProtoMessage() {} -func (x *PatternFlowArpProtocolLengthCounter) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[660] +func (x *PatternFlowGreProtocolCounter) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[622] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -73456,26 +72560,26 @@ func (x *PatternFlowArpProtocolLengthCounter) ProtoReflect() protoreflect.Messag return mi.MessageOf(x) } -// Deprecated: Use PatternFlowArpProtocolLengthCounter.ProtoReflect.Descriptor instead. -func (*PatternFlowArpProtocolLengthCounter) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{660} +// Deprecated: Use PatternFlowGreProtocolCounter.ProtoReflect.Descriptor instead. +func (*PatternFlowGreProtocolCounter) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{622} } -func (x *PatternFlowArpProtocolLengthCounter) GetStart() uint32 { +func (x *PatternFlowGreProtocolCounter) GetStart() uint32 { if x != nil && x.Start != nil { return *x.Start } return 0 } -func (x *PatternFlowArpProtocolLengthCounter) GetStep() uint32 { +func (x *PatternFlowGreProtocolCounter) GetStep() uint32 { if x != nil && x.Step != nil { return *x.Step } return 0 } -func (x *PatternFlowArpProtocolLengthCounter) GetCount() uint32 { +func (x *PatternFlowGreProtocolCounter) GetCount() uint32 { if x != nil && x.Count != nil { return *x.Count } @@ -73485,7 +72589,7 @@ func (x *PatternFlowArpProtocolLengthCounter) GetCount() uint32 { // Metric tag can be used to enable tracking portion of or all bits in a corresponding // header field for metrics per each applicable value. These would appear as tagged // metrics in corresponding flow metrics. -type PatternFlowArpProtocolLengthMetricTag struct { +type PatternFlowGreProtocolMetricTag struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields @@ -73499,27 +72603,27 @@ type PatternFlowArpProtocolLengthMetricTag struct { Offset *uint32 `protobuf:"varint,2,opt,name=offset,proto3,oneof" json:"offset,omitempty"` // Number of bits to track for metrics starting from configured offset of corresponding // header field - // default = 8 + // default = 16 Length *uint32 `protobuf:"varint,3,opt,name=length,proto3,oneof" json:"length,omitempty"` } -func (x *PatternFlowArpProtocolLengthMetricTag) Reset() { - *x = PatternFlowArpProtocolLengthMetricTag{} +func (x *PatternFlowGreProtocolMetricTag) Reset() { + *x = PatternFlowGreProtocolMetricTag{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[661] + mi := &file_otg_proto_msgTypes[623] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowArpProtocolLengthMetricTag) String() string { +func (x *PatternFlowGreProtocolMetricTag) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowArpProtocolLengthMetricTag) ProtoMessage() {} +func (*PatternFlowGreProtocolMetricTag) ProtoMessage() {} -func (x *PatternFlowArpProtocolLengthMetricTag) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[661] +func (x *PatternFlowGreProtocolMetricTag) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[623] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -73530,74 +72634,74 @@ func (x *PatternFlowArpProtocolLengthMetricTag) ProtoReflect() protoreflect.Mess return mi.MessageOf(x) } -// Deprecated: Use PatternFlowArpProtocolLengthMetricTag.ProtoReflect.Descriptor instead. -func (*PatternFlowArpProtocolLengthMetricTag) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{661} +// Deprecated: Use PatternFlowGreProtocolMetricTag.ProtoReflect.Descriptor instead. +func (*PatternFlowGreProtocolMetricTag) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{623} } -func (x *PatternFlowArpProtocolLengthMetricTag) GetName() string { +func (x *PatternFlowGreProtocolMetricTag) GetName() string { if x != nil && x.Name != nil { return *x.Name } return "" } -func (x *PatternFlowArpProtocolLengthMetricTag) GetOffset() uint32 { +func (x *PatternFlowGreProtocolMetricTag) GetOffset() uint32 { if x != nil && x.Offset != nil { return *x.Offset } return 0 } -func (x *PatternFlowArpProtocolLengthMetricTag) GetLength() uint32 { +func (x *PatternFlowGreProtocolMetricTag) GetLength() uint32 { if x != nil && x.Length != nil { return *x.Length } return 0 } -// Length (in octets) of internetwork addresses -type PatternFlowArpProtocolLength struct { +// Protocol type of encapsulated payload +type PatternFlowGreProtocol struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // Description missing in models // default = Choice.Enum.value - Choice *PatternFlowArpProtocolLength_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.PatternFlowArpProtocolLength_Choice_Enum,oneof" json:"choice,omitempty"` + Choice *PatternFlowGreProtocol_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.PatternFlowGreProtocol_Choice_Enum,oneof" json:"choice,omitempty"` // Description missing in models - // default = 4 + // default = 2048 Value *uint32 `protobuf:"varint,2,opt,name=value,proto3,oneof" json:"value,omitempty"` // Description missing in models - // default = [4] + // default = [2048] Values []uint32 `protobuf:"varint,3,rep,packed,name=values,proto3" json:"values,omitempty"` // Description missing in models - Increment *PatternFlowArpProtocolLengthCounter `protobuf:"bytes,5,opt,name=increment,proto3" json:"increment,omitempty"` + Increment *PatternFlowGreProtocolCounter `protobuf:"bytes,5,opt,name=increment,proto3" json:"increment,omitempty"` // Description missing in models - Decrement *PatternFlowArpProtocolLengthCounter `protobuf:"bytes,6,opt,name=decrement,proto3" json:"decrement,omitempty"` + Decrement *PatternFlowGreProtocolCounter `protobuf:"bytes,6,opt,name=decrement,proto3" json:"decrement,omitempty"` // One or more metric tags can be used to enable tracking portion of or all bits in // a corresponding header field for metrics per each applicable value. These would appear // as tagged metrics in corresponding flow metrics. - MetricTags []*PatternFlowArpProtocolLengthMetricTag `protobuf:"bytes,7,rep,name=metric_tags,json=metricTags,proto3" json:"metric_tags,omitempty"` + MetricTags []*PatternFlowGreProtocolMetricTag `protobuf:"bytes,7,rep,name=metric_tags,json=metricTags,proto3" json:"metric_tags,omitempty"` } -func (x *PatternFlowArpProtocolLength) Reset() { - *x = PatternFlowArpProtocolLength{} +func (x *PatternFlowGreProtocol) Reset() { + *x = PatternFlowGreProtocol{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[662] + mi := &file_otg_proto_msgTypes[624] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowArpProtocolLength) String() string { +func (x *PatternFlowGreProtocol) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowArpProtocolLength) ProtoMessage() {} +func (*PatternFlowGreProtocol) ProtoMessage() {} -func (x *PatternFlowArpProtocolLength) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[662] +func (x *PatternFlowGreProtocol) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[624] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -73608,61 +72712,131 @@ func (x *PatternFlowArpProtocolLength) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use PatternFlowArpProtocolLength.ProtoReflect.Descriptor instead. -func (*PatternFlowArpProtocolLength) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{662} +// Deprecated: Use PatternFlowGreProtocol.ProtoReflect.Descriptor instead. +func (*PatternFlowGreProtocol) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{624} } -func (x *PatternFlowArpProtocolLength) GetChoice() PatternFlowArpProtocolLength_Choice_Enum { +func (x *PatternFlowGreProtocol) GetChoice() PatternFlowGreProtocol_Choice_Enum { if x != nil && x.Choice != nil { return *x.Choice } - return PatternFlowArpProtocolLength_Choice_unspecified + return PatternFlowGreProtocol_Choice_unspecified } -func (x *PatternFlowArpProtocolLength) GetValue() uint32 { +func (x *PatternFlowGreProtocol) GetValue() uint32 { if x != nil && x.Value != nil { return *x.Value } return 0 } -func (x *PatternFlowArpProtocolLength) GetValues() []uint32 { +func (x *PatternFlowGreProtocol) GetValues() []uint32 { if x != nil { return x.Values } return nil } -func (x *PatternFlowArpProtocolLength) GetIncrement() *PatternFlowArpProtocolLengthCounter { +func (x *PatternFlowGreProtocol) GetIncrement() *PatternFlowGreProtocolCounter { if x != nil { return x.Increment } return nil } -func (x *PatternFlowArpProtocolLength) GetDecrement() *PatternFlowArpProtocolLengthCounter { +func (x *PatternFlowGreProtocol) GetDecrement() *PatternFlowGreProtocolCounter { if x != nil { return x.Decrement } return nil } -func (x *PatternFlowArpProtocolLength) GetMetricTags() []*PatternFlowArpProtocolLengthMetricTag { +func (x *PatternFlowGreProtocol) GetMetricTags() []*PatternFlowGreProtocolMetricTag { if x != nil { return x.MetricTags } return nil } +// Optional checksum of GRE header and payload. Only present if the checksum_present +// bit is set. +type PatternFlowGreChecksum struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // The type of checksum + // default = Choice.Enum.generated + Choice *PatternFlowGreChecksum_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.PatternFlowGreChecksum_Choice_Enum,oneof" json:"choice,omitempty"` + // A system generated checksum value + // default = Generated.Enum.good + Generated *PatternFlowGreChecksum_Generated_Enum `protobuf:"varint,2,opt,name=generated,proto3,enum=otg.PatternFlowGreChecksum_Generated_Enum,oneof" json:"generated,omitempty"` + // A custom checksum value + Custom *uint32 `protobuf:"varint,3,opt,name=custom,proto3,oneof" json:"custom,omitempty"` +} + +func (x *PatternFlowGreChecksum) Reset() { + *x = PatternFlowGreChecksum{} + if protoimpl.UnsafeEnabled { + mi := &file_otg_proto_msgTypes[625] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *PatternFlowGreChecksum) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PatternFlowGreChecksum) ProtoMessage() {} + +func (x *PatternFlowGreChecksum) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[625] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use PatternFlowGreChecksum.ProtoReflect.Descriptor instead. +func (*PatternFlowGreChecksum) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{625} +} + +func (x *PatternFlowGreChecksum) GetChoice() PatternFlowGreChecksum_Choice_Enum { + if x != nil && x.Choice != nil { + return *x.Choice + } + return PatternFlowGreChecksum_Choice_unspecified +} + +func (x *PatternFlowGreChecksum) GetGenerated() PatternFlowGreChecksum_Generated_Enum { + if x != nil && x.Generated != nil { + return *x.Generated + } + return PatternFlowGreChecksum_Generated_unspecified +} + +func (x *PatternFlowGreChecksum) GetCustom() uint32 { + if x != nil && x.Custom != nil { + return *x.Custom + } + return 0 +} + // integer counter pattern -type PatternFlowArpOperationCounter struct { +type PatternFlowGreReserved1Counter struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // Description missing in models - // default = 1 + // default = 0 Start *uint32 `protobuf:"varint,1,opt,name=start,proto3,oneof" json:"start,omitempty"` // Description missing in models // default = 1 @@ -73672,23 +72846,23 @@ type PatternFlowArpOperationCounter struct { Count *uint32 `protobuf:"varint,3,opt,name=count,proto3,oneof" json:"count,omitempty"` } -func (x *PatternFlowArpOperationCounter) Reset() { - *x = PatternFlowArpOperationCounter{} +func (x *PatternFlowGreReserved1Counter) Reset() { + *x = PatternFlowGreReserved1Counter{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[663] + mi := &file_otg_proto_msgTypes[626] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowArpOperationCounter) String() string { +func (x *PatternFlowGreReserved1Counter) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowArpOperationCounter) ProtoMessage() {} +func (*PatternFlowGreReserved1Counter) ProtoMessage() {} -func (x *PatternFlowArpOperationCounter) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[663] +func (x *PatternFlowGreReserved1Counter) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[626] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -73699,26 +72873,26 @@ func (x *PatternFlowArpOperationCounter) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use PatternFlowArpOperationCounter.ProtoReflect.Descriptor instead. -func (*PatternFlowArpOperationCounter) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{663} +// Deprecated: Use PatternFlowGreReserved1Counter.ProtoReflect.Descriptor instead. +func (*PatternFlowGreReserved1Counter) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{626} } -func (x *PatternFlowArpOperationCounter) GetStart() uint32 { +func (x *PatternFlowGreReserved1Counter) GetStart() uint32 { if x != nil && x.Start != nil { return *x.Start } return 0 } -func (x *PatternFlowArpOperationCounter) GetStep() uint32 { +func (x *PatternFlowGreReserved1Counter) GetStep() uint32 { if x != nil && x.Step != nil { return *x.Step } return 0 } -func (x *PatternFlowArpOperationCounter) GetCount() uint32 { +func (x *PatternFlowGreReserved1Counter) GetCount() uint32 { if x != nil && x.Count != nil { return *x.Count } @@ -73728,7 +72902,7 @@ func (x *PatternFlowArpOperationCounter) GetCount() uint32 { // Metric tag can be used to enable tracking portion of or all bits in a corresponding // header field for metrics per each applicable value. These would appear as tagged // metrics in corresponding flow metrics. -type PatternFlowArpOperationMetricTag struct { +type PatternFlowGreReserved1MetricTag struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields @@ -73746,23 +72920,23 @@ type PatternFlowArpOperationMetricTag struct { Length *uint32 `protobuf:"varint,3,opt,name=length,proto3,oneof" json:"length,omitempty"` } -func (x *PatternFlowArpOperationMetricTag) Reset() { - *x = PatternFlowArpOperationMetricTag{} +func (x *PatternFlowGreReserved1MetricTag) Reset() { + *x = PatternFlowGreReserved1MetricTag{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[664] + mi := &file_otg_proto_msgTypes[627] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowArpOperationMetricTag) String() string { +func (x *PatternFlowGreReserved1MetricTag) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowArpOperationMetricTag) ProtoMessage() {} +func (*PatternFlowGreReserved1MetricTag) ProtoMessage() {} -func (x *PatternFlowArpOperationMetricTag) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[664] +func (x *PatternFlowGreReserved1MetricTag) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[627] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -73773,74 +72947,74 @@ func (x *PatternFlowArpOperationMetricTag) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use PatternFlowArpOperationMetricTag.ProtoReflect.Descriptor instead. -func (*PatternFlowArpOperationMetricTag) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{664} +// Deprecated: Use PatternFlowGreReserved1MetricTag.ProtoReflect.Descriptor instead. +func (*PatternFlowGreReserved1MetricTag) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{627} } -func (x *PatternFlowArpOperationMetricTag) GetName() string { +func (x *PatternFlowGreReserved1MetricTag) GetName() string { if x != nil && x.Name != nil { return *x.Name } return "" } -func (x *PatternFlowArpOperationMetricTag) GetOffset() uint32 { +func (x *PatternFlowGreReserved1MetricTag) GetOffset() uint32 { if x != nil && x.Offset != nil { return *x.Offset } return 0 } -func (x *PatternFlowArpOperationMetricTag) GetLength() uint32 { +func (x *PatternFlowGreReserved1MetricTag) GetLength() uint32 { if x != nil && x.Length != nil { return *x.Length } return 0 } -// The operation that the sender is performing -type PatternFlowArpOperation struct { +// Optional reserved field. Only present if the checksum_present bit is set. +type PatternFlowGreReserved1 struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // Description missing in models // default = Choice.Enum.value - Choice *PatternFlowArpOperation_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.PatternFlowArpOperation_Choice_Enum,oneof" json:"choice,omitempty"` + Choice *PatternFlowGreReserved1_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.PatternFlowGreReserved1_Choice_Enum,oneof" json:"choice,omitempty"` // Description missing in models - // default = 1 + // default = 0 Value *uint32 `protobuf:"varint,2,opt,name=value,proto3,oneof" json:"value,omitempty"` // Description missing in models - // default = [1] + // default = [0] Values []uint32 `protobuf:"varint,3,rep,packed,name=values,proto3" json:"values,omitempty"` // Description missing in models - Increment *PatternFlowArpOperationCounter `protobuf:"bytes,5,opt,name=increment,proto3" json:"increment,omitempty"` + Increment *PatternFlowGreReserved1Counter `protobuf:"bytes,5,opt,name=increment,proto3" json:"increment,omitempty"` // Description missing in models - Decrement *PatternFlowArpOperationCounter `protobuf:"bytes,6,opt,name=decrement,proto3" json:"decrement,omitempty"` + Decrement *PatternFlowGreReserved1Counter `protobuf:"bytes,6,opt,name=decrement,proto3" json:"decrement,omitempty"` // One or more metric tags can be used to enable tracking portion of or all bits in // a corresponding header field for metrics per each applicable value. These would appear // as tagged metrics in corresponding flow metrics. - MetricTags []*PatternFlowArpOperationMetricTag `protobuf:"bytes,7,rep,name=metric_tags,json=metricTags,proto3" json:"metric_tags,omitempty"` + MetricTags []*PatternFlowGreReserved1MetricTag `protobuf:"bytes,7,rep,name=metric_tags,json=metricTags,proto3" json:"metric_tags,omitempty"` } -func (x *PatternFlowArpOperation) Reset() { - *x = PatternFlowArpOperation{} +func (x *PatternFlowGreReserved1) Reset() { + *x = PatternFlowGreReserved1{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[665] + mi := &file_otg_proto_msgTypes[628] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowArpOperation) String() string { +func (x *PatternFlowGreReserved1) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowArpOperation) ProtoMessage() {} +func (*PatternFlowGreReserved1) ProtoMessage() {} -func (x *PatternFlowArpOperation) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[665] +func (x *PatternFlowGreReserved1) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[628] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -73851,87 +73025,87 @@ func (x *PatternFlowArpOperation) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use PatternFlowArpOperation.ProtoReflect.Descriptor instead. -func (*PatternFlowArpOperation) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{665} +// Deprecated: Use PatternFlowGreReserved1.ProtoReflect.Descriptor instead. +func (*PatternFlowGreReserved1) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{628} } -func (x *PatternFlowArpOperation) GetChoice() PatternFlowArpOperation_Choice_Enum { +func (x *PatternFlowGreReserved1) GetChoice() PatternFlowGreReserved1_Choice_Enum { if x != nil && x.Choice != nil { return *x.Choice } - return PatternFlowArpOperation_Choice_unspecified + return PatternFlowGreReserved1_Choice_unspecified } -func (x *PatternFlowArpOperation) GetValue() uint32 { +func (x *PatternFlowGreReserved1) GetValue() uint32 { if x != nil && x.Value != nil { return *x.Value } return 0 } -func (x *PatternFlowArpOperation) GetValues() []uint32 { +func (x *PatternFlowGreReserved1) GetValues() []uint32 { if x != nil { return x.Values } return nil } -func (x *PatternFlowArpOperation) GetIncrement() *PatternFlowArpOperationCounter { +func (x *PatternFlowGreReserved1) GetIncrement() *PatternFlowGreReserved1Counter { if x != nil { return x.Increment } return nil } -func (x *PatternFlowArpOperation) GetDecrement() *PatternFlowArpOperationCounter { +func (x *PatternFlowGreReserved1) GetDecrement() *PatternFlowGreReserved1Counter { if x != nil { return x.Decrement } return nil } -func (x *PatternFlowArpOperation) GetMetricTags() []*PatternFlowArpOperationMetricTag { +func (x *PatternFlowGreReserved1) GetMetricTags() []*PatternFlowGreReserved1MetricTag { if x != nil { return x.MetricTags } return nil } -// mac counter pattern -type PatternFlowArpSenderHardwareAddrCounter struct { +// integer counter pattern +type PatternFlowGtpv1VersionCounter struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // Description missing in models - // default = 00:00:00:00:00:00 - Start *string `protobuf:"bytes,1,opt,name=start,proto3,oneof" json:"start,omitempty"` + // default = 1 + Start *uint32 `protobuf:"varint,1,opt,name=start,proto3,oneof" json:"start,omitempty"` // Description missing in models - // default = 00:00:00:00:00:01 - Step *string `protobuf:"bytes,2,opt,name=step,proto3,oneof" json:"step,omitempty"` + // default = 1 + Step *uint32 `protobuf:"varint,2,opt,name=step,proto3,oneof" json:"step,omitempty"` // Description missing in models // default = 1 Count *uint32 `protobuf:"varint,3,opt,name=count,proto3,oneof" json:"count,omitempty"` } -func (x *PatternFlowArpSenderHardwareAddrCounter) Reset() { - *x = PatternFlowArpSenderHardwareAddrCounter{} +func (x *PatternFlowGtpv1VersionCounter) Reset() { + *x = PatternFlowGtpv1VersionCounter{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[666] + mi := &file_otg_proto_msgTypes[629] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowArpSenderHardwareAddrCounter) String() string { +func (x *PatternFlowGtpv1VersionCounter) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowArpSenderHardwareAddrCounter) ProtoMessage() {} +func (*PatternFlowGtpv1VersionCounter) ProtoMessage() {} -func (x *PatternFlowArpSenderHardwareAddrCounter) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[666] +func (x *PatternFlowGtpv1VersionCounter) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[629] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -73942,26 +73116,26 @@ func (x *PatternFlowArpSenderHardwareAddrCounter) ProtoReflect() protoreflect.Me return mi.MessageOf(x) } -// Deprecated: Use PatternFlowArpSenderHardwareAddrCounter.ProtoReflect.Descriptor instead. -func (*PatternFlowArpSenderHardwareAddrCounter) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{666} +// Deprecated: Use PatternFlowGtpv1VersionCounter.ProtoReflect.Descriptor instead. +func (*PatternFlowGtpv1VersionCounter) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{629} } -func (x *PatternFlowArpSenderHardwareAddrCounter) GetStart() string { +func (x *PatternFlowGtpv1VersionCounter) GetStart() uint32 { if x != nil && x.Start != nil { return *x.Start } - return "" + return 0 } -func (x *PatternFlowArpSenderHardwareAddrCounter) GetStep() string { +func (x *PatternFlowGtpv1VersionCounter) GetStep() uint32 { if x != nil && x.Step != nil { return *x.Step } - return "" + return 0 } -func (x *PatternFlowArpSenderHardwareAddrCounter) GetCount() uint32 { +func (x *PatternFlowGtpv1VersionCounter) GetCount() uint32 { if x != nil && x.Count != nil { return *x.Count } @@ -73971,7 +73145,7 @@ func (x *PatternFlowArpSenderHardwareAddrCounter) GetCount() uint32 { // Metric tag can be used to enable tracking portion of or all bits in a corresponding // header field for metrics per each applicable value. These would appear as tagged // metrics in corresponding flow metrics. -type PatternFlowArpSenderHardwareAddrMetricTag struct { +type PatternFlowGtpv1VersionMetricTag struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields @@ -73985,27 +73159,27 @@ type PatternFlowArpSenderHardwareAddrMetricTag struct { Offset *uint32 `protobuf:"varint,2,opt,name=offset,proto3,oneof" json:"offset,omitempty"` // Number of bits to track for metrics starting from configured offset of corresponding // header field - // default = 48 + // default = 3 Length *uint32 `protobuf:"varint,3,opt,name=length,proto3,oneof" json:"length,omitempty"` } -func (x *PatternFlowArpSenderHardwareAddrMetricTag) Reset() { - *x = PatternFlowArpSenderHardwareAddrMetricTag{} +func (x *PatternFlowGtpv1VersionMetricTag) Reset() { + *x = PatternFlowGtpv1VersionMetricTag{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[667] + mi := &file_otg_proto_msgTypes[630] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowArpSenderHardwareAddrMetricTag) String() string { +func (x *PatternFlowGtpv1VersionMetricTag) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowArpSenderHardwareAddrMetricTag) ProtoMessage() {} +func (*PatternFlowGtpv1VersionMetricTag) ProtoMessage() {} -func (x *PatternFlowArpSenderHardwareAddrMetricTag) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[667] +func (x *PatternFlowGtpv1VersionMetricTag) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[630] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -74016,74 +73190,74 @@ func (x *PatternFlowArpSenderHardwareAddrMetricTag) ProtoReflect() protoreflect. return mi.MessageOf(x) } -// Deprecated: Use PatternFlowArpSenderHardwareAddrMetricTag.ProtoReflect.Descriptor instead. -func (*PatternFlowArpSenderHardwareAddrMetricTag) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{667} +// Deprecated: Use PatternFlowGtpv1VersionMetricTag.ProtoReflect.Descriptor instead. +func (*PatternFlowGtpv1VersionMetricTag) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{630} } -func (x *PatternFlowArpSenderHardwareAddrMetricTag) GetName() string { +func (x *PatternFlowGtpv1VersionMetricTag) GetName() string { if x != nil && x.Name != nil { return *x.Name } return "" } -func (x *PatternFlowArpSenderHardwareAddrMetricTag) GetOffset() uint32 { +func (x *PatternFlowGtpv1VersionMetricTag) GetOffset() uint32 { if x != nil && x.Offset != nil { return *x.Offset } return 0 } -func (x *PatternFlowArpSenderHardwareAddrMetricTag) GetLength() uint32 { +func (x *PatternFlowGtpv1VersionMetricTag) GetLength() uint32 { if x != nil && x.Length != nil { return *x.Length } return 0 } -// Media address of the sender -type PatternFlowArpSenderHardwareAddr struct { +// GTPv1 version +type PatternFlowGtpv1Version struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // Description missing in models // default = Choice.Enum.value - Choice *PatternFlowArpSenderHardwareAddr_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.PatternFlowArpSenderHardwareAddr_Choice_Enum,oneof" json:"choice,omitempty"` + Choice *PatternFlowGtpv1Version_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.PatternFlowGtpv1Version_Choice_Enum,oneof" json:"choice,omitempty"` // Description missing in models - // default = 00:00:00:00:00:00 - Value *string `protobuf:"bytes,2,opt,name=value,proto3,oneof" json:"value,omitempty"` + // default = 1 + Value *uint32 `protobuf:"varint,2,opt,name=value,proto3,oneof" json:"value,omitempty"` // Description missing in models - // default = ['00:00:00:00:00:00'] - Values []string `protobuf:"bytes,3,rep,name=values,proto3" json:"values,omitempty"` + // default = [1] + Values []uint32 `protobuf:"varint,3,rep,packed,name=values,proto3" json:"values,omitempty"` // Description missing in models - Increment *PatternFlowArpSenderHardwareAddrCounter `protobuf:"bytes,5,opt,name=increment,proto3" json:"increment,omitempty"` + Increment *PatternFlowGtpv1VersionCounter `protobuf:"bytes,5,opt,name=increment,proto3" json:"increment,omitempty"` // Description missing in models - Decrement *PatternFlowArpSenderHardwareAddrCounter `protobuf:"bytes,6,opt,name=decrement,proto3" json:"decrement,omitempty"` + Decrement *PatternFlowGtpv1VersionCounter `protobuf:"bytes,6,opt,name=decrement,proto3" json:"decrement,omitempty"` // One or more metric tags can be used to enable tracking portion of or all bits in // a corresponding header field for metrics per each applicable value. These would appear // as tagged metrics in corresponding flow metrics. - MetricTags []*PatternFlowArpSenderHardwareAddrMetricTag `protobuf:"bytes,7,rep,name=metric_tags,json=metricTags,proto3" json:"metric_tags,omitempty"` + MetricTags []*PatternFlowGtpv1VersionMetricTag `protobuf:"bytes,7,rep,name=metric_tags,json=metricTags,proto3" json:"metric_tags,omitempty"` } -func (x *PatternFlowArpSenderHardwareAddr) Reset() { - *x = PatternFlowArpSenderHardwareAddr{} +func (x *PatternFlowGtpv1Version) Reset() { + *x = PatternFlowGtpv1Version{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[668] + mi := &file_otg_proto_msgTypes[631] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowArpSenderHardwareAddr) String() string { +func (x *PatternFlowGtpv1Version) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowArpSenderHardwareAddr) ProtoMessage() {} +func (*PatternFlowGtpv1Version) ProtoMessage() {} -func (x *PatternFlowArpSenderHardwareAddr) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[668] +func (x *PatternFlowGtpv1Version) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[631] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -74094,87 +73268,87 @@ func (x *PatternFlowArpSenderHardwareAddr) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use PatternFlowArpSenderHardwareAddr.ProtoReflect.Descriptor instead. -func (*PatternFlowArpSenderHardwareAddr) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{668} +// Deprecated: Use PatternFlowGtpv1Version.ProtoReflect.Descriptor instead. +func (*PatternFlowGtpv1Version) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{631} } -func (x *PatternFlowArpSenderHardwareAddr) GetChoice() PatternFlowArpSenderHardwareAddr_Choice_Enum { +func (x *PatternFlowGtpv1Version) GetChoice() PatternFlowGtpv1Version_Choice_Enum { if x != nil && x.Choice != nil { return *x.Choice } - return PatternFlowArpSenderHardwareAddr_Choice_unspecified + return PatternFlowGtpv1Version_Choice_unspecified } -func (x *PatternFlowArpSenderHardwareAddr) GetValue() string { +func (x *PatternFlowGtpv1Version) GetValue() uint32 { if x != nil && x.Value != nil { return *x.Value } - return "" + return 0 } -func (x *PatternFlowArpSenderHardwareAddr) GetValues() []string { +func (x *PatternFlowGtpv1Version) GetValues() []uint32 { if x != nil { return x.Values } return nil } -func (x *PatternFlowArpSenderHardwareAddr) GetIncrement() *PatternFlowArpSenderHardwareAddrCounter { +func (x *PatternFlowGtpv1Version) GetIncrement() *PatternFlowGtpv1VersionCounter { if x != nil { return x.Increment } return nil } -func (x *PatternFlowArpSenderHardwareAddr) GetDecrement() *PatternFlowArpSenderHardwareAddrCounter { +func (x *PatternFlowGtpv1Version) GetDecrement() *PatternFlowGtpv1VersionCounter { if x != nil { return x.Decrement } return nil } -func (x *PatternFlowArpSenderHardwareAddr) GetMetricTags() []*PatternFlowArpSenderHardwareAddrMetricTag { +func (x *PatternFlowGtpv1Version) GetMetricTags() []*PatternFlowGtpv1VersionMetricTag { if x != nil { return x.MetricTags } return nil } -// ipv4 counter pattern -type PatternFlowArpSenderProtocolAddrCounter struct { +// integer counter pattern +type PatternFlowGtpv1ProtocolTypeCounter struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // Description missing in models - // default = 0.0.0.0 - Start *string `protobuf:"bytes,1,opt,name=start,proto3,oneof" json:"start,omitempty"` + // default = 1 + Start *uint32 `protobuf:"varint,1,opt,name=start,proto3,oneof" json:"start,omitempty"` // Description missing in models - // default = 0.0.0.1 - Step *string `protobuf:"bytes,2,opt,name=step,proto3,oneof" json:"step,omitempty"` + // default = 1 + Step *uint32 `protobuf:"varint,2,opt,name=step,proto3,oneof" json:"step,omitempty"` // Description missing in models // default = 1 Count *uint32 `protobuf:"varint,3,opt,name=count,proto3,oneof" json:"count,omitempty"` } -func (x *PatternFlowArpSenderProtocolAddrCounter) Reset() { - *x = PatternFlowArpSenderProtocolAddrCounter{} +func (x *PatternFlowGtpv1ProtocolTypeCounter) Reset() { + *x = PatternFlowGtpv1ProtocolTypeCounter{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[669] + mi := &file_otg_proto_msgTypes[632] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowArpSenderProtocolAddrCounter) String() string { +func (x *PatternFlowGtpv1ProtocolTypeCounter) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowArpSenderProtocolAddrCounter) ProtoMessage() {} +func (*PatternFlowGtpv1ProtocolTypeCounter) ProtoMessage() {} -func (x *PatternFlowArpSenderProtocolAddrCounter) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[669] +func (x *PatternFlowGtpv1ProtocolTypeCounter) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[632] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -74185,26 +73359,26 @@ func (x *PatternFlowArpSenderProtocolAddrCounter) ProtoReflect() protoreflect.Me return mi.MessageOf(x) } -// Deprecated: Use PatternFlowArpSenderProtocolAddrCounter.ProtoReflect.Descriptor instead. -func (*PatternFlowArpSenderProtocolAddrCounter) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{669} -} - -func (x *PatternFlowArpSenderProtocolAddrCounter) GetStart() string { +// Deprecated: Use PatternFlowGtpv1ProtocolTypeCounter.ProtoReflect.Descriptor instead. +func (*PatternFlowGtpv1ProtocolTypeCounter) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{632} +} + +func (x *PatternFlowGtpv1ProtocolTypeCounter) GetStart() uint32 { if x != nil && x.Start != nil { return *x.Start } - return "" + return 0 } -func (x *PatternFlowArpSenderProtocolAddrCounter) GetStep() string { +func (x *PatternFlowGtpv1ProtocolTypeCounter) GetStep() uint32 { if x != nil && x.Step != nil { return *x.Step } - return "" + return 0 } -func (x *PatternFlowArpSenderProtocolAddrCounter) GetCount() uint32 { +func (x *PatternFlowGtpv1ProtocolTypeCounter) GetCount() uint32 { if x != nil && x.Count != nil { return *x.Count } @@ -74214,7 +73388,7 @@ func (x *PatternFlowArpSenderProtocolAddrCounter) GetCount() uint32 { // Metric tag can be used to enable tracking portion of or all bits in a corresponding // header field for metrics per each applicable value. These would appear as tagged // metrics in corresponding flow metrics. -type PatternFlowArpSenderProtocolAddrMetricTag struct { +type PatternFlowGtpv1ProtocolTypeMetricTag struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields @@ -74228,27 +73402,27 @@ type PatternFlowArpSenderProtocolAddrMetricTag struct { Offset *uint32 `protobuf:"varint,2,opt,name=offset,proto3,oneof" json:"offset,omitempty"` // Number of bits to track for metrics starting from configured offset of corresponding // header field - // default = 32 + // default = 1 Length *uint32 `protobuf:"varint,3,opt,name=length,proto3,oneof" json:"length,omitempty"` } -func (x *PatternFlowArpSenderProtocolAddrMetricTag) Reset() { - *x = PatternFlowArpSenderProtocolAddrMetricTag{} +func (x *PatternFlowGtpv1ProtocolTypeMetricTag) Reset() { + *x = PatternFlowGtpv1ProtocolTypeMetricTag{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[670] + mi := &file_otg_proto_msgTypes[633] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowArpSenderProtocolAddrMetricTag) String() string { +func (x *PatternFlowGtpv1ProtocolTypeMetricTag) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowArpSenderProtocolAddrMetricTag) ProtoMessage() {} +func (*PatternFlowGtpv1ProtocolTypeMetricTag) ProtoMessage() {} -func (x *PatternFlowArpSenderProtocolAddrMetricTag) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[670] +func (x *PatternFlowGtpv1ProtocolTypeMetricTag) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[633] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -74259,74 +73433,74 @@ func (x *PatternFlowArpSenderProtocolAddrMetricTag) ProtoReflect() protoreflect. return mi.MessageOf(x) } -// Deprecated: Use PatternFlowArpSenderProtocolAddrMetricTag.ProtoReflect.Descriptor instead. -func (*PatternFlowArpSenderProtocolAddrMetricTag) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{670} +// Deprecated: Use PatternFlowGtpv1ProtocolTypeMetricTag.ProtoReflect.Descriptor instead. +func (*PatternFlowGtpv1ProtocolTypeMetricTag) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{633} } -func (x *PatternFlowArpSenderProtocolAddrMetricTag) GetName() string { +func (x *PatternFlowGtpv1ProtocolTypeMetricTag) GetName() string { if x != nil && x.Name != nil { return *x.Name } return "" } -func (x *PatternFlowArpSenderProtocolAddrMetricTag) GetOffset() uint32 { +func (x *PatternFlowGtpv1ProtocolTypeMetricTag) GetOffset() uint32 { if x != nil && x.Offset != nil { return *x.Offset } return 0 } -func (x *PatternFlowArpSenderProtocolAddrMetricTag) GetLength() uint32 { +func (x *PatternFlowGtpv1ProtocolTypeMetricTag) GetLength() uint32 { if x != nil && x.Length != nil { return *x.Length } return 0 } -// Internetwork address of the sender -type PatternFlowArpSenderProtocolAddr struct { +// Protocol type, GTP is 1, GTP' is 0 +type PatternFlowGtpv1ProtocolType struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // Description missing in models // default = Choice.Enum.value - Choice *PatternFlowArpSenderProtocolAddr_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.PatternFlowArpSenderProtocolAddr_Choice_Enum,oneof" json:"choice,omitempty"` + Choice *PatternFlowGtpv1ProtocolType_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.PatternFlowGtpv1ProtocolType_Choice_Enum,oneof" json:"choice,omitempty"` // Description missing in models - // default = 0.0.0.0 - Value *string `protobuf:"bytes,2,opt,name=value,proto3,oneof" json:"value,omitempty"` + // default = 1 + Value *uint32 `protobuf:"varint,2,opt,name=value,proto3,oneof" json:"value,omitempty"` // Description missing in models - // default = ['0.0.0.0'] - Values []string `protobuf:"bytes,3,rep,name=values,proto3" json:"values,omitempty"` + // default = [1] + Values []uint32 `protobuf:"varint,3,rep,packed,name=values,proto3" json:"values,omitempty"` // Description missing in models - Increment *PatternFlowArpSenderProtocolAddrCounter `protobuf:"bytes,5,opt,name=increment,proto3" json:"increment,omitempty"` + Increment *PatternFlowGtpv1ProtocolTypeCounter `protobuf:"bytes,5,opt,name=increment,proto3" json:"increment,omitempty"` // Description missing in models - Decrement *PatternFlowArpSenderProtocolAddrCounter `protobuf:"bytes,6,opt,name=decrement,proto3" json:"decrement,omitempty"` + Decrement *PatternFlowGtpv1ProtocolTypeCounter `protobuf:"bytes,6,opt,name=decrement,proto3" json:"decrement,omitempty"` // One or more metric tags can be used to enable tracking portion of or all bits in // a corresponding header field for metrics per each applicable value. These would appear // as tagged metrics in corresponding flow metrics. - MetricTags []*PatternFlowArpSenderProtocolAddrMetricTag `protobuf:"bytes,7,rep,name=metric_tags,json=metricTags,proto3" json:"metric_tags,omitempty"` + MetricTags []*PatternFlowGtpv1ProtocolTypeMetricTag `protobuf:"bytes,7,rep,name=metric_tags,json=metricTags,proto3" json:"metric_tags,omitempty"` } -func (x *PatternFlowArpSenderProtocolAddr) Reset() { - *x = PatternFlowArpSenderProtocolAddr{} +func (x *PatternFlowGtpv1ProtocolType) Reset() { + *x = PatternFlowGtpv1ProtocolType{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[671] + mi := &file_otg_proto_msgTypes[634] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowArpSenderProtocolAddr) String() string { +func (x *PatternFlowGtpv1ProtocolType) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowArpSenderProtocolAddr) ProtoMessage() {} +func (*PatternFlowGtpv1ProtocolType) ProtoMessage() {} -func (x *PatternFlowArpSenderProtocolAddr) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[671] +func (x *PatternFlowGtpv1ProtocolType) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[634] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -74337,87 +73511,87 @@ func (x *PatternFlowArpSenderProtocolAddr) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use PatternFlowArpSenderProtocolAddr.ProtoReflect.Descriptor instead. -func (*PatternFlowArpSenderProtocolAddr) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{671} +// Deprecated: Use PatternFlowGtpv1ProtocolType.ProtoReflect.Descriptor instead. +func (*PatternFlowGtpv1ProtocolType) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{634} } -func (x *PatternFlowArpSenderProtocolAddr) GetChoice() PatternFlowArpSenderProtocolAddr_Choice_Enum { +func (x *PatternFlowGtpv1ProtocolType) GetChoice() PatternFlowGtpv1ProtocolType_Choice_Enum { if x != nil && x.Choice != nil { return *x.Choice } - return PatternFlowArpSenderProtocolAddr_Choice_unspecified + return PatternFlowGtpv1ProtocolType_Choice_unspecified } -func (x *PatternFlowArpSenderProtocolAddr) GetValue() string { +func (x *PatternFlowGtpv1ProtocolType) GetValue() uint32 { if x != nil && x.Value != nil { return *x.Value } - return "" + return 0 } -func (x *PatternFlowArpSenderProtocolAddr) GetValues() []string { +func (x *PatternFlowGtpv1ProtocolType) GetValues() []uint32 { if x != nil { return x.Values } return nil } -func (x *PatternFlowArpSenderProtocolAddr) GetIncrement() *PatternFlowArpSenderProtocolAddrCounter { +func (x *PatternFlowGtpv1ProtocolType) GetIncrement() *PatternFlowGtpv1ProtocolTypeCounter { if x != nil { return x.Increment } return nil } -func (x *PatternFlowArpSenderProtocolAddr) GetDecrement() *PatternFlowArpSenderProtocolAddrCounter { +func (x *PatternFlowGtpv1ProtocolType) GetDecrement() *PatternFlowGtpv1ProtocolTypeCounter { if x != nil { return x.Decrement } return nil } -func (x *PatternFlowArpSenderProtocolAddr) GetMetricTags() []*PatternFlowArpSenderProtocolAddrMetricTag { +func (x *PatternFlowGtpv1ProtocolType) GetMetricTags() []*PatternFlowGtpv1ProtocolTypeMetricTag { if x != nil { return x.MetricTags } return nil } -// mac counter pattern -type PatternFlowArpTargetHardwareAddrCounter struct { +// integer counter pattern +type PatternFlowGtpv1ReservedCounter struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // Description missing in models - // default = 00:00:00:00:00:00 - Start *string `protobuf:"bytes,1,opt,name=start,proto3,oneof" json:"start,omitempty"` + // default = 0 + Start *uint32 `protobuf:"varint,1,opt,name=start,proto3,oneof" json:"start,omitempty"` // Description missing in models - // default = 00:00:00:00:00:01 - Step *string `protobuf:"bytes,2,opt,name=step,proto3,oneof" json:"step,omitempty"` + // default = 1 + Step *uint32 `protobuf:"varint,2,opt,name=step,proto3,oneof" json:"step,omitempty"` // Description missing in models // default = 1 Count *uint32 `protobuf:"varint,3,opt,name=count,proto3,oneof" json:"count,omitempty"` } -func (x *PatternFlowArpTargetHardwareAddrCounter) Reset() { - *x = PatternFlowArpTargetHardwareAddrCounter{} +func (x *PatternFlowGtpv1ReservedCounter) Reset() { + *x = PatternFlowGtpv1ReservedCounter{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[672] + mi := &file_otg_proto_msgTypes[635] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowArpTargetHardwareAddrCounter) String() string { +func (x *PatternFlowGtpv1ReservedCounter) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowArpTargetHardwareAddrCounter) ProtoMessage() {} +func (*PatternFlowGtpv1ReservedCounter) ProtoMessage() {} -func (x *PatternFlowArpTargetHardwareAddrCounter) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[672] +func (x *PatternFlowGtpv1ReservedCounter) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[635] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -74428,26 +73602,26 @@ func (x *PatternFlowArpTargetHardwareAddrCounter) ProtoReflect() protoreflect.Me return mi.MessageOf(x) } -// Deprecated: Use PatternFlowArpTargetHardwareAddrCounter.ProtoReflect.Descriptor instead. -func (*PatternFlowArpTargetHardwareAddrCounter) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{672} +// Deprecated: Use PatternFlowGtpv1ReservedCounter.ProtoReflect.Descriptor instead. +func (*PatternFlowGtpv1ReservedCounter) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{635} } -func (x *PatternFlowArpTargetHardwareAddrCounter) GetStart() string { +func (x *PatternFlowGtpv1ReservedCounter) GetStart() uint32 { if x != nil && x.Start != nil { return *x.Start } - return "" + return 0 } -func (x *PatternFlowArpTargetHardwareAddrCounter) GetStep() string { +func (x *PatternFlowGtpv1ReservedCounter) GetStep() uint32 { if x != nil && x.Step != nil { return *x.Step } - return "" + return 0 } -func (x *PatternFlowArpTargetHardwareAddrCounter) GetCount() uint32 { +func (x *PatternFlowGtpv1ReservedCounter) GetCount() uint32 { if x != nil && x.Count != nil { return *x.Count } @@ -74457,7 +73631,7 @@ func (x *PatternFlowArpTargetHardwareAddrCounter) GetCount() uint32 { // Metric tag can be used to enable tracking portion of or all bits in a corresponding // header field for metrics per each applicable value. These would appear as tagged // metrics in corresponding flow metrics. -type PatternFlowArpTargetHardwareAddrMetricTag struct { +type PatternFlowGtpv1ReservedMetricTag struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields @@ -74471,27 +73645,27 @@ type PatternFlowArpTargetHardwareAddrMetricTag struct { Offset *uint32 `protobuf:"varint,2,opt,name=offset,proto3,oneof" json:"offset,omitempty"` // Number of bits to track for metrics starting from configured offset of corresponding // header field - // default = 48 + // default = 1 Length *uint32 `protobuf:"varint,3,opt,name=length,proto3,oneof" json:"length,omitempty"` } -func (x *PatternFlowArpTargetHardwareAddrMetricTag) Reset() { - *x = PatternFlowArpTargetHardwareAddrMetricTag{} +func (x *PatternFlowGtpv1ReservedMetricTag) Reset() { + *x = PatternFlowGtpv1ReservedMetricTag{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[673] + mi := &file_otg_proto_msgTypes[636] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowArpTargetHardwareAddrMetricTag) String() string { +func (x *PatternFlowGtpv1ReservedMetricTag) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowArpTargetHardwareAddrMetricTag) ProtoMessage() {} +func (*PatternFlowGtpv1ReservedMetricTag) ProtoMessage() {} -func (x *PatternFlowArpTargetHardwareAddrMetricTag) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[673] +func (x *PatternFlowGtpv1ReservedMetricTag) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[636] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -74502,74 +73676,74 @@ func (x *PatternFlowArpTargetHardwareAddrMetricTag) ProtoReflect() protoreflect. return mi.MessageOf(x) } -// Deprecated: Use PatternFlowArpTargetHardwareAddrMetricTag.ProtoReflect.Descriptor instead. -func (*PatternFlowArpTargetHardwareAddrMetricTag) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{673} +// Deprecated: Use PatternFlowGtpv1ReservedMetricTag.ProtoReflect.Descriptor instead. +func (*PatternFlowGtpv1ReservedMetricTag) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{636} } -func (x *PatternFlowArpTargetHardwareAddrMetricTag) GetName() string { +func (x *PatternFlowGtpv1ReservedMetricTag) GetName() string { if x != nil && x.Name != nil { return *x.Name } return "" } -func (x *PatternFlowArpTargetHardwareAddrMetricTag) GetOffset() uint32 { +func (x *PatternFlowGtpv1ReservedMetricTag) GetOffset() uint32 { if x != nil && x.Offset != nil { return *x.Offset } return 0 } -func (x *PatternFlowArpTargetHardwareAddrMetricTag) GetLength() uint32 { +func (x *PatternFlowGtpv1ReservedMetricTag) GetLength() uint32 { if x != nil && x.Length != nil { return *x.Length } return 0 } -// Media address of the target -type PatternFlowArpTargetHardwareAddr struct { +// Reserved field +type PatternFlowGtpv1Reserved struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // Description missing in models // default = Choice.Enum.value - Choice *PatternFlowArpTargetHardwareAddr_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.PatternFlowArpTargetHardwareAddr_Choice_Enum,oneof" json:"choice,omitempty"` + Choice *PatternFlowGtpv1Reserved_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.PatternFlowGtpv1Reserved_Choice_Enum,oneof" json:"choice,omitempty"` // Description missing in models - // default = 00:00:00:00:00:00 - Value *string `protobuf:"bytes,2,opt,name=value,proto3,oneof" json:"value,omitempty"` + // default = 0 + Value *uint32 `protobuf:"varint,2,opt,name=value,proto3,oneof" json:"value,omitempty"` // Description missing in models - // default = ['00:00:00:00:00:00'] - Values []string `protobuf:"bytes,3,rep,name=values,proto3" json:"values,omitempty"` + // default = [0] + Values []uint32 `protobuf:"varint,3,rep,packed,name=values,proto3" json:"values,omitempty"` // Description missing in models - Increment *PatternFlowArpTargetHardwareAddrCounter `protobuf:"bytes,5,opt,name=increment,proto3" json:"increment,omitempty"` + Increment *PatternFlowGtpv1ReservedCounter `protobuf:"bytes,5,opt,name=increment,proto3" json:"increment,omitempty"` // Description missing in models - Decrement *PatternFlowArpTargetHardwareAddrCounter `protobuf:"bytes,6,opt,name=decrement,proto3" json:"decrement,omitempty"` + Decrement *PatternFlowGtpv1ReservedCounter `protobuf:"bytes,6,opt,name=decrement,proto3" json:"decrement,omitempty"` // One or more metric tags can be used to enable tracking portion of or all bits in // a corresponding header field for metrics per each applicable value. These would appear // as tagged metrics in corresponding flow metrics. - MetricTags []*PatternFlowArpTargetHardwareAddrMetricTag `protobuf:"bytes,7,rep,name=metric_tags,json=metricTags,proto3" json:"metric_tags,omitempty"` + MetricTags []*PatternFlowGtpv1ReservedMetricTag `protobuf:"bytes,7,rep,name=metric_tags,json=metricTags,proto3" json:"metric_tags,omitempty"` } -func (x *PatternFlowArpTargetHardwareAddr) Reset() { - *x = PatternFlowArpTargetHardwareAddr{} +func (x *PatternFlowGtpv1Reserved) Reset() { + *x = PatternFlowGtpv1Reserved{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[674] + mi := &file_otg_proto_msgTypes[637] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowArpTargetHardwareAddr) String() string { +func (x *PatternFlowGtpv1Reserved) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowArpTargetHardwareAddr) ProtoMessage() {} +func (*PatternFlowGtpv1Reserved) ProtoMessage() {} -func (x *PatternFlowArpTargetHardwareAddr) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[674] +func (x *PatternFlowGtpv1Reserved) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[637] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -74580,87 +73754,87 @@ func (x *PatternFlowArpTargetHardwareAddr) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use PatternFlowArpTargetHardwareAddr.ProtoReflect.Descriptor instead. -func (*PatternFlowArpTargetHardwareAddr) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{674} +// Deprecated: Use PatternFlowGtpv1Reserved.ProtoReflect.Descriptor instead. +func (*PatternFlowGtpv1Reserved) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{637} } -func (x *PatternFlowArpTargetHardwareAddr) GetChoice() PatternFlowArpTargetHardwareAddr_Choice_Enum { +func (x *PatternFlowGtpv1Reserved) GetChoice() PatternFlowGtpv1Reserved_Choice_Enum { if x != nil && x.Choice != nil { return *x.Choice } - return PatternFlowArpTargetHardwareAddr_Choice_unspecified + return PatternFlowGtpv1Reserved_Choice_unspecified } -func (x *PatternFlowArpTargetHardwareAddr) GetValue() string { +func (x *PatternFlowGtpv1Reserved) GetValue() uint32 { if x != nil && x.Value != nil { return *x.Value } - return "" + return 0 } -func (x *PatternFlowArpTargetHardwareAddr) GetValues() []string { +func (x *PatternFlowGtpv1Reserved) GetValues() []uint32 { if x != nil { return x.Values } return nil } -func (x *PatternFlowArpTargetHardwareAddr) GetIncrement() *PatternFlowArpTargetHardwareAddrCounter { +func (x *PatternFlowGtpv1Reserved) GetIncrement() *PatternFlowGtpv1ReservedCounter { if x != nil { return x.Increment } return nil } -func (x *PatternFlowArpTargetHardwareAddr) GetDecrement() *PatternFlowArpTargetHardwareAddrCounter { +func (x *PatternFlowGtpv1Reserved) GetDecrement() *PatternFlowGtpv1ReservedCounter { if x != nil { return x.Decrement } return nil } -func (x *PatternFlowArpTargetHardwareAddr) GetMetricTags() []*PatternFlowArpTargetHardwareAddrMetricTag { +func (x *PatternFlowGtpv1Reserved) GetMetricTags() []*PatternFlowGtpv1ReservedMetricTag { if x != nil { return x.MetricTags } return nil } -// ipv4 counter pattern -type PatternFlowArpTargetProtocolAddrCounter struct { +// integer counter pattern +type PatternFlowGtpv1EFlagCounter struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // Description missing in models - // default = 0.0.0.0 - Start *string `protobuf:"bytes,1,opt,name=start,proto3,oneof" json:"start,omitempty"` + // default = 0 + Start *uint32 `protobuf:"varint,1,opt,name=start,proto3,oneof" json:"start,omitempty"` // Description missing in models - // default = 0.0.0.1 - Step *string `protobuf:"bytes,2,opt,name=step,proto3,oneof" json:"step,omitempty"` + // default = 1 + Step *uint32 `protobuf:"varint,2,opt,name=step,proto3,oneof" json:"step,omitempty"` // Description missing in models // default = 1 Count *uint32 `protobuf:"varint,3,opt,name=count,proto3,oneof" json:"count,omitempty"` } -func (x *PatternFlowArpTargetProtocolAddrCounter) Reset() { - *x = PatternFlowArpTargetProtocolAddrCounter{} +func (x *PatternFlowGtpv1EFlagCounter) Reset() { + *x = PatternFlowGtpv1EFlagCounter{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[675] + mi := &file_otg_proto_msgTypes[638] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowArpTargetProtocolAddrCounter) String() string { +func (x *PatternFlowGtpv1EFlagCounter) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowArpTargetProtocolAddrCounter) ProtoMessage() {} +func (*PatternFlowGtpv1EFlagCounter) ProtoMessage() {} -func (x *PatternFlowArpTargetProtocolAddrCounter) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[675] +func (x *PatternFlowGtpv1EFlagCounter) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[638] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -74671,26 +73845,26 @@ func (x *PatternFlowArpTargetProtocolAddrCounter) ProtoReflect() protoreflect.Me return mi.MessageOf(x) } -// Deprecated: Use PatternFlowArpTargetProtocolAddrCounter.ProtoReflect.Descriptor instead. -func (*PatternFlowArpTargetProtocolAddrCounter) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{675} +// Deprecated: Use PatternFlowGtpv1EFlagCounter.ProtoReflect.Descriptor instead. +func (*PatternFlowGtpv1EFlagCounter) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{638} } -func (x *PatternFlowArpTargetProtocolAddrCounter) GetStart() string { +func (x *PatternFlowGtpv1EFlagCounter) GetStart() uint32 { if x != nil && x.Start != nil { return *x.Start } - return "" + return 0 } -func (x *PatternFlowArpTargetProtocolAddrCounter) GetStep() string { +func (x *PatternFlowGtpv1EFlagCounter) GetStep() uint32 { if x != nil && x.Step != nil { return *x.Step } - return "" + return 0 } -func (x *PatternFlowArpTargetProtocolAddrCounter) GetCount() uint32 { +func (x *PatternFlowGtpv1EFlagCounter) GetCount() uint32 { if x != nil && x.Count != nil { return *x.Count } @@ -74700,7 +73874,7 @@ func (x *PatternFlowArpTargetProtocolAddrCounter) GetCount() uint32 { // Metric tag can be used to enable tracking portion of or all bits in a corresponding // header field for metrics per each applicable value. These would appear as tagged // metrics in corresponding flow metrics. -type PatternFlowArpTargetProtocolAddrMetricTag struct { +type PatternFlowGtpv1EFlagMetricTag struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields @@ -74714,27 +73888,27 @@ type PatternFlowArpTargetProtocolAddrMetricTag struct { Offset *uint32 `protobuf:"varint,2,opt,name=offset,proto3,oneof" json:"offset,omitempty"` // Number of bits to track for metrics starting from configured offset of corresponding // header field - // default = 32 + // default = 1 Length *uint32 `protobuf:"varint,3,opt,name=length,proto3,oneof" json:"length,omitempty"` } -func (x *PatternFlowArpTargetProtocolAddrMetricTag) Reset() { - *x = PatternFlowArpTargetProtocolAddrMetricTag{} +func (x *PatternFlowGtpv1EFlagMetricTag) Reset() { + *x = PatternFlowGtpv1EFlagMetricTag{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[676] + mi := &file_otg_proto_msgTypes[639] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowArpTargetProtocolAddrMetricTag) String() string { +func (x *PatternFlowGtpv1EFlagMetricTag) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowArpTargetProtocolAddrMetricTag) ProtoMessage() {} +func (*PatternFlowGtpv1EFlagMetricTag) ProtoMessage() {} -func (x *PatternFlowArpTargetProtocolAddrMetricTag) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[676] +func (x *PatternFlowGtpv1EFlagMetricTag) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[639] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -74745,74 +73919,74 @@ func (x *PatternFlowArpTargetProtocolAddrMetricTag) ProtoReflect() protoreflect. return mi.MessageOf(x) } -// Deprecated: Use PatternFlowArpTargetProtocolAddrMetricTag.ProtoReflect.Descriptor instead. -func (*PatternFlowArpTargetProtocolAddrMetricTag) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{676} +// Deprecated: Use PatternFlowGtpv1EFlagMetricTag.ProtoReflect.Descriptor instead. +func (*PatternFlowGtpv1EFlagMetricTag) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{639} } -func (x *PatternFlowArpTargetProtocolAddrMetricTag) GetName() string { +func (x *PatternFlowGtpv1EFlagMetricTag) GetName() string { if x != nil && x.Name != nil { return *x.Name } return "" } -func (x *PatternFlowArpTargetProtocolAddrMetricTag) GetOffset() uint32 { +func (x *PatternFlowGtpv1EFlagMetricTag) GetOffset() uint32 { if x != nil && x.Offset != nil { return *x.Offset } return 0 } -func (x *PatternFlowArpTargetProtocolAddrMetricTag) GetLength() uint32 { +func (x *PatternFlowGtpv1EFlagMetricTag) GetLength() uint32 { if x != nil && x.Length != nil { return *x.Length } return 0 } -// Internetwork address of the target -type PatternFlowArpTargetProtocolAddr struct { +// Extension header field present +type PatternFlowGtpv1EFlag struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // Description missing in models // default = Choice.Enum.value - Choice *PatternFlowArpTargetProtocolAddr_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.PatternFlowArpTargetProtocolAddr_Choice_Enum,oneof" json:"choice,omitempty"` + Choice *PatternFlowGtpv1EFlag_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.PatternFlowGtpv1EFlag_Choice_Enum,oneof" json:"choice,omitempty"` // Description missing in models - // default = 0.0.0.0 - Value *string `protobuf:"bytes,2,opt,name=value,proto3,oneof" json:"value,omitempty"` + // default = 0 + Value *uint32 `protobuf:"varint,2,opt,name=value,proto3,oneof" json:"value,omitempty"` // Description missing in models - // default = ['0.0.0.0'] - Values []string `protobuf:"bytes,3,rep,name=values,proto3" json:"values,omitempty"` + // default = [0] + Values []uint32 `protobuf:"varint,3,rep,packed,name=values,proto3" json:"values,omitempty"` // Description missing in models - Increment *PatternFlowArpTargetProtocolAddrCounter `protobuf:"bytes,5,opt,name=increment,proto3" json:"increment,omitempty"` + Increment *PatternFlowGtpv1EFlagCounter `protobuf:"bytes,5,opt,name=increment,proto3" json:"increment,omitempty"` // Description missing in models - Decrement *PatternFlowArpTargetProtocolAddrCounter `protobuf:"bytes,6,opt,name=decrement,proto3" json:"decrement,omitempty"` + Decrement *PatternFlowGtpv1EFlagCounter `protobuf:"bytes,6,opt,name=decrement,proto3" json:"decrement,omitempty"` // One or more metric tags can be used to enable tracking portion of or all bits in // a corresponding header field for metrics per each applicable value. These would appear // as tagged metrics in corresponding flow metrics. - MetricTags []*PatternFlowArpTargetProtocolAddrMetricTag `protobuf:"bytes,7,rep,name=metric_tags,json=metricTags,proto3" json:"metric_tags,omitempty"` + MetricTags []*PatternFlowGtpv1EFlagMetricTag `protobuf:"bytes,7,rep,name=metric_tags,json=metricTags,proto3" json:"metric_tags,omitempty"` } -func (x *PatternFlowArpTargetProtocolAddr) Reset() { - *x = PatternFlowArpTargetProtocolAddr{} +func (x *PatternFlowGtpv1EFlag) Reset() { + *x = PatternFlowGtpv1EFlag{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[677] + mi := &file_otg_proto_msgTypes[640] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowArpTargetProtocolAddr) String() string { +func (x *PatternFlowGtpv1EFlag) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowArpTargetProtocolAddr) ProtoMessage() {} +func (*PatternFlowGtpv1EFlag) ProtoMessage() {} -func (x *PatternFlowArpTargetProtocolAddr) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[677] +func (x *PatternFlowGtpv1EFlag) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[640] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -74823,47 +73997,47 @@ func (x *PatternFlowArpTargetProtocolAddr) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use PatternFlowArpTargetProtocolAddr.ProtoReflect.Descriptor instead. -func (*PatternFlowArpTargetProtocolAddr) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{677} +// Deprecated: Use PatternFlowGtpv1EFlag.ProtoReflect.Descriptor instead. +func (*PatternFlowGtpv1EFlag) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{640} } -func (x *PatternFlowArpTargetProtocolAddr) GetChoice() PatternFlowArpTargetProtocolAddr_Choice_Enum { +func (x *PatternFlowGtpv1EFlag) GetChoice() PatternFlowGtpv1EFlag_Choice_Enum { if x != nil && x.Choice != nil { return *x.Choice } - return PatternFlowArpTargetProtocolAddr_Choice_unspecified + return PatternFlowGtpv1EFlag_Choice_unspecified } -func (x *PatternFlowArpTargetProtocolAddr) GetValue() string { +func (x *PatternFlowGtpv1EFlag) GetValue() uint32 { if x != nil && x.Value != nil { return *x.Value } - return "" + return 0 } -func (x *PatternFlowArpTargetProtocolAddr) GetValues() []string { +func (x *PatternFlowGtpv1EFlag) GetValues() []uint32 { if x != nil { return x.Values } return nil } -func (x *PatternFlowArpTargetProtocolAddr) GetIncrement() *PatternFlowArpTargetProtocolAddrCounter { +func (x *PatternFlowGtpv1EFlag) GetIncrement() *PatternFlowGtpv1EFlagCounter { if x != nil { return x.Increment } return nil } -func (x *PatternFlowArpTargetProtocolAddr) GetDecrement() *PatternFlowArpTargetProtocolAddrCounter { +func (x *PatternFlowGtpv1EFlag) GetDecrement() *PatternFlowGtpv1EFlagCounter { if x != nil { return x.Decrement } return nil } -func (x *PatternFlowArpTargetProtocolAddr) GetMetricTags() []*PatternFlowArpTargetProtocolAddrMetricTag { +func (x *PatternFlowGtpv1EFlag) GetMetricTags() []*PatternFlowGtpv1EFlagMetricTag { if x != nil { return x.MetricTags } @@ -74871,13 +74045,13 @@ func (x *PatternFlowArpTargetProtocolAddr) GetMetricTags() []*PatternFlowArpTarg } // integer counter pattern -type PatternFlowIcmpEchoTypeCounter struct { +type PatternFlowGtpv1SFlagCounter struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // Description missing in models - // default = 8 + // default = 0 Start *uint32 `protobuf:"varint,1,opt,name=start,proto3,oneof" json:"start,omitempty"` // Description missing in models // default = 1 @@ -74887,23 +74061,23 @@ type PatternFlowIcmpEchoTypeCounter struct { Count *uint32 `protobuf:"varint,3,opt,name=count,proto3,oneof" json:"count,omitempty"` } -func (x *PatternFlowIcmpEchoTypeCounter) Reset() { - *x = PatternFlowIcmpEchoTypeCounter{} +func (x *PatternFlowGtpv1SFlagCounter) Reset() { + *x = PatternFlowGtpv1SFlagCounter{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[678] + mi := &file_otg_proto_msgTypes[641] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowIcmpEchoTypeCounter) String() string { +func (x *PatternFlowGtpv1SFlagCounter) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowIcmpEchoTypeCounter) ProtoMessage() {} +func (*PatternFlowGtpv1SFlagCounter) ProtoMessage() {} -func (x *PatternFlowIcmpEchoTypeCounter) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[678] +func (x *PatternFlowGtpv1SFlagCounter) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[641] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -74914,26 +74088,26 @@ func (x *PatternFlowIcmpEchoTypeCounter) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use PatternFlowIcmpEchoTypeCounter.ProtoReflect.Descriptor instead. -func (*PatternFlowIcmpEchoTypeCounter) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{678} +// Deprecated: Use PatternFlowGtpv1SFlagCounter.ProtoReflect.Descriptor instead. +func (*PatternFlowGtpv1SFlagCounter) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{641} } -func (x *PatternFlowIcmpEchoTypeCounter) GetStart() uint32 { +func (x *PatternFlowGtpv1SFlagCounter) GetStart() uint32 { if x != nil && x.Start != nil { return *x.Start } return 0 } -func (x *PatternFlowIcmpEchoTypeCounter) GetStep() uint32 { +func (x *PatternFlowGtpv1SFlagCounter) GetStep() uint32 { if x != nil && x.Step != nil { return *x.Step } return 0 } -func (x *PatternFlowIcmpEchoTypeCounter) GetCount() uint32 { +func (x *PatternFlowGtpv1SFlagCounter) GetCount() uint32 { if x != nil && x.Count != nil { return *x.Count } @@ -74943,7 +74117,7 @@ func (x *PatternFlowIcmpEchoTypeCounter) GetCount() uint32 { // Metric tag can be used to enable tracking portion of or all bits in a corresponding // header field for metrics per each applicable value. These would appear as tagged // metrics in corresponding flow metrics. -type PatternFlowIcmpEchoTypeMetricTag struct { +type PatternFlowGtpv1SFlagMetricTag struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields @@ -74957,27 +74131,27 @@ type PatternFlowIcmpEchoTypeMetricTag struct { Offset *uint32 `protobuf:"varint,2,opt,name=offset,proto3,oneof" json:"offset,omitempty"` // Number of bits to track for metrics starting from configured offset of corresponding // header field - // default = 8 + // default = 1 Length *uint32 `protobuf:"varint,3,opt,name=length,proto3,oneof" json:"length,omitempty"` } -func (x *PatternFlowIcmpEchoTypeMetricTag) Reset() { - *x = PatternFlowIcmpEchoTypeMetricTag{} +func (x *PatternFlowGtpv1SFlagMetricTag) Reset() { + *x = PatternFlowGtpv1SFlagMetricTag{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[679] + mi := &file_otg_proto_msgTypes[642] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowIcmpEchoTypeMetricTag) String() string { +func (x *PatternFlowGtpv1SFlagMetricTag) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowIcmpEchoTypeMetricTag) ProtoMessage() {} +func (*PatternFlowGtpv1SFlagMetricTag) ProtoMessage() {} -func (x *PatternFlowIcmpEchoTypeMetricTag) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[679] +func (x *PatternFlowGtpv1SFlagMetricTag) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[642] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -74988,74 +74162,74 @@ func (x *PatternFlowIcmpEchoTypeMetricTag) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use PatternFlowIcmpEchoTypeMetricTag.ProtoReflect.Descriptor instead. -func (*PatternFlowIcmpEchoTypeMetricTag) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{679} +// Deprecated: Use PatternFlowGtpv1SFlagMetricTag.ProtoReflect.Descriptor instead. +func (*PatternFlowGtpv1SFlagMetricTag) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{642} } -func (x *PatternFlowIcmpEchoTypeMetricTag) GetName() string { +func (x *PatternFlowGtpv1SFlagMetricTag) GetName() string { if x != nil && x.Name != nil { return *x.Name } return "" } -func (x *PatternFlowIcmpEchoTypeMetricTag) GetOffset() uint32 { +func (x *PatternFlowGtpv1SFlagMetricTag) GetOffset() uint32 { if x != nil && x.Offset != nil { return *x.Offset } return 0 } -func (x *PatternFlowIcmpEchoTypeMetricTag) GetLength() uint32 { +func (x *PatternFlowGtpv1SFlagMetricTag) GetLength() uint32 { if x != nil && x.Length != nil { return *x.Length } return 0 } -// The type of ICMP echo packet -type PatternFlowIcmpEchoType struct { +// Sequence number field present +type PatternFlowGtpv1SFlag struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // Description missing in models // default = Choice.Enum.value - Choice *PatternFlowIcmpEchoType_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.PatternFlowIcmpEchoType_Choice_Enum,oneof" json:"choice,omitempty"` + Choice *PatternFlowGtpv1SFlag_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.PatternFlowGtpv1SFlag_Choice_Enum,oneof" json:"choice,omitempty"` // Description missing in models - // default = 8 + // default = 0 Value *uint32 `protobuf:"varint,2,opt,name=value,proto3,oneof" json:"value,omitempty"` // Description missing in models - // default = [8] + // default = [0] Values []uint32 `protobuf:"varint,3,rep,packed,name=values,proto3" json:"values,omitempty"` // Description missing in models - Increment *PatternFlowIcmpEchoTypeCounter `protobuf:"bytes,5,opt,name=increment,proto3" json:"increment,omitempty"` + Increment *PatternFlowGtpv1SFlagCounter `protobuf:"bytes,5,opt,name=increment,proto3" json:"increment,omitempty"` // Description missing in models - Decrement *PatternFlowIcmpEchoTypeCounter `protobuf:"bytes,6,opt,name=decrement,proto3" json:"decrement,omitempty"` + Decrement *PatternFlowGtpv1SFlagCounter `protobuf:"bytes,6,opt,name=decrement,proto3" json:"decrement,omitempty"` // One or more metric tags can be used to enable tracking portion of or all bits in // a corresponding header field for metrics per each applicable value. These would appear // as tagged metrics in corresponding flow metrics. - MetricTags []*PatternFlowIcmpEchoTypeMetricTag `protobuf:"bytes,7,rep,name=metric_tags,json=metricTags,proto3" json:"metric_tags,omitempty"` + MetricTags []*PatternFlowGtpv1SFlagMetricTag `protobuf:"bytes,7,rep,name=metric_tags,json=metricTags,proto3" json:"metric_tags,omitempty"` } -func (x *PatternFlowIcmpEchoType) Reset() { - *x = PatternFlowIcmpEchoType{} +func (x *PatternFlowGtpv1SFlag) Reset() { + *x = PatternFlowGtpv1SFlag{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[680] + mi := &file_otg_proto_msgTypes[643] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowIcmpEchoType) String() string { +func (x *PatternFlowGtpv1SFlag) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowIcmpEchoType) ProtoMessage() {} +func (*PatternFlowGtpv1SFlag) ProtoMessage() {} -func (x *PatternFlowIcmpEchoType) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[680] +func (x *PatternFlowGtpv1SFlag) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[643] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -75066,47 +74240,47 @@ func (x *PatternFlowIcmpEchoType) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use PatternFlowIcmpEchoType.ProtoReflect.Descriptor instead. -func (*PatternFlowIcmpEchoType) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{680} +// Deprecated: Use PatternFlowGtpv1SFlag.ProtoReflect.Descriptor instead. +func (*PatternFlowGtpv1SFlag) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{643} } -func (x *PatternFlowIcmpEchoType) GetChoice() PatternFlowIcmpEchoType_Choice_Enum { +func (x *PatternFlowGtpv1SFlag) GetChoice() PatternFlowGtpv1SFlag_Choice_Enum { if x != nil && x.Choice != nil { return *x.Choice } - return PatternFlowIcmpEchoType_Choice_unspecified + return PatternFlowGtpv1SFlag_Choice_unspecified } -func (x *PatternFlowIcmpEchoType) GetValue() uint32 { +func (x *PatternFlowGtpv1SFlag) GetValue() uint32 { if x != nil && x.Value != nil { return *x.Value } return 0 } -func (x *PatternFlowIcmpEchoType) GetValues() []uint32 { +func (x *PatternFlowGtpv1SFlag) GetValues() []uint32 { if x != nil { return x.Values } return nil } -func (x *PatternFlowIcmpEchoType) GetIncrement() *PatternFlowIcmpEchoTypeCounter { +func (x *PatternFlowGtpv1SFlag) GetIncrement() *PatternFlowGtpv1SFlagCounter { if x != nil { return x.Increment } return nil } -func (x *PatternFlowIcmpEchoType) GetDecrement() *PatternFlowIcmpEchoTypeCounter { +func (x *PatternFlowGtpv1SFlag) GetDecrement() *PatternFlowGtpv1SFlagCounter { if x != nil { return x.Decrement } return nil } -func (x *PatternFlowIcmpEchoType) GetMetricTags() []*PatternFlowIcmpEchoTypeMetricTag { +func (x *PatternFlowGtpv1SFlag) GetMetricTags() []*PatternFlowGtpv1SFlagMetricTag { if x != nil { return x.MetricTags } @@ -75114,7 +74288,7 @@ func (x *PatternFlowIcmpEchoType) GetMetricTags() []*PatternFlowIcmpEchoTypeMetr } // integer counter pattern -type PatternFlowIcmpEchoCodeCounter struct { +type PatternFlowGtpv1PnFlagCounter struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields @@ -75130,23 +74304,23 @@ type PatternFlowIcmpEchoCodeCounter struct { Count *uint32 `protobuf:"varint,3,opt,name=count,proto3,oneof" json:"count,omitempty"` } -func (x *PatternFlowIcmpEchoCodeCounter) Reset() { - *x = PatternFlowIcmpEchoCodeCounter{} +func (x *PatternFlowGtpv1PnFlagCounter) Reset() { + *x = PatternFlowGtpv1PnFlagCounter{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[681] + mi := &file_otg_proto_msgTypes[644] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowIcmpEchoCodeCounter) String() string { +func (x *PatternFlowGtpv1PnFlagCounter) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowIcmpEchoCodeCounter) ProtoMessage() {} +func (*PatternFlowGtpv1PnFlagCounter) ProtoMessage() {} -func (x *PatternFlowIcmpEchoCodeCounter) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[681] +func (x *PatternFlowGtpv1PnFlagCounter) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[644] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -75157,26 +74331,26 @@ func (x *PatternFlowIcmpEchoCodeCounter) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use PatternFlowIcmpEchoCodeCounter.ProtoReflect.Descriptor instead. -func (*PatternFlowIcmpEchoCodeCounter) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{681} +// Deprecated: Use PatternFlowGtpv1PnFlagCounter.ProtoReflect.Descriptor instead. +func (*PatternFlowGtpv1PnFlagCounter) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{644} } -func (x *PatternFlowIcmpEchoCodeCounter) GetStart() uint32 { +func (x *PatternFlowGtpv1PnFlagCounter) GetStart() uint32 { if x != nil && x.Start != nil { return *x.Start } return 0 } -func (x *PatternFlowIcmpEchoCodeCounter) GetStep() uint32 { +func (x *PatternFlowGtpv1PnFlagCounter) GetStep() uint32 { if x != nil && x.Step != nil { return *x.Step } return 0 } -func (x *PatternFlowIcmpEchoCodeCounter) GetCount() uint32 { +func (x *PatternFlowGtpv1PnFlagCounter) GetCount() uint32 { if x != nil && x.Count != nil { return *x.Count } @@ -75186,7 +74360,7 @@ func (x *PatternFlowIcmpEchoCodeCounter) GetCount() uint32 { // Metric tag can be used to enable tracking portion of or all bits in a corresponding // header field for metrics per each applicable value. These would appear as tagged // metrics in corresponding flow metrics. -type PatternFlowIcmpEchoCodeMetricTag struct { +type PatternFlowGtpv1PnFlagMetricTag struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields @@ -75200,28 +74374,28 @@ type PatternFlowIcmpEchoCodeMetricTag struct { Offset *uint32 `protobuf:"varint,2,opt,name=offset,proto3,oneof" json:"offset,omitempty"` // Number of bits to track for metrics starting from configured offset of corresponding // header field - // default = 8 + // default = 1 Length *uint32 `protobuf:"varint,3,opt,name=length,proto3,oneof" json:"length,omitempty"` } -func (x *PatternFlowIcmpEchoCodeMetricTag) Reset() { - *x = PatternFlowIcmpEchoCodeMetricTag{} +func (x *PatternFlowGtpv1PnFlagMetricTag) Reset() { + *x = PatternFlowGtpv1PnFlagMetricTag{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[682] + mi := &file_otg_proto_msgTypes[645] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowIcmpEchoCodeMetricTag) String() string { +func (x *PatternFlowGtpv1PnFlagMetricTag) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowIcmpEchoCodeMetricTag) ProtoMessage() {} +func (*PatternFlowGtpv1PnFlagMetricTag) ProtoMessage() {} -func (x *PatternFlowIcmpEchoCodeMetricTag) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[682] - if protoimpl.UnsafeEnabled && x != nil { +func (x *PatternFlowGtpv1PnFlagMetricTag) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[645] + if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -75231,41 +74405,41 @@ func (x *PatternFlowIcmpEchoCodeMetricTag) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use PatternFlowIcmpEchoCodeMetricTag.ProtoReflect.Descriptor instead. -func (*PatternFlowIcmpEchoCodeMetricTag) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{682} +// Deprecated: Use PatternFlowGtpv1PnFlagMetricTag.ProtoReflect.Descriptor instead. +func (*PatternFlowGtpv1PnFlagMetricTag) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{645} } -func (x *PatternFlowIcmpEchoCodeMetricTag) GetName() string { +func (x *PatternFlowGtpv1PnFlagMetricTag) GetName() string { if x != nil && x.Name != nil { return *x.Name } return "" } -func (x *PatternFlowIcmpEchoCodeMetricTag) GetOffset() uint32 { +func (x *PatternFlowGtpv1PnFlagMetricTag) GetOffset() uint32 { if x != nil && x.Offset != nil { return *x.Offset } return 0 } -func (x *PatternFlowIcmpEchoCodeMetricTag) GetLength() uint32 { +func (x *PatternFlowGtpv1PnFlagMetricTag) GetLength() uint32 { if x != nil && x.Length != nil { return *x.Length } return 0 } -// The ICMP subtype. The default code for ICMP echo request and reply is 0. -type PatternFlowIcmpEchoCode struct { +// N-PDU field present +type PatternFlowGtpv1PnFlag struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // Description missing in models // default = Choice.Enum.value - Choice *PatternFlowIcmpEchoCode_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.PatternFlowIcmpEchoCode_Choice_Enum,oneof" json:"choice,omitempty"` + Choice *PatternFlowGtpv1PnFlag_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.PatternFlowGtpv1PnFlag_Choice_Enum,oneof" json:"choice,omitempty"` // Description missing in models // default = 0 Value *uint32 `protobuf:"varint,2,opt,name=value,proto3,oneof" json:"value,omitempty"` @@ -75273,32 +74447,32 @@ type PatternFlowIcmpEchoCode struct { // default = [0] Values []uint32 `protobuf:"varint,3,rep,packed,name=values,proto3" json:"values,omitempty"` // Description missing in models - Increment *PatternFlowIcmpEchoCodeCounter `protobuf:"bytes,5,opt,name=increment,proto3" json:"increment,omitempty"` + Increment *PatternFlowGtpv1PnFlagCounter `protobuf:"bytes,5,opt,name=increment,proto3" json:"increment,omitempty"` // Description missing in models - Decrement *PatternFlowIcmpEchoCodeCounter `protobuf:"bytes,6,opt,name=decrement,proto3" json:"decrement,omitempty"` + Decrement *PatternFlowGtpv1PnFlagCounter `protobuf:"bytes,6,opt,name=decrement,proto3" json:"decrement,omitempty"` // One or more metric tags can be used to enable tracking portion of or all bits in // a corresponding header field for metrics per each applicable value. These would appear // as tagged metrics in corresponding flow metrics. - MetricTags []*PatternFlowIcmpEchoCodeMetricTag `protobuf:"bytes,7,rep,name=metric_tags,json=metricTags,proto3" json:"metric_tags,omitempty"` + MetricTags []*PatternFlowGtpv1PnFlagMetricTag `protobuf:"bytes,7,rep,name=metric_tags,json=metricTags,proto3" json:"metric_tags,omitempty"` } -func (x *PatternFlowIcmpEchoCode) Reset() { - *x = PatternFlowIcmpEchoCode{} +func (x *PatternFlowGtpv1PnFlag) Reset() { + *x = PatternFlowGtpv1PnFlag{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[683] + mi := &file_otg_proto_msgTypes[646] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowIcmpEchoCode) String() string { +func (x *PatternFlowGtpv1PnFlag) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowIcmpEchoCode) ProtoMessage() {} +func (*PatternFlowGtpv1PnFlag) ProtoMessage() {} -func (x *PatternFlowIcmpEchoCode) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[683] +func (x *PatternFlowGtpv1PnFlag) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[646] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -75309,124 +74483,55 @@ func (x *PatternFlowIcmpEchoCode) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use PatternFlowIcmpEchoCode.ProtoReflect.Descriptor instead. -func (*PatternFlowIcmpEchoCode) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{683} +// Deprecated: Use PatternFlowGtpv1PnFlag.ProtoReflect.Descriptor instead. +func (*PatternFlowGtpv1PnFlag) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{646} } -func (x *PatternFlowIcmpEchoCode) GetChoice() PatternFlowIcmpEchoCode_Choice_Enum { +func (x *PatternFlowGtpv1PnFlag) GetChoice() PatternFlowGtpv1PnFlag_Choice_Enum { if x != nil && x.Choice != nil { return *x.Choice } - return PatternFlowIcmpEchoCode_Choice_unspecified + return PatternFlowGtpv1PnFlag_Choice_unspecified } -func (x *PatternFlowIcmpEchoCode) GetValue() uint32 { +func (x *PatternFlowGtpv1PnFlag) GetValue() uint32 { if x != nil && x.Value != nil { return *x.Value } return 0 } -func (x *PatternFlowIcmpEchoCode) GetValues() []uint32 { +func (x *PatternFlowGtpv1PnFlag) GetValues() []uint32 { if x != nil { return x.Values } return nil } -func (x *PatternFlowIcmpEchoCode) GetIncrement() *PatternFlowIcmpEchoCodeCounter { +func (x *PatternFlowGtpv1PnFlag) GetIncrement() *PatternFlowGtpv1PnFlagCounter { if x != nil { return x.Increment } return nil } -func (x *PatternFlowIcmpEchoCode) GetDecrement() *PatternFlowIcmpEchoCodeCounter { +func (x *PatternFlowGtpv1PnFlag) GetDecrement() *PatternFlowGtpv1PnFlagCounter { if x != nil { return x.Decrement } return nil } -func (x *PatternFlowIcmpEchoCode) GetMetricTags() []*PatternFlowIcmpEchoCodeMetricTag { +func (x *PatternFlowGtpv1PnFlag) GetMetricTags() []*PatternFlowGtpv1PnFlagMetricTag { if x != nil { return x.MetricTags } return nil } -// ICMP checksum -type PatternFlowIcmpEchoChecksum struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // The type of checksum - // default = Choice.Enum.generated - Choice *PatternFlowIcmpEchoChecksum_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.PatternFlowIcmpEchoChecksum_Choice_Enum,oneof" json:"choice,omitempty"` - // A system generated checksum value - // default = Generated.Enum.good - Generated *PatternFlowIcmpEchoChecksum_Generated_Enum `protobuf:"varint,2,opt,name=generated,proto3,enum=otg.PatternFlowIcmpEchoChecksum_Generated_Enum,oneof" json:"generated,omitempty"` - // A custom checksum value - Custom *uint32 `protobuf:"varint,3,opt,name=custom,proto3,oneof" json:"custom,omitempty"` -} - -func (x *PatternFlowIcmpEchoChecksum) Reset() { - *x = PatternFlowIcmpEchoChecksum{} - if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[684] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *PatternFlowIcmpEchoChecksum) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*PatternFlowIcmpEchoChecksum) ProtoMessage() {} - -func (x *PatternFlowIcmpEchoChecksum) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[684] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use PatternFlowIcmpEchoChecksum.ProtoReflect.Descriptor instead. -func (*PatternFlowIcmpEchoChecksum) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{684} -} - -func (x *PatternFlowIcmpEchoChecksum) GetChoice() PatternFlowIcmpEchoChecksum_Choice_Enum { - if x != nil && x.Choice != nil { - return *x.Choice - } - return PatternFlowIcmpEchoChecksum_Choice_unspecified -} - -func (x *PatternFlowIcmpEchoChecksum) GetGenerated() PatternFlowIcmpEchoChecksum_Generated_Enum { - if x != nil && x.Generated != nil { - return *x.Generated - } - return PatternFlowIcmpEchoChecksum_Generated_unspecified -} - -func (x *PatternFlowIcmpEchoChecksum) GetCustom() uint32 { - if x != nil && x.Custom != nil { - return *x.Custom - } - return 0 -} - // integer counter pattern -type PatternFlowIcmpEchoIdentifierCounter struct { +type PatternFlowGtpv1MessageTypeCounter struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields @@ -75442,23 +74547,23 @@ type PatternFlowIcmpEchoIdentifierCounter struct { Count *uint32 `protobuf:"varint,3,opt,name=count,proto3,oneof" json:"count,omitempty"` } -func (x *PatternFlowIcmpEchoIdentifierCounter) Reset() { - *x = PatternFlowIcmpEchoIdentifierCounter{} +func (x *PatternFlowGtpv1MessageTypeCounter) Reset() { + *x = PatternFlowGtpv1MessageTypeCounter{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[685] + mi := &file_otg_proto_msgTypes[647] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowIcmpEchoIdentifierCounter) String() string { +func (x *PatternFlowGtpv1MessageTypeCounter) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowIcmpEchoIdentifierCounter) ProtoMessage() {} +func (*PatternFlowGtpv1MessageTypeCounter) ProtoMessage() {} -func (x *PatternFlowIcmpEchoIdentifierCounter) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[685] +func (x *PatternFlowGtpv1MessageTypeCounter) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[647] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -75469,26 +74574,26 @@ func (x *PatternFlowIcmpEchoIdentifierCounter) ProtoReflect() protoreflect.Messa return mi.MessageOf(x) } -// Deprecated: Use PatternFlowIcmpEchoIdentifierCounter.ProtoReflect.Descriptor instead. -func (*PatternFlowIcmpEchoIdentifierCounter) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{685} +// Deprecated: Use PatternFlowGtpv1MessageTypeCounter.ProtoReflect.Descriptor instead. +func (*PatternFlowGtpv1MessageTypeCounter) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{647} } -func (x *PatternFlowIcmpEchoIdentifierCounter) GetStart() uint32 { +func (x *PatternFlowGtpv1MessageTypeCounter) GetStart() uint32 { if x != nil && x.Start != nil { return *x.Start } return 0 } -func (x *PatternFlowIcmpEchoIdentifierCounter) GetStep() uint32 { +func (x *PatternFlowGtpv1MessageTypeCounter) GetStep() uint32 { if x != nil && x.Step != nil { return *x.Step } return 0 } -func (x *PatternFlowIcmpEchoIdentifierCounter) GetCount() uint32 { +func (x *PatternFlowGtpv1MessageTypeCounter) GetCount() uint32 { if x != nil && x.Count != nil { return *x.Count } @@ -75498,7 +74603,7 @@ func (x *PatternFlowIcmpEchoIdentifierCounter) GetCount() uint32 { // Metric tag can be used to enable tracking portion of or all bits in a corresponding // header field for metrics per each applicable value. These would appear as tagged // metrics in corresponding flow metrics. -type PatternFlowIcmpEchoIdentifierMetricTag struct { +type PatternFlowGtpv1MessageTypeMetricTag struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields @@ -75512,27 +74617,27 @@ type PatternFlowIcmpEchoIdentifierMetricTag struct { Offset *uint32 `protobuf:"varint,2,opt,name=offset,proto3,oneof" json:"offset,omitempty"` // Number of bits to track for metrics starting from configured offset of corresponding // header field - // default = 16 + // default = 8 Length *uint32 `protobuf:"varint,3,opt,name=length,proto3,oneof" json:"length,omitempty"` } -func (x *PatternFlowIcmpEchoIdentifierMetricTag) Reset() { - *x = PatternFlowIcmpEchoIdentifierMetricTag{} +func (x *PatternFlowGtpv1MessageTypeMetricTag) Reset() { + *x = PatternFlowGtpv1MessageTypeMetricTag{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[686] + mi := &file_otg_proto_msgTypes[648] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowIcmpEchoIdentifierMetricTag) String() string { +func (x *PatternFlowGtpv1MessageTypeMetricTag) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowIcmpEchoIdentifierMetricTag) ProtoMessage() {} +func (*PatternFlowGtpv1MessageTypeMetricTag) ProtoMessage() {} -func (x *PatternFlowIcmpEchoIdentifierMetricTag) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[686] +func (x *PatternFlowGtpv1MessageTypeMetricTag) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[648] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -75543,41 +74648,42 @@ func (x *PatternFlowIcmpEchoIdentifierMetricTag) ProtoReflect() protoreflect.Mes return mi.MessageOf(x) } -// Deprecated: Use PatternFlowIcmpEchoIdentifierMetricTag.ProtoReflect.Descriptor instead. -func (*PatternFlowIcmpEchoIdentifierMetricTag) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{686} +// Deprecated: Use PatternFlowGtpv1MessageTypeMetricTag.ProtoReflect.Descriptor instead. +func (*PatternFlowGtpv1MessageTypeMetricTag) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{648} } -func (x *PatternFlowIcmpEchoIdentifierMetricTag) GetName() string { +func (x *PatternFlowGtpv1MessageTypeMetricTag) GetName() string { if x != nil && x.Name != nil { return *x.Name } return "" } -func (x *PatternFlowIcmpEchoIdentifierMetricTag) GetOffset() uint32 { +func (x *PatternFlowGtpv1MessageTypeMetricTag) GetOffset() uint32 { if x != nil && x.Offset != nil { return *x.Offset } return 0 } -func (x *PatternFlowIcmpEchoIdentifierMetricTag) GetLength() uint32 { +func (x *PatternFlowGtpv1MessageTypeMetricTag) GetLength() uint32 { if x != nil && x.Length != nil { return *x.Length } return 0 } -// ICMP identifier -type PatternFlowIcmpEchoIdentifier struct { +// The type of GTP message Different types of messages are defined in 3GPP TS 29.060 +// section 7.1 +type PatternFlowGtpv1MessageType struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // Description missing in models // default = Choice.Enum.value - Choice *PatternFlowIcmpEchoIdentifier_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.PatternFlowIcmpEchoIdentifier_Choice_Enum,oneof" json:"choice,omitempty"` + Choice *PatternFlowGtpv1MessageType_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.PatternFlowGtpv1MessageType_Choice_Enum,oneof" json:"choice,omitempty"` // Description missing in models // default = 0 Value *uint32 `protobuf:"varint,2,opt,name=value,proto3,oneof" json:"value,omitempty"` @@ -75585,32 +74691,32 @@ type PatternFlowIcmpEchoIdentifier struct { // default = [0] Values []uint32 `protobuf:"varint,3,rep,packed,name=values,proto3" json:"values,omitempty"` // Description missing in models - Increment *PatternFlowIcmpEchoIdentifierCounter `protobuf:"bytes,5,opt,name=increment,proto3" json:"increment,omitempty"` + Increment *PatternFlowGtpv1MessageTypeCounter `protobuf:"bytes,5,opt,name=increment,proto3" json:"increment,omitempty"` // Description missing in models - Decrement *PatternFlowIcmpEchoIdentifierCounter `protobuf:"bytes,6,opt,name=decrement,proto3" json:"decrement,omitempty"` + Decrement *PatternFlowGtpv1MessageTypeCounter `protobuf:"bytes,6,opt,name=decrement,proto3" json:"decrement,omitempty"` // One or more metric tags can be used to enable tracking portion of or all bits in // a corresponding header field for metrics per each applicable value. These would appear // as tagged metrics in corresponding flow metrics. - MetricTags []*PatternFlowIcmpEchoIdentifierMetricTag `protobuf:"bytes,7,rep,name=metric_tags,json=metricTags,proto3" json:"metric_tags,omitempty"` + MetricTags []*PatternFlowGtpv1MessageTypeMetricTag `protobuf:"bytes,7,rep,name=metric_tags,json=metricTags,proto3" json:"metric_tags,omitempty"` } -func (x *PatternFlowIcmpEchoIdentifier) Reset() { - *x = PatternFlowIcmpEchoIdentifier{} +func (x *PatternFlowGtpv1MessageType) Reset() { + *x = PatternFlowGtpv1MessageType{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[687] + mi := &file_otg_proto_msgTypes[649] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowIcmpEchoIdentifier) String() string { +func (x *PatternFlowGtpv1MessageType) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowIcmpEchoIdentifier) ProtoMessage() {} +func (*PatternFlowGtpv1MessageType) ProtoMessage() {} -func (x *PatternFlowIcmpEchoIdentifier) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[687] +func (x *PatternFlowGtpv1MessageType) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[649] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -75621,47 +74727,47 @@ func (x *PatternFlowIcmpEchoIdentifier) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use PatternFlowIcmpEchoIdentifier.ProtoReflect.Descriptor instead. -func (*PatternFlowIcmpEchoIdentifier) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{687} +// Deprecated: Use PatternFlowGtpv1MessageType.ProtoReflect.Descriptor instead. +func (*PatternFlowGtpv1MessageType) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{649} } -func (x *PatternFlowIcmpEchoIdentifier) GetChoice() PatternFlowIcmpEchoIdentifier_Choice_Enum { +func (x *PatternFlowGtpv1MessageType) GetChoice() PatternFlowGtpv1MessageType_Choice_Enum { if x != nil && x.Choice != nil { return *x.Choice } - return PatternFlowIcmpEchoIdentifier_Choice_unspecified + return PatternFlowGtpv1MessageType_Choice_unspecified } -func (x *PatternFlowIcmpEchoIdentifier) GetValue() uint32 { +func (x *PatternFlowGtpv1MessageType) GetValue() uint32 { if x != nil && x.Value != nil { return *x.Value } return 0 } -func (x *PatternFlowIcmpEchoIdentifier) GetValues() []uint32 { +func (x *PatternFlowGtpv1MessageType) GetValues() []uint32 { if x != nil { return x.Values } return nil } -func (x *PatternFlowIcmpEchoIdentifier) GetIncrement() *PatternFlowIcmpEchoIdentifierCounter { +func (x *PatternFlowGtpv1MessageType) GetIncrement() *PatternFlowGtpv1MessageTypeCounter { if x != nil { return x.Increment } return nil } -func (x *PatternFlowIcmpEchoIdentifier) GetDecrement() *PatternFlowIcmpEchoIdentifierCounter { +func (x *PatternFlowGtpv1MessageType) GetDecrement() *PatternFlowGtpv1MessageTypeCounter { if x != nil { return x.Decrement } return nil } -func (x *PatternFlowIcmpEchoIdentifier) GetMetricTags() []*PatternFlowIcmpEchoIdentifierMetricTag { +func (x *PatternFlowGtpv1MessageType) GetMetricTags() []*PatternFlowGtpv1MessageTypeMetricTag { if x != nil { return x.MetricTags } @@ -75669,7 +74775,7 @@ func (x *PatternFlowIcmpEchoIdentifier) GetMetricTags() []*PatternFlowIcmpEchoId } // integer counter pattern -type PatternFlowIcmpEchoSequenceNumberCounter struct { +type PatternFlowGtpv1MessageLengthCounter struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields @@ -75685,23 +74791,23 @@ type PatternFlowIcmpEchoSequenceNumberCounter struct { Count *uint32 `protobuf:"varint,3,opt,name=count,proto3,oneof" json:"count,omitempty"` } -func (x *PatternFlowIcmpEchoSequenceNumberCounter) Reset() { - *x = PatternFlowIcmpEchoSequenceNumberCounter{} +func (x *PatternFlowGtpv1MessageLengthCounter) Reset() { + *x = PatternFlowGtpv1MessageLengthCounter{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[688] + mi := &file_otg_proto_msgTypes[650] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowIcmpEchoSequenceNumberCounter) String() string { +func (x *PatternFlowGtpv1MessageLengthCounter) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowIcmpEchoSequenceNumberCounter) ProtoMessage() {} +func (*PatternFlowGtpv1MessageLengthCounter) ProtoMessage() {} -func (x *PatternFlowIcmpEchoSequenceNumberCounter) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[688] +func (x *PatternFlowGtpv1MessageLengthCounter) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[650] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -75712,26 +74818,26 @@ func (x *PatternFlowIcmpEchoSequenceNumberCounter) ProtoReflect() protoreflect.M return mi.MessageOf(x) } -// Deprecated: Use PatternFlowIcmpEchoSequenceNumberCounter.ProtoReflect.Descriptor instead. -func (*PatternFlowIcmpEchoSequenceNumberCounter) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{688} +// Deprecated: Use PatternFlowGtpv1MessageLengthCounter.ProtoReflect.Descriptor instead. +func (*PatternFlowGtpv1MessageLengthCounter) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{650} } -func (x *PatternFlowIcmpEchoSequenceNumberCounter) GetStart() uint32 { +func (x *PatternFlowGtpv1MessageLengthCounter) GetStart() uint32 { if x != nil && x.Start != nil { return *x.Start } return 0 } -func (x *PatternFlowIcmpEchoSequenceNumberCounter) GetStep() uint32 { +func (x *PatternFlowGtpv1MessageLengthCounter) GetStep() uint32 { if x != nil && x.Step != nil { return *x.Step } return 0 } -func (x *PatternFlowIcmpEchoSequenceNumberCounter) GetCount() uint32 { +func (x *PatternFlowGtpv1MessageLengthCounter) GetCount() uint32 { if x != nil && x.Count != nil { return *x.Count } @@ -75741,7 +74847,7 @@ func (x *PatternFlowIcmpEchoSequenceNumberCounter) GetCount() uint32 { // Metric tag can be used to enable tracking portion of or all bits in a corresponding // header field for metrics per each applicable value. These would appear as tagged // metrics in corresponding flow metrics. -type PatternFlowIcmpEchoSequenceNumberMetricTag struct { +type PatternFlowGtpv1MessageLengthMetricTag struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields @@ -75759,23 +74865,23 @@ type PatternFlowIcmpEchoSequenceNumberMetricTag struct { Length *uint32 `protobuf:"varint,3,opt,name=length,proto3,oneof" json:"length,omitempty"` } -func (x *PatternFlowIcmpEchoSequenceNumberMetricTag) Reset() { - *x = PatternFlowIcmpEchoSequenceNumberMetricTag{} +func (x *PatternFlowGtpv1MessageLengthMetricTag) Reset() { + *x = PatternFlowGtpv1MessageLengthMetricTag{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[689] + mi := &file_otg_proto_msgTypes[651] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowIcmpEchoSequenceNumberMetricTag) String() string { +func (x *PatternFlowGtpv1MessageLengthMetricTag) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowIcmpEchoSequenceNumberMetricTag) ProtoMessage() {} +func (*PatternFlowGtpv1MessageLengthMetricTag) ProtoMessage() {} -func (x *PatternFlowIcmpEchoSequenceNumberMetricTag) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[689] +func (x *PatternFlowGtpv1MessageLengthMetricTag) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[651] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -75786,41 +74892,42 @@ func (x *PatternFlowIcmpEchoSequenceNumberMetricTag) ProtoReflect() protoreflect return mi.MessageOf(x) } -// Deprecated: Use PatternFlowIcmpEchoSequenceNumberMetricTag.ProtoReflect.Descriptor instead. -func (*PatternFlowIcmpEchoSequenceNumberMetricTag) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{689} +// Deprecated: Use PatternFlowGtpv1MessageLengthMetricTag.ProtoReflect.Descriptor instead. +func (*PatternFlowGtpv1MessageLengthMetricTag) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{651} } -func (x *PatternFlowIcmpEchoSequenceNumberMetricTag) GetName() string { +func (x *PatternFlowGtpv1MessageLengthMetricTag) GetName() string { if x != nil && x.Name != nil { return *x.Name } return "" } -func (x *PatternFlowIcmpEchoSequenceNumberMetricTag) GetOffset() uint32 { +func (x *PatternFlowGtpv1MessageLengthMetricTag) GetOffset() uint32 { if x != nil && x.Offset != nil { return *x.Offset } return 0 } -func (x *PatternFlowIcmpEchoSequenceNumberMetricTag) GetLength() uint32 { +func (x *PatternFlowGtpv1MessageLengthMetricTag) GetLength() uint32 { if x != nil && x.Length != nil { return *x.Length } return 0 } -// ICMP sequence number -type PatternFlowIcmpEchoSequenceNumber struct { +// The length of the payload (the bytes following the mandatory 8-byte GTP header) in +// bytes that includes any optional fields +type PatternFlowGtpv1MessageLength struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // Description missing in models // default = Choice.Enum.value - Choice *PatternFlowIcmpEchoSequenceNumber_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.PatternFlowIcmpEchoSequenceNumber_Choice_Enum,oneof" json:"choice,omitempty"` + Choice *PatternFlowGtpv1MessageLength_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.PatternFlowGtpv1MessageLength_Choice_Enum,oneof" json:"choice,omitempty"` // Description missing in models // default = 0 Value *uint32 `protobuf:"varint,2,opt,name=value,proto3,oneof" json:"value,omitempty"` @@ -75828,32 +74935,32 @@ type PatternFlowIcmpEchoSequenceNumber struct { // default = [0] Values []uint32 `protobuf:"varint,3,rep,packed,name=values,proto3" json:"values,omitempty"` // Description missing in models - Increment *PatternFlowIcmpEchoSequenceNumberCounter `protobuf:"bytes,5,opt,name=increment,proto3" json:"increment,omitempty"` + Increment *PatternFlowGtpv1MessageLengthCounter `protobuf:"bytes,5,opt,name=increment,proto3" json:"increment,omitempty"` // Description missing in models - Decrement *PatternFlowIcmpEchoSequenceNumberCounter `protobuf:"bytes,6,opt,name=decrement,proto3" json:"decrement,omitempty"` + Decrement *PatternFlowGtpv1MessageLengthCounter `protobuf:"bytes,6,opt,name=decrement,proto3" json:"decrement,omitempty"` // One or more metric tags can be used to enable tracking portion of or all bits in // a corresponding header field for metrics per each applicable value. These would appear // as tagged metrics in corresponding flow metrics. - MetricTags []*PatternFlowIcmpEchoSequenceNumberMetricTag `protobuf:"bytes,7,rep,name=metric_tags,json=metricTags,proto3" json:"metric_tags,omitempty"` + MetricTags []*PatternFlowGtpv1MessageLengthMetricTag `protobuf:"bytes,7,rep,name=metric_tags,json=metricTags,proto3" json:"metric_tags,omitempty"` } -func (x *PatternFlowIcmpEchoSequenceNumber) Reset() { - *x = PatternFlowIcmpEchoSequenceNumber{} +func (x *PatternFlowGtpv1MessageLength) Reset() { + *x = PatternFlowGtpv1MessageLength{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[690] + mi := &file_otg_proto_msgTypes[652] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowIcmpEchoSequenceNumber) String() string { +func (x *PatternFlowGtpv1MessageLength) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowIcmpEchoSequenceNumber) ProtoMessage() {} +func (*PatternFlowGtpv1MessageLength) ProtoMessage() {} -func (x *PatternFlowIcmpEchoSequenceNumber) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[690] +func (x *PatternFlowGtpv1MessageLength) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[652] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -75864,124 +74971,55 @@ func (x *PatternFlowIcmpEchoSequenceNumber) ProtoReflect() protoreflect.Message return mi.MessageOf(x) } -// Deprecated: Use PatternFlowIcmpEchoSequenceNumber.ProtoReflect.Descriptor instead. -func (*PatternFlowIcmpEchoSequenceNumber) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{690} +// Deprecated: Use PatternFlowGtpv1MessageLength.ProtoReflect.Descriptor instead. +func (*PatternFlowGtpv1MessageLength) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{652} } -func (x *PatternFlowIcmpEchoSequenceNumber) GetChoice() PatternFlowIcmpEchoSequenceNumber_Choice_Enum { +func (x *PatternFlowGtpv1MessageLength) GetChoice() PatternFlowGtpv1MessageLength_Choice_Enum { if x != nil && x.Choice != nil { return *x.Choice } - return PatternFlowIcmpEchoSequenceNumber_Choice_unspecified + return PatternFlowGtpv1MessageLength_Choice_unspecified } -func (x *PatternFlowIcmpEchoSequenceNumber) GetValue() uint32 { +func (x *PatternFlowGtpv1MessageLength) GetValue() uint32 { if x != nil && x.Value != nil { return *x.Value } return 0 } -func (x *PatternFlowIcmpEchoSequenceNumber) GetValues() []uint32 { +func (x *PatternFlowGtpv1MessageLength) GetValues() []uint32 { if x != nil { return x.Values } return nil } -func (x *PatternFlowIcmpEchoSequenceNumber) GetIncrement() *PatternFlowIcmpEchoSequenceNumberCounter { +func (x *PatternFlowGtpv1MessageLength) GetIncrement() *PatternFlowGtpv1MessageLengthCounter { if x != nil { return x.Increment } return nil } -func (x *PatternFlowIcmpEchoSequenceNumber) GetDecrement() *PatternFlowIcmpEchoSequenceNumberCounter { +func (x *PatternFlowGtpv1MessageLength) GetDecrement() *PatternFlowGtpv1MessageLengthCounter { if x != nil { return x.Decrement } return nil } -func (x *PatternFlowIcmpEchoSequenceNumber) GetMetricTags() []*PatternFlowIcmpEchoSequenceNumberMetricTag { +func (x *PatternFlowGtpv1MessageLength) GetMetricTags() []*PatternFlowGtpv1MessageLengthMetricTag { if x != nil { return x.MetricTags } return nil } -// ICMP checksum -type PatternFlowIcmpCommonChecksum struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // The type of checksum - // default = Choice.Enum.generated - Choice *PatternFlowIcmpCommonChecksum_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.PatternFlowIcmpCommonChecksum_Choice_Enum,oneof" json:"choice,omitempty"` - // A system generated checksum value - // default = Generated.Enum.good - Generated *PatternFlowIcmpCommonChecksum_Generated_Enum `protobuf:"varint,2,opt,name=generated,proto3,enum=otg.PatternFlowIcmpCommonChecksum_Generated_Enum,oneof" json:"generated,omitempty"` - // A custom checksum value - Custom *uint32 `protobuf:"varint,3,opt,name=custom,proto3,oneof" json:"custom,omitempty"` -} - -func (x *PatternFlowIcmpCommonChecksum) Reset() { - *x = PatternFlowIcmpCommonChecksum{} - if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[691] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *PatternFlowIcmpCommonChecksum) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*PatternFlowIcmpCommonChecksum) ProtoMessage() {} - -func (x *PatternFlowIcmpCommonChecksum) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[691] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use PatternFlowIcmpCommonChecksum.ProtoReflect.Descriptor instead. -func (*PatternFlowIcmpCommonChecksum) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{691} -} - -func (x *PatternFlowIcmpCommonChecksum) GetChoice() PatternFlowIcmpCommonChecksum_Choice_Enum { - if x != nil && x.Choice != nil { - return *x.Choice - } - return PatternFlowIcmpCommonChecksum_Choice_unspecified -} - -func (x *PatternFlowIcmpCommonChecksum) GetGenerated() PatternFlowIcmpCommonChecksum_Generated_Enum { - if x != nil && x.Generated != nil { - return *x.Generated - } - return PatternFlowIcmpCommonChecksum_Generated_unspecified -} - -func (x *PatternFlowIcmpCommonChecksum) GetCustom() uint32 { - if x != nil && x.Custom != nil { - return *x.Custom - } - return 0 -} - // integer counter pattern -type PatternFlowIcmpNextFieldsIdentifierCounter struct { +type PatternFlowGtpv1TeidCounter struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields @@ -75997,23 +75035,23 @@ type PatternFlowIcmpNextFieldsIdentifierCounter struct { Count *uint32 `protobuf:"varint,3,opt,name=count,proto3,oneof" json:"count,omitempty"` } -func (x *PatternFlowIcmpNextFieldsIdentifierCounter) Reset() { - *x = PatternFlowIcmpNextFieldsIdentifierCounter{} +func (x *PatternFlowGtpv1TeidCounter) Reset() { + *x = PatternFlowGtpv1TeidCounter{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[692] + mi := &file_otg_proto_msgTypes[653] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowIcmpNextFieldsIdentifierCounter) String() string { +func (x *PatternFlowGtpv1TeidCounter) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowIcmpNextFieldsIdentifierCounter) ProtoMessage() {} +func (*PatternFlowGtpv1TeidCounter) ProtoMessage() {} -func (x *PatternFlowIcmpNextFieldsIdentifierCounter) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[692] +func (x *PatternFlowGtpv1TeidCounter) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[653] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -76024,26 +75062,26 @@ func (x *PatternFlowIcmpNextFieldsIdentifierCounter) ProtoReflect() protoreflect return mi.MessageOf(x) } -// Deprecated: Use PatternFlowIcmpNextFieldsIdentifierCounter.ProtoReflect.Descriptor instead. -func (*PatternFlowIcmpNextFieldsIdentifierCounter) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{692} +// Deprecated: Use PatternFlowGtpv1TeidCounter.ProtoReflect.Descriptor instead. +func (*PatternFlowGtpv1TeidCounter) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{653} } -func (x *PatternFlowIcmpNextFieldsIdentifierCounter) GetStart() uint32 { +func (x *PatternFlowGtpv1TeidCounter) GetStart() uint32 { if x != nil && x.Start != nil { return *x.Start } return 0 } -func (x *PatternFlowIcmpNextFieldsIdentifierCounter) GetStep() uint32 { +func (x *PatternFlowGtpv1TeidCounter) GetStep() uint32 { if x != nil && x.Step != nil { return *x.Step } return 0 } -func (x *PatternFlowIcmpNextFieldsIdentifierCounter) GetCount() uint32 { +func (x *PatternFlowGtpv1TeidCounter) GetCount() uint32 { if x != nil && x.Count != nil { return *x.Count } @@ -76053,7 +75091,7 @@ func (x *PatternFlowIcmpNextFieldsIdentifierCounter) GetCount() uint32 { // Metric tag can be used to enable tracking portion of or all bits in a corresponding // header field for metrics per each applicable value. These would appear as tagged // metrics in corresponding flow metrics. -type PatternFlowIcmpNextFieldsIdentifierMetricTag struct { +type PatternFlowGtpv1TeidMetricTag struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields @@ -76067,27 +75105,27 @@ type PatternFlowIcmpNextFieldsIdentifierMetricTag struct { Offset *uint32 `protobuf:"varint,2,opt,name=offset,proto3,oneof" json:"offset,omitempty"` // Number of bits to track for metrics starting from configured offset of corresponding // header field - // default = 16 + // default = 32 Length *uint32 `protobuf:"varint,3,opt,name=length,proto3,oneof" json:"length,omitempty"` } -func (x *PatternFlowIcmpNextFieldsIdentifierMetricTag) Reset() { - *x = PatternFlowIcmpNextFieldsIdentifierMetricTag{} +func (x *PatternFlowGtpv1TeidMetricTag) Reset() { + *x = PatternFlowGtpv1TeidMetricTag{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[693] + mi := &file_otg_proto_msgTypes[654] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowIcmpNextFieldsIdentifierMetricTag) String() string { +func (x *PatternFlowGtpv1TeidMetricTag) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowIcmpNextFieldsIdentifierMetricTag) ProtoMessage() {} +func (*PatternFlowGtpv1TeidMetricTag) ProtoMessage() {} -func (x *PatternFlowIcmpNextFieldsIdentifierMetricTag) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[693] +func (x *PatternFlowGtpv1TeidMetricTag) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[654] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -76098,41 +75136,41 @@ func (x *PatternFlowIcmpNextFieldsIdentifierMetricTag) ProtoReflect() protorefle return mi.MessageOf(x) } -// Deprecated: Use PatternFlowIcmpNextFieldsIdentifierMetricTag.ProtoReflect.Descriptor instead. -func (*PatternFlowIcmpNextFieldsIdentifierMetricTag) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{693} +// Deprecated: Use PatternFlowGtpv1TeidMetricTag.ProtoReflect.Descriptor instead. +func (*PatternFlowGtpv1TeidMetricTag) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{654} } -func (x *PatternFlowIcmpNextFieldsIdentifierMetricTag) GetName() string { +func (x *PatternFlowGtpv1TeidMetricTag) GetName() string { if x != nil && x.Name != nil { return *x.Name } return "" } -func (x *PatternFlowIcmpNextFieldsIdentifierMetricTag) GetOffset() uint32 { +func (x *PatternFlowGtpv1TeidMetricTag) GetOffset() uint32 { if x != nil && x.Offset != nil { return *x.Offset } return 0 } -func (x *PatternFlowIcmpNextFieldsIdentifierMetricTag) GetLength() uint32 { +func (x *PatternFlowGtpv1TeidMetricTag) GetLength() uint32 { if x != nil && x.Length != nil { return *x.Length } return 0 } -// ICMP identifier -type PatternFlowIcmpNextFieldsIdentifier struct { +// Tunnel endpoint identifier (TEID) used to multiplex connections in the same GTP tunnel +type PatternFlowGtpv1Teid struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // Description missing in models // default = Choice.Enum.value - Choice *PatternFlowIcmpNextFieldsIdentifier_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.PatternFlowIcmpNextFieldsIdentifier_Choice_Enum,oneof" json:"choice,omitempty"` + Choice *PatternFlowGtpv1Teid_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.PatternFlowGtpv1Teid_Choice_Enum,oneof" json:"choice,omitempty"` // Description missing in models // default = 0 Value *uint32 `protobuf:"varint,2,opt,name=value,proto3,oneof" json:"value,omitempty"` @@ -76140,32 +75178,32 @@ type PatternFlowIcmpNextFieldsIdentifier struct { // default = [0] Values []uint32 `protobuf:"varint,3,rep,packed,name=values,proto3" json:"values,omitempty"` // Description missing in models - Increment *PatternFlowIcmpNextFieldsIdentifierCounter `protobuf:"bytes,5,opt,name=increment,proto3" json:"increment,omitempty"` + Increment *PatternFlowGtpv1TeidCounter `protobuf:"bytes,5,opt,name=increment,proto3" json:"increment,omitempty"` // Description missing in models - Decrement *PatternFlowIcmpNextFieldsIdentifierCounter `protobuf:"bytes,6,opt,name=decrement,proto3" json:"decrement,omitempty"` + Decrement *PatternFlowGtpv1TeidCounter `protobuf:"bytes,6,opt,name=decrement,proto3" json:"decrement,omitempty"` // One or more metric tags can be used to enable tracking portion of or all bits in // a corresponding header field for metrics per each applicable value. These would appear // as tagged metrics in corresponding flow metrics. - MetricTags []*PatternFlowIcmpNextFieldsIdentifierMetricTag `protobuf:"bytes,7,rep,name=metric_tags,json=metricTags,proto3" json:"metric_tags,omitempty"` + MetricTags []*PatternFlowGtpv1TeidMetricTag `protobuf:"bytes,7,rep,name=metric_tags,json=metricTags,proto3" json:"metric_tags,omitempty"` } -func (x *PatternFlowIcmpNextFieldsIdentifier) Reset() { - *x = PatternFlowIcmpNextFieldsIdentifier{} +func (x *PatternFlowGtpv1Teid) Reset() { + *x = PatternFlowGtpv1Teid{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[694] + mi := &file_otg_proto_msgTypes[655] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowIcmpNextFieldsIdentifier) String() string { +func (x *PatternFlowGtpv1Teid) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowIcmpNextFieldsIdentifier) ProtoMessage() {} +func (*PatternFlowGtpv1Teid) ProtoMessage() {} -func (x *PatternFlowIcmpNextFieldsIdentifier) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[694] +func (x *PatternFlowGtpv1Teid) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[655] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -76176,47 +75214,47 @@ func (x *PatternFlowIcmpNextFieldsIdentifier) ProtoReflect() protoreflect.Messag return mi.MessageOf(x) } -// Deprecated: Use PatternFlowIcmpNextFieldsIdentifier.ProtoReflect.Descriptor instead. -func (*PatternFlowIcmpNextFieldsIdentifier) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{694} +// Deprecated: Use PatternFlowGtpv1Teid.ProtoReflect.Descriptor instead. +func (*PatternFlowGtpv1Teid) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{655} } -func (x *PatternFlowIcmpNextFieldsIdentifier) GetChoice() PatternFlowIcmpNextFieldsIdentifier_Choice_Enum { +func (x *PatternFlowGtpv1Teid) GetChoice() PatternFlowGtpv1Teid_Choice_Enum { if x != nil && x.Choice != nil { return *x.Choice } - return PatternFlowIcmpNextFieldsIdentifier_Choice_unspecified + return PatternFlowGtpv1Teid_Choice_unspecified } -func (x *PatternFlowIcmpNextFieldsIdentifier) GetValue() uint32 { +func (x *PatternFlowGtpv1Teid) GetValue() uint32 { if x != nil && x.Value != nil { return *x.Value } return 0 } -func (x *PatternFlowIcmpNextFieldsIdentifier) GetValues() []uint32 { +func (x *PatternFlowGtpv1Teid) GetValues() []uint32 { if x != nil { return x.Values } return nil } -func (x *PatternFlowIcmpNextFieldsIdentifier) GetIncrement() *PatternFlowIcmpNextFieldsIdentifierCounter { +func (x *PatternFlowGtpv1Teid) GetIncrement() *PatternFlowGtpv1TeidCounter { if x != nil { return x.Increment } return nil } -func (x *PatternFlowIcmpNextFieldsIdentifier) GetDecrement() *PatternFlowIcmpNextFieldsIdentifierCounter { +func (x *PatternFlowGtpv1Teid) GetDecrement() *PatternFlowGtpv1TeidCounter { if x != nil { return x.Decrement } return nil } -func (x *PatternFlowIcmpNextFieldsIdentifier) GetMetricTags() []*PatternFlowIcmpNextFieldsIdentifierMetricTag { +func (x *PatternFlowGtpv1Teid) GetMetricTags() []*PatternFlowGtpv1TeidMetricTag { if x != nil { return x.MetricTags } @@ -76224,7 +75262,7 @@ func (x *PatternFlowIcmpNextFieldsIdentifier) GetMetricTags() []*PatternFlowIcmp } // integer counter pattern -type PatternFlowIcmpNextFieldsSequenceNumberCounter struct { +type PatternFlowGtpv1SquenceNumberCounter struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields @@ -76240,23 +75278,23 @@ type PatternFlowIcmpNextFieldsSequenceNumberCounter struct { Count *uint32 `protobuf:"varint,3,opt,name=count,proto3,oneof" json:"count,omitempty"` } -func (x *PatternFlowIcmpNextFieldsSequenceNumberCounter) Reset() { - *x = PatternFlowIcmpNextFieldsSequenceNumberCounter{} +func (x *PatternFlowGtpv1SquenceNumberCounter) Reset() { + *x = PatternFlowGtpv1SquenceNumberCounter{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[695] + mi := &file_otg_proto_msgTypes[656] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowIcmpNextFieldsSequenceNumberCounter) String() string { +func (x *PatternFlowGtpv1SquenceNumberCounter) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowIcmpNextFieldsSequenceNumberCounter) ProtoMessage() {} +func (*PatternFlowGtpv1SquenceNumberCounter) ProtoMessage() {} -func (x *PatternFlowIcmpNextFieldsSequenceNumberCounter) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[695] +func (x *PatternFlowGtpv1SquenceNumberCounter) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[656] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -76267,26 +75305,26 @@ func (x *PatternFlowIcmpNextFieldsSequenceNumberCounter) ProtoReflect() protoref return mi.MessageOf(x) } -// Deprecated: Use PatternFlowIcmpNextFieldsSequenceNumberCounter.ProtoReflect.Descriptor instead. -func (*PatternFlowIcmpNextFieldsSequenceNumberCounter) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{695} +// Deprecated: Use PatternFlowGtpv1SquenceNumberCounter.ProtoReflect.Descriptor instead. +func (*PatternFlowGtpv1SquenceNumberCounter) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{656} } -func (x *PatternFlowIcmpNextFieldsSequenceNumberCounter) GetStart() uint32 { +func (x *PatternFlowGtpv1SquenceNumberCounter) GetStart() uint32 { if x != nil && x.Start != nil { return *x.Start } return 0 } -func (x *PatternFlowIcmpNextFieldsSequenceNumberCounter) GetStep() uint32 { +func (x *PatternFlowGtpv1SquenceNumberCounter) GetStep() uint32 { if x != nil && x.Step != nil { return *x.Step } return 0 } -func (x *PatternFlowIcmpNextFieldsSequenceNumberCounter) GetCount() uint32 { +func (x *PatternFlowGtpv1SquenceNumberCounter) GetCount() uint32 { if x != nil && x.Count != nil { return *x.Count } @@ -76296,7 +75334,7 @@ func (x *PatternFlowIcmpNextFieldsSequenceNumberCounter) GetCount() uint32 { // Metric tag can be used to enable tracking portion of or all bits in a corresponding // header field for metrics per each applicable value. These would appear as tagged // metrics in corresponding flow metrics. -type PatternFlowIcmpNextFieldsSequenceNumberMetricTag struct { +type PatternFlowGtpv1SquenceNumberMetricTag struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields @@ -76314,23 +75352,23 @@ type PatternFlowIcmpNextFieldsSequenceNumberMetricTag struct { Length *uint32 `protobuf:"varint,3,opt,name=length,proto3,oneof" json:"length,omitempty"` } -func (x *PatternFlowIcmpNextFieldsSequenceNumberMetricTag) Reset() { - *x = PatternFlowIcmpNextFieldsSequenceNumberMetricTag{} +func (x *PatternFlowGtpv1SquenceNumberMetricTag) Reset() { + *x = PatternFlowGtpv1SquenceNumberMetricTag{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[696] + mi := &file_otg_proto_msgTypes[657] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowIcmpNextFieldsSequenceNumberMetricTag) String() string { +func (x *PatternFlowGtpv1SquenceNumberMetricTag) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowIcmpNextFieldsSequenceNumberMetricTag) ProtoMessage() {} +func (*PatternFlowGtpv1SquenceNumberMetricTag) ProtoMessage() {} -func (x *PatternFlowIcmpNextFieldsSequenceNumberMetricTag) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[696] +func (x *PatternFlowGtpv1SquenceNumberMetricTag) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[657] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -76341,41 +75379,42 @@ func (x *PatternFlowIcmpNextFieldsSequenceNumberMetricTag) ProtoReflect() protor return mi.MessageOf(x) } -// Deprecated: Use PatternFlowIcmpNextFieldsSequenceNumberMetricTag.ProtoReflect.Descriptor instead. -func (*PatternFlowIcmpNextFieldsSequenceNumberMetricTag) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{696} +// Deprecated: Use PatternFlowGtpv1SquenceNumberMetricTag.ProtoReflect.Descriptor instead. +func (*PatternFlowGtpv1SquenceNumberMetricTag) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{657} } -func (x *PatternFlowIcmpNextFieldsSequenceNumberMetricTag) GetName() string { +func (x *PatternFlowGtpv1SquenceNumberMetricTag) GetName() string { if x != nil && x.Name != nil { return *x.Name } return "" } -func (x *PatternFlowIcmpNextFieldsSequenceNumberMetricTag) GetOffset() uint32 { +func (x *PatternFlowGtpv1SquenceNumberMetricTag) GetOffset() uint32 { if x != nil && x.Offset != nil { return *x.Offset } return 0 } -func (x *PatternFlowIcmpNextFieldsSequenceNumberMetricTag) GetLength() uint32 { +func (x *PatternFlowGtpv1SquenceNumberMetricTag) GetLength() uint32 { if x != nil && x.Length != nil { return *x.Length } return 0 } -// ICMP sequence number -type PatternFlowIcmpNextFieldsSequenceNumber struct { +// Sequence number. Exists if any of the e_flag, s_flag, or pn_flag bits are on. Must +// be interpreted only if the s_flag bit is on. +type PatternFlowGtpv1SquenceNumber struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // Description missing in models // default = Choice.Enum.value - Choice *PatternFlowIcmpNextFieldsSequenceNumber_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.PatternFlowIcmpNextFieldsSequenceNumber_Choice_Enum,oneof" json:"choice,omitempty"` + Choice *PatternFlowGtpv1SquenceNumber_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.PatternFlowGtpv1SquenceNumber_Choice_Enum,oneof" json:"choice,omitempty"` // Description missing in models // default = 0 Value *uint32 `protobuf:"varint,2,opt,name=value,proto3,oneof" json:"value,omitempty"` @@ -76383,32 +75422,32 @@ type PatternFlowIcmpNextFieldsSequenceNumber struct { // default = [0] Values []uint32 `protobuf:"varint,3,rep,packed,name=values,proto3" json:"values,omitempty"` // Description missing in models - Increment *PatternFlowIcmpNextFieldsSequenceNumberCounter `protobuf:"bytes,5,opt,name=increment,proto3" json:"increment,omitempty"` + Increment *PatternFlowGtpv1SquenceNumberCounter `protobuf:"bytes,5,opt,name=increment,proto3" json:"increment,omitempty"` // Description missing in models - Decrement *PatternFlowIcmpNextFieldsSequenceNumberCounter `protobuf:"bytes,6,opt,name=decrement,proto3" json:"decrement,omitempty"` + Decrement *PatternFlowGtpv1SquenceNumberCounter `protobuf:"bytes,6,opt,name=decrement,proto3" json:"decrement,omitempty"` // One or more metric tags can be used to enable tracking portion of or all bits in // a corresponding header field for metrics per each applicable value. These would appear // as tagged metrics in corresponding flow metrics. - MetricTags []*PatternFlowIcmpNextFieldsSequenceNumberMetricTag `protobuf:"bytes,7,rep,name=metric_tags,json=metricTags,proto3" json:"metric_tags,omitempty"` + MetricTags []*PatternFlowGtpv1SquenceNumberMetricTag `protobuf:"bytes,7,rep,name=metric_tags,json=metricTags,proto3" json:"metric_tags,omitempty"` } -func (x *PatternFlowIcmpNextFieldsSequenceNumber) Reset() { - *x = PatternFlowIcmpNextFieldsSequenceNumber{} +func (x *PatternFlowGtpv1SquenceNumber) Reset() { + *x = PatternFlowGtpv1SquenceNumber{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[697] + mi := &file_otg_proto_msgTypes[658] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowIcmpNextFieldsSequenceNumber) String() string { +func (x *PatternFlowGtpv1SquenceNumber) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowIcmpNextFieldsSequenceNumber) ProtoMessage() {} +func (*PatternFlowGtpv1SquenceNumber) ProtoMessage() {} -func (x *PatternFlowIcmpNextFieldsSequenceNumber) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[697] +func (x *PatternFlowGtpv1SquenceNumber) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[658] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -76419,47 +75458,47 @@ func (x *PatternFlowIcmpNextFieldsSequenceNumber) ProtoReflect() protoreflect.Me return mi.MessageOf(x) } -// Deprecated: Use PatternFlowIcmpNextFieldsSequenceNumber.ProtoReflect.Descriptor instead. -func (*PatternFlowIcmpNextFieldsSequenceNumber) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{697} +// Deprecated: Use PatternFlowGtpv1SquenceNumber.ProtoReflect.Descriptor instead. +func (*PatternFlowGtpv1SquenceNumber) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{658} } -func (x *PatternFlowIcmpNextFieldsSequenceNumber) GetChoice() PatternFlowIcmpNextFieldsSequenceNumber_Choice_Enum { +func (x *PatternFlowGtpv1SquenceNumber) GetChoice() PatternFlowGtpv1SquenceNumber_Choice_Enum { if x != nil && x.Choice != nil { return *x.Choice } - return PatternFlowIcmpNextFieldsSequenceNumber_Choice_unspecified + return PatternFlowGtpv1SquenceNumber_Choice_unspecified } -func (x *PatternFlowIcmpNextFieldsSequenceNumber) GetValue() uint32 { +func (x *PatternFlowGtpv1SquenceNumber) GetValue() uint32 { if x != nil && x.Value != nil { return *x.Value } return 0 } -func (x *PatternFlowIcmpNextFieldsSequenceNumber) GetValues() []uint32 { +func (x *PatternFlowGtpv1SquenceNumber) GetValues() []uint32 { if x != nil { return x.Values } return nil } -func (x *PatternFlowIcmpNextFieldsSequenceNumber) GetIncrement() *PatternFlowIcmpNextFieldsSequenceNumberCounter { +func (x *PatternFlowGtpv1SquenceNumber) GetIncrement() *PatternFlowGtpv1SquenceNumberCounter { if x != nil { return x.Increment } return nil } -func (x *PatternFlowIcmpNextFieldsSequenceNumber) GetDecrement() *PatternFlowIcmpNextFieldsSequenceNumberCounter { +func (x *PatternFlowGtpv1SquenceNumber) GetDecrement() *PatternFlowGtpv1SquenceNumberCounter { if x != nil { return x.Decrement } return nil } -func (x *PatternFlowIcmpNextFieldsSequenceNumber) GetMetricTags() []*PatternFlowIcmpNextFieldsSequenceNumberMetricTag { +func (x *PatternFlowGtpv1SquenceNumber) GetMetricTags() []*PatternFlowGtpv1SquenceNumberMetricTag { if x != nil { return x.MetricTags } @@ -76467,13 +75506,13 @@ func (x *PatternFlowIcmpNextFieldsSequenceNumber) GetMetricTags() []*PatternFlow } // integer counter pattern -type PatternFlowIcmpv6EchoTypeCounter struct { +type PatternFlowGtpv1NPduNumberCounter struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // Description missing in models - // default = 128 + // default = 0 Start *uint32 `protobuf:"varint,1,opt,name=start,proto3,oneof" json:"start,omitempty"` // Description missing in models // default = 1 @@ -76483,23 +75522,23 @@ type PatternFlowIcmpv6EchoTypeCounter struct { Count *uint32 `protobuf:"varint,3,opt,name=count,proto3,oneof" json:"count,omitempty"` } -func (x *PatternFlowIcmpv6EchoTypeCounter) Reset() { - *x = PatternFlowIcmpv6EchoTypeCounter{} +func (x *PatternFlowGtpv1NPduNumberCounter) Reset() { + *x = PatternFlowGtpv1NPduNumberCounter{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[698] + mi := &file_otg_proto_msgTypes[659] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowIcmpv6EchoTypeCounter) String() string { +func (x *PatternFlowGtpv1NPduNumberCounter) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowIcmpv6EchoTypeCounter) ProtoMessage() {} +func (*PatternFlowGtpv1NPduNumberCounter) ProtoMessage() {} -func (x *PatternFlowIcmpv6EchoTypeCounter) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[698] +func (x *PatternFlowGtpv1NPduNumberCounter) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[659] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -76510,26 +75549,26 @@ func (x *PatternFlowIcmpv6EchoTypeCounter) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use PatternFlowIcmpv6EchoTypeCounter.ProtoReflect.Descriptor instead. -func (*PatternFlowIcmpv6EchoTypeCounter) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{698} +// Deprecated: Use PatternFlowGtpv1NPduNumberCounter.ProtoReflect.Descriptor instead. +func (*PatternFlowGtpv1NPduNumberCounter) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{659} } -func (x *PatternFlowIcmpv6EchoTypeCounter) GetStart() uint32 { +func (x *PatternFlowGtpv1NPduNumberCounter) GetStart() uint32 { if x != nil && x.Start != nil { return *x.Start } return 0 } -func (x *PatternFlowIcmpv6EchoTypeCounter) GetStep() uint32 { +func (x *PatternFlowGtpv1NPduNumberCounter) GetStep() uint32 { if x != nil && x.Step != nil { return *x.Step } return 0 } -func (x *PatternFlowIcmpv6EchoTypeCounter) GetCount() uint32 { +func (x *PatternFlowGtpv1NPduNumberCounter) GetCount() uint32 { if x != nil && x.Count != nil { return *x.Count } @@ -76539,7 +75578,7 @@ func (x *PatternFlowIcmpv6EchoTypeCounter) GetCount() uint32 { // Metric tag can be used to enable tracking portion of or all bits in a corresponding // header field for metrics per each applicable value. These would appear as tagged // metrics in corresponding flow metrics. -type PatternFlowIcmpv6EchoTypeMetricTag struct { +type PatternFlowGtpv1NPduNumberMetricTag struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields @@ -76557,23 +75596,23 @@ type PatternFlowIcmpv6EchoTypeMetricTag struct { Length *uint32 `protobuf:"varint,3,opt,name=length,proto3,oneof" json:"length,omitempty"` } -func (x *PatternFlowIcmpv6EchoTypeMetricTag) Reset() { - *x = PatternFlowIcmpv6EchoTypeMetricTag{} +func (x *PatternFlowGtpv1NPduNumberMetricTag) Reset() { + *x = PatternFlowGtpv1NPduNumberMetricTag{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[699] + mi := &file_otg_proto_msgTypes[660] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowIcmpv6EchoTypeMetricTag) String() string { +func (x *PatternFlowGtpv1NPduNumberMetricTag) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowIcmpv6EchoTypeMetricTag) ProtoMessage() {} +func (*PatternFlowGtpv1NPduNumberMetricTag) ProtoMessage() {} -func (x *PatternFlowIcmpv6EchoTypeMetricTag) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[699] +func (x *PatternFlowGtpv1NPduNumberMetricTag) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[660] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -76584,74 +75623,75 @@ func (x *PatternFlowIcmpv6EchoTypeMetricTag) ProtoReflect() protoreflect.Message return mi.MessageOf(x) } -// Deprecated: Use PatternFlowIcmpv6EchoTypeMetricTag.ProtoReflect.Descriptor instead. -func (*PatternFlowIcmpv6EchoTypeMetricTag) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{699} +// Deprecated: Use PatternFlowGtpv1NPduNumberMetricTag.ProtoReflect.Descriptor instead. +func (*PatternFlowGtpv1NPduNumberMetricTag) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{660} } -func (x *PatternFlowIcmpv6EchoTypeMetricTag) GetName() string { +func (x *PatternFlowGtpv1NPduNumberMetricTag) GetName() string { if x != nil && x.Name != nil { return *x.Name } return "" } -func (x *PatternFlowIcmpv6EchoTypeMetricTag) GetOffset() uint32 { +func (x *PatternFlowGtpv1NPduNumberMetricTag) GetOffset() uint32 { if x != nil && x.Offset != nil { return *x.Offset } return 0 } -func (x *PatternFlowIcmpv6EchoTypeMetricTag) GetLength() uint32 { +func (x *PatternFlowGtpv1NPduNumberMetricTag) GetLength() uint32 { if x != nil && x.Length != nil { return *x.Length } return 0 } -// ICMPv6 echo type -type PatternFlowIcmpv6EchoType struct { +// N-PDU number. Exists if any of the e_flag, s_flag, or pn_flag bits are on. Must +// be interpreted only if the pn_flag bit is on. +type PatternFlowGtpv1NPduNumber struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // Description missing in models // default = Choice.Enum.value - Choice *PatternFlowIcmpv6EchoType_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.PatternFlowIcmpv6EchoType_Choice_Enum,oneof" json:"choice,omitempty"` + Choice *PatternFlowGtpv1NPduNumber_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.PatternFlowGtpv1NPduNumber_Choice_Enum,oneof" json:"choice,omitempty"` // Description missing in models - // default = 128 + // default = 0 Value *uint32 `protobuf:"varint,2,opt,name=value,proto3,oneof" json:"value,omitempty"` // Description missing in models - // default = [128] + // default = [0] Values []uint32 `protobuf:"varint,3,rep,packed,name=values,proto3" json:"values,omitempty"` // Description missing in models - Increment *PatternFlowIcmpv6EchoTypeCounter `protobuf:"bytes,5,opt,name=increment,proto3" json:"increment,omitempty"` + Increment *PatternFlowGtpv1NPduNumberCounter `protobuf:"bytes,5,opt,name=increment,proto3" json:"increment,omitempty"` // Description missing in models - Decrement *PatternFlowIcmpv6EchoTypeCounter `protobuf:"bytes,6,opt,name=decrement,proto3" json:"decrement,omitempty"` + Decrement *PatternFlowGtpv1NPduNumberCounter `protobuf:"bytes,6,opt,name=decrement,proto3" json:"decrement,omitempty"` // One or more metric tags can be used to enable tracking portion of or all bits in // a corresponding header field for metrics per each applicable value. These would appear // as tagged metrics in corresponding flow metrics. - MetricTags []*PatternFlowIcmpv6EchoTypeMetricTag `protobuf:"bytes,7,rep,name=metric_tags,json=metricTags,proto3" json:"metric_tags,omitempty"` + MetricTags []*PatternFlowGtpv1NPduNumberMetricTag `protobuf:"bytes,7,rep,name=metric_tags,json=metricTags,proto3" json:"metric_tags,omitempty"` } -func (x *PatternFlowIcmpv6EchoType) Reset() { - *x = PatternFlowIcmpv6EchoType{} +func (x *PatternFlowGtpv1NPduNumber) Reset() { + *x = PatternFlowGtpv1NPduNumber{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[700] + mi := &file_otg_proto_msgTypes[661] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowIcmpv6EchoType) String() string { +func (x *PatternFlowGtpv1NPduNumber) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowIcmpv6EchoType) ProtoMessage() {} +func (*PatternFlowGtpv1NPduNumber) ProtoMessage() {} -func (x *PatternFlowIcmpv6EchoType) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[700] +func (x *PatternFlowGtpv1NPduNumber) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[661] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -76662,47 +75702,47 @@ func (x *PatternFlowIcmpv6EchoType) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use PatternFlowIcmpv6EchoType.ProtoReflect.Descriptor instead. -func (*PatternFlowIcmpv6EchoType) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{700} +// Deprecated: Use PatternFlowGtpv1NPduNumber.ProtoReflect.Descriptor instead. +func (*PatternFlowGtpv1NPduNumber) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{661} } -func (x *PatternFlowIcmpv6EchoType) GetChoice() PatternFlowIcmpv6EchoType_Choice_Enum { +func (x *PatternFlowGtpv1NPduNumber) GetChoice() PatternFlowGtpv1NPduNumber_Choice_Enum { if x != nil && x.Choice != nil { return *x.Choice } - return PatternFlowIcmpv6EchoType_Choice_unspecified + return PatternFlowGtpv1NPduNumber_Choice_unspecified } -func (x *PatternFlowIcmpv6EchoType) GetValue() uint32 { +func (x *PatternFlowGtpv1NPduNumber) GetValue() uint32 { if x != nil && x.Value != nil { return *x.Value } return 0 } -func (x *PatternFlowIcmpv6EchoType) GetValues() []uint32 { +func (x *PatternFlowGtpv1NPduNumber) GetValues() []uint32 { if x != nil { return x.Values } return nil } -func (x *PatternFlowIcmpv6EchoType) GetIncrement() *PatternFlowIcmpv6EchoTypeCounter { +func (x *PatternFlowGtpv1NPduNumber) GetIncrement() *PatternFlowGtpv1NPduNumberCounter { if x != nil { return x.Increment } return nil } -func (x *PatternFlowIcmpv6EchoType) GetDecrement() *PatternFlowIcmpv6EchoTypeCounter { +func (x *PatternFlowGtpv1NPduNumber) GetDecrement() *PatternFlowGtpv1NPduNumberCounter { if x != nil { return x.Decrement } return nil } -func (x *PatternFlowIcmpv6EchoType) GetMetricTags() []*PatternFlowIcmpv6EchoTypeMetricTag { +func (x *PatternFlowGtpv1NPduNumber) GetMetricTags() []*PatternFlowGtpv1NPduNumberMetricTag { if x != nil { return x.MetricTags } @@ -76710,7 +75750,7 @@ func (x *PatternFlowIcmpv6EchoType) GetMetricTags() []*PatternFlowIcmpv6EchoType } // integer counter pattern -type PatternFlowIcmpv6EchoCodeCounter struct { +type PatternFlowGtpv1NextExtensionHeaderTypeCounter struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields @@ -76726,23 +75766,23 @@ type PatternFlowIcmpv6EchoCodeCounter struct { Count *uint32 `protobuf:"varint,3,opt,name=count,proto3,oneof" json:"count,omitempty"` } -func (x *PatternFlowIcmpv6EchoCodeCounter) Reset() { - *x = PatternFlowIcmpv6EchoCodeCounter{} +func (x *PatternFlowGtpv1NextExtensionHeaderTypeCounter) Reset() { + *x = PatternFlowGtpv1NextExtensionHeaderTypeCounter{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[701] + mi := &file_otg_proto_msgTypes[662] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowIcmpv6EchoCodeCounter) String() string { +func (x *PatternFlowGtpv1NextExtensionHeaderTypeCounter) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowIcmpv6EchoCodeCounter) ProtoMessage() {} +func (*PatternFlowGtpv1NextExtensionHeaderTypeCounter) ProtoMessage() {} -func (x *PatternFlowIcmpv6EchoCodeCounter) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[701] +func (x *PatternFlowGtpv1NextExtensionHeaderTypeCounter) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[662] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -76753,26 +75793,26 @@ func (x *PatternFlowIcmpv6EchoCodeCounter) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use PatternFlowIcmpv6EchoCodeCounter.ProtoReflect.Descriptor instead. -func (*PatternFlowIcmpv6EchoCodeCounter) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{701} +// Deprecated: Use PatternFlowGtpv1NextExtensionHeaderTypeCounter.ProtoReflect.Descriptor instead. +func (*PatternFlowGtpv1NextExtensionHeaderTypeCounter) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{662} } -func (x *PatternFlowIcmpv6EchoCodeCounter) GetStart() uint32 { +func (x *PatternFlowGtpv1NextExtensionHeaderTypeCounter) GetStart() uint32 { if x != nil && x.Start != nil { return *x.Start } return 0 } -func (x *PatternFlowIcmpv6EchoCodeCounter) GetStep() uint32 { +func (x *PatternFlowGtpv1NextExtensionHeaderTypeCounter) GetStep() uint32 { if x != nil && x.Step != nil { return *x.Step } return 0 } -func (x *PatternFlowIcmpv6EchoCodeCounter) GetCount() uint32 { +func (x *PatternFlowGtpv1NextExtensionHeaderTypeCounter) GetCount() uint32 { if x != nil && x.Count != nil { return *x.Count } @@ -76782,7 +75822,7 @@ func (x *PatternFlowIcmpv6EchoCodeCounter) GetCount() uint32 { // Metric tag can be used to enable tracking portion of or all bits in a corresponding // header field for metrics per each applicable value. These would appear as tagged // metrics in corresponding flow metrics. -type PatternFlowIcmpv6EchoCodeMetricTag struct { +type PatternFlowGtpv1NextExtensionHeaderTypeMetricTag struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields @@ -76800,23 +75840,23 @@ type PatternFlowIcmpv6EchoCodeMetricTag struct { Length *uint32 `protobuf:"varint,3,opt,name=length,proto3,oneof" json:"length,omitempty"` } -func (x *PatternFlowIcmpv6EchoCodeMetricTag) Reset() { - *x = PatternFlowIcmpv6EchoCodeMetricTag{} +func (x *PatternFlowGtpv1NextExtensionHeaderTypeMetricTag) Reset() { + *x = PatternFlowGtpv1NextExtensionHeaderTypeMetricTag{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[702] + mi := &file_otg_proto_msgTypes[663] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowIcmpv6EchoCodeMetricTag) String() string { +func (x *PatternFlowGtpv1NextExtensionHeaderTypeMetricTag) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowIcmpv6EchoCodeMetricTag) ProtoMessage() {} +func (*PatternFlowGtpv1NextExtensionHeaderTypeMetricTag) ProtoMessage() {} -func (x *PatternFlowIcmpv6EchoCodeMetricTag) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[702] +func (x *PatternFlowGtpv1NextExtensionHeaderTypeMetricTag) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[663] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -76827,41 +75867,42 @@ func (x *PatternFlowIcmpv6EchoCodeMetricTag) ProtoReflect() protoreflect.Message return mi.MessageOf(x) } -// Deprecated: Use PatternFlowIcmpv6EchoCodeMetricTag.ProtoReflect.Descriptor instead. -func (*PatternFlowIcmpv6EchoCodeMetricTag) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{702} +// Deprecated: Use PatternFlowGtpv1NextExtensionHeaderTypeMetricTag.ProtoReflect.Descriptor instead. +func (*PatternFlowGtpv1NextExtensionHeaderTypeMetricTag) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{663} } -func (x *PatternFlowIcmpv6EchoCodeMetricTag) GetName() string { +func (x *PatternFlowGtpv1NextExtensionHeaderTypeMetricTag) GetName() string { if x != nil && x.Name != nil { return *x.Name } return "" } -func (x *PatternFlowIcmpv6EchoCodeMetricTag) GetOffset() uint32 { +func (x *PatternFlowGtpv1NextExtensionHeaderTypeMetricTag) GetOffset() uint32 { if x != nil && x.Offset != nil { return *x.Offset } return 0 } -func (x *PatternFlowIcmpv6EchoCodeMetricTag) GetLength() uint32 { +func (x *PatternFlowGtpv1NextExtensionHeaderTypeMetricTag) GetLength() uint32 { if x != nil && x.Length != nil { return *x.Length } return 0 } -// ICMPv6 echo sub type -type PatternFlowIcmpv6EchoCode struct { +// Next extension header. Exists if any of the e_flag, s_flag, or pn_flag bits are on. +// Must be interpreted only if the e_flag bit is on. +type PatternFlowGtpv1NextExtensionHeaderType struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // Description missing in models // default = Choice.Enum.value - Choice *PatternFlowIcmpv6EchoCode_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.PatternFlowIcmpv6EchoCode_Choice_Enum,oneof" json:"choice,omitempty"` + Choice *PatternFlowGtpv1NextExtensionHeaderType_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.PatternFlowGtpv1NextExtensionHeaderType_Choice_Enum,oneof" json:"choice,omitempty"` // Description missing in models // default = 0 Value *uint32 `protobuf:"varint,2,opt,name=value,proto3,oneof" json:"value,omitempty"` @@ -76869,32 +75910,32 @@ type PatternFlowIcmpv6EchoCode struct { // default = [0] Values []uint32 `protobuf:"varint,3,rep,packed,name=values,proto3" json:"values,omitempty"` // Description missing in models - Increment *PatternFlowIcmpv6EchoCodeCounter `protobuf:"bytes,5,opt,name=increment,proto3" json:"increment,omitempty"` + Increment *PatternFlowGtpv1NextExtensionHeaderTypeCounter `protobuf:"bytes,5,opt,name=increment,proto3" json:"increment,omitempty"` // Description missing in models - Decrement *PatternFlowIcmpv6EchoCodeCounter `protobuf:"bytes,6,opt,name=decrement,proto3" json:"decrement,omitempty"` + Decrement *PatternFlowGtpv1NextExtensionHeaderTypeCounter `protobuf:"bytes,6,opt,name=decrement,proto3" json:"decrement,omitempty"` // One or more metric tags can be used to enable tracking portion of or all bits in // a corresponding header field for metrics per each applicable value. These would appear // as tagged metrics in corresponding flow metrics. - MetricTags []*PatternFlowIcmpv6EchoCodeMetricTag `protobuf:"bytes,7,rep,name=metric_tags,json=metricTags,proto3" json:"metric_tags,omitempty"` + MetricTags []*PatternFlowGtpv1NextExtensionHeaderTypeMetricTag `protobuf:"bytes,7,rep,name=metric_tags,json=metricTags,proto3" json:"metric_tags,omitempty"` } -func (x *PatternFlowIcmpv6EchoCode) Reset() { - *x = PatternFlowIcmpv6EchoCode{} +func (x *PatternFlowGtpv1NextExtensionHeaderType) Reset() { + *x = PatternFlowGtpv1NextExtensionHeaderType{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[703] + mi := &file_otg_proto_msgTypes[664] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowIcmpv6EchoCode) String() string { +func (x *PatternFlowGtpv1NextExtensionHeaderType) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowIcmpv6EchoCode) ProtoMessage() {} +func (*PatternFlowGtpv1NextExtensionHeaderType) ProtoMessage() {} -func (x *PatternFlowIcmpv6EchoCode) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[703] +func (x *PatternFlowGtpv1NextExtensionHeaderType) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[664] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -76905,47 +75946,47 @@ func (x *PatternFlowIcmpv6EchoCode) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use PatternFlowIcmpv6EchoCode.ProtoReflect.Descriptor instead. -func (*PatternFlowIcmpv6EchoCode) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{703} +// Deprecated: Use PatternFlowGtpv1NextExtensionHeaderType.ProtoReflect.Descriptor instead. +func (*PatternFlowGtpv1NextExtensionHeaderType) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{664} } -func (x *PatternFlowIcmpv6EchoCode) GetChoice() PatternFlowIcmpv6EchoCode_Choice_Enum { +func (x *PatternFlowGtpv1NextExtensionHeaderType) GetChoice() PatternFlowGtpv1NextExtensionHeaderType_Choice_Enum { if x != nil && x.Choice != nil { return *x.Choice } - return PatternFlowIcmpv6EchoCode_Choice_unspecified + return PatternFlowGtpv1NextExtensionHeaderType_Choice_unspecified } -func (x *PatternFlowIcmpv6EchoCode) GetValue() uint32 { +func (x *PatternFlowGtpv1NextExtensionHeaderType) GetValue() uint32 { if x != nil && x.Value != nil { return *x.Value } return 0 } -func (x *PatternFlowIcmpv6EchoCode) GetValues() []uint32 { +func (x *PatternFlowGtpv1NextExtensionHeaderType) GetValues() []uint32 { if x != nil { return x.Values } return nil } -func (x *PatternFlowIcmpv6EchoCode) GetIncrement() *PatternFlowIcmpv6EchoCodeCounter { +func (x *PatternFlowGtpv1NextExtensionHeaderType) GetIncrement() *PatternFlowGtpv1NextExtensionHeaderTypeCounter { if x != nil { return x.Increment } return nil } -func (x *PatternFlowIcmpv6EchoCode) GetDecrement() *PatternFlowIcmpv6EchoCodeCounter { +func (x *PatternFlowGtpv1NextExtensionHeaderType) GetDecrement() *PatternFlowGtpv1NextExtensionHeaderTypeCounter { if x != nil { return x.Decrement } return nil } -func (x *PatternFlowIcmpv6EchoCode) GetMetricTags() []*PatternFlowIcmpv6EchoCodeMetricTag { +func (x *PatternFlowGtpv1NextExtensionHeaderType) GetMetricTags() []*PatternFlowGtpv1NextExtensionHeaderTypeMetricTag { if x != nil { return x.MetricTags } @@ -76953,7 +75994,7 @@ func (x *PatternFlowIcmpv6EchoCode) GetMetricTags() []*PatternFlowIcmpv6EchoCode } // integer counter pattern -type PatternFlowIcmpv6EchoIdentifierCounter struct { +type PatternFlowGtpExtensionExtensionLengthCounter struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields @@ -76969,23 +76010,23 @@ type PatternFlowIcmpv6EchoIdentifierCounter struct { Count *uint32 `protobuf:"varint,3,opt,name=count,proto3,oneof" json:"count,omitempty"` } -func (x *PatternFlowIcmpv6EchoIdentifierCounter) Reset() { - *x = PatternFlowIcmpv6EchoIdentifierCounter{} +func (x *PatternFlowGtpExtensionExtensionLengthCounter) Reset() { + *x = PatternFlowGtpExtensionExtensionLengthCounter{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[704] + mi := &file_otg_proto_msgTypes[665] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowIcmpv6EchoIdentifierCounter) String() string { +func (x *PatternFlowGtpExtensionExtensionLengthCounter) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowIcmpv6EchoIdentifierCounter) ProtoMessage() {} +func (*PatternFlowGtpExtensionExtensionLengthCounter) ProtoMessage() {} -func (x *PatternFlowIcmpv6EchoIdentifierCounter) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[704] +func (x *PatternFlowGtpExtensionExtensionLengthCounter) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[665] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -76996,26 +76037,26 @@ func (x *PatternFlowIcmpv6EchoIdentifierCounter) ProtoReflect() protoreflect.Mes return mi.MessageOf(x) } -// Deprecated: Use PatternFlowIcmpv6EchoIdentifierCounter.ProtoReflect.Descriptor instead. -func (*PatternFlowIcmpv6EchoIdentifierCounter) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{704} +// Deprecated: Use PatternFlowGtpExtensionExtensionLengthCounter.ProtoReflect.Descriptor instead. +func (*PatternFlowGtpExtensionExtensionLengthCounter) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{665} } -func (x *PatternFlowIcmpv6EchoIdentifierCounter) GetStart() uint32 { +func (x *PatternFlowGtpExtensionExtensionLengthCounter) GetStart() uint32 { if x != nil && x.Start != nil { return *x.Start } return 0 } -func (x *PatternFlowIcmpv6EchoIdentifierCounter) GetStep() uint32 { +func (x *PatternFlowGtpExtensionExtensionLengthCounter) GetStep() uint32 { if x != nil && x.Step != nil { return *x.Step } return 0 } -func (x *PatternFlowIcmpv6EchoIdentifierCounter) GetCount() uint32 { +func (x *PatternFlowGtpExtensionExtensionLengthCounter) GetCount() uint32 { if x != nil && x.Count != nil { return *x.Count } @@ -77025,7 +76066,7 @@ func (x *PatternFlowIcmpv6EchoIdentifierCounter) GetCount() uint32 { // Metric tag can be used to enable tracking portion of or all bits in a corresponding // header field for metrics per each applicable value. These would appear as tagged // metrics in corresponding flow metrics. -type PatternFlowIcmpv6EchoIdentifierMetricTag struct { +type PatternFlowGtpExtensionExtensionLengthMetricTag struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields @@ -77039,27 +76080,27 @@ type PatternFlowIcmpv6EchoIdentifierMetricTag struct { Offset *uint32 `protobuf:"varint,2,opt,name=offset,proto3,oneof" json:"offset,omitempty"` // Number of bits to track for metrics starting from configured offset of corresponding // header field - // default = 16 + // default = 8 Length *uint32 `protobuf:"varint,3,opt,name=length,proto3,oneof" json:"length,omitempty"` } -func (x *PatternFlowIcmpv6EchoIdentifierMetricTag) Reset() { - *x = PatternFlowIcmpv6EchoIdentifierMetricTag{} +func (x *PatternFlowGtpExtensionExtensionLengthMetricTag) Reset() { + *x = PatternFlowGtpExtensionExtensionLengthMetricTag{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[705] + mi := &file_otg_proto_msgTypes[666] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowIcmpv6EchoIdentifierMetricTag) String() string { +func (x *PatternFlowGtpExtensionExtensionLengthMetricTag) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowIcmpv6EchoIdentifierMetricTag) ProtoMessage() {} +func (*PatternFlowGtpExtensionExtensionLengthMetricTag) ProtoMessage() {} -func (x *PatternFlowIcmpv6EchoIdentifierMetricTag) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[705] +func (x *PatternFlowGtpExtensionExtensionLengthMetricTag) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[666] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -77070,41 +76111,43 @@ func (x *PatternFlowIcmpv6EchoIdentifierMetricTag) ProtoReflect() protoreflect.M return mi.MessageOf(x) } -// Deprecated: Use PatternFlowIcmpv6EchoIdentifierMetricTag.ProtoReflect.Descriptor instead. -func (*PatternFlowIcmpv6EchoIdentifierMetricTag) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{705} +// Deprecated: Use PatternFlowGtpExtensionExtensionLengthMetricTag.ProtoReflect.Descriptor instead. +func (*PatternFlowGtpExtensionExtensionLengthMetricTag) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{666} } -func (x *PatternFlowIcmpv6EchoIdentifierMetricTag) GetName() string { +func (x *PatternFlowGtpExtensionExtensionLengthMetricTag) GetName() string { if x != nil && x.Name != nil { return *x.Name } return "" } -func (x *PatternFlowIcmpv6EchoIdentifierMetricTag) GetOffset() uint32 { +func (x *PatternFlowGtpExtensionExtensionLengthMetricTag) GetOffset() uint32 { if x != nil && x.Offset != nil { return *x.Offset } return 0 } -func (x *PatternFlowIcmpv6EchoIdentifierMetricTag) GetLength() uint32 { +func (x *PatternFlowGtpExtensionExtensionLengthMetricTag) GetLength() uint32 { if x != nil && x.Length != nil { return *x.Length } return 0 } -// ICMPv6 echo identifier -type PatternFlowIcmpv6EchoIdentifier struct { +// This field states the length of this extension header, including the length, the +// contents, and the next extension header field, in 4-octet units, so the length of +// the extension must always be a multiple of 4. +type PatternFlowGtpExtensionExtensionLength struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // Description missing in models // default = Choice.Enum.value - Choice *PatternFlowIcmpv6EchoIdentifier_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.PatternFlowIcmpv6EchoIdentifier_Choice_Enum,oneof" json:"choice,omitempty"` + Choice *PatternFlowGtpExtensionExtensionLength_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.PatternFlowGtpExtensionExtensionLength_Choice_Enum,oneof" json:"choice,omitempty"` // Description missing in models // default = 0 Value *uint32 `protobuf:"varint,2,opt,name=value,proto3,oneof" json:"value,omitempty"` @@ -77112,32 +76155,32 @@ type PatternFlowIcmpv6EchoIdentifier struct { // default = [0] Values []uint32 `protobuf:"varint,3,rep,packed,name=values,proto3" json:"values,omitempty"` // Description missing in models - Increment *PatternFlowIcmpv6EchoIdentifierCounter `protobuf:"bytes,5,opt,name=increment,proto3" json:"increment,omitempty"` + Increment *PatternFlowGtpExtensionExtensionLengthCounter `protobuf:"bytes,5,opt,name=increment,proto3" json:"increment,omitempty"` // Description missing in models - Decrement *PatternFlowIcmpv6EchoIdentifierCounter `protobuf:"bytes,6,opt,name=decrement,proto3" json:"decrement,omitempty"` + Decrement *PatternFlowGtpExtensionExtensionLengthCounter `protobuf:"bytes,6,opt,name=decrement,proto3" json:"decrement,omitempty"` // One or more metric tags can be used to enable tracking portion of or all bits in // a corresponding header field for metrics per each applicable value. These would appear // as tagged metrics in corresponding flow metrics. - MetricTags []*PatternFlowIcmpv6EchoIdentifierMetricTag `protobuf:"bytes,7,rep,name=metric_tags,json=metricTags,proto3" json:"metric_tags,omitempty"` + MetricTags []*PatternFlowGtpExtensionExtensionLengthMetricTag `protobuf:"bytes,7,rep,name=metric_tags,json=metricTags,proto3" json:"metric_tags,omitempty"` } -func (x *PatternFlowIcmpv6EchoIdentifier) Reset() { - *x = PatternFlowIcmpv6EchoIdentifier{} +func (x *PatternFlowGtpExtensionExtensionLength) Reset() { + *x = PatternFlowGtpExtensionExtensionLength{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[706] + mi := &file_otg_proto_msgTypes[667] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowIcmpv6EchoIdentifier) String() string { +func (x *PatternFlowGtpExtensionExtensionLength) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowIcmpv6EchoIdentifier) ProtoMessage() {} +func (*PatternFlowGtpExtensionExtensionLength) ProtoMessage() {} -func (x *PatternFlowIcmpv6EchoIdentifier) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[706] +func (x *PatternFlowGtpExtensionExtensionLength) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[667] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -77148,47 +76191,47 @@ func (x *PatternFlowIcmpv6EchoIdentifier) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use PatternFlowIcmpv6EchoIdentifier.ProtoReflect.Descriptor instead. -func (*PatternFlowIcmpv6EchoIdentifier) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{706} +// Deprecated: Use PatternFlowGtpExtensionExtensionLength.ProtoReflect.Descriptor instead. +func (*PatternFlowGtpExtensionExtensionLength) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{667} } -func (x *PatternFlowIcmpv6EchoIdentifier) GetChoice() PatternFlowIcmpv6EchoIdentifier_Choice_Enum { +func (x *PatternFlowGtpExtensionExtensionLength) GetChoice() PatternFlowGtpExtensionExtensionLength_Choice_Enum { if x != nil && x.Choice != nil { return *x.Choice } - return PatternFlowIcmpv6EchoIdentifier_Choice_unspecified + return PatternFlowGtpExtensionExtensionLength_Choice_unspecified } -func (x *PatternFlowIcmpv6EchoIdentifier) GetValue() uint32 { +func (x *PatternFlowGtpExtensionExtensionLength) GetValue() uint32 { if x != nil && x.Value != nil { return *x.Value } return 0 } -func (x *PatternFlowIcmpv6EchoIdentifier) GetValues() []uint32 { +func (x *PatternFlowGtpExtensionExtensionLength) GetValues() []uint32 { if x != nil { return x.Values } return nil } -func (x *PatternFlowIcmpv6EchoIdentifier) GetIncrement() *PatternFlowIcmpv6EchoIdentifierCounter { +func (x *PatternFlowGtpExtensionExtensionLength) GetIncrement() *PatternFlowGtpExtensionExtensionLengthCounter { if x != nil { return x.Increment } return nil } -func (x *PatternFlowIcmpv6EchoIdentifier) GetDecrement() *PatternFlowIcmpv6EchoIdentifierCounter { +func (x *PatternFlowGtpExtensionExtensionLength) GetDecrement() *PatternFlowGtpExtensionExtensionLengthCounter { if x != nil { return x.Decrement } return nil } -func (x *PatternFlowIcmpv6EchoIdentifier) GetMetricTags() []*PatternFlowIcmpv6EchoIdentifierMetricTag { +func (x *PatternFlowGtpExtensionExtensionLength) GetMetricTags() []*PatternFlowGtpExtensionExtensionLengthMetricTag { if x != nil { return x.MetricTags } @@ -77196,39 +76239,39 @@ func (x *PatternFlowIcmpv6EchoIdentifier) GetMetricTags() []*PatternFlowIcmpv6Ec } // integer counter pattern -type PatternFlowIcmpv6EchoSequenceNumberCounter struct { +type PatternFlowGtpExtensionContentsCounter struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // Description missing in models // default = 0 - Start *uint32 `protobuf:"varint,1,opt,name=start,proto3,oneof" json:"start,omitempty"` + Start *uint64 `protobuf:"varint,1,opt,name=start,proto3,oneof" json:"start,omitempty"` // Description missing in models // default = 1 - Step *uint32 `protobuf:"varint,2,opt,name=step,proto3,oneof" json:"step,omitempty"` + Step *uint64 `protobuf:"varint,2,opt,name=step,proto3,oneof" json:"step,omitempty"` // Description missing in models // default = 1 - Count *uint32 `protobuf:"varint,3,opt,name=count,proto3,oneof" json:"count,omitempty"` + Count *uint64 `protobuf:"varint,3,opt,name=count,proto3,oneof" json:"count,omitempty"` } -func (x *PatternFlowIcmpv6EchoSequenceNumberCounter) Reset() { - *x = PatternFlowIcmpv6EchoSequenceNumberCounter{} +func (x *PatternFlowGtpExtensionContentsCounter) Reset() { + *x = PatternFlowGtpExtensionContentsCounter{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[707] + mi := &file_otg_proto_msgTypes[668] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowIcmpv6EchoSequenceNumberCounter) String() string { +func (x *PatternFlowGtpExtensionContentsCounter) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowIcmpv6EchoSequenceNumberCounter) ProtoMessage() {} +func (*PatternFlowGtpExtensionContentsCounter) ProtoMessage() {} -func (x *PatternFlowIcmpv6EchoSequenceNumberCounter) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[707] +func (x *PatternFlowGtpExtensionContentsCounter) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[668] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -77239,26 +76282,26 @@ func (x *PatternFlowIcmpv6EchoSequenceNumberCounter) ProtoReflect() protoreflect return mi.MessageOf(x) } -// Deprecated: Use PatternFlowIcmpv6EchoSequenceNumberCounter.ProtoReflect.Descriptor instead. -func (*PatternFlowIcmpv6EchoSequenceNumberCounter) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{707} +// Deprecated: Use PatternFlowGtpExtensionContentsCounter.ProtoReflect.Descriptor instead. +func (*PatternFlowGtpExtensionContentsCounter) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{668} } -func (x *PatternFlowIcmpv6EchoSequenceNumberCounter) GetStart() uint32 { +func (x *PatternFlowGtpExtensionContentsCounter) GetStart() uint64 { if x != nil && x.Start != nil { return *x.Start } return 0 } -func (x *PatternFlowIcmpv6EchoSequenceNumberCounter) GetStep() uint32 { +func (x *PatternFlowGtpExtensionContentsCounter) GetStep() uint64 { if x != nil && x.Step != nil { return *x.Step } return 0 } -func (x *PatternFlowIcmpv6EchoSequenceNumberCounter) GetCount() uint32 { +func (x *PatternFlowGtpExtensionContentsCounter) GetCount() uint64 { if x != nil && x.Count != nil { return *x.Count } @@ -77268,7 +76311,7 @@ func (x *PatternFlowIcmpv6EchoSequenceNumberCounter) GetCount() uint32 { // Metric tag can be used to enable tracking portion of or all bits in a corresponding // header field for metrics per each applicable value. These would appear as tagged // metrics in corresponding flow metrics. -type PatternFlowIcmpv6EchoSequenceNumberMetricTag struct { +type PatternFlowGtpExtensionContentsMetricTag struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields @@ -77279,30 +76322,30 @@ type PatternFlowIcmpv6EchoSequenceNumberMetricTag struct { Name *string `protobuf:"bytes,1,opt,name=name,proto3,oneof" json:"name,omitempty"` // Offset in bits relative to start of corresponding header field // default = 0 - Offset *uint32 `protobuf:"varint,2,opt,name=offset,proto3,oneof" json:"offset,omitempty"` + Offset *uint64 `protobuf:"varint,2,opt,name=offset,proto3,oneof" json:"offset,omitempty"` // Number of bits to track for metrics starting from configured offset of corresponding // header field - // default = 16 - Length *uint32 `protobuf:"varint,3,opt,name=length,proto3,oneof" json:"length,omitempty"` + // default = 48 + Length *uint64 `protobuf:"varint,3,opt,name=length,proto3,oneof" json:"length,omitempty"` } -func (x *PatternFlowIcmpv6EchoSequenceNumberMetricTag) Reset() { - *x = PatternFlowIcmpv6EchoSequenceNumberMetricTag{} +func (x *PatternFlowGtpExtensionContentsMetricTag) Reset() { + *x = PatternFlowGtpExtensionContentsMetricTag{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[708] + mi := &file_otg_proto_msgTypes[669] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowIcmpv6EchoSequenceNumberMetricTag) String() string { +func (x *PatternFlowGtpExtensionContentsMetricTag) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowIcmpv6EchoSequenceNumberMetricTag) ProtoMessage() {} +func (*PatternFlowGtpExtensionContentsMetricTag) ProtoMessage() {} -func (x *PatternFlowIcmpv6EchoSequenceNumberMetricTag) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[708] +func (x *PatternFlowGtpExtensionContentsMetricTag) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[669] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -77313,74 +76356,74 @@ func (x *PatternFlowIcmpv6EchoSequenceNumberMetricTag) ProtoReflect() protorefle return mi.MessageOf(x) } -// Deprecated: Use PatternFlowIcmpv6EchoSequenceNumberMetricTag.ProtoReflect.Descriptor instead. -func (*PatternFlowIcmpv6EchoSequenceNumberMetricTag) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{708} +// Deprecated: Use PatternFlowGtpExtensionContentsMetricTag.ProtoReflect.Descriptor instead. +func (*PatternFlowGtpExtensionContentsMetricTag) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{669} } -func (x *PatternFlowIcmpv6EchoSequenceNumberMetricTag) GetName() string { +func (x *PatternFlowGtpExtensionContentsMetricTag) GetName() string { if x != nil && x.Name != nil { return *x.Name } return "" } -func (x *PatternFlowIcmpv6EchoSequenceNumberMetricTag) GetOffset() uint32 { +func (x *PatternFlowGtpExtensionContentsMetricTag) GetOffset() uint64 { if x != nil && x.Offset != nil { return *x.Offset } return 0 } -func (x *PatternFlowIcmpv6EchoSequenceNumberMetricTag) GetLength() uint32 { +func (x *PatternFlowGtpExtensionContentsMetricTag) GetLength() uint64 { if x != nil && x.Length != nil { return *x.Length } return 0 } -// ICMPv6 echo sequence number -type PatternFlowIcmpv6EchoSequenceNumber struct { +// The extension header contents +type PatternFlowGtpExtensionContents struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // Description missing in models // default = Choice.Enum.value - Choice *PatternFlowIcmpv6EchoSequenceNumber_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.PatternFlowIcmpv6EchoSequenceNumber_Choice_Enum,oneof" json:"choice,omitempty"` + Choice *PatternFlowGtpExtensionContents_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.PatternFlowGtpExtensionContents_Choice_Enum,oneof" json:"choice,omitempty"` // Description missing in models // default = 0 - Value *uint32 `protobuf:"varint,2,opt,name=value,proto3,oneof" json:"value,omitempty"` + Value *uint64 `protobuf:"varint,2,opt,name=value,proto3,oneof" json:"value,omitempty"` // Description missing in models // default = [0] - Values []uint32 `protobuf:"varint,3,rep,packed,name=values,proto3" json:"values,omitempty"` + Values []uint64 `protobuf:"varint,3,rep,packed,name=values,proto3" json:"values,omitempty"` // Description missing in models - Increment *PatternFlowIcmpv6EchoSequenceNumberCounter `protobuf:"bytes,5,opt,name=increment,proto3" json:"increment,omitempty"` + Increment *PatternFlowGtpExtensionContentsCounter `protobuf:"bytes,5,opt,name=increment,proto3" json:"increment,omitempty"` // Description missing in models - Decrement *PatternFlowIcmpv6EchoSequenceNumberCounter `protobuf:"bytes,6,opt,name=decrement,proto3" json:"decrement,omitempty"` + Decrement *PatternFlowGtpExtensionContentsCounter `protobuf:"bytes,6,opt,name=decrement,proto3" json:"decrement,omitempty"` // One or more metric tags can be used to enable tracking portion of or all bits in // a corresponding header field for metrics per each applicable value. These would appear // as tagged metrics in corresponding flow metrics. - MetricTags []*PatternFlowIcmpv6EchoSequenceNumberMetricTag `protobuf:"bytes,7,rep,name=metric_tags,json=metricTags,proto3" json:"metric_tags,omitempty"` + MetricTags []*PatternFlowGtpExtensionContentsMetricTag `protobuf:"bytes,7,rep,name=metric_tags,json=metricTags,proto3" json:"metric_tags,omitempty"` } -func (x *PatternFlowIcmpv6EchoSequenceNumber) Reset() { - *x = PatternFlowIcmpv6EchoSequenceNumber{} +func (x *PatternFlowGtpExtensionContents) Reset() { + *x = PatternFlowGtpExtensionContents{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[709] + mi := &file_otg_proto_msgTypes[670] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowIcmpv6EchoSequenceNumber) String() string { +func (x *PatternFlowGtpExtensionContents) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowIcmpv6EchoSequenceNumber) ProtoMessage() {} +func (*PatternFlowGtpExtensionContents) ProtoMessage() {} -func (x *PatternFlowIcmpv6EchoSequenceNumber) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[709] +func (x *PatternFlowGtpExtensionContents) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[670] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -77391,199 +76434,61 @@ func (x *PatternFlowIcmpv6EchoSequenceNumber) ProtoReflect() protoreflect.Messag return mi.MessageOf(x) } -// Deprecated: Use PatternFlowIcmpv6EchoSequenceNumber.ProtoReflect.Descriptor instead. -func (*PatternFlowIcmpv6EchoSequenceNumber) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{709} +// Deprecated: Use PatternFlowGtpExtensionContents.ProtoReflect.Descriptor instead. +func (*PatternFlowGtpExtensionContents) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{670} } -func (x *PatternFlowIcmpv6EchoSequenceNumber) GetChoice() PatternFlowIcmpv6EchoSequenceNumber_Choice_Enum { +func (x *PatternFlowGtpExtensionContents) GetChoice() PatternFlowGtpExtensionContents_Choice_Enum { if x != nil && x.Choice != nil { return *x.Choice } - return PatternFlowIcmpv6EchoSequenceNumber_Choice_unspecified + return PatternFlowGtpExtensionContents_Choice_unspecified } -func (x *PatternFlowIcmpv6EchoSequenceNumber) GetValue() uint32 { +func (x *PatternFlowGtpExtensionContents) GetValue() uint64 { if x != nil && x.Value != nil { return *x.Value } return 0 } -func (x *PatternFlowIcmpv6EchoSequenceNumber) GetValues() []uint32 { +func (x *PatternFlowGtpExtensionContents) GetValues() []uint64 { if x != nil { return x.Values } return nil } -func (x *PatternFlowIcmpv6EchoSequenceNumber) GetIncrement() *PatternFlowIcmpv6EchoSequenceNumberCounter { +func (x *PatternFlowGtpExtensionContents) GetIncrement() *PatternFlowGtpExtensionContentsCounter { if x != nil { return x.Increment } return nil } -func (x *PatternFlowIcmpv6EchoSequenceNumber) GetDecrement() *PatternFlowIcmpv6EchoSequenceNumberCounter { +func (x *PatternFlowGtpExtensionContents) GetDecrement() *PatternFlowGtpExtensionContentsCounter { if x != nil { return x.Decrement } return nil } -func (x *PatternFlowIcmpv6EchoSequenceNumber) GetMetricTags() []*PatternFlowIcmpv6EchoSequenceNumberMetricTag { +func (x *PatternFlowGtpExtensionContents) GetMetricTags() []*PatternFlowGtpExtensionContentsMetricTag { if x != nil { return x.MetricTags } return nil } -// ICMPv6 checksum -type PatternFlowIcmpv6EchoChecksum struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // The type of checksum - // default = Choice.Enum.generated - Choice *PatternFlowIcmpv6EchoChecksum_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.PatternFlowIcmpv6EchoChecksum_Choice_Enum,oneof" json:"choice,omitempty"` - // A system generated checksum value - // default = Generated.Enum.good - Generated *PatternFlowIcmpv6EchoChecksum_Generated_Enum `protobuf:"varint,2,opt,name=generated,proto3,enum=otg.PatternFlowIcmpv6EchoChecksum_Generated_Enum,oneof" json:"generated,omitempty"` - // A custom checksum value - Custom *uint32 `protobuf:"varint,3,opt,name=custom,proto3,oneof" json:"custom,omitempty"` -} - -func (x *PatternFlowIcmpv6EchoChecksum) Reset() { - *x = PatternFlowIcmpv6EchoChecksum{} - if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[710] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *PatternFlowIcmpv6EchoChecksum) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*PatternFlowIcmpv6EchoChecksum) ProtoMessage() {} - -func (x *PatternFlowIcmpv6EchoChecksum) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[710] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use PatternFlowIcmpv6EchoChecksum.ProtoReflect.Descriptor instead. -func (*PatternFlowIcmpv6EchoChecksum) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{710} -} - -func (x *PatternFlowIcmpv6EchoChecksum) GetChoice() PatternFlowIcmpv6EchoChecksum_Choice_Enum { - if x != nil && x.Choice != nil { - return *x.Choice - } - return PatternFlowIcmpv6EchoChecksum_Choice_unspecified -} - -func (x *PatternFlowIcmpv6EchoChecksum) GetGenerated() PatternFlowIcmpv6EchoChecksum_Generated_Enum { - if x != nil && x.Generated != nil { - return *x.Generated - } - return PatternFlowIcmpv6EchoChecksum_Generated_unspecified -} - -func (x *PatternFlowIcmpv6EchoChecksum) GetCustom() uint32 { - if x != nil && x.Custom != nil { - return *x.Custom - } - return 0 -} - -// ICMPv6 checksum -type PatternFlowIcmpv6CommonChecksum struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // The type of checksum - // default = Choice.Enum.generated - Choice *PatternFlowIcmpv6CommonChecksum_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.PatternFlowIcmpv6CommonChecksum_Choice_Enum,oneof" json:"choice,omitempty"` - // A system generated checksum value - // default = Generated.Enum.good - Generated *PatternFlowIcmpv6CommonChecksum_Generated_Enum `protobuf:"varint,2,opt,name=generated,proto3,enum=otg.PatternFlowIcmpv6CommonChecksum_Generated_Enum,oneof" json:"generated,omitempty"` - // A custom checksum value - Custom *uint32 `protobuf:"varint,3,opt,name=custom,proto3,oneof" json:"custom,omitempty"` -} - -func (x *PatternFlowIcmpv6CommonChecksum) Reset() { - *x = PatternFlowIcmpv6CommonChecksum{} - if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[711] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *PatternFlowIcmpv6CommonChecksum) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*PatternFlowIcmpv6CommonChecksum) ProtoMessage() {} - -func (x *PatternFlowIcmpv6CommonChecksum) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[711] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use PatternFlowIcmpv6CommonChecksum.ProtoReflect.Descriptor instead. -func (*PatternFlowIcmpv6CommonChecksum) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{711} -} - -func (x *PatternFlowIcmpv6CommonChecksum) GetChoice() PatternFlowIcmpv6CommonChecksum_Choice_Enum { - if x != nil && x.Choice != nil { - return *x.Choice - } - return PatternFlowIcmpv6CommonChecksum_Choice_unspecified -} - -func (x *PatternFlowIcmpv6CommonChecksum) GetGenerated() PatternFlowIcmpv6CommonChecksum_Generated_Enum { - if x != nil && x.Generated != nil { - return *x.Generated - } - return PatternFlowIcmpv6CommonChecksum_Generated_unspecified -} - -func (x *PatternFlowIcmpv6CommonChecksum) GetCustom() uint32 { - if x != nil && x.Custom != nil { - return *x.Custom - } - return 0 -} - // integer counter pattern -type PatternFlowPppAddressCounter struct { +type PatternFlowGtpExtensionNextExtensionHeaderCounter struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // Description missing in models - // default = 255 + // default = 0 Start *uint32 `protobuf:"varint,1,opt,name=start,proto3,oneof" json:"start,omitempty"` // Description missing in models // default = 1 @@ -77593,23 +76498,23 @@ type PatternFlowPppAddressCounter struct { Count *uint32 `protobuf:"varint,3,opt,name=count,proto3,oneof" json:"count,omitempty"` } -func (x *PatternFlowPppAddressCounter) Reset() { - *x = PatternFlowPppAddressCounter{} +func (x *PatternFlowGtpExtensionNextExtensionHeaderCounter) Reset() { + *x = PatternFlowGtpExtensionNextExtensionHeaderCounter{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[712] + mi := &file_otg_proto_msgTypes[671] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowPppAddressCounter) String() string { +func (x *PatternFlowGtpExtensionNextExtensionHeaderCounter) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowPppAddressCounter) ProtoMessage() {} +func (*PatternFlowGtpExtensionNextExtensionHeaderCounter) ProtoMessage() {} -func (x *PatternFlowPppAddressCounter) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[712] +func (x *PatternFlowGtpExtensionNextExtensionHeaderCounter) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[671] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -77620,26 +76525,26 @@ func (x *PatternFlowPppAddressCounter) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use PatternFlowPppAddressCounter.ProtoReflect.Descriptor instead. -func (*PatternFlowPppAddressCounter) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{712} +// Deprecated: Use PatternFlowGtpExtensionNextExtensionHeaderCounter.ProtoReflect.Descriptor instead. +func (*PatternFlowGtpExtensionNextExtensionHeaderCounter) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{671} } -func (x *PatternFlowPppAddressCounter) GetStart() uint32 { +func (x *PatternFlowGtpExtensionNextExtensionHeaderCounter) GetStart() uint32 { if x != nil && x.Start != nil { return *x.Start } return 0 } -func (x *PatternFlowPppAddressCounter) GetStep() uint32 { +func (x *PatternFlowGtpExtensionNextExtensionHeaderCounter) GetStep() uint32 { if x != nil && x.Step != nil { return *x.Step } return 0 } -func (x *PatternFlowPppAddressCounter) GetCount() uint32 { +func (x *PatternFlowGtpExtensionNextExtensionHeaderCounter) GetCount() uint32 { if x != nil && x.Count != nil { return *x.Count } @@ -77649,7 +76554,7 @@ func (x *PatternFlowPppAddressCounter) GetCount() uint32 { // Metric tag can be used to enable tracking portion of or all bits in a corresponding // header field for metrics per each applicable value. These would appear as tagged // metrics in corresponding flow metrics. -type PatternFlowPppAddressMetricTag struct { +type PatternFlowGtpExtensionNextExtensionHeaderMetricTag struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields @@ -77667,23 +76572,23 @@ type PatternFlowPppAddressMetricTag struct { Length *uint32 `protobuf:"varint,3,opt,name=length,proto3,oneof" json:"length,omitempty"` } -func (x *PatternFlowPppAddressMetricTag) Reset() { - *x = PatternFlowPppAddressMetricTag{} +func (x *PatternFlowGtpExtensionNextExtensionHeaderMetricTag) Reset() { + *x = PatternFlowGtpExtensionNextExtensionHeaderMetricTag{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[713] + mi := &file_otg_proto_msgTypes[672] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowPppAddressMetricTag) String() string { +func (x *PatternFlowGtpExtensionNextExtensionHeaderMetricTag) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowPppAddressMetricTag) ProtoMessage() {} +func (*PatternFlowGtpExtensionNextExtensionHeaderMetricTag) ProtoMessage() {} -func (x *PatternFlowPppAddressMetricTag) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[713] +func (x *PatternFlowGtpExtensionNextExtensionHeaderMetricTag) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[672] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -77694,74 +76599,75 @@ func (x *PatternFlowPppAddressMetricTag) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use PatternFlowPppAddressMetricTag.ProtoReflect.Descriptor instead. -func (*PatternFlowPppAddressMetricTag) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{713} +// Deprecated: Use PatternFlowGtpExtensionNextExtensionHeaderMetricTag.ProtoReflect.Descriptor instead. +func (*PatternFlowGtpExtensionNextExtensionHeaderMetricTag) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{672} } -func (x *PatternFlowPppAddressMetricTag) GetName() string { +func (x *PatternFlowGtpExtensionNextExtensionHeaderMetricTag) GetName() string { if x != nil && x.Name != nil { return *x.Name } return "" } -func (x *PatternFlowPppAddressMetricTag) GetOffset() uint32 { +func (x *PatternFlowGtpExtensionNextExtensionHeaderMetricTag) GetOffset() uint32 { if x != nil && x.Offset != nil { return *x.Offset } return 0 } -func (x *PatternFlowPppAddressMetricTag) GetLength() uint32 { +func (x *PatternFlowGtpExtensionNextExtensionHeaderMetricTag) GetLength() uint32 { if x != nil && x.Length != nil { return *x.Length } return 0 } -// PPP address -type PatternFlowPppAddress struct { +// It states the type of the next extension, or 0 if no next extension exists. This +// permits chaining several next extension headers. +type PatternFlowGtpExtensionNextExtensionHeader struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // Description missing in models // default = Choice.Enum.value - Choice *PatternFlowPppAddress_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.PatternFlowPppAddress_Choice_Enum,oneof" json:"choice,omitempty"` + Choice *PatternFlowGtpExtensionNextExtensionHeader_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.PatternFlowGtpExtensionNextExtensionHeader_Choice_Enum,oneof" json:"choice,omitempty"` // Description missing in models - // default = 255 + // default = 0 Value *uint32 `protobuf:"varint,2,opt,name=value,proto3,oneof" json:"value,omitempty"` // Description missing in models - // default = [255] + // default = [0] Values []uint32 `protobuf:"varint,3,rep,packed,name=values,proto3" json:"values,omitempty"` // Description missing in models - Increment *PatternFlowPppAddressCounter `protobuf:"bytes,5,opt,name=increment,proto3" json:"increment,omitempty"` + Increment *PatternFlowGtpExtensionNextExtensionHeaderCounter `protobuf:"bytes,5,opt,name=increment,proto3" json:"increment,omitempty"` // Description missing in models - Decrement *PatternFlowPppAddressCounter `protobuf:"bytes,6,opt,name=decrement,proto3" json:"decrement,omitempty"` + Decrement *PatternFlowGtpExtensionNextExtensionHeaderCounter `protobuf:"bytes,6,opt,name=decrement,proto3" json:"decrement,omitempty"` // One or more metric tags can be used to enable tracking portion of or all bits in // a corresponding header field for metrics per each applicable value. These would appear // as tagged metrics in corresponding flow metrics. - MetricTags []*PatternFlowPppAddressMetricTag `protobuf:"bytes,7,rep,name=metric_tags,json=metricTags,proto3" json:"metric_tags,omitempty"` + MetricTags []*PatternFlowGtpExtensionNextExtensionHeaderMetricTag `protobuf:"bytes,7,rep,name=metric_tags,json=metricTags,proto3" json:"metric_tags,omitempty"` } -func (x *PatternFlowPppAddress) Reset() { - *x = PatternFlowPppAddress{} +func (x *PatternFlowGtpExtensionNextExtensionHeader) Reset() { + *x = PatternFlowGtpExtensionNextExtensionHeader{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[714] + mi := &file_otg_proto_msgTypes[673] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowPppAddress) String() string { +func (x *PatternFlowGtpExtensionNextExtensionHeader) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowPppAddress) ProtoMessage() {} +func (*PatternFlowGtpExtensionNextExtensionHeader) ProtoMessage() {} -func (x *PatternFlowPppAddress) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[714] +func (x *PatternFlowGtpExtensionNextExtensionHeader) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[673] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -77772,47 +76678,47 @@ func (x *PatternFlowPppAddress) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use PatternFlowPppAddress.ProtoReflect.Descriptor instead. -func (*PatternFlowPppAddress) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{714} +// Deprecated: Use PatternFlowGtpExtensionNextExtensionHeader.ProtoReflect.Descriptor instead. +func (*PatternFlowGtpExtensionNextExtensionHeader) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{673} } -func (x *PatternFlowPppAddress) GetChoice() PatternFlowPppAddress_Choice_Enum { +func (x *PatternFlowGtpExtensionNextExtensionHeader) GetChoice() PatternFlowGtpExtensionNextExtensionHeader_Choice_Enum { if x != nil && x.Choice != nil { return *x.Choice } - return PatternFlowPppAddress_Choice_unspecified + return PatternFlowGtpExtensionNextExtensionHeader_Choice_unspecified } -func (x *PatternFlowPppAddress) GetValue() uint32 { +func (x *PatternFlowGtpExtensionNextExtensionHeader) GetValue() uint32 { if x != nil && x.Value != nil { return *x.Value } return 0 } -func (x *PatternFlowPppAddress) GetValues() []uint32 { +func (x *PatternFlowGtpExtensionNextExtensionHeader) GetValues() []uint32 { if x != nil { return x.Values } return nil } -func (x *PatternFlowPppAddress) GetIncrement() *PatternFlowPppAddressCounter { +func (x *PatternFlowGtpExtensionNextExtensionHeader) GetIncrement() *PatternFlowGtpExtensionNextExtensionHeaderCounter { if x != nil { return x.Increment } return nil } -func (x *PatternFlowPppAddress) GetDecrement() *PatternFlowPppAddressCounter { +func (x *PatternFlowGtpExtensionNextExtensionHeader) GetDecrement() *PatternFlowGtpExtensionNextExtensionHeaderCounter { if x != nil { return x.Decrement } return nil } -func (x *PatternFlowPppAddress) GetMetricTags() []*PatternFlowPppAddressMetricTag { +func (x *PatternFlowGtpExtensionNextExtensionHeader) GetMetricTags() []*PatternFlowGtpExtensionNextExtensionHeaderMetricTag { if x != nil { return x.MetricTags } @@ -77820,13 +76726,13 @@ func (x *PatternFlowPppAddress) GetMetricTags() []*PatternFlowPppAddressMetricTa } // integer counter pattern -type PatternFlowPppControlCounter struct { +type PatternFlowGtpv2VersionCounter struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // Description missing in models - // default = 3 + // default = 2 Start *uint32 `protobuf:"varint,1,opt,name=start,proto3,oneof" json:"start,omitempty"` // Description missing in models // default = 1 @@ -77836,23 +76742,23 @@ type PatternFlowPppControlCounter struct { Count *uint32 `protobuf:"varint,3,opt,name=count,proto3,oneof" json:"count,omitempty"` } -func (x *PatternFlowPppControlCounter) Reset() { - *x = PatternFlowPppControlCounter{} +func (x *PatternFlowGtpv2VersionCounter) Reset() { + *x = PatternFlowGtpv2VersionCounter{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[715] + mi := &file_otg_proto_msgTypes[674] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowPppControlCounter) String() string { +func (x *PatternFlowGtpv2VersionCounter) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowPppControlCounter) ProtoMessage() {} +func (*PatternFlowGtpv2VersionCounter) ProtoMessage() {} -func (x *PatternFlowPppControlCounter) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[715] +func (x *PatternFlowGtpv2VersionCounter) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[674] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -77863,26 +76769,26 @@ func (x *PatternFlowPppControlCounter) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use PatternFlowPppControlCounter.ProtoReflect.Descriptor instead. -func (*PatternFlowPppControlCounter) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{715} +// Deprecated: Use PatternFlowGtpv2VersionCounter.ProtoReflect.Descriptor instead. +func (*PatternFlowGtpv2VersionCounter) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{674} } -func (x *PatternFlowPppControlCounter) GetStart() uint32 { +func (x *PatternFlowGtpv2VersionCounter) GetStart() uint32 { if x != nil && x.Start != nil { return *x.Start } return 0 } -func (x *PatternFlowPppControlCounter) GetStep() uint32 { +func (x *PatternFlowGtpv2VersionCounter) GetStep() uint32 { if x != nil && x.Step != nil { return *x.Step } return 0 } -func (x *PatternFlowPppControlCounter) GetCount() uint32 { +func (x *PatternFlowGtpv2VersionCounter) GetCount() uint32 { if x != nil && x.Count != nil { return *x.Count } @@ -77892,7 +76798,7 @@ func (x *PatternFlowPppControlCounter) GetCount() uint32 { // Metric tag can be used to enable tracking portion of or all bits in a corresponding // header field for metrics per each applicable value. These would appear as tagged // metrics in corresponding flow metrics. -type PatternFlowPppControlMetricTag struct { +type PatternFlowGtpv2VersionMetricTag struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields @@ -77906,27 +76812,27 @@ type PatternFlowPppControlMetricTag struct { Offset *uint32 `protobuf:"varint,2,opt,name=offset,proto3,oneof" json:"offset,omitempty"` // Number of bits to track for metrics starting from configured offset of corresponding // header field - // default = 8 + // default = 3 Length *uint32 `protobuf:"varint,3,opt,name=length,proto3,oneof" json:"length,omitempty"` } -func (x *PatternFlowPppControlMetricTag) Reset() { - *x = PatternFlowPppControlMetricTag{} +func (x *PatternFlowGtpv2VersionMetricTag) Reset() { + *x = PatternFlowGtpv2VersionMetricTag{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[716] + mi := &file_otg_proto_msgTypes[675] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowPppControlMetricTag) String() string { +func (x *PatternFlowGtpv2VersionMetricTag) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowPppControlMetricTag) ProtoMessage() {} +func (*PatternFlowGtpv2VersionMetricTag) ProtoMessage() {} -func (x *PatternFlowPppControlMetricTag) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[716] +func (x *PatternFlowGtpv2VersionMetricTag) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[675] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -77937,74 +76843,74 @@ func (x *PatternFlowPppControlMetricTag) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use PatternFlowPppControlMetricTag.ProtoReflect.Descriptor instead. -func (*PatternFlowPppControlMetricTag) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{716} +// Deprecated: Use PatternFlowGtpv2VersionMetricTag.ProtoReflect.Descriptor instead. +func (*PatternFlowGtpv2VersionMetricTag) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{675} } -func (x *PatternFlowPppControlMetricTag) GetName() string { +func (x *PatternFlowGtpv2VersionMetricTag) GetName() string { if x != nil && x.Name != nil { return *x.Name } return "" } -func (x *PatternFlowPppControlMetricTag) GetOffset() uint32 { +func (x *PatternFlowGtpv2VersionMetricTag) GetOffset() uint32 { if x != nil && x.Offset != nil { return *x.Offset } return 0 } -func (x *PatternFlowPppControlMetricTag) GetLength() uint32 { +func (x *PatternFlowGtpv2VersionMetricTag) GetLength() uint32 { if x != nil && x.Length != nil { return *x.Length } return 0 } -// PPP control -type PatternFlowPppControl struct { +// Version number +type PatternFlowGtpv2Version struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // Description missing in models // default = Choice.Enum.value - Choice *PatternFlowPppControl_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.PatternFlowPppControl_Choice_Enum,oneof" json:"choice,omitempty"` + Choice *PatternFlowGtpv2Version_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.PatternFlowGtpv2Version_Choice_Enum,oneof" json:"choice,omitempty"` // Description missing in models - // default = 3 + // default = 2 Value *uint32 `protobuf:"varint,2,opt,name=value,proto3,oneof" json:"value,omitempty"` // Description missing in models - // default = [3] + // default = [2] Values []uint32 `protobuf:"varint,3,rep,packed,name=values,proto3" json:"values,omitempty"` // Description missing in models - Increment *PatternFlowPppControlCounter `protobuf:"bytes,5,opt,name=increment,proto3" json:"increment,omitempty"` + Increment *PatternFlowGtpv2VersionCounter `protobuf:"bytes,5,opt,name=increment,proto3" json:"increment,omitempty"` // Description missing in models - Decrement *PatternFlowPppControlCounter `protobuf:"bytes,6,opt,name=decrement,proto3" json:"decrement,omitempty"` + Decrement *PatternFlowGtpv2VersionCounter `protobuf:"bytes,6,opt,name=decrement,proto3" json:"decrement,omitempty"` // One or more metric tags can be used to enable tracking portion of or all bits in // a corresponding header field for metrics per each applicable value. These would appear // as tagged metrics in corresponding flow metrics. - MetricTags []*PatternFlowPppControlMetricTag `protobuf:"bytes,7,rep,name=metric_tags,json=metricTags,proto3" json:"metric_tags,omitempty"` + MetricTags []*PatternFlowGtpv2VersionMetricTag `protobuf:"bytes,7,rep,name=metric_tags,json=metricTags,proto3" json:"metric_tags,omitempty"` } -func (x *PatternFlowPppControl) Reset() { - *x = PatternFlowPppControl{} +func (x *PatternFlowGtpv2Version) Reset() { + *x = PatternFlowGtpv2Version{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[717] + mi := &file_otg_proto_msgTypes[676] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowPppControl) String() string { +func (x *PatternFlowGtpv2Version) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowPppControl) ProtoMessage() {} +func (*PatternFlowGtpv2Version) ProtoMessage() {} -func (x *PatternFlowPppControl) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[717] +func (x *PatternFlowGtpv2Version) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[676] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -78015,47 +76921,47 @@ func (x *PatternFlowPppControl) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use PatternFlowPppControl.ProtoReflect.Descriptor instead. -func (*PatternFlowPppControl) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{717} +// Deprecated: Use PatternFlowGtpv2Version.ProtoReflect.Descriptor instead. +func (*PatternFlowGtpv2Version) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{676} } -func (x *PatternFlowPppControl) GetChoice() PatternFlowPppControl_Choice_Enum { +func (x *PatternFlowGtpv2Version) GetChoice() PatternFlowGtpv2Version_Choice_Enum { if x != nil && x.Choice != nil { return *x.Choice } - return PatternFlowPppControl_Choice_unspecified + return PatternFlowGtpv2Version_Choice_unspecified } -func (x *PatternFlowPppControl) GetValue() uint32 { +func (x *PatternFlowGtpv2Version) GetValue() uint32 { if x != nil && x.Value != nil { return *x.Value } return 0 } -func (x *PatternFlowPppControl) GetValues() []uint32 { +func (x *PatternFlowGtpv2Version) GetValues() []uint32 { if x != nil { return x.Values } return nil } -func (x *PatternFlowPppControl) GetIncrement() *PatternFlowPppControlCounter { +func (x *PatternFlowGtpv2Version) GetIncrement() *PatternFlowGtpv2VersionCounter { if x != nil { return x.Increment } return nil } -func (x *PatternFlowPppControl) GetDecrement() *PatternFlowPppControlCounter { +func (x *PatternFlowGtpv2Version) GetDecrement() *PatternFlowGtpv2VersionCounter { if x != nil { return x.Decrement } return nil } -func (x *PatternFlowPppControl) GetMetricTags() []*PatternFlowPppControlMetricTag { +func (x *PatternFlowGtpv2Version) GetMetricTags() []*PatternFlowGtpv2VersionMetricTag { if x != nil { return x.MetricTags } @@ -78063,13 +76969,13 @@ func (x *PatternFlowPppControl) GetMetricTags() []*PatternFlowPppControlMetricTa } // integer counter pattern -type PatternFlowPppProtocolTypeCounter struct { +type PatternFlowGtpv2PiggybackingFlagCounter struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // Description missing in models - // default = 33 + // default = 0 Start *uint32 `protobuf:"varint,1,opt,name=start,proto3,oneof" json:"start,omitempty"` // Description missing in models // default = 1 @@ -78079,23 +76985,23 @@ type PatternFlowPppProtocolTypeCounter struct { Count *uint32 `protobuf:"varint,3,opt,name=count,proto3,oneof" json:"count,omitempty"` } -func (x *PatternFlowPppProtocolTypeCounter) Reset() { - *x = PatternFlowPppProtocolTypeCounter{} +func (x *PatternFlowGtpv2PiggybackingFlagCounter) Reset() { + *x = PatternFlowGtpv2PiggybackingFlagCounter{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[718] + mi := &file_otg_proto_msgTypes[677] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowPppProtocolTypeCounter) String() string { +func (x *PatternFlowGtpv2PiggybackingFlagCounter) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowPppProtocolTypeCounter) ProtoMessage() {} +func (*PatternFlowGtpv2PiggybackingFlagCounter) ProtoMessage() {} -func (x *PatternFlowPppProtocolTypeCounter) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[718] +func (x *PatternFlowGtpv2PiggybackingFlagCounter) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[677] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -78106,26 +77012,26 @@ func (x *PatternFlowPppProtocolTypeCounter) ProtoReflect() protoreflect.Message return mi.MessageOf(x) } -// Deprecated: Use PatternFlowPppProtocolTypeCounter.ProtoReflect.Descriptor instead. -func (*PatternFlowPppProtocolTypeCounter) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{718} +// Deprecated: Use PatternFlowGtpv2PiggybackingFlagCounter.ProtoReflect.Descriptor instead. +func (*PatternFlowGtpv2PiggybackingFlagCounter) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{677} } -func (x *PatternFlowPppProtocolTypeCounter) GetStart() uint32 { +func (x *PatternFlowGtpv2PiggybackingFlagCounter) GetStart() uint32 { if x != nil && x.Start != nil { return *x.Start } return 0 } -func (x *PatternFlowPppProtocolTypeCounter) GetStep() uint32 { +func (x *PatternFlowGtpv2PiggybackingFlagCounter) GetStep() uint32 { if x != nil && x.Step != nil { return *x.Step } return 0 } -func (x *PatternFlowPppProtocolTypeCounter) GetCount() uint32 { +func (x *PatternFlowGtpv2PiggybackingFlagCounter) GetCount() uint32 { if x != nil && x.Count != nil { return *x.Count } @@ -78135,7 +77041,7 @@ func (x *PatternFlowPppProtocolTypeCounter) GetCount() uint32 { // Metric tag can be used to enable tracking portion of or all bits in a corresponding // header field for metrics per each applicable value. These would appear as tagged // metrics in corresponding flow metrics. -type PatternFlowPppProtocolTypeMetricTag struct { +type PatternFlowGtpv2PiggybackingFlagMetricTag struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields @@ -78149,27 +77055,27 @@ type PatternFlowPppProtocolTypeMetricTag struct { Offset *uint32 `protobuf:"varint,2,opt,name=offset,proto3,oneof" json:"offset,omitempty"` // Number of bits to track for metrics starting from configured offset of corresponding // header field - // default = 16 + // default = 1 Length *uint32 `protobuf:"varint,3,opt,name=length,proto3,oneof" json:"length,omitempty"` } -func (x *PatternFlowPppProtocolTypeMetricTag) Reset() { - *x = PatternFlowPppProtocolTypeMetricTag{} +func (x *PatternFlowGtpv2PiggybackingFlagMetricTag) Reset() { + *x = PatternFlowGtpv2PiggybackingFlagMetricTag{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[719] + mi := &file_otg_proto_msgTypes[678] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowPppProtocolTypeMetricTag) String() string { +func (x *PatternFlowGtpv2PiggybackingFlagMetricTag) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowPppProtocolTypeMetricTag) ProtoMessage() {} +func (*PatternFlowGtpv2PiggybackingFlagMetricTag) ProtoMessage() {} -func (x *PatternFlowPppProtocolTypeMetricTag) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[719] +func (x *PatternFlowGtpv2PiggybackingFlagMetricTag) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[678] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -78180,79 +77086,75 @@ func (x *PatternFlowPppProtocolTypeMetricTag) ProtoReflect() protoreflect.Messag return mi.MessageOf(x) } -// Deprecated: Use PatternFlowPppProtocolTypeMetricTag.ProtoReflect.Descriptor instead. -func (*PatternFlowPppProtocolTypeMetricTag) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{719} +// Deprecated: Use PatternFlowGtpv2PiggybackingFlagMetricTag.ProtoReflect.Descriptor instead. +func (*PatternFlowGtpv2PiggybackingFlagMetricTag) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{678} } -func (x *PatternFlowPppProtocolTypeMetricTag) GetName() string { +func (x *PatternFlowGtpv2PiggybackingFlagMetricTag) GetName() string { if x != nil && x.Name != nil { return *x.Name } return "" } -func (x *PatternFlowPppProtocolTypeMetricTag) GetOffset() uint32 { +func (x *PatternFlowGtpv2PiggybackingFlagMetricTag) GetOffset() uint32 { if x != nil && x.Offset != nil { return *x.Offset } return 0 } -func (x *PatternFlowPppProtocolTypeMetricTag) GetLength() uint32 { +func (x *PatternFlowGtpv2PiggybackingFlagMetricTag) GetLength() uint32 { if x != nil && x.Length != nil { return *x.Length } return 0 } -// PPP protocol type -type PatternFlowPppProtocolType struct { +// If piggybacking_flag is set to 1 then another GTP-C message with its own header shall +// be present at the end of the current message +type PatternFlowGtpv2PiggybackingFlag struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // Description missing in models - // default = Choice.Enum.auto - Choice *PatternFlowPppProtocolType_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.PatternFlowPppProtocolType_Choice_Enum,oneof" json:"choice,omitempty"` + // default = Choice.Enum.value + Choice *PatternFlowGtpv2PiggybackingFlag_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.PatternFlowGtpv2PiggybackingFlag_Choice_Enum,oneof" json:"choice,omitempty"` // Description missing in models - // default = 33 + // default = 0 Value *uint32 `protobuf:"varint,2,opt,name=value,proto3,oneof" json:"value,omitempty"` // Description missing in models - // default = [33] + // default = [0] Values []uint32 `protobuf:"varint,3,rep,packed,name=values,proto3" json:"values,omitempty"` - // The OTG implementation can provide a system generated - // value for this property. If the OTG is unable to generate a value - // the default value must be used. - // default = 33 - Auto *uint32 `protobuf:"varint,4,opt,name=auto,proto3,oneof" json:"auto,omitempty"` // Description missing in models - Increment *PatternFlowPppProtocolTypeCounter `protobuf:"bytes,6,opt,name=increment,proto3" json:"increment,omitempty"` + Increment *PatternFlowGtpv2PiggybackingFlagCounter `protobuf:"bytes,5,opt,name=increment,proto3" json:"increment,omitempty"` // Description missing in models - Decrement *PatternFlowPppProtocolTypeCounter `protobuf:"bytes,7,opt,name=decrement,proto3" json:"decrement,omitempty"` + Decrement *PatternFlowGtpv2PiggybackingFlagCounter `protobuf:"bytes,6,opt,name=decrement,proto3" json:"decrement,omitempty"` // One or more metric tags can be used to enable tracking portion of or all bits in // a corresponding header field for metrics per each applicable value. These would appear // as tagged metrics in corresponding flow metrics. - MetricTags []*PatternFlowPppProtocolTypeMetricTag `protobuf:"bytes,8,rep,name=metric_tags,json=metricTags,proto3" json:"metric_tags,omitempty"` + MetricTags []*PatternFlowGtpv2PiggybackingFlagMetricTag `protobuf:"bytes,7,rep,name=metric_tags,json=metricTags,proto3" json:"metric_tags,omitempty"` } -func (x *PatternFlowPppProtocolType) Reset() { - *x = PatternFlowPppProtocolType{} +func (x *PatternFlowGtpv2PiggybackingFlag) Reset() { + *x = PatternFlowGtpv2PiggybackingFlag{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[720] + mi := &file_otg_proto_msgTypes[679] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowPppProtocolType) String() string { +func (x *PatternFlowGtpv2PiggybackingFlag) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowPppProtocolType) ProtoMessage() {} +func (*PatternFlowGtpv2PiggybackingFlag) ProtoMessage() {} -func (x *PatternFlowPppProtocolType) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[720] +func (x *PatternFlowGtpv2PiggybackingFlag) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[679] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -78263,54 +77165,47 @@ func (x *PatternFlowPppProtocolType) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use PatternFlowPppProtocolType.ProtoReflect.Descriptor instead. -func (*PatternFlowPppProtocolType) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{720} +// Deprecated: Use PatternFlowGtpv2PiggybackingFlag.ProtoReflect.Descriptor instead. +func (*PatternFlowGtpv2PiggybackingFlag) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{679} } -func (x *PatternFlowPppProtocolType) GetChoice() PatternFlowPppProtocolType_Choice_Enum { +func (x *PatternFlowGtpv2PiggybackingFlag) GetChoice() PatternFlowGtpv2PiggybackingFlag_Choice_Enum { if x != nil && x.Choice != nil { return *x.Choice } - return PatternFlowPppProtocolType_Choice_unspecified + return PatternFlowGtpv2PiggybackingFlag_Choice_unspecified } -func (x *PatternFlowPppProtocolType) GetValue() uint32 { +func (x *PatternFlowGtpv2PiggybackingFlag) GetValue() uint32 { if x != nil && x.Value != nil { return *x.Value } return 0 } -func (x *PatternFlowPppProtocolType) GetValues() []uint32 { +func (x *PatternFlowGtpv2PiggybackingFlag) GetValues() []uint32 { if x != nil { return x.Values } return nil } -func (x *PatternFlowPppProtocolType) GetAuto() uint32 { - if x != nil && x.Auto != nil { - return *x.Auto - } - return 0 -} - -func (x *PatternFlowPppProtocolType) GetIncrement() *PatternFlowPppProtocolTypeCounter { +func (x *PatternFlowGtpv2PiggybackingFlag) GetIncrement() *PatternFlowGtpv2PiggybackingFlagCounter { if x != nil { return x.Increment } return nil } -func (x *PatternFlowPppProtocolType) GetDecrement() *PatternFlowPppProtocolTypeCounter { +func (x *PatternFlowGtpv2PiggybackingFlag) GetDecrement() *PatternFlowGtpv2PiggybackingFlagCounter { if x != nil { return x.Decrement } return nil } -func (x *PatternFlowPppProtocolType) GetMetricTags() []*PatternFlowPppProtocolTypeMetricTag { +func (x *PatternFlowGtpv2PiggybackingFlag) GetMetricTags() []*PatternFlowGtpv2PiggybackingFlagMetricTag { if x != nil { return x.MetricTags } @@ -78318,13 +77213,13 @@ func (x *PatternFlowPppProtocolType) GetMetricTags() []*PatternFlowPppProtocolTy } // integer counter pattern -type PatternFlowIgmpv1VersionCounter struct { +type PatternFlowGtpv2TeidFlagCounter struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // Description missing in models - // default = 1 + // default = 0 Start *uint32 `protobuf:"varint,1,opt,name=start,proto3,oneof" json:"start,omitempty"` // Description missing in models // default = 1 @@ -78334,23 +77229,23 @@ type PatternFlowIgmpv1VersionCounter struct { Count *uint32 `protobuf:"varint,3,opt,name=count,proto3,oneof" json:"count,omitempty"` } -func (x *PatternFlowIgmpv1VersionCounter) Reset() { - *x = PatternFlowIgmpv1VersionCounter{} +func (x *PatternFlowGtpv2TeidFlagCounter) Reset() { + *x = PatternFlowGtpv2TeidFlagCounter{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[721] + mi := &file_otg_proto_msgTypes[680] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowIgmpv1VersionCounter) String() string { +func (x *PatternFlowGtpv2TeidFlagCounter) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowIgmpv1VersionCounter) ProtoMessage() {} +func (*PatternFlowGtpv2TeidFlagCounter) ProtoMessage() {} -func (x *PatternFlowIgmpv1VersionCounter) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[721] +func (x *PatternFlowGtpv2TeidFlagCounter) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[680] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -78361,26 +77256,26 @@ func (x *PatternFlowIgmpv1VersionCounter) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use PatternFlowIgmpv1VersionCounter.ProtoReflect.Descriptor instead. -func (*PatternFlowIgmpv1VersionCounter) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{721} +// Deprecated: Use PatternFlowGtpv2TeidFlagCounter.ProtoReflect.Descriptor instead. +func (*PatternFlowGtpv2TeidFlagCounter) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{680} } -func (x *PatternFlowIgmpv1VersionCounter) GetStart() uint32 { +func (x *PatternFlowGtpv2TeidFlagCounter) GetStart() uint32 { if x != nil && x.Start != nil { return *x.Start } return 0 } -func (x *PatternFlowIgmpv1VersionCounter) GetStep() uint32 { +func (x *PatternFlowGtpv2TeidFlagCounter) GetStep() uint32 { if x != nil && x.Step != nil { return *x.Step } return 0 } -func (x *PatternFlowIgmpv1VersionCounter) GetCount() uint32 { +func (x *PatternFlowGtpv2TeidFlagCounter) GetCount() uint32 { if x != nil && x.Count != nil { return *x.Count } @@ -78390,7 +77285,7 @@ func (x *PatternFlowIgmpv1VersionCounter) GetCount() uint32 { // Metric tag can be used to enable tracking portion of or all bits in a corresponding // header field for metrics per each applicable value. These would appear as tagged // metrics in corresponding flow metrics. -type PatternFlowIgmpv1VersionMetricTag struct { +type PatternFlowGtpv2TeidFlagMetricTag struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields @@ -78404,27 +77299,27 @@ type PatternFlowIgmpv1VersionMetricTag struct { Offset *uint32 `protobuf:"varint,2,opt,name=offset,proto3,oneof" json:"offset,omitempty"` // Number of bits to track for metrics starting from configured offset of corresponding // header field - // default = 4 + // default = 1 Length *uint32 `protobuf:"varint,3,opt,name=length,proto3,oneof" json:"length,omitempty"` } -func (x *PatternFlowIgmpv1VersionMetricTag) Reset() { - *x = PatternFlowIgmpv1VersionMetricTag{} +func (x *PatternFlowGtpv2TeidFlagMetricTag) Reset() { + *x = PatternFlowGtpv2TeidFlagMetricTag{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[722] + mi := &file_otg_proto_msgTypes[681] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowIgmpv1VersionMetricTag) String() string { +func (x *PatternFlowGtpv2TeidFlagMetricTag) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowIgmpv1VersionMetricTag) ProtoMessage() {} +func (*PatternFlowGtpv2TeidFlagMetricTag) ProtoMessage() {} -func (x *PatternFlowIgmpv1VersionMetricTag) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[722] +func (x *PatternFlowGtpv2TeidFlagMetricTag) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[681] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -78435,74 +77330,76 @@ func (x *PatternFlowIgmpv1VersionMetricTag) ProtoReflect() protoreflect.Message return mi.MessageOf(x) } -// Deprecated: Use PatternFlowIgmpv1VersionMetricTag.ProtoReflect.Descriptor instead. -func (*PatternFlowIgmpv1VersionMetricTag) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{722} +// Deprecated: Use PatternFlowGtpv2TeidFlagMetricTag.ProtoReflect.Descriptor instead. +func (*PatternFlowGtpv2TeidFlagMetricTag) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{681} } -func (x *PatternFlowIgmpv1VersionMetricTag) GetName() string { +func (x *PatternFlowGtpv2TeidFlagMetricTag) GetName() string { if x != nil && x.Name != nil { return *x.Name } return "" } -func (x *PatternFlowIgmpv1VersionMetricTag) GetOffset() uint32 { +func (x *PatternFlowGtpv2TeidFlagMetricTag) GetOffset() uint32 { if x != nil && x.Offset != nil { return *x.Offset } return 0 } -func (x *PatternFlowIgmpv1VersionMetricTag) GetLength() uint32 { +func (x *PatternFlowGtpv2TeidFlagMetricTag) GetLength() uint32 { if x != nil && x.Length != nil { return *x.Length } return 0 } -// Version number -type PatternFlowIgmpv1Version struct { +// If teid_flag is set to 1 then the TEID field will be present between the message +// length and the sequence number. All messages except Echo and Echo reply require TEID +// to be present +type PatternFlowGtpv2TeidFlag struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // Description missing in models // default = Choice.Enum.value - Choice *PatternFlowIgmpv1Version_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.PatternFlowIgmpv1Version_Choice_Enum,oneof" json:"choice,omitempty"` + Choice *PatternFlowGtpv2TeidFlag_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.PatternFlowGtpv2TeidFlag_Choice_Enum,oneof" json:"choice,omitempty"` // Description missing in models - // default = 1 + // default = 0 Value *uint32 `protobuf:"varint,2,opt,name=value,proto3,oneof" json:"value,omitempty"` // Description missing in models - // default = [1] + // default = [0] Values []uint32 `protobuf:"varint,3,rep,packed,name=values,proto3" json:"values,omitempty"` // Description missing in models - Increment *PatternFlowIgmpv1VersionCounter `protobuf:"bytes,5,opt,name=increment,proto3" json:"increment,omitempty"` + Increment *PatternFlowGtpv2TeidFlagCounter `protobuf:"bytes,5,opt,name=increment,proto3" json:"increment,omitempty"` // Description missing in models - Decrement *PatternFlowIgmpv1VersionCounter `protobuf:"bytes,6,opt,name=decrement,proto3" json:"decrement,omitempty"` + Decrement *PatternFlowGtpv2TeidFlagCounter `protobuf:"bytes,6,opt,name=decrement,proto3" json:"decrement,omitempty"` // One or more metric tags can be used to enable tracking portion of or all bits in // a corresponding header field for metrics per each applicable value. These would appear // as tagged metrics in corresponding flow metrics. - MetricTags []*PatternFlowIgmpv1VersionMetricTag `protobuf:"bytes,7,rep,name=metric_tags,json=metricTags,proto3" json:"metric_tags,omitempty"` + MetricTags []*PatternFlowGtpv2TeidFlagMetricTag `protobuf:"bytes,7,rep,name=metric_tags,json=metricTags,proto3" json:"metric_tags,omitempty"` } -func (x *PatternFlowIgmpv1Version) Reset() { - *x = PatternFlowIgmpv1Version{} +func (x *PatternFlowGtpv2TeidFlag) Reset() { + *x = PatternFlowGtpv2TeidFlag{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[723] + mi := &file_otg_proto_msgTypes[682] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowIgmpv1Version) String() string { +func (x *PatternFlowGtpv2TeidFlag) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowIgmpv1Version) ProtoMessage() {} +func (*PatternFlowGtpv2TeidFlag) ProtoMessage() {} -func (x *PatternFlowIgmpv1Version) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[723] +func (x *PatternFlowGtpv2TeidFlag) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[682] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -78513,47 +77410,47 @@ func (x *PatternFlowIgmpv1Version) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use PatternFlowIgmpv1Version.ProtoReflect.Descriptor instead. -func (*PatternFlowIgmpv1Version) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{723} +// Deprecated: Use PatternFlowGtpv2TeidFlag.ProtoReflect.Descriptor instead. +func (*PatternFlowGtpv2TeidFlag) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{682} } -func (x *PatternFlowIgmpv1Version) GetChoice() PatternFlowIgmpv1Version_Choice_Enum { +func (x *PatternFlowGtpv2TeidFlag) GetChoice() PatternFlowGtpv2TeidFlag_Choice_Enum { if x != nil && x.Choice != nil { return *x.Choice } - return PatternFlowIgmpv1Version_Choice_unspecified + return PatternFlowGtpv2TeidFlag_Choice_unspecified } -func (x *PatternFlowIgmpv1Version) GetValue() uint32 { +func (x *PatternFlowGtpv2TeidFlag) GetValue() uint32 { if x != nil && x.Value != nil { return *x.Value } return 0 } -func (x *PatternFlowIgmpv1Version) GetValues() []uint32 { +func (x *PatternFlowGtpv2TeidFlag) GetValues() []uint32 { if x != nil { return x.Values } return nil } -func (x *PatternFlowIgmpv1Version) GetIncrement() *PatternFlowIgmpv1VersionCounter { +func (x *PatternFlowGtpv2TeidFlag) GetIncrement() *PatternFlowGtpv2TeidFlagCounter { if x != nil { return x.Increment } return nil } -func (x *PatternFlowIgmpv1Version) GetDecrement() *PatternFlowIgmpv1VersionCounter { +func (x *PatternFlowGtpv2TeidFlag) GetDecrement() *PatternFlowGtpv2TeidFlagCounter { if x != nil { return x.Decrement } return nil } -func (x *PatternFlowIgmpv1Version) GetMetricTags() []*PatternFlowIgmpv1VersionMetricTag { +func (x *PatternFlowGtpv2TeidFlag) GetMetricTags() []*PatternFlowGtpv2TeidFlagMetricTag { if x != nil { return x.MetricTags } @@ -78561,13 +77458,13 @@ func (x *PatternFlowIgmpv1Version) GetMetricTags() []*PatternFlowIgmpv1VersionMe } // integer counter pattern -type PatternFlowIgmpv1TypeCounter struct { +type PatternFlowGtpv2Spare1Counter struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // Description missing in models - // default = 1 + // default = 0 Start *uint32 `protobuf:"varint,1,opt,name=start,proto3,oneof" json:"start,omitempty"` // Description missing in models // default = 1 @@ -78577,23 +77474,23 @@ type PatternFlowIgmpv1TypeCounter struct { Count *uint32 `protobuf:"varint,3,opt,name=count,proto3,oneof" json:"count,omitempty"` } -func (x *PatternFlowIgmpv1TypeCounter) Reset() { - *x = PatternFlowIgmpv1TypeCounter{} +func (x *PatternFlowGtpv2Spare1Counter) Reset() { + *x = PatternFlowGtpv2Spare1Counter{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[724] + mi := &file_otg_proto_msgTypes[683] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowIgmpv1TypeCounter) String() string { +func (x *PatternFlowGtpv2Spare1Counter) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowIgmpv1TypeCounter) ProtoMessage() {} +func (*PatternFlowGtpv2Spare1Counter) ProtoMessage() {} -func (x *PatternFlowIgmpv1TypeCounter) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[724] +func (x *PatternFlowGtpv2Spare1Counter) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[683] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -78604,26 +77501,26 @@ func (x *PatternFlowIgmpv1TypeCounter) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use PatternFlowIgmpv1TypeCounter.ProtoReflect.Descriptor instead. -func (*PatternFlowIgmpv1TypeCounter) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{724} +// Deprecated: Use PatternFlowGtpv2Spare1Counter.ProtoReflect.Descriptor instead. +func (*PatternFlowGtpv2Spare1Counter) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{683} } -func (x *PatternFlowIgmpv1TypeCounter) GetStart() uint32 { +func (x *PatternFlowGtpv2Spare1Counter) GetStart() uint32 { if x != nil && x.Start != nil { return *x.Start } return 0 } -func (x *PatternFlowIgmpv1TypeCounter) GetStep() uint32 { +func (x *PatternFlowGtpv2Spare1Counter) GetStep() uint32 { if x != nil && x.Step != nil { return *x.Step } return 0 } -func (x *PatternFlowIgmpv1TypeCounter) GetCount() uint32 { +func (x *PatternFlowGtpv2Spare1Counter) GetCount() uint32 { if x != nil && x.Count != nil { return *x.Count } @@ -78633,7 +77530,7 @@ func (x *PatternFlowIgmpv1TypeCounter) GetCount() uint32 { // Metric tag can be used to enable tracking portion of or all bits in a corresponding // header field for metrics per each applicable value. These would appear as tagged // metrics in corresponding flow metrics. -type PatternFlowIgmpv1TypeMetricTag struct { +type PatternFlowGtpv2Spare1MetricTag struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields @@ -78647,27 +77544,27 @@ type PatternFlowIgmpv1TypeMetricTag struct { Offset *uint32 `protobuf:"varint,2,opt,name=offset,proto3,oneof" json:"offset,omitempty"` // Number of bits to track for metrics starting from configured offset of corresponding // header field - // default = 4 + // default = 3 Length *uint32 `protobuf:"varint,3,opt,name=length,proto3,oneof" json:"length,omitempty"` } -func (x *PatternFlowIgmpv1TypeMetricTag) Reset() { - *x = PatternFlowIgmpv1TypeMetricTag{} +func (x *PatternFlowGtpv2Spare1MetricTag) Reset() { + *x = PatternFlowGtpv2Spare1MetricTag{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[725] + mi := &file_otg_proto_msgTypes[684] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowIgmpv1TypeMetricTag) String() string { +func (x *PatternFlowGtpv2Spare1MetricTag) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowIgmpv1TypeMetricTag) ProtoMessage() {} +func (*PatternFlowGtpv2Spare1MetricTag) ProtoMessage() {} -func (x *PatternFlowIgmpv1TypeMetricTag) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[725] +func (x *PatternFlowGtpv2Spare1MetricTag) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[684] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -78678,74 +77575,74 @@ func (x *PatternFlowIgmpv1TypeMetricTag) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use PatternFlowIgmpv1TypeMetricTag.ProtoReflect.Descriptor instead. -func (*PatternFlowIgmpv1TypeMetricTag) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{725} +// Deprecated: Use PatternFlowGtpv2Spare1MetricTag.ProtoReflect.Descriptor instead. +func (*PatternFlowGtpv2Spare1MetricTag) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{684} } -func (x *PatternFlowIgmpv1TypeMetricTag) GetName() string { +func (x *PatternFlowGtpv2Spare1MetricTag) GetName() string { if x != nil && x.Name != nil { return *x.Name } return "" } -func (x *PatternFlowIgmpv1TypeMetricTag) GetOffset() uint32 { +func (x *PatternFlowGtpv2Spare1MetricTag) GetOffset() uint32 { if x != nil && x.Offset != nil { return *x.Offset } return 0 } -func (x *PatternFlowIgmpv1TypeMetricTag) GetLength() uint32 { +func (x *PatternFlowGtpv2Spare1MetricTag) GetLength() uint32 { if x != nil && x.Length != nil { return *x.Length } return 0 } -// Type of message -type PatternFlowIgmpv1Type struct { +// A 3-bit reserved field (must be 0). +type PatternFlowGtpv2Spare1 struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // Description missing in models // default = Choice.Enum.value - Choice *PatternFlowIgmpv1Type_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.PatternFlowIgmpv1Type_Choice_Enum,oneof" json:"choice,omitempty"` + Choice *PatternFlowGtpv2Spare1_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.PatternFlowGtpv2Spare1_Choice_Enum,oneof" json:"choice,omitempty"` // Description missing in models - // default = 1 + // default = 0 Value *uint32 `protobuf:"varint,2,opt,name=value,proto3,oneof" json:"value,omitempty"` // Description missing in models - // default = [1] + // default = [0] Values []uint32 `protobuf:"varint,3,rep,packed,name=values,proto3" json:"values,omitempty"` // Description missing in models - Increment *PatternFlowIgmpv1TypeCounter `protobuf:"bytes,5,opt,name=increment,proto3" json:"increment,omitempty"` + Increment *PatternFlowGtpv2Spare1Counter `protobuf:"bytes,5,opt,name=increment,proto3" json:"increment,omitempty"` // Description missing in models - Decrement *PatternFlowIgmpv1TypeCounter `protobuf:"bytes,6,opt,name=decrement,proto3" json:"decrement,omitempty"` + Decrement *PatternFlowGtpv2Spare1Counter `protobuf:"bytes,6,opt,name=decrement,proto3" json:"decrement,omitempty"` // One or more metric tags can be used to enable tracking portion of or all bits in // a corresponding header field for metrics per each applicable value. These would appear // as tagged metrics in corresponding flow metrics. - MetricTags []*PatternFlowIgmpv1TypeMetricTag `protobuf:"bytes,7,rep,name=metric_tags,json=metricTags,proto3" json:"metric_tags,omitempty"` + MetricTags []*PatternFlowGtpv2Spare1MetricTag `protobuf:"bytes,7,rep,name=metric_tags,json=metricTags,proto3" json:"metric_tags,omitempty"` } -func (x *PatternFlowIgmpv1Type) Reset() { - *x = PatternFlowIgmpv1Type{} +func (x *PatternFlowGtpv2Spare1) Reset() { + *x = PatternFlowGtpv2Spare1{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[726] + mi := &file_otg_proto_msgTypes[685] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowIgmpv1Type) String() string { +func (x *PatternFlowGtpv2Spare1) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowIgmpv1Type) ProtoMessage() {} +func (*PatternFlowGtpv2Spare1) ProtoMessage() {} -func (x *PatternFlowIgmpv1Type) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[726] +func (x *PatternFlowGtpv2Spare1) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[685] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -78756,47 +77653,47 @@ func (x *PatternFlowIgmpv1Type) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use PatternFlowIgmpv1Type.ProtoReflect.Descriptor instead. -func (*PatternFlowIgmpv1Type) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{726} +// Deprecated: Use PatternFlowGtpv2Spare1.ProtoReflect.Descriptor instead. +func (*PatternFlowGtpv2Spare1) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{685} } -func (x *PatternFlowIgmpv1Type) GetChoice() PatternFlowIgmpv1Type_Choice_Enum { +func (x *PatternFlowGtpv2Spare1) GetChoice() PatternFlowGtpv2Spare1_Choice_Enum { if x != nil && x.Choice != nil { return *x.Choice } - return PatternFlowIgmpv1Type_Choice_unspecified + return PatternFlowGtpv2Spare1_Choice_unspecified } -func (x *PatternFlowIgmpv1Type) GetValue() uint32 { +func (x *PatternFlowGtpv2Spare1) GetValue() uint32 { if x != nil && x.Value != nil { return *x.Value } return 0 } -func (x *PatternFlowIgmpv1Type) GetValues() []uint32 { +func (x *PatternFlowGtpv2Spare1) GetValues() []uint32 { if x != nil { return x.Values } return nil } -func (x *PatternFlowIgmpv1Type) GetIncrement() *PatternFlowIgmpv1TypeCounter { +func (x *PatternFlowGtpv2Spare1) GetIncrement() *PatternFlowGtpv2Spare1Counter { if x != nil { return x.Increment } return nil } -func (x *PatternFlowIgmpv1Type) GetDecrement() *PatternFlowIgmpv1TypeCounter { +func (x *PatternFlowGtpv2Spare1) GetDecrement() *PatternFlowGtpv2Spare1Counter { if x != nil { return x.Decrement } return nil } -func (x *PatternFlowIgmpv1Type) GetMetricTags() []*PatternFlowIgmpv1TypeMetricTag { +func (x *PatternFlowGtpv2Spare1) GetMetricTags() []*PatternFlowGtpv2Spare1MetricTag { if x != nil { return x.MetricTags } @@ -78804,7 +77701,7 @@ func (x *PatternFlowIgmpv1Type) GetMetricTags() []*PatternFlowIgmpv1TypeMetricTa } // integer counter pattern -type PatternFlowIgmpv1UnusedCounter struct { +type PatternFlowGtpv2MessageTypeCounter struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields @@ -78820,23 +77717,23 @@ type PatternFlowIgmpv1UnusedCounter struct { Count *uint32 `protobuf:"varint,3,opt,name=count,proto3,oneof" json:"count,omitempty"` } -func (x *PatternFlowIgmpv1UnusedCounter) Reset() { - *x = PatternFlowIgmpv1UnusedCounter{} +func (x *PatternFlowGtpv2MessageTypeCounter) Reset() { + *x = PatternFlowGtpv2MessageTypeCounter{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[727] + mi := &file_otg_proto_msgTypes[686] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowIgmpv1UnusedCounter) String() string { +func (x *PatternFlowGtpv2MessageTypeCounter) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowIgmpv1UnusedCounter) ProtoMessage() {} +func (*PatternFlowGtpv2MessageTypeCounter) ProtoMessage() {} -func (x *PatternFlowIgmpv1UnusedCounter) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[727] +func (x *PatternFlowGtpv2MessageTypeCounter) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[686] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -78847,26 +77744,26 @@ func (x *PatternFlowIgmpv1UnusedCounter) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use PatternFlowIgmpv1UnusedCounter.ProtoReflect.Descriptor instead. -func (*PatternFlowIgmpv1UnusedCounter) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{727} +// Deprecated: Use PatternFlowGtpv2MessageTypeCounter.ProtoReflect.Descriptor instead. +func (*PatternFlowGtpv2MessageTypeCounter) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{686} } -func (x *PatternFlowIgmpv1UnusedCounter) GetStart() uint32 { +func (x *PatternFlowGtpv2MessageTypeCounter) GetStart() uint32 { if x != nil && x.Start != nil { return *x.Start } return 0 } -func (x *PatternFlowIgmpv1UnusedCounter) GetStep() uint32 { +func (x *PatternFlowGtpv2MessageTypeCounter) GetStep() uint32 { if x != nil && x.Step != nil { return *x.Step } return 0 } -func (x *PatternFlowIgmpv1UnusedCounter) GetCount() uint32 { +func (x *PatternFlowGtpv2MessageTypeCounter) GetCount() uint32 { if x != nil && x.Count != nil { return *x.Count } @@ -78876,7 +77773,7 @@ func (x *PatternFlowIgmpv1UnusedCounter) GetCount() uint32 { // Metric tag can be used to enable tracking portion of or all bits in a corresponding // header field for metrics per each applicable value. These would appear as tagged // metrics in corresponding flow metrics. -type PatternFlowIgmpv1UnusedMetricTag struct { +type PatternFlowGtpv2MessageTypeMetricTag struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields @@ -78894,23 +77791,23 @@ type PatternFlowIgmpv1UnusedMetricTag struct { Length *uint32 `protobuf:"varint,3,opt,name=length,proto3,oneof" json:"length,omitempty"` } -func (x *PatternFlowIgmpv1UnusedMetricTag) Reset() { - *x = PatternFlowIgmpv1UnusedMetricTag{} +func (x *PatternFlowGtpv2MessageTypeMetricTag) Reset() { + *x = PatternFlowGtpv2MessageTypeMetricTag{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[728] + mi := &file_otg_proto_msgTypes[687] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowIgmpv1UnusedMetricTag) String() string { +func (x *PatternFlowGtpv2MessageTypeMetricTag) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowIgmpv1UnusedMetricTag) ProtoMessage() {} +func (*PatternFlowGtpv2MessageTypeMetricTag) ProtoMessage() {} -func (x *PatternFlowIgmpv1UnusedMetricTag) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[728] +func (x *PatternFlowGtpv2MessageTypeMetricTag) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[687] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -78921,41 +77818,42 @@ func (x *PatternFlowIgmpv1UnusedMetricTag) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use PatternFlowIgmpv1UnusedMetricTag.ProtoReflect.Descriptor instead. -func (*PatternFlowIgmpv1UnusedMetricTag) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{728} +// Deprecated: Use PatternFlowGtpv2MessageTypeMetricTag.ProtoReflect.Descriptor instead. +func (*PatternFlowGtpv2MessageTypeMetricTag) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{687} } -func (x *PatternFlowIgmpv1UnusedMetricTag) GetName() string { +func (x *PatternFlowGtpv2MessageTypeMetricTag) GetName() string { if x != nil && x.Name != nil { return *x.Name } return "" } -func (x *PatternFlowIgmpv1UnusedMetricTag) GetOffset() uint32 { +func (x *PatternFlowGtpv2MessageTypeMetricTag) GetOffset() uint32 { if x != nil && x.Offset != nil { return *x.Offset } return 0 } -func (x *PatternFlowIgmpv1UnusedMetricTag) GetLength() uint32 { +func (x *PatternFlowGtpv2MessageTypeMetricTag) GetLength() uint32 { if x != nil && x.Length != nil { return *x.Length } return 0 } -// Unused -type PatternFlowIgmpv1Unused struct { +// An 8-bit field that indicates the type of GTP message. Different types of messages +// are defined in 3GPP TS 29.060 section 7.1 +type PatternFlowGtpv2MessageType struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // Description missing in models // default = Choice.Enum.value - Choice *PatternFlowIgmpv1Unused_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.PatternFlowIgmpv1Unused_Choice_Enum,oneof" json:"choice,omitempty"` + Choice *PatternFlowGtpv2MessageType_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.PatternFlowGtpv2MessageType_Choice_Enum,oneof" json:"choice,omitempty"` // Description missing in models // default = 0 Value *uint32 `protobuf:"varint,2,opt,name=value,proto3,oneof" json:"value,omitempty"` @@ -78963,32 +77861,32 @@ type PatternFlowIgmpv1Unused struct { // default = [0] Values []uint32 `protobuf:"varint,3,rep,packed,name=values,proto3" json:"values,omitempty"` // Description missing in models - Increment *PatternFlowIgmpv1UnusedCounter `protobuf:"bytes,5,opt,name=increment,proto3" json:"increment,omitempty"` + Increment *PatternFlowGtpv2MessageTypeCounter `protobuf:"bytes,5,opt,name=increment,proto3" json:"increment,omitempty"` // Description missing in models - Decrement *PatternFlowIgmpv1UnusedCounter `protobuf:"bytes,6,opt,name=decrement,proto3" json:"decrement,omitempty"` + Decrement *PatternFlowGtpv2MessageTypeCounter `protobuf:"bytes,6,opt,name=decrement,proto3" json:"decrement,omitempty"` // One or more metric tags can be used to enable tracking portion of or all bits in // a corresponding header field for metrics per each applicable value. These would appear // as tagged metrics in corresponding flow metrics. - MetricTags []*PatternFlowIgmpv1UnusedMetricTag `protobuf:"bytes,7,rep,name=metric_tags,json=metricTags,proto3" json:"metric_tags,omitempty"` + MetricTags []*PatternFlowGtpv2MessageTypeMetricTag `protobuf:"bytes,7,rep,name=metric_tags,json=metricTags,proto3" json:"metric_tags,omitempty"` } -func (x *PatternFlowIgmpv1Unused) Reset() { - *x = PatternFlowIgmpv1Unused{} +func (x *PatternFlowGtpv2MessageType) Reset() { + *x = PatternFlowGtpv2MessageType{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[729] + mi := &file_otg_proto_msgTypes[688] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowIgmpv1Unused) String() string { +func (x *PatternFlowGtpv2MessageType) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowIgmpv1Unused) ProtoMessage() {} +func (*PatternFlowGtpv2MessageType) ProtoMessage() {} -func (x *PatternFlowIgmpv1Unused) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[729] +func (x *PatternFlowGtpv2MessageType) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[688] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -78999,156 +77897,87 @@ func (x *PatternFlowIgmpv1Unused) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use PatternFlowIgmpv1Unused.ProtoReflect.Descriptor instead. -func (*PatternFlowIgmpv1Unused) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{729} +// Deprecated: Use PatternFlowGtpv2MessageType.ProtoReflect.Descriptor instead. +func (*PatternFlowGtpv2MessageType) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{688} } -func (x *PatternFlowIgmpv1Unused) GetChoice() PatternFlowIgmpv1Unused_Choice_Enum { +func (x *PatternFlowGtpv2MessageType) GetChoice() PatternFlowGtpv2MessageType_Choice_Enum { if x != nil && x.Choice != nil { return *x.Choice } - return PatternFlowIgmpv1Unused_Choice_unspecified + return PatternFlowGtpv2MessageType_Choice_unspecified } -func (x *PatternFlowIgmpv1Unused) GetValue() uint32 { +func (x *PatternFlowGtpv2MessageType) GetValue() uint32 { if x != nil && x.Value != nil { return *x.Value } return 0 } -func (x *PatternFlowIgmpv1Unused) GetValues() []uint32 { +func (x *PatternFlowGtpv2MessageType) GetValues() []uint32 { if x != nil { return x.Values } return nil } -func (x *PatternFlowIgmpv1Unused) GetIncrement() *PatternFlowIgmpv1UnusedCounter { +func (x *PatternFlowGtpv2MessageType) GetIncrement() *PatternFlowGtpv2MessageTypeCounter { if x != nil { return x.Increment } return nil } -func (x *PatternFlowIgmpv1Unused) GetDecrement() *PatternFlowIgmpv1UnusedCounter { +func (x *PatternFlowGtpv2MessageType) GetDecrement() *PatternFlowGtpv2MessageTypeCounter { if x != nil { return x.Decrement } return nil } -func (x *PatternFlowIgmpv1Unused) GetMetricTags() []*PatternFlowIgmpv1UnusedMetricTag { +func (x *PatternFlowGtpv2MessageType) GetMetricTags() []*PatternFlowGtpv2MessageTypeMetricTag { if x != nil { return x.MetricTags } return nil } -// Checksum -type PatternFlowIgmpv1Checksum struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // The type of checksum - // default = Choice.Enum.generated - Choice *PatternFlowIgmpv1Checksum_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.PatternFlowIgmpv1Checksum_Choice_Enum,oneof" json:"choice,omitempty"` - // A system generated checksum value - // default = Generated.Enum.good - Generated *PatternFlowIgmpv1Checksum_Generated_Enum `protobuf:"varint,2,opt,name=generated,proto3,enum=otg.PatternFlowIgmpv1Checksum_Generated_Enum,oneof" json:"generated,omitempty"` - // A custom checksum value - Custom *uint32 `protobuf:"varint,3,opt,name=custom,proto3,oneof" json:"custom,omitempty"` -} - -func (x *PatternFlowIgmpv1Checksum) Reset() { - *x = PatternFlowIgmpv1Checksum{} - if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[730] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *PatternFlowIgmpv1Checksum) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*PatternFlowIgmpv1Checksum) ProtoMessage() {} - -func (x *PatternFlowIgmpv1Checksum) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[730] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use PatternFlowIgmpv1Checksum.ProtoReflect.Descriptor instead. -func (*PatternFlowIgmpv1Checksum) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{730} -} - -func (x *PatternFlowIgmpv1Checksum) GetChoice() PatternFlowIgmpv1Checksum_Choice_Enum { - if x != nil && x.Choice != nil { - return *x.Choice - } - return PatternFlowIgmpv1Checksum_Choice_unspecified -} - -func (x *PatternFlowIgmpv1Checksum) GetGenerated() PatternFlowIgmpv1Checksum_Generated_Enum { - if x != nil && x.Generated != nil { - return *x.Generated - } - return PatternFlowIgmpv1Checksum_Generated_unspecified -} - -func (x *PatternFlowIgmpv1Checksum) GetCustom() uint32 { - if x != nil && x.Custom != nil { - return *x.Custom - } - return 0 -} - -// ipv4 counter pattern -type PatternFlowIgmpv1GroupAddressCounter struct { +// integer counter pattern +type PatternFlowGtpv2MessageLengthCounter struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // Description missing in models - // default = 0.0.0.0 - Start *string `protobuf:"bytes,1,opt,name=start,proto3,oneof" json:"start,omitempty"` + // default = 0 + Start *uint32 `protobuf:"varint,1,opt,name=start,proto3,oneof" json:"start,omitempty"` // Description missing in models - // default = 0.0.0.1 - Step *string `protobuf:"bytes,2,opt,name=step,proto3,oneof" json:"step,omitempty"` + // default = 1 + Step *uint32 `protobuf:"varint,2,opt,name=step,proto3,oneof" json:"step,omitempty"` // Description missing in models // default = 1 Count *uint32 `protobuf:"varint,3,opt,name=count,proto3,oneof" json:"count,omitempty"` } -func (x *PatternFlowIgmpv1GroupAddressCounter) Reset() { - *x = PatternFlowIgmpv1GroupAddressCounter{} +func (x *PatternFlowGtpv2MessageLengthCounter) Reset() { + *x = PatternFlowGtpv2MessageLengthCounter{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[731] + mi := &file_otg_proto_msgTypes[689] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowIgmpv1GroupAddressCounter) String() string { +func (x *PatternFlowGtpv2MessageLengthCounter) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowIgmpv1GroupAddressCounter) ProtoMessage() {} +func (*PatternFlowGtpv2MessageLengthCounter) ProtoMessage() {} -func (x *PatternFlowIgmpv1GroupAddressCounter) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[731] +func (x *PatternFlowGtpv2MessageLengthCounter) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[689] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -79159,26 +77988,26 @@ func (x *PatternFlowIgmpv1GroupAddressCounter) ProtoReflect() protoreflect.Messa return mi.MessageOf(x) } -// Deprecated: Use PatternFlowIgmpv1GroupAddressCounter.ProtoReflect.Descriptor instead. -func (*PatternFlowIgmpv1GroupAddressCounter) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{731} +// Deprecated: Use PatternFlowGtpv2MessageLengthCounter.ProtoReflect.Descriptor instead. +func (*PatternFlowGtpv2MessageLengthCounter) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{689} } -func (x *PatternFlowIgmpv1GroupAddressCounter) GetStart() string { +func (x *PatternFlowGtpv2MessageLengthCounter) GetStart() uint32 { if x != nil && x.Start != nil { return *x.Start } - return "" + return 0 } -func (x *PatternFlowIgmpv1GroupAddressCounter) GetStep() string { +func (x *PatternFlowGtpv2MessageLengthCounter) GetStep() uint32 { if x != nil && x.Step != nil { return *x.Step } - return "" + return 0 } -func (x *PatternFlowIgmpv1GroupAddressCounter) GetCount() uint32 { +func (x *PatternFlowGtpv2MessageLengthCounter) GetCount() uint32 { if x != nil && x.Count != nil { return *x.Count } @@ -79188,7 +78017,7 @@ func (x *PatternFlowIgmpv1GroupAddressCounter) GetCount() uint32 { // Metric tag can be used to enable tracking portion of or all bits in a corresponding // header field for metrics per each applicable value. These would appear as tagged // metrics in corresponding flow metrics. -type PatternFlowIgmpv1GroupAddressMetricTag struct { +type PatternFlowGtpv2MessageLengthMetricTag struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields @@ -79202,27 +78031,27 @@ type PatternFlowIgmpv1GroupAddressMetricTag struct { Offset *uint32 `protobuf:"varint,2,opt,name=offset,proto3,oneof" json:"offset,omitempty"` // Number of bits to track for metrics starting from configured offset of corresponding // header field - // default = 32 + // default = 16 Length *uint32 `protobuf:"varint,3,opt,name=length,proto3,oneof" json:"length,omitempty"` } -func (x *PatternFlowIgmpv1GroupAddressMetricTag) Reset() { - *x = PatternFlowIgmpv1GroupAddressMetricTag{} +func (x *PatternFlowGtpv2MessageLengthMetricTag) Reset() { + *x = PatternFlowGtpv2MessageLengthMetricTag{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[732] + mi := &file_otg_proto_msgTypes[690] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowIgmpv1GroupAddressMetricTag) String() string { +func (x *PatternFlowGtpv2MessageLengthMetricTag) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowIgmpv1GroupAddressMetricTag) ProtoMessage() {} +func (*PatternFlowGtpv2MessageLengthMetricTag) ProtoMessage() {} -func (x *PatternFlowIgmpv1GroupAddressMetricTag) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[732] +func (x *PatternFlowGtpv2MessageLengthMetricTag) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[690] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -79233,74 +78062,75 @@ func (x *PatternFlowIgmpv1GroupAddressMetricTag) ProtoReflect() protoreflect.Mes return mi.MessageOf(x) } -// Deprecated: Use PatternFlowIgmpv1GroupAddressMetricTag.ProtoReflect.Descriptor instead. -func (*PatternFlowIgmpv1GroupAddressMetricTag) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{732} +// Deprecated: Use PatternFlowGtpv2MessageLengthMetricTag.ProtoReflect.Descriptor instead. +func (*PatternFlowGtpv2MessageLengthMetricTag) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{690} } -func (x *PatternFlowIgmpv1GroupAddressMetricTag) GetName() string { +func (x *PatternFlowGtpv2MessageLengthMetricTag) GetName() string { if x != nil && x.Name != nil { return *x.Name } return "" } -func (x *PatternFlowIgmpv1GroupAddressMetricTag) GetOffset() uint32 { +func (x *PatternFlowGtpv2MessageLengthMetricTag) GetOffset() uint32 { if x != nil && x.Offset != nil { return *x.Offset } return 0 } -func (x *PatternFlowIgmpv1GroupAddressMetricTag) GetLength() uint32 { +func (x *PatternFlowGtpv2MessageLengthMetricTag) GetLength() uint32 { if x != nil && x.Length != nil { return *x.Length } return 0 } -// Group address -type PatternFlowIgmpv1GroupAddress struct { +// A 16-bit field that indicates the length of the payload in bytes, excluding the mandatory +// GTP-c header (first 4 bytes). Includes the TEID and sequence_number if they are present. +type PatternFlowGtpv2MessageLength struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // Description missing in models // default = Choice.Enum.value - Choice *PatternFlowIgmpv1GroupAddress_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.PatternFlowIgmpv1GroupAddress_Choice_Enum,oneof" json:"choice,omitempty"` + Choice *PatternFlowGtpv2MessageLength_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.PatternFlowGtpv2MessageLength_Choice_Enum,oneof" json:"choice,omitempty"` // Description missing in models - // default = 0.0.0.0 - Value *string `protobuf:"bytes,2,opt,name=value,proto3,oneof" json:"value,omitempty"` + // default = 0 + Value *uint32 `protobuf:"varint,2,opt,name=value,proto3,oneof" json:"value,omitempty"` // Description missing in models - // default = ['0.0.0.0'] - Values []string `protobuf:"bytes,3,rep,name=values,proto3" json:"values,omitempty"` + // default = [0] + Values []uint32 `protobuf:"varint,3,rep,packed,name=values,proto3" json:"values,omitempty"` // Description missing in models - Increment *PatternFlowIgmpv1GroupAddressCounter `protobuf:"bytes,5,opt,name=increment,proto3" json:"increment,omitempty"` + Increment *PatternFlowGtpv2MessageLengthCounter `protobuf:"bytes,5,opt,name=increment,proto3" json:"increment,omitempty"` // Description missing in models - Decrement *PatternFlowIgmpv1GroupAddressCounter `protobuf:"bytes,6,opt,name=decrement,proto3" json:"decrement,omitempty"` + Decrement *PatternFlowGtpv2MessageLengthCounter `protobuf:"bytes,6,opt,name=decrement,proto3" json:"decrement,omitempty"` // One or more metric tags can be used to enable tracking portion of or all bits in // a corresponding header field for metrics per each applicable value. These would appear // as tagged metrics in corresponding flow metrics. - MetricTags []*PatternFlowIgmpv1GroupAddressMetricTag `protobuf:"bytes,7,rep,name=metric_tags,json=metricTags,proto3" json:"metric_tags,omitempty"` + MetricTags []*PatternFlowGtpv2MessageLengthMetricTag `protobuf:"bytes,7,rep,name=metric_tags,json=metricTags,proto3" json:"metric_tags,omitempty"` } -func (x *PatternFlowIgmpv1GroupAddress) Reset() { - *x = PatternFlowIgmpv1GroupAddress{} +func (x *PatternFlowGtpv2MessageLength) Reset() { + *x = PatternFlowGtpv2MessageLength{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[733] + mi := &file_otg_proto_msgTypes[691] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowIgmpv1GroupAddress) String() string { +func (x *PatternFlowGtpv2MessageLength) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowIgmpv1GroupAddress) ProtoMessage() {} +func (*PatternFlowGtpv2MessageLength) ProtoMessage() {} -func (x *PatternFlowIgmpv1GroupAddress) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[733] +func (x *PatternFlowGtpv2MessageLength) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[691] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -79311,47 +78141,47 @@ func (x *PatternFlowIgmpv1GroupAddress) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use PatternFlowIgmpv1GroupAddress.ProtoReflect.Descriptor instead. -func (*PatternFlowIgmpv1GroupAddress) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{733} +// Deprecated: Use PatternFlowGtpv2MessageLength.ProtoReflect.Descriptor instead. +func (*PatternFlowGtpv2MessageLength) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{691} } -func (x *PatternFlowIgmpv1GroupAddress) GetChoice() PatternFlowIgmpv1GroupAddress_Choice_Enum { +func (x *PatternFlowGtpv2MessageLength) GetChoice() PatternFlowGtpv2MessageLength_Choice_Enum { if x != nil && x.Choice != nil { return *x.Choice } - return PatternFlowIgmpv1GroupAddress_Choice_unspecified + return PatternFlowGtpv2MessageLength_Choice_unspecified } -func (x *PatternFlowIgmpv1GroupAddress) GetValue() string { +func (x *PatternFlowGtpv2MessageLength) GetValue() uint32 { if x != nil && x.Value != nil { return *x.Value } - return "" + return 0 } -func (x *PatternFlowIgmpv1GroupAddress) GetValues() []string { +func (x *PatternFlowGtpv2MessageLength) GetValues() []uint32 { if x != nil { return x.Values } return nil } -func (x *PatternFlowIgmpv1GroupAddress) GetIncrement() *PatternFlowIgmpv1GroupAddressCounter { +func (x *PatternFlowGtpv2MessageLength) GetIncrement() *PatternFlowGtpv2MessageLengthCounter { if x != nil { return x.Increment } return nil } -func (x *PatternFlowIgmpv1GroupAddress) GetDecrement() *PatternFlowIgmpv1GroupAddressCounter { +func (x *PatternFlowGtpv2MessageLength) GetDecrement() *PatternFlowGtpv2MessageLengthCounter { if x != nil { return x.Decrement } return nil } -func (x *PatternFlowIgmpv1GroupAddress) GetMetricTags() []*PatternFlowIgmpv1GroupAddressMetricTag { +func (x *PatternFlowGtpv2MessageLength) GetMetricTags() []*PatternFlowGtpv2MessageLengthMetricTag { if x != nil { return x.MetricTags } @@ -79359,13 +78189,13 @@ func (x *PatternFlowIgmpv1GroupAddress) GetMetricTags() []*PatternFlowIgmpv1Grou } // integer counter pattern -type PatternFlowMplsLabelCounter struct { +type PatternFlowGtpv2TeidCounter struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // Description missing in models - // default = 16 + // default = 0 Start *uint32 `protobuf:"varint,1,opt,name=start,proto3,oneof" json:"start,omitempty"` // Description missing in models // default = 1 @@ -79375,23 +78205,23 @@ type PatternFlowMplsLabelCounter struct { Count *uint32 `protobuf:"varint,3,opt,name=count,proto3,oneof" json:"count,omitempty"` } -func (x *PatternFlowMplsLabelCounter) Reset() { - *x = PatternFlowMplsLabelCounter{} +func (x *PatternFlowGtpv2TeidCounter) Reset() { + *x = PatternFlowGtpv2TeidCounter{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[734] + mi := &file_otg_proto_msgTypes[692] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowMplsLabelCounter) String() string { +func (x *PatternFlowGtpv2TeidCounter) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowMplsLabelCounter) ProtoMessage() {} +func (*PatternFlowGtpv2TeidCounter) ProtoMessage() {} -func (x *PatternFlowMplsLabelCounter) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[734] +func (x *PatternFlowGtpv2TeidCounter) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[692] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -79402,26 +78232,26 @@ func (x *PatternFlowMplsLabelCounter) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use PatternFlowMplsLabelCounter.ProtoReflect.Descriptor instead. -func (*PatternFlowMplsLabelCounter) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{734} +// Deprecated: Use PatternFlowGtpv2TeidCounter.ProtoReflect.Descriptor instead. +func (*PatternFlowGtpv2TeidCounter) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{692} } -func (x *PatternFlowMplsLabelCounter) GetStart() uint32 { +func (x *PatternFlowGtpv2TeidCounter) GetStart() uint32 { if x != nil && x.Start != nil { return *x.Start } return 0 } -func (x *PatternFlowMplsLabelCounter) GetStep() uint32 { +func (x *PatternFlowGtpv2TeidCounter) GetStep() uint32 { if x != nil && x.Step != nil { return *x.Step } return 0 } -func (x *PatternFlowMplsLabelCounter) GetCount() uint32 { +func (x *PatternFlowGtpv2TeidCounter) GetCount() uint32 { if x != nil && x.Count != nil { return *x.Count } @@ -79431,7 +78261,7 @@ func (x *PatternFlowMplsLabelCounter) GetCount() uint32 { // Metric tag can be used to enable tracking portion of or all bits in a corresponding // header field for metrics per each applicable value. These would appear as tagged // metrics in corresponding flow metrics. -type PatternFlowMplsLabelMetricTag struct { +type PatternFlowGtpv2TeidMetricTag struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields @@ -79445,27 +78275,27 @@ type PatternFlowMplsLabelMetricTag struct { Offset *uint32 `protobuf:"varint,2,opt,name=offset,proto3,oneof" json:"offset,omitempty"` // Number of bits to track for metrics starting from configured offset of corresponding // header field - // default = 20 + // default = 32 Length *uint32 `protobuf:"varint,3,opt,name=length,proto3,oneof" json:"length,omitempty"` } -func (x *PatternFlowMplsLabelMetricTag) Reset() { - *x = PatternFlowMplsLabelMetricTag{} +func (x *PatternFlowGtpv2TeidMetricTag) Reset() { + *x = PatternFlowGtpv2TeidMetricTag{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[735] + mi := &file_otg_proto_msgTypes[693] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowMplsLabelMetricTag) String() string { +func (x *PatternFlowGtpv2TeidMetricTag) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowMplsLabelMetricTag) ProtoMessage() {} +func (*PatternFlowGtpv2TeidMetricTag) ProtoMessage() {} -func (x *PatternFlowMplsLabelMetricTag) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[735] +func (x *PatternFlowGtpv2TeidMetricTag) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[693] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -79476,79 +78306,75 @@ func (x *PatternFlowMplsLabelMetricTag) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use PatternFlowMplsLabelMetricTag.ProtoReflect.Descriptor instead. -func (*PatternFlowMplsLabelMetricTag) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{735} +// Deprecated: Use PatternFlowGtpv2TeidMetricTag.ProtoReflect.Descriptor instead. +func (*PatternFlowGtpv2TeidMetricTag) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{693} } -func (x *PatternFlowMplsLabelMetricTag) GetName() string { +func (x *PatternFlowGtpv2TeidMetricTag) GetName() string { if x != nil && x.Name != nil { return *x.Name } return "" } -func (x *PatternFlowMplsLabelMetricTag) GetOffset() uint32 { +func (x *PatternFlowGtpv2TeidMetricTag) GetOffset() uint32 { if x != nil && x.Offset != nil { return *x.Offset } return 0 } -func (x *PatternFlowMplsLabelMetricTag) GetLength() uint32 { +func (x *PatternFlowGtpv2TeidMetricTag) GetLength() uint32 { if x != nil && x.Length != nil { return *x.Length } return 0 } -// Label of routers -type PatternFlowMplsLabel struct { +// Tunnel endpoint identifier. A 32-bit (4-octet) field used to multiplex different +// connections in the same GTP tunnel. Is present only if the teid_flag is set. +type PatternFlowGtpv2Teid struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // Description missing in models - // default = Choice.Enum.auto - Choice *PatternFlowMplsLabel_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.PatternFlowMplsLabel_Choice_Enum,oneof" json:"choice,omitempty"` + // default = Choice.Enum.value + Choice *PatternFlowGtpv2Teid_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.PatternFlowGtpv2Teid_Choice_Enum,oneof" json:"choice,omitempty"` // Description missing in models - // default = 16 + // default = 0 Value *uint32 `protobuf:"varint,2,opt,name=value,proto3,oneof" json:"value,omitempty"` // Description missing in models - // default = [16] + // default = [0] Values []uint32 `protobuf:"varint,3,rep,packed,name=values,proto3" json:"values,omitempty"` - // The OTG implementation can provide a system generated - // value for this property. If the OTG is unable to generate a value - // the default value must be used. - // default = 16 - Auto *uint32 `protobuf:"varint,4,opt,name=auto,proto3,oneof" json:"auto,omitempty"` // Description missing in models - Increment *PatternFlowMplsLabelCounter `protobuf:"bytes,6,opt,name=increment,proto3" json:"increment,omitempty"` + Increment *PatternFlowGtpv2TeidCounter `protobuf:"bytes,5,opt,name=increment,proto3" json:"increment,omitempty"` // Description missing in models - Decrement *PatternFlowMplsLabelCounter `protobuf:"bytes,7,opt,name=decrement,proto3" json:"decrement,omitempty"` + Decrement *PatternFlowGtpv2TeidCounter `protobuf:"bytes,6,opt,name=decrement,proto3" json:"decrement,omitempty"` // One or more metric tags can be used to enable tracking portion of or all bits in // a corresponding header field for metrics per each applicable value. These would appear // as tagged metrics in corresponding flow metrics. - MetricTags []*PatternFlowMplsLabelMetricTag `protobuf:"bytes,8,rep,name=metric_tags,json=metricTags,proto3" json:"metric_tags,omitempty"` + MetricTags []*PatternFlowGtpv2TeidMetricTag `protobuf:"bytes,7,rep,name=metric_tags,json=metricTags,proto3" json:"metric_tags,omitempty"` } -func (x *PatternFlowMplsLabel) Reset() { - *x = PatternFlowMplsLabel{} +func (x *PatternFlowGtpv2Teid) Reset() { + *x = PatternFlowGtpv2Teid{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[736] + mi := &file_otg_proto_msgTypes[694] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowMplsLabel) String() string { +func (x *PatternFlowGtpv2Teid) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowMplsLabel) ProtoMessage() {} +func (*PatternFlowGtpv2Teid) ProtoMessage() {} -func (x *PatternFlowMplsLabel) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[736] +func (x *PatternFlowGtpv2Teid) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[694] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -79559,54 +78385,47 @@ func (x *PatternFlowMplsLabel) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use PatternFlowMplsLabel.ProtoReflect.Descriptor instead. -func (*PatternFlowMplsLabel) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{736} +// Deprecated: Use PatternFlowGtpv2Teid.ProtoReflect.Descriptor instead. +func (*PatternFlowGtpv2Teid) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{694} } -func (x *PatternFlowMplsLabel) GetChoice() PatternFlowMplsLabel_Choice_Enum { +func (x *PatternFlowGtpv2Teid) GetChoice() PatternFlowGtpv2Teid_Choice_Enum { if x != nil && x.Choice != nil { return *x.Choice } - return PatternFlowMplsLabel_Choice_unspecified + return PatternFlowGtpv2Teid_Choice_unspecified } -func (x *PatternFlowMplsLabel) GetValue() uint32 { +func (x *PatternFlowGtpv2Teid) GetValue() uint32 { if x != nil && x.Value != nil { return *x.Value } return 0 } -func (x *PatternFlowMplsLabel) GetValues() []uint32 { +func (x *PatternFlowGtpv2Teid) GetValues() []uint32 { if x != nil { return x.Values } return nil } -func (x *PatternFlowMplsLabel) GetAuto() uint32 { - if x != nil && x.Auto != nil { - return *x.Auto - } - return 0 -} - -func (x *PatternFlowMplsLabel) GetIncrement() *PatternFlowMplsLabelCounter { +func (x *PatternFlowGtpv2Teid) GetIncrement() *PatternFlowGtpv2TeidCounter { if x != nil { return x.Increment } return nil } -func (x *PatternFlowMplsLabel) GetDecrement() *PatternFlowMplsLabelCounter { +func (x *PatternFlowGtpv2Teid) GetDecrement() *PatternFlowGtpv2TeidCounter { if x != nil { return x.Decrement } return nil } -func (x *PatternFlowMplsLabel) GetMetricTags() []*PatternFlowMplsLabelMetricTag { +func (x *PatternFlowGtpv2Teid) GetMetricTags() []*PatternFlowGtpv2TeidMetricTag { if x != nil { return x.MetricTags } @@ -79614,7 +78433,7 @@ func (x *PatternFlowMplsLabel) GetMetricTags() []*PatternFlowMplsLabelMetricTag } // integer counter pattern -type PatternFlowMplsTrafficClassCounter struct { +type PatternFlowGtpv2SequenceNumberCounter struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields @@ -79630,23 +78449,23 @@ type PatternFlowMplsTrafficClassCounter struct { Count *uint32 `protobuf:"varint,3,opt,name=count,proto3,oneof" json:"count,omitempty"` } -func (x *PatternFlowMplsTrafficClassCounter) Reset() { - *x = PatternFlowMplsTrafficClassCounter{} +func (x *PatternFlowGtpv2SequenceNumberCounter) Reset() { + *x = PatternFlowGtpv2SequenceNumberCounter{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[737] + mi := &file_otg_proto_msgTypes[695] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowMplsTrafficClassCounter) String() string { +func (x *PatternFlowGtpv2SequenceNumberCounter) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowMplsTrafficClassCounter) ProtoMessage() {} +func (*PatternFlowGtpv2SequenceNumberCounter) ProtoMessage() {} -func (x *PatternFlowMplsTrafficClassCounter) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[737] +func (x *PatternFlowGtpv2SequenceNumberCounter) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[695] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -79657,26 +78476,26 @@ func (x *PatternFlowMplsTrafficClassCounter) ProtoReflect() protoreflect.Message return mi.MessageOf(x) } -// Deprecated: Use PatternFlowMplsTrafficClassCounter.ProtoReflect.Descriptor instead. -func (*PatternFlowMplsTrafficClassCounter) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{737} +// Deprecated: Use PatternFlowGtpv2SequenceNumberCounter.ProtoReflect.Descriptor instead. +func (*PatternFlowGtpv2SequenceNumberCounter) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{695} } -func (x *PatternFlowMplsTrafficClassCounter) GetStart() uint32 { +func (x *PatternFlowGtpv2SequenceNumberCounter) GetStart() uint32 { if x != nil && x.Start != nil { return *x.Start } return 0 } -func (x *PatternFlowMplsTrafficClassCounter) GetStep() uint32 { +func (x *PatternFlowGtpv2SequenceNumberCounter) GetStep() uint32 { if x != nil && x.Step != nil { return *x.Step } return 0 } -func (x *PatternFlowMplsTrafficClassCounter) GetCount() uint32 { +func (x *PatternFlowGtpv2SequenceNumberCounter) GetCount() uint32 { if x != nil && x.Count != nil { return *x.Count } @@ -79686,7 +78505,7 @@ func (x *PatternFlowMplsTrafficClassCounter) GetCount() uint32 { // Metric tag can be used to enable tracking portion of or all bits in a corresponding // header field for metrics per each applicable value. These would appear as tagged // metrics in corresponding flow metrics. -type PatternFlowMplsTrafficClassMetricTag struct { +type PatternFlowGtpv2SequenceNumberMetricTag struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields @@ -79700,27 +78519,27 @@ type PatternFlowMplsTrafficClassMetricTag struct { Offset *uint32 `protobuf:"varint,2,opt,name=offset,proto3,oneof" json:"offset,omitempty"` // Number of bits to track for metrics starting from configured offset of corresponding // header field - // default = 3 + // default = 24 Length *uint32 `protobuf:"varint,3,opt,name=length,proto3,oneof" json:"length,omitempty"` } -func (x *PatternFlowMplsTrafficClassMetricTag) Reset() { - *x = PatternFlowMplsTrafficClassMetricTag{} +func (x *PatternFlowGtpv2SequenceNumberMetricTag) Reset() { + *x = PatternFlowGtpv2SequenceNumberMetricTag{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[738] + mi := &file_otg_proto_msgTypes[696] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowMplsTrafficClassMetricTag) String() string { +func (x *PatternFlowGtpv2SequenceNumberMetricTag) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowMplsTrafficClassMetricTag) ProtoMessage() {} +func (*PatternFlowGtpv2SequenceNumberMetricTag) ProtoMessage() {} -func (x *PatternFlowMplsTrafficClassMetricTag) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[738] +func (x *PatternFlowGtpv2SequenceNumberMetricTag) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[696] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -79731,41 +78550,41 @@ func (x *PatternFlowMplsTrafficClassMetricTag) ProtoReflect() protoreflect.Messa return mi.MessageOf(x) } -// Deprecated: Use PatternFlowMplsTrafficClassMetricTag.ProtoReflect.Descriptor instead. -func (*PatternFlowMplsTrafficClassMetricTag) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{738} +// Deprecated: Use PatternFlowGtpv2SequenceNumberMetricTag.ProtoReflect.Descriptor instead. +func (*PatternFlowGtpv2SequenceNumberMetricTag) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{696} } -func (x *PatternFlowMplsTrafficClassMetricTag) GetName() string { +func (x *PatternFlowGtpv2SequenceNumberMetricTag) GetName() string { if x != nil && x.Name != nil { return *x.Name } return "" } -func (x *PatternFlowMplsTrafficClassMetricTag) GetOffset() uint32 { +func (x *PatternFlowGtpv2SequenceNumberMetricTag) GetOffset() uint32 { if x != nil && x.Offset != nil { return *x.Offset } return 0 } -func (x *PatternFlowMplsTrafficClassMetricTag) GetLength() uint32 { +func (x *PatternFlowGtpv2SequenceNumberMetricTag) GetLength() uint32 { if x != nil && x.Length != nil { return *x.Length } return 0 } -// Traffic class -type PatternFlowMplsTrafficClass struct { +// The sequence number +type PatternFlowGtpv2SequenceNumber struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // Description missing in models // default = Choice.Enum.value - Choice *PatternFlowMplsTrafficClass_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.PatternFlowMplsTrafficClass_Choice_Enum,oneof" json:"choice,omitempty"` + Choice *PatternFlowGtpv2SequenceNumber_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.PatternFlowGtpv2SequenceNumber_Choice_Enum,oneof" json:"choice,omitempty"` // Description missing in models // default = 0 Value *uint32 `protobuf:"varint,2,opt,name=value,proto3,oneof" json:"value,omitempty"` @@ -79773,32 +78592,32 @@ type PatternFlowMplsTrafficClass struct { // default = [0] Values []uint32 `protobuf:"varint,3,rep,packed,name=values,proto3" json:"values,omitempty"` // Description missing in models - Increment *PatternFlowMplsTrafficClassCounter `protobuf:"bytes,5,opt,name=increment,proto3" json:"increment,omitempty"` + Increment *PatternFlowGtpv2SequenceNumberCounter `protobuf:"bytes,5,opt,name=increment,proto3" json:"increment,omitempty"` // Description missing in models - Decrement *PatternFlowMplsTrafficClassCounter `protobuf:"bytes,6,opt,name=decrement,proto3" json:"decrement,omitempty"` + Decrement *PatternFlowGtpv2SequenceNumberCounter `protobuf:"bytes,6,opt,name=decrement,proto3" json:"decrement,omitempty"` // One or more metric tags can be used to enable tracking portion of or all bits in // a corresponding header field for metrics per each applicable value. These would appear // as tagged metrics in corresponding flow metrics. - MetricTags []*PatternFlowMplsTrafficClassMetricTag `protobuf:"bytes,7,rep,name=metric_tags,json=metricTags,proto3" json:"metric_tags,omitempty"` + MetricTags []*PatternFlowGtpv2SequenceNumberMetricTag `protobuf:"bytes,7,rep,name=metric_tags,json=metricTags,proto3" json:"metric_tags,omitempty"` } -func (x *PatternFlowMplsTrafficClass) Reset() { - *x = PatternFlowMplsTrafficClass{} +func (x *PatternFlowGtpv2SequenceNumber) Reset() { + *x = PatternFlowGtpv2SequenceNumber{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[739] + mi := &file_otg_proto_msgTypes[697] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowMplsTrafficClass) String() string { +func (x *PatternFlowGtpv2SequenceNumber) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowMplsTrafficClass) ProtoMessage() {} +func (*PatternFlowGtpv2SequenceNumber) ProtoMessage() {} -func (x *PatternFlowMplsTrafficClass) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[739] +func (x *PatternFlowGtpv2SequenceNumber) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[697] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -79809,47 +78628,47 @@ func (x *PatternFlowMplsTrafficClass) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use PatternFlowMplsTrafficClass.ProtoReflect.Descriptor instead. -func (*PatternFlowMplsTrafficClass) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{739} +// Deprecated: Use PatternFlowGtpv2SequenceNumber.ProtoReflect.Descriptor instead. +func (*PatternFlowGtpv2SequenceNumber) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{697} } -func (x *PatternFlowMplsTrafficClass) GetChoice() PatternFlowMplsTrafficClass_Choice_Enum { +func (x *PatternFlowGtpv2SequenceNumber) GetChoice() PatternFlowGtpv2SequenceNumber_Choice_Enum { if x != nil && x.Choice != nil { return *x.Choice } - return PatternFlowMplsTrafficClass_Choice_unspecified + return PatternFlowGtpv2SequenceNumber_Choice_unspecified } -func (x *PatternFlowMplsTrafficClass) GetValue() uint32 { +func (x *PatternFlowGtpv2SequenceNumber) GetValue() uint32 { if x != nil && x.Value != nil { return *x.Value } return 0 } -func (x *PatternFlowMplsTrafficClass) GetValues() []uint32 { +func (x *PatternFlowGtpv2SequenceNumber) GetValues() []uint32 { if x != nil { return x.Values } return nil } -func (x *PatternFlowMplsTrafficClass) GetIncrement() *PatternFlowMplsTrafficClassCounter { +func (x *PatternFlowGtpv2SequenceNumber) GetIncrement() *PatternFlowGtpv2SequenceNumberCounter { if x != nil { return x.Increment } return nil } -func (x *PatternFlowMplsTrafficClass) GetDecrement() *PatternFlowMplsTrafficClassCounter { +func (x *PatternFlowGtpv2SequenceNumber) GetDecrement() *PatternFlowGtpv2SequenceNumberCounter { if x != nil { return x.Decrement } return nil } -func (x *PatternFlowMplsTrafficClass) GetMetricTags() []*PatternFlowMplsTrafficClassMetricTag { +func (x *PatternFlowGtpv2SequenceNumber) GetMetricTags() []*PatternFlowGtpv2SequenceNumberMetricTag { if x != nil { return x.MetricTags } @@ -79857,13 +78676,13 @@ func (x *PatternFlowMplsTrafficClass) GetMetricTags() []*PatternFlowMplsTrafficC } // integer counter pattern -type PatternFlowMplsBottomOfStackCounter struct { +type PatternFlowGtpv2Spare2Counter struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // Description missing in models - // default = 1 + // default = 0 Start *uint32 `protobuf:"varint,1,opt,name=start,proto3,oneof" json:"start,omitempty"` // Description missing in models // default = 1 @@ -79873,23 +78692,23 @@ type PatternFlowMplsBottomOfStackCounter struct { Count *uint32 `protobuf:"varint,3,opt,name=count,proto3,oneof" json:"count,omitempty"` } -func (x *PatternFlowMplsBottomOfStackCounter) Reset() { - *x = PatternFlowMplsBottomOfStackCounter{} +func (x *PatternFlowGtpv2Spare2Counter) Reset() { + *x = PatternFlowGtpv2Spare2Counter{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[740] + mi := &file_otg_proto_msgTypes[698] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowMplsBottomOfStackCounter) String() string { +func (x *PatternFlowGtpv2Spare2Counter) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowMplsBottomOfStackCounter) ProtoMessage() {} +func (*PatternFlowGtpv2Spare2Counter) ProtoMessage() {} -func (x *PatternFlowMplsBottomOfStackCounter) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[740] +func (x *PatternFlowGtpv2Spare2Counter) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[698] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -79900,26 +78719,26 @@ func (x *PatternFlowMplsBottomOfStackCounter) ProtoReflect() protoreflect.Messag return mi.MessageOf(x) } -// Deprecated: Use PatternFlowMplsBottomOfStackCounter.ProtoReflect.Descriptor instead. -func (*PatternFlowMplsBottomOfStackCounter) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{740} +// Deprecated: Use PatternFlowGtpv2Spare2Counter.ProtoReflect.Descriptor instead. +func (*PatternFlowGtpv2Spare2Counter) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{698} } -func (x *PatternFlowMplsBottomOfStackCounter) GetStart() uint32 { +func (x *PatternFlowGtpv2Spare2Counter) GetStart() uint32 { if x != nil && x.Start != nil { return *x.Start } return 0 } -func (x *PatternFlowMplsBottomOfStackCounter) GetStep() uint32 { +func (x *PatternFlowGtpv2Spare2Counter) GetStep() uint32 { if x != nil && x.Step != nil { return *x.Step } return 0 } -func (x *PatternFlowMplsBottomOfStackCounter) GetCount() uint32 { +func (x *PatternFlowGtpv2Spare2Counter) GetCount() uint32 { if x != nil && x.Count != nil { return *x.Count } @@ -79929,7 +78748,7 @@ func (x *PatternFlowMplsBottomOfStackCounter) GetCount() uint32 { // Metric tag can be used to enable tracking portion of or all bits in a corresponding // header field for metrics per each applicable value. These would appear as tagged // metrics in corresponding flow metrics. -type PatternFlowMplsBottomOfStackMetricTag struct { +type PatternFlowGtpv2Spare2MetricTag struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields @@ -79943,27 +78762,27 @@ type PatternFlowMplsBottomOfStackMetricTag struct { Offset *uint32 `protobuf:"varint,2,opt,name=offset,proto3,oneof" json:"offset,omitempty"` // Number of bits to track for metrics starting from configured offset of corresponding // header field - // default = 1 + // default = 8 Length *uint32 `protobuf:"varint,3,opt,name=length,proto3,oneof" json:"length,omitempty"` } -func (x *PatternFlowMplsBottomOfStackMetricTag) Reset() { - *x = PatternFlowMplsBottomOfStackMetricTag{} +func (x *PatternFlowGtpv2Spare2MetricTag) Reset() { + *x = PatternFlowGtpv2Spare2MetricTag{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[741] + mi := &file_otg_proto_msgTypes[699] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowMplsBottomOfStackMetricTag) String() string { +func (x *PatternFlowGtpv2Spare2MetricTag) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowMplsBottomOfStackMetricTag) ProtoMessage() {} +func (*PatternFlowGtpv2Spare2MetricTag) ProtoMessage() {} -func (x *PatternFlowMplsBottomOfStackMetricTag) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[741] +func (x *PatternFlowGtpv2Spare2MetricTag) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[699] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -79974,79 +78793,74 @@ func (x *PatternFlowMplsBottomOfStackMetricTag) ProtoReflect() protoreflect.Mess return mi.MessageOf(x) } -// Deprecated: Use PatternFlowMplsBottomOfStackMetricTag.ProtoReflect.Descriptor instead. -func (*PatternFlowMplsBottomOfStackMetricTag) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{741} +// Deprecated: Use PatternFlowGtpv2Spare2MetricTag.ProtoReflect.Descriptor instead. +func (*PatternFlowGtpv2Spare2MetricTag) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{699} } -func (x *PatternFlowMplsBottomOfStackMetricTag) GetName() string { +func (x *PatternFlowGtpv2Spare2MetricTag) GetName() string { if x != nil && x.Name != nil { return *x.Name } return "" } -func (x *PatternFlowMplsBottomOfStackMetricTag) GetOffset() uint32 { +func (x *PatternFlowGtpv2Spare2MetricTag) GetOffset() uint32 { if x != nil && x.Offset != nil { return *x.Offset } return 0 } -func (x *PatternFlowMplsBottomOfStackMetricTag) GetLength() uint32 { +func (x *PatternFlowGtpv2Spare2MetricTag) GetLength() uint32 { if x != nil && x.Length != nil { return *x.Length } return 0 } -// Bottom of stack -type PatternFlowMplsBottomOfStack struct { +// Reserved field +type PatternFlowGtpv2Spare2 struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // Description missing in models - // default = Choice.Enum.auto - Choice *PatternFlowMplsBottomOfStack_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.PatternFlowMplsBottomOfStack_Choice_Enum,oneof" json:"choice,omitempty"` + // default = Choice.Enum.value + Choice *PatternFlowGtpv2Spare2_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.PatternFlowGtpv2Spare2_Choice_Enum,oneof" json:"choice,omitempty"` // Description missing in models - // default = 1 + // default = 0 Value *uint32 `protobuf:"varint,2,opt,name=value,proto3,oneof" json:"value,omitempty"` // Description missing in models - // default = [1] + // default = [0] Values []uint32 `protobuf:"varint,3,rep,packed,name=values,proto3" json:"values,omitempty"` - // The OTG implementation can provide a system generated - // value for this property. If the OTG is unable to generate a value - // the default value must be used. - // default = 1 - Auto *uint32 `protobuf:"varint,4,opt,name=auto,proto3,oneof" json:"auto,omitempty"` // Description missing in models - Increment *PatternFlowMplsBottomOfStackCounter `protobuf:"bytes,6,opt,name=increment,proto3" json:"increment,omitempty"` + Increment *PatternFlowGtpv2Spare2Counter `protobuf:"bytes,5,opt,name=increment,proto3" json:"increment,omitempty"` // Description missing in models - Decrement *PatternFlowMplsBottomOfStackCounter `protobuf:"bytes,7,opt,name=decrement,proto3" json:"decrement,omitempty"` + Decrement *PatternFlowGtpv2Spare2Counter `protobuf:"bytes,6,opt,name=decrement,proto3" json:"decrement,omitempty"` // One or more metric tags can be used to enable tracking portion of or all bits in // a corresponding header field for metrics per each applicable value. These would appear // as tagged metrics in corresponding flow metrics. - MetricTags []*PatternFlowMplsBottomOfStackMetricTag `protobuf:"bytes,8,rep,name=metric_tags,json=metricTags,proto3" json:"metric_tags,omitempty"` + MetricTags []*PatternFlowGtpv2Spare2MetricTag `protobuf:"bytes,7,rep,name=metric_tags,json=metricTags,proto3" json:"metric_tags,omitempty"` } -func (x *PatternFlowMplsBottomOfStack) Reset() { - *x = PatternFlowMplsBottomOfStack{} +func (x *PatternFlowGtpv2Spare2) Reset() { + *x = PatternFlowGtpv2Spare2{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[742] + mi := &file_otg_proto_msgTypes[700] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowMplsBottomOfStack) String() string { +func (x *PatternFlowGtpv2Spare2) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowMplsBottomOfStack) ProtoMessage() {} +func (*PatternFlowGtpv2Spare2) ProtoMessage() {} -func (x *PatternFlowMplsBottomOfStack) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[742] +func (x *PatternFlowGtpv2Spare2) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[700] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -80057,54 +78871,47 @@ func (x *PatternFlowMplsBottomOfStack) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use PatternFlowMplsBottomOfStack.ProtoReflect.Descriptor instead. -func (*PatternFlowMplsBottomOfStack) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{742} +// Deprecated: Use PatternFlowGtpv2Spare2.ProtoReflect.Descriptor instead. +func (*PatternFlowGtpv2Spare2) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{700} } -func (x *PatternFlowMplsBottomOfStack) GetChoice() PatternFlowMplsBottomOfStack_Choice_Enum { +func (x *PatternFlowGtpv2Spare2) GetChoice() PatternFlowGtpv2Spare2_Choice_Enum { if x != nil && x.Choice != nil { return *x.Choice } - return PatternFlowMplsBottomOfStack_Choice_unspecified + return PatternFlowGtpv2Spare2_Choice_unspecified } -func (x *PatternFlowMplsBottomOfStack) GetValue() uint32 { +func (x *PatternFlowGtpv2Spare2) GetValue() uint32 { if x != nil && x.Value != nil { return *x.Value } return 0 } -func (x *PatternFlowMplsBottomOfStack) GetValues() []uint32 { +func (x *PatternFlowGtpv2Spare2) GetValues() []uint32 { if x != nil { return x.Values } return nil } -func (x *PatternFlowMplsBottomOfStack) GetAuto() uint32 { - if x != nil && x.Auto != nil { - return *x.Auto - } - return 0 -} - -func (x *PatternFlowMplsBottomOfStack) GetIncrement() *PatternFlowMplsBottomOfStackCounter { +func (x *PatternFlowGtpv2Spare2) GetIncrement() *PatternFlowGtpv2Spare2Counter { if x != nil { return x.Increment } return nil } -func (x *PatternFlowMplsBottomOfStack) GetDecrement() *PatternFlowMplsBottomOfStackCounter { +func (x *PatternFlowGtpv2Spare2) GetDecrement() *PatternFlowGtpv2Spare2Counter { if x != nil { return x.Decrement } return nil } -func (x *PatternFlowMplsBottomOfStack) GetMetricTags() []*PatternFlowMplsBottomOfStackMetricTag { +func (x *PatternFlowGtpv2Spare2) GetMetricTags() []*PatternFlowGtpv2Spare2MetricTag { if x != nil { return x.MetricTags } @@ -80112,13 +78919,13 @@ func (x *PatternFlowMplsBottomOfStack) GetMetricTags() []*PatternFlowMplsBottomO } // integer counter pattern -type PatternFlowMplsTimeToLiveCounter struct { +type PatternFlowArpHardwareTypeCounter struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // Description missing in models - // default = 64 + // default = 1 Start *uint32 `protobuf:"varint,1,opt,name=start,proto3,oneof" json:"start,omitempty"` // Description missing in models // default = 1 @@ -80128,23 +78935,23 @@ type PatternFlowMplsTimeToLiveCounter struct { Count *uint32 `protobuf:"varint,3,opt,name=count,proto3,oneof" json:"count,omitempty"` } -func (x *PatternFlowMplsTimeToLiveCounter) Reset() { - *x = PatternFlowMplsTimeToLiveCounter{} +func (x *PatternFlowArpHardwareTypeCounter) Reset() { + *x = PatternFlowArpHardwareTypeCounter{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[743] + mi := &file_otg_proto_msgTypes[701] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowMplsTimeToLiveCounter) String() string { +func (x *PatternFlowArpHardwareTypeCounter) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowMplsTimeToLiveCounter) ProtoMessage() {} +func (*PatternFlowArpHardwareTypeCounter) ProtoMessage() {} -func (x *PatternFlowMplsTimeToLiveCounter) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[743] +func (x *PatternFlowArpHardwareTypeCounter) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[701] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -80155,26 +78962,26 @@ func (x *PatternFlowMplsTimeToLiveCounter) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use PatternFlowMplsTimeToLiveCounter.ProtoReflect.Descriptor instead. -func (*PatternFlowMplsTimeToLiveCounter) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{743} +// Deprecated: Use PatternFlowArpHardwareTypeCounter.ProtoReflect.Descriptor instead. +func (*PatternFlowArpHardwareTypeCounter) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{701} } -func (x *PatternFlowMplsTimeToLiveCounter) GetStart() uint32 { +func (x *PatternFlowArpHardwareTypeCounter) GetStart() uint32 { if x != nil && x.Start != nil { return *x.Start } return 0 } -func (x *PatternFlowMplsTimeToLiveCounter) GetStep() uint32 { +func (x *PatternFlowArpHardwareTypeCounter) GetStep() uint32 { if x != nil && x.Step != nil { return *x.Step } return 0 } -func (x *PatternFlowMplsTimeToLiveCounter) GetCount() uint32 { +func (x *PatternFlowArpHardwareTypeCounter) GetCount() uint32 { if x != nil && x.Count != nil { return *x.Count } @@ -80184,7 +78991,7 @@ func (x *PatternFlowMplsTimeToLiveCounter) GetCount() uint32 { // Metric tag can be used to enable tracking portion of or all bits in a corresponding // header field for metrics per each applicable value. These would appear as tagged // metrics in corresponding flow metrics. -type PatternFlowMplsTimeToLiveMetricTag struct { +type PatternFlowArpHardwareTypeMetricTag struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields @@ -80198,27 +79005,27 @@ type PatternFlowMplsTimeToLiveMetricTag struct { Offset *uint32 `protobuf:"varint,2,opt,name=offset,proto3,oneof" json:"offset,omitempty"` // Number of bits to track for metrics starting from configured offset of corresponding // header field - // default = 8 + // default = 16 Length *uint32 `protobuf:"varint,3,opt,name=length,proto3,oneof" json:"length,omitempty"` } -func (x *PatternFlowMplsTimeToLiveMetricTag) Reset() { - *x = PatternFlowMplsTimeToLiveMetricTag{} +func (x *PatternFlowArpHardwareTypeMetricTag) Reset() { + *x = PatternFlowArpHardwareTypeMetricTag{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[744] + mi := &file_otg_proto_msgTypes[702] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowMplsTimeToLiveMetricTag) String() string { +func (x *PatternFlowArpHardwareTypeMetricTag) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowMplsTimeToLiveMetricTag) ProtoMessage() {} +func (*PatternFlowArpHardwareTypeMetricTag) ProtoMessage() {} -func (x *PatternFlowMplsTimeToLiveMetricTag) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[744] +func (x *PatternFlowArpHardwareTypeMetricTag) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[702] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -80229,74 +79036,74 @@ func (x *PatternFlowMplsTimeToLiveMetricTag) ProtoReflect() protoreflect.Message return mi.MessageOf(x) } -// Deprecated: Use PatternFlowMplsTimeToLiveMetricTag.ProtoReflect.Descriptor instead. -func (*PatternFlowMplsTimeToLiveMetricTag) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{744} +// Deprecated: Use PatternFlowArpHardwareTypeMetricTag.ProtoReflect.Descriptor instead. +func (*PatternFlowArpHardwareTypeMetricTag) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{702} } -func (x *PatternFlowMplsTimeToLiveMetricTag) GetName() string { +func (x *PatternFlowArpHardwareTypeMetricTag) GetName() string { if x != nil && x.Name != nil { return *x.Name } return "" } -func (x *PatternFlowMplsTimeToLiveMetricTag) GetOffset() uint32 { +func (x *PatternFlowArpHardwareTypeMetricTag) GetOffset() uint32 { if x != nil && x.Offset != nil { return *x.Offset } return 0 } -func (x *PatternFlowMplsTimeToLiveMetricTag) GetLength() uint32 { +func (x *PatternFlowArpHardwareTypeMetricTag) GetLength() uint32 { if x != nil && x.Length != nil { return *x.Length } return 0 } -// Time to live -type PatternFlowMplsTimeToLive struct { +// Network link protocol type +type PatternFlowArpHardwareType struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // Description missing in models // default = Choice.Enum.value - Choice *PatternFlowMplsTimeToLive_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.PatternFlowMplsTimeToLive_Choice_Enum,oneof" json:"choice,omitempty"` + Choice *PatternFlowArpHardwareType_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.PatternFlowArpHardwareType_Choice_Enum,oneof" json:"choice,omitempty"` // Description missing in models - // default = 64 + // default = 1 Value *uint32 `protobuf:"varint,2,opt,name=value,proto3,oneof" json:"value,omitempty"` // Description missing in models - // default = [64] + // default = [1] Values []uint32 `protobuf:"varint,3,rep,packed,name=values,proto3" json:"values,omitempty"` // Description missing in models - Increment *PatternFlowMplsTimeToLiveCounter `protobuf:"bytes,5,opt,name=increment,proto3" json:"increment,omitempty"` + Increment *PatternFlowArpHardwareTypeCounter `protobuf:"bytes,5,opt,name=increment,proto3" json:"increment,omitempty"` // Description missing in models - Decrement *PatternFlowMplsTimeToLiveCounter `protobuf:"bytes,6,opt,name=decrement,proto3" json:"decrement,omitempty"` + Decrement *PatternFlowArpHardwareTypeCounter `protobuf:"bytes,6,opt,name=decrement,proto3" json:"decrement,omitempty"` // One or more metric tags can be used to enable tracking portion of or all bits in // a corresponding header field for metrics per each applicable value. These would appear // as tagged metrics in corresponding flow metrics. - MetricTags []*PatternFlowMplsTimeToLiveMetricTag `protobuf:"bytes,7,rep,name=metric_tags,json=metricTags,proto3" json:"metric_tags,omitempty"` + MetricTags []*PatternFlowArpHardwareTypeMetricTag `protobuf:"bytes,7,rep,name=metric_tags,json=metricTags,proto3" json:"metric_tags,omitempty"` } -func (x *PatternFlowMplsTimeToLive) Reset() { - *x = PatternFlowMplsTimeToLive{} +func (x *PatternFlowArpHardwareType) Reset() { + *x = PatternFlowArpHardwareType{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[745] + mi := &file_otg_proto_msgTypes[703] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowMplsTimeToLive) String() string { +func (x *PatternFlowArpHardwareType) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowMplsTimeToLive) ProtoMessage() {} +func (*PatternFlowArpHardwareType) ProtoMessage() {} -func (x *PatternFlowMplsTimeToLive) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[745] +func (x *PatternFlowArpHardwareType) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[703] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -80307,87 +79114,87 @@ func (x *PatternFlowMplsTimeToLive) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use PatternFlowMplsTimeToLive.ProtoReflect.Descriptor instead. -func (*PatternFlowMplsTimeToLive) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{745} +// Deprecated: Use PatternFlowArpHardwareType.ProtoReflect.Descriptor instead. +func (*PatternFlowArpHardwareType) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{703} } -func (x *PatternFlowMplsTimeToLive) GetChoice() PatternFlowMplsTimeToLive_Choice_Enum { +func (x *PatternFlowArpHardwareType) GetChoice() PatternFlowArpHardwareType_Choice_Enum { if x != nil && x.Choice != nil { return *x.Choice } - return PatternFlowMplsTimeToLive_Choice_unspecified + return PatternFlowArpHardwareType_Choice_unspecified } -func (x *PatternFlowMplsTimeToLive) GetValue() uint32 { +func (x *PatternFlowArpHardwareType) GetValue() uint32 { if x != nil && x.Value != nil { return *x.Value } return 0 } -func (x *PatternFlowMplsTimeToLive) GetValues() []uint32 { +func (x *PatternFlowArpHardwareType) GetValues() []uint32 { if x != nil { return x.Values } return nil } -func (x *PatternFlowMplsTimeToLive) GetIncrement() *PatternFlowMplsTimeToLiveCounter { +func (x *PatternFlowArpHardwareType) GetIncrement() *PatternFlowArpHardwareTypeCounter { if x != nil { return x.Increment } return nil } -func (x *PatternFlowMplsTimeToLive) GetDecrement() *PatternFlowMplsTimeToLiveCounter { +func (x *PatternFlowArpHardwareType) GetDecrement() *PatternFlowArpHardwareTypeCounter { if x != nil { return x.Decrement } return nil } -func (x *PatternFlowMplsTimeToLive) GetMetricTags() []*PatternFlowMplsTimeToLiveMetricTag { +func (x *PatternFlowArpHardwareType) GetMetricTags() []*PatternFlowArpHardwareTypeMetricTag { if x != nil { return x.MetricTags } return nil } -// Version details -type Version struct { +// integer counter pattern +type PatternFlowArpProtocolTypeCounter struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Version of API specification - // default = - ApiSpecVersion *string `protobuf:"bytes,1,opt,name=api_spec_version,json=apiSpecVersion,proto3,oneof" json:"api_spec_version,omitempty"` - // Version of SDK generated from API specification - // default = - SdkVersion *string `protobuf:"bytes,2,opt,name=sdk_version,json=sdkVersion,proto3,oneof" json:"sdk_version,omitempty"` - // Version of application consuming or serving the API - // default = - AppVersion *string `protobuf:"bytes,3,opt,name=app_version,json=appVersion,proto3,oneof" json:"app_version,omitempty"` + // Description missing in models + // default = 2048 + Start *uint32 `protobuf:"varint,1,opt,name=start,proto3,oneof" json:"start,omitempty"` + // Description missing in models + // default = 1 + Step *uint32 `protobuf:"varint,2,opt,name=step,proto3,oneof" json:"step,omitempty"` + // Description missing in models + // default = 1 + Count *uint32 `protobuf:"varint,3,opt,name=count,proto3,oneof" json:"count,omitempty"` } -func (x *Version) Reset() { - *x = Version{} +func (x *PatternFlowArpProtocolTypeCounter) Reset() { + *x = PatternFlowArpProtocolTypeCounter{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[746] + mi := &file_otg_proto_msgTypes[704] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *Version) String() string { +func (x *PatternFlowArpProtocolTypeCounter) String() string { return protoimpl.X.MessageStringOf(x) } -func (*Version) ProtoMessage() {} +func (*PatternFlowArpProtocolTypeCounter) ProtoMessage() {} -func (x *Version) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[746] +func (x *PatternFlowArpProtocolTypeCounter) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[704] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -80398,59 +79205,70 @@ func (x *Version) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use Version.ProtoReflect.Descriptor instead. -func (*Version) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{746} +// Deprecated: Use PatternFlowArpProtocolTypeCounter.ProtoReflect.Descriptor instead. +func (*PatternFlowArpProtocolTypeCounter) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{704} } -func (x *Version) GetApiSpecVersion() string { - if x != nil && x.ApiSpecVersion != nil { - return *x.ApiSpecVersion +func (x *PatternFlowArpProtocolTypeCounter) GetStart() uint32 { + if x != nil && x.Start != nil { + return *x.Start } - return "" + return 0 } -func (x *Version) GetSdkVersion() string { - if x != nil && x.SdkVersion != nil { - return *x.SdkVersion +func (x *PatternFlowArpProtocolTypeCounter) GetStep() uint32 { + if x != nil && x.Step != nil { + return *x.Step } - return "" + return 0 } -func (x *Version) GetAppVersion() string { - if x != nil && x.AppVersion != nil { - return *x.AppVersion +func (x *PatternFlowArpProtocolTypeCounter) GetCount() uint32 { + if x != nil && x.Count != nil { + return *x.Count } - return "" + return 0 } -// The request has succeeded with no application content but the server -// may return a list of detailed warnings. -type Success struct { +// Metric tag can be used to enable tracking portion of or all bits in a corresponding +// header field for metrics per each applicable value. These would appear as tagged +// metrics in corresponding flow metrics. +type PatternFlowArpProtocolTypeMetricTag struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Warning *Warning `protobuf:"bytes,1,opt,name=warning,proto3" json:"warning,omitempty"` + // Name used to identify the metrics associated with the values applicable for configured + // offset and length inside corresponding header field + // required = true + Name *string `protobuf:"bytes,1,opt,name=name,proto3,oneof" json:"name,omitempty"` + // Offset in bits relative to start of corresponding header field + // default = 0 + Offset *uint32 `protobuf:"varint,2,opt,name=offset,proto3,oneof" json:"offset,omitempty"` + // Number of bits to track for metrics starting from configured offset of corresponding + // header field + // default = 16 + Length *uint32 `protobuf:"varint,3,opt,name=length,proto3,oneof" json:"length,omitempty"` } -func (x *Success) Reset() { - *x = Success{} +func (x *PatternFlowArpProtocolTypeMetricTag) Reset() { + *x = PatternFlowArpProtocolTypeMetricTag{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[747] + mi := &file_otg_proto_msgTypes[705] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *Success) String() string { +func (x *PatternFlowArpProtocolTypeMetricTag) String() string { return protoimpl.X.MessageStringOf(x) } -func (*Success) ProtoMessage() {} +func (*PatternFlowArpProtocolTypeMetricTag) ProtoMessage() {} -func (x *Success) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[747] +func (x *PatternFlowArpProtocolTypeMetricTag) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[705] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -80461,44 +79279,74 @@ func (x *Success) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use Success.ProtoReflect.Descriptor instead. -func (*Success) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{747} +// Deprecated: Use PatternFlowArpProtocolTypeMetricTag.ProtoReflect.Descriptor instead. +func (*PatternFlowArpProtocolTypeMetricTag) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{705} } -func (x *Success) GetWarning() *Warning { - if x != nil { - return x.Warning +func (x *PatternFlowArpProtocolTypeMetricTag) GetName() string { + if x != nil && x.Name != nil { + return *x.Name } - return nil + return "" } -// The request did not succeed and server has responded with error details. -type Failure struct { +func (x *PatternFlowArpProtocolTypeMetricTag) GetOffset() uint32 { + if x != nil && x.Offset != nil { + return *x.Offset + } + return 0 +} + +func (x *PatternFlowArpProtocolTypeMetricTag) GetLength() uint32 { + if x != nil && x.Length != nil { + return *x.Length + } + return 0 +} + +// The internetwork protocol for which the ARP request is intended +type PatternFlowArpProtocolType struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Error *Error `protobuf:"bytes,1,opt,name=error,proto3" json:"error,omitempty"` + // Description missing in models + // default = Choice.Enum.value + Choice *PatternFlowArpProtocolType_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.PatternFlowArpProtocolType_Choice_Enum,oneof" json:"choice,omitempty"` + // Description missing in models + // default = 2048 + Value *uint32 `protobuf:"varint,2,opt,name=value,proto3,oneof" json:"value,omitempty"` + // Description missing in models + // default = [2048] + Values []uint32 `protobuf:"varint,3,rep,packed,name=values,proto3" json:"values,omitempty"` + // Description missing in models + Increment *PatternFlowArpProtocolTypeCounter `protobuf:"bytes,5,opt,name=increment,proto3" json:"increment,omitempty"` + // Description missing in models + Decrement *PatternFlowArpProtocolTypeCounter `protobuf:"bytes,6,opt,name=decrement,proto3" json:"decrement,omitempty"` + // One or more metric tags can be used to enable tracking portion of or all bits in + // a corresponding header field for metrics per each applicable value. These would appear + // as tagged metrics in corresponding flow metrics. + MetricTags []*PatternFlowArpProtocolTypeMetricTag `protobuf:"bytes,7,rep,name=metric_tags,json=metricTags,proto3" json:"metric_tags,omitempty"` } -func (x *Failure) Reset() { - *x = Failure{} +func (x *PatternFlowArpProtocolType) Reset() { + *x = PatternFlowArpProtocolType{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[748] + mi := &file_otg_proto_msgTypes[706] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *Failure) String() string { +func (x *PatternFlowArpProtocolType) String() string { return protoimpl.X.MessageStringOf(x) } -func (*Failure) ProtoMessage() {} +func (*PatternFlowArpProtocolType) ProtoMessage() {} -func (x *Failure) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[748] +func (x *PatternFlowArpProtocolType) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[706] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -80509,90 +79357,87 @@ func (x *Failure) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use Failure.ProtoReflect.Descriptor instead. -func (*Failure) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{748} +// Deprecated: Use PatternFlowArpProtocolType.ProtoReflect.Descriptor instead. +func (*PatternFlowArpProtocolType) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{706} } -func (x *Failure) GetError() *Error { - if x != nil { - return x.Error +func (x *PatternFlowArpProtocolType) GetChoice() PatternFlowArpProtocolType_Choice_Enum { + if x != nil && x.Choice != nil { + return *x.Choice } - return nil -} - -type SetConfigRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Config *Config `protobuf:"bytes,1,opt,name=config,proto3" json:"config,omitempty"` + return PatternFlowArpProtocolType_Choice_unspecified } -func (x *SetConfigRequest) Reset() { - *x = SetConfigRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[749] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) +func (x *PatternFlowArpProtocolType) GetValue() uint32 { + if x != nil && x.Value != nil { + return *x.Value } + return 0 } -func (x *SetConfigRequest) String() string { - return protoimpl.X.MessageStringOf(x) +func (x *PatternFlowArpProtocolType) GetValues() []uint32 { + if x != nil { + return x.Values + } + return nil } -func (*SetConfigRequest) ProtoMessage() {} - -func (x *SetConfigRequest) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[749] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms +func (x *PatternFlowArpProtocolType) GetIncrement() *PatternFlowArpProtocolTypeCounter { + if x != nil { + return x.Increment } - return mi.MessageOf(x) + return nil } -// Deprecated: Use SetConfigRequest.ProtoReflect.Descriptor instead. -func (*SetConfigRequest) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{749} +func (x *PatternFlowArpProtocolType) GetDecrement() *PatternFlowArpProtocolTypeCounter { + if x != nil { + return x.Decrement + } + return nil } -func (x *SetConfigRequest) GetConfig() *Config { +func (x *PatternFlowArpProtocolType) GetMetricTags() []*PatternFlowArpProtocolTypeMetricTag { if x != nil { - return x.Config + return x.MetricTags } return nil } -type UpdateConfigRequest struct { +// integer counter pattern +type PatternFlowArpHardwareLengthCounter struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - ConfigUpdate *ConfigUpdate `protobuf:"bytes,1,opt,name=config_update,json=configUpdate,proto3" json:"config_update,omitempty"` + // Description missing in models + // default = 6 + Start *uint32 `protobuf:"varint,1,opt,name=start,proto3,oneof" json:"start,omitempty"` + // Description missing in models + // default = 1 + Step *uint32 `protobuf:"varint,2,opt,name=step,proto3,oneof" json:"step,omitempty"` + // Description missing in models + // default = 1 + Count *uint32 `protobuf:"varint,3,opt,name=count,proto3,oneof" json:"count,omitempty"` } -func (x *UpdateConfigRequest) Reset() { - *x = UpdateConfigRequest{} +func (x *PatternFlowArpHardwareLengthCounter) Reset() { + *x = PatternFlowArpHardwareLengthCounter{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[750] + mi := &file_otg_proto_msgTypes[707] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *UpdateConfigRequest) String() string { +func (x *PatternFlowArpHardwareLengthCounter) String() string { return protoimpl.X.MessageStringOf(x) } -func (*UpdateConfigRequest) ProtoMessage() {} +func (*PatternFlowArpHardwareLengthCounter) ProtoMessage() {} -func (x *UpdateConfigRequest) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[750] +func (x *PatternFlowArpHardwareLengthCounter) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[707] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -80603,43 +79448,70 @@ func (x *UpdateConfigRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use UpdateConfigRequest.ProtoReflect.Descriptor instead. -func (*UpdateConfigRequest) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{750} +// Deprecated: Use PatternFlowArpHardwareLengthCounter.ProtoReflect.Descriptor instead. +func (*PatternFlowArpHardwareLengthCounter) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{707} } -func (x *UpdateConfigRequest) GetConfigUpdate() *ConfigUpdate { - if x != nil { - return x.ConfigUpdate +func (x *PatternFlowArpHardwareLengthCounter) GetStart() uint32 { + if x != nil && x.Start != nil { + return *x.Start } - return nil + return 0 } -type SetConfigResponse struct { +func (x *PatternFlowArpHardwareLengthCounter) GetStep() uint32 { + if x != nil && x.Step != nil { + return *x.Step + } + return 0 +} + +func (x *PatternFlowArpHardwareLengthCounter) GetCount() uint32 { + if x != nil && x.Count != nil { + return *x.Count + } + return 0 +} + +// Metric tag can be used to enable tracking portion of or all bits in a corresponding +// header field for metrics per each applicable value. These would appear as tagged +// metrics in corresponding flow metrics. +type PatternFlowArpHardwareLengthMetricTag struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Warning *Warning `protobuf:"bytes,1,opt,name=warning,proto3" json:"warning,omitempty"` + // Name used to identify the metrics associated with the values applicable for configured + // offset and length inside corresponding header field + // required = true + Name *string `protobuf:"bytes,1,opt,name=name,proto3,oneof" json:"name,omitempty"` + // Offset in bits relative to start of corresponding header field + // default = 0 + Offset *uint32 `protobuf:"varint,2,opt,name=offset,proto3,oneof" json:"offset,omitempty"` + // Number of bits to track for metrics starting from configured offset of corresponding + // header field + // default = 8 + Length *uint32 `protobuf:"varint,3,opt,name=length,proto3,oneof" json:"length,omitempty"` } -func (x *SetConfigResponse) Reset() { - *x = SetConfigResponse{} +func (x *PatternFlowArpHardwareLengthMetricTag) Reset() { + *x = PatternFlowArpHardwareLengthMetricTag{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[751] + mi := &file_otg_proto_msgTypes[708] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *SetConfigResponse) String() string { +func (x *PatternFlowArpHardwareLengthMetricTag) String() string { return protoimpl.X.MessageStringOf(x) } -func (*SetConfigResponse) ProtoMessage() {} +func (*PatternFlowArpHardwareLengthMetricTag) ProtoMessage() {} -func (x *SetConfigResponse) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[751] +func (x *PatternFlowArpHardwareLengthMetricTag) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[708] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -80650,43 +79522,74 @@ func (x *SetConfigResponse) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use SetConfigResponse.ProtoReflect.Descriptor instead. -func (*SetConfigResponse) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{751} +// Deprecated: Use PatternFlowArpHardwareLengthMetricTag.ProtoReflect.Descriptor instead. +func (*PatternFlowArpHardwareLengthMetricTag) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{708} } -func (x *SetConfigResponse) GetWarning() *Warning { - if x != nil { - return x.Warning +func (x *PatternFlowArpHardwareLengthMetricTag) GetName() string { + if x != nil && x.Name != nil { + return *x.Name } - return nil + return "" } -type GetConfigResponse struct { +func (x *PatternFlowArpHardwareLengthMetricTag) GetOffset() uint32 { + if x != nil && x.Offset != nil { + return *x.Offset + } + return 0 +} + +func (x *PatternFlowArpHardwareLengthMetricTag) GetLength() uint32 { + if x != nil && x.Length != nil { + return *x.Length + } + return 0 +} + +// Length (in octets) of a hardware address +type PatternFlowArpHardwareLength struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Config *Config `protobuf:"bytes,1,opt,name=config,proto3" json:"config,omitempty"` + // Description missing in models + // default = Choice.Enum.value + Choice *PatternFlowArpHardwareLength_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.PatternFlowArpHardwareLength_Choice_Enum,oneof" json:"choice,omitempty"` + // Description missing in models + // default = 6 + Value *uint32 `protobuf:"varint,2,opt,name=value,proto3,oneof" json:"value,omitempty"` + // Description missing in models + // default = [6] + Values []uint32 `protobuf:"varint,3,rep,packed,name=values,proto3" json:"values,omitempty"` + // Description missing in models + Increment *PatternFlowArpHardwareLengthCounter `protobuf:"bytes,5,opt,name=increment,proto3" json:"increment,omitempty"` + // Description missing in models + Decrement *PatternFlowArpHardwareLengthCounter `protobuf:"bytes,6,opt,name=decrement,proto3" json:"decrement,omitempty"` + // One or more metric tags can be used to enable tracking portion of or all bits in + // a corresponding header field for metrics per each applicable value. These would appear + // as tagged metrics in corresponding flow metrics. + MetricTags []*PatternFlowArpHardwareLengthMetricTag `protobuf:"bytes,7,rep,name=metric_tags,json=metricTags,proto3" json:"metric_tags,omitempty"` } -func (x *GetConfigResponse) Reset() { - *x = GetConfigResponse{} +func (x *PatternFlowArpHardwareLength) Reset() { + *x = PatternFlowArpHardwareLength{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[752] + mi := &file_otg_proto_msgTypes[709] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *GetConfigResponse) String() string { +func (x *PatternFlowArpHardwareLength) String() string { return protoimpl.X.MessageStringOf(x) } -func (*GetConfigResponse) ProtoMessage() {} +func (*PatternFlowArpHardwareLength) ProtoMessage() {} -func (x *GetConfigResponse) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[752] +func (x *PatternFlowArpHardwareLength) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[709] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -80697,90 +79600,87 @@ func (x *GetConfigResponse) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use GetConfigResponse.ProtoReflect.Descriptor instead. -func (*GetConfigResponse) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{752} +// Deprecated: Use PatternFlowArpHardwareLength.ProtoReflect.Descriptor instead. +func (*PatternFlowArpHardwareLength) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{709} } -func (x *GetConfigResponse) GetConfig() *Config { - if x != nil { - return x.Config +func (x *PatternFlowArpHardwareLength) GetChoice() PatternFlowArpHardwareLength_Choice_Enum { + if x != nil && x.Choice != nil { + return *x.Choice } - return nil -} - -type UpdateConfigResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Warning *Warning `protobuf:"bytes,1,opt,name=warning,proto3" json:"warning,omitempty"` + return PatternFlowArpHardwareLength_Choice_unspecified } -func (x *UpdateConfigResponse) Reset() { - *x = UpdateConfigResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[753] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) +func (x *PatternFlowArpHardwareLength) GetValue() uint32 { + if x != nil && x.Value != nil { + return *x.Value } + return 0 } -func (x *UpdateConfigResponse) String() string { - return protoimpl.X.MessageStringOf(x) +func (x *PatternFlowArpHardwareLength) GetValues() []uint32 { + if x != nil { + return x.Values + } + return nil } -func (*UpdateConfigResponse) ProtoMessage() {} - -func (x *UpdateConfigResponse) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[753] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms +func (x *PatternFlowArpHardwareLength) GetIncrement() *PatternFlowArpHardwareLengthCounter { + if x != nil { + return x.Increment } - return mi.MessageOf(x) + return nil } -// Deprecated: Use UpdateConfigResponse.ProtoReflect.Descriptor instead. -func (*UpdateConfigResponse) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{753} +func (x *PatternFlowArpHardwareLength) GetDecrement() *PatternFlowArpHardwareLengthCounter { + if x != nil { + return x.Decrement + } + return nil } -func (x *UpdateConfigResponse) GetWarning() *Warning { +func (x *PatternFlowArpHardwareLength) GetMetricTags() []*PatternFlowArpHardwareLengthMetricTag { if x != nil { - return x.Warning + return x.MetricTags } return nil } -type SetControlStateRequest struct { +// integer counter pattern +type PatternFlowArpProtocolLengthCounter struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - ControlState *ControlState `protobuf:"bytes,1,opt,name=control_state,json=controlState,proto3" json:"control_state,omitempty"` + // Description missing in models + // default = 4 + Start *uint32 `protobuf:"varint,1,opt,name=start,proto3,oneof" json:"start,omitempty"` + // Description missing in models + // default = 1 + Step *uint32 `protobuf:"varint,2,opt,name=step,proto3,oneof" json:"step,omitempty"` + // Description missing in models + // default = 1 + Count *uint32 `protobuf:"varint,3,opt,name=count,proto3,oneof" json:"count,omitempty"` } -func (x *SetControlStateRequest) Reset() { - *x = SetControlStateRequest{} +func (x *PatternFlowArpProtocolLengthCounter) Reset() { + *x = PatternFlowArpProtocolLengthCounter{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[754] + mi := &file_otg_proto_msgTypes[710] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *SetControlStateRequest) String() string { +func (x *PatternFlowArpProtocolLengthCounter) String() string { return protoimpl.X.MessageStringOf(x) } -func (*SetControlStateRequest) ProtoMessage() {} +func (*PatternFlowArpProtocolLengthCounter) ProtoMessage() {} -func (x *SetControlStateRequest) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[754] +func (x *PatternFlowArpProtocolLengthCounter) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[710] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -80791,43 +79691,70 @@ func (x *SetControlStateRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use SetControlStateRequest.ProtoReflect.Descriptor instead. -func (*SetControlStateRequest) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{754} +// Deprecated: Use PatternFlowArpProtocolLengthCounter.ProtoReflect.Descriptor instead. +func (*PatternFlowArpProtocolLengthCounter) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{710} } -func (x *SetControlStateRequest) GetControlState() *ControlState { - if x != nil { - return x.ControlState +func (x *PatternFlowArpProtocolLengthCounter) GetStart() uint32 { + if x != nil && x.Start != nil { + return *x.Start } - return nil + return 0 } -type SetControlStateResponse struct { +func (x *PatternFlowArpProtocolLengthCounter) GetStep() uint32 { + if x != nil && x.Step != nil { + return *x.Step + } + return 0 +} + +func (x *PatternFlowArpProtocolLengthCounter) GetCount() uint32 { + if x != nil && x.Count != nil { + return *x.Count + } + return 0 +} + +// Metric tag can be used to enable tracking portion of or all bits in a corresponding +// header field for metrics per each applicable value. These would appear as tagged +// metrics in corresponding flow metrics. +type PatternFlowArpProtocolLengthMetricTag struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Warning *Warning `protobuf:"bytes,1,opt,name=warning,proto3" json:"warning,omitempty"` + // Name used to identify the metrics associated with the values applicable for configured + // offset and length inside corresponding header field + // required = true + Name *string `protobuf:"bytes,1,opt,name=name,proto3,oneof" json:"name,omitempty"` + // Offset in bits relative to start of corresponding header field + // default = 0 + Offset *uint32 `protobuf:"varint,2,opt,name=offset,proto3,oneof" json:"offset,omitempty"` + // Number of bits to track for metrics starting from configured offset of corresponding + // header field + // default = 8 + Length *uint32 `protobuf:"varint,3,opt,name=length,proto3,oneof" json:"length,omitempty"` } -func (x *SetControlStateResponse) Reset() { - *x = SetControlStateResponse{} +func (x *PatternFlowArpProtocolLengthMetricTag) Reset() { + *x = PatternFlowArpProtocolLengthMetricTag{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[755] + mi := &file_otg_proto_msgTypes[711] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *SetControlStateResponse) String() string { +func (x *PatternFlowArpProtocolLengthMetricTag) String() string { return protoimpl.X.MessageStringOf(x) } -func (*SetControlStateResponse) ProtoMessage() {} +func (*PatternFlowArpProtocolLengthMetricTag) ProtoMessage() {} -func (x *SetControlStateResponse) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[755] +func (x *PatternFlowArpProtocolLengthMetricTag) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[711] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -80838,43 +79765,74 @@ func (x *SetControlStateResponse) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use SetControlStateResponse.ProtoReflect.Descriptor instead. -func (*SetControlStateResponse) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{755} +// Deprecated: Use PatternFlowArpProtocolLengthMetricTag.ProtoReflect.Descriptor instead. +func (*PatternFlowArpProtocolLengthMetricTag) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{711} } -func (x *SetControlStateResponse) GetWarning() *Warning { - if x != nil { - return x.Warning +func (x *PatternFlowArpProtocolLengthMetricTag) GetName() string { + if x != nil && x.Name != nil { + return *x.Name } - return nil + return "" } -type SetControlActionRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields +func (x *PatternFlowArpProtocolLengthMetricTag) GetOffset() uint32 { + if x != nil && x.Offset != nil { + return *x.Offset + } + return 0 +} - ControlAction *ControlAction `protobuf:"bytes,1,opt,name=control_action,json=controlAction,proto3" json:"control_action,omitempty"` +func (x *PatternFlowArpProtocolLengthMetricTag) GetLength() uint32 { + if x != nil && x.Length != nil { + return *x.Length + } + return 0 } -func (x *SetControlActionRequest) Reset() { - *x = SetControlActionRequest{} +// Length (in octets) of internetwork addresses +type PatternFlowArpProtocolLength struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Description missing in models + // default = Choice.Enum.value + Choice *PatternFlowArpProtocolLength_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.PatternFlowArpProtocolLength_Choice_Enum,oneof" json:"choice,omitempty"` + // Description missing in models + // default = 4 + Value *uint32 `protobuf:"varint,2,opt,name=value,proto3,oneof" json:"value,omitempty"` + // Description missing in models + // default = [4] + Values []uint32 `protobuf:"varint,3,rep,packed,name=values,proto3" json:"values,omitempty"` + // Description missing in models + Increment *PatternFlowArpProtocolLengthCounter `protobuf:"bytes,5,opt,name=increment,proto3" json:"increment,omitempty"` + // Description missing in models + Decrement *PatternFlowArpProtocolLengthCounter `protobuf:"bytes,6,opt,name=decrement,proto3" json:"decrement,omitempty"` + // One or more metric tags can be used to enable tracking portion of or all bits in + // a corresponding header field for metrics per each applicable value. These would appear + // as tagged metrics in corresponding flow metrics. + MetricTags []*PatternFlowArpProtocolLengthMetricTag `protobuf:"bytes,7,rep,name=metric_tags,json=metricTags,proto3" json:"metric_tags,omitempty"` +} + +func (x *PatternFlowArpProtocolLength) Reset() { + *x = PatternFlowArpProtocolLength{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[756] + mi := &file_otg_proto_msgTypes[712] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *SetControlActionRequest) String() string { +func (x *PatternFlowArpProtocolLength) String() string { return protoimpl.X.MessageStringOf(x) } -func (*SetControlActionRequest) ProtoMessage() {} +func (*PatternFlowArpProtocolLength) ProtoMessage() {} -func (x *SetControlActionRequest) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[756] +func (x *PatternFlowArpProtocolLength) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[712] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -80885,90 +79843,87 @@ func (x *SetControlActionRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use SetControlActionRequest.ProtoReflect.Descriptor instead. -func (*SetControlActionRequest) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{756} +// Deprecated: Use PatternFlowArpProtocolLength.ProtoReflect.Descriptor instead. +func (*PatternFlowArpProtocolLength) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{712} } -func (x *SetControlActionRequest) GetControlAction() *ControlAction { - if x != nil { - return x.ControlAction +func (x *PatternFlowArpProtocolLength) GetChoice() PatternFlowArpProtocolLength_Choice_Enum { + if x != nil && x.Choice != nil { + return *x.Choice } - return nil -} - -type SetControlActionResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - ControlActionResponse *ControlActionResponse `protobuf:"bytes,1,opt,name=control_action_response,json=controlActionResponse,proto3" json:"control_action_response,omitempty"` + return PatternFlowArpProtocolLength_Choice_unspecified } -func (x *SetControlActionResponse) Reset() { - *x = SetControlActionResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[757] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) +func (x *PatternFlowArpProtocolLength) GetValue() uint32 { + if x != nil && x.Value != nil { + return *x.Value } + return 0 } -func (x *SetControlActionResponse) String() string { - return protoimpl.X.MessageStringOf(x) +func (x *PatternFlowArpProtocolLength) GetValues() []uint32 { + if x != nil { + return x.Values + } + return nil } -func (*SetControlActionResponse) ProtoMessage() {} - -func (x *SetControlActionResponse) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[757] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms +func (x *PatternFlowArpProtocolLength) GetIncrement() *PatternFlowArpProtocolLengthCounter { + if x != nil { + return x.Increment } - return mi.MessageOf(x) + return nil } -// Deprecated: Use SetControlActionResponse.ProtoReflect.Descriptor instead. -func (*SetControlActionResponse) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{757} +func (x *PatternFlowArpProtocolLength) GetDecrement() *PatternFlowArpProtocolLengthCounter { + if x != nil { + return x.Decrement + } + return nil } -func (x *SetControlActionResponse) GetControlActionResponse() *ControlActionResponse { +func (x *PatternFlowArpProtocolLength) GetMetricTags() []*PatternFlowArpProtocolLengthMetricTag { if x != nil { - return x.ControlActionResponse + return x.MetricTags } return nil } -type GetMetricsRequest struct { +// integer counter pattern +type PatternFlowArpOperationCounter struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - MetricsRequest *MetricsRequest `protobuf:"bytes,1,opt,name=metrics_request,json=metricsRequest,proto3" json:"metrics_request,omitempty"` + // Description missing in models + // default = 1 + Start *uint32 `protobuf:"varint,1,opt,name=start,proto3,oneof" json:"start,omitempty"` + // Description missing in models + // default = 1 + Step *uint32 `protobuf:"varint,2,opt,name=step,proto3,oneof" json:"step,omitempty"` + // Description missing in models + // default = 1 + Count *uint32 `protobuf:"varint,3,opt,name=count,proto3,oneof" json:"count,omitempty"` } -func (x *GetMetricsRequest) Reset() { - *x = GetMetricsRequest{} +func (x *PatternFlowArpOperationCounter) Reset() { + *x = PatternFlowArpOperationCounter{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[758] + mi := &file_otg_proto_msgTypes[713] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *GetMetricsRequest) String() string { +func (x *PatternFlowArpOperationCounter) String() string { return protoimpl.X.MessageStringOf(x) } -func (*GetMetricsRequest) ProtoMessage() {} +func (*PatternFlowArpOperationCounter) ProtoMessage() {} -func (x *GetMetricsRequest) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[758] +func (x *PatternFlowArpOperationCounter) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[713] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -80979,43 +79934,70 @@ func (x *GetMetricsRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use GetMetricsRequest.ProtoReflect.Descriptor instead. -func (*GetMetricsRequest) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{758} +// Deprecated: Use PatternFlowArpOperationCounter.ProtoReflect.Descriptor instead. +func (*PatternFlowArpOperationCounter) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{713} } -func (x *GetMetricsRequest) GetMetricsRequest() *MetricsRequest { - if x != nil { - return x.MetricsRequest +func (x *PatternFlowArpOperationCounter) GetStart() uint32 { + if x != nil && x.Start != nil { + return *x.Start } - return nil + return 0 } -type GetMetricsResponse struct { +func (x *PatternFlowArpOperationCounter) GetStep() uint32 { + if x != nil && x.Step != nil { + return *x.Step + } + return 0 +} + +func (x *PatternFlowArpOperationCounter) GetCount() uint32 { + if x != nil && x.Count != nil { + return *x.Count + } + return 0 +} + +// Metric tag can be used to enable tracking portion of or all bits in a corresponding +// header field for metrics per each applicable value. These would appear as tagged +// metrics in corresponding flow metrics. +type PatternFlowArpOperationMetricTag struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - MetricsResponse *MetricsResponse `protobuf:"bytes,1,opt,name=metrics_response,json=metricsResponse,proto3" json:"metrics_response,omitempty"` + // Name used to identify the metrics associated with the values applicable for configured + // offset and length inside corresponding header field + // required = true + Name *string `protobuf:"bytes,1,opt,name=name,proto3,oneof" json:"name,omitempty"` + // Offset in bits relative to start of corresponding header field + // default = 0 + Offset *uint32 `protobuf:"varint,2,opt,name=offset,proto3,oneof" json:"offset,omitempty"` + // Number of bits to track for metrics starting from configured offset of corresponding + // header field + // default = 16 + Length *uint32 `protobuf:"varint,3,opt,name=length,proto3,oneof" json:"length,omitempty"` } -func (x *GetMetricsResponse) Reset() { - *x = GetMetricsResponse{} +func (x *PatternFlowArpOperationMetricTag) Reset() { + *x = PatternFlowArpOperationMetricTag{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[759] + mi := &file_otg_proto_msgTypes[714] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *GetMetricsResponse) String() string { +func (x *PatternFlowArpOperationMetricTag) String() string { return protoimpl.X.MessageStringOf(x) } -func (*GetMetricsResponse) ProtoMessage() {} +func (*PatternFlowArpOperationMetricTag) ProtoMessage() {} -func (x *GetMetricsResponse) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[759] +func (x *PatternFlowArpOperationMetricTag) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[714] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -81026,43 +80008,74 @@ func (x *GetMetricsResponse) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use GetMetricsResponse.ProtoReflect.Descriptor instead. -func (*GetMetricsResponse) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{759} +// Deprecated: Use PatternFlowArpOperationMetricTag.ProtoReflect.Descriptor instead. +func (*PatternFlowArpOperationMetricTag) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{714} } -func (x *GetMetricsResponse) GetMetricsResponse() *MetricsResponse { - if x != nil { - return x.MetricsResponse +func (x *PatternFlowArpOperationMetricTag) GetName() string { + if x != nil && x.Name != nil { + return *x.Name } - return nil + return "" } -type GetStatesRequest struct { +func (x *PatternFlowArpOperationMetricTag) GetOffset() uint32 { + if x != nil && x.Offset != nil { + return *x.Offset + } + return 0 +} + +func (x *PatternFlowArpOperationMetricTag) GetLength() uint32 { + if x != nil && x.Length != nil { + return *x.Length + } + return 0 +} + +// The operation that the sender is performing +type PatternFlowArpOperation struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - StatesRequest *StatesRequest `protobuf:"bytes,1,opt,name=states_request,json=statesRequest,proto3" json:"states_request,omitempty"` + // Description missing in models + // default = Choice.Enum.value + Choice *PatternFlowArpOperation_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.PatternFlowArpOperation_Choice_Enum,oneof" json:"choice,omitempty"` + // Description missing in models + // default = 1 + Value *uint32 `protobuf:"varint,2,opt,name=value,proto3,oneof" json:"value,omitempty"` + // Description missing in models + // default = [1] + Values []uint32 `protobuf:"varint,3,rep,packed,name=values,proto3" json:"values,omitempty"` + // Description missing in models + Increment *PatternFlowArpOperationCounter `protobuf:"bytes,5,opt,name=increment,proto3" json:"increment,omitempty"` + // Description missing in models + Decrement *PatternFlowArpOperationCounter `protobuf:"bytes,6,opt,name=decrement,proto3" json:"decrement,omitempty"` + // One or more metric tags can be used to enable tracking portion of or all bits in + // a corresponding header field for metrics per each applicable value. These would appear + // as tagged metrics in corresponding flow metrics. + MetricTags []*PatternFlowArpOperationMetricTag `protobuf:"bytes,7,rep,name=metric_tags,json=metricTags,proto3" json:"metric_tags,omitempty"` } -func (x *GetStatesRequest) Reset() { - *x = GetStatesRequest{} +func (x *PatternFlowArpOperation) Reset() { + *x = PatternFlowArpOperation{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[760] + mi := &file_otg_proto_msgTypes[715] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *GetStatesRequest) String() string { +func (x *PatternFlowArpOperation) String() string { return protoimpl.X.MessageStringOf(x) } -func (*GetStatesRequest) ProtoMessage() {} +func (*PatternFlowArpOperation) ProtoMessage() {} -func (x *GetStatesRequest) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[760] +func (x *PatternFlowArpOperation) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[715] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -81073,90 +80086,87 @@ func (x *GetStatesRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use GetStatesRequest.ProtoReflect.Descriptor instead. -func (*GetStatesRequest) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{760} +// Deprecated: Use PatternFlowArpOperation.ProtoReflect.Descriptor instead. +func (*PatternFlowArpOperation) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{715} } -func (x *GetStatesRequest) GetStatesRequest() *StatesRequest { - if x != nil { - return x.StatesRequest +func (x *PatternFlowArpOperation) GetChoice() PatternFlowArpOperation_Choice_Enum { + if x != nil && x.Choice != nil { + return *x.Choice } - return nil -} - -type GetStatesResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - StatesResponse *StatesResponse `protobuf:"bytes,1,opt,name=states_response,json=statesResponse,proto3" json:"states_response,omitempty"` + return PatternFlowArpOperation_Choice_unspecified } -func (x *GetStatesResponse) Reset() { - *x = GetStatesResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[761] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) +func (x *PatternFlowArpOperation) GetValue() uint32 { + if x != nil && x.Value != nil { + return *x.Value } + return 0 } -func (x *GetStatesResponse) String() string { - return protoimpl.X.MessageStringOf(x) +func (x *PatternFlowArpOperation) GetValues() []uint32 { + if x != nil { + return x.Values + } + return nil } -func (*GetStatesResponse) ProtoMessage() {} - -func (x *GetStatesResponse) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[761] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms +func (x *PatternFlowArpOperation) GetIncrement() *PatternFlowArpOperationCounter { + if x != nil { + return x.Increment } - return mi.MessageOf(x) + return nil } -// Deprecated: Use GetStatesResponse.ProtoReflect.Descriptor instead. -func (*GetStatesResponse) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{761} +func (x *PatternFlowArpOperation) GetDecrement() *PatternFlowArpOperationCounter { + if x != nil { + return x.Decrement + } + return nil } -func (x *GetStatesResponse) GetStatesResponse() *StatesResponse { +func (x *PatternFlowArpOperation) GetMetricTags() []*PatternFlowArpOperationMetricTag { if x != nil { - return x.StatesResponse + return x.MetricTags } return nil } -type GetCaptureRequest struct { +// mac counter pattern +type PatternFlowArpSenderHardwareAddrCounter struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - CaptureRequest *CaptureRequest `protobuf:"bytes,1,opt,name=capture_request,json=captureRequest,proto3" json:"capture_request,omitempty"` + // Description missing in models + // default = 00:00:00:00:00:00 + Start *string `protobuf:"bytes,1,opt,name=start,proto3,oneof" json:"start,omitempty"` + // Description missing in models + // default = 00:00:00:00:00:01 + Step *string `protobuf:"bytes,2,opt,name=step,proto3,oneof" json:"step,omitempty"` + // Description missing in models + // default = 1 + Count *uint32 `protobuf:"varint,3,opt,name=count,proto3,oneof" json:"count,omitempty"` } -func (x *GetCaptureRequest) Reset() { - *x = GetCaptureRequest{} +func (x *PatternFlowArpSenderHardwareAddrCounter) Reset() { + *x = PatternFlowArpSenderHardwareAddrCounter{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[762] + mi := &file_otg_proto_msgTypes[716] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *GetCaptureRequest) String() string { +func (x *PatternFlowArpSenderHardwareAddrCounter) String() string { return protoimpl.X.MessageStringOf(x) } -func (*GetCaptureRequest) ProtoMessage() {} +func (*PatternFlowArpSenderHardwareAddrCounter) ProtoMessage() {} -func (x *GetCaptureRequest) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[762] +func (x *PatternFlowArpSenderHardwareAddrCounter) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[716] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -81167,43 +80177,70 @@ func (x *GetCaptureRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use GetCaptureRequest.ProtoReflect.Descriptor instead. -func (*GetCaptureRequest) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{762} +// Deprecated: Use PatternFlowArpSenderHardwareAddrCounter.ProtoReflect.Descriptor instead. +func (*PatternFlowArpSenderHardwareAddrCounter) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{716} } -func (x *GetCaptureRequest) GetCaptureRequest() *CaptureRequest { - if x != nil { - return x.CaptureRequest +func (x *PatternFlowArpSenderHardwareAddrCounter) GetStart() string { + if x != nil && x.Start != nil { + return *x.Start } - return nil + return "" } -type GetCaptureResponse struct { +func (x *PatternFlowArpSenderHardwareAddrCounter) GetStep() string { + if x != nil && x.Step != nil { + return *x.Step + } + return "" +} + +func (x *PatternFlowArpSenderHardwareAddrCounter) GetCount() uint32 { + if x != nil && x.Count != nil { + return *x.Count + } + return 0 +} + +// Metric tag can be used to enable tracking portion of or all bits in a corresponding +// header field for metrics per each applicable value. These would appear as tagged +// metrics in corresponding flow metrics. +type PatternFlowArpSenderHardwareAddrMetricTag struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - ResponseBytes []byte `protobuf:"bytes,1,opt,name=response_bytes,json=responseBytes,proto3" json:"response_bytes,omitempty"` + // Name used to identify the metrics associated with the values applicable for configured + // offset and length inside corresponding header field + // required = true + Name *string `protobuf:"bytes,1,opt,name=name,proto3,oneof" json:"name,omitempty"` + // Offset in bits relative to start of corresponding header field + // default = 0 + Offset *uint32 `protobuf:"varint,2,opt,name=offset,proto3,oneof" json:"offset,omitempty"` + // Number of bits to track for metrics starting from configured offset of corresponding + // header field + // default = 48 + Length *uint32 `protobuf:"varint,3,opt,name=length,proto3,oneof" json:"length,omitempty"` } -func (x *GetCaptureResponse) Reset() { - *x = GetCaptureResponse{} +func (x *PatternFlowArpSenderHardwareAddrMetricTag) Reset() { + *x = PatternFlowArpSenderHardwareAddrMetricTag{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[763] + mi := &file_otg_proto_msgTypes[717] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *GetCaptureResponse) String() string { +func (x *PatternFlowArpSenderHardwareAddrMetricTag) String() string { return protoimpl.X.MessageStringOf(x) } -func (*GetCaptureResponse) ProtoMessage() {} +func (*PatternFlowArpSenderHardwareAddrMetricTag) ProtoMessage() {} -func (x *GetCaptureResponse) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[763] +func (x *PatternFlowArpSenderHardwareAddrMetricTag) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[717] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -81214,43 +80251,74 @@ func (x *GetCaptureResponse) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use GetCaptureResponse.ProtoReflect.Descriptor instead. -func (*GetCaptureResponse) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{763} +// Deprecated: Use PatternFlowArpSenderHardwareAddrMetricTag.ProtoReflect.Descriptor instead. +func (*PatternFlowArpSenderHardwareAddrMetricTag) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{717} } -func (x *GetCaptureResponse) GetResponseBytes() []byte { - if x != nil { - return x.ResponseBytes +func (x *PatternFlowArpSenderHardwareAddrMetricTag) GetName() string { + if x != nil && x.Name != nil { + return *x.Name } - return nil + return "" } -type GetVersionResponse struct { +func (x *PatternFlowArpSenderHardwareAddrMetricTag) GetOffset() uint32 { + if x != nil && x.Offset != nil { + return *x.Offset + } + return 0 +} + +func (x *PatternFlowArpSenderHardwareAddrMetricTag) GetLength() uint32 { + if x != nil && x.Length != nil { + return *x.Length + } + return 0 +} + +// Media address of the sender +type PatternFlowArpSenderHardwareAddr struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Version *Version `protobuf:"bytes,1,opt,name=version,proto3" json:"version,omitempty"` + // Description missing in models + // default = Choice.Enum.value + Choice *PatternFlowArpSenderHardwareAddr_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.PatternFlowArpSenderHardwareAddr_Choice_Enum,oneof" json:"choice,omitempty"` + // Description missing in models + // default = 00:00:00:00:00:00 + Value *string `protobuf:"bytes,2,opt,name=value,proto3,oneof" json:"value,omitempty"` + // Description missing in models + // default = ['00:00:00:00:00:00'] + Values []string `protobuf:"bytes,3,rep,name=values,proto3" json:"values,omitempty"` + // Description missing in models + Increment *PatternFlowArpSenderHardwareAddrCounter `protobuf:"bytes,5,opt,name=increment,proto3" json:"increment,omitempty"` + // Description missing in models + Decrement *PatternFlowArpSenderHardwareAddrCounter `protobuf:"bytes,6,opt,name=decrement,proto3" json:"decrement,omitempty"` + // One or more metric tags can be used to enable tracking portion of or all bits in + // a corresponding header field for metrics per each applicable value. These would appear + // as tagged metrics in corresponding flow metrics. + MetricTags []*PatternFlowArpSenderHardwareAddrMetricTag `protobuf:"bytes,7,rep,name=metric_tags,json=metricTags,proto3" json:"metric_tags,omitempty"` } -func (x *GetVersionResponse) Reset() { - *x = GetVersionResponse{} +func (x *PatternFlowArpSenderHardwareAddr) Reset() { + *x = PatternFlowArpSenderHardwareAddr{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[764] + mi := &file_otg_proto_msgTypes[718] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *GetVersionResponse) String() string { +func (x *PatternFlowArpSenderHardwareAddr) String() string { return protoimpl.X.MessageStringOf(x) } -func (*GetVersionResponse) ProtoMessage() {} +func (*PatternFlowArpSenderHardwareAddr) ProtoMessage() {} -func (x *GetVersionResponse) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[764] +func (x *PatternFlowArpSenderHardwareAddr) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[718] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -81261,79 +80329,87 @@ func (x *GetVersionResponse) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use GetVersionResponse.ProtoReflect.Descriptor instead. -func (*GetVersionResponse) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{764} +// Deprecated: Use PatternFlowArpSenderHardwareAddr.ProtoReflect.Descriptor instead. +func (*PatternFlowArpSenderHardwareAddr) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{718} } -func (x *GetVersionResponse) GetVersion() *Version { - if x != nil { - return x.Version +func (x *PatternFlowArpSenderHardwareAddr) GetChoice() PatternFlowArpSenderHardwareAddr_Choice_Enum { + if x != nil && x.Choice != nil { + return *x.Choice } - return nil -} - -type LagProtocol_Choice struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields + return PatternFlowArpSenderHardwareAddr_Choice_unspecified } -func (x *LagProtocol_Choice) Reset() { - *x = LagProtocol_Choice{} - if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[765] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) +func (x *PatternFlowArpSenderHardwareAddr) GetValue() string { + if x != nil && x.Value != nil { + return *x.Value } + return "" } -func (x *LagProtocol_Choice) String() string { - return protoimpl.X.MessageStringOf(x) +func (x *PatternFlowArpSenderHardwareAddr) GetValues() []string { + if x != nil { + return x.Values + } + return nil } -func (*LagProtocol_Choice) ProtoMessage() {} +func (x *PatternFlowArpSenderHardwareAddr) GetIncrement() *PatternFlowArpSenderHardwareAddrCounter { + if x != nil { + return x.Increment + } + return nil +} -func (x *LagProtocol_Choice) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[765] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms +func (x *PatternFlowArpSenderHardwareAddr) GetDecrement() *PatternFlowArpSenderHardwareAddrCounter { + if x != nil { + return x.Decrement } - return mi.MessageOf(x) + return nil } -// Deprecated: Use LagProtocol_Choice.ProtoReflect.Descriptor instead. -func (*LagProtocol_Choice) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{6, 0} +func (x *PatternFlowArpSenderHardwareAddr) GetMetricTags() []*PatternFlowArpSenderHardwareAddrMetricTag { + if x != nil { + return x.MetricTags + } + return nil } -type LagPortLacp_ActorActivity struct { +// ipv4 counter pattern +type PatternFlowArpSenderProtocolAddrCounter struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields + + // Description missing in models + // default = 0.0.0.0 + Start *string `protobuf:"bytes,1,opt,name=start,proto3,oneof" json:"start,omitempty"` + // Description missing in models + // default = 0.0.0.1 + Step *string `protobuf:"bytes,2,opt,name=step,proto3,oneof" json:"step,omitempty"` + // Description missing in models + // default = 1 + Count *uint32 `protobuf:"varint,3,opt,name=count,proto3,oneof" json:"count,omitempty"` } -func (x *LagPortLacp_ActorActivity) Reset() { - *x = LagPortLacp_ActorActivity{} +func (x *PatternFlowArpSenderProtocolAddrCounter) Reset() { + *x = PatternFlowArpSenderProtocolAddrCounter{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[766] + mi := &file_otg_proto_msgTypes[719] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *LagPortLacp_ActorActivity) String() string { +func (x *PatternFlowArpSenderProtocolAddrCounter) String() string { return protoimpl.X.MessageStringOf(x) } -func (*LagPortLacp_ActorActivity) ProtoMessage() {} +func (*PatternFlowArpSenderProtocolAddrCounter) ProtoMessage() {} -func (x *LagPortLacp_ActorActivity) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[766] +func (x *PatternFlowArpSenderProtocolAddrCounter) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[719] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -81344,72 +80420,70 @@ func (x *LagPortLacp_ActorActivity) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use LagPortLacp_ActorActivity.ProtoReflect.Descriptor instead. -func (*LagPortLacp_ActorActivity) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{9, 0} -} - -type EthernetConnection_Choice struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields +// Deprecated: Use PatternFlowArpSenderProtocolAddrCounter.ProtoReflect.Descriptor instead. +func (*PatternFlowArpSenderProtocolAddrCounter) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{719} } -func (x *EthernetConnection_Choice) Reset() { - *x = EthernetConnection_Choice{} - if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[767] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) +func (x *PatternFlowArpSenderProtocolAddrCounter) GetStart() string { + if x != nil && x.Start != nil { + return *x.Start } + return "" } -func (x *EthernetConnection_Choice) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*EthernetConnection_Choice) ProtoMessage() {} - -func (x *EthernetConnection_Choice) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[767] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms +func (x *PatternFlowArpSenderProtocolAddrCounter) GetStep() string { + if x != nil && x.Step != nil { + return *x.Step } - return mi.MessageOf(x) + return "" } -// Deprecated: Use EthernetConnection_Choice.ProtoReflect.Descriptor instead. -func (*EthernetConnection_Choice) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{12, 0} +func (x *PatternFlowArpSenderProtocolAddrCounter) GetCount() uint32 { + if x != nil && x.Count != nil { + return *x.Count + } + return 0 } -type DeviceVlan_Tpid struct { +// Metric tag can be used to enable tracking portion of or all bits in a corresponding +// header field for metrics per each applicable value. These would appear as tagged +// metrics in corresponding flow metrics. +type PatternFlowArpSenderProtocolAddrMetricTag struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields + + // Name used to identify the metrics associated with the values applicable for configured + // offset and length inside corresponding header field + // required = true + Name *string `protobuf:"bytes,1,opt,name=name,proto3,oneof" json:"name,omitempty"` + // Offset in bits relative to start of corresponding header field + // default = 0 + Offset *uint32 `protobuf:"varint,2,opt,name=offset,proto3,oneof" json:"offset,omitempty"` + // Number of bits to track for metrics starting from configured offset of corresponding + // header field + // default = 32 + Length *uint32 `protobuf:"varint,3,opt,name=length,proto3,oneof" json:"length,omitempty"` } -func (x *DeviceVlan_Tpid) Reset() { - *x = DeviceVlan_Tpid{} +func (x *PatternFlowArpSenderProtocolAddrMetricTag) Reset() { + *x = PatternFlowArpSenderProtocolAddrMetricTag{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[768] + mi := &file_otg_proto_msgTypes[720] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *DeviceVlan_Tpid) String() string { +func (x *PatternFlowArpSenderProtocolAddrMetricTag) String() string { return protoimpl.X.MessageStringOf(x) } -func (*DeviceVlan_Tpid) ProtoMessage() {} +func (*PatternFlowArpSenderProtocolAddrMetricTag) ProtoMessage() {} -func (x *DeviceVlan_Tpid) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[768] +func (x *PatternFlowArpSenderProtocolAddrMetricTag) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[720] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -81420,34 +80494,74 @@ func (x *DeviceVlan_Tpid) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use DeviceVlan_Tpid.ProtoReflect.Descriptor instead. -func (*DeviceVlan_Tpid) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{13, 0} +// Deprecated: Use PatternFlowArpSenderProtocolAddrMetricTag.ProtoReflect.Descriptor instead. +func (*PatternFlowArpSenderProtocolAddrMetricTag) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{720} } -type DeviceIpv4GatewayMAC_Choice struct { +func (x *PatternFlowArpSenderProtocolAddrMetricTag) GetName() string { + if x != nil && x.Name != nil { + return *x.Name + } + return "" +} + +func (x *PatternFlowArpSenderProtocolAddrMetricTag) GetOffset() uint32 { + if x != nil && x.Offset != nil { + return *x.Offset + } + return 0 +} + +func (x *PatternFlowArpSenderProtocolAddrMetricTag) GetLength() uint32 { + if x != nil && x.Length != nil { + return *x.Length + } + return 0 +} + +// Internetwork address of the sender +type PatternFlowArpSenderProtocolAddr struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields + + // Description missing in models + // default = Choice.Enum.value + Choice *PatternFlowArpSenderProtocolAddr_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.PatternFlowArpSenderProtocolAddr_Choice_Enum,oneof" json:"choice,omitempty"` + // Description missing in models + // default = 0.0.0.0 + Value *string `protobuf:"bytes,2,opt,name=value,proto3,oneof" json:"value,omitempty"` + // Description missing in models + // default = ['0.0.0.0'] + Values []string `protobuf:"bytes,3,rep,name=values,proto3" json:"values,omitempty"` + // Description missing in models + Increment *PatternFlowArpSenderProtocolAddrCounter `protobuf:"bytes,5,opt,name=increment,proto3" json:"increment,omitempty"` + // Description missing in models + Decrement *PatternFlowArpSenderProtocolAddrCounter `protobuf:"bytes,6,opt,name=decrement,proto3" json:"decrement,omitempty"` + // One or more metric tags can be used to enable tracking portion of or all bits in + // a corresponding header field for metrics per each applicable value. These would appear + // as tagged metrics in corresponding flow metrics. + MetricTags []*PatternFlowArpSenderProtocolAddrMetricTag `protobuf:"bytes,7,rep,name=metric_tags,json=metricTags,proto3" json:"metric_tags,omitempty"` } -func (x *DeviceIpv4GatewayMAC_Choice) Reset() { - *x = DeviceIpv4GatewayMAC_Choice{} +func (x *PatternFlowArpSenderProtocolAddr) Reset() { + *x = PatternFlowArpSenderProtocolAddr{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[769] + mi := &file_otg_proto_msgTypes[721] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *DeviceIpv4GatewayMAC_Choice) String() string { +func (x *PatternFlowArpSenderProtocolAddr) String() string { return protoimpl.X.MessageStringOf(x) } -func (*DeviceIpv4GatewayMAC_Choice) ProtoMessage() {} +func (*PatternFlowArpSenderProtocolAddr) ProtoMessage() {} -func (x *DeviceIpv4GatewayMAC_Choice) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[769] +func (x *PatternFlowArpSenderProtocolAddr) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[721] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -81458,72 +80572,87 @@ func (x *DeviceIpv4GatewayMAC_Choice) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use DeviceIpv4GatewayMAC_Choice.ProtoReflect.Descriptor instead. -func (*DeviceIpv4GatewayMAC_Choice) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{16, 0} +// Deprecated: Use PatternFlowArpSenderProtocolAddr.ProtoReflect.Descriptor instead. +func (*PatternFlowArpSenderProtocolAddr) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{721} } -type DeviceIpv6GatewayMAC_Choice struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields +func (x *PatternFlowArpSenderProtocolAddr) GetChoice() PatternFlowArpSenderProtocolAddr_Choice_Enum { + if x != nil && x.Choice != nil { + return *x.Choice + } + return PatternFlowArpSenderProtocolAddr_Choice_unspecified } -func (x *DeviceIpv6GatewayMAC_Choice) Reset() { - *x = DeviceIpv6GatewayMAC_Choice{} - if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[770] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) +func (x *PatternFlowArpSenderProtocolAddr) GetValue() string { + if x != nil && x.Value != nil { + return *x.Value } + return "" } -func (x *DeviceIpv6GatewayMAC_Choice) String() string { - return protoimpl.X.MessageStringOf(x) +func (x *PatternFlowArpSenderProtocolAddr) GetValues() []string { + if x != nil { + return x.Values + } + return nil } -func (*DeviceIpv6GatewayMAC_Choice) ProtoMessage() {} +func (x *PatternFlowArpSenderProtocolAddr) GetIncrement() *PatternFlowArpSenderProtocolAddrCounter { + if x != nil { + return x.Increment + } + return nil +} -func (x *DeviceIpv6GatewayMAC_Choice) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[770] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms +func (x *PatternFlowArpSenderProtocolAddr) GetDecrement() *PatternFlowArpSenderProtocolAddrCounter { + if x != nil { + return x.Decrement } - return mi.MessageOf(x) + return nil } -// Deprecated: Use DeviceIpv6GatewayMAC_Choice.ProtoReflect.Descriptor instead. -func (*DeviceIpv6GatewayMAC_Choice) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{19, 0} +func (x *PatternFlowArpSenderProtocolAddr) GetMetricTags() []*PatternFlowArpSenderProtocolAddrMetricTag { + if x != nil { + return x.MetricTags + } + return nil } -type Layer1_Speed struct { +// mac counter pattern +type PatternFlowArpTargetHardwareAddrCounter struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields + + // Description missing in models + // default = 00:00:00:00:00:00 + Start *string `protobuf:"bytes,1,opt,name=start,proto3,oneof" json:"start,omitempty"` + // Description missing in models + // default = 00:00:00:00:00:01 + Step *string `protobuf:"bytes,2,opt,name=step,proto3,oneof" json:"step,omitempty"` + // Description missing in models + // default = 1 + Count *uint32 `protobuf:"varint,3,opt,name=count,proto3,oneof" json:"count,omitempty"` } -func (x *Layer1_Speed) Reset() { - *x = Layer1_Speed{} +func (x *PatternFlowArpTargetHardwareAddrCounter) Reset() { + *x = PatternFlowArpTargetHardwareAddrCounter{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[771] + mi := &file_otg_proto_msgTypes[722] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *Layer1_Speed) String() string { +func (x *PatternFlowArpTargetHardwareAddrCounter) String() string { return protoimpl.X.MessageStringOf(x) } -func (*Layer1_Speed) ProtoMessage() {} +func (*PatternFlowArpTargetHardwareAddrCounter) ProtoMessage() {} -func (x *Layer1_Speed) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[771] +func (x *PatternFlowArpTargetHardwareAddrCounter) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[722] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -81534,34 +80663,70 @@ func (x *Layer1_Speed) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use Layer1_Speed.ProtoReflect.Descriptor instead. -func (*Layer1_Speed) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{20, 0} +// Deprecated: Use PatternFlowArpTargetHardwareAddrCounter.ProtoReflect.Descriptor instead. +func (*PatternFlowArpTargetHardwareAddrCounter) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{722} } -type Layer1_Media struct { +func (x *PatternFlowArpTargetHardwareAddrCounter) GetStart() string { + if x != nil && x.Start != nil { + return *x.Start + } + return "" +} + +func (x *PatternFlowArpTargetHardwareAddrCounter) GetStep() string { + if x != nil && x.Step != nil { + return *x.Step + } + return "" +} + +func (x *PatternFlowArpTargetHardwareAddrCounter) GetCount() uint32 { + if x != nil && x.Count != nil { + return *x.Count + } + return 0 +} + +// Metric tag can be used to enable tracking portion of or all bits in a corresponding +// header field for metrics per each applicable value. These would appear as tagged +// metrics in corresponding flow metrics. +type PatternFlowArpTargetHardwareAddrMetricTag struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields + + // Name used to identify the metrics associated with the values applicable for configured + // offset and length inside corresponding header field + // required = true + Name *string `protobuf:"bytes,1,opt,name=name,proto3,oneof" json:"name,omitempty"` + // Offset in bits relative to start of corresponding header field + // default = 0 + Offset *uint32 `protobuf:"varint,2,opt,name=offset,proto3,oneof" json:"offset,omitempty"` + // Number of bits to track for metrics starting from configured offset of corresponding + // header field + // default = 48 + Length *uint32 `protobuf:"varint,3,opt,name=length,proto3,oneof" json:"length,omitempty"` } -func (x *Layer1_Media) Reset() { - *x = Layer1_Media{} +func (x *PatternFlowArpTargetHardwareAddrMetricTag) Reset() { + *x = PatternFlowArpTargetHardwareAddrMetricTag{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[772] + mi := &file_otg_proto_msgTypes[723] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *Layer1_Media) String() string { +func (x *PatternFlowArpTargetHardwareAddrMetricTag) String() string { return protoimpl.X.MessageStringOf(x) } -func (*Layer1_Media) ProtoMessage() {} +func (*PatternFlowArpTargetHardwareAddrMetricTag) ProtoMessage() {} -func (x *Layer1_Media) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[772] +func (x *PatternFlowArpTargetHardwareAddrMetricTag) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[723] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -81572,34 +80737,74 @@ func (x *Layer1_Media) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use Layer1_Media.ProtoReflect.Descriptor instead. -func (*Layer1_Media) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{20, 1} +// Deprecated: Use PatternFlowArpTargetHardwareAddrMetricTag.ProtoReflect.Descriptor instead. +func (*PatternFlowArpTargetHardwareAddrMetricTag) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{723} } -type Layer1FlowControl_Choice struct { +func (x *PatternFlowArpTargetHardwareAddrMetricTag) GetName() string { + if x != nil && x.Name != nil { + return *x.Name + } + return "" +} + +func (x *PatternFlowArpTargetHardwareAddrMetricTag) GetOffset() uint32 { + if x != nil && x.Offset != nil { + return *x.Offset + } + return 0 +} + +func (x *PatternFlowArpTargetHardwareAddrMetricTag) GetLength() uint32 { + if x != nil && x.Length != nil { + return *x.Length + } + return 0 +} + +// Media address of the target +type PatternFlowArpTargetHardwareAddr struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields + + // Description missing in models + // default = Choice.Enum.value + Choice *PatternFlowArpTargetHardwareAddr_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.PatternFlowArpTargetHardwareAddr_Choice_Enum,oneof" json:"choice,omitempty"` + // Description missing in models + // default = 00:00:00:00:00:00 + Value *string `protobuf:"bytes,2,opt,name=value,proto3,oneof" json:"value,omitempty"` + // Description missing in models + // default = ['00:00:00:00:00:00'] + Values []string `protobuf:"bytes,3,rep,name=values,proto3" json:"values,omitempty"` + // Description missing in models + Increment *PatternFlowArpTargetHardwareAddrCounter `protobuf:"bytes,5,opt,name=increment,proto3" json:"increment,omitempty"` + // Description missing in models + Decrement *PatternFlowArpTargetHardwareAddrCounter `protobuf:"bytes,6,opt,name=decrement,proto3" json:"decrement,omitempty"` + // One or more metric tags can be used to enable tracking portion of or all bits in + // a corresponding header field for metrics per each applicable value. These would appear + // as tagged metrics in corresponding flow metrics. + MetricTags []*PatternFlowArpTargetHardwareAddrMetricTag `protobuf:"bytes,7,rep,name=metric_tags,json=metricTags,proto3" json:"metric_tags,omitempty"` } -func (x *Layer1FlowControl_Choice) Reset() { - *x = Layer1FlowControl_Choice{} +func (x *PatternFlowArpTargetHardwareAddr) Reset() { + *x = PatternFlowArpTargetHardwareAddr{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[773] + mi := &file_otg_proto_msgTypes[724] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *Layer1FlowControl_Choice) String() string { +func (x *PatternFlowArpTargetHardwareAddr) String() string { return protoimpl.X.MessageStringOf(x) } -func (*Layer1FlowControl_Choice) ProtoMessage() {} +func (*PatternFlowArpTargetHardwareAddr) ProtoMessage() {} -func (x *Layer1FlowControl_Choice) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[773] +func (x *PatternFlowArpTargetHardwareAddr) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[724] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -81610,72 +80815,87 @@ func (x *Layer1FlowControl_Choice) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use Layer1FlowControl_Choice.ProtoReflect.Descriptor instead. -func (*Layer1FlowControl_Choice) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{22, 0} +// Deprecated: Use PatternFlowArpTargetHardwareAddr.ProtoReflect.Descriptor instead. +func (*PatternFlowArpTargetHardwareAddr) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{724} } -type Capture_Format struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields +func (x *PatternFlowArpTargetHardwareAddr) GetChoice() PatternFlowArpTargetHardwareAddr_Choice_Enum { + if x != nil && x.Choice != nil { + return *x.Choice + } + return PatternFlowArpTargetHardwareAddr_Choice_unspecified } -func (x *Capture_Format) Reset() { - *x = Capture_Format{} - if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[774] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) +func (x *PatternFlowArpTargetHardwareAddr) GetValue() string { + if x != nil && x.Value != nil { + return *x.Value } + return "" } -func (x *Capture_Format) String() string { - return protoimpl.X.MessageStringOf(x) +func (x *PatternFlowArpTargetHardwareAddr) GetValues() []string { + if x != nil { + return x.Values + } + return nil } -func (*Capture_Format) ProtoMessage() {} +func (x *PatternFlowArpTargetHardwareAddr) GetIncrement() *PatternFlowArpTargetHardwareAddrCounter { + if x != nil { + return x.Increment + } + return nil +} -func (x *Capture_Format) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[774] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms +func (x *PatternFlowArpTargetHardwareAddr) GetDecrement() *PatternFlowArpTargetHardwareAddrCounter { + if x != nil { + return x.Decrement } - return mi.MessageOf(x) + return nil } -// Deprecated: Use Capture_Format.ProtoReflect.Descriptor instead. -func (*Capture_Format) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{25, 0} +func (x *PatternFlowArpTargetHardwareAddr) GetMetricTags() []*PatternFlowArpTargetHardwareAddrMetricTag { + if x != nil { + return x.MetricTags + } + return nil } -type CaptureFilter_Choice struct { +// ipv4 counter pattern +type PatternFlowArpTargetProtocolAddrCounter struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields + + // Description missing in models + // default = 0.0.0.0 + Start *string `protobuf:"bytes,1,opt,name=start,proto3,oneof" json:"start,omitempty"` + // Description missing in models + // default = 0.0.0.1 + Step *string `protobuf:"bytes,2,opt,name=step,proto3,oneof" json:"step,omitempty"` + // Description missing in models + // default = 1 + Count *uint32 `protobuf:"varint,3,opt,name=count,proto3,oneof" json:"count,omitempty"` } -func (x *CaptureFilter_Choice) Reset() { - *x = CaptureFilter_Choice{} +func (x *PatternFlowArpTargetProtocolAddrCounter) Reset() { + *x = PatternFlowArpTargetProtocolAddrCounter{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[775] + mi := &file_otg_proto_msgTypes[725] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *CaptureFilter_Choice) String() string { +func (x *PatternFlowArpTargetProtocolAddrCounter) String() string { return protoimpl.X.MessageStringOf(x) } -func (*CaptureFilter_Choice) ProtoMessage() {} +func (*PatternFlowArpTargetProtocolAddrCounter) ProtoMessage() {} -func (x *CaptureFilter_Choice) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[775] +func (x *PatternFlowArpTargetProtocolAddrCounter) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[725] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -81686,72 +80906,70 @@ func (x *CaptureFilter_Choice) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use CaptureFilter_Choice.ProtoReflect.Descriptor instead. -func (*CaptureFilter_Choice) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{26, 0} +// Deprecated: Use PatternFlowArpTargetProtocolAddrCounter.ProtoReflect.Descriptor instead. +func (*PatternFlowArpTargetProtocolAddrCounter) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{725} } -type IsisInterface_NetworkType struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields +func (x *PatternFlowArpTargetProtocolAddrCounter) GetStart() string { + if x != nil && x.Start != nil { + return *x.Start + } + return "" } -func (x *IsisInterface_NetworkType) Reset() { - *x = IsisInterface_NetworkType{} - if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[776] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) +func (x *PatternFlowArpTargetProtocolAddrCounter) GetStep() string { + if x != nil && x.Step != nil { + return *x.Step } + return "" } -func (x *IsisInterface_NetworkType) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*IsisInterface_NetworkType) ProtoMessage() {} - -func (x *IsisInterface_NetworkType) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[776] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms +func (x *PatternFlowArpTargetProtocolAddrCounter) GetCount() uint32 { + if x != nil && x.Count != nil { + return *x.Count } - return mi.MessageOf(x) -} - -// Deprecated: Use IsisInterface_NetworkType.ProtoReflect.Descriptor instead. -func (*IsisInterface_NetworkType) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{37, 0} + return 0 } -type IsisInterface_LevelType struct { +// Metric tag can be used to enable tracking portion of or all bits in a corresponding +// header field for metrics per each applicable value. These would appear as tagged +// metrics in corresponding flow metrics. +type PatternFlowArpTargetProtocolAddrMetricTag struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields + + // Name used to identify the metrics associated with the values applicable for configured + // offset and length inside corresponding header field + // required = true + Name *string `protobuf:"bytes,1,opt,name=name,proto3,oneof" json:"name,omitempty"` + // Offset in bits relative to start of corresponding header field + // default = 0 + Offset *uint32 `protobuf:"varint,2,opt,name=offset,proto3,oneof" json:"offset,omitempty"` + // Number of bits to track for metrics starting from configured offset of corresponding + // header field + // default = 32 + Length *uint32 `protobuf:"varint,3,opt,name=length,proto3,oneof" json:"length,omitempty"` } -func (x *IsisInterface_LevelType) Reset() { - *x = IsisInterface_LevelType{} +func (x *PatternFlowArpTargetProtocolAddrMetricTag) Reset() { + *x = PatternFlowArpTargetProtocolAddrMetricTag{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[777] + mi := &file_otg_proto_msgTypes[726] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *IsisInterface_LevelType) String() string { +func (x *PatternFlowArpTargetProtocolAddrMetricTag) String() string { return protoimpl.X.MessageStringOf(x) } -func (*IsisInterface_LevelType) ProtoMessage() {} +func (*PatternFlowArpTargetProtocolAddrMetricTag) ProtoMessage() {} -func (x *IsisInterface_LevelType) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[777] +func (x *PatternFlowArpTargetProtocolAddrMetricTag) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[726] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -81762,72 +80980,74 @@ func (x *IsisInterface_LevelType) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use IsisInterface_LevelType.ProtoReflect.Descriptor instead. -func (*IsisInterface_LevelType) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{37, 1} -} - -type IsisInterfaceAuthentication_AuthType struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields +// Deprecated: Use PatternFlowArpTargetProtocolAddrMetricTag.ProtoReflect.Descriptor instead. +func (*PatternFlowArpTargetProtocolAddrMetricTag) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{726} } -func (x *IsisInterfaceAuthentication_AuthType) Reset() { - *x = IsisInterfaceAuthentication_AuthType{} - if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[778] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) +func (x *PatternFlowArpTargetProtocolAddrMetricTag) GetName() string { + if x != nil && x.Name != nil { + return *x.Name } + return "" } -func (x *IsisInterfaceAuthentication_AuthType) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*IsisInterfaceAuthentication_AuthType) ProtoMessage() {} - -func (x *IsisInterfaceAuthentication_AuthType) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[778] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms +func (x *PatternFlowArpTargetProtocolAddrMetricTag) GetOffset() uint32 { + if x != nil && x.Offset != nil { + return *x.Offset } - return mi.MessageOf(x) + return 0 } -// Deprecated: Use IsisInterfaceAuthentication_AuthType.ProtoReflect.Descriptor instead. -func (*IsisInterfaceAuthentication_AuthType) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{42, 0} +func (x *PatternFlowArpTargetProtocolAddrMetricTag) GetLength() uint32 { + if x != nil && x.Length != nil { + return *x.Length + } + return 0 } -type IsisAuthenticationBase_AuthType struct { +// Internetwork address of the target +type PatternFlowArpTargetProtocolAddr struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields + + // Description missing in models + // default = Choice.Enum.value + Choice *PatternFlowArpTargetProtocolAddr_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.PatternFlowArpTargetProtocolAddr_Choice_Enum,oneof" json:"choice,omitempty"` + // Description missing in models + // default = 0.0.0.0 + Value *string `protobuf:"bytes,2,opt,name=value,proto3,oneof" json:"value,omitempty"` + // Description missing in models + // default = ['0.0.0.0'] + Values []string `protobuf:"bytes,3,rep,name=values,proto3" json:"values,omitempty"` + // Description missing in models + Increment *PatternFlowArpTargetProtocolAddrCounter `protobuf:"bytes,5,opt,name=increment,proto3" json:"increment,omitempty"` + // Description missing in models + Decrement *PatternFlowArpTargetProtocolAddrCounter `protobuf:"bytes,6,opt,name=decrement,proto3" json:"decrement,omitempty"` + // One or more metric tags can be used to enable tracking portion of or all bits in + // a corresponding header field for metrics per each applicable value. These would appear + // as tagged metrics in corresponding flow metrics. + MetricTags []*PatternFlowArpTargetProtocolAddrMetricTag `protobuf:"bytes,7,rep,name=metric_tags,json=metricTags,proto3" json:"metric_tags,omitempty"` } -func (x *IsisAuthenticationBase_AuthType) Reset() { - *x = IsisAuthenticationBase_AuthType{} +func (x *PatternFlowArpTargetProtocolAddr) Reset() { + *x = PatternFlowArpTargetProtocolAddr{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[779] + mi := &file_otg_proto_msgTypes[727] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *IsisAuthenticationBase_AuthType) String() string { +func (x *PatternFlowArpTargetProtocolAddr) String() string { return protoimpl.X.MessageStringOf(x) } -func (*IsisAuthenticationBase_AuthType) ProtoMessage() {} +func (*PatternFlowArpTargetProtocolAddr) ProtoMessage() {} -func (x *IsisAuthenticationBase_AuthType) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[779] +func (x *PatternFlowArpTargetProtocolAddr) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[727] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -81838,72 +81058,87 @@ func (x *IsisAuthenticationBase_AuthType) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use IsisAuthenticationBase_AuthType.ProtoReflect.Descriptor instead. -func (*IsisAuthenticationBase_AuthType) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{48, 0} +// Deprecated: Use PatternFlowArpTargetProtocolAddr.ProtoReflect.Descriptor instead. +func (*PatternFlowArpTargetProtocolAddr) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{727} } -type IsisV4RouteRange_OriginType struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields +func (x *PatternFlowArpTargetProtocolAddr) GetChoice() PatternFlowArpTargetProtocolAddr_Choice_Enum { + if x != nil && x.Choice != nil { + return *x.Choice + } + return PatternFlowArpTargetProtocolAddr_Choice_unspecified } -func (x *IsisV4RouteRange_OriginType) Reset() { - *x = IsisV4RouteRange_OriginType{} - if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[780] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) +func (x *PatternFlowArpTargetProtocolAddr) GetValue() string { + if x != nil && x.Value != nil { + return *x.Value } + return "" } -func (x *IsisV4RouteRange_OriginType) String() string { - return protoimpl.X.MessageStringOf(x) +func (x *PatternFlowArpTargetProtocolAddr) GetValues() []string { + if x != nil { + return x.Values + } + return nil } -func (*IsisV4RouteRange_OriginType) ProtoMessage() {} +func (x *PatternFlowArpTargetProtocolAddr) GetIncrement() *PatternFlowArpTargetProtocolAddrCounter { + if x != nil { + return x.Increment + } + return nil +} -func (x *IsisV4RouteRange_OriginType) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[780] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms +func (x *PatternFlowArpTargetProtocolAddr) GetDecrement() *PatternFlowArpTargetProtocolAddrCounter { + if x != nil { + return x.Decrement } - return mi.MessageOf(x) + return nil } -// Deprecated: Use IsisV4RouteRange_OriginType.ProtoReflect.Descriptor instead. -func (*IsisV4RouteRange_OriginType) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{49, 0} +func (x *PatternFlowArpTargetProtocolAddr) GetMetricTags() []*PatternFlowArpTargetProtocolAddrMetricTag { + if x != nil { + return x.MetricTags + } + return nil } -type IsisV4RouteRange_RedistributionType struct { +// integer counter pattern +type PatternFlowIcmpEchoTypeCounter struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields + + // Description missing in models + // default = 8 + Start *uint32 `protobuf:"varint,1,opt,name=start,proto3,oneof" json:"start,omitempty"` + // Description missing in models + // default = 1 + Step *uint32 `protobuf:"varint,2,opt,name=step,proto3,oneof" json:"step,omitempty"` + // Description missing in models + // default = 1 + Count *uint32 `protobuf:"varint,3,opt,name=count,proto3,oneof" json:"count,omitempty"` } -func (x *IsisV4RouteRange_RedistributionType) Reset() { - *x = IsisV4RouteRange_RedistributionType{} +func (x *PatternFlowIcmpEchoTypeCounter) Reset() { + *x = PatternFlowIcmpEchoTypeCounter{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[781] + mi := &file_otg_proto_msgTypes[728] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *IsisV4RouteRange_RedistributionType) String() string { +func (x *PatternFlowIcmpEchoTypeCounter) String() string { return protoimpl.X.MessageStringOf(x) } -func (*IsisV4RouteRange_RedistributionType) ProtoMessage() {} +func (*PatternFlowIcmpEchoTypeCounter) ProtoMessage() {} -func (x *IsisV4RouteRange_RedistributionType) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[781] +func (x *PatternFlowIcmpEchoTypeCounter) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[728] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -81914,34 +81149,70 @@ func (x *IsisV4RouteRange_RedistributionType) ProtoReflect() protoreflect.Messag return mi.MessageOf(x) } -// Deprecated: Use IsisV4RouteRange_RedistributionType.ProtoReflect.Descriptor instead. -func (*IsisV4RouteRange_RedistributionType) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{49, 1} +// Deprecated: Use PatternFlowIcmpEchoTypeCounter.ProtoReflect.Descriptor instead. +func (*PatternFlowIcmpEchoTypeCounter) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{728} } -type IsisV6RouteRange_OriginType struct { +func (x *PatternFlowIcmpEchoTypeCounter) GetStart() uint32 { + if x != nil && x.Start != nil { + return *x.Start + } + return 0 +} + +func (x *PatternFlowIcmpEchoTypeCounter) GetStep() uint32 { + if x != nil && x.Step != nil { + return *x.Step + } + return 0 +} + +func (x *PatternFlowIcmpEchoTypeCounter) GetCount() uint32 { + if x != nil && x.Count != nil { + return *x.Count + } + return 0 +} + +// Metric tag can be used to enable tracking portion of or all bits in a corresponding +// header field for metrics per each applicable value. These would appear as tagged +// metrics in corresponding flow metrics. +type PatternFlowIcmpEchoTypeMetricTag struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields + + // Name used to identify the metrics associated with the values applicable for configured + // offset and length inside corresponding header field + // required = true + Name *string `protobuf:"bytes,1,opt,name=name,proto3,oneof" json:"name,omitempty"` + // Offset in bits relative to start of corresponding header field + // default = 0 + Offset *uint32 `protobuf:"varint,2,opt,name=offset,proto3,oneof" json:"offset,omitempty"` + // Number of bits to track for metrics starting from configured offset of corresponding + // header field + // default = 8 + Length *uint32 `protobuf:"varint,3,opt,name=length,proto3,oneof" json:"length,omitempty"` } -func (x *IsisV6RouteRange_OriginType) Reset() { - *x = IsisV6RouteRange_OriginType{} +func (x *PatternFlowIcmpEchoTypeMetricTag) Reset() { + *x = PatternFlowIcmpEchoTypeMetricTag{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[782] + mi := &file_otg_proto_msgTypes[729] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *IsisV6RouteRange_OriginType) String() string { +func (x *PatternFlowIcmpEchoTypeMetricTag) String() string { return protoimpl.X.MessageStringOf(x) } -func (*IsisV6RouteRange_OriginType) ProtoMessage() {} +func (*PatternFlowIcmpEchoTypeMetricTag) ProtoMessage() {} -func (x *IsisV6RouteRange_OriginType) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[782] +func (x *PatternFlowIcmpEchoTypeMetricTag) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[729] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -81952,34 +81223,74 @@ func (x *IsisV6RouteRange_OriginType) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use IsisV6RouteRange_OriginType.ProtoReflect.Descriptor instead. -func (*IsisV6RouteRange_OriginType) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{53, 0} +// Deprecated: Use PatternFlowIcmpEchoTypeMetricTag.ProtoReflect.Descriptor instead. +func (*PatternFlowIcmpEchoTypeMetricTag) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{729} } -type IsisV6RouteRange_RedistributionType struct { +func (x *PatternFlowIcmpEchoTypeMetricTag) GetName() string { + if x != nil && x.Name != nil { + return *x.Name + } + return "" +} + +func (x *PatternFlowIcmpEchoTypeMetricTag) GetOffset() uint32 { + if x != nil && x.Offset != nil { + return *x.Offset + } + return 0 +} + +func (x *PatternFlowIcmpEchoTypeMetricTag) GetLength() uint32 { + if x != nil && x.Length != nil { + return *x.Length + } + return 0 +} + +// The type of ICMP echo packet +type PatternFlowIcmpEchoType struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields + + // Description missing in models + // default = Choice.Enum.value + Choice *PatternFlowIcmpEchoType_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.PatternFlowIcmpEchoType_Choice_Enum,oneof" json:"choice,omitempty"` + // Description missing in models + // default = 8 + Value *uint32 `protobuf:"varint,2,opt,name=value,proto3,oneof" json:"value,omitempty"` + // Description missing in models + // default = [8] + Values []uint32 `protobuf:"varint,3,rep,packed,name=values,proto3" json:"values,omitempty"` + // Description missing in models + Increment *PatternFlowIcmpEchoTypeCounter `protobuf:"bytes,5,opt,name=increment,proto3" json:"increment,omitempty"` + // Description missing in models + Decrement *PatternFlowIcmpEchoTypeCounter `protobuf:"bytes,6,opt,name=decrement,proto3" json:"decrement,omitempty"` + // One or more metric tags can be used to enable tracking portion of or all bits in + // a corresponding header field for metrics per each applicable value. These would appear + // as tagged metrics in corresponding flow metrics. + MetricTags []*PatternFlowIcmpEchoTypeMetricTag `protobuf:"bytes,7,rep,name=metric_tags,json=metricTags,proto3" json:"metric_tags,omitempty"` } -func (x *IsisV6RouteRange_RedistributionType) Reset() { - *x = IsisV6RouteRange_RedistributionType{} +func (x *PatternFlowIcmpEchoType) Reset() { + *x = PatternFlowIcmpEchoType{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[783] + mi := &file_otg_proto_msgTypes[730] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *IsisV6RouteRange_RedistributionType) String() string { +func (x *PatternFlowIcmpEchoType) String() string { return protoimpl.X.MessageStringOf(x) } -func (*IsisV6RouteRange_RedistributionType) ProtoMessage() {} +func (*PatternFlowIcmpEchoType) ProtoMessage() {} -func (x *IsisV6RouteRange_RedistributionType) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[783] +func (x *PatternFlowIcmpEchoType) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[730] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -81990,72 +81301,87 @@ func (x *IsisV6RouteRange_RedistributionType) ProtoReflect() protoreflect.Messag return mi.MessageOf(x) } -// Deprecated: Use IsisV6RouteRange_RedistributionType.ProtoReflect.Descriptor instead. -func (*IsisV6RouteRange_RedistributionType) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{53, 1} +// Deprecated: Use PatternFlowIcmpEchoType.ProtoReflect.Descriptor instead. +func (*PatternFlowIcmpEchoType) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{730} } -type DeviceBgpMessageHeaderError_Subcode struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields +func (x *PatternFlowIcmpEchoType) GetChoice() PatternFlowIcmpEchoType_Choice_Enum { + if x != nil && x.Choice != nil { + return *x.Choice + } + return PatternFlowIcmpEchoType_Choice_unspecified } -func (x *DeviceBgpMessageHeaderError_Subcode) Reset() { - *x = DeviceBgpMessageHeaderError_Subcode{} - if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[784] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) +func (x *PatternFlowIcmpEchoType) GetValue() uint32 { + if x != nil && x.Value != nil { + return *x.Value } + return 0 } -func (x *DeviceBgpMessageHeaderError_Subcode) String() string { - return protoimpl.X.MessageStringOf(x) +func (x *PatternFlowIcmpEchoType) GetValues() []uint32 { + if x != nil { + return x.Values + } + return nil } -func (*DeviceBgpMessageHeaderError_Subcode) ProtoMessage() {} +func (x *PatternFlowIcmpEchoType) GetIncrement() *PatternFlowIcmpEchoTypeCounter { + if x != nil { + return x.Increment + } + return nil +} -func (x *DeviceBgpMessageHeaderError_Subcode) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[784] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms +func (x *PatternFlowIcmpEchoType) GetDecrement() *PatternFlowIcmpEchoTypeCounter { + if x != nil { + return x.Decrement } - return mi.MessageOf(x) + return nil } -// Deprecated: Use DeviceBgpMessageHeaderError_Subcode.ProtoReflect.Descriptor instead. -func (*DeviceBgpMessageHeaderError_Subcode) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{55, 0} +func (x *PatternFlowIcmpEchoType) GetMetricTags() []*PatternFlowIcmpEchoTypeMetricTag { + if x != nil { + return x.MetricTags + } + return nil } -type DeviceBgpOpenMessageError_Subcode struct { +// integer counter pattern +type PatternFlowIcmpEchoCodeCounter struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields + + // Description missing in models + // default = 0 + Start *uint32 `protobuf:"varint,1,opt,name=start,proto3,oneof" json:"start,omitempty"` + // Description missing in models + // default = 1 + Step *uint32 `protobuf:"varint,2,opt,name=step,proto3,oneof" json:"step,omitempty"` + // Description missing in models + // default = 1 + Count *uint32 `protobuf:"varint,3,opt,name=count,proto3,oneof" json:"count,omitempty"` } -func (x *DeviceBgpOpenMessageError_Subcode) Reset() { - *x = DeviceBgpOpenMessageError_Subcode{} +func (x *PatternFlowIcmpEchoCodeCounter) Reset() { + *x = PatternFlowIcmpEchoCodeCounter{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[785] + mi := &file_otg_proto_msgTypes[731] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *DeviceBgpOpenMessageError_Subcode) String() string { +func (x *PatternFlowIcmpEchoCodeCounter) String() string { return protoimpl.X.MessageStringOf(x) } -func (*DeviceBgpOpenMessageError_Subcode) ProtoMessage() {} +func (*PatternFlowIcmpEchoCodeCounter) ProtoMessage() {} -func (x *DeviceBgpOpenMessageError_Subcode) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[785] +func (x *PatternFlowIcmpEchoCodeCounter) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[731] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -82066,34 +81392,70 @@ func (x *DeviceBgpOpenMessageError_Subcode) ProtoReflect() protoreflect.Message return mi.MessageOf(x) } -// Deprecated: Use DeviceBgpOpenMessageError_Subcode.ProtoReflect.Descriptor instead. -func (*DeviceBgpOpenMessageError_Subcode) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{56, 0} +// Deprecated: Use PatternFlowIcmpEchoCodeCounter.ProtoReflect.Descriptor instead. +func (*PatternFlowIcmpEchoCodeCounter) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{731} } -type DeviceBgpUpdateMessageError_Subcode struct { +func (x *PatternFlowIcmpEchoCodeCounter) GetStart() uint32 { + if x != nil && x.Start != nil { + return *x.Start + } + return 0 +} + +func (x *PatternFlowIcmpEchoCodeCounter) GetStep() uint32 { + if x != nil && x.Step != nil { + return *x.Step + } + return 0 +} + +func (x *PatternFlowIcmpEchoCodeCounter) GetCount() uint32 { + if x != nil && x.Count != nil { + return *x.Count + } + return 0 +} + +// Metric tag can be used to enable tracking portion of or all bits in a corresponding +// header field for metrics per each applicable value. These would appear as tagged +// metrics in corresponding flow metrics. +type PatternFlowIcmpEchoCodeMetricTag struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields + + // Name used to identify the metrics associated with the values applicable for configured + // offset and length inside corresponding header field + // required = true + Name *string `protobuf:"bytes,1,opt,name=name,proto3,oneof" json:"name,omitempty"` + // Offset in bits relative to start of corresponding header field + // default = 0 + Offset *uint32 `protobuf:"varint,2,opt,name=offset,proto3,oneof" json:"offset,omitempty"` + // Number of bits to track for metrics starting from configured offset of corresponding + // header field + // default = 8 + Length *uint32 `protobuf:"varint,3,opt,name=length,proto3,oneof" json:"length,omitempty"` } -func (x *DeviceBgpUpdateMessageError_Subcode) Reset() { - *x = DeviceBgpUpdateMessageError_Subcode{} +func (x *PatternFlowIcmpEchoCodeMetricTag) Reset() { + *x = PatternFlowIcmpEchoCodeMetricTag{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[786] + mi := &file_otg_proto_msgTypes[732] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *DeviceBgpUpdateMessageError_Subcode) String() string { +func (x *PatternFlowIcmpEchoCodeMetricTag) String() string { return protoimpl.X.MessageStringOf(x) } -func (*DeviceBgpUpdateMessageError_Subcode) ProtoMessage() {} +func (*PatternFlowIcmpEchoCodeMetricTag) ProtoMessage() {} -func (x *DeviceBgpUpdateMessageError_Subcode) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[786] +func (x *PatternFlowIcmpEchoCodeMetricTag) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[732] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -82104,72 +81466,74 @@ func (x *DeviceBgpUpdateMessageError_Subcode) ProtoReflect() protoreflect.Messag return mi.MessageOf(x) } -// Deprecated: Use DeviceBgpUpdateMessageError_Subcode.ProtoReflect.Descriptor instead. -func (*DeviceBgpUpdateMessageError_Subcode) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{57, 0} +// Deprecated: Use PatternFlowIcmpEchoCodeMetricTag.ProtoReflect.Descriptor instead. +func (*PatternFlowIcmpEchoCodeMetricTag) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{732} } -type DeviceBgpCeaseError_Subcode struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields +func (x *PatternFlowIcmpEchoCodeMetricTag) GetName() string { + if x != nil && x.Name != nil { + return *x.Name + } + return "" } -func (x *DeviceBgpCeaseError_Subcode) Reset() { - *x = DeviceBgpCeaseError_Subcode{} - if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[787] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) +func (x *PatternFlowIcmpEchoCodeMetricTag) GetOffset() uint32 { + if x != nil && x.Offset != nil { + return *x.Offset } + return 0 } -func (x *DeviceBgpCeaseError_Subcode) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*DeviceBgpCeaseError_Subcode) ProtoMessage() {} - -func (x *DeviceBgpCeaseError_Subcode) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[787] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms +func (x *PatternFlowIcmpEchoCodeMetricTag) GetLength() uint32 { + if x != nil && x.Length != nil { + return *x.Length } - return mi.MessageOf(x) -} - -// Deprecated: Use DeviceBgpCeaseError_Subcode.ProtoReflect.Descriptor instead. -func (*DeviceBgpCeaseError_Subcode) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{60, 0} + return 0 } -type BgpV4Peer_AsType struct { +// The ICMP subtype. The default code for ICMP echo request and reply is 0. +type PatternFlowIcmpEchoCode struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields + + // Description missing in models + // default = Choice.Enum.value + Choice *PatternFlowIcmpEchoCode_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.PatternFlowIcmpEchoCode_Choice_Enum,oneof" json:"choice,omitempty"` + // Description missing in models + // default = 0 + Value *uint32 `protobuf:"varint,2,opt,name=value,proto3,oneof" json:"value,omitempty"` + // Description missing in models + // default = [0] + Values []uint32 `protobuf:"varint,3,rep,packed,name=values,proto3" json:"values,omitempty"` + // Description missing in models + Increment *PatternFlowIcmpEchoCodeCounter `protobuf:"bytes,5,opt,name=increment,proto3" json:"increment,omitempty"` + // Description missing in models + Decrement *PatternFlowIcmpEchoCodeCounter `protobuf:"bytes,6,opt,name=decrement,proto3" json:"decrement,omitempty"` + // One or more metric tags can be used to enable tracking portion of or all bits in + // a corresponding header field for metrics per each applicable value. These would appear + // as tagged metrics in corresponding flow metrics. + MetricTags []*PatternFlowIcmpEchoCodeMetricTag `protobuf:"bytes,7,rep,name=metric_tags,json=metricTags,proto3" json:"metric_tags,omitempty"` } -func (x *BgpV4Peer_AsType) Reset() { - *x = BgpV4Peer_AsType{} +func (x *PatternFlowIcmpEchoCode) Reset() { + *x = PatternFlowIcmpEchoCode{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[788] + mi := &file_otg_proto_msgTypes[733] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *BgpV4Peer_AsType) String() string { +func (x *PatternFlowIcmpEchoCode) String() string { return protoimpl.X.MessageStringOf(x) } -func (*BgpV4Peer_AsType) ProtoMessage() {} +func (*PatternFlowIcmpEchoCode) ProtoMessage() {} -func (x *BgpV4Peer_AsType) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[788] +func (x *PatternFlowIcmpEchoCode) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[733] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -82180,72 +81544,86 @@ func (x *BgpV4Peer_AsType) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use BgpV4Peer_AsType.ProtoReflect.Descriptor instead. -func (*BgpV4Peer_AsType) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{62, 0} +// Deprecated: Use PatternFlowIcmpEchoCode.ProtoReflect.Descriptor instead. +func (*PatternFlowIcmpEchoCode) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{733} } -type BgpV4Peer_AsNumberWidth struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields +func (x *PatternFlowIcmpEchoCode) GetChoice() PatternFlowIcmpEchoCode_Choice_Enum { + if x != nil && x.Choice != nil { + return *x.Choice + } + return PatternFlowIcmpEchoCode_Choice_unspecified } -func (x *BgpV4Peer_AsNumberWidth) Reset() { - *x = BgpV4Peer_AsNumberWidth{} - if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[789] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) +func (x *PatternFlowIcmpEchoCode) GetValue() uint32 { + if x != nil && x.Value != nil { + return *x.Value } + return 0 } -func (x *BgpV4Peer_AsNumberWidth) String() string { - return protoimpl.X.MessageStringOf(x) +func (x *PatternFlowIcmpEchoCode) GetValues() []uint32 { + if x != nil { + return x.Values + } + return nil } -func (*BgpV4Peer_AsNumberWidth) ProtoMessage() {} +func (x *PatternFlowIcmpEchoCode) GetIncrement() *PatternFlowIcmpEchoCodeCounter { + if x != nil { + return x.Increment + } + return nil +} -func (x *BgpV4Peer_AsNumberWidth) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[789] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms +func (x *PatternFlowIcmpEchoCode) GetDecrement() *PatternFlowIcmpEchoCodeCounter { + if x != nil { + return x.Decrement } - return mi.MessageOf(x) + return nil } -// Deprecated: Use BgpV4Peer_AsNumberWidth.ProtoReflect.Descriptor instead. -func (*BgpV4Peer_AsNumberWidth) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{62, 1} +func (x *PatternFlowIcmpEchoCode) GetMetricTags() []*PatternFlowIcmpEchoCodeMetricTag { + if x != nil { + return x.MetricTags + } + return nil } -type BgpV4EthernetSegment_ActiveMode struct { +// ICMP checksum +type PatternFlowIcmpEchoChecksum struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields + + // The type of checksum + // default = Choice.Enum.generated + Choice *PatternFlowIcmpEchoChecksum_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.PatternFlowIcmpEchoChecksum_Choice_Enum,oneof" json:"choice,omitempty"` + // A system generated checksum value + // default = Generated.Enum.good + Generated *PatternFlowIcmpEchoChecksum_Generated_Enum `protobuf:"varint,2,opt,name=generated,proto3,enum=otg.PatternFlowIcmpEchoChecksum_Generated_Enum,oneof" json:"generated,omitempty"` + // A custom checksum value + Custom *uint32 `protobuf:"varint,3,opt,name=custom,proto3,oneof" json:"custom,omitempty"` } -func (x *BgpV4EthernetSegment_ActiveMode) Reset() { - *x = BgpV4EthernetSegment_ActiveMode{} +func (x *PatternFlowIcmpEchoChecksum) Reset() { + *x = PatternFlowIcmpEchoChecksum{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[790] + mi := &file_otg_proto_msgTypes[734] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *BgpV4EthernetSegment_ActiveMode) String() string { +func (x *PatternFlowIcmpEchoChecksum) String() string { return protoimpl.X.MessageStringOf(x) } -func (*BgpV4EthernetSegment_ActiveMode) ProtoMessage() {} +func (*PatternFlowIcmpEchoChecksum) ProtoMessage() {} -func (x *BgpV4EthernetSegment_ActiveMode) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[790] +func (x *PatternFlowIcmpEchoChecksum) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[734] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -82256,72 +81634,66 @@ func (x *BgpV4EthernetSegment_ActiveMode) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use BgpV4EthernetSegment_ActiveMode.ProtoReflect.Descriptor instead. -func (*BgpV4EthernetSegment_ActiveMode) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{64, 0} -} - -type BgpRouteAdvanced_Origin struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields +// Deprecated: Use PatternFlowIcmpEchoChecksum.ProtoReflect.Descriptor instead. +func (*PatternFlowIcmpEchoChecksum) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{734} } -func (x *BgpRouteAdvanced_Origin) Reset() { - *x = BgpRouteAdvanced_Origin{} - if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[791] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) +func (x *PatternFlowIcmpEchoChecksum) GetChoice() PatternFlowIcmpEchoChecksum_Choice_Enum { + if x != nil && x.Choice != nil { + return *x.Choice } + return PatternFlowIcmpEchoChecksum_Choice_unspecified } -func (x *BgpRouteAdvanced_Origin) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*BgpRouteAdvanced_Origin) ProtoMessage() {} - -func (x *BgpRouteAdvanced_Origin) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[791] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms +func (x *PatternFlowIcmpEchoChecksum) GetGenerated() PatternFlowIcmpEchoChecksum_Generated_Enum { + if x != nil && x.Generated != nil { + return *x.Generated } - return mi.MessageOf(x) + return PatternFlowIcmpEchoChecksum_Generated_unspecified } -// Deprecated: Use BgpRouteAdvanced_Origin.ProtoReflect.Descriptor instead. -func (*BgpRouteAdvanced_Origin) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{66, 0} +func (x *PatternFlowIcmpEchoChecksum) GetCustom() uint32 { + if x != nil && x.Custom != nil { + return *x.Custom + } + return 0 } -type BgpCommunity_Type struct { +// integer counter pattern +type PatternFlowIcmpEchoIdentifierCounter struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields + + // Description missing in models + // default = 0 + Start *uint32 `protobuf:"varint,1,opt,name=start,proto3,oneof" json:"start,omitempty"` + // Description missing in models + // default = 1 + Step *uint32 `protobuf:"varint,2,opt,name=step,proto3,oneof" json:"step,omitempty"` + // Description missing in models + // default = 1 + Count *uint32 `protobuf:"varint,3,opt,name=count,proto3,oneof" json:"count,omitempty"` } -func (x *BgpCommunity_Type) Reset() { - *x = BgpCommunity_Type{} +func (x *PatternFlowIcmpEchoIdentifierCounter) Reset() { + *x = PatternFlowIcmpEchoIdentifierCounter{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[792] + mi := &file_otg_proto_msgTypes[735] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *BgpCommunity_Type) String() string { +func (x *PatternFlowIcmpEchoIdentifierCounter) String() string { return protoimpl.X.MessageStringOf(x) } -func (*BgpCommunity_Type) ProtoMessage() {} +func (*PatternFlowIcmpEchoIdentifierCounter) ProtoMessage() {} -func (x *BgpCommunity_Type) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[792] +func (x *PatternFlowIcmpEchoIdentifierCounter) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[735] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -82332,34 +81704,70 @@ func (x *BgpCommunity_Type) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use BgpCommunity_Type.ProtoReflect.Descriptor instead. -func (*BgpCommunity_Type) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{67, 0} +// Deprecated: Use PatternFlowIcmpEchoIdentifierCounter.ProtoReflect.Descriptor instead. +func (*PatternFlowIcmpEchoIdentifierCounter) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{735} } -type BgpExtCommunity_Type struct { +func (x *PatternFlowIcmpEchoIdentifierCounter) GetStart() uint32 { + if x != nil && x.Start != nil { + return *x.Start + } + return 0 +} + +func (x *PatternFlowIcmpEchoIdentifierCounter) GetStep() uint32 { + if x != nil && x.Step != nil { + return *x.Step + } + return 0 +} + +func (x *PatternFlowIcmpEchoIdentifierCounter) GetCount() uint32 { + if x != nil && x.Count != nil { + return *x.Count + } + return 0 +} + +// Metric tag can be used to enable tracking portion of or all bits in a corresponding +// header field for metrics per each applicable value. These would appear as tagged +// metrics in corresponding flow metrics. +type PatternFlowIcmpEchoIdentifierMetricTag struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields + + // Name used to identify the metrics associated with the values applicable for configured + // offset and length inside corresponding header field + // required = true + Name *string `protobuf:"bytes,1,opt,name=name,proto3,oneof" json:"name,omitempty"` + // Offset in bits relative to start of corresponding header field + // default = 0 + Offset *uint32 `protobuf:"varint,2,opt,name=offset,proto3,oneof" json:"offset,omitempty"` + // Number of bits to track for metrics starting from configured offset of corresponding + // header field + // default = 16 + Length *uint32 `protobuf:"varint,3,opt,name=length,proto3,oneof" json:"length,omitempty"` } -func (x *BgpExtCommunity_Type) Reset() { - *x = BgpExtCommunity_Type{} +func (x *PatternFlowIcmpEchoIdentifierMetricTag) Reset() { + *x = PatternFlowIcmpEchoIdentifierMetricTag{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[793] + mi := &file_otg_proto_msgTypes[736] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *BgpExtCommunity_Type) String() string { +func (x *PatternFlowIcmpEchoIdentifierMetricTag) String() string { return protoimpl.X.MessageStringOf(x) } -func (*BgpExtCommunity_Type) ProtoMessage() {} +func (*PatternFlowIcmpEchoIdentifierMetricTag) ProtoMessage() {} -func (x *BgpExtCommunity_Type) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[793] +func (x *PatternFlowIcmpEchoIdentifierMetricTag) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[736] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -82370,34 +81778,74 @@ func (x *BgpExtCommunity_Type) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use BgpExtCommunity_Type.ProtoReflect.Descriptor instead. -func (*BgpExtCommunity_Type) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{68, 0} +// Deprecated: Use PatternFlowIcmpEchoIdentifierMetricTag.ProtoReflect.Descriptor instead. +func (*PatternFlowIcmpEchoIdentifierMetricTag) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{736} } -type BgpExtCommunity_Subtype struct { +func (x *PatternFlowIcmpEchoIdentifierMetricTag) GetName() string { + if x != nil && x.Name != nil { + return *x.Name + } + return "" +} + +func (x *PatternFlowIcmpEchoIdentifierMetricTag) GetOffset() uint32 { + if x != nil && x.Offset != nil { + return *x.Offset + } + return 0 +} + +func (x *PatternFlowIcmpEchoIdentifierMetricTag) GetLength() uint32 { + if x != nil && x.Length != nil { + return *x.Length + } + return 0 +} + +// ICMP identifier +type PatternFlowIcmpEchoIdentifier struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields + + // Description missing in models + // default = Choice.Enum.value + Choice *PatternFlowIcmpEchoIdentifier_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.PatternFlowIcmpEchoIdentifier_Choice_Enum,oneof" json:"choice,omitempty"` + // Description missing in models + // default = 0 + Value *uint32 `protobuf:"varint,2,opt,name=value,proto3,oneof" json:"value,omitempty"` + // Description missing in models + // default = [0] + Values []uint32 `protobuf:"varint,3,rep,packed,name=values,proto3" json:"values,omitempty"` + // Description missing in models + Increment *PatternFlowIcmpEchoIdentifierCounter `protobuf:"bytes,5,opt,name=increment,proto3" json:"increment,omitempty"` + // Description missing in models + Decrement *PatternFlowIcmpEchoIdentifierCounter `protobuf:"bytes,6,opt,name=decrement,proto3" json:"decrement,omitempty"` + // One or more metric tags can be used to enable tracking portion of or all bits in + // a corresponding header field for metrics per each applicable value. These would appear + // as tagged metrics in corresponding flow metrics. + MetricTags []*PatternFlowIcmpEchoIdentifierMetricTag `protobuf:"bytes,7,rep,name=metric_tags,json=metricTags,proto3" json:"metric_tags,omitempty"` } -func (x *BgpExtCommunity_Subtype) Reset() { - *x = BgpExtCommunity_Subtype{} +func (x *PatternFlowIcmpEchoIdentifier) Reset() { + *x = PatternFlowIcmpEchoIdentifier{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[794] + mi := &file_otg_proto_msgTypes[737] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *BgpExtCommunity_Subtype) String() string { +func (x *PatternFlowIcmpEchoIdentifier) String() string { return protoimpl.X.MessageStringOf(x) } -func (*BgpExtCommunity_Subtype) ProtoMessage() {} +func (*PatternFlowIcmpEchoIdentifier) ProtoMessage() {} -func (x *BgpExtCommunity_Subtype) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[794] +func (x *PatternFlowIcmpEchoIdentifier) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[737] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -82408,72 +81856,87 @@ func (x *BgpExtCommunity_Subtype) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use BgpExtCommunity_Subtype.ProtoReflect.Descriptor instead. -func (*BgpExtCommunity_Subtype) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{68, 1} +// Deprecated: Use PatternFlowIcmpEchoIdentifier.ProtoReflect.Descriptor instead. +func (*PatternFlowIcmpEchoIdentifier) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{737} } -type BgpAsPath_AsSetMode struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields +func (x *PatternFlowIcmpEchoIdentifier) GetChoice() PatternFlowIcmpEchoIdentifier_Choice_Enum { + if x != nil && x.Choice != nil { + return *x.Choice + } + return PatternFlowIcmpEchoIdentifier_Choice_unspecified } -func (x *BgpAsPath_AsSetMode) Reset() { - *x = BgpAsPath_AsSetMode{} - if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[795] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) +func (x *PatternFlowIcmpEchoIdentifier) GetValue() uint32 { + if x != nil && x.Value != nil { + return *x.Value } + return 0 } -func (x *BgpAsPath_AsSetMode) String() string { - return protoimpl.X.MessageStringOf(x) +func (x *PatternFlowIcmpEchoIdentifier) GetValues() []uint32 { + if x != nil { + return x.Values + } + return nil } -func (*BgpAsPath_AsSetMode) ProtoMessage() {} +func (x *PatternFlowIcmpEchoIdentifier) GetIncrement() *PatternFlowIcmpEchoIdentifierCounter { + if x != nil { + return x.Increment + } + return nil +} -func (x *BgpAsPath_AsSetMode) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[795] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms +func (x *PatternFlowIcmpEchoIdentifier) GetDecrement() *PatternFlowIcmpEchoIdentifierCounter { + if x != nil { + return x.Decrement } - return mi.MessageOf(x) + return nil } -// Deprecated: Use BgpAsPath_AsSetMode.ProtoReflect.Descriptor instead. -func (*BgpAsPath_AsSetMode) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{69, 0} +func (x *PatternFlowIcmpEchoIdentifier) GetMetricTags() []*PatternFlowIcmpEchoIdentifierMetricTag { + if x != nil { + return x.MetricTags + } + return nil } -type BgpAsPathSegment_Type struct { +// integer counter pattern +type PatternFlowIcmpEchoSequenceNumberCounter struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields + + // Description missing in models + // default = 0 + Start *uint32 `protobuf:"varint,1,opt,name=start,proto3,oneof" json:"start,omitempty"` + // Description missing in models + // default = 1 + Step *uint32 `protobuf:"varint,2,opt,name=step,proto3,oneof" json:"step,omitempty"` + // Description missing in models + // default = 1 + Count *uint32 `protobuf:"varint,3,opt,name=count,proto3,oneof" json:"count,omitempty"` } -func (x *BgpAsPathSegment_Type) Reset() { - *x = BgpAsPathSegment_Type{} +func (x *PatternFlowIcmpEchoSequenceNumberCounter) Reset() { + *x = PatternFlowIcmpEchoSequenceNumberCounter{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[796] + mi := &file_otg_proto_msgTypes[738] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *BgpAsPathSegment_Type) String() string { +func (x *PatternFlowIcmpEchoSequenceNumberCounter) String() string { return protoimpl.X.MessageStringOf(x) } -func (*BgpAsPathSegment_Type) ProtoMessage() {} +func (*PatternFlowIcmpEchoSequenceNumberCounter) ProtoMessage() {} -func (x *BgpAsPathSegment_Type) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[796] +func (x *PatternFlowIcmpEchoSequenceNumberCounter) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[738] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -82484,34 +81947,70 @@ func (x *BgpAsPathSegment_Type) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use BgpAsPathSegment_Type.ProtoReflect.Descriptor instead. -func (*BgpAsPathSegment_Type) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{70, 0} +// Deprecated: Use PatternFlowIcmpEchoSequenceNumberCounter.ProtoReflect.Descriptor instead. +func (*PatternFlowIcmpEchoSequenceNumberCounter) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{738} } -type BgpV4EvpnEvis_Choice struct { +func (x *PatternFlowIcmpEchoSequenceNumberCounter) GetStart() uint32 { + if x != nil && x.Start != nil { + return *x.Start + } + return 0 +} + +func (x *PatternFlowIcmpEchoSequenceNumberCounter) GetStep() uint32 { + if x != nil && x.Step != nil { + return *x.Step + } + return 0 +} + +func (x *PatternFlowIcmpEchoSequenceNumberCounter) GetCount() uint32 { + if x != nil && x.Count != nil { + return *x.Count + } + return 0 +} + +// Metric tag can be used to enable tracking portion of or all bits in a corresponding +// header field for metrics per each applicable value. These would appear as tagged +// metrics in corresponding flow metrics. +type PatternFlowIcmpEchoSequenceNumberMetricTag struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields + + // Name used to identify the metrics associated with the values applicable for configured + // offset and length inside corresponding header field + // required = true + Name *string `protobuf:"bytes,1,opt,name=name,proto3,oneof" json:"name,omitempty"` + // Offset in bits relative to start of corresponding header field + // default = 0 + Offset *uint32 `protobuf:"varint,2,opt,name=offset,proto3,oneof" json:"offset,omitempty"` + // Number of bits to track for metrics starting from configured offset of corresponding + // header field + // default = 16 + Length *uint32 `protobuf:"varint,3,opt,name=length,proto3,oneof" json:"length,omitempty"` } -func (x *BgpV4EvpnEvis_Choice) Reset() { - *x = BgpV4EvpnEvis_Choice{} +func (x *PatternFlowIcmpEchoSequenceNumberMetricTag) Reset() { + *x = PatternFlowIcmpEchoSequenceNumberMetricTag{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[797] + mi := &file_otg_proto_msgTypes[739] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *BgpV4EvpnEvis_Choice) String() string { +func (x *PatternFlowIcmpEchoSequenceNumberMetricTag) String() string { return protoimpl.X.MessageStringOf(x) } -func (*BgpV4EvpnEvis_Choice) ProtoMessage() {} +func (*PatternFlowIcmpEchoSequenceNumberMetricTag) ProtoMessage() {} -func (x *BgpV4EvpnEvis_Choice) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[797] +func (x *PatternFlowIcmpEchoSequenceNumberMetricTag) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[739] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -82522,72 +82021,74 @@ func (x *BgpV4EvpnEvis_Choice) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use BgpV4EvpnEvis_Choice.ProtoReflect.Descriptor instead. -func (*BgpV4EvpnEvis_Choice) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{71, 0} +// Deprecated: Use PatternFlowIcmpEchoSequenceNumberMetricTag.ProtoReflect.Descriptor instead. +func (*PatternFlowIcmpEchoSequenceNumberMetricTag) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{739} } -type BgpV4EviVxlan_ReplicationType struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields +func (x *PatternFlowIcmpEchoSequenceNumberMetricTag) GetName() string { + if x != nil && x.Name != nil { + return *x.Name + } + return "" } -func (x *BgpV4EviVxlan_ReplicationType) Reset() { - *x = BgpV4EviVxlan_ReplicationType{} - if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[798] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) +func (x *PatternFlowIcmpEchoSequenceNumberMetricTag) GetOffset() uint32 { + if x != nil && x.Offset != nil { + return *x.Offset } + return 0 } -func (x *BgpV4EviVxlan_ReplicationType) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*BgpV4EviVxlan_ReplicationType) ProtoMessage() {} - -func (x *BgpV4EviVxlan_ReplicationType) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[798] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms +func (x *PatternFlowIcmpEchoSequenceNumberMetricTag) GetLength() uint32 { + if x != nil && x.Length != nil { + return *x.Length } - return mi.MessageOf(x) -} - -// Deprecated: Use BgpV4EviVxlan_ReplicationType.ProtoReflect.Descriptor instead. -func (*BgpV4EviVxlan_ReplicationType) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{72, 0} + return 0 } -type BgpRouteDistinguisher_RdType struct { +// ICMP sequence number +type PatternFlowIcmpEchoSequenceNumber struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields + + // Description missing in models + // default = Choice.Enum.value + Choice *PatternFlowIcmpEchoSequenceNumber_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.PatternFlowIcmpEchoSequenceNumber_Choice_Enum,oneof" json:"choice,omitempty"` + // Description missing in models + // default = 0 + Value *uint32 `protobuf:"varint,2,opt,name=value,proto3,oneof" json:"value,omitempty"` + // Description missing in models + // default = [0] + Values []uint32 `protobuf:"varint,3,rep,packed,name=values,proto3" json:"values,omitempty"` + // Description missing in models + Increment *PatternFlowIcmpEchoSequenceNumberCounter `protobuf:"bytes,5,opt,name=increment,proto3" json:"increment,omitempty"` + // Description missing in models + Decrement *PatternFlowIcmpEchoSequenceNumberCounter `protobuf:"bytes,6,opt,name=decrement,proto3" json:"decrement,omitempty"` + // One or more metric tags can be used to enable tracking portion of or all bits in + // a corresponding header field for metrics per each applicable value. These would appear + // as tagged metrics in corresponding flow metrics. + MetricTags []*PatternFlowIcmpEchoSequenceNumberMetricTag `protobuf:"bytes,7,rep,name=metric_tags,json=metricTags,proto3" json:"metric_tags,omitempty"` } -func (x *BgpRouteDistinguisher_RdType) Reset() { - *x = BgpRouteDistinguisher_RdType{} +func (x *PatternFlowIcmpEchoSequenceNumber) Reset() { + *x = PatternFlowIcmpEchoSequenceNumber{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[799] + mi := &file_otg_proto_msgTypes[740] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *BgpRouteDistinguisher_RdType) String() string { +func (x *PatternFlowIcmpEchoSequenceNumber) String() string { return protoimpl.X.MessageStringOf(x) } -func (*BgpRouteDistinguisher_RdType) ProtoMessage() {} +func (*PatternFlowIcmpEchoSequenceNumber) ProtoMessage() {} -func (x *BgpRouteDistinguisher_RdType) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[799] +func (x *PatternFlowIcmpEchoSequenceNumber) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[740] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -82598,72 +82099,86 @@ func (x *BgpRouteDistinguisher_RdType) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use BgpRouteDistinguisher_RdType.ProtoReflect.Descriptor instead. -func (*BgpRouteDistinguisher_RdType) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{75, 0} +// Deprecated: Use PatternFlowIcmpEchoSequenceNumber.ProtoReflect.Descriptor instead. +func (*PatternFlowIcmpEchoSequenceNumber) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{740} } -type BgpRouteTarget_RtType struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields +func (x *PatternFlowIcmpEchoSequenceNumber) GetChoice() PatternFlowIcmpEchoSequenceNumber_Choice_Enum { + if x != nil && x.Choice != nil { + return *x.Choice + } + return PatternFlowIcmpEchoSequenceNumber_Choice_unspecified } -func (x *BgpRouteTarget_RtType) Reset() { - *x = BgpRouteTarget_RtType{} - if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[800] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) +func (x *PatternFlowIcmpEchoSequenceNumber) GetValue() uint32 { + if x != nil && x.Value != nil { + return *x.Value } + return 0 } -func (x *BgpRouteTarget_RtType) String() string { - return protoimpl.X.MessageStringOf(x) +func (x *PatternFlowIcmpEchoSequenceNumber) GetValues() []uint32 { + if x != nil { + return x.Values + } + return nil } -func (*BgpRouteTarget_RtType) ProtoMessage() {} +func (x *PatternFlowIcmpEchoSequenceNumber) GetIncrement() *PatternFlowIcmpEchoSequenceNumberCounter { + if x != nil { + return x.Increment + } + return nil +} -func (x *BgpRouteTarget_RtType) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[800] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms +func (x *PatternFlowIcmpEchoSequenceNumber) GetDecrement() *PatternFlowIcmpEchoSequenceNumberCounter { + if x != nil { + return x.Decrement } - return mi.MessageOf(x) + return nil } -// Deprecated: Use BgpRouteTarget_RtType.ProtoReflect.Descriptor instead. -func (*BgpRouteTarget_RtType) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{76, 0} +func (x *PatternFlowIcmpEchoSequenceNumber) GetMetricTags() []*PatternFlowIcmpEchoSequenceNumberMetricTag { + if x != nil { + return x.MetricTags + } + return nil } -type BgpV4RouteRange_NextHopMode struct { +// ICMP checksum +type PatternFlowIcmpCommonChecksum struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields + + // The type of checksum + // default = Choice.Enum.generated + Choice *PatternFlowIcmpCommonChecksum_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.PatternFlowIcmpCommonChecksum_Choice_Enum,oneof" json:"choice,omitempty"` + // A system generated checksum value + // default = Generated.Enum.good + Generated *PatternFlowIcmpCommonChecksum_Generated_Enum `protobuf:"varint,2,opt,name=generated,proto3,enum=otg.PatternFlowIcmpCommonChecksum_Generated_Enum,oneof" json:"generated,omitempty"` + // A custom checksum value + Custom *uint32 `protobuf:"varint,3,opt,name=custom,proto3,oneof" json:"custom,omitempty"` } -func (x *BgpV4RouteRange_NextHopMode) Reset() { - *x = BgpV4RouteRange_NextHopMode{} +func (x *PatternFlowIcmpCommonChecksum) Reset() { + *x = PatternFlowIcmpCommonChecksum{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[801] + mi := &file_otg_proto_msgTypes[741] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *BgpV4RouteRange_NextHopMode) String() string { +func (x *PatternFlowIcmpCommonChecksum) String() string { return protoimpl.X.MessageStringOf(x) } -func (*BgpV4RouteRange_NextHopMode) ProtoMessage() {} +func (*PatternFlowIcmpCommonChecksum) ProtoMessage() {} -func (x *BgpV4RouteRange_NextHopMode) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[801] +func (x *PatternFlowIcmpCommonChecksum) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[741] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -82674,72 +82189,66 @@ func (x *BgpV4RouteRange_NextHopMode) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use BgpV4RouteRange_NextHopMode.ProtoReflect.Descriptor instead. -func (*BgpV4RouteRange_NextHopMode) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{80, 0} -} - -type BgpV4RouteRange_NextHopAddressType struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields +// Deprecated: Use PatternFlowIcmpCommonChecksum.ProtoReflect.Descriptor instead. +func (*PatternFlowIcmpCommonChecksum) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{741} } -func (x *BgpV4RouteRange_NextHopAddressType) Reset() { - *x = BgpV4RouteRange_NextHopAddressType{} - if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[802] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) +func (x *PatternFlowIcmpCommonChecksum) GetChoice() PatternFlowIcmpCommonChecksum_Choice_Enum { + if x != nil && x.Choice != nil { + return *x.Choice } + return PatternFlowIcmpCommonChecksum_Choice_unspecified } -func (x *BgpV4RouteRange_NextHopAddressType) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*BgpV4RouteRange_NextHopAddressType) ProtoMessage() {} - -func (x *BgpV4RouteRange_NextHopAddressType) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[802] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms +func (x *PatternFlowIcmpCommonChecksum) GetGenerated() PatternFlowIcmpCommonChecksum_Generated_Enum { + if x != nil && x.Generated != nil { + return *x.Generated } - return mi.MessageOf(x) + return PatternFlowIcmpCommonChecksum_Generated_unspecified } -// Deprecated: Use BgpV4RouteRange_NextHopAddressType.ProtoReflect.Descriptor instead. -func (*BgpV4RouteRange_NextHopAddressType) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{80, 1} +func (x *PatternFlowIcmpCommonChecksum) GetCustom() uint32 { + if x != nil && x.Custom != nil { + return *x.Custom + } + return 0 } -type BgpExtendedCommunity_Choice struct { +// integer counter pattern +type PatternFlowIcmpNextFieldsIdentifierCounter struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields + + // Description missing in models + // default = 0 + Start *uint32 `protobuf:"varint,1,opt,name=start,proto3,oneof" json:"start,omitempty"` + // Description missing in models + // default = 1 + Step *uint32 `protobuf:"varint,2,opt,name=step,proto3,oneof" json:"step,omitempty"` + // Description missing in models + // default = 1 + Count *uint32 `protobuf:"varint,3,opt,name=count,proto3,oneof" json:"count,omitempty"` } -func (x *BgpExtendedCommunity_Choice) Reset() { - *x = BgpExtendedCommunity_Choice{} +func (x *PatternFlowIcmpNextFieldsIdentifierCounter) Reset() { + *x = PatternFlowIcmpNextFieldsIdentifierCounter{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[803] + mi := &file_otg_proto_msgTypes[742] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *BgpExtendedCommunity_Choice) String() string { +func (x *PatternFlowIcmpNextFieldsIdentifierCounter) String() string { return protoimpl.X.MessageStringOf(x) } -func (*BgpExtendedCommunity_Choice) ProtoMessage() {} +func (*PatternFlowIcmpNextFieldsIdentifierCounter) ProtoMessage() {} -func (x *BgpExtendedCommunity_Choice) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[803] +func (x *PatternFlowIcmpNextFieldsIdentifierCounter) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[742] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -82750,34 +82259,70 @@ func (x *BgpExtendedCommunity_Choice) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use BgpExtendedCommunity_Choice.ProtoReflect.Descriptor instead. -func (*BgpExtendedCommunity_Choice) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{82, 0} +// Deprecated: Use PatternFlowIcmpNextFieldsIdentifierCounter.ProtoReflect.Descriptor instead. +func (*PatternFlowIcmpNextFieldsIdentifierCounter) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{742} } -type BgpExtendedCommunityTransitive2OctetAsType_Choice struct { +func (x *PatternFlowIcmpNextFieldsIdentifierCounter) GetStart() uint32 { + if x != nil && x.Start != nil { + return *x.Start + } + return 0 +} + +func (x *PatternFlowIcmpNextFieldsIdentifierCounter) GetStep() uint32 { + if x != nil && x.Step != nil { + return *x.Step + } + return 0 +} + +func (x *PatternFlowIcmpNextFieldsIdentifierCounter) GetCount() uint32 { + if x != nil && x.Count != nil { + return *x.Count + } + return 0 +} + +// Metric tag can be used to enable tracking portion of or all bits in a corresponding +// header field for metrics per each applicable value. These would appear as tagged +// metrics in corresponding flow metrics. +type PatternFlowIcmpNextFieldsIdentifierMetricTag struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields + + // Name used to identify the metrics associated with the values applicable for configured + // offset and length inside corresponding header field + // required = true + Name *string `protobuf:"bytes,1,opt,name=name,proto3,oneof" json:"name,omitempty"` + // Offset in bits relative to start of corresponding header field + // default = 0 + Offset *uint32 `protobuf:"varint,2,opt,name=offset,proto3,oneof" json:"offset,omitempty"` + // Number of bits to track for metrics starting from configured offset of corresponding + // header field + // default = 16 + Length *uint32 `protobuf:"varint,3,opt,name=length,proto3,oneof" json:"length,omitempty"` } -func (x *BgpExtendedCommunityTransitive2OctetAsType_Choice) Reset() { - *x = BgpExtendedCommunityTransitive2OctetAsType_Choice{} +func (x *PatternFlowIcmpNextFieldsIdentifierMetricTag) Reset() { + *x = PatternFlowIcmpNextFieldsIdentifierMetricTag{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[804] + mi := &file_otg_proto_msgTypes[743] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *BgpExtendedCommunityTransitive2OctetAsType_Choice) String() string { +func (x *PatternFlowIcmpNextFieldsIdentifierMetricTag) String() string { return protoimpl.X.MessageStringOf(x) } -func (*BgpExtendedCommunityTransitive2OctetAsType_Choice) ProtoMessage() {} +func (*PatternFlowIcmpNextFieldsIdentifierMetricTag) ProtoMessage() {} -func (x *BgpExtendedCommunityTransitive2OctetAsType_Choice) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[804] +func (x *PatternFlowIcmpNextFieldsIdentifierMetricTag) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[743] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -82788,34 +82333,74 @@ func (x *BgpExtendedCommunityTransitive2OctetAsType_Choice) ProtoReflect() proto return mi.MessageOf(x) } -// Deprecated: Use BgpExtendedCommunityTransitive2OctetAsType_Choice.ProtoReflect.Descriptor instead. -func (*BgpExtendedCommunityTransitive2OctetAsType_Choice) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{85, 0} +// Deprecated: Use PatternFlowIcmpNextFieldsIdentifierMetricTag.ProtoReflect.Descriptor instead. +func (*PatternFlowIcmpNextFieldsIdentifierMetricTag) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{743} } -type BgpExtendedCommunityTransitiveIpv4AddressType_Choice struct { +func (x *PatternFlowIcmpNextFieldsIdentifierMetricTag) GetName() string { + if x != nil && x.Name != nil { + return *x.Name + } + return "" +} + +func (x *PatternFlowIcmpNextFieldsIdentifierMetricTag) GetOffset() uint32 { + if x != nil && x.Offset != nil { + return *x.Offset + } + return 0 +} + +func (x *PatternFlowIcmpNextFieldsIdentifierMetricTag) GetLength() uint32 { + if x != nil && x.Length != nil { + return *x.Length + } + return 0 +} + +// ICMP identifier +type PatternFlowIcmpNextFieldsIdentifier struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields + + // Description missing in models + // default = Choice.Enum.value + Choice *PatternFlowIcmpNextFieldsIdentifier_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.PatternFlowIcmpNextFieldsIdentifier_Choice_Enum,oneof" json:"choice,omitempty"` + // Description missing in models + // default = 0 + Value *uint32 `protobuf:"varint,2,opt,name=value,proto3,oneof" json:"value,omitempty"` + // Description missing in models + // default = [0] + Values []uint32 `protobuf:"varint,3,rep,packed,name=values,proto3" json:"values,omitempty"` + // Description missing in models + Increment *PatternFlowIcmpNextFieldsIdentifierCounter `protobuf:"bytes,5,opt,name=increment,proto3" json:"increment,omitempty"` + // Description missing in models + Decrement *PatternFlowIcmpNextFieldsIdentifierCounter `protobuf:"bytes,6,opt,name=decrement,proto3" json:"decrement,omitempty"` + // One or more metric tags can be used to enable tracking portion of or all bits in + // a corresponding header field for metrics per each applicable value. These would appear + // as tagged metrics in corresponding flow metrics. + MetricTags []*PatternFlowIcmpNextFieldsIdentifierMetricTag `protobuf:"bytes,7,rep,name=metric_tags,json=metricTags,proto3" json:"metric_tags,omitempty"` } -func (x *BgpExtendedCommunityTransitiveIpv4AddressType_Choice) Reset() { - *x = BgpExtendedCommunityTransitiveIpv4AddressType_Choice{} +func (x *PatternFlowIcmpNextFieldsIdentifier) Reset() { + *x = PatternFlowIcmpNextFieldsIdentifier{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[805] + mi := &file_otg_proto_msgTypes[744] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *BgpExtendedCommunityTransitiveIpv4AddressType_Choice) String() string { +func (x *PatternFlowIcmpNextFieldsIdentifier) String() string { return protoimpl.X.MessageStringOf(x) } -func (*BgpExtendedCommunityTransitiveIpv4AddressType_Choice) ProtoMessage() {} +func (*PatternFlowIcmpNextFieldsIdentifier) ProtoMessage() {} -func (x *BgpExtendedCommunityTransitiveIpv4AddressType_Choice) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[805] +func (x *PatternFlowIcmpNextFieldsIdentifier) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[744] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -82826,72 +82411,87 @@ func (x *BgpExtendedCommunityTransitiveIpv4AddressType_Choice) ProtoReflect() pr return mi.MessageOf(x) } -// Deprecated: Use BgpExtendedCommunityTransitiveIpv4AddressType_Choice.ProtoReflect.Descriptor instead. -func (*BgpExtendedCommunityTransitiveIpv4AddressType_Choice) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{88, 0} +// Deprecated: Use PatternFlowIcmpNextFieldsIdentifier.ProtoReflect.Descriptor instead. +func (*PatternFlowIcmpNextFieldsIdentifier) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{744} } -type BgpExtendedCommunityTransitive4OctetAsType_Choice struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields +func (x *PatternFlowIcmpNextFieldsIdentifier) GetChoice() PatternFlowIcmpNextFieldsIdentifier_Choice_Enum { + if x != nil && x.Choice != nil { + return *x.Choice + } + return PatternFlowIcmpNextFieldsIdentifier_Choice_unspecified } -func (x *BgpExtendedCommunityTransitive4OctetAsType_Choice) Reset() { - *x = BgpExtendedCommunityTransitive4OctetAsType_Choice{} - if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[806] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) +func (x *PatternFlowIcmpNextFieldsIdentifier) GetValue() uint32 { + if x != nil && x.Value != nil { + return *x.Value } + return 0 } -func (x *BgpExtendedCommunityTransitive4OctetAsType_Choice) String() string { - return protoimpl.X.MessageStringOf(x) +func (x *PatternFlowIcmpNextFieldsIdentifier) GetValues() []uint32 { + if x != nil { + return x.Values + } + return nil } -func (*BgpExtendedCommunityTransitive4OctetAsType_Choice) ProtoMessage() {} +func (x *PatternFlowIcmpNextFieldsIdentifier) GetIncrement() *PatternFlowIcmpNextFieldsIdentifierCounter { + if x != nil { + return x.Increment + } + return nil +} -func (x *BgpExtendedCommunityTransitive4OctetAsType_Choice) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[806] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms +func (x *PatternFlowIcmpNextFieldsIdentifier) GetDecrement() *PatternFlowIcmpNextFieldsIdentifierCounter { + if x != nil { + return x.Decrement } - return mi.MessageOf(x) + return nil } -// Deprecated: Use BgpExtendedCommunityTransitive4OctetAsType_Choice.ProtoReflect.Descriptor instead. -func (*BgpExtendedCommunityTransitive4OctetAsType_Choice) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{91, 0} +func (x *PatternFlowIcmpNextFieldsIdentifier) GetMetricTags() []*PatternFlowIcmpNextFieldsIdentifierMetricTag { + if x != nil { + return x.MetricTags + } + return nil } -type BgpExtendedCommunityTransitiveOpaqueType_Choice struct { +// integer counter pattern +type PatternFlowIcmpNextFieldsSequenceNumberCounter struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields + + // Description missing in models + // default = 0 + Start *uint32 `protobuf:"varint,1,opt,name=start,proto3,oneof" json:"start,omitempty"` + // Description missing in models + // default = 1 + Step *uint32 `protobuf:"varint,2,opt,name=step,proto3,oneof" json:"step,omitempty"` + // Description missing in models + // default = 1 + Count *uint32 `protobuf:"varint,3,opt,name=count,proto3,oneof" json:"count,omitempty"` } -func (x *BgpExtendedCommunityTransitiveOpaqueType_Choice) Reset() { - *x = BgpExtendedCommunityTransitiveOpaqueType_Choice{} +func (x *PatternFlowIcmpNextFieldsSequenceNumberCounter) Reset() { + *x = PatternFlowIcmpNextFieldsSequenceNumberCounter{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[807] + mi := &file_otg_proto_msgTypes[745] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *BgpExtendedCommunityTransitiveOpaqueType_Choice) String() string { +func (x *PatternFlowIcmpNextFieldsSequenceNumberCounter) String() string { return protoimpl.X.MessageStringOf(x) } -func (*BgpExtendedCommunityTransitiveOpaqueType_Choice) ProtoMessage() {} +func (*PatternFlowIcmpNextFieldsSequenceNumberCounter) ProtoMessage() {} -func (x *BgpExtendedCommunityTransitiveOpaqueType_Choice) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[807] +func (x *PatternFlowIcmpNextFieldsSequenceNumberCounter) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[745] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -82902,34 +82502,70 @@ func (x *BgpExtendedCommunityTransitiveOpaqueType_Choice) ProtoReflect() protore return mi.MessageOf(x) } -// Deprecated: Use BgpExtendedCommunityTransitiveOpaqueType_Choice.ProtoReflect.Descriptor instead. -func (*BgpExtendedCommunityTransitiveOpaqueType_Choice) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{94, 0} +// Deprecated: Use PatternFlowIcmpNextFieldsSequenceNumberCounter.ProtoReflect.Descriptor instead. +func (*PatternFlowIcmpNextFieldsSequenceNumberCounter) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{745} } -type BgpExtendedCommunityTransitiveEvpnType_Choice struct { +func (x *PatternFlowIcmpNextFieldsSequenceNumberCounter) GetStart() uint32 { + if x != nil && x.Start != nil { + return *x.Start + } + return 0 +} + +func (x *PatternFlowIcmpNextFieldsSequenceNumberCounter) GetStep() uint32 { + if x != nil && x.Step != nil { + return *x.Step + } + return 0 +} + +func (x *PatternFlowIcmpNextFieldsSequenceNumberCounter) GetCount() uint32 { + if x != nil && x.Count != nil { + return *x.Count + } + return 0 +} + +// Metric tag can be used to enable tracking portion of or all bits in a corresponding +// header field for metrics per each applicable value. These would appear as tagged +// metrics in corresponding flow metrics. +type PatternFlowIcmpNextFieldsSequenceNumberMetricTag struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields + + // Name used to identify the metrics associated with the values applicable for configured + // offset and length inside corresponding header field + // required = true + Name *string `protobuf:"bytes,1,opt,name=name,proto3,oneof" json:"name,omitempty"` + // Offset in bits relative to start of corresponding header field + // default = 0 + Offset *uint32 `protobuf:"varint,2,opt,name=offset,proto3,oneof" json:"offset,omitempty"` + // Number of bits to track for metrics starting from configured offset of corresponding + // header field + // default = 16 + Length *uint32 `protobuf:"varint,3,opt,name=length,proto3,oneof" json:"length,omitempty"` } -func (x *BgpExtendedCommunityTransitiveEvpnType_Choice) Reset() { - *x = BgpExtendedCommunityTransitiveEvpnType_Choice{} +func (x *PatternFlowIcmpNextFieldsSequenceNumberMetricTag) Reset() { + *x = PatternFlowIcmpNextFieldsSequenceNumberMetricTag{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[808] + mi := &file_otg_proto_msgTypes[746] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *BgpExtendedCommunityTransitiveEvpnType_Choice) String() string { +func (x *PatternFlowIcmpNextFieldsSequenceNumberMetricTag) String() string { return protoimpl.X.MessageStringOf(x) } -func (*BgpExtendedCommunityTransitiveEvpnType_Choice) ProtoMessage() {} +func (*PatternFlowIcmpNextFieldsSequenceNumberMetricTag) ProtoMessage() {} -func (x *BgpExtendedCommunityTransitiveEvpnType_Choice) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[808] +func (x *PatternFlowIcmpNextFieldsSequenceNumberMetricTag) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[746] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -82940,72 +82576,74 @@ func (x *BgpExtendedCommunityTransitiveEvpnType_Choice) ProtoReflect() protorefl return mi.MessageOf(x) } -// Deprecated: Use BgpExtendedCommunityTransitiveEvpnType_Choice.ProtoReflect.Descriptor instead. -func (*BgpExtendedCommunityTransitiveEvpnType_Choice) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{96, 0} +// Deprecated: Use PatternFlowIcmpNextFieldsSequenceNumberMetricTag.ProtoReflect.Descriptor instead. +func (*PatternFlowIcmpNextFieldsSequenceNumberMetricTag) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{746} } -type BgpExtendedCommunityNonTransitive2OctetAsType_Choice struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields +func (x *PatternFlowIcmpNextFieldsSequenceNumberMetricTag) GetName() string { + if x != nil && x.Name != nil { + return *x.Name + } + return "" } -func (x *BgpExtendedCommunityNonTransitive2OctetAsType_Choice) Reset() { - *x = BgpExtendedCommunityNonTransitive2OctetAsType_Choice{} - if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[809] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) +func (x *PatternFlowIcmpNextFieldsSequenceNumberMetricTag) GetOffset() uint32 { + if x != nil && x.Offset != nil { + return *x.Offset } + return 0 } -func (x *BgpExtendedCommunityNonTransitive2OctetAsType_Choice) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*BgpExtendedCommunityNonTransitive2OctetAsType_Choice) ProtoMessage() {} - -func (x *BgpExtendedCommunityNonTransitive2OctetAsType_Choice) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[809] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms +func (x *PatternFlowIcmpNextFieldsSequenceNumberMetricTag) GetLength() uint32 { + if x != nil && x.Length != nil { + return *x.Length } - return mi.MessageOf(x) -} - -// Deprecated: Use BgpExtendedCommunityNonTransitive2OctetAsType_Choice.ProtoReflect.Descriptor instead. -func (*BgpExtendedCommunityNonTransitive2OctetAsType_Choice) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{98, 0} + return 0 } -type BgpV6RouteRange_NextHopMode struct { +// ICMP sequence number +type PatternFlowIcmpNextFieldsSequenceNumber struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields + + // Description missing in models + // default = Choice.Enum.value + Choice *PatternFlowIcmpNextFieldsSequenceNumber_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.PatternFlowIcmpNextFieldsSequenceNumber_Choice_Enum,oneof" json:"choice,omitempty"` + // Description missing in models + // default = 0 + Value *uint32 `protobuf:"varint,2,opt,name=value,proto3,oneof" json:"value,omitempty"` + // Description missing in models + // default = [0] + Values []uint32 `protobuf:"varint,3,rep,packed,name=values,proto3" json:"values,omitempty"` + // Description missing in models + Increment *PatternFlowIcmpNextFieldsSequenceNumberCounter `protobuf:"bytes,5,opt,name=increment,proto3" json:"increment,omitempty"` + // Description missing in models + Decrement *PatternFlowIcmpNextFieldsSequenceNumberCounter `protobuf:"bytes,6,opt,name=decrement,proto3" json:"decrement,omitempty"` + // One or more metric tags can be used to enable tracking portion of or all bits in + // a corresponding header field for metrics per each applicable value. These would appear + // as tagged metrics in corresponding flow metrics. + MetricTags []*PatternFlowIcmpNextFieldsSequenceNumberMetricTag `protobuf:"bytes,7,rep,name=metric_tags,json=metricTags,proto3" json:"metric_tags,omitempty"` } -func (x *BgpV6RouteRange_NextHopMode) Reset() { - *x = BgpV6RouteRange_NextHopMode{} +func (x *PatternFlowIcmpNextFieldsSequenceNumber) Reset() { + *x = PatternFlowIcmpNextFieldsSequenceNumber{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[810] + mi := &file_otg_proto_msgTypes[747] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *BgpV6RouteRange_NextHopMode) String() string { +func (x *PatternFlowIcmpNextFieldsSequenceNumber) String() string { return protoimpl.X.MessageStringOf(x) } -func (*BgpV6RouteRange_NextHopMode) ProtoMessage() {} +func (*PatternFlowIcmpNextFieldsSequenceNumber) ProtoMessage() {} -func (x *BgpV6RouteRange_NextHopMode) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[810] +func (x *PatternFlowIcmpNextFieldsSequenceNumber) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[747] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -83016,72 +82654,87 @@ func (x *BgpV6RouteRange_NextHopMode) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use BgpV6RouteRange_NextHopMode.ProtoReflect.Descriptor instead. -func (*BgpV6RouteRange_NextHopMode) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{100, 0} +// Deprecated: Use PatternFlowIcmpNextFieldsSequenceNumber.ProtoReflect.Descriptor instead. +func (*PatternFlowIcmpNextFieldsSequenceNumber) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{747} } -type BgpV6RouteRange_NextHopAddressType struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields +func (x *PatternFlowIcmpNextFieldsSequenceNumber) GetChoice() PatternFlowIcmpNextFieldsSequenceNumber_Choice_Enum { + if x != nil && x.Choice != nil { + return *x.Choice + } + return PatternFlowIcmpNextFieldsSequenceNumber_Choice_unspecified } -func (x *BgpV6RouteRange_NextHopAddressType) Reset() { - *x = BgpV6RouteRange_NextHopAddressType{} - if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[811] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) +func (x *PatternFlowIcmpNextFieldsSequenceNumber) GetValue() uint32 { + if x != nil && x.Value != nil { + return *x.Value } + return 0 } -func (x *BgpV6RouteRange_NextHopAddressType) String() string { - return protoimpl.X.MessageStringOf(x) +func (x *PatternFlowIcmpNextFieldsSequenceNumber) GetValues() []uint32 { + if x != nil { + return x.Values + } + return nil } -func (*BgpV6RouteRange_NextHopAddressType) ProtoMessage() {} +func (x *PatternFlowIcmpNextFieldsSequenceNumber) GetIncrement() *PatternFlowIcmpNextFieldsSequenceNumberCounter { + if x != nil { + return x.Increment + } + return nil +} -func (x *BgpV6RouteRange_NextHopAddressType) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[811] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms +func (x *PatternFlowIcmpNextFieldsSequenceNumber) GetDecrement() *PatternFlowIcmpNextFieldsSequenceNumberCounter { + if x != nil { + return x.Decrement } - return mi.MessageOf(x) + return nil } -// Deprecated: Use BgpV6RouteRange_NextHopAddressType.ProtoReflect.Descriptor instead. -func (*BgpV6RouteRange_NextHopAddressType) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{100, 1} +func (x *PatternFlowIcmpNextFieldsSequenceNumber) GetMetricTags() []*PatternFlowIcmpNextFieldsSequenceNumberMetricTag { + if x != nil { + return x.MetricTags + } + return nil } -type BgpSrteV4Policy_NextHopMode struct { +// integer counter pattern +type PatternFlowIcmpv6EchoTypeCounter struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields + + // Description missing in models + // default = 128 + Start *uint32 `protobuf:"varint,1,opt,name=start,proto3,oneof" json:"start,omitempty"` + // Description missing in models + // default = 1 + Step *uint32 `protobuf:"varint,2,opt,name=step,proto3,oneof" json:"step,omitempty"` + // Description missing in models + // default = 1 + Count *uint32 `protobuf:"varint,3,opt,name=count,proto3,oneof" json:"count,omitempty"` } -func (x *BgpSrteV4Policy_NextHopMode) Reset() { - *x = BgpSrteV4Policy_NextHopMode{} +func (x *PatternFlowIcmpv6EchoTypeCounter) Reset() { + *x = PatternFlowIcmpv6EchoTypeCounter{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[812] + mi := &file_otg_proto_msgTypes[748] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *BgpSrteV4Policy_NextHopMode) String() string { +func (x *PatternFlowIcmpv6EchoTypeCounter) String() string { return protoimpl.X.MessageStringOf(x) } -func (*BgpSrteV4Policy_NextHopMode) ProtoMessage() {} +func (*PatternFlowIcmpv6EchoTypeCounter) ProtoMessage() {} -func (x *BgpSrteV4Policy_NextHopMode) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[812] +func (x *PatternFlowIcmpv6EchoTypeCounter) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[748] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -83092,72 +82745,70 @@ func (x *BgpSrteV4Policy_NextHopMode) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use BgpSrteV4Policy_NextHopMode.ProtoReflect.Descriptor instead. -func (*BgpSrteV4Policy_NextHopMode) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{101, 0} -} - -type BgpSrteV4Policy_NextHopAddressType struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields +// Deprecated: Use PatternFlowIcmpv6EchoTypeCounter.ProtoReflect.Descriptor instead. +func (*PatternFlowIcmpv6EchoTypeCounter) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{748} } -func (x *BgpSrteV4Policy_NextHopAddressType) Reset() { - *x = BgpSrteV4Policy_NextHopAddressType{} - if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[813] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) +func (x *PatternFlowIcmpv6EchoTypeCounter) GetStart() uint32 { + if x != nil && x.Start != nil { + return *x.Start } + return 0 } -func (x *BgpSrteV4Policy_NextHopAddressType) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*BgpSrteV4Policy_NextHopAddressType) ProtoMessage() {} - -func (x *BgpSrteV4Policy_NextHopAddressType) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[813] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms +func (x *PatternFlowIcmpv6EchoTypeCounter) GetStep() uint32 { + if x != nil && x.Step != nil { + return *x.Step } - return mi.MessageOf(x) + return 0 } -// Deprecated: Use BgpSrteV4Policy_NextHopAddressType.ProtoReflect.Descriptor instead. -func (*BgpSrteV4Policy_NextHopAddressType) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{101, 1} +func (x *PatternFlowIcmpv6EchoTypeCounter) GetCount() uint32 { + if x != nil && x.Count != nil { + return *x.Count + } + return 0 } -type BgpSrteRemoteEndpointSubTlv_AddressFamily struct { +// Metric tag can be used to enable tracking portion of or all bits in a corresponding +// header field for metrics per each applicable value. These would appear as tagged +// metrics in corresponding flow metrics. +type PatternFlowIcmpv6EchoTypeMetricTag struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields + + // Name used to identify the metrics associated with the values applicable for configured + // offset and length inside corresponding header field + // required = true + Name *string `protobuf:"bytes,1,opt,name=name,proto3,oneof" json:"name,omitempty"` + // Offset in bits relative to start of corresponding header field + // default = 0 + Offset *uint32 `protobuf:"varint,2,opt,name=offset,proto3,oneof" json:"offset,omitempty"` + // Number of bits to track for metrics starting from configured offset of corresponding + // header field + // default = 8 + Length *uint32 `protobuf:"varint,3,opt,name=length,proto3,oneof" json:"length,omitempty"` } -func (x *BgpSrteRemoteEndpointSubTlv_AddressFamily) Reset() { - *x = BgpSrteRemoteEndpointSubTlv_AddressFamily{} +func (x *PatternFlowIcmpv6EchoTypeMetricTag) Reset() { + *x = PatternFlowIcmpv6EchoTypeMetricTag{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[814] + mi := &file_otg_proto_msgTypes[749] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *BgpSrteRemoteEndpointSubTlv_AddressFamily) String() string { +func (x *PatternFlowIcmpv6EchoTypeMetricTag) String() string { return protoimpl.X.MessageStringOf(x) } -func (*BgpSrteRemoteEndpointSubTlv_AddressFamily) ProtoMessage() {} +func (*PatternFlowIcmpv6EchoTypeMetricTag) ProtoMessage() {} -func (x *BgpSrteRemoteEndpointSubTlv_AddressFamily) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[814] +func (x *PatternFlowIcmpv6EchoTypeMetricTag) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[749] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -83168,34 +82819,74 @@ func (x *BgpSrteRemoteEndpointSubTlv_AddressFamily) ProtoReflect() protoreflect. return mi.MessageOf(x) } -// Deprecated: Use BgpSrteRemoteEndpointSubTlv_AddressFamily.ProtoReflect.Descriptor instead. -func (*BgpSrteRemoteEndpointSubTlv_AddressFamily) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{103, 0} +// Deprecated: Use PatternFlowIcmpv6EchoTypeMetricTag.ProtoReflect.Descriptor instead. +func (*PatternFlowIcmpv6EchoTypeMetricTag) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{749} } -type BgpSrteBindingSubTlv_BindingSidType struct { +func (x *PatternFlowIcmpv6EchoTypeMetricTag) GetName() string { + if x != nil && x.Name != nil { + return *x.Name + } + return "" +} + +func (x *PatternFlowIcmpv6EchoTypeMetricTag) GetOffset() uint32 { + if x != nil && x.Offset != nil { + return *x.Offset + } + return 0 +} + +func (x *PatternFlowIcmpv6EchoTypeMetricTag) GetLength() uint32 { + if x != nil && x.Length != nil { + return *x.Length + } + return 0 +} + +// ICMPv6 echo type +type PatternFlowIcmpv6EchoType struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields + + // Description missing in models + // default = Choice.Enum.value + Choice *PatternFlowIcmpv6EchoType_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.PatternFlowIcmpv6EchoType_Choice_Enum,oneof" json:"choice,omitempty"` + // Description missing in models + // default = 128 + Value *uint32 `protobuf:"varint,2,opt,name=value,proto3,oneof" json:"value,omitempty"` + // Description missing in models + // default = [128] + Values []uint32 `protobuf:"varint,3,rep,packed,name=values,proto3" json:"values,omitempty"` + // Description missing in models + Increment *PatternFlowIcmpv6EchoTypeCounter `protobuf:"bytes,5,opt,name=increment,proto3" json:"increment,omitempty"` + // Description missing in models + Decrement *PatternFlowIcmpv6EchoTypeCounter `protobuf:"bytes,6,opt,name=decrement,proto3" json:"decrement,omitempty"` + // One or more metric tags can be used to enable tracking portion of or all bits in + // a corresponding header field for metrics per each applicable value. These would appear + // as tagged metrics in corresponding flow metrics. + MetricTags []*PatternFlowIcmpv6EchoTypeMetricTag `protobuf:"bytes,7,rep,name=metric_tags,json=metricTags,proto3" json:"metric_tags,omitempty"` } -func (x *BgpSrteBindingSubTlv_BindingSidType) Reset() { - *x = BgpSrteBindingSubTlv_BindingSidType{} +func (x *PatternFlowIcmpv6EchoType) Reset() { + *x = PatternFlowIcmpv6EchoType{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[815] + mi := &file_otg_proto_msgTypes[750] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *BgpSrteBindingSubTlv_BindingSidType) String() string { +func (x *PatternFlowIcmpv6EchoType) String() string { return protoimpl.X.MessageStringOf(x) } -func (*BgpSrteBindingSubTlv_BindingSidType) ProtoMessage() {} +func (*PatternFlowIcmpv6EchoType) ProtoMessage() {} -func (x *BgpSrteBindingSubTlv_BindingSidType) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[815] +func (x *PatternFlowIcmpv6EchoType) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[750] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -83206,72 +82897,87 @@ func (x *BgpSrteBindingSubTlv_BindingSidType) ProtoReflect() protoreflect.Messag return mi.MessageOf(x) } -// Deprecated: Use BgpSrteBindingSubTlv_BindingSidType.ProtoReflect.Descriptor instead. -func (*BgpSrteBindingSubTlv_BindingSidType) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{105, 0} +// Deprecated: Use PatternFlowIcmpv6EchoType.ProtoReflect.Descriptor instead. +func (*PatternFlowIcmpv6EchoType) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{750} } -type BgpSrteExplicitNullLabelPolicySubTlv_ExplicitNullLabelPolicy struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields +func (x *PatternFlowIcmpv6EchoType) GetChoice() PatternFlowIcmpv6EchoType_Choice_Enum { + if x != nil && x.Choice != nil { + return *x.Choice + } + return PatternFlowIcmpv6EchoType_Choice_unspecified } -func (x *BgpSrteExplicitNullLabelPolicySubTlv_ExplicitNullLabelPolicy) Reset() { - *x = BgpSrteExplicitNullLabelPolicySubTlv_ExplicitNullLabelPolicy{} - if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[816] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) +func (x *PatternFlowIcmpv6EchoType) GetValue() uint32 { + if x != nil && x.Value != nil { + return *x.Value } + return 0 } -func (x *BgpSrteExplicitNullLabelPolicySubTlv_ExplicitNullLabelPolicy) String() string { - return protoimpl.X.MessageStringOf(x) +func (x *PatternFlowIcmpv6EchoType) GetValues() []uint32 { + if x != nil { + return x.Values + } + return nil } -func (*BgpSrteExplicitNullLabelPolicySubTlv_ExplicitNullLabelPolicy) ProtoMessage() {} +func (x *PatternFlowIcmpv6EchoType) GetIncrement() *PatternFlowIcmpv6EchoTypeCounter { + if x != nil { + return x.Increment + } + return nil +} -func (x *BgpSrteExplicitNullLabelPolicySubTlv_ExplicitNullLabelPolicy) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[816] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms +func (x *PatternFlowIcmpv6EchoType) GetDecrement() *PatternFlowIcmpv6EchoTypeCounter { + if x != nil { + return x.Decrement } - return mi.MessageOf(x) + return nil } -// Deprecated: Use BgpSrteExplicitNullLabelPolicySubTlv_ExplicitNullLabelPolicy.ProtoReflect.Descriptor instead. -func (*BgpSrteExplicitNullLabelPolicySubTlv_ExplicitNullLabelPolicy) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{109, 0} +func (x *PatternFlowIcmpv6EchoType) GetMetricTags() []*PatternFlowIcmpv6EchoTypeMetricTag { + if x != nil { + return x.MetricTags + } + return nil } -type BgpSrteSegment_SegmentType struct { +// integer counter pattern +type PatternFlowIcmpv6EchoCodeCounter struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields + + // Description missing in models + // default = 0 + Start *uint32 `protobuf:"varint,1,opt,name=start,proto3,oneof" json:"start,omitempty"` + // Description missing in models + // default = 1 + Step *uint32 `protobuf:"varint,2,opt,name=step,proto3,oneof" json:"step,omitempty"` + // Description missing in models + // default = 1 + Count *uint32 `protobuf:"varint,3,opt,name=count,proto3,oneof" json:"count,omitempty"` } -func (x *BgpSrteSegment_SegmentType) Reset() { - *x = BgpSrteSegment_SegmentType{} +func (x *PatternFlowIcmpv6EchoCodeCounter) Reset() { + *x = PatternFlowIcmpv6EchoCodeCounter{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[817] + mi := &file_otg_proto_msgTypes[751] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *BgpSrteSegment_SegmentType) String() string { +func (x *PatternFlowIcmpv6EchoCodeCounter) String() string { return protoimpl.X.MessageStringOf(x) } -func (*BgpSrteSegment_SegmentType) ProtoMessage() {} +func (*PatternFlowIcmpv6EchoCodeCounter) ProtoMessage() {} -func (x *BgpSrteSegment_SegmentType) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[817] +func (x *PatternFlowIcmpv6EchoCodeCounter) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[751] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -83282,34 +82988,70 @@ func (x *BgpSrteSegment_SegmentType) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use BgpSrteSegment_SegmentType.ProtoReflect.Descriptor instead. -func (*BgpSrteSegment_SegmentType) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{111, 0} +// Deprecated: Use PatternFlowIcmpv6EchoCodeCounter.ProtoReflect.Descriptor instead. +func (*PatternFlowIcmpv6EchoCodeCounter) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{751} } -type BgpSrteV6Policy_NextHopMode struct { +func (x *PatternFlowIcmpv6EchoCodeCounter) GetStart() uint32 { + if x != nil && x.Start != nil { + return *x.Start + } + return 0 +} + +func (x *PatternFlowIcmpv6EchoCodeCounter) GetStep() uint32 { + if x != nil && x.Step != nil { + return *x.Step + } + return 0 +} + +func (x *PatternFlowIcmpv6EchoCodeCounter) GetCount() uint32 { + if x != nil && x.Count != nil { + return *x.Count + } + return 0 +} + +// Metric tag can be used to enable tracking portion of or all bits in a corresponding +// header field for metrics per each applicable value. These would appear as tagged +// metrics in corresponding flow metrics. +type PatternFlowIcmpv6EchoCodeMetricTag struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields + + // Name used to identify the metrics associated with the values applicable for configured + // offset and length inside corresponding header field + // required = true + Name *string `protobuf:"bytes,1,opt,name=name,proto3,oneof" json:"name,omitempty"` + // Offset in bits relative to start of corresponding header field + // default = 0 + Offset *uint32 `protobuf:"varint,2,opt,name=offset,proto3,oneof" json:"offset,omitempty"` + // Number of bits to track for metrics starting from configured offset of corresponding + // header field + // default = 8 + Length *uint32 `protobuf:"varint,3,opt,name=length,proto3,oneof" json:"length,omitempty"` } -func (x *BgpSrteV6Policy_NextHopMode) Reset() { - *x = BgpSrteV6Policy_NextHopMode{} +func (x *PatternFlowIcmpv6EchoCodeMetricTag) Reset() { + *x = PatternFlowIcmpv6EchoCodeMetricTag{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[818] + mi := &file_otg_proto_msgTypes[752] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *BgpSrteV6Policy_NextHopMode) String() string { +func (x *PatternFlowIcmpv6EchoCodeMetricTag) String() string { return protoimpl.X.MessageStringOf(x) } -func (*BgpSrteV6Policy_NextHopMode) ProtoMessage() {} +func (*PatternFlowIcmpv6EchoCodeMetricTag) ProtoMessage() {} -func (x *BgpSrteV6Policy_NextHopMode) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[818] +func (x *PatternFlowIcmpv6EchoCodeMetricTag) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[752] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -83320,34 +83062,74 @@ func (x *BgpSrteV6Policy_NextHopMode) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use BgpSrteV6Policy_NextHopMode.ProtoReflect.Descriptor instead. -func (*BgpSrteV6Policy_NextHopMode) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{125, 0} +// Deprecated: Use PatternFlowIcmpv6EchoCodeMetricTag.ProtoReflect.Descriptor instead. +func (*PatternFlowIcmpv6EchoCodeMetricTag) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{752} } -type BgpSrteV6Policy_NextHopAddressType struct { +func (x *PatternFlowIcmpv6EchoCodeMetricTag) GetName() string { + if x != nil && x.Name != nil { + return *x.Name + } + return "" +} + +func (x *PatternFlowIcmpv6EchoCodeMetricTag) GetOffset() uint32 { + if x != nil && x.Offset != nil { + return *x.Offset + } + return 0 +} + +func (x *PatternFlowIcmpv6EchoCodeMetricTag) GetLength() uint32 { + if x != nil && x.Length != nil { + return *x.Length + } + return 0 +} + +// ICMPv6 echo sub type +type PatternFlowIcmpv6EchoCode struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields + + // Description missing in models + // default = Choice.Enum.value + Choice *PatternFlowIcmpv6EchoCode_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.PatternFlowIcmpv6EchoCode_Choice_Enum,oneof" json:"choice,omitempty"` + // Description missing in models + // default = 0 + Value *uint32 `protobuf:"varint,2,opt,name=value,proto3,oneof" json:"value,omitempty"` + // Description missing in models + // default = [0] + Values []uint32 `protobuf:"varint,3,rep,packed,name=values,proto3" json:"values,omitempty"` + // Description missing in models + Increment *PatternFlowIcmpv6EchoCodeCounter `protobuf:"bytes,5,opt,name=increment,proto3" json:"increment,omitempty"` + // Description missing in models + Decrement *PatternFlowIcmpv6EchoCodeCounter `protobuf:"bytes,6,opt,name=decrement,proto3" json:"decrement,omitempty"` + // One or more metric tags can be used to enable tracking portion of or all bits in + // a corresponding header field for metrics per each applicable value. These would appear + // as tagged metrics in corresponding flow metrics. + MetricTags []*PatternFlowIcmpv6EchoCodeMetricTag `protobuf:"bytes,7,rep,name=metric_tags,json=metricTags,proto3" json:"metric_tags,omitempty"` } -func (x *BgpSrteV6Policy_NextHopAddressType) Reset() { - *x = BgpSrteV6Policy_NextHopAddressType{} +func (x *PatternFlowIcmpv6EchoCode) Reset() { + *x = PatternFlowIcmpv6EchoCode{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[819] + mi := &file_otg_proto_msgTypes[753] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *BgpSrteV6Policy_NextHopAddressType) String() string { +func (x *PatternFlowIcmpv6EchoCode) String() string { return protoimpl.X.MessageStringOf(x) } -func (*BgpSrteV6Policy_NextHopAddressType) ProtoMessage() {} +func (*PatternFlowIcmpv6EchoCode) ProtoMessage() {} -func (x *BgpSrteV6Policy_NextHopAddressType) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[819] +func (x *PatternFlowIcmpv6EchoCode) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[753] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -83358,72 +83140,87 @@ func (x *BgpSrteV6Policy_NextHopAddressType) ProtoReflect() protoreflect.Message return mi.MessageOf(x) } -// Deprecated: Use BgpSrteV6Policy_NextHopAddressType.ProtoReflect.Descriptor instead. -func (*BgpSrteV6Policy_NextHopAddressType) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{125, 1} +// Deprecated: Use PatternFlowIcmpv6EchoCode.ProtoReflect.Descriptor instead. +func (*PatternFlowIcmpv6EchoCode) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{753} } -type BgpV6Peer_AsType struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields -} +func (x *PatternFlowIcmpv6EchoCode) GetChoice() PatternFlowIcmpv6EchoCode_Choice_Enum { + if x != nil && x.Choice != nil { + return *x.Choice + } + return PatternFlowIcmpv6EchoCode_Choice_unspecified +} -func (x *BgpV6Peer_AsType) Reset() { - *x = BgpV6Peer_AsType{} - if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[820] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) +func (x *PatternFlowIcmpv6EchoCode) GetValue() uint32 { + if x != nil && x.Value != nil { + return *x.Value } + return 0 } -func (x *BgpV6Peer_AsType) String() string { - return protoimpl.X.MessageStringOf(x) +func (x *PatternFlowIcmpv6EchoCode) GetValues() []uint32 { + if x != nil { + return x.Values + } + return nil } -func (*BgpV6Peer_AsType) ProtoMessage() {} +func (x *PatternFlowIcmpv6EchoCode) GetIncrement() *PatternFlowIcmpv6EchoCodeCounter { + if x != nil { + return x.Increment + } + return nil +} -func (x *BgpV6Peer_AsType) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[820] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms +func (x *PatternFlowIcmpv6EchoCode) GetDecrement() *PatternFlowIcmpv6EchoCodeCounter { + if x != nil { + return x.Decrement } - return mi.MessageOf(x) + return nil } -// Deprecated: Use BgpV6Peer_AsType.ProtoReflect.Descriptor instead. -func (*BgpV6Peer_AsType) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{128, 0} +func (x *PatternFlowIcmpv6EchoCode) GetMetricTags() []*PatternFlowIcmpv6EchoCodeMetricTag { + if x != nil { + return x.MetricTags + } + return nil } -type BgpV6Peer_AsNumberWidth struct { +// integer counter pattern +type PatternFlowIcmpv6EchoIdentifierCounter struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields + + // Description missing in models + // default = 0 + Start *uint32 `protobuf:"varint,1,opt,name=start,proto3,oneof" json:"start,omitempty"` + // Description missing in models + // default = 1 + Step *uint32 `protobuf:"varint,2,opt,name=step,proto3,oneof" json:"step,omitempty"` + // Description missing in models + // default = 1 + Count *uint32 `protobuf:"varint,3,opt,name=count,proto3,oneof" json:"count,omitempty"` } -func (x *BgpV6Peer_AsNumberWidth) Reset() { - *x = BgpV6Peer_AsNumberWidth{} +func (x *PatternFlowIcmpv6EchoIdentifierCounter) Reset() { + *x = PatternFlowIcmpv6EchoIdentifierCounter{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[821] + mi := &file_otg_proto_msgTypes[754] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *BgpV6Peer_AsNumberWidth) String() string { +func (x *PatternFlowIcmpv6EchoIdentifierCounter) String() string { return protoimpl.X.MessageStringOf(x) } -func (*BgpV6Peer_AsNumberWidth) ProtoMessage() {} +func (*PatternFlowIcmpv6EchoIdentifierCounter) ProtoMessage() {} -func (x *BgpV6Peer_AsNumberWidth) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[821] +func (x *PatternFlowIcmpv6EchoIdentifierCounter) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[754] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -83434,34 +83231,70 @@ func (x *BgpV6Peer_AsNumberWidth) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use BgpV6Peer_AsNumberWidth.ProtoReflect.Descriptor instead. -func (*BgpV6Peer_AsNumberWidth) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{128, 1} +// Deprecated: Use PatternFlowIcmpv6EchoIdentifierCounter.ProtoReflect.Descriptor instead. +func (*PatternFlowIcmpv6EchoIdentifierCounter) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{754} } -type BgpV6EthernetSegment_ActiveMode struct { +func (x *PatternFlowIcmpv6EchoIdentifierCounter) GetStart() uint32 { + if x != nil && x.Start != nil { + return *x.Start + } + return 0 +} + +func (x *PatternFlowIcmpv6EchoIdentifierCounter) GetStep() uint32 { + if x != nil && x.Step != nil { + return *x.Step + } + return 0 +} + +func (x *PatternFlowIcmpv6EchoIdentifierCounter) GetCount() uint32 { + if x != nil && x.Count != nil { + return *x.Count + } + return 0 +} + +// Metric tag can be used to enable tracking portion of or all bits in a corresponding +// header field for metrics per each applicable value. These would appear as tagged +// metrics in corresponding flow metrics. +type PatternFlowIcmpv6EchoIdentifierMetricTag struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields + + // Name used to identify the metrics associated with the values applicable for configured + // offset and length inside corresponding header field + // required = true + Name *string `protobuf:"bytes,1,opt,name=name,proto3,oneof" json:"name,omitempty"` + // Offset in bits relative to start of corresponding header field + // default = 0 + Offset *uint32 `protobuf:"varint,2,opt,name=offset,proto3,oneof" json:"offset,omitempty"` + // Number of bits to track for metrics starting from configured offset of corresponding + // header field + // default = 16 + Length *uint32 `protobuf:"varint,3,opt,name=length,proto3,oneof" json:"length,omitempty"` } -func (x *BgpV6EthernetSegment_ActiveMode) Reset() { - *x = BgpV6EthernetSegment_ActiveMode{} +func (x *PatternFlowIcmpv6EchoIdentifierMetricTag) Reset() { + *x = PatternFlowIcmpv6EchoIdentifierMetricTag{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[822] + mi := &file_otg_proto_msgTypes[755] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *BgpV6EthernetSegment_ActiveMode) String() string { +func (x *PatternFlowIcmpv6EchoIdentifierMetricTag) String() string { return protoimpl.X.MessageStringOf(x) } -func (*BgpV6EthernetSegment_ActiveMode) ProtoMessage() {} +func (*PatternFlowIcmpv6EchoIdentifierMetricTag) ProtoMessage() {} -func (x *BgpV6EthernetSegment_ActiveMode) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[822] +func (x *PatternFlowIcmpv6EchoIdentifierMetricTag) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[755] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -83472,34 +83305,74 @@ func (x *BgpV6EthernetSegment_ActiveMode) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use BgpV6EthernetSegment_ActiveMode.ProtoReflect.Descriptor instead. -func (*BgpV6EthernetSegment_ActiveMode) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{131, 0} +// Deprecated: Use PatternFlowIcmpv6EchoIdentifierMetricTag.ProtoReflect.Descriptor instead. +func (*PatternFlowIcmpv6EchoIdentifierMetricTag) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{755} } -type BgpV6EvpnEvis_Choice struct { +func (x *PatternFlowIcmpv6EchoIdentifierMetricTag) GetName() string { + if x != nil && x.Name != nil { + return *x.Name + } + return "" +} + +func (x *PatternFlowIcmpv6EchoIdentifierMetricTag) GetOffset() uint32 { + if x != nil && x.Offset != nil { + return *x.Offset + } + return 0 +} + +func (x *PatternFlowIcmpv6EchoIdentifierMetricTag) GetLength() uint32 { + if x != nil && x.Length != nil { + return *x.Length + } + return 0 +} + +// ICMPv6 echo identifier +type PatternFlowIcmpv6EchoIdentifier struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields + + // Description missing in models + // default = Choice.Enum.value + Choice *PatternFlowIcmpv6EchoIdentifier_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.PatternFlowIcmpv6EchoIdentifier_Choice_Enum,oneof" json:"choice,omitempty"` + // Description missing in models + // default = 0 + Value *uint32 `protobuf:"varint,2,opt,name=value,proto3,oneof" json:"value,omitempty"` + // Description missing in models + // default = [0] + Values []uint32 `protobuf:"varint,3,rep,packed,name=values,proto3" json:"values,omitempty"` + // Description missing in models + Increment *PatternFlowIcmpv6EchoIdentifierCounter `protobuf:"bytes,5,opt,name=increment,proto3" json:"increment,omitempty"` + // Description missing in models + Decrement *PatternFlowIcmpv6EchoIdentifierCounter `protobuf:"bytes,6,opt,name=decrement,proto3" json:"decrement,omitempty"` + // One or more metric tags can be used to enable tracking portion of or all bits in + // a corresponding header field for metrics per each applicable value. These would appear + // as tagged metrics in corresponding flow metrics. + MetricTags []*PatternFlowIcmpv6EchoIdentifierMetricTag `protobuf:"bytes,7,rep,name=metric_tags,json=metricTags,proto3" json:"metric_tags,omitempty"` } -func (x *BgpV6EvpnEvis_Choice) Reset() { - *x = BgpV6EvpnEvis_Choice{} +func (x *PatternFlowIcmpv6EchoIdentifier) Reset() { + *x = PatternFlowIcmpv6EchoIdentifier{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[823] + mi := &file_otg_proto_msgTypes[756] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *BgpV6EvpnEvis_Choice) String() string { +func (x *PatternFlowIcmpv6EchoIdentifier) String() string { return protoimpl.X.MessageStringOf(x) } -func (*BgpV6EvpnEvis_Choice) ProtoMessage() {} +func (*PatternFlowIcmpv6EchoIdentifier) ProtoMessage() {} -func (x *BgpV6EvpnEvis_Choice) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[823] +func (x *PatternFlowIcmpv6EchoIdentifier) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[756] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -83510,72 +83383,87 @@ func (x *BgpV6EvpnEvis_Choice) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use BgpV6EvpnEvis_Choice.ProtoReflect.Descriptor instead. -func (*BgpV6EvpnEvis_Choice) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{132, 0} +// Deprecated: Use PatternFlowIcmpv6EchoIdentifier.ProtoReflect.Descriptor instead. +func (*PatternFlowIcmpv6EchoIdentifier) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{756} } -type BgpV6EviVxlan_ReplicationType struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields +func (x *PatternFlowIcmpv6EchoIdentifier) GetChoice() PatternFlowIcmpv6EchoIdentifier_Choice_Enum { + if x != nil && x.Choice != nil { + return *x.Choice + } + return PatternFlowIcmpv6EchoIdentifier_Choice_unspecified } -func (x *BgpV6EviVxlan_ReplicationType) Reset() { - *x = BgpV6EviVxlan_ReplicationType{} - if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[824] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) +func (x *PatternFlowIcmpv6EchoIdentifier) GetValue() uint32 { + if x != nil && x.Value != nil { + return *x.Value } + return 0 } -func (x *BgpV6EviVxlan_ReplicationType) String() string { - return protoimpl.X.MessageStringOf(x) +func (x *PatternFlowIcmpv6EchoIdentifier) GetValues() []uint32 { + if x != nil { + return x.Values + } + return nil } -func (*BgpV6EviVxlan_ReplicationType) ProtoMessage() {} +func (x *PatternFlowIcmpv6EchoIdentifier) GetIncrement() *PatternFlowIcmpv6EchoIdentifierCounter { + if x != nil { + return x.Increment + } + return nil +} -func (x *BgpV6EviVxlan_ReplicationType) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[824] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms +func (x *PatternFlowIcmpv6EchoIdentifier) GetDecrement() *PatternFlowIcmpv6EchoIdentifierCounter { + if x != nil { + return x.Decrement } - return mi.MessageOf(x) + return nil } -// Deprecated: Use BgpV6EviVxlan_ReplicationType.ProtoReflect.Descriptor instead. -func (*BgpV6EviVxlan_ReplicationType) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{133, 0} +func (x *PatternFlowIcmpv6EchoIdentifier) GetMetricTags() []*PatternFlowIcmpv6EchoIdentifierMetricTag { + if x != nil { + return x.MetricTags + } + return nil } -type VxlanV4TunnelDestinationIPMode_Choice struct { +// integer counter pattern +type PatternFlowIcmpv6EchoSequenceNumberCounter struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields + + // Description missing in models + // default = 0 + Start *uint32 `protobuf:"varint,1,opt,name=start,proto3,oneof" json:"start,omitempty"` + // Description missing in models + // default = 1 + Step *uint32 `protobuf:"varint,2,opt,name=step,proto3,oneof" json:"step,omitempty"` + // Description missing in models + // default = 1 + Count *uint32 `protobuf:"varint,3,opt,name=count,proto3,oneof" json:"count,omitempty"` } -func (x *VxlanV4TunnelDestinationIPMode_Choice) Reset() { - *x = VxlanV4TunnelDestinationIPMode_Choice{} +func (x *PatternFlowIcmpv6EchoSequenceNumberCounter) Reset() { + *x = PatternFlowIcmpv6EchoSequenceNumberCounter{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[825] + mi := &file_otg_proto_msgTypes[757] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *VxlanV4TunnelDestinationIPMode_Choice) String() string { +func (x *PatternFlowIcmpv6EchoSequenceNumberCounter) String() string { return protoimpl.X.MessageStringOf(x) } -func (*VxlanV4TunnelDestinationIPMode_Choice) ProtoMessage() {} +func (*PatternFlowIcmpv6EchoSequenceNumberCounter) ProtoMessage() {} -func (x *VxlanV4TunnelDestinationIPMode_Choice) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[825] +func (x *PatternFlowIcmpv6EchoSequenceNumberCounter) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[757] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -83586,34 +83474,70 @@ func (x *VxlanV4TunnelDestinationIPMode_Choice) ProtoReflect() protoreflect.Mess return mi.MessageOf(x) } -// Deprecated: Use VxlanV4TunnelDestinationIPMode_Choice.ProtoReflect.Descriptor instead. -func (*VxlanV4TunnelDestinationIPMode_Choice) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{138, 0} +// Deprecated: Use PatternFlowIcmpv6EchoSequenceNumberCounter.ProtoReflect.Descriptor instead. +func (*PatternFlowIcmpv6EchoSequenceNumberCounter) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{757} } -type VxlanV6TunnelDestinationIPMode_Choice struct { +func (x *PatternFlowIcmpv6EchoSequenceNumberCounter) GetStart() uint32 { + if x != nil && x.Start != nil { + return *x.Start + } + return 0 +} + +func (x *PatternFlowIcmpv6EchoSequenceNumberCounter) GetStep() uint32 { + if x != nil && x.Step != nil { + return *x.Step + } + return 0 +} + +func (x *PatternFlowIcmpv6EchoSequenceNumberCounter) GetCount() uint32 { + if x != nil && x.Count != nil { + return *x.Count + } + return 0 +} + +// Metric tag can be used to enable tracking portion of or all bits in a corresponding +// header field for metrics per each applicable value. These would appear as tagged +// metrics in corresponding flow metrics. +type PatternFlowIcmpv6EchoSequenceNumberMetricTag struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields + + // Name used to identify the metrics associated with the values applicable for configured + // offset and length inside corresponding header field + // required = true + Name *string `protobuf:"bytes,1,opt,name=name,proto3,oneof" json:"name,omitempty"` + // Offset in bits relative to start of corresponding header field + // default = 0 + Offset *uint32 `protobuf:"varint,2,opt,name=offset,proto3,oneof" json:"offset,omitempty"` + // Number of bits to track for metrics starting from configured offset of corresponding + // header field + // default = 16 + Length *uint32 `protobuf:"varint,3,opt,name=length,proto3,oneof" json:"length,omitempty"` } -func (x *VxlanV6TunnelDestinationIPMode_Choice) Reset() { - *x = VxlanV6TunnelDestinationIPMode_Choice{} +func (x *PatternFlowIcmpv6EchoSequenceNumberMetricTag) Reset() { + *x = PatternFlowIcmpv6EchoSequenceNumberMetricTag{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[826] + mi := &file_otg_proto_msgTypes[758] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *VxlanV6TunnelDestinationIPMode_Choice) String() string { +func (x *PatternFlowIcmpv6EchoSequenceNumberMetricTag) String() string { return protoimpl.X.MessageStringOf(x) } -func (*VxlanV6TunnelDestinationIPMode_Choice) ProtoMessage() {} +func (*PatternFlowIcmpv6EchoSequenceNumberMetricTag) ProtoMessage() {} -func (x *VxlanV6TunnelDestinationIPMode_Choice) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[826] +func (x *PatternFlowIcmpv6EchoSequenceNumberMetricTag) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[758] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -83624,34 +83548,74 @@ func (x *VxlanV6TunnelDestinationIPMode_Choice) ProtoReflect() protoreflect.Mess return mi.MessageOf(x) } -// Deprecated: Use VxlanV6TunnelDestinationIPMode_Choice.ProtoReflect.Descriptor instead. -func (*VxlanV6TunnelDestinationIPMode_Choice) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{139, 0} +// Deprecated: Use PatternFlowIcmpv6EchoSequenceNumberMetricTag.ProtoReflect.Descriptor instead. +func (*PatternFlowIcmpv6EchoSequenceNumberMetricTag) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{758} } -type RsvpLspIpv4InterfaceP2PEgressIpv4Lsp_ReservationStyle struct { +func (x *PatternFlowIcmpv6EchoSequenceNumberMetricTag) GetName() string { + if x != nil && x.Name != nil { + return *x.Name + } + return "" +} + +func (x *PatternFlowIcmpv6EchoSequenceNumberMetricTag) GetOffset() uint32 { + if x != nil && x.Offset != nil { + return *x.Offset + } + return 0 +} + +func (x *PatternFlowIcmpv6EchoSequenceNumberMetricTag) GetLength() uint32 { + if x != nil && x.Length != nil { + return *x.Length + } + return 0 +} + +// ICMPv6 echo sequence number +type PatternFlowIcmpv6EchoSequenceNumber struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields + + // Description missing in models + // default = Choice.Enum.value + Choice *PatternFlowIcmpv6EchoSequenceNumber_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.PatternFlowIcmpv6EchoSequenceNumber_Choice_Enum,oneof" json:"choice,omitempty"` + // Description missing in models + // default = 0 + Value *uint32 `protobuf:"varint,2,opt,name=value,proto3,oneof" json:"value,omitempty"` + // Description missing in models + // default = [0] + Values []uint32 `protobuf:"varint,3,rep,packed,name=values,proto3" json:"values,omitempty"` + // Description missing in models + Increment *PatternFlowIcmpv6EchoSequenceNumberCounter `protobuf:"bytes,5,opt,name=increment,proto3" json:"increment,omitempty"` + // Description missing in models + Decrement *PatternFlowIcmpv6EchoSequenceNumberCounter `protobuf:"bytes,6,opt,name=decrement,proto3" json:"decrement,omitempty"` + // One or more metric tags can be used to enable tracking portion of or all bits in + // a corresponding header field for metrics per each applicable value. These would appear + // as tagged metrics in corresponding flow metrics. + MetricTags []*PatternFlowIcmpv6EchoSequenceNumberMetricTag `protobuf:"bytes,7,rep,name=metric_tags,json=metricTags,proto3" json:"metric_tags,omitempty"` } -func (x *RsvpLspIpv4InterfaceP2PEgressIpv4Lsp_ReservationStyle) Reset() { - *x = RsvpLspIpv4InterfaceP2PEgressIpv4Lsp_ReservationStyle{} +func (x *PatternFlowIcmpv6EchoSequenceNumber) Reset() { + *x = PatternFlowIcmpv6EchoSequenceNumber{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[827] + mi := &file_otg_proto_msgTypes[759] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *RsvpLspIpv4InterfaceP2PEgressIpv4Lsp_ReservationStyle) String() string { +func (x *PatternFlowIcmpv6EchoSequenceNumber) String() string { return protoimpl.X.MessageStringOf(x) } -func (*RsvpLspIpv4InterfaceP2PEgressIpv4Lsp_ReservationStyle) ProtoMessage() {} +func (*PatternFlowIcmpv6EchoSequenceNumber) ProtoMessage() {} -func (x *RsvpLspIpv4InterfaceP2PEgressIpv4Lsp_ReservationStyle) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[827] +func (x *PatternFlowIcmpv6EchoSequenceNumber) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[759] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -83662,72 +83626,86 @@ func (x *RsvpLspIpv4InterfaceP2PEgressIpv4Lsp_ReservationStyle) ProtoReflect() p return mi.MessageOf(x) } -// Deprecated: Use RsvpLspIpv4InterfaceP2PEgressIpv4Lsp_ReservationStyle.ProtoReflect.Descriptor instead. -func (*RsvpLspIpv4InterfaceP2PEgressIpv4Lsp_ReservationStyle) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{150, 0} +// Deprecated: Use PatternFlowIcmpv6EchoSequenceNumber.ProtoReflect.Descriptor instead. +func (*PatternFlowIcmpv6EchoSequenceNumber) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{759} } -type RsvpEro_PrependNeighborIp struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields +func (x *PatternFlowIcmpv6EchoSequenceNumber) GetChoice() PatternFlowIcmpv6EchoSequenceNumber_Choice_Enum { + if x != nil && x.Choice != nil { + return *x.Choice + } + return PatternFlowIcmpv6EchoSequenceNumber_Choice_unspecified } -func (x *RsvpEro_PrependNeighborIp) Reset() { - *x = RsvpEro_PrependNeighborIp{} - if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[828] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) +func (x *PatternFlowIcmpv6EchoSequenceNumber) GetValue() uint32 { + if x != nil && x.Value != nil { + return *x.Value } + return 0 } -func (x *RsvpEro_PrependNeighborIp) String() string { - return protoimpl.X.MessageStringOf(x) +func (x *PatternFlowIcmpv6EchoSequenceNumber) GetValues() []uint32 { + if x != nil { + return x.Values + } + return nil } -func (*RsvpEro_PrependNeighborIp) ProtoMessage() {} +func (x *PatternFlowIcmpv6EchoSequenceNumber) GetIncrement() *PatternFlowIcmpv6EchoSequenceNumberCounter { + if x != nil { + return x.Increment + } + return nil +} -func (x *RsvpEro_PrependNeighborIp) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[828] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms +func (x *PatternFlowIcmpv6EchoSequenceNumber) GetDecrement() *PatternFlowIcmpv6EchoSequenceNumberCounter { + if x != nil { + return x.Decrement } - return mi.MessageOf(x) + return nil } -// Deprecated: Use RsvpEro_PrependNeighborIp.ProtoReflect.Descriptor instead. -func (*RsvpEro_PrependNeighborIp) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{156, 0} +func (x *PatternFlowIcmpv6EchoSequenceNumber) GetMetricTags() []*PatternFlowIcmpv6EchoSequenceNumberMetricTag { + if x != nil { + return x.MetricTags + } + return nil } -type RsvpEroSubobject_Type struct { +// ICMPv6 checksum +type PatternFlowIcmpv6EchoChecksum struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields + + // The type of checksum + // default = Choice.Enum.generated + Choice *PatternFlowIcmpv6EchoChecksum_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.PatternFlowIcmpv6EchoChecksum_Choice_Enum,oneof" json:"choice,omitempty"` + // A system generated checksum value + // default = Generated.Enum.good + Generated *PatternFlowIcmpv6EchoChecksum_Generated_Enum `protobuf:"varint,2,opt,name=generated,proto3,enum=otg.PatternFlowIcmpv6EchoChecksum_Generated_Enum,oneof" json:"generated,omitempty"` + // A custom checksum value + Custom *uint32 `protobuf:"varint,3,opt,name=custom,proto3,oneof" json:"custom,omitempty"` } -func (x *RsvpEroSubobject_Type) Reset() { - *x = RsvpEroSubobject_Type{} +func (x *PatternFlowIcmpv6EchoChecksum) Reset() { + *x = PatternFlowIcmpv6EchoChecksum{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[829] + mi := &file_otg_proto_msgTypes[760] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *RsvpEroSubobject_Type) String() string { +func (x *PatternFlowIcmpv6EchoChecksum) String() string { return protoimpl.X.MessageStringOf(x) } -func (*RsvpEroSubobject_Type) ProtoMessage() {} +func (*PatternFlowIcmpv6EchoChecksum) ProtoMessage() {} -func (x *RsvpEroSubobject_Type) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[829] +func (x *PatternFlowIcmpv6EchoChecksum) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[760] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -83738,72 +83716,65 @@ func (x *RsvpEroSubobject_Type) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use RsvpEroSubobject_Type.ProtoReflect.Descriptor instead. -func (*RsvpEroSubobject_Type) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{157, 0} +// Deprecated: Use PatternFlowIcmpv6EchoChecksum.ProtoReflect.Descriptor instead. +func (*PatternFlowIcmpv6EchoChecksum) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{760} } -type RsvpEroSubobject_HopType struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields +func (x *PatternFlowIcmpv6EchoChecksum) GetChoice() PatternFlowIcmpv6EchoChecksum_Choice_Enum { + if x != nil && x.Choice != nil { + return *x.Choice + } + return PatternFlowIcmpv6EchoChecksum_Choice_unspecified } -func (x *RsvpEroSubobject_HopType) Reset() { - *x = RsvpEroSubobject_HopType{} - if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[830] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) +func (x *PatternFlowIcmpv6EchoChecksum) GetGenerated() PatternFlowIcmpv6EchoChecksum_Generated_Enum { + if x != nil && x.Generated != nil { + return *x.Generated } + return PatternFlowIcmpv6EchoChecksum_Generated_unspecified } -func (x *RsvpEroSubobject_HopType) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*RsvpEroSubobject_HopType) ProtoMessage() {} - -func (x *RsvpEroSubobject_HopType) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[830] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms +func (x *PatternFlowIcmpv6EchoChecksum) GetCustom() uint32 { + if x != nil && x.Custom != nil { + return *x.Custom } - return mi.MessageOf(x) -} - -// Deprecated: Use RsvpEroSubobject_HopType.ProtoReflect.Descriptor instead. -func (*RsvpEroSubobject_HopType) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{157, 1} + return 0 } -type FlowTxRx_Choice struct { +// ICMPv6 checksum +type PatternFlowIcmpv6CommonChecksum struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields + + // The type of checksum + // default = Choice.Enum.generated + Choice *PatternFlowIcmpv6CommonChecksum_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.PatternFlowIcmpv6CommonChecksum_Choice_Enum,oneof" json:"choice,omitempty"` + // A system generated checksum value + // default = Generated.Enum.good + Generated *PatternFlowIcmpv6CommonChecksum_Generated_Enum `protobuf:"varint,2,opt,name=generated,proto3,enum=otg.PatternFlowIcmpv6CommonChecksum_Generated_Enum,oneof" json:"generated,omitempty"` + // A custom checksum value + Custom *uint32 `protobuf:"varint,3,opt,name=custom,proto3,oneof" json:"custom,omitempty"` } -func (x *FlowTxRx_Choice) Reset() { - *x = FlowTxRx_Choice{} +func (x *PatternFlowIcmpv6CommonChecksum) Reset() { + *x = PatternFlowIcmpv6CommonChecksum{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[831] + mi := &file_otg_proto_msgTypes[761] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *FlowTxRx_Choice) String() string { +func (x *PatternFlowIcmpv6CommonChecksum) String() string { return protoimpl.X.MessageStringOf(x) } -func (*FlowTxRx_Choice) ProtoMessage() {} +func (*PatternFlowIcmpv6CommonChecksum) ProtoMessage() {} -func (x *FlowTxRx_Choice) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[831] +func (x *PatternFlowIcmpv6CommonChecksum) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[761] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -83814,34 +83785,66 @@ func (x *FlowTxRx_Choice) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use FlowTxRx_Choice.ProtoReflect.Descriptor instead. -func (*FlowTxRx_Choice) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{159, 0} +// Deprecated: Use PatternFlowIcmpv6CommonChecksum.ProtoReflect.Descriptor instead. +func (*PatternFlowIcmpv6CommonChecksum) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{761} } -type FlowRouter_Mode struct { +func (x *PatternFlowIcmpv6CommonChecksum) GetChoice() PatternFlowIcmpv6CommonChecksum_Choice_Enum { + if x != nil && x.Choice != nil { + return *x.Choice + } + return PatternFlowIcmpv6CommonChecksum_Choice_unspecified +} + +func (x *PatternFlowIcmpv6CommonChecksum) GetGenerated() PatternFlowIcmpv6CommonChecksum_Generated_Enum { + if x != nil && x.Generated != nil { + return *x.Generated + } + return PatternFlowIcmpv6CommonChecksum_Generated_unspecified +} + +func (x *PatternFlowIcmpv6CommonChecksum) GetCustom() uint32 { + if x != nil && x.Custom != nil { + return *x.Custom + } + return 0 +} + +// integer counter pattern +type PatternFlowPppAddressCounter struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields + + // Description missing in models + // default = 255 + Start *uint32 `protobuf:"varint,1,opt,name=start,proto3,oneof" json:"start,omitempty"` + // Description missing in models + // default = 1 + Step *uint32 `protobuf:"varint,2,opt,name=step,proto3,oneof" json:"step,omitempty"` + // Description missing in models + // default = 1 + Count *uint32 `protobuf:"varint,3,opt,name=count,proto3,oneof" json:"count,omitempty"` } -func (x *FlowRouter_Mode) Reset() { - *x = FlowRouter_Mode{} +func (x *PatternFlowPppAddressCounter) Reset() { + *x = PatternFlowPppAddressCounter{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[832] + mi := &file_otg_proto_msgTypes[762] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *FlowRouter_Mode) String() string { +func (x *PatternFlowPppAddressCounter) String() string { return protoimpl.X.MessageStringOf(x) } -func (*FlowRouter_Mode) ProtoMessage() {} +func (*PatternFlowPppAddressCounter) ProtoMessage() {} -func (x *FlowRouter_Mode) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[832] +func (x *PatternFlowPppAddressCounter) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[762] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -83852,34 +83855,70 @@ func (x *FlowRouter_Mode) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use FlowRouter_Mode.ProtoReflect.Descriptor instead. -func (*FlowRouter_Mode) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{161, 0} +// Deprecated: Use PatternFlowPppAddressCounter.ProtoReflect.Descriptor instead. +func (*PatternFlowPppAddressCounter) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{762} } -type FlowHeader_Choice struct { +func (x *PatternFlowPppAddressCounter) GetStart() uint32 { + if x != nil && x.Start != nil { + return *x.Start + } + return 0 +} + +func (x *PatternFlowPppAddressCounter) GetStep() uint32 { + if x != nil && x.Step != nil { + return *x.Step + } + return 0 +} + +func (x *PatternFlowPppAddressCounter) GetCount() uint32 { + if x != nil && x.Count != nil { + return *x.Count + } + return 0 +} + +// Metric tag can be used to enable tracking portion of or all bits in a corresponding +// header field for metrics per each applicable value. These would appear as tagged +// metrics in corresponding flow metrics. +type PatternFlowPppAddressMetricTag struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields + + // Name used to identify the metrics associated with the values applicable for configured + // offset and length inside corresponding header field + // required = true + Name *string `protobuf:"bytes,1,opt,name=name,proto3,oneof" json:"name,omitempty"` + // Offset in bits relative to start of corresponding header field + // default = 0 + Offset *uint32 `protobuf:"varint,2,opt,name=offset,proto3,oneof" json:"offset,omitempty"` + // Number of bits to track for metrics starting from configured offset of corresponding + // header field + // default = 8 + Length *uint32 `protobuf:"varint,3,opt,name=length,proto3,oneof" json:"length,omitempty"` } -func (x *FlowHeader_Choice) Reset() { - *x = FlowHeader_Choice{} +func (x *PatternFlowPppAddressMetricTag) Reset() { + *x = PatternFlowPppAddressMetricTag{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[833] + mi := &file_otg_proto_msgTypes[763] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *FlowHeader_Choice) String() string { +func (x *PatternFlowPppAddressMetricTag) String() string { return protoimpl.X.MessageStringOf(x) } -func (*FlowHeader_Choice) ProtoMessage() {} +func (*PatternFlowPppAddressMetricTag) ProtoMessage() {} -func (x *FlowHeader_Choice) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[833] +func (x *PatternFlowPppAddressMetricTag) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[763] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -83890,34 +83929,74 @@ func (x *FlowHeader_Choice) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use FlowHeader_Choice.ProtoReflect.Descriptor instead. -func (*FlowHeader_Choice) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{162, 0} +// Deprecated: Use PatternFlowPppAddressMetricTag.ProtoReflect.Descriptor instead. +func (*PatternFlowPppAddressMetricTag) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{763} } -type FlowIpv4Priority_Choice struct { +func (x *PatternFlowPppAddressMetricTag) GetName() string { + if x != nil && x.Name != nil { + return *x.Name + } + return "" +} + +func (x *PatternFlowPppAddressMetricTag) GetOffset() uint32 { + if x != nil && x.Offset != nil { + return *x.Offset + } + return 0 +} + +func (x *PatternFlowPppAddressMetricTag) GetLength() uint32 { + if x != nil && x.Length != nil { + return *x.Length + } + return 0 +} + +// PPP address +type PatternFlowPppAddress struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields + + // Description missing in models + // default = Choice.Enum.value + Choice *PatternFlowPppAddress_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.PatternFlowPppAddress_Choice_Enum,oneof" json:"choice,omitempty"` + // Description missing in models + // default = 255 + Value *uint32 `protobuf:"varint,2,opt,name=value,proto3,oneof" json:"value,omitempty"` + // Description missing in models + // default = [255] + Values []uint32 `protobuf:"varint,3,rep,packed,name=values,proto3" json:"values,omitempty"` + // Description missing in models + Increment *PatternFlowPppAddressCounter `protobuf:"bytes,5,opt,name=increment,proto3" json:"increment,omitempty"` + // Description missing in models + Decrement *PatternFlowPppAddressCounter `protobuf:"bytes,6,opt,name=decrement,proto3" json:"decrement,omitempty"` + // One or more metric tags can be used to enable tracking portion of or all bits in + // a corresponding header field for metrics per each applicable value. These would appear + // as tagged metrics in corresponding flow metrics. + MetricTags []*PatternFlowPppAddressMetricTag `protobuf:"bytes,7,rep,name=metric_tags,json=metricTags,proto3" json:"metric_tags,omitempty"` } -func (x *FlowIpv4Priority_Choice) Reset() { - *x = FlowIpv4Priority_Choice{} +func (x *PatternFlowPppAddress) Reset() { + *x = PatternFlowPppAddress{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[834] + mi := &file_otg_proto_msgTypes[764] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *FlowIpv4Priority_Choice) String() string { +func (x *PatternFlowPppAddress) String() string { return protoimpl.X.MessageStringOf(x) } -func (*FlowIpv4Priority_Choice) ProtoMessage() {} +func (*PatternFlowPppAddress) ProtoMessage() {} -func (x *FlowIpv4Priority_Choice) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[834] +func (x *PatternFlowPppAddress) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[764] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -83928,72 +84007,87 @@ func (x *FlowIpv4Priority_Choice) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use FlowIpv4Priority_Choice.ProtoReflect.Descriptor instead. -func (*FlowIpv4Priority_Choice) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{169, 0} +// Deprecated: Use PatternFlowPppAddress.ProtoReflect.Descriptor instead. +func (*PatternFlowPppAddress) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{764} } -type FlowIcmp_Choice struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields +func (x *PatternFlowPppAddress) GetChoice() PatternFlowPppAddress_Choice_Enum { + if x != nil && x.Choice != nil { + return *x.Choice + } + return PatternFlowPppAddress_Choice_unspecified } -func (x *FlowIcmp_Choice) Reset() { - *x = FlowIcmp_Choice{} - if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[835] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) +func (x *PatternFlowPppAddress) GetValue() uint32 { + if x != nil && x.Value != nil { + return *x.Value } + return 0 } -func (x *FlowIcmp_Choice) String() string { - return protoimpl.X.MessageStringOf(x) +func (x *PatternFlowPppAddress) GetValues() []uint32 { + if x != nil { + return x.Values + } + return nil } -func (*FlowIcmp_Choice) ProtoMessage() {} +func (x *PatternFlowPppAddress) GetIncrement() *PatternFlowPppAddressCounter { + if x != nil { + return x.Increment + } + return nil +} -func (x *FlowIcmp_Choice) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[835] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms +func (x *PatternFlowPppAddress) GetDecrement() *PatternFlowPppAddressCounter { + if x != nil { + return x.Decrement } - return mi.MessageOf(x) + return nil } -// Deprecated: Use FlowIcmp_Choice.ProtoReflect.Descriptor instead. -func (*FlowIcmp_Choice) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{182, 0} +func (x *PatternFlowPppAddress) GetMetricTags() []*PatternFlowPppAddressMetricTag { + if x != nil { + return x.MetricTags + } + return nil } -type FlowIcmpv6_Choice struct { +// integer counter pattern +type PatternFlowPppControlCounter struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields + + // Description missing in models + // default = 3 + Start *uint32 `protobuf:"varint,1,opt,name=start,proto3,oneof" json:"start,omitempty"` + // Description missing in models + // default = 1 + Step *uint32 `protobuf:"varint,2,opt,name=step,proto3,oneof" json:"step,omitempty"` + // Description missing in models + // default = 1 + Count *uint32 `protobuf:"varint,3,opt,name=count,proto3,oneof" json:"count,omitempty"` } -func (x *FlowIcmpv6_Choice) Reset() { - *x = FlowIcmpv6_Choice{} +func (x *PatternFlowPppControlCounter) Reset() { + *x = PatternFlowPppControlCounter{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[836] + mi := &file_otg_proto_msgTypes[765] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *FlowIcmpv6_Choice) String() string { +func (x *PatternFlowPppControlCounter) String() string { return protoimpl.X.MessageStringOf(x) } -func (*FlowIcmpv6_Choice) ProtoMessage() {} +func (*PatternFlowPppControlCounter) ProtoMessage() {} -func (x *FlowIcmpv6_Choice) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[836] +func (x *PatternFlowPppControlCounter) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[765] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -84004,34 +84098,70 @@ func (x *FlowIcmpv6_Choice) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use FlowIcmpv6_Choice.ProtoReflect.Descriptor instead. -func (*FlowIcmpv6_Choice) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{184, 0} +// Deprecated: Use PatternFlowPppControlCounter.ProtoReflect.Descriptor instead. +func (*PatternFlowPppControlCounter) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{765} } -type FlowSize_Choice struct { +func (x *PatternFlowPppControlCounter) GetStart() uint32 { + if x != nil && x.Start != nil { + return *x.Start + } + return 0 +} + +func (x *PatternFlowPppControlCounter) GetStep() uint32 { + if x != nil && x.Step != nil { + return *x.Step + } + return 0 +} + +func (x *PatternFlowPppControlCounter) GetCount() uint32 { + if x != nil && x.Count != nil { + return *x.Count + } + return 0 +} + +// Metric tag can be used to enable tracking portion of or all bits in a corresponding +// header field for metrics per each applicable value. These would appear as tagged +// metrics in corresponding flow metrics. +type PatternFlowPppControlMetricTag struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields + + // Name used to identify the metrics associated with the values applicable for configured + // offset and length inside corresponding header field + // required = true + Name *string `protobuf:"bytes,1,opt,name=name,proto3,oneof" json:"name,omitempty"` + // Offset in bits relative to start of corresponding header field + // default = 0 + Offset *uint32 `protobuf:"varint,2,opt,name=offset,proto3,oneof" json:"offset,omitempty"` + // Number of bits to track for metrics starting from configured offset of corresponding + // header field + // default = 8 + Length *uint32 `protobuf:"varint,3,opt,name=length,proto3,oneof" json:"length,omitempty"` } -func (x *FlowSize_Choice) Reset() { - *x = FlowSize_Choice{} +func (x *PatternFlowPppControlMetricTag) Reset() { + *x = PatternFlowPppControlMetricTag{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[837] + mi := &file_otg_proto_msgTypes[766] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *FlowSize_Choice) String() string { +func (x *PatternFlowPppControlMetricTag) String() string { return protoimpl.X.MessageStringOf(x) } -func (*FlowSize_Choice) ProtoMessage() {} +func (*PatternFlowPppControlMetricTag) ProtoMessage() {} -func (x *FlowSize_Choice) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[837] +func (x *PatternFlowPppControlMetricTag) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[766] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -84042,34 +84172,74 @@ func (x *FlowSize_Choice) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use FlowSize_Choice.ProtoReflect.Descriptor instead. -func (*FlowSize_Choice) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{189, 0} +// Deprecated: Use PatternFlowPppControlMetricTag.ProtoReflect.Descriptor instead. +func (*PatternFlowPppControlMetricTag) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{766} } -type FlowSizeWeightPairs_Choice struct { +func (x *PatternFlowPppControlMetricTag) GetName() string { + if x != nil && x.Name != nil { + return *x.Name + } + return "" +} + +func (x *PatternFlowPppControlMetricTag) GetOffset() uint32 { + if x != nil && x.Offset != nil { + return *x.Offset + } + return 0 +} + +func (x *PatternFlowPppControlMetricTag) GetLength() uint32 { + if x != nil && x.Length != nil { + return *x.Length + } + return 0 +} + +// PPP control +type PatternFlowPppControl struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields + + // Description missing in models + // default = Choice.Enum.value + Choice *PatternFlowPppControl_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.PatternFlowPppControl_Choice_Enum,oneof" json:"choice,omitempty"` + // Description missing in models + // default = 3 + Value *uint32 `protobuf:"varint,2,opt,name=value,proto3,oneof" json:"value,omitempty"` + // Description missing in models + // default = [3] + Values []uint32 `protobuf:"varint,3,rep,packed,name=values,proto3" json:"values,omitempty"` + // Description missing in models + Increment *PatternFlowPppControlCounter `protobuf:"bytes,5,opt,name=increment,proto3" json:"increment,omitempty"` + // Description missing in models + Decrement *PatternFlowPppControlCounter `protobuf:"bytes,6,opt,name=decrement,proto3" json:"decrement,omitempty"` + // One or more metric tags can be used to enable tracking portion of or all bits in + // a corresponding header field for metrics per each applicable value. These would appear + // as tagged metrics in corresponding flow metrics. + MetricTags []*PatternFlowPppControlMetricTag `protobuf:"bytes,7,rep,name=metric_tags,json=metricTags,proto3" json:"metric_tags,omitempty"` } -func (x *FlowSizeWeightPairs_Choice) Reset() { - *x = FlowSizeWeightPairs_Choice{} +func (x *PatternFlowPppControl) Reset() { + *x = PatternFlowPppControl{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[838] + mi := &file_otg_proto_msgTypes[767] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *FlowSizeWeightPairs_Choice) String() string { +func (x *PatternFlowPppControl) String() string { return protoimpl.X.MessageStringOf(x) } -func (*FlowSizeWeightPairs_Choice) ProtoMessage() {} +func (*PatternFlowPppControl) ProtoMessage() {} -func (x *FlowSizeWeightPairs_Choice) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[838] +func (x *PatternFlowPppControl) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[767] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -84080,72 +84250,87 @@ func (x *FlowSizeWeightPairs_Choice) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use FlowSizeWeightPairs_Choice.ProtoReflect.Descriptor instead. -func (*FlowSizeWeightPairs_Choice) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{192, 0} +// Deprecated: Use PatternFlowPppControl.ProtoReflect.Descriptor instead. +func (*PatternFlowPppControl) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{767} } -type FlowSizeWeightPairs_Predefined struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields +func (x *PatternFlowPppControl) GetChoice() PatternFlowPppControl_Choice_Enum { + if x != nil && x.Choice != nil { + return *x.Choice + } + return PatternFlowPppControl_Choice_unspecified } -func (x *FlowSizeWeightPairs_Predefined) Reset() { - *x = FlowSizeWeightPairs_Predefined{} - if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[839] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) +func (x *PatternFlowPppControl) GetValue() uint32 { + if x != nil && x.Value != nil { + return *x.Value } + return 0 } -func (x *FlowSizeWeightPairs_Predefined) String() string { - return protoimpl.X.MessageStringOf(x) +func (x *PatternFlowPppControl) GetValues() []uint32 { + if x != nil { + return x.Values + } + return nil } -func (*FlowSizeWeightPairs_Predefined) ProtoMessage() {} +func (x *PatternFlowPppControl) GetIncrement() *PatternFlowPppControlCounter { + if x != nil { + return x.Increment + } + return nil +} -func (x *FlowSizeWeightPairs_Predefined) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[839] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms +func (x *PatternFlowPppControl) GetDecrement() *PatternFlowPppControlCounter { + if x != nil { + return x.Decrement } - return mi.MessageOf(x) + return nil } -// Deprecated: Use FlowSizeWeightPairs_Predefined.ProtoReflect.Descriptor instead. -func (*FlowSizeWeightPairs_Predefined) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{192, 1} +func (x *PatternFlowPppControl) GetMetricTags() []*PatternFlowPppControlMetricTag { + if x != nil { + return x.MetricTags + } + return nil } -type FlowRate_Choice struct { +// integer counter pattern +type PatternFlowPppProtocolTypeCounter struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields + + // Description missing in models + // default = 33 + Start *uint32 `protobuf:"varint,1,opt,name=start,proto3,oneof" json:"start,omitempty"` + // Description missing in models + // default = 1 + Step *uint32 `protobuf:"varint,2,opt,name=step,proto3,oneof" json:"step,omitempty"` + // Description missing in models + // default = 1 + Count *uint32 `protobuf:"varint,3,opt,name=count,proto3,oneof" json:"count,omitempty"` } -func (x *FlowRate_Choice) Reset() { - *x = FlowRate_Choice{} +func (x *PatternFlowPppProtocolTypeCounter) Reset() { + *x = PatternFlowPppProtocolTypeCounter{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[840] + mi := &file_otg_proto_msgTypes[768] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *FlowRate_Choice) String() string { +func (x *PatternFlowPppProtocolTypeCounter) String() string { return protoimpl.X.MessageStringOf(x) } -func (*FlowRate_Choice) ProtoMessage() {} +func (*PatternFlowPppProtocolTypeCounter) ProtoMessage() {} -func (x *FlowRate_Choice) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[840] +func (x *PatternFlowPppProtocolTypeCounter) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[768] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -84156,72 +84341,70 @@ func (x *FlowRate_Choice) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use FlowRate_Choice.ProtoReflect.Descriptor instead. -func (*FlowRate_Choice) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{194, 0} -} - -type FlowDuration_Choice struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields +// Deprecated: Use PatternFlowPppProtocolTypeCounter.ProtoReflect.Descriptor instead. +func (*PatternFlowPppProtocolTypeCounter) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{768} } -func (x *FlowDuration_Choice) Reset() { - *x = FlowDuration_Choice{} - if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[841] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) +func (x *PatternFlowPppProtocolTypeCounter) GetStart() uint32 { + if x != nil && x.Start != nil { + return *x.Start } + return 0 } -func (x *FlowDuration_Choice) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*FlowDuration_Choice) ProtoMessage() {} - -func (x *FlowDuration_Choice) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[841] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms +func (x *PatternFlowPppProtocolTypeCounter) GetStep() uint32 { + if x != nil && x.Step != nil { + return *x.Step } - return mi.MessageOf(x) + return 0 } -// Deprecated: Use FlowDuration_Choice.ProtoReflect.Descriptor instead. -func (*FlowDuration_Choice) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{195, 0} +func (x *PatternFlowPppProtocolTypeCounter) GetCount() uint32 { + if x != nil && x.Count != nil { + return *x.Count + } + return 0 } -type FlowDelay_Choice struct { +// Metric tag can be used to enable tracking portion of or all bits in a corresponding +// header field for metrics per each applicable value. These would appear as tagged +// metrics in corresponding flow metrics. +type PatternFlowPppProtocolTypeMetricTag struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields + + // Name used to identify the metrics associated with the values applicable for configured + // offset and length inside corresponding header field + // required = true + Name *string `protobuf:"bytes,1,opt,name=name,proto3,oneof" json:"name,omitempty"` + // Offset in bits relative to start of corresponding header field + // default = 0 + Offset *uint32 `protobuf:"varint,2,opt,name=offset,proto3,oneof" json:"offset,omitempty"` + // Number of bits to track for metrics starting from configured offset of corresponding + // header field + // default = 16 + Length *uint32 `protobuf:"varint,3,opt,name=length,proto3,oneof" json:"length,omitempty"` } -func (x *FlowDelay_Choice) Reset() { - *x = FlowDelay_Choice{} +func (x *PatternFlowPppProtocolTypeMetricTag) Reset() { + *x = PatternFlowPppProtocolTypeMetricTag{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[842] + mi := &file_otg_proto_msgTypes[769] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *FlowDelay_Choice) String() string { +func (x *PatternFlowPppProtocolTypeMetricTag) String() string { return protoimpl.X.MessageStringOf(x) } -func (*FlowDelay_Choice) ProtoMessage() {} +func (*PatternFlowPppProtocolTypeMetricTag) ProtoMessage() {} -func (x *FlowDelay_Choice) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[842] +func (x *PatternFlowPppProtocolTypeMetricTag) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[769] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -84232,34 +84415,79 @@ func (x *FlowDelay_Choice) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use FlowDelay_Choice.ProtoReflect.Descriptor instead. -func (*FlowDelay_Choice) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{197, 0} +// Deprecated: Use PatternFlowPppProtocolTypeMetricTag.ProtoReflect.Descriptor instead. +func (*PatternFlowPppProtocolTypeMetricTag) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{769} } -type FlowDurationInterBurstGap_Choice struct { +func (x *PatternFlowPppProtocolTypeMetricTag) GetName() string { + if x != nil && x.Name != nil { + return *x.Name + } + return "" +} + +func (x *PatternFlowPppProtocolTypeMetricTag) GetOffset() uint32 { + if x != nil && x.Offset != nil { + return *x.Offset + } + return 0 +} + +func (x *PatternFlowPppProtocolTypeMetricTag) GetLength() uint32 { + if x != nil && x.Length != nil { + return *x.Length + } + return 0 +} + +// PPP protocol type +type PatternFlowPppProtocolType struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields + + // Description missing in models + // default = Choice.Enum.auto + Choice *PatternFlowPppProtocolType_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.PatternFlowPppProtocolType_Choice_Enum,oneof" json:"choice,omitempty"` + // Description missing in models + // default = 33 + Value *uint32 `protobuf:"varint,2,opt,name=value,proto3,oneof" json:"value,omitempty"` + // Description missing in models + // default = [33] + Values []uint32 `protobuf:"varint,3,rep,packed,name=values,proto3" json:"values,omitempty"` + // The OTG implementation can provide a system generated + // value for this property. If the OTG is unable to generate a value + // the default value must be used. + // default = 33 + Auto *uint32 `protobuf:"varint,4,opt,name=auto,proto3,oneof" json:"auto,omitempty"` + // Description missing in models + Increment *PatternFlowPppProtocolTypeCounter `protobuf:"bytes,6,opt,name=increment,proto3" json:"increment,omitempty"` + // Description missing in models + Decrement *PatternFlowPppProtocolTypeCounter `protobuf:"bytes,7,opt,name=decrement,proto3" json:"decrement,omitempty"` + // One or more metric tags can be used to enable tracking portion of or all bits in + // a corresponding header field for metrics per each applicable value. These would appear + // as tagged metrics in corresponding flow metrics. + MetricTags []*PatternFlowPppProtocolTypeMetricTag `protobuf:"bytes,8,rep,name=metric_tags,json=metricTags,proto3" json:"metric_tags,omitempty"` } -func (x *FlowDurationInterBurstGap_Choice) Reset() { - *x = FlowDurationInterBurstGap_Choice{} +func (x *PatternFlowPppProtocolType) Reset() { + *x = PatternFlowPppProtocolType{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[843] + mi := &file_otg_proto_msgTypes[770] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *FlowDurationInterBurstGap_Choice) String() string { +func (x *PatternFlowPppProtocolType) String() string { return protoimpl.X.MessageStringOf(x) } -func (*FlowDurationInterBurstGap_Choice) ProtoMessage() {} +func (*PatternFlowPppProtocolType) ProtoMessage() {} -func (x *FlowDurationInterBurstGap_Choice) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[843] +func (x *PatternFlowPppProtocolType) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[770] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -84270,72 +84498,94 @@ func (x *FlowDurationInterBurstGap_Choice) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use FlowDurationInterBurstGap_Choice.ProtoReflect.Descriptor instead. -func (*FlowDurationInterBurstGap_Choice) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{201, 0} +// Deprecated: Use PatternFlowPppProtocolType.ProtoReflect.Descriptor instead. +func (*PatternFlowPppProtocolType) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{770} } -type FlowLatencyMetrics_Mode struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields +func (x *PatternFlowPppProtocolType) GetChoice() PatternFlowPppProtocolType_Choice_Enum { + if x != nil && x.Choice != nil { + return *x.Choice + } + return PatternFlowPppProtocolType_Choice_unspecified } -func (x *FlowLatencyMetrics_Mode) Reset() { - *x = FlowLatencyMetrics_Mode{} - if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[844] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) +func (x *PatternFlowPppProtocolType) GetValue() uint32 { + if x != nil && x.Value != nil { + return *x.Value } + return 0 } -func (x *FlowLatencyMetrics_Mode) String() string { - return protoimpl.X.MessageStringOf(x) +func (x *PatternFlowPppProtocolType) GetValues() []uint32 { + if x != nil { + return x.Values + } + return nil } -func (*FlowLatencyMetrics_Mode) ProtoMessage() {} +func (x *PatternFlowPppProtocolType) GetAuto() uint32 { + if x != nil && x.Auto != nil { + return *x.Auto + } + return 0 +} -func (x *FlowLatencyMetrics_Mode) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[844] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms +func (x *PatternFlowPppProtocolType) GetIncrement() *PatternFlowPppProtocolTypeCounter { + if x != nil { + return x.Increment } - return mi.MessageOf(x) + return nil } -// Deprecated: Use FlowLatencyMetrics_Mode.ProtoReflect.Descriptor instead. -func (*FlowLatencyMetrics_Mode) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{203, 0} +func (x *PatternFlowPppProtocolType) GetDecrement() *PatternFlowPppProtocolTypeCounter { + if x != nil { + return x.Decrement + } + return nil } -type FlowRxTxRatio_Choice struct { +func (x *PatternFlowPppProtocolType) GetMetricTags() []*PatternFlowPppProtocolTypeMetricTag { + if x != nil { + return x.MetricTags + } + return nil +} + +// integer counter pattern +type PatternFlowIgmpv1VersionCounter struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields + + // Description missing in models + // default = 1 + Start *uint32 `protobuf:"varint,1,opt,name=start,proto3,oneof" json:"start,omitempty"` + // Description missing in models + // default = 1 + Step *uint32 `protobuf:"varint,2,opt,name=step,proto3,oneof" json:"step,omitempty"` + // Description missing in models + // default = 1 + Count *uint32 `protobuf:"varint,3,opt,name=count,proto3,oneof" json:"count,omitempty"` } -func (x *FlowRxTxRatio_Choice) Reset() { - *x = FlowRxTxRatio_Choice{} +func (x *PatternFlowIgmpv1VersionCounter) Reset() { + *x = PatternFlowIgmpv1VersionCounter{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[845] + mi := &file_otg_proto_msgTypes[771] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *FlowRxTxRatio_Choice) String() string { +func (x *PatternFlowIgmpv1VersionCounter) String() string { return protoimpl.X.MessageStringOf(x) } -func (*FlowRxTxRatio_Choice) ProtoMessage() {} +func (*PatternFlowIgmpv1VersionCounter) ProtoMessage() {} -func (x *FlowRxTxRatio_Choice) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[845] +func (x *PatternFlowIgmpv1VersionCounter) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[771] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -84346,34 +84596,70 @@ func (x *FlowRxTxRatio_Choice) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use FlowRxTxRatio_Choice.ProtoReflect.Descriptor instead. -func (*FlowRxTxRatio_Choice) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{205, 0} +// Deprecated: Use PatternFlowIgmpv1VersionCounter.ProtoReflect.Descriptor instead. +func (*PatternFlowIgmpv1VersionCounter) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{771} } -type EventRequest_Type struct { +func (x *PatternFlowIgmpv1VersionCounter) GetStart() uint32 { + if x != nil && x.Start != nil { + return *x.Start + } + return 0 +} + +func (x *PatternFlowIgmpv1VersionCounter) GetStep() uint32 { + if x != nil && x.Step != nil { + return *x.Step + } + return 0 +} + +func (x *PatternFlowIgmpv1VersionCounter) GetCount() uint32 { + if x != nil && x.Count != nil { + return *x.Count + } + return 0 +} + +// Metric tag can be used to enable tracking portion of or all bits in a corresponding +// header field for metrics per each applicable value. These would appear as tagged +// metrics in corresponding flow metrics. +type PatternFlowIgmpv1VersionMetricTag struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields + + // Name used to identify the metrics associated with the values applicable for configured + // offset and length inside corresponding header field + // required = true + Name *string `protobuf:"bytes,1,opt,name=name,proto3,oneof" json:"name,omitempty"` + // Offset in bits relative to start of corresponding header field + // default = 0 + Offset *uint32 `protobuf:"varint,2,opt,name=offset,proto3,oneof" json:"offset,omitempty"` + // Number of bits to track for metrics starting from configured offset of corresponding + // header field + // default = 4 + Length *uint32 `protobuf:"varint,3,opt,name=length,proto3,oneof" json:"length,omitempty"` } -func (x *EventRequest_Type) Reset() { - *x = EventRequest_Type{} +func (x *PatternFlowIgmpv1VersionMetricTag) Reset() { + *x = PatternFlowIgmpv1VersionMetricTag{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[846] + mi := &file_otg_proto_msgTypes[772] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *EventRequest_Type) String() string { +func (x *PatternFlowIgmpv1VersionMetricTag) String() string { return protoimpl.X.MessageStringOf(x) } -func (*EventRequest_Type) ProtoMessage() {} +func (*PatternFlowIgmpv1VersionMetricTag) ProtoMessage() {} -func (x *EventRequest_Type) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[846] +func (x *PatternFlowIgmpv1VersionMetricTag) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[772] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -84384,34 +84670,74 @@ func (x *EventRequest_Type) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use EventRequest_Type.ProtoReflect.Descriptor instead. -func (*EventRequest_Type) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{211, 0} +// Deprecated: Use PatternFlowIgmpv1VersionMetricTag.ProtoReflect.Descriptor instead. +func (*PatternFlowIgmpv1VersionMetricTag) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{772} } -type LldpConnection_Choice struct { +func (x *PatternFlowIgmpv1VersionMetricTag) GetName() string { + if x != nil && x.Name != nil { + return *x.Name + } + return "" +} + +func (x *PatternFlowIgmpv1VersionMetricTag) GetOffset() uint32 { + if x != nil && x.Offset != nil { + return *x.Offset + } + return 0 +} + +func (x *PatternFlowIgmpv1VersionMetricTag) GetLength() uint32 { + if x != nil && x.Length != nil { + return *x.Length + } + return 0 +} + +// Version number +type PatternFlowIgmpv1Version struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields + + // Description missing in models + // default = Choice.Enum.value + Choice *PatternFlowIgmpv1Version_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.PatternFlowIgmpv1Version_Choice_Enum,oneof" json:"choice,omitempty"` + // Description missing in models + // default = 1 + Value *uint32 `protobuf:"varint,2,opt,name=value,proto3,oneof" json:"value,omitempty"` + // Description missing in models + // default = [1] + Values []uint32 `protobuf:"varint,3,rep,packed,name=values,proto3" json:"values,omitempty"` + // Description missing in models + Increment *PatternFlowIgmpv1VersionCounter `protobuf:"bytes,5,opt,name=increment,proto3" json:"increment,omitempty"` + // Description missing in models + Decrement *PatternFlowIgmpv1VersionCounter `protobuf:"bytes,6,opt,name=decrement,proto3" json:"decrement,omitempty"` + // One or more metric tags can be used to enable tracking portion of or all bits in + // a corresponding header field for metrics per each applicable value. These would appear + // as tagged metrics in corresponding flow metrics. + MetricTags []*PatternFlowIgmpv1VersionMetricTag `protobuf:"bytes,7,rep,name=metric_tags,json=metricTags,proto3" json:"metric_tags,omitempty"` } -func (x *LldpConnection_Choice) Reset() { - *x = LldpConnection_Choice{} +func (x *PatternFlowIgmpv1Version) Reset() { + *x = PatternFlowIgmpv1Version{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[847] + mi := &file_otg_proto_msgTypes[773] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *LldpConnection_Choice) String() string { +func (x *PatternFlowIgmpv1Version) String() string { return protoimpl.X.MessageStringOf(x) } -func (*LldpConnection_Choice) ProtoMessage() {} +func (*PatternFlowIgmpv1Version) ProtoMessage() {} -func (x *LldpConnection_Choice) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[847] +func (x *PatternFlowIgmpv1Version) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[773] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -84422,72 +84748,87 @@ func (x *LldpConnection_Choice) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use LldpConnection_Choice.ProtoReflect.Descriptor instead. -func (*LldpConnection_Choice) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{214, 0} +// Deprecated: Use PatternFlowIgmpv1Version.ProtoReflect.Descriptor instead. +func (*PatternFlowIgmpv1Version) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{773} } -type LldpChassisId_Choice struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields +func (x *PatternFlowIgmpv1Version) GetChoice() PatternFlowIgmpv1Version_Choice_Enum { + if x != nil && x.Choice != nil { + return *x.Choice + } + return PatternFlowIgmpv1Version_Choice_unspecified } -func (x *LldpChassisId_Choice) Reset() { - *x = LldpChassisId_Choice{} - if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[848] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) +func (x *PatternFlowIgmpv1Version) GetValue() uint32 { + if x != nil && x.Value != nil { + return *x.Value } + return 0 } -func (x *LldpChassisId_Choice) String() string { - return protoimpl.X.MessageStringOf(x) +func (x *PatternFlowIgmpv1Version) GetValues() []uint32 { + if x != nil { + return x.Values + } + return nil } -func (*LldpChassisId_Choice) ProtoMessage() {} +func (x *PatternFlowIgmpv1Version) GetIncrement() *PatternFlowIgmpv1VersionCounter { + if x != nil { + return x.Increment + } + return nil +} -func (x *LldpChassisId_Choice) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[848] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms +func (x *PatternFlowIgmpv1Version) GetDecrement() *PatternFlowIgmpv1VersionCounter { + if x != nil { + return x.Decrement } - return mi.MessageOf(x) + return nil } -// Deprecated: Use LldpChassisId_Choice.ProtoReflect.Descriptor instead. -func (*LldpChassisId_Choice) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{215, 0} +func (x *PatternFlowIgmpv1Version) GetMetricTags() []*PatternFlowIgmpv1VersionMetricTag { + if x != nil { + return x.MetricTags + } + return nil } -type LldpPortId_Choice struct { +// integer counter pattern +type PatternFlowIgmpv1TypeCounter struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields + + // Description missing in models + // default = 1 + Start *uint32 `protobuf:"varint,1,opt,name=start,proto3,oneof" json:"start,omitempty"` + // Description missing in models + // default = 1 + Step *uint32 `protobuf:"varint,2,opt,name=step,proto3,oneof" json:"step,omitempty"` + // Description missing in models + // default = 1 + Count *uint32 `protobuf:"varint,3,opt,name=count,proto3,oneof" json:"count,omitempty"` } -func (x *LldpPortId_Choice) Reset() { - *x = LldpPortId_Choice{} +func (x *PatternFlowIgmpv1TypeCounter) Reset() { + *x = PatternFlowIgmpv1TypeCounter{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[849] + mi := &file_otg_proto_msgTypes[774] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *LldpPortId_Choice) String() string { +func (x *PatternFlowIgmpv1TypeCounter) String() string { return protoimpl.X.MessageStringOf(x) } -func (*LldpPortId_Choice) ProtoMessage() {} +func (*PatternFlowIgmpv1TypeCounter) ProtoMessage() {} -func (x *LldpPortId_Choice) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[849] +func (x *PatternFlowIgmpv1TypeCounter) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[774] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -84498,34 +84839,70 @@ func (x *LldpPortId_Choice) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use LldpPortId_Choice.ProtoReflect.Descriptor instead. -func (*LldpPortId_Choice) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{216, 0} +// Deprecated: Use PatternFlowIgmpv1TypeCounter.ProtoReflect.Descriptor instead. +func (*PatternFlowIgmpv1TypeCounter) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{774} } -type LldpChassisMacSubType_Choice struct { +func (x *PatternFlowIgmpv1TypeCounter) GetStart() uint32 { + if x != nil && x.Start != nil { + return *x.Start + } + return 0 +} + +func (x *PatternFlowIgmpv1TypeCounter) GetStep() uint32 { + if x != nil && x.Step != nil { + return *x.Step + } + return 0 +} + +func (x *PatternFlowIgmpv1TypeCounter) GetCount() uint32 { + if x != nil && x.Count != nil { + return *x.Count + } + return 0 +} + +// Metric tag can be used to enable tracking portion of or all bits in a corresponding +// header field for metrics per each applicable value. These would appear as tagged +// metrics in corresponding flow metrics. +type PatternFlowIgmpv1TypeMetricTag struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields + + // Name used to identify the metrics associated with the values applicable for configured + // offset and length inside corresponding header field + // required = true + Name *string `protobuf:"bytes,1,opt,name=name,proto3,oneof" json:"name,omitempty"` + // Offset in bits relative to start of corresponding header field + // default = 0 + Offset *uint32 `protobuf:"varint,2,opt,name=offset,proto3,oneof" json:"offset,omitempty"` + // Number of bits to track for metrics starting from configured offset of corresponding + // header field + // default = 4 + Length *uint32 `protobuf:"varint,3,opt,name=length,proto3,oneof" json:"length,omitempty"` } -func (x *LldpChassisMacSubType_Choice) Reset() { - *x = LldpChassisMacSubType_Choice{} +func (x *PatternFlowIgmpv1TypeMetricTag) Reset() { + *x = PatternFlowIgmpv1TypeMetricTag{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[850] + mi := &file_otg_proto_msgTypes[775] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *LldpChassisMacSubType_Choice) String() string { +func (x *PatternFlowIgmpv1TypeMetricTag) String() string { return protoimpl.X.MessageStringOf(x) } -func (*LldpChassisMacSubType_Choice) ProtoMessage() {} +func (*PatternFlowIgmpv1TypeMetricTag) ProtoMessage() {} -func (x *LldpChassisMacSubType_Choice) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[850] +func (x *PatternFlowIgmpv1TypeMetricTag) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[775] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -84536,72 +84913,74 @@ func (x *LldpChassisMacSubType_Choice) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use LldpChassisMacSubType_Choice.ProtoReflect.Descriptor instead. -func (*LldpChassisMacSubType_Choice) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{217, 0} +// Deprecated: Use PatternFlowIgmpv1TypeMetricTag.ProtoReflect.Descriptor instead. +func (*PatternFlowIgmpv1TypeMetricTag) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{775} } -type LldpPortInterfaceNameSubType_Choice struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields +func (x *PatternFlowIgmpv1TypeMetricTag) GetName() string { + if x != nil && x.Name != nil { + return *x.Name + } + return "" } -func (x *LldpPortInterfaceNameSubType_Choice) Reset() { - *x = LldpPortInterfaceNameSubType_Choice{} - if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[851] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) +func (x *PatternFlowIgmpv1TypeMetricTag) GetOffset() uint32 { + if x != nil && x.Offset != nil { + return *x.Offset } + return 0 } -func (x *LldpPortInterfaceNameSubType_Choice) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*LldpPortInterfaceNameSubType_Choice) ProtoMessage() {} - -func (x *LldpPortInterfaceNameSubType_Choice) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[851] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms +func (x *PatternFlowIgmpv1TypeMetricTag) GetLength() uint32 { + if x != nil && x.Length != nil { + return *x.Length } - return mi.MessageOf(x) -} - -// Deprecated: Use LldpPortInterfaceNameSubType_Choice.ProtoReflect.Descriptor instead. -func (*LldpPortInterfaceNameSubType_Choice) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{218, 0} + return 0 } -type LldpSystemName_Choice struct { +// Type of message +type PatternFlowIgmpv1Type struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields + + // Description missing in models + // default = Choice.Enum.value + Choice *PatternFlowIgmpv1Type_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.PatternFlowIgmpv1Type_Choice_Enum,oneof" json:"choice,omitempty"` + // Description missing in models + // default = 1 + Value *uint32 `protobuf:"varint,2,opt,name=value,proto3,oneof" json:"value,omitempty"` + // Description missing in models + // default = [1] + Values []uint32 `protobuf:"varint,3,rep,packed,name=values,proto3" json:"values,omitempty"` + // Description missing in models + Increment *PatternFlowIgmpv1TypeCounter `protobuf:"bytes,5,opt,name=increment,proto3" json:"increment,omitempty"` + // Description missing in models + Decrement *PatternFlowIgmpv1TypeCounter `protobuf:"bytes,6,opt,name=decrement,proto3" json:"decrement,omitempty"` + // One or more metric tags can be used to enable tracking portion of or all bits in + // a corresponding header field for metrics per each applicable value. These would appear + // as tagged metrics in corresponding flow metrics. + MetricTags []*PatternFlowIgmpv1TypeMetricTag `protobuf:"bytes,7,rep,name=metric_tags,json=metricTags,proto3" json:"metric_tags,omitempty"` } -func (x *LldpSystemName_Choice) Reset() { - *x = LldpSystemName_Choice{} +func (x *PatternFlowIgmpv1Type) Reset() { + *x = PatternFlowIgmpv1Type{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[852] + mi := &file_otg_proto_msgTypes[776] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *LldpSystemName_Choice) String() string { +func (x *PatternFlowIgmpv1Type) String() string { return protoimpl.X.MessageStringOf(x) } -func (*LldpSystemName_Choice) ProtoMessage() {} +func (*PatternFlowIgmpv1Type) ProtoMessage() {} -func (x *LldpSystemName_Choice) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[852] +func (x *PatternFlowIgmpv1Type) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[776] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -84612,72 +84991,87 @@ func (x *LldpSystemName_Choice) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use LldpSystemName_Choice.ProtoReflect.Descriptor instead. -func (*LldpSystemName_Choice) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{219, 0} +// Deprecated: Use PatternFlowIgmpv1Type.ProtoReflect.Descriptor instead. +func (*PatternFlowIgmpv1Type) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{776} } -type Error_Kind struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields +func (x *PatternFlowIgmpv1Type) GetChoice() PatternFlowIgmpv1Type_Choice_Enum { + if x != nil && x.Choice != nil { + return *x.Choice + } + return PatternFlowIgmpv1Type_Choice_unspecified } -func (x *Error_Kind) Reset() { - *x = Error_Kind{} - if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[853] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) +func (x *PatternFlowIgmpv1Type) GetValue() uint32 { + if x != nil && x.Value != nil { + return *x.Value } + return 0 } -func (x *Error_Kind) String() string { - return protoimpl.X.MessageStringOf(x) +func (x *PatternFlowIgmpv1Type) GetValues() []uint32 { + if x != nil { + return x.Values + } + return nil } -func (*Error_Kind) ProtoMessage() {} +func (x *PatternFlowIgmpv1Type) GetIncrement() *PatternFlowIgmpv1TypeCounter { + if x != nil { + return x.Increment + } + return nil +} -func (x *Error_Kind) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[853] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms +func (x *PatternFlowIgmpv1Type) GetDecrement() *PatternFlowIgmpv1TypeCounter { + if x != nil { + return x.Decrement } - return mi.MessageOf(x) + return nil } -// Deprecated: Use Error_Kind.ProtoReflect.Descriptor instead. -func (*Error_Kind) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{220, 0} +func (x *PatternFlowIgmpv1Type) GetMetricTags() []*PatternFlowIgmpv1TypeMetricTag { + if x != nil { + return x.MetricTags + } + return nil } -type ConfigUpdate_Choice struct { +// integer counter pattern +type PatternFlowIgmpv1UnusedCounter struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields + + // Description missing in models + // default = 0 + Start *uint32 `protobuf:"varint,1,opt,name=start,proto3,oneof" json:"start,omitempty"` + // Description missing in models + // default = 1 + Step *uint32 `protobuf:"varint,2,opt,name=step,proto3,oneof" json:"step,omitempty"` + // Description missing in models + // default = 1 + Count *uint32 `protobuf:"varint,3,opt,name=count,proto3,oneof" json:"count,omitempty"` } -func (x *ConfigUpdate_Choice) Reset() { - *x = ConfigUpdate_Choice{} +func (x *PatternFlowIgmpv1UnusedCounter) Reset() { + *x = PatternFlowIgmpv1UnusedCounter{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[854] + mi := &file_otg_proto_msgTypes[777] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *ConfigUpdate_Choice) String() string { +func (x *PatternFlowIgmpv1UnusedCounter) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ConfigUpdate_Choice) ProtoMessage() {} +func (*PatternFlowIgmpv1UnusedCounter) ProtoMessage() {} -func (x *ConfigUpdate_Choice) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[854] +func (x *PatternFlowIgmpv1UnusedCounter) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[777] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -84688,72 +85082,70 @@ func (x *ConfigUpdate_Choice) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use ConfigUpdate_Choice.ProtoReflect.Descriptor instead. -func (*ConfigUpdate_Choice) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{222, 0} -} - -type FlowsUpdate_PropertyNames struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields +// Deprecated: Use PatternFlowIgmpv1UnusedCounter.ProtoReflect.Descriptor instead. +func (*PatternFlowIgmpv1UnusedCounter) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{777} } -func (x *FlowsUpdate_PropertyNames) Reset() { - *x = FlowsUpdate_PropertyNames{} - if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[855] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) +func (x *PatternFlowIgmpv1UnusedCounter) GetStart() uint32 { + if x != nil && x.Start != nil { + return *x.Start } + return 0 } -func (x *FlowsUpdate_PropertyNames) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*FlowsUpdate_PropertyNames) ProtoMessage() {} - -func (x *FlowsUpdate_PropertyNames) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[855] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms +func (x *PatternFlowIgmpv1UnusedCounter) GetStep() uint32 { + if x != nil && x.Step != nil { + return *x.Step } - return mi.MessageOf(x) + return 0 } -// Deprecated: Use FlowsUpdate_PropertyNames.ProtoReflect.Descriptor instead. -func (*FlowsUpdate_PropertyNames) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{223, 0} +func (x *PatternFlowIgmpv1UnusedCounter) GetCount() uint32 { + if x != nil && x.Count != nil { + return *x.Count + } + return 0 } -type ControlState_Choice struct { +// Metric tag can be used to enable tracking portion of or all bits in a corresponding +// header field for metrics per each applicable value. These would appear as tagged +// metrics in corresponding flow metrics. +type PatternFlowIgmpv1UnusedMetricTag struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields + + // Name used to identify the metrics associated with the values applicable for configured + // offset and length inside corresponding header field + // required = true + Name *string `protobuf:"bytes,1,opt,name=name,proto3,oneof" json:"name,omitempty"` + // Offset in bits relative to start of corresponding header field + // default = 0 + Offset *uint32 `protobuf:"varint,2,opt,name=offset,proto3,oneof" json:"offset,omitempty"` + // Number of bits to track for metrics starting from configured offset of corresponding + // header field + // default = 8 + Length *uint32 `protobuf:"varint,3,opt,name=length,proto3,oneof" json:"length,omitempty"` } -func (x *ControlState_Choice) Reset() { - *x = ControlState_Choice{} +func (x *PatternFlowIgmpv1UnusedMetricTag) Reset() { + *x = PatternFlowIgmpv1UnusedMetricTag{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[856] + mi := &file_otg_proto_msgTypes[778] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *ControlState_Choice) String() string { +func (x *PatternFlowIgmpv1UnusedMetricTag) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ControlState_Choice) ProtoMessage() {} +func (*PatternFlowIgmpv1UnusedMetricTag) ProtoMessage() {} -func (x *ControlState_Choice) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[856] +func (x *PatternFlowIgmpv1UnusedMetricTag) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[778] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -84764,72 +85156,74 @@ func (x *ControlState_Choice) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use ControlState_Choice.ProtoReflect.Descriptor instead. -func (*ControlState_Choice) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{224, 0} -} - -type StatePort_Choice struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields +// Deprecated: Use PatternFlowIgmpv1UnusedMetricTag.ProtoReflect.Descriptor instead. +func (*PatternFlowIgmpv1UnusedMetricTag) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{778} } -func (x *StatePort_Choice) Reset() { - *x = StatePort_Choice{} - if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[857] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) +func (x *PatternFlowIgmpv1UnusedMetricTag) GetName() string { + if x != nil && x.Name != nil { + return *x.Name } + return "" } -func (x *StatePort_Choice) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*StatePort_Choice) ProtoMessage() {} - -func (x *StatePort_Choice) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[857] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms +func (x *PatternFlowIgmpv1UnusedMetricTag) GetOffset() uint32 { + if x != nil && x.Offset != nil { + return *x.Offset } - return mi.MessageOf(x) + return 0 } -// Deprecated: Use StatePort_Choice.ProtoReflect.Descriptor instead. -func (*StatePort_Choice) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{225, 0} +func (x *PatternFlowIgmpv1UnusedMetricTag) GetLength() uint32 { + if x != nil && x.Length != nil { + return *x.Length + } + return 0 } -type StateTraffic_Choice struct { +// Unused +type PatternFlowIgmpv1Unused struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields + + // Description missing in models + // default = Choice.Enum.value + Choice *PatternFlowIgmpv1Unused_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.PatternFlowIgmpv1Unused_Choice_Enum,oneof" json:"choice,omitempty"` + // Description missing in models + // default = 0 + Value *uint32 `protobuf:"varint,2,opt,name=value,proto3,oneof" json:"value,omitempty"` + // Description missing in models + // default = [0] + Values []uint32 `protobuf:"varint,3,rep,packed,name=values,proto3" json:"values,omitempty"` + // Description missing in models + Increment *PatternFlowIgmpv1UnusedCounter `protobuf:"bytes,5,opt,name=increment,proto3" json:"increment,omitempty"` + // Description missing in models + Decrement *PatternFlowIgmpv1UnusedCounter `protobuf:"bytes,6,opt,name=decrement,proto3" json:"decrement,omitempty"` + // One or more metric tags can be used to enable tracking portion of or all bits in + // a corresponding header field for metrics per each applicable value. These would appear + // as tagged metrics in corresponding flow metrics. + MetricTags []*PatternFlowIgmpv1UnusedMetricTag `protobuf:"bytes,7,rep,name=metric_tags,json=metricTags,proto3" json:"metric_tags,omitempty"` } -func (x *StateTraffic_Choice) Reset() { - *x = StateTraffic_Choice{} +func (x *PatternFlowIgmpv1Unused) Reset() { + *x = PatternFlowIgmpv1Unused{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[858] + mi := &file_otg_proto_msgTypes[779] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *StateTraffic_Choice) String() string { +func (x *PatternFlowIgmpv1Unused) String() string { return protoimpl.X.MessageStringOf(x) } -func (*StateTraffic_Choice) ProtoMessage() {} +func (*PatternFlowIgmpv1Unused) ProtoMessage() {} -func (x *StateTraffic_Choice) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[858] +func (x *PatternFlowIgmpv1Unused) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[779] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -84840,72 +85234,86 @@ func (x *StateTraffic_Choice) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use StateTraffic_Choice.ProtoReflect.Descriptor instead. -func (*StateTraffic_Choice) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{226, 0} +// Deprecated: Use PatternFlowIgmpv1Unused.ProtoReflect.Descriptor instead. +func (*PatternFlowIgmpv1Unused) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{779} } -type StateProtocol_Choice struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields +func (x *PatternFlowIgmpv1Unused) GetChoice() PatternFlowIgmpv1Unused_Choice_Enum { + if x != nil && x.Choice != nil { + return *x.Choice + } + return PatternFlowIgmpv1Unused_Choice_unspecified } -func (x *StateProtocol_Choice) Reset() { - *x = StateProtocol_Choice{} - if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[859] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) +func (x *PatternFlowIgmpv1Unused) GetValue() uint32 { + if x != nil && x.Value != nil { + return *x.Value } + return 0 } -func (x *StateProtocol_Choice) String() string { - return protoimpl.X.MessageStringOf(x) +func (x *PatternFlowIgmpv1Unused) GetValues() []uint32 { + if x != nil { + return x.Values + } + return nil } -func (*StateProtocol_Choice) ProtoMessage() {} +func (x *PatternFlowIgmpv1Unused) GetIncrement() *PatternFlowIgmpv1UnusedCounter { + if x != nil { + return x.Increment + } + return nil +} -func (x *StateProtocol_Choice) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[859] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms +func (x *PatternFlowIgmpv1Unused) GetDecrement() *PatternFlowIgmpv1UnusedCounter { + if x != nil { + return x.Decrement } - return mi.MessageOf(x) + return nil } -// Deprecated: Use StateProtocol_Choice.ProtoReflect.Descriptor instead. -func (*StateProtocol_Choice) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{227, 0} +func (x *PatternFlowIgmpv1Unused) GetMetricTags() []*PatternFlowIgmpv1UnusedMetricTag { + if x != nil { + return x.MetricTags + } + return nil } -type StatePortLink_State struct { +// Checksum +type PatternFlowIgmpv1Checksum struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields + + // The type of checksum + // default = Choice.Enum.generated + Choice *PatternFlowIgmpv1Checksum_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.PatternFlowIgmpv1Checksum_Choice_Enum,oneof" json:"choice,omitempty"` + // A system generated checksum value + // default = Generated.Enum.good + Generated *PatternFlowIgmpv1Checksum_Generated_Enum `protobuf:"varint,2,opt,name=generated,proto3,enum=otg.PatternFlowIgmpv1Checksum_Generated_Enum,oneof" json:"generated,omitempty"` + // A custom checksum value + Custom *uint32 `protobuf:"varint,3,opt,name=custom,proto3,oneof" json:"custom,omitempty"` } -func (x *StatePortLink_State) Reset() { - *x = StatePortLink_State{} +func (x *PatternFlowIgmpv1Checksum) Reset() { + *x = PatternFlowIgmpv1Checksum{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[860] + mi := &file_otg_proto_msgTypes[780] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *StatePortLink_State) String() string { +func (x *PatternFlowIgmpv1Checksum) String() string { return protoimpl.X.MessageStringOf(x) } -func (*StatePortLink_State) ProtoMessage() {} +func (*PatternFlowIgmpv1Checksum) ProtoMessage() {} -func (x *StatePortLink_State) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[860] +func (x *PatternFlowIgmpv1Checksum) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[780] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -84916,34 +85324,66 @@ func (x *StatePortLink_State) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use StatePortLink_State.ProtoReflect.Descriptor instead. -func (*StatePortLink_State) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{228, 0} +// Deprecated: Use PatternFlowIgmpv1Checksum.ProtoReflect.Descriptor instead. +func (*PatternFlowIgmpv1Checksum) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{780} } -type StatePortCapture_State struct { +func (x *PatternFlowIgmpv1Checksum) GetChoice() PatternFlowIgmpv1Checksum_Choice_Enum { + if x != nil && x.Choice != nil { + return *x.Choice + } + return PatternFlowIgmpv1Checksum_Choice_unspecified +} + +func (x *PatternFlowIgmpv1Checksum) GetGenerated() PatternFlowIgmpv1Checksum_Generated_Enum { + if x != nil && x.Generated != nil { + return *x.Generated + } + return PatternFlowIgmpv1Checksum_Generated_unspecified +} + +func (x *PatternFlowIgmpv1Checksum) GetCustom() uint32 { + if x != nil && x.Custom != nil { + return *x.Custom + } + return 0 +} + +// ipv4 counter pattern +type PatternFlowIgmpv1GroupAddressCounter struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields + + // Description missing in models + // default = 0.0.0.0 + Start *string `protobuf:"bytes,1,opt,name=start,proto3,oneof" json:"start,omitempty"` + // Description missing in models + // default = 0.0.0.1 + Step *string `protobuf:"bytes,2,opt,name=step,proto3,oneof" json:"step,omitempty"` + // Description missing in models + // default = 1 + Count *uint32 `protobuf:"varint,3,opt,name=count,proto3,oneof" json:"count,omitempty"` } -func (x *StatePortCapture_State) Reset() { - *x = StatePortCapture_State{} +func (x *PatternFlowIgmpv1GroupAddressCounter) Reset() { + *x = PatternFlowIgmpv1GroupAddressCounter{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[861] + mi := &file_otg_proto_msgTypes[781] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *StatePortCapture_State) String() string { +func (x *PatternFlowIgmpv1GroupAddressCounter) String() string { return protoimpl.X.MessageStringOf(x) } -func (*StatePortCapture_State) ProtoMessage() {} +func (*PatternFlowIgmpv1GroupAddressCounter) ProtoMessage() {} -func (x *StatePortCapture_State) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[861] +func (x *PatternFlowIgmpv1GroupAddressCounter) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[781] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -84954,34 +85394,70 @@ func (x *StatePortCapture_State) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use StatePortCapture_State.ProtoReflect.Descriptor instead. -func (*StatePortCapture_State) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{229, 0} +// Deprecated: Use PatternFlowIgmpv1GroupAddressCounter.ProtoReflect.Descriptor instead. +func (*PatternFlowIgmpv1GroupAddressCounter) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{781} } -type StateTrafficFlowTransmit_State struct { +func (x *PatternFlowIgmpv1GroupAddressCounter) GetStart() string { + if x != nil && x.Start != nil { + return *x.Start + } + return "" +} + +func (x *PatternFlowIgmpv1GroupAddressCounter) GetStep() string { + if x != nil && x.Step != nil { + return *x.Step + } + return "" +} + +func (x *PatternFlowIgmpv1GroupAddressCounter) GetCount() uint32 { + if x != nil && x.Count != nil { + return *x.Count + } + return 0 +} + +// Metric tag can be used to enable tracking portion of or all bits in a corresponding +// header field for metrics per each applicable value. These would appear as tagged +// metrics in corresponding flow metrics. +type PatternFlowIgmpv1GroupAddressMetricTag struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields + + // Name used to identify the metrics associated with the values applicable for configured + // offset and length inside corresponding header field + // required = true + Name *string `protobuf:"bytes,1,opt,name=name,proto3,oneof" json:"name,omitempty"` + // Offset in bits relative to start of corresponding header field + // default = 0 + Offset *uint32 `protobuf:"varint,2,opt,name=offset,proto3,oneof" json:"offset,omitempty"` + // Number of bits to track for metrics starting from configured offset of corresponding + // header field + // default = 32 + Length *uint32 `protobuf:"varint,3,opt,name=length,proto3,oneof" json:"length,omitempty"` } -func (x *StateTrafficFlowTransmit_State) Reset() { - *x = StateTrafficFlowTransmit_State{} +func (x *PatternFlowIgmpv1GroupAddressMetricTag) Reset() { + *x = PatternFlowIgmpv1GroupAddressMetricTag{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[862] + mi := &file_otg_proto_msgTypes[782] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *StateTrafficFlowTransmit_State) String() string { +func (x *PatternFlowIgmpv1GroupAddressMetricTag) String() string { return protoimpl.X.MessageStringOf(x) } -func (*StateTrafficFlowTransmit_State) ProtoMessage() {} +func (*PatternFlowIgmpv1GroupAddressMetricTag) ProtoMessage() {} -func (x *StateTrafficFlowTransmit_State) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[862] +func (x *PatternFlowIgmpv1GroupAddressMetricTag) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[782] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -84992,72 +85468,74 @@ func (x *StateTrafficFlowTransmit_State) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use StateTrafficFlowTransmit_State.ProtoReflect.Descriptor instead. -func (*StateTrafficFlowTransmit_State) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{230, 0} +// Deprecated: Use PatternFlowIgmpv1GroupAddressMetricTag.ProtoReflect.Descriptor instead. +func (*PatternFlowIgmpv1GroupAddressMetricTag) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{782} } -type StateProtocolAll_State struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields -} - -func (x *StateProtocolAll_State) Reset() { - *x = StateProtocolAll_State{} - if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[863] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) +func (x *PatternFlowIgmpv1GroupAddressMetricTag) GetName() string { + if x != nil && x.Name != nil { + return *x.Name } + return "" } -func (x *StateProtocolAll_State) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*StateProtocolAll_State) ProtoMessage() {} - -func (x *StateProtocolAll_State) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[863] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms +func (x *PatternFlowIgmpv1GroupAddressMetricTag) GetOffset() uint32 { + if x != nil && x.Offset != nil { + return *x.Offset } - return mi.MessageOf(x) + return 0 } -// Deprecated: Use StateProtocolAll_State.ProtoReflect.Descriptor instead. -func (*StateProtocolAll_State) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{231, 0} +func (x *PatternFlowIgmpv1GroupAddressMetricTag) GetLength() uint32 { + if x != nil && x.Length != nil { + return *x.Length + } + return 0 } -type StateProtocolRoute_State struct { +// Group address +type PatternFlowIgmpv1GroupAddress struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields + + // Description missing in models + // default = Choice.Enum.value + Choice *PatternFlowIgmpv1GroupAddress_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.PatternFlowIgmpv1GroupAddress_Choice_Enum,oneof" json:"choice,omitempty"` + // Description missing in models + // default = 0.0.0.0 + Value *string `protobuf:"bytes,2,opt,name=value,proto3,oneof" json:"value,omitempty"` + // Description missing in models + // default = ['0.0.0.0'] + Values []string `protobuf:"bytes,3,rep,name=values,proto3" json:"values,omitempty"` + // Description missing in models + Increment *PatternFlowIgmpv1GroupAddressCounter `protobuf:"bytes,5,opt,name=increment,proto3" json:"increment,omitempty"` + // Description missing in models + Decrement *PatternFlowIgmpv1GroupAddressCounter `protobuf:"bytes,6,opt,name=decrement,proto3" json:"decrement,omitempty"` + // One or more metric tags can be used to enable tracking portion of or all bits in + // a corresponding header field for metrics per each applicable value. These would appear + // as tagged metrics in corresponding flow metrics. + MetricTags []*PatternFlowIgmpv1GroupAddressMetricTag `protobuf:"bytes,7,rep,name=metric_tags,json=metricTags,proto3" json:"metric_tags,omitempty"` } -func (x *StateProtocolRoute_State) Reset() { - *x = StateProtocolRoute_State{} +func (x *PatternFlowIgmpv1GroupAddress) Reset() { + *x = PatternFlowIgmpv1GroupAddress{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[864] + mi := &file_otg_proto_msgTypes[783] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *StateProtocolRoute_State) String() string { +func (x *PatternFlowIgmpv1GroupAddress) String() string { return protoimpl.X.MessageStringOf(x) } -func (*StateProtocolRoute_State) ProtoMessage() {} +func (*PatternFlowIgmpv1GroupAddress) ProtoMessage() {} -func (x *StateProtocolRoute_State) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[864] +func (x *PatternFlowIgmpv1GroupAddress) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[783] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -85068,72 +85546,87 @@ func (x *StateProtocolRoute_State) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use StateProtocolRoute_State.ProtoReflect.Descriptor instead. -func (*StateProtocolRoute_State) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{232, 0} +// Deprecated: Use PatternFlowIgmpv1GroupAddress.ProtoReflect.Descriptor instead. +func (*PatternFlowIgmpv1GroupAddress) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{783} } -type StateProtocolLacp_Choice struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields +func (x *PatternFlowIgmpv1GroupAddress) GetChoice() PatternFlowIgmpv1GroupAddress_Choice_Enum { + if x != nil && x.Choice != nil { + return *x.Choice + } + return PatternFlowIgmpv1GroupAddress_Choice_unspecified } -func (x *StateProtocolLacp_Choice) Reset() { - *x = StateProtocolLacp_Choice{} - if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[865] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) +func (x *PatternFlowIgmpv1GroupAddress) GetValue() string { + if x != nil && x.Value != nil { + return *x.Value } + return "" } -func (x *StateProtocolLacp_Choice) String() string { - return protoimpl.X.MessageStringOf(x) +func (x *PatternFlowIgmpv1GroupAddress) GetValues() []string { + if x != nil { + return x.Values + } + return nil } -func (*StateProtocolLacp_Choice) ProtoMessage() {} +func (x *PatternFlowIgmpv1GroupAddress) GetIncrement() *PatternFlowIgmpv1GroupAddressCounter { + if x != nil { + return x.Increment + } + return nil +} -func (x *StateProtocolLacp_Choice) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[865] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms +func (x *PatternFlowIgmpv1GroupAddress) GetDecrement() *PatternFlowIgmpv1GroupAddressCounter { + if x != nil { + return x.Decrement } - return mi.MessageOf(x) + return nil } -// Deprecated: Use StateProtocolLacp_Choice.ProtoReflect.Descriptor instead. -func (*StateProtocolLacp_Choice) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{233, 0} +func (x *PatternFlowIgmpv1GroupAddress) GetMetricTags() []*PatternFlowIgmpv1GroupAddressMetricTag { + if x != nil { + return x.MetricTags + } + return nil } -type StateProtocolLacpAdmin_State struct { +// integer counter pattern +type PatternFlowMplsLabelCounter struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields + + // Description missing in models + // default = 16 + Start *uint32 `protobuf:"varint,1,opt,name=start,proto3,oneof" json:"start,omitempty"` + // Description missing in models + // default = 1 + Step *uint32 `protobuf:"varint,2,opt,name=step,proto3,oneof" json:"step,omitempty"` + // Description missing in models + // default = 1 + Count *uint32 `protobuf:"varint,3,opt,name=count,proto3,oneof" json:"count,omitempty"` } -func (x *StateProtocolLacpAdmin_State) Reset() { - *x = StateProtocolLacpAdmin_State{} +func (x *PatternFlowMplsLabelCounter) Reset() { + *x = PatternFlowMplsLabelCounter{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[866] + mi := &file_otg_proto_msgTypes[784] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *StateProtocolLacpAdmin_State) String() string { +func (x *PatternFlowMplsLabelCounter) String() string { return protoimpl.X.MessageStringOf(x) } -func (*StateProtocolLacpAdmin_State) ProtoMessage() {} +func (*PatternFlowMplsLabelCounter) ProtoMessage() {} -func (x *StateProtocolLacpAdmin_State) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[866] +func (x *PatternFlowMplsLabelCounter) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[784] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -85144,72 +85637,70 @@ func (x *StateProtocolLacpAdmin_State) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use StateProtocolLacpAdmin_State.ProtoReflect.Descriptor instead. -func (*StateProtocolLacpAdmin_State) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{234, 0} -} - -type StateProtocolLacpMemberPorts_State struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields +// Deprecated: Use PatternFlowMplsLabelCounter.ProtoReflect.Descriptor instead. +func (*PatternFlowMplsLabelCounter) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{784} } -func (x *StateProtocolLacpMemberPorts_State) Reset() { - *x = StateProtocolLacpMemberPorts_State{} - if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[867] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) +func (x *PatternFlowMplsLabelCounter) GetStart() uint32 { + if x != nil && x.Start != nil { + return *x.Start } + return 0 } -func (x *StateProtocolLacpMemberPorts_State) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*StateProtocolLacpMemberPorts_State) ProtoMessage() {} - -func (x *StateProtocolLacpMemberPorts_State) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[867] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms +func (x *PatternFlowMplsLabelCounter) GetStep() uint32 { + if x != nil && x.Step != nil { + return *x.Step } - return mi.MessageOf(x) + return 0 } -// Deprecated: Use StateProtocolLacpMemberPorts_State.ProtoReflect.Descriptor instead. -func (*StateProtocolLacpMemberPorts_State) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{235, 0} +func (x *PatternFlowMplsLabelCounter) GetCount() uint32 { + if x != nil && x.Count != nil { + return *x.Count + } + return 0 } -type StateProtocolBgp_Choice struct { +// Metric tag can be used to enable tracking portion of or all bits in a corresponding +// header field for metrics per each applicable value. These would appear as tagged +// metrics in corresponding flow metrics. +type PatternFlowMplsLabelMetricTag struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields + + // Name used to identify the metrics associated with the values applicable for configured + // offset and length inside corresponding header field + // required = true + Name *string `protobuf:"bytes,1,opt,name=name,proto3,oneof" json:"name,omitempty"` + // Offset in bits relative to start of corresponding header field + // default = 0 + Offset *uint32 `protobuf:"varint,2,opt,name=offset,proto3,oneof" json:"offset,omitempty"` + // Number of bits to track for metrics starting from configured offset of corresponding + // header field + // default = 20 + Length *uint32 `protobuf:"varint,3,opt,name=length,proto3,oneof" json:"length,omitempty"` } -func (x *StateProtocolBgp_Choice) Reset() { - *x = StateProtocolBgp_Choice{} +func (x *PatternFlowMplsLabelMetricTag) Reset() { + *x = PatternFlowMplsLabelMetricTag{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[868] + mi := &file_otg_proto_msgTypes[785] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *StateProtocolBgp_Choice) String() string { +func (x *PatternFlowMplsLabelMetricTag) String() string { return protoimpl.X.MessageStringOf(x) } -func (*StateProtocolBgp_Choice) ProtoMessage() {} +func (*PatternFlowMplsLabelMetricTag) ProtoMessage() {} -func (x *StateProtocolBgp_Choice) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[868] +func (x *PatternFlowMplsLabelMetricTag) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[785] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -85220,34 +85711,79 @@ func (x *StateProtocolBgp_Choice) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use StateProtocolBgp_Choice.ProtoReflect.Descriptor instead. -func (*StateProtocolBgp_Choice) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{236, 0} +// Deprecated: Use PatternFlowMplsLabelMetricTag.ProtoReflect.Descriptor instead. +func (*PatternFlowMplsLabelMetricTag) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{785} } -type StateProtocolBgpPeers_State struct { +func (x *PatternFlowMplsLabelMetricTag) GetName() string { + if x != nil && x.Name != nil { + return *x.Name + } + return "" +} + +func (x *PatternFlowMplsLabelMetricTag) GetOffset() uint32 { + if x != nil && x.Offset != nil { + return *x.Offset + } + return 0 +} + +func (x *PatternFlowMplsLabelMetricTag) GetLength() uint32 { + if x != nil && x.Length != nil { + return *x.Length + } + return 0 +} + +// Label of routers +type PatternFlowMplsLabel struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields + + // Description missing in models + // default = Choice.Enum.auto + Choice *PatternFlowMplsLabel_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.PatternFlowMplsLabel_Choice_Enum,oneof" json:"choice,omitempty"` + // Description missing in models + // default = 16 + Value *uint32 `protobuf:"varint,2,opt,name=value,proto3,oneof" json:"value,omitempty"` + // Description missing in models + // default = [16] + Values []uint32 `protobuf:"varint,3,rep,packed,name=values,proto3" json:"values,omitempty"` + // The OTG implementation can provide a system generated + // value for this property. If the OTG is unable to generate a value + // the default value must be used. + // default = 16 + Auto *uint32 `protobuf:"varint,4,opt,name=auto,proto3,oneof" json:"auto,omitempty"` + // Description missing in models + Increment *PatternFlowMplsLabelCounter `protobuf:"bytes,6,opt,name=increment,proto3" json:"increment,omitempty"` + // Description missing in models + Decrement *PatternFlowMplsLabelCounter `protobuf:"bytes,7,opt,name=decrement,proto3" json:"decrement,omitempty"` + // One or more metric tags can be used to enable tracking portion of or all bits in + // a corresponding header field for metrics per each applicable value. These would appear + // as tagged metrics in corresponding flow metrics. + MetricTags []*PatternFlowMplsLabelMetricTag `protobuf:"bytes,8,rep,name=metric_tags,json=metricTags,proto3" json:"metric_tags,omitempty"` } -func (x *StateProtocolBgpPeers_State) Reset() { - *x = StateProtocolBgpPeers_State{} +func (x *PatternFlowMplsLabel) Reset() { + *x = PatternFlowMplsLabel{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[869] + mi := &file_otg_proto_msgTypes[786] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *StateProtocolBgpPeers_State) String() string { +func (x *PatternFlowMplsLabel) String() string { return protoimpl.X.MessageStringOf(x) } -func (*StateProtocolBgpPeers_State) ProtoMessage() {} +func (*PatternFlowMplsLabel) ProtoMessage() {} -func (x *StateProtocolBgpPeers_State) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[869] +func (x *PatternFlowMplsLabel) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[786] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -85258,72 +85794,94 @@ func (x *StateProtocolBgpPeers_State) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use StateProtocolBgpPeers_State.ProtoReflect.Descriptor instead. -func (*StateProtocolBgpPeers_State) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{237, 0} +// Deprecated: Use PatternFlowMplsLabel.ProtoReflect.Descriptor instead. +func (*PatternFlowMplsLabel) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{786} } -type StateProtocolIsis_Choice struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields +func (x *PatternFlowMplsLabel) GetChoice() PatternFlowMplsLabel_Choice_Enum { + if x != nil && x.Choice != nil { + return *x.Choice + } + return PatternFlowMplsLabel_Choice_unspecified } -func (x *StateProtocolIsis_Choice) Reset() { - *x = StateProtocolIsis_Choice{} - if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[870] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) +func (x *PatternFlowMplsLabel) GetValue() uint32 { + if x != nil && x.Value != nil { + return *x.Value } + return 0 } -func (x *StateProtocolIsis_Choice) String() string { - return protoimpl.X.MessageStringOf(x) +func (x *PatternFlowMplsLabel) GetValues() []uint32 { + if x != nil { + return x.Values + } + return nil } -func (*StateProtocolIsis_Choice) ProtoMessage() {} +func (x *PatternFlowMplsLabel) GetAuto() uint32 { + if x != nil && x.Auto != nil { + return *x.Auto + } + return 0 +} -func (x *StateProtocolIsis_Choice) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[870] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms +func (x *PatternFlowMplsLabel) GetIncrement() *PatternFlowMplsLabelCounter { + if x != nil { + return x.Increment } - return mi.MessageOf(x) + return nil } -// Deprecated: Use StateProtocolIsis_Choice.ProtoReflect.Descriptor instead. -func (*StateProtocolIsis_Choice) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{238, 0} +func (x *PatternFlowMplsLabel) GetDecrement() *PatternFlowMplsLabelCounter { + if x != nil { + return x.Decrement + } + return nil } -type StateProtocolIsisRouters_State struct { +func (x *PatternFlowMplsLabel) GetMetricTags() []*PatternFlowMplsLabelMetricTag { + if x != nil { + return x.MetricTags + } + return nil +} + +// integer counter pattern +type PatternFlowMplsTrafficClassCounter struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields + + // Description missing in models + // default = 0 + Start *uint32 `protobuf:"varint,1,opt,name=start,proto3,oneof" json:"start,omitempty"` + // Description missing in models + // default = 1 + Step *uint32 `protobuf:"varint,2,opt,name=step,proto3,oneof" json:"step,omitempty"` + // Description missing in models + // default = 1 + Count *uint32 `protobuf:"varint,3,opt,name=count,proto3,oneof" json:"count,omitempty"` } -func (x *StateProtocolIsisRouters_State) Reset() { - *x = StateProtocolIsisRouters_State{} +func (x *PatternFlowMplsTrafficClassCounter) Reset() { + *x = PatternFlowMplsTrafficClassCounter{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[871] + mi := &file_otg_proto_msgTypes[787] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *StateProtocolIsisRouters_State) String() string { +func (x *PatternFlowMplsTrafficClassCounter) String() string { return protoimpl.X.MessageStringOf(x) } -func (*StateProtocolIsisRouters_State) ProtoMessage() {} +func (*PatternFlowMplsTrafficClassCounter) ProtoMessage() {} -func (x *StateProtocolIsisRouters_State) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[871] +func (x *PatternFlowMplsTrafficClassCounter) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[787] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -85334,34 +85892,70 @@ func (x *StateProtocolIsisRouters_State) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use StateProtocolIsisRouters_State.ProtoReflect.Descriptor instead. -func (*StateProtocolIsisRouters_State) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{239, 0} +// Deprecated: Use PatternFlowMplsTrafficClassCounter.ProtoReflect.Descriptor instead. +func (*PatternFlowMplsTrafficClassCounter) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{787} } -type ControlAction_Choice struct { +func (x *PatternFlowMplsTrafficClassCounter) GetStart() uint32 { + if x != nil && x.Start != nil { + return *x.Start + } + return 0 +} + +func (x *PatternFlowMplsTrafficClassCounter) GetStep() uint32 { + if x != nil && x.Step != nil { + return *x.Step + } + return 0 +} + +func (x *PatternFlowMplsTrafficClassCounter) GetCount() uint32 { + if x != nil && x.Count != nil { + return *x.Count + } + return 0 +} + +// Metric tag can be used to enable tracking portion of or all bits in a corresponding +// header field for metrics per each applicable value. These would appear as tagged +// metrics in corresponding flow metrics. +type PatternFlowMplsTrafficClassMetricTag struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields + + // Name used to identify the metrics associated with the values applicable for configured + // offset and length inside corresponding header field + // required = true + Name *string `protobuf:"bytes,1,opt,name=name,proto3,oneof" json:"name,omitempty"` + // Offset in bits relative to start of corresponding header field + // default = 0 + Offset *uint32 `protobuf:"varint,2,opt,name=offset,proto3,oneof" json:"offset,omitempty"` + // Number of bits to track for metrics starting from configured offset of corresponding + // header field + // default = 3 + Length *uint32 `protobuf:"varint,3,opt,name=length,proto3,oneof" json:"length,omitempty"` } -func (x *ControlAction_Choice) Reset() { - *x = ControlAction_Choice{} +func (x *PatternFlowMplsTrafficClassMetricTag) Reset() { + *x = PatternFlowMplsTrafficClassMetricTag{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[872] + mi := &file_otg_proto_msgTypes[788] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *ControlAction_Choice) String() string { +func (x *PatternFlowMplsTrafficClassMetricTag) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ControlAction_Choice) ProtoMessage() {} +func (*PatternFlowMplsTrafficClassMetricTag) ProtoMessage() {} -func (x *ControlAction_Choice) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[872] +func (x *PatternFlowMplsTrafficClassMetricTag) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[788] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -85372,34 +85966,74 @@ func (x *ControlAction_Choice) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use ControlAction_Choice.ProtoReflect.Descriptor instead. -func (*ControlAction_Choice) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{240, 0} +// Deprecated: Use PatternFlowMplsTrafficClassMetricTag.ProtoReflect.Descriptor instead. +func (*PatternFlowMplsTrafficClassMetricTag) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{788} } -type ActionResponse_Choice struct { +func (x *PatternFlowMplsTrafficClassMetricTag) GetName() string { + if x != nil && x.Name != nil { + return *x.Name + } + return "" +} + +func (x *PatternFlowMplsTrafficClassMetricTag) GetOffset() uint32 { + if x != nil && x.Offset != nil { + return *x.Offset + } + return 0 +} + +func (x *PatternFlowMplsTrafficClassMetricTag) GetLength() uint32 { + if x != nil && x.Length != nil { + return *x.Length + } + return 0 +} + +// Traffic class +type PatternFlowMplsTrafficClass struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields + + // Description missing in models + // default = Choice.Enum.value + Choice *PatternFlowMplsTrafficClass_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.PatternFlowMplsTrafficClass_Choice_Enum,oneof" json:"choice,omitempty"` + // Description missing in models + // default = 0 + Value *uint32 `protobuf:"varint,2,opt,name=value,proto3,oneof" json:"value,omitempty"` + // Description missing in models + // default = [0] + Values []uint32 `protobuf:"varint,3,rep,packed,name=values,proto3" json:"values,omitempty"` + // Description missing in models + Increment *PatternFlowMplsTrafficClassCounter `protobuf:"bytes,5,opt,name=increment,proto3" json:"increment,omitempty"` + // Description missing in models + Decrement *PatternFlowMplsTrafficClassCounter `protobuf:"bytes,6,opt,name=decrement,proto3" json:"decrement,omitempty"` + // One or more metric tags can be used to enable tracking portion of or all bits in + // a corresponding header field for metrics per each applicable value. These would appear + // as tagged metrics in corresponding flow metrics. + MetricTags []*PatternFlowMplsTrafficClassMetricTag `protobuf:"bytes,7,rep,name=metric_tags,json=metricTags,proto3" json:"metric_tags,omitempty"` } -func (x *ActionResponse_Choice) Reset() { - *x = ActionResponse_Choice{} +func (x *PatternFlowMplsTrafficClass) Reset() { + *x = PatternFlowMplsTrafficClass{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[873] + mi := &file_otg_proto_msgTypes[789] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *ActionResponse_Choice) String() string { +func (x *PatternFlowMplsTrafficClass) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ActionResponse_Choice) ProtoMessage() {} +func (*PatternFlowMplsTrafficClass) ProtoMessage() {} -func (x *ActionResponse_Choice) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[873] +func (x *PatternFlowMplsTrafficClass) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[789] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -85410,72 +86044,87 @@ func (x *ActionResponse_Choice) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use ActionResponse_Choice.ProtoReflect.Descriptor instead. -func (*ActionResponse_Choice) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{242, 0} +// Deprecated: Use PatternFlowMplsTrafficClass.ProtoReflect.Descriptor instead. +func (*PatternFlowMplsTrafficClass) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{789} } -type ActionProtocol_Choice struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields +func (x *PatternFlowMplsTrafficClass) GetChoice() PatternFlowMplsTrafficClass_Choice_Enum { + if x != nil && x.Choice != nil { + return *x.Choice + } + return PatternFlowMplsTrafficClass_Choice_unspecified } -func (x *ActionProtocol_Choice) Reset() { - *x = ActionProtocol_Choice{} - if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[874] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) +func (x *PatternFlowMplsTrafficClass) GetValue() uint32 { + if x != nil && x.Value != nil { + return *x.Value } + return 0 } -func (x *ActionProtocol_Choice) String() string { - return protoimpl.X.MessageStringOf(x) +func (x *PatternFlowMplsTrafficClass) GetValues() []uint32 { + if x != nil { + return x.Values + } + return nil } -func (*ActionProtocol_Choice) ProtoMessage() {} +func (x *PatternFlowMplsTrafficClass) GetIncrement() *PatternFlowMplsTrafficClassCounter { + if x != nil { + return x.Increment + } + return nil +} -func (x *ActionProtocol_Choice) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[874] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms +func (x *PatternFlowMplsTrafficClass) GetDecrement() *PatternFlowMplsTrafficClassCounter { + if x != nil { + return x.Decrement } - return mi.MessageOf(x) + return nil } -// Deprecated: Use ActionProtocol_Choice.ProtoReflect.Descriptor instead. -func (*ActionProtocol_Choice) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{243, 0} +func (x *PatternFlowMplsTrafficClass) GetMetricTags() []*PatternFlowMplsTrafficClassMetricTag { + if x != nil { + return x.MetricTags + } + return nil } -type ActionResponseProtocol_Choice struct { +// integer counter pattern +type PatternFlowMplsBottomOfStackCounter struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields + + // Description missing in models + // default = 1 + Start *uint32 `protobuf:"varint,1,opt,name=start,proto3,oneof" json:"start,omitempty"` + // Description missing in models + // default = 1 + Step *uint32 `protobuf:"varint,2,opt,name=step,proto3,oneof" json:"step,omitempty"` + // Description missing in models + // default = 1 + Count *uint32 `protobuf:"varint,3,opt,name=count,proto3,oneof" json:"count,omitempty"` } -func (x *ActionResponseProtocol_Choice) Reset() { - *x = ActionResponseProtocol_Choice{} +func (x *PatternFlowMplsBottomOfStackCounter) Reset() { + *x = PatternFlowMplsBottomOfStackCounter{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[875] + mi := &file_otg_proto_msgTypes[790] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *ActionResponseProtocol_Choice) String() string { +func (x *PatternFlowMplsBottomOfStackCounter) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ActionResponseProtocol_Choice) ProtoMessage() {} +func (*PatternFlowMplsBottomOfStackCounter) ProtoMessage() {} -func (x *ActionResponseProtocol_Choice) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[875] +func (x *PatternFlowMplsBottomOfStackCounter) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[790] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -85486,34 +86135,70 @@ func (x *ActionResponseProtocol_Choice) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use ActionResponseProtocol_Choice.ProtoReflect.Descriptor instead. -func (*ActionResponseProtocol_Choice) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{244, 0} +// Deprecated: Use PatternFlowMplsBottomOfStackCounter.ProtoReflect.Descriptor instead. +func (*PatternFlowMplsBottomOfStackCounter) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{790} } -type ActionProtocolIpv4_Choice struct { +func (x *PatternFlowMplsBottomOfStackCounter) GetStart() uint32 { + if x != nil && x.Start != nil { + return *x.Start + } + return 0 +} + +func (x *PatternFlowMplsBottomOfStackCounter) GetStep() uint32 { + if x != nil && x.Step != nil { + return *x.Step + } + return 0 +} + +func (x *PatternFlowMplsBottomOfStackCounter) GetCount() uint32 { + if x != nil && x.Count != nil { + return *x.Count + } + return 0 +} + +// Metric tag can be used to enable tracking portion of or all bits in a corresponding +// header field for metrics per each applicable value. These would appear as tagged +// metrics in corresponding flow metrics. +type PatternFlowMplsBottomOfStackMetricTag struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields + + // Name used to identify the metrics associated with the values applicable for configured + // offset and length inside corresponding header field + // required = true + Name *string `protobuf:"bytes,1,opt,name=name,proto3,oneof" json:"name,omitempty"` + // Offset in bits relative to start of corresponding header field + // default = 0 + Offset *uint32 `protobuf:"varint,2,opt,name=offset,proto3,oneof" json:"offset,omitempty"` + // Number of bits to track for metrics starting from configured offset of corresponding + // header field + // default = 1 + Length *uint32 `protobuf:"varint,3,opt,name=length,proto3,oneof" json:"length,omitempty"` } -func (x *ActionProtocolIpv4_Choice) Reset() { - *x = ActionProtocolIpv4_Choice{} +func (x *PatternFlowMplsBottomOfStackMetricTag) Reset() { + *x = PatternFlowMplsBottomOfStackMetricTag{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[876] + mi := &file_otg_proto_msgTypes[791] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *ActionProtocolIpv4_Choice) String() string { +func (x *PatternFlowMplsBottomOfStackMetricTag) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ActionProtocolIpv4_Choice) ProtoMessage() {} +func (*PatternFlowMplsBottomOfStackMetricTag) ProtoMessage() {} -func (x *ActionProtocolIpv4_Choice) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[876] +func (x *PatternFlowMplsBottomOfStackMetricTag) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[791] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -85524,34 +86209,79 @@ func (x *ActionProtocolIpv4_Choice) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use ActionProtocolIpv4_Choice.ProtoReflect.Descriptor instead. -func (*ActionProtocolIpv4_Choice) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{245, 0} +// Deprecated: Use PatternFlowMplsBottomOfStackMetricTag.ProtoReflect.Descriptor instead. +func (*PatternFlowMplsBottomOfStackMetricTag) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{791} } -type ActionResponseProtocolIpv4_Choice struct { +func (x *PatternFlowMplsBottomOfStackMetricTag) GetName() string { + if x != nil && x.Name != nil { + return *x.Name + } + return "" +} + +func (x *PatternFlowMplsBottomOfStackMetricTag) GetOffset() uint32 { + if x != nil && x.Offset != nil { + return *x.Offset + } + return 0 +} + +func (x *PatternFlowMplsBottomOfStackMetricTag) GetLength() uint32 { + if x != nil && x.Length != nil { + return *x.Length + } + return 0 +} + +// Bottom of stack +type PatternFlowMplsBottomOfStack struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields + + // Description missing in models + // default = Choice.Enum.auto + Choice *PatternFlowMplsBottomOfStack_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.PatternFlowMplsBottomOfStack_Choice_Enum,oneof" json:"choice,omitempty"` + // Description missing in models + // default = 1 + Value *uint32 `protobuf:"varint,2,opt,name=value,proto3,oneof" json:"value,omitempty"` + // Description missing in models + // default = [1] + Values []uint32 `protobuf:"varint,3,rep,packed,name=values,proto3" json:"values,omitempty"` + // The OTG implementation can provide a system generated + // value for this property. If the OTG is unable to generate a value + // the default value must be used. + // default = 1 + Auto *uint32 `protobuf:"varint,4,opt,name=auto,proto3,oneof" json:"auto,omitempty"` + // Description missing in models + Increment *PatternFlowMplsBottomOfStackCounter `protobuf:"bytes,6,opt,name=increment,proto3" json:"increment,omitempty"` + // Description missing in models + Decrement *PatternFlowMplsBottomOfStackCounter `protobuf:"bytes,7,opt,name=decrement,proto3" json:"decrement,omitempty"` + // One or more metric tags can be used to enable tracking portion of or all bits in + // a corresponding header field for metrics per each applicable value. These would appear + // as tagged metrics in corresponding flow metrics. + MetricTags []*PatternFlowMplsBottomOfStackMetricTag `protobuf:"bytes,8,rep,name=metric_tags,json=metricTags,proto3" json:"metric_tags,omitempty"` } -func (x *ActionResponseProtocolIpv4_Choice) Reset() { - *x = ActionResponseProtocolIpv4_Choice{} +func (x *PatternFlowMplsBottomOfStack) Reset() { + *x = PatternFlowMplsBottomOfStack{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[877] + mi := &file_otg_proto_msgTypes[792] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *ActionResponseProtocolIpv4_Choice) String() string { +func (x *PatternFlowMplsBottomOfStack) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ActionResponseProtocolIpv4_Choice) ProtoMessage() {} +func (*PatternFlowMplsBottomOfStack) ProtoMessage() {} -func (x *ActionResponseProtocolIpv4_Choice) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[877] +func (x *PatternFlowMplsBottomOfStack) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[792] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -85562,72 +86292,94 @@ func (x *ActionResponseProtocolIpv4_Choice) ProtoReflect() protoreflect.Message return mi.MessageOf(x) } -// Deprecated: Use ActionResponseProtocolIpv4_Choice.ProtoReflect.Descriptor instead. -func (*ActionResponseProtocolIpv4_Choice) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{246, 0} +// Deprecated: Use PatternFlowMplsBottomOfStack.ProtoReflect.Descriptor instead. +func (*PatternFlowMplsBottomOfStack) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{792} } -type ActionResponseProtocolIpv4PingResponse_Result struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields +func (x *PatternFlowMplsBottomOfStack) GetChoice() PatternFlowMplsBottomOfStack_Choice_Enum { + if x != nil && x.Choice != nil { + return *x.Choice + } + return PatternFlowMplsBottomOfStack_Choice_unspecified } -func (x *ActionResponseProtocolIpv4PingResponse_Result) Reset() { - *x = ActionResponseProtocolIpv4PingResponse_Result{} - if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[878] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) +func (x *PatternFlowMplsBottomOfStack) GetValue() uint32 { + if x != nil && x.Value != nil { + return *x.Value } + return 0 } -func (x *ActionResponseProtocolIpv4PingResponse_Result) String() string { - return protoimpl.X.MessageStringOf(x) +func (x *PatternFlowMplsBottomOfStack) GetValues() []uint32 { + if x != nil { + return x.Values + } + return nil } -func (*ActionResponseProtocolIpv4PingResponse_Result) ProtoMessage() {} +func (x *PatternFlowMplsBottomOfStack) GetAuto() uint32 { + if x != nil && x.Auto != nil { + return *x.Auto + } + return 0 +} -func (x *ActionResponseProtocolIpv4PingResponse_Result) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[878] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms +func (x *PatternFlowMplsBottomOfStack) GetIncrement() *PatternFlowMplsBottomOfStackCounter { + if x != nil { + return x.Increment } - return mi.MessageOf(x) + return nil } -// Deprecated: Use ActionResponseProtocolIpv4PingResponse_Result.ProtoReflect.Descriptor instead. -func (*ActionResponseProtocolIpv4PingResponse_Result) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{250, 0} +func (x *PatternFlowMplsBottomOfStack) GetDecrement() *PatternFlowMplsBottomOfStackCounter { + if x != nil { + return x.Decrement + } + return nil } -type ActionProtocolIpv6_Choice struct { +func (x *PatternFlowMplsBottomOfStack) GetMetricTags() []*PatternFlowMplsBottomOfStackMetricTag { + if x != nil { + return x.MetricTags + } + return nil +} + +// integer counter pattern +type PatternFlowMplsTimeToLiveCounter struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields + + // Description missing in models + // default = 64 + Start *uint32 `protobuf:"varint,1,opt,name=start,proto3,oneof" json:"start,omitempty"` + // Description missing in models + // default = 1 + Step *uint32 `protobuf:"varint,2,opt,name=step,proto3,oneof" json:"step,omitempty"` + // Description missing in models + // default = 1 + Count *uint32 `protobuf:"varint,3,opt,name=count,proto3,oneof" json:"count,omitempty"` } -func (x *ActionProtocolIpv6_Choice) Reset() { - *x = ActionProtocolIpv6_Choice{} +func (x *PatternFlowMplsTimeToLiveCounter) Reset() { + *x = PatternFlowMplsTimeToLiveCounter{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[879] + mi := &file_otg_proto_msgTypes[793] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *ActionProtocolIpv6_Choice) String() string { +func (x *PatternFlowMplsTimeToLiveCounter) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ActionProtocolIpv6_Choice) ProtoMessage() {} +func (*PatternFlowMplsTimeToLiveCounter) ProtoMessage() {} -func (x *ActionProtocolIpv6_Choice) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[879] +func (x *PatternFlowMplsTimeToLiveCounter) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[793] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -85638,34 +86390,70 @@ func (x *ActionProtocolIpv6_Choice) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use ActionProtocolIpv6_Choice.ProtoReflect.Descriptor instead. -func (*ActionProtocolIpv6_Choice) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{251, 0} +// Deprecated: Use PatternFlowMplsTimeToLiveCounter.ProtoReflect.Descriptor instead. +func (*PatternFlowMplsTimeToLiveCounter) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{793} } -type ActionResponseProtocolIpv6_Choice struct { +func (x *PatternFlowMplsTimeToLiveCounter) GetStart() uint32 { + if x != nil && x.Start != nil { + return *x.Start + } + return 0 +} + +func (x *PatternFlowMplsTimeToLiveCounter) GetStep() uint32 { + if x != nil && x.Step != nil { + return *x.Step + } + return 0 +} + +func (x *PatternFlowMplsTimeToLiveCounter) GetCount() uint32 { + if x != nil && x.Count != nil { + return *x.Count + } + return 0 +} + +// Metric tag can be used to enable tracking portion of or all bits in a corresponding +// header field for metrics per each applicable value. These would appear as tagged +// metrics in corresponding flow metrics. +type PatternFlowMplsTimeToLiveMetricTag struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields + + // Name used to identify the metrics associated with the values applicable for configured + // offset and length inside corresponding header field + // required = true + Name *string `protobuf:"bytes,1,opt,name=name,proto3,oneof" json:"name,omitempty"` + // Offset in bits relative to start of corresponding header field + // default = 0 + Offset *uint32 `protobuf:"varint,2,opt,name=offset,proto3,oneof" json:"offset,omitempty"` + // Number of bits to track for metrics starting from configured offset of corresponding + // header field + // default = 8 + Length *uint32 `protobuf:"varint,3,opt,name=length,proto3,oneof" json:"length,omitempty"` } -func (x *ActionResponseProtocolIpv6_Choice) Reset() { - *x = ActionResponseProtocolIpv6_Choice{} +func (x *PatternFlowMplsTimeToLiveMetricTag) Reset() { + *x = PatternFlowMplsTimeToLiveMetricTag{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[880] + mi := &file_otg_proto_msgTypes[794] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *ActionResponseProtocolIpv6_Choice) String() string { +func (x *PatternFlowMplsTimeToLiveMetricTag) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ActionResponseProtocolIpv6_Choice) ProtoMessage() {} +func (*PatternFlowMplsTimeToLiveMetricTag) ProtoMessage() {} -func (x *ActionResponseProtocolIpv6_Choice) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[880] +func (x *PatternFlowMplsTimeToLiveMetricTag) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[794] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -85676,34 +86464,74 @@ func (x *ActionResponseProtocolIpv6_Choice) ProtoReflect() protoreflect.Message return mi.MessageOf(x) } -// Deprecated: Use ActionResponseProtocolIpv6_Choice.ProtoReflect.Descriptor instead. -func (*ActionResponseProtocolIpv6_Choice) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{252, 0} +// Deprecated: Use PatternFlowMplsTimeToLiveMetricTag.ProtoReflect.Descriptor instead. +func (*PatternFlowMplsTimeToLiveMetricTag) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{794} } -type ActionResponseProtocolIpv6PingResponse_Result struct { +func (x *PatternFlowMplsTimeToLiveMetricTag) GetName() string { + if x != nil && x.Name != nil { + return *x.Name + } + return "" +} + +func (x *PatternFlowMplsTimeToLiveMetricTag) GetOffset() uint32 { + if x != nil && x.Offset != nil { + return *x.Offset + } + return 0 +} + +func (x *PatternFlowMplsTimeToLiveMetricTag) GetLength() uint32 { + if x != nil && x.Length != nil { + return *x.Length + } + return 0 +} + +// Time to live +type PatternFlowMplsTimeToLive struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields + + // Description missing in models + // default = Choice.Enum.value + Choice *PatternFlowMplsTimeToLive_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.PatternFlowMplsTimeToLive_Choice_Enum,oneof" json:"choice,omitempty"` + // Description missing in models + // default = 64 + Value *uint32 `protobuf:"varint,2,opt,name=value,proto3,oneof" json:"value,omitempty"` + // Description missing in models + // default = [64] + Values []uint32 `protobuf:"varint,3,rep,packed,name=values,proto3" json:"values,omitempty"` + // Description missing in models + Increment *PatternFlowMplsTimeToLiveCounter `protobuf:"bytes,5,opt,name=increment,proto3" json:"increment,omitempty"` + // Description missing in models + Decrement *PatternFlowMplsTimeToLiveCounter `protobuf:"bytes,6,opt,name=decrement,proto3" json:"decrement,omitempty"` + // One or more metric tags can be used to enable tracking portion of or all bits in + // a corresponding header field for metrics per each applicable value. These would appear + // as tagged metrics in corresponding flow metrics. + MetricTags []*PatternFlowMplsTimeToLiveMetricTag `protobuf:"bytes,7,rep,name=metric_tags,json=metricTags,proto3" json:"metric_tags,omitempty"` } -func (x *ActionResponseProtocolIpv6PingResponse_Result) Reset() { - *x = ActionResponseProtocolIpv6PingResponse_Result{} +func (x *PatternFlowMplsTimeToLive) Reset() { + *x = PatternFlowMplsTimeToLive{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[881] + mi := &file_otg_proto_msgTypes[795] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *ActionResponseProtocolIpv6PingResponse_Result) String() string { +func (x *PatternFlowMplsTimeToLive) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ActionResponseProtocolIpv6PingResponse_Result) ProtoMessage() {} +func (*PatternFlowMplsTimeToLive) ProtoMessage() {} -func (x *ActionResponseProtocolIpv6PingResponse_Result) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[881] +func (x *PatternFlowMplsTimeToLive) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[795] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -85714,72 +86542,87 @@ func (x *ActionResponseProtocolIpv6PingResponse_Result) ProtoReflect() protorefl return mi.MessageOf(x) } -// Deprecated: Use ActionResponseProtocolIpv6PingResponse_Result.ProtoReflect.Descriptor instead. -func (*ActionResponseProtocolIpv6PingResponse_Result) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{256, 0} +// Deprecated: Use PatternFlowMplsTimeToLive.ProtoReflect.Descriptor instead. +func (*PatternFlowMplsTimeToLive) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{795} } -type ActionProtocolBgp_Choice struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields +func (x *PatternFlowMplsTimeToLive) GetChoice() PatternFlowMplsTimeToLive_Choice_Enum { + if x != nil && x.Choice != nil { + return *x.Choice + } + return PatternFlowMplsTimeToLive_Choice_unspecified } -func (x *ActionProtocolBgp_Choice) Reset() { - *x = ActionProtocolBgp_Choice{} - if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[882] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) +func (x *PatternFlowMplsTimeToLive) GetValue() uint32 { + if x != nil && x.Value != nil { + return *x.Value } + return 0 } -func (x *ActionProtocolBgp_Choice) String() string { - return protoimpl.X.MessageStringOf(x) +func (x *PatternFlowMplsTimeToLive) GetValues() []uint32 { + if x != nil { + return x.Values + } + return nil } -func (*ActionProtocolBgp_Choice) ProtoMessage() {} +func (x *PatternFlowMplsTimeToLive) GetIncrement() *PatternFlowMplsTimeToLiveCounter { + if x != nil { + return x.Increment + } + return nil +} -func (x *ActionProtocolBgp_Choice) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[882] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms +func (x *PatternFlowMplsTimeToLive) GetDecrement() *PatternFlowMplsTimeToLiveCounter { + if x != nil { + return x.Decrement } - return mi.MessageOf(x) + return nil } -// Deprecated: Use ActionProtocolBgp_Choice.ProtoReflect.Descriptor instead. -func (*ActionProtocolBgp_Choice) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{257, 0} +func (x *PatternFlowMplsTimeToLive) GetMetricTags() []*PatternFlowMplsTimeToLiveMetricTag { + if x != nil { + return x.MetricTags + } + return nil } -type ActionProtocolBgpNotification_Choice struct { +// integer counter pattern +type PatternFlowRsvpVersionCounter struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields + + // Description missing in models + // default = 1 + Start *uint32 `protobuf:"varint,1,opt,name=start,proto3,oneof" json:"start,omitempty"` + // Description missing in models + // default = 1 + Step *uint32 `protobuf:"varint,2,opt,name=step,proto3,oneof" json:"step,omitempty"` + // Description missing in models + // default = 1 + Count *uint32 `protobuf:"varint,3,opt,name=count,proto3,oneof" json:"count,omitempty"` } -func (x *ActionProtocolBgpNotification_Choice) Reset() { - *x = ActionProtocolBgpNotification_Choice{} +func (x *PatternFlowRsvpVersionCounter) Reset() { + *x = PatternFlowRsvpVersionCounter{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[883] + mi := &file_otg_proto_msgTypes[796] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *ActionProtocolBgpNotification_Choice) String() string { +func (x *PatternFlowRsvpVersionCounter) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ActionProtocolBgpNotification_Choice) ProtoMessage() {} +func (*PatternFlowRsvpVersionCounter) ProtoMessage() {} -func (x *ActionProtocolBgpNotification_Choice) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[883] +func (x *PatternFlowRsvpVersionCounter) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[796] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -85790,72 +86633,70 @@ func (x *ActionProtocolBgpNotification_Choice) ProtoReflect() protoreflect.Messa return mi.MessageOf(x) } -// Deprecated: Use ActionProtocolBgpNotification_Choice.ProtoReflect.Descriptor instead. -func (*ActionProtocolBgpNotification_Choice) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{258, 0} +// Deprecated: Use PatternFlowRsvpVersionCounter.ProtoReflect.Descriptor instead. +func (*PatternFlowRsvpVersionCounter) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{796} } -type MetricsRequest_Choice struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields +func (x *PatternFlowRsvpVersionCounter) GetStart() uint32 { + if x != nil && x.Start != nil { + return *x.Start + } + return 0 } -func (x *MetricsRequest_Choice) Reset() { - *x = MetricsRequest_Choice{} - if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[884] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) +func (x *PatternFlowRsvpVersionCounter) GetStep() uint32 { + if x != nil && x.Step != nil { + return *x.Step } + return 0 } -func (x *MetricsRequest_Choice) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*MetricsRequest_Choice) ProtoMessage() {} - -func (x *MetricsRequest_Choice) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[884] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms +func (x *PatternFlowRsvpVersionCounter) GetCount() uint32 { + if x != nil && x.Count != nil { + return *x.Count } - return mi.MessageOf(x) -} - -// Deprecated: Use MetricsRequest_Choice.ProtoReflect.Descriptor instead. -func (*MetricsRequest_Choice) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{260, 0} + return 0 } -type MetricsResponse_Choice struct { +// Protocol Version number. +type PatternFlowRsvpVersion struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields + + // Description missing in models + // default = Choice.Enum.value + Choice *PatternFlowRsvpVersion_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.PatternFlowRsvpVersion_Choice_Enum,oneof" json:"choice,omitempty"` + // Description missing in models + // default = 1 + Value *uint32 `protobuf:"varint,2,opt,name=value,proto3,oneof" json:"value,omitempty"` + // Description missing in models + // default = [1] + Values []uint32 `protobuf:"varint,3,rep,packed,name=values,proto3" json:"values,omitempty"` + // Description missing in models + Increment *PatternFlowRsvpVersionCounter `protobuf:"bytes,5,opt,name=increment,proto3" json:"increment,omitempty"` + // Description missing in models + Decrement *PatternFlowRsvpVersionCounter `protobuf:"bytes,6,opt,name=decrement,proto3" json:"decrement,omitempty"` } -func (x *MetricsResponse_Choice) Reset() { - *x = MetricsResponse_Choice{} +func (x *PatternFlowRsvpVersion) Reset() { + *x = PatternFlowRsvpVersion{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[885] + mi := &file_otg_proto_msgTypes[797] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *MetricsResponse_Choice) String() string { +func (x *PatternFlowRsvpVersion) String() string { return protoimpl.X.MessageStringOf(x) } -func (*MetricsResponse_Choice) ProtoMessage() {} +func (*PatternFlowRsvpVersion) ProtoMessage() {} -func (x *MetricsResponse_Choice) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[885] +func (x *PatternFlowRsvpVersion) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[797] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -85866,72 +86707,81 @@ func (x *MetricsResponse_Choice) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use MetricsResponse_Choice.ProtoReflect.Descriptor instead. -func (*MetricsResponse_Choice) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{261, 0} +// Deprecated: Use PatternFlowRsvpVersion.ProtoReflect.Descriptor instead. +func (*PatternFlowRsvpVersion) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{797} } -type PortMetricsRequest_ColumnNames struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields +func (x *PatternFlowRsvpVersion) GetChoice() PatternFlowRsvpVersion_Choice_Enum { + if x != nil && x.Choice != nil { + return *x.Choice + } + return PatternFlowRsvpVersion_Choice_unspecified } -func (x *PortMetricsRequest_ColumnNames) Reset() { - *x = PortMetricsRequest_ColumnNames{} - if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[886] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) +func (x *PatternFlowRsvpVersion) GetValue() uint32 { + if x != nil && x.Value != nil { + return *x.Value } + return 0 } -func (x *PortMetricsRequest_ColumnNames) String() string { - return protoimpl.X.MessageStringOf(x) +func (x *PatternFlowRsvpVersion) GetValues() []uint32 { + if x != nil { + return x.Values + } + return nil } -func (*PortMetricsRequest_ColumnNames) ProtoMessage() {} - -func (x *PortMetricsRequest_ColumnNames) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[886] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms +func (x *PatternFlowRsvpVersion) GetIncrement() *PatternFlowRsvpVersionCounter { + if x != nil { + return x.Increment } - return mi.MessageOf(x) + return nil } -// Deprecated: Use PortMetricsRequest_ColumnNames.ProtoReflect.Descriptor instead. -func (*PortMetricsRequest_ColumnNames) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{262, 0} +func (x *PatternFlowRsvpVersion) GetDecrement() *PatternFlowRsvpVersionCounter { + if x != nil { + return x.Decrement + } + return nil } -type PortMetric_Link struct { +// The one's complement of the one's complement sum of the message, with the checksum +// field replaced by zero for the purpose of computing the checksum. An all-zero value +// means that no checksum was transmitted. +type PatternFlowRsvpRsvpChecksum struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields + + // The type of checksum + // default = Choice.Enum.generated + Choice *PatternFlowRsvpRsvpChecksum_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.PatternFlowRsvpRsvpChecksum_Choice_Enum,oneof" json:"choice,omitempty"` + // A system generated checksum value + // default = Generated.Enum.good + Generated *PatternFlowRsvpRsvpChecksum_Generated_Enum `protobuf:"varint,2,opt,name=generated,proto3,enum=otg.PatternFlowRsvpRsvpChecksum_Generated_Enum,oneof" json:"generated,omitempty"` + // A custom checksum value + Custom *uint32 `protobuf:"varint,3,opt,name=custom,proto3,oneof" json:"custom,omitempty"` } -func (x *PortMetric_Link) Reset() { - *x = PortMetric_Link{} +func (x *PatternFlowRsvpRsvpChecksum) Reset() { + *x = PatternFlowRsvpRsvpChecksum{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[887] + mi := &file_otg_proto_msgTypes[798] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PortMetric_Link) String() string { +func (x *PatternFlowRsvpRsvpChecksum) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PortMetric_Link) ProtoMessage() {} +func (*PatternFlowRsvpRsvpChecksum) ProtoMessage() {} -func (x *PortMetric_Link) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[887] +func (x *PatternFlowRsvpRsvpChecksum) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[798] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -85942,34 +86792,66 @@ func (x *PortMetric_Link) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use PortMetric_Link.ProtoReflect.Descriptor instead. -func (*PortMetric_Link) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{263, 0} +// Deprecated: Use PatternFlowRsvpRsvpChecksum.ProtoReflect.Descriptor instead. +func (*PatternFlowRsvpRsvpChecksum) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{798} } -type PortMetric_Capture struct { +func (x *PatternFlowRsvpRsvpChecksum) GetChoice() PatternFlowRsvpRsvpChecksum_Choice_Enum { + if x != nil && x.Choice != nil { + return *x.Choice + } + return PatternFlowRsvpRsvpChecksum_Choice_unspecified +} + +func (x *PatternFlowRsvpRsvpChecksum) GetGenerated() PatternFlowRsvpRsvpChecksum_Generated_Enum { + if x != nil && x.Generated != nil { + return *x.Generated + } + return PatternFlowRsvpRsvpChecksum_Generated_unspecified +} + +func (x *PatternFlowRsvpRsvpChecksum) GetCustom() uint32 { + if x != nil && x.Custom != nil { + return *x.Custom + } + return 0 +} + +// integer counter pattern +type PatternFlowRsvpTimeToLiveCounter struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields + + // Description missing in models + // default = 0 + Start *uint32 `protobuf:"varint,1,opt,name=start,proto3,oneof" json:"start,omitempty"` + // Description missing in models + // default = 1 + Step *uint32 `protobuf:"varint,2,opt,name=step,proto3,oneof" json:"step,omitempty"` + // Description missing in models + // default = 1 + Count *uint32 `protobuf:"varint,3,opt,name=count,proto3,oneof" json:"count,omitempty"` } -func (x *PortMetric_Capture) Reset() { - *x = PortMetric_Capture{} +func (x *PatternFlowRsvpTimeToLiveCounter) Reset() { + *x = PatternFlowRsvpTimeToLiveCounter{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[888] + mi := &file_otg_proto_msgTypes[799] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PortMetric_Capture) String() string { +func (x *PatternFlowRsvpTimeToLiveCounter) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PortMetric_Capture) ProtoMessage() {} +func (*PatternFlowRsvpTimeToLiveCounter) ProtoMessage() {} -func (x *PortMetric_Capture) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[888] +func (x *PatternFlowRsvpTimeToLiveCounter) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[799] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -85980,34 +86862,70 @@ func (x *PortMetric_Capture) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use PortMetric_Capture.ProtoReflect.Descriptor instead. -func (*PortMetric_Capture) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{263, 1} +// Deprecated: Use PatternFlowRsvpTimeToLiveCounter.ProtoReflect.Descriptor instead. +func (*PatternFlowRsvpTimeToLiveCounter) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{799} } -type PortMetric_Transmit struct { +func (x *PatternFlowRsvpTimeToLiveCounter) GetStart() uint32 { + if x != nil && x.Start != nil { + return *x.Start + } + return 0 +} + +func (x *PatternFlowRsvpTimeToLiveCounter) GetStep() uint32 { + if x != nil && x.Step != nil { + return *x.Step + } + return 0 +} + +func (x *PatternFlowRsvpTimeToLiveCounter) GetCount() uint32 { + if x != nil && x.Count != nil { + return *x.Count + } + return 0 +} + +// The IP time-to-live(TTL) value with which the message was sent. +type PatternFlowRsvpTimeToLive struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields + + // Description missing in models + // default = Choice.Enum.value + Choice *PatternFlowRsvpTimeToLive_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.PatternFlowRsvpTimeToLive_Choice_Enum,oneof" json:"choice,omitempty"` + // Description missing in models + // default = 0 + Value *uint32 `protobuf:"varint,2,opt,name=value,proto3,oneof" json:"value,omitempty"` + // Description missing in models + // default = [0] + Values []uint32 `protobuf:"varint,3,rep,packed,name=values,proto3" json:"values,omitempty"` + // Description missing in models + Increment *PatternFlowRsvpTimeToLiveCounter `protobuf:"bytes,5,opt,name=increment,proto3" json:"increment,omitempty"` + // Description missing in models + Decrement *PatternFlowRsvpTimeToLiveCounter `protobuf:"bytes,6,opt,name=decrement,proto3" json:"decrement,omitempty"` } -func (x *PortMetric_Transmit) Reset() { - *x = PortMetric_Transmit{} +func (x *PatternFlowRsvpTimeToLive) Reset() { + *x = PatternFlowRsvpTimeToLive{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[889] + mi := &file_otg_proto_msgTypes[800] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PortMetric_Transmit) String() string { +func (x *PatternFlowRsvpTimeToLive) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PortMetric_Transmit) ProtoMessage() {} +func (*PatternFlowRsvpTimeToLive) ProtoMessage() {} -func (x *PortMetric_Transmit) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[889] +func (x *PatternFlowRsvpTimeToLive) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[800] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -86018,72 +86936,80 @@ func (x *PortMetric_Transmit) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use PortMetric_Transmit.ProtoReflect.Descriptor instead. -func (*PortMetric_Transmit) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{263, 2} +// Deprecated: Use PatternFlowRsvpTimeToLive.ProtoReflect.Descriptor instead. +func (*PatternFlowRsvpTimeToLive) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{800} } -type FlowMetricsRequest_MetricNames struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields +func (x *PatternFlowRsvpTimeToLive) GetChoice() PatternFlowRsvpTimeToLive_Choice_Enum { + if x != nil && x.Choice != nil { + return *x.Choice + } + return PatternFlowRsvpTimeToLive_Choice_unspecified } -func (x *FlowMetricsRequest_MetricNames) Reset() { - *x = FlowMetricsRequest_MetricNames{} - if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[890] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) +func (x *PatternFlowRsvpTimeToLive) GetValue() uint32 { + if x != nil && x.Value != nil { + return *x.Value } + return 0 } -func (x *FlowMetricsRequest_MetricNames) String() string { - return protoimpl.X.MessageStringOf(x) +func (x *PatternFlowRsvpTimeToLive) GetValues() []uint32 { + if x != nil { + return x.Values + } + return nil } -func (*FlowMetricsRequest_MetricNames) ProtoMessage() {} - -func (x *FlowMetricsRequest_MetricNames) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[890] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms +func (x *PatternFlowRsvpTimeToLive) GetIncrement() *PatternFlowRsvpTimeToLiveCounter { + if x != nil { + return x.Increment } - return mi.MessageOf(x) + return nil } -// Deprecated: Use FlowMetricsRequest_MetricNames.ProtoReflect.Descriptor instead. -func (*FlowMetricsRequest_MetricNames) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{264, 0} +func (x *PatternFlowRsvpTimeToLive) GetDecrement() *PatternFlowRsvpTimeToLiveCounter { + if x != nil { + return x.Decrement + } + return nil } -type FlowTaggedMetricsFilter_MetricNames struct { +// integer counter pattern +type PatternFlowRsvpReservedCounter struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields + + // Description missing in models + // default = 0 + Start *uint32 `protobuf:"varint,1,opt,name=start,proto3,oneof" json:"start,omitempty"` + // Description missing in models + // default = 1 + Step *uint32 `protobuf:"varint,2,opt,name=step,proto3,oneof" json:"step,omitempty"` + // Description missing in models + // default = 1 + Count *uint32 `protobuf:"varint,3,opt,name=count,proto3,oneof" json:"count,omitempty"` } -func (x *FlowTaggedMetricsFilter_MetricNames) Reset() { - *x = FlowTaggedMetricsFilter_MetricNames{} +func (x *PatternFlowRsvpReservedCounter) Reset() { + *x = PatternFlowRsvpReservedCounter{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[891] + mi := &file_otg_proto_msgTypes[801] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *FlowTaggedMetricsFilter_MetricNames) String() string { +func (x *PatternFlowRsvpReservedCounter) String() string { return protoimpl.X.MessageStringOf(x) } -func (*FlowTaggedMetricsFilter_MetricNames) ProtoMessage() {} +func (*PatternFlowRsvpReservedCounter) ProtoMessage() {} -func (x *FlowTaggedMetricsFilter_MetricNames) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[891] +func (x *PatternFlowRsvpReservedCounter) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[801] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -86094,34 +87020,70 @@ func (x *FlowTaggedMetricsFilter_MetricNames) ProtoReflect() protoreflect.Messag return mi.MessageOf(x) } -// Deprecated: Use FlowTaggedMetricsFilter_MetricNames.ProtoReflect.Descriptor instead. -func (*FlowTaggedMetricsFilter_MetricNames) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{265, 0} +// Deprecated: Use PatternFlowRsvpReservedCounter.ProtoReflect.Descriptor instead. +func (*PatternFlowRsvpReservedCounter) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{801} } -type FlowMetric_Transmit struct { +func (x *PatternFlowRsvpReservedCounter) GetStart() uint32 { + if x != nil && x.Start != nil { + return *x.Start + } + return 0 +} + +func (x *PatternFlowRsvpReservedCounter) GetStep() uint32 { + if x != nil && x.Step != nil { + return *x.Step + } + return 0 +} + +func (x *PatternFlowRsvpReservedCounter) GetCount() uint32 { + if x != nil && x.Count != nil { + return *x.Count + } + return 0 +} + +// Reserved +type PatternFlowRsvpReserved struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields + + // Description missing in models + // default = Choice.Enum.value + Choice *PatternFlowRsvpReserved_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.PatternFlowRsvpReserved_Choice_Enum,oneof" json:"choice,omitempty"` + // Description missing in models + // default = 0 + Value *uint32 `protobuf:"varint,2,opt,name=value,proto3,oneof" json:"value,omitempty"` + // Description missing in models + // default = [0] + Values []uint32 `protobuf:"varint,3,rep,packed,name=values,proto3" json:"values,omitempty"` + // Description missing in models + Increment *PatternFlowRsvpReservedCounter `protobuf:"bytes,5,opt,name=increment,proto3" json:"increment,omitempty"` + // Description missing in models + Decrement *PatternFlowRsvpReservedCounter `protobuf:"bytes,6,opt,name=decrement,proto3" json:"decrement,omitempty"` } -func (x *FlowMetric_Transmit) Reset() { - *x = FlowMetric_Transmit{} +func (x *PatternFlowRsvpReserved) Reset() { + *x = PatternFlowRsvpReserved{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[892] + mi := &file_otg_proto_msgTypes[802] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *FlowMetric_Transmit) String() string { +func (x *PatternFlowRsvpReserved) String() string { return protoimpl.X.MessageStringOf(x) } -func (*FlowMetric_Transmit) ProtoMessage() {} +func (*PatternFlowRsvpReserved) ProtoMessage() {} -func (x *FlowMetric_Transmit) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[892] +func (x *PatternFlowRsvpReserved) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[802] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -86132,72 +87094,80 @@ func (x *FlowMetric_Transmit) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use FlowMetric_Transmit.ProtoReflect.Descriptor instead. -func (*FlowMetric_Transmit) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{267, 0} +// Deprecated: Use PatternFlowRsvpReserved.ProtoReflect.Descriptor instead. +func (*PatternFlowRsvpReserved) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{802} } -type FlowMetricTagValue_Choice struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields +func (x *PatternFlowRsvpReserved) GetChoice() PatternFlowRsvpReserved_Choice_Enum { + if x != nil && x.Choice != nil { + return *x.Choice + } + return PatternFlowRsvpReserved_Choice_unspecified } -func (x *FlowMetricTagValue_Choice) Reset() { - *x = FlowMetricTagValue_Choice{} - if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[893] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) +func (x *PatternFlowRsvpReserved) GetValue() uint32 { + if x != nil && x.Value != nil { + return *x.Value } + return 0 } -func (x *FlowMetricTagValue_Choice) String() string { - return protoimpl.X.MessageStringOf(x) +func (x *PatternFlowRsvpReserved) GetValues() []uint32 { + if x != nil { + return x.Values + } + return nil } -func (*FlowMetricTagValue_Choice) ProtoMessage() {} - -func (x *FlowMetricTagValue_Choice) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[893] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms +func (x *PatternFlowRsvpReserved) GetIncrement() *PatternFlowRsvpReservedCounter { + if x != nil { + return x.Increment } - return mi.MessageOf(x) + return nil } -// Deprecated: Use FlowMetricTagValue_Choice.ProtoReflect.Descriptor instead. -func (*FlowMetricTagValue_Choice) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{270, 0} +func (x *PatternFlowRsvpReserved) GetDecrement() *PatternFlowRsvpReservedCounter { + if x != nil { + return x.Decrement + } + return nil } -type Bgpv4MetricsRequest_ColumnNames struct { +// ipv4 counter pattern +type PatternFlowRSVPPathSessionLspTunnelIpv4Ipv4TunnelEndPointAddressCounter struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields + + // Description missing in models + // default = 0.0.0.0 + Start *string `protobuf:"bytes,1,opt,name=start,proto3,oneof" json:"start,omitempty"` + // Description missing in models + // default = 0.0.0.1 + Step *string `protobuf:"bytes,2,opt,name=step,proto3,oneof" json:"step,omitempty"` + // Description missing in models + // default = 1 + Count *uint32 `protobuf:"varint,3,opt,name=count,proto3,oneof" json:"count,omitempty"` } -func (x *Bgpv4MetricsRequest_ColumnNames) Reset() { - *x = Bgpv4MetricsRequest_ColumnNames{} +func (x *PatternFlowRSVPPathSessionLspTunnelIpv4Ipv4TunnelEndPointAddressCounter) Reset() { + *x = PatternFlowRSVPPathSessionLspTunnelIpv4Ipv4TunnelEndPointAddressCounter{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[894] + mi := &file_otg_proto_msgTypes[803] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *Bgpv4MetricsRequest_ColumnNames) String() string { +func (x *PatternFlowRSVPPathSessionLspTunnelIpv4Ipv4TunnelEndPointAddressCounter) String() string { return protoimpl.X.MessageStringOf(x) } -func (*Bgpv4MetricsRequest_ColumnNames) ProtoMessage() {} +func (*PatternFlowRSVPPathSessionLspTunnelIpv4Ipv4TunnelEndPointAddressCounter) ProtoMessage() {} -func (x *Bgpv4MetricsRequest_ColumnNames) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[894] +func (x *PatternFlowRSVPPathSessionLspTunnelIpv4Ipv4TunnelEndPointAddressCounter) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[803] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -86208,34 +87178,70 @@ func (x *Bgpv4MetricsRequest_ColumnNames) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use Bgpv4MetricsRequest_ColumnNames.ProtoReflect.Descriptor instead. -func (*Bgpv4MetricsRequest_ColumnNames) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{273, 0} +// Deprecated: Use PatternFlowRSVPPathSessionLspTunnelIpv4Ipv4TunnelEndPointAddressCounter.ProtoReflect.Descriptor instead. +func (*PatternFlowRSVPPathSessionLspTunnelIpv4Ipv4TunnelEndPointAddressCounter) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{803} } -type Bgpv4Metric_SessionState struct { +func (x *PatternFlowRSVPPathSessionLspTunnelIpv4Ipv4TunnelEndPointAddressCounter) GetStart() string { + if x != nil && x.Start != nil { + return *x.Start + } + return "" +} + +func (x *PatternFlowRSVPPathSessionLspTunnelIpv4Ipv4TunnelEndPointAddressCounter) GetStep() string { + if x != nil && x.Step != nil { + return *x.Step + } + return "" +} + +func (x *PatternFlowRSVPPathSessionLspTunnelIpv4Ipv4TunnelEndPointAddressCounter) GetCount() uint32 { + if x != nil && x.Count != nil { + return *x.Count + } + return 0 +} + +// IPv4 address of the egress node for the tunnel. +type PatternFlowRSVPPathSessionLspTunnelIpv4Ipv4TunnelEndPointAddress struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields + + // Description missing in models + // default = Choice.Enum.value + Choice *PatternFlowRSVPPathSessionLspTunnelIpv4Ipv4TunnelEndPointAddress_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.PatternFlowRSVPPathSessionLspTunnelIpv4Ipv4TunnelEndPointAddress_Choice_Enum,oneof" json:"choice,omitempty"` + // Description missing in models + // default = 0.0.0.0 + Value *string `protobuf:"bytes,2,opt,name=value,proto3,oneof" json:"value,omitempty"` + // Description missing in models + // default = ['0.0.0.0'] + Values []string `protobuf:"bytes,3,rep,name=values,proto3" json:"values,omitempty"` + // Description missing in models + Increment *PatternFlowRSVPPathSessionLspTunnelIpv4Ipv4TunnelEndPointAddressCounter `protobuf:"bytes,5,opt,name=increment,proto3" json:"increment,omitempty"` + // Description missing in models + Decrement *PatternFlowRSVPPathSessionLspTunnelIpv4Ipv4TunnelEndPointAddressCounter `protobuf:"bytes,6,opt,name=decrement,proto3" json:"decrement,omitempty"` } -func (x *Bgpv4Metric_SessionState) Reset() { - *x = Bgpv4Metric_SessionState{} +func (x *PatternFlowRSVPPathSessionLspTunnelIpv4Ipv4TunnelEndPointAddress) Reset() { + *x = PatternFlowRSVPPathSessionLspTunnelIpv4Ipv4TunnelEndPointAddress{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[895] + mi := &file_otg_proto_msgTypes[804] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *Bgpv4Metric_SessionState) String() string { +func (x *PatternFlowRSVPPathSessionLspTunnelIpv4Ipv4TunnelEndPointAddress) String() string { return protoimpl.X.MessageStringOf(x) } -func (*Bgpv4Metric_SessionState) ProtoMessage() {} +func (*PatternFlowRSVPPathSessionLspTunnelIpv4Ipv4TunnelEndPointAddress) ProtoMessage() {} -func (x *Bgpv4Metric_SessionState) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[895] +func (x *PatternFlowRSVPPathSessionLspTunnelIpv4Ipv4TunnelEndPointAddress) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[804] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -86246,72 +87252,80 @@ func (x *Bgpv4Metric_SessionState) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use Bgpv4Metric_SessionState.ProtoReflect.Descriptor instead. -func (*Bgpv4Metric_SessionState) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{274, 0} +// Deprecated: Use PatternFlowRSVPPathSessionLspTunnelIpv4Ipv4TunnelEndPointAddress.ProtoReflect.Descriptor instead. +func (*PatternFlowRSVPPathSessionLspTunnelIpv4Ipv4TunnelEndPointAddress) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{804} } -type Bgpv4Metric_FsmState struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields +func (x *PatternFlowRSVPPathSessionLspTunnelIpv4Ipv4TunnelEndPointAddress) GetChoice() PatternFlowRSVPPathSessionLspTunnelIpv4Ipv4TunnelEndPointAddress_Choice_Enum { + if x != nil && x.Choice != nil { + return *x.Choice + } + return PatternFlowRSVPPathSessionLspTunnelIpv4Ipv4TunnelEndPointAddress_Choice_unspecified } -func (x *Bgpv4Metric_FsmState) Reset() { - *x = Bgpv4Metric_FsmState{} - if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[896] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) +func (x *PatternFlowRSVPPathSessionLspTunnelIpv4Ipv4TunnelEndPointAddress) GetValue() string { + if x != nil && x.Value != nil { + return *x.Value } + return "" } -func (x *Bgpv4Metric_FsmState) String() string { - return protoimpl.X.MessageStringOf(x) +func (x *PatternFlowRSVPPathSessionLspTunnelIpv4Ipv4TunnelEndPointAddress) GetValues() []string { + if x != nil { + return x.Values + } + return nil } -func (*Bgpv4Metric_FsmState) ProtoMessage() {} - -func (x *Bgpv4Metric_FsmState) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[896] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms +func (x *PatternFlowRSVPPathSessionLspTunnelIpv4Ipv4TunnelEndPointAddress) GetIncrement() *PatternFlowRSVPPathSessionLspTunnelIpv4Ipv4TunnelEndPointAddressCounter { + if x != nil { + return x.Increment } - return mi.MessageOf(x) + return nil } -// Deprecated: Use Bgpv4Metric_FsmState.ProtoReflect.Descriptor instead. -func (*Bgpv4Metric_FsmState) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{274, 1} +func (x *PatternFlowRSVPPathSessionLspTunnelIpv4Ipv4TunnelEndPointAddress) GetDecrement() *PatternFlowRSVPPathSessionLspTunnelIpv4Ipv4TunnelEndPointAddressCounter { + if x != nil { + return x.Decrement + } + return nil } -type Bgpv6MetricsRequest_ColumnNames struct { +// integer counter pattern +type PatternFlowRSVPPathSessionLspTunnelIpv4ReservedCounter struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields + + // Description missing in models + // default = 0 + Start *uint32 `protobuf:"varint,1,opt,name=start,proto3,oneof" json:"start,omitempty"` + // Description missing in models + // default = 1 + Step *uint32 `protobuf:"varint,2,opt,name=step,proto3,oneof" json:"step,omitempty"` + // Description missing in models + // default = 1 + Count *uint32 `protobuf:"varint,3,opt,name=count,proto3,oneof" json:"count,omitempty"` } -func (x *Bgpv6MetricsRequest_ColumnNames) Reset() { - *x = Bgpv6MetricsRequest_ColumnNames{} +func (x *PatternFlowRSVPPathSessionLspTunnelIpv4ReservedCounter) Reset() { + *x = PatternFlowRSVPPathSessionLspTunnelIpv4ReservedCounter{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[897] + mi := &file_otg_proto_msgTypes[805] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *Bgpv6MetricsRequest_ColumnNames) String() string { +func (x *PatternFlowRSVPPathSessionLspTunnelIpv4ReservedCounter) String() string { return protoimpl.X.MessageStringOf(x) } -func (*Bgpv6MetricsRequest_ColumnNames) ProtoMessage() {} +func (*PatternFlowRSVPPathSessionLspTunnelIpv4ReservedCounter) ProtoMessage() {} -func (x *Bgpv6MetricsRequest_ColumnNames) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[897] +func (x *PatternFlowRSVPPathSessionLspTunnelIpv4ReservedCounter) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[805] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -86322,34 +87336,70 @@ func (x *Bgpv6MetricsRequest_ColumnNames) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use Bgpv6MetricsRequest_ColumnNames.ProtoReflect.Descriptor instead. -func (*Bgpv6MetricsRequest_ColumnNames) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{275, 0} +// Deprecated: Use PatternFlowRSVPPathSessionLspTunnelIpv4ReservedCounter.ProtoReflect.Descriptor instead. +func (*PatternFlowRSVPPathSessionLspTunnelIpv4ReservedCounter) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{805} } -type Bgpv6Metric_SessionState struct { +func (x *PatternFlowRSVPPathSessionLspTunnelIpv4ReservedCounter) GetStart() uint32 { + if x != nil && x.Start != nil { + return *x.Start + } + return 0 +} + +func (x *PatternFlowRSVPPathSessionLspTunnelIpv4ReservedCounter) GetStep() uint32 { + if x != nil && x.Step != nil { + return *x.Step + } + return 0 +} + +func (x *PatternFlowRSVPPathSessionLspTunnelIpv4ReservedCounter) GetCount() uint32 { + if x != nil && x.Count != nil { + return *x.Count + } + return 0 +} + +// Reserved field, MUST be zero. +type PatternFlowRSVPPathSessionLspTunnelIpv4Reserved struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields + + // Description missing in models + // default = Choice.Enum.value + Choice *PatternFlowRSVPPathSessionLspTunnelIpv4Reserved_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.PatternFlowRSVPPathSessionLspTunnelIpv4Reserved_Choice_Enum,oneof" json:"choice,omitempty"` + // Description missing in models + // default = 0 + Value *uint32 `protobuf:"varint,2,opt,name=value,proto3,oneof" json:"value,omitempty"` + // Description missing in models + // default = [0] + Values []uint32 `protobuf:"varint,3,rep,packed,name=values,proto3" json:"values,omitempty"` + // Description missing in models + Increment *PatternFlowRSVPPathSessionLspTunnelIpv4ReservedCounter `protobuf:"bytes,5,opt,name=increment,proto3" json:"increment,omitempty"` + // Description missing in models + Decrement *PatternFlowRSVPPathSessionLspTunnelIpv4ReservedCounter `protobuf:"bytes,6,opt,name=decrement,proto3" json:"decrement,omitempty"` } -func (x *Bgpv6Metric_SessionState) Reset() { - *x = Bgpv6Metric_SessionState{} +func (x *PatternFlowRSVPPathSessionLspTunnelIpv4Reserved) Reset() { + *x = PatternFlowRSVPPathSessionLspTunnelIpv4Reserved{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[898] + mi := &file_otg_proto_msgTypes[806] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *Bgpv6Metric_SessionState) String() string { +func (x *PatternFlowRSVPPathSessionLspTunnelIpv4Reserved) String() string { return protoimpl.X.MessageStringOf(x) } -func (*Bgpv6Metric_SessionState) ProtoMessage() {} +func (*PatternFlowRSVPPathSessionLspTunnelIpv4Reserved) ProtoMessage() {} -func (x *Bgpv6Metric_SessionState) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[898] +func (x *PatternFlowRSVPPathSessionLspTunnelIpv4Reserved) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[806] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -86360,72 +87410,80 @@ func (x *Bgpv6Metric_SessionState) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use Bgpv6Metric_SessionState.ProtoReflect.Descriptor instead. -func (*Bgpv6Metric_SessionState) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{276, 0} +// Deprecated: Use PatternFlowRSVPPathSessionLspTunnelIpv4Reserved.ProtoReflect.Descriptor instead. +func (*PatternFlowRSVPPathSessionLspTunnelIpv4Reserved) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{806} } -type Bgpv6Metric_FsmState struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields +func (x *PatternFlowRSVPPathSessionLspTunnelIpv4Reserved) GetChoice() PatternFlowRSVPPathSessionLspTunnelIpv4Reserved_Choice_Enum { + if x != nil && x.Choice != nil { + return *x.Choice + } + return PatternFlowRSVPPathSessionLspTunnelIpv4Reserved_Choice_unspecified } -func (x *Bgpv6Metric_FsmState) Reset() { - *x = Bgpv6Metric_FsmState{} - if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[899] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) +func (x *PatternFlowRSVPPathSessionLspTunnelIpv4Reserved) GetValue() uint32 { + if x != nil && x.Value != nil { + return *x.Value } + return 0 } -func (x *Bgpv6Metric_FsmState) String() string { - return protoimpl.X.MessageStringOf(x) +func (x *PatternFlowRSVPPathSessionLspTunnelIpv4Reserved) GetValues() []uint32 { + if x != nil { + return x.Values + } + return nil } -func (*Bgpv6Metric_FsmState) ProtoMessage() {} - -func (x *Bgpv6Metric_FsmState) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[899] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms +func (x *PatternFlowRSVPPathSessionLspTunnelIpv4Reserved) GetIncrement() *PatternFlowRSVPPathSessionLspTunnelIpv4ReservedCounter { + if x != nil { + return x.Increment } - return mi.MessageOf(x) + return nil } -// Deprecated: Use Bgpv6Metric_FsmState.ProtoReflect.Descriptor instead. -func (*Bgpv6Metric_FsmState) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{276, 1} +func (x *PatternFlowRSVPPathSessionLspTunnelIpv4Reserved) GetDecrement() *PatternFlowRSVPPathSessionLspTunnelIpv4ReservedCounter { + if x != nil { + return x.Decrement + } + return nil } -type IsisMetricsRequest_ColumnNames struct { +// integer counter pattern +type PatternFlowRSVPPathSessionLspTunnelIpv4TunnelIdCounter struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields + + // Description missing in models + // default = 0 + Start *uint32 `protobuf:"varint,1,opt,name=start,proto3,oneof" json:"start,omitempty"` + // Description missing in models + // default = 1 + Step *uint32 `protobuf:"varint,2,opt,name=step,proto3,oneof" json:"step,omitempty"` + // Description missing in models + // default = 1 + Count *uint32 `protobuf:"varint,3,opt,name=count,proto3,oneof" json:"count,omitempty"` } -func (x *IsisMetricsRequest_ColumnNames) Reset() { - *x = IsisMetricsRequest_ColumnNames{} +func (x *PatternFlowRSVPPathSessionLspTunnelIpv4TunnelIdCounter) Reset() { + *x = PatternFlowRSVPPathSessionLspTunnelIpv4TunnelIdCounter{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[900] + mi := &file_otg_proto_msgTypes[807] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *IsisMetricsRequest_ColumnNames) String() string { +func (x *PatternFlowRSVPPathSessionLspTunnelIpv4TunnelIdCounter) String() string { return protoimpl.X.MessageStringOf(x) } -func (*IsisMetricsRequest_ColumnNames) ProtoMessage() {} +func (*PatternFlowRSVPPathSessionLspTunnelIpv4TunnelIdCounter) ProtoMessage() {} -func (x *IsisMetricsRequest_ColumnNames) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[900] +func (x *PatternFlowRSVPPathSessionLspTunnelIpv4TunnelIdCounter) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[807] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -86436,34 +87494,71 @@ func (x *IsisMetricsRequest_ColumnNames) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use IsisMetricsRequest_ColumnNames.ProtoReflect.Descriptor instead. -func (*IsisMetricsRequest_ColumnNames) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{277, 0} +// Deprecated: Use PatternFlowRSVPPathSessionLspTunnelIpv4TunnelIdCounter.ProtoReflect.Descriptor instead. +func (*PatternFlowRSVPPathSessionLspTunnelIpv4TunnelIdCounter) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{807} } -type LagMetricsRequest_ColumnNames struct { +func (x *PatternFlowRSVPPathSessionLspTunnelIpv4TunnelIdCounter) GetStart() uint32 { + if x != nil && x.Start != nil { + return *x.Start + } + return 0 +} + +func (x *PatternFlowRSVPPathSessionLspTunnelIpv4TunnelIdCounter) GetStep() uint32 { + if x != nil && x.Step != nil { + return *x.Step + } + return 0 +} + +func (x *PatternFlowRSVPPathSessionLspTunnelIpv4TunnelIdCounter) GetCount() uint32 { + if x != nil && x.Count != nil { + return *x.Count + } + return 0 +} + +// A 16-bit identifier used in the SESSION that remains constant over the life of the +// tunnel. +type PatternFlowRSVPPathSessionLspTunnelIpv4TunnelId struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields + + // Description missing in models + // default = Choice.Enum.value + Choice *PatternFlowRSVPPathSessionLspTunnelIpv4TunnelId_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.PatternFlowRSVPPathSessionLspTunnelIpv4TunnelId_Choice_Enum,oneof" json:"choice,omitempty"` + // Description missing in models + // default = 0 + Value *uint32 `protobuf:"varint,2,opt,name=value,proto3,oneof" json:"value,omitempty"` + // Description missing in models + // default = [0] + Values []uint32 `protobuf:"varint,3,rep,packed,name=values,proto3" json:"values,omitempty"` + // Description missing in models + Increment *PatternFlowRSVPPathSessionLspTunnelIpv4TunnelIdCounter `protobuf:"bytes,5,opt,name=increment,proto3" json:"increment,omitempty"` + // Description missing in models + Decrement *PatternFlowRSVPPathSessionLspTunnelIpv4TunnelIdCounter `protobuf:"bytes,6,opt,name=decrement,proto3" json:"decrement,omitempty"` } -func (x *LagMetricsRequest_ColumnNames) Reset() { - *x = LagMetricsRequest_ColumnNames{} +func (x *PatternFlowRSVPPathSessionLspTunnelIpv4TunnelId) Reset() { + *x = PatternFlowRSVPPathSessionLspTunnelIpv4TunnelId{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[901] + mi := &file_otg_proto_msgTypes[808] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *LagMetricsRequest_ColumnNames) String() string { +func (x *PatternFlowRSVPPathSessionLspTunnelIpv4TunnelId) String() string { return protoimpl.X.MessageStringOf(x) } -func (*LagMetricsRequest_ColumnNames) ProtoMessage() {} +func (*PatternFlowRSVPPathSessionLspTunnelIpv4TunnelId) ProtoMessage() {} -func (x *LagMetricsRequest_ColumnNames) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[901] +func (x *PatternFlowRSVPPathSessionLspTunnelIpv4TunnelId) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[808] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -86474,72 +87569,80 @@ func (x *LagMetricsRequest_ColumnNames) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use LagMetricsRequest_ColumnNames.ProtoReflect.Descriptor instead. -func (*LagMetricsRequest_ColumnNames) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{279, 0} +// Deprecated: Use PatternFlowRSVPPathSessionLspTunnelIpv4TunnelId.ProtoReflect.Descriptor instead. +func (*PatternFlowRSVPPathSessionLspTunnelIpv4TunnelId) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{808} } -type LagMetric_OperStatus struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields +func (x *PatternFlowRSVPPathSessionLspTunnelIpv4TunnelId) GetChoice() PatternFlowRSVPPathSessionLspTunnelIpv4TunnelId_Choice_Enum { + if x != nil && x.Choice != nil { + return *x.Choice + } + return PatternFlowRSVPPathSessionLspTunnelIpv4TunnelId_Choice_unspecified } -func (x *LagMetric_OperStatus) Reset() { - *x = LagMetric_OperStatus{} - if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[902] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) +func (x *PatternFlowRSVPPathSessionLspTunnelIpv4TunnelId) GetValue() uint32 { + if x != nil && x.Value != nil { + return *x.Value } + return 0 } -func (x *LagMetric_OperStatus) String() string { - return protoimpl.X.MessageStringOf(x) +func (x *PatternFlowRSVPPathSessionLspTunnelIpv4TunnelId) GetValues() []uint32 { + if x != nil { + return x.Values + } + return nil } -func (*LagMetric_OperStatus) ProtoMessage() {} - -func (x *LagMetric_OperStatus) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[902] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms +func (x *PatternFlowRSVPPathSessionLspTunnelIpv4TunnelId) GetIncrement() *PatternFlowRSVPPathSessionLspTunnelIpv4TunnelIdCounter { + if x != nil { + return x.Increment } - return mi.MessageOf(x) + return nil } -// Deprecated: Use LagMetric_OperStatus.ProtoReflect.Descriptor instead. -func (*LagMetric_OperStatus) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{280, 0} +func (x *PatternFlowRSVPPathSessionLspTunnelIpv4TunnelId) GetDecrement() *PatternFlowRSVPPathSessionLspTunnelIpv4TunnelIdCounter { + if x != nil { + return x.Decrement + } + return nil } -type LacpMetricsRequest_ColumnNames struct { +// integer counter pattern +type PatternFlowRSVPPathSessionLspTunnelIpv4ExtendedTunnelIdCounter struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields + + // Description missing in models + // default = 0 + Start *uint32 `protobuf:"varint,1,opt,name=start,proto3,oneof" json:"start,omitempty"` + // Description missing in models + // default = 1 + Step *uint32 `protobuf:"varint,2,opt,name=step,proto3,oneof" json:"step,omitempty"` + // Description missing in models + // default = 1 + Count *uint32 `protobuf:"varint,3,opt,name=count,proto3,oneof" json:"count,omitempty"` } -func (x *LacpMetricsRequest_ColumnNames) Reset() { - *x = LacpMetricsRequest_ColumnNames{} +func (x *PatternFlowRSVPPathSessionLspTunnelIpv4ExtendedTunnelIdCounter) Reset() { + *x = PatternFlowRSVPPathSessionLspTunnelIpv4ExtendedTunnelIdCounter{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[903] + mi := &file_otg_proto_msgTypes[809] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *LacpMetricsRequest_ColumnNames) String() string { +func (x *PatternFlowRSVPPathSessionLspTunnelIpv4ExtendedTunnelIdCounter) String() string { return protoimpl.X.MessageStringOf(x) } -func (*LacpMetricsRequest_ColumnNames) ProtoMessage() {} +func (*PatternFlowRSVPPathSessionLspTunnelIpv4ExtendedTunnelIdCounter) ProtoMessage() {} -func (x *LacpMetricsRequest_ColumnNames) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[903] +func (x *PatternFlowRSVPPathSessionLspTunnelIpv4ExtendedTunnelIdCounter) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[809] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -86550,34 +87653,73 @@ func (x *LacpMetricsRequest_ColumnNames) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use LacpMetricsRequest_ColumnNames.ProtoReflect.Descriptor instead. -func (*LacpMetricsRequest_ColumnNames) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{281, 0} +// Deprecated: Use PatternFlowRSVPPathSessionLspTunnelIpv4ExtendedTunnelIdCounter.ProtoReflect.Descriptor instead. +func (*PatternFlowRSVPPathSessionLspTunnelIpv4ExtendedTunnelIdCounter) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{809} } -type LacpMetric_Activity struct { +func (x *PatternFlowRSVPPathSessionLspTunnelIpv4ExtendedTunnelIdCounter) GetStart() uint32 { + if x != nil && x.Start != nil { + return *x.Start + } + return 0 +} + +func (x *PatternFlowRSVPPathSessionLspTunnelIpv4ExtendedTunnelIdCounter) GetStep() uint32 { + if x != nil && x.Step != nil { + return *x.Step + } + return 0 +} + +func (x *PatternFlowRSVPPathSessionLspTunnelIpv4ExtendedTunnelIdCounter) GetCount() uint32 { + if x != nil && x.Count != nil { + return *x.Count + } + return 0 +} + +// A 32-bit identifier used in the SESSION that remains constant over the life of the +// tunnel. Normally set to all zeros. Ingress nodes that wish to narrow the scope of +// a SESSION to the ingress-egress pair may place their IPv4 address here as a globally +// unique identifier. +type PatternFlowRSVPPathSessionLspTunnelIpv4ExtendedTunnelId struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields + + // Description missing in models + // default = Choice.Enum.value + Choice *PatternFlowRSVPPathSessionLspTunnelIpv4ExtendedTunnelId_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.PatternFlowRSVPPathSessionLspTunnelIpv4ExtendedTunnelId_Choice_Enum,oneof" json:"choice,omitempty"` + // Description missing in models + // default = 0 + Value *uint32 `protobuf:"varint,2,opt,name=value,proto3,oneof" json:"value,omitempty"` + // Description missing in models + // default = [0] + Values []uint32 `protobuf:"varint,3,rep,packed,name=values,proto3" json:"values,omitempty"` + // Description missing in models + Increment *PatternFlowRSVPPathSessionLspTunnelIpv4ExtendedTunnelIdCounter `protobuf:"bytes,5,opt,name=increment,proto3" json:"increment,omitempty"` + // Description missing in models + Decrement *PatternFlowRSVPPathSessionLspTunnelIpv4ExtendedTunnelIdCounter `protobuf:"bytes,6,opt,name=decrement,proto3" json:"decrement,omitempty"` } -func (x *LacpMetric_Activity) Reset() { - *x = LacpMetric_Activity{} +func (x *PatternFlowRSVPPathSessionLspTunnelIpv4ExtendedTunnelId) Reset() { + *x = PatternFlowRSVPPathSessionLspTunnelIpv4ExtendedTunnelId{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[904] + mi := &file_otg_proto_msgTypes[810] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *LacpMetric_Activity) String() string { +func (x *PatternFlowRSVPPathSessionLspTunnelIpv4ExtendedTunnelId) String() string { return protoimpl.X.MessageStringOf(x) } -func (*LacpMetric_Activity) ProtoMessage() {} +func (*PatternFlowRSVPPathSessionLspTunnelIpv4ExtendedTunnelId) ProtoMessage() {} -func (x *LacpMetric_Activity) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[904] +func (x *PatternFlowRSVPPathSessionLspTunnelIpv4ExtendedTunnelId) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[810] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -86588,72 +87730,80 @@ func (x *LacpMetric_Activity) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use LacpMetric_Activity.ProtoReflect.Descriptor instead. -func (*LacpMetric_Activity) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{282, 0} +// Deprecated: Use PatternFlowRSVPPathSessionLspTunnelIpv4ExtendedTunnelId.ProtoReflect.Descriptor instead. +func (*PatternFlowRSVPPathSessionLspTunnelIpv4ExtendedTunnelId) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{810} } -type LacpMetric_Timeout struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields +func (x *PatternFlowRSVPPathSessionLspTunnelIpv4ExtendedTunnelId) GetChoice() PatternFlowRSVPPathSessionLspTunnelIpv4ExtendedTunnelId_Choice_Enum { + if x != nil && x.Choice != nil { + return *x.Choice + } + return PatternFlowRSVPPathSessionLspTunnelIpv4ExtendedTunnelId_Choice_unspecified } -func (x *LacpMetric_Timeout) Reset() { - *x = LacpMetric_Timeout{} - if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[905] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) +func (x *PatternFlowRSVPPathSessionLspTunnelIpv4ExtendedTunnelId) GetValue() uint32 { + if x != nil && x.Value != nil { + return *x.Value } + return 0 } -func (x *LacpMetric_Timeout) String() string { - return protoimpl.X.MessageStringOf(x) +func (x *PatternFlowRSVPPathSessionLspTunnelIpv4ExtendedTunnelId) GetValues() []uint32 { + if x != nil { + return x.Values + } + return nil } -func (*LacpMetric_Timeout) ProtoMessage() {} - -func (x *LacpMetric_Timeout) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[905] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms +func (x *PatternFlowRSVPPathSessionLspTunnelIpv4ExtendedTunnelId) GetIncrement() *PatternFlowRSVPPathSessionLspTunnelIpv4ExtendedTunnelIdCounter { + if x != nil { + return x.Increment } - return mi.MessageOf(x) + return nil } -// Deprecated: Use LacpMetric_Timeout.ProtoReflect.Descriptor instead. -func (*LacpMetric_Timeout) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{282, 1} +func (x *PatternFlowRSVPPathSessionLspTunnelIpv4ExtendedTunnelId) GetDecrement() *PatternFlowRSVPPathSessionLspTunnelIpv4ExtendedTunnelIdCounter { + if x != nil { + return x.Decrement + } + return nil } -type LacpMetric_Synchronization struct { +// ipv4 counter pattern +type PatternFlowRSVPPathRsvpHopIpv4Ipv4NextPreviousHopAddressCounter struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields + + // Description missing in models + // default = 0.0.0.0 + Start *string `protobuf:"bytes,1,opt,name=start,proto3,oneof" json:"start,omitempty"` + // Description missing in models + // default = 0.0.0.1 + Step *string `protobuf:"bytes,2,opt,name=step,proto3,oneof" json:"step,omitempty"` + // Description missing in models + // default = 1 + Count *uint32 `protobuf:"varint,3,opt,name=count,proto3,oneof" json:"count,omitempty"` } -func (x *LacpMetric_Synchronization) Reset() { - *x = LacpMetric_Synchronization{} +func (x *PatternFlowRSVPPathRsvpHopIpv4Ipv4NextPreviousHopAddressCounter) Reset() { + *x = PatternFlowRSVPPathRsvpHopIpv4Ipv4NextPreviousHopAddressCounter{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[906] + mi := &file_otg_proto_msgTypes[811] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *LacpMetric_Synchronization) String() string { +func (x *PatternFlowRSVPPathRsvpHopIpv4Ipv4NextPreviousHopAddressCounter) String() string { return protoimpl.X.MessageStringOf(x) } -func (*LacpMetric_Synchronization) ProtoMessage() {} +func (*PatternFlowRSVPPathRsvpHopIpv4Ipv4NextPreviousHopAddressCounter) ProtoMessage() {} -func (x *LacpMetric_Synchronization) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[906] +func (x *PatternFlowRSVPPathRsvpHopIpv4Ipv4NextPreviousHopAddressCounter) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[811] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -86664,34 +87814,71 @@ func (x *LacpMetric_Synchronization) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use LacpMetric_Synchronization.ProtoReflect.Descriptor instead. -func (*LacpMetric_Synchronization) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{282, 2} +// Deprecated: Use PatternFlowRSVPPathRsvpHopIpv4Ipv4NextPreviousHopAddressCounter.ProtoReflect.Descriptor instead. +func (*PatternFlowRSVPPathRsvpHopIpv4Ipv4NextPreviousHopAddressCounter) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{811} } -type LldpMetricsRequest_ColumnNames struct { +func (x *PatternFlowRSVPPathRsvpHopIpv4Ipv4NextPreviousHopAddressCounter) GetStart() string { + if x != nil && x.Start != nil { + return *x.Start + } + return "" +} + +func (x *PatternFlowRSVPPathRsvpHopIpv4Ipv4NextPreviousHopAddressCounter) GetStep() string { + if x != nil && x.Step != nil { + return *x.Step + } + return "" +} + +func (x *PatternFlowRSVPPathRsvpHopIpv4Ipv4NextPreviousHopAddressCounter) GetCount() uint32 { + if x != nil && x.Count != nil { + return *x.Count + } + return 0 +} + +// The IPv4 address of the interface through which the last RSVP-knowledgeable hop forwarded +// this message. +type PatternFlowRSVPPathRsvpHopIpv4Ipv4NextPreviousHopAddress struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields + + // Description missing in models + // default = Choice.Enum.value + Choice *PatternFlowRSVPPathRsvpHopIpv4Ipv4NextPreviousHopAddress_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.PatternFlowRSVPPathRsvpHopIpv4Ipv4NextPreviousHopAddress_Choice_Enum,oneof" json:"choice,omitempty"` + // Description missing in models + // default = 0.0.0.0 + Value *string `protobuf:"bytes,2,opt,name=value,proto3,oneof" json:"value,omitempty"` + // Description missing in models + // default = ['0.0.0.0'] + Values []string `protobuf:"bytes,3,rep,name=values,proto3" json:"values,omitempty"` + // Description missing in models + Increment *PatternFlowRSVPPathRsvpHopIpv4Ipv4NextPreviousHopAddressCounter `protobuf:"bytes,5,opt,name=increment,proto3" json:"increment,omitempty"` + // Description missing in models + Decrement *PatternFlowRSVPPathRsvpHopIpv4Ipv4NextPreviousHopAddressCounter `protobuf:"bytes,6,opt,name=decrement,proto3" json:"decrement,omitempty"` } -func (x *LldpMetricsRequest_ColumnNames) Reset() { - *x = LldpMetricsRequest_ColumnNames{} +func (x *PatternFlowRSVPPathRsvpHopIpv4Ipv4NextPreviousHopAddress) Reset() { + *x = PatternFlowRSVPPathRsvpHopIpv4Ipv4NextPreviousHopAddress{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[907] + mi := &file_otg_proto_msgTypes[812] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *LldpMetricsRequest_ColumnNames) String() string { +func (x *PatternFlowRSVPPathRsvpHopIpv4Ipv4NextPreviousHopAddress) String() string { return protoimpl.X.MessageStringOf(x) } -func (*LldpMetricsRequest_ColumnNames) ProtoMessage() {} +func (*PatternFlowRSVPPathRsvpHopIpv4Ipv4NextPreviousHopAddress) ProtoMessage() {} -func (x *LldpMetricsRequest_ColumnNames) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[907] +func (x *PatternFlowRSVPPathRsvpHopIpv4Ipv4NextPreviousHopAddress) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[812] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -86702,72 +87889,80 @@ func (x *LldpMetricsRequest_ColumnNames) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use LldpMetricsRequest_ColumnNames.ProtoReflect.Descriptor instead. -func (*LldpMetricsRequest_ColumnNames) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{283, 0} +// Deprecated: Use PatternFlowRSVPPathRsvpHopIpv4Ipv4NextPreviousHopAddress.ProtoReflect.Descriptor instead. +func (*PatternFlowRSVPPathRsvpHopIpv4Ipv4NextPreviousHopAddress) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{812} } -type RsvpMetricsRequest_ColumnNames struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields +func (x *PatternFlowRSVPPathRsvpHopIpv4Ipv4NextPreviousHopAddress) GetChoice() PatternFlowRSVPPathRsvpHopIpv4Ipv4NextPreviousHopAddress_Choice_Enum { + if x != nil && x.Choice != nil { + return *x.Choice + } + return PatternFlowRSVPPathRsvpHopIpv4Ipv4NextPreviousHopAddress_Choice_unspecified } -func (x *RsvpMetricsRequest_ColumnNames) Reset() { - *x = RsvpMetricsRequest_ColumnNames{} - if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[908] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) +func (x *PatternFlowRSVPPathRsvpHopIpv4Ipv4NextPreviousHopAddress) GetValue() string { + if x != nil && x.Value != nil { + return *x.Value } + return "" } -func (x *RsvpMetricsRequest_ColumnNames) String() string { - return protoimpl.X.MessageStringOf(x) +func (x *PatternFlowRSVPPathRsvpHopIpv4Ipv4NextPreviousHopAddress) GetValues() []string { + if x != nil { + return x.Values + } + return nil } -func (*RsvpMetricsRequest_ColumnNames) ProtoMessage() {} - -func (x *RsvpMetricsRequest_ColumnNames) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[908] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms +func (x *PatternFlowRSVPPathRsvpHopIpv4Ipv4NextPreviousHopAddress) GetIncrement() *PatternFlowRSVPPathRsvpHopIpv4Ipv4NextPreviousHopAddressCounter { + if x != nil { + return x.Increment } - return mi.MessageOf(x) + return nil } -// Deprecated: Use RsvpMetricsRequest_ColumnNames.ProtoReflect.Descriptor instead. -func (*RsvpMetricsRequest_ColumnNames) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{285, 0} +func (x *PatternFlowRSVPPathRsvpHopIpv4Ipv4NextPreviousHopAddress) GetDecrement() *PatternFlowRSVPPathRsvpHopIpv4Ipv4NextPreviousHopAddressCounter { + if x != nil { + return x.Decrement + } + return nil } -type StatesRequest_Choice struct { +// integer counter pattern +type PatternFlowRSVPPathRsvpHopIpv4LogicalInterfaceHandleCounter struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields + + // Description missing in models + // default = 0 + Start *uint32 `protobuf:"varint,1,opt,name=start,proto3,oneof" json:"start,omitempty"` + // Description missing in models + // default = 1 + Step *uint32 `protobuf:"varint,2,opt,name=step,proto3,oneof" json:"step,omitempty"` + // Description missing in models + // default = 1 + Count *uint32 `protobuf:"varint,3,opt,name=count,proto3,oneof" json:"count,omitempty"` } -func (x *StatesRequest_Choice) Reset() { - *x = StatesRequest_Choice{} +func (x *PatternFlowRSVPPathRsvpHopIpv4LogicalInterfaceHandleCounter) Reset() { + *x = PatternFlowRSVPPathRsvpHopIpv4LogicalInterfaceHandleCounter{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[909] + mi := &file_otg_proto_msgTypes[813] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *StatesRequest_Choice) String() string { +func (x *PatternFlowRSVPPathRsvpHopIpv4LogicalInterfaceHandleCounter) String() string { return protoimpl.X.MessageStringOf(x) } -func (*StatesRequest_Choice) ProtoMessage() {} +func (*PatternFlowRSVPPathRsvpHopIpv4LogicalInterfaceHandleCounter) ProtoMessage() {} -func (x *StatesRequest_Choice) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[909] +func (x *PatternFlowRSVPPathRsvpHopIpv4LogicalInterfaceHandleCounter) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[813] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -86778,34 +87973,73 @@ func (x *StatesRequest_Choice) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use StatesRequest_Choice.ProtoReflect.Descriptor instead. -func (*StatesRequest_Choice) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{287, 0} +// Deprecated: Use PatternFlowRSVPPathRsvpHopIpv4LogicalInterfaceHandleCounter.ProtoReflect.Descriptor instead. +func (*PatternFlowRSVPPathRsvpHopIpv4LogicalInterfaceHandleCounter) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{813} } -type StatesResponse_Choice struct { +func (x *PatternFlowRSVPPathRsvpHopIpv4LogicalInterfaceHandleCounter) GetStart() uint32 { + if x != nil && x.Start != nil { + return *x.Start + } + return 0 +} + +func (x *PatternFlowRSVPPathRsvpHopIpv4LogicalInterfaceHandleCounter) GetStep() uint32 { + if x != nil && x.Step != nil { + return *x.Step + } + return 0 +} + +func (x *PatternFlowRSVPPathRsvpHopIpv4LogicalInterfaceHandleCounter) GetCount() uint32 { + if x != nil && x.Count != nil { + return *x.Count + } + return 0 +} + +// Logical Interface Handle (LIH) is used to distinguish logical outgoing interfaces. +// A node receiving an LIH in a Path message saves its value and returns it in the HOP +// objects of subsequent Resv messages sent to the node that originated the LIH. The +// LIH should be identically zero if there is no logical interface handle. +type PatternFlowRSVPPathRsvpHopIpv4LogicalInterfaceHandle struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields + + // Description missing in models + // default = Choice.Enum.value + Choice *PatternFlowRSVPPathRsvpHopIpv4LogicalInterfaceHandle_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.PatternFlowRSVPPathRsvpHopIpv4LogicalInterfaceHandle_Choice_Enum,oneof" json:"choice,omitempty"` + // Description missing in models + // default = 0 + Value *uint32 `protobuf:"varint,2,opt,name=value,proto3,oneof" json:"value,omitempty"` + // Description missing in models + // default = [0] + Values []uint32 `protobuf:"varint,3,rep,packed,name=values,proto3" json:"values,omitempty"` + // Description missing in models + Increment *PatternFlowRSVPPathRsvpHopIpv4LogicalInterfaceHandleCounter `protobuf:"bytes,5,opt,name=increment,proto3" json:"increment,omitempty"` + // Description missing in models + Decrement *PatternFlowRSVPPathRsvpHopIpv4LogicalInterfaceHandleCounter `protobuf:"bytes,6,opt,name=decrement,proto3" json:"decrement,omitempty"` } -func (x *StatesResponse_Choice) Reset() { - *x = StatesResponse_Choice{} +func (x *PatternFlowRSVPPathRsvpHopIpv4LogicalInterfaceHandle) Reset() { + *x = PatternFlowRSVPPathRsvpHopIpv4LogicalInterfaceHandle{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[910] + mi := &file_otg_proto_msgTypes[814] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *StatesResponse_Choice) String() string { +func (x *PatternFlowRSVPPathRsvpHopIpv4LogicalInterfaceHandle) String() string { return protoimpl.X.MessageStringOf(x) } -func (*StatesResponse_Choice) ProtoMessage() {} +func (*PatternFlowRSVPPathRsvpHopIpv4LogicalInterfaceHandle) ProtoMessage() {} -func (x *StatesResponse_Choice) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[910] +func (x *PatternFlowRSVPPathRsvpHopIpv4LogicalInterfaceHandle) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[814] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -86816,72 +88050,80 @@ func (x *StatesResponse_Choice) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use StatesResponse_Choice.ProtoReflect.Descriptor instead. -func (*StatesResponse_Choice) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{288, 0} +// Deprecated: Use PatternFlowRSVPPathRsvpHopIpv4LogicalInterfaceHandle.ProtoReflect.Descriptor instead. +func (*PatternFlowRSVPPathRsvpHopIpv4LogicalInterfaceHandle) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{814} } -type BgpPrefixStateRequest_PrefixFilters struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields +func (x *PatternFlowRSVPPathRsvpHopIpv4LogicalInterfaceHandle) GetChoice() PatternFlowRSVPPathRsvpHopIpv4LogicalInterfaceHandle_Choice_Enum { + if x != nil && x.Choice != nil { + return *x.Choice + } + return PatternFlowRSVPPathRsvpHopIpv4LogicalInterfaceHandle_Choice_unspecified } -func (x *BgpPrefixStateRequest_PrefixFilters) Reset() { - *x = BgpPrefixStateRequest_PrefixFilters{} - if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[911] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) +func (x *PatternFlowRSVPPathRsvpHopIpv4LogicalInterfaceHandle) GetValue() uint32 { + if x != nil && x.Value != nil { + return *x.Value } + return 0 } -func (x *BgpPrefixStateRequest_PrefixFilters) String() string { - return protoimpl.X.MessageStringOf(x) +func (x *PatternFlowRSVPPathRsvpHopIpv4LogicalInterfaceHandle) GetValues() []uint32 { + if x != nil { + return x.Values + } + return nil } -func (*BgpPrefixStateRequest_PrefixFilters) ProtoMessage() {} - -func (x *BgpPrefixStateRequest_PrefixFilters) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[911] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms +func (x *PatternFlowRSVPPathRsvpHopIpv4LogicalInterfaceHandle) GetIncrement() *PatternFlowRSVPPathRsvpHopIpv4LogicalInterfaceHandleCounter { + if x != nil { + return x.Increment } - return mi.MessageOf(x) + return nil } -// Deprecated: Use BgpPrefixStateRequest_PrefixFilters.ProtoReflect.Descriptor instead. -func (*BgpPrefixStateRequest_PrefixFilters) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{293, 0} +func (x *PatternFlowRSVPPathRsvpHopIpv4LogicalInterfaceHandle) GetDecrement() *PatternFlowRSVPPathRsvpHopIpv4LogicalInterfaceHandleCounter { + if x != nil { + return x.Decrement + } + return nil } -type BgpPrefixIpv4UnicastFilter_Origin struct { +// integer counter pattern +type PatternFlowRSVPPathTimeValuesType1RefreshPeriodRCounter struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields + + // Description missing in models + // default = 0 + Start *uint32 `protobuf:"varint,1,opt,name=start,proto3,oneof" json:"start,omitempty"` + // Description missing in models + // default = 1 + Step *uint32 `protobuf:"varint,2,opt,name=step,proto3,oneof" json:"step,omitempty"` + // Description missing in models + // default = 1 + Count *uint32 `protobuf:"varint,3,opt,name=count,proto3,oneof" json:"count,omitempty"` } -func (x *BgpPrefixIpv4UnicastFilter_Origin) Reset() { - *x = BgpPrefixIpv4UnicastFilter_Origin{} +func (x *PatternFlowRSVPPathTimeValuesType1RefreshPeriodRCounter) Reset() { + *x = PatternFlowRSVPPathTimeValuesType1RefreshPeriodRCounter{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[912] + mi := &file_otg_proto_msgTypes[815] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *BgpPrefixIpv4UnicastFilter_Origin) String() string { +func (x *PatternFlowRSVPPathTimeValuesType1RefreshPeriodRCounter) String() string { return protoimpl.X.MessageStringOf(x) } -func (*BgpPrefixIpv4UnicastFilter_Origin) ProtoMessage() {} +func (*PatternFlowRSVPPathTimeValuesType1RefreshPeriodRCounter) ProtoMessage() {} -func (x *BgpPrefixIpv4UnicastFilter_Origin) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[912] +func (x *PatternFlowRSVPPathTimeValuesType1RefreshPeriodRCounter) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[815] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -86892,72 +88134,70 @@ func (x *BgpPrefixIpv4UnicastFilter_Origin) ProtoReflect() protoreflect.Message return mi.MessageOf(x) } -// Deprecated: Use BgpPrefixIpv4UnicastFilter_Origin.ProtoReflect.Descriptor instead. -func (*BgpPrefixIpv4UnicastFilter_Origin) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{294, 0} +// Deprecated: Use PatternFlowRSVPPathTimeValuesType1RefreshPeriodRCounter.ProtoReflect.Descriptor instead. +func (*PatternFlowRSVPPathTimeValuesType1RefreshPeriodRCounter) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{815} } -type BgpPrefixIpv6UnicastFilter_Origin struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields +func (x *PatternFlowRSVPPathTimeValuesType1RefreshPeriodRCounter) GetStart() uint32 { + if x != nil && x.Start != nil { + return *x.Start + } + return 0 } -func (x *BgpPrefixIpv6UnicastFilter_Origin) Reset() { - *x = BgpPrefixIpv6UnicastFilter_Origin{} - if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[913] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) +func (x *PatternFlowRSVPPathTimeValuesType1RefreshPeriodRCounter) GetStep() uint32 { + if x != nil && x.Step != nil { + return *x.Step } + return 0 } -func (x *BgpPrefixIpv6UnicastFilter_Origin) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*BgpPrefixIpv6UnicastFilter_Origin) ProtoMessage() {} - -func (x *BgpPrefixIpv6UnicastFilter_Origin) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[913] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms +func (x *PatternFlowRSVPPathTimeValuesType1RefreshPeriodRCounter) GetCount() uint32 { + if x != nil && x.Count != nil { + return *x.Count } - return mi.MessageOf(x) -} - -// Deprecated: Use BgpPrefixIpv6UnicastFilter_Origin.ProtoReflect.Descriptor instead. -func (*BgpPrefixIpv6UnicastFilter_Origin) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{295, 0} + return 0 } -type BgpPrefixIpv4UnicastState_Origin struct { +// The refresh timeout period R used to generate this message;in milliseconds. +type PatternFlowRSVPPathTimeValuesType1RefreshPeriodR struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields + + // Description missing in models + // default = Choice.Enum.value + Choice *PatternFlowRSVPPathTimeValuesType1RefreshPeriodR_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.PatternFlowRSVPPathTimeValuesType1RefreshPeriodR_Choice_Enum,oneof" json:"choice,omitempty"` + // Description missing in models + // default = 0 + Value *uint32 `protobuf:"varint,2,opt,name=value,proto3,oneof" json:"value,omitempty"` + // Description missing in models + // default = [0] + Values []uint32 `protobuf:"varint,3,rep,packed,name=values,proto3" json:"values,omitempty"` + // Description missing in models + Increment *PatternFlowRSVPPathTimeValuesType1RefreshPeriodRCounter `protobuf:"bytes,5,opt,name=increment,proto3" json:"increment,omitempty"` + // Description missing in models + Decrement *PatternFlowRSVPPathTimeValuesType1RefreshPeriodRCounter `protobuf:"bytes,6,opt,name=decrement,proto3" json:"decrement,omitempty"` } -func (x *BgpPrefixIpv4UnicastState_Origin) Reset() { - *x = BgpPrefixIpv4UnicastState_Origin{} +func (x *PatternFlowRSVPPathTimeValuesType1RefreshPeriodR) Reset() { + *x = PatternFlowRSVPPathTimeValuesType1RefreshPeriodR{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[914] + mi := &file_otg_proto_msgTypes[816] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *BgpPrefixIpv4UnicastState_Origin) String() string { +func (x *PatternFlowRSVPPathTimeValuesType1RefreshPeriodR) String() string { return protoimpl.X.MessageStringOf(x) } -func (*BgpPrefixIpv4UnicastState_Origin) ProtoMessage() {} +func (*PatternFlowRSVPPathTimeValuesType1RefreshPeriodR) ProtoMessage() {} -func (x *BgpPrefixIpv4UnicastState_Origin) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[914] +func (x *PatternFlowRSVPPathTimeValuesType1RefreshPeriodR) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[816] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -86968,72 +88208,80 @@ func (x *BgpPrefixIpv4UnicastState_Origin) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use BgpPrefixIpv4UnicastState_Origin.ProtoReflect.Descriptor instead. -func (*BgpPrefixIpv4UnicastState_Origin) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{297, 0} +// Deprecated: Use PatternFlowRSVPPathTimeValuesType1RefreshPeriodR.ProtoReflect.Descriptor instead. +func (*PatternFlowRSVPPathTimeValuesType1RefreshPeriodR) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{816} } -type BgpPrefixIpv6UnicastState_Origin struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields +func (x *PatternFlowRSVPPathTimeValuesType1RefreshPeriodR) GetChoice() PatternFlowRSVPPathTimeValuesType1RefreshPeriodR_Choice_Enum { + if x != nil && x.Choice != nil { + return *x.Choice + } + return PatternFlowRSVPPathTimeValuesType1RefreshPeriodR_Choice_unspecified } -func (x *BgpPrefixIpv6UnicastState_Origin) Reset() { - *x = BgpPrefixIpv6UnicastState_Origin{} - if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[915] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) +func (x *PatternFlowRSVPPathTimeValuesType1RefreshPeriodR) GetValue() uint32 { + if x != nil && x.Value != nil { + return *x.Value } + return 0 } -func (x *BgpPrefixIpv6UnicastState_Origin) String() string { - return protoimpl.X.MessageStringOf(x) +func (x *PatternFlowRSVPPathTimeValuesType1RefreshPeriodR) GetValues() []uint32 { + if x != nil { + return x.Values + } + return nil } -func (*BgpPrefixIpv6UnicastState_Origin) ProtoMessage() {} - -func (x *BgpPrefixIpv6UnicastState_Origin) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[915] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms +func (x *PatternFlowRSVPPathTimeValuesType1RefreshPeriodR) GetIncrement() *PatternFlowRSVPPathTimeValuesType1RefreshPeriodRCounter { + if x != nil { + return x.Increment } - return mi.MessageOf(x) + return nil } -// Deprecated: Use BgpPrefixIpv6UnicastState_Origin.ProtoReflect.Descriptor instead. -func (*BgpPrefixIpv6UnicastState_Origin) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{298, 0} +func (x *PatternFlowRSVPPathTimeValuesType1RefreshPeriodR) GetDecrement() *PatternFlowRSVPPathTimeValuesType1RefreshPeriodRCounter { + if x != nil { + return x.Decrement + } + return nil } -type ResultBgpCommunity_Type struct { +// integer counter pattern +type PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixLBitCounter struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields + + // Description missing in models + // default = 0 + Start *uint32 `protobuf:"varint,1,opt,name=start,proto3,oneof" json:"start,omitempty"` + // Description missing in models + // default = 1 + Step *uint32 `protobuf:"varint,2,opt,name=step,proto3,oneof" json:"step,omitempty"` + // Description missing in models + // default = 1 + Count *uint32 `protobuf:"varint,3,opt,name=count,proto3,oneof" json:"count,omitempty"` } -func (x *ResultBgpCommunity_Type) Reset() { - *x = ResultBgpCommunity_Type{} +func (x *PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixLBitCounter) Reset() { + *x = PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixLBitCounter{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[916] + mi := &file_otg_proto_msgTypes[817] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *ResultBgpCommunity_Type) String() string { +func (x *PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixLBitCounter) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ResultBgpCommunity_Type) ProtoMessage() {} +func (*PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixLBitCounter) ProtoMessage() {} -func (x *ResultBgpCommunity_Type) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[916] +func (x *PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixLBitCounter) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[817] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -87044,72 +88292,72 @@ func (x *ResultBgpCommunity_Type) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use ResultBgpCommunity_Type.ProtoReflect.Descriptor instead. -func (*ResultBgpCommunity_Type) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{299, 0} -} - -type ResultBgpAsPathSegment_Type struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields +// Deprecated: Use PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixLBitCounter.ProtoReflect.Descriptor instead. +func (*PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixLBitCounter) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{817} } -func (x *ResultBgpAsPathSegment_Type) Reset() { - *x = ResultBgpAsPathSegment_Type{} - if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[917] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) +func (x *PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixLBitCounter) GetStart() uint32 { + if x != nil && x.Start != nil { + return *x.Start } + return 0 } -func (x *ResultBgpAsPathSegment_Type) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*ResultBgpAsPathSegment_Type) ProtoMessage() {} - -func (x *ResultBgpAsPathSegment_Type) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[917] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms +func (x *PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixLBitCounter) GetStep() uint32 { + if x != nil && x.Step != nil { + return *x.Step } - return mi.MessageOf(x) + return 0 } -// Deprecated: Use ResultBgpAsPathSegment_Type.ProtoReflect.Descriptor instead. -func (*ResultBgpAsPathSegment_Type) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{301, 0} +func (x *PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixLBitCounter) GetCount() uint32 { + if x != nil && x.Count != nil { + return *x.Count + } + return 0 } -type IsisLspState_PduType struct { +// The L bit is an attribute of the subobject.The L bit is set if the subobject represents +// a loose hop in the explicit route. If the bit is not set, the subobject represents +// a strict hop in the explicit route. +type PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixLBit struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields + + // Description missing in models + // default = Choice.Enum.value + Choice *PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixLBit_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixLBit_Choice_Enum,oneof" json:"choice,omitempty"` + // Description missing in models + // default = 0 + Value *uint32 `protobuf:"varint,2,opt,name=value,proto3,oneof" json:"value,omitempty"` + // Description missing in models + // default = [0] + Values []uint32 `protobuf:"varint,3,rep,packed,name=values,proto3" json:"values,omitempty"` + // Description missing in models + Increment *PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixLBitCounter `protobuf:"bytes,5,opt,name=increment,proto3" json:"increment,omitempty"` + // Description missing in models + Decrement *PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixLBitCounter `protobuf:"bytes,6,opt,name=decrement,proto3" json:"decrement,omitempty"` } -func (x *IsisLspState_PduType) Reset() { - *x = IsisLspState_PduType{} +func (x *PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixLBit) Reset() { + *x = PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixLBit{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[918] + mi := &file_otg_proto_msgTypes[818] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *IsisLspState_PduType) String() string { +func (x *PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixLBit) String() string { return protoimpl.X.MessageStringOf(x) } -func (*IsisLspState_PduType) ProtoMessage() {} +func (*PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixLBit) ProtoMessage() {} -func (x *IsisLspState_PduType) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[918] +func (x *PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixLBit) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[818] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -87120,72 +88368,80 @@ func (x *IsisLspState_PduType) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use IsisLspState_PduType.ProtoReflect.Descriptor instead. -func (*IsisLspState_PduType) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{304, 0} +// Deprecated: Use PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixLBit.ProtoReflect.Descriptor instead. +func (*PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixLBit) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{818} } -type IsisLspV4Prefix_RedistributionType struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields +func (x *PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixLBit) GetChoice() PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixLBit_Choice_Enum { + if x != nil && x.Choice != nil { + return *x.Choice + } + return PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixLBit_Choice_unspecified } -func (x *IsisLspV4Prefix_RedistributionType) Reset() { - *x = IsisLspV4Prefix_RedistributionType{} - if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[919] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) +func (x *PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixLBit) GetValue() uint32 { + if x != nil && x.Value != nil { + return *x.Value } + return 0 } -func (x *IsisLspV4Prefix_RedistributionType) String() string { - return protoimpl.X.MessageStringOf(x) +func (x *PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixLBit) GetValues() []uint32 { + if x != nil { + return x.Values + } + return nil } -func (*IsisLspV4Prefix_RedistributionType) ProtoMessage() {} - -func (x *IsisLspV4Prefix_RedistributionType) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[919] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms +func (x *PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixLBit) GetIncrement() *PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixLBitCounter { + if x != nil { + return x.Increment } - return mi.MessageOf(x) + return nil } -// Deprecated: Use IsisLspV4Prefix_RedistributionType.ProtoReflect.Descriptor instead. -func (*IsisLspV4Prefix_RedistributionType) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{313, 0} +func (x *PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixLBit) GetDecrement() *PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixLBitCounter { + if x != nil { + return x.Decrement + } + return nil } -type IsisLspV4Prefix_OriginType struct { +// ipv4 counter pattern +type PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixIpv4AddressCounter struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields + + // Description missing in models + // default = 0.0.0.0 + Start *string `protobuf:"bytes,1,opt,name=start,proto3,oneof" json:"start,omitempty"` + // Description missing in models + // default = 0.0.0.1 + Step *string `protobuf:"bytes,2,opt,name=step,proto3,oneof" json:"step,omitempty"` + // Description missing in models + // default = 1 + Count *uint32 `protobuf:"varint,3,opt,name=count,proto3,oneof" json:"count,omitempty"` } -func (x *IsisLspV4Prefix_OriginType) Reset() { - *x = IsisLspV4Prefix_OriginType{} +func (x *PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixIpv4AddressCounter) Reset() { + *x = PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixIpv4AddressCounter{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[920] + mi := &file_otg_proto_msgTypes[819] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *IsisLspV4Prefix_OriginType) String() string { +func (x *PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixIpv4AddressCounter) String() string { return protoimpl.X.MessageStringOf(x) } -func (*IsisLspV4Prefix_OriginType) ProtoMessage() {} +func (*PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixIpv4AddressCounter) ProtoMessage() {} -func (x *IsisLspV4Prefix_OriginType) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[920] +func (x *PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixIpv4AddressCounter) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[819] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -87196,34 +88452,71 @@ func (x *IsisLspV4Prefix_OriginType) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use IsisLspV4Prefix_OriginType.ProtoReflect.Descriptor instead. -func (*IsisLspV4Prefix_OriginType) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{313, 1} +// Deprecated: Use PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixIpv4AddressCounter.ProtoReflect.Descriptor instead. +func (*PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixIpv4AddressCounter) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{819} } -type IsisLspExtendedV4Prefix_RedistributionType struct { +func (x *PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixIpv4AddressCounter) GetStart() string { + if x != nil && x.Start != nil { + return *x.Start + } + return "" +} + +func (x *PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixIpv4AddressCounter) GetStep() string { + if x != nil && x.Step != nil { + return *x.Step + } + return "" +} + +func (x *PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixIpv4AddressCounter) GetCount() uint32 { + if x != nil && x.Count != nil { + return *x.Count + } + return 0 +} + +// This IPv4 address is treated as a prefix based on the prefix length value below. +// Bits beyond the prefix are ignored on receipt and SHOULD be set to zero on transmission. +type PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixIpv4Address struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields + + // Description missing in models + // default = Choice.Enum.value + Choice *PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixIpv4Address_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixIpv4Address_Choice_Enum,oneof" json:"choice,omitempty"` + // Description missing in models + // default = 0.0.0.0 + Value *string `protobuf:"bytes,2,opt,name=value,proto3,oneof" json:"value,omitempty"` + // Description missing in models + // default = ['0.0.0.0'] + Values []string `protobuf:"bytes,3,rep,name=values,proto3" json:"values,omitempty"` + // Description missing in models + Increment *PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixIpv4AddressCounter `protobuf:"bytes,5,opt,name=increment,proto3" json:"increment,omitempty"` + // Description missing in models + Decrement *PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixIpv4AddressCounter `protobuf:"bytes,6,opt,name=decrement,proto3" json:"decrement,omitempty"` } -func (x *IsisLspExtendedV4Prefix_RedistributionType) Reset() { - *x = IsisLspExtendedV4Prefix_RedistributionType{} +func (x *PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixIpv4Address) Reset() { + *x = PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixIpv4Address{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[921] + mi := &file_otg_proto_msgTypes[820] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *IsisLspExtendedV4Prefix_RedistributionType) String() string { +func (x *PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixIpv4Address) String() string { return protoimpl.X.MessageStringOf(x) } -func (*IsisLspExtendedV4Prefix_RedistributionType) ProtoMessage() {} +func (*PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixIpv4Address) ProtoMessage() {} -func (x *IsisLspExtendedV4Prefix_RedistributionType) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[921] +func (x *PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixIpv4Address) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[820] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -87234,72 +88527,80 @@ func (x *IsisLspExtendedV4Prefix_RedistributionType) ProtoReflect() protoreflect return mi.MessageOf(x) } -// Deprecated: Use IsisLspExtendedV4Prefix_RedistributionType.ProtoReflect.Descriptor instead. -func (*IsisLspExtendedV4Prefix_RedistributionType) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{315, 0} +// Deprecated: Use PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixIpv4Address.ProtoReflect.Descriptor instead. +func (*PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixIpv4Address) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{820} } -type IsisLspV6Prefix_RedistributionType struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields +func (x *PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixIpv4Address) GetChoice() PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixIpv4Address_Choice_Enum { + if x != nil && x.Choice != nil { + return *x.Choice + } + return PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixIpv4Address_Choice_unspecified } -func (x *IsisLspV6Prefix_RedistributionType) Reset() { - *x = IsisLspV6Prefix_RedistributionType{} - if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[922] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) +func (x *PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixIpv4Address) GetValue() string { + if x != nil && x.Value != nil { + return *x.Value } + return "" } -func (x *IsisLspV6Prefix_RedistributionType) String() string { - return protoimpl.X.MessageStringOf(x) +func (x *PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixIpv4Address) GetValues() []string { + if x != nil { + return x.Values + } + return nil } -func (*IsisLspV6Prefix_RedistributionType) ProtoMessage() {} - -func (x *IsisLspV6Prefix_RedistributionType) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[922] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms +func (x *PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixIpv4Address) GetIncrement() *PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixIpv4AddressCounter { + if x != nil { + return x.Increment } - return mi.MessageOf(x) + return nil } -// Deprecated: Use IsisLspV6Prefix_RedistributionType.ProtoReflect.Descriptor instead. -func (*IsisLspV6Prefix_RedistributionType) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{317, 0} +func (x *PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixIpv4Address) GetDecrement() *PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixIpv4AddressCounter { + if x != nil { + return x.Decrement + } + return nil } -type IsisLspV6Prefix_OriginType struct { +// integer counter pattern +type PatternFlowRSVPPathExplicitRouteType1FourByteASNumberLBitCounter struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields + + // Description missing in models + // default = 0 + Start *uint32 `protobuf:"varint,1,opt,name=start,proto3,oneof" json:"start,omitempty"` + // Description missing in models + // default = 1 + Step *uint32 `protobuf:"varint,2,opt,name=step,proto3,oneof" json:"step,omitempty"` + // Description missing in models + // default = 1 + Count *uint32 `protobuf:"varint,3,opt,name=count,proto3,oneof" json:"count,omitempty"` } -func (x *IsisLspV6Prefix_OriginType) Reset() { - *x = IsisLspV6Prefix_OriginType{} +func (x *PatternFlowRSVPPathExplicitRouteType1FourByteASNumberLBitCounter) Reset() { + *x = PatternFlowRSVPPathExplicitRouteType1FourByteASNumberLBitCounter{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[923] + mi := &file_otg_proto_msgTypes[821] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *IsisLspV6Prefix_OriginType) String() string { +func (x *PatternFlowRSVPPathExplicitRouteType1FourByteASNumberLBitCounter) String() string { return protoimpl.X.MessageStringOf(x) } -func (*IsisLspV6Prefix_OriginType) ProtoMessage() {} +func (*PatternFlowRSVPPathExplicitRouteType1FourByteASNumberLBitCounter) ProtoMessage() {} -func (x *IsisLspV6Prefix_OriginType) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[923] +func (x *PatternFlowRSVPPathExplicitRouteType1FourByteASNumberLBitCounter) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[821] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -87310,34 +88611,72 @@ func (x *IsisLspV6Prefix_OriginType) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use IsisLspV6Prefix_OriginType.ProtoReflect.Descriptor instead. -func (*IsisLspV6Prefix_OriginType) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{317, 1} +// Deprecated: Use PatternFlowRSVPPathExplicitRouteType1FourByteASNumberLBitCounter.ProtoReflect.Descriptor instead. +func (*PatternFlowRSVPPathExplicitRouteType1FourByteASNumberLBitCounter) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{821} } -type LldpNeighborsState_ChassisIdType struct { +func (x *PatternFlowRSVPPathExplicitRouteType1FourByteASNumberLBitCounter) GetStart() uint32 { + if x != nil && x.Start != nil { + return *x.Start + } + return 0 +} + +func (x *PatternFlowRSVPPathExplicitRouteType1FourByteASNumberLBitCounter) GetStep() uint32 { + if x != nil && x.Step != nil { + return *x.Step + } + return 0 +} + +func (x *PatternFlowRSVPPathExplicitRouteType1FourByteASNumberLBitCounter) GetCount() uint32 { + if x != nil && x.Count != nil { + return *x.Count + } + return 0 +} + +// The L bit is an attribute of the subobject.The L bit is set if the subobject represents +// a loose hop in the explicit route. If the bit is not set, the subobject represents +// a strict hop in the explicit route. +type PatternFlowRSVPPathExplicitRouteType1FourByteASNumberLBit struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields + + // Description missing in models + // default = Choice.Enum.value + Choice *PatternFlowRSVPPathExplicitRouteType1FourByteASNumberLBit_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.PatternFlowRSVPPathExplicitRouteType1FourByteASNumberLBit_Choice_Enum,oneof" json:"choice,omitempty"` + // Description missing in models + // default = 0 + Value *uint32 `protobuf:"varint,2,opt,name=value,proto3,oneof" json:"value,omitempty"` + // Description missing in models + // default = [0] + Values []uint32 `protobuf:"varint,3,rep,packed,name=values,proto3" json:"values,omitempty"` + // Description missing in models + Increment *PatternFlowRSVPPathExplicitRouteType1FourByteASNumberLBitCounter `protobuf:"bytes,5,opt,name=increment,proto3" json:"increment,omitempty"` + // Description missing in models + Decrement *PatternFlowRSVPPathExplicitRouteType1FourByteASNumberLBitCounter `protobuf:"bytes,6,opt,name=decrement,proto3" json:"decrement,omitempty"` } -func (x *LldpNeighborsState_ChassisIdType) Reset() { - *x = LldpNeighborsState_ChassisIdType{} +func (x *PatternFlowRSVPPathExplicitRouteType1FourByteASNumberLBit) Reset() { + *x = PatternFlowRSVPPathExplicitRouteType1FourByteASNumberLBit{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[924] + mi := &file_otg_proto_msgTypes[822] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *LldpNeighborsState_ChassisIdType) String() string { +func (x *PatternFlowRSVPPathExplicitRouteType1FourByteASNumberLBit) String() string { return protoimpl.X.MessageStringOf(x) } -func (*LldpNeighborsState_ChassisIdType) ProtoMessage() {} +func (*PatternFlowRSVPPathExplicitRouteType1FourByteASNumberLBit) ProtoMessage() {} -func (x *LldpNeighborsState_ChassisIdType) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[924] +func (x *PatternFlowRSVPPathExplicitRouteType1FourByteASNumberLBit) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[822] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -87348,72 +88687,80 @@ func (x *LldpNeighborsState_ChassisIdType) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use LldpNeighborsState_ChassisIdType.ProtoReflect.Descriptor instead. -func (*LldpNeighborsState_ChassisIdType) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{320, 0} +// Deprecated: Use PatternFlowRSVPPathExplicitRouteType1FourByteASNumberLBit.ProtoReflect.Descriptor instead. +func (*PatternFlowRSVPPathExplicitRouteType1FourByteASNumberLBit) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{822} } -type LldpNeighborsState_PortIdType struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields +func (x *PatternFlowRSVPPathExplicitRouteType1FourByteASNumberLBit) GetChoice() PatternFlowRSVPPathExplicitRouteType1FourByteASNumberLBit_Choice_Enum { + if x != nil && x.Choice != nil { + return *x.Choice + } + return PatternFlowRSVPPathExplicitRouteType1FourByteASNumberLBit_Choice_unspecified } -func (x *LldpNeighborsState_PortIdType) Reset() { - *x = LldpNeighborsState_PortIdType{} - if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[925] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) +func (x *PatternFlowRSVPPathExplicitRouteType1FourByteASNumberLBit) GetValue() uint32 { + if x != nil && x.Value != nil { + return *x.Value } + return 0 } -func (x *LldpNeighborsState_PortIdType) String() string { - return protoimpl.X.MessageStringOf(x) +func (x *PatternFlowRSVPPathExplicitRouteType1FourByteASNumberLBit) GetValues() []uint32 { + if x != nil { + return x.Values + } + return nil } -func (*LldpNeighborsState_PortIdType) ProtoMessage() {} - -func (x *LldpNeighborsState_PortIdType) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[925] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms +func (x *PatternFlowRSVPPathExplicitRouteType1FourByteASNumberLBit) GetIncrement() *PatternFlowRSVPPathExplicitRouteType1FourByteASNumberLBitCounter { + if x != nil { + return x.Increment } - return mi.MessageOf(x) + return nil } -// Deprecated: Use LldpNeighborsState_PortIdType.ProtoReflect.Descriptor instead. -func (*LldpNeighborsState_PortIdType) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{320, 1} +func (x *PatternFlowRSVPPathExplicitRouteType1FourByteASNumberLBit) GetDecrement() *PatternFlowRSVPPathExplicitRouteType1FourByteASNumberLBitCounter { + if x != nil { + return x.Decrement + } + return nil } -type LldpCapabilityState_CapabilityName struct { +// integer counter pattern +type PatternFlowRSVPPathExplicitRouteType1FourByteASNumberReservedCounter struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields + + // Description missing in models + // default = 0 + Start *uint32 `protobuf:"varint,1,opt,name=start,proto3,oneof" json:"start,omitempty"` + // Description missing in models + // default = 1 + Step *uint32 `protobuf:"varint,2,opt,name=step,proto3,oneof" json:"step,omitempty"` + // Description missing in models + // default = 1 + Count *uint32 `protobuf:"varint,3,opt,name=count,proto3,oneof" json:"count,omitempty"` } -func (x *LldpCapabilityState_CapabilityName) Reset() { - *x = LldpCapabilityState_CapabilityName{} +func (x *PatternFlowRSVPPathExplicitRouteType1FourByteASNumberReservedCounter) Reset() { + *x = PatternFlowRSVPPathExplicitRouteType1FourByteASNumberReservedCounter{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[926] + mi := &file_otg_proto_msgTypes[823] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *LldpCapabilityState_CapabilityName) String() string { +func (x *PatternFlowRSVPPathExplicitRouteType1FourByteASNumberReservedCounter) String() string { return protoimpl.X.MessageStringOf(x) } -func (*LldpCapabilityState_CapabilityName) ProtoMessage() {} +func (*PatternFlowRSVPPathExplicitRouteType1FourByteASNumberReservedCounter) ProtoMessage() {} -func (x *LldpCapabilityState_CapabilityName) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[926] +func (x *PatternFlowRSVPPathExplicitRouteType1FourByteASNumberReservedCounter) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[823] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -87424,34 +88771,70 @@ func (x *LldpCapabilityState_CapabilityName) ProtoReflect() protoreflect.Message return mi.MessageOf(x) } -// Deprecated: Use LldpCapabilityState_CapabilityName.ProtoReflect.Descriptor instead. -func (*LldpCapabilityState_CapabilityName) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{322, 0} +// Deprecated: Use PatternFlowRSVPPathExplicitRouteType1FourByteASNumberReservedCounter.ProtoReflect.Descriptor instead. +func (*PatternFlowRSVPPathExplicitRouteType1FourByteASNumberReservedCounter) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{823} } -type RsvpLspState_SessionStatus struct { +func (x *PatternFlowRSVPPathExplicitRouteType1FourByteASNumberReservedCounter) GetStart() uint32 { + if x != nil && x.Start != nil { + return *x.Start + } + return 0 +} + +func (x *PatternFlowRSVPPathExplicitRouteType1FourByteASNumberReservedCounter) GetStep() uint32 { + if x != nil && x.Step != nil { + return *x.Step + } + return 0 +} + +func (x *PatternFlowRSVPPathExplicitRouteType1FourByteASNumberReservedCounter) GetCount() uint32 { + if x != nil && x.Count != nil { + return *x.Count + } + return 0 +} + +// Reserved. +type PatternFlowRSVPPathExplicitRouteType1FourByteASNumberReserved struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields + + // Description missing in models + // default = Choice.Enum.value + Choice *PatternFlowRSVPPathExplicitRouteType1FourByteASNumberReserved_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.PatternFlowRSVPPathExplicitRouteType1FourByteASNumberReserved_Choice_Enum,oneof" json:"choice,omitempty"` + // Description missing in models + // default = 0 + Value *uint32 `protobuf:"varint,2,opt,name=value,proto3,oneof" json:"value,omitempty"` + // Description missing in models + // default = [0] + Values []uint32 `protobuf:"varint,3,rep,packed,name=values,proto3" json:"values,omitempty"` + // Description missing in models + Increment *PatternFlowRSVPPathExplicitRouteType1FourByteASNumberReservedCounter `protobuf:"bytes,5,opt,name=increment,proto3" json:"increment,omitempty"` + // Description missing in models + Decrement *PatternFlowRSVPPathExplicitRouteType1FourByteASNumberReservedCounter `protobuf:"bytes,6,opt,name=decrement,proto3" json:"decrement,omitempty"` } -func (x *RsvpLspState_SessionStatus) Reset() { - *x = RsvpLspState_SessionStatus{} +func (x *PatternFlowRSVPPathExplicitRouteType1FourByteASNumberReserved) Reset() { + *x = PatternFlowRSVPPathExplicitRouteType1FourByteASNumberReserved{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[927] + mi := &file_otg_proto_msgTypes[824] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *RsvpLspState_SessionStatus) String() string { +func (x *PatternFlowRSVPPathExplicitRouteType1FourByteASNumberReserved) String() string { return protoimpl.X.MessageStringOf(x) } -func (*RsvpLspState_SessionStatus) ProtoMessage() {} +func (*PatternFlowRSVPPathExplicitRouteType1FourByteASNumberReserved) ProtoMessage() {} -func (x *RsvpLspState_SessionStatus) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[927] +func (x *PatternFlowRSVPPathExplicitRouteType1FourByteASNumberReserved) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[824] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -87462,72 +88845,80 @@ func (x *RsvpLspState_SessionStatus) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use RsvpLspState_SessionStatus.ProtoReflect.Descriptor instead. -func (*RsvpLspState_SessionStatus) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{326, 0} +// Deprecated: Use PatternFlowRSVPPathExplicitRouteType1FourByteASNumberReserved.ProtoReflect.Descriptor instead. +func (*PatternFlowRSVPPathExplicitRouteType1FourByteASNumberReserved) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{824} } -type RsvpLspState_LastFlapReason struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields +func (x *PatternFlowRSVPPathExplicitRouteType1FourByteASNumberReserved) GetChoice() PatternFlowRSVPPathExplicitRouteType1FourByteASNumberReserved_Choice_Enum { + if x != nil && x.Choice != nil { + return *x.Choice + } + return PatternFlowRSVPPathExplicitRouteType1FourByteASNumberReserved_Choice_unspecified } -func (x *RsvpLspState_LastFlapReason) Reset() { - *x = RsvpLspState_LastFlapReason{} - if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[928] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) +func (x *PatternFlowRSVPPathExplicitRouteType1FourByteASNumberReserved) GetValue() uint32 { + if x != nil && x.Value != nil { + return *x.Value } + return 0 } -func (x *RsvpLspState_LastFlapReason) String() string { - return protoimpl.X.MessageStringOf(x) +func (x *PatternFlowRSVPPathExplicitRouteType1FourByteASNumberReserved) GetValues() []uint32 { + if x != nil { + return x.Values + } + return nil } -func (*RsvpLspState_LastFlapReason) ProtoMessage() {} - -func (x *RsvpLspState_LastFlapReason) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[928] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms +func (x *PatternFlowRSVPPathExplicitRouteType1FourByteASNumberReserved) GetIncrement() *PatternFlowRSVPPathExplicitRouteType1FourByteASNumberReservedCounter { + if x != nil { + return x.Increment } - return mi.MessageOf(x) + return nil } -// Deprecated: Use RsvpLspState_LastFlapReason.ProtoReflect.Descriptor instead. -func (*RsvpLspState_LastFlapReason) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{326, 1} +func (x *PatternFlowRSVPPathExplicitRouteType1FourByteASNumberReserved) GetDecrement() *PatternFlowRSVPPathExplicitRouteType1FourByteASNumberReservedCounter { + if x != nil { + return x.Decrement + } + return nil } -type RsvpLspIpv4Ero_Type struct { +// integer counter pattern +type PatternFlowRSVPPathLabelRequestWithoutLabelRangeReservedCounter struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields + + // Description missing in models + // default = 0 + Start *uint32 `protobuf:"varint,1,opt,name=start,proto3,oneof" json:"start,omitempty"` + // Description missing in models + // default = 1 + Step *uint32 `protobuf:"varint,2,opt,name=step,proto3,oneof" json:"step,omitempty"` + // Description missing in models + // default = 1 + Count *uint32 `protobuf:"varint,3,opt,name=count,proto3,oneof" json:"count,omitempty"` } -func (x *RsvpLspIpv4Ero_Type) Reset() { - *x = RsvpLspIpv4Ero_Type{} +func (x *PatternFlowRSVPPathLabelRequestWithoutLabelRangeReservedCounter) Reset() { + *x = PatternFlowRSVPPathLabelRequestWithoutLabelRangeReservedCounter{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[929] + mi := &file_otg_proto_msgTypes[825] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *RsvpLspIpv4Ero_Type) String() string { +func (x *PatternFlowRSVPPathLabelRequestWithoutLabelRangeReservedCounter) String() string { return protoimpl.X.MessageStringOf(x) } -func (*RsvpLspIpv4Ero_Type) ProtoMessage() {} +func (*PatternFlowRSVPPathLabelRequestWithoutLabelRangeReservedCounter) ProtoMessage() {} -func (x *RsvpLspIpv4Ero_Type) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[929] +func (x *PatternFlowRSVPPathLabelRequestWithoutLabelRangeReservedCounter) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[825] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -87538,34 +88929,71 @@ func (x *RsvpLspIpv4Ero_Type) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use RsvpLspIpv4Ero_Type.ProtoReflect.Descriptor instead. -func (*RsvpLspIpv4Ero_Type) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{328, 0} +// Deprecated: Use PatternFlowRSVPPathLabelRequestWithoutLabelRangeReservedCounter.ProtoReflect.Descriptor instead. +func (*PatternFlowRSVPPathLabelRequestWithoutLabelRangeReservedCounter) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{825} } -type PatternFlowEthernetDst_Choice struct { +func (x *PatternFlowRSVPPathLabelRequestWithoutLabelRangeReservedCounter) GetStart() uint32 { + if x != nil && x.Start != nil { + return *x.Start + } + return 0 +} + +func (x *PatternFlowRSVPPathLabelRequestWithoutLabelRangeReservedCounter) GetStep() uint32 { + if x != nil && x.Step != nil { + return *x.Step + } + return 0 +} + +func (x *PatternFlowRSVPPathLabelRequestWithoutLabelRangeReservedCounter) GetCount() uint32 { + if x != nil && x.Count != nil { + return *x.Count + } + return 0 +} + +// This field is reserved. It MUST be set to zero on transmission and MUST be ignored +// on receipt. +type PatternFlowRSVPPathLabelRequestWithoutLabelRangeReserved struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields + + // Description missing in models + // default = Choice.Enum.value + Choice *PatternFlowRSVPPathLabelRequestWithoutLabelRangeReserved_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.PatternFlowRSVPPathLabelRequestWithoutLabelRangeReserved_Choice_Enum,oneof" json:"choice,omitempty"` + // Description missing in models + // default = 0 + Value *uint32 `protobuf:"varint,2,opt,name=value,proto3,oneof" json:"value,omitempty"` + // Description missing in models + // default = [0] + Values []uint32 `protobuf:"varint,3,rep,packed,name=values,proto3" json:"values,omitempty"` + // Description missing in models + Increment *PatternFlowRSVPPathLabelRequestWithoutLabelRangeReservedCounter `protobuf:"bytes,5,opt,name=increment,proto3" json:"increment,omitempty"` + // Description missing in models + Decrement *PatternFlowRSVPPathLabelRequestWithoutLabelRangeReservedCounter `protobuf:"bytes,6,opt,name=decrement,proto3" json:"decrement,omitempty"` } -func (x *PatternFlowEthernetDst_Choice) Reset() { - *x = PatternFlowEthernetDst_Choice{} +func (x *PatternFlowRSVPPathLabelRequestWithoutLabelRangeReserved) Reset() { + *x = PatternFlowRSVPPathLabelRequestWithoutLabelRangeReserved{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[930] + mi := &file_otg_proto_msgTypes[826] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowEthernetDst_Choice) String() string { +func (x *PatternFlowRSVPPathLabelRequestWithoutLabelRangeReserved) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowEthernetDst_Choice) ProtoMessage() {} +func (*PatternFlowRSVPPathLabelRequestWithoutLabelRangeReserved) ProtoMessage() {} -func (x *PatternFlowEthernetDst_Choice) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[930] +func (x *PatternFlowRSVPPathLabelRequestWithoutLabelRangeReserved) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[826] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -87576,72 +89004,80 @@ func (x *PatternFlowEthernetDst_Choice) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use PatternFlowEthernetDst_Choice.ProtoReflect.Descriptor instead. -func (*PatternFlowEthernetDst_Choice) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{332, 0} +// Deprecated: Use PatternFlowRSVPPathLabelRequestWithoutLabelRangeReserved.ProtoReflect.Descriptor instead. +func (*PatternFlowRSVPPathLabelRequestWithoutLabelRangeReserved) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{826} } -type PatternFlowEthernetSrc_Choice struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields +func (x *PatternFlowRSVPPathLabelRequestWithoutLabelRangeReserved) GetChoice() PatternFlowRSVPPathLabelRequestWithoutLabelRangeReserved_Choice_Enum { + if x != nil && x.Choice != nil { + return *x.Choice + } + return PatternFlowRSVPPathLabelRequestWithoutLabelRangeReserved_Choice_unspecified } -func (x *PatternFlowEthernetSrc_Choice) Reset() { - *x = PatternFlowEthernetSrc_Choice{} - if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[931] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) +func (x *PatternFlowRSVPPathLabelRequestWithoutLabelRangeReserved) GetValue() uint32 { + if x != nil && x.Value != nil { + return *x.Value } + return 0 } -func (x *PatternFlowEthernetSrc_Choice) String() string { - return protoimpl.X.MessageStringOf(x) +func (x *PatternFlowRSVPPathLabelRequestWithoutLabelRangeReserved) GetValues() []uint32 { + if x != nil { + return x.Values + } + return nil } -func (*PatternFlowEthernetSrc_Choice) ProtoMessage() {} - -func (x *PatternFlowEthernetSrc_Choice) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[931] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms +func (x *PatternFlowRSVPPathLabelRequestWithoutLabelRangeReserved) GetIncrement() *PatternFlowRSVPPathLabelRequestWithoutLabelRangeReservedCounter { + if x != nil { + return x.Increment } - return mi.MessageOf(x) + return nil } -// Deprecated: Use PatternFlowEthernetSrc_Choice.ProtoReflect.Descriptor instead. -func (*PatternFlowEthernetSrc_Choice) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{335, 0} +func (x *PatternFlowRSVPPathLabelRequestWithoutLabelRangeReserved) GetDecrement() *PatternFlowRSVPPathLabelRequestWithoutLabelRangeReservedCounter { + if x != nil { + return x.Decrement + } + return nil } -type PatternFlowEthernetEtherType_Choice struct { +// integer counter pattern +type PatternFlowRSVPPathLabelRequestWithoutLabelRangeL3PidCounter struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields + + // Description missing in models + // default = 0 + Start *uint32 `protobuf:"varint,1,opt,name=start,proto3,oneof" json:"start,omitempty"` + // Description missing in models + // default = 1 + Step *uint32 `protobuf:"varint,2,opt,name=step,proto3,oneof" json:"step,omitempty"` + // Description missing in models + // default = 1 + Count *uint32 `protobuf:"varint,3,opt,name=count,proto3,oneof" json:"count,omitempty"` } -func (x *PatternFlowEthernetEtherType_Choice) Reset() { - *x = PatternFlowEthernetEtherType_Choice{} +func (x *PatternFlowRSVPPathLabelRequestWithoutLabelRangeL3PidCounter) Reset() { + *x = PatternFlowRSVPPathLabelRequestWithoutLabelRangeL3PidCounter{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[932] + mi := &file_otg_proto_msgTypes[827] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowEthernetEtherType_Choice) String() string { +func (x *PatternFlowRSVPPathLabelRequestWithoutLabelRangeL3PidCounter) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowEthernetEtherType_Choice) ProtoMessage() {} +func (*PatternFlowRSVPPathLabelRequestWithoutLabelRangeL3PidCounter) ProtoMessage() {} -func (x *PatternFlowEthernetEtherType_Choice) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[932] +func (x *PatternFlowRSVPPathLabelRequestWithoutLabelRangeL3PidCounter) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[827] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -87652,34 +89088,71 @@ func (x *PatternFlowEthernetEtherType_Choice) ProtoReflect() protoreflect.Messag return mi.MessageOf(x) } -// Deprecated: Use PatternFlowEthernetEtherType_Choice.ProtoReflect.Descriptor instead. -func (*PatternFlowEthernetEtherType_Choice) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{338, 0} +// Deprecated: Use PatternFlowRSVPPathLabelRequestWithoutLabelRangeL3PidCounter.ProtoReflect.Descriptor instead. +func (*PatternFlowRSVPPathLabelRequestWithoutLabelRangeL3PidCounter) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{827} } -type PatternFlowEthernetPfcQueue_Choice struct { +func (x *PatternFlowRSVPPathLabelRequestWithoutLabelRangeL3PidCounter) GetStart() uint32 { + if x != nil && x.Start != nil { + return *x.Start + } + return 0 +} + +func (x *PatternFlowRSVPPathLabelRequestWithoutLabelRangeL3PidCounter) GetStep() uint32 { + if x != nil && x.Step != nil { + return *x.Step + } + return 0 +} + +func (x *PatternFlowRSVPPathLabelRequestWithoutLabelRangeL3PidCounter) GetCount() uint32 { + if x != nil && x.Count != nil { + return *x.Count + } + return 0 +} + +// An identifier of the layer 3 protocol using this path. Standard Ethertype values +// are used. +type PatternFlowRSVPPathLabelRequestWithoutLabelRangeL3Pid struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields + + // Description missing in models + // default = Choice.Enum.value + Choice *PatternFlowRSVPPathLabelRequestWithoutLabelRangeL3Pid_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.PatternFlowRSVPPathLabelRequestWithoutLabelRangeL3Pid_Choice_Enum,oneof" json:"choice,omitempty"` + // Description missing in models + // default = 0 + Value *uint32 `protobuf:"varint,2,opt,name=value,proto3,oneof" json:"value,omitempty"` + // Description missing in models + // default = [0] + Values []uint32 `protobuf:"varint,3,rep,packed,name=values,proto3" json:"values,omitempty"` + // Description missing in models + Increment *PatternFlowRSVPPathLabelRequestWithoutLabelRangeL3PidCounter `protobuf:"bytes,5,opt,name=increment,proto3" json:"increment,omitempty"` + // Description missing in models + Decrement *PatternFlowRSVPPathLabelRequestWithoutLabelRangeL3PidCounter `protobuf:"bytes,6,opt,name=decrement,proto3" json:"decrement,omitempty"` } -func (x *PatternFlowEthernetPfcQueue_Choice) Reset() { - *x = PatternFlowEthernetPfcQueue_Choice{} +func (x *PatternFlowRSVPPathLabelRequestWithoutLabelRangeL3Pid) Reset() { + *x = PatternFlowRSVPPathLabelRequestWithoutLabelRangeL3Pid{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[933] + mi := &file_otg_proto_msgTypes[828] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowEthernetPfcQueue_Choice) String() string { +func (x *PatternFlowRSVPPathLabelRequestWithoutLabelRangeL3Pid) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowEthernetPfcQueue_Choice) ProtoMessage() {} +func (*PatternFlowRSVPPathLabelRequestWithoutLabelRangeL3Pid) ProtoMessage() {} -func (x *PatternFlowEthernetPfcQueue_Choice) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[933] +func (x *PatternFlowRSVPPathLabelRequestWithoutLabelRangeL3Pid) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[828] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -87690,72 +89163,80 @@ func (x *PatternFlowEthernetPfcQueue_Choice) ProtoReflect() protoreflect.Message return mi.MessageOf(x) } -// Deprecated: Use PatternFlowEthernetPfcQueue_Choice.ProtoReflect.Descriptor instead. -func (*PatternFlowEthernetPfcQueue_Choice) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{341, 0} +// Deprecated: Use PatternFlowRSVPPathLabelRequestWithoutLabelRangeL3Pid.ProtoReflect.Descriptor instead. +func (*PatternFlowRSVPPathLabelRequestWithoutLabelRangeL3Pid) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{828} } -type PatternFlowVlanPriority_Choice struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields +func (x *PatternFlowRSVPPathLabelRequestWithoutLabelRangeL3Pid) GetChoice() PatternFlowRSVPPathLabelRequestWithoutLabelRangeL3Pid_Choice_Enum { + if x != nil && x.Choice != nil { + return *x.Choice + } + return PatternFlowRSVPPathLabelRequestWithoutLabelRangeL3Pid_Choice_unspecified } -func (x *PatternFlowVlanPriority_Choice) Reset() { - *x = PatternFlowVlanPriority_Choice{} - if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[934] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) +func (x *PatternFlowRSVPPathLabelRequestWithoutLabelRangeL3Pid) GetValue() uint32 { + if x != nil && x.Value != nil { + return *x.Value } + return 0 } -func (x *PatternFlowVlanPriority_Choice) String() string { - return protoimpl.X.MessageStringOf(x) +func (x *PatternFlowRSVPPathLabelRequestWithoutLabelRangeL3Pid) GetValues() []uint32 { + if x != nil { + return x.Values + } + return nil } -func (*PatternFlowVlanPriority_Choice) ProtoMessage() {} - -func (x *PatternFlowVlanPriority_Choice) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[934] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms +func (x *PatternFlowRSVPPathLabelRequestWithoutLabelRangeL3Pid) GetIncrement() *PatternFlowRSVPPathLabelRequestWithoutLabelRangeL3PidCounter { + if x != nil { + return x.Increment } - return mi.MessageOf(x) + return nil } -// Deprecated: Use PatternFlowVlanPriority_Choice.ProtoReflect.Descriptor instead. -func (*PatternFlowVlanPriority_Choice) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{344, 0} +func (x *PatternFlowRSVPPathLabelRequestWithoutLabelRangeL3Pid) GetDecrement() *PatternFlowRSVPPathLabelRequestWithoutLabelRangeL3PidCounter { + if x != nil { + return x.Decrement + } + return nil } -type PatternFlowVlanCfi_Choice struct { +// ipv4 counter pattern +type PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Ipv4TunnelSenderAddressCounter struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields + + // Description missing in models + // default = 0.0.0.0 + Start *string `protobuf:"bytes,1,opt,name=start,proto3,oneof" json:"start,omitempty"` + // Description missing in models + // default = 0.0.0.1 + Step *string `protobuf:"bytes,2,opt,name=step,proto3,oneof" json:"step,omitempty"` + // Description missing in models + // default = 1 + Count *uint32 `protobuf:"varint,3,opt,name=count,proto3,oneof" json:"count,omitempty"` } -func (x *PatternFlowVlanCfi_Choice) Reset() { - *x = PatternFlowVlanCfi_Choice{} +func (x *PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Ipv4TunnelSenderAddressCounter) Reset() { + *x = PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Ipv4TunnelSenderAddressCounter{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[935] + mi := &file_otg_proto_msgTypes[829] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowVlanCfi_Choice) String() string { +func (x *PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Ipv4TunnelSenderAddressCounter) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowVlanCfi_Choice) ProtoMessage() {} +func (*PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Ipv4TunnelSenderAddressCounter) ProtoMessage() {} -func (x *PatternFlowVlanCfi_Choice) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[935] +func (x *PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Ipv4TunnelSenderAddressCounter) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[829] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -87766,34 +89247,70 @@ func (x *PatternFlowVlanCfi_Choice) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use PatternFlowVlanCfi_Choice.ProtoReflect.Descriptor instead. -func (*PatternFlowVlanCfi_Choice) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{347, 0} +// Deprecated: Use PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Ipv4TunnelSenderAddressCounter.ProtoReflect.Descriptor instead. +func (*PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Ipv4TunnelSenderAddressCounter) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{829} } -type PatternFlowVlanId_Choice struct { +func (x *PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Ipv4TunnelSenderAddressCounter) GetStart() string { + if x != nil && x.Start != nil { + return *x.Start + } + return "" +} + +func (x *PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Ipv4TunnelSenderAddressCounter) GetStep() string { + if x != nil && x.Step != nil { + return *x.Step + } + return "" +} + +func (x *PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Ipv4TunnelSenderAddressCounter) GetCount() uint32 { + if x != nil && x.Count != nil { + return *x.Count + } + return 0 +} + +// IPv4 address for a sender node. +type PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Ipv4TunnelSenderAddress struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields + + // Description missing in models + // default = Choice.Enum.value + Choice *PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Ipv4TunnelSenderAddress_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Ipv4TunnelSenderAddress_Choice_Enum,oneof" json:"choice,omitempty"` + // Description missing in models + // default = 0.0.0.0 + Value *string `protobuf:"bytes,2,opt,name=value,proto3,oneof" json:"value,omitempty"` + // Description missing in models + // default = ['0.0.0.0'] + Values []string `protobuf:"bytes,3,rep,name=values,proto3" json:"values,omitempty"` + // Description missing in models + Increment *PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Ipv4TunnelSenderAddressCounter `protobuf:"bytes,5,opt,name=increment,proto3" json:"increment,omitempty"` + // Description missing in models + Decrement *PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Ipv4TunnelSenderAddressCounter `protobuf:"bytes,6,opt,name=decrement,proto3" json:"decrement,omitempty"` } -func (x *PatternFlowVlanId_Choice) Reset() { - *x = PatternFlowVlanId_Choice{} +func (x *PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Ipv4TunnelSenderAddress) Reset() { + *x = PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Ipv4TunnelSenderAddress{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[936] + mi := &file_otg_proto_msgTypes[830] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowVlanId_Choice) String() string { +func (x *PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Ipv4TunnelSenderAddress) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowVlanId_Choice) ProtoMessage() {} +func (*PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Ipv4TunnelSenderAddress) ProtoMessage() {} -func (x *PatternFlowVlanId_Choice) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[936] +func (x *PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Ipv4TunnelSenderAddress) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[830] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -87804,72 +89321,80 @@ func (x *PatternFlowVlanId_Choice) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use PatternFlowVlanId_Choice.ProtoReflect.Descriptor instead. -func (*PatternFlowVlanId_Choice) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{350, 0} +// Deprecated: Use PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Ipv4TunnelSenderAddress.ProtoReflect.Descriptor instead. +func (*PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Ipv4TunnelSenderAddress) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{830} } -type PatternFlowVlanTpid_Choice struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields +func (x *PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Ipv4TunnelSenderAddress) GetChoice() PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Ipv4TunnelSenderAddress_Choice_Enum { + if x != nil && x.Choice != nil { + return *x.Choice + } + return PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Ipv4TunnelSenderAddress_Choice_unspecified } -func (x *PatternFlowVlanTpid_Choice) Reset() { - *x = PatternFlowVlanTpid_Choice{} - if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[937] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) +func (x *PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Ipv4TunnelSenderAddress) GetValue() string { + if x != nil && x.Value != nil { + return *x.Value } + return "" } -func (x *PatternFlowVlanTpid_Choice) String() string { - return protoimpl.X.MessageStringOf(x) +func (x *PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Ipv4TunnelSenderAddress) GetValues() []string { + if x != nil { + return x.Values + } + return nil } -func (*PatternFlowVlanTpid_Choice) ProtoMessage() {} - -func (x *PatternFlowVlanTpid_Choice) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[937] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms +func (x *PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Ipv4TunnelSenderAddress) GetIncrement() *PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Ipv4TunnelSenderAddressCounter { + if x != nil { + return x.Increment } - return mi.MessageOf(x) + return nil } -// Deprecated: Use PatternFlowVlanTpid_Choice.ProtoReflect.Descriptor instead. -func (*PatternFlowVlanTpid_Choice) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{353, 0} +func (x *PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Ipv4TunnelSenderAddress) GetDecrement() *PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Ipv4TunnelSenderAddressCounter { + if x != nil { + return x.Decrement + } + return nil } -type PatternFlowVxlanFlags_Choice struct { +// integer counter pattern +type PatternFlowRSVPPathSenderTemplateLspTunnelIpv4ReservedCounter struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields + + // Description missing in models + // default = 0 + Start *uint32 `protobuf:"varint,1,opt,name=start,proto3,oneof" json:"start,omitempty"` + // Description missing in models + // default = 1 + Step *uint32 `protobuf:"varint,2,opt,name=step,proto3,oneof" json:"step,omitempty"` + // Description missing in models + // default = 1 + Count *uint32 `protobuf:"varint,3,opt,name=count,proto3,oneof" json:"count,omitempty"` } -func (x *PatternFlowVxlanFlags_Choice) Reset() { - *x = PatternFlowVxlanFlags_Choice{} +func (x *PatternFlowRSVPPathSenderTemplateLspTunnelIpv4ReservedCounter) Reset() { + *x = PatternFlowRSVPPathSenderTemplateLspTunnelIpv4ReservedCounter{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[938] + mi := &file_otg_proto_msgTypes[831] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowVxlanFlags_Choice) String() string { +func (x *PatternFlowRSVPPathSenderTemplateLspTunnelIpv4ReservedCounter) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowVxlanFlags_Choice) ProtoMessage() {} +func (*PatternFlowRSVPPathSenderTemplateLspTunnelIpv4ReservedCounter) ProtoMessage() {} -func (x *PatternFlowVxlanFlags_Choice) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[938] +func (x *PatternFlowRSVPPathSenderTemplateLspTunnelIpv4ReservedCounter) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[831] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -87880,34 +89405,70 @@ func (x *PatternFlowVxlanFlags_Choice) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use PatternFlowVxlanFlags_Choice.ProtoReflect.Descriptor instead. -func (*PatternFlowVxlanFlags_Choice) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{356, 0} +// Deprecated: Use PatternFlowRSVPPathSenderTemplateLspTunnelIpv4ReservedCounter.ProtoReflect.Descriptor instead. +func (*PatternFlowRSVPPathSenderTemplateLspTunnelIpv4ReservedCounter) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{831} } -type PatternFlowVxlanReserved0_Choice struct { +func (x *PatternFlowRSVPPathSenderTemplateLspTunnelIpv4ReservedCounter) GetStart() uint32 { + if x != nil && x.Start != nil { + return *x.Start + } + return 0 +} + +func (x *PatternFlowRSVPPathSenderTemplateLspTunnelIpv4ReservedCounter) GetStep() uint32 { + if x != nil && x.Step != nil { + return *x.Step + } + return 0 +} + +func (x *PatternFlowRSVPPathSenderTemplateLspTunnelIpv4ReservedCounter) GetCount() uint32 { + if x != nil && x.Count != nil { + return *x.Count + } + return 0 +} + +// Reserved field, MUST be zero. +type PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Reserved struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields + + // Description missing in models + // default = Choice.Enum.value + Choice *PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Reserved_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Reserved_Choice_Enum,oneof" json:"choice,omitempty"` + // Description missing in models + // default = 0 + Value *uint32 `protobuf:"varint,2,opt,name=value,proto3,oneof" json:"value,omitempty"` + // Description missing in models + // default = [0] + Values []uint32 `protobuf:"varint,3,rep,packed,name=values,proto3" json:"values,omitempty"` + // Description missing in models + Increment *PatternFlowRSVPPathSenderTemplateLspTunnelIpv4ReservedCounter `protobuf:"bytes,5,opt,name=increment,proto3" json:"increment,omitempty"` + // Description missing in models + Decrement *PatternFlowRSVPPathSenderTemplateLspTunnelIpv4ReservedCounter `protobuf:"bytes,6,opt,name=decrement,proto3" json:"decrement,omitempty"` } -func (x *PatternFlowVxlanReserved0_Choice) Reset() { - *x = PatternFlowVxlanReserved0_Choice{} +func (x *PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Reserved) Reset() { + *x = PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Reserved{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[939] + mi := &file_otg_proto_msgTypes[832] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowVxlanReserved0_Choice) String() string { +func (x *PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Reserved) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowVxlanReserved0_Choice) ProtoMessage() {} +func (*PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Reserved) ProtoMessage() {} -func (x *PatternFlowVxlanReserved0_Choice) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[939] +func (x *PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Reserved) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[832] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -87918,34 +89479,80 @@ func (x *PatternFlowVxlanReserved0_Choice) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use PatternFlowVxlanReserved0_Choice.ProtoReflect.Descriptor instead. -func (*PatternFlowVxlanReserved0_Choice) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{359, 0} +// Deprecated: Use PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Reserved.ProtoReflect.Descriptor instead. +func (*PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Reserved) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{832} } -type PatternFlowVxlanVni_Choice struct { +func (x *PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Reserved) GetChoice() PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Reserved_Choice_Enum { + if x != nil && x.Choice != nil { + return *x.Choice + } + return PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Reserved_Choice_unspecified +} + +func (x *PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Reserved) GetValue() uint32 { + if x != nil && x.Value != nil { + return *x.Value + } + return 0 +} + +func (x *PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Reserved) GetValues() []uint32 { + if x != nil { + return x.Values + } + return nil +} + +func (x *PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Reserved) GetIncrement() *PatternFlowRSVPPathSenderTemplateLspTunnelIpv4ReservedCounter { + if x != nil { + return x.Increment + } + return nil +} + +func (x *PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Reserved) GetDecrement() *PatternFlowRSVPPathSenderTemplateLspTunnelIpv4ReservedCounter { + if x != nil { + return x.Decrement + } + return nil +} + +// integer counter pattern +type PatternFlowRSVPPathSenderTemplateLspTunnelIpv4LspIdCounter struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields + + // Description missing in models + // default = 0 + Start *uint32 `protobuf:"varint,1,opt,name=start,proto3,oneof" json:"start,omitempty"` + // Description missing in models + // default = 1 + Step *uint32 `protobuf:"varint,2,opt,name=step,proto3,oneof" json:"step,omitempty"` + // Description missing in models + // default = 1 + Count *uint32 `protobuf:"varint,3,opt,name=count,proto3,oneof" json:"count,omitempty"` } -func (x *PatternFlowVxlanVni_Choice) Reset() { - *x = PatternFlowVxlanVni_Choice{} +func (x *PatternFlowRSVPPathSenderTemplateLspTunnelIpv4LspIdCounter) Reset() { + *x = PatternFlowRSVPPathSenderTemplateLspTunnelIpv4LspIdCounter{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[940] + mi := &file_otg_proto_msgTypes[833] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowVxlanVni_Choice) String() string { +func (x *PatternFlowRSVPPathSenderTemplateLspTunnelIpv4LspIdCounter) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowVxlanVni_Choice) ProtoMessage() {} +func (*PatternFlowRSVPPathSenderTemplateLspTunnelIpv4LspIdCounter) ProtoMessage() {} -func (x *PatternFlowVxlanVni_Choice) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[940] +func (x *PatternFlowRSVPPathSenderTemplateLspTunnelIpv4LspIdCounter) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[833] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -87956,34 +89563,71 @@ func (x *PatternFlowVxlanVni_Choice) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use PatternFlowVxlanVni_Choice.ProtoReflect.Descriptor instead. -func (*PatternFlowVxlanVni_Choice) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{362, 0} +// Deprecated: Use PatternFlowRSVPPathSenderTemplateLspTunnelIpv4LspIdCounter.ProtoReflect.Descriptor instead. +func (*PatternFlowRSVPPathSenderTemplateLspTunnelIpv4LspIdCounter) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{833} } -type PatternFlowVxlanReserved1_Choice struct { +func (x *PatternFlowRSVPPathSenderTemplateLspTunnelIpv4LspIdCounter) GetStart() uint32 { + if x != nil && x.Start != nil { + return *x.Start + } + return 0 +} + +func (x *PatternFlowRSVPPathSenderTemplateLspTunnelIpv4LspIdCounter) GetStep() uint32 { + if x != nil && x.Step != nil { + return *x.Step + } + return 0 +} + +func (x *PatternFlowRSVPPathSenderTemplateLspTunnelIpv4LspIdCounter) GetCount() uint32 { + if x != nil && x.Count != nil { + return *x.Count + } + return 0 +} + +// A 16-bit identifier used in the SENDER_TEMPLATE that can be changed to allow a sender +// to share resources with itself. +type PatternFlowRSVPPathSenderTemplateLspTunnelIpv4LspId struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields + + // Description missing in models + // default = Choice.Enum.value + Choice *PatternFlowRSVPPathSenderTemplateLspTunnelIpv4LspId_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.PatternFlowRSVPPathSenderTemplateLspTunnelIpv4LspId_Choice_Enum,oneof" json:"choice,omitempty"` + // Description missing in models + // default = 0 + Value *uint32 `protobuf:"varint,2,opt,name=value,proto3,oneof" json:"value,omitempty"` + // Description missing in models + // default = [0] + Values []uint32 `protobuf:"varint,3,rep,packed,name=values,proto3" json:"values,omitempty"` + // Description missing in models + Increment *PatternFlowRSVPPathSenderTemplateLspTunnelIpv4LspIdCounter `protobuf:"bytes,5,opt,name=increment,proto3" json:"increment,omitempty"` + // Description missing in models + Decrement *PatternFlowRSVPPathSenderTemplateLspTunnelIpv4LspIdCounter `protobuf:"bytes,6,opt,name=decrement,proto3" json:"decrement,omitempty"` } -func (x *PatternFlowVxlanReserved1_Choice) Reset() { - *x = PatternFlowVxlanReserved1_Choice{} +func (x *PatternFlowRSVPPathSenderTemplateLspTunnelIpv4LspId) Reset() { + *x = PatternFlowRSVPPathSenderTemplateLspTunnelIpv4LspId{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[941] + mi := &file_otg_proto_msgTypes[834] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowVxlanReserved1_Choice) String() string { +func (x *PatternFlowRSVPPathSenderTemplateLspTunnelIpv4LspId) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowVxlanReserved1_Choice) ProtoMessage() {} +func (*PatternFlowRSVPPathSenderTemplateLspTunnelIpv4LspId) ProtoMessage() {} -func (x *PatternFlowVxlanReserved1_Choice) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[941] +func (x *PatternFlowRSVPPathSenderTemplateLspTunnelIpv4LspId) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[834] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -87994,72 +89638,80 @@ func (x *PatternFlowVxlanReserved1_Choice) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use PatternFlowVxlanReserved1_Choice.ProtoReflect.Descriptor instead. -func (*PatternFlowVxlanReserved1_Choice) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{365, 0} +// Deprecated: Use PatternFlowRSVPPathSenderTemplateLspTunnelIpv4LspId.ProtoReflect.Descriptor instead. +func (*PatternFlowRSVPPathSenderTemplateLspTunnelIpv4LspId) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{834} } -type PatternFlowIpv4Version_Choice struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields +func (x *PatternFlowRSVPPathSenderTemplateLspTunnelIpv4LspId) GetChoice() PatternFlowRSVPPathSenderTemplateLspTunnelIpv4LspId_Choice_Enum { + if x != nil && x.Choice != nil { + return *x.Choice + } + return PatternFlowRSVPPathSenderTemplateLspTunnelIpv4LspId_Choice_unspecified } -func (x *PatternFlowIpv4Version_Choice) Reset() { - *x = PatternFlowIpv4Version_Choice{} - if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[942] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) +func (x *PatternFlowRSVPPathSenderTemplateLspTunnelIpv4LspId) GetValue() uint32 { + if x != nil && x.Value != nil { + return *x.Value } + return 0 } -func (x *PatternFlowIpv4Version_Choice) String() string { - return protoimpl.X.MessageStringOf(x) +func (x *PatternFlowRSVPPathSenderTemplateLspTunnelIpv4LspId) GetValues() []uint32 { + if x != nil { + return x.Values + } + return nil } -func (*PatternFlowIpv4Version_Choice) ProtoMessage() {} - -func (x *PatternFlowIpv4Version_Choice) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[942] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms +func (x *PatternFlowRSVPPathSenderTemplateLspTunnelIpv4LspId) GetIncrement() *PatternFlowRSVPPathSenderTemplateLspTunnelIpv4LspIdCounter { + if x != nil { + return x.Increment } - return mi.MessageOf(x) + return nil } -// Deprecated: Use PatternFlowIpv4Version_Choice.ProtoReflect.Descriptor instead. -func (*PatternFlowIpv4Version_Choice) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{368, 0} +func (x *PatternFlowRSVPPathSenderTemplateLspTunnelIpv4LspId) GetDecrement() *PatternFlowRSVPPathSenderTemplateLspTunnelIpv4LspIdCounter { + if x != nil { + return x.Decrement + } + return nil } -type PatternFlowIpv4HeaderLength_Choice struct { +// integer counter pattern +type PatternFlowRSVPPathSenderTspecIntServVersionCounter struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields + + // Description missing in models + // default = 0 + Start *uint32 `protobuf:"varint,1,opt,name=start,proto3,oneof" json:"start,omitempty"` + // Description missing in models + // default = 1 + Step *uint32 `protobuf:"varint,2,opt,name=step,proto3,oneof" json:"step,omitempty"` + // Description missing in models + // default = 1 + Count *uint32 `protobuf:"varint,3,opt,name=count,proto3,oneof" json:"count,omitempty"` } -func (x *PatternFlowIpv4HeaderLength_Choice) Reset() { - *x = PatternFlowIpv4HeaderLength_Choice{} +func (x *PatternFlowRSVPPathSenderTspecIntServVersionCounter) Reset() { + *x = PatternFlowRSVPPathSenderTspecIntServVersionCounter{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[943] + mi := &file_otg_proto_msgTypes[835] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowIpv4HeaderLength_Choice) String() string { +func (x *PatternFlowRSVPPathSenderTspecIntServVersionCounter) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowIpv4HeaderLength_Choice) ProtoMessage() {} +func (*PatternFlowRSVPPathSenderTspecIntServVersionCounter) ProtoMessage() {} -func (x *PatternFlowIpv4HeaderLength_Choice) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[943] +func (x *PatternFlowRSVPPathSenderTspecIntServVersionCounter) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[835] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -88070,72 +89722,70 @@ func (x *PatternFlowIpv4HeaderLength_Choice) ProtoReflect() protoreflect.Message return mi.MessageOf(x) } -// Deprecated: Use PatternFlowIpv4HeaderLength_Choice.ProtoReflect.Descriptor instead. -func (*PatternFlowIpv4HeaderLength_Choice) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{371, 0} -} - -type PatternFlowIpv4TotalLength_Choice struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields +// Deprecated: Use PatternFlowRSVPPathSenderTspecIntServVersionCounter.ProtoReflect.Descriptor instead. +func (*PatternFlowRSVPPathSenderTspecIntServVersionCounter) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{835} } -func (x *PatternFlowIpv4TotalLength_Choice) Reset() { - *x = PatternFlowIpv4TotalLength_Choice{} - if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[944] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) +func (x *PatternFlowRSVPPathSenderTspecIntServVersionCounter) GetStart() uint32 { + if x != nil && x.Start != nil { + return *x.Start } + return 0 } -func (x *PatternFlowIpv4TotalLength_Choice) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*PatternFlowIpv4TotalLength_Choice) ProtoMessage() {} - -func (x *PatternFlowIpv4TotalLength_Choice) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[944] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms +func (x *PatternFlowRSVPPathSenderTspecIntServVersionCounter) GetStep() uint32 { + if x != nil && x.Step != nil { + return *x.Step } - return mi.MessageOf(x) + return 0 } -// Deprecated: Use PatternFlowIpv4TotalLength_Choice.ProtoReflect.Descriptor instead. -func (*PatternFlowIpv4TotalLength_Choice) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{374, 0} +func (x *PatternFlowRSVPPathSenderTspecIntServVersionCounter) GetCount() uint32 { + if x != nil && x.Count != nil { + return *x.Count + } + return 0 } -type PatternFlowIpv4Identification_Choice struct { +// Message format version number. +type PatternFlowRSVPPathSenderTspecIntServVersion struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields + + // Description missing in models + // default = Choice.Enum.value + Choice *PatternFlowRSVPPathSenderTspecIntServVersion_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.PatternFlowRSVPPathSenderTspecIntServVersion_Choice_Enum,oneof" json:"choice,omitempty"` + // Description missing in models + // default = 0 + Value *uint32 `protobuf:"varint,2,opt,name=value,proto3,oneof" json:"value,omitempty"` + // Description missing in models + // default = [0] + Values []uint32 `protobuf:"varint,3,rep,packed,name=values,proto3" json:"values,omitempty"` + // Description missing in models + Increment *PatternFlowRSVPPathSenderTspecIntServVersionCounter `protobuf:"bytes,5,opt,name=increment,proto3" json:"increment,omitempty"` + // Description missing in models + Decrement *PatternFlowRSVPPathSenderTspecIntServVersionCounter `protobuf:"bytes,6,opt,name=decrement,proto3" json:"decrement,omitempty"` } -func (x *PatternFlowIpv4Identification_Choice) Reset() { - *x = PatternFlowIpv4Identification_Choice{} +func (x *PatternFlowRSVPPathSenderTspecIntServVersion) Reset() { + *x = PatternFlowRSVPPathSenderTspecIntServVersion{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[945] + mi := &file_otg_proto_msgTypes[836] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowIpv4Identification_Choice) String() string { +func (x *PatternFlowRSVPPathSenderTspecIntServVersion) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowIpv4Identification_Choice) ProtoMessage() {} +func (*PatternFlowRSVPPathSenderTspecIntServVersion) ProtoMessage() {} -func (x *PatternFlowIpv4Identification_Choice) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[945] +func (x *PatternFlowRSVPPathSenderTspecIntServVersion) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[836] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -88146,72 +89796,80 @@ func (x *PatternFlowIpv4Identification_Choice) ProtoReflect() protoreflect.Messa return mi.MessageOf(x) } -// Deprecated: Use PatternFlowIpv4Identification_Choice.ProtoReflect.Descriptor instead. -func (*PatternFlowIpv4Identification_Choice) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{377, 0} +// Deprecated: Use PatternFlowRSVPPathSenderTspecIntServVersion.ProtoReflect.Descriptor instead. +func (*PatternFlowRSVPPathSenderTspecIntServVersion) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{836} } -type PatternFlowIpv4Reserved_Choice struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields +func (x *PatternFlowRSVPPathSenderTspecIntServVersion) GetChoice() PatternFlowRSVPPathSenderTspecIntServVersion_Choice_Enum { + if x != nil && x.Choice != nil { + return *x.Choice + } + return PatternFlowRSVPPathSenderTspecIntServVersion_Choice_unspecified } -func (x *PatternFlowIpv4Reserved_Choice) Reset() { - *x = PatternFlowIpv4Reserved_Choice{} - if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[946] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) +func (x *PatternFlowRSVPPathSenderTspecIntServVersion) GetValue() uint32 { + if x != nil && x.Value != nil { + return *x.Value } + return 0 } -func (x *PatternFlowIpv4Reserved_Choice) String() string { - return protoimpl.X.MessageStringOf(x) +func (x *PatternFlowRSVPPathSenderTspecIntServVersion) GetValues() []uint32 { + if x != nil { + return x.Values + } + return nil } -func (*PatternFlowIpv4Reserved_Choice) ProtoMessage() {} - -func (x *PatternFlowIpv4Reserved_Choice) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[946] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms +func (x *PatternFlowRSVPPathSenderTspecIntServVersion) GetIncrement() *PatternFlowRSVPPathSenderTspecIntServVersionCounter { + if x != nil { + return x.Increment } - return mi.MessageOf(x) + return nil } -// Deprecated: Use PatternFlowIpv4Reserved_Choice.ProtoReflect.Descriptor instead. -func (*PatternFlowIpv4Reserved_Choice) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{380, 0} +func (x *PatternFlowRSVPPathSenderTspecIntServVersion) GetDecrement() *PatternFlowRSVPPathSenderTspecIntServVersionCounter { + if x != nil { + return x.Decrement + } + return nil } -type PatternFlowIpv4DontFragment_Choice struct { +// integer counter pattern +type PatternFlowRSVPPathSenderTspecIntServReserved1Counter struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields + + // Description missing in models + // default = 0 + Start *uint32 `protobuf:"varint,1,opt,name=start,proto3,oneof" json:"start,omitempty"` + // Description missing in models + // default = 1 + Step *uint32 `protobuf:"varint,2,opt,name=step,proto3,oneof" json:"step,omitempty"` + // Description missing in models + // default = 1 + Count *uint32 `protobuf:"varint,3,opt,name=count,proto3,oneof" json:"count,omitempty"` } -func (x *PatternFlowIpv4DontFragment_Choice) Reset() { - *x = PatternFlowIpv4DontFragment_Choice{} +func (x *PatternFlowRSVPPathSenderTspecIntServReserved1Counter) Reset() { + *x = PatternFlowRSVPPathSenderTspecIntServReserved1Counter{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[947] + mi := &file_otg_proto_msgTypes[837] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowIpv4DontFragment_Choice) String() string { +func (x *PatternFlowRSVPPathSenderTspecIntServReserved1Counter) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowIpv4DontFragment_Choice) ProtoMessage() {} +func (*PatternFlowRSVPPathSenderTspecIntServReserved1Counter) ProtoMessage() {} -func (x *PatternFlowIpv4DontFragment_Choice) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[947] +func (x *PatternFlowRSVPPathSenderTspecIntServReserved1Counter) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[837] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -88222,34 +89880,70 @@ func (x *PatternFlowIpv4DontFragment_Choice) ProtoReflect() protoreflect.Message return mi.MessageOf(x) } -// Deprecated: Use PatternFlowIpv4DontFragment_Choice.ProtoReflect.Descriptor instead. -func (*PatternFlowIpv4DontFragment_Choice) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{383, 0} +// Deprecated: Use PatternFlowRSVPPathSenderTspecIntServReserved1Counter.ProtoReflect.Descriptor instead. +func (*PatternFlowRSVPPathSenderTspecIntServReserved1Counter) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{837} } -type PatternFlowIpv4MoreFragments_Choice struct { +func (x *PatternFlowRSVPPathSenderTspecIntServReserved1Counter) GetStart() uint32 { + if x != nil && x.Start != nil { + return *x.Start + } + return 0 +} + +func (x *PatternFlowRSVPPathSenderTspecIntServReserved1Counter) GetStep() uint32 { + if x != nil && x.Step != nil { + return *x.Step + } + return 0 +} + +func (x *PatternFlowRSVPPathSenderTspecIntServReserved1Counter) GetCount() uint32 { + if x != nil && x.Count != nil { + return *x.Count + } + return 0 +} + +// Reserved. +type PatternFlowRSVPPathSenderTspecIntServReserved1 struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields + + // Description missing in models + // default = Choice.Enum.value + Choice *PatternFlowRSVPPathSenderTspecIntServReserved1_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.PatternFlowRSVPPathSenderTspecIntServReserved1_Choice_Enum,oneof" json:"choice,omitempty"` + // Description missing in models + // default = 0 + Value *uint32 `protobuf:"varint,2,opt,name=value,proto3,oneof" json:"value,omitempty"` + // Description missing in models + // default = [0] + Values []uint32 `protobuf:"varint,3,rep,packed,name=values,proto3" json:"values,omitempty"` + // Description missing in models + Increment *PatternFlowRSVPPathSenderTspecIntServReserved1Counter `protobuf:"bytes,5,opt,name=increment,proto3" json:"increment,omitempty"` + // Description missing in models + Decrement *PatternFlowRSVPPathSenderTspecIntServReserved1Counter `protobuf:"bytes,6,opt,name=decrement,proto3" json:"decrement,omitempty"` } -func (x *PatternFlowIpv4MoreFragments_Choice) Reset() { - *x = PatternFlowIpv4MoreFragments_Choice{} +func (x *PatternFlowRSVPPathSenderTspecIntServReserved1) Reset() { + *x = PatternFlowRSVPPathSenderTspecIntServReserved1{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[948] + mi := &file_otg_proto_msgTypes[838] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowIpv4MoreFragments_Choice) String() string { +func (x *PatternFlowRSVPPathSenderTspecIntServReserved1) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowIpv4MoreFragments_Choice) ProtoMessage() {} +func (*PatternFlowRSVPPathSenderTspecIntServReserved1) ProtoMessage() {} -func (x *PatternFlowIpv4MoreFragments_Choice) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[948] +func (x *PatternFlowRSVPPathSenderTspecIntServReserved1) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[838] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -88260,72 +89954,80 @@ func (x *PatternFlowIpv4MoreFragments_Choice) ProtoReflect() protoreflect.Messag return mi.MessageOf(x) } -// Deprecated: Use PatternFlowIpv4MoreFragments_Choice.ProtoReflect.Descriptor instead. -func (*PatternFlowIpv4MoreFragments_Choice) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{386, 0} +// Deprecated: Use PatternFlowRSVPPathSenderTspecIntServReserved1.ProtoReflect.Descriptor instead. +func (*PatternFlowRSVPPathSenderTspecIntServReserved1) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{838} } -type PatternFlowIpv4FragmentOffset_Choice struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields +func (x *PatternFlowRSVPPathSenderTspecIntServReserved1) GetChoice() PatternFlowRSVPPathSenderTspecIntServReserved1_Choice_Enum { + if x != nil && x.Choice != nil { + return *x.Choice + } + return PatternFlowRSVPPathSenderTspecIntServReserved1_Choice_unspecified } -func (x *PatternFlowIpv4FragmentOffset_Choice) Reset() { - *x = PatternFlowIpv4FragmentOffset_Choice{} - if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[949] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) +func (x *PatternFlowRSVPPathSenderTspecIntServReserved1) GetValue() uint32 { + if x != nil && x.Value != nil { + return *x.Value } + return 0 } -func (x *PatternFlowIpv4FragmentOffset_Choice) String() string { - return protoimpl.X.MessageStringOf(x) +func (x *PatternFlowRSVPPathSenderTspecIntServReserved1) GetValues() []uint32 { + if x != nil { + return x.Values + } + return nil } -func (*PatternFlowIpv4FragmentOffset_Choice) ProtoMessage() {} - -func (x *PatternFlowIpv4FragmentOffset_Choice) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[949] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms +func (x *PatternFlowRSVPPathSenderTspecIntServReserved1) GetIncrement() *PatternFlowRSVPPathSenderTspecIntServReserved1Counter { + if x != nil { + return x.Increment } - return mi.MessageOf(x) + return nil } -// Deprecated: Use PatternFlowIpv4FragmentOffset_Choice.ProtoReflect.Descriptor instead. -func (*PatternFlowIpv4FragmentOffset_Choice) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{389, 0} +func (x *PatternFlowRSVPPathSenderTspecIntServReserved1) GetDecrement() *PatternFlowRSVPPathSenderTspecIntServReserved1Counter { + if x != nil { + return x.Decrement + } + return nil } -type PatternFlowIpv4TimeToLive_Choice struct { +// integer counter pattern +type PatternFlowRSVPPathSenderTspecIntServOverallLengthCounter struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields + + // Description missing in models + // default = 7 + Start *uint32 `protobuf:"varint,1,opt,name=start,proto3,oneof" json:"start,omitempty"` + // Description missing in models + // default = 1 + Step *uint32 `protobuf:"varint,2,opt,name=step,proto3,oneof" json:"step,omitempty"` + // Description missing in models + // default = 1 + Count *uint32 `protobuf:"varint,3,opt,name=count,proto3,oneof" json:"count,omitempty"` } -func (x *PatternFlowIpv4TimeToLive_Choice) Reset() { - *x = PatternFlowIpv4TimeToLive_Choice{} +func (x *PatternFlowRSVPPathSenderTspecIntServOverallLengthCounter) Reset() { + *x = PatternFlowRSVPPathSenderTspecIntServOverallLengthCounter{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[950] + mi := &file_otg_proto_msgTypes[839] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowIpv4TimeToLive_Choice) String() string { +func (x *PatternFlowRSVPPathSenderTspecIntServOverallLengthCounter) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowIpv4TimeToLive_Choice) ProtoMessage() {} +func (*PatternFlowRSVPPathSenderTspecIntServOverallLengthCounter) ProtoMessage() {} -func (x *PatternFlowIpv4TimeToLive_Choice) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[950] +func (x *PatternFlowRSVPPathSenderTspecIntServOverallLengthCounter) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[839] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -88336,34 +90038,70 @@ func (x *PatternFlowIpv4TimeToLive_Choice) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use PatternFlowIpv4TimeToLive_Choice.ProtoReflect.Descriptor instead. -func (*PatternFlowIpv4TimeToLive_Choice) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{392, 0} +// Deprecated: Use PatternFlowRSVPPathSenderTspecIntServOverallLengthCounter.ProtoReflect.Descriptor instead. +func (*PatternFlowRSVPPathSenderTspecIntServOverallLengthCounter) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{839} } -type PatternFlowIpv4Protocol_Choice struct { +func (x *PatternFlowRSVPPathSenderTspecIntServOverallLengthCounter) GetStart() uint32 { + if x != nil && x.Start != nil { + return *x.Start + } + return 0 +} + +func (x *PatternFlowRSVPPathSenderTspecIntServOverallLengthCounter) GetStep() uint32 { + if x != nil && x.Step != nil { + return *x.Step + } + return 0 +} + +func (x *PatternFlowRSVPPathSenderTspecIntServOverallLengthCounter) GetCount() uint32 { + if x != nil && x.Count != nil { + return *x.Count + } + return 0 +} + +// Overall length (7 words not including header). +type PatternFlowRSVPPathSenderTspecIntServOverallLength struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields + + // Description missing in models + // default = Choice.Enum.value + Choice *PatternFlowRSVPPathSenderTspecIntServOverallLength_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.PatternFlowRSVPPathSenderTspecIntServOverallLength_Choice_Enum,oneof" json:"choice,omitempty"` + // Description missing in models + // default = 7 + Value *uint32 `protobuf:"varint,2,opt,name=value,proto3,oneof" json:"value,omitempty"` + // Description missing in models + // default = [7] + Values []uint32 `protobuf:"varint,3,rep,packed,name=values,proto3" json:"values,omitempty"` + // Description missing in models + Increment *PatternFlowRSVPPathSenderTspecIntServOverallLengthCounter `protobuf:"bytes,5,opt,name=increment,proto3" json:"increment,omitempty"` + // Description missing in models + Decrement *PatternFlowRSVPPathSenderTspecIntServOverallLengthCounter `protobuf:"bytes,6,opt,name=decrement,proto3" json:"decrement,omitempty"` } -func (x *PatternFlowIpv4Protocol_Choice) Reset() { - *x = PatternFlowIpv4Protocol_Choice{} +func (x *PatternFlowRSVPPathSenderTspecIntServOverallLength) Reset() { + *x = PatternFlowRSVPPathSenderTspecIntServOverallLength{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[951] + mi := &file_otg_proto_msgTypes[840] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowIpv4Protocol_Choice) String() string { +func (x *PatternFlowRSVPPathSenderTspecIntServOverallLength) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowIpv4Protocol_Choice) ProtoMessage() {} +func (*PatternFlowRSVPPathSenderTspecIntServOverallLength) ProtoMessage() {} -func (x *PatternFlowIpv4Protocol_Choice) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[951] +func (x *PatternFlowRSVPPathSenderTspecIntServOverallLength) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[840] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -88374,72 +90112,80 @@ func (x *PatternFlowIpv4Protocol_Choice) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use PatternFlowIpv4Protocol_Choice.ProtoReflect.Descriptor instead. -func (*PatternFlowIpv4Protocol_Choice) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{395, 0} +// Deprecated: Use PatternFlowRSVPPathSenderTspecIntServOverallLength.ProtoReflect.Descriptor instead. +func (*PatternFlowRSVPPathSenderTspecIntServOverallLength) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{840} } -type PatternFlowIpv4HeaderChecksum_Choice struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields +func (x *PatternFlowRSVPPathSenderTspecIntServOverallLength) GetChoice() PatternFlowRSVPPathSenderTspecIntServOverallLength_Choice_Enum { + if x != nil && x.Choice != nil { + return *x.Choice + } + return PatternFlowRSVPPathSenderTspecIntServOverallLength_Choice_unspecified } -func (x *PatternFlowIpv4HeaderChecksum_Choice) Reset() { - *x = PatternFlowIpv4HeaderChecksum_Choice{} - if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[952] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) +func (x *PatternFlowRSVPPathSenderTspecIntServOverallLength) GetValue() uint32 { + if x != nil && x.Value != nil { + return *x.Value } + return 0 } -func (x *PatternFlowIpv4HeaderChecksum_Choice) String() string { - return protoimpl.X.MessageStringOf(x) +func (x *PatternFlowRSVPPathSenderTspecIntServOverallLength) GetValues() []uint32 { + if x != nil { + return x.Values + } + return nil } -func (*PatternFlowIpv4HeaderChecksum_Choice) ProtoMessage() {} - -func (x *PatternFlowIpv4HeaderChecksum_Choice) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[952] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms +func (x *PatternFlowRSVPPathSenderTspecIntServOverallLength) GetIncrement() *PatternFlowRSVPPathSenderTspecIntServOverallLengthCounter { + if x != nil { + return x.Increment } - return mi.MessageOf(x) + return nil } -// Deprecated: Use PatternFlowIpv4HeaderChecksum_Choice.ProtoReflect.Descriptor instead. -func (*PatternFlowIpv4HeaderChecksum_Choice) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{396, 0} +func (x *PatternFlowRSVPPathSenderTspecIntServOverallLength) GetDecrement() *PatternFlowRSVPPathSenderTspecIntServOverallLengthCounter { + if x != nil { + return x.Decrement + } + return nil } -type PatternFlowIpv4HeaderChecksum_Generated struct { +// integer counter pattern +type PatternFlowRSVPPathSenderTspecIntServServiceHeaderCounter struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields + + // Description missing in models + // default = 1 + Start *uint32 `protobuf:"varint,1,opt,name=start,proto3,oneof" json:"start,omitempty"` + // Description missing in models + // default = 1 + Step *uint32 `protobuf:"varint,2,opt,name=step,proto3,oneof" json:"step,omitempty"` + // Description missing in models + // default = 1 + Count *uint32 `protobuf:"varint,3,opt,name=count,proto3,oneof" json:"count,omitempty"` } -func (x *PatternFlowIpv4HeaderChecksum_Generated) Reset() { - *x = PatternFlowIpv4HeaderChecksum_Generated{} +func (x *PatternFlowRSVPPathSenderTspecIntServServiceHeaderCounter) Reset() { + *x = PatternFlowRSVPPathSenderTspecIntServServiceHeaderCounter{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[953] + mi := &file_otg_proto_msgTypes[841] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowIpv4HeaderChecksum_Generated) String() string { +func (x *PatternFlowRSVPPathSenderTspecIntServServiceHeaderCounter) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowIpv4HeaderChecksum_Generated) ProtoMessage() {} +func (*PatternFlowRSVPPathSenderTspecIntServServiceHeaderCounter) ProtoMessage() {} -func (x *PatternFlowIpv4HeaderChecksum_Generated) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[953] +func (x *PatternFlowRSVPPathSenderTspecIntServServiceHeaderCounter) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[841] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -88450,34 +90196,70 @@ func (x *PatternFlowIpv4HeaderChecksum_Generated) ProtoReflect() protoreflect.Me return mi.MessageOf(x) } -// Deprecated: Use PatternFlowIpv4HeaderChecksum_Generated.ProtoReflect.Descriptor instead. -func (*PatternFlowIpv4HeaderChecksum_Generated) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{396, 1} +// Deprecated: Use PatternFlowRSVPPathSenderTspecIntServServiceHeaderCounter.ProtoReflect.Descriptor instead. +func (*PatternFlowRSVPPathSenderTspecIntServServiceHeaderCounter) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{841} } -type PatternFlowIpv4Src_Choice struct { +func (x *PatternFlowRSVPPathSenderTspecIntServServiceHeaderCounter) GetStart() uint32 { + if x != nil && x.Start != nil { + return *x.Start + } + return 0 +} + +func (x *PatternFlowRSVPPathSenderTspecIntServServiceHeaderCounter) GetStep() uint32 { + if x != nil && x.Step != nil { + return *x.Step + } + return 0 +} + +func (x *PatternFlowRSVPPathSenderTspecIntServServiceHeaderCounter) GetCount() uint32 { + if x != nil && x.Count != nil { + return *x.Count + } + return 0 +} + +// Service header, service number - '1' (Generic information) if in a PATH message. +type PatternFlowRSVPPathSenderTspecIntServServiceHeader struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields + + // Description missing in models + // default = Choice.Enum.value + Choice *PatternFlowRSVPPathSenderTspecIntServServiceHeader_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.PatternFlowRSVPPathSenderTspecIntServServiceHeader_Choice_Enum,oneof" json:"choice,omitempty"` + // Description missing in models + // default = 1 + Value *uint32 `protobuf:"varint,2,opt,name=value,proto3,oneof" json:"value,omitempty"` + // Description missing in models + // default = [1] + Values []uint32 `protobuf:"varint,3,rep,packed,name=values,proto3" json:"values,omitempty"` + // Description missing in models + Increment *PatternFlowRSVPPathSenderTspecIntServServiceHeaderCounter `protobuf:"bytes,5,opt,name=increment,proto3" json:"increment,omitempty"` + // Description missing in models + Decrement *PatternFlowRSVPPathSenderTspecIntServServiceHeaderCounter `protobuf:"bytes,6,opt,name=decrement,proto3" json:"decrement,omitempty"` } -func (x *PatternFlowIpv4Src_Choice) Reset() { - *x = PatternFlowIpv4Src_Choice{} +func (x *PatternFlowRSVPPathSenderTspecIntServServiceHeader) Reset() { + *x = PatternFlowRSVPPathSenderTspecIntServServiceHeader{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[954] + mi := &file_otg_proto_msgTypes[842] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowIpv4Src_Choice) String() string { +func (x *PatternFlowRSVPPathSenderTspecIntServServiceHeader) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowIpv4Src_Choice) ProtoMessage() {} +func (*PatternFlowRSVPPathSenderTspecIntServServiceHeader) ProtoMessage() {} -func (x *PatternFlowIpv4Src_Choice) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[954] +func (x *PatternFlowRSVPPathSenderTspecIntServServiceHeader) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[842] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -88488,72 +90270,80 @@ func (x *PatternFlowIpv4Src_Choice) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use PatternFlowIpv4Src_Choice.ProtoReflect.Descriptor instead. -func (*PatternFlowIpv4Src_Choice) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{399, 0} +// Deprecated: Use PatternFlowRSVPPathSenderTspecIntServServiceHeader.ProtoReflect.Descriptor instead. +func (*PatternFlowRSVPPathSenderTspecIntServServiceHeader) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{842} } -type PatternFlowIpv4Dst_Choice struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields +func (x *PatternFlowRSVPPathSenderTspecIntServServiceHeader) GetChoice() PatternFlowRSVPPathSenderTspecIntServServiceHeader_Choice_Enum { + if x != nil && x.Choice != nil { + return *x.Choice + } + return PatternFlowRSVPPathSenderTspecIntServServiceHeader_Choice_unspecified } -func (x *PatternFlowIpv4Dst_Choice) Reset() { - *x = PatternFlowIpv4Dst_Choice{} - if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[955] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) +func (x *PatternFlowRSVPPathSenderTspecIntServServiceHeader) GetValue() uint32 { + if x != nil && x.Value != nil { + return *x.Value } + return 0 } -func (x *PatternFlowIpv4Dst_Choice) String() string { - return protoimpl.X.MessageStringOf(x) +func (x *PatternFlowRSVPPathSenderTspecIntServServiceHeader) GetValues() []uint32 { + if x != nil { + return x.Values + } + return nil } -func (*PatternFlowIpv4Dst_Choice) ProtoMessage() {} - -func (x *PatternFlowIpv4Dst_Choice) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[955] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms +func (x *PatternFlowRSVPPathSenderTspecIntServServiceHeader) GetIncrement() *PatternFlowRSVPPathSenderTspecIntServServiceHeaderCounter { + if x != nil { + return x.Increment } - return mi.MessageOf(x) + return nil } -// Deprecated: Use PatternFlowIpv4Dst_Choice.ProtoReflect.Descriptor instead. -func (*PatternFlowIpv4Dst_Choice) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{402, 0} +func (x *PatternFlowRSVPPathSenderTspecIntServServiceHeader) GetDecrement() *PatternFlowRSVPPathSenderTspecIntServServiceHeaderCounter { + if x != nil { + return x.Decrement + } + return nil } -type PatternFlowIpv4PriorityRaw_Choice struct { +// integer counter pattern +type PatternFlowRSVPPathSenderTspecIntServZeroBitCounter struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields + + // Description missing in models + // default = 0 + Start *uint32 `protobuf:"varint,1,opt,name=start,proto3,oneof" json:"start,omitempty"` + // Description missing in models + // default = 1 + Step *uint32 `protobuf:"varint,2,opt,name=step,proto3,oneof" json:"step,omitempty"` + // Description missing in models + // default = 1 + Count *uint32 `protobuf:"varint,3,opt,name=count,proto3,oneof" json:"count,omitempty"` } -func (x *PatternFlowIpv4PriorityRaw_Choice) Reset() { - *x = PatternFlowIpv4PriorityRaw_Choice{} +func (x *PatternFlowRSVPPathSenderTspecIntServZeroBitCounter) Reset() { + *x = PatternFlowRSVPPathSenderTspecIntServZeroBitCounter{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[956] + mi := &file_otg_proto_msgTypes[843] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowIpv4PriorityRaw_Choice) String() string { +func (x *PatternFlowRSVPPathSenderTspecIntServZeroBitCounter) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowIpv4PriorityRaw_Choice) ProtoMessage() {} +func (*PatternFlowRSVPPathSenderTspecIntServZeroBitCounter) ProtoMessage() {} -func (x *PatternFlowIpv4PriorityRaw_Choice) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[956] +func (x *PatternFlowRSVPPathSenderTspecIntServZeroBitCounter) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[843] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -88564,34 +90354,70 @@ func (x *PatternFlowIpv4PriorityRaw_Choice) ProtoReflect() protoreflect.Message return mi.MessageOf(x) } -// Deprecated: Use PatternFlowIpv4PriorityRaw_Choice.ProtoReflect.Descriptor instead. -func (*PatternFlowIpv4PriorityRaw_Choice) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{405, 0} +// Deprecated: Use PatternFlowRSVPPathSenderTspecIntServZeroBitCounter.ProtoReflect.Descriptor instead. +func (*PatternFlowRSVPPathSenderTspecIntServZeroBitCounter) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{843} } -type PatternFlowIpv4DscpPhb_Choice struct { +func (x *PatternFlowRSVPPathSenderTspecIntServZeroBitCounter) GetStart() uint32 { + if x != nil && x.Start != nil { + return *x.Start + } + return 0 +} + +func (x *PatternFlowRSVPPathSenderTspecIntServZeroBitCounter) GetStep() uint32 { + if x != nil && x.Step != nil { + return *x.Step + } + return 0 +} + +func (x *PatternFlowRSVPPathSenderTspecIntServZeroBitCounter) GetCount() uint32 { + if x != nil && x.Count != nil { + return *x.Count + } + return 0 +} + +// MUST be 0. +type PatternFlowRSVPPathSenderTspecIntServZeroBit struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields + + // Description missing in models + // default = Choice.Enum.value + Choice *PatternFlowRSVPPathSenderTspecIntServZeroBit_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.PatternFlowRSVPPathSenderTspecIntServZeroBit_Choice_Enum,oneof" json:"choice,omitempty"` + // Description missing in models + // default = 0 + Value *uint32 `protobuf:"varint,2,opt,name=value,proto3,oneof" json:"value,omitempty"` + // Description missing in models + // default = [0] + Values []uint32 `protobuf:"varint,3,rep,packed,name=values,proto3" json:"values,omitempty"` + // Description missing in models + Increment *PatternFlowRSVPPathSenderTspecIntServZeroBitCounter `protobuf:"bytes,5,opt,name=increment,proto3" json:"increment,omitempty"` + // Description missing in models + Decrement *PatternFlowRSVPPathSenderTspecIntServZeroBitCounter `protobuf:"bytes,6,opt,name=decrement,proto3" json:"decrement,omitempty"` } -func (x *PatternFlowIpv4DscpPhb_Choice) Reset() { - *x = PatternFlowIpv4DscpPhb_Choice{} +func (x *PatternFlowRSVPPathSenderTspecIntServZeroBit) Reset() { + *x = PatternFlowRSVPPathSenderTspecIntServZeroBit{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[957] + mi := &file_otg_proto_msgTypes[844] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowIpv4DscpPhb_Choice) String() string { +func (x *PatternFlowRSVPPathSenderTspecIntServZeroBit) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowIpv4DscpPhb_Choice) ProtoMessage() {} +func (*PatternFlowRSVPPathSenderTspecIntServZeroBit) ProtoMessage() {} -func (x *PatternFlowIpv4DscpPhb_Choice) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[957] +func (x *PatternFlowRSVPPathSenderTspecIntServZeroBit) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[844] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -88602,72 +90428,80 @@ func (x *PatternFlowIpv4DscpPhb_Choice) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use PatternFlowIpv4DscpPhb_Choice.ProtoReflect.Descriptor instead. -func (*PatternFlowIpv4DscpPhb_Choice) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{408, 0} +// Deprecated: Use PatternFlowRSVPPathSenderTspecIntServZeroBit.ProtoReflect.Descriptor instead. +func (*PatternFlowRSVPPathSenderTspecIntServZeroBit) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{844} } -type PatternFlowIpv4DscpEcn_Choice struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields +func (x *PatternFlowRSVPPathSenderTspecIntServZeroBit) GetChoice() PatternFlowRSVPPathSenderTspecIntServZeroBit_Choice_Enum { + if x != nil && x.Choice != nil { + return *x.Choice + } + return PatternFlowRSVPPathSenderTspecIntServZeroBit_Choice_unspecified } -func (x *PatternFlowIpv4DscpEcn_Choice) Reset() { - *x = PatternFlowIpv4DscpEcn_Choice{} - if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[958] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) +func (x *PatternFlowRSVPPathSenderTspecIntServZeroBit) GetValue() uint32 { + if x != nil && x.Value != nil { + return *x.Value } + return 0 } -func (x *PatternFlowIpv4DscpEcn_Choice) String() string { - return protoimpl.X.MessageStringOf(x) +func (x *PatternFlowRSVPPathSenderTspecIntServZeroBit) GetValues() []uint32 { + if x != nil { + return x.Values + } + return nil } -func (*PatternFlowIpv4DscpEcn_Choice) ProtoMessage() {} - -func (x *PatternFlowIpv4DscpEcn_Choice) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[958] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms +func (x *PatternFlowRSVPPathSenderTspecIntServZeroBit) GetIncrement() *PatternFlowRSVPPathSenderTspecIntServZeroBitCounter { + if x != nil { + return x.Increment } - return mi.MessageOf(x) + return nil } -// Deprecated: Use PatternFlowIpv4DscpEcn_Choice.ProtoReflect.Descriptor instead. -func (*PatternFlowIpv4DscpEcn_Choice) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{411, 0} +func (x *PatternFlowRSVPPathSenderTspecIntServZeroBit) GetDecrement() *PatternFlowRSVPPathSenderTspecIntServZeroBitCounter { + if x != nil { + return x.Decrement + } + return nil } -type PatternFlowIpv4TosPrecedence_Choice struct { +// integer counter pattern +type PatternFlowRSVPPathSenderTspecIntServReserved2Counter struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields + + // Description missing in models + // default = 0 + Start *uint32 `protobuf:"varint,1,opt,name=start,proto3,oneof" json:"start,omitempty"` + // Description missing in models + // default = 1 + Step *uint32 `protobuf:"varint,2,opt,name=step,proto3,oneof" json:"step,omitempty"` + // Description missing in models + // default = 1 + Count *uint32 `protobuf:"varint,3,opt,name=count,proto3,oneof" json:"count,omitempty"` } -func (x *PatternFlowIpv4TosPrecedence_Choice) Reset() { - *x = PatternFlowIpv4TosPrecedence_Choice{} +func (x *PatternFlowRSVPPathSenderTspecIntServReserved2Counter) Reset() { + *x = PatternFlowRSVPPathSenderTspecIntServReserved2Counter{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[959] + mi := &file_otg_proto_msgTypes[845] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowIpv4TosPrecedence_Choice) String() string { +func (x *PatternFlowRSVPPathSenderTspecIntServReserved2Counter) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowIpv4TosPrecedence_Choice) ProtoMessage() {} +func (*PatternFlowRSVPPathSenderTspecIntServReserved2Counter) ProtoMessage() {} -func (x *PatternFlowIpv4TosPrecedence_Choice) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[959] +func (x *PatternFlowRSVPPathSenderTspecIntServReserved2Counter) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[845] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -88678,34 +90512,70 @@ func (x *PatternFlowIpv4TosPrecedence_Choice) ProtoReflect() protoreflect.Messag return mi.MessageOf(x) } -// Deprecated: Use PatternFlowIpv4TosPrecedence_Choice.ProtoReflect.Descriptor instead. -func (*PatternFlowIpv4TosPrecedence_Choice) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{414, 0} +// Deprecated: Use PatternFlowRSVPPathSenderTspecIntServReserved2Counter.ProtoReflect.Descriptor instead. +func (*PatternFlowRSVPPathSenderTspecIntServReserved2Counter) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{845} } -type PatternFlowIpv4TosDelay_Choice struct { +func (x *PatternFlowRSVPPathSenderTspecIntServReserved2Counter) GetStart() uint32 { + if x != nil && x.Start != nil { + return *x.Start + } + return 0 +} + +func (x *PatternFlowRSVPPathSenderTspecIntServReserved2Counter) GetStep() uint32 { + if x != nil && x.Step != nil { + return *x.Step + } + return 0 +} + +func (x *PatternFlowRSVPPathSenderTspecIntServReserved2Counter) GetCount() uint32 { + if x != nil && x.Count != nil { + return *x.Count + } + return 0 +} + +// Reserved. +type PatternFlowRSVPPathSenderTspecIntServReserved2 struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields + + // Description missing in models + // default = Choice.Enum.value + Choice *PatternFlowRSVPPathSenderTspecIntServReserved2_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.PatternFlowRSVPPathSenderTspecIntServReserved2_Choice_Enum,oneof" json:"choice,omitempty"` + // Description missing in models + // default = 0 + Value *uint32 `protobuf:"varint,2,opt,name=value,proto3,oneof" json:"value,omitempty"` + // Description missing in models + // default = [0] + Values []uint32 `protobuf:"varint,3,rep,packed,name=values,proto3" json:"values,omitempty"` + // Description missing in models + Increment *PatternFlowRSVPPathSenderTspecIntServReserved2Counter `protobuf:"bytes,5,opt,name=increment,proto3" json:"increment,omitempty"` + // Description missing in models + Decrement *PatternFlowRSVPPathSenderTspecIntServReserved2Counter `protobuf:"bytes,6,opt,name=decrement,proto3" json:"decrement,omitempty"` } -func (x *PatternFlowIpv4TosDelay_Choice) Reset() { - *x = PatternFlowIpv4TosDelay_Choice{} +func (x *PatternFlowRSVPPathSenderTspecIntServReserved2) Reset() { + *x = PatternFlowRSVPPathSenderTspecIntServReserved2{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[960] + mi := &file_otg_proto_msgTypes[846] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowIpv4TosDelay_Choice) String() string { +func (x *PatternFlowRSVPPathSenderTspecIntServReserved2) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowIpv4TosDelay_Choice) ProtoMessage() {} +func (*PatternFlowRSVPPathSenderTspecIntServReserved2) ProtoMessage() {} -func (x *PatternFlowIpv4TosDelay_Choice) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[960] +func (x *PatternFlowRSVPPathSenderTspecIntServReserved2) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[846] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -88716,72 +90586,80 @@ func (x *PatternFlowIpv4TosDelay_Choice) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use PatternFlowIpv4TosDelay_Choice.ProtoReflect.Descriptor instead. -func (*PatternFlowIpv4TosDelay_Choice) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{417, 0} +// Deprecated: Use PatternFlowRSVPPathSenderTspecIntServReserved2.ProtoReflect.Descriptor instead. +func (*PatternFlowRSVPPathSenderTspecIntServReserved2) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{846} } -type PatternFlowIpv4TosThroughput_Choice struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields +func (x *PatternFlowRSVPPathSenderTspecIntServReserved2) GetChoice() PatternFlowRSVPPathSenderTspecIntServReserved2_Choice_Enum { + if x != nil && x.Choice != nil { + return *x.Choice + } + return PatternFlowRSVPPathSenderTspecIntServReserved2_Choice_unspecified } -func (x *PatternFlowIpv4TosThroughput_Choice) Reset() { - *x = PatternFlowIpv4TosThroughput_Choice{} - if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[961] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) +func (x *PatternFlowRSVPPathSenderTspecIntServReserved2) GetValue() uint32 { + if x != nil && x.Value != nil { + return *x.Value } + return 0 } -func (x *PatternFlowIpv4TosThroughput_Choice) String() string { - return protoimpl.X.MessageStringOf(x) +func (x *PatternFlowRSVPPathSenderTspecIntServReserved2) GetValues() []uint32 { + if x != nil { + return x.Values + } + return nil } -func (*PatternFlowIpv4TosThroughput_Choice) ProtoMessage() {} - -func (x *PatternFlowIpv4TosThroughput_Choice) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[961] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms +func (x *PatternFlowRSVPPathSenderTspecIntServReserved2) GetIncrement() *PatternFlowRSVPPathSenderTspecIntServReserved2Counter { + if x != nil { + return x.Increment } - return mi.MessageOf(x) + return nil } -// Deprecated: Use PatternFlowIpv4TosThroughput_Choice.ProtoReflect.Descriptor instead. -func (*PatternFlowIpv4TosThroughput_Choice) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{420, 0} +func (x *PatternFlowRSVPPathSenderTspecIntServReserved2) GetDecrement() *PatternFlowRSVPPathSenderTspecIntServReserved2Counter { + if x != nil { + return x.Decrement + } + return nil } -type PatternFlowIpv4TosReliability_Choice struct { +// integer counter pattern +type PatternFlowRSVPPathSenderTspecIntServLengthOfServiceDataCounter struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields + + // Description missing in models + // default = 6 + Start *uint32 `protobuf:"varint,1,opt,name=start,proto3,oneof" json:"start,omitempty"` + // Description missing in models + // default = 1 + Step *uint32 `protobuf:"varint,2,opt,name=step,proto3,oneof" json:"step,omitempty"` + // Description missing in models + // default = 1 + Count *uint32 `protobuf:"varint,3,opt,name=count,proto3,oneof" json:"count,omitempty"` } -func (x *PatternFlowIpv4TosReliability_Choice) Reset() { - *x = PatternFlowIpv4TosReliability_Choice{} +func (x *PatternFlowRSVPPathSenderTspecIntServLengthOfServiceDataCounter) Reset() { + *x = PatternFlowRSVPPathSenderTspecIntServLengthOfServiceDataCounter{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[962] + mi := &file_otg_proto_msgTypes[847] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowIpv4TosReliability_Choice) String() string { +func (x *PatternFlowRSVPPathSenderTspecIntServLengthOfServiceDataCounter) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowIpv4TosReliability_Choice) ProtoMessage() {} +func (*PatternFlowRSVPPathSenderTspecIntServLengthOfServiceDataCounter) ProtoMessage() {} -func (x *PatternFlowIpv4TosReliability_Choice) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[962] +func (x *PatternFlowRSVPPathSenderTspecIntServLengthOfServiceDataCounter) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[847] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -88792,34 +90670,70 @@ func (x *PatternFlowIpv4TosReliability_Choice) ProtoReflect() protoreflect.Messa return mi.MessageOf(x) } -// Deprecated: Use PatternFlowIpv4TosReliability_Choice.ProtoReflect.Descriptor instead. -func (*PatternFlowIpv4TosReliability_Choice) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{423, 0} +// Deprecated: Use PatternFlowRSVPPathSenderTspecIntServLengthOfServiceDataCounter.ProtoReflect.Descriptor instead. +func (*PatternFlowRSVPPathSenderTspecIntServLengthOfServiceDataCounter) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{847} } -type PatternFlowIpv4TosMonetary_Choice struct { +func (x *PatternFlowRSVPPathSenderTspecIntServLengthOfServiceDataCounter) GetStart() uint32 { + if x != nil && x.Start != nil { + return *x.Start + } + return 0 +} + +func (x *PatternFlowRSVPPathSenderTspecIntServLengthOfServiceDataCounter) GetStep() uint32 { + if x != nil && x.Step != nil { + return *x.Step + } + return 0 +} + +func (x *PatternFlowRSVPPathSenderTspecIntServLengthOfServiceDataCounter) GetCount() uint32 { + if x != nil && x.Count != nil { + return *x.Count + } + return 0 +} + +// Length of service data, 6 words not including per-service header. +type PatternFlowRSVPPathSenderTspecIntServLengthOfServiceData struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields + + // Description missing in models + // default = Choice.Enum.value + Choice *PatternFlowRSVPPathSenderTspecIntServLengthOfServiceData_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.PatternFlowRSVPPathSenderTspecIntServLengthOfServiceData_Choice_Enum,oneof" json:"choice,omitempty"` + // Description missing in models + // default = 6 + Value *uint32 `protobuf:"varint,2,opt,name=value,proto3,oneof" json:"value,omitempty"` + // Description missing in models + // default = [6] + Values []uint32 `protobuf:"varint,3,rep,packed,name=values,proto3" json:"values,omitempty"` + // Description missing in models + Increment *PatternFlowRSVPPathSenderTspecIntServLengthOfServiceDataCounter `protobuf:"bytes,5,opt,name=increment,proto3" json:"increment,omitempty"` + // Description missing in models + Decrement *PatternFlowRSVPPathSenderTspecIntServLengthOfServiceDataCounter `protobuf:"bytes,6,opt,name=decrement,proto3" json:"decrement,omitempty"` } -func (x *PatternFlowIpv4TosMonetary_Choice) Reset() { - *x = PatternFlowIpv4TosMonetary_Choice{} +func (x *PatternFlowRSVPPathSenderTspecIntServLengthOfServiceData) Reset() { + *x = PatternFlowRSVPPathSenderTspecIntServLengthOfServiceData{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[963] + mi := &file_otg_proto_msgTypes[848] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowIpv4TosMonetary_Choice) String() string { +func (x *PatternFlowRSVPPathSenderTspecIntServLengthOfServiceData) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowIpv4TosMonetary_Choice) ProtoMessage() {} +func (*PatternFlowRSVPPathSenderTspecIntServLengthOfServiceData) ProtoMessage() {} -func (x *PatternFlowIpv4TosMonetary_Choice) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[963] +func (x *PatternFlowRSVPPathSenderTspecIntServLengthOfServiceData) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[848] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -88830,72 +90744,80 @@ func (x *PatternFlowIpv4TosMonetary_Choice) ProtoReflect() protoreflect.Message return mi.MessageOf(x) } -// Deprecated: Use PatternFlowIpv4TosMonetary_Choice.ProtoReflect.Descriptor instead. -func (*PatternFlowIpv4TosMonetary_Choice) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{426, 0} +// Deprecated: Use PatternFlowRSVPPathSenderTspecIntServLengthOfServiceData.ProtoReflect.Descriptor instead. +func (*PatternFlowRSVPPathSenderTspecIntServLengthOfServiceData) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{848} } -type PatternFlowIpv4TosUnused_Choice struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields +func (x *PatternFlowRSVPPathSenderTspecIntServLengthOfServiceData) GetChoice() PatternFlowRSVPPathSenderTspecIntServLengthOfServiceData_Choice_Enum { + if x != nil && x.Choice != nil { + return *x.Choice + } + return PatternFlowRSVPPathSenderTspecIntServLengthOfServiceData_Choice_unspecified } -func (x *PatternFlowIpv4TosUnused_Choice) Reset() { - *x = PatternFlowIpv4TosUnused_Choice{} - if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[964] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) +func (x *PatternFlowRSVPPathSenderTspecIntServLengthOfServiceData) GetValue() uint32 { + if x != nil && x.Value != nil { + return *x.Value } + return 0 } -func (x *PatternFlowIpv4TosUnused_Choice) String() string { - return protoimpl.X.MessageStringOf(x) +func (x *PatternFlowRSVPPathSenderTspecIntServLengthOfServiceData) GetValues() []uint32 { + if x != nil { + return x.Values + } + return nil } -func (*PatternFlowIpv4TosUnused_Choice) ProtoMessage() {} - -func (x *PatternFlowIpv4TosUnused_Choice) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[964] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms +func (x *PatternFlowRSVPPathSenderTspecIntServLengthOfServiceData) GetIncrement() *PatternFlowRSVPPathSenderTspecIntServLengthOfServiceDataCounter { + if x != nil { + return x.Increment } - return mi.MessageOf(x) + return nil } -// Deprecated: Use PatternFlowIpv4TosUnused_Choice.ProtoReflect.Descriptor instead. -func (*PatternFlowIpv4TosUnused_Choice) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{429, 0} +func (x *PatternFlowRSVPPathSenderTspecIntServLengthOfServiceData) GetDecrement() *PatternFlowRSVPPathSenderTspecIntServLengthOfServiceDataCounter { + if x != nil { + return x.Decrement + } + return nil } -type PatternFlowIpv6Version_Choice struct { +// integer counter pattern +type PatternFlowRSVPPathSenderTspecIntServParameterIdTokenBucketTspecCounter struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields + + // Description missing in models + // default = 127 + Start *uint32 `protobuf:"varint,1,opt,name=start,proto3,oneof" json:"start,omitempty"` + // Description missing in models + // default = 1 + Step *uint32 `protobuf:"varint,2,opt,name=step,proto3,oneof" json:"step,omitempty"` + // Description missing in models + // default = 1 + Count *uint32 `protobuf:"varint,3,opt,name=count,proto3,oneof" json:"count,omitempty"` } -func (x *PatternFlowIpv6Version_Choice) Reset() { - *x = PatternFlowIpv6Version_Choice{} +func (x *PatternFlowRSVPPathSenderTspecIntServParameterIdTokenBucketTspecCounter) Reset() { + *x = PatternFlowRSVPPathSenderTspecIntServParameterIdTokenBucketTspecCounter{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[965] + mi := &file_otg_proto_msgTypes[849] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowIpv6Version_Choice) String() string { +func (x *PatternFlowRSVPPathSenderTspecIntServParameterIdTokenBucketTspecCounter) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowIpv6Version_Choice) ProtoMessage() {} +func (*PatternFlowRSVPPathSenderTspecIntServParameterIdTokenBucketTspecCounter) ProtoMessage() {} -func (x *PatternFlowIpv6Version_Choice) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[965] +func (x *PatternFlowRSVPPathSenderTspecIntServParameterIdTokenBucketTspecCounter) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[849] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -88906,34 +90828,70 @@ func (x *PatternFlowIpv6Version_Choice) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use PatternFlowIpv6Version_Choice.ProtoReflect.Descriptor instead. -func (*PatternFlowIpv6Version_Choice) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{432, 0} +// Deprecated: Use PatternFlowRSVPPathSenderTspecIntServParameterIdTokenBucketTspecCounter.ProtoReflect.Descriptor instead. +func (*PatternFlowRSVPPathSenderTspecIntServParameterIdTokenBucketTspecCounter) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{849} } -type PatternFlowIpv6TrafficClass_Choice struct { +func (x *PatternFlowRSVPPathSenderTspecIntServParameterIdTokenBucketTspecCounter) GetStart() uint32 { + if x != nil && x.Start != nil { + return *x.Start + } + return 0 +} + +func (x *PatternFlowRSVPPathSenderTspecIntServParameterIdTokenBucketTspecCounter) GetStep() uint32 { + if x != nil && x.Step != nil { + return *x.Step + } + return 0 +} + +func (x *PatternFlowRSVPPathSenderTspecIntServParameterIdTokenBucketTspecCounter) GetCount() uint32 { + if x != nil && x.Count != nil { + return *x.Count + } + return 0 +} + +// Parameter ID, parameter 127 (Token Bucket TSpec) +type PatternFlowRSVPPathSenderTspecIntServParameterIdTokenBucketTspec struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields + + // Description missing in models + // default = Choice.Enum.value + Choice *PatternFlowRSVPPathSenderTspecIntServParameterIdTokenBucketTspec_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.PatternFlowRSVPPathSenderTspecIntServParameterIdTokenBucketTspec_Choice_Enum,oneof" json:"choice,omitempty"` + // Description missing in models + // default = 127 + Value *uint32 `protobuf:"varint,2,opt,name=value,proto3,oneof" json:"value,omitempty"` + // Description missing in models + // default = [127] + Values []uint32 `protobuf:"varint,3,rep,packed,name=values,proto3" json:"values,omitempty"` + // Description missing in models + Increment *PatternFlowRSVPPathSenderTspecIntServParameterIdTokenBucketTspecCounter `protobuf:"bytes,5,opt,name=increment,proto3" json:"increment,omitempty"` + // Description missing in models + Decrement *PatternFlowRSVPPathSenderTspecIntServParameterIdTokenBucketTspecCounter `protobuf:"bytes,6,opt,name=decrement,proto3" json:"decrement,omitempty"` } -func (x *PatternFlowIpv6TrafficClass_Choice) Reset() { - *x = PatternFlowIpv6TrafficClass_Choice{} +func (x *PatternFlowRSVPPathSenderTspecIntServParameterIdTokenBucketTspec) Reset() { + *x = PatternFlowRSVPPathSenderTspecIntServParameterIdTokenBucketTspec{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[966] + mi := &file_otg_proto_msgTypes[850] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowIpv6TrafficClass_Choice) String() string { +func (x *PatternFlowRSVPPathSenderTspecIntServParameterIdTokenBucketTspec) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowIpv6TrafficClass_Choice) ProtoMessage() {} +func (*PatternFlowRSVPPathSenderTspecIntServParameterIdTokenBucketTspec) ProtoMessage() {} -func (x *PatternFlowIpv6TrafficClass_Choice) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[966] +func (x *PatternFlowRSVPPathSenderTspecIntServParameterIdTokenBucketTspec) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[850] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -88944,72 +90902,80 @@ func (x *PatternFlowIpv6TrafficClass_Choice) ProtoReflect() protoreflect.Message return mi.MessageOf(x) } -// Deprecated: Use PatternFlowIpv6TrafficClass_Choice.ProtoReflect.Descriptor instead. -func (*PatternFlowIpv6TrafficClass_Choice) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{435, 0} +// Deprecated: Use PatternFlowRSVPPathSenderTspecIntServParameterIdTokenBucketTspec.ProtoReflect.Descriptor instead. +func (*PatternFlowRSVPPathSenderTspecIntServParameterIdTokenBucketTspec) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{850} } -type PatternFlowIpv6FlowLabel_Choice struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields +func (x *PatternFlowRSVPPathSenderTspecIntServParameterIdTokenBucketTspec) GetChoice() PatternFlowRSVPPathSenderTspecIntServParameterIdTokenBucketTspec_Choice_Enum { + if x != nil && x.Choice != nil { + return *x.Choice + } + return PatternFlowRSVPPathSenderTspecIntServParameterIdTokenBucketTspec_Choice_unspecified } -func (x *PatternFlowIpv6FlowLabel_Choice) Reset() { - *x = PatternFlowIpv6FlowLabel_Choice{} - if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[967] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) +func (x *PatternFlowRSVPPathSenderTspecIntServParameterIdTokenBucketTspec) GetValue() uint32 { + if x != nil && x.Value != nil { + return *x.Value } + return 0 } -func (x *PatternFlowIpv6FlowLabel_Choice) String() string { - return protoimpl.X.MessageStringOf(x) +func (x *PatternFlowRSVPPathSenderTspecIntServParameterIdTokenBucketTspec) GetValues() []uint32 { + if x != nil { + return x.Values + } + return nil } -func (*PatternFlowIpv6FlowLabel_Choice) ProtoMessage() {} - -func (x *PatternFlowIpv6FlowLabel_Choice) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[967] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms +func (x *PatternFlowRSVPPathSenderTspecIntServParameterIdTokenBucketTspec) GetIncrement() *PatternFlowRSVPPathSenderTspecIntServParameterIdTokenBucketTspecCounter { + if x != nil { + return x.Increment } - return mi.MessageOf(x) + return nil } -// Deprecated: Use PatternFlowIpv6FlowLabel_Choice.ProtoReflect.Descriptor instead. -func (*PatternFlowIpv6FlowLabel_Choice) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{438, 0} +func (x *PatternFlowRSVPPathSenderTspecIntServParameterIdTokenBucketTspec) GetDecrement() *PatternFlowRSVPPathSenderTspecIntServParameterIdTokenBucketTspecCounter { + if x != nil { + return x.Decrement + } + return nil } -type PatternFlowIpv6PayloadLength_Choice struct { +// integer counter pattern +type PatternFlowRSVPPathSenderTspecIntServParameter127FlagCounter struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields + + // Description missing in models + // default = 0 + Start *uint32 `protobuf:"varint,1,opt,name=start,proto3,oneof" json:"start,omitempty"` + // Description missing in models + // default = 1 + Step *uint32 `protobuf:"varint,2,opt,name=step,proto3,oneof" json:"step,omitempty"` + // Description missing in models + // default = 1 + Count *uint32 `protobuf:"varint,3,opt,name=count,proto3,oneof" json:"count,omitempty"` } -func (x *PatternFlowIpv6PayloadLength_Choice) Reset() { - *x = PatternFlowIpv6PayloadLength_Choice{} +func (x *PatternFlowRSVPPathSenderTspecIntServParameter127FlagCounter) Reset() { + *x = PatternFlowRSVPPathSenderTspecIntServParameter127FlagCounter{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[968] + mi := &file_otg_proto_msgTypes[851] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowIpv6PayloadLength_Choice) String() string { +func (x *PatternFlowRSVPPathSenderTspecIntServParameter127FlagCounter) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowIpv6PayloadLength_Choice) ProtoMessage() {} +func (*PatternFlowRSVPPathSenderTspecIntServParameter127FlagCounter) ProtoMessage() {} -func (x *PatternFlowIpv6PayloadLength_Choice) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[968] +func (x *PatternFlowRSVPPathSenderTspecIntServParameter127FlagCounter) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[851] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -89020,34 +90986,70 @@ func (x *PatternFlowIpv6PayloadLength_Choice) ProtoReflect() protoreflect.Messag return mi.MessageOf(x) } -// Deprecated: Use PatternFlowIpv6PayloadLength_Choice.ProtoReflect.Descriptor instead. -func (*PatternFlowIpv6PayloadLength_Choice) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{441, 0} +// Deprecated: Use PatternFlowRSVPPathSenderTspecIntServParameter127FlagCounter.ProtoReflect.Descriptor instead. +func (*PatternFlowRSVPPathSenderTspecIntServParameter127FlagCounter) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{851} } -type PatternFlowIpv6NextHeader_Choice struct { +func (x *PatternFlowRSVPPathSenderTspecIntServParameter127FlagCounter) GetStart() uint32 { + if x != nil && x.Start != nil { + return *x.Start + } + return 0 +} + +func (x *PatternFlowRSVPPathSenderTspecIntServParameter127FlagCounter) GetStep() uint32 { + if x != nil && x.Step != nil { + return *x.Step + } + return 0 +} + +func (x *PatternFlowRSVPPathSenderTspecIntServParameter127FlagCounter) GetCount() uint32 { + if x != nil && x.Count != nil { + return *x.Count + } + return 0 +} + +// Parameter 127 flags (none set) +type PatternFlowRSVPPathSenderTspecIntServParameter127Flag struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields + + // Description missing in models + // default = Choice.Enum.value + Choice *PatternFlowRSVPPathSenderTspecIntServParameter127Flag_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.PatternFlowRSVPPathSenderTspecIntServParameter127Flag_Choice_Enum,oneof" json:"choice,omitempty"` + // Description missing in models + // default = 0 + Value *uint32 `protobuf:"varint,2,opt,name=value,proto3,oneof" json:"value,omitempty"` + // Description missing in models + // default = [0] + Values []uint32 `protobuf:"varint,3,rep,packed,name=values,proto3" json:"values,omitempty"` + // Description missing in models + Increment *PatternFlowRSVPPathSenderTspecIntServParameter127FlagCounter `protobuf:"bytes,5,opt,name=increment,proto3" json:"increment,omitempty"` + // Description missing in models + Decrement *PatternFlowRSVPPathSenderTspecIntServParameter127FlagCounter `protobuf:"bytes,6,opt,name=decrement,proto3" json:"decrement,omitempty"` } -func (x *PatternFlowIpv6NextHeader_Choice) Reset() { - *x = PatternFlowIpv6NextHeader_Choice{} +func (x *PatternFlowRSVPPathSenderTspecIntServParameter127Flag) Reset() { + *x = PatternFlowRSVPPathSenderTspecIntServParameter127Flag{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[969] + mi := &file_otg_proto_msgTypes[852] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowIpv6NextHeader_Choice) String() string { +func (x *PatternFlowRSVPPathSenderTspecIntServParameter127Flag) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowIpv6NextHeader_Choice) ProtoMessage() {} +func (*PatternFlowRSVPPathSenderTspecIntServParameter127Flag) ProtoMessage() {} -func (x *PatternFlowIpv6NextHeader_Choice) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[969] +func (x *PatternFlowRSVPPathSenderTspecIntServParameter127Flag) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[852] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -89058,34 +91060,80 @@ func (x *PatternFlowIpv6NextHeader_Choice) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use PatternFlowIpv6NextHeader_Choice.ProtoReflect.Descriptor instead. -func (*PatternFlowIpv6NextHeader_Choice) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{444, 0} +// Deprecated: Use PatternFlowRSVPPathSenderTspecIntServParameter127Flag.ProtoReflect.Descriptor instead. +func (*PatternFlowRSVPPathSenderTspecIntServParameter127Flag) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{852} } -type PatternFlowIpv6HopLimit_Choice struct { +func (x *PatternFlowRSVPPathSenderTspecIntServParameter127Flag) GetChoice() PatternFlowRSVPPathSenderTspecIntServParameter127Flag_Choice_Enum { + if x != nil && x.Choice != nil { + return *x.Choice + } + return PatternFlowRSVPPathSenderTspecIntServParameter127Flag_Choice_unspecified +} + +func (x *PatternFlowRSVPPathSenderTspecIntServParameter127Flag) GetValue() uint32 { + if x != nil && x.Value != nil { + return *x.Value + } + return 0 +} + +func (x *PatternFlowRSVPPathSenderTspecIntServParameter127Flag) GetValues() []uint32 { + if x != nil { + return x.Values + } + return nil +} + +func (x *PatternFlowRSVPPathSenderTspecIntServParameter127Flag) GetIncrement() *PatternFlowRSVPPathSenderTspecIntServParameter127FlagCounter { + if x != nil { + return x.Increment + } + return nil +} + +func (x *PatternFlowRSVPPathSenderTspecIntServParameter127Flag) GetDecrement() *PatternFlowRSVPPathSenderTspecIntServParameter127FlagCounter { + if x != nil { + return x.Decrement + } + return nil +} + +// integer counter pattern +type PatternFlowRSVPPathSenderTspecIntServParameter127LengthCounter struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields + + // Description missing in models + // default = 0 + Start *uint32 `protobuf:"varint,1,opt,name=start,proto3,oneof" json:"start,omitempty"` + // Description missing in models + // default = 1 + Step *uint32 `protobuf:"varint,2,opt,name=step,proto3,oneof" json:"step,omitempty"` + // Description missing in models + // default = 1 + Count *uint32 `protobuf:"varint,3,opt,name=count,proto3,oneof" json:"count,omitempty"` } -func (x *PatternFlowIpv6HopLimit_Choice) Reset() { - *x = PatternFlowIpv6HopLimit_Choice{} +func (x *PatternFlowRSVPPathSenderTspecIntServParameter127LengthCounter) Reset() { + *x = PatternFlowRSVPPathSenderTspecIntServParameter127LengthCounter{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[970] + mi := &file_otg_proto_msgTypes[853] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowIpv6HopLimit_Choice) String() string { +func (x *PatternFlowRSVPPathSenderTspecIntServParameter127LengthCounter) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowIpv6HopLimit_Choice) ProtoMessage() {} +func (*PatternFlowRSVPPathSenderTspecIntServParameter127LengthCounter) ProtoMessage() {} -func (x *PatternFlowIpv6HopLimit_Choice) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[970] +func (x *PatternFlowRSVPPathSenderTspecIntServParameter127LengthCounter) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[853] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -89096,34 +91144,70 @@ func (x *PatternFlowIpv6HopLimit_Choice) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use PatternFlowIpv6HopLimit_Choice.ProtoReflect.Descriptor instead. -func (*PatternFlowIpv6HopLimit_Choice) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{447, 0} +// Deprecated: Use PatternFlowRSVPPathSenderTspecIntServParameter127LengthCounter.ProtoReflect.Descriptor instead. +func (*PatternFlowRSVPPathSenderTspecIntServParameter127LengthCounter) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{853} } -type PatternFlowIpv6Src_Choice struct { +func (x *PatternFlowRSVPPathSenderTspecIntServParameter127LengthCounter) GetStart() uint32 { + if x != nil && x.Start != nil { + return *x.Start + } + return 0 +} + +func (x *PatternFlowRSVPPathSenderTspecIntServParameter127LengthCounter) GetStep() uint32 { + if x != nil && x.Step != nil { + return *x.Step + } + return 0 +} + +func (x *PatternFlowRSVPPathSenderTspecIntServParameter127LengthCounter) GetCount() uint32 { + if x != nil && x.Count != nil { + return *x.Count + } + return 0 +} + +// Parameter 127 length, 5 words not including per-service header +type PatternFlowRSVPPathSenderTspecIntServParameter127Length struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields + + // Description missing in models + // default = Choice.Enum.value + Choice *PatternFlowRSVPPathSenderTspecIntServParameter127Length_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.PatternFlowRSVPPathSenderTspecIntServParameter127Length_Choice_Enum,oneof" json:"choice,omitempty"` + // Description missing in models + // default = 0 + Value *uint32 `protobuf:"varint,2,opt,name=value,proto3,oneof" json:"value,omitempty"` + // Description missing in models + // default = [0] + Values []uint32 `protobuf:"varint,3,rep,packed,name=values,proto3" json:"values,omitempty"` + // Description missing in models + Increment *PatternFlowRSVPPathSenderTspecIntServParameter127LengthCounter `protobuf:"bytes,5,opt,name=increment,proto3" json:"increment,omitempty"` + // Description missing in models + Decrement *PatternFlowRSVPPathSenderTspecIntServParameter127LengthCounter `protobuf:"bytes,6,opt,name=decrement,proto3" json:"decrement,omitempty"` } -func (x *PatternFlowIpv6Src_Choice) Reset() { - *x = PatternFlowIpv6Src_Choice{} +func (x *PatternFlowRSVPPathSenderTspecIntServParameter127Length) Reset() { + *x = PatternFlowRSVPPathSenderTspecIntServParameter127Length{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[971] + mi := &file_otg_proto_msgTypes[854] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowIpv6Src_Choice) String() string { +func (x *PatternFlowRSVPPathSenderTspecIntServParameter127Length) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowIpv6Src_Choice) ProtoMessage() {} +func (*PatternFlowRSVPPathSenderTspecIntServParameter127Length) ProtoMessage() {} -func (x *PatternFlowIpv6Src_Choice) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[971] +func (x *PatternFlowRSVPPathSenderTspecIntServParameter127Length) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[854] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -89134,72 +91218,80 @@ func (x *PatternFlowIpv6Src_Choice) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use PatternFlowIpv6Src_Choice.ProtoReflect.Descriptor instead. -func (*PatternFlowIpv6Src_Choice) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{450, 0} +// Deprecated: Use PatternFlowRSVPPathSenderTspecIntServParameter127Length.ProtoReflect.Descriptor instead. +func (*PatternFlowRSVPPathSenderTspecIntServParameter127Length) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{854} } -type PatternFlowIpv6Dst_Choice struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields +func (x *PatternFlowRSVPPathSenderTspecIntServParameter127Length) GetChoice() PatternFlowRSVPPathSenderTspecIntServParameter127Length_Choice_Enum { + if x != nil && x.Choice != nil { + return *x.Choice + } + return PatternFlowRSVPPathSenderTspecIntServParameter127Length_Choice_unspecified } -func (x *PatternFlowIpv6Dst_Choice) Reset() { - *x = PatternFlowIpv6Dst_Choice{} - if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[972] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) +func (x *PatternFlowRSVPPathSenderTspecIntServParameter127Length) GetValue() uint32 { + if x != nil && x.Value != nil { + return *x.Value } + return 0 } -func (x *PatternFlowIpv6Dst_Choice) String() string { - return protoimpl.X.MessageStringOf(x) +func (x *PatternFlowRSVPPathSenderTspecIntServParameter127Length) GetValues() []uint32 { + if x != nil { + return x.Values + } + return nil } -func (*PatternFlowIpv6Dst_Choice) ProtoMessage() {} - -func (x *PatternFlowIpv6Dst_Choice) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[972] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms +func (x *PatternFlowRSVPPathSenderTspecIntServParameter127Length) GetIncrement() *PatternFlowRSVPPathSenderTspecIntServParameter127LengthCounter { + if x != nil { + return x.Increment } - return mi.MessageOf(x) + return nil } -// Deprecated: Use PatternFlowIpv6Dst_Choice.ProtoReflect.Descriptor instead. -func (*PatternFlowIpv6Dst_Choice) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{453, 0} +func (x *PatternFlowRSVPPathSenderTspecIntServParameter127Length) GetDecrement() *PatternFlowRSVPPathSenderTspecIntServParameter127LengthCounter { + if x != nil { + return x.Decrement + } + return nil } -type PatternFlowPfcPauseDst_Choice struct { +// integer counter pattern +type PatternFlowRSVPPathSenderTspecIntServMinimumPolicedUnitCounter struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields + + // Description missing in models + // default = 0 + Start *uint32 `protobuf:"varint,1,opt,name=start,proto3,oneof" json:"start,omitempty"` + // Description missing in models + // default = 1 + Step *uint32 `protobuf:"varint,2,opt,name=step,proto3,oneof" json:"step,omitempty"` + // Description missing in models + // default = 1 + Count *uint32 `protobuf:"varint,3,opt,name=count,proto3,oneof" json:"count,omitempty"` } -func (x *PatternFlowPfcPauseDst_Choice) Reset() { - *x = PatternFlowPfcPauseDst_Choice{} +func (x *PatternFlowRSVPPathSenderTspecIntServMinimumPolicedUnitCounter) Reset() { + *x = PatternFlowRSVPPathSenderTspecIntServMinimumPolicedUnitCounter{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[973] + mi := &file_otg_proto_msgTypes[855] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowPfcPauseDst_Choice) String() string { +func (x *PatternFlowRSVPPathSenderTspecIntServMinimumPolicedUnitCounter) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowPfcPauseDst_Choice) ProtoMessage() {} +func (*PatternFlowRSVPPathSenderTspecIntServMinimumPolicedUnitCounter) ProtoMessage() {} -func (x *PatternFlowPfcPauseDst_Choice) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[973] +func (x *PatternFlowRSVPPathSenderTspecIntServMinimumPolicedUnitCounter) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[855] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -89210,34 +91302,71 @@ func (x *PatternFlowPfcPauseDst_Choice) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use PatternFlowPfcPauseDst_Choice.ProtoReflect.Descriptor instead. -func (*PatternFlowPfcPauseDst_Choice) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{456, 0} +// Deprecated: Use PatternFlowRSVPPathSenderTspecIntServMinimumPolicedUnitCounter.ProtoReflect.Descriptor instead. +func (*PatternFlowRSVPPathSenderTspecIntServMinimumPolicedUnitCounter) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{855} } -type PatternFlowPfcPauseSrc_Choice struct { +func (x *PatternFlowRSVPPathSenderTspecIntServMinimumPolicedUnitCounter) GetStart() uint32 { + if x != nil && x.Start != nil { + return *x.Start + } + return 0 +} + +func (x *PatternFlowRSVPPathSenderTspecIntServMinimumPolicedUnitCounter) GetStep() uint32 { + if x != nil && x.Step != nil { + return *x.Step + } + return 0 +} + +func (x *PatternFlowRSVPPathSenderTspecIntServMinimumPolicedUnitCounter) GetCount() uint32 { + if x != nil && x.Count != nil { + return *x.Count + } + return 0 +} + +// The minimum policed unit parameter should generally be set equal to the size of the +// smallest packet generated by the application. +type PatternFlowRSVPPathSenderTspecIntServMinimumPolicedUnit struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields + + // Description missing in models + // default = Choice.Enum.value + Choice *PatternFlowRSVPPathSenderTspecIntServMinimumPolicedUnit_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.PatternFlowRSVPPathSenderTspecIntServMinimumPolicedUnit_Choice_Enum,oneof" json:"choice,omitempty"` + // Description missing in models + // default = 0 + Value *uint32 `protobuf:"varint,2,opt,name=value,proto3,oneof" json:"value,omitempty"` + // Description missing in models + // default = [0] + Values []uint32 `protobuf:"varint,3,rep,packed,name=values,proto3" json:"values,omitempty"` + // Description missing in models + Increment *PatternFlowRSVPPathSenderTspecIntServMinimumPolicedUnitCounter `protobuf:"bytes,5,opt,name=increment,proto3" json:"increment,omitempty"` + // Description missing in models + Decrement *PatternFlowRSVPPathSenderTspecIntServMinimumPolicedUnitCounter `protobuf:"bytes,6,opt,name=decrement,proto3" json:"decrement,omitempty"` } -func (x *PatternFlowPfcPauseSrc_Choice) Reset() { - *x = PatternFlowPfcPauseSrc_Choice{} +func (x *PatternFlowRSVPPathSenderTspecIntServMinimumPolicedUnit) Reset() { + *x = PatternFlowRSVPPathSenderTspecIntServMinimumPolicedUnit{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[974] + mi := &file_otg_proto_msgTypes[856] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowPfcPauseSrc_Choice) String() string { +func (x *PatternFlowRSVPPathSenderTspecIntServMinimumPolicedUnit) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowPfcPauseSrc_Choice) ProtoMessage() {} +func (*PatternFlowRSVPPathSenderTspecIntServMinimumPolicedUnit) ProtoMessage() {} -func (x *PatternFlowPfcPauseSrc_Choice) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[974] +func (x *PatternFlowRSVPPathSenderTspecIntServMinimumPolicedUnit) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[856] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -89248,72 +91377,80 @@ func (x *PatternFlowPfcPauseSrc_Choice) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use PatternFlowPfcPauseSrc_Choice.ProtoReflect.Descriptor instead. -func (*PatternFlowPfcPauseSrc_Choice) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{459, 0} +// Deprecated: Use PatternFlowRSVPPathSenderTspecIntServMinimumPolicedUnit.ProtoReflect.Descriptor instead. +func (*PatternFlowRSVPPathSenderTspecIntServMinimumPolicedUnit) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{856} } -type PatternFlowPfcPauseEtherType_Choice struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields +func (x *PatternFlowRSVPPathSenderTspecIntServMinimumPolicedUnit) GetChoice() PatternFlowRSVPPathSenderTspecIntServMinimumPolicedUnit_Choice_Enum { + if x != nil && x.Choice != nil { + return *x.Choice + } + return PatternFlowRSVPPathSenderTspecIntServMinimumPolicedUnit_Choice_unspecified } -func (x *PatternFlowPfcPauseEtherType_Choice) Reset() { - *x = PatternFlowPfcPauseEtherType_Choice{} - if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[975] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) +func (x *PatternFlowRSVPPathSenderTspecIntServMinimumPolicedUnit) GetValue() uint32 { + if x != nil && x.Value != nil { + return *x.Value } + return 0 } -func (x *PatternFlowPfcPauseEtherType_Choice) String() string { - return protoimpl.X.MessageStringOf(x) +func (x *PatternFlowRSVPPathSenderTspecIntServMinimumPolicedUnit) GetValues() []uint32 { + if x != nil { + return x.Values + } + return nil } -func (*PatternFlowPfcPauseEtherType_Choice) ProtoMessage() {} - -func (x *PatternFlowPfcPauseEtherType_Choice) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[975] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms +func (x *PatternFlowRSVPPathSenderTspecIntServMinimumPolicedUnit) GetIncrement() *PatternFlowRSVPPathSenderTspecIntServMinimumPolicedUnitCounter { + if x != nil { + return x.Increment } - return mi.MessageOf(x) + return nil } -// Deprecated: Use PatternFlowPfcPauseEtherType_Choice.ProtoReflect.Descriptor instead. -func (*PatternFlowPfcPauseEtherType_Choice) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{462, 0} +func (x *PatternFlowRSVPPathSenderTspecIntServMinimumPolicedUnit) GetDecrement() *PatternFlowRSVPPathSenderTspecIntServMinimumPolicedUnitCounter { + if x != nil { + return x.Decrement + } + return nil } -type PatternFlowPfcPauseControlOpCode_Choice struct { +// integer counter pattern +type PatternFlowRSVPPathSenderTspecIntServMaximumPacketSizeCounter struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields + + // Description missing in models + // default = 0 + Start *uint32 `protobuf:"varint,1,opt,name=start,proto3,oneof" json:"start,omitempty"` + // Description missing in models + // default = 1 + Step *uint32 `protobuf:"varint,2,opt,name=step,proto3,oneof" json:"step,omitempty"` + // Description missing in models + // default = 1 + Count *uint32 `protobuf:"varint,3,opt,name=count,proto3,oneof" json:"count,omitempty"` } -func (x *PatternFlowPfcPauseControlOpCode_Choice) Reset() { - *x = PatternFlowPfcPauseControlOpCode_Choice{} +func (x *PatternFlowRSVPPathSenderTspecIntServMaximumPacketSizeCounter) Reset() { + *x = PatternFlowRSVPPathSenderTspecIntServMaximumPacketSizeCounter{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[976] + mi := &file_otg_proto_msgTypes[857] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowPfcPauseControlOpCode_Choice) String() string { +func (x *PatternFlowRSVPPathSenderTspecIntServMaximumPacketSizeCounter) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowPfcPauseControlOpCode_Choice) ProtoMessage() {} +func (*PatternFlowRSVPPathSenderTspecIntServMaximumPacketSizeCounter) ProtoMessage() {} -func (x *PatternFlowPfcPauseControlOpCode_Choice) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[976] +func (x *PatternFlowRSVPPathSenderTspecIntServMaximumPacketSizeCounter) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[857] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -89324,34 +91461,72 @@ func (x *PatternFlowPfcPauseControlOpCode_Choice) ProtoReflect() protoreflect.Me return mi.MessageOf(x) } -// Deprecated: Use PatternFlowPfcPauseControlOpCode_Choice.ProtoReflect.Descriptor instead. -func (*PatternFlowPfcPauseControlOpCode_Choice) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{465, 0} +// Deprecated: Use PatternFlowRSVPPathSenderTspecIntServMaximumPacketSizeCounter.ProtoReflect.Descriptor instead. +func (*PatternFlowRSVPPathSenderTspecIntServMaximumPacketSizeCounter) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{857} } -type PatternFlowPfcPauseClassEnableVector_Choice struct { +func (x *PatternFlowRSVPPathSenderTspecIntServMaximumPacketSizeCounter) GetStart() uint32 { + if x != nil && x.Start != nil { + return *x.Start + } + return 0 +} + +func (x *PatternFlowRSVPPathSenderTspecIntServMaximumPacketSizeCounter) GetStep() uint32 { + if x != nil && x.Step != nil { + return *x.Step + } + return 0 +} + +func (x *PatternFlowRSVPPathSenderTspecIntServMaximumPacketSizeCounter) GetCount() uint32 { + if x != nil && x.Count != nil { + return *x.Count + } + return 0 +} + +// The maximum packet size parameter should be set to the size of the largest packet +// the application might wish to generate. This value must, by definition, be equal +// to or larger than the value of The minimum policed unit. +type PatternFlowRSVPPathSenderTspecIntServMaximumPacketSize struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields + + // Description missing in models + // default = Choice.Enum.value + Choice *PatternFlowRSVPPathSenderTspecIntServMaximumPacketSize_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.PatternFlowRSVPPathSenderTspecIntServMaximumPacketSize_Choice_Enum,oneof" json:"choice,omitempty"` + // Description missing in models + // default = 0 + Value *uint32 `protobuf:"varint,2,opt,name=value,proto3,oneof" json:"value,omitempty"` + // Description missing in models + // default = [0] + Values []uint32 `protobuf:"varint,3,rep,packed,name=values,proto3" json:"values,omitempty"` + // Description missing in models + Increment *PatternFlowRSVPPathSenderTspecIntServMaximumPacketSizeCounter `protobuf:"bytes,5,opt,name=increment,proto3" json:"increment,omitempty"` + // Description missing in models + Decrement *PatternFlowRSVPPathSenderTspecIntServMaximumPacketSizeCounter `protobuf:"bytes,6,opt,name=decrement,proto3" json:"decrement,omitempty"` } -func (x *PatternFlowPfcPauseClassEnableVector_Choice) Reset() { - *x = PatternFlowPfcPauseClassEnableVector_Choice{} +func (x *PatternFlowRSVPPathSenderTspecIntServMaximumPacketSize) Reset() { + *x = PatternFlowRSVPPathSenderTspecIntServMaximumPacketSize{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[977] + mi := &file_otg_proto_msgTypes[858] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowPfcPauseClassEnableVector_Choice) String() string { +func (x *PatternFlowRSVPPathSenderTspecIntServMaximumPacketSize) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowPfcPauseClassEnableVector_Choice) ProtoMessage() {} +func (*PatternFlowRSVPPathSenderTspecIntServMaximumPacketSize) ProtoMessage() {} -func (x *PatternFlowPfcPauseClassEnableVector_Choice) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[977] +func (x *PatternFlowRSVPPathSenderTspecIntServMaximumPacketSize) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[858] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -89362,72 +91537,80 @@ func (x *PatternFlowPfcPauseClassEnableVector_Choice) ProtoReflect() protoreflec return mi.MessageOf(x) } -// Deprecated: Use PatternFlowPfcPauseClassEnableVector_Choice.ProtoReflect.Descriptor instead. -func (*PatternFlowPfcPauseClassEnableVector_Choice) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{468, 0} +// Deprecated: Use PatternFlowRSVPPathSenderTspecIntServMaximumPacketSize.ProtoReflect.Descriptor instead. +func (*PatternFlowRSVPPathSenderTspecIntServMaximumPacketSize) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{858} } -type PatternFlowPfcPausePauseClass0_Choice struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields +func (x *PatternFlowRSVPPathSenderTspecIntServMaximumPacketSize) GetChoice() PatternFlowRSVPPathSenderTspecIntServMaximumPacketSize_Choice_Enum { + if x != nil && x.Choice != nil { + return *x.Choice + } + return PatternFlowRSVPPathSenderTspecIntServMaximumPacketSize_Choice_unspecified } -func (x *PatternFlowPfcPausePauseClass0_Choice) Reset() { - *x = PatternFlowPfcPausePauseClass0_Choice{} - if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[978] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) +func (x *PatternFlowRSVPPathSenderTspecIntServMaximumPacketSize) GetValue() uint32 { + if x != nil && x.Value != nil { + return *x.Value } + return 0 } -func (x *PatternFlowPfcPausePauseClass0_Choice) String() string { - return protoimpl.X.MessageStringOf(x) +func (x *PatternFlowRSVPPathSenderTspecIntServMaximumPacketSize) GetValues() []uint32 { + if x != nil { + return x.Values + } + return nil } -func (*PatternFlowPfcPausePauseClass0_Choice) ProtoMessage() {} - -func (x *PatternFlowPfcPausePauseClass0_Choice) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[978] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms +func (x *PatternFlowRSVPPathSenderTspecIntServMaximumPacketSize) GetIncrement() *PatternFlowRSVPPathSenderTspecIntServMaximumPacketSizeCounter { + if x != nil { + return x.Increment } - return mi.MessageOf(x) + return nil } -// Deprecated: Use PatternFlowPfcPausePauseClass0_Choice.ProtoReflect.Descriptor instead. -func (*PatternFlowPfcPausePauseClass0_Choice) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{471, 0} +func (x *PatternFlowRSVPPathSenderTspecIntServMaximumPacketSize) GetDecrement() *PatternFlowRSVPPathSenderTspecIntServMaximumPacketSizeCounter { + if x != nil { + return x.Decrement + } + return nil } -type PatternFlowPfcPausePauseClass1_Choice struct { +// ipv4 counter pattern +type PatternFlowRSVPPathRecordRouteType1Ipv4AddressIpv4AddressCounter struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields + + // Description missing in models + // default = 0.0.0.0 + Start *string `protobuf:"bytes,1,opt,name=start,proto3,oneof" json:"start,omitempty"` + // Description missing in models + // default = 0.0.0.1 + Step *string `protobuf:"bytes,2,opt,name=step,proto3,oneof" json:"step,omitempty"` + // Description missing in models + // default = 1 + Count *uint32 `protobuf:"varint,3,opt,name=count,proto3,oneof" json:"count,omitempty"` } -func (x *PatternFlowPfcPausePauseClass1_Choice) Reset() { - *x = PatternFlowPfcPausePauseClass1_Choice{} +func (x *PatternFlowRSVPPathRecordRouteType1Ipv4AddressIpv4AddressCounter) Reset() { + *x = PatternFlowRSVPPathRecordRouteType1Ipv4AddressIpv4AddressCounter{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[979] + mi := &file_otg_proto_msgTypes[859] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowPfcPausePauseClass1_Choice) String() string { +func (x *PatternFlowRSVPPathRecordRouteType1Ipv4AddressIpv4AddressCounter) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowPfcPausePauseClass1_Choice) ProtoMessage() {} +func (*PatternFlowRSVPPathRecordRouteType1Ipv4AddressIpv4AddressCounter) ProtoMessage() {} -func (x *PatternFlowPfcPausePauseClass1_Choice) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[979] +func (x *PatternFlowRSVPPathRecordRouteType1Ipv4AddressIpv4AddressCounter) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[859] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -89438,34 +91621,71 @@ func (x *PatternFlowPfcPausePauseClass1_Choice) ProtoReflect() protoreflect.Mess return mi.MessageOf(x) } -// Deprecated: Use PatternFlowPfcPausePauseClass1_Choice.ProtoReflect.Descriptor instead. -func (*PatternFlowPfcPausePauseClass1_Choice) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{474, 0} +// Deprecated: Use PatternFlowRSVPPathRecordRouteType1Ipv4AddressIpv4AddressCounter.ProtoReflect.Descriptor instead. +func (*PatternFlowRSVPPathRecordRouteType1Ipv4AddressIpv4AddressCounter) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{859} } -type PatternFlowPfcPausePauseClass2_Choice struct { +func (x *PatternFlowRSVPPathRecordRouteType1Ipv4AddressIpv4AddressCounter) GetStart() string { + if x != nil && x.Start != nil { + return *x.Start + } + return "" +} + +func (x *PatternFlowRSVPPathRecordRouteType1Ipv4AddressIpv4AddressCounter) GetStep() string { + if x != nil && x.Step != nil { + return *x.Step + } + return "" +} + +func (x *PatternFlowRSVPPathRecordRouteType1Ipv4AddressIpv4AddressCounter) GetCount() uint32 { + if x != nil && x.Count != nil { + return *x.Count + } + return 0 +} + +// A 32-bit unicast, host address. Any network-reachable interface address is allowed +// here. Illegal addresses, such as certain loopback addresses, SHOULD NOT be used. +type PatternFlowRSVPPathRecordRouteType1Ipv4AddressIpv4Address struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields + + // Description missing in models + // default = Choice.Enum.value + Choice *PatternFlowRSVPPathRecordRouteType1Ipv4AddressIpv4Address_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.PatternFlowRSVPPathRecordRouteType1Ipv4AddressIpv4Address_Choice_Enum,oneof" json:"choice,omitempty"` + // Description missing in models + // default = 0.0.0.0 + Value *string `protobuf:"bytes,2,opt,name=value,proto3,oneof" json:"value,omitempty"` + // Description missing in models + // default = ['0.0.0.0'] + Values []string `protobuf:"bytes,3,rep,name=values,proto3" json:"values,omitempty"` + // Description missing in models + Increment *PatternFlowRSVPPathRecordRouteType1Ipv4AddressIpv4AddressCounter `protobuf:"bytes,5,opt,name=increment,proto3" json:"increment,omitempty"` + // Description missing in models + Decrement *PatternFlowRSVPPathRecordRouteType1Ipv4AddressIpv4AddressCounter `protobuf:"bytes,6,opt,name=decrement,proto3" json:"decrement,omitempty"` } -func (x *PatternFlowPfcPausePauseClass2_Choice) Reset() { - *x = PatternFlowPfcPausePauseClass2_Choice{} +func (x *PatternFlowRSVPPathRecordRouteType1Ipv4AddressIpv4Address) Reset() { + *x = PatternFlowRSVPPathRecordRouteType1Ipv4AddressIpv4Address{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[980] + mi := &file_otg_proto_msgTypes[860] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowPfcPausePauseClass2_Choice) String() string { +func (x *PatternFlowRSVPPathRecordRouteType1Ipv4AddressIpv4Address) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowPfcPausePauseClass2_Choice) ProtoMessage() {} +func (*PatternFlowRSVPPathRecordRouteType1Ipv4AddressIpv4Address) ProtoMessage() {} -func (x *PatternFlowPfcPausePauseClass2_Choice) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[980] +func (x *PatternFlowRSVPPathRecordRouteType1Ipv4AddressIpv4Address) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[860] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -89476,34 +91696,80 @@ func (x *PatternFlowPfcPausePauseClass2_Choice) ProtoReflect() protoreflect.Mess return mi.MessageOf(x) } -// Deprecated: Use PatternFlowPfcPausePauseClass2_Choice.ProtoReflect.Descriptor instead. -func (*PatternFlowPfcPausePauseClass2_Choice) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{477, 0} +// Deprecated: Use PatternFlowRSVPPathRecordRouteType1Ipv4AddressIpv4Address.ProtoReflect.Descriptor instead. +func (*PatternFlowRSVPPathRecordRouteType1Ipv4AddressIpv4Address) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{860} } -type PatternFlowPfcPausePauseClass3_Choice struct { +func (x *PatternFlowRSVPPathRecordRouteType1Ipv4AddressIpv4Address) GetChoice() PatternFlowRSVPPathRecordRouteType1Ipv4AddressIpv4Address_Choice_Enum { + if x != nil && x.Choice != nil { + return *x.Choice + } + return PatternFlowRSVPPathRecordRouteType1Ipv4AddressIpv4Address_Choice_unspecified +} + +func (x *PatternFlowRSVPPathRecordRouteType1Ipv4AddressIpv4Address) GetValue() string { + if x != nil && x.Value != nil { + return *x.Value + } + return "" +} + +func (x *PatternFlowRSVPPathRecordRouteType1Ipv4AddressIpv4Address) GetValues() []string { + if x != nil { + return x.Values + } + return nil +} + +func (x *PatternFlowRSVPPathRecordRouteType1Ipv4AddressIpv4Address) GetIncrement() *PatternFlowRSVPPathRecordRouteType1Ipv4AddressIpv4AddressCounter { + if x != nil { + return x.Increment + } + return nil +} + +func (x *PatternFlowRSVPPathRecordRouteType1Ipv4AddressIpv4Address) GetDecrement() *PatternFlowRSVPPathRecordRouteType1Ipv4AddressIpv4AddressCounter { + if x != nil { + return x.Decrement + } + return nil +} + +// integer counter pattern +type PatternFlowRSVPPathRecordRouteType1Ipv4AddressPrefixLengthCounter struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields + + // Description missing in models + // default = 32 + Start *uint32 `protobuf:"varint,1,opt,name=start,proto3,oneof" json:"start,omitempty"` + // Description missing in models + // default = 1 + Step *uint32 `protobuf:"varint,2,opt,name=step,proto3,oneof" json:"step,omitempty"` + // Description missing in models + // default = 1 + Count *uint32 `protobuf:"varint,3,opt,name=count,proto3,oneof" json:"count,omitempty"` } -func (x *PatternFlowPfcPausePauseClass3_Choice) Reset() { - *x = PatternFlowPfcPausePauseClass3_Choice{} +func (x *PatternFlowRSVPPathRecordRouteType1Ipv4AddressPrefixLengthCounter) Reset() { + *x = PatternFlowRSVPPathRecordRouteType1Ipv4AddressPrefixLengthCounter{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[981] + mi := &file_otg_proto_msgTypes[861] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowPfcPausePauseClass3_Choice) String() string { +func (x *PatternFlowRSVPPathRecordRouteType1Ipv4AddressPrefixLengthCounter) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowPfcPausePauseClass3_Choice) ProtoMessage() {} +func (*PatternFlowRSVPPathRecordRouteType1Ipv4AddressPrefixLengthCounter) ProtoMessage() {} -func (x *PatternFlowPfcPausePauseClass3_Choice) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[981] +func (x *PatternFlowRSVPPathRecordRouteType1Ipv4AddressPrefixLengthCounter) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[861] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -89514,34 +91780,70 @@ func (x *PatternFlowPfcPausePauseClass3_Choice) ProtoReflect() protoreflect.Mess return mi.MessageOf(x) } -// Deprecated: Use PatternFlowPfcPausePauseClass3_Choice.ProtoReflect.Descriptor instead. -func (*PatternFlowPfcPausePauseClass3_Choice) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{480, 0} +// Deprecated: Use PatternFlowRSVPPathRecordRouteType1Ipv4AddressPrefixLengthCounter.ProtoReflect.Descriptor instead. +func (*PatternFlowRSVPPathRecordRouteType1Ipv4AddressPrefixLengthCounter) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{861} } -type PatternFlowPfcPausePauseClass4_Choice struct { +func (x *PatternFlowRSVPPathRecordRouteType1Ipv4AddressPrefixLengthCounter) GetStart() uint32 { + if x != nil && x.Start != nil { + return *x.Start + } + return 0 +} + +func (x *PatternFlowRSVPPathRecordRouteType1Ipv4AddressPrefixLengthCounter) GetStep() uint32 { + if x != nil && x.Step != nil { + return *x.Step + } + return 0 +} + +func (x *PatternFlowRSVPPathRecordRouteType1Ipv4AddressPrefixLengthCounter) GetCount() uint32 { + if x != nil && x.Count != nil { + return *x.Count + } + return 0 +} + +// Prefix-length of ipv4 address. +type PatternFlowRSVPPathRecordRouteType1Ipv4AddressPrefixLength struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields + + // Description missing in models + // default = Choice.Enum.value + Choice *PatternFlowRSVPPathRecordRouteType1Ipv4AddressPrefixLength_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.PatternFlowRSVPPathRecordRouteType1Ipv4AddressPrefixLength_Choice_Enum,oneof" json:"choice,omitempty"` + // Description missing in models + // default = 32 + Value *uint32 `protobuf:"varint,2,opt,name=value,proto3,oneof" json:"value,omitempty"` + // Description missing in models + // default = [32] + Values []uint32 `protobuf:"varint,3,rep,packed,name=values,proto3" json:"values,omitempty"` + // Description missing in models + Increment *PatternFlowRSVPPathRecordRouteType1Ipv4AddressPrefixLengthCounter `protobuf:"bytes,5,opt,name=increment,proto3" json:"increment,omitempty"` + // Description missing in models + Decrement *PatternFlowRSVPPathRecordRouteType1Ipv4AddressPrefixLengthCounter `protobuf:"bytes,6,opt,name=decrement,proto3" json:"decrement,omitempty"` } -func (x *PatternFlowPfcPausePauseClass4_Choice) Reset() { - *x = PatternFlowPfcPausePauseClass4_Choice{} +func (x *PatternFlowRSVPPathRecordRouteType1Ipv4AddressPrefixLength) Reset() { + *x = PatternFlowRSVPPathRecordRouteType1Ipv4AddressPrefixLength{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[982] + mi := &file_otg_proto_msgTypes[862] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowPfcPausePauseClass4_Choice) String() string { +func (x *PatternFlowRSVPPathRecordRouteType1Ipv4AddressPrefixLength) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowPfcPausePauseClass4_Choice) ProtoMessage() {} +func (*PatternFlowRSVPPathRecordRouteType1Ipv4AddressPrefixLength) ProtoMessage() {} -func (x *PatternFlowPfcPausePauseClass4_Choice) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[982] +func (x *PatternFlowRSVPPathRecordRouteType1Ipv4AddressPrefixLength) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[862] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -89552,34 +91854,81 @@ func (x *PatternFlowPfcPausePauseClass4_Choice) ProtoReflect() protoreflect.Mess return mi.MessageOf(x) } -// Deprecated: Use PatternFlowPfcPausePauseClass4_Choice.ProtoReflect.Descriptor instead. -func (*PatternFlowPfcPausePauseClass4_Choice) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{483, 0} +// Deprecated: Use PatternFlowRSVPPathRecordRouteType1Ipv4AddressPrefixLength.ProtoReflect.Descriptor instead. +func (*PatternFlowRSVPPathRecordRouteType1Ipv4AddressPrefixLength) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{862} } -type PatternFlowPfcPausePauseClass5_Choice struct { +func (x *PatternFlowRSVPPathRecordRouteType1Ipv4AddressPrefixLength) GetChoice() PatternFlowRSVPPathRecordRouteType1Ipv4AddressPrefixLength_Choice_Enum { + if x != nil && x.Choice != nil { + return *x.Choice + } + return PatternFlowRSVPPathRecordRouteType1Ipv4AddressPrefixLength_Choice_unspecified +} + +func (x *PatternFlowRSVPPathRecordRouteType1Ipv4AddressPrefixLength) GetValue() uint32 { + if x != nil && x.Value != nil { + return *x.Value + } + return 0 +} + +func (x *PatternFlowRSVPPathRecordRouteType1Ipv4AddressPrefixLength) GetValues() []uint32 { + if x != nil { + return x.Values + } + return nil +} + +func (x *PatternFlowRSVPPathRecordRouteType1Ipv4AddressPrefixLength) GetIncrement() *PatternFlowRSVPPathRecordRouteType1Ipv4AddressPrefixLengthCounter { + if x != nil { + return x.Increment + } + return nil +} + +func (x *PatternFlowRSVPPathRecordRouteType1Ipv4AddressPrefixLength) GetDecrement() *PatternFlowRSVPPathRecordRouteType1Ipv4AddressPrefixLengthCounter { + if x != nil { + return x.Decrement + } + return nil +} + +// 0x01 = Global label. This flag indicates that the label will be understood if received +// on any interface. +type PatternFlowRSVPPathRecordRouteType1LabelFlags struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields + + // Description missing in models + // default = Choice.Enum.value + Choice *PatternFlowRSVPPathRecordRouteType1LabelFlags_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.PatternFlowRSVPPathRecordRouteType1LabelFlags_Choice_Enum,oneof" json:"choice,omitempty"` + // Description missing in models + // default = 1 + Value *uint32 `protobuf:"varint,2,opt,name=value,proto3,oneof" json:"value,omitempty"` + // Description missing in models + // default = [1] + Values []uint32 `protobuf:"varint,3,rep,packed,name=values,proto3" json:"values,omitempty"` } -func (x *PatternFlowPfcPausePauseClass5_Choice) Reset() { - *x = PatternFlowPfcPausePauseClass5_Choice{} +func (x *PatternFlowRSVPPathRecordRouteType1LabelFlags) Reset() { + *x = PatternFlowRSVPPathRecordRouteType1LabelFlags{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[983] + mi := &file_otg_proto_msgTypes[863] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowPfcPausePauseClass5_Choice) String() string { +func (x *PatternFlowRSVPPathRecordRouteType1LabelFlags) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowPfcPausePauseClass5_Choice) ProtoMessage() {} +func (*PatternFlowRSVPPathRecordRouteType1LabelFlags) ProtoMessage() {} -func (x *PatternFlowPfcPausePauseClass5_Choice) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[983] +func (x *PatternFlowRSVPPathRecordRouteType1LabelFlags) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[863] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -89590,34 +91939,66 @@ func (x *PatternFlowPfcPausePauseClass5_Choice) ProtoReflect() protoreflect.Mess return mi.MessageOf(x) } -// Deprecated: Use PatternFlowPfcPausePauseClass5_Choice.ProtoReflect.Descriptor instead. -func (*PatternFlowPfcPausePauseClass5_Choice) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{486, 0} +// Deprecated: Use PatternFlowRSVPPathRecordRouteType1LabelFlags.ProtoReflect.Descriptor instead. +func (*PatternFlowRSVPPathRecordRouteType1LabelFlags) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{863} } -type PatternFlowPfcPausePauseClass6_Choice struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields +func (x *PatternFlowRSVPPathRecordRouteType1LabelFlags) GetChoice() PatternFlowRSVPPathRecordRouteType1LabelFlags_Choice_Enum { + if x != nil && x.Choice != nil { + return *x.Choice + } + return PatternFlowRSVPPathRecordRouteType1LabelFlags_Choice_unspecified } -func (x *PatternFlowPfcPausePauseClass6_Choice) Reset() { - *x = PatternFlowPfcPausePauseClass6_Choice{} +func (x *PatternFlowRSVPPathRecordRouteType1LabelFlags) GetValue() uint32 { + if x != nil && x.Value != nil { + return *x.Value + } + return 0 +} + +func (x *PatternFlowRSVPPathRecordRouteType1LabelFlags) GetValues() []uint32 { + if x != nil { + return x.Values + } + return nil +} + +// The C-Type of the included Label Object. Copied from the Label object. +type PatternFlowRSVPPathRecordRouteType1LabelCType struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Description missing in models + // default = Choice.Enum.value + Choice *PatternFlowRSVPPathRecordRouteType1LabelCType_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.PatternFlowRSVPPathRecordRouteType1LabelCType_Choice_Enum,oneof" json:"choice,omitempty"` + // Description missing in models + // default = 0 + Value *uint32 `protobuf:"varint,2,opt,name=value,proto3,oneof" json:"value,omitempty"` + // Description missing in models + // default = [0] + Values []uint32 `protobuf:"varint,3,rep,packed,name=values,proto3" json:"values,omitempty"` +} + +func (x *PatternFlowRSVPPathRecordRouteType1LabelCType) Reset() { + *x = PatternFlowRSVPPathRecordRouteType1LabelCType{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[984] + mi := &file_otg_proto_msgTypes[864] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowPfcPausePauseClass6_Choice) String() string { +func (x *PatternFlowRSVPPathRecordRouteType1LabelCType) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowPfcPausePauseClass6_Choice) ProtoMessage() {} +func (*PatternFlowRSVPPathRecordRouteType1LabelCType) ProtoMessage() {} -func (x *PatternFlowPfcPausePauseClass6_Choice) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[984] +func (x *PatternFlowRSVPPathRecordRouteType1LabelCType) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[864] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -89628,34 +92009,66 @@ func (x *PatternFlowPfcPausePauseClass6_Choice) ProtoReflect() protoreflect.Mess return mi.MessageOf(x) } -// Deprecated: Use PatternFlowPfcPausePauseClass6_Choice.ProtoReflect.Descriptor instead. -func (*PatternFlowPfcPausePauseClass6_Choice) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{489, 0} +// Deprecated: Use PatternFlowRSVPPathRecordRouteType1LabelCType.ProtoReflect.Descriptor instead. +func (*PatternFlowRSVPPathRecordRouteType1LabelCType) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{864} } -type PatternFlowPfcPausePauseClass7_Choice struct { +func (x *PatternFlowRSVPPathRecordRouteType1LabelCType) GetChoice() PatternFlowRSVPPathRecordRouteType1LabelCType_Choice_Enum { + if x != nil && x.Choice != nil { + return *x.Choice + } + return PatternFlowRSVPPathRecordRouteType1LabelCType_Choice_unspecified +} + +func (x *PatternFlowRSVPPathRecordRouteType1LabelCType) GetValue() uint32 { + if x != nil && x.Value != nil { + return *x.Value + } + return 0 +} + +func (x *PatternFlowRSVPPathRecordRouteType1LabelCType) GetValues() []uint32 { + if x != nil { + return x.Values + } + return nil +} + +// integer counter pattern +type PatternFlowRSVPPathObjectsCustomTypeCounter struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields + + // Description missing in models + // default = 0 + Start *uint32 `protobuf:"varint,1,opt,name=start,proto3,oneof" json:"start,omitempty"` + // Description missing in models + // default = 1 + Step *uint32 `protobuf:"varint,2,opt,name=step,proto3,oneof" json:"step,omitempty"` + // Description missing in models + // default = 1 + Count *uint32 `protobuf:"varint,3,opt,name=count,proto3,oneof" json:"count,omitempty"` } -func (x *PatternFlowPfcPausePauseClass7_Choice) Reset() { - *x = PatternFlowPfcPausePauseClass7_Choice{} +func (x *PatternFlowRSVPPathObjectsCustomTypeCounter) Reset() { + *x = PatternFlowRSVPPathObjectsCustomTypeCounter{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[985] + mi := &file_otg_proto_msgTypes[865] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowPfcPausePauseClass7_Choice) String() string { +func (x *PatternFlowRSVPPathObjectsCustomTypeCounter) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowPfcPausePauseClass7_Choice) ProtoMessage() {} +func (*PatternFlowRSVPPathObjectsCustomTypeCounter) ProtoMessage() {} -func (x *PatternFlowPfcPausePauseClass7_Choice) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[985] +func (x *PatternFlowRSVPPathObjectsCustomTypeCounter) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[865] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -89666,34 +92079,70 @@ func (x *PatternFlowPfcPausePauseClass7_Choice) ProtoReflect() protoreflect.Mess return mi.MessageOf(x) } -// Deprecated: Use PatternFlowPfcPausePauseClass7_Choice.ProtoReflect.Descriptor instead. -func (*PatternFlowPfcPausePauseClass7_Choice) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{492, 0} +// Deprecated: Use PatternFlowRSVPPathObjectsCustomTypeCounter.ProtoReflect.Descriptor instead. +func (*PatternFlowRSVPPathObjectsCustomTypeCounter) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{865} } -type PatternFlowEthernetPauseDst_Choice struct { +func (x *PatternFlowRSVPPathObjectsCustomTypeCounter) GetStart() uint32 { + if x != nil && x.Start != nil { + return *x.Start + } + return 0 +} + +func (x *PatternFlowRSVPPathObjectsCustomTypeCounter) GetStep() uint32 { + if x != nil && x.Step != nil { + return *x.Step + } + return 0 +} + +func (x *PatternFlowRSVPPathObjectsCustomTypeCounter) GetCount() uint32 { + if x != nil && x.Count != nil { + return *x.Count + } + return 0 +} + +// User defined object type. +type PatternFlowRSVPPathObjectsCustomType struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields + + // Description missing in models + // default = Choice.Enum.value + Choice *PatternFlowRSVPPathObjectsCustomType_Choice_Enum `protobuf:"varint,1,opt,name=choice,proto3,enum=otg.PatternFlowRSVPPathObjectsCustomType_Choice_Enum,oneof" json:"choice,omitempty"` + // Description missing in models + // default = 0 + Value *uint32 `protobuf:"varint,2,opt,name=value,proto3,oneof" json:"value,omitempty"` + // Description missing in models + // default = [0] + Values []uint32 `protobuf:"varint,3,rep,packed,name=values,proto3" json:"values,omitempty"` + // Description missing in models + Increment *PatternFlowRSVPPathObjectsCustomTypeCounter `protobuf:"bytes,5,opt,name=increment,proto3" json:"increment,omitempty"` + // Description missing in models + Decrement *PatternFlowRSVPPathObjectsCustomTypeCounter `protobuf:"bytes,6,opt,name=decrement,proto3" json:"decrement,omitempty"` } -func (x *PatternFlowEthernetPauseDst_Choice) Reset() { - *x = PatternFlowEthernetPauseDst_Choice{} +func (x *PatternFlowRSVPPathObjectsCustomType) Reset() { + *x = PatternFlowRSVPPathObjectsCustomType{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[986] + mi := &file_otg_proto_msgTypes[866] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowEthernetPauseDst_Choice) String() string { +func (x *PatternFlowRSVPPathObjectsCustomType) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowEthernetPauseDst_Choice) ProtoMessage() {} +func (*PatternFlowRSVPPathObjectsCustomType) ProtoMessage() {} -func (x *PatternFlowEthernetPauseDst_Choice) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[986] +func (x *PatternFlowRSVPPathObjectsCustomType) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[866] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -89704,34 +92153,80 @@ func (x *PatternFlowEthernetPauseDst_Choice) ProtoReflect() protoreflect.Message return mi.MessageOf(x) } -// Deprecated: Use PatternFlowEthernetPauseDst_Choice.ProtoReflect.Descriptor instead. -func (*PatternFlowEthernetPauseDst_Choice) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{495, 0} +// Deprecated: Use PatternFlowRSVPPathObjectsCustomType.ProtoReflect.Descriptor instead. +func (*PatternFlowRSVPPathObjectsCustomType) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{866} } -type PatternFlowEthernetPauseSrc_Choice struct { +func (x *PatternFlowRSVPPathObjectsCustomType) GetChoice() PatternFlowRSVPPathObjectsCustomType_Choice_Enum { + if x != nil && x.Choice != nil { + return *x.Choice + } + return PatternFlowRSVPPathObjectsCustomType_Choice_unspecified +} + +func (x *PatternFlowRSVPPathObjectsCustomType) GetValue() uint32 { + if x != nil && x.Value != nil { + return *x.Value + } + return 0 +} + +func (x *PatternFlowRSVPPathObjectsCustomType) GetValues() []uint32 { + if x != nil { + return x.Values + } + return nil +} + +func (x *PatternFlowRSVPPathObjectsCustomType) GetIncrement() *PatternFlowRSVPPathObjectsCustomTypeCounter { + if x != nil { + return x.Increment + } + return nil +} + +func (x *PatternFlowRSVPPathObjectsCustomType) GetDecrement() *PatternFlowRSVPPathObjectsCustomTypeCounter { + if x != nil { + return x.Decrement + } + return nil +} + +// Version details +type Version struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields + + // Version of API specification + // default = + ApiSpecVersion *string `protobuf:"bytes,1,opt,name=api_spec_version,json=apiSpecVersion,proto3,oneof" json:"api_spec_version,omitempty"` + // Version of SDK generated from API specification + // default = + SdkVersion *string `protobuf:"bytes,2,opt,name=sdk_version,json=sdkVersion,proto3,oneof" json:"sdk_version,omitempty"` + // Version of application consuming or serving the API + // default = + AppVersion *string `protobuf:"bytes,3,opt,name=app_version,json=appVersion,proto3,oneof" json:"app_version,omitempty"` } -func (x *PatternFlowEthernetPauseSrc_Choice) Reset() { - *x = PatternFlowEthernetPauseSrc_Choice{} +func (x *Version) Reset() { + *x = Version{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[987] + mi := &file_otg_proto_msgTypes[867] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowEthernetPauseSrc_Choice) String() string { +func (x *Version) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowEthernetPauseSrc_Choice) ProtoMessage() {} +func (*Version) ProtoMessage() {} -func (x *PatternFlowEthernetPauseSrc_Choice) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[987] +func (x *Version) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[867] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -89742,34 +92237,59 @@ func (x *PatternFlowEthernetPauseSrc_Choice) ProtoReflect() protoreflect.Message return mi.MessageOf(x) } -// Deprecated: Use PatternFlowEthernetPauseSrc_Choice.ProtoReflect.Descriptor instead. -func (*PatternFlowEthernetPauseSrc_Choice) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{498, 0} +// Deprecated: Use Version.ProtoReflect.Descriptor instead. +func (*Version) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{867} } -type PatternFlowEthernetPauseEtherType_Choice struct { +func (x *Version) GetApiSpecVersion() string { + if x != nil && x.ApiSpecVersion != nil { + return *x.ApiSpecVersion + } + return "" +} + +func (x *Version) GetSdkVersion() string { + if x != nil && x.SdkVersion != nil { + return *x.SdkVersion + } + return "" +} + +func (x *Version) GetAppVersion() string { + if x != nil && x.AppVersion != nil { + return *x.AppVersion + } + return "" +} + +// The request has succeeded with no application content but the server +// may return a list of detailed warnings. +type Success struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields + + Warning *Warning `protobuf:"bytes,1,opt,name=warning,proto3" json:"warning,omitempty"` } -func (x *PatternFlowEthernetPauseEtherType_Choice) Reset() { - *x = PatternFlowEthernetPauseEtherType_Choice{} +func (x *Success) Reset() { + *x = Success{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[988] + mi := &file_otg_proto_msgTypes[868] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowEthernetPauseEtherType_Choice) String() string { +func (x *Success) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowEthernetPauseEtherType_Choice) ProtoMessage() {} +func (*Success) ProtoMessage() {} -func (x *PatternFlowEthernetPauseEtherType_Choice) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[988] +func (x *Success) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[868] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -89780,34 +92300,44 @@ func (x *PatternFlowEthernetPauseEtherType_Choice) ProtoReflect() protoreflect.M return mi.MessageOf(x) } -// Deprecated: Use PatternFlowEthernetPauseEtherType_Choice.ProtoReflect.Descriptor instead. -func (*PatternFlowEthernetPauseEtherType_Choice) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{501, 0} +// Deprecated: Use Success.ProtoReflect.Descriptor instead. +func (*Success) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{868} } -type PatternFlowEthernetPauseControlOpCode_Choice struct { +func (x *Success) GetWarning() *Warning { + if x != nil { + return x.Warning + } + return nil +} + +// The request did not succeed and server has responded with error details. +type Failure struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields + + Error *Error `protobuf:"bytes,1,opt,name=error,proto3" json:"error,omitempty"` } -func (x *PatternFlowEthernetPauseControlOpCode_Choice) Reset() { - *x = PatternFlowEthernetPauseControlOpCode_Choice{} +func (x *Failure) Reset() { + *x = Failure{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[989] + mi := &file_otg_proto_msgTypes[869] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowEthernetPauseControlOpCode_Choice) String() string { +func (x *Failure) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowEthernetPauseControlOpCode_Choice) ProtoMessage() {} +func (*Failure) ProtoMessage() {} -func (x *PatternFlowEthernetPauseControlOpCode_Choice) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[989] +func (x *Failure) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[869] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -89818,34 +92348,43 @@ func (x *PatternFlowEthernetPauseControlOpCode_Choice) ProtoReflect() protorefle return mi.MessageOf(x) } -// Deprecated: Use PatternFlowEthernetPauseControlOpCode_Choice.ProtoReflect.Descriptor instead. -func (*PatternFlowEthernetPauseControlOpCode_Choice) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{504, 0} +// Deprecated: Use Failure.ProtoReflect.Descriptor instead. +func (*Failure) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{869} } -type PatternFlowEthernetPauseTime_Choice struct { +func (x *Failure) GetError() *Error { + if x != nil { + return x.Error + } + return nil +} + +type SetConfigRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields + + Config *Config `protobuf:"bytes,1,opt,name=config,proto3" json:"config,omitempty"` } -func (x *PatternFlowEthernetPauseTime_Choice) Reset() { - *x = PatternFlowEthernetPauseTime_Choice{} +func (x *SetConfigRequest) Reset() { + *x = SetConfigRequest{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[990] + mi := &file_otg_proto_msgTypes[870] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowEthernetPauseTime_Choice) String() string { +func (x *SetConfigRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowEthernetPauseTime_Choice) ProtoMessage() {} +func (*SetConfigRequest) ProtoMessage() {} -func (x *PatternFlowEthernetPauseTime_Choice) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[990] +func (x *SetConfigRequest) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[870] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -89856,34 +92395,43 @@ func (x *PatternFlowEthernetPauseTime_Choice) ProtoReflect() protoreflect.Messag return mi.MessageOf(x) } -// Deprecated: Use PatternFlowEthernetPauseTime_Choice.ProtoReflect.Descriptor instead. -func (*PatternFlowEthernetPauseTime_Choice) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{507, 0} +// Deprecated: Use SetConfigRequest.ProtoReflect.Descriptor instead. +func (*SetConfigRequest) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{870} } -type PatternFlowTcpSrcPort_Choice struct { +func (x *SetConfigRequest) GetConfig() *Config { + if x != nil { + return x.Config + } + return nil +} + +type UpdateConfigRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields + + ConfigUpdate *ConfigUpdate `protobuf:"bytes,1,opt,name=config_update,json=configUpdate,proto3" json:"config_update,omitempty"` } -func (x *PatternFlowTcpSrcPort_Choice) Reset() { - *x = PatternFlowTcpSrcPort_Choice{} +func (x *UpdateConfigRequest) Reset() { + *x = UpdateConfigRequest{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[991] + mi := &file_otg_proto_msgTypes[871] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowTcpSrcPort_Choice) String() string { +func (x *UpdateConfigRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowTcpSrcPort_Choice) ProtoMessage() {} +func (*UpdateConfigRequest) ProtoMessage() {} -func (x *PatternFlowTcpSrcPort_Choice) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[991] +func (x *UpdateConfigRequest) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[871] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -89894,34 +92442,43 @@ func (x *PatternFlowTcpSrcPort_Choice) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use PatternFlowTcpSrcPort_Choice.ProtoReflect.Descriptor instead. -func (*PatternFlowTcpSrcPort_Choice) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{510, 0} +// Deprecated: Use UpdateConfigRequest.ProtoReflect.Descriptor instead. +func (*UpdateConfigRequest) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{871} } -type PatternFlowTcpDstPort_Choice struct { +func (x *UpdateConfigRequest) GetConfigUpdate() *ConfigUpdate { + if x != nil { + return x.ConfigUpdate + } + return nil +} + +type SetConfigResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields + + Warning *Warning `protobuf:"bytes,1,opt,name=warning,proto3" json:"warning,omitempty"` } -func (x *PatternFlowTcpDstPort_Choice) Reset() { - *x = PatternFlowTcpDstPort_Choice{} +func (x *SetConfigResponse) Reset() { + *x = SetConfigResponse{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[992] + mi := &file_otg_proto_msgTypes[872] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowTcpDstPort_Choice) String() string { +func (x *SetConfigResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowTcpDstPort_Choice) ProtoMessage() {} +func (*SetConfigResponse) ProtoMessage() {} -func (x *PatternFlowTcpDstPort_Choice) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[992] +func (x *SetConfigResponse) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[872] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -89932,34 +92489,43 @@ func (x *PatternFlowTcpDstPort_Choice) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use PatternFlowTcpDstPort_Choice.ProtoReflect.Descriptor instead. -func (*PatternFlowTcpDstPort_Choice) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{513, 0} +// Deprecated: Use SetConfigResponse.ProtoReflect.Descriptor instead. +func (*SetConfigResponse) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{872} } -type PatternFlowTcpSeqNum_Choice struct { +func (x *SetConfigResponse) GetWarning() *Warning { + if x != nil { + return x.Warning + } + return nil +} + +type GetConfigResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields + + Config *Config `protobuf:"bytes,1,opt,name=config,proto3" json:"config,omitempty"` } -func (x *PatternFlowTcpSeqNum_Choice) Reset() { - *x = PatternFlowTcpSeqNum_Choice{} +func (x *GetConfigResponse) Reset() { + *x = GetConfigResponse{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[993] + mi := &file_otg_proto_msgTypes[873] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowTcpSeqNum_Choice) String() string { +func (x *GetConfigResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowTcpSeqNum_Choice) ProtoMessage() {} +func (*GetConfigResponse) ProtoMessage() {} -func (x *PatternFlowTcpSeqNum_Choice) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[993] +func (x *GetConfigResponse) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[873] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -89970,34 +92536,43 @@ func (x *PatternFlowTcpSeqNum_Choice) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use PatternFlowTcpSeqNum_Choice.ProtoReflect.Descriptor instead. -func (*PatternFlowTcpSeqNum_Choice) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{516, 0} +// Deprecated: Use GetConfigResponse.ProtoReflect.Descriptor instead. +func (*GetConfigResponse) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{873} } -type PatternFlowTcpAckNum_Choice struct { +func (x *GetConfigResponse) GetConfig() *Config { + if x != nil { + return x.Config + } + return nil +} + +type UpdateConfigResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields + + Warning *Warning `protobuf:"bytes,1,opt,name=warning,proto3" json:"warning,omitempty"` } -func (x *PatternFlowTcpAckNum_Choice) Reset() { - *x = PatternFlowTcpAckNum_Choice{} +func (x *UpdateConfigResponse) Reset() { + *x = UpdateConfigResponse{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[994] + mi := &file_otg_proto_msgTypes[874] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowTcpAckNum_Choice) String() string { +func (x *UpdateConfigResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowTcpAckNum_Choice) ProtoMessage() {} +func (*UpdateConfigResponse) ProtoMessage() {} -func (x *PatternFlowTcpAckNum_Choice) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[994] +func (x *UpdateConfigResponse) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[874] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -90008,34 +92583,43 @@ func (x *PatternFlowTcpAckNum_Choice) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use PatternFlowTcpAckNum_Choice.ProtoReflect.Descriptor instead. -func (*PatternFlowTcpAckNum_Choice) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{519, 0} +// Deprecated: Use UpdateConfigResponse.ProtoReflect.Descriptor instead. +func (*UpdateConfigResponse) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{874} } -type PatternFlowTcpDataOffset_Choice struct { +func (x *UpdateConfigResponse) GetWarning() *Warning { + if x != nil { + return x.Warning + } + return nil +} + +type SetControlStateRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields + + ControlState *ControlState `protobuf:"bytes,1,opt,name=control_state,json=controlState,proto3" json:"control_state,omitempty"` } -func (x *PatternFlowTcpDataOffset_Choice) Reset() { - *x = PatternFlowTcpDataOffset_Choice{} +func (x *SetControlStateRequest) Reset() { + *x = SetControlStateRequest{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[995] + mi := &file_otg_proto_msgTypes[875] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowTcpDataOffset_Choice) String() string { +func (x *SetControlStateRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowTcpDataOffset_Choice) ProtoMessage() {} +func (*SetControlStateRequest) ProtoMessage() {} -func (x *PatternFlowTcpDataOffset_Choice) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[995] +func (x *SetControlStateRequest) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[875] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -90046,34 +92630,43 @@ func (x *PatternFlowTcpDataOffset_Choice) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use PatternFlowTcpDataOffset_Choice.ProtoReflect.Descriptor instead. -func (*PatternFlowTcpDataOffset_Choice) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{522, 0} +// Deprecated: Use SetControlStateRequest.ProtoReflect.Descriptor instead. +func (*SetControlStateRequest) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{875} } -type PatternFlowTcpEcnNs_Choice struct { +func (x *SetControlStateRequest) GetControlState() *ControlState { + if x != nil { + return x.ControlState + } + return nil +} + +type SetControlStateResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields + + Warning *Warning `protobuf:"bytes,1,opt,name=warning,proto3" json:"warning,omitempty"` } -func (x *PatternFlowTcpEcnNs_Choice) Reset() { - *x = PatternFlowTcpEcnNs_Choice{} +func (x *SetControlStateResponse) Reset() { + *x = SetControlStateResponse{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[996] + mi := &file_otg_proto_msgTypes[876] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowTcpEcnNs_Choice) String() string { +func (x *SetControlStateResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowTcpEcnNs_Choice) ProtoMessage() {} +func (*SetControlStateResponse) ProtoMessage() {} -func (x *PatternFlowTcpEcnNs_Choice) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[996] +func (x *SetControlStateResponse) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[876] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -90084,34 +92677,43 @@ func (x *PatternFlowTcpEcnNs_Choice) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use PatternFlowTcpEcnNs_Choice.ProtoReflect.Descriptor instead. -func (*PatternFlowTcpEcnNs_Choice) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{525, 0} +// Deprecated: Use SetControlStateResponse.ProtoReflect.Descriptor instead. +func (*SetControlStateResponse) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{876} } -type PatternFlowTcpEcnCwr_Choice struct { +func (x *SetControlStateResponse) GetWarning() *Warning { + if x != nil { + return x.Warning + } + return nil +} + +type SetControlActionRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields + + ControlAction *ControlAction `protobuf:"bytes,1,opt,name=control_action,json=controlAction,proto3" json:"control_action,omitempty"` } -func (x *PatternFlowTcpEcnCwr_Choice) Reset() { - *x = PatternFlowTcpEcnCwr_Choice{} +func (x *SetControlActionRequest) Reset() { + *x = SetControlActionRequest{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[997] + mi := &file_otg_proto_msgTypes[877] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowTcpEcnCwr_Choice) String() string { +func (x *SetControlActionRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowTcpEcnCwr_Choice) ProtoMessage() {} +func (*SetControlActionRequest) ProtoMessage() {} -func (x *PatternFlowTcpEcnCwr_Choice) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[997] +func (x *SetControlActionRequest) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[877] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -90122,34 +92724,43 @@ func (x *PatternFlowTcpEcnCwr_Choice) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use PatternFlowTcpEcnCwr_Choice.ProtoReflect.Descriptor instead. -func (*PatternFlowTcpEcnCwr_Choice) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{528, 0} +// Deprecated: Use SetControlActionRequest.ProtoReflect.Descriptor instead. +func (*SetControlActionRequest) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{877} } -type PatternFlowTcpEcnEcho_Choice struct { +func (x *SetControlActionRequest) GetControlAction() *ControlAction { + if x != nil { + return x.ControlAction + } + return nil +} + +type SetControlActionResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields + + ControlActionResponse *ControlActionResponse `protobuf:"bytes,1,opt,name=control_action_response,json=controlActionResponse,proto3" json:"control_action_response,omitempty"` } -func (x *PatternFlowTcpEcnEcho_Choice) Reset() { - *x = PatternFlowTcpEcnEcho_Choice{} +func (x *SetControlActionResponse) Reset() { + *x = SetControlActionResponse{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[998] + mi := &file_otg_proto_msgTypes[878] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowTcpEcnEcho_Choice) String() string { +func (x *SetControlActionResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowTcpEcnEcho_Choice) ProtoMessage() {} +func (*SetControlActionResponse) ProtoMessage() {} -func (x *PatternFlowTcpEcnEcho_Choice) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[998] +func (x *SetControlActionResponse) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[878] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -90160,34 +92771,43 @@ func (x *PatternFlowTcpEcnEcho_Choice) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use PatternFlowTcpEcnEcho_Choice.ProtoReflect.Descriptor instead. -func (*PatternFlowTcpEcnEcho_Choice) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{531, 0} +// Deprecated: Use SetControlActionResponse.ProtoReflect.Descriptor instead. +func (*SetControlActionResponse) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{878} } -type PatternFlowTcpCtlUrg_Choice struct { +func (x *SetControlActionResponse) GetControlActionResponse() *ControlActionResponse { + if x != nil { + return x.ControlActionResponse + } + return nil +} + +type GetMetricsRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields + + MetricsRequest *MetricsRequest `protobuf:"bytes,1,opt,name=metrics_request,json=metricsRequest,proto3" json:"metrics_request,omitempty"` } -func (x *PatternFlowTcpCtlUrg_Choice) Reset() { - *x = PatternFlowTcpCtlUrg_Choice{} +func (x *GetMetricsRequest) Reset() { + *x = GetMetricsRequest{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[999] + mi := &file_otg_proto_msgTypes[879] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowTcpCtlUrg_Choice) String() string { +func (x *GetMetricsRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowTcpCtlUrg_Choice) ProtoMessage() {} +func (*GetMetricsRequest) ProtoMessage() {} -func (x *PatternFlowTcpCtlUrg_Choice) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[999] +func (x *GetMetricsRequest) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[879] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -90198,34 +92818,43 @@ func (x *PatternFlowTcpCtlUrg_Choice) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use PatternFlowTcpCtlUrg_Choice.ProtoReflect.Descriptor instead. -func (*PatternFlowTcpCtlUrg_Choice) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{534, 0} +// Deprecated: Use GetMetricsRequest.ProtoReflect.Descriptor instead. +func (*GetMetricsRequest) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{879} } -type PatternFlowTcpCtlAck_Choice struct { +func (x *GetMetricsRequest) GetMetricsRequest() *MetricsRequest { + if x != nil { + return x.MetricsRequest + } + return nil +} + +type GetMetricsResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields + + MetricsResponse *MetricsResponse `protobuf:"bytes,1,opt,name=metrics_response,json=metricsResponse,proto3" json:"metrics_response,omitempty"` } -func (x *PatternFlowTcpCtlAck_Choice) Reset() { - *x = PatternFlowTcpCtlAck_Choice{} +func (x *GetMetricsResponse) Reset() { + *x = GetMetricsResponse{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[1000] + mi := &file_otg_proto_msgTypes[880] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowTcpCtlAck_Choice) String() string { +func (x *GetMetricsResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowTcpCtlAck_Choice) ProtoMessage() {} +func (*GetMetricsResponse) ProtoMessage() {} -func (x *PatternFlowTcpCtlAck_Choice) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[1000] +func (x *GetMetricsResponse) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[880] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -90236,34 +92865,43 @@ func (x *PatternFlowTcpCtlAck_Choice) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use PatternFlowTcpCtlAck_Choice.ProtoReflect.Descriptor instead. -func (*PatternFlowTcpCtlAck_Choice) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{537, 0} +// Deprecated: Use GetMetricsResponse.ProtoReflect.Descriptor instead. +func (*GetMetricsResponse) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{880} } -type PatternFlowTcpCtlPsh_Choice struct { +func (x *GetMetricsResponse) GetMetricsResponse() *MetricsResponse { + if x != nil { + return x.MetricsResponse + } + return nil +} + +type GetStatesRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields + + StatesRequest *StatesRequest `protobuf:"bytes,1,opt,name=states_request,json=statesRequest,proto3" json:"states_request,omitempty"` } -func (x *PatternFlowTcpCtlPsh_Choice) Reset() { - *x = PatternFlowTcpCtlPsh_Choice{} +func (x *GetStatesRequest) Reset() { + *x = GetStatesRequest{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[1001] + mi := &file_otg_proto_msgTypes[881] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowTcpCtlPsh_Choice) String() string { +func (x *GetStatesRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowTcpCtlPsh_Choice) ProtoMessage() {} +func (*GetStatesRequest) ProtoMessage() {} -func (x *PatternFlowTcpCtlPsh_Choice) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[1001] +func (x *GetStatesRequest) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[881] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -90274,34 +92912,43 @@ func (x *PatternFlowTcpCtlPsh_Choice) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use PatternFlowTcpCtlPsh_Choice.ProtoReflect.Descriptor instead. -func (*PatternFlowTcpCtlPsh_Choice) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{540, 0} +// Deprecated: Use GetStatesRequest.ProtoReflect.Descriptor instead. +func (*GetStatesRequest) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{881} } -type PatternFlowTcpCtlRst_Choice struct { +func (x *GetStatesRequest) GetStatesRequest() *StatesRequest { + if x != nil { + return x.StatesRequest + } + return nil +} + +type GetStatesResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields + + StatesResponse *StatesResponse `protobuf:"bytes,1,opt,name=states_response,json=statesResponse,proto3" json:"states_response,omitempty"` } -func (x *PatternFlowTcpCtlRst_Choice) Reset() { - *x = PatternFlowTcpCtlRst_Choice{} +func (x *GetStatesResponse) Reset() { + *x = GetStatesResponse{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[1002] + mi := &file_otg_proto_msgTypes[882] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowTcpCtlRst_Choice) String() string { +func (x *GetStatesResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowTcpCtlRst_Choice) ProtoMessage() {} +func (*GetStatesResponse) ProtoMessage() {} -func (x *PatternFlowTcpCtlRst_Choice) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[1002] +func (x *GetStatesResponse) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[882] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -90312,34 +92959,43 @@ func (x *PatternFlowTcpCtlRst_Choice) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use PatternFlowTcpCtlRst_Choice.ProtoReflect.Descriptor instead. -func (*PatternFlowTcpCtlRst_Choice) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{543, 0} +// Deprecated: Use GetStatesResponse.ProtoReflect.Descriptor instead. +func (*GetStatesResponse) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{882} } -type PatternFlowTcpCtlSyn_Choice struct { +func (x *GetStatesResponse) GetStatesResponse() *StatesResponse { + if x != nil { + return x.StatesResponse + } + return nil +} + +type GetCaptureRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields + + CaptureRequest *CaptureRequest `protobuf:"bytes,1,opt,name=capture_request,json=captureRequest,proto3" json:"capture_request,omitempty"` } -func (x *PatternFlowTcpCtlSyn_Choice) Reset() { - *x = PatternFlowTcpCtlSyn_Choice{} +func (x *GetCaptureRequest) Reset() { + *x = GetCaptureRequest{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[1003] + mi := &file_otg_proto_msgTypes[883] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowTcpCtlSyn_Choice) String() string { +func (x *GetCaptureRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowTcpCtlSyn_Choice) ProtoMessage() {} +func (*GetCaptureRequest) ProtoMessage() {} -func (x *PatternFlowTcpCtlSyn_Choice) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[1003] +func (x *GetCaptureRequest) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[883] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -90350,34 +93006,43 @@ func (x *PatternFlowTcpCtlSyn_Choice) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use PatternFlowTcpCtlSyn_Choice.ProtoReflect.Descriptor instead. -func (*PatternFlowTcpCtlSyn_Choice) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{546, 0} +// Deprecated: Use GetCaptureRequest.ProtoReflect.Descriptor instead. +func (*GetCaptureRequest) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{883} } -type PatternFlowTcpCtlFin_Choice struct { +func (x *GetCaptureRequest) GetCaptureRequest() *CaptureRequest { + if x != nil { + return x.CaptureRequest + } + return nil +} + +type GetCaptureResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields + + ResponseBytes []byte `protobuf:"bytes,1,opt,name=response_bytes,json=responseBytes,proto3" json:"response_bytes,omitempty"` } -func (x *PatternFlowTcpCtlFin_Choice) Reset() { - *x = PatternFlowTcpCtlFin_Choice{} +func (x *GetCaptureResponse) Reset() { + *x = GetCaptureResponse{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[1004] + mi := &file_otg_proto_msgTypes[884] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowTcpCtlFin_Choice) String() string { +func (x *GetCaptureResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowTcpCtlFin_Choice) ProtoMessage() {} +func (*GetCaptureResponse) ProtoMessage() {} -func (x *PatternFlowTcpCtlFin_Choice) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[1004] +func (x *GetCaptureResponse) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[884] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -90388,34 +93053,43 @@ func (x *PatternFlowTcpCtlFin_Choice) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use PatternFlowTcpCtlFin_Choice.ProtoReflect.Descriptor instead. -func (*PatternFlowTcpCtlFin_Choice) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{549, 0} +// Deprecated: Use GetCaptureResponse.ProtoReflect.Descriptor instead. +func (*GetCaptureResponse) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{884} } -type PatternFlowTcpWindow_Choice struct { +func (x *GetCaptureResponse) GetResponseBytes() []byte { + if x != nil { + return x.ResponseBytes + } + return nil +} + +type GetVersionResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields + + Version *Version `protobuf:"bytes,1,opt,name=version,proto3" json:"version,omitempty"` } -func (x *PatternFlowTcpWindow_Choice) Reset() { - *x = PatternFlowTcpWindow_Choice{} +func (x *GetVersionResponse) Reset() { + *x = GetVersionResponse{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[1005] + mi := &file_otg_proto_msgTypes[885] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowTcpWindow_Choice) String() string { +func (x *GetVersionResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowTcpWindow_Choice) ProtoMessage() {} +func (*GetVersionResponse) ProtoMessage() {} -func (x *PatternFlowTcpWindow_Choice) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[1005] +func (x *GetVersionResponse) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[885] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -90426,34 +93100,41 @@ func (x *PatternFlowTcpWindow_Choice) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use PatternFlowTcpWindow_Choice.ProtoReflect.Descriptor instead. -func (*PatternFlowTcpWindow_Choice) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{552, 0} +// Deprecated: Use GetVersionResponse.ProtoReflect.Descriptor instead. +func (*GetVersionResponse) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{885} } -type PatternFlowUdpSrcPort_Choice struct { +func (x *GetVersionResponse) GetVersion() *Version { + if x != nil { + return x.Version + } + return nil +} + +type LagProtocol_Choice struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields } -func (x *PatternFlowUdpSrcPort_Choice) Reset() { - *x = PatternFlowUdpSrcPort_Choice{} +func (x *LagProtocol_Choice) Reset() { + *x = LagProtocol_Choice{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[1006] + mi := &file_otg_proto_msgTypes[886] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowUdpSrcPort_Choice) String() string { +func (x *LagProtocol_Choice) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowUdpSrcPort_Choice) ProtoMessage() {} +func (*LagProtocol_Choice) ProtoMessage() {} -func (x *PatternFlowUdpSrcPort_Choice) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[1006] +func (x *LagProtocol_Choice) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[886] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -90464,34 +93145,34 @@ func (x *PatternFlowUdpSrcPort_Choice) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use PatternFlowUdpSrcPort_Choice.ProtoReflect.Descriptor instead. -func (*PatternFlowUdpSrcPort_Choice) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{555, 0} +// Deprecated: Use LagProtocol_Choice.ProtoReflect.Descriptor instead. +func (*LagProtocol_Choice) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{6, 0} } -type PatternFlowUdpDstPort_Choice struct { +type LagPortLacp_ActorActivity struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields } -func (x *PatternFlowUdpDstPort_Choice) Reset() { - *x = PatternFlowUdpDstPort_Choice{} +func (x *LagPortLacp_ActorActivity) Reset() { + *x = LagPortLacp_ActorActivity{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[1007] + mi := &file_otg_proto_msgTypes[887] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowUdpDstPort_Choice) String() string { +func (x *LagPortLacp_ActorActivity) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowUdpDstPort_Choice) ProtoMessage() {} +func (*LagPortLacp_ActorActivity) ProtoMessage() {} -func (x *PatternFlowUdpDstPort_Choice) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[1007] +func (x *LagPortLacp_ActorActivity) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[887] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -90502,34 +93183,34 @@ func (x *PatternFlowUdpDstPort_Choice) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use PatternFlowUdpDstPort_Choice.ProtoReflect.Descriptor instead. -func (*PatternFlowUdpDstPort_Choice) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{558, 0} +// Deprecated: Use LagPortLacp_ActorActivity.ProtoReflect.Descriptor instead. +func (*LagPortLacp_ActorActivity) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{9, 0} } -type PatternFlowUdpLength_Choice struct { +type EthernetConnection_Choice struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields } -func (x *PatternFlowUdpLength_Choice) Reset() { - *x = PatternFlowUdpLength_Choice{} +func (x *EthernetConnection_Choice) Reset() { + *x = EthernetConnection_Choice{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[1008] + mi := &file_otg_proto_msgTypes[888] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowUdpLength_Choice) String() string { +func (x *EthernetConnection_Choice) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowUdpLength_Choice) ProtoMessage() {} +func (*EthernetConnection_Choice) ProtoMessage() {} -func (x *PatternFlowUdpLength_Choice) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[1008] +func (x *EthernetConnection_Choice) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[888] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -90540,34 +93221,34 @@ func (x *PatternFlowUdpLength_Choice) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use PatternFlowUdpLength_Choice.ProtoReflect.Descriptor instead. -func (*PatternFlowUdpLength_Choice) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{561, 0} +// Deprecated: Use EthernetConnection_Choice.ProtoReflect.Descriptor instead. +func (*EthernetConnection_Choice) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{12, 0} } -type PatternFlowUdpChecksum_Choice struct { +type DeviceVlan_Tpid struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields } -func (x *PatternFlowUdpChecksum_Choice) Reset() { - *x = PatternFlowUdpChecksum_Choice{} +func (x *DeviceVlan_Tpid) Reset() { + *x = DeviceVlan_Tpid{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[1009] + mi := &file_otg_proto_msgTypes[889] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowUdpChecksum_Choice) String() string { +func (x *DeviceVlan_Tpid) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowUdpChecksum_Choice) ProtoMessage() {} +func (*DeviceVlan_Tpid) ProtoMessage() {} -func (x *PatternFlowUdpChecksum_Choice) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[1009] +func (x *DeviceVlan_Tpid) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[889] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -90578,34 +93259,34 @@ func (x *PatternFlowUdpChecksum_Choice) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use PatternFlowUdpChecksum_Choice.ProtoReflect.Descriptor instead. -func (*PatternFlowUdpChecksum_Choice) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{562, 0} +// Deprecated: Use DeviceVlan_Tpid.ProtoReflect.Descriptor instead. +func (*DeviceVlan_Tpid) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{13, 0} } -type PatternFlowUdpChecksum_Generated struct { +type DeviceIpv4GatewayMAC_Choice struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields } -func (x *PatternFlowUdpChecksum_Generated) Reset() { - *x = PatternFlowUdpChecksum_Generated{} +func (x *DeviceIpv4GatewayMAC_Choice) Reset() { + *x = DeviceIpv4GatewayMAC_Choice{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[1010] + mi := &file_otg_proto_msgTypes[890] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowUdpChecksum_Generated) String() string { +func (x *DeviceIpv4GatewayMAC_Choice) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowUdpChecksum_Generated) ProtoMessage() {} +func (*DeviceIpv4GatewayMAC_Choice) ProtoMessage() {} -func (x *PatternFlowUdpChecksum_Generated) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[1010] +func (x *DeviceIpv4GatewayMAC_Choice) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[890] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -90616,34 +93297,34 @@ func (x *PatternFlowUdpChecksum_Generated) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use PatternFlowUdpChecksum_Generated.ProtoReflect.Descriptor instead. -func (*PatternFlowUdpChecksum_Generated) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{562, 1} +// Deprecated: Use DeviceIpv4GatewayMAC_Choice.ProtoReflect.Descriptor instead. +func (*DeviceIpv4GatewayMAC_Choice) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{16, 0} } -type PatternFlowGreChecksumPresent_Choice struct { +type DeviceIpv6GatewayMAC_Choice struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields } -func (x *PatternFlowGreChecksumPresent_Choice) Reset() { - *x = PatternFlowGreChecksumPresent_Choice{} +func (x *DeviceIpv6GatewayMAC_Choice) Reset() { + *x = DeviceIpv6GatewayMAC_Choice{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[1011] + mi := &file_otg_proto_msgTypes[891] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowGreChecksumPresent_Choice) String() string { +func (x *DeviceIpv6GatewayMAC_Choice) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowGreChecksumPresent_Choice) ProtoMessage() {} +func (*DeviceIpv6GatewayMAC_Choice) ProtoMessage() {} -func (x *PatternFlowGreChecksumPresent_Choice) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[1011] +func (x *DeviceIpv6GatewayMAC_Choice) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[891] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -90654,34 +93335,34 @@ func (x *PatternFlowGreChecksumPresent_Choice) ProtoReflect() protoreflect.Messa return mi.MessageOf(x) } -// Deprecated: Use PatternFlowGreChecksumPresent_Choice.ProtoReflect.Descriptor instead. -func (*PatternFlowGreChecksumPresent_Choice) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{565, 0} +// Deprecated: Use DeviceIpv6GatewayMAC_Choice.ProtoReflect.Descriptor instead. +func (*DeviceIpv6GatewayMAC_Choice) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{19, 0} } -type PatternFlowGreReserved0_Choice struct { +type Layer1_Speed struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields } -func (x *PatternFlowGreReserved0_Choice) Reset() { - *x = PatternFlowGreReserved0_Choice{} +func (x *Layer1_Speed) Reset() { + *x = Layer1_Speed{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[1012] + mi := &file_otg_proto_msgTypes[892] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowGreReserved0_Choice) String() string { +func (x *Layer1_Speed) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowGreReserved0_Choice) ProtoMessage() {} +func (*Layer1_Speed) ProtoMessage() {} -func (x *PatternFlowGreReserved0_Choice) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[1012] +func (x *Layer1_Speed) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[892] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -90692,34 +93373,34 @@ func (x *PatternFlowGreReserved0_Choice) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use PatternFlowGreReserved0_Choice.ProtoReflect.Descriptor instead. -func (*PatternFlowGreReserved0_Choice) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{568, 0} +// Deprecated: Use Layer1_Speed.ProtoReflect.Descriptor instead. +func (*Layer1_Speed) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{20, 0} } -type PatternFlowGreVersion_Choice struct { +type Layer1_Media struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields } -func (x *PatternFlowGreVersion_Choice) Reset() { - *x = PatternFlowGreVersion_Choice{} +func (x *Layer1_Media) Reset() { + *x = Layer1_Media{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[1013] + mi := &file_otg_proto_msgTypes[893] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowGreVersion_Choice) String() string { +func (x *Layer1_Media) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowGreVersion_Choice) ProtoMessage() {} +func (*Layer1_Media) ProtoMessage() {} -func (x *PatternFlowGreVersion_Choice) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[1013] +func (x *Layer1_Media) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[893] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -90730,34 +93411,34 @@ func (x *PatternFlowGreVersion_Choice) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use PatternFlowGreVersion_Choice.ProtoReflect.Descriptor instead. -func (*PatternFlowGreVersion_Choice) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{571, 0} +// Deprecated: Use Layer1_Media.ProtoReflect.Descriptor instead. +func (*Layer1_Media) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{20, 1} } -type PatternFlowGreProtocol_Choice struct { +type Layer1FlowControl_Choice struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields } -func (x *PatternFlowGreProtocol_Choice) Reset() { - *x = PatternFlowGreProtocol_Choice{} +func (x *Layer1FlowControl_Choice) Reset() { + *x = Layer1FlowControl_Choice{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[1014] + mi := &file_otg_proto_msgTypes[894] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowGreProtocol_Choice) String() string { +func (x *Layer1FlowControl_Choice) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowGreProtocol_Choice) ProtoMessage() {} +func (*Layer1FlowControl_Choice) ProtoMessage() {} -func (x *PatternFlowGreProtocol_Choice) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[1014] +func (x *Layer1FlowControl_Choice) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[894] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -90768,34 +93449,34 @@ func (x *PatternFlowGreProtocol_Choice) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use PatternFlowGreProtocol_Choice.ProtoReflect.Descriptor instead. -func (*PatternFlowGreProtocol_Choice) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{574, 0} +// Deprecated: Use Layer1FlowControl_Choice.ProtoReflect.Descriptor instead. +func (*Layer1FlowControl_Choice) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{22, 0} } -type PatternFlowGreChecksum_Choice struct { +type Capture_Format struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields } -func (x *PatternFlowGreChecksum_Choice) Reset() { - *x = PatternFlowGreChecksum_Choice{} +func (x *Capture_Format) Reset() { + *x = Capture_Format{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[1015] + mi := &file_otg_proto_msgTypes[895] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowGreChecksum_Choice) String() string { +func (x *Capture_Format) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowGreChecksum_Choice) ProtoMessage() {} +func (*Capture_Format) ProtoMessage() {} -func (x *PatternFlowGreChecksum_Choice) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[1015] +func (x *Capture_Format) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[895] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -90806,34 +93487,34 @@ func (x *PatternFlowGreChecksum_Choice) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use PatternFlowGreChecksum_Choice.ProtoReflect.Descriptor instead. -func (*PatternFlowGreChecksum_Choice) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{575, 0} +// Deprecated: Use Capture_Format.ProtoReflect.Descriptor instead. +func (*Capture_Format) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{25, 0} } -type PatternFlowGreChecksum_Generated struct { +type CaptureFilter_Choice struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields } -func (x *PatternFlowGreChecksum_Generated) Reset() { - *x = PatternFlowGreChecksum_Generated{} +func (x *CaptureFilter_Choice) Reset() { + *x = CaptureFilter_Choice{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[1016] + mi := &file_otg_proto_msgTypes[896] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowGreChecksum_Generated) String() string { +func (x *CaptureFilter_Choice) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowGreChecksum_Generated) ProtoMessage() {} +func (*CaptureFilter_Choice) ProtoMessage() {} -func (x *PatternFlowGreChecksum_Generated) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[1016] +func (x *CaptureFilter_Choice) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[896] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -90844,34 +93525,34 @@ func (x *PatternFlowGreChecksum_Generated) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use PatternFlowGreChecksum_Generated.ProtoReflect.Descriptor instead. -func (*PatternFlowGreChecksum_Generated) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{575, 1} +// Deprecated: Use CaptureFilter_Choice.ProtoReflect.Descriptor instead. +func (*CaptureFilter_Choice) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{26, 0} } -type PatternFlowGreReserved1_Choice struct { +type IsisInterface_NetworkType struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields } -func (x *PatternFlowGreReserved1_Choice) Reset() { - *x = PatternFlowGreReserved1_Choice{} +func (x *IsisInterface_NetworkType) Reset() { + *x = IsisInterface_NetworkType{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[1017] + mi := &file_otg_proto_msgTypes[897] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowGreReserved1_Choice) String() string { +func (x *IsisInterface_NetworkType) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowGreReserved1_Choice) ProtoMessage() {} +func (*IsisInterface_NetworkType) ProtoMessage() {} -func (x *PatternFlowGreReserved1_Choice) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[1017] +func (x *IsisInterface_NetworkType) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[897] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -90882,34 +93563,34 @@ func (x *PatternFlowGreReserved1_Choice) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use PatternFlowGreReserved1_Choice.ProtoReflect.Descriptor instead. -func (*PatternFlowGreReserved1_Choice) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{578, 0} +// Deprecated: Use IsisInterface_NetworkType.ProtoReflect.Descriptor instead. +func (*IsisInterface_NetworkType) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{37, 0} } -type PatternFlowGtpv1Version_Choice struct { +type IsisInterface_LevelType struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields } -func (x *PatternFlowGtpv1Version_Choice) Reset() { - *x = PatternFlowGtpv1Version_Choice{} +func (x *IsisInterface_LevelType) Reset() { + *x = IsisInterface_LevelType{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[1018] + mi := &file_otg_proto_msgTypes[898] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowGtpv1Version_Choice) String() string { +func (x *IsisInterface_LevelType) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowGtpv1Version_Choice) ProtoMessage() {} +func (*IsisInterface_LevelType) ProtoMessage() {} -func (x *PatternFlowGtpv1Version_Choice) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[1018] +func (x *IsisInterface_LevelType) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[898] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -90920,34 +93601,34 @@ func (x *PatternFlowGtpv1Version_Choice) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use PatternFlowGtpv1Version_Choice.ProtoReflect.Descriptor instead. -func (*PatternFlowGtpv1Version_Choice) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{581, 0} +// Deprecated: Use IsisInterface_LevelType.ProtoReflect.Descriptor instead. +func (*IsisInterface_LevelType) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{37, 1} } -type PatternFlowGtpv1ProtocolType_Choice struct { +type IsisInterfaceAuthentication_AuthType struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields } -func (x *PatternFlowGtpv1ProtocolType_Choice) Reset() { - *x = PatternFlowGtpv1ProtocolType_Choice{} +func (x *IsisInterfaceAuthentication_AuthType) Reset() { + *x = IsisInterfaceAuthentication_AuthType{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[1019] + mi := &file_otg_proto_msgTypes[899] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowGtpv1ProtocolType_Choice) String() string { +func (x *IsisInterfaceAuthentication_AuthType) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowGtpv1ProtocolType_Choice) ProtoMessage() {} +func (*IsisInterfaceAuthentication_AuthType) ProtoMessage() {} -func (x *PatternFlowGtpv1ProtocolType_Choice) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[1019] +func (x *IsisInterfaceAuthentication_AuthType) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[899] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -90958,34 +93639,34 @@ func (x *PatternFlowGtpv1ProtocolType_Choice) ProtoReflect() protoreflect.Messag return mi.MessageOf(x) } -// Deprecated: Use PatternFlowGtpv1ProtocolType_Choice.ProtoReflect.Descriptor instead. -func (*PatternFlowGtpv1ProtocolType_Choice) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{584, 0} +// Deprecated: Use IsisInterfaceAuthentication_AuthType.ProtoReflect.Descriptor instead. +func (*IsisInterfaceAuthentication_AuthType) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{42, 0} } -type PatternFlowGtpv1Reserved_Choice struct { +type IsisAuthenticationBase_AuthType struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields } -func (x *PatternFlowGtpv1Reserved_Choice) Reset() { - *x = PatternFlowGtpv1Reserved_Choice{} +func (x *IsisAuthenticationBase_AuthType) Reset() { + *x = IsisAuthenticationBase_AuthType{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[1020] + mi := &file_otg_proto_msgTypes[900] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowGtpv1Reserved_Choice) String() string { +func (x *IsisAuthenticationBase_AuthType) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowGtpv1Reserved_Choice) ProtoMessage() {} +func (*IsisAuthenticationBase_AuthType) ProtoMessage() {} -func (x *PatternFlowGtpv1Reserved_Choice) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[1020] +func (x *IsisAuthenticationBase_AuthType) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[900] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -90996,34 +93677,34 @@ func (x *PatternFlowGtpv1Reserved_Choice) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use PatternFlowGtpv1Reserved_Choice.ProtoReflect.Descriptor instead. -func (*PatternFlowGtpv1Reserved_Choice) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{587, 0} +// Deprecated: Use IsisAuthenticationBase_AuthType.ProtoReflect.Descriptor instead. +func (*IsisAuthenticationBase_AuthType) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{48, 0} } -type PatternFlowGtpv1EFlag_Choice struct { +type IsisV4RouteRange_OriginType struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields } -func (x *PatternFlowGtpv1EFlag_Choice) Reset() { - *x = PatternFlowGtpv1EFlag_Choice{} +func (x *IsisV4RouteRange_OriginType) Reset() { + *x = IsisV4RouteRange_OriginType{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[1021] + mi := &file_otg_proto_msgTypes[901] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowGtpv1EFlag_Choice) String() string { +func (x *IsisV4RouteRange_OriginType) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowGtpv1EFlag_Choice) ProtoMessage() {} +func (*IsisV4RouteRange_OriginType) ProtoMessage() {} -func (x *PatternFlowGtpv1EFlag_Choice) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[1021] +func (x *IsisV4RouteRange_OriginType) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[901] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -91034,34 +93715,34 @@ func (x *PatternFlowGtpv1EFlag_Choice) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use PatternFlowGtpv1EFlag_Choice.ProtoReflect.Descriptor instead. -func (*PatternFlowGtpv1EFlag_Choice) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{590, 0} +// Deprecated: Use IsisV4RouteRange_OriginType.ProtoReflect.Descriptor instead. +func (*IsisV4RouteRange_OriginType) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{49, 0} } -type PatternFlowGtpv1SFlag_Choice struct { +type IsisV4RouteRange_RedistributionType struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields } -func (x *PatternFlowGtpv1SFlag_Choice) Reset() { - *x = PatternFlowGtpv1SFlag_Choice{} +func (x *IsisV4RouteRange_RedistributionType) Reset() { + *x = IsisV4RouteRange_RedistributionType{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[1022] + mi := &file_otg_proto_msgTypes[902] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowGtpv1SFlag_Choice) String() string { +func (x *IsisV4RouteRange_RedistributionType) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowGtpv1SFlag_Choice) ProtoMessage() {} +func (*IsisV4RouteRange_RedistributionType) ProtoMessage() {} -func (x *PatternFlowGtpv1SFlag_Choice) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[1022] +func (x *IsisV4RouteRange_RedistributionType) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[902] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -91072,34 +93753,34 @@ func (x *PatternFlowGtpv1SFlag_Choice) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use PatternFlowGtpv1SFlag_Choice.ProtoReflect.Descriptor instead. -func (*PatternFlowGtpv1SFlag_Choice) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{593, 0} +// Deprecated: Use IsisV4RouteRange_RedistributionType.ProtoReflect.Descriptor instead. +func (*IsisV4RouteRange_RedistributionType) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{49, 1} } -type PatternFlowGtpv1PnFlag_Choice struct { +type IsisV6RouteRange_OriginType struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields } -func (x *PatternFlowGtpv1PnFlag_Choice) Reset() { - *x = PatternFlowGtpv1PnFlag_Choice{} +func (x *IsisV6RouteRange_OriginType) Reset() { + *x = IsisV6RouteRange_OriginType{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[1023] + mi := &file_otg_proto_msgTypes[903] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowGtpv1PnFlag_Choice) String() string { +func (x *IsisV6RouteRange_OriginType) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowGtpv1PnFlag_Choice) ProtoMessage() {} +func (*IsisV6RouteRange_OriginType) ProtoMessage() {} -func (x *PatternFlowGtpv1PnFlag_Choice) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[1023] +func (x *IsisV6RouteRange_OriginType) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[903] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -91110,34 +93791,34 @@ func (x *PatternFlowGtpv1PnFlag_Choice) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use PatternFlowGtpv1PnFlag_Choice.ProtoReflect.Descriptor instead. -func (*PatternFlowGtpv1PnFlag_Choice) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{596, 0} +// Deprecated: Use IsisV6RouteRange_OriginType.ProtoReflect.Descriptor instead. +func (*IsisV6RouteRange_OriginType) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{53, 0} } -type PatternFlowGtpv1MessageType_Choice struct { +type IsisV6RouteRange_RedistributionType struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields } -func (x *PatternFlowGtpv1MessageType_Choice) Reset() { - *x = PatternFlowGtpv1MessageType_Choice{} +func (x *IsisV6RouteRange_RedistributionType) Reset() { + *x = IsisV6RouteRange_RedistributionType{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[1024] + mi := &file_otg_proto_msgTypes[904] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowGtpv1MessageType_Choice) String() string { +func (x *IsisV6RouteRange_RedistributionType) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowGtpv1MessageType_Choice) ProtoMessage() {} +func (*IsisV6RouteRange_RedistributionType) ProtoMessage() {} -func (x *PatternFlowGtpv1MessageType_Choice) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[1024] +func (x *IsisV6RouteRange_RedistributionType) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[904] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -91148,34 +93829,34 @@ func (x *PatternFlowGtpv1MessageType_Choice) ProtoReflect() protoreflect.Message return mi.MessageOf(x) } -// Deprecated: Use PatternFlowGtpv1MessageType_Choice.ProtoReflect.Descriptor instead. -func (*PatternFlowGtpv1MessageType_Choice) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{599, 0} +// Deprecated: Use IsisV6RouteRange_RedistributionType.ProtoReflect.Descriptor instead. +func (*IsisV6RouteRange_RedistributionType) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{53, 1} } -type PatternFlowGtpv1MessageLength_Choice struct { +type DeviceBgpMessageHeaderError_Subcode struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields } -func (x *PatternFlowGtpv1MessageLength_Choice) Reset() { - *x = PatternFlowGtpv1MessageLength_Choice{} +func (x *DeviceBgpMessageHeaderError_Subcode) Reset() { + *x = DeviceBgpMessageHeaderError_Subcode{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[1025] + mi := &file_otg_proto_msgTypes[905] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowGtpv1MessageLength_Choice) String() string { +func (x *DeviceBgpMessageHeaderError_Subcode) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowGtpv1MessageLength_Choice) ProtoMessage() {} +func (*DeviceBgpMessageHeaderError_Subcode) ProtoMessage() {} -func (x *PatternFlowGtpv1MessageLength_Choice) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[1025] +func (x *DeviceBgpMessageHeaderError_Subcode) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[905] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -91186,34 +93867,34 @@ func (x *PatternFlowGtpv1MessageLength_Choice) ProtoReflect() protoreflect.Messa return mi.MessageOf(x) } -// Deprecated: Use PatternFlowGtpv1MessageLength_Choice.ProtoReflect.Descriptor instead. -func (*PatternFlowGtpv1MessageLength_Choice) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{602, 0} +// Deprecated: Use DeviceBgpMessageHeaderError_Subcode.ProtoReflect.Descriptor instead. +func (*DeviceBgpMessageHeaderError_Subcode) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{55, 0} } -type PatternFlowGtpv1Teid_Choice struct { +type DeviceBgpOpenMessageError_Subcode struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields } -func (x *PatternFlowGtpv1Teid_Choice) Reset() { - *x = PatternFlowGtpv1Teid_Choice{} +func (x *DeviceBgpOpenMessageError_Subcode) Reset() { + *x = DeviceBgpOpenMessageError_Subcode{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[1026] + mi := &file_otg_proto_msgTypes[906] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowGtpv1Teid_Choice) String() string { +func (x *DeviceBgpOpenMessageError_Subcode) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowGtpv1Teid_Choice) ProtoMessage() {} +func (*DeviceBgpOpenMessageError_Subcode) ProtoMessage() {} -func (x *PatternFlowGtpv1Teid_Choice) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[1026] +func (x *DeviceBgpOpenMessageError_Subcode) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[906] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -91224,34 +93905,34 @@ func (x *PatternFlowGtpv1Teid_Choice) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use PatternFlowGtpv1Teid_Choice.ProtoReflect.Descriptor instead. -func (*PatternFlowGtpv1Teid_Choice) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{605, 0} +// Deprecated: Use DeviceBgpOpenMessageError_Subcode.ProtoReflect.Descriptor instead. +func (*DeviceBgpOpenMessageError_Subcode) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{56, 0} } -type PatternFlowGtpv1SquenceNumber_Choice struct { +type DeviceBgpUpdateMessageError_Subcode struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields } -func (x *PatternFlowGtpv1SquenceNumber_Choice) Reset() { - *x = PatternFlowGtpv1SquenceNumber_Choice{} +func (x *DeviceBgpUpdateMessageError_Subcode) Reset() { + *x = DeviceBgpUpdateMessageError_Subcode{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[1027] + mi := &file_otg_proto_msgTypes[907] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowGtpv1SquenceNumber_Choice) String() string { +func (x *DeviceBgpUpdateMessageError_Subcode) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowGtpv1SquenceNumber_Choice) ProtoMessage() {} +func (*DeviceBgpUpdateMessageError_Subcode) ProtoMessage() {} -func (x *PatternFlowGtpv1SquenceNumber_Choice) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[1027] +func (x *DeviceBgpUpdateMessageError_Subcode) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[907] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -91262,34 +93943,34 @@ func (x *PatternFlowGtpv1SquenceNumber_Choice) ProtoReflect() protoreflect.Messa return mi.MessageOf(x) } -// Deprecated: Use PatternFlowGtpv1SquenceNumber_Choice.ProtoReflect.Descriptor instead. -func (*PatternFlowGtpv1SquenceNumber_Choice) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{608, 0} +// Deprecated: Use DeviceBgpUpdateMessageError_Subcode.ProtoReflect.Descriptor instead. +func (*DeviceBgpUpdateMessageError_Subcode) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{57, 0} } -type PatternFlowGtpv1NPduNumber_Choice struct { +type DeviceBgpCeaseError_Subcode struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields } -func (x *PatternFlowGtpv1NPduNumber_Choice) Reset() { - *x = PatternFlowGtpv1NPduNumber_Choice{} +func (x *DeviceBgpCeaseError_Subcode) Reset() { + *x = DeviceBgpCeaseError_Subcode{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[1028] + mi := &file_otg_proto_msgTypes[908] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowGtpv1NPduNumber_Choice) String() string { +func (x *DeviceBgpCeaseError_Subcode) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowGtpv1NPduNumber_Choice) ProtoMessage() {} +func (*DeviceBgpCeaseError_Subcode) ProtoMessage() {} -func (x *PatternFlowGtpv1NPduNumber_Choice) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[1028] +func (x *DeviceBgpCeaseError_Subcode) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[908] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -91300,34 +93981,34 @@ func (x *PatternFlowGtpv1NPduNumber_Choice) ProtoReflect() protoreflect.Message return mi.MessageOf(x) } -// Deprecated: Use PatternFlowGtpv1NPduNumber_Choice.ProtoReflect.Descriptor instead. -func (*PatternFlowGtpv1NPduNumber_Choice) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{611, 0} +// Deprecated: Use DeviceBgpCeaseError_Subcode.ProtoReflect.Descriptor instead. +func (*DeviceBgpCeaseError_Subcode) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{60, 0} } -type PatternFlowGtpv1NextExtensionHeaderType_Choice struct { +type BgpV4Peer_AsType struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields } -func (x *PatternFlowGtpv1NextExtensionHeaderType_Choice) Reset() { - *x = PatternFlowGtpv1NextExtensionHeaderType_Choice{} +func (x *BgpV4Peer_AsType) Reset() { + *x = BgpV4Peer_AsType{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[1029] + mi := &file_otg_proto_msgTypes[909] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowGtpv1NextExtensionHeaderType_Choice) String() string { +func (x *BgpV4Peer_AsType) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowGtpv1NextExtensionHeaderType_Choice) ProtoMessage() {} +func (*BgpV4Peer_AsType) ProtoMessage() {} -func (x *PatternFlowGtpv1NextExtensionHeaderType_Choice) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[1029] +func (x *BgpV4Peer_AsType) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[909] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -91338,34 +94019,34 @@ func (x *PatternFlowGtpv1NextExtensionHeaderType_Choice) ProtoReflect() protoref return mi.MessageOf(x) } -// Deprecated: Use PatternFlowGtpv1NextExtensionHeaderType_Choice.ProtoReflect.Descriptor instead. -func (*PatternFlowGtpv1NextExtensionHeaderType_Choice) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{614, 0} +// Deprecated: Use BgpV4Peer_AsType.ProtoReflect.Descriptor instead. +func (*BgpV4Peer_AsType) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{62, 0} } -type PatternFlowGtpExtensionExtensionLength_Choice struct { +type BgpV4Peer_AsNumberWidth struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields } -func (x *PatternFlowGtpExtensionExtensionLength_Choice) Reset() { - *x = PatternFlowGtpExtensionExtensionLength_Choice{} +func (x *BgpV4Peer_AsNumberWidth) Reset() { + *x = BgpV4Peer_AsNumberWidth{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[1030] + mi := &file_otg_proto_msgTypes[910] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowGtpExtensionExtensionLength_Choice) String() string { +func (x *BgpV4Peer_AsNumberWidth) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowGtpExtensionExtensionLength_Choice) ProtoMessage() {} +func (*BgpV4Peer_AsNumberWidth) ProtoMessage() {} -func (x *PatternFlowGtpExtensionExtensionLength_Choice) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[1030] +func (x *BgpV4Peer_AsNumberWidth) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[910] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -91376,34 +94057,34 @@ func (x *PatternFlowGtpExtensionExtensionLength_Choice) ProtoReflect() protorefl return mi.MessageOf(x) } -// Deprecated: Use PatternFlowGtpExtensionExtensionLength_Choice.ProtoReflect.Descriptor instead. -func (*PatternFlowGtpExtensionExtensionLength_Choice) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{617, 0} +// Deprecated: Use BgpV4Peer_AsNumberWidth.ProtoReflect.Descriptor instead. +func (*BgpV4Peer_AsNumberWidth) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{62, 1} } -type PatternFlowGtpExtensionContents_Choice struct { +type BgpV4EthernetSegment_ActiveMode struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields } -func (x *PatternFlowGtpExtensionContents_Choice) Reset() { - *x = PatternFlowGtpExtensionContents_Choice{} +func (x *BgpV4EthernetSegment_ActiveMode) Reset() { + *x = BgpV4EthernetSegment_ActiveMode{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[1031] + mi := &file_otg_proto_msgTypes[911] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowGtpExtensionContents_Choice) String() string { +func (x *BgpV4EthernetSegment_ActiveMode) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowGtpExtensionContents_Choice) ProtoMessage() {} +func (*BgpV4EthernetSegment_ActiveMode) ProtoMessage() {} -func (x *PatternFlowGtpExtensionContents_Choice) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[1031] +func (x *BgpV4EthernetSegment_ActiveMode) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[911] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -91414,34 +94095,34 @@ func (x *PatternFlowGtpExtensionContents_Choice) ProtoReflect() protoreflect.Mes return mi.MessageOf(x) } -// Deprecated: Use PatternFlowGtpExtensionContents_Choice.ProtoReflect.Descriptor instead. -func (*PatternFlowGtpExtensionContents_Choice) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{620, 0} +// Deprecated: Use BgpV4EthernetSegment_ActiveMode.ProtoReflect.Descriptor instead. +func (*BgpV4EthernetSegment_ActiveMode) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{64, 0} } -type PatternFlowGtpExtensionNextExtensionHeader_Choice struct { +type BgpRouteAdvanced_Origin struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields } -func (x *PatternFlowGtpExtensionNextExtensionHeader_Choice) Reset() { - *x = PatternFlowGtpExtensionNextExtensionHeader_Choice{} +func (x *BgpRouteAdvanced_Origin) Reset() { + *x = BgpRouteAdvanced_Origin{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[1032] + mi := &file_otg_proto_msgTypes[912] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowGtpExtensionNextExtensionHeader_Choice) String() string { +func (x *BgpRouteAdvanced_Origin) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowGtpExtensionNextExtensionHeader_Choice) ProtoMessage() {} +func (*BgpRouteAdvanced_Origin) ProtoMessage() {} -func (x *PatternFlowGtpExtensionNextExtensionHeader_Choice) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[1032] +func (x *BgpRouteAdvanced_Origin) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[912] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -91452,34 +94133,34 @@ func (x *PatternFlowGtpExtensionNextExtensionHeader_Choice) ProtoReflect() proto return mi.MessageOf(x) } -// Deprecated: Use PatternFlowGtpExtensionNextExtensionHeader_Choice.ProtoReflect.Descriptor instead. -func (*PatternFlowGtpExtensionNextExtensionHeader_Choice) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{623, 0} +// Deprecated: Use BgpRouteAdvanced_Origin.ProtoReflect.Descriptor instead. +func (*BgpRouteAdvanced_Origin) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{66, 0} } -type PatternFlowGtpv2Version_Choice struct { +type BgpCommunity_Type struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields } -func (x *PatternFlowGtpv2Version_Choice) Reset() { - *x = PatternFlowGtpv2Version_Choice{} +func (x *BgpCommunity_Type) Reset() { + *x = BgpCommunity_Type{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[1033] + mi := &file_otg_proto_msgTypes[913] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowGtpv2Version_Choice) String() string { +func (x *BgpCommunity_Type) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowGtpv2Version_Choice) ProtoMessage() {} +func (*BgpCommunity_Type) ProtoMessage() {} -func (x *PatternFlowGtpv2Version_Choice) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[1033] +func (x *BgpCommunity_Type) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[913] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -91490,34 +94171,34 @@ func (x *PatternFlowGtpv2Version_Choice) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use PatternFlowGtpv2Version_Choice.ProtoReflect.Descriptor instead. -func (*PatternFlowGtpv2Version_Choice) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{626, 0} +// Deprecated: Use BgpCommunity_Type.ProtoReflect.Descriptor instead. +func (*BgpCommunity_Type) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{67, 0} } -type PatternFlowGtpv2PiggybackingFlag_Choice struct { +type BgpExtCommunity_Type struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields } -func (x *PatternFlowGtpv2PiggybackingFlag_Choice) Reset() { - *x = PatternFlowGtpv2PiggybackingFlag_Choice{} +func (x *BgpExtCommunity_Type) Reset() { + *x = BgpExtCommunity_Type{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[1034] + mi := &file_otg_proto_msgTypes[914] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowGtpv2PiggybackingFlag_Choice) String() string { +func (x *BgpExtCommunity_Type) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowGtpv2PiggybackingFlag_Choice) ProtoMessage() {} +func (*BgpExtCommunity_Type) ProtoMessage() {} -func (x *PatternFlowGtpv2PiggybackingFlag_Choice) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[1034] +func (x *BgpExtCommunity_Type) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[914] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -91528,34 +94209,34 @@ func (x *PatternFlowGtpv2PiggybackingFlag_Choice) ProtoReflect() protoreflect.Me return mi.MessageOf(x) } -// Deprecated: Use PatternFlowGtpv2PiggybackingFlag_Choice.ProtoReflect.Descriptor instead. -func (*PatternFlowGtpv2PiggybackingFlag_Choice) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{629, 0} +// Deprecated: Use BgpExtCommunity_Type.ProtoReflect.Descriptor instead. +func (*BgpExtCommunity_Type) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{68, 0} } -type PatternFlowGtpv2TeidFlag_Choice struct { +type BgpExtCommunity_Subtype struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields } -func (x *PatternFlowGtpv2TeidFlag_Choice) Reset() { - *x = PatternFlowGtpv2TeidFlag_Choice{} +func (x *BgpExtCommunity_Subtype) Reset() { + *x = BgpExtCommunity_Subtype{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[1035] + mi := &file_otg_proto_msgTypes[915] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowGtpv2TeidFlag_Choice) String() string { +func (x *BgpExtCommunity_Subtype) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowGtpv2TeidFlag_Choice) ProtoMessage() {} +func (*BgpExtCommunity_Subtype) ProtoMessage() {} -func (x *PatternFlowGtpv2TeidFlag_Choice) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[1035] +func (x *BgpExtCommunity_Subtype) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[915] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -91566,34 +94247,34 @@ func (x *PatternFlowGtpv2TeidFlag_Choice) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use PatternFlowGtpv2TeidFlag_Choice.ProtoReflect.Descriptor instead. -func (*PatternFlowGtpv2TeidFlag_Choice) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{632, 0} +// Deprecated: Use BgpExtCommunity_Subtype.ProtoReflect.Descriptor instead. +func (*BgpExtCommunity_Subtype) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{68, 1} } -type PatternFlowGtpv2Spare1_Choice struct { +type BgpAsPath_AsSetMode struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields } -func (x *PatternFlowGtpv2Spare1_Choice) Reset() { - *x = PatternFlowGtpv2Spare1_Choice{} +func (x *BgpAsPath_AsSetMode) Reset() { + *x = BgpAsPath_AsSetMode{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[1036] + mi := &file_otg_proto_msgTypes[916] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowGtpv2Spare1_Choice) String() string { +func (x *BgpAsPath_AsSetMode) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowGtpv2Spare1_Choice) ProtoMessage() {} +func (*BgpAsPath_AsSetMode) ProtoMessage() {} -func (x *PatternFlowGtpv2Spare1_Choice) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[1036] +func (x *BgpAsPath_AsSetMode) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[916] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -91604,34 +94285,34 @@ func (x *PatternFlowGtpv2Spare1_Choice) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use PatternFlowGtpv2Spare1_Choice.ProtoReflect.Descriptor instead. -func (*PatternFlowGtpv2Spare1_Choice) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{635, 0} +// Deprecated: Use BgpAsPath_AsSetMode.ProtoReflect.Descriptor instead. +func (*BgpAsPath_AsSetMode) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{69, 0} } -type PatternFlowGtpv2MessageType_Choice struct { +type BgpAsPathSegment_Type struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields } -func (x *PatternFlowGtpv2MessageType_Choice) Reset() { - *x = PatternFlowGtpv2MessageType_Choice{} +func (x *BgpAsPathSegment_Type) Reset() { + *x = BgpAsPathSegment_Type{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[1037] + mi := &file_otg_proto_msgTypes[917] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowGtpv2MessageType_Choice) String() string { +func (x *BgpAsPathSegment_Type) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowGtpv2MessageType_Choice) ProtoMessage() {} +func (*BgpAsPathSegment_Type) ProtoMessage() {} -func (x *PatternFlowGtpv2MessageType_Choice) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[1037] +func (x *BgpAsPathSegment_Type) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[917] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -91642,34 +94323,34 @@ func (x *PatternFlowGtpv2MessageType_Choice) ProtoReflect() protoreflect.Message return mi.MessageOf(x) } -// Deprecated: Use PatternFlowGtpv2MessageType_Choice.ProtoReflect.Descriptor instead. -func (*PatternFlowGtpv2MessageType_Choice) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{638, 0} +// Deprecated: Use BgpAsPathSegment_Type.ProtoReflect.Descriptor instead. +func (*BgpAsPathSegment_Type) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{70, 0} } -type PatternFlowGtpv2MessageLength_Choice struct { +type BgpV4EvpnEvis_Choice struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields } -func (x *PatternFlowGtpv2MessageLength_Choice) Reset() { - *x = PatternFlowGtpv2MessageLength_Choice{} +func (x *BgpV4EvpnEvis_Choice) Reset() { + *x = BgpV4EvpnEvis_Choice{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[1038] + mi := &file_otg_proto_msgTypes[918] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowGtpv2MessageLength_Choice) String() string { +func (x *BgpV4EvpnEvis_Choice) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowGtpv2MessageLength_Choice) ProtoMessage() {} +func (*BgpV4EvpnEvis_Choice) ProtoMessage() {} -func (x *PatternFlowGtpv2MessageLength_Choice) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[1038] +func (x *BgpV4EvpnEvis_Choice) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[918] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -91680,34 +94361,34 @@ func (x *PatternFlowGtpv2MessageLength_Choice) ProtoReflect() protoreflect.Messa return mi.MessageOf(x) } -// Deprecated: Use PatternFlowGtpv2MessageLength_Choice.ProtoReflect.Descriptor instead. -func (*PatternFlowGtpv2MessageLength_Choice) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{641, 0} +// Deprecated: Use BgpV4EvpnEvis_Choice.ProtoReflect.Descriptor instead. +func (*BgpV4EvpnEvis_Choice) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{71, 0} } -type PatternFlowGtpv2Teid_Choice struct { +type BgpV4EviVxlan_ReplicationType struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields } -func (x *PatternFlowGtpv2Teid_Choice) Reset() { - *x = PatternFlowGtpv2Teid_Choice{} +func (x *BgpV4EviVxlan_ReplicationType) Reset() { + *x = BgpV4EviVxlan_ReplicationType{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[1039] + mi := &file_otg_proto_msgTypes[919] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowGtpv2Teid_Choice) String() string { +func (x *BgpV4EviVxlan_ReplicationType) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowGtpv2Teid_Choice) ProtoMessage() {} +func (*BgpV4EviVxlan_ReplicationType) ProtoMessage() {} -func (x *PatternFlowGtpv2Teid_Choice) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[1039] +func (x *BgpV4EviVxlan_ReplicationType) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[919] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -91718,34 +94399,34 @@ func (x *PatternFlowGtpv2Teid_Choice) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use PatternFlowGtpv2Teid_Choice.ProtoReflect.Descriptor instead. -func (*PatternFlowGtpv2Teid_Choice) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{644, 0} +// Deprecated: Use BgpV4EviVxlan_ReplicationType.ProtoReflect.Descriptor instead. +func (*BgpV4EviVxlan_ReplicationType) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{72, 0} } -type PatternFlowGtpv2SequenceNumber_Choice struct { +type BgpRouteDistinguisher_RdType struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields } -func (x *PatternFlowGtpv2SequenceNumber_Choice) Reset() { - *x = PatternFlowGtpv2SequenceNumber_Choice{} +func (x *BgpRouteDistinguisher_RdType) Reset() { + *x = BgpRouteDistinguisher_RdType{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[1040] + mi := &file_otg_proto_msgTypes[920] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowGtpv2SequenceNumber_Choice) String() string { +func (x *BgpRouteDistinguisher_RdType) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowGtpv2SequenceNumber_Choice) ProtoMessage() {} +func (*BgpRouteDistinguisher_RdType) ProtoMessage() {} -func (x *PatternFlowGtpv2SequenceNumber_Choice) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[1040] +func (x *BgpRouteDistinguisher_RdType) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[920] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -91756,34 +94437,34 @@ func (x *PatternFlowGtpv2SequenceNumber_Choice) ProtoReflect() protoreflect.Mess return mi.MessageOf(x) } -// Deprecated: Use PatternFlowGtpv2SequenceNumber_Choice.ProtoReflect.Descriptor instead. -func (*PatternFlowGtpv2SequenceNumber_Choice) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{647, 0} +// Deprecated: Use BgpRouteDistinguisher_RdType.ProtoReflect.Descriptor instead. +func (*BgpRouteDistinguisher_RdType) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{75, 0} } -type PatternFlowGtpv2Spare2_Choice struct { +type BgpRouteTarget_RtType struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields } -func (x *PatternFlowGtpv2Spare2_Choice) Reset() { - *x = PatternFlowGtpv2Spare2_Choice{} +func (x *BgpRouteTarget_RtType) Reset() { + *x = BgpRouteTarget_RtType{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[1041] + mi := &file_otg_proto_msgTypes[921] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowGtpv2Spare2_Choice) String() string { +func (x *BgpRouteTarget_RtType) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowGtpv2Spare2_Choice) ProtoMessage() {} +func (*BgpRouteTarget_RtType) ProtoMessage() {} -func (x *PatternFlowGtpv2Spare2_Choice) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[1041] +func (x *BgpRouteTarget_RtType) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[921] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -91794,34 +94475,34 @@ func (x *PatternFlowGtpv2Spare2_Choice) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use PatternFlowGtpv2Spare2_Choice.ProtoReflect.Descriptor instead. -func (*PatternFlowGtpv2Spare2_Choice) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{650, 0} +// Deprecated: Use BgpRouteTarget_RtType.ProtoReflect.Descriptor instead. +func (*BgpRouteTarget_RtType) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{76, 0} } -type PatternFlowArpHardwareType_Choice struct { +type BgpV4RouteRange_NextHopMode struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields } -func (x *PatternFlowArpHardwareType_Choice) Reset() { - *x = PatternFlowArpHardwareType_Choice{} +func (x *BgpV4RouteRange_NextHopMode) Reset() { + *x = BgpV4RouteRange_NextHopMode{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[1042] + mi := &file_otg_proto_msgTypes[922] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowArpHardwareType_Choice) String() string { +func (x *BgpV4RouteRange_NextHopMode) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowArpHardwareType_Choice) ProtoMessage() {} +func (*BgpV4RouteRange_NextHopMode) ProtoMessage() {} -func (x *PatternFlowArpHardwareType_Choice) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[1042] +func (x *BgpV4RouteRange_NextHopMode) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[922] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -91832,34 +94513,34 @@ func (x *PatternFlowArpHardwareType_Choice) ProtoReflect() protoreflect.Message return mi.MessageOf(x) } -// Deprecated: Use PatternFlowArpHardwareType_Choice.ProtoReflect.Descriptor instead. -func (*PatternFlowArpHardwareType_Choice) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{653, 0} +// Deprecated: Use BgpV4RouteRange_NextHopMode.ProtoReflect.Descriptor instead. +func (*BgpV4RouteRange_NextHopMode) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{80, 0} } -type PatternFlowArpProtocolType_Choice struct { +type BgpV4RouteRange_NextHopAddressType struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields } -func (x *PatternFlowArpProtocolType_Choice) Reset() { - *x = PatternFlowArpProtocolType_Choice{} +func (x *BgpV4RouteRange_NextHopAddressType) Reset() { + *x = BgpV4RouteRange_NextHopAddressType{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[1043] + mi := &file_otg_proto_msgTypes[923] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowArpProtocolType_Choice) String() string { +func (x *BgpV4RouteRange_NextHopAddressType) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowArpProtocolType_Choice) ProtoMessage() {} +func (*BgpV4RouteRange_NextHopAddressType) ProtoMessage() {} -func (x *PatternFlowArpProtocolType_Choice) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[1043] +func (x *BgpV4RouteRange_NextHopAddressType) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[923] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -91870,34 +94551,34 @@ func (x *PatternFlowArpProtocolType_Choice) ProtoReflect() protoreflect.Message return mi.MessageOf(x) } -// Deprecated: Use PatternFlowArpProtocolType_Choice.ProtoReflect.Descriptor instead. -func (*PatternFlowArpProtocolType_Choice) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{656, 0} +// Deprecated: Use BgpV4RouteRange_NextHopAddressType.ProtoReflect.Descriptor instead. +func (*BgpV4RouteRange_NextHopAddressType) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{80, 1} } -type PatternFlowArpHardwareLength_Choice struct { +type BgpExtendedCommunity_Choice struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields } -func (x *PatternFlowArpHardwareLength_Choice) Reset() { - *x = PatternFlowArpHardwareLength_Choice{} +func (x *BgpExtendedCommunity_Choice) Reset() { + *x = BgpExtendedCommunity_Choice{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[1044] + mi := &file_otg_proto_msgTypes[924] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowArpHardwareLength_Choice) String() string { +func (x *BgpExtendedCommunity_Choice) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowArpHardwareLength_Choice) ProtoMessage() {} +func (*BgpExtendedCommunity_Choice) ProtoMessage() {} -func (x *PatternFlowArpHardwareLength_Choice) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[1044] +func (x *BgpExtendedCommunity_Choice) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[924] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -91908,34 +94589,34 @@ func (x *PatternFlowArpHardwareLength_Choice) ProtoReflect() protoreflect.Messag return mi.MessageOf(x) } -// Deprecated: Use PatternFlowArpHardwareLength_Choice.ProtoReflect.Descriptor instead. -func (*PatternFlowArpHardwareLength_Choice) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{659, 0} +// Deprecated: Use BgpExtendedCommunity_Choice.ProtoReflect.Descriptor instead. +func (*BgpExtendedCommunity_Choice) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{82, 0} } -type PatternFlowArpProtocolLength_Choice struct { +type BgpExtendedCommunityTransitive2OctetAsType_Choice struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields } -func (x *PatternFlowArpProtocolLength_Choice) Reset() { - *x = PatternFlowArpProtocolLength_Choice{} +func (x *BgpExtendedCommunityTransitive2OctetAsType_Choice) Reset() { + *x = BgpExtendedCommunityTransitive2OctetAsType_Choice{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[1045] + mi := &file_otg_proto_msgTypes[925] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowArpProtocolLength_Choice) String() string { +func (x *BgpExtendedCommunityTransitive2OctetAsType_Choice) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowArpProtocolLength_Choice) ProtoMessage() {} +func (*BgpExtendedCommunityTransitive2OctetAsType_Choice) ProtoMessage() {} -func (x *PatternFlowArpProtocolLength_Choice) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[1045] +func (x *BgpExtendedCommunityTransitive2OctetAsType_Choice) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[925] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -91946,34 +94627,34 @@ func (x *PatternFlowArpProtocolLength_Choice) ProtoReflect() protoreflect.Messag return mi.MessageOf(x) } -// Deprecated: Use PatternFlowArpProtocolLength_Choice.ProtoReflect.Descriptor instead. -func (*PatternFlowArpProtocolLength_Choice) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{662, 0} +// Deprecated: Use BgpExtendedCommunityTransitive2OctetAsType_Choice.ProtoReflect.Descriptor instead. +func (*BgpExtendedCommunityTransitive2OctetAsType_Choice) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{85, 0} } -type PatternFlowArpOperation_Choice struct { +type BgpExtendedCommunityTransitiveIpv4AddressType_Choice struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields } -func (x *PatternFlowArpOperation_Choice) Reset() { - *x = PatternFlowArpOperation_Choice{} +func (x *BgpExtendedCommunityTransitiveIpv4AddressType_Choice) Reset() { + *x = BgpExtendedCommunityTransitiveIpv4AddressType_Choice{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[1046] + mi := &file_otg_proto_msgTypes[926] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowArpOperation_Choice) String() string { +func (x *BgpExtendedCommunityTransitiveIpv4AddressType_Choice) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowArpOperation_Choice) ProtoMessage() {} +func (*BgpExtendedCommunityTransitiveIpv4AddressType_Choice) ProtoMessage() {} -func (x *PatternFlowArpOperation_Choice) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[1046] +func (x *BgpExtendedCommunityTransitiveIpv4AddressType_Choice) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[926] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -91984,34 +94665,34 @@ func (x *PatternFlowArpOperation_Choice) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use PatternFlowArpOperation_Choice.ProtoReflect.Descriptor instead. -func (*PatternFlowArpOperation_Choice) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{665, 0} +// Deprecated: Use BgpExtendedCommunityTransitiveIpv4AddressType_Choice.ProtoReflect.Descriptor instead. +func (*BgpExtendedCommunityTransitiveIpv4AddressType_Choice) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{88, 0} } -type PatternFlowArpSenderHardwareAddr_Choice struct { +type BgpExtendedCommunityTransitive4OctetAsType_Choice struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields } -func (x *PatternFlowArpSenderHardwareAddr_Choice) Reset() { - *x = PatternFlowArpSenderHardwareAddr_Choice{} +func (x *BgpExtendedCommunityTransitive4OctetAsType_Choice) Reset() { + *x = BgpExtendedCommunityTransitive4OctetAsType_Choice{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[1047] + mi := &file_otg_proto_msgTypes[927] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowArpSenderHardwareAddr_Choice) String() string { +func (x *BgpExtendedCommunityTransitive4OctetAsType_Choice) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowArpSenderHardwareAddr_Choice) ProtoMessage() {} +func (*BgpExtendedCommunityTransitive4OctetAsType_Choice) ProtoMessage() {} -func (x *PatternFlowArpSenderHardwareAddr_Choice) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[1047] +func (x *BgpExtendedCommunityTransitive4OctetAsType_Choice) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[927] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -92022,34 +94703,34 @@ func (x *PatternFlowArpSenderHardwareAddr_Choice) ProtoReflect() protoreflect.Me return mi.MessageOf(x) } -// Deprecated: Use PatternFlowArpSenderHardwareAddr_Choice.ProtoReflect.Descriptor instead. -func (*PatternFlowArpSenderHardwareAddr_Choice) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{668, 0} +// Deprecated: Use BgpExtendedCommunityTransitive4OctetAsType_Choice.ProtoReflect.Descriptor instead. +func (*BgpExtendedCommunityTransitive4OctetAsType_Choice) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{91, 0} } -type PatternFlowArpSenderProtocolAddr_Choice struct { +type BgpExtendedCommunityTransitiveOpaqueType_Choice struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields } -func (x *PatternFlowArpSenderProtocolAddr_Choice) Reset() { - *x = PatternFlowArpSenderProtocolAddr_Choice{} +func (x *BgpExtendedCommunityTransitiveOpaqueType_Choice) Reset() { + *x = BgpExtendedCommunityTransitiveOpaqueType_Choice{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[1048] + mi := &file_otg_proto_msgTypes[928] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowArpSenderProtocolAddr_Choice) String() string { +func (x *BgpExtendedCommunityTransitiveOpaqueType_Choice) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowArpSenderProtocolAddr_Choice) ProtoMessage() {} +func (*BgpExtendedCommunityTransitiveOpaqueType_Choice) ProtoMessage() {} -func (x *PatternFlowArpSenderProtocolAddr_Choice) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[1048] +func (x *BgpExtendedCommunityTransitiveOpaqueType_Choice) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[928] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -92060,34 +94741,34 @@ func (x *PatternFlowArpSenderProtocolAddr_Choice) ProtoReflect() protoreflect.Me return mi.MessageOf(x) } -// Deprecated: Use PatternFlowArpSenderProtocolAddr_Choice.ProtoReflect.Descriptor instead. -func (*PatternFlowArpSenderProtocolAddr_Choice) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{671, 0} +// Deprecated: Use BgpExtendedCommunityTransitiveOpaqueType_Choice.ProtoReflect.Descriptor instead. +func (*BgpExtendedCommunityTransitiveOpaqueType_Choice) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{94, 0} } -type PatternFlowArpTargetHardwareAddr_Choice struct { +type BgpExtendedCommunityTransitiveEvpnType_Choice struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields } -func (x *PatternFlowArpTargetHardwareAddr_Choice) Reset() { - *x = PatternFlowArpTargetHardwareAddr_Choice{} +func (x *BgpExtendedCommunityTransitiveEvpnType_Choice) Reset() { + *x = BgpExtendedCommunityTransitiveEvpnType_Choice{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[1049] + mi := &file_otg_proto_msgTypes[929] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowArpTargetHardwareAddr_Choice) String() string { +func (x *BgpExtendedCommunityTransitiveEvpnType_Choice) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowArpTargetHardwareAddr_Choice) ProtoMessage() {} +func (*BgpExtendedCommunityTransitiveEvpnType_Choice) ProtoMessage() {} -func (x *PatternFlowArpTargetHardwareAddr_Choice) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[1049] +func (x *BgpExtendedCommunityTransitiveEvpnType_Choice) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[929] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -92098,34 +94779,34 @@ func (x *PatternFlowArpTargetHardwareAddr_Choice) ProtoReflect() protoreflect.Me return mi.MessageOf(x) } -// Deprecated: Use PatternFlowArpTargetHardwareAddr_Choice.ProtoReflect.Descriptor instead. -func (*PatternFlowArpTargetHardwareAddr_Choice) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{674, 0} +// Deprecated: Use BgpExtendedCommunityTransitiveEvpnType_Choice.ProtoReflect.Descriptor instead. +func (*BgpExtendedCommunityTransitiveEvpnType_Choice) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{96, 0} } -type PatternFlowArpTargetProtocolAddr_Choice struct { +type BgpExtendedCommunityNonTransitive2OctetAsType_Choice struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields } -func (x *PatternFlowArpTargetProtocolAddr_Choice) Reset() { - *x = PatternFlowArpTargetProtocolAddr_Choice{} +func (x *BgpExtendedCommunityNonTransitive2OctetAsType_Choice) Reset() { + *x = BgpExtendedCommunityNonTransitive2OctetAsType_Choice{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[1050] + mi := &file_otg_proto_msgTypes[930] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowArpTargetProtocolAddr_Choice) String() string { +func (x *BgpExtendedCommunityNonTransitive2OctetAsType_Choice) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowArpTargetProtocolAddr_Choice) ProtoMessage() {} +func (*BgpExtendedCommunityNonTransitive2OctetAsType_Choice) ProtoMessage() {} -func (x *PatternFlowArpTargetProtocolAddr_Choice) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[1050] +func (x *BgpExtendedCommunityNonTransitive2OctetAsType_Choice) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[930] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -92136,34 +94817,34 @@ func (x *PatternFlowArpTargetProtocolAddr_Choice) ProtoReflect() protoreflect.Me return mi.MessageOf(x) } -// Deprecated: Use PatternFlowArpTargetProtocolAddr_Choice.ProtoReflect.Descriptor instead. -func (*PatternFlowArpTargetProtocolAddr_Choice) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{677, 0} +// Deprecated: Use BgpExtendedCommunityNonTransitive2OctetAsType_Choice.ProtoReflect.Descriptor instead. +func (*BgpExtendedCommunityNonTransitive2OctetAsType_Choice) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{98, 0} } -type PatternFlowIcmpEchoType_Choice struct { +type BgpV6RouteRange_NextHopMode struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields } -func (x *PatternFlowIcmpEchoType_Choice) Reset() { - *x = PatternFlowIcmpEchoType_Choice{} +func (x *BgpV6RouteRange_NextHopMode) Reset() { + *x = BgpV6RouteRange_NextHopMode{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[1051] + mi := &file_otg_proto_msgTypes[931] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowIcmpEchoType_Choice) String() string { +func (x *BgpV6RouteRange_NextHopMode) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowIcmpEchoType_Choice) ProtoMessage() {} +func (*BgpV6RouteRange_NextHopMode) ProtoMessage() {} -func (x *PatternFlowIcmpEchoType_Choice) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[1051] +func (x *BgpV6RouteRange_NextHopMode) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[931] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -92174,34 +94855,34 @@ func (x *PatternFlowIcmpEchoType_Choice) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use PatternFlowIcmpEchoType_Choice.ProtoReflect.Descriptor instead. -func (*PatternFlowIcmpEchoType_Choice) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{680, 0} +// Deprecated: Use BgpV6RouteRange_NextHopMode.ProtoReflect.Descriptor instead. +func (*BgpV6RouteRange_NextHopMode) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{100, 0} } -type PatternFlowIcmpEchoCode_Choice struct { +type BgpV6RouteRange_NextHopAddressType struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields } -func (x *PatternFlowIcmpEchoCode_Choice) Reset() { - *x = PatternFlowIcmpEchoCode_Choice{} +func (x *BgpV6RouteRange_NextHopAddressType) Reset() { + *x = BgpV6RouteRange_NextHopAddressType{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[1052] + mi := &file_otg_proto_msgTypes[932] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowIcmpEchoCode_Choice) String() string { +func (x *BgpV6RouteRange_NextHopAddressType) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowIcmpEchoCode_Choice) ProtoMessage() {} +func (*BgpV6RouteRange_NextHopAddressType) ProtoMessage() {} -func (x *PatternFlowIcmpEchoCode_Choice) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[1052] +func (x *BgpV6RouteRange_NextHopAddressType) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[932] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -92212,34 +94893,34 @@ func (x *PatternFlowIcmpEchoCode_Choice) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use PatternFlowIcmpEchoCode_Choice.ProtoReflect.Descriptor instead. -func (*PatternFlowIcmpEchoCode_Choice) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{683, 0} +// Deprecated: Use BgpV6RouteRange_NextHopAddressType.ProtoReflect.Descriptor instead. +func (*BgpV6RouteRange_NextHopAddressType) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{100, 1} } -type PatternFlowIcmpEchoChecksum_Choice struct { +type BgpSrteV4Policy_NextHopMode struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields } -func (x *PatternFlowIcmpEchoChecksum_Choice) Reset() { - *x = PatternFlowIcmpEchoChecksum_Choice{} +func (x *BgpSrteV4Policy_NextHopMode) Reset() { + *x = BgpSrteV4Policy_NextHopMode{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[1053] + mi := &file_otg_proto_msgTypes[933] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowIcmpEchoChecksum_Choice) String() string { +func (x *BgpSrteV4Policy_NextHopMode) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowIcmpEchoChecksum_Choice) ProtoMessage() {} +func (*BgpSrteV4Policy_NextHopMode) ProtoMessage() {} -func (x *PatternFlowIcmpEchoChecksum_Choice) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[1053] +func (x *BgpSrteV4Policy_NextHopMode) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[933] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -92250,34 +94931,34 @@ func (x *PatternFlowIcmpEchoChecksum_Choice) ProtoReflect() protoreflect.Message return mi.MessageOf(x) } -// Deprecated: Use PatternFlowIcmpEchoChecksum_Choice.ProtoReflect.Descriptor instead. -func (*PatternFlowIcmpEchoChecksum_Choice) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{684, 0} +// Deprecated: Use BgpSrteV4Policy_NextHopMode.ProtoReflect.Descriptor instead. +func (*BgpSrteV4Policy_NextHopMode) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{101, 0} } -type PatternFlowIcmpEchoChecksum_Generated struct { +type BgpSrteV4Policy_NextHopAddressType struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields } -func (x *PatternFlowIcmpEchoChecksum_Generated) Reset() { - *x = PatternFlowIcmpEchoChecksum_Generated{} +func (x *BgpSrteV4Policy_NextHopAddressType) Reset() { + *x = BgpSrteV4Policy_NextHopAddressType{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[1054] + mi := &file_otg_proto_msgTypes[934] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowIcmpEchoChecksum_Generated) String() string { +func (x *BgpSrteV4Policy_NextHopAddressType) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowIcmpEchoChecksum_Generated) ProtoMessage() {} +func (*BgpSrteV4Policy_NextHopAddressType) ProtoMessage() {} -func (x *PatternFlowIcmpEchoChecksum_Generated) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[1054] +func (x *BgpSrteV4Policy_NextHopAddressType) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[934] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -92288,34 +94969,34 @@ func (x *PatternFlowIcmpEchoChecksum_Generated) ProtoReflect() protoreflect.Mess return mi.MessageOf(x) } -// Deprecated: Use PatternFlowIcmpEchoChecksum_Generated.ProtoReflect.Descriptor instead. -func (*PatternFlowIcmpEchoChecksum_Generated) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{684, 1} +// Deprecated: Use BgpSrteV4Policy_NextHopAddressType.ProtoReflect.Descriptor instead. +func (*BgpSrteV4Policy_NextHopAddressType) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{101, 1} } -type PatternFlowIcmpEchoIdentifier_Choice struct { +type BgpSrteRemoteEndpointSubTlv_AddressFamily struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields } -func (x *PatternFlowIcmpEchoIdentifier_Choice) Reset() { - *x = PatternFlowIcmpEchoIdentifier_Choice{} +func (x *BgpSrteRemoteEndpointSubTlv_AddressFamily) Reset() { + *x = BgpSrteRemoteEndpointSubTlv_AddressFamily{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[1055] + mi := &file_otg_proto_msgTypes[935] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowIcmpEchoIdentifier_Choice) String() string { +func (x *BgpSrteRemoteEndpointSubTlv_AddressFamily) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowIcmpEchoIdentifier_Choice) ProtoMessage() {} +func (*BgpSrteRemoteEndpointSubTlv_AddressFamily) ProtoMessage() {} -func (x *PatternFlowIcmpEchoIdentifier_Choice) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[1055] +func (x *BgpSrteRemoteEndpointSubTlv_AddressFamily) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[935] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -92326,34 +95007,34 @@ func (x *PatternFlowIcmpEchoIdentifier_Choice) ProtoReflect() protoreflect.Messa return mi.MessageOf(x) } -// Deprecated: Use PatternFlowIcmpEchoIdentifier_Choice.ProtoReflect.Descriptor instead. -func (*PatternFlowIcmpEchoIdentifier_Choice) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{687, 0} +// Deprecated: Use BgpSrteRemoteEndpointSubTlv_AddressFamily.ProtoReflect.Descriptor instead. +func (*BgpSrteRemoteEndpointSubTlv_AddressFamily) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{103, 0} } -type PatternFlowIcmpEchoSequenceNumber_Choice struct { +type BgpSrteBindingSubTlv_BindingSidType struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields } -func (x *PatternFlowIcmpEchoSequenceNumber_Choice) Reset() { - *x = PatternFlowIcmpEchoSequenceNumber_Choice{} +func (x *BgpSrteBindingSubTlv_BindingSidType) Reset() { + *x = BgpSrteBindingSubTlv_BindingSidType{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[1056] + mi := &file_otg_proto_msgTypes[936] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowIcmpEchoSequenceNumber_Choice) String() string { +func (x *BgpSrteBindingSubTlv_BindingSidType) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowIcmpEchoSequenceNumber_Choice) ProtoMessage() {} +func (*BgpSrteBindingSubTlv_BindingSidType) ProtoMessage() {} -func (x *PatternFlowIcmpEchoSequenceNumber_Choice) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[1056] +func (x *BgpSrteBindingSubTlv_BindingSidType) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[936] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -92364,34 +95045,34 @@ func (x *PatternFlowIcmpEchoSequenceNumber_Choice) ProtoReflect() protoreflect.M return mi.MessageOf(x) } -// Deprecated: Use PatternFlowIcmpEchoSequenceNumber_Choice.ProtoReflect.Descriptor instead. -func (*PatternFlowIcmpEchoSequenceNumber_Choice) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{690, 0} +// Deprecated: Use BgpSrteBindingSubTlv_BindingSidType.ProtoReflect.Descriptor instead. +func (*BgpSrteBindingSubTlv_BindingSidType) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{105, 0} } -type PatternFlowIcmpCommonChecksum_Choice struct { +type BgpSrteExplicitNullLabelPolicySubTlv_ExplicitNullLabelPolicy struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields } -func (x *PatternFlowIcmpCommonChecksum_Choice) Reset() { - *x = PatternFlowIcmpCommonChecksum_Choice{} +func (x *BgpSrteExplicitNullLabelPolicySubTlv_ExplicitNullLabelPolicy) Reset() { + *x = BgpSrteExplicitNullLabelPolicySubTlv_ExplicitNullLabelPolicy{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[1057] + mi := &file_otg_proto_msgTypes[937] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowIcmpCommonChecksum_Choice) String() string { +func (x *BgpSrteExplicitNullLabelPolicySubTlv_ExplicitNullLabelPolicy) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowIcmpCommonChecksum_Choice) ProtoMessage() {} +func (*BgpSrteExplicitNullLabelPolicySubTlv_ExplicitNullLabelPolicy) ProtoMessage() {} -func (x *PatternFlowIcmpCommonChecksum_Choice) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[1057] +func (x *BgpSrteExplicitNullLabelPolicySubTlv_ExplicitNullLabelPolicy) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[937] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -92402,34 +95083,34 @@ func (x *PatternFlowIcmpCommonChecksum_Choice) ProtoReflect() protoreflect.Messa return mi.MessageOf(x) } -// Deprecated: Use PatternFlowIcmpCommonChecksum_Choice.ProtoReflect.Descriptor instead. -func (*PatternFlowIcmpCommonChecksum_Choice) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{691, 0} +// Deprecated: Use BgpSrteExplicitNullLabelPolicySubTlv_ExplicitNullLabelPolicy.ProtoReflect.Descriptor instead. +func (*BgpSrteExplicitNullLabelPolicySubTlv_ExplicitNullLabelPolicy) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{109, 0} } -type PatternFlowIcmpCommonChecksum_Generated struct { +type BgpSrteSegment_SegmentType struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields } -func (x *PatternFlowIcmpCommonChecksum_Generated) Reset() { - *x = PatternFlowIcmpCommonChecksum_Generated{} +func (x *BgpSrteSegment_SegmentType) Reset() { + *x = BgpSrteSegment_SegmentType{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[1058] + mi := &file_otg_proto_msgTypes[938] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowIcmpCommonChecksum_Generated) String() string { +func (x *BgpSrteSegment_SegmentType) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowIcmpCommonChecksum_Generated) ProtoMessage() {} +func (*BgpSrteSegment_SegmentType) ProtoMessage() {} -func (x *PatternFlowIcmpCommonChecksum_Generated) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[1058] +func (x *BgpSrteSegment_SegmentType) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[938] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -92440,34 +95121,34 @@ func (x *PatternFlowIcmpCommonChecksum_Generated) ProtoReflect() protoreflect.Me return mi.MessageOf(x) } -// Deprecated: Use PatternFlowIcmpCommonChecksum_Generated.ProtoReflect.Descriptor instead. -func (*PatternFlowIcmpCommonChecksum_Generated) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{691, 1} +// Deprecated: Use BgpSrteSegment_SegmentType.ProtoReflect.Descriptor instead. +func (*BgpSrteSegment_SegmentType) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{111, 0} } -type PatternFlowIcmpNextFieldsIdentifier_Choice struct { +type BgpSrteV6Policy_NextHopMode struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields } -func (x *PatternFlowIcmpNextFieldsIdentifier_Choice) Reset() { - *x = PatternFlowIcmpNextFieldsIdentifier_Choice{} +func (x *BgpSrteV6Policy_NextHopMode) Reset() { + *x = BgpSrteV6Policy_NextHopMode{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[1059] + mi := &file_otg_proto_msgTypes[939] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowIcmpNextFieldsIdentifier_Choice) String() string { +func (x *BgpSrteV6Policy_NextHopMode) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowIcmpNextFieldsIdentifier_Choice) ProtoMessage() {} +func (*BgpSrteV6Policy_NextHopMode) ProtoMessage() {} -func (x *PatternFlowIcmpNextFieldsIdentifier_Choice) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[1059] +func (x *BgpSrteV6Policy_NextHopMode) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[939] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -92478,34 +95159,34 @@ func (x *PatternFlowIcmpNextFieldsIdentifier_Choice) ProtoReflect() protoreflect return mi.MessageOf(x) } -// Deprecated: Use PatternFlowIcmpNextFieldsIdentifier_Choice.ProtoReflect.Descriptor instead. -func (*PatternFlowIcmpNextFieldsIdentifier_Choice) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{694, 0} +// Deprecated: Use BgpSrteV6Policy_NextHopMode.ProtoReflect.Descriptor instead. +func (*BgpSrteV6Policy_NextHopMode) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{125, 0} } -type PatternFlowIcmpNextFieldsSequenceNumber_Choice struct { +type BgpSrteV6Policy_NextHopAddressType struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields } -func (x *PatternFlowIcmpNextFieldsSequenceNumber_Choice) Reset() { - *x = PatternFlowIcmpNextFieldsSequenceNumber_Choice{} +func (x *BgpSrteV6Policy_NextHopAddressType) Reset() { + *x = BgpSrteV6Policy_NextHopAddressType{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[1060] + mi := &file_otg_proto_msgTypes[940] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowIcmpNextFieldsSequenceNumber_Choice) String() string { +func (x *BgpSrteV6Policy_NextHopAddressType) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowIcmpNextFieldsSequenceNumber_Choice) ProtoMessage() {} +func (*BgpSrteV6Policy_NextHopAddressType) ProtoMessage() {} -func (x *PatternFlowIcmpNextFieldsSequenceNumber_Choice) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[1060] +func (x *BgpSrteV6Policy_NextHopAddressType) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[940] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -92516,34 +95197,34 @@ func (x *PatternFlowIcmpNextFieldsSequenceNumber_Choice) ProtoReflect() protoref return mi.MessageOf(x) } -// Deprecated: Use PatternFlowIcmpNextFieldsSequenceNumber_Choice.ProtoReflect.Descriptor instead. -func (*PatternFlowIcmpNextFieldsSequenceNumber_Choice) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{697, 0} +// Deprecated: Use BgpSrteV6Policy_NextHopAddressType.ProtoReflect.Descriptor instead. +func (*BgpSrteV6Policy_NextHopAddressType) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{125, 1} } -type PatternFlowIcmpv6EchoType_Choice struct { +type BgpV6Peer_AsType struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields } -func (x *PatternFlowIcmpv6EchoType_Choice) Reset() { - *x = PatternFlowIcmpv6EchoType_Choice{} +func (x *BgpV6Peer_AsType) Reset() { + *x = BgpV6Peer_AsType{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[1061] + mi := &file_otg_proto_msgTypes[941] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowIcmpv6EchoType_Choice) String() string { +func (x *BgpV6Peer_AsType) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowIcmpv6EchoType_Choice) ProtoMessage() {} +func (*BgpV6Peer_AsType) ProtoMessage() {} -func (x *PatternFlowIcmpv6EchoType_Choice) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[1061] +func (x *BgpV6Peer_AsType) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[941] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -92554,34 +95235,34 @@ func (x *PatternFlowIcmpv6EchoType_Choice) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use PatternFlowIcmpv6EchoType_Choice.ProtoReflect.Descriptor instead. -func (*PatternFlowIcmpv6EchoType_Choice) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{700, 0} +// Deprecated: Use BgpV6Peer_AsType.ProtoReflect.Descriptor instead. +func (*BgpV6Peer_AsType) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{128, 0} } -type PatternFlowIcmpv6EchoCode_Choice struct { +type BgpV6Peer_AsNumberWidth struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields } -func (x *PatternFlowIcmpv6EchoCode_Choice) Reset() { - *x = PatternFlowIcmpv6EchoCode_Choice{} +func (x *BgpV6Peer_AsNumberWidth) Reset() { + *x = BgpV6Peer_AsNumberWidth{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[1062] + mi := &file_otg_proto_msgTypes[942] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowIcmpv6EchoCode_Choice) String() string { +func (x *BgpV6Peer_AsNumberWidth) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowIcmpv6EchoCode_Choice) ProtoMessage() {} +func (*BgpV6Peer_AsNumberWidth) ProtoMessage() {} -func (x *PatternFlowIcmpv6EchoCode_Choice) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[1062] +func (x *BgpV6Peer_AsNumberWidth) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[942] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -92592,34 +95273,34 @@ func (x *PatternFlowIcmpv6EchoCode_Choice) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use PatternFlowIcmpv6EchoCode_Choice.ProtoReflect.Descriptor instead. -func (*PatternFlowIcmpv6EchoCode_Choice) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{703, 0} +// Deprecated: Use BgpV6Peer_AsNumberWidth.ProtoReflect.Descriptor instead. +func (*BgpV6Peer_AsNumberWidth) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{128, 1} } -type PatternFlowIcmpv6EchoIdentifier_Choice struct { +type BgpV6EthernetSegment_ActiveMode struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields } -func (x *PatternFlowIcmpv6EchoIdentifier_Choice) Reset() { - *x = PatternFlowIcmpv6EchoIdentifier_Choice{} +func (x *BgpV6EthernetSegment_ActiveMode) Reset() { + *x = BgpV6EthernetSegment_ActiveMode{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[1063] + mi := &file_otg_proto_msgTypes[943] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowIcmpv6EchoIdentifier_Choice) String() string { +func (x *BgpV6EthernetSegment_ActiveMode) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowIcmpv6EchoIdentifier_Choice) ProtoMessage() {} +func (*BgpV6EthernetSegment_ActiveMode) ProtoMessage() {} -func (x *PatternFlowIcmpv6EchoIdentifier_Choice) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[1063] +func (x *BgpV6EthernetSegment_ActiveMode) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[943] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -92630,34 +95311,34 @@ func (x *PatternFlowIcmpv6EchoIdentifier_Choice) ProtoReflect() protoreflect.Mes return mi.MessageOf(x) } -// Deprecated: Use PatternFlowIcmpv6EchoIdentifier_Choice.ProtoReflect.Descriptor instead. -func (*PatternFlowIcmpv6EchoIdentifier_Choice) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{706, 0} +// Deprecated: Use BgpV6EthernetSegment_ActiveMode.ProtoReflect.Descriptor instead. +func (*BgpV6EthernetSegment_ActiveMode) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{131, 0} } -type PatternFlowIcmpv6EchoSequenceNumber_Choice struct { +type BgpV6EvpnEvis_Choice struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields } -func (x *PatternFlowIcmpv6EchoSequenceNumber_Choice) Reset() { - *x = PatternFlowIcmpv6EchoSequenceNumber_Choice{} +func (x *BgpV6EvpnEvis_Choice) Reset() { + *x = BgpV6EvpnEvis_Choice{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[1064] + mi := &file_otg_proto_msgTypes[944] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowIcmpv6EchoSequenceNumber_Choice) String() string { +func (x *BgpV6EvpnEvis_Choice) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowIcmpv6EchoSequenceNumber_Choice) ProtoMessage() {} +func (*BgpV6EvpnEvis_Choice) ProtoMessage() {} -func (x *PatternFlowIcmpv6EchoSequenceNumber_Choice) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[1064] +func (x *BgpV6EvpnEvis_Choice) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[944] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -92668,34 +95349,34 @@ func (x *PatternFlowIcmpv6EchoSequenceNumber_Choice) ProtoReflect() protoreflect return mi.MessageOf(x) } -// Deprecated: Use PatternFlowIcmpv6EchoSequenceNumber_Choice.ProtoReflect.Descriptor instead. -func (*PatternFlowIcmpv6EchoSequenceNumber_Choice) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{709, 0} +// Deprecated: Use BgpV6EvpnEvis_Choice.ProtoReflect.Descriptor instead. +func (*BgpV6EvpnEvis_Choice) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{132, 0} } -type PatternFlowIcmpv6EchoChecksum_Choice struct { +type BgpV6EviVxlan_ReplicationType struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields } -func (x *PatternFlowIcmpv6EchoChecksum_Choice) Reset() { - *x = PatternFlowIcmpv6EchoChecksum_Choice{} +func (x *BgpV6EviVxlan_ReplicationType) Reset() { + *x = BgpV6EviVxlan_ReplicationType{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[1065] + mi := &file_otg_proto_msgTypes[945] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowIcmpv6EchoChecksum_Choice) String() string { +func (x *BgpV6EviVxlan_ReplicationType) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowIcmpv6EchoChecksum_Choice) ProtoMessage() {} +func (*BgpV6EviVxlan_ReplicationType) ProtoMessage() {} -func (x *PatternFlowIcmpv6EchoChecksum_Choice) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[1065] +func (x *BgpV6EviVxlan_ReplicationType) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[945] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -92706,34 +95387,34 @@ func (x *PatternFlowIcmpv6EchoChecksum_Choice) ProtoReflect() protoreflect.Messa return mi.MessageOf(x) } -// Deprecated: Use PatternFlowIcmpv6EchoChecksum_Choice.ProtoReflect.Descriptor instead. -func (*PatternFlowIcmpv6EchoChecksum_Choice) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{710, 0} +// Deprecated: Use BgpV6EviVxlan_ReplicationType.ProtoReflect.Descriptor instead. +func (*BgpV6EviVxlan_ReplicationType) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{133, 0} } -type PatternFlowIcmpv6EchoChecksum_Generated struct { +type VxlanV4TunnelDestinationIPMode_Choice struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields } -func (x *PatternFlowIcmpv6EchoChecksum_Generated) Reset() { - *x = PatternFlowIcmpv6EchoChecksum_Generated{} +func (x *VxlanV4TunnelDestinationIPMode_Choice) Reset() { + *x = VxlanV4TunnelDestinationIPMode_Choice{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[1066] + mi := &file_otg_proto_msgTypes[946] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowIcmpv6EchoChecksum_Generated) String() string { +func (x *VxlanV4TunnelDestinationIPMode_Choice) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowIcmpv6EchoChecksum_Generated) ProtoMessage() {} +func (*VxlanV4TunnelDestinationIPMode_Choice) ProtoMessage() {} -func (x *PatternFlowIcmpv6EchoChecksum_Generated) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[1066] +func (x *VxlanV4TunnelDestinationIPMode_Choice) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[946] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -92744,34 +95425,34 @@ func (x *PatternFlowIcmpv6EchoChecksum_Generated) ProtoReflect() protoreflect.Me return mi.MessageOf(x) } -// Deprecated: Use PatternFlowIcmpv6EchoChecksum_Generated.ProtoReflect.Descriptor instead. -func (*PatternFlowIcmpv6EchoChecksum_Generated) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{710, 1} +// Deprecated: Use VxlanV4TunnelDestinationIPMode_Choice.ProtoReflect.Descriptor instead. +func (*VxlanV4TunnelDestinationIPMode_Choice) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{138, 0} } -type PatternFlowIcmpv6CommonChecksum_Choice struct { +type VxlanV6TunnelDestinationIPMode_Choice struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields } -func (x *PatternFlowIcmpv6CommonChecksum_Choice) Reset() { - *x = PatternFlowIcmpv6CommonChecksum_Choice{} +func (x *VxlanV6TunnelDestinationIPMode_Choice) Reset() { + *x = VxlanV6TunnelDestinationIPMode_Choice{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[1067] + mi := &file_otg_proto_msgTypes[947] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowIcmpv6CommonChecksum_Choice) String() string { +func (x *VxlanV6TunnelDestinationIPMode_Choice) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowIcmpv6CommonChecksum_Choice) ProtoMessage() {} +func (*VxlanV6TunnelDestinationIPMode_Choice) ProtoMessage() {} -func (x *PatternFlowIcmpv6CommonChecksum_Choice) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[1067] +func (x *VxlanV6TunnelDestinationIPMode_Choice) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[947] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -92782,34 +95463,34 @@ func (x *PatternFlowIcmpv6CommonChecksum_Choice) ProtoReflect() protoreflect.Mes return mi.MessageOf(x) } -// Deprecated: Use PatternFlowIcmpv6CommonChecksum_Choice.ProtoReflect.Descriptor instead. -func (*PatternFlowIcmpv6CommonChecksum_Choice) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{711, 0} +// Deprecated: Use VxlanV6TunnelDestinationIPMode_Choice.ProtoReflect.Descriptor instead. +func (*VxlanV6TunnelDestinationIPMode_Choice) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{139, 0} } -type PatternFlowIcmpv6CommonChecksum_Generated struct { +type RsvpLspIpv4InterfaceP2PEgressIpv4Lsp_ReservationStyle struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields } -func (x *PatternFlowIcmpv6CommonChecksum_Generated) Reset() { - *x = PatternFlowIcmpv6CommonChecksum_Generated{} +func (x *RsvpLspIpv4InterfaceP2PEgressIpv4Lsp_ReservationStyle) Reset() { + *x = RsvpLspIpv4InterfaceP2PEgressIpv4Lsp_ReservationStyle{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[1068] + mi := &file_otg_proto_msgTypes[948] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowIcmpv6CommonChecksum_Generated) String() string { +func (x *RsvpLspIpv4InterfaceP2PEgressIpv4Lsp_ReservationStyle) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowIcmpv6CommonChecksum_Generated) ProtoMessage() {} +func (*RsvpLspIpv4InterfaceP2PEgressIpv4Lsp_ReservationStyle) ProtoMessage() {} -func (x *PatternFlowIcmpv6CommonChecksum_Generated) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[1068] +func (x *RsvpLspIpv4InterfaceP2PEgressIpv4Lsp_ReservationStyle) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[948] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -92820,34 +95501,34 @@ func (x *PatternFlowIcmpv6CommonChecksum_Generated) ProtoReflect() protoreflect. return mi.MessageOf(x) } -// Deprecated: Use PatternFlowIcmpv6CommonChecksum_Generated.ProtoReflect.Descriptor instead. -func (*PatternFlowIcmpv6CommonChecksum_Generated) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{711, 1} +// Deprecated: Use RsvpLspIpv4InterfaceP2PEgressIpv4Lsp_ReservationStyle.ProtoReflect.Descriptor instead. +func (*RsvpLspIpv4InterfaceP2PEgressIpv4Lsp_ReservationStyle) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{150, 0} } -type PatternFlowPppAddress_Choice struct { +type RsvpEro_PrependNeighborIp struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields } -func (x *PatternFlowPppAddress_Choice) Reset() { - *x = PatternFlowPppAddress_Choice{} +func (x *RsvpEro_PrependNeighborIp) Reset() { + *x = RsvpEro_PrependNeighborIp{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[1069] + mi := &file_otg_proto_msgTypes[949] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowPppAddress_Choice) String() string { +func (x *RsvpEro_PrependNeighborIp) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowPppAddress_Choice) ProtoMessage() {} +func (*RsvpEro_PrependNeighborIp) ProtoMessage() {} -func (x *PatternFlowPppAddress_Choice) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[1069] +func (x *RsvpEro_PrependNeighborIp) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[949] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -92858,34 +95539,34 @@ func (x *PatternFlowPppAddress_Choice) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use PatternFlowPppAddress_Choice.ProtoReflect.Descriptor instead. -func (*PatternFlowPppAddress_Choice) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{714, 0} +// Deprecated: Use RsvpEro_PrependNeighborIp.ProtoReflect.Descriptor instead. +func (*RsvpEro_PrependNeighborIp) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{156, 0} } -type PatternFlowPppControl_Choice struct { +type RsvpEroSubobject_Type struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields } -func (x *PatternFlowPppControl_Choice) Reset() { - *x = PatternFlowPppControl_Choice{} +func (x *RsvpEroSubobject_Type) Reset() { + *x = RsvpEroSubobject_Type{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[1070] + mi := &file_otg_proto_msgTypes[950] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowPppControl_Choice) String() string { +func (x *RsvpEroSubobject_Type) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowPppControl_Choice) ProtoMessage() {} +func (*RsvpEroSubobject_Type) ProtoMessage() {} -func (x *PatternFlowPppControl_Choice) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[1070] +func (x *RsvpEroSubobject_Type) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[950] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -92896,34 +95577,34 @@ func (x *PatternFlowPppControl_Choice) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use PatternFlowPppControl_Choice.ProtoReflect.Descriptor instead. -func (*PatternFlowPppControl_Choice) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{717, 0} +// Deprecated: Use RsvpEroSubobject_Type.ProtoReflect.Descriptor instead. +func (*RsvpEroSubobject_Type) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{157, 0} } -type PatternFlowPppProtocolType_Choice struct { +type RsvpEroSubobject_HopType struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields } -func (x *PatternFlowPppProtocolType_Choice) Reset() { - *x = PatternFlowPppProtocolType_Choice{} +func (x *RsvpEroSubobject_HopType) Reset() { + *x = RsvpEroSubobject_HopType{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[1071] + mi := &file_otg_proto_msgTypes[951] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowPppProtocolType_Choice) String() string { +func (x *RsvpEroSubobject_HopType) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowPppProtocolType_Choice) ProtoMessage() {} +func (*RsvpEroSubobject_HopType) ProtoMessage() {} -func (x *PatternFlowPppProtocolType_Choice) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[1071] +func (x *RsvpEroSubobject_HopType) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[951] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -92934,34 +95615,34 @@ func (x *PatternFlowPppProtocolType_Choice) ProtoReflect() protoreflect.Message return mi.MessageOf(x) } -// Deprecated: Use PatternFlowPppProtocolType_Choice.ProtoReflect.Descriptor instead. -func (*PatternFlowPppProtocolType_Choice) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{720, 0} +// Deprecated: Use RsvpEroSubobject_HopType.ProtoReflect.Descriptor instead. +func (*RsvpEroSubobject_HopType) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{157, 1} } -type PatternFlowIgmpv1Version_Choice struct { +type FlowTxRx_Choice struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields } -func (x *PatternFlowIgmpv1Version_Choice) Reset() { - *x = PatternFlowIgmpv1Version_Choice{} +func (x *FlowTxRx_Choice) Reset() { + *x = FlowTxRx_Choice{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[1072] + mi := &file_otg_proto_msgTypes[952] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowIgmpv1Version_Choice) String() string { +func (x *FlowTxRx_Choice) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowIgmpv1Version_Choice) ProtoMessage() {} +func (*FlowTxRx_Choice) ProtoMessage() {} -func (x *PatternFlowIgmpv1Version_Choice) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[1072] +func (x *FlowTxRx_Choice) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[952] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -92972,34 +95653,34 @@ func (x *PatternFlowIgmpv1Version_Choice) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use PatternFlowIgmpv1Version_Choice.ProtoReflect.Descriptor instead. -func (*PatternFlowIgmpv1Version_Choice) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{723, 0} +// Deprecated: Use FlowTxRx_Choice.ProtoReflect.Descriptor instead. +func (*FlowTxRx_Choice) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{159, 0} } -type PatternFlowIgmpv1Type_Choice struct { +type FlowRouter_Mode struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields } -func (x *PatternFlowIgmpv1Type_Choice) Reset() { - *x = PatternFlowIgmpv1Type_Choice{} +func (x *FlowRouter_Mode) Reset() { + *x = FlowRouter_Mode{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[1073] + mi := &file_otg_proto_msgTypes[953] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowIgmpv1Type_Choice) String() string { +func (x *FlowRouter_Mode) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowIgmpv1Type_Choice) ProtoMessage() {} +func (*FlowRouter_Mode) ProtoMessage() {} -func (x *PatternFlowIgmpv1Type_Choice) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[1073] +func (x *FlowRouter_Mode) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[953] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -93010,34 +95691,34 @@ func (x *PatternFlowIgmpv1Type_Choice) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use PatternFlowIgmpv1Type_Choice.ProtoReflect.Descriptor instead. -func (*PatternFlowIgmpv1Type_Choice) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{726, 0} +// Deprecated: Use FlowRouter_Mode.ProtoReflect.Descriptor instead. +func (*FlowRouter_Mode) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{161, 0} } -type PatternFlowIgmpv1Unused_Choice struct { +type FlowHeader_Choice struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields } -func (x *PatternFlowIgmpv1Unused_Choice) Reset() { - *x = PatternFlowIgmpv1Unused_Choice{} +func (x *FlowHeader_Choice) Reset() { + *x = FlowHeader_Choice{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[1074] + mi := &file_otg_proto_msgTypes[954] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowIgmpv1Unused_Choice) String() string { +func (x *FlowHeader_Choice) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowIgmpv1Unused_Choice) ProtoMessage() {} +func (*FlowHeader_Choice) ProtoMessage() {} -func (x *PatternFlowIgmpv1Unused_Choice) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[1074] +func (x *FlowHeader_Choice) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[954] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -93048,34 +95729,34 @@ func (x *PatternFlowIgmpv1Unused_Choice) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use PatternFlowIgmpv1Unused_Choice.ProtoReflect.Descriptor instead. -func (*PatternFlowIgmpv1Unused_Choice) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{729, 0} +// Deprecated: Use FlowHeader_Choice.ProtoReflect.Descriptor instead. +func (*FlowHeader_Choice) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{162, 0} } -type PatternFlowIgmpv1Checksum_Choice struct { +type FlowIpv4Priority_Choice struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields } -func (x *PatternFlowIgmpv1Checksum_Choice) Reset() { - *x = PatternFlowIgmpv1Checksum_Choice{} +func (x *FlowIpv4Priority_Choice) Reset() { + *x = FlowIpv4Priority_Choice{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[1075] + mi := &file_otg_proto_msgTypes[955] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowIgmpv1Checksum_Choice) String() string { +func (x *FlowIpv4Priority_Choice) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowIgmpv1Checksum_Choice) ProtoMessage() {} +func (*FlowIpv4Priority_Choice) ProtoMessage() {} -func (x *PatternFlowIgmpv1Checksum_Choice) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[1075] +func (x *FlowIpv4Priority_Choice) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[955] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -93086,34 +95767,34 @@ func (x *PatternFlowIgmpv1Checksum_Choice) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use PatternFlowIgmpv1Checksum_Choice.ProtoReflect.Descriptor instead. -func (*PatternFlowIgmpv1Checksum_Choice) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{730, 0} +// Deprecated: Use FlowIpv4Priority_Choice.ProtoReflect.Descriptor instead. +func (*FlowIpv4Priority_Choice) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{169, 0} } -type PatternFlowIgmpv1Checksum_Generated struct { +type FlowIcmp_Choice struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields } -func (x *PatternFlowIgmpv1Checksum_Generated) Reset() { - *x = PatternFlowIgmpv1Checksum_Generated{} +func (x *FlowIcmp_Choice) Reset() { + *x = FlowIcmp_Choice{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[1076] + mi := &file_otg_proto_msgTypes[956] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowIgmpv1Checksum_Generated) String() string { +func (x *FlowIcmp_Choice) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowIgmpv1Checksum_Generated) ProtoMessage() {} +func (*FlowIcmp_Choice) ProtoMessage() {} -func (x *PatternFlowIgmpv1Checksum_Generated) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[1076] +func (x *FlowIcmp_Choice) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[956] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -93124,34 +95805,34 @@ func (x *PatternFlowIgmpv1Checksum_Generated) ProtoReflect() protoreflect.Messag return mi.MessageOf(x) } -// Deprecated: Use PatternFlowIgmpv1Checksum_Generated.ProtoReflect.Descriptor instead. -func (*PatternFlowIgmpv1Checksum_Generated) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{730, 1} +// Deprecated: Use FlowIcmp_Choice.ProtoReflect.Descriptor instead. +func (*FlowIcmp_Choice) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{182, 0} } -type PatternFlowIgmpv1GroupAddress_Choice struct { +type FlowIcmpv6_Choice struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields } -func (x *PatternFlowIgmpv1GroupAddress_Choice) Reset() { - *x = PatternFlowIgmpv1GroupAddress_Choice{} +func (x *FlowIcmpv6_Choice) Reset() { + *x = FlowIcmpv6_Choice{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[1077] + mi := &file_otg_proto_msgTypes[957] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowIgmpv1GroupAddress_Choice) String() string { +func (x *FlowIcmpv6_Choice) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowIgmpv1GroupAddress_Choice) ProtoMessage() {} +func (*FlowIcmpv6_Choice) ProtoMessage() {} -func (x *PatternFlowIgmpv1GroupAddress_Choice) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[1077] +func (x *FlowIcmpv6_Choice) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[957] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -93162,34 +95843,34 @@ func (x *PatternFlowIgmpv1GroupAddress_Choice) ProtoReflect() protoreflect.Messa return mi.MessageOf(x) } -// Deprecated: Use PatternFlowIgmpv1GroupAddress_Choice.ProtoReflect.Descriptor instead. -func (*PatternFlowIgmpv1GroupAddress_Choice) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{733, 0} +// Deprecated: Use FlowIcmpv6_Choice.ProtoReflect.Descriptor instead. +func (*FlowIcmpv6_Choice) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{184, 0} } -type PatternFlowMplsLabel_Choice struct { +type FlowRSVPFlag_Choice struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields } -func (x *PatternFlowMplsLabel_Choice) Reset() { - *x = PatternFlowMplsLabel_Choice{} +func (x *FlowRSVPFlag_Choice) Reset() { + *x = FlowRSVPFlag_Choice{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[1078] + mi := &file_otg_proto_msgTypes[958] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowMplsLabel_Choice) String() string { +func (x *FlowRSVPFlag_Choice) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowMplsLabel_Choice) ProtoMessage() {} +func (*FlowRSVPFlag_Choice) ProtoMessage() {} -func (x *PatternFlowMplsLabel_Choice) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[1078] +func (x *FlowRSVPFlag_Choice) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[958] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -93200,34 +95881,34 @@ func (x *PatternFlowMplsLabel_Choice) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use PatternFlowMplsLabel_Choice.ProtoReflect.Descriptor instead. -func (*PatternFlowMplsLabel_Choice) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{736, 0} +// Deprecated: Use FlowRSVPFlag_Choice.ProtoReflect.Descriptor instead. +func (*FlowRSVPFlag_Choice) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{190, 0} } -type PatternFlowMplsTrafficClass_Choice struct { +type FlowRSVPLength_Choice struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields } -func (x *PatternFlowMplsTrafficClass_Choice) Reset() { - *x = PatternFlowMplsTrafficClass_Choice{} +func (x *FlowRSVPLength_Choice) Reset() { + *x = FlowRSVPLength_Choice{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[1079] + mi := &file_otg_proto_msgTypes[959] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowMplsTrafficClass_Choice) String() string { +func (x *FlowRSVPLength_Choice) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowMplsTrafficClass_Choice) ProtoMessage() {} +func (*FlowRSVPLength_Choice) ProtoMessage() {} -func (x *PatternFlowMplsTrafficClass_Choice) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[1079] +func (x *FlowRSVPLength_Choice) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[959] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -93238,34 +95919,34 @@ func (x *PatternFlowMplsTrafficClass_Choice) ProtoReflect() protoreflect.Message return mi.MessageOf(x) } -// Deprecated: Use PatternFlowMplsTrafficClass_Choice.ProtoReflect.Descriptor instead. -func (*PatternFlowMplsTrafficClass_Choice) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{739, 0} +// Deprecated: Use FlowRSVPLength_Choice.ProtoReflect.Descriptor instead. +func (*FlowRSVPLength_Choice) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{191, 0} } -type PatternFlowMplsBottomOfStack_Choice struct { +type FlowRSVPMessage_Choice struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields } -func (x *PatternFlowMplsBottomOfStack_Choice) Reset() { - *x = PatternFlowMplsBottomOfStack_Choice{} +func (x *FlowRSVPMessage_Choice) Reset() { + *x = FlowRSVPMessage_Choice{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[1080] + mi := &file_otg_proto_msgTypes[960] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowMplsBottomOfStack_Choice) String() string { +func (x *FlowRSVPMessage_Choice) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowMplsBottomOfStack_Choice) ProtoMessage() {} +func (*FlowRSVPMessage_Choice) ProtoMessage() {} -func (x *PatternFlowMplsBottomOfStack_Choice) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[1080] +func (x *FlowRSVPMessage_Choice) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[960] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -93276,34 +95957,34 @@ func (x *PatternFlowMplsBottomOfStack_Choice) ProtoReflect() protoreflect.Messag return mi.MessageOf(x) } -// Deprecated: Use PatternFlowMplsBottomOfStack_Choice.ProtoReflect.Descriptor instead. -func (*PatternFlowMplsBottomOfStack_Choice) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{742, 0} +// Deprecated: Use FlowRSVPMessage_Choice.ProtoReflect.Descriptor instead. +func (*FlowRSVPMessage_Choice) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{192, 0} } -type PatternFlowMplsTimeToLive_Choice struct { +type FlowRSVPPathObjectLength_Choice struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields } -func (x *PatternFlowMplsTimeToLive_Choice) Reset() { - *x = PatternFlowMplsTimeToLive_Choice{} +func (x *FlowRSVPPathObjectLength_Choice) Reset() { + *x = FlowRSVPPathObjectLength_Choice{} if protoimpl.UnsafeEnabled { - mi := &file_otg_proto_msgTypes[1081] + mi := &file_otg_proto_msgTypes[961] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PatternFlowMplsTimeToLive_Choice) String() string { +func (x *FlowRSVPPathObjectLength_Choice) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PatternFlowMplsTimeToLive_Choice) ProtoMessage() {} +func (*FlowRSVPPathObjectLength_Choice) ProtoMessage() {} -func (x *PatternFlowMplsTimeToLive_Choice) ProtoReflect() protoreflect.Message { - mi := &file_otg_proto_msgTypes[1081] +func (x *FlowRSVPPathObjectLength_Choice) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[961] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -93314,262 +95995,11662 @@ func (x *PatternFlowMplsTimeToLive_Choice) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use PatternFlowMplsTimeToLive_Choice.ProtoReflect.Descriptor instead. -func (*PatternFlowMplsTimeToLive_Choice) Descriptor() ([]byte, []int) { - return file_otg_proto_rawDescGZIP(), []int{745, 0} +// Deprecated: Use FlowRSVPPathObjectLength_Choice.ProtoReflect.Descriptor instead. +func (*FlowRSVPPathObjectLength_Choice) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{195, 0} } -var File_otg_proto protoreflect.FileDescriptor +type FlowRSVPPathObjectsClass_Choice struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} -var file_otg_proto_rawDesc = []byte{ - 0x0a, 0x09, 0x6f, 0x74, 0x67, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x03, 0x6f, 0x74, 0x67, - 0x1a, 0x20, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, - 0x66, 0x2f, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x2e, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x1a, 0x1b, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x62, 0x75, 0x66, 0x2f, 0x65, 0x6d, 0x70, 0x74, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, - 0xcf, 0x02, 0x0a, 0x06, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x1f, 0x0a, 0x05, 0x70, 0x6f, - 0x72, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x09, 0x2e, 0x6f, 0x74, 0x67, 0x2e, - 0x50, 0x6f, 0x72, 0x74, 0x52, 0x05, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x12, 0x1c, 0x0a, 0x04, 0x6c, - 0x61, 0x67, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x08, 0x2e, 0x6f, 0x74, 0x67, 0x2e, - 0x4c, 0x61, 0x67, 0x52, 0x04, 0x6c, 0x61, 0x67, 0x73, 0x12, 0x23, 0x0a, 0x06, 0x6c, 0x61, 0x79, - 0x65, 0x72, 0x31, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x6f, 0x74, 0x67, 0x2e, - 0x4c, 0x61, 0x79, 0x65, 0x72, 0x31, 0x52, 0x06, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x31, 0x12, 0x28, - 0x0a, 0x08, 0x63, 0x61, 0x70, 0x74, 0x75, 0x72, 0x65, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, - 0x32, 0x0c, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x43, 0x61, 0x70, 0x74, 0x75, 0x72, 0x65, 0x52, 0x08, - 0x63, 0x61, 0x70, 0x74, 0x75, 0x72, 0x65, 0x73, 0x12, 0x25, 0x0a, 0x07, 0x64, 0x65, 0x76, 0x69, - 0x63, 0x65, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x6f, 0x74, 0x67, 0x2e, - 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x52, 0x07, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x73, 0x12, - 0x1f, 0x0a, 0x05, 0x66, 0x6c, 0x6f, 0x77, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x09, - 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x46, 0x6c, 0x6f, 0x77, 0x52, 0x05, 0x66, 0x6c, 0x6f, 0x77, 0x73, - 0x12, 0x22, 0x0a, 0x06, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x0a, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x52, 0x06, 0x65, 0x76, - 0x65, 0x6e, 0x74, 0x73, 0x12, 0x2c, 0x0a, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, - 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x43, 0x6f, 0x6e, 0x66, - 0x69, 0x67, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, - 0x6e, 0x73, 0x12, 0x1d, 0x0a, 0x04, 0x6c, 0x6c, 0x64, 0x70, 0x18, 0x09, 0x20, 0x03, 0x28, 0x0b, - 0x32, 0x09, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x4c, 0x6c, 0x64, 0x70, 0x52, 0x04, 0x6c, 0x6c, 0x64, - 0x70, 0x22, 0x85, 0x01, 0x0a, 0x0d, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x4f, 0x70, 0x74, 0x69, - 0x6f, 0x6e, 0x73, 0x12, 0x33, 0x0a, 0x0c, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x6f, 0x70, 0x74, 0x69, - 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x6f, 0x74, 0x67, 0x2e, - 0x50, 0x6f, 0x72, 0x74, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x0b, 0x70, 0x6f, 0x72, - 0x74, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x3f, 0x0a, 0x10, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x63, 0x6f, 0x6c, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, - 0x6c, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x0f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, - 0x6f, 0x6c, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x56, 0x0a, 0x04, 0x50, 0x6f, 0x72, - 0x74, 0x12, 0x1f, 0x0a, 0x08, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x08, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x88, - 0x01, 0x01, 0x12, 0x17, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, - 0x48, 0x01, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x42, 0x0b, 0x0a, 0x09, 0x5f, - 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x6e, 0x61, 0x6d, - 0x65, 0x22, 0x5b, 0x0a, 0x0b, 0x50, 0x6f, 0x72, 0x74, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, - 0x12, 0x34, 0x0a, 0x13, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x70, 0x72, 0x65, - 0x65, 0x6d, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x48, 0x00, 0x52, - 0x12, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x72, 0x65, 0x65, 0x6d, 0x70, 0x74, - 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x42, 0x16, 0x0a, 0x14, 0x5f, 0x6c, 0x6f, 0x63, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x5f, 0x70, 0x72, 0x65, 0x65, 0x6d, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0xa9, - 0x01, 0x0a, 0x03, 0x4c, 0x61, 0x67, 0x12, 0x22, 0x0a, 0x05, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x18, - 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x4c, 0x61, 0x67, 0x50, - 0x6f, 0x72, 0x74, 0x52, 0x05, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x12, 0x2c, 0x0a, 0x08, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x6f, - 0x74, 0x67, 0x2e, 0x4c, 0x61, 0x67, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x52, 0x08, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x12, 0x20, 0x0a, 0x09, 0x6d, 0x69, 0x6e, 0x5f, - 0x6c, 0x69, 0x6e, 0x6b, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x00, 0x52, 0x08, 0x6d, - 0x69, 0x6e, 0x4c, 0x69, 0x6e, 0x6b, 0x73, 0x88, 0x01, 0x01, 0x12, 0x17, 0x0a, 0x04, 0x6e, 0x61, - 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, - 0x88, 0x01, 0x01, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x6d, 0x69, 0x6e, 0x5f, 0x6c, 0x69, 0x6e, 0x6b, - 0x73, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x94, 0x01, 0x0a, 0x07, 0x4c, - 0x61, 0x67, 0x50, 0x6f, 0x72, 0x74, 0x12, 0x20, 0x0a, 0x09, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x6e, - 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x08, 0x70, 0x6f, 0x72, - 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, 0x24, 0x0a, 0x04, 0x6c, 0x61, 0x63, 0x70, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x4c, 0x61, 0x67, - 0x50, 0x6f, 0x72, 0x74, 0x4c, 0x61, 0x63, 0x70, 0x52, 0x04, 0x6c, 0x61, 0x63, 0x70, 0x12, 0x33, - 0x0a, 0x08, 0x65, 0x74, 0x68, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x17, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x45, 0x74, 0x68, - 0x65, 0x72, 0x6e, 0x65, 0x74, 0x42, 0x61, 0x73, 0x65, 0x52, 0x08, 0x65, 0x74, 0x68, 0x65, 0x72, - 0x6e, 0x65, 0x74, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x6e, 0x61, 0x6d, - 0x65, 0x22, 0xe6, 0x01, 0x0a, 0x0b, 0x4c, 0x61, 0x67, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, - 0x6c, 0x12, 0x39, 0x0a, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x0e, 0x32, 0x1c, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x4c, 0x61, 0x67, 0x50, 0x72, 0x6f, 0x74, 0x6f, - 0x63, 0x6f, 0x6c, 0x2e, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x48, - 0x00, 0x52, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x88, 0x01, 0x01, 0x12, 0x28, 0x0a, 0x04, - 0x6c, 0x61, 0x63, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x6f, 0x74, 0x67, - 0x2e, 0x4c, 0x61, 0x67, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x4c, 0x61, 0x63, 0x70, - 0x52, 0x04, 0x6c, 0x61, 0x63, 0x70, 0x12, 0x2e, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x69, 0x63, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x4c, 0x61, 0x67, - 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x53, 0x74, 0x61, 0x74, 0x69, 0x63, 0x52, 0x06, - 0x73, 0x74, 0x61, 0x74, 0x69, 0x63, 0x1a, 0x37, 0x0a, 0x06, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, - 0x22, 0x2d, 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x0a, 0x0b, 0x75, 0x6e, 0x73, 0x70, - 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x10, 0x00, 0x12, 0x08, 0x0a, 0x04, 0x6c, 0x61, 0x63, - 0x70, 0x10, 0x01, 0x12, 0x0a, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x69, 0x63, 0x10, 0x02, 0x42, - 0x09, 0x0a, 0x07, 0x5f, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x22, 0x3a, 0x0a, 0x11, 0x4c, 0x61, - 0x67, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x53, 0x74, 0x61, 0x74, 0x69, 0x63, 0x12, - 0x1a, 0x0a, 0x06, 0x6c, 0x61, 0x67, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x48, - 0x00, 0x52, 0x05, 0x6c, 0x61, 0x67, 0x49, 0x64, 0x88, 0x01, 0x01, 0x42, 0x09, 0x0a, 0x07, 0x5f, - 0x6c, 0x61, 0x67, 0x5f, 0x69, 0x64, 0x22, 0xd5, 0x01, 0x0a, 0x0f, 0x4c, 0x61, 0x67, 0x50, 0x72, - 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x4c, 0x61, 0x63, 0x70, 0x12, 0x2b, 0x0a, 0x0f, 0x61, 0x63, - 0x74, 0x6f, 0x72, 0x5f, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x0d, 0x61, 0x63, 0x74, 0x6f, 0x72, 0x53, 0x79, 0x73, 0x74, - 0x65, 0x6d, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x37, 0x0a, 0x15, 0x61, 0x63, 0x74, 0x6f, 0x72, - 0x5f, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x5f, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x13, 0x61, 0x63, 0x74, 0x6f, 0x72, 0x53, - 0x79, 0x73, 0x74, 0x65, 0x6d, 0x50, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x88, 0x01, 0x01, - 0x12, 0x20, 0x0a, 0x09, 0x61, 0x63, 0x74, 0x6f, 0x72, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x0d, 0x48, 0x02, 0x52, 0x08, 0x61, 0x63, 0x74, 0x6f, 0x72, 0x4b, 0x65, 0x79, 0x88, - 0x01, 0x01, 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x61, 0x63, 0x74, 0x6f, 0x72, 0x5f, 0x73, 0x79, 0x73, - 0x74, 0x65, 0x6d, 0x5f, 0x69, 0x64, 0x42, 0x18, 0x0a, 0x16, 0x5f, 0x61, 0x63, 0x74, 0x6f, 0x72, - 0x5f, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x5f, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, - 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x61, 0x63, 0x74, 0x6f, 0x72, 0x5f, 0x6b, 0x65, 0x79, 0x22, 0xf1, - 0x03, 0x0a, 0x0b, 0x4c, 0x61, 0x67, 0x50, 0x6f, 0x72, 0x74, 0x4c, 0x61, 0x63, 0x70, 0x12, 0x2f, - 0x0a, 0x11, 0x61, 0x63, 0x74, 0x6f, 0x72, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x6e, 0x75, 0x6d, - 0x62, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x00, 0x52, 0x0f, 0x61, 0x63, 0x74, - 0x6f, 0x72, 0x50, 0x6f, 0x72, 0x74, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x88, 0x01, 0x01, 0x12, - 0x33, 0x0a, 0x13, 0x61, 0x63, 0x74, 0x6f, 0x72, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x70, 0x72, - 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x11, - 0x61, 0x63, 0x74, 0x6f, 0x72, 0x50, 0x6f, 0x72, 0x74, 0x50, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, - 0x79, 0x88, 0x01, 0x01, 0x12, 0x4f, 0x0a, 0x0e, 0x61, 0x63, 0x74, 0x6f, 0x72, 0x5f, 0x61, 0x63, - 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x23, 0x2e, 0x6f, - 0x74, 0x67, 0x2e, 0x4c, 0x61, 0x67, 0x50, 0x6f, 0x72, 0x74, 0x4c, 0x61, 0x63, 0x70, 0x2e, 0x41, - 0x63, 0x74, 0x6f, 0x72, 0x41, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x2e, 0x45, 0x6e, 0x75, - 0x6d, 0x48, 0x02, 0x52, 0x0d, 0x61, 0x63, 0x74, 0x6f, 0x72, 0x41, 0x63, 0x74, 0x69, 0x76, 0x69, - 0x74, 0x79, 0x88, 0x01, 0x01, 0x12, 0x46, 0x0a, 0x1d, 0x6c, 0x61, 0x63, 0x70, 0x64, 0x75, 0x5f, - 0x70, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x69, 0x63, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x69, 0x6e, - 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x03, 0x52, 0x1a, - 0x6c, 0x61, 0x63, 0x70, 0x64, 0x75, 0x50, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x69, 0x63, 0x54, 0x69, - 0x6d, 0x65, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x88, 0x01, 0x01, 0x12, 0x2a, 0x0a, - 0x0e, 0x6c, 0x61, 0x63, 0x70, 0x64, 0x75, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x18, - 0x05, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x04, 0x52, 0x0d, 0x6c, 0x61, 0x63, 0x70, 0x64, 0x75, 0x54, - 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x88, 0x01, 0x01, 0x1a, 0x41, 0x0a, 0x0d, 0x41, 0x63, 0x74, - 0x6f, 0x72, 0x41, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x22, 0x30, 0x0a, 0x04, 0x45, 0x6e, - 0x75, 0x6d, 0x12, 0x0f, 0x0a, 0x0b, 0x75, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, - 0x64, 0x10, 0x00, 0x12, 0x0b, 0x0a, 0x07, 0x70, 0x61, 0x73, 0x73, 0x69, 0x76, 0x65, 0x10, 0x01, - 0x12, 0x0a, 0x0a, 0x06, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x10, 0x02, 0x42, 0x14, 0x0a, 0x12, - 0x5f, 0x61, 0x63, 0x74, 0x6f, 0x72, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x6e, 0x75, 0x6d, 0x62, - 0x65, 0x72, 0x42, 0x16, 0x0a, 0x14, 0x5f, 0x61, 0x63, 0x74, 0x6f, 0x72, 0x5f, 0x70, 0x6f, 0x72, - 0x74, 0x5f, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x42, 0x11, 0x0a, 0x0f, 0x5f, 0x61, - 0x63, 0x74, 0x6f, 0x72, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x42, 0x20, 0x0a, - 0x1e, 0x5f, 0x6c, 0x61, 0x63, 0x70, 0x64, 0x75, 0x5f, 0x70, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x69, - 0x63, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x42, - 0x11, 0x0a, 0x0f, 0x5f, 0x6c, 0x61, 0x63, 0x70, 0x64, 0x75, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x6f, - 0x75, 0x74, 0x22, 0x9b, 0x01, 0x0a, 0x12, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x45, 0x74, 0x68, - 0x65, 0x72, 0x6e, 0x65, 0x74, 0x42, 0x61, 0x73, 0x65, 0x12, 0x15, 0x0a, 0x03, 0x6d, 0x61, 0x63, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x03, 0x6d, 0x61, 0x63, 0x88, 0x01, 0x01, - 0x12, 0x15, 0x0a, 0x03, 0x6d, 0x74, 0x75, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, - 0x03, 0x6d, 0x74, 0x75, 0x88, 0x01, 0x01, 0x12, 0x25, 0x0a, 0x05, 0x76, 0x6c, 0x61, 0x6e, 0x73, - 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x44, 0x65, 0x76, - 0x69, 0x63, 0x65, 0x56, 0x6c, 0x61, 0x6e, 0x52, 0x05, 0x76, 0x6c, 0x61, 0x6e, 0x73, 0x12, 0x17, - 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x48, 0x02, 0x52, 0x04, - 0x6e, 0x61, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x42, 0x06, 0x0a, 0x04, 0x5f, 0x6d, 0x61, 0x63, 0x42, - 0x06, 0x0a, 0x04, 0x5f, 0x6d, 0x74, 0x75, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x6e, 0x61, 0x6d, 0x65, - 0x22, 0xc0, 0x02, 0x0a, 0x0e, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x45, 0x74, 0x68, 0x65, 0x72, - 0x6e, 0x65, 0x74, 0x12, 0x37, 0x0a, 0x0a, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x45, 0x74, - 0x68, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, - 0x52, 0x0a, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x36, 0x0a, 0x0e, - 0x69, 0x70, 0x76, 0x34, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x65, 0x73, 0x18, 0x03, - 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x44, 0x65, 0x76, 0x69, 0x63, - 0x65, 0x49, 0x70, 0x76, 0x34, 0x52, 0x0d, 0x69, 0x70, 0x76, 0x34, 0x41, 0x64, 0x64, 0x72, 0x65, - 0x73, 0x73, 0x65, 0x73, 0x12, 0x36, 0x0a, 0x0e, 0x69, 0x70, 0x76, 0x36, 0x5f, 0x61, 0x64, 0x64, - 0x72, 0x65, 0x73, 0x73, 0x65, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x6f, - 0x74, 0x67, 0x2e, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x70, 0x76, 0x36, 0x52, 0x0d, 0x69, - 0x70, 0x76, 0x36, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x65, 0x73, 0x12, 0x15, 0x0a, 0x03, - 0x6d, 0x61, 0x63, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x03, 0x6d, 0x61, 0x63, - 0x88, 0x01, 0x01, 0x12, 0x15, 0x0a, 0x03, 0x6d, 0x74, 0x75, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0d, - 0x48, 0x01, 0x52, 0x03, 0x6d, 0x74, 0x75, 0x88, 0x01, 0x01, 0x12, 0x25, 0x0a, 0x05, 0x76, 0x6c, - 0x61, 0x6e, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x6f, 0x74, 0x67, 0x2e, - 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x56, 0x6c, 0x61, 0x6e, 0x52, 0x05, 0x76, 0x6c, 0x61, 0x6e, - 0x73, 0x12, 0x17, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x48, - 0x02, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x42, 0x06, 0x0a, 0x04, 0x5f, 0x6d, - 0x61, 0x63, 0x42, 0x06, 0x0a, 0x04, 0x5f, 0x6d, 0x74, 0x75, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x6e, - 0x61, 0x6d, 0x65, 0x22, 0xc1, 0x02, 0x0a, 0x12, 0x45, 0x74, 0x68, 0x65, 0x72, 0x6e, 0x65, 0x74, - 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x40, 0x0a, 0x06, 0x63, 0x68, - 0x6f, 0x69, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x23, 0x2e, 0x6f, 0x74, 0x67, - 0x2e, 0x45, 0x74, 0x68, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x2e, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x48, - 0x00, 0x52, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x88, 0x01, 0x01, 0x12, 0x20, 0x0a, 0x09, - 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, - 0x01, 0x52, 0x08, 0x70, 0x6f, 0x72, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, 0x1e, - 0x0a, 0x08, 0x6c, 0x61, 0x67, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, - 0x48, 0x02, 0x52, 0x07, 0x6c, 0x61, 0x67, 0x4e, 0x61, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, 0x22, - 0x0a, 0x0a, 0x76, 0x78, 0x6c, 0x61, 0x6e, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, - 0x28, 0x09, 0x48, 0x03, 0x52, 0x09, 0x76, 0x78, 0x6c, 0x61, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x88, - 0x01, 0x01, 0x1a, 0x4e, 0x0a, 0x06, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x22, 0x44, 0x0a, 0x04, - 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x0a, 0x0b, 0x75, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, - 0x69, 0x65, 0x64, 0x10, 0x00, 0x12, 0x0d, 0x0a, 0x09, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x6e, 0x61, - 0x6d, 0x65, 0x10, 0x01, 0x12, 0x0c, 0x0a, 0x08, 0x6c, 0x61, 0x67, 0x5f, 0x6e, 0x61, 0x6d, 0x65, - 0x10, 0x02, 0x12, 0x0e, 0x0a, 0x0a, 0x76, 0x78, 0x6c, 0x61, 0x6e, 0x5f, 0x6e, 0x61, 0x6d, 0x65, - 0x10, 0x03, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x42, 0x0c, 0x0a, - 0x0a, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x42, 0x0b, 0x0a, 0x09, 0x5f, - 0x6c, 0x61, 0x67, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x76, 0x78, 0x6c, - 0x61, 0x6e, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x8d, 0x02, 0x0a, 0x0a, 0x44, 0x65, 0x76, 0x69, - 0x63, 0x65, 0x56, 0x6c, 0x61, 0x6e, 0x12, 0x32, 0x0a, 0x04, 0x74, 0x70, 0x69, 0x64, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x0e, 0x32, 0x19, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x44, 0x65, 0x76, 0x69, 0x63, - 0x65, 0x56, 0x6c, 0x61, 0x6e, 0x2e, 0x54, 0x70, 0x69, 0x64, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x48, - 0x00, 0x52, 0x04, 0x74, 0x70, 0x69, 0x64, 0x88, 0x01, 0x01, 0x12, 0x1f, 0x0a, 0x08, 0x70, 0x72, - 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x08, - 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x88, 0x01, 0x01, 0x12, 0x13, 0x0a, 0x02, 0x69, - 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x02, 0x52, 0x02, 0x69, 0x64, 0x88, 0x01, 0x01, - 0x12, 0x17, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x48, 0x03, - 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x1a, 0x56, 0x0a, 0x04, 0x54, 0x70, 0x69, - 0x64, 0x22, 0x4e, 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x0a, 0x0b, 0x75, 0x6e, 0x73, - 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, 0x78, 0x38, - 0x31, 0x30, 0x30, 0x10, 0x01, 0x12, 0x09, 0x0a, 0x05, 0x78, 0x38, 0x38, 0x41, 0x38, 0x10, 0x02, - 0x12, 0x09, 0x0a, 0x05, 0x78, 0x39, 0x31, 0x30, 0x30, 0x10, 0x03, 0x12, 0x09, 0x0a, 0x05, 0x78, - 0x39, 0x32, 0x30, 0x30, 0x10, 0x04, 0x12, 0x09, 0x0a, 0x05, 0x78, 0x39, 0x33, 0x30, 0x30, 0x10, - 0x05, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x74, 0x70, 0x69, 0x64, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x70, - 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x42, 0x05, 0x0a, 0x03, 0x5f, 0x69, 0x64, 0x42, 0x07, - 0x0a, 0x05, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0xe8, 0x01, 0x0a, 0x0a, 0x44, 0x65, 0x76, 0x69, - 0x63, 0x65, 0x49, 0x70, 0x76, 0x34, 0x12, 0x1d, 0x0a, 0x07, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, - 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x07, 0x67, 0x61, 0x74, 0x65, 0x77, - 0x61, 0x79, 0x88, 0x01, 0x01, 0x12, 0x3a, 0x0a, 0x0b, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, - 0x5f, 0x6d, 0x61, 0x63, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x6f, 0x74, 0x67, - 0x2e, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x70, 0x76, 0x34, 0x47, 0x61, 0x74, 0x65, 0x77, - 0x61, 0x79, 0x4d, 0x41, 0x43, 0x52, 0x0a, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x4d, 0x61, - 0x63, 0x12, 0x1d, 0x0a, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x09, 0x48, 0x01, 0x52, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x88, 0x01, 0x01, - 0x12, 0x1b, 0x0a, 0x06, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, - 0x48, 0x02, 0x52, 0x06, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x88, 0x01, 0x01, 0x12, 0x17, 0x0a, - 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x48, 0x03, 0x52, 0x04, 0x6e, - 0x61, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x67, 0x61, 0x74, 0x65, 0x77, - 0x61, 0x79, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x42, 0x09, - 0x0a, 0x07, 0x5f, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x6e, 0x61, - 0x6d, 0x65, 0x22, 0x8e, 0x01, 0x0a, 0x12, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x70, 0x76, - 0x34, 0x4c, 0x6f, 0x6f, 0x70, 0x62, 0x61, 0x63, 0x6b, 0x12, 0x1e, 0x0a, 0x08, 0x65, 0x74, 0x68, - 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x07, 0x65, - 0x74, 0x68, 0x4e, 0x61, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, 0x1d, 0x0a, 0x07, 0x61, 0x64, 0x64, - 0x72, 0x65, 0x73, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, 0x52, 0x07, 0x61, 0x64, - 0x64, 0x72, 0x65, 0x73, 0x73, 0x88, 0x01, 0x01, 0x12, 0x17, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x48, 0x02, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x88, 0x01, - 0x01, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x65, 0x74, 0x68, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x42, 0x0a, - 0x0a, 0x08, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x6e, - 0x61, 0x6d, 0x65, 0x22, 0xe4, 0x01, 0x0a, 0x14, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x70, - 0x76, 0x34, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x4d, 0x41, 0x43, 0x12, 0x42, 0x0a, 0x06, - 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x25, 0x2e, 0x6f, - 0x74, 0x67, 0x2e, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x70, 0x76, 0x34, 0x47, 0x61, 0x74, - 0x65, 0x77, 0x61, 0x79, 0x4d, 0x41, 0x43, 0x2e, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x2e, 0x45, - 0x6e, 0x75, 0x6d, 0x48, 0x00, 0x52, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x88, 0x01, 0x01, - 0x12, 0x17, 0x0a, 0x04, 0x61, 0x75, 0x74, 0x6f, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, - 0x52, 0x04, 0x61, 0x75, 0x74, 0x6f, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x76, 0x61, 0x6c, - 0x75, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x48, 0x02, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, - 0x65, 0x88, 0x01, 0x01, 0x1a, 0x36, 0x0a, 0x06, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x22, 0x2c, - 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x0a, 0x0b, 0x75, 0x6e, 0x73, 0x70, 0x65, 0x63, - 0x69, 0x66, 0x69, 0x65, 0x64, 0x10, 0x00, 0x12, 0x08, 0x0a, 0x04, 0x61, 0x75, 0x74, 0x6f, 0x10, - 0x01, 0x12, 0x09, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x10, 0x02, 0x42, 0x09, 0x0a, 0x07, - 0x5f, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x61, 0x75, 0x74, 0x6f, - 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0xe8, 0x01, 0x0a, 0x0a, 0x44, - 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x70, 0x76, 0x36, 0x12, 0x1d, 0x0a, 0x07, 0x67, 0x61, 0x74, - 0x65, 0x77, 0x61, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x07, 0x67, 0x61, - 0x74, 0x65, 0x77, 0x61, 0x79, 0x88, 0x01, 0x01, 0x12, 0x3a, 0x0a, 0x0b, 0x67, 0x61, 0x74, 0x65, - 0x77, 0x61, 0x79, 0x5f, 0x6d, 0x61, 0x63, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, - 0x6f, 0x74, 0x67, 0x2e, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x70, 0x76, 0x36, 0x47, 0x61, - 0x74, 0x65, 0x77, 0x61, 0x79, 0x4d, 0x41, 0x43, 0x52, 0x0a, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, - 0x79, 0x4d, 0x61, 0x63, 0x12, 0x1d, 0x0a, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, 0x52, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, - 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x18, 0x04, 0x20, - 0x01, 0x28, 0x0d, 0x48, 0x02, 0x52, 0x06, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x88, 0x01, 0x01, - 0x12, 0x17, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x48, 0x03, - 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x67, 0x61, - 0x74, 0x65, 0x77, 0x61, 0x79, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, +func (x *FlowRSVPPathObjectsClass_Choice) Reset() { + *x = FlowRSVPPathObjectsClass_Choice{} + if protoimpl.UnsafeEnabled { + mi := &file_otg_proto_msgTypes[962] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *FlowRSVPPathObjectsClass_Choice) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*FlowRSVPPathObjectsClass_Choice) ProtoMessage() {} + +func (x *FlowRSVPPathObjectsClass_Choice) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[962] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use FlowRSVPPathObjectsClass_Choice.ProtoReflect.Descriptor instead. +func (*FlowRSVPPathObjectsClass_Choice) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{196, 0} +} + +type FlowRSVPPathObjectsSessionCType_Choice struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *FlowRSVPPathObjectsSessionCType_Choice) Reset() { + *x = FlowRSVPPathObjectsSessionCType_Choice{} + if protoimpl.UnsafeEnabled { + mi := &file_otg_proto_msgTypes[963] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *FlowRSVPPathObjectsSessionCType_Choice) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*FlowRSVPPathObjectsSessionCType_Choice) ProtoMessage() {} + +func (x *FlowRSVPPathObjectsSessionCType_Choice) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[963] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use FlowRSVPPathObjectsSessionCType_Choice.ProtoReflect.Descriptor instead. +func (*FlowRSVPPathObjectsSessionCType_Choice) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{198, 0} +} + +type FlowRSVPPathObjectsRsvpHopCType_Choice struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *FlowRSVPPathObjectsRsvpHopCType_Choice) Reset() { + *x = FlowRSVPPathObjectsRsvpHopCType_Choice{} + if protoimpl.UnsafeEnabled { + mi := &file_otg_proto_msgTypes[964] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *FlowRSVPPathObjectsRsvpHopCType_Choice) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*FlowRSVPPathObjectsRsvpHopCType_Choice) ProtoMessage() {} + +func (x *FlowRSVPPathObjectsRsvpHopCType_Choice) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[964] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use FlowRSVPPathObjectsRsvpHopCType_Choice.ProtoReflect.Descriptor instead. +func (*FlowRSVPPathObjectsRsvpHopCType_Choice) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{201, 0} +} + +type FlowRSVPPathObjectsTimeValuesCType_Choice struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *FlowRSVPPathObjectsTimeValuesCType_Choice) Reset() { + *x = FlowRSVPPathObjectsTimeValuesCType_Choice{} + if protoimpl.UnsafeEnabled { + mi := &file_otg_proto_msgTypes[965] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *FlowRSVPPathObjectsTimeValuesCType_Choice) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*FlowRSVPPathObjectsTimeValuesCType_Choice) ProtoMessage() {} + +func (x *FlowRSVPPathObjectsTimeValuesCType_Choice) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[965] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use FlowRSVPPathObjectsTimeValuesCType_Choice.ProtoReflect.Descriptor instead. +func (*FlowRSVPPathObjectsTimeValuesCType_Choice) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{204, 0} +} + +type FlowRSVPPathObjectsClassExplicitRouteCType_Choice struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *FlowRSVPPathObjectsClassExplicitRouteCType_Choice) Reset() { + *x = FlowRSVPPathObjectsClassExplicitRouteCType_Choice{} + if protoimpl.UnsafeEnabled { + mi := &file_otg_proto_msgTypes[966] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *FlowRSVPPathObjectsClassExplicitRouteCType_Choice) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*FlowRSVPPathObjectsClassExplicitRouteCType_Choice) ProtoMessage() {} + +func (x *FlowRSVPPathObjectsClassExplicitRouteCType_Choice) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[966] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use FlowRSVPPathObjectsClassExplicitRouteCType_Choice.ProtoReflect.Descriptor instead. +func (*FlowRSVPPathObjectsClassExplicitRouteCType_Choice) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{207, 0} +} + +type FlowRSVPType1ExplicitRouteSubobjectsType_Choice struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *FlowRSVPType1ExplicitRouteSubobjectsType_Choice) Reset() { + *x = FlowRSVPType1ExplicitRouteSubobjectsType_Choice{} + if protoimpl.UnsafeEnabled { + mi := &file_otg_proto_msgTypes[967] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *FlowRSVPType1ExplicitRouteSubobjectsType_Choice) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*FlowRSVPType1ExplicitRouteSubobjectsType_Choice) ProtoMessage() {} + +func (x *FlowRSVPType1ExplicitRouteSubobjectsType_Choice) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[967] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use FlowRSVPType1ExplicitRouteSubobjectsType_Choice.ProtoReflect.Descriptor instead. +func (*FlowRSVPType1ExplicitRouteSubobjectsType_Choice) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{210, 0} +} + +type FlowRSVPExplicitRouteLength_Choice struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *FlowRSVPExplicitRouteLength_Choice) Reset() { + *x = FlowRSVPExplicitRouteLength_Choice{} + if protoimpl.UnsafeEnabled { + mi := &file_otg_proto_msgTypes[968] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *FlowRSVPExplicitRouteLength_Choice) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*FlowRSVPExplicitRouteLength_Choice) ProtoMessage() {} + +func (x *FlowRSVPExplicitRouteLength_Choice) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[968] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use FlowRSVPExplicitRouteLength_Choice.ProtoReflect.Descriptor instead. +func (*FlowRSVPExplicitRouteLength_Choice) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{213, 0} +} + +type FlowRSVPPathObjectsLabelRequestCType_Choice struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *FlowRSVPPathObjectsLabelRequestCType_Choice) Reset() { + *x = FlowRSVPPathObjectsLabelRequestCType_Choice{} + if protoimpl.UnsafeEnabled { + mi := &file_otg_proto_msgTypes[969] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *FlowRSVPPathObjectsLabelRequestCType_Choice) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*FlowRSVPPathObjectsLabelRequestCType_Choice) ProtoMessage() {} + +func (x *FlowRSVPPathObjectsLabelRequestCType_Choice) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[969] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use FlowRSVPPathObjectsLabelRequestCType_Choice.ProtoReflect.Descriptor instead. +func (*FlowRSVPPathObjectsLabelRequestCType_Choice) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{215, 0} +} + +type FlowRSVPPathObjectsSessionAttributeCType_Choice struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *FlowRSVPPathObjectsSessionAttributeCType_Choice) Reset() { + *x = FlowRSVPPathObjectsSessionAttributeCType_Choice{} + if protoimpl.UnsafeEnabled { + mi := &file_otg_proto_msgTypes[970] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *FlowRSVPPathObjectsSessionAttributeCType_Choice) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*FlowRSVPPathObjectsSessionAttributeCType_Choice) ProtoMessage() {} + +func (x *FlowRSVPPathObjectsSessionAttributeCType_Choice) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[970] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use FlowRSVPPathObjectsSessionAttributeCType_Choice.ProtoReflect.Descriptor instead. +func (*FlowRSVPPathObjectsSessionAttributeCType_Choice) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{218, 0} +} + +type FlowRSVPLspTunnelFlag_Choice struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *FlowRSVPLspTunnelFlag_Choice) Reset() { + *x = FlowRSVPLspTunnelFlag_Choice{} + if protoimpl.UnsafeEnabled { + mi := &file_otg_proto_msgTypes[971] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *FlowRSVPLspTunnelFlag_Choice) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*FlowRSVPLspTunnelFlag_Choice) ProtoMessage() {} + +func (x *FlowRSVPLspTunnelFlag_Choice) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[971] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use FlowRSVPLspTunnelFlag_Choice.ProtoReflect.Descriptor instead. +func (*FlowRSVPLspTunnelFlag_Choice) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{221, 0} +} + +type FlowRSVPPathObjectsSenderTemplateCType_Choice struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *FlowRSVPPathObjectsSenderTemplateCType_Choice) Reset() { + *x = FlowRSVPPathObjectsSenderTemplateCType_Choice{} + if protoimpl.UnsafeEnabled { + mi := &file_otg_proto_msgTypes[972] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *FlowRSVPPathObjectsSenderTemplateCType_Choice) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*FlowRSVPPathObjectsSenderTemplateCType_Choice) ProtoMessage() {} + +func (x *FlowRSVPPathObjectsSenderTemplateCType_Choice) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[972] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use FlowRSVPPathObjectsSenderTemplateCType_Choice.ProtoReflect.Descriptor instead. +func (*FlowRSVPPathObjectsSenderTemplateCType_Choice) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{223, 0} +} + +type FlowRSVPPathObjectsSenderTspecCType_Choice struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *FlowRSVPPathObjectsSenderTspecCType_Choice) Reset() { + *x = FlowRSVPPathObjectsSenderTspecCType_Choice{} + if protoimpl.UnsafeEnabled { + mi := &file_otg_proto_msgTypes[973] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *FlowRSVPPathObjectsSenderTspecCType_Choice) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*FlowRSVPPathObjectsSenderTspecCType_Choice) ProtoMessage() {} + +func (x *FlowRSVPPathObjectsSenderTspecCType_Choice) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[973] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use FlowRSVPPathObjectsSenderTspecCType_Choice.ProtoReflect.Descriptor instead. +func (*FlowRSVPPathObjectsSenderTspecCType_Choice) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{226, 0} +} + +type FlowRSVPPathObjectsRecordRouteCType_Choice struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *FlowRSVPPathObjectsRecordRouteCType_Choice) Reset() { + *x = FlowRSVPPathObjectsRecordRouteCType_Choice{} + if protoimpl.UnsafeEnabled { + mi := &file_otg_proto_msgTypes[974] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *FlowRSVPPathObjectsRecordRouteCType_Choice) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*FlowRSVPPathObjectsRecordRouteCType_Choice) ProtoMessage() {} + +func (x *FlowRSVPPathObjectsRecordRouteCType_Choice) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[974] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use FlowRSVPPathObjectsRecordRouteCType_Choice.ProtoReflect.Descriptor instead. +func (*FlowRSVPPathObjectsRecordRouteCType_Choice) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{229, 0} +} + +type FlowRSVPPathObjectsRecordRouteSubObjectType_Choice struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *FlowRSVPPathObjectsRecordRouteSubObjectType_Choice) Reset() { + *x = FlowRSVPPathObjectsRecordRouteSubObjectType_Choice{} + if protoimpl.UnsafeEnabled { + mi := &file_otg_proto_msgTypes[975] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *FlowRSVPPathObjectsRecordRouteSubObjectType_Choice) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*FlowRSVPPathObjectsRecordRouteSubObjectType_Choice) ProtoMessage() {} + +func (x *FlowRSVPPathObjectsRecordRouteSubObjectType_Choice) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[975] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use FlowRSVPPathObjectsRecordRouteSubObjectType_Choice.ProtoReflect.Descriptor instead. +func (*FlowRSVPPathObjectsRecordRouteSubObjectType_Choice) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{232, 0} +} + +type FlowRSVPRecordRouteIPv4Flag_Choice struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *FlowRSVPRecordRouteIPv4Flag_Choice) Reset() { + *x = FlowRSVPRecordRouteIPv4Flag_Choice{} + if protoimpl.UnsafeEnabled { + mi := &file_otg_proto_msgTypes[976] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *FlowRSVPRecordRouteIPv4Flag_Choice) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*FlowRSVPRecordRouteIPv4Flag_Choice) ProtoMessage() {} + +func (x *FlowRSVPRecordRouteIPv4Flag_Choice) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[976] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use FlowRSVPRecordRouteIPv4Flag_Choice.ProtoReflect.Descriptor instead. +func (*FlowRSVPRecordRouteIPv4Flag_Choice) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{234, 0} +} + +type FlowRSVPRouteRecordLength_Choice struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *FlowRSVPRouteRecordLength_Choice) Reset() { + *x = FlowRSVPRouteRecordLength_Choice{} + if protoimpl.UnsafeEnabled { + mi := &file_otg_proto_msgTypes[977] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *FlowRSVPRouteRecordLength_Choice) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*FlowRSVPRouteRecordLength_Choice) ProtoMessage() {} + +func (x *FlowRSVPRouteRecordLength_Choice) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[977] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use FlowRSVPRouteRecordLength_Choice.ProtoReflect.Descriptor instead. +func (*FlowRSVPRouteRecordLength_Choice) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{236, 0} +} + +type FlowRSVPObjectOptionsCustomLength_Choice struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *FlowRSVPObjectOptionsCustomLength_Choice) Reset() { + *x = FlowRSVPObjectOptionsCustomLength_Choice{} + if protoimpl.UnsafeEnabled { + mi := &file_otg_proto_msgTypes[978] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *FlowRSVPObjectOptionsCustomLength_Choice) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*FlowRSVPObjectOptionsCustomLength_Choice) ProtoMessage() {} + +func (x *FlowRSVPObjectOptionsCustomLength_Choice) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[978] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use FlowRSVPObjectOptionsCustomLength_Choice.ProtoReflect.Descriptor instead. +func (*FlowRSVPObjectOptionsCustomLength_Choice) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{238, 0} +} + +type FlowSize_Choice struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *FlowSize_Choice) Reset() { + *x = FlowSize_Choice{} + if protoimpl.UnsafeEnabled { + mi := &file_otg_proto_msgTypes[979] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *FlowSize_Choice) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*FlowSize_Choice) ProtoMessage() {} + +func (x *FlowSize_Choice) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[979] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use FlowSize_Choice.ProtoReflect.Descriptor instead. +func (*FlowSize_Choice) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{239, 0} +} + +type FlowSizeWeightPairs_Choice struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *FlowSizeWeightPairs_Choice) Reset() { + *x = FlowSizeWeightPairs_Choice{} + if protoimpl.UnsafeEnabled { + mi := &file_otg_proto_msgTypes[980] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *FlowSizeWeightPairs_Choice) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*FlowSizeWeightPairs_Choice) ProtoMessage() {} + +func (x *FlowSizeWeightPairs_Choice) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[980] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use FlowSizeWeightPairs_Choice.ProtoReflect.Descriptor instead. +func (*FlowSizeWeightPairs_Choice) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{242, 0} +} + +type FlowSizeWeightPairs_Predefined struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *FlowSizeWeightPairs_Predefined) Reset() { + *x = FlowSizeWeightPairs_Predefined{} + if protoimpl.UnsafeEnabled { + mi := &file_otg_proto_msgTypes[981] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *FlowSizeWeightPairs_Predefined) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*FlowSizeWeightPairs_Predefined) ProtoMessage() {} + +func (x *FlowSizeWeightPairs_Predefined) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[981] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use FlowSizeWeightPairs_Predefined.ProtoReflect.Descriptor instead. +func (*FlowSizeWeightPairs_Predefined) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{242, 1} +} + +type FlowRate_Choice struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *FlowRate_Choice) Reset() { + *x = FlowRate_Choice{} + if protoimpl.UnsafeEnabled { + mi := &file_otg_proto_msgTypes[982] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *FlowRate_Choice) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*FlowRate_Choice) ProtoMessage() {} + +func (x *FlowRate_Choice) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[982] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use FlowRate_Choice.ProtoReflect.Descriptor instead. +func (*FlowRate_Choice) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{244, 0} +} + +type FlowDuration_Choice struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *FlowDuration_Choice) Reset() { + *x = FlowDuration_Choice{} + if protoimpl.UnsafeEnabled { + mi := &file_otg_proto_msgTypes[983] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *FlowDuration_Choice) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*FlowDuration_Choice) ProtoMessage() {} + +func (x *FlowDuration_Choice) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[983] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use FlowDuration_Choice.ProtoReflect.Descriptor instead. +func (*FlowDuration_Choice) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{245, 0} +} + +type FlowDelay_Choice struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *FlowDelay_Choice) Reset() { + *x = FlowDelay_Choice{} + if protoimpl.UnsafeEnabled { + mi := &file_otg_proto_msgTypes[984] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *FlowDelay_Choice) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*FlowDelay_Choice) ProtoMessage() {} + +func (x *FlowDelay_Choice) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[984] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use FlowDelay_Choice.ProtoReflect.Descriptor instead. +func (*FlowDelay_Choice) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{247, 0} +} + +type FlowDurationInterBurstGap_Choice struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *FlowDurationInterBurstGap_Choice) Reset() { + *x = FlowDurationInterBurstGap_Choice{} + if protoimpl.UnsafeEnabled { + mi := &file_otg_proto_msgTypes[985] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *FlowDurationInterBurstGap_Choice) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*FlowDurationInterBurstGap_Choice) ProtoMessage() {} + +func (x *FlowDurationInterBurstGap_Choice) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[985] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use FlowDurationInterBurstGap_Choice.ProtoReflect.Descriptor instead. +func (*FlowDurationInterBurstGap_Choice) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{251, 0} +} + +type FlowLatencyMetrics_Mode struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *FlowLatencyMetrics_Mode) Reset() { + *x = FlowLatencyMetrics_Mode{} + if protoimpl.UnsafeEnabled { + mi := &file_otg_proto_msgTypes[986] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *FlowLatencyMetrics_Mode) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*FlowLatencyMetrics_Mode) ProtoMessage() {} + +func (x *FlowLatencyMetrics_Mode) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[986] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use FlowLatencyMetrics_Mode.ProtoReflect.Descriptor instead. +func (*FlowLatencyMetrics_Mode) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{253, 0} +} + +type FlowRxTxRatio_Choice struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *FlowRxTxRatio_Choice) Reset() { + *x = FlowRxTxRatio_Choice{} + if protoimpl.UnsafeEnabled { + mi := &file_otg_proto_msgTypes[987] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *FlowRxTxRatio_Choice) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*FlowRxTxRatio_Choice) ProtoMessage() {} + +func (x *FlowRxTxRatio_Choice) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[987] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use FlowRxTxRatio_Choice.ProtoReflect.Descriptor instead. +func (*FlowRxTxRatio_Choice) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{255, 0} +} + +type EventRequest_Type struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *EventRequest_Type) Reset() { + *x = EventRequest_Type{} + if protoimpl.UnsafeEnabled { + mi := &file_otg_proto_msgTypes[988] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *EventRequest_Type) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*EventRequest_Type) ProtoMessage() {} + +func (x *EventRequest_Type) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[988] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use EventRequest_Type.ProtoReflect.Descriptor instead. +func (*EventRequest_Type) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{261, 0} +} + +type LldpConnection_Choice struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *LldpConnection_Choice) Reset() { + *x = LldpConnection_Choice{} + if protoimpl.UnsafeEnabled { + mi := &file_otg_proto_msgTypes[989] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *LldpConnection_Choice) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*LldpConnection_Choice) ProtoMessage() {} + +func (x *LldpConnection_Choice) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[989] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use LldpConnection_Choice.ProtoReflect.Descriptor instead. +func (*LldpConnection_Choice) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{264, 0} +} + +type LldpChassisId_Choice struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *LldpChassisId_Choice) Reset() { + *x = LldpChassisId_Choice{} + if protoimpl.UnsafeEnabled { + mi := &file_otg_proto_msgTypes[990] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *LldpChassisId_Choice) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*LldpChassisId_Choice) ProtoMessage() {} + +func (x *LldpChassisId_Choice) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[990] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use LldpChassisId_Choice.ProtoReflect.Descriptor instead. +func (*LldpChassisId_Choice) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{265, 0} +} + +type LldpPortId_Choice struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *LldpPortId_Choice) Reset() { + *x = LldpPortId_Choice{} + if protoimpl.UnsafeEnabled { + mi := &file_otg_proto_msgTypes[991] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *LldpPortId_Choice) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*LldpPortId_Choice) ProtoMessage() {} + +func (x *LldpPortId_Choice) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[991] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use LldpPortId_Choice.ProtoReflect.Descriptor instead. +func (*LldpPortId_Choice) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{266, 0} +} + +type LldpChassisMacSubType_Choice struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *LldpChassisMacSubType_Choice) Reset() { + *x = LldpChassisMacSubType_Choice{} + if protoimpl.UnsafeEnabled { + mi := &file_otg_proto_msgTypes[992] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *LldpChassisMacSubType_Choice) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*LldpChassisMacSubType_Choice) ProtoMessage() {} + +func (x *LldpChassisMacSubType_Choice) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[992] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use LldpChassisMacSubType_Choice.ProtoReflect.Descriptor instead. +func (*LldpChassisMacSubType_Choice) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{267, 0} +} + +type LldpPortInterfaceNameSubType_Choice struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *LldpPortInterfaceNameSubType_Choice) Reset() { + *x = LldpPortInterfaceNameSubType_Choice{} + if protoimpl.UnsafeEnabled { + mi := &file_otg_proto_msgTypes[993] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *LldpPortInterfaceNameSubType_Choice) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*LldpPortInterfaceNameSubType_Choice) ProtoMessage() {} + +func (x *LldpPortInterfaceNameSubType_Choice) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[993] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use LldpPortInterfaceNameSubType_Choice.ProtoReflect.Descriptor instead. +func (*LldpPortInterfaceNameSubType_Choice) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{268, 0} +} + +type LldpSystemName_Choice struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *LldpSystemName_Choice) Reset() { + *x = LldpSystemName_Choice{} + if protoimpl.UnsafeEnabled { + mi := &file_otg_proto_msgTypes[994] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *LldpSystemName_Choice) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*LldpSystemName_Choice) ProtoMessage() {} + +func (x *LldpSystemName_Choice) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[994] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use LldpSystemName_Choice.ProtoReflect.Descriptor instead. +func (*LldpSystemName_Choice) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{269, 0} +} + +type Error_Kind struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *Error_Kind) Reset() { + *x = Error_Kind{} + if protoimpl.UnsafeEnabled { + mi := &file_otg_proto_msgTypes[995] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Error_Kind) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Error_Kind) ProtoMessage() {} + +func (x *Error_Kind) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[995] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Error_Kind.ProtoReflect.Descriptor instead. +func (*Error_Kind) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{270, 0} +} + +type ConfigUpdate_Choice struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *ConfigUpdate_Choice) Reset() { + *x = ConfigUpdate_Choice{} + if protoimpl.UnsafeEnabled { + mi := &file_otg_proto_msgTypes[996] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ConfigUpdate_Choice) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ConfigUpdate_Choice) ProtoMessage() {} + +func (x *ConfigUpdate_Choice) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[996] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ConfigUpdate_Choice.ProtoReflect.Descriptor instead. +func (*ConfigUpdate_Choice) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{272, 0} +} + +type FlowsUpdate_PropertyNames struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *FlowsUpdate_PropertyNames) Reset() { + *x = FlowsUpdate_PropertyNames{} + if protoimpl.UnsafeEnabled { + mi := &file_otg_proto_msgTypes[997] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *FlowsUpdate_PropertyNames) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*FlowsUpdate_PropertyNames) ProtoMessage() {} + +func (x *FlowsUpdate_PropertyNames) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[997] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use FlowsUpdate_PropertyNames.ProtoReflect.Descriptor instead. +func (*FlowsUpdate_PropertyNames) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{273, 0} +} + +type ControlState_Choice struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *ControlState_Choice) Reset() { + *x = ControlState_Choice{} + if protoimpl.UnsafeEnabled { + mi := &file_otg_proto_msgTypes[998] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ControlState_Choice) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ControlState_Choice) ProtoMessage() {} + +func (x *ControlState_Choice) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[998] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ControlState_Choice.ProtoReflect.Descriptor instead. +func (*ControlState_Choice) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{274, 0} +} + +type StatePort_Choice struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *StatePort_Choice) Reset() { + *x = StatePort_Choice{} + if protoimpl.UnsafeEnabled { + mi := &file_otg_proto_msgTypes[999] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *StatePort_Choice) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*StatePort_Choice) ProtoMessage() {} + +func (x *StatePort_Choice) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[999] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use StatePort_Choice.ProtoReflect.Descriptor instead. +func (*StatePort_Choice) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{275, 0} +} + +type StateTraffic_Choice struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *StateTraffic_Choice) Reset() { + *x = StateTraffic_Choice{} + if protoimpl.UnsafeEnabled { + mi := &file_otg_proto_msgTypes[1000] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *StateTraffic_Choice) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*StateTraffic_Choice) ProtoMessage() {} + +func (x *StateTraffic_Choice) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[1000] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use StateTraffic_Choice.ProtoReflect.Descriptor instead. +func (*StateTraffic_Choice) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{276, 0} +} + +type StateProtocol_Choice struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *StateProtocol_Choice) Reset() { + *x = StateProtocol_Choice{} + if protoimpl.UnsafeEnabled { + mi := &file_otg_proto_msgTypes[1001] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *StateProtocol_Choice) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*StateProtocol_Choice) ProtoMessage() {} + +func (x *StateProtocol_Choice) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[1001] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use StateProtocol_Choice.ProtoReflect.Descriptor instead. +func (*StateProtocol_Choice) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{277, 0} +} + +type StatePortLink_State struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *StatePortLink_State) Reset() { + *x = StatePortLink_State{} + if protoimpl.UnsafeEnabled { + mi := &file_otg_proto_msgTypes[1002] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *StatePortLink_State) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*StatePortLink_State) ProtoMessage() {} + +func (x *StatePortLink_State) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[1002] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use StatePortLink_State.ProtoReflect.Descriptor instead. +func (*StatePortLink_State) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{278, 0} +} + +type StatePortCapture_State struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *StatePortCapture_State) Reset() { + *x = StatePortCapture_State{} + if protoimpl.UnsafeEnabled { + mi := &file_otg_proto_msgTypes[1003] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *StatePortCapture_State) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*StatePortCapture_State) ProtoMessage() {} + +func (x *StatePortCapture_State) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[1003] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use StatePortCapture_State.ProtoReflect.Descriptor instead. +func (*StatePortCapture_State) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{279, 0} +} + +type StateTrafficFlowTransmit_State struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *StateTrafficFlowTransmit_State) Reset() { + *x = StateTrafficFlowTransmit_State{} + if protoimpl.UnsafeEnabled { + mi := &file_otg_proto_msgTypes[1004] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *StateTrafficFlowTransmit_State) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*StateTrafficFlowTransmit_State) ProtoMessage() {} + +func (x *StateTrafficFlowTransmit_State) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[1004] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use StateTrafficFlowTransmit_State.ProtoReflect.Descriptor instead. +func (*StateTrafficFlowTransmit_State) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{280, 0} +} + +type StateProtocolAll_State struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *StateProtocolAll_State) Reset() { + *x = StateProtocolAll_State{} + if protoimpl.UnsafeEnabled { + mi := &file_otg_proto_msgTypes[1005] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *StateProtocolAll_State) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*StateProtocolAll_State) ProtoMessage() {} + +func (x *StateProtocolAll_State) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[1005] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use StateProtocolAll_State.ProtoReflect.Descriptor instead. +func (*StateProtocolAll_State) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{281, 0} +} + +type StateProtocolRoute_State struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *StateProtocolRoute_State) Reset() { + *x = StateProtocolRoute_State{} + if protoimpl.UnsafeEnabled { + mi := &file_otg_proto_msgTypes[1006] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *StateProtocolRoute_State) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*StateProtocolRoute_State) ProtoMessage() {} + +func (x *StateProtocolRoute_State) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[1006] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use StateProtocolRoute_State.ProtoReflect.Descriptor instead. +func (*StateProtocolRoute_State) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{282, 0} +} + +type StateProtocolLacp_Choice struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *StateProtocolLacp_Choice) Reset() { + *x = StateProtocolLacp_Choice{} + if protoimpl.UnsafeEnabled { + mi := &file_otg_proto_msgTypes[1007] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *StateProtocolLacp_Choice) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*StateProtocolLacp_Choice) ProtoMessage() {} + +func (x *StateProtocolLacp_Choice) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[1007] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use StateProtocolLacp_Choice.ProtoReflect.Descriptor instead. +func (*StateProtocolLacp_Choice) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{283, 0} +} + +type StateProtocolLacpAdmin_State struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *StateProtocolLacpAdmin_State) Reset() { + *x = StateProtocolLacpAdmin_State{} + if protoimpl.UnsafeEnabled { + mi := &file_otg_proto_msgTypes[1008] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *StateProtocolLacpAdmin_State) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*StateProtocolLacpAdmin_State) ProtoMessage() {} + +func (x *StateProtocolLacpAdmin_State) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[1008] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use StateProtocolLacpAdmin_State.ProtoReflect.Descriptor instead. +func (*StateProtocolLacpAdmin_State) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{284, 0} +} + +type StateProtocolLacpMemberPorts_State struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *StateProtocolLacpMemberPorts_State) Reset() { + *x = StateProtocolLacpMemberPorts_State{} + if protoimpl.UnsafeEnabled { + mi := &file_otg_proto_msgTypes[1009] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *StateProtocolLacpMemberPorts_State) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*StateProtocolLacpMemberPorts_State) ProtoMessage() {} + +func (x *StateProtocolLacpMemberPorts_State) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[1009] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use StateProtocolLacpMemberPorts_State.ProtoReflect.Descriptor instead. +func (*StateProtocolLacpMemberPorts_State) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{285, 0} +} + +type StateProtocolBgp_Choice struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *StateProtocolBgp_Choice) Reset() { + *x = StateProtocolBgp_Choice{} + if protoimpl.UnsafeEnabled { + mi := &file_otg_proto_msgTypes[1010] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *StateProtocolBgp_Choice) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*StateProtocolBgp_Choice) ProtoMessage() {} + +func (x *StateProtocolBgp_Choice) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[1010] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use StateProtocolBgp_Choice.ProtoReflect.Descriptor instead. +func (*StateProtocolBgp_Choice) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{286, 0} +} + +type StateProtocolBgpPeers_State struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *StateProtocolBgpPeers_State) Reset() { + *x = StateProtocolBgpPeers_State{} + if protoimpl.UnsafeEnabled { + mi := &file_otg_proto_msgTypes[1011] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *StateProtocolBgpPeers_State) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*StateProtocolBgpPeers_State) ProtoMessage() {} + +func (x *StateProtocolBgpPeers_State) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[1011] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use StateProtocolBgpPeers_State.ProtoReflect.Descriptor instead. +func (*StateProtocolBgpPeers_State) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{287, 0} +} + +type StateProtocolIsis_Choice struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *StateProtocolIsis_Choice) Reset() { + *x = StateProtocolIsis_Choice{} + if protoimpl.UnsafeEnabled { + mi := &file_otg_proto_msgTypes[1012] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *StateProtocolIsis_Choice) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*StateProtocolIsis_Choice) ProtoMessage() {} + +func (x *StateProtocolIsis_Choice) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[1012] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use StateProtocolIsis_Choice.ProtoReflect.Descriptor instead. +func (*StateProtocolIsis_Choice) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{288, 0} +} + +type StateProtocolIsisRouters_State struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *StateProtocolIsisRouters_State) Reset() { + *x = StateProtocolIsisRouters_State{} + if protoimpl.UnsafeEnabled { + mi := &file_otg_proto_msgTypes[1013] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *StateProtocolIsisRouters_State) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*StateProtocolIsisRouters_State) ProtoMessage() {} + +func (x *StateProtocolIsisRouters_State) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[1013] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use StateProtocolIsisRouters_State.ProtoReflect.Descriptor instead. +func (*StateProtocolIsisRouters_State) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{289, 0} +} + +type ControlAction_Choice struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *ControlAction_Choice) Reset() { + *x = ControlAction_Choice{} + if protoimpl.UnsafeEnabled { + mi := &file_otg_proto_msgTypes[1014] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ControlAction_Choice) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ControlAction_Choice) ProtoMessage() {} + +func (x *ControlAction_Choice) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[1014] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ControlAction_Choice.ProtoReflect.Descriptor instead. +func (*ControlAction_Choice) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{290, 0} +} + +type ActionResponse_Choice struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *ActionResponse_Choice) Reset() { + *x = ActionResponse_Choice{} + if protoimpl.UnsafeEnabled { + mi := &file_otg_proto_msgTypes[1015] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ActionResponse_Choice) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ActionResponse_Choice) ProtoMessage() {} + +func (x *ActionResponse_Choice) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[1015] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ActionResponse_Choice.ProtoReflect.Descriptor instead. +func (*ActionResponse_Choice) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{292, 0} +} + +type ActionProtocol_Choice struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *ActionProtocol_Choice) Reset() { + *x = ActionProtocol_Choice{} + if protoimpl.UnsafeEnabled { + mi := &file_otg_proto_msgTypes[1016] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ActionProtocol_Choice) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ActionProtocol_Choice) ProtoMessage() {} + +func (x *ActionProtocol_Choice) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[1016] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ActionProtocol_Choice.ProtoReflect.Descriptor instead. +func (*ActionProtocol_Choice) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{293, 0} +} + +type ActionResponseProtocol_Choice struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *ActionResponseProtocol_Choice) Reset() { + *x = ActionResponseProtocol_Choice{} + if protoimpl.UnsafeEnabled { + mi := &file_otg_proto_msgTypes[1017] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ActionResponseProtocol_Choice) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ActionResponseProtocol_Choice) ProtoMessage() {} + +func (x *ActionResponseProtocol_Choice) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[1017] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ActionResponseProtocol_Choice.ProtoReflect.Descriptor instead. +func (*ActionResponseProtocol_Choice) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{294, 0} +} + +type ActionProtocolIpv4_Choice struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *ActionProtocolIpv4_Choice) Reset() { + *x = ActionProtocolIpv4_Choice{} + if protoimpl.UnsafeEnabled { + mi := &file_otg_proto_msgTypes[1018] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ActionProtocolIpv4_Choice) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ActionProtocolIpv4_Choice) ProtoMessage() {} + +func (x *ActionProtocolIpv4_Choice) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[1018] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ActionProtocolIpv4_Choice.ProtoReflect.Descriptor instead. +func (*ActionProtocolIpv4_Choice) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{295, 0} +} + +type ActionResponseProtocolIpv4_Choice struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *ActionResponseProtocolIpv4_Choice) Reset() { + *x = ActionResponseProtocolIpv4_Choice{} + if protoimpl.UnsafeEnabled { + mi := &file_otg_proto_msgTypes[1019] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ActionResponseProtocolIpv4_Choice) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ActionResponseProtocolIpv4_Choice) ProtoMessage() {} + +func (x *ActionResponseProtocolIpv4_Choice) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[1019] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ActionResponseProtocolIpv4_Choice.ProtoReflect.Descriptor instead. +func (*ActionResponseProtocolIpv4_Choice) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{296, 0} +} + +type ActionResponseProtocolIpv4PingResponse_Result struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *ActionResponseProtocolIpv4PingResponse_Result) Reset() { + *x = ActionResponseProtocolIpv4PingResponse_Result{} + if protoimpl.UnsafeEnabled { + mi := &file_otg_proto_msgTypes[1020] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ActionResponseProtocolIpv4PingResponse_Result) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ActionResponseProtocolIpv4PingResponse_Result) ProtoMessage() {} + +func (x *ActionResponseProtocolIpv4PingResponse_Result) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[1020] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ActionResponseProtocolIpv4PingResponse_Result.ProtoReflect.Descriptor instead. +func (*ActionResponseProtocolIpv4PingResponse_Result) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{300, 0} +} + +type ActionProtocolIpv6_Choice struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *ActionProtocolIpv6_Choice) Reset() { + *x = ActionProtocolIpv6_Choice{} + if protoimpl.UnsafeEnabled { + mi := &file_otg_proto_msgTypes[1021] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ActionProtocolIpv6_Choice) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ActionProtocolIpv6_Choice) ProtoMessage() {} + +func (x *ActionProtocolIpv6_Choice) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[1021] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ActionProtocolIpv6_Choice.ProtoReflect.Descriptor instead. +func (*ActionProtocolIpv6_Choice) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{301, 0} +} + +type ActionResponseProtocolIpv6_Choice struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *ActionResponseProtocolIpv6_Choice) Reset() { + *x = ActionResponseProtocolIpv6_Choice{} + if protoimpl.UnsafeEnabled { + mi := &file_otg_proto_msgTypes[1022] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ActionResponseProtocolIpv6_Choice) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ActionResponseProtocolIpv6_Choice) ProtoMessage() {} + +func (x *ActionResponseProtocolIpv6_Choice) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[1022] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ActionResponseProtocolIpv6_Choice.ProtoReflect.Descriptor instead. +func (*ActionResponseProtocolIpv6_Choice) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{302, 0} +} + +type ActionResponseProtocolIpv6PingResponse_Result struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *ActionResponseProtocolIpv6PingResponse_Result) Reset() { + *x = ActionResponseProtocolIpv6PingResponse_Result{} + if protoimpl.UnsafeEnabled { + mi := &file_otg_proto_msgTypes[1023] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ActionResponseProtocolIpv6PingResponse_Result) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ActionResponseProtocolIpv6PingResponse_Result) ProtoMessage() {} + +func (x *ActionResponseProtocolIpv6PingResponse_Result) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[1023] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ActionResponseProtocolIpv6PingResponse_Result.ProtoReflect.Descriptor instead. +func (*ActionResponseProtocolIpv6PingResponse_Result) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{306, 0} +} + +type ActionProtocolBgp_Choice struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *ActionProtocolBgp_Choice) Reset() { + *x = ActionProtocolBgp_Choice{} + if protoimpl.UnsafeEnabled { + mi := &file_otg_proto_msgTypes[1024] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ActionProtocolBgp_Choice) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ActionProtocolBgp_Choice) ProtoMessage() {} + +func (x *ActionProtocolBgp_Choice) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[1024] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ActionProtocolBgp_Choice.ProtoReflect.Descriptor instead. +func (*ActionProtocolBgp_Choice) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{307, 0} +} + +type ActionProtocolBgpNotification_Choice struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *ActionProtocolBgpNotification_Choice) Reset() { + *x = ActionProtocolBgpNotification_Choice{} + if protoimpl.UnsafeEnabled { + mi := &file_otg_proto_msgTypes[1025] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ActionProtocolBgpNotification_Choice) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ActionProtocolBgpNotification_Choice) ProtoMessage() {} + +func (x *ActionProtocolBgpNotification_Choice) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[1025] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ActionProtocolBgpNotification_Choice.ProtoReflect.Descriptor instead. +func (*ActionProtocolBgpNotification_Choice) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{308, 0} +} + +type MetricsRequest_Choice struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *MetricsRequest_Choice) Reset() { + *x = MetricsRequest_Choice{} + if protoimpl.UnsafeEnabled { + mi := &file_otg_proto_msgTypes[1026] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *MetricsRequest_Choice) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*MetricsRequest_Choice) ProtoMessage() {} + +func (x *MetricsRequest_Choice) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[1026] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use MetricsRequest_Choice.ProtoReflect.Descriptor instead. +func (*MetricsRequest_Choice) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{310, 0} +} + +type MetricsResponse_Choice struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *MetricsResponse_Choice) Reset() { + *x = MetricsResponse_Choice{} + if protoimpl.UnsafeEnabled { + mi := &file_otg_proto_msgTypes[1027] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *MetricsResponse_Choice) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*MetricsResponse_Choice) ProtoMessage() {} + +func (x *MetricsResponse_Choice) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[1027] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use MetricsResponse_Choice.ProtoReflect.Descriptor instead. +func (*MetricsResponse_Choice) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{311, 0} +} + +type PortMetricsRequest_ColumnNames struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *PortMetricsRequest_ColumnNames) Reset() { + *x = PortMetricsRequest_ColumnNames{} + if protoimpl.UnsafeEnabled { + mi := &file_otg_proto_msgTypes[1028] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *PortMetricsRequest_ColumnNames) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PortMetricsRequest_ColumnNames) ProtoMessage() {} + +func (x *PortMetricsRequest_ColumnNames) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[1028] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use PortMetricsRequest_ColumnNames.ProtoReflect.Descriptor instead. +func (*PortMetricsRequest_ColumnNames) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{312, 0} +} + +type PortMetric_Link struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *PortMetric_Link) Reset() { + *x = PortMetric_Link{} + if protoimpl.UnsafeEnabled { + mi := &file_otg_proto_msgTypes[1029] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *PortMetric_Link) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PortMetric_Link) ProtoMessage() {} + +func (x *PortMetric_Link) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[1029] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use PortMetric_Link.ProtoReflect.Descriptor instead. +func (*PortMetric_Link) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{313, 0} +} + +type PortMetric_Capture struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *PortMetric_Capture) Reset() { + *x = PortMetric_Capture{} + if protoimpl.UnsafeEnabled { + mi := &file_otg_proto_msgTypes[1030] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *PortMetric_Capture) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PortMetric_Capture) ProtoMessage() {} + +func (x *PortMetric_Capture) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[1030] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use PortMetric_Capture.ProtoReflect.Descriptor instead. +func (*PortMetric_Capture) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{313, 1} +} + +type PortMetric_Transmit struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *PortMetric_Transmit) Reset() { + *x = PortMetric_Transmit{} + if protoimpl.UnsafeEnabled { + mi := &file_otg_proto_msgTypes[1031] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *PortMetric_Transmit) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PortMetric_Transmit) ProtoMessage() {} + +func (x *PortMetric_Transmit) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[1031] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use PortMetric_Transmit.ProtoReflect.Descriptor instead. +func (*PortMetric_Transmit) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{313, 2} +} + +type FlowMetricsRequest_MetricNames struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *FlowMetricsRequest_MetricNames) Reset() { + *x = FlowMetricsRequest_MetricNames{} + if protoimpl.UnsafeEnabled { + mi := &file_otg_proto_msgTypes[1032] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *FlowMetricsRequest_MetricNames) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*FlowMetricsRequest_MetricNames) ProtoMessage() {} + +func (x *FlowMetricsRequest_MetricNames) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[1032] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use FlowMetricsRequest_MetricNames.ProtoReflect.Descriptor instead. +func (*FlowMetricsRequest_MetricNames) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{314, 0} +} + +type FlowTaggedMetricsFilter_MetricNames struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *FlowTaggedMetricsFilter_MetricNames) Reset() { + *x = FlowTaggedMetricsFilter_MetricNames{} + if protoimpl.UnsafeEnabled { + mi := &file_otg_proto_msgTypes[1033] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *FlowTaggedMetricsFilter_MetricNames) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*FlowTaggedMetricsFilter_MetricNames) ProtoMessage() {} + +func (x *FlowTaggedMetricsFilter_MetricNames) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[1033] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use FlowTaggedMetricsFilter_MetricNames.ProtoReflect.Descriptor instead. +func (*FlowTaggedMetricsFilter_MetricNames) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{315, 0} +} + +type FlowMetric_Transmit struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *FlowMetric_Transmit) Reset() { + *x = FlowMetric_Transmit{} + if protoimpl.UnsafeEnabled { + mi := &file_otg_proto_msgTypes[1034] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *FlowMetric_Transmit) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*FlowMetric_Transmit) ProtoMessage() {} + +func (x *FlowMetric_Transmit) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[1034] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use FlowMetric_Transmit.ProtoReflect.Descriptor instead. +func (*FlowMetric_Transmit) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{317, 0} +} + +type FlowMetricTagValue_Choice struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *FlowMetricTagValue_Choice) Reset() { + *x = FlowMetricTagValue_Choice{} + if protoimpl.UnsafeEnabled { + mi := &file_otg_proto_msgTypes[1035] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *FlowMetricTagValue_Choice) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*FlowMetricTagValue_Choice) ProtoMessage() {} + +func (x *FlowMetricTagValue_Choice) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[1035] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use FlowMetricTagValue_Choice.ProtoReflect.Descriptor instead. +func (*FlowMetricTagValue_Choice) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{320, 0} +} + +type Bgpv4MetricsRequest_ColumnNames struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *Bgpv4MetricsRequest_ColumnNames) Reset() { + *x = Bgpv4MetricsRequest_ColumnNames{} + if protoimpl.UnsafeEnabled { + mi := &file_otg_proto_msgTypes[1036] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Bgpv4MetricsRequest_ColumnNames) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Bgpv4MetricsRequest_ColumnNames) ProtoMessage() {} + +func (x *Bgpv4MetricsRequest_ColumnNames) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[1036] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Bgpv4MetricsRequest_ColumnNames.ProtoReflect.Descriptor instead. +func (*Bgpv4MetricsRequest_ColumnNames) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{323, 0} +} + +type Bgpv4Metric_SessionState struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *Bgpv4Metric_SessionState) Reset() { + *x = Bgpv4Metric_SessionState{} + if protoimpl.UnsafeEnabled { + mi := &file_otg_proto_msgTypes[1037] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Bgpv4Metric_SessionState) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Bgpv4Metric_SessionState) ProtoMessage() {} + +func (x *Bgpv4Metric_SessionState) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[1037] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Bgpv4Metric_SessionState.ProtoReflect.Descriptor instead. +func (*Bgpv4Metric_SessionState) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{324, 0} +} + +type Bgpv4Metric_FsmState struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *Bgpv4Metric_FsmState) Reset() { + *x = Bgpv4Metric_FsmState{} + if protoimpl.UnsafeEnabled { + mi := &file_otg_proto_msgTypes[1038] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Bgpv4Metric_FsmState) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Bgpv4Metric_FsmState) ProtoMessage() {} + +func (x *Bgpv4Metric_FsmState) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[1038] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Bgpv4Metric_FsmState.ProtoReflect.Descriptor instead. +func (*Bgpv4Metric_FsmState) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{324, 1} +} + +type Bgpv6MetricsRequest_ColumnNames struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *Bgpv6MetricsRequest_ColumnNames) Reset() { + *x = Bgpv6MetricsRequest_ColumnNames{} + if protoimpl.UnsafeEnabled { + mi := &file_otg_proto_msgTypes[1039] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Bgpv6MetricsRequest_ColumnNames) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Bgpv6MetricsRequest_ColumnNames) ProtoMessage() {} + +func (x *Bgpv6MetricsRequest_ColumnNames) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[1039] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Bgpv6MetricsRequest_ColumnNames.ProtoReflect.Descriptor instead. +func (*Bgpv6MetricsRequest_ColumnNames) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{325, 0} +} + +type Bgpv6Metric_SessionState struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *Bgpv6Metric_SessionState) Reset() { + *x = Bgpv6Metric_SessionState{} + if protoimpl.UnsafeEnabled { + mi := &file_otg_proto_msgTypes[1040] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Bgpv6Metric_SessionState) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Bgpv6Metric_SessionState) ProtoMessage() {} + +func (x *Bgpv6Metric_SessionState) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[1040] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Bgpv6Metric_SessionState.ProtoReflect.Descriptor instead. +func (*Bgpv6Metric_SessionState) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{326, 0} +} + +type Bgpv6Metric_FsmState struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *Bgpv6Metric_FsmState) Reset() { + *x = Bgpv6Metric_FsmState{} + if protoimpl.UnsafeEnabled { + mi := &file_otg_proto_msgTypes[1041] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Bgpv6Metric_FsmState) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Bgpv6Metric_FsmState) ProtoMessage() {} + +func (x *Bgpv6Metric_FsmState) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[1041] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Bgpv6Metric_FsmState.ProtoReflect.Descriptor instead. +func (*Bgpv6Metric_FsmState) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{326, 1} +} + +type IsisMetricsRequest_ColumnNames struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *IsisMetricsRequest_ColumnNames) Reset() { + *x = IsisMetricsRequest_ColumnNames{} + if protoimpl.UnsafeEnabled { + mi := &file_otg_proto_msgTypes[1042] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *IsisMetricsRequest_ColumnNames) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*IsisMetricsRequest_ColumnNames) ProtoMessage() {} + +func (x *IsisMetricsRequest_ColumnNames) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[1042] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use IsisMetricsRequest_ColumnNames.ProtoReflect.Descriptor instead. +func (*IsisMetricsRequest_ColumnNames) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{327, 0} +} + +type LagMetricsRequest_ColumnNames struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *LagMetricsRequest_ColumnNames) Reset() { + *x = LagMetricsRequest_ColumnNames{} + if protoimpl.UnsafeEnabled { + mi := &file_otg_proto_msgTypes[1043] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *LagMetricsRequest_ColumnNames) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*LagMetricsRequest_ColumnNames) ProtoMessage() {} + +func (x *LagMetricsRequest_ColumnNames) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[1043] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use LagMetricsRequest_ColumnNames.ProtoReflect.Descriptor instead. +func (*LagMetricsRequest_ColumnNames) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{329, 0} +} + +type LagMetric_OperStatus struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *LagMetric_OperStatus) Reset() { + *x = LagMetric_OperStatus{} + if protoimpl.UnsafeEnabled { + mi := &file_otg_proto_msgTypes[1044] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *LagMetric_OperStatus) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*LagMetric_OperStatus) ProtoMessage() {} + +func (x *LagMetric_OperStatus) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[1044] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use LagMetric_OperStatus.ProtoReflect.Descriptor instead. +func (*LagMetric_OperStatus) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{330, 0} +} + +type LacpMetricsRequest_ColumnNames struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *LacpMetricsRequest_ColumnNames) Reset() { + *x = LacpMetricsRequest_ColumnNames{} + if protoimpl.UnsafeEnabled { + mi := &file_otg_proto_msgTypes[1045] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *LacpMetricsRequest_ColumnNames) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*LacpMetricsRequest_ColumnNames) ProtoMessage() {} + +func (x *LacpMetricsRequest_ColumnNames) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[1045] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use LacpMetricsRequest_ColumnNames.ProtoReflect.Descriptor instead. +func (*LacpMetricsRequest_ColumnNames) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{331, 0} +} + +type LacpMetric_Activity struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *LacpMetric_Activity) Reset() { + *x = LacpMetric_Activity{} + if protoimpl.UnsafeEnabled { + mi := &file_otg_proto_msgTypes[1046] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *LacpMetric_Activity) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*LacpMetric_Activity) ProtoMessage() {} + +func (x *LacpMetric_Activity) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[1046] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use LacpMetric_Activity.ProtoReflect.Descriptor instead. +func (*LacpMetric_Activity) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{332, 0} +} + +type LacpMetric_Timeout struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *LacpMetric_Timeout) Reset() { + *x = LacpMetric_Timeout{} + if protoimpl.UnsafeEnabled { + mi := &file_otg_proto_msgTypes[1047] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *LacpMetric_Timeout) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*LacpMetric_Timeout) ProtoMessage() {} + +func (x *LacpMetric_Timeout) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[1047] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use LacpMetric_Timeout.ProtoReflect.Descriptor instead. +func (*LacpMetric_Timeout) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{332, 1} +} + +type LacpMetric_Synchronization struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *LacpMetric_Synchronization) Reset() { + *x = LacpMetric_Synchronization{} + if protoimpl.UnsafeEnabled { + mi := &file_otg_proto_msgTypes[1048] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *LacpMetric_Synchronization) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*LacpMetric_Synchronization) ProtoMessage() {} + +func (x *LacpMetric_Synchronization) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[1048] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use LacpMetric_Synchronization.ProtoReflect.Descriptor instead. +func (*LacpMetric_Synchronization) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{332, 2} +} + +type LldpMetricsRequest_ColumnNames struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *LldpMetricsRequest_ColumnNames) Reset() { + *x = LldpMetricsRequest_ColumnNames{} + if protoimpl.UnsafeEnabled { + mi := &file_otg_proto_msgTypes[1049] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *LldpMetricsRequest_ColumnNames) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*LldpMetricsRequest_ColumnNames) ProtoMessage() {} + +func (x *LldpMetricsRequest_ColumnNames) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[1049] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use LldpMetricsRequest_ColumnNames.ProtoReflect.Descriptor instead. +func (*LldpMetricsRequest_ColumnNames) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{333, 0} +} + +type RsvpMetricsRequest_ColumnNames struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *RsvpMetricsRequest_ColumnNames) Reset() { + *x = RsvpMetricsRequest_ColumnNames{} + if protoimpl.UnsafeEnabled { + mi := &file_otg_proto_msgTypes[1050] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *RsvpMetricsRequest_ColumnNames) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*RsvpMetricsRequest_ColumnNames) ProtoMessage() {} + +func (x *RsvpMetricsRequest_ColumnNames) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[1050] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use RsvpMetricsRequest_ColumnNames.ProtoReflect.Descriptor instead. +func (*RsvpMetricsRequest_ColumnNames) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{335, 0} +} + +type StatesRequest_Choice struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *StatesRequest_Choice) Reset() { + *x = StatesRequest_Choice{} + if protoimpl.UnsafeEnabled { + mi := &file_otg_proto_msgTypes[1051] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *StatesRequest_Choice) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*StatesRequest_Choice) ProtoMessage() {} + +func (x *StatesRequest_Choice) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[1051] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use StatesRequest_Choice.ProtoReflect.Descriptor instead. +func (*StatesRequest_Choice) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{337, 0} +} + +type StatesResponse_Choice struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *StatesResponse_Choice) Reset() { + *x = StatesResponse_Choice{} + if protoimpl.UnsafeEnabled { + mi := &file_otg_proto_msgTypes[1052] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *StatesResponse_Choice) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*StatesResponse_Choice) ProtoMessage() {} + +func (x *StatesResponse_Choice) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[1052] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use StatesResponse_Choice.ProtoReflect.Descriptor instead. +func (*StatesResponse_Choice) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{338, 0} +} + +type BgpPrefixStateRequest_PrefixFilters struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *BgpPrefixStateRequest_PrefixFilters) Reset() { + *x = BgpPrefixStateRequest_PrefixFilters{} + if protoimpl.UnsafeEnabled { + mi := &file_otg_proto_msgTypes[1053] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *BgpPrefixStateRequest_PrefixFilters) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*BgpPrefixStateRequest_PrefixFilters) ProtoMessage() {} + +func (x *BgpPrefixStateRequest_PrefixFilters) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[1053] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use BgpPrefixStateRequest_PrefixFilters.ProtoReflect.Descriptor instead. +func (*BgpPrefixStateRequest_PrefixFilters) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{343, 0} +} + +type BgpPrefixIpv4UnicastFilter_Origin struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *BgpPrefixIpv4UnicastFilter_Origin) Reset() { + *x = BgpPrefixIpv4UnicastFilter_Origin{} + if protoimpl.UnsafeEnabled { + mi := &file_otg_proto_msgTypes[1054] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *BgpPrefixIpv4UnicastFilter_Origin) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*BgpPrefixIpv4UnicastFilter_Origin) ProtoMessage() {} + +func (x *BgpPrefixIpv4UnicastFilter_Origin) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[1054] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use BgpPrefixIpv4UnicastFilter_Origin.ProtoReflect.Descriptor instead. +func (*BgpPrefixIpv4UnicastFilter_Origin) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{344, 0} +} + +type BgpPrefixIpv6UnicastFilter_Origin struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *BgpPrefixIpv6UnicastFilter_Origin) Reset() { + *x = BgpPrefixIpv6UnicastFilter_Origin{} + if protoimpl.UnsafeEnabled { + mi := &file_otg_proto_msgTypes[1055] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *BgpPrefixIpv6UnicastFilter_Origin) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*BgpPrefixIpv6UnicastFilter_Origin) ProtoMessage() {} + +func (x *BgpPrefixIpv6UnicastFilter_Origin) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[1055] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use BgpPrefixIpv6UnicastFilter_Origin.ProtoReflect.Descriptor instead. +func (*BgpPrefixIpv6UnicastFilter_Origin) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{345, 0} +} + +type BgpPrefixIpv4UnicastState_Origin struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *BgpPrefixIpv4UnicastState_Origin) Reset() { + *x = BgpPrefixIpv4UnicastState_Origin{} + if protoimpl.UnsafeEnabled { + mi := &file_otg_proto_msgTypes[1056] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *BgpPrefixIpv4UnicastState_Origin) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*BgpPrefixIpv4UnicastState_Origin) ProtoMessage() {} + +func (x *BgpPrefixIpv4UnicastState_Origin) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[1056] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use BgpPrefixIpv4UnicastState_Origin.ProtoReflect.Descriptor instead. +func (*BgpPrefixIpv4UnicastState_Origin) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{347, 0} +} + +type BgpPrefixIpv6UnicastState_Origin struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *BgpPrefixIpv6UnicastState_Origin) Reset() { + *x = BgpPrefixIpv6UnicastState_Origin{} + if protoimpl.UnsafeEnabled { + mi := &file_otg_proto_msgTypes[1057] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *BgpPrefixIpv6UnicastState_Origin) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*BgpPrefixIpv6UnicastState_Origin) ProtoMessage() {} + +func (x *BgpPrefixIpv6UnicastState_Origin) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[1057] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use BgpPrefixIpv6UnicastState_Origin.ProtoReflect.Descriptor instead. +func (*BgpPrefixIpv6UnicastState_Origin) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{348, 0} +} + +type ResultBgpCommunity_Type struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *ResultBgpCommunity_Type) Reset() { + *x = ResultBgpCommunity_Type{} + if protoimpl.UnsafeEnabled { + mi := &file_otg_proto_msgTypes[1058] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ResultBgpCommunity_Type) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ResultBgpCommunity_Type) ProtoMessage() {} + +func (x *ResultBgpCommunity_Type) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[1058] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ResultBgpCommunity_Type.ProtoReflect.Descriptor instead. +func (*ResultBgpCommunity_Type) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{349, 0} +} + +type ResultBgpAsPathSegment_Type struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *ResultBgpAsPathSegment_Type) Reset() { + *x = ResultBgpAsPathSegment_Type{} + if protoimpl.UnsafeEnabled { + mi := &file_otg_proto_msgTypes[1059] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ResultBgpAsPathSegment_Type) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ResultBgpAsPathSegment_Type) ProtoMessage() {} + +func (x *ResultBgpAsPathSegment_Type) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[1059] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ResultBgpAsPathSegment_Type.ProtoReflect.Descriptor instead. +func (*ResultBgpAsPathSegment_Type) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{351, 0} +} + +type IsisLspState_PduType struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *IsisLspState_PduType) Reset() { + *x = IsisLspState_PduType{} + if protoimpl.UnsafeEnabled { + mi := &file_otg_proto_msgTypes[1060] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *IsisLspState_PduType) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*IsisLspState_PduType) ProtoMessage() {} + +func (x *IsisLspState_PduType) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[1060] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use IsisLspState_PduType.ProtoReflect.Descriptor instead. +func (*IsisLspState_PduType) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{354, 0} +} + +type IsisLspV4Prefix_RedistributionType struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *IsisLspV4Prefix_RedistributionType) Reset() { + *x = IsisLspV4Prefix_RedistributionType{} + if protoimpl.UnsafeEnabled { + mi := &file_otg_proto_msgTypes[1061] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *IsisLspV4Prefix_RedistributionType) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*IsisLspV4Prefix_RedistributionType) ProtoMessage() {} + +func (x *IsisLspV4Prefix_RedistributionType) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[1061] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use IsisLspV4Prefix_RedistributionType.ProtoReflect.Descriptor instead. +func (*IsisLspV4Prefix_RedistributionType) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{363, 0} +} + +type IsisLspV4Prefix_OriginType struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *IsisLspV4Prefix_OriginType) Reset() { + *x = IsisLspV4Prefix_OriginType{} + if protoimpl.UnsafeEnabled { + mi := &file_otg_proto_msgTypes[1062] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *IsisLspV4Prefix_OriginType) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*IsisLspV4Prefix_OriginType) ProtoMessage() {} + +func (x *IsisLspV4Prefix_OriginType) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[1062] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use IsisLspV4Prefix_OriginType.ProtoReflect.Descriptor instead. +func (*IsisLspV4Prefix_OriginType) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{363, 1} +} + +type IsisLspExtendedV4Prefix_RedistributionType struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *IsisLspExtendedV4Prefix_RedistributionType) Reset() { + *x = IsisLspExtendedV4Prefix_RedistributionType{} + if protoimpl.UnsafeEnabled { + mi := &file_otg_proto_msgTypes[1063] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *IsisLspExtendedV4Prefix_RedistributionType) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*IsisLspExtendedV4Prefix_RedistributionType) ProtoMessage() {} + +func (x *IsisLspExtendedV4Prefix_RedistributionType) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[1063] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use IsisLspExtendedV4Prefix_RedistributionType.ProtoReflect.Descriptor instead. +func (*IsisLspExtendedV4Prefix_RedistributionType) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{365, 0} +} + +type IsisLspV6Prefix_RedistributionType struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *IsisLspV6Prefix_RedistributionType) Reset() { + *x = IsisLspV6Prefix_RedistributionType{} + if protoimpl.UnsafeEnabled { + mi := &file_otg_proto_msgTypes[1064] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *IsisLspV6Prefix_RedistributionType) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*IsisLspV6Prefix_RedistributionType) ProtoMessage() {} + +func (x *IsisLspV6Prefix_RedistributionType) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[1064] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use IsisLspV6Prefix_RedistributionType.ProtoReflect.Descriptor instead. +func (*IsisLspV6Prefix_RedistributionType) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{367, 0} +} + +type IsisLspV6Prefix_OriginType struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *IsisLspV6Prefix_OriginType) Reset() { + *x = IsisLspV6Prefix_OriginType{} + if protoimpl.UnsafeEnabled { + mi := &file_otg_proto_msgTypes[1065] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *IsisLspV6Prefix_OriginType) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*IsisLspV6Prefix_OriginType) ProtoMessage() {} + +func (x *IsisLspV6Prefix_OriginType) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[1065] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use IsisLspV6Prefix_OriginType.ProtoReflect.Descriptor instead. +func (*IsisLspV6Prefix_OriginType) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{367, 1} +} + +type LldpNeighborsState_ChassisIdType struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *LldpNeighborsState_ChassisIdType) Reset() { + *x = LldpNeighborsState_ChassisIdType{} + if protoimpl.UnsafeEnabled { + mi := &file_otg_proto_msgTypes[1066] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *LldpNeighborsState_ChassisIdType) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*LldpNeighborsState_ChassisIdType) ProtoMessage() {} + +func (x *LldpNeighborsState_ChassisIdType) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[1066] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use LldpNeighborsState_ChassisIdType.ProtoReflect.Descriptor instead. +func (*LldpNeighborsState_ChassisIdType) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{370, 0} +} + +type LldpNeighborsState_PortIdType struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *LldpNeighborsState_PortIdType) Reset() { + *x = LldpNeighborsState_PortIdType{} + if protoimpl.UnsafeEnabled { + mi := &file_otg_proto_msgTypes[1067] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *LldpNeighborsState_PortIdType) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*LldpNeighborsState_PortIdType) ProtoMessage() {} + +func (x *LldpNeighborsState_PortIdType) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[1067] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use LldpNeighborsState_PortIdType.ProtoReflect.Descriptor instead. +func (*LldpNeighborsState_PortIdType) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{370, 1} +} + +type LldpCapabilityState_CapabilityName struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *LldpCapabilityState_CapabilityName) Reset() { + *x = LldpCapabilityState_CapabilityName{} + if protoimpl.UnsafeEnabled { + mi := &file_otg_proto_msgTypes[1068] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *LldpCapabilityState_CapabilityName) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*LldpCapabilityState_CapabilityName) ProtoMessage() {} + +func (x *LldpCapabilityState_CapabilityName) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[1068] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use LldpCapabilityState_CapabilityName.ProtoReflect.Descriptor instead. +func (*LldpCapabilityState_CapabilityName) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{372, 0} +} + +type RsvpLspState_SessionStatus struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *RsvpLspState_SessionStatus) Reset() { + *x = RsvpLspState_SessionStatus{} + if protoimpl.UnsafeEnabled { + mi := &file_otg_proto_msgTypes[1069] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *RsvpLspState_SessionStatus) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*RsvpLspState_SessionStatus) ProtoMessage() {} + +func (x *RsvpLspState_SessionStatus) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[1069] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use RsvpLspState_SessionStatus.ProtoReflect.Descriptor instead. +func (*RsvpLspState_SessionStatus) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{376, 0} +} + +type RsvpLspState_LastFlapReason struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *RsvpLspState_LastFlapReason) Reset() { + *x = RsvpLspState_LastFlapReason{} + if protoimpl.UnsafeEnabled { + mi := &file_otg_proto_msgTypes[1070] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *RsvpLspState_LastFlapReason) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*RsvpLspState_LastFlapReason) ProtoMessage() {} + +func (x *RsvpLspState_LastFlapReason) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[1070] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use RsvpLspState_LastFlapReason.ProtoReflect.Descriptor instead. +func (*RsvpLspState_LastFlapReason) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{376, 1} +} + +type RsvpLspIpv4Ero_Type struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *RsvpLspIpv4Ero_Type) Reset() { + *x = RsvpLspIpv4Ero_Type{} + if protoimpl.UnsafeEnabled { + mi := &file_otg_proto_msgTypes[1071] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *RsvpLspIpv4Ero_Type) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*RsvpLspIpv4Ero_Type) ProtoMessage() {} + +func (x *RsvpLspIpv4Ero_Type) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[1071] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use RsvpLspIpv4Ero_Type.ProtoReflect.Descriptor instead. +func (*RsvpLspIpv4Ero_Type) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{378, 0} +} + +type PatternFlowEthernetDst_Choice struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *PatternFlowEthernetDst_Choice) Reset() { + *x = PatternFlowEthernetDst_Choice{} + if protoimpl.UnsafeEnabled { + mi := &file_otg_proto_msgTypes[1072] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *PatternFlowEthernetDst_Choice) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PatternFlowEthernetDst_Choice) ProtoMessage() {} + +func (x *PatternFlowEthernetDst_Choice) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[1072] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use PatternFlowEthernetDst_Choice.ProtoReflect.Descriptor instead. +func (*PatternFlowEthernetDst_Choice) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{382, 0} +} + +type PatternFlowEthernetSrc_Choice struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *PatternFlowEthernetSrc_Choice) Reset() { + *x = PatternFlowEthernetSrc_Choice{} + if protoimpl.UnsafeEnabled { + mi := &file_otg_proto_msgTypes[1073] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *PatternFlowEthernetSrc_Choice) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PatternFlowEthernetSrc_Choice) ProtoMessage() {} + +func (x *PatternFlowEthernetSrc_Choice) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[1073] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use PatternFlowEthernetSrc_Choice.ProtoReflect.Descriptor instead. +func (*PatternFlowEthernetSrc_Choice) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{385, 0} +} + +type PatternFlowEthernetEtherType_Choice struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *PatternFlowEthernetEtherType_Choice) Reset() { + *x = PatternFlowEthernetEtherType_Choice{} + if protoimpl.UnsafeEnabled { + mi := &file_otg_proto_msgTypes[1074] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *PatternFlowEthernetEtherType_Choice) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PatternFlowEthernetEtherType_Choice) ProtoMessage() {} + +func (x *PatternFlowEthernetEtherType_Choice) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[1074] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use PatternFlowEthernetEtherType_Choice.ProtoReflect.Descriptor instead. +func (*PatternFlowEthernetEtherType_Choice) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{388, 0} +} + +type PatternFlowEthernetPfcQueue_Choice struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *PatternFlowEthernetPfcQueue_Choice) Reset() { + *x = PatternFlowEthernetPfcQueue_Choice{} + if protoimpl.UnsafeEnabled { + mi := &file_otg_proto_msgTypes[1075] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *PatternFlowEthernetPfcQueue_Choice) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PatternFlowEthernetPfcQueue_Choice) ProtoMessage() {} + +func (x *PatternFlowEthernetPfcQueue_Choice) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[1075] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use PatternFlowEthernetPfcQueue_Choice.ProtoReflect.Descriptor instead. +func (*PatternFlowEthernetPfcQueue_Choice) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{391, 0} +} + +type PatternFlowVlanPriority_Choice struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *PatternFlowVlanPriority_Choice) Reset() { + *x = PatternFlowVlanPriority_Choice{} + if protoimpl.UnsafeEnabled { + mi := &file_otg_proto_msgTypes[1076] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *PatternFlowVlanPriority_Choice) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PatternFlowVlanPriority_Choice) ProtoMessage() {} + +func (x *PatternFlowVlanPriority_Choice) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[1076] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use PatternFlowVlanPriority_Choice.ProtoReflect.Descriptor instead. +func (*PatternFlowVlanPriority_Choice) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{394, 0} +} + +type PatternFlowVlanCfi_Choice struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *PatternFlowVlanCfi_Choice) Reset() { + *x = PatternFlowVlanCfi_Choice{} + if protoimpl.UnsafeEnabled { + mi := &file_otg_proto_msgTypes[1077] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *PatternFlowVlanCfi_Choice) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PatternFlowVlanCfi_Choice) ProtoMessage() {} + +func (x *PatternFlowVlanCfi_Choice) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[1077] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use PatternFlowVlanCfi_Choice.ProtoReflect.Descriptor instead. +func (*PatternFlowVlanCfi_Choice) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{397, 0} +} + +type PatternFlowVlanId_Choice struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *PatternFlowVlanId_Choice) Reset() { + *x = PatternFlowVlanId_Choice{} + if protoimpl.UnsafeEnabled { + mi := &file_otg_proto_msgTypes[1078] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *PatternFlowVlanId_Choice) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PatternFlowVlanId_Choice) ProtoMessage() {} + +func (x *PatternFlowVlanId_Choice) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[1078] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use PatternFlowVlanId_Choice.ProtoReflect.Descriptor instead. +func (*PatternFlowVlanId_Choice) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{400, 0} +} + +type PatternFlowVlanTpid_Choice struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *PatternFlowVlanTpid_Choice) Reset() { + *x = PatternFlowVlanTpid_Choice{} + if protoimpl.UnsafeEnabled { + mi := &file_otg_proto_msgTypes[1079] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *PatternFlowVlanTpid_Choice) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PatternFlowVlanTpid_Choice) ProtoMessage() {} + +func (x *PatternFlowVlanTpid_Choice) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[1079] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use PatternFlowVlanTpid_Choice.ProtoReflect.Descriptor instead. +func (*PatternFlowVlanTpid_Choice) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{403, 0} +} + +type PatternFlowVxlanFlags_Choice struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *PatternFlowVxlanFlags_Choice) Reset() { + *x = PatternFlowVxlanFlags_Choice{} + if protoimpl.UnsafeEnabled { + mi := &file_otg_proto_msgTypes[1080] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *PatternFlowVxlanFlags_Choice) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PatternFlowVxlanFlags_Choice) ProtoMessage() {} + +func (x *PatternFlowVxlanFlags_Choice) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[1080] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use PatternFlowVxlanFlags_Choice.ProtoReflect.Descriptor instead. +func (*PatternFlowVxlanFlags_Choice) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{406, 0} +} + +type PatternFlowVxlanReserved0_Choice struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *PatternFlowVxlanReserved0_Choice) Reset() { + *x = PatternFlowVxlanReserved0_Choice{} + if protoimpl.UnsafeEnabled { + mi := &file_otg_proto_msgTypes[1081] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *PatternFlowVxlanReserved0_Choice) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PatternFlowVxlanReserved0_Choice) ProtoMessage() {} + +func (x *PatternFlowVxlanReserved0_Choice) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[1081] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use PatternFlowVxlanReserved0_Choice.ProtoReflect.Descriptor instead. +func (*PatternFlowVxlanReserved0_Choice) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{409, 0} +} + +type PatternFlowVxlanVni_Choice struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *PatternFlowVxlanVni_Choice) Reset() { + *x = PatternFlowVxlanVni_Choice{} + if protoimpl.UnsafeEnabled { + mi := &file_otg_proto_msgTypes[1082] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *PatternFlowVxlanVni_Choice) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PatternFlowVxlanVni_Choice) ProtoMessage() {} + +func (x *PatternFlowVxlanVni_Choice) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[1082] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use PatternFlowVxlanVni_Choice.ProtoReflect.Descriptor instead. +func (*PatternFlowVxlanVni_Choice) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{412, 0} +} + +type PatternFlowVxlanReserved1_Choice struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *PatternFlowVxlanReserved1_Choice) Reset() { + *x = PatternFlowVxlanReserved1_Choice{} + if protoimpl.UnsafeEnabled { + mi := &file_otg_proto_msgTypes[1083] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *PatternFlowVxlanReserved1_Choice) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PatternFlowVxlanReserved1_Choice) ProtoMessage() {} + +func (x *PatternFlowVxlanReserved1_Choice) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[1083] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use PatternFlowVxlanReserved1_Choice.ProtoReflect.Descriptor instead. +func (*PatternFlowVxlanReserved1_Choice) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{415, 0} +} + +type PatternFlowIpv4Version_Choice struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *PatternFlowIpv4Version_Choice) Reset() { + *x = PatternFlowIpv4Version_Choice{} + if protoimpl.UnsafeEnabled { + mi := &file_otg_proto_msgTypes[1084] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *PatternFlowIpv4Version_Choice) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PatternFlowIpv4Version_Choice) ProtoMessage() {} + +func (x *PatternFlowIpv4Version_Choice) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[1084] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use PatternFlowIpv4Version_Choice.ProtoReflect.Descriptor instead. +func (*PatternFlowIpv4Version_Choice) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{418, 0} +} + +type PatternFlowIpv4HeaderLength_Choice struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *PatternFlowIpv4HeaderLength_Choice) Reset() { + *x = PatternFlowIpv4HeaderLength_Choice{} + if protoimpl.UnsafeEnabled { + mi := &file_otg_proto_msgTypes[1085] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *PatternFlowIpv4HeaderLength_Choice) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PatternFlowIpv4HeaderLength_Choice) ProtoMessage() {} + +func (x *PatternFlowIpv4HeaderLength_Choice) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[1085] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use PatternFlowIpv4HeaderLength_Choice.ProtoReflect.Descriptor instead. +func (*PatternFlowIpv4HeaderLength_Choice) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{421, 0} +} + +type PatternFlowIpv4TotalLength_Choice struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *PatternFlowIpv4TotalLength_Choice) Reset() { + *x = PatternFlowIpv4TotalLength_Choice{} + if protoimpl.UnsafeEnabled { + mi := &file_otg_proto_msgTypes[1086] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *PatternFlowIpv4TotalLength_Choice) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PatternFlowIpv4TotalLength_Choice) ProtoMessage() {} + +func (x *PatternFlowIpv4TotalLength_Choice) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[1086] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use PatternFlowIpv4TotalLength_Choice.ProtoReflect.Descriptor instead. +func (*PatternFlowIpv4TotalLength_Choice) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{424, 0} +} + +type PatternFlowIpv4Identification_Choice struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *PatternFlowIpv4Identification_Choice) Reset() { + *x = PatternFlowIpv4Identification_Choice{} + if protoimpl.UnsafeEnabled { + mi := &file_otg_proto_msgTypes[1087] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *PatternFlowIpv4Identification_Choice) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PatternFlowIpv4Identification_Choice) ProtoMessage() {} + +func (x *PatternFlowIpv4Identification_Choice) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[1087] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use PatternFlowIpv4Identification_Choice.ProtoReflect.Descriptor instead. +func (*PatternFlowIpv4Identification_Choice) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{427, 0} +} + +type PatternFlowIpv4Reserved_Choice struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *PatternFlowIpv4Reserved_Choice) Reset() { + *x = PatternFlowIpv4Reserved_Choice{} + if protoimpl.UnsafeEnabled { + mi := &file_otg_proto_msgTypes[1088] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *PatternFlowIpv4Reserved_Choice) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PatternFlowIpv4Reserved_Choice) ProtoMessage() {} + +func (x *PatternFlowIpv4Reserved_Choice) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[1088] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use PatternFlowIpv4Reserved_Choice.ProtoReflect.Descriptor instead. +func (*PatternFlowIpv4Reserved_Choice) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{430, 0} +} + +type PatternFlowIpv4DontFragment_Choice struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *PatternFlowIpv4DontFragment_Choice) Reset() { + *x = PatternFlowIpv4DontFragment_Choice{} + if protoimpl.UnsafeEnabled { + mi := &file_otg_proto_msgTypes[1089] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *PatternFlowIpv4DontFragment_Choice) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PatternFlowIpv4DontFragment_Choice) ProtoMessage() {} + +func (x *PatternFlowIpv4DontFragment_Choice) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[1089] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use PatternFlowIpv4DontFragment_Choice.ProtoReflect.Descriptor instead. +func (*PatternFlowIpv4DontFragment_Choice) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{433, 0} +} + +type PatternFlowIpv4MoreFragments_Choice struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *PatternFlowIpv4MoreFragments_Choice) Reset() { + *x = PatternFlowIpv4MoreFragments_Choice{} + if protoimpl.UnsafeEnabled { + mi := &file_otg_proto_msgTypes[1090] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *PatternFlowIpv4MoreFragments_Choice) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PatternFlowIpv4MoreFragments_Choice) ProtoMessage() {} + +func (x *PatternFlowIpv4MoreFragments_Choice) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[1090] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use PatternFlowIpv4MoreFragments_Choice.ProtoReflect.Descriptor instead. +func (*PatternFlowIpv4MoreFragments_Choice) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{436, 0} +} + +type PatternFlowIpv4FragmentOffset_Choice struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *PatternFlowIpv4FragmentOffset_Choice) Reset() { + *x = PatternFlowIpv4FragmentOffset_Choice{} + if protoimpl.UnsafeEnabled { + mi := &file_otg_proto_msgTypes[1091] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *PatternFlowIpv4FragmentOffset_Choice) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PatternFlowIpv4FragmentOffset_Choice) ProtoMessage() {} + +func (x *PatternFlowIpv4FragmentOffset_Choice) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[1091] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use PatternFlowIpv4FragmentOffset_Choice.ProtoReflect.Descriptor instead. +func (*PatternFlowIpv4FragmentOffset_Choice) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{439, 0} +} + +type PatternFlowIpv4TimeToLive_Choice struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *PatternFlowIpv4TimeToLive_Choice) Reset() { + *x = PatternFlowIpv4TimeToLive_Choice{} + if protoimpl.UnsafeEnabled { + mi := &file_otg_proto_msgTypes[1092] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *PatternFlowIpv4TimeToLive_Choice) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PatternFlowIpv4TimeToLive_Choice) ProtoMessage() {} + +func (x *PatternFlowIpv4TimeToLive_Choice) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[1092] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use PatternFlowIpv4TimeToLive_Choice.ProtoReflect.Descriptor instead. +func (*PatternFlowIpv4TimeToLive_Choice) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{442, 0} +} + +type PatternFlowIpv4Protocol_Choice struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *PatternFlowIpv4Protocol_Choice) Reset() { + *x = PatternFlowIpv4Protocol_Choice{} + if protoimpl.UnsafeEnabled { + mi := &file_otg_proto_msgTypes[1093] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *PatternFlowIpv4Protocol_Choice) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PatternFlowIpv4Protocol_Choice) ProtoMessage() {} + +func (x *PatternFlowIpv4Protocol_Choice) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[1093] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use PatternFlowIpv4Protocol_Choice.ProtoReflect.Descriptor instead. +func (*PatternFlowIpv4Protocol_Choice) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{445, 0} +} + +type PatternFlowIpv4HeaderChecksum_Choice struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *PatternFlowIpv4HeaderChecksum_Choice) Reset() { + *x = PatternFlowIpv4HeaderChecksum_Choice{} + if protoimpl.UnsafeEnabled { + mi := &file_otg_proto_msgTypes[1094] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *PatternFlowIpv4HeaderChecksum_Choice) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PatternFlowIpv4HeaderChecksum_Choice) ProtoMessage() {} + +func (x *PatternFlowIpv4HeaderChecksum_Choice) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[1094] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use PatternFlowIpv4HeaderChecksum_Choice.ProtoReflect.Descriptor instead. +func (*PatternFlowIpv4HeaderChecksum_Choice) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{446, 0} +} + +type PatternFlowIpv4HeaderChecksum_Generated struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *PatternFlowIpv4HeaderChecksum_Generated) Reset() { + *x = PatternFlowIpv4HeaderChecksum_Generated{} + if protoimpl.UnsafeEnabled { + mi := &file_otg_proto_msgTypes[1095] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *PatternFlowIpv4HeaderChecksum_Generated) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PatternFlowIpv4HeaderChecksum_Generated) ProtoMessage() {} + +func (x *PatternFlowIpv4HeaderChecksum_Generated) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[1095] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use PatternFlowIpv4HeaderChecksum_Generated.ProtoReflect.Descriptor instead. +func (*PatternFlowIpv4HeaderChecksum_Generated) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{446, 1} +} + +type PatternFlowIpv4Src_Choice struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *PatternFlowIpv4Src_Choice) Reset() { + *x = PatternFlowIpv4Src_Choice{} + if protoimpl.UnsafeEnabled { + mi := &file_otg_proto_msgTypes[1096] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *PatternFlowIpv4Src_Choice) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PatternFlowIpv4Src_Choice) ProtoMessage() {} + +func (x *PatternFlowIpv4Src_Choice) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[1096] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use PatternFlowIpv4Src_Choice.ProtoReflect.Descriptor instead. +func (*PatternFlowIpv4Src_Choice) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{449, 0} +} + +type PatternFlowIpv4Dst_Choice struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *PatternFlowIpv4Dst_Choice) Reset() { + *x = PatternFlowIpv4Dst_Choice{} + if protoimpl.UnsafeEnabled { + mi := &file_otg_proto_msgTypes[1097] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *PatternFlowIpv4Dst_Choice) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PatternFlowIpv4Dst_Choice) ProtoMessage() {} + +func (x *PatternFlowIpv4Dst_Choice) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[1097] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use PatternFlowIpv4Dst_Choice.ProtoReflect.Descriptor instead. +func (*PatternFlowIpv4Dst_Choice) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{452, 0} +} + +type PatternFlowIpv4PriorityRaw_Choice struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *PatternFlowIpv4PriorityRaw_Choice) Reset() { + *x = PatternFlowIpv4PriorityRaw_Choice{} + if protoimpl.UnsafeEnabled { + mi := &file_otg_proto_msgTypes[1098] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *PatternFlowIpv4PriorityRaw_Choice) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PatternFlowIpv4PriorityRaw_Choice) ProtoMessage() {} + +func (x *PatternFlowIpv4PriorityRaw_Choice) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[1098] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use PatternFlowIpv4PriorityRaw_Choice.ProtoReflect.Descriptor instead. +func (*PatternFlowIpv4PriorityRaw_Choice) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{455, 0} +} + +type PatternFlowIpv4DscpPhb_Choice struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *PatternFlowIpv4DscpPhb_Choice) Reset() { + *x = PatternFlowIpv4DscpPhb_Choice{} + if protoimpl.UnsafeEnabled { + mi := &file_otg_proto_msgTypes[1099] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *PatternFlowIpv4DscpPhb_Choice) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PatternFlowIpv4DscpPhb_Choice) ProtoMessage() {} + +func (x *PatternFlowIpv4DscpPhb_Choice) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[1099] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use PatternFlowIpv4DscpPhb_Choice.ProtoReflect.Descriptor instead. +func (*PatternFlowIpv4DscpPhb_Choice) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{458, 0} +} + +type PatternFlowIpv4DscpEcn_Choice struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *PatternFlowIpv4DscpEcn_Choice) Reset() { + *x = PatternFlowIpv4DscpEcn_Choice{} + if protoimpl.UnsafeEnabled { + mi := &file_otg_proto_msgTypes[1100] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *PatternFlowIpv4DscpEcn_Choice) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PatternFlowIpv4DscpEcn_Choice) ProtoMessage() {} + +func (x *PatternFlowIpv4DscpEcn_Choice) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[1100] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use PatternFlowIpv4DscpEcn_Choice.ProtoReflect.Descriptor instead. +func (*PatternFlowIpv4DscpEcn_Choice) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{461, 0} +} + +type PatternFlowIpv4TosPrecedence_Choice struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *PatternFlowIpv4TosPrecedence_Choice) Reset() { + *x = PatternFlowIpv4TosPrecedence_Choice{} + if protoimpl.UnsafeEnabled { + mi := &file_otg_proto_msgTypes[1101] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *PatternFlowIpv4TosPrecedence_Choice) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PatternFlowIpv4TosPrecedence_Choice) ProtoMessage() {} + +func (x *PatternFlowIpv4TosPrecedence_Choice) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[1101] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use PatternFlowIpv4TosPrecedence_Choice.ProtoReflect.Descriptor instead. +func (*PatternFlowIpv4TosPrecedence_Choice) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{464, 0} +} + +type PatternFlowIpv4TosDelay_Choice struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *PatternFlowIpv4TosDelay_Choice) Reset() { + *x = PatternFlowIpv4TosDelay_Choice{} + if protoimpl.UnsafeEnabled { + mi := &file_otg_proto_msgTypes[1102] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *PatternFlowIpv4TosDelay_Choice) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PatternFlowIpv4TosDelay_Choice) ProtoMessage() {} + +func (x *PatternFlowIpv4TosDelay_Choice) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[1102] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use PatternFlowIpv4TosDelay_Choice.ProtoReflect.Descriptor instead. +func (*PatternFlowIpv4TosDelay_Choice) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{467, 0} +} + +type PatternFlowIpv4TosThroughput_Choice struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *PatternFlowIpv4TosThroughput_Choice) Reset() { + *x = PatternFlowIpv4TosThroughput_Choice{} + if protoimpl.UnsafeEnabled { + mi := &file_otg_proto_msgTypes[1103] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *PatternFlowIpv4TosThroughput_Choice) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PatternFlowIpv4TosThroughput_Choice) ProtoMessage() {} + +func (x *PatternFlowIpv4TosThroughput_Choice) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[1103] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use PatternFlowIpv4TosThroughput_Choice.ProtoReflect.Descriptor instead. +func (*PatternFlowIpv4TosThroughput_Choice) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{470, 0} +} + +type PatternFlowIpv4TosReliability_Choice struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *PatternFlowIpv4TosReliability_Choice) Reset() { + *x = PatternFlowIpv4TosReliability_Choice{} + if protoimpl.UnsafeEnabled { + mi := &file_otg_proto_msgTypes[1104] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *PatternFlowIpv4TosReliability_Choice) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PatternFlowIpv4TosReliability_Choice) ProtoMessage() {} + +func (x *PatternFlowIpv4TosReliability_Choice) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[1104] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use PatternFlowIpv4TosReliability_Choice.ProtoReflect.Descriptor instead. +func (*PatternFlowIpv4TosReliability_Choice) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{473, 0} +} + +type PatternFlowIpv4TosMonetary_Choice struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *PatternFlowIpv4TosMonetary_Choice) Reset() { + *x = PatternFlowIpv4TosMonetary_Choice{} + if protoimpl.UnsafeEnabled { + mi := &file_otg_proto_msgTypes[1105] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *PatternFlowIpv4TosMonetary_Choice) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PatternFlowIpv4TosMonetary_Choice) ProtoMessage() {} + +func (x *PatternFlowIpv4TosMonetary_Choice) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[1105] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use PatternFlowIpv4TosMonetary_Choice.ProtoReflect.Descriptor instead. +func (*PatternFlowIpv4TosMonetary_Choice) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{476, 0} +} + +type PatternFlowIpv4TosUnused_Choice struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *PatternFlowIpv4TosUnused_Choice) Reset() { + *x = PatternFlowIpv4TosUnused_Choice{} + if protoimpl.UnsafeEnabled { + mi := &file_otg_proto_msgTypes[1106] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *PatternFlowIpv4TosUnused_Choice) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PatternFlowIpv4TosUnused_Choice) ProtoMessage() {} + +func (x *PatternFlowIpv4TosUnused_Choice) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[1106] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use PatternFlowIpv4TosUnused_Choice.ProtoReflect.Descriptor instead. +func (*PatternFlowIpv4TosUnused_Choice) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{479, 0} +} + +type PatternFlowIpv6Version_Choice struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *PatternFlowIpv6Version_Choice) Reset() { + *x = PatternFlowIpv6Version_Choice{} + if protoimpl.UnsafeEnabled { + mi := &file_otg_proto_msgTypes[1107] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *PatternFlowIpv6Version_Choice) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PatternFlowIpv6Version_Choice) ProtoMessage() {} + +func (x *PatternFlowIpv6Version_Choice) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[1107] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use PatternFlowIpv6Version_Choice.ProtoReflect.Descriptor instead. +func (*PatternFlowIpv6Version_Choice) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{482, 0} +} + +type PatternFlowIpv6TrafficClass_Choice struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *PatternFlowIpv6TrafficClass_Choice) Reset() { + *x = PatternFlowIpv6TrafficClass_Choice{} + if protoimpl.UnsafeEnabled { + mi := &file_otg_proto_msgTypes[1108] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *PatternFlowIpv6TrafficClass_Choice) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PatternFlowIpv6TrafficClass_Choice) ProtoMessage() {} + +func (x *PatternFlowIpv6TrafficClass_Choice) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[1108] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use PatternFlowIpv6TrafficClass_Choice.ProtoReflect.Descriptor instead. +func (*PatternFlowIpv6TrafficClass_Choice) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{485, 0} +} + +type PatternFlowIpv6FlowLabel_Choice struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *PatternFlowIpv6FlowLabel_Choice) Reset() { + *x = PatternFlowIpv6FlowLabel_Choice{} + if protoimpl.UnsafeEnabled { + mi := &file_otg_proto_msgTypes[1109] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *PatternFlowIpv6FlowLabel_Choice) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PatternFlowIpv6FlowLabel_Choice) ProtoMessage() {} + +func (x *PatternFlowIpv6FlowLabel_Choice) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[1109] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use PatternFlowIpv6FlowLabel_Choice.ProtoReflect.Descriptor instead. +func (*PatternFlowIpv6FlowLabel_Choice) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{488, 0} +} + +type PatternFlowIpv6PayloadLength_Choice struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *PatternFlowIpv6PayloadLength_Choice) Reset() { + *x = PatternFlowIpv6PayloadLength_Choice{} + if protoimpl.UnsafeEnabled { + mi := &file_otg_proto_msgTypes[1110] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *PatternFlowIpv6PayloadLength_Choice) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PatternFlowIpv6PayloadLength_Choice) ProtoMessage() {} + +func (x *PatternFlowIpv6PayloadLength_Choice) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[1110] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use PatternFlowIpv6PayloadLength_Choice.ProtoReflect.Descriptor instead. +func (*PatternFlowIpv6PayloadLength_Choice) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{491, 0} +} + +type PatternFlowIpv6NextHeader_Choice struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *PatternFlowIpv6NextHeader_Choice) Reset() { + *x = PatternFlowIpv6NextHeader_Choice{} + if protoimpl.UnsafeEnabled { + mi := &file_otg_proto_msgTypes[1111] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *PatternFlowIpv6NextHeader_Choice) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PatternFlowIpv6NextHeader_Choice) ProtoMessage() {} + +func (x *PatternFlowIpv6NextHeader_Choice) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[1111] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use PatternFlowIpv6NextHeader_Choice.ProtoReflect.Descriptor instead. +func (*PatternFlowIpv6NextHeader_Choice) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{494, 0} +} + +type PatternFlowIpv6HopLimit_Choice struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *PatternFlowIpv6HopLimit_Choice) Reset() { + *x = PatternFlowIpv6HopLimit_Choice{} + if protoimpl.UnsafeEnabled { + mi := &file_otg_proto_msgTypes[1112] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *PatternFlowIpv6HopLimit_Choice) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PatternFlowIpv6HopLimit_Choice) ProtoMessage() {} + +func (x *PatternFlowIpv6HopLimit_Choice) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[1112] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use PatternFlowIpv6HopLimit_Choice.ProtoReflect.Descriptor instead. +func (*PatternFlowIpv6HopLimit_Choice) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{497, 0} +} + +type PatternFlowIpv6Src_Choice struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *PatternFlowIpv6Src_Choice) Reset() { + *x = PatternFlowIpv6Src_Choice{} + if protoimpl.UnsafeEnabled { + mi := &file_otg_proto_msgTypes[1113] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *PatternFlowIpv6Src_Choice) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PatternFlowIpv6Src_Choice) ProtoMessage() {} + +func (x *PatternFlowIpv6Src_Choice) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[1113] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use PatternFlowIpv6Src_Choice.ProtoReflect.Descriptor instead. +func (*PatternFlowIpv6Src_Choice) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{500, 0} +} + +type PatternFlowIpv6Dst_Choice struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *PatternFlowIpv6Dst_Choice) Reset() { + *x = PatternFlowIpv6Dst_Choice{} + if protoimpl.UnsafeEnabled { + mi := &file_otg_proto_msgTypes[1114] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *PatternFlowIpv6Dst_Choice) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PatternFlowIpv6Dst_Choice) ProtoMessage() {} + +func (x *PatternFlowIpv6Dst_Choice) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[1114] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use PatternFlowIpv6Dst_Choice.ProtoReflect.Descriptor instead. +func (*PatternFlowIpv6Dst_Choice) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{503, 0} +} + +type PatternFlowPfcPauseDst_Choice struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *PatternFlowPfcPauseDst_Choice) Reset() { + *x = PatternFlowPfcPauseDst_Choice{} + if protoimpl.UnsafeEnabled { + mi := &file_otg_proto_msgTypes[1115] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *PatternFlowPfcPauseDst_Choice) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PatternFlowPfcPauseDst_Choice) ProtoMessage() {} + +func (x *PatternFlowPfcPauseDst_Choice) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[1115] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use PatternFlowPfcPauseDst_Choice.ProtoReflect.Descriptor instead. +func (*PatternFlowPfcPauseDst_Choice) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{506, 0} +} + +type PatternFlowPfcPauseSrc_Choice struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *PatternFlowPfcPauseSrc_Choice) Reset() { + *x = PatternFlowPfcPauseSrc_Choice{} + if protoimpl.UnsafeEnabled { + mi := &file_otg_proto_msgTypes[1116] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *PatternFlowPfcPauseSrc_Choice) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PatternFlowPfcPauseSrc_Choice) ProtoMessage() {} + +func (x *PatternFlowPfcPauseSrc_Choice) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[1116] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use PatternFlowPfcPauseSrc_Choice.ProtoReflect.Descriptor instead. +func (*PatternFlowPfcPauseSrc_Choice) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{509, 0} +} + +type PatternFlowPfcPauseEtherType_Choice struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *PatternFlowPfcPauseEtherType_Choice) Reset() { + *x = PatternFlowPfcPauseEtherType_Choice{} + if protoimpl.UnsafeEnabled { + mi := &file_otg_proto_msgTypes[1117] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *PatternFlowPfcPauseEtherType_Choice) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PatternFlowPfcPauseEtherType_Choice) ProtoMessage() {} + +func (x *PatternFlowPfcPauseEtherType_Choice) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[1117] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use PatternFlowPfcPauseEtherType_Choice.ProtoReflect.Descriptor instead. +func (*PatternFlowPfcPauseEtherType_Choice) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{512, 0} +} + +type PatternFlowPfcPauseControlOpCode_Choice struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *PatternFlowPfcPauseControlOpCode_Choice) Reset() { + *x = PatternFlowPfcPauseControlOpCode_Choice{} + if protoimpl.UnsafeEnabled { + mi := &file_otg_proto_msgTypes[1118] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *PatternFlowPfcPauseControlOpCode_Choice) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PatternFlowPfcPauseControlOpCode_Choice) ProtoMessage() {} + +func (x *PatternFlowPfcPauseControlOpCode_Choice) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[1118] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use PatternFlowPfcPauseControlOpCode_Choice.ProtoReflect.Descriptor instead. +func (*PatternFlowPfcPauseControlOpCode_Choice) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{515, 0} +} + +type PatternFlowPfcPauseClassEnableVector_Choice struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *PatternFlowPfcPauseClassEnableVector_Choice) Reset() { + *x = PatternFlowPfcPauseClassEnableVector_Choice{} + if protoimpl.UnsafeEnabled { + mi := &file_otg_proto_msgTypes[1119] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *PatternFlowPfcPauseClassEnableVector_Choice) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PatternFlowPfcPauseClassEnableVector_Choice) ProtoMessage() {} + +func (x *PatternFlowPfcPauseClassEnableVector_Choice) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[1119] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use PatternFlowPfcPauseClassEnableVector_Choice.ProtoReflect.Descriptor instead. +func (*PatternFlowPfcPauseClassEnableVector_Choice) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{518, 0} +} + +type PatternFlowPfcPausePauseClass0_Choice struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *PatternFlowPfcPausePauseClass0_Choice) Reset() { + *x = PatternFlowPfcPausePauseClass0_Choice{} + if protoimpl.UnsafeEnabled { + mi := &file_otg_proto_msgTypes[1120] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *PatternFlowPfcPausePauseClass0_Choice) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PatternFlowPfcPausePauseClass0_Choice) ProtoMessage() {} + +func (x *PatternFlowPfcPausePauseClass0_Choice) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[1120] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use PatternFlowPfcPausePauseClass0_Choice.ProtoReflect.Descriptor instead. +func (*PatternFlowPfcPausePauseClass0_Choice) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{521, 0} +} + +type PatternFlowPfcPausePauseClass1_Choice struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *PatternFlowPfcPausePauseClass1_Choice) Reset() { + *x = PatternFlowPfcPausePauseClass1_Choice{} + if protoimpl.UnsafeEnabled { + mi := &file_otg_proto_msgTypes[1121] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *PatternFlowPfcPausePauseClass1_Choice) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PatternFlowPfcPausePauseClass1_Choice) ProtoMessage() {} + +func (x *PatternFlowPfcPausePauseClass1_Choice) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[1121] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use PatternFlowPfcPausePauseClass1_Choice.ProtoReflect.Descriptor instead. +func (*PatternFlowPfcPausePauseClass1_Choice) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{524, 0} +} + +type PatternFlowPfcPausePauseClass2_Choice struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *PatternFlowPfcPausePauseClass2_Choice) Reset() { + *x = PatternFlowPfcPausePauseClass2_Choice{} + if protoimpl.UnsafeEnabled { + mi := &file_otg_proto_msgTypes[1122] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *PatternFlowPfcPausePauseClass2_Choice) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PatternFlowPfcPausePauseClass2_Choice) ProtoMessage() {} + +func (x *PatternFlowPfcPausePauseClass2_Choice) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[1122] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use PatternFlowPfcPausePauseClass2_Choice.ProtoReflect.Descriptor instead. +func (*PatternFlowPfcPausePauseClass2_Choice) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{527, 0} +} + +type PatternFlowPfcPausePauseClass3_Choice struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *PatternFlowPfcPausePauseClass3_Choice) Reset() { + *x = PatternFlowPfcPausePauseClass3_Choice{} + if protoimpl.UnsafeEnabled { + mi := &file_otg_proto_msgTypes[1123] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *PatternFlowPfcPausePauseClass3_Choice) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PatternFlowPfcPausePauseClass3_Choice) ProtoMessage() {} + +func (x *PatternFlowPfcPausePauseClass3_Choice) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[1123] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use PatternFlowPfcPausePauseClass3_Choice.ProtoReflect.Descriptor instead. +func (*PatternFlowPfcPausePauseClass3_Choice) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{530, 0} +} + +type PatternFlowPfcPausePauseClass4_Choice struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *PatternFlowPfcPausePauseClass4_Choice) Reset() { + *x = PatternFlowPfcPausePauseClass4_Choice{} + if protoimpl.UnsafeEnabled { + mi := &file_otg_proto_msgTypes[1124] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *PatternFlowPfcPausePauseClass4_Choice) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PatternFlowPfcPausePauseClass4_Choice) ProtoMessage() {} + +func (x *PatternFlowPfcPausePauseClass4_Choice) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[1124] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use PatternFlowPfcPausePauseClass4_Choice.ProtoReflect.Descriptor instead. +func (*PatternFlowPfcPausePauseClass4_Choice) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{533, 0} +} + +type PatternFlowPfcPausePauseClass5_Choice struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *PatternFlowPfcPausePauseClass5_Choice) Reset() { + *x = PatternFlowPfcPausePauseClass5_Choice{} + if protoimpl.UnsafeEnabled { + mi := &file_otg_proto_msgTypes[1125] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *PatternFlowPfcPausePauseClass5_Choice) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PatternFlowPfcPausePauseClass5_Choice) ProtoMessage() {} + +func (x *PatternFlowPfcPausePauseClass5_Choice) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[1125] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use PatternFlowPfcPausePauseClass5_Choice.ProtoReflect.Descriptor instead. +func (*PatternFlowPfcPausePauseClass5_Choice) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{536, 0} +} + +type PatternFlowPfcPausePauseClass6_Choice struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *PatternFlowPfcPausePauseClass6_Choice) Reset() { + *x = PatternFlowPfcPausePauseClass6_Choice{} + if protoimpl.UnsafeEnabled { + mi := &file_otg_proto_msgTypes[1126] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *PatternFlowPfcPausePauseClass6_Choice) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PatternFlowPfcPausePauseClass6_Choice) ProtoMessage() {} + +func (x *PatternFlowPfcPausePauseClass6_Choice) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[1126] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use PatternFlowPfcPausePauseClass6_Choice.ProtoReflect.Descriptor instead. +func (*PatternFlowPfcPausePauseClass6_Choice) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{539, 0} +} + +type PatternFlowPfcPausePauseClass7_Choice struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *PatternFlowPfcPausePauseClass7_Choice) Reset() { + *x = PatternFlowPfcPausePauseClass7_Choice{} + if protoimpl.UnsafeEnabled { + mi := &file_otg_proto_msgTypes[1127] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *PatternFlowPfcPausePauseClass7_Choice) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PatternFlowPfcPausePauseClass7_Choice) ProtoMessage() {} + +func (x *PatternFlowPfcPausePauseClass7_Choice) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[1127] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use PatternFlowPfcPausePauseClass7_Choice.ProtoReflect.Descriptor instead. +func (*PatternFlowPfcPausePauseClass7_Choice) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{542, 0} +} + +type PatternFlowEthernetPauseDst_Choice struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *PatternFlowEthernetPauseDst_Choice) Reset() { + *x = PatternFlowEthernetPauseDst_Choice{} + if protoimpl.UnsafeEnabled { + mi := &file_otg_proto_msgTypes[1128] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *PatternFlowEthernetPauseDst_Choice) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PatternFlowEthernetPauseDst_Choice) ProtoMessage() {} + +func (x *PatternFlowEthernetPauseDst_Choice) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[1128] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use PatternFlowEthernetPauseDst_Choice.ProtoReflect.Descriptor instead. +func (*PatternFlowEthernetPauseDst_Choice) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{545, 0} +} + +type PatternFlowEthernetPauseSrc_Choice struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *PatternFlowEthernetPauseSrc_Choice) Reset() { + *x = PatternFlowEthernetPauseSrc_Choice{} + if protoimpl.UnsafeEnabled { + mi := &file_otg_proto_msgTypes[1129] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *PatternFlowEthernetPauseSrc_Choice) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PatternFlowEthernetPauseSrc_Choice) ProtoMessage() {} + +func (x *PatternFlowEthernetPauseSrc_Choice) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[1129] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use PatternFlowEthernetPauseSrc_Choice.ProtoReflect.Descriptor instead. +func (*PatternFlowEthernetPauseSrc_Choice) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{548, 0} +} + +type PatternFlowEthernetPauseEtherType_Choice struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *PatternFlowEthernetPauseEtherType_Choice) Reset() { + *x = PatternFlowEthernetPauseEtherType_Choice{} + if protoimpl.UnsafeEnabled { + mi := &file_otg_proto_msgTypes[1130] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *PatternFlowEthernetPauseEtherType_Choice) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PatternFlowEthernetPauseEtherType_Choice) ProtoMessage() {} + +func (x *PatternFlowEthernetPauseEtherType_Choice) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[1130] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use PatternFlowEthernetPauseEtherType_Choice.ProtoReflect.Descriptor instead. +func (*PatternFlowEthernetPauseEtherType_Choice) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{551, 0} +} + +type PatternFlowEthernetPauseControlOpCode_Choice struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *PatternFlowEthernetPauseControlOpCode_Choice) Reset() { + *x = PatternFlowEthernetPauseControlOpCode_Choice{} + if protoimpl.UnsafeEnabled { + mi := &file_otg_proto_msgTypes[1131] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *PatternFlowEthernetPauseControlOpCode_Choice) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PatternFlowEthernetPauseControlOpCode_Choice) ProtoMessage() {} + +func (x *PatternFlowEthernetPauseControlOpCode_Choice) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[1131] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use PatternFlowEthernetPauseControlOpCode_Choice.ProtoReflect.Descriptor instead. +func (*PatternFlowEthernetPauseControlOpCode_Choice) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{554, 0} +} + +type PatternFlowEthernetPauseTime_Choice struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *PatternFlowEthernetPauseTime_Choice) Reset() { + *x = PatternFlowEthernetPauseTime_Choice{} + if protoimpl.UnsafeEnabled { + mi := &file_otg_proto_msgTypes[1132] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *PatternFlowEthernetPauseTime_Choice) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PatternFlowEthernetPauseTime_Choice) ProtoMessage() {} + +func (x *PatternFlowEthernetPauseTime_Choice) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[1132] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use PatternFlowEthernetPauseTime_Choice.ProtoReflect.Descriptor instead. +func (*PatternFlowEthernetPauseTime_Choice) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{557, 0} +} + +type PatternFlowTcpSrcPort_Choice struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *PatternFlowTcpSrcPort_Choice) Reset() { + *x = PatternFlowTcpSrcPort_Choice{} + if protoimpl.UnsafeEnabled { + mi := &file_otg_proto_msgTypes[1133] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *PatternFlowTcpSrcPort_Choice) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PatternFlowTcpSrcPort_Choice) ProtoMessage() {} + +func (x *PatternFlowTcpSrcPort_Choice) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[1133] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use PatternFlowTcpSrcPort_Choice.ProtoReflect.Descriptor instead. +func (*PatternFlowTcpSrcPort_Choice) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{560, 0} +} + +type PatternFlowTcpDstPort_Choice struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *PatternFlowTcpDstPort_Choice) Reset() { + *x = PatternFlowTcpDstPort_Choice{} + if protoimpl.UnsafeEnabled { + mi := &file_otg_proto_msgTypes[1134] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *PatternFlowTcpDstPort_Choice) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PatternFlowTcpDstPort_Choice) ProtoMessage() {} + +func (x *PatternFlowTcpDstPort_Choice) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[1134] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use PatternFlowTcpDstPort_Choice.ProtoReflect.Descriptor instead. +func (*PatternFlowTcpDstPort_Choice) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{563, 0} +} + +type PatternFlowTcpSeqNum_Choice struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *PatternFlowTcpSeqNum_Choice) Reset() { + *x = PatternFlowTcpSeqNum_Choice{} + if protoimpl.UnsafeEnabled { + mi := &file_otg_proto_msgTypes[1135] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *PatternFlowTcpSeqNum_Choice) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PatternFlowTcpSeqNum_Choice) ProtoMessage() {} + +func (x *PatternFlowTcpSeqNum_Choice) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[1135] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use PatternFlowTcpSeqNum_Choice.ProtoReflect.Descriptor instead. +func (*PatternFlowTcpSeqNum_Choice) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{566, 0} +} + +type PatternFlowTcpAckNum_Choice struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *PatternFlowTcpAckNum_Choice) Reset() { + *x = PatternFlowTcpAckNum_Choice{} + if protoimpl.UnsafeEnabled { + mi := &file_otg_proto_msgTypes[1136] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *PatternFlowTcpAckNum_Choice) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PatternFlowTcpAckNum_Choice) ProtoMessage() {} + +func (x *PatternFlowTcpAckNum_Choice) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[1136] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use PatternFlowTcpAckNum_Choice.ProtoReflect.Descriptor instead. +func (*PatternFlowTcpAckNum_Choice) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{569, 0} +} + +type PatternFlowTcpDataOffset_Choice struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *PatternFlowTcpDataOffset_Choice) Reset() { + *x = PatternFlowTcpDataOffset_Choice{} + if protoimpl.UnsafeEnabled { + mi := &file_otg_proto_msgTypes[1137] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *PatternFlowTcpDataOffset_Choice) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PatternFlowTcpDataOffset_Choice) ProtoMessage() {} + +func (x *PatternFlowTcpDataOffset_Choice) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[1137] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use PatternFlowTcpDataOffset_Choice.ProtoReflect.Descriptor instead. +func (*PatternFlowTcpDataOffset_Choice) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{572, 0} +} + +type PatternFlowTcpEcnNs_Choice struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *PatternFlowTcpEcnNs_Choice) Reset() { + *x = PatternFlowTcpEcnNs_Choice{} + if protoimpl.UnsafeEnabled { + mi := &file_otg_proto_msgTypes[1138] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *PatternFlowTcpEcnNs_Choice) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PatternFlowTcpEcnNs_Choice) ProtoMessage() {} + +func (x *PatternFlowTcpEcnNs_Choice) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[1138] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use PatternFlowTcpEcnNs_Choice.ProtoReflect.Descriptor instead. +func (*PatternFlowTcpEcnNs_Choice) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{575, 0} +} + +type PatternFlowTcpEcnCwr_Choice struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *PatternFlowTcpEcnCwr_Choice) Reset() { + *x = PatternFlowTcpEcnCwr_Choice{} + if protoimpl.UnsafeEnabled { + mi := &file_otg_proto_msgTypes[1139] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *PatternFlowTcpEcnCwr_Choice) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PatternFlowTcpEcnCwr_Choice) ProtoMessage() {} + +func (x *PatternFlowTcpEcnCwr_Choice) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[1139] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use PatternFlowTcpEcnCwr_Choice.ProtoReflect.Descriptor instead. +func (*PatternFlowTcpEcnCwr_Choice) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{578, 0} +} + +type PatternFlowTcpEcnEcho_Choice struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *PatternFlowTcpEcnEcho_Choice) Reset() { + *x = PatternFlowTcpEcnEcho_Choice{} + if protoimpl.UnsafeEnabled { + mi := &file_otg_proto_msgTypes[1140] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *PatternFlowTcpEcnEcho_Choice) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PatternFlowTcpEcnEcho_Choice) ProtoMessage() {} + +func (x *PatternFlowTcpEcnEcho_Choice) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[1140] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use PatternFlowTcpEcnEcho_Choice.ProtoReflect.Descriptor instead. +func (*PatternFlowTcpEcnEcho_Choice) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{581, 0} +} + +type PatternFlowTcpCtlUrg_Choice struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *PatternFlowTcpCtlUrg_Choice) Reset() { + *x = PatternFlowTcpCtlUrg_Choice{} + if protoimpl.UnsafeEnabled { + mi := &file_otg_proto_msgTypes[1141] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *PatternFlowTcpCtlUrg_Choice) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PatternFlowTcpCtlUrg_Choice) ProtoMessage() {} + +func (x *PatternFlowTcpCtlUrg_Choice) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[1141] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use PatternFlowTcpCtlUrg_Choice.ProtoReflect.Descriptor instead. +func (*PatternFlowTcpCtlUrg_Choice) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{584, 0} +} + +type PatternFlowTcpCtlAck_Choice struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *PatternFlowTcpCtlAck_Choice) Reset() { + *x = PatternFlowTcpCtlAck_Choice{} + if protoimpl.UnsafeEnabled { + mi := &file_otg_proto_msgTypes[1142] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *PatternFlowTcpCtlAck_Choice) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PatternFlowTcpCtlAck_Choice) ProtoMessage() {} + +func (x *PatternFlowTcpCtlAck_Choice) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[1142] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use PatternFlowTcpCtlAck_Choice.ProtoReflect.Descriptor instead. +func (*PatternFlowTcpCtlAck_Choice) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{587, 0} +} + +type PatternFlowTcpCtlPsh_Choice struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *PatternFlowTcpCtlPsh_Choice) Reset() { + *x = PatternFlowTcpCtlPsh_Choice{} + if protoimpl.UnsafeEnabled { + mi := &file_otg_proto_msgTypes[1143] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *PatternFlowTcpCtlPsh_Choice) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PatternFlowTcpCtlPsh_Choice) ProtoMessage() {} + +func (x *PatternFlowTcpCtlPsh_Choice) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[1143] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use PatternFlowTcpCtlPsh_Choice.ProtoReflect.Descriptor instead. +func (*PatternFlowTcpCtlPsh_Choice) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{590, 0} +} + +type PatternFlowTcpCtlRst_Choice struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *PatternFlowTcpCtlRst_Choice) Reset() { + *x = PatternFlowTcpCtlRst_Choice{} + if protoimpl.UnsafeEnabled { + mi := &file_otg_proto_msgTypes[1144] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *PatternFlowTcpCtlRst_Choice) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PatternFlowTcpCtlRst_Choice) ProtoMessage() {} + +func (x *PatternFlowTcpCtlRst_Choice) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[1144] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use PatternFlowTcpCtlRst_Choice.ProtoReflect.Descriptor instead. +func (*PatternFlowTcpCtlRst_Choice) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{593, 0} +} + +type PatternFlowTcpCtlSyn_Choice struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *PatternFlowTcpCtlSyn_Choice) Reset() { + *x = PatternFlowTcpCtlSyn_Choice{} + if protoimpl.UnsafeEnabled { + mi := &file_otg_proto_msgTypes[1145] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *PatternFlowTcpCtlSyn_Choice) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PatternFlowTcpCtlSyn_Choice) ProtoMessage() {} + +func (x *PatternFlowTcpCtlSyn_Choice) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[1145] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use PatternFlowTcpCtlSyn_Choice.ProtoReflect.Descriptor instead. +func (*PatternFlowTcpCtlSyn_Choice) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{596, 0} +} + +type PatternFlowTcpCtlFin_Choice struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *PatternFlowTcpCtlFin_Choice) Reset() { + *x = PatternFlowTcpCtlFin_Choice{} + if protoimpl.UnsafeEnabled { + mi := &file_otg_proto_msgTypes[1146] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *PatternFlowTcpCtlFin_Choice) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PatternFlowTcpCtlFin_Choice) ProtoMessage() {} + +func (x *PatternFlowTcpCtlFin_Choice) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[1146] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use PatternFlowTcpCtlFin_Choice.ProtoReflect.Descriptor instead. +func (*PatternFlowTcpCtlFin_Choice) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{599, 0} +} + +type PatternFlowTcpWindow_Choice struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *PatternFlowTcpWindow_Choice) Reset() { + *x = PatternFlowTcpWindow_Choice{} + if protoimpl.UnsafeEnabled { + mi := &file_otg_proto_msgTypes[1147] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *PatternFlowTcpWindow_Choice) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PatternFlowTcpWindow_Choice) ProtoMessage() {} + +func (x *PatternFlowTcpWindow_Choice) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[1147] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use PatternFlowTcpWindow_Choice.ProtoReflect.Descriptor instead. +func (*PatternFlowTcpWindow_Choice) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{602, 0} +} + +type PatternFlowUdpSrcPort_Choice struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *PatternFlowUdpSrcPort_Choice) Reset() { + *x = PatternFlowUdpSrcPort_Choice{} + if protoimpl.UnsafeEnabled { + mi := &file_otg_proto_msgTypes[1148] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *PatternFlowUdpSrcPort_Choice) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PatternFlowUdpSrcPort_Choice) ProtoMessage() {} + +func (x *PatternFlowUdpSrcPort_Choice) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[1148] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use PatternFlowUdpSrcPort_Choice.ProtoReflect.Descriptor instead. +func (*PatternFlowUdpSrcPort_Choice) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{605, 0} +} + +type PatternFlowUdpDstPort_Choice struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *PatternFlowUdpDstPort_Choice) Reset() { + *x = PatternFlowUdpDstPort_Choice{} + if protoimpl.UnsafeEnabled { + mi := &file_otg_proto_msgTypes[1149] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *PatternFlowUdpDstPort_Choice) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PatternFlowUdpDstPort_Choice) ProtoMessage() {} + +func (x *PatternFlowUdpDstPort_Choice) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[1149] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use PatternFlowUdpDstPort_Choice.ProtoReflect.Descriptor instead. +func (*PatternFlowUdpDstPort_Choice) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{608, 0} +} + +type PatternFlowUdpLength_Choice struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *PatternFlowUdpLength_Choice) Reset() { + *x = PatternFlowUdpLength_Choice{} + if protoimpl.UnsafeEnabled { + mi := &file_otg_proto_msgTypes[1150] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *PatternFlowUdpLength_Choice) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PatternFlowUdpLength_Choice) ProtoMessage() {} + +func (x *PatternFlowUdpLength_Choice) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[1150] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use PatternFlowUdpLength_Choice.ProtoReflect.Descriptor instead. +func (*PatternFlowUdpLength_Choice) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{611, 0} +} + +type PatternFlowUdpChecksum_Choice struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *PatternFlowUdpChecksum_Choice) Reset() { + *x = PatternFlowUdpChecksum_Choice{} + if protoimpl.UnsafeEnabled { + mi := &file_otg_proto_msgTypes[1151] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *PatternFlowUdpChecksum_Choice) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PatternFlowUdpChecksum_Choice) ProtoMessage() {} + +func (x *PatternFlowUdpChecksum_Choice) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[1151] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use PatternFlowUdpChecksum_Choice.ProtoReflect.Descriptor instead. +func (*PatternFlowUdpChecksum_Choice) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{612, 0} +} + +type PatternFlowUdpChecksum_Generated struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *PatternFlowUdpChecksum_Generated) Reset() { + *x = PatternFlowUdpChecksum_Generated{} + if protoimpl.UnsafeEnabled { + mi := &file_otg_proto_msgTypes[1152] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *PatternFlowUdpChecksum_Generated) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PatternFlowUdpChecksum_Generated) ProtoMessage() {} + +func (x *PatternFlowUdpChecksum_Generated) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[1152] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use PatternFlowUdpChecksum_Generated.ProtoReflect.Descriptor instead. +func (*PatternFlowUdpChecksum_Generated) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{612, 1} +} + +type PatternFlowGreChecksumPresent_Choice struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *PatternFlowGreChecksumPresent_Choice) Reset() { + *x = PatternFlowGreChecksumPresent_Choice{} + if protoimpl.UnsafeEnabled { + mi := &file_otg_proto_msgTypes[1153] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *PatternFlowGreChecksumPresent_Choice) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PatternFlowGreChecksumPresent_Choice) ProtoMessage() {} + +func (x *PatternFlowGreChecksumPresent_Choice) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[1153] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use PatternFlowGreChecksumPresent_Choice.ProtoReflect.Descriptor instead. +func (*PatternFlowGreChecksumPresent_Choice) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{615, 0} +} + +type PatternFlowGreReserved0_Choice struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *PatternFlowGreReserved0_Choice) Reset() { + *x = PatternFlowGreReserved0_Choice{} + if protoimpl.UnsafeEnabled { + mi := &file_otg_proto_msgTypes[1154] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *PatternFlowGreReserved0_Choice) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PatternFlowGreReserved0_Choice) ProtoMessage() {} + +func (x *PatternFlowGreReserved0_Choice) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[1154] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use PatternFlowGreReserved0_Choice.ProtoReflect.Descriptor instead. +func (*PatternFlowGreReserved0_Choice) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{618, 0} +} + +type PatternFlowGreVersion_Choice struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *PatternFlowGreVersion_Choice) Reset() { + *x = PatternFlowGreVersion_Choice{} + if protoimpl.UnsafeEnabled { + mi := &file_otg_proto_msgTypes[1155] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *PatternFlowGreVersion_Choice) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PatternFlowGreVersion_Choice) ProtoMessage() {} + +func (x *PatternFlowGreVersion_Choice) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[1155] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use PatternFlowGreVersion_Choice.ProtoReflect.Descriptor instead. +func (*PatternFlowGreVersion_Choice) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{621, 0} +} + +type PatternFlowGreProtocol_Choice struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *PatternFlowGreProtocol_Choice) Reset() { + *x = PatternFlowGreProtocol_Choice{} + if protoimpl.UnsafeEnabled { + mi := &file_otg_proto_msgTypes[1156] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *PatternFlowGreProtocol_Choice) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PatternFlowGreProtocol_Choice) ProtoMessage() {} + +func (x *PatternFlowGreProtocol_Choice) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[1156] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use PatternFlowGreProtocol_Choice.ProtoReflect.Descriptor instead. +func (*PatternFlowGreProtocol_Choice) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{624, 0} +} + +type PatternFlowGreChecksum_Choice struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *PatternFlowGreChecksum_Choice) Reset() { + *x = PatternFlowGreChecksum_Choice{} + if protoimpl.UnsafeEnabled { + mi := &file_otg_proto_msgTypes[1157] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *PatternFlowGreChecksum_Choice) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PatternFlowGreChecksum_Choice) ProtoMessage() {} + +func (x *PatternFlowGreChecksum_Choice) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[1157] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use PatternFlowGreChecksum_Choice.ProtoReflect.Descriptor instead. +func (*PatternFlowGreChecksum_Choice) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{625, 0} +} + +type PatternFlowGreChecksum_Generated struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *PatternFlowGreChecksum_Generated) Reset() { + *x = PatternFlowGreChecksum_Generated{} + if protoimpl.UnsafeEnabled { + mi := &file_otg_proto_msgTypes[1158] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *PatternFlowGreChecksum_Generated) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PatternFlowGreChecksum_Generated) ProtoMessage() {} + +func (x *PatternFlowGreChecksum_Generated) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[1158] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use PatternFlowGreChecksum_Generated.ProtoReflect.Descriptor instead. +func (*PatternFlowGreChecksum_Generated) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{625, 1} +} + +type PatternFlowGreReserved1_Choice struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *PatternFlowGreReserved1_Choice) Reset() { + *x = PatternFlowGreReserved1_Choice{} + if protoimpl.UnsafeEnabled { + mi := &file_otg_proto_msgTypes[1159] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *PatternFlowGreReserved1_Choice) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PatternFlowGreReserved1_Choice) ProtoMessage() {} + +func (x *PatternFlowGreReserved1_Choice) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[1159] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use PatternFlowGreReserved1_Choice.ProtoReflect.Descriptor instead. +func (*PatternFlowGreReserved1_Choice) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{628, 0} +} + +type PatternFlowGtpv1Version_Choice struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *PatternFlowGtpv1Version_Choice) Reset() { + *x = PatternFlowGtpv1Version_Choice{} + if protoimpl.UnsafeEnabled { + mi := &file_otg_proto_msgTypes[1160] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *PatternFlowGtpv1Version_Choice) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PatternFlowGtpv1Version_Choice) ProtoMessage() {} + +func (x *PatternFlowGtpv1Version_Choice) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[1160] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use PatternFlowGtpv1Version_Choice.ProtoReflect.Descriptor instead. +func (*PatternFlowGtpv1Version_Choice) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{631, 0} +} + +type PatternFlowGtpv1ProtocolType_Choice struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *PatternFlowGtpv1ProtocolType_Choice) Reset() { + *x = PatternFlowGtpv1ProtocolType_Choice{} + if protoimpl.UnsafeEnabled { + mi := &file_otg_proto_msgTypes[1161] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *PatternFlowGtpv1ProtocolType_Choice) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PatternFlowGtpv1ProtocolType_Choice) ProtoMessage() {} + +func (x *PatternFlowGtpv1ProtocolType_Choice) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[1161] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use PatternFlowGtpv1ProtocolType_Choice.ProtoReflect.Descriptor instead. +func (*PatternFlowGtpv1ProtocolType_Choice) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{634, 0} +} + +type PatternFlowGtpv1Reserved_Choice struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *PatternFlowGtpv1Reserved_Choice) Reset() { + *x = PatternFlowGtpv1Reserved_Choice{} + if protoimpl.UnsafeEnabled { + mi := &file_otg_proto_msgTypes[1162] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *PatternFlowGtpv1Reserved_Choice) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PatternFlowGtpv1Reserved_Choice) ProtoMessage() {} + +func (x *PatternFlowGtpv1Reserved_Choice) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[1162] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use PatternFlowGtpv1Reserved_Choice.ProtoReflect.Descriptor instead. +func (*PatternFlowGtpv1Reserved_Choice) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{637, 0} +} + +type PatternFlowGtpv1EFlag_Choice struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *PatternFlowGtpv1EFlag_Choice) Reset() { + *x = PatternFlowGtpv1EFlag_Choice{} + if protoimpl.UnsafeEnabled { + mi := &file_otg_proto_msgTypes[1163] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *PatternFlowGtpv1EFlag_Choice) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PatternFlowGtpv1EFlag_Choice) ProtoMessage() {} + +func (x *PatternFlowGtpv1EFlag_Choice) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[1163] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use PatternFlowGtpv1EFlag_Choice.ProtoReflect.Descriptor instead. +func (*PatternFlowGtpv1EFlag_Choice) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{640, 0} +} + +type PatternFlowGtpv1SFlag_Choice struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *PatternFlowGtpv1SFlag_Choice) Reset() { + *x = PatternFlowGtpv1SFlag_Choice{} + if protoimpl.UnsafeEnabled { + mi := &file_otg_proto_msgTypes[1164] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *PatternFlowGtpv1SFlag_Choice) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PatternFlowGtpv1SFlag_Choice) ProtoMessage() {} + +func (x *PatternFlowGtpv1SFlag_Choice) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[1164] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use PatternFlowGtpv1SFlag_Choice.ProtoReflect.Descriptor instead. +func (*PatternFlowGtpv1SFlag_Choice) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{643, 0} +} + +type PatternFlowGtpv1PnFlag_Choice struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *PatternFlowGtpv1PnFlag_Choice) Reset() { + *x = PatternFlowGtpv1PnFlag_Choice{} + if protoimpl.UnsafeEnabled { + mi := &file_otg_proto_msgTypes[1165] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *PatternFlowGtpv1PnFlag_Choice) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PatternFlowGtpv1PnFlag_Choice) ProtoMessage() {} + +func (x *PatternFlowGtpv1PnFlag_Choice) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[1165] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use PatternFlowGtpv1PnFlag_Choice.ProtoReflect.Descriptor instead. +func (*PatternFlowGtpv1PnFlag_Choice) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{646, 0} +} + +type PatternFlowGtpv1MessageType_Choice struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *PatternFlowGtpv1MessageType_Choice) Reset() { + *x = PatternFlowGtpv1MessageType_Choice{} + if protoimpl.UnsafeEnabled { + mi := &file_otg_proto_msgTypes[1166] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *PatternFlowGtpv1MessageType_Choice) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PatternFlowGtpv1MessageType_Choice) ProtoMessage() {} + +func (x *PatternFlowGtpv1MessageType_Choice) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[1166] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use PatternFlowGtpv1MessageType_Choice.ProtoReflect.Descriptor instead. +func (*PatternFlowGtpv1MessageType_Choice) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{649, 0} +} + +type PatternFlowGtpv1MessageLength_Choice struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *PatternFlowGtpv1MessageLength_Choice) Reset() { + *x = PatternFlowGtpv1MessageLength_Choice{} + if protoimpl.UnsafeEnabled { + mi := &file_otg_proto_msgTypes[1167] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *PatternFlowGtpv1MessageLength_Choice) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PatternFlowGtpv1MessageLength_Choice) ProtoMessage() {} + +func (x *PatternFlowGtpv1MessageLength_Choice) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[1167] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use PatternFlowGtpv1MessageLength_Choice.ProtoReflect.Descriptor instead. +func (*PatternFlowGtpv1MessageLength_Choice) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{652, 0} +} + +type PatternFlowGtpv1Teid_Choice struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *PatternFlowGtpv1Teid_Choice) Reset() { + *x = PatternFlowGtpv1Teid_Choice{} + if protoimpl.UnsafeEnabled { + mi := &file_otg_proto_msgTypes[1168] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *PatternFlowGtpv1Teid_Choice) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PatternFlowGtpv1Teid_Choice) ProtoMessage() {} + +func (x *PatternFlowGtpv1Teid_Choice) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[1168] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use PatternFlowGtpv1Teid_Choice.ProtoReflect.Descriptor instead. +func (*PatternFlowGtpv1Teid_Choice) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{655, 0} +} + +type PatternFlowGtpv1SquenceNumber_Choice struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *PatternFlowGtpv1SquenceNumber_Choice) Reset() { + *x = PatternFlowGtpv1SquenceNumber_Choice{} + if protoimpl.UnsafeEnabled { + mi := &file_otg_proto_msgTypes[1169] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *PatternFlowGtpv1SquenceNumber_Choice) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PatternFlowGtpv1SquenceNumber_Choice) ProtoMessage() {} + +func (x *PatternFlowGtpv1SquenceNumber_Choice) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[1169] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use PatternFlowGtpv1SquenceNumber_Choice.ProtoReflect.Descriptor instead. +func (*PatternFlowGtpv1SquenceNumber_Choice) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{658, 0} +} + +type PatternFlowGtpv1NPduNumber_Choice struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *PatternFlowGtpv1NPduNumber_Choice) Reset() { + *x = PatternFlowGtpv1NPduNumber_Choice{} + if protoimpl.UnsafeEnabled { + mi := &file_otg_proto_msgTypes[1170] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *PatternFlowGtpv1NPduNumber_Choice) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PatternFlowGtpv1NPduNumber_Choice) ProtoMessage() {} + +func (x *PatternFlowGtpv1NPduNumber_Choice) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[1170] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use PatternFlowGtpv1NPduNumber_Choice.ProtoReflect.Descriptor instead. +func (*PatternFlowGtpv1NPduNumber_Choice) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{661, 0} +} + +type PatternFlowGtpv1NextExtensionHeaderType_Choice struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *PatternFlowGtpv1NextExtensionHeaderType_Choice) Reset() { + *x = PatternFlowGtpv1NextExtensionHeaderType_Choice{} + if protoimpl.UnsafeEnabled { + mi := &file_otg_proto_msgTypes[1171] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *PatternFlowGtpv1NextExtensionHeaderType_Choice) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PatternFlowGtpv1NextExtensionHeaderType_Choice) ProtoMessage() {} + +func (x *PatternFlowGtpv1NextExtensionHeaderType_Choice) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[1171] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use PatternFlowGtpv1NextExtensionHeaderType_Choice.ProtoReflect.Descriptor instead. +func (*PatternFlowGtpv1NextExtensionHeaderType_Choice) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{664, 0} +} + +type PatternFlowGtpExtensionExtensionLength_Choice struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *PatternFlowGtpExtensionExtensionLength_Choice) Reset() { + *x = PatternFlowGtpExtensionExtensionLength_Choice{} + if protoimpl.UnsafeEnabled { + mi := &file_otg_proto_msgTypes[1172] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *PatternFlowGtpExtensionExtensionLength_Choice) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PatternFlowGtpExtensionExtensionLength_Choice) ProtoMessage() {} + +func (x *PatternFlowGtpExtensionExtensionLength_Choice) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[1172] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use PatternFlowGtpExtensionExtensionLength_Choice.ProtoReflect.Descriptor instead. +func (*PatternFlowGtpExtensionExtensionLength_Choice) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{667, 0} +} + +type PatternFlowGtpExtensionContents_Choice struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *PatternFlowGtpExtensionContents_Choice) Reset() { + *x = PatternFlowGtpExtensionContents_Choice{} + if protoimpl.UnsafeEnabled { + mi := &file_otg_proto_msgTypes[1173] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *PatternFlowGtpExtensionContents_Choice) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PatternFlowGtpExtensionContents_Choice) ProtoMessage() {} + +func (x *PatternFlowGtpExtensionContents_Choice) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[1173] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use PatternFlowGtpExtensionContents_Choice.ProtoReflect.Descriptor instead. +func (*PatternFlowGtpExtensionContents_Choice) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{670, 0} +} + +type PatternFlowGtpExtensionNextExtensionHeader_Choice struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *PatternFlowGtpExtensionNextExtensionHeader_Choice) Reset() { + *x = PatternFlowGtpExtensionNextExtensionHeader_Choice{} + if protoimpl.UnsafeEnabled { + mi := &file_otg_proto_msgTypes[1174] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *PatternFlowGtpExtensionNextExtensionHeader_Choice) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PatternFlowGtpExtensionNextExtensionHeader_Choice) ProtoMessage() {} + +func (x *PatternFlowGtpExtensionNextExtensionHeader_Choice) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[1174] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use PatternFlowGtpExtensionNextExtensionHeader_Choice.ProtoReflect.Descriptor instead. +func (*PatternFlowGtpExtensionNextExtensionHeader_Choice) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{673, 0} +} + +type PatternFlowGtpv2Version_Choice struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *PatternFlowGtpv2Version_Choice) Reset() { + *x = PatternFlowGtpv2Version_Choice{} + if protoimpl.UnsafeEnabled { + mi := &file_otg_proto_msgTypes[1175] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *PatternFlowGtpv2Version_Choice) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PatternFlowGtpv2Version_Choice) ProtoMessage() {} + +func (x *PatternFlowGtpv2Version_Choice) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[1175] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use PatternFlowGtpv2Version_Choice.ProtoReflect.Descriptor instead. +func (*PatternFlowGtpv2Version_Choice) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{676, 0} +} + +type PatternFlowGtpv2PiggybackingFlag_Choice struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *PatternFlowGtpv2PiggybackingFlag_Choice) Reset() { + *x = PatternFlowGtpv2PiggybackingFlag_Choice{} + if protoimpl.UnsafeEnabled { + mi := &file_otg_proto_msgTypes[1176] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *PatternFlowGtpv2PiggybackingFlag_Choice) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PatternFlowGtpv2PiggybackingFlag_Choice) ProtoMessage() {} + +func (x *PatternFlowGtpv2PiggybackingFlag_Choice) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[1176] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use PatternFlowGtpv2PiggybackingFlag_Choice.ProtoReflect.Descriptor instead. +func (*PatternFlowGtpv2PiggybackingFlag_Choice) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{679, 0} +} + +type PatternFlowGtpv2TeidFlag_Choice struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *PatternFlowGtpv2TeidFlag_Choice) Reset() { + *x = PatternFlowGtpv2TeidFlag_Choice{} + if protoimpl.UnsafeEnabled { + mi := &file_otg_proto_msgTypes[1177] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *PatternFlowGtpv2TeidFlag_Choice) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PatternFlowGtpv2TeidFlag_Choice) ProtoMessage() {} + +func (x *PatternFlowGtpv2TeidFlag_Choice) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[1177] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use PatternFlowGtpv2TeidFlag_Choice.ProtoReflect.Descriptor instead. +func (*PatternFlowGtpv2TeidFlag_Choice) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{682, 0} +} + +type PatternFlowGtpv2Spare1_Choice struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *PatternFlowGtpv2Spare1_Choice) Reset() { + *x = PatternFlowGtpv2Spare1_Choice{} + if protoimpl.UnsafeEnabled { + mi := &file_otg_proto_msgTypes[1178] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *PatternFlowGtpv2Spare1_Choice) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PatternFlowGtpv2Spare1_Choice) ProtoMessage() {} + +func (x *PatternFlowGtpv2Spare1_Choice) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[1178] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use PatternFlowGtpv2Spare1_Choice.ProtoReflect.Descriptor instead. +func (*PatternFlowGtpv2Spare1_Choice) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{685, 0} +} + +type PatternFlowGtpv2MessageType_Choice struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *PatternFlowGtpv2MessageType_Choice) Reset() { + *x = PatternFlowGtpv2MessageType_Choice{} + if protoimpl.UnsafeEnabled { + mi := &file_otg_proto_msgTypes[1179] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *PatternFlowGtpv2MessageType_Choice) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PatternFlowGtpv2MessageType_Choice) ProtoMessage() {} + +func (x *PatternFlowGtpv2MessageType_Choice) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[1179] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use PatternFlowGtpv2MessageType_Choice.ProtoReflect.Descriptor instead. +func (*PatternFlowGtpv2MessageType_Choice) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{688, 0} +} + +type PatternFlowGtpv2MessageLength_Choice struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *PatternFlowGtpv2MessageLength_Choice) Reset() { + *x = PatternFlowGtpv2MessageLength_Choice{} + if protoimpl.UnsafeEnabled { + mi := &file_otg_proto_msgTypes[1180] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *PatternFlowGtpv2MessageLength_Choice) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PatternFlowGtpv2MessageLength_Choice) ProtoMessage() {} + +func (x *PatternFlowGtpv2MessageLength_Choice) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[1180] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use PatternFlowGtpv2MessageLength_Choice.ProtoReflect.Descriptor instead. +func (*PatternFlowGtpv2MessageLength_Choice) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{691, 0} +} + +type PatternFlowGtpv2Teid_Choice struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *PatternFlowGtpv2Teid_Choice) Reset() { + *x = PatternFlowGtpv2Teid_Choice{} + if protoimpl.UnsafeEnabled { + mi := &file_otg_proto_msgTypes[1181] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *PatternFlowGtpv2Teid_Choice) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PatternFlowGtpv2Teid_Choice) ProtoMessage() {} + +func (x *PatternFlowGtpv2Teid_Choice) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[1181] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use PatternFlowGtpv2Teid_Choice.ProtoReflect.Descriptor instead. +func (*PatternFlowGtpv2Teid_Choice) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{694, 0} +} + +type PatternFlowGtpv2SequenceNumber_Choice struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *PatternFlowGtpv2SequenceNumber_Choice) Reset() { + *x = PatternFlowGtpv2SequenceNumber_Choice{} + if protoimpl.UnsafeEnabled { + mi := &file_otg_proto_msgTypes[1182] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *PatternFlowGtpv2SequenceNumber_Choice) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PatternFlowGtpv2SequenceNumber_Choice) ProtoMessage() {} + +func (x *PatternFlowGtpv2SequenceNumber_Choice) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[1182] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use PatternFlowGtpv2SequenceNumber_Choice.ProtoReflect.Descriptor instead. +func (*PatternFlowGtpv2SequenceNumber_Choice) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{697, 0} +} + +type PatternFlowGtpv2Spare2_Choice struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *PatternFlowGtpv2Spare2_Choice) Reset() { + *x = PatternFlowGtpv2Spare2_Choice{} + if protoimpl.UnsafeEnabled { + mi := &file_otg_proto_msgTypes[1183] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *PatternFlowGtpv2Spare2_Choice) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PatternFlowGtpv2Spare2_Choice) ProtoMessage() {} + +func (x *PatternFlowGtpv2Spare2_Choice) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[1183] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use PatternFlowGtpv2Spare2_Choice.ProtoReflect.Descriptor instead. +func (*PatternFlowGtpv2Spare2_Choice) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{700, 0} +} + +type PatternFlowArpHardwareType_Choice struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *PatternFlowArpHardwareType_Choice) Reset() { + *x = PatternFlowArpHardwareType_Choice{} + if protoimpl.UnsafeEnabled { + mi := &file_otg_proto_msgTypes[1184] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *PatternFlowArpHardwareType_Choice) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PatternFlowArpHardwareType_Choice) ProtoMessage() {} + +func (x *PatternFlowArpHardwareType_Choice) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[1184] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use PatternFlowArpHardwareType_Choice.ProtoReflect.Descriptor instead. +func (*PatternFlowArpHardwareType_Choice) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{703, 0} +} + +type PatternFlowArpProtocolType_Choice struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *PatternFlowArpProtocolType_Choice) Reset() { + *x = PatternFlowArpProtocolType_Choice{} + if protoimpl.UnsafeEnabled { + mi := &file_otg_proto_msgTypes[1185] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *PatternFlowArpProtocolType_Choice) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PatternFlowArpProtocolType_Choice) ProtoMessage() {} + +func (x *PatternFlowArpProtocolType_Choice) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[1185] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use PatternFlowArpProtocolType_Choice.ProtoReflect.Descriptor instead. +func (*PatternFlowArpProtocolType_Choice) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{706, 0} +} + +type PatternFlowArpHardwareLength_Choice struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *PatternFlowArpHardwareLength_Choice) Reset() { + *x = PatternFlowArpHardwareLength_Choice{} + if protoimpl.UnsafeEnabled { + mi := &file_otg_proto_msgTypes[1186] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *PatternFlowArpHardwareLength_Choice) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PatternFlowArpHardwareLength_Choice) ProtoMessage() {} + +func (x *PatternFlowArpHardwareLength_Choice) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[1186] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use PatternFlowArpHardwareLength_Choice.ProtoReflect.Descriptor instead. +func (*PatternFlowArpHardwareLength_Choice) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{709, 0} +} + +type PatternFlowArpProtocolLength_Choice struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *PatternFlowArpProtocolLength_Choice) Reset() { + *x = PatternFlowArpProtocolLength_Choice{} + if protoimpl.UnsafeEnabled { + mi := &file_otg_proto_msgTypes[1187] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *PatternFlowArpProtocolLength_Choice) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PatternFlowArpProtocolLength_Choice) ProtoMessage() {} + +func (x *PatternFlowArpProtocolLength_Choice) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[1187] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use PatternFlowArpProtocolLength_Choice.ProtoReflect.Descriptor instead. +func (*PatternFlowArpProtocolLength_Choice) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{712, 0} +} + +type PatternFlowArpOperation_Choice struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *PatternFlowArpOperation_Choice) Reset() { + *x = PatternFlowArpOperation_Choice{} + if protoimpl.UnsafeEnabled { + mi := &file_otg_proto_msgTypes[1188] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *PatternFlowArpOperation_Choice) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PatternFlowArpOperation_Choice) ProtoMessage() {} + +func (x *PatternFlowArpOperation_Choice) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[1188] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use PatternFlowArpOperation_Choice.ProtoReflect.Descriptor instead. +func (*PatternFlowArpOperation_Choice) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{715, 0} +} + +type PatternFlowArpSenderHardwareAddr_Choice struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *PatternFlowArpSenderHardwareAddr_Choice) Reset() { + *x = PatternFlowArpSenderHardwareAddr_Choice{} + if protoimpl.UnsafeEnabled { + mi := &file_otg_proto_msgTypes[1189] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *PatternFlowArpSenderHardwareAddr_Choice) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PatternFlowArpSenderHardwareAddr_Choice) ProtoMessage() {} + +func (x *PatternFlowArpSenderHardwareAddr_Choice) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[1189] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use PatternFlowArpSenderHardwareAddr_Choice.ProtoReflect.Descriptor instead. +func (*PatternFlowArpSenderHardwareAddr_Choice) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{718, 0} +} + +type PatternFlowArpSenderProtocolAddr_Choice struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *PatternFlowArpSenderProtocolAddr_Choice) Reset() { + *x = PatternFlowArpSenderProtocolAddr_Choice{} + if protoimpl.UnsafeEnabled { + mi := &file_otg_proto_msgTypes[1190] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *PatternFlowArpSenderProtocolAddr_Choice) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PatternFlowArpSenderProtocolAddr_Choice) ProtoMessage() {} + +func (x *PatternFlowArpSenderProtocolAddr_Choice) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[1190] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use PatternFlowArpSenderProtocolAddr_Choice.ProtoReflect.Descriptor instead. +func (*PatternFlowArpSenderProtocolAddr_Choice) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{721, 0} +} + +type PatternFlowArpTargetHardwareAddr_Choice struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *PatternFlowArpTargetHardwareAddr_Choice) Reset() { + *x = PatternFlowArpTargetHardwareAddr_Choice{} + if protoimpl.UnsafeEnabled { + mi := &file_otg_proto_msgTypes[1191] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *PatternFlowArpTargetHardwareAddr_Choice) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PatternFlowArpTargetHardwareAddr_Choice) ProtoMessage() {} + +func (x *PatternFlowArpTargetHardwareAddr_Choice) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[1191] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use PatternFlowArpTargetHardwareAddr_Choice.ProtoReflect.Descriptor instead. +func (*PatternFlowArpTargetHardwareAddr_Choice) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{724, 0} +} + +type PatternFlowArpTargetProtocolAddr_Choice struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *PatternFlowArpTargetProtocolAddr_Choice) Reset() { + *x = PatternFlowArpTargetProtocolAddr_Choice{} + if protoimpl.UnsafeEnabled { + mi := &file_otg_proto_msgTypes[1192] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *PatternFlowArpTargetProtocolAddr_Choice) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PatternFlowArpTargetProtocolAddr_Choice) ProtoMessage() {} + +func (x *PatternFlowArpTargetProtocolAddr_Choice) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[1192] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use PatternFlowArpTargetProtocolAddr_Choice.ProtoReflect.Descriptor instead. +func (*PatternFlowArpTargetProtocolAddr_Choice) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{727, 0} +} + +type PatternFlowIcmpEchoType_Choice struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *PatternFlowIcmpEchoType_Choice) Reset() { + *x = PatternFlowIcmpEchoType_Choice{} + if protoimpl.UnsafeEnabled { + mi := &file_otg_proto_msgTypes[1193] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *PatternFlowIcmpEchoType_Choice) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PatternFlowIcmpEchoType_Choice) ProtoMessage() {} + +func (x *PatternFlowIcmpEchoType_Choice) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[1193] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use PatternFlowIcmpEchoType_Choice.ProtoReflect.Descriptor instead. +func (*PatternFlowIcmpEchoType_Choice) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{730, 0} +} + +type PatternFlowIcmpEchoCode_Choice struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *PatternFlowIcmpEchoCode_Choice) Reset() { + *x = PatternFlowIcmpEchoCode_Choice{} + if protoimpl.UnsafeEnabled { + mi := &file_otg_proto_msgTypes[1194] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *PatternFlowIcmpEchoCode_Choice) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PatternFlowIcmpEchoCode_Choice) ProtoMessage() {} + +func (x *PatternFlowIcmpEchoCode_Choice) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[1194] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use PatternFlowIcmpEchoCode_Choice.ProtoReflect.Descriptor instead. +func (*PatternFlowIcmpEchoCode_Choice) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{733, 0} +} + +type PatternFlowIcmpEchoChecksum_Choice struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *PatternFlowIcmpEchoChecksum_Choice) Reset() { + *x = PatternFlowIcmpEchoChecksum_Choice{} + if protoimpl.UnsafeEnabled { + mi := &file_otg_proto_msgTypes[1195] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *PatternFlowIcmpEchoChecksum_Choice) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PatternFlowIcmpEchoChecksum_Choice) ProtoMessage() {} + +func (x *PatternFlowIcmpEchoChecksum_Choice) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[1195] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use PatternFlowIcmpEchoChecksum_Choice.ProtoReflect.Descriptor instead. +func (*PatternFlowIcmpEchoChecksum_Choice) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{734, 0} +} + +type PatternFlowIcmpEchoChecksum_Generated struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *PatternFlowIcmpEchoChecksum_Generated) Reset() { + *x = PatternFlowIcmpEchoChecksum_Generated{} + if protoimpl.UnsafeEnabled { + mi := &file_otg_proto_msgTypes[1196] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *PatternFlowIcmpEchoChecksum_Generated) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PatternFlowIcmpEchoChecksum_Generated) ProtoMessage() {} + +func (x *PatternFlowIcmpEchoChecksum_Generated) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[1196] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use PatternFlowIcmpEchoChecksum_Generated.ProtoReflect.Descriptor instead. +func (*PatternFlowIcmpEchoChecksum_Generated) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{734, 1} +} + +type PatternFlowIcmpEchoIdentifier_Choice struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *PatternFlowIcmpEchoIdentifier_Choice) Reset() { + *x = PatternFlowIcmpEchoIdentifier_Choice{} + if protoimpl.UnsafeEnabled { + mi := &file_otg_proto_msgTypes[1197] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *PatternFlowIcmpEchoIdentifier_Choice) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PatternFlowIcmpEchoIdentifier_Choice) ProtoMessage() {} + +func (x *PatternFlowIcmpEchoIdentifier_Choice) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[1197] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use PatternFlowIcmpEchoIdentifier_Choice.ProtoReflect.Descriptor instead. +func (*PatternFlowIcmpEchoIdentifier_Choice) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{737, 0} +} + +type PatternFlowIcmpEchoSequenceNumber_Choice struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *PatternFlowIcmpEchoSequenceNumber_Choice) Reset() { + *x = PatternFlowIcmpEchoSequenceNumber_Choice{} + if protoimpl.UnsafeEnabled { + mi := &file_otg_proto_msgTypes[1198] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *PatternFlowIcmpEchoSequenceNumber_Choice) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PatternFlowIcmpEchoSequenceNumber_Choice) ProtoMessage() {} + +func (x *PatternFlowIcmpEchoSequenceNumber_Choice) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[1198] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use PatternFlowIcmpEchoSequenceNumber_Choice.ProtoReflect.Descriptor instead. +func (*PatternFlowIcmpEchoSequenceNumber_Choice) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{740, 0} +} + +type PatternFlowIcmpCommonChecksum_Choice struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *PatternFlowIcmpCommonChecksum_Choice) Reset() { + *x = PatternFlowIcmpCommonChecksum_Choice{} + if protoimpl.UnsafeEnabled { + mi := &file_otg_proto_msgTypes[1199] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *PatternFlowIcmpCommonChecksum_Choice) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PatternFlowIcmpCommonChecksum_Choice) ProtoMessage() {} + +func (x *PatternFlowIcmpCommonChecksum_Choice) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[1199] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use PatternFlowIcmpCommonChecksum_Choice.ProtoReflect.Descriptor instead. +func (*PatternFlowIcmpCommonChecksum_Choice) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{741, 0} +} + +type PatternFlowIcmpCommonChecksum_Generated struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *PatternFlowIcmpCommonChecksum_Generated) Reset() { + *x = PatternFlowIcmpCommonChecksum_Generated{} + if protoimpl.UnsafeEnabled { + mi := &file_otg_proto_msgTypes[1200] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *PatternFlowIcmpCommonChecksum_Generated) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PatternFlowIcmpCommonChecksum_Generated) ProtoMessage() {} + +func (x *PatternFlowIcmpCommonChecksum_Generated) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[1200] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use PatternFlowIcmpCommonChecksum_Generated.ProtoReflect.Descriptor instead. +func (*PatternFlowIcmpCommonChecksum_Generated) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{741, 1} +} + +type PatternFlowIcmpNextFieldsIdentifier_Choice struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *PatternFlowIcmpNextFieldsIdentifier_Choice) Reset() { + *x = PatternFlowIcmpNextFieldsIdentifier_Choice{} + if protoimpl.UnsafeEnabled { + mi := &file_otg_proto_msgTypes[1201] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *PatternFlowIcmpNextFieldsIdentifier_Choice) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PatternFlowIcmpNextFieldsIdentifier_Choice) ProtoMessage() {} + +func (x *PatternFlowIcmpNextFieldsIdentifier_Choice) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[1201] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use PatternFlowIcmpNextFieldsIdentifier_Choice.ProtoReflect.Descriptor instead. +func (*PatternFlowIcmpNextFieldsIdentifier_Choice) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{744, 0} +} + +type PatternFlowIcmpNextFieldsSequenceNumber_Choice struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *PatternFlowIcmpNextFieldsSequenceNumber_Choice) Reset() { + *x = PatternFlowIcmpNextFieldsSequenceNumber_Choice{} + if protoimpl.UnsafeEnabled { + mi := &file_otg_proto_msgTypes[1202] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *PatternFlowIcmpNextFieldsSequenceNumber_Choice) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PatternFlowIcmpNextFieldsSequenceNumber_Choice) ProtoMessage() {} + +func (x *PatternFlowIcmpNextFieldsSequenceNumber_Choice) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[1202] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use PatternFlowIcmpNextFieldsSequenceNumber_Choice.ProtoReflect.Descriptor instead. +func (*PatternFlowIcmpNextFieldsSequenceNumber_Choice) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{747, 0} +} + +type PatternFlowIcmpv6EchoType_Choice struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *PatternFlowIcmpv6EchoType_Choice) Reset() { + *x = PatternFlowIcmpv6EchoType_Choice{} + if protoimpl.UnsafeEnabled { + mi := &file_otg_proto_msgTypes[1203] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *PatternFlowIcmpv6EchoType_Choice) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PatternFlowIcmpv6EchoType_Choice) ProtoMessage() {} + +func (x *PatternFlowIcmpv6EchoType_Choice) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[1203] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use PatternFlowIcmpv6EchoType_Choice.ProtoReflect.Descriptor instead. +func (*PatternFlowIcmpv6EchoType_Choice) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{750, 0} +} + +type PatternFlowIcmpv6EchoCode_Choice struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *PatternFlowIcmpv6EchoCode_Choice) Reset() { + *x = PatternFlowIcmpv6EchoCode_Choice{} + if protoimpl.UnsafeEnabled { + mi := &file_otg_proto_msgTypes[1204] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *PatternFlowIcmpv6EchoCode_Choice) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PatternFlowIcmpv6EchoCode_Choice) ProtoMessage() {} + +func (x *PatternFlowIcmpv6EchoCode_Choice) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[1204] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use PatternFlowIcmpv6EchoCode_Choice.ProtoReflect.Descriptor instead. +func (*PatternFlowIcmpv6EchoCode_Choice) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{753, 0} +} + +type PatternFlowIcmpv6EchoIdentifier_Choice struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *PatternFlowIcmpv6EchoIdentifier_Choice) Reset() { + *x = PatternFlowIcmpv6EchoIdentifier_Choice{} + if protoimpl.UnsafeEnabled { + mi := &file_otg_proto_msgTypes[1205] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *PatternFlowIcmpv6EchoIdentifier_Choice) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PatternFlowIcmpv6EchoIdentifier_Choice) ProtoMessage() {} + +func (x *PatternFlowIcmpv6EchoIdentifier_Choice) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[1205] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use PatternFlowIcmpv6EchoIdentifier_Choice.ProtoReflect.Descriptor instead. +func (*PatternFlowIcmpv6EchoIdentifier_Choice) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{756, 0} +} + +type PatternFlowIcmpv6EchoSequenceNumber_Choice struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *PatternFlowIcmpv6EchoSequenceNumber_Choice) Reset() { + *x = PatternFlowIcmpv6EchoSequenceNumber_Choice{} + if protoimpl.UnsafeEnabled { + mi := &file_otg_proto_msgTypes[1206] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *PatternFlowIcmpv6EchoSequenceNumber_Choice) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PatternFlowIcmpv6EchoSequenceNumber_Choice) ProtoMessage() {} + +func (x *PatternFlowIcmpv6EchoSequenceNumber_Choice) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[1206] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use PatternFlowIcmpv6EchoSequenceNumber_Choice.ProtoReflect.Descriptor instead. +func (*PatternFlowIcmpv6EchoSequenceNumber_Choice) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{759, 0} +} + +type PatternFlowIcmpv6EchoChecksum_Choice struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *PatternFlowIcmpv6EchoChecksum_Choice) Reset() { + *x = PatternFlowIcmpv6EchoChecksum_Choice{} + if protoimpl.UnsafeEnabled { + mi := &file_otg_proto_msgTypes[1207] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *PatternFlowIcmpv6EchoChecksum_Choice) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PatternFlowIcmpv6EchoChecksum_Choice) ProtoMessage() {} + +func (x *PatternFlowIcmpv6EchoChecksum_Choice) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[1207] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use PatternFlowIcmpv6EchoChecksum_Choice.ProtoReflect.Descriptor instead. +func (*PatternFlowIcmpv6EchoChecksum_Choice) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{760, 0} +} + +type PatternFlowIcmpv6EchoChecksum_Generated struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *PatternFlowIcmpv6EchoChecksum_Generated) Reset() { + *x = PatternFlowIcmpv6EchoChecksum_Generated{} + if protoimpl.UnsafeEnabled { + mi := &file_otg_proto_msgTypes[1208] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *PatternFlowIcmpv6EchoChecksum_Generated) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PatternFlowIcmpv6EchoChecksum_Generated) ProtoMessage() {} + +func (x *PatternFlowIcmpv6EchoChecksum_Generated) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[1208] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use PatternFlowIcmpv6EchoChecksum_Generated.ProtoReflect.Descriptor instead. +func (*PatternFlowIcmpv6EchoChecksum_Generated) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{760, 1} +} + +type PatternFlowIcmpv6CommonChecksum_Choice struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *PatternFlowIcmpv6CommonChecksum_Choice) Reset() { + *x = PatternFlowIcmpv6CommonChecksum_Choice{} + if protoimpl.UnsafeEnabled { + mi := &file_otg_proto_msgTypes[1209] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *PatternFlowIcmpv6CommonChecksum_Choice) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PatternFlowIcmpv6CommonChecksum_Choice) ProtoMessage() {} + +func (x *PatternFlowIcmpv6CommonChecksum_Choice) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[1209] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use PatternFlowIcmpv6CommonChecksum_Choice.ProtoReflect.Descriptor instead. +func (*PatternFlowIcmpv6CommonChecksum_Choice) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{761, 0} +} + +type PatternFlowIcmpv6CommonChecksum_Generated struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *PatternFlowIcmpv6CommonChecksum_Generated) Reset() { + *x = PatternFlowIcmpv6CommonChecksum_Generated{} + if protoimpl.UnsafeEnabled { + mi := &file_otg_proto_msgTypes[1210] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *PatternFlowIcmpv6CommonChecksum_Generated) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PatternFlowIcmpv6CommonChecksum_Generated) ProtoMessage() {} + +func (x *PatternFlowIcmpv6CommonChecksum_Generated) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[1210] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use PatternFlowIcmpv6CommonChecksum_Generated.ProtoReflect.Descriptor instead. +func (*PatternFlowIcmpv6CommonChecksum_Generated) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{761, 1} +} + +type PatternFlowPppAddress_Choice struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *PatternFlowPppAddress_Choice) Reset() { + *x = PatternFlowPppAddress_Choice{} + if protoimpl.UnsafeEnabled { + mi := &file_otg_proto_msgTypes[1211] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *PatternFlowPppAddress_Choice) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PatternFlowPppAddress_Choice) ProtoMessage() {} + +func (x *PatternFlowPppAddress_Choice) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[1211] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use PatternFlowPppAddress_Choice.ProtoReflect.Descriptor instead. +func (*PatternFlowPppAddress_Choice) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{764, 0} +} + +type PatternFlowPppControl_Choice struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *PatternFlowPppControl_Choice) Reset() { + *x = PatternFlowPppControl_Choice{} + if protoimpl.UnsafeEnabled { + mi := &file_otg_proto_msgTypes[1212] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *PatternFlowPppControl_Choice) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PatternFlowPppControl_Choice) ProtoMessage() {} + +func (x *PatternFlowPppControl_Choice) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[1212] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use PatternFlowPppControl_Choice.ProtoReflect.Descriptor instead. +func (*PatternFlowPppControl_Choice) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{767, 0} +} + +type PatternFlowPppProtocolType_Choice struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *PatternFlowPppProtocolType_Choice) Reset() { + *x = PatternFlowPppProtocolType_Choice{} + if protoimpl.UnsafeEnabled { + mi := &file_otg_proto_msgTypes[1213] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *PatternFlowPppProtocolType_Choice) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PatternFlowPppProtocolType_Choice) ProtoMessage() {} + +func (x *PatternFlowPppProtocolType_Choice) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[1213] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use PatternFlowPppProtocolType_Choice.ProtoReflect.Descriptor instead. +func (*PatternFlowPppProtocolType_Choice) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{770, 0} +} + +type PatternFlowIgmpv1Version_Choice struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *PatternFlowIgmpv1Version_Choice) Reset() { + *x = PatternFlowIgmpv1Version_Choice{} + if protoimpl.UnsafeEnabled { + mi := &file_otg_proto_msgTypes[1214] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *PatternFlowIgmpv1Version_Choice) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PatternFlowIgmpv1Version_Choice) ProtoMessage() {} + +func (x *PatternFlowIgmpv1Version_Choice) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[1214] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use PatternFlowIgmpv1Version_Choice.ProtoReflect.Descriptor instead. +func (*PatternFlowIgmpv1Version_Choice) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{773, 0} +} + +type PatternFlowIgmpv1Type_Choice struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *PatternFlowIgmpv1Type_Choice) Reset() { + *x = PatternFlowIgmpv1Type_Choice{} + if protoimpl.UnsafeEnabled { + mi := &file_otg_proto_msgTypes[1215] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *PatternFlowIgmpv1Type_Choice) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PatternFlowIgmpv1Type_Choice) ProtoMessage() {} + +func (x *PatternFlowIgmpv1Type_Choice) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[1215] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use PatternFlowIgmpv1Type_Choice.ProtoReflect.Descriptor instead. +func (*PatternFlowIgmpv1Type_Choice) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{776, 0} +} + +type PatternFlowIgmpv1Unused_Choice struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *PatternFlowIgmpv1Unused_Choice) Reset() { + *x = PatternFlowIgmpv1Unused_Choice{} + if protoimpl.UnsafeEnabled { + mi := &file_otg_proto_msgTypes[1216] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *PatternFlowIgmpv1Unused_Choice) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PatternFlowIgmpv1Unused_Choice) ProtoMessage() {} + +func (x *PatternFlowIgmpv1Unused_Choice) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[1216] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use PatternFlowIgmpv1Unused_Choice.ProtoReflect.Descriptor instead. +func (*PatternFlowIgmpv1Unused_Choice) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{779, 0} +} + +type PatternFlowIgmpv1Checksum_Choice struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *PatternFlowIgmpv1Checksum_Choice) Reset() { + *x = PatternFlowIgmpv1Checksum_Choice{} + if protoimpl.UnsafeEnabled { + mi := &file_otg_proto_msgTypes[1217] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *PatternFlowIgmpv1Checksum_Choice) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PatternFlowIgmpv1Checksum_Choice) ProtoMessage() {} + +func (x *PatternFlowIgmpv1Checksum_Choice) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[1217] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use PatternFlowIgmpv1Checksum_Choice.ProtoReflect.Descriptor instead. +func (*PatternFlowIgmpv1Checksum_Choice) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{780, 0} +} + +type PatternFlowIgmpv1Checksum_Generated struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *PatternFlowIgmpv1Checksum_Generated) Reset() { + *x = PatternFlowIgmpv1Checksum_Generated{} + if protoimpl.UnsafeEnabled { + mi := &file_otg_proto_msgTypes[1218] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *PatternFlowIgmpv1Checksum_Generated) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PatternFlowIgmpv1Checksum_Generated) ProtoMessage() {} + +func (x *PatternFlowIgmpv1Checksum_Generated) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[1218] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use PatternFlowIgmpv1Checksum_Generated.ProtoReflect.Descriptor instead. +func (*PatternFlowIgmpv1Checksum_Generated) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{780, 1} +} + +type PatternFlowIgmpv1GroupAddress_Choice struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *PatternFlowIgmpv1GroupAddress_Choice) Reset() { + *x = PatternFlowIgmpv1GroupAddress_Choice{} + if protoimpl.UnsafeEnabled { + mi := &file_otg_proto_msgTypes[1219] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *PatternFlowIgmpv1GroupAddress_Choice) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PatternFlowIgmpv1GroupAddress_Choice) ProtoMessage() {} + +func (x *PatternFlowIgmpv1GroupAddress_Choice) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[1219] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use PatternFlowIgmpv1GroupAddress_Choice.ProtoReflect.Descriptor instead. +func (*PatternFlowIgmpv1GroupAddress_Choice) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{783, 0} +} + +type PatternFlowMplsLabel_Choice struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *PatternFlowMplsLabel_Choice) Reset() { + *x = PatternFlowMplsLabel_Choice{} + if protoimpl.UnsafeEnabled { + mi := &file_otg_proto_msgTypes[1220] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *PatternFlowMplsLabel_Choice) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PatternFlowMplsLabel_Choice) ProtoMessage() {} + +func (x *PatternFlowMplsLabel_Choice) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[1220] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use PatternFlowMplsLabel_Choice.ProtoReflect.Descriptor instead. +func (*PatternFlowMplsLabel_Choice) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{786, 0} +} + +type PatternFlowMplsTrafficClass_Choice struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *PatternFlowMplsTrafficClass_Choice) Reset() { + *x = PatternFlowMplsTrafficClass_Choice{} + if protoimpl.UnsafeEnabled { + mi := &file_otg_proto_msgTypes[1221] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *PatternFlowMplsTrafficClass_Choice) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PatternFlowMplsTrafficClass_Choice) ProtoMessage() {} + +func (x *PatternFlowMplsTrafficClass_Choice) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[1221] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use PatternFlowMplsTrafficClass_Choice.ProtoReflect.Descriptor instead. +func (*PatternFlowMplsTrafficClass_Choice) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{789, 0} +} + +type PatternFlowMplsBottomOfStack_Choice struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *PatternFlowMplsBottomOfStack_Choice) Reset() { + *x = PatternFlowMplsBottomOfStack_Choice{} + if protoimpl.UnsafeEnabled { + mi := &file_otg_proto_msgTypes[1222] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *PatternFlowMplsBottomOfStack_Choice) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PatternFlowMplsBottomOfStack_Choice) ProtoMessage() {} + +func (x *PatternFlowMplsBottomOfStack_Choice) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[1222] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use PatternFlowMplsBottomOfStack_Choice.ProtoReflect.Descriptor instead. +func (*PatternFlowMplsBottomOfStack_Choice) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{792, 0} +} + +type PatternFlowMplsTimeToLive_Choice struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *PatternFlowMplsTimeToLive_Choice) Reset() { + *x = PatternFlowMplsTimeToLive_Choice{} + if protoimpl.UnsafeEnabled { + mi := &file_otg_proto_msgTypes[1223] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *PatternFlowMplsTimeToLive_Choice) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PatternFlowMplsTimeToLive_Choice) ProtoMessage() {} + +func (x *PatternFlowMplsTimeToLive_Choice) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[1223] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use PatternFlowMplsTimeToLive_Choice.ProtoReflect.Descriptor instead. +func (*PatternFlowMplsTimeToLive_Choice) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{795, 0} +} + +type PatternFlowRsvpVersion_Choice struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *PatternFlowRsvpVersion_Choice) Reset() { + *x = PatternFlowRsvpVersion_Choice{} + if protoimpl.UnsafeEnabled { + mi := &file_otg_proto_msgTypes[1224] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *PatternFlowRsvpVersion_Choice) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PatternFlowRsvpVersion_Choice) ProtoMessage() {} + +func (x *PatternFlowRsvpVersion_Choice) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[1224] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use PatternFlowRsvpVersion_Choice.ProtoReflect.Descriptor instead. +func (*PatternFlowRsvpVersion_Choice) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{797, 0} +} + +type PatternFlowRsvpRsvpChecksum_Choice struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *PatternFlowRsvpRsvpChecksum_Choice) Reset() { + *x = PatternFlowRsvpRsvpChecksum_Choice{} + if protoimpl.UnsafeEnabled { + mi := &file_otg_proto_msgTypes[1225] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *PatternFlowRsvpRsvpChecksum_Choice) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PatternFlowRsvpRsvpChecksum_Choice) ProtoMessage() {} + +func (x *PatternFlowRsvpRsvpChecksum_Choice) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[1225] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use PatternFlowRsvpRsvpChecksum_Choice.ProtoReflect.Descriptor instead. +func (*PatternFlowRsvpRsvpChecksum_Choice) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{798, 0} +} + +type PatternFlowRsvpRsvpChecksum_Generated struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *PatternFlowRsvpRsvpChecksum_Generated) Reset() { + *x = PatternFlowRsvpRsvpChecksum_Generated{} + if protoimpl.UnsafeEnabled { + mi := &file_otg_proto_msgTypes[1226] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *PatternFlowRsvpRsvpChecksum_Generated) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PatternFlowRsvpRsvpChecksum_Generated) ProtoMessage() {} + +func (x *PatternFlowRsvpRsvpChecksum_Generated) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[1226] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use PatternFlowRsvpRsvpChecksum_Generated.ProtoReflect.Descriptor instead. +func (*PatternFlowRsvpRsvpChecksum_Generated) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{798, 1} +} + +type PatternFlowRsvpTimeToLive_Choice struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *PatternFlowRsvpTimeToLive_Choice) Reset() { + *x = PatternFlowRsvpTimeToLive_Choice{} + if protoimpl.UnsafeEnabled { + mi := &file_otg_proto_msgTypes[1227] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *PatternFlowRsvpTimeToLive_Choice) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PatternFlowRsvpTimeToLive_Choice) ProtoMessage() {} + +func (x *PatternFlowRsvpTimeToLive_Choice) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[1227] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use PatternFlowRsvpTimeToLive_Choice.ProtoReflect.Descriptor instead. +func (*PatternFlowRsvpTimeToLive_Choice) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{800, 0} +} + +type PatternFlowRsvpReserved_Choice struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *PatternFlowRsvpReserved_Choice) Reset() { + *x = PatternFlowRsvpReserved_Choice{} + if protoimpl.UnsafeEnabled { + mi := &file_otg_proto_msgTypes[1228] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *PatternFlowRsvpReserved_Choice) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PatternFlowRsvpReserved_Choice) ProtoMessage() {} + +func (x *PatternFlowRsvpReserved_Choice) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[1228] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use PatternFlowRsvpReserved_Choice.ProtoReflect.Descriptor instead. +func (*PatternFlowRsvpReserved_Choice) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{802, 0} +} + +type PatternFlowRSVPPathSessionLspTunnelIpv4Ipv4TunnelEndPointAddress_Choice struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *PatternFlowRSVPPathSessionLspTunnelIpv4Ipv4TunnelEndPointAddress_Choice) Reset() { + *x = PatternFlowRSVPPathSessionLspTunnelIpv4Ipv4TunnelEndPointAddress_Choice{} + if protoimpl.UnsafeEnabled { + mi := &file_otg_proto_msgTypes[1229] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *PatternFlowRSVPPathSessionLspTunnelIpv4Ipv4TunnelEndPointAddress_Choice) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PatternFlowRSVPPathSessionLspTunnelIpv4Ipv4TunnelEndPointAddress_Choice) ProtoMessage() {} + +func (x *PatternFlowRSVPPathSessionLspTunnelIpv4Ipv4TunnelEndPointAddress_Choice) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[1229] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use PatternFlowRSVPPathSessionLspTunnelIpv4Ipv4TunnelEndPointAddress_Choice.ProtoReflect.Descriptor instead. +func (*PatternFlowRSVPPathSessionLspTunnelIpv4Ipv4TunnelEndPointAddress_Choice) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{804, 0} +} + +type PatternFlowRSVPPathSessionLspTunnelIpv4Reserved_Choice struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *PatternFlowRSVPPathSessionLspTunnelIpv4Reserved_Choice) Reset() { + *x = PatternFlowRSVPPathSessionLspTunnelIpv4Reserved_Choice{} + if protoimpl.UnsafeEnabled { + mi := &file_otg_proto_msgTypes[1230] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *PatternFlowRSVPPathSessionLspTunnelIpv4Reserved_Choice) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PatternFlowRSVPPathSessionLspTunnelIpv4Reserved_Choice) ProtoMessage() {} + +func (x *PatternFlowRSVPPathSessionLspTunnelIpv4Reserved_Choice) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[1230] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use PatternFlowRSVPPathSessionLspTunnelIpv4Reserved_Choice.ProtoReflect.Descriptor instead. +func (*PatternFlowRSVPPathSessionLspTunnelIpv4Reserved_Choice) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{806, 0} +} + +type PatternFlowRSVPPathSessionLspTunnelIpv4TunnelId_Choice struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *PatternFlowRSVPPathSessionLspTunnelIpv4TunnelId_Choice) Reset() { + *x = PatternFlowRSVPPathSessionLspTunnelIpv4TunnelId_Choice{} + if protoimpl.UnsafeEnabled { + mi := &file_otg_proto_msgTypes[1231] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *PatternFlowRSVPPathSessionLspTunnelIpv4TunnelId_Choice) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PatternFlowRSVPPathSessionLspTunnelIpv4TunnelId_Choice) ProtoMessage() {} + +func (x *PatternFlowRSVPPathSessionLspTunnelIpv4TunnelId_Choice) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[1231] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use PatternFlowRSVPPathSessionLspTunnelIpv4TunnelId_Choice.ProtoReflect.Descriptor instead. +func (*PatternFlowRSVPPathSessionLspTunnelIpv4TunnelId_Choice) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{808, 0} +} + +type PatternFlowRSVPPathSessionLspTunnelIpv4ExtendedTunnelId_Choice struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *PatternFlowRSVPPathSessionLspTunnelIpv4ExtendedTunnelId_Choice) Reset() { + *x = PatternFlowRSVPPathSessionLspTunnelIpv4ExtendedTunnelId_Choice{} + if protoimpl.UnsafeEnabled { + mi := &file_otg_proto_msgTypes[1232] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *PatternFlowRSVPPathSessionLspTunnelIpv4ExtendedTunnelId_Choice) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PatternFlowRSVPPathSessionLspTunnelIpv4ExtendedTunnelId_Choice) ProtoMessage() {} + +func (x *PatternFlowRSVPPathSessionLspTunnelIpv4ExtendedTunnelId_Choice) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[1232] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use PatternFlowRSVPPathSessionLspTunnelIpv4ExtendedTunnelId_Choice.ProtoReflect.Descriptor instead. +func (*PatternFlowRSVPPathSessionLspTunnelIpv4ExtendedTunnelId_Choice) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{810, 0} +} + +type PatternFlowRSVPPathRsvpHopIpv4Ipv4NextPreviousHopAddress_Choice struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *PatternFlowRSVPPathRsvpHopIpv4Ipv4NextPreviousHopAddress_Choice) Reset() { + *x = PatternFlowRSVPPathRsvpHopIpv4Ipv4NextPreviousHopAddress_Choice{} + if protoimpl.UnsafeEnabled { + mi := &file_otg_proto_msgTypes[1233] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *PatternFlowRSVPPathRsvpHopIpv4Ipv4NextPreviousHopAddress_Choice) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PatternFlowRSVPPathRsvpHopIpv4Ipv4NextPreviousHopAddress_Choice) ProtoMessage() {} + +func (x *PatternFlowRSVPPathRsvpHopIpv4Ipv4NextPreviousHopAddress_Choice) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[1233] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use PatternFlowRSVPPathRsvpHopIpv4Ipv4NextPreviousHopAddress_Choice.ProtoReflect.Descriptor instead. +func (*PatternFlowRSVPPathRsvpHopIpv4Ipv4NextPreviousHopAddress_Choice) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{812, 0} +} + +type PatternFlowRSVPPathRsvpHopIpv4LogicalInterfaceHandle_Choice struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *PatternFlowRSVPPathRsvpHopIpv4LogicalInterfaceHandle_Choice) Reset() { + *x = PatternFlowRSVPPathRsvpHopIpv4LogicalInterfaceHandle_Choice{} + if protoimpl.UnsafeEnabled { + mi := &file_otg_proto_msgTypes[1234] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *PatternFlowRSVPPathRsvpHopIpv4LogicalInterfaceHandle_Choice) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PatternFlowRSVPPathRsvpHopIpv4LogicalInterfaceHandle_Choice) ProtoMessage() {} + +func (x *PatternFlowRSVPPathRsvpHopIpv4LogicalInterfaceHandle_Choice) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[1234] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use PatternFlowRSVPPathRsvpHopIpv4LogicalInterfaceHandle_Choice.ProtoReflect.Descriptor instead. +func (*PatternFlowRSVPPathRsvpHopIpv4LogicalInterfaceHandle_Choice) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{814, 0} +} + +type PatternFlowRSVPPathTimeValuesType1RefreshPeriodR_Choice struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *PatternFlowRSVPPathTimeValuesType1RefreshPeriodR_Choice) Reset() { + *x = PatternFlowRSVPPathTimeValuesType1RefreshPeriodR_Choice{} + if protoimpl.UnsafeEnabled { + mi := &file_otg_proto_msgTypes[1235] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *PatternFlowRSVPPathTimeValuesType1RefreshPeriodR_Choice) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PatternFlowRSVPPathTimeValuesType1RefreshPeriodR_Choice) ProtoMessage() {} + +func (x *PatternFlowRSVPPathTimeValuesType1RefreshPeriodR_Choice) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[1235] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use PatternFlowRSVPPathTimeValuesType1RefreshPeriodR_Choice.ProtoReflect.Descriptor instead. +func (*PatternFlowRSVPPathTimeValuesType1RefreshPeriodR_Choice) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{816, 0} +} + +type PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixLBit_Choice struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixLBit_Choice) Reset() { + *x = PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixLBit_Choice{} + if protoimpl.UnsafeEnabled { + mi := &file_otg_proto_msgTypes[1236] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixLBit_Choice) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixLBit_Choice) ProtoMessage() {} + +func (x *PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixLBit_Choice) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[1236] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixLBit_Choice.ProtoReflect.Descriptor instead. +func (*PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixLBit_Choice) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{818, 0} +} + +type PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixIpv4Address_Choice struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixIpv4Address_Choice) Reset() { + *x = PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixIpv4Address_Choice{} + if protoimpl.UnsafeEnabled { + mi := &file_otg_proto_msgTypes[1237] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixIpv4Address_Choice) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixIpv4Address_Choice) ProtoMessage() {} + +func (x *PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixIpv4Address_Choice) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[1237] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixIpv4Address_Choice.ProtoReflect.Descriptor instead. +func (*PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixIpv4Address_Choice) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{820, 0} +} + +type PatternFlowRSVPPathExplicitRouteType1FourByteASNumberLBit_Choice struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *PatternFlowRSVPPathExplicitRouteType1FourByteASNumberLBit_Choice) Reset() { + *x = PatternFlowRSVPPathExplicitRouteType1FourByteASNumberLBit_Choice{} + if protoimpl.UnsafeEnabled { + mi := &file_otg_proto_msgTypes[1238] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *PatternFlowRSVPPathExplicitRouteType1FourByteASNumberLBit_Choice) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PatternFlowRSVPPathExplicitRouteType1FourByteASNumberLBit_Choice) ProtoMessage() {} + +func (x *PatternFlowRSVPPathExplicitRouteType1FourByteASNumberLBit_Choice) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[1238] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use PatternFlowRSVPPathExplicitRouteType1FourByteASNumberLBit_Choice.ProtoReflect.Descriptor instead. +func (*PatternFlowRSVPPathExplicitRouteType1FourByteASNumberLBit_Choice) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{822, 0} +} + +type PatternFlowRSVPPathExplicitRouteType1FourByteASNumberReserved_Choice struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *PatternFlowRSVPPathExplicitRouteType1FourByteASNumberReserved_Choice) Reset() { + *x = PatternFlowRSVPPathExplicitRouteType1FourByteASNumberReserved_Choice{} + if protoimpl.UnsafeEnabled { + mi := &file_otg_proto_msgTypes[1239] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *PatternFlowRSVPPathExplicitRouteType1FourByteASNumberReserved_Choice) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PatternFlowRSVPPathExplicitRouteType1FourByteASNumberReserved_Choice) ProtoMessage() {} + +func (x *PatternFlowRSVPPathExplicitRouteType1FourByteASNumberReserved_Choice) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[1239] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use PatternFlowRSVPPathExplicitRouteType1FourByteASNumberReserved_Choice.ProtoReflect.Descriptor instead. +func (*PatternFlowRSVPPathExplicitRouteType1FourByteASNumberReserved_Choice) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{824, 0} +} + +type PatternFlowRSVPPathLabelRequestWithoutLabelRangeReserved_Choice struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *PatternFlowRSVPPathLabelRequestWithoutLabelRangeReserved_Choice) Reset() { + *x = PatternFlowRSVPPathLabelRequestWithoutLabelRangeReserved_Choice{} + if protoimpl.UnsafeEnabled { + mi := &file_otg_proto_msgTypes[1240] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *PatternFlowRSVPPathLabelRequestWithoutLabelRangeReserved_Choice) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PatternFlowRSVPPathLabelRequestWithoutLabelRangeReserved_Choice) ProtoMessage() {} + +func (x *PatternFlowRSVPPathLabelRequestWithoutLabelRangeReserved_Choice) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[1240] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use PatternFlowRSVPPathLabelRequestWithoutLabelRangeReserved_Choice.ProtoReflect.Descriptor instead. +func (*PatternFlowRSVPPathLabelRequestWithoutLabelRangeReserved_Choice) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{826, 0} +} + +type PatternFlowRSVPPathLabelRequestWithoutLabelRangeL3Pid_Choice struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *PatternFlowRSVPPathLabelRequestWithoutLabelRangeL3Pid_Choice) Reset() { + *x = PatternFlowRSVPPathLabelRequestWithoutLabelRangeL3Pid_Choice{} + if protoimpl.UnsafeEnabled { + mi := &file_otg_proto_msgTypes[1241] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *PatternFlowRSVPPathLabelRequestWithoutLabelRangeL3Pid_Choice) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PatternFlowRSVPPathLabelRequestWithoutLabelRangeL3Pid_Choice) ProtoMessage() {} + +func (x *PatternFlowRSVPPathLabelRequestWithoutLabelRangeL3Pid_Choice) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[1241] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use PatternFlowRSVPPathLabelRequestWithoutLabelRangeL3Pid_Choice.ProtoReflect.Descriptor instead. +func (*PatternFlowRSVPPathLabelRequestWithoutLabelRangeL3Pid_Choice) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{828, 0} +} + +type PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Ipv4TunnelSenderAddress_Choice struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Ipv4TunnelSenderAddress_Choice) Reset() { + *x = PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Ipv4TunnelSenderAddress_Choice{} + if protoimpl.UnsafeEnabled { + mi := &file_otg_proto_msgTypes[1242] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Ipv4TunnelSenderAddress_Choice) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Ipv4TunnelSenderAddress_Choice) ProtoMessage() {} + +func (x *PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Ipv4TunnelSenderAddress_Choice) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[1242] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Ipv4TunnelSenderAddress_Choice.ProtoReflect.Descriptor instead. +func (*PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Ipv4TunnelSenderAddress_Choice) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{830, 0} +} + +type PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Reserved_Choice struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Reserved_Choice) Reset() { + *x = PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Reserved_Choice{} + if protoimpl.UnsafeEnabled { + mi := &file_otg_proto_msgTypes[1243] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Reserved_Choice) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Reserved_Choice) ProtoMessage() {} + +func (x *PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Reserved_Choice) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[1243] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Reserved_Choice.ProtoReflect.Descriptor instead. +func (*PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Reserved_Choice) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{832, 0} +} + +type PatternFlowRSVPPathSenderTemplateLspTunnelIpv4LspId_Choice struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *PatternFlowRSVPPathSenderTemplateLspTunnelIpv4LspId_Choice) Reset() { + *x = PatternFlowRSVPPathSenderTemplateLspTunnelIpv4LspId_Choice{} + if protoimpl.UnsafeEnabled { + mi := &file_otg_proto_msgTypes[1244] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *PatternFlowRSVPPathSenderTemplateLspTunnelIpv4LspId_Choice) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PatternFlowRSVPPathSenderTemplateLspTunnelIpv4LspId_Choice) ProtoMessage() {} + +func (x *PatternFlowRSVPPathSenderTemplateLspTunnelIpv4LspId_Choice) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[1244] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use PatternFlowRSVPPathSenderTemplateLspTunnelIpv4LspId_Choice.ProtoReflect.Descriptor instead. +func (*PatternFlowRSVPPathSenderTemplateLspTunnelIpv4LspId_Choice) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{834, 0} +} + +type PatternFlowRSVPPathSenderTspecIntServVersion_Choice struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *PatternFlowRSVPPathSenderTspecIntServVersion_Choice) Reset() { + *x = PatternFlowRSVPPathSenderTspecIntServVersion_Choice{} + if protoimpl.UnsafeEnabled { + mi := &file_otg_proto_msgTypes[1245] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *PatternFlowRSVPPathSenderTspecIntServVersion_Choice) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PatternFlowRSVPPathSenderTspecIntServVersion_Choice) ProtoMessage() {} + +func (x *PatternFlowRSVPPathSenderTspecIntServVersion_Choice) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[1245] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use PatternFlowRSVPPathSenderTspecIntServVersion_Choice.ProtoReflect.Descriptor instead. +func (*PatternFlowRSVPPathSenderTspecIntServVersion_Choice) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{836, 0} +} + +type PatternFlowRSVPPathSenderTspecIntServReserved1_Choice struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *PatternFlowRSVPPathSenderTspecIntServReserved1_Choice) Reset() { + *x = PatternFlowRSVPPathSenderTspecIntServReserved1_Choice{} + if protoimpl.UnsafeEnabled { + mi := &file_otg_proto_msgTypes[1246] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *PatternFlowRSVPPathSenderTspecIntServReserved1_Choice) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PatternFlowRSVPPathSenderTspecIntServReserved1_Choice) ProtoMessage() {} + +func (x *PatternFlowRSVPPathSenderTspecIntServReserved1_Choice) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[1246] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use PatternFlowRSVPPathSenderTspecIntServReserved1_Choice.ProtoReflect.Descriptor instead. +func (*PatternFlowRSVPPathSenderTspecIntServReserved1_Choice) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{838, 0} +} + +type PatternFlowRSVPPathSenderTspecIntServOverallLength_Choice struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *PatternFlowRSVPPathSenderTspecIntServOverallLength_Choice) Reset() { + *x = PatternFlowRSVPPathSenderTspecIntServOverallLength_Choice{} + if protoimpl.UnsafeEnabled { + mi := &file_otg_proto_msgTypes[1247] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *PatternFlowRSVPPathSenderTspecIntServOverallLength_Choice) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PatternFlowRSVPPathSenderTspecIntServOverallLength_Choice) ProtoMessage() {} + +func (x *PatternFlowRSVPPathSenderTspecIntServOverallLength_Choice) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[1247] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use PatternFlowRSVPPathSenderTspecIntServOverallLength_Choice.ProtoReflect.Descriptor instead. +func (*PatternFlowRSVPPathSenderTspecIntServOverallLength_Choice) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{840, 0} +} + +type PatternFlowRSVPPathSenderTspecIntServServiceHeader_Choice struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *PatternFlowRSVPPathSenderTspecIntServServiceHeader_Choice) Reset() { + *x = PatternFlowRSVPPathSenderTspecIntServServiceHeader_Choice{} + if protoimpl.UnsafeEnabled { + mi := &file_otg_proto_msgTypes[1248] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *PatternFlowRSVPPathSenderTspecIntServServiceHeader_Choice) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PatternFlowRSVPPathSenderTspecIntServServiceHeader_Choice) ProtoMessage() {} + +func (x *PatternFlowRSVPPathSenderTspecIntServServiceHeader_Choice) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[1248] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use PatternFlowRSVPPathSenderTspecIntServServiceHeader_Choice.ProtoReflect.Descriptor instead. +func (*PatternFlowRSVPPathSenderTspecIntServServiceHeader_Choice) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{842, 0} +} + +type PatternFlowRSVPPathSenderTspecIntServZeroBit_Choice struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *PatternFlowRSVPPathSenderTspecIntServZeroBit_Choice) Reset() { + *x = PatternFlowRSVPPathSenderTspecIntServZeroBit_Choice{} + if protoimpl.UnsafeEnabled { + mi := &file_otg_proto_msgTypes[1249] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *PatternFlowRSVPPathSenderTspecIntServZeroBit_Choice) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PatternFlowRSVPPathSenderTspecIntServZeroBit_Choice) ProtoMessage() {} + +func (x *PatternFlowRSVPPathSenderTspecIntServZeroBit_Choice) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[1249] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use PatternFlowRSVPPathSenderTspecIntServZeroBit_Choice.ProtoReflect.Descriptor instead. +func (*PatternFlowRSVPPathSenderTspecIntServZeroBit_Choice) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{844, 0} +} + +type PatternFlowRSVPPathSenderTspecIntServReserved2_Choice struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *PatternFlowRSVPPathSenderTspecIntServReserved2_Choice) Reset() { + *x = PatternFlowRSVPPathSenderTspecIntServReserved2_Choice{} + if protoimpl.UnsafeEnabled { + mi := &file_otg_proto_msgTypes[1250] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *PatternFlowRSVPPathSenderTspecIntServReserved2_Choice) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PatternFlowRSVPPathSenderTspecIntServReserved2_Choice) ProtoMessage() {} + +func (x *PatternFlowRSVPPathSenderTspecIntServReserved2_Choice) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[1250] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use PatternFlowRSVPPathSenderTspecIntServReserved2_Choice.ProtoReflect.Descriptor instead. +func (*PatternFlowRSVPPathSenderTspecIntServReserved2_Choice) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{846, 0} +} + +type PatternFlowRSVPPathSenderTspecIntServLengthOfServiceData_Choice struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *PatternFlowRSVPPathSenderTspecIntServLengthOfServiceData_Choice) Reset() { + *x = PatternFlowRSVPPathSenderTspecIntServLengthOfServiceData_Choice{} + if protoimpl.UnsafeEnabled { + mi := &file_otg_proto_msgTypes[1251] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *PatternFlowRSVPPathSenderTspecIntServLengthOfServiceData_Choice) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PatternFlowRSVPPathSenderTspecIntServLengthOfServiceData_Choice) ProtoMessage() {} + +func (x *PatternFlowRSVPPathSenderTspecIntServLengthOfServiceData_Choice) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[1251] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use PatternFlowRSVPPathSenderTspecIntServLengthOfServiceData_Choice.ProtoReflect.Descriptor instead. +func (*PatternFlowRSVPPathSenderTspecIntServLengthOfServiceData_Choice) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{848, 0} +} + +type PatternFlowRSVPPathSenderTspecIntServParameterIdTokenBucketTspec_Choice struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *PatternFlowRSVPPathSenderTspecIntServParameterIdTokenBucketTspec_Choice) Reset() { + *x = PatternFlowRSVPPathSenderTspecIntServParameterIdTokenBucketTspec_Choice{} + if protoimpl.UnsafeEnabled { + mi := &file_otg_proto_msgTypes[1252] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *PatternFlowRSVPPathSenderTspecIntServParameterIdTokenBucketTspec_Choice) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PatternFlowRSVPPathSenderTspecIntServParameterIdTokenBucketTspec_Choice) ProtoMessage() {} + +func (x *PatternFlowRSVPPathSenderTspecIntServParameterIdTokenBucketTspec_Choice) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[1252] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use PatternFlowRSVPPathSenderTspecIntServParameterIdTokenBucketTspec_Choice.ProtoReflect.Descriptor instead. +func (*PatternFlowRSVPPathSenderTspecIntServParameterIdTokenBucketTspec_Choice) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{850, 0} +} + +type PatternFlowRSVPPathSenderTspecIntServParameter127Flag_Choice struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *PatternFlowRSVPPathSenderTspecIntServParameter127Flag_Choice) Reset() { + *x = PatternFlowRSVPPathSenderTspecIntServParameter127Flag_Choice{} + if protoimpl.UnsafeEnabled { + mi := &file_otg_proto_msgTypes[1253] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *PatternFlowRSVPPathSenderTspecIntServParameter127Flag_Choice) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PatternFlowRSVPPathSenderTspecIntServParameter127Flag_Choice) ProtoMessage() {} + +func (x *PatternFlowRSVPPathSenderTspecIntServParameter127Flag_Choice) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[1253] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use PatternFlowRSVPPathSenderTspecIntServParameter127Flag_Choice.ProtoReflect.Descriptor instead. +func (*PatternFlowRSVPPathSenderTspecIntServParameter127Flag_Choice) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{852, 0} +} + +type PatternFlowRSVPPathSenderTspecIntServParameter127Length_Choice struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *PatternFlowRSVPPathSenderTspecIntServParameter127Length_Choice) Reset() { + *x = PatternFlowRSVPPathSenderTspecIntServParameter127Length_Choice{} + if protoimpl.UnsafeEnabled { + mi := &file_otg_proto_msgTypes[1254] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *PatternFlowRSVPPathSenderTspecIntServParameter127Length_Choice) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PatternFlowRSVPPathSenderTspecIntServParameter127Length_Choice) ProtoMessage() {} + +func (x *PatternFlowRSVPPathSenderTspecIntServParameter127Length_Choice) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[1254] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use PatternFlowRSVPPathSenderTspecIntServParameter127Length_Choice.ProtoReflect.Descriptor instead. +func (*PatternFlowRSVPPathSenderTspecIntServParameter127Length_Choice) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{854, 0} +} + +type PatternFlowRSVPPathSenderTspecIntServMinimumPolicedUnit_Choice struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *PatternFlowRSVPPathSenderTspecIntServMinimumPolicedUnit_Choice) Reset() { + *x = PatternFlowRSVPPathSenderTspecIntServMinimumPolicedUnit_Choice{} + if protoimpl.UnsafeEnabled { + mi := &file_otg_proto_msgTypes[1255] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *PatternFlowRSVPPathSenderTspecIntServMinimumPolicedUnit_Choice) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PatternFlowRSVPPathSenderTspecIntServMinimumPolicedUnit_Choice) ProtoMessage() {} + +func (x *PatternFlowRSVPPathSenderTspecIntServMinimumPolicedUnit_Choice) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[1255] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use PatternFlowRSVPPathSenderTspecIntServMinimumPolicedUnit_Choice.ProtoReflect.Descriptor instead. +func (*PatternFlowRSVPPathSenderTspecIntServMinimumPolicedUnit_Choice) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{856, 0} +} + +type PatternFlowRSVPPathSenderTspecIntServMaximumPacketSize_Choice struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *PatternFlowRSVPPathSenderTspecIntServMaximumPacketSize_Choice) Reset() { + *x = PatternFlowRSVPPathSenderTspecIntServMaximumPacketSize_Choice{} + if protoimpl.UnsafeEnabled { + mi := &file_otg_proto_msgTypes[1256] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *PatternFlowRSVPPathSenderTspecIntServMaximumPacketSize_Choice) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PatternFlowRSVPPathSenderTspecIntServMaximumPacketSize_Choice) ProtoMessage() {} + +func (x *PatternFlowRSVPPathSenderTspecIntServMaximumPacketSize_Choice) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[1256] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use PatternFlowRSVPPathSenderTspecIntServMaximumPacketSize_Choice.ProtoReflect.Descriptor instead. +func (*PatternFlowRSVPPathSenderTspecIntServMaximumPacketSize_Choice) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{858, 0} +} + +type PatternFlowRSVPPathRecordRouteType1Ipv4AddressIpv4Address_Choice struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *PatternFlowRSVPPathRecordRouteType1Ipv4AddressIpv4Address_Choice) Reset() { + *x = PatternFlowRSVPPathRecordRouteType1Ipv4AddressIpv4Address_Choice{} + if protoimpl.UnsafeEnabled { + mi := &file_otg_proto_msgTypes[1257] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *PatternFlowRSVPPathRecordRouteType1Ipv4AddressIpv4Address_Choice) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PatternFlowRSVPPathRecordRouteType1Ipv4AddressIpv4Address_Choice) ProtoMessage() {} + +func (x *PatternFlowRSVPPathRecordRouteType1Ipv4AddressIpv4Address_Choice) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[1257] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use PatternFlowRSVPPathRecordRouteType1Ipv4AddressIpv4Address_Choice.ProtoReflect.Descriptor instead. +func (*PatternFlowRSVPPathRecordRouteType1Ipv4AddressIpv4Address_Choice) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{860, 0} +} + +type PatternFlowRSVPPathRecordRouteType1Ipv4AddressPrefixLength_Choice struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *PatternFlowRSVPPathRecordRouteType1Ipv4AddressPrefixLength_Choice) Reset() { + *x = PatternFlowRSVPPathRecordRouteType1Ipv4AddressPrefixLength_Choice{} + if protoimpl.UnsafeEnabled { + mi := &file_otg_proto_msgTypes[1258] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *PatternFlowRSVPPathRecordRouteType1Ipv4AddressPrefixLength_Choice) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PatternFlowRSVPPathRecordRouteType1Ipv4AddressPrefixLength_Choice) ProtoMessage() {} + +func (x *PatternFlowRSVPPathRecordRouteType1Ipv4AddressPrefixLength_Choice) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[1258] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use PatternFlowRSVPPathRecordRouteType1Ipv4AddressPrefixLength_Choice.ProtoReflect.Descriptor instead. +func (*PatternFlowRSVPPathRecordRouteType1Ipv4AddressPrefixLength_Choice) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{862, 0} +} + +type PatternFlowRSVPPathRecordRouteType1LabelFlags_Choice struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *PatternFlowRSVPPathRecordRouteType1LabelFlags_Choice) Reset() { + *x = PatternFlowRSVPPathRecordRouteType1LabelFlags_Choice{} + if protoimpl.UnsafeEnabled { + mi := &file_otg_proto_msgTypes[1259] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *PatternFlowRSVPPathRecordRouteType1LabelFlags_Choice) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PatternFlowRSVPPathRecordRouteType1LabelFlags_Choice) ProtoMessage() {} + +func (x *PatternFlowRSVPPathRecordRouteType1LabelFlags_Choice) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[1259] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use PatternFlowRSVPPathRecordRouteType1LabelFlags_Choice.ProtoReflect.Descriptor instead. +func (*PatternFlowRSVPPathRecordRouteType1LabelFlags_Choice) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{863, 0} +} + +type PatternFlowRSVPPathRecordRouteType1LabelCType_Choice struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *PatternFlowRSVPPathRecordRouteType1LabelCType_Choice) Reset() { + *x = PatternFlowRSVPPathRecordRouteType1LabelCType_Choice{} + if protoimpl.UnsafeEnabled { + mi := &file_otg_proto_msgTypes[1260] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *PatternFlowRSVPPathRecordRouteType1LabelCType_Choice) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PatternFlowRSVPPathRecordRouteType1LabelCType_Choice) ProtoMessage() {} + +func (x *PatternFlowRSVPPathRecordRouteType1LabelCType_Choice) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[1260] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use PatternFlowRSVPPathRecordRouteType1LabelCType_Choice.ProtoReflect.Descriptor instead. +func (*PatternFlowRSVPPathRecordRouteType1LabelCType_Choice) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{864, 0} +} + +type PatternFlowRSVPPathObjectsCustomType_Choice struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *PatternFlowRSVPPathObjectsCustomType_Choice) Reset() { + *x = PatternFlowRSVPPathObjectsCustomType_Choice{} + if protoimpl.UnsafeEnabled { + mi := &file_otg_proto_msgTypes[1261] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *PatternFlowRSVPPathObjectsCustomType_Choice) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PatternFlowRSVPPathObjectsCustomType_Choice) ProtoMessage() {} + +func (x *PatternFlowRSVPPathObjectsCustomType_Choice) ProtoReflect() protoreflect.Message { + mi := &file_otg_proto_msgTypes[1261] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use PatternFlowRSVPPathObjectsCustomType_Choice.ProtoReflect.Descriptor instead. +func (*PatternFlowRSVPPathObjectsCustomType_Choice) Descriptor() ([]byte, []int) { + return file_otg_proto_rawDescGZIP(), []int{866, 0} +} + +var File_otg_proto protoreflect.FileDescriptor + +var file_otg_proto_rawDesc = []byte{ + 0x0a, 0x09, 0x6f, 0x74, 0x67, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x03, 0x6f, 0x74, 0x67, + 0x1a, 0x20, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, + 0x66, 0x2f, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x1a, 0x1b, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x62, 0x75, 0x66, 0x2f, 0x65, 0x6d, 0x70, 0x74, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, + 0xcf, 0x02, 0x0a, 0x06, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x1f, 0x0a, 0x05, 0x70, 0x6f, + 0x72, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x09, 0x2e, 0x6f, 0x74, 0x67, 0x2e, + 0x50, 0x6f, 0x72, 0x74, 0x52, 0x05, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x12, 0x1c, 0x0a, 0x04, 0x6c, + 0x61, 0x67, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x08, 0x2e, 0x6f, 0x74, 0x67, 0x2e, + 0x4c, 0x61, 0x67, 0x52, 0x04, 0x6c, 0x61, 0x67, 0x73, 0x12, 0x23, 0x0a, 0x06, 0x6c, 0x61, 0x79, + 0x65, 0x72, 0x31, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x6f, 0x74, 0x67, 0x2e, + 0x4c, 0x61, 0x79, 0x65, 0x72, 0x31, 0x52, 0x06, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x31, 0x12, 0x28, + 0x0a, 0x08, 0x63, 0x61, 0x70, 0x74, 0x75, 0x72, 0x65, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x0c, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x43, 0x61, 0x70, 0x74, 0x75, 0x72, 0x65, 0x52, 0x08, + 0x63, 0x61, 0x70, 0x74, 0x75, 0x72, 0x65, 0x73, 0x12, 0x25, 0x0a, 0x07, 0x64, 0x65, 0x76, 0x69, + 0x63, 0x65, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x6f, 0x74, 0x67, 0x2e, + 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x52, 0x07, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x73, 0x12, + 0x1f, 0x0a, 0x05, 0x66, 0x6c, 0x6f, 0x77, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x09, + 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x46, 0x6c, 0x6f, 0x77, 0x52, 0x05, 0x66, 0x6c, 0x6f, 0x77, 0x73, + 0x12, 0x22, 0x0a, 0x06, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x0a, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x52, 0x06, 0x65, 0x76, + 0x65, 0x6e, 0x74, 0x73, 0x12, 0x2c, 0x0a, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, + 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x43, 0x6f, 0x6e, 0x66, + 0x69, 0x67, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, + 0x6e, 0x73, 0x12, 0x1d, 0x0a, 0x04, 0x6c, 0x6c, 0x64, 0x70, 0x18, 0x09, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x09, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x4c, 0x6c, 0x64, 0x70, 0x52, 0x04, 0x6c, 0x6c, 0x64, + 0x70, 0x22, 0x85, 0x01, 0x0a, 0x0d, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x4f, 0x70, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x12, 0x33, 0x0a, 0x0c, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x6f, 0x70, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x6f, 0x74, 0x67, 0x2e, + 0x50, 0x6f, 0x72, 0x74, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x0b, 0x70, 0x6f, 0x72, + 0x74, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x3f, 0x0a, 0x10, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x63, 0x6f, 0x6c, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, + 0x6c, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x0f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, + 0x6f, 0x6c, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x56, 0x0a, 0x04, 0x50, 0x6f, 0x72, + 0x74, 0x12, 0x1f, 0x0a, 0x08, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x08, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x88, + 0x01, 0x01, 0x12, 0x17, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, + 0x48, 0x01, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x42, 0x0b, 0x0a, 0x09, 0x5f, + 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x6e, 0x61, 0x6d, + 0x65, 0x22, 0x5b, 0x0a, 0x0b, 0x50, 0x6f, 0x72, 0x74, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, + 0x12, 0x34, 0x0a, 0x13, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x70, 0x72, 0x65, + 0x65, 0x6d, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x48, 0x00, 0x52, + 0x12, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x72, 0x65, 0x65, 0x6d, 0x70, 0x74, + 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x42, 0x16, 0x0a, 0x14, 0x5f, 0x6c, 0x6f, 0x63, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x5f, 0x70, 0x72, 0x65, 0x65, 0x6d, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0xa9, + 0x01, 0x0a, 0x03, 0x4c, 0x61, 0x67, 0x12, 0x22, 0x0a, 0x05, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x18, + 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x4c, 0x61, 0x67, 0x50, + 0x6f, 0x72, 0x74, 0x52, 0x05, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x12, 0x2c, 0x0a, 0x08, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x6f, + 0x74, 0x67, 0x2e, 0x4c, 0x61, 0x67, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x52, 0x08, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x12, 0x20, 0x0a, 0x09, 0x6d, 0x69, 0x6e, 0x5f, + 0x6c, 0x69, 0x6e, 0x6b, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x00, 0x52, 0x08, 0x6d, + 0x69, 0x6e, 0x4c, 0x69, 0x6e, 0x6b, 0x73, 0x88, 0x01, 0x01, 0x12, 0x17, 0x0a, 0x04, 0x6e, 0x61, + 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, + 0x88, 0x01, 0x01, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x6d, 0x69, 0x6e, 0x5f, 0x6c, 0x69, 0x6e, 0x6b, + 0x73, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x94, 0x01, 0x0a, 0x07, 0x4c, + 0x61, 0x67, 0x50, 0x6f, 0x72, 0x74, 0x12, 0x20, 0x0a, 0x09, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x6e, + 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x08, 0x70, 0x6f, 0x72, + 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, 0x24, 0x0a, 0x04, 0x6c, 0x61, 0x63, 0x70, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x4c, 0x61, 0x67, + 0x50, 0x6f, 0x72, 0x74, 0x4c, 0x61, 0x63, 0x70, 0x52, 0x04, 0x6c, 0x61, 0x63, 0x70, 0x12, 0x33, + 0x0a, 0x08, 0x65, 0x74, 0x68, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x17, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x45, 0x74, 0x68, + 0x65, 0x72, 0x6e, 0x65, 0x74, 0x42, 0x61, 0x73, 0x65, 0x52, 0x08, 0x65, 0x74, 0x68, 0x65, 0x72, + 0x6e, 0x65, 0x74, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x6e, 0x61, 0x6d, + 0x65, 0x22, 0xe6, 0x01, 0x0a, 0x0b, 0x4c, 0x61, 0x67, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, + 0x6c, 0x12, 0x39, 0x0a, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x0e, 0x32, 0x1c, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x4c, 0x61, 0x67, 0x50, 0x72, 0x6f, 0x74, 0x6f, + 0x63, 0x6f, 0x6c, 0x2e, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x48, + 0x00, 0x52, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x88, 0x01, 0x01, 0x12, 0x28, 0x0a, 0x04, + 0x6c, 0x61, 0x63, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x6f, 0x74, 0x67, + 0x2e, 0x4c, 0x61, 0x67, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x4c, 0x61, 0x63, 0x70, + 0x52, 0x04, 0x6c, 0x61, 0x63, 0x70, 0x12, 0x2e, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x69, 0x63, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x4c, 0x61, 0x67, + 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x53, 0x74, 0x61, 0x74, 0x69, 0x63, 0x52, 0x06, + 0x73, 0x74, 0x61, 0x74, 0x69, 0x63, 0x1a, 0x37, 0x0a, 0x06, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, + 0x22, 0x2d, 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x0a, 0x0b, 0x75, 0x6e, 0x73, 0x70, + 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x10, 0x00, 0x12, 0x08, 0x0a, 0x04, 0x6c, 0x61, 0x63, + 0x70, 0x10, 0x01, 0x12, 0x0a, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x69, 0x63, 0x10, 0x02, 0x42, + 0x09, 0x0a, 0x07, 0x5f, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x22, 0x3a, 0x0a, 0x11, 0x4c, 0x61, + 0x67, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x53, 0x74, 0x61, 0x74, 0x69, 0x63, 0x12, + 0x1a, 0x0a, 0x06, 0x6c, 0x61, 0x67, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x48, + 0x00, 0x52, 0x05, 0x6c, 0x61, 0x67, 0x49, 0x64, 0x88, 0x01, 0x01, 0x42, 0x09, 0x0a, 0x07, 0x5f, + 0x6c, 0x61, 0x67, 0x5f, 0x69, 0x64, 0x22, 0xd5, 0x01, 0x0a, 0x0f, 0x4c, 0x61, 0x67, 0x50, 0x72, + 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x4c, 0x61, 0x63, 0x70, 0x12, 0x2b, 0x0a, 0x0f, 0x61, 0x63, + 0x74, 0x6f, 0x72, 0x5f, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x0d, 0x61, 0x63, 0x74, 0x6f, 0x72, 0x53, 0x79, 0x73, 0x74, + 0x65, 0x6d, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x37, 0x0a, 0x15, 0x61, 0x63, 0x74, 0x6f, 0x72, + 0x5f, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x5f, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x13, 0x61, 0x63, 0x74, 0x6f, 0x72, 0x53, + 0x79, 0x73, 0x74, 0x65, 0x6d, 0x50, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x88, 0x01, 0x01, + 0x12, 0x20, 0x0a, 0x09, 0x61, 0x63, 0x74, 0x6f, 0x72, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x0d, 0x48, 0x02, 0x52, 0x08, 0x61, 0x63, 0x74, 0x6f, 0x72, 0x4b, 0x65, 0x79, 0x88, + 0x01, 0x01, 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x61, 0x63, 0x74, 0x6f, 0x72, 0x5f, 0x73, 0x79, 0x73, + 0x74, 0x65, 0x6d, 0x5f, 0x69, 0x64, 0x42, 0x18, 0x0a, 0x16, 0x5f, 0x61, 0x63, 0x74, 0x6f, 0x72, + 0x5f, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x5f, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, + 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x61, 0x63, 0x74, 0x6f, 0x72, 0x5f, 0x6b, 0x65, 0x79, 0x22, 0xf1, + 0x03, 0x0a, 0x0b, 0x4c, 0x61, 0x67, 0x50, 0x6f, 0x72, 0x74, 0x4c, 0x61, 0x63, 0x70, 0x12, 0x2f, + 0x0a, 0x11, 0x61, 0x63, 0x74, 0x6f, 0x72, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x6e, 0x75, 0x6d, + 0x62, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x00, 0x52, 0x0f, 0x61, 0x63, 0x74, + 0x6f, 0x72, 0x50, 0x6f, 0x72, 0x74, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x88, 0x01, 0x01, 0x12, + 0x33, 0x0a, 0x13, 0x61, 0x63, 0x74, 0x6f, 0x72, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x70, 0x72, + 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x11, + 0x61, 0x63, 0x74, 0x6f, 0x72, 0x50, 0x6f, 0x72, 0x74, 0x50, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, + 0x79, 0x88, 0x01, 0x01, 0x12, 0x4f, 0x0a, 0x0e, 0x61, 0x63, 0x74, 0x6f, 0x72, 0x5f, 0x61, 0x63, + 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x23, 0x2e, 0x6f, + 0x74, 0x67, 0x2e, 0x4c, 0x61, 0x67, 0x50, 0x6f, 0x72, 0x74, 0x4c, 0x61, 0x63, 0x70, 0x2e, 0x41, + 0x63, 0x74, 0x6f, 0x72, 0x41, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x2e, 0x45, 0x6e, 0x75, + 0x6d, 0x48, 0x02, 0x52, 0x0d, 0x61, 0x63, 0x74, 0x6f, 0x72, 0x41, 0x63, 0x74, 0x69, 0x76, 0x69, + 0x74, 0x79, 0x88, 0x01, 0x01, 0x12, 0x46, 0x0a, 0x1d, 0x6c, 0x61, 0x63, 0x70, 0x64, 0x75, 0x5f, + 0x70, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x69, 0x63, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x69, 0x6e, + 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x03, 0x52, 0x1a, + 0x6c, 0x61, 0x63, 0x70, 0x64, 0x75, 0x50, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x69, 0x63, 0x54, 0x69, + 0x6d, 0x65, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x88, 0x01, 0x01, 0x12, 0x2a, 0x0a, + 0x0e, 0x6c, 0x61, 0x63, 0x70, 0x64, 0x75, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x18, + 0x05, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x04, 0x52, 0x0d, 0x6c, 0x61, 0x63, 0x70, 0x64, 0x75, 0x54, + 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x88, 0x01, 0x01, 0x1a, 0x41, 0x0a, 0x0d, 0x41, 0x63, 0x74, + 0x6f, 0x72, 0x41, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x22, 0x30, 0x0a, 0x04, 0x45, 0x6e, + 0x75, 0x6d, 0x12, 0x0f, 0x0a, 0x0b, 0x75, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, + 0x64, 0x10, 0x00, 0x12, 0x0b, 0x0a, 0x07, 0x70, 0x61, 0x73, 0x73, 0x69, 0x76, 0x65, 0x10, 0x01, + 0x12, 0x0a, 0x0a, 0x06, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x10, 0x02, 0x42, 0x14, 0x0a, 0x12, + 0x5f, 0x61, 0x63, 0x74, 0x6f, 0x72, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x6e, 0x75, 0x6d, 0x62, + 0x65, 0x72, 0x42, 0x16, 0x0a, 0x14, 0x5f, 0x61, 0x63, 0x74, 0x6f, 0x72, 0x5f, 0x70, 0x6f, 0x72, + 0x74, 0x5f, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x42, 0x11, 0x0a, 0x0f, 0x5f, 0x61, + 0x63, 0x74, 0x6f, 0x72, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x42, 0x20, 0x0a, + 0x1e, 0x5f, 0x6c, 0x61, 0x63, 0x70, 0x64, 0x75, 0x5f, 0x70, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x69, + 0x63, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x42, + 0x11, 0x0a, 0x0f, 0x5f, 0x6c, 0x61, 0x63, 0x70, 0x64, 0x75, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x6f, + 0x75, 0x74, 0x22, 0x9b, 0x01, 0x0a, 0x12, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x45, 0x74, 0x68, + 0x65, 0x72, 0x6e, 0x65, 0x74, 0x42, 0x61, 0x73, 0x65, 0x12, 0x15, 0x0a, 0x03, 0x6d, 0x61, 0x63, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x03, 0x6d, 0x61, 0x63, 0x88, 0x01, 0x01, + 0x12, 0x15, 0x0a, 0x03, 0x6d, 0x74, 0x75, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, + 0x03, 0x6d, 0x74, 0x75, 0x88, 0x01, 0x01, 0x12, 0x25, 0x0a, 0x05, 0x76, 0x6c, 0x61, 0x6e, 0x73, + 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x44, 0x65, 0x76, + 0x69, 0x63, 0x65, 0x56, 0x6c, 0x61, 0x6e, 0x52, 0x05, 0x76, 0x6c, 0x61, 0x6e, 0x73, 0x12, 0x17, + 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x48, 0x02, 0x52, 0x04, + 0x6e, 0x61, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x42, 0x06, 0x0a, 0x04, 0x5f, 0x6d, 0x61, 0x63, 0x42, + 0x06, 0x0a, 0x04, 0x5f, 0x6d, 0x74, 0x75, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x6e, 0x61, 0x6d, 0x65, + 0x22, 0xc0, 0x02, 0x0a, 0x0e, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x45, 0x74, 0x68, 0x65, 0x72, + 0x6e, 0x65, 0x74, 0x12, 0x37, 0x0a, 0x0a, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, + 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x45, 0x74, + 0x68, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, + 0x52, 0x0a, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x36, 0x0a, 0x0e, + 0x69, 0x70, 0x76, 0x34, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x65, 0x73, 0x18, 0x03, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x44, 0x65, 0x76, 0x69, 0x63, + 0x65, 0x49, 0x70, 0x76, 0x34, 0x52, 0x0d, 0x69, 0x70, 0x76, 0x34, 0x41, 0x64, 0x64, 0x72, 0x65, + 0x73, 0x73, 0x65, 0x73, 0x12, 0x36, 0x0a, 0x0e, 0x69, 0x70, 0x76, 0x36, 0x5f, 0x61, 0x64, 0x64, + 0x72, 0x65, 0x73, 0x73, 0x65, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x6f, + 0x74, 0x67, 0x2e, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x70, 0x76, 0x36, 0x52, 0x0d, 0x69, + 0x70, 0x76, 0x36, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x65, 0x73, 0x12, 0x15, 0x0a, 0x03, + 0x6d, 0x61, 0x63, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x03, 0x6d, 0x61, 0x63, + 0x88, 0x01, 0x01, 0x12, 0x15, 0x0a, 0x03, 0x6d, 0x74, 0x75, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0d, + 0x48, 0x01, 0x52, 0x03, 0x6d, 0x74, 0x75, 0x88, 0x01, 0x01, 0x12, 0x25, 0x0a, 0x05, 0x76, 0x6c, + 0x61, 0x6e, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x6f, 0x74, 0x67, 0x2e, + 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x56, 0x6c, 0x61, 0x6e, 0x52, 0x05, 0x76, 0x6c, 0x61, 0x6e, + 0x73, 0x12, 0x17, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x48, + 0x02, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x42, 0x06, 0x0a, 0x04, 0x5f, 0x6d, + 0x61, 0x63, 0x42, 0x06, 0x0a, 0x04, 0x5f, 0x6d, 0x74, 0x75, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x6e, + 0x61, 0x6d, 0x65, 0x22, 0xc1, 0x02, 0x0a, 0x12, 0x45, 0x74, 0x68, 0x65, 0x72, 0x6e, 0x65, 0x74, + 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x40, 0x0a, 0x06, 0x63, 0x68, + 0x6f, 0x69, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x23, 0x2e, 0x6f, 0x74, 0x67, + 0x2e, 0x45, 0x74, 0x68, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, + 0x69, 0x6f, 0x6e, 0x2e, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x48, + 0x00, 0x52, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x88, 0x01, 0x01, 0x12, 0x20, 0x0a, 0x09, + 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, + 0x01, 0x52, 0x08, 0x70, 0x6f, 0x72, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, 0x1e, + 0x0a, 0x08, 0x6c, 0x61, 0x67, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, + 0x48, 0x02, 0x52, 0x07, 0x6c, 0x61, 0x67, 0x4e, 0x61, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, 0x22, + 0x0a, 0x0a, 0x76, 0x78, 0x6c, 0x61, 0x6e, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, + 0x28, 0x09, 0x48, 0x03, 0x52, 0x09, 0x76, 0x78, 0x6c, 0x61, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x88, + 0x01, 0x01, 0x1a, 0x4e, 0x0a, 0x06, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x22, 0x44, 0x0a, 0x04, + 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x0a, 0x0b, 0x75, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, + 0x69, 0x65, 0x64, 0x10, 0x00, 0x12, 0x0d, 0x0a, 0x09, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x6e, 0x61, + 0x6d, 0x65, 0x10, 0x01, 0x12, 0x0c, 0x0a, 0x08, 0x6c, 0x61, 0x67, 0x5f, 0x6e, 0x61, 0x6d, 0x65, + 0x10, 0x02, 0x12, 0x0e, 0x0a, 0x0a, 0x76, 0x78, 0x6c, 0x61, 0x6e, 0x5f, 0x6e, 0x61, 0x6d, 0x65, + 0x10, 0x03, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x42, 0x0c, 0x0a, + 0x0a, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x42, 0x0b, 0x0a, 0x09, 0x5f, + 0x6c, 0x61, 0x67, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x76, 0x78, 0x6c, + 0x61, 0x6e, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x8d, 0x02, 0x0a, 0x0a, 0x44, 0x65, 0x76, 0x69, + 0x63, 0x65, 0x56, 0x6c, 0x61, 0x6e, 0x12, 0x32, 0x0a, 0x04, 0x74, 0x70, 0x69, 0x64, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x0e, 0x32, 0x19, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x44, 0x65, 0x76, 0x69, 0x63, + 0x65, 0x56, 0x6c, 0x61, 0x6e, 0x2e, 0x54, 0x70, 0x69, 0x64, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x48, + 0x00, 0x52, 0x04, 0x74, 0x70, 0x69, 0x64, 0x88, 0x01, 0x01, 0x12, 0x1f, 0x0a, 0x08, 0x70, 0x72, + 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x08, + 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x88, 0x01, 0x01, 0x12, 0x13, 0x0a, 0x02, 0x69, + 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x02, 0x52, 0x02, 0x69, 0x64, 0x88, 0x01, 0x01, + 0x12, 0x17, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x48, 0x03, + 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x1a, 0x56, 0x0a, 0x04, 0x54, 0x70, 0x69, + 0x64, 0x22, 0x4e, 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x0a, 0x0b, 0x75, 0x6e, 0x73, + 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, 0x78, 0x38, + 0x31, 0x30, 0x30, 0x10, 0x01, 0x12, 0x09, 0x0a, 0x05, 0x78, 0x38, 0x38, 0x41, 0x38, 0x10, 0x02, + 0x12, 0x09, 0x0a, 0x05, 0x78, 0x39, 0x31, 0x30, 0x30, 0x10, 0x03, 0x12, 0x09, 0x0a, 0x05, 0x78, + 0x39, 0x32, 0x30, 0x30, 0x10, 0x04, 0x12, 0x09, 0x0a, 0x05, 0x78, 0x39, 0x33, 0x30, 0x30, 0x10, + 0x05, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x74, 0x70, 0x69, 0x64, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x70, + 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x42, 0x05, 0x0a, 0x03, 0x5f, 0x69, 0x64, 0x42, 0x07, + 0x0a, 0x05, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0xe8, 0x01, 0x0a, 0x0a, 0x44, 0x65, 0x76, 0x69, + 0x63, 0x65, 0x49, 0x70, 0x76, 0x34, 0x12, 0x1d, 0x0a, 0x07, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, + 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x07, 0x67, 0x61, 0x74, 0x65, 0x77, + 0x61, 0x79, 0x88, 0x01, 0x01, 0x12, 0x3a, 0x0a, 0x0b, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, + 0x5f, 0x6d, 0x61, 0x63, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x6f, 0x74, 0x67, + 0x2e, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x70, 0x76, 0x34, 0x47, 0x61, 0x74, 0x65, 0x77, + 0x61, 0x79, 0x4d, 0x41, 0x43, 0x52, 0x0a, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x4d, 0x61, + 0x63, 0x12, 0x1d, 0x0a, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x09, 0x48, 0x01, 0x52, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x88, 0x01, 0x01, + 0x12, 0x1b, 0x0a, 0x06, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, + 0x48, 0x02, 0x52, 0x06, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x88, 0x01, 0x01, 0x12, 0x17, 0x0a, + 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x48, 0x03, 0x52, 0x04, 0x6e, + 0x61, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x67, 0x61, 0x74, 0x65, 0x77, + 0x61, 0x79, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x42, 0x09, + 0x0a, 0x07, 0x5f, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x6e, 0x61, + 0x6d, 0x65, 0x22, 0x8e, 0x01, 0x0a, 0x12, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x70, 0x76, + 0x34, 0x4c, 0x6f, 0x6f, 0x70, 0x62, 0x61, 0x63, 0x6b, 0x12, 0x1e, 0x0a, 0x08, 0x65, 0x74, 0x68, + 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x07, 0x65, + 0x74, 0x68, 0x4e, 0x61, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, 0x1d, 0x0a, 0x07, 0x61, 0x64, 0x64, + 0x72, 0x65, 0x73, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, 0x52, 0x07, 0x61, 0x64, + 0x64, 0x72, 0x65, 0x73, 0x73, 0x88, 0x01, 0x01, 0x12, 0x17, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x48, 0x02, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x88, 0x01, + 0x01, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x65, 0x74, 0x68, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x42, 0x0a, + 0x0a, 0x08, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x6e, + 0x61, 0x6d, 0x65, 0x22, 0xe4, 0x01, 0x0a, 0x14, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x70, + 0x76, 0x34, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x4d, 0x41, 0x43, 0x12, 0x42, 0x0a, 0x06, + 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x25, 0x2e, 0x6f, + 0x74, 0x67, 0x2e, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x70, 0x76, 0x34, 0x47, 0x61, 0x74, + 0x65, 0x77, 0x61, 0x79, 0x4d, 0x41, 0x43, 0x2e, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x2e, 0x45, + 0x6e, 0x75, 0x6d, 0x48, 0x00, 0x52, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x88, 0x01, 0x01, + 0x12, 0x17, 0x0a, 0x04, 0x61, 0x75, 0x74, 0x6f, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, + 0x52, 0x04, 0x61, 0x75, 0x74, 0x6f, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x76, 0x61, 0x6c, + 0x75, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x48, 0x02, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, + 0x65, 0x88, 0x01, 0x01, 0x1a, 0x36, 0x0a, 0x06, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x22, 0x2c, + 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x0a, 0x0b, 0x75, 0x6e, 0x73, 0x70, 0x65, 0x63, + 0x69, 0x66, 0x69, 0x65, 0x64, 0x10, 0x00, 0x12, 0x08, 0x0a, 0x04, 0x61, 0x75, 0x74, 0x6f, 0x10, + 0x01, 0x12, 0x09, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x10, 0x02, 0x42, 0x09, 0x0a, 0x07, + 0x5f, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x61, 0x75, 0x74, 0x6f, + 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0xe8, 0x01, 0x0a, 0x0a, 0x44, + 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x70, 0x76, 0x36, 0x12, 0x1d, 0x0a, 0x07, 0x67, 0x61, 0x74, + 0x65, 0x77, 0x61, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x07, 0x67, 0x61, + 0x74, 0x65, 0x77, 0x61, 0x79, 0x88, 0x01, 0x01, 0x12, 0x3a, 0x0a, 0x0b, 0x67, 0x61, 0x74, 0x65, + 0x77, 0x61, 0x79, 0x5f, 0x6d, 0x61, 0x63, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, + 0x6f, 0x74, 0x67, 0x2e, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x70, 0x76, 0x36, 0x47, 0x61, + 0x74, 0x65, 0x77, 0x61, 0x79, 0x4d, 0x41, 0x43, 0x52, 0x0a, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, + 0x79, 0x4d, 0x61, 0x63, 0x12, 0x1d, 0x0a, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, 0x52, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, + 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x18, 0x04, 0x20, + 0x01, 0x28, 0x0d, 0x48, 0x02, 0x52, 0x06, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x88, 0x01, 0x01, + 0x12, 0x17, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x48, 0x03, + 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x67, 0x61, + 0x74, 0x65, 0x77, 0x61, 0x79, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x8e, 0x01, 0x0a, 0x12, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x70, 0x76, 0x36, 0x4c, 0x6f, 0x6f, 0x70, 0x62, 0x61, 0x63, 0x6b, 0x12, 0x1e, 0x0a, 0x08, @@ -96927,7 +111008,7 @@ var file_otg_proto_rawDesc = []byte{ 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x0a, 0x0b, 0x75, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x10, 0x00, 0x12, 0x08, 0x0a, 0x04, 0x6d, 0x65, 0x73, 0x68, 0x10, 0x01, 0x12, 0x0e, 0x0a, 0x0a, 0x6f, 0x6e, 0x65, 0x5f, 0x74, 0x6f, 0x5f, 0x6f, 0x6e, 0x65, 0x10, - 0x02, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x22, 0xa1, 0x08, 0x0a, 0x0a, 0x46, + 0x02, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x22, 0xce, 0x08, 0x0a, 0x0a, 0x46, 0x6c, 0x6f, 0x77, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x12, 0x38, 0x0a, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1b, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x46, 0x6c, 0x6f, 0x77, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x2e, 0x43, 0x68, 0x6f, 0x69, 0x63, @@ -96977,999 +111058,1879 @@ var file_otg_proto_rawDesc = []byte{ 0x0f, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x67, 0x6d, 0x70, 0x76, 0x31, 0x52, 0x06, 0x69, 0x67, 0x6d, 0x70, 0x76, 0x31, 0x12, 0x21, 0x0a, 0x04, 0x6d, 0x70, 0x6c, 0x73, 0x18, 0x14, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x46, 0x6c, 0x6f, - 0x77, 0x4d, 0x70, 0x6c, 0x73, 0x52, 0x04, 0x6d, 0x70, 0x6c, 0x73, 0x1a, 0xf5, 0x01, 0x0a, 0x06, - 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x22, 0xea, 0x01, 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, - 0x0f, 0x0a, 0x0b, 0x75, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x10, 0x00, - 0x12, 0x0a, 0x0a, 0x06, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x10, 0x01, 0x12, 0x0c, 0x0a, 0x08, - 0x65, 0x74, 0x68, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x10, 0x02, 0x12, 0x08, 0x0a, 0x04, 0x76, 0x6c, - 0x61, 0x6e, 0x10, 0x03, 0x12, 0x09, 0x0a, 0x05, 0x76, 0x78, 0x6c, 0x61, 0x6e, 0x10, 0x04, 0x12, - 0x08, 0x0a, 0x04, 0x69, 0x70, 0x76, 0x34, 0x10, 0x05, 0x12, 0x08, 0x0a, 0x04, 0x69, 0x70, 0x76, - 0x36, 0x10, 0x06, 0x12, 0x0c, 0x0a, 0x08, 0x70, 0x66, 0x63, 0x70, 0x61, 0x75, 0x73, 0x65, 0x10, - 0x07, 0x12, 0x11, 0x0a, 0x0d, 0x65, 0x74, 0x68, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x70, 0x61, 0x75, - 0x73, 0x65, 0x10, 0x08, 0x12, 0x07, 0x0a, 0x03, 0x74, 0x63, 0x70, 0x10, 0x09, 0x12, 0x07, 0x0a, - 0x03, 0x75, 0x64, 0x70, 0x10, 0x0a, 0x12, 0x07, 0x0a, 0x03, 0x67, 0x72, 0x65, 0x10, 0x0b, 0x12, - 0x09, 0x0a, 0x05, 0x67, 0x74, 0x70, 0x76, 0x31, 0x10, 0x0c, 0x12, 0x09, 0x0a, 0x05, 0x67, 0x74, - 0x70, 0x76, 0x32, 0x10, 0x0d, 0x12, 0x07, 0x0a, 0x03, 0x61, 0x72, 0x70, 0x10, 0x0e, 0x12, 0x08, - 0x0a, 0x04, 0x69, 0x63, 0x6d, 0x70, 0x10, 0x0f, 0x12, 0x0a, 0x0a, 0x06, 0x69, 0x63, 0x6d, 0x70, - 0x76, 0x36, 0x10, 0x10, 0x12, 0x07, 0x0a, 0x03, 0x70, 0x70, 0x70, 0x10, 0x11, 0x12, 0x0a, 0x0a, - 0x06, 0x69, 0x67, 0x6d, 0x70, 0x76, 0x31, 0x10, 0x12, 0x12, 0x08, 0x0a, 0x04, 0x6d, 0x70, 0x6c, - 0x73, 0x10, 0x13, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x22, 0x6c, - 0x0a, 0x0a, 0x46, 0x6c, 0x6f, 0x77, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x12, 0x19, 0x0a, 0x05, - 0x62, 0x79, 0x74, 0x65, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x05, 0x62, - 0x79, 0x74, 0x65, 0x73, 0x88, 0x01, 0x01, 0x12, 0x39, 0x0a, 0x0b, 0x6d, 0x65, 0x74, 0x72, 0x69, - 0x63, 0x5f, 0x74, 0x61, 0x67, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x6f, - 0x74, 0x67, 0x2e, 0x46, 0x6c, 0x6f, 0x77, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x4d, 0x65, 0x74, - 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x52, 0x0a, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, - 0x67, 0x73, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x22, 0x87, 0x01, 0x0a, - 0x13, 0x46, 0x6c, 0x6f, 0x77, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x4d, 0x65, 0x74, 0x72, 0x69, - 0x63, 0x54, 0x61, 0x67, 0x12, 0x17, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x48, 0x00, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, - 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, - 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x6c, 0x65, - 0x6e, 0x67, 0x74, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x02, 0x52, 0x06, 0x6c, 0x65, - 0x6e, 0x67, 0x74, 0x68, 0x88, 0x01, 0x01, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x6e, 0x61, 0x6d, 0x65, - 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x42, 0x09, 0x0a, 0x07, 0x5f, - 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x22, 0xed, 0x01, 0x0a, 0x0c, 0x46, 0x6c, 0x6f, 0x77, 0x45, - 0x74, 0x68, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x12, 0x2d, 0x0a, 0x03, 0x64, 0x73, 0x74, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, - 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x45, 0x74, 0x68, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x44, 0x73, - 0x74, 0x52, 0x03, 0x64, 0x73, 0x74, 0x12, 0x2d, 0x0a, 0x03, 0x73, 0x72, 0x63, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, - 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x45, 0x74, 0x68, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x53, 0x72, 0x63, - 0x52, 0x03, 0x73, 0x72, 0x63, 0x12, 0x40, 0x0a, 0x0a, 0x65, 0x74, 0x68, 0x65, 0x72, 0x5f, 0x74, - 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x6f, 0x74, 0x67, 0x2e, - 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x45, 0x74, 0x68, 0x65, 0x72, - 0x6e, 0x65, 0x74, 0x45, 0x74, 0x68, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x52, 0x09, 0x65, 0x74, - 0x68, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x12, 0x3d, 0x0a, 0x09, 0x70, 0x66, 0x63, 0x5f, 0x71, - 0x75, 0x65, 0x75, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x6f, 0x74, 0x67, - 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x45, 0x74, 0x68, 0x65, - 0x72, 0x6e, 0x65, 0x74, 0x50, 0x66, 0x63, 0x51, 0x75, 0x65, 0x75, 0x65, 0x52, 0x08, 0x70, 0x66, - 0x63, 0x51, 0x75, 0x65, 0x75, 0x65, 0x22, 0xc5, 0x01, 0x0a, 0x08, 0x46, 0x6c, 0x6f, 0x77, 0x56, - 0x6c, 0x61, 0x6e, 0x12, 0x38, 0x0a, 0x08, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, - 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x56, 0x6c, 0x61, 0x6e, 0x50, 0x72, 0x69, 0x6f, 0x72, - 0x69, 0x74, 0x79, 0x52, 0x08, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x12, 0x29, 0x0a, - 0x03, 0x63, 0x66, 0x69, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x6f, 0x74, 0x67, - 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x56, 0x6c, 0x61, 0x6e, - 0x43, 0x66, 0x69, 0x52, 0x03, 0x63, 0x66, 0x69, 0x12, 0x26, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, - 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x56, 0x6c, 0x61, 0x6e, 0x49, 0x64, 0x52, 0x02, 0x69, 0x64, - 0x12, 0x2c, 0x0a, 0x04, 0x74, 0x70, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, + 0x77, 0x4d, 0x70, 0x6c, 0x73, 0x52, 0x04, 0x6d, 0x70, 0x6c, 0x73, 0x12, 0x21, 0x0a, 0x04, 0x72, + 0x73, 0x76, 0x70, 0x18, 0x15, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x6f, 0x74, 0x67, 0x2e, + 0x46, 0x6c, 0x6f, 0x77, 0x52, 0x73, 0x76, 0x70, 0x52, 0x04, 0x72, 0x73, 0x76, 0x70, 0x1a, 0xff, + 0x01, 0x0a, 0x06, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x22, 0xf4, 0x01, 0x0a, 0x04, 0x45, 0x6e, + 0x75, 0x6d, 0x12, 0x0f, 0x0a, 0x0b, 0x75, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, + 0x64, 0x10, 0x00, 0x12, 0x0a, 0x0a, 0x06, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x10, 0x01, 0x12, + 0x0c, 0x0a, 0x08, 0x65, 0x74, 0x68, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x10, 0x02, 0x12, 0x08, 0x0a, + 0x04, 0x76, 0x6c, 0x61, 0x6e, 0x10, 0x03, 0x12, 0x09, 0x0a, 0x05, 0x76, 0x78, 0x6c, 0x61, 0x6e, + 0x10, 0x04, 0x12, 0x08, 0x0a, 0x04, 0x69, 0x70, 0x76, 0x34, 0x10, 0x05, 0x12, 0x08, 0x0a, 0x04, + 0x69, 0x70, 0x76, 0x36, 0x10, 0x06, 0x12, 0x0c, 0x0a, 0x08, 0x70, 0x66, 0x63, 0x70, 0x61, 0x75, + 0x73, 0x65, 0x10, 0x07, 0x12, 0x11, 0x0a, 0x0d, 0x65, 0x74, 0x68, 0x65, 0x72, 0x6e, 0x65, 0x74, + 0x70, 0x61, 0x75, 0x73, 0x65, 0x10, 0x08, 0x12, 0x07, 0x0a, 0x03, 0x74, 0x63, 0x70, 0x10, 0x09, + 0x12, 0x07, 0x0a, 0x03, 0x75, 0x64, 0x70, 0x10, 0x0a, 0x12, 0x07, 0x0a, 0x03, 0x67, 0x72, 0x65, + 0x10, 0x0b, 0x12, 0x09, 0x0a, 0x05, 0x67, 0x74, 0x70, 0x76, 0x31, 0x10, 0x0c, 0x12, 0x09, 0x0a, + 0x05, 0x67, 0x74, 0x70, 0x76, 0x32, 0x10, 0x0d, 0x12, 0x07, 0x0a, 0x03, 0x61, 0x72, 0x70, 0x10, + 0x0e, 0x12, 0x08, 0x0a, 0x04, 0x69, 0x63, 0x6d, 0x70, 0x10, 0x0f, 0x12, 0x0a, 0x0a, 0x06, 0x69, + 0x63, 0x6d, 0x70, 0x76, 0x36, 0x10, 0x10, 0x12, 0x07, 0x0a, 0x03, 0x70, 0x70, 0x70, 0x10, 0x11, + 0x12, 0x0a, 0x0a, 0x06, 0x69, 0x67, 0x6d, 0x70, 0x76, 0x31, 0x10, 0x12, 0x12, 0x08, 0x0a, 0x04, + 0x6d, 0x70, 0x6c, 0x73, 0x10, 0x13, 0x12, 0x08, 0x0a, 0x04, 0x72, 0x73, 0x76, 0x70, 0x10, 0x14, + 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x22, 0x6c, 0x0a, 0x0a, 0x46, + 0x6c, 0x6f, 0x77, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x12, 0x19, 0x0a, 0x05, 0x62, 0x79, 0x74, + 0x65, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x05, 0x62, 0x79, 0x74, 0x65, + 0x73, 0x88, 0x01, 0x01, 0x12, 0x39, 0x0a, 0x0b, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x5f, 0x74, + 0x61, 0x67, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x6f, 0x74, 0x67, 0x2e, + 0x46, 0x6c, 0x6f, 0x77, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, + 0x54, 0x61, 0x67, 0x52, 0x0a, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x73, 0x42, + 0x08, 0x0a, 0x06, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x22, 0x87, 0x01, 0x0a, 0x13, 0x46, 0x6c, + 0x6f, 0x77, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, + 0x67, 0x12, 0x17, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, + 0x00, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x6f, 0x66, + 0x66, 0x73, 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x06, 0x6f, 0x66, + 0x66, 0x73, 0x65, 0x74, 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, + 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x02, 0x52, 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, + 0x68, 0x88, 0x01, 0x01, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x42, 0x09, 0x0a, + 0x07, 0x5f, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6c, 0x65, 0x6e, + 0x67, 0x74, 0x68, 0x22, 0xed, 0x01, 0x0a, 0x0c, 0x46, 0x6c, 0x6f, 0x77, 0x45, 0x74, 0x68, 0x65, + 0x72, 0x6e, 0x65, 0x74, 0x12, 0x2d, 0x0a, 0x03, 0x64, 0x73, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x1b, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, + 0x6c, 0x6f, 0x77, 0x45, 0x74, 0x68, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x44, 0x73, 0x74, 0x52, 0x03, + 0x64, 0x73, 0x74, 0x12, 0x2d, 0x0a, 0x03, 0x73, 0x72, 0x63, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x1b, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, + 0x6f, 0x77, 0x45, 0x74, 0x68, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x53, 0x72, 0x63, 0x52, 0x03, 0x73, + 0x72, 0x63, 0x12, 0x40, 0x0a, 0x0a, 0x65, 0x74, 0x68, 0x65, 0x72, 0x5f, 0x74, 0x79, 0x70, 0x65, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, + 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x45, 0x74, 0x68, 0x65, 0x72, 0x6e, 0x65, 0x74, + 0x45, 0x74, 0x68, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x52, 0x09, 0x65, 0x74, 0x68, 0x65, 0x72, + 0x54, 0x79, 0x70, 0x65, 0x12, 0x3d, 0x0a, 0x09, 0x70, 0x66, 0x63, 0x5f, 0x71, 0x75, 0x65, 0x75, + 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, + 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x45, 0x74, 0x68, 0x65, 0x72, 0x6e, 0x65, + 0x74, 0x50, 0x66, 0x63, 0x51, 0x75, 0x65, 0x75, 0x65, 0x52, 0x08, 0x70, 0x66, 0x63, 0x51, 0x75, + 0x65, 0x75, 0x65, 0x22, 0xc5, 0x01, 0x0a, 0x08, 0x46, 0x6c, 0x6f, 0x77, 0x56, 0x6c, 0x61, 0x6e, + 0x12, 0x38, 0x0a, 0x08, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, + 0x46, 0x6c, 0x6f, 0x77, 0x56, 0x6c, 0x61, 0x6e, 0x50, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, + 0x52, 0x08, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x12, 0x29, 0x0a, 0x03, 0x63, 0x66, + 0x69, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, + 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x56, 0x6c, 0x61, 0x6e, 0x43, 0x66, 0x69, + 0x52, 0x03, 0x63, 0x66, 0x69, 0x12, 0x26, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x16, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, + 0x6c, 0x6f, 0x77, 0x56, 0x6c, 0x61, 0x6e, 0x49, 0x64, 0x52, 0x02, 0x69, 0x64, 0x12, 0x2c, 0x0a, + 0x04, 0x74, 0x70, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x6f, 0x74, + 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x56, 0x6c, 0x61, + 0x6e, 0x54, 0x70, 0x69, 0x64, 0x52, 0x04, 0x74, 0x70, 0x69, 0x64, 0x22, 0xe5, 0x01, 0x0a, 0x09, + 0x46, 0x6c, 0x6f, 0x77, 0x56, 0x78, 0x6c, 0x61, 0x6e, 0x12, 0x30, 0x0a, 0x05, 0x66, 0x6c, 0x61, + 0x67, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, + 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x56, 0x78, 0x6c, 0x61, 0x6e, 0x46, + 0x6c, 0x61, 0x67, 0x73, 0x52, 0x05, 0x66, 0x6c, 0x61, 0x67, 0x73, 0x12, 0x3c, 0x0a, 0x09, 0x72, + 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x64, 0x30, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, - 0x56, 0x6c, 0x61, 0x6e, 0x54, 0x70, 0x69, 0x64, 0x52, 0x04, 0x74, 0x70, 0x69, 0x64, 0x22, 0xe5, - 0x01, 0x0a, 0x09, 0x46, 0x6c, 0x6f, 0x77, 0x56, 0x78, 0x6c, 0x61, 0x6e, 0x12, 0x30, 0x0a, 0x05, - 0x66, 0x6c, 0x61, 0x67, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x6f, 0x74, - 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x56, 0x78, 0x6c, - 0x61, 0x6e, 0x46, 0x6c, 0x61, 0x67, 0x73, 0x52, 0x05, 0x66, 0x6c, 0x61, 0x67, 0x73, 0x12, 0x3c, - 0x0a, 0x09, 0x72, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x64, 0x30, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x1e, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, - 0x6c, 0x6f, 0x77, 0x56, 0x78, 0x6c, 0x61, 0x6e, 0x52, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x64, - 0x30, 0x52, 0x09, 0x72, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x64, 0x30, 0x12, 0x2a, 0x0a, 0x03, - 0x76, 0x6e, 0x69, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x6f, 0x74, 0x67, 0x2e, - 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x56, 0x78, 0x6c, 0x61, 0x6e, - 0x56, 0x6e, 0x69, 0x52, 0x03, 0x76, 0x6e, 0x69, 0x12, 0x3c, 0x0a, 0x09, 0x72, 0x65, 0x73, 0x65, - 0x72, 0x76, 0x65, 0x64, 0x31, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x6f, 0x74, - 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x56, 0x78, 0x6c, - 0x61, 0x6e, 0x52, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x64, 0x31, 0x52, 0x09, 0x72, 0x65, 0x73, - 0x65, 0x72, 0x76, 0x65, 0x64, 0x31, 0x22, 0x82, 0x07, 0x0a, 0x08, 0x46, 0x6c, 0x6f, 0x77, 0x49, - 0x70, 0x76, 0x34, 0x12, 0x35, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, - 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x70, 0x76, 0x34, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, - 0x6e, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x45, 0x0a, 0x0d, 0x68, 0x65, - 0x61, 0x64, 0x65, 0x72, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x20, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, - 0x6c, 0x6f, 0x77, 0x49, 0x70, 0x76, 0x34, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x4c, 0x65, 0x6e, - 0x67, 0x74, 0x68, 0x52, 0x0c, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x4c, 0x65, 0x6e, 0x67, 0x74, - 0x68, 0x12, 0x31, 0x0a, 0x08, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x70, - 0x76, 0x34, 0x50, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x52, 0x08, 0x70, 0x72, 0x69, 0x6f, - 0x72, 0x69, 0x74, 0x79, 0x12, 0x42, 0x0a, 0x0c, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x6c, 0x65, - 0x6e, 0x67, 0x74, 0x68, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x6f, 0x74, 0x67, - 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x70, 0x76, 0x34, - 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x52, 0x0b, 0x74, 0x6f, 0x74, - 0x61, 0x6c, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x12, 0x4a, 0x0a, 0x0e, 0x69, 0x64, 0x65, 0x6e, - 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x22, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, - 0x6f, 0x77, 0x49, 0x70, 0x76, 0x34, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0e, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x38, 0x0a, 0x08, 0x72, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x64, - 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, - 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x70, 0x76, 0x34, 0x52, 0x65, 0x73, 0x65, - 0x72, 0x76, 0x65, 0x64, 0x52, 0x08, 0x72, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x64, 0x12, 0x45, - 0x0a, 0x0d, 0x64, 0x6f, 0x6e, 0x74, 0x5f, 0x66, 0x72, 0x61, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x18, - 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, - 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x70, 0x76, 0x34, 0x44, 0x6f, 0x6e, 0x74, 0x46, - 0x72, 0x61, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x0c, 0x64, 0x6f, 0x6e, 0x74, 0x46, 0x72, 0x61, - 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x48, 0x0a, 0x0e, 0x6d, 0x6f, 0x72, 0x65, 0x5f, 0x66, 0x72, - 0x61, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, - 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, - 0x70, 0x76, 0x34, 0x4d, 0x6f, 0x72, 0x65, 0x46, 0x72, 0x61, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x73, - 0x52, 0x0d, 0x6d, 0x6f, 0x72, 0x65, 0x46, 0x72, 0x61, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x12, - 0x4b, 0x0a, 0x0f, 0x66, 0x72, 0x61, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x6f, 0x66, 0x66, 0x73, - 0x65, 0x74, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, - 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x70, 0x76, 0x34, 0x46, 0x72, - 0x61, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x4f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x52, 0x0e, 0x66, 0x72, - 0x61, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x4f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x12, 0x40, 0x0a, 0x0c, - 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x74, 0x6f, 0x5f, 0x6c, 0x69, 0x76, 0x65, 0x18, 0x0a, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, - 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x70, 0x76, 0x34, 0x54, 0x69, 0x6d, 0x65, 0x54, 0x6f, 0x4c, 0x69, - 0x76, 0x65, 0x52, 0x0a, 0x74, 0x69, 0x6d, 0x65, 0x54, 0x6f, 0x4c, 0x69, 0x76, 0x65, 0x12, 0x38, - 0x0a, 0x08, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x1c, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, - 0x6f, 0x77, 0x49, 0x70, 0x76, 0x34, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x52, 0x08, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x12, 0x4b, 0x0a, 0x0f, 0x68, 0x65, 0x61, 0x64, - 0x65, 0x72, 0x5f, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x18, 0x0c, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x22, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, - 0x6c, 0x6f, 0x77, 0x49, 0x70, 0x76, 0x34, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x43, 0x68, 0x65, - 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x52, 0x0e, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x43, 0x68, 0x65, - 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x12, 0x29, 0x0a, 0x03, 0x73, 0x72, 0x63, 0x18, 0x0d, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, - 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x70, 0x76, 0x34, 0x53, 0x72, 0x63, 0x52, 0x03, 0x73, 0x72, 0x63, - 0x12, 0x29, 0x0a, 0x03, 0x64, 0x73, 0x74, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, - 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, - 0x70, 0x76, 0x34, 0x44, 0x73, 0x74, 0x52, 0x03, 0x64, 0x73, 0x74, 0x22, 0x9a, 0x02, 0x0a, 0x10, - 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x70, 0x76, 0x34, 0x50, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, - 0x12, 0x3e, 0x0a, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, - 0x32, 0x21, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x70, 0x76, 0x34, 0x50, - 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x2e, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x2e, 0x45, - 0x6e, 0x75, 0x6d, 0x48, 0x00, 0x52, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x88, 0x01, 0x01, - 0x12, 0x31, 0x0a, 0x03, 0x72, 0x61, 0x77, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, + 0x56, 0x78, 0x6c, 0x61, 0x6e, 0x52, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x64, 0x30, 0x52, 0x09, + 0x72, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x64, 0x30, 0x12, 0x2a, 0x0a, 0x03, 0x76, 0x6e, 0x69, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, + 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x56, 0x78, 0x6c, 0x61, 0x6e, 0x56, 0x6e, 0x69, + 0x52, 0x03, 0x76, 0x6e, 0x69, 0x12, 0x3c, 0x0a, 0x09, 0x72, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, + 0x64, 0x31, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, + 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x56, 0x78, 0x6c, 0x61, 0x6e, 0x52, + 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x64, 0x31, 0x52, 0x09, 0x72, 0x65, 0x73, 0x65, 0x72, 0x76, + 0x65, 0x64, 0x31, 0x22, 0x82, 0x07, 0x0a, 0x08, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x70, 0x76, 0x34, + 0x12, 0x35, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x1b, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, + 0x6c, 0x6f, 0x77, 0x49, 0x70, 0x76, 0x34, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x07, + 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x45, 0x0a, 0x0d, 0x68, 0x65, 0x61, 0x64, 0x65, + 0x72, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, + 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, + 0x49, 0x70, 0x76, 0x34, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, + 0x52, 0x0c, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x12, 0x31, + 0x0a, 0x08, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x15, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x70, 0x76, 0x34, 0x50, + 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x52, 0x08, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, + 0x79, 0x12, 0x42, 0x0a, 0x0c, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, + 0x68, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, + 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x70, 0x76, 0x34, 0x54, 0x6f, 0x74, + 0x61, 0x6c, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x52, 0x0b, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x4c, + 0x65, 0x6e, 0x67, 0x74, 0x68, 0x12, 0x4a, 0x0a, 0x0e, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, + 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, - 0x70, 0x76, 0x34, 0x50, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x52, 0x61, 0x77, 0x52, 0x03, - 0x72, 0x61, 0x77, 0x12, 0x22, 0x0a, 0x03, 0x74, 0x6f, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x10, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x70, 0x76, 0x34, 0x54, - 0x6f, 0x73, 0x52, 0x03, 0x74, 0x6f, 0x73, 0x12, 0x25, 0x0a, 0x04, 0x64, 0x73, 0x63, 0x70, 0x18, - 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x46, 0x6c, 0x6f, 0x77, - 0x49, 0x70, 0x76, 0x34, 0x44, 0x73, 0x63, 0x70, 0x52, 0x04, 0x64, 0x73, 0x63, 0x70, 0x1a, 0x3d, - 0x0a, 0x06, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x22, 0x33, 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, - 0x12, 0x0f, 0x0a, 0x0b, 0x75, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x10, - 0x00, 0x12, 0x07, 0x0a, 0x03, 0x72, 0x61, 0x77, 0x10, 0x01, 0x12, 0x07, 0x0a, 0x03, 0x74, 0x6f, - 0x73, 0x10, 0x02, 0x12, 0x08, 0x0a, 0x04, 0x64, 0x73, 0x63, 0x70, 0x10, 0x03, 0x42, 0x09, 0x0a, - 0x07, 0x5f, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x22, 0x6c, 0x0a, 0x0c, 0x46, 0x6c, 0x6f, 0x77, - 0x49, 0x70, 0x76, 0x34, 0x44, 0x73, 0x63, 0x70, 0x12, 0x2d, 0x0a, 0x03, 0x70, 0x68, 0x62, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, - 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x70, 0x76, 0x34, 0x44, 0x73, 0x63, 0x70, 0x50, - 0x68, 0x62, 0x52, 0x03, 0x70, 0x68, 0x62, 0x12, 0x2d, 0x0a, 0x03, 0x65, 0x63, 0x6e, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, - 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x70, 0x76, 0x34, 0x44, 0x73, 0x63, 0x70, 0x45, 0x63, - 0x6e, 0x52, 0x03, 0x65, 0x63, 0x6e, 0x22, 0x81, 0x03, 0x0a, 0x0b, 0x46, 0x6c, 0x6f, 0x77, 0x49, - 0x70, 0x76, 0x34, 0x54, 0x6f, 0x73, 0x12, 0x41, 0x0a, 0x0a, 0x70, 0x72, 0x65, 0x63, 0x65, 0x64, - 0x65, 0x6e, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x6f, 0x74, 0x67, + 0x70, 0x76, 0x34, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x52, 0x0e, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x12, 0x38, 0x0a, 0x08, 0x72, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x64, 0x18, 0x06, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, + 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x70, 0x76, 0x34, 0x52, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, + 0x64, 0x52, 0x08, 0x72, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x64, 0x12, 0x45, 0x0a, 0x0d, 0x64, + 0x6f, 0x6e, 0x74, 0x5f, 0x66, 0x72, 0x61, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x07, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, + 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x70, 0x76, 0x34, 0x44, 0x6f, 0x6e, 0x74, 0x46, 0x72, 0x61, 0x67, + 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x0c, 0x64, 0x6f, 0x6e, 0x74, 0x46, 0x72, 0x61, 0x67, 0x6d, 0x65, + 0x6e, 0x74, 0x12, 0x48, 0x0a, 0x0e, 0x6d, 0x6f, 0x72, 0x65, 0x5f, 0x66, 0x72, 0x61, 0x67, 0x6d, + 0x65, 0x6e, 0x74, 0x73, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x70, 0x76, 0x34, - 0x54, 0x6f, 0x73, 0x50, 0x72, 0x65, 0x63, 0x65, 0x64, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x0a, 0x70, - 0x72, 0x65, 0x63, 0x65, 0x64, 0x65, 0x6e, 0x63, 0x65, 0x12, 0x32, 0x0a, 0x05, 0x64, 0x65, 0x6c, - 0x61, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, - 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x70, 0x76, 0x34, 0x54, 0x6f, - 0x73, 0x44, 0x65, 0x6c, 0x61, 0x79, 0x52, 0x05, 0x64, 0x65, 0x6c, 0x61, 0x79, 0x12, 0x41, 0x0a, - 0x0a, 0x74, 0x68, 0x72, 0x6f, 0x75, 0x67, 0x68, 0x70, 0x75, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x21, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, - 0x6c, 0x6f, 0x77, 0x49, 0x70, 0x76, 0x34, 0x54, 0x6f, 0x73, 0x54, 0x68, 0x72, 0x6f, 0x75, 0x67, - 0x68, 0x70, 0x75, 0x74, 0x52, 0x0a, 0x74, 0x68, 0x72, 0x6f, 0x75, 0x67, 0x68, 0x70, 0x75, 0x74, - 0x12, 0x44, 0x0a, 0x0b, 0x72, 0x65, 0x6c, 0x69, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x18, - 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, - 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x70, 0x76, 0x34, 0x54, 0x6f, 0x73, 0x52, 0x65, - 0x6c, 0x69, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x52, 0x0b, 0x72, 0x65, 0x6c, 0x69, 0x61, - 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x12, 0x3b, 0x0a, 0x08, 0x6d, 0x6f, 0x6e, 0x65, 0x74, 0x61, - 0x72, 0x79, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, - 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x70, 0x76, 0x34, 0x54, 0x6f, - 0x73, 0x4d, 0x6f, 0x6e, 0x65, 0x74, 0x61, 0x72, 0x79, 0x52, 0x08, 0x6d, 0x6f, 0x6e, 0x65, 0x74, - 0x61, 0x72, 0x79, 0x12, 0x35, 0x0a, 0x06, 0x75, 0x6e, 0x75, 0x73, 0x65, 0x64, 0x18, 0x06, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, - 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x70, 0x76, 0x34, 0x54, 0x6f, 0x73, 0x55, 0x6e, 0x75, 0x73, - 0x65, 0x64, 0x52, 0x06, 0x75, 0x6e, 0x75, 0x73, 0x65, 0x64, 0x22, 0xe2, 0x03, 0x0a, 0x08, 0x46, - 0x6c, 0x6f, 0x77, 0x49, 0x70, 0x76, 0x36, 0x12, 0x35, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, - 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, - 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x70, 0x76, 0x36, 0x56, 0x65, - 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x45, - 0x0a, 0x0d, 0x74, 0x72, 0x61, 0x66, 0x66, 0x69, 0x63, 0x5f, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, - 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x70, 0x76, 0x36, 0x54, 0x72, 0x61, 0x66, 0x66, - 0x69, 0x63, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x52, 0x0c, 0x74, 0x72, 0x61, 0x66, 0x66, 0x69, 0x63, - 0x43, 0x6c, 0x61, 0x73, 0x73, 0x12, 0x3c, 0x0a, 0x0a, 0x66, 0x6c, 0x6f, 0x77, 0x5f, 0x6c, 0x61, - 0x62, 0x65, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x6f, 0x74, 0x67, 0x2e, - 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x70, 0x76, 0x36, 0x46, - 0x6c, 0x6f, 0x77, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x52, 0x09, 0x66, 0x6c, 0x6f, 0x77, 0x4c, 0x61, - 0x62, 0x65, 0x6c, 0x12, 0x48, 0x0a, 0x0e, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x6c, - 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x6f, 0x74, - 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x70, 0x76, - 0x36, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x52, 0x0d, - 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x12, 0x3f, 0x0a, - 0x0b, 0x6e, 0x65, 0x78, 0x74, 0x5f, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x18, 0x05, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, - 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x70, 0x76, 0x36, 0x4e, 0x65, 0x78, 0x74, 0x48, 0x65, 0x61, 0x64, - 0x65, 0x72, 0x52, 0x0a, 0x6e, 0x65, 0x78, 0x74, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x12, 0x39, - 0x0a, 0x09, 0x68, 0x6f, 0x70, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x1c, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, - 0x6c, 0x6f, 0x77, 0x49, 0x70, 0x76, 0x36, 0x48, 0x6f, 0x70, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x52, - 0x08, 0x68, 0x6f, 0x70, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x29, 0x0a, 0x03, 0x73, 0x72, 0x63, - 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, - 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x70, 0x76, 0x36, 0x53, 0x72, 0x63, 0x52, - 0x03, 0x73, 0x72, 0x63, 0x12, 0x29, 0x0a, 0x03, 0x64, 0x73, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x17, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, - 0x6c, 0x6f, 0x77, 0x49, 0x70, 0x76, 0x36, 0x44, 0x73, 0x74, 0x52, 0x03, 0x64, 0x73, 0x74, 0x22, - 0xa0, 0x07, 0x0a, 0x0c, 0x46, 0x6c, 0x6f, 0x77, 0x50, 0x66, 0x63, 0x50, 0x61, 0x75, 0x73, 0x65, - 0x12, 0x2d, 0x0a, 0x03, 0x64, 0x73, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, - 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x50, - 0x66, 0x63, 0x50, 0x61, 0x75, 0x73, 0x65, 0x44, 0x73, 0x74, 0x52, 0x03, 0x64, 0x73, 0x74, 0x12, - 0x2d, 0x0a, 0x03, 0x73, 0x72, 0x63, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x6f, - 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x50, 0x66, - 0x63, 0x50, 0x61, 0x75, 0x73, 0x65, 0x53, 0x72, 0x63, 0x52, 0x03, 0x73, 0x72, 0x63, 0x12, 0x40, - 0x0a, 0x0a, 0x65, 0x74, 0x68, 0x65, 0x72, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, - 0x46, 0x6c, 0x6f, 0x77, 0x50, 0x66, 0x63, 0x50, 0x61, 0x75, 0x73, 0x65, 0x45, 0x74, 0x68, 0x65, - 0x72, 0x54, 0x79, 0x70, 0x65, 0x52, 0x09, 0x65, 0x74, 0x68, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, - 0x12, 0x4d, 0x0a, 0x0f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x5f, 0x6f, 0x70, 0x5f, 0x63, - 0x6f, 0x64, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x6f, 0x74, 0x67, 0x2e, - 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x50, 0x66, 0x63, 0x50, 0x61, - 0x75, 0x73, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x4f, 0x70, 0x43, 0x6f, 0x64, 0x65, - 0x52, 0x0d, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x4f, 0x70, 0x43, 0x6f, 0x64, 0x65, 0x12, - 0x59, 0x0a, 0x13, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x5f, - 0x76, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x6f, - 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x50, 0x66, - 0x63, 0x50, 0x61, 0x75, 0x73, 0x65, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x45, 0x6e, 0x61, 0x62, 0x6c, - 0x65, 0x56, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x52, 0x11, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x45, 0x6e, - 0x61, 0x62, 0x6c, 0x65, 0x56, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x12, 0x47, 0x0a, 0x0d, 0x70, 0x61, - 0x75, 0x73, 0x65, 0x5f, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x5f, 0x30, 0x18, 0x06, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x23, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, - 0x6c, 0x6f, 0x77, 0x50, 0x66, 0x63, 0x50, 0x61, 0x75, 0x73, 0x65, 0x50, 0x61, 0x75, 0x73, 0x65, - 0x43, 0x6c, 0x61, 0x73, 0x73, 0x30, 0x52, 0x0b, 0x70, 0x61, 0x75, 0x73, 0x65, 0x43, 0x6c, 0x61, - 0x73, 0x73, 0x30, 0x12, 0x47, 0x0a, 0x0d, 0x70, 0x61, 0x75, 0x73, 0x65, 0x5f, 0x63, 0x6c, 0x61, - 0x73, 0x73, 0x5f, 0x31, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x6f, 0x74, 0x67, + 0x4d, 0x6f, 0x72, 0x65, 0x46, 0x72, 0x61, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x0d, 0x6d, + 0x6f, 0x72, 0x65, 0x46, 0x72, 0x61, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x4b, 0x0a, 0x0f, + 0x66, 0x72, 0x61, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, + 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, + 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x70, 0x76, 0x34, 0x46, 0x72, 0x61, 0x67, 0x6d, + 0x65, 0x6e, 0x74, 0x4f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x52, 0x0e, 0x66, 0x72, 0x61, 0x67, 0x6d, + 0x65, 0x6e, 0x74, 0x4f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x12, 0x40, 0x0a, 0x0c, 0x74, 0x69, 0x6d, + 0x65, 0x5f, 0x74, 0x6f, 0x5f, 0x6c, 0x69, 0x76, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x1e, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, + 0x77, 0x49, 0x70, 0x76, 0x34, 0x54, 0x69, 0x6d, 0x65, 0x54, 0x6f, 0x4c, 0x69, 0x76, 0x65, 0x52, + 0x0a, 0x74, 0x69, 0x6d, 0x65, 0x54, 0x6f, 0x4c, 0x69, 0x76, 0x65, 0x12, 0x38, 0x0a, 0x08, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, + 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, + 0x70, 0x76, 0x34, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x52, 0x08, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x12, 0x4b, 0x0a, 0x0f, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x5f, + 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, + 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, + 0x49, 0x70, 0x76, 0x34, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x73, + 0x75, 0x6d, 0x52, 0x0e, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x73, + 0x75, 0x6d, 0x12, 0x29, 0x0a, 0x03, 0x73, 0x72, 0x63, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x17, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, + 0x77, 0x49, 0x70, 0x76, 0x34, 0x53, 0x72, 0x63, 0x52, 0x03, 0x73, 0x72, 0x63, 0x12, 0x29, 0x0a, + 0x03, 0x64, 0x73, 0x74, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x6f, 0x74, 0x67, + 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x70, 0x76, 0x34, + 0x44, 0x73, 0x74, 0x52, 0x03, 0x64, 0x73, 0x74, 0x22, 0x9a, 0x02, 0x0a, 0x10, 0x46, 0x6c, 0x6f, + 0x77, 0x49, 0x70, 0x76, 0x34, 0x50, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x12, 0x3e, 0x0a, + 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x21, 0x2e, + 0x6f, 0x74, 0x67, 0x2e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x70, 0x76, 0x34, 0x50, 0x72, 0x69, 0x6f, + 0x72, 0x69, 0x74, 0x79, 0x2e, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x2e, 0x45, 0x6e, 0x75, 0x6d, + 0x48, 0x00, 0x52, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x88, 0x01, 0x01, 0x12, 0x31, 0x0a, + 0x03, 0x72, 0x61, 0x77, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x6f, 0x74, 0x67, + 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x70, 0x76, 0x34, + 0x50, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x52, 0x61, 0x77, 0x52, 0x03, 0x72, 0x61, 0x77, + 0x12, 0x22, 0x0a, 0x03, 0x74, 0x6f, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, + 0x6f, 0x74, 0x67, 0x2e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x70, 0x76, 0x34, 0x54, 0x6f, 0x73, 0x52, + 0x03, 0x74, 0x6f, 0x73, 0x12, 0x25, 0x0a, 0x04, 0x64, 0x73, 0x63, 0x70, 0x18, 0x04, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x70, 0x76, + 0x34, 0x44, 0x73, 0x63, 0x70, 0x52, 0x04, 0x64, 0x73, 0x63, 0x70, 0x1a, 0x3d, 0x0a, 0x06, 0x43, + 0x68, 0x6f, 0x69, 0x63, 0x65, 0x22, 0x33, 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x0a, + 0x0b, 0x75, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x10, 0x00, 0x12, 0x07, + 0x0a, 0x03, 0x72, 0x61, 0x77, 0x10, 0x01, 0x12, 0x07, 0x0a, 0x03, 0x74, 0x6f, 0x73, 0x10, 0x02, + 0x12, 0x08, 0x0a, 0x04, 0x64, 0x73, 0x63, 0x70, 0x10, 0x03, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x63, + 0x68, 0x6f, 0x69, 0x63, 0x65, 0x22, 0x6c, 0x0a, 0x0c, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x70, 0x76, + 0x34, 0x44, 0x73, 0x63, 0x70, 0x12, 0x2d, 0x0a, 0x03, 0x70, 0x68, 0x62, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, + 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x70, 0x76, 0x34, 0x44, 0x73, 0x63, 0x70, 0x50, 0x68, 0x62, 0x52, + 0x03, 0x70, 0x68, 0x62, 0x12, 0x2d, 0x0a, 0x03, 0x65, 0x63, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x1b, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, + 0x6c, 0x6f, 0x77, 0x49, 0x70, 0x76, 0x34, 0x44, 0x73, 0x63, 0x70, 0x45, 0x63, 0x6e, 0x52, 0x03, + 0x65, 0x63, 0x6e, 0x22, 0x81, 0x03, 0x0a, 0x0b, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x70, 0x76, 0x34, + 0x54, 0x6f, 0x73, 0x12, 0x41, 0x0a, 0x0a, 0x70, 0x72, 0x65, 0x63, 0x65, 0x64, 0x65, 0x6e, 0x63, + 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, + 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x70, 0x76, 0x34, 0x54, 0x6f, 0x73, + 0x50, 0x72, 0x65, 0x63, 0x65, 0x64, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x0a, 0x70, 0x72, 0x65, 0x63, + 0x65, 0x64, 0x65, 0x6e, 0x63, 0x65, 0x12, 0x32, 0x0a, 0x05, 0x64, 0x65, 0x6c, 0x61, 0x79, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, + 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x70, 0x76, 0x34, 0x54, 0x6f, 0x73, 0x44, 0x65, + 0x6c, 0x61, 0x79, 0x52, 0x05, 0x64, 0x65, 0x6c, 0x61, 0x79, 0x12, 0x41, 0x0a, 0x0a, 0x74, 0x68, + 0x72, 0x6f, 0x75, 0x67, 0x68, 0x70, 0x75, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, + 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, + 0x49, 0x70, 0x76, 0x34, 0x54, 0x6f, 0x73, 0x54, 0x68, 0x72, 0x6f, 0x75, 0x67, 0x68, 0x70, 0x75, + 0x74, 0x52, 0x0a, 0x74, 0x68, 0x72, 0x6f, 0x75, 0x67, 0x68, 0x70, 0x75, 0x74, 0x12, 0x44, 0x0a, + 0x0b, 0x72, 0x65, 0x6c, 0x69, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x18, 0x04, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, + 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x70, 0x76, 0x34, 0x54, 0x6f, 0x73, 0x52, 0x65, 0x6c, 0x69, 0x61, + 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x52, 0x0b, 0x72, 0x65, 0x6c, 0x69, 0x61, 0x62, 0x69, 0x6c, + 0x69, 0x74, 0x79, 0x12, 0x3b, 0x0a, 0x08, 0x6d, 0x6f, 0x6e, 0x65, 0x74, 0x61, 0x72, 0x79, 0x18, + 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, + 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x70, 0x76, 0x34, 0x54, 0x6f, 0x73, 0x4d, 0x6f, + 0x6e, 0x65, 0x74, 0x61, 0x72, 0x79, 0x52, 0x08, 0x6d, 0x6f, 0x6e, 0x65, 0x74, 0x61, 0x72, 0x79, + 0x12, 0x35, 0x0a, 0x06, 0x75, 0x6e, 0x75, 0x73, 0x65, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x1d, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, + 0x6f, 0x77, 0x49, 0x70, 0x76, 0x34, 0x54, 0x6f, 0x73, 0x55, 0x6e, 0x75, 0x73, 0x65, 0x64, 0x52, + 0x06, 0x75, 0x6e, 0x75, 0x73, 0x65, 0x64, 0x22, 0xe2, 0x03, 0x0a, 0x08, 0x46, 0x6c, 0x6f, 0x77, + 0x49, 0x70, 0x76, 0x36, 0x12, 0x35, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, + 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x70, 0x76, 0x36, 0x56, 0x65, 0x72, 0x73, 0x69, + 0x6f, 0x6e, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x45, 0x0a, 0x0d, 0x74, + 0x72, 0x61, 0x66, 0x66, 0x69, 0x63, 0x5f, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, + 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x70, 0x76, 0x36, 0x54, 0x72, 0x61, 0x66, 0x66, 0x69, 0x63, 0x43, + 0x6c, 0x61, 0x73, 0x73, 0x52, 0x0c, 0x74, 0x72, 0x61, 0x66, 0x66, 0x69, 0x63, 0x43, 0x6c, 0x61, + 0x73, 0x73, 0x12, 0x3c, 0x0a, 0x0a, 0x66, 0x6c, 0x6f, 0x77, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, + 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x70, 0x76, 0x36, 0x46, 0x6c, 0x6f, 0x77, + 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x52, 0x09, 0x66, 0x6c, 0x6f, 0x77, 0x4c, 0x61, 0x62, 0x65, 0x6c, + 0x12, 0x48, 0x0a, 0x0e, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x6c, 0x65, 0x6e, 0x67, + 0x74, 0x68, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, + 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x70, 0x76, 0x36, 0x50, 0x61, + 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x52, 0x0d, 0x70, 0x61, 0x79, + 0x6c, 0x6f, 0x61, 0x64, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x12, 0x3f, 0x0a, 0x0b, 0x6e, 0x65, + 0x78, 0x74, 0x5f, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x1e, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, + 0x77, 0x49, 0x70, 0x76, 0x36, 0x4e, 0x65, 0x78, 0x74, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x52, + 0x0a, 0x6e, 0x65, 0x78, 0x74, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x12, 0x39, 0x0a, 0x09, 0x68, + 0x6f, 0x70, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, + 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, + 0x49, 0x70, 0x76, 0x36, 0x48, 0x6f, 0x70, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x52, 0x08, 0x68, 0x6f, + 0x70, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x29, 0x0a, 0x03, 0x73, 0x72, 0x63, 0x18, 0x07, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, + 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x70, 0x76, 0x36, 0x53, 0x72, 0x63, 0x52, 0x03, 0x73, 0x72, + 0x63, 0x12, 0x29, 0x0a, 0x03, 0x64, 0x73, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, + 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, + 0x49, 0x70, 0x76, 0x36, 0x44, 0x73, 0x74, 0x52, 0x03, 0x64, 0x73, 0x74, 0x22, 0xa0, 0x07, 0x0a, + 0x0c, 0x46, 0x6c, 0x6f, 0x77, 0x50, 0x66, 0x63, 0x50, 0x61, 0x75, 0x73, 0x65, 0x12, 0x2d, 0x0a, + 0x03, 0x64, 0x73, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x50, 0x66, 0x63, 0x50, - 0x61, 0x75, 0x73, 0x65, 0x50, 0x61, 0x75, 0x73, 0x65, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x31, 0x52, - 0x0b, 0x70, 0x61, 0x75, 0x73, 0x65, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x31, 0x12, 0x47, 0x0a, 0x0d, - 0x70, 0x61, 0x75, 0x73, 0x65, 0x5f, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x5f, 0x32, 0x18, 0x08, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, - 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x50, 0x66, 0x63, 0x50, 0x61, 0x75, 0x73, 0x65, 0x50, 0x61, 0x75, - 0x73, 0x65, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x32, 0x52, 0x0b, 0x70, 0x61, 0x75, 0x73, 0x65, 0x43, - 0x6c, 0x61, 0x73, 0x73, 0x32, 0x12, 0x47, 0x0a, 0x0d, 0x70, 0x61, 0x75, 0x73, 0x65, 0x5f, 0x63, - 0x6c, 0x61, 0x73, 0x73, 0x5f, 0x33, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x6f, - 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x50, 0x66, - 0x63, 0x50, 0x61, 0x75, 0x73, 0x65, 0x50, 0x61, 0x75, 0x73, 0x65, 0x43, 0x6c, 0x61, 0x73, 0x73, - 0x33, 0x52, 0x0b, 0x70, 0x61, 0x75, 0x73, 0x65, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x33, 0x12, 0x47, - 0x0a, 0x0d, 0x70, 0x61, 0x75, 0x73, 0x65, 0x5f, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x5f, 0x34, 0x18, - 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, - 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x50, 0x66, 0x63, 0x50, 0x61, 0x75, 0x73, 0x65, 0x50, - 0x61, 0x75, 0x73, 0x65, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x34, 0x52, 0x0b, 0x70, 0x61, 0x75, 0x73, - 0x65, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x34, 0x12, 0x47, 0x0a, 0x0d, 0x70, 0x61, 0x75, 0x73, 0x65, - 0x5f, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x5f, 0x35, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, + 0x61, 0x75, 0x73, 0x65, 0x44, 0x73, 0x74, 0x52, 0x03, 0x64, 0x73, 0x74, 0x12, 0x2d, 0x0a, 0x03, + 0x73, 0x72, 0x63, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x6f, 0x74, 0x67, 0x2e, + 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x50, 0x66, 0x63, 0x50, 0x61, + 0x75, 0x73, 0x65, 0x53, 0x72, 0x63, 0x52, 0x03, 0x73, 0x72, 0x63, 0x12, 0x40, 0x0a, 0x0a, 0x65, + 0x74, 0x68, 0x65, 0x72, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x21, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, + 0x77, 0x50, 0x66, 0x63, 0x50, 0x61, 0x75, 0x73, 0x65, 0x45, 0x74, 0x68, 0x65, 0x72, 0x54, 0x79, + 0x70, 0x65, 0x52, 0x09, 0x65, 0x74, 0x68, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x12, 0x4d, 0x0a, + 0x0f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x5f, 0x6f, 0x70, 0x5f, 0x63, 0x6f, 0x64, 0x65, + 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, + 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x50, 0x66, 0x63, 0x50, 0x61, 0x75, 0x73, 0x65, + 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x4f, 0x70, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x0d, 0x63, + 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x4f, 0x70, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x59, 0x0a, 0x13, + 0x63, 0x6c, 0x61, 0x73, 0x73, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x76, 0x65, 0x63, + 0x74, 0x6f, 0x72, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x6f, 0x74, 0x67, 0x2e, + 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x50, 0x66, 0x63, 0x50, 0x61, + 0x75, 0x73, 0x65, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x56, 0x65, + 0x63, 0x74, 0x6f, 0x72, 0x52, 0x11, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x45, 0x6e, 0x61, 0x62, 0x6c, + 0x65, 0x56, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x12, 0x47, 0x0a, 0x0d, 0x70, 0x61, 0x75, 0x73, 0x65, + 0x5f, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x5f, 0x30, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x50, 0x66, 0x63, 0x50, 0x61, 0x75, 0x73, 0x65, 0x50, 0x61, 0x75, 0x73, 0x65, 0x43, 0x6c, 0x61, - 0x73, 0x73, 0x35, 0x52, 0x0b, 0x70, 0x61, 0x75, 0x73, 0x65, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x35, + 0x73, 0x73, 0x30, 0x52, 0x0b, 0x70, 0x61, 0x75, 0x73, 0x65, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x30, 0x12, 0x47, 0x0a, 0x0d, 0x70, 0x61, 0x75, 0x73, 0x65, 0x5f, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x5f, - 0x36, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, + 0x31, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x50, 0x66, 0x63, 0x50, 0x61, 0x75, 0x73, - 0x65, 0x50, 0x61, 0x75, 0x73, 0x65, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x36, 0x52, 0x0b, 0x70, 0x61, - 0x75, 0x73, 0x65, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x36, 0x12, 0x47, 0x0a, 0x0d, 0x70, 0x61, 0x75, - 0x73, 0x65, 0x5f, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x5f, 0x37, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0b, + 0x65, 0x50, 0x61, 0x75, 0x73, 0x65, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x31, 0x52, 0x0b, 0x70, 0x61, + 0x75, 0x73, 0x65, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x31, 0x12, 0x47, 0x0a, 0x0d, 0x70, 0x61, 0x75, + 0x73, 0x65, 0x5f, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x5f, 0x32, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x50, 0x66, 0x63, 0x50, 0x61, 0x75, 0x73, 0x65, 0x50, 0x61, 0x75, 0x73, 0x65, 0x43, - 0x6c, 0x61, 0x73, 0x73, 0x37, 0x52, 0x0b, 0x70, 0x61, 0x75, 0x73, 0x65, 0x43, 0x6c, 0x61, 0x73, - 0x73, 0x37, 0x22, 0xcd, 0x02, 0x0a, 0x11, 0x46, 0x6c, 0x6f, 0x77, 0x45, 0x74, 0x68, 0x65, 0x72, - 0x6e, 0x65, 0x74, 0x50, 0x61, 0x75, 0x73, 0x65, 0x12, 0x32, 0x0a, 0x03, 0x64, 0x73, 0x74, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, - 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x45, 0x74, 0x68, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x50, - 0x61, 0x75, 0x73, 0x65, 0x44, 0x73, 0x74, 0x52, 0x03, 0x64, 0x73, 0x74, 0x12, 0x32, 0x0a, 0x03, - 0x73, 0x72, 0x63, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x6f, 0x74, 0x67, 0x2e, - 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x45, 0x74, 0x68, 0x65, 0x72, - 0x6e, 0x65, 0x74, 0x50, 0x61, 0x75, 0x73, 0x65, 0x53, 0x72, 0x63, 0x52, 0x03, 0x73, 0x72, 0x63, - 0x12, 0x45, 0x0a, 0x0a, 0x65, 0x74, 0x68, 0x65, 0x72, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, - 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x45, 0x74, 0x68, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x50, 0x61, - 0x75, 0x73, 0x65, 0x45, 0x74, 0x68, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x52, 0x09, 0x65, 0x74, - 0x68, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x12, 0x52, 0x0a, 0x0f, 0x63, 0x6f, 0x6e, 0x74, 0x72, - 0x6f, 0x6c, 0x5f, 0x6f, 0x70, 0x5f, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x2a, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, - 0x6f, 0x77, 0x45, 0x74, 0x68, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x50, 0x61, 0x75, 0x73, 0x65, 0x43, - 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x4f, 0x70, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x0d, 0x63, 0x6f, - 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x4f, 0x70, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x35, 0x0a, 0x04, 0x74, - 0x69, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x6f, 0x74, 0x67, 0x2e, - 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x45, 0x74, 0x68, 0x65, 0x72, - 0x6e, 0x65, 0x74, 0x50, 0x61, 0x75, 0x73, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x52, 0x04, 0x74, 0x69, - 0x6d, 0x65, 0x22, 0xa6, 0x06, 0x0a, 0x07, 0x46, 0x6c, 0x6f, 0x77, 0x54, 0x63, 0x70, 0x12, 0x35, - 0x0a, 0x08, 0x73, 0x72, 0x63, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x1a, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, - 0x6f, 0x77, 0x54, 0x63, 0x70, 0x53, 0x72, 0x63, 0x50, 0x6f, 0x72, 0x74, 0x52, 0x07, 0x73, 0x72, - 0x63, 0x50, 0x6f, 0x72, 0x74, 0x12, 0x35, 0x0a, 0x08, 0x64, 0x73, 0x74, 0x5f, 0x70, 0x6f, 0x72, - 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, - 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x54, 0x63, 0x70, 0x44, 0x73, 0x74, 0x50, - 0x6f, 0x72, 0x74, 0x52, 0x07, 0x64, 0x73, 0x74, 0x50, 0x6f, 0x72, 0x74, 0x12, 0x32, 0x0a, 0x07, - 0x73, 0x65, 0x71, 0x5f, 0x6e, 0x75, 0x6d, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, - 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x54, - 0x63, 0x70, 0x53, 0x65, 0x71, 0x4e, 0x75, 0x6d, 0x52, 0x06, 0x73, 0x65, 0x71, 0x4e, 0x75, 0x6d, - 0x12, 0x32, 0x0a, 0x07, 0x61, 0x63, 0x6b, 0x5f, 0x6e, 0x75, 0x6d, 0x18, 0x04, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x19, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, - 0x6c, 0x6f, 0x77, 0x54, 0x63, 0x70, 0x41, 0x63, 0x6b, 0x4e, 0x75, 0x6d, 0x52, 0x06, 0x61, 0x63, - 0x6b, 0x4e, 0x75, 0x6d, 0x12, 0x3e, 0x0a, 0x0b, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x6f, 0x66, 0x66, - 0x73, 0x65, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x6f, 0x74, 0x67, 0x2e, - 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x54, 0x63, 0x70, 0x44, 0x61, - 0x74, 0x61, 0x4f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x52, 0x0a, 0x64, 0x61, 0x74, 0x61, 0x4f, 0x66, - 0x66, 0x73, 0x65, 0x74, 0x12, 0x2f, 0x0a, 0x06, 0x65, 0x63, 0x6e, 0x5f, 0x6e, 0x73, 0x18, 0x06, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, - 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x54, 0x63, 0x70, 0x45, 0x63, 0x6e, 0x4e, 0x73, 0x52, 0x05, - 0x65, 0x63, 0x6e, 0x4e, 0x73, 0x12, 0x32, 0x0a, 0x07, 0x65, 0x63, 0x6e, 0x5f, 0x63, 0x77, 0x72, - 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, - 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x54, 0x63, 0x70, 0x45, 0x63, 0x6e, 0x43, 0x77, - 0x72, 0x52, 0x06, 0x65, 0x63, 0x6e, 0x43, 0x77, 0x72, 0x12, 0x35, 0x0a, 0x08, 0x65, 0x63, 0x6e, - 0x5f, 0x65, 0x63, 0x68, 0x6f, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x6f, 0x74, - 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x54, 0x63, 0x70, - 0x45, 0x63, 0x6e, 0x45, 0x63, 0x68, 0x6f, 0x52, 0x07, 0x65, 0x63, 0x6e, 0x45, 0x63, 0x68, 0x6f, - 0x12, 0x32, 0x0a, 0x07, 0x63, 0x74, 0x6c, 0x5f, 0x75, 0x72, 0x67, 0x18, 0x09, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x19, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, - 0x6c, 0x6f, 0x77, 0x54, 0x63, 0x70, 0x43, 0x74, 0x6c, 0x55, 0x72, 0x67, 0x52, 0x06, 0x63, 0x74, - 0x6c, 0x55, 0x72, 0x67, 0x12, 0x32, 0x0a, 0x07, 0x63, 0x74, 0x6c, 0x5f, 0x61, 0x63, 0x6b, 0x18, - 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, - 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x54, 0x63, 0x70, 0x43, 0x74, 0x6c, 0x41, 0x63, 0x6b, - 0x52, 0x06, 0x63, 0x74, 0x6c, 0x41, 0x63, 0x6b, 0x12, 0x32, 0x0a, 0x07, 0x63, 0x74, 0x6c, 0x5f, - 0x70, 0x73, 0x68, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x6f, 0x74, 0x67, 0x2e, - 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x54, 0x63, 0x70, 0x43, 0x74, - 0x6c, 0x50, 0x73, 0x68, 0x52, 0x06, 0x63, 0x74, 0x6c, 0x50, 0x73, 0x68, 0x12, 0x32, 0x0a, 0x07, - 0x63, 0x74, 0x6c, 0x5f, 0x72, 0x73, 0x74, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, + 0x6c, 0x61, 0x73, 0x73, 0x32, 0x52, 0x0b, 0x70, 0x61, 0x75, 0x73, 0x65, 0x43, 0x6c, 0x61, 0x73, + 0x73, 0x32, 0x12, 0x47, 0x0a, 0x0d, 0x70, 0x61, 0x75, 0x73, 0x65, 0x5f, 0x63, 0x6c, 0x61, 0x73, + 0x73, 0x5f, 0x33, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x6f, 0x74, 0x67, 0x2e, + 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x50, 0x66, 0x63, 0x50, 0x61, + 0x75, 0x73, 0x65, 0x50, 0x61, 0x75, 0x73, 0x65, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x33, 0x52, 0x0b, + 0x70, 0x61, 0x75, 0x73, 0x65, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x33, 0x12, 0x47, 0x0a, 0x0d, 0x70, + 0x61, 0x75, 0x73, 0x65, 0x5f, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x5f, 0x34, 0x18, 0x0a, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, + 0x46, 0x6c, 0x6f, 0x77, 0x50, 0x66, 0x63, 0x50, 0x61, 0x75, 0x73, 0x65, 0x50, 0x61, 0x75, 0x73, + 0x65, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x34, 0x52, 0x0b, 0x70, 0x61, 0x75, 0x73, 0x65, 0x43, 0x6c, + 0x61, 0x73, 0x73, 0x34, 0x12, 0x47, 0x0a, 0x0d, 0x70, 0x61, 0x75, 0x73, 0x65, 0x5f, 0x63, 0x6c, + 0x61, 0x73, 0x73, 0x5f, 0x35, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x6f, 0x74, + 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x50, 0x66, 0x63, + 0x50, 0x61, 0x75, 0x73, 0x65, 0x50, 0x61, 0x75, 0x73, 0x65, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x35, + 0x52, 0x0b, 0x70, 0x61, 0x75, 0x73, 0x65, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x35, 0x12, 0x47, 0x0a, + 0x0d, 0x70, 0x61, 0x75, 0x73, 0x65, 0x5f, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x5f, 0x36, 0x18, 0x0c, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, + 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x50, 0x66, 0x63, 0x50, 0x61, 0x75, 0x73, 0x65, 0x50, 0x61, + 0x75, 0x73, 0x65, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x36, 0x52, 0x0b, 0x70, 0x61, 0x75, 0x73, 0x65, + 0x43, 0x6c, 0x61, 0x73, 0x73, 0x36, 0x12, 0x47, 0x0a, 0x0d, 0x70, 0x61, 0x75, 0x73, 0x65, 0x5f, + 0x63, 0x6c, 0x61, 0x73, 0x73, 0x5f, 0x37, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, + 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x50, + 0x66, 0x63, 0x50, 0x61, 0x75, 0x73, 0x65, 0x50, 0x61, 0x75, 0x73, 0x65, 0x43, 0x6c, 0x61, 0x73, + 0x73, 0x37, 0x52, 0x0b, 0x70, 0x61, 0x75, 0x73, 0x65, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x37, 0x22, + 0xcd, 0x02, 0x0a, 0x11, 0x46, 0x6c, 0x6f, 0x77, 0x45, 0x74, 0x68, 0x65, 0x72, 0x6e, 0x65, 0x74, + 0x50, 0x61, 0x75, 0x73, 0x65, 0x12, 0x32, 0x0a, 0x03, 0x64, 0x73, 0x74, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, + 0x46, 0x6c, 0x6f, 0x77, 0x45, 0x74, 0x68, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x50, 0x61, 0x75, 0x73, + 0x65, 0x44, 0x73, 0x74, 0x52, 0x03, 0x64, 0x73, 0x74, 0x12, 0x32, 0x0a, 0x03, 0x73, 0x72, 0x63, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, + 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x45, 0x74, 0x68, 0x65, 0x72, 0x6e, 0x65, 0x74, + 0x50, 0x61, 0x75, 0x73, 0x65, 0x53, 0x72, 0x63, 0x52, 0x03, 0x73, 0x72, 0x63, 0x12, 0x45, 0x0a, + 0x0a, 0x65, 0x74, 0x68, 0x65, 0x72, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x26, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, + 0x6c, 0x6f, 0x77, 0x45, 0x74, 0x68, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x50, 0x61, 0x75, 0x73, 0x65, + 0x45, 0x74, 0x68, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x52, 0x09, 0x65, 0x74, 0x68, 0x65, 0x72, + 0x54, 0x79, 0x70, 0x65, 0x12, 0x52, 0x0a, 0x0f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x5f, + 0x6f, 0x70, 0x5f, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, + 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x45, + 0x74, 0x68, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x50, 0x61, 0x75, 0x73, 0x65, 0x43, 0x6f, 0x6e, 0x74, + 0x72, 0x6f, 0x6c, 0x4f, 0x70, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x0d, 0x63, 0x6f, 0x6e, 0x74, 0x72, + 0x6f, 0x6c, 0x4f, 0x70, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x35, 0x0a, 0x04, 0x74, 0x69, 0x6d, 0x65, + 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, + 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x45, 0x74, 0x68, 0x65, 0x72, 0x6e, 0x65, 0x74, + 0x50, 0x61, 0x75, 0x73, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x52, 0x04, 0x74, 0x69, 0x6d, 0x65, 0x22, + 0xa6, 0x06, 0x0a, 0x07, 0x46, 0x6c, 0x6f, 0x77, 0x54, 0x63, 0x70, 0x12, 0x35, 0x0a, 0x08, 0x73, + 0x72, 0x63, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x54, - 0x63, 0x70, 0x43, 0x74, 0x6c, 0x52, 0x73, 0x74, 0x52, 0x06, 0x63, 0x74, 0x6c, 0x52, 0x73, 0x74, - 0x12, 0x32, 0x0a, 0x07, 0x63, 0x74, 0x6c, 0x5f, 0x73, 0x79, 0x6e, 0x18, 0x0d, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x19, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, - 0x6c, 0x6f, 0x77, 0x54, 0x63, 0x70, 0x43, 0x74, 0x6c, 0x53, 0x79, 0x6e, 0x52, 0x06, 0x63, 0x74, - 0x6c, 0x53, 0x79, 0x6e, 0x12, 0x32, 0x0a, 0x07, 0x63, 0x74, 0x6c, 0x5f, 0x66, 0x69, 0x6e, 0x18, - 0x0e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, - 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x54, 0x63, 0x70, 0x43, 0x74, 0x6c, 0x46, 0x69, 0x6e, - 0x52, 0x06, 0x63, 0x74, 0x6c, 0x46, 0x69, 0x6e, 0x12, 0x31, 0x0a, 0x06, 0x77, 0x69, 0x6e, 0x64, - 0x6f, 0x77, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, - 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x54, 0x63, 0x70, 0x57, 0x69, 0x6e, - 0x64, 0x6f, 0x77, 0x52, 0x06, 0x77, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x22, 0xe3, 0x01, 0x0a, 0x07, - 0x46, 0x6c, 0x6f, 0x77, 0x55, 0x64, 0x70, 0x12, 0x35, 0x0a, 0x08, 0x73, 0x72, 0x63, 0x5f, 0x70, - 0x6f, 0x72, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x6f, 0x74, 0x67, 0x2e, - 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x55, 0x64, 0x70, 0x53, 0x72, - 0x63, 0x50, 0x6f, 0x72, 0x74, 0x52, 0x07, 0x73, 0x72, 0x63, 0x50, 0x6f, 0x72, 0x74, 0x12, 0x35, - 0x0a, 0x08, 0x64, 0x73, 0x74, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x1a, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, - 0x6f, 0x77, 0x55, 0x64, 0x70, 0x44, 0x73, 0x74, 0x50, 0x6f, 0x72, 0x74, 0x52, 0x07, 0x64, 0x73, - 0x74, 0x50, 0x6f, 0x72, 0x74, 0x12, 0x31, 0x0a, 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, - 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x55, 0x64, 0x70, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, - 0x52, 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x12, 0x37, 0x0a, 0x08, 0x63, 0x68, 0x65, 0x63, - 0x6b, 0x73, 0x75, 0x6d, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x6f, 0x74, 0x67, - 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x55, 0x64, 0x70, 0x43, - 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x52, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, - 0x6d, 0x22, 0xf8, 0x02, 0x0a, 0x07, 0x46, 0x6c, 0x6f, 0x77, 0x47, 0x72, 0x65, 0x12, 0x4d, 0x0a, - 0x10, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x5f, 0x70, 0x72, 0x65, 0x73, 0x65, 0x6e, - 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, - 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x47, 0x72, 0x65, 0x43, 0x68, 0x65, 0x63, - 0x6b, 0x73, 0x75, 0x6d, 0x50, 0x72, 0x65, 0x73, 0x65, 0x6e, 0x74, 0x52, 0x0f, 0x63, 0x68, 0x65, - 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x50, 0x72, 0x65, 0x73, 0x65, 0x6e, 0x74, 0x12, 0x3a, 0x0a, 0x09, - 0x72, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x64, 0x30, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x1c, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, - 0x77, 0x47, 0x72, 0x65, 0x52, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x64, 0x30, 0x52, 0x09, 0x72, - 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x64, 0x30, 0x12, 0x34, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, - 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x6f, 0x74, 0x67, 0x2e, - 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x47, 0x72, 0x65, 0x56, 0x65, - 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x37, - 0x0a, 0x08, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x1b, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, - 0x6f, 0x77, 0x47, 0x72, 0x65, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x52, 0x08, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x12, 0x37, 0x0a, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, - 0x73, 0x75, 0x6d, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x6f, 0x74, 0x67, 0x2e, - 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x47, 0x72, 0x65, 0x43, 0x68, - 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x52, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, - 0x12, 0x3a, 0x0a, 0x09, 0x72, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x64, 0x31, 0x18, 0x06, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, - 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x47, 0x72, 0x65, 0x52, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x64, - 0x31, 0x52, 0x09, 0x72, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x64, 0x31, 0x22, 0xde, 0x06, 0x0a, - 0x09, 0x46, 0x6c, 0x6f, 0x77, 0x47, 0x74, 0x70, 0x76, 0x31, 0x12, 0x36, 0x0a, 0x07, 0x76, 0x65, - 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x6f, 0x74, - 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x47, 0x74, 0x70, - 0x76, 0x31, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, - 0x6f, 0x6e, 0x12, 0x46, 0x0a, 0x0d, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x5f, 0x74, - 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x6f, 0x74, 0x67, 0x2e, + 0x63, 0x70, 0x53, 0x72, 0x63, 0x50, 0x6f, 0x72, 0x74, 0x52, 0x07, 0x73, 0x72, 0x63, 0x50, 0x6f, + 0x72, 0x74, 0x12, 0x35, 0x0a, 0x08, 0x64, 0x73, 0x74, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, + 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x54, 0x63, 0x70, 0x44, 0x73, 0x74, 0x50, 0x6f, 0x72, 0x74, + 0x52, 0x07, 0x64, 0x73, 0x74, 0x50, 0x6f, 0x72, 0x74, 0x12, 0x32, 0x0a, 0x07, 0x73, 0x65, 0x71, + 0x5f, 0x6e, 0x75, 0x6d, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x6f, 0x74, 0x67, + 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x54, 0x63, 0x70, 0x53, + 0x65, 0x71, 0x4e, 0x75, 0x6d, 0x52, 0x06, 0x73, 0x65, 0x71, 0x4e, 0x75, 0x6d, 0x12, 0x32, 0x0a, + 0x07, 0x61, 0x63, 0x6b, 0x5f, 0x6e, 0x75, 0x6d, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, + 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, + 0x54, 0x63, 0x70, 0x41, 0x63, 0x6b, 0x4e, 0x75, 0x6d, 0x52, 0x06, 0x61, 0x63, 0x6b, 0x4e, 0x75, + 0x6d, 0x12, 0x3e, 0x0a, 0x0b, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, + 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, + 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x54, 0x63, 0x70, 0x44, 0x61, 0x74, 0x61, 0x4f, + 0x66, 0x66, 0x73, 0x65, 0x74, 0x52, 0x0a, 0x64, 0x61, 0x74, 0x61, 0x4f, 0x66, 0x66, 0x73, 0x65, + 0x74, 0x12, 0x2f, 0x0a, 0x06, 0x65, 0x63, 0x6e, 0x5f, 0x6e, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x18, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, + 0x6c, 0x6f, 0x77, 0x54, 0x63, 0x70, 0x45, 0x63, 0x6e, 0x4e, 0x73, 0x52, 0x05, 0x65, 0x63, 0x6e, + 0x4e, 0x73, 0x12, 0x32, 0x0a, 0x07, 0x65, 0x63, 0x6e, 0x5f, 0x63, 0x77, 0x72, 0x18, 0x07, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, + 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x54, 0x63, 0x70, 0x45, 0x63, 0x6e, 0x43, 0x77, 0x72, 0x52, 0x06, + 0x65, 0x63, 0x6e, 0x43, 0x77, 0x72, 0x12, 0x35, 0x0a, 0x08, 0x65, 0x63, 0x6e, 0x5f, 0x65, 0x63, + 0x68, 0x6f, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, + 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x54, 0x63, 0x70, 0x45, 0x63, 0x6e, + 0x45, 0x63, 0x68, 0x6f, 0x52, 0x07, 0x65, 0x63, 0x6e, 0x45, 0x63, 0x68, 0x6f, 0x12, 0x32, 0x0a, + 0x07, 0x63, 0x74, 0x6c, 0x5f, 0x75, 0x72, 0x67, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, + 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, + 0x54, 0x63, 0x70, 0x43, 0x74, 0x6c, 0x55, 0x72, 0x67, 0x52, 0x06, 0x63, 0x74, 0x6c, 0x55, 0x72, + 0x67, 0x12, 0x32, 0x0a, 0x07, 0x63, 0x74, 0x6c, 0x5f, 0x61, 0x63, 0x6b, 0x18, 0x0a, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, + 0x46, 0x6c, 0x6f, 0x77, 0x54, 0x63, 0x70, 0x43, 0x74, 0x6c, 0x41, 0x63, 0x6b, 0x52, 0x06, 0x63, + 0x74, 0x6c, 0x41, 0x63, 0x6b, 0x12, 0x32, 0x0a, 0x07, 0x63, 0x74, 0x6c, 0x5f, 0x70, 0x73, 0x68, + 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, + 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x54, 0x63, 0x70, 0x43, 0x74, 0x6c, 0x50, 0x73, + 0x68, 0x52, 0x06, 0x63, 0x74, 0x6c, 0x50, 0x73, 0x68, 0x12, 0x32, 0x0a, 0x07, 0x63, 0x74, 0x6c, + 0x5f, 0x72, 0x73, 0x74, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x6f, 0x74, 0x67, + 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x54, 0x63, 0x70, 0x43, + 0x74, 0x6c, 0x52, 0x73, 0x74, 0x52, 0x06, 0x63, 0x74, 0x6c, 0x52, 0x73, 0x74, 0x12, 0x32, 0x0a, + 0x07, 0x63, 0x74, 0x6c, 0x5f, 0x73, 0x79, 0x6e, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, + 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, + 0x54, 0x63, 0x70, 0x43, 0x74, 0x6c, 0x53, 0x79, 0x6e, 0x52, 0x06, 0x63, 0x74, 0x6c, 0x53, 0x79, + 0x6e, 0x12, 0x32, 0x0a, 0x07, 0x63, 0x74, 0x6c, 0x5f, 0x66, 0x69, 0x6e, 0x18, 0x0e, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, + 0x46, 0x6c, 0x6f, 0x77, 0x54, 0x63, 0x70, 0x43, 0x74, 0x6c, 0x46, 0x69, 0x6e, 0x52, 0x06, 0x63, + 0x74, 0x6c, 0x46, 0x69, 0x6e, 0x12, 0x31, 0x0a, 0x06, 0x77, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x18, + 0x0f, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, + 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x54, 0x63, 0x70, 0x57, 0x69, 0x6e, 0x64, 0x6f, 0x77, + 0x52, 0x06, 0x77, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x22, 0xe3, 0x01, 0x0a, 0x07, 0x46, 0x6c, 0x6f, + 0x77, 0x55, 0x64, 0x70, 0x12, 0x35, 0x0a, 0x08, 0x73, 0x72, 0x63, 0x5f, 0x70, 0x6f, 0x72, 0x74, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, + 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x55, 0x64, 0x70, 0x53, 0x72, 0x63, 0x50, 0x6f, + 0x72, 0x74, 0x52, 0x07, 0x73, 0x72, 0x63, 0x50, 0x6f, 0x72, 0x74, 0x12, 0x35, 0x0a, 0x08, 0x64, + 0x73, 0x74, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, + 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x55, + 0x64, 0x70, 0x44, 0x73, 0x74, 0x50, 0x6f, 0x72, 0x74, 0x52, 0x07, 0x64, 0x73, 0x74, 0x50, 0x6f, + 0x72, 0x74, 0x12, 0x31, 0x0a, 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, + 0x46, 0x6c, 0x6f, 0x77, 0x55, 0x64, 0x70, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x52, 0x06, 0x6c, + 0x65, 0x6e, 0x67, 0x74, 0x68, 0x12, 0x37, 0x0a, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, + 0x6d, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, + 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x55, 0x64, 0x70, 0x43, 0x68, 0x65, 0x63, + 0x6b, 0x73, 0x75, 0x6d, 0x52, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x22, 0xf8, + 0x02, 0x0a, 0x07, 0x46, 0x6c, 0x6f, 0x77, 0x47, 0x72, 0x65, 0x12, 0x4d, 0x0a, 0x10, 0x63, 0x68, + 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x5f, 0x70, 0x72, 0x65, 0x73, 0x65, 0x6e, 0x74, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, + 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x47, 0x72, 0x65, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, + 0x6d, 0x50, 0x72, 0x65, 0x73, 0x65, 0x6e, 0x74, 0x52, 0x0f, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, + 0x75, 0x6d, 0x50, 0x72, 0x65, 0x73, 0x65, 0x6e, 0x74, 0x12, 0x3a, 0x0a, 0x09, 0x72, 0x65, 0x73, + 0x65, 0x72, 0x76, 0x65, 0x64, 0x30, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x6f, + 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x47, 0x72, + 0x65, 0x52, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x64, 0x30, 0x52, 0x09, 0x72, 0x65, 0x73, 0x65, + 0x72, 0x76, 0x65, 0x64, 0x30, 0x12, 0x34, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, + 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x47, 0x72, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, + 0x6f, 0x6e, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x37, 0x0a, 0x08, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, + 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x47, + 0x72, 0x65, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x52, 0x08, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x63, 0x6f, 0x6c, 0x12, 0x37, 0x0a, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, + 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, + 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x47, 0x72, 0x65, 0x43, 0x68, 0x65, 0x63, 0x6b, + 0x73, 0x75, 0x6d, 0x52, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x12, 0x3a, 0x0a, + 0x09, 0x72, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x64, 0x31, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x1c, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, + 0x6f, 0x77, 0x47, 0x72, 0x65, 0x52, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x64, 0x31, 0x52, 0x09, + 0x72, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x64, 0x31, 0x22, 0xde, 0x06, 0x0a, 0x09, 0x46, 0x6c, + 0x6f, 0x77, 0x47, 0x74, 0x70, 0x76, 0x31, 0x12, 0x36, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, + 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, + 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x47, 0x74, 0x70, 0x76, 0x31, 0x56, + 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, + 0x46, 0x0a, 0x0d, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x5f, 0x74, 0x79, 0x70, 0x65, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, + 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x47, 0x74, 0x70, 0x76, 0x31, 0x50, 0x72, 0x6f, + 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0c, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x63, 0x6f, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x12, 0x39, 0x0a, 0x08, 0x72, 0x65, 0x73, 0x65, 0x72, + 0x76, 0x65, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x47, 0x74, 0x70, 0x76, 0x31, - 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0c, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x12, 0x39, 0x0a, 0x08, 0x72, 0x65, - 0x73, 0x65, 0x72, 0x76, 0x65, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x6f, - 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x47, 0x74, - 0x70, 0x76, 0x31, 0x52, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x64, 0x52, 0x08, 0x72, 0x65, 0x73, - 0x65, 0x72, 0x76, 0x65, 0x64, 0x12, 0x31, 0x0a, 0x06, 0x65, 0x5f, 0x66, 0x6c, 0x61, 0x67, 0x18, - 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, - 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x47, 0x74, 0x70, 0x76, 0x31, 0x45, 0x46, 0x6c, 0x61, - 0x67, 0x52, 0x05, 0x65, 0x46, 0x6c, 0x61, 0x67, 0x12, 0x31, 0x0a, 0x06, 0x73, 0x5f, 0x66, 0x6c, - 0x61, 0x67, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, - 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x47, 0x74, 0x70, 0x76, 0x31, 0x53, - 0x46, 0x6c, 0x61, 0x67, 0x52, 0x05, 0x73, 0x46, 0x6c, 0x61, 0x67, 0x12, 0x34, 0x0a, 0x07, 0x70, - 0x6e, 0x5f, 0x66, 0x6c, 0x61, 0x67, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x6f, + 0x52, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x64, 0x52, 0x08, 0x72, 0x65, 0x73, 0x65, 0x72, 0x76, + 0x65, 0x64, 0x12, 0x31, 0x0a, 0x06, 0x65, 0x5f, 0x66, 0x6c, 0x61, 0x67, 0x18, 0x04, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, + 0x46, 0x6c, 0x6f, 0x77, 0x47, 0x74, 0x70, 0x76, 0x31, 0x45, 0x46, 0x6c, 0x61, 0x67, 0x52, 0x05, + 0x65, 0x46, 0x6c, 0x61, 0x67, 0x12, 0x31, 0x0a, 0x06, 0x73, 0x5f, 0x66, 0x6c, 0x61, 0x67, 0x18, + 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, + 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x47, 0x74, 0x70, 0x76, 0x31, 0x53, 0x46, 0x6c, 0x61, + 0x67, 0x52, 0x05, 0x73, 0x46, 0x6c, 0x61, 0x67, 0x12, 0x34, 0x0a, 0x07, 0x70, 0x6e, 0x5f, 0x66, + 0x6c, 0x61, 0x67, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x6f, 0x74, 0x67, 0x2e, + 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x47, 0x74, 0x70, 0x76, 0x31, + 0x50, 0x6e, 0x46, 0x6c, 0x61, 0x67, 0x52, 0x06, 0x70, 0x6e, 0x46, 0x6c, 0x61, 0x67, 0x12, 0x43, + 0x0a, 0x0c, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x07, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, + 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x47, 0x74, 0x70, 0x76, 0x31, 0x4d, 0x65, 0x73, 0x73, 0x61, + 0x67, 0x65, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0b, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x54, + 0x79, 0x70, 0x65, 0x12, 0x49, 0x0a, 0x0e, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x5f, 0x6c, + 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x6f, 0x74, + 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x47, 0x74, 0x70, + 0x76, 0x31, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x52, + 0x0d, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x12, 0x2d, + 0x0a, 0x04, 0x74, 0x65, 0x69, 0x64, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x47, 0x74, - 0x70, 0x76, 0x31, 0x50, 0x6e, 0x46, 0x6c, 0x61, 0x67, 0x52, 0x06, 0x70, 0x6e, 0x46, 0x6c, 0x61, - 0x67, 0x12, 0x43, 0x0a, 0x0c, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x79, 0x70, - 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, - 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x47, 0x74, 0x70, 0x76, 0x31, 0x4d, 0x65, - 0x73, 0x73, 0x61, 0x67, 0x65, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0b, 0x6d, 0x65, 0x73, 0x73, 0x61, - 0x67, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x49, 0x0a, 0x0e, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, - 0x65, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, + 0x70, 0x76, 0x31, 0x54, 0x65, 0x69, 0x64, 0x52, 0x04, 0x74, 0x65, 0x69, 0x64, 0x12, 0x49, 0x0a, + 0x0e, 0x73, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x65, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, + 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, + 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x47, 0x74, 0x70, 0x76, 0x31, 0x53, 0x71, 0x75, 0x65, + 0x6e, 0x63, 0x65, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x52, 0x0d, 0x73, 0x71, 0x75, 0x65, 0x6e, + 0x63, 0x65, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x41, 0x0a, 0x0c, 0x6e, 0x5f, 0x70, 0x64, + 0x75, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, - 0x47, 0x74, 0x70, 0x76, 0x31, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x4c, 0x65, 0x6e, 0x67, - 0x74, 0x68, 0x52, 0x0d, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x4c, 0x65, 0x6e, 0x67, 0x74, - 0x68, 0x12, 0x2d, 0x0a, 0x04, 0x74, 0x65, 0x69, 0x64, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x19, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, - 0x77, 0x47, 0x74, 0x70, 0x76, 0x31, 0x54, 0x65, 0x69, 0x64, 0x52, 0x04, 0x74, 0x65, 0x69, 0x64, - 0x12, 0x49, 0x0a, 0x0e, 0x73, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x65, 0x5f, 0x6e, 0x75, 0x6d, 0x62, - 0x65, 0x72, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, - 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x47, 0x74, 0x70, 0x76, 0x31, 0x53, - 0x71, 0x75, 0x65, 0x6e, 0x63, 0x65, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x52, 0x0d, 0x73, 0x71, - 0x75, 0x65, 0x6e, 0x63, 0x65, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x41, 0x0a, 0x0c, 0x6e, - 0x5f, 0x70, 0x64, 0x75, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x0b, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x1f, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, - 0x6c, 0x6f, 0x77, 0x47, 0x74, 0x70, 0x76, 0x31, 0x4e, 0x50, 0x64, 0x75, 0x4e, 0x75, 0x6d, 0x62, - 0x65, 0x72, 0x52, 0x0a, 0x6e, 0x50, 0x64, 0x75, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x69, - 0x0a, 0x1a, 0x6e, 0x65, 0x78, 0x74, 0x5f, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, - 0x5f, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x0c, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, - 0x46, 0x6c, 0x6f, 0x77, 0x47, 0x74, 0x70, 0x76, 0x31, 0x4e, 0x65, 0x78, 0x74, 0x45, 0x78, 0x74, - 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, - 0x52, 0x17, 0x6e, 0x65, 0x78, 0x74, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x48, - 0x65, 0x61, 0x64, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x12, 0x42, 0x0a, 0x11, 0x65, 0x78, 0x74, - 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x18, 0x0d, - 0x20, 0x03, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x46, 0x6c, 0x6f, 0x77, 0x47, - 0x74, 0x70, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x10, 0x65, 0x78, 0x74, - 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x22, 0x91, 0x02, - 0x0a, 0x10, 0x46, 0x6c, 0x6f, 0x77, 0x47, 0x74, 0x70, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, - 0x6f, 0x6e, 0x12, 0x56, 0x0a, 0x10, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x5f, - 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x6f, - 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x47, 0x74, - 0x70, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, - 0x69, 0x6f, 0x6e, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x52, 0x0f, 0x65, 0x78, 0x74, 0x65, 0x6e, - 0x73, 0x69, 0x6f, 0x6e, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x12, 0x40, 0x0a, 0x08, 0x63, 0x6f, - 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x6f, - 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x47, 0x74, - 0x70, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, - 0x74, 0x73, 0x52, 0x08, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x63, 0x0a, 0x15, - 0x6e, 0x65, 0x78, 0x74, 0x5f, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x68, - 0x65, 0x61, 0x64, 0x65, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x6f, 0x74, + 0x47, 0x74, 0x70, 0x76, 0x31, 0x4e, 0x50, 0x64, 0x75, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x52, + 0x0a, 0x6e, 0x50, 0x64, 0x75, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x69, 0x0a, 0x1a, 0x6e, + 0x65, 0x78, 0x74, 0x5f, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x68, 0x65, + 0x61, 0x64, 0x65, 0x72, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x2c, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, + 0x77, 0x47, 0x74, 0x70, 0x76, 0x31, 0x4e, 0x65, 0x78, 0x74, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, + 0x69, 0x6f, 0x6e, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x52, 0x17, 0x6e, + 0x65, 0x78, 0x74, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x48, 0x65, 0x61, 0x64, + 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x12, 0x42, 0x0a, 0x11, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, + 0x69, 0x6f, 0x6e, 0x5f, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x18, 0x0d, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x15, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x46, 0x6c, 0x6f, 0x77, 0x47, 0x74, 0x70, 0x45, + 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x10, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, + 0x69, 0x6f, 0x6e, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x22, 0x91, 0x02, 0x0a, 0x10, 0x46, + 0x6c, 0x6f, 0x77, 0x47, 0x74, 0x70, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x12, + 0x56, 0x0a, 0x10, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x6c, 0x65, 0x6e, + 0x67, 0x74, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x6f, 0x74, 0x67, 0x2e, + 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x47, 0x74, 0x70, 0x45, 0x78, + 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, + 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x52, 0x0f, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, + 0x6e, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x12, 0x40, 0x0a, 0x08, 0x63, 0x6f, 0x6e, 0x74, 0x65, + 0x6e, 0x74, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x6f, 0x74, 0x67, 0x2e, + 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x47, 0x74, 0x70, 0x45, 0x78, + 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x73, 0x52, + 0x08, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x63, 0x0a, 0x15, 0x6e, 0x65, 0x78, + 0x74, 0x5f, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x68, 0x65, 0x61, 0x64, + 0x65, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, + 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x47, 0x74, 0x70, 0x45, 0x78, 0x74, + 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x4e, 0x65, 0x78, 0x74, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, + 0x69, 0x6f, 0x6e, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x52, 0x13, 0x6e, 0x65, 0x78, 0x74, 0x45, + 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x22, 0xca, + 0x04, 0x0a, 0x09, 0x46, 0x6c, 0x6f, 0x77, 0x47, 0x74, 0x70, 0x76, 0x32, 0x12, 0x36, 0x0a, 0x07, + 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, + 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x47, + 0x74, 0x70, 0x76, 0x32, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x07, 0x76, 0x65, 0x72, + 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x52, 0x0a, 0x11, 0x70, 0x69, 0x67, 0x67, 0x79, 0x62, 0x61, 0x63, + 0x6b, 0x69, 0x6e, 0x67, 0x5f, 0x66, 0x6c, 0x61, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x25, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, + 0x77, 0x47, 0x74, 0x70, 0x76, 0x32, 0x50, 0x69, 0x67, 0x67, 0x79, 0x62, 0x61, 0x63, 0x6b, 0x69, + 0x6e, 0x67, 0x46, 0x6c, 0x61, 0x67, 0x52, 0x10, 0x70, 0x69, 0x67, 0x67, 0x79, 0x62, 0x61, 0x63, + 0x6b, 0x69, 0x6e, 0x67, 0x46, 0x6c, 0x61, 0x67, 0x12, 0x3a, 0x0a, 0x09, 0x74, 0x65, 0x69, 0x64, + 0x5f, 0x66, 0x6c, 0x61, 0x67, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x47, 0x74, 0x70, - 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x4e, 0x65, 0x78, 0x74, 0x45, 0x78, 0x74, - 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x52, 0x13, 0x6e, 0x65, - 0x78, 0x74, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x48, 0x65, 0x61, 0x64, 0x65, - 0x72, 0x22, 0xca, 0x04, 0x0a, 0x09, 0x46, 0x6c, 0x6f, 0x77, 0x47, 0x74, 0x70, 0x76, 0x32, 0x12, - 0x36, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x1c, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, - 0x6f, 0x77, 0x47, 0x74, 0x70, 0x76, 0x32, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x07, - 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x52, 0x0a, 0x11, 0x70, 0x69, 0x67, 0x67, 0x79, - 0x62, 0x61, 0x63, 0x6b, 0x69, 0x6e, 0x67, 0x5f, 0x66, 0x6c, 0x61, 0x67, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, - 0x46, 0x6c, 0x6f, 0x77, 0x47, 0x74, 0x70, 0x76, 0x32, 0x50, 0x69, 0x67, 0x67, 0x79, 0x62, 0x61, - 0x63, 0x6b, 0x69, 0x6e, 0x67, 0x46, 0x6c, 0x61, 0x67, 0x52, 0x10, 0x70, 0x69, 0x67, 0x67, 0x79, - 0x62, 0x61, 0x63, 0x6b, 0x69, 0x6e, 0x67, 0x46, 0x6c, 0x61, 0x67, 0x12, 0x3a, 0x0a, 0x09, 0x74, - 0x65, 0x69, 0x64, 0x5f, 0x66, 0x6c, 0x61, 0x67, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, - 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, - 0x47, 0x74, 0x70, 0x76, 0x32, 0x54, 0x65, 0x69, 0x64, 0x46, 0x6c, 0x61, 0x67, 0x52, 0x08, 0x74, - 0x65, 0x69, 0x64, 0x46, 0x6c, 0x61, 0x67, 0x12, 0x33, 0x0a, 0x06, 0x73, 0x70, 0x61, 0x72, 0x65, - 0x31, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, - 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x47, 0x74, 0x70, 0x76, 0x32, 0x53, 0x70, - 0x61, 0x72, 0x65, 0x31, 0x52, 0x06, 0x73, 0x70, 0x61, 0x72, 0x65, 0x31, 0x12, 0x43, 0x0a, 0x0c, - 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x05, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, - 0x46, 0x6c, 0x6f, 0x77, 0x47, 0x74, 0x70, 0x76, 0x32, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, - 0x54, 0x79, 0x70, 0x65, 0x52, 0x0b, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x54, 0x79, 0x70, - 0x65, 0x12, 0x49, 0x0a, 0x0e, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x5f, 0x6c, 0x65, 0x6e, - 0x67, 0x74, 0x68, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x6f, 0x74, 0x67, 0x2e, - 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x47, 0x74, 0x70, 0x76, 0x32, - 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x52, 0x0d, 0x6d, - 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x12, 0x2d, 0x0a, 0x04, - 0x74, 0x65, 0x69, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x6f, 0x74, 0x67, - 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x47, 0x74, 0x70, 0x76, - 0x32, 0x54, 0x65, 0x69, 0x64, 0x52, 0x04, 0x74, 0x65, 0x69, 0x64, 0x12, 0x4c, 0x0a, 0x0f, 0x73, - 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x65, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x08, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, - 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x47, 0x74, 0x70, 0x76, 0x32, 0x53, 0x65, 0x71, 0x75, 0x65, - 0x6e, 0x63, 0x65, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x52, 0x0e, 0x73, 0x65, 0x71, 0x75, 0x65, - 0x6e, 0x63, 0x65, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x33, 0x0a, 0x06, 0x73, 0x70, 0x61, - 0x72, 0x65, 0x32, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x6f, 0x74, 0x67, 0x2e, - 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x47, 0x74, 0x70, 0x76, 0x32, - 0x53, 0x70, 0x61, 0x72, 0x65, 0x32, 0x52, 0x06, 0x73, 0x70, 0x61, 0x72, 0x65, 0x32, 0x22, 0xcd, - 0x05, 0x0a, 0x07, 0x46, 0x6c, 0x6f, 0x77, 0x41, 0x72, 0x70, 0x12, 0x44, 0x0a, 0x0d, 0x68, 0x61, - 0x72, 0x64, 0x77, 0x61, 0x72, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x1f, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, - 0x6c, 0x6f, 0x77, 0x41, 0x72, 0x70, 0x48, 0x61, 0x72, 0x64, 0x77, 0x61, 0x72, 0x65, 0x54, 0x79, - 0x70, 0x65, 0x52, 0x0c, 0x68, 0x61, 0x72, 0x64, 0x77, 0x61, 0x72, 0x65, 0x54, 0x79, 0x70, 0x65, - 0x12, 0x44, 0x0a, 0x0d, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x5f, 0x74, 0x79, 0x70, - 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, - 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x41, 0x72, 0x70, 0x50, 0x72, 0x6f, 0x74, - 0x6f, 0x63, 0x6f, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0c, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, - 0x6f, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x12, 0x4a, 0x0a, 0x0f, 0x68, 0x61, 0x72, 0x64, 0x77, 0x61, - 0x72, 0x65, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x21, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, - 0x77, 0x41, 0x72, 0x70, 0x48, 0x61, 0x72, 0x64, 0x77, 0x61, 0x72, 0x65, 0x4c, 0x65, 0x6e, 0x67, - 0x74, 0x68, 0x52, 0x0e, 0x68, 0x61, 0x72, 0x64, 0x77, 0x61, 0x72, 0x65, 0x4c, 0x65, 0x6e, 0x67, - 0x74, 0x68, 0x12, 0x4a, 0x0a, 0x0f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x5f, 0x6c, - 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x6f, 0x74, - 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x41, 0x72, 0x70, - 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x52, 0x0e, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x12, 0x3a, - 0x0a, 0x09, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x1c, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, - 0x6c, 0x6f, 0x77, 0x41, 0x72, 0x70, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, - 0x09, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x57, 0x0a, 0x14, 0x73, 0x65, - 0x6e, 0x64, 0x65, 0x72, 0x5f, 0x68, 0x61, 0x72, 0x64, 0x77, 0x61, 0x72, 0x65, 0x5f, 0x61, 0x64, - 0x64, 0x72, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, - 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x41, 0x72, 0x70, 0x53, 0x65, 0x6e, - 0x64, 0x65, 0x72, 0x48, 0x61, 0x72, 0x64, 0x77, 0x61, 0x72, 0x65, 0x41, 0x64, 0x64, 0x72, 0x52, - 0x12, 0x73, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x48, 0x61, 0x72, 0x64, 0x77, 0x61, 0x72, 0x65, 0x41, - 0x64, 0x64, 0x72, 0x12, 0x57, 0x0a, 0x14, 0x73, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x5f, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x18, 0x07, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x25, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, - 0x6c, 0x6f, 0x77, 0x41, 0x72, 0x70, 0x53, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x50, 0x72, 0x6f, 0x74, - 0x6f, 0x63, 0x6f, 0x6c, 0x41, 0x64, 0x64, 0x72, 0x52, 0x12, 0x73, 0x65, 0x6e, 0x64, 0x65, 0x72, - 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x41, 0x64, 0x64, 0x72, 0x12, 0x57, 0x0a, 0x14, - 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, 0x68, 0x61, 0x72, 0x64, 0x77, 0x61, 0x72, 0x65, 0x5f, - 0x61, 0x64, 0x64, 0x72, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x6f, 0x74, 0x67, - 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x41, 0x72, 0x70, 0x54, - 0x61, 0x72, 0x67, 0x65, 0x74, 0x48, 0x61, 0x72, 0x64, 0x77, 0x61, 0x72, 0x65, 0x41, 0x64, 0x64, - 0x72, 0x52, 0x12, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x48, 0x61, 0x72, 0x64, 0x77, 0x61, 0x72, - 0x65, 0x41, 0x64, 0x64, 0x72, 0x12, 0x57, 0x0a, 0x14, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x18, 0x09, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, - 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x41, 0x72, 0x70, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x50, 0x72, - 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x41, 0x64, 0x64, 0x72, 0x52, 0x12, 0x74, 0x61, 0x72, 0x67, - 0x65, 0x74, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x41, 0x64, 0x64, 0x72, 0x22, 0xa1, - 0x01, 0x0a, 0x08, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x63, 0x6d, 0x70, 0x12, 0x36, 0x0a, 0x06, 0x63, - 0x68, 0x6f, 0x69, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x19, 0x2e, 0x6f, 0x74, - 0x67, 0x2e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x63, 0x6d, 0x70, 0x2e, 0x43, 0x68, 0x6f, 0x69, 0x63, - 0x65, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x48, 0x00, 0x52, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, - 0x88, 0x01, 0x01, 0x12, 0x25, 0x0a, 0x04, 0x65, 0x63, 0x68, 0x6f, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x11, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x63, 0x6d, 0x70, - 0x45, 0x63, 0x68, 0x6f, 0x52, 0x04, 0x65, 0x63, 0x68, 0x6f, 0x1a, 0x2b, 0x0a, 0x06, 0x43, 0x68, - 0x6f, 0x69, 0x63, 0x65, 0x22, 0x21, 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x0a, 0x0b, - 0x75, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x10, 0x00, 0x12, 0x08, 0x0a, - 0x04, 0x65, 0x63, 0x68, 0x6f, 0x10, 0x01, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x63, 0x68, 0x6f, 0x69, - 0x63, 0x65, 0x22, 0xc5, 0x02, 0x0a, 0x0c, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x63, 0x6d, 0x70, 0x45, - 0x63, 0x68, 0x6f, 0x12, 0x30, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x1c, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, - 0x6c, 0x6f, 0x77, 0x49, 0x63, 0x6d, 0x70, 0x45, 0x63, 0x68, 0x6f, 0x54, 0x79, 0x70, 0x65, 0x52, - 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x30, 0x0a, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, - 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x63, 0x6d, 0x70, 0x45, 0x63, 0x68, 0x6f, 0x43, 0x6f, 0x64, - 0x65, 0x52, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x12, 0x3c, 0x0a, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, - 0x73, 0x75, 0x6d, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x6f, 0x74, 0x67, 0x2e, - 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x63, 0x6d, 0x70, 0x45, - 0x63, 0x68, 0x6f, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x52, 0x08, 0x63, 0x68, 0x65, - 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x12, 0x42, 0x0a, 0x0a, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, - 0x69, 0x65, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x6f, 0x74, 0x67, 0x2e, - 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x63, 0x6d, 0x70, 0x45, - 0x63, 0x68, 0x6f, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x52, 0x0a, 0x69, - 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x12, 0x4f, 0x0a, 0x0f, 0x73, 0x65, 0x71, - 0x75, 0x65, 0x6e, 0x63, 0x65, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x05, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, - 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x63, 0x6d, 0x70, 0x45, 0x63, 0x68, 0x6f, 0x53, 0x65, 0x71, 0x75, - 0x65, 0x6e, 0x63, 0x65, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x52, 0x0e, 0x73, 0x65, 0x71, 0x75, - 0x65, 0x6e, 0x63, 0x65, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x22, 0xa7, 0x01, 0x0a, 0x0a, 0x46, - 0x6c, 0x6f, 0x77, 0x49, 0x63, 0x6d, 0x70, 0x76, 0x36, 0x12, 0x38, 0x0a, 0x06, 0x63, 0x68, 0x6f, - 0x69, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1b, 0x2e, 0x6f, 0x74, 0x67, 0x2e, - 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x63, 0x6d, 0x70, 0x76, 0x36, 0x2e, 0x43, 0x68, 0x6f, 0x69, 0x63, - 0x65, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x48, 0x00, 0x52, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, - 0x88, 0x01, 0x01, 0x12, 0x27, 0x0a, 0x04, 0x65, 0x63, 0x68, 0x6f, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x13, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x63, 0x6d, 0x70, - 0x76, 0x36, 0x45, 0x63, 0x68, 0x6f, 0x52, 0x04, 0x65, 0x63, 0x68, 0x6f, 0x1a, 0x2b, 0x0a, 0x06, - 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x22, 0x21, 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0f, - 0x0a, 0x0b, 0x75, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x10, 0x00, 0x12, - 0x08, 0x0a, 0x04, 0x65, 0x63, 0x68, 0x6f, 0x10, 0x01, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x63, 0x68, - 0x6f, 0x69, 0x63, 0x65, 0x22, 0xd1, 0x02, 0x0a, 0x0e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x63, 0x6d, - 0x70, 0x76, 0x36, 0x45, 0x63, 0x68, 0x6f, 0x12, 0x32, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, - 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x63, 0x6d, 0x70, 0x76, 0x36, 0x45, 0x63, 0x68, - 0x6f, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x32, 0x0a, 0x04, 0x63, - 0x6f, 0x64, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x6f, 0x74, 0x67, 0x2e, - 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x63, 0x6d, 0x70, 0x76, - 0x36, 0x45, 0x63, 0x68, 0x6f, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x12, - 0x44, 0x0a, 0x0a, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, - 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x63, 0x6d, 0x70, 0x76, 0x36, 0x45, 0x63, 0x68, 0x6f, 0x49, - 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x52, 0x0a, 0x69, 0x64, 0x65, 0x6e, 0x74, - 0x69, 0x66, 0x69, 0x65, 0x72, 0x12, 0x51, 0x0a, 0x0f, 0x73, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, - 0x65, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, + 0x76, 0x32, 0x54, 0x65, 0x69, 0x64, 0x46, 0x6c, 0x61, 0x67, 0x52, 0x08, 0x74, 0x65, 0x69, 0x64, + 0x46, 0x6c, 0x61, 0x67, 0x12, 0x33, 0x0a, 0x06, 0x73, 0x70, 0x61, 0x72, 0x65, 0x31, 0x18, 0x04, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, + 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x47, 0x74, 0x70, 0x76, 0x32, 0x53, 0x70, 0x61, 0x72, 0x65, + 0x31, 0x52, 0x06, 0x73, 0x70, 0x61, 0x72, 0x65, 0x31, 0x12, 0x43, 0x0a, 0x0c, 0x6d, 0x65, 0x73, + 0x73, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x20, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, + 0x77, 0x47, 0x74, 0x70, 0x76, 0x32, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x54, 0x79, 0x70, + 0x65, 0x52, 0x0b, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x49, + 0x0a, 0x0e, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, + 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, + 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x47, 0x74, 0x70, 0x76, 0x32, 0x4d, 0x65, 0x73, + 0x73, 0x61, 0x67, 0x65, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x52, 0x0d, 0x6d, 0x65, 0x73, 0x73, + 0x61, 0x67, 0x65, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x12, 0x2d, 0x0a, 0x04, 0x74, 0x65, 0x69, + 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, + 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x47, 0x74, 0x70, 0x76, 0x32, 0x54, 0x65, + 0x69, 0x64, 0x52, 0x04, 0x74, 0x65, 0x69, 0x64, 0x12, 0x4c, 0x0a, 0x0f, 0x73, 0x65, 0x71, 0x75, + 0x65, 0x6e, 0x63, 0x65, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x08, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x23, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, + 0x6c, 0x6f, 0x77, 0x47, 0x74, 0x70, 0x76, 0x32, 0x53, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x65, + 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x52, 0x0e, 0x73, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x65, + 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x33, 0x0a, 0x06, 0x73, 0x70, 0x61, 0x72, 0x65, 0x32, + 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, + 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x47, 0x74, 0x70, 0x76, 0x32, 0x53, 0x70, 0x61, + 0x72, 0x65, 0x32, 0x52, 0x06, 0x73, 0x70, 0x61, 0x72, 0x65, 0x32, 0x22, 0xcd, 0x05, 0x0a, 0x07, + 0x46, 0x6c, 0x6f, 0x77, 0x41, 0x72, 0x70, 0x12, 0x44, 0x0a, 0x0d, 0x68, 0x61, 0x72, 0x64, 0x77, + 0x61, 0x72, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, - 0x49, 0x63, 0x6d, 0x70, 0x76, 0x36, 0x45, 0x63, 0x68, 0x6f, 0x53, 0x65, 0x71, 0x75, 0x65, 0x6e, - 0x63, 0x65, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x52, 0x0e, 0x73, 0x65, 0x71, 0x75, 0x65, 0x6e, - 0x63, 0x65, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x3e, 0x0a, 0x08, 0x63, 0x68, 0x65, 0x63, - 0x6b, 0x73, 0x75, 0x6d, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x6f, 0x74, 0x67, - 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x63, 0x6d, 0x70, - 0x76, 0x36, 0x45, 0x63, 0x68, 0x6f, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x52, 0x08, - 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x22, 0xbb, 0x01, 0x0a, 0x07, 0x46, 0x6c, 0x6f, - 0x77, 0x50, 0x70, 0x70, 0x12, 0x34, 0x0a, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, - 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x50, 0x70, 0x70, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, - 0x73, 0x52, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x34, 0x0a, 0x07, 0x63, 0x6f, - 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x6f, 0x74, - 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x50, 0x70, 0x70, - 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x52, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, - 0x12, 0x44, 0x0a, 0x0d, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x5f, 0x74, 0x79, 0x70, - 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, - 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x50, 0x70, 0x70, 0x50, 0x72, 0x6f, 0x74, - 0x6f, 0x63, 0x6f, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0c, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, - 0x6f, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x22, 0xb0, 0x02, 0x0a, 0x0a, 0x46, 0x6c, 0x6f, 0x77, 0x49, - 0x67, 0x6d, 0x70, 0x76, 0x31, 0x12, 0x37, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, - 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x67, 0x6d, 0x70, 0x76, 0x31, 0x56, 0x65, - 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x2e, - 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x6f, - 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x67, - 0x6d, 0x70, 0x76, 0x31, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x34, - 0x0a, 0x06, 0x75, 0x6e, 0x75, 0x73, 0x65, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, + 0x41, 0x72, 0x70, 0x48, 0x61, 0x72, 0x64, 0x77, 0x61, 0x72, 0x65, 0x54, 0x79, 0x70, 0x65, 0x52, + 0x0c, 0x68, 0x61, 0x72, 0x64, 0x77, 0x61, 0x72, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x44, 0x0a, + 0x0d, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, + 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x41, 0x72, 0x70, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, + 0x6c, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0c, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x54, + 0x79, 0x70, 0x65, 0x12, 0x4a, 0x0a, 0x0f, 0x68, 0x61, 0x72, 0x64, 0x77, 0x61, 0x72, 0x65, 0x5f, + 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x6f, + 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x41, 0x72, + 0x70, 0x48, 0x61, 0x72, 0x64, 0x77, 0x61, 0x72, 0x65, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x52, + 0x0e, 0x68, 0x61, 0x72, 0x64, 0x77, 0x61, 0x72, 0x65, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x12, + 0x4a, 0x0a, 0x0f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x5f, 0x6c, 0x65, 0x6e, 0x67, + 0x74, 0x68, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, + 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x41, 0x72, 0x70, 0x50, 0x72, 0x6f, + 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x52, 0x0e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x12, 0x3a, 0x0a, 0x09, 0x6f, + 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, - 0x49, 0x67, 0x6d, 0x70, 0x76, 0x31, 0x55, 0x6e, 0x75, 0x73, 0x65, 0x64, 0x52, 0x06, 0x75, 0x6e, - 0x75, 0x73, 0x65, 0x64, 0x12, 0x3a, 0x0a, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, - 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, - 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x67, 0x6d, 0x70, 0x76, 0x31, 0x43, 0x68, - 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x52, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, - 0x12, 0x47, 0x0a, 0x0d, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, - 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, - 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x67, 0x6d, 0x70, 0x76, 0x31, 0x47, - 0x72, 0x6f, 0x75, 0x70, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x52, 0x0c, 0x67, 0x72, 0x6f, - 0x75, 0x70, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x22, 0x8f, 0x02, 0x0a, 0x08, 0x46, 0x6c, - 0x6f, 0x77, 0x4d, 0x70, 0x6c, 0x73, 0x12, 0x2f, 0x0a, 0x05, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, - 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x4d, 0x70, 0x6c, 0x73, 0x4c, 0x61, 0x62, 0x65, 0x6c, - 0x52, 0x05, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x12, 0x45, 0x0a, 0x0d, 0x74, 0x72, 0x61, 0x66, 0x66, - 0x69, 0x63, 0x5f, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, + 0x41, 0x72, 0x70, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x09, 0x6f, 0x70, + 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x57, 0x0a, 0x14, 0x73, 0x65, 0x6e, 0x64, 0x65, + 0x72, 0x5f, 0x68, 0x61, 0x72, 0x64, 0x77, 0x61, 0x72, 0x65, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x18, + 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, + 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x41, 0x72, 0x70, 0x53, 0x65, 0x6e, 0x64, 0x65, 0x72, + 0x48, 0x61, 0x72, 0x64, 0x77, 0x61, 0x72, 0x65, 0x41, 0x64, 0x64, 0x72, 0x52, 0x12, 0x73, 0x65, + 0x6e, 0x64, 0x65, 0x72, 0x48, 0x61, 0x72, 0x64, 0x77, 0x61, 0x72, 0x65, 0x41, 0x64, 0x64, 0x72, + 0x12, 0x57, 0x0a, 0x14, 0x73, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x5f, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x63, 0x6f, 0x6c, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, - 0x4d, 0x70, 0x6c, 0x73, 0x54, 0x72, 0x61, 0x66, 0x66, 0x69, 0x63, 0x43, 0x6c, 0x61, 0x73, 0x73, - 0x52, 0x0c, 0x74, 0x72, 0x61, 0x66, 0x66, 0x69, 0x63, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x12, 0x49, - 0x0a, 0x0f, 0x62, 0x6f, 0x74, 0x74, 0x6f, 0x6d, 0x5f, 0x6f, 0x66, 0x5f, 0x73, 0x74, 0x61, 0x63, - 0x6b, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, - 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x4d, 0x70, 0x6c, 0x73, 0x42, 0x6f, 0x74, - 0x74, 0x6f, 0x6d, 0x4f, 0x66, 0x53, 0x74, 0x61, 0x63, 0x6b, 0x52, 0x0d, 0x62, 0x6f, 0x74, 0x74, - 0x6f, 0x6d, 0x4f, 0x66, 0x53, 0x74, 0x61, 0x63, 0x6b, 0x12, 0x40, 0x0a, 0x0c, 0x74, 0x69, 0x6d, - 0x65, 0x5f, 0x74, 0x6f, 0x5f, 0x6c, 0x69, 0x76, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x1e, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, - 0x77, 0x4d, 0x70, 0x6c, 0x73, 0x54, 0x69, 0x6d, 0x65, 0x54, 0x6f, 0x4c, 0x69, 0x76, 0x65, 0x52, - 0x0a, 0x74, 0x69, 0x6d, 0x65, 0x54, 0x6f, 0x4c, 0x69, 0x76, 0x65, 0x22, 0xed, 0x02, 0x0a, 0x08, - 0x46, 0x6c, 0x6f, 0x77, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x36, 0x0a, 0x06, 0x63, 0x68, 0x6f, 0x69, + 0x41, 0x72, 0x70, 0x53, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, + 0x6c, 0x41, 0x64, 0x64, 0x72, 0x52, 0x12, 0x73, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x50, 0x72, 0x6f, + 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x41, 0x64, 0x64, 0x72, 0x12, 0x57, 0x0a, 0x14, 0x74, 0x61, 0x72, + 0x67, 0x65, 0x74, 0x5f, 0x68, 0x61, 0x72, 0x64, 0x77, 0x61, 0x72, 0x65, 0x5f, 0x61, 0x64, 0x64, + 0x72, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, + 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x41, 0x72, 0x70, 0x54, 0x61, 0x72, 0x67, + 0x65, 0x74, 0x48, 0x61, 0x72, 0x64, 0x77, 0x61, 0x72, 0x65, 0x41, 0x64, 0x64, 0x72, 0x52, 0x12, + 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x48, 0x61, 0x72, 0x64, 0x77, 0x61, 0x72, 0x65, 0x41, 0x64, + 0x64, 0x72, 0x12, 0x57, 0x0a, 0x14, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x25, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, + 0x6f, 0x77, 0x41, 0x72, 0x70, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x74, 0x6f, + 0x63, 0x6f, 0x6c, 0x41, 0x64, 0x64, 0x72, 0x52, 0x12, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x50, + 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x41, 0x64, 0x64, 0x72, 0x22, 0xa1, 0x01, 0x0a, 0x08, + 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x63, 0x6d, 0x70, 0x12, 0x36, 0x0a, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x19, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x46, - 0x6c, 0x6f, 0x77, 0x53, 0x69, 0x7a, 0x65, 0x2e, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x2e, 0x45, + 0x6c, 0x6f, 0x77, 0x49, 0x63, 0x6d, 0x70, 0x2e, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x48, 0x00, 0x52, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x88, 0x01, 0x01, - 0x12, 0x19, 0x0a, 0x05, 0x66, 0x69, 0x78, 0x65, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, - 0x01, 0x52, 0x05, 0x66, 0x69, 0x78, 0x65, 0x64, 0x88, 0x01, 0x01, 0x12, 0x34, 0x0a, 0x09, 0x69, - 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, - 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x46, 0x6c, 0x6f, 0x77, 0x53, 0x69, 0x7a, 0x65, 0x49, 0x6e, 0x63, - 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, - 0x74, 0x12, 0x2b, 0x0a, 0x06, 0x72, 0x61, 0x6e, 0x64, 0x6f, 0x6d, 0x18, 0x04, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x13, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x46, 0x6c, 0x6f, 0x77, 0x53, 0x69, 0x7a, 0x65, - 0x52, 0x61, 0x6e, 0x64, 0x6f, 0x6d, 0x52, 0x06, 0x72, 0x61, 0x6e, 0x64, 0x6f, 0x6d, 0x12, 0x3b, - 0x0a, 0x0c, 0x77, 0x65, 0x69, 0x67, 0x68, 0x74, 0x5f, 0x70, 0x61, 0x69, 0x72, 0x73, 0x18, 0x05, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x46, 0x6c, 0x6f, 0x77, 0x53, - 0x69, 0x7a, 0x65, 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, 0x50, 0x61, 0x69, 0x72, 0x73, 0x52, 0x0b, - 0x77, 0x65, 0x69, 0x67, 0x68, 0x74, 0x50, 0x61, 0x69, 0x72, 0x73, 0x1a, 0x59, 0x0a, 0x06, 0x43, - 0x68, 0x6f, 0x69, 0x63, 0x65, 0x22, 0x4f, 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x0a, - 0x0b, 0x75, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x10, 0x00, 0x12, 0x09, - 0x0a, 0x05, 0x66, 0x69, 0x78, 0x65, 0x64, 0x10, 0x01, 0x12, 0x0d, 0x0a, 0x09, 0x69, 0x6e, 0x63, - 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x10, 0x02, 0x12, 0x0a, 0x0a, 0x06, 0x72, 0x61, 0x6e, 0x64, - 0x6f, 0x6d, 0x10, 0x03, 0x12, 0x10, 0x0a, 0x0c, 0x77, 0x65, 0x69, 0x67, 0x68, 0x74, 0x5f, 0x70, - 0x61, 0x69, 0x72, 0x73, 0x10, 0x04, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x63, 0x68, 0x6f, 0x69, 0x63, - 0x65, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x66, 0x69, 0x78, 0x65, 0x64, 0x22, 0x79, 0x0a, 0x11, 0x46, - 0x6c, 0x6f, 0x77, 0x53, 0x69, 0x7a, 0x65, 0x49, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, - 0x12, 0x19, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x48, - 0x00, 0x52, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x88, 0x01, 0x01, 0x12, 0x15, 0x0a, 0x03, 0x65, - 0x6e, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x03, 0x65, 0x6e, 0x64, 0x88, - 0x01, 0x01, 0x12, 0x17, 0x0a, 0x04, 0x73, 0x74, 0x65, 0x70, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, - 0x48, 0x02, 0x52, 0x04, 0x73, 0x74, 0x65, 0x70, 0x88, 0x01, 0x01, 0x42, 0x08, 0x0a, 0x06, 0x5f, - 0x73, 0x74, 0x61, 0x72, 0x74, 0x42, 0x06, 0x0a, 0x04, 0x5f, 0x65, 0x6e, 0x64, 0x42, 0x07, 0x0a, - 0x05, 0x5f, 0x73, 0x74, 0x65, 0x70, 0x22, 0x4e, 0x0a, 0x0e, 0x46, 0x6c, 0x6f, 0x77, 0x53, 0x69, - 0x7a, 0x65, 0x52, 0x61, 0x6e, 0x64, 0x6f, 0x6d, 0x12, 0x15, 0x0a, 0x03, 0x6d, 0x69, 0x6e, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x00, 0x52, 0x03, 0x6d, 0x69, 0x6e, 0x88, 0x01, 0x01, 0x12, - 0x15, 0x0a, 0x03, 0x6d, 0x61, 0x78, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x03, - 0x6d, 0x61, 0x78, 0x88, 0x01, 0x01, 0x42, 0x06, 0x0a, 0x04, 0x5f, 0x6d, 0x69, 0x6e, 0x42, 0x06, - 0x0a, 0x04, 0x5f, 0x6d, 0x61, 0x78, 0x22, 0xa9, 0x03, 0x0a, 0x13, 0x46, 0x6c, 0x6f, 0x77, 0x53, - 0x69, 0x7a, 0x65, 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, 0x50, 0x61, 0x69, 0x72, 0x73, 0x12, 0x41, - 0x0a, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x24, - 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x46, 0x6c, 0x6f, 0x77, 0x53, 0x69, 0x7a, 0x65, 0x57, 0x65, 0x69, - 0x67, 0x68, 0x74, 0x50, 0x61, 0x69, 0x72, 0x73, 0x2e, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x2e, + 0x12, 0x25, 0x0a, 0x04, 0x65, 0x63, 0x68, 0x6f, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, + 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x63, 0x6d, 0x70, 0x45, 0x63, 0x68, + 0x6f, 0x52, 0x04, 0x65, 0x63, 0x68, 0x6f, 0x1a, 0x2b, 0x0a, 0x06, 0x43, 0x68, 0x6f, 0x69, 0x63, + 0x65, 0x22, 0x21, 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x0a, 0x0b, 0x75, 0x6e, 0x73, + 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x10, 0x00, 0x12, 0x08, 0x0a, 0x04, 0x65, 0x63, + 0x68, 0x6f, 0x10, 0x01, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x22, + 0xc5, 0x02, 0x0a, 0x0c, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x63, 0x6d, 0x70, 0x45, 0x63, 0x68, 0x6f, + 0x12, 0x30, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, + 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, + 0x49, 0x63, 0x6d, 0x70, 0x45, 0x63, 0x68, 0x6f, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, + 0x70, 0x65, 0x12, 0x30, 0x0a, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x1c, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, + 0x6f, 0x77, 0x49, 0x63, 0x6d, 0x70, 0x45, 0x63, 0x68, 0x6f, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x04, + 0x63, 0x6f, 0x64, 0x65, 0x12, 0x3c, 0x0a, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, + 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x63, 0x6d, 0x70, 0x45, 0x63, 0x68, 0x6f, + 0x43, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x52, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, + 0x75, 0x6d, 0x12, 0x42, 0x0a, 0x0a, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, + 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, + 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x63, 0x6d, 0x70, 0x45, 0x63, 0x68, 0x6f, + 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x52, 0x0a, 0x69, 0x64, 0x65, 0x6e, + 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x12, 0x4f, 0x0a, 0x0f, 0x73, 0x65, 0x71, 0x75, 0x65, 0x6e, + 0x63, 0x65, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x26, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, + 0x77, 0x49, 0x63, 0x6d, 0x70, 0x45, 0x63, 0x68, 0x6f, 0x53, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, + 0x65, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x52, 0x0e, 0x73, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, + 0x65, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x22, 0xa7, 0x01, 0x0a, 0x0a, 0x46, 0x6c, 0x6f, 0x77, + 0x49, 0x63, 0x6d, 0x70, 0x76, 0x36, 0x12, 0x38, 0x0a, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1b, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x46, 0x6c, 0x6f, + 0x77, 0x49, 0x63, 0x6d, 0x70, 0x76, 0x36, 0x2e, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x2e, 0x45, + 0x6e, 0x75, 0x6d, 0x48, 0x00, 0x52, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x88, 0x01, 0x01, + 0x12, 0x27, 0x0a, 0x04, 0x65, 0x63, 0x68, 0x6f, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, + 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x63, 0x6d, 0x70, 0x76, 0x36, 0x45, + 0x63, 0x68, 0x6f, 0x52, 0x04, 0x65, 0x63, 0x68, 0x6f, 0x1a, 0x2b, 0x0a, 0x06, 0x43, 0x68, 0x6f, + 0x69, 0x63, 0x65, 0x22, 0x21, 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x0a, 0x0b, 0x75, + 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x10, 0x00, 0x12, 0x08, 0x0a, 0x04, + 0x65, 0x63, 0x68, 0x6f, 0x10, 0x01, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x63, 0x68, 0x6f, 0x69, 0x63, + 0x65, 0x22, 0xd1, 0x02, 0x0a, 0x0e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x63, 0x6d, 0x70, 0x76, 0x36, + 0x45, 0x63, 0x68, 0x6f, 0x12, 0x32, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, + 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x63, 0x6d, 0x70, 0x76, 0x36, 0x45, 0x63, 0x68, 0x6f, 0x54, 0x79, + 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x32, 0x0a, 0x04, 0x63, 0x6f, 0x64, 0x65, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, + 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x63, 0x6d, 0x70, 0x76, 0x36, 0x45, 0x63, + 0x68, 0x6f, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x12, 0x44, 0x0a, 0x0a, + 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x24, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, + 0x6f, 0x77, 0x49, 0x63, 0x6d, 0x70, 0x76, 0x36, 0x45, 0x63, 0x68, 0x6f, 0x49, 0x64, 0x65, 0x6e, + 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x52, 0x0a, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, + 0x65, 0x72, 0x12, 0x51, 0x0a, 0x0f, 0x73, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x65, 0x5f, 0x6e, + 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x6f, 0x74, + 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x63, 0x6d, + 0x70, 0x76, 0x36, 0x45, 0x63, 0x68, 0x6f, 0x53, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x65, 0x4e, + 0x75, 0x6d, 0x62, 0x65, 0x72, 0x52, 0x0e, 0x73, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x65, 0x4e, + 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x3e, 0x0a, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, + 0x6d, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, + 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x63, 0x6d, 0x70, 0x76, 0x36, 0x45, + 0x63, 0x68, 0x6f, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x52, 0x08, 0x63, 0x68, 0x65, + 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x22, 0xbb, 0x01, 0x0a, 0x07, 0x46, 0x6c, 0x6f, 0x77, 0x50, 0x70, + 0x70, 0x12, 0x34, 0x0a, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, + 0x46, 0x6c, 0x6f, 0x77, 0x50, 0x70, 0x70, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x52, 0x07, + 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x34, 0x0a, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x72, + 0x6f, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, + 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x50, 0x70, 0x70, 0x43, 0x6f, 0x6e, + 0x74, 0x72, 0x6f, 0x6c, 0x52, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x12, 0x44, 0x0a, + 0x0d, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, + 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x50, 0x70, 0x70, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, + 0x6c, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0c, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x54, + 0x79, 0x70, 0x65, 0x22, 0xb0, 0x02, 0x0a, 0x0a, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x67, 0x6d, 0x70, + 0x76, 0x31, 0x12, 0x37, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, + 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x67, 0x6d, 0x70, 0x76, 0x31, 0x56, 0x65, 0x72, 0x73, 0x69, + 0x6f, 0x6e, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x2e, 0x0a, 0x04, 0x74, + 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x6f, 0x74, 0x67, 0x2e, + 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x67, 0x6d, 0x70, 0x76, + 0x31, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x34, 0x0a, 0x06, 0x75, + 0x6e, 0x75, 0x73, 0x65, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x6f, 0x74, + 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x67, 0x6d, + 0x70, 0x76, 0x31, 0x55, 0x6e, 0x75, 0x73, 0x65, 0x64, 0x52, 0x06, 0x75, 0x6e, 0x75, 0x73, 0x65, + 0x64, 0x12, 0x3a, 0x0a, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x18, 0x04, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, + 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x67, 0x6d, 0x70, 0x76, 0x31, 0x43, 0x68, 0x65, 0x63, 0x6b, + 0x73, 0x75, 0x6d, 0x52, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x12, 0x47, 0x0a, + 0x0d, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x05, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, + 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x67, 0x6d, 0x70, 0x76, 0x31, 0x47, 0x72, 0x6f, 0x75, + 0x70, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x52, 0x0c, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x41, + 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x22, 0x8f, 0x02, 0x0a, 0x08, 0x46, 0x6c, 0x6f, 0x77, 0x4d, + 0x70, 0x6c, 0x73, 0x12, 0x2f, 0x0a, 0x05, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, + 0x46, 0x6c, 0x6f, 0x77, 0x4d, 0x70, 0x6c, 0x73, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x52, 0x05, 0x6c, + 0x61, 0x62, 0x65, 0x6c, 0x12, 0x45, 0x0a, 0x0d, 0x74, 0x72, 0x61, 0x66, 0x66, 0x69, 0x63, 0x5f, + 0x63, 0x6c, 0x61, 0x73, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x6f, 0x74, + 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x4d, 0x70, 0x6c, + 0x73, 0x54, 0x72, 0x61, 0x66, 0x66, 0x69, 0x63, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x52, 0x0c, 0x74, + 0x72, 0x61, 0x66, 0x66, 0x69, 0x63, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x12, 0x49, 0x0a, 0x0f, 0x62, + 0x6f, 0x74, 0x74, 0x6f, 0x6d, 0x5f, 0x6f, 0x66, 0x5f, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, + 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x4d, 0x70, 0x6c, 0x73, 0x42, 0x6f, 0x74, 0x74, 0x6f, 0x6d, + 0x4f, 0x66, 0x53, 0x74, 0x61, 0x63, 0x6b, 0x52, 0x0d, 0x62, 0x6f, 0x74, 0x74, 0x6f, 0x6d, 0x4f, + 0x66, 0x53, 0x74, 0x61, 0x63, 0x6b, 0x12, 0x40, 0x0a, 0x0c, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x74, + 0x6f, 0x5f, 0x6c, 0x69, 0x76, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x6f, + 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x4d, 0x70, + 0x6c, 0x73, 0x54, 0x69, 0x6d, 0x65, 0x54, 0x6f, 0x4c, 0x69, 0x76, 0x65, 0x52, 0x0a, 0x74, 0x69, + 0x6d, 0x65, 0x54, 0x6f, 0x4c, 0x69, 0x76, 0x65, 0x22, 0x9a, 0x03, 0x0a, 0x08, 0x46, 0x6c, 0x6f, + 0x77, 0x52, 0x73, 0x76, 0x70, 0x12, 0x35, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, + 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x52, 0x73, 0x76, 0x70, 0x56, 0x65, 0x72, 0x73, + 0x69, 0x6f, 0x6e, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x25, 0x0a, 0x04, + 0x66, 0x6c, 0x61, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x6f, 0x74, 0x67, + 0x2e, 0x46, 0x6c, 0x6f, 0x77, 0x52, 0x53, 0x56, 0x50, 0x46, 0x6c, 0x61, 0x67, 0x52, 0x04, 0x66, + 0x6c, 0x61, 0x67, 0x12, 0x45, 0x0a, 0x0d, 0x72, 0x73, 0x76, 0x70, 0x5f, 0x63, 0x68, 0x65, 0x63, + 0x6b, 0x73, 0x75, 0x6d, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x6f, 0x74, 0x67, + 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x52, 0x73, 0x76, 0x70, + 0x52, 0x73, 0x76, 0x70, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x52, 0x0c, 0x72, 0x73, + 0x76, 0x70, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x12, 0x40, 0x0a, 0x0c, 0x74, 0x69, + 0x6d, 0x65, 0x5f, 0x74, 0x6f, 0x5f, 0x6c, 0x69, 0x76, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x1e, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, + 0x6f, 0x77, 0x52, 0x73, 0x76, 0x70, 0x54, 0x69, 0x6d, 0x65, 0x54, 0x6f, 0x4c, 0x69, 0x76, 0x65, + 0x52, 0x0a, 0x74, 0x69, 0x6d, 0x65, 0x54, 0x6f, 0x4c, 0x69, 0x76, 0x65, 0x12, 0x38, 0x0a, 0x08, + 0x72, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, + 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, + 0x52, 0x73, 0x76, 0x70, 0x52, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x64, 0x52, 0x08, 0x72, 0x65, + 0x73, 0x65, 0x72, 0x76, 0x65, 0x64, 0x12, 0x34, 0x0a, 0x0b, 0x72, 0x73, 0x76, 0x70, 0x5f, 0x6c, + 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x6f, 0x74, + 0x67, 0x2e, 0x46, 0x6c, 0x6f, 0x77, 0x52, 0x53, 0x56, 0x50, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, + 0x52, 0x0a, 0x72, 0x73, 0x76, 0x70, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x12, 0x37, 0x0a, 0x0c, + 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x07, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x46, 0x6c, 0x6f, 0x77, 0x52, 0x53, 0x56, + 0x50, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x0b, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, + 0x65, 0x54, 0x79, 0x70, 0x65, 0x22, 0xba, 0x01, 0x0a, 0x0c, 0x46, 0x6c, 0x6f, 0x77, 0x52, 0x53, + 0x56, 0x50, 0x46, 0x6c, 0x61, 0x67, 0x12, 0x3a, 0x0a, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1d, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x46, 0x6c, 0x6f, + 0x77, 0x52, 0x53, 0x56, 0x50, 0x46, 0x6c, 0x61, 0x67, 0x2e, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, + 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x48, 0x00, 0x52, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x88, + 0x01, 0x01, 0x1a, 0x63, 0x0a, 0x06, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x22, 0x59, 0x0a, 0x04, + 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x0a, 0x0b, 0x75, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, + 0x69, 0x65, 0x64, 0x10, 0x00, 0x12, 0x21, 0x0a, 0x1d, 0x6e, 0x6f, 0x74, 0x5f, 0x72, 0x65, 0x66, + 0x72, 0x65, 0x73, 0x68, 0x5f, 0x72, 0x65, 0x64, 0x75, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x63, + 0x61, 0x70, 0x61, 0x62, 0x6c, 0x65, 0x10, 0x01, 0x12, 0x1d, 0x0a, 0x19, 0x72, 0x65, 0x66, 0x72, + 0x65, 0x73, 0x68, 0x5f, 0x72, 0x65, 0x64, 0x75, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x63, 0x61, + 0x70, 0x61, 0x62, 0x6c, 0x65, 0x10, 0x02, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x63, 0x68, 0x6f, 0x69, + 0x63, 0x65, 0x22, 0xd8, 0x01, 0x0a, 0x0e, 0x46, 0x6c, 0x6f, 0x77, 0x52, 0x53, 0x56, 0x50, 0x4c, + 0x65, 0x6e, 0x67, 0x74, 0x68, 0x12, 0x3c, 0x0a, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1f, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x46, 0x6c, 0x6f, 0x77, + 0x52, 0x53, 0x56, 0x50, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x2e, 0x43, 0x68, 0x6f, 0x69, 0x63, + 0x65, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x48, 0x00, 0x52, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, + 0x88, 0x01, 0x01, 0x12, 0x17, 0x0a, 0x04, 0x61, 0x75, 0x74, 0x6f, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x0d, 0x48, 0x01, 0x52, 0x04, 0x61, 0x75, 0x74, 0x6f, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, + 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x02, 0x52, 0x05, 0x76, + 0x61, 0x6c, 0x75, 0x65, 0x88, 0x01, 0x01, 0x1a, 0x36, 0x0a, 0x06, 0x43, 0x68, 0x6f, 0x69, 0x63, + 0x65, 0x22, 0x2c, 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x0a, 0x0b, 0x75, 0x6e, 0x73, + 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x10, 0x00, 0x12, 0x08, 0x0a, 0x04, 0x61, 0x75, + 0x74, 0x6f, 0x10, 0x01, 0x12, 0x09, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x10, 0x02, 0x42, + 0x09, 0x0a, 0x07, 0x5f, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x61, + 0x75, 0x74, 0x6f, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0xb6, 0x01, + 0x0a, 0x0f, 0x46, 0x6c, 0x6f, 0x77, 0x52, 0x53, 0x56, 0x50, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, + 0x65, 0x12, 0x3d, 0x0a, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x0e, 0x32, 0x20, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x46, 0x6c, 0x6f, 0x77, 0x52, 0x53, 0x56, 0x50, + 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x2e, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x2e, 0x45, + 0x6e, 0x75, 0x6d, 0x48, 0x00, 0x52, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x88, 0x01, 0x01, + 0x12, 0x2c, 0x0a, 0x04, 0x70, 0x61, 0x74, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, + 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x46, 0x6c, 0x6f, 0x77, 0x52, 0x53, 0x56, 0x50, 0x50, 0x61, 0x74, + 0x68, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x04, 0x70, 0x61, 0x74, 0x68, 0x1a, 0x2b, + 0x0a, 0x06, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x22, 0x21, 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, + 0x12, 0x0f, 0x0a, 0x0b, 0x75, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x10, + 0x00, 0x12, 0x08, 0x0a, 0x04, 0x70, 0x61, 0x74, 0x68, 0x10, 0x01, 0x42, 0x09, 0x0a, 0x07, 0x5f, + 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x22, 0x49, 0x0a, 0x13, 0x46, 0x6c, 0x6f, 0x77, 0x52, 0x53, + 0x56, 0x50, 0x50, 0x61, 0x74, 0x68, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x32, 0x0a, + 0x07, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, + 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x46, 0x6c, 0x6f, 0x77, 0x52, 0x53, 0x56, 0x50, 0x50, 0x61, 0x74, + 0x68, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x52, 0x07, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, + 0x73, 0x22, 0x88, 0x01, 0x0a, 0x13, 0x46, 0x6c, 0x6f, 0x77, 0x52, 0x53, 0x56, 0x50, 0x50, 0x61, + 0x74, 0x68, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x12, 0x35, 0x0a, 0x06, 0x6c, 0x65, 0x6e, + 0x67, 0x74, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x6f, 0x74, 0x67, 0x2e, + 0x46, 0x6c, 0x6f, 0x77, 0x52, 0x53, 0x56, 0x50, 0x50, 0x61, 0x74, 0x68, 0x4f, 0x62, 0x6a, 0x65, + 0x63, 0x74, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x52, 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, + 0x12, 0x3a, 0x0a, 0x09, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x5f, 0x6e, 0x75, 0x6d, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x46, 0x6c, 0x6f, 0x77, 0x52, 0x53, + 0x56, 0x50, 0x50, 0x61, 0x74, 0x68, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x43, 0x6c, 0x61, + 0x73, 0x73, 0x52, 0x08, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x4e, 0x75, 0x6d, 0x22, 0xec, 0x01, 0x0a, + 0x18, 0x46, 0x6c, 0x6f, 0x77, 0x52, 0x53, 0x56, 0x50, 0x50, 0x61, 0x74, 0x68, 0x4f, 0x62, 0x6a, + 0x65, 0x63, 0x74, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x12, 0x46, 0x0a, 0x06, 0x63, 0x68, 0x6f, + 0x69, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x29, 0x2e, 0x6f, 0x74, 0x67, 0x2e, + 0x46, 0x6c, 0x6f, 0x77, 0x52, 0x53, 0x56, 0x50, 0x50, 0x61, 0x74, 0x68, 0x4f, 0x62, 0x6a, 0x65, + 0x63, 0x74, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x2e, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x48, 0x00, 0x52, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x88, 0x01, - 0x01, 0x12, 0x4d, 0x0a, 0x0a, 0x70, 0x72, 0x65, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x65, 0x64, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x28, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x46, 0x6c, 0x6f, 0x77, - 0x53, 0x69, 0x7a, 0x65, 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, 0x50, 0x61, 0x69, 0x72, 0x73, 0x2e, - 0x50, 0x72, 0x65, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x65, 0x64, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x48, - 0x01, 0x52, 0x0a, 0x70, 0x72, 0x65, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x65, 0x64, 0x88, 0x01, 0x01, - 0x12, 0x36, 0x0a, 0x06, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, - 0x32, 0x1e, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x46, 0x6c, 0x6f, 0x77, 0x53, 0x69, 0x7a, 0x65, 0x57, - 0x65, 0x69, 0x67, 0x68, 0x74, 0x50, 0x61, 0x69, 0x72, 0x73, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, - 0x52, 0x06, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x1a, 0x3d, 0x0a, 0x06, 0x43, 0x68, 0x6f, 0x69, - 0x63, 0x65, 0x22, 0x33, 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x0a, 0x0b, 0x75, 0x6e, - 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x10, 0x00, 0x12, 0x0e, 0x0a, 0x0a, 0x70, - 0x72, 0x65, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x65, 0x64, 0x10, 0x01, 0x12, 0x0a, 0x0a, 0x06, 0x63, - 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x10, 0x02, 0x1a, 0x6f, 0x0a, 0x0a, 0x50, 0x72, 0x65, 0x64, 0x65, - 0x66, 0x69, 0x6e, 0x65, 0x64, 0x22, 0x61, 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x0a, + 0x01, 0x12, 0x17, 0x0a, 0x04, 0x61, 0x75, 0x74, 0x6f, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, + 0x01, 0x52, 0x04, 0x61, 0x75, 0x74, 0x6f, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x76, 0x61, + 0x6c, 0x75, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x02, 0x52, 0x05, 0x76, 0x61, 0x6c, + 0x75, 0x65, 0x88, 0x01, 0x01, 0x1a, 0x36, 0x0a, 0x06, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x22, + 0x2c, 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x0a, 0x0b, 0x75, 0x6e, 0x73, 0x70, 0x65, + 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x10, 0x00, 0x12, 0x08, 0x0a, 0x04, 0x61, 0x75, 0x74, 0x6f, + 0x10, 0x01, 0x12, 0x09, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x10, 0x02, 0x42, 0x09, 0x0a, + 0x07, 0x5f, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x61, 0x75, 0x74, + 0x6f, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0xb3, 0x08, 0x0a, 0x18, + 0x46, 0x6c, 0x6f, 0x77, 0x52, 0x53, 0x56, 0x50, 0x50, 0x61, 0x74, 0x68, 0x4f, 0x62, 0x6a, 0x65, + 0x63, 0x74, 0x73, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x12, 0x46, 0x0a, 0x06, 0x63, 0x68, 0x6f, 0x69, + 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x29, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x46, + 0x6c, 0x6f, 0x77, 0x52, 0x53, 0x56, 0x50, 0x50, 0x61, 0x74, 0x68, 0x4f, 0x62, 0x6a, 0x65, 0x63, + 0x74, 0x73, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x2e, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x2e, 0x45, + 0x6e, 0x75, 0x6d, 0x48, 0x00, 0x52, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x88, 0x01, 0x01, + 0x12, 0x3e, 0x0a, 0x07, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x24, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x46, 0x6c, 0x6f, 0x77, 0x52, 0x53, 0x56, 0x50, + 0x50, 0x61, 0x74, 0x68, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x43, 0x6c, 0x61, 0x73, 0x73, + 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x07, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, + 0x12, 0x3f, 0x0a, 0x08, 0x72, 0x73, 0x76, 0x70, 0x5f, 0x68, 0x6f, 0x70, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x46, 0x6c, 0x6f, 0x77, 0x52, 0x53, 0x56, + 0x50, 0x50, 0x61, 0x74, 0x68, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x43, 0x6c, 0x61, 0x73, + 0x73, 0x52, 0x73, 0x76, 0x70, 0x48, 0x6f, 0x70, 0x52, 0x07, 0x72, 0x73, 0x76, 0x70, 0x48, 0x6f, + 0x70, 0x12, 0x48, 0x0a, 0x0b, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, + 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x46, 0x6c, 0x6f, + 0x77, 0x52, 0x53, 0x56, 0x50, 0x50, 0x61, 0x74, 0x68, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, + 0x43, 0x6c, 0x61, 0x73, 0x73, 0x54, 0x69, 0x6d, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x52, + 0x0a, 0x74, 0x69, 0x6d, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x12, 0x51, 0x0a, 0x0e, 0x65, + 0x78, 0x70, 0x6c, 0x69, 0x63, 0x69, 0x74, 0x5f, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x18, 0x05, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x46, 0x6c, 0x6f, 0x77, 0x52, 0x53, + 0x56, 0x50, 0x50, 0x61, 0x74, 0x68, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x43, 0x6c, 0x61, + 0x73, 0x73, 0x45, 0x78, 0x70, 0x6c, 0x69, 0x63, 0x69, 0x74, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x52, + 0x0d, 0x65, 0x78, 0x70, 0x6c, 0x69, 0x63, 0x69, 0x74, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x12, 0x4e, + 0x0a, 0x0d, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x18, + 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x46, 0x6c, 0x6f, 0x77, + 0x52, 0x53, 0x56, 0x50, 0x50, 0x61, 0x74, 0x68, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x43, + 0x6c, 0x61, 0x73, 0x73, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x52, 0x0c, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x5a, + 0x0a, 0x11, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, + 0x75, 0x74, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x6f, 0x74, 0x67, 0x2e, + 0x46, 0x6c, 0x6f, 0x77, 0x52, 0x53, 0x56, 0x50, 0x50, 0x61, 0x74, 0x68, 0x4f, 0x62, 0x6a, 0x65, + 0x63, 0x74, 0x73, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x41, + 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x10, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, + 0x6e, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x12, 0x54, 0x0a, 0x0f, 0x73, 0x65, + 0x6e, 0x64, 0x65, 0x72, 0x5f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x18, 0x08, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x46, 0x6c, 0x6f, 0x77, 0x52, 0x53, + 0x56, 0x50, 0x50, 0x61, 0x74, 0x68, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x43, 0x6c, 0x61, + 0x73, 0x73, 0x53, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, + 0x52, 0x0e, 0x73, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, + 0x12, 0x4b, 0x0a, 0x0c, 0x73, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x5f, 0x74, 0x73, 0x70, 0x65, 0x63, + 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x46, 0x6c, 0x6f, + 0x77, 0x52, 0x53, 0x56, 0x50, 0x50, 0x61, 0x74, 0x68, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, + 0x43, 0x6c, 0x61, 0x73, 0x73, 0x53, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x54, 0x73, 0x70, 0x65, 0x63, + 0x52, 0x0b, 0x73, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x54, 0x73, 0x70, 0x65, 0x63, 0x12, 0x4b, 0x0a, + 0x0c, 0x72, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x5f, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x18, 0x0a, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x46, 0x6c, 0x6f, 0x77, 0x52, 0x53, + 0x56, 0x50, 0x50, 0x61, 0x74, 0x68, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x43, 0x6c, 0x61, + 0x73, 0x73, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x52, 0x0b, 0x72, + 0x65, 0x63, 0x6f, 0x72, 0x64, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x12, 0x36, 0x0a, 0x06, 0x63, 0x75, + 0x73, 0x74, 0x6f, 0x6d, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x6f, 0x74, 0x67, + 0x2e, 0x46, 0x6c, 0x6f, 0x77, 0x52, 0x53, 0x56, 0x50, 0x50, 0x61, 0x74, 0x68, 0x4f, 0x62, 0x6a, + 0x65, 0x63, 0x74, 0x73, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x52, 0x06, 0x63, 0x75, 0x73, 0x74, + 0x6f, 0x6d, 0x1a, 0xd1, 0x01, 0x0a, 0x06, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x22, 0xc6, 0x01, + 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x0a, 0x0b, 0x75, 0x6e, 0x73, 0x70, 0x65, 0x63, + 0x69, 0x66, 0x69, 0x65, 0x64, 0x10, 0x00, 0x12, 0x0b, 0x0a, 0x07, 0x73, 0x65, 0x73, 0x73, 0x69, + 0x6f, 0x6e, 0x10, 0x01, 0x12, 0x0c, 0x0a, 0x08, 0x72, 0x73, 0x76, 0x70, 0x5f, 0x68, 0x6f, 0x70, + 0x10, 0x02, 0x12, 0x0f, 0x0a, 0x0b, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, + 0x73, 0x10, 0x03, 0x12, 0x12, 0x0a, 0x0e, 0x65, 0x78, 0x70, 0x6c, 0x69, 0x63, 0x69, 0x74, 0x5f, + 0x72, 0x6f, 0x75, 0x74, 0x65, 0x10, 0x04, 0x12, 0x11, 0x0a, 0x0d, 0x6c, 0x61, 0x62, 0x65, 0x6c, + 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x10, 0x05, 0x12, 0x15, 0x0a, 0x11, 0x73, 0x65, + 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x10, + 0x06, 0x12, 0x13, 0x0a, 0x0f, 0x73, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x5f, 0x74, 0x65, 0x6d, 0x70, + 0x6c, 0x61, 0x74, 0x65, 0x10, 0x07, 0x12, 0x10, 0x0a, 0x0c, 0x73, 0x65, 0x6e, 0x64, 0x65, 0x72, + 0x5f, 0x74, 0x73, 0x70, 0x65, 0x63, 0x10, 0x08, 0x12, 0x10, 0x0a, 0x0c, 0x72, 0x65, 0x63, 0x6f, + 0x72, 0x64, 0x5f, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x10, 0x09, 0x12, 0x0a, 0x0a, 0x06, 0x63, 0x75, + 0x73, 0x74, 0x6f, 0x6d, 0x10, 0x0a, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x63, 0x68, 0x6f, 0x69, 0x63, + 0x65, 0x22, 0x5e, 0x0a, 0x1f, 0x46, 0x6c, 0x6f, 0x77, 0x52, 0x53, 0x56, 0x50, 0x50, 0x61, 0x74, + 0x68, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x53, 0x65, 0x73, + 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x3b, 0x0a, 0x06, 0x63, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x46, 0x6c, 0x6f, 0x77, 0x52, + 0x53, 0x56, 0x50, 0x50, 0x61, 0x74, 0x68, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x53, 0x65, + 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x43, 0x54, 0x79, 0x70, 0x65, 0x52, 0x05, 0x63, 0x54, 0x79, 0x70, + 0x65, 0x22, 0x82, 0x02, 0x0a, 0x1f, 0x46, 0x6c, 0x6f, 0x77, 0x52, 0x53, 0x56, 0x50, 0x50, 0x61, + 0x74, 0x68, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, + 0x43, 0x54, 0x79, 0x70, 0x65, 0x12, 0x4d, 0x0a, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x30, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x46, 0x6c, 0x6f, 0x77, + 0x52, 0x53, 0x56, 0x50, 0x50, 0x61, 0x74, 0x68, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x53, + 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x43, 0x54, 0x79, 0x70, 0x65, 0x2e, 0x43, 0x68, 0x6f, 0x69, + 0x63, 0x65, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x48, 0x00, 0x52, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, + 0x65, 0x88, 0x01, 0x01, 0x12, 0x4d, 0x0a, 0x0f, 0x6c, 0x73, 0x70, 0x5f, 0x74, 0x75, 0x6e, 0x6e, + 0x65, 0x6c, 0x5f, 0x69, 0x70, 0x76, 0x34, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, + 0x6f, 0x74, 0x67, 0x2e, 0x46, 0x6c, 0x6f, 0x77, 0x52, 0x53, 0x56, 0x50, 0x50, 0x61, 0x74, 0x68, + 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x4c, 0x73, 0x70, 0x54, 0x75, 0x6e, 0x6e, 0x65, 0x6c, + 0x49, 0x70, 0x76, 0x34, 0x52, 0x0d, 0x6c, 0x73, 0x70, 0x54, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x49, + 0x70, 0x76, 0x34, 0x1a, 0x36, 0x0a, 0x06, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x22, 0x2c, 0x0a, + 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x0a, 0x0b, 0x75, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, + 0x66, 0x69, 0x65, 0x64, 0x10, 0x00, 0x12, 0x13, 0x0a, 0x0f, 0x6c, 0x73, 0x70, 0x5f, 0x74, 0x75, + 0x6e, 0x6e, 0x65, 0x6c, 0x5f, 0x69, 0x70, 0x76, 0x34, 0x10, 0x01, 0x42, 0x09, 0x0a, 0x07, 0x5f, + 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x22, 0xbd, 0x03, 0x0a, 0x20, 0x46, 0x6c, 0x6f, 0x77, 0x52, + 0x53, 0x56, 0x50, 0x50, 0x61, 0x74, 0x68, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x4c, 0x73, + 0x70, 0x54, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x49, 0x70, 0x76, 0x34, 0x12, 0x87, 0x01, 0x0a, 0x1d, + 0x69, 0x70, 0x76, 0x34, 0x5f, 0x74, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x5f, 0x65, 0x6e, 0x64, 0x5f, + 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x45, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, + 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x52, 0x53, 0x56, 0x50, 0x50, 0x61, 0x74, 0x68, 0x53, 0x65, 0x73, + 0x73, 0x69, 0x6f, 0x6e, 0x4c, 0x73, 0x70, 0x54, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x49, 0x70, 0x76, + 0x34, 0x49, 0x70, 0x76, 0x34, 0x54, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x45, 0x6e, 0x64, 0x50, 0x6f, + 0x69, 0x6e, 0x74, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x52, 0x19, 0x69, 0x70, 0x76, 0x34, + 0x54, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x45, 0x6e, 0x64, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x41, 0x64, + 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x50, 0x0a, 0x08, 0x72, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, + 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x34, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, + 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x52, 0x53, 0x56, 0x50, 0x50, 0x61, 0x74, + 0x68, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x4c, 0x73, 0x70, 0x54, 0x75, 0x6e, 0x6e, 0x65, + 0x6c, 0x49, 0x70, 0x76, 0x34, 0x52, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x64, 0x52, 0x08, 0x72, + 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x64, 0x12, 0x51, 0x0a, 0x09, 0x74, 0x75, 0x6e, 0x6e, 0x65, + 0x6c, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x34, 0x2e, 0x6f, 0x74, 0x67, + 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x52, 0x53, 0x56, 0x50, + 0x50, 0x61, 0x74, 0x68, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x4c, 0x73, 0x70, 0x54, 0x75, + 0x6e, 0x6e, 0x65, 0x6c, 0x49, 0x70, 0x76, 0x34, 0x54, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x49, 0x64, + 0x52, 0x08, 0x74, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x49, 0x64, 0x12, 0x6a, 0x0a, 0x12, 0x65, 0x78, + 0x74, 0x65, 0x6e, 0x64, 0x65, 0x64, 0x5f, 0x74, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x5f, 0x69, 0x64, + 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3c, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, + 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x52, 0x53, 0x56, 0x50, 0x50, 0x61, 0x74, 0x68, + 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x4c, 0x73, 0x70, 0x54, 0x75, 0x6e, 0x6e, 0x65, 0x6c, + 0x49, 0x70, 0x76, 0x34, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x64, 0x65, 0x64, 0x54, 0x75, 0x6e, 0x6e, + 0x65, 0x6c, 0x49, 0x64, 0x52, 0x10, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x64, 0x65, 0x64, 0x54, 0x75, + 0x6e, 0x6e, 0x65, 0x6c, 0x49, 0x64, 0x22, 0x5e, 0x0a, 0x1f, 0x46, 0x6c, 0x6f, 0x77, 0x52, 0x53, + 0x56, 0x50, 0x50, 0x61, 0x74, 0x68, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x43, 0x6c, 0x61, + 0x73, 0x73, 0x52, 0x73, 0x76, 0x70, 0x48, 0x6f, 0x70, 0x12, 0x3b, 0x0a, 0x06, 0x63, 0x5f, 0x74, + 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x6f, 0x74, 0x67, 0x2e, + 0x46, 0x6c, 0x6f, 0x77, 0x52, 0x53, 0x56, 0x50, 0x50, 0x61, 0x74, 0x68, 0x4f, 0x62, 0x6a, 0x65, + 0x63, 0x74, 0x73, 0x52, 0x73, 0x76, 0x70, 0x48, 0x6f, 0x70, 0x43, 0x54, 0x79, 0x70, 0x65, 0x52, + 0x05, 0x63, 0x54, 0x79, 0x70, 0x65, 0x22, 0xda, 0x01, 0x0a, 0x1f, 0x46, 0x6c, 0x6f, 0x77, 0x52, + 0x53, 0x56, 0x50, 0x50, 0x61, 0x74, 0x68, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x52, 0x73, + 0x76, 0x70, 0x48, 0x6f, 0x70, 0x43, 0x54, 0x79, 0x70, 0x65, 0x12, 0x4d, 0x0a, 0x06, 0x63, 0x68, + 0x6f, 0x69, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x30, 0x2e, 0x6f, 0x74, 0x67, + 0x2e, 0x46, 0x6c, 0x6f, 0x77, 0x52, 0x53, 0x56, 0x50, 0x50, 0x61, 0x74, 0x68, 0x4f, 0x62, 0x6a, + 0x65, 0x63, 0x74, 0x73, 0x52, 0x73, 0x76, 0x70, 0x48, 0x6f, 0x70, 0x43, 0x54, 0x79, 0x70, 0x65, + 0x2e, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x48, 0x00, 0x52, 0x06, + 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x88, 0x01, 0x01, 0x12, 0x30, 0x0a, 0x04, 0x69, 0x70, 0x76, + 0x34, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x46, 0x6c, + 0x6f, 0x77, 0x52, 0x53, 0x56, 0x50, 0x50, 0x61, 0x74, 0x68, 0x52, 0x73, 0x76, 0x70, 0x48, 0x6f, + 0x70, 0x49, 0x70, 0x76, 0x34, 0x52, 0x04, 0x69, 0x70, 0x76, 0x34, 0x1a, 0x2b, 0x0a, 0x06, 0x43, + 0x68, 0x6f, 0x69, 0x63, 0x65, 0x22, 0x21, 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x0a, 0x0b, 0x75, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x10, 0x00, 0x12, 0x08, - 0x0a, 0x04, 0x69, 0x6d, 0x69, 0x78, 0x10, 0x01, 0x12, 0x0e, 0x0a, 0x0a, 0x69, 0x70, 0x73, 0x65, - 0x63, 0x5f, 0x69, 0x6d, 0x69, 0x78, 0x10, 0x02, 0x12, 0x0d, 0x0a, 0x09, 0x69, 0x70, 0x76, 0x36, - 0x5f, 0x69, 0x6d, 0x69, 0x78, 0x10, 0x03, 0x12, 0x11, 0x0a, 0x0d, 0x73, 0x74, 0x61, 0x6e, 0x64, - 0x61, 0x72, 0x64, 0x5f, 0x69, 0x6d, 0x69, 0x78, 0x10, 0x04, 0x12, 0x0c, 0x0a, 0x08, 0x74, 0x63, - 0x70, 0x5f, 0x69, 0x6d, 0x69, 0x78, 0x10, 0x05, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x63, 0x68, 0x6f, - 0x69, 0x63, 0x65, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x70, 0x72, 0x65, 0x64, 0x65, 0x66, 0x69, 0x6e, - 0x65, 0x64, 0x22, 0x65, 0x0a, 0x19, 0x46, 0x6c, 0x6f, 0x77, 0x53, 0x69, 0x7a, 0x65, 0x57, 0x65, - 0x69, 0x67, 0x68, 0x74, 0x50, 0x61, 0x69, 0x72, 0x73, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x12, - 0x17, 0x0a, 0x04, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x00, 0x52, - 0x04, 0x73, 0x69, 0x7a, 0x65, 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x77, 0x65, 0x69, 0x67, - 0x68, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x02, 0x48, 0x01, 0x52, 0x06, 0x77, 0x65, 0x69, 0x67, - 0x68, 0x74, 0x88, 0x01, 0x01, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x42, 0x09, - 0x0a, 0x07, 0x5f, 0x77, 0x65, 0x69, 0x67, 0x68, 0x74, 0x22, 0x88, 0x03, 0x0a, 0x08, 0x46, 0x6c, - 0x6f, 0x77, 0x52, 0x61, 0x74, 0x65, 0x12, 0x36, 0x0a, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x19, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x46, 0x6c, 0x6f, - 0x77, 0x52, 0x61, 0x74, 0x65, 0x2e, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x2e, 0x45, 0x6e, 0x75, - 0x6d, 0x48, 0x00, 0x52, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x88, 0x01, 0x01, 0x12, 0x15, - 0x0a, 0x03, 0x70, 0x70, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x48, 0x01, 0x52, 0x03, 0x70, - 0x70, 0x73, 0x88, 0x01, 0x01, 0x12, 0x15, 0x0a, 0x03, 0x62, 0x70, 0x73, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x04, 0x48, 0x02, 0x52, 0x03, 0x62, 0x70, 0x73, 0x88, 0x01, 0x01, 0x12, 0x17, 0x0a, 0x04, - 0x6b, 0x62, 0x70, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, 0x48, 0x03, 0x52, 0x04, 0x6b, 0x62, - 0x70, 0x73, 0x88, 0x01, 0x01, 0x12, 0x17, 0x0a, 0x04, 0x6d, 0x62, 0x70, 0x73, 0x18, 0x05, 0x20, - 0x01, 0x28, 0x04, 0x48, 0x04, 0x52, 0x04, 0x6d, 0x62, 0x70, 0x73, 0x88, 0x01, 0x01, 0x12, 0x17, - 0x0a, 0x04, 0x67, 0x62, 0x70, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x05, 0x52, 0x04, - 0x67, 0x62, 0x70, 0x73, 0x88, 0x01, 0x01, 0x12, 0x23, 0x0a, 0x0a, 0x70, 0x65, 0x72, 0x63, 0x65, - 0x6e, 0x74, 0x61, 0x67, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x02, 0x48, 0x06, 0x52, 0x0a, 0x70, - 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x61, 0x67, 0x65, 0x88, 0x01, 0x01, 0x1a, 0x61, 0x0a, 0x06, - 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x22, 0x57, 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0f, - 0x0a, 0x0b, 0x75, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x10, 0x00, 0x12, - 0x07, 0x0a, 0x03, 0x70, 0x70, 0x73, 0x10, 0x01, 0x12, 0x07, 0x0a, 0x03, 0x62, 0x70, 0x73, 0x10, - 0x02, 0x12, 0x08, 0x0a, 0x04, 0x6b, 0x62, 0x70, 0x73, 0x10, 0x03, 0x12, 0x08, 0x0a, 0x04, 0x6d, - 0x62, 0x70, 0x73, 0x10, 0x04, 0x12, 0x08, 0x0a, 0x04, 0x67, 0x62, 0x70, 0x73, 0x10, 0x05, 0x12, - 0x0e, 0x0a, 0x0a, 0x70, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x61, 0x67, 0x65, 0x10, 0x06, 0x42, - 0x09, 0x0a, 0x07, 0x5f, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x42, 0x06, 0x0a, 0x04, 0x5f, 0x70, - 0x70, 0x73, 0x42, 0x06, 0x0a, 0x04, 0x5f, 0x62, 0x70, 0x73, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x6b, - 0x62, 0x70, 0x73, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x6d, 0x62, 0x70, 0x73, 0x42, 0x07, 0x0a, 0x05, - 0x5f, 0x67, 0x62, 0x70, 0x73, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x70, 0x65, 0x72, 0x63, 0x65, 0x6e, - 0x74, 0x61, 0x67, 0x65, 0x22, 0x8c, 0x03, 0x0a, 0x0c, 0x46, 0x6c, 0x6f, 0x77, 0x44, 0x75, 0x72, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x3a, 0x0a, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1d, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x46, 0x6c, 0x6f, 0x77, - 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x2e, - 0x45, 0x6e, 0x75, 0x6d, 0x48, 0x00, 0x52, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x88, 0x01, - 0x01, 0x12, 0x3a, 0x0a, 0x0d, 0x66, 0x69, 0x78, 0x65, 0x64, 0x5f, 0x70, 0x61, 0x63, 0x6b, 0x65, - 0x74, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x46, - 0x6c, 0x6f, 0x77, 0x46, 0x69, 0x78, 0x65, 0x64, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x52, - 0x0c, 0x66, 0x69, 0x78, 0x65, 0x64, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x12, 0x3a, 0x0a, - 0x0d, 0x66, 0x69, 0x78, 0x65, 0x64, 0x5f, 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x46, 0x6c, 0x6f, 0x77, 0x46, - 0x69, 0x78, 0x65, 0x64, 0x53, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x52, 0x0c, 0x66, 0x69, 0x78, - 0x65, 0x64, 0x53, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x12, 0x24, 0x0a, 0x05, 0x62, 0x75, 0x72, - 0x73, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x46, - 0x6c, 0x6f, 0x77, 0x42, 0x75, 0x72, 0x73, 0x74, 0x52, 0x05, 0x62, 0x75, 0x72, 0x73, 0x74, 0x12, - 0x33, 0x0a, 0x0a, 0x63, 0x6f, 0x6e, 0x74, 0x69, 0x6e, 0x75, 0x6f, 0x75, 0x73, 0x18, 0x05, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x46, 0x6c, 0x6f, 0x77, 0x43, 0x6f, - 0x6e, 0x74, 0x69, 0x6e, 0x75, 0x6f, 0x75, 0x73, 0x52, 0x0a, 0x63, 0x6f, 0x6e, 0x74, 0x69, 0x6e, - 0x75, 0x6f, 0x75, 0x73, 0x1a, 0x62, 0x0a, 0x06, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x22, 0x58, + 0x0a, 0x04, 0x69, 0x70, 0x76, 0x34, 0x10, 0x01, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x63, 0x68, 0x6f, + 0x69, 0x63, 0x65, 0x22, 0x92, 0x02, 0x0a, 0x17, 0x46, 0x6c, 0x6f, 0x77, 0x52, 0x53, 0x56, 0x50, + 0x50, 0x61, 0x74, 0x68, 0x52, 0x73, 0x76, 0x70, 0x48, 0x6f, 0x70, 0x49, 0x70, 0x76, 0x34, 0x12, + 0x81, 0x01, 0x0a, 0x1e, 0x69, 0x70, 0x76, 0x34, 0x5f, 0x6e, 0x65, 0x78, 0x74, 0x5f, 0x70, 0x72, + 0x65, 0x76, 0x69, 0x6f, 0x75, 0x73, 0x5f, 0x68, 0x6f, 0x70, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, + 0x73, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3d, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, + 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x52, 0x53, 0x56, 0x50, 0x50, 0x61, + 0x74, 0x68, 0x52, 0x73, 0x76, 0x70, 0x48, 0x6f, 0x70, 0x49, 0x70, 0x76, 0x34, 0x49, 0x70, 0x76, + 0x34, 0x4e, 0x65, 0x78, 0x74, 0x50, 0x72, 0x65, 0x76, 0x69, 0x6f, 0x75, 0x73, 0x48, 0x6f, 0x70, + 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x52, 0x1a, 0x69, 0x70, 0x76, 0x34, 0x4e, 0x65, 0x78, + 0x74, 0x50, 0x72, 0x65, 0x76, 0x69, 0x6f, 0x75, 0x73, 0x48, 0x6f, 0x70, 0x41, 0x64, 0x64, 0x72, + 0x65, 0x73, 0x73, 0x12, 0x73, 0x0a, 0x18, 0x6c, 0x6f, 0x67, 0x69, 0x63, 0x61, 0x6c, 0x5f, 0x69, + 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x5f, 0x68, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x39, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, + 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x52, 0x53, 0x56, 0x50, 0x50, 0x61, 0x74, 0x68, 0x52, + 0x73, 0x76, 0x70, 0x48, 0x6f, 0x70, 0x49, 0x70, 0x76, 0x34, 0x4c, 0x6f, 0x67, 0x69, 0x63, 0x61, + 0x6c, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x48, 0x61, 0x6e, 0x64, 0x6c, 0x65, + 0x52, 0x16, 0x6c, 0x6f, 0x67, 0x69, 0x63, 0x61, 0x6c, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, + 0x63, 0x65, 0x48, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x22, 0x64, 0x0a, 0x22, 0x46, 0x6c, 0x6f, 0x77, + 0x52, 0x53, 0x56, 0x50, 0x50, 0x61, 0x74, 0x68, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x43, + 0x6c, 0x61, 0x73, 0x73, 0x54, 0x69, 0x6d, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x12, 0x3e, + 0x0a, 0x06, 0x63, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, + 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x46, 0x6c, 0x6f, 0x77, 0x52, 0x53, 0x56, 0x50, 0x50, 0x61, 0x74, + 0x68, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x54, 0x69, 0x6d, 0x65, 0x56, 0x61, 0x6c, 0x75, + 0x65, 0x73, 0x43, 0x54, 0x79, 0x70, 0x65, 0x52, 0x05, 0x63, 0x54, 0x79, 0x70, 0x65, 0x22, 0x88, + 0x02, 0x0a, 0x22, 0x46, 0x6c, 0x6f, 0x77, 0x52, 0x53, 0x56, 0x50, 0x50, 0x61, 0x74, 0x68, 0x4f, + 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x54, 0x69, 0x6d, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, + 0x43, 0x54, 0x79, 0x70, 0x65, 0x12, 0x50, 0x0a, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x33, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x46, 0x6c, 0x6f, 0x77, + 0x52, 0x53, 0x56, 0x50, 0x50, 0x61, 0x74, 0x68, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x54, + 0x69, 0x6d, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x43, 0x54, 0x79, 0x70, 0x65, 0x2e, 0x43, + 0x68, 0x6f, 0x69, 0x63, 0x65, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x48, 0x00, 0x52, 0x06, 0x63, 0x68, + 0x6f, 0x69, 0x63, 0x65, 0x88, 0x01, 0x01, 0x12, 0x4b, 0x0a, 0x11, 0x74, 0x79, 0x70, 0x65, 0x5f, + 0x31, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x46, 0x6c, 0x6f, 0x77, 0x52, 0x53, 0x56, + 0x50, 0x50, 0x61, 0x74, 0x68, 0x54, 0x69, 0x6d, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x54, + 0x79, 0x70, 0x65, 0x31, 0x52, 0x0e, 0x74, 0x79, 0x70, 0x65, 0x31, 0x54, 0x69, 0x6d, 0x65, 0x56, + 0x61, 0x6c, 0x75, 0x65, 0x1a, 0x38, 0x0a, 0x06, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x22, 0x2e, 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x0a, 0x0b, 0x75, 0x6e, 0x73, 0x70, 0x65, 0x63, - 0x69, 0x66, 0x69, 0x65, 0x64, 0x10, 0x00, 0x12, 0x11, 0x0a, 0x0d, 0x66, 0x69, 0x78, 0x65, 0x64, - 0x5f, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x10, 0x01, 0x12, 0x11, 0x0a, 0x0d, 0x66, 0x69, - 0x78, 0x65, 0x64, 0x5f, 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x10, 0x02, 0x12, 0x09, 0x0a, - 0x05, 0x62, 0x75, 0x72, 0x73, 0x74, 0x10, 0x03, 0x12, 0x0e, 0x0a, 0x0a, 0x63, 0x6f, 0x6e, 0x74, - 0x69, 0x6e, 0x75, 0x6f, 0x75, 0x73, 0x10, 0x04, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x63, 0x68, 0x6f, - 0x69, 0x63, 0x65, 0x22, 0x55, 0x0a, 0x0e, 0x46, 0x6c, 0x6f, 0x77, 0x43, 0x6f, 0x6e, 0x74, 0x69, - 0x6e, 0x75, 0x6f, 0x75, 0x73, 0x12, 0x15, 0x0a, 0x03, 0x67, 0x61, 0x70, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x0d, 0x48, 0x00, 0x52, 0x03, 0x67, 0x61, 0x70, 0x88, 0x01, 0x01, 0x12, 0x24, 0x0a, 0x05, - 0x64, 0x65, 0x6c, 0x61, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x6f, 0x74, - 0x67, 0x2e, 0x46, 0x6c, 0x6f, 0x77, 0x44, 0x65, 0x6c, 0x61, 0x79, 0x52, 0x05, 0x64, 0x65, 0x6c, - 0x61, 0x79, 0x42, 0x06, 0x0a, 0x04, 0x5f, 0x67, 0x61, 0x70, 0x22, 0xb6, 0x02, 0x0a, 0x09, 0x46, - 0x6c, 0x6f, 0x77, 0x44, 0x65, 0x6c, 0x61, 0x79, 0x12, 0x37, 0x0a, 0x06, 0x63, 0x68, 0x6f, 0x69, - 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1a, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x46, - 0x6c, 0x6f, 0x77, 0x44, 0x65, 0x6c, 0x61, 0x79, 0x2e, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x2e, + 0x69, 0x66, 0x69, 0x65, 0x64, 0x10, 0x00, 0x12, 0x15, 0x0a, 0x11, 0x74, 0x79, 0x70, 0x65, 0x5f, + 0x31, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x10, 0x01, 0x42, 0x09, + 0x0a, 0x07, 0x5f, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x22, 0x7e, 0x0a, 0x1b, 0x46, 0x6c, 0x6f, + 0x77, 0x52, 0x53, 0x56, 0x50, 0x50, 0x61, 0x74, 0x68, 0x54, 0x69, 0x6d, 0x65, 0x56, 0x61, 0x6c, + 0x75, 0x65, 0x73, 0x54, 0x79, 0x70, 0x65, 0x31, 0x12, 0x5f, 0x0a, 0x10, 0x72, 0x65, 0x66, 0x72, + 0x65, 0x73, 0x68, 0x5f, 0x70, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x5f, 0x72, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x35, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, + 0x46, 0x6c, 0x6f, 0x77, 0x52, 0x53, 0x56, 0x50, 0x50, 0x61, 0x74, 0x68, 0x54, 0x69, 0x6d, 0x65, + 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x54, 0x79, 0x70, 0x65, 0x31, 0x52, 0x65, 0x66, 0x72, 0x65, + 0x73, 0x68, 0x50, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x52, 0x52, 0x0e, 0x72, 0x65, 0x66, 0x72, 0x65, + 0x73, 0x68, 0x50, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x52, 0x22, 0x6f, 0x0a, 0x25, 0x46, 0x6c, 0x6f, + 0x77, 0x52, 0x53, 0x56, 0x50, 0x50, 0x61, 0x74, 0x68, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, + 0x43, 0x6c, 0x61, 0x73, 0x73, 0x45, 0x78, 0x70, 0x6c, 0x69, 0x63, 0x69, 0x74, 0x52, 0x6f, 0x75, + 0x74, 0x65, 0x12, 0x46, 0x0a, 0x06, 0x63, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x46, 0x6c, 0x6f, 0x77, 0x52, 0x53, 0x56, + 0x50, 0x50, 0x61, 0x74, 0x68, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x43, 0x6c, 0x61, 0x73, + 0x73, 0x45, 0x78, 0x70, 0x6c, 0x69, 0x63, 0x69, 0x74, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x43, 0x54, + 0x79, 0x70, 0x65, 0x52, 0x05, 0x63, 0x54, 0x79, 0x70, 0x65, 0x22, 0xa7, 0x02, 0x0a, 0x2a, 0x46, + 0x6c, 0x6f, 0x77, 0x52, 0x53, 0x56, 0x50, 0x50, 0x61, 0x74, 0x68, 0x4f, 0x62, 0x6a, 0x65, 0x63, + 0x74, 0x73, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x45, 0x78, 0x70, 0x6c, 0x69, 0x63, 0x69, 0x74, 0x52, + 0x6f, 0x75, 0x74, 0x65, 0x43, 0x54, 0x79, 0x70, 0x65, 0x12, 0x58, 0x0a, 0x06, 0x63, 0x68, 0x6f, + 0x69, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x3b, 0x2e, 0x6f, 0x74, 0x67, 0x2e, + 0x46, 0x6c, 0x6f, 0x77, 0x52, 0x53, 0x56, 0x50, 0x50, 0x61, 0x74, 0x68, 0x4f, 0x62, 0x6a, 0x65, + 0x63, 0x74, 0x73, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x45, 0x78, 0x70, 0x6c, 0x69, 0x63, 0x69, 0x74, + 0x52, 0x6f, 0x75, 0x74, 0x65, 0x43, 0x54, 0x79, 0x70, 0x65, 0x2e, 0x43, 0x68, 0x6f, 0x69, 0x63, + 0x65, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x48, 0x00, 0x52, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, + 0x88, 0x01, 0x01, 0x12, 0x56, 0x0a, 0x15, 0x74, 0x79, 0x70, 0x65, 0x5f, 0x31, 0x5f, 0x65, 0x78, + 0x70, 0x6c, 0x69, 0x63, 0x69, 0x74, 0x5f, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x46, 0x6c, 0x6f, 0x77, 0x52, 0x53, 0x56, + 0x50, 0x50, 0x61, 0x74, 0x68, 0x45, 0x78, 0x70, 0x6c, 0x69, 0x63, 0x69, 0x74, 0x52, 0x6f, 0x75, + 0x74, 0x65, 0x54, 0x79, 0x70, 0x65, 0x31, 0x52, 0x12, 0x74, 0x79, 0x70, 0x65, 0x31, 0x45, 0x78, + 0x70, 0x6c, 0x69, 0x63, 0x69, 0x74, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x1a, 0x3c, 0x0a, 0x06, 0x43, + 0x68, 0x6f, 0x69, 0x63, 0x65, 0x22, 0x32, 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x0a, + 0x0b, 0x75, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x10, 0x00, 0x12, 0x19, + 0x0a, 0x15, 0x74, 0x79, 0x70, 0x65, 0x5f, 0x31, 0x5f, 0x65, 0x78, 0x70, 0x6c, 0x69, 0x63, 0x69, + 0x74, 0x5f, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x10, 0x01, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x63, 0x68, + 0x6f, 0x69, 0x63, 0x65, 0x22, 0x6b, 0x0a, 0x1e, 0x46, 0x6c, 0x6f, 0x77, 0x52, 0x53, 0x56, 0x50, + 0x50, 0x61, 0x74, 0x68, 0x45, 0x78, 0x70, 0x6c, 0x69, 0x63, 0x69, 0x74, 0x52, 0x6f, 0x75, 0x74, + 0x65, 0x54, 0x79, 0x70, 0x65, 0x31, 0x12, 0x49, 0x0a, 0x0a, 0x73, 0x75, 0x62, 0x6f, 0x62, 0x6a, + 0x65, 0x63, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x6f, 0x74, 0x67, + 0x2e, 0x46, 0x6c, 0x6f, 0x77, 0x52, 0x53, 0x56, 0x50, 0x54, 0x79, 0x70, 0x65, 0x31, 0x45, 0x78, + 0x70, 0x6c, 0x69, 0x63, 0x69, 0x74, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x53, 0x75, 0x62, 0x6f, 0x62, + 0x6a, 0x65, 0x63, 0x74, 0x73, 0x52, 0x0a, 0x73, 0x75, 0x62, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, + 0x73, 0x22, 0x69, 0x0a, 0x24, 0x46, 0x6c, 0x6f, 0x77, 0x52, 0x53, 0x56, 0x50, 0x54, 0x79, 0x70, + 0x65, 0x31, 0x45, 0x78, 0x70, 0x6c, 0x69, 0x63, 0x69, 0x74, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x53, + 0x75, 0x62, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x12, 0x41, 0x0a, 0x04, 0x74, 0x79, 0x70, + 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x46, 0x6c, + 0x6f, 0x77, 0x52, 0x53, 0x56, 0x50, 0x54, 0x79, 0x70, 0x65, 0x31, 0x45, 0x78, 0x70, 0x6c, 0x69, + 0x63, 0x69, 0x74, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x53, 0x75, 0x62, 0x6f, 0x62, 0x6a, 0x65, 0x63, + 0x74, 0x73, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x22, 0x8e, 0x03, 0x0a, + 0x28, 0x46, 0x6c, 0x6f, 0x77, 0x52, 0x53, 0x56, 0x50, 0x54, 0x79, 0x70, 0x65, 0x31, 0x45, 0x78, + 0x70, 0x6c, 0x69, 0x63, 0x69, 0x74, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x53, 0x75, 0x62, 0x6f, 0x62, + 0x6a, 0x65, 0x63, 0x74, 0x73, 0x54, 0x79, 0x70, 0x65, 0x12, 0x56, 0x0a, 0x06, 0x63, 0x68, 0x6f, + 0x69, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x39, 0x2e, 0x6f, 0x74, 0x67, 0x2e, + 0x46, 0x6c, 0x6f, 0x77, 0x52, 0x53, 0x56, 0x50, 0x54, 0x79, 0x70, 0x65, 0x31, 0x45, 0x78, 0x70, + 0x6c, 0x69, 0x63, 0x69, 0x74, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x53, 0x75, 0x62, 0x6f, 0x62, 0x6a, + 0x65, 0x63, 0x74, 0x73, 0x54, 0x79, 0x70, 0x65, 0x2e, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x48, 0x00, 0x52, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x88, 0x01, - 0x01, 0x12, 0x19, 0x0a, 0x05, 0x62, 0x79, 0x74, 0x65, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x02, - 0x48, 0x01, 0x52, 0x05, 0x62, 0x79, 0x74, 0x65, 0x73, 0x88, 0x01, 0x01, 0x12, 0x25, 0x0a, 0x0b, - 0x6e, 0x61, 0x6e, 0x6f, 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x02, 0x48, 0x02, 0x52, 0x0b, 0x6e, 0x61, 0x6e, 0x6f, 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, - 0x88, 0x01, 0x01, 0x12, 0x27, 0x0a, 0x0c, 0x6d, 0x69, 0x63, 0x72, 0x6f, 0x73, 0x65, 0x63, 0x6f, - 0x6e, 0x64, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x02, 0x48, 0x03, 0x52, 0x0c, 0x6d, 0x69, 0x63, - 0x72, 0x6f, 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x88, 0x01, 0x01, 0x1a, 0x4f, 0x0a, 0x06, - 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x22, 0x45, 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0f, - 0x0a, 0x0b, 0x75, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x10, 0x00, 0x12, - 0x09, 0x0a, 0x05, 0x62, 0x79, 0x74, 0x65, 0x73, 0x10, 0x01, 0x12, 0x0f, 0x0a, 0x0b, 0x6e, 0x61, - 0x6e, 0x6f, 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x10, 0x02, 0x12, 0x10, 0x0a, 0x0c, 0x6d, - 0x69, 0x63, 0x72, 0x6f, 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x10, 0x03, 0x42, 0x09, 0x0a, - 0x07, 0x5f, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x62, 0x79, 0x74, - 0x65, 0x73, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x6e, 0x61, 0x6e, 0x6f, 0x73, 0x65, 0x63, 0x6f, 0x6e, - 0x64, 0x73, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x6d, 0x69, 0x63, 0x72, 0x6f, 0x73, 0x65, 0x63, 0x6f, - 0x6e, 0x64, 0x73, 0x22, 0x82, 0x01, 0x0a, 0x10, 0x46, 0x6c, 0x6f, 0x77, 0x46, 0x69, 0x78, 0x65, - 0x64, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x12, 0x1d, 0x0a, 0x07, 0x70, 0x61, 0x63, 0x6b, - 0x65, 0x74, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x00, 0x52, 0x07, 0x70, 0x61, 0x63, - 0x6b, 0x65, 0x74, 0x73, 0x88, 0x01, 0x01, 0x12, 0x15, 0x0a, 0x03, 0x67, 0x61, 0x70, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x03, 0x67, 0x61, 0x70, 0x88, 0x01, 0x01, 0x12, 0x24, - 0x0a, 0x05, 0x64, 0x65, 0x6c, 0x61, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, - 0x6f, 0x74, 0x67, 0x2e, 0x46, 0x6c, 0x6f, 0x77, 0x44, 0x65, 0x6c, 0x61, 0x79, 0x52, 0x05, 0x64, - 0x65, 0x6c, 0x61, 0x79, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x73, - 0x42, 0x06, 0x0a, 0x04, 0x5f, 0x67, 0x61, 0x70, 0x22, 0x82, 0x01, 0x0a, 0x10, 0x46, 0x6c, 0x6f, - 0x77, 0x46, 0x69, 0x78, 0x65, 0x64, 0x53, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x12, 0x1d, 0x0a, - 0x07, 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x02, 0x48, 0x00, - 0x52, 0x07, 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x88, 0x01, 0x01, 0x12, 0x15, 0x0a, 0x03, - 0x67, 0x61, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x03, 0x67, 0x61, 0x70, - 0x88, 0x01, 0x01, 0x12, 0x24, 0x0a, 0x05, 0x64, 0x65, 0x6c, 0x61, 0x79, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x46, 0x6c, 0x6f, 0x77, 0x44, 0x65, 0x6c, - 0x61, 0x79, 0x52, 0x05, 0x64, 0x65, 0x6c, 0x61, 0x79, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x73, 0x65, - 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x42, 0x06, 0x0a, 0x04, 0x5f, 0x67, 0x61, 0x70, 0x22, 0xc5, 0x01, - 0x0a, 0x09, 0x46, 0x6c, 0x6f, 0x77, 0x42, 0x75, 0x72, 0x73, 0x74, 0x12, 0x1b, 0x0a, 0x06, 0x62, - 0x75, 0x72, 0x73, 0x74, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x00, 0x52, 0x06, 0x62, - 0x75, 0x72, 0x73, 0x74, 0x73, 0x88, 0x01, 0x01, 0x12, 0x1d, 0x0a, 0x07, 0x70, 0x61, 0x63, 0x6b, - 0x65, 0x74, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x07, 0x70, 0x61, 0x63, - 0x6b, 0x65, 0x74, 0x73, 0x88, 0x01, 0x01, 0x12, 0x15, 0x0a, 0x03, 0x67, 0x61, 0x70, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x0d, 0x48, 0x02, 0x52, 0x03, 0x67, 0x61, 0x70, 0x88, 0x01, 0x01, 0x12, 0x46, - 0x0a, 0x0f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x5f, 0x62, 0x75, 0x72, 0x73, 0x74, 0x5f, 0x67, 0x61, - 0x70, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x46, 0x6c, - 0x6f, 0x77, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x42, - 0x75, 0x72, 0x73, 0x74, 0x47, 0x61, 0x70, 0x52, 0x0d, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x42, 0x75, - 0x72, 0x73, 0x74, 0x47, 0x61, 0x70, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x62, 0x75, 0x72, 0x73, 0x74, - 0x73, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x42, 0x06, 0x0a, - 0x04, 0x5f, 0x67, 0x61, 0x70, 0x22, 0xd6, 0x02, 0x0a, 0x19, 0x46, 0x6c, 0x6f, 0x77, 0x44, 0x75, - 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x42, 0x75, 0x72, 0x73, 0x74, - 0x47, 0x61, 0x70, 0x12, 0x47, 0x0a, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x0e, 0x32, 0x2a, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x46, 0x6c, 0x6f, 0x77, 0x44, 0x75, - 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x42, 0x75, 0x72, 0x73, 0x74, - 0x47, 0x61, 0x70, 0x2e, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x48, + 0x01, 0x12, 0x4e, 0x0a, 0x0b, 0x69, 0x70, 0x76, 0x34, 0x5f, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x46, 0x6c, 0x6f, + 0x77, 0x52, 0x53, 0x56, 0x50, 0x50, 0x61, 0x74, 0x68, 0x45, 0x78, 0x70, 0x6c, 0x69, 0x63, 0x69, + 0x74, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x54, 0x79, 0x70, 0x65, 0x31, 0x49, 0x70, 0x76, 0x34, 0x50, + 0x72, 0x65, 0x66, 0x69, 0x78, 0x52, 0x0a, 0x69, 0x70, 0x76, 0x34, 0x50, 0x72, 0x65, 0x66, 0x69, + 0x78, 0x12, 0x62, 0x0a, 0x13, 0x66, 0x6f, 0x75, 0x72, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x5f, 0x61, + 0x73, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x33, + 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x46, 0x6c, 0x6f, 0x77, 0x52, 0x53, 0x56, 0x50, 0x50, 0x61, 0x74, + 0x68, 0x45, 0x78, 0x70, 0x6c, 0x69, 0x63, 0x69, 0x74, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x54, 0x79, + 0x70, 0x65, 0x31, 0x46, 0x6f, 0x75, 0x72, 0x42, 0x79, 0x74, 0x65, 0x41, 0x53, 0x4e, 0x75, 0x6d, + 0x62, 0x65, 0x72, 0x52, 0x10, 0x66, 0x6f, 0x75, 0x72, 0x42, 0x79, 0x74, 0x65, 0x41, 0x73, 0x4e, + 0x75, 0x6d, 0x62, 0x65, 0x72, 0x1a, 0x4b, 0x0a, 0x06, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x22, + 0x41, 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x0a, 0x0b, 0x75, 0x6e, 0x73, 0x70, 0x65, + 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x10, 0x00, 0x12, 0x0f, 0x0a, 0x0b, 0x69, 0x70, 0x76, 0x34, + 0x5f, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x10, 0x01, 0x12, 0x17, 0x0a, 0x13, 0x66, 0x6f, 0x75, + 0x72, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x5f, 0x61, 0x73, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, + 0x10, 0x02, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x22, 0xbf, 0x02, + 0x0a, 0x28, 0x46, 0x6c, 0x6f, 0x77, 0x52, 0x53, 0x56, 0x50, 0x50, 0x61, 0x74, 0x68, 0x45, 0x78, + 0x70, 0x6c, 0x69, 0x63, 0x69, 0x74, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x54, 0x79, 0x70, 0x65, 0x31, + 0x49, 0x70, 0x76, 0x34, 0x50, 0x72, 0x65, 0x66, 0x69, 0x78, 0x12, 0x4d, 0x0a, 0x05, 0x6c, 0x5f, + 0x62, 0x69, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x38, 0x2e, 0x6f, 0x74, 0x67, 0x2e, + 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x52, 0x53, 0x56, 0x50, 0x50, + 0x61, 0x74, 0x68, 0x45, 0x78, 0x70, 0x6c, 0x69, 0x63, 0x69, 0x74, 0x52, 0x6f, 0x75, 0x74, 0x65, + 0x54, 0x79, 0x70, 0x65, 0x31, 0x49, 0x70, 0x76, 0x34, 0x50, 0x72, 0x65, 0x66, 0x69, 0x78, 0x4c, + 0x42, 0x69, 0x74, 0x52, 0x04, 0x6c, 0x42, 0x69, 0x74, 0x12, 0x38, 0x0a, 0x06, 0x6c, 0x65, 0x6e, + 0x67, 0x74, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x6f, 0x74, 0x67, 0x2e, + 0x46, 0x6c, 0x6f, 0x77, 0x52, 0x53, 0x56, 0x50, 0x45, 0x78, 0x70, 0x6c, 0x69, 0x63, 0x69, 0x74, + 0x52, 0x6f, 0x75, 0x74, 0x65, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x52, 0x06, 0x6c, 0x65, 0x6e, + 0x67, 0x74, 0x68, 0x12, 0x62, 0x0a, 0x0c, 0x69, 0x70, 0x76, 0x34, 0x5f, 0x61, 0x64, 0x64, 0x72, + 0x65, 0x73, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3f, 0x2e, 0x6f, 0x74, 0x67, 0x2e, + 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x52, 0x53, 0x56, 0x50, 0x50, + 0x61, 0x74, 0x68, 0x45, 0x78, 0x70, 0x6c, 0x69, 0x63, 0x69, 0x74, 0x52, 0x6f, 0x75, 0x74, 0x65, + 0x54, 0x79, 0x70, 0x65, 0x31, 0x49, 0x70, 0x76, 0x34, 0x50, 0x72, 0x65, 0x66, 0x69, 0x78, 0x49, + 0x70, 0x76, 0x34, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x52, 0x0b, 0x69, 0x70, 0x76, 0x34, + 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x1b, 0x0a, 0x06, 0x70, 0x72, 0x65, 0x66, 0x69, + 0x78, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x00, 0x52, 0x06, 0x70, 0x72, 0x65, 0x66, 0x69, + 0x78, 0x88, 0x01, 0x01, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x22, + 0xcf, 0x02, 0x0a, 0x2e, 0x46, 0x6c, 0x6f, 0x77, 0x52, 0x53, 0x56, 0x50, 0x50, 0x61, 0x74, 0x68, + 0x45, 0x78, 0x70, 0x6c, 0x69, 0x63, 0x69, 0x74, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x54, 0x79, 0x70, + 0x65, 0x31, 0x46, 0x6f, 0x75, 0x72, 0x42, 0x79, 0x74, 0x65, 0x41, 0x53, 0x4e, 0x75, 0x6d, 0x62, + 0x65, 0x72, 0x12, 0x53, 0x0a, 0x05, 0x6c, 0x5f, 0x62, 0x69, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x3e, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, + 0x6c, 0x6f, 0x77, 0x52, 0x53, 0x56, 0x50, 0x50, 0x61, 0x74, 0x68, 0x45, 0x78, 0x70, 0x6c, 0x69, + 0x63, 0x69, 0x74, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x54, 0x79, 0x70, 0x65, 0x31, 0x46, 0x6f, 0x75, + 0x72, 0x42, 0x79, 0x74, 0x65, 0x41, 0x53, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x4c, 0x42, 0x69, + 0x74, 0x52, 0x04, 0x6c, 0x42, 0x69, 0x74, 0x12, 0x38, 0x0a, 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, + 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x46, 0x6c, + 0x6f, 0x77, 0x52, 0x53, 0x56, 0x50, 0x45, 0x78, 0x70, 0x6c, 0x69, 0x63, 0x69, 0x74, 0x52, 0x6f, + 0x75, 0x74, 0x65, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x52, 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, + 0x68, 0x12, 0x5e, 0x0a, 0x08, 0x72, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x64, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x42, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, + 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x52, 0x53, 0x56, 0x50, 0x50, 0x61, 0x74, 0x68, 0x45, 0x78, 0x70, + 0x6c, 0x69, 0x63, 0x69, 0x74, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x54, 0x79, 0x70, 0x65, 0x31, 0x46, + 0x6f, 0x75, 0x72, 0x42, 0x79, 0x74, 0x65, 0x41, 0x53, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x52, + 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x64, 0x52, 0x08, 0x72, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, + 0x64, 0x12, 0x20, 0x0a, 0x09, 0x61, 0x73, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x04, + 0x20, 0x01, 0x28, 0x0d, 0x48, 0x00, 0x52, 0x08, 0x61, 0x73, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, + 0x88, 0x01, 0x01, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x61, 0x73, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, + 0x72, 0x22, 0xf2, 0x01, 0x0a, 0x1b, 0x46, 0x6c, 0x6f, 0x77, 0x52, 0x53, 0x56, 0x50, 0x45, 0x78, + 0x70, 0x6c, 0x69, 0x63, 0x69, 0x74, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x4c, 0x65, 0x6e, 0x67, 0x74, + 0x68, 0x12, 0x49, 0x0a, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x0e, 0x32, 0x2c, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x46, 0x6c, 0x6f, 0x77, 0x52, 0x53, 0x56, 0x50, + 0x45, 0x78, 0x70, 0x6c, 0x69, 0x63, 0x69, 0x74, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x4c, 0x65, 0x6e, + 0x67, 0x74, 0x68, 0x2e, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x48, + 0x00, 0x52, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x88, 0x01, 0x01, 0x12, 0x17, 0x0a, 0x04, + 0x61, 0x75, 0x74, 0x6f, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x04, 0x61, 0x75, + 0x74, 0x6f, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x0d, 0x48, 0x02, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x88, 0x01, 0x01, + 0x1a, 0x36, 0x0a, 0x06, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x22, 0x2c, 0x0a, 0x04, 0x45, 0x6e, + 0x75, 0x6d, 0x12, 0x0f, 0x0a, 0x0b, 0x75, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, + 0x64, 0x10, 0x00, 0x12, 0x08, 0x0a, 0x04, 0x61, 0x75, 0x74, 0x6f, 0x10, 0x01, 0x12, 0x09, 0x0a, + 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x10, 0x02, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x63, 0x68, 0x6f, + 0x69, 0x63, 0x65, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x61, 0x75, 0x74, 0x6f, 0x42, 0x08, 0x0a, 0x06, + 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x68, 0x0a, 0x24, 0x46, 0x6c, 0x6f, 0x77, 0x52, 0x53, + 0x56, 0x50, 0x50, 0x61, 0x74, 0x68, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x43, 0x6c, 0x61, + 0x73, 0x73, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x40, + 0x0a, 0x06, 0x63, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, + 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x46, 0x6c, 0x6f, 0x77, 0x52, 0x53, 0x56, 0x50, 0x50, 0x61, 0x74, + 0x68, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x43, 0x54, 0x79, 0x70, 0x65, 0x52, 0x05, 0x63, 0x54, 0x79, 0x70, 0x65, + 0x22, 0xa1, 0x02, 0x0a, 0x24, 0x46, 0x6c, 0x6f, 0x77, 0x52, 0x53, 0x56, 0x50, 0x50, 0x61, 0x74, + 0x68, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x43, 0x54, 0x79, 0x70, 0x65, 0x12, 0x52, 0x0a, 0x06, 0x63, 0x68, 0x6f, + 0x69, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x35, 0x2e, 0x6f, 0x74, 0x67, 0x2e, + 0x46, 0x6c, 0x6f, 0x77, 0x52, 0x53, 0x56, 0x50, 0x50, 0x61, 0x74, 0x68, 0x4f, 0x62, 0x6a, 0x65, + 0x63, 0x74, 0x73, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x43, + 0x54, 0x79, 0x70, 0x65, 0x2e, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x2e, 0x45, 0x6e, 0x75, 0x6d, + 0x48, 0x00, 0x52, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x88, 0x01, 0x01, 0x12, 0x5e, 0x0a, + 0x13, 0x77, 0x69, 0x74, 0x68, 0x6f, 0x75, 0x74, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x5f, 0x72, + 0x61, 0x6e, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x6f, 0x74, 0x67, + 0x2e, 0x46, 0x6c, 0x6f, 0x77, 0x52, 0x53, 0x56, 0x50, 0x50, 0x61, 0x74, 0x68, 0x4c, 0x61, 0x62, + 0x65, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x57, 0x69, 0x74, 0x68, 0x6f, 0x75, 0x74, + 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x52, 0x11, 0x77, 0x69, 0x74, 0x68, + 0x6f, 0x75, 0x74, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x1a, 0x3a, 0x0a, + 0x06, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x22, 0x30, 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, + 0x0f, 0x0a, 0x0b, 0x75, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x10, 0x00, + 0x12, 0x17, 0x0a, 0x13, 0x77, 0x69, 0x74, 0x68, 0x6f, 0x75, 0x74, 0x5f, 0x6c, 0x61, 0x62, 0x65, + 0x6c, 0x5f, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x10, 0x01, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x63, 0x68, + 0x6f, 0x69, 0x63, 0x65, 0x22, 0xd8, 0x01, 0x0a, 0x29, 0x46, 0x6c, 0x6f, 0x77, 0x52, 0x53, 0x56, + 0x50, 0x50, 0x61, 0x74, 0x68, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x57, 0x69, 0x74, 0x68, 0x6f, 0x75, 0x74, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x52, 0x61, 0x6e, + 0x67, 0x65, 0x12, 0x59, 0x0a, 0x08, 0x72, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x64, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3d, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, + 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x52, 0x53, 0x56, 0x50, 0x50, 0x61, 0x74, 0x68, 0x4c, 0x61, + 0x62, 0x65, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x57, 0x69, 0x74, 0x68, 0x6f, 0x75, + 0x74, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x52, 0x65, 0x73, 0x65, 0x72, + 0x76, 0x65, 0x64, 0x52, 0x08, 0x72, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x64, 0x12, 0x50, 0x0a, + 0x05, 0x6c, 0x33, 0x70, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3a, 0x2e, 0x6f, + 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x52, 0x53, + 0x56, 0x50, 0x50, 0x61, 0x74, 0x68, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x57, 0x69, 0x74, 0x68, 0x6f, 0x75, 0x74, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x52, 0x61, + 0x6e, 0x67, 0x65, 0x4c, 0x33, 0x70, 0x69, 0x64, 0x52, 0x05, 0x6c, 0x33, 0x70, 0x69, 0x64, 0x22, + 0x70, 0x0a, 0x28, 0x46, 0x6c, 0x6f, 0x77, 0x52, 0x53, 0x56, 0x50, 0x50, 0x61, 0x74, 0x68, 0x4f, + 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x53, 0x65, 0x73, 0x73, 0x69, + 0x6f, 0x6e, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x12, 0x44, 0x0a, 0x06, 0x63, + 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x6f, 0x74, + 0x67, 0x2e, 0x46, 0x6c, 0x6f, 0x77, 0x52, 0x53, 0x56, 0x50, 0x50, 0x61, 0x74, 0x68, 0x4f, 0x62, + 0x6a, 0x65, 0x63, 0x74, 0x73, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x41, 0x74, 0x74, 0x72, + 0x69, 0x62, 0x75, 0x74, 0x65, 0x43, 0x54, 0x79, 0x70, 0x65, 0x52, 0x05, 0x63, 0x54, 0x79, 0x70, + 0x65, 0x22, 0xf0, 0x02, 0x0a, 0x28, 0x46, 0x6c, 0x6f, 0x77, 0x52, 0x53, 0x56, 0x50, 0x50, 0x61, + 0x74, 0x68, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, + 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x43, 0x54, 0x79, 0x70, 0x65, 0x12, 0x56, + 0x0a, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x39, + 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x46, 0x6c, 0x6f, 0x77, 0x52, 0x53, 0x56, 0x50, 0x50, 0x61, 0x74, + 0x68, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x41, + 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x43, 0x54, 0x79, 0x70, 0x65, 0x2e, 0x43, 0x68, + 0x6f, 0x69, 0x63, 0x65, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x48, 0x00, 0x52, 0x06, 0x63, 0x68, 0x6f, + 0x69, 0x63, 0x65, 0x88, 0x01, 0x01, 0x12, 0x49, 0x0a, 0x0a, 0x6c, 0x73, 0x70, 0x5f, 0x74, 0x75, + 0x6e, 0x6e, 0x65, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x6f, 0x74, 0x67, + 0x2e, 0x46, 0x6c, 0x6f, 0x77, 0x52, 0x53, 0x56, 0x50, 0x50, 0x61, 0x74, 0x68, 0x53, 0x65, 0x73, + 0x73, 0x69, 0x6f, 0x6e, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x4c, 0x73, 0x70, + 0x54, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x52, 0x09, 0x6c, 0x73, 0x70, 0x54, 0x75, 0x6e, 0x6e, 0x65, + 0x6c, 0x12, 0x50, 0x0a, 0x0d, 0x6c, 0x73, 0x70, 0x5f, 0x74, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x5f, + 0x72, 0x61, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x46, + 0x6c, 0x6f, 0x77, 0x52, 0x53, 0x56, 0x50, 0x50, 0x61, 0x74, 0x68, 0x53, 0x65, 0x73, 0x73, 0x69, + 0x6f, 0x6e, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x4c, 0x73, 0x70, 0x54, 0x75, + 0x6e, 0x6e, 0x65, 0x6c, 0x52, 0x61, 0x52, 0x0b, 0x6c, 0x73, 0x70, 0x54, 0x75, 0x6e, 0x6e, 0x65, + 0x6c, 0x52, 0x61, 0x1a, 0x44, 0x0a, 0x06, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x22, 0x3a, 0x0a, + 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x0a, 0x0b, 0x75, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, + 0x66, 0x69, 0x65, 0x64, 0x10, 0x00, 0x12, 0x0e, 0x0a, 0x0a, 0x6c, 0x73, 0x70, 0x5f, 0x74, 0x75, + 0x6e, 0x6e, 0x65, 0x6c, 0x10, 0x01, 0x12, 0x11, 0x0a, 0x0d, 0x6c, 0x73, 0x70, 0x5f, 0x74, 0x75, + 0x6e, 0x6e, 0x65, 0x6c, 0x5f, 0x72, 0x61, 0x10, 0x02, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x63, 0x68, + 0x6f, 0x69, 0x63, 0x65, 0x22, 0xcc, 0x02, 0x0a, 0x25, 0x46, 0x6c, 0x6f, 0x77, 0x52, 0x53, 0x56, + 0x50, 0x50, 0x61, 0x74, 0x68, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x41, 0x74, 0x74, 0x72, + 0x69, 0x62, 0x75, 0x74, 0x65, 0x4c, 0x73, 0x70, 0x54, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x12, 0x2a, + 0x0a, 0x0e, 0x73, 0x65, 0x74, 0x75, 0x70, 0x5f, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x00, 0x52, 0x0d, 0x73, 0x65, 0x74, 0x75, 0x70, 0x50, + 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x88, 0x01, 0x01, 0x12, 0x2e, 0x0a, 0x10, 0x68, 0x6f, + 0x6c, 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x0f, 0x68, 0x6f, 0x6c, 0x64, 0x69, 0x6e, 0x67, 0x50, + 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x88, 0x01, 0x01, 0x12, 0x30, 0x0a, 0x05, 0x66, 0x6c, + 0x61, 0x67, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x6f, 0x74, 0x67, 0x2e, + 0x46, 0x6c, 0x6f, 0x77, 0x52, 0x53, 0x56, 0x50, 0x4c, 0x73, 0x70, 0x54, 0x75, 0x6e, 0x6e, 0x65, + 0x6c, 0x46, 0x6c, 0x61, 0x67, 0x52, 0x05, 0x66, 0x6c, 0x61, 0x67, 0x73, 0x12, 0x24, 0x0a, 0x0b, + 0x6e, 0x61, 0x6d, 0x65, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, 0x04, 0x20, 0x01, 0x28, + 0x09, 0x48, 0x02, 0x52, 0x0a, 0x6e, 0x61, 0x6d, 0x65, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x88, + 0x01, 0x01, 0x12, 0x26, 0x0a, 0x0c, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x6e, 0x61, + 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x48, 0x03, 0x52, 0x0b, 0x73, 0x65, 0x73, 0x73, + 0x69, 0x6f, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x42, 0x11, 0x0a, 0x0f, 0x5f, 0x73, + 0x65, 0x74, 0x75, 0x70, 0x5f, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x42, 0x13, 0x0a, + 0x11, 0x5f, 0x68, 0x6f, 0x6c, 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, + 0x74, 0x79, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x5f, 0x6c, 0x65, 0x6e, 0x67, + 0x74, 0x68, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x6e, + 0x61, 0x6d, 0x65, 0x22, 0xf0, 0x03, 0x0a, 0x27, 0x46, 0x6c, 0x6f, 0x77, 0x52, 0x53, 0x56, 0x50, + 0x50, 0x61, 0x74, 0x68, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x41, 0x74, 0x74, 0x72, 0x69, + 0x62, 0x75, 0x74, 0x65, 0x4c, 0x73, 0x70, 0x54, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x52, 0x61, 0x12, + 0x24, 0x0a, 0x0b, 0x65, 0x78, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x5f, 0x61, 0x6e, 0x79, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x0a, 0x65, 0x78, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x41, + 0x6e, 0x79, 0x88, 0x01, 0x01, 0x12, 0x24, 0x0a, 0x0b, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, + 0x5f, 0x61, 0x6e, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, 0x52, 0x0a, 0x69, 0x6e, + 0x63, 0x6c, 0x75, 0x64, 0x65, 0x41, 0x6e, 0x79, 0x88, 0x01, 0x01, 0x12, 0x24, 0x0a, 0x0b, 0x69, + 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x5f, 0x61, 0x6c, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, + 0x48, 0x02, 0x52, 0x0a, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x41, 0x6c, 0x6c, 0x88, 0x01, + 0x01, 0x12, 0x2a, 0x0a, 0x0e, 0x73, 0x65, 0x74, 0x75, 0x70, 0x5f, 0x70, 0x72, 0x69, 0x6f, 0x72, + 0x69, 0x74, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x03, 0x52, 0x0d, 0x73, 0x65, 0x74, + 0x75, 0x70, 0x50, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x88, 0x01, 0x01, 0x12, 0x2e, 0x0a, + 0x10, 0x68, 0x6f, 0x6c, 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, + 0x79, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x04, 0x52, 0x0f, 0x68, 0x6f, 0x6c, 0x64, 0x69, + 0x6e, 0x67, 0x50, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x88, 0x01, 0x01, 0x12, 0x30, 0x0a, + 0x05, 0x66, 0x6c, 0x61, 0x67, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x6f, + 0x74, 0x67, 0x2e, 0x46, 0x6c, 0x6f, 0x77, 0x52, 0x53, 0x56, 0x50, 0x4c, 0x73, 0x70, 0x54, 0x75, + 0x6e, 0x6e, 0x65, 0x6c, 0x46, 0x6c, 0x61, 0x67, 0x52, 0x05, 0x66, 0x6c, 0x61, 0x67, 0x73, 0x12, + 0x24, 0x0a, 0x0b, 0x6e, 0x61, 0x6d, 0x65, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, 0x07, + 0x20, 0x01, 0x28, 0x09, 0x48, 0x05, 0x52, 0x0a, 0x6e, 0x61, 0x6d, 0x65, 0x4c, 0x65, 0x6e, 0x67, + 0x74, 0x68, 0x88, 0x01, 0x01, 0x12, 0x26, 0x0a, 0x0c, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, + 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x48, 0x06, 0x52, 0x0b, 0x73, + 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x42, 0x0e, 0x0a, + 0x0c, 0x5f, 0x65, 0x78, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x5f, 0x61, 0x6e, 0x79, 0x42, 0x0e, 0x0a, + 0x0c, 0x5f, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x5f, 0x61, 0x6e, 0x79, 0x42, 0x0e, 0x0a, + 0x0c, 0x5f, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x5f, 0x61, 0x6c, 0x6c, 0x42, 0x11, 0x0a, + 0x0f, 0x5f, 0x73, 0x65, 0x74, 0x75, 0x70, 0x5f, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, + 0x42, 0x13, 0x0a, 0x11, 0x5f, 0x68, 0x6f, 0x6c, 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x70, 0x72, 0x69, + 0x6f, 0x72, 0x69, 0x74, 0x79, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x5f, 0x6c, + 0x65, 0x6e, 0x67, 0x74, 0x68, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, + 0x6e, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0xdb, 0x01, 0x0a, 0x15, 0x46, 0x6c, 0x6f, 0x77, 0x52, + 0x53, 0x56, 0x50, 0x4c, 0x73, 0x70, 0x54, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x46, 0x6c, 0x61, 0x67, + 0x12, 0x43, 0x0a, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, + 0x32, 0x26, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x46, 0x6c, 0x6f, 0x77, 0x52, 0x53, 0x56, 0x50, 0x4c, + 0x73, 0x70, 0x54, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x46, 0x6c, 0x61, 0x67, 0x2e, 0x43, 0x68, 0x6f, + 0x69, 0x63, 0x65, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x48, 0x00, 0x52, 0x06, 0x63, 0x68, 0x6f, 0x69, + 0x63, 0x65, 0x88, 0x01, 0x01, 0x1a, 0x72, 0x0a, 0x06, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x22, + 0x68, 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x0a, 0x0b, 0x75, 0x6e, 0x73, 0x70, 0x65, + 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x10, 0x00, 0x12, 0x1c, 0x0a, 0x18, 0x6c, 0x6f, 0x63, 0x61, + 0x6c, 0x5f, 0x70, 0x72, 0x6f, 0x74, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x64, 0x65, 0x73, + 0x69, 0x72, 0x65, 0x64, 0x10, 0x01, 0x12, 0x1b, 0x0a, 0x17, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x5f, + 0x72, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x64, 0x65, 0x73, 0x69, 0x72, 0x65, + 0x64, 0x10, 0x02, 0x12, 0x14, 0x0a, 0x10, 0x73, 0x65, 0x5f, 0x73, 0x74, 0x79, 0x6c, 0x65, 0x5f, + 0x64, 0x65, 0x73, 0x69, 0x72, 0x65, 0x64, 0x10, 0x03, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x63, 0x68, + 0x6f, 0x69, 0x63, 0x65, 0x22, 0x6c, 0x0a, 0x26, 0x46, 0x6c, 0x6f, 0x77, 0x52, 0x53, 0x56, 0x50, + 0x50, 0x61, 0x74, 0x68, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x43, 0x6c, 0x61, 0x73, 0x73, + 0x53, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x12, 0x42, + 0x0a, 0x06, 0x63, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, + 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x46, 0x6c, 0x6f, 0x77, 0x52, 0x53, 0x56, 0x50, 0x50, 0x61, 0x74, + 0x68, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x53, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x54, 0x65, + 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x43, 0x54, 0x79, 0x70, 0x65, 0x52, 0x05, 0x63, 0x54, 0x79, + 0x70, 0x65, 0x22, 0x97, 0x02, 0x0a, 0x26, 0x46, 0x6c, 0x6f, 0x77, 0x52, 0x53, 0x56, 0x50, 0x50, + 0x61, 0x74, 0x68, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x53, 0x65, 0x6e, 0x64, 0x65, 0x72, + 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x43, 0x54, 0x79, 0x70, 0x65, 0x12, 0x54, 0x0a, + 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x37, 0x2e, + 0x6f, 0x74, 0x67, 0x2e, 0x46, 0x6c, 0x6f, 0x77, 0x52, 0x53, 0x56, 0x50, 0x50, 0x61, 0x74, 0x68, + 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x53, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x54, 0x65, 0x6d, + 0x70, 0x6c, 0x61, 0x74, 0x65, 0x43, 0x54, 0x79, 0x70, 0x65, 0x2e, 0x43, 0x68, 0x6f, 0x69, 0x63, + 0x65, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x48, 0x00, 0x52, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, + 0x88, 0x01, 0x01, 0x12, 0x54, 0x0a, 0x0f, 0x6c, 0x73, 0x70, 0x5f, 0x74, 0x75, 0x6e, 0x6e, 0x65, + 0x6c, 0x5f, 0x69, 0x70, 0x76, 0x34, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x6f, + 0x74, 0x67, 0x2e, 0x46, 0x6c, 0x6f, 0x77, 0x52, 0x53, 0x56, 0x50, 0x50, 0x61, 0x74, 0x68, 0x53, + 0x65, 0x6e, 0x64, 0x65, 0x72, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x4c, 0x73, 0x70, + 0x54, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x49, 0x70, 0x76, 0x34, 0x52, 0x0d, 0x6c, 0x73, 0x70, 0x54, + 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x49, 0x70, 0x76, 0x34, 0x1a, 0x36, 0x0a, 0x06, 0x43, 0x68, 0x6f, + 0x69, 0x63, 0x65, 0x22, 0x2c, 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x0a, 0x0b, 0x75, + 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x10, 0x00, 0x12, 0x13, 0x0a, 0x0f, + 0x6c, 0x73, 0x70, 0x5f, 0x74, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x5f, 0x69, 0x70, 0x76, 0x34, 0x10, + 0x01, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x22, 0xdd, 0x02, 0x0a, + 0x27, 0x46, 0x6c, 0x6f, 0x77, 0x52, 0x53, 0x56, 0x50, 0x50, 0x61, 0x74, 0x68, 0x53, 0x65, 0x6e, + 0x64, 0x65, 0x72, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x4c, 0x73, 0x70, 0x54, 0x75, + 0x6e, 0x6e, 0x65, 0x6c, 0x49, 0x70, 0x76, 0x34, 0x12, 0x87, 0x01, 0x0a, 0x1a, 0x69, 0x70, 0x76, + 0x34, 0x5f, 0x74, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x5f, 0x73, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x5f, + 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x4a, 0x2e, + 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x52, + 0x53, 0x56, 0x50, 0x50, 0x61, 0x74, 0x68, 0x53, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x54, 0x65, 0x6d, + 0x70, 0x6c, 0x61, 0x74, 0x65, 0x4c, 0x73, 0x70, 0x54, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x49, 0x70, + 0x76, 0x34, 0x49, 0x70, 0x76, 0x34, 0x54, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x53, 0x65, 0x6e, 0x64, + 0x65, 0x72, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x52, 0x17, 0x69, 0x70, 0x76, 0x34, 0x54, + 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x53, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x41, 0x64, 0x64, 0x72, 0x65, + 0x73, 0x73, 0x12, 0x57, 0x0a, 0x08, 0x72, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x64, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3b, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, + 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x52, 0x53, 0x56, 0x50, 0x50, 0x61, 0x74, 0x68, 0x53, 0x65, + 0x6e, 0x64, 0x65, 0x72, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x4c, 0x73, 0x70, 0x54, + 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x49, 0x70, 0x76, 0x34, 0x52, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, + 0x64, 0x52, 0x08, 0x72, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x64, 0x12, 0x4f, 0x0a, 0x06, 0x6c, + 0x73, 0x70, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x38, 0x2e, 0x6f, 0x74, + 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x52, 0x53, 0x56, + 0x50, 0x50, 0x61, 0x74, 0x68, 0x53, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x54, 0x65, 0x6d, 0x70, 0x6c, + 0x61, 0x74, 0x65, 0x4c, 0x73, 0x70, 0x54, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x49, 0x70, 0x76, 0x34, + 0x4c, 0x73, 0x70, 0x49, 0x64, 0x52, 0x05, 0x6c, 0x73, 0x70, 0x49, 0x64, 0x22, 0x66, 0x0a, 0x23, + 0x46, 0x6c, 0x6f, 0x77, 0x52, 0x53, 0x56, 0x50, 0x50, 0x61, 0x74, 0x68, 0x4f, 0x62, 0x6a, 0x65, + 0x63, 0x74, 0x73, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x53, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x54, 0x73, + 0x70, 0x65, 0x63, 0x12, 0x3f, 0x0a, 0x06, 0x63, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x46, 0x6c, 0x6f, 0x77, 0x52, 0x53, + 0x56, 0x50, 0x50, 0x61, 0x74, 0x68, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x53, 0x65, 0x6e, + 0x64, 0x65, 0x72, 0x54, 0x73, 0x70, 0x65, 0x63, 0x43, 0x54, 0x79, 0x70, 0x65, 0x52, 0x05, 0x63, + 0x54, 0x79, 0x70, 0x65, 0x22, 0xf4, 0x01, 0x0a, 0x23, 0x46, 0x6c, 0x6f, 0x77, 0x52, 0x53, 0x56, + 0x50, 0x50, 0x61, 0x74, 0x68, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x53, 0x65, 0x6e, 0x64, + 0x65, 0x72, 0x54, 0x73, 0x70, 0x65, 0x63, 0x43, 0x54, 0x79, 0x70, 0x65, 0x12, 0x51, 0x0a, 0x06, + 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x34, 0x2e, 0x6f, + 0x74, 0x67, 0x2e, 0x46, 0x6c, 0x6f, 0x77, 0x52, 0x53, 0x56, 0x50, 0x50, 0x61, 0x74, 0x68, 0x4f, + 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x53, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x54, 0x73, 0x70, 0x65, + 0x63, 0x43, 0x54, 0x79, 0x70, 0x65, 0x2e, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x2e, 0x45, 0x6e, + 0x75, 0x6d, 0x48, 0x00, 0x52, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x88, 0x01, 0x01, 0x12, + 0x3e, 0x0a, 0x08, 0x69, 0x6e, 0x74, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x23, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x46, 0x6c, 0x6f, 0x77, 0x52, 0x53, 0x56, 0x50, + 0x50, 0x61, 0x74, 0x68, 0x53, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x54, 0x73, 0x70, 0x65, 0x63, 0x49, + 0x6e, 0x74, 0x53, 0x65, 0x72, 0x76, 0x52, 0x07, 0x69, 0x6e, 0x74, 0x53, 0x65, 0x72, 0x76, 0x1a, + 0x2f, 0x0a, 0x06, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x22, 0x25, 0x0a, 0x04, 0x45, 0x6e, 0x75, + 0x6d, 0x12, 0x0f, 0x0a, 0x0b, 0x75, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, + 0x10, 0x00, 0x12, 0x0c, 0x0a, 0x08, 0x69, 0x6e, 0x74, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x10, 0x01, + 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x22, 0xa6, 0x0b, 0x0a, 0x1e, + 0x46, 0x6c, 0x6f, 0x77, 0x52, 0x53, 0x56, 0x50, 0x50, 0x61, 0x74, 0x68, 0x53, 0x65, 0x6e, 0x64, + 0x65, 0x72, 0x54, 0x73, 0x70, 0x65, 0x63, 0x49, 0x6e, 0x74, 0x53, 0x65, 0x72, 0x76, 0x12, 0x4b, + 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x31, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, + 0x77, 0x52, 0x53, 0x56, 0x50, 0x50, 0x61, 0x74, 0x68, 0x53, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x54, + 0x73, 0x70, 0x65, 0x63, 0x49, 0x6e, 0x74, 0x53, 0x65, 0x72, 0x76, 0x56, 0x65, 0x72, 0x73, 0x69, + 0x6f, 0x6e, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x51, 0x0a, 0x09, 0x72, + 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x64, 0x31, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x33, + 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, + 0x52, 0x53, 0x56, 0x50, 0x50, 0x61, 0x74, 0x68, 0x53, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x54, 0x73, + 0x70, 0x65, 0x63, 0x49, 0x6e, 0x74, 0x53, 0x65, 0x72, 0x76, 0x52, 0x65, 0x73, 0x65, 0x72, 0x76, + 0x65, 0x64, 0x31, 0x52, 0x09, 0x72, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x64, 0x31, 0x12, 0x5e, + 0x0a, 0x0e, 0x6f, 0x76, 0x65, 0x72, 0x61, 0x6c, 0x6c, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x37, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, + 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x52, 0x53, 0x56, 0x50, 0x50, 0x61, 0x74, 0x68, + 0x53, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x54, 0x73, 0x70, 0x65, 0x63, 0x49, 0x6e, 0x74, 0x53, 0x65, + 0x72, 0x76, 0x4f, 0x76, 0x65, 0x72, 0x61, 0x6c, 0x6c, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x52, + 0x0d, 0x6f, 0x76, 0x65, 0x72, 0x61, 0x6c, 0x6c, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x12, 0x5e, + 0x0a, 0x0e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, + 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x37, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, + 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x52, 0x53, 0x56, 0x50, 0x50, 0x61, 0x74, 0x68, + 0x53, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x54, 0x73, 0x70, 0x65, 0x63, 0x49, 0x6e, 0x74, 0x53, 0x65, + 0x72, 0x76, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x52, + 0x0d, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x12, 0x4c, + 0x0a, 0x08, 0x7a, 0x65, 0x72, 0x6f, 0x5f, 0x62, 0x69, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x31, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, + 0x6f, 0x77, 0x52, 0x53, 0x56, 0x50, 0x50, 0x61, 0x74, 0x68, 0x53, 0x65, 0x6e, 0x64, 0x65, 0x72, + 0x54, 0x73, 0x70, 0x65, 0x63, 0x49, 0x6e, 0x74, 0x53, 0x65, 0x72, 0x76, 0x5a, 0x65, 0x72, 0x6f, + 0x42, 0x69, 0x74, 0x52, 0x07, 0x7a, 0x65, 0x72, 0x6f, 0x42, 0x69, 0x74, 0x12, 0x51, 0x0a, 0x09, + 0x72, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x64, 0x32, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x33, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, + 0x77, 0x52, 0x53, 0x56, 0x50, 0x50, 0x61, 0x74, 0x68, 0x53, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x54, + 0x73, 0x70, 0x65, 0x63, 0x49, 0x6e, 0x74, 0x53, 0x65, 0x72, 0x76, 0x52, 0x65, 0x73, 0x65, 0x72, + 0x76, 0x65, 0x64, 0x32, 0x52, 0x09, 0x72, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x64, 0x32, 0x12, + 0x72, 0x0a, 0x16, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x5f, 0x6f, 0x66, 0x5f, 0x73, 0x65, 0x72, + 0x76, 0x69, 0x63, 0x65, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x3d, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, + 0x77, 0x52, 0x53, 0x56, 0x50, 0x50, 0x61, 0x74, 0x68, 0x53, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x54, + 0x73, 0x70, 0x65, 0x63, 0x49, 0x6e, 0x74, 0x53, 0x65, 0x72, 0x76, 0x4c, 0x65, 0x6e, 0x67, 0x74, + 0x68, 0x4f, 0x66, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x44, 0x61, 0x74, 0x61, 0x52, 0x13, + 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x4f, 0x66, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x44, + 0x61, 0x74, 0x61, 0x12, 0x8b, 0x01, 0x0a, 0x1f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, + 0x72, 0x5f, 0x69, 0x64, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x5f, 0x62, 0x75, 0x63, 0x6b, 0x65, + 0x74, 0x5f, 0x74, 0x73, 0x70, 0x65, 0x63, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x45, 0x2e, + 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x52, + 0x53, 0x56, 0x50, 0x50, 0x61, 0x74, 0x68, 0x53, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x54, 0x73, 0x70, + 0x65, 0x63, 0x49, 0x6e, 0x74, 0x53, 0x65, 0x72, 0x76, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, + 0x65, 0x72, 0x49, 0x64, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x54, + 0x73, 0x70, 0x65, 0x63, 0x52, 0x1b, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x49, + 0x64, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x54, 0x73, 0x70, 0x65, + 0x63, 0x12, 0x68, 0x0a, 0x12, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x5f, 0x31, + 0x32, 0x37, 0x5f, 0x66, 0x6c, 0x61, 0x67, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3a, 0x2e, + 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x52, + 0x53, 0x56, 0x50, 0x50, 0x61, 0x74, 0x68, 0x53, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x54, 0x73, 0x70, + 0x65, 0x63, 0x49, 0x6e, 0x74, 0x53, 0x65, 0x72, 0x76, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, + 0x65, 0x72, 0x31, 0x32, 0x37, 0x46, 0x6c, 0x61, 0x67, 0x52, 0x10, 0x70, 0x61, 0x72, 0x61, 0x6d, + 0x65, 0x74, 0x65, 0x72, 0x31, 0x32, 0x37, 0x46, 0x6c, 0x61, 0x67, 0x12, 0x6e, 0x0a, 0x14, 0x70, + 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x5f, 0x31, 0x32, 0x37, 0x5f, 0x6c, 0x65, 0x6e, + 0x67, 0x74, 0x68, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3c, 0x2e, 0x6f, 0x74, 0x67, 0x2e, + 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x52, 0x53, 0x56, 0x50, 0x50, + 0x61, 0x74, 0x68, 0x53, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x54, 0x73, 0x70, 0x65, 0x63, 0x49, 0x6e, + 0x74, 0x53, 0x65, 0x72, 0x76, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x31, 0x32, + 0x37, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x52, 0x12, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, + 0x65, 0x72, 0x31, 0x32, 0x37, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x12, 0x2f, 0x0a, 0x11, 0x74, + 0x6f, 0x6b, 0x65, 0x6e, 0x5f, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x72, 0x61, 0x74, 0x65, + 0x18, 0x0b, 0x20, 0x01, 0x28, 0x02, 0x48, 0x00, 0x52, 0x0f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x42, + 0x75, 0x63, 0x6b, 0x65, 0x74, 0x52, 0x61, 0x74, 0x65, 0x88, 0x01, 0x01, 0x12, 0x2f, 0x0a, 0x11, + 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x5f, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x73, 0x69, 0x7a, + 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x02, 0x48, 0x01, 0x52, 0x0f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, + 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x53, 0x69, 0x7a, 0x65, 0x88, 0x01, 0x01, 0x12, 0x29, 0x0a, + 0x0e, 0x70, 0x65, 0x61, 0x6b, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x72, 0x61, 0x74, 0x65, 0x18, + 0x0d, 0x20, 0x01, 0x28, 0x02, 0x48, 0x02, 0x52, 0x0c, 0x70, 0x65, 0x61, 0x6b, 0x44, 0x61, 0x74, + 0x61, 0x52, 0x61, 0x74, 0x65, 0x88, 0x01, 0x01, 0x12, 0x6e, 0x0a, 0x14, 0x6d, 0x69, 0x6e, 0x69, + 0x6d, 0x75, 0x6d, 0x5f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x65, 0x64, 0x5f, 0x75, 0x6e, 0x69, 0x74, + 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3c, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, + 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x52, 0x53, 0x56, 0x50, 0x50, 0x61, 0x74, 0x68, + 0x53, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x54, 0x73, 0x70, 0x65, 0x63, 0x49, 0x6e, 0x74, 0x53, 0x65, + 0x72, 0x76, 0x4d, 0x69, 0x6e, 0x69, 0x6d, 0x75, 0x6d, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x65, 0x64, + 0x55, 0x6e, 0x69, 0x74, 0x52, 0x12, 0x6d, 0x69, 0x6e, 0x69, 0x6d, 0x75, 0x6d, 0x50, 0x6f, 0x6c, + 0x69, 0x63, 0x65, 0x64, 0x55, 0x6e, 0x69, 0x74, 0x12, 0x6b, 0x0a, 0x13, 0x6d, 0x61, 0x78, 0x69, + 0x6d, 0x75, 0x6d, 0x5f, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, + 0x0f, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3b, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, + 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x52, 0x53, 0x56, 0x50, 0x50, 0x61, 0x74, 0x68, 0x53, + 0x65, 0x6e, 0x64, 0x65, 0x72, 0x54, 0x73, 0x70, 0x65, 0x63, 0x49, 0x6e, 0x74, 0x53, 0x65, 0x72, + 0x76, 0x4d, 0x61, 0x78, 0x69, 0x6d, 0x75, 0x6d, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x53, 0x69, + 0x7a, 0x65, 0x52, 0x11, 0x6d, 0x61, 0x78, 0x69, 0x6d, 0x75, 0x6d, 0x50, 0x61, 0x63, 0x6b, 0x65, + 0x74, 0x53, 0x69, 0x7a, 0x65, 0x42, 0x14, 0x0a, 0x12, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x5f, + 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x72, 0x61, 0x74, 0x65, 0x42, 0x14, 0x0a, 0x12, 0x5f, + 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x5f, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x73, 0x69, 0x7a, + 0x65, 0x42, 0x11, 0x0a, 0x0f, 0x5f, 0x70, 0x65, 0x61, 0x6b, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x5f, + 0x72, 0x61, 0x74, 0x65, 0x22, 0x66, 0x0a, 0x23, 0x46, 0x6c, 0x6f, 0x77, 0x52, 0x53, 0x56, 0x50, + 0x50, 0x61, 0x74, 0x68, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x43, 0x6c, 0x61, 0x73, 0x73, + 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x12, 0x3f, 0x0a, 0x06, 0x63, + 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x6f, 0x74, + 0x67, 0x2e, 0x46, 0x6c, 0x6f, 0x77, 0x52, 0x53, 0x56, 0x50, 0x50, 0x61, 0x74, 0x68, 0x4f, 0x62, + 0x6a, 0x65, 0x63, 0x74, 0x73, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x52, 0x6f, 0x75, 0x74, 0x65, + 0x43, 0x54, 0x79, 0x70, 0x65, 0x52, 0x05, 0x63, 0x54, 0x79, 0x70, 0x65, 0x22, 0x91, 0x02, 0x0a, + 0x23, 0x46, 0x6c, 0x6f, 0x77, 0x52, 0x53, 0x56, 0x50, 0x50, 0x61, 0x74, 0x68, 0x4f, 0x62, 0x6a, + 0x65, 0x63, 0x74, 0x73, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x43, + 0x54, 0x79, 0x70, 0x65, 0x12, 0x51, 0x0a, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x0e, 0x32, 0x34, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x46, 0x6c, 0x6f, 0x77, 0x52, + 0x53, 0x56, 0x50, 0x50, 0x61, 0x74, 0x68, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x52, 0x65, + 0x63, 0x6f, 0x72, 0x64, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x43, 0x54, 0x79, 0x70, 0x65, 0x2e, 0x43, + 0x68, 0x6f, 0x69, 0x63, 0x65, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x48, 0x00, 0x52, 0x06, 0x63, 0x68, + 0x6f, 0x69, 0x63, 0x65, 0x88, 0x01, 0x01, 0x12, 0x50, 0x0a, 0x13, 0x74, 0x79, 0x70, 0x65, 0x5f, + 0x31, 0x5f, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x5f, 0x72, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x46, 0x6c, 0x6f, 0x77, 0x52, + 0x53, 0x56, 0x50, 0x50, 0x61, 0x74, 0x68, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x52, 0x6f, 0x75, + 0x74, 0x65, 0x54, 0x79, 0x70, 0x65, 0x31, 0x52, 0x10, 0x74, 0x79, 0x70, 0x65, 0x31, 0x52, 0x6f, + 0x75, 0x74, 0x65, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x1a, 0x3a, 0x0a, 0x06, 0x43, 0x68, 0x6f, + 0x69, 0x63, 0x65, 0x22, 0x30, 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x0a, 0x0b, 0x75, + 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x10, 0x00, 0x12, 0x17, 0x0a, 0x13, + 0x74, 0x79, 0x70, 0x65, 0x5f, 0x31, 0x5f, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x5f, 0x72, 0x65, 0x63, + 0x6f, 0x72, 0x64, 0x10, 0x01, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, + 0x22, 0x67, 0x0a, 0x1c, 0x46, 0x6c, 0x6f, 0x77, 0x52, 0x53, 0x56, 0x50, 0x50, 0x61, 0x74, 0x68, + 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x54, 0x79, 0x70, 0x65, 0x31, + 0x12, 0x47, 0x0a, 0x0a, 0x73, 0x75, 0x62, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x18, 0x01, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x46, 0x6c, 0x6f, 0x77, 0x52, + 0x53, 0x56, 0x50, 0x54, 0x79, 0x70, 0x65, 0x31, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x52, 0x6f, + 0x75, 0x74, 0x65, 0x53, 0x75, 0x62, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x52, 0x0a, 0x73, + 0x75, 0x62, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x22, 0x6a, 0x0a, 0x22, 0x46, 0x6c, 0x6f, + 0x77, 0x52, 0x53, 0x56, 0x50, 0x54, 0x79, 0x70, 0x65, 0x31, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, + 0x52, 0x6f, 0x75, 0x74, 0x65, 0x53, 0x75, 0x62, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x12, + 0x44, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x30, 0x2e, + 0x6f, 0x74, 0x67, 0x2e, 0x46, 0x6c, 0x6f, 0x77, 0x52, 0x53, 0x56, 0x50, 0x50, 0x61, 0x74, 0x68, + 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x52, 0x6f, 0x75, + 0x74, 0x65, 0x53, 0x75, 0x62, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x54, 0x79, 0x70, 0x65, 0x52, + 0x04, 0x74, 0x79, 0x70, 0x65, 0x22, 0xe2, 0x02, 0x0a, 0x2b, 0x46, 0x6c, 0x6f, 0x77, 0x52, 0x53, + 0x56, 0x50, 0x50, 0x61, 0x74, 0x68, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x52, 0x65, 0x63, + 0x6f, 0x72, 0x64, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x53, 0x75, 0x62, 0x4f, 0x62, 0x6a, 0x65, 0x63, + 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x59, 0x0a, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x3c, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x46, 0x6c, 0x6f, 0x77, + 0x52, 0x53, 0x56, 0x50, 0x50, 0x61, 0x74, 0x68, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x52, + 0x65, 0x63, 0x6f, 0x72, 0x64, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x53, 0x75, 0x62, 0x4f, 0x62, 0x6a, + 0x65, 0x63, 0x74, 0x54, 0x79, 0x70, 0x65, 0x2e, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x2e, 0x45, + 0x6e, 0x75, 0x6d, 0x48, 0x00, 0x52, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x88, 0x01, 0x01, + 0x12, 0x4f, 0x0a, 0x0c, 0x69, 0x70, 0x76, 0x34, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x46, 0x6c, 0x6f, + 0x77, 0x52, 0x53, 0x56, 0x50, 0x50, 0x61, 0x74, 0x68, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x52, + 0x6f, 0x75, 0x74, 0x65, 0x54, 0x79, 0x70, 0x65, 0x31, 0x49, 0x70, 0x76, 0x34, 0x41, 0x64, 0x64, + 0x72, 0x65, 0x73, 0x73, 0x52, 0x0b, 0x69, 0x70, 0x76, 0x34, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, + 0x73, 0x12, 0x3c, 0x0a, 0x05, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x26, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x46, 0x6c, 0x6f, 0x77, 0x52, 0x53, 0x56, 0x50, 0x50, + 0x61, 0x74, 0x68, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x54, 0x79, + 0x70, 0x65, 0x31, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x52, 0x05, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x1a, + 0x3e, 0x0a, 0x06, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x22, 0x34, 0x0a, 0x04, 0x45, 0x6e, 0x75, + 0x6d, 0x12, 0x0f, 0x0a, 0x0b, 0x75, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, + 0x10, 0x00, 0x12, 0x10, 0x0a, 0x0c, 0x69, 0x70, 0x76, 0x34, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, + 0x73, 0x73, 0x10, 0x01, 0x12, 0x09, 0x0a, 0x05, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x10, 0x02, 0x42, + 0x09, 0x0a, 0x07, 0x5f, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x22, 0xe2, 0x02, 0x0a, 0x27, 0x46, + 0x6c, 0x6f, 0x77, 0x52, 0x53, 0x56, 0x50, 0x50, 0x61, 0x74, 0x68, 0x52, 0x65, 0x63, 0x6f, 0x72, + 0x64, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x54, 0x79, 0x70, 0x65, 0x31, 0x49, 0x70, 0x76, 0x34, 0x41, + 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x36, 0x0a, 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x46, 0x6c, 0x6f, + 0x77, 0x52, 0x53, 0x56, 0x50, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, + 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x52, 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x12, 0x61, + 0x0a, 0x0c, 0x69, 0x70, 0x76, 0x34, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3e, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, + 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x52, 0x53, 0x56, 0x50, 0x50, 0x61, 0x74, 0x68, 0x52, 0x65, + 0x63, 0x6f, 0x72, 0x64, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x54, 0x79, 0x70, 0x65, 0x31, 0x49, 0x70, + 0x76, 0x34, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x49, 0x70, 0x76, 0x34, 0x41, 0x64, 0x64, + 0x72, 0x65, 0x73, 0x73, 0x52, 0x0b, 0x69, 0x70, 0x76, 0x34, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, + 0x73, 0x12, 0x64, 0x0a, 0x0d, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x5f, 0x6c, 0x65, 0x6e, 0x67, + 0x74, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3f, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, + 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x52, 0x53, 0x56, 0x50, 0x50, 0x61, + 0x74, 0x68, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x54, 0x79, 0x70, + 0x65, 0x31, 0x49, 0x70, 0x76, 0x34, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x50, 0x72, 0x65, + 0x66, 0x69, 0x78, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x52, 0x0c, 0x70, 0x72, 0x65, 0x66, 0x69, + 0x78, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x12, 0x36, 0x0a, 0x05, 0x66, 0x6c, 0x61, 0x67, 0x73, + 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x46, 0x6c, 0x6f, + 0x77, 0x52, 0x53, 0x56, 0x50, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x52, 0x6f, 0x75, 0x74, 0x65, + 0x49, 0x50, 0x76, 0x34, 0x46, 0x6c, 0x61, 0x67, 0x52, 0x05, 0x66, 0x6c, 0x61, 0x67, 0x73, 0x22, + 0xd3, 0x01, 0x0a, 0x1b, 0x46, 0x6c, 0x6f, 0x77, 0x52, 0x53, 0x56, 0x50, 0x52, 0x65, 0x63, 0x6f, + 0x72, 0x64, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x49, 0x50, 0x76, 0x34, 0x46, 0x6c, 0x61, 0x67, 0x12, + 0x49, 0x0a, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, + 0x2c, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x46, 0x6c, 0x6f, 0x77, 0x52, 0x53, 0x56, 0x50, 0x52, 0x65, + 0x63, 0x6f, 0x72, 0x64, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x49, 0x50, 0x76, 0x34, 0x46, 0x6c, 0x61, + 0x67, 0x2e, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x48, 0x00, 0x52, + 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x88, 0x01, 0x01, 0x1a, 0x5e, 0x0a, 0x06, 0x43, 0x68, + 0x6f, 0x69, 0x63, 0x65, 0x22, 0x54, 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x0a, 0x0b, + 0x75, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x10, 0x00, 0x12, 0x1e, 0x0a, + 0x1a, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x5f, 0x70, 0x72, 0x6f, 0x74, 0x65, 0x63, 0x74, 0x69, 0x6f, + 0x6e, 0x5f, 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x10, 0x01, 0x12, 0x1b, 0x0a, + 0x17, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x5f, 0x70, 0x72, 0x6f, 0x74, 0x65, 0x63, 0x74, 0x69, 0x6f, + 0x6e, 0x5f, 0x69, 0x6e, 0x5f, 0x75, 0x73, 0x65, 0x10, 0x02, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x63, + 0x68, 0x6f, 0x69, 0x63, 0x65, 0x22, 0xcb, 0x02, 0x0a, 0x21, 0x46, 0x6c, 0x6f, 0x77, 0x52, 0x53, + 0x56, 0x50, 0x50, 0x61, 0x74, 0x68, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x52, 0x6f, 0x75, 0x74, + 0x65, 0x54, 0x79, 0x70, 0x65, 0x31, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x12, 0x36, 0x0a, 0x06, 0x6c, + 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x6f, 0x74, + 0x67, 0x2e, 0x46, 0x6c, 0x6f, 0x77, 0x52, 0x53, 0x56, 0x50, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x52, + 0x65, 0x63, 0x6f, 0x72, 0x64, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x52, 0x06, 0x6c, 0x65, 0x6e, + 0x67, 0x74, 0x68, 0x12, 0x48, 0x0a, 0x05, 0x66, 0x6c, 0x61, 0x67, 0x73, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x32, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, + 0x46, 0x6c, 0x6f, 0x77, 0x52, 0x53, 0x56, 0x50, 0x50, 0x61, 0x74, 0x68, 0x52, 0x65, 0x63, 0x6f, + 0x72, 0x64, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x54, 0x79, 0x70, 0x65, 0x31, 0x4c, 0x61, 0x62, 0x65, + 0x6c, 0x46, 0x6c, 0x61, 0x67, 0x73, 0x52, 0x05, 0x66, 0x6c, 0x61, 0x67, 0x73, 0x12, 0x49, 0x0a, + 0x06, 0x63, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x32, 0x2e, + 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x52, + 0x53, 0x56, 0x50, 0x50, 0x61, 0x74, 0x68, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x52, 0x6f, 0x75, + 0x74, 0x65, 0x54, 0x79, 0x70, 0x65, 0x31, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x43, 0x54, 0x79, 0x70, + 0x65, 0x52, 0x05, 0x63, 0x54, 0x79, 0x70, 0x65, 0x12, 0x3c, 0x0a, 0x18, 0x63, 0x6f, 0x6e, 0x74, + 0x65, 0x6e, 0x74, 0x73, 0x5f, 0x6f, 0x66, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x5f, 0x6f, 0x62, + 0x65, 0x6a, 0x63, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x15, 0x63, 0x6f, + 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x73, 0x4f, 0x66, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x4f, 0x62, 0x65, + 0x6a, 0x63, 0x74, 0x88, 0x01, 0x01, 0x42, 0x1b, 0x0a, 0x19, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x65, + 0x6e, 0x74, 0x73, 0x5f, 0x6f, 0x66, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x5f, 0x6f, 0x62, 0x65, + 0x6a, 0x63, 0x74, 0x22, 0xee, 0x01, 0x0a, 0x19, 0x46, 0x6c, 0x6f, 0x77, 0x52, 0x53, 0x56, 0x50, + 0x52, 0x6f, 0x75, 0x74, 0x65, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x4c, 0x65, 0x6e, 0x67, 0x74, + 0x68, 0x12, 0x47, 0x0a, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x0e, 0x32, 0x2a, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x46, 0x6c, 0x6f, 0x77, 0x52, 0x53, 0x56, 0x50, + 0x52, 0x6f, 0x75, 0x74, 0x65, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x4c, 0x65, 0x6e, 0x67, 0x74, + 0x68, 0x2e, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x48, 0x00, 0x52, + 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x88, 0x01, 0x01, 0x12, 0x17, 0x0a, 0x04, 0x61, 0x75, + 0x74, 0x6f, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x04, 0x61, 0x75, 0x74, 0x6f, + 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x0d, 0x48, 0x02, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x88, 0x01, 0x01, 0x1a, 0x36, + 0x0a, 0x06, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x22, 0x2c, 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, + 0x12, 0x0f, 0x0a, 0x0b, 0x75, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x10, + 0x00, 0x12, 0x08, 0x0a, 0x04, 0x61, 0x75, 0x74, 0x6f, 0x10, 0x01, 0x12, 0x09, 0x0a, 0x05, 0x76, + 0x61, 0x6c, 0x75, 0x65, 0x10, 0x02, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x63, 0x68, 0x6f, 0x69, 0x63, + 0x65, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x61, 0x75, 0x74, 0x6f, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x76, + 0x61, 0x6c, 0x75, 0x65, 0x22, 0xbf, 0x01, 0x0a, 0x19, 0x46, 0x6c, 0x6f, 0x77, 0x52, 0x53, 0x56, + 0x50, 0x50, 0x61, 0x74, 0x68, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x43, 0x75, 0x73, 0x74, + 0x6f, 0x6d, 0x12, 0x3d, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x29, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, + 0x6f, 0x77, 0x52, 0x53, 0x56, 0x50, 0x50, 0x61, 0x74, 0x68, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, + 0x73, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, + 0x65, 0x12, 0x3e, 0x0a, 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x26, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x46, 0x6c, 0x6f, 0x77, 0x52, 0x53, 0x56, 0x50, + 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x43, 0x75, 0x73, + 0x74, 0x6f, 0x6d, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x52, 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, + 0x68, 0x12, 0x19, 0x0a, 0x05, 0x62, 0x79, 0x74, 0x65, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, + 0x48, 0x00, 0x52, 0x05, 0x62, 0x79, 0x74, 0x65, 0x73, 0x88, 0x01, 0x01, 0x42, 0x08, 0x0a, 0x06, + 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x22, 0xfe, 0x01, 0x0a, 0x21, 0x46, 0x6c, 0x6f, 0x77, 0x52, + 0x53, 0x56, 0x50, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, + 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x12, 0x4f, 0x0a, 0x06, + 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x32, 0x2e, 0x6f, + 0x74, 0x67, 0x2e, 0x46, 0x6c, 0x6f, 0x77, 0x52, 0x53, 0x56, 0x50, 0x4f, 0x62, 0x6a, 0x65, 0x63, + 0x74, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x4c, 0x65, + 0x6e, 0x67, 0x74, 0x68, 0x2e, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x2e, 0x45, 0x6e, 0x75, 0x6d, + 0x48, 0x00, 0x52, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x88, 0x01, 0x01, 0x12, 0x17, 0x0a, + 0x04, 0x61, 0x75, 0x74, 0x6f, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x04, 0x61, + 0x75, 0x74, 0x6f, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x02, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x88, 0x01, + 0x01, 0x1a, 0x36, 0x0a, 0x06, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x22, 0x2c, 0x0a, 0x04, 0x45, + 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x0a, 0x0b, 0x75, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, + 0x65, 0x64, 0x10, 0x00, 0x12, 0x08, 0x0a, 0x04, 0x61, 0x75, 0x74, 0x6f, 0x10, 0x01, 0x12, 0x09, + 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x10, 0x02, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x63, 0x68, + 0x6f, 0x69, 0x63, 0x65, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x61, 0x75, 0x74, 0x6f, 0x42, 0x08, 0x0a, + 0x06, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0xed, 0x02, 0x0a, 0x08, 0x46, 0x6c, 0x6f, 0x77, + 0x53, 0x69, 0x7a, 0x65, 0x12, 0x36, 0x0a, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x0e, 0x32, 0x19, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x46, 0x6c, 0x6f, 0x77, 0x53, + 0x69, 0x7a, 0x65, 0x2e, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x48, 0x00, 0x52, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, - 0x62, 0x79, 0x74, 0x65, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x01, 0x48, 0x01, 0x52, 0x05, 0x62, - 0x79, 0x74, 0x65, 0x73, 0x88, 0x01, 0x01, 0x12, 0x25, 0x0a, 0x0b, 0x6e, 0x61, 0x6e, 0x6f, 0x73, - 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x01, 0x48, 0x02, 0x52, 0x0b, - 0x6e, 0x61, 0x6e, 0x6f, 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x88, 0x01, 0x01, 0x12, 0x27, - 0x0a, 0x0c, 0x6d, 0x69, 0x63, 0x72, 0x6f, 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x18, 0x04, - 0x20, 0x01, 0x28, 0x01, 0x48, 0x03, 0x52, 0x0c, 0x6d, 0x69, 0x63, 0x72, 0x6f, 0x73, 0x65, 0x63, - 0x6f, 0x6e, 0x64, 0x73, 0x88, 0x01, 0x01, 0x1a, 0x4f, 0x0a, 0x06, 0x43, 0x68, 0x6f, 0x69, 0x63, - 0x65, 0x22, 0x45, 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x0a, 0x0b, 0x75, 0x6e, 0x73, - 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, 0x62, 0x79, - 0x74, 0x65, 0x73, 0x10, 0x01, 0x12, 0x0f, 0x0a, 0x0b, 0x6e, 0x61, 0x6e, 0x6f, 0x73, 0x65, 0x63, - 0x6f, 0x6e, 0x64, 0x73, 0x10, 0x02, 0x12, 0x10, 0x0a, 0x0c, 0x6d, 0x69, 0x63, 0x72, 0x6f, 0x73, - 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x10, 0x03, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x63, 0x68, 0x6f, - 0x69, 0x63, 0x65, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x42, 0x0e, 0x0a, - 0x0c, 0x5f, 0x6e, 0x61, 0x6e, 0x6f, 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x42, 0x0f, 0x0a, - 0x0d, 0x5f, 0x6d, 0x69, 0x63, 0x72, 0x6f, 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x22, 0xc1, - 0x02, 0x0a, 0x0b, 0x46, 0x6c, 0x6f, 0x77, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x12, 0x1b, - 0x0a, 0x06, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x48, 0x00, - 0x52, 0x06, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x88, 0x01, 0x01, 0x12, 0x17, 0x0a, 0x04, 0x6c, - 0x6f, 0x73, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x48, 0x01, 0x52, 0x04, 0x6c, 0x6f, 0x73, - 0x73, 0x88, 0x01, 0x01, 0x12, 0x32, 0x0a, 0x0b, 0x72, 0x78, 0x5f, 0x74, 0x78, 0x5f, 0x72, 0x61, - 0x74, 0x69, 0x6f, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x6f, 0x74, 0x67, 0x2e, - 0x46, 0x6c, 0x6f, 0x77, 0x52, 0x78, 0x54, 0x78, 0x52, 0x61, 0x74, 0x69, 0x6f, 0x52, 0x09, 0x72, - 0x78, 0x54, 0x78, 0x52, 0x61, 0x74, 0x69, 0x6f, 0x12, 0x23, 0x0a, 0x0a, 0x74, 0x69, 0x6d, 0x65, - 0x73, 0x74, 0x61, 0x6d, 0x70, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x48, 0x02, 0x52, 0x0a, - 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x73, 0x88, 0x01, 0x01, 0x12, 0x31, 0x0a, - 0x07, 0x6c, 0x61, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, - 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x46, 0x6c, 0x6f, 0x77, 0x4c, 0x61, 0x74, 0x65, 0x6e, 0x63, 0x79, - 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x52, 0x07, 0x6c, 0x61, 0x74, 0x65, 0x6e, 0x63, 0x79, - 0x12, 0x4d, 0x0a, 0x16, 0x70, 0x72, 0x65, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x65, 0x64, 0x5f, 0x6d, - 0x65, 0x74, 0x72, 0x69, 0x63, 0x5f, 0x74, 0x61, 0x67, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x17, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x46, 0x6c, 0x6f, 0x77, 0x50, 0x72, 0x65, 0x64, 0x65, - 0x66, 0x69, 0x6e, 0x65, 0x64, 0x54, 0x61, 0x67, 0x73, 0x52, 0x14, 0x70, 0x72, 0x65, 0x64, 0x65, - 0x66, 0x69, 0x6e, 0x65, 0x64, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x73, 0x42, - 0x09, 0x0a, 0x07, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x6c, - 0x6f, 0x73, 0x73, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, - 0x70, 0x73, 0x22, 0xc6, 0x01, 0x0a, 0x12, 0x46, 0x6c, 0x6f, 0x77, 0x4c, 0x61, 0x74, 0x65, 0x6e, - 0x63, 0x79, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x12, 0x1b, 0x0a, 0x06, 0x65, 0x6e, 0x61, - 0x62, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x48, 0x00, 0x52, 0x06, 0x65, 0x6e, 0x61, - 0x62, 0x6c, 0x65, 0x88, 0x01, 0x01, 0x12, 0x3a, 0x0a, 0x04, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x0e, 0x32, 0x21, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x46, 0x6c, 0x6f, 0x77, 0x4c, - 0x61, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x2e, 0x4d, 0x6f, - 0x64, 0x65, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x48, 0x01, 0x52, 0x04, 0x6d, 0x6f, 0x64, 0x65, 0x88, - 0x01, 0x01, 0x1a, 0x43, 0x0a, 0x04, 0x4d, 0x6f, 0x64, 0x65, 0x22, 0x3b, 0x0a, 0x04, 0x45, 0x6e, + 0x66, 0x69, 0x78, 0x65, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x05, 0x66, + 0x69, 0x78, 0x65, 0x64, 0x88, 0x01, 0x01, 0x12, 0x34, 0x0a, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, + 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x6f, 0x74, 0x67, + 0x2e, 0x46, 0x6c, 0x6f, 0x77, 0x53, 0x69, 0x7a, 0x65, 0x49, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, + 0x6e, 0x74, 0x52, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x2b, 0x0a, + 0x06, 0x72, 0x61, 0x6e, 0x64, 0x6f, 0x6d, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, + 0x6f, 0x74, 0x67, 0x2e, 0x46, 0x6c, 0x6f, 0x77, 0x53, 0x69, 0x7a, 0x65, 0x52, 0x61, 0x6e, 0x64, + 0x6f, 0x6d, 0x52, 0x06, 0x72, 0x61, 0x6e, 0x64, 0x6f, 0x6d, 0x12, 0x3b, 0x0a, 0x0c, 0x77, 0x65, + 0x69, 0x67, 0x68, 0x74, 0x5f, 0x70, 0x61, 0x69, 0x72, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x18, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x46, 0x6c, 0x6f, 0x77, 0x53, 0x69, 0x7a, 0x65, 0x57, + 0x65, 0x69, 0x67, 0x68, 0x74, 0x50, 0x61, 0x69, 0x72, 0x73, 0x52, 0x0b, 0x77, 0x65, 0x69, 0x67, + 0x68, 0x74, 0x50, 0x61, 0x69, 0x72, 0x73, 0x1a, 0x59, 0x0a, 0x06, 0x43, 0x68, 0x6f, 0x69, 0x63, + 0x65, 0x22, 0x4f, 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x0a, 0x0b, 0x75, 0x6e, 0x73, + 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, 0x66, 0x69, + 0x78, 0x65, 0x64, 0x10, 0x01, 0x12, 0x0d, 0x0a, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, + 0x6e, 0x74, 0x10, 0x02, 0x12, 0x0a, 0x0a, 0x06, 0x72, 0x61, 0x6e, 0x64, 0x6f, 0x6d, 0x10, 0x03, + 0x12, 0x10, 0x0a, 0x0c, 0x77, 0x65, 0x69, 0x67, 0x68, 0x74, 0x5f, 0x70, 0x61, 0x69, 0x72, 0x73, + 0x10, 0x04, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x42, 0x08, 0x0a, + 0x06, 0x5f, 0x66, 0x69, 0x78, 0x65, 0x64, 0x22, 0x79, 0x0a, 0x11, 0x46, 0x6c, 0x6f, 0x77, 0x53, + 0x69, 0x7a, 0x65, 0x49, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x19, 0x0a, 0x05, + 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x00, 0x52, 0x05, 0x73, + 0x74, 0x61, 0x72, 0x74, 0x88, 0x01, 0x01, 0x12, 0x15, 0x0a, 0x03, 0x65, 0x6e, 0x64, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x03, 0x65, 0x6e, 0x64, 0x88, 0x01, 0x01, 0x12, 0x17, + 0x0a, 0x04, 0x73, 0x74, 0x65, 0x70, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x02, 0x52, 0x04, + 0x73, 0x74, 0x65, 0x70, 0x88, 0x01, 0x01, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x73, 0x74, 0x61, 0x72, + 0x74, 0x42, 0x06, 0x0a, 0x04, 0x5f, 0x65, 0x6e, 0x64, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x73, 0x74, + 0x65, 0x70, 0x22, 0x4e, 0x0a, 0x0e, 0x46, 0x6c, 0x6f, 0x77, 0x53, 0x69, 0x7a, 0x65, 0x52, 0x61, + 0x6e, 0x64, 0x6f, 0x6d, 0x12, 0x15, 0x0a, 0x03, 0x6d, 0x69, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x0d, 0x48, 0x00, 0x52, 0x03, 0x6d, 0x69, 0x6e, 0x88, 0x01, 0x01, 0x12, 0x15, 0x0a, 0x03, 0x6d, + 0x61, 0x78, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x03, 0x6d, 0x61, 0x78, 0x88, + 0x01, 0x01, 0x42, 0x06, 0x0a, 0x04, 0x5f, 0x6d, 0x69, 0x6e, 0x42, 0x06, 0x0a, 0x04, 0x5f, 0x6d, + 0x61, 0x78, 0x22, 0xa9, 0x03, 0x0a, 0x13, 0x46, 0x6c, 0x6f, 0x77, 0x53, 0x69, 0x7a, 0x65, 0x57, + 0x65, 0x69, 0x67, 0x68, 0x74, 0x50, 0x61, 0x69, 0x72, 0x73, 0x12, 0x41, 0x0a, 0x06, 0x63, 0x68, + 0x6f, 0x69, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x24, 0x2e, 0x6f, 0x74, 0x67, + 0x2e, 0x46, 0x6c, 0x6f, 0x77, 0x53, 0x69, 0x7a, 0x65, 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, 0x50, + 0x61, 0x69, 0x72, 0x73, 0x2e, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x2e, 0x45, 0x6e, 0x75, 0x6d, + 0x48, 0x00, 0x52, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x88, 0x01, 0x01, 0x12, 0x4d, 0x0a, + 0x0a, 0x70, 0x72, 0x65, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x65, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x0e, 0x32, 0x28, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x46, 0x6c, 0x6f, 0x77, 0x53, 0x69, 0x7a, 0x65, + 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, 0x50, 0x61, 0x69, 0x72, 0x73, 0x2e, 0x50, 0x72, 0x65, 0x64, + 0x65, 0x66, 0x69, 0x6e, 0x65, 0x64, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x48, 0x01, 0x52, 0x0a, 0x70, + 0x72, 0x65, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x65, 0x64, 0x88, 0x01, 0x01, 0x12, 0x36, 0x0a, 0x06, + 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x6f, + 0x74, 0x67, 0x2e, 0x46, 0x6c, 0x6f, 0x77, 0x53, 0x69, 0x7a, 0x65, 0x57, 0x65, 0x69, 0x67, 0x68, + 0x74, 0x50, 0x61, 0x69, 0x72, 0x73, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x52, 0x06, 0x63, 0x75, + 0x73, 0x74, 0x6f, 0x6d, 0x1a, 0x3d, 0x0a, 0x06, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x22, 0x33, + 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x0a, 0x0b, 0x75, 0x6e, 0x73, 0x70, 0x65, 0x63, + 0x69, 0x66, 0x69, 0x65, 0x64, 0x10, 0x00, 0x12, 0x0e, 0x0a, 0x0a, 0x70, 0x72, 0x65, 0x64, 0x65, + 0x66, 0x69, 0x6e, 0x65, 0x64, 0x10, 0x01, 0x12, 0x0a, 0x0a, 0x06, 0x63, 0x75, 0x73, 0x74, 0x6f, + 0x6d, 0x10, 0x02, 0x1a, 0x6f, 0x0a, 0x0a, 0x50, 0x72, 0x65, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x65, + 0x64, 0x22, 0x61, 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x0a, 0x0b, 0x75, 0x6e, 0x73, + 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x10, 0x00, 0x12, 0x08, 0x0a, 0x04, 0x69, 0x6d, + 0x69, 0x78, 0x10, 0x01, 0x12, 0x0e, 0x0a, 0x0a, 0x69, 0x70, 0x73, 0x65, 0x63, 0x5f, 0x69, 0x6d, + 0x69, 0x78, 0x10, 0x02, 0x12, 0x0d, 0x0a, 0x09, 0x69, 0x70, 0x76, 0x36, 0x5f, 0x69, 0x6d, 0x69, + 0x78, 0x10, 0x03, 0x12, 0x11, 0x0a, 0x0d, 0x73, 0x74, 0x61, 0x6e, 0x64, 0x61, 0x72, 0x64, 0x5f, + 0x69, 0x6d, 0x69, 0x78, 0x10, 0x04, 0x12, 0x0c, 0x0a, 0x08, 0x74, 0x63, 0x70, 0x5f, 0x69, 0x6d, + 0x69, 0x78, 0x10, 0x05, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x42, + 0x0d, 0x0a, 0x0b, 0x5f, 0x70, 0x72, 0x65, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x65, 0x64, 0x22, 0x65, + 0x0a, 0x19, 0x46, 0x6c, 0x6f, 0x77, 0x53, 0x69, 0x7a, 0x65, 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, + 0x50, 0x61, 0x69, 0x72, 0x73, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x12, 0x17, 0x0a, 0x04, 0x73, + 0x69, 0x7a, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x00, 0x52, 0x04, 0x73, 0x69, 0x7a, + 0x65, 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x77, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x02, 0x48, 0x01, 0x52, 0x06, 0x77, 0x65, 0x69, 0x67, 0x68, 0x74, 0x88, 0x01, + 0x01, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x77, + 0x65, 0x69, 0x67, 0x68, 0x74, 0x22, 0x88, 0x03, 0x0a, 0x08, 0x46, 0x6c, 0x6f, 0x77, 0x52, 0x61, + 0x74, 0x65, 0x12, 0x36, 0x0a, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x0e, 0x32, 0x19, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x46, 0x6c, 0x6f, 0x77, 0x52, 0x61, 0x74, + 0x65, 0x2e, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x48, 0x00, 0x52, + 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x88, 0x01, 0x01, 0x12, 0x15, 0x0a, 0x03, 0x70, 0x70, + 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x48, 0x01, 0x52, 0x03, 0x70, 0x70, 0x73, 0x88, 0x01, + 0x01, 0x12, 0x15, 0x0a, 0x03, 0x62, 0x70, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x48, 0x02, + 0x52, 0x03, 0x62, 0x70, 0x73, 0x88, 0x01, 0x01, 0x12, 0x17, 0x0a, 0x04, 0x6b, 0x62, 0x70, 0x73, + 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, 0x48, 0x03, 0x52, 0x04, 0x6b, 0x62, 0x70, 0x73, 0x88, 0x01, + 0x01, 0x12, 0x17, 0x0a, 0x04, 0x6d, 0x62, 0x70, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x04, 0x48, + 0x04, 0x52, 0x04, 0x6d, 0x62, 0x70, 0x73, 0x88, 0x01, 0x01, 0x12, 0x17, 0x0a, 0x04, 0x67, 0x62, + 0x70, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x05, 0x52, 0x04, 0x67, 0x62, 0x70, 0x73, + 0x88, 0x01, 0x01, 0x12, 0x23, 0x0a, 0x0a, 0x70, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x61, 0x67, + 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x02, 0x48, 0x06, 0x52, 0x0a, 0x70, 0x65, 0x72, 0x63, 0x65, + 0x6e, 0x74, 0x61, 0x67, 0x65, 0x88, 0x01, 0x01, 0x1a, 0x61, 0x0a, 0x06, 0x43, 0x68, 0x6f, 0x69, + 0x63, 0x65, 0x22, 0x57, 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x0a, 0x0b, 0x75, 0x6e, + 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x10, 0x00, 0x12, 0x07, 0x0a, 0x03, 0x70, + 0x70, 0x73, 0x10, 0x01, 0x12, 0x07, 0x0a, 0x03, 0x62, 0x70, 0x73, 0x10, 0x02, 0x12, 0x08, 0x0a, + 0x04, 0x6b, 0x62, 0x70, 0x73, 0x10, 0x03, 0x12, 0x08, 0x0a, 0x04, 0x6d, 0x62, 0x70, 0x73, 0x10, + 0x04, 0x12, 0x08, 0x0a, 0x04, 0x67, 0x62, 0x70, 0x73, 0x10, 0x05, 0x12, 0x0e, 0x0a, 0x0a, 0x70, + 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x61, 0x67, 0x65, 0x10, 0x06, 0x42, 0x09, 0x0a, 0x07, 0x5f, + 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x42, 0x06, 0x0a, 0x04, 0x5f, 0x70, 0x70, 0x73, 0x42, 0x06, + 0x0a, 0x04, 0x5f, 0x62, 0x70, 0x73, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x6b, 0x62, 0x70, 0x73, 0x42, + 0x07, 0x0a, 0x05, 0x5f, 0x6d, 0x62, 0x70, 0x73, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x67, 0x62, 0x70, + 0x73, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x70, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x61, 0x67, 0x65, + 0x22, 0x8c, 0x03, 0x0a, 0x0c, 0x46, 0x6c, 0x6f, 0x77, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x12, 0x3a, 0x0a, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x0e, 0x32, 0x1d, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x46, 0x6c, 0x6f, 0x77, 0x44, 0x75, 0x72, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x2e, 0x45, 0x6e, 0x75, 0x6d, + 0x48, 0x00, 0x52, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x88, 0x01, 0x01, 0x12, 0x3a, 0x0a, + 0x0d, 0x66, 0x69, 0x78, 0x65, 0x64, 0x5f, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x46, 0x6c, 0x6f, 0x77, 0x46, + 0x69, 0x78, 0x65, 0x64, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x52, 0x0c, 0x66, 0x69, 0x78, + 0x65, 0x64, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x12, 0x3a, 0x0a, 0x0d, 0x66, 0x69, 0x78, + 0x65, 0x64, 0x5f, 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x15, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x46, 0x6c, 0x6f, 0x77, 0x46, 0x69, 0x78, 0x65, 0x64, + 0x53, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x52, 0x0c, 0x66, 0x69, 0x78, 0x65, 0x64, 0x53, 0x65, + 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x12, 0x24, 0x0a, 0x05, 0x62, 0x75, 0x72, 0x73, 0x74, 0x18, 0x04, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x46, 0x6c, 0x6f, 0x77, 0x42, + 0x75, 0x72, 0x73, 0x74, 0x52, 0x05, 0x62, 0x75, 0x72, 0x73, 0x74, 0x12, 0x33, 0x0a, 0x0a, 0x63, + 0x6f, 0x6e, 0x74, 0x69, 0x6e, 0x75, 0x6f, 0x75, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x13, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x46, 0x6c, 0x6f, 0x77, 0x43, 0x6f, 0x6e, 0x74, 0x69, 0x6e, + 0x75, 0x6f, 0x75, 0x73, 0x52, 0x0a, 0x63, 0x6f, 0x6e, 0x74, 0x69, 0x6e, 0x75, 0x6f, 0x75, 0x73, + 0x1a, 0x62, 0x0a, 0x06, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x22, 0x58, 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x0a, 0x0b, 0x75, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, - 0x64, 0x10, 0x00, 0x12, 0x11, 0x0a, 0x0d, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x5f, 0x66, 0x6f, 0x72, - 0x77, 0x61, 0x72, 0x64, 0x10, 0x01, 0x12, 0x0f, 0x0a, 0x0b, 0x63, 0x75, 0x74, 0x5f, 0x74, 0x68, - 0x72, 0x6f, 0x75, 0x67, 0x68, 0x10, 0x02, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x65, 0x6e, 0x61, 0x62, - 0x6c, 0x65, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x22, 0x3e, 0x0a, 0x12, 0x46, - 0x6c, 0x6f, 0x77, 0x50, 0x72, 0x65, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x65, 0x64, 0x54, 0x61, 0x67, - 0x73, 0x12, 0x1c, 0x0a, 0x07, 0x72, 0x78, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x08, 0x48, 0x00, 0x52, 0x06, 0x72, 0x78, 0x4e, 0x61, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x42, - 0x0a, 0x0a, 0x08, 0x5f, 0x72, 0x78, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0xee, 0x01, 0x0a, 0x0d, - 0x46, 0x6c, 0x6f, 0x77, 0x52, 0x78, 0x54, 0x78, 0x52, 0x61, 0x74, 0x69, 0x6f, 0x12, 0x3b, 0x0a, - 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1e, 0x2e, - 0x6f, 0x74, 0x67, 0x2e, 0x46, 0x6c, 0x6f, 0x77, 0x52, 0x78, 0x54, 0x78, 0x52, 0x61, 0x74, 0x69, - 0x6f, 0x2e, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x48, 0x00, 0x52, - 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x88, 0x01, 0x01, 0x12, 0x34, 0x0a, 0x08, 0x72, 0x78, - 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x6f, - 0x74, 0x67, 0x2e, 0x46, 0x6c, 0x6f, 0x77, 0x52, 0x78, 0x54, 0x78, 0x52, 0x61, 0x74, 0x69, 0x6f, - 0x52, 0x78, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x07, 0x72, 0x78, 0x43, 0x6f, 0x75, 0x6e, 0x74, - 0x12, 0x19, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x02, 0x48, - 0x01, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x88, 0x01, 0x01, 0x1a, 0x3a, 0x0a, 0x06, 0x43, - 0x68, 0x6f, 0x69, 0x63, 0x65, 0x22, 0x30, 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x0a, - 0x0b, 0x75, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x10, 0x00, 0x12, 0x0c, - 0x0a, 0x08, 0x72, 0x78, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x10, 0x01, 0x12, 0x09, 0x0a, 0x05, - 0x76, 0x61, 0x6c, 0x75, 0x65, 0x10, 0x02, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x63, 0x68, 0x6f, 0x69, - 0x63, 0x65, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x16, 0x0a, 0x14, - 0x46, 0x6c, 0x6f, 0x77, 0x52, 0x78, 0x54, 0x78, 0x52, 0x61, 0x74, 0x69, 0x6f, 0x52, 0x78, 0x43, - 0x6f, 0x75, 0x6e, 0x74, 0x22, 0xf6, 0x01, 0x0a, 0x05, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x1b, - 0x0a, 0x06, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x48, 0x00, - 0x52, 0x06, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x88, 0x01, 0x01, 0x12, 0x22, 0x0a, 0x04, 0x6c, - 0x69, 0x6e, 0x6b, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x6f, 0x74, 0x67, 0x2e, - 0x45, 0x76, 0x65, 0x6e, 0x74, 0x4c, 0x69, 0x6e, 0x6b, 0x52, 0x04, 0x6c, 0x69, 0x6e, 0x6b, 0x12, - 0x45, 0x0a, 0x11, 0x72, 0x78, 0x5f, 0x72, 0x61, 0x74, 0x65, 0x5f, 0x74, 0x68, 0x72, 0x65, 0x73, - 0x68, 0x6f, 0x6c, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x6f, 0x74, 0x67, - 0x2e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x52, 0x78, 0x52, 0x61, 0x74, 0x65, 0x54, 0x68, 0x72, 0x65, - 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x52, 0x0f, 0x72, 0x78, 0x52, 0x61, 0x74, 0x65, 0x54, 0x68, 0x72, - 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x12, 0x5a, 0x0a, 0x18, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x5f, - 0x61, 0x64, 0x76, 0x65, 0x72, 0x74, 0x69, 0x73, 0x65, 0x5f, 0x77, 0x69, 0x74, 0x68, 0x64, 0x72, - 0x61, 0x77, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x45, - 0x76, 0x65, 0x6e, 0x74, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x41, 0x64, 0x76, 0x65, 0x72, 0x74, 0x69, - 0x73, 0x65, 0x57, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x52, 0x16, 0x72, 0x6f, 0x75, 0x74, - 0x65, 0x41, 0x64, 0x76, 0x65, 0x72, 0x74, 0x69, 0x73, 0x65, 0x57, 0x69, 0x74, 0x68, 0x64, 0x72, - 0x61, 0x77, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x22, 0x6f, 0x0a, - 0x14, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x52, 0x78, 0x52, 0x61, 0x74, 0x65, 0x54, 0x68, 0x72, 0x65, - 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x12, 0x1b, 0x0a, 0x06, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x18, + 0x64, 0x10, 0x00, 0x12, 0x11, 0x0a, 0x0d, 0x66, 0x69, 0x78, 0x65, 0x64, 0x5f, 0x70, 0x61, 0x63, + 0x6b, 0x65, 0x74, 0x73, 0x10, 0x01, 0x12, 0x11, 0x0a, 0x0d, 0x66, 0x69, 0x78, 0x65, 0x64, 0x5f, + 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x10, 0x02, 0x12, 0x09, 0x0a, 0x05, 0x62, 0x75, 0x72, + 0x73, 0x74, 0x10, 0x03, 0x12, 0x0e, 0x0a, 0x0a, 0x63, 0x6f, 0x6e, 0x74, 0x69, 0x6e, 0x75, 0x6f, + 0x75, 0x73, 0x10, 0x04, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x22, + 0x55, 0x0a, 0x0e, 0x46, 0x6c, 0x6f, 0x77, 0x43, 0x6f, 0x6e, 0x74, 0x69, 0x6e, 0x75, 0x6f, 0x75, + 0x73, 0x12, 0x15, 0x0a, 0x03, 0x67, 0x61, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x00, + 0x52, 0x03, 0x67, 0x61, 0x70, 0x88, 0x01, 0x01, 0x12, 0x24, 0x0a, 0x05, 0x64, 0x65, 0x6c, 0x61, + 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x46, 0x6c, + 0x6f, 0x77, 0x44, 0x65, 0x6c, 0x61, 0x79, 0x52, 0x05, 0x64, 0x65, 0x6c, 0x61, 0x79, 0x42, 0x06, + 0x0a, 0x04, 0x5f, 0x67, 0x61, 0x70, 0x22, 0xb6, 0x02, 0x0a, 0x09, 0x46, 0x6c, 0x6f, 0x77, 0x44, + 0x65, 0x6c, 0x61, 0x79, 0x12, 0x37, 0x0a, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1a, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x46, 0x6c, 0x6f, 0x77, 0x44, + 0x65, 0x6c, 0x61, 0x79, 0x2e, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x2e, 0x45, 0x6e, 0x75, 0x6d, + 0x48, 0x00, 0x52, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, + 0x05, 0x62, 0x79, 0x74, 0x65, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x02, 0x48, 0x01, 0x52, 0x05, + 0x62, 0x79, 0x74, 0x65, 0x73, 0x88, 0x01, 0x01, 0x12, 0x25, 0x0a, 0x0b, 0x6e, 0x61, 0x6e, 0x6f, + 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x02, 0x48, 0x02, 0x52, + 0x0b, 0x6e, 0x61, 0x6e, 0x6f, 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x88, 0x01, 0x01, 0x12, + 0x27, 0x0a, 0x0c, 0x6d, 0x69, 0x63, 0x72, 0x6f, 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x18, + 0x04, 0x20, 0x01, 0x28, 0x02, 0x48, 0x03, 0x52, 0x0c, 0x6d, 0x69, 0x63, 0x72, 0x6f, 0x73, 0x65, + 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x88, 0x01, 0x01, 0x1a, 0x4f, 0x0a, 0x06, 0x43, 0x68, 0x6f, 0x69, + 0x63, 0x65, 0x22, 0x45, 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x0a, 0x0b, 0x75, 0x6e, + 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, 0x62, + 0x79, 0x74, 0x65, 0x73, 0x10, 0x01, 0x12, 0x0f, 0x0a, 0x0b, 0x6e, 0x61, 0x6e, 0x6f, 0x73, 0x65, + 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x10, 0x02, 0x12, 0x10, 0x0a, 0x0c, 0x6d, 0x69, 0x63, 0x72, 0x6f, + 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x10, 0x03, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x63, 0x68, + 0x6f, 0x69, 0x63, 0x65, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x42, 0x0e, + 0x0a, 0x0c, 0x5f, 0x6e, 0x61, 0x6e, 0x6f, 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x42, 0x0f, + 0x0a, 0x0d, 0x5f, 0x6d, 0x69, 0x63, 0x72, 0x6f, 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x22, + 0x82, 0x01, 0x0a, 0x10, 0x46, 0x6c, 0x6f, 0x77, 0x46, 0x69, 0x78, 0x65, 0x64, 0x50, 0x61, 0x63, + 0x6b, 0x65, 0x74, 0x73, 0x12, 0x1d, 0x0a, 0x07, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x00, 0x52, 0x07, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x73, + 0x88, 0x01, 0x01, 0x12, 0x15, 0x0a, 0x03, 0x67, 0x61, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, + 0x48, 0x01, 0x52, 0x03, 0x67, 0x61, 0x70, 0x88, 0x01, 0x01, 0x12, 0x24, 0x0a, 0x05, 0x64, 0x65, + 0x6c, 0x61, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x6f, 0x74, 0x67, 0x2e, + 0x46, 0x6c, 0x6f, 0x77, 0x44, 0x65, 0x6c, 0x61, 0x79, 0x52, 0x05, 0x64, 0x65, 0x6c, 0x61, 0x79, + 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x42, 0x06, 0x0a, 0x04, + 0x5f, 0x67, 0x61, 0x70, 0x22, 0x82, 0x01, 0x0a, 0x10, 0x46, 0x6c, 0x6f, 0x77, 0x46, 0x69, 0x78, + 0x65, 0x64, 0x53, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x12, 0x1d, 0x0a, 0x07, 0x73, 0x65, 0x63, + 0x6f, 0x6e, 0x64, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x02, 0x48, 0x00, 0x52, 0x07, 0x73, 0x65, + 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x88, 0x01, 0x01, 0x12, 0x15, 0x0a, 0x03, 0x67, 0x61, 0x70, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x03, 0x67, 0x61, 0x70, 0x88, 0x01, 0x01, 0x12, + 0x24, 0x0a, 0x05, 0x64, 0x65, 0x6c, 0x61, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, + 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x46, 0x6c, 0x6f, 0x77, 0x44, 0x65, 0x6c, 0x61, 0x79, 0x52, 0x05, + 0x64, 0x65, 0x6c, 0x61, 0x79, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, + 0x73, 0x42, 0x06, 0x0a, 0x04, 0x5f, 0x67, 0x61, 0x70, 0x22, 0xc5, 0x01, 0x0a, 0x09, 0x46, 0x6c, + 0x6f, 0x77, 0x42, 0x75, 0x72, 0x73, 0x74, 0x12, 0x1b, 0x0a, 0x06, 0x62, 0x75, 0x72, 0x73, 0x74, + 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x00, 0x52, 0x06, 0x62, 0x75, 0x72, 0x73, 0x74, + 0x73, 0x88, 0x01, 0x01, 0x12, 0x1d, 0x0a, 0x07, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x07, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x73, + 0x88, 0x01, 0x01, 0x12, 0x15, 0x0a, 0x03, 0x67, 0x61, 0x70, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, + 0x48, 0x02, 0x52, 0x03, 0x67, 0x61, 0x70, 0x88, 0x01, 0x01, 0x12, 0x46, 0x0a, 0x0f, 0x69, 0x6e, + 0x74, 0x65, 0x72, 0x5f, 0x62, 0x75, 0x72, 0x73, 0x74, 0x5f, 0x67, 0x61, 0x70, 0x18, 0x04, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x46, 0x6c, 0x6f, 0x77, 0x44, 0x75, + 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x42, 0x75, 0x72, 0x73, 0x74, + 0x47, 0x61, 0x70, 0x52, 0x0d, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x42, 0x75, 0x72, 0x73, 0x74, 0x47, + 0x61, 0x70, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x62, 0x75, 0x72, 0x73, 0x74, 0x73, 0x42, 0x0a, 0x0a, + 0x08, 0x5f, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x42, 0x06, 0x0a, 0x04, 0x5f, 0x67, 0x61, + 0x70, 0x22, 0xd6, 0x02, 0x0a, 0x19, 0x46, 0x6c, 0x6f, 0x77, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x42, 0x75, 0x72, 0x73, 0x74, 0x47, 0x61, 0x70, 0x12, + 0x47, 0x0a, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, + 0x2a, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x46, 0x6c, 0x6f, 0x77, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x42, 0x75, 0x72, 0x73, 0x74, 0x47, 0x61, 0x70, 0x2e, + 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x48, 0x00, 0x52, 0x06, 0x63, + 0x68, 0x6f, 0x69, 0x63, 0x65, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x62, 0x79, 0x74, 0x65, + 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x01, 0x48, 0x01, 0x52, 0x05, 0x62, 0x79, 0x74, 0x65, 0x73, + 0x88, 0x01, 0x01, 0x12, 0x25, 0x0a, 0x0b, 0x6e, 0x61, 0x6e, 0x6f, 0x73, 0x65, 0x63, 0x6f, 0x6e, + 0x64, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x01, 0x48, 0x02, 0x52, 0x0b, 0x6e, 0x61, 0x6e, 0x6f, + 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x88, 0x01, 0x01, 0x12, 0x27, 0x0a, 0x0c, 0x6d, 0x69, + 0x63, 0x72, 0x6f, 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x01, + 0x48, 0x03, 0x52, 0x0c, 0x6d, 0x69, 0x63, 0x72, 0x6f, 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, + 0x88, 0x01, 0x01, 0x1a, 0x4f, 0x0a, 0x06, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x22, 0x45, 0x0a, + 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x0a, 0x0b, 0x75, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, + 0x66, 0x69, 0x65, 0x64, 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, 0x62, 0x79, 0x74, 0x65, 0x73, 0x10, + 0x01, 0x12, 0x0f, 0x0a, 0x0b, 0x6e, 0x61, 0x6e, 0x6f, 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, + 0x10, 0x02, 0x12, 0x10, 0x0a, 0x0c, 0x6d, 0x69, 0x63, 0x72, 0x6f, 0x73, 0x65, 0x63, 0x6f, 0x6e, + 0x64, 0x73, 0x10, 0x03, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x42, + 0x08, 0x0a, 0x06, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x6e, 0x61, + 0x6e, 0x6f, 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x6d, 0x69, + 0x63, 0x72, 0x6f, 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x22, 0xc1, 0x02, 0x0a, 0x0b, 0x46, + 0x6c, 0x6f, 0x77, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x12, 0x1b, 0x0a, 0x06, 0x65, 0x6e, + 0x61, 0x62, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x48, 0x00, 0x52, 0x06, 0x65, 0x6e, + 0x61, 0x62, 0x6c, 0x65, 0x88, 0x01, 0x01, 0x12, 0x17, 0x0a, 0x04, 0x6c, 0x6f, 0x73, 0x73, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x08, 0x48, 0x01, 0x52, 0x04, 0x6c, 0x6f, 0x73, 0x73, 0x88, 0x01, 0x01, + 0x12, 0x32, 0x0a, 0x0b, 0x72, 0x78, 0x5f, 0x74, 0x78, 0x5f, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x18, + 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x46, 0x6c, 0x6f, 0x77, + 0x52, 0x78, 0x54, 0x78, 0x52, 0x61, 0x74, 0x69, 0x6f, 0x52, 0x09, 0x72, 0x78, 0x54, 0x78, 0x52, + 0x61, 0x74, 0x69, 0x6f, 0x12, 0x23, 0x0a, 0x0a, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, + 0x70, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x48, 0x02, 0x52, 0x0a, 0x74, 0x69, 0x6d, 0x65, + 0x73, 0x74, 0x61, 0x6d, 0x70, 0x73, 0x88, 0x01, 0x01, 0x12, 0x31, 0x0a, 0x07, 0x6c, 0x61, 0x74, + 0x65, 0x6e, 0x63, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x6f, 0x74, 0x67, + 0x2e, 0x46, 0x6c, 0x6f, 0x77, 0x4c, 0x61, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x4d, 0x65, 0x74, 0x72, + 0x69, 0x63, 0x73, 0x52, 0x07, 0x6c, 0x61, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x12, 0x4d, 0x0a, 0x16, + 0x70, 0x72, 0x65, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x65, 0x64, 0x5f, 0x6d, 0x65, 0x74, 0x72, 0x69, + 0x63, 0x5f, 0x74, 0x61, 0x67, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x6f, + 0x74, 0x67, 0x2e, 0x46, 0x6c, 0x6f, 0x77, 0x50, 0x72, 0x65, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x65, + 0x64, 0x54, 0x61, 0x67, 0x73, 0x52, 0x14, 0x70, 0x72, 0x65, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x65, + 0x64, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x73, 0x42, 0x09, 0x0a, 0x07, 0x5f, + 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x6c, 0x6f, 0x73, 0x73, 0x42, + 0x0d, 0x0a, 0x0b, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x73, 0x22, 0xc6, + 0x01, 0x0a, 0x12, 0x46, 0x6c, 0x6f, 0x77, 0x4c, 0x61, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x4d, 0x65, + 0x74, 0x72, 0x69, 0x63, 0x73, 0x12, 0x1b, 0x0a, 0x06, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x48, 0x00, 0x52, 0x06, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x88, - 0x01, 0x01, 0x12, 0x21, 0x0a, 0x09, 0x74, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x02, 0x48, 0x01, 0x52, 0x09, 0x74, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, - 0x6c, 0x64, 0x88, 0x01, 0x01, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, - 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x74, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x22, 0x33, - 0x0a, 0x09, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x4c, 0x69, 0x6e, 0x6b, 0x12, 0x1b, 0x0a, 0x06, 0x65, - 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x48, 0x00, 0x52, 0x06, 0x65, - 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x88, 0x01, 0x01, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x65, 0x6e, 0x61, - 0x62, 0x6c, 0x65, 0x22, 0x45, 0x0a, 0x1b, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x52, 0x6f, 0x75, 0x74, - 0x65, 0x41, 0x64, 0x76, 0x65, 0x72, 0x74, 0x69, 0x73, 0x65, 0x57, 0x69, 0x74, 0x68, 0x64, 0x72, - 0x61, 0x77, 0x12, 0x1b, 0x0a, 0x06, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x08, 0x48, 0x00, 0x52, 0x06, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x88, 0x01, 0x01, 0x42, - 0x09, 0x0a, 0x07, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x22, 0x83, 0x02, 0x0a, 0x0c, 0x45, - 0x76, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2f, 0x0a, 0x04, 0x74, - 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x1b, 0x2e, 0x6f, 0x74, 0x67, 0x2e, - 0x45, 0x76, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x54, 0x79, 0x70, - 0x65, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x16, 0x0a, 0x06, - 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x06, 0x73, 0x6f, - 0x75, 0x72, 0x63, 0x65, 0x1a, 0xa9, 0x01, 0x0a, 0x04, 0x54, 0x79, 0x70, 0x65, 0x22, 0xa0, 0x01, - 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x0a, 0x0b, 0x75, 0x6e, 0x73, 0x70, 0x65, 0x63, - 0x69, 0x66, 0x69, 0x65, 0x64, 0x10, 0x00, 0x12, 0x0d, 0x0a, 0x09, 0x6c, 0x69, 0x6e, 0x6b, 0x5f, - 0x64, 0x6f, 0x77, 0x6e, 0x10, 0x01, 0x12, 0x0b, 0x0a, 0x07, 0x6c, 0x69, 0x6e, 0x6b, 0x5f, 0x75, - 0x70, 0x10, 0x02, 0x12, 0x12, 0x0a, 0x0e, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x5f, 0x77, 0x69, 0x74, - 0x68, 0x64, 0x72, 0x61, 0x77, 0x10, 0x03, 0x12, 0x13, 0x0a, 0x0f, 0x72, 0x6f, 0x75, 0x74, 0x65, - 0x5f, 0x61, 0x64, 0x76, 0x65, 0x72, 0x74, 0x69, 0x73, 0x65, 0x10, 0x04, 0x12, 0x20, 0x0a, 0x1c, - 0x66, 0x6c, 0x6f, 0x77, 0x5f, 0x72, 0x78, 0x5f, 0x72, 0x61, 0x74, 0x65, 0x5f, 0x61, 0x62, 0x6f, - 0x76, 0x65, 0x5f, 0x74, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x10, 0x05, 0x12, 0x20, - 0x0a, 0x1c, 0x66, 0x6c, 0x6f, 0x77, 0x5f, 0x72, 0x78, 0x5f, 0x72, 0x61, 0x74, 0x65, 0x5f, 0x62, - 0x65, 0x6c, 0x6f, 0x77, 0x5f, 0x74, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x10, 0x06, - 0x22, 0x77, 0x0a, 0x11, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, - 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x29, 0x0a, 0x06, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x45, 0x76, 0x65, 0x6e, - 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x52, 0x06, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, - 0x12, 0x26, 0x0a, 0x0c, 0x63, 0x61, 0x6c, 0x6c, 0x62, 0x61, 0x63, 0x6b, 0x5f, 0x75, 0x72, 0x6c, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x0b, 0x63, 0x61, 0x6c, 0x6c, 0x62, 0x61, - 0x63, 0x6b, 0x55, 0x72, 0x6c, 0x88, 0x01, 0x01, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x63, 0x61, 0x6c, - 0x6c, 0x62, 0x61, 0x63, 0x6b, 0x5f, 0x75, 0x72, 0x6c, 0x22, 0xf7, 0x02, 0x0a, 0x04, 0x4c, 0x6c, - 0x64, 0x70, 0x12, 0x33, 0x0a, 0x0a, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x4c, 0x6c, 0x64, - 0x70, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0a, 0x63, 0x6f, 0x6e, - 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x31, 0x0a, 0x0a, 0x63, 0x68, 0x61, 0x73, 0x73, - 0x69, 0x73, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x6f, 0x74, - 0x67, 0x2e, 0x4c, 0x6c, 0x64, 0x70, 0x43, 0x68, 0x61, 0x73, 0x73, 0x69, 0x73, 0x49, 0x64, 0x52, - 0x09, 0x63, 0x68, 0x61, 0x73, 0x73, 0x69, 0x73, 0x49, 0x64, 0x12, 0x28, 0x0a, 0x07, 0x70, 0x6f, - 0x72, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x6f, 0x74, - 0x67, 0x2e, 0x4c, 0x6c, 0x64, 0x70, 0x50, 0x6f, 0x72, 0x74, 0x49, 0x64, 0x52, 0x06, 0x70, 0x6f, - 0x72, 0x74, 0x49, 0x64, 0x12, 0x34, 0x0a, 0x0b, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x5f, 0x6e, - 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x6f, 0x74, 0x67, 0x2e, - 0x4c, 0x6c, 0x64, 0x70, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x4e, 0x61, 0x6d, 0x65, 0x52, 0x0a, - 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x09, 0x68, 0x6f, - 0x6c, 0x64, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x00, 0x52, - 0x08, 0x68, 0x6f, 0x6c, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, 0x3a, 0x0a, 0x16, + 0x01, 0x01, 0x12, 0x3a, 0x0a, 0x04, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, + 0x32, 0x21, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x46, 0x6c, 0x6f, 0x77, 0x4c, 0x61, 0x74, 0x65, 0x6e, + 0x63, 0x79, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x2e, 0x4d, 0x6f, 0x64, 0x65, 0x2e, 0x45, + 0x6e, 0x75, 0x6d, 0x48, 0x01, 0x52, 0x04, 0x6d, 0x6f, 0x64, 0x65, 0x88, 0x01, 0x01, 0x1a, 0x43, + 0x0a, 0x04, 0x4d, 0x6f, 0x64, 0x65, 0x22, 0x3b, 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0f, + 0x0a, 0x0b, 0x75, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x10, 0x00, 0x12, + 0x11, 0x0a, 0x0d, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x5f, 0x66, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, + 0x10, 0x01, 0x12, 0x0f, 0x0a, 0x0b, 0x63, 0x75, 0x74, 0x5f, 0x74, 0x68, 0x72, 0x6f, 0x75, 0x67, + 0x68, 0x10, 0x02, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x42, 0x07, + 0x0a, 0x05, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x22, 0x3e, 0x0a, 0x12, 0x46, 0x6c, 0x6f, 0x77, 0x50, + 0x72, 0x65, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x65, 0x64, 0x54, 0x61, 0x67, 0x73, 0x12, 0x1c, 0x0a, + 0x07, 0x72, 0x78, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x48, 0x00, + 0x52, 0x06, 0x72, 0x78, 0x4e, 0x61, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x42, 0x0a, 0x0a, 0x08, 0x5f, + 0x72, 0x78, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0xee, 0x01, 0x0a, 0x0d, 0x46, 0x6c, 0x6f, 0x77, + 0x52, 0x78, 0x54, 0x78, 0x52, 0x61, 0x74, 0x69, 0x6f, 0x12, 0x3b, 0x0a, 0x06, 0x63, 0x68, 0x6f, + 0x69, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1e, 0x2e, 0x6f, 0x74, 0x67, 0x2e, + 0x46, 0x6c, 0x6f, 0x77, 0x52, 0x78, 0x54, 0x78, 0x52, 0x61, 0x74, 0x69, 0x6f, 0x2e, 0x43, 0x68, + 0x6f, 0x69, 0x63, 0x65, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x48, 0x00, 0x52, 0x06, 0x63, 0x68, 0x6f, + 0x69, 0x63, 0x65, 0x88, 0x01, 0x01, 0x12, 0x34, 0x0a, 0x08, 0x72, 0x78, 0x5f, 0x63, 0x6f, 0x75, + 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x46, + 0x6c, 0x6f, 0x77, 0x52, 0x78, 0x54, 0x78, 0x52, 0x61, 0x74, 0x69, 0x6f, 0x52, 0x78, 0x43, 0x6f, + 0x75, 0x6e, 0x74, 0x52, 0x07, 0x72, 0x78, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x19, 0x0a, 0x05, + 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x02, 0x48, 0x01, 0x52, 0x05, 0x76, + 0x61, 0x6c, 0x75, 0x65, 0x88, 0x01, 0x01, 0x1a, 0x3a, 0x0a, 0x06, 0x43, 0x68, 0x6f, 0x69, 0x63, + 0x65, 0x22, 0x30, 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x0a, 0x0b, 0x75, 0x6e, 0x73, + 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x10, 0x00, 0x12, 0x0c, 0x0a, 0x08, 0x72, 0x78, + 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x10, 0x01, 0x12, 0x09, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, + 0x65, 0x10, 0x02, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x42, 0x08, + 0x0a, 0x06, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x16, 0x0a, 0x14, 0x46, 0x6c, 0x6f, 0x77, + 0x52, 0x78, 0x54, 0x78, 0x52, 0x61, 0x74, 0x69, 0x6f, 0x52, 0x78, 0x43, 0x6f, 0x75, 0x6e, 0x74, + 0x22, 0xf6, 0x01, 0x0a, 0x05, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x1b, 0x0a, 0x06, 0x65, 0x6e, + 0x61, 0x62, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x48, 0x00, 0x52, 0x06, 0x65, 0x6e, + 0x61, 0x62, 0x6c, 0x65, 0x88, 0x01, 0x01, 0x12, 0x22, 0x0a, 0x04, 0x6c, 0x69, 0x6e, 0x6b, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x45, 0x76, 0x65, 0x6e, + 0x74, 0x4c, 0x69, 0x6e, 0x6b, 0x52, 0x04, 0x6c, 0x69, 0x6e, 0x6b, 0x12, 0x45, 0x0a, 0x11, 0x72, + 0x78, 0x5f, 0x72, 0x61, 0x74, 0x65, 0x5f, 0x74, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x45, 0x76, 0x65, + 0x6e, 0x74, 0x52, 0x78, 0x52, 0x61, 0x74, 0x65, 0x54, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, + 0x64, 0x52, 0x0f, 0x72, 0x78, 0x52, 0x61, 0x74, 0x65, 0x54, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, + 0x6c, 0x64, 0x12, 0x5a, 0x0a, 0x18, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x5f, 0x61, 0x64, 0x76, 0x65, + 0x72, 0x74, 0x69, 0x73, 0x65, 0x5f, 0x77, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x18, 0x04, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x45, 0x76, 0x65, 0x6e, 0x74, + 0x52, 0x6f, 0x75, 0x74, 0x65, 0x41, 0x64, 0x76, 0x65, 0x72, 0x74, 0x69, 0x73, 0x65, 0x57, 0x69, + 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x52, 0x16, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x41, 0x64, 0x76, + 0x65, 0x72, 0x74, 0x69, 0x73, 0x65, 0x57, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x42, 0x09, + 0x0a, 0x07, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x22, 0x6f, 0x0a, 0x14, 0x45, 0x76, 0x65, + 0x6e, 0x74, 0x52, 0x78, 0x52, 0x61, 0x74, 0x65, 0x54, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, + 0x64, 0x12, 0x1b, 0x0a, 0x06, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x08, 0x48, 0x00, 0x52, 0x06, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x88, 0x01, 0x01, 0x12, 0x21, + 0x0a, 0x09, 0x74, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x02, 0x48, 0x01, 0x52, 0x09, 0x74, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x88, 0x01, + 0x01, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x42, 0x0c, 0x0a, 0x0a, + 0x5f, 0x74, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x22, 0x33, 0x0a, 0x09, 0x45, 0x76, + 0x65, 0x6e, 0x74, 0x4c, 0x69, 0x6e, 0x6b, 0x12, 0x1b, 0x0a, 0x06, 0x65, 0x6e, 0x61, 0x62, 0x6c, + 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x48, 0x00, 0x52, 0x06, 0x65, 0x6e, 0x61, 0x62, 0x6c, + 0x65, 0x88, 0x01, 0x01, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x22, + 0x45, 0x0a, 0x1b, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x41, 0x64, 0x76, + 0x65, 0x72, 0x74, 0x69, 0x73, 0x65, 0x57, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x12, 0x1b, + 0x0a, 0x06, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x48, 0x00, + 0x52, 0x06, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x88, 0x01, 0x01, 0x42, 0x09, 0x0a, 0x07, 0x5f, + 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x22, 0x83, 0x02, 0x0a, 0x0c, 0x45, 0x76, 0x65, 0x6e, 0x74, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2f, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, + 0x01, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x1b, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x45, 0x76, 0x65, 0x6e, + 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x54, 0x79, 0x70, 0x65, 0x2e, 0x45, 0x6e, + 0x75, 0x6d, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x6f, 0x75, 0x72, + 0x63, 0x65, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x06, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, + 0x1a, 0xa9, 0x01, 0x0a, 0x04, 0x54, 0x79, 0x70, 0x65, 0x22, 0xa0, 0x01, 0x0a, 0x04, 0x45, 0x6e, + 0x75, 0x6d, 0x12, 0x0f, 0x0a, 0x0b, 0x75, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, + 0x64, 0x10, 0x00, 0x12, 0x0d, 0x0a, 0x09, 0x6c, 0x69, 0x6e, 0x6b, 0x5f, 0x64, 0x6f, 0x77, 0x6e, + 0x10, 0x01, 0x12, 0x0b, 0x0a, 0x07, 0x6c, 0x69, 0x6e, 0x6b, 0x5f, 0x75, 0x70, 0x10, 0x02, 0x12, + 0x12, 0x0a, 0x0e, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x5f, 0x77, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, + 0x77, 0x10, 0x03, 0x12, 0x13, 0x0a, 0x0f, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x5f, 0x61, 0x64, 0x76, + 0x65, 0x72, 0x74, 0x69, 0x73, 0x65, 0x10, 0x04, 0x12, 0x20, 0x0a, 0x1c, 0x66, 0x6c, 0x6f, 0x77, + 0x5f, 0x72, 0x78, 0x5f, 0x72, 0x61, 0x74, 0x65, 0x5f, 0x61, 0x62, 0x6f, 0x76, 0x65, 0x5f, 0x74, + 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x10, 0x05, 0x12, 0x20, 0x0a, 0x1c, 0x66, 0x6c, + 0x6f, 0x77, 0x5f, 0x72, 0x78, 0x5f, 0x72, 0x61, 0x74, 0x65, 0x5f, 0x62, 0x65, 0x6c, 0x6f, 0x77, + 0x5f, 0x74, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x10, 0x06, 0x22, 0x77, 0x0a, 0x11, + 0x45, 0x76, 0x65, 0x6e, 0x74, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, + 0x6e, 0x12, 0x29, 0x0a, 0x06, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x11, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x52, 0x06, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x26, 0x0a, 0x0c, + 0x63, 0x61, 0x6c, 0x6c, 0x62, 0x61, 0x63, 0x6b, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x09, 0x48, 0x00, 0x52, 0x0b, 0x63, 0x61, 0x6c, 0x6c, 0x62, 0x61, 0x63, 0x6b, 0x55, 0x72, + 0x6c, 0x88, 0x01, 0x01, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x63, 0x61, 0x6c, 0x6c, 0x62, 0x61, 0x63, + 0x6b, 0x5f, 0x75, 0x72, 0x6c, 0x22, 0xf7, 0x02, 0x0a, 0x04, 0x4c, 0x6c, 0x64, 0x70, 0x12, 0x33, + 0x0a, 0x0a, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x4c, 0x6c, 0x64, 0x70, 0x43, 0x6f, 0x6e, + 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0a, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, + 0x69, 0x6f, 0x6e, 0x12, 0x31, 0x0a, 0x0a, 0x63, 0x68, 0x61, 0x73, 0x73, 0x69, 0x73, 0x5f, 0x69, + 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x4c, 0x6c, + 0x64, 0x70, 0x43, 0x68, 0x61, 0x73, 0x73, 0x69, 0x73, 0x49, 0x64, 0x52, 0x09, 0x63, 0x68, 0x61, + 0x73, 0x73, 0x69, 0x73, 0x49, 0x64, 0x12, 0x28, 0x0a, 0x07, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x69, + 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x4c, 0x6c, + 0x64, 0x70, 0x50, 0x6f, 0x72, 0x74, 0x49, 0x64, 0x52, 0x06, 0x70, 0x6f, 0x72, 0x74, 0x49, 0x64, + 0x12, 0x34, 0x0a, 0x0b, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, + 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x4c, 0x6c, 0x64, 0x70, + 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x4e, 0x61, 0x6d, 0x65, 0x52, 0x0a, 0x73, 0x79, 0x73, 0x74, + 0x65, 0x6d, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x09, 0x68, 0x6f, 0x6c, 0x64, 0x5f, 0x74, + 0x69, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x00, 0x52, 0x08, 0x68, 0x6f, 0x6c, + 0x64, 0x54, 0x69, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, 0x3a, 0x0a, 0x16, 0x61, 0x64, 0x76, 0x65, + 0x72, 0x74, 0x69, 0x73, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, + 0x61, 0x6c, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x15, 0x61, 0x64, 0x76, 0x65, + 0x72, 0x74, 0x69, 0x73, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, + 0x6c, 0x88, 0x01, 0x01, 0x12, 0x17, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x07, 0x20, 0x01, + 0x28, 0x09, 0x48, 0x02, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x42, 0x0c, 0x0a, + 0x0a, 0x5f, 0x68, 0x6f, 0x6c, 0x64, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x42, 0x19, 0x0a, 0x17, 0x5f, 0x61, 0x64, 0x76, 0x65, 0x72, 0x74, 0x69, 0x73, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x6e, - 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x15, - 0x61, 0x64, 0x76, 0x65, 0x72, 0x74, 0x69, 0x73, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x6e, 0x74, - 0x65, 0x72, 0x76, 0x61, 0x6c, 0x88, 0x01, 0x01, 0x12, 0x17, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, - 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x48, 0x02, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x88, 0x01, - 0x01, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x68, 0x6f, 0x6c, 0x64, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x42, - 0x19, 0x0a, 0x17, 0x5f, 0x61, 0x64, 0x76, 0x65, 0x72, 0x74, 0x69, 0x73, 0x65, 0x6d, 0x65, 0x6e, - 0x74, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x6e, - 0x61, 0x6d, 0x65, 0x22, 0xbb, 0x01, 0x0a, 0x0e, 0x4c, 0x6c, 0x64, 0x70, 0x43, 0x6f, 0x6e, 0x6e, - 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x3c, 0x0a, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1f, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x4c, 0x6c, 0x64, - 0x70, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x43, 0x68, 0x6f, 0x69, - 0x63, 0x65, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x48, 0x00, 0x52, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, - 0x65, 0x88, 0x01, 0x01, 0x12, 0x20, 0x0a, 0x09, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x6e, 0x61, 0x6d, - 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, 0x52, 0x08, 0x70, 0x6f, 0x72, 0x74, 0x4e, - 0x61, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x1a, 0x30, 0x0a, 0x06, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, - 0x22, 0x26, 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x0a, 0x0b, 0x75, 0x6e, 0x73, 0x70, - 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x10, 0x00, 0x12, 0x0d, 0x0a, 0x09, 0x70, 0x6f, 0x72, - 0x74, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x10, 0x01, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x63, 0x68, 0x6f, - 0x69, 0x63, 0x65, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x6e, 0x61, 0x6d, - 0x65, 0x22, 0xa0, 0x03, 0x0a, 0x0d, 0x4c, 0x6c, 0x64, 0x70, 0x43, 0x68, 0x61, 0x73, 0x73, 0x69, - 0x73, 0x49, 0x64, 0x12, 0x3b, 0x0a, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x0e, 0x32, 0x1e, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x4c, 0x6c, 0x64, 0x70, 0x43, 0x68, - 0x61, 0x73, 0x73, 0x69, 0x73, 0x49, 0x64, 0x2e, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x2e, 0x45, + 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x22, + 0xbb, 0x01, 0x0a, 0x0e, 0x4c, 0x6c, 0x64, 0x70, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, + 0x6f, 0x6e, 0x12, 0x3c, 0x0a, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x0e, 0x32, 0x1f, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x4c, 0x6c, 0x64, 0x70, 0x43, 0x6f, 0x6e, + 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x48, 0x00, 0x52, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x88, 0x01, 0x01, - 0x12, 0x4a, 0x0a, 0x13, 0x6d, 0x61, 0x63, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x5f, - 0x73, 0x75, 0x62, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, - 0x6f, 0x74, 0x67, 0x2e, 0x4c, 0x6c, 0x64, 0x70, 0x43, 0x68, 0x61, 0x73, 0x73, 0x69, 0x73, 0x4d, - 0x61, 0x63, 0x53, 0x75, 0x62, 0x54, 0x79, 0x70, 0x65, 0x52, 0x11, 0x6d, 0x61, 0x63, 0x41, 0x64, - 0x64, 0x72, 0x65, 0x73, 0x73, 0x53, 0x75, 0x62, 0x74, 0x79, 0x70, 0x65, 0x12, 0x39, 0x0a, 0x16, - 0x69, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x5f, 0x73, - 0x75, 0x62, 0x74, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, 0x52, 0x14, - 0x69, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x53, 0x75, 0x62, - 0x74, 0x79, 0x70, 0x65, 0x88, 0x01, 0x01, 0x12, 0x28, 0x0a, 0x0d, 0x6c, 0x6f, 0x63, 0x61, 0x6c, + 0x12, 0x20, 0x0a, 0x09, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x09, 0x48, 0x01, 0x52, 0x08, 0x70, 0x6f, 0x72, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x88, + 0x01, 0x01, 0x1a, 0x30, 0x0a, 0x06, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x22, 0x26, 0x0a, 0x04, + 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x0a, 0x0b, 0x75, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, + 0x69, 0x65, 0x64, 0x10, 0x00, 0x12, 0x0d, 0x0a, 0x09, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x6e, 0x61, + 0x6d, 0x65, 0x10, 0x01, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x42, + 0x0c, 0x0a, 0x0a, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0xa0, 0x03, + 0x0a, 0x0d, 0x4c, 0x6c, 0x64, 0x70, 0x43, 0x68, 0x61, 0x73, 0x73, 0x69, 0x73, 0x49, 0x64, 0x12, + 0x3b, 0x0a, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, + 0x1e, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x4c, 0x6c, 0x64, 0x70, 0x43, 0x68, 0x61, 0x73, 0x73, 0x69, + 0x73, 0x49, 0x64, 0x2e, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x48, + 0x00, 0x52, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x88, 0x01, 0x01, 0x12, 0x4a, 0x0a, 0x13, + 0x6d, 0x61, 0x63, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x5f, 0x73, 0x75, 0x62, 0x74, + 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x6f, 0x74, 0x67, 0x2e, + 0x4c, 0x6c, 0x64, 0x70, 0x43, 0x68, 0x61, 0x73, 0x73, 0x69, 0x73, 0x4d, 0x61, 0x63, 0x53, 0x75, + 0x62, 0x54, 0x79, 0x70, 0x65, 0x52, 0x11, 0x6d, 0x61, 0x63, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, + 0x73, 0x53, 0x75, 0x62, 0x74, 0x79, 0x70, 0x65, 0x12, 0x39, 0x0a, 0x16, 0x69, 0x6e, 0x74, 0x65, + 0x72, 0x66, 0x61, 0x63, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x5f, 0x73, 0x75, 0x62, 0x74, 0x79, + 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, 0x52, 0x14, 0x69, 0x6e, 0x74, 0x65, + 0x72, 0x66, 0x61, 0x63, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x53, 0x75, 0x62, 0x74, 0x79, 0x70, 0x65, + 0x88, 0x01, 0x01, 0x12, 0x28, 0x0a, 0x0d, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x5f, 0x73, 0x75, 0x62, + 0x74, 0x79, 0x70, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x48, 0x02, 0x52, 0x0c, 0x6c, 0x6f, + 0x63, 0x61, 0x6c, 0x53, 0x75, 0x62, 0x74, 0x79, 0x70, 0x65, 0x88, 0x01, 0x01, 0x1a, 0x69, 0x0a, + 0x06, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x22, 0x5f, 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, + 0x0f, 0x0a, 0x0b, 0x75, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x10, 0x00, + 0x12, 0x17, 0x0a, 0x13, 0x6d, 0x61, 0x63, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x5f, + 0x73, 0x75, 0x62, 0x74, 0x79, 0x70, 0x65, 0x10, 0x01, 0x12, 0x1a, 0x0a, 0x16, 0x69, 0x6e, 0x74, + 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x5f, 0x73, 0x75, 0x62, 0x74, + 0x79, 0x70, 0x65, 0x10, 0x02, 0x12, 0x11, 0x0a, 0x0d, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x5f, 0x73, + 0x75, 0x62, 0x74, 0x79, 0x70, 0x65, 0x10, 0x03, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x63, 0x68, 0x6f, + 0x69, 0x63, 0x65, 0x42, 0x19, 0x0a, 0x17, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, + 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x5f, 0x73, 0x75, 0x62, 0x74, 0x79, 0x70, 0x65, 0x42, 0x10, + 0x0a, 0x0e, 0x5f, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x5f, 0x73, 0x75, 0x62, 0x74, 0x79, 0x70, 0x65, + 0x22, 0x9e, 0x03, 0x0a, 0x0a, 0x4c, 0x6c, 0x64, 0x70, 0x50, 0x6f, 0x72, 0x74, 0x49, 0x64, 0x12, + 0x38, 0x0a, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, + 0x1b, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x4c, 0x6c, 0x64, 0x70, 0x50, 0x6f, 0x72, 0x74, 0x49, 0x64, + 0x2e, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x48, 0x00, 0x52, 0x06, + 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x88, 0x01, 0x01, 0x12, 0x33, 0x0a, 0x13, 0x6d, 0x61, 0x63, + 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x5f, 0x73, 0x75, 0x62, 0x74, 0x79, 0x70, 0x65, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, 0x52, 0x11, 0x6d, 0x61, 0x63, 0x41, 0x64, 0x64, + 0x72, 0x65, 0x73, 0x73, 0x53, 0x75, 0x62, 0x74, 0x79, 0x70, 0x65, 0x88, 0x01, 0x01, 0x12, 0x57, + 0x0a, 0x16, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, + 0x5f, 0x73, 0x75, 0x62, 0x74, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, + 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x4c, 0x6c, 0x64, 0x70, 0x50, 0x6f, 0x72, 0x74, 0x49, 0x6e, 0x74, + 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x53, 0x75, 0x62, 0x54, 0x79, 0x70, + 0x65, 0x52, 0x14, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x4e, 0x61, 0x6d, 0x65, + 0x53, 0x75, 0x62, 0x74, 0x79, 0x70, 0x65, 0x12, 0x28, 0x0a, 0x0d, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x5f, 0x73, 0x75, 0x62, 0x74, 0x79, 0x70, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x48, 0x02, 0x52, 0x0c, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x53, 0x75, 0x62, 0x74, 0x79, 0x70, 0x65, 0x88, 0x01, 0x01, 0x1a, 0x69, 0x0a, 0x06, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x22, 0x5f, 0x0a, 0x04, 0x45, @@ -97979,2606 +112940,2530 @@ var file_otg_proto_rawDesc = []byte{ 0x16, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x5f, 0x73, 0x75, 0x62, 0x74, 0x79, 0x70, 0x65, 0x10, 0x02, 0x12, 0x11, 0x0a, 0x0d, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x5f, 0x73, 0x75, 0x62, 0x74, 0x79, 0x70, 0x65, 0x10, 0x03, 0x42, 0x09, 0x0a, 0x07, - 0x5f, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x42, 0x19, 0x0a, 0x17, 0x5f, 0x69, 0x6e, 0x74, 0x65, - 0x72, 0x66, 0x61, 0x63, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x5f, 0x73, 0x75, 0x62, 0x74, 0x79, - 0x70, 0x65, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x5f, 0x73, 0x75, 0x62, - 0x74, 0x79, 0x70, 0x65, 0x22, 0x9e, 0x03, 0x0a, 0x0a, 0x4c, 0x6c, 0x64, 0x70, 0x50, 0x6f, 0x72, - 0x74, 0x49, 0x64, 0x12, 0x38, 0x0a, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x0e, 0x32, 0x1b, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x4c, 0x6c, 0x64, 0x70, 0x50, 0x6f, - 0x72, 0x74, 0x49, 0x64, 0x2e, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x2e, 0x45, 0x6e, 0x75, 0x6d, - 0x48, 0x00, 0x52, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x88, 0x01, 0x01, 0x12, 0x33, 0x0a, - 0x13, 0x6d, 0x61, 0x63, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x5f, 0x73, 0x75, 0x62, - 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, 0x52, 0x11, 0x6d, 0x61, - 0x63, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x53, 0x75, 0x62, 0x74, 0x79, 0x70, 0x65, 0x88, - 0x01, 0x01, 0x12, 0x57, 0x0a, 0x16, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x5f, - 0x6e, 0x61, 0x6d, 0x65, 0x5f, 0x73, 0x75, 0x62, 0x74, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x4c, 0x6c, 0x64, 0x70, 0x50, 0x6f, 0x72, - 0x74, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x53, 0x75, - 0x62, 0x54, 0x79, 0x70, 0x65, 0x52, 0x14, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, - 0x4e, 0x61, 0x6d, 0x65, 0x53, 0x75, 0x62, 0x74, 0x79, 0x70, 0x65, 0x12, 0x28, 0x0a, 0x0d, 0x6c, - 0x6f, 0x63, 0x61, 0x6c, 0x5f, 0x73, 0x75, 0x62, 0x74, 0x79, 0x70, 0x65, 0x18, 0x04, 0x20, 0x01, - 0x28, 0x09, 0x48, 0x02, 0x52, 0x0c, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x53, 0x75, 0x62, 0x74, 0x79, - 0x70, 0x65, 0x88, 0x01, 0x01, 0x1a, 0x69, 0x0a, 0x06, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x22, - 0x5f, 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x0a, 0x0b, 0x75, 0x6e, 0x73, 0x70, 0x65, - 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x10, 0x00, 0x12, 0x17, 0x0a, 0x13, 0x6d, 0x61, 0x63, 0x5f, - 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x5f, 0x73, 0x75, 0x62, 0x74, 0x79, 0x70, 0x65, 0x10, - 0x01, 0x12, 0x1a, 0x0a, 0x16, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x5f, 0x6e, - 0x61, 0x6d, 0x65, 0x5f, 0x73, 0x75, 0x62, 0x74, 0x79, 0x70, 0x65, 0x10, 0x02, 0x12, 0x11, 0x0a, - 0x0d, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x5f, 0x73, 0x75, 0x62, 0x74, 0x79, 0x70, 0x65, 0x10, 0x03, - 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x42, 0x16, 0x0a, 0x14, 0x5f, - 0x6d, 0x61, 0x63, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x5f, 0x73, 0x75, 0x62, 0x74, - 0x79, 0x70, 0x65, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x5f, 0x73, 0x75, - 0x62, 0x74, 0x79, 0x70, 0x65, 0x22, 0xe6, 0x01, 0x0a, 0x15, 0x4c, 0x6c, 0x64, 0x70, 0x43, 0x68, - 0x61, 0x73, 0x73, 0x69, 0x73, 0x4d, 0x61, 0x63, 0x53, 0x75, 0x62, 0x54, 0x79, 0x70, 0x65, 0x12, - 0x43, 0x0a, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, - 0x26, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x4c, 0x6c, 0x64, 0x70, 0x43, 0x68, 0x61, 0x73, 0x73, 0x69, - 0x73, 0x4d, 0x61, 0x63, 0x53, 0x75, 0x62, 0x54, 0x79, 0x70, 0x65, 0x2e, 0x43, 0x68, 0x6f, 0x69, - 0x63, 0x65, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x48, 0x00, 0x52, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, - 0x65, 0x88, 0x01, 0x01, 0x12, 0x17, 0x0a, 0x04, 0x61, 0x75, 0x74, 0x6f, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x09, 0x48, 0x01, 0x52, 0x04, 0x61, 0x75, 0x74, 0x6f, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, - 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x48, 0x02, 0x52, 0x05, - 0x76, 0x61, 0x6c, 0x75, 0x65, 0x88, 0x01, 0x01, 0x1a, 0x36, 0x0a, 0x06, 0x43, 0x68, 0x6f, 0x69, - 0x63, 0x65, 0x22, 0x2c, 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x0a, 0x0b, 0x75, 0x6e, - 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x10, 0x00, 0x12, 0x08, 0x0a, 0x04, 0x61, - 0x75, 0x74, 0x6f, 0x10, 0x01, 0x12, 0x09, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x10, 0x02, - 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x42, 0x07, 0x0a, 0x05, 0x5f, - 0x61, 0x75, 0x74, 0x6f, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0xf4, - 0x01, 0x0a, 0x1c, 0x4c, 0x6c, 0x64, 0x70, 0x50, 0x6f, 0x72, 0x74, 0x49, 0x6e, 0x74, 0x65, 0x72, - 0x66, 0x61, 0x63, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x53, 0x75, 0x62, 0x54, 0x79, 0x70, 0x65, 0x12, - 0x4a, 0x0a, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, - 0x2d, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x4c, 0x6c, 0x64, 0x70, 0x50, 0x6f, 0x72, 0x74, 0x49, 0x6e, - 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x53, 0x75, 0x62, 0x54, 0x79, - 0x70, 0x65, 0x2e, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x48, 0x00, - 0x52, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x88, 0x01, 0x01, 0x12, 0x17, 0x0a, 0x04, 0x61, - 0x75, 0x74, 0x6f, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, 0x52, 0x04, 0x61, 0x75, 0x74, - 0x6f, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x09, 0x48, 0x02, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x88, 0x01, 0x01, 0x1a, - 0x36, 0x0a, 0x06, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x22, 0x2c, 0x0a, 0x04, 0x45, 0x6e, 0x75, - 0x6d, 0x12, 0x0f, 0x0a, 0x0b, 0x75, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, - 0x10, 0x00, 0x12, 0x08, 0x0a, 0x04, 0x61, 0x75, 0x74, 0x6f, 0x10, 0x01, 0x12, 0x09, 0x0a, 0x05, - 0x76, 0x61, 0x6c, 0x75, 0x65, 0x10, 0x02, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x63, 0x68, 0x6f, 0x69, - 0x63, 0x65, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x61, 0x75, 0x74, 0x6f, 0x42, 0x08, 0x0a, 0x06, 0x5f, - 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0xd8, 0x01, 0x0a, 0x0e, 0x4c, 0x6c, 0x64, 0x70, 0x53, 0x79, - 0x73, 0x74, 0x65, 0x6d, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x3c, 0x0a, 0x06, 0x63, 0x68, 0x6f, 0x69, - 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1f, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x4c, - 0x6c, 0x64, 0x70, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x4e, 0x61, 0x6d, 0x65, 0x2e, 0x43, 0x68, - 0x6f, 0x69, 0x63, 0x65, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x48, 0x00, 0x52, 0x06, 0x63, 0x68, 0x6f, - 0x69, 0x63, 0x65, 0x88, 0x01, 0x01, 0x12, 0x17, 0x0a, 0x04, 0x61, 0x75, 0x74, 0x6f, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, 0x52, 0x04, 0x61, 0x75, 0x74, 0x6f, 0x88, 0x01, 0x01, 0x12, - 0x19, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x48, 0x02, - 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x88, 0x01, 0x01, 0x1a, 0x36, 0x0a, 0x06, 0x43, 0x68, - 0x6f, 0x69, 0x63, 0x65, 0x22, 0x2c, 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x0a, 0x0b, - 0x75, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x10, 0x00, 0x12, 0x08, 0x0a, - 0x04, 0x61, 0x75, 0x74, 0x6f, 0x10, 0x01, 0x12, 0x09, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, - 0x10, 0x02, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x42, 0x07, 0x0a, - 0x05, 0x5f, 0x61, 0x75, 0x74, 0x6f, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, - 0x22, 0xb8, 0x01, 0x0a, 0x05, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x12, 0x17, 0x0a, 0x04, 0x63, 0x6f, - 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x48, 0x00, 0x52, 0x04, 0x63, 0x6f, 0x64, 0x65, - 0x88, 0x01, 0x01, 0x12, 0x2d, 0x0a, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x0e, 0x32, 0x14, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x2e, 0x4b, 0x69, - 0x6e, 0x64, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x48, 0x01, 0x52, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x88, - 0x01, 0x01, 0x12, 0x16, 0x0a, 0x06, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x18, 0x03, 0x20, 0x03, - 0x28, 0x09, 0x52, 0x06, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x1a, 0x3d, 0x0a, 0x04, 0x4b, 0x69, - 0x6e, 0x64, 0x22, 0x35, 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x0a, 0x0b, 0x75, 0x6e, - 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x10, 0x00, 0x12, 0x0e, 0x0a, 0x0a, 0x76, - 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x10, 0x01, 0x12, 0x0c, 0x0a, 0x08, 0x69, - 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x10, 0x02, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x63, 0x6f, - 0x64, 0x65, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x6b, 0x69, 0x6e, 0x64, 0x22, 0x25, 0x0a, 0x07, 0x57, - 0x61, 0x72, 0x6e, 0x69, 0x6e, 0x67, 0x12, 0x1a, 0x0a, 0x08, 0x77, 0x61, 0x72, 0x6e, 0x69, 0x6e, - 0x67, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x08, 0x77, 0x61, 0x72, 0x6e, 0x69, 0x6e, - 0x67, 0x73, 0x22, 0xab, 0x01, 0x0a, 0x0c, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x55, 0x70, 0x64, - 0x61, 0x74, 0x65, 0x12, 0x3a, 0x0a, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x0e, 0x32, 0x1d, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, - 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x2e, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x2e, 0x45, 0x6e, - 0x75, 0x6d, 0x48, 0x00, 0x52, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x88, 0x01, 0x01, 0x12, - 0x26, 0x0a, 0x05, 0x66, 0x6c, 0x6f, 0x77, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, - 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x46, 0x6c, 0x6f, 0x77, 0x73, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, - 0x52, 0x05, 0x66, 0x6c, 0x6f, 0x77, 0x73, 0x1a, 0x2c, 0x0a, 0x06, 0x43, 0x68, 0x6f, 0x69, 0x63, - 0x65, 0x22, 0x22, 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x0a, 0x0b, 0x75, 0x6e, 0x73, - 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, 0x66, 0x6c, - 0x6f, 0x77, 0x73, 0x10, 0x01, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, - 0x22, 0xb8, 0x01, 0x0a, 0x0b, 0x46, 0x6c, 0x6f, 0x77, 0x73, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, - 0x12, 0x4a, 0x0a, 0x0e, 0x70, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, 0x5f, 0x6e, 0x61, 0x6d, - 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x23, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x46, - 0x6c, 0x6f, 0x77, 0x73, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x2e, 0x50, 0x72, 0x6f, 0x70, 0x65, - 0x72, 0x74, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x52, 0x0d, 0x70, - 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x12, 0x1f, 0x0a, 0x05, - 0x66, 0x6c, 0x6f, 0x77, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x09, 0x2e, 0x6f, 0x74, - 0x67, 0x2e, 0x46, 0x6c, 0x6f, 0x77, 0x52, 0x05, 0x66, 0x6c, 0x6f, 0x77, 0x73, 0x1a, 0x3c, 0x0a, - 0x0d, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x22, 0x2b, + 0x5f, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x42, 0x16, 0x0a, 0x14, 0x5f, 0x6d, 0x61, 0x63, 0x5f, + 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x5f, 0x73, 0x75, 0x62, 0x74, 0x79, 0x70, 0x65, 0x42, + 0x10, 0x0a, 0x0e, 0x5f, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x5f, 0x73, 0x75, 0x62, 0x74, 0x79, 0x70, + 0x65, 0x22, 0xe6, 0x01, 0x0a, 0x15, 0x4c, 0x6c, 0x64, 0x70, 0x43, 0x68, 0x61, 0x73, 0x73, 0x69, + 0x73, 0x4d, 0x61, 0x63, 0x53, 0x75, 0x62, 0x54, 0x79, 0x70, 0x65, 0x12, 0x43, 0x0a, 0x06, 0x63, + 0x68, 0x6f, 0x69, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x26, 0x2e, 0x6f, 0x74, + 0x67, 0x2e, 0x4c, 0x6c, 0x64, 0x70, 0x43, 0x68, 0x61, 0x73, 0x73, 0x69, 0x73, 0x4d, 0x61, 0x63, + 0x53, 0x75, 0x62, 0x54, 0x79, 0x70, 0x65, 0x2e, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x2e, 0x45, + 0x6e, 0x75, 0x6d, 0x48, 0x00, 0x52, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x88, 0x01, 0x01, + 0x12, 0x17, 0x0a, 0x04, 0x61, 0x75, 0x74, 0x6f, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, + 0x52, 0x04, 0x61, 0x75, 0x74, 0x6f, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x76, 0x61, 0x6c, + 0x75, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x48, 0x02, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, + 0x65, 0x88, 0x01, 0x01, 0x1a, 0x36, 0x0a, 0x06, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x22, 0x2c, 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x0a, 0x0b, 0x75, 0x6e, 0x73, 0x70, 0x65, 0x63, - 0x69, 0x66, 0x69, 0x65, 0x64, 0x10, 0x00, 0x12, 0x08, 0x0a, 0x04, 0x72, 0x61, 0x74, 0x65, 0x10, - 0x01, 0x12, 0x08, 0x0a, 0x04, 0x73, 0x69, 0x7a, 0x65, 0x10, 0x02, 0x22, 0x9e, 0x02, 0x0a, 0x0c, - 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x3a, 0x0a, 0x06, - 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1d, 0x2e, 0x6f, - 0x74, 0x67, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x53, 0x74, 0x61, 0x74, 0x65, 0x2e, - 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x48, 0x00, 0x52, 0x06, 0x63, - 0x68, 0x6f, 0x69, 0x63, 0x65, 0x88, 0x01, 0x01, 0x12, 0x22, 0x0a, 0x04, 0x70, 0x6f, 0x72, 0x74, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x53, 0x74, 0x61, - 0x74, 0x65, 0x50, 0x6f, 0x72, 0x74, 0x52, 0x04, 0x70, 0x6f, 0x72, 0x74, 0x12, 0x2e, 0x0a, 0x08, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, - 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, - 0x6f, 0x6c, 0x52, 0x08, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x12, 0x2b, 0x0a, 0x07, - 0x74, 0x72, 0x61, 0x66, 0x66, 0x69, 0x63, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, 0x2e, - 0x6f, 0x74, 0x67, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x54, 0x72, 0x61, 0x66, 0x66, 0x69, 0x63, - 0x52, 0x07, 0x74, 0x72, 0x61, 0x66, 0x66, 0x69, 0x63, 0x1a, 0x46, 0x0a, 0x06, 0x43, 0x68, 0x6f, - 0x69, 0x63, 0x65, 0x22, 0x3c, 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x0a, 0x0b, 0x75, - 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x10, 0x00, 0x12, 0x08, 0x0a, 0x04, - 0x70, 0x6f, 0x72, 0x74, 0x10, 0x01, 0x12, 0x0c, 0x0a, 0x08, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, - 0x6f, 0x6c, 0x10, 0x02, 0x12, 0x0b, 0x0a, 0x07, 0x74, 0x72, 0x61, 0x66, 0x66, 0x69, 0x63, 0x10, - 0x03, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x22, 0xe2, 0x01, 0x0a, - 0x09, 0x53, 0x74, 0x61, 0x74, 0x65, 0x50, 0x6f, 0x72, 0x74, 0x12, 0x37, 0x0a, 0x06, 0x63, 0x68, - 0x6f, 0x69, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1a, 0x2e, 0x6f, 0x74, 0x67, - 0x2e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x50, 0x6f, 0x72, 0x74, 0x2e, 0x43, 0x68, 0x6f, 0x69, 0x63, - 0x65, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x48, 0x00, 0x52, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, - 0x88, 0x01, 0x01, 0x12, 0x26, 0x0a, 0x04, 0x6c, 0x69, 0x6e, 0x6b, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x12, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x50, 0x6f, 0x72, - 0x74, 0x4c, 0x69, 0x6e, 0x6b, 0x52, 0x04, 0x6c, 0x69, 0x6e, 0x6b, 0x12, 0x2f, 0x0a, 0x07, 0x63, - 0x61, 0x70, 0x74, 0x75, 0x72, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x6f, - 0x74, 0x67, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x50, 0x6f, 0x72, 0x74, 0x43, 0x61, 0x70, 0x74, - 0x75, 0x72, 0x65, 0x52, 0x07, 0x63, 0x61, 0x70, 0x74, 0x75, 0x72, 0x65, 0x1a, 0x38, 0x0a, 0x06, - 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x22, 0x2e, 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0f, - 0x0a, 0x0b, 0x75, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x10, 0x00, 0x12, - 0x08, 0x0a, 0x04, 0x6c, 0x69, 0x6e, 0x6b, 0x10, 0x01, 0x12, 0x0b, 0x0a, 0x07, 0x63, 0x61, 0x70, - 0x74, 0x75, 0x72, 0x65, 0x10, 0x02, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x63, 0x68, 0x6f, 0x69, 0x63, - 0x65, 0x22, 0xcf, 0x01, 0x0a, 0x0c, 0x53, 0x74, 0x61, 0x74, 0x65, 0x54, 0x72, 0x61, 0x66, 0x66, - 0x69, 0x63, 0x12, 0x3a, 0x0a, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x0e, 0x32, 0x1d, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x54, 0x72, - 0x61, 0x66, 0x66, 0x69, 0x63, 0x2e, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x2e, 0x45, 0x6e, 0x75, - 0x6d, 0x48, 0x00, 0x52, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x88, 0x01, 0x01, 0x12, 0x42, - 0x0a, 0x0d, 0x66, 0x6c, 0x6f, 0x77, 0x5f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x6d, 0x69, 0x74, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x53, 0x74, 0x61, 0x74, - 0x65, 0x54, 0x72, 0x61, 0x66, 0x66, 0x69, 0x63, 0x46, 0x6c, 0x6f, 0x77, 0x54, 0x72, 0x61, 0x6e, - 0x73, 0x6d, 0x69, 0x74, 0x52, 0x0c, 0x66, 0x6c, 0x6f, 0x77, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x6d, - 0x69, 0x74, 0x1a, 0x34, 0x0a, 0x06, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x22, 0x2a, 0x0a, 0x04, - 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x0a, 0x0b, 0x75, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, - 0x69, 0x65, 0x64, 0x10, 0x00, 0x12, 0x11, 0x0a, 0x0d, 0x66, 0x6c, 0x6f, 0x77, 0x5f, 0x74, 0x72, - 0x61, 0x6e, 0x73, 0x6d, 0x69, 0x74, 0x10, 0x01, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x63, 0x68, 0x6f, - 0x69, 0x63, 0x65, 0x22, 0x84, 0x03, 0x0a, 0x0d, 0x53, 0x74, 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, - 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x12, 0x3b, 0x0a, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1e, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x53, 0x74, 0x61, 0x74, - 0x65, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, + 0x69, 0x66, 0x69, 0x65, 0x64, 0x10, 0x00, 0x12, 0x08, 0x0a, 0x04, 0x61, 0x75, 0x74, 0x6f, 0x10, + 0x01, 0x12, 0x09, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x10, 0x02, 0x42, 0x09, 0x0a, 0x07, + 0x5f, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x61, 0x75, 0x74, 0x6f, + 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0xf4, 0x01, 0x0a, 0x1c, 0x4c, + 0x6c, 0x64, 0x70, 0x50, 0x6f, 0x72, 0x74, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, + 0x4e, 0x61, 0x6d, 0x65, 0x53, 0x75, 0x62, 0x54, 0x79, 0x70, 0x65, 0x12, 0x4a, 0x0a, 0x06, 0x63, + 0x68, 0x6f, 0x69, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2d, 0x2e, 0x6f, 0x74, + 0x67, 0x2e, 0x4c, 0x6c, 0x64, 0x70, 0x50, 0x6f, 0x72, 0x74, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x66, + 0x61, 0x63, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x53, 0x75, 0x62, 0x54, 0x79, 0x70, 0x65, 0x2e, 0x43, + 0x68, 0x6f, 0x69, 0x63, 0x65, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x48, 0x00, 0x52, 0x06, 0x63, 0x68, + 0x6f, 0x69, 0x63, 0x65, 0x88, 0x01, 0x01, 0x12, 0x17, 0x0a, 0x04, 0x61, 0x75, 0x74, 0x6f, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, 0x52, 0x04, 0x61, 0x75, 0x74, 0x6f, 0x88, 0x01, 0x01, + 0x12, 0x19, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x48, + 0x02, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x88, 0x01, 0x01, 0x1a, 0x36, 0x0a, 0x06, 0x43, + 0x68, 0x6f, 0x69, 0x63, 0x65, 0x22, 0x2c, 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x0a, + 0x0b, 0x75, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x10, 0x00, 0x12, 0x08, + 0x0a, 0x04, 0x61, 0x75, 0x74, 0x6f, 0x10, 0x01, 0x12, 0x09, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, + 0x65, 0x10, 0x02, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x42, 0x07, + 0x0a, 0x05, 0x5f, 0x61, 0x75, 0x74, 0x6f, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x76, 0x61, 0x6c, 0x75, + 0x65, 0x22, 0xd8, 0x01, 0x0a, 0x0e, 0x4c, 0x6c, 0x64, 0x70, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, + 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x3c, 0x0a, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1f, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x4c, 0x6c, 0x64, 0x70, 0x53, + 0x79, 0x73, 0x74, 0x65, 0x6d, 0x4e, 0x61, 0x6d, 0x65, 0x2e, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x48, 0x00, 0x52, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x88, - 0x01, 0x01, 0x12, 0x27, 0x0a, 0x03, 0x61, 0x6c, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x15, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x74, 0x6f, - 0x63, 0x6f, 0x6c, 0x41, 0x6c, 0x6c, 0x52, 0x03, 0x61, 0x6c, 0x6c, 0x12, 0x2d, 0x0a, 0x05, 0x72, - 0x6f, 0x75, 0x74, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x6f, 0x74, 0x67, - 0x2e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x52, 0x6f, - 0x75, 0x74, 0x65, 0x52, 0x05, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x12, 0x2a, 0x0a, 0x04, 0x6c, 0x61, - 0x63, 0x70, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x53, - 0x74, 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x4c, 0x61, 0x63, 0x70, - 0x52, 0x04, 0x6c, 0x61, 0x63, 0x70, 0x12, 0x27, 0x0a, 0x03, 0x62, 0x67, 0x70, 0x18, 0x05, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x50, - 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x42, 0x67, 0x70, 0x52, 0x03, 0x62, 0x67, 0x70, 0x12, - 0x2a, 0x0a, 0x04, 0x69, 0x73, 0x69, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, - 0x6f, 0x74, 0x67, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, - 0x6c, 0x49, 0x73, 0x69, 0x73, 0x52, 0x04, 0x69, 0x73, 0x69, 0x73, 0x1a, 0x52, 0x0a, 0x06, 0x43, - 0x68, 0x6f, 0x69, 0x63, 0x65, 0x22, 0x48, 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x0a, - 0x0b, 0x75, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x10, 0x00, 0x12, 0x07, - 0x0a, 0x03, 0x61, 0x6c, 0x6c, 0x10, 0x01, 0x12, 0x09, 0x0a, 0x05, 0x72, 0x6f, 0x75, 0x74, 0x65, - 0x10, 0x02, 0x12, 0x08, 0x0a, 0x04, 0x6c, 0x61, 0x63, 0x70, 0x10, 0x03, 0x12, 0x07, 0x0a, 0x03, - 0x62, 0x67, 0x70, 0x10, 0x04, 0x12, 0x08, 0x0a, 0x04, 0x69, 0x73, 0x69, 0x73, 0x10, 0x05, 0x42, - 0x09, 0x0a, 0x07, 0x5f, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x22, 0xa6, 0x01, 0x0a, 0x0d, 0x53, - 0x74, 0x61, 0x74, 0x65, 0x50, 0x6f, 0x72, 0x74, 0x4c, 0x69, 0x6e, 0x6b, 0x12, 0x1d, 0x0a, 0x0a, - 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, - 0x52, 0x09, 0x70, 0x6f, 0x72, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x12, 0x38, 0x0a, 0x05, 0x73, - 0x74, 0x61, 0x74, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1d, 0x2e, 0x6f, 0x74, 0x67, - 0x2e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x50, 0x6f, 0x72, 0x74, 0x4c, 0x69, 0x6e, 0x6b, 0x2e, 0x53, - 0x74, 0x61, 0x74, 0x65, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x48, 0x00, 0x52, 0x05, 0x73, 0x74, 0x61, - 0x74, 0x65, 0x88, 0x01, 0x01, 0x1a, 0x32, 0x0a, 0x05, 0x53, 0x74, 0x61, 0x74, 0x65, 0x22, 0x29, + 0x01, 0x01, 0x12, 0x17, 0x0a, 0x04, 0x61, 0x75, 0x74, 0x6f, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, + 0x48, 0x01, 0x52, 0x04, 0x61, 0x75, 0x74, 0x6f, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x76, + 0x61, 0x6c, 0x75, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x48, 0x02, 0x52, 0x05, 0x76, 0x61, + 0x6c, 0x75, 0x65, 0x88, 0x01, 0x01, 0x1a, 0x36, 0x0a, 0x06, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, + 0x22, 0x2c, 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x0a, 0x0b, 0x75, 0x6e, 0x73, 0x70, + 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x10, 0x00, 0x12, 0x08, 0x0a, 0x04, 0x61, 0x75, 0x74, + 0x6f, 0x10, 0x01, 0x12, 0x09, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x10, 0x02, 0x42, 0x09, + 0x0a, 0x07, 0x5f, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x61, 0x75, + 0x74, 0x6f, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0xb8, 0x01, 0x0a, + 0x05, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x12, 0x17, 0x0a, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x05, 0x48, 0x00, 0x52, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x88, 0x01, 0x01, 0x12, + 0x2d, 0x0a, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x14, 0x2e, + 0x6f, 0x74, 0x67, 0x2e, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x2e, 0x4b, 0x69, 0x6e, 0x64, 0x2e, 0x45, + 0x6e, 0x75, 0x6d, 0x48, 0x01, 0x52, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x88, 0x01, 0x01, 0x12, 0x16, + 0x0a, 0x06, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x06, + 0x65, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x1a, 0x3d, 0x0a, 0x04, 0x4b, 0x69, 0x6e, 0x64, 0x22, 0x35, 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x0a, 0x0b, 0x75, 0x6e, 0x73, 0x70, 0x65, 0x63, - 0x69, 0x66, 0x69, 0x65, 0x64, 0x10, 0x00, 0x12, 0x06, 0x0a, 0x02, 0x75, 0x70, 0x10, 0x01, 0x12, - 0x08, 0x0a, 0x04, 0x64, 0x6f, 0x77, 0x6e, 0x10, 0x02, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x73, 0x74, - 0x61, 0x74, 0x65, 0x22, 0xaf, 0x01, 0x0a, 0x10, 0x53, 0x74, 0x61, 0x74, 0x65, 0x50, 0x6f, 0x72, - 0x74, 0x43, 0x61, 0x70, 0x74, 0x75, 0x72, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x6f, 0x72, 0x74, - 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x09, 0x70, 0x6f, - 0x72, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x12, 0x3b, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x20, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x53, 0x74, 0x61, - 0x74, 0x65, 0x50, 0x6f, 0x72, 0x74, 0x43, 0x61, 0x70, 0x74, 0x75, 0x72, 0x65, 0x2e, 0x53, 0x74, - 0x61, 0x74, 0x65, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x48, 0x00, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, - 0x65, 0x88, 0x01, 0x01, 0x1a, 0x35, 0x0a, 0x05, 0x53, 0x74, 0x61, 0x74, 0x65, 0x22, 0x2c, 0x0a, + 0x69, 0x66, 0x69, 0x65, 0x64, 0x10, 0x00, 0x12, 0x0e, 0x0a, 0x0a, 0x76, 0x61, 0x6c, 0x69, 0x64, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x10, 0x01, 0x12, 0x0c, 0x0a, 0x08, 0x69, 0x6e, 0x74, 0x65, 0x72, + 0x6e, 0x61, 0x6c, 0x10, 0x02, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x63, 0x6f, 0x64, 0x65, 0x42, 0x07, + 0x0a, 0x05, 0x5f, 0x6b, 0x69, 0x6e, 0x64, 0x22, 0x25, 0x0a, 0x07, 0x57, 0x61, 0x72, 0x6e, 0x69, + 0x6e, 0x67, 0x12, 0x1a, 0x0a, 0x08, 0x77, 0x61, 0x72, 0x6e, 0x69, 0x6e, 0x67, 0x73, 0x18, 0x01, + 0x20, 0x03, 0x28, 0x09, 0x52, 0x08, 0x77, 0x61, 0x72, 0x6e, 0x69, 0x6e, 0x67, 0x73, 0x22, 0xab, + 0x01, 0x0a, 0x0c, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x12, + 0x3a, 0x0a, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, + 0x1d, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x55, 0x70, 0x64, 0x61, + 0x74, 0x65, 0x2e, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x48, 0x00, + 0x52, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x88, 0x01, 0x01, 0x12, 0x26, 0x0a, 0x05, 0x66, + 0x6c, 0x6f, 0x77, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x6f, 0x74, 0x67, + 0x2e, 0x46, 0x6c, 0x6f, 0x77, 0x73, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x05, 0x66, 0x6c, + 0x6f, 0x77, 0x73, 0x1a, 0x2c, 0x0a, 0x06, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x22, 0x22, 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x0a, 0x0b, 0x75, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, - 0x66, 0x69, 0x65, 0x64, 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x10, - 0x01, 0x12, 0x08, 0x0a, 0x04, 0x73, 0x74, 0x6f, 0x70, 0x10, 0x02, 0x42, 0x08, 0x0a, 0x06, 0x5f, - 0x73, 0x74, 0x61, 0x74, 0x65, 0x22, 0xd6, 0x01, 0x0a, 0x18, 0x53, 0x74, 0x61, 0x74, 0x65, 0x54, - 0x72, 0x61, 0x66, 0x66, 0x69, 0x63, 0x46, 0x6c, 0x6f, 0x77, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x6d, - 0x69, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x66, 0x6c, 0x6f, 0x77, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x73, - 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x09, 0x66, 0x6c, 0x6f, 0x77, 0x4e, 0x61, 0x6d, 0x65, - 0x73, 0x12, 0x43, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, - 0x32, 0x28, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x54, 0x72, 0x61, 0x66, - 0x66, 0x69, 0x63, 0x46, 0x6c, 0x6f, 0x77, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x6d, 0x69, 0x74, 0x2e, - 0x53, 0x74, 0x61, 0x74, 0x65, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x48, 0x00, 0x52, 0x05, 0x73, 0x74, - 0x61, 0x74, 0x65, 0x88, 0x01, 0x01, 0x1a, 0x4c, 0x0a, 0x05, 0x53, 0x74, 0x61, 0x74, 0x65, 0x22, - 0x43, 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x0a, 0x0b, 0x75, 0x6e, 0x73, 0x70, 0x65, - 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x72, - 0x74, 0x10, 0x01, 0x12, 0x08, 0x0a, 0x04, 0x73, 0x74, 0x6f, 0x70, 0x10, 0x02, 0x12, 0x09, 0x0a, - 0x05, 0x70, 0x61, 0x75, 0x73, 0x65, 0x10, 0x03, 0x12, 0x0a, 0x0a, 0x06, 0x72, 0x65, 0x73, 0x75, - 0x6d, 0x65, 0x10, 0x04, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x22, 0x90, - 0x01, 0x0a, 0x10, 0x53, 0x74, 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, - 0x41, 0x6c, 0x6c, 0x12, 0x3b, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x0e, 0x32, 0x20, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x50, 0x72, - 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x41, 0x6c, 0x6c, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x2e, + 0x66, 0x69, 0x65, 0x64, 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, 0x66, 0x6c, 0x6f, 0x77, 0x73, 0x10, + 0x01, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x22, 0xb8, 0x01, 0x0a, + 0x0b, 0x46, 0x6c, 0x6f, 0x77, 0x73, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x12, 0x4a, 0x0a, 0x0e, + 0x70, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x18, 0x01, + 0x20, 0x03, 0x28, 0x0e, 0x32, 0x23, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x46, 0x6c, 0x6f, 0x77, 0x73, + 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x2e, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, 0x4e, + 0x61, 0x6d, 0x65, 0x73, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x52, 0x0d, 0x70, 0x72, 0x6f, 0x70, 0x65, + 0x72, 0x74, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x12, 0x1f, 0x0a, 0x05, 0x66, 0x6c, 0x6f, 0x77, + 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x09, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x46, 0x6c, + 0x6f, 0x77, 0x52, 0x05, 0x66, 0x6c, 0x6f, 0x77, 0x73, 0x1a, 0x3c, 0x0a, 0x0d, 0x50, 0x72, 0x6f, + 0x70, 0x65, 0x72, 0x74, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x22, 0x2b, 0x0a, 0x04, 0x45, 0x6e, + 0x75, 0x6d, 0x12, 0x0f, 0x0a, 0x0b, 0x75, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, + 0x64, 0x10, 0x00, 0x12, 0x08, 0x0a, 0x04, 0x72, 0x61, 0x74, 0x65, 0x10, 0x01, 0x12, 0x08, 0x0a, + 0x04, 0x73, 0x69, 0x7a, 0x65, 0x10, 0x02, 0x22, 0x9e, 0x02, 0x0a, 0x0c, 0x43, 0x6f, 0x6e, 0x74, + 0x72, 0x6f, 0x6c, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x3a, 0x0a, 0x06, 0x63, 0x68, 0x6f, 0x69, + 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1d, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x43, + 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x53, 0x74, 0x61, 0x74, 0x65, 0x2e, 0x43, 0x68, 0x6f, 0x69, + 0x63, 0x65, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x48, 0x00, 0x52, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, + 0x65, 0x88, 0x01, 0x01, 0x12, 0x22, 0x0a, 0x04, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x50, 0x6f, + 0x72, 0x74, 0x52, 0x04, 0x70, 0x6f, 0x72, 0x74, 0x12, 0x2e, 0x0a, 0x08, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x63, 0x6f, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x6f, 0x74, 0x67, + 0x2e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x52, 0x08, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x12, 0x2b, 0x0a, 0x07, 0x74, 0x72, 0x61, 0x66, + 0x66, 0x69, 0x63, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x6f, 0x74, 0x67, 0x2e, + 0x53, 0x74, 0x61, 0x74, 0x65, 0x54, 0x72, 0x61, 0x66, 0x66, 0x69, 0x63, 0x52, 0x07, 0x74, 0x72, + 0x61, 0x66, 0x66, 0x69, 0x63, 0x1a, 0x46, 0x0a, 0x06, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x22, + 0x3c, 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x0a, 0x0b, 0x75, 0x6e, 0x73, 0x70, 0x65, + 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x10, 0x00, 0x12, 0x08, 0x0a, 0x04, 0x70, 0x6f, 0x72, 0x74, + 0x10, 0x01, 0x12, 0x0c, 0x0a, 0x08, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x10, 0x02, + 0x12, 0x0b, 0x0a, 0x07, 0x74, 0x72, 0x61, 0x66, 0x66, 0x69, 0x63, 0x10, 0x03, 0x42, 0x09, 0x0a, + 0x07, 0x5f, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x22, 0xe2, 0x01, 0x0a, 0x09, 0x53, 0x74, 0x61, + 0x74, 0x65, 0x50, 0x6f, 0x72, 0x74, 0x12, 0x37, 0x0a, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1a, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x53, 0x74, 0x61, + 0x74, 0x65, 0x50, 0x6f, 0x72, 0x74, 0x2e, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x2e, 0x45, 0x6e, + 0x75, 0x6d, 0x48, 0x00, 0x52, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x88, 0x01, 0x01, 0x12, + 0x26, 0x0a, 0x04, 0x6c, 0x69, 0x6e, 0x6b, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, + 0x6f, 0x74, 0x67, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x50, 0x6f, 0x72, 0x74, 0x4c, 0x69, 0x6e, + 0x6b, 0x52, 0x04, 0x6c, 0x69, 0x6e, 0x6b, 0x12, 0x2f, 0x0a, 0x07, 0x63, 0x61, 0x70, 0x74, 0x75, + 0x72, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x53, + 0x74, 0x61, 0x74, 0x65, 0x50, 0x6f, 0x72, 0x74, 0x43, 0x61, 0x70, 0x74, 0x75, 0x72, 0x65, 0x52, + 0x07, 0x63, 0x61, 0x70, 0x74, 0x75, 0x72, 0x65, 0x1a, 0x38, 0x0a, 0x06, 0x43, 0x68, 0x6f, 0x69, + 0x63, 0x65, 0x22, 0x2e, 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x0a, 0x0b, 0x75, 0x6e, + 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x10, 0x00, 0x12, 0x08, 0x0a, 0x04, 0x6c, + 0x69, 0x6e, 0x6b, 0x10, 0x01, 0x12, 0x0b, 0x0a, 0x07, 0x63, 0x61, 0x70, 0x74, 0x75, 0x72, 0x65, + 0x10, 0x02, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x22, 0xcf, 0x01, + 0x0a, 0x0c, 0x53, 0x74, 0x61, 0x74, 0x65, 0x54, 0x72, 0x61, 0x66, 0x66, 0x69, 0x63, 0x12, 0x3a, + 0x0a, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1d, + 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x54, 0x72, 0x61, 0x66, 0x66, 0x69, + 0x63, 0x2e, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x48, 0x00, 0x52, + 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x88, 0x01, 0x01, 0x12, 0x42, 0x0a, 0x0d, 0x66, 0x6c, + 0x6f, 0x77, 0x5f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x6d, 0x69, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x1d, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x54, 0x72, 0x61, + 0x66, 0x66, 0x69, 0x63, 0x46, 0x6c, 0x6f, 0x77, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x6d, 0x69, 0x74, + 0x52, 0x0c, 0x66, 0x6c, 0x6f, 0x77, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x6d, 0x69, 0x74, 0x1a, 0x34, + 0x0a, 0x06, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x22, 0x2a, 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, + 0x12, 0x0f, 0x0a, 0x0b, 0x75, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x10, + 0x00, 0x12, 0x11, 0x0a, 0x0d, 0x66, 0x6c, 0x6f, 0x77, 0x5f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x6d, + 0x69, 0x74, 0x10, 0x01, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x22, + 0x84, 0x03, 0x0a, 0x0d, 0x53, 0x74, 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, + 0x6c, 0x12, 0x3b, 0x0a, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x0e, 0x32, 0x1e, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, + 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x2e, 0x45, 0x6e, 0x75, + 0x6d, 0x48, 0x00, 0x52, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x88, 0x01, 0x01, 0x12, 0x27, + 0x0a, 0x03, 0x61, 0x6c, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x6f, 0x74, + 0x67, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x41, + 0x6c, 0x6c, 0x52, 0x03, 0x61, 0x6c, 0x6c, 0x12, 0x2d, 0x0a, 0x05, 0x72, 0x6f, 0x75, 0x74, 0x65, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x53, 0x74, 0x61, + 0x74, 0x65, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x52, + 0x05, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x12, 0x2a, 0x0a, 0x04, 0x6c, 0x61, 0x63, 0x70, 0x18, 0x04, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x65, + 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x4c, 0x61, 0x63, 0x70, 0x52, 0x04, 0x6c, 0x61, + 0x63, 0x70, 0x12, 0x27, 0x0a, 0x03, 0x62, 0x67, 0x70, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x15, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x74, 0x6f, + 0x63, 0x6f, 0x6c, 0x42, 0x67, 0x70, 0x52, 0x03, 0x62, 0x67, 0x70, 0x12, 0x2a, 0x0a, 0x04, 0x69, + 0x73, 0x69, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x6f, 0x74, 0x67, 0x2e, + 0x53, 0x74, 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x49, 0x73, 0x69, + 0x73, 0x52, 0x04, 0x69, 0x73, 0x69, 0x73, 0x1a, 0x52, 0x0a, 0x06, 0x43, 0x68, 0x6f, 0x69, 0x63, + 0x65, 0x22, 0x48, 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x0a, 0x0b, 0x75, 0x6e, 0x73, + 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x10, 0x00, 0x12, 0x07, 0x0a, 0x03, 0x61, 0x6c, + 0x6c, 0x10, 0x01, 0x12, 0x09, 0x0a, 0x05, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x10, 0x02, 0x12, 0x08, + 0x0a, 0x04, 0x6c, 0x61, 0x63, 0x70, 0x10, 0x03, 0x12, 0x07, 0x0a, 0x03, 0x62, 0x67, 0x70, 0x10, + 0x04, 0x12, 0x08, 0x0a, 0x04, 0x69, 0x73, 0x69, 0x73, 0x10, 0x05, 0x42, 0x09, 0x0a, 0x07, 0x5f, + 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x22, 0xa6, 0x01, 0x0a, 0x0d, 0x53, 0x74, 0x61, 0x74, 0x65, + 0x50, 0x6f, 0x72, 0x74, 0x4c, 0x69, 0x6e, 0x6b, 0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x6f, 0x72, 0x74, + 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x09, 0x70, 0x6f, + 0x72, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x12, 0x38, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1d, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x53, 0x74, 0x61, + 0x74, 0x65, 0x50, 0x6f, 0x72, 0x74, 0x4c, 0x69, 0x6e, 0x6b, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x65, + 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x48, 0x00, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x88, 0x01, + 0x01, 0x1a, 0x32, 0x0a, 0x05, 0x53, 0x74, 0x61, 0x74, 0x65, 0x22, 0x29, 0x0a, 0x04, 0x45, 0x6e, + 0x75, 0x6d, 0x12, 0x0f, 0x0a, 0x0b, 0x75, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, + 0x64, 0x10, 0x00, 0x12, 0x06, 0x0a, 0x02, 0x75, 0x70, 0x10, 0x01, 0x12, 0x08, 0x0a, 0x04, 0x64, + 0x6f, 0x77, 0x6e, 0x10, 0x02, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x22, + 0xaf, 0x01, 0x0a, 0x10, 0x53, 0x74, 0x61, 0x74, 0x65, 0x50, 0x6f, 0x72, 0x74, 0x43, 0x61, 0x70, + 0x74, 0x75, 0x72, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x6e, 0x61, 0x6d, + 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x09, 0x70, 0x6f, 0x72, 0x74, 0x4e, 0x61, + 0x6d, 0x65, 0x73, 0x12, 0x3b, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x0e, 0x32, 0x20, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x50, 0x6f, + 0x72, 0x74, 0x43, 0x61, 0x70, 0x74, 0x75, 0x72, 0x65, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x48, 0x00, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x88, 0x01, 0x01, 0x1a, 0x35, 0x0a, 0x05, 0x53, 0x74, 0x61, 0x74, 0x65, 0x22, 0x2c, 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x0a, 0x0b, 0x75, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x10, 0x01, 0x12, 0x08, 0x0a, 0x04, 0x73, 0x74, 0x6f, 0x70, 0x10, 0x02, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x73, 0x74, 0x61, 0x74, - 0x65, 0x22, 0xb2, 0x01, 0x0a, 0x12, 0x53, 0x74, 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x74, 0x6f, - 0x63, 0x6f, 0x6c, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x6e, 0x61, 0x6d, 0x65, - 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x05, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x12, 0x3d, - 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x22, 0x2e, - 0x6f, 0x74, 0x67, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, - 0x6c, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x2e, 0x45, 0x6e, 0x75, - 0x6d, 0x48, 0x00, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x88, 0x01, 0x01, 0x1a, 0x3d, 0x0a, - 0x05, 0x53, 0x74, 0x61, 0x74, 0x65, 0x22, 0x34, 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0f, - 0x0a, 0x0b, 0x75, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x10, 0x00, 0x12, - 0x0c, 0x0a, 0x08, 0x77, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x10, 0x01, 0x12, 0x0d, 0x0a, - 0x09, 0x61, 0x64, 0x76, 0x65, 0x72, 0x74, 0x69, 0x73, 0x65, 0x10, 0x02, 0x42, 0x08, 0x0a, 0x06, - 0x5f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x22, 0x98, 0x02, 0x0a, 0x11, 0x53, 0x74, 0x61, 0x74, 0x65, - 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x4c, 0x61, 0x63, 0x70, 0x12, 0x3f, 0x0a, 0x06, - 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x22, 0x2e, 0x6f, - 0x74, 0x67, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, - 0x4c, 0x61, 0x63, 0x70, 0x2e, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x2e, 0x45, 0x6e, 0x75, 0x6d, - 0x48, 0x00, 0x52, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x88, 0x01, 0x01, 0x12, 0x31, 0x0a, - 0x05, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x6f, - 0x74, 0x67, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, - 0x4c, 0x61, 0x63, 0x70, 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x52, 0x05, 0x61, 0x64, 0x6d, 0x69, 0x6e, - 0x12, 0x44, 0x0a, 0x0c, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x73, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x53, 0x74, 0x61, - 0x74, 0x65, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x4c, 0x61, 0x63, 0x70, 0x4d, 0x65, - 0x6d, 0x62, 0x65, 0x72, 0x50, 0x6f, 0x72, 0x74, 0x73, 0x52, 0x0b, 0x6d, 0x65, 0x6d, 0x62, 0x65, - 0x72, 0x50, 0x6f, 0x72, 0x74, 0x73, 0x1a, 0x3e, 0x0a, 0x06, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, - 0x22, 0x34, 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x0a, 0x0b, 0x75, 0x6e, 0x73, 0x70, - 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, 0x61, 0x64, 0x6d, - 0x69, 0x6e, 0x10, 0x01, 0x12, 0x10, 0x0a, 0x0c, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x5f, 0x70, - 0x6f, 0x72, 0x74, 0x73, 0x10, 0x02, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x63, 0x68, 0x6f, 0x69, 0x63, - 0x65, 0x22, 0xc3, 0x01, 0x0a, 0x16, 0x53, 0x74, 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x74, 0x6f, - 0x63, 0x6f, 0x6c, 0x4c, 0x61, 0x63, 0x70, 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x12, 0x28, 0x0a, 0x10, - 0x6c, 0x61, 0x67, 0x5f, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x73, - 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0e, 0x6c, 0x61, 0x67, 0x4d, 0x65, 0x6d, 0x62, 0x65, - 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x12, 0x41, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x26, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x53, 0x74, 0x61, 0x74, - 0x65, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x4c, 0x61, 0x63, 0x70, 0x41, 0x64, 0x6d, - 0x69, 0x6e, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x48, 0x00, 0x52, - 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x88, 0x01, 0x01, 0x1a, 0x32, 0x0a, 0x05, 0x53, 0x74, 0x61, - 0x74, 0x65, 0x22, 0x29, 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x0a, 0x0b, 0x75, 0x6e, - 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x10, 0x00, 0x12, 0x06, 0x0a, 0x02, 0x75, - 0x70, 0x10, 0x01, 0x12, 0x08, 0x0a, 0x04, 0x64, 0x6f, 0x77, 0x6e, 0x10, 0x02, 0x42, 0x08, 0x0a, - 0x06, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x22, 0xcf, 0x01, 0x0a, 0x1c, 0x53, 0x74, 0x61, 0x74, - 0x65, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x4c, 0x61, 0x63, 0x70, 0x4d, 0x65, 0x6d, - 0x62, 0x65, 0x72, 0x50, 0x6f, 0x72, 0x74, 0x73, 0x12, 0x28, 0x0a, 0x10, 0x6c, 0x61, 0x67, 0x5f, + 0x65, 0x22, 0xd6, 0x01, 0x0a, 0x18, 0x53, 0x74, 0x61, 0x74, 0x65, 0x54, 0x72, 0x61, 0x66, 0x66, + 0x69, 0x63, 0x46, 0x6c, 0x6f, 0x77, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x6d, 0x69, 0x74, 0x12, 0x1d, + 0x0a, 0x0a, 0x66, 0x6c, 0x6f, 0x77, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, + 0x28, 0x09, 0x52, 0x09, 0x66, 0x6c, 0x6f, 0x77, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x12, 0x43, 0x0a, + 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x28, 0x2e, 0x6f, + 0x74, 0x67, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x54, 0x72, 0x61, 0x66, 0x66, 0x69, 0x63, 0x46, + 0x6c, 0x6f, 0x77, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x6d, 0x69, 0x74, 0x2e, 0x53, 0x74, 0x61, 0x74, + 0x65, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x48, 0x00, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x88, + 0x01, 0x01, 0x1a, 0x4c, 0x0a, 0x05, 0x53, 0x74, 0x61, 0x74, 0x65, 0x22, 0x43, 0x0a, 0x04, 0x45, + 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x0a, 0x0b, 0x75, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, + 0x65, 0x64, 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x10, 0x01, 0x12, + 0x08, 0x0a, 0x04, 0x73, 0x74, 0x6f, 0x70, 0x10, 0x02, 0x12, 0x09, 0x0a, 0x05, 0x70, 0x61, 0x75, + 0x73, 0x65, 0x10, 0x03, 0x12, 0x0a, 0x0a, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6d, 0x65, 0x10, 0x04, + 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x22, 0x90, 0x01, 0x0a, 0x10, 0x53, + 0x74, 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x41, 0x6c, 0x6c, 0x12, + 0x3b, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x20, + 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, + 0x6f, 0x6c, 0x41, 0x6c, 0x6c, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x2e, 0x45, 0x6e, 0x75, 0x6d, + 0x48, 0x00, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x88, 0x01, 0x01, 0x1a, 0x35, 0x0a, 0x05, + 0x53, 0x74, 0x61, 0x74, 0x65, 0x22, 0x2c, 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x0a, + 0x0b, 0x75, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x10, 0x00, 0x12, 0x09, + 0x0a, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x10, 0x01, 0x12, 0x08, 0x0a, 0x04, 0x73, 0x74, 0x6f, + 0x70, 0x10, 0x02, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x22, 0xb2, 0x01, + 0x0a, 0x12, 0x53, 0x74, 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x52, + 0x6f, 0x75, 0x74, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x18, 0x01, 0x20, + 0x03, 0x28, 0x09, 0x52, 0x05, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x12, 0x3d, 0x0a, 0x05, 0x73, 0x74, + 0x61, 0x74, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x22, 0x2e, 0x6f, 0x74, 0x67, 0x2e, + 0x53, 0x74, 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x52, 0x6f, 0x75, + 0x74, 0x65, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x48, 0x00, 0x52, + 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x88, 0x01, 0x01, 0x1a, 0x3d, 0x0a, 0x05, 0x53, 0x74, 0x61, + 0x74, 0x65, 0x22, 0x34, 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x0a, 0x0b, 0x75, 0x6e, + 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x10, 0x00, 0x12, 0x0c, 0x0a, 0x08, 0x77, + 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x10, 0x01, 0x12, 0x0d, 0x0a, 0x09, 0x61, 0x64, 0x76, + 0x65, 0x72, 0x74, 0x69, 0x73, 0x65, 0x10, 0x02, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x73, 0x74, 0x61, + 0x74, 0x65, 0x22, 0x98, 0x02, 0x0a, 0x11, 0x53, 0x74, 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x74, + 0x6f, 0x63, 0x6f, 0x6c, 0x4c, 0x61, 0x63, 0x70, 0x12, 0x3f, 0x0a, 0x06, 0x63, 0x68, 0x6f, 0x69, + 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x22, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x53, + 0x74, 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x4c, 0x61, 0x63, 0x70, + 0x2e, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x48, 0x00, 0x52, 0x06, + 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x88, 0x01, 0x01, 0x12, 0x31, 0x0a, 0x05, 0x61, 0x64, 0x6d, + 0x69, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x53, + 0x74, 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x4c, 0x61, 0x63, 0x70, + 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x52, 0x05, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x12, 0x44, 0x0a, 0x0c, + 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x50, 0x72, + 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x4c, 0x61, 0x63, 0x70, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, + 0x50, 0x6f, 0x72, 0x74, 0x73, 0x52, 0x0b, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x50, 0x6f, 0x72, + 0x74, 0x73, 0x1a, 0x3e, 0x0a, 0x06, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x22, 0x34, 0x0a, 0x04, + 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x0a, 0x0b, 0x75, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, + 0x69, 0x65, 0x64, 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x10, 0x01, + 0x12, 0x10, 0x0a, 0x0c, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x73, + 0x10, 0x02, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x22, 0xc3, 0x01, + 0x0a, 0x16, 0x53, 0x74, 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x4c, + 0x61, 0x63, 0x70, 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x12, 0x28, 0x0a, 0x10, 0x6c, 0x61, 0x67, 0x5f, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0e, 0x6c, 0x61, 0x67, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x4e, 0x61, 0x6d, - 0x65, 0x73, 0x12, 0x47, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x0e, 0x32, 0x2c, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, + 0x65, 0x73, 0x12, 0x41, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x0e, 0x32, 0x26, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, + 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x4c, 0x61, 0x63, 0x70, 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x53, + 0x74, 0x61, 0x74, 0x65, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x48, 0x00, 0x52, 0x05, 0x73, 0x74, 0x61, + 0x74, 0x65, 0x88, 0x01, 0x01, 0x1a, 0x32, 0x0a, 0x05, 0x53, 0x74, 0x61, 0x74, 0x65, 0x22, 0x29, + 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x0a, 0x0b, 0x75, 0x6e, 0x73, 0x70, 0x65, 0x63, + 0x69, 0x66, 0x69, 0x65, 0x64, 0x10, 0x00, 0x12, 0x06, 0x0a, 0x02, 0x75, 0x70, 0x10, 0x01, 0x12, + 0x08, 0x0a, 0x04, 0x64, 0x6f, 0x77, 0x6e, 0x10, 0x02, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x73, 0x74, + 0x61, 0x74, 0x65, 0x22, 0xcf, 0x01, 0x0a, 0x1c, 0x53, 0x74, 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x4c, 0x61, 0x63, 0x70, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x50, - 0x6f, 0x72, 0x74, 0x73, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x48, - 0x00, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x88, 0x01, 0x01, 0x1a, 0x32, 0x0a, 0x05, 0x53, - 0x74, 0x61, 0x74, 0x65, 0x22, 0x29, 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x0a, 0x0b, - 0x75, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x10, 0x00, 0x12, 0x06, 0x0a, - 0x02, 0x75, 0x70, 0x10, 0x01, 0x12, 0x08, 0x0a, 0x04, 0x64, 0x6f, 0x77, 0x6e, 0x10, 0x02, 0x42, - 0x08, 0x0a, 0x06, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x22, 0xbd, 0x01, 0x0a, 0x10, 0x53, 0x74, - 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x42, 0x67, 0x70, 0x12, 0x3e, - 0x0a, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x21, - 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, - 0x6f, 0x6c, 0x42, 0x67, 0x70, 0x2e, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x2e, 0x45, 0x6e, 0x75, - 0x6d, 0x48, 0x00, 0x52, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x88, 0x01, 0x01, 0x12, 0x30, - 0x0a, 0x05, 0x70, 0x65, 0x65, 0x72, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, + 0x6f, 0x72, 0x74, 0x73, 0x12, 0x28, 0x0a, 0x10, 0x6c, 0x61, 0x67, 0x5f, 0x6d, 0x65, 0x6d, 0x62, + 0x65, 0x72, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0e, + 0x6c, 0x61, 0x67, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x12, 0x47, + 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2c, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, - 0x6c, 0x42, 0x67, 0x70, 0x50, 0x65, 0x65, 0x72, 0x73, 0x52, 0x05, 0x70, 0x65, 0x65, 0x72, 0x73, - 0x1a, 0x2c, 0x0a, 0x06, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x22, 0x22, 0x0a, 0x04, 0x45, 0x6e, - 0x75, 0x6d, 0x12, 0x0f, 0x0a, 0x0b, 0x75, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, - 0x64, 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, 0x70, 0x65, 0x65, 0x72, 0x73, 0x10, 0x01, 0x42, 0x09, - 0x0a, 0x07, 0x5f, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x22, 0xb6, 0x01, 0x0a, 0x15, 0x53, 0x74, - 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x42, 0x67, 0x70, 0x50, 0x65, - 0x65, 0x72, 0x73, 0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x65, 0x65, 0x72, 0x5f, 0x6e, 0x61, 0x6d, 0x65, - 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x09, 0x70, 0x65, 0x65, 0x72, 0x4e, 0x61, 0x6d, - 0x65, 0x73, 0x12, 0x40, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x0e, 0x32, 0x25, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, - 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x42, 0x67, 0x70, 0x50, 0x65, 0x65, 0x72, 0x73, 0x2e, 0x53, 0x74, - 0x61, 0x74, 0x65, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x48, 0x00, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, - 0x65, 0x88, 0x01, 0x01, 0x1a, 0x32, 0x0a, 0x05, 0x53, 0x74, 0x61, 0x74, 0x65, 0x22, 0x29, 0x0a, - 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x0a, 0x0b, 0x75, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, - 0x66, 0x69, 0x65, 0x64, 0x10, 0x00, 0x12, 0x06, 0x0a, 0x02, 0x75, 0x70, 0x10, 0x01, 0x12, 0x08, - 0x0a, 0x04, 0x64, 0x6f, 0x77, 0x6e, 0x10, 0x02, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x73, 0x74, 0x61, - 0x74, 0x65, 0x22, 0xc8, 0x01, 0x0a, 0x11, 0x53, 0x74, 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x74, - 0x6f, 0x63, 0x6f, 0x6c, 0x49, 0x73, 0x69, 0x73, 0x12, 0x3f, 0x0a, 0x06, 0x63, 0x68, 0x6f, 0x69, - 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x22, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x53, + 0x6c, 0x4c, 0x61, 0x63, 0x70, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x50, 0x6f, 0x72, 0x74, 0x73, + 0x2e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x48, 0x00, 0x52, 0x05, 0x73, + 0x74, 0x61, 0x74, 0x65, 0x88, 0x01, 0x01, 0x1a, 0x32, 0x0a, 0x05, 0x53, 0x74, 0x61, 0x74, 0x65, + 0x22, 0x29, 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x0a, 0x0b, 0x75, 0x6e, 0x73, 0x70, + 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x10, 0x00, 0x12, 0x06, 0x0a, 0x02, 0x75, 0x70, 0x10, + 0x01, 0x12, 0x08, 0x0a, 0x04, 0x64, 0x6f, 0x77, 0x6e, 0x10, 0x02, 0x42, 0x08, 0x0a, 0x06, 0x5f, + 0x73, 0x74, 0x61, 0x74, 0x65, 0x22, 0xbd, 0x01, 0x0a, 0x10, 0x53, 0x74, 0x61, 0x74, 0x65, 0x50, + 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x42, 0x67, 0x70, 0x12, 0x3e, 0x0a, 0x06, 0x63, 0x68, + 0x6f, 0x69, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x21, 0x2e, 0x6f, 0x74, 0x67, + 0x2e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x42, 0x67, + 0x70, 0x2e, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x48, 0x00, 0x52, + 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x88, 0x01, 0x01, 0x12, 0x30, 0x0a, 0x05, 0x70, 0x65, + 0x65, 0x72, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x6f, 0x74, 0x67, 0x2e, + 0x53, 0x74, 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x42, 0x67, 0x70, + 0x50, 0x65, 0x65, 0x72, 0x73, 0x52, 0x05, 0x70, 0x65, 0x65, 0x72, 0x73, 0x1a, 0x2c, 0x0a, 0x06, + 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x22, 0x22, 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0f, + 0x0a, 0x0b, 0x75, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x10, 0x00, 0x12, + 0x09, 0x0a, 0x05, 0x70, 0x65, 0x65, 0x72, 0x73, 0x10, 0x01, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x63, + 0x68, 0x6f, 0x69, 0x63, 0x65, 0x22, 0xb6, 0x01, 0x0a, 0x15, 0x53, 0x74, 0x61, 0x74, 0x65, 0x50, + 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x42, 0x67, 0x70, 0x50, 0x65, 0x65, 0x72, 0x73, 0x12, + 0x1d, 0x0a, 0x0a, 0x70, 0x65, 0x65, 0x72, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x18, 0x01, 0x20, + 0x03, 0x28, 0x09, 0x52, 0x09, 0x70, 0x65, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x12, 0x40, + 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x25, 0x2e, + 0x6f, 0x74, 0x67, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, + 0x6c, 0x42, 0x67, 0x70, 0x50, 0x65, 0x65, 0x72, 0x73, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x2e, + 0x45, 0x6e, 0x75, 0x6d, 0x48, 0x00, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x88, 0x01, 0x01, + 0x1a, 0x32, 0x0a, 0x05, 0x53, 0x74, 0x61, 0x74, 0x65, 0x22, 0x29, 0x0a, 0x04, 0x45, 0x6e, 0x75, + 0x6d, 0x12, 0x0f, 0x0a, 0x0b, 0x75, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, + 0x10, 0x00, 0x12, 0x06, 0x0a, 0x02, 0x75, 0x70, 0x10, 0x01, 0x12, 0x08, 0x0a, 0x04, 0x64, 0x6f, + 0x77, 0x6e, 0x10, 0x02, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x22, 0xc8, + 0x01, 0x0a, 0x11, 0x53, 0x74, 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, + 0x49, 0x73, 0x69, 0x73, 0x12, 0x3f, 0x0a, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x0e, 0x32, 0x22, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x65, + 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x49, 0x73, 0x69, 0x73, 0x2e, 0x43, 0x68, 0x6f, + 0x69, 0x63, 0x65, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x48, 0x00, 0x52, 0x06, 0x63, 0x68, 0x6f, 0x69, + 0x63, 0x65, 0x88, 0x01, 0x01, 0x12, 0x37, 0x0a, 0x07, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x73, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x53, 0x74, 0x61, + 0x74, 0x65, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x49, 0x73, 0x69, 0x73, 0x52, 0x6f, + 0x75, 0x74, 0x65, 0x72, 0x73, 0x52, 0x07, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x73, 0x1a, 0x2e, + 0x0a, 0x06, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x22, 0x24, 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, + 0x12, 0x0f, 0x0a, 0x0b, 0x75, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x10, + 0x00, 0x12, 0x0b, 0x0a, 0x07, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x73, 0x10, 0x01, 0x42, 0x09, + 0x0a, 0x07, 0x5f, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x22, 0xc0, 0x01, 0x0a, 0x18, 0x53, 0x74, + 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x49, 0x73, 0x69, 0x73, 0x52, + 0x6f, 0x75, 0x74, 0x65, 0x72, 0x73, 0x12, 0x21, 0x0a, 0x0c, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x72, + 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0b, 0x72, 0x6f, + 0x75, 0x74, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x12, 0x43, 0x0a, 0x05, 0x73, 0x74, 0x61, + 0x74, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x28, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x49, 0x73, 0x69, 0x73, - 0x2e, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x48, 0x00, 0x52, 0x06, - 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x88, 0x01, 0x01, 0x12, 0x37, 0x0a, 0x07, 0x72, 0x6f, 0x75, - 0x74, 0x65, 0x72, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x6f, 0x74, 0x67, - 0x2e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x49, 0x73, - 0x69, 0x73, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x73, 0x52, 0x07, 0x72, 0x6f, 0x75, 0x74, 0x65, - 0x72, 0x73, 0x1a, 0x2e, 0x0a, 0x06, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x22, 0x24, 0x0a, 0x04, - 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x0a, 0x0b, 0x75, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, - 0x69, 0x65, 0x64, 0x10, 0x00, 0x12, 0x0b, 0x0a, 0x07, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x73, - 0x10, 0x01, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x22, 0xc0, 0x01, - 0x0a, 0x18, 0x53, 0x74, 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x49, - 0x73, 0x69, 0x73, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x73, 0x12, 0x21, 0x0a, 0x0c, 0x72, 0x6f, - 0x75, 0x74, 0x65, 0x72, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, - 0x52, 0x0b, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x12, 0x43, 0x0a, - 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x28, 0x2e, 0x6f, - 0x74, 0x67, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, - 0x49, 0x73, 0x69, 0x73, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x73, 0x2e, 0x53, 0x74, 0x61, 0x74, - 0x65, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x48, 0x00, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x88, - 0x01, 0x01, 0x1a, 0x32, 0x0a, 0x05, 0x53, 0x74, 0x61, 0x74, 0x65, 0x22, 0x29, 0x0a, 0x04, 0x45, - 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x0a, 0x0b, 0x75, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, - 0x65, 0x64, 0x10, 0x00, 0x12, 0x06, 0x0a, 0x02, 0x75, 0x70, 0x10, 0x01, 0x12, 0x08, 0x0a, 0x04, - 0x64, 0x6f, 0x77, 0x6e, 0x10, 0x02, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x65, - 0x22, 0xb9, 0x01, 0x0a, 0x0d, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x41, 0x63, 0x74, 0x69, - 0x6f, 0x6e, 0x12, 0x3b, 0x0a, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x0e, 0x32, 0x1e, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, - 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x2e, 0x45, 0x6e, - 0x75, 0x6d, 0x48, 0x00, 0x52, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x88, 0x01, 0x01, 0x12, - 0x2f, 0x0a, 0x08, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x13, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x72, - 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x52, 0x08, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, - 0x1a, 0x2f, 0x0a, 0x06, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x22, 0x25, 0x0a, 0x04, 0x45, 0x6e, - 0x75, 0x6d, 0x12, 0x0f, 0x0a, 0x0b, 0x75, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, - 0x64, 0x10, 0x00, 0x12, 0x0c, 0x0a, 0x08, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x10, - 0x01, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x22, 0x64, 0x0a, 0x15, - 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x77, 0x61, 0x72, 0x6e, 0x69, 0x6e, 0x67, - 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x08, 0x77, 0x61, 0x72, 0x6e, 0x69, 0x6e, 0x67, - 0x73, 0x12, 0x2f, 0x0a, 0x08, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x52, 0x08, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x22, 0xc3, 0x01, 0x0a, 0x0e, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3c, 0x0a, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1f, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x41, 0x63, 0x74, 0x69, - 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x43, 0x68, 0x6f, 0x69, 0x63, - 0x65, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x48, 0x00, 0x52, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, - 0x88, 0x01, 0x01, 0x12, 0x37, 0x0a, 0x08, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x41, 0x63, 0x74, 0x69, - 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, + 0x52, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x73, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x2e, 0x45, 0x6e, + 0x75, 0x6d, 0x48, 0x00, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x88, 0x01, 0x01, 0x1a, 0x32, + 0x0a, 0x05, 0x53, 0x74, 0x61, 0x74, 0x65, 0x22, 0x29, 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, + 0x0f, 0x0a, 0x0b, 0x75, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x10, 0x00, + 0x12, 0x06, 0x0a, 0x02, 0x75, 0x70, 0x10, 0x01, 0x12, 0x08, 0x0a, 0x04, 0x64, 0x6f, 0x77, 0x6e, + 0x10, 0x02, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x22, 0xb9, 0x01, 0x0a, + 0x0d, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x3b, + 0x0a, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1e, + 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x41, 0x63, 0x74, 0x69, + 0x6f, 0x6e, 0x2e, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x48, 0x00, + 0x52, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x88, 0x01, 0x01, 0x12, 0x2f, 0x0a, 0x08, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, + 0x6f, 0x74, 0x67, 0x2e, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x52, 0x08, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x1a, 0x2f, 0x0a, 0x06, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x22, 0x25, 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x0a, 0x0b, 0x75, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x10, 0x00, 0x12, 0x0c, 0x0a, 0x08, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x10, 0x01, 0x42, 0x09, 0x0a, - 0x07, 0x5f, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x22, 0x9d, 0x02, 0x0a, 0x0e, 0x41, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x12, 0x3c, 0x0a, 0x06, 0x63, - 0x68, 0x6f, 0x69, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1f, 0x2e, 0x6f, 0x74, - 0x67, 0x2e, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, - 0x2e, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x48, 0x00, 0x52, 0x06, - 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x88, 0x01, 0x01, 0x12, 0x2b, 0x0a, 0x04, 0x69, 0x70, 0x76, - 0x34, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x41, 0x63, - 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x49, 0x70, 0x76, 0x34, - 0x52, 0x04, 0x69, 0x70, 0x76, 0x34, 0x12, 0x2b, 0x0a, 0x04, 0x69, 0x70, 0x76, 0x36, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x41, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x49, 0x70, 0x76, 0x36, 0x52, 0x04, 0x69, - 0x70, 0x76, 0x36, 0x12, 0x28, 0x0a, 0x03, 0x62, 0x67, 0x70, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x16, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x72, 0x6f, - 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x42, 0x67, 0x70, 0x52, 0x03, 0x62, 0x67, 0x70, 0x1a, 0x3e, 0x0a, - 0x06, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x22, 0x34, 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, - 0x0f, 0x0a, 0x0b, 0x75, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x10, 0x00, - 0x12, 0x08, 0x0a, 0x04, 0x69, 0x70, 0x76, 0x34, 0x10, 0x01, 0x12, 0x08, 0x0a, 0x04, 0x69, 0x70, - 0x76, 0x36, 0x10, 0x02, 0x12, 0x07, 0x0a, 0x03, 0x62, 0x67, 0x70, 0x10, 0x03, 0x42, 0x09, 0x0a, - 0x07, 0x5f, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x22, 0x8a, 0x02, 0x0a, 0x16, 0x41, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x50, 0x72, 0x6f, 0x74, 0x6f, - 0x63, 0x6f, 0x6c, 0x12, 0x44, 0x0a, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x0e, 0x32, 0x27, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, - 0x2e, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x48, 0x00, 0x52, 0x06, - 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x88, 0x01, 0x01, 0x12, 0x33, 0x0a, 0x04, 0x69, 0x70, 0x76, - 0x34, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x41, 0x63, - 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x50, 0x72, 0x6f, 0x74, - 0x6f, 0x63, 0x6f, 0x6c, 0x49, 0x70, 0x76, 0x34, 0x52, 0x04, 0x69, 0x70, 0x76, 0x34, 0x12, 0x33, - 0x0a, 0x04, 0x69, 0x70, 0x76, 0x36, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x6f, - 0x74, 0x67, 0x2e, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x49, 0x70, 0x76, 0x36, 0x52, 0x04, 0x69, - 0x70, 0x76, 0x36, 0x1a, 0x35, 0x0a, 0x06, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x22, 0x2b, 0x0a, - 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x0a, 0x0b, 0x75, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, - 0x66, 0x69, 0x65, 0x64, 0x10, 0x00, 0x12, 0x08, 0x0a, 0x04, 0x69, 0x70, 0x76, 0x34, 0x10, 0x01, - 0x12, 0x08, 0x0a, 0x04, 0x69, 0x70, 0x76, 0x36, 0x10, 0x02, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x63, - 0x68, 0x6f, 0x69, 0x63, 0x65, 0x22, 0xbf, 0x01, 0x0a, 0x12, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, - 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x49, 0x70, 0x76, 0x34, 0x12, 0x40, 0x0a, 0x06, - 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x23, 0x2e, 0x6f, - 0x74, 0x67, 0x2e, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, - 0x6c, 0x49, 0x70, 0x76, 0x34, 0x2e, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x2e, 0x45, 0x6e, 0x75, - 0x6d, 0x48, 0x00, 0x52, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x88, 0x01, 0x01, 0x12, 0x2f, - 0x0a, 0x04, 0x70, 0x69, 0x6e, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x6f, + 0x07, 0x5f, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x22, 0x64, 0x0a, 0x15, 0x43, 0x6f, 0x6e, 0x74, + 0x72, 0x6f, 0x6c, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x77, 0x61, 0x72, 0x6e, 0x69, 0x6e, 0x67, 0x73, 0x18, 0x01, 0x20, + 0x03, 0x28, 0x09, 0x52, 0x08, 0x77, 0x61, 0x72, 0x6e, 0x69, 0x6e, 0x67, 0x73, 0x12, 0x2f, 0x0a, + 0x08, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x13, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x52, 0x08, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xc3, + 0x01, 0x0a, 0x0e, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x12, 0x3c, 0x0a, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x0e, 0x32, 0x1f, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x2e, 0x45, 0x6e, + 0x75, 0x6d, 0x48, 0x00, 0x52, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x88, 0x01, 0x01, 0x12, + 0x37, 0x0a, 0x08, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x1b, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x52, 0x08, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x1a, 0x2f, 0x0a, 0x06, 0x43, 0x68, 0x6f, 0x69, + 0x63, 0x65, 0x22, 0x25, 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x0a, 0x0b, 0x75, 0x6e, + 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x10, 0x00, 0x12, 0x0c, 0x0a, 0x08, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x10, 0x01, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x63, 0x68, + 0x6f, 0x69, 0x63, 0x65, 0x22, 0x9d, 0x02, 0x0a, 0x0e, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x50, + 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x12, 0x3c, 0x0a, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, + 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1f, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x41, 0x63, + 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x43, 0x68, 0x6f, + 0x69, 0x63, 0x65, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x48, 0x00, 0x52, 0x06, 0x63, 0x68, 0x6f, 0x69, + 0x63, 0x65, 0x88, 0x01, 0x01, 0x12, 0x2b, 0x0a, 0x04, 0x69, 0x70, 0x76, 0x34, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, + 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x49, 0x70, 0x76, 0x34, 0x52, 0x04, 0x69, 0x70, + 0x76, 0x34, 0x12, 0x2b, 0x0a, 0x04, 0x69, 0x70, 0x76, 0x36, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x17, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x72, 0x6f, + 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x49, 0x70, 0x76, 0x36, 0x52, 0x04, 0x69, 0x70, 0x76, 0x36, 0x12, + 0x28, 0x0a, 0x03, 0x62, 0x67, 0x70, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, - 0x6c, 0x49, 0x70, 0x76, 0x34, 0x50, 0x69, 0x6e, 0x67, 0x52, 0x04, 0x70, 0x69, 0x6e, 0x67, 0x1a, - 0x2b, 0x0a, 0x06, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x22, 0x21, 0x0a, 0x04, 0x45, 0x6e, 0x75, - 0x6d, 0x12, 0x0f, 0x0a, 0x0b, 0x75, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, - 0x10, 0x00, 0x12, 0x08, 0x0a, 0x04, 0x70, 0x69, 0x6e, 0x67, 0x10, 0x01, 0x42, 0x09, 0x0a, 0x07, - 0x5f, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x22, 0xd7, 0x01, 0x0a, 0x1a, 0x41, 0x63, 0x74, 0x69, - 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, - 0x6f, 0x6c, 0x49, 0x70, 0x76, 0x34, 0x12, 0x48, 0x0a, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2b, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x41, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x50, 0x72, 0x6f, 0x74, 0x6f, - 0x63, 0x6f, 0x6c, 0x49, 0x70, 0x76, 0x34, 0x2e, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x2e, 0x45, - 0x6e, 0x75, 0x6d, 0x48, 0x00, 0x52, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x88, 0x01, 0x01, - 0x12, 0x37, 0x0a, 0x04, 0x70, 0x69, 0x6e, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, - 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x49, 0x70, 0x76, 0x34, 0x50, - 0x69, 0x6e, 0x67, 0x52, 0x04, 0x70, 0x69, 0x6e, 0x67, 0x1a, 0x2b, 0x0a, 0x06, 0x43, 0x68, 0x6f, - 0x69, 0x63, 0x65, 0x22, 0x21, 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x0a, 0x0b, 0x75, + 0x6c, 0x42, 0x67, 0x70, 0x52, 0x03, 0x62, 0x67, 0x70, 0x1a, 0x3e, 0x0a, 0x06, 0x43, 0x68, 0x6f, + 0x69, 0x63, 0x65, 0x22, 0x34, 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x0a, 0x0b, 0x75, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x10, 0x00, 0x12, 0x08, 0x0a, 0x04, - 0x70, 0x69, 0x6e, 0x67, 0x10, 0x01, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x63, 0x68, 0x6f, 0x69, 0x63, - 0x65, 0x22, 0x58, 0x0a, 0x16, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x72, 0x6f, 0x74, 0x6f, - 0x63, 0x6f, 0x6c, 0x49, 0x70, 0x76, 0x34, 0x50, 0x69, 0x6e, 0x67, 0x12, 0x3e, 0x0a, 0x08, 0x72, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x22, 0x2e, - 0x6f, 0x74, 0x67, 0x2e, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, - 0x6f, 0x6c, 0x49, 0x70, 0x76, 0x34, 0x50, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x52, 0x08, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x73, 0x22, 0x73, 0x0a, 0x1d, 0x41, + 0x69, 0x70, 0x76, 0x34, 0x10, 0x01, 0x12, 0x08, 0x0a, 0x04, 0x69, 0x70, 0x76, 0x36, 0x10, 0x02, + 0x12, 0x07, 0x0a, 0x03, 0x62, 0x67, 0x70, 0x10, 0x03, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x63, 0x68, + 0x6f, 0x69, 0x63, 0x65, 0x22, 0x8a, 0x02, 0x0a, 0x16, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x12, + 0x44, 0x0a, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, + 0x27, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x43, 0x68, 0x6f, + 0x69, 0x63, 0x65, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x48, 0x00, 0x52, 0x06, 0x63, 0x68, 0x6f, 0x69, + 0x63, 0x65, 0x88, 0x01, 0x01, 0x12, 0x33, 0x0a, 0x04, 0x69, 0x70, 0x76, 0x34, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, + 0x49, 0x70, 0x76, 0x34, 0x52, 0x04, 0x69, 0x70, 0x76, 0x34, 0x12, 0x33, 0x0a, 0x04, 0x69, 0x70, + 0x76, 0x36, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x41, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x50, 0x72, 0x6f, + 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x49, 0x70, 0x76, 0x36, 0x52, 0x04, 0x69, 0x70, 0x76, 0x36, 0x1a, + 0x35, 0x0a, 0x06, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x22, 0x2b, 0x0a, 0x04, 0x45, 0x6e, 0x75, + 0x6d, 0x12, 0x0f, 0x0a, 0x0b, 0x75, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, + 0x10, 0x00, 0x12, 0x08, 0x0a, 0x04, 0x69, 0x70, 0x76, 0x34, 0x10, 0x01, 0x12, 0x08, 0x0a, 0x04, + 0x69, 0x70, 0x76, 0x36, 0x10, 0x02, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x63, 0x68, 0x6f, 0x69, 0x63, + 0x65, 0x22, 0xbf, 0x01, 0x0a, 0x12, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x72, 0x6f, 0x74, + 0x6f, 0x63, 0x6f, 0x6c, 0x49, 0x70, 0x76, 0x34, 0x12, 0x40, 0x0a, 0x06, 0x63, 0x68, 0x6f, 0x69, + 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x23, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x49, 0x70, 0x76, - 0x34, 0x50, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1e, 0x0a, 0x08, - 0x73, 0x72, 0x63, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, - 0x52, 0x07, 0x73, 0x72, 0x63, 0x4e, 0x61, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, 0x1a, 0x0a, 0x06, - 0x64, 0x73, 0x74, 0x5f, 0x69, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, 0x52, 0x05, - 0x64, 0x73, 0x74, 0x49, 0x70, 0x88, 0x01, 0x01, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x73, 0x72, 0x63, - 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x64, 0x73, 0x74, 0x5f, 0x69, 0x70, - 0x22, 0x6b, 0x0a, 0x1e, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x49, 0x70, 0x76, 0x34, 0x50, 0x69, - 0x6e, 0x67, 0x12, 0x49, 0x0a, 0x09, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x73, 0x18, - 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x41, 0x63, 0x74, 0x69, - 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, - 0x6f, 0x6c, 0x49, 0x70, 0x76, 0x34, 0x50, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x52, 0x09, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x73, 0x22, 0x9b, 0x02, - 0x0a, 0x26, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x49, 0x70, 0x76, 0x34, 0x50, 0x69, 0x6e, 0x67, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1e, 0x0a, 0x08, 0x73, 0x72, 0x63, 0x5f, - 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x07, 0x73, 0x72, - 0x63, 0x4e, 0x61, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, 0x1a, 0x0a, 0x06, 0x64, 0x73, 0x74, 0x5f, - 0x69, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, 0x52, 0x05, 0x64, 0x73, 0x74, 0x49, - 0x70, 0x88, 0x01, 0x01, 0x12, 0x54, 0x0a, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x0e, 0x32, 0x37, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x41, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, - 0x6c, 0x49, 0x70, 0x76, 0x34, 0x50, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x2e, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x48, 0x02, 0x52, - 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x88, 0x01, 0x01, 0x1a, 0x3c, 0x0a, 0x06, 0x52, 0x65, - 0x73, 0x75, 0x6c, 0x74, 0x22, 0x32, 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x0a, 0x0b, - 0x75, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x10, 0x00, 0x12, 0x0d, 0x0a, - 0x09, 0x73, 0x75, 0x63, 0x63, 0x65, 0x65, 0x64, 0x65, 0x64, 0x10, 0x01, 0x12, 0x0a, 0x0a, 0x06, - 0x66, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x10, 0x02, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x73, 0x72, 0x63, - 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x64, 0x73, 0x74, 0x5f, 0x69, 0x70, - 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, 0xbf, 0x01, 0x0a, 0x12, - 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x49, 0x70, - 0x76, 0x36, 0x12, 0x40, 0x0a, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x0e, 0x32, 0x23, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x50, - 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x49, 0x70, 0x76, 0x36, 0x2e, 0x43, 0x68, 0x6f, 0x69, - 0x63, 0x65, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x48, 0x00, 0x52, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, - 0x65, 0x88, 0x01, 0x01, 0x12, 0x2f, 0x0a, 0x04, 0x70, 0x69, 0x6e, 0x67, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x50, - 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x49, 0x70, 0x76, 0x36, 0x50, 0x69, 0x6e, 0x67, 0x52, + 0x34, 0x2e, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x48, 0x00, 0x52, + 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x88, 0x01, 0x01, 0x12, 0x2f, 0x0a, 0x04, 0x70, 0x69, + 0x6e, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x41, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x49, 0x70, 0x76, + 0x34, 0x50, 0x69, 0x6e, 0x67, 0x52, 0x04, 0x70, 0x69, 0x6e, 0x67, 0x1a, 0x2b, 0x0a, 0x06, 0x43, + 0x68, 0x6f, 0x69, 0x63, 0x65, 0x22, 0x21, 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x0a, + 0x0b, 0x75, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x10, 0x00, 0x12, 0x08, + 0x0a, 0x04, 0x70, 0x69, 0x6e, 0x67, 0x10, 0x01, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x63, 0x68, 0x6f, + 0x69, 0x63, 0x65, 0x22, 0xd7, 0x01, 0x0a, 0x1a, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x49, 0x70, + 0x76, 0x34, 0x12, 0x48, 0x0a, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x0e, 0x32, 0x2b, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x49, + 0x70, 0x76, 0x34, 0x2e, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x48, + 0x00, 0x52, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x88, 0x01, 0x01, 0x12, 0x37, 0x0a, 0x04, + 0x70, 0x69, 0x6e, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x6f, 0x74, 0x67, + 0x2e, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x50, + 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x49, 0x70, 0x76, 0x34, 0x50, 0x69, 0x6e, 0x67, 0x52, 0x04, 0x70, 0x69, 0x6e, 0x67, 0x1a, 0x2b, 0x0a, 0x06, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x22, 0x21, 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x0a, 0x0b, 0x75, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x10, 0x00, 0x12, 0x08, 0x0a, 0x04, 0x70, 0x69, 0x6e, 0x67, - 0x10, 0x01, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x22, 0xd7, 0x01, - 0x0a, 0x1a, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x49, 0x70, 0x76, 0x36, 0x12, 0x48, 0x0a, 0x06, - 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2b, 0x2e, 0x6f, - 0x74, 0x67, 0x2e, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x49, 0x70, 0x76, 0x36, 0x2e, 0x43, 0x68, - 0x6f, 0x69, 0x63, 0x65, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x48, 0x00, 0x52, 0x06, 0x63, 0x68, 0x6f, - 0x69, 0x63, 0x65, 0x88, 0x01, 0x01, 0x12, 0x37, 0x0a, 0x04, 0x70, 0x69, 0x6e, 0x67, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x41, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, - 0x6c, 0x49, 0x70, 0x76, 0x36, 0x50, 0x69, 0x6e, 0x67, 0x52, 0x04, 0x70, 0x69, 0x6e, 0x67, 0x1a, - 0x2b, 0x0a, 0x06, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x22, 0x21, 0x0a, 0x04, 0x45, 0x6e, 0x75, - 0x6d, 0x12, 0x0f, 0x0a, 0x0b, 0x75, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, - 0x10, 0x00, 0x12, 0x08, 0x0a, 0x04, 0x70, 0x69, 0x6e, 0x67, 0x10, 0x01, 0x42, 0x09, 0x0a, 0x07, - 0x5f, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x22, 0x58, 0x0a, 0x16, 0x41, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x49, 0x70, 0x76, 0x36, 0x50, 0x69, 0x6e, - 0x67, 0x12, 0x3e, 0x0a, 0x08, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x73, 0x18, 0x01, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, - 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x49, 0x70, 0x76, 0x36, 0x50, 0x69, 0x6e, 0x67, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x52, 0x08, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x73, 0x22, 0x73, 0x0a, 0x1d, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x72, 0x6f, 0x74, 0x6f, - 0x63, 0x6f, 0x6c, 0x49, 0x70, 0x76, 0x36, 0x50, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x12, 0x1e, 0x0a, 0x08, 0x73, 0x72, 0x63, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x07, 0x73, 0x72, 0x63, 0x4e, 0x61, 0x6d, 0x65, 0x88, - 0x01, 0x01, 0x12, 0x1a, 0x0a, 0x06, 0x64, 0x73, 0x74, 0x5f, 0x69, 0x70, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x09, 0x48, 0x01, 0x52, 0x05, 0x64, 0x73, 0x74, 0x49, 0x70, 0x88, 0x01, 0x01, 0x42, 0x0b, - 0x0a, 0x09, 0x5f, 0x73, 0x72, 0x63, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x42, 0x09, 0x0a, 0x07, 0x5f, - 0x64, 0x73, 0x74, 0x5f, 0x69, 0x70, 0x22, 0x6b, 0x0a, 0x1e, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, - 0x49, 0x70, 0x76, 0x36, 0x50, 0x69, 0x6e, 0x67, 0x12, 0x49, 0x0a, 0x09, 0x72, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x6f, 0x74, - 0x67, 0x2e, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x49, 0x70, 0x76, 0x36, 0x50, 0x69, 0x6e, 0x67, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x52, 0x09, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x73, 0x22, 0x9b, 0x02, 0x0a, 0x26, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, + 0x10, 0x01, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x22, 0x58, 0x0a, + 0x16, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x49, + 0x70, 0x76, 0x34, 0x50, 0x69, 0x6e, 0x67, 0x12, 0x3e, 0x0a, 0x08, 0x72, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x6f, 0x74, 0x67, 0x2e, + 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x49, 0x70, + 0x76, 0x34, 0x50, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x52, 0x08, 0x72, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x73, 0x22, 0x73, 0x0a, 0x1d, 0x41, 0x63, 0x74, 0x69, 0x6f, + 0x6e, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x49, 0x70, 0x76, 0x34, 0x50, 0x69, 0x6e, + 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1e, 0x0a, 0x08, 0x73, 0x72, 0x63, 0x5f, + 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x07, 0x73, 0x72, + 0x63, 0x4e, 0x61, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, 0x1a, 0x0a, 0x06, 0x64, 0x73, 0x74, 0x5f, + 0x69, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, 0x52, 0x05, 0x64, 0x73, 0x74, 0x49, + 0x70, 0x88, 0x01, 0x01, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x73, 0x72, 0x63, 0x5f, 0x6e, 0x61, 0x6d, + 0x65, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x64, 0x73, 0x74, 0x5f, 0x69, 0x70, 0x22, 0x6b, 0x0a, 0x1e, + 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x50, 0x72, + 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x49, 0x70, 0x76, 0x34, 0x50, 0x69, 0x6e, 0x67, 0x12, 0x49, + 0x0a, 0x09, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x2b, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x49, 0x70, - 0x76, 0x36, 0x50, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1e, + 0x76, 0x34, 0x50, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x52, 0x09, + 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x73, 0x22, 0x9b, 0x02, 0x0a, 0x26, 0x41, 0x63, + 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x50, 0x72, 0x6f, 0x74, + 0x6f, 0x63, 0x6f, 0x6c, 0x49, 0x70, 0x76, 0x34, 0x50, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1e, 0x0a, 0x08, 0x73, 0x72, 0x63, 0x5f, 0x6e, 0x61, 0x6d, 0x65, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x07, 0x73, 0x72, 0x63, 0x4e, 0x61, 0x6d, + 0x65, 0x88, 0x01, 0x01, 0x12, 0x1a, 0x0a, 0x06, 0x64, 0x73, 0x74, 0x5f, 0x69, 0x70, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, 0x52, 0x05, 0x64, 0x73, 0x74, 0x49, 0x70, 0x88, 0x01, 0x01, + 0x12, 0x54, 0x0a, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, + 0x32, 0x37, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x49, 0x70, 0x76, + 0x34, 0x50, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x52, 0x65, + 0x73, 0x75, 0x6c, 0x74, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x48, 0x02, 0x52, 0x06, 0x72, 0x65, 0x73, + 0x75, 0x6c, 0x74, 0x88, 0x01, 0x01, 0x1a, 0x3c, 0x0a, 0x06, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, + 0x22, 0x32, 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x0a, 0x0b, 0x75, 0x6e, 0x73, 0x70, + 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x10, 0x00, 0x12, 0x0d, 0x0a, 0x09, 0x73, 0x75, 0x63, + 0x63, 0x65, 0x65, 0x64, 0x65, 0x64, 0x10, 0x01, 0x12, 0x0a, 0x0a, 0x06, 0x66, 0x61, 0x69, 0x6c, + 0x65, 0x64, 0x10, 0x02, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x73, 0x72, 0x63, 0x5f, 0x6e, 0x61, 0x6d, + 0x65, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x64, 0x73, 0x74, 0x5f, 0x69, 0x70, 0x42, 0x09, 0x0a, 0x07, + 0x5f, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, 0xbf, 0x01, 0x0a, 0x12, 0x41, 0x63, 0x74, 0x69, + 0x6f, 0x6e, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x49, 0x70, 0x76, 0x36, 0x12, 0x40, + 0x0a, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x23, + 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x72, 0x6f, 0x74, 0x6f, + 0x63, 0x6f, 0x6c, 0x49, 0x70, 0x76, 0x36, 0x2e, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x2e, 0x45, + 0x6e, 0x75, 0x6d, 0x48, 0x00, 0x52, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x88, 0x01, 0x01, + 0x12, 0x2f, 0x0a, 0x04, 0x70, 0x69, 0x6e, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, + 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x72, 0x6f, 0x74, 0x6f, + 0x63, 0x6f, 0x6c, 0x49, 0x70, 0x76, 0x36, 0x50, 0x69, 0x6e, 0x67, 0x52, 0x04, 0x70, 0x69, 0x6e, + 0x67, 0x1a, 0x2b, 0x0a, 0x06, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x22, 0x21, 0x0a, 0x04, 0x45, + 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x0a, 0x0b, 0x75, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, + 0x65, 0x64, 0x10, 0x00, 0x12, 0x08, 0x0a, 0x04, 0x70, 0x69, 0x6e, 0x67, 0x10, 0x01, 0x42, 0x09, + 0x0a, 0x07, 0x5f, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x22, 0xd7, 0x01, 0x0a, 0x1a, 0x41, 0x63, + 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x50, 0x72, 0x6f, 0x74, + 0x6f, 0x63, 0x6f, 0x6c, 0x49, 0x70, 0x76, 0x36, 0x12, 0x48, 0x0a, 0x06, 0x63, 0x68, 0x6f, 0x69, + 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2b, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x41, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x50, 0x72, 0x6f, + 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x49, 0x70, 0x76, 0x36, 0x2e, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, + 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x48, 0x00, 0x52, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x88, + 0x01, 0x01, 0x12, 0x37, 0x0a, 0x04, 0x70, 0x69, 0x6e, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x23, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x49, 0x70, 0x76, + 0x36, 0x50, 0x69, 0x6e, 0x67, 0x52, 0x04, 0x70, 0x69, 0x6e, 0x67, 0x1a, 0x2b, 0x0a, 0x06, 0x43, + 0x68, 0x6f, 0x69, 0x63, 0x65, 0x22, 0x21, 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x0a, + 0x0b, 0x75, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x10, 0x00, 0x12, 0x08, + 0x0a, 0x04, 0x70, 0x69, 0x6e, 0x67, 0x10, 0x01, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x63, 0x68, 0x6f, + 0x69, 0x63, 0x65, 0x22, 0x58, 0x0a, 0x16, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x72, 0x6f, + 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x49, 0x70, 0x76, 0x36, 0x50, 0x69, 0x6e, 0x67, 0x12, 0x3e, 0x0a, + 0x08, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x22, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x72, 0x6f, 0x74, + 0x6f, 0x63, 0x6f, 0x6c, 0x49, 0x70, 0x76, 0x36, 0x50, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x52, 0x08, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x73, 0x22, 0x73, 0x0a, + 0x1d, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x49, + 0x70, 0x76, 0x36, 0x50, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1e, 0x0a, 0x08, 0x73, 0x72, 0x63, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x07, 0x73, 0x72, 0x63, 0x4e, 0x61, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, 0x1a, 0x0a, 0x06, 0x64, 0x73, 0x74, 0x5f, 0x69, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, - 0x52, 0x05, 0x64, 0x73, 0x74, 0x49, 0x70, 0x88, 0x01, 0x01, 0x12, 0x54, 0x0a, 0x06, 0x72, 0x65, - 0x73, 0x75, 0x6c, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x37, 0x2e, 0x6f, 0x74, 0x67, - 0x2e, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x50, - 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x49, 0x70, 0x76, 0x36, 0x50, 0x69, 0x6e, 0x67, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x2e, 0x45, - 0x6e, 0x75, 0x6d, 0x48, 0x02, 0x52, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x88, 0x01, 0x01, - 0x1a, 0x3c, 0x0a, 0x06, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, 0x32, 0x0a, 0x04, 0x45, 0x6e, - 0x75, 0x6d, 0x12, 0x0f, 0x0a, 0x0b, 0x75, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, - 0x64, 0x10, 0x00, 0x12, 0x0d, 0x0a, 0x09, 0x73, 0x75, 0x63, 0x63, 0x65, 0x65, 0x64, 0x65, 0x64, - 0x10, 0x01, 0x12, 0x0a, 0x0a, 0x06, 0x66, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x10, 0x02, 0x42, 0x0b, - 0x0a, 0x09, 0x5f, 0x73, 0x72, 0x63, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x42, 0x09, 0x0a, 0x07, 0x5f, - 0x64, 0x73, 0x74, 0x5f, 0x69, 0x70, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x72, 0x65, 0x73, 0x75, 0x6c, - 0x74, 0x22, 0xe6, 0x02, 0x0a, 0x11, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x72, 0x6f, 0x74, - 0x6f, 0x63, 0x6f, 0x6c, 0x42, 0x67, 0x70, 0x12, 0x3f, 0x0a, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, - 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x22, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x41, 0x63, - 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x42, 0x67, 0x70, 0x2e, - 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x48, 0x00, 0x52, 0x06, 0x63, - 0x68, 0x6f, 0x69, 0x63, 0x65, 0x88, 0x01, 0x01, 0x12, 0x46, 0x0a, 0x0c, 0x6e, 0x6f, 0x74, 0x69, - 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, + 0x52, 0x05, 0x64, 0x73, 0x74, 0x49, 0x70, 0x88, 0x01, 0x01, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x73, + 0x72, 0x63, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x64, 0x73, 0x74, 0x5f, + 0x69, 0x70, 0x22, 0x6b, 0x0a, 0x1e, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x49, 0x70, 0x76, 0x36, + 0x50, 0x69, 0x6e, 0x67, 0x12, 0x49, 0x0a, 0x09, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x41, 0x63, + 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x50, 0x72, 0x6f, 0x74, + 0x6f, 0x63, 0x6f, 0x6c, 0x49, 0x70, 0x76, 0x36, 0x50, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x52, 0x09, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x73, 0x22, + 0x9b, 0x02, 0x0a, 0x26, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x49, 0x70, 0x76, 0x36, 0x50, 0x69, + 0x6e, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1e, 0x0a, 0x08, 0x73, 0x72, + 0x63, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x07, + 0x73, 0x72, 0x63, 0x4e, 0x61, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, 0x1a, 0x0a, 0x06, 0x64, 0x73, + 0x74, 0x5f, 0x69, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, 0x52, 0x05, 0x64, 0x73, + 0x74, 0x49, 0x70, 0x88, 0x01, 0x01, 0x12, 0x54, 0x0a, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x37, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x41, 0x63, 0x74, + 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x50, 0x72, 0x6f, 0x74, 0x6f, + 0x63, 0x6f, 0x6c, 0x49, 0x70, 0x76, 0x36, 0x50, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x2e, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x48, + 0x02, 0x52, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x88, 0x01, 0x01, 0x1a, 0x3c, 0x0a, 0x06, + 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, 0x32, 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0f, + 0x0a, 0x0b, 0x75, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x10, 0x00, 0x12, + 0x0d, 0x0a, 0x09, 0x73, 0x75, 0x63, 0x63, 0x65, 0x65, 0x64, 0x65, 0x64, 0x10, 0x01, 0x12, 0x0a, + 0x0a, 0x06, 0x66, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x10, 0x02, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x73, + 0x72, 0x63, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x64, 0x73, 0x74, 0x5f, + 0x69, 0x70, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, 0xe6, 0x02, + 0x0a, 0x11, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, + 0x42, 0x67, 0x70, 0x12, 0x3f, 0x0a, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x0e, 0x32, 0x22, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, + 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x42, 0x67, 0x70, 0x2e, 0x43, 0x68, 0x6f, 0x69, + 0x63, 0x65, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x48, 0x00, 0x52, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, + 0x65, 0x88, 0x01, 0x01, 0x12, 0x46, 0x0a, 0x0c, 0x6e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x6f, 0x74, 0x67, + 0x2e, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x42, + 0x67, 0x70, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0c, + 0x6e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x69, 0x0a, 0x19, + 0x69, 0x6e, 0x69, 0x74, 0x69, 0x61, 0x74, 0x65, 0x5f, 0x67, 0x72, 0x61, 0x63, 0x65, 0x66, 0x75, + 0x6c, 0x5f, 0x72, 0x65, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x2d, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x72, 0x6f, 0x74, + 0x6f, 0x63, 0x6f, 0x6c, 0x42, 0x67, 0x70, 0x49, 0x6e, 0x69, 0x74, 0x69, 0x61, 0x74, 0x65, 0x47, + 0x72, 0x61, 0x63, 0x65, 0x66, 0x75, 0x6c, 0x52, 0x65, 0x73, 0x74, 0x61, 0x72, 0x74, 0x52, 0x17, + 0x69, 0x6e, 0x69, 0x74, 0x69, 0x61, 0x74, 0x65, 0x47, 0x72, 0x61, 0x63, 0x65, 0x66, 0x75, 0x6c, + 0x52, 0x65, 0x73, 0x74, 0x61, 0x72, 0x74, 0x1a, 0x52, 0x0a, 0x06, 0x43, 0x68, 0x6f, 0x69, 0x63, + 0x65, 0x22, 0x48, 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x0a, 0x0b, 0x75, 0x6e, 0x73, + 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x10, 0x00, 0x12, 0x10, 0x0a, 0x0c, 0x6e, 0x6f, + 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x10, 0x01, 0x12, 0x1d, 0x0a, 0x19, + 0x69, 0x6e, 0x69, 0x74, 0x69, 0x61, 0x74, 0x65, 0x5f, 0x67, 0x72, 0x61, 0x63, 0x65, 0x66, 0x75, + 0x6c, 0x5f, 0x72, 0x65, 0x73, 0x74, 0x61, 0x72, 0x74, 0x10, 0x02, 0x42, 0x09, 0x0a, 0x07, 0x5f, + 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x22, 0xd8, 0x06, 0x0a, 0x1d, 0x41, 0x63, 0x74, 0x69, 0x6f, + 0x6e, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x42, 0x67, 0x70, 0x4e, 0x6f, 0x74, 0x69, + 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x6e, 0x61, 0x6d, 0x65, + 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x05, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x12, 0x4b, + 0x0a, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2e, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x42, 0x67, 0x70, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x52, 0x0c, 0x6e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x12, 0x69, 0x0a, 0x19, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x61, 0x74, 0x65, 0x5f, 0x67, 0x72, 0x61, - 0x63, 0x65, 0x66, 0x75, 0x6c, 0x5f, 0x72, 0x65, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, - 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x42, 0x67, 0x70, 0x49, 0x6e, 0x69, 0x74, 0x69, - 0x61, 0x74, 0x65, 0x47, 0x72, 0x61, 0x63, 0x65, 0x66, 0x75, 0x6c, 0x52, 0x65, 0x73, 0x74, 0x61, - 0x72, 0x74, 0x52, 0x17, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x61, 0x74, 0x65, 0x47, 0x72, 0x61, 0x63, - 0x65, 0x66, 0x75, 0x6c, 0x52, 0x65, 0x73, 0x74, 0x61, 0x72, 0x74, 0x1a, 0x52, 0x0a, 0x06, 0x43, - 0x68, 0x6f, 0x69, 0x63, 0x65, 0x22, 0x48, 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x0a, - 0x0b, 0x75, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x10, 0x00, 0x12, 0x10, - 0x0a, 0x0c, 0x6e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x10, 0x01, - 0x12, 0x1d, 0x0a, 0x19, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x61, 0x74, 0x65, 0x5f, 0x67, 0x72, 0x61, - 0x63, 0x65, 0x66, 0x75, 0x6c, 0x5f, 0x72, 0x65, 0x73, 0x74, 0x61, 0x72, 0x74, 0x10, 0x02, 0x42, - 0x09, 0x0a, 0x07, 0x5f, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x22, 0xd8, 0x06, 0x0a, 0x1d, 0x41, - 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x42, 0x67, 0x70, - 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x14, 0x0a, 0x05, - 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x05, 0x6e, 0x61, 0x6d, - 0x65, 0x73, 0x12, 0x4b, 0x0a, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x0e, 0x32, 0x2e, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x50, - 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x42, 0x67, 0x70, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, - 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x2e, 0x45, 0x6e, - 0x75, 0x6d, 0x48, 0x00, 0x52, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x88, 0x01, 0x01, 0x12, - 0x2e, 0x0a, 0x05, 0x63, 0x65, 0x61, 0x73, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, - 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x42, 0x67, 0x70, 0x43, 0x65, - 0x61, 0x73, 0x65, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x52, 0x05, 0x63, 0x65, 0x61, 0x73, 0x65, 0x12, - 0x52, 0x0a, 0x14, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x5f, 0x68, 0x65, 0x61, 0x64, 0x65, - 0x72, 0x5f, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, - 0x6f, 0x74, 0x67, 0x2e, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x42, 0x67, 0x70, 0x4d, 0x65, 0x73, - 0x73, 0x61, 0x67, 0x65, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x52, - 0x12, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x45, 0x72, - 0x72, 0x6f, 0x72, 0x12, 0x4c, 0x0a, 0x12, 0x6f, 0x70, 0x65, 0x6e, 0x5f, 0x6d, 0x65, 0x73, 0x73, - 0x61, 0x67, 0x65, 0x5f, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x1e, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x42, 0x67, 0x70, 0x4f, - 0x70, 0x65, 0x6e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x52, - 0x10, 0x6f, 0x70, 0x65, 0x6e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x45, 0x72, 0x72, 0x6f, - 0x72, 0x12, 0x52, 0x0a, 0x14, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, - 0x61, 0x67, 0x65, 0x5f, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x20, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x42, 0x67, 0x70, 0x55, + 0x6f, 0x6e, 0x2e, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x48, 0x00, + 0x52, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x88, 0x01, 0x01, 0x12, 0x2e, 0x0a, 0x05, 0x63, + 0x65, 0x61, 0x73, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x6f, 0x74, 0x67, + 0x2e, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x42, 0x67, 0x70, 0x43, 0x65, 0x61, 0x73, 0x65, 0x45, + 0x72, 0x72, 0x6f, 0x72, 0x52, 0x05, 0x63, 0x65, 0x61, 0x73, 0x65, 0x12, 0x52, 0x0a, 0x14, 0x6d, + 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x5f, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x5f, 0x65, 0x72, + 0x72, 0x6f, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x6f, 0x74, 0x67, 0x2e, + 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x42, 0x67, 0x70, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, + 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x52, 0x12, 0x6d, 0x65, 0x73, + 0x73, 0x61, 0x67, 0x65, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x12, + 0x4c, 0x0a, 0x12, 0x6f, 0x70, 0x65, 0x6e, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x5f, + 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x6f, 0x74, + 0x67, 0x2e, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x42, 0x67, 0x70, 0x4f, 0x70, 0x65, 0x6e, 0x4d, + 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x52, 0x10, 0x6f, 0x70, 0x65, + 0x6e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x12, 0x52, 0x0a, + 0x14, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x5f, + 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x6f, 0x74, + 0x67, 0x2e, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x42, 0x67, 0x70, 0x55, 0x70, 0x64, 0x61, 0x74, + 0x65, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x52, 0x12, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x45, 0x72, 0x72, 0x6f, - 0x72, 0x52, 0x12, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, - 0x45, 0x72, 0x72, 0x6f, 0x72, 0x12, 0x4c, 0x0a, 0x12, 0x68, 0x6f, 0x6c, 0x64, 0x5f, 0x74, 0x69, - 0x6d, 0x65, 0x72, 0x5f, 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x1e, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x42, 0x67, - 0x70, 0x48, 0x6f, 0x6c, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x72, 0x45, 0x78, 0x70, 0x69, 0x72, 0x65, - 0x64, 0x52, 0x10, 0x68, 0x6f, 0x6c, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x72, 0x45, 0x78, 0x70, 0x69, - 0x72, 0x65, 0x64, 0x12, 0x62, 0x0a, 0x1a, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x65, 0x5f, 0x73, 0x74, - 0x61, 0x74, 0x65, 0x5f, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x5f, 0x65, 0x72, 0x72, 0x6f, - 0x72, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x44, 0x65, - 0x76, 0x69, 0x63, 0x65, 0x42, 0x67, 0x70, 0x46, 0x69, 0x6e, 0x69, 0x74, 0x65, 0x53, 0x74, 0x61, - 0x74, 0x65, 0x4d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x52, 0x17, - 0x66, 0x69, 0x6e, 0x69, 0x74, 0x65, 0x53, 0x74, 0x61, 0x74, 0x65, 0x4d, 0x61, 0x63, 0x68, 0x69, - 0x6e, 0x65, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x12, 0x31, 0x0a, 0x06, 0x63, 0x75, 0x73, 0x74, 0x6f, - 0x6d, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x44, 0x65, - 0x76, 0x69, 0x63, 0x65, 0x42, 0x67, 0x70, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x45, 0x72, 0x72, - 0x6f, 0x72, 0x52, 0x06, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x1a, 0xbd, 0x01, 0x0a, 0x06, 0x43, - 0x68, 0x6f, 0x69, 0x63, 0x65, 0x22, 0xb2, 0x01, 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0f, - 0x0a, 0x0b, 0x75, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x10, 0x00, 0x12, - 0x09, 0x0a, 0x05, 0x63, 0x65, 0x61, 0x73, 0x65, 0x10, 0x01, 0x12, 0x18, 0x0a, 0x14, 0x6d, 0x65, - 0x73, 0x73, 0x61, 0x67, 0x65, 0x5f, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x5f, 0x65, 0x72, 0x72, - 0x6f, 0x72, 0x10, 0x02, 0x12, 0x16, 0x0a, 0x12, 0x6f, 0x70, 0x65, 0x6e, 0x5f, 0x6d, 0x65, 0x73, - 0x73, 0x61, 0x67, 0x65, 0x5f, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x10, 0x03, 0x12, 0x18, 0x0a, 0x14, - 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x5f, 0x65, - 0x72, 0x72, 0x6f, 0x72, 0x10, 0x04, 0x12, 0x16, 0x0a, 0x12, 0x68, 0x6f, 0x6c, 0x64, 0x5f, 0x74, - 0x69, 0x6d, 0x65, 0x72, 0x5f, 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, 0x64, 0x10, 0x05, 0x12, 0x1e, - 0x0a, 0x1a, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x65, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x5f, 0x6d, - 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x5f, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x10, 0x06, 0x12, 0x0a, - 0x0a, 0x06, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x10, 0x07, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x63, - 0x68, 0x6f, 0x69, 0x63, 0x65, 0x22, 0x85, 0x01, 0x0a, 0x28, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, - 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x42, 0x67, 0x70, 0x49, 0x6e, 0x69, 0x74, 0x69, - 0x61, 0x74, 0x65, 0x47, 0x72, 0x61, 0x63, 0x65, 0x66, 0x75, 0x6c, 0x52, 0x65, 0x73, 0x74, 0x61, - 0x72, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x65, 0x65, 0x72, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x73, - 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x09, 0x70, 0x65, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, - 0x73, 0x12, 0x28, 0x0a, 0x0d, 0x72, 0x65, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x64, 0x65, 0x6c, - 0x61, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x00, 0x52, 0x0c, 0x72, 0x65, 0x73, 0x74, - 0x61, 0x72, 0x74, 0x44, 0x65, 0x6c, 0x61, 0x79, 0x88, 0x01, 0x01, 0x42, 0x10, 0x0a, 0x0e, 0x5f, - 0x72, 0x65, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x64, 0x65, 0x6c, 0x61, 0x79, 0x22, 0xef, 0x04, - 0x0a, 0x0e, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x12, 0x3c, 0x0a, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, - 0x32, 0x1f, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x2e, 0x45, 0x6e, 0x75, - 0x6d, 0x48, 0x00, 0x52, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x88, 0x01, 0x01, 0x12, 0x2b, - 0x0a, 0x04, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x6f, - 0x74, 0x67, 0x2e, 0x50, 0x6f, 0x72, 0x74, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x52, 0x04, 0x70, 0x6f, 0x72, 0x74, 0x12, 0x2b, 0x0a, 0x04, 0x66, - 0x6c, 0x6f, 0x77, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x6f, 0x74, 0x67, 0x2e, - 0x46, 0x6c, 0x6f, 0x77, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x52, 0x04, 0x66, 0x6c, 0x6f, 0x77, 0x12, 0x2e, 0x0a, 0x05, 0x62, 0x67, 0x70, 0x76, - 0x34, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x42, 0x67, - 0x70, 0x76, 0x34, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x52, 0x05, 0x62, 0x67, 0x70, 0x76, 0x34, 0x12, 0x2e, 0x0a, 0x05, 0x62, 0x67, 0x70, 0x76, - 0x36, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x42, 0x67, - 0x70, 0x76, 0x36, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x52, 0x05, 0x62, 0x67, 0x70, 0x76, 0x36, 0x12, 0x2b, 0x0a, 0x04, 0x69, 0x73, 0x69, 0x73, - 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x49, 0x73, 0x69, - 0x73, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x52, - 0x04, 0x69, 0x73, 0x69, 0x73, 0x12, 0x28, 0x0a, 0x03, 0x6c, 0x61, 0x67, 0x18, 0x07, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x4c, 0x61, 0x67, 0x4d, 0x65, 0x74, 0x72, - 0x69, 0x63, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x52, 0x03, 0x6c, 0x61, 0x67, 0x12, - 0x2b, 0x0a, 0x04, 0x6c, 0x61, 0x63, 0x70, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, - 0x6f, 0x74, 0x67, 0x2e, 0x4c, 0x61, 0x63, 0x70, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x52, 0x04, 0x6c, 0x61, 0x63, 0x70, 0x12, 0x2b, 0x0a, 0x04, - 0x6c, 0x6c, 0x64, 0x70, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x6f, 0x74, 0x67, - 0x2e, 0x4c, 0x6c, 0x64, 0x70, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x52, 0x04, 0x6c, 0x6c, 0x64, 0x70, 0x12, 0x2b, 0x0a, 0x04, 0x72, 0x73, 0x76, - 0x70, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x52, 0x73, - 0x76, 0x70, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x52, 0x04, 0x72, 0x73, 0x76, 0x70, 0x1a, 0x7c, 0x0a, 0x06, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, - 0x22, 0x72, 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x0a, 0x0b, 0x75, 0x6e, 0x73, 0x70, - 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x10, 0x00, 0x12, 0x08, 0x0a, 0x04, 0x70, 0x6f, 0x72, - 0x74, 0x10, 0x01, 0x12, 0x08, 0x0a, 0x04, 0x66, 0x6c, 0x6f, 0x77, 0x10, 0x02, 0x12, 0x09, 0x0a, - 0x05, 0x62, 0x67, 0x70, 0x76, 0x34, 0x10, 0x03, 0x12, 0x09, 0x0a, 0x05, 0x62, 0x67, 0x70, 0x76, - 0x36, 0x10, 0x04, 0x12, 0x08, 0x0a, 0x04, 0x69, 0x73, 0x69, 0x73, 0x10, 0x05, 0x12, 0x07, 0x0a, - 0x03, 0x6c, 0x61, 0x67, 0x10, 0x06, 0x12, 0x08, 0x0a, 0x04, 0x6c, 0x61, 0x63, 0x70, 0x10, 0x07, - 0x12, 0x08, 0x0a, 0x04, 0x6c, 0x6c, 0x64, 0x70, 0x10, 0x08, 0x12, 0x08, 0x0a, 0x04, 0x72, 0x73, - 0x76, 0x70, 0x10, 0x09, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x22, - 0xfa, 0x05, 0x0a, 0x0f, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x12, 0x3d, 0x0a, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x0e, 0x32, 0x20, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, - 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, - 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x48, 0x00, 0x52, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x88, - 0x01, 0x01, 0x12, 0x32, 0x0a, 0x0c, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x6d, 0x65, 0x74, 0x72, 0x69, - 0x63, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, - 0x6f, 0x72, 0x74, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x52, 0x0b, 0x70, 0x6f, 0x72, 0x74, 0x4d, - 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x12, 0x32, 0x0a, 0x0c, 0x66, 0x6c, 0x6f, 0x77, 0x5f, 0x6d, - 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x6f, - 0x74, 0x67, 0x2e, 0x46, 0x6c, 0x6f, 0x77, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x52, 0x0b, 0x66, - 0x6c, 0x6f, 0x77, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x12, 0x35, 0x0a, 0x0d, 0x62, 0x67, - 0x70, 0x76, 0x34, 0x5f, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, - 0x0b, 0x32, 0x10, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x42, 0x67, 0x70, 0x76, 0x34, 0x4d, 0x65, 0x74, - 0x72, 0x69, 0x63, 0x52, 0x0c, 0x62, 0x67, 0x70, 0x76, 0x34, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, - 0x73, 0x12, 0x35, 0x0a, 0x0d, 0x62, 0x67, 0x70, 0x76, 0x36, 0x5f, 0x6d, 0x65, 0x74, 0x72, 0x69, - 0x63, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x42, - 0x67, 0x70, 0x76, 0x36, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x52, 0x0c, 0x62, 0x67, 0x70, 0x76, - 0x36, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x12, 0x32, 0x0a, 0x0c, 0x69, 0x73, 0x69, 0x73, - 0x5f, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0f, - 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x49, 0x73, 0x69, 0x73, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x52, - 0x0b, 0x69, 0x73, 0x69, 0x73, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x12, 0x2f, 0x0a, 0x0b, - 0x6c, 0x61, 0x67, 0x5f, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, - 0x0b, 0x32, 0x0e, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x4c, 0x61, 0x67, 0x4d, 0x65, 0x74, 0x72, 0x69, - 0x63, 0x52, 0x0a, 0x6c, 0x61, 0x67, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x12, 0x32, 0x0a, - 0x0c, 0x6c, 0x61, 0x63, 0x70, 0x5f, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x18, 0x08, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x4c, 0x61, 0x63, 0x70, 0x4d, 0x65, - 0x74, 0x72, 0x69, 0x63, 0x52, 0x0b, 0x6c, 0x61, 0x63, 0x70, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, - 0x73, 0x12, 0x32, 0x0a, 0x0c, 0x6c, 0x6c, 0x64, 0x70, 0x5f, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, - 0x73, 0x18, 0x09, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x4c, 0x6c, - 0x64, 0x70, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x52, 0x0b, 0x6c, 0x6c, 0x64, 0x70, 0x4d, 0x65, - 0x74, 0x72, 0x69, 0x63, 0x73, 0x12, 0x32, 0x0a, 0x0c, 0x72, 0x73, 0x76, 0x70, 0x5f, 0x6d, 0x65, - 0x74, 0x72, 0x69, 0x63, 0x73, 0x18, 0x0a, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x6f, 0x74, - 0x67, 0x2e, 0x52, 0x73, 0x76, 0x70, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x52, 0x0b, 0x72, 0x73, - 0x76, 0x70, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x1a, 0xc5, 0x01, 0x0a, 0x06, 0x43, 0x68, - 0x6f, 0x69, 0x63, 0x65, 0x22, 0xba, 0x01, 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x0a, - 0x0b, 0x75, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x10, 0x00, 0x12, 0x10, - 0x0a, 0x0c, 0x66, 0x6c, 0x6f, 0x77, 0x5f, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x10, 0x01, - 0x12, 0x10, 0x0a, 0x0c, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, - 0x10, 0x02, 0x12, 0x11, 0x0a, 0x0d, 0x62, 0x67, 0x70, 0x76, 0x34, 0x5f, 0x6d, 0x65, 0x74, 0x72, - 0x69, 0x63, 0x73, 0x10, 0x03, 0x12, 0x11, 0x0a, 0x0d, 0x62, 0x67, 0x70, 0x76, 0x36, 0x5f, 0x6d, - 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x10, 0x04, 0x12, 0x10, 0x0a, 0x0c, 0x69, 0x73, 0x69, 0x73, - 0x5f, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x10, 0x05, 0x12, 0x0f, 0x0a, 0x0b, 0x6c, 0x61, - 0x67, 0x5f, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x10, 0x06, 0x12, 0x10, 0x0a, 0x0c, 0x6c, - 0x61, 0x63, 0x70, 0x5f, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x10, 0x07, 0x12, 0x10, 0x0a, - 0x0c, 0x6c, 0x6c, 0x64, 0x70, 0x5f, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x10, 0x08, 0x12, - 0x10, 0x0a, 0x0c, 0x72, 0x73, 0x76, 0x70, 0x5f, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x10, - 0x09, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x22, 0xe5, 0x02, 0x0a, - 0x12, 0x50, 0x6f, 0x72, 0x74, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x6e, 0x61, 0x6d, 0x65, - 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x09, 0x70, 0x6f, 0x72, 0x74, 0x4e, 0x61, 0x6d, - 0x65, 0x73, 0x12, 0x4b, 0x0a, 0x0c, 0x63, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x5f, 0x6e, 0x61, 0x6d, - 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x28, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, + 0x72, 0x12, 0x4c, 0x0a, 0x12, 0x68, 0x6f, 0x6c, 0x64, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x72, 0x5f, + 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, + 0x6f, 0x74, 0x67, 0x2e, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x42, 0x67, 0x70, 0x48, 0x6f, 0x6c, + 0x64, 0x54, 0x69, 0x6d, 0x65, 0x72, 0x45, 0x78, 0x70, 0x69, 0x72, 0x65, 0x64, 0x52, 0x10, 0x68, + 0x6f, 0x6c, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x72, 0x45, 0x78, 0x70, 0x69, 0x72, 0x65, 0x64, 0x12, + 0x62, 0x0a, 0x1a, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x65, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x5f, + 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x5f, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x08, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, + 0x42, 0x67, 0x70, 0x46, 0x69, 0x6e, 0x69, 0x74, 0x65, 0x53, 0x74, 0x61, 0x74, 0x65, 0x4d, 0x61, + 0x63, 0x68, 0x69, 0x6e, 0x65, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x52, 0x17, 0x66, 0x69, 0x6e, 0x69, + 0x74, 0x65, 0x53, 0x74, 0x61, 0x74, 0x65, 0x4d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x45, 0x72, + 0x72, 0x6f, 0x72, 0x12, 0x31, 0x0a, 0x06, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x18, 0x09, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, + 0x42, 0x67, 0x70, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x52, 0x06, + 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x1a, 0xbd, 0x01, 0x0a, 0x06, 0x43, 0x68, 0x6f, 0x69, 0x63, + 0x65, 0x22, 0xb2, 0x01, 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x0a, 0x0b, 0x75, 0x6e, + 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, 0x63, + 0x65, 0x61, 0x73, 0x65, 0x10, 0x01, 0x12, 0x18, 0x0a, 0x14, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, + 0x65, 0x5f, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x5f, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x10, 0x02, + 0x12, 0x16, 0x0a, 0x12, 0x6f, 0x70, 0x65, 0x6e, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, + 0x5f, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x10, 0x03, 0x12, 0x18, 0x0a, 0x14, 0x75, 0x70, 0x64, 0x61, + 0x74, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x5f, 0x65, 0x72, 0x72, 0x6f, 0x72, + 0x10, 0x04, 0x12, 0x16, 0x0a, 0x12, 0x68, 0x6f, 0x6c, 0x64, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x72, + 0x5f, 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, 0x64, 0x10, 0x05, 0x12, 0x1e, 0x0a, 0x1a, 0x66, 0x69, + 0x6e, 0x69, 0x74, 0x65, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x5f, 0x6d, 0x61, 0x63, 0x68, 0x69, + 0x6e, 0x65, 0x5f, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x10, 0x06, 0x12, 0x0a, 0x0a, 0x06, 0x63, 0x75, + 0x73, 0x74, 0x6f, 0x6d, 0x10, 0x07, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x63, 0x68, 0x6f, 0x69, 0x63, + 0x65, 0x22, 0x85, 0x01, 0x0a, 0x28, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x72, 0x6f, 0x74, + 0x6f, 0x63, 0x6f, 0x6c, 0x42, 0x67, 0x70, 0x49, 0x6e, 0x69, 0x74, 0x69, 0x61, 0x74, 0x65, 0x47, + 0x72, 0x61, 0x63, 0x65, 0x66, 0x75, 0x6c, 0x52, 0x65, 0x73, 0x74, 0x61, 0x72, 0x74, 0x12, 0x1d, + 0x0a, 0x0a, 0x70, 0x65, 0x65, 0x72, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, + 0x28, 0x09, 0x52, 0x09, 0x70, 0x65, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x12, 0x28, 0x0a, + 0x0d, 0x72, 0x65, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x64, 0x65, 0x6c, 0x61, 0x79, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x0d, 0x48, 0x00, 0x52, 0x0c, 0x72, 0x65, 0x73, 0x74, 0x61, 0x72, 0x74, 0x44, + 0x65, 0x6c, 0x61, 0x79, 0x88, 0x01, 0x01, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x72, 0x65, 0x73, 0x74, + 0x61, 0x72, 0x74, 0x5f, 0x64, 0x65, 0x6c, 0x61, 0x79, 0x22, 0xef, 0x04, 0x0a, 0x0e, 0x4d, 0x65, + 0x74, 0x72, 0x69, 0x63, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x3c, 0x0a, 0x06, + 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1f, 0x2e, 0x6f, + 0x74, 0x67, 0x2e, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x2e, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x48, 0x00, 0x52, + 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x88, 0x01, 0x01, 0x12, 0x2b, 0x0a, 0x04, 0x70, 0x6f, + 0x72, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x6f, 0x72, 0x74, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x2e, 0x43, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x2e, 0x45, 0x6e, - 0x75, 0x6d, 0x52, 0x0b, 0x63, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x1a, - 0xe2, 0x01, 0x0a, 0x0b, 0x43, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x22, - 0xd2, 0x01, 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x0a, 0x0b, 0x75, 0x6e, 0x73, 0x70, - 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x10, 0x00, 0x12, 0x0c, 0x0a, 0x08, 0x74, 0x72, 0x61, - 0x6e, 0x73, 0x6d, 0x69, 0x74, 0x10, 0x01, 0x12, 0x0c, 0x0a, 0x08, 0x6c, 0x6f, 0x63, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x10, 0x02, 0x12, 0x08, 0x0a, 0x04, 0x6c, 0x69, 0x6e, 0x6b, 0x10, 0x03, 0x12, - 0x0b, 0x0a, 0x07, 0x63, 0x61, 0x70, 0x74, 0x75, 0x72, 0x65, 0x10, 0x04, 0x12, 0x0d, 0x0a, 0x09, - 0x66, 0x72, 0x61, 0x6d, 0x65, 0x73, 0x5f, 0x74, 0x78, 0x10, 0x05, 0x12, 0x0d, 0x0a, 0x09, 0x66, - 0x72, 0x61, 0x6d, 0x65, 0x73, 0x5f, 0x72, 0x78, 0x10, 0x06, 0x12, 0x0c, 0x0a, 0x08, 0x62, 0x79, - 0x74, 0x65, 0x73, 0x5f, 0x74, 0x78, 0x10, 0x07, 0x12, 0x0c, 0x0a, 0x08, 0x62, 0x79, 0x74, 0x65, - 0x73, 0x5f, 0x72, 0x78, 0x10, 0x08, 0x12, 0x12, 0x0a, 0x0e, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x73, - 0x5f, 0x74, 0x78, 0x5f, 0x72, 0x61, 0x74, 0x65, 0x10, 0x09, 0x12, 0x12, 0x0a, 0x0e, 0x66, 0x72, - 0x61, 0x6d, 0x65, 0x73, 0x5f, 0x72, 0x78, 0x5f, 0x72, 0x61, 0x74, 0x65, 0x10, 0x0a, 0x12, 0x11, - 0x0a, 0x0d, 0x62, 0x79, 0x74, 0x65, 0x73, 0x5f, 0x74, 0x78, 0x5f, 0x72, 0x61, 0x74, 0x65, 0x10, - 0x0b, 0x12, 0x11, 0x0a, 0x0d, 0x62, 0x79, 0x74, 0x65, 0x73, 0x5f, 0x72, 0x78, 0x5f, 0x72, 0x61, - 0x74, 0x65, 0x10, 0x0c, 0x22, 0x8b, 0x07, 0x0a, 0x0a, 0x50, 0x6f, 0x72, 0x74, 0x4d, 0x65, 0x74, - 0x72, 0x69, 0x63, 0x12, 0x17, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x48, 0x00, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, 0x1f, 0x0a, 0x08, - 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, - 0x52, 0x08, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x12, 0x32, 0x0a, - 0x04, 0x6c, 0x69, 0x6e, 0x6b, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x19, 0x2e, 0x6f, 0x74, - 0x67, 0x2e, 0x50, 0x6f, 0x72, 0x74, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x2e, 0x4c, 0x69, 0x6e, - 0x6b, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x48, 0x02, 0x52, 0x04, 0x6c, 0x69, 0x6e, 0x6b, 0x88, 0x01, - 0x01, 0x12, 0x3b, 0x0a, 0x07, 0x63, 0x61, 0x70, 0x74, 0x75, 0x72, 0x65, 0x18, 0x04, 0x20, 0x01, - 0x28, 0x0e, 0x32, 0x1c, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x6f, 0x72, 0x74, 0x4d, 0x65, 0x74, - 0x72, 0x69, 0x63, 0x2e, 0x43, 0x61, 0x70, 0x74, 0x75, 0x72, 0x65, 0x2e, 0x45, 0x6e, 0x75, 0x6d, - 0x48, 0x03, 0x52, 0x07, 0x63, 0x61, 0x70, 0x74, 0x75, 0x72, 0x65, 0x88, 0x01, 0x01, 0x12, 0x20, - 0x0a, 0x09, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x73, 0x5f, 0x74, 0x78, 0x18, 0x05, 0x20, 0x01, 0x28, - 0x04, 0x48, 0x04, 0x52, 0x08, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x73, 0x54, 0x78, 0x88, 0x01, 0x01, - 0x12, 0x20, 0x0a, 0x09, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x73, 0x5f, 0x72, 0x78, 0x18, 0x06, 0x20, - 0x01, 0x28, 0x04, 0x48, 0x05, 0x52, 0x08, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x73, 0x52, 0x78, 0x88, - 0x01, 0x01, 0x12, 0x1e, 0x0a, 0x08, 0x62, 0x79, 0x74, 0x65, 0x73, 0x5f, 0x74, 0x78, 0x18, 0x07, - 0x20, 0x01, 0x28, 0x04, 0x48, 0x06, 0x52, 0x07, 0x62, 0x79, 0x74, 0x65, 0x73, 0x54, 0x78, 0x88, - 0x01, 0x01, 0x12, 0x1e, 0x0a, 0x08, 0x62, 0x79, 0x74, 0x65, 0x73, 0x5f, 0x72, 0x78, 0x18, 0x08, - 0x20, 0x01, 0x28, 0x04, 0x48, 0x07, 0x52, 0x07, 0x62, 0x79, 0x74, 0x65, 0x73, 0x52, 0x78, 0x88, - 0x01, 0x01, 0x12, 0x29, 0x0a, 0x0e, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x73, 0x5f, 0x74, 0x78, 0x5f, - 0x72, 0x61, 0x74, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x02, 0x48, 0x08, 0x52, 0x0c, 0x66, 0x72, - 0x61, 0x6d, 0x65, 0x73, 0x54, 0x78, 0x52, 0x61, 0x74, 0x65, 0x88, 0x01, 0x01, 0x12, 0x29, 0x0a, - 0x0e, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x73, 0x5f, 0x72, 0x78, 0x5f, 0x72, 0x61, 0x74, 0x65, 0x18, - 0x0a, 0x20, 0x01, 0x28, 0x02, 0x48, 0x09, 0x52, 0x0c, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x73, 0x52, - 0x78, 0x52, 0x61, 0x74, 0x65, 0x88, 0x01, 0x01, 0x12, 0x27, 0x0a, 0x0d, 0x62, 0x79, 0x74, 0x65, - 0x73, 0x5f, 0x74, 0x78, 0x5f, 0x72, 0x61, 0x74, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x02, 0x48, - 0x0a, 0x52, 0x0b, 0x62, 0x79, 0x74, 0x65, 0x73, 0x54, 0x78, 0x52, 0x61, 0x74, 0x65, 0x88, 0x01, - 0x01, 0x12, 0x27, 0x0a, 0x0d, 0x62, 0x79, 0x74, 0x65, 0x73, 0x5f, 0x72, 0x78, 0x5f, 0x72, 0x61, - 0x74, 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x02, 0x48, 0x0b, 0x52, 0x0b, 0x62, 0x79, 0x74, 0x65, - 0x73, 0x52, 0x78, 0x52, 0x61, 0x74, 0x65, 0x88, 0x01, 0x01, 0x12, 0x3e, 0x0a, 0x08, 0x74, 0x72, - 0x61, 0x6e, 0x73, 0x6d, 0x69, 0x74, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1d, 0x2e, 0x6f, - 0x74, 0x67, 0x2e, 0x50, 0x6f, 0x72, 0x74, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x2e, 0x54, 0x72, - 0x61, 0x6e, 0x73, 0x6d, 0x69, 0x74, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x48, 0x0c, 0x52, 0x08, 0x74, - 0x72, 0x61, 0x6e, 0x73, 0x6d, 0x69, 0x74, 0x88, 0x01, 0x01, 0x1a, 0x31, 0x0a, 0x04, 0x4c, 0x69, - 0x6e, 0x6b, 0x22, 0x29, 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x0a, 0x0b, 0x75, 0x6e, - 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x10, 0x00, 0x12, 0x06, 0x0a, 0x02, 0x75, - 0x70, 0x10, 0x01, 0x12, 0x08, 0x0a, 0x04, 0x64, 0x6f, 0x77, 0x6e, 0x10, 0x02, 0x1a, 0x3c, 0x0a, - 0x07, 0x43, 0x61, 0x70, 0x74, 0x75, 0x72, 0x65, 0x22, 0x31, 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, - 0x12, 0x0f, 0x0a, 0x0b, 0x75, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x10, - 0x00, 0x12, 0x0b, 0x0a, 0x07, 0x73, 0x74, 0x61, 0x72, 0x74, 0x65, 0x64, 0x10, 0x01, 0x12, 0x0b, - 0x0a, 0x07, 0x73, 0x74, 0x6f, 0x70, 0x70, 0x65, 0x64, 0x10, 0x02, 0x1a, 0x3d, 0x0a, 0x08, 0x54, - 0x72, 0x61, 0x6e, 0x73, 0x6d, 0x69, 0x74, 0x22, 0x31, 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, - 0x0f, 0x0a, 0x0b, 0x75, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x10, 0x00, - 0x12, 0x0b, 0x0a, 0x07, 0x73, 0x74, 0x61, 0x72, 0x74, 0x65, 0x64, 0x10, 0x01, 0x12, 0x0b, 0x0a, - 0x07, 0x73, 0x74, 0x6f, 0x70, 0x70, 0x65, 0x64, 0x10, 0x02, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x6e, - 0x61, 0x6d, 0x65, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x6c, 0x69, 0x6e, 0x6b, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x63, 0x61, - 0x70, 0x74, 0x75, 0x72, 0x65, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x73, - 0x5f, 0x74, 0x78, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x73, 0x5f, 0x72, - 0x78, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x5f, 0x74, 0x78, 0x42, 0x0b, - 0x0a, 0x09, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x5f, 0x72, 0x78, 0x42, 0x11, 0x0a, 0x0f, 0x5f, - 0x66, 0x72, 0x61, 0x6d, 0x65, 0x73, 0x5f, 0x74, 0x78, 0x5f, 0x72, 0x61, 0x74, 0x65, 0x42, 0x11, - 0x0a, 0x0f, 0x5f, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x73, 0x5f, 0x72, 0x78, 0x5f, 0x72, 0x61, 0x74, - 0x65, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x5f, 0x74, 0x78, 0x5f, 0x72, - 0x61, 0x74, 0x65, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x5f, 0x72, 0x78, - 0x5f, 0x72, 0x61, 0x74, 0x65, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x6d, - 0x69, 0x74, 0x22, 0xdf, 0x02, 0x0a, 0x12, 0x46, 0x6c, 0x6f, 0x77, 0x4d, 0x65, 0x74, 0x72, 0x69, - 0x63, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x66, 0x6c, 0x6f, - 0x77, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x09, 0x66, - 0x6c, 0x6f, 0x77, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x12, 0x4b, 0x0a, 0x0c, 0x6d, 0x65, 0x74, 0x72, - 0x69, 0x63, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x28, - 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x46, 0x6c, 0x6f, 0x77, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x4e, 0x61, - 0x6d, 0x65, 0x73, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x52, 0x0b, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, - 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x12, 0x43, 0x0a, 0x0e, 0x74, 0x61, 0x67, 0x67, 0x65, 0x64, 0x5f, - 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, - 0x6f, 0x74, 0x67, 0x2e, 0x46, 0x6c, 0x6f, 0x77, 0x54, 0x61, 0x67, 0x67, 0x65, 0x64, 0x4d, 0x65, - 0x74, 0x72, 0x69, 0x63, 0x73, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x52, 0x0d, 0x74, 0x61, 0x67, - 0x67, 0x65, 0x64, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x1a, 0x97, 0x01, 0x0a, 0x0b, 0x4d, - 0x65, 0x74, 0x72, 0x69, 0x63, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x22, 0x87, 0x01, 0x0a, 0x04, 0x45, - 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x0a, 0x0b, 0x75, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, - 0x65, 0x64, 0x10, 0x00, 0x12, 0x0c, 0x0a, 0x08, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x6d, 0x69, 0x74, - 0x10, 0x01, 0x12, 0x0d, 0x0a, 0x09, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x73, 0x5f, 0x74, 0x78, 0x10, - 0x02, 0x12, 0x0d, 0x0a, 0x09, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x73, 0x5f, 0x72, 0x78, 0x10, 0x03, - 0x12, 0x0c, 0x0a, 0x08, 0x62, 0x79, 0x74, 0x65, 0x73, 0x5f, 0x74, 0x78, 0x10, 0x04, 0x12, 0x0c, - 0x0a, 0x08, 0x62, 0x79, 0x74, 0x65, 0x73, 0x5f, 0x72, 0x78, 0x10, 0x05, 0x12, 0x12, 0x0a, 0x0e, - 0x66, 0x72, 0x61, 0x6d, 0x65, 0x73, 0x5f, 0x74, 0x78, 0x5f, 0x72, 0x61, 0x74, 0x65, 0x10, 0x06, - 0x12, 0x12, 0x0a, 0x0e, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x73, 0x5f, 0x72, 0x78, 0x5f, 0x72, 0x61, - 0x74, 0x65, 0x10, 0x07, 0x22, 0xa8, 0x03, 0x0a, 0x17, 0x46, 0x6c, 0x6f, 0x77, 0x54, 0x61, 0x67, - 0x67, 0x65, 0x64, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, - 0x12, 0x1d, 0x0a, 0x07, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x08, 0x48, 0x00, 0x52, 0x07, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x88, 0x01, 0x01, 0x12, - 0x37, 0x0a, 0x15, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x5f, 0x65, 0x6d, 0x70, 0x74, 0x79, - 0x5f, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x48, 0x01, - 0x52, 0x13, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x4d, 0x65, - 0x74, 0x72, 0x69, 0x63, 0x73, 0x88, 0x01, 0x01, 0x12, 0x50, 0x0a, 0x0c, 0x6d, 0x65, 0x74, 0x72, - 0x69, 0x63, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x2d, - 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x46, 0x6c, 0x6f, 0x77, 0x54, 0x61, 0x67, 0x67, 0x65, 0x64, 0x4d, - 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x2e, 0x4d, 0x65, 0x74, - 0x72, 0x69, 0x63, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x52, 0x0b, 0x6d, - 0x65, 0x74, 0x72, 0x69, 0x63, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x12, 0x32, 0x0a, 0x07, 0x66, 0x69, - 0x6c, 0x74, 0x65, 0x72, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x6f, 0x74, - 0x67, 0x2e, 0x46, 0x6c, 0x6f, 0x77, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x46, - 0x69, 0x6c, 0x74, 0x65, 0x72, 0x52, 0x07, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, 0x1a, 0x88, - 0x01, 0x0a, 0x0b, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x22, 0x79, - 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x0a, 0x0b, 0x75, 0x6e, 0x73, 0x70, 0x65, 0x63, - 0x69, 0x66, 0x69, 0x65, 0x64, 0x10, 0x00, 0x12, 0x0d, 0x0a, 0x09, 0x66, 0x72, 0x61, 0x6d, 0x65, - 0x73, 0x5f, 0x74, 0x78, 0x10, 0x01, 0x12, 0x0d, 0x0a, 0x09, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x73, - 0x5f, 0x72, 0x78, 0x10, 0x02, 0x12, 0x0c, 0x0a, 0x08, 0x62, 0x79, 0x74, 0x65, 0x73, 0x5f, 0x74, - 0x78, 0x10, 0x03, 0x12, 0x0c, 0x0a, 0x08, 0x62, 0x79, 0x74, 0x65, 0x73, 0x5f, 0x72, 0x78, 0x10, - 0x04, 0x12, 0x12, 0x0a, 0x0e, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x73, 0x5f, 0x74, 0x78, 0x5f, 0x72, - 0x61, 0x74, 0x65, 0x10, 0x05, 0x12, 0x12, 0x0a, 0x0e, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x73, 0x5f, - 0x72, 0x78, 0x5f, 0x72, 0x61, 0x74, 0x65, 0x10, 0x06, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x69, 0x6e, - 0x63, 0x6c, 0x75, 0x64, 0x65, 0x42, 0x18, 0x0a, 0x16, 0x5f, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, - 0x65, 0x5f, 0x65, 0x6d, 0x70, 0x74, 0x79, 0x5f, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x22, - 0x4f, 0x0a, 0x13, 0x46, 0x6c, 0x6f, 0x77, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, - 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0x17, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, - 0x16, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, - 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x6e, 0x61, 0x6d, 0x65, - 0x22, 0x94, 0x06, 0x0a, 0x0a, 0x46, 0x6c, 0x6f, 0x77, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x12, + 0x74, 0x52, 0x04, 0x70, 0x6f, 0x72, 0x74, 0x12, 0x2b, 0x0a, 0x04, 0x66, 0x6c, 0x6f, 0x77, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x46, 0x6c, 0x6f, 0x77, + 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x52, 0x04, + 0x66, 0x6c, 0x6f, 0x77, 0x12, 0x2e, 0x0a, 0x05, 0x62, 0x67, 0x70, 0x76, 0x34, 0x18, 0x04, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x42, 0x67, 0x70, 0x76, 0x34, 0x4d, + 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x52, 0x05, 0x62, + 0x67, 0x70, 0x76, 0x34, 0x12, 0x2e, 0x0a, 0x05, 0x62, 0x67, 0x70, 0x76, 0x36, 0x18, 0x05, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x42, 0x67, 0x70, 0x76, 0x36, 0x4d, + 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x52, 0x05, 0x62, + 0x67, 0x70, 0x76, 0x36, 0x12, 0x2b, 0x0a, 0x04, 0x69, 0x73, 0x69, 0x73, 0x18, 0x06, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x49, 0x73, 0x69, 0x73, 0x4d, 0x65, 0x74, + 0x72, 0x69, 0x63, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x52, 0x04, 0x69, 0x73, 0x69, + 0x73, 0x12, 0x28, 0x0a, 0x03, 0x6c, 0x61, 0x67, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, + 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x4c, 0x61, 0x67, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x52, 0x03, 0x6c, 0x61, 0x67, 0x12, 0x2b, 0x0a, 0x04, 0x6c, + 0x61, 0x63, 0x70, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x6f, 0x74, 0x67, 0x2e, + 0x4c, 0x61, 0x63, 0x70, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x52, 0x04, 0x6c, 0x61, 0x63, 0x70, 0x12, 0x2b, 0x0a, 0x04, 0x6c, 0x6c, 0x64, 0x70, + 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x4c, 0x6c, 0x64, + 0x70, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x52, + 0x04, 0x6c, 0x6c, 0x64, 0x70, 0x12, 0x2b, 0x0a, 0x04, 0x72, 0x73, 0x76, 0x70, 0x18, 0x0a, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x52, 0x73, 0x76, 0x70, 0x4d, 0x65, + 0x74, 0x72, 0x69, 0x63, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x52, 0x04, 0x72, 0x73, + 0x76, 0x70, 0x1a, 0x7c, 0x0a, 0x06, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x22, 0x72, 0x0a, 0x04, + 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x0a, 0x0b, 0x75, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, + 0x69, 0x65, 0x64, 0x10, 0x00, 0x12, 0x08, 0x0a, 0x04, 0x70, 0x6f, 0x72, 0x74, 0x10, 0x01, 0x12, + 0x08, 0x0a, 0x04, 0x66, 0x6c, 0x6f, 0x77, 0x10, 0x02, 0x12, 0x09, 0x0a, 0x05, 0x62, 0x67, 0x70, + 0x76, 0x34, 0x10, 0x03, 0x12, 0x09, 0x0a, 0x05, 0x62, 0x67, 0x70, 0x76, 0x36, 0x10, 0x04, 0x12, + 0x08, 0x0a, 0x04, 0x69, 0x73, 0x69, 0x73, 0x10, 0x05, 0x12, 0x07, 0x0a, 0x03, 0x6c, 0x61, 0x67, + 0x10, 0x06, 0x12, 0x08, 0x0a, 0x04, 0x6c, 0x61, 0x63, 0x70, 0x10, 0x07, 0x12, 0x08, 0x0a, 0x04, + 0x6c, 0x6c, 0x64, 0x70, 0x10, 0x08, 0x12, 0x08, 0x0a, 0x04, 0x72, 0x73, 0x76, 0x70, 0x10, 0x09, + 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x22, 0xfa, 0x05, 0x0a, 0x0f, + 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, + 0x3d, 0x0a, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, + 0x20, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x2e, 0x45, 0x6e, 0x75, + 0x6d, 0x48, 0x00, 0x52, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x88, 0x01, 0x01, 0x12, 0x32, + 0x0a, 0x0c, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x18, 0x02, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x6f, 0x72, 0x74, 0x4d, + 0x65, 0x74, 0x72, 0x69, 0x63, 0x52, 0x0b, 0x70, 0x6f, 0x72, 0x74, 0x4d, 0x65, 0x74, 0x72, 0x69, + 0x63, 0x73, 0x12, 0x32, 0x0a, 0x0c, 0x66, 0x6c, 0x6f, 0x77, 0x5f, 0x6d, 0x65, 0x74, 0x72, 0x69, + 0x63, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x46, + 0x6c, 0x6f, 0x77, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x52, 0x0b, 0x66, 0x6c, 0x6f, 0x77, 0x4d, + 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x12, 0x35, 0x0a, 0x0d, 0x62, 0x67, 0x70, 0x76, 0x34, 0x5f, + 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x10, 0x2e, + 0x6f, 0x74, 0x67, 0x2e, 0x42, 0x67, 0x70, 0x76, 0x34, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x52, + 0x0c, 0x62, 0x67, 0x70, 0x76, 0x34, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x12, 0x35, 0x0a, + 0x0d, 0x62, 0x67, 0x70, 0x76, 0x36, 0x5f, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x18, 0x05, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x42, 0x67, 0x70, 0x76, 0x36, + 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x52, 0x0c, 0x62, 0x67, 0x70, 0x76, 0x36, 0x4d, 0x65, 0x74, + 0x72, 0x69, 0x63, 0x73, 0x12, 0x32, 0x0a, 0x0c, 0x69, 0x73, 0x69, 0x73, 0x5f, 0x6d, 0x65, 0x74, + 0x72, 0x69, 0x63, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x6f, 0x74, 0x67, + 0x2e, 0x49, 0x73, 0x69, 0x73, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x52, 0x0b, 0x69, 0x73, 0x69, + 0x73, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x12, 0x2f, 0x0a, 0x0b, 0x6c, 0x61, 0x67, 0x5f, + 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, + 0x6f, 0x74, 0x67, 0x2e, 0x4c, 0x61, 0x67, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x52, 0x0a, 0x6c, + 0x61, 0x67, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x12, 0x32, 0x0a, 0x0c, 0x6c, 0x61, 0x63, + 0x70, 0x5f, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x0f, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x4c, 0x61, 0x63, 0x70, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, + 0x52, 0x0b, 0x6c, 0x61, 0x63, 0x70, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x12, 0x32, 0x0a, + 0x0c, 0x6c, 0x6c, 0x64, 0x70, 0x5f, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x18, 0x09, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x4c, 0x6c, 0x64, 0x70, 0x4d, 0x65, + 0x74, 0x72, 0x69, 0x63, 0x52, 0x0b, 0x6c, 0x6c, 0x64, 0x70, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, + 0x73, 0x12, 0x32, 0x0a, 0x0c, 0x72, 0x73, 0x76, 0x70, 0x5f, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, + 0x73, 0x18, 0x0a, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x52, 0x73, + 0x76, 0x70, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x52, 0x0b, 0x72, 0x73, 0x76, 0x70, 0x4d, 0x65, + 0x74, 0x72, 0x69, 0x63, 0x73, 0x1a, 0xc5, 0x01, 0x0a, 0x06, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, + 0x22, 0xba, 0x01, 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x0a, 0x0b, 0x75, 0x6e, 0x73, + 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x10, 0x00, 0x12, 0x10, 0x0a, 0x0c, 0x66, 0x6c, + 0x6f, 0x77, 0x5f, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x10, 0x01, 0x12, 0x10, 0x0a, 0x0c, + 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x10, 0x02, 0x12, 0x11, + 0x0a, 0x0d, 0x62, 0x67, 0x70, 0x76, 0x34, 0x5f, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x10, + 0x03, 0x12, 0x11, 0x0a, 0x0d, 0x62, 0x67, 0x70, 0x76, 0x36, 0x5f, 0x6d, 0x65, 0x74, 0x72, 0x69, + 0x63, 0x73, 0x10, 0x04, 0x12, 0x10, 0x0a, 0x0c, 0x69, 0x73, 0x69, 0x73, 0x5f, 0x6d, 0x65, 0x74, + 0x72, 0x69, 0x63, 0x73, 0x10, 0x05, 0x12, 0x0f, 0x0a, 0x0b, 0x6c, 0x61, 0x67, 0x5f, 0x6d, 0x65, + 0x74, 0x72, 0x69, 0x63, 0x73, 0x10, 0x06, 0x12, 0x10, 0x0a, 0x0c, 0x6c, 0x61, 0x63, 0x70, 0x5f, + 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x10, 0x07, 0x12, 0x10, 0x0a, 0x0c, 0x6c, 0x6c, 0x64, + 0x70, 0x5f, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x10, 0x08, 0x12, 0x10, 0x0a, 0x0c, 0x72, + 0x73, 0x76, 0x70, 0x5f, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x10, 0x09, 0x42, 0x09, 0x0a, + 0x07, 0x5f, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x22, 0xe5, 0x02, 0x0a, 0x12, 0x50, 0x6f, 0x72, + 0x74, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, + 0x1d, 0x0a, 0x0a, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x18, 0x01, 0x20, + 0x03, 0x28, 0x09, 0x52, 0x09, 0x70, 0x6f, 0x72, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x12, 0x4b, + 0x0a, 0x0c, 0x63, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x18, 0x02, + 0x20, 0x03, 0x28, 0x0e, 0x32, 0x28, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x6f, 0x72, 0x74, 0x4d, + 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x43, 0x6f, + 0x6c, 0x75, 0x6d, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x52, 0x0b, + 0x63, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x1a, 0xe2, 0x01, 0x0a, 0x0b, + 0x43, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x22, 0xd2, 0x01, 0x0a, 0x04, + 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x0a, 0x0b, 0x75, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, + 0x69, 0x65, 0x64, 0x10, 0x00, 0x12, 0x0c, 0x0a, 0x08, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x6d, 0x69, + 0x74, 0x10, 0x01, 0x12, 0x0c, 0x0a, 0x08, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x10, + 0x02, 0x12, 0x08, 0x0a, 0x04, 0x6c, 0x69, 0x6e, 0x6b, 0x10, 0x03, 0x12, 0x0b, 0x0a, 0x07, 0x63, + 0x61, 0x70, 0x74, 0x75, 0x72, 0x65, 0x10, 0x04, 0x12, 0x0d, 0x0a, 0x09, 0x66, 0x72, 0x61, 0x6d, + 0x65, 0x73, 0x5f, 0x74, 0x78, 0x10, 0x05, 0x12, 0x0d, 0x0a, 0x09, 0x66, 0x72, 0x61, 0x6d, 0x65, + 0x73, 0x5f, 0x72, 0x78, 0x10, 0x06, 0x12, 0x0c, 0x0a, 0x08, 0x62, 0x79, 0x74, 0x65, 0x73, 0x5f, + 0x74, 0x78, 0x10, 0x07, 0x12, 0x0c, 0x0a, 0x08, 0x62, 0x79, 0x74, 0x65, 0x73, 0x5f, 0x72, 0x78, + 0x10, 0x08, 0x12, 0x12, 0x0a, 0x0e, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x73, 0x5f, 0x74, 0x78, 0x5f, + 0x72, 0x61, 0x74, 0x65, 0x10, 0x09, 0x12, 0x12, 0x0a, 0x0e, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x73, + 0x5f, 0x72, 0x78, 0x5f, 0x72, 0x61, 0x74, 0x65, 0x10, 0x0a, 0x12, 0x11, 0x0a, 0x0d, 0x62, 0x79, + 0x74, 0x65, 0x73, 0x5f, 0x74, 0x78, 0x5f, 0x72, 0x61, 0x74, 0x65, 0x10, 0x0b, 0x12, 0x11, 0x0a, + 0x0d, 0x62, 0x79, 0x74, 0x65, 0x73, 0x5f, 0x72, 0x78, 0x5f, 0x72, 0x61, 0x74, 0x65, 0x10, 0x0c, + 0x22, 0x8b, 0x07, 0x0a, 0x0a, 0x50, 0x6f, 0x72, 0x74, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x12, 0x17, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, - 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, 0x1c, 0x0a, 0x07, 0x70, 0x6f, 0x72, 0x74, - 0x5f, 0x74, 0x78, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, 0x52, 0x06, 0x70, 0x6f, 0x72, - 0x74, 0x54, 0x78, 0x88, 0x01, 0x01, 0x12, 0x1c, 0x0a, 0x07, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x72, - 0x78, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x48, 0x02, 0x52, 0x06, 0x70, 0x6f, 0x72, 0x74, 0x52, - 0x78, 0x88, 0x01, 0x01, 0x12, 0x3e, 0x0a, 0x08, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x6d, 0x69, 0x74, - 0x18, 0x05, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1d, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x46, 0x6c, 0x6f, - 0x77, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x2e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x6d, 0x69, 0x74, - 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x48, 0x03, 0x52, 0x08, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x6d, 0x69, - 0x74, 0x88, 0x01, 0x01, 0x12, 0x20, 0x0a, 0x09, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x73, 0x5f, 0x74, - 0x78, 0x18, 0x06, 0x20, 0x01, 0x28, 0x04, 0x48, 0x04, 0x52, 0x08, 0x66, 0x72, 0x61, 0x6d, 0x65, - 0x73, 0x54, 0x78, 0x88, 0x01, 0x01, 0x12, 0x20, 0x0a, 0x09, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x73, - 0x5f, 0x72, 0x78, 0x18, 0x07, 0x20, 0x01, 0x28, 0x04, 0x48, 0x05, 0x52, 0x08, 0x66, 0x72, 0x61, - 0x6d, 0x65, 0x73, 0x52, 0x78, 0x88, 0x01, 0x01, 0x12, 0x1e, 0x0a, 0x08, 0x62, 0x79, 0x74, 0x65, - 0x73, 0x5f, 0x74, 0x78, 0x18, 0x08, 0x20, 0x01, 0x28, 0x04, 0x48, 0x06, 0x52, 0x07, 0x62, 0x79, - 0x74, 0x65, 0x73, 0x54, 0x78, 0x88, 0x01, 0x01, 0x12, 0x1e, 0x0a, 0x08, 0x62, 0x79, 0x74, 0x65, - 0x73, 0x5f, 0x72, 0x78, 0x18, 0x09, 0x20, 0x01, 0x28, 0x04, 0x48, 0x07, 0x52, 0x07, 0x62, 0x79, - 0x74, 0x65, 0x73, 0x52, 0x78, 0x88, 0x01, 0x01, 0x12, 0x29, 0x0a, 0x0e, 0x66, 0x72, 0x61, 0x6d, - 0x65, 0x73, 0x5f, 0x74, 0x78, 0x5f, 0x72, 0x61, 0x74, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x02, - 0x48, 0x08, 0x52, 0x0c, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x73, 0x54, 0x78, 0x52, 0x61, 0x74, 0x65, - 0x88, 0x01, 0x01, 0x12, 0x29, 0x0a, 0x0e, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x73, 0x5f, 0x72, 0x78, - 0x5f, 0x72, 0x61, 0x74, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x02, 0x48, 0x09, 0x52, 0x0c, 0x66, - 0x72, 0x61, 0x6d, 0x65, 0x73, 0x52, 0x78, 0x52, 0x61, 0x74, 0x65, 0x88, 0x01, 0x01, 0x12, 0x17, - 0x0a, 0x04, 0x6c, 0x6f, 0x73, 0x73, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x02, 0x48, 0x0a, 0x52, 0x04, - 0x6c, 0x6f, 0x73, 0x73, 0x88, 0x01, 0x01, 0x12, 0x34, 0x0a, 0x0a, 0x74, 0x69, 0x6d, 0x65, 0x73, - 0x74, 0x61, 0x6d, 0x70, 0x73, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x6f, 0x74, - 0x67, 0x2e, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, - 0x70, 0x52, 0x0a, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x73, 0x12, 0x2c, 0x0a, - 0x07, 0x6c, 0x61, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, - 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x4c, 0x61, 0x74, 0x65, 0x6e, - 0x63, 0x79, 0x52, 0x07, 0x6c, 0x61, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x12, 0x3c, 0x0a, 0x0e, 0x74, - 0x61, 0x67, 0x67, 0x65, 0x64, 0x5f, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x18, 0x0f, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x46, 0x6c, 0x6f, 0x77, 0x54, 0x61, - 0x67, 0x67, 0x65, 0x64, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x52, 0x0d, 0x74, 0x61, 0x67, 0x67, - 0x65, 0x64, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x1a, 0x49, 0x0a, 0x08, 0x54, 0x72, 0x61, - 0x6e, 0x73, 0x6d, 0x69, 0x74, 0x22, 0x3d, 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x0a, - 0x0b, 0x75, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x10, 0x00, 0x12, 0x0b, - 0x0a, 0x07, 0x73, 0x74, 0x61, 0x72, 0x74, 0x65, 0x64, 0x10, 0x01, 0x12, 0x0b, 0x0a, 0x07, 0x73, - 0x74, 0x6f, 0x70, 0x70, 0x65, 0x64, 0x10, 0x02, 0x12, 0x0a, 0x0a, 0x06, 0x70, 0x61, 0x75, 0x73, - 0x65, 0x64, 0x10, 0x03, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x42, 0x0a, 0x0a, - 0x08, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x74, 0x78, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x70, 0x6f, - 0x72, 0x74, 0x5f, 0x72, 0x78, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x6d, - 0x69, 0x74, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x73, 0x5f, 0x74, 0x78, - 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x73, 0x5f, 0x72, 0x78, 0x42, 0x0b, - 0x0a, 0x09, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x5f, 0x74, 0x78, 0x42, 0x0b, 0x0a, 0x09, 0x5f, - 0x62, 0x79, 0x74, 0x65, 0x73, 0x5f, 0x72, 0x78, 0x42, 0x11, 0x0a, 0x0f, 0x5f, 0x66, 0x72, 0x61, - 0x6d, 0x65, 0x73, 0x5f, 0x74, 0x78, 0x5f, 0x72, 0x61, 0x74, 0x65, 0x42, 0x11, 0x0a, 0x0f, 0x5f, - 0x66, 0x72, 0x61, 0x6d, 0x65, 0x73, 0x5f, 0x72, 0x78, 0x5f, 0x72, 0x61, 0x74, 0x65, 0x42, 0x07, - 0x0a, 0x05, 0x5f, 0x6c, 0x6f, 0x73, 0x73, 0x22, 0xf6, 0x03, 0x0a, 0x10, 0x46, 0x6c, 0x6f, 0x77, - 0x54, 0x61, 0x67, 0x67, 0x65, 0x64, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x12, 0x26, 0x0a, 0x04, - 0x74, 0x61, 0x67, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x6f, 0x74, 0x67, - 0x2e, 0x46, 0x6c, 0x6f, 0x77, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x52, 0x04, - 0x74, 0x61, 0x67, 0x73, 0x12, 0x20, 0x0a, 0x09, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x73, 0x5f, 0x74, - 0x78, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x48, 0x00, 0x52, 0x08, 0x66, 0x72, 0x61, 0x6d, 0x65, - 0x73, 0x54, 0x78, 0x88, 0x01, 0x01, 0x12, 0x20, 0x0a, 0x09, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x73, - 0x5f, 0x72, 0x78, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x48, 0x01, 0x52, 0x08, 0x66, 0x72, 0x61, - 0x6d, 0x65, 0x73, 0x52, 0x78, 0x88, 0x01, 0x01, 0x12, 0x1e, 0x0a, 0x08, 0x62, 0x79, 0x74, 0x65, - 0x73, 0x5f, 0x74, 0x78, 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, 0x48, 0x02, 0x52, 0x07, 0x62, 0x79, - 0x74, 0x65, 0x73, 0x54, 0x78, 0x88, 0x01, 0x01, 0x12, 0x1e, 0x0a, 0x08, 0x62, 0x79, 0x74, 0x65, - 0x73, 0x5f, 0x72, 0x78, 0x18, 0x05, 0x20, 0x01, 0x28, 0x04, 0x48, 0x03, 0x52, 0x07, 0x62, 0x79, - 0x74, 0x65, 0x73, 0x52, 0x78, 0x88, 0x01, 0x01, 0x12, 0x29, 0x0a, 0x0e, 0x66, 0x72, 0x61, 0x6d, - 0x65, 0x73, 0x5f, 0x74, 0x78, 0x5f, 0x72, 0x61, 0x74, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x02, - 0x48, 0x04, 0x52, 0x0c, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x73, 0x54, 0x78, 0x52, 0x61, 0x74, 0x65, - 0x88, 0x01, 0x01, 0x12, 0x29, 0x0a, 0x0e, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x73, 0x5f, 0x72, 0x78, - 0x5f, 0x72, 0x61, 0x74, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x02, 0x48, 0x05, 0x52, 0x0c, 0x66, - 0x72, 0x61, 0x6d, 0x65, 0x73, 0x52, 0x78, 0x52, 0x61, 0x74, 0x65, 0x88, 0x01, 0x01, 0x12, 0x17, - 0x0a, 0x04, 0x6c, 0x6f, 0x73, 0x73, 0x18, 0x08, 0x20, 0x01, 0x28, 0x02, 0x48, 0x06, 0x52, 0x04, - 0x6c, 0x6f, 0x73, 0x73, 0x88, 0x01, 0x01, 0x12, 0x34, 0x0a, 0x0a, 0x74, 0x69, 0x6d, 0x65, 0x73, - 0x74, 0x61, 0x6d, 0x70, 0x73, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x6f, 0x74, - 0x67, 0x2e, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, - 0x70, 0x52, 0x0a, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x73, 0x12, 0x2c, 0x0a, - 0x07, 0x6c, 0x61, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, - 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x4c, 0x61, 0x74, 0x65, 0x6e, - 0x63, 0x79, 0x52, 0x07, 0x6c, 0x61, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, - 0x66, 0x72, 0x61, 0x6d, 0x65, 0x73, 0x5f, 0x74, 0x78, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x66, 0x72, - 0x61, 0x6d, 0x65, 0x73, 0x5f, 0x72, 0x78, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x62, 0x79, 0x74, 0x65, - 0x73, 0x5f, 0x74, 0x78, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x5f, 0x72, - 0x78, 0x42, 0x11, 0x0a, 0x0f, 0x5f, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x73, 0x5f, 0x74, 0x78, 0x5f, - 0x72, 0x61, 0x74, 0x65, 0x42, 0x11, 0x0a, 0x0f, 0x5f, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x73, 0x5f, - 0x72, 0x78, 0x5f, 0x72, 0x61, 0x74, 0x65, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x6c, 0x6f, 0x73, 0x73, - 0x22, 0x60, 0x0a, 0x0d, 0x46, 0x6c, 0x6f, 0x77, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, - 0x67, 0x12, 0x17, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, - 0x00, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, 0x2d, 0x0a, 0x05, 0x76, 0x61, - 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x6f, 0x74, 0x67, 0x2e, - 0x46, 0x6c, 0x6f, 0x77, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x56, 0x61, 0x6c, - 0x75, 0x65, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x6e, 0x61, - 0x6d, 0x65, 0x22, 0xd4, 0x01, 0x0a, 0x12, 0x46, 0x6c, 0x6f, 0x77, 0x4d, 0x65, 0x74, 0x72, 0x69, - 0x63, 0x54, 0x61, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x40, 0x0a, 0x06, 0x63, 0x68, 0x6f, - 0x69, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x23, 0x2e, 0x6f, 0x74, 0x67, 0x2e, - 0x46, 0x6c, 0x6f, 0x77, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x56, 0x61, 0x6c, - 0x75, 0x65, 0x2e, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x48, 0x00, - 0x52, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x88, 0x01, 0x01, 0x12, 0x15, 0x0a, 0x03, 0x68, - 0x65, 0x78, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, 0x52, 0x03, 0x68, 0x65, 0x78, 0x88, - 0x01, 0x01, 0x12, 0x15, 0x0a, 0x03, 0x73, 0x74, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x48, - 0x02, 0x52, 0x03, 0x73, 0x74, 0x72, 0x88, 0x01, 0x01, 0x1a, 0x33, 0x0a, 0x06, 0x43, 0x68, 0x6f, - 0x69, 0x63, 0x65, 0x22, 0x29, 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x0a, 0x0b, 0x75, - 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x10, 0x00, 0x12, 0x07, 0x0a, 0x03, - 0x68, 0x65, 0x78, 0x10, 0x01, 0x12, 0x07, 0x0a, 0x03, 0x73, 0x74, 0x72, 0x10, 0x02, 0x42, 0x09, - 0x0a, 0x07, 0x5f, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x42, 0x06, 0x0a, 0x04, 0x5f, 0x68, 0x65, - 0x78, 0x42, 0x06, 0x0a, 0x04, 0x5f, 0x73, 0x74, 0x72, 0x22, 0xa2, 0x01, 0x0a, 0x0f, 0x4d, 0x65, - 0x74, 0x72, 0x69, 0x63, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x31, 0x0a, - 0x12, 0x66, 0x69, 0x72, 0x73, 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, - 0x5f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x01, 0x48, 0x00, 0x52, 0x10, 0x66, 0x69, 0x72, - 0x73, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x4e, 0x73, 0x88, 0x01, 0x01, - 0x12, 0x2f, 0x0a, 0x11, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, - 0x6d, 0x70, 0x5f, 0x6e, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x01, 0x48, 0x01, 0x52, 0x0f, 0x6c, - 0x61, 0x73, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x4e, 0x73, 0x88, 0x01, - 0x01, 0x42, 0x15, 0x0a, 0x13, 0x5f, 0x66, 0x69, 0x72, 0x73, 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65, - 0x73, 0x74, 0x61, 0x6d, 0x70, 0x5f, 0x6e, 0x73, 0x42, 0x14, 0x0a, 0x12, 0x5f, 0x6c, 0x61, 0x73, - 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x5f, 0x6e, 0x73, 0x22, 0xa8, - 0x01, 0x0a, 0x0d, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x4c, 0x61, 0x74, 0x65, 0x6e, 0x63, 0x79, - 0x12, 0x22, 0x0a, 0x0a, 0x6d, 0x69, 0x6e, 0x69, 0x6d, 0x75, 0x6d, 0x5f, 0x6e, 0x73, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x01, 0x48, 0x00, 0x52, 0x09, 0x6d, 0x69, 0x6e, 0x69, 0x6d, 0x75, 0x6d, 0x4e, - 0x73, 0x88, 0x01, 0x01, 0x12, 0x22, 0x0a, 0x0a, 0x6d, 0x61, 0x78, 0x69, 0x6d, 0x75, 0x6d, 0x5f, - 0x6e, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x01, 0x48, 0x01, 0x52, 0x09, 0x6d, 0x61, 0x78, 0x69, - 0x6d, 0x75, 0x6d, 0x4e, 0x73, 0x88, 0x01, 0x01, 0x12, 0x22, 0x0a, 0x0a, 0x61, 0x76, 0x65, 0x72, - 0x61, 0x67, 0x65, 0x5f, 0x6e, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x01, 0x48, 0x02, 0x52, 0x09, - 0x61, 0x76, 0x65, 0x72, 0x61, 0x67, 0x65, 0x4e, 0x73, 0x88, 0x01, 0x01, 0x42, 0x0d, 0x0a, 0x0b, - 0x5f, 0x6d, 0x69, 0x6e, 0x69, 0x6d, 0x75, 0x6d, 0x5f, 0x6e, 0x73, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, - 0x6d, 0x61, 0x78, 0x69, 0x6d, 0x75, 0x6d, 0x5f, 0x6e, 0x73, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x61, - 0x76, 0x65, 0x72, 0x61, 0x67, 0x65, 0x5f, 0x6e, 0x73, 0x22, 0x91, 0x04, 0x0a, 0x13, 0x42, 0x67, - 0x70, 0x76, 0x34, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x65, 0x65, 0x72, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x18, - 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x09, 0x70, 0x65, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x73, - 0x12, 0x4c, 0x0a, 0x0c, 0x63, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x73, - 0x18, 0x02, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x29, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x42, 0x67, 0x70, - 0x76, 0x34, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x2e, 0x43, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x2e, 0x45, 0x6e, 0x75, - 0x6d, 0x52, 0x0b, 0x63, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x1a, 0x8c, - 0x03, 0x0a, 0x0b, 0x43, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x22, 0xfc, - 0x02, 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x0a, 0x0b, 0x75, 0x6e, 0x73, 0x70, 0x65, - 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x10, 0x00, 0x12, 0x11, 0x0a, 0x0d, 0x73, 0x65, 0x73, 0x73, - 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x10, 0x01, 0x12, 0x16, 0x0a, 0x12, 0x73, - 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x66, 0x6c, 0x61, 0x70, 0x5f, 0x63, 0x6f, 0x75, 0x6e, - 0x74, 0x10, 0x02, 0x12, 0x15, 0x0a, 0x11, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x73, 0x5f, 0x61, 0x64, - 0x76, 0x65, 0x72, 0x74, 0x69, 0x73, 0x65, 0x64, 0x10, 0x03, 0x12, 0x13, 0x0a, 0x0f, 0x72, 0x6f, - 0x75, 0x74, 0x65, 0x73, 0x5f, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x64, 0x10, 0x04, 0x12, - 0x18, 0x0a, 0x14, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x5f, 0x77, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, - 0x77, 0x73, 0x5f, 0x73, 0x65, 0x6e, 0x74, 0x10, 0x05, 0x12, 0x1c, 0x0a, 0x18, 0x72, 0x6f, 0x75, - 0x74, 0x65, 0x5f, 0x77, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x73, 0x5f, 0x72, 0x65, 0x63, - 0x65, 0x69, 0x76, 0x65, 0x64, 0x10, 0x06, 0x12, 0x10, 0x0a, 0x0c, 0x75, 0x70, 0x64, 0x61, 0x74, - 0x65, 0x73, 0x5f, 0x73, 0x65, 0x6e, 0x74, 0x10, 0x07, 0x12, 0x14, 0x0a, 0x10, 0x75, 0x70, 0x64, - 0x61, 0x74, 0x65, 0x73, 0x5f, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x64, 0x10, 0x08, 0x12, - 0x0e, 0x0a, 0x0a, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x5f, 0x73, 0x65, 0x6e, 0x74, 0x10, 0x09, 0x12, - 0x12, 0x0a, 0x0e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x5f, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, - 0x64, 0x10, 0x0a, 0x12, 0x13, 0x0a, 0x0f, 0x6b, 0x65, 0x65, 0x70, 0x61, 0x6c, 0x69, 0x76, 0x65, - 0x73, 0x5f, 0x73, 0x65, 0x6e, 0x74, 0x10, 0x0b, 0x12, 0x17, 0x0a, 0x13, 0x6b, 0x65, 0x65, 0x70, - 0x61, 0x6c, 0x69, 0x76, 0x65, 0x73, 0x5f, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x64, 0x10, - 0x0c, 0x12, 0x16, 0x0a, 0x12, 0x6e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x73, 0x5f, 0x73, 0x65, 0x6e, 0x74, 0x10, 0x0d, 0x12, 0x1a, 0x0a, 0x16, 0x6e, 0x6f, 0x74, - 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x5f, 0x72, 0x65, 0x63, 0x65, 0x69, - 0x76, 0x65, 0x64, 0x10, 0x0e, 0x12, 0x0d, 0x0a, 0x09, 0x66, 0x73, 0x6d, 0x5f, 0x73, 0x74, 0x61, - 0x74, 0x65, 0x10, 0x0f, 0x12, 0x17, 0x0a, 0x13, 0x65, 0x6e, 0x64, 0x5f, 0x6f, 0x66, 0x5f, 0x72, - 0x69, 0x62, 0x5f, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x64, 0x10, 0x10, 0x22, 0x80, 0x0b, - 0x0a, 0x0b, 0x42, 0x67, 0x70, 0x76, 0x34, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x12, 0x17, 0x0a, + 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, 0x1f, 0x0a, 0x08, 0x6c, 0x6f, 0x63, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, 0x52, 0x08, 0x6c, 0x6f, + 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x12, 0x32, 0x0a, 0x04, 0x6c, 0x69, 0x6e, + 0x6b, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x19, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x6f, + 0x72, 0x74, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x2e, 0x4c, 0x69, 0x6e, 0x6b, 0x2e, 0x45, 0x6e, + 0x75, 0x6d, 0x48, 0x02, 0x52, 0x04, 0x6c, 0x69, 0x6e, 0x6b, 0x88, 0x01, 0x01, 0x12, 0x3b, 0x0a, + 0x07, 0x63, 0x61, 0x70, 0x74, 0x75, 0x72, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1c, + 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x6f, 0x72, 0x74, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x2e, + 0x43, 0x61, 0x70, 0x74, 0x75, 0x72, 0x65, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x48, 0x03, 0x52, 0x07, + 0x63, 0x61, 0x70, 0x74, 0x75, 0x72, 0x65, 0x88, 0x01, 0x01, 0x12, 0x20, 0x0a, 0x09, 0x66, 0x72, + 0x61, 0x6d, 0x65, 0x73, 0x5f, 0x74, 0x78, 0x18, 0x05, 0x20, 0x01, 0x28, 0x04, 0x48, 0x04, 0x52, + 0x08, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x73, 0x54, 0x78, 0x88, 0x01, 0x01, 0x12, 0x20, 0x0a, 0x09, + 0x66, 0x72, 0x61, 0x6d, 0x65, 0x73, 0x5f, 0x72, 0x78, 0x18, 0x06, 0x20, 0x01, 0x28, 0x04, 0x48, + 0x05, 0x52, 0x08, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x73, 0x52, 0x78, 0x88, 0x01, 0x01, 0x12, 0x1e, + 0x0a, 0x08, 0x62, 0x79, 0x74, 0x65, 0x73, 0x5f, 0x74, 0x78, 0x18, 0x07, 0x20, 0x01, 0x28, 0x04, + 0x48, 0x06, 0x52, 0x07, 0x62, 0x79, 0x74, 0x65, 0x73, 0x54, 0x78, 0x88, 0x01, 0x01, 0x12, 0x1e, + 0x0a, 0x08, 0x62, 0x79, 0x74, 0x65, 0x73, 0x5f, 0x72, 0x78, 0x18, 0x08, 0x20, 0x01, 0x28, 0x04, + 0x48, 0x07, 0x52, 0x07, 0x62, 0x79, 0x74, 0x65, 0x73, 0x52, 0x78, 0x88, 0x01, 0x01, 0x12, 0x29, + 0x0a, 0x0e, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x73, 0x5f, 0x74, 0x78, 0x5f, 0x72, 0x61, 0x74, 0x65, + 0x18, 0x09, 0x20, 0x01, 0x28, 0x02, 0x48, 0x08, 0x52, 0x0c, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x73, + 0x54, 0x78, 0x52, 0x61, 0x74, 0x65, 0x88, 0x01, 0x01, 0x12, 0x29, 0x0a, 0x0e, 0x66, 0x72, 0x61, + 0x6d, 0x65, 0x73, 0x5f, 0x72, 0x78, 0x5f, 0x72, 0x61, 0x74, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, + 0x02, 0x48, 0x09, 0x52, 0x0c, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x73, 0x52, 0x78, 0x52, 0x61, 0x74, + 0x65, 0x88, 0x01, 0x01, 0x12, 0x27, 0x0a, 0x0d, 0x62, 0x79, 0x74, 0x65, 0x73, 0x5f, 0x74, 0x78, + 0x5f, 0x72, 0x61, 0x74, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x02, 0x48, 0x0a, 0x52, 0x0b, 0x62, + 0x79, 0x74, 0x65, 0x73, 0x54, 0x78, 0x52, 0x61, 0x74, 0x65, 0x88, 0x01, 0x01, 0x12, 0x27, 0x0a, + 0x0d, 0x62, 0x79, 0x74, 0x65, 0x73, 0x5f, 0x72, 0x78, 0x5f, 0x72, 0x61, 0x74, 0x65, 0x18, 0x0c, + 0x20, 0x01, 0x28, 0x02, 0x48, 0x0b, 0x52, 0x0b, 0x62, 0x79, 0x74, 0x65, 0x73, 0x52, 0x78, 0x52, + 0x61, 0x74, 0x65, 0x88, 0x01, 0x01, 0x12, 0x3e, 0x0a, 0x08, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x6d, + 0x69, 0x74, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1d, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, + 0x6f, 0x72, 0x74, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x2e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x6d, + 0x69, 0x74, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x48, 0x0c, 0x52, 0x08, 0x74, 0x72, 0x61, 0x6e, 0x73, + 0x6d, 0x69, 0x74, 0x88, 0x01, 0x01, 0x1a, 0x31, 0x0a, 0x04, 0x4c, 0x69, 0x6e, 0x6b, 0x22, 0x29, + 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x0a, 0x0b, 0x75, 0x6e, 0x73, 0x70, 0x65, 0x63, + 0x69, 0x66, 0x69, 0x65, 0x64, 0x10, 0x00, 0x12, 0x06, 0x0a, 0x02, 0x75, 0x70, 0x10, 0x01, 0x12, + 0x08, 0x0a, 0x04, 0x64, 0x6f, 0x77, 0x6e, 0x10, 0x02, 0x1a, 0x3c, 0x0a, 0x07, 0x43, 0x61, 0x70, + 0x74, 0x75, 0x72, 0x65, 0x22, 0x31, 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x0a, 0x0b, + 0x75, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x10, 0x00, 0x12, 0x0b, 0x0a, + 0x07, 0x73, 0x74, 0x61, 0x72, 0x74, 0x65, 0x64, 0x10, 0x01, 0x12, 0x0b, 0x0a, 0x07, 0x73, 0x74, + 0x6f, 0x70, 0x70, 0x65, 0x64, 0x10, 0x02, 0x1a, 0x3d, 0x0a, 0x08, 0x54, 0x72, 0x61, 0x6e, 0x73, + 0x6d, 0x69, 0x74, 0x22, 0x31, 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x0a, 0x0b, 0x75, + 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x10, 0x00, 0x12, 0x0b, 0x0a, 0x07, + 0x73, 0x74, 0x61, 0x72, 0x74, 0x65, 0x64, 0x10, 0x01, 0x12, 0x0b, 0x0a, 0x07, 0x73, 0x74, 0x6f, + 0x70, 0x70, 0x65, 0x64, 0x10, 0x02, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x42, + 0x0b, 0x0a, 0x09, 0x5f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x07, 0x0a, 0x05, + 0x5f, 0x6c, 0x69, 0x6e, 0x6b, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x63, 0x61, 0x70, 0x74, 0x75, 0x72, + 0x65, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x73, 0x5f, 0x74, 0x78, 0x42, + 0x0c, 0x0a, 0x0a, 0x5f, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x73, 0x5f, 0x72, 0x78, 0x42, 0x0b, 0x0a, + 0x09, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x5f, 0x74, 0x78, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x62, + 0x79, 0x74, 0x65, 0x73, 0x5f, 0x72, 0x78, 0x42, 0x11, 0x0a, 0x0f, 0x5f, 0x66, 0x72, 0x61, 0x6d, + 0x65, 0x73, 0x5f, 0x74, 0x78, 0x5f, 0x72, 0x61, 0x74, 0x65, 0x42, 0x11, 0x0a, 0x0f, 0x5f, 0x66, + 0x72, 0x61, 0x6d, 0x65, 0x73, 0x5f, 0x72, 0x78, 0x5f, 0x72, 0x61, 0x74, 0x65, 0x42, 0x10, 0x0a, + 0x0e, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x5f, 0x74, 0x78, 0x5f, 0x72, 0x61, 0x74, 0x65, 0x42, + 0x10, 0x0a, 0x0e, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x5f, 0x72, 0x78, 0x5f, 0x72, 0x61, 0x74, + 0x65, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x6d, 0x69, 0x74, 0x22, 0xdf, + 0x02, 0x0a, 0x12, 0x46, 0x6c, 0x6f, 0x77, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x66, 0x6c, 0x6f, 0x77, 0x5f, 0x6e, 0x61, + 0x6d, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x09, 0x66, 0x6c, 0x6f, 0x77, 0x4e, + 0x61, 0x6d, 0x65, 0x73, 0x12, 0x4b, 0x0a, 0x0c, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x5f, 0x6e, + 0x61, 0x6d, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x28, 0x2e, 0x6f, 0x74, 0x67, + 0x2e, 0x46, 0x6c, 0x6f, 0x77, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x2e, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x2e, + 0x45, 0x6e, 0x75, 0x6d, 0x52, 0x0b, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x4e, 0x61, 0x6d, 0x65, + 0x73, 0x12, 0x43, 0x0a, 0x0e, 0x74, 0x61, 0x67, 0x67, 0x65, 0x64, 0x5f, 0x6d, 0x65, 0x74, 0x72, + 0x69, 0x63, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x6f, 0x74, 0x67, 0x2e, + 0x46, 0x6c, 0x6f, 0x77, 0x54, 0x61, 0x67, 0x67, 0x65, 0x64, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, + 0x73, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x52, 0x0d, 0x74, 0x61, 0x67, 0x67, 0x65, 0x64, 0x4d, + 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x1a, 0x97, 0x01, 0x0a, 0x0b, 0x4d, 0x65, 0x74, 0x72, 0x69, + 0x63, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x22, 0x87, 0x01, 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, + 0x0f, 0x0a, 0x0b, 0x75, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x10, 0x00, + 0x12, 0x0c, 0x0a, 0x08, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x6d, 0x69, 0x74, 0x10, 0x01, 0x12, 0x0d, + 0x0a, 0x09, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x73, 0x5f, 0x74, 0x78, 0x10, 0x02, 0x12, 0x0d, 0x0a, + 0x09, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x73, 0x5f, 0x72, 0x78, 0x10, 0x03, 0x12, 0x0c, 0x0a, 0x08, + 0x62, 0x79, 0x74, 0x65, 0x73, 0x5f, 0x74, 0x78, 0x10, 0x04, 0x12, 0x0c, 0x0a, 0x08, 0x62, 0x79, + 0x74, 0x65, 0x73, 0x5f, 0x72, 0x78, 0x10, 0x05, 0x12, 0x12, 0x0a, 0x0e, 0x66, 0x72, 0x61, 0x6d, + 0x65, 0x73, 0x5f, 0x74, 0x78, 0x5f, 0x72, 0x61, 0x74, 0x65, 0x10, 0x06, 0x12, 0x12, 0x0a, 0x0e, + 0x66, 0x72, 0x61, 0x6d, 0x65, 0x73, 0x5f, 0x72, 0x78, 0x5f, 0x72, 0x61, 0x74, 0x65, 0x10, 0x07, + 0x22, 0xa8, 0x03, 0x0a, 0x17, 0x46, 0x6c, 0x6f, 0x77, 0x54, 0x61, 0x67, 0x67, 0x65, 0x64, 0x4d, + 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0x1d, 0x0a, 0x07, + 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x48, 0x00, 0x52, + 0x07, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x88, 0x01, 0x01, 0x12, 0x37, 0x0a, 0x15, 0x69, + 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x5f, 0x65, 0x6d, 0x70, 0x74, 0x79, 0x5f, 0x6d, 0x65, 0x74, + 0x72, 0x69, 0x63, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x48, 0x01, 0x52, 0x13, 0x69, 0x6e, + 0x63, 0x6c, 0x75, 0x64, 0x65, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, + 0x73, 0x88, 0x01, 0x01, 0x12, 0x50, 0x0a, 0x0c, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x5f, 0x6e, + 0x61, 0x6d, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x2d, 0x2e, 0x6f, 0x74, 0x67, + 0x2e, 0x46, 0x6c, 0x6f, 0x77, 0x54, 0x61, 0x67, 0x67, 0x65, 0x64, 0x4d, 0x65, 0x74, 0x72, 0x69, + 0x63, 0x73, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x2e, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x4e, + 0x61, 0x6d, 0x65, 0x73, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x52, 0x0b, 0x6d, 0x65, 0x74, 0x72, 0x69, + 0x63, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x12, 0x32, 0x0a, 0x07, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, + 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x46, 0x6c, + 0x6f, 0x77, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x46, 0x69, 0x6c, 0x74, 0x65, + 0x72, 0x52, 0x07, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, 0x1a, 0x88, 0x01, 0x0a, 0x0b, 0x4d, + 0x65, 0x74, 0x72, 0x69, 0x63, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x22, 0x79, 0x0a, 0x04, 0x45, 0x6e, + 0x75, 0x6d, 0x12, 0x0f, 0x0a, 0x0b, 0x75, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, + 0x64, 0x10, 0x00, 0x12, 0x0d, 0x0a, 0x09, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x73, 0x5f, 0x74, 0x78, + 0x10, 0x01, 0x12, 0x0d, 0x0a, 0x09, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x73, 0x5f, 0x72, 0x78, 0x10, + 0x02, 0x12, 0x0c, 0x0a, 0x08, 0x62, 0x79, 0x74, 0x65, 0x73, 0x5f, 0x74, 0x78, 0x10, 0x03, 0x12, + 0x0c, 0x0a, 0x08, 0x62, 0x79, 0x74, 0x65, 0x73, 0x5f, 0x72, 0x78, 0x10, 0x04, 0x12, 0x12, 0x0a, + 0x0e, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x73, 0x5f, 0x74, 0x78, 0x5f, 0x72, 0x61, 0x74, 0x65, 0x10, + 0x05, 0x12, 0x12, 0x0a, 0x0e, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x73, 0x5f, 0x72, 0x78, 0x5f, 0x72, + 0x61, 0x74, 0x65, 0x10, 0x06, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, + 0x65, 0x42, 0x18, 0x0a, 0x16, 0x5f, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x5f, 0x65, 0x6d, + 0x70, 0x74, 0x79, 0x5f, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x22, 0x4f, 0x0a, 0x13, 0x46, + 0x6c, 0x6f, 0x77, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x46, 0x69, 0x6c, 0x74, + 0x65, 0x72, 0x12, 0x17, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x48, 0x00, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, 0x16, 0x0a, 0x06, 0x76, + 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x06, 0x76, 0x61, 0x6c, + 0x75, 0x65, 0x73, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x94, 0x06, 0x0a, + 0x0a, 0x46, 0x6c, 0x6f, 0x77, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x12, 0x17, 0x0a, 0x04, 0x6e, + 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x04, 0x6e, 0x61, 0x6d, + 0x65, 0x88, 0x01, 0x01, 0x12, 0x1c, 0x0a, 0x07, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x74, 0x78, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, 0x52, 0x06, 0x70, 0x6f, 0x72, 0x74, 0x54, 0x78, 0x88, + 0x01, 0x01, 0x12, 0x1c, 0x0a, 0x07, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x72, 0x78, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x09, 0x48, 0x02, 0x52, 0x06, 0x70, 0x6f, 0x72, 0x74, 0x52, 0x78, 0x88, 0x01, 0x01, + 0x12, 0x3e, 0x0a, 0x08, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x6d, 0x69, 0x74, 0x18, 0x05, 0x20, 0x01, + 0x28, 0x0e, 0x32, 0x1d, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x46, 0x6c, 0x6f, 0x77, 0x4d, 0x65, 0x74, + 0x72, 0x69, 0x63, 0x2e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x6d, 0x69, 0x74, 0x2e, 0x45, 0x6e, 0x75, + 0x6d, 0x48, 0x03, 0x52, 0x08, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x6d, 0x69, 0x74, 0x88, 0x01, 0x01, + 0x12, 0x20, 0x0a, 0x09, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x73, 0x5f, 0x74, 0x78, 0x18, 0x06, 0x20, + 0x01, 0x28, 0x04, 0x48, 0x04, 0x52, 0x08, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x73, 0x54, 0x78, 0x88, + 0x01, 0x01, 0x12, 0x20, 0x0a, 0x09, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x73, 0x5f, 0x72, 0x78, 0x18, + 0x07, 0x20, 0x01, 0x28, 0x04, 0x48, 0x05, 0x52, 0x08, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x73, 0x52, + 0x78, 0x88, 0x01, 0x01, 0x12, 0x1e, 0x0a, 0x08, 0x62, 0x79, 0x74, 0x65, 0x73, 0x5f, 0x74, 0x78, + 0x18, 0x08, 0x20, 0x01, 0x28, 0x04, 0x48, 0x06, 0x52, 0x07, 0x62, 0x79, 0x74, 0x65, 0x73, 0x54, + 0x78, 0x88, 0x01, 0x01, 0x12, 0x1e, 0x0a, 0x08, 0x62, 0x79, 0x74, 0x65, 0x73, 0x5f, 0x72, 0x78, + 0x18, 0x09, 0x20, 0x01, 0x28, 0x04, 0x48, 0x07, 0x52, 0x07, 0x62, 0x79, 0x74, 0x65, 0x73, 0x52, + 0x78, 0x88, 0x01, 0x01, 0x12, 0x29, 0x0a, 0x0e, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x73, 0x5f, 0x74, + 0x78, 0x5f, 0x72, 0x61, 0x74, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x02, 0x48, 0x08, 0x52, 0x0c, + 0x66, 0x72, 0x61, 0x6d, 0x65, 0x73, 0x54, 0x78, 0x52, 0x61, 0x74, 0x65, 0x88, 0x01, 0x01, 0x12, + 0x29, 0x0a, 0x0e, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x73, 0x5f, 0x72, 0x78, 0x5f, 0x72, 0x61, 0x74, + 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x02, 0x48, 0x09, 0x52, 0x0c, 0x66, 0x72, 0x61, 0x6d, 0x65, + 0x73, 0x52, 0x78, 0x52, 0x61, 0x74, 0x65, 0x88, 0x01, 0x01, 0x12, 0x17, 0x0a, 0x04, 0x6c, 0x6f, + 0x73, 0x73, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x02, 0x48, 0x0a, 0x52, 0x04, 0x6c, 0x6f, 0x73, 0x73, + 0x88, 0x01, 0x01, 0x12, 0x34, 0x0a, 0x0a, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, + 0x73, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x4d, 0x65, + 0x74, 0x72, 0x69, 0x63, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0a, 0x74, + 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x73, 0x12, 0x2c, 0x0a, 0x07, 0x6c, 0x61, 0x74, + 0x65, 0x6e, 0x63, 0x79, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x6f, 0x74, 0x67, + 0x2e, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x4c, 0x61, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x52, 0x07, + 0x6c, 0x61, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x12, 0x3c, 0x0a, 0x0e, 0x74, 0x61, 0x67, 0x67, 0x65, + 0x64, 0x5f, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x18, 0x0f, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x15, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x46, 0x6c, 0x6f, 0x77, 0x54, 0x61, 0x67, 0x67, 0x65, 0x64, + 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x52, 0x0d, 0x74, 0x61, 0x67, 0x67, 0x65, 0x64, 0x4d, 0x65, + 0x74, 0x72, 0x69, 0x63, 0x73, 0x1a, 0x49, 0x0a, 0x08, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x6d, 0x69, + 0x74, 0x22, 0x3d, 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x0a, 0x0b, 0x75, 0x6e, 0x73, + 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x10, 0x00, 0x12, 0x0b, 0x0a, 0x07, 0x73, 0x74, + 0x61, 0x72, 0x74, 0x65, 0x64, 0x10, 0x01, 0x12, 0x0b, 0x0a, 0x07, 0x73, 0x74, 0x6f, 0x70, 0x70, + 0x65, 0x64, 0x10, 0x02, 0x12, 0x0a, 0x0a, 0x06, 0x70, 0x61, 0x75, 0x73, 0x65, 0x64, 0x10, 0x03, + 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x70, 0x6f, + 0x72, 0x74, 0x5f, 0x74, 0x78, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x72, + 0x78, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x6d, 0x69, 0x74, 0x42, 0x0c, + 0x0a, 0x0a, 0x5f, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x73, 0x5f, 0x74, 0x78, 0x42, 0x0c, 0x0a, 0x0a, + 0x5f, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x73, 0x5f, 0x72, 0x78, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x62, + 0x79, 0x74, 0x65, 0x73, 0x5f, 0x74, 0x78, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x62, 0x79, 0x74, 0x65, + 0x73, 0x5f, 0x72, 0x78, 0x42, 0x11, 0x0a, 0x0f, 0x5f, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x73, 0x5f, + 0x74, 0x78, 0x5f, 0x72, 0x61, 0x74, 0x65, 0x42, 0x11, 0x0a, 0x0f, 0x5f, 0x66, 0x72, 0x61, 0x6d, + 0x65, 0x73, 0x5f, 0x72, 0x78, 0x5f, 0x72, 0x61, 0x74, 0x65, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x6c, + 0x6f, 0x73, 0x73, 0x22, 0xf6, 0x03, 0x0a, 0x10, 0x46, 0x6c, 0x6f, 0x77, 0x54, 0x61, 0x67, 0x67, + 0x65, 0x64, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x12, 0x26, 0x0a, 0x04, 0x74, 0x61, 0x67, 0x73, + 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x46, 0x6c, 0x6f, + 0x77, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x52, 0x04, 0x74, 0x61, 0x67, 0x73, + 0x12, 0x20, 0x0a, 0x09, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x73, 0x5f, 0x74, 0x78, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x04, 0x48, 0x00, 0x52, 0x08, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x73, 0x54, 0x78, 0x88, + 0x01, 0x01, 0x12, 0x20, 0x0a, 0x09, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x73, 0x5f, 0x72, 0x78, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x04, 0x48, 0x01, 0x52, 0x08, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x73, 0x52, + 0x78, 0x88, 0x01, 0x01, 0x12, 0x1e, 0x0a, 0x08, 0x62, 0x79, 0x74, 0x65, 0x73, 0x5f, 0x74, 0x78, + 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, 0x48, 0x02, 0x52, 0x07, 0x62, 0x79, 0x74, 0x65, 0x73, 0x54, + 0x78, 0x88, 0x01, 0x01, 0x12, 0x1e, 0x0a, 0x08, 0x62, 0x79, 0x74, 0x65, 0x73, 0x5f, 0x72, 0x78, + 0x18, 0x05, 0x20, 0x01, 0x28, 0x04, 0x48, 0x03, 0x52, 0x07, 0x62, 0x79, 0x74, 0x65, 0x73, 0x52, + 0x78, 0x88, 0x01, 0x01, 0x12, 0x29, 0x0a, 0x0e, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x73, 0x5f, 0x74, + 0x78, 0x5f, 0x72, 0x61, 0x74, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x02, 0x48, 0x04, 0x52, 0x0c, + 0x66, 0x72, 0x61, 0x6d, 0x65, 0x73, 0x54, 0x78, 0x52, 0x61, 0x74, 0x65, 0x88, 0x01, 0x01, 0x12, + 0x29, 0x0a, 0x0e, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x73, 0x5f, 0x72, 0x78, 0x5f, 0x72, 0x61, 0x74, + 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x02, 0x48, 0x05, 0x52, 0x0c, 0x66, 0x72, 0x61, 0x6d, 0x65, + 0x73, 0x52, 0x78, 0x52, 0x61, 0x74, 0x65, 0x88, 0x01, 0x01, 0x12, 0x17, 0x0a, 0x04, 0x6c, 0x6f, + 0x73, 0x73, 0x18, 0x08, 0x20, 0x01, 0x28, 0x02, 0x48, 0x06, 0x52, 0x04, 0x6c, 0x6f, 0x73, 0x73, + 0x88, 0x01, 0x01, 0x12, 0x34, 0x0a, 0x0a, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, + 0x73, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x4d, 0x65, + 0x74, 0x72, 0x69, 0x63, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0a, 0x74, + 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x73, 0x12, 0x2c, 0x0a, 0x07, 0x6c, 0x61, 0x74, + 0x65, 0x6e, 0x63, 0x79, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x6f, 0x74, 0x67, + 0x2e, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x4c, 0x61, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x52, 0x07, + 0x6c, 0x61, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x66, 0x72, 0x61, 0x6d, + 0x65, 0x73, 0x5f, 0x74, 0x78, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x73, + 0x5f, 0x72, 0x78, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x5f, 0x74, 0x78, + 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x5f, 0x72, 0x78, 0x42, 0x11, 0x0a, + 0x0f, 0x5f, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x73, 0x5f, 0x74, 0x78, 0x5f, 0x72, 0x61, 0x74, 0x65, + 0x42, 0x11, 0x0a, 0x0f, 0x5f, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x73, 0x5f, 0x72, 0x78, 0x5f, 0x72, + 0x61, 0x74, 0x65, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x6c, 0x6f, 0x73, 0x73, 0x22, 0x60, 0x0a, 0x0d, + 0x46, 0x6c, 0x6f, 0x77, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x12, 0x17, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x04, 0x6e, - 0x61, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, 0x4c, 0x0a, 0x0d, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, - 0x6e, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x22, 0x2e, - 0x6f, 0x74, 0x67, 0x2e, 0x42, 0x67, 0x70, 0x76, 0x34, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x2e, - 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x2e, 0x45, 0x6e, 0x75, - 0x6d, 0x48, 0x01, 0x52, 0x0c, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, - 0x65, 0x88, 0x01, 0x01, 0x12, 0x31, 0x0a, 0x12, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x5f, - 0x66, 0x6c, 0x61, 0x70, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, - 0x48, 0x02, 0x52, 0x10, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x46, 0x6c, 0x61, 0x70, 0x43, - 0x6f, 0x75, 0x6e, 0x74, 0x88, 0x01, 0x01, 0x12, 0x30, 0x0a, 0x11, 0x72, 0x6f, 0x75, 0x74, 0x65, - 0x73, 0x5f, 0x61, 0x64, 0x76, 0x65, 0x72, 0x74, 0x69, 0x73, 0x65, 0x64, 0x18, 0x04, 0x20, 0x01, - 0x28, 0x04, 0x48, 0x03, 0x52, 0x10, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x73, 0x41, 0x64, 0x76, 0x65, - 0x72, 0x74, 0x69, 0x73, 0x65, 0x64, 0x88, 0x01, 0x01, 0x12, 0x2c, 0x0a, 0x0f, 0x72, 0x6f, 0x75, - 0x74, 0x65, 0x73, 0x5f, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x64, 0x18, 0x05, 0x20, 0x01, - 0x28, 0x04, 0x48, 0x04, 0x52, 0x0e, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x73, 0x52, 0x65, 0x63, 0x65, - 0x69, 0x76, 0x65, 0x64, 0x88, 0x01, 0x01, 0x12, 0x35, 0x0a, 0x14, 0x72, 0x6f, 0x75, 0x74, 0x65, - 0x5f, 0x77, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x73, 0x5f, 0x73, 0x65, 0x6e, 0x74, 0x18, - 0x06, 0x20, 0x01, 0x28, 0x04, 0x48, 0x05, 0x52, 0x12, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x57, 0x69, - 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x73, 0x53, 0x65, 0x6e, 0x74, 0x88, 0x01, 0x01, 0x12, 0x3d, - 0x0a, 0x18, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x5f, 0x77, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, - 0x73, 0x5f, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x04, - 0x48, 0x06, 0x52, 0x16, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x57, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, - 0x77, 0x73, 0x52, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x64, 0x88, 0x01, 0x01, 0x12, 0x26, 0x0a, - 0x0c, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x73, 0x5f, 0x73, 0x65, 0x6e, 0x74, 0x18, 0x08, 0x20, - 0x01, 0x28, 0x04, 0x48, 0x07, 0x52, 0x0b, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x73, 0x53, 0x65, - 0x6e, 0x74, 0x88, 0x01, 0x01, 0x12, 0x2e, 0x0a, 0x10, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x73, - 0x5f, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x64, 0x18, 0x09, 0x20, 0x01, 0x28, 0x04, 0x48, - 0x08, 0x52, 0x0f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x73, 0x52, 0x65, 0x63, 0x65, 0x69, 0x76, - 0x65, 0x64, 0x88, 0x01, 0x01, 0x12, 0x22, 0x0a, 0x0a, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x5f, 0x73, - 0x65, 0x6e, 0x74, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x04, 0x48, 0x09, 0x52, 0x09, 0x6f, 0x70, 0x65, - 0x6e, 0x73, 0x53, 0x65, 0x6e, 0x74, 0x88, 0x01, 0x01, 0x12, 0x2a, 0x0a, 0x0e, 0x6f, 0x70, 0x65, - 0x6e, 0x73, 0x5f, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x64, 0x18, 0x0b, 0x20, 0x01, 0x28, - 0x04, 0x48, 0x0a, 0x52, 0x0d, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x52, 0x65, 0x63, 0x65, 0x69, 0x76, - 0x65, 0x64, 0x88, 0x01, 0x01, 0x12, 0x2c, 0x0a, 0x0f, 0x6b, 0x65, 0x65, 0x70, 0x61, 0x6c, 0x69, - 0x76, 0x65, 0x73, 0x5f, 0x73, 0x65, 0x6e, 0x74, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x04, 0x48, 0x0b, - 0x52, 0x0e, 0x6b, 0x65, 0x65, 0x70, 0x61, 0x6c, 0x69, 0x76, 0x65, 0x73, 0x53, 0x65, 0x6e, 0x74, - 0x88, 0x01, 0x01, 0x12, 0x34, 0x0a, 0x13, 0x6b, 0x65, 0x65, 0x70, 0x61, 0x6c, 0x69, 0x76, 0x65, - 0x73, 0x5f, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x64, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x04, - 0x48, 0x0c, 0x52, 0x12, 0x6b, 0x65, 0x65, 0x70, 0x61, 0x6c, 0x69, 0x76, 0x65, 0x73, 0x52, 0x65, - 0x63, 0x65, 0x69, 0x76, 0x65, 0x64, 0x88, 0x01, 0x01, 0x12, 0x32, 0x0a, 0x12, 0x6e, 0x6f, 0x74, - 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x5f, 0x73, 0x65, 0x6e, 0x74, 0x18, - 0x0e, 0x20, 0x01, 0x28, 0x04, 0x48, 0x0d, 0x52, 0x11, 0x6e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x53, 0x65, 0x6e, 0x74, 0x88, 0x01, 0x01, 0x12, 0x3a, 0x0a, - 0x16, 0x6e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x5f, 0x72, - 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x64, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x04, 0x48, 0x0e, 0x52, - 0x15, 0x6e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, - 0x63, 0x65, 0x69, 0x76, 0x65, 0x64, 0x88, 0x01, 0x01, 0x12, 0x40, 0x0a, 0x09, 0x66, 0x73, 0x6d, - 0x5f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x10, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1e, 0x2e, 0x6f, - 0x74, 0x67, 0x2e, 0x42, 0x67, 0x70, 0x76, 0x34, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x2e, 0x46, - 0x73, 0x6d, 0x53, 0x74, 0x61, 0x74, 0x65, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x48, 0x0f, 0x52, 0x08, - 0x66, 0x73, 0x6d, 0x53, 0x74, 0x61, 0x74, 0x65, 0x88, 0x01, 0x01, 0x12, 0x32, 0x0a, 0x13, 0x65, - 0x6e, 0x64, 0x5f, 0x6f, 0x66, 0x5f, 0x72, 0x69, 0x62, 0x5f, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, - 0x65, 0x64, 0x18, 0x11, 0x20, 0x01, 0x28, 0x04, 0x48, 0x10, 0x52, 0x10, 0x65, 0x6e, 0x64, 0x4f, - 0x66, 0x52, 0x69, 0x62, 0x52, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x64, 0x88, 0x01, 0x01, 0x1a, - 0x39, 0x0a, 0x0c, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x22, + 0x61, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, 0x2d, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x46, 0x6c, 0x6f, 0x77, + 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x05, + 0x76, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0xd4, + 0x01, 0x0a, 0x12, 0x46, 0x6c, 0x6f, 0x77, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, + 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x40, 0x0a, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x23, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x46, 0x6c, 0x6f, 0x77, + 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x2e, 0x43, + 0x68, 0x6f, 0x69, 0x63, 0x65, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x48, 0x00, 0x52, 0x06, 0x63, 0x68, + 0x6f, 0x69, 0x63, 0x65, 0x88, 0x01, 0x01, 0x12, 0x15, 0x0a, 0x03, 0x68, 0x65, 0x78, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, 0x52, 0x03, 0x68, 0x65, 0x78, 0x88, 0x01, 0x01, 0x12, 0x15, + 0x0a, 0x03, 0x73, 0x74, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x48, 0x02, 0x52, 0x03, 0x73, + 0x74, 0x72, 0x88, 0x01, 0x01, 0x1a, 0x33, 0x0a, 0x06, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x22, 0x29, 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x0a, 0x0b, 0x75, 0x6e, 0x73, 0x70, 0x65, - 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x10, 0x00, 0x12, 0x06, 0x0a, 0x02, 0x75, 0x70, 0x10, 0x01, - 0x12, 0x08, 0x0a, 0x04, 0x64, 0x6f, 0x77, 0x6e, 0x10, 0x02, 0x1a, 0x76, 0x0a, 0x08, 0x46, 0x73, - 0x6d, 0x53, 0x74, 0x61, 0x74, 0x65, 0x22, 0x6a, 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0f, - 0x0a, 0x0b, 0x75, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x10, 0x00, 0x12, - 0x08, 0x0a, 0x04, 0x69, 0x64, 0x6c, 0x65, 0x10, 0x01, 0x12, 0x0b, 0x0a, 0x07, 0x63, 0x6f, 0x6e, - 0x6e, 0x65, 0x63, 0x74, 0x10, 0x02, 0x12, 0x0a, 0x0a, 0x06, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, - 0x10, 0x03, 0x12, 0x0c, 0x0a, 0x08, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x65, 0x6e, 0x74, 0x10, 0x04, - 0x12, 0x0f, 0x0a, 0x0b, 0x6f, 0x70, 0x65, 0x6e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x72, 0x6d, 0x10, - 0x05, 0x12, 0x0f, 0x0a, 0x0b, 0x65, 0x73, 0x74, 0x61, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x65, 0x64, - 0x10, 0x06, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x42, 0x10, 0x0a, 0x0e, 0x5f, - 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x42, 0x15, 0x0a, - 0x13, 0x5f, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x66, 0x6c, 0x61, 0x70, 0x5f, 0x63, - 0x6f, 0x75, 0x6e, 0x74, 0x42, 0x14, 0x0a, 0x12, 0x5f, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x73, 0x5f, - 0x61, 0x64, 0x76, 0x65, 0x72, 0x74, 0x69, 0x73, 0x65, 0x64, 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x72, - 0x6f, 0x75, 0x74, 0x65, 0x73, 0x5f, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x64, 0x42, 0x17, - 0x0a, 0x15, 0x5f, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x5f, 0x77, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, - 0x77, 0x73, 0x5f, 0x73, 0x65, 0x6e, 0x74, 0x42, 0x1b, 0x0a, 0x19, 0x5f, 0x72, 0x6f, 0x75, 0x74, - 0x65, 0x5f, 0x77, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x73, 0x5f, 0x72, 0x65, 0x63, 0x65, - 0x69, 0x76, 0x65, 0x64, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x73, - 0x5f, 0x73, 0x65, 0x6e, 0x74, 0x42, 0x13, 0x0a, 0x11, 0x5f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, - 0x73, 0x5f, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x64, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x6f, - 0x70, 0x65, 0x6e, 0x73, 0x5f, 0x73, 0x65, 0x6e, 0x74, 0x42, 0x11, 0x0a, 0x0f, 0x5f, 0x6f, 0x70, - 0x65, 0x6e, 0x73, 0x5f, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x64, 0x42, 0x12, 0x0a, 0x10, - 0x5f, 0x6b, 0x65, 0x65, 0x70, 0x61, 0x6c, 0x69, 0x76, 0x65, 0x73, 0x5f, 0x73, 0x65, 0x6e, 0x74, - 0x42, 0x16, 0x0a, 0x14, 0x5f, 0x6b, 0x65, 0x65, 0x70, 0x61, 0x6c, 0x69, 0x76, 0x65, 0x73, 0x5f, - 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x64, 0x42, 0x15, 0x0a, 0x13, 0x5f, 0x6e, 0x6f, 0x74, - 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x5f, 0x73, 0x65, 0x6e, 0x74, 0x42, - 0x19, 0x0a, 0x17, 0x5f, 0x6e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x73, 0x5f, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x64, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x66, - 0x73, 0x6d, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x42, 0x16, 0x0a, 0x14, 0x5f, 0x65, 0x6e, 0x64, - 0x5f, 0x6f, 0x66, 0x5f, 0x72, 0x69, 0x62, 0x5f, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x64, - 0x22, 0x91, 0x04, 0x0a, 0x13, 0x42, 0x67, 0x70, 0x76, 0x36, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, - 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x65, 0x65, 0x72, - 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x09, 0x70, 0x65, - 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x12, 0x4c, 0x0a, 0x0c, 0x63, 0x6f, 0x6c, 0x75, 0x6d, - 0x6e, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x29, 0x2e, - 0x6f, 0x74, 0x67, 0x2e, 0x42, 0x67, 0x70, 0x76, 0x36, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x43, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x4e, 0x61, - 0x6d, 0x65, 0x73, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x52, 0x0b, 0x63, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, - 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x1a, 0x8c, 0x03, 0x0a, 0x0b, 0x43, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, - 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x22, 0xfc, 0x02, 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0f, - 0x0a, 0x0b, 0x75, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x10, 0x00, 0x12, - 0x11, 0x0a, 0x0d, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x65, - 0x10, 0x01, 0x12, 0x16, 0x0a, 0x12, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x66, 0x6c, - 0x61, 0x70, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x10, 0x02, 0x12, 0x15, 0x0a, 0x11, 0x72, 0x6f, - 0x75, 0x74, 0x65, 0x73, 0x5f, 0x61, 0x64, 0x76, 0x65, 0x72, 0x74, 0x69, 0x73, 0x65, 0x64, 0x10, - 0x03, 0x12, 0x13, 0x0a, 0x0f, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x73, 0x5f, 0x72, 0x65, 0x63, 0x65, - 0x69, 0x76, 0x65, 0x64, 0x10, 0x04, 0x12, 0x18, 0x0a, 0x14, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x5f, - 0x77, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x73, 0x5f, 0x73, 0x65, 0x6e, 0x74, 0x10, 0x05, - 0x12, 0x1c, 0x0a, 0x18, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x5f, 0x77, 0x69, 0x74, 0x68, 0x64, 0x72, - 0x61, 0x77, 0x73, 0x5f, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x64, 0x10, 0x06, 0x12, 0x10, - 0x0a, 0x0c, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x73, 0x5f, 0x73, 0x65, 0x6e, 0x74, 0x10, 0x07, - 0x12, 0x14, 0x0a, 0x10, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x73, 0x5f, 0x72, 0x65, 0x63, 0x65, - 0x69, 0x76, 0x65, 0x64, 0x10, 0x08, 0x12, 0x0e, 0x0a, 0x0a, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x5f, - 0x73, 0x65, 0x6e, 0x74, 0x10, 0x09, 0x12, 0x12, 0x0a, 0x0e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x5f, - 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x64, 0x10, 0x0a, 0x12, 0x13, 0x0a, 0x0f, 0x6b, 0x65, - 0x65, 0x70, 0x61, 0x6c, 0x69, 0x76, 0x65, 0x73, 0x5f, 0x73, 0x65, 0x6e, 0x74, 0x10, 0x0b, 0x12, - 0x17, 0x0a, 0x13, 0x6b, 0x65, 0x65, 0x70, 0x61, 0x6c, 0x69, 0x76, 0x65, 0x73, 0x5f, 0x72, 0x65, - 0x63, 0x65, 0x69, 0x76, 0x65, 0x64, 0x10, 0x0c, 0x12, 0x16, 0x0a, 0x12, 0x6e, 0x6f, 0x74, 0x69, - 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x5f, 0x73, 0x65, 0x6e, 0x74, 0x10, 0x0d, - 0x12, 0x1a, 0x0a, 0x16, 0x6e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x73, 0x5f, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x64, 0x10, 0x0e, 0x12, 0x0d, 0x0a, 0x09, - 0x66, 0x73, 0x6d, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x10, 0x0f, 0x12, 0x17, 0x0a, 0x13, 0x65, - 0x6e, 0x64, 0x5f, 0x6f, 0x66, 0x5f, 0x72, 0x69, 0x62, 0x5f, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, - 0x65, 0x64, 0x10, 0x10, 0x22, 0x80, 0x0b, 0x0a, 0x0b, 0x42, 0x67, 0x70, 0x76, 0x36, 0x4d, 0x65, - 0x74, 0x72, 0x69, 0x63, 0x12, 0x17, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x48, 0x00, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, 0x4c, 0x0a, - 0x0d, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x0e, 0x32, 0x22, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x42, 0x67, 0x70, 0x76, 0x36, - 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x2e, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x53, 0x74, - 0x61, 0x74, 0x65, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x48, 0x01, 0x52, 0x0c, 0x73, 0x65, 0x73, 0x73, - 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x88, 0x01, 0x01, 0x12, 0x31, 0x0a, 0x12, 0x73, - 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x66, 0x6c, 0x61, 0x70, 0x5f, 0x63, 0x6f, 0x75, 0x6e, - 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x48, 0x02, 0x52, 0x10, 0x73, 0x65, 0x73, 0x73, 0x69, - 0x6f, 0x6e, 0x46, 0x6c, 0x61, 0x70, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x88, 0x01, 0x01, 0x12, 0x30, - 0x0a, 0x11, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x73, 0x5f, 0x61, 0x64, 0x76, 0x65, 0x72, 0x74, 0x69, - 0x73, 0x65, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, 0x48, 0x03, 0x52, 0x10, 0x72, 0x6f, 0x75, - 0x74, 0x65, 0x73, 0x41, 0x64, 0x76, 0x65, 0x72, 0x74, 0x69, 0x73, 0x65, 0x64, 0x88, 0x01, 0x01, - 0x12, 0x2c, 0x0a, 0x0f, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x73, 0x5f, 0x72, 0x65, 0x63, 0x65, 0x69, - 0x76, 0x65, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x04, 0x48, 0x04, 0x52, 0x0e, 0x72, 0x6f, 0x75, - 0x74, 0x65, 0x73, 0x52, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x64, 0x88, 0x01, 0x01, 0x12, 0x35, - 0x0a, 0x14, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x5f, 0x77, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, - 0x73, 0x5f, 0x73, 0x65, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x04, 0x48, 0x05, 0x52, 0x12, - 0x72, 0x6f, 0x75, 0x74, 0x65, 0x57, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x73, 0x53, 0x65, - 0x6e, 0x74, 0x88, 0x01, 0x01, 0x12, 0x3d, 0x0a, 0x18, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x5f, 0x77, + 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x10, 0x00, 0x12, 0x07, 0x0a, 0x03, 0x68, 0x65, 0x78, 0x10, + 0x01, 0x12, 0x07, 0x0a, 0x03, 0x73, 0x74, 0x72, 0x10, 0x02, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x63, + 0x68, 0x6f, 0x69, 0x63, 0x65, 0x42, 0x06, 0x0a, 0x04, 0x5f, 0x68, 0x65, 0x78, 0x42, 0x06, 0x0a, + 0x04, 0x5f, 0x73, 0x74, 0x72, 0x22, 0xa2, 0x01, 0x0a, 0x0f, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, + 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x31, 0x0a, 0x12, 0x66, 0x69, 0x72, + 0x73, 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x5f, 0x6e, 0x73, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x01, 0x48, 0x00, 0x52, 0x10, 0x66, 0x69, 0x72, 0x73, 0x74, 0x54, 0x69, + 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x4e, 0x73, 0x88, 0x01, 0x01, 0x12, 0x2f, 0x0a, 0x11, + 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x5f, 0x6e, + 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x01, 0x48, 0x01, 0x52, 0x0f, 0x6c, 0x61, 0x73, 0x74, 0x54, + 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x4e, 0x73, 0x88, 0x01, 0x01, 0x42, 0x15, 0x0a, + 0x13, 0x5f, 0x66, 0x69, 0x72, 0x73, 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, + 0x70, 0x5f, 0x6e, 0x73, 0x42, 0x14, 0x0a, 0x12, 0x5f, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x74, 0x69, + 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x5f, 0x6e, 0x73, 0x22, 0xa8, 0x01, 0x0a, 0x0d, 0x4d, + 0x65, 0x74, 0x72, 0x69, 0x63, 0x4c, 0x61, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x12, 0x22, 0x0a, 0x0a, + 0x6d, 0x69, 0x6e, 0x69, 0x6d, 0x75, 0x6d, 0x5f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x01, + 0x48, 0x00, 0x52, 0x09, 0x6d, 0x69, 0x6e, 0x69, 0x6d, 0x75, 0x6d, 0x4e, 0x73, 0x88, 0x01, 0x01, + 0x12, 0x22, 0x0a, 0x0a, 0x6d, 0x61, 0x78, 0x69, 0x6d, 0x75, 0x6d, 0x5f, 0x6e, 0x73, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x01, 0x48, 0x01, 0x52, 0x09, 0x6d, 0x61, 0x78, 0x69, 0x6d, 0x75, 0x6d, 0x4e, + 0x73, 0x88, 0x01, 0x01, 0x12, 0x22, 0x0a, 0x0a, 0x61, 0x76, 0x65, 0x72, 0x61, 0x67, 0x65, 0x5f, + 0x6e, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x01, 0x48, 0x02, 0x52, 0x09, 0x61, 0x76, 0x65, 0x72, + 0x61, 0x67, 0x65, 0x4e, 0x73, 0x88, 0x01, 0x01, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x6d, 0x69, 0x6e, + 0x69, 0x6d, 0x75, 0x6d, 0x5f, 0x6e, 0x73, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x6d, 0x61, 0x78, 0x69, + 0x6d, 0x75, 0x6d, 0x5f, 0x6e, 0x73, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x61, 0x76, 0x65, 0x72, 0x61, + 0x67, 0x65, 0x5f, 0x6e, 0x73, 0x22, 0x91, 0x04, 0x0a, 0x13, 0x42, 0x67, 0x70, 0x76, 0x34, 0x4d, + 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1d, 0x0a, + 0x0a, 0x70, 0x65, 0x65, 0x72, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, + 0x09, 0x52, 0x09, 0x70, 0x65, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x12, 0x4c, 0x0a, 0x0c, + 0x63, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, + 0x28, 0x0e, 0x32, 0x29, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x42, 0x67, 0x70, 0x76, 0x34, 0x4d, 0x65, + 0x74, 0x72, 0x69, 0x63, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x43, 0x6f, 0x6c, + 0x75, 0x6d, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x52, 0x0b, 0x63, + 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x1a, 0x8c, 0x03, 0x0a, 0x0b, 0x43, + 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x22, 0xfc, 0x02, 0x0a, 0x04, 0x45, + 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x0a, 0x0b, 0x75, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, + 0x65, 0x64, 0x10, 0x00, 0x12, 0x11, 0x0a, 0x0d, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x5f, + 0x73, 0x74, 0x61, 0x74, 0x65, 0x10, 0x01, 0x12, 0x16, 0x0a, 0x12, 0x73, 0x65, 0x73, 0x73, 0x69, + 0x6f, 0x6e, 0x5f, 0x66, 0x6c, 0x61, 0x70, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x10, 0x02, 0x12, + 0x15, 0x0a, 0x11, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x73, 0x5f, 0x61, 0x64, 0x76, 0x65, 0x72, 0x74, + 0x69, 0x73, 0x65, 0x64, 0x10, 0x03, 0x12, 0x13, 0x0a, 0x0f, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x73, + 0x5f, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x64, 0x10, 0x04, 0x12, 0x18, 0x0a, 0x14, 0x72, + 0x6f, 0x75, 0x74, 0x65, 0x5f, 0x77, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x73, 0x5f, 0x73, + 0x65, 0x6e, 0x74, 0x10, 0x05, 0x12, 0x1c, 0x0a, 0x18, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x5f, 0x77, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x73, 0x5f, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, - 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x04, 0x48, 0x06, 0x52, 0x16, 0x72, 0x6f, 0x75, 0x74, 0x65, - 0x57, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x73, 0x52, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, - 0x64, 0x88, 0x01, 0x01, 0x12, 0x26, 0x0a, 0x0c, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x73, 0x5f, - 0x73, 0x65, 0x6e, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x04, 0x48, 0x07, 0x52, 0x0b, 0x75, 0x70, - 0x64, 0x61, 0x74, 0x65, 0x73, 0x53, 0x65, 0x6e, 0x74, 0x88, 0x01, 0x01, 0x12, 0x2e, 0x0a, 0x10, + 0x64, 0x10, 0x06, 0x12, 0x10, 0x0a, 0x0c, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x73, 0x5f, 0x73, + 0x65, 0x6e, 0x74, 0x10, 0x07, 0x12, 0x14, 0x0a, 0x10, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x73, + 0x5f, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x64, 0x10, 0x08, 0x12, 0x0e, 0x0a, 0x0a, 0x6f, + 0x70, 0x65, 0x6e, 0x73, 0x5f, 0x73, 0x65, 0x6e, 0x74, 0x10, 0x09, 0x12, 0x12, 0x0a, 0x0e, 0x6f, + 0x70, 0x65, 0x6e, 0x73, 0x5f, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x64, 0x10, 0x0a, 0x12, + 0x13, 0x0a, 0x0f, 0x6b, 0x65, 0x65, 0x70, 0x61, 0x6c, 0x69, 0x76, 0x65, 0x73, 0x5f, 0x73, 0x65, + 0x6e, 0x74, 0x10, 0x0b, 0x12, 0x17, 0x0a, 0x13, 0x6b, 0x65, 0x65, 0x70, 0x61, 0x6c, 0x69, 0x76, + 0x65, 0x73, 0x5f, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x64, 0x10, 0x0c, 0x12, 0x16, 0x0a, + 0x12, 0x6e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x5f, 0x73, + 0x65, 0x6e, 0x74, 0x10, 0x0d, 0x12, 0x1a, 0x0a, 0x16, 0x6e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x5f, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x64, 0x10, + 0x0e, 0x12, 0x0d, 0x0a, 0x09, 0x66, 0x73, 0x6d, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x10, 0x0f, + 0x12, 0x17, 0x0a, 0x13, 0x65, 0x6e, 0x64, 0x5f, 0x6f, 0x66, 0x5f, 0x72, 0x69, 0x62, 0x5f, 0x72, + 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x64, 0x10, 0x10, 0x22, 0x80, 0x0b, 0x0a, 0x0b, 0x42, 0x67, + 0x70, 0x76, 0x34, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x12, 0x17, 0x0a, 0x04, 0x6e, 0x61, 0x6d, + 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x88, + 0x01, 0x01, 0x12, 0x4c, 0x0a, 0x0d, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x74, + 0x61, 0x74, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x22, 0x2e, 0x6f, 0x74, 0x67, 0x2e, + 0x42, 0x67, 0x70, 0x76, 0x34, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x2e, 0x53, 0x65, 0x73, 0x73, + 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x48, 0x01, 0x52, + 0x0c, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x88, 0x01, 0x01, + 0x12, 0x31, 0x0a, 0x12, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x66, 0x6c, 0x61, 0x70, + 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x48, 0x02, 0x52, 0x10, + 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x46, 0x6c, 0x61, 0x70, 0x43, 0x6f, 0x75, 0x6e, 0x74, + 0x88, 0x01, 0x01, 0x12, 0x30, 0x0a, 0x11, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x73, 0x5f, 0x61, 0x64, + 0x76, 0x65, 0x72, 0x74, 0x69, 0x73, 0x65, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, 0x48, 0x03, + 0x52, 0x10, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x73, 0x41, 0x64, 0x76, 0x65, 0x72, 0x74, 0x69, 0x73, + 0x65, 0x64, 0x88, 0x01, 0x01, 0x12, 0x2c, 0x0a, 0x0f, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x73, 0x5f, + 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x04, 0x48, 0x04, + 0x52, 0x0e, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x73, 0x52, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x64, + 0x88, 0x01, 0x01, 0x12, 0x35, 0x0a, 0x14, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x5f, 0x77, 0x69, 0x74, + 0x68, 0x64, 0x72, 0x61, 0x77, 0x73, 0x5f, 0x73, 0x65, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, + 0x04, 0x48, 0x05, 0x52, 0x12, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x57, 0x69, 0x74, 0x68, 0x64, 0x72, + 0x61, 0x77, 0x73, 0x53, 0x65, 0x6e, 0x74, 0x88, 0x01, 0x01, 0x12, 0x3d, 0x0a, 0x18, 0x72, 0x6f, + 0x75, 0x74, 0x65, 0x5f, 0x77, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x73, 0x5f, 0x72, 0x65, + 0x63, 0x65, 0x69, 0x76, 0x65, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x04, 0x48, 0x06, 0x52, 0x16, + 0x72, 0x6f, 0x75, 0x74, 0x65, 0x57, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x73, 0x52, 0x65, + 0x63, 0x65, 0x69, 0x76, 0x65, 0x64, 0x88, 0x01, 0x01, 0x12, 0x26, 0x0a, 0x0c, 0x75, 0x70, 0x64, + 0x61, 0x74, 0x65, 0x73, 0x5f, 0x73, 0x65, 0x6e, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x04, 0x48, + 0x07, 0x52, 0x0b, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x73, 0x53, 0x65, 0x6e, 0x74, 0x88, 0x01, + 0x01, 0x12, 0x2e, 0x0a, 0x10, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x73, 0x5f, 0x72, 0x65, 0x63, + 0x65, 0x69, 0x76, 0x65, 0x64, 0x18, 0x09, 0x20, 0x01, 0x28, 0x04, 0x48, 0x08, 0x52, 0x0f, 0x75, + 0x70, 0x64, 0x61, 0x74, 0x65, 0x73, 0x52, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x64, 0x88, 0x01, + 0x01, 0x12, 0x22, 0x0a, 0x0a, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x5f, 0x73, 0x65, 0x6e, 0x74, 0x18, + 0x0a, 0x20, 0x01, 0x28, 0x04, 0x48, 0x09, 0x52, 0x09, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x53, 0x65, + 0x6e, 0x74, 0x88, 0x01, 0x01, 0x12, 0x2a, 0x0a, 0x0e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x5f, 0x72, + 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x64, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x04, 0x48, 0x0a, 0x52, + 0x0d, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x52, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x64, 0x88, 0x01, + 0x01, 0x12, 0x2c, 0x0a, 0x0f, 0x6b, 0x65, 0x65, 0x70, 0x61, 0x6c, 0x69, 0x76, 0x65, 0x73, 0x5f, + 0x73, 0x65, 0x6e, 0x74, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x04, 0x48, 0x0b, 0x52, 0x0e, 0x6b, 0x65, + 0x65, 0x70, 0x61, 0x6c, 0x69, 0x76, 0x65, 0x73, 0x53, 0x65, 0x6e, 0x74, 0x88, 0x01, 0x01, 0x12, + 0x34, 0x0a, 0x13, 0x6b, 0x65, 0x65, 0x70, 0x61, 0x6c, 0x69, 0x76, 0x65, 0x73, 0x5f, 0x72, 0x65, + 0x63, 0x65, 0x69, 0x76, 0x65, 0x64, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x04, 0x48, 0x0c, 0x52, 0x12, + 0x6b, 0x65, 0x65, 0x70, 0x61, 0x6c, 0x69, 0x76, 0x65, 0x73, 0x52, 0x65, 0x63, 0x65, 0x69, 0x76, + 0x65, 0x64, 0x88, 0x01, 0x01, 0x12, 0x32, 0x0a, 0x12, 0x6e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x5f, 0x73, 0x65, 0x6e, 0x74, 0x18, 0x0e, 0x20, 0x01, 0x28, + 0x04, 0x48, 0x0d, 0x52, 0x11, 0x6e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x73, 0x53, 0x65, 0x6e, 0x74, 0x88, 0x01, 0x01, 0x12, 0x3a, 0x0a, 0x16, 0x6e, 0x6f, 0x74, + 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x5f, 0x72, 0x65, 0x63, 0x65, 0x69, + 0x76, 0x65, 0x64, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x04, 0x48, 0x0e, 0x52, 0x15, 0x6e, 0x6f, 0x74, + 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x63, 0x65, 0x69, 0x76, + 0x65, 0x64, 0x88, 0x01, 0x01, 0x12, 0x40, 0x0a, 0x09, 0x66, 0x73, 0x6d, 0x5f, 0x73, 0x74, 0x61, + 0x74, 0x65, 0x18, 0x10, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1e, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x42, + 0x67, 0x70, 0x76, 0x34, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x2e, 0x46, 0x73, 0x6d, 0x53, 0x74, + 0x61, 0x74, 0x65, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x48, 0x0f, 0x52, 0x08, 0x66, 0x73, 0x6d, 0x53, + 0x74, 0x61, 0x74, 0x65, 0x88, 0x01, 0x01, 0x12, 0x32, 0x0a, 0x13, 0x65, 0x6e, 0x64, 0x5f, 0x6f, + 0x66, 0x5f, 0x72, 0x69, 0x62, 0x5f, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x64, 0x18, 0x11, + 0x20, 0x01, 0x28, 0x04, 0x48, 0x10, 0x52, 0x10, 0x65, 0x6e, 0x64, 0x4f, 0x66, 0x52, 0x69, 0x62, + 0x52, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x64, 0x88, 0x01, 0x01, 0x1a, 0x39, 0x0a, 0x0c, 0x53, + 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x22, 0x29, 0x0a, 0x04, 0x45, + 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x0a, 0x0b, 0x75, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, + 0x65, 0x64, 0x10, 0x00, 0x12, 0x06, 0x0a, 0x02, 0x75, 0x70, 0x10, 0x01, 0x12, 0x08, 0x0a, 0x04, + 0x64, 0x6f, 0x77, 0x6e, 0x10, 0x02, 0x1a, 0x76, 0x0a, 0x08, 0x46, 0x73, 0x6d, 0x53, 0x74, 0x61, + 0x74, 0x65, 0x22, 0x6a, 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x0a, 0x0b, 0x75, 0x6e, + 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x10, 0x00, 0x12, 0x08, 0x0a, 0x04, 0x69, + 0x64, 0x6c, 0x65, 0x10, 0x01, 0x12, 0x0b, 0x0a, 0x07, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, + 0x10, 0x02, 0x12, 0x0a, 0x0a, 0x06, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x10, 0x03, 0x12, 0x0c, + 0x0a, 0x08, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x65, 0x6e, 0x74, 0x10, 0x04, 0x12, 0x0f, 0x0a, 0x0b, + 0x6f, 0x70, 0x65, 0x6e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x72, 0x6d, 0x10, 0x05, 0x12, 0x0f, 0x0a, + 0x0b, 0x65, 0x73, 0x74, 0x61, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x65, 0x64, 0x10, 0x06, 0x42, 0x07, + 0x0a, 0x05, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x73, 0x65, 0x73, 0x73, + 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x42, 0x15, 0x0a, 0x13, 0x5f, 0x73, 0x65, + 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x66, 0x6c, 0x61, 0x70, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, + 0x42, 0x14, 0x0a, 0x12, 0x5f, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x73, 0x5f, 0x61, 0x64, 0x76, 0x65, + 0x72, 0x74, 0x69, 0x73, 0x65, 0x64, 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x72, 0x6f, 0x75, 0x74, 0x65, + 0x73, 0x5f, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x64, 0x42, 0x17, 0x0a, 0x15, 0x5f, 0x72, + 0x6f, 0x75, 0x74, 0x65, 0x5f, 0x77, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x73, 0x5f, 0x73, + 0x65, 0x6e, 0x74, 0x42, 0x1b, 0x0a, 0x19, 0x5f, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x5f, 0x77, 0x69, + 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x73, 0x5f, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x64, + 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x73, 0x5f, 0x73, 0x65, 0x6e, + 0x74, 0x42, 0x13, 0x0a, 0x11, 0x5f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x73, 0x5f, 0x72, 0x65, + 0x63, 0x65, 0x69, 0x76, 0x65, 0x64, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x6f, 0x70, 0x65, 0x6e, 0x73, + 0x5f, 0x73, 0x65, 0x6e, 0x74, 0x42, 0x11, 0x0a, 0x0f, 0x5f, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x5f, + 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x64, 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x6b, 0x65, 0x65, + 0x70, 0x61, 0x6c, 0x69, 0x76, 0x65, 0x73, 0x5f, 0x73, 0x65, 0x6e, 0x74, 0x42, 0x16, 0x0a, 0x14, + 0x5f, 0x6b, 0x65, 0x65, 0x70, 0x61, 0x6c, 0x69, 0x76, 0x65, 0x73, 0x5f, 0x72, 0x65, 0x63, 0x65, + 0x69, 0x76, 0x65, 0x64, 0x42, 0x15, 0x0a, 0x13, 0x5f, 0x6e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x5f, 0x73, 0x65, 0x6e, 0x74, 0x42, 0x19, 0x0a, 0x17, 0x5f, + 0x6e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x5f, 0x72, 0x65, + 0x63, 0x65, 0x69, 0x76, 0x65, 0x64, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x66, 0x73, 0x6d, 0x5f, 0x73, + 0x74, 0x61, 0x74, 0x65, 0x42, 0x16, 0x0a, 0x14, 0x5f, 0x65, 0x6e, 0x64, 0x5f, 0x6f, 0x66, 0x5f, + 0x72, 0x69, 0x62, 0x5f, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x64, 0x22, 0x91, 0x04, 0x0a, + 0x13, 0x42, 0x67, 0x70, 0x76, 0x36, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x65, 0x65, 0x72, 0x5f, 0x6e, 0x61, 0x6d, + 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x09, 0x70, 0x65, 0x65, 0x72, 0x4e, 0x61, + 0x6d, 0x65, 0x73, 0x12, 0x4c, 0x0a, 0x0c, 0x63, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x5f, 0x6e, 0x61, + 0x6d, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x29, 0x2e, 0x6f, 0x74, 0x67, 0x2e, + 0x42, 0x67, 0x70, 0x76, 0x36, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x2e, 0x43, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x2e, + 0x45, 0x6e, 0x75, 0x6d, 0x52, 0x0b, 0x63, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x4e, 0x61, 0x6d, 0x65, + 0x73, 0x1a, 0x8c, 0x03, 0x0a, 0x0b, 0x43, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x4e, 0x61, 0x6d, 0x65, + 0x73, 0x22, 0xfc, 0x02, 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x0a, 0x0b, 0x75, 0x6e, + 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x10, 0x00, 0x12, 0x11, 0x0a, 0x0d, 0x73, + 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x10, 0x01, 0x12, 0x16, + 0x0a, 0x12, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x66, 0x6c, 0x61, 0x70, 0x5f, 0x63, + 0x6f, 0x75, 0x6e, 0x74, 0x10, 0x02, 0x12, 0x15, 0x0a, 0x11, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x73, + 0x5f, 0x61, 0x64, 0x76, 0x65, 0x72, 0x74, 0x69, 0x73, 0x65, 0x64, 0x10, 0x03, 0x12, 0x13, 0x0a, + 0x0f, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x73, 0x5f, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x64, + 0x10, 0x04, 0x12, 0x18, 0x0a, 0x14, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x5f, 0x77, 0x69, 0x74, 0x68, + 0x64, 0x72, 0x61, 0x77, 0x73, 0x5f, 0x73, 0x65, 0x6e, 0x74, 0x10, 0x05, 0x12, 0x1c, 0x0a, 0x18, + 0x72, 0x6f, 0x75, 0x74, 0x65, 0x5f, 0x77, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x73, 0x5f, + 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x64, 0x10, 0x06, 0x12, 0x10, 0x0a, 0x0c, 0x75, 0x70, + 0x64, 0x61, 0x74, 0x65, 0x73, 0x5f, 0x73, 0x65, 0x6e, 0x74, 0x10, 0x07, 0x12, 0x14, 0x0a, 0x10, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x73, 0x5f, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x64, - 0x18, 0x09, 0x20, 0x01, 0x28, 0x04, 0x48, 0x08, 0x52, 0x0f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, - 0x73, 0x52, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x64, 0x88, 0x01, 0x01, 0x12, 0x22, 0x0a, 0x0a, - 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x5f, 0x73, 0x65, 0x6e, 0x74, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x04, - 0x48, 0x09, 0x52, 0x09, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x53, 0x65, 0x6e, 0x74, 0x88, 0x01, 0x01, - 0x12, 0x2a, 0x0a, 0x0e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x5f, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, - 0x65, 0x64, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x04, 0x48, 0x0a, 0x52, 0x0d, 0x6f, 0x70, 0x65, 0x6e, - 0x73, 0x52, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x64, 0x88, 0x01, 0x01, 0x12, 0x2c, 0x0a, 0x0f, - 0x6b, 0x65, 0x65, 0x70, 0x61, 0x6c, 0x69, 0x76, 0x65, 0x73, 0x5f, 0x73, 0x65, 0x6e, 0x74, 0x18, - 0x0c, 0x20, 0x01, 0x28, 0x04, 0x48, 0x0b, 0x52, 0x0e, 0x6b, 0x65, 0x65, 0x70, 0x61, 0x6c, 0x69, - 0x76, 0x65, 0x73, 0x53, 0x65, 0x6e, 0x74, 0x88, 0x01, 0x01, 0x12, 0x34, 0x0a, 0x13, 0x6b, 0x65, - 0x65, 0x70, 0x61, 0x6c, 0x69, 0x76, 0x65, 0x73, 0x5f, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, - 0x64, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x04, 0x48, 0x0c, 0x52, 0x12, 0x6b, 0x65, 0x65, 0x70, 0x61, - 0x6c, 0x69, 0x76, 0x65, 0x73, 0x52, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x64, 0x88, 0x01, 0x01, - 0x12, 0x32, 0x0a, 0x12, 0x6e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x73, 0x5f, 0x73, 0x65, 0x6e, 0x74, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x04, 0x48, 0x0d, 0x52, 0x11, - 0x6e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x53, 0x65, 0x6e, - 0x74, 0x88, 0x01, 0x01, 0x12, 0x3a, 0x0a, 0x16, 0x6e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x5f, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x64, 0x18, 0x0f, - 0x20, 0x01, 0x28, 0x04, 0x48, 0x0e, 0x52, 0x15, 0x6e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x64, 0x88, 0x01, 0x01, - 0x12, 0x40, 0x0a, 0x09, 0x66, 0x73, 0x6d, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x10, 0x20, - 0x01, 0x28, 0x0e, 0x32, 0x1e, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x42, 0x67, 0x70, 0x76, 0x36, 0x4d, - 0x65, 0x74, 0x72, 0x69, 0x63, 0x2e, 0x46, 0x73, 0x6d, 0x53, 0x74, 0x61, 0x74, 0x65, 0x2e, 0x45, - 0x6e, 0x75, 0x6d, 0x48, 0x0f, 0x52, 0x08, 0x66, 0x73, 0x6d, 0x53, 0x74, 0x61, 0x74, 0x65, 0x88, - 0x01, 0x01, 0x12, 0x32, 0x0a, 0x13, 0x65, 0x6e, 0x64, 0x5f, 0x6f, 0x66, 0x5f, 0x72, 0x69, 0x62, - 0x5f, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x64, 0x18, 0x11, 0x20, 0x01, 0x28, 0x04, 0x48, - 0x10, 0x52, 0x10, 0x65, 0x6e, 0x64, 0x4f, 0x66, 0x52, 0x69, 0x62, 0x52, 0x65, 0x63, 0x65, 0x69, - 0x76, 0x65, 0x64, 0x88, 0x01, 0x01, 0x1a, 0x39, 0x0a, 0x0c, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, - 0x6e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x22, 0x29, 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0f, - 0x0a, 0x0b, 0x75, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x10, 0x00, 0x12, - 0x06, 0x0a, 0x02, 0x75, 0x70, 0x10, 0x01, 0x12, 0x08, 0x0a, 0x04, 0x64, 0x6f, 0x77, 0x6e, 0x10, - 0x02, 0x1a, 0x76, 0x0a, 0x08, 0x46, 0x73, 0x6d, 0x53, 0x74, 0x61, 0x74, 0x65, 0x22, 0x6a, 0x0a, - 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x0a, 0x0b, 0x75, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, - 0x66, 0x69, 0x65, 0x64, 0x10, 0x00, 0x12, 0x08, 0x0a, 0x04, 0x69, 0x64, 0x6c, 0x65, 0x10, 0x01, - 0x12, 0x0b, 0x0a, 0x07, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x10, 0x02, 0x12, 0x0a, 0x0a, - 0x06, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x10, 0x03, 0x12, 0x0c, 0x0a, 0x08, 0x6f, 0x70, 0x65, - 0x6e, 0x73, 0x65, 0x6e, 0x74, 0x10, 0x04, 0x12, 0x0f, 0x0a, 0x0b, 0x6f, 0x70, 0x65, 0x6e, 0x63, - 0x6f, 0x6e, 0x66, 0x69, 0x72, 0x6d, 0x10, 0x05, 0x12, 0x0f, 0x0a, 0x0b, 0x65, 0x73, 0x74, 0x61, - 0x62, 0x6c, 0x69, 0x73, 0x68, 0x65, 0x64, 0x10, 0x06, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x6e, 0x61, - 0x6d, 0x65, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x73, - 0x74, 0x61, 0x74, 0x65, 0x42, 0x15, 0x0a, 0x13, 0x5f, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, - 0x5f, 0x66, 0x6c, 0x61, 0x70, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x42, 0x14, 0x0a, 0x12, 0x5f, - 0x72, 0x6f, 0x75, 0x74, 0x65, 0x73, 0x5f, 0x61, 0x64, 0x76, 0x65, 0x72, 0x74, 0x69, 0x73, 0x65, - 0x64, 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x73, 0x5f, 0x72, 0x65, 0x63, - 0x65, 0x69, 0x76, 0x65, 0x64, 0x42, 0x17, 0x0a, 0x15, 0x5f, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x5f, - 0x77, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x73, 0x5f, 0x73, 0x65, 0x6e, 0x74, 0x42, 0x1b, - 0x0a, 0x19, 0x5f, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x5f, 0x77, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, - 0x77, 0x73, 0x5f, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x64, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, - 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x73, 0x5f, 0x73, 0x65, 0x6e, 0x74, 0x42, 0x13, 0x0a, 0x11, - 0x5f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x73, 0x5f, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, - 0x64, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x5f, 0x73, 0x65, 0x6e, 0x74, - 0x42, 0x11, 0x0a, 0x0f, 0x5f, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x5f, 0x72, 0x65, 0x63, 0x65, 0x69, - 0x76, 0x65, 0x64, 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x6b, 0x65, 0x65, 0x70, 0x61, 0x6c, 0x69, 0x76, - 0x65, 0x73, 0x5f, 0x73, 0x65, 0x6e, 0x74, 0x42, 0x16, 0x0a, 0x14, 0x5f, 0x6b, 0x65, 0x65, 0x70, - 0x61, 0x6c, 0x69, 0x76, 0x65, 0x73, 0x5f, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x64, 0x42, - 0x15, 0x0a, 0x13, 0x5f, 0x6e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x73, 0x5f, 0x73, 0x65, 0x6e, 0x74, 0x42, 0x19, 0x0a, 0x17, 0x5f, 0x6e, 0x6f, 0x74, 0x69, 0x66, - 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x5f, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, - 0x64, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x66, 0x73, 0x6d, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x42, - 0x16, 0x0a, 0x14, 0x5f, 0x65, 0x6e, 0x64, 0x5f, 0x6f, 0x66, 0x5f, 0x72, 0x69, 0x62, 0x5f, 0x72, - 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x64, 0x22, 0xac, 0x06, 0x0a, 0x12, 0x49, 0x73, 0x69, 0x73, - 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x21, - 0x0a, 0x0c, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x18, 0x01, - 0x20, 0x03, 0x28, 0x09, 0x52, 0x0b, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, - 0x73, 0x12, 0x4b, 0x0a, 0x0c, 0x63, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x5f, 0x6e, 0x61, 0x6d, 0x65, - 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x28, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x49, 0x73, - 0x69, 0x73, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x2e, 0x43, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x2e, 0x45, 0x6e, 0x75, - 0x6d, 0x52, 0x0b, 0x63, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x1a, 0xa5, - 0x05, 0x0a, 0x0b, 0x43, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x22, 0x95, - 0x05, 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x0a, 0x0b, 0x75, 0x6e, 0x73, 0x70, 0x65, - 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x10, 0x00, 0x12, 0x12, 0x0a, 0x0e, 0x6c, 0x31, 0x5f, 0x73, - 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x5f, 0x75, 0x70, 0x10, 0x01, 0x12, 0x13, 0x0a, 0x0f, - 0x6c, 0x31, 0x5f, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x66, 0x6c, 0x61, 0x70, 0x10, - 0x02, 0x12, 0x14, 0x0a, 0x10, 0x6c, 0x31, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, - 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x10, 0x03, 0x12, 0x1c, 0x0a, 0x18, 0x6c, 0x31, 0x5f, 0x62, 0x72, - 0x6f, 0x61, 0x64, 0x63, 0x61, 0x73, 0x74, 0x5f, 0x68, 0x65, 0x6c, 0x6c, 0x6f, 0x73, 0x5f, 0x73, - 0x65, 0x6e, 0x74, 0x10, 0x04, 0x12, 0x20, 0x0a, 0x1c, 0x6c, 0x31, 0x5f, 0x62, 0x72, 0x6f, 0x61, - 0x64, 0x63, 0x61, 0x73, 0x74, 0x5f, 0x68, 0x65, 0x6c, 0x6c, 0x6f, 0x73, 0x5f, 0x72, 0x65, 0x63, - 0x65, 0x69, 0x76, 0x65, 0x64, 0x10, 0x05, 0x12, 0x21, 0x0a, 0x1d, 0x6c, 0x31, 0x5f, 0x70, 0x6f, - 0x69, 0x6e, 0x74, 0x5f, 0x74, 0x6f, 0x5f, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x5f, 0x68, 0x65, 0x6c, - 0x6c, 0x6f, 0x73, 0x5f, 0x73, 0x65, 0x6e, 0x74, 0x10, 0x06, 0x12, 0x25, 0x0a, 0x21, 0x6c, 0x31, - 0x5f, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x5f, 0x74, 0x6f, 0x5f, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x5f, - 0x68, 0x65, 0x6c, 0x6c, 0x6f, 0x73, 0x5f, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x64, 0x10, - 0x07, 0x12, 0x10, 0x0a, 0x0c, 0x6c, 0x31, 0x5f, 0x70, 0x73, 0x6e, 0x70, 0x5f, 0x73, 0x65, 0x6e, - 0x74, 0x10, 0x08, 0x12, 0x14, 0x0a, 0x10, 0x6c, 0x31, 0x5f, 0x70, 0x73, 0x6e, 0x70, 0x5f, 0x72, - 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x64, 0x10, 0x09, 0x12, 0x10, 0x0a, 0x0c, 0x6c, 0x31, 0x5f, - 0x63, 0x73, 0x6e, 0x70, 0x5f, 0x73, 0x65, 0x6e, 0x74, 0x10, 0x0a, 0x12, 0x14, 0x0a, 0x10, 0x6c, - 0x31, 0x5f, 0x63, 0x73, 0x6e, 0x70, 0x5f, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x64, 0x10, - 0x0b, 0x12, 0x0f, 0x0a, 0x0b, 0x6c, 0x31, 0x5f, 0x6c, 0x73, 0x70, 0x5f, 0x73, 0x65, 0x6e, 0x74, - 0x10, 0x0c, 0x12, 0x13, 0x0a, 0x0f, 0x6c, 0x31, 0x5f, 0x6c, 0x73, 0x70, 0x5f, 0x72, 0x65, 0x63, - 0x65, 0x69, 0x76, 0x65, 0x64, 0x10, 0x0d, 0x12, 0x12, 0x0a, 0x0e, 0x6c, 0x32, 0x5f, 0x73, 0x65, - 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x5f, 0x75, 0x70, 0x10, 0x0e, 0x12, 0x13, 0x0a, 0x0f, 0x6c, - 0x32, 0x5f, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x66, 0x6c, 0x61, 0x70, 0x10, 0x0f, - 0x12, 0x14, 0x0a, 0x10, 0x6c, 0x32, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x5f, - 0x73, 0x69, 0x7a, 0x65, 0x10, 0x10, 0x12, 0x1c, 0x0a, 0x18, 0x6c, 0x32, 0x5f, 0x62, 0x72, 0x6f, - 0x61, 0x64, 0x63, 0x61, 0x73, 0x74, 0x5f, 0x68, 0x65, 0x6c, 0x6c, 0x6f, 0x73, 0x5f, 0x73, 0x65, - 0x6e, 0x74, 0x10, 0x11, 0x12, 0x20, 0x0a, 0x1c, 0x6c, 0x32, 0x5f, 0x62, 0x72, 0x6f, 0x61, 0x64, - 0x63, 0x61, 0x73, 0x74, 0x5f, 0x68, 0x65, 0x6c, 0x6c, 0x6f, 0x73, 0x5f, 0x72, 0x65, 0x63, 0x65, - 0x69, 0x76, 0x65, 0x64, 0x10, 0x12, 0x12, 0x21, 0x0a, 0x1d, 0x6c, 0x32, 0x5f, 0x70, 0x6f, 0x69, + 0x10, 0x08, 0x12, 0x0e, 0x0a, 0x0a, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x5f, 0x73, 0x65, 0x6e, 0x74, + 0x10, 0x09, 0x12, 0x12, 0x0a, 0x0e, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x5f, 0x72, 0x65, 0x63, 0x65, + 0x69, 0x76, 0x65, 0x64, 0x10, 0x0a, 0x12, 0x13, 0x0a, 0x0f, 0x6b, 0x65, 0x65, 0x70, 0x61, 0x6c, + 0x69, 0x76, 0x65, 0x73, 0x5f, 0x73, 0x65, 0x6e, 0x74, 0x10, 0x0b, 0x12, 0x17, 0x0a, 0x13, 0x6b, + 0x65, 0x65, 0x70, 0x61, 0x6c, 0x69, 0x76, 0x65, 0x73, 0x5f, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, + 0x65, 0x64, 0x10, 0x0c, 0x12, 0x16, 0x0a, 0x12, 0x6e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x5f, 0x73, 0x65, 0x6e, 0x74, 0x10, 0x0d, 0x12, 0x1a, 0x0a, 0x16, + 0x6e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x5f, 0x72, 0x65, + 0x63, 0x65, 0x69, 0x76, 0x65, 0x64, 0x10, 0x0e, 0x12, 0x0d, 0x0a, 0x09, 0x66, 0x73, 0x6d, 0x5f, + 0x73, 0x74, 0x61, 0x74, 0x65, 0x10, 0x0f, 0x12, 0x17, 0x0a, 0x13, 0x65, 0x6e, 0x64, 0x5f, 0x6f, + 0x66, 0x5f, 0x72, 0x69, 0x62, 0x5f, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x64, 0x10, 0x10, + 0x22, 0x80, 0x0b, 0x0a, 0x0b, 0x42, 0x67, 0x70, 0x76, 0x36, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, + 0x12, 0x17, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, + 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, 0x4c, 0x0a, 0x0d, 0x73, 0x65, 0x73, + 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, + 0x32, 0x22, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x42, 0x67, 0x70, 0x76, 0x36, 0x4d, 0x65, 0x74, 0x72, + 0x69, 0x63, 0x2e, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x2e, + 0x45, 0x6e, 0x75, 0x6d, 0x48, 0x01, 0x52, 0x0c, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x53, + 0x74, 0x61, 0x74, 0x65, 0x88, 0x01, 0x01, 0x12, 0x31, 0x0a, 0x12, 0x73, 0x65, 0x73, 0x73, 0x69, + 0x6f, 0x6e, 0x5f, 0x66, 0x6c, 0x61, 0x70, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x04, 0x48, 0x02, 0x52, 0x10, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x46, 0x6c, + 0x61, 0x70, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x88, 0x01, 0x01, 0x12, 0x30, 0x0a, 0x11, 0x72, 0x6f, + 0x75, 0x74, 0x65, 0x73, 0x5f, 0x61, 0x64, 0x76, 0x65, 0x72, 0x74, 0x69, 0x73, 0x65, 0x64, 0x18, + 0x04, 0x20, 0x01, 0x28, 0x04, 0x48, 0x03, 0x52, 0x10, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x73, 0x41, + 0x64, 0x76, 0x65, 0x72, 0x74, 0x69, 0x73, 0x65, 0x64, 0x88, 0x01, 0x01, 0x12, 0x2c, 0x0a, 0x0f, + 0x72, 0x6f, 0x75, 0x74, 0x65, 0x73, 0x5f, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x64, 0x18, + 0x05, 0x20, 0x01, 0x28, 0x04, 0x48, 0x04, 0x52, 0x0e, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x73, 0x52, + 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x64, 0x88, 0x01, 0x01, 0x12, 0x35, 0x0a, 0x14, 0x72, 0x6f, + 0x75, 0x74, 0x65, 0x5f, 0x77, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x73, 0x5f, 0x73, 0x65, + 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x04, 0x48, 0x05, 0x52, 0x12, 0x72, 0x6f, 0x75, 0x74, + 0x65, 0x57, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x73, 0x53, 0x65, 0x6e, 0x74, 0x88, 0x01, + 0x01, 0x12, 0x3d, 0x0a, 0x18, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x5f, 0x77, 0x69, 0x74, 0x68, 0x64, + 0x72, 0x61, 0x77, 0x73, 0x5f, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x64, 0x18, 0x07, 0x20, + 0x01, 0x28, 0x04, 0x48, 0x06, 0x52, 0x16, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x57, 0x69, 0x74, 0x68, + 0x64, 0x72, 0x61, 0x77, 0x73, 0x52, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x64, 0x88, 0x01, 0x01, + 0x12, 0x26, 0x0a, 0x0c, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x73, 0x5f, 0x73, 0x65, 0x6e, 0x74, + 0x18, 0x08, 0x20, 0x01, 0x28, 0x04, 0x48, 0x07, 0x52, 0x0b, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, + 0x73, 0x53, 0x65, 0x6e, 0x74, 0x88, 0x01, 0x01, 0x12, 0x2e, 0x0a, 0x10, 0x75, 0x70, 0x64, 0x61, + 0x74, 0x65, 0x73, 0x5f, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x64, 0x18, 0x09, 0x20, 0x01, + 0x28, 0x04, 0x48, 0x08, 0x52, 0x0f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x73, 0x52, 0x65, 0x63, + 0x65, 0x69, 0x76, 0x65, 0x64, 0x88, 0x01, 0x01, 0x12, 0x22, 0x0a, 0x0a, 0x6f, 0x70, 0x65, 0x6e, + 0x73, 0x5f, 0x73, 0x65, 0x6e, 0x74, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x04, 0x48, 0x09, 0x52, 0x09, + 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x53, 0x65, 0x6e, 0x74, 0x88, 0x01, 0x01, 0x12, 0x2a, 0x0a, 0x0e, + 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x5f, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x64, 0x18, 0x0b, + 0x20, 0x01, 0x28, 0x04, 0x48, 0x0a, 0x52, 0x0d, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x52, 0x65, 0x63, + 0x65, 0x69, 0x76, 0x65, 0x64, 0x88, 0x01, 0x01, 0x12, 0x2c, 0x0a, 0x0f, 0x6b, 0x65, 0x65, 0x70, + 0x61, 0x6c, 0x69, 0x76, 0x65, 0x73, 0x5f, 0x73, 0x65, 0x6e, 0x74, 0x18, 0x0c, 0x20, 0x01, 0x28, + 0x04, 0x48, 0x0b, 0x52, 0x0e, 0x6b, 0x65, 0x65, 0x70, 0x61, 0x6c, 0x69, 0x76, 0x65, 0x73, 0x53, + 0x65, 0x6e, 0x74, 0x88, 0x01, 0x01, 0x12, 0x34, 0x0a, 0x13, 0x6b, 0x65, 0x65, 0x70, 0x61, 0x6c, + 0x69, 0x76, 0x65, 0x73, 0x5f, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x64, 0x18, 0x0d, 0x20, + 0x01, 0x28, 0x04, 0x48, 0x0c, 0x52, 0x12, 0x6b, 0x65, 0x65, 0x70, 0x61, 0x6c, 0x69, 0x76, 0x65, + 0x73, 0x52, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x64, 0x88, 0x01, 0x01, 0x12, 0x32, 0x0a, 0x12, + 0x6e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x5f, 0x73, 0x65, + 0x6e, 0x74, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x04, 0x48, 0x0d, 0x52, 0x11, 0x6e, 0x6f, 0x74, 0x69, + 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x53, 0x65, 0x6e, 0x74, 0x88, 0x01, 0x01, + 0x12, 0x3a, 0x0a, 0x16, 0x6e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x73, 0x5f, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x64, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x04, + 0x48, 0x0e, 0x52, 0x15, 0x6e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x73, 0x52, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x64, 0x88, 0x01, 0x01, 0x12, 0x40, 0x0a, 0x09, + 0x66, 0x73, 0x6d, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x10, 0x20, 0x01, 0x28, 0x0e, 0x32, + 0x1e, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x42, 0x67, 0x70, 0x76, 0x36, 0x4d, 0x65, 0x74, 0x72, 0x69, + 0x63, 0x2e, 0x46, 0x73, 0x6d, 0x53, 0x74, 0x61, 0x74, 0x65, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x48, + 0x0f, 0x52, 0x08, 0x66, 0x73, 0x6d, 0x53, 0x74, 0x61, 0x74, 0x65, 0x88, 0x01, 0x01, 0x12, 0x32, + 0x0a, 0x13, 0x65, 0x6e, 0x64, 0x5f, 0x6f, 0x66, 0x5f, 0x72, 0x69, 0x62, 0x5f, 0x72, 0x65, 0x63, + 0x65, 0x69, 0x76, 0x65, 0x64, 0x18, 0x11, 0x20, 0x01, 0x28, 0x04, 0x48, 0x10, 0x52, 0x10, 0x65, + 0x6e, 0x64, 0x4f, 0x66, 0x52, 0x69, 0x62, 0x52, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x64, 0x88, + 0x01, 0x01, 0x1a, 0x39, 0x0a, 0x0c, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, + 0x74, 0x65, 0x22, 0x29, 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x0a, 0x0b, 0x75, 0x6e, + 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x10, 0x00, 0x12, 0x06, 0x0a, 0x02, 0x75, + 0x70, 0x10, 0x01, 0x12, 0x08, 0x0a, 0x04, 0x64, 0x6f, 0x77, 0x6e, 0x10, 0x02, 0x1a, 0x76, 0x0a, + 0x08, 0x46, 0x73, 0x6d, 0x53, 0x74, 0x61, 0x74, 0x65, 0x22, 0x6a, 0x0a, 0x04, 0x45, 0x6e, 0x75, + 0x6d, 0x12, 0x0f, 0x0a, 0x0b, 0x75, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, + 0x10, 0x00, 0x12, 0x08, 0x0a, 0x04, 0x69, 0x64, 0x6c, 0x65, 0x10, 0x01, 0x12, 0x0b, 0x0a, 0x07, + 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x10, 0x02, 0x12, 0x0a, 0x0a, 0x06, 0x61, 0x63, 0x74, + 0x69, 0x76, 0x65, 0x10, 0x03, 0x12, 0x0c, 0x0a, 0x08, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x65, 0x6e, + 0x74, 0x10, 0x04, 0x12, 0x0f, 0x0a, 0x0b, 0x6f, 0x70, 0x65, 0x6e, 0x63, 0x6f, 0x6e, 0x66, 0x69, + 0x72, 0x6d, 0x10, 0x05, 0x12, 0x0f, 0x0a, 0x0b, 0x65, 0x73, 0x74, 0x61, 0x62, 0x6c, 0x69, 0x73, + 0x68, 0x65, 0x64, 0x10, 0x06, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x42, 0x10, + 0x0a, 0x0e, 0x5f, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x65, + 0x42, 0x15, 0x0a, 0x13, 0x5f, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x66, 0x6c, 0x61, + 0x70, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x42, 0x14, 0x0a, 0x12, 0x5f, 0x72, 0x6f, 0x75, 0x74, + 0x65, 0x73, 0x5f, 0x61, 0x64, 0x76, 0x65, 0x72, 0x74, 0x69, 0x73, 0x65, 0x64, 0x42, 0x12, 0x0a, + 0x10, 0x5f, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x73, 0x5f, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, + 0x64, 0x42, 0x17, 0x0a, 0x15, 0x5f, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x5f, 0x77, 0x69, 0x74, 0x68, + 0x64, 0x72, 0x61, 0x77, 0x73, 0x5f, 0x73, 0x65, 0x6e, 0x74, 0x42, 0x1b, 0x0a, 0x19, 0x5f, 0x72, + 0x6f, 0x75, 0x74, 0x65, 0x5f, 0x77, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x73, 0x5f, 0x72, + 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x64, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x75, 0x70, 0x64, 0x61, + 0x74, 0x65, 0x73, 0x5f, 0x73, 0x65, 0x6e, 0x74, 0x42, 0x13, 0x0a, 0x11, 0x5f, 0x75, 0x70, 0x64, + 0x61, 0x74, 0x65, 0x73, 0x5f, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x64, 0x42, 0x0d, 0x0a, + 0x0b, 0x5f, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x5f, 0x73, 0x65, 0x6e, 0x74, 0x42, 0x11, 0x0a, 0x0f, + 0x5f, 0x6f, 0x70, 0x65, 0x6e, 0x73, 0x5f, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x64, 0x42, + 0x12, 0x0a, 0x10, 0x5f, 0x6b, 0x65, 0x65, 0x70, 0x61, 0x6c, 0x69, 0x76, 0x65, 0x73, 0x5f, 0x73, + 0x65, 0x6e, 0x74, 0x42, 0x16, 0x0a, 0x14, 0x5f, 0x6b, 0x65, 0x65, 0x70, 0x61, 0x6c, 0x69, 0x76, + 0x65, 0x73, 0x5f, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x64, 0x42, 0x15, 0x0a, 0x13, 0x5f, + 0x6e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x5f, 0x73, 0x65, + 0x6e, 0x74, 0x42, 0x19, 0x0a, 0x17, 0x5f, 0x6e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x73, 0x5f, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x64, 0x42, 0x0c, 0x0a, + 0x0a, 0x5f, 0x66, 0x73, 0x6d, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x42, 0x16, 0x0a, 0x14, 0x5f, + 0x65, 0x6e, 0x64, 0x5f, 0x6f, 0x66, 0x5f, 0x72, 0x69, 0x62, 0x5f, 0x72, 0x65, 0x63, 0x65, 0x69, + 0x76, 0x65, 0x64, 0x22, 0xac, 0x06, 0x0a, 0x12, 0x49, 0x73, 0x69, 0x73, 0x4d, 0x65, 0x74, 0x72, + 0x69, 0x63, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x21, 0x0a, 0x0c, 0x72, 0x6f, + 0x75, 0x74, 0x65, 0x72, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, + 0x52, 0x0b, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x12, 0x4b, 0x0a, + 0x0c, 0x63, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x18, 0x02, 0x20, + 0x03, 0x28, 0x0e, 0x32, 0x28, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x49, 0x73, 0x69, 0x73, 0x4d, 0x65, + 0x74, 0x72, 0x69, 0x63, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x43, 0x6f, 0x6c, + 0x75, 0x6d, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x52, 0x0b, 0x63, + 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x1a, 0xa5, 0x05, 0x0a, 0x0b, 0x43, + 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x22, 0x95, 0x05, 0x0a, 0x04, 0x45, + 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x0a, 0x0b, 0x75, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, + 0x65, 0x64, 0x10, 0x00, 0x12, 0x12, 0x0a, 0x0e, 0x6c, 0x31, 0x5f, 0x73, 0x65, 0x73, 0x73, 0x69, + 0x6f, 0x6e, 0x73, 0x5f, 0x75, 0x70, 0x10, 0x01, 0x12, 0x13, 0x0a, 0x0f, 0x6c, 0x31, 0x5f, 0x73, + 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x66, 0x6c, 0x61, 0x70, 0x10, 0x02, 0x12, 0x14, 0x0a, + 0x10, 0x6c, 0x31, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x5f, 0x73, 0x69, 0x7a, + 0x65, 0x10, 0x03, 0x12, 0x1c, 0x0a, 0x18, 0x6c, 0x31, 0x5f, 0x62, 0x72, 0x6f, 0x61, 0x64, 0x63, + 0x61, 0x73, 0x74, 0x5f, 0x68, 0x65, 0x6c, 0x6c, 0x6f, 0x73, 0x5f, 0x73, 0x65, 0x6e, 0x74, 0x10, + 0x04, 0x12, 0x20, 0x0a, 0x1c, 0x6c, 0x31, 0x5f, 0x62, 0x72, 0x6f, 0x61, 0x64, 0x63, 0x61, 0x73, + 0x74, 0x5f, 0x68, 0x65, 0x6c, 0x6c, 0x6f, 0x73, 0x5f, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, + 0x64, 0x10, 0x05, 0x12, 0x21, 0x0a, 0x1d, 0x6c, 0x31, 0x5f, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x5f, + 0x74, 0x6f, 0x5f, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x5f, 0x68, 0x65, 0x6c, 0x6c, 0x6f, 0x73, 0x5f, + 0x73, 0x65, 0x6e, 0x74, 0x10, 0x06, 0x12, 0x25, 0x0a, 0x21, 0x6c, 0x31, 0x5f, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x5f, 0x74, 0x6f, 0x5f, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x5f, 0x68, 0x65, 0x6c, 0x6c, - 0x6f, 0x73, 0x5f, 0x73, 0x65, 0x6e, 0x74, 0x10, 0x13, 0x12, 0x25, 0x0a, 0x21, 0x6c, 0x32, 0x5f, - 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x5f, 0x74, 0x6f, 0x5f, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x5f, 0x68, - 0x65, 0x6c, 0x6c, 0x6f, 0x73, 0x5f, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x64, 0x10, 0x14, - 0x12, 0x10, 0x0a, 0x0c, 0x6c, 0x32, 0x5f, 0x70, 0x73, 0x6e, 0x70, 0x5f, 0x73, 0x65, 0x6e, 0x74, - 0x10, 0x15, 0x12, 0x14, 0x0a, 0x10, 0x6c, 0x32, 0x5f, 0x70, 0x73, 0x6e, 0x70, 0x5f, 0x72, 0x65, - 0x63, 0x65, 0x69, 0x76, 0x65, 0x64, 0x10, 0x16, 0x12, 0x10, 0x0a, 0x0c, 0x6c, 0x32, 0x5f, 0x63, - 0x73, 0x6e, 0x70, 0x5f, 0x73, 0x65, 0x6e, 0x74, 0x10, 0x17, 0x12, 0x14, 0x0a, 0x10, 0x6c, 0x32, - 0x5f, 0x63, 0x73, 0x6e, 0x70, 0x5f, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x64, 0x10, 0x18, - 0x12, 0x0f, 0x0a, 0x0b, 0x6c, 0x32, 0x5f, 0x6c, 0x73, 0x70, 0x5f, 0x73, 0x65, 0x6e, 0x74, 0x10, - 0x19, 0x12, 0x13, 0x0a, 0x0f, 0x6c, 0x32, 0x5f, 0x6c, 0x73, 0x70, 0x5f, 0x72, 0x65, 0x63, 0x65, - 0x69, 0x76, 0x65, 0x64, 0x10, 0x1a, 0x22, 0xcc, 0x0f, 0x0a, 0x0a, 0x49, 0x73, 0x69, 0x73, 0x4d, - 0x65, 0x74, 0x72, 0x69, 0x63, 0x12, 0x17, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, 0x29, - 0x0a, 0x0e, 0x6c, 0x31, 0x5f, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x5f, 0x75, 0x70, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x0c, 0x6c, 0x31, 0x53, 0x65, 0x73, 0x73, - 0x69, 0x6f, 0x6e, 0x73, 0x55, 0x70, 0x88, 0x01, 0x01, 0x12, 0x2b, 0x0a, 0x0f, 0x6c, 0x31, 0x5f, - 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x66, 0x6c, 0x61, 0x70, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x04, 0x48, 0x02, 0x52, 0x0d, 0x6c, 0x31, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x46, - 0x6c, 0x61, 0x70, 0x88, 0x01, 0x01, 0x12, 0x3c, 0x0a, 0x18, 0x6c, 0x31, 0x5f, 0x62, 0x72, 0x6f, - 0x61, 0x64, 0x63, 0x61, 0x73, 0x74, 0x5f, 0x68, 0x65, 0x6c, 0x6c, 0x6f, 0x73, 0x5f, 0x73, 0x65, - 0x6e, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, 0x48, 0x03, 0x52, 0x15, 0x6c, 0x31, 0x42, 0x72, - 0x6f, 0x61, 0x64, 0x63, 0x61, 0x73, 0x74, 0x48, 0x65, 0x6c, 0x6c, 0x6f, 0x73, 0x53, 0x65, 0x6e, - 0x74, 0x88, 0x01, 0x01, 0x12, 0x44, 0x0a, 0x1c, 0x6c, 0x31, 0x5f, 0x62, 0x72, 0x6f, 0x61, 0x64, - 0x63, 0x61, 0x73, 0x74, 0x5f, 0x68, 0x65, 0x6c, 0x6c, 0x6f, 0x73, 0x5f, 0x72, 0x65, 0x63, 0x65, - 0x69, 0x76, 0x65, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x04, 0x48, 0x04, 0x52, 0x19, 0x6c, 0x31, - 0x42, 0x72, 0x6f, 0x61, 0x64, 0x63, 0x61, 0x73, 0x74, 0x48, 0x65, 0x6c, 0x6c, 0x6f, 0x73, 0x52, - 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x64, 0x88, 0x01, 0x01, 0x12, 0x44, 0x0a, 0x1d, 0x6c, 0x31, - 0x5f, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x5f, 0x74, 0x6f, 0x5f, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x5f, - 0x68, 0x65, 0x6c, 0x6c, 0x6f, 0x73, 0x5f, 0x73, 0x65, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, - 0x04, 0x48, 0x05, 0x52, 0x18, 0x6c, 0x31, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x54, 0x6f, 0x50, 0x6f, - 0x69, 0x6e, 0x74, 0x48, 0x65, 0x6c, 0x6c, 0x6f, 0x73, 0x53, 0x65, 0x6e, 0x74, 0x88, 0x01, 0x01, - 0x12, 0x4c, 0x0a, 0x21, 0x6c, 0x31, 0x5f, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x5f, 0x74, 0x6f, 0x5f, - 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x5f, 0x68, 0x65, 0x6c, 0x6c, 0x6f, 0x73, 0x5f, 0x72, 0x65, 0x63, - 0x65, 0x69, 0x76, 0x65, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x04, 0x48, 0x06, 0x52, 0x1c, 0x6c, - 0x31, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x54, 0x6f, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x48, 0x65, 0x6c, - 0x6c, 0x6f, 0x73, 0x52, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x64, 0x88, 0x01, 0x01, 0x12, 0x2d, - 0x0a, 0x10, 0x6c, 0x31, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x5f, 0x73, 0x69, - 0x7a, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x04, 0x48, 0x07, 0x52, 0x0e, 0x6c, 0x31, 0x44, 0x61, - 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x88, 0x01, 0x01, 0x12, 0x25, 0x0a, - 0x0c, 0x6c, 0x31, 0x5f, 0x70, 0x73, 0x6e, 0x70, 0x5f, 0x73, 0x65, 0x6e, 0x74, 0x18, 0x09, 0x20, - 0x01, 0x28, 0x04, 0x48, 0x08, 0x52, 0x0a, 0x6c, 0x31, 0x50, 0x73, 0x6e, 0x70, 0x53, 0x65, 0x6e, - 0x74, 0x88, 0x01, 0x01, 0x12, 0x2d, 0x0a, 0x10, 0x6c, 0x31, 0x5f, 0x70, 0x73, 0x6e, 0x70, 0x5f, - 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x64, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x04, 0x48, 0x09, - 0x52, 0x0e, 0x6c, 0x31, 0x50, 0x73, 0x6e, 0x70, 0x52, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x64, - 0x88, 0x01, 0x01, 0x12, 0x25, 0x0a, 0x0c, 0x6c, 0x31, 0x5f, 0x63, 0x73, 0x6e, 0x70, 0x5f, 0x73, - 0x65, 0x6e, 0x74, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x04, 0x48, 0x0a, 0x52, 0x0a, 0x6c, 0x31, 0x43, - 0x73, 0x6e, 0x70, 0x53, 0x65, 0x6e, 0x74, 0x88, 0x01, 0x01, 0x12, 0x2d, 0x0a, 0x10, 0x6c, 0x31, - 0x5f, 0x63, 0x73, 0x6e, 0x70, 0x5f, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x64, 0x18, 0x0c, - 0x20, 0x01, 0x28, 0x04, 0x48, 0x0b, 0x52, 0x0e, 0x6c, 0x31, 0x43, 0x73, 0x6e, 0x70, 0x52, 0x65, - 0x63, 0x65, 0x69, 0x76, 0x65, 0x64, 0x88, 0x01, 0x01, 0x12, 0x23, 0x0a, 0x0b, 0x6c, 0x31, 0x5f, - 0x6c, 0x73, 0x70, 0x5f, 0x73, 0x65, 0x6e, 0x74, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x04, 0x48, 0x0c, - 0x52, 0x09, 0x6c, 0x31, 0x4c, 0x73, 0x70, 0x53, 0x65, 0x6e, 0x74, 0x88, 0x01, 0x01, 0x12, 0x2b, + 0x6f, 0x73, 0x5f, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x64, 0x10, 0x07, 0x12, 0x10, 0x0a, + 0x0c, 0x6c, 0x31, 0x5f, 0x70, 0x73, 0x6e, 0x70, 0x5f, 0x73, 0x65, 0x6e, 0x74, 0x10, 0x08, 0x12, + 0x14, 0x0a, 0x10, 0x6c, 0x31, 0x5f, 0x70, 0x73, 0x6e, 0x70, 0x5f, 0x72, 0x65, 0x63, 0x65, 0x69, + 0x76, 0x65, 0x64, 0x10, 0x09, 0x12, 0x10, 0x0a, 0x0c, 0x6c, 0x31, 0x5f, 0x63, 0x73, 0x6e, 0x70, + 0x5f, 0x73, 0x65, 0x6e, 0x74, 0x10, 0x0a, 0x12, 0x14, 0x0a, 0x10, 0x6c, 0x31, 0x5f, 0x63, 0x73, + 0x6e, 0x70, 0x5f, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x64, 0x10, 0x0b, 0x12, 0x0f, 0x0a, + 0x0b, 0x6c, 0x31, 0x5f, 0x6c, 0x73, 0x70, 0x5f, 0x73, 0x65, 0x6e, 0x74, 0x10, 0x0c, 0x12, 0x13, 0x0a, 0x0f, 0x6c, 0x31, 0x5f, 0x6c, 0x73, 0x70, 0x5f, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, - 0x64, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x04, 0x48, 0x0d, 0x52, 0x0d, 0x6c, 0x31, 0x4c, 0x73, 0x70, - 0x52, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x64, 0x88, 0x01, 0x01, 0x12, 0x29, 0x0a, 0x0e, 0x6c, - 0x32, 0x5f, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x5f, 0x75, 0x70, 0x18, 0x0f, 0x20, - 0x01, 0x28, 0x0d, 0x48, 0x0e, 0x52, 0x0c, 0x6c, 0x32, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, - 0x73, 0x55, 0x70, 0x88, 0x01, 0x01, 0x12, 0x2b, 0x0a, 0x0f, 0x6c, 0x32, 0x5f, 0x73, 0x65, 0x73, - 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x66, 0x6c, 0x61, 0x70, 0x18, 0x10, 0x20, 0x01, 0x28, 0x04, 0x48, - 0x0f, 0x52, 0x0d, 0x6c, 0x32, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x46, 0x6c, 0x61, 0x70, - 0x88, 0x01, 0x01, 0x12, 0x3c, 0x0a, 0x18, 0x6c, 0x32, 0x5f, 0x62, 0x72, 0x6f, 0x61, 0x64, 0x63, - 0x61, 0x73, 0x74, 0x5f, 0x68, 0x65, 0x6c, 0x6c, 0x6f, 0x73, 0x5f, 0x73, 0x65, 0x6e, 0x74, 0x18, - 0x11, 0x20, 0x01, 0x28, 0x04, 0x48, 0x10, 0x52, 0x15, 0x6c, 0x32, 0x42, 0x72, 0x6f, 0x61, 0x64, - 0x63, 0x61, 0x73, 0x74, 0x48, 0x65, 0x6c, 0x6c, 0x6f, 0x73, 0x53, 0x65, 0x6e, 0x74, 0x88, 0x01, - 0x01, 0x12, 0x44, 0x0a, 0x1c, 0x6c, 0x32, 0x5f, 0x62, 0x72, 0x6f, 0x61, 0x64, 0x63, 0x61, 0x73, + 0x64, 0x10, 0x0d, 0x12, 0x12, 0x0a, 0x0e, 0x6c, 0x32, 0x5f, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, + 0x6e, 0x73, 0x5f, 0x75, 0x70, 0x10, 0x0e, 0x12, 0x13, 0x0a, 0x0f, 0x6c, 0x32, 0x5f, 0x73, 0x65, + 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x66, 0x6c, 0x61, 0x70, 0x10, 0x0f, 0x12, 0x14, 0x0a, 0x10, + 0x6c, 0x32, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, + 0x10, 0x10, 0x12, 0x1c, 0x0a, 0x18, 0x6c, 0x32, 0x5f, 0x62, 0x72, 0x6f, 0x61, 0x64, 0x63, 0x61, + 0x73, 0x74, 0x5f, 0x68, 0x65, 0x6c, 0x6c, 0x6f, 0x73, 0x5f, 0x73, 0x65, 0x6e, 0x74, 0x10, 0x11, + 0x12, 0x20, 0x0a, 0x1c, 0x6c, 0x32, 0x5f, 0x62, 0x72, 0x6f, 0x61, 0x64, 0x63, 0x61, 0x73, 0x74, + 0x5f, 0x68, 0x65, 0x6c, 0x6c, 0x6f, 0x73, 0x5f, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x64, + 0x10, 0x12, 0x12, 0x21, 0x0a, 0x1d, 0x6c, 0x32, 0x5f, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x5f, 0x74, + 0x6f, 0x5f, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x5f, 0x68, 0x65, 0x6c, 0x6c, 0x6f, 0x73, 0x5f, 0x73, + 0x65, 0x6e, 0x74, 0x10, 0x13, 0x12, 0x25, 0x0a, 0x21, 0x6c, 0x32, 0x5f, 0x70, 0x6f, 0x69, 0x6e, + 0x74, 0x5f, 0x74, 0x6f, 0x5f, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x5f, 0x68, 0x65, 0x6c, 0x6c, 0x6f, + 0x73, 0x5f, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x64, 0x10, 0x14, 0x12, 0x10, 0x0a, 0x0c, + 0x6c, 0x32, 0x5f, 0x70, 0x73, 0x6e, 0x70, 0x5f, 0x73, 0x65, 0x6e, 0x74, 0x10, 0x15, 0x12, 0x14, + 0x0a, 0x10, 0x6c, 0x32, 0x5f, 0x70, 0x73, 0x6e, 0x70, 0x5f, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, + 0x65, 0x64, 0x10, 0x16, 0x12, 0x10, 0x0a, 0x0c, 0x6c, 0x32, 0x5f, 0x63, 0x73, 0x6e, 0x70, 0x5f, + 0x73, 0x65, 0x6e, 0x74, 0x10, 0x17, 0x12, 0x14, 0x0a, 0x10, 0x6c, 0x32, 0x5f, 0x63, 0x73, 0x6e, + 0x70, 0x5f, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x64, 0x10, 0x18, 0x12, 0x0f, 0x0a, 0x0b, + 0x6c, 0x32, 0x5f, 0x6c, 0x73, 0x70, 0x5f, 0x73, 0x65, 0x6e, 0x74, 0x10, 0x19, 0x12, 0x13, 0x0a, + 0x0f, 0x6c, 0x32, 0x5f, 0x6c, 0x73, 0x70, 0x5f, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x64, + 0x10, 0x1a, 0x22, 0xcc, 0x0f, 0x0a, 0x0a, 0x49, 0x73, 0x69, 0x73, 0x4d, 0x65, 0x74, 0x72, 0x69, + 0x63, 0x12, 0x17, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, + 0x00, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, 0x29, 0x0a, 0x0e, 0x6c, 0x31, + 0x5f, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x5f, 0x75, 0x70, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x0d, 0x48, 0x01, 0x52, 0x0c, 0x6c, 0x31, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, + 0x55, 0x70, 0x88, 0x01, 0x01, 0x12, 0x2b, 0x0a, 0x0f, 0x6c, 0x31, 0x5f, 0x73, 0x65, 0x73, 0x73, + 0x69, 0x6f, 0x6e, 0x5f, 0x66, 0x6c, 0x61, 0x70, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x48, 0x02, + 0x52, 0x0d, 0x6c, 0x31, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x46, 0x6c, 0x61, 0x70, 0x88, + 0x01, 0x01, 0x12, 0x3c, 0x0a, 0x18, 0x6c, 0x31, 0x5f, 0x62, 0x72, 0x6f, 0x61, 0x64, 0x63, 0x61, + 0x73, 0x74, 0x5f, 0x68, 0x65, 0x6c, 0x6c, 0x6f, 0x73, 0x5f, 0x73, 0x65, 0x6e, 0x74, 0x18, 0x04, + 0x20, 0x01, 0x28, 0x04, 0x48, 0x03, 0x52, 0x15, 0x6c, 0x31, 0x42, 0x72, 0x6f, 0x61, 0x64, 0x63, + 0x61, 0x73, 0x74, 0x48, 0x65, 0x6c, 0x6c, 0x6f, 0x73, 0x53, 0x65, 0x6e, 0x74, 0x88, 0x01, 0x01, + 0x12, 0x44, 0x0a, 0x1c, 0x6c, 0x31, 0x5f, 0x62, 0x72, 0x6f, 0x61, 0x64, 0x63, 0x61, 0x73, 0x74, + 0x5f, 0x68, 0x65, 0x6c, 0x6c, 0x6f, 0x73, 0x5f, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x64, + 0x18, 0x05, 0x20, 0x01, 0x28, 0x04, 0x48, 0x04, 0x52, 0x19, 0x6c, 0x31, 0x42, 0x72, 0x6f, 0x61, + 0x64, 0x63, 0x61, 0x73, 0x74, 0x48, 0x65, 0x6c, 0x6c, 0x6f, 0x73, 0x52, 0x65, 0x63, 0x65, 0x69, + 0x76, 0x65, 0x64, 0x88, 0x01, 0x01, 0x12, 0x44, 0x0a, 0x1d, 0x6c, 0x31, 0x5f, 0x70, 0x6f, 0x69, + 0x6e, 0x74, 0x5f, 0x74, 0x6f, 0x5f, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x5f, 0x68, 0x65, 0x6c, 0x6c, + 0x6f, 0x73, 0x5f, 0x73, 0x65, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x04, 0x48, 0x05, 0x52, + 0x18, 0x6c, 0x31, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x54, 0x6f, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x48, + 0x65, 0x6c, 0x6c, 0x6f, 0x73, 0x53, 0x65, 0x6e, 0x74, 0x88, 0x01, 0x01, 0x12, 0x4c, 0x0a, 0x21, + 0x6c, 0x31, 0x5f, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x5f, 0x74, 0x6f, 0x5f, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x5f, 0x68, 0x65, 0x6c, 0x6c, 0x6f, 0x73, 0x5f, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, - 0x64, 0x18, 0x12, 0x20, 0x01, 0x28, 0x04, 0x48, 0x11, 0x52, 0x19, 0x6c, 0x32, 0x42, 0x72, 0x6f, - 0x61, 0x64, 0x63, 0x61, 0x73, 0x74, 0x48, 0x65, 0x6c, 0x6c, 0x6f, 0x73, 0x52, 0x65, 0x63, 0x65, - 0x69, 0x76, 0x65, 0x64, 0x88, 0x01, 0x01, 0x12, 0x44, 0x0a, 0x1d, 0x6c, 0x32, 0x5f, 0x70, 0x6f, - 0x69, 0x6e, 0x74, 0x5f, 0x74, 0x6f, 0x5f, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x5f, 0x68, 0x65, 0x6c, - 0x6c, 0x6f, 0x73, 0x5f, 0x73, 0x65, 0x6e, 0x74, 0x18, 0x13, 0x20, 0x01, 0x28, 0x04, 0x48, 0x12, - 0x52, 0x18, 0x6c, 0x32, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x54, 0x6f, 0x50, 0x6f, 0x69, 0x6e, 0x74, - 0x48, 0x65, 0x6c, 0x6c, 0x6f, 0x73, 0x53, 0x65, 0x6e, 0x74, 0x88, 0x01, 0x01, 0x12, 0x4c, 0x0a, - 0x21, 0x6c, 0x32, 0x5f, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x5f, 0x74, 0x6f, 0x5f, 0x70, 0x6f, 0x69, - 0x6e, 0x74, 0x5f, 0x68, 0x65, 0x6c, 0x6c, 0x6f, 0x73, 0x5f, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, - 0x65, 0x64, 0x18, 0x14, 0x20, 0x01, 0x28, 0x04, 0x48, 0x13, 0x52, 0x1c, 0x6c, 0x32, 0x50, 0x6f, - 0x69, 0x6e, 0x74, 0x54, 0x6f, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x48, 0x65, 0x6c, 0x6c, 0x6f, 0x73, - 0x52, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x64, 0x88, 0x01, 0x01, 0x12, 0x2d, 0x0a, 0x10, 0x6c, - 0x32, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, - 0x15, 0x20, 0x01, 0x28, 0x04, 0x48, 0x14, 0x52, 0x0e, 0x6c, 0x32, 0x44, 0x61, 0x74, 0x61, 0x62, - 0x61, 0x73, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x88, 0x01, 0x01, 0x12, 0x25, 0x0a, 0x0c, 0x6c, 0x32, - 0x5f, 0x70, 0x73, 0x6e, 0x70, 0x5f, 0x73, 0x65, 0x6e, 0x74, 0x18, 0x16, 0x20, 0x01, 0x28, 0x04, - 0x48, 0x15, 0x52, 0x0a, 0x6c, 0x32, 0x50, 0x73, 0x6e, 0x70, 0x53, 0x65, 0x6e, 0x74, 0x88, 0x01, - 0x01, 0x12, 0x2d, 0x0a, 0x10, 0x6c, 0x32, 0x5f, 0x70, 0x73, 0x6e, 0x70, 0x5f, 0x72, 0x65, 0x63, - 0x65, 0x69, 0x76, 0x65, 0x64, 0x18, 0x17, 0x20, 0x01, 0x28, 0x04, 0x48, 0x16, 0x52, 0x0e, 0x6c, - 0x32, 0x50, 0x73, 0x6e, 0x70, 0x52, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x64, 0x88, 0x01, 0x01, - 0x12, 0x25, 0x0a, 0x0c, 0x6c, 0x32, 0x5f, 0x63, 0x73, 0x6e, 0x70, 0x5f, 0x73, 0x65, 0x6e, 0x74, - 0x18, 0x18, 0x20, 0x01, 0x28, 0x04, 0x48, 0x17, 0x52, 0x0a, 0x6c, 0x32, 0x43, 0x73, 0x6e, 0x70, - 0x53, 0x65, 0x6e, 0x74, 0x88, 0x01, 0x01, 0x12, 0x2d, 0x0a, 0x10, 0x6c, 0x32, 0x5f, 0x63, 0x73, - 0x6e, 0x70, 0x5f, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x64, 0x18, 0x19, 0x20, 0x01, 0x28, - 0x04, 0x48, 0x18, 0x52, 0x0e, 0x6c, 0x32, 0x43, 0x73, 0x6e, 0x70, 0x52, 0x65, 0x63, 0x65, 0x69, - 0x76, 0x65, 0x64, 0x88, 0x01, 0x01, 0x12, 0x23, 0x0a, 0x0b, 0x6c, 0x32, 0x5f, 0x6c, 0x73, 0x70, - 0x5f, 0x73, 0x65, 0x6e, 0x74, 0x18, 0x1a, 0x20, 0x01, 0x28, 0x04, 0x48, 0x19, 0x52, 0x09, 0x6c, - 0x32, 0x4c, 0x73, 0x70, 0x53, 0x65, 0x6e, 0x74, 0x88, 0x01, 0x01, 0x12, 0x2b, 0x0a, 0x0f, 0x6c, - 0x32, 0x5f, 0x6c, 0x73, 0x70, 0x5f, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x64, 0x18, 0x1b, - 0x20, 0x01, 0x28, 0x04, 0x48, 0x1a, 0x52, 0x0d, 0x6c, 0x32, 0x4c, 0x73, 0x70, 0x52, 0x65, 0x63, - 0x65, 0x69, 0x76, 0x65, 0x64, 0x88, 0x01, 0x01, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x6e, 0x61, 0x6d, - 0x65, 0x42, 0x11, 0x0a, 0x0f, 0x5f, 0x6c, 0x31, 0x5f, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, - 0x73, 0x5f, 0x75, 0x70, 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x6c, 0x31, 0x5f, 0x73, 0x65, 0x73, 0x73, - 0x69, 0x6f, 0x6e, 0x5f, 0x66, 0x6c, 0x61, 0x70, 0x42, 0x1b, 0x0a, 0x19, 0x5f, 0x6c, 0x31, 0x5f, - 0x62, 0x72, 0x6f, 0x61, 0x64, 0x63, 0x61, 0x73, 0x74, 0x5f, 0x68, 0x65, 0x6c, 0x6c, 0x6f, 0x73, - 0x5f, 0x73, 0x65, 0x6e, 0x74, 0x42, 0x1f, 0x0a, 0x1d, 0x5f, 0x6c, 0x31, 0x5f, 0x62, 0x72, 0x6f, - 0x61, 0x64, 0x63, 0x61, 0x73, 0x74, 0x5f, 0x68, 0x65, 0x6c, 0x6c, 0x6f, 0x73, 0x5f, 0x72, 0x65, - 0x63, 0x65, 0x69, 0x76, 0x65, 0x64, 0x42, 0x20, 0x0a, 0x1e, 0x5f, 0x6c, 0x31, 0x5f, 0x70, 0x6f, - 0x69, 0x6e, 0x74, 0x5f, 0x74, 0x6f, 0x5f, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x5f, 0x68, 0x65, 0x6c, - 0x6c, 0x6f, 0x73, 0x5f, 0x73, 0x65, 0x6e, 0x74, 0x42, 0x24, 0x0a, 0x22, 0x5f, 0x6c, 0x31, 0x5f, - 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x5f, 0x74, 0x6f, 0x5f, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x5f, 0x68, - 0x65, 0x6c, 0x6c, 0x6f, 0x73, 0x5f, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x64, 0x42, 0x13, - 0x0a, 0x11, 0x5f, 0x6c, 0x31, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x5f, 0x73, - 0x69, 0x7a, 0x65, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x6c, 0x31, 0x5f, 0x70, 0x73, 0x6e, 0x70, 0x5f, - 0x73, 0x65, 0x6e, 0x74, 0x42, 0x13, 0x0a, 0x11, 0x5f, 0x6c, 0x31, 0x5f, 0x70, 0x73, 0x6e, 0x70, - 0x5f, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x64, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x6c, 0x31, - 0x5f, 0x63, 0x73, 0x6e, 0x70, 0x5f, 0x73, 0x65, 0x6e, 0x74, 0x42, 0x13, 0x0a, 0x11, 0x5f, 0x6c, - 0x31, 0x5f, 0x63, 0x73, 0x6e, 0x70, 0x5f, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x64, 0x42, - 0x0e, 0x0a, 0x0c, 0x5f, 0x6c, 0x31, 0x5f, 0x6c, 0x73, 0x70, 0x5f, 0x73, 0x65, 0x6e, 0x74, 0x42, - 0x12, 0x0a, 0x10, 0x5f, 0x6c, 0x31, 0x5f, 0x6c, 0x73, 0x70, 0x5f, 0x72, 0x65, 0x63, 0x65, 0x69, - 0x76, 0x65, 0x64, 0x42, 0x11, 0x0a, 0x0f, 0x5f, 0x6c, 0x32, 0x5f, 0x73, 0x65, 0x73, 0x73, 0x69, - 0x6f, 0x6e, 0x73, 0x5f, 0x75, 0x70, 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x6c, 0x32, 0x5f, 0x73, 0x65, - 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x66, 0x6c, 0x61, 0x70, 0x42, 0x1b, 0x0a, 0x19, 0x5f, 0x6c, - 0x32, 0x5f, 0x62, 0x72, 0x6f, 0x61, 0x64, 0x63, 0x61, 0x73, 0x74, 0x5f, 0x68, 0x65, 0x6c, 0x6c, - 0x6f, 0x73, 0x5f, 0x73, 0x65, 0x6e, 0x74, 0x42, 0x1f, 0x0a, 0x1d, 0x5f, 0x6c, 0x32, 0x5f, 0x62, - 0x72, 0x6f, 0x61, 0x64, 0x63, 0x61, 0x73, 0x74, 0x5f, 0x68, 0x65, 0x6c, 0x6c, 0x6f, 0x73, 0x5f, - 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x64, 0x42, 0x20, 0x0a, 0x1e, 0x5f, 0x6c, 0x32, 0x5f, + 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x04, 0x48, 0x06, 0x52, 0x1c, 0x6c, 0x31, 0x50, 0x6f, 0x69, + 0x6e, 0x74, 0x54, 0x6f, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x48, 0x65, 0x6c, 0x6c, 0x6f, 0x73, 0x52, + 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x64, 0x88, 0x01, 0x01, 0x12, 0x2d, 0x0a, 0x10, 0x6c, 0x31, + 0x5f, 0x64, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x08, + 0x20, 0x01, 0x28, 0x04, 0x48, 0x07, 0x52, 0x0e, 0x6c, 0x31, 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, + 0x73, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x88, 0x01, 0x01, 0x12, 0x25, 0x0a, 0x0c, 0x6c, 0x31, 0x5f, + 0x70, 0x73, 0x6e, 0x70, 0x5f, 0x73, 0x65, 0x6e, 0x74, 0x18, 0x09, 0x20, 0x01, 0x28, 0x04, 0x48, + 0x08, 0x52, 0x0a, 0x6c, 0x31, 0x50, 0x73, 0x6e, 0x70, 0x53, 0x65, 0x6e, 0x74, 0x88, 0x01, 0x01, + 0x12, 0x2d, 0x0a, 0x10, 0x6c, 0x31, 0x5f, 0x70, 0x73, 0x6e, 0x70, 0x5f, 0x72, 0x65, 0x63, 0x65, + 0x69, 0x76, 0x65, 0x64, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x04, 0x48, 0x09, 0x52, 0x0e, 0x6c, 0x31, + 0x50, 0x73, 0x6e, 0x70, 0x52, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x64, 0x88, 0x01, 0x01, 0x12, + 0x25, 0x0a, 0x0c, 0x6c, 0x31, 0x5f, 0x63, 0x73, 0x6e, 0x70, 0x5f, 0x73, 0x65, 0x6e, 0x74, 0x18, + 0x0b, 0x20, 0x01, 0x28, 0x04, 0x48, 0x0a, 0x52, 0x0a, 0x6c, 0x31, 0x43, 0x73, 0x6e, 0x70, 0x53, + 0x65, 0x6e, 0x74, 0x88, 0x01, 0x01, 0x12, 0x2d, 0x0a, 0x10, 0x6c, 0x31, 0x5f, 0x63, 0x73, 0x6e, + 0x70, 0x5f, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x64, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x04, + 0x48, 0x0b, 0x52, 0x0e, 0x6c, 0x31, 0x43, 0x73, 0x6e, 0x70, 0x52, 0x65, 0x63, 0x65, 0x69, 0x76, + 0x65, 0x64, 0x88, 0x01, 0x01, 0x12, 0x23, 0x0a, 0x0b, 0x6c, 0x31, 0x5f, 0x6c, 0x73, 0x70, 0x5f, + 0x73, 0x65, 0x6e, 0x74, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x04, 0x48, 0x0c, 0x52, 0x09, 0x6c, 0x31, + 0x4c, 0x73, 0x70, 0x53, 0x65, 0x6e, 0x74, 0x88, 0x01, 0x01, 0x12, 0x2b, 0x0a, 0x0f, 0x6c, 0x31, + 0x5f, 0x6c, 0x73, 0x70, 0x5f, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x64, 0x18, 0x0e, 0x20, + 0x01, 0x28, 0x04, 0x48, 0x0d, 0x52, 0x0d, 0x6c, 0x31, 0x4c, 0x73, 0x70, 0x52, 0x65, 0x63, 0x65, + 0x69, 0x76, 0x65, 0x64, 0x88, 0x01, 0x01, 0x12, 0x29, 0x0a, 0x0e, 0x6c, 0x32, 0x5f, 0x73, 0x65, + 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x5f, 0x75, 0x70, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x0d, 0x48, + 0x0e, 0x52, 0x0c, 0x6c, 0x32, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x55, 0x70, 0x88, + 0x01, 0x01, 0x12, 0x2b, 0x0a, 0x0f, 0x6c, 0x32, 0x5f, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, + 0x5f, 0x66, 0x6c, 0x61, 0x70, 0x18, 0x10, 0x20, 0x01, 0x28, 0x04, 0x48, 0x0f, 0x52, 0x0d, 0x6c, + 0x32, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x46, 0x6c, 0x61, 0x70, 0x88, 0x01, 0x01, 0x12, + 0x3c, 0x0a, 0x18, 0x6c, 0x32, 0x5f, 0x62, 0x72, 0x6f, 0x61, 0x64, 0x63, 0x61, 0x73, 0x74, 0x5f, + 0x68, 0x65, 0x6c, 0x6c, 0x6f, 0x73, 0x5f, 0x73, 0x65, 0x6e, 0x74, 0x18, 0x11, 0x20, 0x01, 0x28, + 0x04, 0x48, 0x10, 0x52, 0x15, 0x6c, 0x32, 0x42, 0x72, 0x6f, 0x61, 0x64, 0x63, 0x61, 0x73, 0x74, + 0x48, 0x65, 0x6c, 0x6c, 0x6f, 0x73, 0x53, 0x65, 0x6e, 0x74, 0x88, 0x01, 0x01, 0x12, 0x44, 0x0a, + 0x1c, 0x6c, 0x32, 0x5f, 0x62, 0x72, 0x6f, 0x61, 0x64, 0x63, 0x61, 0x73, 0x74, 0x5f, 0x68, 0x65, + 0x6c, 0x6c, 0x6f, 0x73, 0x5f, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x64, 0x18, 0x12, 0x20, + 0x01, 0x28, 0x04, 0x48, 0x11, 0x52, 0x19, 0x6c, 0x32, 0x42, 0x72, 0x6f, 0x61, 0x64, 0x63, 0x61, + 0x73, 0x74, 0x48, 0x65, 0x6c, 0x6c, 0x6f, 0x73, 0x52, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x64, + 0x88, 0x01, 0x01, 0x12, 0x44, 0x0a, 0x1d, 0x6c, 0x32, 0x5f, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x5f, + 0x74, 0x6f, 0x5f, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x5f, 0x68, 0x65, 0x6c, 0x6c, 0x6f, 0x73, 0x5f, + 0x73, 0x65, 0x6e, 0x74, 0x18, 0x13, 0x20, 0x01, 0x28, 0x04, 0x48, 0x12, 0x52, 0x18, 0x6c, 0x32, + 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x54, 0x6f, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x48, 0x65, 0x6c, 0x6c, + 0x6f, 0x73, 0x53, 0x65, 0x6e, 0x74, 0x88, 0x01, 0x01, 0x12, 0x4c, 0x0a, 0x21, 0x6c, 0x32, 0x5f, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x5f, 0x74, 0x6f, 0x5f, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x5f, 0x68, - 0x65, 0x6c, 0x6c, 0x6f, 0x73, 0x5f, 0x73, 0x65, 0x6e, 0x74, 0x42, 0x24, 0x0a, 0x22, 0x5f, 0x6c, - 0x32, 0x5f, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x5f, 0x74, 0x6f, 0x5f, 0x70, 0x6f, 0x69, 0x6e, 0x74, - 0x5f, 0x68, 0x65, 0x6c, 0x6c, 0x6f, 0x73, 0x5f, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x64, - 0x42, 0x13, 0x0a, 0x11, 0x5f, 0x6c, 0x32, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, - 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x6c, 0x32, 0x5f, 0x70, 0x73, 0x6e, - 0x70, 0x5f, 0x73, 0x65, 0x6e, 0x74, 0x42, 0x13, 0x0a, 0x11, 0x5f, 0x6c, 0x32, 0x5f, 0x70, 0x73, - 0x6e, 0x70, 0x5f, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x64, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, - 0x6c, 0x32, 0x5f, 0x63, 0x73, 0x6e, 0x70, 0x5f, 0x73, 0x65, 0x6e, 0x74, 0x42, 0x13, 0x0a, 0x11, - 0x5f, 0x6c, 0x32, 0x5f, 0x63, 0x73, 0x6e, 0x70, 0x5f, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, - 0x64, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x6c, 0x32, 0x5f, 0x6c, 0x73, 0x70, 0x5f, 0x73, 0x65, 0x6e, - 0x74, 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x6c, 0x32, 0x5f, 0x6c, 0x73, 0x70, 0x5f, 0x72, 0x65, 0x63, - 0x65, 0x69, 0x76, 0x65, 0x64, 0x22, 0xd4, 0x02, 0x0a, 0x11, 0x4c, 0x61, 0x67, 0x4d, 0x65, 0x74, + 0x65, 0x6c, 0x6c, 0x6f, 0x73, 0x5f, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x64, 0x18, 0x14, + 0x20, 0x01, 0x28, 0x04, 0x48, 0x13, 0x52, 0x1c, 0x6c, 0x32, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x54, + 0x6f, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x48, 0x65, 0x6c, 0x6c, 0x6f, 0x73, 0x52, 0x65, 0x63, 0x65, + 0x69, 0x76, 0x65, 0x64, 0x88, 0x01, 0x01, 0x12, 0x2d, 0x0a, 0x10, 0x6c, 0x32, 0x5f, 0x64, 0x61, + 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x15, 0x20, 0x01, 0x28, + 0x04, 0x48, 0x14, 0x52, 0x0e, 0x6c, 0x32, 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x53, + 0x69, 0x7a, 0x65, 0x88, 0x01, 0x01, 0x12, 0x25, 0x0a, 0x0c, 0x6c, 0x32, 0x5f, 0x70, 0x73, 0x6e, + 0x70, 0x5f, 0x73, 0x65, 0x6e, 0x74, 0x18, 0x16, 0x20, 0x01, 0x28, 0x04, 0x48, 0x15, 0x52, 0x0a, + 0x6c, 0x32, 0x50, 0x73, 0x6e, 0x70, 0x53, 0x65, 0x6e, 0x74, 0x88, 0x01, 0x01, 0x12, 0x2d, 0x0a, + 0x10, 0x6c, 0x32, 0x5f, 0x70, 0x73, 0x6e, 0x70, 0x5f, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, + 0x64, 0x18, 0x17, 0x20, 0x01, 0x28, 0x04, 0x48, 0x16, 0x52, 0x0e, 0x6c, 0x32, 0x50, 0x73, 0x6e, + 0x70, 0x52, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x64, 0x88, 0x01, 0x01, 0x12, 0x25, 0x0a, 0x0c, + 0x6c, 0x32, 0x5f, 0x63, 0x73, 0x6e, 0x70, 0x5f, 0x73, 0x65, 0x6e, 0x74, 0x18, 0x18, 0x20, 0x01, + 0x28, 0x04, 0x48, 0x17, 0x52, 0x0a, 0x6c, 0x32, 0x43, 0x73, 0x6e, 0x70, 0x53, 0x65, 0x6e, 0x74, + 0x88, 0x01, 0x01, 0x12, 0x2d, 0x0a, 0x10, 0x6c, 0x32, 0x5f, 0x63, 0x73, 0x6e, 0x70, 0x5f, 0x72, + 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x64, 0x18, 0x19, 0x20, 0x01, 0x28, 0x04, 0x48, 0x18, 0x52, + 0x0e, 0x6c, 0x32, 0x43, 0x73, 0x6e, 0x70, 0x52, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x64, 0x88, + 0x01, 0x01, 0x12, 0x23, 0x0a, 0x0b, 0x6c, 0x32, 0x5f, 0x6c, 0x73, 0x70, 0x5f, 0x73, 0x65, 0x6e, + 0x74, 0x18, 0x1a, 0x20, 0x01, 0x28, 0x04, 0x48, 0x19, 0x52, 0x09, 0x6c, 0x32, 0x4c, 0x73, 0x70, + 0x53, 0x65, 0x6e, 0x74, 0x88, 0x01, 0x01, 0x12, 0x2b, 0x0a, 0x0f, 0x6c, 0x32, 0x5f, 0x6c, 0x73, + 0x70, 0x5f, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x64, 0x18, 0x1b, 0x20, 0x01, 0x28, 0x04, + 0x48, 0x1a, 0x52, 0x0d, 0x6c, 0x32, 0x4c, 0x73, 0x70, 0x52, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, + 0x64, 0x88, 0x01, 0x01, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x42, 0x11, 0x0a, + 0x0f, 0x5f, 0x6c, 0x31, 0x5f, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x5f, 0x75, 0x70, + 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x6c, 0x31, 0x5f, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x5f, + 0x66, 0x6c, 0x61, 0x70, 0x42, 0x1b, 0x0a, 0x19, 0x5f, 0x6c, 0x31, 0x5f, 0x62, 0x72, 0x6f, 0x61, + 0x64, 0x63, 0x61, 0x73, 0x74, 0x5f, 0x68, 0x65, 0x6c, 0x6c, 0x6f, 0x73, 0x5f, 0x73, 0x65, 0x6e, + 0x74, 0x42, 0x1f, 0x0a, 0x1d, 0x5f, 0x6c, 0x31, 0x5f, 0x62, 0x72, 0x6f, 0x61, 0x64, 0x63, 0x61, + 0x73, 0x74, 0x5f, 0x68, 0x65, 0x6c, 0x6c, 0x6f, 0x73, 0x5f, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, + 0x65, 0x64, 0x42, 0x20, 0x0a, 0x1e, 0x5f, 0x6c, 0x31, 0x5f, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x5f, + 0x74, 0x6f, 0x5f, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x5f, 0x68, 0x65, 0x6c, 0x6c, 0x6f, 0x73, 0x5f, + 0x73, 0x65, 0x6e, 0x74, 0x42, 0x24, 0x0a, 0x22, 0x5f, 0x6c, 0x31, 0x5f, 0x70, 0x6f, 0x69, 0x6e, + 0x74, 0x5f, 0x74, 0x6f, 0x5f, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x5f, 0x68, 0x65, 0x6c, 0x6c, 0x6f, + 0x73, 0x5f, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x64, 0x42, 0x13, 0x0a, 0x11, 0x5f, 0x6c, + 0x31, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x42, + 0x0f, 0x0a, 0x0d, 0x5f, 0x6c, 0x31, 0x5f, 0x70, 0x73, 0x6e, 0x70, 0x5f, 0x73, 0x65, 0x6e, 0x74, + 0x42, 0x13, 0x0a, 0x11, 0x5f, 0x6c, 0x31, 0x5f, 0x70, 0x73, 0x6e, 0x70, 0x5f, 0x72, 0x65, 0x63, + 0x65, 0x69, 0x76, 0x65, 0x64, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x6c, 0x31, 0x5f, 0x63, 0x73, 0x6e, + 0x70, 0x5f, 0x73, 0x65, 0x6e, 0x74, 0x42, 0x13, 0x0a, 0x11, 0x5f, 0x6c, 0x31, 0x5f, 0x63, 0x73, + 0x6e, 0x70, 0x5f, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x64, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, + 0x6c, 0x31, 0x5f, 0x6c, 0x73, 0x70, 0x5f, 0x73, 0x65, 0x6e, 0x74, 0x42, 0x12, 0x0a, 0x10, 0x5f, + 0x6c, 0x31, 0x5f, 0x6c, 0x73, 0x70, 0x5f, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x64, 0x42, + 0x11, 0x0a, 0x0f, 0x5f, 0x6c, 0x32, 0x5f, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x5f, + 0x75, 0x70, 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x6c, 0x32, 0x5f, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, + 0x6e, 0x5f, 0x66, 0x6c, 0x61, 0x70, 0x42, 0x1b, 0x0a, 0x19, 0x5f, 0x6c, 0x32, 0x5f, 0x62, 0x72, + 0x6f, 0x61, 0x64, 0x63, 0x61, 0x73, 0x74, 0x5f, 0x68, 0x65, 0x6c, 0x6c, 0x6f, 0x73, 0x5f, 0x73, + 0x65, 0x6e, 0x74, 0x42, 0x1f, 0x0a, 0x1d, 0x5f, 0x6c, 0x32, 0x5f, 0x62, 0x72, 0x6f, 0x61, 0x64, + 0x63, 0x61, 0x73, 0x74, 0x5f, 0x68, 0x65, 0x6c, 0x6c, 0x6f, 0x73, 0x5f, 0x72, 0x65, 0x63, 0x65, + 0x69, 0x76, 0x65, 0x64, 0x42, 0x20, 0x0a, 0x1e, 0x5f, 0x6c, 0x32, 0x5f, 0x70, 0x6f, 0x69, 0x6e, + 0x74, 0x5f, 0x74, 0x6f, 0x5f, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x5f, 0x68, 0x65, 0x6c, 0x6c, 0x6f, + 0x73, 0x5f, 0x73, 0x65, 0x6e, 0x74, 0x42, 0x24, 0x0a, 0x22, 0x5f, 0x6c, 0x32, 0x5f, 0x70, 0x6f, + 0x69, 0x6e, 0x74, 0x5f, 0x74, 0x6f, 0x5f, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x5f, 0x68, 0x65, 0x6c, + 0x6c, 0x6f, 0x73, 0x5f, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x64, 0x42, 0x13, 0x0a, 0x11, + 0x5f, 0x6c, 0x32, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x5f, 0x73, 0x69, 0x7a, + 0x65, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x6c, 0x32, 0x5f, 0x70, 0x73, 0x6e, 0x70, 0x5f, 0x73, 0x65, + 0x6e, 0x74, 0x42, 0x13, 0x0a, 0x11, 0x5f, 0x6c, 0x32, 0x5f, 0x70, 0x73, 0x6e, 0x70, 0x5f, 0x72, + 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x64, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x6c, 0x32, 0x5f, 0x63, + 0x73, 0x6e, 0x70, 0x5f, 0x73, 0x65, 0x6e, 0x74, 0x42, 0x13, 0x0a, 0x11, 0x5f, 0x6c, 0x32, 0x5f, + 0x63, 0x73, 0x6e, 0x70, 0x5f, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x64, 0x42, 0x0e, 0x0a, + 0x0c, 0x5f, 0x6c, 0x32, 0x5f, 0x6c, 0x73, 0x70, 0x5f, 0x73, 0x65, 0x6e, 0x74, 0x42, 0x12, 0x0a, + 0x10, 0x5f, 0x6c, 0x32, 0x5f, 0x6c, 0x73, 0x70, 0x5f, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, + 0x64, 0x22, 0xd4, 0x02, 0x0a, 0x11, 0x4c, 0x61, 0x67, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x6c, 0x61, 0x67, 0x5f, 0x6e, + 0x61, 0x6d, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x08, 0x6c, 0x61, 0x67, 0x4e, + 0x61, 0x6d, 0x65, 0x73, 0x12, 0x4a, 0x0a, 0x0c, 0x63, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x5f, 0x6e, + 0x61, 0x6d, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x27, 0x2e, 0x6f, 0x74, 0x67, + 0x2e, 0x4c, 0x61, 0x67, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x2e, 0x43, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x2e, 0x45, + 0x6e, 0x75, 0x6d, 0x52, 0x0b, 0x63, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x73, + 0x1a, 0xd5, 0x01, 0x0a, 0x0b, 0x43, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x73, + 0x22, 0xc5, 0x01, 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x0a, 0x0b, 0x75, 0x6e, 0x73, + 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x10, 0x00, 0x12, 0x0f, 0x0a, 0x0b, 0x6f, 0x70, + 0x65, 0x72, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x10, 0x01, 0x12, 0x13, 0x0a, 0x0f, 0x6d, + 0x65, 0x6d, 0x62, 0x65, 0x72, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x5f, 0x75, 0x70, 0x10, 0x02, + 0x12, 0x0d, 0x0a, 0x09, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x73, 0x5f, 0x74, 0x78, 0x10, 0x03, 0x12, + 0x0d, 0x0a, 0x09, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x73, 0x5f, 0x72, 0x78, 0x10, 0x04, 0x12, 0x0c, + 0x0a, 0x08, 0x62, 0x79, 0x74, 0x65, 0x73, 0x5f, 0x74, 0x78, 0x10, 0x05, 0x12, 0x0c, 0x0a, 0x08, + 0x62, 0x79, 0x74, 0x65, 0x73, 0x5f, 0x72, 0x78, 0x10, 0x06, 0x12, 0x12, 0x0a, 0x0e, 0x66, 0x72, + 0x61, 0x6d, 0x65, 0x73, 0x5f, 0x74, 0x78, 0x5f, 0x72, 0x61, 0x74, 0x65, 0x10, 0x07, 0x12, 0x12, + 0x0a, 0x0e, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x73, 0x5f, 0x72, 0x78, 0x5f, 0x72, 0x61, 0x74, 0x65, + 0x10, 0x08, 0x12, 0x11, 0x0a, 0x0d, 0x62, 0x79, 0x74, 0x65, 0x73, 0x5f, 0x74, 0x78, 0x5f, 0x72, + 0x61, 0x74, 0x65, 0x10, 0x09, 0x12, 0x11, 0x0a, 0x0d, 0x62, 0x79, 0x74, 0x65, 0x73, 0x5f, 0x72, + 0x78, 0x5f, 0x72, 0x61, 0x74, 0x65, 0x10, 0x0a, 0x22, 0xa9, 0x05, 0x0a, 0x09, 0x4c, 0x61, 0x67, + 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x12, 0x17, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, + 0x44, 0x0a, 0x0b, 0x6f, 0x70, 0x65, 0x72, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1e, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x4c, 0x61, 0x67, 0x4d, 0x65, + 0x74, 0x72, 0x69, 0x63, 0x2e, 0x4f, 0x70, 0x65, 0x72, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x2e, + 0x45, 0x6e, 0x75, 0x6d, 0x48, 0x01, 0x52, 0x0a, 0x6f, 0x70, 0x65, 0x72, 0x53, 0x74, 0x61, 0x74, + 0x75, 0x73, 0x88, 0x01, 0x01, 0x12, 0x2b, 0x0a, 0x0f, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x5f, + 0x70, 0x6f, 0x72, 0x74, 0x73, 0x5f, 0x75, 0x70, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x02, + 0x52, 0x0d, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x50, 0x6f, 0x72, 0x74, 0x73, 0x55, 0x70, 0x88, + 0x01, 0x01, 0x12, 0x20, 0x0a, 0x09, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x73, 0x5f, 0x74, 0x78, 0x18, + 0x04, 0x20, 0x01, 0x28, 0x04, 0x48, 0x03, 0x52, 0x08, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x73, 0x54, + 0x78, 0x88, 0x01, 0x01, 0x12, 0x20, 0x0a, 0x09, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x73, 0x5f, 0x72, + 0x78, 0x18, 0x05, 0x20, 0x01, 0x28, 0x04, 0x48, 0x04, 0x52, 0x08, 0x66, 0x72, 0x61, 0x6d, 0x65, + 0x73, 0x52, 0x78, 0x88, 0x01, 0x01, 0x12, 0x1e, 0x0a, 0x08, 0x62, 0x79, 0x74, 0x65, 0x73, 0x5f, + 0x74, 0x78, 0x18, 0x06, 0x20, 0x01, 0x28, 0x04, 0x48, 0x05, 0x52, 0x07, 0x62, 0x79, 0x74, 0x65, + 0x73, 0x54, 0x78, 0x88, 0x01, 0x01, 0x12, 0x1e, 0x0a, 0x08, 0x62, 0x79, 0x74, 0x65, 0x73, 0x5f, + 0x72, 0x78, 0x18, 0x07, 0x20, 0x01, 0x28, 0x04, 0x48, 0x06, 0x52, 0x07, 0x62, 0x79, 0x74, 0x65, + 0x73, 0x52, 0x78, 0x88, 0x01, 0x01, 0x12, 0x29, 0x0a, 0x0e, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x73, + 0x5f, 0x74, 0x78, 0x5f, 0x72, 0x61, 0x74, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x02, 0x48, 0x07, + 0x52, 0x0c, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x73, 0x54, 0x78, 0x52, 0x61, 0x74, 0x65, 0x88, 0x01, + 0x01, 0x12, 0x29, 0x0a, 0x0e, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x73, 0x5f, 0x72, 0x78, 0x5f, 0x72, + 0x61, 0x74, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x02, 0x48, 0x08, 0x52, 0x0c, 0x66, 0x72, 0x61, + 0x6d, 0x65, 0x73, 0x52, 0x78, 0x52, 0x61, 0x74, 0x65, 0x88, 0x01, 0x01, 0x12, 0x27, 0x0a, 0x0d, + 0x62, 0x79, 0x74, 0x65, 0x73, 0x5f, 0x74, 0x78, 0x5f, 0x72, 0x61, 0x74, 0x65, 0x18, 0x0a, 0x20, + 0x01, 0x28, 0x02, 0x48, 0x09, 0x52, 0x0b, 0x62, 0x79, 0x74, 0x65, 0x73, 0x54, 0x78, 0x52, 0x61, + 0x74, 0x65, 0x88, 0x01, 0x01, 0x12, 0x27, 0x0a, 0x0d, 0x62, 0x79, 0x74, 0x65, 0x73, 0x5f, 0x72, + 0x78, 0x5f, 0x72, 0x61, 0x74, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x02, 0x48, 0x0a, 0x52, 0x0b, + 0x62, 0x79, 0x74, 0x65, 0x73, 0x52, 0x78, 0x52, 0x61, 0x74, 0x65, 0x88, 0x01, 0x01, 0x1a, 0x37, + 0x0a, 0x0a, 0x4f, 0x70, 0x65, 0x72, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x22, 0x29, 0x0a, 0x04, + 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x0a, 0x0b, 0x75, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, + 0x69, 0x65, 0x64, 0x10, 0x00, 0x12, 0x06, 0x0a, 0x02, 0x75, 0x70, 0x10, 0x01, 0x12, 0x08, 0x0a, + 0x04, 0x64, 0x6f, 0x77, 0x6e, 0x10, 0x02, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x6e, 0x61, 0x6d, 0x65, + 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x6f, 0x70, 0x65, 0x72, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, + 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x5f, 0x70, 0x6f, 0x72, 0x74, + 0x73, 0x5f, 0x75, 0x70, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x73, 0x5f, + 0x74, 0x78, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x73, 0x5f, 0x72, 0x78, + 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x5f, 0x74, 0x78, 0x42, 0x0b, 0x0a, + 0x09, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x5f, 0x72, 0x78, 0x42, 0x11, 0x0a, 0x0f, 0x5f, 0x66, + 0x72, 0x61, 0x6d, 0x65, 0x73, 0x5f, 0x74, 0x78, 0x5f, 0x72, 0x61, 0x74, 0x65, 0x42, 0x11, 0x0a, + 0x0f, 0x5f, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x73, 0x5f, 0x72, 0x78, 0x5f, 0x72, 0x61, 0x74, 0x65, + 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x5f, 0x74, 0x78, 0x5f, 0x72, 0x61, + 0x74, 0x65, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x5f, 0x72, 0x78, 0x5f, + 0x72, 0x61, 0x74, 0x65, 0x22, 0xdf, 0x03, 0x0a, 0x12, 0x4c, 0x61, 0x63, 0x70, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x6c, 0x61, 0x67, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x08, - 0x6c, 0x61, 0x67, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x12, 0x4a, 0x0a, 0x0c, 0x63, 0x6f, 0x6c, 0x75, - 0x6d, 0x6e, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x27, - 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x4c, 0x61, 0x67, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x43, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x4e, 0x61, 0x6d, - 0x65, 0x73, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x52, 0x0b, 0x63, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x4e, - 0x61, 0x6d, 0x65, 0x73, 0x1a, 0xd5, 0x01, 0x0a, 0x0b, 0x43, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x4e, - 0x61, 0x6d, 0x65, 0x73, 0x22, 0xc5, 0x01, 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x0a, - 0x0b, 0x75, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x10, 0x00, 0x12, 0x0f, - 0x0a, 0x0b, 0x6f, 0x70, 0x65, 0x72, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x10, 0x01, 0x12, - 0x13, 0x0a, 0x0f, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x5f, - 0x75, 0x70, 0x10, 0x02, 0x12, 0x0d, 0x0a, 0x09, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x73, 0x5f, 0x74, - 0x78, 0x10, 0x03, 0x12, 0x0d, 0x0a, 0x09, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x73, 0x5f, 0x72, 0x78, - 0x10, 0x04, 0x12, 0x0c, 0x0a, 0x08, 0x62, 0x79, 0x74, 0x65, 0x73, 0x5f, 0x74, 0x78, 0x10, 0x05, - 0x12, 0x0c, 0x0a, 0x08, 0x62, 0x79, 0x74, 0x65, 0x73, 0x5f, 0x72, 0x78, 0x10, 0x06, 0x12, 0x12, - 0x0a, 0x0e, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x73, 0x5f, 0x74, 0x78, 0x5f, 0x72, 0x61, 0x74, 0x65, - 0x10, 0x07, 0x12, 0x12, 0x0a, 0x0e, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x73, 0x5f, 0x72, 0x78, 0x5f, - 0x72, 0x61, 0x74, 0x65, 0x10, 0x08, 0x12, 0x11, 0x0a, 0x0d, 0x62, 0x79, 0x74, 0x65, 0x73, 0x5f, - 0x74, 0x78, 0x5f, 0x72, 0x61, 0x74, 0x65, 0x10, 0x09, 0x12, 0x11, 0x0a, 0x0d, 0x62, 0x79, 0x74, - 0x65, 0x73, 0x5f, 0x72, 0x78, 0x5f, 0x72, 0x61, 0x74, 0x65, 0x10, 0x0a, 0x22, 0xa9, 0x05, 0x0a, - 0x09, 0x4c, 0x61, 0x67, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x12, 0x17, 0x0a, 0x04, 0x6e, 0x61, - 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, - 0x88, 0x01, 0x01, 0x12, 0x44, 0x0a, 0x0b, 0x6f, 0x70, 0x65, 0x72, 0x5f, 0x73, 0x74, 0x61, 0x74, - 0x75, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1e, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x4c, - 0x61, 0x67, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x2e, 0x4f, 0x70, 0x65, 0x72, 0x53, 0x74, 0x61, - 0x74, 0x75, 0x73, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x48, 0x01, 0x52, 0x0a, 0x6f, 0x70, 0x65, 0x72, - 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x88, 0x01, 0x01, 0x12, 0x2b, 0x0a, 0x0f, 0x6d, 0x65, 0x6d, - 0x62, 0x65, 0x72, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x5f, 0x75, 0x70, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x0d, 0x48, 0x02, 0x52, 0x0d, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x50, 0x6f, 0x72, 0x74, - 0x73, 0x55, 0x70, 0x88, 0x01, 0x01, 0x12, 0x20, 0x0a, 0x09, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x73, - 0x5f, 0x74, 0x78, 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, 0x48, 0x03, 0x52, 0x08, 0x66, 0x72, 0x61, - 0x6d, 0x65, 0x73, 0x54, 0x78, 0x88, 0x01, 0x01, 0x12, 0x20, 0x0a, 0x09, 0x66, 0x72, 0x61, 0x6d, - 0x65, 0x73, 0x5f, 0x72, 0x78, 0x18, 0x05, 0x20, 0x01, 0x28, 0x04, 0x48, 0x04, 0x52, 0x08, 0x66, - 0x72, 0x61, 0x6d, 0x65, 0x73, 0x52, 0x78, 0x88, 0x01, 0x01, 0x12, 0x1e, 0x0a, 0x08, 0x62, 0x79, - 0x74, 0x65, 0x73, 0x5f, 0x74, 0x78, 0x18, 0x06, 0x20, 0x01, 0x28, 0x04, 0x48, 0x05, 0x52, 0x07, - 0x62, 0x79, 0x74, 0x65, 0x73, 0x54, 0x78, 0x88, 0x01, 0x01, 0x12, 0x1e, 0x0a, 0x08, 0x62, 0x79, - 0x74, 0x65, 0x73, 0x5f, 0x72, 0x78, 0x18, 0x07, 0x20, 0x01, 0x28, 0x04, 0x48, 0x06, 0x52, 0x07, - 0x62, 0x79, 0x74, 0x65, 0x73, 0x52, 0x78, 0x88, 0x01, 0x01, 0x12, 0x29, 0x0a, 0x0e, 0x66, 0x72, - 0x61, 0x6d, 0x65, 0x73, 0x5f, 0x74, 0x78, 0x5f, 0x72, 0x61, 0x74, 0x65, 0x18, 0x08, 0x20, 0x01, - 0x28, 0x02, 0x48, 0x07, 0x52, 0x0c, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x73, 0x54, 0x78, 0x52, 0x61, - 0x74, 0x65, 0x88, 0x01, 0x01, 0x12, 0x29, 0x0a, 0x0e, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x73, 0x5f, - 0x72, 0x78, 0x5f, 0x72, 0x61, 0x74, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x02, 0x48, 0x08, 0x52, - 0x0c, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x73, 0x52, 0x78, 0x52, 0x61, 0x74, 0x65, 0x88, 0x01, 0x01, - 0x12, 0x27, 0x0a, 0x0d, 0x62, 0x79, 0x74, 0x65, 0x73, 0x5f, 0x74, 0x78, 0x5f, 0x72, 0x61, 0x74, - 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x02, 0x48, 0x09, 0x52, 0x0b, 0x62, 0x79, 0x74, 0x65, 0x73, - 0x54, 0x78, 0x52, 0x61, 0x74, 0x65, 0x88, 0x01, 0x01, 0x12, 0x27, 0x0a, 0x0d, 0x62, 0x79, 0x74, - 0x65, 0x73, 0x5f, 0x72, 0x78, 0x5f, 0x72, 0x61, 0x74, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x02, - 0x48, 0x0a, 0x52, 0x0b, 0x62, 0x79, 0x74, 0x65, 0x73, 0x52, 0x78, 0x52, 0x61, 0x74, 0x65, 0x88, - 0x01, 0x01, 0x1a, 0x37, 0x0a, 0x0a, 0x4f, 0x70, 0x65, 0x72, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, - 0x22, 0x29, 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x0a, 0x0b, 0x75, 0x6e, 0x73, 0x70, - 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x10, 0x00, 0x12, 0x06, 0x0a, 0x02, 0x75, 0x70, 0x10, - 0x01, 0x12, 0x08, 0x0a, 0x04, 0x64, 0x6f, 0x77, 0x6e, 0x10, 0x02, 0x42, 0x07, 0x0a, 0x05, 0x5f, - 0x6e, 0x61, 0x6d, 0x65, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x6f, 0x70, 0x65, 0x72, 0x5f, 0x73, 0x74, - 0x61, 0x74, 0x75, 0x73, 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x5f, - 0x70, 0x6f, 0x72, 0x74, 0x73, 0x5f, 0x75, 0x70, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x66, 0x72, 0x61, - 0x6d, 0x65, 0x73, 0x5f, 0x74, 0x78, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x66, 0x72, 0x61, 0x6d, 0x65, - 0x73, 0x5f, 0x72, 0x78, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x5f, 0x74, - 0x78, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x5f, 0x72, 0x78, 0x42, 0x11, - 0x0a, 0x0f, 0x5f, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x73, 0x5f, 0x74, 0x78, 0x5f, 0x72, 0x61, 0x74, - 0x65, 0x42, 0x11, 0x0a, 0x0f, 0x5f, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x73, 0x5f, 0x72, 0x78, 0x5f, - 0x72, 0x61, 0x74, 0x65, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x5f, 0x74, - 0x78, 0x5f, 0x72, 0x61, 0x74, 0x65, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, - 0x5f, 0x72, 0x78, 0x5f, 0x72, 0x61, 0x74, 0x65, 0x22, 0xdf, 0x03, 0x0a, 0x12, 0x4c, 0x61, 0x63, - 0x70, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, - 0x1b, 0x0a, 0x09, 0x6c, 0x61, 0x67, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, - 0x28, 0x09, 0x52, 0x08, 0x6c, 0x61, 0x67, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x12, 0x31, 0x0a, 0x15, - 0x6c, 0x61, 0x67, 0x5f, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x5f, - 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x12, 0x6c, 0x61, 0x67, - 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x50, 0x6f, 0x72, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x12, - 0x4b, 0x0a, 0x0c, 0x63, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x18, - 0x03, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x28, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x4c, 0x61, 0x63, 0x70, - 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x43, - 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x52, - 0x0b, 0x63, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x1a, 0xab, 0x02, 0x0a, - 0x0b, 0x43, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x22, 0x9b, 0x02, 0x0a, + 0x6c, 0x61, 0x67, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x12, 0x31, 0x0a, 0x15, 0x6c, 0x61, 0x67, 0x5f, + 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x6e, 0x61, 0x6d, 0x65, + 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x12, 0x6c, 0x61, 0x67, 0x4d, 0x65, 0x6d, 0x62, + 0x65, 0x72, 0x50, 0x6f, 0x72, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x12, 0x4b, 0x0a, 0x0c, 0x63, + 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, + 0x0e, 0x32, 0x28, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x4c, 0x61, 0x63, 0x70, 0x4d, 0x65, 0x74, 0x72, + 0x69, 0x63, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x43, 0x6f, 0x6c, 0x75, 0x6d, + 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x52, 0x0b, 0x63, 0x6f, 0x6c, + 0x75, 0x6d, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x1a, 0xab, 0x02, 0x0a, 0x0b, 0x43, 0x6f, 0x6c, + 0x75, 0x6d, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x22, 0x9b, 0x02, 0x0a, 0x04, 0x45, 0x6e, 0x75, + 0x6d, 0x12, 0x0f, 0x0a, 0x0b, 0x75, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, + 0x10, 0x00, 0x12, 0x13, 0x0a, 0x0f, 0x6c, 0x61, 0x63, 0x70, 0x5f, 0x70, 0x61, 0x63, 0x6b, 0x65, + 0x74, 0x73, 0x5f, 0x72, 0x78, 0x10, 0x01, 0x12, 0x13, 0x0a, 0x0f, 0x6c, 0x61, 0x63, 0x70, 0x5f, + 0x70, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x5f, 0x74, 0x78, 0x10, 0x02, 0x12, 0x12, 0x0a, 0x0e, + 0x6c, 0x61, 0x63, 0x70, 0x5f, 0x72, 0x78, 0x5f, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x10, 0x03, + 0x12, 0x0c, 0x0a, 0x08, 0x61, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x10, 0x04, 0x12, 0x0b, + 0x0a, 0x07, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x10, 0x05, 0x12, 0x13, 0x0a, 0x0f, 0x73, + 0x79, 0x6e, 0x63, 0x68, 0x72, 0x6f, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x10, 0x06, + 0x12, 0x10, 0x0a, 0x0c, 0x61, 0x67, 0x67, 0x72, 0x65, 0x67, 0x61, 0x74, 0x61, 0x62, 0x6c, 0x65, + 0x10, 0x07, 0x12, 0x0e, 0x0a, 0x0a, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6e, 0x67, + 0x10, 0x08, 0x12, 0x10, 0x0a, 0x0c, 0x64, 0x69, 0x73, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, + 0x6e, 0x67, 0x10, 0x09, 0x12, 0x0d, 0x0a, 0x09, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x5f, 0x69, + 0x64, 0x10, 0x0a, 0x12, 0x0c, 0x0a, 0x08, 0x6f, 0x70, 0x65, 0x72, 0x5f, 0x6b, 0x65, 0x79, 0x10, + 0x0b, 0x12, 0x0e, 0x0a, 0x0a, 0x70, 0x61, 0x72, 0x74, 0x6e, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x10, + 0x0c, 0x12, 0x0f, 0x0a, 0x0b, 0x70, 0x61, 0x72, 0x74, 0x6e, 0x65, 0x72, 0x5f, 0x6b, 0x65, 0x79, + 0x10, 0x0d, 0x12, 0x0c, 0x0a, 0x08, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x6e, 0x75, 0x6d, 0x10, 0x0e, + 0x12, 0x14, 0x0a, 0x10, 0x70, 0x61, 0x72, 0x74, 0x6e, 0x65, 0x72, 0x5f, 0x70, 0x6f, 0x72, 0x74, + 0x5f, 0x6e, 0x75, 0x6d, 0x10, 0x0f, 0x22, 0xe4, 0x09, 0x0a, 0x0a, 0x4c, 0x61, 0x63, 0x70, 0x4d, + 0x65, 0x74, 0x72, 0x69, 0x63, 0x12, 0x1e, 0x0a, 0x08, 0x6c, 0x61, 0x67, 0x5f, 0x6e, 0x61, 0x6d, + 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x07, 0x6c, 0x61, 0x67, 0x4e, 0x61, + 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, 0x34, 0x0a, 0x14, 0x6c, 0x61, 0x67, 0x5f, 0x6d, 0x65, 0x6d, + 0x62, 0x65, 0x72, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x09, 0x48, 0x01, 0x52, 0x11, 0x6c, 0x61, 0x67, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, + 0x50, 0x6f, 0x72, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, 0x2b, 0x0a, 0x0f, 0x6c, + 0x61, 0x63, 0x70, 0x5f, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x5f, 0x72, 0x78, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x04, 0x48, 0x02, 0x52, 0x0d, 0x6c, 0x61, 0x63, 0x70, 0x50, 0x61, 0x63, 0x6b, + 0x65, 0x74, 0x73, 0x52, 0x78, 0x88, 0x01, 0x01, 0x12, 0x2b, 0x0a, 0x0f, 0x6c, 0x61, 0x63, 0x70, + 0x5f, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x5f, 0x74, 0x78, 0x18, 0x04, 0x20, 0x01, 0x28, + 0x04, 0x48, 0x03, 0x52, 0x0d, 0x6c, 0x61, 0x63, 0x70, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x73, + 0x54, 0x78, 0x88, 0x01, 0x01, 0x12, 0x29, 0x0a, 0x0e, 0x6c, 0x61, 0x63, 0x70, 0x5f, 0x72, 0x78, + 0x5f, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x04, 0x48, 0x04, 0x52, + 0x0c, 0x6c, 0x61, 0x63, 0x70, 0x52, 0x78, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x88, 0x01, 0x01, + 0x12, 0x3e, 0x0a, 0x08, 0x61, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x18, 0x06, 0x20, 0x01, + 0x28, 0x0e, 0x32, 0x1d, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x4c, 0x61, 0x63, 0x70, 0x4d, 0x65, 0x74, + 0x72, 0x69, 0x63, 0x2e, 0x41, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x2e, 0x45, 0x6e, 0x75, + 0x6d, 0x48, 0x05, 0x52, 0x08, 0x61, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x88, 0x01, 0x01, + 0x12, 0x3b, 0x0a, 0x07, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, + 0x0e, 0x32, 0x1c, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x4c, 0x61, 0x63, 0x70, 0x4d, 0x65, 0x74, 0x72, + 0x69, 0x63, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x48, + 0x06, 0x52, 0x07, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x88, 0x01, 0x01, 0x12, 0x53, 0x0a, + 0x0f, 0x73, 0x79, 0x6e, 0x63, 0x68, 0x72, 0x6f, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x18, 0x08, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x24, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x4c, 0x61, 0x63, + 0x70, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x2e, 0x53, 0x79, 0x6e, 0x63, 0x68, 0x72, 0x6f, 0x6e, + 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x48, 0x07, 0x52, 0x0f, + 0x73, 0x79, 0x6e, 0x63, 0x68, 0x72, 0x6f, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x88, + 0x01, 0x01, 0x12, 0x27, 0x0a, 0x0c, 0x61, 0x67, 0x67, 0x72, 0x65, 0x67, 0x61, 0x74, 0x61, 0x62, + 0x6c, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x08, 0x48, 0x08, 0x52, 0x0c, 0x61, 0x67, 0x67, 0x72, + 0x65, 0x67, 0x61, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x88, 0x01, 0x01, 0x12, 0x23, 0x0a, 0x0a, 0x63, + 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6e, 0x67, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x08, 0x48, + 0x09, 0x52, 0x0a, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6e, 0x67, 0x88, 0x01, 0x01, + 0x12, 0x27, 0x0a, 0x0c, 0x64, 0x69, 0x73, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6e, 0x67, + 0x18, 0x0b, 0x20, 0x01, 0x28, 0x08, 0x48, 0x0a, 0x52, 0x0c, 0x64, 0x69, 0x73, 0x74, 0x72, 0x69, + 0x62, 0x75, 0x74, 0x69, 0x6e, 0x67, 0x88, 0x01, 0x01, 0x12, 0x20, 0x0a, 0x09, 0x73, 0x79, 0x73, + 0x74, 0x65, 0x6d, 0x5f, 0x69, 0x64, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x48, 0x0b, 0x52, 0x08, + 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x1e, 0x0a, 0x08, 0x6f, + 0x70, 0x65, 0x72, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x0c, 0x52, + 0x07, 0x6f, 0x70, 0x65, 0x72, 0x4b, 0x65, 0x79, 0x88, 0x01, 0x01, 0x12, 0x22, 0x0a, 0x0a, 0x70, + 0x61, 0x72, 0x74, 0x6e, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x09, 0x48, + 0x0d, 0x52, 0x09, 0x70, 0x61, 0x72, 0x74, 0x6e, 0x65, 0x72, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, + 0x24, 0x0a, 0x0b, 0x70, 0x61, 0x72, 0x74, 0x6e, 0x65, 0x72, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x0f, + 0x20, 0x01, 0x28, 0x0d, 0x48, 0x0e, 0x52, 0x0a, 0x70, 0x61, 0x72, 0x74, 0x6e, 0x65, 0x72, 0x4b, + 0x65, 0x79, 0x88, 0x01, 0x01, 0x12, 0x1e, 0x0a, 0x08, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x6e, 0x75, + 0x6d, 0x18, 0x10, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x0f, 0x52, 0x07, 0x70, 0x6f, 0x72, 0x74, 0x4e, + 0x75, 0x6d, 0x88, 0x01, 0x01, 0x12, 0x2d, 0x0a, 0x10, 0x70, 0x61, 0x72, 0x74, 0x6e, 0x65, 0x72, + 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x6e, 0x75, 0x6d, 0x18, 0x11, 0x20, 0x01, 0x28, 0x0d, 0x48, + 0x10, 0x52, 0x0e, 0x70, 0x61, 0x72, 0x74, 0x6e, 0x65, 0x72, 0x50, 0x6f, 0x72, 0x74, 0x4e, 0x75, + 0x6d, 0x88, 0x01, 0x01, 0x1a, 0x3c, 0x0a, 0x08, 0x41, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, + 0x22, 0x30, 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x0a, 0x0b, 0x75, 0x6e, 0x73, 0x70, + 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x10, 0x00, 0x12, 0x0a, 0x0a, 0x06, 0x61, 0x63, 0x74, + 0x69, 0x76, 0x65, 0x10, 0x01, 0x12, 0x0b, 0x0a, 0x07, 0x70, 0x61, 0x73, 0x73, 0x69, 0x76, 0x65, + 0x10, 0x02, 0x1a, 0x37, 0x0a, 0x07, 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x22, 0x2c, 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x0a, 0x0b, 0x75, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, - 0x66, 0x69, 0x65, 0x64, 0x10, 0x00, 0x12, 0x13, 0x0a, 0x0f, 0x6c, 0x61, 0x63, 0x70, 0x5f, 0x70, - 0x61, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x5f, 0x72, 0x78, 0x10, 0x01, 0x12, 0x13, 0x0a, 0x0f, 0x6c, - 0x61, 0x63, 0x70, 0x5f, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x5f, 0x74, 0x78, 0x10, 0x02, - 0x12, 0x12, 0x0a, 0x0e, 0x6c, 0x61, 0x63, 0x70, 0x5f, 0x72, 0x78, 0x5f, 0x65, 0x72, 0x72, 0x6f, - 0x72, 0x73, 0x10, 0x03, 0x12, 0x0c, 0x0a, 0x08, 0x61, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, - 0x10, 0x04, 0x12, 0x0b, 0x0a, 0x07, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x10, 0x05, 0x12, - 0x13, 0x0a, 0x0f, 0x73, 0x79, 0x6e, 0x63, 0x68, 0x72, 0x6f, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x10, 0x06, 0x12, 0x10, 0x0a, 0x0c, 0x61, 0x67, 0x67, 0x72, 0x65, 0x67, 0x61, 0x74, - 0x61, 0x62, 0x6c, 0x65, 0x10, 0x07, 0x12, 0x0e, 0x0a, 0x0a, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, - 0x74, 0x69, 0x6e, 0x67, 0x10, 0x08, 0x12, 0x10, 0x0a, 0x0c, 0x64, 0x69, 0x73, 0x74, 0x72, 0x69, - 0x62, 0x75, 0x74, 0x69, 0x6e, 0x67, 0x10, 0x09, 0x12, 0x0d, 0x0a, 0x09, 0x73, 0x79, 0x73, 0x74, - 0x65, 0x6d, 0x5f, 0x69, 0x64, 0x10, 0x0a, 0x12, 0x0c, 0x0a, 0x08, 0x6f, 0x70, 0x65, 0x72, 0x5f, - 0x6b, 0x65, 0x79, 0x10, 0x0b, 0x12, 0x0e, 0x0a, 0x0a, 0x70, 0x61, 0x72, 0x74, 0x6e, 0x65, 0x72, - 0x5f, 0x69, 0x64, 0x10, 0x0c, 0x12, 0x0f, 0x0a, 0x0b, 0x70, 0x61, 0x72, 0x74, 0x6e, 0x65, 0x72, - 0x5f, 0x6b, 0x65, 0x79, 0x10, 0x0d, 0x12, 0x0c, 0x0a, 0x08, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x6e, - 0x75, 0x6d, 0x10, 0x0e, 0x12, 0x14, 0x0a, 0x10, 0x70, 0x61, 0x72, 0x74, 0x6e, 0x65, 0x72, 0x5f, - 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x6e, 0x75, 0x6d, 0x10, 0x0f, 0x22, 0xe4, 0x09, 0x0a, 0x0a, 0x4c, - 0x61, 0x63, 0x70, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x12, 0x1e, 0x0a, 0x08, 0x6c, 0x61, 0x67, - 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x07, 0x6c, - 0x61, 0x67, 0x4e, 0x61, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, 0x34, 0x0a, 0x14, 0x6c, 0x61, 0x67, - 0x5f, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x6e, 0x61, 0x6d, - 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, 0x52, 0x11, 0x6c, 0x61, 0x67, 0x4d, 0x65, - 0x6d, 0x62, 0x65, 0x72, 0x50, 0x6f, 0x72, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, - 0x2b, 0x0a, 0x0f, 0x6c, 0x61, 0x63, 0x70, 0x5f, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x5f, - 0x72, 0x78, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x48, 0x02, 0x52, 0x0d, 0x6c, 0x61, 0x63, 0x70, - 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x52, 0x78, 0x88, 0x01, 0x01, 0x12, 0x2b, 0x0a, 0x0f, - 0x6c, 0x61, 0x63, 0x70, 0x5f, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x5f, 0x74, 0x78, 0x18, - 0x04, 0x20, 0x01, 0x28, 0x04, 0x48, 0x03, 0x52, 0x0d, 0x6c, 0x61, 0x63, 0x70, 0x50, 0x61, 0x63, - 0x6b, 0x65, 0x74, 0x73, 0x54, 0x78, 0x88, 0x01, 0x01, 0x12, 0x29, 0x0a, 0x0e, 0x6c, 0x61, 0x63, - 0x70, 0x5f, 0x72, 0x78, 0x5f, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, - 0x04, 0x48, 0x04, 0x52, 0x0c, 0x6c, 0x61, 0x63, 0x70, 0x52, 0x78, 0x45, 0x72, 0x72, 0x6f, 0x72, - 0x73, 0x88, 0x01, 0x01, 0x12, 0x3e, 0x0a, 0x08, 0x61, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, - 0x18, 0x06, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1d, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x4c, 0x61, 0x63, - 0x70, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x2e, 0x41, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, - 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x48, 0x05, 0x52, 0x08, 0x61, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, - 0x79, 0x88, 0x01, 0x01, 0x12, 0x3b, 0x0a, 0x07, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x18, - 0x07, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1c, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x4c, 0x61, 0x63, 0x70, - 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x2e, 0x45, - 0x6e, 0x75, 0x6d, 0x48, 0x06, 0x52, 0x07, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x88, 0x01, - 0x01, 0x12, 0x53, 0x0a, 0x0f, 0x73, 0x79, 0x6e, 0x63, 0x68, 0x72, 0x6f, 0x6e, 0x69, 0x7a, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x24, 0x2e, 0x6f, 0x74, 0x67, - 0x2e, 0x4c, 0x61, 0x63, 0x70, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x2e, 0x53, 0x79, 0x6e, 0x63, - 0x68, 0x72, 0x6f, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x45, 0x6e, 0x75, 0x6d, - 0x48, 0x07, 0x52, 0x0f, 0x73, 0x79, 0x6e, 0x63, 0x68, 0x72, 0x6f, 0x6e, 0x69, 0x7a, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x12, 0x27, 0x0a, 0x0c, 0x61, 0x67, 0x67, 0x72, 0x65, 0x67, - 0x61, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x08, 0x48, 0x08, 0x52, 0x0c, - 0x61, 0x67, 0x67, 0x72, 0x65, 0x67, 0x61, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x88, 0x01, 0x01, 0x12, - 0x23, 0x0a, 0x0a, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6e, 0x67, 0x18, 0x0a, 0x20, - 0x01, 0x28, 0x08, 0x48, 0x09, 0x52, 0x0a, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6e, - 0x67, 0x88, 0x01, 0x01, 0x12, 0x27, 0x0a, 0x0c, 0x64, 0x69, 0x73, 0x74, 0x72, 0x69, 0x62, 0x75, - 0x74, 0x69, 0x6e, 0x67, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x08, 0x48, 0x0a, 0x52, 0x0c, 0x64, 0x69, - 0x73, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6e, 0x67, 0x88, 0x01, 0x01, 0x12, 0x20, 0x0a, - 0x09, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x5f, 0x69, 0x64, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, - 0x48, 0x0b, 0x52, 0x08, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, - 0x1e, 0x0a, 0x08, 0x6f, 0x70, 0x65, 0x72, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x0d, 0x20, 0x01, 0x28, - 0x0d, 0x48, 0x0c, 0x52, 0x07, 0x6f, 0x70, 0x65, 0x72, 0x4b, 0x65, 0x79, 0x88, 0x01, 0x01, 0x12, - 0x22, 0x0a, 0x0a, 0x70, 0x61, 0x72, 0x74, 0x6e, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x0e, 0x20, - 0x01, 0x28, 0x09, 0x48, 0x0d, 0x52, 0x09, 0x70, 0x61, 0x72, 0x74, 0x6e, 0x65, 0x72, 0x49, 0x64, - 0x88, 0x01, 0x01, 0x12, 0x24, 0x0a, 0x0b, 0x70, 0x61, 0x72, 0x74, 0x6e, 0x65, 0x72, 0x5f, 0x6b, - 0x65, 0x79, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x0e, 0x52, 0x0a, 0x70, 0x61, 0x72, 0x74, - 0x6e, 0x65, 0x72, 0x4b, 0x65, 0x79, 0x88, 0x01, 0x01, 0x12, 0x1e, 0x0a, 0x08, 0x70, 0x6f, 0x72, - 0x74, 0x5f, 0x6e, 0x75, 0x6d, 0x18, 0x10, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x0f, 0x52, 0x07, 0x70, - 0x6f, 0x72, 0x74, 0x4e, 0x75, 0x6d, 0x88, 0x01, 0x01, 0x12, 0x2d, 0x0a, 0x10, 0x70, 0x61, 0x72, - 0x74, 0x6e, 0x65, 0x72, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x6e, 0x75, 0x6d, 0x18, 0x11, 0x20, - 0x01, 0x28, 0x0d, 0x48, 0x10, 0x52, 0x0e, 0x70, 0x61, 0x72, 0x74, 0x6e, 0x65, 0x72, 0x50, 0x6f, - 0x72, 0x74, 0x4e, 0x75, 0x6d, 0x88, 0x01, 0x01, 0x1a, 0x3c, 0x0a, 0x08, 0x41, 0x63, 0x74, 0x69, - 0x76, 0x69, 0x74, 0x79, 0x22, 0x30, 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x0a, 0x0b, - 0x75, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x10, 0x00, 0x12, 0x0a, 0x0a, - 0x06, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x10, 0x01, 0x12, 0x0b, 0x0a, 0x07, 0x70, 0x61, 0x73, - 0x73, 0x69, 0x76, 0x65, 0x10, 0x02, 0x1a, 0x37, 0x0a, 0x07, 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, - 0x74, 0x22, 0x2c, 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x0a, 0x0b, 0x75, 0x6e, 0x73, - 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, 0x73, 0x68, - 0x6f, 0x72, 0x74, 0x10, 0x01, 0x12, 0x08, 0x0a, 0x04, 0x6c, 0x6f, 0x6e, 0x67, 0x10, 0x02, 0x1a, - 0x45, 0x0a, 0x0f, 0x53, 0x79, 0x6e, 0x63, 0x68, 0x72, 0x6f, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x22, 0x32, 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x0a, 0x0b, 0x75, 0x6e, - 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x10, 0x00, 0x12, 0x0b, 0x0a, 0x07, 0x69, - 0x6e, 0x5f, 0x73, 0x79, 0x6e, 0x63, 0x10, 0x01, 0x12, 0x0c, 0x0a, 0x08, 0x6f, 0x75, 0x74, 0x5f, - 0x73, 0x79, 0x6e, 0x63, 0x10, 0x02, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x6c, 0x61, 0x67, 0x5f, 0x6e, - 0x61, 0x6d, 0x65, 0x42, 0x17, 0x0a, 0x15, 0x5f, 0x6c, 0x61, 0x67, 0x5f, 0x6d, 0x65, 0x6d, 0x62, - 0x65, 0x72, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x42, 0x12, 0x0a, 0x10, - 0x5f, 0x6c, 0x61, 0x63, 0x70, 0x5f, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x5f, 0x72, 0x78, - 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x6c, 0x61, 0x63, 0x70, 0x5f, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x74, - 0x73, 0x5f, 0x74, 0x78, 0x42, 0x11, 0x0a, 0x0f, 0x5f, 0x6c, 0x61, 0x63, 0x70, 0x5f, 0x72, 0x78, - 0x5f, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x61, 0x63, 0x74, 0x69, - 0x76, 0x69, 0x74, 0x79, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, - 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x73, 0x79, 0x6e, 0x63, 0x68, 0x72, 0x6f, 0x6e, 0x69, 0x7a, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x61, 0x67, 0x67, 0x72, 0x65, 0x67, 0x61, - 0x74, 0x61, 0x62, 0x6c, 0x65, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, - 0x74, 0x69, 0x6e, 0x67, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x64, 0x69, 0x73, 0x74, 0x72, 0x69, 0x62, - 0x75, 0x74, 0x69, 0x6e, 0x67, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, - 0x5f, 0x69, 0x64, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x6f, 0x70, 0x65, 0x72, 0x5f, 0x6b, 0x65, 0x79, - 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x70, 0x61, 0x72, 0x74, 0x6e, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x42, - 0x0e, 0x0a, 0x0c, 0x5f, 0x70, 0x61, 0x72, 0x74, 0x6e, 0x65, 0x72, 0x5f, 0x6b, 0x65, 0x79, 0x42, - 0x0b, 0x0a, 0x09, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x6e, 0x75, 0x6d, 0x42, 0x13, 0x0a, 0x11, - 0x5f, 0x70, 0x61, 0x72, 0x74, 0x6e, 0x65, 0x72, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x6e, 0x75, - 0x6d, 0x22, 0x95, 0x02, 0x0a, 0x12, 0x4c, 0x6c, 0x64, 0x70, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, - 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x6c, 0x6c, 0x64, 0x70, - 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x09, 0x6c, 0x6c, - 0x64, 0x70, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x12, 0x4b, 0x0a, 0x0c, 0x63, 0x6f, 0x6c, 0x75, 0x6d, - 0x6e, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x28, 0x2e, - 0x6f, 0x74, 0x67, 0x2e, 0x4c, 0x6c, 0x64, 0x70, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x43, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x4e, 0x61, 0x6d, - 0x65, 0x73, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x52, 0x0b, 0x63, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x4e, - 0x61, 0x6d, 0x65, 0x73, 0x1a, 0x92, 0x01, 0x0a, 0x0b, 0x43, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x4e, - 0x61, 0x6d, 0x65, 0x73, 0x22, 0x82, 0x01, 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x0a, - 0x0b, 0x75, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x10, 0x00, 0x12, 0x0d, - 0x0a, 0x09, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x73, 0x5f, 0x72, 0x78, 0x10, 0x01, 0x12, 0x0d, 0x0a, - 0x09, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x73, 0x5f, 0x74, 0x78, 0x10, 0x02, 0x12, 0x13, 0x0a, 0x0f, - 0x66, 0x72, 0x61, 0x6d, 0x65, 0x73, 0x5f, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x5f, 0x72, 0x78, 0x10, - 0x03, 0x12, 0x12, 0x0a, 0x0e, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x73, 0x5f, 0x64, 0x69, 0x73, 0x63, - 0x61, 0x72, 0x64, 0x10, 0x04, 0x12, 0x10, 0x0a, 0x0c, 0x74, 0x6c, 0x76, 0x73, 0x5f, 0x64, 0x69, - 0x73, 0x63, 0x61, 0x72, 0x64, 0x10, 0x05, 0x12, 0x10, 0x0a, 0x0c, 0x74, 0x6c, 0x76, 0x73, 0x5f, - 0x75, 0x6e, 0x6b, 0x6e, 0x6f, 0x77, 0x6e, 0x10, 0x06, 0x22, 0x80, 0x03, 0x0a, 0x0a, 0x4c, 0x6c, - 0x64, 0x70, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x12, 0x17, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x88, 0x01, - 0x01, 0x12, 0x20, 0x0a, 0x09, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x73, 0x5f, 0x72, 0x78, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x04, 0x48, 0x01, 0x52, 0x08, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x73, 0x52, 0x78, - 0x88, 0x01, 0x01, 0x12, 0x20, 0x0a, 0x09, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x73, 0x5f, 0x74, 0x78, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x48, 0x02, 0x52, 0x08, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x73, - 0x54, 0x78, 0x88, 0x01, 0x01, 0x12, 0x2b, 0x0a, 0x0f, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x73, 0x5f, - 0x65, 0x72, 0x72, 0x6f, 0x72, 0x5f, 0x72, 0x78, 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, 0x48, 0x03, - 0x52, 0x0d, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x73, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x52, 0x78, 0x88, - 0x01, 0x01, 0x12, 0x2a, 0x0a, 0x0e, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x73, 0x5f, 0x64, 0x69, 0x73, - 0x63, 0x61, 0x72, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x04, 0x48, 0x04, 0x52, 0x0d, 0x66, 0x72, - 0x61, 0x6d, 0x65, 0x73, 0x44, 0x69, 0x73, 0x63, 0x61, 0x72, 0x64, 0x88, 0x01, 0x01, 0x12, 0x26, - 0x0a, 0x0c, 0x74, 0x6c, 0x76, 0x73, 0x5f, 0x64, 0x69, 0x73, 0x63, 0x61, 0x72, 0x64, 0x18, 0x06, - 0x20, 0x01, 0x28, 0x04, 0x48, 0x05, 0x52, 0x0b, 0x74, 0x6c, 0x76, 0x73, 0x44, 0x69, 0x73, 0x63, - 0x61, 0x72, 0x64, 0x88, 0x01, 0x01, 0x12, 0x26, 0x0a, 0x0c, 0x74, 0x6c, 0x76, 0x73, 0x5f, 0x75, - 0x6e, 0x6b, 0x6e, 0x6f, 0x77, 0x6e, 0x18, 0x07, 0x20, 0x01, 0x28, 0x04, 0x48, 0x06, 0x52, 0x0b, - 0x74, 0x6c, 0x76, 0x73, 0x55, 0x6e, 0x6b, 0x6e, 0x6f, 0x77, 0x6e, 0x88, 0x01, 0x01, 0x42, 0x07, - 0x0a, 0x05, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x66, 0x72, 0x61, 0x6d, - 0x65, 0x73, 0x5f, 0x72, 0x78, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x73, - 0x5f, 0x74, 0x78, 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x73, 0x5f, 0x65, - 0x72, 0x72, 0x6f, 0x72, 0x5f, 0x72, 0x78, 0x42, 0x11, 0x0a, 0x0f, 0x5f, 0x66, 0x72, 0x61, 0x6d, - 0x65, 0x73, 0x5f, 0x64, 0x69, 0x73, 0x63, 0x61, 0x72, 0x64, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x74, - 0x6c, 0x76, 0x73, 0x5f, 0x64, 0x69, 0x73, 0x63, 0x61, 0x72, 0x64, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, - 0x74, 0x6c, 0x76, 0x73, 0x5f, 0x75, 0x6e, 0x6b, 0x6e, 0x6f, 0x77, 0x6e, 0x22, 0xdc, 0x05, 0x0a, - 0x12, 0x52, 0x73, 0x76, 0x70, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x12, 0x21, 0x0a, 0x0c, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x5f, 0x6e, 0x61, - 0x6d, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0b, 0x72, 0x6f, 0x75, 0x74, 0x65, - 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x12, 0x4b, 0x0a, 0x0c, 0x63, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, - 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x28, 0x2e, 0x6f, - 0x74, 0x67, 0x2e, 0x52, 0x73, 0x76, 0x70, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x43, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x4e, 0x61, 0x6d, 0x65, - 0x73, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x52, 0x0b, 0x63, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x4e, 0x61, - 0x6d, 0x65, 0x73, 0x1a, 0xd5, 0x04, 0x0a, 0x0b, 0x43, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x4e, 0x61, - 0x6d, 0x65, 0x73, 0x22, 0xc5, 0x04, 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x0a, 0x0b, - 0x75, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x10, 0x00, 0x12, 0x1f, 0x0a, - 0x1b, 0x69, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x5f, 0x70, 0x32, 0x70, 0x5f, 0x6c, 0x73, 0x70, - 0x73, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x65, 0x64, 0x10, 0x01, 0x12, 0x17, - 0x0a, 0x13, 0x69, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x5f, 0x70, 0x32, 0x70, 0x5f, 0x6c, 0x73, - 0x70, 0x73, 0x5f, 0x75, 0x70, 0x10, 0x02, 0x12, 0x16, 0x0a, 0x12, 0x65, 0x67, 0x72, 0x65, 0x73, - 0x73, 0x5f, 0x70, 0x32, 0x70, 0x5f, 0x6c, 0x73, 0x70, 0x73, 0x5f, 0x75, 0x70, 0x10, 0x03, 0x12, - 0x12, 0x0a, 0x0e, 0x6c, 0x73, 0x70, 0x5f, 0x66, 0x6c, 0x61, 0x70, 0x5f, 0x63, 0x6f, 0x75, 0x6e, - 0x74, 0x10, 0x04, 0x12, 0x0c, 0x0a, 0x08, 0x70, 0x61, 0x74, 0x68, 0x73, 0x5f, 0x74, 0x78, 0x10, - 0x05, 0x12, 0x0c, 0x0a, 0x08, 0x70, 0x61, 0x74, 0x68, 0x73, 0x5f, 0x72, 0x78, 0x10, 0x06, 0x12, - 0x0c, 0x0a, 0x08, 0x72, 0x65, 0x73, 0x76, 0x73, 0x5f, 0x74, 0x78, 0x10, 0x07, 0x12, 0x0c, 0x0a, - 0x08, 0x72, 0x65, 0x73, 0x76, 0x73, 0x5f, 0x72, 0x78, 0x10, 0x08, 0x12, 0x11, 0x0a, 0x0d, 0x70, - 0x61, 0x74, 0x68, 0x5f, 0x74, 0x65, 0x61, 0x72, 0x73, 0x5f, 0x74, 0x78, 0x10, 0x09, 0x12, 0x11, - 0x0a, 0x0d, 0x70, 0x61, 0x74, 0x68, 0x5f, 0x74, 0x65, 0x61, 0x72, 0x73, 0x5f, 0x72, 0x78, 0x10, - 0x0a, 0x12, 0x11, 0x0a, 0x0d, 0x72, 0x65, 0x73, 0x76, 0x5f, 0x74, 0x65, 0x61, 0x72, 0x73, 0x5f, - 0x74, 0x78, 0x10, 0x0b, 0x12, 0x11, 0x0a, 0x0d, 0x72, 0x65, 0x73, 0x76, 0x5f, 0x74, 0x65, 0x61, - 0x72, 0x73, 0x5f, 0x72, 0x78, 0x10, 0x0c, 0x12, 0x12, 0x0a, 0x0e, 0x70, 0x61, 0x74, 0x68, 0x5f, - 0x65, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x5f, 0x74, 0x78, 0x10, 0x0d, 0x12, 0x12, 0x0a, 0x0e, 0x70, - 0x61, 0x74, 0x68, 0x5f, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x5f, 0x72, 0x78, 0x10, 0x0e, 0x12, - 0x12, 0x0a, 0x0e, 0x72, 0x65, 0x73, 0x76, 0x5f, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x5f, 0x74, - 0x78, 0x10, 0x0f, 0x12, 0x12, 0x0a, 0x0e, 0x72, 0x65, 0x73, 0x76, 0x5f, 0x65, 0x72, 0x72, 0x6f, - 0x72, 0x73, 0x5f, 0x72, 0x78, 0x10, 0x10, 0x12, 0x10, 0x0a, 0x0c, 0x72, 0x65, 0x73, 0x76, 0x5f, - 0x63, 0x6f, 0x6e, 0x66, 0x5f, 0x74, 0x78, 0x10, 0x11, 0x12, 0x10, 0x0a, 0x0c, 0x72, 0x65, 0x73, - 0x76, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x5f, 0x72, 0x78, 0x10, 0x12, 0x12, 0x0d, 0x0a, 0x09, 0x68, - 0x65, 0x6c, 0x6c, 0x6f, 0x73, 0x5f, 0x74, 0x78, 0x10, 0x13, 0x12, 0x0d, 0x0a, 0x09, 0x68, 0x65, - 0x6c, 0x6c, 0x6f, 0x73, 0x5f, 0x72, 0x78, 0x10, 0x14, 0x12, 0x0b, 0x0a, 0x07, 0x61, 0x63, 0x6b, - 0x73, 0x5f, 0x74, 0x78, 0x10, 0x15, 0x12, 0x0b, 0x0a, 0x07, 0x61, 0x63, 0x6b, 0x73, 0x5f, 0x72, - 0x78, 0x10, 0x16, 0x12, 0x0c, 0x0a, 0x08, 0x6e, 0x61, 0x63, 0x6b, 0x73, 0x5f, 0x74, 0x78, 0x10, - 0x17, 0x12, 0x0c, 0x0a, 0x08, 0x6e, 0x61, 0x63, 0x6b, 0x73, 0x5f, 0x72, 0x78, 0x10, 0x18, 0x12, - 0x0f, 0x0a, 0x0b, 0x73, 0x72, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x5f, 0x74, 0x78, 0x10, 0x19, - 0x12, 0x0f, 0x0a, 0x0b, 0x73, 0x72, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x5f, 0x72, 0x78, 0x10, - 0x1a, 0x12, 0x0d, 0x0a, 0x09, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x5f, 0x74, 0x78, 0x10, 0x1b, - 0x12, 0x0d, 0x0a, 0x09, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x5f, 0x72, 0x78, 0x10, 0x1c, 0x12, - 0x20, 0x0a, 0x1c, 0x70, 0x61, 0x74, 0x68, 0x5f, 0x72, 0x65, 0x65, 0x76, 0x61, 0x6c, 0x75, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x74, 0x78, 0x10, - 0x1d, 0x12, 0x18, 0x0a, 0x14, 0x70, 0x61, 0x74, 0x68, 0x5f, 0x72, 0x65, 0x6f, 0x70, 0x74, 0x69, - 0x6d, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x10, 0x1e, 0x22, 0xff, 0x0d, 0x0a, 0x0a, - 0x52, 0x73, 0x76, 0x70, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x12, 0x17, 0x0a, 0x04, 0x6e, 0x61, - 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, - 0x88, 0x01, 0x01, 0x12, 0x42, 0x0a, 0x1b, 0x69, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x5f, 0x70, - 0x32, 0x70, 0x5f, 0x6c, 0x73, 0x70, 0x73, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, - 0x65, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x18, 0x69, 0x6e, 0x67, 0x72, - 0x65, 0x73, 0x73, 0x50, 0x32, 0x70, 0x4c, 0x73, 0x70, 0x73, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, - 0x75, 0x72, 0x65, 0x64, 0x88, 0x01, 0x01, 0x12, 0x32, 0x0a, 0x13, 0x69, 0x6e, 0x67, 0x72, 0x65, - 0x73, 0x73, 0x5f, 0x70, 0x32, 0x70, 0x5f, 0x6c, 0x73, 0x70, 0x73, 0x5f, 0x75, 0x70, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x0d, 0x48, 0x02, 0x52, 0x10, 0x69, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x50, - 0x32, 0x70, 0x4c, 0x73, 0x70, 0x73, 0x55, 0x70, 0x88, 0x01, 0x01, 0x12, 0x30, 0x0a, 0x12, 0x65, + 0x66, 0x69, 0x65, 0x64, 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, 0x73, 0x68, 0x6f, 0x72, 0x74, 0x10, + 0x01, 0x12, 0x08, 0x0a, 0x04, 0x6c, 0x6f, 0x6e, 0x67, 0x10, 0x02, 0x1a, 0x45, 0x0a, 0x0f, 0x53, + 0x79, 0x6e, 0x63, 0x68, 0x72, 0x6f, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x32, + 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x0a, 0x0b, 0x75, 0x6e, 0x73, 0x70, 0x65, 0x63, + 0x69, 0x66, 0x69, 0x65, 0x64, 0x10, 0x00, 0x12, 0x0b, 0x0a, 0x07, 0x69, 0x6e, 0x5f, 0x73, 0x79, + 0x6e, 0x63, 0x10, 0x01, 0x12, 0x0c, 0x0a, 0x08, 0x6f, 0x75, 0x74, 0x5f, 0x73, 0x79, 0x6e, 0x63, + 0x10, 0x02, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x6c, 0x61, 0x67, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x42, + 0x17, 0x0a, 0x15, 0x5f, 0x6c, 0x61, 0x67, 0x5f, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x5f, 0x70, + 0x6f, 0x72, 0x74, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x6c, 0x61, 0x63, + 0x70, 0x5f, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x5f, 0x72, 0x78, 0x42, 0x12, 0x0a, 0x10, + 0x5f, 0x6c, 0x61, 0x63, 0x70, 0x5f, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x5f, 0x74, 0x78, + 0x42, 0x11, 0x0a, 0x0f, 0x5f, 0x6c, 0x61, 0x63, 0x70, 0x5f, 0x72, 0x78, 0x5f, 0x65, 0x72, 0x72, + 0x6f, 0x72, 0x73, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, + 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x42, 0x12, 0x0a, 0x10, + 0x5f, 0x73, 0x79, 0x6e, 0x63, 0x68, 0x72, 0x6f, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x61, 0x67, 0x67, 0x72, 0x65, 0x67, 0x61, 0x74, 0x61, 0x62, 0x6c, + 0x65, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6e, 0x67, + 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x64, 0x69, 0x73, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6e, + 0x67, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x5f, 0x69, 0x64, 0x42, + 0x0b, 0x0a, 0x09, 0x5f, 0x6f, 0x70, 0x65, 0x72, 0x5f, 0x6b, 0x65, 0x79, 0x42, 0x0d, 0x0a, 0x0b, + 0x5f, 0x70, 0x61, 0x72, 0x74, 0x6e, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, + 0x70, 0x61, 0x72, 0x74, 0x6e, 0x65, 0x72, 0x5f, 0x6b, 0x65, 0x79, 0x42, 0x0b, 0x0a, 0x09, 0x5f, + 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x6e, 0x75, 0x6d, 0x42, 0x13, 0x0a, 0x11, 0x5f, 0x70, 0x61, 0x72, + 0x74, 0x6e, 0x65, 0x72, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x6e, 0x75, 0x6d, 0x22, 0x95, 0x02, + 0x0a, 0x12, 0x4c, 0x6c, 0x64, 0x70, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x6c, 0x6c, 0x64, 0x70, 0x5f, 0x6e, 0x61, 0x6d, + 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x09, 0x6c, 0x6c, 0x64, 0x70, 0x4e, 0x61, + 0x6d, 0x65, 0x73, 0x12, 0x4b, 0x0a, 0x0c, 0x63, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x5f, 0x6e, 0x61, + 0x6d, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x28, 0x2e, 0x6f, 0x74, 0x67, 0x2e, + 0x4c, 0x6c, 0x64, 0x70, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x2e, 0x43, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x2e, 0x45, + 0x6e, 0x75, 0x6d, 0x52, 0x0b, 0x63, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x73, + 0x1a, 0x92, 0x01, 0x0a, 0x0b, 0x43, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x73, + 0x22, 0x82, 0x01, 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x0a, 0x0b, 0x75, 0x6e, 0x73, + 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x10, 0x00, 0x12, 0x0d, 0x0a, 0x09, 0x66, 0x72, + 0x61, 0x6d, 0x65, 0x73, 0x5f, 0x72, 0x78, 0x10, 0x01, 0x12, 0x0d, 0x0a, 0x09, 0x66, 0x72, 0x61, + 0x6d, 0x65, 0x73, 0x5f, 0x74, 0x78, 0x10, 0x02, 0x12, 0x13, 0x0a, 0x0f, 0x66, 0x72, 0x61, 0x6d, + 0x65, 0x73, 0x5f, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x5f, 0x72, 0x78, 0x10, 0x03, 0x12, 0x12, 0x0a, + 0x0e, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x73, 0x5f, 0x64, 0x69, 0x73, 0x63, 0x61, 0x72, 0x64, 0x10, + 0x04, 0x12, 0x10, 0x0a, 0x0c, 0x74, 0x6c, 0x76, 0x73, 0x5f, 0x64, 0x69, 0x73, 0x63, 0x61, 0x72, + 0x64, 0x10, 0x05, 0x12, 0x10, 0x0a, 0x0c, 0x74, 0x6c, 0x76, 0x73, 0x5f, 0x75, 0x6e, 0x6b, 0x6e, + 0x6f, 0x77, 0x6e, 0x10, 0x06, 0x22, 0x80, 0x03, 0x0a, 0x0a, 0x4c, 0x6c, 0x64, 0x70, 0x4d, 0x65, + 0x74, 0x72, 0x69, 0x63, 0x12, 0x17, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x48, 0x00, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, 0x20, 0x0a, + 0x09, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x73, 0x5f, 0x72, 0x78, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, + 0x48, 0x01, 0x52, 0x08, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x73, 0x52, 0x78, 0x88, 0x01, 0x01, 0x12, + 0x20, 0x0a, 0x09, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x73, 0x5f, 0x74, 0x78, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x04, 0x48, 0x02, 0x52, 0x08, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x73, 0x54, 0x78, 0x88, 0x01, + 0x01, 0x12, 0x2b, 0x0a, 0x0f, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x73, 0x5f, 0x65, 0x72, 0x72, 0x6f, + 0x72, 0x5f, 0x72, 0x78, 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, 0x48, 0x03, 0x52, 0x0d, 0x66, 0x72, + 0x61, 0x6d, 0x65, 0x73, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x52, 0x78, 0x88, 0x01, 0x01, 0x12, 0x2a, + 0x0a, 0x0e, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x73, 0x5f, 0x64, 0x69, 0x73, 0x63, 0x61, 0x72, 0x64, + 0x18, 0x05, 0x20, 0x01, 0x28, 0x04, 0x48, 0x04, 0x52, 0x0d, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x73, + 0x44, 0x69, 0x73, 0x63, 0x61, 0x72, 0x64, 0x88, 0x01, 0x01, 0x12, 0x26, 0x0a, 0x0c, 0x74, 0x6c, + 0x76, 0x73, 0x5f, 0x64, 0x69, 0x73, 0x63, 0x61, 0x72, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x04, + 0x48, 0x05, 0x52, 0x0b, 0x74, 0x6c, 0x76, 0x73, 0x44, 0x69, 0x73, 0x63, 0x61, 0x72, 0x64, 0x88, + 0x01, 0x01, 0x12, 0x26, 0x0a, 0x0c, 0x74, 0x6c, 0x76, 0x73, 0x5f, 0x75, 0x6e, 0x6b, 0x6e, 0x6f, + 0x77, 0x6e, 0x18, 0x07, 0x20, 0x01, 0x28, 0x04, 0x48, 0x06, 0x52, 0x0b, 0x74, 0x6c, 0x76, 0x73, + 0x55, 0x6e, 0x6b, 0x6e, 0x6f, 0x77, 0x6e, 0x88, 0x01, 0x01, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x6e, + 0x61, 0x6d, 0x65, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x73, 0x5f, 0x72, + 0x78, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x73, 0x5f, 0x74, 0x78, 0x42, + 0x12, 0x0a, 0x10, 0x5f, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x73, 0x5f, 0x65, 0x72, 0x72, 0x6f, 0x72, + 0x5f, 0x72, 0x78, 0x42, 0x11, 0x0a, 0x0f, 0x5f, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x73, 0x5f, 0x64, + 0x69, 0x73, 0x63, 0x61, 0x72, 0x64, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x74, 0x6c, 0x76, 0x73, 0x5f, + 0x64, 0x69, 0x73, 0x63, 0x61, 0x72, 0x64, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x74, 0x6c, 0x76, 0x73, + 0x5f, 0x75, 0x6e, 0x6b, 0x6e, 0x6f, 0x77, 0x6e, 0x22, 0xdc, 0x05, 0x0a, 0x12, 0x52, 0x73, 0x76, + 0x70, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, + 0x21, 0x0a, 0x0c, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x18, + 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0b, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x4e, 0x61, 0x6d, + 0x65, 0x73, 0x12, 0x4b, 0x0a, 0x0c, 0x63, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x5f, 0x6e, 0x61, 0x6d, + 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x28, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x52, + 0x73, 0x76, 0x70, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x2e, 0x43, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x2e, 0x45, 0x6e, + 0x75, 0x6d, 0x52, 0x0b, 0x63, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x1a, + 0xd5, 0x04, 0x0a, 0x0b, 0x43, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x22, + 0xc5, 0x04, 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x0a, 0x0b, 0x75, 0x6e, 0x73, 0x70, + 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x10, 0x00, 0x12, 0x1f, 0x0a, 0x1b, 0x69, 0x6e, 0x67, + 0x72, 0x65, 0x73, 0x73, 0x5f, 0x70, 0x32, 0x70, 0x5f, 0x6c, 0x73, 0x70, 0x73, 0x5f, 0x63, 0x6f, + 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x65, 0x64, 0x10, 0x01, 0x12, 0x17, 0x0a, 0x13, 0x69, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x5f, 0x70, 0x32, 0x70, 0x5f, 0x6c, 0x73, 0x70, 0x73, 0x5f, 0x75, - 0x70, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x03, 0x52, 0x0f, 0x65, 0x67, 0x72, 0x65, 0x73, - 0x73, 0x50, 0x32, 0x70, 0x4c, 0x73, 0x70, 0x73, 0x55, 0x70, 0x88, 0x01, 0x01, 0x12, 0x29, 0x0a, - 0x0e, 0x6c, 0x73, 0x70, 0x5f, 0x66, 0x6c, 0x61, 0x70, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, - 0x05, 0x20, 0x01, 0x28, 0x04, 0x48, 0x04, 0x52, 0x0c, 0x6c, 0x73, 0x70, 0x46, 0x6c, 0x61, 0x70, - 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x88, 0x01, 0x01, 0x12, 0x1e, 0x0a, 0x08, 0x70, 0x61, 0x74, 0x68, - 0x73, 0x5f, 0x74, 0x78, 0x18, 0x06, 0x20, 0x01, 0x28, 0x04, 0x48, 0x05, 0x52, 0x07, 0x70, 0x61, - 0x74, 0x68, 0x73, 0x54, 0x78, 0x88, 0x01, 0x01, 0x12, 0x1e, 0x0a, 0x08, 0x70, 0x61, 0x74, 0x68, - 0x73, 0x5f, 0x72, 0x78, 0x18, 0x07, 0x20, 0x01, 0x28, 0x04, 0x48, 0x06, 0x52, 0x07, 0x70, 0x61, - 0x74, 0x68, 0x73, 0x52, 0x78, 0x88, 0x01, 0x01, 0x12, 0x1e, 0x0a, 0x08, 0x72, 0x65, 0x73, 0x76, - 0x73, 0x5f, 0x74, 0x78, 0x18, 0x08, 0x20, 0x01, 0x28, 0x04, 0x48, 0x07, 0x52, 0x07, 0x72, 0x65, - 0x73, 0x76, 0x73, 0x54, 0x78, 0x88, 0x01, 0x01, 0x12, 0x1e, 0x0a, 0x08, 0x72, 0x65, 0x73, 0x76, - 0x73, 0x5f, 0x72, 0x78, 0x18, 0x09, 0x20, 0x01, 0x28, 0x04, 0x48, 0x08, 0x52, 0x07, 0x72, 0x65, - 0x73, 0x76, 0x73, 0x52, 0x78, 0x88, 0x01, 0x01, 0x12, 0x27, 0x0a, 0x0d, 0x70, 0x61, 0x74, 0x68, - 0x5f, 0x74, 0x65, 0x61, 0x72, 0x73, 0x5f, 0x74, 0x78, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x04, 0x48, - 0x09, 0x52, 0x0b, 0x70, 0x61, 0x74, 0x68, 0x54, 0x65, 0x61, 0x72, 0x73, 0x54, 0x78, 0x88, 0x01, - 0x01, 0x12, 0x27, 0x0a, 0x0d, 0x70, 0x61, 0x74, 0x68, 0x5f, 0x74, 0x65, 0x61, 0x72, 0x73, 0x5f, - 0x72, 0x78, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x04, 0x48, 0x0a, 0x52, 0x0b, 0x70, 0x61, 0x74, 0x68, - 0x54, 0x65, 0x61, 0x72, 0x73, 0x52, 0x78, 0x88, 0x01, 0x01, 0x12, 0x27, 0x0a, 0x0d, 0x72, 0x65, - 0x73, 0x76, 0x5f, 0x74, 0x65, 0x61, 0x72, 0x73, 0x5f, 0x74, 0x78, 0x18, 0x0c, 0x20, 0x01, 0x28, - 0x04, 0x48, 0x0b, 0x52, 0x0b, 0x72, 0x65, 0x73, 0x76, 0x54, 0x65, 0x61, 0x72, 0x73, 0x54, 0x78, - 0x88, 0x01, 0x01, 0x12, 0x27, 0x0a, 0x0d, 0x72, 0x65, 0x73, 0x76, 0x5f, 0x74, 0x65, 0x61, 0x72, - 0x73, 0x5f, 0x72, 0x78, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x04, 0x48, 0x0c, 0x52, 0x0b, 0x72, 0x65, - 0x73, 0x76, 0x54, 0x65, 0x61, 0x72, 0x73, 0x52, 0x78, 0x88, 0x01, 0x01, 0x12, 0x29, 0x0a, 0x0e, - 0x70, 0x61, 0x74, 0x68, 0x5f, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x5f, 0x74, 0x78, 0x18, 0x0e, - 0x20, 0x01, 0x28, 0x04, 0x48, 0x0d, 0x52, 0x0c, 0x70, 0x61, 0x74, 0x68, 0x45, 0x72, 0x72, 0x6f, - 0x72, 0x73, 0x54, 0x78, 0x88, 0x01, 0x01, 0x12, 0x29, 0x0a, 0x0e, 0x70, 0x61, 0x74, 0x68, 0x5f, - 0x65, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x5f, 0x72, 0x78, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x04, 0x48, - 0x0e, 0x52, 0x0c, 0x70, 0x61, 0x74, 0x68, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x52, 0x78, 0x88, - 0x01, 0x01, 0x12, 0x29, 0x0a, 0x0e, 0x72, 0x65, 0x73, 0x76, 0x5f, 0x65, 0x72, 0x72, 0x6f, 0x72, - 0x73, 0x5f, 0x74, 0x78, 0x18, 0x10, 0x20, 0x01, 0x28, 0x04, 0x48, 0x0f, 0x52, 0x0c, 0x72, 0x65, - 0x73, 0x76, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x54, 0x78, 0x88, 0x01, 0x01, 0x12, 0x29, 0x0a, - 0x0e, 0x72, 0x65, 0x73, 0x76, 0x5f, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x5f, 0x72, 0x78, 0x18, - 0x11, 0x20, 0x01, 0x28, 0x04, 0x48, 0x10, 0x52, 0x0c, 0x72, 0x65, 0x73, 0x76, 0x45, 0x72, 0x72, - 0x6f, 0x72, 0x73, 0x52, 0x78, 0x88, 0x01, 0x01, 0x12, 0x25, 0x0a, 0x0c, 0x72, 0x65, 0x73, 0x76, - 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x5f, 0x74, 0x78, 0x18, 0x12, 0x20, 0x01, 0x28, 0x04, 0x48, 0x11, - 0x52, 0x0a, 0x72, 0x65, 0x73, 0x76, 0x43, 0x6f, 0x6e, 0x66, 0x54, 0x78, 0x88, 0x01, 0x01, 0x12, - 0x25, 0x0a, 0x0c, 0x72, 0x65, 0x73, 0x76, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x5f, 0x72, 0x78, 0x18, - 0x13, 0x20, 0x01, 0x28, 0x04, 0x48, 0x12, 0x52, 0x0a, 0x72, 0x65, 0x73, 0x76, 0x43, 0x6f, 0x6e, - 0x66, 0x52, 0x78, 0x88, 0x01, 0x01, 0x12, 0x20, 0x0a, 0x09, 0x68, 0x65, 0x6c, 0x6c, 0x6f, 0x73, - 0x5f, 0x74, 0x78, 0x18, 0x14, 0x20, 0x01, 0x28, 0x04, 0x48, 0x13, 0x52, 0x08, 0x68, 0x65, 0x6c, - 0x6c, 0x6f, 0x73, 0x54, 0x78, 0x88, 0x01, 0x01, 0x12, 0x20, 0x0a, 0x09, 0x68, 0x65, 0x6c, 0x6c, - 0x6f, 0x73, 0x5f, 0x72, 0x78, 0x18, 0x15, 0x20, 0x01, 0x28, 0x04, 0x48, 0x14, 0x52, 0x08, 0x68, - 0x65, 0x6c, 0x6c, 0x6f, 0x73, 0x52, 0x78, 0x88, 0x01, 0x01, 0x12, 0x1c, 0x0a, 0x07, 0x61, 0x63, - 0x6b, 0x73, 0x5f, 0x74, 0x78, 0x18, 0x16, 0x20, 0x01, 0x28, 0x04, 0x48, 0x15, 0x52, 0x06, 0x61, - 0x63, 0x6b, 0x73, 0x54, 0x78, 0x88, 0x01, 0x01, 0x12, 0x1c, 0x0a, 0x07, 0x61, 0x63, 0x6b, 0x73, - 0x5f, 0x72, 0x78, 0x18, 0x17, 0x20, 0x01, 0x28, 0x04, 0x48, 0x16, 0x52, 0x06, 0x61, 0x63, 0x6b, - 0x73, 0x52, 0x78, 0x88, 0x01, 0x01, 0x12, 0x1e, 0x0a, 0x08, 0x6e, 0x61, 0x63, 0x6b, 0x73, 0x5f, - 0x74, 0x78, 0x18, 0x18, 0x20, 0x01, 0x28, 0x04, 0x48, 0x17, 0x52, 0x07, 0x6e, 0x61, 0x63, 0x6b, - 0x73, 0x54, 0x78, 0x88, 0x01, 0x01, 0x12, 0x1e, 0x0a, 0x08, 0x6e, 0x61, 0x63, 0x6b, 0x73, 0x5f, - 0x72, 0x78, 0x18, 0x19, 0x20, 0x01, 0x28, 0x04, 0x48, 0x18, 0x52, 0x07, 0x6e, 0x61, 0x63, 0x6b, - 0x73, 0x52, 0x78, 0x88, 0x01, 0x01, 0x12, 0x24, 0x0a, 0x0b, 0x73, 0x72, 0x65, 0x66, 0x72, 0x65, - 0x73, 0x68, 0x5f, 0x74, 0x78, 0x18, 0x1a, 0x20, 0x01, 0x28, 0x04, 0x48, 0x19, 0x52, 0x0a, 0x73, - 0x72, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x54, 0x78, 0x88, 0x01, 0x01, 0x12, 0x24, 0x0a, 0x0b, - 0x73, 0x72, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x5f, 0x72, 0x78, 0x18, 0x1b, 0x20, 0x01, 0x28, - 0x04, 0x48, 0x1a, 0x52, 0x0a, 0x73, 0x72, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x52, 0x78, 0x88, - 0x01, 0x01, 0x12, 0x20, 0x0a, 0x09, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x5f, 0x74, 0x78, 0x18, - 0x1c, 0x20, 0x01, 0x28, 0x04, 0x48, 0x1b, 0x52, 0x08, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x54, - 0x78, 0x88, 0x01, 0x01, 0x12, 0x20, 0x0a, 0x09, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x5f, 0x72, - 0x78, 0x18, 0x1d, 0x20, 0x01, 0x28, 0x04, 0x48, 0x1c, 0x52, 0x08, 0x62, 0x75, 0x6e, 0x64, 0x6c, - 0x65, 0x52, 0x78, 0x88, 0x01, 0x01, 0x12, 0x44, 0x0a, 0x1c, 0x70, 0x61, 0x74, 0x68, 0x5f, 0x72, - 0x65, 0x65, 0x76, 0x61, 0x6c, 0x75, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x72, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x5f, 0x74, 0x78, 0x18, 0x1e, 0x20, 0x01, 0x28, 0x04, 0x48, 0x1d, 0x52, 0x19, - 0x70, 0x61, 0x74, 0x68, 0x52, 0x65, 0x65, 0x76, 0x61, 0x6c, 0x75, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x54, 0x78, 0x88, 0x01, 0x01, 0x12, 0x36, 0x0a, 0x14, - 0x70, 0x61, 0x74, 0x68, 0x5f, 0x72, 0x65, 0x6f, 0x70, 0x74, 0x69, 0x6d, 0x69, 0x7a, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x1f, 0x20, 0x01, 0x28, 0x04, 0x48, 0x1e, 0x52, 0x13, 0x70, 0x61, - 0x74, 0x68, 0x52, 0x65, 0x6f, 0x70, 0x74, 0x69, 0x6d, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x73, 0x88, 0x01, 0x01, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x42, 0x1e, 0x0a, - 0x1c, 0x5f, 0x69, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x5f, 0x70, 0x32, 0x70, 0x5f, 0x6c, 0x73, - 0x70, 0x73, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x65, 0x64, 0x42, 0x16, 0x0a, - 0x14, 0x5f, 0x69, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x5f, 0x70, 0x32, 0x70, 0x5f, 0x6c, 0x73, - 0x70, 0x73, 0x5f, 0x75, 0x70, 0x42, 0x15, 0x0a, 0x13, 0x5f, 0x65, 0x67, 0x72, 0x65, 0x73, 0x73, - 0x5f, 0x70, 0x32, 0x70, 0x5f, 0x6c, 0x73, 0x70, 0x73, 0x5f, 0x75, 0x70, 0x42, 0x11, 0x0a, 0x0f, - 0x5f, 0x6c, 0x73, 0x70, 0x5f, 0x66, 0x6c, 0x61, 0x70, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x42, - 0x0b, 0x0a, 0x09, 0x5f, 0x70, 0x61, 0x74, 0x68, 0x73, 0x5f, 0x74, 0x78, 0x42, 0x0b, 0x0a, 0x09, - 0x5f, 0x70, 0x61, 0x74, 0x68, 0x73, 0x5f, 0x72, 0x78, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x72, 0x65, - 0x73, 0x76, 0x73, 0x5f, 0x74, 0x78, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x72, 0x65, 0x73, 0x76, 0x73, - 0x5f, 0x72, 0x78, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x70, 0x61, 0x74, 0x68, 0x5f, 0x74, 0x65, 0x61, - 0x72, 0x73, 0x5f, 0x74, 0x78, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x70, 0x61, 0x74, 0x68, 0x5f, 0x74, - 0x65, 0x61, 0x72, 0x73, 0x5f, 0x72, 0x78, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x72, 0x65, 0x73, 0x76, - 0x5f, 0x74, 0x65, 0x61, 0x72, 0x73, 0x5f, 0x74, 0x78, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x72, 0x65, - 0x73, 0x76, 0x5f, 0x74, 0x65, 0x61, 0x72, 0x73, 0x5f, 0x72, 0x78, 0x42, 0x11, 0x0a, 0x0f, 0x5f, - 0x70, 0x61, 0x74, 0x68, 0x5f, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x5f, 0x74, 0x78, 0x42, 0x11, - 0x0a, 0x0f, 0x5f, 0x70, 0x61, 0x74, 0x68, 0x5f, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x5f, 0x72, - 0x78, 0x42, 0x11, 0x0a, 0x0f, 0x5f, 0x72, 0x65, 0x73, 0x76, 0x5f, 0x65, 0x72, 0x72, 0x6f, 0x72, - 0x73, 0x5f, 0x74, 0x78, 0x42, 0x11, 0x0a, 0x0f, 0x5f, 0x72, 0x65, 0x73, 0x76, 0x5f, 0x65, 0x72, - 0x72, 0x6f, 0x72, 0x73, 0x5f, 0x72, 0x78, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x72, 0x65, 0x73, 0x76, - 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x5f, 0x74, 0x78, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x72, 0x65, 0x73, - 0x76, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x5f, 0x72, 0x78, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x68, 0x65, - 0x6c, 0x6c, 0x6f, 0x73, 0x5f, 0x74, 0x78, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x68, 0x65, 0x6c, 0x6c, - 0x6f, 0x73, 0x5f, 0x72, 0x78, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x61, 0x63, 0x6b, 0x73, 0x5f, 0x74, - 0x78, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x61, 0x63, 0x6b, 0x73, 0x5f, 0x72, 0x78, 0x42, 0x0b, 0x0a, - 0x09, 0x5f, 0x6e, 0x61, 0x63, 0x6b, 0x73, 0x5f, 0x74, 0x78, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x6e, - 0x61, 0x63, 0x6b, 0x73, 0x5f, 0x72, 0x78, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x73, 0x72, 0x65, 0x66, - 0x72, 0x65, 0x73, 0x68, 0x5f, 0x74, 0x78, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x73, 0x72, 0x65, 0x66, - 0x72, 0x65, 0x73, 0x68, 0x5f, 0x72, 0x78, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x62, 0x75, 0x6e, 0x64, - 0x6c, 0x65, 0x5f, 0x74, 0x78, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, - 0x5f, 0x72, 0x78, 0x42, 0x1f, 0x0a, 0x1d, 0x5f, 0x70, 0x61, 0x74, 0x68, 0x5f, 0x72, 0x65, 0x65, - 0x76, 0x61, 0x6c, 0x75, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x5f, 0x74, 0x78, 0x42, 0x17, 0x0a, 0x15, 0x5f, 0x70, 0x61, 0x74, 0x68, 0x5f, 0x72, 0x65, - 0x6f, 0x70, 0x74, 0x69, 0x6d, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0xea, 0x04, - 0x0a, 0x0d, 0x53, 0x74, 0x61, 0x74, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, - 0x3b, 0x0a, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, - 0x1e, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x2e, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x48, - 0x00, 0x52, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x88, 0x01, 0x01, 0x12, 0x44, 0x0a, 0x0e, - 0x69, 0x70, 0x76, 0x34, 0x5f, 0x6e, 0x65, 0x69, 0x67, 0x68, 0x62, 0x6f, 0x72, 0x73, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x4e, 0x65, 0x69, 0x67, 0x68, - 0x62, 0x6f, 0x72, 0x73, 0x76, 0x34, 0x53, 0x74, 0x61, 0x74, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x52, 0x0d, 0x69, 0x70, 0x76, 0x34, 0x4e, 0x65, 0x69, 0x67, 0x68, 0x62, 0x6f, - 0x72, 0x73, 0x12, 0x44, 0x0a, 0x0e, 0x69, 0x70, 0x76, 0x36, 0x5f, 0x6e, 0x65, 0x69, 0x67, 0x68, - 0x62, 0x6f, 0x72, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x6f, 0x74, 0x67, - 0x2e, 0x4e, 0x65, 0x69, 0x67, 0x68, 0x62, 0x6f, 0x72, 0x73, 0x76, 0x36, 0x53, 0x74, 0x61, 0x74, - 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x52, 0x0d, 0x69, 0x70, 0x76, 0x36, 0x4e, - 0x65, 0x69, 0x67, 0x68, 0x62, 0x6f, 0x72, 0x73, 0x12, 0x3d, 0x0a, 0x0c, 0x62, 0x67, 0x70, 0x5f, - 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x65, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, - 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x42, 0x67, 0x70, 0x50, 0x72, 0x65, 0x66, 0x69, 0x78, 0x53, 0x74, - 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x52, 0x0b, 0x62, 0x67, 0x70, 0x50, - 0x72, 0x65, 0x66, 0x69, 0x78, 0x65, 0x73, 0x12, 0x36, 0x0a, 0x09, 0x69, 0x73, 0x69, 0x73, 0x5f, - 0x6c, 0x73, 0x70, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x6f, 0x74, 0x67, - 0x2e, 0x49, 0x73, 0x69, 0x73, 0x4c, 0x73, 0x70, 0x73, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x52, 0x08, 0x69, 0x73, 0x69, 0x73, 0x4c, 0x73, 0x70, 0x73, 0x12, - 0x45, 0x0a, 0x0e, 0x6c, 0x6c, 0x64, 0x70, 0x5f, 0x6e, 0x65, 0x69, 0x67, 0x68, 0x62, 0x6f, 0x72, - 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x4c, 0x6c, - 0x64, 0x70, 0x4e, 0x65, 0x69, 0x67, 0x68, 0x62, 0x6f, 0x72, 0x73, 0x53, 0x74, 0x61, 0x74, 0x65, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x52, 0x0d, 0x6c, 0x6c, 0x64, 0x70, 0x4e, 0x65, 0x69, - 0x67, 0x68, 0x62, 0x6f, 0x72, 0x73, 0x12, 0x36, 0x0a, 0x09, 0x72, 0x73, 0x76, 0x70, 0x5f, 0x6c, - 0x73, 0x70, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x6f, 0x74, 0x67, 0x2e, - 0x52, 0x73, 0x76, 0x70, 0x4c, 0x73, 0x70, 0x73, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x52, 0x08, 0x72, 0x73, 0x76, 0x70, 0x4c, 0x73, 0x70, 0x73, 0x1a, 0x8e, - 0x01, 0x0a, 0x06, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x22, 0x83, 0x01, 0x0a, 0x04, 0x45, 0x6e, - 0x75, 0x6d, 0x12, 0x0f, 0x0a, 0x0b, 0x75, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, - 0x64, 0x10, 0x00, 0x12, 0x12, 0x0a, 0x0e, 0x69, 0x70, 0x76, 0x34, 0x5f, 0x6e, 0x65, 0x69, 0x67, - 0x68, 0x62, 0x6f, 0x72, 0x73, 0x10, 0x01, 0x12, 0x12, 0x0a, 0x0e, 0x69, 0x70, 0x76, 0x36, 0x5f, - 0x6e, 0x65, 0x69, 0x67, 0x68, 0x62, 0x6f, 0x72, 0x73, 0x10, 0x02, 0x12, 0x10, 0x0a, 0x0c, 0x62, - 0x67, 0x70, 0x5f, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x65, 0x73, 0x10, 0x03, 0x12, 0x0d, 0x0a, - 0x09, 0x69, 0x73, 0x69, 0x73, 0x5f, 0x6c, 0x73, 0x70, 0x73, 0x10, 0x04, 0x12, 0x12, 0x0a, 0x0e, - 0x6c, 0x6c, 0x64, 0x70, 0x5f, 0x6e, 0x65, 0x69, 0x67, 0x68, 0x62, 0x6f, 0x72, 0x73, 0x10, 0x05, - 0x12, 0x0d, 0x0a, 0x09, 0x72, 0x73, 0x76, 0x70, 0x5f, 0x6c, 0x73, 0x70, 0x73, 0x10, 0x06, 0x42, - 0x09, 0x0a, 0x07, 0x5f, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x22, 0xc2, 0x04, 0x0a, 0x0e, 0x53, - 0x74, 0x61, 0x74, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3c, 0x0a, - 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1f, 0x2e, - 0x6f, 0x74, 0x67, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x2e, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x48, 0x00, - 0x52, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x88, 0x01, 0x01, 0x12, 0x3c, 0x0a, 0x0e, 0x69, - 0x70, 0x76, 0x34, 0x5f, 0x6e, 0x65, 0x69, 0x67, 0x68, 0x62, 0x6f, 0x72, 0x73, 0x18, 0x02, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x4e, 0x65, 0x69, 0x67, 0x68, 0x62, - 0x6f, 0x72, 0x73, 0x76, 0x34, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x0d, 0x69, 0x70, 0x76, 0x34, - 0x4e, 0x65, 0x69, 0x67, 0x68, 0x62, 0x6f, 0x72, 0x73, 0x12, 0x3c, 0x0a, 0x0e, 0x69, 0x70, 0x76, - 0x36, 0x5f, 0x6e, 0x65, 0x69, 0x67, 0x68, 0x62, 0x6f, 0x72, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, - 0x0b, 0x32, 0x15, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x4e, 0x65, 0x69, 0x67, 0x68, 0x62, 0x6f, 0x72, - 0x73, 0x76, 0x36, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x0d, 0x69, 0x70, 0x76, 0x36, 0x4e, 0x65, - 0x69, 0x67, 0x68, 0x62, 0x6f, 0x72, 0x73, 0x12, 0x38, 0x0a, 0x0c, 0x62, 0x67, 0x70, 0x5f, 0x70, - 0x72, 0x65, 0x66, 0x69, 0x78, 0x65, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x15, 0x2e, - 0x6f, 0x74, 0x67, 0x2e, 0x42, 0x67, 0x70, 0x50, 0x72, 0x65, 0x66, 0x69, 0x78, 0x65, 0x73, 0x53, - 0x74, 0x61, 0x74, 0x65, 0x52, 0x0b, 0x62, 0x67, 0x70, 0x50, 0x72, 0x65, 0x66, 0x69, 0x78, 0x65, - 0x73, 0x12, 0x2f, 0x0a, 0x09, 0x69, 0x73, 0x69, 0x73, 0x5f, 0x6c, 0x73, 0x70, 0x73, 0x18, 0x05, - 0x20, 0x03, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x49, 0x73, 0x69, 0x73, 0x4c, - 0x73, 0x70, 0x73, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x08, 0x69, 0x73, 0x69, 0x73, 0x4c, 0x73, - 0x70, 0x73, 0x12, 0x3e, 0x0a, 0x0e, 0x6c, 0x6c, 0x64, 0x70, 0x5f, 0x6e, 0x65, 0x69, 0x67, 0x68, - 0x62, 0x6f, 0x72, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x6f, 0x74, 0x67, - 0x2e, 0x4c, 0x6c, 0x64, 0x70, 0x4e, 0x65, 0x69, 0x67, 0x68, 0x62, 0x6f, 0x72, 0x73, 0x53, 0x74, - 0x61, 0x74, 0x65, 0x52, 0x0d, 0x6c, 0x6c, 0x64, 0x70, 0x4e, 0x65, 0x69, 0x67, 0x68, 0x62, 0x6f, - 0x72, 0x73, 0x12, 0x2f, 0x0a, 0x09, 0x72, 0x73, 0x76, 0x70, 0x5f, 0x6c, 0x73, 0x70, 0x73, 0x18, - 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x52, 0x73, 0x76, 0x70, - 0x4c, 0x73, 0x70, 0x73, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x08, 0x72, 0x73, 0x76, 0x70, 0x4c, - 0x73, 0x70, 0x73, 0x1a, 0x8e, 0x01, 0x0a, 0x06, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x22, 0x83, - 0x01, 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x0a, 0x0b, 0x75, 0x6e, 0x73, 0x70, 0x65, - 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x10, 0x00, 0x12, 0x12, 0x0a, 0x0e, 0x69, 0x70, 0x76, 0x34, - 0x5f, 0x6e, 0x65, 0x69, 0x67, 0x68, 0x62, 0x6f, 0x72, 0x73, 0x10, 0x01, 0x12, 0x12, 0x0a, 0x0e, - 0x69, 0x70, 0x76, 0x36, 0x5f, 0x6e, 0x65, 0x69, 0x67, 0x68, 0x62, 0x6f, 0x72, 0x73, 0x10, 0x02, - 0x12, 0x10, 0x0a, 0x0c, 0x62, 0x67, 0x70, 0x5f, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x65, 0x73, - 0x10, 0x03, 0x12, 0x0d, 0x0a, 0x09, 0x69, 0x73, 0x69, 0x73, 0x5f, 0x6c, 0x73, 0x70, 0x73, 0x10, - 0x04, 0x12, 0x12, 0x0a, 0x0e, 0x6c, 0x6c, 0x64, 0x70, 0x5f, 0x6e, 0x65, 0x69, 0x67, 0x68, 0x62, - 0x6f, 0x72, 0x73, 0x10, 0x05, 0x12, 0x0d, 0x0a, 0x09, 0x72, 0x73, 0x76, 0x70, 0x5f, 0x6c, 0x73, - 0x70, 0x73, 0x10, 0x06, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x22, - 0x41, 0x0a, 0x18, 0x4e, 0x65, 0x69, 0x67, 0x68, 0x62, 0x6f, 0x72, 0x73, 0x76, 0x34, 0x53, 0x74, - 0x61, 0x74, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x25, 0x0a, 0x0e, 0x65, - 0x74, 0x68, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x18, 0x01, 0x20, - 0x03, 0x28, 0x09, 0x52, 0x0d, 0x65, 0x74, 0x68, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x4e, 0x61, 0x6d, - 0x65, 0x73, 0x22, 0xd1, 0x01, 0x0a, 0x10, 0x4e, 0x65, 0x69, 0x67, 0x68, 0x62, 0x6f, 0x72, 0x73, - 0x76, 0x34, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x28, 0x0a, 0x0d, 0x65, 0x74, 0x68, 0x65, 0x72, - 0x6e, 0x65, 0x74, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, - 0x52, 0x0c, 0x65, 0x74, 0x68, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x88, 0x01, - 0x01, 0x12, 0x26, 0x0a, 0x0c, 0x69, 0x70, 0x76, 0x34, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, - 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, 0x52, 0x0b, 0x69, 0x70, 0x76, 0x34, 0x41, - 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x88, 0x01, 0x01, 0x12, 0x31, 0x0a, 0x12, 0x6c, 0x69, 0x6e, - 0x6b, 0x5f, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x09, 0x48, 0x02, 0x52, 0x10, 0x6c, 0x69, 0x6e, 0x6b, 0x4c, 0x61, 0x79, - 0x65, 0x72, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x88, 0x01, 0x01, 0x42, 0x10, 0x0a, 0x0e, - 0x5f, 0x65, 0x74, 0x68, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x42, 0x0f, - 0x0a, 0x0d, 0x5f, 0x69, 0x70, 0x76, 0x34, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x42, - 0x15, 0x0a, 0x13, 0x5f, 0x6c, 0x69, 0x6e, 0x6b, 0x5f, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x5f, 0x61, - 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x22, 0x41, 0x0a, 0x18, 0x4e, 0x65, 0x69, 0x67, 0x68, 0x62, - 0x6f, 0x72, 0x73, 0x76, 0x36, 0x53, 0x74, 0x61, 0x74, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x12, 0x25, 0x0a, 0x0e, 0x65, 0x74, 0x68, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x5f, 0x6e, - 0x61, 0x6d, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0d, 0x65, 0x74, 0x68, 0x65, - 0x72, 0x6e, 0x65, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x22, 0xd1, 0x01, 0x0a, 0x10, 0x4e, 0x65, - 0x69, 0x67, 0x68, 0x62, 0x6f, 0x72, 0x73, 0x76, 0x36, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x28, - 0x0a, 0x0d, 0x65, 0x74, 0x68, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x0c, 0x65, 0x74, 0x68, 0x65, 0x72, 0x6e, 0x65, - 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, 0x26, 0x0a, 0x0c, 0x69, 0x70, 0x76, 0x36, - 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, - 0x52, 0x0b, 0x69, 0x70, 0x76, 0x36, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x88, 0x01, 0x01, - 0x12, 0x31, 0x0a, 0x12, 0x6c, 0x69, 0x6e, 0x6b, 0x5f, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x5f, 0x61, - 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x48, 0x02, 0x52, 0x10, - 0x6c, 0x69, 0x6e, 0x6b, 0x4c, 0x61, 0x79, 0x65, 0x72, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, - 0x88, 0x01, 0x01, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x65, 0x74, 0x68, 0x65, 0x72, 0x6e, 0x65, 0x74, - 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x69, 0x70, 0x76, 0x36, 0x5f, 0x61, - 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x42, 0x15, 0x0a, 0x13, 0x5f, 0x6c, 0x69, 0x6e, 0x6b, 0x5f, - 0x6c, 0x61, 0x79, 0x65, 0x72, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x22, 0x87, 0x03, - 0x0a, 0x15, 0x42, 0x67, 0x70, 0x50, 0x72, 0x65, 0x66, 0x69, 0x78, 0x53, 0x74, 0x61, 0x74, 0x65, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x24, 0x0a, 0x0e, 0x62, 0x67, 0x70, 0x5f, 0x70, - 0x65, 0x65, 0x72, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, - 0x0c, 0x62, 0x67, 0x70, 0x50, 0x65, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x12, 0x54, 0x0a, - 0x0e, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x5f, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, 0x18, - 0x02, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x2d, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x42, 0x67, 0x70, 0x50, - 0x72, 0x65, 0x66, 0x69, 0x78, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x2e, 0x50, 0x72, 0x65, 0x66, 0x69, 0x78, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, 0x2e, - 0x45, 0x6e, 0x75, 0x6d, 0x52, 0x0d, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x46, 0x69, 0x6c, 0x74, - 0x65, 0x72, 0x73, 0x12, 0x51, 0x0a, 0x14, 0x69, 0x70, 0x76, 0x34, 0x5f, 0x75, 0x6e, 0x69, 0x63, - 0x61, 0x73, 0x74, 0x5f, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, - 0x0b, 0x32, 0x1f, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x42, 0x67, 0x70, 0x50, 0x72, 0x65, 0x66, 0x69, + 0x70, 0x10, 0x02, 0x12, 0x16, 0x0a, 0x12, 0x65, 0x67, 0x72, 0x65, 0x73, 0x73, 0x5f, 0x70, 0x32, + 0x70, 0x5f, 0x6c, 0x73, 0x70, 0x73, 0x5f, 0x75, 0x70, 0x10, 0x03, 0x12, 0x12, 0x0a, 0x0e, 0x6c, + 0x73, 0x70, 0x5f, 0x66, 0x6c, 0x61, 0x70, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x10, 0x04, 0x12, + 0x0c, 0x0a, 0x08, 0x70, 0x61, 0x74, 0x68, 0x73, 0x5f, 0x74, 0x78, 0x10, 0x05, 0x12, 0x0c, 0x0a, + 0x08, 0x70, 0x61, 0x74, 0x68, 0x73, 0x5f, 0x72, 0x78, 0x10, 0x06, 0x12, 0x0c, 0x0a, 0x08, 0x72, + 0x65, 0x73, 0x76, 0x73, 0x5f, 0x74, 0x78, 0x10, 0x07, 0x12, 0x0c, 0x0a, 0x08, 0x72, 0x65, 0x73, + 0x76, 0x73, 0x5f, 0x72, 0x78, 0x10, 0x08, 0x12, 0x11, 0x0a, 0x0d, 0x70, 0x61, 0x74, 0x68, 0x5f, + 0x74, 0x65, 0x61, 0x72, 0x73, 0x5f, 0x74, 0x78, 0x10, 0x09, 0x12, 0x11, 0x0a, 0x0d, 0x70, 0x61, + 0x74, 0x68, 0x5f, 0x74, 0x65, 0x61, 0x72, 0x73, 0x5f, 0x72, 0x78, 0x10, 0x0a, 0x12, 0x11, 0x0a, + 0x0d, 0x72, 0x65, 0x73, 0x76, 0x5f, 0x74, 0x65, 0x61, 0x72, 0x73, 0x5f, 0x74, 0x78, 0x10, 0x0b, + 0x12, 0x11, 0x0a, 0x0d, 0x72, 0x65, 0x73, 0x76, 0x5f, 0x74, 0x65, 0x61, 0x72, 0x73, 0x5f, 0x72, + 0x78, 0x10, 0x0c, 0x12, 0x12, 0x0a, 0x0e, 0x70, 0x61, 0x74, 0x68, 0x5f, 0x65, 0x72, 0x72, 0x6f, + 0x72, 0x73, 0x5f, 0x74, 0x78, 0x10, 0x0d, 0x12, 0x12, 0x0a, 0x0e, 0x70, 0x61, 0x74, 0x68, 0x5f, + 0x65, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x5f, 0x72, 0x78, 0x10, 0x0e, 0x12, 0x12, 0x0a, 0x0e, 0x72, + 0x65, 0x73, 0x76, 0x5f, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x5f, 0x74, 0x78, 0x10, 0x0f, 0x12, + 0x12, 0x0a, 0x0e, 0x72, 0x65, 0x73, 0x76, 0x5f, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x5f, 0x72, + 0x78, 0x10, 0x10, 0x12, 0x10, 0x0a, 0x0c, 0x72, 0x65, 0x73, 0x76, 0x5f, 0x63, 0x6f, 0x6e, 0x66, + 0x5f, 0x74, 0x78, 0x10, 0x11, 0x12, 0x10, 0x0a, 0x0c, 0x72, 0x65, 0x73, 0x76, 0x5f, 0x63, 0x6f, + 0x6e, 0x66, 0x5f, 0x72, 0x78, 0x10, 0x12, 0x12, 0x0d, 0x0a, 0x09, 0x68, 0x65, 0x6c, 0x6c, 0x6f, + 0x73, 0x5f, 0x74, 0x78, 0x10, 0x13, 0x12, 0x0d, 0x0a, 0x09, 0x68, 0x65, 0x6c, 0x6c, 0x6f, 0x73, + 0x5f, 0x72, 0x78, 0x10, 0x14, 0x12, 0x0b, 0x0a, 0x07, 0x61, 0x63, 0x6b, 0x73, 0x5f, 0x74, 0x78, + 0x10, 0x15, 0x12, 0x0b, 0x0a, 0x07, 0x61, 0x63, 0x6b, 0x73, 0x5f, 0x72, 0x78, 0x10, 0x16, 0x12, + 0x0c, 0x0a, 0x08, 0x6e, 0x61, 0x63, 0x6b, 0x73, 0x5f, 0x74, 0x78, 0x10, 0x17, 0x12, 0x0c, 0x0a, + 0x08, 0x6e, 0x61, 0x63, 0x6b, 0x73, 0x5f, 0x72, 0x78, 0x10, 0x18, 0x12, 0x0f, 0x0a, 0x0b, 0x73, + 0x72, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x5f, 0x74, 0x78, 0x10, 0x19, 0x12, 0x0f, 0x0a, 0x0b, + 0x73, 0x72, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x5f, 0x72, 0x78, 0x10, 0x1a, 0x12, 0x0d, 0x0a, + 0x09, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x5f, 0x74, 0x78, 0x10, 0x1b, 0x12, 0x0d, 0x0a, 0x09, + 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x5f, 0x72, 0x78, 0x10, 0x1c, 0x12, 0x20, 0x0a, 0x1c, 0x70, + 0x61, 0x74, 0x68, 0x5f, 0x72, 0x65, 0x65, 0x76, 0x61, 0x6c, 0x75, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x74, 0x78, 0x10, 0x1d, 0x12, 0x18, 0x0a, + 0x14, 0x70, 0x61, 0x74, 0x68, 0x5f, 0x72, 0x65, 0x6f, 0x70, 0x74, 0x69, 0x6d, 0x69, 0x7a, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x10, 0x1e, 0x22, 0xff, 0x0d, 0x0a, 0x0a, 0x52, 0x73, 0x76, 0x70, + 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x12, 0x17, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, + 0x42, 0x0a, 0x1b, 0x69, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x5f, 0x70, 0x32, 0x70, 0x5f, 0x6c, + 0x73, 0x70, 0x73, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x65, 0x64, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x18, 0x69, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x50, + 0x32, 0x70, 0x4c, 0x73, 0x70, 0x73, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x65, 0x64, + 0x88, 0x01, 0x01, 0x12, 0x32, 0x0a, 0x13, 0x69, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x5f, 0x70, + 0x32, 0x70, 0x5f, 0x6c, 0x73, 0x70, 0x73, 0x5f, 0x75, 0x70, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, + 0x48, 0x02, 0x52, 0x10, 0x69, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x50, 0x32, 0x70, 0x4c, 0x73, + 0x70, 0x73, 0x55, 0x70, 0x88, 0x01, 0x01, 0x12, 0x30, 0x0a, 0x12, 0x65, 0x67, 0x72, 0x65, 0x73, + 0x73, 0x5f, 0x70, 0x32, 0x70, 0x5f, 0x6c, 0x73, 0x70, 0x73, 0x5f, 0x75, 0x70, 0x18, 0x04, 0x20, + 0x01, 0x28, 0x0d, 0x48, 0x03, 0x52, 0x0f, 0x65, 0x67, 0x72, 0x65, 0x73, 0x73, 0x50, 0x32, 0x70, + 0x4c, 0x73, 0x70, 0x73, 0x55, 0x70, 0x88, 0x01, 0x01, 0x12, 0x29, 0x0a, 0x0e, 0x6c, 0x73, 0x70, + 0x5f, 0x66, 0x6c, 0x61, 0x70, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, + 0x04, 0x48, 0x04, 0x52, 0x0c, 0x6c, 0x73, 0x70, 0x46, 0x6c, 0x61, 0x70, 0x43, 0x6f, 0x75, 0x6e, + 0x74, 0x88, 0x01, 0x01, 0x12, 0x1e, 0x0a, 0x08, 0x70, 0x61, 0x74, 0x68, 0x73, 0x5f, 0x74, 0x78, + 0x18, 0x06, 0x20, 0x01, 0x28, 0x04, 0x48, 0x05, 0x52, 0x07, 0x70, 0x61, 0x74, 0x68, 0x73, 0x54, + 0x78, 0x88, 0x01, 0x01, 0x12, 0x1e, 0x0a, 0x08, 0x70, 0x61, 0x74, 0x68, 0x73, 0x5f, 0x72, 0x78, + 0x18, 0x07, 0x20, 0x01, 0x28, 0x04, 0x48, 0x06, 0x52, 0x07, 0x70, 0x61, 0x74, 0x68, 0x73, 0x52, + 0x78, 0x88, 0x01, 0x01, 0x12, 0x1e, 0x0a, 0x08, 0x72, 0x65, 0x73, 0x76, 0x73, 0x5f, 0x74, 0x78, + 0x18, 0x08, 0x20, 0x01, 0x28, 0x04, 0x48, 0x07, 0x52, 0x07, 0x72, 0x65, 0x73, 0x76, 0x73, 0x54, + 0x78, 0x88, 0x01, 0x01, 0x12, 0x1e, 0x0a, 0x08, 0x72, 0x65, 0x73, 0x76, 0x73, 0x5f, 0x72, 0x78, + 0x18, 0x09, 0x20, 0x01, 0x28, 0x04, 0x48, 0x08, 0x52, 0x07, 0x72, 0x65, 0x73, 0x76, 0x73, 0x52, + 0x78, 0x88, 0x01, 0x01, 0x12, 0x27, 0x0a, 0x0d, 0x70, 0x61, 0x74, 0x68, 0x5f, 0x74, 0x65, 0x61, + 0x72, 0x73, 0x5f, 0x74, 0x78, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x04, 0x48, 0x09, 0x52, 0x0b, 0x70, + 0x61, 0x74, 0x68, 0x54, 0x65, 0x61, 0x72, 0x73, 0x54, 0x78, 0x88, 0x01, 0x01, 0x12, 0x27, 0x0a, + 0x0d, 0x70, 0x61, 0x74, 0x68, 0x5f, 0x74, 0x65, 0x61, 0x72, 0x73, 0x5f, 0x72, 0x78, 0x18, 0x0b, + 0x20, 0x01, 0x28, 0x04, 0x48, 0x0a, 0x52, 0x0b, 0x70, 0x61, 0x74, 0x68, 0x54, 0x65, 0x61, 0x72, + 0x73, 0x52, 0x78, 0x88, 0x01, 0x01, 0x12, 0x27, 0x0a, 0x0d, 0x72, 0x65, 0x73, 0x76, 0x5f, 0x74, + 0x65, 0x61, 0x72, 0x73, 0x5f, 0x74, 0x78, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x04, 0x48, 0x0b, 0x52, + 0x0b, 0x72, 0x65, 0x73, 0x76, 0x54, 0x65, 0x61, 0x72, 0x73, 0x54, 0x78, 0x88, 0x01, 0x01, 0x12, + 0x27, 0x0a, 0x0d, 0x72, 0x65, 0x73, 0x76, 0x5f, 0x74, 0x65, 0x61, 0x72, 0x73, 0x5f, 0x72, 0x78, + 0x18, 0x0d, 0x20, 0x01, 0x28, 0x04, 0x48, 0x0c, 0x52, 0x0b, 0x72, 0x65, 0x73, 0x76, 0x54, 0x65, + 0x61, 0x72, 0x73, 0x52, 0x78, 0x88, 0x01, 0x01, 0x12, 0x29, 0x0a, 0x0e, 0x70, 0x61, 0x74, 0x68, + 0x5f, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x5f, 0x74, 0x78, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x04, + 0x48, 0x0d, 0x52, 0x0c, 0x70, 0x61, 0x74, 0x68, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x54, 0x78, + 0x88, 0x01, 0x01, 0x12, 0x29, 0x0a, 0x0e, 0x70, 0x61, 0x74, 0x68, 0x5f, 0x65, 0x72, 0x72, 0x6f, + 0x72, 0x73, 0x5f, 0x72, 0x78, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x04, 0x48, 0x0e, 0x52, 0x0c, 0x70, + 0x61, 0x74, 0x68, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x52, 0x78, 0x88, 0x01, 0x01, 0x12, 0x29, + 0x0a, 0x0e, 0x72, 0x65, 0x73, 0x76, 0x5f, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x5f, 0x74, 0x78, + 0x18, 0x10, 0x20, 0x01, 0x28, 0x04, 0x48, 0x0f, 0x52, 0x0c, 0x72, 0x65, 0x73, 0x76, 0x45, 0x72, + 0x72, 0x6f, 0x72, 0x73, 0x54, 0x78, 0x88, 0x01, 0x01, 0x12, 0x29, 0x0a, 0x0e, 0x72, 0x65, 0x73, + 0x76, 0x5f, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x5f, 0x72, 0x78, 0x18, 0x11, 0x20, 0x01, 0x28, + 0x04, 0x48, 0x10, 0x52, 0x0c, 0x72, 0x65, 0x73, 0x76, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x52, + 0x78, 0x88, 0x01, 0x01, 0x12, 0x25, 0x0a, 0x0c, 0x72, 0x65, 0x73, 0x76, 0x5f, 0x63, 0x6f, 0x6e, + 0x66, 0x5f, 0x74, 0x78, 0x18, 0x12, 0x20, 0x01, 0x28, 0x04, 0x48, 0x11, 0x52, 0x0a, 0x72, 0x65, + 0x73, 0x76, 0x43, 0x6f, 0x6e, 0x66, 0x54, 0x78, 0x88, 0x01, 0x01, 0x12, 0x25, 0x0a, 0x0c, 0x72, + 0x65, 0x73, 0x76, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x5f, 0x72, 0x78, 0x18, 0x13, 0x20, 0x01, 0x28, + 0x04, 0x48, 0x12, 0x52, 0x0a, 0x72, 0x65, 0x73, 0x76, 0x43, 0x6f, 0x6e, 0x66, 0x52, 0x78, 0x88, + 0x01, 0x01, 0x12, 0x20, 0x0a, 0x09, 0x68, 0x65, 0x6c, 0x6c, 0x6f, 0x73, 0x5f, 0x74, 0x78, 0x18, + 0x14, 0x20, 0x01, 0x28, 0x04, 0x48, 0x13, 0x52, 0x08, 0x68, 0x65, 0x6c, 0x6c, 0x6f, 0x73, 0x54, + 0x78, 0x88, 0x01, 0x01, 0x12, 0x20, 0x0a, 0x09, 0x68, 0x65, 0x6c, 0x6c, 0x6f, 0x73, 0x5f, 0x72, + 0x78, 0x18, 0x15, 0x20, 0x01, 0x28, 0x04, 0x48, 0x14, 0x52, 0x08, 0x68, 0x65, 0x6c, 0x6c, 0x6f, + 0x73, 0x52, 0x78, 0x88, 0x01, 0x01, 0x12, 0x1c, 0x0a, 0x07, 0x61, 0x63, 0x6b, 0x73, 0x5f, 0x74, + 0x78, 0x18, 0x16, 0x20, 0x01, 0x28, 0x04, 0x48, 0x15, 0x52, 0x06, 0x61, 0x63, 0x6b, 0x73, 0x54, + 0x78, 0x88, 0x01, 0x01, 0x12, 0x1c, 0x0a, 0x07, 0x61, 0x63, 0x6b, 0x73, 0x5f, 0x72, 0x78, 0x18, + 0x17, 0x20, 0x01, 0x28, 0x04, 0x48, 0x16, 0x52, 0x06, 0x61, 0x63, 0x6b, 0x73, 0x52, 0x78, 0x88, + 0x01, 0x01, 0x12, 0x1e, 0x0a, 0x08, 0x6e, 0x61, 0x63, 0x6b, 0x73, 0x5f, 0x74, 0x78, 0x18, 0x18, + 0x20, 0x01, 0x28, 0x04, 0x48, 0x17, 0x52, 0x07, 0x6e, 0x61, 0x63, 0x6b, 0x73, 0x54, 0x78, 0x88, + 0x01, 0x01, 0x12, 0x1e, 0x0a, 0x08, 0x6e, 0x61, 0x63, 0x6b, 0x73, 0x5f, 0x72, 0x78, 0x18, 0x19, + 0x20, 0x01, 0x28, 0x04, 0x48, 0x18, 0x52, 0x07, 0x6e, 0x61, 0x63, 0x6b, 0x73, 0x52, 0x78, 0x88, + 0x01, 0x01, 0x12, 0x24, 0x0a, 0x0b, 0x73, 0x72, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x5f, 0x74, + 0x78, 0x18, 0x1a, 0x20, 0x01, 0x28, 0x04, 0x48, 0x19, 0x52, 0x0a, 0x73, 0x72, 0x65, 0x66, 0x72, + 0x65, 0x73, 0x68, 0x54, 0x78, 0x88, 0x01, 0x01, 0x12, 0x24, 0x0a, 0x0b, 0x73, 0x72, 0x65, 0x66, + 0x72, 0x65, 0x73, 0x68, 0x5f, 0x72, 0x78, 0x18, 0x1b, 0x20, 0x01, 0x28, 0x04, 0x48, 0x1a, 0x52, + 0x0a, 0x73, 0x72, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x52, 0x78, 0x88, 0x01, 0x01, 0x12, 0x20, + 0x0a, 0x09, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x5f, 0x74, 0x78, 0x18, 0x1c, 0x20, 0x01, 0x28, + 0x04, 0x48, 0x1b, 0x52, 0x08, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x54, 0x78, 0x88, 0x01, 0x01, + 0x12, 0x20, 0x0a, 0x09, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x5f, 0x72, 0x78, 0x18, 0x1d, 0x20, + 0x01, 0x28, 0x04, 0x48, 0x1c, 0x52, 0x08, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x52, 0x78, 0x88, + 0x01, 0x01, 0x12, 0x44, 0x0a, 0x1c, 0x70, 0x61, 0x74, 0x68, 0x5f, 0x72, 0x65, 0x65, 0x76, 0x61, + 0x6c, 0x75, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, + 0x74, 0x78, 0x18, 0x1e, 0x20, 0x01, 0x28, 0x04, 0x48, 0x1d, 0x52, 0x19, 0x70, 0x61, 0x74, 0x68, + 0x52, 0x65, 0x65, 0x76, 0x61, 0x6c, 0x75, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x54, 0x78, 0x88, 0x01, 0x01, 0x12, 0x36, 0x0a, 0x14, 0x70, 0x61, 0x74, 0x68, + 0x5f, 0x72, 0x65, 0x6f, 0x70, 0x74, 0x69, 0x6d, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, + 0x18, 0x1f, 0x20, 0x01, 0x28, 0x04, 0x48, 0x1e, 0x52, 0x13, 0x70, 0x61, 0x74, 0x68, 0x52, 0x65, + 0x6f, 0x70, 0x74, 0x69, 0x6d, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x88, 0x01, 0x01, + 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x42, 0x1e, 0x0a, 0x1c, 0x5f, 0x69, 0x6e, + 0x67, 0x72, 0x65, 0x73, 0x73, 0x5f, 0x70, 0x32, 0x70, 0x5f, 0x6c, 0x73, 0x70, 0x73, 0x5f, 0x63, + 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x65, 0x64, 0x42, 0x16, 0x0a, 0x14, 0x5f, 0x69, 0x6e, + 0x67, 0x72, 0x65, 0x73, 0x73, 0x5f, 0x70, 0x32, 0x70, 0x5f, 0x6c, 0x73, 0x70, 0x73, 0x5f, 0x75, + 0x70, 0x42, 0x15, 0x0a, 0x13, 0x5f, 0x65, 0x67, 0x72, 0x65, 0x73, 0x73, 0x5f, 0x70, 0x32, 0x70, + 0x5f, 0x6c, 0x73, 0x70, 0x73, 0x5f, 0x75, 0x70, 0x42, 0x11, 0x0a, 0x0f, 0x5f, 0x6c, 0x73, 0x70, + 0x5f, 0x66, 0x6c, 0x61, 0x70, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x42, 0x0b, 0x0a, 0x09, 0x5f, + 0x70, 0x61, 0x74, 0x68, 0x73, 0x5f, 0x74, 0x78, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x70, 0x61, 0x74, + 0x68, 0x73, 0x5f, 0x72, 0x78, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x72, 0x65, 0x73, 0x76, 0x73, 0x5f, + 0x74, 0x78, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x72, 0x65, 0x73, 0x76, 0x73, 0x5f, 0x72, 0x78, 0x42, + 0x10, 0x0a, 0x0e, 0x5f, 0x70, 0x61, 0x74, 0x68, 0x5f, 0x74, 0x65, 0x61, 0x72, 0x73, 0x5f, 0x74, + 0x78, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x70, 0x61, 0x74, 0x68, 0x5f, 0x74, 0x65, 0x61, 0x72, 0x73, + 0x5f, 0x72, 0x78, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x72, 0x65, 0x73, 0x76, 0x5f, 0x74, 0x65, 0x61, + 0x72, 0x73, 0x5f, 0x74, 0x78, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x72, 0x65, 0x73, 0x76, 0x5f, 0x74, + 0x65, 0x61, 0x72, 0x73, 0x5f, 0x72, 0x78, 0x42, 0x11, 0x0a, 0x0f, 0x5f, 0x70, 0x61, 0x74, 0x68, + 0x5f, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x5f, 0x74, 0x78, 0x42, 0x11, 0x0a, 0x0f, 0x5f, 0x70, + 0x61, 0x74, 0x68, 0x5f, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x5f, 0x72, 0x78, 0x42, 0x11, 0x0a, + 0x0f, 0x5f, 0x72, 0x65, 0x73, 0x76, 0x5f, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x5f, 0x74, 0x78, + 0x42, 0x11, 0x0a, 0x0f, 0x5f, 0x72, 0x65, 0x73, 0x76, 0x5f, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x73, + 0x5f, 0x72, 0x78, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x72, 0x65, 0x73, 0x76, 0x5f, 0x63, 0x6f, 0x6e, + 0x66, 0x5f, 0x74, 0x78, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x72, 0x65, 0x73, 0x76, 0x5f, 0x63, 0x6f, + 0x6e, 0x66, 0x5f, 0x72, 0x78, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x68, 0x65, 0x6c, 0x6c, 0x6f, 0x73, + 0x5f, 0x74, 0x78, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x68, 0x65, 0x6c, 0x6c, 0x6f, 0x73, 0x5f, 0x72, + 0x78, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x61, 0x63, 0x6b, 0x73, 0x5f, 0x74, 0x78, 0x42, 0x0a, 0x0a, + 0x08, 0x5f, 0x61, 0x63, 0x6b, 0x73, 0x5f, 0x72, 0x78, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x6e, 0x61, + 0x63, 0x6b, 0x73, 0x5f, 0x74, 0x78, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x6e, 0x61, 0x63, 0x6b, 0x73, + 0x5f, 0x72, 0x78, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x73, 0x72, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, + 0x5f, 0x74, 0x78, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x73, 0x72, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, + 0x5f, 0x72, 0x78, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x5f, 0x74, + 0x78, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x5f, 0x72, 0x78, 0x42, + 0x1f, 0x0a, 0x1d, 0x5f, 0x70, 0x61, 0x74, 0x68, 0x5f, 0x72, 0x65, 0x65, 0x76, 0x61, 0x6c, 0x75, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x74, 0x78, + 0x42, 0x17, 0x0a, 0x15, 0x5f, 0x70, 0x61, 0x74, 0x68, 0x5f, 0x72, 0x65, 0x6f, 0x70, 0x74, 0x69, + 0x6d, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0xea, 0x04, 0x0a, 0x0d, 0x53, 0x74, + 0x61, 0x74, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x3b, 0x0a, 0x06, 0x63, + 0x68, 0x6f, 0x69, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1e, 0x2e, 0x6f, 0x74, + 0x67, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, + 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x48, 0x00, 0x52, 0x06, 0x63, + 0x68, 0x6f, 0x69, 0x63, 0x65, 0x88, 0x01, 0x01, 0x12, 0x44, 0x0a, 0x0e, 0x69, 0x70, 0x76, 0x34, + 0x5f, 0x6e, 0x65, 0x69, 0x67, 0x68, 0x62, 0x6f, 0x72, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x1d, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x4e, 0x65, 0x69, 0x67, 0x68, 0x62, 0x6f, 0x72, 0x73, + 0x76, 0x34, 0x53, 0x74, 0x61, 0x74, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x52, + 0x0d, 0x69, 0x70, 0x76, 0x34, 0x4e, 0x65, 0x69, 0x67, 0x68, 0x62, 0x6f, 0x72, 0x73, 0x12, 0x44, + 0x0a, 0x0e, 0x69, 0x70, 0x76, 0x36, 0x5f, 0x6e, 0x65, 0x69, 0x67, 0x68, 0x62, 0x6f, 0x72, 0x73, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x4e, 0x65, 0x69, + 0x67, 0x68, 0x62, 0x6f, 0x72, 0x73, 0x76, 0x36, 0x53, 0x74, 0x61, 0x74, 0x65, 0x73, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x52, 0x0d, 0x69, 0x70, 0x76, 0x36, 0x4e, 0x65, 0x69, 0x67, 0x68, + 0x62, 0x6f, 0x72, 0x73, 0x12, 0x3d, 0x0a, 0x0c, 0x62, 0x67, 0x70, 0x5f, 0x70, 0x72, 0x65, 0x66, + 0x69, 0x78, 0x65, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x6f, 0x74, 0x67, + 0x2e, 0x42, 0x67, 0x70, 0x50, 0x72, 0x65, 0x66, 0x69, 0x78, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x52, 0x0b, 0x62, 0x67, 0x70, 0x50, 0x72, 0x65, 0x66, 0x69, + 0x78, 0x65, 0x73, 0x12, 0x36, 0x0a, 0x09, 0x69, 0x73, 0x69, 0x73, 0x5f, 0x6c, 0x73, 0x70, 0x73, + 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x49, 0x73, 0x69, + 0x73, 0x4c, 0x73, 0x70, 0x73, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x52, 0x08, 0x69, 0x73, 0x69, 0x73, 0x4c, 0x73, 0x70, 0x73, 0x12, 0x45, 0x0a, 0x0e, 0x6c, + 0x6c, 0x64, 0x70, 0x5f, 0x6e, 0x65, 0x69, 0x67, 0x68, 0x62, 0x6f, 0x72, 0x73, 0x18, 0x06, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x4c, 0x6c, 0x64, 0x70, 0x4e, 0x65, + 0x69, 0x67, 0x68, 0x62, 0x6f, 0x72, 0x73, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x52, 0x0d, 0x6c, 0x6c, 0x64, 0x70, 0x4e, 0x65, 0x69, 0x67, 0x68, 0x62, 0x6f, + 0x72, 0x73, 0x12, 0x36, 0x0a, 0x09, 0x72, 0x73, 0x76, 0x70, 0x5f, 0x6c, 0x73, 0x70, 0x73, 0x18, + 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x52, 0x73, 0x76, 0x70, + 0x4c, 0x73, 0x70, 0x73, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x52, 0x08, 0x72, 0x73, 0x76, 0x70, 0x4c, 0x73, 0x70, 0x73, 0x1a, 0x8e, 0x01, 0x0a, 0x06, 0x43, + 0x68, 0x6f, 0x69, 0x63, 0x65, 0x22, 0x83, 0x01, 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0f, + 0x0a, 0x0b, 0x75, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x10, 0x00, 0x12, + 0x12, 0x0a, 0x0e, 0x69, 0x70, 0x76, 0x34, 0x5f, 0x6e, 0x65, 0x69, 0x67, 0x68, 0x62, 0x6f, 0x72, + 0x73, 0x10, 0x01, 0x12, 0x12, 0x0a, 0x0e, 0x69, 0x70, 0x76, 0x36, 0x5f, 0x6e, 0x65, 0x69, 0x67, + 0x68, 0x62, 0x6f, 0x72, 0x73, 0x10, 0x02, 0x12, 0x10, 0x0a, 0x0c, 0x62, 0x67, 0x70, 0x5f, 0x70, + 0x72, 0x65, 0x66, 0x69, 0x78, 0x65, 0x73, 0x10, 0x03, 0x12, 0x0d, 0x0a, 0x09, 0x69, 0x73, 0x69, + 0x73, 0x5f, 0x6c, 0x73, 0x70, 0x73, 0x10, 0x04, 0x12, 0x12, 0x0a, 0x0e, 0x6c, 0x6c, 0x64, 0x70, + 0x5f, 0x6e, 0x65, 0x69, 0x67, 0x68, 0x62, 0x6f, 0x72, 0x73, 0x10, 0x05, 0x12, 0x0d, 0x0a, 0x09, + 0x72, 0x73, 0x76, 0x70, 0x5f, 0x6c, 0x73, 0x70, 0x73, 0x10, 0x06, 0x42, 0x09, 0x0a, 0x07, 0x5f, + 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x22, 0xc2, 0x04, 0x0a, 0x0e, 0x53, 0x74, 0x61, 0x74, 0x65, + 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3c, 0x0a, 0x06, 0x63, 0x68, 0x6f, + 0x69, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1f, 0x2e, 0x6f, 0x74, 0x67, 0x2e, + 0x53, 0x74, 0x61, 0x74, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x43, + 0x68, 0x6f, 0x69, 0x63, 0x65, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x48, 0x00, 0x52, 0x06, 0x63, 0x68, + 0x6f, 0x69, 0x63, 0x65, 0x88, 0x01, 0x01, 0x12, 0x3c, 0x0a, 0x0e, 0x69, 0x70, 0x76, 0x34, 0x5f, + 0x6e, 0x65, 0x69, 0x67, 0x68, 0x62, 0x6f, 0x72, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x15, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x4e, 0x65, 0x69, 0x67, 0x68, 0x62, 0x6f, 0x72, 0x73, 0x76, + 0x34, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x0d, 0x69, 0x70, 0x76, 0x34, 0x4e, 0x65, 0x69, 0x67, + 0x68, 0x62, 0x6f, 0x72, 0x73, 0x12, 0x3c, 0x0a, 0x0e, 0x69, 0x70, 0x76, 0x36, 0x5f, 0x6e, 0x65, + 0x69, 0x67, 0x68, 0x62, 0x6f, 0x72, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x15, 0x2e, + 0x6f, 0x74, 0x67, 0x2e, 0x4e, 0x65, 0x69, 0x67, 0x68, 0x62, 0x6f, 0x72, 0x73, 0x76, 0x36, 0x53, + 0x74, 0x61, 0x74, 0x65, 0x52, 0x0d, 0x69, 0x70, 0x76, 0x36, 0x4e, 0x65, 0x69, 0x67, 0x68, 0x62, + 0x6f, 0x72, 0x73, 0x12, 0x38, 0x0a, 0x0c, 0x62, 0x67, 0x70, 0x5f, 0x70, 0x72, 0x65, 0x66, 0x69, + 0x78, 0x65, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x6f, 0x74, 0x67, 0x2e, + 0x42, 0x67, 0x70, 0x50, 0x72, 0x65, 0x66, 0x69, 0x78, 0x65, 0x73, 0x53, 0x74, 0x61, 0x74, 0x65, + 0x52, 0x0b, 0x62, 0x67, 0x70, 0x50, 0x72, 0x65, 0x66, 0x69, 0x78, 0x65, 0x73, 0x12, 0x2f, 0x0a, + 0x09, 0x69, 0x73, 0x69, 0x73, 0x5f, 0x6c, 0x73, 0x70, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x12, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x49, 0x73, 0x69, 0x73, 0x4c, 0x73, 0x70, 0x73, 0x53, + 0x74, 0x61, 0x74, 0x65, 0x52, 0x08, 0x69, 0x73, 0x69, 0x73, 0x4c, 0x73, 0x70, 0x73, 0x12, 0x3e, + 0x0a, 0x0e, 0x6c, 0x6c, 0x64, 0x70, 0x5f, 0x6e, 0x65, 0x69, 0x67, 0x68, 0x62, 0x6f, 0x72, 0x73, + 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x4c, 0x6c, 0x64, + 0x70, 0x4e, 0x65, 0x69, 0x67, 0x68, 0x62, 0x6f, 0x72, 0x73, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, + 0x0d, 0x6c, 0x6c, 0x64, 0x70, 0x4e, 0x65, 0x69, 0x67, 0x68, 0x62, 0x6f, 0x72, 0x73, 0x12, 0x2f, + 0x0a, 0x09, 0x72, 0x73, 0x76, 0x70, 0x5f, 0x6c, 0x73, 0x70, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x12, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x52, 0x73, 0x76, 0x70, 0x4c, 0x73, 0x70, 0x73, + 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x08, 0x72, 0x73, 0x76, 0x70, 0x4c, 0x73, 0x70, 0x73, 0x1a, + 0x8e, 0x01, 0x0a, 0x06, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x22, 0x83, 0x01, 0x0a, 0x04, 0x45, + 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x0a, 0x0b, 0x75, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, + 0x65, 0x64, 0x10, 0x00, 0x12, 0x12, 0x0a, 0x0e, 0x69, 0x70, 0x76, 0x34, 0x5f, 0x6e, 0x65, 0x69, + 0x67, 0x68, 0x62, 0x6f, 0x72, 0x73, 0x10, 0x01, 0x12, 0x12, 0x0a, 0x0e, 0x69, 0x70, 0x76, 0x36, + 0x5f, 0x6e, 0x65, 0x69, 0x67, 0x68, 0x62, 0x6f, 0x72, 0x73, 0x10, 0x02, 0x12, 0x10, 0x0a, 0x0c, + 0x62, 0x67, 0x70, 0x5f, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x65, 0x73, 0x10, 0x03, 0x12, 0x0d, + 0x0a, 0x09, 0x69, 0x73, 0x69, 0x73, 0x5f, 0x6c, 0x73, 0x70, 0x73, 0x10, 0x04, 0x12, 0x12, 0x0a, + 0x0e, 0x6c, 0x6c, 0x64, 0x70, 0x5f, 0x6e, 0x65, 0x69, 0x67, 0x68, 0x62, 0x6f, 0x72, 0x73, 0x10, + 0x05, 0x12, 0x0d, 0x0a, 0x09, 0x72, 0x73, 0x76, 0x70, 0x5f, 0x6c, 0x73, 0x70, 0x73, 0x10, 0x06, + 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x22, 0x41, 0x0a, 0x18, 0x4e, + 0x65, 0x69, 0x67, 0x68, 0x62, 0x6f, 0x72, 0x73, 0x76, 0x34, 0x53, 0x74, 0x61, 0x74, 0x65, 0x73, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x25, 0x0a, 0x0e, 0x65, 0x74, 0x68, 0x65, 0x72, + 0x6e, 0x65, 0x74, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, + 0x0d, 0x65, 0x74, 0x68, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x22, 0xd1, + 0x01, 0x0a, 0x10, 0x4e, 0x65, 0x69, 0x67, 0x68, 0x62, 0x6f, 0x72, 0x73, 0x76, 0x34, 0x53, 0x74, + 0x61, 0x74, 0x65, 0x12, 0x28, 0x0a, 0x0d, 0x65, 0x74, 0x68, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x5f, + 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x0c, 0x65, 0x74, + 0x68, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, 0x26, 0x0a, + 0x0c, 0x69, 0x70, 0x76, 0x34, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x09, 0x48, 0x01, 0x52, 0x0b, 0x69, 0x70, 0x76, 0x34, 0x41, 0x64, 0x64, 0x72, 0x65, + 0x73, 0x73, 0x88, 0x01, 0x01, 0x12, 0x31, 0x0a, 0x12, 0x6c, 0x69, 0x6e, 0x6b, 0x5f, 0x6c, 0x61, + 0x79, 0x65, 0x72, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x09, 0x48, 0x02, 0x52, 0x10, 0x6c, 0x69, 0x6e, 0x6b, 0x4c, 0x61, 0x79, 0x65, 0x72, 0x41, 0x64, + 0x64, 0x72, 0x65, 0x73, 0x73, 0x88, 0x01, 0x01, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x65, 0x74, 0x68, + 0x65, 0x72, 0x6e, 0x65, 0x74, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x69, + 0x70, 0x76, 0x34, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x42, 0x15, 0x0a, 0x13, 0x5f, + 0x6c, 0x69, 0x6e, 0x6b, 0x5f, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, + 0x73, 0x73, 0x22, 0x41, 0x0a, 0x18, 0x4e, 0x65, 0x69, 0x67, 0x68, 0x62, 0x6f, 0x72, 0x73, 0x76, + 0x36, 0x53, 0x74, 0x61, 0x74, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x25, + 0x0a, 0x0e, 0x65, 0x74, 0x68, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x73, + 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0d, 0x65, 0x74, 0x68, 0x65, 0x72, 0x6e, 0x65, 0x74, + 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x22, 0xd1, 0x01, 0x0a, 0x10, 0x4e, 0x65, 0x69, 0x67, 0x68, 0x62, + 0x6f, 0x72, 0x73, 0x76, 0x36, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x28, 0x0a, 0x0d, 0x65, 0x74, + 0x68, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x48, 0x00, 0x52, 0x0c, 0x65, 0x74, 0x68, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x4e, 0x61, 0x6d, + 0x65, 0x88, 0x01, 0x01, 0x12, 0x26, 0x0a, 0x0c, 0x69, 0x70, 0x76, 0x36, 0x5f, 0x61, 0x64, 0x64, + 0x72, 0x65, 0x73, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, 0x52, 0x0b, 0x69, 0x70, + 0x76, 0x36, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x88, 0x01, 0x01, 0x12, 0x31, 0x0a, 0x12, + 0x6c, 0x69, 0x6e, 0x6b, 0x5f, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, + 0x73, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x48, 0x02, 0x52, 0x10, 0x6c, 0x69, 0x6e, 0x6b, + 0x4c, 0x61, 0x79, 0x65, 0x72, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x88, 0x01, 0x01, 0x42, + 0x10, 0x0a, 0x0e, 0x5f, 0x65, 0x74, 0x68, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x5f, 0x6e, 0x61, 0x6d, + 0x65, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x69, 0x70, 0x76, 0x36, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, + 0x73, 0x73, 0x42, 0x15, 0x0a, 0x13, 0x5f, 0x6c, 0x69, 0x6e, 0x6b, 0x5f, 0x6c, 0x61, 0x79, 0x65, + 0x72, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x22, 0x87, 0x03, 0x0a, 0x15, 0x42, 0x67, + 0x70, 0x50, 0x72, 0x65, 0x66, 0x69, 0x78, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x12, 0x24, 0x0a, 0x0e, 0x62, 0x67, 0x70, 0x5f, 0x70, 0x65, 0x65, 0x72, 0x5f, + 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0c, 0x62, 0x67, 0x70, + 0x50, 0x65, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x12, 0x54, 0x0a, 0x0e, 0x70, 0x72, 0x65, + 0x66, 0x69, 0x78, 0x5f, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, + 0x0e, 0x32, 0x2d, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x42, 0x67, 0x70, 0x50, 0x72, 0x65, 0x66, 0x69, + 0x78, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x50, 0x72, + 0x65, 0x66, 0x69, 0x78, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, 0x2e, 0x45, 0x6e, 0x75, 0x6d, + 0x52, 0x0d, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, 0x12, + 0x51, 0x0a, 0x14, 0x69, 0x70, 0x76, 0x34, 0x5f, 0x75, 0x6e, 0x69, 0x63, 0x61, 0x73, 0x74, 0x5f, + 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e, + 0x6f, 0x74, 0x67, 0x2e, 0x42, 0x67, 0x70, 0x50, 0x72, 0x65, 0x66, 0x69, 0x78, 0x49, 0x70, 0x76, + 0x34, 0x55, 0x6e, 0x69, 0x63, 0x61, 0x73, 0x74, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x52, 0x12, + 0x69, 0x70, 0x76, 0x34, 0x55, 0x6e, 0x69, 0x63, 0x61, 0x73, 0x74, 0x46, 0x69, 0x6c, 0x74, 0x65, + 0x72, 0x73, 0x12, 0x51, 0x0a, 0x14, 0x69, 0x70, 0x76, 0x36, 0x5f, 0x75, 0x6e, 0x69, 0x63, 0x61, + 0x73, 0x74, 0x5f, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x1f, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x42, 0x67, 0x70, 0x50, 0x72, 0x65, 0x66, 0x69, 0x78, + 0x49, 0x70, 0x76, 0x36, 0x55, 0x6e, 0x69, 0x63, 0x61, 0x73, 0x74, 0x46, 0x69, 0x6c, 0x74, 0x65, + 0x72, 0x52, 0x12, 0x69, 0x70, 0x76, 0x36, 0x55, 0x6e, 0x69, 0x63, 0x61, 0x73, 0x74, 0x46, 0x69, + 0x6c, 0x74, 0x65, 0x72, 0x73, 0x1a, 0x4c, 0x0a, 0x0d, 0x50, 0x72, 0x65, 0x66, 0x69, 0x78, 0x46, + 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, 0x22, 0x3b, 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0f, + 0x0a, 0x0b, 0x75, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x10, 0x00, 0x12, + 0x10, 0x0a, 0x0c, 0x69, 0x70, 0x76, 0x34, 0x5f, 0x75, 0x6e, 0x69, 0x63, 0x61, 0x73, 0x74, 0x10, + 0x01, 0x12, 0x10, 0x0a, 0x0c, 0x69, 0x70, 0x76, 0x36, 0x5f, 0x75, 0x6e, 0x69, 0x63, 0x61, 0x73, + 0x74, 0x10, 0x02, 0x22, 0xba, 0x02, 0x0a, 0x1a, 0x42, 0x67, 0x70, 0x50, 0x72, 0x65, 0x66, 0x69, 0x78, 0x49, 0x70, 0x76, 0x34, 0x55, 0x6e, 0x69, 0x63, 0x61, 0x73, 0x74, 0x46, 0x69, 0x6c, 0x74, - 0x65, 0x72, 0x52, 0x12, 0x69, 0x70, 0x76, 0x34, 0x55, 0x6e, 0x69, 0x63, 0x61, 0x73, 0x74, 0x46, - 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, 0x12, 0x51, 0x0a, 0x14, 0x69, 0x70, 0x76, 0x36, 0x5f, 0x75, - 0x6e, 0x69, 0x63, 0x61, 0x73, 0x74, 0x5f, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, 0x18, 0x04, - 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x42, 0x67, 0x70, 0x50, 0x72, - 0x65, 0x66, 0x69, 0x78, 0x49, 0x70, 0x76, 0x36, 0x55, 0x6e, 0x69, 0x63, 0x61, 0x73, 0x74, 0x46, - 0x69, 0x6c, 0x74, 0x65, 0x72, 0x52, 0x12, 0x69, 0x70, 0x76, 0x36, 0x55, 0x6e, 0x69, 0x63, 0x61, - 0x73, 0x74, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, 0x1a, 0x4c, 0x0a, 0x0d, 0x50, 0x72, 0x65, - 0x66, 0x69, 0x78, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, 0x22, 0x3b, 0x0a, 0x04, 0x45, 0x6e, - 0x75, 0x6d, 0x12, 0x0f, 0x0a, 0x0b, 0x75, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, - 0x64, 0x10, 0x00, 0x12, 0x10, 0x0a, 0x0c, 0x69, 0x70, 0x76, 0x34, 0x5f, 0x75, 0x6e, 0x69, 0x63, - 0x61, 0x73, 0x74, 0x10, 0x01, 0x12, 0x10, 0x0a, 0x0c, 0x69, 0x70, 0x76, 0x36, 0x5f, 0x75, 0x6e, - 0x69, 0x63, 0x61, 0x73, 0x74, 0x10, 0x02, 0x22, 0xba, 0x02, 0x0a, 0x1a, 0x42, 0x67, 0x70, 0x50, - 0x72, 0x65, 0x66, 0x69, 0x78, 0x49, 0x70, 0x76, 0x34, 0x55, 0x6e, 0x69, 0x63, 0x61, 0x73, 0x74, - 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0x1c, 0x0a, 0x09, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, - 0x73, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x09, 0x61, 0x64, 0x64, 0x72, 0x65, - 0x73, 0x73, 0x65, 0x73, 0x12, 0x28, 0x0a, 0x0d, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x5f, 0x6c, - 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x00, 0x52, 0x0c, 0x70, - 0x72, 0x65, 0x66, 0x69, 0x78, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x88, 0x01, 0x01, 0x12, 0x48, - 0x0a, 0x06, 0x6f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2b, - 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x42, 0x67, 0x70, 0x50, 0x72, 0x65, 0x66, 0x69, 0x78, 0x49, 0x70, - 0x76, 0x34, 0x55, 0x6e, 0x69, 0x63, 0x61, 0x73, 0x74, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x2e, - 0x4f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x48, 0x01, 0x52, 0x06, 0x6f, - 0x72, 0x69, 0x67, 0x69, 0x6e, 0x88, 0x01, 0x01, 0x12, 0x1c, 0x0a, 0x07, 0x70, 0x61, 0x74, 0x68, - 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x02, 0x52, 0x06, 0x70, 0x61, 0x74, - 0x68, 0x49, 0x64, 0x88, 0x01, 0x01, 0x1a, 0x43, 0x0a, 0x06, 0x4f, 0x72, 0x69, 0x67, 0x69, 0x6e, - 0x22, 0x39, 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x0a, 0x0b, 0x75, 0x6e, 0x73, 0x70, - 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x10, 0x00, 0x12, 0x07, 0x0a, 0x03, 0x69, 0x67, 0x70, - 0x10, 0x01, 0x12, 0x07, 0x0a, 0x03, 0x65, 0x67, 0x70, 0x10, 0x02, 0x12, 0x0e, 0x0a, 0x0a, 0x69, - 0x6e, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x65, 0x10, 0x03, 0x42, 0x10, 0x0a, 0x0e, 0x5f, - 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x42, 0x09, 0x0a, - 0x07, 0x5f, 0x6f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x70, 0x61, 0x74, - 0x68, 0x5f, 0x69, 0x64, 0x22, 0xba, 0x02, 0x0a, 0x1a, 0x42, 0x67, 0x70, 0x50, 0x72, 0x65, 0x66, - 0x69, 0x78, 0x49, 0x70, 0x76, 0x36, 0x55, 0x6e, 0x69, 0x63, 0x61, 0x73, 0x74, 0x46, 0x69, 0x6c, - 0x74, 0x65, 0x72, 0x12, 0x1c, 0x0a, 0x09, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x65, 0x73, - 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x09, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x65, - 0x73, 0x12, 0x28, 0x0a, 0x0d, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x5f, 0x6c, 0x65, 0x6e, 0x67, - 0x74, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x00, 0x52, 0x0c, 0x70, 0x72, 0x65, 0x66, - 0x69, 0x78, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x88, 0x01, 0x01, 0x12, 0x48, 0x0a, 0x06, 0x6f, - 0x72, 0x69, 0x67, 0x69, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2b, 0x2e, 0x6f, 0x74, - 0x67, 0x2e, 0x42, 0x67, 0x70, 0x50, 0x72, 0x65, 0x66, 0x69, 0x78, 0x49, 0x70, 0x76, 0x36, 0x55, - 0x6e, 0x69, 0x63, 0x61, 0x73, 0x74, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x2e, 0x4f, 0x72, 0x69, - 0x67, 0x69, 0x6e, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x48, 0x01, 0x52, 0x06, 0x6f, 0x72, 0x69, 0x67, - 0x69, 0x6e, 0x88, 0x01, 0x01, 0x12, 0x1c, 0x0a, 0x07, 0x70, 0x61, 0x74, 0x68, 0x5f, 0x69, 0x64, - 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x02, 0x52, 0x06, 0x70, 0x61, 0x74, 0x68, 0x49, 0x64, - 0x88, 0x01, 0x01, 0x1a, 0x43, 0x0a, 0x06, 0x4f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x22, 0x39, 0x0a, - 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x0a, 0x0b, 0x75, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, - 0x66, 0x69, 0x65, 0x64, 0x10, 0x00, 0x12, 0x07, 0x0a, 0x03, 0x69, 0x67, 0x70, 0x10, 0x01, 0x12, - 0x07, 0x0a, 0x03, 0x65, 0x67, 0x70, 0x10, 0x02, 0x12, 0x0e, 0x0a, 0x0a, 0x69, 0x6e, 0x63, 0x6f, - 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x65, 0x10, 0x03, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x70, 0x72, 0x65, - 0x66, 0x69, 0x78, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6f, - 0x72, 0x69, 0x67, 0x69, 0x6e, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x70, 0x61, 0x74, 0x68, 0x5f, 0x69, - 0x64, 0x22, 0xf5, 0x01, 0x0a, 0x10, 0x42, 0x67, 0x70, 0x50, 0x72, 0x65, 0x66, 0x69, 0x78, 0x65, - 0x73, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x27, 0x0a, 0x0d, 0x62, 0x67, 0x70, 0x5f, 0x70, 0x65, - 0x65, 0x72, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, - 0x0b, 0x62, 0x67, 0x70, 0x50, 0x65, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, - 0x52, 0x0a, 0x15, 0x69, 0x70, 0x76, 0x34, 0x5f, 0x75, 0x6e, 0x69, 0x63, 0x61, 0x73, 0x74, 0x5f, - 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1e, - 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x42, 0x67, 0x70, 0x50, 0x72, 0x65, 0x66, 0x69, 0x78, 0x49, 0x70, - 0x76, 0x34, 0x55, 0x6e, 0x69, 0x63, 0x61, 0x73, 0x74, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x13, - 0x69, 0x70, 0x76, 0x34, 0x55, 0x6e, 0x69, 0x63, 0x61, 0x73, 0x74, 0x50, 0x72, 0x65, 0x66, 0x69, - 0x78, 0x65, 0x73, 0x12, 0x52, 0x0a, 0x15, 0x69, 0x70, 0x76, 0x36, 0x5f, 0x75, 0x6e, 0x69, 0x63, - 0x61, 0x73, 0x74, 0x5f, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, - 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x42, 0x67, 0x70, 0x50, 0x72, 0x65, 0x66, - 0x69, 0x78, 0x49, 0x70, 0x76, 0x36, 0x55, 0x6e, 0x69, 0x63, 0x61, 0x73, 0x74, 0x53, 0x74, 0x61, - 0x74, 0x65, 0x52, 0x13, 0x69, 0x70, 0x76, 0x36, 0x55, 0x6e, 0x69, 0x63, 0x61, 0x73, 0x74, 0x50, - 0x72, 0x65, 0x66, 0x69, 0x78, 0x65, 0x73, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x62, 0x67, 0x70, 0x5f, - 0x70, 0x65, 0x65, 0x72, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0xd4, 0x05, 0x0a, 0x19, 0x42, 0x67, - 0x70, 0x50, 0x72, 0x65, 0x66, 0x69, 0x78, 0x49, 0x70, 0x76, 0x34, 0x55, 0x6e, 0x69, 0x63, 0x61, - 0x73, 0x74, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x26, 0x0a, 0x0c, 0x69, 0x70, 0x76, 0x34, 0x5f, - 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, - 0x0b, 0x69, 0x70, 0x76, 0x34, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x88, 0x01, 0x01, 0x12, - 0x28, 0x0a, 0x0d, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x0c, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, - 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x88, 0x01, 0x01, 0x12, 0x47, 0x0a, 0x06, 0x6f, 0x72, 0x69, - 0x67, 0x69, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2a, 0x2e, 0x6f, 0x74, 0x67, 0x2e, - 0x42, 0x67, 0x70, 0x50, 0x72, 0x65, 0x66, 0x69, 0x78, 0x49, 0x70, 0x76, 0x34, 0x55, 0x6e, 0x69, - 0x63, 0x61, 0x73, 0x74, 0x53, 0x74, 0x61, 0x74, 0x65, 0x2e, 0x4f, 0x72, 0x69, 0x67, 0x69, 0x6e, - 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x48, 0x02, 0x52, 0x06, 0x6f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x88, - 0x01, 0x01, 0x12, 0x1c, 0x0a, 0x07, 0x70, 0x61, 0x74, 0x68, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, - 0x01, 0x28, 0x0d, 0x48, 0x03, 0x52, 0x06, 0x70, 0x61, 0x74, 0x68, 0x49, 0x64, 0x88, 0x01, 0x01, - 0x12, 0x27, 0x0a, 0x0d, 0x69, 0x70, 0x76, 0x34, 0x5f, 0x6e, 0x65, 0x78, 0x74, 0x5f, 0x68, 0x6f, - 0x70, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x48, 0x04, 0x52, 0x0b, 0x69, 0x70, 0x76, 0x34, 0x4e, - 0x65, 0x78, 0x74, 0x48, 0x6f, 0x70, 0x88, 0x01, 0x01, 0x12, 0x27, 0x0a, 0x0d, 0x69, 0x70, 0x76, - 0x36, 0x5f, 0x6e, 0x65, 0x78, 0x74, 0x5f, 0x68, 0x6f, 0x70, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, - 0x48, 0x05, 0x52, 0x0b, 0x69, 0x70, 0x76, 0x36, 0x4e, 0x65, 0x78, 0x74, 0x48, 0x6f, 0x70, 0x88, - 0x01, 0x01, 0x12, 0x39, 0x0a, 0x0b, 0x63, 0x6f, 0x6d, 0x6d, 0x75, 0x6e, 0x69, 0x74, 0x69, 0x65, - 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x52, 0x65, - 0x73, 0x75, 0x6c, 0x74, 0x42, 0x67, 0x70, 0x43, 0x6f, 0x6d, 0x6d, 0x75, 0x6e, 0x69, 0x74, 0x79, - 0x52, 0x0b, 0x63, 0x6f, 0x6d, 0x6d, 0x75, 0x6e, 0x69, 0x74, 0x69, 0x65, 0x73, 0x12, 0x2d, 0x0a, - 0x07, 0x61, 0x73, 0x5f, 0x70, 0x61, 0x74, 0x68, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, - 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x42, 0x67, 0x70, 0x41, 0x73, - 0x50, 0x61, 0x74, 0x68, 0x52, 0x06, 0x61, 0x73, 0x50, 0x61, 0x74, 0x68, 0x12, 0x2e, 0x0a, 0x10, - 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x5f, 0x70, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, - 0x18, 0x09, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x06, 0x52, 0x0f, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x50, - 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x88, 0x01, 0x01, 0x12, 0x3d, 0x0a, 0x18, - 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x5f, 0x65, 0x78, 0x69, 0x74, 0x5f, 0x64, 0x69, 0x73, 0x63, 0x72, - 0x69, 0x6d, 0x69, 0x6e, 0x61, 0x74, 0x6f, 0x72, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x07, - 0x52, 0x16, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x45, 0x78, 0x69, 0x74, 0x44, 0x69, 0x73, 0x63, 0x72, - 0x69, 0x6d, 0x69, 0x6e, 0x61, 0x74, 0x6f, 0x72, 0x88, 0x01, 0x01, 0x1a, 0x43, 0x0a, 0x06, 0x4f, - 0x72, 0x69, 0x67, 0x69, 0x6e, 0x22, 0x39, 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x0a, - 0x0b, 0x75, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x10, 0x00, 0x12, 0x07, - 0x0a, 0x03, 0x69, 0x67, 0x70, 0x10, 0x01, 0x12, 0x07, 0x0a, 0x03, 0x65, 0x67, 0x70, 0x10, 0x02, - 0x12, 0x0e, 0x0a, 0x0a, 0x69, 0x6e, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x65, 0x10, 0x03, - 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x69, 0x70, 0x76, 0x34, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, - 0x73, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x5f, 0x6c, 0x65, 0x6e, - 0x67, 0x74, 0x68, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x42, 0x0a, - 0x0a, 0x08, 0x5f, 0x70, 0x61, 0x74, 0x68, 0x5f, 0x69, 0x64, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x69, - 0x70, 0x76, 0x34, 0x5f, 0x6e, 0x65, 0x78, 0x74, 0x5f, 0x68, 0x6f, 0x70, 0x42, 0x10, 0x0a, 0x0e, - 0x5f, 0x69, 0x70, 0x76, 0x36, 0x5f, 0x6e, 0x65, 0x78, 0x74, 0x5f, 0x68, 0x6f, 0x70, 0x42, 0x13, - 0x0a, 0x11, 0x5f, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x5f, 0x70, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, - 0x6e, 0x63, 0x65, 0x42, 0x1b, 0x0a, 0x19, 0x5f, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x5f, 0x65, 0x78, - 0x69, 0x74, 0x5f, 0x64, 0x69, 0x73, 0x63, 0x72, 0x69, 0x6d, 0x69, 0x6e, 0x61, 0x74, 0x6f, 0x72, - 0x22, 0xd4, 0x05, 0x0a, 0x19, 0x42, 0x67, 0x70, 0x50, 0x72, 0x65, 0x66, 0x69, 0x78, 0x49, 0x70, - 0x76, 0x36, 0x55, 0x6e, 0x69, 0x63, 0x61, 0x73, 0x74, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x26, - 0x0a, 0x0c, 0x69, 0x70, 0x76, 0x36, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x0b, 0x69, 0x70, 0x76, 0x36, 0x41, 0x64, 0x64, 0x72, - 0x65, 0x73, 0x73, 0x88, 0x01, 0x01, 0x12, 0x28, 0x0a, 0x0d, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, - 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, - 0x0c, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x88, 0x01, 0x01, - 0x12, 0x47, 0x0a, 0x06, 0x6f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, - 0x32, 0x2a, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x42, 0x67, 0x70, 0x50, 0x72, 0x65, 0x66, 0x69, 0x78, - 0x49, 0x70, 0x76, 0x36, 0x55, 0x6e, 0x69, 0x63, 0x61, 0x73, 0x74, 0x53, 0x74, 0x61, 0x74, 0x65, - 0x2e, 0x4f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x48, 0x02, 0x52, 0x06, - 0x6f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x88, 0x01, 0x01, 0x12, 0x1c, 0x0a, 0x07, 0x70, 0x61, 0x74, - 0x68, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x03, 0x52, 0x06, 0x70, 0x61, - 0x74, 0x68, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x27, 0x0a, 0x0d, 0x69, 0x70, 0x76, 0x34, 0x5f, - 0x6e, 0x65, 0x78, 0x74, 0x5f, 0x68, 0x6f, 0x70, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x48, 0x04, - 0x52, 0x0b, 0x69, 0x70, 0x76, 0x34, 0x4e, 0x65, 0x78, 0x74, 0x48, 0x6f, 0x70, 0x88, 0x01, 0x01, - 0x12, 0x27, 0x0a, 0x0d, 0x69, 0x70, 0x76, 0x36, 0x5f, 0x6e, 0x65, 0x78, 0x74, 0x5f, 0x68, 0x6f, - 0x70, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x48, 0x05, 0x52, 0x0b, 0x69, 0x70, 0x76, 0x36, 0x4e, - 0x65, 0x78, 0x74, 0x48, 0x6f, 0x70, 0x88, 0x01, 0x01, 0x12, 0x39, 0x0a, 0x0b, 0x63, 0x6f, 0x6d, - 0x6d, 0x75, 0x6e, 0x69, 0x74, 0x69, 0x65, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, - 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x42, 0x67, 0x70, 0x43, 0x6f, - 0x6d, 0x6d, 0x75, 0x6e, 0x69, 0x74, 0x79, 0x52, 0x0b, 0x63, 0x6f, 0x6d, 0x6d, 0x75, 0x6e, 0x69, - 0x74, 0x69, 0x65, 0x73, 0x12, 0x2d, 0x0a, 0x07, 0x61, 0x73, 0x5f, 0x70, 0x61, 0x74, 0x68, 0x18, - 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x52, 0x65, 0x73, 0x75, - 0x6c, 0x74, 0x42, 0x67, 0x70, 0x41, 0x73, 0x50, 0x61, 0x74, 0x68, 0x52, 0x06, 0x61, 0x73, 0x50, - 0x61, 0x74, 0x68, 0x12, 0x2e, 0x0a, 0x10, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x5f, 0x70, 0x72, 0x65, - 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x06, 0x52, - 0x0f, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x50, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, - 0x88, 0x01, 0x01, 0x12, 0x3d, 0x0a, 0x18, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x5f, 0x65, 0x78, 0x69, - 0x74, 0x5f, 0x64, 0x69, 0x73, 0x63, 0x72, 0x69, 0x6d, 0x69, 0x6e, 0x61, 0x74, 0x6f, 0x72, 0x18, - 0x0a, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x07, 0x52, 0x16, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x45, 0x78, - 0x69, 0x74, 0x44, 0x69, 0x73, 0x63, 0x72, 0x69, 0x6d, 0x69, 0x6e, 0x61, 0x74, 0x6f, 0x72, 0x88, + 0x65, 0x72, 0x12, 0x1c, 0x0a, 0x09, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x65, 0x73, 0x18, + 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x09, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x65, 0x73, + 0x12, 0x28, 0x0a, 0x0d, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, + 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x00, 0x52, 0x0c, 0x70, 0x72, 0x65, 0x66, 0x69, + 0x78, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x88, 0x01, 0x01, 0x12, 0x48, 0x0a, 0x06, 0x6f, 0x72, + 0x69, 0x67, 0x69, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2b, 0x2e, 0x6f, 0x74, 0x67, + 0x2e, 0x42, 0x67, 0x70, 0x50, 0x72, 0x65, 0x66, 0x69, 0x78, 0x49, 0x70, 0x76, 0x34, 0x55, 0x6e, + 0x69, 0x63, 0x61, 0x73, 0x74, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x2e, 0x4f, 0x72, 0x69, 0x67, + 0x69, 0x6e, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x48, 0x01, 0x52, 0x06, 0x6f, 0x72, 0x69, 0x67, 0x69, + 0x6e, 0x88, 0x01, 0x01, 0x12, 0x1c, 0x0a, 0x07, 0x70, 0x61, 0x74, 0x68, 0x5f, 0x69, 0x64, 0x18, + 0x04, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x02, 0x52, 0x06, 0x70, 0x61, 0x74, 0x68, 0x49, 0x64, 0x88, 0x01, 0x01, 0x1a, 0x43, 0x0a, 0x06, 0x4f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x22, 0x39, 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x0a, 0x0b, 0x75, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x10, 0x00, 0x12, 0x07, 0x0a, 0x03, 0x69, 0x67, 0x70, 0x10, 0x01, 0x12, 0x07, 0x0a, 0x03, 0x65, 0x67, 0x70, 0x10, 0x02, 0x12, 0x0e, 0x0a, 0x0a, 0x69, 0x6e, 0x63, 0x6f, 0x6d, - 0x70, 0x6c, 0x65, 0x74, 0x65, 0x10, 0x03, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x69, 0x70, 0x76, 0x36, - 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x70, 0x72, 0x65, - 0x66, 0x69, 0x78, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6f, - 0x72, 0x69, 0x67, 0x69, 0x6e, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x70, 0x61, 0x74, 0x68, 0x5f, 0x69, - 0x64, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x69, 0x70, 0x76, 0x34, 0x5f, 0x6e, 0x65, 0x78, 0x74, 0x5f, - 0x68, 0x6f, 0x70, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x69, 0x70, 0x76, 0x36, 0x5f, 0x6e, 0x65, 0x78, - 0x74, 0x5f, 0x68, 0x6f, 0x70, 0x42, 0x13, 0x0a, 0x11, 0x5f, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x5f, - 0x70, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x42, 0x1b, 0x0a, 0x19, 0x5f, 0x6d, - 0x75, 0x6c, 0x74, 0x69, 0x5f, 0x65, 0x78, 0x69, 0x74, 0x5f, 0x64, 0x69, 0x73, 0x63, 0x72, 0x69, - 0x6d, 0x69, 0x6e, 0x61, 0x74, 0x6f, 0x72, 0x22, 0xca, 0x02, 0x0a, 0x12, 0x52, 0x65, 0x73, 0x75, - 0x6c, 0x74, 0x42, 0x67, 0x70, 0x43, 0x6f, 0x6d, 0x6d, 0x75, 0x6e, 0x69, 0x74, 0x79, 0x12, 0x3a, - 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x21, 0x2e, 0x6f, - 0x74, 0x67, 0x2e, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x42, 0x67, 0x70, 0x43, 0x6f, 0x6d, 0x6d, - 0x75, 0x6e, 0x69, 0x74, 0x79, 0x2e, 0x54, 0x79, 0x70, 0x65, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x48, - 0x00, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x88, 0x01, 0x01, 0x12, 0x20, 0x0a, 0x09, 0x61, 0x73, - 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, - 0x08, 0x61, 0x73, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x88, 0x01, 0x01, 0x12, 0x20, 0x0a, 0x09, - 0x61, 0x73, 0x5f, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x48, - 0x02, 0x52, 0x08, 0x61, 0x73, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x88, 0x01, 0x01, 0x1a, 0x8e, - 0x01, 0x0a, 0x04, 0x54, 0x79, 0x70, 0x65, 0x22, 0x85, 0x01, 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, + 0x70, 0x6c, 0x65, 0x74, 0x65, 0x10, 0x03, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x70, 0x72, 0x65, 0x66, + 0x69, 0x78, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6f, 0x72, + 0x69, 0x67, 0x69, 0x6e, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x70, 0x61, 0x74, 0x68, 0x5f, 0x69, 0x64, + 0x22, 0xba, 0x02, 0x0a, 0x1a, 0x42, 0x67, 0x70, 0x50, 0x72, 0x65, 0x66, 0x69, 0x78, 0x49, 0x70, + 0x76, 0x36, 0x55, 0x6e, 0x69, 0x63, 0x61, 0x73, 0x74, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, + 0x1c, 0x0a, 0x09, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, + 0x28, 0x09, 0x52, 0x09, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x65, 0x73, 0x12, 0x28, 0x0a, + 0x0d, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x0d, 0x48, 0x00, 0x52, 0x0c, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x4c, 0x65, + 0x6e, 0x67, 0x74, 0x68, 0x88, 0x01, 0x01, 0x12, 0x48, 0x0a, 0x06, 0x6f, 0x72, 0x69, 0x67, 0x69, + 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2b, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x42, 0x67, + 0x70, 0x50, 0x72, 0x65, 0x66, 0x69, 0x78, 0x49, 0x70, 0x76, 0x36, 0x55, 0x6e, 0x69, 0x63, 0x61, + 0x73, 0x74, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x2e, 0x4f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x2e, + 0x45, 0x6e, 0x75, 0x6d, 0x48, 0x01, 0x52, 0x06, 0x6f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x88, 0x01, + 0x01, 0x12, 0x1c, 0x0a, 0x07, 0x70, 0x61, 0x74, 0x68, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, + 0x28, 0x0d, 0x48, 0x02, 0x52, 0x06, 0x70, 0x61, 0x74, 0x68, 0x49, 0x64, 0x88, 0x01, 0x01, 0x1a, + 0x43, 0x0a, 0x06, 0x4f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x22, 0x39, 0x0a, 0x04, 0x45, 0x6e, 0x75, + 0x6d, 0x12, 0x0f, 0x0a, 0x0b, 0x75, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, + 0x10, 0x00, 0x12, 0x07, 0x0a, 0x03, 0x69, 0x67, 0x70, 0x10, 0x01, 0x12, 0x07, 0x0a, 0x03, 0x65, + 0x67, 0x70, 0x10, 0x02, 0x12, 0x0e, 0x0a, 0x0a, 0x69, 0x6e, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, + 0x74, 0x65, 0x10, 0x03, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x5f, + 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6f, 0x72, 0x69, 0x67, 0x69, + 0x6e, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x70, 0x61, 0x74, 0x68, 0x5f, 0x69, 0x64, 0x22, 0xf5, 0x01, + 0x0a, 0x10, 0x42, 0x67, 0x70, 0x50, 0x72, 0x65, 0x66, 0x69, 0x78, 0x65, 0x73, 0x53, 0x74, 0x61, + 0x74, 0x65, 0x12, 0x27, 0x0a, 0x0d, 0x62, 0x67, 0x70, 0x5f, 0x70, 0x65, 0x65, 0x72, 0x5f, 0x6e, + 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x0b, 0x62, 0x67, 0x70, + 0x50, 0x65, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, 0x52, 0x0a, 0x15, 0x69, + 0x70, 0x76, 0x34, 0x5f, 0x75, 0x6e, 0x69, 0x63, 0x61, 0x73, 0x74, 0x5f, 0x70, 0x72, 0x65, 0x66, + 0x69, 0x78, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x6f, 0x74, 0x67, + 0x2e, 0x42, 0x67, 0x70, 0x50, 0x72, 0x65, 0x66, 0x69, 0x78, 0x49, 0x70, 0x76, 0x34, 0x55, 0x6e, + 0x69, 0x63, 0x61, 0x73, 0x74, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x13, 0x69, 0x70, 0x76, 0x34, + 0x55, 0x6e, 0x69, 0x63, 0x61, 0x73, 0x74, 0x50, 0x72, 0x65, 0x66, 0x69, 0x78, 0x65, 0x73, 0x12, + 0x52, 0x0a, 0x15, 0x69, 0x70, 0x76, 0x36, 0x5f, 0x75, 0x6e, 0x69, 0x63, 0x61, 0x73, 0x74, 0x5f, + 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1e, + 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x42, 0x67, 0x70, 0x50, 0x72, 0x65, 0x66, 0x69, 0x78, 0x49, 0x70, + 0x76, 0x36, 0x55, 0x6e, 0x69, 0x63, 0x61, 0x73, 0x74, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x13, + 0x69, 0x70, 0x76, 0x36, 0x55, 0x6e, 0x69, 0x63, 0x61, 0x73, 0x74, 0x50, 0x72, 0x65, 0x66, 0x69, + 0x78, 0x65, 0x73, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x62, 0x67, 0x70, 0x5f, 0x70, 0x65, 0x65, 0x72, + 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0xd4, 0x05, 0x0a, 0x19, 0x42, 0x67, 0x70, 0x50, 0x72, 0x65, + 0x66, 0x69, 0x78, 0x49, 0x70, 0x76, 0x34, 0x55, 0x6e, 0x69, 0x63, 0x61, 0x73, 0x74, 0x53, 0x74, + 0x61, 0x74, 0x65, 0x12, 0x26, 0x0a, 0x0c, 0x69, 0x70, 0x76, 0x34, 0x5f, 0x61, 0x64, 0x64, 0x72, + 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x0b, 0x69, 0x70, 0x76, + 0x34, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x88, 0x01, 0x01, 0x12, 0x28, 0x0a, 0x0d, 0x70, + 0x72, 0x65, 0x66, 0x69, 0x78, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x0d, 0x48, 0x01, 0x52, 0x0c, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x4c, 0x65, 0x6e, 0x67, + 0x74, 0x68, 0x88, 0x01, 0x01, 0x12, 0x47, 0x0a, 0x06, 0x6f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2a, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x42, 0x67, 0x70, 0x50, + 0x72, 0x65, 0x66, 0x69, 0x78, 0x49, 0x70, 0x76, 0x34, 0x55, 0x6e, 0x69, 0x63, 0x61, 0x73, 0x74, + 0x53, 0x74, 0x61, 0x74, 0x65, 0x2e, 0x4f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x2e, 0x45, 0x6e, 0x75, + 0x6d, 0x48, 0x02, 0x52, 0x06, 0x6f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x88, 0x01, 0x01, 0x12, 0x1c, + 0x0a, 0x07, 0x70, 0x61, 0x74, 0x68, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x48, + 0x03, 0x52, 0x06, 0x70, 0x61, 0x74, 0x68, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x27, 0x0a, 0x0d, + 0x69, 0x70, 0x76, 0x34, 0x5f, 0x6e, 0x65, 0x78, 0x74, 0x5f, 0x68, 0x6f, 0x70, 0x18, 0x05, 0x20, + 0x01, 0x28, 0x09, 0x48, 0x04, 0x52, 0x0b, 0x69, 0x70, 0x76, 0x34, 0x4e, 0x65, 0x78, 0x74, 0x48, + 0x6f, 0x70, 0x88, 0x01, 0x01, 0x12, 0x27, 0x0a, 0x0d, 0x69, 0x70, 0x76, 0x36, 0x5f, 0x6e, 0x65, + 0x78, 0x74, 0x5f, 0x68, 0x6f, 0x70, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x48, 0x05, 0x52, 0x0b, + 0x69, 0x70, 0x76, 0x36, 0x4e, 0x65, 0x78, 0x74, 0x48, 0x6f, 0x70, 0x88, 0x01, 0x01, 0x12, 0x39, + 0x0a, 0x0b, 0x63, 0x6f, 0x6d, 0x6d, 0x75, 0x6e, 0x69, 0x74, 0x69, 0x65, 0x73, 0x18, 0x07, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, + 0x42, 0x67, 0x70, 0x43, 0x6f, 0x6d, 0x6d, 0x75, 0x6e, 0x69, 0x74, 0x79, 0x52, 0x0b, 0x63, 0x6f, + 0x6d, 0x6d, 0x75, 0x6e, 0x69, 0x74, 0x69, 0x65, 0x73, 0x12, 0x2d, 0x0a, 0x07, 0x61, 0x73, 0x5f, + 0x70, 0x61, 0x74, 0x68, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x6f, 0x74, 0x67, + 0x2e, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x42, 0x67, 0x70, 0x41, 0x73, 0x50, 0x61, 0x74, 0x68, + 0x52, 0x06, 0x61, 0x73, 0x50, 0x61, 0x74, 0x68, 0x12, 0x2e, 0x0a, 0x10, 0x6c, 0x6f, 0x63, 0x61, + 0x6c, 0x5f, 0x70, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x18, 0x09, 0x20, 0x01, + 0x28, 0x0d, 0x48, 0x06, 0x52, 0x0f, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x50, 0x72, 0x65, 0x66, 0x65, + 0x72, 0x65, 0x6e, 0x63, 0x65, 0x88, 0x01, 0x01, 0x12, 0x3d, 0x0a, 0x18, 0x6d, 0x75, 0x6c, 0x74, + 0x69, 0x5f, 0x65, 0x78, 0x69, 0x74, 0x5f, 0x64, 0x69, 0x73, 0x63, 0x72, 0x69, 0x6d, 0x69, 0x6e, + 0x61, 0x74, 0x6f, 0x72, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x07, 0x52, 0x16, 0x6d, 0x75, + 0x6c, 0x74, 0x69, 0x45, 0x78, 0x69, 0x74, 0x44, 0x69, 0x73, 0x63, 0x72, 0x69, 0x6d, 0x69, 0x6e, + 0x61, 0x74, 0x6f, 0x72, 0x88, 0x01, 0x01, 0x1a, 0x43, 0x0a, 0x06, 0x4f, 0x72, 0x69, 0x67, 0x69, + 0x6e, 0x22, 0x39, 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x0a, 0x0b, 0x75, 0x6e, 0x73, + 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x10, 0x00, 0x12, 0x07, 0x0a, 0x03, 0x69, 0x67, + 0x70, 0x10, 0x01, 0x12, 0x07, 0x0a, 0x03, 0x65, 0x67, 0x70, 0x10, 0x02, 0x12, 0x0e, 0x0a, 0x0a, + 0x69, 0x6e, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x65, 0x10, 0x03, 0x42, 0x0f, 0x0a, 0x0d, + 0x5f, 0x69, 0x70, 0x76, 0x34, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x42, 0x10, 0x0a, + 0x0e, 0x5f, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x42, + 0x09, 0x0a, 0x07, 0x5f, 0x6f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x70, + 0x61, 0x74, 0x68, 0x5f, 0x69, 0x64, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x69, 0x70, 0x76, 0x34, 0x5f, + 0x6e, 0x65, 0x78, 0x74, 0x5f, 0x68, 0x6f, 0x70, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x69, 0x70, 0x76, + 0x36, 0x5f, 0x6e, 0x65, 0x78, 0x74, 0x5f, 0x68, 0x6f, 0x70, 0x42, 0x13, 0x0a, 0x11, 0x5f, 0x6c, + 0x6f, 0x63, 0x61, 0x6c, 0x5f, 0x70, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x42, + 0x1b, 0x0a, 0x19, 0x5f, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x5f, 0x65, 0x78, 0x69, 0x74, 0x5f, 0x64, + 0x69, 0x73, 0x63, 0x72, 0x69, 0x6d, 0x69, 0x6e, 0x61, 0x74, 0x6f, 0x72, 0x22, 0xd4, 0x05, 0x0a, + 0x19, 0x42, 0x67, 0x70, 0x50, 0x72, 0x65, 0x66, 0x69, 0x78, 0x49, 0x70, 0x76, 0x36, 0x55, 0x6e, + 0x69, 0x63, 0x61, 0x73, 0x74, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x26, 0x0a, 0x0c, 0x69, 0x70, + 0x76, 0x36, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x48, 0x00, 0x52, 0x0b, 0x69, 0x70, 0x76, 0x36, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x88, + 0x01, 0x01, 0x12, 0x28, 0x0a, 0x0d, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x5f, 0x6c, 0x65, 0x6e, + 0x67, 0x74, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x0c, 0x70, 0x72, 0x65, + 0x66, 0x69, 0x78, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x88, 0x01, 0x01, 0x12, 0x47, 0x0a, 0x06, + 0x6f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2a, 0x2e, 0x6f, + 0x74, 0x67, 0x2e, 0x42, 0x67, 0x70, 0x50, 0x72, 0x65, 0x66, 0x69, 0x78, 0x49, 0x70, 0x76, 0x36, + 0x55, 0x6e, 0x69, 0x63, 0x61, 0x73, 0x74, 0x53, 0x74, 0x61, 0x74, 0x65, 0x2e, 0x4f, 0x72, 0x69, + 0x67, 0x69, 0x6e, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x48, 0x02, 0x52, 0x06, 0x6f, 0x72, 0x69, 0x67, + 0x69, 0x6e, 0x88, 0x01, 0x01, 0x12, 0x1c, 0x0a, 0x07, 0x70, 0x61, 0x74, 0x68, 0x5f, 0x69, 0x64, + 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x03, 0x52, 0x06, 0x70, 0x61, 0x74, 0x68, 0x49, 0x64, + 0x88, 0x01, 0x01, 0x12, 0x27, 0x0a, 0x0d, 0x69, 0x70, 0x76, 0x34, 0x5f, 0x6e, 0x65, 0x78, 0x74, + 0x5f, 0x68, 0x6f, 0x70, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x48, 0x04, 0x52, 0x0b, 0x69, 0x70, + 0x76, 0x34, 0x4e, 0x65, 0x78, 0x74, 0x48, 0x6f, 0x70, 0x88, 0x01, 0x01, 0x12, 0x27, 0x0a, 0x0d, + 0x69, 0x70, 0x76, 0x36, 0x5f, 0x6e, 0x65, 0x78, 0x74, 0x5f, 0x68, 0x6f, 0x70, 0x18, 0x06, 0x20, + 0x01, 0x28, 0x09, 0x48, 0x05, 0x52, 0x0b, 0x69, 0x70, 0x76, 0x36, 0x4e, 0x65, 0x78, 0x74, 0x48, + 0x6f, 0x70, 0x88, 0x01, 0x01, 0x12, 0x39, 0x0a, 0x0b, 0x63, 0x6f, 0x6d, 0x6d, 0x75, 0x6e, 0x69, + 0x74, 0x69, 0x65, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x6f, 0x74, 0x67, + 0x2e, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x42, 0x67, 0x70, 0x43, 0x6f, 0x6d, 0x6d, 0x75, 0x6e, + 0x69, 0x74, 0x79, 0x52, 0x0b, 0x63, 0x6f, 0x6d, 0x6d, 0x75, 0x6e, 0x69, 0x74, 0x69, 0x65, 0x73, + 0x12, 0x2d, 0x0a, 0x07, 0x61, 0x73, 0x5f, 0x70, 0x61, 0x74, 0x68, 0x18, 0x08, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x14, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x42, 0x67, + 0x70, 0x41, 0x73, 0x50, 0x61, 0x74, 0x68, 0x52, 0x06, 0x61, 0x73, 0x50, 0x61, 0x74, 0x68, 0x12, + 0x2e, 0x0a, 0x10, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x5f, 0x70, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, + 0x6e, 0x63, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x06, 0x52, 0x0f, 0x6c, 0x6f, 0x63, + 0x61, 0x6c, 0x50, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x88, 0x01, 0x01, 0x12, + 0x3d, 0x0a, 0x18, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x5f, 0x65, 0x78, 0x69, 0x74, 0x5f, 0x64, 0x69, + 0x73, 0x63, 0x72, 0x69, 0x6d, 0x69, 0x6e, 0x61, 0x74, 0x6f, 0x72, 0x18, 0x0a, 0x20, 0x01, 0x28, + 0x0d, 0x48, 0x07, 0x52, 0x16, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x45, 0x78, 0x69, 0x74, 0x44, 0x69, + 0x73, 0x63, 0x72, 0x69, 0x6d, 0x69, 0x6e, 0x61, 0x74, 0x6f, 0x72, 0x88, 0x01, 0x01, 0x1a, 0x43, + 0x0a, 0x06, 0x4f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x22, 0x39, 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x0a, 0x0b, 0x75, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x10, - 0x00, 0x12, 0x14, 0x0a, 0x10, 0x6d, 0x61, 0x6e, 0x75, 0x61, 0x6c, 0x5f, 0x61, 0x73, 0x5f, 0x6e, - 0x75, 0x6d, 0x62, 0x65, 0x72, 0x10, 0x01, 0x12, 0x0d, 0x0a, 0x09, 0x6e, 0x6f, 0x5f, 0x65, 0x78, - 0x70, 0x6f, 0x72, 0x74, 0x10, 0x02, 0x12, 0x11, 0x0a, 0x0d, 0x6e, 0x6f, 0x5f, 0x61, 0x64, 0x76, - 0x65, 0x72, 0x74, 0x69, 0x73, 0x65, 0x64, 0x10, 0x03, 0x12, 0x17, 0x0a, 0x13, 0x6e, 0x6f, 0x5f, - 0x65, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x73, 0x75, 0x62, 0x63, 0x6f, 0x6e, 0x66, 0x65, 0x64, - 0x10, 0x04, 0x12, 0x0e, 0x0a, 0x0a, 0x6c, 0x6c, 0x67, 0x72, 0x5f, 0x73, 0x74, 0x61, 0x6c, 0x65, - 0x10, 0x05, 0x12, 0x0b, 0x0a, 0x07, 0x6e, 0x6f, 0x5f, 0x6c, 0x6c, 0x67, 0x72, 0x10, 0x06, 0x42, - 0x07, 0x0a, 0x05, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x61, 0x73, 0x5f, - 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x61, 0x73, 0x5f, 0x63, 0x75, - 0x73, 0x74, 0x6f, 0x6d, 0x22, 0x4a, 0x0a, 0x0f, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x42, 0x67, - 0x70, 0x41, 0x73, 0x50, 0x61, 0x74, 0x68, 0x12, 0x37, 0x0a, 0x08, 0x73, 0x65, 0x67, 0x6d, 0x65, - 0x6e, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x6f, 0x74, 0x67, 0x2e, - 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x42, 0x67, 0x70, 0x41, 0x73, 0x50, 0x61, 0x74, 0x68, 0x53, - 0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x08, 0x73, 0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x73, - 0x22, 0xdf, 0x01, 0x0a, 0x16, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x42, 0x67, 0x70, 0x41, 0x73, - 0x50, 0x61, 0x74, 0x68, 0x53, 0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x3e, 0x0a, 0x04, 0x74, - 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x25, 0x2e, 0x6f, 0x74, 0x67, 0x2e, - 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x42, 0x67, 0x70, 0x41, 0x73, 0x50, 0x61, 0x74, 0x68, 0x53, - 0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x54, 0x79, 0x70, 0x65, 0x2e, 0x45, 0x6e, 0x75, 0x6d, - 0x48, 0x00, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x88, 0x01, 0x01, 0x12, 0x1d, 0x0a, 0x0a, 0x61, - 0x73, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0d, 0x52, - 0x09, 0x61, 0x73, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x1a, 0x5d, 0x0a, 0x04, 0x54, 0x79, - 0x70, 0x65, 0x22, 0x55, 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x0a, 0x0b, 0x75, 0x6e, - 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x10, 0x00, 0x12, 0x0a, 0x0a, 0x06, 0x61, - 0x73, 0x5f, 0x73, 0x65, 0x71, 0x10, 0x01, 0x12, 0x0a, 0x0a, 0x06, 0x61, 0x73, 0x5f, 0x73, 0x65, - 0x74, 0x10, 0x02, 0x12, 0x11, 0x0a, 0x0d, 0x61, 0x73, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x65, 0x64, - 0x5f, 0x73, 0x65, 0x71, 0x10, 0x03, 0x12, 0x11, 0x0a, 0x0d, 0x61, 0x73, 0x5f, 0x63, 0x6f, 0x6e, - 0x66, 0x65, 0x64, 0x5f, 0x73, 0x65, 0x74, 0x10, 0x04, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x74, 0x79, - 0x70, 0x65, 0x22, 0x42, 0x0a, 0x14, 0x49, 0x73, 0x69, 0x73, 0x4c, 0x73, 0x70, 0x73, 0x53, 0x74, - 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2a, 0x0a, 0x11, 0x69, 0x73, - 0x69, 0x73, 0x5f, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x18, - 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0f, 0x69, 0x73, 0x69, 0x73, 0x52, 0x6f, 0x75, 0x74, 0x65, - 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x22, 0x7a, 0x0a, 0x0d, 0x49, 0x73, 0x69, 0x73, 0x4c, 0x73, - 0x70, 0x73, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x2d, 0x0a, 0x10, 0x69, 0x73, 0x69, 0x73, 0x5f, - 0x72, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x48, 0x00, 0x52, 0x0e, 0x69, 0x73, 0x69, 0x73, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x4e, - 0x61, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, 0x25, 0x0a, 0x04, 0x6c, 0x73, 0x70, 0x73, 0x18, 0x02, - 0x20, 0x03, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x49, 0x73, 0x69, 0x73, 0x4c, - 0x73, 0x70, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x04, 0x6c, 0x73, 0x70, 0x73, 0x42, 0x13, 0x0a, - 0x11, 0x5f, 0x69, 0x73, 0x69, 0x73, 0x5f, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x5f, 0x6e, 0x61, - 0x6d, 0x65, 0x22, 0xf9, 0x03, 0x0a, 0x0c, 0x49, 0x73, 0x69, 0x73, 0x4c, 0x73, 0x70, 0x53, 0x74, - 0x61, 0x74, 0x65, 0x12, 0x1a, 0x0a, 0x06, 0x6c, 0x73, 0x70, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x05, 0x6c, 0x73, 0x70, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, - 0x3e, 0x0a, 0x08, 0x70, 0x64, 0x75, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x0e, 0x32, 0x1e, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x49, 0x73, 0x69, 0x73, 0x4c, 0x73, 0x70, 0x53, - 0x74, 0x61, 0x74, 0x65, 0x2e, 0x50, 0x64, 0x75, 0x54, 0x79, 0x70, 0x65, 0x2e, 0x45, 0x6e, 0x75, - 0x6d, 0x48, 0x01, 0x52, 0x07, 0x70, 0x64, 0x75, 0x54, 0x79, 0x70, 0x65, 0x88, 0x01, 0x01, 0x12, - 0x32, 0x0a, 0x12, 0x72, 0x65, 0x6d, 0x61, 0x69, 0x6e, 0x69, 0x6e, 0x67, 0x5f, 0x6c, 0x69, 0x66, - 0x65, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x02, 0x52, 0x11, 0x72, - 0x65, 0x6d, 0x61, 0x69, 0x6e, 0x69, 0x6e, 0x67, 0x4c, 0x69, 0x66, 0x65, 0x74, 0x69, 0x6d, 0x65, - 0x88, 0x01, 0x01, 0x12, 0x2c, 0x0a, 0x0f, 0x73, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x65, 0x5f, - 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, 0x48, 0x03, 0x52, 0x0e, - 0x73, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x65, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x88, 0x01, - 0x01, 0x12, 0x22, 0x0a, 0x0a, 0x70, 0x64, 0x75, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, - 0x05, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x04, 0x52, 0x09, 0x70, 0x64, 0x75, 0x4c, 0x65, 0x6e, 0x67, - 0x74, 0x68, 0x88, 0x01, 0x01, 0x12, 0x27, 0x0a, 0x05, 0x66, 0x6c, 0x61, 0x67, 0x73, 0x18, 0x06, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x49, 0x73, 0x69, 0x73, 0x4c, - 0x73, 0x70, 0x46, 0x6c, 0x61, 0x67, 0x73, 0x52, 0x05, 0x66, 0x6c, 0x61, 0x67, 0x73, 0x12, 0x1c, - 0x0a, 0x07, 0x69, 0x73, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0d, 0x48, - 0x05, 0x52, 0x06, 0x69, 0x73, 0x54, 0x79, 0x70, 0x65, 0x88, 0x01, 0x01, 0x12, 0x24, 0x0a, 0x04, - 0x74, 0x6c, 0x76, 0x73, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x6f, 0x74, 0x67, - 0x2e, 0x49, 0x73, 0x69, 0x73, 0x4c, 0x73, 0x70, 0x54, 0x6c, 0x76, 0x73, 0x52, 0x04, 0x74, 0x6c, - 0x76, 0x73, 0x1a, 0x3c, 0x0a, 0x07, 0x50, 0x64, 0x75, 0x54, 0x79, 0x70, 0x65, 0x22, 0x31, 0x0a, - 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x0a, 0x0b, 0x75, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, - 0x66, 0x69, 0x65, 0x64, 0x10, 0x00, 0x12, 0x0b, 0x0a, 0x07, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x5f, - 0x31, 0x10, 0x01, 0x12, 0x0b, 0x0a, 0x07, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x5f, 0x32, 0x10, 0x02, - 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6c, 0x73, 0x70, 0x5f, 0x69, 0x64, 0x42, 0x0b, 0x0a, 0x09, 0x5f, - 0x70, 0x64, 0x75, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x42, 0x15, 0x0a, 0x13, 0x5f, 0x72, 0x65, 0x6d, - 0x61, 0x69, 0x6e, 0x69, 0x6e, 0x67, 0x5f, 0x6c, 0x69, 0x66, 0x65, 0x74, 0x69, 0x6d, 0x65, 0x42, - 0x12, 0x0a, 0x10, 0x5f, 0x73, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x65, 0x5f, 0x6e, 0x75, 0x6d, - 0x62, 0x65, 0x72, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x70, 0x64, 0x75, 0x5f, 0x6c, 0x65, 0x6e, 0x67, - 0x74, 0x68, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x69, 0x73, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x22, 0xaa, - 0x05, 0x0a, 0x0b, 0x49, 0x73, 0x69, 0x73, 0x4c, 0x73, 0x70, 0x54, 0x6c, 0x76, 0x73, 0x12, 0x39, - 0x0a, 0x0d, 0x68, 0x6f, 0x73, 0x74, 0x6e, 0x61, 0x6d, 0x65, 0x5f, 0x74, 0x6c, 0x76, 0x73, 0x18, - 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x49, 0x73, 0x69, 0x73, - 0x4c, 0x73, 0x70, 0x48, 0x6f, 0x73, 0x74, 0x6e, 0x61, 0x6d, 0x65, 0x52, 0x0c, 0x68, 0x6f, 0x73, - 0x74, 0x6e, 0x61, 0x6d, 0x65, 0x54, 0x6c, 0x76, 0x73, 0x12, 0x4f, 0x0a, 0x14, 0x69, 0x73, 0x5f, - 0x72, 0x65, 0x61, 0x63, 0x68, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x5f, 0x74, 0x6c, 0x76, - 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x49, 0x73, - 0x69, 0x73, 0x4c, 0x73, 0x70, 0x49, 0x73, 0x52, 0x65, 0x61, 0x63, 0x68, 0x61, 0x62, 0x69, 0x6c, - 0x69, 0x74, 0x79, 0x54, 0x6c, 0x76, 0x52, 0x12, 0x69, 0x73, 0x52, 0x65, 0x61, 0x63, 0x68, 0x61, - 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x54, 0x6c, 0x76, 0x73, 0x12, 0x68, 0x0a, 0x1d, 0x65, 0x78, - 0x74, 0x65, 0x6e, 0x64, 0x65, 0x64, 0x5f, 0x69, 0x73, 0x5f, 0x72, 0x65, 0x61, 0x63, 0x68, 0x61, - 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x5f, 0x74, 0x6c, 0x76, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, - 0x0b, 0x32, 0x25, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x49, 0x73, 0x69, 0x73, 0x4c, 0x73, 0x70, 0x45, - 0x78, 0x74, 0x65, 0x6e, 0x64, 0x65, 0x64, 0x49, 0x73, 0x52, 0x65, 0x61, 0x63, 0x68, 0x61, 0x62, - 0x69, 0x6c, 0x69, 0x74, 0x79, 0x54, 0x6c, 0x76, 0x52, 0x1a, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x64, - 0x65, 0x64, 0x49, 0x73, 0x52, 0x65, 0x61, 0x63, 0x68, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, - 0x54, 0x6c, 0x76, 0x73, 0x12, 0x6e, 0x0a, 0x1f, 0x69, 0x70, 0x76, 0x34, 0x5f, 0x69, 0x6e, 0x74, - 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x5f, 0x72, 0x65, 0x61, 0x63, 0x68, 0x61, 0x62, 0x69, 0x6c, 0x69, - 0x74, 0x79, 0x5f, 0x74, 0x6c, 0x76, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x27, 0x2e, - 0x6f, 0x74, 0x67, 0x2e, 0x49, 0x73, 0x69, 0x73, 0x4c, 0x73, 0x70, 0x49, 0x70, 0x76, 0x34, 0x49, - 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x52, 0x65, 0x61, 0x63, 0x68, 0x61, 0x62, 0x69, 0x6c, - 0x69, 0x74, 0x79, 0x54, 0x6c, 0x76, 0x52, 0x1c, 0x69, 0x70, 0x76, 0x34, 0x49, 0x6e, 0x74, 0x65, - 0x72, 0x6e, 0x61, 0x6c, 0x52, 0x65, 0x61, 0x63, 0x68, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, - 0x54, 0x6c, 0x76, 0x73, 0x12, 0x6e, 0x0a, 0x1f, 0x69, 0x70, 0x76, 0x34, 0x5f, 0x65, 0x78, 0x74, - 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x5f, 0x72, 0x65, 0x61, 0x63, 0x68, 0x61, 0x62, 0x69, 0x6c, 0x69, - 0x74, 0x79, 0x5f, 0x74, 0x6c, 0x76, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x27, 0x2e, - 0x6f, 0x74, 0x67, 0x2e, 0x49, 0x73, 0x69, 0x73, 0x4c, 0x73, 0x70, 0x49, 0x70, 0x76, 0x34, 0x45, - 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x52, 0x65, 0x61, 0x63, 0x68, 0x61, 0x62, 0x69, 0x6c, - 0x69, 0x74, 0x79, 0x54, 0x6c, 0x76, 0x52, 0x1c, 0x69, 0x70, 0x76, 0x34, 0x45, 0x78, 0x74, 0x65, - 0x72, 0x6e, 0x61, 0x6c, 0x52, 0x65, 0x61, 0x63, 0x68, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, - 0x54, 0x6c, 0x76, 0x73, 0x12, 0x6e, 0x0a, 0x1f, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x64, 0x65, 0x64, - 0x5f, 0x69, 0x70, 0x76, 0x34, 0x5f, 0x72, 0x65, 0x61, 0x63, 0x68, 0x61, 0x62, 0x69, 0x6c, 0x69, - 0x74, 0x79, 0x5f, 0x74, 0x6c, 0x76, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x27, 0x2e, + 0x00, 0x12, 0x07, 0x0a, 0x03, 0x69, 0x67, 0x70, 0x10, 0x01, 0x12, 0x07, 0x0a, 0x03, 0x65, 0x67, + 0x70, 0x10, 0x02, 0x12, 0x0e, 0x0a, 0x0a, 0x69, 0x6e, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, + 0x65, 0x10, 0x03, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x69, 0x70, 0x76, 0x36, 0x5f, 0x61, 0x64, 0x64, + 0x72, 0x65, 0x73, 0x73, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x5f, + 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6f, 0x72, 0x69, 0x67, 0x69, + 0x6e, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x70, 0x61, 0x74, 0x68, 0x5f, 0x69, 0x64, 0x42, 0x10, 0x0a, + 0x0e, 0x5f, 0x69, 0x70, 0x76, 0x34, 0x5f, 0x6e, 0x65, 0x78, 0x74, 0x5f, 0x68, 0x6f, 0x70, 0x42, + 0x10, 0x0a, 0x0e, 0x5f, 0x69, 0x70, 0x76, 0x36, 0x5f, 0x6e, 0x65, 0x78, 0x74, 0x5f, 0x68, 0x6f, + 0x70, 0x42, 0x13, 0x0a, 0x11, 0x5f, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x5f, 0x70, 0x72, 0x65, 0x66, + 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x42, 0x1b, 0x0a, 0x19, 0x5f, 0x6d, 0x75, 0x6c, 0x74, 0x69, + 0x5f, 0x65, 0x78, 0x69, 0x74, 0x5f, 0x64, 0x69, 0x73, 0x63, 0x72, 0x69, 0x6d, 0x69, 0x6e, 0x61, + 0x74, 0x6f, 0x72, 0x22, 0xca, 0x02, 0x0a, 0x12, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x42, 0x67, + 0x70, 0x43, 0x6f, 0x6d, 0x6d, 0x75, 0x6e, 0x69, 0x74, 0x79, 0x12, 0x3a, 0x0a, 0x04, 0x74, 0x79, + 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x21, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x52, + 0x65, 0x73, 0x75, 0x6c, 0x74, 0x42, 0x67, 0x70, 0x43, 0x6f, 0x6d, 0x6d, 0x75, 0x6e, 0x69, 0x74, + 0x79, 0x2e, 0x54, 0x79, 0x70, 0x65, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x48, 0x00, 0x52, 0x04, 0x74, + 0x79, 0x70, 0x65, 0x88, 0x01, 0x01, 0x12, 0x20, 0x0a, 0x09, 0x61, 0x73, 0x5f, 0x6e, 0x75, 0x6d, + 0x62, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x08, 0x61, 0x73, 0x4e, + 0x75, 0x6d, 0x62, 0x65, 0x72, 0x88, 0x01, 0x01, 0x12, 0x20, 0x0a, 0x09, 0x61, 0x73, 0x5f, 0x63, + 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x02, 0x52, 0x08, 0x61, + 0x73, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x88, 0x01, 0x01, 0x1a, 0x8e, 0x01, 0x0a, 0x04, 0x54, + 0x79, 0x70, 0x65, 0x22, 0x85, 0x01, 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x0a, 0x0b, + 0x75, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x10, 0x00, 0x12, 0x14, 0x0a, + 0x10, 0x6d, 0x61, 0x6e, 0x75, 0x61, 0x6c, 0x5f, 0x61, 0x73, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, + 0x72, 0x10, 0x01, 0x12, 0x0d, 0x0a, 0x09, 0x6e, 0x6f, 0x5f, 0x65, 0x78, 0x70, 0x6f, 0x72, 0x74, + 0x10, 0x02, 0x12, 0x11, 0x0a, 0x0d, 0x6e, 0x6f, 0x5f, 0x61, 0x64, 0x76, 0x65, 0x72, 0x74, 0x69, + 0x73, 0x65, 0x64, 0x10, 0x03, 0x12, 0x17, 0x0a, 0x13, 0x6e, 0x6f, 0x5f, 0x65, 0x78, 0x70, 0x6f, + 0x72, 0x74, 0x5f, 0x73, 0x75, 0x62, 0x63, 0x6f, 0x6e, 0x66, 0x65, 0x64, 0x10, 0x04, 0x12, 0x0e, + 0x0a, 0x0a, 0x6c, 0x6c, 0x67, 0x72, 0x5f, 0x73, 0x74, 0x61, 0x6c, 0x65, 0x10, 0x05, 0x12, 0x0b, + 0x0a, 0x07, 0x6e, 0x6f, 0x5f, 0x6c, 0x6c, 0x67, 0x72, 0x10, 0x06, 0x42, 0x07, 0x0a, 0x05, 0x5f, + 0x74, 0x79, 0x70, 0x65, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x61, 0x73, 0x5f, 0x6e, 0x75, 0x6d, 0x62, + 0x65, 0x72, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x61, 0x73, 0x5f, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, + 0x22, 0x4a, 0x0a, 0x0f, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x42, 0x67, 0x70, 0x41, 0x73, 0x50, + 0x61, 0x74, 0x68, 0x12, 0x37, 0x0a, 0x08, 0x73, 0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x18, + 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x52, 0x65, 0x73, 0x75, + 0x6c, 0x74, 0x42, 0x67, 0x70, 0x41, 0x73, 0x50, 0x61, 0x74, 0x68, 0x53, 0x65, 0x67, 0x6d, 0x65, + 0x6e, 0x74, 0x52, 0x08, 0x73, 0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x22, 0xdf, 0x01, 0x0a, + 0x16, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x42, 0x67, 0x70, 0x41, 0x73, 0x50, 0x61, 0x74, 0x68, + 0x53, 0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x3e, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x25, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x52, 0x65, 0x73, 0x75, + 0x6c, 0x74, 0x42, 0x67, 0x70, 0x41, 0x73, 0x50, 0x61, 0x74, 0x68, 0x53, 0x65, 0x67, 0x6d, 0x65, + 0x6e, 0x74, 0x2e, 0x54, 0x79, 0x70, 0x65, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x48, 0x00, 0x52, 0x04, + 0x74, 0x79, 0x70, 0x65, 0x88, 0x01, 0x01, 0x12, 0x1d, 0x0a, 0x0a, 0x61, 0x73, 0x5f, 0x6e, 0x75, + 0x6d, 0x62, 0x65, 0x72, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0d, 0x52, 0x09, 0x61, 0x73, 0x4e, + 0x75, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x1a, 0x5d, 0x0a, 0x04, 0x54, 0x79, 0x70, 0x65, 0x22, 0x55, + 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x0a, 0x0b, 0x75, 0x6e, 0x73, 0x70, 0x65, 0x63, + 0x69, 0x66, 0x69, 0x65, 0x64, 0x10, 0x00, 0x12, 0x0a, 0x0a, 0x06, 0x61, 0x73, 0x5f, 0x73, 0x65, + 0x71, 0x10, 0x01, 0x12, 0x0a, 0x0a, 0x06, 0x61, 0x73, 0x5f, 0x73, 0x65, 0x74, 0x10, 0x02, 0x12, + 0x11, 0x0a, 0x0d, 0x61, 0x73, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x65, 0x64, 0x5f, 0x73, 0x65, 0x71, + 0x10, 0x03, 0x12, 0x11, 0x0a, 0x0d, 0x61, 0x73, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x65, 0x64, 0x5f, + 0x73, 0x65, 0x74, 0x10, 0x04, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x22, 0x42, + 0x0a, 0x14, 0x49, 0x73, 0x69, 0x73, 0x4c, 0x73, 0x70, 0x73, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2a, 0x0a, 0x11, 0x69, 0x73, 0x69, 0x73, 0x5f, 0x72, + 0x6f, 0x75, 0x74, 0x65, 0x72, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, + 0x09, 0x52, 0x0f, 0x69, 0x73, 0x69, 0x73, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x4e, 0x61, 0x6d, + 0x65, 0x73, 0x22, 0x7a, 0x0a, 0x0d, 0x49, 0x73, 0x69, 0x73, 0x4c, 0x73, 0x70, 0x73, 0x53, 0x74, + 0x61, 0x74, 0x65, 0x12, 0x2d, 0x0a, 0x10, 0x69, 0x73, 0x69, 0x73, 0x5f, 0x72, 0x6f, 0x75, 0x74, + 0x65, 0x72, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, + 0x0e, 0x69, 0x73, 0x69, 0x73, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x88, + 0x01, 0x01, 0x12, 0x25, 0x0a, 0x04, 0x6c, 0x73, 0x70, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x11, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x49, 0x73, 0x69, 0x73, 0x4c, 0x73, 0x70, 0x53, 0x74, + 0x61, 0x74, 0x65, 0x52, 0x04, 0x6c, 0x73, 0x70, 0x73, 0x42, 0x13, 0x0a, 0x11, 0x5f, 0x69, 0x73, + 0x69, 0x73, 0x5f, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0xf9, + 0x03, 0x0a, 0x0c, 0x49, 0x73, 0x69, 0x73, 0x4c, 0x73, 0x70, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, + 0x1a, 0x0a, 0x06, 0x6c, 0x73, 0x70, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, + 0x00, 0x52, 0x05, 0x6c, 0x73, 0x70, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x3e, 0x0a, 0x08, 0x70, + 0x64, 0x75, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1e, 0x2e, + 0x6f, 0x74, 0x67, 0x2e, 0x49, 0x73, 0x69, 0x73, 0x4c, 0x73, 0x70, 0x53, 0x74, 0x61, 0x74, 0x65, + 0x2e, 0x50, 0x64, 0x75, 0x54, 0x79, 0x70, 0x65, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x48, 0x01, 0x52, + 0x07, 0x70, 0x64, 0x75, 0x54, 0x79, 0x70, 0x65, 0x88, 0x01, 0x01, 0x12, 0x32, 0x0a, 0x12, 0x72, + 0x65, 0x6d, 0x61, 0x69, 0x6e, 0x69, 0x6e, 0x67, 0x5f, 0x6c, 0x69, 0x66, 0x65, 0x74, 0x69, 0x6d, + 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x02, 0x52, 0x11, 0x72, 0x65, 0x6d, 0x61, 0x69, + 0x6e, 0x69, 0x6e, 0x67, 0x4c, 0x69, 0x66, 0x65, 0x74, 0x69, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, + 0x2c, 0x0a, 0x0f, 0x73, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x65, 0x5f, 0x6e, 0x75, 0x6d, 0x62, + 0x65, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, 0x48, 0x03, 0x52, 0x0e, 0x73, 0x65, 0x71, 0x75, + 0x65, 0x6e, 0x63, 0x65, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x88, 0x01, 0x01, 0x12, 0x22, 0x0a, + 0x0a, 0x70, 0x64, 0x75, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, 0x05, 0x20, 0x01, 0x28, + 0x0d, 0x48, 0x04, 0x52, 0x09, 0x70, 0x64, 0x75, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x88, 0x01, + 0x01, 0x12, 0x27, 0x0a, 0x05, 0x66, 0x6c, 0x61, 0x67, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x11, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x49, 0x73, 0x69, 0x73, 0x4c, 0x73, 0x70, 0x46, 0x6c, + 0x61, 0x67, 0x73, 0x52, 0x05, 0x66, 0x6c, 0x61, 0x67, 0x73, 0x12, 0x1c, 0x0a, 0x07, 0x69, 0x73, + 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x05, 0x52, 0x06, 0x69, + 0x73, 0x54, 0x79, 0x70, 0x65, 0x88, 0x01, 0x01, 0x12, 0x24, 0x0a, 0x04, 0x74, 0x6c, 0x76, 0x73, + 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x49, 0x73, 0x69, + 0x73, 0x4c, 0x73, 0x70, 0x54, 0x6c, 0x76, 0x73, 0x52, 0x04, 0x74, 0x6c, 0x76, 0x73, 0x1a, 0x3c, + 0x0a, 0x07, 0x50, 0x64, 0x75, 0x54, 0x79, 0x70, 0x65, 0x22, 0x31, 0x0a, 0x04, 0x45, 0x6e, 0x75, + 0x6d, 0x12, 0x0f, 0x0a, 0x0b, 0x75, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, + 0x10, 0x00, 0x12, 0x0b, 0x0a, 0x07, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x5f, 0x31, 0x10, 0x01, 0x12, + 0x0b, 0x0a, 0x07, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x5f, 0x32, 0x10, 0x02, 0x42, 0x09, 0x0a, 0x07, + 0x5f, 0x6c, 0x73, 0x70, 0x5f, 0x69, 0x64, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x70, 0x64, 0x75, 0x5f, + 0x74, 0x79, 0x70, 0x65, 0x42, 0x15, 0x0a, 0x13, 0x5f, 0x72, 0x65, 0x6d, 0x61, 0x69, 0x6e, 0x69, + 0x6e, 0x67, 0x5f, 0x6c, 0x69, 0x66, 0x65, 0x74, 0x69, 0x6d, 0x65, 0x42, 0x12, 0x0a, 0x10, 0x5f, + 0x73, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x65, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x42, + 0x0d, 0x0a, 0x0b, 0x5f, 0x70, 0x64, 0x75, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x42, 0x0a, + 0x0a, 0x08, 0x5f, 0x69, 0x73, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x22, 0xaa, 0x05, 0x0a, 0x0b, 0x49, + 0x73, 0x69, 0x73, 0x4c, 0x73, 0x70, 0x54, 0x6c, 0x76, 0x73, 0x12, 0x39, 0x0a, 0x0d, 0x68, 0x6f, + 0x73, 0x74, 0x6e, 0x61, 0x6d, 0x65, 0x5f, 0x74, 0x6c, 0x76, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x14, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x49, 0x73, 0x69, 0x73, 0x4c, 0x73, 0x70, 0x48, + 0x6f, 0x73, 0x74, 0x6e, 0x61, 0x6d, 0x65, 0x52, 0x0c, 0x68, 0x6f, 0x73, 0x74, 0x6e, 0x61, 0x6d, + 0x65, 0x54, 0x6c, 0x76, 0x73, 0x12, 0x4f, 0x0a, 0x14, 0x69, 0x73, 0x5f, 0x72, 0x65, 0x61, 0x63, + 0x68, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x5f, 0x74, 0x6c, 0x76, 0x73, 0x18, 0x02, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x49, 0x73, 0x69, 0x73, 0x4c, 0x73, + 0x70, 0x49, 0x73, 0x52, 0x65, 0x61, 0x63, 0x68, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x54, + 0x6c, 0x76, 0x52, 0x12, 0x69, 0x73, 0x52, 0x65, 0x61, 0x63, 0x68, 0x61, 0x62, 0x69, 0x6c, 0x69, + 0x74, 0x79, 0x54, 0x6c, 0x76, 0x73, 0x12, 0x68, 0x0a, 0x1d, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x64, + 0x65, 0x64, 0x5f, 0x69, 0x73, 0x5f, 0x72, 0x65, 0x61, 0x63, 0x68, 0x61, 0x62, 0x69, 0x6c, 0x69, + 0x74, 0x79, 0x5f, 0x74, 0x6c, 0x76, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x49, 0x73, 0x69, 0x73, 0x4c, 0x73, 0x70, 0x45, 0x78, 0x74, 0x65, 0x6e, - 0x64, 0x65, 0x64, 0x49, 0x70, 0x76, 0x34, 0x52, 0x65, 0x61, 0x63, 0x68, 0x61, 0x62, 0x69, 0x6c, - 0x69, 0x74, 0x79, 0x54, 0x6c, 0x76, 0x52, 0x1c, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x64, 0x65, 0x64, - 0x49, 0x70, 0x76, 0x34, 0x52, 0x65, 0x61, 0x63, 0x68, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, - 0x54, 0x6c, 0x76, 0x73, 0x12, 0x55, 0x0a, 0x16, 0x69, 0x70, 0x76, 0x36, 0x5f, 0x72, 0x65, 0x61, - 0x63, 0x68, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x5f, 0x74, 0x6c, 0x76, 0x73, 0x18, 0x07, - 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x49, 0x73, 0x69, 0x73, 0x4c, - 0x73, 0x70, 0x49, 0x70, 0x76, 0x36, 0x52, 0x65, 0x61, 0x63, 0x68, 0x61, 0x62, 0x69, 0x6c, 0x69, - 0x74, 0x79, 0x54, 0x6c, 0x76, 0x52, 0x14, 0x69, 0x70, 0x76, 0x36, 0x52, 0x65, 0x61, 0x63, 0x68, - 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x54, 0x6c, 0x76, 0x73, 0x22, 0x3f, 0x0a, 0x0f, 0x49, - 0x73, 0x69, 0x73, 0x4c, 0x73, 0x70, 0x48, 0x6f, 0x73, 0x74, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1f, - 0x0a, 0x08, 0x68, 0x6f, 0x73, 0x74, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x48, 0x00, 0x52, 0x08, 0x68, 0x6f, 0x73, 0x74, 0x6e, 0x61, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x42, - 0x0b, 0x0a, 0x09, 0x5f, 0x68, 0x6f, 0x73, 0x74, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x89, 0x03, 0x0a, - 0x0c, 0x49, 0x73, 0x69, 0x73, 0x4c, 0x73, 0x70, 0x46, 0x6c, 0x61, 0x67, 0x73, 0x12, 0x2e, 0x0a, - 0x10, 0x70, 0x61, 0x72, 0x74, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x72, 0x65, 0x70, 0x61, 0x69, - 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x48, 0x00, 0x52, 0x0f, 0x70, 0x61, 0x72, 0x74, 0x69, - 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x70, 0x61, 0x69, 0x72, 0x88, 0x01, 0x01, 0x12, 0x2a, 0x0a, - 0x0e, 0x61, 0x74, 0x74, 0x61, 0x63, 0x68, 0x65, 0x64, 0x5f, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x08, 0x48, 0x01, 0x52, 0x0d, 0x61, 0x74, 0x74, 0x61, 0x63, 0x68, 0x65, - 0x64, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x88, 0x01, 0x01, 0x12, 0x2e, 0x0a, 0x10, 0x61, 0x74, 0x74, - 0x61, 0x63, 0x68, 0x65, 0x64, 0x5f, 0x65, 0x78, 0x70, 0x65, 0x6e, 0x73, 0x65, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x08, 0x48, 0x02, 0x52, 0x0f, 0x61, 0x74, 0x74, 0x61, 0x63, 0x68, 0x65, 0x64, 0x45, - 0x78, 0x70, 0x65, 0x6e, 0x73, 0x65, 0x88, 0x01, 0x01, 0x12, 0x2a, 0x0a, 0x0e, 0x61, 0x74, 0x74, - 0x61, 0x63, 0x68, 0x65, 0x64, 0x5f, 0x64, 0x65, 0x6c, 0x61, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, - 0x08, 0x48, 0x03, 0x52, 0x0d, 0x61, 0x74, 0x74, 0x61, 0x63, 0x68, 0x65, 0x64, 0x44, 0x65, 0x6c, - 0x61, 0x79, 0x88, 0x01, 0x01, 0x12, 0x2e, 0x0a, 0x10, 0x61, 0x74, 0x74, 0x61, 0x63, 0x68, 0x65, - 0x64, 0x5f, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x48, - 0x04, 0x52, 0x0f, 0x61, 0x74, 0x74, 0x61, 0x63, 0x68, 0x65, 0x64, 0x44, 0x65, 0x66, 0x61, 0x75, - 0x6c, 0x74, 0x88, 0x01, 0x01, 0x12, 0x1f, 0x0a, 0x08, 0x6f, 0x76, 0x65, 0x72, 0x6c, 0x6f, 0x61, - 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x48, 0x05, 0x52, 0x08, 0x6f, 0x76, 0x65, 0x72, 0x6c, - 0x6f, 0x61, 0x64, 0x88, 0x01, 0x01, 0x42, 0x13, 0x0a, 0x11, 0x5f, 0x70, 0x61, 0x72, 0x74, 0x69, - 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x72, 0x65, 0x70, 0x61, 0x69, 0x72, 0x42, 0x11, 0x0a, 0x0f, 0x5f, - 0x61, 0x74, 0x74, 0x61, 0x63, 0x68, 0x65, 0x64, 0x5f, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x42, 0x13, - 0x0a, 0x11, 0x5f, 0x61, 0x74, 0x74, 0x61, 0x63, 0x68, 0x65, 0x64, 0x5f, 0x65, 0x78, 0x70, 0x65, - 0x6e, 0x73, 0x65, 0x42, 0x11, 0x0a, 0x0f, 0x5f, 0x61, 0x74, 0x74, 0x61, 0x63, 0x68, 0x65, 0x64, - 0x5f, 0x64, 0x65, 0x6c, 0x61, 0x79, 0x42, 0x13, 0x0a, 0x11, 0x5f, 0x61, 0x74, 0x74, 0x61, 0x63, - 0x68, 0x65, 0x64, 0x5f, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x42, 0x0b, 0x0a, 0x09, 0x5f, - 0x6f, 0x76, 0x65, 0x72, 0x6c, 0x6f, 0x61, 0x64, 0x22, 0x4e, 0x0a, 0x18, 0x49, 0x73, 0x69, 0x73, - 0x4c, 0x73, 0x70, 0x49, 0x73, 0x52, 0x65, 0x61, 0x63, 0x68, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, - 0x79, 0x54, 0x6c, 0x76, 0x12, 0x32, 0x0a, 0x09, 0x6e, 0x65, 0x69, 0x67, 0x68, 0x62, 0x6f, 0x72, - 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x49, 0x73, - 0x69, 0x73, 0x4c, 0x73, 0x70, 0x6e, 0x65, 0x69, 0x67, 0x68, 0x62, 0x6f, 0x72, 0x52, 0x09, 0x6e, - 0x65, 0x69, 0x67, 0x68, 0x62, 0x6f, 0x72, 0x73, 0x22, 0x56, 0x0a, 0x20, 0x49, 0x73, 0x69, 0x73, - 0x4c, 0x73, 0x70, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x64, 0x65, 0x64, 0x49, 0x73, 0x52, 0x65, 0x61, - 0x63, 0x68, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x54, 0x6c, 0x76, 0x12, 0x32, 0x0a, 0x09, - 0x6e, 0x65, 0x69, 0x67, 0x68, 0x62, 0x6f, 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, - 0x14, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x49, 0x73, 0x69, 0x73, 0x4c, 0x73, 0x70, 0x6e, 0x65, 0x69, - 0x67, 0x68, 0x62, 0x6f, 0x72, 0x52, 0x09, 0x6e, 0x65, 0x69, 0x67, 0x68, 0x62, 0x6f, 0x72, 0x73, - 0x22, 0x41, 0x0a, 0x0f, 0x49, 0x73, 0x69, 0x73, 0x4c, 0x73, 0x70, 0x6e, 0x65, 0x69, 0x67, 0x68, - 0x62, 0x6f, 0x72, 0x12, 0x20, 0x0a, 0x09, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x5f, 0x69, 0x64, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x08, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, - 0x49, 0x64, 0x88, 0x01, 0x01, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, - 0x5f, 0x69, 0x64, 0x22, 0x56, 0x0a, 0x22, 0x49, 0x73, 0x69, 0x73, 0x4c, 0x73, 0x70, 0x49, 0x70, - 0x76, 0x34, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x52, 0x65, 0x61, 0x63, 0x68, 0x61, - 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x54, 0x6c, 0x76, 0x12, 0x30, 0x0a, 0x08, 0x70, 0x72, 0x65, - 0x66, 0x69, 0x78, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x6f, 0x74, - 0x67, 0x2e, 0x49, 0x73, 0x69, 0x73, 0x4c, 0x73, 0x70, 0x56, 0x34, 0x50, 0x72, 0x65, 0x66, 0x69, - 0x78, 0x52, 0x08, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x65, 0x73, 0x22, 0x56, 0x0a, 0x22, 0x49, - 0x73, 0x69, 0x73, 0x4c, 0x73, 0x70, 0x49, 0x70, 0x76, 0x34, 0x45, 0x78, 0x74, 0x65, 0x72, 0x6e, - 0x61, 0x6c, 0x52, 0x65, 0x61, 0x63, 0x68, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x54, 0x6c, - 0x76, 0x12, 0x30, 0x0a, 0x08, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x65, 0x73, 0x18, 0x01, 0x20, + 0x64, 0x65, 0x64, 0x49, 0x73, 0x52, 0x65, 0x61, 0x63, 0x68, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, + 0x79, 0x54, 0x6c, 0x76, 0x52, 0x1a, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x64, 0x65, 0x64, 0x49, 0x73, + 0x52, 0x65, 0x61, 0x63, 0x68, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x54, 0x6c, 0x76, 0x73, + 0x12, 0x6e, 0x0a, 0x1f, 0x69, 0x70, 0x76, 0x34, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, + 0x6c, 0x5f, 0x72, 0x65, 0x61, 0x63, 0x68, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x5f, 0x74, + 0x6c, 0x76, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x6f, 0x74, 0x67, 0x2e, + 0x49, 0x73, 0x69, 0x73, 0x4c, 0x73, 0x70, 0x49, 0x70, 0x76, 0x34, 0x49, 0x6e, 0x74, 0x65, 0x72, + 0x6e, 0x61, 0x6c, 0x52, 0x65, 0x61, 0x63, 0x68, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x54, + 0x6c, 0x76, 0x52, 0x1c, 0x69, 0x70, 0x76, 0x34, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, + 0x52, 0x65, 0x61, 0x63, 0x68, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x54, 0x6c, 0x76, 0x73, + 0x12, 0x6e, 0x0a, 0x1f, 0x69, 0x70, 0x76, 0x34, 0x5f, 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, + 0x6c, 0x5f, 0x72, 0x65, 0x61, 0x63, 0x68, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x5f, 0x74, + 0x6c, 0x76, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x6f, 0x74, 0x67, 0x2e, + 0x49, 0x73, 0x69, 0x73, 0x4c, 0x73, 0x70, 0x49, 0x70, 0x76, 0x34, 0x45, 0x78, 0x74, 0x65, 0x72, + 0x6e, 0x61, 0x6c, 0x52, 0x65, 0x61, 0x63, 0x68, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x54, + 0x6c, 0x76, 0x52, 0x1c, 0x69, 0x70, 0x76, 0x34, 0x45, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, + 0x52, 0x65, 0x61, 0x63, 0x68, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x54, 0x6c, 0x76, 0x73, + 0x12, 0x6e, 0x0a, 0x1f, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x64, 0x65, 0x64, 0x5f, 0x69, 0x70, 0x76, + 0x34, 0x5f, 0x72, 0x65, 0x61, 0x63, 0x68, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x5f, 0x74, + 0x6c, 0x76, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x6f, 0x74, 0x67, 0x2e, + 0x49, 0x73, 0x69, 0x73, 0x4c, 0x73, 0x70, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x64, 0x65, 0x64, 0x49, + 0x70, 0x76, 0x34, 0x52, 0x65, 0x61, 0x63, 0x68, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x54, + 0x6c, 0x76, 0x52, 0x1c, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x64, 0x65, 0x64, 0x49, 0x70, 0x76, 0x34, + 0x52, 0x65, 0x61, 0x63, 0x68, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x54, 0x6c, 0x76, 0x73, + 0x12, 0x55, 0x0a, 0x16, 0x69, 0x70, 0x76, 0x36, 0x5f, 0x72, 0x65, 0x61, 0x63, 0x68, 0x61, 0x62, + 0x69, 0x6c, 0x69, 0x74, 0x79, 0x5f, 0x74, 0x6c, 0x76, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x1f, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x49, 0x73, 0x69, 0x73, 0x4c, 0x73, 0x70, 0x49, 0x70, + 0x76, 0x36, 0x52, 0x65, 0x61, 0x63, 0x68, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x54, 0x6c, + 0x76, 0x52, 0x14, 0x69, 0x70, 0x76, 0x36, 0x52, 0x65, 0x61, 0x63, 0x68, 0x61, 0x62, 0x69, 0x6c, + 0x69, 0x74, 0x79, 0x54, 0x6c, 0x76, 0x73, 0x22, 0x3f, 0x0a, 0x0f, 0x49, 0x73, 0x69, 0x73, 0x4c, + 0x73, 0x70, 0x48, 0x6f, 0x73, 0x74, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1f, 0x0a, 0x08, 0x68, 0x6f, + 0x73, 0x74, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x08, + 0x68, 0x6f, 0x73, 0x74, 0x6e, 0x61, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x42, 0x0b, 0x0a, 0x09, 0x5f, + 0x68, 0x6f, 0x73, 0x74, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x89, 0x03, 0x0a, 0x0c, 0x49, 0x73, 0x69, + 0x73, 0x4c, 0x73, 0x70, 0x46, 0x6c, 0x61, 0x67, 0x73, 0x12, 0x2e, 0x0a, 0x10, 0x70, 0x61, 0x72, + 0x74, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x72, 0x65, 0x70, 0x61, 0x69, 0x72, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x08, 0x48, 0x00, 0x52, 0x0f, 0x70, 0x61, 0x72, 0x74, 0x69, 0x74, 0x69, 0x6f, 0x6e, + 0x52, 0x65, 0x70, 0x61, 0x69, 0x72, 0x88, 0x01, 0x01, 0x12, 0x2a, 0x0a, 0x0e, 0x61, 0x74, 0x74, + 0x61, 0x63, 0x68, 0x65, 0x64, 0x5f, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x08, 0x48, 0x01, 0x52, 0x0d, 0x61, 0x74, 0x74, 0x61, 0x63, 0x68, 0x65, 0x64, 0x45, 0x72, 0x72, + 0x6f, 0x72, 0x88, 0x01, 0x01, 0x12, 0x2e, 0x0a, 0x10, 0x61, 0x74, 0x74, 0x61, 0x63, 0x68, 0x65, + 0x64, 0x5f, 0x65, 0x78, 0x70, 0x65, 0x6e, 0x73, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x48, + 0x02, 0x52, 0x0f, 0x61, 0x74, 0x74, 0x61, 0x63, 0x68, 0x65, 0x64, 0x45, 0x78, 0x70, 0x65, 0x6e, + 0x73, 0x65, 0x88, 0x01, 0x01, 0x12, 0x2a, 0x0a, 0x0e, 0x61, 0x74, 0x74, 0x61, 0x63, 0x68, 0x65, + 0x64, 0x5f, 0x64, 0x65, 0x6c, 0x61, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x48, 0x03, 0x52, + 0x0d, 0x61, 0x74, 0x74, 0x61, 0x63, 0x68, 0x65, 0x64, 0x44, 0x65, 0x6c, 0x61, 0x79, 0x88, 0x01, + 0x01, 0x12, 0x2e, 0x0a, 0x10, 0x61, 0x74, 0x74, 0x61, 0x63, 0x68, 0x65, 0x64, 0x5f, 0x64, 0x65, + 0x66, 0x61, 0x75, 0x6c, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x48, 0x04, 0x52, 0x0f, 0x61, + 0x74, 0x74, 0x61, 0x63, 0x68, 0x65, 0x64, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x88, 0x01, + 0x01, 0x12, 0x1f, 0x0a, 0x08, 0x6f, 0x76, 0x65, 0x72, 0x6c, 0x6f, 0x61, 0x64, 0x18, 0x06, 0x20, + 0x01, 0x28, 0x08, 0x48, 0x05, 0x52, 0x08, 0x6f, 0x76, 0x65, 0x72, 0x6c, 0x6f, 0x61, 0x64, 0x88, + 0x01, 0x01, 0x42, 0x13, 0x0a, 0x11, 0x5f, 0x70, 0x61, 0x72, 0x74, 0x69, 0x74, 0x69, 0x6f, 0x6e, + 0x5f, 0x72, 0x65, 0x70, 0x61, 0x69, 0x72, 0x42, 0x11, 0x0a, 0x0f, 0x5f, 0x61, 0x74, 0x74, 0x61, + 0x63, 0x68, 0x65, 0x64, 0x5f, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x42, 0x13, 0x0a, 0x11, 0x5f, 0x61, + 0x74, 0x74, 0x61, 0x63, 0x68, 0x65, 0x64, 0x5f, 0x65, 0x78, 0x70, 0x65, 0x6e, 0x73, 0x65, 0x42, + 0x11, 0x0a, 0x0f, 0x5f, 0x61, 0x74, 0x74, 0x61, 0x63, 0x68, 0x65, 0x64, 0x5f, 0x64, 0x65, 0x6c, + 0x61, 0x79, 0x42, 0x13, 0x0a, 0x11, 0x5f, 0x61, 0x74, 0x74, 0x61, 0x63, 0x68, 0x65, 0x64, 0x5f, + 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x6f, 0x76, 0x65, 0x72, + 0x6c, 0x6f, 0x61, 0x64, 0x22, 0x4e, 0x0a, 0x18, 0x49, 0x73, 0x69, 0x73, 0x4c, 0x73, 0x70, 0x49, + 0x73, 0x52, 0x65, 0x61, 0x63, 0x68, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x54, 0x6c, 0x76, + 0x12, 0x32, 0x0a, 0x09, 0x6e, 0x65, 0x69, 0x67, 0x68, 0x62, 0x6f, 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x49, 0x73, 0x69, 0x73, 0x4c, 0x73, - 0x70, 0x56, 0x34, 0x50, 0x72, 0x65, 0x66, 0x69, 0x78, 0x52, 0x08, 0x70, 0x72, 0x65, 0x66, 0x69, - 0x78, 0x65, 0x73, 0x22, 0xa1, 0x04, 0x0a, 0x0f, 0x49, 0x73, 0x69, 0x73, 0x4c, 0x73, 0x70, 0x56, - 0x34, 0x50, 0x72, 0x65, 0x66, 0x69, 0x78, 0x12, 0x26, 0x0a, 0x0c, 0x69, 0x70, 0x76, 0x34, 0x5f, - 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, - 0x0b, 0x69, 0x70, 0x76, 0x34, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x88, 0x01, 0x01, 0x12, - 0x28, 0x0a, 0x0d, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x0c, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, - 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x88, 0x01, 0x01, 0x12, 0x62, 0x0a, 0x13, 0x72, 0x65, 0x64, - 0x69, 0x73, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x79, 0x70, 0x65, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2c, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x49, 0x73, 0x69, - 0x73, 0x4c, 0x73, 0x70, 0x56, 0x34, 0x50, 0x72, 0x65, 0x66, 0x69, 0x78, 0x2e, 0x52, 0x65, 0x64, - 0x69, 0x73, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x2e, - 0x45, 0x6e, 0x75, 0x6d, 0x48, 0x02, 0x52, 0x12, 0x72, 0x65, 0x64, 0x69, 0x73, 0x74, 0x72, 0x69, - 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x88, 0x01, 0x01, 0x12, 0x2a, 0x0a, - 0x0e, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x18, - 0x04, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x03, 0x52, 0x0d, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, - 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x88, 0x01, 0x01, 0x12, 0x4a, 0x0a, 0x0b, 0x6f, 0x72, 0x69, - 0x67, 0x69, 0x6e, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x24, - 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x49, 0x73, 0x69, 0x73, 0x4c, 0x73, 0x70, 0x56, 0x34, 0x50, 0x72, - 0x65, 0x66, 0x69, 0x78, 0x2e, 0x4f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x2e, - 0x45, 0x6e, 0x75, 0x6d, 0x48, 0x04, 0x52, 0x0a, 0x6f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x54, 0x79, - 0x70, 0x65, 0x88, 0x01, 0x01, 0x1a, 0x3f, 0x0a, 0x12, 0x52, 0x65, 0x64, 0x69, 0x73, 0x74, 0x72, - 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x22, 0x29, 0x0a, 0x04, 0x45, - 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x0a, 0x0b, 0x75, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, - 0x65, 0x64, 0x10, 0x00, 0x12, 0x06, 0x0a, 0x02, 0x75, 0x70, 0x10, 0x01, 0x12, 0x08, 0x0a, 0x04, - 0x64, 0x6f, 0x77, 0x6e, 0x10, 0x02, 0x1a, 0x41, 0x0a, 0x0a, 0x4f, 0x72, 0x69, 0x67, 0x69, 0x6e, - 0x54, 0x79, 0x70, 0x65, 0x22, 0x33, 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x0a, 0x0b, - 0x75, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x10, 0x00, 0x12, 0x0c, 0x0a, - 0x08, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x10, 0x01, 0x12, 0x0c, 0x0a, 0x08, 0x65, - 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x10, 0x02, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x69, 0x70, - 0x76, 0x34, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x70, - 0x72, 0x65, 0x66, 0x69, 0x78, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x42, 0x16, 0x0a, 0x14, - 0x5f, 0x72, 0x65, 0x64, 0x69, 0x73, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, - 0x74, 0x79, 0x70, 0x65, 0x42, 0x11, 0x0a, 0x0f, 0x5f, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, - 0x5f, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x6f, 0x72, 0x69, 0x67, - 0x69, 0x6e, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x22, 0x5e, 0x0a, 0x22, 0x49, 0x73, 0x69, 0x73, 0x4c, - 0x73, 0x70, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x64, 0x65, 0x64, 0x49, 0x70, 0x76, 0x34, 0x52, 0x65, - 0x61, 0x63, 0x68, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x54, 0x6c, 0x76, 0x12, 0x38, 0x0a, + 0x70, 0x6e, 0x65, 0x69, 0x67, 0x68, 0x62, 0x6f, 0x72, 0x52, 0x09, 0x6e, 0x65, 0x69, 0x67, 0x68, + 0x62, 0x6f, 0x72, 0x73, 0x22, 0x56, 0x0a, 0x20, 0x49, 0x73, 0x69, 0x73, 0x4c, 0x73, 0x70, 0x45, + 0x78, 0x74, 0x65, 0x6e, 0x64, 0x65, 0x64, 0x49, 0x73, 0x52, 0x65, 0x61, 0x63, 0x68, 0x61, 0x62, + 0x69, 0x6c, 0x69, 0x74, 0x79, 0x54, 0x6c, 0x76, 0x12, 0x32, 0x0a, 0x09, 0x6e, 0x65, 0x69, 0x67, + 0x68, 0x62, 0x6f, 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x6f, 0x74, + 0x67, 0x2e, 0x49, 0x73, 0x69, 0x73, 0x4c, 0x73, 0x70, 0x6e, 0x65, 0x69, 0x67, 0x68, 0x62, 0x6f, + 0x72, 0x52, 0x09, 0x6e, 0x65, 0x69, 0x67, 0x68, 0x62, 0x6f, 0x72, 0x73, 0x22, 0x41, 0x0a, 0x0f, + 0x49, 0x73, 0x69, 0x73, 0x4c, 0x73, 0x70, 0x6e, 0x65, 0x69, 0x67, 0x68, 0x62, 0x6f, 0x72, 0x12, + 0x20, 0x0a, 0x09, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x48, 0x00, 0x52, 0x08, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x49, 0x64, 0x88, 0x01, + 0x01, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x5f, 0x69, 0x64, 0x22, + 0x56, 0x0a, 0x22, 0x49, 0x73, 0x69, 0x73, 0x4c, 0x73, 0x70, 0x49, 0x70, 0x76, 0x34, 0x49, 0x6e, + 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x52, 0x65, 0x61, 0x63, 0x68, 0x61, 0x62, 0x69, 0x6c, 0x69, + 0x74, 0x79, 0x54, 0x6c, 0x76, 0x12, 0x30, 0x0a, 0x08, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x65, + 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x49, 0x73, + 0x69, 0x73, 0x4c, 0x73, 0x70, 0x56, 0x34, 0x50, 0x72, 0x65, 0x66, 0x69, 0x78, 0x52, 0x08, 0x70, + 0x72, 0x65, 0x66, 0x69, 0x78, 0x65, 0x73, 0x22, 0x56, 0x0a, 0x22, 0x49, 0x73, 0x69, 0x73, 0x4c, + 0x73, 0x70, 0x49, 0x70, 0x76, 0x34, 0x45, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x52, 0x65, + 0x61, 0x63, 0x68, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x54, 0x6c, 0x76, 0x12, 0x30, 0x0a, 0x08, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, - 0x1c, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x49, 0x73, 0x69, 0x73, 0x4c, 0x73, 0x70, 0x45, 0x78, 0x74, - 0x65, 0x6e, 0x64, 0x65, 0x64, 0x56, 0x34, 0x50, 0x72, 0x65, 0x66, 0x69, 0x78, 0x52, 0x08, 0x70, - 0x72, 0x65, 0x66, 0x69, 0x78, 0x65, 0x73, 0x22, 0xc6, 0x03, 0x0a, 0x17, 0x49, 0x73, 0x69, 0x73, - 0x4c, 0x73, 0x70, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x64, 0x65, 0x64, 0x56, 0x34, 0x50, 0x72, 0x65, + 0x14, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x49, 0x73, 0x69, 0x73, 0x4c, 0x73, 0x70, 0x56, 0x34, 0x50, + 0x72, 0x65, 0x66, 0x69, 0x78, 0x52, 0x08, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x65, 0x73, 0x22, + 0xa1, 0x04, 0x0a, 0x0f, 0x49, 0x73, 0x69, 0x73, 0x4c, 0x73, 0x70, 0x56, 0x34, 0x50, 0x72, 0x65, 0x66, 0x69, 0x78, 0x12, 0x26, 0x0a, 0x0c, 0x69, 0x70, 0x76, 0x34, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x0b, 0x69, 0x70, 0x76, 0x34, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x88, 0x01, 0x01, 0x12, 0x28, 0x0a, 0x0d, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x0c, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x4c, 0x65, 0x6e, 0x67, - 0x74, 0x68, 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x02, 0x52, 0x06, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x88, - 0x01, 0x01, 0x12, 0x6a, 0x0a, 0x13, 0x72, 0x65, 0x64, 0x69, 0x73, 0x74, 0x72, 0x69, 0x62, 0x75, - 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, - 0x34, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x49, 0x73, 0x69, 0x73, 0x4c, 0x73, 0x70, 0x45, 0x78, 0x74, - 0x65, 0x6e, 0x64, 0x65, 0x64, 0x56, 0x34, 0x50, 0x72, 0x65, 0x66, 0x69, 0x78, 0x2e, 0x52, 0x65, - 0x64, 0x69, 0x73, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, - 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x48, 0x03, 0x52, 0x12, 0x72, 0x65, 0x64, 0x69, 0x73, 0x74, 0x72, - 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x88, 0x01, 0x01, 0x12, 0x49, - 0x0a, 0x11, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x5f, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, - 0x74, 0x65, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x6f, 0x74, 0x67, 0x2e, - 0x49, 0x73, 0x69, 0x73, 0x4c, 0x73, 0x70, 0x50, 0x72, 0x65, 0x66, 0x69, 0x78, 0x41, 0x74, 0x74, - 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x52, 0x10, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x41, - 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x1a, 0x3f, 0x0a, 0x12, 0x52, 0x65, 0x64, - 0x69, 0x73, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x22, - 0x29, 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x0a, 0x0b, 0x75, 0x6e, 0x73, 0x70, 0x65, - 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x10, 0x00, 0x12, 0x06, 0x0a, 0x02, 0x75, 0x70, 0x10, 0x01, - 0x12, 0x08, 0x0a, 0x04, 0x64, 0x6f, 0x77, 0x6e, 0x10, 0x02, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x69, - 0x70, 0x76, 0x34, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x42, 0x10, 0x0a, 0x0e, 0x5f, - 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x42, 0x09, 0x0a, - 0x07, 0x5f, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x42, 0x16, 0x0a, 0x14, 0x5f, 0x72, 0x65, 0x64, + 0x74, 0x68, 0x88, 0x01, 0x01, 0x12, 0x62, 0x0a, 0x13, 0x72, 0x65, 0x64, 0x69, 0x73, 0x74, 0x72, + 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x0e, 0x32, 0x2c, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x49, 0x73, 0x69, 0x73, 0x4c, 0x73, 0x70, + 0x56, 0x34, 0x50, 0x72, 0x65, 0x66, 0x69, 0x78, 0x2e, 0x52, 0x65, 0x64, 0x69, 0x73, 0x74, 0x72, + 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x2e, 0x45, 0x6e, 0x75, 0x6d, + 0x48, 0x02, 0x52, 0x12, 0x72, 0x65, 0x64, 0x69, 0x73, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, + 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x88, 0x01, 0x01, 0x12, 0x2a, 0x0a, 0x0e, 0x64, 0x65, 0x66, + 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x18, 0x04, 0x20, 0x01, 0x28, + 0x0d, 0x48, 0x03, 0x52, 0x0d, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x4d, 0x65, 0x74, 0x72, + 0x69, 0x63, 0x88, 0x01, 0x01, 0x12, 0x4a, 0x0a, 0x0b, 0x6f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x5f, + 0x74, 0x79, 0x70, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x24, 0x2e, 0x6f, 0x74, 0x67, + 0x2e, 0x49, 0x73, 0x69, 0x73, 0x4c, 0x73, 0x70, 0x56, 0x34, 0x50, 0x72, 0x65, 0x66, 0x69, 0x78, + 0x2e, 0x4f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x2e, 0x45, 0x6e, 0x75, 0x6d, + 0x48, 0x04, 0x52, 0x0a, 0x6f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x88, 0x01, + 0x01, 0x1a, 0x3f, 0x0a, 0x12, 0x52, 0x65, 0x64, 0x69, 0x73, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, + 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x22, 0x29, 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, + 0x0f, 0x0a, 0x0b, 0x75, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x10, 0x00, + 0x12, 0x06, 0x0a, 0x02, 0x75, 0x70, 0x10, 0x01, 0x12, 0x08, 0x0a, 0x04, 0x64, 0x6f, 0x77, 0x6e, + 0x10, 0x02, 0x1a, 0x41, 0x0a, 0x0a, 0x4f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x54, 0x79, 0x70, 0x65, + 0x22, 0x33, 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x0a, 0x0b, 0x75, 0x6e, 0x73, 0x70, + 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x10, 0x00, 0x12, 0x0c, 0x0a, 0x08, 0x69, 0x6e, 0x74, + 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x10, 0x01, 0x12, 0x0c, 0x0a, 0x08, 0x65, 0x78, 0x74, 0x65, 0x72, + 0x6e, 0x61, 0x6c, 0x10, 0x02, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x69, 0x70, 0x76, 0x34, 0x5f, 0x61, + 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x70, 0x72, 0x65, 0x66, 0x69, + 0x78, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x42, 0x16, 0x0a, 0x14, 0x5f, 0x72, 0x65, 0x64, 0x69, 0x73, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x79, 0x70, 0x65, - 0x22, 0x4e, 0x0a, 0x1a, 0x49, 0x73, 0x69, 0x73, 0x4c, 0x73, 0x70, 0x49, 0x70, 0x76, 0x36, 0x52, - 0x65, 0x61, 0x63, 0x68, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x54, 0x6c, 0x76, 0x12, 0x30, - 0x0a, 0x08, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, - 0x32, 0x14, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x49, 0x73, 0x69, 0x73, 0x4c, 0x73, 0x70, 0x56, 0x36, - 0x50, 0x72, 0x65, 0x66, 0x69, 0x78, 0x52, 0x08, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x65, 0x73, - 0x22, 0xd5, 0x04, 0x0a, 0x0f, 0x49, 0x73, 0x69, 0x73, 0x4c, 0x73, 0x70, 0x56, 0x36, 0x50, 0x72, - 0x65, 0x66, 0x69, 0x78, 0x12, 0x26, 0x0a, 0x0c, 0x69, 0x70, 0x76, 0x36, 0x5f, 0x61, 0x64, 0x64, - 0x72, 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x0b, 0x69, 0x70, - 0x76, 0x36, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x88, 0x01, 0x01, 0x12, 0x28, 0x0a, 0x0d, - 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x0c, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x4c, 0x65, 0x6e, - 0x67, 0x74, 0x68, 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x02, 0x52, 0x06, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, - 0x88, 0x01, 0x01, 0x12, 0x62, 0x0a, 0x13, 0x72, 0x65, 0x64, 0x69, 0x73, 0x74, 0x72, 0x69, 0x62, - 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, - 0x32, 0x2c, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x49, 0x73, 0x69, 0x73, 0x4c, 0x73, 0x70, 0x56, 0x36, - 0x50, 0x72, 0x65, 0x66, 0x69, 0x78, 0x2e, 0x52, 0x65, 0x64, 0x69, 0x73, 0x74, 0x72, 0x69, 0x62, - 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x48, 0x03, - 0x52, 0x12, 0x72, 0x65, 0x64, 0x69, 0x73, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, - 0x54, 0x79, 0x70, 0x65, 0x88, 0x01, 0x01, 0x12, 0x4a, 0x0a, 0x0b, 0x6f, 0x72, 0x69, 0x67, 0x69, - 0x6e, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x24, 0x2e, 0x6f, + 0x42, 0x11, 0x0a, 0x0f, 0x5f, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x6d, 0x65, 0x74, + 0x72, 0x69, 0x63, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x6f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x5f, 0x74, + 0x79, 0x70, 0x65, 0x22, 0x5e, 0x0a, 0x22, 0x49, 0x73, 0x69, 0x73, 0x4c, 0x73, 0x70, 0x45, 0x78, + 0x74, 0x65, 0x6e, 0x64, 0x65, 0x64, 0x49, 0x70, 0x76, 0x34, 0x52, 0x65, 0x61, 0x63, 0x68, 0x61, + 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x54, 0x6c, 0x76, 0x12, 0x38, 0x0a, 0x08, 0x70, 0x72, 0x65, + 0x66, 0x69, 0x78, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x6f, 0x74, + 0x67, 0x2e, 0x49, 0x73, 0x69, 0x73, 0x4c, 0x73, 0x70, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x64, 0x65, + 0x64, 0x56, 0x34, 0x50, 0x72, 0x65, 0x66, 0x69, 0x78, 0x52, 0x08, 0x70, 0x72, 0x65, 0x66, 0x69, + 0x78, 0x65, 0x73, 0x22, 0xc6, 0x03, 0x0a, 0x17, 0x49, 0x73, 0x69, 0x73, 0x4c, 0x73, 0x70, 0x45, + 0x78, 0x74, 0x65, 0x6e, 0x64, 0x65, 0x64, 0x56, 0x34, 0x50, 0x72, 0x65, 0x66, 0x69, 0x78, 0x12, + 0x26, 0x0a, 0x0c, 0x69, 0x70, 0x76, 0x34, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x0b, 0x69, 0x70, 0x76, 0x34, 0x41, 0x64, 0x64, + 0x72, 0x65, 0x73, 0x73, 0x88, 0x01, 0x01, 0x12, 0x28, 0x0a, 0x0d, 0x70, 0x72, 0x65, 0x66, 0x69, + 0x78, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, + 0x52, 0x0c, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x88, 0x01, + 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x0d, 0x48, 0x02, 0x52, 0x06, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x88, 0x01, 0x01, 0x12, 0x6a, + 0x0a, 0x13, 0x72, 0x65, 0x64, 0x69, 0x73, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, + 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x34, 0x2e, 0x6f, 0x74, + 0x67, 0x2e, 0x49, 0x73, 0x69, 0x73, 0x4c, 0x73, 0x70, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x64, 0x65, + 0x64, 0x56, 0x34, 0x50, 0x72, 0x65, 0x66, 0x69, 0x78, 0x2e, 0x52, 0x65, 0x64, 0x69, 0x73, 0x74, + 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x2e, 0x45, 0x6e, 0x75, + 0x6d, 0x48, 0x03, 0x52, 0x12, 0x72, 0x65, 0x64, 0x69, 0x73, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, + 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x88, 0x01, 0x01, 0x12, 0x49, 0x0a, 0x11, 0x70, 0x72, + 0x65, 0x66, 0x69, 0x78, 0x5f, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x18, + 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x49, 0x73, 0x69, 0x73, + 0x4c, 0x73, 0x70, 0x50, 0x72, 0x65, 0x66, 0x69, 0x78, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, + 0x74, 0x65, 0x73, 0x52, 0x10, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x41, 0x74, 0x74, 0x72, 0x69, + 0x62, 0x75, 0x74, 0x65, 0x73, 0x1a, 0x3f, 0x0a, 0x12, 0x52, 0x65, 0x64, 0x69, 0x73, 0x74, 0x72, + 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x22, 0x29, 0x0a, 0x04, 0x45, + 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x0a, 0x0b, 0x75, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, + 0x65, 0x64, 0x10, 0x00, 0x12, 0x06, 0x0a, 0x02, 0x75, 0x70, 0x10, 0x01, 0x12, 0x08, 0x0a, 0x04, + 0x64, 0x6f, 0x77, 0x6e, 0x10, 0x02, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x69, 0x70, 0x76, 0x34, 0x5f, + 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x70, 0x72, 0x65, 0x66, + 0x69, 0x78, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6d, 0x65, + 0x74, 0x72, 0x69, 0x63, 0x42, 0x16, 0x0a, 0x14, 0x5f, 0x72, 0x65, 0x64, 0x69, 0x73, 0x74, 0x72, + 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x22, 0x4e, 0x0a, 0x1a, + 0x49, 0x73, 0x69, 0x73, 0x4c, 0x73, 0x70, 0x49, 0x70, 0x76, 0x36, 0x52, 0x65, 0x61, 0x63, 0x68, + 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x54, 0x6c, 0x76, 0x12, 0x30, 0x0a, 0x08, 0x70, 0x72, + 0x65, 0x66, 0x69, 0x78, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x49, 0x73, 0x69, 0x73, 0x4c, 0x73, 0x70, 0x56, 0x36, 0x50, 0x72, 0x65, 0x66, - 0x69, 0x78, 0x2e, 0x4f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x2e, 0x45, 0x6e, - 0x75, 0x6d, 0x48, 0x04, 0x52, 0x0a, 0x6f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x54, 0x79, 0x70, 0x65, - 0x88, 0x01, 0x01, 0x12, 0x49, 0x0a, 0x11, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x5f, 0x61, 0x74, - 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, - 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x49, 0x73, 0x69, 0x73, 0x4c, 0x73, 0x70, 0x50, 0x72, 0x65, 0x66, - 0x69, 0x78, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x52, 0x10, 0x70, 0x72, - 0x65, 0x66, 0x69, 0x78, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x1a, 0x3f, - 0x0a, 0x12, 0x52, 0x65, 0x64, 0x69, 0x73, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, - 0x54, 0x79, 0x70, 0x65, 0x22, 0x29, 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x0a, 0x0b, - 0x75, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x10, 0x00, 0x12, 0x06, 0x0a, - 0x02, 0x75, 0x70, 0x10, 0x01, 0x12, 0x08, 0x0a, 0x04, 0x64, 0x6f, 0x77, 0x6e, 0x10, 0x02, 0x1a, - 0x41, 0x0a, 0x0a, 0x4f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x22, 0x33, 0x0a, - 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x0a, 0x0b, 0x75, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, - 0x66, 0x69, 0x65, 0x64, 0x10, 0x00, 0x12, 0x0c, 0x0a, 0x08, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, - 0x61, 0x6c, 0x10, 0x01, 0x12, 0x0c, 0x0a, 0x08, 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, - 0x10, 0x02, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x69, 0x70, 0x76, 0x36, 0x5f, 0x61, 0x64, 0x64, 0x72, - 0x65, 0x73, 0x73, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x5f, 0x6c, - 0x65, 0x6e, 0x67, 0x74, 0x68, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, - 0x42, 0x16, 0x0a, 0x14, 0x5f, 0x72, 0x65, 0x64, 0x69, 0x73, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, - 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x6f, 0x72, 0x69, - 0x67, 0x69, 0x6e, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x22, 0x8e, 0x01, 0x0a, 0x17, 0x49, 0x73, 0x69, - 0x73, 0x4c, 0x73, 0x70, 0x50, 0x72, 0x65, 0x66, 0x69, 0x78, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, - 0x75, 0x74, 0x65, 0x73, 0x12, 0x1a, 0x0a, 0x06, 0x78, 0x5f, 0x66, 0x6c, 0x61, 0x67, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x08, 0x48, 0x00, 0x52, 0x05, 0x78, 0x46, 0x6c, 0x61, 0x67, 0x88, 0x01, 0x01, - 0x12, 0x1a, 0x0a, 0x06, 0x72, 0x5f, 0x66, 0x6c, 0x61, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, - 0x48, 0x01, 0x52, 0x05, 0x72, 0x46, 0x6c, 0x61, 0x67, 0x88, 0x01, 0x01, 0x12, 0x1a, 0x0a, 0x06, - 0x6e, 0x5f, 0x66, 0x6c, 0x61, 0x67, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x48, 0x02, 0x52, 0x05, - 0x6e, 0x46, 0x6c, 0x61, 0x67, 0x88, 0x01, 0x01, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x78, 0x5f, 0x66, - 0x6c, 0x61, 0x67, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x72, 0x5f, 0x66, 0x6c, 0x61, 0x67, 0x42, 0x09, - 0x0a, 0x07, 0x5f, 0x6e, 0x5f, 0x66, 0x6c, 0x61, 0x67, 0x22, 0x6a, 0x0a, 0x19, 0x4c, 0x6c, 0x64, - 0x70, 0x4e, 0x65, 0x69, 0x67, 0x68, 0x62, 0x6f, 0x72, 0x73, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x6c, 0x6c, 0x64, 0x70, 0x5f, 0x6e, - 0x61, 0x6d, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x09, 0x6c, 0x6c, 0x64, 0x70, - 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x12, 0x2e, 0x0a, 0x13, 0x6e, 0x65, 0x69, 0x67, 0x68, 0x62, 0x6f, - 0x72, 0x5f, 0x69, 0x64, 0x5f, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, 0x18, 0x02, 0x20, 0x03, - 0x28, 0x09, 0x52, 0x11, 0x6e, 0x65, 0x69, 0x67, 0x68, 0x62, 0x6f, 0x72, 0x49, 0x64, 0x46, 0x69, - 0x6c, 0x74, 0x65, 0x72, 0x73, 0x22, 0xd9, 0x0a, 0x0a, 0x12, 0x4c, 0x6c, 0x64, 0x70, 0x4e, 0x65, - 0x69, 0x67, 0x68, 0x62, 0x6f, 0x72, 0x73, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x20, 0x0a, 0x09, - 0x6c, 0x6c, 0x64, 0x70, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, - 0x00, 0x52, 0x08, 0x6c, 0x6c, 0x64, 0x70, 0x4e, 0x61, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, 0x24, - 0x0a, 0x0b, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x09, 0x48, 0x01, 0x52, 0x0a, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x4e, 0x61, 0x6d, - 0x65, 0x88, 0x01, 0x01, 0x12, 0x32, 0x0a, 0x12, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x5f, 0x64, - 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, - 0x48, 0x02, 0x52, 0x11, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, - 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x12, 0x22, 0x0a, 0x0a, 0x63, 0x68, 0x61, 0x73, - 0x73, 0x69, 0x73, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x48, 0x03, 0x52, 0x09, - 0x63, 0x68, 0x61, 0x73, 0x73, 0x69, 0x73, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x57, 0x0a, 0x0f, - 0x63, 0x68, 0x61, 0x73, 0x73, 0x69, 0x73, 0x5f, 0x69, 0x64, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, - 0x05, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2a, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x4c, 0x6c, 0x64, 0x70, - 0x4e, 0x65, 0x69, 0x67, 0x68, 0x62, 0x6f, 0x72, 0x73, 0x53, 0x74, 0x61, 0x74, 0x65, 0x2e, 0x43, - 0x68, 0x61, 0x73, 0x73, 0x69, 0x73, 0x49, 0x64, 0x54, 0x79, 0x70, 0x65, 0x2e, 0x45, 0x6e, 0x75, - 0x6d, 0x48, 0x04, 0x52, 0x0d, 0x63, 0x68, 0x61, 0x73, 0x73, 0x69, 0x73, 0x49, 0x64, 0x54, 0x79, - 0x70, 0x65, 0x88, 0x01, 0x01, 0x12, 0x24, 0x0a, 0x0b, 0x6e, 0x65, 0x69, 0x67, 0x68, 0x62, 0x6f, - 0x72, 0x5f, 0x69, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x48, 0x05, 0x52, 0x0a, 0x6e, 0x65, - 0x69, 0x67, 0x68, 0x62, 0x6f, 0x72, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x15, 0x0a, 0x03, 0x61, - 0x67, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x06, 0x52, 0x03, 0x61, 0x67, 0x65, 0x88, - 0x01, 0x01, 0x12, 0x24, 0x0a, 0x0b, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x75, 0x70, 0x64, 0x61, 0x74, - 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x07, 0x52, 0x0a, 0x6c, 0x61, 0x73, 0x74, 0x55, - 0x70, 0x64, 0x61, 0x74, 0x65, 0x88, 0x01, 0x01, 0x12, 0x15, 0x0a, 0x03, 0x74, 0x74, 0x6c, 0x18, - 0x09, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x08, 0x52, 0x03, 0x74, 0x74, 0x6c, 0x88, 0x01, 0x01, 0x12, - 0x1c, 0x0a, 0x07, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, - 0x48, 0x09, 0x52, 0x06, 0x70, 0x6f, 0x72, 0x74, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x4e, 0x0a, - 0x0c, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x69, 0x64, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x0b, 0x20, - 0x01, 0x28, 0x0e, 0x32, 0x27, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x4c, 0x6c, 0x64, 0x70, 0x4e, 0x65, - 0x69, 0x67, 0x68, 0x62, 0x6f, 0x72, 0x73, 0x53, 0x74, 0x61, 0x74, 0x65, 0x2e, 0x50, 0x6f, 0x72, - 0x74, 0x49, 0x64, 0x54, 0x79, 0x70, 0x65, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x48, 0x0a, 0x52, 0x0a, - 0x70, 0x6f, 0x72, 0x74, 0x49, 0x64, 0x54, 0x79, 0x70, 0x65, 0x88, 0x01, 0x01, 0x12, 0x2e, 0x0a, - 0x10, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, - 0x6e, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x48, 0x0b, 0x52, 0x0f, 0x70, 0x6f, 0x72, 0x74, 0x44, - 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x12, 0x32, 0x0a, - 0x12, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x61, 0x64, 0x64, 0x72, - 0x65, 0x73, 0x73, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x48, 0x0c, 0x52, 0x11, 0x6d, 0x61, 0x6e, - 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x88, 0x01, - 0x01, 0x12, 0x3b, 0x0a, 0x17, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x5f, - 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x0e, 0x20, 0x01, - 0x28, 0x09, 0x48, 0x0d, 0x52, 0x15, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, - 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x54, 0x79, 0x70, 0x65, 0x88, 0x01, 0x01, 0x12, 0x38, - 0x0a, 0x0b, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x5f, 0x74, 0x6c, 0x76, 0x73, 0x18, 0x0f, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x4c, 0x6c, 0x64, 0x70, 0x43, 0x75, - 0x73, 0x74, 0x6f, 0x6d, 0x54, 0x4c, 0x56, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x0a, 0x63, 0x75, - 0x73, 0x74, 0x6f, 0x6d, 0x54, 0x6c, 0x76, 0x73, 0x12, 0x3c, 0x0a, 0x0c, 0x63, 0x61, 0x70, 0x61, - 0x62, 0x69, 0x6c, 0x69, 0x74, 0x69, 0x65, 0x73, 0x18, 0x10, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, - 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x4c, 0x6c, 0x64, 0x70, 0x43, 0x61, 0x70, 0x61, 0x62, 0x69, 0x6c, - 0x69, 0x74, 0x79, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x0c, 0x63, 0x61, 0x70, 0x61, 0x62, 0x69, - 0x6c, 0x69, 0x74, 0x69, 0x65, 0x73, 0x1a, 0xae, 0x01, 0x0a, 0x0d, 0x43, 0x68, 0x61, 0x73, 0x73, - 0x69, 0x73, 0x49, 0x64, 0x54, 0x79, 0x70, 0x65, 0x22, 0x9c, 0x01, 0x0a, 0x04, 0x45, 0x6e, 0x75, - 0x6d, 0x12, 0x0f, 0x0a, 0x0b, 0x75, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, - 0x10, 0x00, 0x12, 0x12, 0x0a, 0x0e, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x63, 0x6f, 0x6d, 0x70, 0x6f, - 0x6e, 0x65, 0x6e, 0x74, 0x10, 0x01, 0x12, 0x13, 0x0a, 0x0f, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, - 0x6b, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x10, 0x02, 0x12, 0x15, 0x0a, 0x11, 0x63, - 0x68, 0x61, 0x73, 0x73, 0x69, 0x73, 0x5f, 0x63, 0x6f, 0x6d, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, - 0x10, 0x03, 0x12, 0x0f, 0x0a, 0x0b, 0x6d, 0x61, 0x63, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, - 0x73, 0x10, 0x04, 0x12, 0x12, 0x0a, 0x0e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, - 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x10, 0x05, 0x12, 0x09, 0x0a, 0x05, 0x6c, 0x6f, 0x63, 0x61, 0x6c, - 0x10, 0x06, 0x12, 0x13, 0x0a, 0x0f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x5f, - 0x61, 0x6c, 0x69, 0x61, 0x73, 0x10, 0x07, 0x1a, 0xaa, 0x01, 0x0a, 0x0a, 0x50, 0x6f, 0x72, 0x74, - 0x49, 0x64, 0x54, 0x79, 0x70, 0x65, 0x22, 0x9b, 0x01, 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, - 0x0f, 0x0a, 0x0b, 0x75, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x10, 0x00, - 0x12, 0x12, 0x0a, 0x0e, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x63, 0x6f, 0x6d, 0x70, 0x6f, 0x6e, 0x65, - 0x6e, 0x74, 0x10, 0x01, 0x12, 0x13, 0x0a, 0x0f, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x5f, - 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x10, 0x02, 0x12, 0x14, 0x0a, 0x10, 0x61, 0x67, 0x65, - 0x6e, 0x74, 0x5f, 0x63, 0x69, 0x72, 0x63, 0x75, 0x69, 0x74, 0x5f, 0x69, 0x64, 0x10, 0x03, 0x12, - 0x0f, 0x0a, 0x0b, 0x6d, 0x61, 0x63, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x10, 0x04, - 0x12, 0x12, 0x0a, 0x0e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x5f, 0x6e, 0x61, - 0x6d, 0x65, 0x10, 0x05, 0x12, 0x09, 0x0a, 0x05, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x10, 0x06, 0x12, - 0x13, 0x0a, 0x0f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x5f, 0x61, 0x6c, 0x69, - 0x61, 0x73, 0x10, 0x07, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x6c, 0x6c, 0x64, 0x70, 0x5f, 0x6e, 0x61, - 0x6d, 0x65, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x5f, 0x6e, 0x61, - 0x6d, 0x65, 0x42, 0x15, 0x0a, 0x13, 0x5f, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x5f, 0x64, 0x65, - 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x63, 0x68, - 0x61, 0x73, 0x73, 0x69, 0x73, 0x5f, 0x69, 0x64, 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x63, 0x68, 0x61, - 0x73, 0x73, 0x69, 0x73, 0x5f, 0x69, 0x64, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x42, 0x0e, 0x0a, 0x0c, - 0x5f, 0x6e, 0x65, 0x69, 0x67, 0x68, 0x62, 0x6f, 0x72, 0x5f, 0x69, 0x64, 0x42, 0x06, 0x0a, 0x04, - 0x5f, 0x61, 0x67, 0x65, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x75, 0x70, - 0x64, 0x61, 0x74, 0x65, 0x42, 0x06, 0x0a, 0x04, 0x5f, 0x74, 0x74, 0x6c, 0x42, 0x0a, 0x0a, 0x08, - 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x69, 0x64, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x70, 0x6f, 0x72, - 0x74, 0x5f, 0x69, 0x64, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x42, 0x13, 0x0a, 0x11, 0x5f, 0x70, 0x6f, - 0x72, 0x74, 0x5f, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x15, - 0x0a, 0x13, 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x61, 0x64, - 0x64, 0x72, 0x65, 0x73, 0x73, 0x42, 0x1a, 0x0a, 0x18, 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, - 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x5f, 0x74, 0x79, 0x70, - 0x65, 0x22, 0x9f, 0x01, 0x0a, 0x12, 0x4c, 0x6c, 0x64, 0x70, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, - 0x54, 0x4c, 0x56, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x24, 0x0a, 0x0b, 0x63, 0x75, 0x73, 0x74, - 0x6f, 0x6d, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x00, 0x52, - 0x0a, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x54, 0x79, 0x70, 0x65, 0x88, 0x01, 0x01, 0x12, 0x15, - 0x0a, 0x03, 0x6f, 0x75, 0x69, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, 0x52, 0x03, 0x6f, - 0x75, 0x69, 0x88, 0x01, 0x01, 0x12, 0x24, 0x0a, 0x0b, 0x6f, 0x75, 0x69, 0x5f, 0x73, 0x75, 0x62, - 0x74, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x48, 0x02, 0x52, 0x0a, 0x6f, 0x75, - 0x69, 0x53, 0x75, 0x62, 0x74, 0x79, 0x70, 0x65, 0x88, 0x01, 0x01, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, - 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x42, 0x06, 0x0a, 0x04, 0x5f, - 0x6f, 0x75, 0x69, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x6f, 0x75, 0x69, 0x5f, 0x73, 0x75, 0x62, 0x74, - 0x79, 0x70, 0x65, 0x22, 0xb3, 0x03, 0x0a, 0x13, 0x4c, 0x6c, 0x64, 0x70, 0x43, 0x61, 0x70, 0x61, - 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x5a, 0x0a, 0x0f, 0x63, - 0x61, 0x70, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2c, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x4c, 0x6c, 0x64, 0x70, 0x43, - 0x61, 0x70, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x53, 0x74, 0x61, 0x74, 0x65, 0x2e, 0x43, - 0x61, 0x70, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x2e, 0x45, 0x6e, - 0x75, 0x6d, 0x48, 0x00, 0x52, 0x0e, 0x63, 0x61, 0x70, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, - 0x4e, 0x61, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, 0x32, 0x0a, 0x12, 0x63, 0x61, 0x70, 0x61, 0x62, - 0x69, 0x6c, 0x69, 0x74, 0x79, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x08, 0x48, 0x01, 0x52, 0x11, 0x63, 0x61, 0x70, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, - 0x79, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x88, 0x01, 0x01, 0x1a, 0xe0, 0x01, 0x0a, 0x0e, - 0x43, 0x61, 0x70, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0xcd, - 0x01, 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x0a, 0x0b, 0x75, 0x6e, 0x73, 0x70, 0x65, - 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x10, 0x00, 0x12, 0x0e, 0x0a, 0x0a, 0x6d, 0x61, 0x63, 0x5f, - 0x62, 0x72, 0x69, 0x64, 0x67, 0x65, 0x10, 0x01, 0x12, 0x16, 0x0a, 0x12, 0x74, 0x77, 0x6f, 0x5f, - 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x6d, 0x61, 0x63, 0x5f, 0x72, 0x65, 0x6c, 0x61, 0x79, 0x10, 0x02, - 0x12, 0x0c, 0x0a, 0x08, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x72, 0x10, 0x03, 0x12, 0x17, - 0x0a, 0x13, 0x64, 0x6f, 0x63, 0x73, 0x69, 0x73, 0x5f, 0x63, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x64, - 0x65, 0x76, 0x69, 0x63, 0x65, 0x10, 0x04, 0x12, 0x0a, 0x0a, 0x06, 0x73, 0x5f, 0x76, 0x6c, 0x61, - 0x6e, 0x10, 0x05, 0x12, 0x0d, 0x0a, 0x09, 0x74, 0x65, 0x6c, 0x65, 0x70, 0x68, 0x6f, 0x6e, 0x65, - 0x10, 0x06, 0x12, 0x09, 0x0a, 0x05, 0x6f, 0x74, 0x68, 0x65, 0x72, 0x10, 0x07, 0x12, 0x0a, 0x0a, - 0x06, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x10, 0x08, 0x12, 0x0a, 0x0a, 0x06, 0x63, 0x5f, 0x76, - 0x6c, 0x61, 0x6e, 0x10, 0x09, 0x12, 0x10, 0x0a, 0x0c, 0x73, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x5f, 0x6f, 0x6e, 0x6c, 0x79, 0x10, 0x0a, 0x12, 0x15, 0x0a, 0x11, 0x77, 0x6c, 0x61, 0x6e, 0x5f, - 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x5f, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x10, 0x0b, 0x42, 0x12, - 0x0a, 0x10, 0x5f, 0x63, 0x61, 0x70, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x5f, 0x6e, 0x61, - 0x6d, 0x65, 0x42, 0x15, 0x0a, 0x13, 0x5f, 0x63, 0x61, 0x70, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, - 0x79, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x22, 0x42, 0x0a, 0x14, 0x52, 0x73, 0x76, - 0x70, 0x4c, 0x73, 0x70, 0x73, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x12, 0x2a, 0x0a, 0x11, 0x72, 0x73, 0x76, 0x70, 0x5f, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x72, - 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0f, 0x72, 0x73, - 0x76, 0x70, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x22, 0x87, 0x01, - 0x0a, 0x0d, 0x52, 0x73, 0x76, 0x70, 0x4c, 0x73, 0x70, 0x73, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, - 0x2d, 0x0a, 0x10, 0x72, 0x73, 0x76, 0x70, 0x5f, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x5f, 0x6e, - 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x0e, 0x72, 0x73, 0x76, - 0x70, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, 0x32, - 0x0a, 0x09, 0x69, 0x70, 0x76, 0x34, 0x5f, 0x6c, 0x73, 0x70, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, - 0x0b, 0x32, 0x15, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x52, 0x73, 0x76, 0x70, 0x49, 0x50, 0x76, 0x34, - 0x4c, 0x73, 0x70, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x08, 0x69, 0x70, 0x76, 0x34, 0x4c, 0x73, - 0x70, 0x73, 0x42, 0x13, 0x0a, 0x11, 0x5f, 0x72, 0x73, 0x76, 0x70, 0x5f, 0x72, 0x6f, 0x75, 0x74, - 0x65, 0x72, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x96, 0x02, 0x0a, 0x10, 0x52, 0x73, 0x76, 0x70, - 0x49, 0x50, 0x76, 0x34, 0x4c, 0x73, 0x70, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x2a, 0x0a, 0x0e, - 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x0d, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x41, 0x64, - 0x64, 0x72, 0x65, 0x73, 0x73, 0x88, 0x01, 0x01, 0x12, 0x34, 0x0a, 0x13, 0x64, 0x65, 0x73, 0x74, - 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, 0x52, 0x12, 0x64, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x88, 0x01, 0x01, 0x12, 0x23, - 0x0a, 0x03, 0x6c, 0x73, 0x70, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x6f, 0x74, - 0x67, 0x2e, 0x52, 0x73, 0x76, 0x70, 0x4c, 0x73, 0x70, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x03, - 0x6c, 0x73, 0x70, 0x12, 0x27, 0x0a, 0x04, 0x72, 0x72, 0x6f, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, - 0x0b, 0x32, 0x13, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x52, 0x73, 0x76, 0x70, 0x4c, 0x73, 0x70, 0x49, - 0x70, 0x76, 0x34, 0x52, 0x72, 0x6f, 0x52, 0x04, 0x72, 0x72, 0x6f, 0x73, 0x12, 0x27, 0x0a, 0x04, - 0x65, 0x72, 0x6f, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x6f, 0x74, 0x67, - 0x2e, 0x52, 0x73, 0x76, 0x70, 0x4c, 0x73, 0x70, 0x49, 0x70, 0x76, 0x34, 0x45, 0x72, 0x6f, 0x52, - 0x04, 0x65, 0x72, 0x6f, 0x73, 0x42, 0x11, 0x0a, 0x0f, 0x5f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, - 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x42, 0x16, 0x0a, 0x14, 0x5f, 0x64, 0x65, 0x73, - 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, - 0x22, 0x8c, 0x05, 0x0a, 0x0c, 0x52, 0x73, 0x76, 0x70, 0x4c, 0x73, 0x70, 0x53, 0x74, 0x61, 0x74, - 0x65, 0x12, 0x20, 0x0a, 0x09, 0x74, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x5f, 0x69, 0x64, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x0d, 0x48, 0x00, 0x52, 0x08, 0x74, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x49, 0x64, - 0x88, 0x01, 0x01, 0x12, 0x1a, 0x0a, 0x06, 0x6c, 0x73, 0x70, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x05, 0x6c, 0x73, 0x70, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, - 0x26, 0x0a, 0x0c, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x09, 0x48, 0x02, 0x52, 0x0b, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, - 0x4e, 0x61, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, 0x1e, 0x0a, 0x08, 0x6c, 0x61, 0x62, 0x65, 0x6c, - 0x5f, 0x69, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x03, 0x52, 0x07, 0x6c, 0x61, 0x62, - 0x65, 0x6c, 0x49, 0x6e, 0x88, 0x01, 0x01, 0x12, 0x20, 0x0a, 0x09, 0x6c, 0x61, 0x62, 0x65, 0x6c, - 0x5f, 0x6f, 0x75, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x04, 0x52, 0x08, 0x6c, 0x61, - 0x62, 0x65, 0x6c, 0x4f, 0x75, 0x74, 0x88, 0x01, 0x01, 0x12, 0x50, 0x0a, 0x0e, 0x73, 0x65, 0x73, - 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, - 0x0e, 0x32, 0x24, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x52, 0x73, 0x76, 0x70, 0x4c, 0x73, 0x70, 0x53, - 0x74, 0x61, 0x74, 0x65, 0x2e, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, - 0x75, 0x73, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x48, 0x05, 0x52, 0x0d, 0x73, 0x65, 0x73, 0x73, 0x69, - 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x88, 0x01, 0x01, 0x12, 0x54, 0x0a, 0x10, 0x6c, - 0x61, 0x73, 0x74, 0x5f, 0x66, 0x6c, 0x61, 0x70, 0x5f, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x18, - 0x07, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x25, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x52, 0x73, 0x76, 0x70, - 0x4c, 0x73, 0x70, 0x53, 0x74, 0x61, 0x74, 0x65, 0x2e, 0x4c, 0x61, 0x73, 0x74, 0x46, 0x6c, 0x61, - 0x70, 0x52, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x48, 0x06, 0x52, 0x0e, - 0x6c, 0x61, 0x73, 0x74, 0x46, 0x6c, 0x61, 0x70, 0x52, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x88, 0x01, - 0x01, 0x12, 0x1c, 0x0a, 0x07, 0x75, 0x70, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x08, 0x20, 0x01, - 0x28, 0x04, 0x48, 0x07, 0x52, 0x06, 0x75, 0x70, 0x54, 0x69, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x1a, - 0x3a, 0x0a, 0x0d, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, + 0x69, 0x78, 0x52, 0x08, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x65, 0x73, 0x22, 0xd5, 0x04, 0x0a, + 0x0f, 0x49, 0x73, 0x69, 0x73, 0x4c, 0x73, 0x70, 0x56, 0x36, 0x50, 0x72, 0x65, 0x66, 0x69, 0x78, + 0x12, 0x26, 0x0a, 0x0c, 0x69, 0x70, 0x76, 0x36, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x0b, 0x69, 0x70, 0x76, 0x36, 0x41, 0x64, + 0x64, 0x72, 0x65, 0x73, 0x73, 0x88, 0x01, 0x01, 0x12, 0x28, 0x0a, 0x0d, 0x70, 0x72, 0x65, 0x66, + 0x69, 0x78, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, + 0x01, 0x52, 0x0c, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x88, + 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x0d, 0x48, 0x02, 0x52, 0x06, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x88, 0x01, 0x01, 0x12, + 0x62, 0x0a, 0x13, 0x72, 0x65, 0x64, 0x69, 0x73, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, + 0x6e, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2c, 0x2e, 0x6f, + 0x74, 0x67, 0x2e, 0x49, 0x73, 0x69, 0x73, 0x4c, 0x73, 0x70, 0x56, 0x36, 0x50, 0x72, 0x65, 0x66, + 0x69, 0x78, 0x2e, 0x52, 0x65, 0x64, 0x69, 0x73, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, + 0x6e, 0x54, 0x79, 0x70, 0x65, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x48, 0x03, 0x52, 0x12, 0x72, 0x65, + 0x64, 0x69, 0x73, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, + 0x88, 0x01, 0x01, 0x12, 0x4a, 0x0a, 0x0b, 0x6f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x5f, 0x74, 0x79, + 0x70, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x24, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x49, + 0x73, 0x69, 0x73, 0x4c, 0x73, 0x70, 0x56, 0x36, 0x50, 0x72, 0x65, 0x66, 0x69, 0x78, 0x2e, 0x4f, + 0x72, 0x69, 0x67, 0x69, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x48, 0x04, + 0x52, 0x0a, 0x6f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x88, 0x01, 0x01, 0x12, + 0x49, 0x0a, 0x11, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x5f, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, + 0x75, 0x74, 0x65, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x6f, 0x74, 0x67, + 0x2e, 0x49, 0x73, 0x69, 0x73, 0x4c, 0x73, 0x70, 0x50, 0x72, 0x65, 0x66, 0x69, 0x78, 0x41, 0x74, + 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x52, 0x10, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, + 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x1a, 0x3f, 0x0a, 0x12, 0x52, 0x65, + 0x64, 0x69, 0x73, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x22, 0x29, 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x0a, 0x0b, 0x75, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x10, 0x00, 0x12, 0x06, 0x0a, 0x02, 0x75, 0x70, 0x10, - 0x01, 0x12, 0x08, 0x0a, 0x04, 0x64, 0x6f, 0x77, 0x6e, 0x10, 0x02, 0x1a, 0x59, 0x0a, 0x0e, 0x4c, - 0x61, 0x73, 0x74, 0x46, 0x6c, 0x61, 0x70, 0x52, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x22, 0x47, 0x0a, - 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x0a, 0x0b, 0x75, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, - 0x66, 0x69, 0x65, 0x64, 0x10, 0x00, 0x12, 0x0d, 0x0a, 0x09, 0x72, 0x65, 0x73, 0x76, 0x5f, 0x74, - 0x65, 0x61, 0x72, 0x10, 0x01, 0x12, 0x0d, 0x0a, 0x09, 0x70, 0x61, 0x74, 0x68, 0x5f, 0x74, 0x65, - 0x61, 0x72, 0x10, 0x02, 0x12, 0x10, 0x0a, 0x0c, 0x70, 0x61, 0x74, 0x68, 0x5f, 0x74, 0x69, 0x6d, - 0x65, 0x6f, 0x75, 0x74, 0x10, 0x03, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x74, 0x75, 0x6e, 0x6e, 0x65, - 0x6c, 0x5f, 0x69, 0x64, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6c, 0x73, 0x70, 0x5f, 0x69, 0x64, 0x42, - 0x0f, 0x0a, 0x0d, 0x5f, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x6e, 0x61, 0x6d, 0x65, - 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x5f, 0x69, 0x6e, 0x42, 0x0c, 0x0a, - 0x0a, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x5f, 0x6f, 0x75, 0x74, 0x42, 0x11, 0x0a, 0x0f, 0x5f, - 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x42, 0x13, - 0x0a, 0x11, 0x5f, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x66, 0x6c, 0x61, 0x70, 0x5f, 0x72, 0x65, 0x61, - 0x73, 0x6f, 0x6e, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x75, 0x70, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x22, - 0x7a, 0x0a, 0x0e, 0x52, 0x73, 0x76, 0x70, 0x4c, 0x73, 0x70, 0x49, 0x70, 0x76, 0x34, 0x52, 0x72, - 0x6f, 0x12, 0x1d, 0x0a, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x48, 0x00, 0x52, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x88, 0x01, 0x01, - 0x12, 0x2a, 0x0a, 0x0e, 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x5f, 0x6c, 0x61, 0x62, - 0x65, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x0d, 0x72, 0x65, 0x70, 0x6f, - 0x72, 0x74, 0x65, 0x64, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x88, 0x01, 0x01, 0x42, 0x0a, 0x0a, 0x08, - 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x42, 0x11, 0x0a, 0x0f, 0x5f, 0x72, 0x65, 0x70, - 0x6f, 0x72, 0x74, 0x65, 0x64, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x22, 0x85, 0x02, 0x0a, 0x0e, - 0x52, 0x73, 0x76, 0x70, 0x4c, 0x73, 0x70, 0x49, 0x70, 0x76, 0x34, 0x45, 0x72, 0x6f, 0x12, 0x1b, - 0x0a, 0x06, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, - 0x52, 0x06, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x88, 0x01, 0x01, 0x12, 0x15, 0x0a, 0x03, 0x61, - 0x73, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x03, 0x61, 0x73, 0x6e, 0x88, - 0x01, 0x01, 0x12, 0x36, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, - 0x32, 0x1d, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x52, 0x73, 0x76, 0x70, 0x4c, 0x73, 0x70, 0x49, 0x70, - 0x76, 0x34, 0x45, 0x72, 0x6f, 0x2e, 0x54, 0x79, 0x70, 0x65, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x48, - 0x02, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x88, 0x01, 0x01, 0x1a, 0x6b, 0x0a, 0x04, 0x54, 0x79, - 0x70, 0x65, 0x22, 0x63, 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x0a, 0x0b, 0x75, 0x6e, - 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x10, 0x00, 0x12, 0x08, 0x0a, 0x04, 0x69, - 0x70, 0x76, 0x34, 0x10, 0x01, 0x12, 0x08, 0x0a, 0x04, 0x69, 0x70, 0x76, 0x36, 0x10, 0x02, 0x12, - 0x07, 0x0a, 0x03, 0x61, 0x73, 0x6e, 0x10, 0x03, 0x12, 0x08, 0x0a, 0x04, 0x61, 0x73, 0x6e, 0x34, - 0x10, 0x04, 0x12, 0x09, 0x0a, 0x05, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x10, 0x05, 0x12, 0x18, 0x0a, - 0x14, 0x75, 0x6e, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x65, 0x64, 0x5f, 0x69, 0x6e, 0x74, 0x65, - 0x72, 0x66, 0x61, 0x63, 0x65, 0x10, 0x06, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x70, 0x72, 0x65, 0x66, - 0x69, 0x78, 0x42, 0x06, 0x0a, 0x04, 0x5f, 0x61, 0x73, 0x6e, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x74, - 0x79, 0x70, 0x65, 0x22, 0x40, 0x0a, 0x0e, 0x43, 0x61, 0x70, 0x74, 0x75, 0x72, 0x65, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x20, 0x0a, 0x09, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x6e, 0x61, - 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x08, 0x70, 0x6f, 0x72, 0x74, - 0x4e, 0x61, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x70, 0x6f, 0x72, 0x74, - 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x8b, 0x01, 0x0a, 0x1d, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, - 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x45, 0x74, 0x68, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x44, 0x73, 0x74, - 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x12, 0x19, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x88, - 0x01, 0x01, 0x12, 0x17, 0x0a, 0x04, 0x73, 0x74, 0x65, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, - 0x48, 0x01, 0x52, 0x04, 0x73, 0x74, 0x65, 0x70, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x63, - 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x02, 0x52, 0x05, 0x63, 0x6f, - 0x75, 0x6e, 0x74, 0x88, 0x01, 0x01, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, - 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x73, 0x74, 0x65, 0x70, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x63, 0x6f, - 0x75, 0x6e, 0x74, 0x22, 0x93, 0x01, 0x0a, 0x1f, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, - 0x6c, 0x6f, 0x77, 0x45, 0x74, 0x68, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x44, 0x73, 0x74, 0x4d, 0x65, - 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x12, 0x17, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x88, 0x01, 0x01, - 0x12, 0x1b, 0x0a, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, - 0x48, 0x01, 0x52, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, - 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x02, 0x52, - 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x88, 0x01, 0x01, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x6e, - 0x61, 0x6d, 0x65, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x42, 0x09, - 0x0a, 0x07, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x22, 0xf5, 0x03, 0x0a, 0x16, 0x50, 0x61, - 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x45, 0x74, 0x68, 0x65, 0x72, 0x6e, 0x65, - 0x74, 0x44, 0x73, 0x74, 0x12, 0x44, 0x0a, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x0e, 0x32, 0x27, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, - 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x45, 0x74, 0x68, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x44, 0x73, - 0x74, 0x2e, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x48, 0x00, 0x52, - 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x76, 0x61, - 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, 0x52, 0x05, 0x76, 0x61, 0x6c, - 0x75, 0x65, 0x88, 0x01, 0x01, 0x12, 0x16, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, - 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x12, 0x17, 0x0a, - 0x04, 0x61, 0x75, 0x74, 0x6f, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x48, 0x02, 0x52, 0x04, 0x61, - 0x75, 0x74, 0x6f, 0x88, 0x01, 0x01, 0x12, 0x40, 0x0a, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, - 0x65, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x6f, 0x74, 0x67, 0x2e, - 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x45, 0x74, 0x68, 0x65, 0x72, - 0x6e, 0x65, 0x74, 0x44, 0x73, 0x74, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, 0x69, - 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x40, 0x0a, 0x09, 0x64, 0x65, 0x63, 0x72, - 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x6f, 0x74, - 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x45, 0x74, 0x68, - 0x65, 0x72, 0x6e, 0x65, 0x74, 0x44, 0x73, 0x74, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, - 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x45, 0x0a, 0x0b, 0x6d, 0x65, - 0x74, 0x72, 0x69, 0x63, 0x5f, 0x74, 0x61, 0x67, 0x73, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, - 0x24, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, - 0x77, 0x45, 0x74, 0x68, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x44, 0x73, 0x74, 0x4d, 0x65, 0x74, 0x72, - 0x69, 0x63, 0x54, 0x61, 0x67, 0x52, 0x0a, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, - 0x73, 0x1a, 0x60, 0x0a, 0x06, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x22, 0x56, 0x0a, 0x04, 0x45, + 0x01, 0x12, 0x08, 0x0a, 0x04, 0x64, 0x6f, 0x77, 0x6e, 0x10, 0x02, 0x1a, 0x41, 0x0a, 0x0a, 0x4f, + 0x72, 0x69, 0x67, 0x69, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x22, 0x33, 0x0a, 0x04, 0x45, 0x6e, 0x75, + 0x6d, 0x12, 0x0f, 0x0a, 0x0b, 0x75, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, + 0x10, 0x00, 0x12, 0x0c, 0x0a, 0x08, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x10, 0x01, + 0x12, 0x0c, 0x0a, 0x08, 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x10, 0x02, 0x42, 0x0f, + 0x0a, 0x0d, 0x5f, 0x69, 0x70, 0x76, 0x36, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x42, + 0x10, 0x0a, 0x0e, 0x5f, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, + 0x68, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x42, 0x16, 0x0a, 0x14, + 0x5f, 0x72, 0x65, 0x64, 0x69, 0x73, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, + 0x74, 0x79, 0x70, 0x65, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x6f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x5f, + 0x74, 0x79, 0x70, 0x65, 0x22, 0x8e, 0x01, 0x0a, 0x17, 0x49, 0x73, 0x69, 0x73, 0x4c, 0x73, 0x70, + 0x50, 0x72, 0x65, 0x66, 0x69, 0x78, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, + 0x12, 0x1a, 0x0a, 0x06, 0x78, 0x5f, 0x66, 0x6c, 0x61, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, + 0x48, 0x00, 0x52, 0x05, 0x78, 0x46, 0x6c, 0x61, 0x67, 0x88, 0x01, 0x01, 0x12, 0x1a, 0x0a, 0x06, + 0x72, 0x5f, 0x66, 0x6c, 0x61, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x48, 0x01, 0x52, 0x05, + 0x72, 0x46, 0x6c, 0x61, 0x67, 0x88, 0x01, 0x01, 0x12, 0x1a, 0x0a, 0x06, 0x6e, 0x5f, 0x66, 0x6c, + 0x61, 0x67, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x48, 0x02, 0x52, 0x05, 0x6e, 0x46, 0x6c, 0x61, + 0x67, 0x88, 0x01, 0x01, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x78, 0x5f, 0x66, 0x6c, 0x61, 0x67, 0x42, + 0x09, 0x0a, 0x07, 0x5f, 0x72, 0x5f, 0x66, 0x6c, 0x61, 0x67, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6e, + 0x5f, 0x66, 0x6c, 0x61, 0x67, 0x22, 0x6a, 0x0a, 0x19, 0x4c, 0x6c, 0x64, 0x70, 0x4e, 0x65, 0x69, + 0x67, 0x68, 0x62, 0x6f, 0x72, 0x73, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x6c, 0x6c, 0x64, 0x70, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x73, + 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x09, 0x6c, 0x6c, 0x64, 0x70, 0x4e, 0x61, 0x6d, 0x65, + 0x73, 0x12, 0x2e, 0x0a, 0x13, 0x6e, 0x65, 0x69, 0x67, 0x68, 0x62, 0x6f, 0x72, 0x5f, 0x69, 0x64, + 0x5f, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x11, + 0x6e, 0x65, 0x69, 0x67, 0x68, 0x62, 0x6f, 0x72, 0x49, 0x64, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, + 0x73, 0x22, 0xd9, 0x0a, 0x0a, 0x12, 0x4c, 0x6c, 0x64, 0x70, 0x4e, 0x65, 0x69, 0x67, 0x68, 0x62, + 0x6f, 0x72, 0x73, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x20, 0x0a, 0x09, 0x6c, 0x6c, 0x64, 0x70, + 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x08, 0x6c, + 0x6c, 0x64, 0x70, 0x4e, 0x61, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, 0x24, 0x0a, 0x0b, 0x73, 0x79, + 0x73, 0x74, 0x65, 0x6d, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, + 0x01, 0x52, 0x0a, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x4e, 0x61, 0x6d, 0x65, 0x88, 0x01, 0x01, + 0x12, 0x32, 0x0a, 0x12, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x5f, 0x64, 0x65, 0x73, 0x63, 0x72, + 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x48, 0x02, 0x52, 0x11, + 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, + 0x6e, 0x88, 0x01, 0x01, 0x12, 0x22, 0x0a, 0x0a, 0x63, 0x68, 0x61, 0x73, 0x73, 0x69, 0x73, 0x5f, + 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x48, 0x03, 0x52, 0x09, 0x63, 0x68, 0x61, 0x73, + 0x73, 0x69, 0x73, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x57, 0x0a, 0x0f, 0x63, 0x68, 0x61, 0x73, + 0x73, 0x69, 0x73, 0x5f, 0x69, 0x64, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, + 0x0e, 0x32, 0x2a, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x4c, 0x6c, 0x64, 0x70, 0x4e, 0x65, 0x69, 0x67, + 0x68, 0x62, 0x6f, 0x72, 0x73, 0x53, 0x74, 0x61, 0x74, 0x65, 0x2e, 0x43, 0x68, 0x61, 0x73, 0x73, + 0x69, 0x73, 0x49, 0x64, 0x54, 0x79, 0x70, 0x65, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x48, 0x04, 0x52, + 0x0d, 0x63, 0x68, 0x61, 0x73, 0x73, 0x69, 0x73, 0x49, 0x64, 0x54, 0x79, 0x70, 0x65, 0x88, 0x01, + 0x01, 0x12, 0x24, 0x0a, 0x0b, 0x6e, 0x65, 0x69, 0x67, 0x68, 0x62, 0x6f, 0x72, 0x5f, 0x69, 0x64, + 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x48, 0x05, 0x52, 0x0a, 0x6e, 0x65, 0x69, 0x67, 0x68, 0x62, + 0x6f, 0x72, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x15, 0x0a, 0x03, 0x61, 0x67, 0x65, 0x18, 0x07, + 0x20, 0x01, 0x28, 0x0d, 0x48, 0x06, 0x52, 0x03, 0x61, 0x67, 0x65, 0x88, 0x01, 0x01, 0x12, 0x24, + 0x0a, 0x0b, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x18, 0x08, 0x20, + 0x01, 0x28, 0x0d, 0x48, 0x07, 0x52, 0x0a, 0x6c, 0x61, 0x73, 0x74, 0x55, 0x70, 0x64, 0x61, 0x74, + 0x65, 0x88, 0x01, 0x01, 0x12, 0x15, 0x0a, 0x03, 0x74, 0x74, 0x6c, 0x18, 0x09, 0x20, 0x01, 0x28, + 0x0d, 0x48, 0x08, 0x52, 0x03, 0x74, 0x74, 0x6c, 0x88, 0x01, 0x01, 0x12, 0x1c, 0x0a, 0x07, 0x70, + 0x6f, 0x72, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x48, 0x09, 0x52, 0x06, + 0x70, 0x6f, 0x72, 0x74, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x4e, 0x0a, 0x0c, 0x70, 0x6f, 0x72, + 0x74, 0x5f, 0x69, 0x64, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0e, 0x32, + 0x27, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x4c, 0x6c, 0x64, 0x70, 0x4e, 0x65, 0x69, 0x67, 0x68, 0x62, + 0x6f, 0x72, 0x73, 0x53, 0x74, 0x61, 0x74, 0x65, 0x2e, 0x50, 0x6f, 0x72, 0x74, 0x49, 0x64, 0x54, + 0x79, 0x70, 0x65, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x48, 0x0a, 0x52, 0x0a, 0x70, 0x6f, 0x72, 0x74, + 0x49, 0x64, 0x54, 0x79, 0x70, 0x65, 0x88, 0x01, 0x01, 0x12, 0x2e, 0x0a, 0x10, 0x70, 0x6f, 0x72, + 0x74, 0x5f, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x0c, 0x20, + 0x01, 0x28, 0x09, 0x48, 0x0b, 0x52, 0x0f, 0x70, 0x6f, 0x72, 0x74, 0x44, 0x65, 0x73, 0x63, 0x72, + 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x12, 0x32, 0x0a, 0x12, 0x6d, 0x61, 0x6e, + 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, + 0x0d, 0x20, 0x01, 0x28, 0x09, 0x48, 0x0c, 0x52, 0x11, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, + 0x65, 0x6e, 0x74, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x88, 0x01, 0x01, 0x12, 0x3b, 0x0a, + 0x17, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x61, 0x64, 0x64, 0x72, + 0x65, 0x73, 0x73, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x09, 0x48, 0x0d, + 0x52, 0x15, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x41, 0x64, 0x64, 0x72, + 0x65, 0x73, 0x73, 0x54, 0x79, 0x70, 0x65, 0x88, 0x01, 0x01, 0x12, 0x38, 0x0a, 0x0b, 0x63, 0x75, + 0x73, 0x74, 0x6f, 0x6d, 0x5f, 0x74, 0x6c, 0x76, 0x73, 0x18, 0x0f, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x17, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x4c, 0x6c, 0x64, 0x70, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, + 0x54, 0x4c, 0x56, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x0a, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, + 0x54, 0x6c, 0x76, 0x73, 0x12, 0x3c, 0x0a, 0x0c, 0x63, 0x61, 0x70, 0x61, 0x62, 0x69, 0x6c, 0x69, + 0x74, 0x69, 0x65, 0x73, 0x18, 0x10, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x6f, 0x74, 0x67, + 0x2e, 0x4c, 0x6c, 0x64, 0x70, 0x43, 0x61, 0x70, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x53, + 0x74, 0x61, 0x74, 0x65, 0x52, 0x0c, 0x63, 0x61, 0x70, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x69, + 0x65, 0x73, 0x1a, 0xae, 0x01, 0x0a, 0x0d, 0x43, 0x68, 0x61, 0x73, 0x73, 0x69, 0x73, 0x49, 0x64, + 0x54, 0x79, 0x70, 0x65, 0x22, 0x9c, 0x01, 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x0a, + 0x0b, 0x75, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x10, 0x00, 0x12, 0x12, + 0x0a, 0x0e, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x63, 0x6f, 0x6d, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, + 0x10, 0x01, 0x12, 0x13, 0x0a, 0x0f, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x5f, 0x61, 0x64, + 0x64, 0x72, 0x65, 0x73, 0x73, 0x10, 0x02, 0x12, 0x15, 0x0a, 0x11, 0x63, 0x68, 0x61, 0x73, 0x73, + 0x69, 0x73, 0x5f, 0x63, 0x6f, 0x6d, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x10, 0x03, 0x12, 0x0f, + 0x0a, 0x0b, 0x6d, 0x61, 0x63, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x10, 0x04, 0x12, + 0x12, 0x0a, 0x0e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x5f, 0x6e, 0x61, 0x6d, + 0x65, 0x10, 0x05, 0x12, 0x09, 0x0a, 0x05, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x10, 0x06, 0x12, 0x13, + 0x0a, 0x0f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x5f, 0x61, 0x6c, 0x69, 0x61, + 0x73, 0x10, 0x07, 0x1a, 0xaa, 0x01, 0x0a, 0x0a, 0x50, 0x6f, 0x72, 0x74, 0x49, 0x64, 0x54, 0x79, + 0x70, 0x65, 0x22, 0x9b, 0x01, 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x0a, 0x0b, 0x75, + 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x10, 0x00, 0x12, 0x12, 0x0a, 0x0e, + 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x63, 0x6f, 0x6d, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x10, 0x01, + 0x12, 0x13, 0x0a, 0x0f, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x5f, 0x61, 0x64, 0x64, 0x72, + 0x65, 0x73, 0x73, 0x10, 0x02, 0x12, 0x14, 0x0a, 0x10, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x5f, 0x63, + 0x69, 0x72, 0x63, 0x75, 0x69, 0x74, 0x5f, 0x69, 0x64, 0x10, 0x03, 0x12, 0x0f, 0x0a, 0x0b, 0x6d, + 0x61, 0x63, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x10, 0x04, 0x12, 0x12, 0x0a, 0x0e, + 0x69, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x10, 0x05, + 0x12, 0x09, 0x0a, 0x05, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x10, 0x06, 0x12, 0x13, 0x0a, 0x0f, 0x69, + 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x5f, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x10, 0x07, + 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x6c, 0x6c, 0x64, 0x70, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x42, 0x0e, + 0x0a, 0x0c, 0x5f, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x42, 0x15, + 0x0a, 0x13, 0x5f, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x5f, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, + 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x63, 0x68, 0x61, 0x73, 0x73, 0x69, + 0x73, 0x5f, 0x69, 0x64, 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x63, 0x68, 0x61, 0x73, 0x73, 0x69, 0x73, + 0x5f, 0x69, 0x64, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x6e, 0x65, 0x69, + 0x67, 0x68, 0x62, 0x6f, 0x72, 0x5f, 0x69, 0x64, 0x42, 0x06, 0x0a, 0x04, 0x5f, 0x61, 0x67, 0x65, + 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, + 0x42, 0x06, 0x0a, 0x04, 0x5f, 0x74, 0x74, 0x6c, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x70, 0x6f, 0x72, + 0x74, 0x5f, 0x69, 0x64, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x69, 0x64, + 0x5f, 0x74, 0x79, 0x70, 0x65, 0x42, 0x13, 0x0a, 0x11, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x64, + 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x15, 0x0a, 0x13, 0x5f, 0x6d, + 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, + 0x73, 0x42, 0x1a, 0x0a, 0x18, 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, + 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x22, 0x9f, 0x01, + 0x0a, 0x12, 0x4c, 0x6c, 0x64, 0x70, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x54, 0x4c, 0x56, 0x53, + 0x74, 0x61, 0x74, 0x65, 0x12, 0x24, 0x0a, 0x0b, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x5f, 0x74, + 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x00, 0x52, 0x0a, 0x63, 0x75, 0x73, + 0x74, 0x6f, 0x6d, 0x54, 0x79, 0x70, 0x65, 0x88, 0x01, 0x01, 0x12, 0x15, 0x0a, 0x03, 0x6f, 0x75, + 0x69, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, 0x52, 0x03, 0x6f, 0x75, 0x69, 0x88, 0x01, + 0x01, 0x12, 0x24, 0x0a, 0x0b, 0x6f, 0x75, 0x69, 0x5f, 0x73, 0x75, 0x62, 0x74, 0x79, 0x70, 0x65, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x48, 0x02, 0x52, 0x0a, 0x6f, 0x75, 0x69, 0x53, 0x75, 0x62, + 0x74, 0x79, 0x70, 0x65, 0x88, 0x01, 0x01, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x63, 0x75, 0x73, 0x74, + 0x6f, 0x6d, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x42, 0x06, 0x0a, 0x04, 0x5f, 0x6f, 0x75, 0x69, 0x42, + 0x0e, 0x0a, 0x0c, 0x5f, 0x6f, 0x75, 0x69, 0x5f, 0x73, 0x75, 0x62, 0x74, 0x79, 0x70, 0x65, 0x22, + 0xb3, 0x03, 0x0a, 0x13, 0x4c, 0x6c, 0x64, 0x70, 0x43, 0x61, 0x70, 0x61, 0x62, 0x69, 0x6c, 0x69, + 0x74, 0x79, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x5a, 0x0a, 0x0f, 0x63, 0x61, 0x70, 0x61, 0x62, + 0x69, 0x6c, 0x69, 0x74, 0x79, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, + 0x32, 0x2c, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x4c, 0x6c, 0x64, 0x70, 0x43, 0x61, 0x70, 0x61, 0x62, + 0x69, 0x6c, 0x69, 0x74, 0x79, 0x53, 0x74, 0x61, 0x74, 0x65, 0x2e, 0x43, 0x61, 0x70, 0x61, 0x62, + 0x69, 0x6c, 0x69, 0x74, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x48, 0x00, + 0x52, 0x0e, 0x63, 0x61, 0x70, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x4e, 0x61, 0x6d, 0x65, + 0x88, 0x01, 0x01, 0x12, 0x32, 0x0a, 0x12, 0x63, 0x61, 0x70, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, + 0x79, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x48, + 0x01, 0x52, 0x11, 0x63, 0x61, 0x70, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x45, 0x6e, 0x61, + 0x62, 0x6c, 0x65, 0x64, 0x88, 0x01, 0x01, 0x1a, 0xe0, 0x01, 0x0a, 0x0e, 0x43, 0x61, 0x70, 0x61, + 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0xcd, 0x01, 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x0a, 0x0b, 0x75, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, - 0x65, 0x64, 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x10, 0x02, 0x12, - 0x0a, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x10, 0x03, 0x12, 0x08, 0x0a, 0x04, 0x61, - 0x75, 0x74, 0x6f, 0x10, 0x01, 0x12, 0x0d, 0x0a, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, - 0x6e, 0x74, 0x10, 0x04, 0x12, 0x0d, 0x0a, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, - 0x74, 0x10, 0x05, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x42, 0x08, - 0x0a, 0x06, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x61, 0x75, 0x74, - 0x6f, 0x22, 0x8b, 0x01, 0x0a, 0x1d, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, - 0x77, 0x45, 0x74, 0x68, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x53, 0x72, 0x63, 0x43, 0x6f, 0x75, 0x6e, + 0x65, 0x64, 0x10, 0x00, 0x12, 0x0e, 0x0a, 0x0a, 0x6d, 0x61, 0x63, 0x5f, 0x62, 0x72, 0x69, 0x64, + 0x67, 0x65, 0x10, 0x01, 0x12, 0x16, 0x0a, 0x12, 0x74, 0x77, 0x6f, 0x5f, 0x70, 0x6f, 0x72, 0x74, + 0x5f, 0x6d, 0x61, 0x63, 0x5f, 0x72, 0x65, 0x6c, 0x61, 0x79, 0x10, 0x02, 0x12, 0x0c, 0x0a, 0x08, + 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x72, 0x10, 0x03, 0x12, 0x17, 0x0a, 0x13, 0x64, 0x6f, + 0x63, 0x73, 0x69, 0x73, 0x5f, 0x63, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, + 0x65, 0x10, 0x04, 0x12, 0x0a, 0x0a, 0x06, 0x73, 0x5f, 0x76, 0x6c, 0x61, 0x6e, 0x10, 0x05, 0x12, + 0x0d, 0x0a, 0x09, 0x74, 0x65, 0x6c, 0x65, 0x70, 0x68, 0x6f, 0x6e, 0x65, 0x10, 0x06, 0x12, 0x09, + 0x0a, 0x05, 0x6f, 0x74, 0x68, 0x65, 0x72, 0x10, 0x07, 0x12, 0x0a, 0x0a, 0x06, 0x72, 0x6f, 0x75, + 0x74, 0x65, 0x72, 0x10, 0x08, 0x12, 0x0a, 0x0a, 0x06, 0x63, 0x5f, 0x76, 0x6c, 0x61, 0x6e, 0x10, + 0x09, 0x12, 0x10, 0x0a, 0x0c, 0x73, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6f, 0x6e, 0x6c, + 0x79, 0x10, 0x0a, 0x12, 0x15, 0x0a, 0x11, 0x77, 0x6c, 0x61, 0x6e, 0x5f, 0x61, 0x63, 0x63, 0x65, + 0x73, 0x73, 0x5f, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x10, 0x0b, 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x63, + 0x61, 0x70, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x42, 0x15, + 0x0a, 0x13, 0x5f, 0x63, 0x61, 0x70, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x5f, 0x65, 0x6e, + 0x61, 0x62, 0x6c, 0x65, 0x64, 0x22, 0x42, 0x0a, 0x14, 0x52, 0x73, 0x76, 0x70, 0x4c, 0x73, 0x70, + 0x73, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2a, 0x0a, + 0x11, 0x72, 0x73, 0x76, 0x70, 0x5f, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x5f, 0x6e, 0x61, 0x6d, + 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0f, 0x72, 0x73, 0x76, 0x70, 0x52, 0x6f, + 0x75, 0x74, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x22, 0x87, 0x01, 0x0a, 0x0d, 0x52, 0x73, + 0x76, 0x70, 0x4c, 0x73, 0x70, 0x73, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x2d, 0x0a, 0x10, 0x72, + 0x73, 0x76, 0x70, 0x5f, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x0e, 0x72, 0x73, 0x76, 0x70, 0x52, 0x6f, 0x75, + 0x74, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, 0x32, 0x0a, 0x09, 0x69, 0x70, + 0x76, 0x34, 0x5f, 0x6c, 0x73, 0x70, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x15, 0x2e, + 0x6f, 0x74, 0x67, 0x2e, 0x52, 0x73, 0x76, 0x70, 0x49, 0x50, 0x76, 0x34, 0x4c, 0x73, 0x70, 0x53, + 0x74, 0x61, 0x74, 0x65, 0x52, 0x08, 0x69, 0x70, 0x76, 0x34, 0x4c, 0x73, 0x70, 0x73, 0x42, 0x13, + 0x0a, 0x11, 0x5f, 0x72, 0x73, 0x76, 0x70, 0x5f, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x5f, 0x6e, + 0x61, 0x6d, 0x65, 0x22, 0x96, 0x02, 0x0a, 0x10, 0x52, 0x73, 0x76, 0x70, 0x49, 0x50, 0x76, 0x34, + 0x4c, 0x73, 0x70, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x2a, 0x0a, 0x0e, 0x73, 0x6f, 0x75, 0x72, + 0x63, 0x65, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x48, 0x00, 0x52, 0x0d, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, + 0x73, 0x88, 0x01, 0x01, 0x12, 0x34, 0x0a, 0x13, 0x64, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x09, 0x48, 0x01, 0x52, 0x12, 0x64, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x88, 0x01, 0x01, 0x12, 0x23, 0x0a, 0x03, 0x6c, 0x73, + 0x70, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x52, 0x73, + 0x76, 0x70, 0x4c, 0x73, 0x70, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x03, 0x6c, 0x73, 0x70, 0x12, + 0x27, 0x0a, 0x04, 0x72, 0x72, 0x6f, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, + 0x6f, 0x74, 0x67, 0x2e, 0x52, 0x73, 0x76, 0x70, 0x4c, 0x73, 0x70, 0x49, 0x70, 0x76, 0x34, 0x52, + 0x72, 0x6f, 0x52, 0x04, 0x72, 0x72, 0x6f, 0x73, 0x12, 0x27, 0x0a, 0x04, 0x65, 0x72, 0x6f, 0x73, + 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x52, 0x73, 0x76, + 0x70, 0x4c, 0x73, 0x70, 0x49, 0x70, 0x76, 0x34, 0x45, 0x72, 0x6f, 0x52, 0x04, 0x65, 0x72, 0x6f, + 0x73, 0x42, 0x11, 0x0a, 0x0f, 0x5f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x61, 0x64, 0x64, + 0x72, 0x65, 0x73, 0x73, 0x42, 0x16, 0x0a, 0x14, 0x5f, 0x64, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x22, 0x8c, 0x05, 0x0a, + 0x0c, 0x52, 0x73, 0x76, 0x70, 0x4c, 0x73, 0x70, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x20, 0x0a, + 0x09, 0x74, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, + 0x48, 0x00, 0x52, 0x08, 0x74, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, + 0x1a, 0x0a, 0x06, 0x6c, 0x73, 0x70, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, + 0x01, 0x52, 0x05, 0x6c, 0x73, 0x70, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x26, 0x0a, 0x0c, 0x73, + 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x09, 0x48, 0x02, 0x52, 0x0b, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x4e, 0x61, 0x6d, 0x65, + 0x88, 0x01, 0x01, 0x12, 0x1e, 0x0a, 0x08, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x5f, 0x69, 0x6e, 0x18, + 0x04, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x03, 0x52, 0x07, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x49, 0x6e, + 0x88, 0x01, 0x01, 0x12, 0x20, 0x0a, 0x09, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x5f, 0x6f, 0x75, 0x74, + 0x18, 0x05, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x04, 0x52, 0x08, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x4f, + 0x75, 0x74, 0x88, 0x01, 0x01, 0x12, 0x50, 0x0a, 0x0e, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, + 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x24, 0x2e, + 0x6f, 0x74, 0x67, 0x2e, 0x52, 0x73, 0x76, 0x70, 0x4c, 0x73, 0x70, 0x53, 0x74, 0x61, 0x74, 0x65, + 0x2e, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x2e, 0x45, + 0x6e, 0x75, 0x6d, 0x48, 0x05, 0x52, 0x0d, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x53, 0x74, + 0x61, 0x74, 0x75, 0x73, 0x88, 0x01, 0x01, 0x12, 0x54, 0x0a, 0x10, 0x6c, 0x61, 0x73, 0x74, 0x5f, + 0x66, 0x6c, 0x61, 0x70, 0x5f, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x18, 0x07, 0x20, 0x01, 0x28, + 0x0e, 0x32, 0x25, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x52, 0x73, 0x76, 0x70, 0x4c, 0x73, 0x70, 0x53, + 0x74, 0x61, 0x74, 0x65, 0x2e, 0x4c, 0x61, 0x73, 0x74, 0x46, 0x6c, 0x61, 0x70, 0x52, 0x65, 0x61, + 0x73, 0x6f, 0x6e, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x48, 0x06, 0x52, 0x0e, 0x6c, 0x61, 0x73, 0x74, + 0x46, 0x6c, 0x61, 0x70, 0x52, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x12, 0x1c, 0x0a, + 0x07, 0x75, 0x70, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x04, 0x48, 0x07, + 0x52, 0x06, 0x75, 0x70, 0x54, 0x69, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x1a, 0x3a, 0x0a, 0x0d, 0x53, + 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x22, 0x29, 0x0a, 0x04, + 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x0a, 0x0b, 0x75, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, + 0x69, 0x65, 0x64, 0x10, 0x00, 0x12, 0x06, 0x0a, 0x02, 0x75, 0x70, 0x10, 0x01, 0x12, 0x08, 0x0a, + 0x04, 0x64, 0x6f, 0x77, 0x6e, 0x10, 0x02, 0x1a, 0x59, 0x0a, 0x0e, 0x4c, 0x61, 0x73, 0x74, 0x46, + 0x6c, 0x61, 0x70, 0x52, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x22, 0x47, 0x0a, 0x04, 0x45, 0x6e, 0x75, + 0x6d, 0x12, 0x0f, 0x0a, 0x0b, 0x75, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, + 0x10, 0x00, 0x12, 0x0d, 0x0a, 0x09, 0x72, 0x65, 0x73, 0x76, 0x5f, 0x74, 0x65, 0x61, 0x72, 0x10, + 0x01, 0x12, 0x0d, 0x0a, 0x09, 0x70, 0x61, 0x74, 0x68, 0x5f, 0x74, 0x65, 0x61, 0x72, 0x10, 0x02, + 0x12, 0x10, 0x0a, 0x0c, 0x70, 0x61, 0x74, 0x68, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, + 0x10, 0x03, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x74, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x5f, 0x69, 0x64, + 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6c, 0x73, 0x70, 0x5f, 0x69, 0x64, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, + 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x42, 0x0b, 0x0a, 0x09, + 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x5f, 0x69, 0x6e, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x6c, 0x61, + 0x62, 0x65, 0x6c, 0x5f, 0x6f, 0x75, 0x74, 0x42, 0x11, 0x0a, 0x0f, 0x5f, 0x73, 0x65, 0x73, 0x73, + 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x42, 0x13, 0x0a, 0x11, 0x5f, 0x6c, + 0x61, 0x73, 0x74, 0x5f, 0x66, 0x6c, 0x61, 0x70, 0x5f, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x42, + 0x0a, 0x0a, 0x08, 0x5f, 0x75, 0x70, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x22, 0x7a, 0x0a, 0x0e, 0x52, + 0x73, 0x76, 0x70, 0x4c, 0x73, 0x70, 0x49, 0x70, 0x76, 0x34, 0x52, 0x72, 0x6f, 0x12, 0x1d, 0x0a, + 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, + 0x52, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x88, 0x01, 0x01, 0x12, 0x2a, 0x0a, 0x0e, + 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x0d, 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, + 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x88, 0x01, 0x01, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x61, 0x64, 0x64, + 0x72, 0x65, 0x73, 0x73, 0x42, 0x11, 0x0a, 0x0f, 0x5f, 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x65, + 0x64, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x22, 0x85, 0x02, 0x0a, 0x0e, 0x52, 0x73, 0x76, 0x70, + 0x4c, 0x73, 0x70, 0x49, 0x70, 0x76, 0x34, 0x45, 0x72, 0x6f, 0x12, 0x1b, 0x0a, 0x06, 0x70, 0x72, + 0x65, 0x66, 0x69, 0x78, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x06, 0x70, 0x72, + 0x65, 0x66, 0x69, 0x78, 0x88, 0x01, 0x01, 0x12, 0x15, 0x0a, 0x03, 0x61, 0x73, 0x6e, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x03, 0x61, 0x73, 0x6e, 0x88, 0x01, 0x01, 0x12, 0x36, + 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1d, 0x2e, 0x6f, + 0x74, 0x67, 0x2e, 0x52, 0x73, 0x76, 0x70, 0x4c, 0x73, 0x70, 0x49, 0x70, 0x76, 0x34, 0x45, 0x72, + 0x6f, 0x2e, 0x54, 0x79, 0x70, 0x65, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x48, 0x02, 0x52, 0x04, 0x74, + 0x79, 0x70, 0x65, 0x88, 0x01, 0x01, 0x1a, 0x6b, 0x0a, 0x04, 0x54, 0x79, 0x70, 0x65, 0x22, 0x63, + 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x0a, 0x0b, 0x75, 0x6e, 0x73, 0x70, 0x65, 0x63, + 0x69, 0x66, 0x69, 0x65, 0x64, 0x10, 0x00, 0x12, 0x08, 0x0a, 0x04, 0x69, 0x70, 0x76, 0x34, 0x10, + 0x01, 0x12, 0x08, 0x0a, 0x04, 0x69, 0x70, 0x76, 0x36, 0x10, 0x02, 0x12, 0x07, 0x0a, 0x03, 0x61, + 0x73, 0x6e, 0x10, 0x03, 0x12, 0x08, 0x0a, 0x04, 0x61, 0x73, 0x6e, 0x34, 0x10, 0x04, 0x12, 0x09, + 0x0a, 0x05, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x10, 0x05, 0x12, 0x18, 0x0a, 0x14, 0x75, 0x6e, 0x6e, + 0x75, 0x6d, 0x62, 0x65, 0x72, 0x65, 0x64, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, + 0x65, 0x10, 0x06, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x42, 0x06, + 0x0a, 0x04, 0x5f, 0x61, 0x73, 0x6e, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x22, + 0x40, 0x0a, 0x0e, 0x43, 0x61, 0x70, 0x74, 0x75, 0x72, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x12, 0x20, 0x0a, 0x09, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x08, 0x70, 0x6f, 0x72, 0x74, 0x4e, 0x61, 0x6d, 0x65, + 0x88, 0x01, 0x01, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x6e, 0x61, 0x6d, + 0x65, 0x22, 0x8b, 0x01, 0x0a, 0x1d, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, + 0x77, 0x45, 0x74, 0x68, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x44, 0x73, 0x74, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x12, 0x19, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x88, 0x01, 0x01, 0x12, 0x17, 0x0a, 0x04, 0x73, 0x74, 0x65, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, 0x52, 0x04, @@ -100587,7 +115472,7 @@ var file_otg_proto_rawDesc = []byte{ 0x01, 0x01, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x73, 0x74, 0x65, 0x70, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x93, 0x01, 0x0a, 0x1f, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x45, - 0x74, 0x68, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x53, 0x72, 0x63, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, + 0x74, 0x68, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x44, 0x73, 0x74, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x12, 0x17, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x06, @@ -100595,47 +115480,49 @@ var file_otg_proto_rawDesc = []byte{ 0x67, 0x74, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x02, 0x52, 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x88, 0x01, 0x01, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6c, - 0x65, 0x6e, 0x67, 0x74, 0x68, 0x22, 0xc9, 0x03, 0x0a, 0x16, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, - 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x45, 0x74, 0x68, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x53, 0x72, 0x63, + 0x65, 0x6e, 0x67, 0x74, 0x68, 0x22, 0xf5, 0x03, 0x0a, 0x16, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, + 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x45, 0x74, 0x68, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x44, 0x73, 0x74, 0x12, 0x44, 0x0a, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x27, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, - 0x6f, 0x77, 0x45, 0x74, 0x68, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x53, 0x72, 0x63, 0x2e, 0x43, 0x68, + 0x6f, 0x77, 0x45, 0x74, 0x68, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x44, 0x73, 0x74, 0x2e, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x48, 0x00, 0x52, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x88, 0x01, 0x01, 0x12, 0x16, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, - 0x09, 0x52, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x12, 0x40, 0x0a, 0x09, 0x69, 0x6e, 0x63, - 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x6f, - 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x45, 0x74, - 0x68, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x53, 0x72, 0x63, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, - 0x52, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x40, 0x0a, 0x09, 0x64, - 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, - 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, - 0x45, 0x74, 0x68, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x53, 0x72, 0x63, 0x43, 0x6f, 0x75, 0x6e, 0x74, - 0x65, 0x72, 0x52, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x45, 0x0a, - 0x0b, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x5f, 0x74, 0x61, 0x67, 0x73, 0x18, 0x07, 0x20, 0x03, - 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, - 0x46, 0x6c, 0x6f, 0x77, 0x45, 0x74, 0x68, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x53, 0x72, 0x63, 0x4d, - 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x52, 0x0a, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, - 0x54, 0x61, 0x67, 0x73, 0x1a, 0x56, 0x0a, 0x06, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x22, 0x4c, - 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x0a, 0x0b, 0x75, 0x6e, 0x73, 0x70, 0x65, 0x63, - 0x69, 0x66, 0x69, 0x65, 0x64, 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, - 0x10, 0x02, 0x12, 0x0a, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x10, 0x03, 0x12, 0x0d, - 0x0a, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x10, 0x04, 0x12, 0x0d, 0x0a, - 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x10, 0x05, 0x42, 0x09, 0x0a, 0x07, - 0x5f, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x76, 0x61, 0x6c, 0x75, - 0x65, 0x22, 0x91, 0x01, 0x0a, 0x23, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, - 0x77, 0x45, 0x74, 0x68, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x45, 0x74, 0x68, 0x65, 0x72, 0x54, 0x79, - 0x70, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x12, 0x19, 0x0a, 0x05, 0x73, 0x74, 0x61, - 0x72, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x00, 0x52, 0x05, 0x73, 0x74, 0x61, 0x72, - 0x74, 0x88, 0x01, 0x01, 0x12, 0x17, 0x0a, 0x04, 0x73, 0x74, 0x65, 0x70, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x0d, 0x48, 0x01, 0x52, 0x04, 0x73, 0x74, 0x65, 0x70, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, - 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x02, 0x52, 0x05, - 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x88, 0x01, 0x01, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x73, 0x74, 0x61, - 0x72, 0x74, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x73, 0x74, 0x65, 0x70, 0x42, 0x08, 0x0a, 0x06, 0x5f, - 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x99, 0x01, 0x0a, 0x25, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, - 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x45, 0x74, 0x68, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x45, 0x74, 0x68, - 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x12, + 0x09, 0x52, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x12, 0x17, 0x0a, 0x04, 0x61, 0x75, 0x74, + 0x6f, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x48, 0x02, 0x52, 0x04, 0x61, 0x75, 0x74, 0x6f, 0x88, + 0x01, 0x01, 0x12, 0x40, 0x0a, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, + 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, + 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x45, 0x74, 0x68, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x44, + 0x73, 0x74, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, + 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x40, 0x0a, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, + 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, + 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x45, 0x74, 0x68, 0x65, 0x72, 0x6e, 0x65, + 0x74, 0x44, 0x73, 0x74, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, 0x64, 0x65, 0x63, + 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x45, 0x0a, 0x0b, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, + 0x5f, 0x74, 0x61, 0x67, 0x73, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x6f, 0x74, + 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x45, 0x74, 0x68, + 0x65, 0x72, 0x6e, 0x65, 0x74, 0x44, 0x73, 0x74, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, + 0x67, 0x52, 0x0a, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x73, 0x1a, 0x60, 0x0a, + 0x06, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x22, 0x56, 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, + 0x0f, 0x0a, 0x0b, 0x75, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x10, 0x00, + 0x12, 0x09, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x10, 0x02, 0x12, 0x0a, 0x0a, 0x06, 0x76, + 0x61, 0x6c, 0x75, 0x65, 0x73, 0x10, 0x03, 0x12, 0x08, 0x0a, 0x04, 0x61, 0x75, 0x74, 0x6f, 0x10, + 0x01, 0x12, 0x0d, 0x0a, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x10, 0x04, + 0x12, 0x0d, 0x0a, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x10, 0x05, 0x42, + 0x09, 0x0a, 0x07, 0x5f, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x76, + 0x61, 0x6c, 0x75, 0x65, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x61, 0x75, 0x74, 0x6f, 0x22, 0x8b, 0x01, + 0x0a, 0x1d, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x45, 0x74, 0x68, + 0x65, 0x72, 0x6e, 0x65, 0x74, 0x53, 0x72, 0x63, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x12, + 0x19, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, + 0x52, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x88, 0x01, 0x01, 0x12, 0x17, 0x0a, 0x04, 0x73, 0x74, + 0x65, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, 0x52, 0x04, 0x73, 0x74, 0x65, 0x70, + 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x0d, 0x48, 0x02, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x88, 0x01, 0x01, 0x42, 0x08, + 0x0a, 0x06, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x73, 0x74, 0x65, + 0x70, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x93, 0x01, 0x0a, 0x1f, + 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x45, 0x74, 0x68, 0x65, 0x72, + 0x6e, 0x65, 0x74, 0x53, 0x72, 0x63, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x12, 0x17, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x06, 0x6f, 0x66, 0x66, 0x73, @@ -100643,264 +115530,27 @@ var file_otg_proto_rawDesc = []byte{ 0x03, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x02, 0x52, 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x88, 0x01, 0x01, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, - 0x68, 0x22, 0x93, 0x04, 0x0a, 0x1c, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, - 0x77, 0x45, 0x74, 0x68, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x45, 0x74, 0x68, 0x65, 0x72, 0x54, 0x79, - 0x70, 0x65, 0x12, 0x4a, 0x0a, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x0e, 0x32, 0x2d, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, - 0x46, 0x6c, 0x6f, 0x77, 0x45, 0x74, 0x68, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x45, 0x74, 0x68, 0x65, - 0x72, 0x54, 0x79, 0x70, 0x65, 0x2e, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x2e, 0x45, 0x6e, 0x75, - 0x6d, 0x48, 0x00, 0x52, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x88, 0x01, 0x01, 0x12, 0x19, - 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, - 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x88, 0x01, 0x01, 0x12, 0x16, 0x0a, 0x06, 0x76, 0x61, 0x6c, - 0x75, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0d, 0x52, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, - 0x73, 0x12, 0x17, 0x0a, 0x04, 0x61, 0x75, 0x74, 0x6f, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x48, - 0x02, 0x52, 0x04, 0x61, 0x75, 0x74, 0x6f, 0x88, 0x01, 0x01, 0x12, 0x46, 0x0a, 0x09, 0x69, 0x6e, - 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, - 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x45, - 0x74, 0x68, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x45, 0x74, 0x68, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, - 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, - 0x6e, 0x74, 0x12, 0x46, 0x0a, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, - 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, - 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x45, 0x74, 0x68, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x45, - 0x74, 0x68, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, - 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x4b, 0x0a, 0x0b, 0x6d, 0x65, - 0x74, 0x72, 0x69, 0x63, 0x5f, 0x74, 0x61, 0x67, 0x73, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, - 0x2a, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, - 0x77, 0x45, 0x74, 0x68, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x45, 0x74, 0x68, 0x65, 0x72, 0x54, 0x79, - 0x70, 0x65, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x52, 0x0a, 0x6d, 0x65, 0x74, - 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x73, 0x1a, 0x60, 0x0a, 0x06, 0x43, 0x68, 0x6f, 0x69, 0x63, - 0x65, 0x22, 0x56, 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x0a, 0x0b, 0x75, 0x6e, 0x73, - 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, 0x76, 0x61, - 0x6c, 0x75, 0x65, 0x10, 0x02, 0x12, 0x0a, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x10, - 0x03, 0x12, 0x08, 0x0a, 0x04, 0x61, 0x75, 0x74, 0x6f, 0x10, 0x01, 0x12, 0x0d, 0x0a, 0x09, 0x69, - 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x10, 0x04, 0x12, 0x0d, 0x0a, 0x09, 0x64, 0x65, - 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x10, 0x05, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x63, 0x68, - 0x6f, 0x69, 0x63, 0x65, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x07, - 0x0a, 0x05, 0x5f, 0x61, 0x75, 0x74, 0x6f, 0x22, 0x90, 0x01, 0x0a, 0x22, 0x50, 0x61, 0x74, 0x74, - 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x45, 0x74, 0x68, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x50, - 0x66, 0x63, 0x51, 0x75, 0x65, 0x75, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x12, 0x19, - 0x0a, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x00, 0x52, - 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x88, 0x01, 0x01, 0x12, 0x17, 0x0a, 0x04, 0x73, 0x74, 0x65, - 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x04, 0x73, 0x74, 0x65, 0x70, 0x88, - 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x0d, 0x48, 0x02, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x88, 0x01, 0x01, 0x42, 0x08, 0x0a, - 0x06, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x73, 0x74, 0x65, 0x70, - 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x98, 0x01, 0x0a, 0x24, 0x50, + 0x68, 0x22, 0xc9, 0x03, 0x0a, 0x16, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, + 0x77, 0x45, 0x74, 0x68, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x53, 0x72, 0x63, 0x12, 0x44, 0x0a, 0x06, + 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x27, 0x2e, 0x6f, + 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x45, 0x74, + 0x68, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x53, 0x72, 0x63, 0x2e, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, + 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x48, 0x00, 0x52, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x88, + 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x09, 0x48, 0x01, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x88, 0x01, 0x01, 0x12, 0x16, 0x0a, + 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x06, 0x76, + 0x61, 0x6c, 0x75, 0x65, 0x73, 0x12, 0x40, 0x0a, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, + 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x45, 0x74, 0x68, 0x65, 0x72, 0x6e, - 0x65, 0x74, 0x50, 0x66, 0x63, 0x51, 0x75, 0x65, 0x75, 0x65, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, - 0x54, 0x61, 0x67, 0x12, 0x17, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x48, 0x00, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, - 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x06, - 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x6c, 0x65, 0x6e, - 0x67, 0x74, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x02, 0x52, 0x06, 0x6c, 0x65, 0x6e, - 0x67, 0x74, 0x68, 0x88, 0x01, 0x01, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x42, - 0x09, 0x0a, 0x07, 0x5f, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6c, - 0x65, 0x6e, 0x67, 0x74, 0x68, 0x22, 0xe2, 0x03, 0x0a, 0x1b, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, - 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x45, 0x74, 0x68, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x50, 0x66, 0x63, - 0x51, 0x75, 0x65, 0x75, 0x65, 0x12, 0x49, 0x0a, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2c, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, - 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x45, 0x74, 0x68, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x50, - 0x66, 0x63, 0x51, 0x75, 0x65, 0x75, 0x65, 0x2e, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x2e, 0x45, - 0x6e, 0x75, 0x6d, 0x48, 0x00, 0x52, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x88, 0x01, 0x01, - 0x12, 0x19, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, - 0x01, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x88, 0x01, 0x01, 0x12, 0x16, 0x0a, 0x06, 0x76, - 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0d, 0x52, 0x06, 0x76, 0x61, 0x6c, - 0x75, 0x65, 0x73, 0x12, 0x45, 0x0a, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, - 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, - 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x45, 0x74, 0x68, 0x65, 0x72, 0x6e, 0x65, 0x74, - 0x50, 0x66, 0x63, 0x51, 0x75, 0x65, 0x75, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, - 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x45, 0x0a, 0x09, 0x64, 0x65, - 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, - 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x45, - 0x74, 0x68, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x50, 0x66, 0x63, 0x51, 0x75, 0x65, 0x75, 0x65, 0x43, - 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, - 0x74, 0x12, 0x4a, 0x0a, 0x0b, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x5f, 0x74, 0x61, 0x67, 0x73, - 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, - 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x45, 0x74, 0x68, 0x65, 0x72, 0x6e, 0x65, 0x74, - 0x50, 0x66, 0x63, 0x51, 0x75, 0x65, 0x75, 0x65, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, - 0x67, 0x52, 0x0a, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x73, 0x1a, 0x56, 0x0a, - 0x06, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x22, 0x4c, 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, - 0x0f, 0x0a, 0x0b, 0x75, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x10, 0x00, - 0x12, 0x09, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x10, 0x02, 0x12, 0x0a, 0x0a, 0x06, 0x76, - 0x61, 0x6c, 0x75, 0x65, 0x73, 0x10, 0x03, 0x12, 0x0d, 0x0a, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, - 0x6d, 0x65, 0x6e, 0x74, 0x10, 0x04, 0x12, 0x0d, 0x0a, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, - 0x65, 0x6e, 0x74, 0x10, 0x05, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, - 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x8c, 0x01, 0x0a, 0x1e, 0x50, - 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x56, 0x6c, 0x61, 0x6e, 0x50, 0x72, - 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x12, 0x19, 0x0a, - 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x00, 0x52, 0x05, - 0x73, 0x74, 0x61, 0x72, 0x74, 0x88, 0x01, 0x01, 0x12, 0x17, 0x0a, 0x04, 0x73, 0x74, 0x65, 0x70, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x04, 0x73, 0x74, 0x65, 0x70, 0x88, 0x01, - 0x01, 0x12, 0x19, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, - 0x48, 0x02, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x88, 0x01, 0x01, 0x42, 0x08, 0x0a, 0x06, - 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x73, 0x74, 0x65, 0x70, 0x42, - 0x08, 0x0a, 0x06, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x94, 0x01, 0x0a, 0x20, 0x50, 0x61, - 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x56, 0x6c, 0x61, 0x6e, 0x50, 0x72, 0x69, - 0x6f, 0x72, 0x69, 0x74, 0x79, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x12, 0x17, - 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x04, - 0x6e, 0x61, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, - 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, - 0x74, 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x0d, 0x48, 0x02, 0x52, 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x88, 0x01, - 0x01, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6f, - 0x66, 0x66, 0x73, 0x65, 0x74, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, - 0x22, 0xce, 0x03, 0x0a, 0x17, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, - 0x56, 0x6c, 0x61, 0x6e, 0x50, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x12, 0x45, 0x0a, 0x06, - 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x28, 0x2e, 0x6f, - 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x56, 0x6c, - 0x61, 0x6e, 0x50, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x2e, 0x43, 0x68, 0x6f, 0x69, 0x63, - 0x65, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x48, 0x00, 0x52, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, - 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x0d, 0x48, 0x01, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x88, 0x01, 0x01, 0x12, 0x16, - 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0d, 0x52, 0x06, - 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x12, 0x41, 0x0a, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, - 0x65, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x6f, 0x74, 0x67, 0x2e, - 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x56, 0x6c, 0x61, 0x6e, 0x50, - 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, - 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x41, 0x0a, 0x09, 0x64, 0x65, 0x63, - 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x6f, - 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x56, 0x6c, - 0x61, 0x6e, 0x50, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, - 0x72, 0x52, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x46, 0x0a, 0x0b, - 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x5f, 0x74, 0x61, 0x67, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, - 0x0b, 0x32, 0x25, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, - 0x6c, 0x6f, 0x77, 0x56, 0x6c, 0x61, 0x6e, 0x50, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x4d, - 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x52, 0x0a, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, - 0x54, 0x61, 0x67, 0x73, 0x1a, 0x56, 0x0a, 0x06, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x22, 0x4c, - 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x0a, 0x0b, 0x75, 0x6e, 0x73, 0x70, 0x65, 0x63, - 0x69, 0x66, 0x69, 0x65, 0x64, 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, - 0x10, 0x02, 0x12, 0x0a, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x10, 0x03, 0x12, 0x0d, - 0x0a, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x10, 0x04, 0x12, 0x0d, 0x0a, - 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x10, 0x05, 0x42, 0x09, 0x0a, 0x07, - 0x5f, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x76, 0x61, 0x6c, 0x75, - 0x65, 0x22, 0x87, 0x01, 0x0a, 0x19, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, - 0x77, 0x56, 0x6c, 0x61, 0x6e, 0x43, 0x66, 0x69, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x12, - 0x19, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x00, - 0x52, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x88, 0x01, 0x01, 0x12, 0x17, 0x0a, 0x04, 0x73, 0x74, - 0x65, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x04, 0x73, 0x74, 0x65, 0x70, - 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x0d, 0x48, 0x02, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x88, 0x01, 0x01, 0x42, 0x08, - 0x0a, 0x06, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x73, 0x74, 0x65, - 0x70, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x8f, 0x01, 0x0a, 0x1b, - 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x56, 0x6c, 0x61, 0x6e, 0x43, - 0x66, 0x69, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x12, 0x17, 0x0a, 0x04, 0x6e, - 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x04, 0x6e, 0x61, 0x6d, - 0x65, 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x88, 0x01, - 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x0d, 0x48, 0x02, 0x52, 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x88, 0x01, 0x01, 0x42, 0x07, - 0x0a, 0x05, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6f, 0x66, 0x66, 0x73, - 0x65, 0x74, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x22, 0xb5, 0x03, - 0x0a, 0x12, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x56, 0x6c, 0x61, - 0x6e, 0x43, 0x66, 0x69, 0x12, 0x40, 0x0a, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x0e, 0x32, 0x23, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, - 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x56, 0x6c, 0x61, 0x6e, 0x43, 0x66, 0x69, 0x2e, 0x43, 0x68, - 0x6f, 0x69, 0x63, 0x65, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x48, 0x00, 0x52, 0x06, 0x63, 0x68, 0x6f, - 0x69, 0x63, 0x65, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x88, 0x01, - 0x01, 0x12, 0x16, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, - 0x0d, 0x52, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x12, 0x3c, 0x0a, 0x09, 0x69, 0x6e, 0x63, - 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x6f, - 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x56, 0x6c, - 0x61, 0x6e, 0x43, 0x66, 0x69, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, 0x69, 0x6e, - 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x3c, 0x0a, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, - 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x6f, 0x74, 0x67, - 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x56, 0x6c, 0x61, 0x6e, - 0x43, 0x66, 0x69, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, 0x64, 0x65, 0x63, 0x72, - 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x41, 0x0a, 0x0b, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x5f, - 0x74, 0x61, 0x67, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x6f, 0x74, 0x67, - 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x56, 0x6c, 0x61, 0x6e, - 0x43, 0x66, 0x69, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x52, 0x0a, 0x6d, 0x65, - 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x73, 0x1a, 0x56, 0x0a, 0x06, 0x43, 0x68, 0x6f, 0x69, - 0x63, 0x65, 0x22, 0x4c, 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x0a, 0x0b, 0x75, 0x6e, - 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, 0x76, - 0x61, 0x6c, 0x75, 0x65, 0x10, 0x02, 0x12, 0x0a, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, - 0x10, 0x03, 0x12, 0x0d, 0x0a, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x10, - 0x04, 0x12, 0x0d, 0x0a, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x10, 0x05, - 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x42, 0x08, 0x0a, 0x06, 0x5f, - 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x86, 0x01, 0x0a, 0x18, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, - 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x56, 0x6c, 0x61, 0x6e, 0x49, 0x64, 0x43, 0x6f, 0x75, 0x6e, 0x74, - 0x65, 0x72, 0x12, 0x19, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x0d, 0x48, 0x00, 0x52, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x88, 0x01, 0x01, 0x12, 0x17, 0x0a, - 0x04, 0x73, 0x74, 0x65, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x04, 0x73, - 0x74, 0x65, 0x70, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x02, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x88, 0x01, - 0x01, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x42, 0x07, 0x0a, 0x05, 0x5f, - 0x73, 0x74, 0x65, 0x70, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x8e, - 0x01, 0x0a, 0x1a, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x56, 0x6c, - 0x61, 0x6e, 0x49, 0x64, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x12, 0x17, 0x0a, - 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x04, 0x6e, - 0x61, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, - 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x0d, 0x48, 0x02, 0x52, 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x88, 0x01, 0x01, - 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6f, 0x66, - 0x66, 0x73, 0x65, 0x74, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x22, - 0xb0, 0x03, 0x0a, 0x11, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x56, - 0x6c, 0x61, 0x6e, 0x49, 0x64, 0x12, 0x3f, 0x0a, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x22, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, - 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x56, 0x6c, 0x61, 0x6e, 0x49, 0x64, 0x2e, 0x43, 0x68, - 0x6f, 0x69, 0x63, 0x65, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x48, 0x00, 0x52, 0x06, 0x63, 0x68, 0x6f, - 0x69, 0x63, 0x65, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x88, 0x01, - 0x01, 0x12, 0x16, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, - 0x0d, 0x52, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x12, 0x3b, 0x0a, 0x09, 0x69, 0x6e, 0x63, - 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x6f, - 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x56, 0x6c, - 0x61, 0x6e, 0x49, 0x64, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, 0x69, 0x6e, 0x63, - 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x3b, 0x0a, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, - 0x65, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x6f, 0x74, 0x67, 0x2e, - 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x56, 0x6c, 0x61, 0x6e, 0x49, - 0x64, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, - 0x65, 0x6e, 0x74, 0x12, 0x40, 0x0a, 0x0b, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x5f, 0x74, 0x61, - 0x67, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, - 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x56, 0x6c, 0x61, 0x6e, 0x49, 0x64, - 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x52, 0x0a, 0x6d, 0x65, 0x74, 0x72, 0x69, - 0x63, 0x54, 0x61, 0x67, 0x73, 0x1a, 0x56, 0x0a, 0x06, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x22, - 0x4c, 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x0a, 0x0b, 0x75, 0x6e, 0x73, 0x70, 0x65, - 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, - 0x65, 0x10, 0x02, 0x12, 0x0a, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x10, 0x03, 0x12, - 0x0d, 0x0a, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x10, 0x04, 0x12, 0x0d, - 0x0a, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x10, 0x05, 0x42, 0x09, 0x0a, - 0x07, 0x5f, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x76, 0x61, 0x6c, - 0x75, 0x65, 0x22, 0x88, 0x01, 0x0a, 0x1a, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, - 0x6f, 0x77, 0x56, 0x6c, 0x61, 0x6e, 0x54, 0x70, 0x69, 0x64, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, - 0x72, 0x12, 0x19, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, - 0x48, 0x00, 0x52, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x88, 0x01, 0x01, 0x12, 0x17, 0x0a, 0x04, - 0x73, 0x74, 0x65, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x04, 0x73, 0x74, - 0x65, 0x70, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x0d, 0x48, 0x02, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x88, 0x01, 0x01, - 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x73, - 0x74, 0x65, 0x70, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x90, 0x01, - 0x0a, 0x1c, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x56, 0x6c, 0x61, - 0x6e, 0x54, 0x70, 0x69, 0x64, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x12, 0x17, - 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x04, - 0x6e, 0x61, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, - 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, - 0x74, 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x0d, 0x48, 0x02, 0x52, 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x88, 0x01, - 0x01, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6f, - 0x66, 0x66, 0x73, 0x65, 0x74, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, - 0x22, 0xba, 0x03, 0x0a, 0x13, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, - 0x56, 0x6c, 0x61, 0x6e, 0x54, 0x70, 0x69, 0x64, 0x12, 0x41, 0x0a, 0x06, 0x63, 0x68, 0x6f, 0x69, - 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x24, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, - 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x56, 0x6c, 0x61, 0x6e, 0x54, 0x70, - 0x69, 0x64, 0x2e, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x48, 0x00, - 0x52, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x76, - 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x05, 0x76, 0x61, - 0x6c, 0x75, 0x65, 0x88, 0x01, 0x01, 0x12, 0x16, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, - 0x18, 0x03, 0x20, 0x03, 0x28, 0x0d, 0x52, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x12, 0x3d, - 0x0a, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x1f, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, - 0x6c, 0x6f, 0x77, 0x56, 0x6c, 0x61, 0x6e, 0x54, 0x70, 0x69, 0x64, 0x43, 0x6f, 0x75, 0x6e, 0x74, - 0x65, 0x72, 0x52, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x3d, 0x0a, - 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x1f, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, - 0x6f, 0x77, 0x56, 0x6c, 0x61, 0x6e, 0x54, 0x70, 0x69, 0x64, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, - 0x72, 0x52, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x42, 0x0a, 0x0b, - 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x5f, 0x74, 0x61, 0x67, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, - 0x0b, 0x32, 0x21, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, - 0x6c, 0x6f, 0x77, 0x56, 0x6c, 0x61, 0x6e, 0x54, 0x70, 0x69, 0x64, 0x4d, 0x65, 0x74, 0x72, 0x69, + 0x65, 0x74, 0x53, 0x72, 0x63, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, 0x69, 0x6e, + 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x40, 0x0a, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, + 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x6f, 0x74, 0x67, + 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x45, 0x74, 0x68, 0x65, + 0x72, 0x6e, 0x65, 0x74, 0x53, 0x72, 0x63, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, + 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x45, 0x0a, 0x0b, 0x6d, 0x65, 0x74, + 0x72, 0x69, 0x63, 0x5f, 0x74, 0x61, 0x67, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, + 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, + 0x45, 0x74, 0x68, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x53, 0x72, 0x63, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x52, 0x0a, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x73, 0x1a, 0x56, 0x0a, 0x06, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x22, 0x4c, 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x0a, 0x0b, 0x75, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, @@ -100908,46 +115558,101 @@ var file_otg_proto_rawDesc = []byte{ 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x10, 0x03, 0x12, 0x0d, 0x0a, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x10, 0x04, 0x12, 0x0d, 0x0a, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x10, 0x05, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x63, 0x68, 0x6f, - 0x69, 0x63, 0x65, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x8a, 0x01, - 0x0a, 0x1c, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x56, 0x78, 0x6c, - 0x61, 0x6e, 0x46, 0x6c, 0x61, 0x67, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x12, 0x19, - 0x0a, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x00, 0x52, - 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x88, 0x01, 0x01, 0x12, 0x17, 0x0a, 0x04, 0x73, 0x74, 0x65, - 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x04, 0x73, 0x74, 0x65, 0x70, 0x88, - 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x0d, 0x48, 0x02, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x88, 0x01, 0x01, 0x42, 0x08, 0x0a, - 0x06, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x73, 0x74, 0x65, 0x70, - 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x92, 0x01, 0x0a, 0x1e, 0x50, - 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x56, 0x78, 0x6c, 0x61, 0x6e, 0x46, - 0x6c, 0x61, 0x67, 0x73, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x12, 0x17, 0x0a, - 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x04, 0x6e, - 0x61, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, - 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x0d, 0x48, 0x02, 0x52, 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x88, 0x01, 0x01, - 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6f, 0x66, - 0x66, 0x73, 0x65, 0x74, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x22, - 0xc4, 0x03, 0x0a, 0x15, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x56, - 0x78, 0x6c, 0x61, 0x6e, 0x46, 0x6c, 0x61, 0x67, 0x73, 0x12, 0x43, 0x0a, 0x06, 0x63, 0x68, 0x6f, - 0x69, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x26, 0x2e, 0x6f, 0x74, 0x67, 0x2e, - 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x56, 0x78, 0x6c, 0x61, 0x6e, - 0x46, 0x6c, 0x61, 0x67, 0x73, 0x2e, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x2e, 0x45, 0x6e, 0x75, - 0x6d, 0x48, 0x00, 0x52, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x88, 0x01, 0x01, 0x12, 0x19, - 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, - 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x88, 0x01, 0x01, 0x12, 0x16, 0x0a, 0x06, 0x76, 0x61, 0x6c, - 0x75, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0d, 0x52, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, - 0x73, 0x12, 0x3f, 0x0a, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x05, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, - 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x56, 0x78, 0x6c, 0x61, 0x6e, 0x46, 0x6c, 0x61, 0x67, 0x73, - 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, - 0x6e, 0x74, 0x12, 0x3f, 0x0a, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, - 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, - 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x56, 0x78, 0x6c, 0x61, 0x6e, 0x46, 0x6c, 0x61, 0x67, - 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, - 0x65, 0x6e, 0x74, 0x12, 0x44, 0x0a, 0x0b, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x5f, 0x74, 0x61, - 0x67, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, - 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x56, 0x78, 0x6c, 0x61, 0x6e, 0x46, - 0x6c, 0x61, 0x67, 0x73, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x52, 0x0a, 0x6d, + 0x69, 0x63, 0x65, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x91, 0x01, + 0x0a, 0x23, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x45, 0x74, 0x68, + 0x65, 0x72, 0x6e, 0x65, 0x74, 0x45, 0x74, 0x68, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x43, 0x6f, + 0x75, 0x6e, 0x74, 0x65, 0x72, 0x12, 0x19, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x0d, 0x48, 0x00, 0x52, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x88, 0x01, 0x01, + 0x12, 0x17, 0x0a, 0x04, 0x73, 0x74, 0x65, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, + 0x52, 0x04, 0x73, 0x74, 0x65, 0x70, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x63, 0x6f, 0x75, + 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x02, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, + 0x74, 0x88, 0x01, 0x01, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x42, 0x07, + 0x0a, 0x05, 0x5f, 0x73, 0x74, 0x65, 0x70, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x63, 0x6f, 0x75, 0x6e, + 0x74, 0x22, 0x99, 0x01, 0x0a, 0x25, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, + 0x77, 0x45, 0x74, 0x68, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x45, 0x74, 0x68, 0x65, 0x72, 0x54, 0x79, + 0x70, 0x65, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x12, 0x17, 0x0a, 0x04, 0x6e, + 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x04, 0x6e, 0x61, 0x6d, + 0x65, 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x88, 0x01, + 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x0d, 0x48, 0x02, 0x52, 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x88, 0x01, 0x01, 0x42, 0x07, + 0x0a, 0x05, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6f, 0x66, 0x66, 0x73, + 0x65, 0x74, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x22, 0x93, 0x04, + 0x0a, 0x1c, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x45, 0x74, 0x68, + 0x65, 0x72, 0x6e, 0x65, 0x74, 0x45, 0x74, 0x68, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x12, 0x4a, + 0x0a, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2d, + 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, + 0x45, 0x74, 0x68, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x45, 0x74, 0x68, 0x65, 0x72, 0x54, 0x79, 0x70, + 0x65, 0x2e, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x48, 0x00, 0x52, + 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x76, 0x61, + 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x05, 0x76, 0x61, 0x6c, + 0x75, 0x65, 0x88, 0x01, 0x01, 0x12, 0x16, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, + 0x03, 0x20, 0x03, 0x28, 0x0d, 0x52, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x12, 0x17, 0x0a, + 0x04, 0x61, 0x75, 0x74, 0x6f, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x02, 0x52, 0x04, 0x61, + 0x75, 0x74, 0x6f, 0x88, 0x01, 0x01, 0x12, 0x46, 0x0a, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, + 0x65, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x6f, 0x74, 0x67, 0x2e, + 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x45, 0x74, 0x68, 0x65, 0x72, + 0x6e, 0x65, 0x74, 0x45, 0x74, 0x68, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x43, 0x6f, 0x75, 0x6e, + 0x74, 0x65, 0x72, 0x52, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x46, + 0x0a, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x28, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, + 0x6c, 0x6f, 0x77, 0x45, 0x74, 0x68, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x45, 0x74, 0x68, 0x65, 0x72, + 0x54, 0x79, 0x70, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, 0x64, 0x65, 0x63, + 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x4b, 0x0a, 0x0b, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, + 0x5f, 0x74, 0x61, 0x67, 0x73, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x6f, 0x74, + 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x45, 0x74, 0x68, + 0x65, 0x72, 0x6e, 0x65, 0x74, 0x45, 0x74, 0x68, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x4d, 0x65, + 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x52, 0x0a, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, + 0x61, 0x67, 0x73, 0x1a, 0x60, 0x0a, 0x06, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x22, 0x56, 0x0a, + 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x0a, 0x0b, 0x75, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, + 0x66, 0x69, 0x65, 0x64, 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x10, + 0x02, 0x12, 0x0a, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x10, 0x03, 0x12, 0x08, 0x0a, + 0x04, 0x61, 0x75, 0x74, 0x6f, 0x10, 0x01, 0x12, 0x0d, 0x0a, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, + 0x6d, 0x65, 0x6e, 0x74, 0x10, 0x04, 0x12, 0x0d, 0x0a, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, + 0x65, 0x6e, 0x74, 0x10, 0x05, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, + 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x61, + 0x75, 0x74, 0x6f, 0x22, 0x90, 0x01, 0x0a, 0x22, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, + 0x6c, 0x6f, 0x77, 0x45, 0x74, 0x68, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x50, 0x66, 0x63, 0x51, 0x75, + 0x65, 0x75, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x12, 0x19, 0x0a, 0x05, 0x73, 0x74, + 0x61, 0x72, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x00, 0x52, 0x05, 0x73, 0x74, 0x61, + 0x72, 0x74, 0x88, 0x01, 0x01, 0x12, 0x17, 0x0a, 0x04, 0x73, 0x74, 0x65, 0x70, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x04, 0x73, 0x74, 0x65, 0x70, 0x88, 0x01, 0x01, 0x12, 0x19, + 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x02, 0x52, + 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x88, 0x01, 0x01, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x73, 0x74, + 0x61, 0x72, 0x74, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x73, 0x74, 0x65, 0x70, 0x42, 0x08, 0x0a, 0x06, + 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x98, 0x01, 0x0a, 0x24, 0x50, 0x61, 0x74, 0x74, 0x65, + 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x45, 0x74, 0x68, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x50, 0x66, + 0x63, 0x51, 0x75, 0x65, 0x75, 0x65, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x12, + 0x17, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, + 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x6f, 0x66, 0x66, 0x73, + 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x06, 0x6f, 0x66, 0x66, 0x73, + 0x65, 0x74, 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x02, 0x52, 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x88, + 0x01, 0x01, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x42, 0x09, 0x0a, 0x07, 0x5f, + 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, + 0x68, 0x22, 0xe2, 0x03, 0x0a, 0x1b, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, + 0x77, 0x45, 0x74, 0x68, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x50, 0x66, 0x63, 0x51, 0x75, 0x65, 0x75, + 0x65, 0x12, 0x49, 0x0a, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x0e, 0x32, 0x2c, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, + 0x6c, 0x6f, 0x77, 0x45, 0x74, 0x68, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x50, 0x66, 0x63, 0x51, 0x75, + 0x65, 0x75, 0x65, 0x2e, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x48, + 0x00, 0x52, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, + 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x05, 0x76, + 0x61, 0x6c, 0x75, 0x65, 0x88, 0x01, 0x01, 0x12, 0x16, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, + 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0d, 0x52, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x12, + 0x45, 0x0a, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, + 0x46, 0x6c, 0x6f, 0x77, 0x45, 0x74, 0x68, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x50, 0x66, 0x63, 0x51, + 0x75, 0x65, 0x75, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, 0x69, 0x6e, 0x63, + 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x45, 0x0a, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, + 0x65, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x6f, 0x74, 0x67, 0x2e, + 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x45, 0x74, 0x68, 0x65, 0x72, + 0x6e, 0x65, 0x74, 0x50, 0x66, 0x63, 0x51, 0x75, 0x65, 0x75, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, + 0x65, 0x72, 0x52, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x4a, 0x0a, + 0x0b, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x5f, 0x74, 0x61, 0x67, 0x73, 0x18, 0x07, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, + 0x46, 0x6c, 0x6f, 0x77, 0x45, 0x74, 0x68, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x50, 0x66, 0x63, 0x51, + 0x75, 0x65, 0x75, 0x65, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x52, 0x0a, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x73, 0x1a, 0x56, 0x0a, 0x06, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x22, 0x4c, 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x0a, 0x0b, 0x75, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, @@ -100955,105 +115660,238 @@ var file_otg_proto_rawDesc = []byte{ 0x73, 0x10, 0x03, 0x12, 0x0d, 0x0a, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x10, 0x04, 0x12, 0x0d, 0x0a, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x10, 0x05, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x42, 0x08, 0x0a, 0x06, - 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x8e, 0x01, 0x0a, 0x20, 0x50, 0x61, 0x74, 0x74, 0x65, - 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x56, 0x78, 0x6c, 0x61, 0x6e, 0x52, 0x65, 0x73, 0x65, 0x72, - 0x76, 0x65, 0x64, 0x30, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x12, 0x19, 0x0a, 0x05, 0x73, + 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x8c, 0x01, 0x0a, 0x1e, 0x50, 0x61, 0x74, 0x74, 0x65, + 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x56, 0x6c, 0x61, 0x6e, 0x50, 0x72, 0x69, 0x6f, 0x72, 0x69, + 0x74, 0x79, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x12, 0x19, 0x0a, 0x05, 0x73, 0x74, 0x61, + 0x72, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x00, 0x52, 0x05, 0x73, 0x74, 0x61, 0x72, + 0x74, 0x88, 0x01, 0x01, 0x12, 0x17, 0x0a, 0x04, 0x73, 0x74, 0x65, 0x70, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x0d, 0x48, 0x01, 0x52, 0x04, 0x73, 0x74, 0x65, 0x70, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, + 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x02, 0x52, 0x05, + 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x88, 0x01, 0x01, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x73, 0x74, 0x61, + 0x72, 0x74, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x73, 0x74, 0x65, 0x70, 0x42, 0x08, 0x0a, 0x06, 0x5f, + 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x94, 0x01, 0x0a, 0x20, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, + 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x56, 0x6c, 0x61, 0x6e, 0x50, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, + 0x79, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x12, 0x17, 0x0a, 0x04, 0x6e, 0x61, + 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, + 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x88, 0x01, 0x01, + 0x12, 0x1b, 0x0a, 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, + 0x48, 0x02, 0x52, 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x88, 0x01, 0x01, 0x42, 0x07, 0x0a, + 0x05, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6f, 0x66, 0x66, 0x73, 0x65, + 0x74, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x22, 0xce, 0x03, 0x0a, + 0x17, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x56, 0x6c, 0x61, 0x6e, + 0x50, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x12, 0x45, 0x0a, 0x06, 0x63, 0x68, 0x6f, 0x69, + 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x28, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, + 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x56, 0x6c, 0x61, 0x6e, 0x50, 0x72, + 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x2e, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x2e, 0x45, 0x6e, + 0x75, 0x6d, 0x48, 0x00, 0x52, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x88, 0x01, 0x01, 0x12, + 0x19, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, + 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x88, 0x01, 0x01, 0x12, 0x16, 0x0a, 0x06, 0x76, 0x61, + 0x6c, 0x75, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0d, 0x52, 0x06, 0x76, 0x61, 0x6c, 0x75, + 0x65, 0x73, 0x12, 0x41, 0x0a, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, + 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, + 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x56, 0x6c, 0x61, 0x6e, 0x50, 0x72, 0x69, 0x6f, 0x72, + 0x69, 0x74, 0x79, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, 0x69, 0x6e, 0x63, 0x72, + 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x41, 0x0a, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, + 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, + 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x56, 0x6c, 0x61, 0x6e, 0x50, 0x72, + 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, 0x64, + 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x46, 0x0a, 0x0b, 0x6d, 0x65, 0x74, 0x72, + 0x69, 0x63, 0x5f, 0x74, 0x61, 0x67, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x25, 0x2e, + 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x56, + 0x6c, 0x61, 0x6e, 0x50, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x4d, 0x65, 0x74, 0x72, 0x69, + 0x63, 0x54, 0x61, 0x67, 0x52, 0x0a, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x73, + 0x1a, 0x56, 0x0a, 0x06, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x22, 0x4c, 0x0a, 0x04, 0x45, 0x6e, + 0x75, 0x6d, 0x12, 0x0f, 0x0a, 0x0b, 0x75, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, + 0x64, 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x10, 0x02, 0x12, 0x0a, + 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x10, 0x03, 0x12, 0x0d, 0x0a, 0x09, 0x69, 0x6e, + 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x10, 0x04, 0x12, 0x0d, 0x0a, 0x09, 0x64, 0x65, 0x63, + 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x10, 0x05, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x63, 0x68, 0x6f, + 0x69, 0x63, 0x65, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x87, 0x01, + 0x0a, 0x19, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x56, 0x6c, 0x61, + 0x6e, 0x43, 0x66, 0x69, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x12, 0x19, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x00, 0x52, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x88, 0x01, 0x01, 0x12, 0x17, 0x0a, 0x04, 0x73, 0x74, 0x65, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x04, 0x73, 0x74, 0x65, 0x70, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x02, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x88, 0x01, 0x01, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x73, 0x74, 0x65, 0x70, 0x42, 0x08, 0x0a, - 0x06, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x96, 0x01, 0x0a, 0x22, 0x50, 0x61, 0x74, 0x74, - 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x56, 0x78, 0x6c, 0x61, 0x6e, 0x52, 0x65, 0x73, 0x65, - 0x72, 0x76, 0x65, 0x64, 0x30, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x12, 0x17, - 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x04, - 0x6e, 0x61, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, - 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, - 0x74, 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x0d, 0x48, 0x02, 0x52, 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x88, 0x01, - 0x01, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6f, - 0x66, 0x66, 0x73, 0x65, 0x74, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, - 0x22, 0xd8, 0x03, 0x0a, 0x19, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, - 0x56, 0x78, 0x6c, 0x61, 0x6e, 0x52, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x64, 0x30, 0x12, 0x47, - 0x0a, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2a, - 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, - 0x56, 0x78, 0x6c, 0x61, 0x6e, 0x52, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x64, 0x30, 0x2e, 0x43, + 0x06, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x8f, 0x01, 0x0a, 0x1b, 0x50, 0x61, 0x74, 0x74, + 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x56, 0x6c, 0x61, 0x6e, 0x43, 0x66, 0x69, 0x4d, 0x65, + 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x12, 0x17, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x88, 0x01, 0x01, + 0x12, 0x1b, 0x0a, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, + 0x48, 0x01, 0x52, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, + 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x02, 0x52, + 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x88, 0x01, 0x01, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x6e, + 0x61, 0x6d, 0x65, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x42, 0x09, + 0x0a, 0x07, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x22, 0xb5, 0x03, 0x0a, 0x12, 0x50, 0x61, + 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x56, 0x6c, 0x61, 0x6e, 0x43, 0x66, 0x69, + 0x12, 0x40, 0x0a, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, + 0x32, 0x23, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, + 0x6f, 0x77, 0x56, 0x6c, 0x61, 0x6e, 0x43, 0x66, 0x69, 0x2e, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, + 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x48, 0x00, 0x52, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x88, + 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x0d, 0x48, 0x01, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x88, 0x01, 0x01, 0x12, 0x16, 0x0a, + 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0d, 0x52, 0x06, 0x76, + 0x61, 0x6c, 0x75, 0x65, 0x73, 0x12, 0x3c, 0x0a, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, + 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, + 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x56, 0x6c, 0x61, 0x6e, 0x43, 0x66, + 0x69, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, + 0x65, 0x6e, 0x74, 0x12, 0x3c, 0x0a, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, + 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, + 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x56, 0x6c, 0x61, 0x6e, 0x43, 0x66, 0x69, 0x43, + 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, + 0x74, 0x12, 0x41, 0x0a, 0x0b, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x5f, 0x74, 0x61, 0x67, 0x73, + 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, + 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x56, 0x6c, 0x61, 0x6e, 0x43, 0x66, 0x69, 0x4d, + 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x52, 0x0a, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, + 0x54, 0x61, 0x67, 0x73, 0x1a, 0x56, 0x0a, 0x06, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x22, 0x4c, + 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x0a, 0x0b, 0x75, 0x6e, 0x73, 0x70, 0x65, 0x63, + 0x69, 0x66, 0x69, 0x65, 0x64, 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, + 0x10, 0x02, 0x12, 0x0a, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x10, 0x03, 0x12, 0x0d, + 0x0a, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x10, 0x04, 0x12, 0x0d, 0x0a, + 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x10, 0x05, 0x42, 0x09, 0x0a, 0x07, + 0x5f, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x76, 0x61, 0x6c, 0x75, + 0x65, 0x22, 0x86, 0x01, 0x0a, 0x18, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, + 0x77, 0x56, 0x6c, 0x61, 0x6e, 0x49, 0x64, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x12, 0x19, + 0x0a, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x00, 0x52, + 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x88, 0x01, 0x01, 0x12, 0x17, 0x0a, 0x04, 0x73, 0x74, 0x65, + 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x04, 0x73, 0x74, 0x65, 0x70, 0x88, + 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x0d, 0x48, 0x02, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x88, 0x01, 0x01, 0x42, 0x08, 0x0a, + 0x06, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x73, 0x74, 0x65, 0x70, + 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x8e, 0x01, 0x0a, 0x1a, 0x50, + 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x56, 0x6c, 0x61, 0x6e, 0x49, 0x64, + 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x12, 0x17, 0x0a, 0x04, 0x6e, 0x61, 0x6d, + 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x88, + 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x0d, 0x48, 0x01, 0x52, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x88, 0x01, 0x01, 0x12, + 0x1b, 0x0a, 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x48, + 0x02, 0x52, 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x88, 0x01, 0x01, 0x42, 0x07, 0x0a, 0x05, + 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, + 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x22, 0xb0, 0x03, 0x0a, 0x11, + 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x56, 0x6c, 0x61, 0x6e, 0x49, + 0x64, 0x12, 0x3f, 0x0a, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x0e, 0x32, 0x22, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, + 0x6c, 0x6f, 0x77, 0x56, 0x6c, 0x61, 0x6e, 0x49, 0x64, 0x2e, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, + 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x48, 0x00, 0x52, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x88, + 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x0d, 0x48, 0x01, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x88, 0x01, 0x01, 0x12, 0x16, 0x0a, + 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0d, 0x52, 0x06, 0x76, + 0x61, 0x6c, 0x75, 0x65, 0x73, 0x12, 0x3b, 0x0a, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, + 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, + 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x56, 0x6c, 0x61, 0x6e, 0x49, 0x64, + 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, + 0x6e, 0x74, 0x12, 0x3b, 0x0a, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, + 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, + 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x56, 0x6c, 0x61, 0x6e, 0x49, 0x64, 0x43, 0x6f, 0x75, + 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, + 0x40, 0x0a, 0x0b, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x5f, 0x74, 0x61, 0x67, 0x73, 0x18, 0x07, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, + 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x56, 0x6c, 0x61, 0x6e, 0x49, 0x64, 0x4d, 0x65, 0x74, 0x72, + 0x69, 0x63, 0x54, 0x61, 0x67, 0x52, 0x0a, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, + 0x73, 0x1a, 0x56, 0x0a, 0x06, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x22, 0x4c, 0x0a, 0x04, 0x45, + 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x0a, 0x0b, 0x75, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, + 0x65, 0x64, 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x10, 0x02, 0x12, + 0x0a, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x10, 0x03, 0x12, 0x0d, 0x0a, 0x09, 0x69, + 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x10, 0x04, 0x12, 0x0d, 0x0a, 0x09, 0x64, 0x65, + 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x10, 0x05, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x63, 0x68, + 0x6f, 0x69, 0x63, 0x65, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x88, + 0x01, 0x0a, 0x1a, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x56, 0x6c, + 0x61, 0x6e, 0x54, 0x70, 0x69, 0x64, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x12, 0x19, 0x0a, + 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x00, 0x52, 0x05, + 0x73, 0x74, 0x61, 0x72, 0x74, 0x88, 0x01, 0x01, 0x12, 0x17, 0x0a, 0x04, 0x73, 0x74, 0x65, 0x70, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x04, 0x73, 0x74, 0x65, 0x70, 0x88, 0x01, + 0x01, 0x12, 0x19, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, + 0x48, 0x02, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x88, 0x01, 0x01, 0x42, 0x08, 0x0a, 0x06, + 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x73, 0x74, 0x65, 0x70, 0x42, + 0x08, 0x0a, 0x06, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x90, 0x01, 0x0a, 0x1c, 0x50, 0x61, + 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x56, 0x6c, 0x61, 0x6e, 0x54, 0x70, 0x69, + 0x64, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x12, 0x17, 0x0a, 0x04, 0x6e, 0x61, + 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, + 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x88, 0x01, 0x01, + 0x12, 0x1b, 0x0a, 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, + 0x48, 0x02, 0x52, 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x88, 0x01, 0x01, 0x42, 0x07, 0x0a, + 0x05, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6f, 0x66, 0x66, 0x73, 0x65, + 0x74, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x22, 0xba, 0x03, 0x0a, + 0x13, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x56, 0x6c, 0x61, 0x6e, + 0x54, 0x70, 0x69, 0x64, 0x12, 0x41, 0x0a, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x0e, 0x32, 0x24, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, + 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x56, 0x6c, 0x61, 0x6e, 0x54, 0x70, 0x69, 0x64, 0x2e, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x48, 0x00, 0x52, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x88, 0x01, 0x01, 0x12, 0x16, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, - 0x28, 0x0d, 0x52, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x12, 0x43, 0x0a, 0x09, 0x69, 0x6e, - 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, + 0x28, 0x0d, 0x52, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x12, 0x3d, 0x0a, 0x09, 0x69, 0x6e, + 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x56, - 0x78, 0x6c, 0x61, 0x6e, 0x52, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x64, 0x30, 0x43, 0x6f, 0x75, - 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, - 0x43, 0x0a, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, - 0x46, 0x6c, 0x6f, 0x77, 0x56, 0x78, 0x6c, 0x61, 0x6e, 0x52, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, - 0x64, 0x30, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, - 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x48, 0x0a, 0x0b, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x5f, 0x74, - 0x61, 0x67, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x6f, 0x74, 0x67, 0x2e, - 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x56, 0x78, 0x6c, 0x61, 0x6e, - 0x52, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x64, 0x30, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, - 0x61, 0x67, 0x52, 0x0a, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x73, 0x1a, 0x56, - 0x0a, 0x06, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x22, 0x4c, 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, - 0x12, 0x0f, 0x0a, 0x0b, 0x75, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x10, - 0x00, 0x12, 0x09, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x10, 0x02, 0x12, 0x0a, 0x0a, 0x06, - 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x10, 0x03, 0x12, 0x0d, 0x0a, 0x09, 0x69, 0x6e, 0x63, 0x72, - 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x10, 0x04, 0x12, 0x0d, 0x0a, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, - 0x6d, 0x65, 0x6e, 0x74, 0x10, 0x05, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x63, 0x68, 0x6f, 0x69, 0x63, - 0x65, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x88, 0x01, 0x0a, 0x1a, - 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x56, 0x78, 0x6c, 0x61, 0x6e, - 0x56, 0x6e, 0x69, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x12, 0x19, 0x0a, 0x05, 0x73, 0x74, + 0x6c, 0x61, 0x6e, 0x54, 0x70, 0x69, 0x64, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, + 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x3d, 0x0a, 0x09, 0x64, 0x65, 0x63, + 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x6f, + 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x56, 0x6c, + 0x61, 0x6e, 0x54, 0x70, 0x69, 0x64, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, 0x64, + 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x42, 0x0a, 0x0b, 0x6d, 0x65, 0x74, 0x72, + 0x69, 0x63, 0x5f, 0x74, 0x61, 0x67, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x21, 0x2e, + 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x56, + 0x6c, 0x61, 0x6e, 0x54, 0x70, 0x69, 0x64, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, + 0x52, 0x0a, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x73, 0x1a, 0x56, 0x0a, 0x06, + 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x22, 0x4c, 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0f, + 0x0a, 0x0b, 0x75, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x10, 0x00, 0x12, + 0x09, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x10, 0x02, 0x12, 0x0a, 0x0a, 0x06, 0x76, 0x61, + 0x6c, 0x75, 0x65, 0x73, 0x10, 0x03, 0x12, 0x0d, 0x0a, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, + 0x65, 0x6e, 0x74, 0x10, 0x04, 0x12, 0x0d, 0x0a, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, + 0x6e, 0x74, 0x10, 0x05, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x42, + 0x08, 0x0a, 0x06, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x8a, 0x01, 0x0a, 0x1c, 0x50, 0x61, + 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x56, 0x78, 0x6c, 0x61, 0x6e, 0x46, 0x6c, + 0x61, 0x67, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x12, 0x19, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x00, 0x52, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x88, 0x01, 0x01, 0x12, 0x17, 0x0a, 0x04, 0x73, 0x74, 0x65, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x04, 0x73, 0x74, 0x65, 0x70, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x02, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x88, 0x01, 0x01, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x73, 0x74, 0x65, 0x70, 0x42, 0x08, 0x0a, 0x06, - 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x90, 0x01, 0x0a, 0x1c, 0x50, 0x61, 0x74, 0x74, 0x65, - 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x56, 0x78, 0x6c, 0x61, 0x6e, 0x56, 0x6e, 0x69, 0x4d, 0x65, - 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x12, 0x17, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x88, 0x01, 0x01, - 0x12, 0x1b, 0x0a, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, - 0x48, 0x01, 0x52, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, - 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x02, 0x52, - 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x88, 0x01, 0x01, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x6e, - 0x61, 0x6d, 0x65, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x42, 0x09, - 0x0a, 0x07, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x22, 0xe6, 0x03, 0x0a, 0x13, 0x50, 0x61, - 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x56, 0x78, 0x6c, 0x61, 0x6e, 0x56, 0x6e, - 0x69, 0x12, 0x41, 0x0a, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x0e, 0x32, 0x24, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, - 0x6c, 0x6f, 0x77, 0x56, 0x78, 0x6c, 0x61, 0x6e, 0x56, 0x6e, 0x69, 0x2e, 0x43, 0x68, 0x6f, 0x69, - 0x63, 0x65, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x48, 0x00, 0x52, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, - 0x65, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x88, 0x01, 0x01, 0x12, - 0x16, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0d, 0x52, - 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x12, 0x17, 0x0a, 0x04, 0x61, 0x75, 0x74, 0x6f, 0x18, - 0x04, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x02, 0x52, 0x04, 0x61, 0x75, 0x74, 0x6f, 0x88, 0x01, 0x01, - 0x12, 0x3d, 0x0a, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x06, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, - 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x56, 0x78, 0x6c, 0x61, 0x6e, 0x56, 0x6e, 0x69, 0x43, 0x6f, 0x75, - 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, - 0x3d, 0x0a, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x07, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, - 0x46, 0x6c, 0x6f, 0x77, 0x56, 0x78, 0x6c, 0x61, 0x6e, 0x56, 0x6e, 0x69, 0x43, 0x6f, 0x75, 0x6e, - 0x74, 0x65, 0x72, 0x52, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x42, - 0x0a, 0x0b, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x5f, 0x74, 0x61, 0x67, 0x73, 0x18, 0x08, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, - 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x56, 0x78, 0x6c, 0x61, 0x6e, 0x56, 0x6e, 0x69, 0x4d, 0x65, 0x74, - 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x52, 0x0a, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, - 0x67, 0x73, 0x1a, 0x60, 0x0a, 0x06, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x22, 0x56, 0x0a, 0x04, - 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x0a, 0x0b, 0x75, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, - 0x69, 0x65, 0x64, 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x10, 0x02, - 0x12, 0x0a, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x10, 0x03, 0x12, 0x08, 0x0a, 0x04, - 0x61, 0x75, 0x74, 0x6f, 0x10, 0x01, 0x12, 0x0d, 0x0a, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, - 0x65, 0x6e, 0x74, 0x10, 0x04, 0x12, 0x0d, 0x0a, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, - 0x6e, 0x74, 0x10, 0x05, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x42, - 0x08, 0x0a, 0x06, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x61, 0x75, - 0x74, 0x6f, 0x22, 0x8e, 0x01, 0x0a, 0x20, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, - 0x6f, 0x77, 0x56, 0x78, 0x6c, 0x61, 0x6e, 0x52, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x64, 0x31, + 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x92, 0x01, 0x0a, 0x1e, 0x50, 0x61, 0x74, 0x74, 0x65, + 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x56, 0x78, 0x6c, 0x61, 0x6e, 0x46, 0x6c, 0x61, 0x67, 0x73, + 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x12, 0x17, 0x0a, 0x04, 0x6e, 0x61, 0x6d, + 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x88, + 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x0d, 0x48, 0x01, 0x52, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x88, 0x01, 0x01, 0x12, + 0x1b, 0x0a, 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x48, + 0x02, 0x52, 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x88, 0x01, 0x01, 0x42, 0x07, 0x0a, 0x05, + 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, + 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x22, 0xc4, 0x03, 0x0a, 0x15, + 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x56, 0x78, 0x6c, 0x61, 0x6e, + 0x46, 0x6c, 0x61, 0x67, 0x73, 0x12, 0x43, 0x0a, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x26, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, + 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x56, 0x78, 0x6c, 0x61, 0x6e, 0x46, 0x6c, 0x61, 0x67, + 0x73, 0x2e, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x48, 0x00, 0x52, + 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x76, 0x61, + 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x05, 0x76, 0x61, 0x6c, + 0x75, 0x65, 0x88, 0x01, 0x01, 0x12, 0x16, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, + 0x03, 0x20, 0x03, 0x28, 0x0d, 0x52, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x12, 0x3f, 0x0a, + 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x21, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, + 0x6f, 0x77, 0x56, 0x78, 0x6c, 0x61, 0x6e, 0x46, 0x6c, 0x61, 0x67, 0x73, 0x43, 0x6f, 0x75, 0x6e, + 0x74, 0x65, 0x72, 0x52, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x3f, + 0x0a, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x21, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, + 0x6c, 0x6f, 0x77, 0x56, 0x78, 0x6c, 0x61, 0x6e, 0x46, 0x6c, 0x61, 0x67, 0x73, 0x43, 0x6f, 0x75, + 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, + 0x44, 0x0a, 0x0b, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x5f, 0x74, 0x61, 0x67, 0x73, 0x18, 0x07, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, + 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x56, 0x78, 0x6c, 0x61, 0x6e, 0x46, 0x6c, 0x61, 0x67, 0x73, + 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x52, 0x0a, 0x6d, 0x65, 0x74, 0x72, 0x69, + 0x63, 0x54, 0x61, 0x67, 0x73, 0x1a, 0x56, 0x0a, 0x06, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x22, + 0x4c, 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x0a, 0x0b, 0x75, 0x6e, 0x73, 0x70, 0x65, + 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, + 0x65, 0x10, 0x02, 0x12, 0x0a, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x10, 0x03, 0x12, + 0x0d, 0x0a, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x10, 0x04, 0x12, 0x0d, + 0x0a, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x10, 0x05, 0x42, 0x09, 0x0a, + 0x07, 0x5f, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x76, 0x61, 0x6c, + 0x75, 0x65, 0x22, 0x8e, 0x01, 0x0a, 0x20, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, + 0x6f, 0x77, 0x56, 0x78, 0x6c, 0x61, 0x6e, 0x52, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x64, 0x30, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x12, 0x19, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x00, 0x52, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x88, 0x01, 0x01, 0x12, 0x17, 0x0a, 0x04, 0x73, 0x74, 0x65, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, @@ -101063,7 +115901,7 @@ var file_otg_proto_rawDesc = []byte{ 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x73, 0x74, 0x65, 0x70, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x96, 0x01, 0x0a, 0x22, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x56, 0x78, 0x6c, 0x61, 0x6e, 0x52, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x64, - 0x31, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x12, 0x17, 0x0a, 0x04, 0x6e, 0x61, + 0x30, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x12, 0x17, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x88, 0x01, 0x01, @@ -101072,10 +115910,10 @@ var file_otg_proto_rawDesc = []byte{ 0x05, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x22, 0xd8, 0x03, 0x0a, 0x19, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x56, 0x78, 0x6c, 0x61, - 0x6e, 0x52, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x64, 0x31, 0x12, 0x47, 0x0a, 0x06, 0x63, 0x68, + 0x6e, 0x52, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x64, 0x30, 0x12, 0x47, 0x0a, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2a, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x56, 0x78, 0x6c, 0x61, - 0x6e, 0x52, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x64, 0x31, 0x2e, 0x43, 0x68, 0x6f, 0x69, 0x63, + 0x6e, 0x52, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x64, 0x30, 0x2e, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x48, 0x00, 0x52, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x88, 0x01, 0x01, 0x12, 0x16, @@ -101083,63 +115921,16 @@ var file_otg_proto_rawDesc = []byte{ 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x12, 0x43, 0x0a, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x56, 0x78, 0x6c, 0x61, 0x6e, - 0x52, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x64, 0x31, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, + 0x52, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x64, 0x30, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x43, 0x0a, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, - 0x56, 0x78, 0x6c, 0x61, 0x6e, 0x52, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x64, 0x31, 0x43, 0x6f, + 0x56, 0x78, 0x6c, 0x61, 0x6e, 0x52, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x64, 0x30, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x48, 0x0a, 0x0b, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x5f, 0x74, 0x61, 0x67, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x56, 0x78, 0x6c, 0x61, 0x6e, 0x52, 0x65, 0x73, 0x65, - 0x72, 0x76, 0x65, 0x64, 0x31, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x52, 0x0a, - 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x73, 0x1a, 0x56, 0x0a, 0x06, 0x43, 0x68, - 0x6f, 0x69, 0x63, 0x65, 0x22, 0x4c, 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x0a, 0x0b, - 0x75, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x10, 0x00, 0x12, 0x09, 0x0a, - 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x10, 0x02, 0x12, 0x0a, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, - 0x65, 0x73, 0x10, 0x03, 0x12, 0x0d, 0x0a, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, - 0x74, 0x10, 0x04, 0x12, 0x0d, 0x0a, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, - 0x10, 0x05, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x42, 0x08, 0x0a, - 0x06, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x8b, 0x01, 0x0a, 0x1d, 0x50, 0x61, 0x74, 0x74, - 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x70, 0x76, 0x34, 0x56, 0x65, 0x72, 0x73, 0x69, - 0x6f, 0x6e, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x12, 0x19, 0x0a, 0x05, 0x73, 0x74, 0x61, - 0x72, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x00, 0x52, 0x05, 0x73, 0x74, 0x61, 0x72, - 0x74, 0x88, 0x01, 0x01, 0x12, 0x17, 0x0a, 0x04, 0x73, 0x74, 0x65, 0x70, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x0d, 0x48, 0x01, 0x52, 0x04, 0x73, 0x74, 0x65, 0x70, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, - 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x02, 0x52, 0x05, - 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x88, 0x01, 0x01, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x73, 0x74, 0x61, - 0x72, 0x74, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x73, 0x74, 0x65, 0x70, 0x42, 0x08, 0x0a, 0x06, 0x5f, - 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x93, 0x01, 0x0a, 0x1f, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, - 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x70, 0x76, 0x34, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, - 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x12, 0x17, 0x0a, 0x04, 0x6e, 0x61, 0x6d, - 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x88, - 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x0d, 0x48, 0x01, 0x52, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x88, 0x01, 0x01, 0x12, - 0x1b, 0x0a, 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x48, - 0x02, 0x52, 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x88, 0x01, 0x01, 0x42, 0x07, 0x0a, 0x05, - 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, - 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x22, 0xc9, 0x03, 0x0a, 0x16, - 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x70, 0x76, 0x34, 0x56, - 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x44, 0x0a, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x27, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, - 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x70, 0x76, 0x34, 0x56, 0x65, 0x72, 0x73, - 0x69, 0x6f, 0x6e, 0x2e, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x48, - 0x00, 0x52, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, - 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x05, 0x76, - 0x61, 0x6c, 0x75, 0x65, 0x88, 0x01, 0x01, 0x12, 0x16, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, - 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0d, 0x52, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x12, - 0x40, 0x0a, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, - 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x70, 0x76, 0x34, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x43, - 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, - 0x74, 0x12, 0x40, 0x0a, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x06, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, - 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x70, 0x76, 0x34, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, - 0x6e, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, - 0x65, 0x6e, 0x74, 0x12, 0x45, 0x0a, 0x0b, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x5f, 0x74, 0x61, - 0x67, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, - 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x70, 0x76, 0x34, 0x56, 0x65, - 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x52, 0x0a, + 0x72, 0x76, 0x65, 0x64, 0x30, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x52, 0x0a, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x73, 0x1a, 0x56, 0x0a, 0x06, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x22, 0x4c, 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x0a, 0x0b, 0x75, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x10, 0x00, 0x12, 0x09, 0x0a, @@ -101147,18 +115938,17 @@ var file_otg_proto_rawDesc = []byte{ 0x65, 0x73, 0x10, 0x03, 0x12, 0x0d, 0x0a, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x10, 0x04, 0x12, 0x0d, 0x0a, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x10, 0x05, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x42, 0x08, 0x0a, - 0x06, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x90, 0x01, 0x0a, 0x22, 0x50, 0x61, 0x74, 0x74, - 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x70, 0x76, 0x34, 0x48, 0x65, 0x61, 0x64, 0x65, - 0x72, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x12, 0x19, - 0x0a, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x00, 0x52, - 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x88, 0x01, 0x01, 0x12, 0x17, 0x0a, 0x04, 0x73, 0x74, 0x65, - 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x04, 0x73, 0x74, 0x65, 0x70, 0x88, - 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x0d, 0x48, 0x02, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x88, 0x01, 0x01, 0x42, 0x08, 0x0a, - 0x06, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x73, 0x74, 0x65, 0x70, - 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x98, 0x01, 0x0a, 0x24, 0x50, - 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x70, 0x76, 0x34, 0x48, 0x65, - 0x61, 0x64, 0x65, 0x72, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, + 0x06, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x88, 0x01, 0x0a, 0x1a, 0x50, 0x61, 0x74, 0x74, + 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x56, 0x78, 0x6c, 0x61, 0x6e, 0x56, 0x6e, 0x69, 0x43, + 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x12, 0x19, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x00, 0x52, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x88, 0x01, + 0x01, 0x12, 0x17, 0x0a, 0x04, 0x73, 0x74, 0x65, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, + 0x01, 0x52, 0x04, 0x73, 0x74, 0x65, 0x70, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x63, 0x6f, + 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x02, 0x52, 0x05, 0x63, 0x6f, 0x75, + 0x6e, 0x74, 0x88, 0x01, 0x01, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x42, + 0x07, 0x0a, 0x05, 0x5f, 0x73, 0x74, 0x65, 0x70, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x63, 0x6f, 0x75, + 0x6e, 0x74, 0x22, 0x90, 0x01, 0x0a, 0x1c, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, + 0x6f, 0x77, 0x56, 0x78, 0x6c, 0x61, 0x6e, 0x56, 0x6e, 0x69, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x12, 0x17, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x06, @@ -101166,82 +115956,28 @@ var file_otg_proto_rawDesc = []byte{ 0x67, 0x74, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x02, 0x52, 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x88, 0x01, 0x01, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6c, - 0x65, 0x6e, 0x67, 0x74, 0x68, 0x22, 0x8e, 0x04, 0x0a, 0x1b, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, - 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x70, 0x76, 0x34, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x4c, - 0x65, 0x6e, 0x67, 0x74, 0x68, 0x12, 0x49, 0x0a, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2c, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, - 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x70, 0x76, 0x34, 0x48, 0x65, 0x61, 0x64, 0x65, - 0x72, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x2e, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x2e, 0x45, + 0x65, 0x6e, 0x67, 0x74, 0x68, 0x22, 0xe6, 0x03, 0x0a, 0x13, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, + 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x56, 0x78, 0x6c, 0x61, 0x6e, 0x56, 0x6e, 0x69, 0x12, 0x41, 0x0a, + 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x24, 0x2e, + 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x56, + 0x78, 0x6c, 0x61, 0x6e, 0x56, 0x6e, 0x69, 0x2e, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x48, 0x00, 0x52, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x88, 0x01, 0x01, 0x12, 0x16, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0d, 0x52, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x12, 0x17, 0x0a, 0x04, 0x61, 0x75, 0x74, 0x6f, 0x18, 0x04, 0x20, 0x01, 0x28, - 0x0d, 0x48, 0x02, 0x52, 0x04, 0x61, 0x75, 0x74, 0x6f, 0x88, 0x01, 0x01, 0x12, 0x45, 0x0a, 0x09, + 0x0d, 0x48, 0x02, 0x52, 0x04, 0x61, 0x75, 0x74, 0x6f, 0x88, 0x01, 0x01, 0x12, 0x3d, 0x0a, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x27, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, - 0x77, 0x49, 0x70, 0x76, 0x34, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x4c, 0x65, 0x6e, 0x67, 0x74, - 0x68, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, - 0x65, 0x6e, 0x74, 0x12, 0x45, 0x0a, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, - 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, - 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x70, 0x76, 0x34, 0x48, 0x65, 0x61, 0x64, - 0x65, 0x72, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, - 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x4a, 0x0a, 0x0b, 0x6d, 0x65, + 0x1f, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, + 0x77, 0x56, 0x78, 0x6c, 0x61, 0x6e, 0x56, 0x6e, 0x69, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, + 0x52, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x3d, 0x0a, 0x09, 0x64, + 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, + 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, + 0x56, 0x78, 0x6c, 0x61, 0x6e, 0x56, 0x6e, 0x69, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, + 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x42, 0x0a, 0x0b, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x5f, 0x74, 0x61, 0x67, 0x73, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, - 0x29, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, - 0x77, 0x49, 0x70, 0x76, 0x34, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x4c, 0x65, 0x6e, 0x67, 0x74, - 0x68, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x52, 0x0a, 0x6d, 0x65, 0x74, 0x72, - 0x69, 0x63, 0x54, 0x61, 0x67, 0x73, 0x1a, 0x60, 0x0a, 0x06, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, - 0x22, 0x56, 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x0a, 0x0b, 0x75, 0x6e, 0x73, 0x70, - 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, 0x76, 0x61, 0x6c, - 0x75, 0x65, 0x10, 0x02, 0x12, 0x0a, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x10, 0x03, - 0x12, 0x08, 0x0a, 0x04, 0x61, 0x75, 0x74, 0x6f, 0x10, 0x01, 0x12, 0x0d, 0x0a, 0x09, 0x69, 0x6e, - 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x10, 0x04, 0x12, 0x0d, 0x0a, 0x09, 0x64, 0x65, 0x63, - 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x10, 0x05, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x63, 0x68, 0x6f, - 0x69, 0x63, 0x65, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x07, 0x0a, - 0x05, 0x5f, 0x61, 0x75, 0x74, 0x6f, 0x22, 0x8f, 0x01, 0x0a, 0x21, 0x50, 0x61, 0x74, 0x74, 0x65, - 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x70, 0x76, 0x34, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x4c, - 0x65, 0x6e, 0x67, 0x74, 0x68, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x12, 0x19, 0x0a, 0x05, - 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x00, 0x52, 0x05, 0x73, - 0x74, 0x61, 0x72, 0x74, 0x88, 0x01, 0x01, 0x12, 0x17, 0x0a, 0x04, 0x73, 0x74, 0x65, 0x70, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x04, 0x73, 0x74, 0x65, 0x70, 0x88, 0x01, 0x01, - 0x12, 0x19, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x48, - 0x02, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x88, 0x01, 0x01, 0x42, 0x08, 0x0a, 0x06, 0x5f, - 0x73, 0x74, 0x61, 0x72, 0x74, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x73, 0x74, 0x65, 0x70, 0x42, 0x08, - 0x0a, 0x06, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x97, 0x01, 0x0a, 0x23, 0x50, 0x61, 0x74, - 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x70, 0x76, 0x34, 0x54, 0x6f, 0x74, 0x61, - 0x6c, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, - 0x12, 0x17, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, - 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x6f, 0x66, 0x66, - 0x73, 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x06, 0x6f, 0x66, 0x66, - 0x73, 0x65, 0x74, 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x02, 0x52, 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, - 0x88, 0x01, 0x01, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x42, 0x09, 0x0a, 0x07, - 0x5f, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6c, 0x65, 0x6e, 0x67, - 0x74, 0x68, 0x22, 0x89, 0x04, 0x0a, 0x1a, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, - 0x6f, 0x77, 0x49, 0x70, 0x76, 0x34, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x4c, 0x65, 0x6e, 0x67, 0x74, - 0x68, 0x12, 0x48, 0x0a, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x0e, 0x32, 0x2b, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, - 0x6c, 0x6f, 0x77, 0x49, 0x70, 0x76, 0x34, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x4c, 0x65, 0x6e, 0x67, - 0x74, 0x68, 0x2e, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x48, 0x00, - 0x52, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x76, - 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x05, 0x76, 0x61, - 0x6c, 0x75, 0x65, 0x88, 0x01, 0x01, 0x12, 0x16, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, - 0x18, 0x03, 0x20, 0x03, 0x28, 0x0d, 0x52, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x12, 0x17, - 0x0a, 0x04, 0x61, 0x75, 0x74, 0x6f, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x02, 0x52, 0x04, - 0x61, 0x75, 0x74, 0x6f, 0x88, 0x01, 0x01, 0x12, 0x44, 0x0a, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, - 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x6f, 0x74, 0x67, - 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x70, 0x76, 0x34, - 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x43, 0x6f, 0x75, 0x6e, 0x74, - 0x65, 0x72, 0x52, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x44, 0x0a, - 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x26, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, - 0x6f, 0x77, 0x49, 0x70, 0x76, 0x34, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x4c, 0x65, 0x6e, 0x67, 0x74, - 0x68, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, - 0x65, 0x6e, 0x74, 0x12, 0x49, 0x0a, 0x0b, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x5f, 0x74, 0x61, - 0x67, 0x73, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, - 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x70, 0x76, 0x34, 0x54, 0x6f, - 0x74, 0x61, 0x6c, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, + 0x21, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, + 0x77, 0x56, 0x78, 0x6c, 0x61, 0x6e, 0x56, 0x6e, 0x69, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x52, 0x0a, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x73, 0x1a, 0x60, 0x0a, 0x06, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x22, 0x56, 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x0a, 0x0b, 0x75, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x10, @@ -101250,19 +115986,315 @@ var file_otg_proto_rawDesc = []byte{ 0x10, 0x01, 0x12, 0x0d, 0x0a, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x10, 0x04, 0x12, 0x0d, 0x0a, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x10, 0x05, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x42, 0x08, 0x0a, 0x06, 0x5f, - 0x76, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x61, 0x75, 0x74, 0x6f, 0x22, 0x92, - 0x01, 0x0a, 0x24, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x70, - 0x76, 0x34, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x12, 0x19, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x00, 0x52, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x88, - 0x01, 0x01, 0x12, 0x17, 0x0a, 0x04, 0x73, 0x74, 0x65, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, - 0x48, 0x01, 0x52, 0x04, 0x73, 0x74, 0x65, 0x70, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x63, - 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x02, 0x52, 0x05, 0x63, 0x6f, - 0x75, 0x6e, 0x74, 0x88, 0x01, 0x01, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, - 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x73, 0x74, 0x65, 0x70, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x63, 0x6f, - 0x75, 0x6e, 0x74, 0x22, 0x9a, 0x01, 0x0a, 0x26, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, + 0x76, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x61, 0x75, 0x74, 0x6f, 0x22, 0x8e, + 0x01, 0x0a, 0x20, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x56, 0x78, + 0x6c, 0x61, 0x6e, 0x52, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x64, 0x31, 0x43, 0x6f, 0x75, 0x6e, + 0x74, 0x65, 0x72, 0x12, 0x19, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x0d, 0x48, 0x00, 0x52, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x88, 0x01, 0x01, 0x12, 0x17, + 0x0a, 0x04, 0x73, 0x74, 0x65, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x04, + 0x73, 0x74, 0x65, 0x70, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x02, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x88, + 0x01, 0x01, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x42, 0x07, 0x0a, 0x05, + 0x5f, 0x73, 0x74, 0x65, 0x70, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x22, + 0x96, 0x01, 0x0a, 0x22, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x56, + 0x78, 0x6c, 0x61, 0x6e, 0x52, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x64, 0x31, 0x4d, 0x65, 0x74, + 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x12, 0x17, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, + 0x1b, 0x0a, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, + 0x01, 0x52, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, + 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x02, 0x52, 0x06, + 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x88, 0x01, 0x01, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x6e, 0x61, + 0x6d, 0x65, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x42, 0x09, 0x0a, + 0x07, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x22, 0xd8, 0x03, 0x0a, 0x19, 0x50, 0x61, 0x74, + 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x56, 0x78, 0x6c, 0x61, 0x6e, 0x52, 0x65, 0x73, + 0x65, 0x72, 0x76, 0x65, 0x64, 0x31, 0x12, 0x47, 0x0a, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2a, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, + 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x56, 0x78, 0x6c, 0x61, 0x6e, 0x52, 0x65, 0x73, + 0x65, 0x72, 0x76, 0x65, 0x64, 0x31, 0x2e, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x2e, 0x45, 0x6e, + 0x75, 0x6d, 0x48, 0x00, 0x52, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x88, 0x01, 0x01, 0x12, + 0x19, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, + 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x88, 0x01, 0x01, 0x12, 0x16, 0x0a, 0x06, 0x76, 0x61, + 0x6c, 0x75, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0d, 0x52, 0x06, 0x76, 0x61, 0x6c, 0x75, + 0x65, 0x73, 0x12, 0x43, 0x0a, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, + 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, + 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x56, 0x78, 0x6c, 0x61, 0x6e, 0x52, 0x65, 0x73, 0x65, + 0x72, 0x76, 0x65, 0x64, 0x31, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, 0x69, 0x6e, + 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x43, 0x0a, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, + 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x6f, 0x74, 0x67, + 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x56, 0x78, 0x6c, 0x61, + 0x6e, 0x52, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x64, 0x31, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, + 0x72, 0x52, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x48, 0x0a, 0x0b, + 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x5f, 0x74, 0x61, 0x67, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x27, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, + 0x6c, 0x6f, 0x77, 0x56, 0x78, 0x6c, 0x61, 0x6e, 0x52, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x64, + 0x31, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x52, 0x0a, 0x6d, 0x65, 0x74, 0x72, + 0x69, 0x63, 0x54, 0x61, 0x67, 0x73, 0x1a, 0x56, 0x0a, 0x06, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, + 0x22, 0x4c, 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x0a, 0x0b, 0x75, 0x6e, 0x73, 0x70, + 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, 0x76, 0x61, 0x6c, + 0x75, 0x65, 0x10, 0x02, 0x12, 0x0a, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x10, 0x03, + 0x12, 0x0d, 0x0a, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x10, 0x04, 0x12, + 0x0d, 0x0a, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x10, 0x05, 0x42, 0x09, + 0x0a, 0x07, 0x5f, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x76, 0x61, + 0x6c, 0x75, 0x65, 0x22, 0x8b, 0x01, 0x0a, 0x1d, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, + 0x6c, 0x6f, 0x77, 0x49, 0x70, 0x76, 0x34, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x43, 0x6f, + 0x75, 0x6e, 0x74, 0x65, 0x72, 0x12, 0x19, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x0d, 0x48, 0x00, 0x52, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x88, 0x01, 0x01, + 0x12, 0x17, 0x0a, 0x04, 0x73, 0x74, 0x65, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, + 0x52, 0x04, 0x73, 0x74, 0x65, 0x70, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x63, 0x6f, 0x75, + 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x02, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, + 0x74, 0x88, 0x01, 0x01, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x42, 0x07, + 0x0a, 0x05, 0x5f, 0x73, 0x74, 0x65, 0x70, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x63, 0x6f, 0x75, 0x6e, + 0x74, 0x22, 0x93, 0x01, 0x0a, 0x1f, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, + 0x77, 0x49, 0x70, 0x76, 0x34, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x74, 0x72, + 0x69, 0x63, 0x54, 0x61, 0x67, 0x12, 0x17, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, 0x1b, + 0x0a, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, + 0x52, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x6c, + 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x02, 0x52, 0x06, 0x6c, + 0x65, 0x6e, 0x67, 0x74, 0x68, 0x88, 0x01, 0x01, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x6e, 0x61, 0x6d, + 0x65, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x42, 0x09, 0x0a, 0x07, + 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x22, 0xc9, 0x03, 0x0a, 0x16, 0x50, 0x61, 0x74, 0x74, + 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x70, 0x76, 0x34, 0x56, 0x65, 0x72, 0x73, 0x69, + 0x6f, 0x6e, 0x12, 0x44, 0x0a, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x0e, 0x32, 0x27, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, + 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x70, 0x76, 0x34, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x2e, + 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x48, 0x00, 0x52, 0x06, 0x63, + 0x68, 0x6f, 0x69, 0x63, 0x65, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, + 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, + 0x88, 0x01, 0x01, 0x12, 0x16, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x03, 0x20, + 0x03, 0x28, 0x0d, 0x52, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x12, 0x40, 0x0a, 0x09, 0x69, + 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, + 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, + 0x49, 0x70, 0x76, 0x34, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x75, 0x6e, 0x74, + 0x65, 0x72, 0x52, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x40, 0x0a, + 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x22, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, + 0x6f, 0x77, 0x49, 0x70, 0x76, 0x34, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x75, + 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, + 0x45, 0x0a, 0x0b, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x5f, 0x74, 0x61, 0x67, 0x73, 0x18, 0x07, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, + 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x70, 0x76, 0x34, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, + 0x6e, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x52, 0x0a, 0x6d, 0x65, 0x74, 0x72, + 0x69, 0x63, 0x54, 0x61, 0x67, 0x73, 0x1a, 0x56, 0x0a, 0x06, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, + 0x22, 0x4c, 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x0a, 0x0b, 0x75, 0x6e, 0x73, 0x70, + 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, 0x76, 0x61, 0x6c, + 0x75, 0x65, 0x10, 0x02, 0x12, 0x0a, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x10, 0x03, + 0x12, 0x0d, 0x0a, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x10, 0x04, 0x12, + 0x0d, 0x0a, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x10, 0x05, 0x42, 0x09, + 0x0a, 0x07, 0x5f, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x76, 0x61, + 0x6c, 0x75, 0x65, 0x22, 0x90, 0x01, 0x0a, 0x22, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, + 0x6c, 0x6f, 0x77, 0x49, 0x70, 0x76, 0x34, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x4c, 0x65, 0x6e, + 0x67, 0x74, 0x68, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x12, 0x19, 0x0a, 0x05, 0x73, 0x74, + 0x61, 0x72, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x00, 0x52, 0x05, 0x73, 0x74, 0x61, + 0x72, 0x74, 0x88, 0x01, 0x01, 0x12, 0x17, 0x0a, 0x04, 0x73, 0x74, 0x65, 0x70, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x04, 0x73, 0x74, 0x65, 0x70, 0x88, 0x01, 0x01, 0x12, 0x19, + 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x02, 0x52, + 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x88, 0x01, 0x01, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x73, 0x74, + 0x61, 0x72, 0x74, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x73, 0x74, 0x65, 0x70, 0x42, 0x08, 0x0a, 0x06, + 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x98, 0x01, 0x0a, 0x24, 0x50, 0x61, 0x74, 0x74, 0x65, + 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x70, 0x76, 0x34, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, + 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x12, + 0x17, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, + 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x6f, 0x66, 0x66, 0x73, + 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x06, 0x6f, 0x66, 0x66, 0x73, + 0x65, 0x74, 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x02, 0x52, 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x88, + 0x01, 0x01, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x42, 0x09, 0x0a, 0x07, 0x5f, + 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, + 0x68, 0x22, 0x8e, 0x04, 0x0a, 0x1b, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, + 0x77, 0x49, 0x70, 0x76, 0x34, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x4c, 0x65, 0x6e, 0x67, 0x74, + 0x68, 0x12, 0x49, 0x0a, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x0e, 0x32, 0x2c, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, + 0x6c, 0x6f, 0x77, 0x49, 0x70, 0x76, 0x34, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x4c, 0x65, 0x6e, + 0x67, 0x74, 0x68, 0x2e, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x48, + 0x00, 0x52, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, + 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x05, 0x76, + 0x61, 0x6c, 0x75, 0x65, 0x88, 0x01, 0x01, 0x12, 0x16, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, + 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0d, 0x52, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x12, + 0x17, 0x0a, 0x04, 0x61, 0x75, 0x74, 0x6f, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x02, 0x52, + 0x04, 0x61, 0x75, 0x74, 0x6f, 0x88, 0x01, 0x01, 0x12, 0x45, 0x0a, 0x09, 0x69, 0x6e, 0x63, 0x72, + 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x6f, 0x74, + 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x70, 0x76, + 0x34, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x43, 0x6f, 0x75, + 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, + 0x45, 0x0a, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x07, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, + 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x70, 0x76, 0x34, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x4c, 0x65, + 0x6e, 0x67, 0x74, 0x68, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, 0x64, 0x65, 0x63, + 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x4a, 0x0a, 0x0b, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, + 0x5f, 0x74, 0x61, 0x67, 0x73, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x6f, 0x74, + 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x70, 0x76, + 0x34, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x4d, 0x65, 0x74, + 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x52, 0x0a, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, + 0x67, 0x73, 0x1a, 0x60, 0x0a, 0x06, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x22, 0x56, 0x0a, 0x04, + 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x0a, 0x0b, 0x75, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, + 0x69, 0x65, 0x64, 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x10, 0x02, + 0x12, 0x0a, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x10, 0x03, 0x12, 0x08, 0x0a, 0x04, + 0x61, 0x75, 0x74, 0x6f, 0x10, 0x01, 0x12, 0x0d, 0x0a, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, + 0x65, 0x6e, 0x74, 0x10, 0x04, 0x12, 0x0d, 0x0a, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, + 0x6e, 0x74, 0x10, 0x05, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x42, + 0x08, 0x0a, 0x06, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x61, 0x75, + 0x74, 0x6f, 0x22, 0x8f, 0x01, 0x0a, 0x21, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, + 0x6f, 0x77, 0x49, 0x70, 0x76, 0x34, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x4c, 0x65, 0x6e, 0x67, 0x74, + 0x68, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x12, 0x19, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x72, + 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x00, 0x52, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, + 0x88, 0x01, 0x01, 0x12, 0x17, 0x0a, 0x04, 0x73, 0x74, 0x65, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x0d, 0x48, 0x01, 0x52, 0x04, 0x73, 0x74, 0x65, 0x70, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, + 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x02, 0x52, 0x05, 0x63, + 0x6f, 0x75, 0x6e, 0x74, 0x88, 0x01, 0x01, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x73, 0x74, 0x61, 0x72, + 0x74, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x73, 0x74, 0x65, 0x70, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x63, + 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x97, 0x01, 0x0a, 0x23, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, + 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x70, 0x76, 0x34, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x4c, 0x65, 0x6e, + 0x67, 0x74, 0x68, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x12, 0x17, 0x0a, 0x04, + 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x04, 0x6e, 0x61, + 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x88, + 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x0d, 0x48, 0x02, 0x52, 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x88, 0x01, 0x01, 0x42, + 0x07, 0x0a, 0x05, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6f, 0x66, 0x66, + 0x73, 0x65, 0x74, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x22, 0x89, + 0x04, 0x0a, 0x1a, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x70, + 0x76, 0x34, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x12, 0x48, 0x0a, + 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2b, 0x2e, + 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, + 0x70, 0x76, 0x34, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x2e, 0x43, + 0x68, 0x6f, 0x69, 0x63, 0x65, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x48, 0x00, 0x52, 0x06, 0x63, 0x68, + 0x6f, 0x69, 0x63, 0x65, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x88, + 0x01, 0x01, 0x12, 0x16, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, + 0x28, 0x0d, 0x52, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x12, 0x17, 0x0a, 0x04, 0x61, 0x75, + 0x74, 0x6f, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x02, 0x52, 0x04, 0x61, 0x75, 0x74, 0x6f, + 0x88, 0x01, 0x01, 0x12, 0x44, 0x0a, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, + 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, + 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x70, 0x76, 0x34, 0x54, 0x6f, 0x74, 0x61, + 0x6c, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, + 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x44, 0x0a, 0x09, 0x64, 0x65, 0x63, + 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x6f, + 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x70, + 0x76, 0x34, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x43, 0x6f, 0x75, + 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, + 0x49, 0x0a, 0x0b, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x5f, 0x74, 0x61, 0x67, 0x73, 0x18, 0x08, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, + 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x70, 0x76, 0x34, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x4c, + 0x65, 0x6e, 0x67, 0x74, 0x68, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x52, 0x0a, + 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x73, 0x1a, 0x60, 0x0a, 0x06, 0x43, 0x68, + 0x6f, 0x69, 0x63, 0x65, 0x22, 0x56, 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x0a, 0x0b, + 0x75, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x10, 0x00, 0x12, 0x09, 0x0a, + 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x10, 0x02, 0x12, 0x0a, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, + 0x65, 0x73, 0x10, 0x03, 0x12, 0x08, 0x0a, 0x04, 0x61, 0x75, 0x74, 0x6f, 0x10, 0x01, 0x12, 0x0d, + 0x0a, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x10, 0x04, 0x12, 0x0d, 0x0a, + 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x10, 0x05, 0x42, 0x09, 0x0a, 0x07, + 0x5f, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x76, 0x61, 0x6c, 0x75, + 0x65, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x61, 0x75, 0x74, 0x6f, 0x22, 0x92, 0x01, 0x0a, 0x24, 0x50, + 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x70, 0x76, 0x34, 0x49, 0x64, + 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x75, 0x6e, + 0x74, 0x65, 0x72, 0x12, 0x19, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x0d, 0x48, 0x00, 0x52, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x88, 0x01, 0x01, 0x12, 0x17, + 0x0a, 0x04, 0x73, 0x74, 0x65, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x04, + 0x73, 0x74, 0x65, 0x70, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x02, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x88, + 0x01, 0x01, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x42, 0x07, 0x0a, 0x05, + 0x5f, 0x73, 0x74, 0x65, 0x70, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x22, + 0x9a, 0x01, 0x0a, 0x26, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, + 0x70, 0x76, 0x34, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x12, 0x17, 0x0a, 0x04, 0x6e, 0x61, + 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, + 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x88, 0x01, 0x01, + 0x12, 0x1b, 0x0a, 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, + 0x48, 0x02, 0x52, 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x88, 0x01, 0x01, 0x42, 0x07, 0x0a, + 0x05, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6f, 0x66, 0x66, 0x73, 0x65, + 0x74, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x22, 0xec, 0x03, 0x0a, + 0x1d, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x70, 0x76, 0x34, + 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x4b, + 0x0a, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2e, + 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, + 0x49, 0x70, 0x76, 0x34, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x2e, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x48, 0x00, + 0x52, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x76, + 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x05, 0x76, 0x61, + 0x6c, 0x75, 0x65, 0x88, 0x01, 0x01, 0x12, 0x16, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, + 0x18, 0x03, 0x20, 0x03, 0x28, 0x0d, 0x52, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x12, 0x47, + 0x0a, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x29, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x70, 0x76, 0x34, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x63, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x12, 0x17, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, 0x69, 0x6e, + 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x47, 0x0a, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, + 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x6f, 0x74, 0x67, + 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x70, 0x76, 0x34, + 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, + 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, + 0x12, 0x4c, 0x0a, 0x0b, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x5f, 0x74, 0x61, 0x67, 0x73, 0x18, + 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, + 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x70, 0x76, 0x34, 0x49, 0x64, 0x65, 0x6e, 0x74, + 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, + 0x61, 0x67, 0x52, 0x0a, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x73, 0x1a, 0x56, + 0x0a, 0x06, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x22, 0x4c, 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, + 0x12, 0x0f, 0x0a, 0x0b, 0x75, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x10, + 0x00, 0x12, 0x09, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x10, 0x02, 0x12, 0x0a, 0x0a, 0x06, + 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x10, 0x03, 0x12, 0x0d, 0x0a, 0x09, 0x69, 0x6e, 0x63, 0x72, + 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x10, 0x04, 0x12, 0x0d, 0x0a, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, + 0x6d, 0x65, 0x6e, 0x74, 0x10, 0x05, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x63, 0x68, 0x6f, 0x69, 0x63, + 0x65, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x8c, 0x01, 0x0a, 0x1e, + 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x70, 0x76, 0x34, 0x52, + 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x64, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x12, 0x19, + 0x0a, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x00, 0x52, + 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x88, 0x01, 0x01, 0x12, 0x17, 0x0a, 0x04, 0x73, 0x74, 0x65, + 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x04, 0x73, 0x74, 0x65, 0x70, 0x88, + 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x0d, 0x48, 0x02, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x88, 0x01, 0x01, 0x42, 0x08, 0x0a, + 0x06, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x73, 0x74, 0x65, 0x70, + 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x94, 0x01, 0x0a, 0x20, 0x50, + 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x70, 0x76, 0x34, 0x52, 0x65, + 0x73, 0x65, 0x72, 0x76, 0x65, 0x64, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x12, + 0x17, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, + 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x6f, 0x66, 0x66, 0x73, + 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x06, 0x6f, 0x66, 0x66, 0x73, + 0x65, 0x74, 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x02, 0x52, 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x88, + 0x01, 0x01, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x42, 0x09, 0x0a, 0x07, 0x5f, + 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, + 0x68, 0x22, 0xce, 0x03, 0x0a, 0x17, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, + 0x77, 0x49, 0x70, 0x76, 0x34, 0x52, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x64, 0x12, 0x45, 0x0a, + 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x28, 0x2e, + 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, + 0x70, 0x76, 0x34, 0x52, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x64, 0x2e, 0x43, 0x68, 0x6f, 0x69, + 0x63, 0x65, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x48, 0x00, 0x52, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, + 0x65, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x88, 0x01, 0x01, 0x12, + 0x16, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0d, 0x52, + 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x12, 0x41, 0x0a, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, + 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x6f, 0x74, 0x67, + 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x70, 0x76, 0x34, + 0x52, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x64, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, + 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x41, 0x0a, 0x09, 0x64, 0x65, + 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, + 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, + 0x70, 0x76, 0x34, 0x52, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x64, 0x43, 0x6f, 0x75, 0x6e, 0x74, + 0x65, 0x72, 0x52, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x46, 0x0a, + 0x0b, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x5f, 0x74, 0x61, 0x67, 0x73, 0x18, 0x07, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, + 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x70, 0x76, 0x34, 0x52, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x64, + 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x52, 0x0a, 0x6d, 0x65, 0x74, 0x72, 0x69, + 0x63, 0x54, 0x61, 0x67, 0x73, 0x1a, 0x56, 0x0a, 0x06, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x22, + 0x4c, 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x0a, 0x0b, 0x75, 0x6e, 0x73, 0x70, 0x65, + 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, + 0x65, 0x10, 0x02, 0x12, 0x0a, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x10, 0x03, 0x12, + 0x0d, 0x0a, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x10, 0x04, 0x12, 0x0d, + 0x0a, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x10, 0x05, 0x42, 0x09, 0x0a, + 0x07, 0x5f, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x76, 0x61, 0x6c, + 0x75, 0x65, 0x22, 0x90, 0x01, 0x0a, 0x22, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, + 0x6f, 0x77, 0x49, 0x70, 0x76, 0x34, 0x44, 0x6f, 0x6e, 0x74, 0x46, 0x72, 0x61, 0x67, 0x6d, 0x65, + 0x6e, 0x74, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x12, 0x19, 0x0a, 0x05, 0x73, 0x74, 0x61, + 0x72, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x00, 0x52, 0x05, 0x73, 0x74, 0x61, 0x72, + 0x74, 0x88, 0x01, 0x01, 0x12, 0x17, 0x0a, 0x04, 0x73, 0x74, 0x65, 0x70, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x0d, 0x48, 0x01, 0x52, 0x04, 0x73, 0x74, 0x65, 0x70, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, + 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x02, 0x52, 0x05, + 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x88, 0x01, 0x01, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x73, 0x74, 0x61, + 0x72, 0x74, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x73, 0x74, 0x65, 0x70, 0x42, 0x08, 0x0a, 0x06, 0x5f, + 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x98, 0x01, 0x0a, 0x24, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, + 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x70, 0x76, 0x34, 0x44, 0x6f, 0x6e, 0x74, 0x46, 0x72, 0x61, + 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x12, 0x17, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, @@ -101270,29 +116302,78 @@ var file_otg_proto_rawDesc = []byte{ 0x20, 0x01, 0x28, 0x0d, 0x48, 0x02, 0x52, 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x88, 0x01, 0x01, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, - 0x22, 0xec, 0x03, 0x0a, 0x1d, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, - 0x49, 0x70, 0x76, 0x34, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x12, 0x4b, 0x0a, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x0e, 0x32, 0x2e, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, - 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x70, 0x76, 0x34, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, - 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x2e, 0x45, 0x6e, - 0x75, 0x6d, 0x48, 0x00, 0x52, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x88, 0x01, 0x01, 0x12, - 0x19, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, - 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x88, 0x01, 0x01, 0x12, 0x16, 0x0a, 0x06, 0x76, 0x61, - 0x6c, 0x75, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0d, 0x52, 0x06, 0x76, 0x61, 0x6c, 0x75, - 0x65, 0x73, 0x12, 0x47, 0x0a, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, - 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, - 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x70, 0x76, 0x34, 0x49, 0x64, 0x65, 0x6e, 0x74, - 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, - 0x52, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x47, 0x0a, 0x09, 0x64, - 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, - 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, - 0x49, 0x70, 0x76, 0x34, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, - 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x4c, 0x0a, 0x0b, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x5f, 0x74, - 0x61, 0x67, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x6f, 0x74, 0x67, 0x2e, - 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x70, 0x76, 0x34, 0x49, - 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x74, + 0x22, 0xe2, 0x03, 0x0a, 0x1b, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, + 0x49, 0x70, 0x76, 0x34, 0x44, 0x6f, 0x6e, 0x74, 0x46, 0x72, 0x61, 0x67, 0x6d, 0x65, 0x6e, 0x74, + 0x12, 0x49, 0x0a, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, + 0x32, 0x2c, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, + 0x6f, 0x77, 0x49, 0x70, 0x76, 0x34, 0x44, 0x6f, 0x6e, 0x74, 0x46, 0x72, 0x61, 0x67, 0x6d, 0x65, + 0x6e, 0x74, 0x2e, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x48, 0x00, + 0x52, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x76, + 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x05, 0x76, 0x61, + 0x6c, 0x75, 0x65, 0x88, 0x01, 0x01, 0x12, 0x16, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, + 0x18, 0x03, 0x20, 0x03, 0x28, 0x0d, 0x52, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x12, 0x45, + 0x0a, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x27, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, + 0x6c, 0x6f, 0x77, 0x49, 0x70, 0x76, 0x34, 0x44, 0x6f, 0x6e, 0x74, 0x46, 0x72, 0x61, 0x67, 0x6d, + 0x65, 0x6e, 0x74, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, 0x69, 0x6e, 0x63, 0x72, + 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x45, 0x0a, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, + 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, + 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x70, 0x76, 0x34, 0x44, 0x6f, + 0x6e, 0x74, 0x46, 0x72, 0x61, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, + 0x72, 0x52, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x4a, 0x0a, 0x0b, + 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x5f, 0x74, 0x61, 0x67, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x29, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, + 0x6c, 0x6f, 0x77, 0x49, 0x70, 0x76, 0x34, 0x44, 0x6f, 0x6e, 0x74, 0x46, 0x72, 0x61, 0x67, 0x6d, + 0x65, 0x6e, 0x74, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x52, 0x0a, 0x6d, 0x65, + 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x73, 0x1a, 0x56, 0x0a, 0x06, 0x43, 0x68, 0x6f, 0x69, + 0x63, 0x65, 0x22, 0x4c, 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x0a, 0x0b, 0x75, 0x6e, + 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, 0x76, + 0x61, 0x6c, 0x75, 0x65, 0x10, 0x02, 0x12, 0x0a, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, + 0x10, 0x03, 0x12, 0x0d, 0x0a, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x10, + 0x04, 0x12, 0x0d, 0x0a, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x10, 0x05, + 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x42, 0x08, 0x0a, 0x06, 0x5f, + 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x91, 0x01, 0x0a, 0x23, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, + 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x70, 0x76, 0x34, 0x4d, 0x6f, 0x72, 0x65, 0x46, 0x72, 0x61, + 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x12, 0x19, 0x0a, + 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x00, 0x52, 0x05, + 0x73, 0x74, 0x61, 0x72, 0x74, 0x88, 0x01, 0x01, 0x12, 0x17, 0x0a, 0x04, 0x73, 0x74, 0x65, 0x70, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x04, 0x73, 0x74, 0x65, 0x70, 0x88, 0x01, + 0x01, 0x12, 0x19, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, + 0x48, 0x02, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x88, 0x01, 0x01, 0x42, 0x08, 0x0a, 0x06, + 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x73, 0x74, 0x65, 0x70, 0x42, + 0x08, 0x0a, 0x06, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x99, 0x01, 0x0a, 0x25, 0x50, 0x61, + 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x70, 0x76, 0x34, 0x4d, 0x6f, 0x72, + 0x65, 0x46, 0x72, 0x61, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, + 0x54, 0x61, 0x67, 0x12, 0x17, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x48, 0x00, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, + 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x06, + 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x6c, 0x65, 0x6e, + 0x67, 0x74, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x02, 0x52, 0x06, 0x6c, 0x65, 0x6e, + 0x67, 0x74, 0x68, 0x88, 0x01, 0x01, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x42, + 0x09, 0x0a, 0x07, 0x5f, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6c, + 0x65, 0x6e, 0x67, 0x74, 0x68, 0x22, 0xe7, 0x03, 0x0a, 0x1c, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, + 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x70, 0x76, 0x34, 0x4d, 0x6f, 0x72, 0x65, 0x46, 0x72, 0x61, + 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x4a, 0x0a, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2d, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, + 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x70, 0x76, 0x34, 0x4d, 0x6f, 0x72, 0x65, + 0x46, 0x72, 0x61, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, + 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x48, 0x00, 0x52, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x88, + 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x0d, 0x48, 0x01, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x88, 0x01, 0x01, 0x12, 0x16, 0x0a, + 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0d, 0x52, 0x06, 0x76, + 0x61, 0x6c, 0x75, 0x65, 0x73, 0x12, 0x46, 0x0a, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, + 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, + 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x70, 0x76, 0x34, 0x4d, 0x6f, + 0x72, 0x65, 0x46, 0x72, 0x61, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, + 0x65, 0x72, 0x52, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x46, 0x0a, + 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x28, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, + 0x6f, 0x77, 0x49, 0x70, 0x76, 0x34, 0x4d, 0x6f, 0x72, 0x65, 0x46, 0x72, 0x61, 0x67, 0x6d, 0x65, + 0x6e, 0x74, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, 0x64, 0x65, 0x63, 0x72, + 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x4b, 0x0a, 0x0b, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x5f, + 0x74, 0x61, 0x67, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x6f, 0x74, 0x67, + 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x70, 0x76, 0x34, + 0x4d, 0x6f, 0x72, 0x65, 0x46, 0x72, 0x61, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x52, 0x0a, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x73, 0x1a, 0x56, 0x0a, 0x06, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x22, 0x4c, 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x0a, 0x0b, 0x75, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, @@ -101301,17 +116382,234 @@ var file_otg_proto_rawDesc = []byte{ 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x10, 0x04, 0x12, 0x0d, 0x0a, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x10, 0x05, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, - 0x8c, 0x01, 0x0a, 0x1e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, - 0x70, 0x76, 0x34, 0x52, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x64, 0x43, 0x6f, 0x75, 0x6e, 0x74, - 0x65, 0x72, 0x12, 0x19, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x0d, 0x48, 0x00, 0x52, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x88, 0x01, 0x01, 0x12, 0x17, 0x0a, - 0x04, 0x73, 0x74, 0x65, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x04, 0x73, - 0x74, 0x65, 0x70, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x02, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x88, 0x01, - 0x01, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x42, 0x07, 0x0a, 0x05, 0x5f, - 0x73, 0x74, 0x65, 0x70, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x94, - 0x01, 0x0a, 0x20, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x70, - 0x76, 0x34, 0x52, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x64, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, + 0x92, 0x01, 0x0a, 0x24, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, + 0x70, 0x76, 0x34, 0x46, 0x72, 0x61, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x4f, 0x66, 0x66, 0x73, 0x65, + 0x74, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x12, 0x19, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x72, + 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x00, 0x52, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, + 0x88, 0x01, 0x01, 0x12, 0x17, 0x0a, 0x04, 0x73, 0x74, 0x65, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x0d, 0x48, 0x01, 0x52, 0x04, 0x73, 0x74, 0x65, 0x70, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, + 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x02, 0x52, 0x05, 0x63, + 0x6f, 0x75, 0x6e, 0x74, 0x88, 0x01, 0x01, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x73, 0x74, 0x61, 0x72, + 0x74, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x73, 0x74, 0x65, 0x70, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x63, + 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x9a, 0x01, 0x0a, 0x26, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, + 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x70, 0x76, 0x34, 0x46, 0x72, 0x61, 0x67, 0x6d, 0x65, 0x6e, 0x74, + 0x4f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x12, + 0x17, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, + 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x6f, 0x66, 0x66, 0x73, + 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x06, 0x6f, 0x66, 0x66, 0x73, + 0x65, 0x74, 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x02, 0x52, 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x88, + 0x01, 0x01, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x42, 0x09, 0x0a, 0x07, 0x5f, + 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, + 0x68, 0x22, 0xec, 0x03, 0x0a, 0x1d, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, + 0x77, 0x49, 0x70, 0x76, 0x34, 0x46, 0x72, 0x61, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x4f, 0x66, 0x66, + 0x73, 0x65, 0x74, 0x12, 0x4b, 0x0a, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x0e, 0x32, 0x2e, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, + 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x70, 0x76, 0x34, 0x46, 0x72, 0x61, 0x67, 0x6d, 0x65, 0x6e, + 0x74, 0x4f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x2e, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x2e, 0x45, + 0x6e, 0x75, 0x6d, 0x48, 0x00, 0x52, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x88, 0x01, 0x01, + 0x12, 0x19, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, + 0x01, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x88, 0x01, 0x01, 0x12, 0x16, 0x0a, 0x06, 0x76, + 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0d, 0x52, 0x06, 0x76, 0x61, 0x6c, + 0x75, 0x65, 0x73, 0x12, 0x47, 0x0a, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, + 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, + 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x70, 0x76, 0x34, 0x46, 0x72, 0x61, 0x67, + 0x6d, 0x65, 0x6e, 0x74, 0x4f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, + 0x72, 0x52, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x47, 0x0a, 0x09, + 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x29, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, + 0x77, 0x49, 0x70, 0x76, 0x34, 0x46, 0x72, 0x61, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x4f, 0x66, 0x66, + 0x73, 0x65, 0x74, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, 0x64, 0x65, 0x63, 0x72, + 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x4c, 0x0a, 0x0b, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x5f, + 0x74, 0x61, 0x67, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x6f, 0x74, 0x67, + 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x70, 0x76, 0x34, + 0x46, 0x72, 0x61, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x4f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x4d, 0x65, + 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x52, 0x0a, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, + 0x61, 0x67, 0x73, 0x1a, 0x56, 0x0a, 0x06, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x22, 0x4c, 0x0a, + 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x0a, 0x0b, 0x75, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, + 0x66, 0x69, 0x65, 0x64, 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x10, + 0x02, 0x12, 0x0a, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x10, 0x03, 0x12, 0x0d, 0x0a, + 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x10, 0x04, 0x12, 0x0d, 0x0a, 0x09, + 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x10, 0x05, 0x42, 0x09, 0x0a, 0x07, 0x5f, + 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, + 0x22, 0x8e, 0x01, 0x0a, 0x20, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, + 0x49, 0x70, 0x76, 0x34, 0x54, 0x69, 0x6d, 0x65, 0x54, 0x6f, 0x4c, 0x69, 0x76, 0x65, 0x43, 0x6f, + 0x75, 0x6e, 0x74, 0x65, 0x72, 0x12, 0x19, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x0d, 0x48, 0x00, 0x52, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x88, 0x01, 0x01, + 0x12, 0x17, 0x0a, 0x04, 0x73, 0x74, 0x65, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, + 0x52, 0x04, 0x73, 0x74, 0x65, 0x70, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x63, 0x6f, 0x75, + 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x02, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, + 0x74, 0x88, 0x01, 0x01, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x42, 0x07, + 0x0a, 0x05, 0x5f, 0x73, 0x74, 0x65, 0x70, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x63, 0x6f, 0x75, 0x6e, + 0x74, 0x22, 0x96, 0x01, 0x0a, 0x22, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, + 0x77, 0x49, 0x70, 0x76, 0x34, 0x54, 0x69, 0x6d, 0x65, 0x54, 0x6f, 0x4c, 0x69, 0x76, 0x65, 0x4d, + 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x12, 0x17, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x88, 0x01, + 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x0d, 0x48, 0x01, 0x52, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x88, 0x01, 0x01, 0x12, 0x1b, + 0x0a, 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x02, + 0x52, 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x88, 0x01, 0x01, 0x42, 0x07, 0x0a, 0x05, 0x5f, + 0x6e, 0x61, 0x6d, 0x65, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x42, + 0x09, 0x0a, 0x07, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x22, 0xd8, 0x03, 0x0a, 0x19, 0x50, + 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x70, 0x76, 0x34, 0x54, 0x69, + 0x6d, 0x65, 0x54, 0x6f, 0x4c, 0x69, 0x76, 0x65, 0x12, 0x47, 0x0a, 0x06, 0x63, 0x68, 0x6f, 0x69, + 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2a, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, + 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x70, 0x76, 0x34, 0x54, 0x69, + 0x6d, 0x65, 0x54, 0x6f, 0x4c, 0x69, 0x76, 0x65, 0x2e, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x2e, + 0x45, 0x6e, 0x75, 0x6d, 0x48, 0x00, 0x52, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x88, 0x01, + 0x01, 0x12, 0x19, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, + 0x48, 0x01, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x88, 0x01, 0x01, 0x12, 0x16, 0x0a, 0x06, + 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0d, 0x52, 0x06, 0x76, 0x61, + 0x6c, 0x75, 0x65, 0x73, 0x12, 0x43, 0x0a, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, + 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, + 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x70, 0x76, 0x34, 0x54, 0x69, 0x6d, + 0x65, 0x54, 0x6f, 0x4c, 0x69, 0x76, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, + 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x43, 0x0a, 0x09, 0x64, 0x65, 0x63, + 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x6f, + 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x70, + 0x76, 0x34, 0x54, 0x69, 0x6d, 0x65, 0x54, 0x6f, 0x4c, 0x69, 0x76, 0x65, 0x43, 0x6f, 0x75, 0x6e, + 0x74, 0x65, 0x72, 0x52, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x48, + 0x0a, 0x0b, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x5f, 0x74, 0x61, 0x67, 0x73, 0x18, 0x07, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, + 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x70, 0x76, 0x34, 0x54, 0x69, 0x6d, 0x65, 0x54, 0x6f, 0x4c, + 0x69, 0x76, 0x65, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x52, 0x0a, 0x6d, 0x65, + 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x73, 0x1a, 0x56, 0x0a, 0x06, 0x43, 0x68, 0x6f, 0x69, + 0x63, 0x65, 0x22, 0x4c, 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x0a, 0x0b, 0x75, 0x6e, + 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, 0x76, + 0x61, 0x6c, 0x75, 0x65, 0x10, 0x02, 0x12, 0x0a, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, + 0x10, 0x03, 0x12, 0x0d, 0x0a, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x10, + 0x04, 0x12, 0x0d, 0x0a, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x10, 0x05, + 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x42, 0x08, 0x0a, 0x06, 0x5f, + 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x8c, 0x01, 0x0a, 0x1e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, + 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x70, 0x76, 0x34, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, + 0x6c, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x12, 0x19, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x72, + 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x00, 0x52, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, + 0x88, 0x01, 0x01, 0x12, 0x17, 0x0a, 0x04, 0x73, 0x74, 0x65, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x0d, 0x48, 0x01, 0x52, 0x04, 0x73, 0x74, 0x65, 0x70, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, + 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x02, 0x52, 0x05, 0x63, + 0x6f, 0x75, 0x6e, 0x74, 0x88, 0x01, 0x01, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x73, 0x74, 0x61, 0x72, + 0x74, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x73, 0x74, 0x65, 0x70, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x63, + 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x94, 0x01, 0x0a, 0x20, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, + 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x70, 0x76, 0x34, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, + 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x12, 0x17, 0x0a, 0x04, 0x6e, 0x61, 0x6d, + 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x88, + 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x0d, 0x48, 0x01, 0x52, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x88, 0x01, 0x01, 0x12, + 0x1b, 0x0a, 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x48, + 0x02, 0x52, 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x88, 0x01, 0x01, 0x42, 0x07, 0x0a, 0x05, + 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, + 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x22, 0xfa, 0x03, 0x0a, 0x17, + 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x70, 0x76, 0x34, 0x50, + 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x12, 0x45, 0x0a, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, + 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x28, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, + 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x70, 0x76, 0x34, 0x50, 0x72, 0x6f, + 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x2e, 0x45, 0x6e, 0x75, + 0x6d, 0x48, 0x00, 0x52, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x88, 0x01, 0x01, 0x12, 0x19, + 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, + 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x88, 0x01, 0x01, 0x12, 0x16, 0x0a, 0x06, 0x76, 0x61, 0x6c, + 0x75, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0d, 0x52, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, + 0x73, 0x12, 0x17, 0x0a, 0x04, 0x61, 0x75, 0x74, 0x6f, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x48, + 0x02, 0x52, 0x04, 0x61, 0x75, 0x74, 0x6f, 0x88, 0x01, 0x01, 0x12, 0x41, 0x0a, 0x09, 0x69, 0x6e, + 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, + 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, + 0x70, 0x76, 0x34, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x43, 0x6f, 0x75, 0x6e, 0x74, + 0x65, 0x72, 0x52, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x41, 0x0a, + 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x23, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, + 0x6f, 0x77, 0x49, 0x70, 0x76, 0x34, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x43, 0x6f, + 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, + 0x12, 0x46, 0x0a, 0x0b, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x5f, 0x74, 0x61, 0x67, 0x73, 0x18, + 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, + 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x70, 0x76, 0x34, 0x50, 0x72, 0x6f, 0x74, 0x6f, + 0x63, 0x6f, 0x6c, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x52, 0x0a, 0x6d, 0x65, + 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x73, 0x1a, 0x60, 0x0a, 0x06, 0x43, 0x68, 0x6f, 0x69, + 0x63, 0x65, 0x22, 0x56, 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x0a, 0x0b, 0x75, 0x6e, + 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, 0x76, + 0x61, 0x6c, 0x75, 0x65, 0x10, 0x02, 0x12, 0x0a, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, + 0x10, 0x03, 0x12, 0x08, 0x0a, 0x04, 0x61, 0x75, 0x74, 0x6f, 0x10, 0x01, 0x12, 0x0d, 0x0a, 0x09, + 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x10, 0x04, 0x12, 0x0d, 0x0a, 0x09, 0x64, + 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x10, 0x05, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x63, + 0x68, 0x6f, 0x69, 0x63, 0x65, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x42, + 0x07, 0x0a, 0x05, 0x5f, 0x61, 0x75, 0x74, 0x6f, 0x22, 0xfa, 0x02, 0x0a, 0x1d, 0x50, 0x61, 0x74, + 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x70, 0x76, 0x34, 0x48, 0x65, 0x61, 0x64, + 0x65, 0x72, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x12, 0x4b, 0x0a, 0x06, 0x63, 0x68, + 0x6f, 0x69, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2e, 0x2e, 0x6f, 0x74, 0x67, + 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x70, 0x76, 0x34, + 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x2e, 0x43, + 0x68, 0x6f, 0x69, 0x63, 0x65, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x48, 0x00, 0x52, 0x06, 0x63, 0x68, + 0x6f, 0x69, 0x63, 0x65, 0x88, 0x01, 0x01, 0x12, 0x54, 0x0a, 0x09, 0x67, 0x65, 0x6e, 0x65, 0x72, + 0x61, 0x74, 0x65, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x31, 0x2e, 0x6f, 0x74, 0x67, + 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x70, 0x76, 0x34, + 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x2e, 0x47, + 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x48, 0x01, 0x52, + 0x09, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, + 0x06, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x02, 0x52, + 0x06, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x88, 0x01, 0x01, 0x1a, 0x3c, 0x0a, 0x06, 0x43, 0x68, + 0x6f, 0x69, 0x63, 0x65, 0x22, 0x32, 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x0a, 0x0b, + 0x75, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x10, 0x00, 0x12, 0x0d, 0x0a, + 0x09, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x10, 0x01, 0x12, 0x0a, 0x0a, 0x06, + 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x10, 0x02, 0x1a, 0x37, 0x0a, 0x09, 0x47, 0x65, 0x6e, 0x65, + 0x72, 0x61, 0x74, 0x65, 0x64, 0x22, 0x2a, 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x0a, + 0x0b, 0x75, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x10, 0x00, 0x12, 0x08, + 0x0a, 0x04, 0x67, 0x6f, 0x6f, 0x64, 0x10, 0x01, 0x12, 0x07, 0x0a, 0x03, 0x62, 0x61, 0x64, 0x10, + 0x02, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x42, 0x0c, 0x0a, 0x0a, + 0x5f, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x63, + 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x22, 0x87, 0x01, 0x0a, 0x19, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, + 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x70, 0x76, 0x34, 0x53, 0x72, 0x63, 0x43, 0x6f, 0x75, 0x6e, + 0x74, 0x65, 0x72, 0x12, 0x19, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x48, 0x00, 0x52, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x88, 0x01, 0x01, 0x12, 0x17, + 0x0a, 0x04, 0x73, 0x74, 0x65, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, 0x52, 0x04, + 0x73, 0x74, 0x65, 0x70, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x02, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x88, + 0x01, 0x01, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x42, 0x07, 0x0a, 0x05, + 0x5f, 0x73, 0x74, 0x65, 0x70, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x22, + 0x8f, 0x01, 0x0a, 0x1b, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, + 0x70, 0x76, 0x34, 0x53, 0x72, 0x63, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x12, + 0x17, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, + 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x6f, 0x66, 0x66, 0x73, + 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x06, 0x6f, 0x66, 0x66, 0x73, + 0x65, 0x74, 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x02, 0x52, 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x88, + 0x01, 0x01, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x42, 0x09, 0x0a, 0x07, 0x5f, + 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, + 0x68, 0x22, 0xb5, 0x03, 0x0a, 0x12, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, + 0x77, 0x49, 0x70, 0x76, 0x34, 0x53, 0x72, 0x63, 0x12, 0x40, 0x0a, 0x06, 0x63, 0x68, 0x6f, 0x69, + 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x23, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, + 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x70, 0x76, 0x34, 0x53, 0x72, + 0x63, 0x2e, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x48, 0x00, 0x52, + 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x76, 0x61, + 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, 0x52, 0x05, 0x76, 0x61, 0x6c, + 0x75, 0x65, 0x88, 0x01, 0x01, 0x12, 0x16, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, + 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x12, 0x3c, 0x0a, + 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x1e, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, + 0x6f, 0x77, 0x49, 0x70, 0x76, 0x34, 0x53, 0x72, 0x63, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, + 0x52, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x3c, 0x0a, 0x09, 0x64, + 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, + 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, + 0x49, 0x70, 0x76, 0x34, 0x53, 0x72, 0x63, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, + 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x41, 0x0a, 0x0b, 0x6d, 0x65, 0x74, + 0x72, 0x69, 0x63, 0x5f, 0x74, 0x61, 0x67, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x20, + 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, + 0x49, 0x70, 0x76, 0x34, 0x53, 0x72, 0x63, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, + 0x52, 0x0a, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x73, 0x1a, 0x56, 0x0a, 0x06, + 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x22, 0x4c, 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0f, + 0x0a, 0x0b, 0x75, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x10, 0x00, 0x12, + 0x09, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x10, 0x02, 0x12, 0x0a, 0x0a, 0x06, 0x76, 0x61, + 0x6c, 0x75, 0x65, 0x73, 0x10, 0x03, 0x12, 0x0d, 0x0a, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, + 0x65, 0x6e, 0x74, 0x10, 0x04, 0x12, 0x0d, 0x0a, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, + 0x6e, 0x74, 0x10, 0x05, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x42, + 0x08, 0x0a, 0x06, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x87, 0x01, 0x0a, 0x19, 0x50, 0x61, + 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x70, 0x76, 0x34, 0x44, 0x73, 0x74, + 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x12, 0x19, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x88, + 0x01, 0x01, 0x12, 0x17, 0x0a, 0x04, 0x73, 0x74, 0x65, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, + 0x48, 0x01, 0x52, 0x04, 0x73, 0x74, 0x65, 0x70, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x63, + 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x02, 0x52, 0x05, 0x63, 0x6f, + 0x75, 0x6e, 0x74, 0x88, 0x01, 0x01, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, + 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x73, 0x74, 0x65, 0x70, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x63, 0x6f, + 0x75, 0x6e, 0x74, 0x22, 0x8f, 0x01, 0x0a, 0x1b, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, + 0x6c, 0x6f, 0x77, 0x49, 0x70, 0x76, 0x34, 0x44, 0x73, 0x74, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x12, 0x17, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x06, @@ -101319,77 +116617,169 @@ var file_otg_proto_rawDesc = []byte{ 0x67, 0x74, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x02, 0x52, 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x88, 0x01, 0x01, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6c, - 0x65, 0x6e, 0x67, 0x74, 0x68, 0x22, 0xce, 0x03, 0x0a, 0x17, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, - 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x70, 0x76, 0x34, 0x52, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, - 0x64, 0x12, 0x45, 0x0a, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x0e, 0x32, 0x28, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, - 0x6c, 0x6f, 0x77, 0x49, 0x70, 0x76, 0x34, 0x52, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x64, 0x2e, - 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x48, 0x00, 0x52, 0x06, 0x63, - 0x68, 0x6f, 0x69, 0x63, 0x65, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, - 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, - 0x88, 0x01, 0x01, 0x12, 0x16, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x03, 0x20, - 0x03, 0x28, 0x0d, 0x52, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x12, 0x41, 0x0a, 0x09, 0x69, - 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, + 0x65, 0x6e, 0x67, 0x74, 0x68, 0x22, 0xb5, 0x03, 0x0a, 0x12, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, + 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x70, 0x76, 0x34, 0x44, 0x73, 0x74, 0x12, 0x40, 0x0a, 0x06, + 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x23, 0x2e, 0x6f, + 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x70, + 0x76, 0x34, 0x44, 0x73, 0x74, 0x2e, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x2e, 0x45, 0x6e, 0x75, + 0x6d, 0x48, 0x00, 0x52, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x88, 0x01, 0x01, 0x12, 0x19, + 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, 0x52, + 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x88, 0x01, 0x01, 0x12, 0x16, 0x0a, 0x06, 0x76, 0x61, 0x6c, + 0x75, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, + 0x73, 0x12, 0x3c, 0x0a, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x05, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, + 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x70, 0x76, 0x34, 0x44, 0x73, 0x74, 0x43, 0x6f, 0x75, + 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, + 0x3c, 0x0a, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, + 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x70, 0x76, 0x34, 0x44, 0x73, 0x74, 0x43, 0x6f, 0x75, 0x6e, 0x74, + 0x65, 0x72, 0x52, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x41, 0x0a, + 0x0b, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x5f, 0x74, 0x61, 0x67, 0x73, 0x18, 0x07, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, + 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x70, 0x76, 0x34, 0x44, 0x73, 0x74, 0x4d, 0x65, 0x74, 0x72, 0x69, + 0x63, 0x54, 0x61, 0x67, 0x52, 0x0a, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x73, + 0x1a, 0x56, 0x0a, 0x06, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x22, 0x4c, 0x0a, 0x04, 0x45, 0x6e, + 0x75, 0x6d, 0x12, 0x0f, 0x0a, 0x0b, 0x75, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, + 0x64, 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x10, 0x02, 0x12, 0x0a, + 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x10, 0x03, 0x12, 0x0d, 0x0a, 0x09, 0x69, 0x6e, + 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x10, 0x04, 0x12, 0x0d, 0x0a, 0x09, 0x64, 0x65, 0x63, + 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x10, 0x05, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x63, 0x68, 0x6f, + 0x69, 0x63, 0x65, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x8f, 0x01, + 0x0a, 0x21, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x70, 0x76, + 0x34, 0x50, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x52, 0x61, 0x77, 0x43, 0x6f, 0x75, 0x6e, + 0x74, 0x65, 0x72, 0x12, 0x19, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x0d, 0x48, 0x00, 0x52, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x88, 0x01, 0x01, 0x12, 0x17, + 0x0a, 0x04, 0x73, 0x74, 0x65, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x04, + 0x73, 0x74, 0x65, 0x70, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x02, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x88, + 0x01, 0x01, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x42, 0x07, 0x0a, 0x05, + 0x5f, 0x73, 0x74, 0x65, 0x70, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x22, + 0x97, 0x01, 0x0a, 0x23, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, + 0x70, 0x76, 0x34, 0x50, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x52, 0x61, 0x77, 0x4d, 0x65, + 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x12, 0x17, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x88, 0x01, 0x01, + 0x12, 0x1b, 0x0a, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, + 0x48, 0x01, 0x52, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, + 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x02, 0x52, + 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x88, 0x01, 0x01, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x6e, + 0x61, 0x6d, 0x65, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x42, 0x09, + 0x0a, 0x07, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x22, 0xdd, 0x03, 0x0a, 0x1a, 0x50, 0x61, + 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x70, 0x76, 0x34, 0x50, 0x72, 0x69, + 0x6f, 0x72, 0x69, 0x74, 0x79, 0x52, 0x61, 0x77, 0x12, 0x48, 0x0a, 0x06, 0x63, 0x68, 0x6f, 0x69, + 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2b, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, + 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x70, 0x76, 0x34, 0x50, 0x72, + 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x52, 0x61, 0x77, 0x2e, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, + 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x48, 0x00, 0x52, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x88, + 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x0d, 0x48, 0x01, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x88, 0x01, 0x01, 0x12, 0x16, 0x0a, + 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0d, 0x52, 0x06, 0x76, + 0x61, 0x6c, 0x75, 0x65, 0x73, 0x12, 0x44, 0x0a, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, + 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, + 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x70, 0x76, 0x34, 0x50, 0x72, + 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x52, 0x61, 0x77, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, + 0x52, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x44, 0x0a, 0x09, 0x64, + 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, - 0x49, 0x70, 0x76, 0x34, 0x52, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x64, 0x43, 0x6f, 0x75, 0x6e, - 0x74, 0x65, 0x72, 0x52, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x41, - 0x0a, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x23, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, - 0x6c, 0x6f, 0x77, 0x49, 0x70, 0x76, 0x34, 0x52, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x64, 0x43, + 0x49, 0x70, 0x76, 0x34, 0x50, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x52, 0x61, 0x77, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, - 0x74, 0x12, 0x46, 0x0a, 0x0b, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x5f, 0x74, 0x61, 0x67, 0x73, - 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, - 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x70, 0x76, 0x34, 0x52, 0x65, 0x73, 0x65, - 0x72, 0x76, 0x65, 0x64, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x52, 0x0a, 0x6d, - 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x73, 0x1a, 0x56, 0x0a, 0x06, 0x43, 0x68, 0x6f, - 0x69, 0x63, 0x65, 0x22, 0x4c, 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x0a, 0x0b, 0x75, - 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, - 0x76, 0x61, 0x6c, 0x75, 0x65, 0x10, 0x02, 0x12, 0x0a, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, - 0x73, 0x10, 0x03, 0x12, 0x0d, 0x0a, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, - 0x10, 0x04, 0x12, 0x0d, 0x0a, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x10, - 0x05, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x42, 0x08, 0x0a, 0x06, - 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x90, 0x01, 0x0a, 0x22, 0x50, 0x61, 0x74, 0x74, 0x65, - 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x70, 0x76, 0x34, 0x44, 0x6f, 0x6e, 0x74, 0x46, 0x72, - 0x61, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x12, 0x19, 0x0a, - 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x00, 0x52, 0x05, - 0x73, 0x74, 0x61, 0x72, 0x74, 0x88, 0x01, 0x01, 0x12, 0x17, 0x0a, 0x04, 0x73, 0x74, 0x65, 0x70, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x04, 0x73, 0x74, 0x65, 0x70, 0x88, 0x01, - 0x01, 0x12, 0x19, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, - 0x48, 0x02, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x88, 0x01, 0x01, 0x42, 0x08, 0x0a, 0x06, - 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x73, 0x74, 0x65, 0x70, 0x42, - 0x08, 0x0a, 0x06, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x98, 0x01, 0x0a, 0x24, 0x50, 0x61, - 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x70, 0x76, 0x34, 0x44, 0x6f, 0x6e, - 0x74, 0x46, 0x72, 0x61, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, - 0x61, 0x67, 0x12, 0x17, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x48, 0x00, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x6f, - 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x06, 0x6f, - 0x66, 0x66, 0x73, 0x65, 0x74, 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x6c, 0x65, 0x6e, 0x67, - 0x74, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x02, 0x52, 0x06, 0x6c, 0x65, 0x6e, 0x67, - 0x74, 0x68, 0x88, 0x01, 0x01, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x42, 0x09, - 0x0a, 0x07, 0x5f, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6c, 0x65, - 0x6e, 0x67, 0x74, 0x68, 0x22, 0xe2, 0x03, 0x0a, 0x1b, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, - 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x70, 0x76, 0x34, 0x44, 0x6f, 0x6e, 0x74, 0x46, 0x72, 0x61, 0x67, - 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x49, 0x0a, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2c, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, - 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x70, 0x76, 0x34, 0x44, 0x6f, 0x6e, 0x74, 0x46, 0x72, - 0x61, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x2e, 0x45, 0x6e, - 0x75, 0x6d, 0x48, 0x00, 0x52, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x88, 0x01, 0x01, 0x12, - 0x19, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, - 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x88, 0x01, 0x01, 0x12, 0x16, 0x0a, 0x06, 0x76, 0x61, - 0x6c, 0x75, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0d, 0x52, 0x06, 0x76, 0x61, 0x6c, 0x75, - 0x65, 0x73, 0x12, 0x45, 0x0a, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, - 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, - 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x70, 0x76, 0x34, 0x44, 0x6f, 0x6e, 0x74, 0x46, - 0x72, 0x61, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, - 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x45, 0x0a, 0x09, 0x64, 0x65, 0x63, - 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x6f, - 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x70, - 0x76, 0x34, 0x44, 0x6f, 0x6e, 0x74, 0x46, 0x72, 0x61, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x43, 0x6f, - 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, - 0x12, 0x4a, 0x0a, 0x0b, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x5f, 0x74, 0x61, 0x67, 0x73, 0x18, - 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, - 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x70, 0x76, 0x34, 0x44, 0x6f, 0x6e, 0x74, 0x46, - 0x72, 0x61, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, + 0x74, 0x12, 0x49, 0x0a, 0x0b, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x5f, 0x74, 0x61, 0x67, 0x73, + 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, + 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x70, 0x76, 0x34, 0x50, 0x72, 0x69, 0x6f, + 0x72, 0x69, 0x74, 0x79, 0x52, 0x61, 0x77, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, + 0x52, 0x0a, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x73, 0x1a, 0x56, 0x0a, 0x06, + 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x22, 0x4c, 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0f, + 0x0a, 0x0b, 0x75, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x10, 0x00, 0x12, + 0x09, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x10, 0x02, 0x12, 0x0a, 0x0a, 0x06, 0x76, 0x61, + 0x6c, 0x75, 0x65, 0x73, 0x10, 0x03, 0x12, 0x0d, 0x0a, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, + 0x65, 0x6e, 0x74, 0x10, 0x04, 0x12, 0x0d, 0x0a, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, + 0x6e, 0x74, 0x10, 0x05, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x42, + 0x08, 0x0a, 0x06, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x8b, 0x01, 0x0a, 0x1d, 0x50, 0x61, + 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x70, 0x76, 0x34, 0x44, 0x73, 0x63, + 0x70, 0x50, 0x68, 0x62, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x12, 0x19, 0x0a, 0x05, 0x73, + 0x74, 0x61, 0x72, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x00, 0x52, 0x05, 0x73, 0x74, + 0x61, 0x72, 0x74, 0x88, 0x01, 0x01, 0x12, 0x17, 0x0a, 0x04, 0x73, 0x74, 0x65, 0x70, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x04, 0x73, 0x74, 0x65, 0x70, 0x88, 0x01, 0x01, 0x12, + 0x19, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x02, + 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x88, 0x01, 0x01, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x73, + 0x74, 0x61, 0x72, 0x74, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x73, 0x74, 0x65, 0x70, 0x42, 0x08, 0x0a, + 0x06, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x93, 0x01, 0x0a, 0x1f, 0x50, 0x61, 0x74, 0x74, + 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x70, 0x76, 0x34, 0x44, 0x73, 0x63, 0x70, 0x50, + 0x68, 0x62, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x12, 0x17, 0x0a, 0x04, 0x6e, + 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x04, 0x6e, 0x61, 0x6d, + 0x65, 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x88, 0x01, + 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x0d, 0x48, 0x02, 0x52, 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x88, 0x01, 0x01, 0x42, 0x07, + 0x0a, 0x05, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6f, 0x66, 0x66, 0x73, + 0x65, 0x74, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x22, 0xc9, 0x03, + 0x0a, 0x16, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x70, 0x76, + 0x34, 0x44, 0x73, 0x63, 0x70, 0x50, 0x68, 0x62, 0x12, 0x44, 0x0a, 0x06, 0x63, 0x68, 0x6f, 0x69, + 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x27, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, + 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x70, 0x76, 0x34, 0x44, 0x73, + 0x63, 0x70, 0x50, 0x68, 0x62, 0x2e, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x2e, 0x45, 0x6e, 0x75, + 0x6d, 0x48, 0x00, 0x52, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x88, 0x01, 0x01, 0x12, 0x19, + 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, + 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x88, 0x01, 0x01, 0x12, 0x16, 0x0a, 0x06, 0x76, 0x61, 0x6c, + 0x75, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0d, 0x52, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, + 0x73, 0x12, 0x40, 0x0a, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x05, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, + 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x70, 0x76, 0x34, 0x44, 0x73, 0x63, 0x70, 0x50, 0x68, + 0x62, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, + 0x65, 0x6e, 0x74, 0x12, 0x40, 0x0a, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, + 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, + 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x70, 0x76, 0x34, 0x44, 0x73, 0x63, 0x70, + 0x50, 0x68, 0x62, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, 0x64, 0x65, 0x63, 0x72, + 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x45, 0x0a, 0x0b, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x5f, + 0x74, 0x61, 0x67, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x6f, 0x74, 0x67, + 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x70, 0x76, 0x34, + 0x44, 0x73, 0x63, 0x70, 0x50, 0x68, 0x62, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, + 0x52, 0x0a, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x73, 0x1a, 0x56, 0x0a, 0x06, + 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x22, 0x4c, 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0f, + 0x0a, 0x0b, 0x75, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x10, 0x00, 0x12, + 0x09, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x10, 0x02, 0x12, 0x0a, 0x0a, 0x06, 0x76, 0x61, + 0x6c, 0x75, 0x65, 0x73, 0x10, 0x03, 0x12, 0x0d, 0x0a, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, + 0x65, 0x6e, 0x74, 0x10, 0x04, 0x12, 0x0d, 0x0a, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, + 0x6e, 0x74, 0x10, 0x05, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x42, + 0x08, 0x0a, 0x06, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x8b, 0x01, 0x0a, 0x1d, 0x50, 0x61, + 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x70, 0x76, 0x34, 0x44, 0x73, 0x63, + 0x70, 0x45, 0x63, 0x6e, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x12, 0x19, 0x0a, 0x05, 0x73, + 0x74, 0x61, 0x72, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x00, 0x52, 0x05, 0x73, 0x74, + 0x61, 0x72, 0x74, 0x88, 0x01, 0x01, 0x12, 0x17, 0x0a, 0x04, 0x73, 0x74, 0x65, 0x70, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x04, 0x73, 0x74, 0x65, 0x70, 0x88, 0x01, 0x01, 0x12, + 0x19, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x02, + 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x88, 0x01, 0x01, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x73, + 0x74, 0x61, 0x72, 0x74, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x73, 0x74, 0x65, 0x70, 0x42, 0x08, 0x0a, + 0x06, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x93, 0x01, 0x0a, 0x1f, 0x50, 0x61, 0x74, 0x74, + 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x70, 0x76, 0x34, 0x44, 0x73, 0x63, 0x70, 0x45, + 0x63, 0x6e, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x12, 0x17, 0x0a, 0x04, 0x6e, + 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x04, 0x6e, 0x61, 0x6d, + 0x65, 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x88, 0x01, + 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x0d, 0x48, 0x02, 0x52, 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x88, 0x01, 0x01, 0x42, 0x07, + 0x0a, 0x05, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6f, 0x66, 0x66, 0x73, + 0x65, 0x74, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x22, 0xc9, 0x03, + 0x0a, 0x16, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x70, 0x76, + 0x34, 0x44, 0x73, 0x63, 0x70, 0x45, 0x63, 0x6e, 0x12, 0x44, 0x0a, 0x06, 0x63, 0x68, 0x6f, 0x69, + 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x27, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, + 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x70, 0x76, 0x34, 0x44, 0x73, + 0x63, 0x70, 0x45, 0x63, 0x6e, 0x2e, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x2e, 0x45, 0x6e, 0x75, + 0x6d, 0x48, 0x00, 0x52, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x88, 0x01, 0x01, 0x12, 0x19, + 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, + 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x88, 0x01, 0x01, 0x12, 0x16, 0x0a, 0x06, 0x76, 0x61, 0x6c, + 0x75, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0d, 0x52, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, + 0x73, 0x12, 0x40, 0x0a, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x05, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, + 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x70, 0x76, 0x34, 0x44, 0x73, 0x63, 0x70, 0x45, 0x63, + 0x6e, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, + 0x65, 0x6e, 0x74, 0x12, 0x40, 0x0a, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, + 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, + 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x70, 0x76, 0x34, 0x44, 0x73, 0x63, 0x70, + 0x45, 0x63, 0x6e, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, 0x64, 0x65, 0x63, 0x72, + 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x45, 0x0a, 0x0b, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x5f, + 0x74, 0x61, 0x67, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x6f, 0x74, 0x67, + 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x70, 0x76, 0x34, + 0x44, 0x73, 0x63, 0x70, 0x45, 0x63, 0x6e, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x52, 0x0a, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x73, 0x1a, 0x56, 0x0a, 0x06, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x22, 0x4c, 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x0a, 0x0b, 0x75, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x10, 0x00, 0x12, @@ -101398,8 +116788,8 @@ var file_otg_proto_rawDesc = []byte{ 0x65, 0x6e, 0x74, 0x10, 0x04, 0x12, 0x0d, 0x0a, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x10, 0x05, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x91, 0x01, 0x0a, 0x23, 0x50, 0x61, - 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x70, 0x76, 0x34, 0x4d, 0x6f, 0x72, - 0x65, 0x46, 0x72, 0x61, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, + 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x70, 0x76, 0x34, 0x54, 0x6f, 0x73, + 0x50, 0x72, 0x65, 0x63, 0x65, 0x64, 0x65, 0x6e, 0x63, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x12, 0x19, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x00, 0x52, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x88, 0x01, 0x01, 0x12, 0x17, 0x0a, 0x04, 0x73, 0x74, 0x65, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x04, 0x73, 0x74, @@ -101408,7 +116798,7 @@ var file_otg_proto_rawDesc = []byte{ 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x73, 0x74, 0x65, 0x70, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x99, 0x01, 0x0a, 0x25, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x70, 0x76, - 0x34, 0x4d, 0x6f, 0x72, 0x65, 0x46, 0x72, 0x61, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x4d, 0x65, + 0x34, 0x54, 0x6f, 0x73, 0x50, 0x72, 0x65, 0x63, 0x65, 0x64, 0x65, 0x6e, 0x63, 0x65, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x12, 0x17, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, @@ -101417,11 +116807,11 @@ var file_otg_proto_rawDesc = []byte{ 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x88, 0x01, 0x01, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x22, 0xe7, 0x03, 0x0a, 0x1c, 0x50, 0x61, - 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x70, 0x76, 0x34, 0x4d, 0x6f, 0x72, - 0x65, 0x46, 0x72, 0x61, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x4a, 0x0a, 0x06, 0x63, 0x68, + 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x70, 0x76, 0x34, 0x54, 0x6f, 0x73, + 0x50, 0x72, 0x65, 0x63, 0x65, 0x64, 0x65, 0x6e, 0x63, 0x65, 0x12, 0x4a, 0x0a, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2d, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x70, 0x76, 0x34, - 0x4d, 0x6f, 0x72, 0x65, 0x46, 0x72, 0x61, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x43, 0x68, + 0x54, 0x6f, 0x73, 0x50, 0x72, 0x65, 0x63, 0x65, 0x64, 0x65, 0x6e, 0x63, 0x65, 0x2e, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x48, 0x00, 0x52, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x88, 0x01, @@ -101429,17 +116819,17 @@ var file_otg_proto_rawDesc = []byte{ 0x0d, 0x52, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x12, 0x46, 0x0a, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x70, - 0x76, 0x34, 0x4d, 0x6f, 0x72, 0x65, 0x46, 0x72, 0x61, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x43, + 0x76, 0x34, 0x54, 0x6f, 0x73, 0x50, 0x72, 0x65, 0x63, 0x65, 0x64, 0x65, 0x6e, 0x63, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x46, 0x0a, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, - 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x70, 0x76, 0x34, 0x4d, 0x6f, 0x72, 0x65, 0x46, 0x72, - 0x61, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, + 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x70, 0x76, 0x34, 0x54, 0x6f, 0x73, 0x50, 0x72, 0x65, + 0x63, 0x65, 0x64, 0x65, 0x6e, 0x63, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x4b, 0x0a, 0x0b, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x5f, 0x74, 0x61, 0x67, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, - 0x49, 0x70, 0x76, 0x34, 0x4d, 0x6f, 0x72, 0x65, 0x46, 0x72, 0x61, 0x67, 0x6d, 0x65, 0x6e, 0x74, - 0x73, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x52, 0x0a, 0x6d, 0x65, 0x74, 0x72, + 0x49, 0x70, 0x76, 0x34, 0x54, 0x6f, 0x73, 0x50, 0x72, 0x65, 0x63, 0x65, 0x64, 0x65, 0x6e, 0x63, + 0x65, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x52, 0x0a, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x73, 0x1a, 0x56, 0x0a, 0x06, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x22, 0x4c, 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x0a, 0x0b, 0x75, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, 0x76, 0x61, 0x6c, @@ -101447,49 +116837,96 @@ var file_otg_proto_rawDesc = []byte{ 0x12, 0x0d, 0x0a, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x10, 0x04, 0x12, 0x0d, 0x0a, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x10, 0x05, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x76, 0x61, - 0x6c, 0x75, 0x65, 0x22, 0x92, 0x01, 0x0a, 0x24, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, - 0x6c, 0x6f, 0x77, 0x49, 0x70, 0x76, 0x34, 0x46, 0x72, 0x61, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x4f, - 0x66, 0x66, 0x73, 0x65, 0x74, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x12, 0x19, 0x0a, 0x05, - 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x00, 0x52, 0x05, 0x73, - 0x74, 0x61, 0x72, 0x74, 0x88, 0x01, 0x01, 0x12, 0x17, 0x0a, 0x04, 0x73, 0x74, 0x65, 0x70, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x04, 0x73, 0x74, 0x65, 0x70, 0x88, 0x01, 0x01, - 0x12, 0x19, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x48, - 0x02, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x88, 0x01, 0x01, 0x42, 0x08, 0x0a, 0x06, 0x5f, - 0x73, 0x74, 0x61, 0x72, 0x74, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x73, 0x74, 0x65, 0x70, 0x42, 0x08, - 0x0a, 0x06, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x9a, 0x01, 0x0a, 0x26, 0x50, 0x61, 0x74, - 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x70, 0x76, 0x34, 0x46, 0x72, 0x61, 0x67, - 0x6d, 0x65, 0x6e, 0x74, 0x4f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, - 0x54, 0x61, 0x67, 0x12, 0x17, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x48, 0x00, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, - 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x06, - 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x6c, 0x65, 0x6e, - 0x67, 0x74, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x02, 0x52, 0x06, 0x6c, 0x65, 0x6e, - 0x67, 0x74, 0x68, 0x88, 0x01, 0x01, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x42, - 0x09, 0x0a, 0x07, 0x5f, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6c, - 0x65, 0x6e, 0x67, 0x74, 0x68, 0x22, 0xec, 0x03, 0x0a, 0x1d, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, - 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x70, 0x76, 0x34, 0x46, 0x72, 0x61, 0x67, 0x6d, 0x65, 0x6e, - 0x74, 0x4f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x12, 0x4b, 0x0a, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, - 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2e, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, - 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x70, 0x76, 0x34, 0x46, 0x72, 0x61, - 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x4f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x2e, 0x43, 0x68, 0x6f, 0x69, - 0x63, 0x65, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x48, 0x00, 0x52, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, - 0x65, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x88, 0x01, 0x01, 0x12, - 0x16, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0d, 0x52, - 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x12, 0x47, 0x0a, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, - 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x6f, 0x74, 0x67, + 0x6c, 0x75, 0x65, 0x22, 0x8c, 0x01, 0x0a, 0x1e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, + 0x6c, 0x6f, 0x77, 0x49, 0x70, 0x76, 0x34, 0x54, 0x6f, 0x73, 0x44, 0x65, 0x6c, 0x61, 0x79, 0x43, + 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x12, 0x19, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x00, 0x52, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x88, 0x01, + 0x01, 0x12, 0x17, 0x0a, 0x04, 0x73, 0x74, 0x65, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, + 0x01, 0x52, 0x04, 0x73, 0x74, 0x65, 0x70, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x63, 0x6f, + 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x02, 0x52, 0x05, 0x63, 0x6f, 0x75, + 0x6e, 0x74, 0x88, 0x01, 0x01, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x42, + 0x07, 0x0a, 0x05, 0x5f, 0x73, 0x74, 0x65, 0x70, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x63, 0x6f, 0x75, + 0x6e, 0x74, 0x22, 0x94, 0x01, 0x0a, 0x20, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, + 0x6f, 0x77, 0x49, 0x70, 0x76, 0x34, 0x54, 0x6f, 0x73, 0x44, 0x65, 0x6c, 0x61, 0x79, 0x4d, 0x65, + 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x12, 0x17, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x88, 0x01, 0x01, + 0x12, 0x1b, 0x0a, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, + 0x48, 0x01, 0x52, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, + 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x02, 0x52, + 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x88, 0x01, 0x01, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x6e, + 0x61, 0x6d, 0x65, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x42, 0x09, + 0x0a, 0x07, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x22, 0xce, 0x03, 0x0a, 0x17, 0x50, 0x61, + 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x70, 0x76, 0x34, 0x54, 0x6f, 0x73, + 0x44, 0x65, 0x6c, 0x61, 0x79, 0x12, 0x45, 0x0a, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x28, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, + 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x70, 0x76, 0x34, 0x54, 0x6f, 0x73, 0x44, 0x65, + 0x6c, 0x61, 0x79, 0x2e, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x48, + 0x00, 0x52, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, + 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x05, 0x76, + 0x61, 0x6c, 0x75, 0x65, 0x88, 0x01, 0x01, 0x12, 0x16, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, + 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0d, 0x52, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x12, + 0x41, 0x0a, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, + 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x70, 0x76, 0x34, 0x54, 0x6f, 0x73, 0x44, 0x65, 0x6c, 0x61, 0x79, + 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, + 0x6e, 0x74, 0x12, 0x41, 0x0a, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, + 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, + 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x70, 0x76, 0x34, 0x54, 0x6f, 0x73, 0x44, 0x65, + 0x6c, 0x61, 0x79, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, 0x64, 0x65, 0x63, 0x72, + 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x46, 0x0a, 0x0b, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x5f, + 0x74, 0x61, 0x67, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x70, 0x76, 0x34, - 0x46, 0x72, 0x61, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x4f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x43, 0x6f, - 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, - 0x12, 0x47, 0x0a, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x06, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, - 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x70, 0x76, 0x34, 0x46, 0x72, 0x61, 0x67, 0x6d, 0x65, 0x6e, - 0x74, 0x4f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, - 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x4c, 0x0a, 0x0b, 0x6d, 0x65, 0x74, - 0x72, 0x69, 0x63, 0x5f, 0x74, 0x61, 0x67, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2b, - 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, - 0x49, 0x70, 0x76, 0x34, 0x46, 0x72, 0x61, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x4f, 0x66, 0x66, 0x73, - 0x65, 0x74, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x52, 0x0a, 0x6d, 0x65, 0x74, + 0x54, 0x6f, 0x73, 0x44, 0x65, 0x6c, 0x61, 0x79, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, + 0x67, 0x52, 0x0a, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x73, 0x1a, 0x56, 0x0a, + 0x06, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x22, 0x4c, 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, + 0x0f, 0x0a, 0x0b, 0x75, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x10, 0x00, + 0x12, 0x09, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x10, 0x02, 0x12, 0x0a, 0x0a, 0x06, 0x76, + 0x61, 0x6c, 0x75, 0x65, 0x73, 0x10, 0x03, 0x12, 0x0d, 0x0a, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, + 0x6d, 0x65, 0x6e, 0x74, 0x10, 0x04, 0x12, 0x0d, 0x0a, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, + 0x65, 0x6e, 0x74, 0x10, 0x05, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, + 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x91, 0x01, 0x0a, 0x23, 0x50, + 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x70, 0x76, 0x34, 0x54, 0x6f, + 0x73, 0x54, 0x68, 0x72, 0x6f, 0x75, 0x67, 0x68, 0x70, 0x75, 0x74, 0x43, 0x6f, 0x75, 0x6e, 0x74, + 0x65, 0x72, 0x12, 0x19, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x0d, 0x48, 0x00, 0x52, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x88, 0x01, 0x01, 0x12, 0x17, 0x0a, + 0x04, 0x73, 0x74, 0x65, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x04, 0x73, + 0x74, 0x65, 0x70, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x02, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x88, 0x01, + 0x01, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x42, 0x07, 0x0a, 0x05, 0x5f, + 0x73, 0x74, 0x65, 0x70, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x99, + 0x01, 0x0a, 0x25, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x70, + 0x76, 0x34, 0x54, 0x6f, 0x73, 0x54, 0x68, 0x72, 0x6f, 0x75, 0x67, 0x68, 0x70, 0x75, 0x74, 0x4d, + 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x12, 0x17, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x88, 0x01, + 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x0d, 0x48, 0x01, 0x52, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x88, 0x01, 0x01, 0x12, 0x1b, + 0x0a, 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x02, + 0x52, 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x88, 0x01, 0x01, 0x42, 0x07, 0x0a, 0x05, 0x5f, + 0x6e, 0x61, 0x6d, 0x65, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x42, + 0x09, 0x0a, 0x07, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x22, 0xe7, 0x03, 0x0a, 0x1c, 0x50, + 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x70, 0x76, 0x34, 0x54, 0x6f, + 0x73, 0x54, 0x68, 0x72, 0x6f, 0x75, 0x67, 0x68, 0x70, 0x75, 0x74, 0x12, 0x4a, 0x0a, 0x06, 0x63, + 0x68, 0x6f, 0x69, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2d, 0x2e, 0x6f, 0x74, + 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x70, 0x76, + 0x34, 0x54, 0x6f, 0x73, 0x54, 0x68, 0x72, 0x6f, 0x75, 0x67, 0x68, 0x70, 0x75, 0x74, 0x2e, 0x43, + 0x68, 0x6f, 0x69, 0x63, 0x65, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x48, 0x00, 0x52, 0x06, 0x63, 0x68, + 0x6f, 0x69, 0x63, 0x65, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x88, + 0x01, 0x01, 0x12, 0x16, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, + 0x28, 0x0d, 0x52, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x12, 0x46, 0x0a, 0x09, 0x69, 0x6e, + 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, + 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, + 0x70, 0x76, 0x34, 0x54, 0x6f, 0x73, 0x54, 0x68, 0x72, 0x6f, 0x75, 0x67, 0x68, 0x70, 0x75, 0x74, + 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, + 0x6e, 0x74, 0x12, 0x46, 0x0a, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, + 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, + 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x70, 0x76, 0x34, 0x54, 0x6f, 0x73, 0x54, 0x68, + 0x72, 0x6f, 0x75, 0x67, 0x68, 0x70, 0x75, 0x74, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, + 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x4b, 0x0a, 0x0b, 0x6d, 0x65, + 0x74, 0x72, 0x69, 0x63, 0x5f, 0x74, 0x61, 0x67, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x2a, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, + 0x77, 0x49, 0x70, 0x76, 0x34, 0x54, 0x6f, 0x73, 0x54, 0x68, 0x72, 0x6f, 0x75, 0x67, 0x68, 0x70, + 0x75, 0x74, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x52, 0x0a, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x73, 0x1a, 0x56, 0x0a, 0x06, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x22, 0x4c, 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x0a, 0x0b, 0x75, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, 0x76, 0x61, @@ -101497,326 +116934,68 @@ var file_otg_proto_rawDesc = []byte{ 0x03, 0x12, 0x0d, 0x0a, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x10, 0x04, 0x12, 0x0d, 0x0a, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x10, 0x05, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x76, - 0x61, 0x6c, 0x75, 0x65, 0x22, 0x8e, 0x01, 0x0a, 0x20, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, - 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x70, 0x76, 0x34, 0x54, 0x69, 0x6d, 0x65, 0x54, 0x6f, 0x4c, 0x69, - 0x76, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x12, 0x19, 0x0a, 0x05, 0x73, 0x74, 0x61, - 0x72, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x00, 0x52, 0x05, 0x73, 0x74, 0x61, 0x72, - 0x74, 0x88, 0x01, 0x01, 0x12, 0x17, 0x0a, 0x04, 0x73, 0x74, 0x65, 0x70, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x0d, 0x48, 0x01, 0x52, 0x04, 0x73, 0x74, 0x65, 0x70, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, - 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x02, 0x52, 0x05, - 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x88, 0x01, 0x01, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x73, 0x74, 0x61, - 0x72, 0x74, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x73, 0x74, 0x65, 0x70, 0x42, 0x08, 0x0a, 0x06, 0x5f, - 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x96, 0x01, 0x0a, 0x22, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, - 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x70, 0x76, 0x34, 0x54, 0x69, 0x6d, 0x65, 0x54, 0x6f, 0x4c, - 0x69, 0x76, 0x65, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x12, 0x17, 0x0a, 0x04, - 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x04, 0x6e, 0x61, - 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x88, - 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x0d, 0x48, 0x02, 0x52, 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x88, 0x01, 0x01, 0x42, - 0x07, 0x0a, 0x05, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6f, 0x66, 0x66, - 0x73, 0x65, 0x74, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x22, 0xd8, - 0x03, 0x0a, 0x19, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x70, - 0x76, 0x34, 0x54, 0x69, 0x6d, 0x65, 0x54, 0x6f, 0x4c, 0x69, 0x76, 0x65, 0x12, 0x47, 0x0a, 0x06, - 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2a, 0x2e, 0x6f, - 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x70, - 0x76, 0x34, 0x54, 0x69, 0x6d, 0x65, 0x54, 0x6f, 0x4c, 0x69, 0x76, 0x65, 0x2e, 0x43, 0x68, 0x6f, + 0x61, 0x6c, 0x75, 0x65, 0x22, 0x92, 0x01, 0x0a, 0x24, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, + 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x70, 0x76, 0x34, 0x54, 0x6f, 0x73, 0x52, 0x65, 0x6c, 0x69, 0x61, + 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x12, 0x19, 0x0a, + 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x00, 0x52, 0x05, + 0x73, 0x74, 0x61, 0x72, 0x74, 0x88, 0x01, 0x01, 0x12, 0x17, 0x0a, 0x04, 0x73, 0x74, 0x65, 0x70, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x04, 0x73, 0x74, 0x65, 0x70, 0x88, 0x01, + 0x01, 0x12, 0x19, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, + 0x48, 0x02, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x88, 0x01, 0x01, 0x42, 0x08, 0x0a, 0x06, + 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x73, 0x74, 0x65, 0x70, 0x42, + 0x08, 0x0a, 0x06, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x9a, 0x01, 0x0a, 0x26, 0x50, 0x61, + 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x70, 0x76, 0x34, 0x54, 0x6f, 0x73, + 0x52, 0x65, 0x6c, 0x69, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x4d, 0x65, 0x74, 0x72, 0x69, + 0x63, 0x54, 0x61, 0x67, 0x12, 0x17, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x48, 0x00, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, + 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, + 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x6c, 0x65, + 0x6e, 0x67, 0x74, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x02, 0x52, 0x06, 0x6c, 0x65, + 0x6e, 0x67, 0x74, 0x68, 0x88, 0x01, 0x01, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x6e, 0x61, 0x6d, 0x65, + 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x42, 0x09, 0x0a, 0x07, 0x5f, + 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x22, 0xec, 0x03, 0x0a, 0x1d, 0x50, 0x61, 0x74, 0x74, 0x65, + 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x70, 0x76, 0x34, 0x54, 0x6f, 0x73, 0x52, 0x65, 0x6c, + 0x69, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x12, 0x4b, 0x0a, 0x06, 0x63, 0x68, 0x6f, 0x69, + 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2e, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, + 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x70, 0x76, 0x34, 0x54, 0x6f, + 0x73, 0x52, 0x65, 0x6c, 0x69, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x2e, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x48, 0x00, 0x52, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x88, 0x01, 0x01, 0x12, 0x16, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0d, - 0x52, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x12, 0x43, 0x0a, 0x09, 0x69, 0x6e, 0x63, 0x72, - 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x6f, 0x74, - 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x70, 0x76, - 0x34, 0x54, 0x69, 0x6d, 0x65, 0x54, 0x6f, 0x4c, 0x69, 0x76, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, - 0x65, 0x72, 0x52, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x43, 0x0a, - 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x25, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, - 0x6f, 0x77, 0x49, 0x70, 0x76, 0x34, 0x54, 0x69, 0x6d, 0x65, 0x54, 0x6f, 0x4c, 0x69, 0x76, 0x65, - 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, - 0x6e, 0x74, 0x12, 0x48, 0x0a, 0x0b, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x5f, 0x74, 0x61, 0x67, - 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, - 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x70, 0x76, 0x34, 0x54, 0x69, 0x6d, - 0x65, 0x54, 0x6f, 0x4c, 0x69, 0x76, 0x65, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, - 0x52, 0x0a, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x73, 0x1a, 0x56, 0x0a, 0x06, - 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x22, 0x4c, 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0f, - 0x0a, 0x0b, 0x75, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x10, 0x00, 0x12, - 0x09, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x10, 0x02, 0x12, 0x0a, 0x0a, 0x06, 0x76, 0x61, - 0x6c, 0x75, 0x65, 0x73, 0x10, 0x03, 0x12, 0x0d, 0x0a, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, - 0x65, 0x6e, 0x74, 0x10, 0x04, 0x12, 0x0d, 0x0a, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, - 0x6e, 0x74, 0x10, 0x05, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x42, - 0x08, 0x0a, 0x06, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x8c, 0x01, 0x0a, 0x1e, 0x50, 0x61, - 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x70, 0x76, 0x34, 0x50, 0x72, 0x6f, - 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x12, 0x19, 0x0a, 0x05, - 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x00, 0x52, 0x05, 0x73, - 0x74, 0x61, 0x72, 0x74, 0x88, 0x01, 0x01, 0x12, 0x17, 0x0a, 0x04, 0x73, 0x74, 0x65, 0x70, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x04, 0x73, 0x74, 0x65, 0x70, 0x88, 0x01, 0x01, - 0x12, 0x19, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x48, - 0x02, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x88, 0x01, 0x01, 0x42, 0x08, 0x0a, 0x06, 0x5f, - 0x73, 0x74, 0x61, 0x72, 0x74, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x73, 0x74, 0x65, 0x70, 0x42, 0x08, - 0x0a, 0x06, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x94, 0x01, 0x0a, 0x20, 0x50, 0x61, 0x74, - 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x70, 0x76, 0x34, 0x50, 0x72, 0x6f, 0x74, - 0x6f, 0x63, 0x6f, 0x6c, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x12, 0x17, 0x0a, - 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x04, 0x6e, - 0x61, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, - 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x0d, 0x48, 0x02, 0x52, 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x88, 0x01, 0x01, - 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6f, 0x66, - 0x66, 0x73, 0x65, 0x74, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x22, - 0xfa, 0x03, 0x0a, 0x17, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, - 0x70, 0x76, 0x34, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x12, 0x45, 0x0a, 0x06, 0x63, - 0x68, 0x6f, 0x69, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x28, 0x2e, 0x6f, 0x74, + 0x52, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x12, 0x47, 0x0a, 0x09, 0x69, 0x6e, 0x63, 0x72, + 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x70, 0x76, - 0x34, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, - 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x48, 0x00, 0x52, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x88, - 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x0d, 0x48, 0x01, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x88, 0x01, 0x01, 0x12, 0x16, 0x0a, - 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0d, 0x52, 0x06, 0x76, - 0x61, 0x6c, 0x75, 0x65, 0x73, 0x12, 0x17, 0x0a, 0x04, 0x61, 0x75, 0x74, 0x6f, 0x18, 0x04, 0x20, - 0x01, 0x28, 0x0d, 0x48, 0x02, 0x52, 0x04, 0x61, 0x75, 0x74, 0x6f, 0x88, 0x01, 0x01, 0x12, 0x41, - 0x0a, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x23, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, - 0x6c, 0x6f, 0x77, 0x49, 0x70, 0x76, 0x34, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x43, + 0x34, 0x54, 0x6f, 0x73, 0x52, 0x65, 0x6c, 0x69, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, - 0x74, 0x12, 0x41, 0x0a, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x07, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, - 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x70, 0x76, 0x34, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, - 0x6f, 0x6c, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, - 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x46, 0x0a, 0x0b, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x5f, 0x74, - 0x61, 0x67, 0x73, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x6f, 0x74, 0x67, 0x2e, - 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x70, 0x76, 0x34, 0x50, - 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, - 0x52, 0x0a, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x73, 0x1a, 0x60, 0x0a, 0x06, - 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x22, 0x56, 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0f, - 0x0a, 0x0b, 0x75, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x10, 0x00, 0x12, - 0x09, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x10, 0x02, 0x12, 0x0a, 0x0a, 0x06, 0x76, 0x61, - 0x6c, 0x75, 0x65, 0x73, 0x10, 0x03, 0x12, 0x08, 0x0a, 0x04, 0x61, 0x75, 0x74, 0x6f, 0x10, 0x01, - 0x12, 0x0d, 0x0a, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x10, 0x04, 0x12, - 0x0d, 0x0a, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x10, 0x05, 0x42, 0x09, - 0x0a, 0x07, 0x5f, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x76, 0x61, - 0x6c, 0x75, 0x65, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x61, 0x75, 0x74, 0x6f, 0x22, 0xfa, 0x02, 0x0a, - 0x1d, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x70, 0x76, 0x34, - 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x12, 0x4b, - 0x0a, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2e, - 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, - 0x49, 0x70, 0x76, 0x34, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x73, - 0x75, 0x6d, 0x2e, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x48, 0x00, - 0x52, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x88, 0x01, 0x01, 0x12, 0x54, 0x0a, 0x09, 0x67, - 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x31, - 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, - 0x49, 0x70, 0x76, 0x34, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x73, - 0x75, 0x6d, 0x2e, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x2e, 0x45, 0x6e, 0x75, - 0x6d, 0x48, 0x01, 0x52, 0x09, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x88, 0x01, - 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x0d, 0x48, 0x02, 0x52, 0x06, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x88, 0x01, 0x01, 0x1a, 0x3c, - 0x0a, 0x06, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x22, 0x32, 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, - 0x12, 0x0f, 0x0a, 0x0b, 0x75, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x10, - 0x00, 0x12, 0x0d, 0x0a, 0x09, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x10, 0x01, - 0x12, 0x0a, 0x0a, 0x06, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x10, 0x02, 0x1a, 0x37, 0x0a, 0x09, - 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x22, 0x2a, 0x0a, 0x04, 0x45, 0x6e, 0x75, - 0x6d, 0x12, 0x0f, 0x0a, 0x0b, 0x75, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, - 0x10, 0x00, 0x12, 0x08, 0x0a, 0x04, 0x67, 0x6f, 0x6f, 0x64, 0x10, 0x01, 0x12, 0x07, 0x0a, 0x03, - 0x62, 0x61, 0x64, 0x10, 0x02, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, - 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x42, 0x09, - 0x0a, 0x07, 0x5f, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x22, 0x87, 0x01, 0x0a, 0x19, 0x50, 0x61, - 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x70, 0x76, 0x34, 0x53, 0x72, 0x63, - 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x12, 0x19, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x88, - 0x01, 0x01, 0x12, 0x17, 0x0a, 0x04, 0x73, 0x74, 0x65, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, - 0x48, 0x01, 0x52, 0x04, 0x73, 0x74, 0x65, 0x70, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x63, - 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x02, 0x52, 0x05, 0x63, 0x6f, - 0x75, 0x6e, 0x74, 0x88, 0x01, 0x01, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, - 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x73, 0x74, 0x65, 0x70, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x63, 0x6f, - 0x75, 0x6e, 0x74, 0x22, 0x8f, 0x01, 0x0a, 0x1b, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, - 0x6c, 0x6f, 0x77, 0x49, 0x70, 0x76, 0x34, 0x53, 0x72, 0x63, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, - 0x54, 0x61, 0x67, 0x12, 0x17, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x48, 0x00, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, - 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x06, - 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x6c, 0x65, 0x6e, - 0x67, 0x74, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x02, 0x52, 0x06, 0x6c, 0x65, 0x6e, - 0x67, 0x74, 0x68, 0x88, 0x01, 0x01, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x42, - 0x09, 0x0a, 0x07, 0x5f, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6c, - 0x65, 0x6e, 0x67, 0x74, 0x68, 0x22, 0xb5, 0x03, 0x0a, 0x12, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, - 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x70, 0x76, 0x34, 0x53, 0x72, 0x63, 0x12, 0x40, 0x0a, 0x06, - 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x23, 0x2e, 0x6f, - 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x70, - 0x76, 0x34, 0x53, 0x72, 0x63, 0x2e, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x2e, 0x45, 0x6e, 0x75, - 0x6d, 0x48, 0x00, 0x52, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x88, 0x01, 0x01, 0x12, 0x19, - 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, 0x52, - 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x88, 0x01, 0x01, 0x12, 0x16, 0x0a, 0x06, 0x76, 0x61, 0x6c, - 0x75, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, - 0x73, 0x12, 0x3c, 0x0a, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x05, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, - 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x70, 0x76, 0x34, 0x53, 0x72, 0x63, 0x43, 0x6f, 0x75, - 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, - 0x3c, 0x0a, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, - 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x70, 0x76, 0x34, 0x53, 0x72, 0x63, 0x43, 0x6f, 0x75, 0x6e, 0x74, - 0x65, 0x72, 0x52, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x41, 0x0a, - 0x0b, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x5f, 0x74, 0x61, 0x67, 0x73, 0x18, 0x07, 0x20, 0x03, - 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, - 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x70, 0x76, 0x34, 0x53, 0x72, 0x63, 0x4d, 0x65, 0x74, 0x72, 0x69, - 0x63, 0x54, 0x61, 0x67, 0x52, 0x0a, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x73, - 0x1a, 0x56, 0x0a, 0x06, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x22, 0x4c, 0x0a, 0x04, 0x45, 0x6e, - 0x75, 0x6d, 0x12, 0x0f, 0x0a, 0x0b, 0x75, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, - 0x64, 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x10, 0x02, 0x12, 0x0a, - 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x10, 0x03, 0x12, 0x0d, 0x0a, 0x09, 0x69, 0x6e, - 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x10, 0x04, 0x12, 0x0d, 0x0a, 0x09, 0x64, 0x65, 0x63, - 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x10, 0x05, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x63, 0x68, 0x6f, - 0x69, 0x63, 0x65, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x87, 0x01, - 0x0a, 0x19, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x70, 0x76, - 0x34, 0x44, 0x73, 0x74, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x12, 0x19, 0x0a, 0x05, 0x73, - 0x74, 0x61, 0x72, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x05, 0x73, 0x74, + 0x74, 0x12, 0x47, 0x0a, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x06, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, + 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x70, 0x76, 0x34, 0x54, 0x6f, 0x73, 0x52, 0x65, 0x6c, + 0x69, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, + 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x4c, 0x0a, 0x0b, 0x6d, 0x65, + 0x74, 0x72, 0x69, 0x63, 0x5f, 0x74, 0x61, 0x67, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x2b, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, + 0x77, 0x49, 0x70, 0x76, 0x34, 0x54, 0x6f, 0x73, 0x52, 0x65, 0x6c, 0x69, 0x61, 0x62, 0x69, 0x6c, + 0x69, 0x74, 0x79, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x52, 0x0a, 0x6d, 0x65, + 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x73, 0x1a, 0x56, 0x0a, 0x06, 0x43, 0x68, 0x6f, 0x69, + 0x63, 0x65, 0x22, 0x4c, 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x0a, 0x0b, 0x75, 0x6e, + 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, 0x76, + 0x61, 0x6c, 0x75, 0x65, 0x10, 0x02, 0x12, 0x0a, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, + 0x10, 0x03, 0x12, 0x0d, 0x0a, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x10, + 0x04, 0x12, 0x0d, 0x0a, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x10, 0x05, + 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x42, 0x08, 0x0a, 0x06, 0x5f, + 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x8f, 0x01, 0x0a, 0x21, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, + 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x70, 0x76, 0x34, 0x54, 0x6f, 0x73, 0x4d, 0x6f, 0x6e, 0x65, + 0x74, 0x61, 0x72, 0x79, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x12, 0x19, 0x0a, 0x05, 0x73, + 0x74, 0x61, 0x72, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x00, 0x52, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x88, 0x01, 0x01, 0x12, 0x17, 0x0a, 0x04, 0x73, 0x74, 0x65, 0x70, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, 0x52, 0x04, 0x73, 0x74, 0x65, 0x70, 0x88, 0x01, 0x01, 0x12, + 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x04, 0x73, 0x74, 0x65, 0x70, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x02, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x88, 0x01, 0x01, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x73, 0x74, 0x65, 0x70, 0x42, 0x08, 0x0a, - 0x06, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x8f, 0x01, 0x0a, 0x1b, 0x50, 0x61, 0x74, 0x74, - 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x70, 0x76, 0x34, 0x44, 0x73, 0x74, 0x4d, 0x65, - 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x12, 0x17, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x88, 0x01, 0x01, - 0x12, 0x1b, 0x0a, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, - 0x48, 0x01, 0x52, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, - 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x02, 0x52, - 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x88, 0x01, 0x01, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x6e, - 0x61, 0x6d, 0x65, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x42, 0x09, - 0x0a, 0x07, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x22, 0xb5, 0x03, 0x0a, 0x12, 0x50, 0x61, - 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x70, 0x76, 0x34, 0x44, 0x73, 0x74, - 0x12, 0x40, 0x0a, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, - 0x32, 0x23, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, - 0x6f, 0x77, 0x49, 0x70, 0x76, 0x34, 0x44, 0x73, 0x74, 0x2e, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, - 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x48, 0x00, 0x52, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x88, - 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x09, 0x48, 0x01, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x88, 0x01, 0x01, 0x12, 0x16, 0x0a, - 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x06, 0x76, - 0x61, 0x6c, 0x75, 0x65, 0x73, 0x12, 0x3c, 0x0a, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, - 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, - 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x70, 0x76, 0x34, 0x44, 0x73, - 0x74, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, - 0x65, 0x6e, 0x74, 0x12, 0x3c, 0x0a, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, - 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, - 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x70, 0x76, 0x34, 0x44, 0x73, 0x74, 0x43, - 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, - 0x74, 0x12, 0x41, 0x0a, 0x0b, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x5f, 0x74, 0x61, 0x67, 0x73, - 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, - 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x70, 0x76, 0x34, 0x44, 0x73, 0x74, 0x4d, - 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x52, 0x0a, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, - 0x54, 0x61, 0x67, 0x73, 0x1a, 0x56, 0x0a, 0x06, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x22, 0x4c, - 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x0a, 0x0b, 0x75, 0x6e, 0x73, 0x70, 0x65, 0x63, - 0x69, 0x66, 0x69, 0x65, 0x64, 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, - 0x10, 0x02, 0x12, 0x0a, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x10, 0x03, 0x12, 0x0d, - 0x0a, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x10, 0x04, 0x12, 0x0d, 0x0a, - 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x10, 0x05, 0x42, 0x09, 0x0a, 0x07, - 0x5f, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x76, 0x61, 0x6c, 0x75, - 0x65, 0x22, 0x8f, 0x01, 0x0a, 0x21, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, - 0x77, 0x49, 0x70, 0x76, 0x34, 0x50, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x52, 0x61, 0x77, - 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x12, 0x19, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x00, 0x52, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x88, - 0x01, 0x01, 0x12, 0x17, 0x0a, 0x04, 0x73, 0x74, 0x65, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, - 0x48, 0x01, 0x52, 0x04, 0x73, 0x74, 0x65, 0x70, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x63, - 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x02, 0x52, 0x05, 0x63, 0x6f, - 0x75, 0x6e, 0x74, 0x88, 0x01, 0x01, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, - 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x73, 0x74, 0x65, 0x70, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x63, 0x6f, - 0x75, 0x6e, 0x74, 0x22, 0x97, 0x01, 0x0a, 0x23, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, - 0x6c, 0x6f, 0x77, 0x49, 0x70, 0x76, 0x34, 0x50, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x52, - 0x61, 0x77, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x12, 0x17, 0x0a, 0x04, 0x6e, - 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x04, 0x6e, 0x61, 0x6d, - 0x65, 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x88, 0x01, - 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x0d, 0x48, 0x02, 0x52, 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x88, 0x01, 0x01, 0x42, 0x07, - 0x0a, 0x05, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6f, 0x66, 0x66, 0x73, - 0x65, 0x74, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x22, 0xdd, 0x03, - 0x0a, 0x1a, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x70, 0x76, - 0x34, 0x50, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x52, 0x61, 0x77, 0x12, 0x48, 0x0a, 0x06, - 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2b, 0x2e, 0x6f, - 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x70, - 0x76, 0x34, 0x50, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x52, 0x61, 0x77, 0x2e, 0x43, 0x68, - 0x6f, 0x69, 0x63, 0x65, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x48, 0x00, 0x52, 0x06, 0x63, 0x68, 0x6f, - 0x69, 0x63, 0x65, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x88, 0x01, - 0x01, 0x12, 0x16, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, - 0x0d, 0x52, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x12, 0x44, 0x0a, 0x09, 0x69, 0x6e, 0x63, - 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x6f, - 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x70, - 0x76, 0x34, 0x50, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x52, 0x61, 0x77, 0x43, 0x6f, 0x75, - 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, - 0x44, 0x0a, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, - 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x70, 0x76, 0x34, 0x50, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, - 0x52, 0x61, 0x77, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, 0x64, 0x65, 0x63, 0x72, - 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x49, 0x0a, 0x0b, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x5f, - 0x74, 0x61, 0x67, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x6f, 0x74, 0x67, - 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x70, 0x76, 0x34, - 0x50, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x52, 0x61, 0x77, 0x4d, 0x65, 0x74, 0x72, 0x69, - 0x63, 0x54, 0x61, 0x67, 0x52, 0x0a, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x73, - 0x1a, 0x56, 0x0a, 0x06, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x22, 0x4c, 0x0a, 0x04, 0x45, 0x6e, - 0x75, 0x6d, 0x12, 0x0f, 0x0a, 0x0b, 0x75, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, - 0x64, 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x10, 0x02, 0x12, 0x0a, - 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x10, 0x03, 0x12, 0x0d, 0x0a, 0x09, 0x69, 0x6e, - 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x10, 0x04, 0x12, 0x0d, 0x0a, 0x09, 0x64, 0x65, 0x63, - 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x10, 0x05, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x63, 0x68, 0x6f, - 0x69, 0x63, 0x65, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x8b, 0x01, - 0x0a, 0x1d, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x70, 0x76, - 0x34, 0x44, 0x73, 0x63, 0x70, 0x50, 0x68, 0x62, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x12, - 0x19, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x00, - 0x52, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x88, 0x01, 0x01, 0x12, 0x17, 0x0a, 0x04, 0x73, 0x74, - 0x65, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x04, 0x73, 0x74, 0x65, 0x70, - 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x0d, 0x48, 0x02, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x88, 0x01, 0x01, 0x42, 0x08, - 0x0a, 0x06, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x73, 0x74, 0x65, - 0x70, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x93, 0x01, 0x0a, 0x1f, - 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x70, 0x76, 0x34, 0x44, - 0x73, 0x63, 0x70, 0x50, 0x68, 0x62, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x12, - 0x17, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, - 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x6f, 0x66, 0x66, 0x73, - 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x06, 0x6f, 0x66, 0x66, 0x73, - 0x65, 0x74, 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x02, 0x52, 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x88, - 0x01, 0x01, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x42, 0x09, 0x0a, 0x07, 0x5f, - 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, - 0x68, 0x22, 0xc9, 0x03, 0x0a, 0x16, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, - 0x77, 0x49, 0x70, 0x76, 0x34, 0x44, 0x73, 0x63, 0x70, 0x50, 0x68, 0x62, 0x12, 0x44, 0x0a, 0x06, - 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x27, 0x2e, 0x6f, - 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x70, - 0x76, 0x34, 0x44, 0x73, 0x63, 0x70, 0x50, 0x68, 0x62, 0x2e, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, - 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x48, 0x00, 0x52, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x88, - 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x0d, 0x48, 0x01, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x88, 0x01, 0x01, 0x12, 0x16, 0x0a, - 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0d, 0x52, 0x06, 0x76, - 0x61, 0x6c, 0x75, 0x65, 0x73, 0x12, 0x40, 0x0a, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, - 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, - 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x70, 0x76, 0x34, 0x44, 0x73, - 0x63, 0x70, 0x50, 0x68, 0x62, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, 0x69, 0x6e, - 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x40, 0x0a, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, - 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x6f, 0x74, 0x67, - 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x70, 0x76, 0x34, - 0x44, 0x73, 0x63, 0x70, 0x50, 0x68, 0x62, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, - 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x45, 0x0a, 0x0b, 0x6d, 0x65, 0x74, - 0x72, 0x69, 0x63, 0x5f, 0x74, 0x61, 0x67, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, - 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, - 0x49, 0x70, 0x76, 0x34, 0x44, 0x73, 0x63, 0x70, 0x50, 0x68, 0x62, 0x4d, 0x65, 0x74, 0x72, 0x69, - 0x63, 0x54, 0x61, 0x67, 0x52, 0x0a, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x73, - 0x1a, 0x56, 0x0a, 0x06, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x22, 0x4c, 0x0a, 0x04, 0x45, 0x6e, - 0x75, 0x6d, 0x12, 0x0f, 0x0a, 0x0b, 0x75, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, - 0x64, 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x10, 0x02, 0x12, 0x0a, - 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x10, 0x03, 0x12, 0x0d, 0x0a, 0x09, 0x69, 0x6e, - 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x10, 0x04, 0x12, 0x0d, 0x0a, 0x09, 0x64, 0x65, 0x63, - 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x10, 0x05, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x63, 0x68, 0x6f, - 0x69, 0x63, 0x65, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x8b, 0x01, - 0x0a, 0x1d, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x70, 0x76, - 0x34, 0x44, 0x73, 0x63, 0x70, 0x45, 0x63, 0x6e, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x12, - 0x19, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x00, - 0x52, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x88, 0x01, 0x01, 0x12, 0x17, 0x0a, 0x04, 0x73, 0x74, - 0x65, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x04, 0x73, 0x74, 0x65, 0x70, - 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x0d, 0x48, 0x02, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x88, 0x01, 0x01, 0x42, 0x08, - 0x0a, 0x06, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x73, 0x74, 0x65, - 0x70, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x93, 0x01, 0x0a, 0x1f, - 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x70, 0x76, 0x34, 0x44, - 0x73, 0x63, 0x70, 0x45, 0x63, 0x6e, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x12, + 0x06, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x97, 0x01, 0x0a, 0x23, 0x50, 0x61, 0x74, 0x74, + 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x70, 0x76, 0x34, 0x54, 0x6f, 0x73, 0x4d, 0x6f, + 0x6e, 0x65, 0x74, 0x61, 0x72, 0x79, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x12, 0x17, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x06, 0x6f, 0x66, 0x66, 0x73, @@ -101824,37 +117003,38 @@ var file_otg_proto_rawDesc = []byte{ 0x03, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x02, 0x52, 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x88, 0x01, 0x01, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, - 0x68, 0x22, 0xc9, 0x03, 0x0a, 0x16, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, - 0x77, 0x49, 0x70, 0x76, 0x34, 0x44, 0x73, 0x63, 0x70, 0x45, 0x63, 0x6e, 0x12, 0x44, 0x0a, 0x06, - 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x27, 0x2e, 0x6f, - 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x70, - 0x76, 0x34, 0x44, 0x73, 0x63, 0x70, 0x45, 0x63, 0x6e, 0x2e, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, - 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x48, 0x00, 0x52, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x88, - 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x0d, 0x48, 0x01, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x88, 0x01, 0x01, 0x12, 0x16, 0x0a, - 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0d, 0x52, 0x06, 0x76, - 0x61, 0x6c, 0x75, 0x65, 0x73, 0x12, 0x40, 0x0a, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, - 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, - 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x70, 0x76, 0x34, 0x44, 0x73, - 0x63, 0x70, 0x45, 0x63, 0x6e, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, 0x69, 0x6e, - 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x40, 0x0a, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, - 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x6f, 0x74, 0x67, - 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x70, 0x76, 0x34, - 0x44, 0x73, 0x63, 0x70, 0x45, 0x63, 0x6e, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, - 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x45, 0x0a, 0x0b, 0x6d, 0x65, 0x74, - 0x72, 0x69, 0x63, 0x5f, 0x74, 0x61, 0x67, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, + 0x68, 0x22, 0xdd, 0x03, 0x0a, 0x1a, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, + 0x77, 0x49, 0x70, 0x76, 0x34, 0x54, 0x6f, 0x73, 0x4d, 0x6f, 0x6e, 0x65, 0x74, 0x61, 0x72, 0x79, + 0x12, 0x48, 0x0a, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, + 0x32, 0x2b, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, + 0x6f, 0x77, 0x49, 0x70, 0x76, 0x34, 0x54, 0x6f, 0x73, 0x4d, 0x6f, 0x6e, 0x65, 0x74, 0x61, 0x72, + 0x79, 0x2e, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x48, 0x00, 0x52, + 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x76, 0x61, + 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x05, 0x76, 0x61, 0x6c, + 0x75, 0x65, 0x88, 0x01, 0x01, 0x12, 0x16, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, + 0x03, 0x20, 0x03, 0x28, 0x0d, 0x52, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x12, 0x44, 0x0a, + 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x26, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, + 0x6f, 0x77, 0x49, 0x70, 0x76, 0x34, 0x54, 0x6f, 0x73, 0x4d, 0x6f, 0x6e, 0x65, 0x74, 0x61, 0x72, + 0x79, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, + 0x65, 0x6e, 0x74, 0x12, 0x44, 0x0a, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, + 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, + 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x70, 0x76, 0x34, 0x54, 0x6f, 0x73, 0x4d, + 0x6f, 0x6e, 0x65, 0x74, 0x61, 0x72, 0x79, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, + 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x49, 0x0a, 0x0b, 0x6d, 0x65, 0x74, + 0x72, 0x69, 0x63, 0x5f, 0x74, 0x61, 0x67, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, - 0x49, 0x70, 0x76, 0x34, 0x44, 0x73, 0x63, 0x70, 0x45, 0x63, 0x6e, 0x4d, 0x65, 0x74, 0x72, 0x69, - 0x63, 0x54, 0x61, 0x67, 0x52, 0x0a, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x73, - 0x1a, 0x56, 0x0a, 0x06, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x22, 0x4c, 0x0a, 0x04, 0x45, 0x6e, - 0x75, 0x6d, 0x12, 0x0f, 0x0a, 0x0b, 0x75, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, - 0x64, 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x10, 0x02, 0x12, 0x0a, - 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x10, 0x03, 0x12, 0x0d, 0x0a, 0x09, 0x69, 0x6e, - 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x10, 0x04, 0x12, 0x0d, 0x0a, 0x09, 0x64, 0x65, 0x63, - 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x10, 0x05, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x63, 0x68, 0x6f, - 0x69, 0x63, 0x65, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x91, 0x01, - 0x0a, 0x23, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x70, 0x76, - 0x34, 0x54, 0x6f, 0x73, 0x50, 0x72, 0x65, 0x63, 0x65, 0x64, 0x65, 0x6e, 0x63, 0x65, 0x43, 0x6f, + 0x49, 0x70, 0x76, 0x34, 0x54, 0x6f, 0x73, 0x4d, 0x6f, 0x6e, 0x65, 0x74, 0x61, 0x72, 0x79, 0x4d, + 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x52, 0x0a, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, + 0x54, 0x61, 0x67, 0x73, 0x1a, 0x56, 0x0a, 0x06, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x22, 0x4c, + 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x0a, 0x0b, 0x75, 0x6e, 0x73, 0x70, 0x65, 0x63, + 0x69, 0x66, 0x69, 0x65, 0x64, 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, + 0x10, 0x02, 0x12, 0x0a, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x10, 0x03, 0x12, 0x0d, + 0x0a, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x10, 0x04, 0x12, 0x0d, 0x0a, + 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x10, 0x05, 0x42, 0x09, 0x0a, 0x07, + 0x5f, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x76, 0x61, 0x6c, 0x75, + 0x65, 0x22, 0x8d, 0x01, 0x0a, 0x1f, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, + 0x77, 0x49, 0x70, 0x76, 0x34, 0x54, 0x6f, 0x73, 0x55, 0x6e, 0x75, 0x73, 0x65, 0x64, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x12, 0x19, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x00, 0x52, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x88, 0x01, 0x01, 0x12, 0x17, 0x0a, 0x04, 0x73, 0x74, 0x65, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, @@ -101862,96 +117042,143 @@ var file_otg_proto_rawDesc = []byte{ 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x02, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x88, 0x01, 0x01, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x73, 0x74, 0x65, 0x70, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x63, 0x6f, 0x75, 0x6e, - 0x74, 0x22, 0x99, 0x01, 0x0a, 0x25, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, - 0x77, 0x49, 0x70, 0x76, 0x34, 0x54, 0x6f, 0x73, 0x50, 0x72, 0x65, 0x63, 0x65, 0x64, 0x65, 0x6e, - 0x63, 0x65, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x12, 0x17, 0x0a, 0x04, 0x6e, - 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x04, 0x6e, 0x61, 0x6d, - 0x65, 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x88, 0x01, - 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x0d, 0x48, 0x02, 0x52, 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x88, 0x01, 0x01, 0x42, 0x07, - 0x0a, 0x05, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6f, 0x66, 0x66, 0x73, - 0x65, 0x74, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x22, 0xe7, 0x03, - 0x0a, 0x1c, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x70, 0x76, - 0x34, 0x54, 0x6f, 0x73, 0x50, 0x72, 0x65, 0x63, 0x65, 0x64, 0x65, 0x6e, 0x63, 0x65, 0x12, 0x4a, - 0x0a, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2d, - 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, - 0x49, 0x70, 0x76, 0x34, 0x54, 0x6f, 0x73, 0x50, 0x72, 0x65, 0x63, 0x65, 0x64, 0x65, 0x6e, 0x63, - 0x65, 0x2e, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x48, 0x00, 0x52, - 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x76, 0x61, - 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x05, 0x76, 0x61, 0x6c, - 0x75, 0x65, 0x88, 0x01, 0x01, 0x12, 0x16, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, - 0x03, 0x20, 0x03, 0x28, 0x0d, 0x52, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x12, 0x46, 0x0a, - 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x28, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, - 0x6f, 0x77, 0x49, 0x70, 0x76, 0x34, 0x54, 0x6f, 0x73, 0x50, 0x72, 0x65, 0x63, 0x65, 0x64, 0x65, - 0x6e, 0x63, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, 0x69, 0x6e, 0x63, 0x72, - 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x46, 0x0a, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, - 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, + 0x74, 0x22, 0x95, 0x01, 0x0a, 0x21, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, + 0x77, 0x49, 0x70, 0x76, 0x34, 0x54, 0x6f, 0x73, 0x55, 0x6e, 0x75, 0x73, 0x65, 0x64, 0x4d, 0x65, + 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x12, 0x17, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x88, 0x01, 0x01, + 0x12, 0x1b, 0x0a, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, + 0x48, 0x01, 0x52, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, + 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x02, 0x52, + 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x88, 0x01, 0x01, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x6e, + 0x61, 0x6d, 0x65, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x42, 0x09, + 0x0a, 0x07, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x22, 0xd3, 0x03, 0x0a, 0x18, 0x50, 0x61, + 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x70, 0x76, 0x34, 0x54, 0x6f, 0x73, + 0x55, 0x6e, 0x75, 0x73, 0x65, 0x64, 0x12, 0x46, 0x0a, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x29, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, + 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x70, 0x76, 0x34, 0x54, 0x6f, 0x73, 0x55, + 0x6e, 0x75, 0x73, 0x65, 0x64, 0x2e, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x2e, 0x45, 0x6e, 0x75, + 0x6d, 0x48, 0x00, 0x52, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x88, 0x01, 0x01, 0x12, 0x19, + 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, + 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x88, 0x01, 0x01, 0x12, 0x16, 0x0a, 0x06, 0x76, 0x61, 0x6c, + 0x75, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0d, 0x52, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, + 0x73, 0x12, 0x42, 0x0a, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x05, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, + 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x70, 0x76, 0x34, 0x54, 0x6f, 0x73, 0x55, 0x6e, 0x75, + 0x73, 0x65, 0x64, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, 0x69, 0x6e, 0x63, 0x72, + 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x42, 0x0a, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, + 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x70, 0x76, 0x34, 0x54, 0x6f, - 0x73, 0x50, 0x72, 0x65, 0x63, 0x65, 0x64, 0x65, 0x6e, 0x63, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, - 0x65, 0x72, 0x52, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x4b, 0x0a, - 0x0b, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x5f, 0x74, 0x61, 0x67, 0x73, 0x18, 0x07, 0x20, 0x03, - 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, - 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x70, 0x76, 0x34, 0x54, 0x6f, 0x73, 0x50, 0x72, 0x65, 0x63, 0x65, - 0x64, 0x65, 0x6e, 0x63, 0x65, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x52, 0x0a, - 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x73, 0x1a, 0x56, 0x0a, 0x06, 0x43, 0x68, - 0x6f, 0x69, 0x63, 0x65, 0x22, 0x4c, 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x0a, 0x0b, - 0x75, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x10, 0x00, 0x12, 0x09, 0x0a, - 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x10, 0x02, 0x12, 0x0a, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, - 0x65, 0x73, 0x10, 0x03, 0x12, 0x0d, 0x0a, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, - 0x74, 0x10, 0x04, 0x12, 0x0d, 0x0a, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, - 0x10, 0x05, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x42, 0x08, 0x0a, - 0x06, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x8c, 0x01, 0x0a, 0x1e, 0x50, 0x61, 0x74, 0x74, - 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x70, 0x76, 0x34, 0x54, 0x6f, 0x73, 0x44, 0x65, - 0x6c, 0x61, 0x79, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x12, 0x19, 0x0a, 0x05, 0x73, 0x74, - 0x61, 0x72, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x00, 0x52, 0x05, 0x73, 0x74, 0x61, - 0x72, 0x74, 0x88, 0x01, 0x01, 0x12, 0x17, 0x0a, 0x04, 0x73, 0x74, 0x65, 0x70, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x04, 0x73, 0x74, 0x65, 0x70, 0x88, 0x01, 0x01, 0x12, 0x19, - 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x02, 0x52, - 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x88, 0x01, 0x01, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x73, 0x74, - 0x61, 0x72, 0x74, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x73, 0x74, 0x65, 0x70, 0x42, 0x08, 0x0a, 0x06, - 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x94, 0x01, 0x0a, 0x20, 0x50, 0x61, 0x74, 0x74, 0x65, - 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x70, 0x76, 0x34, 0x54, 0x6f, 0x73, 0x44, 0x65, 0x6c, - 0x61, 0x79, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x12, 0x17, 0x0a, 0x04, 0x6e, + 0x73, 0x55, 0x6e, 0x75, 0x73, 0x65, 0x64, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, + 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x47, 0x0a, 0x0b, 0x6d, 0x65, 0x74, + 0x72, 0x69, 0x63, 0x5f, 0x74, 0x61, 0x67, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x26, + 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, + 0x49, 0x70, 0x76, 0x34, 0x54, 0x6f, 0x73, 0x55, 0x6e, 0x75, 0x73, 0x65, 0x64, 0x4d, 0x65, 0x74, + 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x52, 0x0a, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, + 0x67, 0x73, 0x1a, 0x56, 0x0a, 0x06, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x22, 0x4c, 0x0a, 0x04, + 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x0a, 0x0b, 0x75, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, + 0x69, 0x65, 0x64, 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x10, 0x02, + 0x12, 0x0a, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x10, 0x03, 0x12, 0x0d, 0x0a, 0x09, + 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x10, 0x04, 0x12, 0x0d, 0x0a, 0x09, 0x64, + 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x10, 0x05, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x63, + 0x68, 0x6f, 0x69, 0x63, 0x65, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, + 0x8b, 0x01, 0x0a, 0x1d, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, + 0x70, 0x76, 0x36, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, + 0x72, 0x12, 0x19, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, + 0x48, 0x00, 0x52, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x88, 0x01, 0x01, 0x12, 0x17, 0x0a, 0x04, + 0x73, 0x74, 0x65, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x04, 0x73, 0x74, + 0x65, 0x70, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x0d, 0x48, 0x02, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x88, 0x01, 0x01, + 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x73, + 0x74, 0x65, 0x70, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x93, 0x01, + 0x0a, 0x1f, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x70, 0x76, + 0x36, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, + 0x67, 0x12, 0x17, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, + 0x00, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x6f, 0x66, + 0x66, 0x73, 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x06, 0x6f, 0x66, + 0x66, 0x73, 0x65, 0x74, 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, + 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x02, 0x52, 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, + 0x68, 0x88, 0x01, 0x01, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x42, 0x09, 0x0a, + 0x07, 0x5f, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6c, 0x65, 0x6e, + 0x67, 0x74, 0x68, 0x22, 0xc9, 0x03, 0x0a, 0x16, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, + 0x6c, 0x6f, 0x77, 0x49, 0x70, 0x76, 0x36, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x44, + 0x0a, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x27, + 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, + 0x49, 0x70, 0x76, 0x36, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x43, 0x68, 0x6f, 0x69, + 0x63, 0x65, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x48, 0x00, 0x52, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, + 0x65, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x88, 0x01, 0x01, 0x12, + 0x16, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0d, 0x52, + 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x12, 0x40, 0x0a, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, + 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x6f, 0x74, 0x67, + 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x70, 0x76, 0x36, + 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, + 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x40, 0x0a, 0x09, 0x64, 0x65, 0x63, + 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x6f, + 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x70, + 0x76, 0x36, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, + 0x52, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x45, 0x0a, 0x0b, 0x6d, + 0x65, 0x74, 0x72, 0x69, 0x63, 0x5f, 0x74, 0x61, 0x67, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x24, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, + 0x6f, 0x77, 0x49, 0x70, 0x76, 0x36, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x74, + 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x52, 0x0a, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, + 0x67, 0x73, 0x1a, 0x56, 0x0a, 0x06, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x22, 0x4c, 0x0a, 0x04, + 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x0a, 0x0b, 0x75, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, + 0x69, 0x65, 0x64, 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x10, 0x02, + 0x12, 0x0a, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x10, 0x03, 0x12, 0x0d, 0x0a, 0x09, + 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x10, 0x04, 0x12, 0x0d, 0x0a, 0x09, 0x64, + 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x10, 0x05, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x63, + 0x68, 0x6f, 0x69, 0x63, 0x65, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, + 0x90, 0x01, 0x0a, 0x22, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, + 0x70, 0x76, 0x36, 0x54, 0x72, 0x61, 0x66, 0x66, 0x69, 0x63, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x43, + 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x12, 0x19, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x00, 0x52, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x88, 0x01, + 0x01, 0x12, 0x17, 0x0a, 0x04, 0x73, 0x74, 0x65, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, + 0x01, 0x52, 0x04, 0x73, 0x74, 0x65, 0x70, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x63, 0x6f, + 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x02, 0x52, 0x05, 0x63, 0x6f, 0x75, + 0x6e, 0x74, 0x88, 0x01, 0x01, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x42, + 0x07, 0x0a, 0x05, 0x5f, 0x73, 0x74, 0x65, 0x70, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x63, 0x6f, 0x75, + 0x6e, 0x74, 0x22, 0x98, 0x01, 0x0a, 0x24, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, + 0x6f, 0x77, 0x49, 0x70, 0x76, 0x36, 0x54, 0x72, 0x61, 0x66, 0x66, 0x69, 0x63, 0x43, 0x6c, 0x61, + 0x73, 0x73, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x12, 0x17, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x02, 0x52, 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x88, 0x01, 0x01, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6f, 0x66, 0x66, 0x73, - 0x65, 0x74, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x22, 0xce, 0x03, - 0x0a, 0x17, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x70, 0x76, - 0x34, 0x54, 0x6f, 0x73, 0x44, 0x65, 0x6c, 0x61, 0x79, 0x12, 0x45, 0x0a, 0x06, 0x63, 0x68, 0x6f, - 0x69, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x28, 0x2e, 0x6f, 0x74, 0x67, 0x2e, - 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x70, 0x76, 0x34, 0x54, - 0x6f, 0x73, 0x44, 0x65, 0x6c, 0x61, 0x79, 0x2e, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x2e, 0x45, - 0x6e, 0x75, 0x6d, 0x48, 0x00, 0x52, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x88, 0x01, 0x01, - 0x12, 0x19, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, - 0x01, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x88, 0x01, 0x01, 0x12, 0x16, 0x0a, 0x06, 0x76, - 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0d, 0x52, 0x06, 0x76, 0x61, 0x6c, - 0x75, 0x65, 0x73, 0x12, 0x41, 0x0a, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, - 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, - 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x70, 0x76, 0x34, 0x54, 0x6f, 0x73, 0x44, - 0x65, 0x6c, 0x61, 0x79, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, 0x69, 0x6e, 0x63, - 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x41, 0x0a, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, - 0x65, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x6f, 0x74, 0x67, 0x2e, - 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x70, 0x76, 0x34, 0x54, - 0x6f, 0x73, 0x44, 0x65, 0x6c, 0x61, 0x79, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, - 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x46, 0x0a, 0x0b, 0x6d, 0x65, 0x74, - 0x72, 0x69, 0x63, 0x5f, 0x74, 0x61, 0x67, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x25, + 0x65, 0x74, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x22, 0xe2, 0x03, + 0x0a, 0x1b, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x70, 0x76, + 0x36, 0x54, 0x72, 0x61, 0x66, 0x66, 0x69, 0x63, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x12, 0x49, 0x0a, + 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2c, 0x2e, + 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, + 0x70, 0x76, 0x36, 0x54, 0x72, 0x61, 0x66, 0x66, 0x69, 0x63, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x2e, + 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x48, 0x00, 0x52, 0x06, 0x63, + 0x68, 0x6f, 0x69, 0x63, 0x65, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, + 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, + 0x88, 0x01, 0x01, 0x12, 0x16, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x03, 0x20, + 0x03, 0x28, 0x0d, 0x52, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x12, 0x45, 0x0a, 0x09, 0x69, + 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, - 0x49, 0x70, 0x76, 0x34, 0x54, 0x6f, 0x73, 0x44, 0x65, 0x6c, 0x61, 0x79, 0x4d, 0x65, 0x74, 0x72, - 0x69, 0x63, 0x54, 0x61, 0x67, 0x52, 0x0a, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, - 0x73, 0x1a, 0x56, 0x0a, 0x06, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x22, 0x4c, 0x0a, 0x04, 0x45, - 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x0a, 0x0b, 0x75, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, - 0x65, 0x64, 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x10, 0x02, 0x12, - 0x0a, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x10, 0x03, 0x12, 0x0d, 0x0a, 0x09, 0x69, - 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x10, 0x04, 0x12, 0x0d, 0x0a, 0x09, 0x64, 0x65, - 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x10, 0x05, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x63, 0x68, - 0x6f, 0x69, 0x63, 0x65, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x91, - 0x01, 0x0a, 0x23, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x70, - 0x76, 0x34, 0x54, 0x6f, 0x73, 0x54, 0x68, 0x72, 0x6f, 0x75, 0x67, 0x68, 0x70, 0x75, 0x74, 0x43, + 0x49, 0x70, 0x76, 0x36, 0x54, 0x72, 0x61, 0x66, 0x66, 0x69, 0x63, 0x43, 0x6c, 0x61, 0x73, 0x73, + 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, + 0x6e, 0x74, 0x12, 0x45, 0x0a, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, + 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, + 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x70, 0x76, 0x36, 0x54, 0x72, 0x61, 0x66, 0x66, + 0x69, 0x63, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, + 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x4a, 0x0a, 0x0b, 0x6d, 0x65, 0x74, + 0x72, 0x69, 0x63, 0x5f, 0x74, 0x61, 0x67, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x29, + 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, + 0x49, 0x70, 0x76, 0x36, 0x54, 0x72, 0x61, 0x66, 0x66, 0x69, 0x63, 0x43, 0x6c, 0x61, 0x73, 0x73, + 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x52, 0x0a, 0x6d, 0x65, 0x74, 0x72, 0x69, + 0x63, 0x54, 0x61, 0x67, 0x73, 0x1a, 0x56, 0x0a, 0x06, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x22, + 0x4c, 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x0a, 0x0b, 0x75, 0x6e, 0x73, 0x70, 0x65, + 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, + 0x65, 0x10, 0x02, 0x12, 0x0a, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x10, 0x03, 0x12, + 0x0d, 0x0a, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x10, 0x04, 0x12, 0x0d, + 0x0a, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x10, 0x05, 0x42, 0x09, 0x0a, + 0x07, 0x5f, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x76, 0x61, 0x6c, + 0x75, 0x65, 0x22, 0x8d, 0x01, 0x0a, 0x1f, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, + 0x6f, 0x77, 0x49, 0x70, 0x76, 0x36, 0x46, 0x6c, 0x6f, 0x77, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x12, 0x19, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x00, 0x52, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x88, 0x01, 0x01, 0x12, 0x17, 0x0a, 0x04, 0x73, 0x74, 0x65, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, @@ -101959,58 +117186,8 @@ var file_otg_proto_rawDesc = []byte{ 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x02, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x88, 0x01, 0x01, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x73, 0x74, 0x65, 0x70, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x63, 0x6f, 0x75, - 0x6e, 0x74, 0x22, 0x99, 0x01, 0x0a, 0x25, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, - 0x6f, 0x77, 0x49, 0x70, 0x76, 0x34, 0x54, 0x6f, 0x73, 0x54, 0x68, 0x72, 0x6f, 0x75, 0x67, 0x68, - 0x70, 0x75, 0x74, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x12, 0x17, 0x0a, 0x04, - 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x04, 0x6e, 0x61, - 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x88, - 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x0d, 0x48, 0x02, 0x52, 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x88, 0x01, 0x01, 0x42, - 0x07, 0x0a, 0x05, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6f, 0x66, 0x66, - 0x73, 0x65, 0x74, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x22, 0xe7, - 0x03, 0x0a, 0x1c, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x70, - 0x76, 0x34, 0x54, 0x6f, 0x73, 0x54, 0x68, 0x72, 0x6f, 0x75, 0x67, 0x68, 0x70, 0x75, 0x74, 0x12, - 0x4a, 0x0a, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, - 0x2d, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, - 0x77, 0x49, 0x70, 0x76, 0x34, 0x54, 0x6f, 0x73, 0x54, 0x68, 0x72, 0x6f, 0x75, 0x67, 0x68, 0x70, - 0x75, 0x74, 0x2e, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x48, 0x00, - 0x52, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x76, - 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x05, 0x76, 0x61, - 0x6c, 0x75, 0x65, 0x88, 0x01, 0x01, 0x12, 0x16, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, - 0x18, 0x03, 0x20, 0x03, 0x28, 0x0d, 0x52, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x12, 0x46, - 0x0a, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x28, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, - 0x6c, 0x6f, 0x77, 0x49, 0x70, 0x76, 0x34, 0x54, 0x6f, 0x73, 0x54, 0x68, 0x72, 0x6f, 0x75, 0x67, - 0x68, 0x70, 0x75, 0x74, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, 0x69, 0x6e, 0x63, - 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x46, 0x0a, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, - 0x65, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x6f, 0x74, 0x67, 0x2e, - 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x70, 0x76, 0x34, 0x54, - 0x6f, 0x73, 0x54, 0x68, 0x72, 0x6f, 0x75, 0x67, 0x68, 0x70, 0x75, 0x74, 0x43, 0x6f, 0x75, 0x6e, - 0x74, 0x65, 0x72, 0x52, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x4b, - 0x0a, 0x0b, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x5f, 0x74, 0x61, 0x67, 0x73, 0x18, 0x07, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, - 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x70, 0x76, 0x34, 0x54, 0x6f, 0x73, 0x54, 0x68, 0x72, 0x6f, - 0x75, 0x67, 0x68, 0x70, 0x75, 0x74, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x52, - 0x0a, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x73, 0x1a, 0x56, 0x0a, 0x06, 0x43, - 0x68, 0x6f, 0x69, 0x63, 0x65, 0x22, 0x4c, 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x0a, - 0x0b, 0x75, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x10, 0x00, 0x12, 0x09, - 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x10, 0x02, 0x12, 0x0a, 0x0a, 0x06, 0x76, 0x61, 0x6c, - 0x75, 0x65, 0x73, 0x10, 0x03, 0x12, 0x0d, 0x0a, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, - 0x6e, 0x74, 0x10, 0x04, 0x12, 0x0d, 0x0a, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, - 0x74, 0x10, 0x05, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x42, 0x08, - 0x0a, 0x06, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x92, 0x01, 0x0a, 0x24, 0x50, 0x61, 0x74, - 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x70, 0x76, 0x34, 0x54, 0x6f, 0x73, 0x52, - 0x65, 0x6c, 0x69, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, - 0x72, 0x12, 0x19, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, - 0x48, 0x00, 0x52, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x88, 0x01, 0x01, 0x12, 0x17, 0x0a, 0x04, - 0x73, 0x74, 0x65, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x04, 0x73, 0x74, - 0x65, 0x70, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x0d, 0x48, 0x02, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x88, 0x01, 0x01, - 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x73, - 0x74, 0x65, 0x70, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x9a, 0x01, - 0x0a, 0x26, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x70, 0x76, - 0x34, 0x54, 0x6f, 0x73, 0x52, 0x65, 0x6c, 0x69, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x4d, + 0x6e, 0x74, 0x22, 0x95, 0x01, 0x0a, 0x21, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, + 0x6f, 0x77, 0x49, 0x70, 0x76, 0x36, 0x46, 0x6c, 0x6f, 0x77, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x12, 0x17, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, @@ -102018,421 +117195,224 @@ var file_otg_proto_rawDesc = []byte{ 0x0a, 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x02, 0x52, 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x88, 0x01, 0x01, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x42, - 0x09, 0x0a, 0x07, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x22, 0xec, 0x03, 0x0a, 0x1d, 0x50, - 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x70, 0x76, 0x34, 0x54, 0x6f, - 0x73, 0x52, 0x65, 0x6c, 0x69, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x12, 0x4b, 0x0a, 0x06, - 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2e, 0x2e, 0x6f, - 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x70, - 0x76, 0x34, 0x54, 0x6f, 0x73, 0x52, 0x65, 0x6c, 0x69, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, - 0x2e, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x48, 0x00, 0x52, 0x06, - 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x76, 0x61, 0x6c, - 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, - 0x65, 0x88, 0x01, 0x01, 0x12, 0x16, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x03, - 0x20, 0x03, 0x28, 0x0d, 0x52, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x12, 0x47, 0x0a, 0x09, - 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x29, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, - 0x77, 0x49, 0x70, 0x76, 0x34, 0x54, 0x6f, 0x73, 0x52, 0x65, 0x6c, 0x69, 0x61, 0x62, 0x69, 0x6c, - 0x69, 0x74, 0x79, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, 0x69, 0x6e, 0x63, 0x72, - 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x47, 0x0a, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, - 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, - 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x70, 0x76, 0x34, 0x54, 0x6f, - 0x73, 0x52, 0x65, 0x6c, 0x69, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x43, 0x6f, 0x75, 0x6e, - 0x74, 0x65, 0x72, 0x52, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x4c, - 0x0a, 0x0b, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x5f, 0x74, 0x61, 0x67, 0x73, 0x18, 0x07, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, - 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x70, 0x76, 0x34, 0x54, 0x6f, 0x73, 0x52, 0x65, 0x6c, 0x69, - 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, - 0x52, 0x0a, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x73, 0x1a, 0x56, 0x0a, 0x06, - 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x22, 0x4c, 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0f, - 0x0a, 0x0b, 0x75, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x10, 0x00, 0x12, - 0x09, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x10, 0x02, 0x12, 0x0a, 0x0a, 0x06, 0x76, 0x61, - 0x6c, 0x75, 0x65, 0x73, 0x10, 0x03, 0x12, 0x0d, 0x0a, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, - 0x65, 0x6e, 0x74, 0x10, 0x04, 0x12, 0x0d, 0x0a, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, - 0x6e, 0x74, 0x10, 0x05, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x42, - 0x08, 0x0a, 0x06, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x8f, 0x01, 0x0a, 0x21, 0x50, 0x61, - 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x70, 0x76, 0x34, 0x54, 0x6f, 0x73, - 0x4d, 0x6f, 0x6e, 0x65, 0x74, 0x61, 0x72, 0x79, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x12, - 0x19, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x00, - 0x52, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x88, 0x01, 0x01, 0x12, 0x17, 0x0a, 0x04, 0x73, 0x74, - 0x65, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x04, 0x73, 0x74, 0x65, 0x70, - 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x0d, 0x48, 0x02, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x88, 0x01, 0x01, 0x42, 0x08, - 0x0a, 0x06, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x73, 0x74, 0x65, - 0x70, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x97, 0x01, 0x0a, 0x23, - 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x70, 0x76, 0x34, 0x54, - 0x6f, 0x73, 0x4d, 0x6f, 0x6e, 0x65, 0x74, 0x61, 0x72, 0x79, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, - 0x54, 0x61, 0x67, 0x12, 0x17, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x48, 0x00, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, - 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x06, - 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x6c, 0x65, 0x6e, - 0x67, 0x74, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x02, 0x52, 0x06, 0x6c, 0x65, 0x6e, - 0x67, 0x74, 0x68, 0x88, 0x01, 0x01, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x42, - 0x09, 0x0a, 0x07, 0x5f, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6c, - 0x65, 0x6e, 0x67, 0x74, 0x68, 0x22, 0xdd, 0x03, 0x0a, 0x1a, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, - 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x70, 0x76, 0x34, 0x54, 0x6f, 0x73, 0x4d, 0x6f, 0x6e, 0x65, - 0x74, 0x61, 0x72, 0x79, 0x12, 0x48, 0x0a, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2b, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, - 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x70, 0x76, 0x34, 0x54, 0x6f, 0x73, 0x4d, 0x6f, 0x6e, - 0x65, 0x74, 0x61, 0x72, 0x79, 0x2e, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x2e, 0x45, 0x6e, 0x75, - 0x6d, 0x48, 0x00, 0x52, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x88, 0x01, 0x01, 0x12, 0x19, - 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, - 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x88, 0x01, 0x01, 0x12, 0x16, 0x0a, 0x06, 0x76, 0x61, 0x6c, - 0x75, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0d, 0x52, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, - 0x73, 0x12, 0x44, 0x0a, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x05, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, - 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x70, 0x76, 0x34, 0x54, 0x6f, 0x73, 0x4d, 0x6f, 0x6e, - 0x65, 0x74, 0x61, 0x72, 0x79, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, 0x69, 0x6e, - 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x44, 0x0a, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, - 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x6f, 0x74, 0x67, - 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x70, 0x76, 0x34, - 0x54, 0x6f, 0x73, 0x4d, 0x6f, 0x6e, 0x65, 0x74, 0x61, 0x72, 0x79, 0x43, 0x6f, 0x75, 0x6e, 0x74, - 0x65, 0x72, 0x52, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x49, 0x0a, - 0x0b, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x5f, 0x74, 0x61, 0x67, 0x73, 0x18, 0x07, 0x20, 0x03, - 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, - 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x70, 0x76, 0x34, 0x54, 0x6f, 0x73, 0x4d, 0x6f, 0x6e, 0x65, 0x74, - 0x61, 0x72, 0x79, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x52, 0x0a, 0x6d, 0x65, - 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x73, 0x1a, 0x56, 0x0a, 0x06, 0x43, 0x68, 0x6f, 0x69, - 0x63, 0x65, 0x22, 0x4c, 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x0a, 0x0b, 0x75, 0x6e, - 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, 0x76, - 0x61, 0x6c, 0x75, 0x65, 0x10, 0x02, 0x12, 0x0a, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, - 0x10, 0x03, 0x12, 0x0d, 0x0a, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x10, - 0x04, 0x12, 0x0d, 0x0a, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x10, 0x05, - 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x42, 0x08, 0x0a, 0x06, 0x5f, - 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x8d, 0x01, 0x0a, 0x1f, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, - 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x70, 0x76, 0x34, 0x54, 0x6f, 0x73, 0x55, 0x6e, 0x75, 0x73, - 0x65, 0x64, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x12, 0x19, 0x0a, 0x05, 0x73, 0x74, 0x61, - 0x72, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x00, 0x52, 0x05, 0x73, 0x74, 0x61, 0x72, - 0x74, 0x88, 0x01, 0x01, 0x12, 0x17, 0x0a, 0x04, 0x73, 0x74, 0x65, 0x70, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x0d, 0x48, 0x01, 0x52, 0x04, 0x73, 0x74, 0x65, 0x70, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, - 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x02, 0x52, 0x05, - 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x88, 0x01, 0x01, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x73, 0x74, 0x61, - 0x72, 0x74, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x73, 0x74, 0x65, 0x70, 0x42, 0x08, 0x0a, 0x06, 0x5f, - 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x95, 0x01, 0x0a, 0x21, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, - 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x70, 0x76, 0x34, 0x54, 0x6f, 0x73, 0x55, 0x6e, 0x75, 0x73, - 0x65, 0x64, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x12, 0x17, 0x0a, 0x04, 0x6e, - 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x04, 0x6e, 0x61, 0x6d, - 0x65, 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x88, 0x01, - 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x0d, 0x48, 0x02, 0x52, 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x88, 0x01, 0x01, 0x42, 0x07, - 0x0a, 0x05, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6f, 0x66, 0x66, 0x73, - 0x65, 0x74, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x22, 0xd3, 0x03, - 0x0a, 0x18, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x70, 0x76, - 0x34, 0x54, 0x6f, 0x73, 0x55, 0x6e, 0x75, 0x73, 0x65, 0x64, 0x12, 0x46, 0x0a, 0x06, 0x63, 0x68, - 0x6f, 0x69, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x29, 0x2e, 0x6f, 0x74, 0x67, - 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x70, 0x76, 0x34, - 0x54, 0x6f, 0x73, 0x55, 0x6e, 0x75, 0x73, 0x65, 0x64, 0x2e, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, - 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x48, 0x00, 0x52, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x88, - 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x0d, 0x48, 0x01, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x88, 0x01, 0x01, 0x12, 0x16, 0x0a, - 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0d, 0x52, 0x06, 0x76, - 0x61, 0x6c, 0x75, 0x65, 0x73, 0x12, 0x42, 0x0a, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, - 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, - 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x70, 0x76, 0x34, 0x54, 0x6f, - 0x73, 0x55, 0x6e, 0x75, 0x73, 0x65, 0x64, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, - 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x42, 0x0a, 0x09, 0x64, 0x65, 0x63, - 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x6f, + 0x09, 0x0a, 0x07, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x22, 0xd3, 0x03, 0x0a, 0x18, 0x50, + 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x70, 0x76, 0x36, 0x46, 0x6c, + 0x6f, 0x77, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x12, 0x46, 0x0a, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, + 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x29, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, + 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x70, 0x76, 0x36, 0x46, 0x6c, 0x6f, + 0x77, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x2e, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x2e, 0x45, 0x6e, + 0x75, 0x6d, 0x48, 0x00, 0x52, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x88, 0x01, 0x01, 0x12, + 0x19, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, + 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x88, 0x01, 0x01, 0x12, 0x16, 0x0a, 0x06, 0x76, 0x61, + 0x6c, 0x75, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0d, 0x52, 0x06, 0x76, 0x61, 0x6c, 0x75, + 0x65, 0x73, 0x12, 0x42, 0x0a, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, + 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, + 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x70, 0x76, 0x36, 0x46, 0x6c, 0x6f, 0x77, 0x4c, + 0x61, 0x62, 0x65, 0x6c, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, 0x69, 0x6e, 0x63, + 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x42, 0x0a, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, + 0x65, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x6f, 0x74, 0x67, 0x2e, + 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x70, 0x76, 0x36, 0x46, + 0x6c, 0x6f, 0x77, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, + 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x47, 0x0a, 0x0b, 0x6d, 0x65, + 0x74, 0x72, 0x69, 0x63, 0x5f, 0x74, 0x61, 0x67, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x26, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, + 0x77, 0x49, 0x70, 0x76, 0x36, 0x46, 0x6c, 0x6f, 0x77, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x4d, 0x65, + 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x52, 0x0a, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, + 0x61, 0x67, 0x73, 0x1a, 0x56, 0x0a, 0x06, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x22, 0x4c, 0x0a, + 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x0a, 0x0b, 0x75, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, + 0x66, 0x69, 0x65, 0x64, 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x10, + 0x02, 0x12, 0x0a, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x10, 0x03, 0x12, 0x0d, 0x0a, + 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x10, 0x04, 0x12, 0x0d, 0x0a, 0x09, + 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x10, 0x05, 0x42, 0x09, 0x0a, 0x07, 0x5f, + 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, + 0x22, 0x91, 0x01, 0x0a, 0x23, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, + 0x49, 0x70, 0x76, 0x36, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x4c, 0x65, 0x6e, 0x67, 0x74, + 0x68, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x12, 0x19, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x72, + 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x00, 0x52, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, + 0x88, 0x01, 0x01, 0x12, 0x17, 0x0a, 0x04, 0x73, 0x74, 0x65, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x0d, 0x48, 0x01, 0x52, 0x04, 0x73, 0x74, 0x65, 0x70, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, + 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x02, 0x52, 0x05, 0x63, + 0x6f, 0x75, 0x6e, 0x74, 0x88, 0x01, 0x01, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x73, 0x74, 0x61, 0x72, + 0x74, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x73, 0x74, 0x65, 0x70, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x63, + 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x99, 0x01, 0x0a, 0x25, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, + 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x70, 0x76, 0x36, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x4c, + 0x65, 0x6e, 0x67, 0x74, 0x68, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x12, 0x17, + 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x04, + 0x6e, 0x61, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, + 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, + 0x74, 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x0d, 0x48, 0x02, 0x52, 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x88, 0x01, + 0x01, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6f, + 0x66, 0x66, 0x73, 0x65, 0x74, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, + 0x22, 0x93, 0x04, 0x0a, 0x1c, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, + 0x49, 0x70, 0x76, 0x36, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x4c, 0x65, 0x6e, 0x67, 0x74, + 0x68, 0x12, 0x4a, 0x0a, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x0e, 0x32, 0x2d, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, + 0x6c, 0x6f, 0x77, 0x49, 0x70, 0x76, 0x36, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x4c, 0x65, + 0x6e, 0x67, 0x74, 0x68, 0x2e, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x2e, 0x45, 0x6e, 0x75, 0x6d, + 0x48, 0x00, 0x52, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, + 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x05, + 0x76, 0x61, 0x6c, 0x75, 0x65, 0x88, 0x01, 0x01, 0x12, 0x16, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, + 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0d, 0x52, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, + 0x12, 0x17, 0x0a, 0x04, 0x61, 0x75, 0x74, 0x6f, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x02, + 0x52, 0x04, 0x61, 0x75, 0x74, 0x6f, 0x88, 0x01, 0x01, 0x12, 0x46, 0x0a, 0x09, 0x69, 0x6e, 0x63, + 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x70, - 0x76, 0x34, 0x54, 0x6f, 0x73, 0x55, 0x6e, 0x75, 0x73, 0x65, 0x64, 0x43, 0x6f, 0x75, 0x6e, 0x74, - 0x65, 0x72, 0x52, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x47, 0x0a, - 0x0b, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x5f, 0x74, 0x61, 0x67, 0x73, 0x18, 0x07, 0x20, 0x03, - 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, - 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x70, 0x76, 0x34, 0x54, 0x6f, 0x73, 0x55, 0x6e, 0x75, 0x73, 0x65, - 0x64, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x52, 0x0a, 0x6d, 0x65, 0x74, 0x72, - 0x69, 0x63, 0x54, 0x61, 0x67, 0x73, 0x1a, 0x56, 0x0a, 0x06, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, - 0x22, 0x4c, 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x0a, 0x0b, 0x75, 0x6e, 0x73, 0x70, - 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, 0x76, 0x61, 0x6c, - 0x75, 0x65, 0x10, 0x02, 0x12, 0x0a, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x10, 0x03, - 0x12, 0x0d, 0x0a, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x10, 0x04, 0x12, - 0x0d, 0x0a, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x10, 0x05, 0x42, 0x09, - 0x0a, 0x07, 0x5f, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x76, 0x61, - 0x6c, 0x75, 0x65, 0x22, 0x8b, 0x01, 0x0a, 0x1d, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, - 0x6c, 0x6f, 0x77, 0x49, 0x70, 0x76, 0x36, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x43, 0x6f, - 0x75, 0x6e, 0x74, 0x65, 0x72, 0x12, 0x19, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x0d, 0x48, 0x00, 0x52, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x88, 0x01, 0x01, - 0x12, 0x17, 0x0a, 0x04, 0x73, 0x74, 0x65, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, - 0x52, 0x04, 0x73, 0x74, 0x65, 0x70, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x63, 0x6f, 0x75, - 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x02, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, - 0x74, 0x88, 0x01, 0x01, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x42, 0x07, - 0x0a, 0x05, 0x5f, 0x73, 0x74, 0x65, 0x70, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x63, 0x6f, 0x75, 0x6e, - 0x74, 0x22, 0x93, 0x01, 0x0a, 0x1f, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, - 0x77, 0x49, 0x70, 0x76, 0x36, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x74, 0x72, - 0x69, 0x63, 0x54, 0x61, 0x67, 0x12, 0x17, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, 0x1b, - 0x0a, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, - 0x52, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x6c, - 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x02, 0x52, 0x06, 0x6c, - 0x65, 0x6e, 0x67, 0x74, 0x68, 0x88, 0x01, 0x01, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x6e, 0x61, 0x6d, - 0x65, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x42, 0x09, 0x0a, 0x07, - 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x22, 0xc9, 0x03, 0x0a, 0x16, 0x50, 0x61, 0x74, 0x74, - 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x70, 0x76, 0x36, 0x56, 0x65, 0x72, 0x73, 0x69, - 0x6f, 0x6e, 0x12, 0x44, 0x0a, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x0e, 0x32, 0x27, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, - 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x70, 0x76, 0x36, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x2e, - 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x48, 0x00, 0x52, 0x06, 0x63, - 0x68, 0x6f, 0x69, 0x63, 0x65, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, - 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, - 0x88, 0x01, 0x01, 0x12, 0x16, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x03, 0x20, - 0x03, 0x28, 0x0d, 0x52, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x12, 0x40, 0x0a, 0x09, 0x69, - 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, + 0x76, 0x36, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x43, + 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, + 0x74, 0x12, 0x46, 0x0a, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x07, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, + 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x70, 0x76, 0x36, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, + 0x64, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, + 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x4b, 0x0a, 0x0b, 0x6d, 0x65, 0x74, + 0x72, 0x69, 0x63, 0x5f, 0x74, 0x61, 0x67, 0x73, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, - 0x49, 0x70, 0x76, 0x36, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x75, 0x6e, 0x74, - 0x65, 0x72, 0x52, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x40, 0x0a, - 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x22, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, - 0x6f, 0x77, 0x49, 0x70, 0x76, 0x36, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x75, - 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, - 0x45, 0x0a, 0x0b, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x5f, 0x74, 0x61, 0x67, 0x73, 0x18, 0x07, - 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, - 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x70, 0x76, 0x36, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, - 0x6e, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x52, 0x0a, 0x6d, 0x65, 0x74, 0x72, - 0x69, 0x63, 0x54, 0x61, 0x67, 0x73, 0x1a, 0x56, 0x0a, 0x06, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, - 0x22, 0x4c, 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x0a, 0x0b, 0x75, 0x6e, 0x73, 0x70, + 0x49, 0x70, 0x76, 0x36, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x4c, 0x65, 0x6e, 0x67, 0x74, + 0x68, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x52, 0x0a, 0x6d, 0x65, 0x74, 0x72, + 0x69, 0x63, 0x54, 0x61, 0x67, 0x73, 0x1a, 0x60, 0x0a, 0x06, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, + 0x22, 0x56, 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x0a, 0x0b, 0x75, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x10, 0x02, 0x12, 0x0a, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x10, 0x03, - 0x12, 0x0d, 0x0a, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x10, 0x04, 0x12, - 0x0d, 0x0a, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x10, 0x05, 0x42, 0x09, - 0x0a, 0x07, 0x5f, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x76, 0x61, - 0x6c, 0x75, 0x65, 0x22, 0x90, 0x01, 0x0a, 0x22, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, - 0x6c, 0x6f, 0x77, 0x49, 0x70, 0x76, 0x36, 0x54, 0x72, 0x61, 0x66, 0x66, 0x69, 0x63, 0x43, 0x6c, - 0x61, 0x73, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x12, 0x19, 0x0a, 0x05, 0x73, 0x74, - 0x61, 0x72, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x00, 0x52, 0x05, 0x73, 0x74, 0x61, - 0x72, 0x74, 0x88, 0x01, 0x01, 0x12, 0x17, 0x0a, 0x04, 0x73, 0x74, 0x65, 0x70, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x04, 0x73, 0x74, 0x65, 0x70, 0x88, 0x01, 0x01, 0x12, 0x19, - 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x02, 0x52, - 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x88, 0x01, 0x01, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x73, 0x74, - 0x61, 0x72, 0x74, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x73, 0x74, 0x65, 0x70, 0x42, 0x08, 0x0a, 0x06, - 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x98, 0x01, 0x0a, 0x24, 0x50, 0x61, 0x74, 0x74, 0x65, - 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x70, 0x76, 0x36, 0x54, 0x72, 0x61, 0x66, 0x66, 0x69, - 0x63, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x12, - 0x17, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, - 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x6f, 0x66, 0x66, 0x73, - 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x06, 0x6f, 0x66, 0x66, 0x73, - 0x65, 0x74, 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x02, 0x52, 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x88, - 0x01, 0x01, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x42, 0x09, 0x0a, 0x07, 0x5f, - 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, - 0x68, 0x22, 0xe2, 0x03, 0x0a, 0x1b, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, - 0x77, 0x49, 0x70, 0x76, 0x36, 0x54, 0x72, 0x61, 0x66, 0x66, 0x69, 0x63, 0x43, 0x6c, 0x61, 0x73, - 0x73, 0x12, 0x49, 0x0a, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x0e, 0x32, 0x2c, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, - 0x6c, 0x6f, 0x77, 0x49, 0x70, 0x76, 0x36, 0x54, 0x72, 0x61, 0x66, 0x66, 0x69, 0x63, 0x43, 0x6c, - 0x61, 0x73, 0x73, 0x2e, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x48, - 0x00, 0x52, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, - 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x05, 0x76, - 0x61, 0x6c, 0x75, 0x65, 0x88, 0x01, 0x01, 0x12, 0x16, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, - 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0d, 0x52, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x12, - 0x45, 0x0a, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, + 0x12, 0x08, 0x0a, 0x04, 0x61, 0x75, 0x74, 0x6f, 0x10, 0x01, 0x12, 0x0d, 0x0a, 0x09, 0x69, 0x6e, + 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x10, 0x04, 0x12, 0x0d, 0x0a, 0x09, 0x64, 0x65, 0x63, + 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x10, 0x05, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x63, 0x68, 0x6f, + 0x69, 0x63, 0x65, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x07, 0x0a, + 0x05, 0x5f, 0x61, 0x75, 0x74, 0x6f, 0x22, 0x8e, 0x01, 0x0a, 0x20, 0x50, 0x61, 0x74, 0x74, 0x65, + 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x70, 0x76, 0x36, 0x4e, 0x65, 0x78, 0x74, 0x48, 0x65, + 0x61, 0x64, 0x65, 0x72, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x12, 0x19, 0x0a, 0x05, 0x73, + 0x74, 0x61, 0x72, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x00, 0x52, 0x05, 0x73, 0x74, + 0x61, 0x72, 0x74, 0x88, 0x01, 0x01, 0x12, 0x17, 0x0a, 0x04, 0x73, 0x74, 0x65, 0x70, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x04, 0x73, 0x74, 0x65, 0x70, 0x88, 0x01, 0x01, 0x12, + 0x19, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x02, + 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x88, 0x01, 0x01, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x73, + 0x74, 0x61, 0x72, 0x74, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x73, 0x74, 0x65, 0x70, 0x42, 0x08, 0x0a, + 0x06, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x96, 0x01, 0x0a, 0x22, 0x50, 0x61, 0x74, 0x74, + 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x70, 0x76, 0x36, 0x4e, 0x65, 0x78, 0x74, 0x48, + 0x65, 0x61, 0x64, 0x65, 0x72, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x12, 0x17, + 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x04, + 0x6e, 0x61, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, + 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, + 0x74, 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x0d, 0x48, 0x02, 0x52, 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x88, 0x01, + 0x01, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6f, + 0x66, 0x66, 0x73, 0x65, 0x74, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, + 0x22, 0x84, 0x04, 0x0a, 0x19, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, + 0x49, 0x70, 0x76, 0x36, 0x4e, 0x65, 0x78, 0x74, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x12, 0x47, + 0x0a, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2a, + 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, + 0x49, 0x70, 0x76, 0x36, 0x4e, 0x65, 0x78, 0x74, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x2e, 0x43, + 0x68, 0x6f, 0x69, 0x63, 0x65, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x48, 0x00, 0x52, 0x06, 0x63, 0x68, + 0x6f, 0x69, 0x63, 0x65, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x88, + 0x01, 0x01, 0x12, 0x16, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, + 0x28, 0x0d, 0x52, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x12, 0x17, 0x0a, 0x04, 0x61, 0x75, + 0x74, 0x6f, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x02, 0x52, 0x04, 0x61, 0x75, 0x74, 0x6f, + 0x88, 0x01, 0x01, 0x12, 0x43, 0x0a, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, + 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, + 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x70, 0x76, 0x36, 0x4e, 0x65, 0x78, 0x74, + 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, 0x69, + 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x43, 0x0a, 0x09, 0x64, 0x65, 0x63, 0x72, + 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x6f, 0x74, + 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x70, 0x76, + 0x36, 0x4e, 0x65, 0x78, 0x74, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x43, 0x6f, 0x75, 0x6e, 0x74, + 0x65, 0x72, 0x52, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x48, 0x0a, + 0x0b, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x5f, 0x74, 0x61, 0x67, 0x73, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, - 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x70, 0x76, 0x36, 0x54, 0x72, 0x61, 0x66, 0x66, 0x69, 0x63, 0x43, - 0x6c, 0x61, 0x73, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, 0x69, 0x6e, 0x63, - 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x45, 0x0a, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, - 0x65, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x6f, 0x74, 0x67, 0x2e, - 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x70, 0x76, 0x36, 0x54, - 0x72, 0x61, 0x66, 0x66, 0x69, 0x63, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, - 0x65, 0x72, 0x52, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x4a, 0x0a, - 0x0b, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x5f, 0x74, 0x61, 0x67, 0x73, 0x18, 0x07, 0x20, 0x03, - 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, - 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x70, 0x76, 0x36, 0x54, 0x72, 0x61, 0x66, 0x66, 0x69, 0x63, 0x43, - 0x6c, 0x61, 0x73, 0x73, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x52, 0x0a, 0x6d, - 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x73, 0x1a, 0x56, 0x0a, 0x06, 0x43, 0x68, 0x6f, - 0x69, 0x63, 0x65, 0x22, 0x4c, 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x0a, 0x0b, 0x75, - 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, - 0x76, 0x61, 0x6c, 0x75, 0x65, 0x10, 0x02, 0x12, 0x0a, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, - 0x73, 0x10, 0x03, 0x12, 0x0d, 0x0a, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, - 0x10, 0x04, 0x12, 0x0d, 0x0a, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x10, - 0x05, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x42, 0x08, 0x0a, 0x06, - 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x8d, 0x01, 0x0a, 0x1f, 0x50, 0x61, 0x74, 0x74, 0x65, - 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x70, 0x76, 0x36, 0x46, 0x6c, 0x6f, 0x77, 0x4c, 0x61, - 0x62, 0x65, 0x6c, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x12, 0x19, 0x0a, 0x05, 0x73, 0x74, + 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x70, 0x76, 0x36, 0x4e, 0x65, 0x78, 0x74, 0x48, 0x65, 0x61, 0x64, + 0x65, 0x72, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x52, 0x0a, 0x6d, 0x65, 0x74, + 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x73, 0x1a, 0x60, 0x0a, 0x06, 0x43, 0x68, 0x6f, 0x69, 0x63, + 0x65, 0x22, 0x56, 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x0a, 0x0b, 0x75, 0x6e, 0x73, + 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, 0x76, 0x61, + 0x6c, 0x75, 0x65, 0x10, 0x02, 0x12, 0x0a, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x10, + 0x03, 0x12, 0x08, 0x0a, 0x04, 0x61, 0x75, 0x74, 0x6f, 0x10, 0x01, 0x12, 0x0d, 0x0a, 0x09, 0x69, + 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x10, 0x04, 0x12, 0x0d, 0x0a, 0x09, 0x64, 0x65, + 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x10, 0x05, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x63, 0x68, + 0x6f, 0x69, 0x63, 0x65, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x07, + 0x0a, 0x05, 0x5f, 0x61, 0x75, 0x74, 0x6f, 0x22, 0x8c, 0x01, 0x0a, 0x1e, 0x50, 0x61, 0x74, 0x74, + 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x70, 0x76, 0x36, 0x48, 0x6f, 0x70, 0x4c, 0x69, + 0x6d, 0x69, 0x74, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x12, 0x19, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x00, 0x52, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x88, 0x01, 0x01, 0x12, 0x17, 0x0a, 0x04, 0x73, 0x74, 0x65, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x04, 0x73, 0x74, 0x65, 0x70, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x02, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x88, 0x01, 0x01, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x73, 0x74, 0x65, 0x70, 0x42, 0x08, 0x0a, 0x06, - 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x95, 0x01, 0x0a, 0x21, 0x50, 0x61, 0x74, 0x74, 0x65, - 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x70, 0x76, 0x36, 0x46, 0x6c, 0x6f, 0x77, 0x4c, 0x61, - 0x62, 0x65, 0x6c, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x12, 0x17, 0x0a, 0x04, - 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x04, 0x6e, 0x61, - 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x88, - 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x0d, 0x48, 0x02, 0x52, 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x88, 0x01, 0x01, 0x42, - 0x07, 0x0a, 0x05, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6f, 0x66, 0x66, - 0x73, 0x65, 0x74, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x22, 0xd3, - 0x03, 0x0a, 0x18, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x70, - 0x76, 0x36, 0x46, 0x6c, 0x6f, 0x77, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x12, 0x46, 0x0a, 0x06, 0x63, - 0x68, 0x6f, 0x69, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x29, 0x2e, 0x6f, 0x74, - 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x70, 0x76, - 0x36, 0x46, 0x6c, 0x6f, 0x77, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x2e, 0x43, 0x68, 0x6f, 0x69, 0x63, - 0x65, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x48, 0x00, 0x52, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, - 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x0d, 0x48, 0x01, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x88, 0x01, 0x01, 0x12, 0x16, - 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0d, 0x52, 0x06, - 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x12, 0x42, 0x0a, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, - 0x65, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x6f, 0x74, 0x67, 0x2e, - 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x70, 0x76, 0x36, 0x46, - 0x6c, 0x6f, 0x77, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, - 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x42, 0x0a, 0x09, 0x64, 0x65, - 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, - 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, - 0x70, 0x76, 0x36, 0x46, 0x6c, 0x6f, 0x77, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x43, 0x6f, 0x75, 0x6e, - 0x74, 0x65, 0x72, 0x52, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x47, - 0x0a, 0x0b, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x5f, 0x74, 0x61, 0x67, 0x73, 0x18, 0x07, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, - 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x70, 0x76, 0x36, 0x46, 0x6c, 0x6f, 0x77, 0x4c, 0x61, 0x62, - 0x65, 0x6c, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x52, 0x0a, 0x6d, 0x65, 0x74, - 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x73, 0x1a, 0x56, 0x0a, 0x06, 0x43, 0x68, 0x6f, 0x69, 0x63, - 0x65, 0x22, 0x4c, 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x0a, 0x0b, 0x75, 0x6e, 0x73, - 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, 0x76, 0x61, - 0x6c, 0x75, 0x65, 0x10, 0x02, 0x12, 0x0a, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x10, - 0x03, 0x12, 0x0d, 0x0a, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x10, 0x04, - 0x12, 0x0d, 0x0a, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x10, 0x05, 0x42, - 0x09, 0x0a, 0x07, 0x5f, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x76, - 0x61, 0x6c, 0x75, 0x65, 0x22, 0x91, 0x01, 0x0a, 0x23, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, - 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x70, 0x76, 0x36, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x4c, - 0x65, 0x6e, 0x67, 0x74, 0x68, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x12, 0x19, 0x0a, 0x05, - 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x00, 0x52, 0x05, 0x73, - 0x74, 0x61, 0x72, 0x74, 0x88, 0x01, 0x01, 0x12, 0x17, 0x0a, 0x04, 0x73, 0x74, 0x65, 0x70, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x04, 0x73, 0x74, 0x65, 0x70, 0x88, 0x01, 0x01, - 0x12, 0x19, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x48, - 0x02, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x88, 0x01, 0x01, 0x42, 0x08, 0x0a, 0x06, 0x5f, - 0x73, 0x74, 0x61, 0x72, 0x74, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x73, 0x74, 0x65, 0x70, 0x42, 0x08, - 0x0a, 0x06, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x99, 0x01, 0x0a, 0x25, 0x50, 0x61, 0x74, - 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x70, 0x76, 0x36, 0x50, 0x61, 0x79, 0x6c, - 0x6f, 0x61, 0x64, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, - 0x61, 0x67, 0x12, 0x17, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x48, 0x00, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x6f, - 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x06, 0x6f, - 0x66, 0x66, 0x73, 0x65, 0x74, 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x6c, 0x65, 0x6e, 0x67, - 0x74, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x02, 0x52, 0x06, 0x6c, 0x65, 0x6e, 0x67, - 0x74, 0x68, 0x88, 0x01, 0x01, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x42, 0x09, - 0x0a, 0x07, 0x5f, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6c, 0x65, - 0x6e, 0x67, 0x74, 0x68, 0x22, 0x93, 0x04, 0x0a, 0x1c, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, - 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x70, 0x76, 0x36, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x4c, - 0x65, 0x6e, 0x67, 0x74, 0x68, 0x12, 0x4a, 0x0a, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2d, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, - 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x70, 0x76, 0x36, 0x50, 0x61, 0x79, 0x6c, 0x6f, - 0x61, 0x64, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x2e, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x2e, - 0x45, 0x6e, 0x75, 0x6d, 0x48, 0x00, 0x52, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x88, 0x01, - 0x01, 0x12, 0x19, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, - 0x48, 0x01, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x88, 0x01, 0x01, 0x12, 0x16, 0x0a, 0x06, - 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0d, 0x52, 0x06, 0x76, 0x61, - 0x6c, 0x75, 0x65, 0x73, 0x12, 0x17, 0x0a, 0x04, 0x61, 0x75, 0x74, 0x6f, 0x18, 0x04, 0x20, 0x01, - 0x28, 0x0d, 0x48, 0x02, 0x52, 0x04, 0x61, 0x75, 0x74, 0x6f, 0x88, 0x01, 0x01, 0x12, 0x46, 0x0a, - 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x28, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, - 0x6f, 0x77, 0x49, 0x70, 0x76, 0x36, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x4c, 0x65, 0x6e, - 0x67, 0x74, 0x68, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, 0x69, 0x6e, 0x63, 0x72, - 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x46, 0x0a, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, - 0x6e, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, - 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x70, 0x76, 0x36, 0x50, 0x61, - 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x43, 0x6f, 0x75, 0x6e, 0x74, - 0x65, 0x72, 0x52, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x4b, 0x0a, - 0x0b, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x5f, 0x74, 0x61, 0x67, 0x73, 0x18, 0x08, 0x20, 0x03, - 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, - 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x70, 0x76, 0x36, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x4c, - 0x65, 0x6e, 0x67, 0x74, 0x68, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x52, 0x0a, - 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x73, 0x1a, 0x60, 0x0a, 0x06, 0x43, 0x68, - 0x6f, 0x69, 0x63, 0x65, 0x22, 0x56, 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x0a, 0x0b, - 0x75, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x10, 0x00, 0x12, 0x09, 0x0a, - 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x10, 0x02, 0x12, 0x0a, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, - 0x65, 0x73, 0x10, 0x03, 0x12, 0x08, 0x0a, 0x04, 0x61, 0x75, 0x74, 0x6f, 0x10, 0x01, 0x12, 0x0d, - 0x0a, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x10, 0x04, 0x12, 0x0d, 0x0a, - 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x10, 0x05, 0x42, 0x09, 0x0a, 0x07, - 0x5f, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x76, 0x61, 0x6c, 0x75, - 0x65, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x61, 0x75, 0x74, 0x6f, 0x22, 0x8e, 0x01, 0x0a, 0x20, 0x50, - 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x70, 0x76, 0x36, 0x4e, 0x65, - 0x78, 0x74, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x12, - 0x19, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x00, - 0x52, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x88, 0x01, 0x01, 0x12, 0x17, 0x0a, 0x04, 0x73, 0x74, - 0x65, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x04, 0x73, 0x74, 0x65, 0x70, - 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x0d, 0x48, 0x02, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x88, 0x01, 0x01, 0x42, 0x08, - 0x0a, 0x06, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x73, 0x74, 0x65, - 0x70, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x96, 0x01, 0x0a, 0x22, - 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x70, 0x76, 0x36, 0x4e, - 0x65, 0x78, 0x74, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, - 0x61, 0x67, 0x12, 0x17, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x48, 0x00, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x6f, - 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x06, 0x6f, - 0x66, 0x66, 0x73, 0x65, 0x74, 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x6c, 0x65, 0x6e, 0x67, - 0x74, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x02, 0x52, 0x06, 0x6c, 0x65, 0x6e, 0x67, - 0x74, 0x68, 0x88, 0x01, 0x01, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x42, 0x09, - 0x0a, 0x07, 0x5f, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6c, 0x65, - 0x6e, 0x67, 0x74, 0x68, 0x22, 0x84, 0x04, 0x0a, 0x19, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, - 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x70, 0x76, 0x36, 0x4e, 0x65, 0x78, 0x74, 0x48, 0x65, 0x61, 0x64, - 0x65, 0x72, 0x12, 0x47, 0x0a, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x0e, 0x32, 0x2a, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, - 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x70, 0x76, 0x36, 0x4e, 0x65, 0x78, 0x74, 0x48, 0x65, 0x61, 0x64, - 0x65, 0x72, 0x2e, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x48, 0x00, - 0x52, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x76, - 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x05, 0x76, 0x61, - 0x6c, 0x75, 0x65, 0x88, 0x01, 0x01, 0x12, 0x16, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, - 0x18, 0x03, 0x20, 0x03, 0x28, 0x0d, 0x52, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x12, 0x17, - 0x0a, 0x04, 0x61, 0x75, 0x74, 0x6f, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x02, 0x52, 0x04, - 0x61, 0x75, 0x74, 0x6f, 0x88, 0x01, 0x01, 0x12, 0x43, 0x0a, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, - 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x6f, 0x74, 0x67, - 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x70, 0x76, 0x36, - 0x4e, 0x65, 0x78, 0x74, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, - 0x72, 0x52, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x43, 0x0a, 0x09, - 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x25, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, - 0x77, 0x49, 0x70, 0x76, 0x36, 0x4e, 0x65, 0x78, 0x74, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x43, - 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, - 0x74, 0x12, 0x48, 0x0a, 0x0b, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x5f, 0x74, 0x61, 0x67, 0x73, - 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, - 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x70, 0x76, 0x36, 0x4e, 0x65, 0x78, 0x74, - 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x52, - 0x0a, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x73, 0x1a, 0x60, 0x0a, 0x06, 0x43, - 0x68, 0x6f, 0x69, 0x63, 0x65, 0x22, 0x56, 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x0a, - 0x0b, 0x75, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x10, 0x00, 0x12, 0x09, - 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x10, 0x02, 0x12, 0x0a, 0x0a, 0x06, 0x76, 0x61, 0x6c, - 0x75, 0x65, 0x73, 0x10, 0x03, 0x12, 0x08, 0x0a, 0x04, 0x61, 0x75, 0x74, 0x6f, 0x10, 0x01, 0x12, - 0x0d, 0x0a, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x10, 0x04, 0x12, 0x0d, - 0x0a, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x10, 0x05, 0x42, 0x09, 0x0a, - 0x07, 0x5f, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x76, 0x61, 0x6c, - 0x75, 0x65, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x61, 0x75, 0x74, 0x6f, 0x22, 0x8c, 0x01, 0x0a, 0x1e, + 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x94, 0x01, 0x0a, 0x20, 0x50, 0x61, 0x74, 0x74, 0x65, + 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x70, 0x76, 0x36, 0x48, 0x6f, 0x70, 0x4c, 0x69, 0x6d, + 0x69, 0x74, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x12, 0x17, 0x0a, 0x04, 0x6e, + 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x04, 0x6e, 0x61, 0x6d, + 0x65, 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x88, 0x01, + 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x0d, 0x48, 0x02, 0x52, 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x88, 0x01, 0x01, 0x42, 0x07, + 0x0a, 0x05, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6f, 0x66, 0x66, 0x73, + 0x65, 0x74, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x22, 0xce, 0x03, + 0x0a, 0x17, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x70, 0x76, + 0x36, 0x48, 0x6f, 0x70, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x45, 0x0a, 0x06, 0x63, 0x68, 0x6f, + 0x69, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x28, 0x2e, 0x6f, 0x74, 0x67, 0x2e, + 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x70, 0x76, 0x36, 0x48, + 0x6f, 0x70, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x2e, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x2e, 0x45, + 0x6e, 0x75, 0x6d, 0x48, 0x00, 0x52, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x88, 0x01, 0x01, + 0x12, 0x19, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, + 0x01, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x88, 0x01, 0x01, 0x12, 0x16, 0x0a, 0x06, 0x76, + 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0d, 0x52, 0x06, 0x76, 0x61, 0x6c, + 0x75, 0x65, 0x73, 0x12, 0x41, 0x0a, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, + 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, + 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x70, 0x76, 0x36, 0x48, 0x6f, 0x70, 0x4c, + 0x69, 0x6d, 0x69, 0x74, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, 0x69, 0x6e, 0x63, + 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x41, 0x0a, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, + 0x65, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x70, 0x76, 0x36, 0x48, - 0x6f, 0x70, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x12, 0x19, - 0x0a, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x00, 0x52, - 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x88, 0x01, 0x01, 0x12, 0x17, 0x0a, 0x04, 0x73, 0x74, 0x65, - 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x04, 0x73, 0x74, 0x65, 0x70, 0x88, - 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x0d, 0x48, 0x02, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x88, 0x01, 0x01, 0x42, 0x08, 0x0a, - 0x06, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x73, 0x74, 0x65, 0x70, - 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x94, 0x01, 0x0a, 0x20, 0x50, - 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x70, 0x76, 0x36, 0x48, 0x6f, - 0x70, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x12, - 0x17, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, - 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x6f, 0x66, 0x66, 0x73, - 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x06, 0x6f, 0x66, 0x66, 0x73, - 0x65, 0x74, 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x02, 0x52, 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x88, - 0x01, 0x01, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x42, 0x09, 0x0a, 0x07, 0x5f, - 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, - 0x68, 0x22, 0xce, 0x03, 0x0a, 0x17, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, - 0x77, 0x49, 0x70, 0x76, 0x36, 0x48, 0x6f, 0x70, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x45, 0x0a, - 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x28, 0x2e, - 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, - 0x70, 0x76, 0x36, 0x48, 0x6f, 0x70, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x2e, 0x43, 0x68, 0x6f, 0x69, - 0x63, 0x65, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x48, 0x00, 0x52, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, - 0x65, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x88, 0x01, 0x01, 0x12, - 0x16, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0d, 0x52, - 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x12, 0x41, 0x0a, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, - 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x6f, 0x74, 0x67, - 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x70, 0x76, 0x36, - 0x48, 0x6f, 0x70, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, - 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x41, 0x0a, 0x09, 0x64, 0x65, - 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, - 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, - 0x70, 0x76, 0x36, 0x48, 0x6f, 0x70, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x43, 0x6f, 0x75, 0x6e, 0x74, - 0x65, 0x72, 0x52, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x46, 0x0a, - 0x0b, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x5f, 0x74, 0x61, 0x67, 0x73, 0x18, 0x07, 0x20, 0x03, - 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, - 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x70, 0x76, 0x36, 0x48, 0x6f, 0x70, 0x4c, 0x69, 0x6d, 0x69, 0x74, + 0x6f, 0x70, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, + 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x46, 0x0a, 0x0b, 0x6d, 0x65, 0x74, + 0x72, 0x69, 0x63, 0x5f, 0x74, 0x61, 0x67, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x25, + 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, + 0x49, 0x70, 0x76, 0x36, 0x48, 0x6f, 0x70, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x4d, 0x65, 0x74, 0x72, + 0x69, 0x63, 0x54, 0x61, 0x67, 0x52, 0x0a, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, + 0x73, 0x1a, 0x56, 0x0a, 0x06, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x22, 0x4c, 0x0a, 0x04, 0x45, + 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x0a, 0x0b, 0x75, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, + 0x65, 0x64, 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x10, 0x02, 0x12, + 0x0a, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x10, 0x03, 0x12, 0x0d, 0x0a, 0x09, 0x69, + 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x10, 0x04, 0x12, 0x0d, 0x0a, 0x09, 0x64, 0x65, + 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x10, 0x05, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x63, 0x68, + 0x6f, 0x69, 0x63, 0x65, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x87, + 0x01, 0x0a, 0x19, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x70, + 0x76, 0x36, 0x53, 0x72, 0x63, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x12, 0x19, 0x0a, 0x05, + 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x05, 0x73, + 0x74, 0x61, 0x72, 0x74, 0x88, 0x01, 0x01, 0x12, 0x17, 0x0a, 0x04, 0x73, 0x74, 0x65, 0x70, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, 0x52, 0x04, 0x73, 0x74, 0x65, 0x70, 0x88, 0x01, 0x01, + 0x12, 0x19, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x48, + 0x02, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x88, 0x01, 0x01, 0x42, 0x08, 0x0a, 0x06, 0x5f, + 0x73, 0x74, 0x61, 0x72, 0x74, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x73, 0x74, 0x65, 0x70, 0x42, 0x08, + 0x0a, 0x06, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x8f, 0x01, 0x0a, 0x1b, 0x50, 0x61, 0x74, + 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x70, 0x76, 0x36, 0x53, 0x72, 0x63, 0x4d, + 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x12, 0x17, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x88, 0x01, + 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x0d, 0x48, 0x01, 0x52, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x88, 0x01, 0x01, 0x12, 0x1b, + 0x0a, 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x02, + 0x52, 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x88, 0x01, 0x01, 0x42, 0x07, 0x0a, 0x05, 0x5f, + 0x6e, 0x61, 0x6d, 0x65, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x42, + 0x09, 0x0a, 0x07, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x22, 0xb5, 0x03, 0x0a, 0x12, 0x50, + 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x70, 0x76, 0x36, 0x53, 0x72, + 0x63, 0x12, 0x40, 0x0a, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x0e, 0x32, 0x23, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, + 0x6c, 0x6f, 0x77, 0x49, 0x70, 0x76, 0x36, 0x53, 0x72, 0x63, 0x2e, 0x43, 0x68, 0x6f, 0x69, 0x63, + 0x65, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x48, 0x00, 0x52, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, + 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x09, 0x48, 0x01, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x88, 0x01, 0x01, 0x12, 0x16, + 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x06, + 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x12, 0x3c, 0x0a, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, + 0x65, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x6f, 0x74, 0x67, 0x2e, + 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x70, 0x76, 0x36, 0x53, + 0x72, 0x63, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, + 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x3c, 0x0a, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, + 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, + 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x70, 0x76, 0x36, 0x53, 0x72, 0x63, + 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, + 0x6e, 0x74, 0x12, 0x41, 0x0a, 0x0b, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x5f, 0x74, 0x61, 0x67, + 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, + 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x70, 0x76, 0x36, 0x53, 0x72, 0x63, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x52, 0x0a, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x73, 0x1a, 0x56, 0x0a, 0x06, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x22, 0x4c, 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x0a, 0x0b, 0x75, 0x6e, 0x73, 0x70, 0x65, @@ -102442,7 +117422,7 @@ var file_otg_proto_rawDesc = []byte{ 0x0a, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x10, 0x05, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x87, 0x01, 0x0a, 0x19, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, - 0x6f, 0x77, 0x49, 0x70, 0x76, 0x36, 0x53, 0x72, 0x63, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, + 0x6f, 0x77, 0x49, 0x70, 0x76, 0x36, 0x44, 0x73, 0x74, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x12, 0x19, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x88, 0x01, 0x01, 0x12, 0x17, 0x0a, 0x04, 0x73, 0x74, 0x65, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, 0x52, 0x04, 0x73, 0x74, 0x65, @@ -102451,7 +117431,7 @@ var file_otg_proto_rawDesc = []byte{ 0x08, 0x0a, 0x06, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x73, 0x74, 0x65, 0x70, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x8f, 0x01, 0x0a, 0x1b, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x70, 0x76, 0x36, - 0x53, 0x72, 0x63, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x12, 0x17, 0x0a, 0x04, + 0x44, 0x73, 0x74, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x12, 0x17, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x88, @@ -102460,9 +117440,9 @@ var file_otg_proto_rawDesc = []byte{ 0x07, 0x0a, 0x05, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x22, 0xb5, 0x03, 0x0a, 0x12, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x70, - 0x76, 0x36, 0x53, 0x72, 0x63, 0x12, 0x40, 0x0a, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x18, + 0x76, 0x36, 0x44, 0x73, 0x74, 0x12, 0x40, 0x0a, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x23, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, - 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x70, 0x76, 0x36, 0x53, 0x72, 0x63, 0x2e, 0x43, + 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x70, 0x76, 0x36, 0x44, 0x73, 0x74, 0x2e, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x48, 0x00, 0x52, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x88, @@ -102470,15 +117450,15 @@ var file_otg_proto_rawDesc = []byte{ 0x28, 0x09, 0x52, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x12, 0x3c, 0x0a, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, - 0x70, 0x76, 0x36, 0x53, 0x72, 0x63, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, 0x69, + 0x70, 0x76, 0x36, 0x44, 0x73, 0x74, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x3c, 0x0a, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x70, 0x76, - 0x36, 0x53, 0x72, 0x63, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, 0x64, 0x65, 0x63, + 0x36, 0x44, 0x73, 0x74, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x41, 0x0a, 0x0b, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x5f, 0x74, 0x61, 0x67, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x70, 0x76, - 0x36, 0x53, 0x72, 0x63, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x52, 0x0a, 0x6d, + 0x36, 0x44, 0x73, 0x74, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x52, 0x0a, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x73, 0x1a, 0x56, 0x0a, 0x06, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x22, 0x4c, 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x0a, 0x0b, 0x75, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, @@ -102486,157 +117466,17 @@ var file_otg_proto_rawDesc = []byte{ 0x73, 0x10, 0x03, 0x12, 0x0d, 0x0a, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x10, 0x04, 0x12, 0x0d, 0x0a, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x10, 0x05, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x42, 0x08, 0x0a, 0x06, - 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x87, 0x01, 0x0a, 0x19, 0x50, 0x61, 0x74, 0x74, 0x65, - 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x70, 0x76, 0x36, 0x44, 0x73, 0x74, 0x43, 0x6f, 0x75, - 0x6e, 0x74, 0x65, 0x72, 0x12, 0x19, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x88, 0x01, 0x01, 0x12, - 0x17, 0x0a, 0x04, 0x73, 0x74, 0x65, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, 0x52, - 0x04, 0x73, 0x74, 0x65, 0x70, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, - 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x02, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, - 0x88, 0x01, 0x01, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x42, 0x07, 0x0a, - 0x05, 0x5f, 0x73, 0x74, 0x65, 0x70, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, - 0x22, 0x8f, 0x01, 0x0a, 0x1b, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, - 0x49, 0x70, 0x76, 0x36, 0x44, 0x73, 0x74, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, - 0x12, 0x17, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, - 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x6f, 0x66, 0x66, - 0x73, 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x06, 0x6f, 0x66, 0x66, - 0x73, 0x65, 0x74, 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x02, 0x52, 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, - 0x88, 0x01, 0x01, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x42, 0x09, 0x0a, 0x07, - 0x5f, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6c, 0x65, 0x6e, 0x67, - 0x74, 0x68, 0x22, 0xb5, 0x03, 0x0a, 0x12, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, - 0x6f, 0x77, 0x49, 0x70, 0x76, 0x36, 0x44, 0x73, 0x74, 0x12, 0x40, 0x0a, 0x06, 0x63, 0x68, 0x6f, - 0x69, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x23, 0x2e, 0x6f, 0x74, 0x67, 0x2e, - 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x70, 0x76, 0x36, 0x44, - 0x73, 0x74, 0x2e, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x48, 0x00, - 0x52, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x76, - 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, 0x52, 0x05, 0x76, 0x61, - 0x6c, 0x75, 0x65, 0x88, 0x01, 0x01, 0x12, 0x16, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, - 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x12, 0x3c, - 0x0a, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x1e, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, - 0x6c, 0x6f, 0x77, 0x49, 0x70, 0x76, 0x36, 0x44, 0x73, 0x74, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, - 0x72, 0x52, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x3c, 0x0a, 0x09, - 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x1e, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, - 0x77, 0x49, 0x70, 0x76, 0x36, 0x44, 0x73, 0x74, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, - 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x41, 0x0a, 0x0b, 0x6d, 0x65, - 0x74, 0x72, 0x69, 0x63, 0x5f, 0x74, 0x61, 0x67, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, - 0x20, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, - 0x77, 0x49, 0x70, 0x76, 0x36, 0x44, 0x73, 0x74, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, - 0x67, 0x52, 0x0a, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x73, 0x1a, 0x56, 0x0a, - 0x06, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x22, 0x4c, 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, - 0x0f, 0x0a, 0x0b, 0x75, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x10, 0x00, - 0x12, 0x09, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x10, 0x02, 0x12, 0x0a, 0x0a, 0x06, 0x76, - 0x61, 0x6c, 0x75, 0x65, 0x73, 0x10, 0x03, 0x12, 0x0d, 0x0a, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, - 0x6d, 0x65, 0x6e, 0x74, 0x10, 0x04, 0x12, 0x0d, 0x0a, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, - 0x65, 0x6e, 0x74, 0x10, 0x05, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, - 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x8b, 0x01, 0x0a, 0x1d, 0x50, - 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x50, 0x66, 0x63, 0x50, 0x61, 0x75, - 0x73, 0x65, 0x44, 0x73, 0x74, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x12, 0x19, 0x0a, 0x05, - 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x05, 0x73, - 0x74, 0x61, 0x72, 0x74, 0x88, 0x01, 0x01, 0x12, 0x17, 0x0a, 0x04, 0x73, 0x74, 0x65, 0x70, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, 0x52, 0x04, 0x73, 0x74, 0x65, 0x70, 0x88, 0x01, 0x01, - 0x12, 0x19, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x48, - 0x02, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x88, 0x01, 0x01, 0x42, 0x08, 0x0a, 0x06, 0x5f, - 0x73, 0x74, 0x61, 0x72, 0x74, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x73, 0x74, 0x65, 0x70, 0x42, 0x08, - 0x0a, 0x06, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x93, 0x01, 0x0a, 0x1f, 0x50, 0x61, 0x74, - 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x50, 0x66, 0x63, 0x50, 0x61, 0x75, 0x73, 0x65, - 0x44, 0x73, 0x74, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x12, 0x17, 0x0a, 0x04, - 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x04, 0x6e, 0x61, - 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x88, - 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x0d, 0x48, 0x02, 0x52, 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x88, 0x01, 0x01, 0x42, - 0x07, 0x0a, 0x05, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6f, 0x66, 0x66, - 0x73, 0x65, 0x74, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x22, 0xc9, - 0x03, 0x0a, 0x16, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x50, 0x66, - 0x63, 0x50, 0x61, 0x75, 0x73, 0x65, 0x44, 0x73, 0x74, 0x12, 0x44, 0x0a, 0x06, 0x63, 0x68, 0x6f, - 0x69, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x27, 0x2e, 0x6f, 0x74, 0x67, 0x2e, - 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x50, 0x66, 0x63, 0x50, 0x61, - 0x75, 0x73, 0x65, 0x44, 0x73, 0x74, 0x2e, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x2e, 0x45, 0x6e, - 0x75, 0x6d, 0x48, 0x00, 0x52, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x88, 0x01, 0x01, 0x12, - 0x19, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, - 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x88, 0x01, 0x01, 0x12, 0x16, 0x0a, 0x06, 0x76, 0x61, - 0x6c, 0x75, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x06, 0x76, 0x61, 0x6c, 0x75, - 0x65, 0x73, 0x12, 0x40, 0x0a, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, - 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, - 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x50, 0x66, 0x63, 0x50, 0x61, 0x75, 0x73, 0x65, 0x44, - 0x73, 0x74, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, - 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x40, 0x0a, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, - 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, - 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x50, 0x66, 0x63, 0x50, 0x61, 0x75, 0x73, - 0x65, 0x44, 0x73, 0x74, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, 0x64, 0x65, 0x63, - 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x45, 0x0a, 0x0b, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, - 0x5f, 0x74, 0x61, 0x67, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x6f, 0x74, - 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x50, 0x66, 0x63, - 0x50, 0x61, 0x75, 0x73, 0x65, 0x44, 0x73, 0x74, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, - 0x67, 0x52, 0x0a, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x73, 0x1a, 0x56, 0x0a, - 0x06, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x22, 0x4c, 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, - 0x0f, 0x0a, 0x0b, 0x75, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x10, 0x00, - 0x12, 0x09, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x10, 0x02, 0x12, 0x0a, 0x0a, 0x06, 0x76, - 0x61, 0x6c, 0x75, 0x65, 0x73, 0x10, 0x03, 0x12, 0x0d, 0x0a, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, - 0x6d, 0x65, 0x6e, 0x74, 0x10, 0x04, 0x12, 0x0d, 0x0a, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, - 0x65, 0x6e, 0x74, 0x10, 0x05, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, - 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x8b, 0x01, 0x0a, 0x1d, 0x50, - 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x50, 0x66, 0x63, 0x50, 0x61, 0x75, - 0x73, 0x65, 0x53, 0x72, 0x63, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x12, 0x19, 0x0a, 0x05, - 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x05, 0x73, - 0x74, 0x61, 0x72, 0x74, 0x88, 0x01, 0x01, 0x12, 0x17, 0x0a, 0x04, 0x73, 0x74, 0x65, 0x70, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, 0x52, 0x04, 0x73, 0x74, 0x65, 0x70, 0x88, 0x01, 0x01, - 0x12, 0x19, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x48, - 0x02, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x88, 0x01, 0x01, 0x42, 0x08, 0x0a, 0x06, 0x5f, - 0x73, 0x74, 0x61, 0x72, 0x74, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x73, 0x74, 0x65, 0x70, 0x42, 0x08, - 0x0a, 0x06, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x93, 0x01, 0x0a, 0x1f, 0x50, 0x61, 0x74, - 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x50, 0x66, 0x63, 0x50, 0x61, 0x75, 0x73, 0x65, - 0x53, 0x72, 0x63, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x12, 0x17, 0x0a, 0x04, - 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x04, 0x6e, 0x61, - 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x88, - 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x0d, 0x48, 0x02, 0x52, 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x88, 0x01, 0x01, 0x42, - 0x07, 0x0a, 0x05, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6f, 0x66, 0x66, - 0x73, 0x65, 0x74, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x22, 0xc9, - 0x03, 0x0a, 0x16, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x50, 0x66, - 0x63, 0x50, 0x61, 0x75, 0x73, 0x65, 0x53, 0x72, 0x63, 0x12, 0x44, 0x0a, 0x06, 0x63, 0x68, 0x6f, - 0x69, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x27, 0x2e, 0x6f, 0x74, 0x67, 0x2e, - 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x50, 0x66, 0x63, 0x50, 0x61, - 0x75, 0x73, 0x65, 0x53, 0x72, 0x63, 0x2e, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x2e, 0x45, 0x6e, - 0x75, 0x6d, 0x48, 0x00, 0x52, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x88, 0x01, 0x01, 0x12, - 0x19, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, - 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x88, 0x01, 0x01, 0x12, 0x16, 0x0a, 0x06, 0x76, 0x61, - 0x6c, 0x75, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x06, 0x76, 0x61, 0x6c, 0x75, - 0x65, 0x73, 0x12, 0x40, 0x0a, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, - 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, - 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x50, 0x66, 0x63, 0x50, 0x61, 0x75, 0x73, 0x65, 0x53, - 0x72, 0x63, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, - 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x40, 0x0a, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, - 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, - 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x50, 0x66, 0x63, 0x50, 0x61, 0x75, 0x73, - 0x65, 0x53, 0x72, 0x63, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, 0x64, 0x65, 0x63, - 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x45, 0x0a, 0x0b, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, - 0x5f, 0x74, 0x61, 0x67, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x6f, 0x74, - 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x50, 0x66, 0x63, - 0x50, 0x61, 0x75, 0x73, 0x65, 0x53, 0x72, 0x63, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, - 0x67, 0x52, 0x0a, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x73, 0x1a, 0x56, 0x0a, - 0x06, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x22, 0x4c, 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, - 0x0f, 0x0a, 0x0b, 0x75, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x10, 0x00, - 0x12, 0x09, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x10, 0x02, 0x12, 0x0a, 0x0a, 0x06, 0x76, - 0x61, 0x6c, 0x75, 0x65, 0x73, 0x10, 0x03, 0x12, 0x0d, 0x0a, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, - 0x6d, 0x65, 0x6e, 0x74, 0x10, 0x04, 0x12, 0x0d, 0x0a, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, - 0x65, 0x6e, 0x74, 0x10, 0x05, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, - 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x91, 0x01, 0x0a, 0x23, 0x50, - 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x50, 0x66, 0x63, 0x50, 0x61, 0x75, - 0x73, 0x65, 0x45, 0x74, 0x68, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, - 0x65, 0x72, 0x12, 0x19, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x0d, 0x48, 0x00, 0x52, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x88, 0x01, 0x01, 0x12, 0x17, 0x0a, - 0x04, 0x73, 0x74, 0x65, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x04, 0x73, - 0x74, 0x65, 0x70, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x02, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x88, 0x01, - 0x01, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x42, 0x07, 0x0a, 0x05, 0x5f, - 0x73, 0x74, 0x65, 0x70, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x99, - 0x01, 0x0a, 0x25, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x50, 0x66, - 0x63, 0x50, 0x61, 0x75, 0x73, 0x65, 0x45, 0x74, 0x68, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x4d, + 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x8b, 0x01, 0x0a, 0x1d, 0x50, 0x61, 0x74, 0x74, 0x65, + 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x50, 0x66, 0x63, 0x50, 0x61, 0x75, 0x73, 0x65, 0x44, 0x73, + 0x74, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x12, 0x19, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x72, + 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, + 0x88, 0x01, 0x01, 0x12, 0x17, 0x0a, 0x04, 0x73, 0x74, 0x65, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x09, 0x48, 0x01, 0x52, 0x04, 0x73, 0x74, 0x65, 0x70, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, + 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x02, 0x52, 0x05, 0x63, + 0x6f, 0x75, 0x6e, 0x74, 0x88, 0x01, 0x01, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x73, 0x74, 0x61, 0x72, + 0x74, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x73, 0x74, 0x65, 0x70, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x63, + 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x93, 0x01, 0x0a, 0x1f, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, + 0x46, 0x6c, 0x6f, 0x77, 0x50, 0x66, 0x63, 0x50, 0x61, 0x75, 0x73, 0x65, 0x44, 0x73, 0x74, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x12, 0x17, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, @@ -102644,101 +117484,46 @@ var file_otg_proto_rawDesc = []byte{ 0x0a, 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x02, 0x52, 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x88, 0x01, 0x01, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x42, - 0x09, 0x0a, 0x07, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x22, 0xe7, 0x03, 0x0a, 0x1c, 0x50, + 0x09, 0x0a, 0x07, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x22, 0xc9, 0x03, 0x0a, 0x16, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x50, 0x66, 0x63, 0x50, 0x61, 0x75, - 0x73, 0x65, 0x45, 0x74, 0x68, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x12, 0x4a, 0x0a, 0x06, 0x63, - 0x68, 0x6f, 0x69, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2d, 0x2e, 0x6f, 0x74, - 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x50, 0x66, 0x63, - 0x50, 0x61, 0x75, 0x73, 0x65, 0x45, 0x74, 0x68, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x2e, 0x43, - 0x68, 0x6f, 0x69, 0x63, 0x65, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x48, 0x00, 0x52, 0x06, 0x63, 0x68, - 0x6f, 0x69, 0x63, 0x65, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x88, - 0x01, 0x01, 0x12, 0x16, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, - 0x28, 0x0d, 0x52, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x12, 0x46, 0x0a, 0x09, 0x69, 0x6e, - 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, - 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x50, - 0x66, 0x63, 0x50, 0x61, 0x75, 0x73, 0x65, 0x45, 0x74, 0x68, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, - 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, - 0x6e, 0x74, 0x12, 0x46, 0x0a, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, - 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, - 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x50, 0x66, 0x63, 0x50, 0x61, 0x75, 0x73, 0x65, 0x45, - 0x74, 0x68, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, - 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x4b, 0x0a, 0x0b, 0x6d, 0x65, - 0x74, 0x72, 0x69, 0x63, 0x5f, 0x74, 0x61, 0x67, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, - 0x2a, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, - 0x77, 0x50, 0x66, 0x63, 0x50, 0x61, 0x75, 0x73, 0x65, 0x45, 0x74, 0x68, 0x65, 0x72, 0x54, 0x79, - 0x70, 0x65, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x52, 0x0a, 0x6d, 0x65, 0x74, - 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x73, 0x1a, 0x56, 0x0a, 0x06, 0x43, 0x68, 0x6f, 0x69, 0x63, - 0x65, 0x22, 0x4c, 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x0a, 0x0b, 0x75, 0x6e, 0x73, - 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, 0x76, 0x61, - 0x6c, 0x75, 0x65, 0x10, 0x02, 0x12, 0x0a, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x10, - 0x03, 0x12, 0x0d, 0x0a, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x10, 0x04, - 0x12, 0x0d, 0x0a, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x10, 0x05, 0x42, - 0x09, 0x0a, 0x07, 0x5f, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x76, - 0x61, 0x6c, 0x75, 0x65, 0x22, 0x95, 0x01, 0x0a, 0x27, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, - 0x46, 0x6c, 0x6f, 0x77, 0x50, 0x66, 0x63, 0x50, 0x61, 0x75, 0x73, 0x65, 0x43, 0x6f, 0x6e, 0x74, - 0x72, 0x6f, 0x6c, 0x4f, 0x70, 0x43, 0x6f, 0x64, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, - 0x12, 0x19, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x48, - 0x00, 0x52, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x88, 0x01, 0x01, 0x12, 0x17, 0x0a, 0x04, 0x73, - 0x74, 0x65, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x04, 0x73, 0x74, 0x65, - 0x70, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x0d, 0x48, 0x02, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x88, 0x01, 0x01, 0x42, - 0x08, 0x0a, 0x06, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x73, 0x74, - 0x65, 0x70, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x9d, 0x01, 0x0a, - 0x29, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x50, 0x66, 0x63, 0x50, - 0x61, 0x75, 0x73, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x4f, 0x70, 0x43, 0x6f, 0x64, - 0x65, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x12, 0x17, 0x0a, 0x04, 0x6e, 0x61, - 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, - 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x88, 0x01, 0x01, - 0x12, 0x1b, 0x0a, 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, - 0x48, 0x02, 0x52, 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x88, 0x01, 0x01, 0x42, 0x07, 0x0a, - 0x05, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6f, 0x66, 0x66, 0x73, 0x65, - 0x74, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x22, 0xfb, 0x03, 0x0a, - 0x20, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x50, 0x66, 0x63, 0x50, - 0x61, 0x75, 0x73, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x4f, 0x70, 0x43, 0x6f, 0x64, - 0x65, 0x12, 0x4e, 0x0a, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x0e, 0x32, 0x31, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, - 0x6c, 0x6f, 0x77, 0x50, 0x66, 0x63, 0x50, 0x61, 0x75, 0x73, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x72, - 0x6f, 0x6c, 0x4f, 0x70, 0x43, 0x6f, 0x64, 0x65, 0x2e, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x2e, - 0x45, 0x6e, 0x75, 0x6d, 0x48, 0x00, 0x52, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x88, 0x01, - 0x01, 0x12, 0x19, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, - 0x48, 0x01, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x88, 0x01, 0x01, 0x12, 0x16, 0x0a, 0x06, - 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0d, 0x52, 0x06, 0x76, 0x61, - 0x6c, 0x75, 0x65, 0x73, 0x12, 0x4a, 0x0a, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, - 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, - 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x50, 0x66, 0x63, 0x50, 0x61, 0x75, 0x73, - 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x4f, 0x70, 0x43, 0x6f, 0x64, 0x65, 0x43, 0x6f, + 0x73, 0x65, 0x44, 0x73, 0x74, 0x12, 0x44, 0x0a, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x27, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, + 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x50, 0x66, 0x63, 0x50, 0x61, 0x75, 0x73, 0x65, 0x44, + 0x73, 0x74, 0x2e, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x48, 0x00, + 0x52, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x76, + 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, 0x52, 0x05, 0x76, 0x61, + 0x6c, 0x75, 0x65, 0x88, 0x01, 0x01, 0x12, 0x16, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, + 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x12, 0x40, + 0x0a, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x22, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, + 0x6c, 0x6f, 0x77, 0x50, 0x66, 0x63, 0x50, 0x61, 0x75, 0x73, 0x65, 0x44, 0x73, 0x74, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, - 0x12, 0x4a, 0x0a, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x06, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, - 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x50, 0x66, 0x63, 0x50, 0x61, 0x75, 0x73, 0x65, 0x43, 0x6f, 0x6e, - 0x74, 0x72, 0x6f, 0x6c, 0x4f, 0x70, 0x43, 0x6f, 0x64, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, - 0x72, 0x52, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x4f, 0x0a, 0x0b, - 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x5f, 0x74, 0x61, 0x67, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, - 0x0b, 0x32, 0x2e, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, - 0x6c, 0x6f, 0x77, 0x50, 0x66, 0x63, 0x50, 0x61, 0x75, 0x73, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x72, - 0x6f, 0x6c, 0x4f, 0x70, 0x43, 0x6f, 0x64, 0x65, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, - 0x67, 0x52, 0x0a, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x73, 0x1a, 0x56, 0x0a, - 0x06, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x22, 0x4c, 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, - 0x0f, 0x0a, 0x0b, 0x75, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x10, 0x00, - 0x12, 0x09, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x10, 0x02, 0x12, 0x0a, 0x0a, 0x06, 0x76, - 0x61, 0x6c, 0x75, 0x65, 0x73, 0x10, 0x03, 0x12, 0x0d, 0x0a, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, - 0x6d, 0x65, 0x6e, 0x74, 0x10, 0x04, 0x12, 0x0d, 0x0a, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, - 0x65, 0x6e, 0x74, 0x10, 0x05, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, - 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x99, 0x01, 0x0a, 0x2b, 0x50, - 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x50, 0x66, 0x63, 0x50, 0x61, 0x75, - 0x73, 0x65, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x56, 0x65, 0x63, - 0x74, 0x6f, 0x72, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x12, 0x19, 0x0a, 0x05, 0x73, 0x74, - 0x61, 0x72, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x00, 0x52, 0x05, 0x73, 0x74, 0x61, - 0x72, 0x74, 0x88, 0x01, 0x01, 0x12, 0x17, 0x0a, 0x04, 0x73, 0x74, 0x65, 0x70, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x04, 0x73, 0x74, 0x65, 0x70, 0x88, 0x01, 0x01, 0x12, 0x19, - 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x02, 0x52, - 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x88, 0x01, 0x01, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x73, 0x74, - 0x61, 0x72, 0x74, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x73, 0x74, 0x65, 0x70, 0x42, 0x08, 0x0a, 0x06, - 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0xa1, 0x01, 0x0a, 0x2d, 0x50, 0x61, 0x74, 0x74, 0x65, - 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x50, 0x66, 0x63, 0x50, 0x61, 0x75, 0x73, 0x65, 0x43, 0x6c, - 0x61, 0x73, 0x73, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x56, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x4d, + 0x12, 0x40, 0x0a, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x06, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, + 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x50, 0x66, 0x63, 0x50, 0x61, 0x75, 0x73, 0x65, 0x44, 0x73, 0x74, + 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, + 0x6e, 0x74, 0x12, 0x45, 0x0a, 0x0b, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x5f, 0x74, 0x61, 0x67, + 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, + 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x50, 0x66, 0x63, 0x50, 0x61, 0x75, 0x73, + 0x65, 0x44, 0x73, 0x74, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x52, 0x0a, 0x6d, + 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x73, 0x1a, 0x56, 0x0a, 0x06, 0x43, 0x68, 0x6f, + 0x69, 0x63, 0x65, 0x22, 0x4c, 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x0a, 0x0b, 0x75, + 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, + 0x76, 0x61, 0x6c, 0x75, 0x65, 0x10, 0x02, 0x12, 0x0a, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, + 0x73, 0x10, 0x03, 0x12, 0x0d, 0x0a, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, + 0x10, 0x04, 0x12, 0x0d, 0x0a, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x10, + 0x05, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x42, 0x08, 0x0a, 0x06, + 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x8b, 0x01, 0x0a, 0x1d, 0x50, 0x61, 0x74, 0x74, 0x65, + 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x50, 0x66, 0x63, 0x50, 0x61, 0x75, 0x73, 0x65, 0x53, 0x72, + 0x63, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x12, 0x19, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x72, + 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, + 0x88, 0x01, 0x01, 0x12, 0x17, 0x0a, 0x04, 0x73, 0x74, 0x65, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x09, 0x48, 0x01, 0x52, 0x04, 0x73, 0x74, 0x65, 0x70, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, + 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x02, 0x52, 0x05, 0x63, + 0x6f, 0x75, 0x6e, 0x74, 0x88, 0x01, 0x01, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x73, 0x74, 0x61, 0x72, + 0x74, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x73, 0x74, 0x65, 0x70, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x63, + 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x93, 0x01, 0x0a, 0x1f, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, + 0x46, 0x6c, 0x6f, 0x77, 0x50, 0x66, 0x63, 0x50, 0x61, 0x75, 0x73, 0x65, 0x53, 0x72, 0x63, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x12, 0x17, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, @@ -102746,345 +117531,139 @@ var file_otg_proto_rawDesc = []byte{ 0x0a, 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x02, 0x52, 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x88, 0x01, 0x01, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x42, - 0x09, 0x0a, 0x07, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x22, 0x8f, 0x04, 0x0a, 0x24, 0x50, + 0x09, 0x0a, 0x07, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x22, 0xc9, 0x03, 0x0a, 0x16, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x50, 0x66, 0x63, 0x50, 0x61, 0x75, - 0x73, 0x65, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x56, 0x65, 0x63, - 0x74, 0x6f, 0x72, 0x12, 0x52, 0x0a, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x0e, 0x32, 0x35, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, - 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x50, 0x66, 0x63, 0x50, 0x61, 0x75, 0x73, 0x65, 0x43, 0x6c, 0x61, - 0x73, 0x73, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x56, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x2e, 0x43, - 0x68, 0x6f, 0x69, 0x63, 0x65, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x48, 0x00, 0x52, 0x06, 0x63, 0x68, - 0x6f, 0x69, 0x63, 0x65, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x88, - 0x01, 0x01, 0x12, 0x16, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, - 0x28, 0x0d, 0x52, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x12, 0x4e, 0x0a, 0x09, 0x69, 0x6e, - 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x30, 0x2e, - 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x50, - 0x66, 0x63, 0x50, 0x61, 0x75, 0x73, 0x65, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x45, 0x6e, 0x61, 0x62, - 0x6c, 0x65, 0x56, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, - 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x4e, 0x0a, 0x09, 0x64, 0x65, - 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x30, 0x2e, - 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x50, - 0x66, 0x63, 0x50, 0x61, 0x75, 0x73, 0x65, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x45, 0x6e, 0x61, 0x62, - 0x6c, 0x65, 0x56, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, - 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x53, 0x0a, 0x0b, 0x6d, 0x65, - 0x74, 0x72, 0x69, 0x63, 0x5f, 0x74, 0x61, 0x67, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, - 0x32, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, - 0x77, 0x50, 0x66, 0x63, 0x50, 0x61, 0x75, 0x73, 0x65, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x45, 0x6e, - 0x61, 0x62, 0x6c, 0x65, 0x56, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, - 0x54, 0x61, 0x67, 0x52, 0x0a, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x73, 0x1a, - 0x56, 0x0a, 0x06, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x22, 0x4c, 0x0a, 0x04, 0x45, 0x6e, 0x75, - 0x6d, 0x12, 0x0f, 0x0a, 0x0b, 0x75, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, - 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x10, 0x02, 0x12, 0x0a, 0x0a, - 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x10, 0x03, 0x12, 0x0d, 0x0a, 0x09, 0x69, 0x6e, 0x63, - 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x10, 0x04, 0x12, 0x0d, 0x0a, 0x09, 0x64, 0x65, 0x63, 0x72, - 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x10, 0x05, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x63, 0x68, 0x6f, 0x69, - 0x63, 0x65, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x93, 0x01, 0x0a, - 0x25, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x50, 0x66, 0x63, 0x50, - 0x61, 0x75, 0x73, 0x65, 0x50, 0x61, 0x75, 0x73, 0x65, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x30, 0x43, - 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x12, 0x19, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x00, 0x52, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x88, 0x01, - 0x01, 0x12, 0x17, 0x0a, 0x04, 0x73, 0x74, 0x65, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, - 0x01, 0x52, 0x04, 0x73, 0x74, 0x65, 0x70, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x63, 0x6f, - 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x02, 0x52, 0x05, 0x63, 0x6f, 0x75, - 0x6e, 0x74, 0x88, 0x01, 0x01, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x42, - 0x07, 0x0a, 0x05, 0x5f, 0x73, 0x74, 0x65, 0x70, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x63, 0x6f, 0x75, - 0x6e, 0x74, 0x22, 0x9b, 0x01, 0x0a, 0x27, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, - 0x6f, 0x77, 0x50, 0x66, 0x63, 0x50, 0x61, 0x75, 0x73, 0x65, 0x50, 0x61, 0x75, 0x73, 0x65, 0x43, - 0x6c, 0x61, 0x73, 0x73, 0x30, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x12, 0x17, - 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x04, - 0x6e, 0x61, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, - 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, - 0x74, 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x0d, 0x48, 0x02, 0x52, 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x88, 0x01, - 0x01, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6f, - 0x66, 0x66, 0x73, 0x65, 0x74, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, - 0x22, 0xf1, 0x03, 0x0a, 0x1e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, - 0x50, 0x66, 0x63, 0x50, 0x61, 0x75, 0x73, 0x65, 0x50, 0x61, 0x75, 0x73, 0x65, 0x43, 0x6c, 0x61, - 0x73, 0x73, 0x30, 0x12, 0x4c, 0x0a, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x0e, 0x32, 0x2f, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, - 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x50, 0x66, 0x63, 0x50, 0x61, 0x75, 0x73, 0x65, 0x50, 0x61, 0x75, - 0x73, 0x65, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x30, 0x2e, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x2e, - 0x45, 0x6e, 0x75, 0x6d, 0x48, 0x00, 0x52, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x88, 0x01, - 0x01, 0x12, 0x19, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, - 0x48, 0x01, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x88, 0x01, 0x01, 0x12, 0x16, 0x0a, 0x06, - 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0d, 0x52, 0x06, 0x76, 0x61, - 0x6c, 0x75, 0x65, 0x73, 0x12, 0x48, 0x0a, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, - 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, + 0x73, 0x65, 0x53, 0x72, 0x63, 0x12, 0x44, 0x0a, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x27, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, + 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x50, 0x66, 0x63, 0x50, 0x61, 0x75, 0x73, 0x65, 0x53, + 0x72, 0x63, 0x2e, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x48, 0x00, + 0x52, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x76, + 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, 0x52, 0x05, 0x76, 0x61, + 0x6c, 0x75, 0x65, 0x88, 0x01, 0x01, 0x12, 0x16, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, + 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x12, 0x40, + 0x0a, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x22, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, + 0x6c, 0x6f, 0x77, 0x50, 0x66, 0x63, 0x50, 0x61, 0x75, 0x73, 0x65, 0x53, 0x72, 0x63, 0x43, 0x6f, + 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, + 0x12, 0x40, 0x0a, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x06, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, + 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x50, 0x66, 0x63, 0x50, 0x61, 0x75, 0x73, 0x65, 0x53, 0x72, 0x63, + 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, + 0x6e, 0x74, 0x12, 0x45, 0x0a, 0x0b, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x5f, 0x74, 0x61, 0x67, + 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x50, 0x66, 0x63, 0x50, 0x61, 0x75, 0x73, - 0x65, 0x50, 0x61, 0x75, 0x73, 0x65, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x30, 0x43, 0x6f, 0x75, 0x6e, - 0x74, 0x65, 0x72, 0x52, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x48, - 0x0a, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x2a, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, - 0x6c, 0x6f, 0x77, 0x50, 0x66, 0x63, 0x50, 0x61, 0x75, 0x73, 0x65, 0x50, 0x61, 0x75, 0x73, 0x65, - 0x43, 0x6c, 0x61, 0x73, 0x73, 0x30, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, 0x64, - 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x4d, 0x0a, 0x0b, 0x6d, 0x65, 0x74, 0x72, - 0x69, 0x63, 0x5f, 0x74, 0x61, 0x67, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2c, 0x2e, - 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x50, - 0x66, 0x63, 0x50, 0x61, 0x75, 0x73, 0x65, 0x50, 0x61, 0x75, 0x73, 0x65, 0x43, 0x6c, 0x61, 0x73, - 0x73, 0x30, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x52, 0x0a, 0x6d, 0x65, 0x74, - 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x73, 0x1a, 0x56, 0x0a, 0x06, 0x43, 0x68, 0x6f, 0x69, 0x63, - 0x65, 0x22, 0x4c, 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x0a, 0x0b, 0x75, 0x6e, 0x73, - 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, 0x76, 0x61, - 0x6c, 0x75, 0x65, 0x10, 0x02, 0x12, 0x0a, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x10, - 0x03, 0x12, 0x0d, 0x0a, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x10, 0x04, - 0x12, 0x0d, 0x0a, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x10, 0x05, 0x42, - 0x09, 0x0a, 0x07, 0x5f, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x76, - 0x61, 0x6c, 0x75, 0x65, 0x22, 0x93, 0x01, 0x0a, 0x25, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, - 0x46, 0x6c, 0x6f, 0x77, 0x50, 0x66, 0x63, 0x50, 0x61, 0x75, 0x73, 0x65, 0x50, 0x61, 0x75, 0x73, - 0x65, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x31, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x12, 0x19, + 0x65, 0x53, 0x72, 0x63, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x52, 0x0a, 0x6d, + 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x73, 0x1a, 0x56, 0x0a, 0x06, 0x43, 0x68, 0x6f, + 0x69, 0x63, 0x65, 0x22, 0x4c, 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x0a, 0x0b, 0x75, + 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, + 0x76, 0x61, 0x6c, 0x75, 0x65, 0x10, 0x02, 0x12, 0x0a, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, + 0x73, 0x10, 0x03, 0x12, 0x0d, 0x0a, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, + 0x10, 0x04, 0x12, 0x0d, 0x0a, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x10, + 0x05, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x42, 0x08, 0x0a, 0x06, + 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x91, 0x01, 0x0a, 0x23, 0x50, 0x61, 0x74, 0x74, 0x65, + 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x50, 0x66, 0x63, 0x50, 0x61, 0x75, 0x73, 0x65, 0x45, 0x74, + 0x68, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x12, 0x19, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x00, 0x52, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x88, 0x01, 0x01, 0x12, 0x17, 0x0a, 0x04, 0x73, 0x74, 0x65, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x04, 0x73, 0x74, 0x65, 0x70, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x02, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x88, 0x01, 0x01, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x73, 0x74, 0x65, 0x70, - 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x9b, 0x01, 0x0a, 0x27, 0x50, + 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x99, 0x01, 0x0a, 0x25, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x50, 0x66, 0x63, 0x50, 0x61, 0x75, - 0x73, 0x65, 0x50, 0x61, 0x75, 0x73, 0x65, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x31, 0x4d, 0x65, 0x74, - 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x12, 0x17, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, - 0x1b, 0x0a, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, - 0x01, 0x52, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, - 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x02, 0x52, 0x06, - 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x88, 0x01, 0x01, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x6e, 0x61, - 0x6d, 0x65, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x42, 0x09, 0x0a, - 0x07, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x22, 0xf1, 0x03, 0x0a, 0x1e, 0x50, 0x61, 0x74, - 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x50, 0x66, 0x63, 0x50, 0x61, 0x75, 0x73, 0x65, - 0x50, 0x61, 0x75, 0x73, 0x65, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x31, 0x12, 0x4c, 0x0a, 0x06, 0x63, - 0x68, 0x6f, 0x69, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2f, 0x2e, 0x6f, 0x74, - 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x50, 0x66, 0x63, - 0x50, 0x61, 0x75, 0x73, 0x65, 0x50, 0x61, 0x75, 0x73, 0x65, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x31, - 0x2e, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x48, 0x00, 0x52, 0x06, - 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x76, 0x61, 0x6c, - 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, - 0x65, 0x88, 0x01, 0x01, 0x12, 0x16, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x03, - 0x20, 0x03, 0x28, 0x0d, 0x52, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x12, 0x48, 0x0a, 0x09, - 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x2a, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, - 0x77, 0x50, 0x66, 0x63, 0x50, 0x61, 0x75, 0x73, 0x65, 0x50, 0x61, 0x75, 0x73, 0x65, 0x43, 0x6c, - 0x61, 0x73, 0x73, 0x31, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, 0x69, 0x6e, 0x63, - 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x48, 0x0a, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, - 0x65, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x6f, 0x74, 0x67, 0x2e, - 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x50, 0x66, 0x63, 0x50, 0x61, - 0x75, 0x73, 0x65, 0x50, 0x61, 0x75, 0x73, 0x65, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x31, 0x43, 0x6f, - 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, - 0x12, 0x4d, 0x0a, 0x0b, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x5f, 0x74, 0x61, 0x67, 0x73, 0x18, - 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, - 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x50, 0x66, 0x63, 0x50, 0x61, 0x75, 0x73, 0x65, 0x50, - 0x61, 0x75, 0x73, 0x65, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x31, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, - 0x54, 0x61, 0x67, 0x52, 0x0a, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x73, 0x1a, - 0x56, 0x0a, 0x06, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x22, 0x4c, 0x0a, 0x04, 0x45, 0x6e, 0x75, - 0x6d, 0x12, 0x0f, 0x0a, 0x0b, 0x75, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, - 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x10, 0x02, 0x12, 0x0a, 0x0a, - 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x10, 0x03, 0x12, 0x0d, 0x0a, 0x09, 0x69, 0x6e, 0x63, - 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x10, 0x04, 0x12, 0x0d, 0x0a, 0x09, 0x64, 0x65, 0x63, 0x72, - 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x10, 0x05, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x63, 0x68, 0x6f, 0x69, - 0x63, 0x65, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x93, 0x01, 0x0a, - 0x25, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x50, 0x66, 0x63, 0x50, - 0x61, 0x75, 0x73, 0x65, 0x50, 0x61, 0x75, 0x73, 0x65, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x32, 0x43, - 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x12, 0x19, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x00, 0x52, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x88, 0x01, - 0x01, 0x12, 0x17, 0x0a, 0x04, 0x73, 0x74, 0x65, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, - 0x01, 0x52, 0x04, 0x73, 0x74, 0x65, 0x70, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x63, 0x6f, - 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x02, 0x52, 0x05, 0x63, 0x6f, 0x75, - 0x6e, 0x74, 0x88, 0x01, 0x01, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x42, - 0x07, 0x0a, 0x05, 0x5f, 0x73, 0x74, 0x65, 0x70, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x63, 0x6f, 0x75, - 0x6e, 0x74, 0x22, 0x9b, 0x01, 0x0a, 0x27, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, - 0x6f, 0x77, 0x50, 0x66, 0x63, 0x50, 0x61, 0x75, 0x73, 0x65, 0x50, 0x61, 0x75, 0x73, 0x65, 0x43, - 0x6c, 0x61, 0x73, 0x73, 0x32, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x12, 0x17, - 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x04, - 0x6e, 0x61, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, - 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, - 0x74, 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x0d, 0x48, 0x02, 0x52, 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x88, 0x01, - 0x01, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6f, - 0x66, 0x66, 0x73, 0x65, 0x74, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, - 0x22, 0xf1, 0x03, 0x0a, 0x1e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, - 0x50, 0x66, 0x63, 0x50, 0x61, 0x75, 0x73, 0x65, 0x50, 0x61, 0x75, 0x73, 0x65, 0x43, 0x6c, 0x61, - 0x73, 0x73, 0x32, 0x12, 0x4c, 0x0a, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x0e, 0x32, 0x2f, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, - 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x50, 0x66, 0x63, 0x50, 0x61, 0x75, 0x73, 0x65, 0x50, 0x61, 0x75, - 0x73, 0x65, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x32, 0x2e, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x2e, - 0x45, 0x6e, 0x75, 0x6d, 0x48, 0x00, 0x52, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x88, 0x01, - 0x01, 0x12, 0x19, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, - 0x48, 0x01, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x88, 0x01, 0x01, 0x12, 0x16, 0x0a, 0x06, - 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0d, 0x52, 0x06, 0x76, 0x61, - 0x6c, 0x75, 0x65, 0x73, 0x12, 0x48, 0x0a, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, - 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, + 0x73, 0x65, 0x45, 0x74, 0x68, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x4d, 0x65, 0x74, 0x72, 0x69, + 0x63, 0x54, 0x61, 0x67, 0x12, 0x17, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x48, 0x00, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, + 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, + 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x6c, 0x65, + 0x6e, 0x67, 0x74, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x02, 0x52, 0x06, 0x6c, 0x65, + 0x6e, 0x67, 0x74, 0x68, 0x88, 0x01, 0x01, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x6e, 0x61, 0x6d, 0x65, + 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x42, 0x09, 0x0a, 0x07, 0x5f, + 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x22, 0xe7, 0x03, 0x0a, 0x1c, 0x50, 0x61, 0x74, 0x74, 0x65, + 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x50, 0x66, 0x63, 0x50, 0x61, 0x75, 0x73, 0x65, 0x45, 0x74, + 0x68, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x12, 0x4a, 0x0a, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, + 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2d, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x50, 0x66, 0x63, 0x50, 0x61, 0x75, 0x73, - 0x65, 0x50, 0x61, 0x75, 0x73, 0x65, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x32, 0x43, 0x6f, 0x75, 0x6e, - 0x74, 0x65, 0x72, 0x52, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x48, - 0x0a, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x2a, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, - 0x6c, 0x6f, 0x77, 0x50, 0x66, 0x63, 0x50, 0x61, 0x75, 0x73, 0x65, 0x50, 0x61, 0x75, 0x73, 0x65, - 0x43, 0x6c, 0x61, 0x73, 0x73, 0x32, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, 0x64, - 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x4d, 0x0a, 0x0b, 0x6d, 0x65, 0x74, 0x72, - 0x69, 0x63, 0x5f, 0x74, 0x61, 0x67, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2c, 0x2e, - 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x50, - 0x66, 0x63, 0x50, 0x61, 0x75, 0x73, 0x65, 0x50, 0x61, 0x75, 0x73, 0x65, 0x43, 0x6c, 0x61, 0x73, - 0x73, 0x32, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x52, 0x0a, 0x6d, 0x65, 0x74, - 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x73, 0x1a, 0x56, 0x0a, 0x06, 0x43, 0x68, 0x6f, 0x69, 0x63, - 0x65, 0x22, 0x4c, 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x0a, 0x0b, 0x75, 0x6e, 0x73, - 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, 0x76, 0x61, - 0x6c, 0x75, 0x65, 0x10, 0x02, 0x12, 0x0a, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x10, - 0x03, 0x12, 0x0d, 0x0a, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x10, 0x04, - 0x12, 0x0d, 0x0a, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x10, 0x05, 0x42, - 0x09, 0x0a, 0x07, 0x5f, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x76, - 0x61, 0x6c, 0x75, 0x65, 0x22, 0x93, 0x01, 0x0a, 0x25, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, - 0x46, 0x6c, 0x6f, 0x77, 0x50, 0x66, 0x63, 0x50, 0x61, 0x75, 0x73, 0x65, 0x50, 0x61, 0x75, 0x73, - 0x65, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x33, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x12, 0x19, - 0x0a, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x00, 0x52, - 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x88, 0x01, 0x01, 0x12, 0x17, 0x0a, 0x04, 0x73, 0x74, 0x65, - 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x04, 0x73, 0x74, 0x65, 0x70, 0x88, - 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x0d, 0x48, 0x02, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x88, 0x01, 0x01, 0x42, 0x08, 0x0a, - 0x06, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x73, 0x74, 0x65, 0x70, - 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x9b, 0x01, 0x0a, 0x27, 0x50, - 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x50, 0x66, 0x63, 0x50, 0x61, 0x75, - 0x73, 0x65, 0x50, 0x61, 0x75, 0x73, 0x65, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x33, 0x4d, 0x65, 0x74, - 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x12, 0x17, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, - 0x1b, 0x0a, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, - 0x01, 0x52, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, - 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x02, 0x52, 0x06, - 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x88, 0x01, 0x01, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x6e, 0x61, - 0x6d, 0x65, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x42, 0x09, 0x0a, - 0x07, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x22, 0xf1, 0x03, 0x0a, 0x1e, 0x50, 0x61, 0x74, - 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x50, 0x66, 0x63, 0x50, 0x61, 0x75, 0x73, 0x65, - 0x50, 0x61, 0x75, 0x73, 0x65, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x33, 0x12, 0x4c, 0x0a, 0x06, 0x63, - 0x68, 0x6f, 0x69, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2f, 0x2e, 0x6f, 0x74, - 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x50, 0x66, 0x63, - 0x50, 0x61, 0x75, 0x73, 0x65, 0x50, 0x61, 0x75, 0x73, 0x65, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x33, - 0x2e, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x48, 0x00, 0x52, 0x06, - 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x76, 0x61, 0x6c, - 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, - 0x65, 0x88, 0x01, 0x01, 0x12, 0x16, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x03, - 0x20, 0x03, 0x28, 0x0d, 0x52, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x12, 0x48, 0x0a, 0x09, - 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x2a, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, - 0x77, 0x50, 0x66, 0x63, 0x50, 0x61, 0x75, 0x73, 0x65, 0x50, 0x61, 0x75, 0x73, 0x65, 0x43, 0x6c, - 0x61, 0x73, 0x73, 0x33, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, 0x69, 0x6e, 0x63, - 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x48, 0x0a, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, - 0x65, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x6f, 0x74, 0x67, 0x2e, + 0x65, 0x45, 0x74, 0x68, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x2e, 0x43, 0x68, 0x6f, 0x69, 0x63, + 0x65, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x48, 0x00, 0x52, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, + 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x0d, 0x48, 0x01, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x88, 0x01, 0x01, 0x12, 0x16, + 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0d, 0x52, 0x06, + 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x12, 0x46, 0x0a, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, + 0x65, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x50, 0x66, 0x63, 0x50, 0x61, - 0x75, 0x73, 0x65, 0x50, 0x61, 0x75, 0x73, 0x65, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x33, 0x43, 0x6f, - 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, - 0x12, 0x4d, 0x0a, 0x0b, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x5f, 0x74, 0x61, 0x67, 0x73, 0x18, - 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, - 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x50, 0x66, 0x63, 0x50, 0x61, 0x75, 0x73, 0x65, 0x50, - 0x61, 0x75, 0x73, 0x65, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x33, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, - 0x54, 0x61, 0x67, 0x52, 0x0a, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x73, 0x1a, - 0x56, 0x0a, 0x06, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x22, 0x4c, 0x0a, 0x04, 0x45, 0x6e, 0x75, - 0x6d, 0x12, 0x0f, 0x0a, 0x0b, 0x75, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, - 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x10, 0x02, 0x12, 0x0a, 0x0a, - 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x10, 0x03, 0x12, 0x0d, 0x0a, 0x09, 0x69, 0x6e, 0x63, - 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x10, 0x04, 0x12, 0x0d, 0x0a, 0x09, 0x64, 0x65, 0x63, 0x72, - 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x10, 0x05, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x63, 0x68, 0x6f, 0x69, - 0x63, 0x65, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x93, 0x01, 0x0a, - 0x25, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x50, 0x66, 0x63, 0x50, - 0x61, 0x75, 0x73, 0x65, 0x50, 0x61, 0x75, 0x73, 0x65, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x34, 0x43, - 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x12, 0x19, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x00, 0x52, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x88, 0x01, - 0x01, 0x12, 0x17, 0x0a, 0x04, 0x73, 0x74, 0x65, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, - 0x01, 0x52, 0x04, 0x73, 0x74, 0x65, 0x70, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x63, 0x6f, - 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x02, 0x52, 0x05, 0x63, 0x6f, 0x75, - 0x6e, 0x74, 0x88, 0x01, 0x01, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x42, - 0x07, 0x0a, 0x05, 0x5f, 0x73, 0x74, 0x65, 0x70, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x63, 0x6f, 0x75, - 0x6e, 0x74, 0x22, 0x9b, 0x01, 0x0a, 0x27, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, - 0x6f, 0x77, 0x50, 0x66, 0x63, 0x50, 0x61, 0x75, 0x73, 0x65, 0x50, 0x61, 0x75, 0x73, 0x65, 0x43, - 0x6c, 0x61, 0x73, 0x73, 0x34, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x12, 0x17, - 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x04, - 0x6e, 0x61, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, - 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, - 0x74, 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x0d, 0x48, 0x02, 0x52, 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x88, 0x01, - 0x01, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6f, - 0x66, 0x66, 0x73, 0x65, 0x74, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, - 0x22, 0xf1, 0x03, 0x0a, 0x1e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, - 0x50, 0x66, 0x63, 0x50, 0x61, 0x75, 0x73, 0x65, 0x50, 0x61, 0x75, 0x73, 0x65, 0x43, 0x6c, 0x61, - 0x73, 0x73, 0x34, 0x12, 0x4c, 0x0a, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x0e, 0x32, 0x2f, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, - 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x50, 0x66, 0x63, 0x50, 0x61, 0x75, 0x73, 0x65, 0x50, 0x61, 0x75, - 0x73, 0x65, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x34, 0x2e, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x2e, - 0x45, 0x6e, 0x75, 0x6d, 0x48, 0x00, 0x52, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x88, 0x01, - 0x01, 0x12, 0x19, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, - 0x48, 0x01, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x88, 0x01, 0x01, 0x12, 0x16, 0x0a, 0x06, - 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0d, 0x52, 0x06, 0x76, 0x61, - 0x6c, 0x75, 0x65, 0x73, 0x12, 0x48, 0x0a, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, - 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, - 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x50, 0x66, 0x63, 0x50, 0x61, 0x75, 0x73, - 0x65, 0x50, 0x61, 0x75, 0x73, 0x65, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x34, 0x43, 0x6f, 0x75, 0x6e, - 0x74, 0x65, 0x72, 0x52, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x48, + 0x75, 0x73, 0x65, 0x45, 0x74, 0x68, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x43, 0x6f, 0x75, 0x6e, + 0x74, 0x65, 0x72, 0x52, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x46, 0x0a, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x2a, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, - 0x6c, 0x6f, 0x77, 0x50, 0x66, 0x63, 0x50, 0x61, 0x75, 0x73, 0x65, 0x50, 0x61, 0x75, 0x73, 0x65, - 0x43, 0x6c, 0x61, 0x73, 0x73, 0x34, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, 0x64, - 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x4d, 0x0a, 0x0b, 0x6d, 0x65, 0x74, 0x72, - 0x69, 0x63, 0x5f, 0x74, 0x61, 0x67, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2c, 0x2e, - 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x50, - 0x66, 0x63, 0x50, 0x61, 0x75, 0x73, 0x65, 0x50, 0x61, 0x75, 0x73, 0x65, 0x43, 0x6c, 0x61, 0x73, - 0x73, 0x34, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x52, 0x0a, 0x6d, 0x65, 0x74, - 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x73, 0x1a, 0x56, 0x0a, 0x06, 0x43, 0x68, 0x6f, 0x69, 0x63, - 0x65, 0x22, 0x4c, 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x0a, 0x0b, 0x75, 0x6e, 0x73, - 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, 0x76, 0x61, - 0x6c, 0x75, 0x65, 0x10, 0x02, 0x12, 0x0a, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x10, - 0x03, 0x12, 0x0d, 0x0a, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x10, 0x04, - 0x12, 0x0d, 0x0a, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x10, 0x05, 0x42, - 0x09, 0x0a, 0x07, 0x5f, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x76, - 0x61, 0x6c, 0x75, 0x65, 0x22, 0x93, 0x01, 0x0a, 0x25, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, - 0x46, 0x6c, 0x6f, 0x77, 0x50, 0x66, 0x63, 0x50, 0x61, 0x75, 0x73, 0x65, 0x50, 0x61, 0x75, 0x73, - 0x65, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x35, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x12, 0x19, - 0x0a, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x00, 0x52, - 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x88, 0x01, 0x01, 0x12, 0x17, 0x0a, 0x04, 0x73, 0x74, 0x65, - 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x04, 0x73, 0x74, 0x65, 0x70, 0x88, - 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x0d, 0x48, 0x02, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x88, 0x01, 0x01, 0x42, 0x08, 0x0a, - 0x06, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x73, 0x74, 0x65, 0x70, - 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x9b, 0x01, 0x0a, 0x27, 0x50, - 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x50, 0x66, 0x63, 0x50, 0x61, 0x75, - 0x73, 0x65, 0x50, 0x61, 0x75, 0x73, 0x65, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x35, 0x4d, 0x65, 0x74, + 0x0b, 0x32, 0x28, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, + 0x6c, 0x6f, 0x77, 0x50, 0x66, 0x63, 0x50, 0x61, 0x75, 0x73, 0x65, 0x45, 0x74, 0x68, 0x65, 0x72, + 0x54, 0x79, 0x70, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, 0x64, 0x65, 0x63, + 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x4b, 0x0a, 0x0b, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, + 0x5f, 0x74, 0x61, 0x67, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x6f, 0x74, + 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x50, 0x66, 0x63, + 0x50, 0x61, 0x75, 0x73, 0x65, 0x45, 0x74, 0x68, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x4d, 0x65, + 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x52, 0x0a, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, + 0x61, 0x67, 0x73, 0x1a, 0x56, 0x0a, 0x06, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x22, 0x4c, 0x0a, + 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x0a, 0x0b, 0x75, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, + 0x66, 0x69, 0x65, 0x64, 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x10, + 0x02, 0x12, 0x0a, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x10, 0x03, 0x12, 0x0d, 0x0a, + 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x10, 0x04, 0x12, 0x0d, 0x0a, 0x09, + 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x10, 0x05, 0x42, 0x09, 0x0a, 0x07, 0x5f, + 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, + 0x22, 0x95, 0x01, 0x0a, 0x27, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, + 0x50, 0x66, 0x63, 0x50, 0x61, 0x75, 0x73, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x4f, + 0x70, 0x43, 0x6f, 0x64, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x12, 0x19, 0x0a, 0x05, + 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x00, 0x52, 0x05, 0x73, + 0x74, 0x61, 0x72, 0x74, 0x88, 0x01, 0x01, 0x12, 0x17, 0x0a, 0x04, 0x73, 0x74, 0x65, 0x70, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x04, 0x73, 0x74, 0x65, 0x70, 0x88, 0x01, 0x01, + 0x12, 0x19, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x48, + 0x02, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x88, 0x01, 0x01, 0x42, 0x08, 0x0a, 0x06, 0x5f, + 0x73, 0x74, 0x61, 0x72, 0x74, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x73, 0x74, 0x65, 0x70, 0x42, 0x08, + 0x0a, 0x06, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x9d, 0x01, 0x0a, 0x29, 0x50, 0x61, 0x74, + 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x50, 0x66, 0x63, 0x50, 0x61, 0x75, 0x73, 0x65, + 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x4f, 0x70, 0x43, 0x6f, 0x64, 0x65, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x12, 0x17, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, - 0x1b, 0x0a, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, - 0x01, 0x52, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, - 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x02, 0x52, 0x06, - 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x88, 0x01, 0x01, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x6e, 0x61, - 0x6d, 0x65, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x42, 0x09, 0x0a, - 0x07, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x22, 0xf1, 0x03, 0x0a, 0x1e, 0x50, 0x61, 0x74, - 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x50, 0x66, 0x63, 0x50, 0x61, 0x75, 0x73, 0x65, - 0x50, 0x61, 0x75, 0x73, 0x65, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x35, 0x12, 0x4c, 0x0a, 0x06, 0x63, - 0x68, 0x6f, 0x69, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2f, 0x2e, 0x6f, 0x74, - 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x50, 0x66, 0x63, - 0x50, 0x61, 0x75, 0x73, 0x65, 0x50, 0x61, 0x75, 0x73, 0x65, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x35, - 0x2e, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x48, 0x00, 0x52, 0x06, - 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x76, 0x61, 0x6c, - 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, - 0x65, 0x88, 0x01, 0x01, 0x12, 0x16, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x03, - 0x20, 0x03, 0x28, 0x0d, 0x52, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x12, 0x48, 0x0a, 0x09, - 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x2a, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, - 0x77, 0x50, 0x66, 0x63, 0x50, 0x61, 0x75, 0x73, 0x65, 0x50, 0x61, 0x75, 0x73, 0x65, 0x43, 0x6c, - 0x61, 0x73, 0x73, 0x35, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, 0x69, 0x6e, 0x63, - 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x48, 0x0a, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, - 0x65, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x6f, 0x74, 0x67, 0x2e, - 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x50, 0x66, 0x63, 0x50, 0x61, - 0x75, 0x73, 0x65, 0x50, 0x61, 0x75, 0x73, 0x65, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x35, 0x43, 0x6f, - 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, - 0x12, 0x4d, 0x0a, 0x0b, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x5f, 0x74, 0x61, 0x67, 0x73, 0x18, - 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, - 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x50, 0x66, 0x63, 0x50, 0x61, 0x75, 0x73, 0x65, 0x50, - 0x61, 0x75, 0x73, 0x65, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x35, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, - 0x54, 0x61, 0x67, 0x52, 0x0a, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x73, 0x1a, - 0x56, 0x0a, 0x06, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x22, 0x4c, 0x0a, 0x04, 0x45, 0x6e, 0x75, - 0x6d, 0x12, 0x0f, 0x0a, 0x0b, 0x75, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, - 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x10, 0x02, 0x12, 0x0a, 0x0a, - 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x10, 0x03, 0x12, 0x0d, 0x0a, 0x09, 0x69, 0x6e, 0x63, - 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x10, 0x04, 0x12, 0x0d, 0x0a, 0x09, 0x64, 0x65, 0x63, 0x72, - 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x10, 0x05, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x63, 0x68, 0x6f, 0x69, - 0x63, 0x65, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x93, 0x01, 0x0a, - 0x25, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x50, 0x66, 0x63, 0x50, - 0x61, 0x75, 0x73, 0x65, 0x50, 0x61, 0x75, 0x73, 0x65, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x36, 0x43, + 0x1b, 0x0a, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, + 0x01, 0x52, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, + 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x02, 0x52, 0x06, + 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x88, 0x01, 0x01, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x6e, 0x61, + 0x6d, 0x65, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x42, 0x09, 0x0a, + 0x07, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x22, 0xfb, 0x03, 0x0a, 0x20, 0x50, 0x61, 0x74, + 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x50, 0x66, 0x63, 0x50, 0x61, 0x75, 0x73, 0x65, + 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x4f, 0x70, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x4e, 0x0a, + 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x31, 0x2e, + 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x50, + 0x66, 0x63, 0x50, 0x61, 0x75, 0x73, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x4f, 0x70, + 0x43, 0x6f, 0x64, 0x65, 0x2e, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x2e, 0x45, 0x6e, 0x75, 0x6d, + 0x48, 0x00, 0x52, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, + 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x05, + 0x76, 0x61, 0x6c, 0x75, 0x65, 0x88, 0x01, 0x01, 0x12, 0x16, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, + 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0d, 0x52, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, + 0x12, 0x4a, 0x0a, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x05, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, + 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x50, 0x66, 0x63, 0x50, 0x61, 0x75, 0x73, 0x65, 0x43, 0x6f, 0x6e, + 0x74, 0x72, 0x6f, 0x6c, 0x4f, 0x70, 0x43, 0x6f, 0x64, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, + 0x72, 0x52, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x4a, 0x0a, 0x09, + 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x2c, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, + 0x77, 0x50, 0x66, 0x63, 0x50, 0x61, 0x75, 0x73, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, + 0x4f, 0x70, 0x43, 0x6f, 0x64, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, 0x64, + 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x4f, 0x0a, 0x0b, 0x6d, 0x65, 0x74, 0x72, + 0x69, 0x63, 0x5f, 0x74, 0x61, 0x67, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2e, 0x2e, + 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x50, + 0x66, 0x63, 0x50, 0x61, 0x75, 0x73, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x4f, 0x70, + 0x43, 0x6f, 0x64, 0x65, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x52, 0x0a, 0x6d, + 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x73, 0x1a, 0x56, 0x0a, 0x06, 0x43, 0x68, 0x6f, + 0x69, 0x63, 0x65, 0x22, 0x4c, 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x0a, 0x0b, 0x75, + 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, + 0x76, 0x61, 0x6c, 0x75, 0x65, 0x10, 0x02, 0x12, 0x0a, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, + 0x73, 0x10, 0x03, 0x12, 0x0d, 0x0a, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, + 0x10, 0x04, 0x12, 0x0d, 0x0a, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x10, + 0x05, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x42, 0x08, 0x0a, 0x06, + 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x99, 0x01, 0x0a, 0x2b, 0x50, 0x61, 0x74, 0x74, 0x65, + 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x50, 0x66, 0x63, 0x50, 0x61, 0x75, 0x73, 0x65, 0x43, 0x6c, + 0x61, 0x73, 0x73, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x56, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x12, 0x19, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x00, 0x52, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x88, 0x01, 0x01, 0x12, 0x17, 0x0a, 0x04, 0x73, 0x74, 0x65, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, @@ -103092,294 +117671,446 @@ var file_otg_proto_rawDesc = []byte{ 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x02, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x88, 0x01, 0x01, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x73, 0x74, 0x65, 0x70, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x63, 0x6f, 0x75, - 0x6e, 0x74, 0x22, 0x9b, 0x01, 0x0a, 0x27, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, - 0x6f, 0x77, 0x50, 0x66, 0x63, 0x50, 0x61, 0x75, 0x73, 0x65, 0x50, 0x61, 0x75, 0x73, 0x65, 0x43, - 0x6c, 0x61, 0x73, 0x73, 0x36, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x12, 0x17, - 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x04, - 0x6e, 0x61, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, - 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, - 0x74, 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x0d, 0x48, 0x02, 0x52, 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x88, 0x01, - 0x01, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6f, - 0x66, 0x66, 0x73, 0x65, 0x74, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, - 0x22, 0xf1, 0x03, 0x0a, 0x1e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, - 0x50, 0x66, 0x63, 0x50, 0x61, 0x75, 0x73, 0x65, 0x50, 0x61, 0x75, 0x73, 0x65, 0x43, 0x6c, 0x61, - 0x73, 0x73, 0x36, 0x12, 0x4c, 0x0a, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x0e, 0x32, 0x2f, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, + 0x6e, 0x74, 0x22, 0xa1, 0x01, 0x0a, 0x2d, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, + 0x6f, 0x77, 0x50, 0x66, 0x63, 0x50, 0x61, 0x75, 0x73, 0x65, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x45, + 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x56, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x4d, 0x65, 0x74, 0x72, 0x69, + 0x63, 0x54, 0x61, 0x67, 0x12, 0x17, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x48, 0x00, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, + 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, + 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x6c, 0x65, + 0x6e, 0x67, 0x74, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x02, 0x52, 0x06, 0x6c, 0x65, + 0x6e, 0x67, 0x74, 0x68, 0x88, 0x01, 0x01, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x6e, 0x61, 0x6d, 0x65, + 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x42, 0x09, 0x0a, 0x07, 0x5f, + 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x22, 0x8f, 0x04, 0x0a, 0x24, 0x50, 0x61, 0x74, 0x74, 0x65, + 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x50, 0x66, 0x63, 0x50, 0x61, 0x75, 0x73, 0x65, 0x43, 0x6c, + 0x61, 0x73, 0x73, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x56, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x12, + 0x52, 0x0a, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, + 0x35, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, + 0x77, 0x50, 0x66, 0x63, 0x50, 0x61, 0x75, 0x73, 0x65, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x45, 0x6e, + 0x61, 0x62, 0x6c, 0x65, 0x56, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x2e, 0x43, 0x68, 0x6f, 0x69, 0x63, + 0x65, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x48, 0x00, 0x52, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, + 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x0d, 0x48, 0x01, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x88, 0x01, 0x01, 0x12, 0x16, + 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0d, 0x52, 0x06, + 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x12, 0x4e, 0x0a, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, + 0x65, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x6f, 0x74, 0x67, 0x2e, + 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x50, 0x66, 0x63, 0x50, 0x61, + 0x75, 0x73, 0x65, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x56, 0x65, + 0x63, 0x74, 0x6f, 0x72, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, 0x69, 0x6e, 0x63, + 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x4e, 0x0a, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, + 0x65, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x6f, 0x74, 0x67, 0x2e, + 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x50, 0x66, 0x63, 0x50, 0x61, + 0x75, 0x73, 0x65, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x56, 0x65, + 0x63, 0x74, 0x6f, 0x72, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, 0x64, 0x65, 0x63, + 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x53, 0x0a, 0x0b, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, + 0x5f, 0x74, 0x61, 0x67, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x32, 0x2e, 0x6f, 0x74, + 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x50, 0x66, 0x63, + 0x50, 0x61, 0x75, 0x73, 0x65, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, + 0x56, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x52, + 0x0a, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x73, 0x1a, 0x56, 0x0a, 0x06, 0x43, + 0x68, 0x6f, 0x69, 0x63, 0x65, 0x22, 0x4c, 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x0a, + 0x0b, 0x75, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x10, 0x00, 0x12, 0x09, + 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x10, 0x02, 0x12, 0x0a, 0x0a, 0x06, 0x76, 0x61, 0x6c, + 0x75, 0x65, 0x73, 0x10, 0x03, 0x12, 0x0d, 0x0a, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, + 0x6e, 0x74, 0x10, 0x04, 0x12, 0x0d, 0x0a, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, + 0x74, 0x10, 0x05, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x42, 0x08, + 0x0a, 0x06, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x93, 0x01, 0x0a, 0x25, 0x50, 0x61, 0x74, + 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x50, 0x66, 0x63, 0x50, 0x61, 0x75, 0x73, 0x65, + 0x50, 0x61, 0x75, 0x73, 0x65, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x30, 0x43, 0x6f, 0x75, 0x6e, 0x74, + 0x65, 0x72, 0x12, 0x19, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x0d, 0x48, 0x00, 0x52, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x88, 0x01, 0x01, 0x12, 0x17, 0x0a, + 0x04, 0x73, 0x74, 0x65, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x04, 0x73, + 0x74, 0x65, 0x70, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x02, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x88, 0x01, + 0x01, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x42, 0x07, 0x0a, 0x05, 0x5f, + 0x73, 0x74, 0x65, 0x70, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x9b, + 0x01, 0x0a, 0x27, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x50, 0x66, + 0x63, 0x50, 0x61, 0x75, 0x73, 0x65, 0x50, 0x61, 0x75, 0x73, 0x65, 0x43, 0x6c, 0x61, 0x73, 0x73, + 0x30, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x12, 0x17, 0x0a, 0x04, 0x6e, 0x61, + 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, + 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x88, 0x01, 0x01, + 0x12, 0x1b, 0x0a, 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, + 0x48, 0x02, 0x52, 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x88, 0x01, 0x01, 0x42, 0x07, 0x0a, + 0x05, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6f, 0x66, 0x66, 0x73, 0x65, + 0x74, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x22, 0xf1, 0x03, 0x0a, + 0x1e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x50, 0x66, 0x63, 0x50, + 0x61, 0x75, 0x73, 0x65, 0x50, 0x61, 0x75, 0x73, 0x65, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x30, 0x12, + 0x4c, 0x0a, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, + 0x2f, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, + 0x77, 0x50, 0x66, 0x63, 0x50, 0x61, 0x75, 0x73, 0x65, 0x50, 0x61, 0x75, 0x73, 0x65, 0x43, 0x6c, + 0x61, 0x73, 0x73, 0x30, 0x2e, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x2e, 0x45, 0x6e, 0x75, 0x6d, + 0x48, 0x00, 0x52, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, + 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x05, + 0x76, 0x61, 0x6c, 0x75, 0x65, 0x88, 0x01, 0x01, 0x12, 0x16, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, + 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0d, 0x52, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, + 0x12, 0x48, 0x0a, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x05, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x50, 0x66, 0x63, 0x50, 0x61, 0x75, 0x73, 0x65, 0x50, 0x61, 0x75, - 0x73, 0x65, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x36, 0x2e, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x2e, - 0x45, 0x6e, 0x75, 0x6d, 0x48, 0x00, 0x52, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x88, 0x01, - 0x01, 0x12, 0x19, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, - 0x48, 0x01, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x88, 0x01, 0x01, 0x12, 0x16, 0x0a, 0x06, - 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0d, 0x52, 0x06, 0x76, 0x61, - 0x6c, 0x75, 0x65, 0x73, 0x12, 0x48, 0x0a, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, - 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, + 0x73, 0x65, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x30, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, + 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x48, 0x0a, 0x09, 0x64, 0x65, + 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, + 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x50, + 0x66, 0x63, 0x50, 0x61, 0x75, 0x73, 0x65, 0x50, 0x61, 0x75, 0x73, 0x65, 0x43, 0x6c, 0x61, 0x73, + 0x73, 0x30, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, + 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x4d, 0x0a, 0x0b, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x5f, 0x74, + 0x61, 0x67, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x6f, 0x74, 0x67, 0x2e, + 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x50, 0x66, 0x63, 0x50, 0x61, + 0x75, 0x73, 0x65, 0x50, 0x61, 0x75, 0x73, 0x65, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x30, 0x4d, 0x65, + 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x52, 0x0a, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, + 0x61, 0x67, 0x73, 0x1a, 0x56, 0x0a, 0x06, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x22, 0x4c, 0x0a, + 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x0a, 0x0b, 0x75, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, + 0x66, 0x69, 0x65, 0x64, 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x10, + 0x02, 0x12, 0x0a, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x10, 0x03, 0x12, 0x0d, 0x0a, + 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x10, 0x04, 0x12, 0x0d, 0x0a, 0x09, + 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x10, 0x05, 0x42, 0x09, 0x0a, 0x07, 0x5f, + 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, + 0x22, 0x93, 0x01, 0x0a, 0x25, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, + 0x50, 0x66, 0x63, 0x50, 0x61, 0x75, 0x73, 0x65, 0x50, 0x61, 0x75, 0x73, 0x65, 0x43, 0x6c, 0x61, + 0x73, 0x73, 0x31, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x12, 0x19, 0x0a, 0x05, 0x73, 0x74, + 0x61, 0x72, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x00, 0x52, 0x05, 0x73, 0x74, 0x61, + 0x72, 0x74, 0x88, 0x01, 0x01, 0x12, 0x17, 0x0a, 0x04, 0x73, 0x74, 0x65, 0x70, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x04, 0x73, 0x74, 0x65, 0x70, 0x88, 0x01, 0x01, 0x12, 0x19, + 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x02, 0x52, + 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x88, 0x01, 0x01, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x73, 0x74, + 0x61, 0x72, 0x74, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x73, 0x74, 0x65, 0x70, 0x42, 0x08, 0x0a, 0x06, + 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x9b, 0x01, 0x0a, 0x27, 0x50, 0x61, 0x74, 0x74, 0x65, + 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x50, 0x66, 0x63, 0x50, 0x61, 0x75, 0x73, 0x65, 0x50, 0x61, + 0x75, 0x73, 0x65, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x31, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, + 0x61, 0x67, 0x12, 0x17, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x48, 0x00, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x6f, + 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x06, 0x6f, + 0x66, 0x66, 0x73, 0x65, 0x74, 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x6c, 0x65, 0x6e, 0x67, + 0x74, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x02, 0x52, 0x06, 0x6c, 0x65, 0x6e, 0x67, + 0x74, 0x68, 0x88, 0x01, 0x01, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x42, 0x09, + 0x0a, 0x07, 0x5f, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6c, 0x65, + 0x6e, 0x67, 0x74, 0x68, 0x22, 0xf1, 0x03, 0x0a, 0x1e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, + 0x46, 0x6c, 0x6f, 0x77, 0x50, 0x66, 0x63, 0x50, 0x61, 0x75, 0x73, 0x65, 0x50, 0x61, 0x75, 0x73, + 0x65, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x31, 0x12, 0x4c, 0x0a, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, + 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2f, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x50, 0x66, 0x63, 0x50, 0x61, 0x75, 0x73, - 0x65, 0x50, 0x61, 0x75, 0x73, 0x65, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x36, 0x43, 0x6f, 0x75, 0x6e, - 0x74, 0x65, 0x72, 0x52, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x48, - 0x0a, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x2a, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, + 0x65, 0x50, 0x61, 0x75, 0x73, 0x65, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x31, 0x2e, 0x43, 0x68, 0x6f, + 0x69, 0x63, 0x65, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x48, 0x00, 0x52, 0x06, 0x63, 0x68, 0x6f, 0x69, + 0x63, 0x65, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x88, 0x01, 0x01, + 0x12, 0x16, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0d, + 0x52, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x12, 0x48, 0x0a, 0x09, 0x69, 0x6e, 0x63, 0x72, + 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x6f, 0x74, + 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x50, 0x66, 0x63, + 0x50, 0x61, 0x75, 0x73, 0x65, 0x50, 0x61, 0x75, 0x73, 0x65, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x31, + 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, + 0x6e, 0x74, 0x12, 0x48, 0x0a, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, + 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, + 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x50, 0x66, 0x63, 0x50, 0x61, 0x75, 0x73, 0x65, 0x50, + 0x61, 0x75, 0x73, 0x65, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x31, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, + 0x72, 0x52, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x4d, 0x0a, 0x0b, + 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x5f, 0x74, 0x61, 0x67, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x2c, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x50, 0x66, 0x63, 0x50, 0x61, 0x75, 0x73, 0x65, 0x50, 0x61, 0x75, 0x73, 0x65, - 0x43, 0x6c, 0x61, 0x73, 0x73, 0x36, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, 0x64, - 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x4d, 0x0a, 0x0b, 0x6d, 0x65, 0x74, 0x72, - 0x69, 0x63, 0x5f, 0x74, 0x61, 0x67, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2c, 0x2e, + 0x43, 0x6c, 0x61, 0x73, 0x73, 0x31, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x52, + 0x0a, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x73, 0x1a, 0x56, 0x0a, 0x06, 0x43, + 0x68, 0x6f, 0x69, 0x63, 0x65, 0x22, 0x4c, 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x0a, + 0x0b, 0x75, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x10, 0x00, 0x12, 0x09, + 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x10, 0x02, 0x12, 0x0a, 0x0a, 0x06, 0x76, 0x61, 0x6c, + 0x75, 0x65, 0x73, 0x10, 0x03, 0x12, 0x0d, 0x0a, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, + 0x6e, 0x74, 0x10, 0x04, 0x12, 0x0d, 0x0a, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, + 0x74, 0x10, 0x05, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x42, 0x08, + 0x0a, 0x06, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x93, 0x01, 0x0a, 0x25, 0x50, 0x61, 0x74, + 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x50, 0x66, 0x63, 0x50, 0x61, 0x75, 0x73, 0x65, + 0x50, 0x61, 0x75, 0x73, 0x65, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x32, 0x43, 0x6f, 0x75, 0x6e, 0x74, + 0x65, 0x72, 0x12, 0x19, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x0d, 0x48, 0x00, 0x52, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x88, 0x01, 0x01, 0x12, 0x17, 0x0a, + 0x04, 0x73, 0x74, 0x65, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x04, 0x73, + 0x74, 0x65, 0x70, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x02, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x88, 0x01, + 0x01, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x42, 0x07, 0x0a, 0x05, 0x5f, + 0x73, 0x74, 0x65, 0x70, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x9b, + 0x01, 0x0a, 0x27, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x50, 0x66, + 0x63, 0x50, 0x61, 0x75, 0x73, 0x65, 0x50, 0x61, 0x75, 0x73, 0x65, 0x43, 0x6c, 0x61, 0x73, 0x73, + 0x32, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x12, 0x17, 0x0a, 0x04, 0x6e, 0x61, + 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, + 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x88, 0x01, 0x01, + 0x12, 0x1b, 0x0a, 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, + 0x48, 0x02, 0x52, 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x88, 0x01, 0x01, 0x42, 0x07, 0x0a, + 0x05, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6f, 0x66, 0x66, 0x73, 0x65, + 0x74, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x22, 0xf1, 0x03, 0x0a, + 0x1e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x50, 0x66, 0x63, 0x50, + 0x61, 0x75, 0x73, 0x65, 0x50, 0x61, 0x75, 0x73, 0x65, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x32, 0x12, + 0x4c, 0x0a, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, + 0x2f, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, + 0x77, 0x50, 0x66, 0x63, 0x50, 0x61, 0x75, 0x73, 0x65, 0x50, 0x61, 0x75, 0x73, 0x65, 0x43, 0x6c, + 0x61, 0x73, 0x73, 0x32, 0x2e, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x2e, 0x45, 0x6e, 0x75, 0x6d, + 0x48, 0x00, 0x52, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, + 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x05, + 0x76, 0x61, 0x6c, 0x75, 0x65, 0x88, 0x01, 0x01, 0x12, 0x16, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, + 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0d, 0x52, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, + 0x12, 0x48, 0x0a, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x05, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, + 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x50, 0x66, 0x63, 0x50, 0x61, 0x75, 0x73, 0x65, 0x50, 0x61, 0x75, + 0x73, 0x65, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x32, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, + 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x48, 0x0a, 0x09, 0x64, 0x65, + 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x50, 0x66, 0x63, 0x50, 0x61, 0x75, 0x73, 0x65, 0x50, 0x61, 0x75, 0x73, 0x65, 0x43, 0x6c, 0x61, 0x73, - 0x73, 0x36, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x52, 0x0a, 0x6d, 0x65, 0x74, - 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x73, 0x1a, 0x56, 0x0a, 0x06, 0x43, 0x68, 0x6f, 0x69, 0x63, - 0x65, 0x22, 0x4c, 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x0a, 0x0b, 0x75, 0x6e, 0x73, - 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, 0x76, 0x61, - 0x6c, 0x75, 0x65, 0x10, 0x02, 0x12, 0x0a, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x10, - 0x03, 0x12, 0x0d, 0x0a, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x10, 0x04, - 0x12, 0x0d, 0x0a, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x10, 0x05, 0x42, - 0x09, 0x0a, 0x07, 0x5f, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x76, - 0x61, 0x6c, 0x75, 0x65, 0x22, 0x93, 0x01, 0x0a, 0x25, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, + 0x73, 0x32, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, + 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x4d, 0x0a, 0x0b, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x5f, 0x74, + 0x61, 0x67, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x6f, 0x74, 0x67, 0x2e, + 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x50, 0x66, 0x63, 0x50, 0x61, + 0x75, 0x73, 0x65, 0x50, 0x61, 0x75, 0x73, 0x65, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x32, 0x4d, 0x65, + 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x52, 0x0a, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, + 0x61, 0x67, 0x73, 0x1a, 0x56, 0x0a, 0x06, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x22, 0x4c, 0x0a, + 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x0a, 0x0b, 0x75, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, + 0x66, 0x69, 0x65, 0x64, 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x10, + 0x02, 0x12, 0x0a, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x10, 0x03, 0x12, 0x0d, 0x0a, + 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x10, 0x04, 0x12, 0x0d, 0x0a, 0x09, + 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x10, 0x05, 0x42, 0x09, 0x0a, 0x07, 0x5f, + 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, + 0x22, 0x93, 0x01, 0x0a, 0x25, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, + 0x50, 0x66, 0x63, 0x50, 0x61, 0x75, 0x73, 0x65, 0x50, 0x61, 0x75, 0x73, 0x65, 0x43, 0x6c, 0x61, + 0x73, 0x73, 0x33, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x12, 0x19, 0x0a, 0x05, 0x73, 0x74, + 0x61, 0x72, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x00, 0x52, 0x05, 0x73, 0x74, 0x61, + 0x72, 0x74, 0x88, 0x01, 0x01, 0x12, 0x17, 0x0a, 0x04, 0x73, 0x74, 0x65, 0x70, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x04, 0x73, 0x74, 0x65, 0x70, 0x88, 0x01, 0x01, 0x12, 0x19, + 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x02, 0x52, + 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x88, 0x01, 0x01, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x73, 0x74, + 0x61, 0x72, 0x74, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x73, 0x74, 0x65, 0x70, 0x42, 0x08, 0x0a, 0x06, + 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x9b, 0x01, 0x0a, 0x27, 0x50, 0x61, 0x74, 0x74, 0x65, + 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x50, 0x66, 0x63, 0x50, 0x61, 0x75, 0x73, 0x65, 0x50, 0x61, + 0x75, 0x73, 0x65, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x33, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, + 0x61, 0x67, 0x12, 0x17, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x48, 0x00, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x6f, + 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x06, 0x6f, + 0x66, 0x66, 0x73, 0x65, 0x74, 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x6c, 0x65, 0x6e, 0x67, + 0x74, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x02, 0x52, 0x06, 0x6c, 0x65, 0x6e, 0x67, + 0x74, 0x68, 0x88, 0x01, 0x01, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x42, 0x09, + 0x0a, 0x07, 0x5f, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6c, 0x65, + 0x6e, 0x67, 0x74, 0x68, 0x22, 0xf1, 0x03, 0x0a, 0x1e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x50, 0x66, 0x63, 0x50, 0x61, 0x75, 0x73, 0x65, 0x50, 0x61, 0x75, 0x73, - 0x65, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x37, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x12, 0x19, - 0x0a, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x00, 0x52, - 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x88, 0x01, 0x01, 0x12, 0x17, 0x0a, 0x04, 0x73, 0x74, 0x65, - 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x04, 0x73, 0x74, 0x65, 0x70, 0x88, - 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x0d, 0x48, 0x02, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x88, 0x01, 0x01, 0x42, 0x08, 0x0a, - 0x06, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x73, 0x74, 0x65, 0x70, - 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x9b, 0x01, 0x0a, 0x27, 0x50, - 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x50, 0x66, 0x63, 0x50, 0x61, 0x75, - 0x73, 0x65, 0x50, 0x61, 0x75, 0x73, 0x65, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x37, 0x4d, 0x65, 0x74, - 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x12, 0x17, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, - 0x1b, 0x0a, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, - 0x01, 0x52, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, - 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x02, 0x52, 0x06, - 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x88, 0x01, 0x01, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x6e, 0x61, - 0x6d, 0x65, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x42, 0x09, 0x0a, - 0x07, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x22, 0xf1, 0x03, 0x0a, 0x1e, 0x50, 0x61, 0x74, - 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x50, 0x66, 0x63, 0x50, 0x61, 0x75, 0x73, 0x65, - 0x50, 0x61, 0x75, 0x73, 0x65, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x37, 0x12, 0x4c, 0x0a, 0x06, 0x63, - 0x68, 0x6f, 0x69, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2f, 0x2e, 0x6f, 0x74, + 0x65, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x33, 0x12, 0x4c, 0x0a, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, + 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2f, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, + 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x50, 0x66, 0x63, 0x50, 0x61, 0x75, 0x73, + 0x65, 0x50, 0x61, 0x75, 0x73, 0x65, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x33, 0x2e, 0x43, 0x68, 0x6f, + 0x69, 0x63, 0x65, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x48, 0x00, 0x52, 0x06, 0x63, 0x68, 0x6f, 0x69, + 0x63, 0x65, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x88, 0x01, 0x01, + 0x12, 0x16, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0d, + 0x52, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x12, 0x48, 0x0a, 0x09, 0x69, 0x6e, 0x63, 0x72, + 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x50, 0x66, 0x63, - 0x50, 0x61, 0x75, 0x73, 0x65, 0x50, 0x61, 0x75, 0x73, 0x65, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x37, - 0x2e, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x48, 0x00, 0x52, 0x06, - 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x76, 0x61, 0x6c, - 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, - 0x65, 0x88, 0x01, 0x01, 0x12, 0x16, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x03, - 0x20, 0x03, 0x28, 0x0d, 0x52, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x12, 0x48, 0x0a, 0x09, - 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x2a, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, + 0x50, 0x61, 0x75, 0x73, 0x65, 0x50, 0x61, 0x75, 0x73, 0x65, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x33, + 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, + 0x6e, 0x74, 0x12, 0x48, 0x0a, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, + 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, + 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x50, 0x66, 0x63, 0x50, 0x61, 0x75, 0x73, 0x65, 0x50, + 0x61, 0x75, 0x73, 0x65, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x33, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, + 0x72, 0x52, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x4d, 0x0a, 0x0b, + 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x5f, 0x74, 0x61, 0x67, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x2c, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, + 0x6c, 0x6f, 0x77, 0x50, 0x66, 0x63, 0x50, 0x61, 0x75, 0x73, 0x65, 0x50, 0x61, 0x75, 0x73, 0x65, + 0x43, 0x6c, 0x61, 0x73, 0x73, 0x33, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x52, + 0x0a, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x73, 0x1a, 0x56, 0x0a, 0x06, 0x43, + 0x68, 0x6f, 0x69, 0x63, 0x65, 0x22, 0x4c, 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x0a, + 0x0b, 0x75, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x10, 0x00, 0x12, 0x09, + 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x10, 0x02, 0x12, 0x0a, 0x0a, 0x06, 0x76, 0x61, 0x6c, + 0x75, 0x65, 0x73, 0x10, 0x03, 0x12, 0x0d, 0x0a, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, + 0x6e, 0x74, 0x10, 0x04, 0x12, 0x0d, 0x0a, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, + 0x74, 0x10, 0x05, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x42, 0x08, + 0x0a, 0x06, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x93, 0x01, 0x0a, 0x25, 0x50, 0x61, 0x74, + 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x50, 0x66, 0x63, 0x50, 0x61, 0x75, 0x73, 0x65, + 0x50, 0x61, 0x75, 0x73, 0x65, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x34, 0x43, 0x6f, 0x75, 0x6e, 0x74, + 0x65, 0x72, 0x12, 0x19, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x0d, 0x48, 0x00, 0x52, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x88, 0x01, 0x01, 0x12, 0x17, 0x0a, + 0x04, 0x73, 0x74, 0x65, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x04, 0x73, + 0x74, 0x65, 0x70, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x02, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x88, 0x01, + 0x01, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x42, 0x07, 0x0a, 0x05, 0x5f, + 0x73, 0x74, 0x65, 0x70, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x9b, + 0x01, 0x0a, 0x27, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x50, 0x66, + 0x63, 0x50, 0x61, 0x75, 0x73, 0x65, 0x50, 0x61, 0x75, 0x73, 0x65, 0x43, 0x6c, 0x61, 0x73, 0x73, + 0x34, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x12, 0x17, 0x0a, 0x04, 0x6e, 0x61, + 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, + 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x88, 0x01, 0x01, + 0x12, 0x1b, 0x0a, 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, + 0x48, 0x02, 0x52, 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x88, 0x01, 0x01, 0x42, 0x07, 0x0a, + 0x05, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6f, 0x66, 0x66, 0x73, 0x65, + 0x74, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x22, 0xf1, 0x03, 0x0a, + 0x1e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x50, 0x66, 0x63, 0x50, + 0x61, 0x75, 0x73, 0x65, 0x50, 0x61, 0x75, 0x73, 0x65, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x34, 0x12, + 0x4c, 0x0a, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, + 0x2f, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x50, 0x66, 0x63, 0x50, 0x61, 0x75, 0x73, 0x65, 0x50, 0x61, 0x75, 0x73, 0x65, 0x43, 0x6c, - 0x61, 0x73, 0x73, 0x37, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, 0x69, 0x6e, 0x63, - 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x48, 0x0a, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, - 0x65, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x6f, 0x74, 0x67, 0x2e, + 0x61, 0x73, 0x73, 0x34, 0x2e, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x2e, 0x45, 0x6e, 0x75, 0x6d, + 0x48, 0x00, 0x52, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, + 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x05, + 0x76, 0x61, 0x6c, 0x75, 0x65, 0x88, 0x01, 0x01, 0x12, 0x16, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, + 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0d, 0x52, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, + 0x12, 0x48, 0x0a, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x05, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, + 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x50, 0x66, 0x63, 0x50, 0x61, 0x75, 0x73, 0x65, 0x50, 0x61, 0x75, + 0x73, 0x65, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x34, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, + 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x48, 0x0a, 0x09, 0x64, 0x65, + 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, + 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x50, + 0x66, 0x63, 0x50, 0x61, 0x75, 0x73, 0x65, 0x50, 0x61, 0x75, 0x73, 0x65, 0x43, 0x6c, 0x61, 0x73, + 0x73, 0x34, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, + 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x4d, 0x0a, 0x0b, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x5f, 0x74, + 0x61, 0x67, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x50, 0x66, 0x63, 0x50, 0x61, - 0x75, 0x73, 0x65, 0x50, 0x61, 0x75, 0x73, 0x65, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x37, 0x43, 0x6f, - 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, - 0x12, 0x4d, 0x0a, 0x0b, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x5f, 0x74, 0x61, 0x67, 0x73, 0x18, - 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, - 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x50, 0x66, 0x63, 0x50, 0x61, 0x75, 0x73, 0x65, 0x50, - 0x61, 0x75, 0x73, 0x65, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x37, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, - 0x54, 0x61, 0x67, 0x52, 0x0a, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x73, 0x1a, - 0x56, 0x0a, 0x06, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x22, 0x4c, 0x0a, 0x04, 0x45, 0x6e, 0x75, - 0x6d, 0x12, 0x0f, 0x0a, 0x0b, 0x75, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, - 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x10, 0x02, 0x12, 0x0a, 0x0a, - 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x10, 0x03, 0x12, 0x0d, 0x0a, 0x09, 0x69, 0x6e, 0x63, - 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x10, 0x04, 0x12, 0x0d, 0x0a, 0x09, 0x64, 0x65, 0x63, 0x72, - 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x10, 0x05, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x63, 0x68, 0x6f, 0x69, - 0x63, 0x65, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x90, 0x01, 0x0a, - 0x22, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x45, 0x74, 0x68, 0x65, - 0x72, 0x6e, 0x65, 0x74, 0x50, 0x61, 0x75, 0x73, 0x65, 0x44, 0x73, 0x74, 0x43, 0x6f, 0x75, 0x6e, - 0x74, 0x65, 0x72, 0x12, 0x19, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x48, 0x00, 0x52, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x88, 0x01, 0x01, 0x12, 0x17, - 0x0a, 0x04, 0x73, 0x74, 0x65, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, 0x52, 0x04, - 0x73, 0x74, 0x65, 0x70, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x02, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x88, - 0x01, 0x01, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x42, 0x07, 0x0a, 0x05, - 0x5f, 0x73, 0x74, 0x65, 0x70, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x22, - 0x98, 0x01, 0x0a, 0x24, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x45, - 0x74, 0x68, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x50, 0x61, 0x75, 0x73, 0x65, 0x44, 0x73, 0x74, 0x4d, - 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x12, 0x17, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x88, 0x01, - 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x0d, 0x48, 0x01, 0x52, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x88, 0x01, 0x01, 0x12, 0x1b, - 0x0a, 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x02, - 0x52, 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x88, 0x01, 0x01, 0x42, 0x07, 0x0a, 0x05, 0x5f, - 0x6e, 0x61, 0x6d, 0x65, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x42, - 0x09, 0x0a, 0x07, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x22, 0xe2, 0x03, 0x0a, 0x1b, 0x50, - 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x45, 0x74, 0x68, 0x65, 0x72, 0x6e, - 0x65, 0x74, 0x50, 0x61, 0x75, 0x73, 0x65, 0x44, 0x73, 0x74, 0x12, 0x49, 0x0a, 0x06, 0x63, 0x68, - 0x6f, 0x69, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2c, 0x2e, 0x6f, 0x74, 0x67, - 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x45, 0x74, 0x68, 0x65, - 0x72, 0x6e, 0x65, 0x74, 0x50, 0x61, 0x75, 0x73, 0x65, 0x44, 0x73, 0x74, 0x2e, 0x43, 0x68, 0x6f, + 0x75, 0x73, 0x65, 0x50, 0x61, 0x75, 0x73, 0x65, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x34, 0x4d, 0x65, + 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x52, 0x0a, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, + 0x61, 0x67, 0x73, 0x1a, 0x56, 0x0a, 0x06, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x22, 0x4c, 0x0a, + 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x0a, 0x0b, 0x75, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, + 0x66, 0x69, 0x65, 0x64, 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x10, + 0x02, 0x12, 0x0a, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x10, 0x03, 0x12, 0x0d, 0x0a, + 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x10, 0x04, 0x12, 0x0d, 0x0a, 0x09, + 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x10, 0x05, 0x42, 0x09, 0x0a, 0x07, 0x5f, + 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, + 0x22, 0x93, 0x01, 0x0a, 0x25, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, + 0x50, 0x66, 0x63, 0x50, 0x61, 0x75, 0x73, 0x65, 0x50, 0x61, 0x75, 0x73, 0x65, 0x43, 0x6c, 0x61, + 0x73, 0x73, 0x35, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x12, 0x19, 0x0a, 0x05, 0x73, 0x74, + 0x61, 0x72, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x00, 0x52, 0x05, 0x73, 0x74, 0x61, + 0x72, 0x74, 0x88, 0x01, 0x01, 0x12, 0x17, 0x0a, 0x04, 0x73, 0x74, 0x65, 0x70, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x04, 0x73, 0x74, 0x65, 0x70, 0x88, 0x01, 0x01, 0x12, 0x19, + 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x02, 0x52, + 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x88, 0x01, 0x01, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x73, 0x74, + 0x61, 0x72, 0x74, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x73, 0x74, 0x65, 0x70, 0x42, 0x08, 0x0a, 0x06, + 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x9b, 0x01, 0x0a, 0x27, 0x50, 0x61, 0x74, 0x74, 0x65, + 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x50, 0x66, 0x63, 0x50, 0x61, 0x75, 0x73, 0x65, 0x50, 0x61, + 0x75, 0x73, 0x65, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x35, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, + 0x61, 0x67, 0x12, 0x17, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x48, 0x00, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x6f, + 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x06, 0x6f, + 0x66, 0x66, 0x73, 0x65, 0x74, 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x6c, 0x65, 0x6e, 0x67, + 0x74, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x02, 0x52, 0x06, 0x6c, 0x65, 0x6e, 0x67, + 0x74, 0x68, 0x88, 0x01, 0x01, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x42, 0x09, + 0x0a, 0x07, 0x5f, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6c, 0x65, + 0x6e, 0x67, 0x74, 0x68, 0x22, 0xf1, 0x03, 0x0a, 0x1e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, + 0x46, 0x6c, 0x6f, 0x77, 0x50, 0x66, 0x63, 0x50, 0x61, 0x75, 0x73, 0x65, 0x50, 0x61, 0x75, 0x73, + 0x65, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x35, 0x12, 0x4c, 0x0a, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, + 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2f, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, + 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x50, 0x66, 0x63, 0x50, 0x61, 0x75, 0x73, + 0x65, 0x50, 0x61, 0x75, 0x73, 0x65, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x35, 0x2e, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x48, 0x00, 0x52, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x88, 0x01, 0x01, - 0x12, 0x16, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, - 0x52, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x12, 0x45, 0x0a, 0x09, 0x69, 0x6e, 0x63, 0x72, - 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x6f, 0x74, - 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x45, 0x74, 0x68, - 0x65, 0x72, 0x6e, 0x65, 0x74, 0x50, 0x61, 0x75, 0x73, 0x65, 0x44, 0x73, 0x74, 0x43, 0x6f, 0x75, - 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, - 0x45, 0x0a, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, - 0x46, 0x6c, 0x6f, 0x77, 0x45, 0x74, 0x68, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x50, 0x61, 0x75, 0x73, - 0x65, 0x44, 0x73, 0x74, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, 0x64, 0x65, 0x63, - 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x4a, 0x0a, 0x0b, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, - 0x5f, 0x74, 0x61, 0x67, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x6f, 0x74, - 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x45, 0x74, 0x68, - 0x65, 0x72, 0x6e, 0x65, 0x74, 0x50, 0x61, 0x75, 0x73, 0x65, 0x44, 0x73, 0x74, 0x4d, 0x65, 0x74, - 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x52, 0x0a, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, - 0x67, 0x73, 0x1a, 0x56, 0x0a, 0x06, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x22, 0x4c, 0x0a, 0x04, - 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x0a, 0x0b, 0x75, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, - 0x69, 0x65, 0x64, 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x10, 0x02, - 0x12, 0x0a, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x10, 0x03, 0x12, 0x0d, 0x0a, 0x09, - 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x10, 0x04, 0x12, 0x0d, 0x0a, 0x09, 0x64, - 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x10, 0x05, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x63, - 0x68, 0x6f, 0x69, 0x63, 0x65, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, - 0x90, 0x01, 0x0a, 0x22, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x45, - 0x74, 0x68, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x50, 0x61, 0x75, 0x73, 0x65, 0x53, 0x72, 0x63, 0x43, - 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x12, 0x19, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x88, 0x01, - 0x01, 0x12, 0x17, 0x0a, 0x04, 0x73, 0x74, 0x65, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, - 0x01, 0x52, 0x04, 0x73, 0x74, 0x65, 0x70, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x63, 0x6f, - 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x02, 0x52, 0x05, 0x63, 0x6f, 0x75, - 0x6e, 0x74, 0x88, 0x01, 0x01, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x42, - 0x07, 0x0a, 0x05, 0x5f, 0x73, 0x74, 0x65, 0x70, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x63, 0x6f, 0x75, - 0x6e, 0x74, 0x22, 0x98, 0x01, 0x0a, 0x24, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, - 0x6f, 0x77, 0x45, 0x74, 0x68, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x50, 0x61, 0x75, 0x73, 0x65, 0x53, - 0x72, 0x63, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x12, 0x17, 0x0a, 0x04, 0x6e, - 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x04, 0x6e, 0x61, 0x6d, - 0x65, 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x88, 0x01, - 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x0d, 0x48, 0x02, 0x52, 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x88, 0x01, 0x01, 0x42, 0x07, - 0x0a, 0x05, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6f, 0x66, 0x66, 0x73, - 0x65, 0x74, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x22, 0xe2, 0x03, - 0x0a, 0x1b, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x45, 0x74, 0x68, - 0x65, 0x72, 0x6e, 0x65, 0x74, 0x50, 0x61, 0x75, 0x73, 0x65, 0x53, 0x72, 0x63, 0x12, 0x49, 0x0a, - 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2c, 0x2e, - 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x45, - 0x74, 0x68, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x50, 0x61, 0x75, 0x73, 0x65, 0x53, 0x72, 0x63, 0x2e, - 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x48, 0x00, 0x52, 0x06, 0x63, - 0x68, 0x6f, 0x69, 0x63, 0x65, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, - 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, - 0x88, 0x01, 0x01, 0x12, 0x16, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x03, 0x20, - 0x03, 0x28, 0x09, 0x52, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x12, 0x45, 0x0a, 0x09, 0x69, - 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, - 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, - 0x45, 0x74, 0x68, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x50, 0x61, 0x75, 0x73, 0x65, 0x53, 0x72, 0x63, + 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x88, 0x01, 0x01, + 0x12, 0x16, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0d, + 0x52, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x12, 0x48, 0x0a, 0x09, 0x69, 0x6e, 0x63, 0x72, + 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x6f, 0x74, + 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x50, 0x66, 0x63, + 0x50, 0x61, 0x75, 0x73, 0x65, 0x50, 0x61, 0x75, 0x73, 0x65, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x35, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, - 0x6e, 0x74, 0x12, 0x45, 0x0a, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, - 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, - 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x45, 0x74, 0x68, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x50, - 0x61, 0x75, 0x73, 0x65, 0x53, 0x72, 0x63, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, - 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x4a, 0x0a, 0x0b, 0x6d, 0x65, 0x74, - 0x72, 0x69, 0x63, 0x5f, 0x74, 0x61, 0x67, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x29, - 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, - 0x45, 0x74, 0x68, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x50, 0x61, 0x75, 0x73, 0x65, 0x53, 0x72, 0x63, - 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x52, 0x0a, 0x6d, 0x65, 0x74, 0x72, 0x69, - 0x63, 0x54, 0x61, 0x67, 0x73, 0x1a, 0x56, 0x0a, 0x06, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x22, - 0x4c, 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x0a, 0x0b, 0x75, 0x6e, 0x73, 0x70, 0x65, - 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, - 0x65, 0x10, 0x02, 0x12, 0x0a, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x10, 0x03, 0x12, - 0x0d, 0x0a, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x10, 0x04, 0x12, 0x0d, - 0x0a, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x10, 0x05, 0x42, 0x09, 0x0a, - 0x07, 0x5f, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x76, 0x61, 0x6c, - 0x75, 0x65, 0x22, 0x96, 0x01, 0x0a, 0x28, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, - 0x6f, 0x77, 0x45, 0x74, 0x68, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x50, 0x61, 0x75, 0x73, 0x65, 0x45, - 0x74, 0x68, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x12, - 0x19, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x00, - 0x52, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x88, 0x01, 0x01, 0x12, 0x17, 0x0a, 0x04, 0x73, 0x74, - 0x65, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x04, 0x73, 0x74, 0x65, 0x70, - 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x0d, 0x48, 0x02, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x88, 0x01, 0x01, 0x42, 0x08, - 0x0a, 0x06, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x73, 0x74, 0x65, - 0x70, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x9e, 0x01, 0x0a, 0x2a, - 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x45, 0x74, 0x68, 0x65, 0x72, - 0x6e, 0x65, 0x74, 0x50, 0x61, 0x75, 0x73, 0x65, 0x45, 0x74, 0x68, 0x65, 0x72, 0x54, 0x79, 0x70, - 0x65, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x12, 0x17, 0x0a, 0x04, 0x6e, 0x61, + 0x6e, 0x74, 0x12, 0x48, 0x0a, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, + 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, + 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x50, 0x66, 0x63, 0x50, 0x61, 0x75, 0x73, 0x65, 0x50, + 0x61, 0x75, 0x73, 0x65, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x35, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, + 0x72, 0x52, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x4d, 0x0a, 0x0b, + 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x5f, 0x74, 0x61, 0x67, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x2c, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, + 0x6c, 0x6f, 0x77, 0x50, 0x66, 0x63, 0x50, 0x61, 0x75, 0x73, 0x65, 0x50, 0x61, 0x75, 0x73, 0x65, + 0x43, 0x6c, 0x61, 0x73, 0x73, 0x35, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x52, + 0x0a, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x73, 0x1a, 0x56, 0x0a, 0x06, 0x43, + 0x68, 0x6f, 0x69, 0x63, 0x65, 0x22, 0x4c, 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x0a, + 0x0b, 0x75, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x10, 0x00, 0x12, 0x09, + 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x10, 0x02, 0x12, 0x0a, 0x0a, 0x06, 0x76, 0x61, 0x6c, + 0x75, 0x65, 0x73, 0x10, 0x03, 0x12, 0x0d, 0x0a, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, + 0x6e, 0x74, 0x10, 0x04, 0x12, 0x0d, 0x0a, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, + 0x74, 0x10, 0x05, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x42, 0x08, + 0x0a, 0x06, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x93, 0x01, 0x0a, 0x25, 0x50, 0x61, 0x74, + 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x50, 0x66, 0x63, 0x50, 0x61, 0x75, 0x73, 0x65, + 0x50, 0x61, 0x75, 0x73, 0x65, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x36, 0x43, 0x6f, 0x75, 0x6e, 0x74, + 0x65, 0x72, 0x12, 0x19, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x0d, 0x48, 0x00, 0x52, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x88, 0x01, 0x01, 0x12, 0x17, 0x0a, + 0x04, 0x73, 0x74, 0x65, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x04, 0x73, + 0x74, 0x65, 0x70, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x02, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x88, 0x01, + 0x01, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x42, 0x07, 0x0a, 0x05, 0x5f, + 0x73, 0x74, 0x65, 0x70, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x9b, + 0x01, 0x0a, 0x27, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x50, 0x66, + 0x63, 0x50, 0x61, 0x75, 0x73, 0x65, 0x50, 0x61, 0x75, 0x73, 0x65, 0x43, 0x6c, 0x61, 0x73, 0x73, + 0x36, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x12, 0x17, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x02, 0x52, 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x88, 0x01, 0x01, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6f, 0x66, 0x66, 0x73, 0x65, - 0x74, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x22, 0x80, 0x04, 0x0a, - 0x21, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x45, 0x74, 0x68, 0x65, - 0x72, 0x6e, 0x65, 0x74, 0x50, 0x61, 0x75, 0x73, 0x65, 0x45, 0x74, 0x68, 0x65, 0x72, 0x54, 0x79, - 0x70, 0x65, 0x12, 0x4f, 0x0a, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x0e, 0x32, 0x32, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, - 0x46, 0x6c, 0x6f, 0x77, 0x45, 0x74, 0x68, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x50, 0x61, 0x75, 0x73, - 0x65, 0x45, 0x74, 0x68, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x2e, 0x43, 0x68, 0x6f, 0x69, 0x63, - 0x65, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x48, 0x00, 0x52, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, - 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x0d, 0x48, 0x01, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x88, 0x01, 0x01, 0x12, 0x16, - 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0d, 0x52, 0x06, - 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x12, 0x4b, 0x0a, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, - 0x65, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x6f, 0x74, 0x67, 0x2e, - 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x45, 0x74, 0x68, 0x65, 0x72, - 0x6e, 0x65, 0x74, 0x50, 0x61, 0x75, 0x73, 0x65, 0x45, 0x74, 0x68, 0x65, 0x72, 0x54, 0x79, 0x70, - 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, - 0x65, 0x6e, 0x74, 0x12, 0x4b, 0x0a, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, - 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, - 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x45, 0x74, 0x68, 0x65, 0x72, 0x6e, 0x65, 0x74, - 0x50, 0x61, 0x75, 0x73, 0x65, 0x45, 0x74, 0x68, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x43, 0x6f, - 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, - 0x12, 0x50, 0x0a, 0x0b, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x5f, 0x74, 0x61, 0x67, 0x73, 0x18, - 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, - 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x45, 0x74, 0x68, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x50, - 0x61, 0x75, 0x73, 0x65, 0x45, 0x74, 0x68, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x4d, 0x65, 0x74, - 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x52, 0x0a, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, - 0x67, 0x73, 0x1a, 0x56, 0x0a, 0x06, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x22, 0x4c, 0x0a, 0x04, - 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x0a, 0x0b, 0x75, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, - 0x69, 0x65, 0x64, 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x10, 0x02, - 0x12, 0x0a, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x10, 0x03, 0x12, 0x0d, 0x0a, 0x09, - 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x10, 0x04, 0x12, 0x0d, 0x0a, 0x09, 0x64, - 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x10, 0x05, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x63, - 0x68, 0x6f, 0x69, 0x63, 0x65, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, - 0x9a, 0x01, 0x0a, 0x2c, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x45, - 0x74, 0x68, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x50, 0x61, 0x75, 0x73, 0x65, 0x43, 0x6f, 0x6e, 0x74, - 0x72, 0x6f, 0x6c, 0x4f, 0x70, 0x43, 0x6f, 0x64, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, - 0x12, 0x19, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x48, - 0x00, 0x52, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x88, 0x01, 0x01, 0x12, 0x17, 0x0a, 0x04, 0x73, - 0x74, 0x65, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x04, 0x73, 0x74, 0x65, - 0x70, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x0d, 0x48, 0x02, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x88, 0x01, 0x01, 0x42, - 0x08, 0x0a, 0x06, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x73, 0x74, - 0x65, 0x70, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0xa2, 0x01, 0x0a, - 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x45, 0x74, 0x68, 0x65, - 0x72, 0x6e, 0x65, 0x74, 0x50, 0x61, 0x75, 0x73, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, - 0x4f, 0x70, 0x43, 0x6f, 0x64, 0x65, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x12, - 0x17, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, - 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x6f, 0x66, 0x66, 0x73, - 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x06, 0x6f, 0x66, 0x66, 0x73, - 0x65, 0x74, 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x02, 0x52, 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x88, - 0x01, 0x01, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x42, 0x09, 0x0a, 0x07, 0x5f, - 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, - 0x68, 0x22, 0x94, 0x04, 0x0a, 0x25, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, - 0x77, 0x45, 0x74, 0x68, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x50, 0x61, 0x75, 0x73, 0x65, 0x43, 0x6f, - 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x4f, 0x70, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x53, 0x0a, 0x06, 0x63, - 0x68, 0x6f, 0x69, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x36, 0x2e, 0x6f, 0x74, - 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x45, 0x74, 0x68, - 0x65, 0x72, 0x6e, 0x65, 0x74, 0x50, 0x61, 0x75, 0x73, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, - 0x6c, 0x4f, 0x70, 0x43, 0x6f, 0x64, 0x65, 0x2e, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x2e, 0x45, - 0x6e, 0x75, 0x6d, 0x48, 0x00, 0x52, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x88, 0x01, 0x01, - 0x12, 0x19, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, - 0x01, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x88, 0x01, 0x01, 0x12, 0x16, 0x0a, 0x06, 0x76, - 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0d, 0x52, 0x06, 0x76, 0x61, 0x6c, - 0x75, 0x65, 0x73, 0x12, 0x4f, 0x0a, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, - 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x31, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, - 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x45, 0x74, 0x68, 0x65, 0x72, 0x6e, 0x65, 0x74, - 0x50, 0x61, 0x75, 0x73, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x4f, 0x70, 0x43, 0x6f, - 0x64, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, - 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x4f, 0x0a, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, - 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x31, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, - 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x45, 0x74, 0x68, 0x65, 0x72, 0x6e, 0x65, - 0x74, 0x50, 0x61, 0x75, 0x73, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x4f, 0x70, 0x43, - 0x6f, 0x64, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, 0x64, 0x65, 0x63, 0x72, - 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x54, 0x0a, 0x0b, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x5f, - 0x74, 0x61, 0x67, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x33, 0x2e, 0x6f, 0x74, 0x67, - 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x45, 0x74, 0x68, 0x65, - 0x72, 0x6e, 0x65, 0x74, 0x50, 0x61, 0x75, 0x73, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, - 0x4f, 0x70, 0x43, 0x6f, 0x64, 0x65, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x52, + 0x74, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x22, 0xf1, 0x03, 0x0a, + 0x1e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x50, 0x66, 0x63, 0x50, + 0x61, 0x75, 0x73, 0x65, 0x50, 0x61, 0x75, 0x73, 0x65, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x36, 0x12, + 0x4c, 0x0a, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, + 0x2f, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, + 0x77, 0x50, 0x66, 0x63, 0x50, 0x61, 0x75, 0x73, 0x65, 0x50, 0x61, 0x75, 0x73, 0x65, 0x43, 0x6c, + 0x61, 0x73, 0x73, 0x36, 0x2e, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x2e, 0x45, 0x6e, 0x75, 0x6d, + 0x48, 0x00, 0x52, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, + 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x05, + 0x76, 0x61, 0x6c, 0x75, 0x65, 0x88, 0x01, 0x01, 0x12, 0x16, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, + 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0d, 0x52, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, + 0x12, 0x48, 0x0a, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x05, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, + 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x50, 0x66, 0x63, 0x50, 0x61, 0x75, 0x73, 0x65, 0x50, 0x61, 0x75, + 0x73, 0x65, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x36, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, + 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x48, 0x0a, 0x09, 0x64, 0x65, + 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, + 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x50, + 0x66, 0x63, 0x50, 0x61, 0x75, 0x73, 0x65, 0x50, 0x61, 0x75, 0x73, 0x65, 0x43, 0x6c, 0x61, 0x73, + 0x73, 0x36, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, + 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x4d, 0x0a, 0x0b, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x5f, 0x74, + 0x61, 0x67, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x6f, 0x74, 0x67, 0x2e, + 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x50, 0x66, 0x63, 0x50, 0x61, + 0x75, 0x73, 0x65, 0x50, 0x61, 0x75, 0x73, 0x65, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x36, 0x4d, 0x65, + 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x52, 0x0a, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, + 0x61, 0x67, 0x73, 0x1a, 0x56, 0x0a, 0x06, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x22, 0x4c, 0x0a, + 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x0a, 0x0b, 0x75, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, + 0x66, 0x69, 0x65, 0x64, 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x10, + 0x02, 0x12, 0x0a, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x10, 0x03, 0x12, 0x0d, 0x0a, + 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x10, 0x04, 0x12, 0x0d, 0x0a, 0x09, + 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x10, 0x05, 0x42, 0x09, 0x0a, 0x07, 0x5f, + 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, + 0x22, 0x93, 0x01, 0x0a, 0x25, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, + 0x50, 0x66, 0x63, 0x50, 0x61, 0x75, 0x73, 0x65, 0x50, 0x61, 0x75, 0x73, 0x65, 0x43, 0x6c, 0x61, + 0x73, 0x73, 0x37, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x12, 0x19, 0x0a, 0x05, 0x73, 0x74, + 0x61, 0x72, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x00, 0x52, 0x05, 0x73, 0x74, 0x61, + 0x72, 0x74, 0x88, 0x01, 0x01, 0x12, 0x17, 0x0a, 0x04, 0x73, 0x74, 0x65, 0x70, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x04, 0x73, 0x74, 0x65, 0x70, 0x88, 0x01, 0x01, 0x12, 0x19, + 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x02, 0x52, + 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x88, 0x01, 0x01, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x73, 0x74, + 0x61, 0x72, 0x74, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x73, 0x74, 0x65, 0x70, 0x42, 0x08, 0x0a, 0x06, + 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x9b, 0x01, 0x0a, 0x27, 0x50, 0x61, 0x74, 0x74, 0x65, + 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x50, 0x66, 0x63, 0x50, 0x61, 0x75, 0x73, 0x65, 0x50, 0x61, + 0x75, 0x73, 0x65, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x37, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, + 0x61, 0x67, 0x12, 0x17, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x48, 0x00, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x6f, + 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x06, 0x6f, + 0x66, 0x66, 0x73, 0x65, 0x74, 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x6c, 0x65, 0x6e, 0x67, + 0x74, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x02, 0x52, 0x06, 0x6c, 0x65, 0x6e, 0x67, + 0x74, 0x68, 0x88, 0x01, 0x01, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x42, 0x09, + 0x0a, 0x07, 0x5f, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6c, 0x65, + 0x6e, 0x67, 0x74, 0x68, 0x22, 0xf1, 0x03, 0x0a, 0x1e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, + 0x46, 0x6c, 0x6f, 0x77, 0x50, 0x66, 0x63, 0x50, 0x61, 0x75, 0x73, 0x65, 0x50, 0x61, 0x75, 0x73, + 0x65, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x37, 0x12, 0x4c, 0x0a, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, + 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2f, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, + 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x50, 0x66, 0x63, 0x50, 0x61, 0x75, 0x73, + 0x65, 0x50, 0x61, 0x75, 0x73, 0x65, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x37, 0x2e, 0x43, 0x68, 0x6f, + 0x69, 0x63, 0x65, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x48, 0x00, 0x52, 0x06, 0x63, 0x68, 0x6f, 0x69, + 0x63, 0x65, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x88, 0x01, 0x01, + 0x12, 0x16, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0d, + 0x52, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x12, 0x48, 0x0a, 0x09, 0x69, 0x6e, 0x63, 0x72, + 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x6f, 0x74, + 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x50, 0x66, 0x63, + 0x50, 0x61, 0x75, 0x73, 0x65, 0x50, 0x61, 0x75, 0x73, 0x65, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x37, + 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, + 0x6e, 0x74, 0x12, 0x48, 0x0a, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, + 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, + 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x50, 0x66, 0x63, 0x50, 0x61, 0x75, 0x73, 0x65, 0x50, + 0x61, 0x75, 0x73, 0x65, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x37, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, + 0x72, 0x52, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x4d, 0x0a, 0x0b, + 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x5f, 0x74, 0x61, 0x67, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x2c, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, + 0x6c, 0x6f, 0x77, 0x50, 0x66, 0x63, 0x50, 0x61, 0x75, 0x73, 0x65, 0x50, 0x61, 0x75, 0x73, 0x65, + 0x43, 0x6c, 0x61, 0x73, 0x73, 0x37, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x52, 0x0a, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x73, 0x1a, 0x56, 0x0a, 0x06, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x22, 0x4c, 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x0a, 0x0b, 0x75, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x10, 0x00, 0x12, 0x09, @@ -103387,18 +118118,117 @@ var file_otg_proto_rawDesc = []byte{ 0x75, 0x65, 0x73, 0x10, 0x03, 0x12, 0x0d, 0x0a, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x10, 0x04, 0x12, 0x0d, 0x0a, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x10, 0x05, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x42, 0x08, - 0x0a, 0x06, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x91, 0x01, 0x0a, 0x23, 0x50, 0x61, 0x74, + 0x0a, 0x06, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x90, 0x01, 0x0a, 0x22, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x45, 0x74, 0x68, 0x65, 0x72, 0x6e, 0x65, 0x74, - 0x50, 0x61, 0x75, 0x73, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, - 0x12, 0x19, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x48, - 0x00, 0x52, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x88, 0x01, 0x01, 0x12, 0x17, 0x0a, 0x04, 0x73, - 0x74, 0x65, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x04, 0x73, 0x74, 0x65, - 0x70, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x0d, 0x48, 0x02, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x88, 0x01, 0x01, 0x42, - 0x08, 0x0a, 0x06, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x73, 0x74, - 0x65, 0x70, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x99, 0x01, 0x0a, - 0x25, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x45, 0x74, 0x68, 0x65, - 0x72, 0x6e, 0x65, 0x74, 0x50, 0x61, 0x75, 0x73, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x4d, 0x65, 0x74, + 0x50, 0x61, 0x75, 0x73, 0x65, 0x44, 0x73, 0x74, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x12, + 0x19, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, + 0x52, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x88, 0x01, 0x01, 0x12, 0x17, 0x0a, 0x04, 0x73, 0x74, + 0x65, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, 0x52, 0x04, 0x73, 0x74, 0x65, 0x70, + 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x0d, 0x48, 0x02, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x88, 0x01, 0x01, 0x42, 0x08, + 0x0a, 0x06, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x73, 0x74, 0x65, + 0x70, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x98, 0x01, 0x0a, 0x24, + 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x45, 0x74, 0x68, 0x65, 0x72, + 0x6e, 0x65, 0x74, 0x50, 0x61, 0x75, 0x73, 0x65, 0x44, 0x73, 0x74, 0x4d, 0x65, 0x74, 0x72, 0x69, + 0x63, 0x54, 0x61, 0x67, 0x12, 0x17, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x48, 0x00, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, + 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, + 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x6c, 0x65, + 0x6e, 0x67, 0x74, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x02, 0x52, 0x06, 0x6c, 0x65, + 0x6e, 0x67, 0x74, 0x68, 0x88, 0x01, 0x01, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x6e, 0x61, 0x6d, 0x65, + 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x42, 0x09, 0x0a, 0x07, 0x5f, + 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x22, 0xe2, 0x03, 0x0a, 0x1b, 0x50, 0x61, 0x74, 0x74, 0x65, + 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x45, 0x74, 0x68, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x50, 0x61, + 0x75, 0x73, 0x65, 0x44, 0x73, 0x74, 0x12, 0x49, 0x0a, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2c, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, + 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x45, 0x74, 0x68, 0x65, 0x72, 0x6e, 0x65, 0x74, + 0x50, 0x61, 0x75, 0x73, 0x65, 0x44, 0x73, 0x74, 0x2e, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x2e, + 0x45, 0x6e, 0x75, 0x6d, 0x48, 0x00, 0x52, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x88, 0x01, + 0x01, 0x12, 0x19, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, + 0x48, 0x01, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x88, 0x01, 0x01, 0x12, 0x16, 0x0a, 0x06, + 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x06, 0x76, 0x61, + 0x6c, 0x75, 0x65, 0x73, 0x12, 0x45, 0x0a, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, + 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, + 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x45, 0x74, 0x68, 0x65, 0x72, 0x6e, 0x65, + 0x74, 0x50, 0x61, 0x75, 0x73, 0x65, 0x44, 0x73, 0x74, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, + 0x52, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x45, 0x0a, 0x09, 0x64, + 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, + 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, + 0x45, 0x74, 0x68, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x50, 0x61, 0x75, 0x73, 0x65, 0x44, 0x73, 0x74, + 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, + 0x6e, 0x74, 0x12, 0x4a, 0x0a, 0x0b, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x5f, 0x74, 0x61, 0x67, + 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, + 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x45, 0x74, 0x68, 0x65, 0x72, 0x6e, 0x65, + 0x74, 0x50, 0x61, 0x75, 0x73, 0x65, 0x44, 0x73, 0x74, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, + 0x61, 0x67, 0x52, 0x0a, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x73, 0x1a, 0x56, + 0x0a, 0x06, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x22, 0x4c, 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, + 0x12, 0x0f, 0x0a, 0x0b, 0x75, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x10, + 0x00, 0x12, 0x09, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x10, 0x02, 0x12, 0x0a, 0x0a, 0x06, + 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x10, 0x03, 0x12, 0x0d, 0x0a, 0x09, 0x69, 0x6e, 0x63, 0x72, + 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x10, 0x04, 0x12, 0x0d, 0x0a, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, + 0x6d, 0x65, 0x6e, 0x74, 0x10, 0x05, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x63, 0x68, 0x6f, 0x69, 0x63, + 0x65, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x90, 0x01, 0x0a, 0x22, + 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x45, 0x74, 0x68, 0x65, 0x72, + 0x6e, 0x65, 0x74, 0x50, 0x61, 0x75, 0x73, 0x65, 0x53, 0x72, 0x63, 0x43, 0x6f, 0x75, 0x6e, 0x74, + 0x65, 0x72, 0x12, 0x19, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x48, 0x00, 0x52, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x88, 0x01, 0x01, 0x12, 0x17, 0x0a, + 0x04, 0x73, 0x74, 0x65, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, 0x52, 0x04, 0x73, + 0x74, 0x65, 0x70, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x02, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x88, 0x01, + 0x01, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x42, 0x07, 0x0a, 0x05, 0x5f, + 0x73, 0x74, 0x65, 0x70, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x98, + 0x01, 0x0a, 0x24, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x45, 0x74, + 0x68, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x50, 0x61, 0x75, 0x73, 0x65, 0x53, 0x72, 0x63, 0x4d, 0x65, + 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x12, 0x17, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x88, 0x01, 0x01, + 0x12, 0x1b, 0x0a, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, + 0x48, 0x01, 0x52, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, + 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x02, 0x52, + 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x88, 0x01, 0x01, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x6e, + 0x61, 0x6d, 0x65, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x42, 0x09, + 0x0a, 0x07, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x22, 0xe2, 0x03, 0x0a, 0x1b, 0x50, 0x61, + 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x45, 0x74, 0x68, 0x65, 0x72, 0x6e, 0x65, + 0x74, 0x50, 0x61, 0x75, 0x73, 0x65, 0x53, 0x72, 0x63, 0x12, 0x49, 0x0a, 0x06, 0x63, 0x68, 0x6f, + 0x69, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2c, 0x2e, 0x6f, 0x74, 0x67, 0x2e, + 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x45, 0x74, 0x68, 0x65, 0x72, + 0x6e, 0x65, 0x74, 0x50, 0x61, 0x75, 0x73, 0x65, 0x53, 0x72, 0x63, 0x2e, 0x43, 0x68, 0x6f, 0x69, + 0x63, 0x65, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x48, 0x00, 0x52, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, + 0x65, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x09, 0x48, 0x01, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x88, 0x01, 0x01, 0x12, + 0x16, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, + 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x12, 0x45, 0x0a, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, + 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x6f, 0x74, 0x67, + 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x45, 0x74, 0x68, 0x65, + 0x72, 0x6e, 0x65, 0x74, 0x50, 0x61, 0x75, 0x73, 0x65, 0x53, 0x72, 0x63, 0x43, 0x6f, 0x75, 0x6e, + 0x74, 0x65, 0x72, 0x52, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x45, + 0x0a, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x27, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, + 0x6c, 0x6f, 0x77, 0x45, 0x74, 0x68, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x50, 0x61, 0x75, 0x73, 0x65, + 0x53, 0x72, 0x63, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, 0x64, 0x65, 0x63, 0x72, + 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x4a, 0x0a, 0x0b, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x5f, + 0x74, 0x61, 0x67, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x6f, 0x74, 0x67, + 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x45, 0x74, 0x68, 0x65, + 0x72, 0x6e, 0x65, 0x74, 0x50, 0x61, 0x75, 0x73, 0x65, 0x53, 0x72, 0x63, 0x4d, 0x65, 0x74, 0x72, + 0x69, 0x63, 0x54, 0x61, 0x67, 0x52, 0x0a, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, + 0x73, 0x1a, 0x56, 0x0a, 0x06, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x22, 0x4c, 0x0a, 0x04, 0x45, + 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x0a, 0x0b, 0x75, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, + 0x65, 0x64, 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x10, 0x02, 0x12, + 0x0a, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x10, 0x03, 0x12, 0x0d, 0x0a, 0x09, 0x69, + 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x10, 0x04, 0x12, 0x0d, 0x0a, 0x09, 0x64, 0x65, + 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x10, 0x05, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x63, 0x68, + 0x6f, 0x69, 0x63, 0x65, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x96, + 0x01, 0x0a, 0x28, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x45, 0x74, + 0x68, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x50, 0x61, 0x75, 0x73, 0x65, 0x45, 0x74, 0x68, 0x65, 0x72, + 0x54, 0x79, 0x70, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x12, 0x19, 0x0a, 0x05, 0x73, + 0x74, 0x61, 0x72, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x00, 0x52, 0x05, 0x73, 0x74, + 0x61, 0x72, 0x74, 0x88, 0x01, 0x01, 0x12, 0x17, 0x0a, 0x04, 0x73, 0x74, 0x65, 0x70, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x04, 0x73, 0x74, 0x65, 0x70, 0x88, 0x01, 0x01, 0x12, + 0x19, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x02, + 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x88, 0x01, 0x01, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x73, + 0x74, 0x61, 0x72, 0x74, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x73, 0x74, 0x65, 0x70, 0x42, 0x08, 0x0a, + 0x06, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x9e, 0x01, 0x0a, 0x2a, 0x50, 0x61, 0x74, 0x74, + 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x45, 0x74, 0x68, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x50, + 0x61, 0x75, 0x73, 0x65, 0x45, 0x74, 0x68, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x12, 0x17, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, @@ -103406,76 +118236,31 @@ var file_otg_proto_rawDesc = []byte{ 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x02, 0x52, 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x88, 0x01, 0x01, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x42, 0x09, 0x0a, - 0x07, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x22, 0xe7, 0x03, 0x0a, 0x1c, 0x50, 0x61, 0x74, + 0x07, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x22, 0x80, 0x04, 0x0a, 0x21, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x45, 0x74, 0x68, 0x65, 0x72, 0x6e, 0x65, 0x74, - 0x50, 0x61, 0x75, 0x73, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x4a, 0x0a, 0x06, 0x63, 0x68, 0x6f, - 0x69, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2d, 0x2e, 0x6f, 0x74, 0x67, 0x2e, - 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x45, 0x74, 0x68, 0x65, 0x72, - 0x6e, 0x65, 0x74, 0x50, 0x61, 0x75, 0x73, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x2e, 0x43, 0x68, 0x6f, - 0x69, 0x63, 0x65, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x48, 0x00, 0x52, 0x06, 0x63, 0x68, 0x6f, 0x69, - 0x63, 0x65, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x88, 0x01, 0x01, - 0x12, 0x16, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0d, - 0x52, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x12, 0x46, 0x0a, 0x09, 0x69, 0x6e, 0x63, 0x72, - 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x6f, 0x74, - 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x45, 0x74, 0x68, - 0x65, 0x72, 0x6e, 0x65, 0x74, 0x50, 0x61, 0x75, 0x73, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x43, 0x6f, - 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, - 0x12, 0x46, 0x0a, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x06, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, - 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x45, 0x74, 0x68, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x50, 0x61, 0x75, - 0x73, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, 0x64, - 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x4b, 0x0a, 0x0b, 0x6d, 0x65, 0x74, 0x72, - 0x69, 0x63, 0x5f, 0x74, 0x61, 0x67, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2a, 0x2e, - 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x45, - 0x74, 0x68, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x50, 0x61, 0x75, 0x73, 0x65, 0x54, 0x69, 0x6d, 0x65, - 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x52, 0x0a, 0x6d, 0x65, 0x74, 0x72, 0x69, - 0x63, 0x54, 0x61, 0x67, 0x73, 0x1a, 0x56, 0x0a, 0x06, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x22, - 0x4c, 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x0a, 0x0b, 0x75, 0x6e, 0x73, 0x70, 0x65, - 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, - 0x65, 0x10, 0x02, 0x12, 0x0a, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x10, 0x03, 0x12, - 0x0d, 0x0a, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x10, 0x04, 0x12, 0x0d, - 0x0a, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x10, 0x05, 0x42, 0x09, 0x0a, - 0x07, 0x5f, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x76, 0x61, 0x6c, - 0x75, 0x65, 0x22, 0x8a, 0x01, 0x0a, 0x1c, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, - 0x6f, 0x77, 0x54, 0x63, 0x70, 0x53, 0x72, 0x63, 0x50, 0x6f, 0x72, 0x74, 0x43, 0x6f, 0x75, 0x6e, - 0x74, 0x65, 0x72, 0x12, 0x19, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x0d, 0x48, 0x00, 0x52, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x88, 0x01, 0x01, 0x12, 0x17, - 0x0a, 0x04, 0x73, 0x74, 0x65, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x04, - 0x73, 0x74, 0x65, 0x70, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x02, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x88, - 0x01, 0x01, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x42, 0x07, 0x0a, 0x05, - 0x5f, 0x73, 0x74, 0x65, 0x70, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x22, - 0x92, 0x01, 0x0a, 0x1e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x54, - 0x63, 0x70, 0x53, 0x72, 0x63, 0x50, 0x6f, 0x72, 0x74, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, - 0x61, 0x67, 0x12, 0x17, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x48, 0x00, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x6f, - 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x06, 0x6f, - 0x66, 0x66, 0x73, 0x65, 0x74, 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x6c, 0x65, 0x6e, 0x67, - 0x74, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x02, 0x52, 0x06, 0x6c, 0x65, 0x6e, 0x67, - 0x74, 0x68, 0x88, 0x01, 0x01, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x42, 0x09, - 0x0a, 0x07, 0x5f, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6c, 0x65, - 0x6e, 0x67, 0x74, 0x68, 0x22, 0xc4, 0x03, 0x0a, 0x15, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, - 0x46, 0x6c, 0x6f, 0x77, 0x54, 0x63, 0x70, 0x53, 0x72, 0x63, 0x50, 0x6f, 0x72, 0x74, 0x12, 0x43, - 0x0a, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x26, + 0x50, 0x61, 0x75, 0x73, 0x65, 0x45, 0x74, 0x68, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x12, 0x4f, + 0x0a, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x32, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, - 0x54, 0x63, 0x70, 0x53, 0x72, 0x63, 0x50, 0x6f, 0x72, 0x74, 0x2e, 0x43, 0x68, 0x6f, 0x69, 0x63, - 0x65, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x48, 0x00, 0x52, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, - 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x0d, 0x48, 0x01, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x88, 0x01, 0x01, 0x12, 0x16, - 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0d, 0x52, 0x06, - 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x12, 0x3f, 0x0a, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, - 0x65, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x6f, 0x74, 0x67, 0x2e, - 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x54, 0x63, 0x70, 0x53, 0x72, - 0x63, 0x50, 0x6f, 0x72, 0x74, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, 0x69, 0x6e, - 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x3f, 0x0a, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, - 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x6f, 0x74, 0x67, - 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x54, 0x63, 0x70, 0x53, - 0x72, 0x63, 0x50, 0x6f, 0x72, 0x74, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, 0x64, - 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x44, 0x0a, 0x0b, 0x6d, 0x65, 0x74, 0x72, - 0x69, 0x63, 0x5f, 0x74, 0x61, 0x67, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x23, 0x2e, - 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x54, - 0x63, 0x70, 0x53, 0x72, 0x63, 0x50, 0x6f, 0x72, 0x74, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, + 0x45, 0x74, 0x68, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x50, 0x61, 0x75, 0x73, 0x65, 0x45, 0x74, 0x68, + 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x2e, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x2e, 0x45, 0x6e, + 0x75, 0x6d, 0x48, 0x00, 0x52, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x88, 0x01, 0x01, 0x12, + 0x19, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, + 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x88, 0x01, 0x01, 0x12, 0x16, 0x0a, 0x06, 0x76, 0x61, + 0x6c, 0x75, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0d, 0x52, 0x06, 0x76, 0x61, 0x6c, 0x75, + 0x65, 0x73, 0x12, 0x4b, 0x0a, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, + 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, + 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x45, 0x74, 0x68, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x50, + 0x61, 0x75, 0x73, 0x65, 0x45, 0x74, 0x68, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x43, 0x6f, 0x75, + 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, + 0x4b, 0x0a, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, + 0x46, 0x6c, 0x6f, 0x77, 0x45, 0x74, 0x68, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x50, 0x61, 0x75, 0x73, + 0x65, 0x45, 0x74, 0x68, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, + 0x72, 0x52, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x50, 0x0a, 0x0b, + 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x5f, 0x74, 0x61, 0x67, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x2f, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, + 0x6c, 0x6f, 0x77, 0x45, 0x74, 0x68, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x50, 0x61, 0x75, 0x73, 0x65, + 0x45, 0x74, 0x68, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x52, 0x0a, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x73, 0x1a, 0x56, 0x0a, 0x06, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x22, 0x4c, 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x0a, 0x0b, 0x75, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x10, @@ -103483,46 +118268,53 @@ var file_otg_proto_rawDesc = []byte{ 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x10, 0x03, 0x12, 0x0d, 0x0a, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x10, 0x04, 0x12, 0x0d, 0x0a, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x10, 0x05, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x63, 0x68, 0x6f, 0x69, 0x63, - 0x65, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x8a, 0x01, 0x0a, 0x1c, - 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x54, 0x63, 0x70, 0x44, 0x73, - 0x74, 0x50, 0x6f, 0x72, 0x74, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x12, 0x19, 0x0a, 0x05, + 0x65, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x9a, 0x01, 0x0a, 0x2c, + 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x45, 0x74, 0x68, 0x65, 0x72, + 0x6e, 0x65, 0x74, 0x50, 0x61, 0x75, 0x73, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x4f, + 0x70, 0x43, 0x6f, 0x64, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x12, 0x19, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x00, 0x52, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x88, 0x01, 0x01, 0x12, 0x17, 0x0a, 0x04, 0x73, 0x74, 0x65, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x04, 0x73, 0x74, 0x65, 0x70, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x02, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x88, 0x01, 0x01, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x73, 0x74, 0x65, 0x70, 0x42, 0x08, - 0x0a, 0x06, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x92, 0x01, 0x0a, 0x1e, 0x50, 0x61, 0x74, - 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x54, 0x63, 0x70, 0x44, 0x73, 0x74, 0x50, 0x6f, - 0x72, 0x74, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x12, 0x17, 0x0a, 0x04, 0x6e, + 0x0a, 0x06, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0xa2, 0x01, 0x0a, 0x2e, 0x50, 0x61, 0x74, + 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x45, 0x74, 0x68, 0x65, 0x72, 0x6e, 0x65, 0x74, + 0x50, 0x61, 0x75, 0x73, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x4f, 0x70, 0x43, 0x6f, + 0x64, 0x65, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x12, 0x17, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x02, 0x52, 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x88, 0x01, 0x01, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6f, 0x66, 0x66, 0x73, - 0x65, 0x74, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x22, 0xc4, 0x03, - 0x0a, 0x15, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x54, 0x63, 0x70, - 0x44, 0x73, 0x74, 0x50, 0x6f, 0x72, 0x74, 0x12, 0x43, 0x0a, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, - 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x26, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, - 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x54, 0x63, 0x70, 0x44, 0x73, 0x74, 0x50, - 0x6f, 0x72, 0x74, 0x2e, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x48, + 0x65, 0x74, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x22, 0x94, 0x04, + 0x0a, 0x25, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x45, 0x74, 0x68, + 0x65, 0x72, 0x6e, 0x65, 0x74, 0x50, 0x61, 0x75, 0x73, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, + 0x6c, 0x4f, 0x70, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x53, 0x0a, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, + 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x36, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, + 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x45, 0x74, 0x68, 0x65, 0x72, 0x6e, 0x65, + 0x74, 0x50, 0x61, 0x75, 0x73, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x4f, 0x70, 0x43, + 0x6f, 0x64, 0x65, 0x2e, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x48, 0x00, 0x52, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x88, 0x01, 0x01, 0x12, 0x16, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0d, 0x52, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x12, - 0x3f, 0x0a, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, - 0x46, 0x6c, 0x6f, 0x77, 0x54, 0x63, 0x70, 0x44, 0x73, 0x74, 0x50, 0x6f, 0x72, 0x74, 0x43, 0x6f, + 0x4f, 0x0a, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x31, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, + 0x46, 0x6c, 0x6f, 0x77, 0x45, 0x74, 0x68, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x50, 0x61, 0x75, 0x73, + 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x4f, 0x70, 0x43, 0x6f, 0x64, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, - 0x12, 0x3f, 0x0a, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x06, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, - 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x54, 0x63, 0x70, 0x44, 0x73, 0x74, 0x50, 0x6f, 0x72, 0x74, 0x43, + 0x12, 0x4f, 0x0a, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x06, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x31, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, + 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x45, 0x74, 0x68, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x50, 0x61, 0x75, + 0x73, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x4f, 0x70, 0x43, 0x6f, 0x64, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, - 0x74, 0x12, 0x44, 0x0a, 0x0b, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x5f, 0x74, 0x61, 0x67, 0x73, - 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, - 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x54, 0x63, 0x70, 0x44, 0x73, 0x74, 0x50, 0x6f, - 0x72, 0x74, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x52, 0x0a, 0x6d, 0x65, 0x74, + 0x74, 0x12, 0x54, 0x0a, 0x0b, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x5f, 0x74, 0x61, 0x67, 0x73, + 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x33, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, + 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x45, 0x74, 0x68, 0x65, 0x72, 0x6e, 0x65, 0x74, + 0x50, 0x61, 0x75, 0x73, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x4f, 0x70, 0x43, 0x6f, + 0x64, 0x65, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x52, 0x0a, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x73, 0x1a, 0x56, 0x0a, 0x06, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x22, 0x4c, 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x0a, 0x0b, 0x75, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, 0x76, 0x61, @@ -103530,17 +118322,18 @@ var file_otg_proto_rawDesc = []byte{ 0x03, 0x12, 0x0d, 0x0a, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x10, 0x04, 0x12, 0x0d, 0x0a, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x10, 0x05, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x76, - 0x61, 0x6c, 0x75, 0x65, 0x22, 0x89, 0x01, 0x0a, 0x1b, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, - 0x46, 0x6c, 0x6f, 0x77, 0x54, 0x63, 0x70, 0x53, 0x65, 0x71, 0x4e, 0x75, 0x6d, 0x43, 0x6f, 0x75, - 0x6e, 0x74, 0x65, 0x72, 0x12, 0x19, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x0d, 0x48, 0x00, 0x52, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x88, 0x01, 0x01, 0x12, - 0x17, 0x0a, 0x04, 0x73, 0x74, 0x65, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, - 0x04, 0x73, 0x74, 0x65, 0x70, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, - 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x02, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, - 0x88, 0x01, 0x01, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x42, 0x07, 0x0a, - 0x05, 0x5f, 0x73, 0x74, 0x65, 0x70, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, - 0x22, 0x91, 0x01, 0x0a, 0x1d, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, - 0x54, 0x63, 0x70, 0x53, 0x65, 0x71, 0x4e, 0x75, 0x6d, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, + 0x61, 0x6c, 0x75, 0x65, 0x22, 0x91, 0x01, 0x0a, 0x23, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, + 0x46, 0x6c, 0x6f, 0x77, 0x45, 0x74, 0x68, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x50, 0x61, 0x75, 0x73, + 0x65, 0x54, 0x69, 0x6d, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x12, 0x19, 0x0a, 0x05, + 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x00, 0x52, 0x05, 0x73, + 0x74, 0x61, 0x72, 0x74, 0x88, 0x01, 0x01, 0x12, 0x17, 0x0a, 0x04, 0x73, 0x74, 0x65, 0x70, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x04, 0x73, 0x74, 0x65, 0x70, 0x88, 0x01, 0x01, + 0x12, 0x19, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x48, + 0x02, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x88, 0x01, 0x01, 0x42, 0x08, 0x0a, 0x06, 0x5f, + 0x73, 0x74, 0x61, 0x72, 0x74, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x73, 0x74, 0x65, 0x70, 0x42, 0x08, + 0x0a, 0x06, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x99, 0x01, 0x0a, 0x25, 0x50, 0x61, 0x74, + 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x45, 0x74, 0x68, 0x65, 0x72, 0x6e, 0x65, 0x74, + 0x50, 0x61, 0x75, 0x73, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x12, 0x17, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x06, 0x6f, @@ -103548,92 +118341,48 @@ var file_otg_proto_rawDesc = []byte{ 0x74, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x02, 0x52, 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x88, 0x01, 0x01, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6c, 0x65, - 0x6e, 0x67, 0x74, 0x68, 0x22, 0xbf, 0x03, 0x0a, 0x14, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, - 0x46, 0x6c, 0x6f, 0x77, 0x54, 0x63, 0x70, 0x53, 0x65, 0x71, 0x4e, 0x75, 0x6d, 0x12, 0x42, 0x0a, - 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x25, 0x2e, - 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x54, - 0x63, 0x70, 0x53, 0x65, 0x71, 0x4e, 0x75, 0x6d, 0x2e, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x2e, + 0x6e, 0x67, 0x74, 0x68, 0x22, 0xe7, 0x03, 0x0a, 0x1c, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, + 0x46, 0x6c, 0x6f, 0x77, 0x45, 0x74, 0x68, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x50, 0x61, 0x75, 0x73, + 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x4a, 0x0a, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2d, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, + 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x45, 0x74, 0x68, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x50, + 0x61, 0x75, 0x73, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x2e, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x48, 0x00, 0x52, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x88, 0x01, 0x01, 0x12, 0x16, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0d, 0x52, 0x06, 0x76, 0x61, - 0x6c, 0x75, 0x65, 0x73, 0x12, 0x3e, 0x0a, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, - 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, - 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x54, 0x63, 0x70, 0x53, 0x65, 0x71, 0x4e, - 0x75, 0x6d, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, - 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x3e, 0x0a, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, - 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, - 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x54, 0x63, 0x70, 0x53, 0x65, 0x71, 0x4e, - 0x75, 0x6d, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, - 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x43, 0x0a, 0x0b, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x5f, 0x74, - 0x61, 0x67, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x6f, 0x74, 0x67, 0x2e, - 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x54, 0x63, 0x70, 0x53, 0x65, - 0x71, 0x4e, 0x75, 0x6d, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x52, 0x0a, 0x6d, - 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x73, 0x1a, 0x56, 0x0a, 0x06, 0x43, 0x68, 0x6f, - 0x69, 0x63, 0x65, 0x22, 0x4c, 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x0a, 0x0b, 0x75, - 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, - 0x76, 0x61, 0x6c, 0x75, 0x65, 0x10, 0x02, 0x12, 0x0a, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, - 0x73, 0x10, 0x03, 0x12, 0x0d, 0x0a, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, - 0x10, 0x04, 0x12, 0x0d, 0x0a, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x10, - 0x05, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x42, 0x08, 0x0a, 0x06, - 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x89, 0x01, 0x0a, 0x1b, 0x50, 0x61, 0x74, 0x74, 0x65, - 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x54, 0x63, 0x70, 0x41, 0x63, 0x6b, 0x4e, 0x75, 0x6d, 0x43, - 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x12, 0x19, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x00, 0x52, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x88, 0x01, - 0x01, 0x12, 0x17, 0x0a, 0x04, 0x73, 0x74, 0x65, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, - 0x01, 0x52, 0x04, 0x73, 0x74, 0x65, 0x70, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x63, 0x6f, - 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x02, 0x52, 0x05, 0x63, 0x6f, 0x75, - 0x6e, 0x74, 0x88, 0x01, 0x01, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x42, - 0x07, 0x0a, 0x05, 0x5f, 0x73, 0x74, 0x65, 0x70, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x63, 0x6f, 0x75, - 0x6e, 0x74, 0x22, 0x91, 0x01, 0x0a, 0x1d, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, - 0x6f, 0x77, 0x54, 0x63, 0x70, 0x41, 0x63, 0x6b, 0x4e, 0x75, 0x6d, 0x4d, 0x65, 0x74, 0x72, 0x69, - 0x63, 0x54, 0x61, 0x67, 0x12, 0x17, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x48, 0x00, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, - 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, - 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x6c, 0x65, - 0x6e, 0x67, 0x74, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x02, 0x52, 0x06, 0x6c, 0x65, - 0x6e, 0x67, 0x74, 0x68, 0x88, 0x01, 0x01, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x6e, 0x61, 0x6d, 0x65, - 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x42, 0x09, 0x0a, 0x07, 0x5f, - 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x22, 0xbf, 0x03, 0x0a, 0x14, 0x50, 0x61, 0x74, 0x74, 0x65, - 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x54, 0x63, 0x70, 0x41, 0x63, 0x6b, 0x4e, 0x75, 0x6d, 0x12, - 0x42, 0x0a, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, - 0x25, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, - 0x77, 0x54, 0x63, 0x70, 0x41, 0x63, 0x6b, 0x4e, 0x75, 0x6d, 0x2e, 0x43, 0x68, 0x6f, 0x69, 0x63, - 0x65, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x48, 0x00, 0x52, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, - 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x0d, 0x48, 0x01, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x88, 0x01, 0x01, 0x12, 0x16, - 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0d, 0x52, 0x06, - 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x12, 0x3e, 0x0a, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, - 0x65, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x6f, 0x74, 0x67, 0x2e, - 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x54, 0x63, 0x70, 0x41, 0x63, - 0x6b, 0x4e, 0x75, 0x6d, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, 0x69, 0x6e, 0x63, - 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x3e, 0x0a, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, - 0x65, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x6f, 0x74, 0x67, 0x2e, - 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x54, 0x63, 0x70, 0x41, 0x63, - 0x6b, 0x4e, 0x75, 0x6d, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, 0x64, 0x65, 0x63, - 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x43, 0x0a, 0x0b, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, - 0x5f, 0x74, 0x61, 0x67, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x6f, 0x74, - 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x54, 0x63, 0x70, - 0x41, 0x63, 0x6b, 0x4e, 0x75, 0x6d, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x52, - 0x0a, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x73, 0x1a, 0x56, 0x0a, 0x06, 0x43, - 0x68, 0x6f, 0x69, 0x63, 0x65, 0x22, 0x4c, 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x0a, - 0x0b, 0x75, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x10, 0x00, 0x12, 0x09, - 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x10, 0x02, 0x12, 0x0a, 0x0a, 0x06, 0x76, 0x61, 0x6c, - 0x75, 0x65, 0x73, 0x10, 0x03, 0x12, 0x0d, 0x0a, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, - 0x6e, 0x74, 0x10, 0x04, 0x12, 0x0d, 0x0a, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, - 0x74, 0x10, 0x05, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x42, 0x08, - 0x0a, 0x06, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x8d, 0x01, 0x0a, 0x1f, 0x50, 0x61, 0x74, - 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x54, 0x63, 0x70, 0x44, 0x61, 0x74, 0x61, 0x4f, - 0x66, 0x66, 0x73, 0x65, 0x74, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x12, 0x19, 0x0a, 0x05, - 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x00, 0x52, 0x05, 0x73, - 0x74, 0x61, 0x72, 0x74, 0x88, 0x01, 0x01, 0x12, 0x17, 0x0a, 0x04, 0x73, 0x74, 0x65, 0x70, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x04, 0x73, 0x74, 0x65, 0x70, 0x88, 0x01, 0x01, - 0x12, 0x19, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x48, - 0x02, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x88, 0x01, 0x01, 0x42, 0x08, 0x0a, 0x06, 0x5f, - 0x73, 0x74, 0x61, 0x72, 0x74, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x73, 0x74, 0x65, 0x70, 0x42, 0x08, - 0x0a, 0x06, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x95, 0x01, 0x0a, 0x21, 0x50, 0x61, 0x74, - 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x54, 0x63, 0x70, 0x44, 0x61, 0x74, 0x61, 0x4f, - 0x66, 0x66, 0x73, 0x65, 0x74, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x12, 0x17, + 0x6c, 0x75, 0x65, 0x73, 0x12, 0x46, 0x0a, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, + 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, + 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x45, 0x74, 0x68, 0x65, 0x72, 0x6e, 0x65, + 0x74, 0x50, 0x61, 0x75, 0x73, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, + 0x72, 0x52, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x46, 0x0a, 0x09, + 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x28, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, + 0x77, 0x45, 0x74, 0x68, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x50, 0x61, 0x75, 0x73, 0x65, 0x54, 0x69, + 0x6d, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, + 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x4b, 0x0a, 0x0b, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x5f, 0x74, + 0x61, 0x67, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x6f, 0x74, 0x67, 0x2e, + 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x45, 0x74, 0x68, 0x65, 0x72, + 0x6e, 0x65, 0x74, 0x50, 0x61, 0x75, 0x73, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x4d, 0x65, 0x74, 0x72, + 0x69, 0x63, 0x54, 0x61, 0x67, 0x52, 0x0a, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, + 0x73, 0x1a, 0x56, 0x0a, 0x06, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x22, 0x4c, 0x0a, 0x04, 0x45, + 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x0a, 0x0b, 0x75, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, + 0x65, 0x64, 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x10, 0x02, 0x12, + 0x0a, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x10, 0x03, 0x12, 0x0d, 0x0a, 0x09, 0x69, + 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x10, 0x04, 0x12, 0x0d, 0x0a, 0x09, 0x64, 0x65, + 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x10, 0x05, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x63, 0x68, + 0x6f, 0x69, 0x63, 0x65, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x8a, + 0x01, 0x0a, 0x1c, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x54, 0x63, + 0x70, 0x53, 0x72, 0x63, 0x50, 0x6f, 0x72, 0x74, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x12, + 0x19, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x00, + 0x52, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x88, 0x01, 0x01, 0x12, 0x17, 0x0a, 0x04, 0x73, 0x74, + 0x65, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x04, 0x73, 0x74, 0x65, 0x70, + 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x0d, 0x48, 0x02, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x88, 0x01, 0x01, 0x42, 0x08, + 0x0a, 0x06, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x73, 0x74, 0x65, + 0x70, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x92, 0x01, 0x0a, 0x1e, + 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x54, 0x63, 0x70, 0x53, 0x72, + 0x63, 0x50, 0x6f, 0x72, 0x74, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x12, 0x17, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, @@ -103641,92 +118390,324 @@ var file_otg_proto_rawDesc = []byte{ 0x20, 0x01, 0x28, 0x0d, 0x48, 0x02, 0x52, 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x88, 0x01, 0x01, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, - 0x22, 0xd3, 0x03, 0x0a, 0x18, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, - 0x54, 0x63, 0x70, 0x44, 0x61, 0x74, 0x61, 0x4f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x12, 0x46, 0x0a, - 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x29, 0x2e, - 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x54, - 0x63, 0x70, 0x44, 0x61, 0x74, 0x61, 0x4f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x2e, 0x43, 0x68, 0x6f, - 0x69, 0x63, 0x65, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x48, 0x00, 0x52, 0x06, 0x63, 0x68, 0x6f, 0x69, - 0x63, 0x65, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x88, 0x01, 0x01, - 0x12, 0x16, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0d, - 0x52, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x12, 0x42, 0x0a, 0x09, 0x69, 0x6e, 0x63, 0x72, - 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x6f, 0x74, - 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x54, 0x63, 0x70, - 0x44, 0x61, 0x74, 0x61, 0x4f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, - 0x72, 0x52, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x42, 0x0a, 0x09, + 0x22, 0xc4, 0x03, 0x0a, 0x15, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, + 0x54, 0x63, 0x70, 0x53, 0x72, 0x63, 0x50, 0x6f, 0x72, 0x74, 0x12, 0x43, 0x0a, 0x06, 0x63, 0x68, + 0x6f, 0x69, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x26, 0x2e, 0x6f, 0x74, 0x67, + 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x54, 0x63, 0x70, 0x53, + 0x72, 0x63, 0x50, 0x6f, 0x72, 0x74, 0x2e, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x2e, 0x45, 0x6e, + 0x75, 0x6d, 0x48, 0x00, 0x52, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x88, 0x01, 0x01, 0x12, + 0x19, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, + 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x88, 0x01, 0x01, 0x12, 0x16, 0x0a, 0x06, 0x76, 0x61, + 0x6c, 0x75, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0d, 0x52, 0x06, 0x76, 0x61, 0x6c, 0x75, + 0x65, 0x73, 0x12, 0x3f, 0x0a, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, + 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, + 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x54, 0x63, 0x70, 0x53, 0x72, 0x63, 0x50, 0x6f, 0x72, + 0x74, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, + 0x65, 0x6e, 0x74, 0x12, 0x3f, 0x0a, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, + 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, + 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x54, 0x63, 0x70, 0x53, 0x72, 0x63, 0x50, 0x6f, + 0x72, 0x74, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, + 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x44, 0x0a, 0x0b, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x5f, 0x74, + 0x61, 0x67, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x6f, 0x74, 0x67, 0x2e, + 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x54, 0x63, 0x70, 0x53, 0x72, + 0x63, 0x50, 0x6f, 0x72, 0x74, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x52, 0x0a, + 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x73, 0x1a, 0x56, 0x0a, 0x06, 0x43, 0x68, + 0x6f, 0x69, 0x63, 0x65, 0x22, 0x4c, 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x0a, 0x0b, + 0x75, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x10, 0x00, 0x12, 0x09, 0x0a, + 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x10, 0x02, 0x12, 0x0a, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, + 0x65, 0x73, 0x10, 0x03, 0x12, 0x0d, 0x0a, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, + 0x74, 0x10, 0x04, 0x12, 0x0d, 0x0a, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, + 0x10, 0x05, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x42, 0x08, 0x0a, + 0x06, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x8a, 0x01, 0x0a, 0x1c, 0x50, 0x61, 0x74, 0x74, + 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x54, 0x63, 0x70, 0x44, 0x73, 0x74, 0x50, 0x6f, 0x72, + 0x74, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x12, 0x19, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x72, + 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x00, 0x52, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, + 0x88, 0x01, 0x01, 0x12, 0x17, 0x0a, 0x04, 0x73, 0x74, 0x65, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x0d, 0x48, 0x01, 0x52, 0x04, 0x73, 0x74, 0x65, 0x70, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, + 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x02, 0x52, 0x05, 0x63, + 0x6f, 0x75, 0x6e, 0x74, 0x88, 0x01, 0x01, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x73, 0x74, 0x61, 0x72, + 0x74, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x73, 0x74, 0x65, 0x70, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x63, + 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x92, 0x01, 0x0a, 0x1e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, + 0x46, 0x6c, 0x6f, 0x77, 0x54, 0x63, 0x70, 0x44, 0x73, 0x74, 0x50, 0x6f, 0x72, 0x74, 0x4d, 0x65, + 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x12, 0x17, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x88, 0x01, 0x01, + 0x12, 0x1b, 0x0a, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, + 0x48, 0x01, 0x52, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, + 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x02, 0x52, + 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x88, 0x01, 0x01, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x6e, + 0x61, 0x6d, 0x65, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x42, 0x09, + 0x0a, 0x07, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x22, 0xc4, 0x03, 0x0a, 0x15, 0x50, 0x61, + 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x54, 0x63, 0x70, 0x44, 0x73, 0x74, 0x50, + 0x6f, 0x72, 0x74, 0x12, 0x43, 0x0a, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x0e, 0x32, 0x26, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, + 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x54, 0x63, 0x70, 0x44, 0x73, 0x74, 0x50, 0x6f, 0x72, 0x74, 0x2e, + 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x48, 0x00, 0x52, 0x06, 0x63, + 0x68, 0x6f, 0x69, 0x63, 0x65, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, + 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, + 0x88, 0x01, 0x01, 0x12, 0x16, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x03, 0x20, + 0x03, 0x28, 0x0d, 0x52, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x12, 0x3f, 0x0a, 0x09, 0x69, + 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, + 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, + 0x54, 0x63, 0x70, 0x44, 0x73, 0x74, 0x50, 0x6f, 0x72, 0x74, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, + 0x72, 0x52, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x3f, 0x0a, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x24, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, - 0x77, 0x54, 0x63, 0x70, 0x44, 0x61, 0x74, 0x61, 0x4f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x43, 0x6f, + 0x21, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, + 0x77, 0x54, 0x63, 0x70, 0x44, 0x73, 0x74, 0x50, 0x6f, 0x72, 0x74, 0x43, 0x6f, 0x75, 0x6e, 0x74, + 0x65, 0x72, 0x52, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x44, 0x0a, + 0x0b, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x5f, 0x74, 0x61, 0x67, 0x73, 0x18, 0x07, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, + 0x46, 0x6c, 0x6f, 0x77, 0x54, 0x63, 0x70, 0x44, 0x73, 0x74, 0x50, 0x6f, 0x72, 0x74, 0x4d, 0x65, + 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x52, 0x0a, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, + 0x61, 0x67, 0x73, 0x1a, 0x56, 0x0a, 0x06, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x22, 0x4c, 0x0a, + 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x0a, 0x0b, 0x75, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, + 0x66, 0x69, 0x65, 0x64, 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x10, + 0x02, 0x12, 0x0a, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x10, 0x03, 0x12, 0x0d, 0x0a, + 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x10, 0x04, 0x12, 0x0d, 0x0a, 0x09, + 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x10, 0x05, 0x42, 0x09, 0x0a, 0x07, 0x5f, + 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, + 0x22, 0x89, 0x01, 0x0a, 0x1b, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, + 0x54, 0x63, 0x70, 0x53, 0x65, 0x71, 0x4e, 0x75, 0x6d, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, + 0x12, 0x19, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x48, + 0x00, 0x52, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x88, 0x01, 0x01, 0x12, 0x17, 0x0a, 0x04, 0x73, + 0x74, 0x65, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x04, 0x73, 0x74, 0x65, + 0x70, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x0d, 0x48, 0x02, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x88, 0x01, 0x01, 0x42, + 0x08, 0x0a, 0x06, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x73, 0x74, + 0x65, 0x70, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x91, 0x01, 0x0a, + 0x1d, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x54, 0x63, 0x70, 0x53, + 0x65, 0x71, 0x4e, 0x75, 0x6d, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x12, 0x17, + 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x04, + 0x6e, 0x61, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, + 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, + 0x74, 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x0d, 0x48, 0x02, 0x52, 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x88, 0x01, + 0x01, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6f, + 0x66, 0x66, 0x73, 0x65, 0x74, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, + 0x22, 0xbf, 0x03, 0x0a, 0x14, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, + 0x54, 0x63, 0x70, 0x53, 0x65, 0x71, 0x4e, 0x75, 0x6d, 0x12, 0x42, 0x0a, 0x06, 0x63, 0x68, 0x6f, + 0x69, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x25, 0x2e, 0x6f, 0x74, 0x67, 0x2e, + 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x54, 0x63, 0x70, 0x53, 0x65, + 0x71, 0x4e, 0x75, 0x6d, 0x2e, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x2e, 0x45, 0x6e, 0x75, 0x6d, + 0x48, 0x00, 0x52, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, + 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x05, + 0x76, 0x61, 0x6c, 0x75, 0x65, 0x88, 0x01, 0x01, 0x12, 0x16, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, + 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0d, 0x52, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, + 0x12, 0x3e, 0x0a, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x05, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, + 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x54, 0x63, 0x70, 0x53, 0x65, 0x71, 0x4e, 0x75, 0x6d, 0x43, 0x6f, + 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, + 0x12, 0x3e, 0x0a, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x06, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, + 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x54, 0x63, 0x70, 0x53, 0x65, 0x71, 0x4e, 0x75, 0x6d, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, - 0x12, 0x47, 0x0a, 0x0b, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x5f, 0x74, 0x61, 0x67, 0x73, 0x18, - 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, - 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x54, 0x63, 0x70, 0x44, 0x61, 0x74, 0x61, 0x4f, 0x66, - 0x66, 0x73, 0x65, 0x74, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x52, 0x0a, 0x6d, - 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x73, 0x1a, 0x56, 0x0a, 0x06, 0x43, 0x68, 0x6f, - 0x69, 0x63, 0x65, 0x22, 0x4c, 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x0a, 0x0b, 0x75, - 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, - 0x76, 0x61, 0x6c, 0x75, 0x65, 0x10, 0x02, 0x12, 0x0a, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, - 0x73, 0x10, 0x03, 0x12, 0x0d, 0x0a, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, - 0x10, 0x04, 0x12, 0x0d, 0x0a, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x10, - 0x05, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x42, 0x08, 0x0a, 0x06, - 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x88, 0x01, 0x0a, 0x1a, 0x50, 0x61, 0x74, 0x74, 0x65, - 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x54, 0x63, 0x70, 0x45, 0x63, 0x6e, 0x4e, 0x73, 0x43, 0x6f, - 0x75, 0x6e, 0x74, 0x65, 0x72, 0x12, 0x19, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x0d, 0x48, 0x00, 0x52, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x88, 0x01, 0x01, - 0x12, 0x17, 0x0a, 0x04, 0x73, 0x74, 0x65, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, - 0x52, 0x04, 0x73, 0x74, 0x65, 0x70, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x63, 0x6f, 0x75, - 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x02, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, - 0x74, 0x88, 0x01, 0x01, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x42, 0x07, - 0x0a, 0x05, 0x5f, 0x73, 0x74, 0x65, 0x70, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x63, 0x6f, 0x75, 0x6e, - 0x74, 0x22, 0x90, 0x01, 0x0a, 0x1c, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, - 0x77, 0x54, 0x63, 0x70, 0x45, 0x63, 0x6e, 0x4e, 0x73, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, - 0x61, 0x67, 0x12, 0x17, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x48, 0x00, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x6f, - 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x06, 0x6f, - 0x66, 0x66, 0x73, 0x65, 0x74, 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x6c, 0x65, 0x6e, 0x67, - 0x74, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x02, 0x52, 0x06, 0x6c, 0x65, 0x6e, 0x67, - 0x74, 0x68, 0x88, 0x01, 0x01, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x42, 0x09, - 0x0a, 0x07, 0x5f, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6c, 0x65, - 0x6e, 0x67, 0x74, 0x68, 0x22, 0xba, 0x03, 0x0a, 0x13, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, - 0x46, 0x6c, 0x6f, 0x77, 0x54, 0x63, 0x70, 0x45, 0x63, 0x6e, 0x4e, 0x73, 0x12, 0x41, 0x0a, 0x06, - 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x24, 0x2e, 0x6f, - 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x54, 0x63, - 0x70, 0x45, 0x63, 0x6e, 0x4e, 0x73, 0x2e, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x2e, 0x45, 0x6e, + 0x12, 0x43, 0x0a, 0x0b, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x5f, 0x74, 0x61, 0x67, 0x73, 0x18, + 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, + 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x54, 0x63, 0x70, 0x53, 0x65, 0x71, 0x4e, 0x75, 0x6d, + 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x52, 0x0a, 0x6d, 0x65, 0x74, 0x72, 0x69, + 0x63, 0x54, 0x61, 0x67, 0x73, 0x1a, 0x56, 0x0a, 0x06, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x22, + 0x4c, 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x0a, 0x0b, 0x75, 0x6e, 0x73, 0x70, 0x65, + 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, + 0x65, 0x10, 0x02, 0x12, 0x0a, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x10, 0x03, 0x12, + 0x0d, 0x0a, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x10, 0x04, 0x12, 0x0d, + 0x0a, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x10, 0x05, 0x42, 0x09, 0x0a, + 0x07, 0x5f, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x76, 0x61, 0x6c, + 0x75, 0x65, 0x22, 0x89, 0x01, 0x0a, 0x1b, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, + 0x6f, 0x77, 0x54, 0x63, 0x70, 0x41, 0x63, 0x6b, 0x4e, 0x75, 0x6d, 0x43, 0x6f, 0x75, 0x6e, 0x74, + 0x65, 0x72, 0x12, 0x19, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x0d, 0x48, 0x00, 0x52, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x88, 0x01, 0x01, 0x12, 0x17, 0x0a, + 0x04, 0x73, 0x74, 0x65, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x04, 0x73, + 0x74, 0x65, 0x70, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x02, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x88, 0x01, + 0x01, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x42, 0x07, 0x0a, 0x05, 0x5f, + 0x73, 0x74, 0x65, 0x70, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x91, + 0x01, 0x0a, 0x1d, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x54, 0x63, + 0x70, 0x41, 0x63, 0x6b, 0x4e, 0x75, 0x6d, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, + 0x12, 0x17, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, + 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x6f, 0x66, 0x66, + 0x73, 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x06, 0x6f, 0x66, 0x66, + 0x73, 0x65, 0x74, 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x02, 0x52, 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, + 0x88, 0x01, 0x01, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x42, 0x09, 0x0a, 0x07, + 0x5f, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6c, 0x65, 0x6e, 0x67, + 0x74, 0x68, 0x22, 0xbf, 0x03, 0x0a, 0x14, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, + 0x6f, 0x77, 0x54, 0x63, 0x70, 0x41, 0x63, 0x6b, 0x4e, 0x75, 0x6d, 0x12, 0x42, 0x0a, 0x06, 0x63, + 0x68, 0x6f, 0x69, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x25, 0x2e, 0x6f, 0x74, + 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x54, 0x63, 0x70, + 0x41, 0x63, 0x6b, 0x4e, 0x75, 0x6d, 0x2e, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x48, 0x00, 0x52, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x88, 0x01, 0x01, 0x12, 0x16, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0d, 0x52, 0x06, 0x76, 0x61, 0x6c, 0x75, - 0x65, 0x73, 0x12, 0x3d, 0x0a, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, - 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, - 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x54, 0x63, 0x70, 0x45, 0x63, 0x6e, 0x4e, 0x73, 0x43, - 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, - 0x74, 0x12, 0x3d, 0x0a, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x06, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, - 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x54, 0x63, 0x70, 0x45, 0x63, 0x6e, 0x4e, 0x73, 0x43, 0x6f, - 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, - 0x12, 0x42, 0x0a, 0x0b, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x5f, 0x74, 0x61, 0x67, 0x73, 0x18, - 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, - 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x54, 0x63, 0x70, 0x45, 0x63, 0x6e, 0x4e, 0x73, 0x4d, - 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x52, 0x0a, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, - 0x54, 0x61, 0x67, 0x73, 0x1a, 0x56, 0x0a, 0x06, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x22, 0x4c, - 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x0a, 0x0b, 0x75, 0x6e, 0x73, 0x70, 0x65, 0x63, - 0x69, 0x66, 0x69, 0x65, 0x64, 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, - 0x10, 0x02, 0x12, 0x0a, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x10, 0x03, 0x12, 0x0d, - 0x0a, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x10, 0x04, 0x12, 0x0d, 0x0a, - 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x10, 0x05, 0x42, 0x09, 0x0a, 0x07, - 0x5f, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x76, 0x61, 0x6c, 0x75, - 0x65, 0x22, 0x89, 0x01, 0x0a, 0x1b, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, - 0x77, 0x54, 0x63, 0x70, 0x45, 0x63, 0x6e, 0x43, 0x77, 0x72, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, + 0x65, 0x73, 0x12, 0x3e, 0x0a, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, + 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, + 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x54, 0x63, 0x70, 0x41, 0x63, 0x6b, 0x4e, 0x75, 0x6d, + 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, + 0x6e, 0x74, 0x12, 0x3e, 0x0a, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, + 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, + 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x54, 0x63, 0x70, 0x41, 0x63, 0x6b, 0x4e, 0x75, 0x6d, + 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, + 0x6e, 0x74, 0x12, 0x43, 0x0a, 0x0b, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x5f, 0x74, 0x61, 0x67, + 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, + 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x54, 0x63, 0x70, 0x41, 0x63, 0x6b, 0x4e, + 0x75, 0x6d, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x52, 0x0a, 0x6d, 0x65, 0x74, + 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x73, 0x1a, 0x56, 0x0a, 0x06, 0x43, 0x68, 0x6f, 0x69, 0x63, + 0x65, 0x22, 0x4c, 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x0a, 0x0b, 0x75, 0x6e, 0x73, + 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, 0x76, 0x61, + 0x6c, 0x75, 0x65, 0x10, 0x02, 0x12, 0x0a, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x10, + 0x03, 0x12, 0x0d, 0x0a, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x10, 0x04, + 0x12, 0x0d, 0x0a, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x10, 0x05, 0x42, + 0x09, 0x0a, 0x07, 0x5f, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x76, + 0x61, 0x6c, 0x75, 0x65, 0x22, 0x8d, 0x01, 0x0a, 0x1f, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, + 0x46, 0x6c, 0x6f, 0x77, 0x54, 0x63, 0x70, 0x44, 0x61, 0x74, 0x61, 0x4f, 0x66, 0x66, 0x73, 0x65, + 0x74, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x12, 0x19, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x72, + 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x00, 0x52, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, + 0x88, 0x01, 0x01, 0x12, 0x17, 0x0a, 0x04, 0x73, 0x74, 0x65, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x0d, 0x48, 0x01, 0x52, 0x04, 0x73, 0x74, 0x65, 0x70, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, + 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x02, 0x52, 0x05, 0x63, + 0x6f, 0x75, 0x6e, 0x74, 0x88, 0x01, 0x01, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x73, 0x74, 0x61, 0x72, + 0x74, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x73, 0x74, 0x65, 0x70, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x63, + 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x95, 0x01, 0x0a, 0x21, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, + 0x46, 0x6c, 0x6f, 0x77, 0x54, 0x63, 0x70, 0x44, 0x61, 0x74, 0x61, 0x4f, 0x66, 0x66, 0x73, 0x65, + 0x74, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x12, 0x17, 0x0a, 0x04, 0x6e, 0x61, + 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, + 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x88, 0x01, 0x01, + 0x12, 0x1b, 0x0a, 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, + 0x48, 0x02, 0x52, 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x88, 0x01, 0x01, 0x42, 0x07, 0x0a, + 0x05, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6f, 0x66, 0x66, 0x73, 0x65, + 0x74, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x22, 0xd3, 0x03, 0x0a, + 0x18, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x54, 0x63, 0x70, 0x44, + 0x61, 0x74, 0x61, 0x4f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x12, 0x46, 0x0a, 0x06, 0x63, 0x68, 0x6f, + 0x69, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x29, 0x2e, 0x6f, 0x74, 0x67, 0x2e, + 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x54, 0x63, 0x70, 0x44, 0x61, + 0x74, 0x61, 0x4f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x2e, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x2e, + 0x45, 0x6e, 0x75, 0x6d, 0x48, 0x00, 0x52, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x88, 0x01, + 0x01, 0x12, 0x19, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, + 0x48, 0x01, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x88, 0x01, 0x01, 0x12, 0x16, 0x0a, 0x06, + 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0d, 0x52, 0x06, 0x76, 0x61, + 0x6c, 0x75, 0x65, 0x73, 0x12, 0x42, 0x0a, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, + 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, + 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x54, 0x63, 0x70, 0x44, 0x61, 0x74, 0x61, + 0x4f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, 0x69, + 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x42, 0x0a, 0x09, 0x64, 0x65, 0x63, 0x72, + 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x6f, 0x74, + 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x54, 0x63, 0x70, + 0x44, 0x61, 0x74, 0x61, 0x4f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, + 0x72, 0x52, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x47, 0x0a, 0x0b, + 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x5f, 0x74, 0x61, 0x67, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x26, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, + 0x6c, 0x6f, 0x77, 0x54, 0x63, 0x70, 0x44, 0x61, 0x74, 0x61, 0x4f, 0x66, 0x66, 0x73, 0x65, 0x74, + 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x52, 0x0a, 0x6d, 0x65, 0x74, 0x72, 0x69, + 0x63, 0x54, 0x61, 0x67, 0x73, 0x1a, 0x56, 0x0a, 0x06, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x22, + 0x4c, 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x0a, 0x0b, 0x75, 0x6e, 0x73, 0x70, 0x65, + 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, + 0x65, 0x10, 0x02, 0x12, 0x0a, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x10, 0x03, 0x12, + 0x0d, 0x0a, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x10, 0x04, 0x12, 0x0d, + 0x0a, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x10, 0x05, 0x42, 0x09, 0x0a, + 0x07, 0x5f, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x76, 0x61, 0x6c, + 0x75, 0x65, 0x22, 0x88, 0x01, 0x0a, 0x1a, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, + 0x6f, 0x77, 0x54, 0x63, 0x70, 0x45, 0x63, 0x6e, 0x4e, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x12, 0x19, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x00, 0x52, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x88, 0x01, 0x01, 0x12, 0x17, 0x0a, 0x04, 0x73, 0x74, 0x65, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x04, 0x73, 0x74, 0x65, 0x70, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x02, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x88, 0x01, 0x01, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x73, - 0x74, 0x65, 0x70, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x91, 0x01, - 0x0a, 0x1d, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x54, 0x63, 0x70, - 0x45, 0x63, 0x6e, 0x43, 0x77, 0x72, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x12, + 0x74, 0x65, 0x70, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x90, 0x01, + 0x0a, 0x1c, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x54, 0x63, 0x70, + 0x45, 0x63, 0x6e, 0x4e, 0x73, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x12, 0x17, + 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x04, + 0x6e, 0x61, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, + 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, + 0x74, 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x0d, 0x48, 0x02, 0x52, 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x88, 0x01, + 0x01, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6f, + 0x66, 0x66, 0x73, 0x65, 0x74, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, + 0x22, 0xba, 0x03, 0x0a, 0x13, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, + 0x54, 0x63, 0x70, 0x45, 0x63, 0x6e, 0x4e, 0x73, 0x12, 0x41, 0x0a, 0x06, 0x63, 0x68, 0x6f, 0x69, + 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x24, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, + 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x54, 0x63, 0x70, 0x45, 0x63, 0x6e, + 0x4e, 0x73, 0x2e, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x48, 0x00, + 0x52, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x76, + 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x05, 0x76, 0x61, + 0x6c, 0x75, 0x65, 0x88, 0x01, 0x01, 0x12, 0x16, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, + 0x18, 0x03, 0x20, 0x03, 0x28, 0x0d, 0x52, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x12, 0x3d, + 0x0a, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x1f, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, + 0x6c, 0x6f, 0x77, 0x54, 0x63, 0x70, 0x45, 0x63, 0x6e, 0x4e, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, + 0x65, 0x72, 0x52, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x3d, 0x0a, + 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x1f, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, + 0x6f, 0x77, 0x54, 0x63, 0x70, 0x45, 0x63, 0x6e, 0x4e, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, + 0x72, 0x52, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x42, 0x0a, 0x0b, + 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x5f, 0x74, 0x61, 0x67, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x21, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, + 0x6c, 0x6f, 0x77, 0x54, 0x63, 0x70, 0x45, 0x63, 0x6e, 0x4e, 0x73, 0x4d, 0x65, 0x74, 0x72, 0x69, + 0x63, 0x54, 0x61, 0x67, 0x52, 0x0a, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x73, + 0x1a, 0x56, 0x0a, 0x06, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x22, 0x4c, 0x0a, 0x04, 0x45, 0x6e, + 0x75, 0x6d, 0x12, 0x0f, 0x0a, 0x0b, 0x75, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, + 0x64, 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x10, 0x02, 0x12, 0x0a, + 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x10, 0x03, 0x12, 0x0d, 0x0a, 0x09, 0x69, 0x6e, + 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x10, 0x04, 0x12, 0x0d, 0x0a, 0x09, 0x64, 0x65, 0x63, + 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x10, 0x05, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x63, 0x68, 0x6f, + 0x69, 0x63, 0x65, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x89, 0x01, + 0x0a, 0x1b, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x54, 0x63, 0x70, + 0x45, 0x63, 0x6e, 0x43, 0x77, 0x72, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x12, 0x19, 0x0a, + 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x00, 0x52, 0x05, + 0x73, 0x74, 0x61, 0x72, 0x74, 0x88, 0x01, 0x01, 0x12, 0x17, 0x0a, 0x04, 0x73, 0x74, 0x65, 0x70, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x04, 0x73, 0x74, 0x65, 0x70, 0x88, 0x01, + 0x01, 0x12, 0x19, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, + 0x48, 0x02, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x88, 0x01, 0x01, 0x42, 0x08, 0x0a, 0x06, + 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x73, 0x74, 0x65, 0x70, 0x42, + 0x08, 0x0a, 0x06, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x91, 0x01, 0x0a, 0x1d, 0x50, 0x61, + 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x54, 0x63, 0x70, 0x45, 0x63, 0x6e, 0x43, + 0x77, 0x72, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x12, 0x17, 0x0a, 0x04, 0x6e, + 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x04, 0x6e, 0x61, 0x6d, + 0x65, 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x88, 0x01, + 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x0d, 0x48, 0x02, 0x52, 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x88, 0x01, 0x01, 0x42, 0x07, + 0x0a, 0x05, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6f, 0x66, 0x66, 0x73, + 0x65, 0x74, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x22, 0xbf, 0x03, + 0x0a, 0x14, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x54, 0x63, 0x70, + 0x45, 0x63, 0x6e, 0x43, 0x77, 0x72, 0x12, 0x42, 0x0a, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x25, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, + 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x54, 0x63, 0x70, 0x45, 0x63, 0x6e, 0x43, 0x77, + 0x72, 0x2e, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x48, 0x00, 0x52, + 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x76, 0x61, + 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x05, 0x76, 0x61, 0x6c, + 0x75, 0x65, 0x88, 0x01, 0x01, 0x12, 0x16, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, + 0x03, 0x20, 0x03, 0x28, 0x0d, 0x52, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x12, 0x3e, 0x0a, + 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x20, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, + 0x6f, 0x77, 0x54, 0x63, 0x70, 0x45, 0x63, 0x6e, 0x43, 0x77, 0x72, 0x43, 0x6f, 0x75, 0x6e, 0x74, + 0x65, 0x72, 0x52, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x3e, 0x0a, + 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x20, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, + 0x6f, 0x77, 0x54, 0x63, 0x70, 0x45, 0x63, 0x6e, 0x43, 0x77, 0x72, 0x43, 0x6f, 0x75, 0x6e, 0x74, + 0x65, 0x72, 0x52, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x43, 0x0a, + 0x0b, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x5f, 0x74, 0x61, 0x67, 0x73, 0x18, 0x07, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, + 0x46, 0x6c, 0x6f, 0x77, 0x54, 0x63, 0x70, 0x45, 0x63, 0x6e, 0x43, 0x77, 0x72, 0x4d, 0x65, 0x74, + 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x52, 0x0a, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, + 0x67, 0x73, 0x1a, 0x56, 0x0a, 0x06, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x22, 0x4c, 0x0a, 0x04, + 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x0a, 0x0b, 0x75, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, + 0x69, 0x65, 0x64, 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x10, 0x02, + 0x12, 0x0a, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x10, 0x03, 0x12, 0x0d, 0x0a, 0x09, + 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x10, 0x04, 0x12, 0x0d, 0x0a, 0x09, 0x64, + 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x10, 0x05, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x63, + 0x68, 0x6f, 0x69, 0x63, 0x65, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, + 0x8a, 0x01, 0x0a, 0x1c, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x54, + 0x63, 0x70, 0x45, 0x63, 0x6e, 0x45, 0x63, 0x68, 0x6f, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, + 0x12, 0x19, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x48, + 0x00, 0x52, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x88, 0x01, 0x01, 0x12, 0x17, 0x0a, 0x04, 0x73, + 0x74, 0x65, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x04, 0x73, 0x74, 0x65, + 0x70, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x0d, 0x48, 0x02, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x88, 0x01, 0x01, 0x42, + 0x08, 0x0a, 0x06, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x73, 0x74, + 0x65, 0x70, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x92, 0x01, 0x0a, + 0x1e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x54, 0x63, 0x70, 0x45, + 0x63, 0x6e, 0x45, 0x63, 0x68, 0x6f, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x12, 0x17, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x06, 0x6f, 0x66, 0x66, 0x73, @@ -103734,73 +118715,119 @@ var file_otg_proto_rawDesc = []byte{ 0x03, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x02, 0x52, 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x88, 0x01, 0x01, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, - 0x68, 0x22, 0xbf, 0x03, 0x0a, 0x14, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, - 0x77, 0x54, 0x63, 0x70, 0x45, 0x63, 0x6e, 0x43, 0x77, 0x72, 0x12, 0x42, 0x0a, 0x06, 0x63, 0x68, - 0x6f, 0x69, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x25, 0x2e, 0x6f, 0x74, 0x67, - 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x54, 0x63, 0x70, 0x45, - 0x63, 0x6e, 0x43, 0x77, 0x72, 0x2e, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x2e, 0x45, 0x6e, 0x75, - 0x6d, 0x48, 0x00, 0x52, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x88, 0x01, 0x01, 0x12, 0x19, - 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, - 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x88, 0x01, 0x01, 0x12, 0x16, 0x0a, 0x06, 0x76, 0x61, 0x6c, - 0x75, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0d, 0x52, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, - 0x73, 0x12, 0x3e, 0x0a, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x05, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, - 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x54, 0x63, 0x70, 0x45, 0x63, 0x6e, 0x43, 0x77, 0x72, 0x43, - 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, - 0x74, 0x12, 0x3e, 0x0a, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x06, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, - 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x54, 0x63, 0x70, 0x45, 0x63, 0x6e, 0x43, 0x77, 0x72, 0x43, - 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, - 0x74, 0x12, 0x43, 0x0a, 0x0b, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x5f, 0x74, 0x61, 0x67, 0x73, - 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, - 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x54, 0x63, 0x70, 0x45, 0x63, 0x6e, 0x43, 0x77, - 0x72, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x52, 0x0a, 0x6d, 0x65, 0x74, 0x72, - 0x69, 0x63, 0x54, 0x61, 0x67, 0x73, 0x1a, 0x56, 0x0a, 0x06, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, - 0x22, 0x4c, 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x0a, 0x0b, 0x75, 0x6e, 0x73, 0x70, - 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, 0x76, 0x61, 0x6c, - 0x75, 0x65, 0x10, 0x02, 0x12, 0x0a, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x10, 0x03, - 0x12, 0x0d, 0x0a, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x10, 0x04, 0x12, - 0x0d, 0x0a, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x10, 0x05, 0x42, 0x09, - 0x0a, 0x07, 0x5f, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x76, 0x61, - 0x6c, 0x75, 0x65, 0x22, 0x8a, 0x01, 0x0a, 0x1c, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, - 0x6c, 0x6f, 0x77, 0x54, 0x63, 0x70, 0x45, 0x63, 0x6e, 0x45, 0x63, 0x68, 0x6f, 0x43, 0x6f, 0x75, - 0x6e, 0x74, 0x65, 0x72, 0x12, 0x19, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x0d, 0x48, 0x00, 0x52, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x88, 0x01, 0x01, 0x12, - 0x17, 0x0a, 0x04, 0x73, 0x74, 0x65, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, - 0x04, 0x73, 0x74, 0x65, 0x70, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, - 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x02, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, - 0x88, 0x01, 0x01, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x42, 0x07, 0x0a, - 0x05, 0x5f, 0x73, 0x74, 0x65, 0x70, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, - 0x22, 0x92, 0x01, 0x0a, 0x1e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, - 0x54, 0x63, 0x70, 0x45, 0x63, 0x6e, 0x45, 0x63, 0x68, 0x6f, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, - 0x54, 0x61, 0x67, 0x12, 0x17, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x48, 0x00, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, - 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x06, - 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x6c, 0x65, 0x6e, - 0x67, 0x74, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x02, 0x52, 0x06, 0x6c, 0x65, 0x6e, - 0x67, 0x74, 0x68, 0x88, 0x01, 0x01, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x42, - 0x09, 0x0a, 0x07, 0x5f, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6c, - 0x65, 0x6e, 0x67, 0x74, 0x68, 0x22, 0xc4, 0x03, 0x0a, 0x15, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, - 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x54, 0x63, 0x70, 0x45, 0x63, 0x6e, 0x45, 0x63, 0x68, 0x6f, 0x12, - 0x43, 0x0a, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, - 0x26, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, - 0x77, 0x54, 0x63, 0x70, 0x45, 0x63, 0x6e, 0x45, 0x63, 0x68, 0x6f, 0x2e, 0x43, 0x68, 0x6f, 0x69, - 0x63, 0x65, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x48, 0x00, 0x52, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, - 0x65, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x88, 0x01, 0x01, 0x12, - 0x16, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0d, 0x52, - 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x12, 0x3f, 0x0a, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, - 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x6f, 0x74, 0x67, + 0x68, 0x22, 0xc4, 0x03, 0x0a, 0x15, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, + 0x77, 0x54, 0x63, 0x70, 0x45, 0x63, 0x6e, 0x45, 0x63, 0x68, 0x6f, 0x12, 0x43, 0x0a, 0x06, 0x63, + 0x68, 0x6f, 0x69, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x26, 0x2e, 0x6f, 0x74, + 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x54, 0x63, 0x70, + 0x45, 0x63, 0x6e, 0x45, 0x63, 0x68, 0x6f, 0x2e, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x2e, 0x45, + 0x6e, 0x75, 0x6d, 0x48, 0x00, 0x52, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x88, 0x01, 0x01, + 0x12, 0x19, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, + 0x01, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x88, 0x01, 0x01, 0x12, 0x16, 0x0a, 0x06, 0x76, + 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0d, 0x52, 0x06, 0x76, 0x61, 0x6c, + 0x75, 0x65, 0x73, 0x12, 0x3f, 0x0a, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, + 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, + 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x54, 0x63, 0x70, 0x45, 0x63, 0x6e, 0x45, 0x63, + 0x68, 0x6f, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, + 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x3f, 0x0a, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, + 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, + 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x54, 0x63, 0x70, 0x45, 0x63, 0x6e, 0x45, + 0x63, 0x68, 0x6f, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, 0x64, 0x65, 0x63, 0x72, + 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x44, 0x0a, 0x0b, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x5f, + 0x74, 0x61, 0x67, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x54, 0x63, 0x70, 0x45, - 0x63, 0x6e, 0x45, 0x63, 0x68, 0x6f, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, 0x69, - 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x3f, 0x0a, 0x09, 0x64, 0x65, 0x63, 0x72, - 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x6f, 0x74, + 0x63, 0x6e, 0x45, 0x63, 0x68, 0x6f, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x52, + 0x0a, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x73, 0x1a, 0x56, 0x0a, 0x06, 0x43, + 0x68, 0x6f, 0x69, 0x63, 0x65, 0x22, 0x4c, 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x0a, + 0x0b, 0x75, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x10, 0x00, 0x12, 0x09, + 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x10, 0x02, 0x12, 0x0a, 0x0a, 0x06, 0x76, 0x61, 0x6c, + 0x75, 0x65, 0x73, 0x10, 0x03, 0x12, 0x0d, 0x0a, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, + 0x6e, 0x74, 0x10, 0x04, 0x12, 0x0d, 0x0a, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, + 0x74, 0x10, 0x05, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x42, 0x08, + 0x0a, 0x06, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x89, 0x01, 0x0a, 0x1b, 0x50, 0x61, 0x74, + 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x54, 0x63, 0x70, 0x43, 0x74, 0x6c, 0x55, 0x72, + 0x67, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x12, 0x19, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x72, + 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x00, 0x52, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, + 0x88, 0x01, 0x01, 0x12, 0x17, 0x0a, 0x04, 0x73, 0x74, 0x65, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x0d, 0x48, 0x01, 0x52, 0x04, 0x73, 0x74, 0x65, 0x70, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, + 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x02, 0x52, 0x05, 0x63, + 0x6f, 0x75, 0x6e, 0x74, 0x88, 0x01, 0x01, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x73, 0x74, 0x61, 0x72, + 0x74, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x73, 0x74, 0x65, 0x70, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x63, + 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x91, 0x01, 0x0a, 0x1d, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, + 0x46, 0x6c, 0x6f, 0x77, 0x54, 0x63, 0x70, 0x43, 0x74, 0x6c, 0x55, 0x72, 0x67, 0x4d, 0x65, 0x74, + 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x12, 0x17, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, + 0x1b, 0x0a, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, + 0x01, 0x52, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, + 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x02, 0x52, 0x06, + 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x88, 0x01, 0x01, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x6e, 0x61, + 0x6d, 0x65, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x42, 0x09, 0x0a, + 0x07, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x22, 0xbf, 0x03, 0x0a, 0x14, 0x50, 0x61, 0x74, + 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x54, 0x63, 0x70, 0x43, 0x74, 0x6c, 0x55, 0x72, + 0x67, 0x12, 0x42, 0x0a, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x0e, 0x32, 0x25, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, + 0x6c, 0x6f, 0x77, 0x54, 0x63, 0x70, 0x43, 0x74, 0x6c, 0x55, 0x72, 0x67, 0x2e, 0x43, 0x68, 0x6f, + 0x69, 0x63, 0x65, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x48, 0x00, 0x52, 0x06, 0x63, 0x68, 0x6f, 0x69, + 0x63, 0x65, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x88, 0x01, 0x01, + 0x12, 0x16, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0d, + 0x52, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x12, 0x3e, 0x0a, 0x09, 0x69, 0x6e, 0x63, 0x72, + 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x54, 0x63, 0x70, - 0x45, 0x63, 0x6e, 0x45, 0x63, 0x68, 0x6f, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, - 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x44, 0x0a, 0x0b, 0x6d, 0x65, 0x74, - 0x72, 0x69, 0x63, 0x5f, 0x74, 0x61, 0x67, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x23, - 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, - 0x54, 0x63, 0x70, 0x45, 0x63, 0x6e, 0x45, 0x63, 0x68, 0x6f, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, + 0x43, 0x74, 0x6c, 0x55, 0x72, 0x67, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, 0x69, + 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x3e, 0x0a, 0x09, 0x64, 0x65, 0x63, 0x72, + 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x6f, 0x74, + 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x54, 0x63, 0x70, + 0x43, 0x74, 0x6c, 0x55, 0x72, 0x67, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, 0x64, + 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x43, 0x0a, 0x0b, 0x6d, 0x65, 0x74, 0x72, + 0x69, 0x63, 0x5f, 0x74, 0x61, 0x67, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x22, 0x2e, + 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x54, + 0x63, 0x70, 0x43, 0x74, 0x6c, 0x55, 0x72, 0x67, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, + 0x67, 0x52, 0x0a, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x73, 0x1a, 0x56, 0x0a, + 0x06, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x22, 0x4c, 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, + 0x0f, 0x0a, 0x0b, 0x75, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x10, 0x00, + 0x12, 0x09, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x10, 0x02, 0x12, 0x0a, 0x0a, 0x06, 0x76, + 0x61, 0x6c, 0x75, 0x65, 0x73, 0x10, 0x03, 0x12, 0x0d, 0x0a, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, + 0x6d, 0x65, 0x6e, 0x74, 0x10, 0x04, 0x12, 0x0d, 0x0a, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, + 0x65, 0x6e, 0x74, 0x10, 0x05, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, + 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x89, 0x01, 0x0a, 0x1b, 0x50, + 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x54, 0x63, 0x70, 0x43, 0x74, 0x6c, + 0x41, 0x63, 0x6b, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x12, 0x19, 0x0a, 0x05, 0x73, 0x74, + 0x61, 0x72, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x00, 0x52, 0x05, 0x73, 0x74, 0x61, + 0x72, 0x74, 0x88, 0x01, 0x01, 0x12, 0x17, 0x0a, 0x04, 0x73, 0x74, 0x65, 0x70, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x04, 0x73, 0x74, 0x65, 0x70, 0x88, 0x01, 0x01, 0x12, 0x19, + 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x02, 0x52, + 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x88, 0x01, 0x01, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x73, 0x74, + 0x61, 0x72, 0x74, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x73, 0x74, 0x65, 0x70, 0x42, 0x08, 0x0a, 0x06, + 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x91, 0x01, 0x0a, 0x1d, 0x50, 0x61, 0x74, 0x74, 0x65, + 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x54, 0x63, 0x70, 0x43, 0x74, 0x6c, 0x41, 0x63, 0x6b, 0x4d, + 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x12, 0x17, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x88, 0x01, + 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x0d, 0x48, 0x01, 0x52, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x88, 0x01, 0x01, 0x12, 0x1b, + 0x0a, 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x02, + 0x52, 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x88, 0x01, 0x01, 0x42, 0x07, 0x0a, 0x05, 0x5f, + 0x6e, 0x61, 0x6d, 0x65, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x42, + 0x09, 0x0a, 0x07, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x22, 0xbf, 0x03, 0x0a, 0x14, 0x50, + 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x54, 0x63, 0x70, 0x43, 0x74, 0x6c, + 0x41, 0x63, 0x6b, 0x12, 0x42, 0x0a, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x0e, 0x32, 0x25, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, + 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x54, 0x63, 0x70, 0x43, 0x74, 0x6c, 0x41, 0x63, 0x6b, 0x2e, 0x43, + 0x68, 0x6f, 0x69, 0x63, 0x65, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x48, 0x00, 0x52, 0x06, 0x63, 0x68, + 0x6f, 0x69, 0x63, 0x65, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x88, + 0x01, 0x01, 0x12, 0x16, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, + 0x28, 0x0d, 0x52, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x12, 0x3e, 0x0a, 0x09, 0x69, 0x6e, + 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, + 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x54, + 0x63, 0x70, 0x43, 0x74, 0x6c, 0x41, 0x63, 0x6b, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, + 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x3e, 0x0a, 0x09, 0x64, 0x65, + 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, + 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x54, + 0x63, 0x70, 0x43, 0x74, 0x6c, 0x41, 0x63, 0x6b, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, + 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x43, 0x0a, 0x0b, 0x6d, 0x65, + 0x74, 0x72, 0x69, 0x63, 0x5f, 0x74, 0x61, 0x67, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x22, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, + 0x77, 0x54, 0x63, 0x70, 0x43, 0x74, 0x6c, 0x41, 0x63, 0x6b, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x52, 0x0a, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x73, 0x1a, 0x56, 0x0a, 0x06, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x22, 0x4c, 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x0a, 0x0b, 0x75, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, @@ -103810,7 +118837,7 @@ var file_otg_proto_rawDesc = []byte{ 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x10, 0x05, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x89, 0x01, 0x0a, 0x1b, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x54, 0x63, 0x70, 0x43, - 0x74, 0x6c, 0x55, 0x72, 0x67, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x12, 0x19, 0x0a, 0x05, + 0x74, 0x6c, 0x50, 0x73, 0x68, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x12, 0x19, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x00, 0x52, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x88, 0x01, 0x01, 0x12, 0x17, 0x0a, 0x04, 0x73, 0x74, 0x65, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x04, 0x73, 0x74, 0x65, 0x70, 0x88, 0x01, 0x01, @@ -103818,8 +118845,8 @@ var file_otg_proto_rawDesc = []byte{ 0x02, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x88, 0x01, 0x01, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x73, 0x74, 0x65, 0x70, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x91, 0x01, 0x0a, 0x1d, 0x50, 0x61, 0x74, - 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x54, 0x63, 0x70, 0x43, 0x74, 0x6c, 0x55, 0x72, - 0x67, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x12, 0x17, 0x0a, 0x04, 0x6e, 0x61, + 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x54, 0x63, 0x70, 0x43, 0x74, 0x6c, 0x50, 0x73, + 0x68, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x12, 0x17, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x88, 0x01, 0x01, @@ -103828,9 +118855,9 @@ var file_otg_proto_rawDesc = []byte{ 0x05, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x22, 0xbf, 0x03, 0x0a, 0x14, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x54, 0x63, 0x70, 0x43, - 0x74, 0x6c, 0x55, 0x72, 0x67, 0x12, 0x42, 0x0a, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x18, + 0x74, 0x6c, 0x50, 0x73, 0x68, 0x12, 0x42, 0x0a, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x25, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, - 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x54, 0x63, 0x70, 0x43, 0x74, 0x6c, 0x55, 0x72, 0x67, + 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x54, 0x63, 0x70, 0x43, 0x74, 0x6c, 0x50, 0x73, 0x68, 0x2e, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x48, 0x00, 0x52, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, @@ -103838,15 +118865,15 @@ var file_otg_proto_rawDesc = []byte{ 0x20, 0x03, 0x28, 0x0d, 0x52, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x12, 0x3e, 0x0a, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, - 0x77, 0x54, 0x63, 0x70, 0x43, 0x74, 0x6c, 0x55, 0x72, 0x67, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, + 0x77, 0x54, 0x63, 0x70, 0x43, 0x74, 0x6c, 0x50, 0x73, 0x68, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x3e, 0x0a, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, - 0x77, 0x54, 0x63, 0x70, 0x43, 0x74, 0x6c, 0x55, 0x72, 0x67, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, + 0x77, 0x54, 0x63, 0x70, 0x43, 0x74, 0x6c, 0x50, 0x73, 0x68, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x43, 0x0a, 0x0b, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x5f, 0x74, 0x61, 0x67, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, - 0x6c, 0x6f, 0x77, 0x54, 0x63, 0x70, 0x43, 0x74, 0x6c, 0x55, 0x72, 0x67, 0x4d, 0x65, 0x74, 0x72, + 0x6c, 0x6f, 0x77, 0x54, 0x63, 0x70, 0x43, 0x74, 0x6c, 0x50, 0x73, 0x68, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x52, 0x0a, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x73, 0x1a, 0x56, 0x0a, 0x06, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x22, 0x4c, 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x0a, 0x0b, 0x75, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, @@ -103856,7 +118883,7 @@ var file_otg_proto_rawDesc = []byte{ 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x10, 0x05, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x89, 0x01, 0x0a, 0x1b, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x54, 0x63, - 0x70, 0x43, 0x74, 0x6c, 0x41, 0x63, 0x6b, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x12, 0x19, + 0x70, 0x43, 0x74, 0x6c, 0x52, 0x73, 0x74, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x12, 0x19, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x00, 0x52, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x88, 0x01, 0x01, 0x12, 0x17, 0x0a, 0x04, 0x73, 0x74, 0x65, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x04, 0x73, 0x74, 0x65, 0x70, 0x88, @@ -103865,7 +118892,7 @@ var file_otg_proto_rawDesc = []byte{ 0x06, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x73, 0x74, 0x65, 0x70, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x91, 0x01, 0x0a, 0x1d, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x54, 0x63, 0x70, 0x43, 0x74, 0x6c, - 0x41, 0x63, 0x6b, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x12, 0x17, 0x0a, 0x04, + 0x52, 0x73, 0x74, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x12, 0x17, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x88, @@ -103874,25 +118901,25 @@ var file_otg_proto_rawDesc = []byte{ 0x07, 0x0a, 0x05, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x22, 0xbf, 0x03, 0x0a, 0x14, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x54, 0x63, - 0x70, 0x43, 0x74, 0x6c, 0x41, 0x63, 0x6b, 0x12, 0x42, 0x0a, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, + 0x70, 0x43, 0x74, 0x6c, 0x52, 0x73, 0x74, 0x12, 0x42, 0x0a, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x25, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, - 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x54, 0x63, 0x70, 0x43, 0x74, 0x6c, 0x41, - 0x63, 0x6b, 0x2e, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x48, 0x00, + 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x54, 0x63, 0x70, 0x43, 0x74, 0x6c, 0x52, + 0x73, 0x74, 0x2e, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x48, 0x00, 0x52, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x88, 0x01, 0x01, 0x12, 0x16, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0d, 0x52, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x12, 0x3e, 0x0a, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, - 0x6c, 0x6f, 0x77, 0x54, 0x63, 0x70, 0x43, 0x74, 0x6c, 0x41, 0x63, 0x6b, 0x43, 0x6f, 0x75, 0x6e, + 0x6c, 0x6f, 0x77, 0x54, 0x63, 0x70, 0x43, 0x74, 0x6c, 0x52, 0x73, 0x74, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x3e, 0x0a, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, - 0x6c, 0x6f, 0x77, 0x54, 0x63, 0x70, 0x43, 0x74, 0x6c, 0x41, 0x63, 0x6b, 0x43, 0x6f, 0x75, 0x6e, + 0x6c, 0x6f, 0x77, 0x54, 0x63, 0x70, 0x43, 0x74, 0x6c, 0x52, 0x73, 0x74, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x43, 0x0a, 0x0b, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x5f, 0x74, 0x61, 0x67, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, - 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x54, 0x63, 0x70, 0x43, 0x74, 0x6c, 0x41, 0x63, 0x6b, 0x4d, 0x65, + 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x54, 0x63, 0x70, 0x43, 0x74, 0x6c, 0x52, 0x73, 0x74, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x52, 0x0a, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x73, 0x1a, 0x56, 0x0a, 0x06, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x22, 0x4c, 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x0a, 0x0b, 0x75, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, @@ -103902,7 +118929,7 @@ var file_otg_proto_rawDesc = []byte{ 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x10, 0x05, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x89, 0x01, 0x0a, 0x1b, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, - 0x54, 0x63, 0x70, 0x43, 0x74, 0x6c, 0x50, 0x73, 0x68, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, + 0x54, 0x63, 0x70, 0x43, 0x74, 0x6c, 0x53, 0x79, 0x6e, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x12, 0x19, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x00, 0x52, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x88, 0x01, 0x01, 0x12, 0x17, 0x0a, 0x04, 0x73, 0x74, 0x65, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x04, 0x73, 0x74, 0x65, @@ -103911,7 +118938,7 @@ var file_otg_proto_rawDesc = []byte{ 0x08, 0x0a, 0x06, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x73, 0x74, 0x65, 0x70, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x91, 0x01, 0x0a, 0x1d, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x54, 0x63, 0x70, 0x43, - 0x74, 0x6c, 0x50, 0x73, 0x68, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x12, 0x17, + 0x74, 0x6c, 0x53, 0x79, 0x6e, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x12, 0x17, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, @@ -103920,25 +118947,25 @@ var file_otg_proto_rawDesc = []byte{ 0x01, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x22, 0xbf, 0x03, 0x0a, 0x14, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, - 0x54, 0x63, 0x70, 0x43, 0x74, 0x6c, 0x50, 0x73, 0x68, 0x12, 0x42, 0x0a, 0x06, 0x63, 0x68, 0x6f, + 0x54, 0x63, 0x70, 0x43, 0x74, 0x6c, 0x53, 0x79, 0x6e, 0x12, 0x42, 0x0a, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x25, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x54, 0x63, 0x70, 0x43, 0x74, - 0x6c, 0x50, 0x73, 0x68, 0x2e, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x2e, 0x45, 0x6e, 0x75, 0x6d, + 0x6c, 0x53, 0x79, 0x6e, 0x2e, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x48, 0x00, 0x52, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x88, 0x01, 0x01, 0x12, 0x16, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0d, 0x52, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x12, 0x3e, 0x0a, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, - 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x54, 0x63, 0x70, 0x43, 0x74, 0x6c, 0x50, 0x73, 0x68, 0x43, 0x6f, + 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x54, 0x63, 0x70, 0x43, 0x74, 0x6c, 0x53, 0x79, 0x6e, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x3e, 0x0a, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, - 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x54, 0x63, 0x70, 0x43, 0x74, 0x6c, 0x50, 0x73, 0x68, 0x43, 0x6f, + 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x54, 0x63, 0x70, 0x43, 0x74, 0x6c, 0x53, 0x79, 0x6e, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x43, 0x0a, 0x0b, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x5f, 0x74, 0x61, 0x67, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, - 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x54, 0x63, 0x70, 0x43, 0x74, 0x6c, 0x50, 0x73, 0x68, + 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x54, 0x63, 0x70, 0x43, 0x74, 0x6c, 0x53, 0x79, 0x6e, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x52, 0x0a, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x73, 0x1a, 0x56, 0x0a, 0x06, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x22, 0x4c, 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x0a, 0x0b, 0x75, 0x6e, 0x73, 0x70, 0x65, @@ -103948,7 +118975,7 @@ var file_otg_proto_rawDesc = []byte{ 0x0a, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x10, 0x05, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x89, 0x01, 0x0a, 0x1b, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, - 0x6f, 0x77, 0x54, 0x63, 0x70, 0x43, 0x74, 0x6c, 0x52, 0x73, 0x74, 0x43, 0x6f, 0x75, 0x6e, 0x74, + 0x6f, 0x77, 0x54, 0x63, 0x70, 0x43, 0x74, 0x6c, 0x46, 0x69, 0x6e, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x12, 0x19, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x00, 0x52, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x88, 0x01, 0x01, 0x12, 0x17, 0x0a, 0x04, 0x73, 0x74, 0x65, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x04, 0x73, @@ -103957,7 +118984,7 @@ var file_otg_proto_rawDesc = []byte{ 0x01, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x73, 0x74, 0x65, 0x70, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x91, 0x01, 0x0a, 0x1d, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x54, 0x63, - 0x70, 0x43, 0x74, 0x6c, 0x52, 0x73, 0x74, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, + 0x70, 0x43, 0x74, 0x6c, 0x46, 0x69, 0x6e, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x12, 0x17, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x06, 0x6f, 0x66, 0x66, @@ -103966,26 +118993,26 @@ var file_otg_proto_rawDesc = []byte{ 0x88, 0x01, 0x01, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x22, 0xbf, 0x03, 0x0a, 0x14, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, - 0x6f, 0x77, 0x54, 0x63, 0x70, 0x43, 0x74, 0x6c, 0x52, 0x73, 0x74, 0x12, 0x42, 0x0a, 0x06, 0x63, + 0x6f, 0x77, 0x54, 0x63, 0x70, 0x43, 0x74, 0x6c, 0x46, 0x69, 0x6e, 0x12, 0x42, 0x0a, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x25, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x54, 0x63, 0x70, - 0x43, 0x74, 0x6c, 0x52, 0x73, 0x74, 0x2e, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x2e, 0x45, 0x6e, + 0x43, 0x74, 0x6c, 0x46, 0x69, 0x6e, 0x2e, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x48, 0x00, 0x52, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x88, 0x01, 0x01, 0x12, 0x16, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0d, 0x52, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x12, 0x3e, 0x0a, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, - 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x54, 0x63, 0x70, 0x43, 0x74, 0x6c, 0x52, 0x73, 0x74, + 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x54, 0x63, 0x70, 0x43, 0x74, 0x6c, 0x46, 0x69, 0x6e, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x3e, 0x0a, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, - 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x54, 0x63, 0x70, 0x43, 0x74, 0x6c, 0x52, 0x73, 0x74, + 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x54, 0x63, 0x70, 0x43, 0x74, 0x6c, 0x46, 0x69, 0x6e, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x43, 0x0a, 0x0b, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x5f, 0x74, 0x61, 0x67, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, - 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x54, 0x63, 0x70, 0x43, 0x74, 0x6c, 0x52, - 0x73, 0x74, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x52, 0x0a, 0x6d, 0x65, 0x74, + 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x54, 0x63, 0x70, 0x43, 0x74, 0x6c, 0x46, + 0x69, 0x6e, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x52, 0x0a, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x73, 0x1a, 0x56, 0x0a, 0x06, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x22, 0x4c, 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x0a, 0x0b, 0x75, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, 0x76, 0x61, @@ -103994,7 +119021,7 @@ var file_otg_proto_rawDesc = []byte{ 0x12, 0x0d, 0x0a, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x10, 0x05, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x89, 0x01, 0x0a, 0x1b, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, - 0x46, 0x6c, 0x6f, 0x77, 0x54, 0x63, 0x70, 0x43, 0x74, 0x6c, 0x53, 0x79, 0x6e, 0x43, 0x6f, 0x75, + 0x46, 0x6c, 0x6f, 0x77, 0x54, 0x63, 0x70, 0x57, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x12, 0x19, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x00, 0x52, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x88, 0x01, 0x01, 0x12, 0x17, 0x0a, 0x04, 0x73, 0x74, 0x65, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, @@ -104003,7 +119030,7 @@ var file_otg_proto_rawDesc = []byte{ 0x88, 0x01, 0x01, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x73, 0x74, 0x65, 0x70, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x91, 0x01, 0x0a, 0x1d, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, - 0x54, 0x63, 0x70, 0x43, 0x74, 0x6c, 0x53, 0x79, 0x6e, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, + 0x54, 0x63, 0x70, 0x57, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x12, 0x17, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x06, 0x6f, @@ -104012,26 +119039,26 @@ var file_otg_proto_rawDesc = []byte{ 0x74, 0x68, 0x88, 0x01, 0x01, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x22, 0xbf, 0x03, 0x0a, 0x14, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, - 0x46, 0x6c, 0x6f, 0x77, 0x54, 0x63, 0x70, 0x43, 0x74, 0x6c, 0x53, 0x79, 0x6e, 0x12, 0x42, 0x0a, + 0x46, 0x6c, 0x6f, 0x77, 0x54, 0x63, 0x70, 0x57, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x12, 0x42, 0x0a, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x25, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x54, - 0x63, 0x70, 0x43, 0x74, 0x6c, 0x53, 0x79, 0x6e, 0x2e, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x2e, + 0x63, 0x70, 0x57, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x2e, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x48, 0x00, 0x52, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x88, 0x01, 0x01, 0x12, 0x16, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0d, 0x52, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x12, 0x3e, 0x0a, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, - 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x54, 0x63, 0x70, 0x43, 0x74, 0x6c, 0x53, - 0x79, 0x6e, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, + 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x54, 0x63, 0x70, 0x57, 0x69, 0x6e, 0x64, + 0x6f, 0x77, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x3e, 0x0a, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, - 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x54, 0x63, 0x70, 0x43, 0x74, 0x6c, 0x53, - 0x79, 0x6e, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, + 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x54, 0x63, 0x70, 0x57, 0x69, 0x6e, 0x64, + 0x6f, 0x77, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x43, 0x0a, 0x0b, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x5f, 0x74, 0x61, 0x67, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x6f, 0x74, 0x67, 0x2e, - 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x54, 0x63, 0x70, 0x43, 0x74, - 0x6c, 0x53, 0x79, 0x6e, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x52, 0x0a, 0x6d, + 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x54, 0x63, 0x70, 0x57, 0x69, + 0x6e, 0x64, 0x6f, 0x77, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x52, 0x0a, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x73, 0x1a, 0x56, 0x0a, 0x06, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x22, 0x4c, 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x0a, 0x0b, 0x75, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, @@ -104039,45 +119066,92 @@ var file_otg_proto_rawDesc = []byte{ 0x73, 0x10, 0x03, 0x12, 0x0d, 0x0a, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x10, 0x04, 0x12, 0x0d, 0x0a, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x10, 0x05, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x42, 0x08, 0x0a, 0x06, - 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x89, 0x01, 0x0a, 0x1b, 0x50, 0x61, 0x74, 0x74, 0x65, - 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x54, 0x63, 0x70, 0x43, 0x74, 0x6c, 0x46, 0x69, 0x6e, 0x43, - 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x12, 0x19, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x00, 0x52, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x88, 0x01, - 0x01, 0x12, 0x17, 0x0a, 0x04, 0x73, 0x74, 0x65, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, - 0x01, 0x52, 0x04, 0x73, 0x74, 0x65, 0x70, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x63, 0x6f, - 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x02, 0x52, 0x05, 0x63, 0x6f, 0x75, - 0x6e, 0x74, 0x88, 0x01, 0x01, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x42, - 0x07, 0x0a, 0x05, 0x5f, 0x73, 0x74, 0x65, 0x70, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x63, 0x6f, 0x75, - 0x6e, 0x74, 0x22, 0x91, 0x01, 0x0a, 0x1d, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, - 0x6f, 0x77, 0x54, 0x63, 0x70, 0x43, 0x74, 0x6c, 0x46, 0x69, 0x6e, 0x4d, 0x65, 0x74, 0x72, 0x69, - 0x63, 0x54, 0x61, 0x67, 0x12, 0x17, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x48, 0x00, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, - 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, - 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x6c, 0x65, - 0x6e, 0x67, 0x74, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x02, 0x52, 0x06, 0x6c, 0x65, - 0x6e, 0x67, 0x74, 0x68, 0x88, 0x01, 0x01, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x6e, 0x61, 0x6d, 0x65, - 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x42, 0x09, 0x0a, 0x07, 0x5f, - 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x22, 0xbf, 0x03, 0x0a, 0x14, 0x50, 0x61, 0x74, 0x74, 0x65, - 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x54, 0x63, 0x70, 0x43, 0x74, 0x6c, 0x46, 0x69, 0x6e, 0x12, - 0x42, 0x0a, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, - 0x25, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, - 0x77, 0x54, 0x63, 0x70, 0x43, 0x74, 0x6c, 0x46, 0x69, 0x6e, 0x2e, 0x43, 0x68, 0x6f, 0x69, 0x63, - 0x65, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x48, 0x00, 0x52, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, - 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x0d, 0x48, 0x01, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x88, 0x01, 0x01, 0x12, 0x16, - 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0d, 0x52, 0x06, - 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x12, 0x3e, 0x0a, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, - 0x65, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x6f, 0x74, 0x67, 0x2e, - 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x54, 0x63, 0x70, 0x43, 0x74, - 0x6c, 0x46, 0x69, 0x6e, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, 0x69, 0x6e, 0x63, - 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x3e, 0x0a, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, - 0x65, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x6f, 0x74, 0x67, 0x2e, - 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x54, 0x63, 0x70, 0x43, 0x74, - 0x6c, 0x46, 0x69, 0x6e, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, 0x64, 0x65, 0x63, - 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x43, 0x0a, 0x0b, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, - 0x5f, 0x74, 0x61, 0x67, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x6f, 0x74, - 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x54, 0x63, 0x70, - 0x43, 0x74, 0x6c, 0x46, 0x69, 0x6e, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x52, + 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x8a, 0x01, 0x0a, 0x1c, 0x50, 0x61, 0x74, 0x74, 0x65, + 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x55, 0x64, 0x70, 0x53, 0x72, 0x63, 0x50, 0x6f, 0x72, 0x74, + 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x12, 0x19, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x00, 0x52, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x88, + 0x01, 0x01, 0x12, 0x17, 0x0a, 0x04, 0x73, 0x74, 0x65, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, + 0x48, 0x01, 0x52, 0x04, 0x73, 0x74, 0x65, 0x70, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x63, + 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x02, 0x52, 0x05, 0x63, 0x6f, + 0x75, 0x6e, 0x74, 0x88, 0x01, 0x01, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, + 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x73, 0x74, 0x65, 0x70, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x63, 0x6f, + 0x75, 0x6e, 0x74, 0x22, 0x92, 0x01, 0x0a, 0x1e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, + 0x6c, 0x6f, 0x77, 0x55, 0x64, 0x70, 0x53, 0x72, 0x63, 0x50, 0x6f, 0x72, 0x74, 0x4d, 0x65, 0x74, + 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x12, 0x17, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, + 0x1b, 0x0a, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, + 0x01, 0x52, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, + 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x02, 0x52, 0x06, + 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x88, 0x01, 0x01, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x6e, 0x61, + 0x6d, 0x65, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x42, 0x09, 0x0a, + 0x07, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x22, 0xc4, 0x03, 0x0a, 0x15, 0x50, 0x61, 0x74, + 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x55, 0x64, 0x70, 0x53, 0x72, 0x63, 0x50, 0x6f, + 0x72, 0x74, 0x12, 0x43, 0x0a, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x0e, 0x32, 0x26, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, + 0x46, 0x6c, 0x6f, 0x77, 0x55, 0x64, 0x70, 0x53, 0x72, 0x63, 0x50, 0x6f, 0x72, 0x74, 0x2e, 0x43, + 0x68, 0x6f, 0x69, 0x63, 0x65, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x48, 0x00, 0x52, 0x06, 0x63, 0x68, + 0x6f, 0x69, 0x63, 0x65, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x88, + 0x01, 0x01, 0x12, 0x16, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, + 0x28, 0x0d, 0x52, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x12, 0x3f, 0x0a, 0x09, 0x69, 0x6e, + 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, + 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x55, + 0x64, 0x70, 0x53, 0x72, 0x63, 0x50, 0x6f, 0x72, 0x74, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, + 0x52, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x3f, 0x0a, 0x09, 0x64, + 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, + 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, + 0x55, 0x64, 0x70, 0x53, 0x72, 0x63, 0x50, 0x6f, 0x72, 0x74, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, + 0x72, 0x52, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x44, 0x0a, 0x0b, + 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x5f, 0x74, 0x61, 0x67, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x23, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, + 0x6c, 0x6f, 0x77, 0x55, 0x64, 0x70, 0x53, 0x72, 0x63, 0x50, 0x6f, 0x72, 0x74, 0x4d, 0x65, 0x74, + 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x52, 0x0a, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, + 0x67, 0x73, 0x1a, 0x56, 0x0a, 0x06, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x22, 0x4c, 0x0a, 0x04, + 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x0a, 0x0b, 0x75, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, + 0x69, 0x65, 0x64, 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x10, 0x02, + 0x12, 0x0a, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x10, 0x03, 0x12, 0x0d, 0x0a, 0x09, + 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x10, 0x04, 0x12, 0x0d, 0x0a, 0x09, 0x64, + 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x10, 0x05, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x63, + 0x68, 0x6f, 0x69, 0x63, 0x65, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, + 0x8a, 0x01, 0x0a, 0x1c, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x55, + 0x64, 0x70, 0x44, 0x73, 0x74, 0x50, 0x6f, 0x72, 0x74, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, + 0x12, 0x19, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x48, + 0x00, 0x52, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x88, 0x01, 0x01, 0x12, 0x17, 0x0a, 0x04, 0x73, + 0x74, 0x65, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x04, 0x73, 0x74, 0x65, + 0x70, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x0d, 0x48, 0x02, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x88, 0x01, 0x01, 0x42, + 0x08, 0x0a, 0x06, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x73, 0x74, + 0x65, 0x70, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x92, 0x01, 0x0a, + 0x1e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x55, 0x64, 0x70, 0x44, + 0x73, 0x74, 0x50, 0x6f, 0x72, 0x74, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x12, + 0x17, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, + 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x6f, 0x66, 0x66, 0x73, + 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x06, 0x6f, 0x66, 0x66, 0x73, + 0x65, 0x74, 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x02, 0x52, 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x88, + 0x01, 0x01, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x42, 0x09, 0x0a, 0x07, 0x5f, + 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, + 0x68, 0x22, 0xc4, 0x03, 0x0a, 0x15, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, + 0x77, 0x55, 0x64, 0x70, 0x44, 0x73, 0x74, 0x50, 0x6f, 0x72, 0x74, 0x12, 0x43, 0x0a, 0x06, 0x63, + 0x68, 0x6f, 0x69, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x26, 0x2e, 0x6f, 0x74, + 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x55, 0x64, 0x70, + 0x44, 0x73, 0x74, 0x50, 0x6f, 0x72, 0x74, 0x2e, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x2e, 0x45, + 0x6e, 0x75, 0x6d, 0x48, 0x00, 0x52, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x88, 0x01, 0x01, + 0x12, 0x19, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, + 0x01, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x88, 0x01, 0x01, 0x12, 0x16, 0x0a, 0x06, 0x76, + 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0d, 0x52, 0x06, 0x76, 0x61, 0x6c, + 0x75, 0x65, 0x73, 0x12, 0x3f, 0x0a, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, + 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, + 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x55, 0x64, 0x70, 0x44, 0x73, 0x74, 0x50, 0x6f, + 0x72, 0x74, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, + 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x3f, 0x0a, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, + 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, + 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x55, 0x64, 0x70, 0x44, 0x73, 0x74, 0x50, + 0x6f, 0x72, 0x74, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, 0x64, 0x65, 0x63, 0x72, + 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x44, 0x0a, 0x0b, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x5f, + 0x74, 0x61, 0x67, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x6f, 0x74, 0x67, + 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x55, 0x64, 0x70, 0x44, + 0x73, 0x74, 0x50, 0x6f, 0x72, 0x74, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x52, 0x0a, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x73, 0x1a, 0x56, 0x0a, 0x06, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x22, 0x4c, 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x0a, 0x0b, 0x75, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x10, 0x00, 0x12, 0x09, @@ -104086,8 +119160,8 @@ var file_otg_proto_rawDesc = []byte{ 0x6e, 0x74, 0x10, 0x04, 0x12, 0x0d, 0x0a, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x10, 0x05, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x89, 0x01, 0x0a, 0x1b, 0x50, 0x61, 0x74, - 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x54, 0x63, 0x70, 0x57, 0x69, 0x6e, 0x64, 0x6f, - 0x77, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x12, 0x19, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x72, + 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x55, 0x64, 0x70, 0x4c, 0x65, 0x6e, 0x67, 0x74, + 0x68, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x12, 0x19, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x00, 0x52, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x88, 0x01, 0x01, 0x12, 0x17, 0x0a, 0x04, 0x73, 0x74, 0x65, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x04, 0x73, 0x74, 0x65, 0x70, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, @@ -104095,7 +119169,7 @@ var file_otg_proto_rawDesc = []byte{ 0x6f, 0x75, 0x6e, 0x74, 0x88, 0x01, 0x01, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x73, 0x74, 0x65, 0x70, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x91, 0x01, 0x0a, 0x1d, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, - 0x46, 0x6c, 0x6f, 0x77, 0x54, 0x63, 0x70, 0x57, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x4d, 0x65, 0x74, + 0x46, 0x6c, 0x6f, 0x77, 0x55, 0x64, 0x70, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x12, 0x17, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, @@ -104104,26 +119178,146 @@ var file_otg_proto_rawDesc = []byte{ 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x88, 0x01, 0x01, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x22, 0xbf, 0x03, 0x0a, 0x14, 0x50, 0x61, 0x74, - 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x54, 0x63, 0x70, 0x57, 0x69, 0x6e, 0x64, 0x6f, - 0x77, 0x12, 0x42, 0x0a, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x55, 0x64, 0x70, 0x4c, 0x65, 0x6e, 0x67, 0x74, + 0x68, 0x12, 0x42, 0x0a, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x25, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, - 0x6c, 0x6f, 0x77, 0x54, 0x63, 0x70, 0x57, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x2e, 0x43, 0x68, 0x6f, + 0x6c, 0x6f, 0x77, 0x55, 0x64, 0x70, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x2e, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x48, 0x00, 0x52, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x88, 0x01, 0x01, 0x12, 0x16, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0d, 0x52, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x12, 0x3e, 0x0a, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x6f, 0x74, - 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x54, 0x63, 0x70, - 0x57, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, 0x69, + 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x55, 0x64, 0x70, + 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x3e, 0x0a, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x6f, 0x74, - 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x54, 0x63, 0x70, - 0x57, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, 0x64, + 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x55, 0x64, 0x70, + 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x43, 0x0a, 0x0b, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x5f, 0x74, 0x61, 0x67, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x22, 0x2e, - 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x54, - 0x63, 0x70, 0x57, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, + 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x55, + 0x64, 0x70, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, + 0x67, 0x52, 0x0a, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x73, 0x1a, 0x56, 0x0a, + 0x06, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x22, 0x4c, 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, + 0x0f, 0x0a, 0x0b, 0x75, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x10, 0x00, + 0x12, 0x09, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x10, 0x02, 0x12, 0x0a, 0x0a, 0x06, 0x76, + 0x61, 0x6c, 0x75, 0x65, 0x73, 0x10, 0x03, 0x12, 0x0d, 0x0a, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, + 0x6d, 0x65, 0x6e, 0x74, 0x10, 0x04, 0x12, 0x0d, 0x0a, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, + 0x65, 0x6e, 0x74, 0x10, 0x05, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, + 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0xe5, 0x02, 0x0a, 0x16, 0x50, + 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x55, 0x64, 0x70, 0x43, 0x68, 0x65, + 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x12, 0x44, 0x0a, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x27, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, + 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x55, 0x64, 0x70, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x73, + 0x75, 0x6d, 0x2e, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x48, 0x00, + 0x52, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x88, 0x01, 0x01, 0x12, 0x4d, 0x0a, 0x09, 0x67, + 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2a, + 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, + 0x55, 0x64, 0x70, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x2e, 0x47, 0x65, 0x6e, 0x65, + 0x72, 0x61, 0x74, 0x65, 0x64, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x48, 0x01, 0x52, 0x09, 0x67, 0x65, + 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x63, 0x75, + 0x73, 0x74, 0x6f, 0x6d, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x02, 0x52, 0x06, 0x63, 0x75, + 0x73, 0x74, 0x6f, 0x6d, 0x88, 0x01, 0x01, 0x1a, 0x3c, 0x0a, 0x06, 0x43, 0x68, 0x6f, 0x69, 0x63, + 0x65, 0x22, 0x32, 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x0a, 0x0b, 0x75, 0x6e, 0x73, + 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x10, 0x00, 0x12, 0x0d, 0x0a, 0x09, 0x67, 0x65, + 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x10, 0x01, 0x12, 0x0a, 0x0a, 0x06, 0x63, 0x75, 0x73, + 0x74, 0x6f, 0x6d, 0x10, 0x02, 0x1a, 0x37, 0x0a, 0x09, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, + 0x65, 0x64, 0x22, 0x2a, 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x0a, 0x0b, 0x75, 0x6e, + 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x10, 0x00, 0x12, 0x08, 0x0a, 0x04, 0x67, + 0x6f, 0x6f, 0x64, 0x10, 0x01, 0x12, 0x07, 0x0a, 0x03, 0x62, 0x61, 0x64, 0x10, 0x02, 0x42, 0x09, + 0x0a, 0x07, 0x5f, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x67, 0x65, + 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x63, 0x75, 0x73, 0x74, + 0x6f, 0x6d, 0x22, 0x92, 0x01, 0x0a, 0x24, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, + 0x6f, 0x77, 0x47, 0x72, 0x65, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x50, 0x72, 0x65, + 0x73, 0x65, 0x6e, 0x74, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x12, 0x19, 0x0a, 0x05, 0x73, + 0x74, 0x61, 0x72, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x00, 0x52, 0x05, 0x73, 0x74, + 0x61, 0x72, 0x74, 0x88, 0x01, 0x01, 0x12, 0x17, 0x0a, 0x04, 0x73, 0x74, 0x65, 0x70, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x04, 0x73, 0x74, 0x65, 0x70, 0x88, 0x01, 0x01, 0x12, + 0x19, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x02, + 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x88, 0x01, 0x01, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x73, + 0x74, 0x61, 0x72, 0x74, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x73, 0x74, 0x65, 0x70, 0x42, 0x08, 0x0a, + 0x06, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x9a, 0x01, 0x0a, 0x26, 0x50, 0x61, 0x74, 0x74, + 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x47, 0x72, 0x65, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x73, + 0x75, 0x6d, 0x50, 0x72, 0x65, 0x73, 0x65, 0x6e, 0x74, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, + 0x61, 0x67, 0x12, 0x17, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x48, 0x00, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x6f, + 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x06, 0x6f, + 0x66, 0x66, 0x73, 0x65, 0x74, 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x6c, 0x65, 0x6e, 0x67, + 0x74, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x02, 0x52, 0x06, 0x6c, 0x65, 0x6e, 0x67, + 0x74, 0x68, 0x88, 0x01, 0x01, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x42, 0x09, + 0x0a, 0x07, 0x5f, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6c, 0x65, + 0x6e, 0x67, 0x74, 0x68, 0x22, 0xec, 0x03, 0x0a, 0x1d, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, + 0x46, 0x6c, 0x6f, 0x77, 0x47, 0x72, 0x65, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x50, + 0x72, 0x65, 0x73, 0x65, 0x6e, 0x74, 0x12, 0x4b, 0x0a, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2e, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, + 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x47, 0x72, 0x65, 0x43, 0x68, 0x65, 0x63, 0x6b, + 0x73, 0x75, 0x6d, 0x50, 0x72, 0x65, 0x73, 0x65, 0x6e, 0x74, 0x2e, 0x43, 0x68, 0x6f, 0x69, 0x63, + 0x65, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x48, 0x00, 0x52, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, + 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x0d, 0x48, 0x01, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x88, 0x01, 0x01, 0x12, 0x16, + 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0d, 0x52, 0x06, + 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x12, 0x47, 0x0a, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, + 0x65, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x6f, 0x74, 0x67, 0x2e, + 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x47, 0x72, 0x65, 0x43, 0x68, + 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x50, 0x72, 0x65, 0x73, 0x65, 0x6e, 0x74, 0x43, 0x6f, 0x75, + 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, + 0x47, 0x0a, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, + 0x46, 0x6c, 0x6f, 0x77, 0x47, 0x72, 0x65, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x50, + 0x72, 0x65, 0x73, 0x65, 0x6e, 0x74, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, 0x64, + 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x4c, 0x0a, 0x0b, 0x6d, 0x65, 0x74, 0x72, + 0x69, 0x63, 0x5f, 0x74, 0x61, 0x67, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2b, 0x2e, + 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x47, + 0x72, 0x65, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x50, 0x72, 0x65, 0x73, 0x65, 0x6e, + 0x74, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x52, 0x0a, 0x6d, 0x65, 0x74, 0x72, + 0x69, 0x63, 0x54, 0x61, 0x67, 0x73, 0x1a, 0x56, 0x0a, 0x06, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, + 0x22, 0x4c, 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x0a, 0x0b, 0x75, 0x6e, 0x73, 0x70, + 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, 0x76, 0x61, 0x6c, + 0x75, 0x65, 0x10, 0x02, 0x12, 0x0a, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x10, 0x03, + 0x12, 0x0d, 0x0a, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x10, 0x04, 0x12, + 0x0d, 0x0a, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x10, 0x05, 0x42, 0x09, + 0x0a, 0x07, 0x5f, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x76, 0x61, + 0x6c, 0x75, 0x65, 0x22, 0x8c, 0x01, 0x0a, 0x1e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, + 0x6c, 0x6f, 0x77, 0x47, 0x72, 0x65, 0x52, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x64, 0x30, 0x43, + 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x12, 0x19, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x00, 0x52, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x88, 0x01, + 0x01, 0x12, 0x17, 0x0a, 0x04, 0x73, 0x74, 0x65, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, + 0x01, 0x52, 0x04, 0x73, 0x74, 0x65, 0x70, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x63, 0x6f, + 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x02, 0x52, 0x05, 0x63, 0x6f, 0x75, + 0x6e, 0x74, 0x88, 0x01, 0x01, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x42, + 0x07, 0x0a, 0x05, 0x5f, 0x73, 0x74, 0x65, 0x70, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x63, 0x6f, 0x75, + 0x6e, 0x74, 0x22, 0x94, 0x01, 0x0a, 0x20, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, + 0x6f, 0x77, 0x47, 0x72, 0x65, 0x52, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x64, 0x30, 0x4d, 0x65, + 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x12, 0x17, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x88, 0x01, 0x01, + 0x12, 0x1b, 0x0a, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, + 0x48, 0x01, 0x52, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, + 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x02, 0x52, + 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x88, 0x01, 0x01, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x6e, + 0x61, 0x6d, 0x65, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x42, 0x09, + 0x0a, 0x07, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x22, 0xce, 0x03, 0x0a, 0x17, 0x50, 0x61, + 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x47, 0x72, 0x65, 0x52, 0x65, 0x73, 0x65, + 0x72, 0x76, 0x65, 0x64, 0x30, 0x12, 0x45, 0x0a, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x28, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, + 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x47, 0x72, 0x65, 0x52, 0x65, 0x73, 0x65, 0x72, 0x76, + 0x65, 0x64, 0x30, 0x2e, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x48, + 0x00, 0x52, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, + 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x05, 0x76, + 0x61, 0x6c, 0x75, 0x65, 0x88, 0x01, 0x01, 0x12, 0x16, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, + 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0d, 0x52, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x12, + 0x41, 0x0a, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, + 0x46, 0x6c, 0x6f, 0x77, 0x47, 0x72, 0x65, 0x52, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x64, 0x30, + 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, + 0x6e, 0x74, 0x12, 0x41, 0x0a, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, + 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, + 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x47, 0x72, 0x65, 0x52, 0x65, 0x73, 0x65, 0x72, 0x76, + 0x65, 0x64, 0x30, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, 0x64, 0x65, 0x63, 0x72, + 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x46, 0x0a, 0x0b, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x5f, + 0x74, 0x61, 0x67, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x6f, 0x74, 0x67, + 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x47, 0x72, 0x65, 0x52, + 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x64, 0x30, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x52, 0x0a, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x73, 0x1a, 0x56, 0x0a, 0x06, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x22, 0x4c, 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x0a, 0x0b, 0x75, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x10, 0x00, @@ -104132,8 +119326,8 @@ var file_otg_proto_rawDesc = []byte{ 0x6d, 0x65, 0x6e, 0x74, 0x10, 0x04, 0x12, 0x0d, 0x0a, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x10, 0x05, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x8a, 0x01, 0x0a, 0x1c, 0x50, - 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x55, 0x64, 0x70, 0x53, 0x72, 0x63, - 0x50, 0x6f, 0x72, 0x74, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x12, 0x19, 0x0a, 0x05, 0x73, + 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x47, 0x72, 0x65, 0x56, 0x65, 0x72, + 0x73, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x12, 0x19, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x00, 0x52, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x88, 0x01, 0x01, 0x12, 0x17, 0x0a, 0x04, 0x73, 0x74, 0x65, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x04, 0x73, 0x74, 0x65, 0x70, 0x88, 0x01, 0x01, 0x12, @@ -104141,8 +119335,8 @@ var file_otg_proto_rawDesc = []byte{ 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x88, 0x01, 0x01, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x73, 0x74, 0x65, 0x70, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x92, 0x01, 0x0a, 0x1e, 0x50, 0x61, 0x74, 0x74, - 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x55, 0x64, 0x70, 0x53, 0x72, 0x63, 0x50, 0x6f, 0x72, - 0x74, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x12, 0x17, 0x0a, 0x04, 0x6e, 0x61, + 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x47, 0x72, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, + 0x6e, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x12, 0x17, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x88, 0x01, 0x01, @@ -104150,27 +119344,429 @@ var file_otg_proto_rawDesc = []byte{ 0x48, 0x02, 0x52, 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x88, 0x01, 0x01, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x22, 0xc4, 0x03, 0x0a, - 0x15, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x55, 0x64, 0x70, 0x53, - 0x72, 0x63, 0x50, 0x6f, 0x72, 0x74, 0x12, 0x43, 0x0a, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, + 0x15, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x47, 0x72, 0x65, 0x56, + 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x43, 0x0a, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x26, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, - 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x55, 0x64, 0x70, 0x53, 0x72, 0x63, 0x50, 0x6f, - 0x72, 0x74, 0x2e, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x48, 0x00, + 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x47, 0x72, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, + 0x6f, 0x6e, 0x2e, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x48, 0x00, 0x52, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x88, 0x01, 0x01, 0x12, 0x16, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0d, 0x52, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x12, 0x3f, 0x0a, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, - 0x6c, 0x6f, 0x77, 0x55, 0x64, 0x70, 0x53, 0x72, 0x63, 0x50, 0x6f, 0x72, 0x74, 0x43, 0x6f, 0x75, + 0x6c, 0x6f, 0x77, 0x47, 0x72, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x3f, 0x0a, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, - 0x46, 0x6c, 0x6f, 0x77, 0x55, 0x64, 0x70, 0x53, 0x72, 0x63, 0x50, 0x6f, 0x72, 0x74, 0x43, 0x6f, + 0x46, 0x6c, 0x6f, 0x77, 0x47, 0x72, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x44, 0x0a, 0x0b, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x5f, 0x74, 0x61, 0x67, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, - 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x55, 0x64, 0x70, 0x53, 0x72, 0x63, 0x50, 0x6f, 0x72, - 0x74, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x52, 0x0a, 0x6d, 0x65, 0x74, 0x72, + 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x47, 0x72, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, + 0x6e, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x52, 0x0a, 0x6d, 0x65, 0x74, 0x72, + 0x69, 0x63, 0x54, 0x61, 0x67, 0x73, 0x1a, 0x56, 0x0a, 0x06, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, + 0x22, 0x4c, 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x0a, 0x0b, 0x75, 0x6e, 0x73, 0x70, + 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, 0x76, 0x61, 0x6c, + 0x75, 0x65, 0x10, 0x02, 0x12, 0x0a, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x10, 0x03, + 0x12, 0x0d, 0x0a, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x10, 0x04, 0x12, + 0x0d, 0x0a, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x10, 0x05, 0x42, 0x09, + 0x0a, 0x07, 0x5f, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x76, 0x61, + 0x6c, 0x75, 0x65, 0x22, 0x8b, 0x01, 0x0a, 0x1d, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, + 0x6c, 0x6f, 0x77, 0x47, 0x72, 0x65, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x43, 0x6f, + 0x75, 0x6e, 0x74, 0x65, 0x72, 0x12, 0x19, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x0d, 0x48, 0x00, 0x52, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x88, 0x01, 0x01, + 0x12, 0x17, 0x0a, 0x04, 0x73, 0x74, 0x65, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, + 0x52, 0x04, 0x73, 0x74, 0x65, 0x70, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x63, 0x6f, 0x75, + 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x02, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, + 0x74, 0x88, 0x01, 0x01, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x42, 0x07, + 0x0a, 0x05, 0x5f, 0x73, 0x74, 0x65, 0x70, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x63, 0x6f, 0x75, 0x6e, + 0x74, 0x22, 0x93, 0x01, 0x0a, 0x1f, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, + 0x77, 0x47, 0x72, 0x65, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x4d, 0x65, 0x74, 0x72, + 0x69, 0x63, 0x54, 0x61, 0x67, 0x12, 0x17, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, 0x1b, + 0x0a, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, + 0x52, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x6c, + 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x02, 0x52, 0x06, 0x6c, + 0x65, 0x6e, 0x67, 0x74, 0x68, 0x88, 0x01, 0x01, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x6e, 0x61, 0x6d, + 0x65, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x42, 0x09, 0x0a, 0x07, + 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x22, 0xc9, 0x03, 0x0a, 0x16, 0x50, 0x61, 0x74, 0x74, + 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x47, 0x72, 0x65, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, + 0x6f, 0x6c, 0x12, 0x44, 0x0a, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x0e, 0x32, 0x27, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, + 0x46, 0x6c, 0x6f, 0x77, 0x47, 0x72, 0x65, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e, + 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x48, 0x00, 0x52, 0x06, 0x63, + 0x68, 0x6f, 0x69, 0x63, 0x65, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, + 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, + 0x88, 0x01, 0x01, 0x12, 0x16, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x03, 0x20, + 0x03, 0x28, 0x0d, 0x52, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x12, 0x40, 0x0a, 0x09, 0x69, + 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, + 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, + 0x47, 0x72, 0x65, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x43, 0x6f, 0x75, 0x6e, 0x74, + 0x65, 0x72, 0x52, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x40, 0x0a, + 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x22, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, + 0x6f, 0x77, 0x47, 0x72, 0x65, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x43, 0x6f, 0x75, + 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, + 0x45, 0x0a, 0x0b, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x5f, 0x74, 0x61, 0x67, 0x73, 0x18, 0x07, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, + 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x47, 0x72, 0x65, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, + 0x6c, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x52, 0x0a, 0x6d, 0x65, 0x74, 0x72, + 0x69, 0x63, 0x54, 0x61, 0x67, 0x73, 0x1a, 0x56, 0x0a, 0x06, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, + 0x22, 0x4c, 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x0a, 0x0b, 0x75, 0x6e, 0x73, 0x70, + 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, 0x76, 0x61, 0x6c, + 0x75, 0x65, 0x10, 0x02, 0x12, 0x0a, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x10, 0x03, + 0x12, 0x0d, 0x0a, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x10, 0x04, 0x12, + 0x0d, 0x0a, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x10, 0x05, 0x42, 0x09, + 0x0a, 0x07, 0x5f, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x76, 0x61, + 0x6c, 0x75, 0x65, 0x22, 0xe5, 0x02, 0x0a, 0x16, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, + 0x6c, 0x6f, 0x77, 0x47, 0x72, 0x65, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x12, 0x44, + 0x0a, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x27, + 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, + 0x47, 0x72, 0x65, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x2e, 0x43, 0x68, 0x6f, 0x69, + 0x63, 0x65, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x48, 0x00, 0x52, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, + 0x65, 0x88, 0x01, 0x01, 0x12, 0x4d, 0x0a, 0x09, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, + 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2a, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, + 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x47, 0x72, 0x65, 0x43, 0x68, 0x65, 0x63, + 0x6b, 0x73, 0x75, 0x6d, 0x2e, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x2e, 0x45, + 0x6e, 0x75, 0x6d, 0x48, 0x01, 0x52, 0x09, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, + 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x0d, 0x48, 0x02, 0x52, 0x06, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x88, 0x01, 0x01, + 0x1a, 0x3c, 0x0a, 0x06, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x22, 0x32, 0x0a, 0x04, 0x45, 0x6e, + 0x75, 0x6d, 0x12, 0x0f, 0x0a, 0x0b, 0x75, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, + 0x64, 0x10, 0x00, 0x12, 0x0d, 0x0a, 0x09, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, + 0x10, 0x01, 0x12, 0x0a, 0x0a, 0x06, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x10, 0x02, 0x1a, 0x37, + 0x0a, 0x09, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x22, 0x2a, 0x0a, 0x04, 0x45, + 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x0a, 0x0b, 0x75, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, + 0x65, 0x64, 0x10, 0x00, 0x12, 0x08, 0x0a, 0x04, 0x67, 0x6f, 0x6f, 0x64, 0x10, 0x01, 0x12, 0x07, + 0x0a, 0x03, 0x62, 0x61, 0x64, 0x10, 0x02, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x63, 0x68, 0x6f, 0x69, + 0x63, 0x65, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, + 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x22, 0x8c, 0x01, 0x0a, 0x1e, + 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x47, 0x72, 0x65, 0x52, 0x65, + 0x73, 0x65, 0x72, 0x76, 0x65, 0x64, 0x31, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x12, 0x19, + 0x0a, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x00, 0x52, + 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x88, 0x01, 0x01, 0x12, 0x17, 0x0a, 0x04, 0x73, 0x74, 0x65, + 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x04, 0x73, 0x74, 0x65, 0x70, 0x88, + 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x0d, 0x48, 0x02, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x88, 0x01, 0x01, 0x42, 0x08, 0x0a, + 0x06, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x73, 0x74, 0x65, 0x70, + 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x94, 0x01, 0x0a, 0x20, 0x50, + 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x47, 0x72, 0x65, 0x52, 0x65, 0x73, + 0x65, 0x72, 0x76, 0x65, 0x64, 0x31, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x12, + 0x17, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, + 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x6f, 0x66, 0x66, 0x73, + 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x06, 0x6f, 0x66, 0x66, 0x73, + 0x65, 0x74, 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x02, 0x52, 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x88, + 0x01, 0x01, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x42, 0x09, 0x0a, 0x07, 0x5f, + 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, + 0x68, 0x22, 0xce, 0x03, 0x0a, 0x17, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, + 0x77, 0x47, 0x72, 0x65, 0x52, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x64, 0x31, 0x12, 0x45, 0x0a, + 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x28, 0x2e, + 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x47, + 0x72, 0x65, 0x52, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x64, 0x31, 0x2e, 0x43, 0x68, 0x6f, 0x69, + 0x63, 0x65, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x48, 0x00, 0x52, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, + 0x65, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x88, 0x01, 0x01, 0x12, + 0x16, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0d, 0x52, + 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x12, 0x41, 0x0a, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, + 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x6f, 0x74, 0x67, + 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x47, 0x72, 0x65, 0x52, + 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x64, 0x31, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, + 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x41, 0x0a, 0x09, 0x64, 0x65, + 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, + 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x47, + 0x72, 0x65, 0x52, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x64, 0x31, 0x43, 0x6f, 0x75, 0x6e, 0x74, + 0x65, 0x72, 0x52, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x46, 0x0a, + 0x0b, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x5f, 0x74, 0x61, 0x67, 0x73, 0x18, 0x07, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, + 0x46, 0x6c, 0x6f, 0x77, 0x47, 0x72, 0x65, 0x52, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x64, 0x31, + 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x52, 0x0a, 0x6d, 0x65, 0x74, 0x72, 0x69, + 0x63, 0x54, 0x61, 0x67, 0x73, 0x1a, 0x56, 0x0a, 0x06, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x22, + 0x4c, 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x0a, 0x0b, 0x75, 0x6e, 0x73, 0x70, 0x65, + 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, + 0x65, 0x10, 0x02, 0x12, 0x0a, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x10, 0x03, 0x12, + 0x0d, 0x0a, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x10, 0x04, 0x12, 0x0d, + 0x0a, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x10, 0x05, 0x42, 0x09, 0x0a, + 0x07, 0x5f, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x76, 0x61, 0x6c, + 0x75, 0x65, 0x22, 0x8c, 0x01, 0x0a, 0x1e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, + 0x6f, 0x77, 0x47, 0x74, 0x70, 0x76, 0x31, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x43, 0x6f, + 0x75, 0x6e, 0x74, 0x65, 0x72, 0x12, 0x19, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x0d, 0x48, 0x00, 0x52, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x88, 0x01, 0x01, + 0x12, 0x17, 0x0a, 0x04, 0x73, 0x74, 0x65, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, + 0x52, 0x04, 0x73, 0x74, 0x65, 0x70, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x63, 0x6f, 0x75, + 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x02, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, + 0x74, 0x88, 0x01, 0x01, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x42, 0x07, + 0x0a, 0x05, 0x5f, 0x73, 0x74, 0x65, 0x70, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x63, 0x6f, 0x75, 0x6e, + 0x74, 0x22, 0x94, 0x01, 0x0a, 0x20, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, + 0x77, 0x47, 0x74, 0x70, 0x76, 0x31, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x74, + 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x12, 0x17, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, + 0x1b, 0x0a, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, + 0x01, 0x52, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, + 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x02, 0x52, 0x06, + 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x88, 0x01, 0x01, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x6e, 0x61, + 0x6d, 0x65, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x42, 0x09, 0x0a, + 0x07, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x22, 0xce, 0x03, 0x0a, 0x17, 0x50, 0x61, 0x74, + 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x47, 0x74, 0x70, 0x76, 0x31, 0x56, 0x65, 0x72, + 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x45, 0x0a, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x0e, 0x32, 0x28, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, + 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x47, 0x74, 0x70, 0x76, 0x31, 0x56, 0x65, 0x72, 0x73, 0x69, + 0x6f, 0x6e, 0x2e, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x48, 0x00, + 0x52, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x76, + 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x05, 0x76, 0x61, + 0x6c, 0x75, 0x65, 0x88, 0x01, 0x01, 0x12, 0x16, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, + 0x18, 0x03, 0x20, 0x03, 0x28, 0x0d, 0x52, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x12, 0x41, + 0x0a, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x23, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, + 0x6c, 0x6f, 0x77, 0x47, 0x74, 0x70, 0x76, 0x31, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x43, + 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, + 0x74, 0x12, 0x41, 0x0a, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x06, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, + 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x47, 0x74, 0x70, 0x76, 0x31, 0x56, 0x65, 0x72, 0x73, 0x69, + 0x6f, 0x6e, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, + 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x46, 0x0a, 0x0b, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x5f, 0x74, + 0x61, 0x67, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x6f, 0x74, 0x67, 0x2e, + 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x47, 0x74, 0x70, 0x76, 0x31, + 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, + 0x52, 0x0a, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x73, 0x1a, 0x56, 0x0a, 0x06, + 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x22, 0x4c, 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0f, + 0x0a, 0x0b, 0x75, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x10, 0x00, 0x12, + 0x09, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x10, 0x02, 0x12, 0x0a, 0x0a, 0x06, 0x76, 0x61, + 0x6c, 0x75, 0x65, 0x73, 0x10, 0x03, 0x12, 0x0d, 0x0a, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, + 0x65, 0x6e, 0x74, 0x10, 0x04, 0x12, 0x0d, 0x0a, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, + 0x6e, 0x74, 0x10, 0x05, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x42, + 0x08, 0x0a, 0x06, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x91, 0x01, 0x0a, 0x23, 0x50, 0x61, + 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x47, 0x74, 0x70, 0x76, 0x31, 0x50, 0x72, + 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, + 0x72, 0x12, 0x19, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, + 0x48, 0x00, 0x52, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x88, 0x01, 0x01, 0x12, 0x17, 0x0a, 0x04, + 0x73, 0x74, 0x65, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x04, 0x73, 0x74, + 0x65, 0x70, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x0d, 0x48, 0x02, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x88, 0x01, 0x01, + 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x73, + 0x74, 0x65, 0x70, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x99, 0x01, + 0x0a, 0x25, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x47, 0x74, 0x70, + 0x76, 0x31, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x4d, 0x65, + 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x12, 0x17, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x88, 0x01, 0x01, + 0x12, 0x1b, 0x0a, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, + 0x48, 0x01, 0x52, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, + 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x02, 0x52, + 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x88, 0x01, 0x01, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x6e, + 0x61, 0x6d, 0x65, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x42, 0x09, + 0x0a, 0x07, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x22, 0xe7, 0x03, 0x0a, 0x1c, 0x50, 0x61, + 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x47, 0x74, 0x70, 0x76, 0x31, 0x50, 0x72, + 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x12, 0x4a, 0x0a, 0x06, 0x63, 0x68, + 0x6f, 0x69, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2d, 0x2e, 0x6f, 0x74, 0x67, + 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x47, 0x74, 0x70, 0x76, + 0x31, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x2e, 0x43, 0x68, + 0x6f, 0x69, 0x63, 0x65, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x48, 0x00, 0x52, 0x06, 0x63, 0x68, 0x6f, + 0x69, 0x63, 0x65, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x88, 0x01, + 0x01, 0x12, 0x16, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, + 0x0d, 0x52, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x12, 0x46, 0x0a, 0x09, 0x69, 0x6e, 0x63, + 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x6f, + 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x47, 0x74, + 0x70, 0x76, 0x31, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x43, + 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, + 0x74, 0x12, 0x46, 0x0a, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x06, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, + 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x47, 0x74, 0x70, 0x76, 0x31, 0x50, 0x72, 0x6f, 0x74, 0x6f, + 0x63, 0x6f, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, + 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x4b, 0x0a, 0x0b, 0x6d, 0x65, 0x74, + 0x72, 0x69, 0x63, 0x5f, 0x74, 0x61, 0x67, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2a, + 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, + 0x47, 0x74, 0x70, 0x76, 0x31, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x54, 0x79, 0x70, + 0x65, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x52, 0x0a, 0x6d, 0x65, 0x74, 0x72, + 0x69, 0x63, 0x54, 0x61, 0x67, 0x73, 0x1a, 0x56, 0x0a, 0x06, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, + 0x22, 0x4c, 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x0a, 0x0b, 0x75, 0x6e, 0x73, 0x70, + 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, 0x76, 0x61, 0x6c, + 0x75, 0x65, 0x10, 0x02, 0x12, 0x0a, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x10, 0x03, + 0x12, 0x0d, 0x0a, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x10, 0x04, 0x12, + 0x0d, 0x0a, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x10, 0x05, 0x42, 0x09, + 0x0a, 0x07, 0x5f, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x76, 0x61, + 0x6c, 0x75, 0x65, 0x22, 0x8d, 0x01, 0x0a, 0x1f, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, + 0x6c, 0x6f, 0x77, 0x47, 0x74, 0x70, 0x76, 0x31, 0x52, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x64, + 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x12, 0x19, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x00, 0x52, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x88, + 0x01, 0x01, 0x12, 0x17, 0x0a, 0x04, 0x73, 0x74, 0x65, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, + 0x48, 0x01, 0x52, 0x04, 0x73, 0x74, 0x65, 0x70, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x63, + 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x02, 0x52, 0x05, 0x63, 0x6f, + 0x75, 0x6e, 0x74, 0x88, 0x01, 0x01, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, + 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x73, 0x74, 0x65, 0x70, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x63, 0x6f, + 0x75, 0x6e, 0x74, 0x22, 0x95, 0x01, 0x0a, 0x21, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, + 0x6c, 0x6f, 0x77, 0x47, 0x74, 0x70, 0x76, 0x31, 0x52, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x64, + 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x12, 0x17, 0x0a, 0x04, 0x6e, 0x61, 0x6d, + 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x88, + 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x0d, 0x48, 0x01, 0x52, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x88, 0x01, 0x01, 0x12, + 0x1b, 0x0a, 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x48, + 0x02, 0x52, 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x88, 0x01, 0x01, 0x42, 0x07, 0x0a, 0x05, + 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, + 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x22, 0xd3, 0x03, 0x0a, 0x18, + 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x47, 0x74, 0x70, 0x76, 0x31, + 0x52, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x64, 0x12, 0x46, 0x0a, 0x06, 0x63, 0x68, 0x6f, 0x69, + 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x29, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, + 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x47, 0x74, 0x70, 0x76, 0x31, 0x52, + 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x64, 0x2e, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x2e, 0x45, + 0x6e, 0x75, 0x6d, 0x48, 0x00, 0x52, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x88, 0x01, 0x01, + 0x12, 0x19, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, + 0x01, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x88, 0x01, 0x01, 0x12, 0x16, 0x0a, 0x06, 0x76, + 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0d, 0x52, 0x06, 0x76, 0x61, 0x6c, + 0x75, 0x65, 0x73, 0x12, 0x42, 0x0a, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, + 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, + 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x47, 0x74, 0x70, 0x76, 0x31, 0x52, 0x65, 0x73, + 0x65, 0x72, 0x76, 0x65, 0x64, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, 0x69, 0x6e, + 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x42, 0x0a, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, + 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x6f, 0x74, 0x67, + 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x47, 0x74, 0x70, 0x76, + 0x31, 0x52, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x64, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, + 0x52, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x47, 0x0a, 0x0b, 0x6d, + 0x65, 0x74, 0x72, 0x69, 0x63, 0x5f, 0x74, 0x61, 0x67, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x26, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, + 0x6f, 0x77, 0x47, 0x74, 0x70, 0x76, 0x31, 0x52, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x64, 0x4d, + 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x52, 0x0a, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, + 0x54, 0x61, 0x67, 0x73, 0x1a, 0x56, 0x0a, 0x06, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x22, 0x4c, + 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x0a, 0x0b, 0x75, 0x6e, 0x73, 0x70, 0x65, 0x63, + 0x69, 0x66, 0x69, 0x65, 0x64, 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, + 0x10, 0x02, 0x12, 0x0a, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x10, 0x03, 0x12, 0x0d, + 0x0a, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x10, 0x04, 0x12, 0x0d, 0x0a, + 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x10, 0x05, 0x42, 0x09, 0x0a, 0x07, + 0x5f, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x76, 0x61, 0x6c, 0x75, + 0x65, 0x22, 0x8a, 0x01, 0x0a, 0x1c, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, + 0x77, 0x47, 0x74, 0x70, 0x76, 0x31, 0x45, 0x46, 0x6c, 0x61, 0x67, 0x43, 0x6f, 0x75, 0x6e, 0x74, + 0x65, 0x72, 0x12, 0x19, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x0d, 0x48, 0x00, 0x52, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x88, 0x01, 0x01, 0x12, 0x17, 0x0a, + 0x04, 0x73, 0x74, 0x65, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x04, 0x73, + 0x74, 0x65, 0x70, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x02, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x88, 0x01, + 0x01, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x42, 0x07, 0x0a, 0x05, 0x5f, + 0x73, 0x74, 0x65, 0x70, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x92, + 0x01, 0x0a, 0x1e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x47, 0x74, + 0x70, 0x76, 0x31, 0x45, 0x46, 0x6c, 0x61, 0x67, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, + 0x67, 0x12, 0x17, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, + 0x00, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x6f, 0x66, + 0x66, 0x73, 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x06, 0x6f, 0x66, + 0x66, 0x73, 0x65, 0x74, 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, + 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x02, 0x52, 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, + 0x68, 0x88, 0x01, 0x01, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x42, 0x09, 0x0a, + 0x07, 0x5f, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6c, 0x65, 0x6e, + 0x67, 0x74, 0x68, 0x22, 0xc4, 0x03, 0x0a, 0x15, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, + 0x6c, 0x6f, 0x77, 0x47, 0x74, 0x70, 0x76, 0x31, 0x45, 0x46, 0x6c, 0x61, 0x67, 0x12, 0x43, 0x0a, + 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x26, 0x2e, + 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x47, + 0x74, 0x70, 0x76, 0x31, 0x45, 0x46, 0x6c, 0x61, 0x67, 0x2e, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, + 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x48, 0x00, 0x52, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x88, + 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x0d, 0x48, 0x01, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x88, 0x01, 0x01, 0x12, 0x16, 0x0a, + 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0d, 0x52, 0x06, 0x76, + 0x61, 0x6c, 0x75, 0x65, 0x73, 0x12, 0x3f, 0x0a, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, + 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, + 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x47, 0x74, 0x70, 0x76, 0x31, 0x45, + 0x46, 0x6c, 0x61, 0x67, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, 0x69, 0x6e, 0x63, + 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x3f, 0x0a, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, + 0x65, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x6f, 0x74, 0x67, 0x2e, + 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x47, 0x74, 0x70, 0x76, 0x31, + 0x45, 0x46, 0x6c, 0x61, 0x67, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, 0x64, 0x65, + 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x44, 0x0a, 0x0b, 0x6d, 0x65, 0x74, 0x72, 0x69, + 0x63, 0x5f, 0x74, 0x61, 0x67, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x6f, + 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x47, 0x74, + 0x70, 0x76, 0x31, 0x45, 0x46, 0x6c, 0x61, 0x67, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, + 0x67, 0x52, 0x0a, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x73, 0x1a, 0x56, 0x0a, + 0x06, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x22, 0x4c, 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, + 0x0f, 0x0a, 0x0b, 0x75, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x10, 0x00, + 0x12, 0x09, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x10, 0x02, 0x12, 0x0a, 0x0a, 0x06, 0x76, + 0x61, 0x6c, 0x75, 0x65, 0x73, 0x10, 0x03, 0x12, 0x0d, 0x0a, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, + 0x6d, 0x65, 0x6e, 0x74, 0x10, 0x04, 0x12, 0x0d, 0x0a, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, + 0x65, 0x6e, 0x74, 0x10, 0x05, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, + 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x8a, 0x01, 0x0a, 0x1c, 0x50, + 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x47, 0x74, 0x70, 0x76, 0x31, 0x53, + 0x46, 0x6c, 0x61, 0x67, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x12, 0x19, 0x0a, 0x05, 0x73, + 0x74, 0x61, 0x72, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x00, 0x52, 0x05, 0x73, 0x74, + 0x61, 0x72, 0x74, 0x88, 0x01, 0x01, 0x12, 0x17, 0x0a, 0x04, 0x73, 0x74, 0x65, 0x70, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x04, 0x73, 0x74, 0x65, 0x70, 0x88, 0x01, 0x01, 0x12, + 0x19, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x02, + 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x88, 0x01, 0x01, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x73, + 0x74, 0x61, 0x72, 0x74, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x73, 0x74, 0x65, 0x70, 0x42, 0x08, 0x0a, + 0x06, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x92, 0x01, 0x0a, 0x1e, 0x50, 0x61, 0x74, 0x74, + 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x47, 0x74, 0x70, 0x76, 0x31, 0x53, 0x46, 0x6c, 0x61, + 0x67, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x12, 0x17, 0x0a, 0x04, 0x6e, 0x61, + 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, + 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x88, 0x01, 0x01, + 0x12, 0x1b, 0x0a, 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, + 0x48, 0x02, 0x52, 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x88, 0x01, 0x01, 0x42, 0x07, 0x0a, + 0x05, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6f, 0x66, 0x66, 0x73, 0x65, + 0x74, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x22, 0xc4, 0x03, 0x0a, + 0x15, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x47, 0x74, 0x70, 0x76, + 0x31, 0x53, 0x46, 0x6c, 0x61, 0x67, 0x12, 0x43, 0x0a, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x26, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, + 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x47, 0x74, 0x70, 0x76, 0x31, 0x53, 0x46, 0x6c, + 0x61, 0x67, 0x2e, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x48, 0x00, + 0x52, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x76, + 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x05, 0x76, 0x61, + 0x6c, 0x75, 0x65, 0x88, 0x01, 0x01, 0x12, 0x16, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, + 0x18, 0x03, 0x20, 0x03, 0x28, 0x0d, 0x52, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x12, 0x3f, + 0x0a, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x21, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, + 0x6c, 0x6f, 0x77, 0x47, 0x74, 0x70, 0x76, 0x31, 0x53, 0x46, 0x6c, 0x61, 0x67, 0x43, 0x6f, 0x75, + 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, + 0x3f, 0x0a, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, + 0x46, 0x6c, 0x6f, 0x77, 0x47, 0x74, 0x70, 0x76, 0x31, 0x53, 0x46, 0x6c, 0x61, 0x67, 0x43, 0x6f, + 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, + 0x12, 0x44, 0x0a, 0x0b, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x5f, 0x74, 0x61, 0x67, 0x73, 0x18, + 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, + 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x47, 0x74, 0x70, 0x76, 0x31, 0x53, 0x46, 0x6c, 0x61, + 0x67, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x52, 0x0a, 0x6d, 0x65, 0x74, 0x72, + 0x69, 0x63, 0x54, 0x61, 0x67, 0x73, 0x1a, 0x56, 0x0a, 0x06, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, + 0x22, 0x4c, 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x0a, 0x0b, 0x75, 0x6e, 0x73, 0x70, + 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, 0x76, 0x61, 0x6c, + 0x75, 0x65, 0x10, 0x02, 0x12, 0x0a, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x10, 0x03, + 0x12, 0x0d, 0x0a, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x10, 0x04, 0x12, + 0x0d, 0x0a, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x10, 0x05, 0x42, 0x09, + 0x0a, 0x07, 0x5f, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x76, 0x61, + 0x6c, 0x75, 0x65, 0x22, 0x8b, 0x01, 0x0a, 0x1d, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, + 0x6c, 0x6f, 0x77, 0x47, 0x74, 0x70, 0x76, 0x31, 0x50, 0x6e, 0x46, 0x6c, 0x61, 0x67, 0x43, 0x6f, + 0x75, 0x6e, 0x74, 0x65, 0x72, 0x12, 0x19, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x0d, 0x48, 0x00, 0x52, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x88, 0x01, 0x01, + 0x12, 0x17, 0x0a, 0x04, 0x73, 0x74, 0x65, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, + 0x52, 0x04, 0x73, 0x74, 0x65, 0x70, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x63, 0x6f, 0x75, + 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x02, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, + 0x74, 0x88, 0x01, 0x01, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x42, 0x07, + 0x0a, 0x05, 0x5f, 0x73, 0x74, 0x65, 0x70, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x63, 0x6f, 0x75, 0x6e, + 0x74, 0x22, 0x93, 0x01, 0x0a, 0x1f, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, + 0x77, 0x47, 0x74, 0x70, 0x76, 0x31, 0x50, 0x6e, 0x46, 0x6c, 0x61, 0x67, 0x4d, 0x65, 0x74, 0x72, + 0x69, 0x63, 0x54, 0x61, 0x67, 0x12, 0x17, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, 0x1b, + 0x0a, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, + 0x52, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x6c, + 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x02, 0x52, 0x06, 0x6c, + 0x65, 0x6e, 0x67, 0x74, 0x68, 0x88, 0x01, 0x01, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x6e, 0x61, 0x6d, + 0x65, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x42, 0x09, 0x0a, 0x07, + 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x22, 0xc9, 0x03, 0x0a, 0x16, 0x50, 0x61, 0x74, 0x74, + 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x47, 0x74, 0x70, 0x76, 0x31, 0x50, 0x6e, 0x46, 0x6c, + 0x61, 0x67, 0x12, 0x44, 0x0a, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x0e, 0x32, 0x27, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, + 0x46, 0x6c, 0x6f, 0x77, 0x47, 0x74, 0x70, 0x76, 0x31, 0x50, 0x6e, 0x46, 0x6c, 0x61, 0x67, 0x2e, + 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x48, 0x00, 0x52, 0x06, 0x63, + 0x68, 0x6f, 0x69, 0x63, 0x65, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, + 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, + 0x88, 0x01, 0x01, 0x12, 0x16, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x03, 0x20, + 0x03, 0x28, 0x0d, 0x52, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x12, 0x40, 0x0a, 0x09, 0x69, + 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, + 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, + 0x47, 0x74, 0x70, 0x76, 0x31, 0x50, 0x6e, 0x46, 0x6c, 0x61, 0x67, 0x43, 0x6f, 0x75, 0x6e, 0x74, + 0x65, 0x72, 0x52, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x40, 0x0a, + 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x22, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, + 0x6f, 0x77, 0x47, 0x74, 0x70, 0x76, 0x31, 0x50, 0x6e, 0x46, 0x6c, 0x61, 0x67, 0x43, 0x6f, 0x75, + 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, + 0x45, 0x0a, 0x0b, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x5f, 0x74, 0x61, 0x67, 0x73, 0x18, 0x07, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, + 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x47, 0x74, 0x70, 0x76, 0x31, 0x50, 0x6e, 0x46, 0x6c, 0x61, + 0x67, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x52, 0x0a, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x73, 0x1a, 0x56, 0x0a, 0x06, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x22, 0x4c, 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x0a, 0x0b, 0x75, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, 0x76, 0x61, 0x6c, @@ -104178,124 +119774,58 @@ var file_otg_proto_rawDesc = []byte{ 0x12, 0x0d, 0x0a, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x10, 0x04, 0x12, 0x0d, 0x0a, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x10, 0x05, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x76, 0x61, - 0x6c, 0x75, 0x65, 0x22, 0x8a, 0x01, 0x0a, 0x1c, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, - 0x6c, 0x6f, 0x77, 0x55, 0x64, 0x70, 0x44, 0x73, 0x74, 0x50, 0x6f, 0x72, 0x74, 0x43, 0x6f, 0x75, - 0x6e, 0x74, 0x65, 0x72, 0x12, 0x19, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x0d, 0x48, 0x00, 0x52, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x88, 0x01, 0x01, 0x12, - 0x17, 0x0a, 0x04, 0x73, 0x74, 0x65, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, - 0x04, 0x73, 0x74, 0x65, 0x70, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, - 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x02, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, - 0x88, 0x01, 0x01, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x42, 0x07, 0x0a, - 0x05, 0x5f, 0x73, 0x74, 0x65, 0x70, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, - 0x22, 0x92, 0x01, 0x0a, 0x1e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, - 0x55, 0x64, 0x70, 0x44, 0x73, 0x74, 0x50, 0x6f, 0x72, 0x74, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, - 0x54, 0x61, 0x67, 0x12, 0x17, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x48, 0x00, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, - 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x06, - 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x6c, 0x65, 0x6e, - 0x67, 0x74, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x02, 0x52, 0x06, 0x6c, 0x65, 0x6e, - 0x67, 0x74, 0x68, 0x88, 0x01, 0x01, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x42, - 0x09, 0x0a, 0x07, 0x5f, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6c, - 0x65, 0x6e, 0x67, 0x74, 0x68, 0x22, 0xc4, 0x03, 0x0a, 0x15, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, - 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x55, 0x64, 0x70, 0x44, 0x73, 0x74, 0x50, 0x6f, 0x72, 0x74, 0x12, - 0x43, 0x0a, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, - 0x26, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, - 0x77, 0x55, 0x64, 0x70, 0x44, 0x73, 0x74, 0x50, 0x6f, 0x72, 0x74, 0x2e, 0x43, 0x68, 0x6f, 0x69, - 0x63, 0x65, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x48, 0x00, 0x52, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, - 0x65, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x88, 0x01, 0x01, 0x12, - 0x16, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0d, 0x52, - 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x12, 0x3f, 0x0a, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, - 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x6f, 0x74, 0x67, - 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x55, 0x64, 0x70, 0x44, - 0x73, 0x74, 0x50, 0x6f, 0x72, 0x74, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, 0x69, - 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x3f, 0x0a, 0x09, 0x64, 0x65, 0x63, 0x72, - 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x6f, 0x74, - 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x55, 0x64, 0x70, - 0x44, 0x73, 0x74, 0x50, 0x6f, 0x72, 0x74, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, - 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x44, 0x0a, 0x0b, 0x6d, 0x65, 0x74, - 0x72, 0x69, 0x63, 0x5f, 0x74, 0x61, 0x67, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x23, - 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, - 0x55, 0x64, 0x70, 0x44, 0x73, 0x74, 0x50, 0x6f, 0x72, 0x74, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, - 0x54, 0x61, 0x67, 0x52, 0x0a, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x73, 0x1a, - 0x56, 0x0a, 0x06, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x22, 0x4c, 0x0a, 0x04, 0x45, 0x6e, 0x75, - 0x6d, 0x12, 0x0f, 0x0a, 0x0b, 0x75, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, - 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x10, 0x02, 0x12, 0x0a, 0x0a, - 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x10, 0x03, 0x12, 0x0d, 0x0a, 0x09, 0x69, 0x6e, 0x63, - 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x10, 0x04, 0x12, 0x0d, 0x0a, 0x09, 0x64, 0x65, 0x63, 0x72, - 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x10, 0x05, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x63, 0x68, 0x6f, 0x69, - 0x63, 0x65, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x89, 0x01, 0x0a, - 0x1b, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x55, 0x64, 0x70, 0x4c, - 0x65, 0x6e, 0x67, 0x74, 0x68, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x12, 0x19, 0x0a, 0x05, - 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x00, 0x52, 0x05, 0x73, - 0x74, 0x61, 0x72, 0x74, 0x88, 0x01, 0x01, 0x12, 0x17, 0x0a, 0x04, 0x73, 0x74, 0x65, 0x70, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x04, 0x73, 0x74, 0x65, 0x70, 0x88, 0x01, 0x01, - 0x12, 0x19, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x48, - 0x02, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x88, 0x01, 0x01, 0x42, 0x08, 0x0a, 0x06, 0x5f, - 0x73, 0x74, 0x61, 0x72, 0x74, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x73, 0x74, 0x65, 0x70, 0x42, 0x08, - 0x0a, 0x06, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x91, 0x01, 0x0a, 0x1d, 0x50, 0x61, 0x74, - 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x55, 0x64, 0x70, 0x4c, 0x65, 0x6e, 0x67, 0x74, - 0x68, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x12, 0x17, 0x0a, 0x04, 0x6e, 0x61, - 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, - 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x88, 0x01, 0x01, - 0x12, 0x1b, 0x0a, 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, - 0x48, 0x02, 0x52, 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x88, 0x01, 0x01, 0x42, 0x07, 0x0a, - 0x05, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6f, 0x66, 0x66, 0x73, 0x65, - 0x74, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x22, 0xbf, 0x03, 0x0a, - 0x14, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x55, 0x64, 0x70, 0x4c, - 0x65, 0x6e, 0x67, 0x74, 0x68, 0x12, 0x42, 0x0a, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x25, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, - 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x55, 0x64, 0x70, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, - 0x2e, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x48, 0x00, 0x52, 0x06, - 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x76, 0x61, 0x6c, - 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, - 0x65, 0x88, 0x01, 0x01, 0x12, 0x16, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x03, - 0x20, 0x03, 0x28, 0x0d, 0x52, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x12, 0x3e, 0x0a, 0x09, - 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x20, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, - 0x77, 0x55, 0x64, 0x70, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, - 0x72, 0x52, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x3e, 0x0a, 0x09, - 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x20, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, - 0x77, 0x55, 0x64, 0x70, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, - 0x72, 0x52, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x43, 0x0a, 0x0b, - 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x5f, 0x74, 0x61, 0x67, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, - 0x0b, 0x32, 0x22, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, - 0x6c, 0x6f, 0x77, 0x55, 0x64, 0x70, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x4d, 0x65, 0x74, 0x72, - 0x69, 0x63, 0x54, 0x61, 0x67, 0x52, 0x0a, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, - 0x73, 0x1a, 0x56, 0x0a, 0x06, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x22, 0x4c, 0x0a, 0x04, 0x45, - 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x0a, 0x0b, 0x75, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, - 0x65, 0x64, 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x10, 0x02, 0x12, - 0x0a, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x10, 0x03, 0x12, 0x0d, 0x0a, 0x09, 0x69, - 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x10, 0x04, 0x12, 0x0d, 0x0a, 0x09, 0x64, 0x65, - 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x10, 0x05, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x63, 0x68, - 0x6f, 0x69, 0x63, 0x65, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0xe5, - 0x02, 0x0a, 0x16, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x55, 0x64, - 0x70, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x12, 0x44, 0x0a, 0x06, 0x63, 0x68, 0x6f, - 0x69, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x27, 0x2e, 0x6f, 0x74, 0x67, 0x2e, - 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x55, 0x64, 0x70, 0x43, 0x68, - 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x2e, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x2e, 0x45, 0x6e, - 0x75, 0x6d, 0x48, 0x00, 0x52, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x88, 0x01, 0x01, 0x12, - 0x4d, 0x0a, 0x09, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x0e, 0x32, 0x2a, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, - 0x46, 0x6c, 0x6f, 0x77, 0x55, 0x64, 0x70, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x2e, - 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x48, 0x01, - 0x52, 0x09, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x88, 0x01, 0x01, 0x12, 0x1b, - 0x0a, 0x06, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x02, - 0x52, 0x06, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x88, 0x01, 0x01, 0x1a, 0x3c, 0x0a, 0x06, 0x43, - 0x68, 0x6f, 0x69, 0x63, 0x65, 0x22, 0x32, 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x0a, - 0x0b, 0x75, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x10, 0x00, 0x12, 0x0d, - 0x0a, 0x09, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x10, 0x01, 0x12, 0x0a, 0x0a, - 0x06, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x10, 0x02, 0x1a, 0x37, 0x0a, 0x09, 0x47, 0x65, 0x6e, - 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x22, 0x2a, 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0f, - 0x0a, 0x0b, 0x75, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x10, 0x00, 0x12, - 0x08, 0x0a, 0x04, 0x67, 0x6f, 0x6f, 0x64, 0x10, 0x01, 0x12, 0x07, 0x0a, 0x03, 0x62, 0x61, 0x64, - 0x10, 0x02, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x42, 0x0c, 0x0a, - 0x0a, 0x5f, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x42, 0x09, 0x0a, 0x07, 0x5f, - 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x22, 0x92, 0x01, 0x0a, 0x24, 0x50, 0x61, 0x74, 0x74, 0x65, - 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x47, 0x72, 0x65, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, - 0x6d, 0x50, 0x72, 0x65, 0x73, 0x65, 0x6e, 0x74, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x12, + 0x6c, 0x75, 0x65, 0x22, 0x90, 0x01, 0x0a, 0x22, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, + 0x6c, 0x6f, 0x77, 0x47, 0x74, 0x70, 0x76, 0x31, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x54, + 0x79, 0x70, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x12, 0x19, 0x0a, 0x05, 0x73, 0x74, + 0x61, 0x72, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x00, 0x52, 0x05, 0x73, 0x74, 0x61, + 0x72, 0x74, 0x88, 0x01, 0x01, 0x12, 0x17, 0x0a, 0x04, 0x73, 0x74, 0x65, 0x70, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x04, 0x73, 0x74, 0x65, 0x70, 0x88, 0x01, 0x01, 0x12, 0x19, + 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x02, 0x52, + 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x88, 0x01, 0x01, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x73, 0x74, + 0x61, 0x72, 0x74, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x73, 0x74, 0x65, 0x70, 0x42, 0x08, 0x0a, 0x06, + 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x98, 0x01, 0x0a, 0x24, 0x50, 0x61, 0x74, 0x74, 0x65, + 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x47, 0x74, 0x70, 0x76, 0x31, 0x4d, 0x65, 0x73, 0x73, 0x61, + 0x67, 0x65, 0x54, 0x79, 0x70, 0x65, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x12, + 0x17, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, + 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x6f, 0x66, 0x66, 0x73, + 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x06, 0x6f, 0x66, 0x66, 0x73, + 0x65, 0x74, 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x02, 0x52, 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x88, + 0x01, 0x01, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x42, 0x09, 0x0a, 0x07, 0x5f, + 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, + 0x68, 0x22, 0xe2, 0x03, 0x0a, 0x1b, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, + 0x77, 0x47, 0x74, 0x70, 0x76, 0x31, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x54, 0x79, 0x70, + 0x65, 0x12, 0x49, 0x0a, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x0e, 0x32, 0x2c, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, + 0x6c, 0x6f, 0x77, 0x47, 0x74, 0x70, 0x76, 0x31, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x54, + 0x79, 0x70, 0x65, 0x2e, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x48, + 0x00, 0x52, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, + 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x05, 0x76, + 0x61, 0x6c, 0x75, 0x65, 0x88, 0x01, 0x01, 0x12, 0x16, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, + 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0d, 0x52, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x12, + 0x45, 0x0a, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, + 0x46, 0x6c, 0x6f, 0x77, 0x47, 0x74, 0x70, 0x76, 0x31, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, + 0x54, 0x79, 0x70, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, 0x69, 0x6e, 0x63, + 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x45, 0x0a, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, + 0x65, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x6f, 0x74, 0x67, 0x2e, + 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x47, 0x74, 0x70, 0x76, 0x31, + 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x54, 0x79, 0x70, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, + 0x65, 0x72, 0x52, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x4a, 0x0a, + 0x0b, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x5f, 0x74, 0x61, 0x67, 0x73, 0x18, 0x07, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, + 0x46, 0x6c, 0x6f, 0x77, 0x47, 0x74, 0x70, 0x76, 0x31, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, + 0x54, 0x79, 0x70, 0x65, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x52, 0x0a, 0x6d, + 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x73, 0x1a, 0x56, 0x0a, 0x06, 0x43, 0x68, 0x6f, + 0x69, 0x63, 0x65, 0x22, 0x4c, 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x0a, 0x0b, 0x75, + 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, + 0x76, 0x61, 0x6c, 0x75, 0x65, 0x10, 0x02, 0x12, 0x0a, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, + 0x73, 0x10, 0x03, 0x12, 0x0d, 0x0a, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, + 0x10, 0x04, 0x12, 0x0d, 0x0a, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x10, + 0x05, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x42, 0x08, 0x0a, 0x06, + 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x92, 0x01, 0x0a, 0x24, 0x50, 0x61, 0x74, 0x74, 0x65, + 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x47, 0x74, 0x70, 0x76, 0x31, 0x4d, 0x65, 0x73, 0x73, 0x61, + 0x67, 0x65, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x12, 0x19, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x00, 0x52, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x88, 0x01, 0x01, 0x12, 0x17, 0x0a, 0x04, 0x73, 0x74, 0x65, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x04, 0x73, 0x74, 0x65, 0x70, @@ -104303,8 +119833,8 @@ var file_otg_proto_rawDesc = []byte{ 0x28, 0x0d, 0x48, 0x02, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x88, 0x01, 0x01, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x73, 0x74, 0x65, 0x70, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x9a, 0x01, 0x0a, 0x26, - 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x47, 0x72, 0x65, 0x43, 0x68, - 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x50, 0x72, 0x65, 0x73, 0x65, 0x6e, 0x74, 0x4d, 0x65, 0x74, + 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x47, 0x74, 0x70, 0x76, 0x31, + 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x12, 0x17, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, @@ -104313,11 +119843,11 @@ var file_otg_proto_rawDesc = []byte{ 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x88, 0x01, 0x01, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x22, 0xec, 0x03, 0x0a, 0x1d, 0x50, 0x61, 0x74, - 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x47, 0x72, 0x65, 0x43, 0x68, 0x65, 0x63, 0x6b, - 0x73, 0x75, 0x6d, 0x50, 0x72, 0x65, 0x73, 0x65, 0x6e, 0x74, 0x12, 0x4b, 0x0a, 0x06, 0x63, 0x68, + 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x47, 0x74, 0x70, 0x76, 0x31, 0x4d, 0x65, 0x73, + 0x73, 0x61, 0x67, 0x65, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x12, 0x4b, 0x0a, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2e, 0x2e, 0x6f, 0x74, 0x67, - 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x47, 0x72, 0x65, 0x43, - 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x50, 0x72, 0x65, 0x73, 0x65, 0x6e, 0x74, 0x2e, 0x43, + 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x47, 0x74, 0x70, 0x76, + 0x31, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x2e, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x48, 0x00, 0x52, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x88, @@ -104325,111 +119855,17 @@ var file_otg_proto_rawDesc = []byte{ 0x28, 0x0d, 0x52, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x12, 0x47, 0x0a, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x47, - 0x72, 0x65, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x50, 0x72, 0x65, 0x73, 0x65, 0x6e, - 0x74, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, + 0x74, 0x70, 0x76, 0x31, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x4c, 0x65, 0x6e, 0x67, 0x74, + 0x68, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x47, 0x0a, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, - 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x47, 0x72, 0x65, 0x43, 0x68, 0x65, 0x63, 0x6b, - 0x73, 0x75, 0x6d, 0x50, 0x72, 0x65, 0x73, 0x65, 0x6e, 0x74, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, + 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x47, 0x74, 0x70, 0x76, 0x31, 0x4d, 0x65, 0x73, + 0x73, 0x61, 0x67, 0x65, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x4c, 0x0a, 0x0b, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x5f, 0x74, 0x61, 0x67, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, - 0x6c, 0x6f, 0x77, 0x47, 0x72, 0x65, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x50, 0x72, - 0x65, 0x73, 0x65, 0x6e, 0x74, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x52, 0x0a, - 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x73, 0x1a, 0x56, 0x0a, 0x06, 0x43, 0x68, - 0x6f, 0x69, 0x63, 0x65, 0x22, 0x4c, 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x0a, 0x0b, - 0x75, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x10, 0x00, 0x12, 0x09, 0x0a, - 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x10, 0x02, 0x12, 0x0a, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, - 0x65, 0x73, 0x10, 0x03, 0x12, 0x0d, 0x0a, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, - 0x74, 0x10, 0x04, 0x12, 0x0d, 0x0a, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, - 0x10, 0x05, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x42, 0x08, 0x0a, - 0x06, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x8c, 0x01, 0x0a, 0x1e, 0x50, 0x61, 0x74, 0x74, - 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x47, 0x72, 0x65, 0x52, 0x65, 0x73, 0x65, 0x72, 0x76, - 0x65, 0x64, 0x30, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x12, 0x19, 0x0a, 0x05, 0x73, 0x74, - 0x61, 0x72, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x00, 0x52, 0x05, 0x73, 0x74, 0x61, - 0x72, 0x74, 0x88, 0x01, 0x01, 0x12, 0x17, 0x0a, 0x04, 0x73, 0x74, 0x65, 0x70, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x04, 0x73, 0x74, 0x65, 0x70, 0x88, 0x01, 0x01, 0x12, 0x19, - 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x02, 0x52, - 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x88, 0x01, 0x01, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x73, 0x74, - 0x61, 0x72, 0x74, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x73, 0x74, 0x65, 0x70, 0x42, 0x08, 0x0a, 0x06, - 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x94, 0x01, 0x0a, 0x20, 0x50, 0x61, 0x74, 0x74, 0x65, - 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x47, 0x72, 0x65, 0x52, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, - 0x64, 0x30, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x12, 0x17, 0x0a, 0x04, 0x6e, - 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x04, 0x6e, 0x61, 0x6d, - 0x65, 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x88, 0x01, - 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x0d, 0x48, 0x02, 0x52, 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x88, 0x01, 0x01, 0x42, 0x07, - 0x0a, 0x05, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6f, 0x66, 0x66, 0x73, - 0x65, 0x74, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x22, 0xce, 0x03, - 0x0a, 0x17, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x47, 0x72, 0x65, - 0x52, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x64, 0x30, 0x12, 0x45, 0x0a, 0x06, 0x63, 0x68, 0x6f, - 0x69, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x28, 0x2e, 0x6f, 0x74, 0x67, 0x2e, - 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x47, 0x72, 0x65, 0x52, 0x65, - 0x73, 0x65, 0x72, 0x76, 0x65, 0x64, 0x30, 0x2e, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x2e, 0x45, - 0x6e, 0x75, 0x6d, 0x48, 0x00, 0x52, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x88, 0x01, 0x01, - 0x12, 0x19, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, - 0x01, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x88, 0x01, 0x01, 0x12, 0x16, 0x0a, 0x06, 0x76, - 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0d, 0x52, 0x06, 0x76, 0x61, 0x6c, - 0x75, 0x65, 0x73, 0x12, 0x41, 0x0a, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, - 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, - 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x47, 0x72, 0x65, 0x52, 0x65, 0x73, 0x65, 0x72, - 0x76, 0x65, 0x64, 0x30, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, 0x69, 0x6e, 0x63, - 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x41, 0x0a, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, - 0x65, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x6f, 0x74, 0x67, 0x2e, - 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x47, 0x72, 0x65, 0x52, 0x65, - 0x73, 0x65, 0x72, 0x76, 0x65, 0x64, 0x30, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, - 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x46, 0x0a, 0x0b, 0x6d, 0x65, 0x74, - 0x72, 0x69, 0x63, 0x5f, 0x74, 0x61, 0x67, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x25, - 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, - 0x47, 0x72, 0x65, 0x52, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x64, 0x30, 0x4d, 0x65, 0x74, 0x72, - 0x69, 0x63, 0x54, 0x61, 0x67, 0x52, 0x0a, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, - 0x73, 0x1a, 0x56, 0x0a, 0x06, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x22, 0x4c, 0x0a, 0x04, 0x45, - 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x0a, 0x0b, 0x75, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, - 0x65, 0x64, 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x10, 0x02, 0x12, - 0x0a, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x10, 0x03, 0x12, 0x0d, 0x0a, 0x09, 0x69, - 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x10, 0x04, 0x12, 0x0d, 0x0a, 0x09, 0x64, 0x65, - 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x10, 0x05, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x63, 0x68, - 0x6f, 0x69, 0x63, 0x65, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x8a, - 0x01, 0x0a, 0x1c, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x47, 0x72, - 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x12, - 0x19, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x00, - 0x52, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x88, 0x01, 0x01, 0x12, 0x17, 0x0a, 0x04, 0x73, 0x74, - 0x65, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x04, 0x73, 0x74, 0x65, 0x70, - 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x0d, 0x48, 0x02, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x88, 0x01, 0x01, 0x42, 0x08, - 0x0a, 0x06, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x73, 0x74, 0x65, - 0x70, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x92, 0x01, 0x0a, 0x1e, - 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x47, 0x72, 0x65, 0x56, 0x65, - 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x12, 0x17, - 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x04, - 0x6e, 0x61, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, - 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, - 0x74, 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x0d, 0x48, 0x02, 0x52, 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x88, 0x01, - 0x01, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6f, - 0x66, 0x66, 0x73, 0x65, 0x74, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, - 0x22, 0xc4, 0x03, 0x0a, 0x15, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, - 0x47, 0x72, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x43, 0x0a, 0x06, 0x63, 0x68, - 0x6f, 0x69, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x26, 0x2e, 0x6f, 0x74, 0x67, - 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x47, 0x72, 0x65, 0x56, - 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x2e, 0x45, 0x6e, - 0x75, 0x6d, 0x48, 0x00, 0x52, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x88, 0x01, 0x01, 0x12, - 0x19, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, - 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x88, 0x01, 0x01, 0x12, 0x16, 0x0a, 0x06, 0x76, 0x61, - 0x6c, 0x75, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0d, 0x52, 0x06, 0x76, 0x61, 0x6c, 0x75, - 0x65, 0x73, 0x12, 0x3f, 0x0a, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, - 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, - 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x47, 0x72, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, - 0x6e, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, - 0x65, 0x6e, 0x74, 0x12, 0x3f, 0x0a, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, - 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, - 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x47, 0x72, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, - 0x6f, 0x6e, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, - 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x44, 0x0a, 0x0b, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x5f, 0x74, - 0x61, 0x67, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x6f, 0x74, 0x67, 0x2e, - 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x47, 0x72, 0x65, 0x56, 0x65, - 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x52, 0x0a, + 0x6c, 0x6f, 0x77, 0x47, 0x74, 0x70, 0x76, 0x31, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x4c, + 0x65, 0x6e, 0x67, 0x74, 0x68, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x52, 0x0a, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x73, 0x1a, 0x56, 0x0a, 0x06, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x22, 0x4c, 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x0a, 0x0b, 0x75, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x10, 0x00, 0x12, 0x09, 0x0a, @@ -104437,17 +119873,64 @@ var file_otg_proto_rawDesc = []byte{ 0x65, 0x73, 0x10, 0x03, 0x12, 0x0d, 0x0a, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x10, 0x04, 0x12, 0x0d, 0x0a, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x10, 0x05, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x42, 0x08, 0x0a, - 0x06, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x8b, 0x01, 0x0a, 0x1d, 0x50, 0x61, 0x74, 0x74, - 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x47, 0x72, 0x65, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, - 0x6f, 0x6c, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x12, 0x19, 0x0a, 0x05, 0x73, 0x74, 0x61, - 0x72, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x00, 0x52, 0x05, 0x73, 0x74, 0x61, 0x72, - 0x74, 0x88, 0x01, 0x01, 0x12, 0x17, 0x0a, 0x04, 0x73, 0x74, 0x65, 0x70, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x0d, 0x48, 0x01, 0x52, 0x04, 0x73, 0x74, 0x65, 0x70, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, - 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x02, 0x52, 0x05, - 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x88, 0x01, 0x01, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x73, 0x74, 0x61, - 0x72, 0x74, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x73, 0x74, 0x65, 0x70, 0x42, 0x08, 0x0a, 0x06, 0x5f, - 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x93, 0x01, 0x0a, 0x1f, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, - 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x47, 0x72, 0x65, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, + 0x06, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x89, 0x01, 0x0a, 0x1b, 0x50, 0x61, 0x74, 0x74, + 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x47, 0x74, 0x70, 0x76, 0x31, 0x54, 0x65, 0x69, 0x64, + 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x12, 0x19, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x00, 0x52, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x88, + 0x01, 0x01, 0x12, 0x17, 0x0a, 0x04, 0x73, 0x74, 0x65, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, + 0x48, 0x01, 0x52, 0x04, 0x73, 0x74, 0x65, 0x70, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x63, + 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x02, 0x52, 0x05, 0x63, 0x6f, + 0x75, 0x6e, 0x74, 0x88, 0x01, 0x01, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, + 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x73, 0x74, 0x65, 0x70, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x63, 0x6f, + 0x75, 0x6e, 0x74, 0x22, 0x91, 0x01, 0x0a, 0x1d, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, + 0x6c, 0x6f, 0x77, 0x47, 0x74, 0x70, 0x76, 0x31, 0x54, 0x65, 0x69, 0x64, 0x4d, 0x65, 0x74, 0x72, + 0x69, 0x63, 0x54, 0x61, 0x67, 0x12, 0x17, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, 0x1b, + 0x0a, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, + 0x52, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x6c, + 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x02, 0x52, 0x06, 0x6c, + 0x65, 0x6e, 0x67, 0x74, 0x68, 0x88, 0x01, 0x01, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x6e, 0x61, 0x6d, + 0x65, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x42, 0x09, 0x0a, 0x07, + 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x22, 0xbf, 0x03, 0x0a, 0x14, 0x50, 0x61, 0x74, 0x74, + 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x47, 0x74, 0x70, 0x76, 0x31, 0x54, 0x65, 0x69, 0x64, + 0x12, 0x42, 0x0a, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, + 0x32, 0x25, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, + 0x6f, 0x77, 0x47, 0x74, 0x70, 0x76, 0x31, 0x54, 0x65, 0x69, 0x64, 0x2e, 0x43, 0x68, 0x6f, 0x69, + 0x63, 0x65, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x48, 0x00, 0x52, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, + 0x65, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x88, 0x01, 0x01, 0x12, + 0x16, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0d, 0x52, + 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x12, 0x3e, 0x0a, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, + 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x6f, 0x74, 0x67, + 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x47, 0x74, 0x70, 0x76, + 0x31, 0x54, 0x65, 0x69, 0x64, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, 0x69, 0x6e, + 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x3e, 0x0a, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, + 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x6f, 0x74, 0x67, + 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x47, 0x74, 0x70, 0x76, + 0x31, 0x54, 0x65, 0x69, 0x64, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, 0x64, 0x65, + 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x43, 0x0a, 0x0b, 0x6d, 0x65, 0x74, 0x72, 0x69, + 0x63, 0x5f, 0x74, 0x61, 0x67, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x6f, + 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x47, 0x74, + 0x70, 0x76, 0x31, 0x54, 0x65, 0x69, 0x64, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, + 0x52, 0x0a, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x73, 0x1a, 0x56, 0x0a, 0x06, + 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x22, 0x4c, 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0f, + 0x0a, 0x0b, 0x75, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x10, 0x00, 0x12, + 0x09, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x10, 0x02, 0x12, 0x0a, 0x0a, 0x06, 0x76, 0x61, + 0x6c, 0x75, 0x65, 0x73, 0x10, 0x03, 0x12, 0x0d, 0x0a, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, + 0x65, 0x6e, 0x74, 0x10, 0x04, 0x12, 0x0d, 0x0a, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, + 0x6e, 0x74, 0x10, 0x05, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x42, + 0x08, 0x0a, 0x06, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x92, 0x01, 0x0a, 0x24, 0x50, 0x61, + 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x47, 0x74, 0x70, 0x76, 0x31, 0x53, 0x71, + 0x75, 0x65, 0x6e, 0x63, 0x65, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x43, 0x6f, 0x75, 0x6e, 0x74, + 0x65, 0x72, 0x12, 0x19, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x0d, 0x48, 0x00, 0x52, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x88, 0x01, 0x01, 0x12, 0x17, 0x0a, + 0x04, 0x73, 0x74, 0x65, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x04, 0x73, + 0x74, 0x65, 0x70, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x02, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x88, 0x01, + 0x01, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x42, 0x07, 0x0a, 0x05, 0x5f, + 0x73, 0x74, 0x65, 0x70, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x9a, + 0x01, 0x0a, 0x26, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x47, 0x74, + 0x70, 0x76, 0x31, 0x53, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x65, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x12, 0x17, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, @@ -104455,98 +119938,79 @@ var file_otg_proto_rawDesc = []byte{ 0x1b, 0x0a, 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x02, 0x52, 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x88, 0x01, 0x01, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, - 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x22, 0xc9, 0x03, 0x0a, 0x16, - 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x47, 0x72, 0x65, 0x50, 0x72, - 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x12, 0x44, 0x0a, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x27, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, - 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x47, 0x72, 0x65, 0x50, 0x72, 0x6f, 0x74, 0x6f, - 0x63, 0x6f, 0x6c, 0x2e, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x48, - 0x00, 0x52, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, - 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x05, 0x76, - 0x61, 0x6c, 0x75, 0x65, 0x88, 0x01, 0x01, 0x12, 0x16, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, - 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0d, 0x52, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x12, - 0x40, 0x0a, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, - 0x46, 0x6c, 0x6f, 0x77, 0x47, 0x72, 0x65, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x43, - 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, - 0x74, 0x12, 0x40, 0x0a, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x06, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, - 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x47, 0x72, 0x65, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, - 0x6c, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, - 0x65, 0x6e, 0x74, 0x12, 0x45, 0x0a, 0x0b, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x5f, 0x74, 0x61, - 0x67, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, - 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x47, 0x72, 0x65, 0x50, 0x72, 0x6f, - 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x52, 0x0a, - 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x73, 0x1a, 0x56, 0x0a, 0x06, 0x43, 0x68, - 0x6f, 0x69, 0x63, 0x65, 0x22, 0x4c, 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x0a, 0x0b, - 0x75, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x10, 0x00, 0x12, 0x09, 0x0a, - 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x10, 0x02, 0x12, 0x0a, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, - 0x65, 0x73, 0x10, 0x03, 0x12, 0x0d, 0x0a, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, - 0x74, 0x10, 0x04, 0x12, 0x0d, 0x0a, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, - 0x10, 0x05, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x42, 0x08, 0x0a, - 0x06, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0xe5, 0x02, 0x0a, 0x16, 0x50, 0x61, 0x74, 0x74, - 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x47, 0x72, 0x65, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x73, - 0x75, 0x6d, 0x12, 0x44, 0x0a, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x0e, 0x32, 0x27, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, - 0x46, 0x6c, 0x6f, 0x77, 0x47, 0x72, 0x65, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x2e, - 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x48, 0x00, 0x52, 0x06, 0x63, - 0x68, 0x6f, 0x69, 0x63, 0x65, 0x88, 0x01, 0x01, 0x12, 0x4d, 0x0a, 0x09, 0x67, 0x65, 0x6e, 0x65, - 0x72, 0x61, 0x74, 0x65, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2a, 0x2e, 0x6f, 0x74, - 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x47, 0x72, 0x65, - 0x43, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x2e, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, - 0x65, 0x64, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x48, 0x01, 0x52, 0x09, 0x67, 0x65, 0x6e, 0x65, 0x72, - 0x61, 0x74, 0x65, 0x64, 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x63, 0x75, 0x73, 0x74, 0x6f, - 0x6d, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x02, 0x52, 0x06, 0x63, 0x75, 0x73, 0x74, 0x6f, - 0x6d, 0x88, 0x01, 0x01, 0x1a, 0x3c, 0x0a, 0x06, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x22, 0x32, - 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x0a, 0x0b, 0x75, 0x6e, 0x73, 0x70, 0x65, 0x63, - 0x69, 0x66, 0x69, 0x65, 0x64, 0x10, 0x00, 0x12, 0x0d, 0x0a, 0x09, 0x67, 0x65, 0x6e, 0x65, 0x72, - 0x61, 0x74, 0x65, 0x64, 0x10, 0x01, 0x12, 0x0a, 0x0a, 0x06, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, - 0x10, 0x02, 0x1a, 0x37, 0x0a, 0x09, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x22, - 0x2a, 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x0a, 0x0b, 0x75, 0x6e, 0x73, 0x70, 0x65, - 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x10, 0x00, 0x12, 0x08, 0x0a, 0x04, 0x67, 0x6f, 0x6f, 0x64, - 0x10, 0x01, 0x12, 0x07, 0x0a, 0x03, 0x62, 0x61, 0x64, 0x10, 0x02, 0x42, 0x09, 0x0a, 0x07, 0x5f, - 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x67, 0x65, 0x6e, 0x65, 0x72, - 0x61, 0x74, 0x65, 0x64, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x22, - 0x8c, 0x01, 0x0a, 0x1e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x47, - 0x72, 0x65, 0x52, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x64, 0x31, 0x43, 0x6f, 0x75, 0x6e, 0x74, - 0x65, 0x72, 0x12, 0x19, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x0d, 0x48, 0x00, 0x52, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x88, 0x01, 0x01, 0x12, 0x17, 0x0a, - 0x04, 0x73, 0x74, 0x65, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x04, 0x73, - 0x74, 0x65, 0x70, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x02, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x88, 0x01, - 0x01, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x42, 0x07, 0x0a, 0x05, 0x5f, - 0x73, 0x74, 0x65, 0x70, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x94, - 0x01, 0x0a, 0x20, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x47, 0x72, - 0x65, 0x52, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x64, 0x31, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, - 0x54, 0x61, 0x67, 0x12, 0x17, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x48, 0x00, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, - 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x06, - 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x6c, 0x65, 0x6e, - 0x67, 0x74, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x02, 0x52, 0x06, 0x6c, 0x65, 0x6e, - 0x67, 0x74, 0x68, 0x88, 0x01, 0x01, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x42, - 0x09, 0x0a, 0x07, 0x5f, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6c, - 0x65, 0x6e, 0x67, 0x74, 0x68, 0x22, 0xce, 0x03, 0x0a, 0x17, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, - 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x47, 0x72, 0x65, 0x52, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x64, - 0x31, 0x12, 0x45, 0x0a, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x0e, 0x32, 0x28, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, - 0x6c, 0x6f, 0x77, 0x47, 0x72, 0x65, 0x52, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x64, 0x31, 0x2e, - 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x48, 0x00, 0x52, 0x06, 0x63, - 0x68, 0x6f, 0x69, 0x63, 0x65, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, - 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, - 0x88, 0x01, 0x01, 0x12, 0x16, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x03, 0x20, - 0x03, 0x28, 0x0d, 0x52, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x12, 0x41, 0x0a, 0x09, 0x69, - 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, - 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, - 0x47, 0x72, 0x65, 0x52, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x64, 0x31, 0x43, 0x6f, 0x75, 0x6e, - 0x74, 0x65, 0x72, 0x52, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x41, - 0x0a, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x23, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, - 0x6c, 0x6f, 0x77, 0x47, 0x72, 0x65, 0x52, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x64, 0x31, 0x43, - 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, - 0x74, 0x12, 0x46, 0x0a, 0x0b, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x5f, 0x74, 0x61, 0x67, 0x73, - 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, - 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x47, 0x72, 0x65, 0x52, 0x65, 0x73, 0x65, 0x72, - 0x76, 0x65, 0x64, 0x31, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x52, 0x0a, 0x6d, + 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x22, 0xec, 0x03, 0x0a, 0x1d, + 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x47, 0x74, 0x70, 0x76, 0x31, + 0x53, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x65, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x4b, 0x0a, + 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2e, 0x2e, + 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x47, + 0x74, 0x70, 0x76, 0x31, 0x53, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x65, 0x4e, 0x75, 0x6d, 0x62, 0x65, + 0x72, 0x2e, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x48, 0x00, 0x52, + 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x76, 0x61, + 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x05, 0x76, 0x61, 0x6c, + 0x75, 0x65, 0x88, 0x01, 0x01, 0x12, 0x16, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, + 0x03, 0x20, 0x03, 0x28, 0x0d, 0x52, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x12, 0x47, 0x0a, + 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x29, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, + 0x6f, 0x77, 0x47, 0x74, 0x70, 0x76, 0x31, 0x53, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x65, 0x4e, 0x75, + 0x6d, 0x62, 0x65, 0x72, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, 0x69, 0x6e, 0x63, + 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x47, 0x0a, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, + 0x65, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x6f, 0x74, 0x67, 0x2e, + 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x47, 0x74, 0x70, 0x76, 0x31, + 0x53, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x65, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x43, 0x6f, 0x75, + 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, + 0x4c, 0x0a, 0x0b, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x5f, 0x74, 0x61, 0x67, 0x73, 0x18, 0x07, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, + 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x47, 0x74, 0x70, 0x76, 0x31, 0x53, 0x71, 0x75, 0x65, 0x6e, + 0x63, 0x65, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, + 0x67, 0x52, 0x0a, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x73, 0x1a, 0x56, 0x0a, + 0x06, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x22, 0x4c, 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, + 0x0f, 0x0a, 0x0b, 0x75, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x10, 0x00, + 0x12, 0x09, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x10, 0x02, 0x12, 0x0a, 0x0a, 0x06, 0x76, + 0x61, 0x6c, 0x75, 0x65, 0x73, 0x10, 0x03, 0x12, 0x0d, 0x0a, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, + 0x6d, 0x65, 0x6e, 0x74, 0x10, 0x04, 0x12, 0x0d, 0x0a, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, + 0x65, 0x6e, 0x74, 0x10, 0x05, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, + 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x8f, 0x01, 0x0a, 0x21, 0x50, + 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x47, 0x74, 0x70, 0x76, 0x31, 0x4e, + 0x50, 0x64, 0x75, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, + 0x12, 0x19, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x48, + 0x00, 0x52, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x88, 0x01, 0x01, 0x12, 0x17, 0x0a, 0x04, 0x73, + 0x74, 0x65, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x04, 0x73, 0x74, 0x65, + 0x70, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x0d, 0x48, 0x02, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x88, 0x01, 0x01, 0x42, + 0x08, 0x0a, 0x06, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x73, 0x74, + 0x65, 0x70, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x97, 0x01, 0x0a, + 0x23, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x47, 0x74, 0x70, 0x76, + 0x31, 0x4e, 0x50, 0x64, 0x75, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x4d, 0x65, 0x74, 0x72, 0x69, + 0x63, 0x54, 0x61, 0x67, 0x12, 0x17, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x48, 0x00, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, + 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, + 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x6c, 0x65, + 0x6e, 0x67, 0x74, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x02, 0x52, 0x06, 0x6c, 0x65, + 0x6e, 0x67, 0x74, 0x68, 0x88, 0x01, 0x01, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x6e, 0x61, 0x6d, 0x65, + 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x42, 0x09, 0x0a, 0x07, 0x5f, + 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x22, 0xdd, 0x03, 0x0a, 0x1a, 0x50, 0x61, 0x74, 0x74, 0x65, + 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x47, 0x74, 0x70, 0x76, 0x31, 0x4e, 0x50, 0x64, 0x75, 0x4e, + 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x48, 0x0a, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2b, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, + 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x47, 0x74, 0x70, 0x76, 0x31, 0x4e, 0x50, 0x64, 0x75, + 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x2e, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x2e, 0x45, 0x6e, + 0x75, 0x6d, 0x48, 0x00, 0x52, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x88, 0x01, 0x01, 0x12, + 0x19, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, + 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x88, 0x01, 0x01, 0x12, 0x16, 0x0a, 0x06, 0x76, 0x61, + 0x6c, 0x75, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0d, 0x52, 0x06, 0x76, 0x61, 0x6c, 0x75, + 0x65, 0x73, 0x12, 0x44, 0x0a, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, + 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, + 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x47, 0x74, 0x70, 0x76, 0x31, 0x4e, 0x50, 0x64, 0x75, + 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, 0x69, + 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x44, 0x0a, 0x09, 0x64, 0x65, 0x63, 0x72, + 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x6f, 0x74, + 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x47, 0x74, 0x70, + 0x76, 0x31, 0x4e, 0x50, 0x64, 0x75, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x43, 0x6f, 0x75, 0x6e, + 0x74, 0x65, 0x72, 0x52, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x49, + 0x0a, 0x0b, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x5f, 0x74, 0x61, 0x67, 0x73, 0x18, 0x07, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, + 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x47, 0x74, 0x70, 0x76, 0x31, 0x4e, 0x50, 0x64, 0x75, 0x4e, 0x75, + 0x6d, 0x62, 0x65, 0x72, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x52, 0x0a, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x73, 0x1a, 0x56, 0x0a, 0x06, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x22, 0x4c, 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x0a, 0x0b, 0x75, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, @@ -104554,46 +120018,53 @@ var file_otg_proto_rawDesc = []byte{ 0x73, 0x10, 0x03, 0x12, 0x0d, 0x0a, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x10, 0x04, 0x12, 0x0d, 0x0a, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x10, 0x05, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x42, 0x08, 0x0a, 0x06, - 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x8c, 0x01, 0x0a, 0x1e, 0x50, 0x61, 0x74, 0x74, 0x65, - 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x47, 0x74, 0x70, 0x76, 0x31, 0x56, 0x65, 0x72, 0x73, 0x69, - 0x6f, 0x6e, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x12, 0x19, 0x0a, 0x05, 0x73, 0x74, 0x61, + 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x9c, 0x01, 0x0a, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, + 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x47, 0x74, 0x70, 0x76, 0x31, 0x4e, 0x65, 0x78, 0x74, 0x45, + 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x54, 0x79, + 0x70, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x12, 0x19, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x00, 0x52, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x88, 0x01, 0x01, 0x12, 0x17, 0x0a, 0x04, 0x73, 0x74, 0x65, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x04, 0x73, 0x74, 0x65, 0x70, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x02, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x88, 0x01, 0x01, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x73, 0x74, 0x65, 0x70, 0x42, 0x08, 0x0a, 0x06, 0x5f, - 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x94, 0x01, 0x0a, 0x20, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, - 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x47, 0x74, 0x70, 0x76, 0x31, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, - 0x6e, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x12, 0x17, 0x0a, 0x04, 0x6e, 0x61, + 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0xa4, 0x01, 0x0a, 0x30, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, + 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x47, 0x74, 0x70, 0x76, 0x31, 0x4e, 0x65, 0x78, 0x74, 0x45, 0x78, + 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x54, 0x79, 0x70, + 0x65, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x12, 0x17, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x02, 0x52, 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x88, 0x01, 0x01, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6f, 0x66, 0x66, 0x73, 0x65, - 0x74, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x22, 0xce, 0x03, 0x0a, - 0x17, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x47, 0x74, 0x70, 0x76, - 0x31, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x45, 0x0a, 0x06, 0x63, 0x68, 0x6f, 0x69, - 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x28, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, - 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x47, 0x74, 0x70, 0x76, 0x31, 0x56, - 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x2e, 0x45, 0x6e, + 0x74, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x22, 0x9e, 0x04, 0x0a, + 0x27, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x47, 0x74, 0x70, 0x76, + 0x31, 0x4e, 0x65, 0x78, 0x74, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x48, 0x65, + 0x61, 0x64, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x12, 0x55, 0x0a, 0x06, 0x63, 0x68, 0x6f, 0x69, + 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x38, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, + 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x47, 0x74, 0x70, 0x76, 0x31, 0x4e, + 0x65, 0x78, 0x74, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x48, 0x65, 0x61, 0x64, + 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x2e, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x48, 0x00, 0x52, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x88, 0x01, 0x01, 0x12, 0x16, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0d, 0x52, 0x06, 0x76, 0x61, 0x6c, 0x75, - 0x65, 0x73, 0x12, 0x41, 0x0a, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, - 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, - 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x47, 0x74, 0x70, 0x76, 0x31, 0x56, 0x65, 0x72, 0x73, - 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, 0x69, 0x6e, 0x63, 0x72, - 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x41, 0x0a, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, - 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, - 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x47, 0x74, 0x70, 0x76, 0x31, 0x56, - 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, 0x64, - 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x46, 0x0a, 0x0b, 0x6d, 0x65, 0x74, 0x72, - 0x69, 0x63, 0x5f, 0x74, 0x61, 0x67, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x25, 0x2e, + 0x65, 0x73, 0x12, 0x51, 0x0a, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, + 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x33, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, + 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x47, 0x74, 0x70, 0x76, 0x31, 0x4e, 0x65, 0x78, 0x74, + 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x54, + 0x79, 0x70, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, 0x69, 0x6e, 0x63, 0x72, + 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x51, 0x0a, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, + 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x33, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, + 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x47, 0x74, 0x70, 0x76, 0x31, 0x4e, + 0x65, 0x78, 0x74, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x48, 0x65, 0x61, 0x64, + 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, 0x64, + 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x56, 0x0a, 0x0b, 0x6d, 0x65, 0x74, 0x72, + 0x69, 0x63, 0x5f, 0x74, 0x61, 0x67, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x35, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x47, - 0x74, 0x70, 0x76, 0x31, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x74, 0x72, 0x69, + 0x74, 0x70, 0x76, 0x31, 0x4e, 0x65, 0x78, 0x74, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, + 0x6e, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x52, 0x0a, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x73, 0x1a, 0x56, 0x0a, 0x06, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x22, 0x4c, 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x0a, 0x0b, 0x75, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, @@ -104601,97 +120072,259 @@ var file_otg_proto_rawDesc = []byte{ 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x10, 0x03, 0x12, 0x0d, 0x0a, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x10, 0x04, 0x12, 0x0d, 0x0a, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x10, 0x05, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x63, 0x68, 0x6f, - 0x69, 0x63, 0x65, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x91, 0x01, - 0x0a, 0x23, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x47, 0x74, 0x70, - 0x76, 0x31, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x43, 0x6f, - 0x75, 0x6e, 0x74, 0x65, 0x72, 0x12, 0x19, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x0d, 0x48, 0x00, 0x52, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x88, 0x01, 0x01, - 0x12, 0x17, 0x0a, 0x04, 0x73, 0x74, 0x65, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, - 0x52, 0x04, 0x73, 0x74, 0x65, 0x70, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x63, 0x6f, 0x75, - 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x02, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, - 0x74, 0x88, 0x01, 0x01, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x42, 0x07, - 0x0a, 0x05, 0x5f, 0x73, 0x74, 0x65, 0x70, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x63, 0x6f, 0x75, 0x6e, - 0x74, 0x22, 0x99, 0x01, 0x0a, 0x25, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, - 0x77, 0x47, 0x74, 0x70, 0x76, 0x31, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x54, 0x79, - 0x70, 0x65, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x12, 0x17, 0x0a, 0x04, 0x6e, - 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x04, 0x6e, 0x61, 0x6d, - 0x65, 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x88, 0x01, - 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x0d, 0x48, 0x02, 0x52, 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x88, 0x01, 0x01, 0x42, 0x07, - 0x0a, 0x05, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6f, 0x66, 0x66, 0x73, - 0x65, 0x74, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x22, 0xe7, 0x03, - 0x0a, 0x1c, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x47, 0x74, 0x70, - 0x76, 0x31, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x12, 0x4a, - 0x0a, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2d, + 0x69, 0x63, 0x65, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x9b, 0x01, + 0x0a, 0x2d, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x47, 0x74, 0x70, + 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, + 0x6f, 0x6e, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x12, + 0x19, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x00, + 0x52, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x88, 0x01, 0x01, 0x12, 0x17, 0x0a, 0x04, 0x73, 0x74, + 0x65, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x04, 0x73, 0x74, 0x65, 0x70, + 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x0d, 0x48, 0x02, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x88, 0x01, 0x01, 0x42, 0x08, + 0x0a, 0x06, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x73, 0x74, 0x65, + 0x70, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0xa3, 0x01, 0x0a, 0x2f, + 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x47, 0x74, 0x70, 0x45, 0x78, + 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, + 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x12, + 0x17, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, + 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x6f, 0x66, 0x66, 0x73, + 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x06, 0x6f, 0x66, 0x66, 0x73, + 0x65, 0x74, 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x02, 0x52, 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x88, + 0x01, 0x01, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x42, 0x09, 0x0a, 0x07, 0x5f, + 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, + 0x68, 0x22, 0x99, 0x04, 0x0a, 0x26, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, + 0x77, 0x47, 0x74, 0x70, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x45, 0x78, 0x74, + 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x12, 0x54, 0x0a, 0x06, + 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x37, 0x2e, 0x6f, + 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x47, 0x74, + 0x70, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, + 0x69, 0x6f, 0x6e, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x2e, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, + 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x48, 0x00, 0x52, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x88, + 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x0d, 0x48, 0x01, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x88, 0x01, 0x01, 0x12, 0x16, 0x0a, + 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0d, 0x52, 0x06, 0x76, + 0x61, 0x6c, 0x75, 0x65, 0x73, 0x12, 0x50, 0x0a, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, + 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x32, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, + 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x47, 0x74, 0x70, 0x45, 0x78, 0x74, + 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x4c, + 0x65, 0x6e, 0x67, 0x74, 0x68, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, 0x69, 0x6e, + 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x50, 0x0a, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, + 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x32, 0x2e, 0x6f, 0x74, 0x67, + 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x47, 0x74, 0x70, 0x45, + 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, + 0x6e, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, + 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x55, 0x0a, 0x0b, 0x6d, 0x65, 0x74, + 0x72, 0x69, 0x63, 0x5f, 0x74, 0x61, 0x67, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x34, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, - 0x47, 0x74, 0x70, 0x76, 0x31, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x54, 0x79, 0x70, - 0x65, 0x2e, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x48, 0x00, 0x52, - 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x76, 0x61, - 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x05, 0x76, 0x61, 0x6c, - 0x75, 0x65, 0x88, 0x01, 0x01, 0x12, 0x16, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, - 0x03, 0x20, 0x03, 0x28, 0x0d, 0x52, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x12, 0x46, 0x0a, - 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x28, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, - 0x6f, 0x77, 0x47, 0x74, 0x70, 0x76, 0x31, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x54, - 0x79, 0x70, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, 0x69, 0x6e, 0x63, 0x72, - 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x46, 0x0a, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, - 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, - 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x47, 0x74, 0x70, 0x76, 0x31, 0x50, - 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, - 0x65, 0x72, 0x52, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x4b, 0x0a, - 0x0b, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x5f, 0x74, 0x61, 0x67, 0x73, 0x18, 0x07, 0x20, 0x03, - 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, - 0x46, 0x6c, 0x6f, 0x77, 0x47, 0x74, 0x70, 0x76, 0x31, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, - 0x6c, 0x54, 0x79, 0x70, 0x65, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x52, 0x0a, - 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x73, 0x1a, 0x56, 0x0a, 0x06, 0x43, 0x68, - 0x6f, 0x69, 0x63, 0x65, 0x22, 0x4c, 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x0a, 0x0b, - 0x75, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x10, 0x00, 0x12, 0x09, 0x0a, - 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x10, 0x02, 0x12, 0x0a, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, - 0x65, 0x73, 0x10, 0x03, 0x12, 0x0d, 0x0a, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, - 0x74, 0x10, 0x04, 0x12, 0x0d, 0x0a, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, - 0x10, 0x05, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x42, 0x08, 0x0a, - 0x06, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x8d, 0x01, 0x0a, 0x1f, 0x50, 0x61, 0x74, 0x74, - 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x47, 0x74, 0x70, 0x76, 0x31, 0x52, 0x65, 0x73, 0x65, - 0x72, 0x76, 0x65, 0x64, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x12, 0x19, 0x0a, 0x05, 0x73, + 0x47, 0x74, 0x70, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x45, 0x78, 0x74, 0x65, + 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x4d, 0x65, 0x74, 0x72, 0x69, + 0x63, 0x54, 0x61, 0x67, 0x52, 0x0a, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x73, + 0x1a, 0x56, 0x0a, 0x06, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x22, 0x4c, 0x0a, 0x04, 0x45, 0x6e, + 0x75, 0x6d, 0x12, 0x0f, 0x0a, 0x0b, 0x75, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, + 0x64, 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x10, 0x02, 0x12, 0x0a, + 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x10, 0x03, 0x12, 0x0d, 0x0a, 0x09, 0x69, 0x6e, + 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x10, 0x04, 0x12, 0x0d, 0x0a, 0x09, 0x64, 0x65, 0x63, + 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x10, 0x05, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x63, 0x68, 0x6f, + 0x69, 0x63, 0x65, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x94, 0x01, + 0x0a, 0x26, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x47, 0x74, 0x70, + 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, + 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x12, 0x19, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x72, + 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x48, 0x00, 0x52, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, + 0x88, 0x01, 0x01, 0x12, 0x17, 0x0a, 0x04, 0x73, 0x74, 0x65, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x04, 0x48, 0x01, 0x52, 0x04, 0x73, 0x74, 0x65, 0x70, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, + 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x48, 0x02, 0x52, 0x05, 0x63, + 0x6f, 0x75, 0x6e, 0x74, 0x88, 0x01, 0x01, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x73, 0x74, 0x61, 0x72, + 0x74, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x73, 0x74, 0x65, 0x70, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x63, + 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x9c, 0x01, 0x0a, 0x28, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, + 0x46, 0x6c, 0x6f, 0x77, 0x47, 0x74, 0x70, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, + 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x73, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, + 0x67, 0x12, 0x17, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, + 0x00, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x6f, 0x66, + 0x66, 0x73, 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x48, 0x01, 0x52, 0x06, 0x6f, 0x66, + 0x66, 0x73, 0x65, 0x74, 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, + 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x48, 0x02, 0x52, 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, + 0x68, 0x88, 0x01, 0x01, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x42, 0x09, 0x0a, + 0x07, 0x5f, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6c, 0x65, 0x6e, + 0x67, 0x74, 0x68, 0x22, 0xf6, 0x03, 0x0a, 0x1f, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, + 0x6c, 0x6f, 0x77, 0x47, 0x74, 0x70, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x43, + 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x4d, 0x0a, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, + 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x30, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, + 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x47, 0x74, 0x70, 0x45, 0x78, 0x74, 0x65, + 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x43, 0x68, + 0x6f, 0x69, 0x63, 0x65, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x48, 0x00, 0x52, 0x06, 0x63, 0x68, 0x6f, + 0x69, 0x63, 0x65, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x04, 0x48, 0x01, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x88, 0x01, + 0x01, 0x12, 0x16, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, + 0x04, 0x52, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x12, 0x49, 0x0a, 0x09, 0x69, 0x6e, 0x63, + 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x6f, + 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x47, 0x74, + 0x70, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, + 0x74, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, + 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x49, 0x0a, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, + 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, + 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x47, 0x74, 0x70, 0x45, 0x78, 0x74, 0x65, + 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x73, 0x43, 0x6f, 0x75, + 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, + 0x4e, 0x0a, 0x0b, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x5f, 0x74, 0x61, 0x67, 0x73, 0x18, 0x07, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, + 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x47, 0x74, 0x70, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, + 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x73, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, + 0x54, 0x61, 0x67, 0x52, 0x0a, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x73, 0x1a, + 0x56, 0x0a, 0x06, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x22, 0x4c, 0x0a, 0x04, 0x45, 0x6e, 0x75, + 0x6d, 0x12, 0x0f, 0x0a, 0x0b, 0x75, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, + 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x10, 0x02, 0x12, 0x0a, 0x0a, + 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x10, 0x03, 0x12, 0x0d, 0x0a, 0x09, 0x69, 0x6e, 0x63, + 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x10, 0x04, 0x12, 0x0d, 0x0a, 0x09, 0x64, 0x65, 0x63, 0x72, + 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x10, 0x05, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x63, 0x68, 0x6f, 0x69, + 0x63, 0x65, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x9f, 0x01, 0x0a, + 0x31, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x47, 0x74, 0x70, 0x45, + 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x4e, 0x65, 0x78, 0x74, 0x45, 0x78, 0x74, 0x65, + 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x43, 0x6f, 0x75, 0x6e, 0x74, + 0x65, 0x72, 0x12, 0x19, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x0d, 0x48, 0x00, 0x52, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x88, 0x01, 0x01, 0x12, 0x17, 0x0a, + 0x04, 0x73, 0x74, 0x65, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x04, 0x73, + 0x74, 0x65, 0x70, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x02, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x88, 0x01, + 0x01, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x42, 0x07, 0x0a, 0x05, 0x5f, + 0x73, 0x74, 0x65, 0x70, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0xa7, + 0x01, 0x0a, 0x33, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x47, 0x74, + 0x70, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x4e, 0x65, 0x78, 0x74, 0x45, 0x78, + 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x4d, 0x65, 0x74, + 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x12, 0x17, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, + 0x1b, 0x0a, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, + 0x01, 0x52, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, + 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x02, 0x52, 0x06, + 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x88, 0x01, 0x01, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x6e, 0x61, + 0x6d, 0x65, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x42, 0x09, 0x0a, + 0x07, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x22, 0xad, 0x04, 0x0a, 0x2a, 0x50, 0x61, 0x74, + 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x47, 0x74, 0x70, 0x45, 0x78, 0x74, 0x65, 0x6e, + 0x73, 0x69, 0x6f, 0x6e, 0x4e, 0x65, 0x78, 0x74, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, + 0x6e, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x12, 0x58, 0x0a, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, + 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x3b, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, + 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x47, 0x74, 0x70, 0x45, 0x78, 0x74, 0x65, + 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x4e, 0x65, 0x78, 0x74, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, + 0x6f, 0x6e, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x2e, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x2e, + 0x45, 0x6e, 0x75, 0x6d, 0x48, 0x00, 0x52, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x88, 0x01, + 0x01, 0x12, 0x19, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, + 0x48, 0x01, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x88, 0x01, 0x01, 0x12, 0x16, 0x0a, 0x06, + 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0d, 0x52, 0x06, 0x76, 0x61, + 0x6c, 0x75, 0x65, 0x73, 0x12, 0x54, 0x0a, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, + 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x36, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, + 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x47, 0x74, 0x70, 0x45, 0x78, 0x74, 0x65, + 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x4e, 0x65, 0x78, 0x74, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, + 0x6f, 0x6e, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, + 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x54, 0x0a, 0x09, 0x64, 0x65, + 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x36, 0x2e, + 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x47, + 0x74, 0x70, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x4e, 0x65, 0x78, 0x74, 0x45, + 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x43, 0x6f, + 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, + 0x12, 0x59, 0x0a, 0x0b, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x5f, 0x74, 0x61, 0x67, 0x73, 0x18, + 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x38, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, + 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x47, 0x74, 0x70, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, + 0x69, 0x6f, 0x6e, 0x4e, 0x65, 0x78, 0x74, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, + 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x52, + 0x0a, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x73, 0x1a, 0x56, 0x0a, 0x06, 0x43, + 0x68, 0x6f, 0x69, 0x63, 0x65, 0x22, 0x4c, 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x0a, + 0x0b, 0x75, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x10, 0x00, 0x12, 0x09, + 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x10, 0x02, 0x12, 0x0a, 0x0a, 0x06, 0x76, 0x61, 0x6c, + 0x75, 0x65, 0x73, 0x10, 0x03, 0x12, 0x0d, 0x0a, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, + 0x6e, 0x74, 0x10, 0x04, 0x12, 0x0d, 0x0a, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, + 0x74, 0x10, 0x05, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x42, 0x08, + 0x0a, 0x06, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x8c, 0x01, 0x0a, 0x1e, 0x50, 0x61, 0x74, + 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x47, 0x74, 0x70, 0x76, 0x32, 0x56, 0x65, 0x72, + 0x73, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x12, 0x19, 0x0a, 0x05, 0x73, + 0x74, 0x61, 0x72, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x00, 0x52, 0x05, 0x73, 0x74, + 0x61, 0x72, 0x74, 0x88, 0x01, 0x01, 0x12, 0x17, 0x0a, 0x04, 0x73, 0x74, 0x65, 0x70, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x04, 0x73, 0x74, 0x65, 0x70, 0x88, 0x01, 0x01, 0x12, + 0x19, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x02, + 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x88, 0x01, 0x01, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x73, + 0x74, 0x61, 0x72, 0x74, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x73, 0x74, 0x65, 0x70, 0x42, 0x08, 0x0a, + 0x06, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x94, 0x01, 0x0a, 0x20, 0x50, 0x61, 0x74, 0x74, + 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x47, 0x74, 0x70, 0x76, 0x32, 0x56, 0x65, 0x72, 0x73, + 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x12, 0x17, 0x0a, 0x04, + 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x04, 0x6e, 0x61, + 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x88, + 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x0d, 0x48, 0x02, 0x52, 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x88, 0x01, 0x01, 0x42, + 0x07, 0x0a, 0x05, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6f, 0x66, 0x66, + 0x73, 0x65, 0x74, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x22, 0xce, + 0x03, 0x0a, 0x17, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x47, 0x74, + 0x70, 0x76, 0x32, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x45, 0x0a, 0x06, 0x63, 0x68, + 0x6f, 0x69, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x28, 0x2e, 0x6f, 0x74, 0x67, + 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x47, 0x74, 0x70, 0x76, + 0x32, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x2e, + 0x45, 0x6e, 0x75, 0x6d, 0x48, 0x00, 0x52, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x88, 0x01, + 0x01, 0x12, 0x19, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, + 0x48, 0x01, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x88, 0x01, 0x01, 0x12, 0x16, 0x0a, 0x06, + 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0d, 0x52, 0x06, 0x76, 0x61, + 0x6c, 0x75, 0x65, 0x73, 0x12, 0x41, 0x0a, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, + 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, + 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x47, 0x74, 0x70, 0x76, 0x32, 0x56, 0x65, + 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, 0x69, 0x6e, + 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x41, 0x0a, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, + 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x6f, 0x74, 0x67, + 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x47, 0x74, 0x70, 0x76, + 0x32, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, + 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x46, 0x0a, 0x0b, 0x6d, 0x65, + 0x74, 0x72, 0x69, 0x63, 0x5f, 0x74, 0x61, 0x67, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x25, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, + 0x77, 0x47, 0x74, 0x70, 0x76, 0x32, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x74, + 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x52, 0x0a, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, + 0x67, 0x73, 0x1a, 0x56, 0x0a, 0x06, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x22, 0x4c, 0x0a, 0x04, + 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x0a, 0x0b, 0x75, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, + 0x69, 0x65, 0x64, 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x10, 0x02, + 0x12, 0x0a, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x10, 0x03, 0x12, 0x0d, 0x0a, 0x09, + 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x10, 0x04, 0x12, 0x0d, 0x0a, 0x09, 0x64, + 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x10, 0x05, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x63, + 0x68, 0x6f, 0x69, 0x63, 0x65, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, + 0x95, 0x01, 0x0a, 0x27, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x47, + 0x74, 0x70, 0x76, 0x32, 0x50, 0x69, 0x67, 0x67, 0x79, 0x62, 0x61, 0x63, 0x6b, 0x69, 0x6e, 0x67, + 0x46, 0x6c, 0x61, 0x67, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x12, 0x19, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x00, 0x52, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x88, 0x01, 0x01, 0x12, 0x17, 0x0a, 0x04, 0x73, 0x74, 0x65, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x04, 0x73, 0x74, 0x65, 0x70, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x02, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x88, 0x01, 0x01, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x73, 0x74, 0x65, 0x70, 0x42, 0x08, 0x0a, - 0x06, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x95, 0x01, 0x0a, 0x21, 0x50, 0x61, 0x74, 0x74, - 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x47, 0x74, 0x70, 0x76, 0x31, 0x52, 0x65, 0x73, 0x65, - 0x72, 0x76, 0x65, 0x64, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x12, 0x17, 0x0a, - 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x04, 0x6e, - 0x61, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, - 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x0d, 0x48, 0x02, 0x52, 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x88, 0x01, 0x01, - 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6f, 0x66, - 0x66, 0x73, 0x65, 0x74, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x22, - 0xd3, 0x03, 0x0a, 0x18, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x47, - 0x74, 0x70, 0x76, 0x31, 0x52, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x64, 0x12, 0x46, 0x0a, 0x06, - 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x29, 0x2e, 0x6f, + 0x06, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x9d, 0x01, 0x0a, 0x29, 0x50, 0x61, 0x74, 0x74, + 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x47, 0x74, 0x70, 0x76, 0x32, 0x50, 0x69, 0x67, 0x67, + 0x79, 0x62, 0x61, 0x63, 0x6b, 0x69, 0x6e, 0x67, 0x46, 0x6c, 0x61, 0x67, 0x4d, 0x65, 0x74, 0x72, + 0x69, 0x63, 0x54, 0x61, 0x67, 0x12, 0x17, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, 0x1b, + 0x0a, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, + 0x52, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x6c, + 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x02, 0x52, 0x06, 0x6c, + 0x65, 0x6e, 0x67, 0x74, 0x68, 0x88, 0x01, 0x01, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x6e, 0x61, 0x6d, + 0x65, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x42, 0x09, 0x0a, 0x07, + 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x22, 0xfb, 0x03, 0x0a, 0x20, 0x50, 0x61, 0x74, 0x74, + 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x47, 0x74, 0x70, 0x76, 0x32, 0x50, 0x69, 0x67, 0x67, + 0x79, 0x62, 0x61, 0x63, 0x6b, 0x69, 0x6e, 0x67, 0x46, 0x6c, 0x61, 0x67, 0x12, 0x4e, 0x0a, 0x06, + 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x31, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x47, 0x74, - 0x70, 0x76, 0x31, 0x52, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x64, 0x2e, 0x43, 0x68, 0x6f, 0x69, - 0x63, 0x65, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x48, 0x00, 0x52, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, - 0x65, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x88, 0x01, 0x01, 0x12, - 0x16, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0d, 0x52, - 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x12, 0x42, 0x0a, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, - 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x6f, 0x74, 0x67, - 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x47, 0x74, 0x70, 0x76, - 0x31, 0x52, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x64, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, - 0x52, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x42, 0x0a, 0x09, 0x64, - 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, + 0x70, 0x76, 0x32, 0x50, 0x69, 0x67, 0x67, 0x79, 0x62, 0x61, 0x63, 0x6b, 0x69, 0x6e, 0x67, 0x46, + 0x6c, 0x61, 0x67, 0x2e, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x48, + 0x00, 0x52, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, + 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x05, 0x76, + 0x61, 0x6c, 0x75, 0x65, 0x88, 0x01, 0x01, 0x12, 0x16, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, + 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0d, 0x52, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x12, + 0x4a, 0x0a, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, + 0x46, 0x6c, 0x6f, 0x77, 0x47, 0x74, 0x70, 0x76, 0x32, 0x50, 0x69, 0x67, 0x67, 0x79, 0x62, 0x61, + 0x63, 0x6b, 0x69, 0x6e, 0x67, 0x46, 0x6c, 0x61, 0x67, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, + 0x52, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x4a, 0x0a, 0x09, 0x64, + 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, - 0x47, 0x74, 0x70, 0x76, 0x31, 0x52, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x64, 0x43, 0x6f, 0x75, - 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, - 0x47, 0x0a, 0x0b, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x5f, 0x74, 0x61, 0x67, 0x73, 0x18, 0x07, - 0x20, 0x03, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, - 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x47, 0x74, 0x70, 0x76, 0x31, 0x52, 0x65, 0x73, 0x65, 0x72, - 0x76, 0x65, 0x64, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x52, 0x0a, 0x6d, 0x65, + 0x47, 0x74, 0x70, 0x76, 0x32, 0x50, 0x69, 0x67, 0x67, 0x79, 0x62, 0x61, 0x63, 0x6b, 0x69, 0x6e, + 0x67, 0x46, 0x6c, 0x61, 0x67, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, 0x64, 0x65, + 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x4f, 0x0a, 0x0b, 0x6d, 0x65, 0x74, 0x72, 0x69, + 0x63, 0x5f, 0x74, 0x61, 0x67, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x6f, + 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x47, 0x74, + 0x70, 0x76, 0x32, 0x50, 0x69, 0x67, 0x67, 0x79, 0x62, 0x61, 0x63, 0x6b, 0x69, 0x6e, 0x67, 0x46, + 0x6c, 0x61, 0x67, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x52, 0x0a, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x73, 0x1a, 0x56, 0x0a, 0x06, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x22, 0x4c, 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x0a, 0x0b, 0x75, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, 0x76, @@ -104699,17 +120332,65 @@ var file_otg_proto_rawDesc = []byte{ 0x10, 0x03, 0x12, 0x0d, 0x0a, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x10, 0x04, 0x12, 0x0d, 0x0a, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x10, 0x05, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x42, 0x08, 0x0a, 0x06, 0x5f, - 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x8a, 0x01, 0x0a, 0x1c, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, - 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x47, 0x74, 0x70, 0x76, 0x31, 0x45, 0x46, 0x6c, 0x61, 0x67, 0x43, - 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x12, 0x19, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x00, 0x52, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x88, 0x01, - 0x01, 0x12, 0x17, 0x0a, 0x04, 0x73, 0x74, 0x65, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, - 0x01, 0x52, 0x04, 0x73, 0x74, 0x65, 0x70, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x63, 0x6f, - 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x02, 0x52, 0x05, 0x63, 0x6f, 0x75, - 0x6e, 0x74, 0x88, 0x01, 0x01, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x42, - 0x07, 0x0a, 0x05, 0x5f, 0x73, 0x74, 0x65, 0x70, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x63, 0x6f, 0x75, - 0x6e, 0x74, 0x22, 0x92, 0x01, 0x0a, 0x1e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, - 0x6f, 0x77, 0x47, 0x74, 0x70, 0x76, 0x31, 0x45, 0x46, 0x6c, 0x61, 0x67, 0x4d, 0x65, 0x74, 0x72, + 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x8d, 0x01, 0x0a, 0x1f, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, + 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x47, 0x74, 0x70, 0x76, 0x32, 0x54, 0x65, 0x69, 0x64, 0x46, 0x6c, + 0x61, 0x67, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x12, 0x19, 0x0a, 0x05, 0x73, 0x74, 0x61, + 0x72, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x00, 0x52, 0x05, 0x73, 0x74, 0x61, 0x72, + 0x74, 0x88, 0x01, 0x01, 0x12, 0x17, 0x0a, 0x04, 0x73, 0x74, 0x65, 0x70, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x0d, 0x48, 0x01, 0x52, 0x04, 0x73, 0x74, 0x65, 0x70, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, + 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x02, 0x52, 0x05, + 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x88, 0x01, 0x01, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x73, 0x74, 0x61, + 0x72, 0x74, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x73, 0x74, 0x65, 0x70, 0x42, 0x08, 0x0a, 0x06, 0x5f, + 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x95, 0x01, 0x0a, 0x21, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, + 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x47, 0x74, 0x70, 0x76, 0x32, 0x54, 0x65, 0x69, 0x64, 0x46, 0x6c, + 0x61, 0x67, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x12, 0x17, 0x0a, 0x04, 0x6e, + 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x04, 0x6e, 0x61, 0x6d, + 0x65, 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x88, 0x01, + 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x0d, 0x48, 0x02, 0x52, 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x88, 0x01, 0x01, 0x42, 0x07, + 0x0a, 0x05, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6f, 0x66, 0x66, 0x73, + 0x65, 0x74, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x22, 0xd3, 0x03, + 0x0a, 0x18, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x47, 0x74, 0x70, + 0x76, 0x32, 0x54, 0x65, 0x69, 0x64, 0x46, 0x6c, 0x61, 0x67, 0x12, 0x46, 0x0a, 0x06, 0x63, 0x68, + 0x6f, 0x69, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x29, 0x2e, 0x6f, 0x74, 0x67, + 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x47, 0x74, 0x70, 0x76, + 0x32, 0x54, 0x65, 0x69, 0x64, 0x46, 0x6c, 0x61, 0x67, 0x2e, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, + 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x48, 0x00, 0x52, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x88, + 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x0d, 0x48, 0x01, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x88, 0x01, 0x01, 0x12, 0x16, 0x0a, + 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0d, 0x52, 0x06, 0x76, + 0x61, 0x6c, 0x75, 0x65, 0x73, 0x12, 0x42, 0x0a, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, + 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, + 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x47, 0x74, 0x70, 0x76, 0x32, 0x54, + 0x65, 0x69, 0x64, 0x46, 0x6c, 0x61, 0x67, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, + 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x42, 0x0a, 0x09, 0x64, 0x65, 0x63, + 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x6f, + 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x47, 0x74, + 0x70, 0x76, 0x32, 0x54, 0x65, 0x69, 0x64, 0x46, 0x6c, 0x61, 0x67, 0x43, 0x6f, 0x75, 0x6e, 0x74, + 0x65, 0x72, 0x52, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x47, 0x0a, + 0x0b, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x5f, 0x74, 0x61, 0x67, 0x73, 0x18, 0x07, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, + 0x46, 0x6c, 0x6f, 0x77, 0x47, 0x74, 0x70, 0x76, 0x32, 0x54, 0x65, 0x69, 0x64, 0x46, 0x6c, 0x61, + 0x67, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x52, 0x0a, 0x6d, 0x65, 0x74, 0x72, + 0x69, 0x63, 0x54, 0x61, 0x67, 0x73, 0x1a, 0x56, 0x0a, 0x06, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, + 0x22, 0x4c, 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x0a, 0x0b, 0x75, 0x6e, 0x73, 0x70, + 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, 0x76, 0x61, 0x6c, + 0x75, 0x65, 0x10, 0x02, 0x12, 0x0a, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x10, 0x03, + 0x12, 0x0d, 0x0a, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x10, 0x04, 0x12, + 0x0d, 0x0a, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x10, 0x05, 0x42, 0x09, + 0x0a, 0x07, 0x5f, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x76, 0x61, + 0x6c, 0x75, 0x65, 0x22, 0x8b, 0x01, 0x0a, 0x1d, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, + 0x6c, 0x6f, 0x77, 0x47, 0x74, 0x70, 0x76, 0x32, 0x53, 0x70, 0x61, 0x72, 0x65, 0x31, 0x43, 0x6f, + 0x75, 0x6e, 0x74, 0x65, 0x72, 0x12, 0x19, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x0d, 0x48, 0x00, 0x52, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x88, 0x01, 0x01, + 0x12, 0x17, 0x0a, 0x04, 0x73, 0x74, 0x65, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, + 0x52, 0x04, 0x73, 0x74, 0x65, 0x70, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x63, 0x6f, 0x75, + 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x02, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, + 0x74, 0x88, 0x01, 0x01, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x42, 0x07, + 0x0a, 0x05, 0x5f, 0x73, 0x74, 0x65, 0x70, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x63, 0x6f, 0x75, 0x6e, + 0x74, 0x22, 0x93, 0x01, 0x0a, 0x1f, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, + 0x77, 0x47, 0x74, 0x70, 0x76, 0x32, 0x53, 0x70, 0x61, 0x72, 0x65, 0x31, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x12, 0x17, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, @@ -104717,121 +120398,127 @@ var file_otg_proto_rawDesc = []byte{ 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x02, 0x52, 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x88, 0x01, 0x01, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x42, 0x09, 0x0a, 0x07, - 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x22, 0xc4, 0x03, 0x0a, 0x15, 0x50, 0x61, 0x74, 0x74, - 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x47, 0x74, 0x70, 0x76, 0x31, 0x45, 0x46, 0x6c, 0x61, - 0x67, 0x12, 0x43, 0x0a, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x0e, 0x32, 0x26, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, - 0x6c, 0x6f, 0x77, 0x47, 0x74, 0x70, 0x76, 0x31, 0x45, 0x46, 0x6c, 0x61, 0x67, 0x2e, 0x43, 0x68, - 0x6f, 0x69, 0x63, 0x65, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x48, 0x00, 0x52, 0x06, 0x63, 0x68, 0x6f, - 0x69, 0x63, 0x65, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x88, 0x01, - 0x01, 0x12, 0x16, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, - 0x0d, 0x52, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x12, 0x3f, 0x0a, 0x09, 0x69, 0x6e, 0x63, - 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x6f, - 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x47, 0x74, - 0x70, 0x76, 0x31, 0x45, 0x46, 0x6c, 0x61, 0x67, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, - 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x3f, 0x0a, 0x09, 0x64, 0x65, - 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, - 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x47, - 0x74, 0x70, 0x76, 0x31, 0x45, 0x46, 0x6c, 0x61, 0x67, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, - 0x52, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x44, 0x0a, 0x0b, 0x6d, - 0x65, 0x74, 0x72, 0x69, 0x63, 0x5f, 0x74, 0x61, 0x67, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, - 0x32, 0x23, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, - 0x6f, 0x77, 0x47, 0x74, 0x70, 0x76, 0x31, 0x45, 0x46, 0x6c, 0x61, 0x67, 0x4d, 0x65, 0x74, 0x72, - 0x69, 0x63, 0x54, 0x61, 0x67, 0x52, 0x0a, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, - 0x73, 0x1a, 0x56, 0x0a, 0x06, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x22, 0x4c, 0x0a, 0x04, 0x45, - 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x0a, 0x0b, 0x75, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, - 0x65, 0x64, 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x10, 0x02, 0x12, - 0x0a, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x10, 0x03, 0x12, 0x0d, 0x0a, 0x09, 0x69, - 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x10, 0x04, 0x12, 0x0d, 0x0a, 0x09, 0x64, 0x65, - 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x10, 0x05, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x63, 0x68, - 0x6f, 0x69, 0x63, 0x65, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x8a, - 0x01, 0x0a, 0x1c, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x47, 0x74, - 0x70, 0x76, 0x31, 0x53, 0x46, 0x6c, 0x61, 0x67, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x12, + 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x22, 0xc9, 0x03, 0x0a, 0x16, 0x50, 0x61, 0x74, 0x74, + 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x47, 0x74, 0x70, 0x76, 0x32, 0x53, 0x70, 0x61, 0x72, + 0x65, 0x31, 0x12, 0x44, 0x0a, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x0e, 0x32, 0x27, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, + 0x46, 0x6c, 0x6f, 0x77, 0x47, 0x74, 0x70, 0x76, 0x32, 0x53, 0x70, 0x61, 0x72, 0x65, 0x31, 0x2e, + 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x48, 0x00, 0x52, 0x06, 0x63, + 0x68, 0x6f, 0x69, 0x63, 0x65, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, + 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, + 0x88, 0x01, 0x01, 0x12, 0x16, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x03, 0x20, + 0x03, 0x28, 0x0d, 0x52, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x12, 0x40, 0x0a, 0x09, 0x69, + 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, + 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, + 0x47, 0x74, 0x70, 0x76, 0x32, 0x53, 0x70, 0x61, 0x72, 0x65, 0x31, 0x43, 0x6f, 0x75, 0x6e, 0x74, + 0x65, 0x72, 0x52, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x40, 0x0a, + 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x22, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, + 0x6f, 0x77, 0x47, 0x74, 0x70, 0x76, 0x32, 0x53, 0x70, 0x61, 0x72, 0x65, 0x31, 0x43, 0x6f, 0x75, + 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, + 0x45, 0x0a, 0x0b, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x5f, 0x74, 0x61, 0x67, 0x73, 0x18, 0x07, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, + 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x47, 0x74, 0x70, 0x76, 0x32, 0x53, 0x70, 0x61, 0x72, 0x65, + 0x31, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x52, 0x0a, 0x6d, 0x65, 0x74, 0x72, + 0x69, 0x63, 0x54, 0x61, 0x67, 0x73, 0x1a, 0x56, 0x0a, 0x06, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, + 0x22, 0x4c, 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x0a, 0x0b, 0x75, 0x6e, 0x73, 0x70, + 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, 0x76, 0x61, 0x6c, + 0x75, 0x65, 0x10, 0x02, 0x12, 0x0a, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x10, 0x03, + 0x12, 0x0d, 0x0a, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x10, 0x04, 0x12, + 0x0d, 0x0a, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x10, 0x05, 0x42, 0x09, + 0x0a, 0x07, 0x5f, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x76, 0x61, + 0x6c, 0x75, 0x65, 0x22, 0x90, 0x01, 0x0a, 0x22, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, + 0x6c, 0x6f, 0x77, 0x47, 0x74, 0x70, 0x76, 0x32, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x54, + 0x79, 0x70, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x12, 0x19, 0x0a, 0x05, 0x73, 0x74, + 0x61, 0x72, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x00, 0x52, 0x05, 0x73, 0x74, 0x61, + 0x72, 0x74, 0x88, 0x01, 0x01, 0x12, 0x17, 0x0a, 0x04, 0x73, 0x74, 0x65, 0x70, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x04, 0x73, 0x74, 0x65, 0x70, 0x88, 0x01, 0x01, 0x12, 0x19, + 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x02, 0x52, + 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x88, 0x01, 0x01, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x73, 0x74, + 0x61, 0x72, 0x74, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x73, 0x74, 0x65, 0x70, 0x42, 0x08, 0x0a, 0x06, + 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x98, 0x01, 0x0a, 0x24, 0x50, 0x61, 0x74, 0x74, 0x65, + 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x47, 0x74, 0x70, 0x76, 0x32, 0x4d, 0x65, 0x73, 0x73, 0x61, + 0x67, 0x65, 0x54, 0x79, 0x70, 0x65, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x12, + 0x17, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, + 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x6f, 0x66, 0x66, 0x73, + 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x06, 0x6f, 0x66, 0x66, 0x73, + 0x65, 0x74, 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x02, 0x52, 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x88, + 0x01, 0x01, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x42, 0x09, 0x0a, 0x07, 0x5f, + 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, + 0x68, 0x22, 0xe2, 0x03, 0x0a, 0x1b, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, + 0x77, 0x47, 0x74, 0x70, 0x76, 0x32, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x54, 0x79, 0x70, + 0x65, 0x12, 0x49, 0x0a, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x0e, 0x32, 0x2c, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, + 0x6c, 0x6f, 0x77, 0x47, 0x74, 0x70, 0x76, 0x32, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x54, + 0x79, 0x70, 0x65, 0x2e, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x48, + 0x00, 0x52, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, + 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x05, 0x76, + 0x61, 0x6c, 0x75, 0x65, 0x88, 0x01, 0x01, 0x12, 0x16, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, + 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0d, 0x52, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x12, + 0x45, 0x0a, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, + 0x46, 0x6c, 0x6f, 0x77, 0x47, 0x74, 0x70, 0x76, 0x32, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, + 0x54, 0x79, 0x70, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, 0x69, 0x6e, 0x63, + 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x45, 0x0a, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, + 0x65, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x6f, 0x74, 0x67, 0x2e, + 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x47, 0x74, 0x70, 0x76, 0x32, + 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x54, 0x79, 0x70, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, + 0x65, 0x72, 0x52, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x4a, 0x0a, + 0x0b, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x5f, 0x74, 0x61, 0x67, 0x73, 0x18, 0x07, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, + 0x46, 0x6c, 0x6f, 0x77, 0x47, 0x74, 0x70, 0x76, 0x32, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, + 0x54, 0x79, 0x70, 0x65, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x52, 0x0a, 0x6d, + 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x73, 0x1a, 0x56, 0x0a, 0x06, 0x43, 0x68, 0x6f, + 0x69, 0x63, 0x65, 0x22, 0x4c, 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x0a, 0x0b, 0x75, + 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, + 0x76, 0x61, 0x6c, 0x75, 0x65, 0x10, 0x02, 0x12, 0x0a, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, + 0x73, 0x10, 0x03, 0x12, 0x0d, 0x0a, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, + 0x10, 0x04, 0x12, 0x0d, 0x0a, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x10, + 0x05, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x42, 0x08, 0x0a, 0x06, + 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x92, 0x01, 0x0a, 0x24, 0x50, 0x61, 0x74, 0x74, 0x65, + 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x47, 0x74, 0x70, 0x76, 0x32, 0x4d, 0x65, 0x73, 0x73, 0x61, + 0x67, 0x65, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x12, 0x19, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x00, 0x52, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x88, 0x01, 0x01, 0x12, 0x17, 0x0a, 0x04, 0x73, 0x74, 0x65, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x04, 0x73, 0x74, 0x65, 0x70, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x02, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x88, 0x01, 0x01, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x73, 0x74, 0x65, - 0x70, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x92, 0x01, 0x0a, 0x1e, - 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x47, 0x74, 0x70, 0x76, 0x31, - 0x53, 0x46, 0x6c, 0x61, 0x67, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x12, 0x17, - 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x04, - 0x6e, 0x61, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, - 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, - 0x74, 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x0d, 0x48, 0x02, 0x52, 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x88, 0x01, - 0x01, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6f, - 0x66, 0x66, 0x73, 0x65, 0x74, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, - 0x22, 0xc4, 0x03, 0x0a, 0x15, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, - 0x47, 0x74, 0x70, 0x76, 0x31, 0x53, 0x46, 0x6c, 0x61, 0x67, 0x12, 0x43, 0x0a, 0x06, 0x63, 0x68, - 0x6f, 0x69, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x26, 0x2e, 0x6f, 0x74, 0x67, + 0x70, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x9a, 0x01, 0x0a, 0x26, + 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x47, 0x74, 0x70, 0x76, 0x32, + 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x4d, 0x65, 0x74, + 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x12, 0x17, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, + 0x1b, 0x0a, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, + 0x01, 0x52, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, + 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x02, 0x52, 0x06, + 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x88, 0x01, 0x01, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x6e, 0x61, + 0x6d, 0x65, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x42, 0x09, 0x0a, + 0x07, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x22, 0xec, 0x03, 0x0a, 0x1d, 0x50, 0x61, 0x74, + 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x47, 0x74, 0x70, 0x76, 0x32, 0x4d, 0x65, 0x73, + 0x73, 0x61, 0x67, 0x65, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x12, 0x4b, 0x0a, 0x06, 0x63, 0x68, + 0x6f, 0x69, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2e, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x47, 0x74, 0x70, 0x76, - 0x31, 0x53, 0x46, 0x6c, 0x61, 0x67, 0x2e, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x2e, 0x45, 0x6e, - 0x75, 0x6d, 0x48, 0x00, 0x52, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x88, 0x01, 0x01, 0x12, - 0x19, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, - 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x88, 0x01, 0x01, 0x12, 0x16, 0x0a, 0x06, 0x76, 0x61, - 0x6c, 0x75, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0d, 0x52, 0x06, 0x76, 0x61, 0x6c, 0x75, - 0x65, 0x73, 0x12, 0x3f, 0x0a, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, - 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, - 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x47, 0x74, 0x70, 0x76, 0x31, 0x53, 0x46, 0x6c, 0x61, - 0x67, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, - 0x65, 0x6e, 0x74, 0x12, 0x3f, 0x0a, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, - 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, - 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x47, 0x74, 0x70, 0x76, 0x31, 0x53, 0x46, 0x6c, - 0x61, 0x67, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, - 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x44, 0x0a, 0x0b, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x5f, 0x74, - 0x61, 0x67, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x6f, 0x74, 0x67, 0x2e, - 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x47, 0x74, 0x70, 0x76, 0x31, - 0x53, 0x46, 0x6c, 0x61, 0x67, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x52, 0x0a, - 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x73, 0x1a, 0x56, 0x0a, 0x06, 0x43, 0x68, - 0x6f, 0x69, 0x63, 0x65, 0x22, 0x4c, 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x0a, 0x0b, - 0x75, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x10, 0x00, 0x12, 0x09, 0x0a, - 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x10, 0x02, 0x12, 0x0a, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, - 0x65, 0x73, 0x10, 0x03, 0x12, 0x0d, 0x0a, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, - 0x74, 0x10, 0x04, 0x12, 0x0d, 0x0a, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, - 0x10, 0x05, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x42, 0x08, 0x0a, - 0x06, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x8b, 0x01, 0x0a, 0x1d, 0x50, 0x61, 0x74, 0x74, - 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x47, 0x74, 0x70, 0x76, 0x31, 0x50, 0x6e, 0x46, 0x6c, - 0x61, 0x67, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x12, 0x19, 0x0a, 0x05, 0x73, 0x74, 0x61, - 0x72, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x00, 0x52, 0x05, 0x73, 0x74, 0x61, 0x72, - 0x74, 0x88, 0x01, 0x01, 0x12, 0x17, 0x0a, 0x04, 0x73, 0x74, 0x65, 0x70, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x0d, 0x48, 0x01, 0x52, 0x04, 0x73, 0x74, 0x65, 0x70, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, - 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x02, 0x52, 0x05, - 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x88, 0x01, 0x01, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x73, 0x74, 0x61, - 0x72, 0x74, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x73, 0x74, 0x65, 0x70, 0x42, 0x08, 0x0a, 0x06, 0x5f, - 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x93, 0x01, 0x0a, 0x1f, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, - 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x47, 0x74, 0x70, 0x76, 0x31, 0x50, 0x6e, 0x46, 0x6c, 0x61, 0x67, - 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x12, 0x17, 0x0a, 0x04, 0x6e, 0x61, 0x6d, - 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x88, - 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x0d, 0x48, 0x01, 0x52, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x88, 0x01, 0x01, 0x12, - 0x1b, 0x0a, 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x48, - 0x02, 0x52, 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x88, 0x01, 0x01, 0x42, 0x07, 0x0a, 0x05, - 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, - 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x22, 0xc9, 0x03, 0x0a, 0x16, - 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x47, 0x74, 0x70, 0x76, 0x31, - 0x50, 0x6e, 0x46, 0x6c, 0x61, 0x67, 0x12, 0x44, 0x0a, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x27, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, - 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x47, 0x74, 0x70, 0x76, 0x31, 0x50, 0x6e, 0x46, - 0x6c, 0x61, 0x67, 0x2e, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x48, - 0x00, 0x52, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, - 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x05, 0x76, - 0x61, 0x6c, 0x75, 0x65, 0x88, 0x01, 0x01, 0x12, 0x16, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, - 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0d, 0x52, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x12, - 0x40, 0x0a, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, - 0x46, 0x6c, 0x6f, 0x77, 0x47, 0x74, 0x70, 0x76, 0x31, 0x50, 0x6e, 0x46, 0x6c, 0x61, 0x67, 0x43, - 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, - 0x74, 0x12, 0x40, 0x0a, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x06, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, - 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x47, 0x74, 0x70, 0x76, 0x31, 0x50, 0x6e, 0x46, 0x6c, 0x61, - 0x67, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, - 0x65, 0x6e, 0x74, 0x12, 0x45, 0x0a, 0x0b, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x5f, 0x74, 0x61, - 0x67, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, - 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x47, 0x74, 0x70, 0x76, 0x31, 0x50, - 0x6e, 0x46, 0x6c, 0x61, 0x67, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x52, 0x0a, + 0x32, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x2e, 0x43, + 0x68, 0x6f, 0x69, 0x63, 0x65, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x48, 0x00, 0x52, 0x06, 0x63, 0x68, + 0x6f, 0x69, 0x63, 0x65, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x88, + 0x01, 0x01, 0x12, 0x16, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, + 0x28, 0x0d, 0x52, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x12, 0x47, 0x0a, 0x09, 0x69, 0x6e, + 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, + 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x47, + 0x74, 0x70, 0x76, 0x32, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x4c, 0x65, 0x6e, 0x67, 0x74, + 0x68, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, + 0x65, 0x6e, 0x74, 0x12, 0x47, 0x0a, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, + 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, + 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x47, 0x74, 0x70, 0x76, 0x32, 0x4d, 0x65, 0x73, + 0x73, 0x61, 0x67, 0x65, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, + 0x72, 0x52, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x4c, 0x0a, 0x0b, + 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x5f, 0x74, 0x61, 0x67, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x2b, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, + 0x6c, 0x6f, 0x77, 0x47, 0x74, 0x70, 0x76, 0x32, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x4c, + 0x65, 0x6e, 0x67, 0x74, 0x68, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x52, 0x0a, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x73, 0x1a, 0x56, 0x0a, 0x06, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x22, 0x4c, 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x0a, 0x0b, 0x75, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x10, 0x00, 0x12, 0x09, 0x0a, @@ -104839,18 +120526,114 @@ var file_otg_proto_rawDesc = []byte{ 0x65, 0x73, 0x10, 0x03, 0x12, 0x0d, 0x0a, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x10, 0x04, 0x12, 0x0d, 0x0a, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x10, 0x05, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x42, 0x08, 0x0a, - 0x06, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x90, 0x01, 0x0a, 0x22, 0x50, 0x61, 0x74, 0x74, - 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x47, 0x74, 0x70, 0x76, 0x31, 0x4d, 0x65, 0x73, 0x73, - 0x61, 0x67, 0x65, 0x54, 0x79, 0x70, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x12, 0x19, - 0x0a, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x00, 0x52, - 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x88, 0x01, 0x01, 0x12, 0x17, 0x0a, 0x04, 0x73, 0x74, 0x65, - 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x04, 0x73, 0x74, 0x65, 0x70, 0x88, - 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x0d, 0x48, 0x02, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x88, 0x01, 0x01, 0x42, 0x08, 0x0a, - 0x06, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x73, 0x74, 0x65, 0x70, - 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x98, 0x01, 0x0a, 0x24, 0x50, - 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x47, 0x74, 0x70, 0x76, 0x31, 0x4d, - 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x54, 0x79, 0x70, 0x65, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, + 0x06, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x89, 0x01, 0x0a, 0x1b, 0x50, 0x61, 0x74, 0x74, + 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x47, 0x74, 0x70, 0x76, 0x32, 0x54, 0x65, 0x69, 0x64, + 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x12, 0x19, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x00, 0x52, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x88, + 0x01, 0x01, 0x12, 0x17, 0x0a, 0x04, 0x73, 0x74, 0x65, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, + 0x48, 0x01, 0x52, 0x04, 0x73, 0x74, 0x65, 0x70, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x63, + 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x02, 0x52, 0x05, 0x63, 0x6f, + 0x75, 0x6e, 0x74, 0x88, 0x01, 0x01, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, + 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x73, 0x74, 0x65, 0x70, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x63, 0x6f, + 0x75, 0x6e, 0x74, 0x22, 0x91, 0x01, 0x0a, 0x1d, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, + 0x6c, 0x6f, 0x77, 0x47, 0x74, 0x70, 0x76, 0x32, 0x54, 0x65, 0x69, 0x64, 0x4d, 0x65, 0x74, 0x72, + 0x69, 0x63, 0x54, 0x61, 0x67, 0x12, 0x17, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, 0x1b, + 0x0a, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, + 0x52, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x6c, + 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x02, 0x52, 0x06, 0x6c, + 0x65, 0x6e, 0x67, 0x74, 0x68, 0x88, 0x01, 0x01, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x6e, 0x61, 0x6d, + 0x65, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x42, 0x09, 0x0a, 0x07, + 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x22, 0xbf, 0x03, 0x0a, 0x14, 0x50, 0x61, 0x74, 0x74, + 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x47, 0x74, 0x70, 0x76, 0x32, 0x54, 0x65, 0x69, 0x64, + 0x12, 0x42, 0x0a, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, + 0x32, 0x25, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, + 0x6f, 0x77, 0x47, 0x74, 0x70, 0x76, 0x32, 0x54, 0x65, 0x69, 0x64, 0x2e, 0x43, 0x68, 0x6f, 0x69, + 0x63, 0x65, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x48, 0x00, 0x52, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, + 0x65, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x88, 0x01, 0x01, 0x12, + 0x16, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0d, 0x52, + 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x12, 0x3e, 0x0a, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, + 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x6f, 0x74, 0x67, + 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x47, 0x74, 0x70, 0x76, + 0x32, 0x54, 0x65, 0x69, 0x64, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, 0x69, 0x6e, + 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x3e, 0x0a, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, + 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x6f, 0x74, 0x67, + 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x47, 0x74, 0x70, 0x76, + 0x32, 0x54, 0x65, 0x69, 0x64, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, 0x64, 0x65, + 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x43, 0x0a, 0x0b, 0x6d, 0x65, 0x74, 0x72, 0x69, + 0x63, 0x5f, 0x74, 0x61, 0x67, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x6f, + 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x47, 0x74, + 0x70, 0x76, 0x32, 0x54, 0x65, 0x69, 0x64, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, + 0x52, 0x0a, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x73, 0x1a, 0x56, 0x0a, 0x06, + 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x22, 0x4c, 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0f, + 0x0a, 0x0b, 0x75, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x10, 0x00, 0x12, + 0x09, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x10, 0x02, 0x12, 0x0a, 0x0a, 0x06, 0x76, 0x61, + 0x6c, 0x75, 0x65, 0x73, 0x10, 0x03, 0x12, 0x0d, 0x0a, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, + 0x65, 0x6e, 0x74, 0x10, 0x04, 0x12, 0x0d, 0x0a, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, + 0x6e, 0x74, 0x10, 0x05, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x42, + 0x08, 0x0a, 0x06, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x93, 0x01, 0x0a, 0x25, 0x50, 0x61, + 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x47, 0x74, 0x70, 0x76, 0x32, 0x53, 0x65, + 0x71, 0x75, 0x65, 0x6e, 0x63, 0x65, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x43, 0x6f, 0x75, 0x6e, + 0x74, 0x65, 0x72, 0x12, 0x19, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x0d, 0x48, 0x00, 0x52, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x88, 0x01, 0x01, 0x12, 0x17, + 0x0a, 0x04, 0x73, 0x74, 0x65, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x04, + 0x73, 0x74, 0x65, 0x70, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x02, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x88, + 0x01, 0x01, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x42, 0x07, 0x0a, 0x05, + 0x5f, 0x73, 0x74, 0x65, 0x70, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x22, + 0x9b, 0x01, 0x0a, 0x27, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x47, + 0x74, 0x70, 0x76, 0x32, 0x53, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x65, 0x4e, 0x75, 0x6d, 0x62, + 0x65, 0x72, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x12, 0x17, 0x0a, 0x04, 0x6e, + 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x04, 0x6e, 0x61, 0x6d, + 0x65, 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x88, 0x01, + 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x0d, 0x48, 0x02, 0x52, 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x88, 0x01, 0x01, 0x42, 0x07, + 0x0a, 0x05, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6f, 0x66, 0x66, 0x73, + 0x65, 0x74, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x22, 0xf1, 0x03, + 0x0a, 0x1e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x47, 0x74, 0x70, + 0x76, 0x32, 0x53, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x65, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, + 0x12, 0x4c, 0x0a, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, + 0x32, 0x2f, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, + 0x6f, 0x77, 0x47, 0x74, 0x70, 0x76, 0x32, 0x53, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x65, 0x4e, + 0x75, 0x6d, 0x62, 0x65, 0x72, 0x2e, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x2e, 0x45, 0x6e, 0x75, + 0x6d, 0x48, 0x00, 0x52, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x88, 0x01, 0x01, 0x12, 0x19, + 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, + 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x88, 0x01, 0x01, 0x12, 0x16, 0x0a, 0x06, 0x76, 0x61, 0x6c, + 0x75, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0d, 0x52, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, + 0x73, 0x12, 0x48, 0x0a, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x05, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, + 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x47, 0x74, 0x70, 0x76, 0x32, 0x53, 0x65, 0x71, 0x75, 0x65, + 0x6e, 0x63, 0x65, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, + 0x52, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x48, 0x0a, 0x09, 0x64, + 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, + 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, + 0x47, 0x74, 0x70, 0x76, 0x32, 0x53, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x65, 0x4e, 0x75, 0x6d, + 0x62, 0x65, 0x72, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, 0x64, 0x65, 0x63, 0x72, + 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x4d, 0x0a, 0x0b, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x5f, + 0x74, 0x61, 0x67, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x6f, 0x74, 0x67, + 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x47, 0x74, 0x70, 0x76, + 0x32, 0x53, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x65, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x4d, + 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x52, 0x0a, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, + 0x54, 0x61, 0x67, 0x73, 0x1a, 0x56, 0x0a, 0x06, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x22, 0x4c, + 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x0a, 0x0b, 0x75, 0x6e, 0x73, 0x70, 0x65, 0x63, + 0x69, 0x66, 0x69, 0x65, 0x64, 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, + 0x10, 0x02, 0x12, 0x0a, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x10, 0x03, 0x12, 0x0d, + 0x0a, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x10, 0x04, 0x12, 0x0d, 0x0a, + 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x10, 0x05, 0x42, 0x09, 0x0a, 0x07, + 0x5f, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x76, 0x61, 0x6c, 0x75, + 0x65, 0x22, 0x8b, 0x01, 0x0a, 0x1d, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, + 0x77, 0x47, 0x74, 0x70, 0x76, 0x32, 0x53, 0x70, 0x61, 0x72, 0x65, 0x32, 0x43, 0x6f, 0x75, 0x6e, + 0x74, 0x65, 0x72, 0x12, 0x19, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x0d, 0x48, 0x00, 0x52, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x88, 0x01, 0x01, 0x12, 0x17, + 0x0a, 0x04, 0x73, 0x74, 0x65, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x04, + 0x73, 0x74, 0x65, 0x70, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x02, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x88, + 0x01, 0x01, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x42, 0x07, 0x0a, 0x05, + 0x5f, 0x73, 0x74, 0x65, 0x70, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x22, + 0x93, 0x01, 0x0a, 0x1f, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x47, + 0x74, 0x70, 0x76, 0x32, 0x53, 0x70, 0x61, 0x72, 0x65, 0x32, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x12, 0x17, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x06, @@ -104858,39 +120641,86 @@ var file_otg_proto_rawDesc = []byte{ 0x67, 0x74, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x02, 0x52, 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x88, 0x01, 0x01, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6c, - 0x65, 0x6e, 0x67, 0x74, 0x68, 0x22, 0xe2, 0x03, 0x0a, 0x1b, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, - 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x47, 0x74, 0x70, 0x76, 0x31, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, - 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x49, 0x0a, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2c, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, - 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x47, 0x74, 0x70, 0x76, 0x31, 0x4d, 0x65, 0x73, 0x73, - 0x61, 0x67, 0x65, 0x54, 0x79, 0x70, 0x65, 0x2e, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x2e, 0x45, - 0x6e, 0x75, 0x6d, 0x48, 0x00, 0x52, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x88, 0x01, 0x01, - 0x12, 0x19, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, - 0x01, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x88, 0x01, 0x01, 0x12, 0x16, 0x0a, 0x06, 0x76, - 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0d, 0x52, 0x06, 0x76, 0x61, 0x6c, - 0x75, 0x65, 0x73, 0x12, 0x45, 0x0a, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, - 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, - 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x47, 0x74, 0x70, 0x76, 0x31, 0x4d, 0x65, 0x73, - 0x73, 0x61, 0x67, 0x65, 0x54, 0x79, 0x70, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, - 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x45, 0x0a, 0x09, 0x64, 0x65, - 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, - 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x47, - 0x74, 0x70, 0x76, 0x31, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x54, 0x79, 0x70, 0x65, 0x43, - 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, - 0x74, 0x12, 0x4a, 0x0a, 0x0b, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x5f, 0x74, 0x61, 0x67, 0x73, - 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, - 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x47, 0x74, 0x70, 0x76, 0x31, 0x4d, 0x65, 0x73, - 0x73, 0x61, 0x67, 0x65, 0x54, 0x79, 0x70, 0x65, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, - 0x67, 0x52, 0x0a, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x73, 0x1a, 0x56, 0x0a, - 0x06, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x22, 0x4c, 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, - 0x0f, 0x0a, 0x0b, 0x75, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x10, 0x00, - 0x12, 0x09, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x10, 0x02, 0x12, 0x0a, 0x0a, 0x06, 0x76, - 0x61, 0x6c, 0x75, 0x65, 0x73, 0x10, 0x03, 0x12, 0x0d, 0x0a, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, - 0x6d, 0x65, 0x6e, 0x74, 0x10, 0x04, 0x12, 0x0d, 0x0a, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, - 0x65, 0x6e, 0x74, 0x10, 0x05, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, - 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x92, 0x01, 0x0a, 0x24, 0x50, - 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x47, 0x74, 0x70, 0x76, 0x31, 0x4d, - 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x43, 0x6f, 0x75, 0x6e, + 0x65, 0x6e, 0x67, 0x74, 0x68, 0x22, 0xc9, 0x03, 0x0a, 0x16, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, + 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x47, 0x74, 0x70, 0x76, 0x32, 0x53, 0x70, 0x61, 0x72, 0x65, 0x32, + 0x12, 0x44, 0x0a, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, + 0x32, 0x27, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, + 0x6f, 0x77, 0x47, 0x74, 0x70, 0x76, 0x32, 0x53, 0x70, 0x61, 0x72, 0x65, 0x32, 0x2e, 0x43, 0x68, + 0x6f, 0x69, 0x63, 0x65, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x48, 0x00, 0x52, 0x06, 0x63, 0x68, 0x6f, + 0x69, 0x63, 0x65, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x88, 0x01, + 0x01, 0x12, 0x16, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, + 0x0d, 0x52, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x12, 0x40, 0x0a, 0x09, 0x69, 0x6e, 0x63, + 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x6f, + 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x47, 0x74, + 0x70, 0x76, 0x32, 0x53, 0x70, 0x61, 0x72, 0x65, 0x32, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, + 0x52, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x40, 0x0a, 0x09, 0x64, + 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, + 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, + 0x47, 0x74, 0x70, 0x76, 0x32, 0x53, 0x70, 0x61, 0x72, 0x65, 0x32, 0x43, 0x6f, 0x75, 0x6e, 0x74, + 0x65, 0x72, 0x52, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x45, 0x0a, + 0x0b, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x5f, 0x74, 0x61, 0x67, 0x73, 0x18, 0x07, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, + 0x46, 0x6c, 0x6f, 0x77, 0x47, 0x74, 0x70, 0x76, 0x32, 0x53, 0x70, 0x61, 0x72, 0x65, 0x32, 0x4d, + 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x52, 0x0a, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, + 0x54, 0x61, 0x67, 0x73, 0x1a, 0x56, 0x0a, 0x06, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x22, 0x4c, + 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x0a, 0x0b, 0x75, 0x6e, 0x73, 0x70, 0x65, 0x63, + 0x69, 0x66, 0x69, 0x65, 0x64, 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, + 0x10, 0x02, 0x12, 0x0a, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x10, 0x03, 0x12, 0x0d, + 0x0a, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x10, 0x04, 0x12, 0x0d, 0x0a, + 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x10, 0x05, 0x42, 0x09, 0x0a, 0x07, + 0x5f, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x76, 0x61, 0x6c, 0x75, + 0x65, 0x22, 0x8f, 0x01, 0x0a, 0x21, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, + 0x77, 0x41, 0x72, 0x70, 0x48, 0x61, 0x72, 0x64, 0x77, 0x61, 0x72, 0x65, 0x54, 0x79, 0x70, 0x65, + 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x12, 0x19, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x00, 0x52, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x88, + 0x01, 0x01, 0x12, 0x17, 0x0a, 0x04, 0x73, 0x74, 0x65, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, + 0x48, 0x01, 0x52, 0x04, 0x73, 0x74, 0x65, 0x70, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x63, + 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x02, 0x52, 0x05, 0x63, 0x6f, + 0x75, 0x6e, 0x74, 0x88, 0x01, 0x01, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, + 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x73, 0x74, 0x65, 0x70, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x63, 0x6f, + 0x75, 0x6e, 0x74, 0x22, 0x97, 0x01, 0x0a, 0x23, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, + 0x6c, 0x6f, 0x77, 0x41, 0x72, 0x70, 0x48, 0x61, 0x72, 0x64, 0x77, 0x61, 0x72, 0x65, 0x54, 0x79, + 0x70, 0x65, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x12, 0x17, 0x0a, 0x04, 0x6e, + 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x04, 0x6e, 0x61, 0x6d, + 0x65, 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x88, 0x01, + 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x0d, 0x48, 0x02, 0x52, 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x88, 0x01, 0x01, 0x42, 0x07, + 0x0a, 0x05, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6f, 0x66, 0x66, 0x73, + 0x65, 0x74, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x22, 0xdd, 0x03, + 0x0a, 0x1a, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x41, 0x72, 0x70, + 0x48, 0x61, 0x72, 0x64, 0x77, 0x61, 0x72, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x48, 0x0a, 0x06, + 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2b, 0x2e, 0x6f, + 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x41, 0x72, + 0x70, 0x48, 0x61, 0x72, 0x64, 0x77, 0x61, 0x72, 0x65, 0x54, 0x79, 0x70, 0x65, 0x2e, 0x43, 0x68, + 0x6f, 0x69, 0x63, 0x65, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x48, 0x00, 0x52, 0x06, 0x63, 0x68, 0x6f, + 0x69, 0x63, 0x65, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x88, 0x01, + 0x01, 0x12, 0x16, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, + 0x0d, 0x52, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x12, 0x44, 0x0a, 0x09, 0x69, 0x6e, 0x63, + 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x6f, + 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x41, 0x72, + 0x70, 0x48, 0x61, 0x72, 0x64, 0x77, 0x61, 0x72, 0x65, 0x54, 0x79, 0x70, 0x65, 0x43, 0x6f, 0x75, + 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, + 0x44, 0x0a, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, + 0x46, 0x6c, 0x6f, 0x77, 0x41, 0x72, 0x70, 0x48, 0x61, 0x72, 0x64, 0x77, 0x61, 0x72, 0x65, 0x54, + 0x79, 0x70, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, 0x64, 0x65, 0x63, 0x72, + 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x49, 0x0a, 0x0b, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x5f, + 0x74, 0x61, 0x67, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x6f, 0x74, 0x67, + 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x41, 0x72, 0x70, 0x48, + 0x61, 0x72, 0x64, 0x77, 0x61, 0x72, 0x65, 0x54, 0x79, 0x70, 0x65, 0x4d, 0x65, 0x74, 0x72, 0x69, + 0x63, 0x54, 0x61, 0x67, 0x52, 0x0a, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x73, + 0x1a, 0x56, 0x0a, 0x06, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x22, 0x4c, 0x0a, 0x04, 0x45, 0x6e, + 0x75, 0x6d, 0x12, 0x0f, 0x0a, 0x0b, 0x75, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, + 0x64, 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x10, 0x02, 0x12, 0x0a, + 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x10, 0x03, 0x12, 0x0d, 0x0a, 0x09, 0x69, 0x6e, + 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x10, 0x04, 0x12, 0x0d, 0x0a, 0x09, 0x64, 0x65, 0x63, + 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x10, 0x05, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x63, 0x68, 0x6f, + 0x69, 0x63, 0x65, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x8f, 0x01, + 0x0a, 0x21, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x41, 0x72, 0x70, + 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x12, 0x19, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x00, 0x52, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x88, 0x01, 0x01, 0x12, 0x17, 0x0a, 0x04, 0x73, 0x74, 0x65, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x04, @@ -104898,85 +120728,137 @@ var file_otg_proto_rawDesc = []byte{ 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x02, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x88, 0x01, 0x01, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x73, 0x74, 0x65, 0x70, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x22, - 0x9a, 0x01, 0x0a, 0x26, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x47, - 0x74, 0x70, 0x76, 0x31, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x4c, 0x65, 0x6e, 0x67, 0x74, - 0x68, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x12, 0x17, 0x0a, 0x04, 0x6e, 0x61, - 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, - 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x88, 0x01, 0x01, - 0x12, 0x1b, 0x0a, 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, - 0x48, 0x02, 0x52, 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x88, 0x01, 0x01, 0x42, 0x07, 0x0a, - 0x05, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6f, 0x66, 0x66, 0x73, 0x65, - 0x74, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x22, 0xec, 0x03, 0x0a, - 0x1d, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x47, 0x74, 0x70, 0x76, - 0x31, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x12, 0x4b, - 0x0a, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2e, + 0x97, 0x01, 0x0a, 0x23, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x41, + 0x72, 0x70, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x4d, 0x65, + 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x12, 0x17, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x88, 0x01, 0x01, + 0x12, 0x1b, 0x0a, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, + 0x48, 0x01, 0x52, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, + 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x02, 0x52, + 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x88, 0x01, 0x01, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x6e, + 0x61, 0x6d, 0x65, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x42, 0x09, + 0x0a, 0x07, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x22, 0xdd, 0x03, 0x0a, 0x1a, 0x50, 0x61, + 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x41, 0x72, 0x70, 0x50, 0x72, 0x6f, 0x74, + 0x6f, 0x63, 0x6f, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x12, 0x48, 0x0a, 0x06, 0x63, 0x68, 0x6f, 0x69, + 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2b, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, + 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x41, 0x72, 0x70, 0x50, 0x72, 0x6f, + 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x2e, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, + 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x48, 0x00, 0x52, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x88, + 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x0d, 0x48, 0x01, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x88, 0x01, 0x01, 0x12, 0x16, 0x0a, + 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0d, 0x52, 0x06, 0x76, + 0x61, 0x6c, 0x75, 0x65, 0x73, 0x12, 0x44, 0x0a, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, + 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, + 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x41, 0x72, 0x70, 0x50, 0x72, 0x6f, + 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, + 0x52, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x44, 0x0a, 0x09, 0x64, + 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, - 0x47, 0x74, 0x70, 0x76, 0x31, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x4c, 0x65, 0x6e, 0x67, - 0x74, 0x68, 0x2e, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x48, 0x00, - 0x52, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x76, - 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x05, 0x76, 0x61, - 0x6c, 0x75, 0x65, 0x88, 0x01, 0x01, 0x12, 0x16, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, - 0x18, 0x03, 0x20, 0x03, 0x28, 0x0d, 0x52, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x12, 0x47, - 0x0a, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x29, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, - 0x6c, 0x6f, 0x77, 0x47, 0x74, 0x70, 0x76, 0x31, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x4c, - 0x65, 0x6e, 0x67, 0x74, 0x68, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, 0x69, 0x6e, - 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x47, 0x0a, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, - 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x6f, 0x74, 0x67, - 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x47, 0x74, 0x70, 0x76, - 0x31, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x43, 0x6f, - 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, - 0x12, 0x4c, 0x0a, 0x0b, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x5f, 0x74, 0x61, 0x67, 0x73, 0x18, - 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, - 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x47, 0x74, 0x70, 0x76, 0x31, 0x4d, 0x65, 0x73, 0x73, - 0x61, 0x67, 0x65, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, - 0x61, 0x67, 0x52, 0x0a, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x73, 0x1a, 0x56, - 0x0a, 0x06, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x22, 0x4c, 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, - 0x12, 0x0f, 0x0a, 0x0b, 0x75, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x10, - 0x00, 0x12, 0x09, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x10, 0x02, 0x12, 0x0a, 0x0a, 0x06, - 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x10, 0x03, 0x12, 0x0d, 0x0a, 0x09, 0x69, 0x6e, 0x63, 0x72, - 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x10, 0x04, 0x12, 0x0d, 0x0a, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, - 0x6d, 0x65, 0x6e, 0x74, 0x10, 0x05, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x63, 0x68, 0x6f, 0x69, 0x63, - 0x65, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x89, 0x01, 0x0a, 0x1b, - 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x47, 0x74, 0x70, 0x76, 0x31, - 0x54, 0x65, 0x69, 0x64, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x12, 0x19, 0x0a, 0x05, 0x73, - 0x74, 0x61, 0x72, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x00, 0x52, 0x05, 0x73, 0x74, - 0x61, 0x72, 0x74, 0x88, 0x01, 0x01, 0x12, 0x17, 0x0a, 0x04, 0x73, 0x74, 0x65, 0x70, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x04, 0x73, 0x74, 0x65, 0x70, 0x88, 0x01, 0x01, 0x12, - 0x19, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x02, - 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x88, 0x01, 0x01, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x73, - 0x74, 0x61, 0x72, 0x74, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x73, 0x74, 0x65, 0x70, 0x42, 0x08, 0x0a, - 0x06, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x91, 0x01, 0x0a, 0x1d, 0x50, 0x61, 0x74, 0x74, - 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x47, 0x74, 0x70, 0x76, 0x31, 0x54, 0x65, 0x69, 0x64, - 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x12, 0x17, 0x0a, 0x04, 0x6e, 0x61, 0x6d, - 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x88, - 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x0d, 0x48, 0x01, 0x52, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x88, 0x01, 0x01, 0x12, - 0x1b, 0x0a, 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x48, - 0x02, 0x52, 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x88, 0x01, 0x01, 0x42, 0x07, 0x0a, 0x05, - 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, - 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x22, 0xbf, 0x03, 0x0a, 0x14, - 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x47, 0x74, 0x70, 0x76, 0x31, - 0x54, 0x65, 0x69, 0x64, 0x12, 0x42, 0x0a, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x0e, 0x32, 0x25, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, - 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x47, 0x74, 0x70, 0x76, 0x31, 0x54, 0x65, 0x69, 0x64, 0x2e, - 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x48, 0x00, 0x52, 0x06, 0x63, - 0x68, 0x6f, 0x69, 0x63, 0x65, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, - 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, - 0x88, 0x01, 0x01, 0x12, 0x16, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x03, 0x20, - 0x03, 0x28, 0x0d, 0x52, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x12, 0x3e, 0x0a, 0x09, 0x69, - 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, + 0x41, 0x72, 0x70, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x43, + 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, + 0x74, 0x12, 0x49, 0x0a, 0x0b, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x5f, 0x74, 0x61, 0x67, 0x73, + 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, + 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x41, 0x72, 0x70, 0x50, 0x72, 0x6f, 0x74, 0x6f, + 0x63, 0x6f, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, + 0x52, 0x0a, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x73, 0x1a, 0x56, 0x0a, 0x06, + 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x22, 0x4c, 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0f, + 0x0a, 0x0b, 0x75, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x10, 0x00, 0x12, + 0x09, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x10, 0x02, 0x12, 0x0a, 0x0a, 0x06, 0x76, 0x61, + 0x6c, 0x75, 0x65, 0x73, 0x10, 0x03, 0x12, 0x0d, 0x0a, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, + 0x65, 0x6e, 0x74, 0x10, 0x04, 0x12, 0x0d, 0x0a, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, + 0x6e, 0x74, 0x10, 0x05, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x42, + 0x08, 0x0a, 0x06, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x91, 0x01, 0x0a, 0x23, 0x50, 0x61, + 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x41, 0x72, 0x70, 0x48, 0x61, 0x72, 0x64, + 0x77, 0x61, 0x72, 0x65, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, + 0x72, 0x12, 0x19, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, + 0x48, 0x00, 0x52, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x88, 0x01, 0x01, 0x12, 0x17, 0x0a, 0x04, + 0x73, 0x74, 0x65, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x04, 0x73, 0x74, + 0x65, 0x70, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x0d, 0x48, 0x02, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x88, 0x01, 0x01, + 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x73, + 0x74, 0x65, 0x70, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x99, 0x01, + 0x0a, 0x25, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x41, 0x72, 0x70, + 0x48, 0x61, 0x72, 0x64, 0x77, 0x61, 0x72, 0x65, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x4d, 0x65, + 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x12, 0x17, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x88, 0x01, 0x01, + 0x12, 0x1b, 0x0a, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, + 0x48, 0x01, 0x52, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, + 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x02, 0x52, + 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x88, 0x01, 0x01, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x6e, + 0x61, 0x6d, 0x65, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x42, 0x09, + 0x0a, 0x07, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x22, 0xe7, 0x03, 0x0a, 0x1c, 0x50, 0x61, + 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x41, 0x72, 0x70, 0x48, 0x61, 0x72, 0x64, + 0x77, 0x61, 0x72, 0x65, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x12, 0x4a, 0x0a, 0x06, 0x63, 0x68, + 0x6f, 0x69, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2d, 0x2e, 0x6f, 0x74, 0x67, + 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x41, 0x72, 0x70, 0x48, + 0x61, 0x72, 0x64, 0x77, 0x61, 0x72, 0x65, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x2e, 0x43, 0x68, + 0x6f, 0x69, 0x63, 0x65, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x48, 0x00, 0x52, 0x06, 0x63, 0x68, 0x6f, + 0x69, 0x63, 0x65, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x88, 0x01, + 0x01, 0x12, 0x16, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, + 0x0d, 0x52, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x12, 0x46, 0x0a, 0x09, 0x69, 0x6e, 0x63, + 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x6f, + 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x41, 0x72, + 0x70, 0x48, 0x61, 0x72, 0x64, 0x77, 0x61, 0x72, 0x65, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x43, + 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, + 0x74, 0x12, 0x46, 0x0a, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x06, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, + 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x41, 0x72, 0x70, 0x48, 0x61, 0x72, 0x64, 0x77, 0x61, 0x72, + 0x65, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, + 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x4b, 0x0a, 0x0b, 0x6d, 0x65, 0x74, + 0x72, 0x69, 0x63, 0x5f, 0x74, 0x61, 0x67, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, - 0x47, 0x74, 0x70, 0x76, 0x31, 0x54, 0x65, 0x69, 0x64, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, - 0x52, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x3e, 0x0a, 0x09, 0x64, - 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, + 0x41, 0x72, 0x70, 0x48, 0x61, 0x72, 0x64, 0x77, 0x61, 0x72, 0x65, 0x4c, 0x65, 0x6e, 0x67, 0x74, + 0x68, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x52, 0x0a, 0x6d, 0x65, 0x74, 0x72, + 0x69, 0x63, 0x54, 0x61, 0x67, 0x73, 0x1a, 0x56, 0x0a, 0x06, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, + 0x22, 0x4c, 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x0a, 0x0b, 0x75, 0x6e, 0x73, 0x70, + 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, 0x76, 0x61, 0x6c, + 0x75, 0x65, 0x10, 0x02, 0x12, 0x0a, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x10, 0x03, + 0x12, 0x0d, 0x0a, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x10, 0x04, 0x12, + 0x0d, 0x0a, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x10, 0x05, 0x42, 0x09, + 0x0a, 0x07, 0x5f, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x76, 0x61, + 0x6c, 0x75, 0x65, 0x22, 0x91, 0x01, 0x0a, 0x23, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, + 0x6c, 0x6f, 0x77, 0x41, 0x72, 0x70, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x4c, 0x65, + 0x6e, 0x67, 0x74, 0x68, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x12, 0x19, 0x0a, 0x05, 0x73, + 0x74, 0x61, 0x72, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x00, 0x52, 0x05, 0x73, 0x74, + 0x61, 0x72, 0x74, 0x88, 0x01, 0x01, 0x12, 0x17, 0x0a, 0x04, 0x73, 0x74, 0x65, 0x70, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x04, 0x73, 0x74, 0x65, 0x70, 0x88, 0x01, 0x01, 0x12, + 0x19, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x02, + 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x88, 0x01, 0x01, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x73, + 0x74, 0x61, 0x72, 0x74, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x73, 0x74, 0x65, 0x70, 0x42, 0x08, 0x0a, + 0x06, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x99, 0x01, 0x0a, 0x25, 0x50, 0x61, 0x74, 0x74, + 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x41, 0x72, 0x70, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, + 0x6f, 0x6c, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, + 0x67, 0x12, 0x17, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, + 0x00, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x6f, 0x66, + 0x66, 0x73, 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x06, 0x6f, 0x66, + 0x66, 0x73, 0x65, 0x74, 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, + 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x02, 0x52, 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, + 0x68, 0x88, 0x01, 0x01, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x42, 0x09, 0x0a, + 0x07, 0x5f, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6c, 0x65, 0x6e, + 0x67, 0x74, 0x68, 0x22, 0xe7, 0x03, 0x0a, 0x1c, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, + 0x6c, 0x6f, 0x77, 0x41, 0x72, 0x70, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x4c, 0x65, + 0x6e, 0x67, 0x74, 0x68, 0x12, 0x4a, 0x0a, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2d, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, + 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x41, 0x72, 0x70, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, + 0x6c, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x2e, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x2e, 0x45, + 0x6e, 0x75, 0x6d, 0x48, 0x00, 0x52, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x88, 0x01, 0x01, + 0x12, 0x19, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, + 0x01, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x88, 0x01, 0x01, 0x12, 0x16, 0x0a, 0x06, 0x76, + 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0d, 0x52, 0x06, 0x76, 0x61, 0x6c, + 0x75, 0x65, 0x73, 0x12, 0x46, 0x0a, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, + 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, + 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x41, 0x72, 0x70, 0x50, 0x72, 0x6f, 0x74, 0x6f, + 0x63, 0x6f, 0x6c, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, + 0x52, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x46, 0x0a, 0x09, 0x64, + 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, - 0x47, 0x74, 0x70, 0x76, 0x31, 0x54, 0x65, 0x69, 0x64, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, - 0x52, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x43, 0x0a, 0x0b, 0x6d, - 0x65, 0x74, 0x72, 0x69, 0x63, 0x5f, 0x74, 0x61, 0x67, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, - 0x32, 0x22, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, - 0x6f, 0x77, 0x47, 0x74, 0x70, 0x76, 0x31, 0x54, 0x65, 0x69, 0x64, 0x4d, 0x65, 0x74, 0x72, 0x69, + 0x41, 0x72, 0x70, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x4c, 0x65, 0x6e, 0x67, 0x74, + 0x68, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, + 0x65, 0x6e, 0x74, 0x12, 0x4b, 0x0a, 0x0b, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x5f, 0x74, 0x61, + 0x67, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, + 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x41, 0x72, 0x70, 0x50, 0x72, 0x6f, + 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x52, 0x0a, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x73, 0x1a, 0x56, 0x0a, 0x06, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x22, 0x4c, 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x0a, 0x0b, 0x75, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, @@ -104984,98 +120866,98 @@ var file_otg_proto_rawDesc = []byte{ 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x10, 0x03, 0x12, 0x0d, 0x0a, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x10, 0x04, 0x12, 0x0d, 0x0a, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x10, 0x05, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x63, 0x68, 0x6f, - 0x69, 0x63, 0x65, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x92, 0x01, - 0x0a, 0x24, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x47, 0x74, 0x70, - 0x76, 0x31, 0x53, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x65, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x43, - 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x12, 0x19, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x00, 0x52, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x88, 0x01, - 0x01, 0x12, 0x17, 0x0a, 0x04, 0x73, 0x74, 0x65, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, - 0x01, 0x52, 0x04, 0x73, 0x74, 0x65, 0x70, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x63, 0x6f, - 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x02, 0x52, 0x05, 0x63, 0x6f, 0x75, - 0x6e, 0x74, 0x88, 0x01, 0x01, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x42, - 0x07, 0x0a, 0x05, 0x5f, 0x73, 0x74, 0x65, 0x70, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x63, 0x6f, 0x75, - 0x6e, 0x74, 0x22, 0x9a, 0x01, 0x0a, 0x26, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, - 0x6f, 0x77, 0x47, 0x74, 0x70, 0x76, 0x31, 0x53, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x65, 0x4e, 0x75, - 0x6d, 0x62, 0x65, 0x72, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x12, 0x17, 0x0a, - 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x04, 0x6e, - 0x61, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, - 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x0d, 0x48, 0x02, 0x52, 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x88, 0x01, 0x01, - 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6f, 0x66, - 0x66, 0x73, 0x65, 0x74, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x22, - 0xec, 0x03, 0x0a, 0x1d, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x47, - 0x74, 0x70, 0x76, 0x31, 0x53, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x65, 0x4e, 0x75, 0x6d, 0x62, 0x65, - 0x72, 0x12, 0x4b, 0x0a, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x0e, 0x32, 0x2e, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, - 0x6c, 0x6f, 0x77, 0x47, 0x74, 0x70, 0x76, 0x31, 0x53, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x65, 0x4e, - 0x75, 0x6d, 0x62, 0x65, 0x72, 0x2e, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x2e, 0x45, 0x6e, 0x75, - 0x6d, 0x48, 0x00, 0x52, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x88, 0x01, 0x01, 0x12, 0x19, - 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, - 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x88, 0x01, 0x01, 0x12, 0x16, 0x0a, 0x06, 0x76, 0x61, 0x6c, - 0x75, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0d, 0x52, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, - 0x73, 0x12, 0x47, 0x0a, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x05, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, - 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x47, 0x74, 0x70, 0x76, 0x31, 0x53, 0x71, 0x75, 0x65, 0x6e, - 0x63, 0x65, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, - 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x47, 0x0a, 0x09, 0x64, 0x65, - 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, - 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x47, - 0x74, 0x70, 0x76, 0x31, 0x53, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x65, 0x4e, 0x75, 0x6d, 0x62, 0x65, - 0x72, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, - 0x65, 0x6e, 0x74, 0x12, 0x4c, 0x0a, 0x0b, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x5f, 0x74, 0x61, - 0x67, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, - 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x47, 0x74, 0x70, 0x76, 0x31, 0x53, - 0x71, 0x75, 0x65, 0x6e, 0x63, 0x65, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x4d, 0x65, 0x74, 0x72, - 0x69, 0x63, 0x54, 0x61, 0x67, 0x52, 0x0a, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, - 0x73, 0x1a, 0x56, 0x0a, 0x06, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x22, 0x4c, 0x0a, 0x04, 0x45, - 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x0a, 0x0b, 0x75, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, - 0x65, 0x64, 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x10, 0x02, 0x12, - 0x0a, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x10, 0x03, 0x12, 0x0d, 0x0a, 0x09, 0x69, - 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x10, 0x04, 0x12, 0x0d, 0x0a, 0x09, 0x64, 0x65, - 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x10, 0x05, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x63, 0x68, - 0x6f, 0x69, 0x63, 0x65, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x8f, - 0x01, 0x0a, 0x21, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x47, 0x74, - 0x70, 0x76, 0x31, 0x4e, 0x50, 0x64, 0x75, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x43, 0x6f, 0x75, - 0x6e, 0x74, 0x65, 0x72, 0x12, 0x19, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x0d, 0x48, 0x00, 0x52, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x88, 0x01, 0x01, 0x12, - 0x17, 0x0a, 0x04, 0x73, 0x74, 0x65, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, - 0x04, 0x73, 0x74, 0x65, 0x70, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, - 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x02, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, - 0x88, 0x01, 0x01, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x42, 0x07, 0x0a, - 0x05, 0x5f, 0x73, 0x74, 0x65, 0x70, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, - 0x22, 0x97, 0x01, 0x0a, 0x23, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, - 0x47, 0x74, 0x70, 0x76, 0x31, 0x4e, 0x50, 0x64, 0x75, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x4d, - 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x12, 0x17, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x88, 0x01, - 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x0d, 0x48, 0x01, 0x52, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x88, 0x01, 0x01, 0x12, 0x1b, - 0x0a, 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x02, - 0x52, 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x88, 0x01, 0x01, 0x42, 0x07, 0x0a, 0x05, 0x5f, - 0x6e, 0x61, 0x6d, 0x65, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x42, - 0x09, 0x0a, 0x07, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x22, 0xdd, 0x03, 0x0a, 0x1a, 0x50, - 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x47, 0x74, 0x70, 0x76, 0x31, 0x4e, - 0x50, 0x64, 0x75, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x48, 0x0a, 0x06, 0x63, 0x68, 0x6f, - 0x69, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2b, 0x2e, 0x6f, 0x74, 0x67, 0x2e, - 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x47, 0x74, 0x70, 0x76, 0x31, - 0x4e, 0x50, 0x64, 0x75, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x2e, 0x43, 0x68, 0x6f, 0x69, 0x63, - 0x65, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x48, 0x00, 0x52, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, - 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x0d, 0x48, 0x01, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x88, 0x01, 0x01, 0x12, 0x16, - 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0d, 0x52, 0x06, - 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x12, 0x44, 0x0a, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, - 0x65, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x6f, 0x74, 0x67, 0x2e, - 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x47, 0x74, 0x70, 0x76, 0x31, - 0x4e, 0x50, 0x64, 0x75, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, - 0x72, 0x52, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x44, 0x0a, 0x09, + 0x69, 0x63, 0x65, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x8c, 0x01, + 0x0a, 0x1e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x41, 0x72, 0x70, + 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, + 0x12, 0x19, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x48, + 0x00, 0x52, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x88, 0x01, 0x01, 0x12, 0x17, 0x0a, 0x04, 0x73, + 0x74, 0x65, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x04, 0x73, 0x74, 0x65, + 0x70, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x0d, 0x48, 0x02, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x88, 0x01, 0x01, 0x42, + 0x08, 0x0a, 0x06, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x73, 0x74, + 0x65, 0x70, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x94, 0x01, 0x0a, + 0x20, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x41, 0x72, 0x70, 0x4f, + 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, + 0x67, 0x12, 0x17, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, + 0x00, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x6f, 0x66, + 0x66, 0x73, 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x06, 0x6f, 0x66, + 0x66, 0x73, 0x65, 0x74, 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, + 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x02, 0x52, 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, + 0x68, 0x88, 0x01, 0x01, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x42, 0x09, 0x0a, + 0x07, 0x5f, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6c, 0x65, 0x6e, + 0x67, 0x74, 0x68, 0x22, 0xce, 0x03, 0x0a, 0x17, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, + 0x6c, 0x6f, 0x77, 0x41, 0x72, 0x70, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, + 0x45, 0x0a, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, + 0x28, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, + 0x77, 0x41, 0x72, 0x70, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x43, 0x68, + 0x6f, 0x69, 0x63, 0x65, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x48, 0x00, 0x52, 0x06, 0x63, 0x68, 0x6f, + 0x69, 0x63, 0x65, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x88, 0x01, + 0x01, 0x12, 0x16, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, + 0x0d, 0x52, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x12, 0x41, 0x0a, 0x09, 0x69, 0x6e, 0x63, + 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x6f, + 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x41, 0x72, + 0x70, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, + 0x72, 0x52, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x41, 0x0a, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x26, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, - 0x77, 0x47, 0x74, 0x70, 0x76, 0x31, 0x4e, 0x50, 0x64, 0x75, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, - 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, - 0x6e, 0x74, 0x12, 0x49, 0x0a, 0x0b, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x5f, 0x74, 0x61, 0x67, - 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, - 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x47, 0x74, 0x70, 0x76, 0x31, 0x4e, 0x50, - 0x64, 0x75, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, + 0x23, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, + 0x77, 0x41, 0x72, 0x70, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x75, + 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, + 0x46, 0x0a, 0x0b, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x5f, 0x74, 0x61, 0x67, 0x73, 0x18, 0x07, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, + 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x41, 0x72, 0x70, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x52, 0x0a, 0x6d, 0x65, 0x74, + 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x73, 0x1a, 0x56, 0x0a, 0x06, 0x43, 0x68, 0x6f, 0x69, 0x63, + 0x65, 0x22, 0x4c, 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x0a, 0x0b, 0x75, 0x6e, 0x73, + 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, 0x76, 0x61, + 0x6c, 0x75, 0x65, 0x10, 0x02, 0x12, 0x0a, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x10, + 0x03, 0x12, 0x0d, 0x0a, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x10, 0x04, + 0x12, 0x0d, 0x0a, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x10, 0x05, 0x42, + 0x09, 0x0a, 0x07, 0x5f, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x76, + 0x61, 0x6c, 0x75, 0x65, 0x22, 0x95, 0x01, 0x0a, 0x27, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, + 0x46, 0x6c, 0x6f, 0x77, 0x41, 0x72, 0x70, 0x53, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x48, 0x61, 0x72, + 0x64, 0x77, 0x61, 0x72, 0x65, 0x41, 0x64, 0x64, 0x72, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, + 0x12, 0x19, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, + 0x00, 0x52, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x88, 0x01, 0x01, 0x12, 0x17, 0x0a, 0x04, 0x73, + 0x74, 0x65, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, 0x52, 0x04, 0x73, 0x74, 0x65, + 0x70, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x0d, 0x48, 0x02, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x88, 0x01, 0x01, 0x42, + 0x08, 0x0a, 0x06, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x73, 0x74, + 0x65, 0x70, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x9d, 0x01, 0x0a, + 0x29, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x41, 0x72, 0x70, 0x53, + 0x65, 0x6e, 0x64, 0x65, 0x72, 0x48, 0x61, 0x72, 0x64, 0x77, 0x61, 0x72, 0x65, 0x41, 0x64, 0x64, + 0x72, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x12, 0x17, 0x0a, 0x04, 0x6e, 0x61, + 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, + 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x88, 0x01, 0x01, + 0x12, 0x1b, 0x0a, 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, + 0x48, 0x02, 0x52, 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x88, 0x01, 0x01, 0x42, 0x07, 0x0a, + 0x05, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6f, 0x66, 0x66, 0x73, 0x65, + 0x74, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x22, 0xfb, 0x03, 0x0a, + 0x20, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x41, 0x72, 0x70, 0x53, + 0x65, 0x6e, 0x64, 0x65, 0x72, 0x48, 0x61, 0x72, 0x64, 0x77, 0x61, 0x72, 0x65, 0x41, 0x64, 0x64, + 0x72, 0x12, 0x4e, 0x0a, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x0e, 0x32, 0x31, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, + 0x6c, 0x6f, 0x77, 0x41, 0x72, 0x70, 0x53, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x48, 0x61, 0x72, 0x64, + 0x77, 0x61, 0x72, 0x65, 0x41, 0x64, 0x64, 0x72, 0x2e, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x2e, + 0x45, 0x6e, 0x75, 0x6d, 0x48, 0x00, 0x52, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x88, 0x01, + 0x01, 0x12, 0x19, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, + 0x48, 0x01, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x88, 0x01, 0x01, 0x12, 0x16, 0x0a, 0x06, + 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x06, 0x76, 0x61, + 0x6c, 0x75, 0x65, 0x73, 0x12, 0x4a, 0x0a, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, + 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, + 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x41, 0x72, 0x70, 0x53, 0x65, 0x6e, 0x64, + 0x65, 0x72, 0x48, 0x61, 0x72, 0x64, 0x77, 0x61, 0x72, 0x65, 0x41, 0x64, 0x64, 0x72, 0x43, 0x6f, + 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, + 0x12, 0x4a, 0x0a, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x06, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, + 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x41, 0x72, 0x70, 0x53, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x48, 0x61, + 0x72, 0x64, 0x77, 0x61, 0x72, 0x65, 0x41, 0x64, 0x64, 0x72, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, + 0x72, 0x52, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x4f, 0x0a, 0x0b, + 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x5f, 0x74, 0x61, 0x67, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x2e, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, + 0x6c, 0x6f, 0x77, 0x41, 0x72, 0x70, 0x53, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x48, 0x61, 0x72, 0x64, + 0x77, 0x61, 0x72, 0x65, 0x41, 0x64, 0x64, 0x72, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x52, 0x0a, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x73, 0x1a, 0x56, 0x0a, 0x06, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x22, 0x4c, 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x0a, 0x0b, 0x75, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x10, 0x00, @@ -105083,158 +120965,50 @@ var file_otg_proto_rawDesc = []byte{ 0x61, 0x6c, 0x75, 0x65, 0x73, 0x10, 0x03, 0x12, 0x0d, 0x0a, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x10, 0x04, 0x12, 0x0d, 0x0a, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x10, 0x05, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, - 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x9c, 0x01, 0x0a, 0x2e, 0x50, - 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x47, 0x74, 0x70, 0x76, 0x31, 0x4e, - 0x65, 0x78, 0x74, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x48, 0x65, 0x61, 0x64, - 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x12, 0x19, 0x0a, - 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x00, 0x52, 0x05, - 0x73, 0x74, 0x61, 0x72, 0x74, 0x88, 0x01, 0x01, 0x12, 0x17, 0x0a, 0x04, 0x73, 0x74, 0x65, 0x70, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x04, 0x73, 0x74, 0x65, 0x70, 0x88, 0x01, - 0x01, 0x12, 0x19, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, - 0x48, 0x02, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x88, 0x01, 0x01, 0x42, 0x08, 0x0a, 0x06, - 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x73, 0x74, 0x65, 0x70, 0x42, - 0x08, 0x0a, 0x06, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0xa4, 0x01, 0x0a, 0x30, 0x50, 0x61, - 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x47, 0x74, 0x70, 0x76, 0x31, 0x4e, 0x65, - 0x78, 0x74, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x48, 0x65, 0x61, 0x64, 0x65, - 0x72, 0x54, 0x79, 0x70, 0x65, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x12, 0x17, - 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x04, - 0x6e, 0x61, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, - 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, - 0x74, 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x0d, 0x48, 0x02, 0x52, 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x88, 0x01, - 0x01, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6f, - 0x66, 0x66, 0x73, 0x65, 0x74, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, - 0x22, 0x9e, 0x04, 0x0a, 0x27, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, - 0x47, 0x74, 0x70, 0x76, 0x31, 0x4e, 0x65, 0x78, 0x74, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, - 0x6f, 0x6e, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x12, 0x55, 0x0a, 0x06, - 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x38, 0x2e, 0x6f, - 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x47, 0x74, - 0x70, 0x76, 0x31, 0x4e, 0x65, 0x78, 0x74, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, - 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x2e, 0x43, 0x68, 0x6f, 0x69, 0x63, - 0x65, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x48, 0x00, 0x52, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, - 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x0d, 0x48, 0x01, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x88, 0x01, 0x01, 0x12, 0x16, - 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0d, 0x52, 0x06, - 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x12, 0x51, 0x0a, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, - 0x65, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x33, 0x2e, 0x6f, 0x74, 0x67, 0x2e, - 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x47, 0x74, 0x70, 0x76, 0x31, - 0x4e, 0x65, 0x78, 0x74, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x48, 0x65, 0x61, - 0x64, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, - 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x51, 0x0a, 0x09, 0x64, 0x65, 0x63, - 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x33, 0x2e, 0x6f, - 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x47, 0x74, - 0x70, 0x76, 0x31, 0x4e, 0x65, 0x78, 0x74, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, - 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, - 0x72, 0x52, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x56, 0x0a, 0x0b, - 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x5f, 0x74, 0x61, 0x67, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, - 0x0b, 0x32, 0x35, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, - 0x6c, 0x6f, 0x77, 0x47, 0x74, 0x70, 0x76, 0x31, 0x4e, 0x65, 0x78, 0x74, 0x45, 0x78, 0x74, 0x65, - 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x4d, - 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x52, 0x0a, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, - 0x54, 0x61, 0x67, 0x73, 0x1a, 0x56, 0x0a, 0x06, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x22, 0x4c, - 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x0a, 0x0b, 0x75, 0x6e, 0x73, 0x70, 0x65, 0x63, - 0x69, 0x66, 0x69, 0x65, 0x64, 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, - 0x10, 0x02, 0x12, 0x0a, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x10, 0x03, 0x12, 0x0d, - 0x0a, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x10, 0x04, 0x12, 0x0d, 0x0a, - 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x10, 0x05, 0x42, 0x09, 0x0a, 0x07, - 0x5f, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x76, 0x61, 0x6c, 0x75, - 0x65, 0x22, 0x9b, 0x01, 0x0a, 0x2d, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, - 0x77, 0x47, 0x74, 0x70, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x45, 0x78, 0x74, - 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x43, 0x6f, 0x75, 0x6e, - 0x74, 0x65, 0x72, 0x12, 0x19, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x0d, 0x48, 0x00, 0x52, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x88, 0x01, 0x01, 0x12, 0x17, - 0x0a, 0x04, 0x73, 0x74, 0x65, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x04, - 0x73, 0x74, 0x65, 0x70, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x02, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x88, - 0x01, 0x01, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x42, 0x07, 0x0a, 0x05, - 0x5f, 0x73, 0x74, 0x65, 0x70, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x22, - 0xa3, 0x01, 0x0a, 0x2f, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x47, - 0x74, 0x70, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x45, 0x78, 0x74, 0x65, 0x6e, - 0x73, 0x69, 0x6f, 0x6e, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, - 0x54, 0x61, 0x67, 0x12, 0x17, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x48, 0x00, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, - 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x06, - 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x6c, 0x65, 0x6e, - 0x67, 0x74, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x02, 0x52, 0x06, 0x6c, 0x65, 0x6e, - 0x67, 0x74, 0x68, 0x88, 0x01, 0x01, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x42, - 0x09, 0x0a, 0x07, 0x5f, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6c, - 0x65, 0x6e, 0x67, 0x74, 0x68, 0x22, 0x99, 0x04, 0x0a, 0x26, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, - 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x47, 0x74, 0x70, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, - 0x6e, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, - 0x12, 0x54, 0x0a, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, - 0x32, 0x37, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, - 0x6f, 0x77, 0x47, 0x74, 0x70, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x45, 0x78, - 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x2e, 0x43, 0x68, - 0x6f, 0x69, 0x63, 0x65, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x48, 0x00, 0x52, 0x06, 0x63, 0x68, 0x6f, - 0x69, 0x63, 0x65, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x88, 0x01, - 0x01, 0x12, 0x16, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, - 0x0d, 0x52, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x12, 0x50, 0x0a, 0x09, 0x69, 0x6e, 0x63, - 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x32, 0x2e, 0x6f, - 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x47, 0x74, - 0x70, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, - 0x69, 0x6f, 0x6e, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, - 0x52, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x50, 0x0a, 0x09, 0x64, - 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x32, - 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, - 0x47, 0x74, 0x70, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x45, 0x78, 0x74, 0x65, - 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x43, 0x6f, 0x75, 0x6e, 0x74, - 0x65, 0x72, 0x52, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x55, 0x0a, - 0x0b, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x5f, 0x74, 0x61, 0x67, 0x73, 0x18, 0x07, 0x20, 0x03, - 0x28, 0x0b, 0x32, 0x34, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, - 0x46, 0x6c, 0x6f, 0x77, 0x47, 0x74, 0x70, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, - 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x4d, - 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x52, 0x0a, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, - 0x54, 0x61, 0x67, 0x73, 0x1a, 0x56, 0x0a, 0x06, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x22, 0x4c, - 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x0a, 0x0b, 0x75, 0x6e, 0x73, 0x70, 0x65, 0x63, - 0x69, 0x66, 0x69, 0x65, 0x64, 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, - 0x10, 0x02, 0x12, 0x0a, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x10, 0x03, 0x12, 0x0d, - 0x0a, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x10, 0x04, 0x12, 0x0d, 0x0a, - 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x10, 0x05, 0x42, 0x09, 0x0a, 0x07, - 0x5f, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x76, 0x61, 0x6c, 0x75, - 0x65, 0x22, 0x94, 0x01, 0x0a, 0x26, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, - 0x77, 0x47, 0x74, 0x70, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, - 0x74, 0x65, 0x6e, 0x74, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x12, 0x19, 0x0a, 0x05, - 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x48, 0x00, 0x52, 0x05, 0x73, - 0x74, 0x61, 0x72, 0x74, 0x88, 0x01, 0x01, 0x12, 0x17, 0x0a, 0x04, 0x73, 0x74, 0x65, 0x70, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x04, 0x48, 0x01, 0x52, 0x04, 0x73, 0x74, 0x65, 0x70, 0x88, 0x01, 0x01, - 0x12, 0x19, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x48, - 0x02, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x88, 0x01, 0x01, 0x42, 0x08, 0x0a, 0x06, 0x5f, - 0x73, 0x74, 0x61, 0x72, 0x74, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x73, 0x74, 0x65, 0x70, 0x42, 0x08, - 0x0a, 0x06, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x9c, 0x01, 0x0a, 0x28, 0x50, 0x61, 0x74, - 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x47, 0x74, 0x70, 0x45, 0x78, 0x74, 0x65, 0x6e, - 0x73, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x73, 0x4d, 0x65, 0x74, 0x72, - 0x69, 0x63, 0x54, 0x61, 0x67, 0x12, 0x17, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, 0x1b, - 0x0a, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x48, 0x01, - 0x52, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x6c, - 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x48, 0x02, 0x52, 0x06, 0x6c, - 0x65, 0x6e, 0x67, 0x74, 0x68, 0x88, 0x01, 0x01, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x6e, 0x61, 0x6d, - 0x65, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x42, 0x09, 0x0a, 0x07, - 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x22, 0xf6, 0x03, 0x0a, 0x1f, 0x50, 0x61, 0x74, 0x74, - 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x47, 0x74, 0x70, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, - 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x4d, 0x0a, 0x06, 0x63, - 0x68, 0x6f, 0x69, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x30, 0x2e, 0x6f, 0x74, - 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x47, 0x74, 0x70, - 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, - 0x73, 0x2e, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x48, 0x00, 0x52, - 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x76, 0x61, - 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x48, 0x01, 0x52, 0x05, 0x76, 0x61, 0x6c, - 0x75, 0x65, 0x88, 0x01, 0x01, 0x12, 0x16, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, - 0x03, 0x20, 0x03, 0x28, 0x04, 0x52, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x12, 0x49, 0x0a, - 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x2b, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, - 0x6f, 0x77, 0x47, 0x74, 0x70, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x43, 0x6f, - 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, 0x69, - 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x49, 0x0a, 0x09, 0x64, 0x65, 0x63, 0x72, - 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x6f, 0x74, - 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x47, 0x74, 0x70, - 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, - 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, - 0x65, 0x6e, 0x74, 0x12, 0x4e, 0x0a, 0x0b, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x5f, 0x74, 0x61, - 0x67, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, - 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x47, 0x74, 0x70, 0x45, 0x78, 0x74, - 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x73, 0x4d, 0x65, + 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x95, 0x01, 0x0a, 0x27, 0x50, + 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x41, 0x72, 0x70, 0x53, 0x65, 0x6e, + 0x64, 0x65, 0x72, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x41, 0x64, 0x64, 0x72, 0x43, + 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x12, 0x19, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x88, 0x01, + 0x01, 0x12, 0x17, 0x0a, 0x04, 0x73, 0x74, 0x65, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, + 0x01, 0x52, 0x04, 0x73, 0x74, 0x65, 0x70, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x63, 0x6f, + 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x02, 0x52, 0x05, 0x63, 0x6f, 0x75, + 0x6e, 0x74, 0x88, 0x01, 0x01, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x42, + 0x07, 0x0a, 0x05, 0x5f, 0x73, 0x74, 0x65, 0x70, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x63, 0x6f, 0x75, + 0x6e, 0x74, 0x22, 0x9d, 0x01, 0x0a, 0x29, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, + 0x6f, 0x77, 0x41, 0x72, 0x70, 0x53, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x50, 0x72, 0x6f, 0x74, 0x6f, + 0x63, 0x6f, 0x6c, 0x41, 0x64, 0x64, 0x72, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, + 0x12, 0x17, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, + 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x6f, 0x66, 0x66, + 0x73, 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x06, 0x6f, 0x66, 0x66, + 0x73, 0x65, 0x74, 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x02, 0x52, 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, + 0x88, 0x01, 0x01, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x42, 0x09, 0x0a, 0x07, + 0x5f, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6c, 0x65, 0x6e, 0x67, + 0x74, 0x68, 0x22, 0xfb, 0x03, 0x0a, 0x20, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, + 0x6f, 0x77, 0x41, 0x72, 0x70, 0x53, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x50, 0x72, 0x6f, 0x74, 0x6f, + 0x63, 0x6f, 0x6c, 0x41, 0x64, 0x64, 0x72, 0x12, 0x4e, 0x0a, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, + 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x31, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, + 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x41, 0x72, 0x70, 0x53, 0x65, 0x6e, 0x64, + 0x65, 0x72, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x41, 0x64, 0x64, 0x72, 0x2e, 0x43, + 0x68, 0x6f, 0x69, 0x63, 0x65, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x48, 0x00, 0x52, 0x06, 0x63, 0x68, + 0x6f, 0x69, 0x63, 0x65, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x88, + 0x01, 0x01, 0x12, 0x16, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, + 0x28, 0x09, 0x52, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x12, 0x4a, 0x0a, 0x09, 0x69, 0x6e, + 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2c, 0x2e, + 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x41, + 0x72, 0x70, 0x53, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, + 0x41, 0x64, 0x64, 0x72, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, 0x69, 0x6e, 0x63, + 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x4a, 0x0a, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, + 0x65, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x6f, 0x74, 0x67, 0x2e, + 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x41, 0x72, 0x70, 0x53, 0x65, + 0x6e, 0x64, 0x65, 0x72, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x41, 0x64, 0x64, 0x72, + 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, + 0x6e, 0x74, 0x12, 0x4f, 0x0a, 0x0b, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x5f, 0x74, 0x61, 0x67, + 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, + 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x41, 0x72, 0x70, 0x53, 0x65, 0x6e, 0x64, + 0x65, 0x72, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x41, 0x64, 0x64, 0x72, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x52, 0x0a, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x73, 0x1a, 0x56, 0x0a, 0x06, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x22, 0x4c, 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x0a, 0x0b, 0x75, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, @@ -105243,54 +121017,101 @@ var file_otg_proto_rawDesc = []byte{ 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x10, 0x04, 0x12, 0x0d, 0x0a, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x10, 0x05, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, - 0x22, 0x9f, 0x01, 0x0a, 0x31, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, - 0x47, 0x74, 0x70, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x4e, 0x65, 0x78, 0x74, - 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x43, - 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x12, 0x19, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x00, 0x52, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x88, 0x01, - 0x01, 0x12, 0x17, 0x0a, 0x04, 0x73, 0x74, 0x65, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, - 0x01, 0x52, 0x04, 0x73, 0x74, 0x65, 0x70, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x63, 0x6f, - 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x02, 0x52, 0x05, 0x63, 0x6f, 0x75, - 0x6e, 0x74, 0x88, 0x01, 0x01, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x42, - 0x07, 0x0a, 0x05, 0x5f, 0x73, 0x74, 0x65, 0x70, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x63, 0x6f, 0x75, - 0x6e, 0x74, 0x22, 0xa7, 0x01, 0x0a, 0x33, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, - 0x6f, 0x77, 0x47, 0x74, 0x70, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x4e, 0x65, - 0x78, 0x74, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x48, 0x65, 0x61, 0x64, 0x65, - 0x72, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x12, 0x17, 0x0a, 0x04, 0x6e, 0x61, - 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, - 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x88, 0x01, 0x01, - 0x12, 0x1b, 0x0a, 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, - 0x48, 0x02, 0x52, 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x88, 0x01, 0x01, 0x42, 0x07, 0x0a, - 0x05, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6f, 0x66, 0x66, 0x73, 0x65, - 0x74, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x22, 0xad, 0x04, 0x0a, - 0x2a, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x47, 0x74, 0x70, 0x45, - 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x4e, 0x65, 0x78, 0x74, 0x45, 0x78, 0x74, 0x65, - 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x12, 0x58, 0x0a, 0x06, 0x63, - 0x68, 0x6f, 0x69, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x3b, 0x2e, 0x6f, 0x74, - 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x47, 0x74, 0x70, - 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x4e, 0x65, 0x78, 0x74, 0x45, 0x78, 0x74, - 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x2e, 0x43, 0x68, 0x6f, - 0x69, 0x63, 0x65, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x48, 0x00, 0x52, 0x06, 0x63, 0x68, 0x6f, 0x69, - 0x63, 0x65, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x88, 0x01, 0x01, - 0x12, 0x16, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0d, - 0x52, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x12, 0x54, 0x0a, 0x09, 0x69, 0x6e, 0x63, 0x72, - 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x36, 0x2e, 0x6f, 0x74, - 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x47, 0x74, 0x70, - 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x4e, 0x65, 0x78, 0x74, 0x45, 0x78, 0x74, - 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x43, 0x6f, 0x75, 0x6e, - 0x74, 0x65, 0x72, 0x52, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x54, - 0x0a, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x36, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, - 0x6c, 0x6f, 0x77, 0x47, 0x74, 0x70, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x4e, - 0x65, 0x78, 0x74, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x48, 0x65, 0x61, 0x64, - 0x65, 0x72, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, - 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x59, 0x0a, 0x0b, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x5f, 0x74, - 0x61, 0x67, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x38, 0x2e, 0x6f, 0x74, 0x67, 0x2e, - 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x47, 0x74, 0x70, 0x45, 0x78, - 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x4e, 0x65, 0x78, 0x74, 0x45, 0x78, 0x74, 0x65, 0x6e, - 0x73, 0x69, 0x6f, 0x6e, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, + 0x22, 0x95, 0x01, 0x0a, 0x27, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, + 0x41, 0x72, 0x70, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x48, 0x61, 0x72, 0x64, 0x77, 0x61, 0x72, + 0x65, 0x41, 0x64, 0x64, 0x72, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x12, 0x19, 0x0a, 0x05, + 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x05, 0x73, + 0x74, 0x61, 0x72, 0x74, 0x88, 0x01, 0x01, 0x12, 0x17, 0x0a, 0x04, 0x73, 0x74, 0x65, 0x70, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, 0x52, 0x04, 0x73, 0x74, 0x65, 0x70, 0x88, 0x01, 0x01, + 0x12, 0x19, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x48, + 0x02, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x88, 0x01, 0x01, 0x42, 0x08, 0x0a, 0x06, 0x5f, + 0x73, 0x74, 0x61, 0x72, 0x74, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x73, 0x74, 0x65, 0x70, 0x42, 0x08, + 0x0a, 0x06, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x9d, 0x01, 0x0a, 0x29, 0x50, 0x61, 0x74, + 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x41, 0x72, 0x70, 0x54, 0x61, 0x72, 0x67, 0x65, + 0x74, 0x48, 0x61, 0x72, 0x64, 0x77, 0x61, 0x72, 0x65, 0x41, 0x64, 0x64, 0x72, 0x4d, 0x65, 0x74, + 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x12, 0x17, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, + 0x1b, 0x0a, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, + 0x01, 0x52, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, + 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x02, 0x52, 0x06, + 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x88, 0x01, 0x01, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x6e, 0x61, + 0x6d, 0x65, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x42, 0x09, 0x0a, + 0x07, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x22, 0xfb, 0x03, 0x0a, 0x20, 0x50, 0x61, 0x74, + 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x41, 0x72, 0x70, 0x54, 0x61, 0x72, 0x67, 0x65, + 0x74, 0x48, 0x61, 0x72, 0x64, 0x77, 0x61, 0x72, 0x65, 0x41, 0x64, 0x64, 0x72, 0x12, 0x4e, 0x0a, + 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x31, 0x2e, + 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x41, + 0x72, 0x70, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x48, 0x61, 0x72, 0x64, 0x77, 0x61, 0x72, 0x65, + 0x41, 0x64, 0x64, 0x72, 0x2e, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x2e, 0x45, 0x6e, 0x75, 0x6d, + 0x48, 0x00, 0x52, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, + 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, 0x52, 0x05, + 0x76, 0x61, 0x6c, 0x75, 0x65, 0x88, 0x01, 0x01, 0x12, 0x16, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, + 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, + 0x12, 0x4a, 0x0a, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x05, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, + 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x41, 0x72, 0x70, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x48, 0x61, + 0x72, 0x64, 0x77, 0x61, 0x72, 0x65, 0x41, 0x64, 0x64, 0x72, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, + 0x72, 0x52, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x4a, 0x0a, 0x09, + 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x2c, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, + 0x77, 0x41, 0x72, 0x70, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x48, 0x61, 0x72, 0x64, 0x77, 0x61, + 0x72, 0x65, 0x41, 0x64, 0x64, 0x72, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, 0x64, + 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x4f, 0x0a, 0x0b, 0x6d, 0x65, 0x74, 0x72, + 0x69, 0x63, 0x5f, 0x74, 0x61, 0x67, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2e, 0x2e, + 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x41, + 0x72, 0x70, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x48, 0x61, 0x72, 0x64, 0x77, 0x61, 0x72, 0x65, + 0x41, 0x64, 0x64, 0x72, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x52, 0x0a, 0x6d, + 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x73, 0x1a, 0x56, 0x0a, 0x06, 0x43, 0x68, 0x6f, + 0x69, 0x63, 0x65, 0x22, 0x4c, 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x0a, 0x0b, 0x75, + 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, + 0x76, 0x61, 0x6c, 0x75, 0x65, 0x10, 0x02, 0x12, 0x0a, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, + 0x73, 0x10, 0x03, 0x12, 0x0d, 0x0a, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, + 0x10, 0x04, 0x12, 0x0d, 0x0a, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x10, + 0x05, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x42, 0x08, 0x0a, 0x06, + 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x95, 0x01, 0x0a, 0x27, 0x50, 0x61, 0x74, 0x74, 0x65, + 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x41, 0x72, 0x70, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x50, + 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x41, 0x64, 0x64, 0x72, 0x43, 0x6f, 0x75, 0x6e, 0x74, + 0x65, 0x72, 0x12, 0x19, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x48, 0x00, 0x52, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x88, 0x01, 0x01, 0x12, 0x17, 0x0a, + 0x04, 0x73, 0x74, 0x65, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, 0x52, 0x04, 0x73, + 0x74, 0x65, 0x70, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x02, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x88, 0x01, + 0x01, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x42, 0x07, 0x0a, 0x05, 0x5f, + 0x73, 0x74, 0x65, 0x70, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x9d, + 0x01, 0x0a, 0x29, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x41, 0x72, + 0x70, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x41, + 0x64, 0x64, 0x72, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x12, 0x17, 0x0a, 0x04, + 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x04, 0x6e, 0x61, + 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x88, + 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x0d, 0x48, 0x02, 0x52, 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x88, 0x01, 0x01, 0x42, + 0x07, 0x0a, 0x05, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6f, 0x66, 0x66, + 0x73, 0x65, 0x74, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x22, 0xfb, + 0x03, 0x0a, 0x20, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x41, 0x72, + 0x70, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x41, + 0x64, 0x64, 0x72, 0x12, 0x4e, 0x0a, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x0e, 0x32, 0x31, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, + 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x41, 0x72, 0x70, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x50, 0x72, + 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x41, 0x64, 0x64, 0x72, 0x2e, 0x43, 0x68, 0x6f, 0x69, 0x63, + 0x65, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x48, 0x00, 0x52, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, + 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x09, 0x48, 0x01, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x88, 0x01, 0x01, 0x12, 0x16, + 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x06, + 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x12, 0x4a, 0x0a, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, + 0x65, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x6f, 0x74, 0x67, 0x2e, + 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x41, 0x72, 0x70, 0x54, 0x61, + 0x72, 0x67, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x41, 0x64, 0x64, 0x72, + 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, + 0x6e, 0x74, 0x12, 0x4a, 0x0a, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, + 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, + 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x41, 0x72, 0x70, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, + 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x41, 0x64, 0x64, 0x72, 0x43, 0x6f, 0x75, 0x6e, + 0x74, 0x65, 0x72, 0x52, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x4f, + 0x0a, 0x0b, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x5f, 0x74, 0x61, 0x67, 0x73, 0x18, 0x07, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, + 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x41, 0x72, 0x70, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x50, 0x72, + 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x41, 0x64, 0x64, 0x72, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x52, 0x0a, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x73, 0x1a, 0x56, 0x0a, 0x06, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x22, 0x4c, 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x0a, 0x0b, 0x75, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, @@ -105299,8 +121120,8 @@ var file_otg_proto_rawDesc = []byte{ 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x10, 0x04, 0x12, 0x0d, 0x0a, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x10, 0x05, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x8c, 0x01, 0x0a, - 0x1e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x47, 0x74, 0x70, 0x76, - 0x32, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x12, + 0x1e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x63, 0x6d, 0x70, + 0x45, 0x63, 0x68, 0x6f, 0x54, 0x79, 0x70, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x12, 0x19, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x00, 0x52, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x88, 0x01, 0x01, 0x12, 0x17, 0x0a, 0x04, 0x73, 0x74, 0x65, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x04, 0x73, 0x74, 0x65, 0x70, @@ -105308,8 +121129,8 @@ var file_otg_proto_rawDesc = []byte{ 0x28, 0x0d, 0x48, 0x02, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x88, 0x01, 0x01, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x73, 0x74, 0x65, 0x70, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x94, 0x01, 0x0a, 0x20, - 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x47, 0x74, 0x70, 0x76, 0x32, - 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, + 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x63, 0x6d, 0x70, 0x45, + 0x63, 0x68, 0x6f, 0x54, 0x79, 0x70, 0x65, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x12, 0x17, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x06, 0x6f, 0x66, 0x66, @@ -105318,27 +121139,379 @@ var file_otg_proto_rawDesc = []byte{ 0x88, 0x01, 0x01, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x22, 0xce, 0x03, 0x0a, 0x17, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, - 0x6f, 0x77, 0x47, 0x74, 0x70, 0x76, 0x32, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x45, + 0x6f, 0x77, 0x49, 0x63, 0x6d, 0x70, 0x45, 0x63, 0x68, 0x6f, 0x54, 0x79, 0x70, 0x65, 0x12, 0x45, 0x0a, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x28, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, - 0x47, 0x74, 0x70, 0x76, 0x32, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x43, 0x68, 0x6f, + 0x49, 0x63, 0x6d, 0x70, 0x45, 0x63, 0x68, 0x6f, 0x54, 0x79, 0x70, 0x65, 0x2e, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x48, 0x00, 0x52, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x88, 0x01, 0x01, 0x12, 0x16, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0d, 0x52, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x12, 0x41, 0x0a, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x6f, 0x74, - 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x47, 0x74, 0x70, - 0x76, 0x32, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, + 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x63, 0x6d, + 0x70, 0x45, 0x63, 0x68, 0x6f, 0x54, 0x79, 0x70, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x41, 0x0a, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, - 0x47, 0x74, 0x70, 0x76, 0x32, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x75, 0x6e, + 0x49, 0x63, 0x6d, 0x70, 0x45, 0x63, 0x68, 0x6f, 0x54, 0x79, 0x70, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x46, 0x0a, 0x0b, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x5f, 0x74, 0x61, 0x67, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, - 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x47, 0x74, 0x70, 0x76, 0x32, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, - 0x6e, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x52, 0x0a, 0x6d, 0x65, 0x74, 0x72, + 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x63, 0x6d, 0x70, 0x45, 0x63, 0x68, 0x6f, 0x54, 0x79, 0x70, + 0x65, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x52, 0x0a, 0x6d, 0x65, 0x74, 0x72, + 0x69, 0x63, 0x54, 0x61, 0x67, 0x73, 0x1a, 0x56, 0x0a, 0x06, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, + 0x22, 0x4c, 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x0a, 0x0b, 0x75, 0x6e, 0x73, 0x70, + 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, 0x76, 0x61, 0x6c, + 0x75, 0x65, 0x10, 0x02, 0x12, 0x0a, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x10, 0x03, + 0x12, 0x0d, 0x0a, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x10, 0x04, 0x12, + 0x0d, 0x0a, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x10, 0x05, 0x42, 0x09, + 0x0a, 0x07, 0x5f, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x76, 0x61, + 0x6c, 0x75, 0x65, 0x22, 0x8c, 0x01, 0x0a, 0x1e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, + 0x6c, 0x6f, 0x77, 0x49, 0x63, 0x6d, 0x70, 0x45, 0x63, 0x68, 0x6f, 0x43, 0x6f, 0x64, 0x65, 0x43, + 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x12, 0x19, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x00, 0x52, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x88, 0x01, + 0x01, 0x12, 0x17, 0x0a, 0x04, 0x73, 0x74, 0x65, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, + 0x01, 0x52, 0x04, 0x73, 0x74, 0x65, 0x70, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x63, 0x6f, + 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x02, 0x52, 0x05, 0x63, 0x6f, 0x75, + 0x6e, 0x74, 0x88, 0x01, 0x01, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x42, + 0x07, 0x0a, 0x05, 0x5f, 0x73, 0x74, 0x65, 0x70, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x63, 0x6f, 0x75, + 0x6e, 0x74, 0x22, 0x94, 0x01, 0x0a, 0x20, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, + 0x6f, 0x77, 0x49, 0x63, 0x6d, 0x70, 0x45, 0x63, 0x68, 0x6f, 0x43, 0x6f, 0x64, 0x65, 0x4d, 0x65, + 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x12, 0x17, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x88, 0x01, 0x01, + 0x12, 0x1b, 0x0a, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, + 0x48, 0x01, 0x52, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, + 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x02, 0x52, + 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x88, 0x01, 0x01, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x6e, + 0x61, 0x6d, 0x65, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x42, 0x09, + 0x0a, 0x07, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x22, 0xce, 0x03, 0x0a, 0x17, 0x50, 0x61, + 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x63, 0x6d, 0x70, 0x45, 0x63, 0x68, + 0x6f, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x45, 0x0a, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x28, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, + 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x63, 0x6d, 0x70, 0x45, 0x63, 0x68, 0x6f, 0x43, + 0x6f, 0x64, 0x65, 0x2e, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x48, + 0x00, 0x52, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, + 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x05, 0x76, + 0x61, 0x6c, 0x75, 0x65, 0x88, 0x01, 0x01, 0x12, 0x16, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, + 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0d, 0x52, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x12, + 0x41, 0x0a, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, + 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x63, 0x6d, 0x70, 0x45, 0x63, 0x68, 0x6f, 0x43, 0x6f, 0x64, 0x65, + 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, + 0x6e, 0x74, 0x12, 0x41, 0x0a, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, + 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, + 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x63, 0x6d, 0x70, 0x45, 0x63, 0x68, 0x6f, 0x43, + 0x6f, 0x64, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, 0x64, 0x65, 0x63, 0x72, + 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x46, 0x0a, 0x0b, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x5f, + 0x74, 0x61, 0x67, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x6f, 0x74, 0x67, + 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x63, 0x6d, 0x70, + 0x45, 0x63, 0x68, 0x6f, 0x43, 0x6f, 0x64, 0x65, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, + 0x67, 0x52, 0x0a, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x73, 0x1a, 0x56, 0x0a, + 0x06, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x22, 0x4c, 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, + 0x0f, 0x0a, 0x0b, 0x75, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x10, 0x00, + 0x12, 0x09, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x10, 0x02, 0x12, 0x0a, 0x0a, 0x06, 0x76, + 0x61, 0x6c, 0x75, 0x65, 0x73, 0x10, 0x03, 0x12, 0x0d, 0x0a, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, + 0x6d, 0x65, 0x6e, 0x74, 0x10, 0x04, 0x12, 0x0d, 0x0a, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, + 0x65, 0x6e, 0x74, 0x10, 0x05, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, + 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0xf4, 0x02, 0x0a, 0x1b, 0x50, + 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x63, 0x6d, 0x70, 0x45, 0x63, + 0x68, 0x6f, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x12, 0x49, 0x0a, 0x06, 0x63, 0x68, + 0x6f, 0x69, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2c, 0x2e, 0x6f, 0x74, 0x67, + 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x63, 0x6d, 0x70, + 0x45, 0x63, 0x68, 0x6f, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x2e, 0x43, 0x68, 0x6f, + 0x69, 0x63, 0x65, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x48, 0x00, 0x52, 0x06, 0x63, 0x68, 0x6f, 0x69, + 0x63, 0x65, 0x88, 0x01, 0x01, 0x12, 0x52, 0x0a, 0x09, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, + 0x65, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2f, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, + 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x63, 0x6d, 0x70, 0x45, 0x63, + 0x68, 0x6f, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x2e, 0x47, 0x65, 0x6e, 0x65, 0x72, + 0x61, 0x74, 0x65, 0x64, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x48, 0x01, 0x52, 0x09, 0x67, 0x65, 0x6e, + 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x63, 0x75, 0x73, + 0x74, 0x6f, 0x6d, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x02, 0x52, 0x06, 0x63, 0x75, 0x73, + 0x74, 0x6f, 0x6d, 0x88, 0x01, 0x01, 0x1a, 0x3c, 0x0a, 0x06, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, + 0x22, 0x32, 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x0a, 0x0b, 0x75, 0x6e, 0x73, 0x70, + 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x10, 0x00, 0x12, 0x0d, 0x0a, 0x09, 0x67, 0x65, 0x6e, + 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x10, 0x01, 0x12, 0x0a, 0x0a, 0x06, 0x63, 0x75, 0x73, 0x74, + 0x6f, 0x6d, 0x10, 0x02, 0x1a, 0x37, 0x0a, 0x09, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, + 0x64, 0x22, 0x2a, 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x0a, 0x0b, 0x75, 0x6e, 0x73, + 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x10, 0x00, 0x12, 0x08, 0x0a, 0x04, 0x67, 0x6f, + 0x6f, 0x64, 0x10, 0x01, 0x12, 0x07, 0x0a, 0x03, 0x62, 0x61, 0x64, 0x10, 0x02, 0x42, 0x09, 0x0a, + 0x07, 0x5f, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x67, 0x65, 0x6e, + 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x63, 0x75, 0x73, 0x74, 0x6f, + 0x6d, 0x22, 0x92, 0x01, 0x0a, 0x24, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, + 0x77, 0x49, 0x63, 0x6d, 0x70, 0x45, 0x63, 0x68, 0x6f, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, + 0x69, 0x65, 0x72, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x12, 0x19, 0x0a, 0x05, 0x73, 0x74, + 0x61, 0x72, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x00, 0x52, 0x05, 0x73, 0x74, 0x61, + 0x72, 0x74, 0x88, 0x01, 0x01, 0x12, 0x17, 0x0a, 0x04, 0x73, 0x74, 0x65, 0x70, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x04, 0x73, 0x74, 0x65, 0x70, 0x88, 0x01, 0x01, 0x12, 0x19, + 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x02, 0x52, + 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x88, 0x01, 0x01, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x73, 0x74, + 0x61, 0x72, 0x74, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x73, 0x74, 0x65, 0x70, 0x42, 0x08, 0x0a, 0x06, + 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x9a, 0x01, 0x0a, 0x26, 0x50, 0x61, 0x74, 0x74, 0x65, + 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x63, 0x6d, 0x70, 0x45, 0x63, 0x68, 0x6f, 0x49, 0x64, + 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, + 0x67, 0x12, 0x17, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, + 0x00, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x6f, 0x66, + 0x66, 0x73, 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x06, 0x6f, 0x66, + 0x66, 0x73, 0x65, 0x74, 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, + 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x02, 0x52, 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, + 0x68, 0x88, 0x01, 0x01, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x42, 0x09, 0x0a, + 0x07, 0x5f, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6c, 0x65, 0x6e, + 0x67, 0x74, 0x68, 0x22, 0xec, 0x03, 0x0a, 0x1d, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, + 0x6c, 0x6f, 0x77, 0x49, 0x63, 0x6d, 0x70, 0x45, 0x63, 0x68, 0x6f, 0x49, 0x64, 0x65, 0x6e, 0x74, + 0x69, 0x66, 0x69, 0x65, 0x72, 0x12, 0x4b, 0x0a, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2e, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, + 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x63, 0x6d, 0x70, 0x45, 0x63, 0x68, 0x6f, 0x49, + 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x2e, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, + 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x48, 0x00, 0x52, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x88, + 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x0d, 0x48, 0x01, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x88, 0x01, 0x01, 0x12, 0x16, 0x0a, + 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0d, 0x52, 0x06, 0x76, + 0x61, 0x6c, 0x75, 0x65, 0x73, 0x12, 0x47, 0x0a, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, + 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, + 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x63, 0x6d, 0x70, 0x45, 0x63, + 0x68, 0x6f, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x43, 0x6f, 0x75, 0x6e, + 0x74, 0x65, 0x72, 0x52, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x47, + 0x0a, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x29, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, + 0x6c, 0x6f, 0x77, 0x49, 0x63, 0x6d, 0x70, 0x45, 0x63, 0x68, 0x6f, 0x49, 0x64, 0x65, 0x6e, 0x74, + 0x69, 0x66, 0x69, 0x65, 0x72, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, 0x64, 0x65, + 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x4c, 0x0a, 0x0b, 0x6d, 0x65, 0x74, 0x72, 0x69, + 0x63, 0x5f, 0x74, 0x61, 0x67, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x6f, + 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x63, + 0x6d, 0x70, 0x45, 0x63, 0x68, 0x6f, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, + 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x52, 0x0a, 0x6d, 0x65, 0x74, 0x72, 0x69, + 0x63, 0x54, 0x61, 0x67, 0x73, 0x1a, 0x56, 0x0a, 0x06, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x22, + 0x4c, 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x0a, 0x0b, 0x75, 0x6e, 0x73, 0x70, 0x65, + 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, + 0x65, 0x10, 0x02, 0x12, 0x0a, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x10, 0x03, 0x12, + 0x0d, 0x0a, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x10, 0x04, 0x12, 0x0d, + 0x0a, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x10, 0x05, 0x42, 0x09, 0x0a, + 0x07, 0x5f, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x76, 0x61, 0x6c, + 0x75, 0x65, 0x22, 0x96, 0x01, 0x0a, 0x28, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, + 0x6f, 0x77, 0x49, 0x63, 0x6d, 0x70, 0x45, 0x63, 0x68, 0x6f, 0x53, 0x65, 0x71, 0x75, 0x65, 0x6e, + 0x63, 0x65, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x12, + 0x19, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x00, + 0x52, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x88, 0x01, 0x01, 0x12, 0x17, 0x0a, 0x04, 0x73, 0x74, + 0x65, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x04, 0x73, 0x74, 0x65, 0x70, + 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x0d, 0x48, 0x02, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x88, 0x01, 0x01, 0x42, 0x08, + 0x0a, 0x06, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x73, 0x74, 0x65, + 0x70, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x9e, 0x01, 0x0a, 0x2a, + 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x63, 0x6d, 0x70, 0x45, + 0x63, 0x68, 0x6f, 0x53, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x65, 0x4e, 0x75, 0x6d, 0x62, 0x65, + 0x72, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x12, 0x17, 0x0a, 0x04, 0x6e, 0x61, + 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, + 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x88, 0x01, 0x01, + 0x12, 0x1b, 0x0a, 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, + 0x48, 0x02, 0x52, 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x88, 0x01, 0x01, 0x42, 0x07, 0x0a, + 0x05, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6f, 0x66, 0x66, 0x73, 0x65, + 0x74, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x22, 0x80, 0x04, 0x0a, + 0x21, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x63, 0x6d, 0x70, + 0x45, 0x63, 0x68, 0x6f, 0x53, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x65, 0x4e, 0x75, 0x6d, 0x62, + 0x65, 0x72, 0x12, 0x4f, 0x0a, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x0e, 0x32, 0x32, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, + 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x63, 0x6d, 0x70, 0x45, 0x63, 0x68, 0x6f, 0x53, 0x65, 0x71, 0x75, + 0x65, 0x6e, 0x63, 0x65, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x2e, 0x43, 0x68, 0x6f, 0x69, 0x63, + 0x65, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x48, 0x00, 0x52, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, + 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x0d, 0x48, 0x01, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x88, 0x01, 0x01, 0x12, 0x16, + 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0d, 0x52, 0x06, + 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x12, 0x4b, 0x0a, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, + 0x65, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x6f, 0x74, 0x67, 0x2e, + 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x63, 0x6d, 0x70, 0x45, + 0x63, 0x68, 0x6f, 0x53, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x65, 0x4e, 0x75, 0x6d, 0x62, 0x65, + 0x72, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, + 0x65, 0x6e, 0x74, 0x12, 0x4b, 0x0a, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, + 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, + 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x63, 0x6d, 0x70, 0x45, 0x63, 0x68, 0x6f, + 0x53, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x65, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x43, 0x6f, + 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, + 0x12, 0x50, 0x0a, 0x0b, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x5f, 0x74, 0x61, 0x67, 0x73, 0x18, + 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, + 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x63, 0x6d, 0x70, 0x45, 0x63, 0x68, 0x6f, 0x53, + 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x65, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x4d, 0x65, 0x74, + 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x52, 0x0a, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, + 0x67, 0x73, 0x1a, 0x56, 0x0a, 0x06, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x22, 0x4c, 0x0a, 0x04, + 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x0a, 0x0b, 0x75, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, + 0x69, 0x65, 0x64, 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x10, 0x02, + 0x12, 0x0a, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x10, 0x03, 0x12, 0x0d, 0x0a, 0x09, + 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x10, 0x04, 0x12, 0x0d, 0x0a, 0x09, 0x64, + 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x10, 0x05, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x63, + 0x68, 0x6f, 0x69, 0x63, 0x65, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, + 0xfa, 0x02, 0x0a, 0x1d, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, + 0x63, 0x6d, 0x70, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, + 0x6d, 0x12, 0x4b, 0x0a, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x0e, 0x32, 0x2e, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, + 0x6c, 0x6f, 0x77, 0x49, 0x63, 0x6d, 0x70, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x43, 0x68, 0x65, + 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x2e, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x2e, 0x45, 0x6e, 0x75, + 0x6d, 0x48, 0x00, 0x52, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x88, 0x01, 0x01, 0x12, 0x54, + 0x0a, 0x09, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x0e, 0x32, 0x31, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, + 0x6c, 0x6f, 0x77, 0x49, 0x63, 0x6d, 0x70, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x43, 0x68, 0x65, + 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x2e, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x2e, + 0x45, 0x6e, 0x75, 0x6d, 0x48, 0x01, 0x52, 0x09, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, + 0x64, 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x0d, 0x48, 0x02, 0x52, 0x06, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x88, 0x01, + 0x01, 0x1a, 0x3c, 0x0a, 0x06, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x22, 0x32, 0x0a, 0x04, 0x45, + 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x0a, 0x0b, 0x75, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, + 0x65, 0x64, 0x10, 0x00, 0x12, 0x0d, 0x0a, 0x09, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, + 0x64, 0x10, 0x01, 0x12, 0x0a, 0x0a, 0x06, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x10, 0x02, 0x1a, + 0x37, 0x0a, 0x09, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x22, 0x2a, 0x0a, 0x04, + 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x0a, 0x0b, 0x75, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, + 0x69, 0x65, 0x64, 0x10, 0x00, 0x12, 0x08, 0x0a, 0x04, 0x67, 0x6f, 0x6f, 0x64, 0x10, 0x01, 0x12, + 0x07, 0x0a, 0x03, 0x62, 0x61, 0x64, 0x10, 0x02, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x63, 0x68, 0x6f, + 0x69, 0x63, 0x65, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, + 0x64, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x22, 0x98, 0x01, 0x0a, + 0x2a, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x63, 0x6d, 0x70, + 0x4e, 0x65, 0x78, 0x74, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, + 0x66, 0x69, 0x65, 0x72, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x12, 0x19, 0x0a, 0x05, 0x73, + 0x74, 0x61, 0x72, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x00, 0x52, 0x05, 0x73, 0x74, + 0x61, 0x72, 0x74, 0x88, 0x01, 0x01, 0x12, 0x17, 0x0a, 0x04, 0x73, 0x74, 0x65, 0x70, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x04, 0x73, 0x74, 0x65, 0x70, 0x88, 0x01, 0x01, 0x12, + 0x19, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x02, + 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x88, 0x01, 0x01, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x73, + 0x74, 0x61, 0x72, 0x74, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x73, 0x74, 0x65, 0x70, 0x42, 0x08, 0x0a, + 0x06, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0xa0, 0x01, 0x0a, 0x2c, 0x50, 0x61, 0x74, 0x74, + 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x63, 0x6d, 0x70, 0x4e, 0x65, 0x78, 0x74, 0x46, + 0x69, 0x65, 0x6c, 0x64, 0x73, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x4d, + 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x12, 0x17, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x88, 0x01, + 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x0d, 0x48, 0x01, 0x52, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x88, 0x01, 0x01, 0x12, 0x1b, + 0x0a, 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x02, + 0x52, 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x88, 0x01, 0x01, 0x42, 0x07, 0x0a, 0x05, 0x5f, + 0x6e, 0x61, 0x6d, 0x65, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x42, + 0x09, 0x0a, 0x07, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x22, 0x8a, 0x04, 0x0a, 0x23, 0x50, + 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x63, 0x6d, 0x70, 0x4e, 0x65, + 0x78, 0x74, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, + 0x65, 0x72, 0x12, 0x51, 0x0a, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x0e, 0x32, 0x34, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, + 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x63, 0x6d, 0x70, 0x4e, 0x65, 0x78, 0x74, 0x46, 0x69, 0x65, 0x6c, + 0x64, 0x73, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x2e, 0x43, 0x68, 0x6f, + 0x69, 0x63, 0x65, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x48, 0x00, 0x52, 0x06, 0x63, 0x68, 0x6f, 0x69, + 0x63, 0x65, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x88, 0x01, 0x01, + 0x12, 0x16, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0d, + 0x52, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x12, 0x4d, 0x0a, 0x09, 0x69, 0x6e, 0x63, 0x72, + 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x6f, 0x74, + 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x63, 0x6d, + 0x70, 0x4e, 0x65, 0x78, 0x74, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x49, 0x64, 0x65, 0x6e, 0x74, + 0x69, 0x66, 0x69, 0x65, 0x72, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, 0x69, 0x6e, + 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x4d, 0x0a, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, + 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x6f, 0x74, 0x67, + 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x63, 0x6d, 0x70, + 0x4e, 0x65, 0x78, 0x74, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, + 0x66, 0x69, 0x65, 0x72, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, 0x64, 0x65, 0x63, + 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x52, 0x0a, 0x0b, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, + 0x5f, 0x74, 0x61, 0x67, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x31, 0x2e, 0x6f, 0x74, + 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x63, 0x6d, + 0x70, 0x4e, 0x65, 0x78, 0x74, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x49, 0x64, 0x65, 0x6e, 0x74, + 0x69, 0x66, 0x69, 0x65, 0x72, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x52, 0x0a, + 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x73, 0x1a, 0x56, 0x0a, 0x06, 0x43, 0x68, + 0x6f, 0x69, 0x63, 0x65, 0x22, 0x4c, 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x0a, 0x0b, + 0x75, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x10, 0x00, 0x12, 0x09, 0x0a, + 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x10, 0x02, 0x12, 0x0a, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, + 0x65, 0x73, 0x10, 0x03, 0x12, 0x0d, 0x0a, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, + 0x74, 0x10, 0x04, 0x12, 0x0d, 0x0a, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, + 0x10, 0x05, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x42, 0x08, 0x0a, + 0x06, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x9c, 0x01, 0x0a, 0x2e, 0x50, 0x61, 0x74, 0x74, + 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x63, 0x6d, 0x70, 0x4e, 0x65, 0x78, 0x74, 0x46, + 0x69, 0x65, 0x6c, 0x64, 0x73, 0x53, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x65, 0x4e, 0x75, 0x6d, + 0x62, 0x65, 0x72, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x12, 0x19, 0x0a, 0x05, 0x73, 0x74, + 0x61, 0x72, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x00, 0x52, 0x05, 0x73, 0x74, 0x61, + 0x72, 0x74, 0x88, 0x01, 0x01, 0x12, 0x17, 0x0a, 0x04, 0x73, 0x74, 0x65, 0x70, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x04, 0x73, 0x74, 0x65, 0x70, 0x88, 0x01, 0x01, 0x12, 0x19, + 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x02, 0x52, + 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x88, 0x01, 0x01, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x73, 0x74, + 0x61, 0x72, 0x74, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x73, 0x74, 0x65, 0x70, 0x42, 0x08, 0x0a, 0x06, + 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0xa4, 0x01, 0x0a, 0x30, 0x50, 0x61, 0x74, 0x74, 0x65, + 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x63, 0x6d, 0x70, 0x4e, 0x65, 0x78, 0x74, 0x46, 0x69, + 0x65, 0x6c, 0x64, 0x73, 0x53, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x65, 0x4e, 0x75, 0x6d, 0x62, + 0x65, 0x72, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x12, 0x17, 0x0a, 0x04, 0x6e, + 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x04, 0x6e, 0x61, 0x6d, + 0x65, 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x88, 0x01, + 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x0d, 0x48, 0x02, 0x52, 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x88, 0x01, 0x01, 0x42, 0x07, + 0x0a, 0x05, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6f, 0x66, 0x66, 0x73, + 0x65, 0x74, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x22, 0x9e, 0x04, + 0x0a, 0x27, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x63, 0x6d, + 0x70, 0x4e, 0x65, 0x78, 0x74, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x53, 0x65, 0x71, 0x75, 0x65, + 0x6e, 0x63, 0x65, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x55, 0x0a, 0x06, 0x63, 0x68, 0x6f, + 0x69, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x38, 0x2e, 0x6f, 0x74, 0x67, 0x2e, + 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x63, 0x6d, 0x70, 0x4e, + 0x65, 0x78, 0x74, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x53, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, + 0x65, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x2e, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x2e, 0x45, + 0x6e, 0x75, 0x6d, 0x48, 0x00, 0x52, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x88, 0x01, 0x01, + 0x12, 0x19, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, + 0x01, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x88, 0x01, 0x01, 0x12, 0x16, 0x0a, 0x06, 0x76, + 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0d, 0x52, 0x06, 0x76, 0x61, 0x6c, + 0x75, 0x65, 0x73, 0x12, 0x51, 0x0a, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, + 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x33, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, + 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x63, 0x6d, 0x70, 0x4e, 0x65, 0x78, 0x74, + 0x46, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x53, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x65, 0x4e, 0x75, + 0x6d, 0x62, 0x65, 0x72, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, 0x69, 0x6e, 0x63, + 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x51, 0x0a, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, + 0x65, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x33, 0x2e, 0x6f, 0x74, 0x67, 0x2e, + 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x63, 0x6d, 0x70, 0x4e, + 0x65, 0x78, 0x74, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x53, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, + 0x65, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, + 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x56, 0x0a, 0x0b, 0x6d, 0x65, 0x74, + 0x72, 0x69, 0x63, 0x5f, 0x74, 0x61, 0x67, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x35, + 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, + 0x49, 0x63, 0x6d, 0x70, 0x4e, 0x65, 0x78, 0x74, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x53, 0x65, + 0x71, 0x75, 0x65, 0x6e, 0x63, 0x65, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x4d, 0x65, 0x74, 0x72, + 0x69, 0x63, 0x54, 0x61, 0x67, 0x52, 0x0a, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, + 0x73, 0x1a, 0x56, 0x0a, 0x06, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x22, 0x4c, 0x0a, 0x04, 0x45, + 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x0a, 0x0b, 0x75, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, + 0x65, 0x64, 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x10, 0x02, 0x12, + 0x0a, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x10, 0x03, 0x12, 0x0d, 0x0a, 0x09, 0x69, + 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x10, 0x04, 0x12, 0x0d, 0x0a, 0x09, 0x64, 0x65, + 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x10, 0x05, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x63, 0x68, + 0x6f, 0x69, 0x63, 0x65, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x8e, + 0x01, 0x0a, 0x20, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x63, + 0x6d, 0x70, 0x76, 0x36, 0x45, 0x63, 0x68, 0x6f, 0x54, 0x79, 0x70, 0x65, 0x43, 0x6f, 0x75, 0x6e, + 0x74, 0x65, 0x72, 0x12, 0x19, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x0d, 0x48, 0x00, 0x52, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x88, 0x01, 0x01, 0x12, 0x17, + 0x0a, 0x04, 0x73, 0x74, 0x65, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x04, + 0x73, 0x74, 0x65, 0x70, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x02, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x88, + 0x01, 0x01, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x42, 0x07, 0x0a, 0x05, + 0x5f, 0x73, 0x74, 0x65, 0x70, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x22, + 0x96, 0x01, 0x0a, 0x22, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, + 0x63, 0x6d, 0x70, 0x76, 0x36, 0x45, 0x63, 0x68, 0x6f, 0x54, 0x79, 0x70, 0x65, 0x4d, 0x65, 0x74, + 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x12, 0x17, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, + 0x1b, 0x0a, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, + 0x01, 0x52, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, + 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x02, 0x52, 0x06, + 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x88, 0x01, 0x01, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x6e, 0x61, + 0x6d, 0x65, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x42, 0x09, 0x0a, + 0x07, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x22, 0xd8, 0x03, 0x0a, 0x19, 0x50, 0x61, 0x74, + 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x63, 0x6d, 0x70, 0x76, 0x36, 0x45, 0x63, + 0x68, 0x6f, 0x54, 0x79, 0x70, 0x65, 0x12, 0x47, 0x0a, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2a, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, + 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x63, 0x6d, 0x70, 0x76, 0x36, 0x45, 0x63, + 0x68, 0x6f, 0x54, 0x79, 0x70, 0x65, 0x2e, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x2e, 0x45, 0x6e, + 0x75, 0x6d, 0x48, 0x00, 0x52, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x88, 0x01, 0x01, 0x12, + 0x19, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, + 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x88, 0x01, 0x01, 0x12, 0x16, 0x0a, 0x06, 0x76, 0x61, + 0x6c, 0x75, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0d, 0x52, 0x06, 0x76, 0x61, 0x6c, 0x75, + 0x65, 0x73, 0x12, 0x43, 0x0a, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, + 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, + 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x63, 0x6d, 0x70, 0x76, 0x36, 0x45, 0x63, 0x68, + 0x6f, 0x54, 0x79, 0x70, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, 0x69, 0x6e, + 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x43, 0x0a, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, + 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x6f, 0x74, 0x67, + 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x63, 0x6d, 0x70, + 0x76, 0x36, 0x45, 0x63, 0x68, 0x6f, 0x54, 0x79, 0x70, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, + 0x72, 0x52, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x48, 0x0a, 0x0b, + 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x5f, 0x74, 0x61, 0x67, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x27, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, + 0x6c, 0x6f, 0x77, 0x49, 0x63, 0x6d, 0x70, 0x76, 0x36, 0x45, 0x63, 0x68, 0x6f, 0x54, 0x79, 0x70, + 0x65, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x52, 0x0a, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x73, 0x1a, 0x56, 0x0a, 0x06, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x22, 0x4c, 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x0a, 0x0b, 0x75, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, 0x76, 0x61, 0x6c, @@ -105346,145 +121519,98 @@ var file_otg_proto_rawDesc = []byte{ 0x12, 0x0d, 0x0a, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x10, 0x04, 0x12, 0x0d, 0x0a, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x10, 0x05, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x76, 0x61, - 0x6c, 0x75, 0x65, 0x22, 0x95, 0x01, 0x0a, 0x27, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, - 0x6c, 0x6f, 0x77, 0x47, 0x74, 0x70, 0x76, 0x32, 0x50, 0x69, 0x67, 0x67, 0x79, 0x62, 0x61, 0x63, - 0x6b, 0x69, 0x6e, 0x67, 0x46, 0x6c, 0x61, 0x67, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x12, - 0x19, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x00, - 0x52, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x88, 0x01, 0x01, 0x12, 0x17, 0x0a, 0x04, 0x73, 0x74, - 0x65, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x04, 0x73, 0x74, 0x65, 0x70, - 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x0d, 0x48, 0x02, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x88, 0x01, 0x01, 0x42, 0x08, - 0x0a, 0x06, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x73, 0x74, 0x65, - 0x70, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x9d, 0x01, 0x0a, 0x29, - 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x47, 0x74, 0x70, 0x76, 0x32, - 0x50, 0x69, 0x67, 0x67, 0x79, 0x62, 0x61, 0x63, 0x6b, 0x69, 0x6e, 0x67, 0x46, 0x6c, 0x61, 0x67, - 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x12, 0x17, 0x0a, 0x04, 0x6e, 0x61, 0x6d, - 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x88, - 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x0d, 0x48, 0x01, 0x52, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x88, 0x01, 0x01, 0x12, - 0x1b, 0x0a, 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x48, - 0x02, 0x52, 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x88, 0x01, 0x01, 0x42, 0x07, 0x0a, 0x05, - 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, - 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x22, 0xfb, 0x03, 0x0a, 0x20, - 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x47, 0x74, 0x70, 0x76, 0x32, - 0x50, 0x69, 0x67, 0x67, 0x79, 0x62, 0x61, 0x63, 0x6b, 0x69, 0x6e, 0x67, 0x46, 0x6c, 0x61, 0x67, - 0x12, 0x4e, 0x0a, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, - 0x32, 0x31, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, - 0x6f, 0x77, 0x47, 0x74, 0x70, 0x76, 0x32, 0x50, 0x69, 0x67, 0x67, 0x79, 0x62, 0x61, 0x63, 0x6b, - 0x69, 0x6e, 0x67, 0x46, 0x6c, 0x61, 0x67, 0x2e, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x2e, 0x45, - 0x6e, 0x75, 0x6d, 0x48, 0x00, 0x52, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x88, 0x01, 0x01, - 0x12, 0x19, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, - 0x01, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x88, 0x01, 0x01, 0x12, 0x16, 0x0a, 0x06, 0x76, - 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0d, 0x52, 0x06, 0x76, 0x61, 0x6c, - 0x75, 0x65, 0x73, 0x12, 0x4a, 0x0a, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, - 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, - 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x47, 0x74, 0x70, 0x76, 0x32, 0x50, 0x69, 0x67, - 0x67, 0x79, 0x62, 0x61, 0x63, 0x6b, 0x69, 0x6e, 0x67, 0x46, 0x6c, 0x61, 0x67, 0x43, 0x6f, 0x75, - 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, - 0x4a, 0x0a, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, - 0x46, 0x6c, 0x6f, 0x77, 0x47, 0x74, 0x70, 0x76, 0x32, 0x50, 0x69, 0x67, 0x67, 0x79, 0x62, 0x61, - 0x63, 0x6b, 0x69, 0x6e, 0x67, 0x46, 0x6c, 0x61, 0x67, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, - 0x52, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x4f, 0x0a, 0x0b, 0x6d, - 0x65, 0x74, 0x72, 0x69, 0x63, 0x5f, 0x74, 0x61, 0x67, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, - 0x32, 0x2e, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, - 0x6f, 0x77, 0x47, 0x74, 0x70, 0x76, 0x32, 0x50, 0x69, 0x67, 0x67, 0x79, 0x62, 0x61, 0x63, 0x6b, - 0x69, 0x6e, 0x67, 0x46, 0x6c, 0x61, 0x67, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, - 0x52, 0x0a, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x73, 0x1a, 0x56, 0x0a, 0x06, - 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x22, 0x4c, 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0f, - 0x0a, 0x0b, 0x75, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x10, 0x00, 0x12, - 0x09, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x10, 0x02, 0x12, 0x0a, 0x0a, 0x06, 0x76, 0x61, - 0x6c, 0x75, 0x65, 0x73, 0x10, 0x03, 0x12, 0x0d, 0x0a, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, - 0x65, 0x6e, 0x74, 0x10, 0x04, 0x12, 0x0d, 0x0a, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, - 0x6e, 0x74, 0x10, 0x05, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x42, - 0x08, 0x0a, 0x06, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x8d, 0x01, 0x0a, 0x1f, 0x50, 0x61, - 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x47, 0x74, 0x70, 0x76, 0x32, 0x54, 0x65, - 0x69, 0x64, 0x46, 0x6c, 0x61, 0x67, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x12, 0x19, 0x0a, - 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x00, 0x52, 0x05, - 0x73, 0x74, 0x61, 0x72, 0x74, 0x88, 0x01, 0x01, 0x12, 0x17, 0x0a, 0x04, 0x73, 0x74, 0x65, 0x70, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x04, 0x73, 0x74, 0x65, 0x70, 0x88, 0x01, - 0x01, 0x12, 0x19, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, - 0x48, 0x02, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x88, 0x01, 0x01, 0x42, 0x08, 0x0a, 0x06, - 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x73, 0x74, 0x65, 0x70, 0x42, - 0x08, 0x0a, 0x06, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x95, 0x01, 0x0a, 0x21, 0x50, 0x61, - 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x47, 0x74, 0x70, 0x76, 0x32, 0x54, 0x65, - 0x69, 0x64, 0x46, 0x6c, 0x61, 0x67, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x12, - 0x17, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, - 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x6f, 0x66, 0x66, 0x73, - 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x06, 0x6f, 0x66, 0x66, 0x73, - 0x65, 0x74, 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x02, 0x52, 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x88, - 0x01, 0x01, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x42, 0x09, 0x0a, 0x07, 0x5f, - 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, - 0x68, 0x22, 0xd3, 0x03, 0x0a, 0x18, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, - 0x77, 0x47, 0x74, 0x70, 0x76, 0x32, 0x54, 0x65, 0x69, 0x64, 0x46, 0x6c, 0x61, 0x67, 0x12, 0x46, - 0x0a, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x29, - 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, - 0x47, 0x74, 0x70, 0x76, 0x32, 0x54, 0x65, 0x69, 0x64, 0x46, 0x6c, 0x61, 0x67, 0x2e, 0x43, 0x68, - 0x6f, 0x69, 0x63, 0x65, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x48, 0x00, 0x52, 0x06, 0x63, 0x68, 0x6f, - 0x69, 0x63, 0x65, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x88, 0x01, - 0x01, 0x12, 0x16, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, - 0x0d, 0x52, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x12, 0x42, 0x0a, 0x09, 0x69, 0x6e, 0x63, - 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x6f, - 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x47, 0x74, - 0x70, 0x76, 0x32, 0x54, 0x65, 0x69, 0x64, 0x46, 0x6c, 0x61, 0x67, 0x43, 0x6f, 0x75, 0x6e, 0x74, - 0x65, 0x72, 0x52, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x42, 0x0a, - 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x24, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, - 0x6f, 0x77, 0x47, 0x74, 0x70, 0x76, 0x32, 0x54, 0x65, 0x69, 0x64, 0x46, 0x6c, 0x61, 0x67, 0x43, + 0x6c, 0x75, 0x65, 0x22, 0x8e, 0x01, 0x0a, 0x20, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, + 0x6c, 0x6f, 0x77, 0x49, 0x63, 0x6d, 0x70, 0x76, 0x36, 0x45, 0x63, 0x68, 0x6f, 0x43, 0x6f, 0x64, + 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x12, 0x19, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x72, + 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x00, 0x52, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, + 0x88, 0x01, 0x01, 0x12, 0x17, 0x0a, 0x04, 0x73, 0x74, 0x65, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x0d, 0x48, 0x01, 0x52, 0x04, 0x73, 0x74, 0x65, 0x70, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, + 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x02, 0x52, 0x05, 0x63, + 0x6f, 0x75, 0x6e, 0x74, 0x88, 0x01, 0x01, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x73, 0x74, 0x61, 0x72, + 0x74, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x73, 0x74, 0x65, 0x70, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x63, + 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x96, 0x01, 0x0a, 0x22, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, + 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x63, 0x6d, 0x70, 0x76, 0x36, 0x45, 0x63, 0x68, 0x6f, 0x43, 0x6f, + 0x64, 0x65, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x12, 0x17, 0x0a, 0x04, 0x6e, + 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x04, 0x6e, 0x61, 0x6d, + 0x65, 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x88, 0x01, + 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x0d, 0x48, 0x02, 0x52, 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x88, 0x01, 0x01, 0x42, 0x07, + 0x0a, 0x05, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6f, 0x66, 0x66, 0x73, + 0x65, 0x74, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x22, 0xd8, 0x03, + 0x0a, 0x19, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x63, 0x6d, + 0x70, 0x76, 0x36, 0x45, 0x63, 0x68, 0x6f, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x47, 0x0a, 0x06, 0x63, + 0x68, 0x6f, 0x69, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2a, 0x2e, 0x6f, 0x74, + 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x63, 0x6d, + 0x70, 0x76, 0x36, 0x45, 0x63, 0x68, 0x6f, 0x43, 0x6f, 0x64, 0x65, 0x2e, 0x43, 0x68, 0x6f, 0x69, + 0x63, 0x65, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x48, 0x00, 0x52, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, + 0x65, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x88, 0x01, 0x01, 0x12, + 0x16, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0d, 0x52, + 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x12, 0x43, 0x0a, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, + 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x6f, 0x74, 0x67, + 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x63, 0x6d, 0x70, + 0x76, 0x36, 0x45, 0x63, 0x68, 0x6f, 0x43, 0x6f, 0x64, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, + 0x72, 0x52, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x43, 0x0a, 0x09, + 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x25, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, + 0x77, 0x49, 0x63, 0x6d, 0x70, 0x76, 0x36, 0x45, 0x63, 0x68, 0x6f, 0x43, 0x6f, 0x64, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, - 0x74, 0x12, 0x47, 0x0a, 0x0b, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x5f, 0x74, 0x61, 0x67, 0x73, - 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, - 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x47, 0x74, 0x70, 0x76, 0x32, 0x54, 0x65, 0x69, - 0x64, 0x46, 0x6c, 0x61, 0x67, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x52, 0x0a, - 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x73, 0x1a, 0x56, 0x0a, 0x06, 0x43, 0x68, - 0x6f, 0x69, 0x63, 0x65, 0x22, 0x4c, 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x0a, 0x0b, - 0x75, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x10, 0x00, 0x12, 0x09, 0x0a, - 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x10, 0x02, 0x12, 0x0a, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, - 0x65, 0x73, 0x10, 0x03, 0x12, 0x0d, 0x0a, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, - 0x74, 0x10, 0x04, 0x12, 0x0d, 0x0a, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, - 0x10, 0x05, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x42, 0x08, 0x0a, - 0x06, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x8b, 0x01, 0x0a, 0x1d, 0x50, 0x61, 0x74, 0x74, - 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x47, 0x74, 0x70, 0x76, 0x32, 0x53, 0x70, 0x61, 0x72, - 0x65, 0x31, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x12, 0x19, 0x0a, 0x05, 0x73, 0x74, 0x61, - 0x72, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x00, 0x52, 0x05, 0x73, 0x74, 0x61, 0x72, - 0x74, 0x88, 0x01, 0x01, 0x12, 0x17, 0x0a, 0x04, 0x73, 0x74, 0x65, 0x70, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x0d, 0x48, 0x01, 0x52, 0x04, 0x73, 0x74, 0x65, 0x70, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, - 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x02, 0x52, 0x05, - 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x88, 0x01, 0x01, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x73, 0x74, 0x61, - 0x72, 0x74, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x73, 0x74, 0x65, 0x70, 0x42, 0x08, 0x0a, 0x06, 0x5f, - 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x93, 0x01, 0x0a, 0x1f, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, - 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x47, 0x74, 0x70, 0x76, 0x32, 0x53, 0x70, 0x61, 0x72, 0x65, 0x31, - 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x12, 0x17, 0x0a, 0x04, 0x6e, 0x61, 0x6d, - 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x88, - 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x0d, 0x48, 0x01, 0x52, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x88, 0x01, 0x01, 0x12, - 0x1b, 0x0a, 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x48, - 0x02, 0x52, 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x88, 0x01, 0x01, 0x42, 0x07, 0x0a, 0x05, - 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, - 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x22, 0xc9, 0x03, 0x0a, 0x16, - 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x47, 0x74, 0x70, 0x76, 0x32, - 0x53, 0x70, 0x61, 0x72, 0x65, 0x31, 0x12, 0x44, 0x0a, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x27, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, - 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x47, 0x74, 0x70, 0x76, 0x32, 0x53, 0x70, 0x61, - 0x72, 0x65, 0x31, 0x2e, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x48, - 0x00, 0x52, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, - 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x05, 0x76, - 0x61, 0x6c, 0x75, 0x65, 0x88, 0x01, 0x01, 0x12, 0x16, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, - 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0d, 0x52, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x12, - 0x40, 0x0a, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, - 0x46, 0x6c, 0x6f, 0x77, 0x47, 0x74, 0x70, 0x76, 0x32, 0x53, 0x70, 0x61, 0x72, 0x65, 0x31, 0x43, - 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, - 0x74, 0x12, 0x40, 0x0a, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x06, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, - 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x47, 0x74, 0x70, 0x76, 0x32, 0x53, 0x70, 0x61, 0x72, 0x65, - 0x31, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, - 0x65, 0x6e, 0x74, 0x12, 0x45, 0x0a, 0x0b, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x5f, 0x74, 0x61, - 0x67, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, - 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x47, 0x74, 0x70, 0x76, 0x32, 0x53, - 0x70, 0x61, 0x72, 0x65, 0x31, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x52, 0x0a, + 0x74, 0x12, 0x48, 0x0a, 0x0b, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x5f, 0x74, 0x61, 0x67, 0x73, + 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, + 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x63, 0x6d, 0x70, 0x76, 0x36, 0x45, 0x63, + 0x68, 0x6f, 0x43, 0x6f, 0x64, 0x65, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x52, + 0x0a, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x73, 0x1a, 0x56, 0x0a, 0x06, 0x43, + 0x68, 0x6f, 0x69, 0x63, 0x65, 0x22, 0x4c, 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x0a, + 0x0b, 0x75, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x10, 0x00, 0x12, 0x09, + 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x10, 0x02, 0x12, 0x0a, 0x0a, 0x06, 0x76, 0x61, 0x6c, + 0x75, 0x65, 0x73, 0x10, 0x03, 0x12, 0x0d, 0x0a, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, + 0x6e, 0x74, 0x10, 0x04, 0x12, 0x0d, 0x0a, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, + 0x74, 0x10, 0x05, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x42, 0x08, + 0x0a, 0x06, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x94, 0x01, 0x0a, 0x26, 0x50, 0x61, 0x74, + 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x63, 0x6d, 0x70, 0x76, 0x36, 0x45, 0x63, + 0x68, 0x6f, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x43, 0x6f, 0x75, 0x6e, + 0x74, 0x65, 0x72, 0x12, 0x19, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x0d, 0x48, 0x00, 0x52, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x88, 0x01, 0x01, 0x12, 0x17, + 0x0a, 0x04, 0x73, 0x74, 0x65, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x04, + 0x73, 0x74, 0x65, 0x70, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x02, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x88, + 0x01, 0x01, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x42, 0x07, 0x0a, 0x05, + 0x5f, 0x73, 0x74, 0x65, 0x70, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x22, + 0x9c, 0x01, 0x0a, 0x28, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, + 0x63, 0x6d, 0x70, 0x76, 0x36, 0x45, 0x63, 0x68, 0x6f, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, + 0x69, 0x65, 0x72, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x12, 0x17, 0x0a, 0x04, + 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x04, 0x6e, 0x61, + 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x88, + 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x0d, 0x48, 0x02, 0x52, 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x88, 0x01, 0x01, 0x42, + 0x07, 0x0a, 0x05, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6f, 0x66, 0x66, + 0x73, 0x65, 0x74, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x22, 0xf6, + 0x03, 0x0a, 0x1f, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x63, + 0x6d, 0x70, 0x76, 0x36, 0x45, 0x63, 0x68, 0x6f, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, + 0x65, 0x72, 0x12, 0x4d, 0x0a, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x0e, 0x32, 0x30, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, + 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x63, 0x6d, 0x70, 0x76, 0x36, 0x45, 0x63, 0x68, 0x6f, 0x49, 0x64, + 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x2e, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x2e, + 0x45, 0x6e, 0x75, 0x6d, 0x48, 0x00, 0x52, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x88, 0x01, + 0x01, 0x12, 0x19, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, + 0x48, 0x01, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x88, 0x01, 0x01, 0x12, 0x16, 0x0a, 0x06, + 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0d, 0x52, 0x06, 0x76, 0x61, + 0x6c, 0x75, 0x65, 0x73, 0x12, 0x49, 0x0a, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, + 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, + 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x63, 0x6d, 0x70, 0x76, 0x36, 0x45, + 0x63, 0x68, 0x6f, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x43, 0x6f, 0x75, + 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, + 0x49, 0x0a, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, + 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x63, 0x6d, 0x70, 0x76, 0x36, 0x45, 0x63, 0x68, 0x6f, 0x49, 0x64, + 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, + 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x4e, 0x0a, 0x0b, 0x6d, 0x65, + 0x74, 0x72, 0x69, 0x63, 0x5f, 0x74, 0x61, 0x67, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x2d, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, + 0x77, 0x49, 0x63, 0x6d, 0x70, 0x76, 0x36, 0x45, 0x63, 0x68, 0x6f, 0x49, 0x64, 0x65, 0x6e, 0x74, + 0x69, 0x66, 0x69, 0x65, 0x72, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x52, 0x0a, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x73, 0x1a, 0x56, 0x0a, 0x06, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x22, 0x4c, 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x0a, 0x0b, 0x75, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x10, 0x00, 0x12, 0x09, 0x0a, @@ -105492,18 +121618,19 @@ var file_otg_proto_rawDesc = []byte{ 0x65, 0x73, 0x10, 0x03, 0x12, 0x0d, 0x0a, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x10, 0x04, 0x12, 0x0d, 0x0a, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x10, 0x05, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x42, 0x08, 0x0a, - 0x06, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x90, 0x01, 0x0a, 0x22, 0x50, 0x61, 0x74, 0x74, - 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x47, 0x74, 0x70, 0x76, 0x32, 0x4d, 0x65, 0x73, 0x73, - 0x61, 0x67, 0x65, 0x54, 0x79, 0x70, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x12, 0x19, - 0x0a, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x00, 0x52, - 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x88, 0x01, 0x01, 0x12, 0x17, 0x0a, 0x04, 0x73, 0x74, 0x65, - 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x04, 0x73, 0x74, 0x65, 0x70, 0x88, - 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x0d, 0x48, 0x02, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x88, 0x01, 0x01, 0x42, 0x08, 0x0a, - 0x06, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x73, 0x74, 0x65, 0x70, - 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x98, 0x01, 0x0a, 0x24, 0x50, - 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x47, 0x74, 0x70, 0x76, 0x32, 0x4d, - 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x54, 0x79, 0x70, 0x65, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, + 0x06, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x98, 0x01, 0x0a, 0x2a, 0x50, 0x61, 0x74, 0x74, + 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x63, 0x6d, 0x70, 0x76, 0x36, 0x45, 0x63, 0x68, + 0x6f, 0x53, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x65, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x43, + 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x12, 0x19, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x00, 0x52, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x88, 0x01, + 0x01, 0x12, 0x17, 0x0a, 0x04, 0x73, 0x74, 0x65, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, + 0x01, 0x52, 0x04, 0x73, 0x74, 0x65, 0x70, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x63, 0x6f, + 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x02, 0x52, 0x05, 0x63, 0x6f, 0x75, + 0x6e, 0x74, 0x88, 0x01, 0x01, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x42, + 0x07, 0x0a, 0x05, 0x5f, 0x73, 0x74, 0x65, 0x70, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x63, 0x6f, 0x75, + 0x6e, 0x74, 0x22, 0xa0, 0x01, 0x0a, 0x2c, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, + 0x6f, 0x77, 0x49, 0x63, 0x6d, 0x70, 0x76, 0x36, 0x45, 0x63, 0x68, 0x6f, 0x53, 0x65, 0x71, 0x75, + 0x65, 0x6e, 0x63, 0x65, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x12, 0x17, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x06, @@ -105511,39 +121638,89 @@ var file_otg_proto_rawDesc = []byte{ 0x67, 0x74, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x02, 0x52, 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x88, 0x01, 0x01, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6c, - 0x65, 0x6e, 0x67, 0x74, 0x68, 0x22, 0xe2, 0x03, 0x0a, 0x1b, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, - 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x47, 0x74, 0x70, 0x76, 0x32, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, - 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x49, 0x0a, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2c, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, - 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x47, 0x74, 0x70, 0x76, 0x32, 0x4d, 0x65, 0x73, 0x73, - 0x61, 0x67, 0x65, 0x54, 0x79, 0x70, 0x65, 0x2e, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x2e, 0x45, + 0x65, 0x6e, 0x67, 0x74, 0x68, 0x22, 0x8a, 0x04, 0x0a, 0x23, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, + 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x63, 0x6d, 0x70, 0x76, 0x36, 0x45, 0x63, 0x68, 0x6f, 0x53, + 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x65, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x51, 0x0a, + 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x34, 0x2e, + 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, + 0x63, 0x6d, 0x70, 0x76, 0x36, 0x45, 0x63, 0x68, 0x6f, 0x53, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, + 0x65, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x2e, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x48, 0x00, 0x52, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x88, 0x01, 0x01, 0x12, 0x16, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0d, 0x52, 0x06, 0x76, 0x61, 0x6c, - 0x75, 0x65, 0x73, 0x12, 0x45, 0x0a, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, - 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, - 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x47, 0x74, 0x70, 0x76, 0x32, 0x4d, 0x65, 0x73, - 0x73, 0x61, 0x67, 0x65, 0x54, 0x79, 0x70, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, - 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x45, 0x0a, 0x09, 0x64, 0x65, - 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, - 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x47, - 0x74, 0x70, 0x76, 0x32, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x54, 0x79, 0x70, 0x65, 0x43, + 0x75, 0x65, 0x73, 0x12, 0x4d, 0x0a, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, + 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, + 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x63, 0x6d, 0x70, 0x76, 0x36, 0x45, 0x63, + 0x68, 0x6f, 0x53, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x65, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, + 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, + 0x6e, 0x74, 0x12, 0x4d, 0x0a, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, + 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, + 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x63, 0x6d, 0x70, 0x76, 0x36, 0x45, 0x63, 0x68, + 0x6f, 0x53, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x65, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, - 0x74, 0x12, 0x4a, 0x0a, 0x0b, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x5f, 0x74, 0x61, 0x67, 0x73, - 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, - 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x47, 0x74, 0x70, 0x76, 0x32, 0x4d, 0x65, 0x73, - 0x73, 0x61, 0x67, 0x65, 0x54, 0x79, 0x70, 0x65, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, - 0x67, 0x52, 0x0a, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x73, 0x1a, 0x56, 0x0a, - 0x06, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x22, 0x4c, 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, - 0x0f, 0x0a, 0x0b, 0x75, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x10, 0x00, - 0x12, 0x09, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x10, 0x02, 0x12, 0x0a, 0x0a, 0x06, 0x76, - 0x61, 0x6c, 0x75, 0x65, 0x73, 0x10, 0x03, 0x12, 0x0d, 0x0a, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, - 0x6d, 0x65, 0x6e, 0x74, 0x10, 0x04, 0x12, 0x0d, 0x0a, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, - 0x65, 0x6e, 0x74, 0x10, 0x05, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, - 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x92, 0x01, 0x0a, 0x24, 0x50, - 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x47, 0x74, 0x70, 0x76, 0x32, 0x4d, - 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x43, 0x6f, 0x75, 0x6e, + 0x74, 0x12, 0x52, 0x0a, 0x0b, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x5f, 0x74, 0x61, 0x67, 0x73, + 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x31, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, + 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x63, 0x6d, 0x70, 0x76, 0x36, 0x45, 0x63, + 0x68, 0x6f, 0x53, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x65, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, + 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x52, 0x0a, 0x6d, 0x65, 0x74, 0x72, 0x69, + 0x63, 0x54, 0x61, 0x67, 0x73, 0x1a, 0x56, 0x0a, 0x06, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x22, + 0x4c, 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x0a, 0x0b, 0x75, 0x6e, 0x73, 0x70, 0x65, + 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, + 0x65, 0x10, 0x02, 0x12, 0x0a, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x10, 0x03, 0x12, + 0x0d, 0x0a, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x10, 0x04, 0x12, 0x0d, + 0x0a, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x10, 0x05, 0x42, 0x09, 0x0a, + 0x07, 0x5f, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x76, 0x61, 0x6c, + 0x75, 0x65, 0x22, 0xfa, 0x02, 0x0a, 0x1d, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, + 0x6f, 0x77, 0x49, 0x63, 0x6d, 0x70, 0x76, 0x36, 0x45, 0x63, 0x68, 0x6f, 0x43, 0x68, 0x65, 0x63, + 0x6b, 0x73, 0x75, 0x6d, 0x12, 0x4b, 0x0a, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2e, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, + 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x63, 0x6d, 0x70, 0x76, 0x36, 0x45, 0x63, 0x68, 0x6f, + 0x43, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x2e, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x2e, + 0x45, 0x6e, 0x75, 0x6d, 0x48, 0x00, 0x52, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x88, 0x01, + 0x01, 0x12, 0x54, 0x0a, 0x09, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x0e, 0x32, 0x31, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, + 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x63, 0x6d, 0x70, 0x76, 0x36, 0x45, 0x63, 0x68, 0x6f, + 0x43, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x2e, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, + 0x65, 0x64, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x48, 0x01, 0x52, 0x09, 0x67, 0x65, 0x6e, 0x65, 0x72, + 0x61, 0x74, 0x65, 0x64, 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x63, 0x75, 0x73, 0x74, 0x6f, + 0x6d, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x02, 0x52, 0x06, 0x63, 0x75, 0x73, 0x74, 0x6f, + 0x6d, 0x88, 0x01, 0x01, 0x1a, 0x3c, 0x0a, 0x06, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x22, 0x32, + 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x0a, 0x0b, 0x75, 0x6e, 0x73, 0x70, 0x65, 0x63, + 0x69, 0x66, 0x69, 0x65, 0x64, 0x10, 0x00, 0x12, 0x0d, 0x0a, 0x09, 0x67, 0x65, 0x6e, 0x65, 0x72, + 0x61, 0x74, 0x65, 0x64, 0x10, 0x01, 0x12, 0x0a, 0x0a, 0x06, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, + 0x10, 0x02, 0x1a, 0x37, 0x0a, 0x09, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x22, + 0x2a, 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x0a, 0x0b, 0x75, 0x6e, 0x73, 0x70, 0x65, + 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x10, 0x00, 0x12, 0x08, 0x0a, 0x04, 0x67, 0x6f, 0x6f, 0x64, + 0x10, 0x01, 0x12, 0x07, 0x0a, 0x03, 0x62, 0x61, 0x64, 0x10, 0x02, 0x42, 0x09, 0x0a, 0x07, 0x5f, + 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x67, 0x65, 0x6e, 0x65, 0x72, + 0x61, 0x74, 0x65, 0x64, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x22, + 0x80, 0x03, 0x0a, 0x1f, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, + 0x63, 0x6d, 0x70, 0x76, 0x36, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x43, 0x68, 0x65, 0x63, 0x6b, + 0x73, 0x75, 0x6d, 0x12, 0x4d, 0x0a, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x0e, 0x32, 0x30, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, + 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x63, 0x6d, 0x70, 0x76, 0x36, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, + 0x6e, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x2e, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, + 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x48, 0x00, 0x52, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x88, + 0x01, 0x01, 0x12, 0x56, 0x0a, 0x09, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x33, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, + 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x63, 0x6d, 0x70, 0x76, 0x36, 0x43, 0x6f, 0x6d, + 0x6d, 0x6f, 0x6e, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x2e, 0x47, 0x65, 0x6e, 0x65, + 0x72, 0x61, 0x74, 0x65, 0x64, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x48, 0x01, 0x52, 0x09, 0x67, 0x65, + 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x63, 0x75, + 0x73, 0x74, 0x6f, 0x6d, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x02, 0x52, 0x06, 0x63, 0x75, + 0x73, 0x74, 0x6f, 0x6d, 0x88, 0x01, 0x01, 0x1a, 0x3c, 0x0a, 0x06, 0x43, 0x68, 0x6f, 0x69, 0x63, + 0x65, 0x22, 0x32, 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x0a, 0x0b, 0x75, 0x6e, 0x73, + 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x10, 0x00, 0x12, 0x0d, 0x0a, 0x09, 0x67, 0x65, + 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x10, 0x01, 0x12, 0x0a, 0x0a, 0x06, 0x63, 0x75, 0x73, + 0x74, 0x6f, 0x6d, 0x10, 0x02, 0x1a, 0x37, 0x0a, 0x09, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, + 0x65, 0x64, 0x22, 0x2a, 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x0a, 0x0b, 0x75, 0x6e, + 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x10, 0x00, 0x12, 0x08, 0x0a, 0x04, 0x67, + 0x6f, 0x6f, 0x64, 0x10, 0x01, 0x12, 0x07, 0x0a, 0x03, 0x62, 0x61, 0x64, 0x10, 0x02, 0x42, 0x09, + 0x0a, 0x07, 0x5f, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x67, 0x65, + 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x63, 0x75, 0x73, 0x74, + 0x6f, 0x6d, 0x22, 0x8a, 0x01, 0x0a, 0x1c, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, + 0x6f, 0x77, 0x50, 0x70, 0x70, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x12, 0x19, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x00, 0x52, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x88, 0x01, 0x01, 0x12, 0x17, 0x0a, 0x04, 0x73, 0x74, 0x65, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x04, @@ -105551,39 +121728,36 @@ var file_otg_proto_rawDesc = []byte{ 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x02, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x88, 0x01, 0x01, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x73, 0x74, 0x65, 0x70, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x22, - 0x9a, 0x01, 0x0a, 0x26, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x47, - 0x74, 0x70, 0x76, 0x32, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x4c, 0x65, 0x6e, 0x67, 0x74, - 0x68, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x12, 0x17, 0x0a, 0x04, 0x6e, 0x61, - 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, - 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x88, 0x01, 0x01, - 0x12, 0x1b, 0x0a, 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, - 0x48, 0x02, 0x52, 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x88, 0x01, 0x01, 0x42, 0x07, 0x0a, - 0x05, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6f, 0x66, 0x66, 0x73, 0x65, - 0x74, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x22, 0xec, 0x03, 0x0a, - 0x1d, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x47, 0x74, 0x70, 0x76, - 0x32, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x12, 0x4b, - 0x0a, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2e, + 0x92, 0x01, 0x0a, 0x1e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x50, + 0x70, 0x70, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, + 0x61, 0x67, 0x12, 0x17, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x48, 0x00, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x6f, + 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x06, 0x6f, + 0x66, 0x66, 0x73, 0x65, 0x74, 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x6c, 0x65, 0x6e, 0x67, + 0x74, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x02, 0x52, 0x06, 0x6c, 0x65, 0x6e, 0x67, + 0x74, 0x68, 0x88, 0x01, 0x01, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x42, 0x09, + 0x0a, 0x07, 0x5f, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6c, 0x65, + 0x6e, 0x67, 0x74, 0x68, 0x22, 0xc4, 0x03, 0x0a, 0x15, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, + 0x46, 0x6c, 0x6f, 0x77, 0x50, 0x70, 0x70, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x43, + 0x0a, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x26, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, - 0x47, 0x74, 0x70, 0x76, 0x32, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x4c, 0x65, 0x6e, 0x67, - 0x74, 0x68, 0x2e, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x48, 0x00, - 0x52, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x76, - 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x05, 0x76, 0x61, - 0x6c, 0x75, 0x65, 0x88, 0x01, 0x01, 0x12, 0x16, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, - 0x18, 0x03, 0x20, 0x03, 0x28, 0x0d, 0x52, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x12, 0x47, - 0x0a, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x29, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, - 0x6c, 0x6f, 0x77, 0x47, 0x74, 0x70, 0x76, 0x32, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x4c, - 0x65, 0x6e, 0x67, 0x74, 0x68, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, 0x69, 0x6e, - 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x47, 0x0a, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, - 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x6f, 0x74, 0x67, - 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x47, 0x74, 0x70, 0x76, - 0x32, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x43, 0x6f, - 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, - 0x12, 0x4c, 0x0a, 0x0b, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x5f, 0x74, 0x61, 0x67, 0x73, 0x18, - 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, - 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x47, 0x74, 0x70, 0x76, 0x32, 0x4d, 0x65, 0x73, 0x73, - 0x61, 0x67, 0x65, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, + 0x50, 0x70, 0x70, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x2e, 0x43, 0x68, 0x6f, 0x69, 0x63, + 0x65, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x48, 0x00, 0x52, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, + 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x0d, 0x48, 0x01, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x88, 0x01, 0x01, 0x12, 0x16, + 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0d, 0x52, 0x06, + 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x12, 0x3f, 0x0a, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, + 0x65, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x6f, 0x74, 0x67, 0x2e, + 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x50, 0x70, 0x70, 0x41, 0x64, + 0x64, 0x72, 0x65, 0x73, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, 0x69, 0x6e, + 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x3f, 0x0a, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, + 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x6f, 0x74, 0x67, + 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x50, 0x70, 0x70, 0x41, + 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, 0x64, + 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x44, 0x0a, 0x0b, 0x6d, 0x65, 0x74, 0x72, + 0x69, 0x63, 0x5f, 0x74, 0x61, 0x67, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x23, 0x2e, + 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x50, + 0x70, 0x70, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x52, 0x0a, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x73, 0x1a, 0x56, 0x0a, 0x06, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x22, 0x4c, 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x0a, 0x0b, 0x75, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x10, @@ -105591,152 +121765,154 @@ var file_otg_proto_rawDesc = []byte{ 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x10, 0x03, 0x12, 0x0d, 0x0a, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x10, 0x04, 0x12, 0x0d, 0x0a, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x10, 0x05, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x63, 0x68, 0x6f, 0x69, 0x63, - 0x65, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x89, 0x01, 0x0a, 0x1b, - 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x47, 0x74, 0x70, 0x76, 0x32, - 0x54, 0x65, 0x69, 0x64, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x12, 0x19, 0x0a, 0x05, 0x73, - 0x74, 0x61, 0x72, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x00, 0x52, 0x05, 0x73, 0x74, - 0x61, 0x72, 0x74, 0x88, 0x01, 0x01, 0x12, 0x17, 0x0a, 0x04, 0x73, 0x74, 0x65, 0x70, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x04, 0x73, 0x74, 0x65, 0x70, 0x88, 0x01, 0x01, 0x12, - 0x19, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x02, - 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x88, 0x01, 0x01, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x73, - 0x74, 0x61, 0x72, 0x74, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x73, 0x74, 0x65, 0x70, 0x42, 0x08, 0x0a, - 0x06, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x91, 0x01, 0x0a, 0x1d, 0x50, 0x61, 0x74, 0x74, - 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x47, 0x74, 0x70, 0x76, 0x32, 0x54, 0x65, 0x69, 0x64, - 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x12, 0x17, 0x0a, 0x04, 0x6e, 0x61, 0x6d, - 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x88, - 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x0d, 0x48, 0x01, 0x52, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x88, 0x01, 0x01, 0x12, - 0x1b, 0x0a, 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x48, - 0x02, 0x52, 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x88, 0x01, 0x01, 0x42, 0x07, 0x0a, 0x05, - 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, - 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x22, 0xbf, 0x03, 0x0a, 0x14, - 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x47, 0x74, 0x70, 0x76, 0x32, - 0x54, 0x65, 0x69, 0x64, 0x12, 0x42, 0x0a, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x0e, 0x32, 0x25, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, - 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x47, 0x74, 0x70, 0x76, 0x32, 0x54, 0x65, 0x69, 0x64, 0x2e, - 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x48, 0x00, 0x52, 0x06, 0x63, - 0x68, 0x6f, 0x69, 0x63, 0x65, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, - 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, - 0x88, 0x01, 0x01, 0x12, 0x16, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x03, 0x20, - 0x03, 0x28, 0x0d, 0x52, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x12, 0x3e, 0x0a, 0x09, 0x69, - 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, - 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, - 0x47, 0x74, 0x70, 0x76, 0x32, 0x54, 0x65, 0x69, 0x64, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, - 0x52, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x3e, 0x0a, 0x09, 0x64, - 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, - 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, - 0x47, 0x74, 0x70, 0x76, 0x32, 0x54, 0x65, 0x69, 0x64, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, - 0x52, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x43, 0x0a, 0x0b, 0x6d, - 0x65, 0x74, 0x72, 0x69, 0x63, 0x5f, 0x74, 0x61, 0x67, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, - 0x32, 0x22, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, - 0x6f, 0x77, 0x47, 0x74, 0x70, 0x76, 0x32, 0x54, 0x65, 0x69, 0x64, 0x4d, 0x65, 0x74, 0x72, 0x69, - 0x63, 0x54, 0x61, 0x67, 0x52, 0x0a, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x73, - 0x1a, 0x56, 0x0a, 0x06, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x22, 0x4c, 0x0a, 0x04, 0x45, 0x6e, - 0x75, 0x6d, 0x12, 0x0f, 0x0a, 0x0b, 0x75, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, - 0x64, 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x10, 0x02, 0x12, 0x0a, - 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x10, 0x03, 0x12, 0x0d, 0x0a, 0x09, 0x69, 0x6e, - 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x10, 0x04, 0x12, 0x0d, 0x0a, 0x09, 0x64, 0x65, 0x63, - 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x10, 0x05, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x63, 0x68, 0x6f, - 0x69, 0x63, 0x65, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x93, 0x01, - 0x0a, 0x25, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x47, 0x74, 0x70, - 0x76, 0x32, 0x53, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x65, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, - 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x12, 0x19, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x00, 0x52, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x88, - 0x01, 0x01, 0x12, 0x17, 0x0a, 0x04, 0x73, 0x74, 0x65, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, - 0x48, 0x01, 0x52, 0x04, 0x73, 0x74, 0x65, 0x70, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x63, - 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x02, 0x52, 0x05, 0x63, 0x6f, - 0x75, 0x6e, 0x74, 0x88, 0x01, 0x01, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, - 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x73, 0x74, 0x65, 0x70, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x63, 0x6f, - 0x75, 0x6e, 0x74, 0x22, 0x9b, 0x01, 0x0a, 0x27, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, - 0x6c, 0x6f, 0x77, 0x47, 0x74, 0x70, 0x76, 0x32, 0x53, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x65, - 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x12, - 0x17, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, - 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x6f, 0x66, 0x66, 0x73, - 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x06, 0x6f, 0x66, 0x66, 0x73, - 0x65, 0x74, 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x02, 0x52, 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x88, - 0x01, 0x01, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x42, 0x09, 0x0a, 0x07, 0x5f, - 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, - 0x68, 0x22, 0xf1, 0x03, 0x0a, 0x1e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, - 0x77, 0x47, 0x74, 0x70, 0x76, 0x32, 0x53, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x65, 0x4e, 0x75, - 0x6d, 0x62, 0x65, 0x72, 0x12, 0x4c, 0x0a, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2f, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, - 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x47, 0x74, 0x70, 0x76, 0x32, 0x53, 0x65, 0x71, 0x75, 0x65, - 0x6e, 0x63, 0x65, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x2e, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, - 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x48, 0x00, 0x52, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x88, - 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x0d, 0x48, 0x01, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x88, 0x01, 0x01, 0x12, 0x16, 0x0a, - 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0d, 0x52, 0x06, 0x76, - 0x61, 0x6c, 0x75, 0x65, 0x73, 0x12, 0x48, 0x0a, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, - 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, - 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x47, 0x74, 0x70, 0x76, 0x32, 0x53, - 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x65, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x43, 0x6f, 0x75, - 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, - 0x48, 0x0a, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, - 0x46, 0x6c, 0x6f, 0x77, 0x47, 0x74, 0x70, 0x76, 0x32, 0x53, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, - 0x65, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, - 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x4d, 0x0a, 0x0b, 0x6d, 0x65, 0x74, - 0x72, 0x69, 0x63, 0x5f, 0x74, 0x61, 0x67, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2c, + 0x65, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x8a, 0x01, 0x0a, 0x1c, + 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x50, 0x70, 0x70, 0x43, 0x6f, + 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x12, 0x19, 0x0a, 0x05, + 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x00, 0x52, 0x05, 0x73, + 0x74, 0x61, 0x72, 0x74, 0x88, 0x01, 0x01, 0x12, 0x17, 0x0a, 0x04, 0x73, 0x74, 0x65, 0x70, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x04, 0x73, 0x74, 0x65, 0x70, 0x88, 0x01, 0x01, + 0x12, 0x19, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x48, + 0x02, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x88, 0x01, 0x01, 0x42, 0x08, 0x0a, 0x06, 0x5f, + 0x73, 0x74, 0x61, 0x72, 0x74, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x73, 0x74, 0x65, 0x70, 0x42, 0x08, + 0x0a, 0x06, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x92, 0x01, 0x0a, 0x1e, 0x50, 0x61, 0x74, + 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x50, 0x70, 0x70, 0x43, 0x6f, 0x6e, 0x74, 0x72, + 0x6f, 0x6c, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x12, 0x17, 0x0a, 0x04, 0x6e, + 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x04, 0x6e, 0x61, 0x6d, + 0x65, 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x88, 0x01, + 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x0d, 0x48, 0x02, 0x52, 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x88, 0x01, 0x01, 0x42, 0x07, + 0x0a, 0x05, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6f, 0x66, 0x66, 0x73, + 0x65, 0x74, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x22, 0xc4, 0x03, + 0x0a, 0x15, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x50, 0x70, 0x70, + 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x12, 0x43, 0x0a, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, + 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x26, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, + 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x50, 0x70, 0x70, 0x43, 0x6f, 0x6e, 0x74, + 0x72, 0x6f, 0x6c, 0x2e, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x48, + 0x00, 0x52, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, + 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x05, 0x76, + 0x61, 0x6c, 0x75, 0x65, 0x88, 0x01, 0x01, 0x12, 0x16, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, + 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0d, 0x52, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x12, + 0x3f, 0x0a, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, + 0x46, 0x6c, 0x6f, 0x77, 0x50, 0x70, 0x70, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x43, 0x6f, + 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, + 0x12, 0x3f, 0x0a, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x06, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, + 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x50, 0x70, 0x70, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x43, + 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, + 0x74, 0x12, 0x44, 0x0a, 0x0b, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x5f, 0x74, 0x61, 0x67, 0x73, + 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, + 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x50, 0x70, 0x70, 0x43, 0x6f, 0x6e, 0x74, 0x72, + 0x6f, 0x6c, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x52, 0x0a, 0x6d, 0x65, 0x74, + 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x73, 0x1a, 0x56, 0x0a, 0x06, 0x43, 0x68, 0x6f, 0x69, 0x63, + 0x65, 0x22, 0x4c, 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x0a, 0x0b, 0x75, 0x6e, 0x73, + 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, 0x76, 0x61, + 0x6c, 0x75, 0x65, 0x10, 0x02, 0x12, 0x0a, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x10, + 0x03, 0x12, 0x0d, 0x0a, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x10, 0x04, + 0x12, 0x0d, 0x0a, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x10, 0x05, 0x42, + 0x09, 0x0a, 0x07, 0x5f, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x76, + 0x61, 0x6c, 0x75, 0x65, 0x22, 0x8f, 0x01, 0x0a, 0x21, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, + 0x46, 0x6c, 0x6f, 0x77, 0x50, 0x70, 0x70, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x54, + 0x79, 0x70, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x12, 0x19, 0x0a, 0x05, 0x73, 0x74, + 0x61, 0x72, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x00, 0x52, 0x05, 0x73, 0x74, 0x61, + 0x72, 0x74, 0x88, 0x01, 0x01, 0x12, 0x17, 0x0a, 0x04, 0x73, 0x74, 0x65, 0x70, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x04, 0x73, 0x74, 0x65, 0x70, 0x88, 0x01, 0x01, 0x12, 0x19, + 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x02, 0x52, + 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x88, 0x01, 0x01, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x73, 0x74, + 0x61, 0x72, 0x74, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x73, 0x74, 0x65, 0x70, 0x42, 0x08, 0x0a, 0x06, + 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x97, 0x01, 0x0a, 0x23, 0x50, 0x61, 0x74, 0x74, 0x65, + 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x50, 0x70, 0x70, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, + 0x6c, 0x54, 0x79, 0x70, 0x65, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x12, 0x17, + 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x04, + 0x6e, 0x61, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, + 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, + 0x74, 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x0d, 0x48, 0x02, 0x52, 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x88, 0x01, + 0x01, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6f, + 0x66, 0x66, 0x73, 0x65, 0x74, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, + 0x22, 0x89, 0x04, 0x0a, 0x1a, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, + 0x50, 0x70, 0x70, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x12, + 0x48, 0x0a, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, + 0x2b, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, + 0x77, 0x50, 0x70, 0x70, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x54, 0x79, 0x70, 0x65, + 0x2e, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x48, 0x00, 0x52, 0x06, + 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x76, 0x61, 0x6c, + 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, + 0x65, 0x88, 0x01, 0x01, 0x12, 0x16, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x03, + 0x20, 0x03, 0x28, 0x0d, 0x52, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x12, 0x17, 0x0a, 0x04, + 0x61, 0x75, 0x74, 0x6f, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x02, 0x52, 0x04, 0x61, 0x75, + 0x74, 0x6f, 0x88, 0x01, 0x01, 0x12, 0x44, 0x0a, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, + 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, + 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x50, 0x70, 0x70, 0x50, 0x72, 0x6f, + 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, + 0x52, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x44, 0x0a, 0x09, 0x64, + 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, - 0x47, 0x74, 0x70, 0x76, 0x32, 0x53, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x65, 0x4e, 0x75, 0x6d, - 0x62, 0x65, 0x72, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x52, 0x0a, 0x6d, 0x65, - 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x73, 0x1a, 0x56, 0x0a, 0x06, 0x43, 0x68, 0x6f, 0x69, - 0x63, 0x65, 0x22, 0x4c, 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x0a, 0x0b, 0x75, 0x6e, - 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, 0x76, - 0x61, 0x6c, 0x75, 0x65, 0x10, 0x02, 0x12, 0x0a, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, - 0x10, 0x03, 0x12, 0x0d, 0x0a, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x10, - 0x04, 0x12, 0x0d, 0x0a, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x10, 0x05, - 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x42, 0x08, 0x0a, 0x06, 0x5f, - 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x8b, 0x01, 0x0a, 0x1d, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, - 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x47, 0x74, 0x70, 0x76, 0x32, 0x53, 0x70, 0x61, 0x72, 0x65, 0x32, - 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x12, 0x19, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x00, 0x52, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x88, - 0x01, 0x01, 0x12, 0x17, 0x0a, 0x04, 0x73, 0x74, 0x65, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, - 0x48, 0x01, 0x52, 0x04, 0x73, 0x74, 0x65, 0x70, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x63, - 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x02, 0x52, 0x05, 0x63, 0x6f, - 0x75, 0x6e, 0x74, 0x88, 0x01, 0x01, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, - 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x73, 0x74, 0x65, 0x70, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x63, 0x6f, - 0x75, 0x6e, 0x74, 0x22, 0x93, 0x01, 0x0a, 0x1f, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, - 0x6c, 0x6f, 0x77, 0x47, 0x74, 0x70, 0x76, 0x32, 0x53, 0x70, 0x61, 0x72, 0x65, 0x32, 0x4d, 0x65, - 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x12, 0x17, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x88, 0x01, 0x01, - 0x12, 0x1b, 0x0a, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, - 0x48, 0x01, 0x52, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, - 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x02, 0x52, - 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x88, 0x01, 0x01, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x6e, - 0x61, 0x6d, 0x65, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x42, 0x09, - 0x0a, 0x07, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x22, 0xc9, 0x03, 0x0a, 0x16, 0x50, 0x61, - 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x47, 0x74, 0x70, 0x76, 0x32, 0x53, 0x70, - 0x61, 0x72, 0x65, 0x32, 0x12, 0x44, 0x0a, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x0e, 0x32, 0x27, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, - 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x47, 0x74, 0x70, 0x76, 0x32, 0x53, 0x70, 0x61, 0x72, 0x65, - 0x32, 0x2e, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x48, 0x00, 0x52, - 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x76, 0x61, - 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x05, 0x76, 0x61, 0x6c, - 0x75, 0x65, 0x88, 0x01, 0x01, 0x12, 0x16, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, - 0x03, 0x20, 0x03, 0x28, 0x0d, 0x52, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x12, 0x40, 0x0a, - 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x22, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, - 0x6f, 0x77, 0x47, 0x74, 0x70, 0x76, 0x32, 0x53, 0x70, 0x61, 0x72, 0x65, 0x32, 0x43, 0x6f, 0x75, - 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, - 0x40, 0x0a, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, - 0x46, 0x6c, 0x6f, 0x77, 0x47, 0x74, 0x70, 0x76, 0x32, 0x53, 0x70, 0x61, 0x72, 0x65, 0x32, 0x43, + 0x50, 0x70, 0x70, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, - 0x74, 0x12, 0x45, 0x0a, 0x0b, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x5f, 0x74, 0x61, 0x67, 0x73, - 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, - 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x47, 0x74, 0x70, 0x76, 0x32, 0x53, 0x70, 0x61, - 0x72, 0x65, 0x32, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x52, 0x0a, 0x6d, 0x65, - 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x73, 0x1a, 0x56, 0x0a, 0x06, 0x43, 0x68, 0x6f, 0x69, - 0x63, 0x65, 0x22, 0x4c, 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x0a, 0x0b, 0x75, 0x6e, - 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, 0x76, - 0x61, 0x6c, 0x75, 0x65, 0x10, 0x02, 0x12, 0x0a, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, - 0x10, 0x03, 0x12, 0x0d, 0x0a, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x10, - 0x04, 0x12, 0x0d, 0x0a, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x10, 0x05, - 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x42, 0x08, 0x0a, 0x06, 0x5f, - 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x8f, 0x01, 0x0a, 0x21, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, - 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x41, 0x72, 0x70, 0x48, 0x61, 0x72, 0x64, 0x77, 0x61, 0x72, 0x65, + 0x74, 0x12, 0x49, 0x0a, 0x0b, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x5f, 0x74, 0x61, 0x67, 0x73, + 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, + 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x50, 0x70, 0x70, 0x50, 0x72, 0x6f, 0x74, 0x6f, + 0x63, 0x6f, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, + 0x52, 0x0a, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x73, 0x1a, 0x60, 0x0a, 0x06, + 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x22, 0x56, 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0f, + 0x0a, 0x0b, 0x75, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x10, 0x00, 0x12, + 0x09, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x10, 0x02, 0x12, 0x0a, 0x0a, 0x06, 0x76, 0x61, + 0x6c, 0x75, 0x65, 0x73, 0x10, 0x03, 0x12, 0x08, 0x0a, 0x04, 0x61, 0x75, 0x74, 0x6f, 0x10, 0x01, + 0x12, 0x0d, 0x0a, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x10, 0x04, 0x12, + 0x0d, 0x0a, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x10, 0x05, 0x42, 0x09, + 0x0a, 0x07, 0x5f, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x76, 0x61, + 0x6c, 0x75, 0x65, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x61, 0x75, 0x74, 0x6f, 0x22, 0x8d, 0x01, 0x0a, + 0x1f, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x67, 0x6d, 0x70, + 0x76, 0x31, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, + 0x12, 0x19, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x48, + 0x00, 0x52, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x88, 0x01, 0x01, 0x12, 0x17, 0x0a, 0x04, 0x73, + 0x74, 0x65, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x04, 0x73, 0x74, 0x65, + 0x70, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x0d, 0x48, 0x02, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x88, 0x01, 0x01, 0x42, + 0x08, 0x0a, 0x06, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x73, 0x74, + 0x65, 0x70, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x95, 0x01, 0x0a, + 0x21, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x67, 0x6d, 0x70, + 0x76, 0x31, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, + 0x61, 0x67, 0x12, 0x17, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x48, 0x00, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x6f, + 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x06, 0x6f, + 0x66, 0x66, 0x73, 0x65, 0x74, 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x6c, 0x65, 0x6e, 0x67, + 0x74, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x02, 0x52, 0x06, 0x6c, 0x65, 0x6e, 0x67, + 0x74, 0x68, 0x88, 0x01, 0x01, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x42, 0x09, + 0x0a, 0x07, 0x5f, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6c, 0x65, + 0x6e, 0x67, 0x74, 0x68, 0x22, 0xd3, 0x03, 0x0a, 0x18, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, + 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x67, 0x6d, 0x70, 0x76, 0x31, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, + 0x6e, 0x12, 0x46, 0x0a, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x0e, 0x32, 0x29, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, + 0x6c, 0x6f, 0x77, 0x49, 0x67, 0x6d, 0x70, 0x76, 0x31, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, + 0x2e, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x48, 0x00, 0x52, 0x06, + 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x76, 0x61, 0x6c, + 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, + 0x65, 0x88, 0x01, 0x01, 0x12, 0x16, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x03, + 0x20, 0x03, 0x28, 0x0d, 0x52, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x12, 0x42, 0x0a, 0x09, + 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x24, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, + 0x77, 0x49, 0x67, 0x6d, 0x70, 0x76, 0x31, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x43, 0x6f, + 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, + 0x12, 0x42, 0x0a, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x06, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, + 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x67, 0x6d, 0x70, 0x76, 0x31, 0x56, 0x65, 0x72, 0x73, 0x69, + 0x6f, 0x6e, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, + 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x47, 0x0a, 0x0b, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x5f, 0x74, + 0x61, 0x67, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x6f, 0x74, 0x67, 0x2e, + 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x67, 0x6d, 0x70, 0x76, + 0x31, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, + 0x67, 0x52, 0x0a, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x73, 0x1a, 0x56, 0x0a, + 0x06, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x22, 0x4c, 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, + 0x0f, 0x0a, 0x0b, 0x75, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x10, 0x00, + 0x12, 0x09, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x10, 0x02, 0x12, 0x0a, 0x0a, 0x06, 0x76, + 0x61, 0x6c, 0x75, 0x65, 0x73, 0x10, 0x03, 0x12, 0x0d, 0x0a, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, + 0x6d, 0x65, 0x6e, 0x74, 0x10, 0x04, 0x12, 0x0d, 0x0a, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, + 0x65, 0x6e, 0x74, 0x10, 0x05, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, + 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x8a, 0x01, 0x0a, 0x1c, 0x50, + 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x67, 0x6d, 0x70, 0x76, 0x31, 0x54, 0x79, 0x70, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x12, 0x19, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x00, 0x52, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x88, 0x01, 0x01, 0x12, 0x17, 0x0a, 0x04, 0x73, 0x74, 0x65, 0x70, 0x18, 0x02, @@ -105744,87 +121920,255 @@ var file_otg_proto_rawDesc = []byte{ 0x19, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x02, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x88, 0x01, 0x01, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x73, 0x74, 0x65, 0x70, 0x42, 0x08, 0x0a, - 0x06, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x97, 0x01, 0x0a, 0x23, 0x50, 0x61, 0x74, 0x74, - 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x41, 0x72, 0x70, 0x48, 0x61, 0x72, 0x64, 0x77, 0x61, - 0x72, 0x65, 0x54, 0x79, 0x70, 0x65, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x12, - 0x17, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, - 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x6f, 0x66, 0x66, 0x73, - 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x06, 0x6f, 0x66, 0x66, 0x73, - 0x65, 0x74, 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x02, 0x52, 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x88, - 0x01, 0x01, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x42, 0x09, 0x0a, 0x07, 0x5f, - 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, - 0x68, 0x22, 0xdd, 0x03, 0x0a, 0x1a, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, - 0x77, 0x41, 0x72, 0x70, 0x48, 0x61, 0x72, 0x64, 0x77, 0x61, 0x72, 0x65, 0x54, 0x79, 0x70, 0x65, - 0x12, 0x48, 0x0a, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, - 0x32, 0x2b, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, - 0x6f, 0x77, 0x41, 0x72, 0x70, 0x48, 0x61, 0x72, 0x64, 0x77, 0x61, 0x72, 0x65, 0x54, 0x79, 0x70, - 0x65, 0x2e, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x48, 0x00, 0x52, - 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x76, 0x61, - 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x05, 0x76, 0x61, 0x6c, - 0x75, 0x65, 0x88, 0x01, 0x01, 0x12, 0x16, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, - 0x03, 0x20, 0x03, 0x28, 0x0d, 0x52, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x12, 0x44, 0x0a, - 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x26, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, - 0x6f, 0x77, 0x41, 0x72, 0x70, 0x48, 0x61, 0x72, 0x64, 0x77, 0x61, 0x72, 0x65, 0x54, 0x79, 0x70, - 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, - 0x65, 0x6e, 0x74, 0x12, 0x44, 0x0a, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, - 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, - 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x41, 0x72, 0x70, 0x48, 0x61, 0x72, 0x64, 0x77, - 0x61, 0x72, 0x65, 0x54, 0x79, 0x70, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, - 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x49, 0x0a, 0x0b, 0x6d, 0x65, 0x74, - 0x72, 0x69, 0x63, 0x5f, 0x74, 0x61, 0x67, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x28, - 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, - 0x41, 0x72, 0x70, 0x48, 0x61, 0x72, 0x64, 0x77, 0x61, 0x72, 0x65, 0x54, 0x79, 0x70, 0x65, 0x4d, - 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x52, 0x0a, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, - 0x54, 0x61, 0x67, 0x73, 0x1a, 0x56, 0x0a, 0x06, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x22, 0x4c, - 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x0a, 0x0b, 0x75, 0x6e, 0x73, 0x70, 0x65, 0x63, - 0x69, 0x66, 0x69, 0x65, 0x64, 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, - 0x10, 0x02, 0x12, 0x0a, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x10, 0x03, 0x12, 0x0d, - 0x0a, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x10, 0x04, 0x12, 0x0d, 0x0a, - 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x10, 0x05, 0x42, 0x09, 0x0a, 0x07, - 0x5f, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x76, 0x61, 0x6c, 0x75, - 0x65, 0x22, 0x8f, 0x01, 0x0a, 0x21, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, - 0x77, 0x41, 0x72, 0x70, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x54, 0x79, 0x70, 0x65, - 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x12, 0x19, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x00, 0x52, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x88, - 0x01, 0x01, 0x12, 0x17, 0x0a, 0x04, 0x73, 0x74, 0x65, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, - 0x48, 0x01, 0x52, 0x04, 0x73, 0x74, 0x65, 0x70, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x63, - 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x02, 0x52, 0x05, 0x63, 0x6f, - 0x75, 0x6e, 0x74, 0x88, 0x01, 0x01, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, - 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x73, 0x74, 0x65, 0x70, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x63, 0x6f, - 0x75, 0x6e, 0x74, 0x22, 0x97, 0x01, 0x0a, 0x23, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, - 0x6c, 0x6f, 0x77, 0x41, 0x72, 0x70, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x54, 0x79, - 0x70, 0x65, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x12, 0x17, 0x0a, 0x04, 0x6e, + 0x06, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x92, 0x01, 0x0a, 0x1e, 0x50, 0x61, 0x74, 0x74, + 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x67, 0x6d, 0x70, 0x76, 0x31, 0x54, 0x79, 0x70, + 0x65, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x12, 0x17, 0x0a, 0x04, 0x6e, 0x61, + 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, + 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x88, 0x01, 0x01, + 0x12, 0x1b, 0x0a, 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, + 0x48, 0x02, 0x52, 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x88, 0x01, 0x01, 0x42, 0x07, 0x0a, + 0x05, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6f, 0x66, 0x66, 0x73, 0x65, + 0x74, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x22, 0xc4, 0x03, 0x0a, + 0x15, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x67, 0x6d, 0x70, + 0x76, 0x31, 0x54, 0x79, 0x70, 0x65, 0x12, 0x43, 0x0a, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x26, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, + 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x67, 0x6d, 0x70, 0x76, 0x31, 0x54, 0x79, + 0x70, 0x65, 0x2e, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x48, 0x00, + 0x52, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x76, + 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x05, 0x76, 0x61, + 0x6c, 0x75, 0x65, 0x88, 0x01, 0x01, 0x12, 0x16, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, + 0x18, 0x03, 0x20, 0x03, 0x28, 0x0d, 0x52, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x12, 0x3f, + 0x0a, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x21, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, + 0x6c, 0x6f, 0x77, 0x49, 0x67, 0x6d, 0x70, 0x76, 0x31, 0x54, 0x79, 0x70, 0x65, 0x43, 0x6f, 0x75, + 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, + 0x3f, 0x0a, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, + 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x67, 0x6d, 0x70, 0x76, 0x31, 0x54, 0x79, 0x70, 0x65, 0x43, 0x6f, + 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, + 0x12, 0x44, 0x0a, 0x0b, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x5f, 0x74, 0x61, 0x67, 0x73, 0x18, + 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, + 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x67, 0x6d, 0x70, 0x76, 0x31, 0x54, 0x79, 0x70, + 0x65, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x52, 0x0a, 0x6d, 0x65, 0x74, 0x72, + 0x69, 0x63, 0x54, 0x61, 0x67, 0x73, 0x1a, 0x56, 0x0a, 0x06, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, + 0x22, 0x4c, 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x0a, 0x0b, 0x75, 0x6e, 0x73, 0x70, + 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, 0x76, 0x61, 0x6c, + 0x75, 0x65, 0x10, 0x02, 0x12, 0x0a, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x10, 0x03, + 0x12, 0x0d, 0x0a, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x10, 0x04, 0x12, + 0x0d, 0x0a, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x10, 0x05, 0x42, 0x09, + 0x0a, 0x07, 0x5f, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x76, 0x61, + 0x6c, 0x75, 0x65, 0x22, 0x8c, 0x01, 0x0a, 0x1e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, + 0x6c, 0x6f, 0x77, 0x49, 0x67, 0x6d, 0x70, 0x76, 0x31, 0x55, 0x6e, 0x75, 0x73, 0x65, 0x64, 0x43, + 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x12, 0x19, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x00, 0x52, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x88, 0x01, + 0x01, 0x12, 0x17, 0x0a, 0x04, 0x73, 0x74, 0x65, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, + 0x01, 0x52, 0x04, 0x73, 0x74, 0x65, 0x70, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x63, 0x6f, + 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x02, 0x52, 0x05, 0x63, 0x6f, 0x75, + 0x6e, 0x74, 0x88, 0x01, 0x01, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x42, + 0x07, 0x0a, 0x05, 0x5f, 0x73, 0x74, 0x65, 0x70, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x63, 0x6f, 0x75, + 0x6e, 0x74, 0x22, 0x94, 0x01, 0x0a, 0x20, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, + 0x6f, 0x77, 0x49, 0x67, 0x6d, 0x70, 0x76, 0x31, 0x55, 0x6e, 0x75, 0x73, 0x65, 0x64, 0x4d, 0x65, + 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x12, 0x17, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x88, 0x01, 0x01, + 0x12, 0x1b, 0x0a, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, + 0x48, 0x01, 0x52, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, + 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x02, 0x52, + 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x88, 0x01, 0x01, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x6e, + 0x61, 0x6d, 0x65, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x42, 0x09, + 0x0a, 0x07, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x22, 0xce, 0x03, 0x0a, 0x17, 0x50, 0x61, + 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x67, 0x6d, 0x70, 0x76, 0x31, 0x55, + 0x6e, 0x75, 0x73, 0x65, 0x64, 0x12, 0x45, 0x0a, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x28, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, + 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x67, 0x6d, 0x70, 0x76, 0x31, 0x55, 0x6e, 0x75, + 0x73, 0x65, 0x64, 0x2e, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x48, + 0x00, 0x52, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, + 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x05, 0x76, + 0x61, 0x6c, 0x75, 0x65, 0x88, 0x01, 0x01, 0x12, 0x16, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, + 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0d, 0x52, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x12, + 0x41, 0x0a, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, + 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x67, 0x6d, 0x70, 0x76, 0x31, 0x55, 0x6e, 0x75, 0x73, 0x65, 0x64, + 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, + 0x6e, 0x74, 0x12, 0x41, 0x0a, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, + 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, + 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x67, 0x6d, 0x70, 0x76, 0x31, 0x55, 0x6e, 0x75, + 0x73, 0x65, 0x64, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, 0x64, 0x65, 0x63, 0x72, + 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x46, 0x0a, 0x0b, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x5f, + 0x74, 0x61, 0x67, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x6f, 0x74, 0x67, + 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x67, 0x6d, 0x70, + 0x76, 0x31, 0x55, 0x6e, 0x75, 0x73, 0x65, 0x64, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, + 0x67, 0x52, 0x0a, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x73, 0x1a, 0x56, 0x0a, + 0x06, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x22, 0x4c, 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, + 0x0f, 0x0a, 0x0b, 0x75, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x10, 0x00, + 0x12, 0x09, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x10, 0x02, 0x12, 0x0a, 0x0a, 0x06, 0x76, + 0x61, 0x6c, 0x75, 0x65, 0x73, 0x10, 0x03, 0x12, 0x0d, 0x0a, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, + 0x6d, 0x65, 0x6e, 0x74, 0x10, 0x04, 0x12, 0x0d, 0x0a, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, + 0x65, 0x6e, 0x74, 0x10, 0x05, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, + 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0xee, 0x02, 0x0a, 0x19, 0x50, + 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x67, 0x6d, 0x70, 0x76, 0x31, + 0x43, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x12, 0x47, 0x0a, 0x06, 0x63, 0x68, 0x6f, 0x69, + 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2a, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, + 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x67, 0x6d, 0x70, 0x76, 0x31, + 0x43, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x2e, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x2e, + 0x45, 0x6e, 0x75, 0x6d, 0x48, 0x00, 0x52, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x88, 0x01, + 0x01, 0x12, 0x50, 0x0a, 0x09, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2d, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, + 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x67, 0x6d, 0x70, 0x76, 0x31, 0x43, 0x68, 0x65, 0x63, + 0x6b, 0x73, 0x75, 0x6d, 0x2e, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x2e, 0x45, + 0x6e, 0x75, 0x6d, 0x48, 0x01, 0x52, 0x09, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, + 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x0d, 0x48, 0x02, 0x52, 0x06, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x88, 0x01, 0x01, + 0x1a, 0x3c, 0x0a, 0x06, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x22, 0x32, 0x0a, 0x04, 0x45, 0x6e, + 0x75, 0x6d, 0x12, 0x0f, 0x0a, 0x0b, 0x75, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, + 0x64, 0x10, 0x00, 0x12, 0x0d, 0x0a, 0x09, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, + 0x10, 0x01, 0x12, 0x0a, 0x0a, 0x06, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x10, 0x02, 0x1a, 0x37, + 0x0a, 0x09, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x22, 0x2a, 0x0a, 0x04, 0x45, + 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x0a, 0x0b, 0x75, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, + 0x65, 0x64, 0x10, 0x00, 0x12, 0x08, 0x0a, 0x04, 0x67, 0x6f, 0x6f, 0x64, 0x10, 0x01, 0x12, 0x07, + 0x0a, 0x03, 0x62, 0x61, 0x64, 0x10, 0x02, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x63, 0x68, 0x6f, 0x69, + 0x63, 0x65, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, + 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x22, 0x92, 0x01, 0x0a, 0x24, + 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x67, 0x6d, 0x70, 0x76, + 0x31, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x43, 0x6f, 0x75, + 0x6e, 0x74, 0x65, 0x72, 0x12, 0x19, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x88, 0x01, 0x01, 0x12, + 0x17, 0x0a, 0x04, 0x73, 0x74, 0x65, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, 0x52, + 0x04, 0x73, 0x74, 0x65, 0x70, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, + 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x02, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, + 0x88, 0x01, 0x01, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x42, 0x07, 0x0a, + 0x05, 0x5f, 0x73, 0x74, 0x65, 0x70, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, + 0x22, 0x9a, 0x01, 0x0a, 0x26, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, + 0x49, 0x67, 0x6d, 0x70, 0x76, 0x31, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x41, 0x64, 0x64, 0x72, 0x65, + 0x73, 0x73, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x12, 0x17, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x02, 0x52, 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x88, 0x01, 0x01, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6f, 0x66, 0x66, 0x73, - 0x65, 0x74, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x22, 0xdd, 0x03, - 0x0a, 0x1a, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x41, 0x72, 0x70, - 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x12, 0x48, 0x0a, 0x06, - 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2b, 0x2e, 0x6f, - 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x41, 0x72, - 0x70, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x2e, 0x43, 0x68, - 0x6f, 0x69, 0x63, 0x65, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x48, 0x00, 0x52, 0x06, 0x63, 0x68, 0x6f, - 0x69, 0x63, 0x65, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x88, 0x01, - 0x01, 0x12, 0x16, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, - 0x0d, 0x52, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x12, 0x44, 0x0a, 0x09, 0x69, 0x6e, 0x63, - 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x6f, - 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x41, 0x72, - 0x70, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x43, 0x6f, 0x75, - 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, - 0x44, 0x0a, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, - 0x46, 0x6c, 0x6f, 0x77, 0x41, 0x72, 0x70, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x54, - 0x79, 0x70, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, 0x64, 0x65, 0x63, 0x72, - 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x49, 0x0a, 0x0b, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x5f, - 0x74, 0x61, 0x67, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x6f, 0x74, 0x67, - 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x41, 0x72, 0x70, 0x50, - 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x4d, 0x65, 0x74, 0x72, 0x69, + 0x65, 0x74, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x22, 0xec, 0x03, + 0x0a, 0x1d, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x67, 0x6d, + 0x70, 0x76, 0x31, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, + 0x4b, 0x0a, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, + 0x2e, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, + 0x77, 0x49, 0x67, 0x6d, 0x70, 0x76, 0x31, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x41, 0x64, 0x64, 0x72, + 0x65, 0x73, 0x73, 0x2e, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x48, + 0x00, 0x52, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, + 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, 0x52, 0x05, 0x76, + 0x61, 0x6c, 0x75, 0x65, 0x88, 0x01, 0x01, 0x12, 0x16, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, + 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x12, + 0x47, 0x0a, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, + 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x67, 0x6d, 0x70, 0x76, 0x31, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x41, + 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, 0x69, + 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x47, 0x0a, 0x09, 0x64, 0x65, 0x63, 0x72, + 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x6f, 0x74, + 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x67, 0x6d, + 0x70, 0x76, 0x31, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x43, + 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, + 0x74, 0x12, 0x4c, 0x0a, 0x0b, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x5f, 0x74, 0x61, 0x67, 0x73, + 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, + 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x67, 0x6d, 0x70, 0x76, 0x31, 0x47, 0x72, + 0x6f, 0x75, 0x70, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, + 0x54, 0x61, 0x67, 0x52, 0x0a, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x73, 0x1a, + 0x56, 0x0a, 0x06, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x22, 0x4c, 0x0a, 0x04, 0x45, 0x6e, 0x75, + 0x6d, 0x12, 0x0f, 0x0a, 0x0b, 0x75, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, + 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x10, 0x02, 0x12, 0x0a, 0x0a, + 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x10, 0x03, 0x12, 0x0d, 0x0a, 0x09, 0x69, 0x6e, 0x63, + 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x10, 0x04, 0x12, 0x0d, 0x0a, 0x09, 0x64, 0x65, 0x63, 0x72, + 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x10, 0x05, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x63, 0x68, 0x6f, 0x69, + 0x63, 0x65, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x89, 0x01, 0x0a, + 0x1b, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x4d, 0x70, 0x6c, 0x73, + 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x12, 0x19, 0x0a, 0x05, + 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x00, 0x52, 0x05, 0x73, + 0x74, 0x61, 0x72, 0x74, 0x88, 0x01, 0x01, 0x12, 0x17, 0x0a, 0x04, 0x73, 0x74, 0x65, 0x70, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x04, 0x73, 0x74, 0x65, 0x70, 0x88, 0x01, 0x01, + 0x12, 0x19, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x48, + 0x02, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x88, 0x01, 0x01, 0x42, 0x08, 0x0a, 0x06, 0x5f, + 0x73, 0x74, 0x61, 0x72, 0x74, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x73, 0x74, 0x65, 0x70, 0x42, 0x08, + 0x0a, 0x06, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x91, 0x01, 0x0a, 0x1d, 0x50, 0x61, 0x74, + 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x4d, 0x70, 0x6c, 0x73, 0x4c, 0x61, 0x62, 0x65, + 0x6c, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x12, 0x17, 0x0a, 0x04, 0x6e, 0x61, + 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, + 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x88, 0x01, 0x01, + 0x12, 0x1b, 0x0a, 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, + 0x48, 0x02, 0x52, 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x88, 0x01, 0x01, 0x42, 0x07, 0x0a, + 0x05, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6f, 0x66, 0x66, 0x73, 0x65, + 0x74, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x22, 0xeb, 0x03, 0x0a, + 0x14, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x4d, 0x70, 0x6c, 0x73, + 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x12, 0x42, 0x0a, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x25, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, + 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x4d, 0x70, 0x6c, 0x73, 0x4c, 0x61, 0x62, 0x65, 0x6c, + 0x2e, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x48, 0x00, 0x52, 0x06, + 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x76, 0x61, 0x6c, + 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, + 0x65, 0x88, 0x01, 0x01, 0x12, 0x16, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x03, + 0x20, 0x03, 0x28, 0x0d, 0x52, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x12, 0x17, 0x0a, 0x04, + 0x61, 0x75, 0x74, 0x6f, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x02, 0x52, 0x04, 0x61, 0x75, + 0x74, 0x6f, 0x88, 0x01, 0x01, 0x12, 0x3e, 0x0a, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, + 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, + 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x4d, 0x70, 0x6c, 0x73, 0x4c, 0x61, + 0x62, 0x65, 0x6c, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, 0x69, 0x6e, 0x63, 0x72, + 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x3e, 0x0a, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, + 0x6e, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, + 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x4d, 0x70, 0x6c, 0x73, 0x4c, 0x61, + 0x62, 0x65, 0x6c, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, 0x64, 0x65, 0x63, 0x72, + 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x43, 0x0a, 0x0b, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x5f, + 0x74, 0x61, 0x67, 0x73, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x6f, 0x74, 0x67, + 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x4d, 0x70, 0x6c, 0x73, + 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x52, 0x0a, + 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x73, 0x1a, 0x60, 0x0a, 0x06, 0x43, 0x68, + 0x6f, 0x69, 0x63, 0x65, 0x22, 0x56, 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x0a, 0x0b, + 0x75, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x10, 0x00, 0x12, 0x09, 0x0a, + 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x10, 0x02, 0x12, 0x0a, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, + 0x65, 0x73, 0x10, 0x03, 0x12, 0x08, 0x0a, 0x04, 0x61, 0x75, 0x74, 0x6f, 0x10, 0x01, 0x12, 0x0d, + 0x0a, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x10, 0x04, 0x12, 0x0d, 0x0a, + 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x10, 0x05, 0x42, 0x09, 0x0a, 0x07, + 0x5f, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x76, 0x61, 0x6c, 0x75, + 0x65, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x61, 0x75, 0x74, 0x6f, 0x22, 0x90, 0x01, 0x0a, 0x22, 0x50, + 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x4d, 0x70, 0x6c, 0x73, 0x54, 0x72, + 0x61, 0x66, 0x66, 0x69, 0x63, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, + 0x72, 0x12, 0x19, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, + 0x48, 0x00, 0x52, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x88, 0x01, 0x01, 0x12, 0x17, 0x0a, 0x04, + 0x73, 0x74, 0x65, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x04, 0x73, 0x74, + 0x65, 0x70, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x0d, 0x48, 0x02, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x88, 0x01, 0x01, + 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x73, + 0x74, 0x65, 0x70, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x98, 0x01, + 0x0a, 0x24, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x4d, 0x70, 0x6c, + 0x73, 0x54, 0x72, 0x61, 0x66, 0x66, 0x69, 0x63, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x4d, 0x65, 0x74, + 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x12, 0x17, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, + 0x1b, 0x0a, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, + 0x01, 0x52, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, + 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x02, 0x52, 0x06, + 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x88, 0x01, 0x01, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x6e, 0x61, + 0x6d, 0x65, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x42, 0x09, 0x0a, + 0x07, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x22, 0xe2, 0x03, 0x0a, 0x1b, 0x50, 0x61, 0x74, + 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x4d, 0x70, 0x6c, 0x73, 0x54, 0x72, 0x61, 0x66, + 0x66, 0x69, 0x63, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x12, 0x49, 0x0a, 0x06, 0x63, 0x68, 0x6f, 0x69, + 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2c, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, + 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x4d, 0x70, 0x6c, 0x73, 0x54, 0x72, + 0x61, 0x66, 0x66, 0x69, 0x63, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x2e, 0x43, 0x68, 0x6f, 0x69, 0x63, + 0x65, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x48, 0x00, 0x52, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, + 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x0d, 0x48, 0x01, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x88, 0x01, 0x01, 0x12, 0x16, + 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0d, 0x52, 0x06, + 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x12, 0x45, 0x0a, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, + 0x65, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x6f, 0x74, 0x67, 0x2e, + 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x4d, 0x70, 0x6c, 0x73, 0x54, + 0x72, 0x61, 0x66, 0x66, 0x69, 0x63, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, + 0x65, 0x72, 0x52, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x45, 0x0a, + 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x27, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, + 0x6f, 0x77, 0x4d, 0x70, 0x6c, 0x73, 0x54, 0x72, 0x61, 0x66, 0x66, 0x69, 0x63, 0x43, 0x6c, 0x61, + 0x73, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, + 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x4a, 0x0a, 0x0b, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x5f, 0x74, + 0x61, 0x67, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x6f, 0x74, 0x67, 0x2e, + 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x4d, 0x70, 0x6c, 0x73, 0x54, + 0x72, 0x61, 0x66, 0x66, 0x69, 0x63, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x52, 0x0a, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x73, 0x1a, 0x56, 0x0a, 0x06, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x22, 0x4c, 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x0a, 0x0b, 0x75, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, @@ -105833,8 +122177,8 @@ var file_otg_proto_rawDesc = []byte{ 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x10, 0x04, 0x12, 0x0d, 0x0a, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x10, 0x05, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x91, 0x01, - 0x0a, 0x23, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x41, 0x72, 0x70, - 0x48, 0x61, 0x72, 0x64, 0x77, 0x61, 0x72, 0x65, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x43, 0x6f, + 0x0a, 0x23, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x4d, 0x70, 0x6c, + 0x73, 0x42, 0x6f, 0x74, 0x74, 0x6f, 0x6d, 0x4f, 0x66, 0x53, 0x74, 0x61, 0x63, 0x6b, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x12, 0x19, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x00, 0x52, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x88, 0x01, 0x01, 0x12, 0x17, 0x0a, 0x04, 0x73, 0x74, 0x65, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, @@ -105843,135 +122187,89 @@ var file_otg_proto_rawDesc = []byte{ 0x74, 0x88, 0x01, 0x01, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x73, 0x74, 0x65, 0x70, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x99, 0x01, 0x0a, 0x25, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, - 0x77, 0x41, 0x72, 0x70, 0x48, 0x61, 0x72, 0x64, 0x77, 0x61, 0x72, 0x65, 0x4c, 0x65, 0x6e, 0x67, - 0x74, 0x68, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x12, 0x17, 0x0a, 0x04, 0x6e, + 0x77, 0x4d, 0x70, 0x6c, 0x73, 0x42, 0x6f, 0x74, 0x74, 0x6f, 0x6d, 0x4f, 0x66, 0x53, 0x74, 0x61, + 0x63, 0x6b, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x12, 0x17, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x02, 0x52, 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x88, 0x01, 0x01, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6f, 0x66, 0x66, 0x73, - 0x65, 0x74, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x22, 0xe7, 0x03, - 0x0a, 0x1c, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x41, 0x72, 0x70, - 0x48, 0x61, 0x72, 0x64, 0x77, 0x61, 0x72, 0x65, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x12, 0x4a, + 0x65, 0x74, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x22, 0x93, 0x04, + 0x0a, 0x1c, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x4d, 0x70, 0x6c, + 0x73, 0x42, 0x6f, 0x74, 0x74, 0x6f, 0x6d, 0x4f, 0x66, 0x53, 0x74, 0x61, 0x63, 0x6b, 0x12, 0x4a, 0x0a, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2d, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, - 0x41, 0x72, 0x70, 0x48, 0x61, 0x72, 0x64, 0x77, 0x61, 0x72, 0x65, 0x4c, 0x65, 0x6e, 0x67, 0x74, - 0x68, 0x2e, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x48, 0x00, 0x52, + 0x4d, 0x70, 0x6c, 0x73, 0x42, 0x6f, 0x74, 0x74, 0x6f, 0x6d, 0x4f, 0x66, 0x53, 0x74, 0x61, 0x63, + 0x6b, 0x2e, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x48, 0x00, 0x52, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x88, 0x01, 0x01, 0x12, 0x16, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, - 0x03, 0x20, 0x03, 0x28, 0x0d, 0x52, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x12, 0x46, 0x0a, - 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x28, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, - 0x6f, 0x77, 0x41, 0x72, 0x70, 0x48, 0x61, 0x72, 0x64, 0x77, 0x61, 0x72, 0x65, 0x4c, 0x65, 0x6e, - 0x67, 0x74, 0x68, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, 0x69, 0x6e, 0x63, 0x72, - 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x46, 0x0a, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, - 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, - 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x41, 0x72, 0x70, 0x48, 0x61, 0x72, - 0x64, 0x77, 0x61, 0x72, 0x65, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x43, 0x6f, 0x75, 0x6e, 0x74, - 0x65, 0x72, 0x52, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x4b, 0x0a, - 0x0b, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x5f, 0x74, 0x61, 0x67, 0x73, 0x18, 0x07, 0x20, 0x03, - 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, - 0x46, 0x6c, 0x6f, 0x77, 0x41, 0x72, 0x70, 0x48, 0x61, 0x72, 0x64, 0x77, 0x61, 0x72, 0x65, 0x4c, - 0x65, 0x6e, 0x67, 0x74, 0x68, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x52, 0x0a, - 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x73, 0x1a, 0x56, 0x0a, 0x06, 0x43, 0x68, - 0x6f, 0x69, 0x63, 0x65, 0x22, 0x4c, 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x0a, 0x0b, - 0x75, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x10, 0x00, 0x12, 0x09, 0x0a, - 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x10, 0x02, 0x12, 0x0a, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, - 0x65, 0x73, 0x10, 0x03, 0x12, 0x0d, 0x0a, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, - 0x74, 0x10, 0x04, 0x12, 0x0d, 0x0a, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, - 0x10, 0x05, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x42, 0x08, 0x0a, - 0x06, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x91, 0x01, 0x0a, 0x23, 0x50, 0x61, 0x74, 0x74, - 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x41, 0x72, 0x70, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, - 0x6f, 0x6c, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x12, - 0x19, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x00, - 0x52, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x88, 0x01, 0x01, 0x12, 0x17, 0x0a, 0x04, 0x73, 0x74, - 0x65, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x04, 0x73, 0x74, 0x65, 0x70, - 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x0d, 0x48, 0x02, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x88, 0x01, 0x01, 0x42, 0x08, - 0x0a, 0x06, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x73, 0x74, 0x65, - 0x70, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x99, 0x01, 0x0a, 0x25, - 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x41, 0x72, 0x70, 0x50, 0x72, - 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x4d, 0x65, 0x74, 0x72, - 0x69, 0x63, 0x54, 0x61, 0x67, 0x12, 0x17, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, 0x1b, - 0x0a, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, - 0x52, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x6c, - 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x02, 0x52, 0x06, 0x6c, - 0x65, 0x6e, 0x67, 0x74, 0x68, 0x88, 0x01, 0x01, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x6e, 0x61, 0x6d, - 0x65, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x42, 0x09, 0x0a, 0x07, - 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x22, 0xe7, 0x03, 0x0a, 0x1c, 0x50, 0x61, 0x74, 0x74, - 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x41, 0x72, 0x70, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, - 0x6f, 0x6c, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x12, 0x4a, 0x0a, 0x06, 0x63, 0x68, 0x6f, 0x69, - 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2d, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, - 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x41, 0x72, 0x70, 0x50, 0x72, 0x6f, - 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x2e, 0x43, 0x68, 0x6f, 0x69, + 0x03, 0x20, 0x03, 0x28, 0x0d, 0x52, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x12, 0x17, 0x0a, + 0x04, 0x61, 0x75, 0x74, 0x6f, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x02, 0x52, 0x04, 0x61, + 0x75, 0x74, 0x6f, 0x88, 0x01, 0x01, 0x12, 0x46, 0x0a, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, + 0x65, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x6f, 0x74, 0x67, 0x2e, + 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x4d, 0x70, 0x6c, 0x73, 0x42, + 0x6f, 0x74, 0x74, 0x6f, 0x6d, 0x4f, 0x66, 0x53, 0x74, 0x61, 0x63, 0x6b, 0x43, 0x6f, 0x75, 0x6e, + 0x74, 0x65, 0x72, 0x52, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x46, + 0x0a, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x28, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, + 0x6c, 0x6f, 0x77, 0x4d, 0x70, 0x6c, 0x73, 0x42, 0x6f, 0x74, 0x74, 0x6f, 0x6d, 0x4f, 0x66, 0x53, + 0x74, 0x61, 0x63, 0x6b, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, 0x64, 0x65, 0x63, + 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x4b, 0x0a, 0x0b, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, + 0x5f, 0x74, 0x61, 0x67, 0x73, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x6f, 0x74, + 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x4d, 0x70, 0x6c, + 0x73, 0x42, 0x6f, 0x74, 0x74, 0x6f, 0x6d, 0x4f, 0x66, 0x53, 0x74, 0x61, 0x63, 0x6b, 0x4d, 0x65, + 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x52, 0x0a, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, + 0x61, 0x67, 0x73, 0x1a, 0x60, 0x0a, 0x06, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x22, 0x56, 0x0a, + 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x0a, 0x0b, 0x75, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, + 0x66, 0x69, 0x65, 0x64, 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x10, + 0x02, 0x12, 0x0a, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x10, 0x03, 0x12, 0x08, 0x0a, + 0x04, 0x61, 0x75, 0x74, 0x6f, 0x10, 0x01, 0x12, 0x0d, 0x0a, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, + 0x6d, 0x65, 0x6e, 0x74, 0x10, 0x04, 0x12, 0x0d, 0x0a, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, + 0x65, 0x6e, 0x74, 0x10, 0x05, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, + 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x61, + 0x75, 0x74, 0x6f, 0x22, 0x8e, 0x01, 0x0a, 0x20, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, + 0x6c, 0x6f, 0x77, 0x4d, 0x70, 0x6c, 0x73, 0x54, 0x69, 0x6d, 0x65, 0x54, 0x6f, 0x4c, 0x69, 0x76, + 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x12, 0x19, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x72, + 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x00, 0x52, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, + 0x88, 0x01, 0x01, 0x12, 0x17, 0x0a, 0x04, 0x73, 0x74, 0x65, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x0d, 0x48, 0x01, 0x52, 0x04, 0x73, 0x74, 0x65, 0x70, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, + 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x02, 0x52, 0x05, 0x63, + 0x6f, 0x75, 0x6e, 0x74, 0x88, 0x01, 0x01, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x73, 0x74, 0x61, 0x72, + 0x74, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x73, 0x74, 0x65, 0x70, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x63, + 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x96, 0x01, 0x0a, 0x22, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, + 0x46, 0x6c, 0x6f, 0x77, 0x4d, 0x70, 0x6c, 0x73, 0x54, 0x69, 0x6d, 0x65, 0x54, 0x6f, 0x4c, 0x69, + 0x76, 0x65, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x12, 0x17, 0x0a, 0x04, 0x6e, + 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x04, 0x6e, 0x61, 0x6d, + 0x65, 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x88, 0x01, + 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x0d, 0x48, 0x02, 0x52, 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x88, 0x01, 0x01, 0x42, 0x07, + 0x0a, 0x05, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6f, 0x66, 0x66, 0x73, + 0x65, 0x74, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x22, 0xd8, 0x03, + 0x0a, 0x19, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x4d, 0x70, 0x6c, + 0x73, 0x54, 0x69, 0x6d, 0x65, 0x54, 0x6f, 0x4c, 0x69, 0x76, 0x65, 0x12, 0x47, 0x0a, 0x06, 0x63, + 0x68, 0x6f, 0x69, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2a, 0x2e, 0x6f, 0x74, + 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x4d, 0x70, 0x6c, + 0x73, 0x54, 0x69, 0x6d, 0x65, 0x54, 0x6f, 0x4c, 0x69, 0x76, 0x65, 0x2e, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x48, 0x00, 0x52, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x88, 0x01, 0x01, 0x12, 0x16, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0d, 0x52, - 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x12, 0x46, 0x0a, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, - 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x6f, 0x74, 0x67, - 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x41, 0x72, 0x70, 0x50, - 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x43, 0x6f, 0x75, - 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, - 0x46, 0x0a, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, - 0x46, 0x6c, 0x6f, 0x77, 0x41, 0x72, 0x70, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x4c, - 0x65, 0x6e, 0x67, 0x74, 0x68, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, 0x64, 0x65, - 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x4b, 0x0a, 0x0b, 0x6d, 0x65, 0x74, 0x72, 0x69, - 0x63, 0x5f, 0x74, 0x61, 0x67, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x6f, - 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x41, 0x72, - 0x70, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x4d, - 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x52, 0x0a, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, - 0x54, 0x61, 0x67, 0x73, 0x1a, 0x56, 0x0a, 0x06, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x22, 0x4c, - 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x0a, 0x0b, 0x75, 0x6e, 0x73, 0x70, 0x65, 0x63, - 0x69, 0x66, 0x69, 0x65, 0x64, 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, - 0x10, 0x02, 0x12, 0x0a, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x10, 0x03, 0x12, 0x0d, - 0x0a, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x10, 0x04, 0x12, 0x0d, 0x0a, - 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x10, 0x05, 0x42, 0x09, 0x0a, 0x07, - 0x5f, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x76, 0x61, 0x6c, 0x75, - 0x65, 0x22, 0x8c, 0x01, 0x0a, 0x1e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, - 0x77, 0x41, 0x72, 0x70, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x75, - 0x6e, 0x74, 0x65, 0x72, 0x12, 0x19, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x0d, 0x48, 0x00, 0x52, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x88, 0x01, 0x01, 0x12, - 0x17, 0x0a, 0x04, 0x73, 0x74, 0x65, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, - 0x04, 0x73, 0x74, 0x65, 0x70, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, - 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x02, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, - 0x88, 0x01, 0x01, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x42, 0x07, 0x0a, - 0x05, 0x5f, 0x73, 0x74, 0x65, 0x70, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, - 0x22, 0x94, 0x01, 0x0a, 0x20, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, - 0x41, 0x72, 0x70, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x74, 0x72, - 0x69, 0x63, 0x54, 0x61, 0x67, 0x12, 0x17, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, 0x1b, - 0x0a, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, - 0x52, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x6c, - 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x02, 0x52, 0x06, 0x6c, - 0x65, 0x6e, 0x67, 0x74, 0x68, 0x88, 0x01, 0x01, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x6e, 0x61, 0x6d, - 0x65, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x42, 0x09, 0x0a, 0x07, - 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x22, 0xce, 0x03, 0x0a, 0x17, 0x50, 0x61, 0x74, 0x74, - 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x41, 0x72, 0x70, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x12, 0x45, 0x0a, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x0e, 0x32, 0x28, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, - 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x41, 0x72, 0x70, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x2e, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x48, 0x00, 0x52, - 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x76, 0x61, - 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x05, 0x76, 0x61, 0x6c, - 0x75, 0x65, 0x88, 0x01, 0x01, 0x12, 0x16, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, - 0x03, 0x20, 0x03, 0x28, 0x0d, 0x52, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x12, 0x41, 0x0a, - 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x23, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, - 0x6f, 0x77, 0x41, 0x72, 0x70, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, - 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, - 0x12, 0x41, 0x0a, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x06, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, - 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x41, 0x72, 0x70, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, - 0x65, 0x6e, 0x74, 0x12, 0x46, 0x0a, 0x0b, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x5f, 0x74, 0x61, - 0x67, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, - 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x41, 0x72, 0x70, 0x4f, 0x70, 0x65, - 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x52, + 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x12, 0x43, 0x0a, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, + 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x6f, 0x74, 0x67, + 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x4d, 0x70, 0x6c, 0x73, + 0x54, 0x69, 0x6d, 0x65, 0x54, 0x6f, 0x4c, 0x69, 0x76, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, + 0x72, 0x52, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x43, 0x0a, 0x09, + 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x25, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, + 0x77, 0x4d, 0x70, 0x6c, 0x73, 0x54, 0x69, 0x6d, 0x65, 0x54, 0x6f, 0x4c, 0x69, 0x76, 0x65, 0x43, + 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, + 0x74, 0x12, 0x48, 0x0a, 0x0b, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x5f, 0x74, 0x61, 0x67, 0x73, + 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, + 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x4d, 0x70, 0x6c, 0x73, 0x54, 0x69, 0x6d, 0x65, + 0x54, 0x6f, 0x4c, 0x69, 0x76, 0x65, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x52, 0x0a, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x73, 0x1a, 0x56, 0x0a, 0x06, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x22, 0x4c, 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x0a, 0x0b, 0x75, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x10, 0x00, 0x12, 0x09, @@ -105979,565 +122277,65 @@ var file_otg_proto_rawDesc = []byte{ 0x75, 0x65, 0x73, 0x10, 0x03, 0x12, 0x0d, 0x0a, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x10, 0x04, 0x12, 0x0d, 0x0a, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x10, 0x05, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x42, 0x08, - 0x0a, 0x06, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x95, 0x01, 0x0a, 0x27, 0x50, 0x61, 0x74, - 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x41, 0x72, 0x70, 0x53, 0x65, 0x6e, 0x64, 0x65, - 0x72, 0x48, 0x61, 0x72, 0x64, 0x77, 0x61, 0x72, 0x65, 0x41, 0x64, 0x64, 0x72, 0x43, 0x6f, 0x75, - 0x6e, 0x74, 0x65, 0x72, 0x12, 0x19, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x88, 0x01, 0x01, 0x12, - 0x17, 0x0a, 0x04, 0x73, 0x74, 0x65, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, 0x52, - 0x04, 0x73, 0x74, 0x65, 0x70, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, - 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x02, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, - 0x88, 0x01, 0x01, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x42, 0x07, 0x0a, - 0x05, 0x5f, 0x73, 0x74, 0x65, 0x70, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, - 0x22, 0x9d, 0x01, 0x0a, 0x29, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, - 0x41, 0x72, 0x70, 0x53, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x48, 0x61, 0x72, 0x64, 0x77, 0x61, 0x72, - 0x65, 0x41, 0x64, 0x64, 0x72, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x12, 0x17, - 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x04, - 0x6e, 0x61, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, - 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, - 0x74, 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x0d, 0x48, 0x02, 0x52, 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x88, 0x01, - 0x01, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6f, - 0x66, 0x66, 0x73, 0x65, 0x74, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, - 0x22, 0xfb, 0x03, 0x0a, 0x20, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, - 0x41, 0x72, 0x70, 0x53, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x48, 0x61, 0x72, 0x64, 0x77, 0x61, 0x72, - 0x65, 0x41, 0x64, 0x64, 0x72, 0x12, 0x4e, 0x0a, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x31, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, - 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x41, 0x72, 0x70, 0x53, 0x65, 0x6e, 0x64, 0x65, 0x72, - 0x48, 0x61, 0x72, 0x64, 0x77, 0x61, 0x72, 0x65, 0x41, 0x64, 0x64, 0x72, 0x2e, 0x43, 0x68, 0x6f, - 0x69, 0x63, 0x65, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x48, 0x00, 0x52, 0x06, 0x63, 0x68, 0x6f, 0x69, - 0x63, 0x65, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x88, 0x01, 0x01, - 0x12, 0x16, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, - 0x52, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x12, 0x4a, 0x0a, 0x09, 0x69, 0x6e, 0x63, 0x72, - 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x6f, 0x74, - 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x41, 0x72, 0x70, - 0x53, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x48, 0x61, 0x72, 0x64, 0x77, 0x61, 0x72, 0x65, 0x41, 0x64, - 0x64, 0x72, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, - 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x4a, 0x0a, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, - 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, - 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x41, 0x72, 0x70, 0x53, 0x65, 0x6e, 0x64, - 0x65, 0x72, 0x48, 0x61, 0x72, 0x64, 0x77, 0x61, 0x72, 0x65, 0x41, 0x64, 0x64, 0x72, 0x43, 0x6f, - 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, - 0x12, 0x4f, 0x0a, 0x0b, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x5f, 0x74, 0x61, 0x67, 0x73, 0x18, - 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, - 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x41, 0x72, 0x70, 0x53, 0x65, 0x6e, 0x64, 0x65, 0x72, - 0x48, 0x61, 0x72, 0x64, 0x77, 0x61, 0x72, 0x65, 0x41, 0x64, 0x64, 0x72, 0x4d, 0x65, 0x74, 0x72, - 0x69, 0x63, 0x54, 0x61, 0x67, 0x52, 0x0a, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, - 0x73, 0x1a, 0x56, 0x0a, 0x06, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x22, 0x4c, 0x0a, 0x04, 0x45, - 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x0a, 0x0b, 0x75, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, - 0x65, 0x64, 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x10, 0x02, 0x12, - 0x0a, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x10, 0x03, 0x12, 0x0d, 0x0a, 0x09, 0x69, - 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x10, 0x04, 0x12, 0x0d, 0x0a, 0x09, 0x64, 0x65, - 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x10, 0x05, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x63, 0x68, - 0x6f, 0x69, 0x63, 0x65, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x95, - 0x01, 0x0a, 0x27, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x41, 0x72, - 0x70, 0x53, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x41, - 0x64, 0x64, 0x72, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x12, 0x19, 0x0a, 0x05, 0x73, 0x74, - 0x61, 0x72, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x05, 0x73, 0x74, 0x61, - 0x72, 0x74, 0x88, 0x01, 0x01, 0x12, 0x17, 0x0a, 0x04, 0x73, 0x74, 0x65, 0x70, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x09, 0x48, 0x01, 0x52, 0x04, 0x73, 0x74, 0x65, 0x70, 0x88, 0x01, 0x01, 0x12, 0x19, - 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x02, 0x52, - 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x88, 0x01, 0x01, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x73, 0x74, - 0x61, 0x72, 0x74, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x73, 0x74, 0x65, 0x70, 0x42, 0x08, 0x0a, 0x06, - 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x9d, 0x01, 0x0a, 0x29, 0x50, 0x61, 0x74, 0x74, 0x65, - 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x41, 0x72, 0x70, 0x53, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x50, - 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x41, 0x64, 0x64, 0x72, 0x4d, 0x65, 0x74, 0x72, 0x69, - 0x63, 0x54, 0x61, 0x67, 0x12, 0x17, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x48, 0x00, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, - 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, - 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x6c, 0x65, - 0x6e, 0x67, 0x74, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x02, 0x52, 0x06, 0x6c, 0x65, - 0x6e, 0x67, 0x74, 0x68, 0x88, 0x01, 0x01, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x6e, 0x61, 0x6d, 0x65, - 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x42, 0x09, 0x0a, 0x07, 0x5f, - 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x22, 0xfb, 0x03, 0x0a, 0x20, 0x50, 0x61, 0x74, 0x74, 0x65, - 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x41, 0x72, 0x70, 0x53, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x50, - 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x41, 0x64, 0x64, 0x72, 0x12, 0x4e, 0x0a, 0x06, 0x63, - 0x68, 0x6f, 0x69, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x31, 0x2e, 0x6f, 0x74, - 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x41, 0x72, 0x70, - 0x53, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x41, 0x64, - 0x64, 0x72, 0x2e, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x48, 0x00, - 0x52, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x76, - 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, 0x52, 0x05, 0x76, 0x61, - 0x6c, 0x75, 0x65, 0x88, 0x01, 0x01, 0x12, 0x16, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, - 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x12, 0x4a, - 0x0a, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x2c, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, - 0x6c, 0x6f, 0x77, 0x41, 0x72, 0x70, 0x53, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x50, 0x72, 0x6f, 0x74, - 0x6f, 0x63, 0x6f, 0x6c, 0x41, 0x64, 0x64, 0x72, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, - 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x4a, 0x0a, 0x09, 0x64, 0x65, - 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2c, 0x2e, - 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x41, - 0x72, 0x70, 0x53, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, - 0x41, 0x64, 0x64, 0x72, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, 0x64, 0x65, 0x63, - 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x4f, 0x0a, 0x0b, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, - 0x5f, 0x74, 0x61, 0x67, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x6f, 0x74, - 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x41, 0x72, 0x70, - 0x53, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x41, 0x64, - 0x64, 0x72, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x52, 0x0a, 0x6d, 0x65, 0x74, - 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x73, 0x1a, 0x56, 0x0a, 0x06, 0x43, 0x68, 0x6f, 0x69, 0x63, - 0x65, 0x22, 0x4c, 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x0a, 0x0b, 0x75, 0x6e, 0x73, - 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, 0x76, 0x61, - 0x6c, 0x75, 0x65, 0x10, 0x02, 0x12, 0x0a, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x10, - 0x03, 0x12, 0x0d, 0x0a, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x10, 0x04, - 0x12, 0x0d, 0x0a, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x10, 0x05, 0x42, - 0x09, 0x0a, 0x07, 0x5f, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x76, - 0x61, 0x6c, 0x75, 0x65, 0x22, 0x95, 0x01, 0x0a, 0x27, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, - 0x46, 0x6c, 0x6f, 0x77, 0x41, 0x72, 0x70, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x48, 0x61, 0x72, - 0x64, 0x77, 0x61, 0x72, 0x65, 0x41, 0x64, 0x64, 0x72, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, - 0x12, 0x19, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, - 0x00, 0x52, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x88, 0x01, 0x01, 0x12, 0x17, 0x0a, 0x04, 0x73, - 0x74, 0x65, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, 0x52, 0x04, 0x73, 0x74, 0x65, - 0x70, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x0d, 0x48, 0x02, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x88, 0x01, 0x01, 0x42, - 0x08, 0x0a, 0x06, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x73, 0x74, - 0x65, 0x70, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x9d, 0x01, 0x0a, - 0x29, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x41, 0x72, 0x70, 0x54, - 0x61, 0x72, 0x67, 0x65, 0x74, 0x48, 0x61, 0x72, 0x64, 0x77, 0x61, 0x72, 0x65, 0x41, 0x64, 0x64, - 0x72, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x12, 0x17, 0x0a, 0x04, 0x6e, 0x61, - 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, - 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x88, 0x01, 0x01, - 0x12, 0x1b, 0x0a, 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, - 0x48, 0x02, 0x52, 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x88, 0x01, 0x01, 0x42, 0x07, 0x0a, - 0x05, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6f, 0x66, 0x66, 0x73, 0x65, - 0x74, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x22, 0xfb, 0x03, 0x0a, - 0x20, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x41, 0x72, 0x70, 0x54, - 0x61, 0x72, 0x67, 0x65, 0x74, 0x48, 0x61, 0x72, 0x64, 0x77, 0x61, 0x72, 0x65, 0x41, 0x64, 0x64, - 0x72, 0x12, 0x4e, 0x0a, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x0e, 0x32, 0x31, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, - 0x6c, 0x6f, 0x77, 0x41, 0x72, 0x70, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x48, 0x61, 0x72, 0x64, - 0x77, 0x61, 0x72, 0x65, 0x41, 0x64, 0x64, 0x72, 0x2e, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x2e, - 0x45, 0x6e, 0x75, 0x6d, 0x48, 0x00, 0x52, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x88, 0x01, - 0x01, 0x12, 0x19, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, - 0x48, 0x01, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x88, 0x01, 0x01, 0x12, 0x16, 0x0a, 0x06, - 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x06, 0x76, 0x61, - 0x6c, 0x75, 0x65, 0x73, 0x12, 0x4a, 0x0a, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, - 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, - 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x41, 0x72, 0x70, 0x54, 0x61, 0x72, 0x67, - 0x65, 0x74, 0x48, 0x61, 0x72, 0x64, 0x77, 0x61, 0x72, 0x65, 0x41, 0x64, 0x64, 0x72, 0x43, 0x6f, - 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, - 0x12, 0x4a, 0x0a, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x06, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, - 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x41, 0x72, 0x70, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x48, 0x61, - 0x72, 0x64, 0x77, 0x61, 0x72, 0x65, 0x41, 0x64, 0x64, 0x72, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, - 0x72, 0x52, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x4f, 0x0a, 0x0b, - 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x5f, 0x74, 0x61, 0x67, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, - 0x0b, 0x32, 0x2e, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, - 0x6c, 0x6f, 0x77, 0x41, 0x72, 0x70, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x48, 0x61, 0x72, 0x64, - 0x77, 0x61, 0x72, 0x65, 0x41, 0x64, 0x64, 0x72, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, - 0x67, 0x52, 0x0a, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x73, 0x1a, 0x56, 0x0a, - 0x06, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x22, 0x4c, 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, - 0x0f, 0x0a, 0x0b, 0x75, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x10, 0x00, - 0x12, 0x09, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x10, 0x02, 0x12, 0x0a, 0x0a, 0x06, 0x76, - 0x61, 0x6c, 0x75, 0x65, 0x73, 0x10, 0x03, 0x12, 0x0d, 0x0a, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, - 0x6d, 0x65, 0x6e, 0x74, 0x10, 0x04, 0x12, 0x0d, 0x0a, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, - 0x65, 0x6e, 0x74, 0x10, 0x05, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, - 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x95, 0x01, 0x0a, 0x27, 0x50, - 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x41, 0x72, 0x70, 0x54, 0x61, 0x72, - 0x67, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x41, 0x64, 0x64, 0x72, 0x43, - 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x12, 0x19, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x88, 0x01, - 0x01, 0x12, 0x17, 0x0a, 0x04, 0x73, 0x74, 0x65, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, - 0x01, 0x52, 0x04, 0x73, 0x74, 0x65, 0x70, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x63, 0x6f, - 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x02, 0x52, 0x05, 0x63, 0x6f, 0x75, - 0x6e, 0x74, 0x88, 0x01, 0x01, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x42, - 0x07, 0x0a, 0x05, 0x5f, 0x73, 0x74, 0x65, 0x70, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x63, 0x6f, 0x75, - 0x6e, 0x74, 0x22, 0x9d, 0x01, 0x0a, 0x29, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, - 0x6f, 0x77, 0x41, 0x72, 0x70, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x74, 0x6f, - 0x63, 0x6f, 0x6c, 0x41, 0x64, 0x64, 0x72, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, - 0x12, 0x17, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, - 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x6f, 0x66, 0x66, - 0x73, 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x06, 0x6f, 0x66, 0x66, - 0x73, 0x65, 0x74, 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x02, 0x52, 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, - 0x88, 0x01, 0x01, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x42, 0x09, 0x0a, 0x07, - 0x5f, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6c, 0x65, 0x6e, 0x67, - 0x74, 0x68, 0x22, 0xfb, 0x03, 0x0a, 0x20, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, - 0x6f, 0x77, 0x41, 0x72, 0x70, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x74, 0x6f, - 0x63, 0x6f, 0x6c, 0x41, 0x64, 0x64, 0x72, 0x12, 0x4e, 0x0a, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, - 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x31, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, - 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x41, 0x72, 0x70, 0x54, 0x61, 0x72, 0x67, - 0x65, 0x74, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x41, 0x64, 0x64, 0x72, 0x2e, 0x43, - 0x68, 0x6f, 0x69, 0x63, 0x65, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x48, 0x00, 0x52, 0x06, 0x63, 0x68, - 0x6f, 0x69, 0x63, 0x65, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x88, - 0x01, 0x01, 0x12, 0x16, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, - 0x28, 0x09, 0x52, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x12, 0x4a, 0x0a, 0x09, 0x69, 0x6e, - 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2c, 0x2e, - 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x41, - 0x72, 0x70, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, - 0x41, 0x64, 0x64, 0x72, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, 0x69, 0x6e, 0x63, - 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x4a, 0x0a, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, - 0x65, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x6f, 0x74, 0x67, 0x2e, - 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x41, 0x72, 0x70, 0x54, 0x61, - 0x72, 0x67, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x41, 0x64, 0x64, 0x72, - 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, - 0x6e, 0x74, 0x12, 0x4f, 0x0a, 0x0b, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x5f, 0x74, 0x61, 0x67, - 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, - 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x41, 0x72, 0x70, 0x54, 0x61, 0x72, 0x67, - 0x65, 0x74, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x41, 0x64, 0x64, 0x72, 0x4d, 0x65, - 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x52, 0x0a, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, - 0x61, 0x67, 0x73, 0x1a, 0x56, 0x0a, 0x06, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x22, 0x4c, 0x0a, - 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x0a, 0x0b, 0x75, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, - 0x66, 0x69, 0x65, 0x64, 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x10, - 0x02, 0x12, 0x0a, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x10, 0x03, 0x12, 0x0d, 0x0a, - 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x10, 0x04, 0x12, 0x0d, 0x0a, 0x09, - 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x10, 0x05, 0x42, 0x09, 0x0a, 0x07, 0x5f, - 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, - 0x22, 0x8c, 0x01, 0x0a, 0x1e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, - 0x49, 0x63, 0x6d, 0x70, 0x45, 0x63, 0x68, 0x6f, 0x54, 0x79, 0x70, 0x65, 0x43, 0x6f, 0x75, 0x6e, - 0x74, 0x65, 0x72, 0x12, 0x19, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x0d, 0x48, 0x00, 0x52, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x88, 0x01, 0x01, 0x12, 0x17, - 0x0a, 0x04, 0x73, 0x74, 0x65, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x04, - 0x73, 0x74, 0x65, 0x70, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x02, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x88, - 0x01, 0x01, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x42, 0x07, 0x0a, 0x05, - 0x5f, 0x73, 0x74, 0x65, 0x70, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x22, - 0x94, 0x01, 0x0a, 0x20, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, - 0x63, 0x6d, 0x70, 0x45, 0x63, 0x68, 0x6f, 0x54, 0x79, 0x70, 0x65, 0x4d, 0x65, 0x74, 0x72, 0x69, - 0x63, 0x54, 0x61, 0x67, 0x12, 0x17, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x48, 0x00, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, - 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, - 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x6c, 0x65, - 0x6e, 0x67, 0x74, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x02, 0x52, 0x06, 0x6c, 0x65, - 0x6e, 0x67, 0x74, 0x68, 0x88, 0x01, 0x01, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x6e, 0x61, 0x6d, 0x65, - 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x42, 0x09, 0x0a, 0x07, 0x5f, - 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x22, 0xce, 0x03, 0x0a, 0x17, 0x50, 0x61, 0x74, 0x74, 0x65, - 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x63, 0x6d, 0x70, 0x45, 0x63, 0x68, 0x6f, 0x54, 0x79, - 0x70, 0x65, 0x12, 0x45, 0x0a, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x0e, 0x32, 0x28, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, - 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x63, 0x6d, 0x70, 0x45, 0x63, 0x68, 0x6f, 0x54, 0x79, 0x70, 0x65, - 0x2e, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x48, 0x00, 0x52, 0x06, - 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x76, 0x61, 0x6c, - 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, - 0x65, 0x88, 0x01, 0x01, 0x12, 0x16, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x03, - 0x20, 0x03, 0x28, 0x0d, 0x52, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x12, 0x41, 0x0a, 0x09, - 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x23, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, - 0x77, 0x49, 0x63, 0x6d, 0x70, 0x45, 0x63, 0x68, 0x6f, 0x54, 0x79, 0x70, 0x65, 0x43, 0x6f, 0x75, - 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, - 0x41, 0x0a, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, - 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x63, 0x6d, 0x70, 0x45, 0x63, 0x68, 0x6f, 0x54, 0x79, 0x70, 0x65, - 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, - 0x6e, 0x74, 0x12, 0x46, 0x0a, 0x0b, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x5f, 0x74, 0x61, 0x67, - 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, - 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x63, 0x6d, 0x70, 0x45, 0x63, 0x68, - 0x6f, 0x54, 0x79, 0x70, 0x65, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x52, 0x0a, - 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x73, 0x1a, 0x56, 0x0a, 0x06, 0x43, 0x68, - 0x6f, 0x69, 0x63, 0x65, 0x22, 0x4c, 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x0a, 0x0b, - 0x75, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x10, 0x00, 0x12, 0x09, 0x0a, - 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x10, 0x02, 0x12, 0x0a, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, - 0x65, 0x73, 0x10, 0x03, 0x12, 0x0d, 0x0a, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, - 0x74, 0x10, 0x04, 0x12, 0x0d, 0x0a, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, - 0x10, 0x05, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x42, 0x08, 0x0a, - 0x06, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x8c, 0x01, 0x0a, 0x1e, 0x50, 0x61, 0x74, 0x74, - 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x63, 0x6d, 0x70, 0x45, 0x63, 0x68, 0x6f, 0x43, - 0x6f, 0x64, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x12, 0x19, 0x0a, 0x05, 0x73, 0x74, + 0x0a, 0x06, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x8b, 0x01, 0x0a, 0x1d, 0x50, 0x61, 0x74, + 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x52, 0x73, 0x76, 0x70, 0x56, 0x65, 0x72, 0x73, + 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x12, 0x19, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x00, 0x52, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x88, 0x01, 0x01, 0x12, 0x17, 0x0a, 0x04, 0x73, 0x74, 0x65, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x04, 0x73, 0x74, 0x65, 0x70, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x02, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x88, 0x01, 0x01, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x73, 0x74, - 0x61, 0x72, 0x74, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x73, 0x74, 0x65, 0x70, 0x42, 0x08, 0x0a, 0x06, - 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x94, 0x01, 0x0a, 0x20, 0x50, 0x61, 0x74, 0x74, 0x65, - 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x63, 0x6d, 0x70, 0x45, 0x63, 0x68, 0x6f, 0x43, 0x6f, - 0x64, 0x65, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x12, 0x17, 0x0a, 0x04, 0x6e, - 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x04, 0x6e, 0x61, 0x6d, - 0x65, 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x88, 0x01, - 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x0d, 0x48, 0x02, 0x52, 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x88, 0x01, 0x01, 0x42, 0x07, - 0x0a, 0x05, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6f, 0x66, 0x66, 0x73, - 0x65, 0x74, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x22, 0xce, 0x03, - 0x0a, 0x17, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x63, 0x6d, - 0x70, 0x45, 0x63, 0x68, 0x6f, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x45, 0x0a, 0x06, 0x63, 0x68, 0x6f, - 0x69, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x28, 0x2e, 0x6f, 0x74, 0x67, 0x2e, - 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x63, 0x6d, 0x70, 0x45, - 0x63, 0x68, 0x6f, 0x43, 0x6f, 0x64, 0x65, 0x2e, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x2e, 0x45, - 0x6e, 0x75, 0x6d, 0x48, 0x00, 0x52, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x88, 0x01, 0x01, - 0x12, 0x19, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, - 0x01, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x88, 0x01, 0x01, 0x12, 0x16, 0x0a, 0x06, 0x76, - 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0d, 0x52, 0x06, 0x76, 0x61, 0x6c, - 0x75, 0x65, 0x73, 0x12, 0x41, 0x0a, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, - 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, - 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x63, 0x6d, 0x70, 0x45, 0x63, 0x68, 0x6f, - 0x43, 0x6f, 0x64, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, 0x69, 0x6e, 0x63, - 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x41, 0x0a, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, - 0x65, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x6f, 0x74, 0x67, 0x2e, - 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x63, 0x6d, 0x70, 0x45, - 0x63, 0x68, 0x6f, 0x43, 0x6f, 0x64, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, - 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x46, 0x0a, 0x0b, 0x6d, 0x65, 0x74, - 0x72, 0x69, 0x63, 0x5f, 0x74, 0x61, 0x67, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x25, - 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, - 0x49, 0x63, 0x6d, 0x70, 0x45, 0x63, 0x68, 0x6f, 0x43, 0x6f, 0x64, 0x65, 0x4d, 0x65, 0x74, 0x72, - 0x69, 0x63, 0x54, 0x61, 0x67, 0x52, 0x0a, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, - 0x73, 0x1a, 0x56, 0x0a, 0x06, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x22, 0x4c, 0x0a, 0x04, 0x45, - 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x0a, 0x0b, 0x75, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, - 0x65, 0x64, 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x10, 0x02, 0x12, - 0x0a, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x10, 0x03, 0x12, 0x0d, 0x0a, 0x09, 0x69, - 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x10, 0x04, 0x12, 0x0d, 0x0a, 0x09, 0x64, 0x65, - 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x10, 0x05, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x63, 0x68, - 0x6f, 0x69, 0x63, 0x65, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0xf4, - 0x02, 0x0a, 0x1b, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x63, - 0x6d, 0x70, 0x45, 0x63, 0x68, 0x6f, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x12, 0x49, - 0x0a, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2c, - 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, - 0x49, 0x63, 0x6d, 0x70, 0x45, 0x63, 0x68, 0x6f, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, - 0x2e, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x48, 0x00, 0x52, 0x06, - 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x88, 0x01, 0x01, 0x12, 0x52, 0x0a, 0x09, 0x67, 0x65, 0x6e, - 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2f, 0x2e, 0x6f, - 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x63, - 0x6d, 0x70, 0x45, 0x63, 0x68, 0x6f, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x2e, 0x47, - 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x48, 0x01, 0x52, - 0x09, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, - 0x06, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x02, 0x52, - 0x06, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x88, 0x01, 0x01, 0x1a, 0x3c, 0x0a, 0x06, 0x43, 0x68, - 0x6f, 0x69, 0x63, 0x65, 0x22, 0x32, 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x0a, 0x0b, - 0x75, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x10, 0x00, 0x12, 0x0d, 0x0a, - 0x09, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x10, 0x01, 0x12, 0x0a, 0x0a, 0x06, - 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x10, 0x02, 0x1a, 0x37, 0x0a, 0x09, 0x47, 0x65, 0x6e, 0x65, - 0x72, 0x61, 0x74, 0x65, 0x64, 0x22, 0x2a, 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x0a, - 0x0b, 0x75, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x10, 0x00, 0x12, 0x08, - 0x0a, 0x04, 0x67, 0x6f, 0x6f, 0x64, 0x10, 0x01, 0x12, 0x07, 0x0a, 0x03, 0x62, 0x61, 0x64, 0x10, - 0x02, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x42, 0x0c, 0x0a, 0x0a, - 0x5f, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x63, - 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x22, 0x92, 0x01, 0x0a, 0x24, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, - 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x63, 0x6d, 0x70, 0x45, 0x63, 0x68, 0x6f, 0x49, 0x64, 0x65, - 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x12, 0x19, - 0x0a, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x00, 0x52, - 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x88, 0x01, 0x01, 0x12, 0x17, 0x0a, 0x04, 0x73, 0x74, 0x65, - 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x04, 0x73, 0x74, 0x65, 0x70, 0x88, - 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x0d, 0x48, 0x02, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x88, 0x01, 0x01, 0x42, 0x08, 0x0a, - 0x06, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x73, 0x74, 0x65, 0x70, - 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x9a, 0x01, 0x0a, 0x26, 0x50, - 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x63, 0x6d, 0x70, 0x45, 0x63, - 0x68, 0x6f, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x4d, 0x65, 0x74, 0x72, - 0x69, 0x63, 0x54, 0x61, 0x67, 0x12, 0x17, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, 0x1b, - 0x0a, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, - 0x52, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x6c, - 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x02, 0x52, 0x06, 0x6c, - 0x65, 0x6e, 0x67, 0x74, 0x68, 0x88, 0x01, 0x01, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x6e, 0x61, 0x6d, - 0x65, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x42, 0x09, 0x0a, 0x07, - 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x22, 0xec, 0x03, 0x0a, 0x1d, 0x50, 0x61, 0x74, 0x74, - 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x63, 0x6d, 0x70, 0x45, 0x63, 0x68, 0x6f, 0x49, - 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x12, 0x4b, 0x0a, 0x06, 0x63, 0x68, 0x6f, - 0x69, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2e, 0x2e, 0x6f, 0x74, 0x67, 0x2e, - 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x63, 0x6d, 0x70, 0x45, - 0x63, 0x68, 0x6f, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x2e, 0x43, 0x68, - 0x6f, 0x69, 0x63, 0x65, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x48, 0x00, 0x52, 0x06, 0x63, 0x68, 0x6f, - 0x69, 0x63, 0x65, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x88, 0x01, - 0x01, 0x12, 0x16, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, - 0x0d, 0x52, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x12, 0x47, 0x0a, 0x09, 0x69, 0x6e, 0x63, - 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x6f, - 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x63, - 0x6d, 0x70, 0x45, 0x63, 0x68, 0x6f, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, - 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, - 0x6e, 0x74, 0x12, 0x47, 0x0a, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, - 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, - 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x63, 0x6d, 0x70, 0x45, 0x63, 0x68, 0x6f, 0x49, - 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, - 0x52, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x4c, 0x0a, 0x0b, 0x6d, - 0x65, 0x74, 0x72, 0x69, 0x63, 0x5f, 0x74, 0x61, 0x67, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, - 0x32, 0x2b, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, - 0x6f, 0x77, 0x49, 0x63, 0x6d, 0x70, 0x45, 0x63, 0x68, 0x6f, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, - 0x66, 0x69, 0x65, 0x72, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x52, 0x0a, 0x6d, - 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x73, 0x1a, 0x56, 0x0a, 0x06, 0x43, 0x68, 0x6f, - 0x69, 0x63, 0x65, 0x22, 0x4c, 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x0a, 0x0b, 0x75, - 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, - 0x76, 0x61, 0x6c, 0x75, 0x65, 0x10, 0x02, 0x12, 0x0a, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, - 0x73, 0x10, 0x03, 0x12, 0x0d, 0x0a, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, - 0x10, 0x04, 0x12, 0x0d, 0x0a, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x10, - 0x05, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x42, 0x08, 0x0a, 0x06, - 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x96, 0x01, 0x0a, 0x28, 0x50, 0x61, 0x74, 0x74, 0x65, - 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x63, 0x6d, 0x70, 0x45, 0x63, 0x68, 0x6f, 0x53, 0x65, - 0x71, 0x75, 0x65, 0x6e, 0x63, 0x65, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x43, 0x6f, 0x75, 0x6e, - 0x74, 0x65, 0x72, 0x12, 0x19, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x0d, 0x48, 0x00, 0x52, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x88, 0x01, 0x01, 0x12, 0x17, - 0x0a, 0x04, 0x73, 0x74, 0x65, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x04, - 0x73, 0x74, 0x65, 0x70, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x02, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x88, - 0x01, 0x01, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x42, 0x07, 0x0a, 0x05, - 0x5f, 0x73, 0x74, 0x65, 0x70, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x22, - 0x9e, 0x01, 0x0a, 0x2a, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, - 0x63, 0x6d, 0x70, 0x45, 0x63, 0x68, 0x6f, 0x53, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x65, 0x4e, - 0x75, 0x6d, 0x62, 0x65, 0x72, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x12, 0x17, - 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x04, - 0x6e, 0x61, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, - 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, - 0x74, 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x0d, 0x48, 0x02, 0x52, 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x88, 0x01, - 0x01, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6f, - 0x66, 0x66, 0x73, 0x65, 0x74, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, - 0x22, 0x80, 0x04, 0x0a, 0x21, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, - 0x49, 0x63, 0x6d, 0x70, 0x45, 0x63, 0x68, 0x6f, 0x53, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x65, - 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x4f, 0x0a, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x32, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, - 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x63, 0x6d, 0x70, 0x45, 0x63, 0x68, 0x6f, - 0x53, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x65, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x2e, 0x43, + 0x61, 0x72, 0x74, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x73, 0x74, 0x65, 0x70, 0x42, 0x08, 0x0a, 0x06, + 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x82, 0x03, 0x0a, 0x16, 0x50, 0x61, 0x74, 0x74, 0x65, + 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x52, 0x73, 0x76, 0x70, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, + 0x6e, 0x12, 0x44, 0x0a, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x0e, 0x32, 0x27, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, + 0x6c, 0x6f, 0x77, 0x52, 0x73, 0x76, 0x70, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x48, 0x00, 0x52, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x88, 0x01, 0x01, 0x12, 0x16, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, - 0x28, 0x0d, 0x52, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x12, 0x4b, 0x0a, 0x09, 0x69, 0x6e, - 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, - 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, - 0x63, 0x6d, 0x70, 0x45, 0x63, 0x68, 0x6f, 0x53, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x65, 0x4e, - 0x75, 0x6d, 0x62, 0x65, 0x72, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, 0x69, 0x6e, - 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x4b, 0x0a, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, - 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x6f, 0x74, 0x67, - 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x63, 0x6d, 0x70, - 0x45, 0x63, 0x68, 0x6f, 0x53, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x65, 0x4e, 0x75, 0x6d, 0x62, - 0x65, 0x72, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, - 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x50, 0x0a, 0x0b, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x5f, 0x74, - 0x61, 0x67, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x6f, 0x74, 0x67, 0x2e, - 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x63, 0x6d, 0x70, 0x45, - 0x63, 0x68, 0x6f, 0x53, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x65, 0x4e, 0x75, 0x6d, 0x62, 0x65, - 0x72, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x52, 0x0a, 0x6d, 0x65, 0x74, 0x72, - 0x69, 0x63, 0x54, 0x61, 0x67, 0x73, 0x1a, 0x56, 0x0a, 0x06, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, - 0x22, 0x4c, 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x0a, 0x0b, 0x75, 0x6e, 0x73, 0x70, - 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, 0x76, 0x61, 0x6c, - 0x75, 0x65, 0x10, 0x02, 0x12, 0x0a, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x10, 0x03, - 0x12, 0x0d, 0x0a, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x10, 0x04, 0x12, - 0x0d, 0x0a, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x10, 0x05, 0x42, 0x09, - 0x0a, 0x07, 0x5f, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x76, 0x61, - 0x6c, 0x75, 0x65, 0x22, 0xfa, 0x02, 0x0a, 0x1d, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, - 0x6c, 0x6f, 0x77, 0x49, 0x63, 0x6d, 0x70, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x43, 0x68, 0x65, - 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x12, 0x4b, 0x0a, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2e, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, - 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x63, 0x6d, 0x70, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, - 0x6e, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x2e, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, - 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x48, 0x00, 0x52, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x88, - 0x01, 0x01, 0x12, 0x54, 0x0a, 0x09, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x31, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, - 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x63, 0x6d, 0x70, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, - 0x6e, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x2e, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, - 0x74, 0x65, 0x64, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x48, 0x01, 0x52, 0x09, 0x67, 0x65, 0x6e, 0x65, - 0x72, 0x61, 0x74, 0x65, 0x64, 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x63, 0x75, 0x73, 0x74, - 0x6f, 0x6d, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x02, 0x52, 0x06, 0x63, 0x75, 0x73, 0x74, - 0x6f, 0x6d, 0x88, 0x01, 0x01, 0x1a, 0x3c, 0x0a, 0x06, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x22, - 0x32, 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x0a, 0x0b, 0x75, 0x6e, 0x73, 0x70, 0x65, - 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x10, 0x00, 0x12, 0x0d, 0x0a, 0x09, 0x67, 0x65, 0x6e, 0x65, - 0x72, 0x61, 0x74, 0x65, 0x64, 0x10, 0x01, 0x12, 0x0a, 0x0a, 0x06, 0x63, 0x75, 0x73, 0x74, 0x6f, - 0x6d, 0x10, 0x02, 0x1a, 0x37, 0x0a, 0x09, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, - 0x22, 0x2a, 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x0a, 0x0b, 0x75, 0x6e, 0x73, 0x70, - 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x10, 0x00, 0x12, 0x08, 0x0a, 0x04, 0x67, 0x6f, 0x6f, - 0x64, 0x10, 0x01, 0x12, 0x07, 0x0a, 0x03, 0x62, 0x61, 0x64, 0x10, 0x02, 0x42, 0x09, 0x0a, 0x07, - 0x5f, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x67, 0x65, 0x6e, 0x65, - 0x72, 0x61, 0x74, 0x65, 0x64, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, - 0x22, 0x98, 0x01, 0x0a, 0x2a, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, - 0x49, 0x63, 0x6d, 0x70, 0x4e, 0x65, 0x78, 0x74, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x49, 0x64, - 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x12, - 0x19, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x00, - 0x52, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x88, 0x01, 0x01, 0x12, 0x17, 0x0a, 0x04, 0x73, 0x74, - 0x65, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x04, 0x73, 0x74, 0x65, 0x70, - 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x0d, 0x48, 0x02, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x88, 0x01, 0x01, 0x42, 0x08, - 0x0a, 0x06, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x73, 0x74, 0x65, - 0x70, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0xa0, 0x01, 0x0a, 0x2c, - 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x63, 0x6d, 0x70, 0x4e, - 0x65, 0x78, 0x74, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, - 0x69, 0x65, 0x72, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x12, 0x17, 0x0a, 0x04, - 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x04, 0x6e, 0x61, - 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x88, - 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x0d, 0x48, 0x02, 0x52, 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x88, 0x01, 0x01, 0x42, - 0x07, 0x0a, 0x05, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6f, 0x66, 0x66, - 0x73, 0x65, 0x74, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x22, 0x8a, - 0x04, 0x0a, 0x23, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x63, - 0x6d, 0x70, 0x4e, 0x65, 0x78, 0x74, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x49, 0x64, 0x65, 0x6e, - 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x12, 0x51, 0x0a, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x34, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, - 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x63, 0x6d, 0x70, 0x4e, 0x65, 0x78, 0x74, - 0x46, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, - 0x2e, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x48, 0x00, 0x52, 0x06, - 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x76, 0x61, 0x6c, - 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, - 0x65, 0x88, 0x01, 0x01, 0x12, 0x16, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x03, - 0x20, 0x03, 0x28, 0x0d, 0x52, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x12, 0x4d, 0x0a, 0x09, - 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x2f, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, - 0x77, 0x49, 0x63, 0x6d, 0x70, 0x4e, 0x65, 0x78, 0x74, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x49, - 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, - 0x52, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x4d, 0x0a, 0x09, 0x64, - 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, - 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, - 0x49, 0x63, 0x6d, 0x70, 0x4e, 0x65, 0x78, 0x74, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x49, 0x64, - 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, - 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x52, 0x0a, 0x0b, 0x6d, 0x65, - 0x74, 0x72, 0x69, 0x63, 0x5f, 0x74, 0x61, 0x67, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, - 0x31, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, - 0x77, 0x49, 0x63, 0x6d, 0x70, 0x4e, 0x65, 0x78, 0x74, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x49, - 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, - 0x61, 0x67, 0x52, 0x0a, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x73, 0x1a, 0x56, + 0x28, 0x0d, 0x52, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x12, 0x40, 0x0a, 0x09, 0x69, 0x6e, + 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, + 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x52, + 0x73, 0x76, 0x70, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, + 0x72, 0x52, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x40, 0x0a, 0x09, + 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x22, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, + 0x77, 0x52, 0x73, 0x76, 0x70, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x75, 0x6e, + 0x74, 0x65, 0x72, 0x52, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x1a, 0x56, 0x0a, 0x06, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x22, 0x4c, 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x0a, 0x0b, 0x75, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x10, 0x02, 0x12, 0x0a, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x10, 0x03, 0x12, 0x0d, 0x0a, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x10, 0x04, 0x12, 0x0d, 0x0a, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x10, 0x05, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x63, 0x68, 0x6f, 0x69, 0x63, - 0x65, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x9c, 0x01, 0x0a, 0x2e, - 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x63, 0x6d, 0x70, 0x4e, - 0x65, 0x78, 0x74, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x53, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, - 0x65, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x12, 0x19, - 0x0a, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x00, 0x52, - 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x88, 0x01, 0x01, 0x12, 0x17, 0x0a, 0x04, 0x73, 0x74, 0x65, - 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x04, 0x73, 0x74, 0x65, 0x70, 0x88, - 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x0d, 0x48, 0x02, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x88, 0x01, 0x01, 0x42, 0x08, 0x0a, - 0x06, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x73, 0x74, 0x65, 0x70, - 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0xa4, 0x01, 0x0a, 0x30, 0x50, - 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x63, 0x6d, 0x70, 0x4e, 0x65, - 0x78, 0x74, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x53, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x65, - 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x12, - 0x17, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, - 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x6f, 0x66, 0x66, 0x73, - 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x06, 0x6f, 0x66, 0x66, 0x73, - 0x65, 0x74, 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x02, 0x52, 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x88, - 0x01, 0x01, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x42, 0x09, 0x0a, 0x07, 0x5f, - 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, - 0x68, 0x22, 0x9e, 0x04, 0x0a, 0x27, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, - 0x77, 0x49, 0x63, 0x6d, 0x70, 0x4e, 0x65, 0x78, 0x74, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x53, - 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x65, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x55, 0x0a, - 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x38, 0x2e, - 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, - 0x63, 0x6d, 0x70, 0x4e, 0x65, 0x78, 0x74, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x53, 0x65, 0x71, - 0x75, 0x65, 0x6e, 0x63, 0x65, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x2e, 0x43, 0x68, 0x6f, 0x69, - 0x63, 0x65, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x48, 0x00, 0x52, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, - 0x65, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x88, 0x01, 0x01, 0x12, - 0x16, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0d, 0x52, - 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x12, 0x51, 0x0a, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, - 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x33, 0x2e, 0x6f, 0x74, 0x67, - 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x63, 0x6d, 0x70, - 0x4e, 0x65, 0x78, 0x74, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x53, 0x65, 0x71, 0x75, 0x65, 0x6e, - 0x63, 0x65, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, - 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x51, 0x0a, 0x09, 0x64, 0x65, - 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x33, 0x2e, - 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, - 0x63, 0x6d, 0x70, 0x4e, 0x65, 0x78, 0x74, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x53, 0x65, 0x71, - 0x75, 0x65, 0x6e, 0x63, 0x65, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x43, 0x6f, 0x75, 0x6e, 0x74, - 0x65, 0x72, 0x52, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x56, 0x0a, - 0x0b, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x5f, 0x74, 0x61, 0x67, 0x73, 0x18, 0x07, 0x20, 0x03, - 0x28, 0x0b, 0x32, 0x35, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, - 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x63, 0x6d, 0x70, 0x4e, 0x65, 0x78, 0x74, 0x46, 0x69, 0x65, 0x6c, - 0x64, 0x73, 0x53, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x65, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, - 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x52, 0x0a, 0x6d, 0x65, 0x74, 0x72, 0x69, - 0x63, 0x54, 0x61, 0x67, 0x73, 0x1a, 0x56, 0x0a, 0x06, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x22, - 0x4c, 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x0a, 0x0b, 0x75, 0x6e, 0x73, 0x70, 0x65, - 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, - 0x65, 0x10, 0x02, 0x12, 0x0a, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x10, 0x03, 0x12, - 0x0d, 0x0a, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x10, 0x04, 0x12, 0x0d, - 0x0a, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x10, 0x05, 0x42, 0x09, 0x0a, - 0x07, 0x5f, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x76, 0x61, 0x6c, - 0x75, 0x65, 0x22, 0x8e, 0x01, 0x0a, 0x20, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, - 0x6f, 0x77, 0x49, 0x63, 0x6d, 0x70, 0x76, 0x36, 0x45, 0x63, 0x68, 0x6f, 0x54, 0x79, 0x70, 0x65, + 0x65, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0xf4, 0x02, 0x0a, 0x1b, + 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x52, 0x73, 0x76, 0x70, 0x52, + 0x73, 0x76, 0x70, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x12, 0x49, 0x0a, 0x06, 0x63, + 0x68, 0x6f, 0x69, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2c, 0x2e, 0x6f, 0x74, + 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x52, 0x73, 0x76, + 0x70, 0x52, 0x73, 0x76, 0x70, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x2e, 0x43, 0x68, + 0x6f, 0x69, 0x63, 0x65, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x48, 0x00, 0x52, 0x06, 0x63, 0x68, 0x6f, + 0x69, 0x63, 0x65, 0x88, 0x01, 0x01, 0x12, 0x52, 0x0a, 0x09, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, + 0x74, 0x65, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2f, 0x2e, 0x6f, 0x74, 0x67, 0x2e, + 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x52, 0x73, 0x76, 0x70, 0x52, + 0x73, 0x76, 0x70, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x2e, 0x47, 0x65, 0x6e, 0x65, + 0x72, 0x61, 0x74, 0x65, 0x64, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x48, 0x01, 0x52, 0x09, 0x67, 0x65, + 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x63, 0x75, + 0x73, 0x74, 0x6f, 0x6d, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x02, 0x52, 0x06, 0x63, 0x75, + 0x73, 0x74, 0x6f, 0x6d, 0x88, 0x01, 0x01, 0x1a, 0x3c, 0x0a, 0x06, 0x43, 0x68, 0x6f, 0x69, 0x63, + 0x65, 0x22, 0x32, 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x0a, 0x0b, 0x75, 0x6e, 0x73, + 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x10, 0x00, 0x12, 0x0d, 0x0a, 0x09, 0x67, 0x65, + 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x10, 0x01, 0x12, 0x0a, 0x0a, 0x06, 0x63, 0x75, 0x73, + 0x74, 0x6f, 0x6d, 0x10, 0x02, 0x1a, 0x37, 0x0a, 0x09, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, + 0x65, 0x64, 0x22, 0x2a, 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x0a, 0x0b, 0x75, 0x6e, + 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x10, 0x00, 0x12, 0x08, 0x0a, 0x04, 0x67, + 0x6f, 0x6f, 0x64, 0x10, 0x01, 0x12, 0x07, 0x0a, 0x03, 0x62, 0x61, 0x64, 0x10, 0x02, 0x42, 0x09, + 0x0a, 0x07, 0x5f, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x67, 0x65, + 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x63, 0x75, 0x73, 0x74, + 0x6f, 0x6d, 0x22, 0x8e, 0x01, 0x0a, 0x20, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, + 0x6f, 0x77, 0x52, 0x73, 0x76, 0x70, 0x54, 0x69, 0x6d, 0x65, 0x54, 0x6f, 0x4c, 0x69, 0x76, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x12, 0x19, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x00, 0x52, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x88, 0x01, 0x01, 0x12, 0x17, 0x0a, 0x04, 0x73, 0x74, 0x65, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, @@ -106545,96 +122343,33 @@ var file_otg_proto_rawDesc = []byte{ 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x02, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x88, 0x01, 0x01, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x73, 0x74, 0x65, 0x70, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x63, 0x6f, - 0x75, 0x6e, 0x74, 0x22, 0x96, 0x01, 0x0a, 0x22, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, - 0x6c, 0x6f, 0x77, 0x49, 0x63, 0x6d, 0x70, 0x76, 0x36, 0x45, 0x63, 0x68, 0x6f, 0x54, 0x79, 0x70, - 0x65, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x12, 0x17, 0x0a, 0x04, 0x6e, 0x61, - 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, - 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x88, 0x01, 0x01, - 0x12, 0x1b, 0x0a, 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, - 0x48, 0x02, 0x52, 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x88, 0x01, 0x01, 0x42, 0x07, 0x0a, - 0x05, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6f, 0x66, 0x66, 0x73, 0x65, - 0x74, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x22, 0xd8, 0x03, 0x0a, - 0x19, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x63, 0x6d, 0x70, - 0x76, 0x36, 0x45, 0x63, 0x68, 0x6f, 0x54, 0x79, 0x70, 0x65, 0x12, 0x47, 0x0a, 0x06, 0x63, 0x68, - 0x6f, 0x69, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2a, 0x2e, 0x6f, 0x74, 0x67, - 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x63, 0x6d, 0x70, - 0x76, 0x36, 0x45, 0x63, 0x68, 0x6f, 0x54, 0x79, 0x70, 0x65, 0x2e, 0x43, 0x68, 0x6f, 0x69, 0x63, - 0x65, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x48, 0x00, 0x52, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, - 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x0d, 0x48, 0x01, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x88, 0x01, 0x01, 0x12, 0x16, - 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0d, 0x52, 0x06, - 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x12, 0x43, 0x0a, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, - 0x65, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x6f, 0x74, 0x67, 0x2e, - 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x63, 0x6d, 0x70, 0x76, - 0x36, 0x45, 0x63, 0x68, 0x6f, 0x54, 0x79, 0x70, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, - 0x52, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x43, 0x0a, 0x09, 0x64, - 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, - 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, - 0x49, 0x63, 0x6d, 0x70, 0x76, 0x36, 0x45, 0x63, 0x68, 0x6f, 0x54, 0x79, 0x70, 0x65, 0x43, 0x6f, - 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, - 0x12, 0x48, 0x0a, 0x0b, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x5f, 0x74, 0x61, 0x67, 0x73, 0x18, - 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, - 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x63, 0x6d, 0x70, 0x76, 0x36, 0x45, 0x63, 0x68, - 0x6f, 0x54, 0x79, 0x70, 0x65, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x52, 0x0a, - 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x73, 0x1a, 0x56, 0x0a, 0x06, 0x43, 0x68, - 0x6f, 0x69, 0x63, 0x65, 0x22, 0x4c, 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x0a, 0x0b, - 0x75, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x10, 0x00, 0x12, 0x09, 0x0a, - 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x10, 0x02, 0x12, 0x0a, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, - 0x65, 0x73, 0x10, 0x03, 0x12, 0x0d, 0x0a, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, - 0x74, 0x10, 0x04, 0x12, 0x0d, 0x0a, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, - 0x10, 0x05, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x42, 0x08, 0x0a, - 0x06, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x8e, 0x01, 0x0a, 0x20, 0x50, 0x61, 0x74, 0x74, - 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x63, 0x6d, 0x70, 0x76, 0x36, 0x45, 0x63, 0x68, - 0x6f, 0x43, 0x6f, 0x64, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x12, 0x19, 0x0a, 0x05, - 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x00, 0x52, 0x05, 0x73, - 0x74, 0x61, 0x72, 0x74, 0x88, 0x01, 0x01, 0x12, 0x17, 0x0a, 0x04, 0x73, 0x74, 0x65, 0x70, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x04, 0x73, 0x74, 0x65, 0x70, 0x88, 0x01, 0x01, - 0x12, 0x19, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x48, - 0x02, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x88, 0x01, 0x01, 0x42, 0x08, 0x0a, 0x06, 0x5f, - 0x73, 0x74, 0x61, 0x72, 0x74, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x73, 0x74, 0x65, 0x70, 0x42, 0x08, - 0x0a, 0x06, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x96, 0x01, 0x0a, 0x22, 0x50, 0x61, 0x74, - 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x63, 0x6d, 0x70, 0x76, 0x36, 0x45, 0x63, - 0x68, 0x6f, 0x43, 0x6f, 0x64, 0x65, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x12, - 0x17, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, - 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x6f, 0x66, 0x66, 0x73, - 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x06, 0x6f, 0x66, 0x66, 0x73, - 0x65, 0x74, 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x02, 0x52, 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x88, - 0x01, 0x01, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x42, 0x09, 0x0a, 0x07, 0x5f, - 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, - 0x68, 0x22, 0xd8, 0x03, 0x0a, 0x19, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, - 0x77, 0x49, 0x63, 0x6d, 0x70, 0x76, 0x36, 0x45, 0x63, 0x68, 0x6f, 0x43, 0x6f, 0x64, 0x65, 0x12, - 0x47, 0x0a, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, - 0x2a, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, - 0x77, 0x49, 0x63, 0x6d, 0x70, 0x76, 0x36, 0x45, 0x63, 0x68, 0x6f, 0x43, 0x6f, 0x64, 0x65, 0x2e, - 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x48, 0x00, 0x52, 0x06, 0x63, - 0x68, 0x6f, 0x69, 0x63, 0x65, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, - 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, - 0x88, 0x01, 0x01, 0x12, 0x16, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x03, 0x20, - 0x03, 0x28, 0x0d, 0x52, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x12, 0x43, 0x0a, 0x09, 0x69, - 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, - 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, - 0x49, 0x63, 0x6d, 0x70, 0x76, 0x36, 0x45, 0x63, 0x68, 0x6f, 0x43, 0x6f, 0x64, 0x65, 0x43, 0x6f, - 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, - 0x12, 0x43, 0x0a, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x06, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, - 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x63, 0x6d, 0x70, 0x76, 0x36, 0x45, 0x63, 0x68, 0x6f, 0x43, - 0x6f, 0x64, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, 0x64, 0x65, 0x63, 0x72, - 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x48, 0x0a, 0x0b, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x5f, - 0x74, 0x61, 0x67, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x6f, 0x74, 0x67, - 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x63, 0x6d, 0x70, - 0x76, 0x36, 0x45, 0x63, 0x68, 0x6f, 0x43, 0x6f, 0x64, 0x65, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, - 0x54, 0x61, 0x67, 0x52, 0x0a, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x73, 0x1a, - 0x56, 0x0a, 0x06, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x22, 0x4c, 0x0a, 0x04, 0x45, 0x6e, 0x75, - 0x6d, 0x12, 0x0f, 0x0a, 0x0b, 0x75, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, - 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x10, 0x02, 0x12, 0x0a, 0x0a, - 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x10, 0x03, 0x12, 0x0d, 0x0a, 0x09, 0x69, 0x6e, 0x63, - 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x10, 0x04, 0x12, 0x0d, 0x0a, 0x09, 0x64, 0x65, 0x63, 0x72, - 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x10, 0x05, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x63, 0x68, 0x6f, 0x69, - 0x63, 0x65, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x94, 0x01, 0x0a, - 0x26, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x63, 0x6d, 0x70, - 0x76, 0x36, 0x45, 0x63, 0x68, 0x6f, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, + 0x75, 0x6e, 0x74, 0x22, 0x8e, 0x03, 0x0a, 0x19, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, + 0x6c, 0x6f, 0x77, 0x52, 0x73, 0x76, 0x70, 0x54, 0x69, 0x6d, 0x65, 0x54, 0x6f, 0x4c, 0x69, 0x76, + 0x65, 0x12, 0x47, 0x0a, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x0e, 0x32, 0x2a, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, + 0x6c, 0x6f, 0x77, 0x52, 0x73, 0x76, 0x70, 0x54, 0x69, 0x6d, 0x65, 0x54, 0x6f, 0x4c, 0x69, 0x76, + 0x65, 0x2e, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x48, 0x00, 0x52, + 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x76, 0x61, + 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x05, 0x76, 0x61, 0x6c, + 0x75, 0x65, 0x88, 0x01, 0x01, 0x12, 0x16, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, + 0x03, 0x20, 0x03, 0x28, 0x0d, 0x52, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x12, 0x43, 0x0a, + 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x25, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, + 0x6f, 0x77, 0x52, 0x73, 0x76, 0x70, 0x54, 0x69, 0x6d, 0x65, 0x54, 0x6f, 0x4c, 0x69, 0x76, 0x65, + 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, + 0x6e, 0x74, 0x12, 0x43, 0x0a, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, + 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, + 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x52, 0x73, 0x76, 0x70, 0x54, 0x69, 0x6d, 0x65, 0x54, + 0x6f, 0x4c, 0x69, 0x76, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, 0x64, 0x65, + 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x1a, 0x56, 0x0a, 0x06, 0x43, 0x68, 0x6f, 0x69, 0x63, + 0x65, 0x22, 0x4c, 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x0a, 0x0b, 0x75, 0x6e, 0x73, + 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, 0x76, 0x61, + 0x6c, 0x75, 0x65, 0x10, 0x02, 0x12, 0x0a, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x10, + 0x03, 0x12, 0x0d, 0x0a, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x10, 0x04, + 0x12, 0x0d, 0x0a, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x10, 0x05, 0x42, + 0x09, 0x0a, 0x07, 0x5f, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x76, + 0x61, 0x6c, 0x75, 0x65, 0x22, 0x8c, 0x01, 0x0a, 0x1e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, + 0x46, 0x6c, 0x6f, 0x77, 0x52, 0x73, 0x76, 0x70, 0x52, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x64, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x12, 0x19, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x00, 0x52, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x88, 0x01, 0x01, 0x12, 0x17, 0x0a, 0x04, 0x73, 0x74, 0x65, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, @@ -106642,840 +122377,1528 @@ var file_otg_proto_rawDesc = []byte{ 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x02, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x88, 0x01, 0x01, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x73, 0x74, 0x65, 0x70, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x63, 0x6f, - 0x75, 0x6e, 0x74, 0x22, 0x9c, 0x01, 0x0a, 0x28, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, - 0x6c, 0x6f, 0x77, 0x49, 0x63, 0x6d, 0x70, 0x76, 0x36, 0x45, 0x63, 0x68, 0x6f, 0x49, 0x64, 0x65, - 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, - 0x12, 0x17, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, - 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x6f, 0x66, 0x66, - 0x73, 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x06, 0x6f, 0x66, 0x66, - 0x73, 0x65, 0x74, 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x02, 0x52, 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, - 0x88, 0x01, 0x01, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x42, 0x09, 0x0a, 0x07, - 0x5f, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6c, 0x65, 0x6e, 0x67, - 0x74, 0x68, 0x22, 0xf6, 0x03, 0x0a, 0x1f, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, - 0x6f, 0x77, 0x49, 0x63, 0x6d, 0x70, 0x76, 0x36, 0x45, 0x63, 0x68, 0x6f, 0x49, 0x64, 0x65, 0x6e, - 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x12, 0x4d, 0x0a, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x30, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, - 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x63, 0x6d, 0x70, 0x76, 0x36, 0x45, 0x63, - 0x68, 0x6f, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x2e, 0x43, 0x68, 0x6f, - 0x69, 0x63, 0x65, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x48, 0x00, 0x52, 0x06, 0x63, 0x68, 0x6f, 0x69, - 0x63, 0x65, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x88, 0x01, 0x01, - 0x12, 0x16, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0d, - 0x52, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x12, 0x49, 0x0a, 0x09, 0x69, 0x6e, 0x63, 0x72, - 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x6f, 0x74, - 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x63, 0x6d, - 0x70, 0x76, 0x36, 0x45, 0x63, 0x68, 0x6f, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, - 0x72, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, - 0x65, 0x6e, 0x74, 0x12, 0x49, 0x0a, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, - 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, - 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x63, 0x6d, 0x70, 0x76, 0x36, 0x45, 0x63, - 0x68, 0x6f, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x43, 0x6f, 0x75, 0x6e, - 0x74, 0x65, 0x72, 0x52, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x4e, - 0x0a, 0x0b, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x5f, 0x74, 0x61, 0x67, 0x73, 0x18, 0x07, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, - 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x63, 0x6d, 0x70, 0x76, 0x36, 0x45, 0x63, 0x68, 0x6f, 0x49, - 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, - 0x61, 0x67, 0x52, 0x0a, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x73, 0x1a, 0x56, - 0x0a, 0x06, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x22, 0x4c, 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, - 0x12, 0x0f, 0x0a, 0x0b, 0x75, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x10, - 0x00, 0x12, 0x09, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x10, 0x02, 0x12, 0x0a, 0x0a, 0x06, - 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x10, 0x03, 0x12, 0x0d, 0x0a, 0x09, 0x69, 0x6e, 0x63, 0x72, - 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x10, 0x04, 0x12, 0x0d, 0x0a, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, - 0x6d, 0x65, 0x6e, 0x74, 0x10, 0x05, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x63, 0x68, 0x6f, 0x69, 0x63, - 0x65, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x98, 0x01, 0x0a, 0x2a, - 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x63, 0x6d, 0x70, 0x76, - 0x36, 0x45, 0x63, 0x68, 0x6f, 0x53, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x65, 0x4e, 0x75, 0x6d, - 0x62, 0x65, 0x72, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x12, 0x19, 0x0a, 0x05, 0x73, 0x74, - 0x61, 0x72, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x00, 0x52, 0x05, 0x73, 0x74, 0x61, - 0x72, 0x74, 0x88, 0x01, 0x01, 0x12, 0x17, 0x0a, 0x04, 0x73, 0x74, 0x65, 0x70, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x04, 0x73, 0x74, 0x65, 0x70, 0x88, 0x01, 0x01, 0x12, 0x19, - 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x02, 0x52, - 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x88, 0x01, 0x01, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x73, 0x74, - 0x61, 0x72, 0x74, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x73, 0x74, 0x65, 0x70, 0x42, 0x08, 0x0a, 0x06, - 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0xa0, 0x01, 0x0a, 0x2c, 0x50, 0x61, 0x74, 0x74, 0x65, - 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x63, 0x6d, 0x70, 0x76, 0x36, 0x45, 0x63, 0x68, 0x6f, - 0x53, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x65, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x4d, 0x65, - 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x12, 0x17, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x88, 0x01, 0x01, - 0x12, 0x1b, 0x0a, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, - 0x48, 0x01, 0x52, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, - 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x02, 0x52, - 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x88, 0x01, 0x01, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x6e, - 0x61, 0x6d, 0x65, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x42, 0x09, - 0x0a, 0x07, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x22, 0x8a, 0x04, 0x0a, 0x23, 0x50, 0x61, - 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x63, 0x6d, 0x70, 0x76, 0x36, 0x45, - 0x63, 0x68, 0x6f, 0x53, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x65, 0x4e, 0x75, 0x6d, 0x62, 0x65, - 0x72, 0x12, 0x51, 0x0a, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x0e, 0x32, 0x34, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, - 0x6c, 0x6f, 0x77, 0x49, 0x63, 0x6d, 0x70, 0x76, 0x36, 0x45, 0x63, 0x68, 0x6f, 0x53, 0x65, 0x71, - 0x75, 0x65, 0x6e, 0x63, 0x65, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x2e, 0x43, 0x68, 0x6f, 0x69, - 0x63, 0x65, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x48, 0x00, 0x52, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, - 0x65, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x88, 0x01, 0x01, 0x12, - 0x16, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0d, 0x52, - 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x12, 0x4d, 0x0a, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, - 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x6f, 0x74, 0x67, - 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x63, 0x6d, 0x70, - 0x76, 0x36, 0x45, 0x63, 0x68, 0x6f, 0x53, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x65, 0x4e, 0x75, - 0x6d, 0x62, 0x65, 0x72, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, 0x69, 0x6e, 0x63, - 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x4d, 0x0a, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, - 0x65, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x6f, 0x74, 0x67, 0x2e, - 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x63, 0x6d, 0x70, 0x76, - 0x36, 0x45, 0x63, 0x68, 0x6f, 0x53, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x65, 0x4e, 0x75, 0x6d, - 0x62, 0x65, 0x72, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, 0x64, 0x65, 0x63, 0x72, - 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x52, 0x0a, 0x0b, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x5f, - 0x74, 0x61, 0x67, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x31, 0x2e, 0x6f, 0x74, 0x67, - 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x63, 0x6d, 0x70, - 0x76, 0x36, 0x45, 0x63, 0x68, 0x6f, 0x53, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x65, 0x4e, 0x75, - 0x6d, 0x62, 0x65, 0x72, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x52, 0x0a, 0x6d, - 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x73, 0x1a, 0x56, 0x0a, 0x06, 0x43, 0x68, 0x6f, + 0x75, 0x6e, 0x74, 0x22, 0x86, 0x03, 0x0a, 0x17, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, + 0x6c, 0x6f, 0x77, 0x52, 0x73, 0x76, 0x70, 0x52, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x64, 0x12, + 0x45, 0x0a, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, + 0x28, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, + 0x77, 0x52, 0x73, 0x76, 0x70, 0x52, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x64, 0x2e, 0x43, 0x68, + 0x6f, 0x69, 0x63, 0x65, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x48, 0x00, 0x52, 0x06, 0x63, 0x68, 0x6f, + 0x69, 0x63, 0x65, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x88, 0x01, + 0x01, 0x12, 0x16, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, + 0x0d, 0x52, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x12, 0x41, 0x0a, 0x09, 0x69, 0x6e, 0x63, + 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x6f, + 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x52, 0x73, + 0x76, 0x70, 0x52, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x64, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, + 0x72, 0x52, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x41, 0x0a, 0x09, + 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x23, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, + 0x77, 0x52, 0x73, 0x76, 0x70, 0x52, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x64, 0x43, 0x6f, 0x75, + 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x1a, + 0x56, 0x0a, 0x06, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x22, 0x4c, 0x0a, 0x04, 0x45, 0x6e, 0x75, + 0x6d, 0x12, 0x0f, 0x0a, 0x0b, 0x75, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, + 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x10, 0x02, 0x12, 0x0a, 0x0a, + 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x10, 0x03, 0x12, 0x0d, 0x0a, 0x09, 0x69, 0x6e, 0x63, + 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x10, 0x04, 0x12, 0x0d, 0x0a, 0x09, 0x64, 0x65, 0x63, 0x72, + 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x10, 0x05, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x63, 0x68, 0x6f, 0x69, + 0x63, 0x65, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0xb5, 0x01, 0x0a, + 0x47, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x52, 0x53, 0x56, 0x50, + 0x50, 0x61, 0x74, 0x68, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x4c, 0x73, 0x70, 0x54, 0x75, + 0x6e, 0x6e, 0x65, 0x6c, 0x49, 0x70, 0x76, 0x34, 0x49, 0x70, 0x76, 0x34, 0x54, 0x75, 0x6e, 0x6e, + 0x65, 0x6c, 0x45, 0x6e, 0x64, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, + 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x12, 0x19, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x72, + 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, + 0x88, 0x01, 0x01, 0x12, 0x17, 0x0a, 0x04, 0x73, 0x74, 0x65, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x09, 0x48, 0x01, 0x52, 0x04, 0x73, 0x74, 0x65, 0x70, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, + 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x02, 0x52, 0x05, 0x63, + 0x6f, 0x75, 0x6e, 0x74, 0x88, 0x01, 0x01, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x73, 0x74, 0x61, 0x72, + 0x74, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x73, 0x74, 0x65, 0x70, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x63, + 0x6f, 0x75, 0x6e, 0x74, 0x22, 0xaa, 0x04, 0x0a, 0x40, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, + 0x46, 0x6c, 0x6f, 0x77, 0x52, 0x53, 0x56, 0x50, 0x50, 0x61, 0x74, 0x68, 0x53, 0x65, 0x73, 0x73, + 0x69, 0x6f, 0x6e, 0x4c, 0x73, 0x70, 0x54, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x49, 0x70, 0x76, 0x34, + 0x49, 0x70, 0x76, 0x34, 0x54, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x45, 0x6e, 0x64, 0x50, 0x6f, 0x69, + 0x6e, 0x74, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x6e, 0x0a, 0x06, 0x63, 0x68, 0x6f, + 0x69, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x51, 0x2e, 0x6f, 0x74, 0x67, 0x2e, + 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x52, 0x53, 0x56, 0x50, 0x50, + 0x61, 0x74, 0x68, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x4c, 0x73, 0x70, 0x54, 0x75, 0x6e, + 0x6e, 0x65, 0x6c, 0x49, 0x70, 0x76, 0x34, 0x49, 0x70, 0x76, 0x34, 0x54, 0x75, 0x6e, 0x6e, 0x65, + 0x6c, 0x45, 0x6e, 0x64, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, + 0x2e, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x48, 0x00, 0x52, 0x06, + 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x76, 0x61, 0x6c, + 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, + 0x65, 0x88, 0x01, 0x01, 0x12, 0x16, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x03, + 0x20, 0x03, 0x28, 0x09, 0x52, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x12, 0x6a, 0x0a, 0x09, + 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x4c, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, + 0x77, 0x52, 0x53, 0x56, 0x50, 0x50, 0x61, 0x74, 0x68, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, + 0x4c, 0x73, 0x70, 0x54, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x49, 0x70, 0x76, 0x34, 0x49, 0x70, 0x76, + 0x34, 0x54, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x45, 0x6e, 0x64, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x41, + 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, 0x69, + 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x6a, 0x0a, 0x09, 0x64, 0x65, 0x63, 0x72, + 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x4c, 0x2e, 0x6f, 0x74, + 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x52, 0x53, 0x56, + 0x50, 0x50, 0x61, 0x74, 0x68, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x4c, 0x73, 0x70, 0x54, + 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x49, 0x70, 0x76, 0x34, 0x49, 0x70, 0x76, 0x34, 0x54, 0x75, 0x6e, + 0x6e, 0x65, 0x6c, 0x45, 0x6e, 0x64, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x41, 0x64, 0x64, 0x72, 0x65, + 0x73, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, + 0x6d, 0x65, 0x6e, 0x74, 0x1a, 0x56, 0x0a, 0x06, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x22, 0x4c, + 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x0a, 0x0b, 0x75, 0x6e, 0x73, 0x70, 0x65, 0x63, + 0x69, 0x66, 0x69, 0x65, 0x64, 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, + 0x10, 0x02, 0x12, 0x0a, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x10, 0x03, 0x12, 0x0d, + 0x0a, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x10, 0x04, 0x12, 0x0d, 0x0a, + 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x10, 0x05, 0x42, 0x09, 0x0a, 0x07, + 0x5f, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x76, 0x61, 0x6c, 0x75, + 0x65, 0x22, 0xa4, 0x01, 0x0a, 0x36, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, + 0x77, 0x52, 0x53, 0x56, 0x50, 0x50, 0x61, 0x74, 0x68, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, + 0x4c, 0x73, 0x70, 0x54, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x49, 0x70, 0x76, 0x34, 0x52, 0x65, 0x73, + 0x65, 0x72, 0x76, 0x65, 0x64, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x12, 0x19, 0x0a, 0x05, + 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x00, 0x52, 0x05, 0x73, + 0x74, 0x61, 0x72, 0x74, 0x88, 0x01, 0x01, 0x12, 0x17, 0x0a, 0x04, 0x73, 0x74, 0x65, 0x70, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x04, 0x73, 0x74, 0x65, 0x70, 0x88, 0x01, 0x01, + 0x12, 0x19, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x48, + 0x02, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x88, 0x01, 0x01, 0x42, 0x08, 0x0a, 0x06, 0x5f, + 0x73, 0x74, 0x61, 0x72, 0x74, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x73, 0x74, 0x65, 0x70, 0x42, 0x08, + 0x0a, 0x06, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0xe6, 0x03, 0x0a, 0x2f, 0x50, 0x61, 0x74, + 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x52, 0x53, 0x56, 0x50, 0x50, 0x61, 0x74, 0x68, + 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x4c, 0x73, 0x70, 0x54, 0x75, 0x6e, 0x6e, 0x65, 0x6c, + 0x49, 0x70, 0x76, 0x34, 0x52, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x64, 0x12, 0x5d, 0x0a, 0x06, + 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x40, 0x2e, 0x6f, + 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x52, 0x53, + 0x56, 0x50, 0x50, 0x61, 0x74, 0x68, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x4c, 0x73, 0x70, + 0x54, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x49, 0x70, 0x76, 0x34, 0x52, 0x65, 0x73, 0x65, 0x72, 0x76, + 0x65, 0x64, 0x2e, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x48, 0x00, + 0x52, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x76, + 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x05, 0x76, 0x61, + 0x6c, 0x75, 0x65, 0x88, 0x01, 0x01, 0x12, 0x16, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, + 0x18, 0x03, 0x20, 0x03, 0x28, 0x0d, 0x52, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x12, 0x59, + 0x0a, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x3b, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, + 0x6c, 0x6f, 0x77, 0x52, 0x53, 0x56, 0x50, 0x50, 0x61, 0x74, 0x68, 0x53, 0x65, 0x73, 0x73, 0x69, + 0x6f, 0x6e, 0x4c, 0x73, 0x70, 0x54, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x49, 0x70, 0x76, 0x34, 0x52, + 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x64, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, + 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x59, 0x0a, 0x09, 0x64, 0x65, 0x63, + 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3b, 0x2e, 0x6f, + 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x52, 0x53, + 0x56, 0x50, 0x50, 0x61, 0x74, 0x68, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x4c, 0x73, 0x70, + 0x54, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x49, 0x70, 0x76, 0x34, 0x52, 0x65, 0x73, 0x65, 0x72, 0x76, + 0x65, 0x64, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, + 0x6d, 0x65, 0x6e, 0x74, 0x1a, 0x56, 0x0a, 0x06, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x22, 0x4c, + 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x0a, 0x0b, 0x75, 0x6e, 0x73, 0x70, 0x65, 0x63, + 0x69, 0x66, 0x69, 0x65, 0x64, 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, + 0x10, 0x02, 0x12, 0x0a, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x10, 0x03, 0x12, 0x0d, + 0x0a, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x10, 0x04, 0x12, 0x0d, 0x0a, + 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x10, 0x05, 0x42, 0x09, 0x0a, 0x07, + 0x5f, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x76, 0x61, 0x6c, 0x75, + 0x65, 0x22, 0xa4, 0x01, 0x0a, 0x36, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, + 0x77, 0x52, 0x53, 0x56, 0x50, 0x50, 0x61, 0x74, 0x68, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, + 0x4c, 0x73, 0x70, 0x54, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x49, 0x70, 0x76, 0x34, 0x54, 0x75, 0x6e, + 0x6e, 0x65, 0x6c, 0x49, 0x64, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x12, 0x19, 0x0a, 0x05, + 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x00, 0x52, 0x05, 0x73, + 0x74, 0x61, 0x72, 0x74, 0x88, 0x01, 0x01, 0x12, 0x17, 0x0a, 0x04, 0x73, 0x74, 0x65, 0x70, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x04, 0x73, 0x74, 0x65, 0x70, 0x88, 0x01, 0x01, + 0x12, 0x19, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x48, + 0x02, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x88, 0x01, 0x01, 0x42, 0x08, 0x0a, 0x06, 0x5f, + 0x73, 0x74, 0x61, 0x72, 0x74, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x73, 0x74, 0x65, 0x70, 0x42, 0x08, + 0x0a, 0x06, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0xe6, 0x03, 0x0a, 0x2f, 0x50, 0x61, 0x74, + 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x52, 0x53, 0x56, 0x50, 0x50, 0x61, 0x74, 0x68, + 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x4c, 0x73, 0x70, 0x54, 0x75, 0x6e, 0x6e, 0x65, 0x6c, + 0x49, 0x70, 0x76, 0x34, 0x54, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x49, 0x64, 0x12, 0x5d, 0x0a, 0x06, + 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x40, 0x2e, 0x6f, + 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x52, 0x53, + 0x56, 0x50, 0x50, 0x61, 0x74, 0x68, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x4c, 0x73, 0x70, + 0x54, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x49, 0x70, 0x76, 0x34, 0x54, 0x75, 0x6e, 0x6e, 0x65, 0x6c, + 0x49, 0x64, 0x2e, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x48, 0x00, + 0x52, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x76, + 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x05, 0x76, 0x61, + 0x6c, 0x75, 0x65, 0x88, 0x01, 0x01, 0x12, 0x16, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, + 0x18, 0x03, 0x20, 0x03, 0x28, 0x0d, 0x52, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x12, 0x59, + 0x0a, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x3b, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, + 0x6c, 0x6f, 0x77, 0x52, 0x53, 0x56, 0x50, 0x50, 0x61, 0x74, 0x68, 0x53, 0x65, 0x73, 0x73, 0x69, + 0x6f, 0x6e, 0x4c, 0x73, 0x70, 0x54, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x49, 0x70, 0x76, 0x34, 0x54, + 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x49, 0x64, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, + 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x59, 0x0a, 0x09, 0x64, 0x65, 0x63, + 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3b, 0x2e, 0x6f, + 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x52, 0x53, + 0x56, 0x50, 0x50, 0x61, 0x74, 0x68, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x4c, 0x73, 0x70, + 0x54, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x49, 0x70, 0x76, 0x34, 0x54, 0x75, 0x6e, 0x6e, 0x65, 0x6c, + 0x49, 0x64, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, + 0x6d, 0x65, 0x6e, 0x74, 0x1a, 0x56, 0x0a, 0x06, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x22, 0x4c, + 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x0a, 0x0b, 0x75, 0x6e, 0x73, 0x70, 0x65, 0x63, + 0x69, 0x66, 0x69, 0x65, 0x64, 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, + 0x10, 0x02, 0x12, 0x0a, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x10, 0x03, 0x12, 0x0d, + 0x0a, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x10, 0x04, 0x12, 0x0d, 0x0a, + 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x10, 0x05, 0x42, 0x09, 0x0a, 0x07, + 0x5f, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x76, 0x61, 0x6c, 0x75, + 0x65, 0x22, 0xac, 0x01, 0x0a, 0x3e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, + 0x77, 0x52, 0x53, 0x56, 0x50, 0x50, 0x61, 0x74, 0x68, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, + 0x4c, 0x73, 0x70, 0x54, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x49, 0x70, 0x76, 0x34, 0x45, 0x78, 0x74, + 0x65, 0x6e, 0x64, 0x65, 0x64, 0x54, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x49, 0x64, 0x43, 0x6f, 0x75, + 0x6e, 0x74, 0x65, 0x72, 0x12, 0x19, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x0d, 0x48, 0x00, 0x52, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x88, 0x01, 0x01, 0x12, + 0x17, 0x0a, 0x04, 0x73, 0x74, 0x65, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, + 0x04, 0x73, 0x74, 0x65, 0x70, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, + 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x02, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, + 0x88, 0x01, 0x01, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x42, 0x07, 0x0a, + 0x05, 0x5f, 0x73, 0x74, 0x65, 0x70, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, + 0x22, 0x86, 0x04, 0x0a, 0x37, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, + 0x52, 0x53, 0x56, 0x50, 0x50, 0x61, 0x74, 0x68, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x4c, + 0x73, 0x70, 0x54, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x49, 0x70, 0x76, 0x34, 0x45, 0x78, 0x74, 0x65, + 0x6e, 0x64, 0x65, 0x64, 0x54, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x49, 0x64, 0x12, 0x65, 0x0a, 0x06, + 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x48, 0x2e, 0x6f, + 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x52, 0x53, + 0x56, 0x50, 0x50, 0x61, 0x74, 0x68, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x4c, 0x73, 0x70, + 0x54, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x49, 0x70, 0x76, 0x34, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x64, + 0x65, 0x64, 0x54, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x49, 0x64, 0x2e, 0x43, 0x68, 0x6f, 0x69, 0x63, + 0x65, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x48, 0x00, 0x52, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, + 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x0d, 0x48, 0x01, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x88, 0x01, 0x01, 0x12, 0x16, + 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0d, 0x52, 0x06, + 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x12, 0x61, 0x0a, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, + 0x65, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x43, 0x2e, 0x6f, 0x74, 0x67, 0x2e, + 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x52, 0x53, 0x56, 0x50, 0x50, + 0x61, 0x74, 0x68, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x4c, 0x73, 0x70, 0x54, 0x75, 0x6e, + 0x6e, 0x65, 0x6c, 0x49, 0x70, 0x76, 0x34, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x64, 0x65, 0x64, 0x54, + 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x49, 0x64, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, + 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x61, 0x0a, 0x09, 0x64, 0x65, 0x63, + 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x43, 0x2e, 0x6f, + 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x52, 0x53, + 0x56, 0x50, 0x50, 0x61, 0x74, 0x68, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x4c, 0x73, 0x70, + 0x54, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x49, 0x70, 0x76, 0x34, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x64, + 0x65, 0x64, 0x54, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x49, 0x64, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, + 0x72, 0x52, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x1a, 0x56, 0x0a, 0x06, + 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x22, 0x4c, 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0f, + 0x0a, 0x0b, 0x75, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x10, 0x00, 0x12, + 0x09, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x10, 0x02, 0x12, 0x0a, 0x0a, 0x06, 0x76, 0x61, + 0x6c, 0x75, 0x65, 0x73, 0x10, 0x03, 0x12, 0x0d, 0x0a, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, + 0x65, 0x6e, 0x74, 0x10, 0x04, 0x12, 0x0d, 0x0a, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, + 0x6e, 0x74, 0x10, 0x05, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x42, + 0x08, 0x0a, 0x06, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0xad, 0x01, 0x0a, 0x3f, 0x50, 0x61, + 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x52, 0x53, 0x56, 0x50, 0x50, 0x61, 0x74, + 0x68, 0x52, 0x73, 0x76, 0x70, 0x48, 0x6f, 0x70, 0x49, 0x70, 0x76, 0x34, 0x49, 0x70, 0x76, 0x34, + 0x4e, 0x65, 0x78, 0x74, 0x50, 0x72, 0x65, 0x76, 0x69, 0x6f, 0x75, 0x73, 0x48, 0x6f, 0x70, 0x41, + 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x12, 0x19, 0x0a, + 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x05, + 0x73, 0x74, 0x61, 0x72, 0x74, 0x88, 0x01, 0x01, 0x12, 0x17, 0x0a, 0x04, 0x73, 0x74, 0x65, 0x70, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, 0x52, 0x04, 0x73, 0x74, 0x65, 0x70, 0x88, 0x01, + 0x01, 0x12, 0x19, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, + 0x48, 0x02, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x88, 0x01, 0x01, 0x42, 0x08, 0x0a, 0x06, + 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x73, 0x74, 0x65, 0x70, 0x42, + 0x08, 0x0a, 0x06, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x8a, 0x04, 0x0a, 0x38, 0x50, 0x61, + 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x52, 0x53, 0x56, 0x50, 0x50, 0x61, 0x74, + 0x68, 0x52, 0x73, 0x76, 0x70, 0x48, 0x6f, 0x70, 0x49, 0x70, 0x76, 0x34, 0x49, 0x70, 0x76, 0x34, + 0x4e, 0x65, 0x78, 0x74, 0x50, 0x72, 0x65, 0x76, 0x69, 0x6f, 0x75, 0x73, 0x48, 0x6f, 0x70, 0x41, + 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x66, 0x0a, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x49, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, + 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x52, 0x53, 0x56, 0x50, 0x50, 0x61, 0x74, 0x68, + 0x52, 0x73, 0x76, 0x70, 0x48, 0x6f, 0x70, 0x49, 0x70, 0x76, 0x34, 0x49, 0x70, 0x76, 0x34, 0x4e, + 0x65, 0x78, 0x74, 0x50, 0x72, 0x65, 0x76, 0x69, 0x6f, 0x75, 0x73, 0x48, 0x6f, 0x70, 0x41, 0x64, + 0x64, 0x72, 0x65, 0x73, 0x73, 0x2e, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x2e, 0x45, 0x6e, 0x75, + 0x6d, 0x48, 0x00, 0x52, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x88, 0x01, 0x01, 0x12, 0x19, + 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, 0x52, + 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x88, 0x01, 0x01, 0x12, 0x16, 0x0a, 0x06, 0x76, 0x61, 0x6c, + 0x75, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, + 0x73, 0x12, 0x62, 0x0a, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x05, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x44, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, + 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x52, 0x53, 0x56, 0x50, 0x50, 0x61, 0x74, 0x68, 0x52, 0x73, + 0x76, 0x70, 0x48, 0x6f, 0x70, 0x49, 0x70, 0x76, 0x34, 0x49, 0x70, 0x76, 0x34, 0x4e, 0x65, 0x78, + 0x74, 0x50, 0x72, 0x65, 0x76, 0x69, 0x6f, 0x75, 0x73, 0x48, 0x6f, 0x70, 0x41, 0x64, 0x64, 0x72, + 0x65, 0x73, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, 0x69, 0x6e, 0x63, 0x72, + 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x62, 0x0a, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, + 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x44, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, + 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x52, 0x53, 0x56, 0x50, 0x50, 0x61, + 0x74, 0x68, 0x52, 0x73, 0x76, 0x70, 0x48, 0x6f, 0x70, 0x49, 0x70, 0x76, 0x34, 0x49, 0x70, 0x76, + 0x34, 0x4e, 0x65, 0x78, 0x74, 0x50, 0x72, 0x65, 0x76, 0x69, 0x6f, 0x75, 0x73, 0x48, 0x6f, 0x70, + 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, + 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x1a, 0x56, 0x0a, 0x06, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x22, 0x4c, 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x0a, 0x0b, 0x75, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x10, 0x02, 0x12, 0x0a, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x10, 0x03, 0x12, 0x0d, 0x0a, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x10, 0x04, 0x12, 0x0d, 0x0a, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x10, 0x05, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x42, 0x08, 0x0a, 0x06, - 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0xfa, 0x02, 0x0a, 0x1d, 0x50, 0x61, 0x74, 0x74, 0x65, - 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x63, 0x6d, 0x70, 0x76, 0x36, 0x45, 0x63, 0x68, 0x6f, - 0x43, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x12, 0x4b, 0x0a, 0x06, 0x63, 0x68, 0x6f, 0x69, - 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2e, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, - 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x63, 0x6d, 0x70, 0x76, 0x36, - 0x45, 0x63, 0x68, 0x6f, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x2e, 0x43, 0x68, 0x6f, - 0x69, 0x63, 0x65, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x48, 0x00, 0x52, 0x06, 0x63, 0x68, 0x6f, 0x69, - 0x63, 0x65, 0x88, 0x01, 0x01, 0x12, 0x54, 0x0a, 0x09, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, - 0x65, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x31, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, - 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x63, 0x6d, 0x70, 0x76, 0x36, - 0x45, 0x63, 0x68, 0x6f, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x2e, 0x47, 0x65, 0x6e, - 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x48, 0x01, 0x52, 0x09, 0x67, - 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x63, - 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x02, 0x52, 0x06, 0x63, - 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x88, 0x01, 0x01, 0x1a, 0x3c, 0x0a, 0x06, 0x43, 0x68, 0x6f, 0x69, - 0x63, 0x65, 0x22, 0x32, 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x0a, 0x0b, 0x75, 0x6e, - 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x10, 0x00, 0x12, 0x0d, 0x0a, 0x09, 0x67, - 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x10, 0x01, 0x12, 0x0a, 0x0a, 0x06, 0x63, 0x75, - 0x73, 0x74, 0x6f, 0x6d, 0x10, 0x02, 0x1a, 0x37, 0x0a, 0x09, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, - 0x74, 0x65, 0x64, 0x22, 0x2a, 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x0a, 0x0b, 0x75, - 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x10, 0x00, 0x12, 0x08, 0x0a, 0x04, - 0x67, 0x6f, 0x6f, 0x64, 0x10, 0x01, 0x12, 0x07, 0x0a, 0x03, 0x62, 0x61, 0x64, 0x10, 0x02, 0x42, - 0x09, 0x0a, 0x07, 0x5f, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x67, - 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x63, 0x75, 0x73, - 0x74, 0x6f, 0x6d, 0x22, 0x80, 0x03, 0x0a, 0x1f, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, - 0x6c, 0x6f, 0x77, 0x49, 0x63, 0x6d, 0x70, 0x76, 0x36, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x43, - 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x12, 0x4d, 0x0a, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, - 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x30, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, - 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x63, 0x6d, 0x70, 0x76, 0x36, 0x43, - 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x2e, 0x43, 0x68, - 0x6f, 0x69, 0x63, 0x65, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x48, 0x00, 0x52, 0x06, 0x63, 0x68, 0x6f, - 0x69, 0x63, 0x65, 0x88, 0x01, 0x01, 0x12, 0x56, 0x0a, 0x09, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, - 0x74, 0x65, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x33, 0x2e, 0x6f, 0x74, 0x67, 0x2e, - 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x63, 0x6d, 0x70, 0x76, - 0x36, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x2e, - 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x48, 0x01, - 0x52, 0x09, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x88, 0x01, 0x01, 0x12, 0x1b, - 0x0a, 0x06, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x02, - 0x52, 0x06, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x88, 0x01, 0x01, 0x1a, 0x3c, 0x0a, 0x06, 0x43, - 0x68, 0x6f, 0x69, 0x63, 0x65, 0x22, 0x32, 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x0a, - 0x0b, 0x75, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x10, 0x00, 0x12, 0x0d, - 0x0a, 0x09, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x10, 0x01, 0x12, 0x0a, 0x0a, - 0x06, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x10, 0x02, 0x1a, 0x37, 0x0a, 0x09, 0x47, 0x65, 0x6e, - 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x22, 0x2a, 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0f, - 0x0a, 0x0b, 0x75, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x10, 0x00, 0x12, - 0x08, 0x0a, 0x04, 0x67, 0x6f, 0x6f, 0x64, 0x10, 0x01, 0x12, 0x07, 0x0a, 0x03, 0x62, 0x61, 0x64, - 0x10, 0x02, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x42, 0x0c, 0x0a, - 0x0a, 0x5f, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x42, 0x09, 0x0a, 0x07, 0x5f, - 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x22, 0x8a, 0x01, 0x0a, 0x1c, 0x50, 0x61, 0x74, 0x74, 0x65, - 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x50, 0x70, 0x70, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, - 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x12, 0x19, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x00, 0x52, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x88, - 0x01, 0x01, 0x12, 0x17, 0x0a, 0x04, 0x73, 0x74, 0x65, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, - 0x48, 0x01, 0x52, 0x04, 0x73, 0x74, 0x65, 0x70, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x63, - 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x02, 0x52, 0x05, 0x63, 0x6f, - 0x75, 0x6e, 0x74, 0x88, 0x01, 0x01, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, - 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x73, 0x74, 0x65, 0x70, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x63, 0x6f, - 0x75, 0x6e, 0x74, 0x22, 0x92, 0x01, 0x0a, 0x1e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, - 0x6c, 0x6f, 0x77, 0x50, 0x70, 0x70, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x4d, 0x65, 0x74, - 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x12, 0x17, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, - 0x1b, 0x0a, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, - 0x01, 0x52, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, - 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x02, 0x52, 0x06, - 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x88, 0x01, 0x01, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x6e, 0x61, - 0x6d, 0x65, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x42, 0x09, 0x0a, - 0x07, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x22, 0xc4, 0x03, 0x0a, 0x15, 0x50, 0x61, 0x74, - 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x50, 0x70, 0x70, 0x41, 0x64, 0x64, 0x72, 0x65, - 0x73, 0x73, 0x12, 0x43, 0x0a, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x0e, 0x32, 0x26, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, - 0x46, 0x6c, 0x6f, 0x77, 0x50, 0x70, 0x70, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x2e, 0x43, - 0x68, 0x6f, 0x69, 0x63, 0x65, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x48, 0x00, 0x52, 0x06, 0x63, 0x68, - 0x6f, 0x69, 0x63, 0x65, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x88, - 0x01, 0x01, 0x12, 0x16, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, - 0x28, 0x0d, 0x52, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x12, 0x3f, 0x0a, 0x09, 0x69, 0x6e, - 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, - 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x50, - 0x70, 0x70, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, - 0x52, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x3f, 0x0a, 0x09, 0x64, - 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, - 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, - 0x50, 0x70, 0x70, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, - 0x72, 0x52, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x44, 0x0a, 0x0b, - 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x5f, 0x74, 0x61, 0x67, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, - 0x0b, 0x32, 0x23, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, - 0x6c, 0x6f, 0x77, 0x50, 0x70, 0x70, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x4d, 0x65, 0x74, - 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x52, 0x0a, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, - 0x67, 0x73, 0x1a, 0x56, 0x0a, 0x06, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x22, 0x4c, 0x0a, 0x04, + 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0xa9, 0x01, 0x0a, 0x3b, 0x50, 0x61, 0x74, 0x74, 0x65, + 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x52, 0x53, 0x56, 0x50, 0x50, 0x61, 0x74, 0x68, 0x52, 0x73, + 0x76, 0x70, 0x48, 0x6f, 0x70, 0x49, 0x70, 0x76, 0x34, 0x4c, 0x6f, 0x67, 0x69, 0x63, 0x61, 0x6c, + 0x49, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x48, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x43, + 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x12, 0x19, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x00, 0x52, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x88, 0x01, + 0x01, 0x12, 0x17, 0x0a, 0x04, 0x73, 0x74, 0x65, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, + 0x01, 0x52, 0x04, 0x73, 0x74, 0x65, 0x70, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x63, 0x6f, + 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x02, 0x52, 0x05, 0x63, 0x6f, 0x75, + 0x6e, 0x74, 0x88, 0x01, 0x01, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x42, + 0x07, 0x0a, 0x05, 0x5f, 0x73, 0x74, 0x65, 0x70, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x63, 0x6f, 0x75, + 0x6e, 0x74, 0x22, 0xfa, 0x03, 0x0a, 0x34, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, + 0x6f, 0x77, 0x52, 0x53, 0x56, 0x50, 0x50, 0x61, 0x74, 0x68, 0x52, 0x73, 0x76, 0x70, 0x48, 0x6f, + 0x70, 0x49, 0x70, 0x76, 0x34, 0x4c, 0x6f, 0x67, 0x69, 0x63, 0x61, 0x6c, 0x49, 0x6e, 0x74, 0x65, + 0x72, 0x66, 0x61, 0x63, 0x65, 0x48, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x12, 0x62, 0x0a, 0x06, 0x63, + 0x68, 0x6f, 0x69, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x45, 0x2e, 0x6f, 0x74, + 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x52, 0x53, 0x56, + 0x50, 0x50, 0x61, 0x74, 0x68, 0x52, 0x73, 0x76, 0x70, 0x48, 0x6f, 0x70, 0x49, 0x70, 0x76, 0x34, + 0x4c, 0x6f, 0x67, 0x69, 0x63, 0x61, 0x6c, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, + 0x48, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x2e, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x2e, 0x45, 0x6e, + 0x75, 0x6d, 0x48, 0x00, 0x52, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x88, 0x01, 0x01, 0x12, + 0x19, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, + 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x88, 0x01, 0x01, 0x12, 0x16, 0x0a, 0x06, 0x76, 0x61, + 0x6c, 0x75, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0d, 0x52, 0x06, 0x76, 0x61, 0x6c, 0x75, + 0x65, 0x73, 0x12, 0x5e, 0x0a, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, + 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x40, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, + 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x52, 0x53, 0x56, 0x50, 0x50, 0x61, 0x74, 0x68, 0x52, + 0x73, 0x76, 0x70, 0x48, 0x6f, 0x70, 0x49, 0x70, 0x76, 0x34, 0x4c, 0x6f, 0x67, 0x69, 0x63, 0x61, + 0x6c, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x48, 0x61, 0x6e, 0x64, 0x6c, 0x65, + 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, + 0x6e, 0x74, 0x12, 0x5e, 0x0a, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, + 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x40, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, + 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x52, 0x53, 0x56, 0x50, 0x50, 0x61, 0x74, 0x68, 0x52, + 0x73, 0x76, 0x70, 0x48, 0x6f, 0x70, 0x49, 0x70, 0x76, 0x34, 0x4c, 0x6f, 0x67, 0x69, 0x63, 0x61, + 0x6c, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x48, 0x61, 0x6e, 0x64, 0x6c, 0x65, + 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, + 0x6e, 0x74, 0x1a, 0x56, 0x0a, 0x06, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x22, 0x4c, 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x0a, 0x0b, 0x75, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x10, 0x02, 0x12, 0x0a, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x10, 0x03, 0x12, 0x0d, 0x0a, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x10, 0x04, 0x12, 0x0d, 0x0a, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x10, 0x05, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, - 0x8a, 0x01, 0x0a, 0x1c, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x50, - 0x70, 0x70, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, - 0x12, 0x19, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x48, - 0x00, 0x52, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x88, 0x01, 0x01, 0x12, 0x17, 0x0a, 0x04, 0x73, - 0x74, 0x65, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x04, 0x73, 0x74, 0x65, - 0x70, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x0d, 0x48, 0x02, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x88, 0x01, 0x01, 0x42, - 0x08, 0x0a, 0x06, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x73, 0x74, - 0x65, 0x70, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x92, 0x01, 0x0a, - 0x1e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x50, 0x70, 0x70, 0x43, - 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x12, - 0x17, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, - 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x6f, 0x66, 0x66, 0x73, - 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x06, 0x6f, 0x66, 0x66, 0x73, - 0x65, 0x74, 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x02, 0x52, 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x88, - 0x01, 0x01, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x42, 0x09, 0x0a, 0x07, 0x5f, - 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, - 0x68, 0x22, 0xc4, 0x03, 0x0a, 0x15, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, - 0x77, 0x50, 0x70, 0x70, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x12, 0x43, 0x0a, 0x06, 0x63, - 0x68, 0x6f, 0x69, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x26, 0x2e, 0x6f, 0x74, - 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x50, 0x70, 0x70, - 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x2e, 0x45, - 0x6e, 0x75, 0x6d, 0x48, 0x00, 0x52, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x88, 0x01, 0x01, - 0x12, 0x19, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, - 0x01, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x88, 0x01, 0x01, 0x12, 0x16, 0x0a, 0x06, 0x76, - 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0d, 0x52, 0x06, 0x76, 0x61, 0x6c, - 0x75, 0x65, 0x73, 0x12, 0x3f, 0x0a, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, - 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, - 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x50, 0x70, 0x70, 0x43, 0x6f, 0x6e, 0x74, 0x72, - 0x6f, 0x6c, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, - 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x3f, 0x0a, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, - 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, - 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x50, 0x70, 0x70, 0x43, 0x6f, 0x6e, 0x74, - 0x72, 0x6f, 0x6c, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, 0x64, 0x65, 0x63, 0x72, - 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x44, 0x0a, 0x0b, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x5f, - 0x74, 0x61, 0x67, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x6f, 0x74, 0x67, - 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x50, 0x70, 0x70, 0x43, - 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x52, - 0x0a, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x73, 0x1a, 0x56, 0x0a, 0x06, 0x43, + 0xa5, 0x01, 0x0a, 0x37, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x52, + 0x53, 0x56, 0x50, 0x50, 0x61, 0x74, 0x68, 0x54, 0x69, 0x6d, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, + 0x73, 0x54, 0x79, 0x70, 0x65, 0x31, 0x52, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x50, 0x65, 0x72, + 0x69, 0x6f, 0x64, 0x52, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x12, 0x19, 0x0a, 0x05, 0x73, + 0x74, 0x61, 0x72, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x00, 0x52, 0x05, 0x73, 0x74, + 0x61, 0x72, 0x74, 0x88, 0x01, 0x01, 0x12, 0x17, 0x0a, 0x04, 0x73, 0x74, 0x65, 0x70, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x04, 0x73, 0x74, 0x65, 0x70, 0x88, 0x01, 0x01, 0x12, + 0x19, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x02, + 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x88, 0x01, 0x01, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x73, + 0x74, 0x61, 0x72, 0x74, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x73, 0x74, 0x65, 0x70, 0x42, 0x08, 0x0a, + 0x06, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0xea, 0x03, 0x0a, 0x30, 0x50, 0x61, 0x74, 0x74, + 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x52, 0x53, 0x56, 0x50, 0x50, 0x61, 0x74, 0x68, 0x54, + 0x69, 0x6d, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x54, 0x79, 0x70, 0x65, 0x31, 0x52, 0x65, + 0x66, 0x72, 0x65, 0x73, 0x68, 0x50, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x52, 0x12, 0x5e, 0x0a, 0x06, + 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x41, 0x2e, 0x6f, + 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x52, 0x53, + 0x56, 0x50, 0x50, 0x61, 0x74, 0x68, 0x54, 0x69, 0x6d, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, + 0x54, 0x79, 0x70, 0x65, 0x31, 0x52, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x50, 0x65, 0x72, 0x69, + 0x6f, 0x64, 0x52, 0x2e, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x48, + 0x00, 0x52, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, + 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x05, 0x76, + 0x61, 0x6c, 0x75, 0x65, 0x88, 0x01, 0x01, 0x12, 0x16, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, + 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0d, 0x52, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x12, + 0x5a, 0x0a, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x3c, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, + 0x46, 0x6c, 0x6f, 0x77, 0x52, 0x53, 0x56, 0x50, 0x50, 0x61, 0x74, 0x68, 0x54, 0x69, 0x6d, 0x65, + 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x54, 0x79, 0x70, 0x65, 0x31, 0x52, 0x65, 0x66, 0x72, 0x65, + 0x73, 0x68, 0x50, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x52, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, + 0x52, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x5a, 0x0a, 0x09, 0x64, + 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3c, + 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, + 0x52, 0x53, 0x56, 0x50, 0x50, 0x61, 0x74, 0x68, 0x54, 0x69, 0x6d, 0x65, 0x56, 0x61, 0x6c, 0x75, + 0x65, 0x73, 0x54, 0x79, 0x70, 0x65, 0x31, 0x52, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x50, 0x65, + 0x72, 0x69, 0x6f, 0x64, 0x52, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, 0x64, 0x65, + 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x1a, 0x56, 0x0a, 0x06, 0x43, 0x68, 0x6f, 0x69, 0x63, + 0x65, 0x22, 0x4c, 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x0a, 0x0b, 0x75, 0x6e, 0x73, + 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, 0x76, 0x61, + 0x6c, 0x75, 0x65, 0x10, 0x02, 0x12, 0x0a, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x10, + 0x03, 0x12, 0x0d, 0x0a, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x10, 0x04, + 0x12, 0x0d, 0x0a, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x10, 0x05, 0x42, + 0x09, 0x0a, 0x07, 0x5f, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x76, + 0x61, 0x6c, 0x75, 0x65, 0x22, 0xa8, 0x01, 0x0a, 0x3a, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, + 0x46, 0x6c, 0x6f, 0x77, 0x52, 0x53, 0x56, 0x50, 0x50, 0x61, 0x74, 0x68, 0x45, 0x78, 0x70, 0x6c, + 0x69, 0x63, 0x69, 0x74, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x54, 0x79, 0x70, 0x65, 0x31, 0x49, 0x70, + 0x76, 0x34, 0x50, 0x72, 0x65, 0x66, 0x69, 0x78, 0x4c, 0x42, 0x69, 0x74, 0x43, 0x6f, 0x75, 0x6e, + 0x74, 0x65, 0x72, 0x12, 0x19, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x0d, 0x48, 0x00, 0x52, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x88, 0x01, 0x01, 0x12, 0x17, + 0x0a, 0x04, 0x73, 0x74, 0x65, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x04, + 0x73, 0x74, 0x65, 0x70, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x02, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x88, + 0x01, 0x01, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x42, 0x07, 0x0a, 0x05, + 0x5f, 0x73, 0x74, 0x65, 0x70, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x22, + 0xf6, 0x03, 0x0a, 0x33, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x52, + 0x53, 0x56, 0x50, 0x50, 0x61, 0x74, 0x68, 0x45, 0x78, 0x70, 0x6c, 0x69, 0x63, 0x69, 0x74, 0x52, + 0x6f, 0x75, 0x74, 0x65, 0x54, 0x79, 0x70, 0x65, 0x31, 0x49, 0x70, 0x76, 0x34, 0x50, 0x72, 0x65, + 0x66, 0x69, 0x78, 0x4c, 0x42, 0x69, 0x74, 0x12, 0x61, 0x0a, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, + 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x44, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, + 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x52, 0x53, 0x56, 0x50, 0x50, 0x61, 0x74, + 0x68, 0x45, 0x78, 0x70, 0x6c, 0x69, 0x63, 0x69, 0x74, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x54, 0x79, + 0x70, 0x65, 0x31, 0x49, 0x70, 0x76, 0x34, 0x50, 0x72, 0x65, 0x66, 0x69, 0x78, 0x4c, 0x42, 0x69, + 0x74, 0x2e, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x48, 0x00, 0x52, + 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x76, 0x61, + 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x05, 0x76, 0x61, 0x6c, + 0x75, 0x65, 0x88, 0x01, 0x01, 0x12, 0x16, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, + 0x03, 0x20, 0x03, 0x28, 0x0d, 0x52, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x12, 0x5d, 0x0a, + 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x3f, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, + 0x6f, 0x77, 0x52, 0x53, 0x56, 0x50, 0x50, 0x61, 0x74, 0x68, 0x45, 0x78, 0x70, 0x6c, 0x69, 0x63, + 0x69, 0x74, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x54, 0x79, 0x70, 0x65, 0x31, 0x49, 0x70, 0x76, 0x34, + 0x50, 0x72, 0x65, 0x66, 0x69, 0x78, 0x4c, 0x42, 0x69, 0x74, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, + 0x72, 0x52, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x5d, 0x0a, 0x09, + 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x3f, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, + 0x77, 0x52, 0x53, 0x56, 0x50, 0x50, 0x61, 0x74, 0x68, 0x45, 0x78, 0x70, 0x6c, 0x69, 0x63, 0x69, + 0x74, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x54, 0x79, 0x70, 0x65, 0x31, 0x49, 0x70, 0x76, 0x34, 0x50, + 0x72, 0x65, 0x66, 0x69, 0x78, 0x4c, 0x42, 0x69, 0x74, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, + 0x52, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x1a, 0x56, 0x0a, 0x06, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x22, 0x4c, 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x0a, 0x0b, 0x75, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x10, 0x02, 0x12, 0x0a, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x10, 0x03, 0x12, 0x0d, 0x0a, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x10, 0x04, 0x12, 0x0d, 0x0a, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x10, 0x05, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x42, 0x08, - 0x0a, 0x06, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x8f, 0x01, 0x0a, 0x21, 0x50, 0x61, 0x74, - 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x50, 0x70, 0x70, 0x50, 0x72, 0x6f, 0x74, 0x6f, - 0x63, 0x6f, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x12, 0x19, - 0x0a, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x00, 0x52, + 0x0a, 0x06, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0xaf, 0x01, 0x0a, 0x41, 0x50, 0x61, 0x74, + 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x52, 0x53, 0x56, 0x50, 0x50, 0x61, 0x74, 0x68, + 0x45, 0x78, 0x70, 0x6c, 0x69, 0x63, 0x69, 0x74, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x54, 0x79, 0x70, + 0x65, 0x31, 0x49, 0x70, 0x76, 0x34, 0x50, 0x72, 0x65, 0x66, 0x69, 0x78, 0x49, 0x70, 0x76, 0x34, + 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x12, 0x19, + 0x0a, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x88, 0x01, 0x01, 0x12, 0x17, 0x0a, 0x04, 0x73, 0x74, 0x65, - 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x04, 0x73, 0x74, 0x65, 0x70, 0x88, + 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, 0x52, 0x04, 0x73, 0x74, 0x65, 0x70, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x02, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x88, 0x01, 0x01, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x73, 0x74, 0x65, 0x70, - 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x97, 0x01, 0x0a, 0x23, 0x50, - 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x50, 0x70, 0x70, 0x50, 0x72, 0x6f, - 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, - 0x61, 0x67, 0x12, 0x17, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x48, 0x00, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x6f, - 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x06, 0x6f, - 0x66, 0x66, 0x73, 0x65, 0x74, 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x6c, 0x65, 0x6e, 0x67, - 0x74, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x02, 0x52, 0x06, 0x6c, 0x65, 0x6e, 0x67, - 0x74, 0x68, 0x88, 0x01, 0x01, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x42, 0x09, - 0x0a, 0x07, 0x5f, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6c, 0x65, - 0x6e, 0x67, 0x74, 0x68, 0x22, 0x89, 0x04, 0x0a, 0x1a, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, - 0x46, 0x6c, 0x6f, 0x77, 0x50, 0x70, 0x70, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x54, - 0x79, 0x70, 0x65, 0x12, 0x48, 0x0a, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x0e, 0x32, 0x2b, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, - 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x50, 0x70, 0x70, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, - 0x54, 0x79, 0x70, 0x65, 0x2e, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x2e, 0x45, 0x6e, 0x75, 0x6d, - 0x48, 0x00, 0x52, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, - 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x05, - 0x76, 0x61, 0x6c, 0x75, 0x65, 0x88, 0x01, 0x01, 0x12, 0x16, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, - 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0d, 0x52, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, - 0x12, 0x17, 0x0a, 0x04, 0x61, 0x75, 0x74, 0x6f, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x02, - 0x52, 0x04, 0x61, 0x75, 0x74, 0x6f, 0x88, 0x01, 0x01, 0x12, 0x44, 0x0a, 0x09, 0x69, 0x6e, 0x63, - 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x6f, - 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x50, 0x70, - 0x70, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x43, 0x6f, 0x75, - 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, - 0x44, 0x0a, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x07, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, - 0x46, 0x6c, 0x6f, 0x77, 0x50, 0x70, 0x70, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x54, - 0x79, 0x70, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, 0x64, 0x65, 0x63, 0x72, - 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x49, 0x0a, 0x0b, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x5f, - 0x74, 0x61, 0x67, 0x73, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x6f, 0x74, 0x67, - 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x50, 0x70, 0x70, 0x50, - 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x4d, 0x65, 0x74, 0x72, 0x69, - 0x63, 0x54, 0x61, 0x67, 0x52, 0x0a, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x73, - 0x1a, 0x60, 0x0a, 0x06, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x22, 0x56, 0x0a, 0x04, 0x45, 0x6e, - 0x75, 0x6d, 0x12, 0x0f, 0x0a, 0x0b, 0x75, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, - 0x64, 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x10, 0x02, 0x12, 0x0a, - 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x10, 0x03, 0x12, 0x08, 0x0a, 0x04, 0x61, 0x75, - 0x74, 0x6f, 0x10, 0x01, 0x12, 0x0d, 0x0a, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, - 0x74, 0x10, 0x04, 0x12, 0x0d, 0x0a, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, - 0x10, 0x05, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x42, 0x08, 0x0a, - 0x06, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x61, 0x75, 0x74, 0x6f, - 0x22, 0x8d, 0x01, 0x0a, 0x1f, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, - 0x49, 0x67, 0x6d, 0x70, 0x76, 0x31, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x75, - 0x6e, 0x74, 0x65, 0x72, 0x12, 0x19, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x0d, 0x48, 0x00, 0x52, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x88, 0x01, 0x01, 0x12, - 0x17, 0x0a, 0x04, 0x73, 0x74, 0x65, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, - 0x04, 0x73, 0x74, 0x65, 0x70, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, - 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x02, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, - 0x88, 0x01, 0x01, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x42, 0x07, 0x0a, - 0x05, 0x5f, 0x73, 0x74, 0x65, 0x70, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, - 0x22, 0x95, 0x01, 0x0a, 0x21, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, - 0x49, 0x67, 0x6d, 0x70, 0x76, 0x31, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x74, - 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x12, 0x17, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, - 0x1b, 0x0a, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, - 0x01, 0x52, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, - 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x02, 0x52, 0x06, - 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x88, 0x01, 0x01, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x6e, 0x61, - 0x6d, 0x65, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x42, 0x09, 0x0a, - 0x07, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x22, 0xd3, 0x03, 0x0a, 0x18, 0x50, 0x61, 0x74, - 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x67, 0x6d, 0x70, 0x76, 0x31, 0x56, 0x65, - 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x46, 0x0a, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x29, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, - 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x67, 0x6d, 0x70, 0x76, 0x31, 0x56, 0x65, 0x72, - 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x2e, 0x45, 0x6e, 0x75, 0x6d, - 0x48, 0x00, 0x52, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, - 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x05, - 0x76, 0x61, 0x6c, 0x75, 0x65, 0x88, 0x01, 0x01, 0x12, 0x16, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, - 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0d, 0x52, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, - 0x12, 0x42, 0x0a, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x05, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, - 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x67, 0x6d, 0x70, 0x76, 0x31, 0x56, 0x65, 0x72, 0x73, 0x69, - 0x6f, 0x6e, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, - 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x42, 0x0a, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, - 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, - 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x67, 0x6d, 0x70, 0x76, 0x31, 0x56, - 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, 0x64, - 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x47, 0x0a, 0x0b, 0x6d, 0x65, 0x74, 0x72, - 0x69, 0x63, 0x5f, 0x74, 0x61, 0x67, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x26, 0x2e, - 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, - 0x67, 0x6d, 0x70, 0x76, 0x31, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x74, 0x72, - 0x69, 0x63, 0x54, 0x61, 0x67, 0x52, 0x0a, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, - 0x73, 0x1a, 0x56, 0x0a, 0x06, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x22, 0x4c, 0x0a, 0x04, 0x45, - 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x0a, 0x0b, 0x75, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, - 0x65, 0x64, 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x10, 0x02, 0x12, - 0x0a, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x10, 0x03, 0x12, 0x0d, 0x0a, 0x09, 0x69, - 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x10, 0x04, 0x12, 0x0d, 0x0a, 0x09, 0x64, 0x65, - 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x10, 0x05, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x63, 0x68, - 0x6f, 0x69, 0x63, 0x65, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x8a, - 0x01, 0x0a, 0x1c, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x67, - 0x6d, 0x70, 0x76, 0x31, 0x54, 0x79, 0x70, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x12, - 0x19, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x00, - 0x52, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x88, 0x01, 0x01, 0x12, 0x17, 0x0a, 0x04, 0x73, 0x74, - 0x65, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x04, 0x73, 0x74, 0x65, 0x70, - 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x0d, 0x48, 0x02, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x88, 0x01, 0x01, 0x42, 0x08, - 0x0a, 0x06, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x73, 0x74, 0x65, - 0x70, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x92, 0x01, 0x0a, 0x1e, - 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x67, 0x6d, 0x70, 0x76, - 0x31, 0x54, 0x79, 0x70, 0x65, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x12, 0x17, - 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x04, - 0x6e, 0x61, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, - 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, - 0x74, 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x0d, 0x48, 0x02, 0x52, 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x88, 0x01, - 0x01, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6f, - 0x66, 0x66, 0x73, 0x65, 0x74, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, - 0x22, 0xc4, 0x03, 0x0a, 0x15, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, - 0x49, 0x67, 0x6d, 0x70, 0x76, 0x31, 0x54, 0x79, 0x70, 0x65, 0x12, 0x43, 0x0a, 0x06, 0x63, 0x68, - 0x6f, 0x69, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x26, 0x2e, 0x6f, 0x74, 0x67, - 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x67, 0x6d, 0x70, - 0x76, 0x31, 0x54, 0x79, 0x70, 0x65, 0x2e, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x2e, 0x45, 0x6e, - 0x75, 0x6d, 0x48, 0x00, 0x52, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x88, 0x01, 0x01, 0x12, - 0x19, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, - 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x88, 0x01, 0x01, 0x12, 0x16, 0x0a, 0x06, 0x76, 0x61, - 0x6c, 0x75, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0d, 0x52, 0x06, 0x76, 0x61, 0x6c, 0x75, - 0x65, 0x73, 0x12, 0x3f, 0x0a, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, - 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, - 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x67, 0x6d, 0x70, 0x76, 0x31, 0x54, 0x79, 0x70, - 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, - 0x65, 0x6e, 0x74, 0x12, 0x3f, 0x0a, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, - 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, - 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x67, 0x6d, 0x70, 0x76, 0x31, 0x54, 0x79, - 0x70, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, - 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x44, 0x0a, 0x0b, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x5f, 0x74, - 0x61, 0x67, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x6f, 0x74, 0x67, 0x2e, - 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x67, 0x6d, 0x70, 0x76, - 0x31, 0x54, 0x79, 0x70, 0x65, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x52, 0x0a, - 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x73, 0x1a, 0x56, 0x0a, 0x06, 0x43, 0x68, - 0x6f, 0x69, 0x63, 0x65, 0x22, 0x4c, 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x0a, 0x0b, - 0x75, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x10, 0x00, 0x12, 0x09, 0x0a, - 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x10, 0x02, 0x12, 0x0a, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, - 0x65, 0x73, 0x10, 0x03, 0x12, 0x0d, 0x0a, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, - 0x74, 0x10, 0x04, 0x12, 0x0d, 0x0a, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, - 0x10, 0x05, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x42, 0x08, 0x0a, - 0x06, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x8c, 0x01, 0x0a, 0x1e, 0x50, 0x61, 0x74, 0x74, - 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x67, 0x6d, 0x70, 0x76, 0x31, 0x55, 0x6e, 0x75, - 0x73, 0x65, 0x64, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x12, 0x19, 0x0a, 0x05, 0x73, 0x74, + 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x92, 0x04, 0x0a, 0x3a, 0x50, + 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x52, 0x53, 0x56, 0x50, 0x50, 0x61, + 0x74, 0x68, 0x45, 0x78, 0x70, 0x6c, 0x69, 0x63, 0x69, 0x74, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x54, + 0x79, 0x70, 0x65, 0x31, 0x49, 0x70, 0x76, 0x34, 0x50, 0x72, 0x65, 0x66, 0x69, 0x78, 0x49, 0x70, + 0x76, 0x34, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x68, 0x0a, 0x06, 0x63, 0x68, 0x6f, + 0x69, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x4b, 0x2e, 0x6f, 0x74, 0x67, 0x2e, + 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x52, 0x53, 0x56, 0x50, 0x50, + 0x61, 0x74, 0x68, 0x45, 0x78, 0x70, 0x6c, 0x69, 0x63, 0x69, 0x74, 0x52, 0x6f, 0x75, 0x74, 0x65, + 0x54, 0x79, 0x70, 0x65, 0x31, 0x49, 0x70, 0x76, 0x34, 0x50, 0x72, 0x65, 0x66, 0x69, 0x78, 0x49, + 0x70, 0x76, 0x34, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x2e, 0x43, 0x68, 0x6f, 0x69, 0x63, + 0x65, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x48, 0x00, 0x52, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, + 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x09, 0x48, 0x01, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x88, 0x01, 0x01, 0x12, 0x16, + 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x06, + 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x12, 0x64, 0x0a, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, + 0x65, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x46, 0x2e, 0x6f, 0x74, 0x67, 0x2e, + 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x52, 0x53, 0x56, 0x50, 0x50, + 0x61, 0x74, 0x68, 0x45, 0x78, 0x70, 0x6c, 0x69, 0x63, 0x69, 0x74, 0x52, 0x6f, 0x75, 0x74, 0x65, + 0x54, 0x79, 0x70, 0x65, 0x31, 0x49, 0x70, 0x76, 0x34, 0x50, 0x72, 0x65, 0x66, 0x69, 0x78, 0x49, + 0x70, 0x76, 0x34, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, + 0x72, 0x52, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x64, 0x0a, 0x09, + 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x46, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, + 0x77, 0x52, 0x53, 0x56, 0x50, 0x50, 0x61, 0x74, 0x68, 0x45, 0x78, 0x70, 0x6c, 0x69, 0x63, 0x69, + 0x74, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x54, 0x79, 0x70, 0x65, 0x31, 0x49, 0x70, 0x76, 0x34, 0x50, + 0x72, 0x65, 0x66, 0x69, 0x78, 0x49, 0x70, 0x76, 0x34, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, + 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, + 0x6e, 0x74, 0x1a, 0x56, 0x0a, 0x06, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x22, 0x4c, 0x0a, 0x04, + 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x0a, 0x0b, 0x75, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, + 0x69, 0x65, 0x64, 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x10, 0x02, + 0x12, 0x0a, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x10, 0x03, 0x12, 0x0d, 0x0a, 0x09, + 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x10, 0x04, 0x12, 0x0d, 0x0a, 0x09, 0x64, + 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x10, 0x05, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x63, + 0x68, 0x6f, 0x69, 0x63, 0x65, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, + 0xae, 0x01, 0x0a, 0x40, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x52, + 0x53, 0x56, 0x50, 0x50, 0x61, 0x74, 0x68, 0x45, 0x78, 0x70, 0x6c, 0x69, 0x63, 0x69, 0x74, 0x52, + 0x6f, 0x75, 0x74, 0x65, 0x54, 0x79, 0x70, 0x65, 0x31, 0x46, 0x6f, 0x75, 0x72, 0x42, 0x79, 0x74, + 0x65, 0x41, 0x53, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x4c, 0x42, 0x69, 0x74, 0x43, 0x6f, 0x75, + 0x6e, 0x74, 0x65, 0x72, 0x12, 0x19, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x0d, 0x48, 0x00, 0x52, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x88, 0x01, 0x01, 0x12, + 0x17, 0x0a, 0x04, 0x73, 0x74, 0x65, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, + 0x04, 0x73, 0x74, 0x65, 0x70, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, + 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x02, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, + 0x88, 0x01, 0x01, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x42, 0x07, 0x0a, + 0x05, 0x5f, 0x73, 0x74, 0x65, 0x70, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, + 0x22, 0x8e, 0x04, 0x0a, 0x39, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, + 0x52, 0x53, 0x56, 0x50, 0x50, 0x61, 0x74, 0x68, 0x45, 0x78, 0x70, 0x6c, 0x69, 0x63, 0x69, 0x74, + 0x52, 0x6f, 0x75, 0x74, 0x65, 0x54, 0x79, 0x70, 0x65, 0x31, 0x46, 0x6f, 0x75, 0x72, 0x42, 0x79, + 0x74, 0x65, 0x41, 0x53, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x4c, 0x42, 0x69, 0x74, 0x12, 0x67, + 0x0a, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x4a, + 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, + 0x52, 0x53, 0x56, 0x50, 0x50, 0x61, 0x74, 0x68, 0x45, 0x78, 0x70, 0x6c, 0x69, 0x63, 0x69, 0x74, + 0x52, 0x6f, 0x75, 0x74, 0x65, 0x54, 0x79, 0x70, 0x65, 0x31, 0x46, 0x6f, 0x75, 0x72, 0x42, 0x79, + 0x74, 0x65, 0x41, 0x53, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x4c, 0x42, 0x69, 0x74, 0x2e, 0x43, + 0x68, 0x6f, 0x69, 0x63, 0x65, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x48, 0x00, 0x52, 0x06, 0x63, 0x68, + 0x6f, 0x69, 0x63, 0x65, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x88, + 0x01, 0x01, 0x12, 0x16, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, + 0x28, 0x0d, 0x52, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x12, 0x63, 0x0a, 0x09, 0x69, 0x6e, + 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x45, 0x2e, + 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x52, + 0x53, 0x56, 0x50, 0x50, 0x61, 0x74, 0x68, 0x45, 0x78, 0x70, 0x6c, 0x69, 0x63, 0x69, 0x74, 0x52, + 0x6f, 0x75, 0x74, 0x65, 0x54, 0x79, 0x70, 0x65, 0x31, 0x46, 0x6f, 0x75, 0x72, 0x42, 0x79, 0x74, + 0x65, 0x41, 0x53, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x4c, 0x42, 0x69, 0x74, 0x43, 0x6f, 0x75, + 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, + 0x63, 0x0a, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x45, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, + 0x46, 0x6c, 0x6f, 0x77, 0x52, 0x53, 0x56, 0x50, 0x50, 0x61, 0x74, 0x68, 0x45, 0x78, 0x70, 0x6c, + 0x69, 0x63, 0x69, 0x74, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x54, 0x79, 0x70, 0x65, 0x31, 0x46, 0x6f, + 0x75, 0x72, 0x42, 0x79, 0x74, 0x65, 0x41, 0x53, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x4c, 0x42, + 0x69, 0x74, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, + 0x6d, 0x65, 0x6e, 0x74, 0x1a, 0x56, 0x0a, 0x06, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x22, 0x4c, + 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x0a, 0x0b, 0x75, 0x6e, 0x73, 0x70, 0x65, 0x63, + 0x69, 0x66, 0x69, 0x65, 0x64, 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, + 0x10, 0x02, 0x12, 0x0a, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x10, 0x03, 0x12, 0x0d, + 0x0a, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x10, 0x04, 0x12, 0x0d, 0x0a, + 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x10, 0x05, 0x42, 0x09, 0x0a, 0x07, + 0x5f, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x76, 0x61, 0x6c, 0x75, + 0x65, 0x22, 0xb2, 0x01, 0x0a, 0x44, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, + 0x77, 0x52, 0x53, 0x56, 0x50, 0x50, 0x61, 0x74, 0x68, 0x45, 0x78, 0x70, 0x6c, 0x69, 0x63, 0x69, + 0x74, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x54, 0x79, 0x70, 0x65, 0x31, 0x46, 0x6f, 0x75, 0x72, 0x42, + 0x79, 0x74, 0x65, 0x41, 0x53, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x52, 0x65, 0x73, 0x65, 0x72, + 0x76, 0x65, 0x64, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x12, 0x19, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x00, 0x52, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x88, 0x01, 0x01, 0x12, 0x17, 0x0a, 0x04, 0x73, 0x74, 0x65, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x04, 0x73, 0x74, 0x65, 0x70, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x02, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x88, 0x01, 0x01, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x73, 0x74, 0x65, 0x70, 0x42, 0x08, 0x0a, 0x06, - 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x94, 0x01, 0x0a, 0x20, 0x50, 0x61, 0x74, 0x74, 0x65, - 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x67, 0x6d, 0x70, 0x76, 0x31, 0x55, 0x6e, 0x75, 0x73, - 0x65, 0x64, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x12, 0x17, 0x0a, 0x04, 0x6e, - 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x04, 0x6e, 0x61, 0x6d, - 0x65, 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x88, 0x01, - 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x0d, 0x48, 0x02, 0x52, 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x88, 0x01, 0x01, 0x42, 0x07, - 0x0a, 0x05, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6f, 0x66, 0x66, 0x73, - 0x65, 0x74, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x22, 0xce, 0x03, - 0x0a, 0x17, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x67, 0x6d, - 0x70, 0x76, 0x31, 0x55, 0x6e, 0x75, 0x73, 0x65, 0x64, 0x12, 0x45, 0x0a, 0x06, 0x63, 0x68, 0x6f, - 0x69, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x28, 0x2e, 0x6f, 0x74, 0x67, 0x2e, - 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x67, 0x6d, 0x70, 0x76, - 0x31, 0x55, 0x6e, 0x75, 0x73, 0x65, 0x64, 0x2e, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x2e, 0x45, + 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x9e, 0x04, 0x0a, 0x3d, 0x50, 0x61, 0x74, 0x74, 0x65, + 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x52, 0x53, 0x56, 0x50, 0x50, 0x61, 0x74, 0x68, 0x45, 0x78, + 0x70, 0x6c, 0x69, 0x63, 0x69, 0x74, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x54, 0x79, 0x70, 0x65, 0x31, + 0x46, 0x6f, 0x75, 0x72, 0x42, 0x79, 0x74, 0x65, 0x41, 0x53, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, + 0x52, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x64, 0x12, 0x6b, 0x0a, 0x06, 0x63, 0x68, 0x6f, 0x69, + 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x4e, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, + 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x52, 0x53, 0x56, 0x50, 0x50, 0x61, + 0x74, 0x68, 0x45, 0x78, 0x70, 0x6c, 0x69, 0x63, 0x69, 0x74, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x54, + 0x79, 0x70, 0x65, 0x31, 0x46, 0x6f, 0x75, 0x72, 0x42, 0x79, 0x74, 0x65, 0x41, 0x53, 0x4e, 0x75, + 0x6d, 0x62, 0x65, 0x72, 0x52, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x64, 0x2e, 0x43, 0x68, 0x6f, + 0x69, 0x63, 0x65, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x48, 0x00, 0x52, 0x06, 0x63, 0x68, 0x6f, 0x69, + 0x63, 0x65, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x88, 0x01, 0x01, + 0x12, 0x16, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0d, + 0x52, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x12, 0x67, 0x0a, 0x09, 0x69, 0x6e, 0x63, 0x72, + 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x49, 0x2e, 0x6f, 0x74, + 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x52, 0x53, 0x56, + 0x50, 0x50, 0x61, 0x74, 0x68, 0x45, 0x78, 0x70, 0x6c, 0x69, 0x63, 0x69, 0x74, 0x52, 0x6f, 0x75, + 0x74, 0x65, 0x54, 0x79, 0x70, 0x65, 0x31, 0x46, 0x6f, 0x75, 0x72, 0x42, 0x79, 0x74, 0x65, 0x41, + 0x53, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x52, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x64, 0x43, + 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, + 0x74, 0x12, 0x67, 0x0a, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x06, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x49, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, + 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x52, 0x53, 0x56, 0x50, 0x50, 0x61, 0x74, 0x68, 0x45, 0x78, + 0x70, 0x6c, 0x69, 0x63, 0x69, 0x74, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x54, 0x79, 0x70, 0x65, 0x31, + 0x46, 0x6f, 0x75, 0x72, 0x42, 0x79, 0x74, 0x65, 0x41, 0x53, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, + 0x52, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x64, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, + 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x1a, 0x56, 0x0a, 0x06, 0x43, 0x68, + 0x6f, 0x69, 0x63, 0x65, 0x22, 0x4c, 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x0a, 0x0b, + 0x75, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x10, 0x00, 0x12, 0x09, 0x0a, + 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x10, 0x02, 0x12, 0x0a, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, + 0x65, 0x73, 0x10, 0x03, 0x12, 0x0d, 0x0a, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, + 0x74, 0x10, 0x04, 0x12, 0x0d, 0x0a, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, + 0x10, 0x05, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x42, 0x08, 0x0a, + 0x06, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0xad, 0x01, 0x0a, 0x3f, 0x50, 0x61, 0x74, 0x74, + 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x52, 0x53, 0x56, 0x50, 0x50, 0x61, 0x74, 0x68, 0x4c, + 0x61, 0x62, 0x65, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x57, 0x69, 0x74, 0x68, 0x6f, + 0x75, 0x74, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x52, 0x65, 0x73, 0x65, + 0x72, 0x76, 0x65, 0x64, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x12, 0x19, 0x0a, 0x05, 0x73, + 0x74, 0x61, 0x72, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x00, 0x52, 0x05, 0x73, 0x74, + 0x61, 0x72, 0x74, 0x88, 0x01, 0x01, 0x12, 0x17, 0x0a, 0x04, 0x73, 0x74, 0x65, 0x70, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x04, 0x73, 0x74, 0x65, 0x70, 0x88, 0x01, 0x01, 0x12, + 0x19, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x02, + 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x88, 0x01, 0x01, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x73, + 0x74, 0x61, 0x72, 0x74, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x73, 0x74, 0x65, 0x70, 0x42, 0x08, 0x0a, + 0x06, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x8a, 0x04, 0x0a, 0x38, 0x50, 0x61, 0x74, 0x74, + 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x52, 0x53, 0x56, 0x50, 0x50, 0x61, 0x74, 0x68, 0x4c, + 0x61, 0x62, 0x65, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x57, 0x69, 0x74, 0x68, 0x6f, + 0x75, 0x74, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x52, 0x65, 0x73, 0x65, + 0x72, 0x76, 0x65, 0x64, 0x12, 0x66, 0x0a, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x0e, 0x32, 0x49, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, + 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x52, 0x53, 0x56, 0x50, 0x50, 0x61, 0x74, 0x68, 0x4c, 0x61, + 0x62, 0x65, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x57, 0x69, 0x74, 0x68, 0x6f, 0x75, + 0x74, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x52, 0x65, 0x73, 0x65, 0x72, + 0x76, 0x65, 0x64, 0x2e, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x48, + 0x00, 0x52, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, + 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x05, 0x76, + 0x61, 0x6c, 0x75, 0x65, 0x88, 0x01, 0x01, 0x12, 0x16, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, + 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0d, 0x52, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x12, + 0x62, 0x0a, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x44, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, + 0x46, 0x6c, 0x6f, 0x77, 0x52, 0x53, 0x56, 0x50, 0x50, 0x61, 0x74, 0x68, 0x4c, 0x61, 0x62, 0x65, + 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x57, 0x69, 0x74, 0x68, 0x6f, 0x75, 0x74, 0x4c, + 0x61, 0x62, 0x65, 0x6c, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x52, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, + 0x64, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, + 0x65, 0x6e, 0x74, 0x12, 0x62, 0x0a, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, + 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x44, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, + 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x52, 0x53, 0x56, 0x50, 0x50, 0x61, 0x74, 0x68, + 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x57, 0x69, 0x74, 0x68, + 0x6f, 0x75, 0x74, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x52, 0x65, 0x73, + 0x65, 0x72, 0x76, 0x65, 0x64, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, 0x64, 0x65, + 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x1a, 0x56, 0x0a, 0x06, 0x43, 0x68, 0x6f, 0x69, 0x63, + 0x65, 0x22, 0x4c, 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x0a, 0x0b, 0x75, 0x6e, 0x73, + 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, 0x76, 0x61, + 0x6c, 0x75, 0x65, 0x10, 0x02, 0x12, 0x0a, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x10, + 0x03, 0x12, 0x0d, 0x0a, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x10, 0x04, + 0x12, 0x0d, 0x0a, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x10, 0x05, 0x42, + 0x09, 0x0a, 0x07, 0x5f, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x76, + 0x61, 0x6c, 0x75, 0x65, 0x22, 0xaa, 0x01, 0x0a, 0x3c, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, + 0x46, 0x6c, 0x6f, 0x77, 0x52, 0x53, 0x56, 0x50, 0x50, 0x61, 0x74, 0x68, 0x4c, 0x61, 0x62, 0x65, + 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x57, 0x69, 0x74, 0x68, 0x6f, 0x75, 0x74, 0x4c, + 0x61, 0x62, 0x65, 0x6c, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x4c, 0x33, 0x70, 0x69, 0x64, 0x43, 0x6f, + 0x75, 0x6e, 0x74, 0x65, 0x72, 0x12, 0x19, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x0d, 0x48, 0x00, 0x52, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x88, 0x01, 0x01, + 0x12, 0x17, 0x0a, 0x04, 0x73, 0x74, 0x65, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, + 0x52, 0x04, 0x73, 0x74, 0x65, 0x70, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x63, 0x6f, 0x75, + 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x02, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, + 0x74, 0x88, 0x01, 0x01, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x42, 0x07, + 0x0a, 0x05, 0x5f, 0x73, 0x74, 0x65, 0x70, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x63, 0x6f, 0x75, 0x6e, + 0x74, 0x22, 0xfe, 0x03, 0x0a, 0x35, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, + 0x77, 0x52, 0x53, 0x56, 0x50, 0x50, 0x61, 0x74, 0x68, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x57, 0x69, 0x74, 0x68, 0x6f, 0x75, 0x74, 0x4c, 0x61, 0x62, 0x65, + 0x6c, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x4c, 0x33, 0x70, 0x69, 0x64, 0x12, 0x63, 0x0a, 0x06, 0x63, + 0x68, 0x6f, 0x69, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x46, 0x2e, 0x6f, 0x74, + 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x52, 0x53, 0x56, + 0x50, 0x50, 0x61, 0x74, 0x68, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x57, 0x69, 0x74, 0x68, 0x6f, 0x75, 0x74, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x52, 0x61, 0x6e, + 0x67, 0x65, 0x4c, 0x33, 0x70, 0x69, 0x64, 0x2e, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x48, 0x00, 0x52, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x88, 0x01, 0x01, 0x12, 0x16, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0d, 0x52, 0x06, 0x76, 0x61, 0x6c, - 0x75, 0x65, 0x73, 0x12, 0x41, 0x0a, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, - 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, - 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x67, 0x6d, 0x70, 0x76, 0x31, 0x55, 0x6e, - 0x75, 0x73, 0x65, 0x64, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, 0x69, 0x6e, 0x63, - 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x41, 0x0a, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, - 0x65, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x6f, 0x74, 0x67, 0x2e, - 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x67, 0x6d, 0x70, 0x76, - 0x31, 0x55, 0x6e, 0x75, 0x73, 0x65, 0x64, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, - 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x46, 0x0a, 0x0b, 0x6d, 0x65, 0x74, - 0x72, 0x69, 0x63, 0x5f, 0x74, 0x61, 0x67, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x25, - 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, - 0x49, 0x67, 0x6d, 0x70, 0x76, 0x31, 0x55, 0x6e, 0x75, 0x73, 0x65, 0x64, 0x4d, 0x65, 0x74, 0x72, - 0x69, 0x63, 0x54, 0x61, 0x67, 0x52, 0x0a, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, - 0x73, 0x1a, 0x56, 0x0a, 0x06, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x22, 0x4c, 0x0a, 0x04, 0x45, - 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x0a, 0x0b, 0x75, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, - 0x65, 0x64, 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x10, 0x02, 0x12, - 0x0a, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x10, 0x03, 0x12, 0x0d, 0x0a, 0x09, 0x69, - 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x10, 0x04, 0x12, 0x0d, 0x0a, 0x09, 0x64, 0x65, - 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x10, 0x05, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x63, 0x68, - 0x6f, 0x69, 0x63, 0x65, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0xee, - 0x02, 0x0a, 0x19, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x67, - 0x6d, 0x70, 0x76, 0x31, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x12, 0x47, 0x0a, 0x06, - 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2a, 0x2e, 0x6f, - 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x67, - 0x6d, 0x70, 0x76, 0x31, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x2e, 0x43, 0x68, 0x6f, - 0x69, 0x63, 0x65, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x48, 0x00, 0x52, 0x06, 0x63, 0x68, 0x6f, 0x69, - 0x63, 0x65, 0x88, 0x01, 0x01, 0x12, 0x50, 0x0a, 0x09, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, - 0x65, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2d, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, - 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x67, 0x6d, 0x70, 0x76, 0x31, - 0x43, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x2e, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, - 0x65, 0x64, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x48, 0x01, 0x52, 0x09, 0x67, 0x65, 0x6e, 0x65, 0x72, - 0x61, 0x74, 0x65, 0x64, 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x63, 0x75, 0x73, 0x74, 0x6f, - 0x6d, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x02, 0x52, 0x06, 0x63, 0x75, 0x73, 0x74, 0x6f, - 0x6d, 0x88, 0x01, 0x01, 0x1a, 0x3c, 0x0a, 0x06, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x22, 0x32, - 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x0a, 0x0b, 0x75, 0x6e, 0x73, 0x70, 0x65, 0x63, - 0x69, 0x66, 0x69, 0x65, 0x64, 0x10, 0x00, 0x12, 0x0d, 0x0a, 0x09, 0x67, 0x65, 0x6e, 0x65, 0x72, - 0x61, 0x74, 0x65, 0x64, 0x10, 0x01, 0x12, 0x0a, 0x0a, 0x06, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, - 0x10, 0x02, 0x1a, 0x37, 0x0a, 0x09, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x22, - 0x2a, 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x0a, 0x0b, 0x75, 0x6e, 0x73, 0x70, 0x65, - 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x10, 0x00, 0x12, 0x08, 0x0a, 0x04, 0x67, 0x6f, 0x6f, 0x64, - 0x10, 0x01, 0x12, 0x07, 0x0a, 0x03, 0x62, 0x61, 0x64, 0x10, 0x02, 0x42, 0x09, 0x0a, 0x07, 0x5f, - 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x67, 0x65, 0x6e, 0x65, 0x72, - 0x61, 0x74, 0x65, 0x64, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x22, - 0x92, 0x01, 0x0a, 0x24, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, - 0x67, 0x6d, 0x70, 0x76, 0x31, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, - 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x12, 0x19, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x72, - 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, - 0x88, 0x01, 0x01, 0x12, 0x17, 0x0a, 0x04, 0x73, 0x74, 0x65, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x09, 0x48, 0x01, 0x52, 0x04, 0x73, 0x74, 0x65, 0x70, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, - 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x02, 0x52, 0x05, 0x63, - 0x6f, 0x75, 0x6e, 0x74, 0x88, 0x01, 0x01, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x73, 0x74, 0x61, 0x72, - 0x74, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x73, 0x74, 0x65, 0x70, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x63, - 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x9a, 0x01, 0x0a, 0x26, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, - 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x67, 0x6d, 0x70, 0x76, 0x31, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x41, - 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x12, - 0x17, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, - 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x6f, 0x66, 0x66, 0x73, - 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x06, 0x6f, 0x66, 0x66, 0x73, - 0x65, 0x74, 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x02, 0x52, 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x88, - 0x01, 0x01, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x42, 0x09, 0x0a, 0x07, 0x5f, - 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, - 0x68, 0x22, 0xec, 0x03, 0x0a, 0x1d, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, - 0x77, 0x49, 0x67, 0x6d, 0x70, 0x76, 0x31, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x41, 0x64, 0x64, 0x72, - 0x65, 0x73, 0x73, 0x12, 0x4b, 0x0a, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x0e, 0x32, 0x2e, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, - 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x67, 0x6d, 0x70, 0x76, 0x31, 0x47, 0x72, 0x6f, 0x75, 0x70, - 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x2e, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x2e, 0x45, - 0x6e, 0x75, 0x6d, 0x48, 0x00, 0x52, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x88, 0x01, 0x01, - 0x12, 0x19, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, - 0x01, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x88, 0x01, 0x01, 0x12, 0x16, 0x0a, 0x06, 0x76, - 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x06, 0x76, 0x61, 0x6c, - 0x75, 0x65, 0x73, 0x12, 0x47, 0x0a, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, - 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, - 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x67, 0x6d, 0x70, 0x76, 0x31, 0x47, 0x72, - 0x6f, 0x75, 0x70, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, - 0x72, 0x52, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x47, 0x0a, 0x09, - 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x29, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, - 0x77, 0x49, 0x67, 0x6d, 0x70, 0x76, 0x31, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x41, 0x64, 0x64, 0x72, - 0x65, 0x73, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, 0x64, 0x65, 0x63, 0x72, - 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x4c, 0x0a, 0x0b, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x5f, - 0x74, 0x61, 0x67, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x6f, 0x74, 0x67, - 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x67, 0x6d, 0x70, - 0x76, 0x31, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x4d, 0x65, - 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x52, 0x0a, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, - 0x61, 0x67, 0x73, 0x1a, 0x56, 0x0a, 0x06, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x22, 0x4c, 0x0a, + 0x75, 0x65, 0x73, 0x12, 0x5f, 0x0a, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, + 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x41, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, + 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x52, 0x53, 0x56, 0x50, 0x50, 0x61, 0x74, 0x68, + 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x57, 0x69, 0x74, 0x68, + 0x6f, 0x75, 0x74, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x4c, 0x33, 0x70, + 0x69, 0x64, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, + 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x5f, 0x0a, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, + 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x41, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, + 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x52, 0x53, 0x56, 0x50, 0x50, 0x61, 0x74, + 0x68, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x57, 0x69, 0x74, + 0x68, 0x6f, 0x75, 0x74, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x4c, 0x33, + 0x70, 0x69, 0x64, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, 0x64, 0x65, 0x63, 0x72, + 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x1a, 0x56, 0x0a, 0x06, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x22, + 0x4c, 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x0a, 0x0b, 0x75, 0x6e, 0x73, 0x70, 0x65, + 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, + 0x65, 0x10, 0x02, 0x12, 0x0a, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x10, 0x03, 0x12, + 0x0d, 0x0a, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x10, 0x04, 0x12, 0x0d, + 0x0a, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x10, 0x05, 0x42, 0x09, 0x0a, + 0x07, 0x5f, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x76, 0x61, 0x6c, + 0x75, 0x65, 0x22, 0xba, 0x01, 0x0a, 0x4c, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, + 0x6f, 0x77, 0x52, 0x53, 0x56, 0x50, 0x50, 0x61, 0x74, 0x68, 0x53, 0x65, 0x6e, 0x64, 0x65, 0x72, + 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x4c, 0x73, 0x70, 0x54, 0x75, 0x6e, 0x6e, 0x65, + 0x6c, 0x49, 0x70, 0x76, 0x34, 0x49, 0x70, 0x76, 0x34, 0x54, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x53, + 0x65, 0x6e, 0x64, 0x65, 0x72, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x43, 0x6f, 0x75, 0x6e, + 0x74, 0x65, 0x72, 0x12, 0x19, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x48, 0x00, 0x52, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x88, 0x01, 0x01, 0x12, 0x17, + 0x0a, 0x04, 0x73, 0x74, 0x65, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, 0x52, 0x04, + 0x73, 0x74, 0x65, 0x70, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x02, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x88, + 0x01, 0x01, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x42, 0x07, 0x0a, 0x05, + 0x5f, 0x73, 0x74, 0x65, 0x70, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x22, + 0xbe, 0x04, 0x0a, 0x45, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x52, + 0x53, 0x56, 0x50, 0x50, 0x61, 0x74, 0x68, 0x53, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x54, 0x65, 0x6d, + 0x70, 0x6c, 0x61, 0x74, 0x65, 0x4c, 0x73, 0x70, 0x54, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x49, 0x70, + 0x76, 0x34, 0x49, 0x70, 0x76, 0x34, 0x54, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x53, 0x65, 0x6e, 0x64, + 0x65, 0x72, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x73, 0x0a, 0x06, 0x63, 0x68, 0x6f, + 0x69, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x56, 0x2e, 0x6f, 0x74, 0x67, 0x2e, + 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x52, 0x53, 0x56, 0x50, 0x50, + 0x61, 0x74, 0x68, 0x53, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, + 0x65, 0x4c, 0x73, 0x70, 0x54, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x49, 0x70, 0x76, 0x34, 0x49, 0x70, + 0x76, 0x34, 0x54, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x53, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x41, 0x64, + 0x64, 0x72, 0x65, 0x73, 0x73, 0x2e, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x2e, 0x45, 0x6e, 0x75, + 0x6d, 0x48, 0x00, 0x52, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x88, 0x01, 0x01, 0x12, 0x19, + 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, 0x52, + 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x88, 0x01, 0x01, 0x12, 0x16, 0x0a, 0x06, 0x76, 0x61, 0x6c, + 0x75, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, + 0x73, 0x12, 0x6f, 0x0a, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x05, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x51, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, + 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x52, 0x53, 0x56, 0x50, 0x50, 0x61, 0x74, 0x68, 0x53, 0x65, + 0x6e, 0x64, 0x65, 0x72, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x4c, 0x73, 0x70, 0x54, + 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x49, 0x70, 0x76, 0x34, 0x49, 0x70, 0x76, 0x34, 0x54, 0x75, 0x6e, + 0x6e, 0x65, 0x6c, 0x53, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, + 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, + 0x6e, 0x74, 0x12, 0x6f, 0x0a, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, + 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x51, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, + 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x52, 0x53, 0x56, 0x50, 0x50, 0x61, 0x74, 0x68, 0x53, + 0x65, 0x6e, 0x64, 0x65, 0x72, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x4c, 0x73, 0x70, + 0x54, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x49, 0x70, 0x76, 0x34, 0x49, 0x70, 0x76, 0x34, 0x54, 0x75, + 0x6e, 0x6e, 0x65, 0x6c, 0x53, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, + 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, + 0x65, 0x6e, 0x74, 0x1a, 0x56, 0x0a, 0x06, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x22, 0x4c, 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x0a, 0x0b, 0x75, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x10, 0x02, 0x12, 0x0a, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x10, 0x03, 0x12, 0x0d, 0x0a, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x10, 0x04, 0x12, 0x0d, 0x0a, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x10, 0x05, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, - 0x22, 0x89, 0x01, 0x0a, 0x1b, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, - 0x4d, 0x70, 0x6c, 0x73, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, + 0x22, 0xab, 0x01, 0x0a, 0x3d, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, + 0x52, 0x53, 0x56, 0x50, 0x50, 0x61, 0x74, 0x68, 0x53, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x54, 0x65, + 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x4c, 0x73, 0x70, 0x54, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x49, + 0x70, 0x76, 0x34, 0x52, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x64, 0x43, 0x6f, 0x75, 0x6e, 0x74, + 0x65, 0x72, 0x12, 0x19, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x0d, 0x48, 0x00, 0x52, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x88, 0x01, 0x01, 0x12, 0x17, 0x0a, + 0x04, 0x73, 0x74, 0x65, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x04, 0x73, + 0x74, 0x65, 0x70, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x02, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x88, 0x01, + 0x01, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x42, 0x07, 0x0a, 0x05, 0x5f, + 0x73, 0x74, 0x65, 0x70, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x82, + 0x04, 0x0a, 0x36, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x52, 0x53, + 0x56, 0x50, 0x50, 0x61, 0x74, 0x68, 0x53, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x54, 0x65, 0x6d, 0x70, + 0x6c, 0x61, 0x74, 0x65, 0x4c, 0x73, 0x70, 0x54, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x49, 0x70, 0x76, + 0x34, 0x52, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x64, 0x12, 0x64, 0x0a, 0x06, 0x63, 0x68, 0x6f, + 0x69, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x47, 0x2e, 0x6f, 0x74, 0x67, 0x2e, + 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x52, 0x53, 0x56, 0x50, 0x50, + 0x61, 0x74, 0x68, 0x53, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, + 0x65, 0x4c, 0x73, 0x70, 0x54, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x49, 0x70, 0x76, 0x34, 0x52, 0x65, + 0x73, 0x65, 0x72, 0x76, 0x65, 0x64, 0x2e, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x2e, 0x45, 0x6e, + 0x75, 0x6d, 0x48, 0x00, 0x52, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x88, 0x01, 0x01, 0x12, + 0x19, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, + 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x88, 0x01, 0x01, 0x12, 0x16, 0x0a, 0x06, 0x76, 0x61, + 0x6c, 0x75, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0d, 0x52, 0x06, 0x76, 0x61, 0x6c, 0x75, + 0x65, 0x73, 0x12, 0x60, 0x0a, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, + 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x42, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, + 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x52, 0x53, 0x56, 0x50, 0x50, 0x61, 0x74, 0x68, 0x53, + 0x65, 0x6e, 0x64, 0x65, 0x72, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x4c, 0x73, 0x70, + 0x54, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x49, 0x70, 0x76, 0x34, 0x52, 0x65, 0x73, 0x65, 0x72, 0x76, + 0x65, 0x64, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, + 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x60, 0x0a, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, + 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x42, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, + 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x52, 0x53, 0x56, 0x50, 0x50, 0x61, 0x74, + 0x68, 0x53, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x4c, + 0x73, 0x70, 0x54, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x49, 0x70, 0x76, 0x34, 0x52, 0x65, 0x73, 0x65, + 0x72, 0x76, 0x65, 0x64, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, 0x64, 0x65, 0x63, + 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x1a, 0x56, 0x0a, 0x06, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, + 0x22, 0x4c, 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x0a, 0x0b, 0x75, 0x6e, 0x73, 0x70, + 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, 0x76, 0x61, 0x6c, + 0x75, 0x65, 0x10, 0x02, 0x12, 0x0a, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x10, 0x03, + 0x12, 0x0d, 0x0a, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x10, 0x04, 0x12, + 0x0d, 0x0a, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x10, 0x05, 0x42, 0x09, + 0x0a, 0x07, 0x5f, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x76, 0x61, + 0x6c, 0x75, 0x65, 0x22, 0xa8, 0x01, 0x0a, 0x3a, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, + 0x6c, 0x6f, 0x77, 0x52, 0x53, 0x56, 0x50, 0x50, 0x61, 0x74, 0x68, 0x53, 0x65, 0x6e, 0x64, 0x65, + 0x72, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x4c, 0x73, 0x70, 0x54, 0x75, 0x6e, 0x6e, + 0x65, 0x6c, 0x49, 0x70, 0x76, 0x34, 0x4c, 0x73, 0x70, 0x49, 0x64, 0x43, 0x6f, 0x75, 0x6e, 0x74, + 0x65, 0x72, 0x12, 0x19, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x0d, 0x48, 0x00, 0x52, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x88, 0x01, 0x01, 0x12, 0x17, 0x0a, + 0x04, 0x73, 0x74, 0x65, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x04, 0x73, + 0x74, 0x65, 0x70, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x02, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x88, 0x01, + 0x01, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x42, 0x07, 0x0a, 0x05, 0x5f, + 0x73, 0x74, 0x65, 0x70, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0xf6, + 0x03, 0x0a, 0x33, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x52, 0x53, + 0x56, 0x50, 0x50, 0x61, 0x74, 0x68, 0x53, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x54, 0x65, 0x6d, 0x70, + 0x6c, 0x61, 0x74, 0x65, 0x4c, 0x73, 0x70, 0x54, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x49, 0x70, 0x76, + 0x34, 0x4c, 0x73, 0x70, 0x49, 0x64, 0x12, 0x61, 0x0a, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x44, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, + 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x52, 0x53, 0x56, 0x50, 0x50, 0x61, 0x74, 0x68, + 0x53, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x4c, 0x73, + 0x70, 0x54, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x49, 0x70, 0x76, 0x34, 0x4c, 0x73, 0x70, 0x49, 0x64, + 0x2e, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x48, 0x00, 0x52, 0x06, + 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x76, 0x61, 0x6c, + 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, + 0x65, 0x88, 0x01, 0x01, 0x12, 0x16, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x03, + 0x20, 0x03, 0x28, 0x0d, 0x52, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x12, 0x5d, 0x0a, 0x09, + 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x3f, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, + 0x77, 0x52, 0x53, 0x56, 0x50, 0x50, 0x61, 0x74, 0x68, 0x53, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x54, + 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x4c, 0x73, 0x70, 0x54, 0x75, 0x6e, 0x6e, 0x65, 0x6c, + 0x49, 0x70, 0x76, 0x34, 0x4c, 0x73, 0x70, 0x49, 0x64, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, + 0x52, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x5d, 0x0a, 0x09, 0x64, + 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3f, + 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, + 0x52, 0x53, 0x56, 0x50, 0x50, 0x61, 0x74, 0x68, 0x53, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x54, 0x65, + 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x4c, 0x73, 0x70, 0x54, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x49, + 0x70, 0x76, 0x34, 0x4c, 0x73, 0x70, 0x49, 0x64, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, + 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x1a, 0x56, 0x0a, 0x06, 0x43, 0x68, + 0x6f, 0x69, 0x63, 0x65, 0x22, 0x4c, 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x0a, 0x0b, + 0x75, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x10, 0x00, 0x12, 0x09, 0x0a, + 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x10, 0x02, 0x12, 0x0a, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, + 0x65, 0x73, 0x10, 0x03, 0x12, 0x0d, 0x0a, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, + 0x74, 0x10, 0x04, 0x12, 0x0d, 0x0a, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, + 0x10, 0x05, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x42, 0x08, 0x0a, + 0x06, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0xa1, 0x01, 0x0a, 0x33, 0x50, 0x61, 0x74, 0x74, + 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x52, 0x53, 0x56, 0x50, 0x50, 0x61, 0x74, 0x68, 0x53, + 0x65, 0x6e, 0x64, 0x65, 0x72, 0x54, 0x73, 0x70, 0x65, 0x63, 0x49, 0x6e, 0x74, 0x53, 0x65, 0x72, + 0x76, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x12, + 0x19, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x00, + 0x52, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x88, 0x01, 0x01, 0x12, 0x17, 0x0a, 0x04, 0x73, 0x74, + 0x65, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x04, 0x73, 0x74, 0x65, 0x70, + 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x0d, 0x48, 0x02, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x88, 0x01, 0x01, 0x42, 0x08, + 0x0a, 0x06, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x73, 0x74, 0x65, + 0x70, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0xda, 0x03, 0x0a, 0x2c, + 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x52, 0x53, 0x56, 0x50, 0x50, + 0x61, 0x74, 0x68, 0x53, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x54, 0x73, 0x70, 0x65, 0x63, 0x49, 0x6e, + 0x74, 0x53, 0x65, 0x72, 0x76, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x5a, 0x0a, 0x06, + 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x3d, 0x2e, 0x6f, + 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x52, 0x53, + 0x56, 0x50, 0x50, 0x61, 0x74, 0x68, 0x53, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x54, 0x73, 0x70, 0x65, + 0x63, 0x49, 0x6e, 0x74, 0x53, 0x65, 0x72, 0x76, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x2e, + 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x48, 0x00, 0x52, 0x06, 0x63, + 0x68, 0x6f, 0x69, 0x63, 0x65, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, + 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, + 0x88, 0x01, 0x01, 0x12, 0x16, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x03, 0x20, + 0x03, 0x28, 0x0d, 0x52, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x12, 0x56, 0x0a, 0x09, 0x69, + 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x38, + 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, + 0x52, 0x53, 0x56, 0x50, 0x50, 0x61, 0x74, 0x68, 0x53, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x54, 0x73, + 0x70, 0x65, 0x63, 0x49, 0x6e, 0x74, 0x53, 0x65, 0x72, 0x76, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, + 0x6e, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, + 0x65, 0x6e, 0x74, 0x12, 0x56, 0x0a, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, + 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x38, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, + 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x52, 0x53, 0x56, 0x50, 0x50, 0x61, 0x74, 0x68, + 0x53, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x54, 0x73, 0x70, 0x65, 0x63, 0x49, 0x6e, 0x74, 0x53, 0x65, + 0x72, 0x76, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, + 0x52, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x1a, 0x56, 0x0a, 0x06, 0x43, + 0x68, 0x6f, 0x69, 0x63, 0x65, 0x22, 0x4c, 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x0a, + 0x0b, 0x75, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x10, 0x00, 0x12, 0x09, + 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x10, 0x02, 0x12, 0x0a, 0x0a, 0x06, 0x76, 0x61, 0x6c, + 0x75, 0x65, 0x73, 0x10, 0x03, 0x12, 0x0d, 0x0a, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, + 0x6e, 0x74, 0x10, 0x04, 0x12, 0x0d, 0x0a, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, + 0x74, 0x10, 0x05, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x42, 0x08, + 0x0a, 0x06, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0xa3, 0x01, 0x0a, 0x35, 0x50, 0x61, 0x74, + 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x52, 0x53, 0x56, 0x50, 0x50, 0x61, 0x74, 0x68, + 0x53, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x54, 0x73, 0x70, 0x65, 0x63, 0x49, 0x6e, 0x74, 0x53, 0x65, + 0x72, 0x76, 0x52, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x64, 0x31, 0x43, 0x6f, 0x75, 0x6e, 0x74, + 0x65, 0x72, 0x12, 0x19, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x0d, 0x48, 0x00, 0x52, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x88, 0x01, 0x01, 0x12, 0x17, 0x0a, + 0x04, 0x73, 0x74, 0x65, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x04, 0x73, + 0x74, 0x65, 0x70, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x02, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x88, 0x01, + 0x01, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x42, 0x07, 0x0a, 0x05, 0x5f, + 0x73, 0x74, 0x65, 0x70, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0xe2, + 0x03, 0x0a, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x52, 0x53, + 0x56, 0x50, 0x50, 0x61, 0x74, 0x68, 0x53, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x54, 0x73, 0x70, 0x65, + 0x63, 0x49, 0x6e, 0x74, 0x53, 0x65, 0x72, 0x76, 0x52, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x64, + 0x31, 0x12, 0x5c, 0x0a, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x0e, 0x32, 0x3f, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, + 0x6c, 0x6f, 0x77, 0x52, 0x53, 0x56, 0x50, 0x50, 0x61, 0x74, 0x68, 0x53, 0x65, 0x6e, 0x64, 0x65, + 0x72, 0x54, 0x73, 0x70, 0x65, 0x63, 0x49, 0x6e, 0x74, 0x53, 0x65, 0x72, 0x76, 0x52, 0x65, 0x73, + 0x65, 0x72, 0x76, 0x65, 0x64, 0x31, 0x2e, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x2e, 0x45, 0x6e, + 0x75, 0x6d, 0x48, 0x00, 0x52, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x88, 0x01, 0x01, 0x12, + 0x19, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, + 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x88, 0x01, 0x01, 0x12, 0x16, 0x0a, 0x06, 0x76, 0x61, + 0x6c, 0x75, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0d, 0x52, 0x06, 0x76, 0x61, 0x6c, 0x75, + 0x65, 0x73, 0x12, 0x58, 0x0a, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, + 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3a, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, + 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x52, 0x53, 0x56, 0x50, 0x50, 0x61, 0x74, 0x68, 0x53, + 0x65, 0x6e, 0x64, 0x65, 0x72, 0x54, 0x73, 0x70, 0x65, 0x63, 0x49, 0x6e, 0x74, 0x53, 0x65, 0x72, + 0x76, 0x52, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x64, 0x31, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, + 0x72, 0x52, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x58, 0x0a, 0x09, + 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x3a, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, + 0x77, 0x52, 0x53, 0x56, 0x50, 0x50, 0x61, 0x74, 0x68, 0x53, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x54, + 0x73, 0x70, 0x65, 0x63, 0x49, 0x6e, 0x74, 0x53, 0x65, 0x72, 0x76, 0x52, 0x65, 0x73, 0x65, 0x72, + 0x76, 0x65, 0x64, 0x31, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, 0x64, 0x65, 0x63, + 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x1a, 0x56, 0x0a, 0x06, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, + 0x22, 0x4c, 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x0a, 0x0b, 0x75, 0x6e, 0x73, 0x70, + 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, 0x76, 0x61, 0x6c, + 0x75, 0x65, 0x10, 0x02, 0x12, 0x0a, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x10, 0x03, + 0x12, 0x0d, 0x0a, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x10, 0x04, 0x12, + 0x0d, 0x0a, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x10, 0x05, 0x42, 0x09, + 0x0a, 0x07, 0x5f, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x76, 0x61, + 0x6c, 0x75, 0x65, 0x22, 0xa7, 0x01, 0x0a, 0x39, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, + 0x6c, 0x6f, 0x77, 0x52, 0x53, 0x56, 0x50, 0x50, 0x61, 0x74, 0x68, 0x53, 0x65, 0x6e, 0x64, 0x65, + 0x72, 0x54, 0x73, 0x70, 0x65, 0x63, 0x49, 0x6e, 0x74, 0x53, 0x65, 0x72, 0x76, 0x4f, 0x76, 0x65, + 0x72, 0x61, 0x6c, 0x6c, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, + 0x72, 0x12, 0x19, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, + 0x48, 0x00, 0x52, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x88, 0x01, 0x01, 0x12, 0x17, 0x0a, 0x04, + 0x73, 0x74, 0x65, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x04, 0x73, 0x74, + 0x65, 0x70, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x0d, 0x48, 0x02, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x88, 0x01, 0x01, + 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x73, + 0x74, 0x65, 0x70, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0xf2, 0x03, + 0x0a, 0x32, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x52, 0x53, 0x56, + 0x50, 0x50, 0x61, 0x74, 0x68, 0x53, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x54, 0x73, 0x70, 0x65, 0x63, + 0x49, 0x6e, 0x74, 0x53, 0x65, 0x72, 0x76, 0x4f, 0x76, 0x65, 0x72, 0x61, 0x6c, 0x6c, 0x4c, 0x65, + 0x6e, 0x67, 0x74, 0x68, 0x12, 0x60, 0x0a, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x0e, 0x32, 0x43, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, + 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x52, 0x53, 0x56, 0x50, 0x50, 0x61, 0x74, 0x68, 0x53, 0x65, + 0x6e, 0x64, 0x65, 0x72, 0x54, 0x73, 0x70, 0x65, 0x63, 0x49, 0x6e, 0x74, 0x53, 0x65, 0x72, 0x76, + 0x4f, 0x76, 0x65, 0x72, 0x61, 0x6c, 0x6c, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x2e, 0x43, 0x68, + 0x6f, 0x69, 0x63, 0x65, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x48, 0x00, 0x52, 0x06, 0x63, 0x68, 0x6f, + 0x69, 0x63, 0x65, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x88, 0x01, + 0x01, 0x12, 0x16, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, + 0x0d, 0x52, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x12, 0x5c, 0x0a, 0x09, 0x69, 0x6e, 0x63, + 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3e, 0x2e, 0x6f, + 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x52, 0x53, + 0x56, 0x50, 0x50, 0x61, 0x74, 0x68, 0x53, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x54, 0x73, 0x70, 0x65, + 0x63, 0x49, 0x6e, 0x74, 0x53, 0x65, 0x72, 0x76, 0x4f, 0x76, 0x65, 0x72, 0x61, 0x6c, 0x6c, 0x4c, + 0x65, 0x6e, 0x67, 0x74, 0x68, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, 0x69, 0x6e, + 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x5c, 0x0a, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, + 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3e, 0x2e, 0x6f, 0x74, 0x67, + 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x52, 0x53, 0x56, 0x50, + 0x50, 0x61, 0x74, 0x68, 0x53, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x54, 0x73, 0x70, 0x65, 0x63, 0x49, + 0x6e, 0x74, 0x53, 0x65, 0x72, 0x76, 0x4f, 0x76, 0x65, 0x72, 0x61, 0x6c, 0x6c, 0x4c, 0x65, 0x6e, + 0x67, 0x74, 0x68, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, 0x64, 0x65, 0x63, 0x72, + 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x1a, 0x56, 0x0a, 0x06, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x22, + 0x4c, 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x0a, 0x0b, 0x75, 0x6e, 0x73, 0x70, 0x65, + 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, + 0x65, 0x10, 0x02, 0x12, 0x0a, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x10, 0x03, 0x12, + 0x0d, 0x0a, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x10, 0x04, 0x12, 0x0d, + 0x0a, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x10, 0x05, 0x42, 0x09, 0x0a, + 0x07, 0x5f, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x76, 0x61, 0x6c, + 0x75, 0x65, 0x22, 0xa7, 0x01, 0x0a, 0x39, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, + 0x6f, 0x77, 0x52, 0x53, 0x56, 0x50, 0x50, 0x61, 0x74, 0x68, 0x53, 0x65, 0x6e, 0x64, 0x65, 0x72, + 0x54, 0x73, 0x70, 0x65, 0x63, 0x49, 0x6e, 0x74, 0x53, 0x65, 0x72, 0x76, 0x53, 0x65, 0x72, 0x76, + 0x69, 0x63, 0x65, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x12, 0x19, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x00, 0x52, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x88, 0x01, 0x01, 0x12, 0x17, 0x0a, 0x04, 0x73, 0x74, 0x65, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x04, 0x73, 0x74, 0x65, 0x70, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x02, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x88, 0x01, 0x01, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x73, 0x74, - 0x65, 0x70, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x91, 0x01, 0x0a, - 0x1d, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x4d, 0x70, 0x6c, 0x73, - 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x12, 0x17, - 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x04, - 0x6e, 0x61, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, - 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, - 0x74, 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x0d, 0x48, 0x02, 0x52, 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x88, 0x01, - 0x01, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6f, - 0x66, 0x66, 0x73, 0x65, 0x74, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, - 0x22, 0xeb, 0x03, 0x0a, 0x14, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, - 0x4d, 0x70, 0x6c, 0x73, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x12, 0x42, 0x0a, 0x06, 0x63, 0x68, 0x6f, - 0x69, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x25, 0x2e, 0x6f, 0x74, 0x67, 0x2e, - 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x4d, 0x70, 0x6c, 0x73, 0x4c, - 0x61, 0x62, 0x65, 0x6c, 0x2e, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x2e, 0x45, 0x6e, 0x75, 0x6d, - 0x48, 0x00, 0x52, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, - 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x05, - 0x76, 0x61, 0x6c, 0x75, 0x65, 0x88, 0x01, 0x01, 0x12, 0x16, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, - 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0d, 0x52, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, - 0x12, 0x17, 0x0a, 0x04, 0x61, 0x75, 0x74, 0x6f, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x02, - 0x52, 0x04, 0x61, 0x75, 0x74, 0x6f, 0x88, 0x01, 0x01, 0x12, 0x3e, 0x0a, 0x09, 0x69, 0x6e, 0x63, - 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x6f, - 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x4d, 0x70, - 0x6c, 0x73, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, - 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x3e, 0x0a, 0x09, 0x64, 0x65, 0x63, - 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x6f, - 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x4d, 0x70, - 0x6c, 0x73, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, - 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x43, 0x0a, 0x0b, 0x6d, 0x65, 0x74, - 0x72, 0x69, 0x63, 0x5f, 0x74, 0x61, 0x67, 0x73, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x22, - 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, - 0x4d, 0x70, 0x6c, 0x73, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, - 0x61, 0x67, 0x52, 0x0a, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x73, 0x1a, 0x60, - 0x0a, 0x06, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x22, 0x56, 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, - 0x12, 0x0f, 0x0a, 0x0b, 0x75, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x10, - 0x00, 0x12, 0x09, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x10, 0x02, 0x12, 0x0a, 0x0a, 0x06, - 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x10, 0x03, 0x12, 0x08, 0x0a, 0x04, 0x61, 0x75, 0x74, 0x6f, - 0x10, 0x01, 0x12, 0x0d, 0x0a, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x10, - 0x04, 0x12, 0x0d, 0x0a, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x10, 0x05, - 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x42, 0x08, 0x0a, 0x06, 0x5f, - 0x76, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x61, 0x75, 0x74, 0x6f, 0x22, 0x90, - 0x01, 0x0a, 0x22, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x4d, 0x70, - 0x6c, 0x73, 0x54, 0x72, 0x61, 0x66, 0x66, 0x69, 0x63, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x43, 0x6f, - 0x75, 0x6e, 0x74, 0x65, 0x72, 0x12, 0x19, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x0d, 0x48, 0x00, 0x52, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x88, 0x01, 0x01, - 0x12, 0x17, 0x0a, 0x04, 0x73, 0x74, 0x65, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, - 0x52, 0x04, 0x73, 0x74, 0x65, 0x70, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x63, 0x6f, 0x75, - 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x02, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, - 0x74, 0x88, 0x01, 0x01, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x42, 0x07, - 0x0a, 0x05, 0x5f, 0x73, 0x74, 0x65, 0x70, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x63, 0x6f, 0x75, 0x6e, - 0x74, 0x22, 0x98, 0x01, 0x0a, 0x24, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, - 0x77, 0x4d, 0x70, 0x6c, 0x73, 0x54, 0x72, 0x61, 0x66, 0x66, 0x69, 0x63, 0x43, 0x6c, 0x61, 0x73, - 0x73, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x12, 0x17, 0x0a, 0x04, 0x6e, 0x61, - 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, - 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x88, 0x01, 0x01, - 0x12, 0x1b, 0x0a, 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, - 0x48, 0x02, 0x52, 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x88, 0x01, 0x01, 0x42, 0x07, 0x0a, - 0x05, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6f, 0x66, 0x66, 0x73, 0x65, - 0x74, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x22, 0xe2, 0x03, 0x0a, - 0x1b, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x4d, 0x70, 0x6c, 0x73, - 0x54, 0x72, 0x61, 0x66, 0x66, 0x69, 0x63, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x12, 0x49, 0x0a, 0x06, - 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2c, 0x2e, 0x6f, - 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x4d, 0x70, - 0x6c, 0x73, 0x54, 0x72, 0x61, 0x66, 0x66, 0x69, 0x63, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x2e, 0x43, - 0x68, 0x6f, 0x69, 0x63, 0x65, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x48, 0x00, 0x52, 0x06, 0x63, 0x68, - 0x6f, 0x69, 0x63, 0x65, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x88, - 0x01, 0x01, 0x12, 0x16, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, - 0x28, 0x0d, 0x52, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x12, 0x45, 0x0a, 0x09, 0x69, 0x6e, - 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, - 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x4d, - 0x70, 0x6c, 0x73, 0x54, 0x72, 0x61, 0x66, 0x66, 0x69, 0x63, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x43, - 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, - 0x74, 0x12, 0x45, 0x0a, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x06, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, - 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x4d, 0x70, 0x6c, 0x73, 0x54, 0x72, 0x61, 0x66, 0x66, 0x69, - 0x63, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, 0x64, - 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x4a, 0x0a, 0x0b, 0x6d, 0x65, 0x74, 0x72, - 0x69, 0x63, 0x5f, 0x74, 0x61, 0x67, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x29, 0x2e, - 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x4d, - 0x70, 0x6c, 0x73, 0x54, 0x72, 0x61, 0x66, 0x66, 0x69, 0x63, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x4d, - 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x52, 0x0a, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, - 0x54, 0x61, 0x67, 0x73, 0x1a, 0x56, 0x0a, 0x06, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x22, 0x4c, + 0x65, 0x70, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0xf2, 0x03, 0x0a, + 0x32, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x52, 0x53, 0x56, 0x50, + 0x50, 0x61, 0x74, 0x68, 0x53, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x54, 0x73, 0x70, 0x65, 0x63, 0x49, + 0x6e, 0x74, 0x53, 0x65, 0x72, 0x76, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x48, 0x65, 0x61, + 0x64, 0x65, 0x72, 0x12, 0x60, 0x0a, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x0e, 0x32, 0x43, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, + 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x52, 0x53, 0x56, 0x50, 0x50, 0x61, 0x74, 0x68, 0x53, 0x65, 0x6e, + 0x64, 0x65, 0x72, 0x54, 0x73, 0x70, 0x65, 0x63, 0x49, 0x6e, 0x74, 0x53, 0x65, 0x72, 0x76, 0x53, + 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x2e, 0x43, 0x68, 0x6f, + 0x69, 0x63, 0x65, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x48, 0x00, 0x52, 0x06, 0x63, 0x68, 0x6f, 0x69, + 0x63, 0x65, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x88, 0x01, 0x01, + 0x12, 0x16, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0d, + 0x52, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x12, 0x5c, 0x0a, 0x09, 0x69, 0x6e, 0x63, 0x72, + 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3e, 0x2e, 0x6f, 0x74, + 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x52, 0x53, 0x56, + 0x50, 0x50, 0x61, 0x74, 0x68, 0x53, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x54, 0x73, 0x70, 0x65, 0x63, + 0x49, 0x6e, 0x74, 0x53, 0x65, 0x72, 0x76, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x48, 0x65, + 0x61, 0x64, 0x65, 0x72, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, 0x69, 0x6e, 0x63, + 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x5c, 0x0a, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, + 0x65, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3e, 0x2e, 0x6f, 0x74, 0x67, 0x2e, + 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x52, 0x53, 0x56, 0x50, 0x50, + 0x61, 0x74, 0x68, 0x53, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x54, 0x73, 0x70, 0x65, 0x63, 0x49, 0x6e, + 0x74, 0x53, 0x65, 0x72, 0x76, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x48, 0x65, 0x61, 0x64, + 0x65, 0x72, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, + 0x6d, 0x65, 0x6e, 0x74, 0x1a, 0x56, 0x0a, 0x06, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x22, 0x4c, 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x0a, 0x0b, 0x75, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x10, 0x02, 0x12, 0x0a, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x10, 0x03, 0x12, 0x0d, 0x0a, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x10, 0x04, 0x12, 0x0d, 0x0a, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x10, 0x05, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x76, 0x61, 0x6c, 0x75, - 0x65, 0x22, 0x91, 0x01, 0x0a, 0x23, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, - 0x77, 0x4d, 0x70, 0x6c, 0x73, 0x42, 0x6f, 0x74, 0x74, 0x6f, 0x6d, 0x4f, 0x66, 0x53, 0x74, 0x61, - 0x63, 0x6b, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x12, 0x19, 0x0a, 0x05, 0x73, 0x74, 0x61, + 0x65, 0x22, 0xa1, 0x01, 0x0a, 0x33, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, + 0x77, 0x52, 0x53, 0x56, 0x50, 0x50, 0x61, 0x74, 0x68, 0x53, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x54, + 0x73, 0x70, 0x65, 0x63, 0x49, 0x6e, 0x74, 0x53, 0x65, 0x72, 0x76, 0x5a, 0x65, 0x72, 0x6f, 0x42, + 0x69, 0x74, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x12, 0x19, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x00, 0x52, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x88, 0x01, 0x01, 0x12, 0x17, 0x0a, 0x04, 0x73, 0x74, 0x65, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x04, 0x73, 0x74, 0x65, 0x70, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x02, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x88, 0x01, 0x01, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x73, 0x74, 0x65, 0x70, 0x42, 0x08, 0x0a, 0x06, 0x5f, - 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x99, 0x01, 0x0a, 0x25, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, - 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x4d, 0x70, 0x6c, 0x73, 0x42, 0x6f, 0x74, 0x74, 0x6f, 0x6d, 0x4f, - 0x66, 0x53, 0x74, 0x61, 0x63, 0x6b, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x12, - 0x17, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, - 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x6f, 0x66, 0x66, 0x73, - 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x06, 0x6f, 0x66, 0x66, 0x73, - 0x65, 0x74, 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x02, 0x52, 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x88, - 0x01, 0x01, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x42, 0x09, 0x0a, 0x07, 0x5f, - 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, - 0x68, 0x22, 0x93, 0x04, 0x0a, 0x1c, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, - 0x77, 0x4d, 0x70, 0x6c, 0x73, 0x42, 0x6f, 0x74, 0x74, 0x6f, 0x6d, 0x4f, 0x66, 0x53, 0x74, 0x61, - 0x63, 0x6b, 0x12, 0x4a, 0x0a, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x0e, 0x32, 0x2d, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, - 0x46, 0x6c, 0x6f, 0x77, 0x4d, 0x70, 0x6c, 0x73, 0x42, 0x6f, 0x74, 0x74, 0x6f, 0x6d, 0x4f, 0x66, - 0x53, 0x74, 0x61, 0x63, 0x6b, 0x2e, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x2e, 0x45, 0x6e, 0x75, - 0x6d, 0x48, 0x00, 0x52, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x88, 0x01, 0x01, 0x12, 0x19, - 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, - 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x88, 0x01, 0x01, 0x12, 0x16, 0x0a, 0x06, 0x76, 0x61, 0x6c, - 0x75, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0d, 0x52, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, - 0x73, 0x12, 0x17, 0x0a, 0x04, 0x61, 0x75, 0x74, 0x6f, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x48, - 0x02, 0x52, 0x04, 0x61, 0x75, 0x74, 0x6f, 0x88, 0x01, 0x01, 0x12, 0x46, 0x0a, 0x09, 0x69, 0x6e, - 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, - 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x4d, - 0x70, 0x6c, 0x73, 0x42, 0x6f, 0x74, 0x74, 0x6f, 0x6d, 0x4f, 0x66, 0x53, 0x74, 0x61, 0x63, 0x6b, - 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, - 0x6e, 0x74, 0x12, 0x46, 0x0a, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, - 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, - 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x4d, 0x70, 0x6c, 0x73, 0x42, 0x6f, 0x74, 0x74, 0x6f, - 0x6d, 0x4f, 0x66, 0x53, 0x74, 0x61, 0x63, 0x6b, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, - 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x4b, 0x0a, 0x0b, 0x6d, 0x65, - 0x74, 0x72, 0x69, 0x63, 0x5f, 0x74, 0x61, 0x67, 0x73, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, - 0x2a, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, - 0x77, 0x4d, 0x70, 0x6c, 0x73, 0x42, 0x6f, 0x74, 0x74, 0x6f, 0x6d, 0x4f, 0x66, 0x53, 0x74, 0x61, - 0x63, 0x6b, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x52, 0x0a, 0x6d, 0x65, 0x74, - 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x73, 0x1a, 0x60, 0x0a, 0x06, 0x43, 0x68, 0x6f, 0x69, 0x63, - 0x65, 0x22, 0x56, 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x0a, 0x0b, 0x75, 0x6e, 0x73, - 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, 0x76, 0x61, - 0x6c, 0x75, 0x65, 0x10, 0x02, 0x12, 0x0a, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x10, - 0x03, 0x12, 0x08, 0x0a, 0x04, 0x61, 0x75, 0x74, 0x6f, 0x10, 0x01, 0x12, 0x0d, 0x0a, 0x09, 0x69, - 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x10, 0x04, 0x12, 0x0d, 0x0a, 0x09, 0x64, 0x65, - 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x10, 0x05, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x63, 0x68, - 0x6f, 0x69, 0x63, 0x65, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x07, - 0x0a, 0x05, 0x5f, 0x61, 0x75, 0x74, 0x6f, 0x22, 0x8e, 0x01, 0x0a, 0x20, 0x50, 0x61, 0x74, 0x74, - 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x4d, 0x70, 0x6c, 0x73, 0x54, 0x69, 0x6d, 0x65, 0x54, - 0x6f, 0x4c, 0x69, 0x76, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x12, 0x19, 0x0a, 0x05, + 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0xda, 0x03, 0x0a, 0x2c, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, + 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x52, 0x53, 0x56, 0x50, 0x50, 0x61, 0x74, 0x68, 0x53, 0x65, 0x6e, + 0x64, 0x65, 0x72, 0x54, 0x73, 0x70, 0x65, 0x63, 0x49, 0x6e, 0x74, 0x53, 0x65, 0x72, 0x76, 0x5a, + 0x65, 0x72, 0x6f, 0x42, 0x69, 0x74, 0x12, 0x5a, 0x0a, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x3d, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, + 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x52, 0x53, 0x56, 0x50, 0x50, 0x61, 0x74, 0x68, + 0x53, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x54, 0x73, 0x70, 0x65, 0x63, 0x49, 0x6e, 0x74, 0x53, 0x65, + 0x72, 0x76, 0x5a, 0x65, 0x72, 0x6f, 0x42, 0x69, 0x74, 0x2e, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, + 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x48, 0x00, 0x52, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x88, + 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x0d, 0x48, 0x01, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x88, 0x01, 0x01, 0x12, 0x16, 0x0a, + 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0d, 0x52, 0x06, 0x76, + 0x61, 0x6c, 0x75, 0x65, 0x73, 0x12, 0x56, 0x0a, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, + 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x38, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, + 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x52, 0x53, 0x56, 0x50, 0x50, 0x61, + 0x74, 0x68, 0x53, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x54, 0x73, 0x70, 0x65, 0x63, 0x49, 0x6e, 0x74, + 0x53, 0x65, 0x72, 0x76, 0x5a, 0x65, 0x72, 0x6f, 0x42, 0x69, 0x74, 0x43, 0x6f, 0x75, 0x6e, 0x74, + 0x65, 0x72, 0x52, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x56, 0x0a, + 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x38, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, + 0x6f, 0x77, 0x52, 0x53, 0x56, 0x50, 0x50, 0x61, 0x74, 0x68, 0x53, 0x65, 0x6e, 0x64, 0x65, 0x72, + 0x54, 0x73, 0x70, 0x65, 0x63, 0x49, 0x6e, 0x74, 0x53, 0x65, 0x72, 0x76, 0x5a, 0x65, 0x72, 0x6f, + 0x42, 0x69, 0x74, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, 0x64, 0x65, 0x63, 0x72, + 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x1a, 0x56, 0x0a, 0x06, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x22, + 0x4c, 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x0a, 0x0b, 0x75, 0x6e, 0x73, 0x70, 0x65, + 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, + 0x65, 0x10, 0x02, 0x12, 0x0a, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x10, 0x03, 0x12, + 0x0d, 0x0a, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x10, 0x04, 0x12, 0x0d, + 0x0a, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x10, 0x05, 0x42, 0x09, 0x0a, + 0x07, 0x5f, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x76, 0x61, 0x6c, + 0x75, 0x65, 0x22, 0xa3, 0x01, 0x0a, 0x35, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, + 0x6f, 0x77, 0x52, 0x53, 0x56, 0x50, 0x50, 0x61, 0x74, 0x68, 0x53, 0x65, 0x6e, 0x64, 0x65, 0x72, + 0x54, 0x73, 0x70, 0x65, 0x63, 0x49, 0x6e, 0x74, 0x53, 0x65, 0x72, 0x76, 0x52, 0x65, 0x73, 0x65, + 0x72, 0x76, 0x65, 0x64, 0x32, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x12, 0x19, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x00, 0x52, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x88, 0x01, 0x01, 0x12, 0x17, 0x0a, 0x04, 0x73, 0x74, 0x65, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x04, 0x73, 0x74, 0x65, 0x70, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x02, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x88, 0x01, 0x01, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x73, 0x74, 0x65, 0x70, 0x42, 0x08, - 0x0a, 0x06, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x96, 0x01, 0x0a, 0x22, 0x50, 0x61, 0x74, - 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x4d, 0x70, 0x6c, 0x73, 0x54, 0x69, 0x6d, 0x65, - 0x54, 0x6f, 0x4c, 0x69, 0x76, 0x65, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x12, - 0x17, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, - 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x6f, 0x66, 0x66, 0x73, - 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x06, 0x6f, 0x66, 0x66, 0x73, - 0x65, 0x74, 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x02, 0x52, 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x88, - 0x01, 0x01, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x42, 0x09, 0x0a, 0x07, 0x5f, - 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, - 0x68, 0x22, 0xd8, 0x03, 0x0a, 0x19, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, - 0x77, 0x4d, 0x70, 0x6c, 0x73, 0x54, 0x69, 0x6d, 0x65, 0x54, 0x6f, 0x4c, 0x69, 0x76, 0x65, 0x12, - 0x47, 0x0a, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, - 0x2a, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, - 0x77, 0x4d, 0x70, 0x6c, 0x73, 0x54, 0x69, 0x6d, 0x65, 0x54, 0x6f, 0x4c, 0x69, 0x76, 0x65, 0x2e, + 0x0a, 0x06, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0xe2, 0x03, 0x0a, 0x2e, 0x50, 0x61, 0x74, + 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x52, 0x53, 0x56, 0x50, 0x50, 0x61, 0x74, 0x68, + 0x53, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x54, 0x73, 0x70, 0x65, 0x63, 0x49, 0x6e, 0x74, 0x53, 0x65, + 0x72, 0x76, 0x52, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x64, 0x32, 0x12, 0x5c, 0x0a, 0x06, 0x63, + 0x68, 0x6f, 0x69, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x3f, 0x2e, 0x6f, 0x74, + 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x52, 0x53, 0x56, + 0x50, 0x50, 0x61, 0x74, 0x68, 0x53, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x54, 0x73, 0x70, 0x65, 0x63, + 0x49, 0x6e, 0x74, 0x53, 0x65, 0x72, 0x76, 0x52, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x64, 0x32, + 0x2e, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x48, 0x00, 0x52, 0x06, + 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x76, 0x61, 0x6c, + 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, + 0x65, 0x88, 0x01, 0x01, 0x12, 0x16, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x03, + 0x20, 0x03, 0x28, 0x0d, 0x52, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x12, 0x58, 0x0a, 0x09, + 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x3a, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, + 0x77, 0x52, 0x53, 0x56, 0x50, 0x50, 0x61, 0x74, 0x68, 0x53, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x54, + 0x73, 0x70, 0x65, 0x63, 0x49, 0x6e, 0x74, 0x53, 0x65, 0x72, 0x76, 0x52, 0x65, 0x73, 0x65, 0x72, + 0x76, 0x65, 0x64, 0x32, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, 0x69, 0x6e, 0x63, + 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x58, 0x0a, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, + 0x65, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3a, 0x2e, 0x6f, 0x74, 0x67, 0x2e, + 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x52, 0x53, 0x56, 0x50, 0x50, + 0x61, 0x74, 0x68, 0x53, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x54, 0x73, 0x70, 0x65, 0x63, 0x49, 0x6e, + 0x74, 0x53, 0x65, 0x72, 0x76, 0x52, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x64, 0x32, 0x43, 0x6f, + 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, + 0x1a, 0x56, 0x0a, 0x06, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x22, 0x4c, 0x0a, 0x04, 0x45, 0x6e, + 0x75, 0x6d, 0x12, 0x0f, 0x0a, 0x0b, 0x75, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, + 0x64, 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x10, 0x02, 0x12, 0x0a, + 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x10, 0x03, 0x12, 0x0d, 0x0a, 0x09, 0x69, 0x6e, + 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x10, 0x04, 0x12, 0x0d, 0x0a, 0x09, 0x64, 0x65, 0x63, + 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x10, 0x05, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x63, 0x68, 0x6f, + 0x69, 0x63, 0x65, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0xad, 0x01, + 0x0a, 0x3f, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x52, 0x53, 0x56, + 0x50, 0x50, 0x61, 0x74, 0x68, 0x53, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x54, 0x73, 0x70, 0x65, 0x63, + 0x49, 0x6e, 0x74, 0x53, 0x65, 0x72, 0x76, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x4f, 0x66, 0x53, + 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x44, 0x61, 0x74, 0x61, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, + 0x72, 0x12, 0x19, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, + 0x48, 0x00, 0x52, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x88, 0x01, 0x01, 0x12, 0x17, 0x0a, 0x04, + 0x73, 0x74, 0x65, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x04, 0x73, 0x74, + 0x65, 0x70, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x0d, 0x48, 0x02, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x88, 0x01, 0x01, + 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x73, + 0x74, 0x65, 0x70, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x8a, 0x04, + 0x0a, 0x38, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x52, 0x53, 0x56, + 0x50, 0x50, 0x61, 0x74, 0x68, 0x53, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x54, 0x73, 0x70, 0x65, 0x63, + 0x49, 0x6e, 0x74, 0x53, 0x65, 0x72, 0x76, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x4f, 0x66, 0x53, + 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x44, 0x61, 0x74, 0x61, 0x12, 0x66, 0x0a, 0x06, 0x63, 0x68, + 0x6f, 0x69, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x49, 0x2e, 0x6f, 0x74, 0x67, + 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x52, 0x53, 0x56, 0x50, + 0x50, 0x61, 0x74, 0x68, 0x53, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x54, 0x73, 0x70, 0x65, 0x63, 0x49, + 0x6e, 0x74, 0x53, 0x65, 0x72, 0x76, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x4f, 0x66, 0x53, 0x65, + 0x72, 0x76, 0x69, 0x63, 0x65, 0x44, 0x61, 0x74, 0x61, 0x2e, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, + 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x48, 0x00, 0x52, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x88, + 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x0d, 0x48, 0x01, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x88, 0x01, 0x01, 0x12, 0x16, 0x0a, + 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0d, 0x52, 0x06, 0x76, + 0x61, 0x6c, 0x75, 0x65, 0x73, 0x12, 0x62, 0x0a, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, + 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x44, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, + 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x52, 0x53, 0x56, 0x50, 0x50, 0x61, + 0x74, 0x68, 0x53, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x54, 0x73, 0x70, 0x65, 0x63, 0x49, 0x6e, 0x74, + 0x53, 0x65, 0x72, 0x76, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x4f, 0x66, 0x53, 0x65, 0x72, 0x76, + 0x69, 0x63, 0x65, 0x44, 0x61, 0x74, 0x61, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, + 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x62, 0x0a, 0x09, 0x64, 0x65, 0x63, + 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x44, 0x2e, 0x6f, + 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x52, 0x53, + 0x56, 0x50, 0x50, 0x61, 0x74, 0x68, 0x53, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x54, 0x73, 0x70, 0x65, + 0x63, 0x49, 0x6e, 0x74, 0x53, 0x65, 0x72, 0x76, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x4f, 0x66, + 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x44, 0x61, 0x74, 0x61, 0x43, 0x6f, 0x75, 0x6e, 0x74, + 0x65, 0x72, 0x52, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x1a, 0x56, 0x0a, + 0x06, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x22, 0x4c, 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, + 0x0f, 0x0a, 0x0b, 0x75, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x10, 0x00, + 0x12, 0x09, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x10, 0x02, 0x12, 0x0a, 0x0a, 0x06, 0x76, + 0x61, 0x6c, 0x75, 0x65, 0x73, 0x10, 0x03, 0x12, 0x0d, 0x0a, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, + 0x6d, 0x65, 0x6e, 0x74, 0x10, 0x04, 0x12, 0x0d, 0x0a, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, + 0x65, 0x6e, 0x74, 0x10, 0x05, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, + 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0xb5, 0x01, 0x0a, 0x47, 0x50, + 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x52, 0x53, 0x56, 0x50, 0x50, 0x61, + 0x74, 0x68, 0x53, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x54, 0x73, 0x70, 0x65, 0x63, 0x49, 0x6e, 0x74, + 0x53, 0x65, 0x72, 0x76, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x49, 0x64, 0x54, + 0x6f, 0x6b, 0x65, 0x6e, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x54, 0x73, 0x70, 0x65, 0x63, 0x43, + 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x12, 0x19, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x00, 0x52, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x88, 0x01, + 0x01, 0x12, 0x17, 0x0a, 0x04, 0x73, 0x74, 0x65, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, + 0x01, 0x52, 0x04, 0x73, 0x74, 0x65, 0x70, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x63, 0x6f, + 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x02, 0x52, 0x05, 0x63, 0x6f, 0x75, + 0x6e, 0x74, 0x88, 0x01, 0x01, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x42, + 0x07, 0x0a, 0x05, 0x5f, 0x73, 0x74, 0x65, 0x70, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x63, 0x6f, 0x75, + 0x6e, 0x74, 0x22, 0xaa, 0x04, 0x0a, 0x40, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, + 0x6f, 0x77, 0x52, 0x53, 0x56, 0x50, 0x50, 0x61, 0x74, 0x68, 0x53, 0x65, 0x6e, 0x64, 0x65, 0x72, + 0x54, 0x73, 0x70, 0x65, 0x63, 0x49, 0x6e, 0x74, 0x53, 0x65, 0x72, 0x76, 0x50, 0x61, 0x72, 0x61, + 0x6d, 0x65, 0x74, 0x65, 0x72, 0x49, 0x64, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x42, 0x75, 0x63, 0x6b, + 0x65, 0x74, 0x54, 0x73, 0x70, 0x65, 0x63, 0x12, 0x6e, 0x0a, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, + 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x51, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, + 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x52, 0x53, 0x56, 0x50, 0x50, 0x61, 0x74, + 0x68, 0x53, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x54, 0x73, 0x70, 0x65, 0x63, 0x49, 0x6e, 0x74, 0x53, + 0x65, 0x72, 0x76, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x49, 0x64, 0x54, 0x6f, + 0x6b, 0x65, 0x6e, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x54, 0x73, 0x70, 0x65, 0x63, 0x2e, 0x43, + 0x68, 0x6f, 0x69, 0x63, 0x65, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x48, 0x00, 0x52, 0x06, 0x63, 0x68, + 0x6f, 0x69, 0x63, 0x65, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x88, + 0x01, 0x01, 0x12, 0x16, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, + 0x28, 0x0d, 0x52, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x12, 0x6a, 0x0a, 0x09, 0x69, 0x6e, + 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x4c, 0x2e, + 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x52, + 0x53, 0x56, 0x50, 0x50, 0x61, 0x74, 0x68, 0x53, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x54, 0x73, 0x70, + 0x65, 0x63, 0x49, 0x6e, 0x74, 0x53, 0x65, 0x72, 0x76, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, + 0x65, 0x72, 0x49, 0x64, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x54, + 0x73, 0x70, 0x65, 0x63, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, 0x69, 0x6e, 0x63, + 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x6a, 0x0a, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, + 0x65, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x4c, 0x2e, 0x6f, 0x74, 0x67, 0x2e, + 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x52, 0x53, 0x56, 0x50, 0x50, + 0x61, 0x74, 0x68, 0x53, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x54, 0x73, 0x70, 0x65, 0x63, 0x49, 0x6e, + 0x74, 0x53, 0x65, 0x72, 0x76, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x49, 0x64, + 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x54, 0x73, 0x70, 0x65, 0x63, + 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, + 0x6e, 0x74, 0x1a, 0x56, 0x0a, 0x06, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x22, 0x4c, 0x0a, 0x04, + 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x0a, 0x0b, 0x75, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, + 0x69, 0x65, 0x64, 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x10, 0x02, + 0x12, 0x0a, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x10, 0x03, 0x12, 0x0d, 0x0a, 0x09, + 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x10, 0x04, 0x12, 0x0d, 0x0a, 0x09, 0x64, + 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x10, 0x05, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x63, + 0x68, 0x6f, 0x69, 0x63, 0x65, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, + 0xaa, 0x01, 0x0a, 0x3c, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x52, + 0x53, 0x56, 0x50, 0x50, 0x61, 0x74, 0x68, 0x53, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x54, 0x73, 0x70, + 0x65, 0x63, 0x49, 0x6e, 0x74, 0x53, 0x65, 0x72, 0x76, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, + 0x65, 0x72, 0x31, 0x32, 0x37, 0x46, 0x6c, 0x61, 0x67, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, + 0x12, 0x19, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x48, + 0x00, 0x52, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x88, 0x01, 0x01, 0x12, 0x17, 0x0a, 0x04, 0x73, + 0x74, 0x65, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x04, 0x73, 0x74, 0x65, + 0x70, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x0d, 0x48, 0x02, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x88, 0x01, 0x01, 0x42, + 0x08, 0x0a, 0x06, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x73, 0x74, + 0x65, 0x70, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0xfe, 0x03, 0x0a, + 0x35, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x52, 0x53, 0x56, 0x50, + 0x50, 0x61, 0x74, 0x68, 0x53, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x54, 0x73, 0x70, 0x65, 0x63, 0x49, + 0x6e, 0x74, 0x53, 0x65, 0x72, 0x76, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x31, + 0x32, 0x37, 0x46, 0x6c, 0x61, 0x67, 0x12, 0x63, 0x0a, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x46, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, + 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x52, 0x53, 0x56, 0x50, 0x50, 0x61, 0x74, 0x68, + 0x53, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x54, 0x73, 0x70, 0x65, 0x63, 0x49, 0x6e, 0x74, 0x53, 0x65, + 0x72, 0x76, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x31, 0x32, 0x37, 0x46, 0x6c, + 0x61, 0x67, 0x2e, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x48, 0x00, + 0x52, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x76, + 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x05, 0x76, 0x61, + 0x6c, 0x75, 0x65, 0x88, 0x01, 0x01, 0x12, 0x16, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, + 0x18, 0x03, 0x20, 0x03, 0x28, 0x0d, 0x52, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x12, 0x5f, + 0x0a, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x41, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, + 0x6c, 0x6f, 0x77, 0x52, 0x53, 0x56, 0x50, 0x50, 0x61, 0x74, 0x68, 0x53, 0x65, 0x6e, 0x64, 0x65, + 0x72, 0x54, 0x73, 0x70, 0x65, 0x63, 0x49, 0x6e, 0x74, 0x53, 0x65, 0x72, 0x76, 0x50, 0x61, 0x72, + 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x31, 0x32, 0x37, 0x46, 0x6c, 0x61, 0x67, 0x43, 0x6f, 0x75, + 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, + 0x5f, 0x0a, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x41, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, + 0x46, 0x6c, 0x6f, 0x77, 0x52, 0x53, 0x56, 0x50, 0x50, 0x61, 0x74, 0x68, 0x53, 0x65, 0x6e, 0x64, + 0x65, 0x72, 0x54, 0x73, 0x70, 0x65, 0x63, 0x49, 0x6e, 0x74, 0x53, 0x65, 0x72, 0x76, 0x50, 0x61, + 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x31, 0x32, 0x37, 0x46, 0x6c, 0x61, 0x67, 0x43, 0x6f, + 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, + 0x1a, 0x56, 0x0a, 0x06, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x22, 0x4c, 0x0a, 0x04, 0x45, 0x6e, + 0x75, 0x6d, 0x12, 0x0f, 0x0a, 0x0b, 0x75, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, + 0x64, 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x10, 0x02, 0x12, 0x0a, + 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x10, 0x03, 0x12, 0x0d, 0x0a, 0x09, 0x69, 0x6e, + 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x10, 0x04, 0x12, 0x0d, 0x0a, 0x09, 0x64, 0x65, 0x63, + 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x10, 0x05, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x63, 0x68, 0x6f, + 0x69, 0x63, 0x65, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0xac, 0x01, + 0x0a, 0x3e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x52, 0x53, 0x56, + 0x50, 0x50, 0x61, 0x74, 0x68, 0x53, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x54, 0x73, 0x70, 0x65, 0x63, + 0x49, 0x6e, 0x74, 0x53, 0x65, 0x72, 0x76, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, + 0x31, 0x32, 0x37, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, + 0x12, 0x19, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x48, + 0x00, 0x52, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x88, 0x01, 0x01, 0x12, 0x17, 0x0a, 0x04, 0x73, + 0x74, 0x65, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x04, 0x73, 0x74, 0x65, + 0x70, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x0d, 0x48, 0x02, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x88, 0x01, 0x01, 0x42, + 0x08, 0x0a, 0x06, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x73, 0x74, + 0x65, 0x70, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x86, 0x04, 0x0a, + 0x37, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x52, 0x53, 0x56, 0x50, + 0x50, 0x61, 0x74, 0x68, 0x53, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x54, 0x73, 0x70, 0x65, 0x63, 0x49, + 0x6e, 0x74, 0x53, 0x65, 0x72, 0x76, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x31, + 0x32, 0x37, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x12, 0x65, 0x0a, 0x06, 0x63, 0x68, 0x6f, 0x69, + 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x48, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, + 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x52, 0x53, 0x56, 0x50, 0x50, 0x61, + 0x74, 0x68, 0x53, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x54, 0x73, 0x70, 0x65, 0x63, 0x49, 0x6e, 0x74, + 0x53, 0x65, 0x72, 0x76, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x31, 0x32, 0x37, + 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x2e, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x2e, 0x45, 0x6e, + 0x75, 0x6d, 0x48, 0x00, 0x52, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x88, 0x01, 0x01, 0x12, + 0x19, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, + 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x88, 0x01, 0x01, 0x12, 0x16, 0x0a, 0x06, 0x76, 0x61, + 0x6c, 0x75, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0d, 0x52, 0x06, 0x76, 0x61, 0x6c, 0x75, + 0x65, 0x73, 0x12, 0x61, 0x0a, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, + 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x43, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, + 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x52, 0x53, 0x56, 0x50, 0x50, 0x61, 0x74, 0x68, 0x53, + 0x65, 0x6e, 0x64, 0x65, 0x72, 0x54, 0x73, 0x70, 0x65, 0x63, 0x49, 0x6e, 0x74, 0x53, 0x65, 0x72, + 0x76, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x31, 0x32, 0x37, 0x4c, 0x65, 0x6e, + 0x67, 0x74, 0x68, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, 0x69, 0x6e, 0x63, 0x72, + 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x61, 0x0a, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, + 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x43, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, + 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x52, 0x53, 0x56, 0x50, 0x50, 0x61, + 0x74, 0x68, 0x53, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x54, 0x73, 0x70, 0x65, 0x63, 0x49, 0x6e, 0x74, + 0x53, 0x65, 0x72, 0x76, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x31, 0x32, 0x37, + 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, 0x64, + 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x1a, 0x56, 0x0a, 0x06, 0x43, 0x68, 0x6f, 0x69, + 0x63, 0x65, 0x22, 0x4c, 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x0a, 0x0b, 0x75, 0x6e, + 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, 0x76, + 0x61, 0x6c, 0x75, 0x65, 0x10, 0x02, 0x12, 0x0a, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, + 0x10, 0x03, 0x12, 0x0d, 0x0a, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x10, + 0x04, 0x12, 0x0d, 0x0a, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x10, 0x05, + 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x42, 0x08, 0x0a, 0x06, 0x5f, + 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0xac, 0x01, 0x0a, 0x3e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, + 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x52, 0x53, 0x56, 0x50, 0x50, 0x61, 0x74, 0x68, 0x53, 0x65, 0x6e, + 0x64, 0x65, 0x72, 0x54, 0x73, 0x70, 0x65, 0x63, 0x49, 0x6e, 0x74, 0x53, 0x65, 0x72, 0x76, 0x4d, + 0x69, 0x6e, 0x69, 0x6d, 0x75, 0x6d, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x65, 0x64, 0x55, 0x6e, 0x69, + 0x74, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x12, 0x19, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x72, + 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x00, 0x52, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, + 0x88, 0x01, 0x01, 0x12, 0x17, 0x0a, 0x04, 0x73, 0x74, 0x65, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x0d, 0x48, 0x01, 0x52, 0x04, 0x73, 0x74, 0x65, 0x70, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, + 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x02, 0x52, 0x05, 0x63, + 0x6f, 0x75, 0x6e, 0x74, 0x88, 0x01, 0x01, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x73, 0x74, 0x61, 0x72, + 0x74, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x73, 0x74, 0x65, 0x70, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x63, + 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x86, 0x04, 0x0a, 0x37, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, + 0x46, 0x6c, 0x6f, 0x77, 0x52, 0x53, 0x56, 0x50, 0x50, 0x61, 0x74, 0x68, 0x53, 0x65, 0x6e, 0x64, + 0x65, 0x72, 0x54, 0x73, 0x70, 0x65, 0x63, 0x49, 0x6e, 0x74, 0x53, 0x65, 0x72, 0x76, 0x4d, 0x69, + 0x6e, 0x69, 0x6d, 0x75, 0x6d, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x65, 0x64, 0x55, 0x6e, 0x69, 0x74, + 0x12, 0x65, 0x0a, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, + 0x32, 0x48, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, + 0x6f, 0x77, 0x52, 0x53, 0x56, 0x50, 0x50, 0x61, 0x74, 0x68, 0x53, 0x65, 0x6e, 0x64, 0x65, 0x72, + 0x54, 0x73, 0x70, 0x65, 0x63, 0x49, 0x6e, 0x74, 0x53, 0x65, 0x72, 0x76, 0x4d, 0x69, 0x6e, 0x69, + 0x6d, 0x75, 0x6d, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x65, 0x64, 0x55, 0x6e, 0x69, 0x74, 0x2e, 0x43, + 0x68, 0x6f, 0x69, 0x63, 0x65, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x48, 0x00, 0x52, 0x06, 0x63, 0x68, + 0x6f, 0x69, 0x63, 0x65, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x88, + 0x01, 0x01, 0x12, 0x16, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, + 0x28, 0x0d, 0x52, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x12, 0x61, 0x0a, 0x09, 0x69, 0x6e, + 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x43, 0x2e, + 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x52, + 0x53, 0x56, 0x50, 0x50, 0x61, 0x74, 0x68, 0x53, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x54, 0x73, 0x70, + 0x65, 0x63, 0x49, 0x6e, 0x74, 0x53, 0x65, 0x72, 0x76, 0x4d, 0x69, 0x6e, 0x69, 0x6d, 0x75, 0x6d, + 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x65, 0x64, 0x55, 0x6e, 0x69, 0x74, 0x43, 0x6f, 0x75, 0x6e, 0x74, + 0x65, 0x72, 0x52, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x61, 0x0a, + 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x43, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, + 0x6f, 0x77, 0x52, 0x53, 0x56, 0x50, 0x50, 0x61, 0x74, 0x68, 0x53, 0x65, 0x6e, 0x64, 0x65, 0x72, + 0x54, 0x73, 0x70, 0x65, 0x63, 0x49, 0x6e, 0x74, 0x53, 0x65, 0x72, 0x76, 0x4d, 0x69, 0x6e, 0x69, + 0x6d, 0x75, 0x6d, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x65, 0x64, 0x55, 0x6e, 0x69, 0x74, 0x43, 0x6f, + 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, + 0x1a, 0x56, 0x0a, 0x06, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x22, 0x4c, 0x0a, 0x04, 0x45, 0x6e, + 0x75, 0x6d, 0x12, 0x0f, 0x0a, 0x0b, 0x75, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, + 0x64, 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x10, 0x02, 0x12, 0x0a, + 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x10, 0x03, 0x12, 0x0d, 0x0a, 0x09, 0x69, 0x6e, + 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x10, 0x04, 0x12, 0x0d, 0x0a, 0x09, 0x64, 0x65, 0x63, + 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x10, 0x05, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x63, 0x68, 0x6f, + 0x69, 0x63, 0x65, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0xab, 0x01, + 0x0a, 0x3d, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x52, 0x53, 0x56, + 0x50, 0x50, 0x61, 0x74, 0x68, 0x53, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x54, 0x73, 0x70, 0x65, 0x63, + 0x49, 0x6e, 0x74, 0x53, 0x65, 0x72, 0x76, 0x4d, 0x61, 0x78, 0x69, 0x6d, 0x75, 0x6d, 0x50, 0x61, + 0x63, 0x6b, 0x65, 0x74, 0x53, 0x69, 0x7a, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x12, + 0x19, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x00, + 0x52, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x88, 0x01, 0x01, 0x12, 0x17, 0x0a, 0x04, 0x73, 0x74, + 0x65, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x04, 0x73, 0x74, 0x65, 0x70, + 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x0d, 0x48, 0x02, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x88, 0x01, 0x01, 0x42, 0x08, + 0x0a, 0x06, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x73, 0x74, 0x65, + 0x70, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x82, 0x04, 0x0a, 0x36, + 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x52, 0x53, 0x56, 0x50, 0x50, + 0x61, 0x74, 0x68, 0x53, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x54, 0x73, 0x70, 0x65, 0x63, 0x49, 0x6e, + 0x74, 0x53, 0x65, 0x72, 0x76, 0x4d, 0x61, 0x78, 0x69, 0x6d, 0x75, 0x6d, 0x50, 0x61, 0x63, 0x6b, + 0x65, 0x74, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x64, 0x0a, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x47, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, + 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x52, 0x53, 0x56, 0x50, 0x50, 0x61, 0x74, 0x68, + 0x53, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x54, 0x73, 0x70, 0x65, 0x63, 0x49, 0x6e, 0x74, 0x53, 0x65, + 0x72, 0x76, 0x4d, 0x61, 0x78, 0x69, 0x6d, 0x75, 0x6d, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x53, + 0x69, 0x7a, 0x65, 0x2e, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x48, + 0x00, 0x52, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, + 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x05, 0x76, + 0x61, 0x6c, 0x75, 0x65, 0x88, 0x01, 0x01, 0x12, 0x16, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, + 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0d, 0x52, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x12, + 0x60, 0x0a, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x42, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, + 0x46, 0x6c, 0x6f, 0x77, 0x52, 0x53, 0x56, 0x50, 0x50, 0x61, 0x74, 0x68, 0x53, 0x65, 0x6e, 0x64, + 0x65, 0x72, 0x54, 0x73, 0x70, 0x65, 0x63, 0x49, 0x6e, 0x74, 0x53, 0x65, 0x72, 0x76, 0x4d, 0x61, + 0x78, 0x69, 0x6d, 0x75, 0x6d, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x53, 0x69, 0x7a, 0x65, 0x43, + 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, + 0x74, 0x12, 0x60, 0x0a, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x06, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x42, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, + 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x52, 0x53, 0x56, 0x50, 0x50, 0x61, 0x74, 0x68, 0x53, 0x65, + 0x6e, 0x64, 0x65, 0x72, 0x54, 0x73, 0x70, 0x65, 0x63, 0x49, 0x6e, 0x74, 0x53, 0x65, 0x72, 0x76, + 0x4d, 0x61, 0x78, 0x69, 0x6d, 0x75, 0x6d, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x53, 0x69, 0x7a, + 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, + 0x65, 0x6e, 0x74, 0x1a, 0x56, 0x0a, 0x06, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x22, 0x4c, 0x0a, + 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x0a, 0x0b, 0x75, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, + 0x66, 0x69, 0x65, 0x64, 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x10, + 0x02, 0x12, 0x0a, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x10, 0x03, 0x12, 0x0d, 0x0a, + 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x10, 0x04, 0x12, 0x0d, 0x0a, 0x09, + 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x10, 0x05, 0x42, 0x09, 0x0a, 0x07, 0x5f, + 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, + 0x22, 0xae, 0x01, 0x0a, 0x40, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, + 0x52, 0x53, 0x56, 0x50, 0x50, 0x61, 0x74, 0x68, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x52, 0x6f, + 0x75, 0x74, 0x65, 0x54, 0x79, 0x70, 0x65, 0x31, 0x49, 0x70, 0x76, 0x34, 0x41, 0x64, 0x64, 0x72, + 0x65, 0x73, 0x73, 0x49, 0x70, 0x76, 0x34, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x43, 0x6f, + 0x75, 0x6e, 0x74, 0x65, 0x72, 0x12, 0x19, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x88, 0x01, 0x01, + 0x12, 0x17, 0x0a, 0x04, 0x73, 0x74, 0x65, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, + 0x52, 0x04, 0x73, 0x74, 0x65, 0x70, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x63, 0x6f, 0x75, + 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x02, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, + 0x74, 0x88, 0x01, 0x01, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x42, 0x07, + 0x0a, 0x05, 0x5f, 0x73, 0x74, 0x65, 0x70, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x63, 0x6f, 0x75, 0x6e, + 0x74, 0x22, 0x8e, 0x04, 0x0a, 0x39, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, + 0x77, 0x52, 0x53, 0x56, 0x50, 0x50, 0x61, 0x74, 0x68, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x52, + 0x6f, 0x75, 0x74, 0x65, 0x54, 0x79, 0x70, 0x65, 0x31, 0x49, 0x70, 0x76, 0x34, 0x41, 0x64, 0x64, + 0x72, 0x65, 0x73, 0x73, 0x49, 0x70, 0x76, 0x34, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, + 0x67, 0x0a, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, + 0x4a, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, + 0x77, 0x52, 0x53, 0x56, 0x50, 0x50, 0x61, 0x74, 0x68, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x52, + 0x6f, 0x75, 0x74, 0x65, 0x54, 0x79, 0x70, 0x65, 0x31, 0x49, 0x70, 0x76, 0x34, 0x41, 0x64, 0x64, + 0x72, 0x65, 0x73, 0x73, 0x49, 0x70, 0x76, 0x34, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x2e, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x48, 0x00, 0x52, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, - 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, + 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x88, 0x01, 0x01, 0x12, 0x16, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x03, 0x20, - 0x03, 0x28, 0x0d, 0x52, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x12, 0x43, 0x0a, 0x09, 0x69, - 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, + 0x03, 0x28, 0x09, 0x52, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x12, 0x63, 0x0a, 0x09, 0x69, + 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x45, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, - 0x4d, 0x70, 0x6c, 0x73, 0x54, 0x69, 0x6d, 0x65, 0x54, 0x6f, 0x4c, 0x69, 0x76, 0x65, 0x43, 0x6f, + 0x52, 0x53, 0x56, 0x50, 0x50, 0x61, 0x74, 0x68, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x52, 0x6f, + 0x75, 0x74, 0x65, 0x54, 0x79, 0x70, 0x65, 0x31, 0x49, 0x70, 0x76, 0x34, 0x41, 0x64, 0x64, 0x72, + 0x65, 0x73, 0x73, 0x49, 0x70, 0x76, 0x34, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, - 0x12, 0x43, 0x0a, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x06, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, - 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x4d, 0x70, 0x6c, 0x73, 0x54, 0x69, 0x6d, 0x65, 0x54, 0x6f, 0x4c, - 0x69, 0x76, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, 0x64, 0x65, 0x63, 0x72, - 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x48, 0x0a, 0x0b, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x5f, - 0x74, 0x61, 0x67, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x6f, 0x74, 0x67, - 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x4d, 0x70, 0x6c, 0x73, - 0x54, 0x69, 0x6d, 0x65, 0x54, 0x6f, 0x4c, 0x69, 0x76, 0x65, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, - 0x54, 0x61, 0x67, 0x52, 0x0a, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x61, 0x67, 0x73, 0x1a, - 0x56, 0x0a, 0x06, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x22, 0x4c, 0x0a, 0x04, 0x45, 0x6e, 0x75, - 0x6d, 0x12, 0x0f, 0x0a, 0x0b, 0x75, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, - 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x10, 0x02, 0x12, 0x0a, 0x0a, - 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x10, 0x03, 0x12, 0x0d, 0x0a, 0x09, 0x69, 0x6e, 0x63, - 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x10, 0x04, 0x12, 0x0d, 0x0a, 0x09, 0x64, 0x65, 0x63, 0x72, - 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x10, 0x05, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x63, 0x68, 0x6f, 0x69, - 0x63, 0x65, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0xb9, 0x01, 0x0a, - 0x07, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x2d, 0x0a, 0x10, 0x61, 0x70, 0x69, 0x5f, - 0x73, 0x70, 0x65, 0x63, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x48, 0x00, 0x52, 0x0e, 0x61, 0x70, 0x69, 0x53, 0x70, 0x65, 0x63, 0x56, 0x65, 0x72, - 0x73, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x12, 0x24, 0x0a, 0x0b, 0x73, 0x64, 0x6b, 0x5f, 0x76, - 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, 0x52, 0x0a, - 0x73, 0x64, 0x6b, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x12, 0x24, 0x0a, - 0x0b, 0x61, 0x70, 0x70, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x09, 0x48, 0x02, 0x52, 0x0a, 0x61, 0x70, 0x70, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, - 0x88, 0x01, 0x01, 0x42, 0x13, 0x0a, 0x11, 0x5f, 0x61, 0x70, 0x69, 0x5f, 0x73, 0x70, 0x65, 0x63, - 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x73, 0x64, 0x6b, - 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x61, 0x70, 0x70, - 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0x31, 0x0a, 0x07, 0x53, 0x75, 0x63, 0x63, - 0x65, 0x73, 0x73, 0x12, 0x26, 0x0a, 0x07, 0x77, 0x61, 0x72, 0x6e, 0x69, 0x6e, 0x67, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x57, 0x61, 0x72, 0x6e, 0x69, - 0x6e, 0x67, 0x52, 0x07, 0x77, 0x61, 0x72, 0x6e, 0x69, 0x6e, 0x67, 0x22, 0x2b, 0x0a, 0x07, 0x46, - 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x12, 0x20, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0a, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x45, 0x72, 0x72, 0x6f, - 0x72, 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x22, 0x37, 0x0a, 0x10, 0x53, 0x65, 0x74, 0x43, - 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x23, 0x0a, 0x06, - 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x6f, - 0x74, 0x67, 0x2e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, - 0x67, 0x22, 0x4d, 0x0a, 0x13, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, - 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x36, 0x0a, 0x0d, 0x63, 0x6f, 0x6e, 0x66, - 0x69, 0x67, 0x5f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x11, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x55, 0x70, 0x64, 0x61, - 0x74, 0x65, 0x52, 0x0c, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, - 0x22, 0x3b, 0x0a, 0x11, 0x53, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x26, 0x0a, 0x07, 0x77, 0x61, 0x72, 0x6e, 0x69, 0x6e, 0x67, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x57, 0x61, 0x72, - 0x6e, 0x69, 0x6e, 0x67, 0x52, 0x07, 0x77, 0x61, 0x72, 0x6e, 0x69, 0x6e, 0x67, 0x22, 0x38, 0x0a, - 0x11, 0x47, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x12, 0x23, 0x0a, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, - 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x22, 0x3e, 0x0a, 0x14, 0x55, 0x70, 0x64, 0x61, 0x74, - 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, - 0x26, 0x0a, 0x07, 0x77, 0x61, 0x72, 0x6e, 0x69, 0x6e, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x0c, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x57, 0x61, 0x72, 0x6e, 0x69, 0x6e, 0x67, 0x52, 0x07, - 0x77, 0x61, 0x72, 0x6e, 0x69, 0x6e, 0x67, 0x22, 0x50, 0x0a, 0x16, 0x53, 0x65, 0x74, 0x43, 0x6f, - 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x12, 0x36, 0x0a, 0x0d, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x5f, 0x73, 0x74, 0x61, - 0x74, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x43, - 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x0c, 0x63, 0x6f, 0x6e, - 0x74, 0x72, 0x6f, 0x6c, 0x53, 0x74, 0x61, 0x74, 0x65, 0x22, 0x41, 0x0a, 0x17, 0x53, 0x65, 0x74, - 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x26, 0x0a, 0x07, 0x77, 0x61, 0x72, 0x6e, 0x69, 0x6e, 0x67, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x57, 0x61, 0x72, 0x6e, - 0x69, 0x6e, 0x67, 0x52, 0x07, 0x77, 0x61, 0x72, 0x6e, 0x69, 0x6e, 0x67, 0x22, 0x54, 0x0a, 0x17, + 0x12, 0x63, 0x0a, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x06, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x45, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, + 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x52, 0x53, 0x56, 0x50, 0x50, 0x61, 0x74, 0x68, 0x52, 0x65, 0x63, + 0x6f, 0x72, 0x64, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x54, 0x79, 0x70, 0x65, 0x31, 0x49, 0x70, 0x76, + 0x34, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x49, 0x70, 0x76, 0x34, 0x41, 0x64, 0x64, 0x72, + 0x65, 0x73, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, 0x64, 0x65, 0x63, 0x72, + 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x1a, 0x56, 0x0a, 0x06, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x22, + 0x4c, 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x0a, 0x0b, 0x75, 0x6e, 0x73, 0x70, 0x65, + 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, + 0x65, 0x10, 0x02, 0x12, 0x0a, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x10, 0x03, 0x12, + 0x0d, 0x0a, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x10, 0x04, 0x12, 0x0d, + 0x0a, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x10, 0x05, 0x42, 0x09, 0x0a, + 0x07, 0x5f, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x76, 0x61, 0x6c, + 0x75, 0x65, 0x22, 0xaf, 0x01, 0x0a, 0x41, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, + 0x6f, 0x77, 0x52, 0x53, 0x56, 0x50, 0x50, 0x61, 0x74, 0x68, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, + 0x52, 0x6f, 0x75, 0x74, 0x65, 0x54, 0x79, 0x70, 0x65, 0x31, 0x49, 0x70, 0x76, 0x34, 0x41, 0x64, + 0x64, 0x72, 0x65, 0x73, 0x73, 0x50, 0x72, 0x65, 0x66, 0x69, 0x78, 0x4c, 0x65, 0x6e, 0x67, 0x74, + 0x68, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x12, 0x19, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x72, + 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x00, 0x52, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, + 0x88, 0x01, 0x01, 0x12, 0x17, 0x0a, 0x04, 0x73, 0x74, 0x65, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x0d, 0x48, 0x01, 0x52, 0x04, 0x73, 0x74, 0x65, 0x70, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, + 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x02, 0x52, 0x05, 0x63, + 0x6f, 0x75, 0x6e, 0x74, 0x88, 0x01, 0x01, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x73, 0x74, 0x61, 0x72, + 0x74, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x73, 0x74, 0x65, 0x70, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x63, + 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x92, 0x04, 0x0a, 0x3a, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, + 0x46, 0x6c, 0x6f, 0x77, 0x52, 0x53, 0x56, 0x50, 0x50, 0x61, 0x74, 0x68, 0x52, 0x65, 0x63, 0x6f, + 0x72, 0x64, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x54, 0x79, 0x70, 0x65, 0x31, 0x49, 0x70, 0x76, 0x34, + 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x50, 0x72, 0x65, 0x66, 0x69, 0x78, 0x4c, 0x65, 0x6e, + 0x67, 0x74, 0x68, 0x12, 0x68, 0x0a, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x0e, 0x32, 0x4b, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, + 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x52, 0x53, 0x56, 0x50, 0x50, 0x61, 0x74, 0x68, 0x52, 0x65, 0x63, + 0x6f, 0x72, 0x64, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x54, 0x79, 0x70, 0x65, 0x31, 0x49, 0x70, 0x76, + 0x34, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x50, 0x72, 0x65, 0x66, 0x69, 0x78, 0x4c, 0x65, + 0x6e, 0x67, 0x74, 0x68, 0x2e, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x2e, 0x45, 0x6e, 0x75, 0x6d, + 0x48, 0x00, 0x52, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, + 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x05, + 0x76, 0x61, 0x6c, 0x75, 0x65, 0x88, 0x01, 0x01, 0x12, 0x16, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, + 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0d, 0x52, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, + 0x12, 0x64, 0x0a, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x05, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x46, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, + 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x52, 0x53, 0x56, 0x50, 0x50, 0x61, 0x74, 0x68, 0x52, 0x65, 0x63, + 0x6f, 0x72, 0x64, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x54, 0x79, 0x70, 0x65, 0x31, 0x49, 0x70, 0x76, + 0x34, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x50, 0x72, 0x65, 0x66, 0x69, 0x78, 0x4c, 0x65, + 0x6e, 0x67, 0x74, 0x68, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, 0x69, 0x6e, 0x63, + 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x64, 0x0a, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, + 0x65, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x46, 0x2e, 0x6f, 0x74, 0x67, 0x2e, + 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x52, 0x53, 0x56, 0x50, 0x50, + 0x61, 0x74, 0x68, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x54, 0x79, + 0x70, 0x65, 0x31, 0x49, 0x70, 0x76, 0x34, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x50, 0x72, + 0x65, 0x66, 0x69, 0x78, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, + 0x72, 0x52, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x1a, 0x56, 0x0a, 0x06, + 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x22, 0x4c, 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0f, + 0x0a, 0x0b, 0x75, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x10, 0x00, 0x12, + 0x09, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x10, 0x02, 0x12, 0x0a, 0x0a, 0x06, 0x76, 0x61, + 0x6c, 0x75, 0x65, 0x73, 0x10, 0x03, 0x12, 0x0d, 0x0a, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, + 0x65, 0x6e, 0x74, 0x10, 0x04, 0x12, 0x0d, 0x0a, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, + 0x6e, 0x74, 0x10, 0x05, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x42, + 0x08, 0x0a, 0x06, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x8e, 0x02, 0x0a, 0x2d, 0x50, 0x61, + 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x52, 0x53, 0x56, 0x50, 0x50, 0x61, 0x74, + 0x68, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x54, 0x79, 0x70, 0x65, + 0x31, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x46, 0x6c, 0x61, 0x67, 0x73, 0x12, 0x5b, 0x0a, 0x06, 0x63, + 0x68, 0x6f, 0x69, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x3e, 0x2e, 0x6f, 0x74, + 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x52, 0x53, 0x56, + 0x50, 0x50, 0x61, 0x74, 0x68, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x52, 0x6f, 0x75, 0x74, 0x65, + 0x54, 0x79, 0x70, 0x65, 0x31, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x46, 0x6c, 0x61, 0x67, 0x73, 0x2e, + 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x48, 0x00, 0x52, 0x06, 0x63, + 0x68, 0x6f, 0x69, 0x63, 0x65, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, + 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, + 0x88, 0x01, 0x01, 0x12, 0x16, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x03, 0x20, + 0x03, 0x28, 0x0d, 0x52, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x1a, 0x38, 0x0a, 0x06, 0x43, + 0x68, 0x6f, 0x69, 0x63, 0x65, 0x22, 0x2e, 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x0a, + 0x0b, 0x75, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x10, 0x00, 0x12, 0x09, + 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x10, 0x02, 0x12, 0x0a, 0x0a, 0x06, 0x76, 0x61, 0x6c, + 0x75, 0x65, 0x73, 0x10, 0x03, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, + 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x8e, 0x02, 0x0a, 0x2d, 0x50, + 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x52, 0x53, 0x56, 0x50, 0x50, 0x61, + 0x74, 0x68, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x54, 0x79, 0x70, + 0x65, 0x31, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x43, 0x54, 0x79, 0x70, 0x65, 0x12, 0x5b, 0x0a, 0x06, + 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x3e, 0x2e, 0x6f, + 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x52, 0x53, + 0x56, 0x50, 0x50, 0x61, 0x74, 0x68, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x52, 0x6f, 0x75, 0x74, + 0x65, 0x54, 0x79, 0x70, 0x65, 0x31, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x43, 0x54, 0x79, 0x70, 0x65, + 0x2e, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x48, 0x00, 0x52, 0x06, + 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x76, 0x61, 0x6c, + 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, + 0x65, 0x88, 0x01, 0x01, 0x12, 0x16, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x03, + 0x20, 0x03, 0x28, 0x0d, 0x52, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x1a, 0x38, 0x0a, 0x06, + 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x22, 0x2e, 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0f, + 0x0a, 0x0b, 0x75, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x10, 0x00, 0x12, + 0x09, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x10, 0x02, 0x12, 0x0a, 0x0a, 0x06, 0x76, 0x61, + 0x6c, 0x75, 0x65, 0x73, 0x10, 0x03, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x63, 0x68, 0x6f, 0x69, 0x63, + 0x65, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x99, 0x01, 0x0a, 0x2b, + 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x52, 0x53, 0x56, 0x50, 0x50, + 0x61, 0x74, 0x68, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, + 0x54, 0x79, 0x70, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x12, 0x19, 0x0a, 0x05, 0x73, + 0x74, 0x61, 0x72, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x00, 0x52, 0x05, 0x73, 0x74, + 0x61, 0x72, 0x74, 0x88, 0x01, 0x01, 0x12, 0x17, 0x0a, 0x04, 0x73, 0x74, 0x65, 0x70, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x04, 0x73, 0x74, 0x65, 0x70, 0x88, 0x01, 0x01, 0x12, + 0x19, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x02, + 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x88, 0x01, 0x01, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x73, + 0x74, 0x61, 0x72, 0x74, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x73, 0x74, 0x65, 0x70, 0x42, 0x08, 0x0a, + 0x06, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0xba, 0x03, 0x0a, 0x24, 0x50, 0x61, 0x74, 0x74, + 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x52, 0x53, 0x56, 0x50, 0x50, 0x61, 0x74, 0x68, 0x4f, + 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x54, 0x79, 0x70, 0x65, + 0x12, 0x52, 0x0a, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, + 0x32, 0x35, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, + 0x6f, 0x77, 0x52, 0x53, 0x56, 0x50, 0x50, 0x61, 0x74, 0x68, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, + 0x73, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x54, 0x79, 0x70, 0x65, 0x2e, 0x43, 0x68, 0x6f, 0x69, + 0x63, 0x65, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x48, 0x00, 0x52, 0x06, 0x63, 0x68, 0x6f, 0x69, 0x63, + 0x65, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x88, 0x01, 0x01, 0x12, + 0x16, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0d, 0x52, + 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x12, 0x4e, 0x0a, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, + 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x6f, 0x74, 0x67, + 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x52, 0x53, 0x56, 0x50, + 0x50, 0x61, 0x74, 0x68, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x43, 0x75, 0x73, 0x74, 0x6f, + 0x6d, 0x54, 0x79, 0x70, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, 0x69, 0x6e, + 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x4e, 0x0a, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, + 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x6f, 0x74, 0x67, + 0x2e, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x52, 0x53, 0x56, 0x50, + 0x50, 0x61, 0x74, 0x68, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x43, 0x75, 0x73, 0x74, 0x6f, + 0x6d, 0x54, 0x79, 0x70, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x09, 0x64, 0x65, + 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x1a, 0x56, 0x0a, 0x06, 0x43, 0x68, 0x6f, 0x69, 0x63, + 0x65, 0x22, 0x4c, 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x0a, 0x0b, 0x75, 0x6e, 0x73, + 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, 0x76, 0x61, + 0x6c, 0x75, 0x65, 0x10, 0x02, 0x12, 0x0a, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x10, + 0x03, 0x12, 0x0d, 0x0a, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x10, 0x04, + 0x12, 0x0d, 0x0a, 0x09, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x10, 0x05, 0x42, + 0x09, 0x0a, 0x07, 0x5f, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x76, + 0x61, 0x6c, 0x75, 0x65, 0x22, 0xb9, 0x01, 0x0a, 0x07, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, + 0x12, 0x2d, 0x0a, 0x10, 0x61, 0x70, 0x69, 0x5f, 0x73, 0x70, 0x65, 0x63, 0x5f, 0x76, 0x65, 0x72, + 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x0e, 0x61, 0x70, + 0x69, 0x53, 0x70, 0x65, 0x63, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x12, + 0x24, 0x0a, 0x0b, 0x73, 0x64, 0x6b, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, 0x52, 0x0a, 0x73, 0x64, 0x6b, 0x56, 0x65, 0x72, 0x73, 0x69, + 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x12, 0x24, 0x0a, 0x0b, 0x61, 0x70, 0x70, 0x5f, 0x76, 0x65, 0x72, + 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x48, 0x02, 0x52, 0x0a, 0x61, 0x70, + 0x70, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x42, 0x13, 0x0a, 0x11, 0x5f, + 0x61, 0x70, 0x69, 0x5f, 0x73, 0x70, 0x65, 0x63, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, + 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x73, 0x64, 0x6b, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, + 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x61, 0x70, 0x70, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, + 0x22, 0x31, 0x0a, 0x07, 0x53, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x12, 0x26, 0x0a, 0x07, 0x77, + 0x61, 0x72, 0x6e, 0x69, 0x6e, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x6f, + 0x74, 0x67, 0x2e, 0x57, 0x61, 0x72, 0x6e, 0x69, 0x6e, 0x67, 0x52, 0x07, 0x77, 0x61, 0x72, 0x6e, + 0x69, 0x6e, 0x67, 0x22, 0x2b, 0x0a, 0x07, 0x46, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x12, 0x20, + 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0a, 0x2e, + 0x6f, 0x74, 0x67, 0x2e, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, + 0x22, 0x37, 0x0a, 0x10, 0x53, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x12, 0x23, 0x0a, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x43, 0x6f, 0x6e, 0x66, 0x69, + 0x67, 0x52, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x22, 0x4d, 0x0a, 0x13, 0x55, 0x70, 0x64, + 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x12, 0x36, 0x0a, 0x0d, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x5f, 0x75, 0x70, 0x64, 0x61, 0x74, + 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x43, 0x6f, + 0x6e, 0x66, 0x69, 0x67, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x0c, 0x63, 0x6f, 0x6e, 0x66, + 0x69, 0x67, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x22, 0x3b, 0x0a, 0x11, 0x53, 0x65, 0x74, 0x43, + 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x26, 0x0a, + 0x07, 0x77, 0x61, 0x72, 0x6e, 0x69, 0x6e, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0c, + 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x57, 0x61, 0x72, 0x6e, 0x69, 0x6e, 0x67, 0x52, 0x07, 0x77, 0x61, + 0x72, 0x6e, 0x69, 0x6e, 0x67, 0x22, 0x38, 0x0a, 0x11, 0x47, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x66, + 0x69, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x23, 0x0a, 0x06, 0x63, 0x6f, + 0x6e, 0x66, 0x69, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x6f, 0x74, 0x67, + 0x2e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x22, + 0x3e, 0x0a, 0x14, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x26, 0x0a, 0x07, 0x77, 0x61, 0x72, 0x6e, 0x69, + 0x6e, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x57, + 0x61, 0x72, 0x6e, 0x69, 0x6e, 0x67, 0x52, 0x07, 0x77, 0x61, 0x72, 0x6e, 0x69, 0x6e, 0x67, 0x22, + 0x50, 0x0a, 0x16, 0x53, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x53, 0x74, 0x61, + 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x36, 0x0a, 0x0d, 0x63, 0x6f, 0x6e, + 0x74, 0x72, 0x6f, 0x6c, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x11, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x53, 0x74, + 0x61, 0x74, 0x65, 0x52, 0x0c, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x53, 0x74, 0x61, 0x74, + 0x65, 0x22, 0x41, 0x0a, 0x17, 0x53, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x53, + 0x74, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x26, 0x0a, 0x07, + 0x77, 0x61, 0x72, 0x6e, 0x69, 0x6e, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0c, 0x2e, + 0x6f, 0x74, 0x67, 0x2e, 0x57, 0x61, 0x72, 0x6e, 0x69, 0x6e, 0x67, 0x52, 0x07, 0x77, 0x61, 0x72, + 0x6e, 0x69, 0x6e, 0x67, 0x22, 0x54, 0x0a, 0x17, 0x53, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x74, 0x72, + 0x6f, 0x6c, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, + 0x39, 0x0a, 0x0e, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, + 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x43, 0x6f, + 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0d, 0x63, 0x6f, 0x6e, + 0x74, 0x72, 0x6f, 0x6c, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x6e, 0x0a, 0x18, 0x53, 0x65, + 0x74, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x52, 0x0a, 0x17, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, + 0x6c, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x43, 0x6f, + 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x52, 0x15, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x41, 0x63, 0x74, 0x69, + 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x51, 0x0a, 0x11, 0x47, 0x65, + 0x74, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, + 0x3c, 0x0a, 0x0f, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x4d, + 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x52, 0x0e, 0x6d, + 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x55, 0x0a, + 0x12, 0x47, 0x65, 0x74, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x12, 0x3f, 0x0a, 0x10, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x5f, 0x72, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, + 0x6f, 0x74, 0x67, 0x2e, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x52, 0x0f, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x4d, 0x0a, 0x10, 0x47, 0x65, 0x74, 0x53, 0x74, 0x61, 0x74, 0x65, + 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x39, 0x0a, 0x0e, 0x73, 0x74, 0x61, 0x74, + 0x65, 0x73, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x12, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x73, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x52, 0x0d, 0x73, 0x74, 0x61, 0x74, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x22, 0x51, 0x0a, 0x11, 0x47, 0x65, 0x74, 0x53, 0x74, 0x61, 0x74, 0x65, 0x73, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3c, 0x0a, 0x0f, 0x73, 0x74, 0x61, 0x74, + 0x65, 0x73, 0x5f, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x13, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x73, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x52, 0x0e, 0x73, 0x74, 0x61, 0x74, 0x65, 0x73, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x51, 0x0a, 0x11, 0x47, 0x65, 0x74, 0x43, 0x61, 0x70, + 0x74, 0x75, 0x72, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x3c, 0x0a, 0x0f, 0x63, + 0x61, 0x70, 0x74, 0x75, 0x72, 0x65, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x43, 0x61, 0x70, 0x74, 0x75, + 0x72, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x52, 0x0e, 0x63, 0x61, 0x70, 0x74, 0x75, + 0x72, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x3b, 0x0a, 0x12, 0x47, 0x65, 0x74, + 0x43, 0x61, 0x70, 0x74, 0x75, 0x72, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, + 0x25, 0x0a, 0x0e, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x5f, 0x62, 0x79, 0x74, 0x65, + 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0d, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x42, 0x79, 0x74, 0x65, 0x73, 0x22, 0x3c, 0x0a, 0x12, 0x47, 0x65, 0x74, 0x56, 0x65, 0x72, + 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x26, 0x0a, 0x07, + 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0c, 0x2e, + 0x6f, 0x74, 0x67, 0x2e, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x07, 0x76, 0x65, 0x72, + 0x73, 0x69, 0x6f, 0x6e, 0x32, 0xdf, 0x04, 0x0a, 0x07, 0x4f, 0x70, 0x65, 0x6e, 0x61, 0x70, 0x69, + 0x12, 0x3a, 0x0a, 0x09, 0x53, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x15, 0x2e, + 0x6f, 0x74, 0x67, 0x2e, 0x53, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x53, 0x65, 0x74, 0x43, 0x6f, + 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3b, 0x0a, 0x09, + 0x47, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, + 0x79, 0x1a, 0x16, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, + 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x43, 0x0a, 0x0c, 0x55, 0x70, 0x64, + 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x18, 0x2e, 0x6f, 0x74, 0x67, 0x2e, + 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x1a, 0x19, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, + 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x4c, + 0x0a, 0x0f, 0x53, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x53, 0x74, 0x61, 0x74, + 0x65, 0x12, 0x1b, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x53, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x74, 0x72, + 0x6f, 0x6c, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1c, + 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x53, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x53, + 0x74, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x4f, 0x0a, 0x10, 0x53, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x39, 0x0a, 0x0e, 0x63, 0x6f, 0x6e, 0x74, 0x72, - 0x6f, 0x6c, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x12, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x41, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x52, 0x0d, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x41, 0x63, 0x74, 0x69, - 0x6f, 0x6e, 0x22, 0x6e, 0x0a, 0x18, 0x53, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, - 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x52, - 0x0a, 0x17, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, - 0x5f, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x1a, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x41, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x52, 0x15, 0x63, 0x6f, 0x6e, - 0x74, 0x72, 0x6f, 0x6c, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x22, 0x51, 0x0a, 0x11, 0x47, 0x65, 0x74, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x3c, 0x0a, 0x0f, 0x6d, 0x65, 0x74, 0x72, 0x69, - 0x63, 0x73, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x13, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x52, 0x0e, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x55, 0x0a, 0x12, 0x47, 0x65, 0x74, 0x4d, 0x65, 0x74, 0x72, - 0x69, 0x63, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3f, 0x0a, 0x10, 0x6d, - 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x5f, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x4d, 0x65, 0x74, 0x72, - 0x69, 0x63, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x52, 0x0f, 0x6d, 0x65, 0x74, - 0x72, 0x69, 0x63, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x4d, 0x0a, 0x10, + 0x12, 0x1c, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x53, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, + 0x6c, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, + 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x53, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x41, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3d, 0x0a, + 0x0a, 0x47, 0x65, 0x74, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x12, 0x16, 0x2e, 0x6f, 0x74, + 0x67, 0x2e, 0x47, 0x65, 0x74, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x1a, 0x17, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x47, 0x65, 0x74, 0x4d, 0x65, 0x74, + 0x72, 0x69, 0x63, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3a, 0x0a, 0x09, + 0x47, 0x65, 0x74, 0x53, 0x74, 0x61, 0x74, 0x65, 0x73, 0x12, 0x15, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x47, 0x65, 0x74, 0x53, 0x74, 0x61, 0x74, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x12, 0x39, 0x0a, 0x0e, 0x73, 0x74, 0x61, 0x74, 0x65, 0x73, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x53, - 0x74, 0x61, 0x74, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x52, 0x0d, 0x73, 0x74, - 0x61, 0x74, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x51, 0x0a, 0x11, 0x47, - 0x65, 0x74, 0x53, 0x74, 0x61, 0x74, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x12, 0x3c, 0x0a, 0x0f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x73, 0x5f, 0x72, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x6f, 0x74, 0x67, 0x2e, - 0x53, 0x74, 0x61, 0x74, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x52, 0x0e, - 0x73, 0x74, 0x61, 0x74, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x51, - 0x0a, 0x11, 0x47, 0x65, 0x74, 0x43, 0x61, 0x70, 0x74, 0x75, 0x72, 0x65, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x12, 0x3c, 0x0a, 0x0f, 0x63, 0x61, 0x70, 0x74, 0x75, 0x72, 0x65, 0x5f, 0x72, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x6f, - 0x74, 0x67, 0x2e, 0x43, 0x61, 0x70, 0x74, 0x75, 0x72, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x52, 0x0e, 0x63, 0x61, 0x70, 0x74, 0x75, 0x72, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x22, 0x3b, 0x0a, 0x12, 0x47, 0x65, 0x74, 0x43, 0x61, 0x70, 0x74, 0x75, 0x72, 0x65, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x25, 0x0a, 0x0e, 0x72, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, - 0x0d, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x42, 0x79, 0x74, 0x65, 0x73, 0x22, 0x3c, - 0x0a, 0x12, 0x47, 0x65, 0x74, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x26, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x56, 0x65, 0x72, 0x73, - 0x69, 0x6f, 0x6e, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x32, 0xdf, 0x04, 0x0a, - 0x07, 0x4f, 0x70, 0x65, 0x6e, 0x61, 0x70, 0x69, 0x12, 0x3a, 0x0a, 0x09, 0x53, 0x65, 0x74, 0x43, - 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x15, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x53, 0x65, 0x74, 0x43, - 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x6f, - 0x74, 0x67, 0x2e, 0x53, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3b, 0x0a, 0x09, 0x47, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, - 0x67, 0x12, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x16, 0x2e, 0x6f, 0x74, 0x67, 0x2e, - 0x47, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x12, 0x43, 0x0a, 0x0c, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, - 0x67, 0x12, 0x18, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x6f, - 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x19, 0x2e, 0x6f, 0x74, - 0x67, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x4c, 0x0a, 0x0f, 0x53, 0x65, 0x74, 0x43, 0x6f, 0x6e, - 0x74, 0x72, 0x6f, 0x6c, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x1b, 0x2e, 0x6f, 0x74, 0x67, 0x2e, - 0x53, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1c, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x53, 0x65, 0x74, - 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x4f, 0x0a, 0x10, 0x53, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x74, 0x72, - 0x6f, 0x6c, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1c, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x53, - 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x53, 0x65, 0x74, - 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3d, 0x0a, 0x0a, 0x47, 0x65, 0x74, 0x4d, 0x65, 0x74, 0x72, - 0x69, 0x63, 0x73, 0x12, 0x16, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x47, 0x65, 0x74, 0x4d, 0x65, 0x74, - 0x72, 0x69, 0x63, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x17, 0x2e, 0x6f, 0x74, - 0x67, 0x2e, 0x47, 0x65, 0x74, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3a, 0x0a, 0x09, 0x47, 0x65, 0x74, 0x53, 0x74, 0x61, 0x74, 0x65, - 0x73, 0x12, 0x15, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x47, 0x65, 0x74, 0x53, 0x74, 0x61, 0x74, 0x65, - 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x47, - 0x65, 0x74, 0x53, 0x74, 0x61, 0x74, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x12, 0x3d, 0x0a, 0x0a, 0x47, 0x65, 0x74, 0x43, 0x61, 0x70, 0x74, 0x75, 0x72, 0x65, 0x12, 0x16, + 0x1a, 0x16, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x47, 0x65, 0x74, 0x53, 0x74, 0x61, 0x74, 0x65, 0x73, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3d, 0x0a, 0x0a, 0x47, 0x65, 0x74, 0x43, + 0x61, 0x70, 0x74, 0x75, 0x72, 0x65, 0x12, 0x16, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x47, 0x65, 0x74, + 0x43, 0x61, 0x70, 0x74, 0x75, 0x72, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x17, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x61, 0x70, 0x74, 0x75, 0x72, 0x65, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x17, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x47, 0x65, 0x74, - 0x43, 0x61, 0x70, 0x74, 0x75, 0x72, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, - 0x3d, 0x0a, 0x0a, 0x47, 0x65, 0x74, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x16, 0x2e, - 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, - 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x17, 0x2e, 0x6f, 0x74, 0x67, 0x2e, 0x47, 0x65, 0x74, 0x56, - 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x42, 0x0b, - 0x5a, 0x09, 0x2e, 0x2f, 0x6f, 0x74, 0x67, 0x3b, 0x6f, 0x74, 0x67, 0x62, 0x06, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x33, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3d, 0x0a, 0x0a, 0x47, 0x65, 0x74, 0x56, 0x65, + 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x17, 0x2e, + 0x6f, 0x74, 0x67, 0x2e, 0x47, 0x65, 0x74, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x42, 0x0b, 0x5a, 0x09, 0x2e, 0x2f, 0x6f, 0x74, 0x67, 0x3b, + 0x6f, 0x74, 0x67, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -107490,2751 +123913,3207 @@ func file_otg_proto_rawDescGZIP() []byte { return file_otg_proto_rawDescData } -var file_otg_proto_enumTypes = make([]protoimpl.EnumInfo, 317) -var file_otg_proto_msgTypes = make([]protoimpl.MessageInfo, 1082) +var file_otg_proto_enumTypes = make([]protoimpl.EnumInfo, 376) +var file_otg_proto_msgTypes = make([]protoimpl.MessageInfo, 1262) var file_otg_proto_goTypes = []interface{}{ - (LagProtocol_Choice_Enum)(0), // 0: otg.LagProtocol.Choice.Enum - (LagPortLacp_ActorActivity_Enum)(0), // 1: otg.LagPortLacp.ActorActivity.Enum - (EthernetConnection_Choice_Enum)(0), // 2: otg.EthernetConnection.Choice.Enum - (DeviceVlan_Tpid_Enum)(0), // 3: otg.DeviceVlan.Tpid.Enum - (DeviceIpv4GatewayMAC_Choice_Enum)(0), // 4: otg.DeviceIpv4GatewayMAC.Choice.Enum - (DeviceIpv6GatewayMAC_Choice_Enum)(0), // 5: otg.DeviceIpv6GatewayMAC.Choice.Enum - (Layer1_Speed_Enum)(0), // 6: otg.Layer1.Speed.Enum - (Layer1_Media_Enum)(0), // 7: otg.Layer1.Media.Enum - (Layer1FlowControl_Choice_Enum)(0), // 8: otg.Layer1FlowControl.Choice.Enum - (Capture_Format_Enum)(0), // 9: otg.Capture.Format.Enum - (CaptureFilter_Choice_Enum)(0), // 10: otg.CaptureFilter.Choice.Enum - (IsisInterface_NetworkType_Enum)(0), // 11: otg.IsisInterface.NetworkType.Enum - (IsisInterface_LevelType_Enum)(0), // 12: otg.IsisInterface.LevelType.Enum - (IsisInterfaceAuthentication_AuthType_Enum)(0), // 13: otg.IsisInterfaceAuthentication.AuthType.Enum - (IsisAuthenticationBase_AuthType_Enum)(0), // 14: otg.IsisAuthenticationBase.AuthType.Enum - (IsisV4RouteRange_OriginType_Enum)(0), // 15: otg.IsisV4RouteRange.OriginType.Enum - (IsisV4RouteRange_RedistributionType_Enum)(0), // 16: otg.IsisV4RouteRange.RedistributionType.Enum - (IsisV6RouteRange_OriginType_Enum)(0), // 17: otg.IsisV6RouteRange.OriginType.Enum - (IsisV6RouteRange_RedistributionType_Enum)(0), // 18: otg.IsisV6RouteRange.RedistributionType.Enum - (DeviceBgpMessageHeaderError_Subcode_Enum)(0), // 19: otg.DeviceBgpMessageHeaderError.Subcode.Enum - (DeviceBgpOpenMessageError_Subcode_Enum)(0), // 20: otg.DeviceBgpOpenMessageError.Subcode.Enum - (DeviceBgpUpdateMessageError_Subcode_Enum)(0), // 21: otg.DeviceBgpUpdateMessageError.Subcode.Enum - (DeviceBgpCeaseError_Subcode_Enum)(0), // 22: otg.DeviceBgpCeaseError.Subcode.Enum - (BgpV4Peer_AsType_Enum)(0), // 23: otg.BgpV4Peer.AsType.Enum - (BgpV4Peer_AsNumberWidth_Enum)(0), // 24: otg.BgpV4Peer.AsNumberWidth.Enum - (BgpV4EthernetSegment_ActiveMode_Enum)(0), // 25: otg.BgpV4EthernetSegment.ActiveMode.Enum - (BgpRouteAdvanced_Origin_Enum)(0), // 26: otg.BgpRouteAdvanced.Origin.Enum - (BgpCommunity_Type_Enum)(0), // 27: otg.BgpCommunity.Type.Enum - (BgpExtCommunity_Type_Enum)(0), // 28: otg.BgpExtCommunity.Type.Enum - (BgpExtCommunity_Subtype_Enum)(0), // 29: otg.BgpExtCommunity.Subtype.Enum - (BgpAsPath_AsSetMode_Enum)(0), // 30: otg.BgpAsPath.AsSetMode.Enum - (BgpAsPathSegment_Type_Enum)(0), // 31: otg.BgpAsPathSegment.Type.Enum - (BgpV4EvpnEvis_Choice_Enum)(0), // 32: otg.BgpV4EvpnEvis.Choice.Enum - (BgpV4EviVxlan_ReplicationType_Enum)(0), // 33: otg.BgpV4EviVxlan.ReplicationType.Enum - (BgpRouteDistinguisher_RdType_Enum)(0), // 34: otg.BgpRouteDistinguisher.RdType.Enum - (BgpRouteTarget_RtType_Enum)(0), // 35: otg.BgpRouteTarget.RtType.Enum - (BgpV4RouteRange_NextHopMode_Enum)(0), // 36: otg.BgpV4RouteRange.NextHopMode.Enum - (BgpV4RouteRange_NextHopAddressType_Enum)(0), // 37: otg.BgpV4RouteRange.NextHopAddressType.Enum - (BgpExtendedCommunity_Choice_Enum)(0), // 38: otg.BgpExtendedCommunity.Choice.Enum - (BgpExtendedCommunityTransitive2OctetAsType_Choice_Enum)(0), // 39: otg.BgpExtendedCommunityTransitive2OctetAsType.Choice.Enum - (BgpExtendedCommunityTransitiveIpv4AddressType_Choice_Enum)(0), // 40: otg.BgpExtendedCommunityTransitiveIpv4AddressType.Choice.Enum - (BgpExtendedCommunityTransitive4OctetAsType_Choice_Enum)(0), // 41: otg.BgpExtendedCommunityTransitive4OctetAsType.Choice.Enum - (BgpExtendedCommunityTransitiveOpaqueType_Choice_Enum)(0), // 42: otg.BgpExtendedCommunityTransitiveOpaqueType.Choice.Enum - (BgpExtendedCommunityTransitiveEvpnType_Choice_Enum)(0), // 43: otg.BgpExtendedCommunityTransitiveEvpnType.Choice.Enum - (BgpExtendedCommunityNonTransitive2OctetAsType_Choice_Enum)(0), // 44: otg.BgpExtendedCommunityNonTransitive2OctetAsType.Choice.Enum - (BgpV6RouteRange_NextHopMode_Enum)(0), // 45: otg.BgpV6RouteRange.NextHopMode.Enum - (BgpV6RouteRange_NextHopAddressType_Enum)(0), // 46: otg.BgpV6RouteRange.NextHopAddressType.Enum - (BgpSrteV4Policy_NextHopMode_Enum)(0), // 47: otg.BgpSrteV4Policy.NextHopMode.Enum - (BgpSrteV4Policy_NextHopAddressType_Enum)(0), // 48: otg.BgpSrteV4Policy.NextHopAddressType.Enum - (BgpSrteRemoteEndpointSubTlv_AddressFamily_Enum)(0), // 49: otg.BgpSrteRemoteEndpointSubTlv.AddressFamily.Enum - (BgpSrteBindingSubTlv_BindingSidType_Enum)(0), // 50: otg.BgpSrteBindingSubTlv.BindingSidType.Enum - (BgpSrteExplicitNullLabelPolicySubTlv_ExplicitNullLabelPolicy_Enum)(0), // 51: otg.BgpSrteExplicitNullLabelPolicySubTlv.ExplicitNullLabelPolicy.Enum - (BgpSrteSegment_SegmentType_Enum)(0), // 52: otg.BgpSrteSegment.SegmentType.Enum - (BgpSrteV6Policy_NextHopMode_Enum)(0), // 53: otg.BgpSrteV6Policy.NextHopMode.Enum - (BgpSrteV6Policy_NextHopAddressType_Enum)(0), // 54: otg.BgpSrteV6Policy.NextHopAddressType.Enum - (BgpV6Peer_AsType_Enum)(0), // 55: otg.BgpV6Peer.AsType.Enum - (BgpV6Peer_AsNumberWidth_Enum)(0), // 56: otg.BgpV6Peer.AsNumberWidth.Enum - (BgpV6EthernetSegment_ActiveMode_Enum)(0), // 57: otg.BgpV6EthernetSegment.ActiveMode.Enum - (BgpV6EvpnEvis_Choice_Enum)(0), // 58: otg.BgpV6EvpnEvis.Choice.Enum - (BgpV6EviVxlan_ReplicationType_Enum)(0), // 59: otg.BgpV6EviVxlan.ReplicationType.Enum - (VxlanV4TunnelDestinationIPMode_Choice_Enum)(0), // 60: otg.VxlanV4TunnelDestinationIPMode.Choice.Enum - (VxlanV6TunnelDestinationIPMode_Choice_Enum)(0), // 61: otg.VxlanV6TunnelDestinationIPMode.Choice.Enum - (RsvpLspIpv4InterfaceP2PEgressIpv4Lsp_ReservationStyle_Enum)(0), // 62: otg.RsvpLspIpv4InterfaceP2PEgressIpv4Lsp.ReservationStyle.Enum - (RsvpEro_PrependNeighborIp_Enum)(0), // 63: otg.RsvpEro.PrependNeighborIp.Enum - (RsvpEroSubobject_Type_Enum)(0), // 64: otg.RsvpEroSubobject.Type.Enum - (RsvpEroSubobject_HopType_Enum)(0), // 65: otg.RsvpEroSubobject.HopType.Enum - (FlowTxRx_Choice_Enum)(0), // 66: otg.FlowTxRx.Choice.Enum - (FlowRouter_Mode_Enum)(0), // 67: otg.FlowRouter.Mode.Enum - (FlowHeader_Choice_Enum)(0), // 68: otg.FlowHeader.Choice.Enum - (FlowIpv4Priority_Choice_Enum)(0), // 69: otg.FlowIpv4Priority.Choice.Enum - (FlowIcmp_Choice_Enum)(0), // 70: otg.FlowIcmp.Choice.Enum - (FlowIcmpv6_Choice_Enum)(0), // 71: otg.FlowIcmpv6.Choice.Enum - (FlowSize_Choice_Enum)(0), // 72: otg.FlowSize.Choice.Enum - (FlowSizeWeightPairs_Choice_Enum)(0), // 73: otg.FlowSizeWeightPairs.Choice.Enum - (FlowSizeWeightPairs_Predefined_Enum)(0), // 74: otg.FlowSizeWeightPairs.Predefined.Enum - (FlowRate_Choice_Enum)(0), // 75: otg.FlowRate.Choice.Enum - (FlowDuration_Choice_Enum)(0), // 76: otg.FlowDuration.Choice.Enum - (FlowDelay_Choice_Enum)(0), // 77: otg.FlowDelay.Choice.Enum - (FlowDurationInterBurstGap_Choice_Enum)(0), // 78: otg.FlowDurationInterBurstGap.Choice.Enum - (FlowLatencyMetrics_Mode_Enum)(0), // 79: otg.FlowLatencyMetrics.Mode.Enum - (FlowRxTxRatio_Choice_Enum)(0), // 80: otg.FlowRxTxRatio.Choice.Enum - (EventRequest_Type_Enum)(0), // 81: otg.EventRequest.Type.Enum - (LldpConnection_Choice_Enum)(0), // 82: otg.LldpConnection.Choice.Enum - (LldpChassisId_Choice_Enum)(0), // 83: otg.LldpChassisId.Choice.Enum - (LldpPortId_Choice_Enum)(0), // 84: otg.LldpPortId.Choice.Enum - (LldpChassisMacSubType_Choice_Enum)(0), // 85: otg.LldpChassisMacSubType.Choice.Enum - (LldpPortInterfaceNameSubType_Choice_Enum)(0), // 86: otg.LldpPortInterfaceNameSubType.Choice.Enum - (LldpSystemName_Choice_Enum)(0), // 87: otg.LldpSystemName.Choice.Enum - (Error_Kind_Enum)(0), // 88: otg.Error.Kind.Enum - (ConfigUpdate_Choice_Enum)(0), // 89: otg.ConfigUpdate.Choice.Enum - (FlowsUpdate_PropertyNames_Enum)(0), // 90: otg.FlowsUpdate.PropertyNames.Enum - (ControlState_Choice_Enum)(0), // 91: otg.ControlState.Choice.Enum - (StatePort_Choice_Enum)(0), // 92: otg.StatePort.Choice.Enum - (StateTraffic_Choice_Enum)(0), // 93: otg.StateTraffic.Choice.Enum - (StateProtocol_Choice_Enum)(0), // 94: otg.StateProtocol.Choice.Enum - (StatePortLink_State_Enum)(0), // 95: otg.StatePortLink.State.Enum - (StatePortCapture_State_Enum)(0), // 96: otg.StatePortCapture.State.Enum - (StateTrafficFlowTransmit_State_Enum)(0), // 97: otg.StateTrafficFlowTransmit.State.Enum - (StateProtocolAll_State_Enum)(0), // 98: otg.StateProtocolAll.State.Enum - (StateProtocolRoute_State_Enum)(0), // 99: otg.StateProtocolRoute.State.Enum - (StateProtocolLacp_Choice_Enum)(0), // 100: otg.StateProtocolLacp.Choice.Enum - (StateProtocolLacpAdmin_State_Enum)(0), // 101: otg.StateProtocolLacpAdmin.State.Enum - (StateProtocolLacpMemberPorts_State_Enum)(0), // 102: otg.StateProtocolLacpMemberPorts.State.Enum - (StateProtocolBgp_Choice_Enum)(0), // 103: otg.StateProtocolBgp.Choice.Enum - (StateProtocolBgpPeers_State_Enum)(0), // 104: otg.StateProtocolBgpPeers.State.Enum - (StateProtocolIsis_Choice_Enum)(0), // 105: otg.StateProtocolIsis.Choice.Enum - (StateProtocolIsisRouters_State_Enum)(0), // 106: otg.StateProtocolIsisRouters.State.Enum - (ControlAction_Choice_Enum)(0), // 107: otg.ControlAction.Choice.Enum - (ActionResponse_Choice_Enum)(0), // 108: otg.ActionResponse.Choice.Enum - (ActionProtocol_Choice_Enum)(0), // 109: otg.ActionProtocol.Choice.Enum - (ActionResponseProtocol_Choice_Enum)(0), // 110: otg.ActionResponseProtocol.Choice.Enum - (ActionProtocolIpv4_Choice_Enum)(0), // 111: otg.ActionProtocolIpv4.Choice.Enum - (ActionResponseProtocolIpv4_Choice_Enum)(0), // 112: otg.ActionResponseProtocolIpv4.Choice.Enum - (ActionResponseProtocolIpv4PingResponse_Result_Enum)(0), // 113: otg.ActionResponseProtocolIpv4PingResponse.Result.Enum - (ActionProtocolIpv6_Choice_Enum)(0), // 114: otg.ActionProtocolIpv6.Choice.Enum - (ActionResponseProtocolIpv6_Choice_Enum)(0), // 115: otg.ActionResponseProtocolIpv6.Choice.Enum - (ActionResponseProtocolIpv6PingResponse_Result_Enum)(0), // 116: otg.ActionResponseProtocolIpv6PingResponse.Result.Enum - (ActionProtocolBgp_Choice_Enum)(0), // 117: otg.ActionProtocolBgp.Choice.Enum - (ActionProtocolBgpNotification_Choice_Enum)(0), // 118: otg.ActionProtocolBgpNotification.Choice.Enum - (MetricsRequest_Choice_Enum)(0), // 119: otg.MetricsRequest.Choice.Enum - (MetricsResponse_Choice_Enum)(0), // 120: otg.MetricsResponse.Choice.Enum - (PortMetricsRequest_ColumnNames_Enum)(0), // 121: otg.PortMetricsRequest.ColumnNames.Enum - (PortMetric_Link_Enum)(0), // 122: otg.PortMetric.Link.Enum - (PortMetric_Capture_Enum)(0), // 123: otg.PortMetric.Capture.Enum - (PortMetric_Transmit_Enum)(0), // 124: otg.PortMetric.Transmit.Enum - (FlowMetricsRequest_MetricNames_Enum)(0), // 125: otg.FlowMetricsRequest.MetricNames.Enum - (FlowTaggedMetricsFilter_MetricNames_Enum)(0), // 126: otg.FlowTaggedMetricsFilter.MetricNames.Enum - (FlowMetric_Transmit_Enum)(0), // 127: otg.FlowMetric.Transmit.Enum - (FlowMetricTagValue_Choice_Enum)(0), // 128: otg.FlowMetricTagValue.Choice.Enum - (Bgpv4MetricsRequest_ColumnNames_Enum)(0), // 129: otg.Bgpv4MetricsRequest.ColumnNames.Enum - (Bgpv4Metric_SessionState_Enum)(0), // 130: otg.Bgpv4Metric.SessionState.Enum - (Bgpv4Metric_FsmState_Enum)(0), // 131: otg.Bgpv4Metric.FsmState.Enum - (Bgpv6MetricsRequest_ColumnNames_Enum)(0), // 132: otg.Bgpv6MetricsRequest.ColumnNames.Enum - (Bgpv6Metric_SessionState_Enum)(0), // 133: otg.Bgpv6Metric.SessionState.Enum - (Bgpv6Metric_FsmState_Enum)(0), // 134: otg.Bgpv6Metric.FsmState.Enum - (IsisMetricsRequest_ColumnNames_Enum)(0), // 135: otg.IsisMetricsRequest.ColumnNames.Enum - (LagMetricsRequest_ColumnNames_Enum)(0), // 136: otg.LagMetricsRequest.ColumnNames.Enum - (LagMetric_OperStatus_Enum)(0), // 137: otg.LagMetric.OperStatus.Enum - (LacpMetricsRequest_ColumnNames_Enum)(0), // 138: otg.LacpMetricsRequest.ColumnNames.Enum - (LacpMetric_Activity_Enum)(0), // 139: otg.LacpMetric.Activity.Enum - (LacpMetric_Timeout_Enum)(0), // 140: otg.LacpMetric.Timeout.Enum - (LacpMetric_Synchronization_Enum)(0), // 141: otg.LacpMetric.Synchronization.Enum - (LldpMetricsRequest_ColumnNames_Enum)(0), // 142: otg.LldpMetricsRequest.ColumnNames.Enum - (RsvpMetricsRequest_ColumnNames_Enum)(0), // 143: otg.RsvpMetricsRequest.ColumnNames.Enum - (StatesRequest_Choice_Enum)(0), // 144: otg.StatesRequest.Choice.Enum - (StatesResponse_Choice_Enum)(0), // 145: otg.StatesResponse.Choice.Enum - (BgpPrefixStateRequest_PrefixFilters_Enum)(0), // 146: otg.BgpPrefixStateRequest.PrefixFilters.Enum - (BgpPrefixIpv4UnicastFilter_Origin_Enum)(0), // 147: otg.BgpPrefixIpv4UnicastFilter.Origin.Enum - (BgpPrefixIpv6UnicastFilter_Origin_Enum)(0), // 148: otg.BgpPrefixIpv6UnicastFilter.Origin.Enum - (BgpPrefixIpv4UnicastState_Origin_Enum)(0), // 149: otg.BgpPrefixIpv4UnicastState.Origin.Enum - (BgpPrefixIpv6UnicastState_Origin_Enum)(0), // 150: otg.BgpPrefixIpv6UnicastState.Origin.Enum - (ResultBgpCommunity_Type_Enum)(0), // 151: otg.ResultBgpCommunity.Type.Enum - (ResultBgpAsPathSegment_Type_Enum)(0), // 152: otg.ResultBgpAsPathSegment.Type.Enum - (IsisLspState_PduType_Enum)(0), // 153: otg.IsisLspState.PduType.Enum - (IsisLspV4Prefix_RedistributionType_Enum)(0), // 154: otg.IsisLspV4Prefix.RedistributionType.Enum - (IsisLspV4Prefix_OriginType_Enum)(0), // 155: otg.IsisLspV4Prefix.OriginType.Enum - (IsisLspExtendedV4Prefix_RedistributionType_Enum)(0), // 156: otg.IsisLspExtendedV4Prefix.RedistributionType.Enum - (IsisLspV6Prefix_RedistributionType_Enum)(0), // 157: otg.IsisLspV6Prefix.RedistributionType.Enum - (IsisLspV6Prefix_OriginType_Enum)(0), // 158: otg.IsisLspV6Prefix.OriginType.Enum - (LldpNeighborsState_ChassisIdType_Enum)(0), // 159: otg.LldpNeighborsState.ChassisIdType.Enum - (LldpNeighborsState_PortIdType_Enum)(0), // 160: otg.LldpNeighborsState.PortIdType.Enum - (LldpCapabilityState_CapabilityName_Enum)(0), // 161: otg.LldpCapabilityState.CapabilityName.Enum - (RsvpLspState_SessionStatus_Enum)(0), // 162: otg.RsvpLspState.SessionStatus.Enum - (RsvpLspState_LastFlapReason_Enum)(0), // 163: otg.RsvpLspState.LastFlapReason.Enum - (RsvpLspIpv4Ero_Type_Enum)(0), // 164: otg.RsvpLspIpv4Ero.Type.Enum - (PatternFlowEthernetDst_Choice_Enum)(0), // 165: otg.PatternFlowEthernetDst.Choice.Enum - (PatternFlowEthernetSrc_Choice_Enum)(0), // 166: otg.PatternFlowEthernetSrc.Choice.Enum - (PatternFlowEthernetEtherType_Choice_Enum)(0), // 167: otg.PatternFlowEthernetEtherType.Choice.Enum - (PatternFlowEthernetPfcQueue_Choice_Enum)(0), // 168: otg.PatternFlowEthernetPfcQueue.Choice.Enum - (PatternFlowVlanPriority_Choice_Enum)(0), // 169: otg.PatternFlowVlanPriority.Choice.Enum - (PatternFlowVlanCfi_Choice_Enum)(0), // 170: otg.PatternFlowVlanCfi.Choice.Enum - (PatternFlowVlanId_Choice_Enum)(0), // 171: otg.PatternFlowVlanId.Choice.Enum - (PatternFlowVlanTpid_Choice_Enum)(0), // 172: otg.PatternFlowVlanTpid.Choice.Enum - (PatternFlowVxlanFlags_Choice_Enum)(0), // 173: otg.PatternFlowVxlanFlags.Choice.Enum - (PatternFlowVxlanReserved0_Choice_Enum)(0), // 174: otg.PatternFlowVxlanReserved0.Choice.Enum - (PatternFlowVxlanVni_Choice_Enum)(0), // 175: otg.PatternFlowVxlanVni.Choice.Enum - (PatternFlowVxlanReserved1_Choice_Enum)(0), // 176: otg.PatternFlowVxlanReserved1.Choice.Enum - (PatternFlowIpv4Version_Choice_Enum)(0), // 177: otg.PatternFlowIpv4Version.Choice.Enum - (PatternFlowIpv4HeaderLength_Choice_Enum)(0), // 178: otg.PatternFlowIpv4HeaderLength.Choice.Enum - (PatternFlowIpv4TotalLength_Choice_Enum)(0), // 179: otg.PatternFlowIpv4TotalLength.Choice.Enum - (PatternFlowIpv4Identification_Choice_Enum)(0), // 180: otg.PatternFlowIpv4Identification.Choice.Enum - (PatternFlowIpv4Reserved_Choice_Enum)(0), // 181: otg.PatternFlowIpv4Reserved.Choice.Enum - (PatternFlowIpv4DontFragment_Choice_Enum)(0), // 182: otg.PatternFlowIpv4DontFragment.Choice.Enum - (PatternFlowIpv4MoreFragments_Choice_Enum)(0), // 183: otg.PatternFlowIpv4MoreFragments.Choice.Enum - (PatternFlowIpv4FragmentOffset_Choice_Enum)(0), // 184: otg.PatternFlowIpv4FragmentOffset.Choice.Enum - (PatternFlowIpv4TimeToLive_Choice_Enum)(0), // 185: otg.PatternFlowIpv4TimeToLive.Choice.Enum - (PatternFlowIpv4Protocol_Choice_Enum)(0), // 186: otg.PatternFlowIpv4Protocol.Choice.Enum - (PatternFlowIpv4HeaderChecksum_Choice_Enum)(0), // 187: otg.PatternFlowIpv4HeaderChecksum.Choice.Enum - (PatternFlowIpv4HeaderChecksum_Generated_Enum)(0), // 188: otg.PatternFlowIpv4HeaderChecksum.Generated.Enum - (PatternFlowIpv4Src_Choice_Enum)(0), // 189: otg.PatternFlowIpv4Src.Choice.Enum - (PatternFlowIpv4Dst_Choice_Enum)(0), // 190: otg.PatternFlowIpv4Dst.Choice.Enum - (PatternFlowIpv4PriorityRaw_Choice_Enum)(0), // 191: otg.PatternFlowIpv4PriorityRaw.Choice.Enum - (PatternFlowIpv4DscpPhb_Choice_Enum)(0), // 192: otg.PatternFlowIpv4DscpPhb.Choice.Enum - (PatternFlowIpv4DscpEcn_Choice_Enum)(0), // 193: otg.PatternFlowIpv4DscpEcn.Choice.Enum - (PatternFlowIpv4TosPrecedence_Choice_Enum)(0), // 194: otg.PatternFlowIpv4TosPrecedence.Choice.Enum - (PatternFlowIpv4TosDelay_Choice_Enum)(0), // 195: otg.PatternFlowIpv4TosDelay.Choice.Enum - (PatternFlowIpv4TosThroughput_Choice_Enum)(0), // 196: otg.PatternFlowIpv4TosThroughput.Choice.Enum - (PatternFlowIpv4TosReliability_Choice_Enum)(0), // 197: otg.PatternFlowIpv4TosReliability.Choice.Enum - (PatternFlowIpv4TosMonetary_Choice_Enum)(0), // 198: otg.PatternFlowIpv4TosMonetary.Choice.Enum - (PatternFlowIpv4TosUnused_Choice_Enum)(0), // 199: otg.PatternFlowIpv4TosUnused.Choice.Enum - (PatternFlowIpv6Version_Choice_Enum)(0), // 200: otg.PatternFlowIpv6Version.Choice.Enum - (PatternFlowIpv6TrafficClass_Choice_Enum)(0), // 201: otg.PatternFlowIpv6TrafficClass.Choice.Enum - (PatternFlowIpv6FlowLabel_Choice_Enum)(0), // 202: otg.PatternFlowIpv6FlowLabel.Choice.Enum - (PatternFlowIpv6PayloadLength_Choice_Enum)(0), // 203: otg.PatternFlowIpv6PayloadLength.Choice.Enum - (PatternFlowIpv6NextHeader_Choice_Enum)(0), // 204: otg.PatternFlowIpv6NextHeader.Choice.Enum - (PatternFlowIpv6HopLimit_Choice_Enum)(0), // 205: otg.PatternFlowIpv6HopLimit.Choice.Enum - (PatternFlowIpv6Src_Choice_Enum)(0), // 206: otg.PatternFlowIpv6Src.Choice.Enum - (PatternFlowIpv6Dst_Choice_Enum)(0), // 207: otg.PatternFlowIpv6Dst.Choice.Enum - (PatternFlowPfcPauseDst_Choice_Enum)(0), // 208: otg.PatternFlowPfcPauseDst.Choice.Enum - (PatternFlowPfcPauseSrc_Choice_Enum)(0), // 209: otg.PatternFlowPfcPauseSrc.Choice.Enum - (PatternFlowPfcPauseEtherType_Choice_Enum)(0), // 210: otg.PatternFlowPfcPauseEtherType.Choice.Enum - (PatternFlowPfcPauseControlOpCode_Choice_Enum)(0), // 211: otg.PatternFlowPfcPauseControlOpCode.Choice.Enum - (PatternFlowPfcPauseClassEnableVector_Choice_Enum)(0), // 212: otg.PatternFlowPfcPauseClassEnableVector.Choice.Enum - (PatternFlowPfcPausePauseClass0_Choice_Enum)(0), // 213: otg.PatternFlowPfcPausePauseClass0.Choice.Enum - (PatternFlowPfcPausePauseClass1_Choice_Enum)(0), // 214: otg.PatternFlowPfcPausePauseClass1.Choice.Enum - (PatternFlowPfcPausePauseClass2_Choice_Enum)(0), // 215: otg.PatternFlowPfcPausePauseClass2.Choice.Enum - (PatternFlowPfcPausePauseClass3_Choice_Enum)(0), // 216: otg.PatternFlowPfcPausePauseClass3.Choice.Enum - (PatternFlowPfcPausePauseClass4_Choice_Enum)(0), // 217: otg.PatternFlowPfcPausePauseClass4.Choice.Enum - (PatternFlowPfcPausePauseClass5_Choice_Enum)(0), // 218: otg.PatternFlowPfcPausePauseClass5.Choice.Enum - (PatternFlowPfcPausePauseClass6_Choice_Enum)(0), // 219: otg.PatternFlowPfcPausePauseClass6.Choice.Enum - (PatternFlowPfcPausePauseClass7_Choice_Enum)(0), // 220: otg.PatternFlowPfcPausePauseClass7.Choice.Enum - (PatternFlowEthernetPauseDst_Choice_Enum)(0), // 221: otg.PatternFlowEthernetPauseDst.Choice.Enum - (PatternFlowEthernetPauseSrc_Choice_Enum)(0), // 222: otg.PatternFlowEthernetPauseSrc.Choice.Enum - (PatternFlowEthernetPauseEtherType_Choice_Enum)(0), // 223: otg.PatternFlowEthernetPauseEtherType.Choice.Enum - (PatternFlowEthernetPauseControlOpCode_Choice_Enum)(0), // 224: otg.PatternFlowEthernetPauseControlOpCode.Choice.Enum - (PatternFlowEthernetPauseTime_Choice_Enum)(0), // 225: otg.PatternFlowEthernetPauseTime.Choice.Enum - (PatternFlowTcpSrcPort_Choice_Enum)(0), // 226: otg.PatternFlowTcpSrcPort.Choice.Enum - (PatternFlowTcpDstPort_Choice_Enum)(0), // 227: otg.PatternFlowTcpDstPort.Choice.Enum - (PatternFlowTcpSeqNum_Choice_Enum)(0), // 228: otg.PatternFlowTcpSeqNum.Choice.Enum - (PatternFlowTcpAckNum_Choice_Enum)(0), // 229: otg.PatternFlowTcpAckNum.Choice.Enum - (PatternFlowTcpDataOffset_Choice_Enum)(0), // 230: otg.PatternFlowTcpDataOffset.Choice.Enum - (PatternFlowTcpEcnNs_Choice_Enum)(0), // 231: otg.PatternFlowTcpEcnNs.Choice.Enum - (PatternFlowTcpEcnCwr_Choice_Enum)(0), // 232: otg.PatternFlowTcpEcnCwr.Choice.Enum - (PatternFlowTcpEcnEcho_Choice_Enum)(0), // 233: otg.PatternFlowTcpEcnEcho.Choice.Enum - (PatternFlowTcpCtlUrg_Choice_Enum)(0), // 234: otg.PatternFlowTcpCtlUrg.Choice.Enum - (PatternFlowTcpCtlAck_Choice_Enum)(0), // 235: otg.PatternFlowTcpCtlAck.Choice.Enum - (PatternFlowTcpCtlPsh_Choice_Enum)(0), // 236: otg.PatternFlowTcpCtlPsh.Choice.Enum - (PatternFlowTcpCtlRst_Choice_Enum)(0), // 237: otg.PatternFlowTcpCtlRst.Choice.Enum - (PatternFlowTcpCtlSyn_Choice_Enum)(0), // 238: otg.PatternFlowTcpCtlSyn.Choice.Enum - (PatternFlowTcpCtlFin_Choice_Enum)(0), // 239: otg.PatternFlowTcpCtlFin.Choice.Enum - (PatternFlowTcpWindow_Choice_Enum)(0), // 240: otg.PatternFlowTcpWindow.Choice.Enum - (PatternFlowUdpSrcPort_Choice_Enum)(0), // 241: otg.PatternFlowUdpSrcPort.Choice.Enum - (PatternFlowUdpDstPort_Choice_Enum)(0), // 242: otg.PatternFlowUdpDstPort.Choice.Enum - (PatternFlowUdpLength_Choice_Enum)(0), // 243: otg.PatternFlowUdpLength.Choice.Enum - (PatternFlowUdpChecksum_Choice_Enum)(0), // 244: otg.PatternFlowUdpChecksum.Choice.Enum - (PatternFlowUdpChecksum_Generated_Enum)(0), // 245: otg.PatternFlowUdpChecksum.Generated.Enum - (PatternFlowGreChecksumPresent_Choice_Enum)(0), // 246: otg.PatternFlowGreChecksumPresent.Choice.Enum - (PatternFlowGreReserved0_Choice_Enum)(0), // 247: otg.PatternFlowGreReserved0.Choice.Enum - (PatternFlowGreVersion_Choice_Enum)(0), // 248: otg.PatternFlowGreVersion.Choice.Enum - (PatternFlowGreProtocol_Choice_Enum)(0), // 249: otg.PatternFlowGreProtocol.Choice.Enum - (PatternFlowGreChecksum_Choice_Enum)(0), // 250: otg.PatternFlowGreChecksum.Choice.Enum - (PatternFlowGreChecksum_Generated_Enum)(0), // 251: otg.PatternFlowGreChecksum.Generated.Enum - (PatternFlowGreReserved1_Choice_Enum)(0), // 252: otg.PatternFlowGreReserved1.Choice.Enum - (PatternFlowGtpv1Version_Choice_Enum)(0), // 253: otg.PatternFlowGtpv1Version.Choice.Enum - (PatternFlowGtpv1ProtocolType_Choice_Enum)(0), // 254: otg.PatternFlowGtpv1ProtocolType.Choice.Enum - (PatternFlowGtpv1Reserved_Choice_Enum)(0), // 255: otg.PatternFlowGtpv1Reserved.Choice.Enum - (PatternFlowGtpv1EFlag_Choice_Enum)(0), // 256: otg.PatternFlowGtpv1EFlag.Choice.Enum - (PatternFlowGtpv1SFlag_Choice_Enum)(0), // 257: otg.PatternFlowGtpv1SFlag.Choice.Enum - (PatternFlowGtpv1PnFlag_Choice_Enum)(0), // 258: otg.PatternFlowGtpv1PnFlag.Choice.Enum - (PatternFlowGtpv1MessageType_Choice_Enum)(0), // 259: otg.PatternFlowGtpv1MessageType.Choice.Enum - (PatternFlowGtpv1MessageLength_Choice_Enum)(0), // 260: otg.PatternFlowGtpv1MessageLength.Choice.Enum - (PatternFlowGtpv1Teid_Choice_Enum)(0), // 261: otg.PatternFlowGtpv1Teid.Choice.Enum - (PatternFlowGtpv1SquenceNumber_Choice_Enum)(0), // 262: otg.PatternFlowGtpv1SquenceNumber.Choice.Enum - (PatternFlowGtpv1NPduNumber_Choice_Enum)(0), // 263: otg.PatternFlowGtpv1NPduNumber.Choice.Enum - (PatternFlowGtpv1NextExtensionHeaderType_Choice_Enum)(0), // 264: otg.PatternFlowGtpv1NextExtensionHeaderType.Choice.Enum - (PatternFlowGtpExtensionExtensionLength_Choice_Enum)(0), // 265: otg.PatternFlowGtpExtensionExtensionLength.Choice.Enum - (PatternFlowGtpExtensionContents_Choice_Enum)(0), // 266: otg.PatternFlowGtpExtensionContents.Choice.Enum - (PatternFlowGtpExtensionNextExtensionHeader_Choice_Enum)(0), // 267: otg.PatternFlowGtpExtensionNextExtensionHeader.Choice.Enum - (PatternFlowGtpv2Version_Choice_Enum)(0), // 268: otg.PatternFlowGtpv2Version.Choice.Enum - (PatternFlowGtpv2PiggybackingFlag_Choice_Enum)(0), // 269: otg.PatternFlowGtpv2PiggybackingFlag.Choice.Enum - (PatternFlowGtpv2TeidFlag_Choice_Enum)(0), // 270: otg.PatternFlowGtpv2TeidFlag.Choice.Enum - (PatternFlowGtpv2Spare1_Choice_Enum)(0), // 271: otg.PatternFlowGtpv2Spare1.Choice.Enum - (PatternFlowGtpv2MessageType_Choice_Enum)(0), // 272: otg.PatternFlowGtpv2MessageType.Choice.Enum - (PatternFlowGtpv2MessageLength_Choice_Enum)(0), // 273: otg.PatternFlowGtpv2MessageLength.Choice.Enum - (PatternFlowGtpv2Teid_Choice_Enum)(0), // 274: otg.PatternFlowGtpv2Teid.Choice.Enum - (PatternFlowGtpv2SequenceNumber_Choice_Enum)(0), // 275: otg.PatternFlowGtpv2SequenceNumber.Choice.Enum - (PatternFlowGtpv2Spare2_Choice_Enum)(0), // 276: otg.PatternFlowGtpv2Spare2.Choice.Enum - (PatternFlowArpHardwareType_Choice_Enum)(0), // 277: otg.PatternFlowArpHardwareType.Choice.Enum - (PatternFlowArpProtocolType_Choice_Enum)(0), // 278: otg.PatternFlowArpProtocolType.Choice.Enum - (PatternFlowArpHardwareLength_Choice_Enum)(0), // 279: otg.PatternFlowArpHardwareLength.Choice.Enum - (PatternFlowArpProtocolLength_Choice_Enum)(0), // 280: otg.PatternFlowArpProtocolLength.Choice.Enum - (PatternFlowArpOperation_Choice_Enum)(0), // 281: otg.PatternFlowArpOperation.Choice.Enum - (PatternFlowArpSenderHardwareAddr_Choice_Enum)(0), // 282: otg.PatternFlowArpSenderHardwareAddr.Choice.Enum - (PatternFlowArpSenderProtocolAddr_Choice_Enum)(0), // 283: otg.PatternFlowArpSenderProtocolAddr.Choice.Enum - (PatternFlowArpTargetHardwareAddr_Choice_Enum)(0), // 284: otg.PatternFlowArpTargetHardwareAddr.Choice.Enum - (PatternFlowArpTargetProtocolAddr_Choice_Enum)(0), // 285: otg.PatternFlowArpTargetProtocolAddr.Choice.Enum - (PatternFlowIcmpEchoType_Choice_Enum)(0), // 286: otg.PatternFlowIcmpEchoType.Choice.Enum - (PatternFlowIcmpEchoCode_Choice_Enum)(0), // 287: otg.PatternFlowIcmpEchoCode.Choice.Enum - (PatternFlowIcmpEchoChecksum_Choice_Enum)(0), // 288: otg.PatternFlowIcmpEchoChecksum.Choice.Enum - (PatternFlowIcmpEchoChecksum_Generated_Enum)(0), // 289: otg.PatternFlowIcmpEchoChecksum.Generated.Enum - (PatternFlowIcmpEchoIdentifier_Choice_Enum)(0), // 290: otg.PatternFlowIcmpEchoIdentifier.Choice.Enum - (PatternFlowIcmpEchoSequenceNumber_Choice_Enum)(0), // 291: otg.PatternFlowIcmpEchoSequenceNumber.Choice.Enum - (PatternFlowIcmpCommonChecksum_Choice_Enum)(0), // 292: otg.PatternFlowIcmpCommonChecksum.Choice.Enum - (PatternFlowIcmpCommonChecksum_Generated_Enum)(0), // 293: otg.PatternFlowIcmpCommonChecksum.Generated.Enum - (PatternFlowIcmpNextFieldsIdentifier_Choice_Enum)(0), // 294: otg.PatternFlowIcmpNextFieldsIdentifier.Choice.Enum - (PatternFlowIcmpNextFieldsSequenceNumber_Choice_Enum)(0), // 295: otg.PatternFlowIcmpNextFieldsSequenceNumber.Choice.Enum - (PatternFlowIcmpv6EchoType_Choice_Enum)(0), // 296: otg.PatternFlowIcmpv6EchoType.Choice.Enum - (PatternFlowIcmpv6EchoCode_Choice_Enum)(0), // 297: otg.PatternFlowIcmpv6EchoCode.Choice.Enum - (PatternFlowIcmpv6EchoIdentifier_Choice_Enum)(0), // 298: otg.PatternFlowIcmpv6EchoIdentifier.Choice.Enum - (PatternFlowIcmpv6EchoSequenceNumber_Choice_Enum)(0), // 299: otg.PatternFlowIcmpv6EchoSequenceNumber.Choice.Enum - (PatternFlowIcmpv6EchoChecksum_Choice_Enum)(0), // 300: otg.PatternFlowIcmpv6EchoChecksum.Choice.Enum - (PatternFlowIcmpv6EchoChecksum_Generated_Enum)(0), // 301: otg.PatternFlowIcmpv6EchoChecksum.Generated.Enum - (PatternFlowIcmpv6CommonChecksum_Choice_Enum)(0), // 302: otg.PatternFlowIcmpv6CommonChecksum.Choice.Enum - (PatternFlowIcmpv6CommonChecksum_Generated_Enum)(0), // 303: otg.PatternFlowIcmpv6CommonChecksum.Generated.Enum - (PatternFlowPppAddress_Choice_Enum)(0), // 304: otg.PatternFlowPppAddress.Choice.Enum - (PatternFlowPppControl_Choice_Enum)(0), // 305: otg.PatternFlowPppControl.Choice.Enum - (PatternFlowPppProtocolType_Choice_Enum)(0), // 306: otg.PatternFlowPppProtocolType.Choice.Enum - (PatternFlowIgmpv1Version_Choice_Enum)(0), // 307: otg.PatternFlowIgmpv1Version.Choice.Enum - (PatternFlowIgmpv1Type_Choice_Enum)(0), // 308: otg.PatternFlowIgmpv1Type.Choice.Enum - (PatternFlowIgmpv1Unused_Choice_Enum)(0), // 309: otg.PatternFlowIgmpv1Unused.Choice.Enum - (PatternFlowIgmpv1Checksum_Choice_Enum)(0), // 310: otg.PatternFlowIgmpv1Checksum.Choice.Enum - (PatternFlowIgmpv1Checksum_Generated_Enum)(0), // 311: otg.PatternFlowIgmpv1Checksum.Generated.Enum - (PatternFlowIgmpv1GroupAddress_Choice_Enum)(0), // 312: otg.PatternFlowIgmpv1GroupAddress.Choice.Enum - (PatternFlowMplsLabel_Choice_Enum)(0), // 313: otg.PatternFlowMplsLabel.Choice.Enum - (PatternFlowMplsTrafficClass_Choice_Enum)(0), // 314: otg.PatternFlowMplsTrafficClass.Choice.Enum - (PatternFlowMplsBottomOfStack_Choice_Enum)(0), // 315: otg.PatternFlowMplsBottomOfStack.Choice.Enum - (PatternFlowMplsTimeToLive_Choice_Enum)(0), // 316: otg.PatternFlowMplsTimeToLive.Choice.Enum - (*Config)(nil), // 317: otg.Config - (*ConfigOptions)(nil), // 318: otg.ConfigOptions - (*Port)(nil), // 319: otg.Port - (*PortOptions)(nil), // 320: otg.PortOptions - (*Lag)(nil), // 321: otg.Lag - (*LagPort)(nil), // 322: otg.LagPort - (*LagProtocol)(nil), // 323: otg.LagProtocol - (*LagProtocolStatic)(nil), // 324: otg.LagProtocolStatic - (*LagProtocolLacp)(nil), // 325: otg.LagProtocolLacp - (*LagPortLacp)(nil), // 326: otg.LagPortLacp - (*DeviceEthernetBase)(nil), // 327: otg.DeviceEthernetBase - (*DeviceEthernet)(nil), // 328: otg.DeviceEthernet - (*EthernetConnection)(nil), // 329: otg.EthernetConnection - (*DeviceVlan)(nil), // 330: otg.DeviceVlan - (*DeviceIpv4)(nil), // 331: otg.DeviceIpv4 - (*DeviceIpv4Loopback)(nil), // 332: otg.DeviceIpv4Loopback - (*DeviceIpv4GatewayMAC)(nil), // 333: otg.DeviceIpv4GatewayMAC - (*DeviceIpv6)(nil), // 334: otg.DeviceIpv6 - (*DeviceIpv6Loopback)(nil), // 335: otg.DeviceIpv6Loopback - (*DeviceIpv6GatewayMAC)(nil), // 336: otg.DeviceIpv6GatewayMAC - (*Layer1)(nil), // 337: otg.Layer1 - (*Layer1AutoNegotiation)(nil), // 338: otg.Layer1AutoNegotiation - (*Layer1FlowControl)(nil), // 339: otg.Layer1FlowControl - (*Layer1Ieee8023X)(nil), // 340: otg.Layer1Ieee8023x - (*Layer1Ieee8021Qbb)(nil), // 341: otg.Layer1Ieee8021qbb - (*Capture)(nil), // 342: otg.Capture - (*CaptureFilter)(nil), // 343: otg.CaptureFilter - (*CaptureCustom)(nil), // 344: otg.CaptureCustom - (*CaptureField)(nil), // 345: otg.CaptureField - (*CaptureEthernet)(nil), // 346: otg.CaptureEthernet - (*CaptureVlan)(nil), // 347: otg.CaptureVlan - (*CaptureIpv4)(nil), // 348: otg.CaptureIpv4 - (*CaptureIpv6)(nil), // 349: otg.CaptureIpv6 - (*Device)(nil), // 350: otg.Device - (*ProtocolOptions)(nil), // 351: otg.ProtocolOptions - (*DeviceIsisRouter)(nil), // 352: otg.DeviceIsisRouter - (*DeviceIsisMultiInstance)(nil), // 353: otg.DeviceIsisMultiInstance - (*IsisInterface)(nil), // 354: otg.IsisInterface - (*IsisInterfaceLevel)(nil), // 355: otg.IsisInterfaceLevel - (*IsisMT)(nil), // 356: otg.IsisMT - (*LinkStateTE)(nil), // 357: otg.LinkStateTE - (*LinkStatepriorityBandwidths)(nil), // 358: otg.LinkStatepriorityBandwidths - (*IsisInterfaceAuthentication)(nil), // 359: otg.IsisInterfaceAuthentication - (*IsisInterfaceAdvanced)(nil), // 360: otg.IsisInterfaceAdvanced - (*IsisInterfaceLinkProtection)(nil), // 361: otg.IsisInterfaceLinkProtection - (*IsisBasic)(nil), // 362: otg.IsisBasic - (*IsisAdvanced)(nil), // 363: otg.IsisAdvanced - (*IsisAuthentication)(nil), // 364: otg.IsisAuthentication - (*IsisAuthenticationBase)(nil), // 365: otg.IsisAuthenticationBase - (*IsisV4RouteRange)(nil), // 366: otg.IsisV4RouteRange - (*V4RouteAddress)(nil), // 367: otg.V4RouteAddress - (*V6RouteAddress)(nil), // 368: otg.V6RouteAddress - (*MACRouteAddress)(nil), // 369: otg.MACRouteAddress - (*IsisV6RouteRange)(nil), // 370: otg.IsisV6RouteRange - (*DeviceBgpRouter)(nil), // 371: otg.DeviceBgpRouter - (*DeviceBgpMessageHeaderError)(nil), // 372: otg.DeviceBgpMessageHeaderError - (*DeviceBgpOpenMessageError)(nil), // 373: otg.DeviceBgpOpenMessageError - (*DeviceBgpUpdateMessageError)(nil), // 374: otg.DeviceBgpUpdateMessageError - (*DeviceBgpHoldTimerExpired)(nil), // 375: otg.DeviceBgpHoldTimerExpired - (*DeviceBgpFiniteStateMachineError)(nil), // 376: otg.DeviceBgpFiniteStateMachineError - (*DeviceBgpCeaseError)(nil), // 377: otg.DeviceBgpCeaseError - (*DeviceBgpCustomError)(nil), // 378: otg.DeviceBgpCustomError - (*BgpV4Peer)(nil), // 379: otg.BgpV4Peer - (*BgpV4Interface)(nil), // 380: otg.BgpV4Interface - (*BgpV4EthernetSegment)(nil), // 381: otg.BgpV4EthernetSegment - (*BgpEthernetSegmentDfElection)(nil), // 382: otg.BgpEthernetSegmentDfElection - (*BgpRouteAdvanced)(nil), // 383: otg.BgpRouteAdvanced - (*BgpCommunity)(nil), // 384: otg.BgpCommunity - (*BgpExtCommunity)(nil), // 385: otg.BgpExtCommunity - (*BgpAsPath)(nil), // 386: otg.BgpAsPath - (*BgpAsPathSegment)(nil), // 387: otg.BgpAsPathSegment - (*BgpV4EvpnEvis)(nil), // 388: otg.BgpV4EvpnEvis - (*BgpV4EviVxlan)(nil), // 389: otg.BgpV4EviVxlan - (*BgpV4EviVxlanBroadcastDomain)(nil), // 390: otg.BgpV4EviVxlanBroadcastDomain - (*BgpCMacIpRange)(nil), // 391: otg.BgpCMacIpRange - (*BgpRouteDistinguisher)(nil), // 392: otg.BgpRouteDistinguisher - (*BgpRouteTarget)(nil), // 393: otg.BgpRouteTarget - (*BgpAdvanced)(nil), // 394: otg.BgpAdvanced - (*BgpCapability)(nil), // 395: otg.BgpCapability - (*BgpLearnedInformationFilter)(nil), // 396: otg.BgpLearnedInformationFilter - (*BgpV4RouteRange)(nil), // 397: otg.BgpV4RouteRange - (*BgpAddPath)(nil), // 398: otg.BgpAddPath - (*BgpExtendedCommunity)(nil), // 399: otg.BgpExtendedCommunity - (*BgpExtendedCommunityTransitive2OctetAsTypeRouteTarget)(nil), // 400: otg.BgpExtendedCommunityTransitive2OctetAsTypeRouteTarget - (*BgpExtendedCommunityTransitive2OctetAsTypeRouteOrigin)(nil), // 401: otg.BgpExtendedCommunityTransitive2OctetAsTypeRouteOrigin - (*BgpExtendedCommunityTransitive2OctetAsType)(nil), // 402: otg.BgpExtendedCommunityTransitive2OctetAsType - (*BgpExtendedCommunityTransitiveIpv4AddressTypeRouteOrigin)(nil), // 403: otg.BgpExtendedCommunityTransitiveIpv4AddressTypeRouteOrigin - (*BgpExtendedCommunityTransitiveIpv4AddressTypeRouteTarget)(nil), // 404: otg.BgpExtendedCommunityTransitiveIpv4AddressTypeRouteTarget - (*BgpExtendedCommunityTransitiveIpv4AddressType)(nil), // 405: otg.BgpExtendedCommunityTransitiveIpv4AddressType - (*BgpExtendedCommunityTransitive4OctetAsTypeRouteTarget)(nil), // 406: otg.BgpExtendedCommunityTransitive4OctetAsTypeRouteTarget - (*BgpExtendedCommunityTransitive4OctetAsTypeRouteOrigin)(nil), // 407: otg.BgpExtendedCommunityTransitive4OctetAsTypeRouteOrigin - (*BgpExtendedCommunityTransitive4OctetAsType)(nil), // 408: otg.BgpExtendedCommunityTransitive4OctetAsType - (*BgpExtendedCommunityTransitiveOpaqueTypeColor)(nil), // 409: otg.BgpExtendedCommunityTransitiveOpaqueTypeColor - (*BgpExtendedCommunityTransitiveOpaqueTypeEncapsulation)(nil), // 410: otg.BgpExtendedCommunityTransitiveOpaqueTypeEncapsulation - (*BgpExtendedCommunityTransitiveOpaqueType)(nil), // 411: otg.BgpExtendedCommunityTransitiveOpaqueType - (*BgpExtendedCommunityTransitiveEvpnTypeRouterMac)(nil), // 412: otg.BgpExtendedCommunityTransitiveEvpnTypeRouterMac - (*BgpExtendedCommunityTransitiveEvpnType)(nil), // 413: otg.BgpExtendedCommunityTransitiveEvpnType - (*BgpExtendedCommunityNonTransitive2OctetAsTypeLinkBandwidth)(nil), // 414: otg.BgpExtendedCommunityNonTransitive2OctetAsTypeLinkBandwidth - (*BgpExtendedCommunityNonTransitive2OctetAsType)(nil), // 415: otg.BgpExtendedCommunityNonTransitive2OctetAsType - (*BgpExtendedCommunityCustomType)(nil), // 416: otg.BgpExtendedCommunityCustomType - (*BgpV6RouteRange)(nil), // 417: otg.BgpV6RouteRange - (*BgpSrteV4Policy)(nil), // 418: otg.BgpSrteV4Policy - (*BgpSrteV4TunnelTlv)(nil), // 419: otg.BgpSrteV4TunnelTlv - (*BgpSrteRemoteEndpointSubTlv)(nil), // 420: otg.BgpSrteRemoteEndpointSubTlv - (*BgpSrteColorSubTlv)(nil), // 421: otg.BgpSrteColorSubTlv - (*BgpSrteBindingSubTlv)(nil), // 422: otg.BgpSrteBindingSubTlv - (*BgpSrtePreferenceSubTlv)(nil), // 423: otg.BgpSrtePreferenceSubTlv - (*BgpSrtePolicyPrioritySubTlv)(nil), // 424: otg.BgpSrtePolicyPrioritySubTlv - (*BgpSrtePolicyNameSubTlv)(nil), // 425: otg.BgpSrtePolicyNameSubTlv - (*BgpSrteExplicitNullLabelPolicySubTlv)(nil), // 426: otg.BgpSrteExplicitNullLabelPolicySubTlv - (*BgpSrteSegmentList)(nil), // 427: otg.BgpSrteSegmentList - (*BgpSrteSegment)(nil), // 428: otg.BgpSrteSegment - (*BgpSrteSrMplsSid)(nil), // 429: otg.BgpSrteSrMplsSid - (*BgpSrteSRv6SIDEndpointBehaviorAndStructure)(nil), // 430: otg.BgpSrteSRv6SIDEndpointBehaviorAndStructure - (*BgpSrteSegmentATypeSubTlv)(nil), // 431: otg.BgpSrteSegmentATypeSubTlv - (*BgpSrteSegmentBTypeSubTlv)(nil), // 432: otg.BgpSrteSegmentBTypeSubTlv - (*BgpSrteSegmentCTypeSubTlv)(nil), // 433: otg.BgpSrteSegmentCTypeSubTlv - (*BgpSrteSegmentDTypeSubTlv)(nil), // 434: otg.BgpSrteSegmentDTypeSubTlv - (*BgpSrteSegmentETypeSubTlv)(nil), // 435: otg.BgpSrteSegmentETypeSubTlv - (*BgpSrteSegmentFTypeSubTlv)(nil), // 436: otg.BgpSrteSegmentFTypeSubTlv - (*BgpSrteSegmentGTypeSubTlv)(nil), // 437: otg.BgpSrteSegmentGTypeSubTlv - (*BgpSrteSegmentHTypeSubTlv)(nil), // 438: otg.BgpSrteSegmentHTypeSubTlv - (*BgpSrteSegmentITypeSubTlv)(nil), // 439: otg.BgpSrteSegmentITypeSubTlv - (*BgpSrteSegmentJTypeSubTlv)(nil), // 440: otg.BgpSrteSegmentJTypeSubTlv - (*BgpSrteSegmentKTypeSubTlv)(nil), // 441: otg.BgpSrteSegmentKTypeSubTlv - (*BgpSrteV6Policy)(nil), // 442: otg.BgpSrteV6Policy - (*BgpSrteV6TunnelTlv)(nil), // 443: otg.BgpSrteV6TunnelTlv - (*BgpGracefulRestart)(nil), // 444: otg.BgpGracefulRestart - (*BgpV6Peer)(nil), // 445: otg.BgpV6Peer - (*BgpV6Interface)(nil), // 446: otg.BgpV6Interface - (*BgpV6SegmentRouting)(nil), // 447: otg.BgpV6SegmentRouting - (*BgpV6EthernetSegment)(nil), // 448: otg.BgpV6EthernetSegment - (*BgpV6EvpnEvis)(nil), // 449: otg.BgpV6EvpnEvis - (*BgpV6EviVxlan)(nil), // 450: otg.BgpV6EviVxlan - (*BgpV6EviVxlanBroadcastDomain)(nil), // 451: otg.BgpV6EviVxlanBroadcastDomain - (*DeviceVxlan)(nil), // 452: otg.DeviceVxlan - (*VxlanV4Tunnel)(nil), // 453: otg.VxlanV4Tunnel - (*VxlanV6Tunnel)(nil), // 454: otg.VxlanV6Tunnel - (*VxlanV4TunnelDestinationIPMode)(nil), // 455: otg.VxlanV4TunnelDestinationIPMode - (*VxlanV6TunnelDestinationIPMode)(nil), // 456: otg.VxlanV6TunnelDestinationIPMode - (*VxlanV4TunnelDestinationIPModeUnicast)(nil), // 457: otg.VxlanV4TunnelDestinationIPModeUnicast - (*VxlanV6TunnelDestinationIPModeUnicast)(nil), // 458: otg.VxlanV6TunnelDestinationIPModeUnicast - (*VxlanTunnelDestinationIPModeUnicastArpSuppressionCache)(nil), // 459: otg.VxlanTunnelDestinationIPModeUnicastArpSuppressionCache - (*VxlanV4TunnelDestinationIPModeUnicastVtep)(nil), // 460: otg.VxlanV4TunnelDestinationIPModeUnicastVtep - (*VxlanV6TunnelDestinationIPModeUnicastVtep)(nil), // 461: otg.VxlanV6TunnelDestinationIPModeUnicastVtep - (*VxlanV4TunnelDestinationIPModeMulticast)(nil), // 462: otg.VxlanV4TunnelDestinationIPModeMulticast - (*VxlanV6TunnelDestinationIPModeMulticast)(nil), // 463: otg.VxlanV6TunnelDestinationIPModeMulticast - (*DeviceRsvp)(nil), // 464: otg.DeviceRsvp - (*RsvpIpv4Interface)(nil), // 465: otg.RsvpIpv4Interface - (*RsvpLspIpv4Interface)(nil), // 466: otg.RsvpLspIpv4Interface - (*RsvpLspIpv4InterfaceP2PEgressIpv4Lsp)(nil), // 467: otg.RsvpLspIpv4InterfaceP2PEgressIpv4Lsp - (*RsvpLspIpv4InterfaceP2PIngressIpv4Lsp)(nil), // 468: otg.RsvpLspIpv4InterfaceP2PIngressIpv4Lsp - (*RsvpSessionAttribute)(nil), // 469: otg.RsvpSessionAttribute - (*RsvpResourceAffinities)(nil), // 470: otg.RsvpResourceAffinities - (*RsvpTspec)(nil), // 471: otg.RsvpTspec - (*RsvpFastReroute)(nil), // 472: otg.RsvpFastReroute - (*RsvpEro)(nil), // 473: otg.RsvpEro - (*RsvpEroSubobject)(nil), // 474: otg.RsvpEroSubobject - (*Flow)(nil), // 475: otg.Flow - (*FlowTxRx)(nil), // 476: otg.FlowTxRx - (*FlowPort)(nil), // 477: otg.FlowPort - (*FlowRouter)(nil), // 478: otg.FlowRouter - (*FlowHeader)(nil), // 479: otg.FlowHeader - (*FlowCustom)(nil), // 480: otg.FlowCustom - (*FlowCustomMetricTag)(nil), // 481: otg.FlowCustomMetricTag - (*FlowEthernet)(nil), // 482: otg.FlowEthernet - (*FlowVlan)(nil), // 483: otg.FlowVlan - (*FlowVxlan)(nil), // 484: otg.FlowVxlan - (*FlowIpv4)(nil), // 485: otg.FlowIpv4 - (*FlowIpv4Priority)(nil), // 486: otg.FlowIpv4Priority - (*FlowIpv4Dscp)(nil), // 487: otg.FlowIpv4Dscp - (*FlowIpv4Tos)(nil), // 488: otg.FlowIpv4Tos - (*FlowIpv6)(nil), // 489: otg.FlowIpv6 - (*FlowPfcPause)(nil), // 490: otg.FlowPfcPause - (*FlowEthernetPause)(nil), // 491: otg.FlowEthernetPause - (*FlowTcp)(nil), // 492: otg.FlowTcp - (*FlowUdp)(nil), // 493: otg.FlowUdp - (*FlowGre)(nil), // 494: otg.FlowGre - (*FlowGtpv1)(nil), // 495: otg.FlowGtpv1 - (*FlowGtpExtension)(nil), // 496: otg.FlowGtpExtension - (*FlowGtpv2)(nil), // 497: otg.FlowGtpv2 - (*FlowArp)(nil), // 498: otg.FlowArp - (*FlowIcmp)(nil), // 499: otg.FlowIcmp - (*FlowIcmpEcho)(nil), // 500: otg.FlowIcmpEcho - (*FlowIcmpv6)(nil), // 501: otg.FlowIcmpv6 - (*FlowIcmpv6Echo)(nil), // 502: otg.FlowIcmpv6Echo - (*FlowPpp)(nil), // 503: otg.FlowPpp - (*FlowIgmpv1)(nil), // 504: otg.FlowIgmpv1 - (*FlowMpls)(nil), // 505: otg.FlowMpls - (*FlowSize)(nil), // 506: otg.FlowSize - (*FlowSizeIncrement)(nil), // 507: otg.FlowSizeIncrement - (*FlowSizeRandom)(nil), // 508: otg.FlowSizeRandom - (*FlowSizeWeightPairs)(nil), // 509: otg.FlowSizeWeightPairs - (*FlowSizeWeightPairsCustom)(nil), // 510: otg.FlowSizeWeightPairsCustom - (*FlowRate)(nil), // 511: otg.FlowRate - (*FlowDuration)(nil), // 512: otg.FlowDuration - (*FlowContinuous)(nil), // 513: otg.FlowContinuous - (*FlowDelay)(nil), // 514: otg.FlowDelay - (*FlowFixedPackets)(nil), // 515: otg.FlowFixedPackets - (*FlowFixedSeconds)(nil), // 516: otg.FlowFixedSeconds - (*FlowBurst)(nil), // 517: otg.FlowBurst - (*FlowDurationInterBurstGap)(nil), // 518: otg.FlowDurationInterBurstGap - (*FlowMetrics)(nil), // 519: otg.FlowMetrics - (*FlowLatencyMetrics)(nil), // 520: otg.FlowLatencyMetrics - (*FlowPredefinedTags)(nil), // 521: otg.FlowPredefinedTags - (*FlowRxTxRatio)(nil), // 522: otg.FlowRxTxRatio - (*FlowRxTxRatioRxCount)(nil), // 523: otg.FlowRxTxRatioRxCount - (*Event)(nil), // 524: otg.Event - (*EventRxRateThreshold)(nil), // 525: otg.EventRxRateThreshold - (*EventLink)(nil), // 526: otg.EventLink - (*EventRouteAdvertiseWithdraw)(nil), // 527: otg.EventRouteAdvertiseWithdraw - (*EventRequest)(nil), // 528: otg.EventRequest - (*EventSubscription)(nil), // 529: otg.EventSubscription - (*Lldp)(nil), // 530: otg.Lldp - (*LldpConnection)(nil), // 531: otg.LldpConnection - (*LldpChassisId)(nil), // 532: otg.LldpChassisId - (*LldpPortId)(nil), // 533: otg.LldpPortId - (*LldpChassisMacSubType)(nil), // 534: otg.LldpChassisMacSubType - (*LldpPortInterfaceNameSubType)(nil), // 535: otg.LldpPortInterfaceNameSubType - (*LldpSystemName)(nil), // 536: otg.LldpSystemName - (*Error)(nil), // 537: otg.Error - (*Warning)(nil), // 538: otg.Warning - (*ConfigUpdate)(nil), // 539: otg.ConfigUpdate - (*FlowsUpdate)(nil), // 540: otg.FlowsUpdate - (*ControlState)(nil), // 541: otg.ControlState - (*StatePort)(nil), // 542: otg.StatePort - (*StateTraffic)(nil), // 543: otg.StateTraffic - (*StateProtocol)(nil), // 544: otg.StateProtocol - (*StatePortLink)(nil), // 545: otg.StatePortLink - (*StatePortCapture)(nil), // 546: otg.StatePortCapture - (*StateTrafficFlowTransmit)(nil), // 547: otg.StateTrafficFlowTransmit - (*StateProtocolAll)(nil), // 548: otg.StateProtocolAll - (*StateProtocolRoute)(nil), // 549: otg.StateProtocolRoute - (*StateProtocolLacp)(nil), // 550: otg.StateProtocolLacp - (*StateProtocolLacpAdmin)(nil), // 551: otg.StateProtocolLacpAdmin - (*StateProtocolLacpMemberPorts)(nil), // 552: otg.StateProtocolLacpMemberPorts - (*StateProtocolBgp)(nil), // 553: otg.StateProtocolBgp - (*StateProtocolBgpPeers)(nil), // 554: otg.StateProtocolBgpPeers - (*StateProtocolIsis)(nil), // 555: otg.StateProtocolIsis - (*StateProtocolIsisRouters)(nil), // 556: otg.StateProtocolIsisRouters - (*ControlAction)(nil), // 557: otg.ControlAction - (*ControlActionResponse)(nil), // 558: otg.ControlActionResponse - (*ActionResponse)(nil), // 559: otg.ActionResponse - (*ActionProtocol)(nil), // 560: otg.ActionProtocol - (*ActionResponseProtocol)(nil), // 561: otg.ActionResponseProtocol - (*ActionProtocolIpv4)(nil), // 562: otg.ActionProtocolIpv4 - (*ActionResponseProtocolIpv4)(nil), // 563: otg.ActionResponseProtocolIpv4 - (*ActionProtocolIpv4Ping)(nil), // 564: otg.ActionProtocolIpv4Ping - (*ActionProtocolIpv4PingRequest)(nil), // 565: otg.ActionProtocolIpv4PingRequest - (*ActionResponseProtocolIpv4Ping)(nil), // 566: otg.ActionResponseProtocolIpv4Ping - (*ActionResponseProtocolIpv4PingResponse)(nil), // 567: otg.ActionResponseProtocolIpv4PingResponse - (*ActionProtocolIpv6)(nil), // 568: otg.ActionProtocolIpv6 - (*ActionResponseProtocolIpv6)(nil), // 569: otg.ActionResponseProtocolIpv6 - (*ActionProtocolIpv6Ping)(nil), // 570: otg.ActionProtocolIpv6Ping - (*ActionProtocolIpv6PingRequest)(nil), // 571: otg.ActionProtocolIpv6PingRequest - (*ActionResponseProtocolIpv6Ping)(nil), // 572: otg.ActionResponseProtocolIpv6Ping - (*ActionResponseProtocolIpv6PingResponse)(nil), // 573: otg.ActionResponseProtocolIpv6PingResponse - (*ActionProtocolBgp)(nil), // 574: otg.ActionProtocolBgp - (*ActionProtocolBgpNotification)(nil), // 575: otg.ActionProtocolBgpNotification - (*ActionProtocolBgpInitiateGracefulRestart)(nil), // 576: otg.ActionProtocolBgpInitiateGracefulRestart - (*MetricsRequest)(nil), // 577: otg.MetricsRequest - (*MetricsResponse)(nil), // 578: otg.MetricsResponse - (*PortMetricsRequest)(nil), // 579: otg.PortMetricsRequest - (*PortMetric)(nil), // 580: otg.PortMetric - (*FlowMetricsRequest)(nil), // 581: otg.FlowMetricsRequest - (*FlowTaggedMetricsFilter)(nil), // 582: otg.FlowTaggedMetricsFilter - (*FlowMetricTagFilter)(nil), // 583: otg.FlowMetricTagFilter - (*FlowMetric)(nil), // 584: otg.FlowMetric - (*FlowTaggedMetric)(nil), // 585: otg.FlowTaggedMetric - (*FlowMetricTag)(nil), // 586: otg.FlowMetricTag - (*FlowMetricTagValue)(nil), // 587: otg.FlowMetricTagValue - (*MetricTimestamp)(nil), // 588: otg.MetricTimestamp - (*MetricLatency)(nil), // 589: otg.MetricLatency - (*Bgpv4MetricsRequest)(nil), // 590: otg.Bgpv4MetricsRequest - (*Bgpv4Metric)(nil), // 591: otg.Bgpv4Metric - (*Bgpv6MetricsRequest)(nil), // 592: otg.Bgpv6MetricsRequest - (*Bgpv6Metric)(nil), // 593: otg.Bgpv6Metric - (*IsisMetricsRequest)(nil), // 594: otg.IsisMetricsRequest - (*IsisMetric)(nil), // 595: otg.IsisMetric - (*LagMetricsRequest)(nil), // 596: otg.LagMetricsRequest - (*LagMetric)(nil), // 597: otg.LagMetric - (*LacpMetricsRequest)(nil), // 598: otg.LacpMetricsRequest - (*LacpMetric)(nil), // 599: otg.LacpMetric - (*LldpMetricsRequest)(nil), // 600: otg.LldpMetricsRequest - (*LldpMetric)(nil), // 601: otg.LldpMetric - (*RsvpMetricsRequest)(nil), // 602: otg.RsvpMetricsRequest - (*RsvpMetric)(nil), // 603: otg.RsvpMetric - (*StatesRequest)(nil), // 604: otg.StatesRequest - (*StatesResponse)(nil), // 605: otg.StatesResponse - (*Neighborsv4StatesRequest)(nil), // 606: otg.Neighborsv4StatesRequest - (*Neighborsv4State)(nil), // 607: otg.Neighborsv4State - (*Neighborsv6StatesRequest)(nil), // 608: otg.Neighborsv6StatesRequest - (*Neighborsv6State)(nil), // 609: otg.Neighborsv6State - (*BgpPrefixStateRequest)(nil), // 610: otg.BgpPrefixStateRequest - (*BgpPrefixIpv4UnicastFilter)(nil), // 611: otg.BgpPrefixIpv4UnicastFilter - (*BgpPrefixIpv6UnicastFilter)(nil), // 612: otg.BgpPrefixIpv6UnicastFilter - (*BgpPrefixesState)(nil), // 613: otg.BgpPrefixesState - (*BgpPrefixIpv4UnicastState)(nil), // 614: otg.BgpPrefixIpv4UnicastState - (*BgpPrefixIpv6UnicastState)(nil), // 615: otg.BgpPrefixIpv6UnicastState - (*ResultBgpCommunity)(nil), // 616: otg.ResultBgpCommunity - (*ResultBgpAsPath)(nil), // 617: otg.ResultBgpAsPath - (*ResultBgpAsPathSegment)(nil), // 618: otg.ResultBgpAsPathSegment - (*IsisLspsStateRequest)(nil), // 619: otg.IsisLspsStateRequest - (*IsisLspsState)(nil), // 620: otg.IsisLspsState - (*IsisLspState)(nil), // 621: otg.IsisLspState - (*IsisLspTlvs)(nil), // 622: otg.IsisLspTlvs - (*IsisLspHostname)(nil), // 623: otg.IsisLspHostname - (*IsisLspFlags)(nil), // 624: otg.IsisLspFlags - (*IsisLspIsReachabilityTlv)(nil), // 625: otg.IsisLspIsReachabilityTlv - (*IsisLspExtendedIsReachabilityTlv)(nil), // 626: otg.IsisLspExtendedIsReachabilityTlv - (*IsisLspneighbor)(nil), // 627: otg.IsisLspneighbor - (*IsisLspIpv4InternalReachabilityTlv)(nil), // 628: otg.IsisLspIpv4InternalReachabilityTlv - (*IsisLspIpv4ExternalReachabilityTlv)(nil), // 629: otg.IsisLspIpv4ExternalReachabilityTlv - (*IsisLspV4Prefix)(nil), // 630: otg.IsisLspV4Prefix - (*IsisLspExtendedIpv4ReachabilityTlv)(nil), // 631: otg.IsisLspExtendedIpv4ReachabilityTlv - (*IsisLspExtendedV4Prefix)(nil), // 632: otg.IsisLspExtendedV4Prefix - (*IsisLspIpv6ReachabilityTlv)(nil), // 633: otg.IsisLspIpv6ReachabilityTlv - (*IsisLspV6Prefix)(nil), // 634: otg.IsisLspV6Prefix - (*IsisLspPrefixAttributes)(nil), // 635: otg.IsisLspPrefixAttributes - (*LldpNeighborsStateRequest)(nil), // 636: otg.LldpNeighborsStateRequest - (*LldpNeighborsState)(nil), // 637: otg.LldpNeighborsState - (*LldpCustomTLVState)(nil), // 638: otg.LldpCustomTLVState - (*LldpCapabilityState)(nil), // 639: otg.LldpCapabilityState - (*RsvpLspsStateRequest)(nil), // 640: otg.RsvpLspsStateRequest - (*RsvpLspsState)(nil), // 641: otg.RsvpLspsState - (*RsvpIPv4LspState)(nil), // 642: otg.RsvpIPv4LspState - (*RsvpLspState)(nil), // 643: otg.RsvpLspState - (*RsvpLspIpv4Rro)(nil), // 644: otg.RsvpLspIpv4Rro - (*RsvpLspIpv4Ero)(nil), // 645: otg.RsvpLspIpv4Ero - (*CaptureRequest)(nil), // 646: otg.CaptureRequest - (*PatternFlowEthernetDstCounter)(nil), // 647: otg.PatternFlowEthernetDstCounter - (*PatternFlowEthernetDstMetricTag)(nil), // 648: otg.PatternFlowEthernetDstMetricTag - (*PatternFlowEthernetDst)(nil), // 649: otg.PatternFlowEthernetDst - (*PatternFlowEthernetSrcCounter)(nil), // 650: otg.PatternFlowEthernetSrcCounter - (*PatternFlowEthernetSrcMetricTag)(nil), // 651: otg.PatternFlowEthernetSrcMetricTag - (*PatternFlowEthernetSrc)(nil), // 652: otg.PatternFlowEthernetSrc - (*PatternFlowEthernetEtherTypeCounter)(nil), // 653: otg.PatternFlowEthernetEtherTypeCounter - (*PatternFlowEthernetEtherTypeMetricTag)(nil), // 654: otg.PatternFlowEthernetEtherTypeMetricTag - (*PatternFlowEthernetEtherType)(nil), // 655: otg.PatternFlowEthernetEtherType - (*PatternFlowEthernetPfcQueueCounter)(nil), // 656: otg.PatternFlowEthernetPfcQueueCounter - (*PatternFlowEthernetPfcQueueMetricTag)(nil), // 657: otg.PatternFlowEthernetPfcQueueMetricTag - (*PatternFlowEthernetPfcQueue)(nil), // 658: otg.PatternFlowEthernetPfcQueue - (*PatternFlowVlanPriorityCounter)(nil), // 659: otg.PatternFlowVlanPriorityCounter - (*PatternFlowVlanPriorityMetricTag)(nil), // 660: otg.PatternFlowVlanPriorityMetricTag - (*PatternFlowVlanPriority)(nil), // 661: otg.PatternFlowVlanPriority - (*PatternFlowVlanCfiCounter)(nil), // 662: otg.PatternFlowVlanCfiCounter - (*PatternFlowVlanCfiMetricTag)(nil), // 663: otg.PatternFlowVlanCfiMetricTag - (*PatternFlowVlanCfi)(nil), // 664: otg.PatternFlowVlanCfi - (*PatternFlowVlanIdCounter)(nil), // 665: otg.PatternFlowVlanIdCounter - (*PatternFlowVlanIdMetricTag)(nil), // 666: otg.PatternFlowVlanIdMetricTag - (*PatternFlowVlanId)(nil), // 667: otg.PatternFlowVlanId - (*PatternFlowVlanTpidCounter)(nil), // 668: otg.PatternFlowVlanTpidCounter - (*PatternFlowVlanTpidMetricTag)(nil), // 669: otg.PatternFlowVlanTpidMetricTag - (*PatternFlowVlanTpid)(nil), // 670: otg.PatternFlowVlanTpid - (*PatternFlowVxlanFlagsCounter)(nil), // 671: otg.PatternFlowVxlanFlagsCounter - (*PatternFlowVxlanFlagsMetricTag)(nil), // 672: otg.PatternFlowVxlanFlagsMetricTag - (*PatternFlowVxlanFlags)(nil), // 673: otg.PatternFlowVxlanFlags - (*PatternFlowVxlanReserved0Counter)(nil), // 674: otg.PatternFlowVxlanReserved0Counter - (*PatternFlowVxlanReserved0MetricTag)(nil), // 675: otg.PatternFlowVxlanReserved0MetricTag - (*PatternFlowVxlanReserved0)(nil), // 676: otg.PatternFlowVxlanReserved0 - (*PatternFlowVxlanVniCounter)(nil), // 677: otg.PatternFlowVxlanVniCounter - (*PatternFlowVxlanVniMetricTag)(nil), // 678: otg.PatternFlowVxlanVniMetricTag - (*PatternFlowVxlanVni)(nil), // 679: otg.PatternFlowVxlanVni - (*PatternFlowVxlanReserved1Counter)(nil), // 680: otg.PatternFlowVxlanReserved1Counter - (*PatternFlowVxlanReserved1MetricTag)(nil), // 681: otg.PatternFlowVxlanReserved1MetricTag - (*PatternFlowVxlanReserved1)(nil), // 682: otg.PatternFlowVxlanReserved1 - (*PatternFlowIpv4VersionCounter)(nil), // 683: otg.PatternFlowIpv4VersionCounter - (*PatternFlowIpv4VersionMetricTag)(nil), // 684: otg.PatternFlowIpv4VersionMetricTag - (*PatternFlowIpv4Version)(nil), // 685: otg.PatternFlowIpv4Version - (*PatternFlowIpv4HeaderLengthCounter)(nil), // 686: otg.PatternFlowIpv4HeaderLengthCounter - (*PatternFlowIpv4HeaderLengthMetricTag)(nil), // 687: otg.PatternFlowIpv4HeaderLengthMetricTag - (*PatternFlowIpv4HeaderLength)(nil), // 688: otg.PatternFlowIpv4HeaderLength - (*PatternFlowIpv4TotalLengthCounter)(nil), // 689: otg.PatternFlowIpv4TotalLengthCounter - (*PatternFlowIpv4TotalLengthMetricTag)(nil), // 690: otg.PatternFlowIpv4TotalLengthMetricTag - (*PatternFlowIpv4TotalLength)(nil), // 691: otg.PatternFlowIpv4TotalLength - (*PatternFlowIpv4IdentificationCounter)(nil), // 692: otg.PatternFlowIpv4IdentificationCounter - (*PatternFlowIpv4IdentificationMetricTag)(nil), // 693: otg.PatternFlowIpv4IdentificationMetricTag - (*PatternFlowIpv4Identification)(nil), // 694: otg.PatternFlowIpv4Identification - (*PatternFlowIpv4ReservedCounter)(nil), // 695: otg.PatternFlowIpv4ReservedCounter - (*PatternFlowIpv4ReservedMetricTag)(nil), // 696: otg.PatternFlowIpv4ReservedMetricTag - (*PatternFlowIpv4Reserved)(nil), // 697: otg.PatternFlowIpv4Reserved - (*PatternFlowIpv4DontFragmentCounter)(nil), // 698: otg.PatternFlowIpv4DontFragmentCounter - (*PatternFlowIpv4DontFragmentMetricTag)(nil), // 699: otg.PatternFlowIpv4DontFragmentMetricTag - (*PatternFlowIpv4DontFragment)(nil), // 700: otg.PatternFlowIpv4DontFragment - (*PatternFlowIpv4MoreFragmentsCounter)(nil), // 701: otg.PatternFlowIpv4MoreFragmentsCounter - (*PatternFlowIpv4MoreFragmentsMetricTag)(nil), // 702: otg.PatternFlowIpv4MoreFragmentsMetricTag - (*PatternFlowIpv4MoreFragments)(nil), // 703: otg.PatternFlowIpv4MoreFragments - (*PatternFlowIpv4FragmentOffsetCounter)(nil), // 704: otg.PatternFlowIpv4FragmentOffsetCounter - (*PatternFlowIpv4FragmentOffsetMetricTag)(nil), // 705: otg.PatternFlowIpv4FragmentOffsetMetricTag - (*PatternFlowIpv4FragmentOffset)(nil), // 706: otg.PatternFlowIpv4FragmentOffset - (*PatternFlowIpv4TimeToLiveCounter)(nil), // 707: otg.PatternFlowIpv4TimeToLiveCounter - (*PatternFlowIpv4TimeToLiveMetricTag)(nil), // 708: otg.PatternFlowIpv4TimeToLiveMetricTag - (*PatternFlowIpv4TimeToLive)(nil), // 709: otg.PatternFlowIpv4TimeToLive - (*PatternFlowIpv4ProtocolCounter)(nil), // 710: otg.PatternFlowIpv4ProtocolCounter - (*PatternFlowIpv4ProtocolMetricTag)(nil), // 711: otg.PatternFlowIpv4ProtocolMetricTag - (*PatternFlowIpv4Protocol)(nil), // 712: otg.PatternFlowIpv4Protocol - (*PatternFlowIpv4HeaderChecksum)(nil), // 713: otg.PatternFlowIpv4HeaderChecksum - (*PatternFlowIpv4SrcCounter)(nil), // 714: otg.PatternFlowIpv4SrcCounter - (*PatternFlowIpv4SrcMetricTag)(nil), // 715: otg.PatternFlowIpv4SrcMetricTag - (*PatternFlowIpv4Src)(nil), // 716: otg.PatternFlowIpv4Src - (*PatternFlowIpv4DstCounter)(nil), // 717: otg.PatternFlowIpv4DstCounter - (*PatternFlowIpv4DstMetricTag)(nil), // 718: otg.PatternFlowIpv4DstMetricTag - (*PatternFlowIpv4Dst)(nil), // 719: otg.PatternFlowIpv4Dst - (*PatternFlowIpv4PriorityRawCounter)(nil), // 720: otg.PatternFlowIpv4PriorityRawCounter - (*PatternFlowIpv4PriorityRawMetricTag)(nil), // 721: otg.PatternFlowIpv4PriorityRawMetricTag - (*PatternFlowIpv4PriorityRaw)(nil), // 722: otg.PatternFlowIpv4PriorityRaw - (*PatternFlowIpv4DscpPhbCounter)(nil), // 723: otg.PatternFlowIpv4DscpPhbCounter - (*PatternFlowIpv4DscpPhbMetricTag)(nil), // 724: otg.PatternFlowIpv4DscpPhbMetricTag - (*PatternFlowIpv4DscpPhb)(nil), // 725: otg.PatternFlowIpv4DscpPhb - (*PatternFlowIpv4DscpEcnCounter)(nil), // 726: otg.PatternFlowIpv4DscpEcnCounter - (*PatternFlowIpv4DscpEcnMetricTag)(nil), // 727: otg.PatternFlowIpv4DscpEcnMetricTag - (*PatternFlowIpv4DscpEcn)(nil), // 728: otg.PatternFlowIpv4DscpEcn - (*PatternFlowIpv4TosPrecedenceCounter)(nil), // 729: otg.PatternFlowIpv4TosPrecedenceCounter - (*PatternFlowIpv4TosPrecedenceMetricTag)(nil), // 730: otg.PatternFlowIpv4TosPrecedenceMetricTag - (*PatternFlowIpv4TosPrecedence)(nil), // 731: otg.PatternFlowIpv4TosPrecedence - (*PatternFlowIpv4TosDelayCounter)(nil), // 732: otg.PatternFlowIpv4TosDelayCounter - (*PatternFlowIpv4TosDelayMetricTag)(nil), // 733: otg.PatternFlowIpv4TosDelayMetricTag - (*PatternFlowIpv4TosDelay)(nil), // 734: otg.PatternFlowIpv4TosDelay - (*PatternFlowIpv4TosThroughputCounter)(nil), // 735: otg.PatternFlowIpv4TosThroughputCounter - (*PatternFlowIpv4TosThroughputMetricTag)(nil), // 736: otg.PatternFlowIpv4TosThroughputMetricTag - (*PatternFlowIpv4TosThroughput)(nil), // 737: otg.PatternFlowIpv4TosThroughput - (*PatternFlowIpv4TosReliabilityCounter)(nil), // 738: otg.PatternFlowIpv4TosReliabilityCounter - (*PatternFlowIpv4TosReliabilityMetricTag)(nil), // 739: otg.PatternFlowIpv4TosReliabilityMetricTag - (*PatternFlowIpv4TosReliability)(nil), // 740: otg.PatternFlowIpv4TosReliability - (*PatternFlowIpv4TosMonetaryCounter)(nil), // 741: otg.PatternFlowIpv4TosMonetaryCounter - (*PatternFlowIpv4TosMonetaryMetricTag)(nil), // 742: otg.PatternFlowIpv4TosMonetaryMetricTag - (*PatternFlowIpv4TosMonetary)(nil), // 743: otg.PatternFlowIpv4TosMonetary - (*PatternFlowIpv4TosUnusedCounter)(nil), // 744: otg.PatternFlowIpv4TosUnusedCounter - (*PatternFlowIpv4TosUnusedMetricTag)(nil), // 745: otg.PatternFlowIpv4TosUnusedMetricTag - (*PatternFlowIpv4TosUnused)(nil), // 746: otg.PatternFlowIpv4TosUnused - (*PatternFlowIpv6VersionCounter)(nil), // 747: otg.PatternFlowIpv6VersionCounter - (*PatternFlowIpv6VersionMetricTag)(nil), // 748: otg.PatternFlowIpv6VersionMetricTag - (*PatternFlowIpv6Version)(nil), // 749: otg.PatternFlowIpv6Version - (*PatternFlowIpv6TrafficClassCounter)(nil), // 750: otg.PatternFlowIpv6TrafficClassCounter - (*PatternFlowIpv6TrafficClassMetricTag)(nil), // 751: otg.PatternFlowIpv6TrafficClassMetricTag - (*PatternFlowIpv6TrafficClass)(nil), // 752: otg.PatternFlowIpv6TrafficClass - (*PatternFlowIpv6FlowLabelCounter)(nil), // 753: otg.PatternFlowIpv6FlowLabelCounter - (*PatternFlowIpv6FlowLabelMetricTag)(nil), // 754: otg.PatternFlowIpv6FlowLabelMetricTag - (*PatternFlowIpv6FlowLabel)(nil), // 755: otg.PatternFlowIpv6FlowLabel - (*PatternFlowIpv6PayloadLengthCounter)(nil), // 756: otg.PatternFlowIpv6PayloadLengthCounter - (*PatternFlowIpv6PayloadLengthMetricTag)(nil), // 757: otg.PatternFlowIpv6PayloadLengthMetricTag - (*PatternFlowIpv6PayloadLength)(nil), // 758: otg.PatternFlowIpv6PayloadLength - (*PatternFlowIpv6NextHeaderCounter)(nil), // 759: otg.PatternFlowIpv6NextHeaderCounter - (*PatternFlowIpv6NextHeaderMetricTag)(nil), // 760: otg.PatternFlowIpv6NextHeaderMetricTag - (*PatternFlowIpv6NextHeader)(nil), // 761: otg.PatternFlowIpv6NextHeader - (*PatternFlowIpv6HopLimitCounter)(nil), // 762: otg.PatternFlowIpv6HopLimitCounter - (*PatternFlowIpv6HopLimitMetricTag)(nil), // 763: otg.PatternFlowIpv6HopLimitMetricTag - (*PatternFlowIpv6HopLimit)(nil), // 764: otg.PatternFlowIpv6HopLimit - (*PatternFlowIpv6SrcCounter)(nil), // 765: otg.PatternFlowIpv6SrcCounter - (*PatternFlowIpv6SrcMetricTag)(nil), // 766: otg.PatternFlowIpv6SrcMetricTag - (*PatternFlowIpv6Src)(nil), // 767: otg.PatternFlowIpv6Src - (*PatternFlowIpv6DstCounter)(nil), // 768: otg.PatternFlowIpv6DstCounter - (*PatternFlowIpv6DstMetricTag)(nil), // 769: otg.PatternFlowIpv6DstMetricTag - (*PatternFlowIpv6Dst)(nil), // 770: otg.PatternFlowIpv6Dst - (*PatternFlowPfcPauseDstCounter)(nil), // 771: otg.PatternFlowPfcPauseDstCounter - (*PatternFlowPfcPauseDstMetricTag)(nil), // 772: otg.PatternFlowPfcPauseDstMetricTag - (*PatternFlowPfcPauseDst)(nil), // 773: otg.PatternFlowPfcPauseDst - (*PatternFlowPfcPauseSrcCounter)(nil), // 774: otg.PatternFlowPfcPauseSrcCounter - (*PatternFlowPfcPauseSrcMetricTag)(nil), // 775: otg.PatternFlowPfcPauseSrcMetricTag - (*PatternFlowPfcPauseSrc)(nil), // 776: otg.PatternFlowPfcPauseSrc - (*PatternFlowPfcPauseEtherTypeCounter)(nil), // 777: otg.PatternFlowPfcPauseEtherTypeCounter - (*PatternFlowPfcPauseEtherTypeMetricTag)(nil), // 778: otg.PatternFlowPfcPauseEtherTypeMetricTag - (*PatternFlowPfcPauseEtherType)(nil), // 779: otg.PatternFlowPfcPauseEtherType - (*PatternFlowPfcPauseControlOpCodeCounter)(nil), // 780: otg.PatternFlowPfcPauseControlOpCodeCounter - (*PatternFlowPfcPauseControlOpCodeMetricTag)(nil), // 781: otg.PatternFlowPfcPauseControlOpCodeMetricTag - (*PatternFlowPfcPauseControlOpCode)(nil), // 782: otg.PatternFlowPfcPauseControlOpCode - (*PatternFlowPfcPauseClassEnableVectorCounter)(nil), // 783: otg.PatternFlowPfcPauseClassEnableVectorCounter - (*PatternFlowPfcPauseClassEnableVectorMetricTag)(nil), // 784: otg.PatternFlowPfcPauseClassEnableVectorMetricTag - (*PatternFlowPfcPauseClassEnableVector)(nil), // 785: otg.PatternFlowPfcPauseClassEnableVector - (*PatternFlowPfcPausePauseClass0Counter)(nil), // 786: otg.PatternFlowPfcPausePauseClass0Counter - (*PatternFlowPfcPausePauseClass0MetricTag)(nil), // 787: otg.PatternFlowPfcPausePauseClass0MetricTag - (*PatternFlowPfcPausePauseClass0)(nil), // 788: otg.PatternFlowPfcPausePauseClass0 - (*PatternFlowPfcPausePauseClass1Counter)(nil), // 789: otg.PatternFlowPfcPausePauseClass1Counter - (*PatternFlowPfcPausePauseClass1MetricTag)(nil), // 790: otg.PatternFlowPfcPausePauseClass1MetricTag - (*PatternFlowPfcPausePauseClass1)(nil), // 791: otg.PatternFlowPfcPausePauseClass1 - (*PatternFlowPfcPausePauseClass2Counter)(nil), // 792: otg.PatternFlowPfcPausePauseClass2Counter - (*PatternFlowPfcPausePauseClass2MetricTag)(nil), // 793: otg.PatternFlowPfcPausePauseClass2MetricTag - (*PatternFlowPfcPausePauseClass2)(nil), // 794: otg.PatternFlowPfcPausePauseClass2 - (*PatternFlowPfcPausePauseClass3Counter)(nil), // 795: otg.PatternFlowPfcPausePauseClass3Counter - (*PatternFlowPfcPausePauseClass3MetricTag)(nil), // 796: otg.PatternFlowPfcPausePauseClass3MetricTag - (*PatternFlowPfcPausePauseClass3)(nil), // 797: otg.PatternFlowPfcPausePauseClass3 - (*PatternFlowPfcPausePauseClass4Counter)(nil), // 798: otg.PatternFlowPfcPausePauseClass4Counter - (*PatternFlowPfcPausePauseClass4MetricTag)(nil), // 799: otg.PatternFlowPfcPausePauseClass4MetricTag - (*PatternFlowPfcPausePauseClass4)(nil), // 800: otg.PatternFlowPfcPausePauseClass4 - (*PatternFlowPfcPausePauseClass5Counter)(nil), // 801: otg.PatternFlowPfcPausePauseClass5Counter - (*PatternFlowPfcPausePauseClass5MetricTag)(nil), // 802: otg.PatternFlowPfcPausePauseClass5MetricTag - (*PatternFlowPfcPausePauseClass5)(nil), // 803: otg.PatternFlowPfcPausePauseClass5 - (*PatternFlowPfcPausePauseClass6Counter)(nil), // 804: otg.PatternFlowPfcPausePauseClass6Counter - (*PatternFlowPfcPausePauseClass6MetricTag)(nil), // 805: otg.PatternFlowPfcPausePauseClass6MetricTag - (*PatternFlowPfcPausePauseClass6)(nil), // 806: otg.PatternFlowPfcPausePauseClass6 - (*PatternFlowPfcPausePauseClass7Counter)(nil), // 807: otg.PatternFlowPfcPausePauseClass7Counter - (*PatternFlowPfcPausePauseClass7MetricTag)(nil), // 808: otg.PatternFlowPfcPausePauseClass7MetricTag - (*PatternFlowPfcPausePauseClass7)(nil), // 809: otg.PatternFlowPfcPausePauseClass7 - (*PatternFlowEthernetPauseDstCounter)(nil), // 810: otg.PatternFlowEthernetPauseDstCounter - (*PatternFlowEthernetPauseDstMetricTag)(nil), // 811: otg.PatternFlowEthernetPauseDstMetricTag - (*PatternFlowEthernetPauseDst)(nil), // 812: otg.PatternFlowEthernetPauseDst - (*PatternFlowEthernetPauseSrcCounter)(nil), // 813: otg.PatternFlowEthernetPauseSrcCounter - (*PatternFlowEthernetPauseSrcMetricTag)(nil), // 814: otg.PatternFlowEthernetPauseSrcMetricTag - (*PatternFlowEthernetPauseSrc)(nil), // 815: otg.PatternFlowEthernetPauseSrc - (*PatternFlowEthernetPauseEtherTypeCounter)(nil), // 816: otg.PatternFlowEthernetPauseEtherTypeCounter - (*PatternFlowEthernetPauseEtherTypeMetricTag)(nil), // 817: otg.PatternFlowEthernetPauseEtherTypeMetricTag - (*PatternFlowEthernetPauseEtherType)(nil), // 818: otg.PatternFlowEthernetPauseEtherType - (*PatternFlowEthernetPauseControlOpCodeCounter)(nil), // 819: otg.PatternFlowEthernetPauseControlOpCodeCounter - (*PatternFlowEthernetPauseControlOpCodeMetricTag)(nil), // 820: otg.PatternFlowEthernetPauseControlOpCodeMetricTag - (*PatternFlowEthernetPauseControlOpCode)(nil), // 821: otg.PatternFlowEthernetPauseControlOpCode - (*PatternFlowEthernetPauseTimeCounter)(nil), // 822: otg.PatternFlowEthernetPauseTimeCounter - (*PatternFlowEthernetPauseTimeMetricTag)(nil), // 823: otg.PatternFlowEthernetPauseTimeMetricTag - (*PatternFlowEthernetPauseTime)(nil), // 824: otg.PatternFlowEthernetPauseTime - (*PatternFlowTcpSrcPortCounter)(nil), // 825: otg.PatternFlowTcpSrcPortCounter - (*PatternFlowTcpSrcPortMetricTag)(nil), // 826: otg.PatternFlowTcpSrcPortMetricTag - (*PatternFlowTcpSrcPort)(nil), // 827: otg.PatternFlowTcpSrcPort - (*PatternFlowTcpDstPortCounter)(nil), // 828: otg.PatternFlowTcpDstPortCounter - (*PatternFlowTcpDstPortMetricTag)(nil), // 829: otg.PatternFlowTcpDstPortMetricTag - (*PatternFlowTcpDstPort)(nil), // 830: otg.PatternFlowTcpDstPort - (*PatternFlowTcpSeqNumCounter)(nil), // 831: otg.PatternFlowTcpSeqNumCounter - (*PatternFlowTcpSeqNumMetricTag)(nil), // 832: otg.PatternFlowTcpSeqNumMetricTag - (*PatternFlowTcpSeqNum)(nil), // 833: otg.PatternFlowTcpSeqNum - (*PatternFlowTcpAckNumCounter)(nil), // 834: otg.PatternFlowTcpAckNumCounter - (*PatternFlowTcpAckNumMetricTag)(nil), // 835: otg.PatternFlowTcpAckNumMetricTag - (*PatternFlowTcpAckNum)(nil), // 836: otg.PatternFlowTcpAckNum - (*PatternFlowTcpDataOffsetCounter)(nil), // 837: otg.PatternFlowTcpDataOffsetCounter - (*PatternFlowTcpDataOffsetMetricTag)(nil), // 838: otg.PatternFlowTcpDataOffsetMetricTag - (*PatternFlowTcpDataOffset)(nil), // 839: otg.PatternFlowTcpDataOffset - (*PatternFlowTcpEcnNsCounter)(nil), // 840: otg.PatternFlowTcpEcnNsCounter - (*PatternFlowTcpEcnNsMetricTag)(nil), // 841: otg.PatternFlowTcpEcnNsMetricTag - (*PatternFlowTcpEcnNs)(nil), // 842: otg.PatternFlowTcpEcnNs - (*PatternFlowTcpEcnCwrCounter)(nil), // 843: otg.PatternFlowTcpEcnCwrCounter - (*PatternFlowTcpEcnCwrMetricTag)(nil), // 844: otg.PatternFlowTcpEcnCwrMetricTag - (*PatternFlowTcpEcnCwr)(nil), // 845: otg.PatternFlowTcpEcnCwr - (*PatternFlowTcpEcnEchoCounter)(nil), // 846: otg.PatternFlowTcpEcnEchoCounter - (*PatternFlowTcpEcnEchoMetricTag)(nil), // 847: otg.PatternFlowTcpEcnEchoMetricTag - (*PatternFlowTcpEcnEcho)(nil), // 848: otg.PatternFlowTcpEcnEcho - (*PatternFlowTcpCtlUrgCounter)(nil), // 849: otg.PatternFlowTcpCtlUrgCounter - (*PatternFlowTcpCtlUrgMetricTag)(nil), // 850: otg.PatternFlowTcpCtlUrgMetricTag - (*PatternFlowTcpCtlUrg)(nil), // 851: otg.PatternFlowTcpCtlUrg - (*PatternFlowTcpCtlAckCounter)(nil), // 852: otg.PatternFlowTcpCtlAckCounter - (*PatternFlowTcpCtlAckMetricTag)(nil), // 853: otg.PatternFlowTcpCtlAckMetricTag - (*PatternFlowTcpCtlAck)(nil), // 854: otg.PatternFlowTcpCtlAck - (*PatternFlowTcpCtlPshCounter)(nil), // 855: otg.PatternFlowTcpCtlPshCounter - (*PatternFlowTcpCtlPshMetricTag)(nil), // 856: otg.PatternFlowTcpCtlPshMetricTag - (*PatternFlowTcpCtlPsh)(nil), // 857: otg.PatternFlowTcpCtlPsh - (*PatternFlowTcpCtlRstCounter)(nil), // 858: otg.PatternFlowTcpCtlRstCounter - (*PatternFlowTcpCtlRstMetricTag)(nil), // 859: otg.PatternFlowTcpCtlRstMetricTag - (*PatternFlowTcpCtlRst)(nil), // 860: otg.PatternFlowTcpCtlRst - (*PatternFlowTcpCtlSynCounter)(nil), // 861: otg.PatternFlowTcpCtlSynCounter - (*PatternFlowTcpCtlSynMetricTag)(nil), // 862: otg.PatternFlowTcpCtlSynMetricTag - (*PatternFlowTcpCtlSyn)(nil), // 863: otg.PatternFlowTcpCtlSyn - (*PatternFlowTcpCtlFinCounter)(nil), // 864: otg.PatternFlowTcpCtlFinCounter - (*PatternFlowTcpCtlFinMetricTag)(nil), // 865: otg.PatternFlowTcpCtlFinMetricTag - (*PatternFlowTcpCtlFin)(nil), // 866: otg.PatternFlowTcpCtlFin - (*PatternFlowTcpWindowCounter)(nil), // 867: otg.PatternFlowTcpWindowCounter - (*PatternFlowTcpWindowMetricTag)(nil), // 868: otg.PatternFlowTcpWindowMetricTag - (*PatternFlowTcpWindow)(nil), // 869: otg.PatternFlowTcpWindow - (*PatternFlowUdpSrcPortCounter)(nil), // 870: otg.PatternFlowUdpSrcPortCounter - (*PatternFlowUdpSrcPortMetricTag)(nil), // 871: otg.PatternFlowUdpSrcPortMetricTag - (*PatternFlowUdpSrcPort)(nil), // 872: otg.PatternFlowUdpSrcPort - (*PatternFlowUdpDstPortCounter)(nil), // 873: otg.PatternFlowUdpDstPortCounter - (*PatternFlowUdpDstPortMetricTag)(nil), // 874: otg.PatternFlowUdpDstPortMetricTag - (*PatternFlowUdpDstPort)(nil), // 875: otg.PatternFlowUdpDstPort - (*PatternFlowUdpLengthCounter)(nil), // 876: otg.PatternFlowUdpLengthCounter - (*PatternFlowUdpLengthMetricTag)(nil), // 877: otg.PatternFlowUdpLengthMetricTag - (*PatternFlowUdpLength)(nil), // 878: otg.PatternFlowUdpLength - (*PatternFlowUdpChecksum)(nil), // 879: otg.PatternFlowUdpChecksum - (*PatternFlowGreChecksumPresentCounter)(nil), // 880: otg.PatternFlowGreChecksumPresentCounter - (*PatternFlowGreChecksumPresentMetricTag)(nil), // 881: otg.PatternFlowGreChecksumPresentMetricTag - (*PatternFlowGreChecksumPresent)(nil), // 882: otg.PatternFlowGreChecksumPresent - (*PatternFlowGreReserved0Counter)(nil), // 883: otg.PatternFlowGreReserved0Counter - (*PatternFlowGreReserved0MetricTag)(nil), // 884: otg.PatternFlowGreReserved0MetricTag - (*PatternFlowGreReserved0)(nil), // 885: otg.PatternFlowGreReserved0 - (*PatternFlowGreVersionCounter)(nil), // 886: otg.PatternFlowGreVersionCounter - (*PatternFlowGreVersionMetricTag)(nil), // 887: otg.PatternFlowGreVersionMetricTag - (*PatternFlowGreVersion)(nil), // 888: otg.PatternFlowGreVersion - (*PatternFlowGreProtocolCounter)(nil), // 889: otg.PatternFlowGreProtocolCounter - (*PatternFlowGreProtocolMetricTag)(nil), // 890: otg.PatternFlowGreProtocolMetricTag - (*PatternFlowGreProtocol)(nil), // 891: otg.PatternFlowGreProtocol - (*PatternFlowGreChecksum)(nil), // 892: otg.PatternFlowGreChecksum - (*PatternFlowGreReserved1Counter)(nil), // 893: otg.PatternFlowGreReserved1Counter - (*PatternFlowGreReserved1MetricTag)(nil), // 894: otg.PatternFlowGreReserved1MetricTag - (*PatternFlowGreReserved1)(nil), // 895: otg.PatternFlowGreReserved1 - (*PatternFlowGtpv1VersionCounter)(nil), // 896: otg.PatternFlowGtpv1VersionCounter - (*PatternFlowGtpv1VersionMetricTag)(nil), // 897: otg.PatternFlowGtpv1VersionMetricTag - (*PatternFlowGtpv1Version)(nil), // 898: otg.PatternFlowGtpv1Version - (*PatternFlowGtpv1ProtocolTypeCounter)(nil), // 899: otg.PatternFlowGtpv1ProtocolTypeCounter - (*PatternFlowGtpv1ProtocolTypeMetricTag)(nil), // 900: otg.PatternFlowGtpv1ProtocolTypeMetricTag - (*PatternFlowGtpv1ProtocolType)(nil), // 901: otg.PatternFlowGtpv1ProtocolType - (*PatternFlowGtpv1ReservedCounter)(nil), // 902: otg.PatternFlowGtpv1ReservedCounter - (*PatternFlowGtpv1ReservedMetricTag)(nil), // 903: otg.PatternFlowGtpv1ReservedMetricTag - (*PatternFlowGtpv1Reserved)(nil), // 904: otg.PatternFlowGtpv1Reserved - (*PatternFlowGtpv1EFlagCounter)(nil), // 905: otg.PatternFlowGtpv1EFlagCounter - (*PatternFlowGtpv1EFlagMetricTag)(nil), // 906: otg.PatternFlowGtpv1EFlagMetricTag - (*PatternFlowGtpv1EFlag)(nil), // 907: otg.PatternFlowGtpv1EFlag - (*PatternFlowGtpv1SFlagCounter)(nil), // 908: otg.PatternFlowGtpv1SFlagCounter - (*PatternFlowGtpv1SFlagMetricTag)(nil), // 909: otg.PatternFlowGtpv1SFlagMetricTag - (*PatternFlowGtpv1SFlag)(nil), // 910: otg.PatternFlowGtpv1SFlag - (*PatternFlowGtpv1PnFlagCounter)(nil), // 911: otg.PatternFlowGtpv1PnFlagCounter - (*PatternFlowGtpv1PnFlagMetricTag)(nil), // 912: otg.PatternFlowGtpv1PnFlagMetricTag - (*PatternFlowGtpv1PnFlag)(nil), // 913: otg.PatternFlowGtpv1PnFlag - (*PatternFlowGtpv1MessageTypeCounter)(nil), // 914: otg.PatternFlowGtpv1MessageTypeCounter - (*PatternFlowGtpv1MessageTypeMetricTag)(nil), // 915: otg.PatternFlowGtpv1MessageTypeMetricTag - (*PatternFlowGtpv1MessageType)(nil), // 916: otg.PatternFlowGtpv1MessageType - (*PatternFlowGtpv1MessageLengthCounter)(nil), // 917: otg.PatternFlowGtpv1MessageLengthCounter - (*PatternFlowGtpv1MessageLengthMetricTag)(nil), // 918: otg.PatternFlowGtpv1MessageLengthMetricTag - (*PatternFlowGtpv1MessageLength)(nil), // 919: otg.PatternFlowGtpv1MessageLength - (*PatternFlowGtpv1TeidCounter)(nil), // 920: otg.PatternFlowGtpv1TeidCounter - (*PatternFlowGtpv1TeidMetricTag)(nil), // 921: otg.PatternFlowGtpv1TeidMetricTag - (*PatternFlowGtpv1Teid)(nil), // 922: otg.PatternFlowGtpv1Teid - (*PatternFlowGtpv1SquenceNumberCounter)(nil), // 923: otg.PatternFlowGtpv1SquenceNumberCounter - (*PatternFlowGtpv1SquenceNumberMetricTag)(nil), // 924: otg.PatternFlowGtpv1SquenceNumberMetricTag - (*PatternFlowGtpv1SquenceNumber)(nil), // 925: otg.PatternFlowGtpv1SquenceNumber - (*PatternFlowGtpv1NPduNumberCounter)(nil), // 926: otg.PatternFlowGtpv1NPduNumberCounter - (*PatternFlowGtpv1NPduNumberMetricTag)(nil), // 927: otg.PatternFlowGtpv1NPduNumberMetricTag - (*PatternFlowGtpv1NPduNumber)(nil), // 928: otg.PatternFlowGtpv1NPduNumber - (*PatternFlowGtpv1NextExtensionHeaderTypeCounter)(nil), // 929: otg.PatternFlowGtpv1NextExtensionHeaderTypeCounter - (*PatternFlowGtpv1NextExtensionHeaderTypeMetricTag)(nil), // 930: otg.PatternFlowGtpv1NextExtensionHeaderTypeMetricTag - (*PatternFlowGtpv1NextExtensionHeaderType)(nil), // 931: otg.PatternFlowGtpv1NextExtensionHeaderType - (*PatternFlowGtpExtensionExtensionLengthCounter)(nil), // 932: otg.PatternFlowGtpExtensionExtensionLengthCounter - (*PatternFlowGtpExtensionExtensionLengthMetricTag)(nil), // 933: otg.PatternFlowGtpExtensionExtensionLengthMetricTag - (*PatternFlowGtpExtensionExtensionLength)(nil), // 934: otg.PatternFlowGtpExtensionExtensionLength - (*PatternFlowGtpExtensionContentsCounter)(nil), // 935: otg.PatternFlowGtpExtensionContentsCounter - (*PatternFlowGtpExtensionContentsMetricTag)(nil), // 936: otg.PatternFlowGtpExtensionContentsMetricTag - (*PatternFlowGtpExtensionContents)(nil), // 937: otg.PatternFlowGtpExtensionContents - (*PatternFlowGtpExtensionNextExtensionHeaderCounter)(nil), // 938: otg.PatternFlowGtpExtensionNextExtensionHeaderCounter - (*PatternFlowGtpExtensionNextExtensionHeaderMetricTag)(nil), // 939: otg.PatternFlowGtpExtensionNextExtensionHeaderMetricTag - (*PatternFlowGtpExtensionNextExtensionHeader)(nil), // 940: otg.PatternFlowGtpExtensionNextExtensionHeader - (*PatternFlowGtpv2VersionCounter)(nil), // 941: otg.PatternFlowGtpv2VersionCounter - (*PatternFlowGtpv2VersionMetricTag)(nil), // 942: otg.PatternFlowGtpv2VersionMetricTag - (*PatternFlowGtpv2Version)(nil), // 943: otg.PatternFlowGtpv2Version - (*PatternFlowGtpv2PiggybackingFlagCounter)(nil), // 944: otg.PatternFlowGtpv2PiggybackingFlagCounter - (*PatternFlowGtpv2PiggybackingFlagMetricTag)(nil), // 945: otg.PatternFlowGtpv2PiggybackingFlagMetricTag - (*PatternFlowGtpv2PiggybackingFlag)(nil), // 946: otg.PatternFlowGtpv2PiggybackingFlag - (*PatternFlowGtpv2TeidFlagCounter)(nil), // 947: otg.PatternFlowGtpv2TeidFlagCounter - (*PatternFlowGtpv2TeidFlagMetricTag)(nil), // 948: otg.PatternFlowGtpv2TeidFlagMetricTag - (*PatternFlowGtpv2TeidFlag)(nil), // 949: otg.PatternFlowGtpv2TeidFlag - (*PatternFlowGtpv2Spare1Counter)(nil), // 950: otg.PatternFlowGtpv2Spare1Counter - (*PatternFlowGtpv2Spare1MetricTag)(nil), // 951: otg.PatternFlowGtpv2Spare1MetricTag - (*PatternFlowGtpv2Spare1)(nil), // 952: otg.PatternFlowGtpv2Spare1 - (*PatternFlowGtpv2MessageTypeCounter)(nil), // 953: otg.PatternFlowGtpv2MessageTypeCounter - (*PatternFlowGtpv2MessageTypeMetricTag)(nil), // 954: otg.PatternFlowGtpv2MessageTypeMetricTag - (*PatternFlowGtpv2MessageType)(nil), // 955: otg.PatternFlowGtpv2MessageType - (*PatternFlowGtpv2MessageLengthCounter)(nil), // 956: otg.PatternFlowGtpv2MessageLengthCounter - (*PatternFlowGtpv2MessageLengthMetricTag)(nil), // 957: otg.PatternFlowGtpv2MessageLengthMetricTag - (*PatternFlowGtpv2MessageLength)(nil), // 958: otg.PatternFlowGtpv2MessageLength - (*PatternFlowGtpv2TeidCounter)(nil), // 959: otg.PatternFlowGtpv2TeidCounter - (*PatternFlowGtpv2TeidMetricTag)(nil), // 960: otg.PatternFlowGtpv2TeidMetricTag - (*PatternFlowGtpv2Teid)(nil), // 961: otg.PatternFlowGtpv2Teid - (*PatternFlowGtpv2SequenceNumberCounter)(nil), // 962: otg.PatternFlowGtpv2SequenceNumberCounter - (*PatternFlowGtpv2SequenceNumberMetricTag)(nil), // 963: otg.PatternFlowGtpv2SequenceNumberMetricTag - (*PatternFlowGtpv2SequenceNumber)(nil), // 964: otg.PatternFlowGtpv2SequenceNumber - (*PatternFlowGtpv2Spare2Counter)(nil), // 965: otg.PatternFlowGtpv2Spare2Counter - (*PatternFlowGtpv2Spare2MetricTag)(nil), // 966: otg.PatternFlowGtpv2Spare2MetricTag - (*PatternFlowGtpv2Spare2)(nil), // 967: otg.PatternFlowGtpv2Spare2 - (*PatternFlowArpHardwareTypeCounter)(nil), // 968: otg.PatternFlowArpHardwareTypeCounter - (*PatternFlowArpHardwareTypeMetricTag)(nil), // 969: otg.PatternFlowArpHardwareTypeMetricTag - (*PatternFlowArpHardwareType)(nil), // 970: otg.PatternFlowArpHardwareType - (*PatternFlowArpProtocolTypeCounter)(nil), // 971: otg.PatternFlowArpProtocolTypeCounter - (*PatternFlowArpProtocolTypeMetricTag)(nil), // 972: otg.PatternFlowArpProtocolTypeMetricTag - (*PatternFlowArpProtocolType)(nil), // 973: otg.PatternFlowArpProtocolType - (*PatternFlowArpHardwareLengthCounter)(nil), // 974: otg.PatternFlowArpHardwareLengthCounter - (*PatternFlowArpHardwareLengthMetricTag)(nil), // 975: otg.PatternFlowArpHardwareLengthMetricTag - (*PatternFlowArpHardwareLength)(nil), // 976: otg.PatternFlowArpHardwareLength - (*PatternFlowArpProtocolLengthCounter)(nil), // 977: otg.PatternFlowArpProtocolLengthCounter - (*PatternFlowArpProtocolLengthMetricTag)(nil), // 978: otg.PatternFlowArpProtocolLengthMetricTag - (*PatternFlowArpProtocolLength)(nil), // 979: otg.PatternFlowArpProtocolLength - (*PatternFlowArpOperationCounter)(nil), // 980: otg.PatternFlowArpOperationCounter - (*PatternFlowArpOperationMetricTag)(nil), // 981: otg.PatternFlowArpOperationMetricTag - (*PatternFlowArpOperation)(nil), // 982: otg.PatternFlowArpOperation - (*PatternFlowArpSenderHardwareAddrCounter)(nil), // 983: otg.PatternFlowArpSenderHardwareAddrCounter - (*PatternFlowArpSenderHardwareAddrMetricTag)(nil), // 984: otg.PatternFlowArpSenderHardwareAddrMetricTag - (*PatternFlowArpSenderHardwareAddr)(nil), // 985: otg.PatternFlowArpSenderHardwareAddr - (*PatternFlowArpSenderProtocolAddrCounter)(nil), // 986: otg.PatternFlowArpSenderProtocolAddrCounter - (*PatternFlowArpSenderProtocolAddrMetricTag)(nil), // 987: otg.PatternFlowArpSenderProtocolAddrMetricTag - (*PatternFlowArpSenderProtocolAddr)(nil), // 988: otg.PatternFlowArpSenderProtocolAddr - (*PatternFlowArpTargetHardwareAddrCounter)(nil), // 989: otg.PatternFlowArpTargetHardwareAddrCounter - (*PatternFlowArpTargetHardwareAddrMetricTag)(nil), // 990: otg.PatternFlowArpTargetHardwareAddrMetricTag - (*PatternFlowArpTargetHardwareAddr)(nil), // 991: otg.PatternFlowArpTargetHardwareAddr - (*PatternFlowArpTargetProtocolAddrCounter)(nil), // 992: otg.PatternFlowArpTargetProtocolAddrCounter - (*PatternFlowArpTargetProtocolAddrMetricTag)(nil), // 993: otg.PatternFlowArpTargetProtocolAddrMetricTag - (*PatternFlowArpTargetProtocolAddr)(nil), // 994: otg.PatternFlowArpTargetProtocolAddr - (*PatternFlowIcmpEchoTypeCounter)(nil), // 995: otg.PatternFlowIcmpEchoTypeCounter - (*PatternFlowIcmpEchoTypeMetricTag)(nil), // 996: otg.PatternFlowIcmpEchoTypeMetricTag - (*PatternFlowIcmpEchoType)(nil), // 997: otg.PatternFlowIcmpEchoType - (*PatternFlowIcmpEchoCodeCounter)(nil), // 998: otg.PatternFlowIcmpEchoCodeCounter - (*PatternFlowIcmpEchoCodeMetricTag)(nil), // 999: otg.PatternFlowIcmpEchoCodeMetricTag - (*PatternFlowIcmpEchoCode)(nil), // 1000: otg.PatternFlowIcmpEchoCode - (*PatternFlowIcmpEchoChecksum)(nil), // 1001: otg.PatternFlowIcmpEchoChecksum - (*PatternFlowIcmpEchoIdentifierCounter)(nil), // 1002: otg.PatternFlowIcmpEchoIdentifierCounter - (*PatternFlowIcmpEchoIdentifierMetricTag)(nil), // 1003: otg.PatternFlowIcmpEchoIdentifierMetricTag - (*PatternFlowIcmpEchoIdentifier)(nil), // 1004: otg.PatternFlowIcmpEchoIdentifier - (*PatternFlowIcmpEchoSequenceNumberCounter)(nil), // 1005: otg.PatternFlowIcmpEchoSequenceNumberCounter - (*PatternFlowIcmpEchoSequenceNumberMetricTag)(nil), // 1006: otg.PatternFlowIcmpEchoSequenceNumberMetricTag - (*PatternFlowIcmpEchoSequenceNumber)(nil), // 1007: otg.PatternFlowIcmpEchoSequenceNumber - (*PatternFlowIcmpCommonChecksum)(nil), // 1008: otg.PatternFlowIcmpCommonChecksum - (*PatternFlowIcmpNextFieldsIdentifierCounter)(nil), // 1009: otg.PatternFlowIcmpNextFieldsIdentifierCounter - (*PatternFlowIcmpNextFieldsIdentifierMetricTag)(nil), // 1010: otg.PatternFlowIcmpNextFieldsIdentifierMetricTag - (*PatternFlowIcmpNextFieldsIdentifier)(nil), // 1011: otg.PatternFlowIcmpNextFieldsIdentifier - (*PatternFlowIcmpNextFieldsSequenceNumberCounter)(nil), // 1012: otg.PatternFlowIcmpNextFieldsSequenceNumberCounter - (*PatternFlowIcmpNextFieldsSequenceNumberMetricTag)(nil), // 1013: otg.PatternFlowIcmpNextFieldsSequenceNumberMetricTag - (*PatternFlowIcmpNextFieldsSequenceNumber)(nil), // 1014: otg.PatternFlowIcmpNextFieldsSequenceNumber - (*PatternFlowIcmpv6EchoTypeCounter)(nil), // 1015: otg.PatternFlowIcmpv6EchoTypeCounter - (*PatternFlowIcmpv6EchoTypeMetricTag)(nil), // 1016: otg.PatternFlowIcmpv6EchoTypeMetricTag - (*PatternFlowIcmpv6EchoType)(nil), // 1017: otg.PatternFlowIcmpv6EchoType - (*PatternFlowIcmpv6EchoCodeCounter)(nil), // 1018: otg.PatternFlowIcmpv6EchoCodeCounter - (*PatternFlowIcmpv6EchoCodeMetricTag)(nil), // 1019: otg.PatternFlowIcmpv6EchoCodeMetricTag - (*PatternFlowIcmpv6EchoCode)(nil), // 1020: otg.PatternFlowIcmpv6EchoCode - (*PatternFlowIcmpv6EchoIdentifierCounter)(nil), // 1021: otg.PatternFlowIcmpv6EchoIdentifierCounter - (*PatternFlowIcmpv6EchoIdentifierMetricTag)(nil), // 1022: otg.PatternFlowIcmpv6EchoIdentifierMetricTag - (*PatternFlowIcmpv6EchoIdentifier)(nil), // 1023: otg.PatternFlowIcmpv6EchoIdentifier - (*PatternFlowIcmpv6EchoSequenceNumberCounter)(nil), // 1024: otg.PatternFlowIcmpv6EchoSequenceNumberCounter - (*PatternFlowIcmpv6EchoSequenceNumberMetricTag)(nil), // 1025: otg.PatternFlowIcmpv6EchoSequenceNumberMetricTag - (*PatternFlowIcmpv6EchoSequenceNumber)(nil), // 1026: otg.PatternFlowIcmpv6EchoSequenceNumber - (*PatternFlowIcmpv6EchoChecksum)(nil), // 1027: otg.PatternFlowIcmpv6EchoChecksum - (*PatternFlowIcmpv6CommonChecksum)(nil), // 1028: otg.PatternFlowIcmpv6CommonChecksum - (*PatternFlowPppAddressCounter)(nil), // 1029: otg.PatternFlowPppAddressCounter - (*PatternFlowPppAddressMetricTag)(nil), // 1030: otg.PatternFlowPppAddressMetricTag - (*PatternFlowPppAddress)(nil), // 1031: otg.PatternFlowPppAddress - (*PatternFlowPppControlCounter)(nil), // 1032: otg.PatternFlowPppControlCounter - (*PatternFlowPppControlMetricTag)(nil), // 1033: otg.PatternFlowPppControlMetricTag - (*PatternFlowPppControl)(nil), // 1034: otg.PatternFlowPppControl - (*PatternFlowPppProtocolTypeCounter)(nil), // 1035: otg.PatternFlowPppProtocolTypeCounter - (*PatternFlowPppProtocolTypeMetricTag)(nil), // 1036: otg.PatternFlowPppProtocolTypeMetricTag - (*PatternFlowPppProtocolType)(nil), // 1037: otg.PatternFlowPppProtocolType - (*PatternFlowIgmpv1VersionCounter)(nil), // 1038: otg.PatternFlowIgmpv1VersionCounter - (*PatternFlowIgmpv1VersionMetricTag)(nil), // 1039: otg.PatternFlowIgmpv1VersionMetricTag - (*PatternFlowIgmpv1Version)(nil), // 1040: otg.PatternFlowIgmpv1Version - (*PatternFlowIgmpv1TypeCounter)(nil), // 1041: otg.PatternFlowIgmpv1TypeCounter - (*PatternFlowIgmpv1TypeMetricTag)(nil), // 1042: otg.PatternFlowIgmpv1TypeMetricTag - (*PatternFlowIgmpv1Type)(nil), // 1043: otg.PatternFlowIgmpv1Type - (*PatternFlowIgmpv1UnusedCounter)(nil), // 1044: otg.PatternFlowIgmpv1UnusedCounter - (*PatternFlowIgmpv1UnusedMetricTag)(nil), // 1045: otg.PatternFlowIgmpv1UnusedMetricTag - (*PatternFlowIgmpv1Unused)(nil), // 1046: otg.PatternFlowIgmpv1Unused - (*PatternFlowIgmpv1Checksum)(nil), // 1047: otg.PatternFlowIgmpv1Checksum - (*PatternFlowIgmpv1GroupAddressCounter)(nil), // 1048: otg.PatternFlowIgmpv1GroupAddressCounter - (*PatternFlowIgmpv1GroupAddressMetricTag)(nil), // 1049: otg.PatternFlowIgmpv1GroupAddressMetricTag - (*PatternFlowIgmpv1GroupAddress)(nil), // 1050: otg.PatternFlowIgmpv1GroupAddress - (*PatternFlowMplsLabelCounter)(nil), // 1051: otg.PatternFlowMplsLabelCounter - (*PatternFlowMplsLabelMetricTag)(nil), // 1052: otg.PatternFlowMplsLabelMetricTag - (*PatternFlowMplsLabel)(nil), // 1053: otg.PatternFlowMplsLabel - (*PatternFlowMplsTrafficClassCounter)(nil), // 1054: otg.PatternFlowMplsTrafficClassCounter - (*PatternFlowMplsTrafficClassMetricTag)(nil), // 1055: otg.PatternFlowMplsTrafficClassMetricTag - (*PatternFlowMplsTrafficClass)(nil), // 1056: otg.PatternFlowMplsTrafficClass - (*PatternFlowMplsBottomOfStackCounter)(nil), // 1057: otg.PatternFlowMplsBottomOfStackCounter - (*PatternFlowMplsBottomOfStackMetricTag)(nil), // 1058: otg.PatternFlowMplsBottomOfStackMetricTag - (*PatternFlowMplsBottomOfStack)(nil), // 1059: otg.PatternFlowMplsBottomOfStack - (*PatternFlowMplsTimeToLiveCounter)(nil), // 1060: otg.PatternFlowMplsTimeToLiveCounter - (*PatternFlowMplsTimeToLiveMetricTag)(nil), // 1061: otg.PatternFlowMplsTimeToLiveMetricTag - (*PatternFlowMplsTimeToLive)(nil), // 1062: otg.PatternFlowMplsTimeToLive - (*Version)(nil), // 1063: otg.Version - (*Success)(nil), // 1064: otg.Success - (*Failure)(nil), // 1065: otg.Failure - (*SetConfigRequest)(nil), // 1066: otg.SetConfigRequest - (*UpdateConfigRequest)(nil), // 1067: otg.UpdateConfigRequest - (*SetConfigResponse)(nil), // 1068: otg.SetConfigResponse - (*GetConfigResponse)(nil), // 1069: otg.GetConfigResponse - (*UpdateConfigResponse)(nil), // 1070: otg.UpdateConfigResponse - (*SetControlStateRequest)(nil), // 1071: otg.SetControlStateRequest - (*SetControlStateResponse)(nil), // 1072: otg.SetControlStateResponse - (*SetControlActionRequest)(nil), // 1073: otg.SetControlActionRequest - (*SetControlActionResponse)(nil), // 1074: otg.SetControlActionResponse - (*GetMetricsRequest)(nil), // 1075: otg.GetMetricsRequest - (*GetMetricsResponse)(nil), // 1076: otg.GetMetricsResponse - (*GetStatesRequest)(nil), // 1077: otg.GetStatesRequest - (*GetStatesResponse)(nil), // 1078: otg.GetStatesResponse - (*GetCaptureRequest)(nil), // 1079: otg.GetCaptureRequest - (*GetCaptureResponse)(nil), // 1080: otg.GetCaptureResponse - (*GetVersionResponse)(nil), // 1081: otg.GetVersionResponse - (*LagProtocol_Choice)(nil), // 1082: otg.LagProtocol.Choice - (*LagPortLacp_ActorActivity)(nil), // 1083: otg.LagPortLacp.ActorActivity - (*EthernetConnection_Choice)(nil), // 1084: otg.EthernetConnection.Choice - (*DeviceVlan_Tpid)(nil), // 1085: otg.DeviceVlan.Tpid - (*DeviceIpv4GatewayMAC_Choice)(nil), // 1086: otg.DeviceIpv4GatewayMAC.Choice - (*DeviceIpv6GatewayMAC_Choice)(nil), // 1087: otg.DeviceIpv6GatewayMAC.Choice - (*Layer1_Speed)(nil), // 1088: otg.Layer1.Speed - (*Layer1_Media)(nil), // 1089: otg.Layer1.Media - (*Layer1FlowControl_Choice)(nil), // 1090: otg.Layer1FlowControl.Choice - (*Capture_Format)(nil), // 1091: otg.Capture.Format - (*CaptureFilter_Choice)(nil), // 1092: otg.CaptureFilter.Choice - (*IsisInterface_NetworkType)(nil), // 1093: otg.IsisInterface.NetworkType - (*IsisInterface_LevelType)(nil), // 1094: otg.IsisInterface.LevelType - (*IsisInterfaceAuthentication_AuthType)(nil), // 1095: otg.IsisInterfaceAuthentication.AuthType - (*IsisAuthenticationBase_AuthType)(nil), // 1096: otg.IsisAuthenticationBase.AuthType - (*IsisV4RouteRange_OriginType)(nil), // 1097: otg.IsisV4RouteRange.OriginType - (*IsisV4RouteRange_RedistributionType)(nil), // 1098: otg.IsisV4RouteRange.RedistributionType - (*IsisV6RouteRange_OriginType)(nil), // 1099: otg.IsisV6RouteRange.OriginType - (*IsisV6RouteRange_RedistributionType)(nil), // 1100: otg.IsisV6RouteRange.RedistributionType - (*DeviceBgpMessageHeaderError_Subcode)(nil), // 1101: otg.DeviceBgpMessageHeaderError.Subcode - (*DeviceBgpOpenMessageError_Subcode)(nil), // 1102: otg.DeviceBgpOpenMessageError.Subcode - (*DeviceBgpUpdateMessageError_Subcode)(nil), // 1103: otg.DeviceBgpUpdateMessageError.Subcode - (*DeviceBgpCeaseError_Subcode)(nil), // 1104: otg.DeviceBgpCeaseError.Subcode - (*BgpV4Peer_AsType)(nil), // 1105: otg.BgpV4Peer.AsType - (*BgpV4Peer_AsNumberWidth)(nil), // 1106: otg.BgpV4Peer.AsNumberWidth - (*BgpV4EthernetSegment_ActiveMode)(nil), // 1107: otg.BgpV4EthernetSegment.ActiveMode - (*BgpRouteAdvanced_Origin)(nil), // 1108: otg.BgpRouteAdvanced.Origin - (*BgpCommunity_Type)(nil), // 1109: otg.BgpCommunity.Type - (*BgpExtCommunity_Type)(nil), // 1110: otg.BgpExtCommunity.Type - (*BgpExtCommunity_Subtype)(nil), // 1111: otg.BgpExtCommunity.Subtype - (*BgpAsPath_AsSetMode)(nil), // 1112: otg.BgpAsPath.AsSetMode - (*BgpAsPathSegment_Type)(nil), // 1113: otg.BgpAsPathSegment.Type - (*BgpV4EvpnEvis_Choice)(nil), // 1114: otg.BgpV4EvpnEvis.Choice - (*BgpV4EviVxlan_ReplicationType)(nil), // 1115: otg.BgpV4EviVxlan.ReplicationType - (*BgpRouteDistinguisher_RdType)(nil), // 1116: otg.BgpRouteDistinguisher.RdType - (*BgpRouteTarget_RtType)(nil), // 1117: otg.BgpRouteTarget.RtType - (*BgpV4RouteRange_NextHopMode)(nil), // 1118: otg.BgpV4RouteRange.NextHopMode - (*BgpV4RouteRange_NextHopAddressType)(nil), // 1119: otg.BgpV4RouteRange.NextHopAddressType - (*BgpExtendedCommunity_Choice)(nil), // 1120: otg.BgpExtendedCommunity.Choice - (*BgpExtendedCommunityTransitive2OctetAsType_Choice)(nil), // 1121: otg.BgpExtendedCommunityTransitive2OctetAsType.Choice - (*BgpExtendedCommunityTransitiveIpv4AddressType_Choice)(nil), // 1122: otg.BgpExtendedCommunityTransitiveIpv4AddressType.Choice - (*BgpExtendedCommunityTransitive4OctetAsType_Choice)(nil), // 1123: otg.BgpExtendedCommunityTransitive4OctetAsType.Choice - (*BgpExtendedCommunityTransitiveOpaqueType_Choice)(nil), // 1124: otg.BgpExtendedCommunityTransitiveOpaqueType.Choice - (*BgpExtendedCommunityTransitiveEvpnType_Choice)(nil), // 1125: otg.BgpExtendedCommunityTransitiveEvpnType.Choice - (*BgpExtendedCommunityNonTransitive2OctetAsType_Choice)(nil), // 1126: otg.BgpExtendedCommunityNonTransitive2OctetAsType.Choice - (*BgpV6RouteRange_NextHopMode)(nil), // 1127: otg.BgpV6RouteRange.NextHopMode - (*BgpV6RouteRange_NextHopAddressType)(nil), // 1128: otg.BgpV6RouteRange.NextHopAddressType - (*BgpSrteV4Policy_NextHopMode)(nil), // 1129: otg.BgpSrteV4Policy.NextHopMode - (*BgpSrteV4Policy_NextHopAddressType)(nil), // 1130: otg.BgpSrteV4Policy.NextHopAddressType - (*BgpSrteRemoteEndpointSubTlv_AddressFamily)(nil), // 1131: otg.BgpSrteRemoteEndpointSubTlv.AddressFamily - (*BgpSrteBindingSubTlv_BindingSidType)(nil), // 1132: otg.BgpSrteBindingSubTlv.BindingSidType - (*BgpSrteExplicitNullLabelPolicySubTlv_ExplicitNullLabelPolicy)(nil), // 1133: otg.BgpSrteExplicitNullLabelPolicySubTlv.ExplicitNullLabelPolicy - (*BgpSrteSegment_SegmentType)(nil), // 1134: otg.BgpSrteSegment.SegmentType - (*BgpSrteV6Policy_NextHopMode)(nil), // 1135: otg.BgpSrteV6Policy.NextHopMode - (*BgpSrteV6Policy_NextHopAddressType)(nil), // 1136: otg.BgpSrteV6Policy.NextHopAddressType - (*BgpV6Peer_AsType)(nil), // 1137: otg.BgpV6Peer.AsType - (*BgpV6Peer_AsNumberWidth)(nil), // 1138: otg.BgpV6Peer.AsNumberWidth - (*BgpV6EthernetSegment_ActiveMode)(nil), // 1139: otg.BgpV6EthernetSegment.ActiveMode - (*BgpV6EvpnEvis_Choice)(nil), // 1140: otg.BgpV6EvpnEvis.Choice - (*BgpV6EviVxlan_ReplicationType)(nil), // 1141: otg.BgpV6EviVxlan.ReplicationType - (*VxlanV4TunnelDestinationIPMode_Choice)(nil), // 1142: otg.VxlanV4TunnelDestinationIPMode.Choice - (*VxlanV6TunnelDestinationIPMode_Choice)(nil), // 1143: otg.VxlanV6TunnelDestinationIPMode.Choice - (*RsvpLspIpv4InterfaceP2PEgressIpv4Lsp_ReservationStyle)(nil), // 1144: otg.RsvpLspIpv4InterfaceP2PEgressIpv4Lsp.ReservationStyle - (*RsvpEro_PrependNeighborIp)(nil), // 1145: otg.RsvpEro.PrependNeighborIp - (*RsvpEroSubobject_Type)(nil), // 1146: otg.RsvpEroSubobject.Type - (*RsvpEroSubobject_HopType)(nil), // 1147: otg.RsvpEroSubobject.HopType - (*FlowTxRx_Choice)(nil), // 1148: otg.FlowTxRx.Choice - (*FlowRouter_Mode)(nil), // 1149: otg.FlowRouter.Mode - (*FlowHeader_Choice)(nil), // 1150: otg.FlowHeader.Choice - (*FlowIpv4Priority_Choice)(nil), // 1151: otg.FlowIpv4Priority.Choice - (*FlowIcmp_Choice)(nil), // 1152: otg.FlowIcmp.Choice - (*FlowIcmpv6_Choice)(nil), // 1153: otg.FlowIcmpv6.Choice - (*FlowSize_Choice)(nil), // 1154: otg.FlowSize.Choice - (*FlowSizeWeightPairs_Choice)(nil), // 1155: otg.FlowSizeWeightPairs.Choice - (*FlowSizeWeightPairs_Predefined)(nil), // 1156: otg.FlowSizeWeightPairs.Predefined - (*FlowRate_Choice)(nil), // 1157: otg.FlowRate.Choice - (*FlowDuration_Choice)(nil), // 1158: otg.FlowDuration.Choice - (*FlowDelay_Choice)(nil), // 1159: otg.FlowDelay.Choice - (*FlowDurationInterBurstGap_Choice)(nil), // 1160: otg.FlowDurationInterBurstGap.Choice - (*FlowLatencyMetrics_Mode)(nil), // 1161: otg.FlowLatencyMetrics.Mode - (*FlowRxTxRatio_Choice)(nil), // 1162: otg.FlowRxTxRatio.Choice - (*EventRequest_Type)(nil), // 1163: otg.EventRequest.Type - (*LldpConnection_Choice)(nil), // 1164: otg.LldpConnection.Choice - (*LldpChassisId_Choice)(nil), // 1165: otg.LldpChassisId.Choice - (*LldpPortId_Choice)(nil), // 1166: otg.LldpPortId.Choice - (*LldpChassisMacSubType_Choice)(nil), // 1167: otg.LldpChassisMacSubType.Choice - (*LldpPortInterfaceNameSubType_Choice)(nil), // 1168: otg.LldpPortInterfaceNameSubType.Choice - (*LldpSystemName_Choice)(nil), // 1169: otg.LldpSystemName.Choice - (*Error_Kind)(nil), // 1170: otg.Error.Kind - (*ConfigUpdate_Choice)(nil), // 1171: otg.ConfigUpdate.Choice - (*FlowsUpdate_PropertyNames)(nil), // 1172: otg.FlowsUpdate.PropertyNames - (*ControlState_Choice)(nil), // 1173: otg.ControlState.Choice - (*StatePort_Choice)(nil), // 1174: otg.StatePort.Choice - (*StateTraffic_Choice)(nil), // 1175: otg.StateTraffic.Choice - (*StateProtocol_Choice)(nil), // 1176: otg.StateProtocol.Choice - (*StatePortLink_State)(nil), // 1177: otg.StatePortLink.State - (*StatePortCapture_State)(nil), // 1178: otg.StatePortCapture.State - (*StateTrafficFlowTransmit_State)(nil), // 1179: otg.StateTrafficFlowTransmit.State - (*StateProtocolAll_State)(nil), // 1180: otg.StateProtocolAll.State - (*StateProtocolRoute_State)(nil), // 1181: otg.StateProtocolRoute.State - (*StateProtocolLacp_Choice)(nil), // 1182: otg.StateProtocolLacp.Choice - (*StateProtocolLacpAdmin_State)(nil), // 1183: otg.StateProtocolLacpAdmin.State - (*StateProtocolLacpMemberPorts_State)(nil), // 1184: otg.StateProtocolLacpMemberPorts.State - (*StateProtocolBgp_Choice)(nil), // 1185: otg.StateProtocolBgp.Choice - (*StateProtocolBgpPeers_State)(nil), // 1186: otg.StateProtocolBgpPeers.State - (*StateProtocolIsis_Choice)(nil), // 1187: otg.StateProtocolIsis.Choice - (*StateProtocolIsisRouters_State)(nil), // 1188: otg.StateProtocolIsisRouters.State - (*ControlAction_Choice)(nil), // 1189: otg.ControlAction.Choice - (*ActionResponse_Choice)(nil), // 1190: otg.ActionResponse.Choice - (*ActionProtocol_Choice)(nil), // 1191: otg.ActionProtocol.Choice - (*ActionResponseProtocol_Choice)(nil), // 1192: otg.ActionResponseProtocol.Choice - (*ActionProtocolIpv4_Choice)(nil), // 1193: otg.ActionProtocolIpv4.Choice - (*ActionResponseProtocolIpv4_Choice)(nil), // 1194: otg.ActionResponseProtocolIpv4.Choice - (*ActionResponseProtocolIpv4PingResponse_Result)(nil), // 1195: otg.ActionResponseProtocolIpv4PingResponse.Result - (*ActionProtocolIpv6_Choice)(nil), // 1196: otg.ActionProtocolIpv6.Choice - (*ActionResponseProtocolIpv6_Choice)(nil), // 1197: otg.ActionResponseProtocolIpv6.Choice - (*ActionResponseProtocolIpv6PingResponse_Result)(nil), // 1198: otg.ActionResponseProtocolIpv6PingResponse.Result - (*ActionProtocolBgp_Choice)(nil), // 1199: otg.ActionProtocolBgp.Choice - (*ActionProtocolBgpNotification_Choice)(nil), // 1200: otg.ActionProtocolBgpNotification.Choice - (*MetricsRequest_Choice)(nil), // 1201: otg.MetricsRequest.Choice - (*MetricsResponse_Choice)(nil), // 1202: otg.MetricsResponse.Choice - (*PortMetricsRequest_ColumnNames)(nil), // 1203: otg.PortMetricsRequest.ColumnNames - (*PortMetric_Link)(nil), // 1204: otg.PortMetric.Link - (*PortMetric_Capture)(nil), // 1205: otg.PortMetric.Capture - (*PortMetric_Transmit)(nil), // 1206: otg.PortMetric.Transmit - (*FlowMetricsRequest_MetricNames)(nil), // 1207: otg.FlowMetricsRequest.MetricNames - (*FlowTaggedMetricsFilter_MetricNames)(nil), // 1208: otg.FlowTaggedMetricsFilter.MetricNames - (*FlowMetric_Transmit)(nil), // 1209: otg.FlowMetric.Transmit - (*FlowMetricTagValue_Choice)(nil), // 1210: otg.FlowMetricTagValue.Choice - (*Bgpv4MetricsRequest_ColumnNames)(nil), // 1211: otg.Bgpv4MetricsRequest.ColumnNames - (*Bgpv4Metric_SessionState)(nil), // 1212: otg.Bgpv4Metric.SessionState - (*Bgpv4Metric_FsmState)(nil), // 1213: otg.Bgpv4Metric.FsmState - (*Bgpv6MetricsRequest_ColumnNames)(nil), // 1214: otg.Bgpv6MetricsRequest.ColumnNames - (*Bgpv6Metric_SessionState)(nil), // 1215: otg.Bgpv6Metric.SessionState - (*Bgpv6Metric_FsmState)(nil), // 1216: otg.Bgpv6Metric.FsmState - (*IsisMetricsRequest_ColumnNames)(nil), // 1217: otg.IsisMetricsRequest.ColumnNames - (*LagMetricsRequest_ColumnNames)(nil), // 1218: otg.LagMetricsRequest.ColumnNames - (*LagMetric_OperStatus)(nil), // 1219: otg.LagMetric.OperStatus - (*LacpMetricsRequest_ColumnNames)(nil), // 1220: otg.LacpMetricsRequest.ColumnNames - (*LacpMetric_Activity)(nil), // 1221: otg.LacpMetric.Activity - (*LacpMetric_Timeout)(nil), // 1222: otg.LacpMetric.Timeout - (*LacpMetric_Synchronization)(nil), // 1223: otg.LacpMetric.Synchronization - (*LldpMetricsRequest_ColumnNames)(nil), // 1224: otg.LldpMetricsRequest.ColumnNames - (*RsvpMetricsRequest_ColumnNames)(nil), // 1225: otg.RsvpMetricsRequest.ColumnNames - (*StatesRequest_Choice)(nil), // 1226: otg.StatesRequest.Choice - (*StatesResponse_Choice)(nil), // 1227: otg.StatesResponse.Choice - (*BgpPrefixStateRequest_PrefixFilters)(nil), // 1228: otg.BgpPrefixStateRequest.PrefixFilters - (*BgpPrefixIpv4UnicastFilter_Origin)(nil), // 1229: otg.BgpPrefixIpv4UnicastFilter.Origin - (*BgpPrefixIpv6UnicastFilter_Origin)(nil), // 1230: otg.BgpPrefixIpv6UnicastFilter.Origin - (*BgpPrefixIpv4UnicastState_Origin)(nil), // 1231: otg.BgpPrefixIpv4UnicastState.Origin - (*BgpPrefixIpv6UnicastState_Origin)(nil), // 1232: otg.BgpPrefixIpv6UnicastState.Origin - (*ResultBgpCommunity_Type)(nil), // 1233: otg.ResultBgpCommunity.Type - (*ResultBgpAsPathSegment_Type)(nil), // 1234: otg.ResultBgpAsPathSegment.Type - (*IsisLspState_PduType)(nil), // 1235: otg.IsisLspState.PduType - (*IsisLspV4Prefix_RedistributionType)(nil), // 1236: otg.IsisLspV4Prefix.RedistributionType - (*IsisLspV4Prefix_OriginType)(nil), // 1237: otg.IsisLspV4Prefix.OriginType - (*IsisLspExtendedV4Prefix_RedistributionType)(nil), // 1238: otg.IsisLspExtendedV4Prefix.RedistributionType - (*IsisLspV6Prefix_RedistributionType)(nil), // 1239: otg.IsisLspV6Prefix.RedistributionType - (*IsisLspV6Prefix_OriginType)(nil), // 1240: otg.IsisLspV6Prefix.OriginType - (*LldpNeighborsState_ChassisIdType)(nil), // 1241: otg.LldpNeighborsState.ChassisIdType - (*LldpNeighborsState_PortIdType)(nil), // 1242: otg.LldpNeighborsState.PortIdType - (*LldpCapabilityState_CapabilityName)(nil), // 1243: otg.LldpCapabilityState.CapabilityName - (*RsvpLspState_SessionStatus)(nil), // 1244: otg.RsvpLspState.SessionStatus - (*RsvpLspState_LastFlapReason)(nil), // 1245: otg.RsvpLspState.LastFlapReason - (*RsvpLspIpv4Ero_Type)(nil), // 1246: otg.RsvpLspIpv4Ero.Type - (*PatternFlowEthernetDst_Choice)(nil), // 1247: otg.PatternFlowEthernetDst.Choice - (*PatternFlowEthernetSrc_Choice)(nil), // 1248: otg.PatternFlowEthernetSrc.Choice - (*PatternFlowEthernetEtherType_Choice)(nil), // 1249: otg.PatternFlowEthernetEtherType.Choice - (*PatternFlowEthernetPfcQueue_Choice)(nil), // 1250: otg.PatternFlowEthernetPfcQueue.Choice - (*PatternFlowVlanPriority_Choice)(nil), // 1251: otg.PatternFlowVlanPriority.Choice - (*PatternFlowVlanCfi_Choice)(nil), // 1252: otg.PatternFlowVlanCfi.Choice - (*PatternFlowVlanId_Choice)(nil), // 1253: otg.PatternFlowVlanId.Choice - (*PatternFlowVlanTpid_Choice)(nil), // 1254: otg.PatternFlowVlanTpid.Choice - (*PatternFlowVxlanFlags_Choice)(nil), // 1255: otg.PatternFlowVxlanFlags.Choice - (*PatternFlowVxlanReserved0_Choice)(nil), // 1256: otg.PatternFlowVxlanReserved0.Choice - (*PatternFlowVxlanVni_Choice)(nil), // 1257: otg.PatternFlowVxlanVni.Choice - (*PatternFlowVxlanReserved1_Choice)(nil), // 1258: otg.PatternFlowVxlanReserved1.Choice - (*PatternFlowIpv4Version_Choice)(nil), // 1259: otg.PatternFlowIpv4Version.Choice - (*PatternFlowIpv4HeaderLength_Choice)(nil), // 1260: otg.PatternFlowIpv4HeaderLength.Choice - (*PatternFlowIpv4TotalLength_Choice)(nil), // 1261: otg.PatternFlowIpv4TotalLength.Choice - (*PatternFlowIpv4Identification_Choice)(nil), // 1262: otg.PatternFlowIpv4Identification.Choice - (*PatternFlowIpv4Reserved_Choice)(nil), // 1263: otg.PatternFlowIpv4Reserved.Choice - (*PatternFlowIpv4DontFragment_Choice)(nil), // 1264: otg.PatternFlowIpv4DontFragment.Choice - (*PatternFlowIpv4MoreFragments_Choice)(nil), // 1265: otg.PatternFlowIpv4MoreFragments.Choice - (*PatternFlowIpv4FragmentOffset_Choice)(nil), // 1266: otg.PatternFlowIpv4FragmentOffset.Choice - (*PatternFlowIpv4TimeToLive_Choice)(nil), // 1267: otg.PatternFlowIpv4TimeToLive.Choice - (*PatternFlowIpv4Protocol_Choice)(nil), // 1268: otg.PatternFlowIpv4Protocol.Choice - (*PatternFlowIpv4HeaderChecksum_Choice)(nil), // 1269: otg.PatternFlowIpv4HeaderChecksum.Choice - (*PatternFlowIpv4HeaderChecksum_Generated)(nil), // 1270: otg.PatternFlowIpv4HeaderChecksum.Generated - (*PatternFlowIpv4Src_Choice)(nil), // 1271: otg.PatternFlowIpv4Src.Choice - (*PatternFlowIpv4Dst_Choice)(nil), // 1272: otg.PatternFlowIpv4Dst.Choice - (*PatternFlowIpv4PriorityRaw_Choice)(nil), // 1273: otg.PatternFlowIpv4PriorityRaw.Choice - (*PatternFlowIpv4DscpPhb_Choice)(nil), // 1274: otg.PatternFlowIpv4DscpPhb.Choice - (*PatternFlowIpv4DscpEcn_Choice)(nil), // 1275: otg.PatternFlowIpv4DscpEcn.Choice - (*PatternFlowIpv4TosPrecedence_Choice)(nil), // 1276: otg.PatternFlowIpv4TosPrecedence.Choice - (*PatternFlowIpv4TosDelay_Choice)(nil), // 1277: otg.PatternFlowIpv4TosDelay.Choice - (*PatternFlowIpv4TosThroughput_Choice)(nil), // 1278: otg.PatternFlowIpv4TosThroughput.Choice - (*PatternFlowIpv4TosReliability_Choice)(nil), // 1279: otg.PatternFlowIpv4TosReliability.Choice - (*PatternFlowIpv4TosMonetary_Choice)(nil), // 1280: otg.PatternFlowIpv4TosMonetary.Choice - (*PatternFlowIpv4TosUnused_Choice)(nil), // 1281: otg.PatternFlowIpv4TosUnused.Choice - (*PatternFlowIpv6Version_Choice)(nil), // 1282: otg.PatternFlowIpv6Version.Choice - (*PatternFlowIpv6TrafficClass_Choice)(nil), // 1283: otg.PatternFlowIpv6TrafficClass.Choice - (*PatternFlowIpv6FlowLabel_Choice)(nil), // 1284: otg.PatternFlowIpv6FlowLabel.Choice - (*PatternFlowIpv6PayloadLength_Choice)(nil), // 1285: otg.PatternFlowIpv6PayloadLength.Choice - (*PatternFlowIpv6NextHeader_Choice)(nil), // 1286: otg.PatternFlowIpv6NextHeader.Choice - (*PatternFlowIpv6HopLimit_Choice)(nil), // 1287: otg.PatternFlowIpv6HopLimit.Choice - (*PatternFlowIpv6Src_Choice)(nil), // 1288: otg.PatternFlowIpv6Src.Choice - (*PatternFlowIpv6Dst_Choice)(nil), // 1289: otg.PatternFlowIpv6Dst.Choice - (*PatternFlowPfcPauseDst_Choice)(nil), // 1290: otg.PatternFlowPfcPauseDst.Choice - (*PatternFlowPfcPauseSrc_Choice)(nil), // 1291: otg.PatternFlowPfcPauseSrc.Choice - (*PatternFlowPfcPauseEtherType_Choice)(nil), // 1292: otg.PatternFlowPfcPauseEtherType.Choice - (*PatternFlowPfcPauseControlOpCode_Choice)(nil), // 1293: otg.PatternFlowPfcPauseControlOpCode.Choice - (*PatternFlowPfcPauseClassEnableVector_Choice)(nil), // 1294: otg.PatternFlowPfcPauseClassEnableVector.Choice - (*PatternFlowPfcPausePauseClass0_Choice)(nil), // 1295: otg.PatternFlowPfcPausePauseClass0.Choice - (*PatternFlowPfcPausePauseClass1_Choice)(nil), // 1296: otg.PatternFlowPfcPausePauseClass1.Choice - (*PatternFlowPfcPausePauseClass2_Choice)(nil), // 1297: otg.PatternFlowPfcPausePauseClass2.Choice - (*PatternFlowPfcPausePauseClass3_Choice)(nil), // 1298: otg.PatternFlowPfcPausePauseClass3.Choice - (*PatternFlowPfcPausePauseClass4_Choice)(nil), // 1299: otg.PatternFlowPfcPausePauseClass4.Choice - (*PatternFlowPfcPausePauseClass5_Choice)(nil), // 1300: otg.PatternFlowPfcPausePauseClass5.Choice - (*PatternFlowPfcPausePauseClass6_Choice)(nil), // 1301: otg.PatternFlowPfcPausePauseClass6.Choice - (*PatternFlowPfcPausePauseClass7_Choice)(nil), // 1302: otg.PatternFlowPfcPausePauseClass7.Choice - (*PatternFlowEthernetPauseDst_Choice)(nil), // 1303: otg.PatternFlowEthernetPauseDst.Choice - (*PatternFlowEthernetPauseSrc_Choice)(nil), // 1304: otg.PatternFlowEthernetPauseSrc.Choice - (*PatternFlowEthernetPauseEtherType_Choice)(nil), // 1305: otg.PatternFlowEthernetPauseEtherType.Choice - (*PatternFlowEthernetPauseControlOpCode_Choice)(nil), // 1306: otg.PatternFlowEthernetPauseControlOpCode.Choice - (*PatternFlowEthernetPauseTime_Choice)(nil), // 1307: otg.PatternFlowEthernetPauseTime.Choice - (*PatternFlowTcpSrcPort_Choice)(nil), // 1308: otg.PatternFlowTcpSrcPort.Choice - (*PatternFlowTcpDstPort_Choice)(nil), // 1309: otg.PatternFlowTcpDstPort.Choice - (*PatternFlowTcpSeqNum_Choice)(nil), // 1310: otg.PatternFlowTcpSeqNum.Choice - (*PatternFlowTcpAckNum_Choice)(nil), // 1311: otg.PatternFlowTcpAckNum.Choice - (*PatternFlowTcpDataOffset_Choice)(nil), // 1312: otg.PatternFlowTcpDataOffset.Choice - (*PatternFlowTcpEcnNs_Choice)(nil), // 1313: otg.PatternFlowTcpEcnNs.Choice - (*PatternFlowTcpEcnCwr_Choice)(nil), // 1314: otg.PatternFlowTcpEcnCwr.Choice - (*PatternFlowTcpEcnEcho_Choice)(nil), // 1315: otg.PatternFlowTcpEcnEcho.Choice - (*PatternFlowTcpCtlUrg_Choice)(nil), // 1316: otg.PatternFlowTcpCtlUrg.Choice - (*PatternFlowTcpCtlAck_Choice)(nil), // 1317: otg.PatternFlowTcpCtlAck.Choice - (*PatternFlowTcpCtlPsh_Choice)(nil), // 1318: otg.PatternFlowTcpCtlPsh.Choice - (*PatternFlowTcpCtlRst_Choice)(nil), // 1319: otg.PatternFlowTcpCtlRst.Choice - (*PatternFlowTcpCtlSyn_Choice)(nil), // 1320: otg.PatternFlowTcpCtlSyn.Choice - (*PatternFlowTcpCtlFin_Choice)(nil), // 1321: otg.PatternFlowTcpCtlFin.Choice - (*PatternFlowTcpWindow_Choice)(nil), // 1322: otg.PatternFlowTcpWindow.Choice - (*PatternFlowUdpSrcPort_Choice)(nil), // 1323: otg.PatternFlowUdpSrcPort.Choice - (*PatternFlowUdpDstPort_Choice)(nil), // 1324: otg.PatternFlowUdpDstPort.Choice - (*PatternFlowUdpLength_Choice)(nil), // 1325: otg.PatternFlowUdpLength.Choice - (*PatternFlowUdpChecksum_Choice)(nil), // 1326: otg.PatternFlowUdpChecksum.Choice - (*PatternFlowUdpChecksum_Generated)(nil), // 1327: otg.PatternFlowUdpChecksum.Generated - (*PatternFlowGreChecksumPresent_Choice)(nil), // 1328: otg.PatternFlowGreChecksumPresent.Choice - (*PatternFlowGreReserved0_Choice)(nil), // 1329: otg.PatternFlowGreReserved0.Choice - (*PatternFlowGreVersion_Choice)(nil), // 1330: otg.PatternFlowGreVersion.Choice - (*PatternFlowGreProtocol_Choice)(nil), // 1331: otg.PatternFlowGreProtocol.Choice - (*PatternFlowGreChecksum_Choice)(nil), // 1332: otg.PatternFlowGreChecksum.Choice - (*PatternFlowGreChecksum_Generated)(nil), // 1333: otg.PatternFlowGreChecksum.Generated - (*PatternFlowGreReserved1_Choice)(nil), // 1334: otg.PatternFlowGreReserved1.Choice - (*PatternFlowGtpv1Version_Choice)(nil), // 1335: otg.PatternFlowGtpv1Version.Choice - (*PatternFlowGtpv1ProtocolType_Choice)(nil), // 1336: otg.PatternFlowGtpv1ProtocolType.Choice - (*PatternFlowGtpv1Reserved_Choice)(nil), // 1337: otg.PatternFlowGtpv1Reserved.Choice - (*PatternFlowGtpv1EFlag_Choice)(nil), // 1338: otg.PatternFlowGtpv1EFlag.Choice - (*PatternFlowGtpv1SFlag_Choice)(nil), // 1339: otg.PatternFlowGtpv1SFlag.Choice - (*PatternFlowGtpv1PnFlag_Choice)(nil), // 1340: otg.PatternFlowGtpv1PnFlag.Choice - (*PatternFlowGtpv1MessageType_Choice)(nil), // 1341: otg.PatternFlowGtpv1MessageType.Choice - (*PatternFlowGtpv1MessageLength_Choice)(nil), // 1342: otg.PatternFlowGtpv1MessageLength.Choice - (*PatternFlowGtpv1Teid_Choice)(nil), // 1343: otg.PatternFlowGtpv1Teid.Choice - (*PatternFlowGtpv1SquenceNumber_Choice)(nil), // 1344: otg.PatternFlowGtpv1SquenceNumber.Choice - (*PatternFlowGtpv1NPduNumber_Choice)(nil), // 1345: otg.PatternFlowGtpv1NPduNumber.Choice - (*PatternFlowGtpv1NextExtensionHeaderType_Choice)(nil), // 1346: otg.PatternFlowGtpv1NextExtensionHeaderType.Choice - (*PatternFlowGtpExtensionExtensionLength_Choice)(nil), // 1347: otg.PatternFlowGtpExtensionExtensionLength.Choice - (*PatternFlowGtpExtensionContents_Choice)(nil), // 1348: otg.PatternFlowGtpExtensionContents.Choice - (*PatternFlowGtpExtensionNextExtensionHeader_Choice)(nil), // 1349: otg.PatternFlowGtpExtensionNextExtensionHeader.Choice - (*PatternFlowGtpv2Version_Choice)(nil), // 1350: otg.PatternFlowGtpv2Version.Choice - (*PatternFlowGtpv2PiggybackingFlag_Choice)(nil), // 1351: otg.PatternFlowGtpv2PiggybackingFlag.Choice - (*PatternFlowGtpv2TeidFlag_Choice)(nil), // 1352: otg.PatternFlowGtpv2TeidFlag.Choice - (*PatternFlowGtpv2Spare1_Choice)(nil), // 1353: otg.PatternFlowGtpv2Spare1.Choice - (*PatternFlowGtpv2MessageType_Choice)(nil), // 1354: otg.PatternFlowGtpv2MessageType.Choice - (*PatternFlowGtpv2MessageLength_Choice)(nil), // 1355: otg.PatternFlowGtpv2MessageLength.Choice - (*PatternFlowGtpv2Teid_Choice)(nil), // 1356: otg.PatternFlowGtpv2Teid.Choice - (*PatternFlowGtpv2SequenceNumber_Choice)(nil), // 1357: otg.PatternFlowGtpv2SequenceNumber.Choice - (*PatternFlowGtpv2Spare2_Choice)(nil), // 1358: otg.PatternFlowGtpv2Spare2.Choice - (*PatternFlowArpHardwareType_Choice)(nil), // 1359: otg.PatternFlowArpHardwareType.Choice - (*PatternFlowArpProtocolType_Choice)(nil), // 1360: otg.PatternFlowArpProtocolType.Choice - (*PatternFlowArpHardwareLength_Choice)(nil), // 1361: otg.PatternFlowArpHardwareLength.Choice - (*PatternFlowArpProtocolLength_Choice)(nil), // 1362: otg.PatternFlowArpProtocolLength.Choice - (*PatternFlowArpOperation_Choice)(nil), // 1363: otg.PatternFlowArpOperation.Choice - (*PatternFlowArpSenderHardwareAddr_Choice)(nil), // 1364: otg.PatternFlowArpSenderHardwareAddr.Choice - (*PatternFlowArpSenderProtocolAddr_Choice)(nil), // 1365: otg.PatternFlowArpSenderProtocolAddr.Choice - (*PatternFlowArpTargetHardwareAddr_Choice)(nil), // 1366: otg.PatternFlowArpTargetHardwareAddr.Choice - (*PatternFlowArpTargetProtocolAddr_Choice)(nil), // 1367: otg.PatternFlowArpTargetProtocolAddr.Choice - (*PatternFlowIcmpEchoType_Choice)(nil), // 1368: otg.PatternFlowIcmpEchoType.Choice - (*PatternFlowIcmpEchoCode_Choice)(nil), // 1369: otg.PatternFlowIcmpEchoCode.Choice - (*PatternFlowIcmpEchoChecksum_Choice)(nil), // 1370: otg.PatternFlowIcmpEchoChecksum.Choice - (*PatternFlowIcmpEchoChecksum_Generated)(nil), // 1371: otg.PatternFlowIcmpEchoChecksum.Generated - (*PatternFlowIcmpEchoIdentifier_Choice)(nil), // 1372: otg.PatternFlowIcmpEchoIdentifier.Choice - (*PatternFlowIcmpEchoSequenceNumber_Choice)(nil), // 1373: otg.PatternFlowIcmpEchoSequenceNumber.Choice - (*PatternFlowIcmpCommonChecksum_Choice)(nil), // 1374: otg.PatternFlowIcmpCommonChecksum.Choice - (*PatternFlowIcmpCommonChecksum_Generated)(nil), // 1375: otg.PatternFlowIcmpCommonChecksum.Generated - (*PatternFlowIcmpNextFieldsIdentifier_Choice)(nil), // 1376: otg.PatternFlowIcmpNextFieldsIdentifier.Choice - (*PatternFlowIcmpNextFieldsSequenceNumber_Choice)(nil), // 1377: otg.PatternFlowIcmpNextFieldsSequenceNumber.Choice - (*PatternFlowIcmpv6EchoType_Choice)(nil), // 1378: otg.PatternFlowIcmpv6EchoType.Choice - (*PatternFlowIcmpv6EchoCode_Choice)(nil), // 1379: otg.PatternFlowIcmpv6EchoCode.Choice - (*PatternFlowIcmpv6EchoIdentifier_Choice)(nil), // 1380: otg.PatternFlowIcmpv6EchoIdentifier.Choice - (*PatternFlowIcmpv6EchoSequenceNumber_Choice)(nil), // 1381: otg.PatternFlowIcmpv6EchoSequenceNumber.Choice - (*PatternFlowIcmpv6EchoChecksum_Choice)(nil), // 1382: otg.PatternFlowIcmpv6EchoChecksum.Choice - (*PatternFlowIcmpv6EchoChecksum_Generated)(nil), // 1383: otg.PatternFlowIcmpv6EchoChecksum.Generated - (*PatternFlowIcmpv6CommonChecksum_Choice)(nil), // 1384: otg.PatternFlowIcmpv6CommonChecksum.Choice - (*PatternFlowIcmpv6CommonChecksum_Generated)(nil), // 1385: otg.PatternFlowIcmpv6CommonChecksum.Generated - (*PatternFlowPppAddress_Choice)(nil), // 1386: otg.PatternFlowPppAddress.Choice - (*PatternFlowPppControl_Choice)(nil), // 1387: otg.PatternFlowPppControl.Choice - (*PatternFlowPppProtocolType_Choice)(nil), // 1388: otg.PatternFlowPppProtocolType.Choice - (*PatternFlowIgmpv1Version_Choice)(nil), // 1389: otg.PatternFlowIgmpv1Version.Choice - (*PatternFlowIgmpv1Type_Choice)(nil), // 1390: otg.PatternFlowIgmpv1Type.Choice - (*PatternFlowIgmpv1Unused_Choice)(nil), // 1391: otg.PatternFlowIgmpv1Unused.Choice - (*PatternFlowIgmpv1Checksum_Choice)(nil), // 1392: otg.PatternFlowIgmpv1Checksum.Choice - (*PatternFlowIgmpv1Checksum_Generated)(nil), // 1393: otg.PatternFlowIgmpv1Checksum.Generated - (*PatternFlowIgmpv1GroupAddress_Choice)(nil), // 1394: otg.PatternFlowIgmpv1GroupAddress.Choice - (*PatternFlowMplsLabel_Choice)(nil), // 1395: otg.PatternFlowMplsLabel.Choice - (*PatternFlowMplsTrafficClass_Choice)(nil), // 1396: otg.PatternFlowMplsTrafficClass.Choice - (*PatternFlowMplsBottomOfStack_Choice)(nil), // 1397: otg.PatternFlowMplsBottomOfStack.Choice - (*PatternFlowMplsTimeToLive_Choice)(nil), // 1398: otg.PatternFlowMplsTimeToLive.Choice - (*emptypb.Empty)(nil), // 1399: google.protobuf.Empty + (LagProtocol_Choice_Enum)(0), // 0: otg.LagProtocol.Choice.Enum + (LagPortLacp_ActorActivity_Enum)(0), // 1: otg.LagPortLacp.ActorActivity.Enum + (EthernetConnection_Choice_Enum)(0), // 2: otg.EthernetConnection.Choice.Enum + (DeviceVlan_Tpid_Enum)(0), // 3: otg.DeviceVlan.Tpid.Enum + (DeviceIpv4GatewayMAC_Choice_Enum)(0), // 4: otg.DeviceIpv4GatewayMAC.Choice.Enum + (DeviceIpv6GatewayMAC_Choice_Enum)(0), // 5: otg.DeviceIpv6GatewayMAC.Choice.Enum + (Layer1_Speed_Enum)(0), // 6: otg.Layer1.Speed.Enum + (Layer1_Media_Enum)(0), // 7: otg.Layer1.Media.Enum + (Layer1FlowControl_Choice_Enum)(0), // 8: otg.Layer1FlowControl.Choice.Enum + (Capture_Format_Enum)(0), // 9: otg.Capture.Format.Enum + (CaptureFilter_Choice_Enum)(0), // 10: otg.CaptureFilter.Choice.Enum + (IsisInterface_NetworkType_Enum)(0), // 11: otg.IsisInterface.NetworkType.Enum + (IsisInterface_LevelType_Enum)(0), // 12: otg.IsisInterface.LevelType.Enum + (IsisInterfaceAuthentication_AuthType_Enum)(0), // 13: otg.IsisInterfaceAuthentication.AuthType.Enum + (IsisAuthenticationBase_AuthType_Enum)(0), // 14: otg.IsisAuthenticationBase.AuthType.Enum + (IsisV4RouteRange_OriginType_Enum)(0), // 15: otg.IsisV4RouteRange.OriginType.Enum + (IsisV4RouteRange_RedistributionType_Enum)(0), // 16: otg.IsisV4RouteRange.RedistributionType.Enum + (IsisV6RouteRange_OriginType_Enum)(0), // 17: otg.IsisV6RouteRange.OriginType.Enum + (IsisV6RouteRange_RedistributionType_Enum)(0), // 18: otg.IsisV6RouteRange.RedistributionType.Enum + (DeviceBgpMessageHeaderError_Subcode_Enum)(0), // 19: otg.DeviceBgpMessageHeaderError.Subcode.Enum + (DeviceBgpOpenMessageError_Subcode_Enum)(0), // 20: otg.DeviceBgpOpenMessageError.Subcode.Enum + (DeviceBgpUpdateMessageError_Subcode_Enum)(0), // 21: otg.DeviceBgpUpdateMessageError.Subcode.Enum + (DeviceBgpCeaseError_Subcode_Enum)(0), // 22: otg.DeviceBgpCeaseError.Subcode.Enum + (BgpV4Peer_AsType_Enum)(0), // 23: otg.BgpV4Peer.AsType.Enum + (BgpV4Peer_AsNumberWidth_Enum)(0), // 24: otg.BgpV4Peer.AsNumberWidth.Enum + (BgpV4EthernetSegment_ActiveMode_Enum)(0), // 25: otg.BgpV4EthernetSegment.ActiveMode.Enum + (BgpRouteAdvanced_Origin_Enum)(0), // 26: otg.BgpRouteAdvanced.Origin.Enum + (BgpCommunity_Type_Enum)(0), // 27: otg.BgpCommunity.Type.Enum + (BgpExtCommunity_Type_Enum)(0), // 28: otg.BgpExtCommunity.Type.Enum + (BgpExtCommunity_Subtype_Enum)(0), // 29: otg.BgpExtCommunity.Subtype.Enum + (BgpAsPath_AsSetMode_Enum)(0), // 30: otg.BgpAsPath.AsSetMode.Enum + (BgpAsPathSegment_Type_Enum)(0), // 31: otg.BgpAsPathSegment.Type.Enum + (BgpV4EvpnEvis_Choice_Enum)(0), // 32: otg.BgpV4EvpnEvis.Choice.Enum + (BgpV4EviVxlan_ReplicationType_Enum)(0), // 33: otg.BgpV4EviVxlan.ReplicationType.Enum + (BgpRouteDistinguisher_RdType_Enum)(0), // 34: otg.BgpRouteDistinguisher.RdType.Enum + (BgpRouteTarget_RtType_Enum)(0), // 35: otg.BgpRouteTarget.RtType.Enum + (BgpV4RouteRange_NextHopMode_Enum)(0), // 36: otg.BgpV4RouteRange.NextHopMode.Enum + (BgpV4RouteRange_NextHopAddressType_Enum)(0), // 37: otg.BgpV4RouteRange.NextHopAddressType.Enum + (BgpExtendedCommunity_Choice_Enum)(0), // 38: otg.BgpExtendedCommunity.Choice.Enum + (BgpExtendedCommunityTransitive2OctetAsType_Choice_Enum)(0), // 39: otg.BgpExtendedCommunityTransitive2OctetAsType.Choice.Enum + (BgpExtendedCommunityTransitiveIpv4AddressType_Choice_Enum)(0), // 40: otg.BgpExtendedCommunityTransitiveIpv4AddressType.Choice.Enum + (BgpExtendedCommunityTransitive4OctetAsType_Choice_Enum)(0), // 41: otg.BgpExtendedCommunityTransitive4OctetAsType.Choice.Enum + (BgpExtendedCommunityTransitiveOpaqueType_Choice_Enum)(0), // 42: otg.BgpExtendedCommunityTransitiveOpaqueType.Choice.Enum + (BgpExtendedCommunityTransitiveEvpnType_Choice_Enum)(0), // 43: otg.BgpExtendedCommunityTransitiveEvpnType.Choice.Enum + (BgpExtendedCommunityNonTransitive2OctetAsType_Choice_Enum)(0), // 44: otg.BgpExtendedCommunityNonTransitive2OctetAsType.Choice.Enum + (BgpV6RouteRange_NextHopMode_Enum)(0), // 45: otg.BgpV6RouteRange.NextHopMode.Enum + (BgpV6RouteRange_NextHopAddressType_Enum)(0), // 46: otg.BgpV6RouteRange.NextHopAddressType.Enum + (BgpSrteV4Policy_NextHopMode_Enum)(0), // 47: otg.BgpSrteV4Policy.NextHopMode.Enum + (BgpSrteV4Policy_NextHopAddressType_Enum)(0), // 48: otg.BgpSrteV4Policy.NextHopAddressType.Enum + (BgpSrteRemoteEndpointSubTlv_AddressFamily_Enum)(0), // 49: otg.BgpSrteRemoteEndpointSubTlv.AddressFamily.Enum + (BgpSrteBindingSubTlv_BindingSidType_Enum)(0), // 50: otg.BgpSrteBindingSubTlv.BindingSidType.Enum + (BgpSrteExplicitNullLabelPolicySubTlv_ExplicitNullLabelPolicy_Enum)(0), // 51: otg.BgpSrteExplicitNullLabelPolicySubTlv.ExplicitNullLabelPolicy.Enum + (BgpSrteSegment_SegmentType_Enum)(0), // 52: otg.BgpSrteSegment.SegmentType.Enum + (BgpSrteV6Policy_NextHopMode_Enum)(0), // 53: otg.BgpSrteV6Policy.NextHopMode.Enum + (BgpSrteV6Policy_NextHopAddressType_Enum)(0), // 54: otg.BgpSrteV6Policy.NextHopAddressType.Enum + (BgpV6Peer_AsType_Enum)(0), // 55: otg.BgpV6Peer.AsType.Enum + (BgpV6Peer_AsNumberWidth_Enum)(0), // 56: otg.BgpV6Peer.AsNumberWidth.Enum + (BgpV6EthernetSegment_ActiveMode_Enum)(0), // 57: otg.BgpV6EthernetSegment.ActiveMode.Enum + (BgpV6EvpnEvis_Choice_Enum)(0), // 58: otg.BgpV6EvpnEvis.Choice.Enum + (BgpV6EviVxlan_ReplicationType_Enum)(0), // 59: otg.BgpV6EviVxlan.ReplicationType.Enum + (VxlanV4TunnelDestinationIPMode_Choice_Enum)(0), // 60: otg.VxlanV4TunnelDestinationIPMode.Choice.Enum + (VxlanV6TunnelDestinationIPMode_Choice_Enum)(0), // 61: otg.VxlanV6TunnelDestinationIPMode.Choice.Enum + (RsvpLspIpv4InterfaceP2PEgressIpv4Lsp_ReservationStyle_Enum)(0), // 62: otg.RsvpLspIpv4InterfaceP2PEgressIpv4Lsp.ReservationStyle.Enum + (RsvpEro_PrependNeighborIp_Enum)(0), // 63: otg.RsvpEro.PrependNeighborIp.Enum + (RsvpEroSubobject_Type_Enum)(0), // 64: otg.RsvpEroSubobject.Type.Enum + (RsvpEroSubobject_HopType_Enum)(0), // 65: otg.RsvpEroSubobject.HopType.Enum + (FlowTxRx_Choice_Enum)(0), // 66: otg.FlowTxRx.Choice.Enum + (FlowRouter_Mode_Enum)(0), // 67: otg.FlowRouter.Mode.Enum + (FlowHeader_Choice_Enum)(0), // 68: otg.FlowHeader.Choice.Enum + (FlowIpv4Priority_Choice_Enum)(0), // 69: otg.FlowIpv4Priority.Choice.Enum + (FlowIcmp_Choice_Enum)(0), // 70: otg.FlowIcmp.Choice.Enum + (FlowIcmpv6_Choice_Enum)(0), // 71: otg.FlowIcmpv6.Choice.Enum + (FlowRSVPFlag_Choice_Enum)(0), // 72: otg.FlowRSVPFlag.Choice.Enum + (FlowRSVPLength_Choice_Enum)(0), // 73: otg.FlowRSVPLength.Choice.Enum + (FlowRSVPMessage_Choice_Enum)(0), // 74: otg.FlowRSVPMessage.Choice.Enum + (FlowRSVPPathObjectLength_Choice_Enum)(0), // 75: otg.FlowRSVPPathObjectLength.Choice.Enum + (FlowRSVPPathObjectsClass_Choice_Enum)(0), // 76: otg.FlowRSVPPathObjectsClass.Choice.Enum + (FlowRSVPPathObjectsSessionCType_Choice_Enum)(0), // 77: otg.FlowRSVPPathObjectsSessionCType.Choice.Enum + (FlowRSVPPathObjectsRsvpHopCType_Choice_Enum)(0), // 78: otg.FlowRSVPPathObjectsRsvpHopCType.Choice.Enum + (FlowRSVPPathObjectsTimeValuesCType_Choice_Enum)(0), // 79: otg.FlowRSVPPathObjectsTimeValuesCType.Choice.Enum + (FlowRSVPPathObjectsClassExplicitRouteCType_Choice_Enum)(0), // 80: otg.FlowRSVPPathObjectsClassExplicitRouteCType.Choice.Enum + (FlowRSVPType1ExplicitRouteSubobjectsType_Choice_Enum)(0), // 81: otg.FlowRSVPType1ExplicitRouteSubobjectsType.Choice.Enum + (FlowRSVPExplicitRouteLength_Choice_Enum)(0), // 82: otg.FlowRSVPExplicitRouteLength.Choice.Enum + (FlowRSVPPathObjectsLabelRequestCType_Choice_Enum)(0), // 83: otg.FlowRSVPPathObjectsLabelRequestCType.Choice.Enum + (FlowRSVPPathObjectsSessionAttributeCType_Choice_Enum)(0), // 84: otg.FlowRSVPPathObjectsSessionAttributeCType.Choice.Enum + (FlowRSVPLspTunnelFlag_Choice_Enum)(0), // 85: otg.FlowRSVPLspTunnelFlag.Choice.Enum + (FlowRSVPPathObjectsSenderTemplateCType_Choice_Enum)(0), // 86: otg.FlowRSVPPathObjectsSenderTemplateCType.Choice.Enum + (FlowRSVPPathObjectsSenderTspecCType_Choice_Enum)(0), // 87: otg.FlowRSVPPathObjectsSenderTspecCType.Choice.Enum + (FlowRSVPPathObjectsRecordRouteCType_Choice_Enum)(0), // 88: otg.FlowRSVPPathObjectsRecordRouteCType.Choice.Enum + (FlowRSVPPathObjectsRecordRouteSubObjectType_Choice_Enum)(0), // 89: otg.FlowRSVPPathObjectsRecordRouteSubObjectType.Choice.Enum + (FlowRSVPRecordRouteIPv4Flag_Choice_Enum)(0), // 90: otg.FlowRSVPRecordRouteIPv4Flag.Choice.Enum + (FlowRSVPRouteRecordLength_Choice_Enum)(0), // 91: otg.FlowRSVPRouteRecordLength.Choice.Enum + (FlowRSVPObjectOptionsCustomLength_Choice_Enum)(0), // 92: otg.FlowRSVPObjectOptionsCustomLength.Choice.Enum + (FlowSize_Choice_Enum)(0), // 93: otg.FlowSize.Choice.Enum + (FlowSizeWeightPairs_Choice_Enum)(0), // 94: otg.FlowSizeWeightPairs.Choice.Enum + (FlowSizeWeightPairs_Predefined_Enum)(0), // 95: otg.FlowSizeWeightPairs.Predefined.Enum + (FlowRate_Choice_Enum)(0), // 96: otg.FlowRate.Choice.Enum + (FlowDuration_Choice_Enum)(0), // 97: otg.FlowDuration.Choice.Enum + (FlowDelay_Choice_Enum)(0), // 98: otg.FlowDelay.Choice.Enum + (FlowDurationInterBurstGap_Choice_Enum)(0), // 99: otg.FlowDurationInterBurstGap.Choice.Enum + (FlowLatencyMetrics_Mode_Enum)(0), // 100: otg.FlowLatencyMetrics.Mode.Enum + (FlowRxTxRatio_Choice_Enum)(0), // 101: otg.FlowRxTxRatio.Choice.Enum + (EventRequest_Type_Enum)(0), // 102: otg.EventRequest.Type.Enum + (LldpConnection_Choice_Enum)(0), // 103: otg.LldpConnection.Choice.Enum + (LldpChassisId_Choice_Enum)(0), // 104: otg.LldpChassisId.Choice.Enum + (LldpPortId_Choice_Enum)(0), // 105: otg.LldpPortId.Choice.Enum + (LldpChassisMacSubType_Choice_Enum)(0), // 106: otg.LldpChassisMacSubType.Choice.Enum + (LldpPortInterfaceNameSubType_Choice_Enum)(0), // 107: otg.LldpPortInterfaceNameSubType.Choice.Enum + (LldpSystemName_Choice_Enum)(0), // 108: otg.LldpSystemName.Choice.Enum + (Error_Kind_Enum)(0), // 109: otg.Error.Kind.Enum + (ConfigUpdate_Choice_Enum)(0), // 110: otg.ConfigUpdate.Choice.Enum + (FlowsUpdate_PropertyNames_Enum)(0), // 111: otg.FlowsUpdate.PropertyNames.Enum + (ControlState_Choice_Enum)(0), // 112: otg.ControlState.Choice.Enum + (StatePort_Choice_Enum)(0), // 113: otg.StatePort.Choice.Enum + (StateTraffic_Choice_Enum)(0), // 114: otg.StateTraffic.Choice.Enum + (StateProtocol_Choice_Enum)(0), // 115: otg.StateProtocol.Choice.Enum + (StatePortLink_State_Enum)(0), // 116: otg.StatePortLink.State.Enum + (StatePortCapture_State_Enum)(0), // 117: otg.StatePortCapture.State.Enum + (StateTrafficFlowTransmit_State_Enum)(0), // 118: otg.StateTrafficFlowTransmit.State.Enum + (StateProtocolAll_State_Enum)(0), // 119: otg.StateProtocolAll.State.Enum + (StateProtocolRoute_State_Enum)(0), // 120: otg.StateProtocolRoute.State.Enum + (StateProtocolLacp_Choice_Enum)(0), // 121: otg.StateProtocolLacp.Choice.Enum + (StateProtocolLacpAdmin_State_Enum)(0), // 122: otg.StateProtocolLacpAdmin.State.Enum + (StateProtocolLacpMemberPorts_State_Enum)(0), // 123: otg.StateProtocolLacpMemberPorts.State.Enum + (StateProtocolBgp_Choice_Enum)(0), // 124: otg.StateProtocolBgp.Choice.Enum + (StateProtocolBgpPeers_State_Enum)(0), // 125: otg.StateProtocolBgpPeers.State.Enum + (StateProtocolIsis_Choice_Enum)(0), // 126: otg.StateProtocolIsis.Choice.Enum + (StateProtocolIsisRouters_State_Enum)(0), // 127: otg.StateProtocolIsisRouters.State.Enum + (ControlAction_Choice_Enum)(0), // 128: otg.ControlAction.Choice.Enum + (ActionResponse_Choice_Enum)(0), // 129: otg.ActionResponse.Choice.Enum + (ActionProtocol_Choice_Enum)(0), // 130: otg.ActionProtocol.Choice.Enum + (ActionResponseProtocol_Choice_Enum)(0), // 131: otg.ActionResponseProtocol.Choice.Enum + (ActionProtocolIpv4_Choice_Enum)(0), // 132: otg.ActionProtocolIpv4.Choice.Enum + (ActionResponseProtocolIpv4_Choice_Enum)(0), // 133: otg.ActionResponseProtocolIpv4.Choice.Enum + (ActionResponseProtocolIpv4PingResponse_Result_Enum)(0), // 134: otg.ActionResponseProtocolIpv4PingResponse.Result.Enum + (ActionProtocolIpv6_Choice_Enum)(0), // 135: otg.ActionProtocolIpv6.Choice.Enum + (ActionResponseProtocolIpv6_Choice_Enum)(0), // 136: otg.ActionResponseProtocolIpv6.Choice.Enum + (ActionResponseProtocolIpv6PingResponse_Result_Enum)(0), // 137: otg.ActionResponseProtocolIpv6PingResponse.Result.Enum + (ActionProtocolBgp_Choice_Enum)(0), // 138: otg.ActionProtocolBgp.Choice.Enum + (ActionProtocolBgpNotification_Choice_Enum)(0), // 139: otg.ActionProtocolBgpNotification.Choice.Enum + (MetricsRequest_Choice_Enum)(0), // 140: otg.MetricsRequest.Choice.Enum + (MetricsResponse_Choice_Enum)(0), // 141: otg.MetricsResponse.Choice.Enum + (PortMetricsRequest_ColumnNames_Enum)(0), // 142: otg.PortMetricsRequest.ColumnNames.Enum + (PortMetric_Link_Enum)(0), // 143: otg.PortMetric.Link.Enum + (PortMetric_Capture_Enum)(0), // 144: otg.PortMetric.Capture.Enum + (PortMetric_Transmit_Enum)(0), // 145: otg.PortMetric.Transmit.Enum + (FlowMetricsRequest_MetricNames_Enum)(0), // 146: otg.FlowMetricsRequest.MetricNames.Enum + (FlowTaggedMetricsFilter_MetricNames_Enum)(0), // 147: otg.FlowTaggedMetricsFilter.MetricNames.Enum + (FlowMetric_Transmit_Enum)(0), // 148: otg.FlowMetric.Transmit.Enum + (FlowMetricTagValue_Choice_Enum)(0), // 149: otg.FlowMetricTagValue.Choice.Enum + (Bgpv4MetricsRequest_ColumnNames_Enum)(0), // 150: otg.Bgpv4MetricsRequest.ColumnNames.Enum + (Bgpv4Metric_SessionState_Enum)(0), // 151: otg.Bgpv4Metric.SessionState.Enum + (Bgpv4Metric_FsmState_Enum)(0), // 152: otg.Bgpv4Metric.FsmState.Enum + (Bgpv6MetricsRequest_ColumnNames_Enum)(0), // 153: otg.Bgpv6MetricsRequest.ColumnNames.Enum + (Bgpv6Metric_SessionState_Enum)(0), // 154: otg.Bgpv6Metric.SessionState.Enum + (Bgpv6Metric_FsmState_Enum)(0), // 155: otg.Bgpv6Metric.FsmState.Enum + (IsisMetricsRequest_ColumnNames_Enum)(0), // 156: otg.IsisMetricsRequest.ColumnNames.Enum + (LagMetricsRequest_ColumnNames_Enum)(0), // 157: otg.LagMetricsRequest.ColumnNames.Enum + (LagMetric_OperStatus_Enum)(0), // 158: otg.LagMetric.OperStatus.Enum + (LacpMetricsRequest_ColumnNames_Enum)(0), // 159: otg.LacpMetricsRequest.ColumnNames.Enum + (LacpMetric_Activity_Enum)(0), // 160: otg.LacpMetric.Activity.Enum + (LacpMetric_Timeout_Enum)(0), // 161: otg.LacpMetric.Timeout.Enum + (LacpMetric_Synchronization_Enum)(0), // 162: otg.LacpMetric.Synchronization.Enum + (LldpMetricsRequest_ColumnNames_Enum)(0), // 163: otg.LldpMetricsRequest.ColumnNames.Enum + (RsvpMetricsRequest_ColumnNames_Enum)(0), // 164: otg.RsvpMetricsRequest.ColumnNames.Enum + (StatesRequest_Choice_Enum)(0), // 165: otg.StatesRequest.Choice.Enum + (StatesResponse_Choice_Enum)(0), // 166: otg.StatesResponse.Choice.Enum + (BgpPrefixStateRequest_PrefixFilters_Enum)(0), // 167: otg.BgpPrefixStateRequest.PrefixFilters.Enum + (BgpPrefixIpv4UnicastFilter_Origin_Enum)(0), // 168: otg.BgpPrefixIpv4UnicastFilter.Origin.Enum + (BgpPrefixIpv6UnicastFilter_Origin_Enum)(0), // 169: otg.BgpPrefixIpv6UnicastFilter.Origin.Enum + (BgpPrefixIpv4UnicastState_Origin_Enum)(0), // 170: otg.BgpPrefixIpv4UnicastState.Origin.Enum + (BgpPrefixIpv6UnicastState_Origin_Enum)(0), // 171: otg.BgpPrefixIpv6UnicastState.Origin.Enum + (ResultBgpCommunity_Type_Enum)(0), // 172: otg.ResultBgpCommunity.Type.Enum + (ResultBgpAsPathSegment_Type_Enum)(0), // 173: otg.ResultBgpAsPathSegment.Type.Enum + (IsisLspState_PduType_Enum)(0), // 174: otg.IsisLspState.PduType.Enum + (IsisLspV4Prefix_RedistributionType_Enum)(0), // 175: otg.IsisLspV4Prefix.RedistributionType.Enum + (IsisLspV4Prefix_OriginType_Enum)(0), // 176: otg.IsisLspV4Prefix.OriginType.Enum + (IsisLspExtendedV4Prefix_RedistributionType_Enum)(0), // 177: otg.IsisLspExtendedV4Prefix.RedistributionType.Enum + (IsisLspV6Prefix_RedistributionType_Enum)(0), // 178: otg.IsisLspV6Prefix.RedistributionType.Enum + (IsisLspV6Prefix_OriginType_Enum)(0), // 179: otg.IsisLspV6Prefix.OriginType.Enum + (LldpNeighborsState_ChassisIdType_Enum)(0), // 180: otg.LldpNeighborsState.ChassisIdType.Enum + (LldpNeighborsState_PortIdType_Enum)(0), // 181: otg.LldpNeighborsState.PortIdType.Enum + (LldpCapabilityState_CapabilityName_Enum)(0), // 182: otg.LldpCapabilityState.CapabilityName.Enum + (RsvpLspState_SessionStatus_Enum)(0), // 183: otg.RsvpLspState.SessionStatus.Enum + (RsvpLspState_LastFlapReason_Enum)(0), // 184: otg.RsvpLspState.LastFlapReason.Enum + (RsvpLspIpv4Ero_Type_Enum)(0), // 185: otg.RsvpLspIpv4Ero.Type.Enum + (PatternFlowEthernetDst_Choice_Enum)(0), // 186: otg.PatternFlowEthernetDst.Choice.Enum + (PatternFlowEthernetSrc_Choice_Enum)(0), // 187: otg.PatternFlowEthernetSrc.Choice.Enum + (PatternFlowEthernetEtherType_Choice_Enum)(0), // 188: otg.PatternFlowEthernetEtherType.Choice.Enum + (PatternFlowEthernetPfcQueue_Choice_Enum)(0), // 189: otg.PatternFlowEthernetPfcQueue.Choice.Enum + (PatternFlowVlanPriority_Choice_Enum)(0), // 190: otg.PatternFlowVlanPriority.Choice.Enum + (PatternFlowVlanCfi_Choice_Enum)(0), // 191: otg.PatternFlowVlanCfi.Choice.Enum + (PatternFlowVlanId_Choice_Enum)(0), // 192: otg.PatternFlowVlanId.Choice.Enum + (PatternFlowVlanTpid_Choice_Enum)(0), // 193: otg.PatternFlowVlanTpid.Choice.Enum + (PatternFlowVxlanFlags_Choice_Enum)(0), // 194: otg.PatternFlowVxlanFlags.Choice.Enum + (PatternFlowVxlanReserved0_Choice_Enum)(0), // 195: otg.PatternFlowVxlanReserved0.Choice.Enum + (PatternFlowVxlanVni_Choice_Enum)(0), // 196: otg.PatternFlowVxlanVni.Choice.Enum + (PatternFlowVxlanReserved1_Choice_Enum)(0), // 197: otg.PatternFlowVxlanReserved1.Choice.Enum + (PatternFlowIpv4Version_Choice_Enum)(0), // 198: otg.PatternFlowIpv4Version.Choice.Enum + (PatternFlowIpv4HeaderLength_Choice_Enum)(0), // 199: otg.PatternFlowIpv4HeaderLength.Choice.Enum + (PatternFlowIpv4TotalLength_Choice_Enum)(0), // 200: otg.PatternFlowIpv4TotalLength.Choice.Enum + (PatternFlowIpv4Identification_Choice_Enum)(0), // 201: otg.PatternFlowIpv4Identification.Choice.Enum + (PatternFlowIpv4Reserved_Choice_Enum)(0), // 202: otg.PatternFlowIpv4Reserved.Choice.Enum + (PatternFlowIpv4DontFragment_Choice_Enum)(0), // 203: otg.PatternFlowIpv4DontFragment.Choice.Enum + (PatternFlowIpv4MoreFragments_Choice_Enum)(0), // 204: otg.PatternFlowIpv4MoreFragments.Choice.Enum + (PatternFlowIpv4FragmentOffset_Choice_Enum)(0), // 205: otg.PatternFlowIpv4FragmentOffset.Choice.Enum + (PatternFlowIpv4TimeToLive_Choice_Enum)(0), // 206: otg.PatternFlowIpv4TimeToLive.Choice.Enum + (PatternFlowIpv4Protocol_Choice_Enum)(0), // 207: otg.PatternFlowIpv4Protocol.Choice.Enum + (PatternFlowIpv4HeaderChecksum_Choice_Enum)(0), // 208: otg.PatternFlowIpv4HeaderChecksum.Choice.Enum + (PatternFlowIpv4HeaderChecksum_Generated_Enum)(0), // 209: otg.PatternFlowIpv4HeaderChecksum.Generated.Enum + (PatternFlowIpv4Src_Choice_Enum)(0), // 210: otg.PatternFlowIpv4Src.Choice.Enum + (PatternFlowIpv4Dst_Choice_Enum)(0), // 211: otg.PatternFlowIpv4Dst.Choice.Enum + (PatternFlowIpv4PriorityRaw_Choice_Enum)(0), // 212: otg.PatternFlowIpv4PriorityRaw.Choice.Enum + (PatternFlowIpv4DscpPhb_Choice_Enum)(0), // 213: otg.PatternFlowIpv4DscpPhb.Choice.Enum + (PatternFlowIpv4DscpEcn_Choice_Enum)(0), // 214: otg.PatternFlowIpv4DscpEcn.Choice.Enum + (PatternFlowIpv4TosPrecedence_Choice_Enum)(0), // 215: otg.PatternFlowIpv4TosPrecedence.Choice.Enum + (PatternFlowIpv4TosDelay_Choice_Enum)(0), // 216: otg.PatternFlowIpv4TosDelay.Choice.Enum + (PatternFlowIpv4TosThroughput_Choice_Enum)(0), // 217: otg.PatternFlowIpv4TosThroughput.Choice.Enum + (PatternFlowIpv4TosReliability_Choice_Enum)(0), // 218: otg.PatternFlowIpv4TosReliability.Choice.Enum + (PatternFlowIpv4TosMonetary_Choice_Enum)(0), // 219: otg.PatternFlowIpv4TosMonetary.Choice.Enum + (PatternFlowIpv4TosUnused_Choice_Enum)(0), // 220: otg.PatternFlowIpv4TosUnused.Choice.Enum + (PatternFlowIpv6Version_Choice_Enum)(0), // 221: otg.PatternFlowIpv6Version.Choice.Enum + (PatternFlowIpv6TrafficClass_Choice_Enum)(0), // 222: otg.PatternFlowIpv6TrafficClass.Choice.Enum + (PatternFlowIpv6FlowLabel_Choice_Enum)(0), // 223: otg.PatternFlowIpv6FlowLabel.Choice.Enum + (PatternFlowIpv6PayloadLength_Choice_Enum)(0), // 224: otg.PatternFlowIpv6PayloadLength.Choice.Enum + (PatternFlowIpv6NextHeader_Choice_Enum)(0), // 225: otg.PatternFlowIpv6NextHeader.Choice.Enum + (PatternFlowIpv6HopLimit_Choice_Enum)(0), // 226: otg.PatternFlowIpv6HopLimit.Choice.Enum + (PatternFlowIpv6Src_Choice_Enum)(0), // 227: otg.PatternFlowIpv6Src.Choice.Enum + (PatternFlowIpv6Dst_Choice_Enum)(0), // 228: otg.PatternFlowIpv6Dst.Choice.Enum + (PatternFlowPfcPauseDst_Choice_Enum)(0), // 229: otg.PatternFlowPfcPauseDst.Choice.Enum + (PatternFlowPfcPauseSrc_Choice_Enum)(0), // 230: otg.PatternFlowPfcPauseSrc.Choice.Enum + (PatternFlowPfcPauseEtherType_Choice_Enum)(0), // 231: otg.PatternFlowPfcPauseEtherType.Choice.Enum + (PatternFlowPfcPauseControlOpCode_Choice_Enum)(0), // 232: otg.PatternFlowPfcPauseControlOpCode.Choice.Enum + (PatternFlowPfcPauseClassEnableVector_Choice_Enum)(0), // 233: otg.PatternFlowPfcPauseClassEnableVector.Choice.Enum + (PatternFlowPfcPausePauseClass0_Choice_Enum)(0), // 234: otg.PatternFlowPfcPausePauseClass0.Choice.Enum + (PatternFlowPfcPausePauseClass1_Choice_Enum)(0), // 235: otg.PatternFlowPfcPausePauseClass1.Choice.Enum + (PatternFlowPfcPausePauseClass2_Choice_Enum)(0), // 236: otg.PatternFlowPfcPausePauseClass2.Choice.Enum + (PatternFlowPfcPausePauseClass3_Choice_Enum)(0), // 237: otg.PatternFlowPfcPausePauseClass3.Choice.Enum + (PatternFlowPfcPausePauseClass4_Choice_Enum)(0), // 238: otg.PatternFlowPfcPausePauseClass4.Choice.Enum + (PatternFlowPfcPausePauseClass5_Choice_Enum)(0), // 239: otg.PatternFlowPfcPausePauseClass5.Choice.Enum + (PatternFlowPfcPausePauseClass6_Choice_Enum)(0), // 240: otg.PatternFlowPfcPausePauseClass6.Choice.Enum + (PatternFlowPfcPausePauseClass7_Choice_Enum)(0), // 241: otg.PatternFlowPfcPausePauseClass7.Choice.Enum + (PatternFlowEthernetPauseDst_Choice_Enum)(0), // 242: otg.PatternFlowEthernetPauseDst.Choice.Enum + (PatternFlowEthernetPauseSrc_Choice_Enum)(0), // 243: otg.PatternFlowEthernetPauseSrc.Choice.Enum + (PatternFlowEthernetPauseEtherType_Choice_Enum)(0), // 244: otg.PatternFlowEthernetPauseEtherType.Choice.Enum + (PatternFlowEthernetPauseControlOpCode_Choice_Enum)(0), // 245: otg.PatternFlowEthernetPauseControlOpCode.Choice.Enum + (PatternFlowEthernetPauseTime_Choice_Enum)(0), // 246: otg.PatternFlowEthernetPauseTime.Choice.Enum + (PatternFlowTcpSrcPort_Choice_Enum)(0), // 247: otg.PatternFlowTcpSrcPort.Choice.Enum + (PatternFlowTcpDstPort_Choice_Enum)(0), // 248: otg.PatternFlowTcpDstPort.Choice.Enum + (PatternFlowTcpSeqNum_Choice_Enum)(0), // 249: otg.PatternFlowTcpSeqNum.Choice.Enum + (PatternFlowTcpAckNum_Choice_Enum)(0), // 250: otg.PatternFlowTcpAckNum.Choice.Enum + (PatternFlowTcpDataOffset_Choice_Enum)(0), // 251: otg.PatternFlowTcpDataOffset.Choice.Enum + (PatternFlowTcpEcnNs_Choice_Enum)(0), // 252: otg.PatternFlowTcpEcnNs.Choice.Enum + (PatternFlowTcpEcnCwr_Choice_Enum)(0), // 253: otg.PatternFlowTcpEcnCwr.Choice.Enum + (PatternFlowTcpEcnEcho_Choice_Enum)(0), // 254: otg.PatternFlowTcpEcnEcho.Choice.Enum + (PatternFlowTcpCtlUrg_Choice_Enum)(0), // 255: otg.PatternFlowTcpCtlUrg.Choice.Enum + (PatternFlowTcpCtlAck_Choice_Enum)(0), // 256: otg.PatternFlowTcpCtlAck.Choice.Enum + (PatternFlowTcpCtlPsh_Choice_Enum)(0), // 257: otg.PatternFlowTcpCtlPsh.Choice.Enum + (PatternFlowTcpCtlRst_Choice_Enum)(0), // 258: otg.PatternFlowTcpCtlRst.Choice.Enum + (PatternFlowTcpCtlSyn_Choice_Enum)(0), // 259: otg.PatternFlowTcpCtlSyn.Choice.Enum + (PatternFlowTcpCtlFin_Choice_Enum)(0), // 260: otg.PatternFlowTcpCtlFin.Choice.Enum + (PatternFlowTcpWindow_Choice_Enum)(0), // 261: otg.PatternFlowTcpWindow.Choice.Enum + (PatternFlowUdpSrcPort_Choice_Enum)(0), // 262: otg.PatternFlowUdpSrcPort.Choice.Enum + (PatternFlowUdpDstPort_Choice_Enum)(0), // 263: otg.PatternFlowUdpDstPort.Choice.Enum + (PatternFlowUdpLength_Choice_Enum)(0), // 264: otg.PatternFlowUdpLength.Choice.Enum + (PatternFlowUdpChecksum_Choice_Enum)(0), // 265: otg.PatternFlowUdpChecksum.Choice.Enum + (PatternFlowUdpChecksum_Generated_Enum)(0), // 266: otg.PatternFlowUdpChecksum.Generated.Enum + (PatternFlowGreChecksumPresent_Choice_Enum)(0), // 267: otg.PatternFlowGreChecksumPresent.Choice.Enum + (PatternFlowGreReserved0_Choice_Enum)(0), // 268: otg.PatternFlowGreReserved0.Choice.Enum + (PatternFlowGreVersion_Choice_Enum)(0), // 269: otg.PatternFlowGreVersion.Choice.Enum + (PatternFlowGreProtocol_Choice_Enum)(0), // 270: otg.PatternFlowGreProtocol.Choice.Enum + (PatternFlowGreChecksum_Choice_Enum)(0), // 271: otg.PatternFlowGreChecksum.Choice.Enum + (PatternFlowGreChecksum_Generated_Enum)(0), // 272: otg.PatternFlowGreChecksum.Generated.Enum + (PatternFlowGreReserved1_Choice_Enum)(0), // 273: otg.PatternFlowGreReserved1.Choice.Enum + (PatternFlowGtpv1Version_Choice_Enum)(0), // 274: otg.PatternFlowGtpv1Version.Choice.Enum + (PatternFlowGtpv1ProtocolType_Choice_Enum)(0), // 275: otg.PatternFlowGtpv1ProtocolType.Choice.Enum + (PatternFlowGtpv1Reserved_Choice_Enum)(0), // 276: otg.PatternFlowGtpv1Reserved.Choice.Enum + (PatternFlowGtpv1EFlag_Choice_Enum)(0), // 277: otg.PatternFlowGtpv1EFlag.Choice.Enum + (PatternFlowGtpv1SFlag_Choice_Enum)(0), // 278: otg.PatternFlowGtpv1SFlag.Choice.Enum + (PatternFlowGtpv1PnFlag_Choice_Enum)(0), // 279: otg.PatternFlowGtpv1PnFlag.Choice.Enum + (PatternFlowGtpv1MessageType_Choice_Enum)(0), // 280: otg.PatternFlowGtpv1MessageType.Choice.Enum + (PatternFlowGtpv1MessageLength_Choice_Enum)(0), // 281: otg.PatternFlowGtpv1MessageLength.Choice.Enum + (PatternFlowGtpv1Teid_Choice_Enum)(0), // 282: otg.PatternFlowGtpv1Teid.Choice.Enum + (PatternFlowGtpv1SquenceNumber_Choice_Enum)(0), // 283: otg.PatternFlowGtpv1SquenceNumber.Choice.Enum + (PatternFlowGtpv1NPduNumber_Choice_Enum)(0), // 284: otg.PatternFlowGtpv1NPduNumber.Choice.Enum + (PatternFlowGtpv1NextExtensionHeaderType_Choice_Enum)(0), // 285: otg.PatternFlowGtpv1NextExtensionHeaderType.Choice.Enum + (PatternFlowGtpExtensionExtensionLength_Choice_Enum)(0), // 286: otg.PatternFlowGtpExtensionExtensionLength.Choice.Enum + (PatternFlowGtpExtensionContents_Choice_Enum)(0), // 287: otg.PatternFlowGtpExtensionContents.Choice.Enum + (PatternFlowGtpExtensionNextExtensionHeader_Choice_Enum)(0), // 288: otg.PatternFlowGtpExtensionNextExtensionHeader.Choice.Enum + (PatternFlowGtpv2Version_Choice_Enum)(0), // 289: otg.PatternFlowGtpv2Version.Choice.Enum + (PatternFlowGtpv2PiggybackingFlag_Choice_Enum)(0), // 290: otg.PatternFlowGtpv2PiggybackingFlag.Choice.Enum + (PatternFlowGtpv2TeidFlag_Choice_Enum)(0), // 291: otg.PatternFlowGtpv2TeidFlag.Choice.Enum + (PatternFlowGtpv2Spare1_Choice_Enum)(0), // 292: otg.PatternFlowGtpv2Spare1.Choice.Enum + (PatternFlowGtpv2MessageType_Choice_Enum)(0), // 293: otg.PatternFlowGtpv2MessageType.Choice.Enum + (PatternFlowGtpv2MessageLength_Choice_Enum)(0), // 294: otg.PatternFlowGtpv2MessageLength.Choice.Enum + (PatternFlowGtpv2Teid_Choice_Enum)(0), // 295: otg.PatternFlowGtpv2Teid.Choice.Enum + (PatternFlowGtpv2SequenceNumber_Choice_Enum)(0), // 296: otg.PatternFlowGtpv2SequenceNumber.Choice.Enum + (PatternFlowGtpv2Spare2_Choice_Enum)(0), // 297: otg.PatternFlowGtpv2Spare2.Choice.Enum + (PatternFlowArpHardwareType_Choice_Enum)(0), // 298: otg.PatternFlowArpHardwareType.Choice.Enum + (PatternFlowArpProtocolType_Choice_Enum)(0), // 299: otg.PatternFlowArpProtocolType.Choice.Enum + (PatternFlowArpHardwareLength_Choice_Enum)(0), // 300: otg.PatternFlowArpHardwareLength.Choice.Enum + (PatternFlowArpProtocolLength_Choice_Enum)(0), // 301: otg.PatternFlowArpProtocolLength.Choice.Enum + (PatternFlowArpOperation_Choice_Enum)(0), // 302: otg.PatternFlowArpOperation.Choice.Enum + (PatternFlowArpSenderHardwareAddr_Choice_Enum)(0), // 303: otg.PatternFlowArpSenderHardwareAddr.Choice.Enum + (PatternFlowArpSenderProtocolAddr_Choice_Enum)(0), // 304: otg.PatternFlowArpSenderProtocolAddr.Choice.Enum + (PatternFlowArpTargetHardwareAddr_Choice_Enum)(0), // 305: otg.PatternFlowArpTargetHardwareAddr.Choice.Enum + (PatternFlowArpTargetProtocolAddr_Choice_Enum)(0), // 306: otg.PatternFlowArpTargetProtocolAddr.Choice.Enum + (PatternFlowIcmpEchoType_Choice_Enum)(0), // 307: otg.PatternFlowIcmpEchoType.Choice.Enum + (PatternFlowIcmpEchoCode_Choice_Enum)(0), // 308: otg.PatternFlowIcmpEchoCode.Choice.Enum + (PatternFlowIcmpEchoChecksum_Choice_Enum)(0), // 309: otg.PatternFlowIcmpEchoChecksum.Choice.Enum + (PatternFlowIcmpEchoChecksum_Generated_Enum)(0), // 310: otg.PatternFlowIcmpEchoChecksum.Generated.Enum + (PatternFlowIcmpEchoIdentifier_Choice_Enum)(0), // 311: otg.PatternFlowIcmpEchoIdentifier.Choice.Enum + (PatternFlowIcmpEchoSequenceNumber_Choice_Enum)(0), // 312: otg.PatternFlowIcmpEchoSequenceNumber.Choice.Enum + (PatternFlowIcmpCommonChecksum_Choice_Enum)(0), // 313: otg.PatternFlowIcmpCommonChecksum.Choice.Enum + (PatternFlowIcmpCommonChecksum_Generated_Enum)(0), // 314: otg.PatternFlowIcmpCommonChecksum.Generated.Enum + (PatternFlowIcmpNextFieldsIdentifier_Choice_Enum)(0), // 315: otg.PatternFlowIcmpNextFieldsIdentifier.Choice.Enum + (PatternFlowIcmpNextFieldsSequenceNumber_Choice_Enum)(0), // 316: otg.PatternFlowIcmpNextFieldsSequenceNumber.Choice.Enum + (PatternFlowIcmpv6EchoType_Choice_Enum)(0), // 317: otg.PatternFlowIcmpv6EchoType.Choice.Enum + (PatternFlowIcmpv6EchoCode_Choice_Enum)(0), // 318: otg.PatternFlowIcmpv6EchoCode.Choice.Enum + (PatternFlowIcmpv6EchoIdentifier_Choice_Enum)(0), // 319: otg.PatternFlowIcmpv6EchoIdentifier.Choice.Enum + (PatternFlowIcmpv6EchoSequenceNumber_Choice_Enum)(0), // 320: otg.PatternFlowIcmpv6EchoSequenceNumber.Choice.Enum + (PatternFlowIcmpv6EchoChecksum_Choice_Enum)(0), // 321: otg.PatternFlowIcmpv6EchoChecksum.Choice.Enum + (PatternFlowIcmpv6EchoChecksum_Generated_Enum)(0), // 322: otg.PatternFlowIcmpv6EchoChecksum.Generated.Enum + (PatternFlowIcmpv6CommonChecksum_Choice_Enum)(0), // 323: otg.PatternFlowIcmpv6CommonChecksum.Choice.Enum + (PatternFlowIcmpv6CommonChecksum_Generated_Enum)(0), // 324: otg.PatternFlowIcmpv6CommonChecksum.Generated.Enum + (PatternFlowPppAddress_Choice_Enum)(0), // 325: otg.PatternFlowPppAddress.Choice.Enum + (PatternFlowPppControl_Choice_Enum)(0), // 326: otg.PatternFlowPppControl.Choice.Enum + (PatternFlowPppProtocolType_Choice_Enum)(0), // 327: otg.PatternFlowPppProtocolType.Choice.Enum + (PatternFlowIgmpv1Version_Choice_Enum)(0), // 328: otg.PatternFlowIgmpv1Version.Choice.Enum + (PatternFlowIgmpv1Type_Choice_Enum)(0), // 329: otg.PatternFlowIgmpv1Type.Choice.Enum + (PatternFlowIgmpv1Unused_Choice_Enum)(0), // 330: otg.PatternFlowIgmpv1Unused.Choice.Enum + (PatternFlowIgmpv1Checksum_Choice_Enum)(0), // 331: otg.PatternFlowIgmpv1Checksum.Choice.Enum + (PatternFlowIgmpv1Checksum_Generated_Enum)(0), // 332: otg.PatternFlowIgmpv1Checksum.Generated.Enum + (PatternFlowIgmpv1GroupAddress_Choice_Enum)(0), // 333: otg.PatternFlowIgmpv1GroupAddress.Choice.Enum + (PatternFlowMplsLabel_Choice_Enum)(0), // 334: otg.PatternFlowMplsLabel.Choice.Enum + (PatternFlowMplsTrafficClass_Choice_Enum)(0), // 335: otg.PatternFlowMplsTrafficClass.Choice.Enum + (PatternFlowMplsBottomOfStack_Choice_Enum)(0), // 336: otg.PatternFlowMplsBottomOfStack.Choice.Enum + (PatternFlowMplsTimeToLive_Choice_Enum)(0), // 337: otg.PatternFlowMplsTimeToLive.Choice.Enum + (PatternFlowRsvpVersion_Choice_Enum)(0), // 338: otg.PatternFlowRsvpVersion.Choice.Enum + (PatternFlowRsvpRsvpChecksum_Choice_Enum)(0), // 339: otg.PatternFlowRsvpRsvpChecksum.Choice.Enum + (PatternFlowRsvpRsvpChecksum_Generated_Enum)(0), // 340: otg.PatternFlowRsvpRsvpChecksum.Generated.Enum + (PatternFlowRsvpTimeToLive_Choice_Enum)(0), // 341: otg.PatternFlowRsvpTimeToLive.Choice.Enum + (PatternFlowRsvpReserved_Choice_Enum)(0), // 342: otg.PatternFlowRsvpReserved.Choice.Enum + (PatternFlowRSVPPathSessionLspTunnelIpv4Ipv4TunnelEndPointAddress_Choice_Enum)(0), // 343: otg.PatternFlowRSVPPathSessionLspTunnelIpv4Ipv4TunnelEndPointAddress.Choice.Enum + (PatternFlowRSVPPathSessionLspTunnelIpv4Reserved_Choice_Enum)(0), // 344: otg.PatternFlowRSVPPathSessionLspTunnelIpv4Reserved.Choice.Enum + (PatternFlowRSVPPathSessionLspTunnelIpv4TunnelId_Choice_Enum)(0), // 345: otg.PatternFlowRSVPPathSessionLspTunnelIpv4TunnelId.Choice.Enum + (PatternFlowRSVPPathSessionLspTunnelIpv4ExtendedTunnelId_Choice_Enum)(0), // 346: otg.PatternFlowRSVPPathSessionLspTunnelIpv4ExtendedTunnelId.Choice.Enum + (PatternFlowRSVPPathRsvpHopIpv4Ipv4NextPreviousHopAddress_Choice_Enum)(0), // 347: otg.PatternFlowRSVPPathRsvpHopIpv4Ipv4NextPreviousHopAddress.Choice.Enum + (PatternFlowRSVPPathRsvpHopIpv4LogicalInterfaceHandle_Choice_Enum)(0), // 348: otg.PatternFlowRSVPPathRsvpHopIpv4LogicalInterfaceHandle.Choice.Enum + (PatternFlowRSVPPathTimeValuesType1RefreshPeriodR_Choice_Enum)(0), // 349: otg.PatternFlowRSVPPathTimeValuesType1RefreshPeriodR.Choice.Enum + (PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixLBit_Choice_Enum)(0), // 350: otg.PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixLBit.Choice.Enum + (PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixIpv4Address_Choice_Enum)(0), // 351: otg.PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixIpv4Address.Choice.Enum + (PatternFlowRSVPPathExplicitRouteType1FourByteASNumberLBit_Choice_Enum)(0), // 352: otg.PatternFlowRSVPPathExplicitRouteType1FourByteASNumberLBit.Choice.Enum + (PatternFlowRSVPPathExplicitRouteType1FourByteASNumberReserved_Choice_Enum)(0), // 353: otg.PatternFlowRSVPPathExplicitRouteType1FourByteASNumberReserved.Choice.Enum + (PatternFlowRSVPPathLabelRequestWithoutLabelRangeReserved_Choice_Enum)(0), // 354: otg.PatternFlowRSVPPathLabelRequestWithoutLabelRangeReserved.Choice.Enum + (PatternFlowRSVPPathLabelRequestWithoutLabelRangeL3Pid_Choice_Enum)(0), // 355: otg.PatternFlowRSVPPathLabelRequestWithoutLabelRangeL3pid.Choice.Enum + (PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Ipv4TunnelSenderAddress_Choice_Enum)(0), // 356: otg.PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Ipv4TunnelSenderAddress.Choice.Enum + (PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Reserved_Choice_Enum)(0), // 357: otg.PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Reserved.Choice.Enum + (PatternFlowRSVPPathSenderTemplateLspTunnelIpv4LspId_Choice_Enum)(0), // 358: otg.PatternFlowRSVPPathSenderTemplateLspTunnelIpv4LspId.Choice.Enum + (PatternFlowRSVPPathSenderTspecIntServVersion_Choice_Enum)(0), // 359: otg.PatternFlowRSVPPathSenderTspecIntServVersion.Choice.Enum + (PatternFlowRSVPPathSenderTspecIntServReserved1_Choice_Enum)(0), // 360: otg.PatternFlowRSVPPathSenderTspecIntServReserved1.Choice.Enum + (PatternFlowRSVPPathSenderTspecIntServOverallLength_Choice_Enum)(0), // 361: otg.PatternFlowRSVPPathSenderTspecIntServOverallLength.Choice.Enum + (PatternFlowRSVPPathSenderTspecIntServServiceHeader_Choice_Enum)(0), // 362: otg.PatternFlowRSVPPathSenderTspecIntServServiceHeader.Choice.Enum + (PatternFlowRSVPPathSenderTspecIntServZeroBit_Choice_Enum)(0), // 363: otg.PatternFlowRSVPPathSenderTspecIntServZeroBit.Choice.Enum + (PatternFlowRSVPPathSenderTspecIntServReserved2_Choice_Enum)(0), // 364: otg.PatternFlowRSVPPathSenderTspecIntServReserved2.Choice.Enum + (PatternFlowRSVPPathSenderTspecIntServLengthOfServiceData_Choice_Enum)(0), // 365: otg.PatternFlowRSVPPathSenderTspecIntServLengthOfServiceData.Choice.Enum + (PatternFlowRSVPPathSenderTspecIntServParameterIdTokenBucketTspec_Choice_Enum)(0), // 366: otg.PatternFlowRSVPPathSenderTspecIntServParameterIdTokenBucketTspec.Choice.Enum + (PatternFlowRSVPPathSenderTspecIntServParameter127Flag_Choice_Enum)(0), // 367: otg.PatternFlowRSVPPathSenderTspecIntServParameter127Flag.Choice.Enum + (PatternFlowRSVPPathSenderTspecIntServParameter127Length_Choice_Enum)(0), // 368: otg.PatternFlowRSVPPathSenderTspecIntServParameter127Length.Choice.Enum + (PatternFlowRSVPPathSenderTspecIntServMinimumPolicedUnit_Choice_Enum)(0), // 369: otg.PatternFlowRSVPPathSenderTspecIntServMinimumPolicedUnit.Choice.Enum + (PatternFlowRSVPPathSenderTspecIntServMaximumPacketSize_Choice_Enum)(0), // 370: otg.PatternFlowRSVPPathSenderTspecIntServMaximumPacketSize.Choice.Enum + (PatternFlowRSVPPathRecordRouteType1Ipv4AddressIpv4Address_Choice_Enum)(0), // 371: otg.PatternFlowRSVPPathRecordRouteType1Ipv4AddressIpv4Address.Choice.Enum + (PatternFlowRSVPPathRecordRouteType1Ipv4AddressPrefixLength_Choice_Enum)(0), // 372: otg.PatternFlowRSVPPathRecordRouteType1Ipv4AddressPrefixLength.Choice.Enum + (PatternFlowRSVPPathRecordRouteType1LabelFlags_Choice_Enum)(0), // 373: otg.PatternFlowRSVPPathRecordRouteType1LabelFlags.Choice.Enum + (PatternFlowRSVPPathRecordRouteType1LabelCType_Choice_Enum)(0), // 374: otg.PatternFlowRSVPPathRecordRouteType1LabelCType.Choice.Enum + (PatternFlowRSVPPathObjectsCustomType_Choice_Enum)(0), // 375: otg.PatternFlowRSVPPathObjectsCustomType.Choice.Enum + (*Config)(nil), // 376: otg.Config + (*ConfigOptions)(nil), // 377: otg.ConfigOptions + (*Port)(nil), // 378: otg.Port + (*PortOptions)(nil), // 379: otg.PortOptions + (*Lag)(nil), // 380: otg.Lag + (*LagPort)(nil), // 381: otg.LagPort + (*LagProtocol)(nil), // 382: otg.LagProtocol + (*LagProtocolStatic)(nil), // 383: otg.LagProtocolStatic + (*LagProtocolLacp)(nil), // 384: otg.LagProtocolLacp + (*LagPortLacp)(nil), // 385: otg.LagPortLacp + (*DeviceEthernetBase)(nil), // 386: otg.DeviceEthernetBase + (*DeviceEthernet)(nil), // 387: otg.DeviceEthernet + (*EthernetConnection)(nil), // 388: otg.EthernetConnection + (*DeviceVlan)(nil), // 389: otg.DeviceVlan + (*DeviceIpv4)(nil), // 390: otg.DeviceIpv4 + (*DeviceIpv4Loopback)(nil), // 391: otg.DeviceIpv4Loopback + (*DeviceIpv4GatewayMAC)(nil), // 392: otg.DeviceIpv4GatewayMAC + (*DeviceIpv6)(nil), // 393: otg.DeviceIpv6 + (*DeviceIpv6Loopback)(nil), // 394: otg.DeviceIpv6Loopback + (*DeviceIpv6GatewayMAC)(nil), // 395: otg.DeviceIpv6GatewayMAC + (*Layer1)(nil), // 396: otg.Layer1 + (*Layer1AutoNegotiation)(nil), // 397: otg.Layer1AutoNegotiation + (*Layer1FlowControl)(nil), // 398: otg.Layer1FlowControl + (*Layer1Ieee8023X)(nil), // 399: otg.Layer1Ieee8023x + (*Layer1Ieee8021Qbb)(nil), // 400: otg.Layer1Ieee8021qbb + (*Capture)(nil), // 401: otg.Capture + (*CaptureFilter)(nil), // 402: otg.CaptureFilter + (*CaptureCustom)(nil), // 403: otg.CaptureCustom + (*CaptureField)(nil), // 404: otg.CaptureField + (*CaptureEthernet)(nil), // 405: otg.CaptureEthernet + (*CaptureVlan)(nil), // 406: otg.CaptureVlan + (*CaptureIpv4)(nil), // 407: otg.CaptureIpv4 + (*CaptureIpv6)(nil), // 408: otg.CaptureIpv6 + (*Device)(nil), // 409: otg.Device + (*ProtocolOptions)(nil), // 410: otg.ProtocolOptions + (*DeviceIsisRouter)(nil), // 411: otg.DeviceIsisRouter + (*DeviceIsisMultiInstance)(nil), // 412: otg.DeviceIsisMultiInstance + (*IsisInterface)(nil), // 413: otg.IsisInterface + (*IsisInterfaceLevel)(nil), // 414: otg.IsisInterfaceLevel + (*IsisMT)(nil), // 415: otg.IsisMT + (*LinkStateTE)(nil), // 416: otg.LinkStateTE + (*LinkStatepriorityBandwidths)(nil), // 417: otg.LinkStatepriorityBandwidths + (*IsisInterfaceAuthentication)(nil), // 418: otg.IsisInterfaceAuthentication + (*IsisInterfaceAdvanced)(nil), // 419: otg.IsisInterfaceAdvanced + (*IsisInterfaceLinkProtection)(nil), // 420: otg.IsisInterfaceLinkProtection + (*IsisBasic)(nil), // 421: otg.IsisBasic + (*IsisAdvanced)(nil), // 422: otg.IsisAdvanced + (*IsisAuthentication)(nil), // 423: otg.IsisAuthentication + (*IsisAuthenticationBase)(nil), // 424: otg.IsisAuthenticationBase + (*IsisV4RouteRange)(nil), // 425: otg.IsisV4RouteRange + (*V4RouteAddress)(nil), // 426: otg.V4RouteAddress + (*V6RouteAddress)(nil), // 427: otg.V6RouteAddress + (*MACRouteAddress)(nil), // 428: otg.MACRouteAddress + (*IsisV6RouteRange)(nil), // 429: otg.IsisV6RouteRange + (*DeviceBgpRouter)(nil), // 430: otg.DeviceBgpRouter + (*DeviceBgpMessageHeaderError)(nil), // 431: otg.DeviceBgpMessageHeaderError + (*DeviceBgpOpenMessageError)(nil), // 432: otg.DeviceBgpOpenMessageError + (*DeviceBgpUpdateMessageError)(nil), // 433: otg.DeviceBgpUpdateMessageError + (*DeviceBgpHoldTimerExpired)(nil), // 434: otg.DeviceBgpHoldTimerExpired + (*DeviceBgpFiniteStateMachineError)(nil), // 435: otg.DeviceBgpFiniteStateMachineError + (*DeviceBgpCeaseError)(nil), // 436: otg.DeviceBgpCeaseError + (*DeviceBgpCustomError)(nil), // 437: otg.DeviceBgpCustomError + (*BgpV4Peer)(nil), // 438: otg.BgpV4Peer + (*BgpV4Interface)(nil), // 439: otg.BgpV4Interface + (*BgpV4EthernetSegment)(nil), // 440: otg.BgpV4EthernetSegment + (*BgpEthernetSegmentDfElection)(nil), // 441: otg.BgpEthernetSegmentDfElection + (*BgpRouteAdvanced)(nil), // 442: otg.BgpRouteAdvanced + (*BgpCommunity)(nil), // 443: otg.BgpCommunity + (*BgpExtCommunity)(nil), // 444: otg.BgpExtCommunity + (*BgpAsPath)(nil), // 445: otg.BgpAsPath + (*BgpAsPathSegment)(nil), // 446: otg.BgpAsPathSegment + (*BgpV4EvpnEvis)(nil), // 447: otg.BgpV4EvpnEvis + (*BgpV4EviVxlan)(nil), // 448: otg.BgpV4EviVxlan + (*BgpV4EviVxlanBroadcastDomain)(nil), // 449: otg.BgpV4EviVxlanBroadcastDomain + (*BgpCMacIpRange)(nil), // 450: otg.BgpCMacIpRange + (*BgpRouteDistinguisher)(nil), // 451: otg.BgpRouteDistinguisher + (*BgpRouteTarget)(nil), // 452: otg.BgpRouteTarget + (*BgpAdvanced)(nil), // 453: otg.BgpAdvanced + (*BgpCapability)(nil), // 454: otg.BgpCapability + (*BgpLearnedInformationFilter)(nil), // 455: otg.BgpLearnedInformationFilter + (*BgpV4RouteRange)(nil), // 456: otg.BgpV4RouteRange + (*BgpAddPath)(nil), // 457: otg.BgpAddPath + (*BgpExtendedCommunity)(nil), // 458: otg.BgpExtendedCommunity + (*BgpExtendedCommunityTransitive2OctetAsTypeRouteTarget)(nil), // 459: otg.BgpExtendedCommunityTransitive2OctetAsTypeRouteTarget + (*BgpExtendedCommunityTransitive2OctetAsTypeRouteOrigin)(nil), // 460: otg.BgpExtendedCommunityTransitive2OctetAsTypeRouteOrigin + (*BgpExtendedCommunityTransitive2OctetAsType)(nil), // 461: otg.BgpExtendedCommunityTransitive2OctetAsType + (*BgpExtendedCommunityTransitiveIpv4AddressTypeRouteOrigin)(nil), // 462: otg.BgpExtendedCommunityTransitiveIpv4AddressTypeRouteOrigin + (*BgpExtendedCommunityTransitiveIpv4AddressTypeRouteTarget)(nil), // 463: otg.BgpExtendedCommunityTransitiveIpv4AddressTypeRouteTarget + (*BgpExtendedCommunityTransitiveIpv4AddressType)(nil), // 464: otg.BgpExtendedCommunityTransitiveIpv4AddressType + (*BgpExtendedCommunityTransitive4OctetAsTypeRouteTarget)(nil), // 465: otg.BgpExtendedCommunityTransitive4OctetAsTypeRouteTarget + (*BgpExtendedCommunityTransitive4OctetAsTypeRouteOrigin)(nil), // 466: otg.BgpExtendedCommunityTransitive4OctetAsTypeRouteOrigin + (*BgpExtendedCommunityTransitive4OctetAsType)(nil), // 467: otg.BgpExtendedCommunityTransitive4OctetAsType + (*BgpExtendedCommunityTransitiveOpaqueTypeColor)(nil), // 468: otg.BgpExtendedCommunityTransitiveOpaqueTypeColor + (*BgpExtendedCommunityTransitiveOpaqueTypeEncapsulation)(nil), // 469: otg.BgpExtendedCommunityTransitiveOpaqueTypeEncapsulation + (*BgpExtendedCommunityTransitiveOpaqueType)(nil), // 470: otg.BgpExtendedCommunityTransitiveOpaqueType + (*BgpExtendedCommunityTransitiveEvpnTypeRouterMac)(nil), // 471: otg.BgpExtendedCommunityTransitiveEvpnTypeRouterMac + (*BgpExtendedCommunityTransitiveEvpnType)(nil), // 472: otg.BgpExtendedCommunityTransitiveEvpnType + (*BgpExtendedCommunityNonTransitive2OctetAsTypeLinkBandwidth)(nil), // 473: otg.BgpExtendedCommunityNonTransitive2OctetAsTypeLinkBandwidth + (*BgpExtendedCommunityNonTransitive2OctetAsType)(nil), // 474: otg.BgpExtendedCommunityNonTransitive2OctetAsType + (*BgpExtendedCommunityCustomType)(nil), // 475: otg.BgpExtendedCommunityCustomType + (*BgpV6RouteRange)(nil), // 476: otg.BgpV6RouteRange + (*BgpSrteV4Policy)(nil), // 477: otg.BgpSrteV4Policy + (*BgpSrteV4TunnelTlv)(nil), // 478: otg.BgpSrteV4TunnelTlv + (*BgpSrteRemoteEndpointSubTlv)(nil), // 479: otg.BgpSrteRemoteEndpointSubTlv + (*BgpSrteColorSubTlv)(nil), // 480: otg.BgpSrteColorSubTlv + (*BgpSrteBindingSubTlv)(nil), // 481: otg.BgpSrteBindingSubTlv + (*BgpSrtePreferenceSubTlv)(nil), // 482: otg.BgpSrtePreferenceSubTlv + (*BgpSrtePolicyPrioritySubTlv)(nil), // 483: otg.BgpSrtePolicyPrioritySubTlv + (*BgpSrtePolicyNameSubTlv)(nil), // 484: otg.BgpSrtePolicyNameSubTlv + (*BgpSrteExplicitNullLabelPolicySubTlv)(nil), // 485: otg.BgpSrteExplicitNullLabelPolicySubTlv + (*BgpSrteSegmentList)(nil), // 486: otg.BgpSrteSegmentList + (*BgpSrteSegment)(nil), // 487: otg.BgpSrteSegment + (*BgpSrteSrMplsSid)(nil), // 488: otg.BgpSrteSrMplsSid + (*BgpSrteSRv6SIDEndpointBehaviorAndStructure)(nil), // 489: otg.BgpSrteSRv6SIDEndpointBehaviorAndStructure + (*BgpSrteSegmentATypeSubTlv)(nil), // 490: otg.BgpSrteSegmentATypeSubTlv + (*BgpSrteSegmentBTypeSubTlv)(nil), // 491: otg.BgpSrteSegmentBTypeSubTlv + (*BgpSrteSegmentCTypeSubTlv)(nil), // 492: otg.BgpSrteSegmentCTypeSubTlv + (*BgpSrteSegmentDTypeSubTlv)(nil), // 493: otg.BgpSrteSegmentDTypeSubTlv + (*BgpSrteSegmentETypeSubTlv)(nil), // 494: otg.BgpSrteSegmentETypeSubTlv + (*BgpSrteSegmentFTypeSubTlv)(nil), // 495: otg.BgpSrteSegmentFTypeSubTlv + (*BgpSrteSegmentGTypeSubTlv)(nil), // 496: otg.BgpSrteSegmentGTypeSubTlv + (*BgpSrteSegmentHTypeSubTlv)(nil), // 497: otg.BgpSrteSegmentHTypeSubTlv + (*BgpSrteSegmentITypeSubTlv)(nil), // 498: otg.BgpSrteSegmentITypeSubTlv + (*BgpSrteSegmentJTypeSubTlv)(nil), // 499: otg.BgpSrteSegmentJTypeSubTlv + (*BgpSrteSegmentKTypeSubTlv)(nil), // 500: otg.BgpSrteSegmentKTypeSubTlv + (*BgpSrteV6Policy)(nil), // 501: otg.BgpSrteV6Policy + (*BgpSrteV6TunnelTlv)(nil), // 502: otg.BgpSrteV6TunnelTlv + (*BgpGracefulRestart)(nil), // 503: otg.BgpGracefulRestart + (*BgpV6Peer)(nil), // 504: otg.BgpV6Peer + (*BgpV6Interface)(nil), // 505: otg.BgpV6Interface + (*BgpV6SegmentRouting)(nil), // 506: otg.BgpV6SegmentRouting + (*BgpV6EthernetSegment)(nil), // 507: otg.BgpV6EthernetSegment + (*BgpV6EvpnEvis)(nil), // 508: otg.BgpV6EvpnEvis + (*BgpV6EviVxlan)(nil), // 509: otg.BgpV6EviVxlan + (*BgpV6EviVxlanBroadcastDomain)(nil), // 510: otg.BgpV6EviVxlanBroadcastDomain + (*DeviceVxlan)(nil), // 511: otg.DeviceVxlan + (*VxlanV4Tunnel)(nil), // 512: otg.VxlanV4Tunnel + (*VxlanV6Tunnel)(nil), // 513: otg.VxlanV6Tunnel + (*VxlanV4TunnelDestinationIPMode)(nil), // 514: otg.VxlanV4TunnelDestinationIPMode + (*VxlanV6TunnelDestinationIPMode)(nil), // 515: otg.VxlanV6TunnelDestinationIPMode + (*VxlanV4TunnelDestinationIPModeUnicast)(nil), // 516: otg.VxlanV4TunnelDestinationIPModeUnicast + (*VxlanV6TunnelDestinationIPModeUnicast)(nil), // 517: otg.VxlanV6TunnelDestinationIPModeUnicast + (*VxlanTunnelDestinationIPModeUnicastArpSuppressionCache)(nil), // 518: otg.VxlanTunnelDestinationIPModeUnicastArpSuppressionCache + (*VxlanV4TunnelDestinationIPModeUnicastVtep)(nil), // 519: otg.VxlanV4TunnelDestinationIPModeUnicastVtep + (*VxlanV6TunnelDestinationIPModeUnicastVtep)(nil), // 520: otg.VxlanV6TunnelDestinationIPModeUnicastVtep + (*VxlanV4TunnelDestinationIPModeMulticast)(nil), // 521: otg.VxlanV4TunnelDestinationIPModeMulticast + (*VxlanV6TunnelDestinationIPModeMulticast)(nil), // 522: otg.VxlanV6TunnelDestinationIPModeMulticast + (*DeviceRsvp)(nil), // 523: otg.DeviceRsvp + (*RsvpIpv4Interface)(nil), // 524: otg.RsvpIpv4Interface + (*RsvpLspIpv4Interface)(nil), // 525: otg.RsvpLspIpv4Interface + (*RsvpLspIpv4InterfaceP2PEgressIpv4Lsp)(nil), // 526: otg.RsvpLspIpv4InterfaceP2PEgressIpv4Lsp + (*RsvpLspIpv4InterfaceP2PIngressIpv4Lsp)(nil), // 527: otg.RsvpLspIpv4InterfaceP2PIngressIpv4Lsp + (*RsvpSessionAttribute)(nil), // 528: otg.RsvpSessionAttribute + (*RsvpResourceAffinities)(nil), // 529: otg.RsvpResourceAffinities + (*RsvpTspec)(nil), // 530: otg.RsvpTspec + (*RsvpFastReroute)(nil), // 531: otg.RsvpFastReroute + (*RsvpEro)(nil), // 532: otg.RsvpEro + (*RsvpEroSubobject)(nil), // 533: otg.RsvpEroSubobject + (*Flow)(nil), // 534: otg.Flow + (*FlowTxRx)(nil), // 535: otg.FlowTxRx + (*FlowPort)(nil), // 536: otg.FlowPort + (*FlowRouter)(nil), // 537: otg.FlowRouter + (*FlowHeader)(nil), // 538: otg.FlowHeader + (*FlowCustom)(nil), // 539: otg.FlowCustom + (*FlowCustomMetricTag)(nil), // 540: otg.FlowCustomMetricTag + (*FlowEthernet)(nil), // 541: otg.FlowEthernet + (*FlowVlan)(nil), // 542: otg.FlowVlan + (*FlowVxlan)(nil), // 543: otg.FlowVxlan + (*FlowIpv4)(nil), // 544: otg.FlowIpv4 + (*FlowIpv4Priority)(nil), // 545: otg.FlowIpv4Priority + (*FlowIpv4Dscp)(nil), // 546: otg.FlowIpv4Dscp + (*FlowIpv4Tos)(nil), // 547: otg.FlowIpv4Tos + (*FlowIpv6)(nil), // 548: otg.FlowIpv6 + (*FlowPfcPause)(nil), // 549: otg.FlowPfcPause + (*FlowEthernetPause)(nil), // 550: otg.FlowEthernetPause + (*FlowTcp)(nil), // 551: otg.FlowTcp + (*FlowUdp)(nil), // 552: otg.FlowUdp + (*FlowGre)(nil), // 553: otg.FlowGre + (*FlowGtpv1)(nil), // 554: otg.FlowGtpv1 + (*FlowGtpExtension)(nil), // 555: otg.FlowGtpExtension + (*FlowGtpv2)(nil), // 556: otg.FlowGtpv2 + (*FlowArp)(nil), // 557: otg.FlowArp + (*FlowIcmp)(nil), // 558: otg.FlowIcmp + (*FlowIcmpEcho)(nil), // 559: otg.FlowIcmpEcho + (*FlowIcmpv6)(nil), // 560: otg.FlowIcmpv6 + (*FlowIcmpv6Echo)(nil), // 561: otg.FlowIcmpv6Echo + (*FlowPpp)(nil), // 562: otg.FlowPpp + (*FlowIgmpv1)(nil), // 563: otg.FlowIgmpv1 + (*FlowMpls)(nil), // 564: otg.FlowMpls + (*FlowRsvp)(nil), // 565: otg.FlowRsvp + (*FlowRSVPFlag)(nil), // 566: otg.FlowRSVPFlag + (*FlowRSVPLength)(nil), // 567: otg.FlowRSVPLength + (*FlowRSVPMessage)(nil), // 568: otg.FlowRSVPMessage + (*FlowRSVPPathMessage)(nil), // 569: otg.FlowRSVPPathMessage + (*FlowRSVPPathObjects)(nil), // 570: otg.FlowRSVPPathObjects + (*FlowRSVPPathObjectLength)(nil), // 571: otg.FlowRSVPPathObjectLength + (*FlowRSVPPathObjectsClass)(nil), // 572: otg.FlowRSVPPathObjectsClass + (*FlowRSVPPathObjectsClassSession)(nil), // 573: otg.FlowRSVPPathObjectsClassSession + (*FlowRSVPPathObjectsSessionCType)(nil), // 574: otg.FlowRSVPPathObjectsSessionCType + (*FlowRSVPPathSessionLspTunnelIpv4)(nil), // 575: otg.FlowRSVPPathSessionLspTunnelIpv4 + (*FlowRSVPPathObjectsClassRsvpHop)(nil), // 576: otg.FlowRSVPPathObjectsClassRsvpHop + (*FlowRSVPPathObjectsRsvpHopCType)(nil), // 577: otg.FlowRSVPPathObjectsRsvpHopCType + (*FlowRSVPPathRsvpHopIpv4)(nil), // 578: otg.FlowRSVPPathRsvpHopIpv4 + (*FlowRSVPPathObjectsClassTimeValues)(nil), // 579: otg.FlowRSVPPathObjectsClassTimeValues + (*FlowRSVPPathObjectsTimeValuesCType)(nil), // 580: otg.FlowRSVPPathObjectsTimeValuesCType + (*FlowRSVPPathTimeValuesType1)(nil), // 581: otg.FlowRSVPPathTimeValuesType1 + (*FlowRSVPPathObjectsClassExplicitRoute)(nil), // 582: otg.FlowRSVPPathObjectsClassExplicitRoute + (*FlowRSVPPathObjectsClassExplicitRouteCType)(nil), // 583: otg.FlowRSVPPathObjectsClassExplicitRouteCType + (*FlowRSVPPathExplicitRouteType1)(nil), // 584: otg.FlowRSVPPathExplicitRouteType1 + (*FlowRSVPType1ExplicitRouteSubobjects)(nil), // 585: otg.FlowRSVPType1ExplicitRouteSubobjects + (*FlowRSVPType1ExplicitRouteSubobjectsType)(nil), // 586: otg.FlowRSVPType1ExplicitRouteSubobjectsType + (*FlowRSVPPathExplicitRouteType1Ipv4Prefix)(nil), // 587: otg.FlowRSVPPathExplicitRouteType1Ipv4Prefix + (*FlowRSVPPathExplicitRouteType1FourByteASNumber)(nil), // 588: otg.FlowRSVPPathExplicitRouteType1FourByteASNumber + (*FlowRSVPExplicitRouteLength)(nil), // 589: otg.FlowRSVPExplicitRouteLength + (*FlowRSVPPathObjectsClassLabelRequest)(nil), // 590: otg.FlowRSVPPathObjectsClassLabelRequest + (*FlowRSVPPathObjectsLabelRequestCType)(nil), // 591: otg.FlowRSVPPathObjectsLabelRequestCType + (*FlowRSVPPathLabelRequestWithoutLabelRange)(nil), // 592: otg.FlowRSVPPathLabelRequestWithoutLabelRange + (*FlowRSVPPathObjectsClassSessionAttribute)(nil), // 593: otg.FlowRSVPPathObjectsClassSessionAttribute + (*FlowRSVPPathObjectsSessionAttributeCType)(nil), // 594: otg.FlowRSVPPathObjectsSessionAttributeCType + (*FlowRSVPPathSessionAttributeLspTunnel)(nil), // 595: otg.FlowRSVPPathSessionAttributeLspTunnel + (*FlowRSVPPathSessionAttributeLspTunnelRa)(nil), // 596: otg.FlowRSVPPathSessionAttributeLspTunnelRa + (*FlowRSVPLspTunnelFlag)(nil), // 597: otg.FlowRSVPLspTunnelFlag + (*FlowRSVPPathObjectsClassSenderTemplate)(nil), // 598: otg.FlowRSVPPathObjectsClassSenderTemplate + (*FlowRSVPPathObjectsSenderTemplateCType)(nil), // 599: otg.FlowRSVPPathObjectsSenderTemplateCType + (*FlowRSVPPathSenderTemplateLspTunnelIpv4)(nil), // 600: otg.FlowRSVPPathSenderTemplateLspTunnelIpv4 + (*FlowRSVPPathObjectsClassSenderTspec)(nil), // 601: otg.FlowRSVPPathObjectsClassSenderTspec + (*FlowRSVPPathObjectsSenderTspecCType)(nil), // 602: otg.FlowRSVPPathObjectsSenderTspecCType + (*FlowRSVPPathSenderTspecIntServ)(nil), // 603: otg.FlowRSVPPathSenderTspecIntServ + (*FlowRSVPPathObjectsClassRecordRoute)(nil), // 604: otg.FlowRSVPPathObjectsClassRecordRoute + (*FlowRSVPPathObjectsRecordRouteCType)(nil), // 605: otg.FlowRSVPPathObjectsRecordRouteCType + (*FlowRSVPPathRecordRouteType1)(nil), // 606: otg.FlowRSVPPathRecordRouteType1 + (*FlowRSVPType1RecordRouteSubobjects)(nil), // 607: otg.FlowRSVPType1RecordRouteSubobjects + (*FlowRSVPPathObjectsRecordRouteSubObjectType)(nil), // 608: otg.FlowRSVPPathObjectsRecordRouteSubObjectType + (*FlowRSVPPathRecordRouteType1Ipv4Address)(nil), // 609: otg.FlowRSVPPathRecordRouteType1Ipv4Address + (*FlowRSVPRecordRouteIPv4Flag)(nil), // 610: otg.FlowRSVPRecordRouteIPv4Flag + (*FlowRSVPPathRecordRouteType1Label)(nil), // 611: otg.FlowRSVPPathRecordRouteType1Label + (*FlowRSVPRouteRecordLength)(nil), // 612: otg.FlowRSVPRouteRecordLength + (*FlowRSVPPathObjectsCustom)(nil), // 613: otg.FlowRSVPPathObjectsCustom + (*FlowRSVPObjectOptionsCustomLength)(nil), // 614: otg.FlowRSVPObjectOptionsCustomLength + (*FlowSize)(nil), // 615: otg.FlowSize + (*FlowSizeIncrement)(nil), // 616: otg.FlowSizeIncrement + (*FlowSizeRandom)(nil), // 617: otg.FlowSizeRandom + (*FlowSizeWeightPairs)(nil), // 618: otg.FlowSizeWeightPairs + (*FlowSizeWeightPairsCustom)(nil), // 619: otg.FlowSizeWeightPairsCustom + (*FlowRate)(nil), // 620: otg.FlowRate + (*FlowDuration)(nil), // 621: otg.FlowDuration + (*FlowContinuous)(nil), // 622: otg.FlowContinuous + (*FlowDelay)(nil), // 623: otg.FlowDelay + (*FlowFixedPackets)(nil), // 624: otg.FlowFixedPackets + (*FlowFixedSeconds)(nil), // 625: otg.FlowFixedSeconds + (*FlowBurst)(nil), // 626: otg.FlowBurst + (*FlowDurationInterBurstGap)(nil), // 627: otg.FlowDurationInterBurstGap + (*FlowMetrics)(nil), // 628: otg.FlowMetrics + (*FlowLatencyMetrics)(nil), // 629: otg.FlowLatencyMetrics + (*FlowPredefinedTags)(nil), // 630: otg.FlowPredefinedTags + (*FlowRxTxRatio)(nil), // 631: otg.FlowRxTxRatio + (*FlowRxTxRatioRxCount)(nil), // 632: otg.FlowRxTxRatioRxCount + (*Event)(nil), // 633: otg.Event + (*EventRxRateThreshold)(nil), // 634: otg.EventRxRateThreshold + (*EventLink)(nil), // 635: otg.EventLink + (*EventRouteAdvertiseWithdraw)(nil), // 636: otg.EventRouteAdvertiseWithdraw + (*EventRequest)(nil), // 637: otg.EventRequest + (*EventSubscription)(nil), // 638: otg.EventSubscription + (*Lldp)(nil), // 639: otg.Lldp + (*LldpConnection)(nil), // 640: otg.LldpConnection + (*LldpChassisId)(nil), // 641: otg.LldpChassisId + (*LldpPortId)(nil), // 642: otg.LldpPortId + (*LldpChassisMacSubType)(nil), // 643: otg.LldpChassisMacSubType + (*LldpPortInterfaceNameSubType)(nil), // 644: otg.LldpPortInterfaceNameSubType + (*LldpSystemName)(nil), // 645: otg.LldpSystemName + (*Error)(nil), // 646: otg.Error + (*Warning)(nil), // 647: otg.Warning + (*ConfigUpdate)(nil), // 648: otg.ConfigUpdate + (*FlowsUpdate)(nil), // 649: otg.FlowsUpdate + (*ControlState)(nil), // 650: otg.ControlState + (*StatePort)(nil), // 651: otg.StatePort + (*StateTraffic)(nil), // 652: otg.StateTraffic + (*StateProtocol)(nil), // 653: otg.StateProtocol + (*StatePortLink)(nil), // 654: otg.StatePortLink + (*StatePortCapture)(nil), // 655: otg.StatePortCapture + (*StateTrafficFlowTransmit)(nil), // 656: otg.StateTrafficFlowTransmit + (*StateProtocolAll)(nil), // 657: otg.StateProtocolAll + (*StateProtocolRoute)(nil), // 658: otg.StateProtocolRoute + (*StateProtocolLacp)(nil), // 659: otg.StateProtocolLacp + (*StateProtocolLacpAdmin)(nil), // 660: otg.StateProtocolLacpAdmin + (*StateProtocolLacpMemberPorts)(nil), // 661: otg.StateProtocolLacpMemberPorts + (*StateProtocolBgp)(nil), // 662: otg.StateProtocolBgp + (*StateProtocolBgpPeers)(nil), // 663: otg.StateProtocolBgpPeers + (*StateProtocolIsis)(nil), // 664: otg.StateProtocolIsis + (*StateProtocolIsisRouters)(nil), // 665: otg.StateProtocolIsisRouters + (*ControlAction)(nil), // 666: otg.ControlAction + (*ControlActionResponse)(nil), // 667: otg.ControlActionResponse + (*ActionResponse)(nil), // 668: otg.ActionResponse + (*ActionProtocol)(nil), // 669: otg.ActionProtocol + (*ActionResponseProtocol)(nil), // 670: otg.ActionResponseProtocol + (*ActionProtocolIpv4)(nil), // 671: otg.ActionProtocolIpv4 + (*ActionResponseProtocolIpv4)(nil), // 672: otg.ActionResponseProtocolIpv4 + (*ActionProtocolIpv4Ping)(nil), // 673: otg.ActionProtocolIpv4Ping + (*ActionProtocolIpv4PingRequest)(nil), // 674: otg.ActionProtocolIpv4PingRequest + (*ActionResponseProtocolIpv4Ping)(nil), // 675: otg.ActionResponseProtocolIpv4Ping + (*ActionResponseProtocolIpv4PingResponse)(nil), // 676: otg.ActionResponseProtocolIpv4PingResponse + (*ActionProtocolIpv6)(nil), // 677: otg.ActionProtocolIpv6 + (*ActionResponseProtocolIpv6)(nil), // 678: otg.ActionResponseProtocolIpv6 + (*ActionProtocolIpv6Ping)(nil), // 679: otg.ActionProtocolIpv6Ping + (*ActionProtocolIpv6PingRequest)(nil), // 680: otg.ActionProtocolIpv6PingRequest + (*ActionResponseProtocolIpv6Ping)(nil), // 681: otg.ActionResponseProtocolIpv6Ping + (*ActionResponseProtocolIpv6PingResponse)(nil), // 682: otg.ActionResponseProtocolIpv6PingResponse + (*ActionProtocolBgp)(nil), // 683: otg.ActionProtocolBgp + (*ActionProtocolBgpNotification)(nil), // 684: otg.ActionProtocolBgpNotification + (*ActionProtocolBgpInitiateGracefulRestart)(nil), // 685: otg.ActionProtocolBgpInitiateGracefulRestart + (*MetricsRequest)(nil), // 686: otg.MetricsRequest + (*MetricsResponse)(nil), // 687: otg.MetricsResponse + (*PortMetricsRequest)(nil), // 688: otg.PortMetricsRequest + (*PortMetric)(nil), // 689: otg.PortMetric + (*FlowMetricsRequest)(nil), // 690: otg.FlowMetricsRequest + (*FlowTaggedMetricsFilter)(nil), // 691: otg.FlowTaggedMetricsFilter + (*FlowMetricTagFilter)(nil), // 692: otg.FlowMetricTagFilter + (*FlowMetric)(nil), // 693: otg.FlowMetric + (*FlowTaggedMetric)(nil), // 694: otg.FlowTaggedMetric + (*FlowMetricTag)(nil), // 695: otg.FlowMetricTag + (*FlowMetricTagValue)(nil), // 696: otg.FlowMetricTagValue + (*MetricTimestamp)(nil), // 697: otg.MetricTimestamp + (*MetricLatency)(nil), // 698: otg.MetricLatency + (*Bgpv4MetricsRequest)(nil), // 699: otg.Bgpv4MetricsRequest + (*Bgpv4Metric)(nil), // 700: otg.Bgpv4Metric + (*Bgpv6MetricsRequest)(nil), // 701: otg.Bgpv6MetricsRequest + (*Bgpv6Metric)(nil), // 702: otg.Bgpv6Metric + (*IsisMetricsRequest)(nil), // 703: otg.IsisMetricsRequest + (*IsisMetric)(nil), // 704: otg.IsisMetric + (*LagMetricsRequest)(nil), // 705: otg.LagMetricsRequest + (*LagMetric)(nil), // 706: otg.LagMetric + (*LacpMetricsRequest)(nil), // 707: otg.LacpMetricsRequest + (*LacpMetric)(nil), // 708: otg.LacpMetric + (*LldpMetricsRequest)(nil), // 709: otg.LldpMetricsRequest + (*LldpMetric)(nil), // 710: otg.LldpMetric + (*RsvpMetricsRequest)(nil), // 711: otg.RsvpMetricsRequest + (*RsvpMetric)(nil), // 712: otg.RsvpMetric + (*StatesRequest)(nil), // 713: otg.StatesRequest + (*StatesResponse)(nil), // 714: otg.StatesResponse + (*Neighborsv4StatesRequest)(nil), // 715: otg.Neighborsv4StatesRequest + (*Neighborsv4State)(nil), // 716: otg.Neighborsv4State + (*Neighborsv6StatesRequest)(nil), // 717: otg.Neighborsv6StatesRequest + (*Neighborsv6State)(nil), // 718: otg.Neighborsv6State + (*BgpPrefixStateRequest)(nil), // 719: otg.BgpPrefixStateRequest + (*BgpPrefixIpv4UnicastFilter)(nil), // 720: otg.BgpPrefixIpv4UnicastFilter + (*BgpPrefixIpv6UnicastFilter)(nil), // 721: otg.BgpPrefixIpv6UnicastFilter + (*BgpPrefixesState)(nil), // 722: otg.BgpPrefixesState + (*BgpPrefixIpv4UnicastState)(nil), // 723: otg.BgpPrefixIpv4UnicastState + (*BgpPrefixIpv6UnicastState)(nil), // 724: otg.BgpPrefixIpv6UnicastState + (*ResultBgpCommunity)(nil), // 725: otg.ResultBgpCommunity + (*ResultBgpAsPath)(nil), // 726: otg.ResultBgpAsPath + (*ResultBgpAsPathSegment)(nil), // 727: otg.ResultBgpAsPathSegment + (*IsisLspsStateRequest)(nil), // 728: otg.IsisLspsStateRequest + (*IsisLspsState)(nil), // 729: otg.IsisLspsState + (*IsisLspState)(nil), // 730: otg.IsisLspState + (*IsisLspTlvs)(nil), // 731: otg.IsisLspTlvs + (*IsisLspHostname)(nil), // 732: otg.IsisLspHostname + (*IsisLspFlags)(nil), // 733: otg.IsisLspFlags + (*IsisLspIsReachabilityTlv)(nil), // 734: otg.IsisLspIsReachabilityTlv + (*IsisLspExtendedIsReachabilityTlv)(nil), // 735: otg.IsisLspExtendedIsReachabilityTlv + (*IsisLspneighbor)(nil), // 736: otg.IsisLspneighbor + (*IsisLspIpv4InternalReachabilityTlv)(nil), // 737: otg.IsisLspIpv4InternalReachabilityTlv + (*IsisLspIpv4ExternalReachabilityTlv)(nil), // 738: otg.IsisLspIpv4ExternalReachabilityTlv + (*IsisLspV4Prefix)(nil), // 739: otg.IsisLspV4Prefix + (*IsisLspExtendedIpv4ReachabilityTlv)(nil), // 740: otg.IsisLspExtendedIpv4ReachabilityTlv + (*IsisLspExtendedV4Prefix)(nil), // 741: otg.IsisLspExtendedV4Prefix + (*IsisLspIpv6ReachabilityTlv)(nil), // 742: otg.IsisLspIpv6ReachabilityTlv + (*IsisLspV6Prefix)(nil), // 743: otg.IsisLspV6Prefix + (*IsisLspPrefixAttributes)(nil), // 744: otg.IsisLspPrefixAttributes + (*LldpNeighborsStateRequest)(nil), // 745: otg.LldpNeighborsStateRequest + (*LldpNeighborsState)(nil), // 746: otg.LldpNeighborsState + (*LldpCustomTLVState)(nil), // 747: otg.LldpCustomTLVState + (*LldpCapabilityState)(nil), // 748: otg.LldpCapabilityState + (*RsvpLspsStateRequest)(nil), // 749: otg.RsvpLspsStateRequest + (*RsvpLspsState)(nil), // 750: otg.RsvpLspsState + (*RsvpIPv4LspState)(nil), // 751: otg.RsvpIPv4LspState + (*RsvpLspState)(nil), // 752: otg.RsvpLspState + (*RsvpLspIpv4Rro)(nil), // 753: otg.RsvpLspIpv4Rro + (*RsvpLspIpv4Ero)(nil), // 754: otg.RsvpLspIpv4Ero + (*CaptureRequest)(nil), // 755: otg.CaptureRequest + (*PatternFlowEthernetDstCounter)(nil), // 756: otg.PatternFlowEthernetDstCounter + (*PatternFlowEthernetDstMetricTag)(nil), // 757: otg.PatternFlowEthernetDstMetricTag + (*PatternFlowEthernetDst)(nil), // 758: otg.PatternFlowEthernetDst + (*PatternFlowEthernetSrcCounter)(nil), // 759: otg.PatternFlowEthernetSrcCounter + (*PatternFlowEthernetSrcMetricTag)(nil), // 760: otg.PatternFlowEthernetSrcMetricTag + (*PatternFlowEthernetSrc)(nil), // 761: otg.PatternFlowEthernetSrc + (*PatternFlowEthernetEtherTypeCounter)(nil), // 762: otg.PatternFlowEthernetEtherTypeCounter + (*PatternFlowEthernetEtherTypeMetricTag)(nil), // 763: otg.PatternFlowEthernetEtherTypeMetricTag + (*PatternFlowEthernetEtherType)(nil), // 764: otg.PatternFlowEthernetEtherType + (*PatternFlowEthernetPfcQueueCounter)(nil), // 765: otg.PatternFlowEthernetPfcQueueCounter + (*PatternFlowEthernetPfcQueueMetricTag)(nil), // 766: otg.PatternFlowEthernetPfcQueueMetricTag + (*PatternFlowEthernetPfcQueue)(nil), // 767: otg.PatternFlowEthernetPfcQueue + (*PatternFlowVlanPriorityCounter)(nil), // 768: otg.PatternFlowVlanPriorityCounter + (*PatternFlowVlanPriorityMetricTag)(nil), // 769: otg.PatternFlowVlanPriorityMetricTag + (*PatternFlowVlanPriority)(nil), // 770: otg.PatternFlowVlanPriority + (*PatternFlowVlanCfiCounter)(nil), // 771: otg.PatternFlowVlanCfiCounter + (*PatternFlowVlanCfiMetricTag)(nil), // 772: otg.PatternFlowVlanCfiMetricTag + (*PatternFlowVlanCfi)(nil), // 773: otg.PatternFlowVlanCfi + (*PatternFlowVlanIdCounter)(nil), // 774: otg.PatternFlowVlanIdCounter + (*PatternFlowVlanIdMetricTag)(nil), // 775: otg.PatternFlowVlanIdMetricTag + (*PatternFlowVlanId)(nil), // 776: otg.PatternFlowVlanId + (*PatternFlowVlanTpidCounter)(nil), // 777: otg.PatternFlowVlanTpidCounter + (*PatternFlowVlanTpidMetricTag)(nil), // 778: otg.PatternFlowVlanTpidMetricTag + (*PatternFlowVlanTpid)(nil), // 779: otg.PatternFlowVlanTpid + (*PatternFlowVxlanFlagsCounter)(nil), // 780: otg.PatternFlowVxlanFlagsCounter + (*PatternFlowVxlanFlagsMetricTag)(nil), // 781: otg.PatternFlowVxlanFlagsMetricTag + (*PatternFlowVxlanFlags)(nil), // 782: otg.PatternFlowVxlanFlags + (*PatternFlowVxlanReserved0Counter)(nil), // 783: otg.PatternFlowVxlanReserved0Counter + (*PatternFlowVxlanReserved0MetricTag)(nil), // 784: otg.PatternFlowVxlanReserved0MetricTag + (*PatternFlowVxlanReserved0)(nil), // 785: otg.PatternFlowVxlanReserved0 + (*PatternFlowVxlanVniCounter)(nil), // 786: otg.PatternFlowVxlanVniCounter + (*PatternFlowVxlanVniMetricTag)(nil), // 787: otg.PatternFlowVxlanVniMetricTag + (*PatternFlowVxlanVni)(nil), // 788: otg.PatternFlowVxlanVni + (*PatternFlowVxlanReserved1Counter)(nil), // 789: otg.PatternFlowVxlanReserved1Counter + (*PatternFlowVxlanReserved1MetricTag)(nil), // 790: otg.PatternFlowVxlanReserved1MetricTag + (*PatternFlowVxlanReserved1)(nil), // 791: otg.PatternFlowVxlanReserved1 + (*PatternFlowIpv4VersionCounter)(nil), // 792: otg.PatternFlowIpv4VersionCounter + (*PatternFlowIpv4VersionMetricTag)(nil), // 793: otg.PatternFlowIpv4VersionMetricTag + (*PatternFlowIpv4Version)(nil), // 794: otg.PatternFlowIpv4Version + (*PatternFlowIpv4HeaderLengthCounter)(nil), // 795: otg.PatternFlowIpv4HeaderLengthCounter + (*PatternFlowIpv4HeaderLengthMetricTag)(nil), // 796: otg.PatternFlowIpv4HeaderLengthMetricTag + (*PatternFlowIpv4HeaderLength)(nil), // 797: otg.PatternFlowIpv4HeaderLength + (*PatternFlowIpv4TotalLengthCounter)(nil), // 798: otg.PatternFlowIpv4TotalLengthCounter + (*PatternFlowIpv4TotalLengthMetricTag)(nil), // 799: otg.PatternFlowIpv4TotalLengthMetricTag + (*PatternFlowIpv4TotalLength)(nil), // 800: otg.PatternFlowIpv4TotalLength + (*PatternFlowIpv4IdentificationCounter)(nil), // 801: otg.PatternFlowIpv4IdentificationCounter + (*PatternFlowIpv4IdentificationMetricTag)(nil), // 802: otg.PatternFlowIpv4IdentificationMetricTag + (*PatternFlowIpv4Identification)(nil), // 803: otg.PatternFlowIpv4Identification + (*PatternFlowIpv4ReservedCounter)(nil), // 804: otg.PatternFlowIpv4ReservedCounter + (*PatternFlowIpv4ReservedMetricTag)(nil), // 805: otg.PatternFlowIpv4ReservedMetricTag + (*PatternFlowIpv4Reserved)(nil), // 806: otg.PatternFlowIpv4Reserved + (*PatternFlowIpv4DontFragmentCounter)(nil), // 807: otg.PatternFlowIpv4DontFragmentCounter + (*PatternFlowIpv4DontFragmentMetricTag)(nil), // 808: otg.PatternFlowIpv4DontFragmentMetricTag + (*PatternFlowIpv4DontFragment)(nil), // 809: otg.PatternFlowIpv4DontFragment + (*PatternFlowIpv4MoreFragmentsCounter)(nil), // 810: otg.PatternFlowIpv4MoreFragmentsCounter + (*PatternFlowIpv4MoreFragmentsMetricTag)(nil), // 811: otg.PatternFlowIpv4MoreFragmentsMetricTag + (*PatternFlowIpv4MoreFragments)(nil), // 812: otg.PatternFlowIpv4MoreFragments + (*PatternFlowIpv4FragmentOffsetCounter)(nil), // 813: otg.PatternFlowIpv4FragmentOffsetCounter + (*PatternFlowIpv4FragmentOffsetMetricTag)(nil), // 814: otg.PatternFlowIpv4FragmentOffsetMetricTag + (*PatternFlowIpv4FragmentOffset)(nil), // 815: otg.PatternFlowIpv4FragmentOffset + (*PatternFlowIpv4TimeToLiveCounter)(nil), // 816: otg.PatternFlowIpv4TimeToLiveCounter + (*PatternFlowIpv4TimeToLiveMetricTag)(nil), // 817: otg.PatternFlowIpv4TimeToLiveMetricTag + (*PatternFlowIpv4TimeToLive)(nil), // 818: otg.PatternFlowIpv4TimeToLive + (*PatternFlowIpv4ProtocolCounter)(nil), // 819: otg.PatternFlowIpv4ProtocolCounter + (*PatternFlowIpv4ProtocolMetricTag)(nil), // 820: otg.PatternFlowIpv4ProtocolMetricTag + (*PatternFlowIpv4Protocol)(nil), // 821: otg.PatternFlowIpv4Protocol + (*PatternFlowIpv4HeaderChecksum)(nil), // 822: otg.PatternFlowIpv4HeaderChecksum + (*PatternFlowIpv4SrcCounter)(nil), // 823: otg.PatternFlowIpv4SrcCounter + (*PatternFlowIpv4SrcMetricTag)(nil), // 824: otg.PatternFlowIpv4SrcMetricTag + (*PatternFlowIpv4Src)(nil), // 825: otg.PatternFlowIpv4Src + (*PatternFlowIpv4DstCounter)(nil), // 826: otg.PatternFlowIpv4DstCounter + (*PatternFlowIpv4DstMetricTag)(nil), // 827: otg.PatternFlowIpv4DstMetricTag + (*PatternFlowIpv4Dst)(nil), // 828: otg.PatternFlowIpv4Dst + (*PatternFlowIpv4PriorityRawCounter)(nil), // 829: otg.PatternFlowIpv4PriorityRawCounter + (*PatternFlowIpv4PriorityRawMetricTag)(nil), // 830: otg.PatternFlowIpv4PriorityRawMetricTag + (*PatternFlowIpv4PriorityRaw)(nil), // 831: otg.PatternFlowIpv4PriorityRaw + (*PatternFlowIpv4DscpPhbCounter)(nil), // 832: otg.PatternFlowIpv4DscpPhbCounter + (*PatternFlowIpv4DscpPhbMetricTag)(nil), // 833: otg.PatternFlowIpv4DscpPhbMetricTag + (*PatternFlowIpv4DscpPhb)(nil), // 834: otg.PatternFlowIpv4DscpPhb + (*PatternFlowIpv4DscpEcnCounter)(nil), // 835: otg.PatternFlowIpv4DscpEcnCounter + (*PatternFlowIpv4DscpEcnMetricTag)(nil), // 836: otg.PatternFlowIpv4DscpEcnMetricTag + (*PatternFlowIpv4DscpEcn)(nil), // 837: otg.PatternFlowIpv4DscpEcn + (*PatternFlowIpv4TosPrecedenceCounter)(nil), // 838: otg.PatternFlowIpv4TosPrecedenceCounter + (*PatternFlowIpv4TosPrecedenceMetricTag)(nil), // 839: otg.PatternFlowIpv4TosPrecedenceMetricTag + (*PatternFlowIpv4TosPrecedence)(nil), // 840: otg.PatternFlowIpv4TosPrecedence + (*PatternFlowIpv4TosDelayCounter)(nil), // 841: otg.PatternFlowIpv4TosDelayCounter + (*PatternFlowIpv4TosDelayMetricTag)(nil), // 842: otg.PatternFlowIpv4TosDelayMetricTag + (*PatternFlowIpv4TosDelay)(nil), // 843: otg.PatternFlowIpv4TosDelay + (*PatternFlowIpv4TosThroughputCounter)(nil), // 844: otg.PatternFlowIpv4TosThroughputCounter + (*PatternFlowIpv4TosThroughputMetricTag)(nil), // 845: otg.PatternFlowIpv4TosThroughputMetricTag + (*PatternFlowIpv4TosThroughput)(nil), // 846: otg.PatternFlowIpv4TosThroughput + (*PatternFlowIpv4TosReliabilityCounter)(nil), // 847: otg.PatternFlowIpv4TosReliabilityCounter + (*PatternFlowIpv4TosReliabilityMetricTag)(nil), // 848: otg.PatternFlowIpv4TosReliabilityMetricTag + (*PatternFlowIpv4TosReliability)(nil), // 849: otg.PatternFlowIpv4TosReliability + (*PatternFlowIpv4TosMonetaryCounter)(nil), // 850: otg.PatternFlowIpv4TosMonetaryCounter + (*PatternFlowIpv4TosMonetaryMetricTag)(nil), // 851: otg.PatternFlowIpv4TosMonetaryMetricTag + (*PatternFlowIpv4TosMonetary)(nil), // 852: otg.PatternFlowIpv4TosMonetary + (*PatternFlowIpv4TosUnusedCounter)(nil), // 853: otg.PatternFlowIpv4TosUnusedCounter + (*PatternFlowIpv4TosUnusedMetricTag)(nil), // 854: otg.PatternFlowIpv4TosUnusedMetricTag + (*PatternFlowIpv4TosUnused)(nil), // 855: otg.PatternFlowIpv4TosUnused + (*PatternFlowIpv6VersionCounter)(nil), // 856: otg.PatternFlowIpv6VersionCounter + (*PatternFlowIpv6VersionMetricTag)(nil), // 857: otg.PatternFlowIpv6VersionMetricTag + (*PatternFlowIpv6Version)(nil), // 858: otg.PatternFlowIpv6Version + (*PatternFlowIpv6TrafficClassCounter)(nil), // 859: otg.PatternFlowIpv6TrafficClassCounter + (*PatternFlowIpv6TrafficClassMetricTag)(nil), // 860: otg.PatternFlowIpv6TrafficClassMetricTag + (*PatternFlowIpv6TrafficClass)(nil), // 861: otg.PatternFlowIpv6TrafficClass + (*PatternFlowIpv6FlowLabelCounter)(nil), // 862: otg.PatternFlowIpv6FlowLabelCounter + (*PatternFlowIpv6FlowLabelMetricTag)(nil), // 863: otg.PatternFlowIpv6FlowLabelMetricTag + (*PatternFlowIpv6FlowLabel)(nil), // 864: otg.PatternFlowIpv6FlowLabel + (*PatternFlowIpv6PayloadLengthCounter)(nil), // 865: otg.PatternFlowIpv6PayloadLengthCounter + (*PatternFlowIpv6PayloadLengthMetricTag)(nil), // 866: otg.PatternFlowIpv6PayloadLengthMetricTag + (*PatternFlowIpv6PayloadLength)(nil), // 867: otg.PatternFlowIpv6PayloadLength + (*PatternFlowIpv6NextHeaderCounter)(nil), // 868: otg.PatternFlowIpv6NextHeaderCounter + (*PatternFlowIpv6NextHeaderMetricTag)(nil), // 869: otg.PatternFlowIpv6NextHeaderMetricTag + (*PatternFlowIpv6NextHeader)(nil), // 870: otg.PatternFlowIpv6NextHeader + (*PatternFlowIpv6HopLimitCounter)(nil), // 871: otg.PatternFlowIpv6HopLimitCounter + (*PatternFlowIpv6HopLimitMetricTag)(nil), // 872: otg.PatternFlowIpv6HopLimitMetricTag + (*PatternFlowIpv6HopLimit)(nil), // 873: otg.PatternFlowIpv6HopLimit + (*PatternFlowIpv6SrcCounter)(nil), // 874: otg.PatternFlowIpv6SrcCounter + (*PatternFlowIpv6SrcMetricTag)(nil), // 875: otg.PatternFlowIpv6SrcMetricTag + (*PatternFlowIpv6Src)(nil), // 876: otg.PatternFlowIpv6Src + (*PatternFlowIpv6DstCounter)(nil), // 877: otg.PatternFlowIpv6DstCounter + (*PatternFlowIpv6DstMetricTag)(nil), // 878: otg.PatternFlowIpv6DstMetricTag + (*PatternFlowIpv6Dst)(nil), // 879: otg.PatternFlowIpv6Dst + (*PatternFlowPfcPauseDstCounter)(nil), // 880: otg.PatternFlowPfcPauseDstCounter + (*PatternFlowPfcPauseDstMetricTag)(nil), // 881: otg.PatternFlowPfcPauseDstMetricTag + (*PatternFlowPfcPauseDst)(nil), // 882: otg.PatternFlowPfcPauseDst + (*PatternFlowPfcPauseSrcCounter)(nil), // 883: otg.PatternFlowPfcPauseSrcCounter + (*PatternFlowPfcPauseSrcMetricTag)(nil), // 884: otg.PatternFlowPfcPauseSrcMetricTag + (*PatternFlowPfcPauseSrc)(nil), // 885: otg.PatternFlowPfcPauseSrc + (*PatternFlowPfcPauseEtherTypeCounter)(nil), // 886: otg.PatternFlowPfcPauseEtherTypeCounter + (*PatternFlowPfcPauseEtherTypeMetricTag)(nil), // 887: otg.PatternFlowPfcPauseEtherTypeMetricTag + (*PatternFlowPfcPauseEtherType)(nil), // 888: otg.PatternFlowPfcPauseEtherType + (*PatternFlowPfcPauseControlOpCodeCounter)(nil), // 889: otg.PatternFlowPfcPauseControlOpCodeCounter + (*PatternFlowPfcPauseControlOpCodeMetricTag)(nil), // 890: otg.PatternFlowPfcPauseControlOpCodeMetricTag + (*PatternFlowPfcPauseControlOpCode)(nil), // 891: otg.PatternFlowPfcPauseControlOpCode + (*PatternFlowPfcPauseClassEnableVectorCounter)(nil), // 892: otg.PatternFlowPfcPauseClassEnableVectorCounter + (*PatternFlowPfcPauseClassEnableVectorMetricTag)(nil), // 893: otg.PatternFlowPfcPauseClassEnableVectorMetricTag + (*PatternFlowPfcPauseClassEnableVector)(nil), // 894: otg.PatternFlowPfcPauseClassEnableVector + (*PatternFlowPfcPausePauseClass0Counter)(nil), // 895: otg.PatternFlowPfcPausePauseClass0Counter + (*PatternFlowPfcPausePauseClass0MetricTag)(nil), // 896: otg.PatternFlowPfcPausePauseClass0MetricTag + (*PatternFlowPfcPausePauseClass0)(nil), // 897: otg.PatternFlowPfcPausePauseClass0 + (*PatternFlowPfcPausePauseClass1Counter)(nil), // 898: otg.PatternFlowPfcPausePauseClass1Counter + (*PatternFlowPfcPausePauseClass1MetricTag)(nil), // 899: otg.PatternFlowPfcPausePauseClass1MetricTag + (*PatternFlowPfcPausePauseClass1)(nil), // 900: otg.PatternFlowPfcPausePauseClass1 + (*PatternFlowPfcPausePauseClass2Counter)(nil), // 901: otg.PatternFlowPfcPausePauseClass2Counter + (*PatternFlowPfcPausePauseClass2MetricTag)(nil), // 902: otg.PatternFlowPfcPausePauseClass2MetricTag + (*PatternFlowPfcPausePauseClass2)(nil), // 903: otg.PatternFlowPfcPausePauseClass2 + (*PatternFlowPfcPausePauseClass3Counter)(nil), // 904: otg.PatternFlowPfcPausePauseClass3Counter + (*PatternFlowPfcPausePauseClass3MetricTag)(nil), // 905: otg.PatternFlowPfcPausePauseClass3MetricTag + (*PatternFlowPfcPausePauseClass3)(nil), // 906: otg.PatternFlowPfcPausePauseClass3 + (*PatternFlowPfcPausePauseClass4Counter)(nil), // 907: otg.PatternFlowPfcPausePauseClass4Counter + (*PatternFlowPfcPausePauseClass4MetricTag)(nil), // 908: otg.PatternFlowPfcPausePauseClass4MetricTag + (*PatternFlowPfcPausePauseClass4)(nil), // 909: otg.PatternFlowPfcPausePauseClass4 + (*PatternFlowPfcPausePauseClass5Counter)(nil), // 910: otg.PatternFlowPfcPausePauseClass5Counter + (*PatternFlowPfcPausePauseClass5MetricTag)(nil), // 911: otg.PatternFlowPfcPausePauseClass5MetricTag + (*PatternFlowPfcPausePauseClass5)(nil), // 912: otg.PatternFlowPfcPausePauseClass5 + (*PatternFlowPfcPausePauseClass6Counter)(nil), // 913: otg.PatternFlowPfcPausePauseClass6Counter + (*PatternFlowPfcPausePauseClass6MetricTag)(nil), // 914: otg.PatternFlowPfcPausePauseClass6MetricTag + (*PatternFlowPfcPausePauseClass6)(nil), // 915: otg.PatternFlowPfcPausePauseClass6 + (*PatternFlowPfcPausePauseClass7Counter)(nil), // 916: otg.PatternFlowPfcPausePauseClass7Counter + (*PatternFlowPfcPausePauseClass7MetricTag)(nil), // 917: otg.PatternFlowPfcPausePauseClass7MetricTag + (*PatternFlowPfcPausePauseClass7)(nil), // 918: otg.PatternFlowPfcPausePauseClass7 + (*PatternFlowEthernetPauseDstCounter)(nil), // 919: otg.PatternFlowEthernetPauseDstCounter + (*PatternFlowEthernetPauseDstMetricTag)(nil), // 920: otg.PatternFlowEthernetPauseDstMetricTag + (*PatternFlowEthernetPauseDst)(nil), // 921: otg.PatternFlowEthernetPauseDst + (*PatternFlowEthernetPauseSrcCounter)(nil), // 922: otg.PatternFlowEthernetPauseSrcCounter + (*PatternFlowEthernetPauseSrcMetricTag)(nil), // 923: otg.PatternFlowEthernetPauseSrcMetricTag + (*PatternFlowEthernetPauseSrc)(nil), // 924: otg.PatternFlowEthernetPauseSrc + (*PatternFlowEthernetPauseEtherTypeCounter)(nil), // 925: otg.PatternFlowEthernetPauseEtherTypeCounter + (*PatternFlowEthernetPauseEtherTypeMetricTag)(nil), // 926: otg.PatternFlowEthernetPauseEtherTypeMetricTag + (*PatternFlowEthernetPauseEtherType)(nil), // 927: otg.PatternFlowEthernetPauseEtherType + (*PatternFlowEthernetPauseControlOpCodeCounter)(nil), // 928: otg.PatternFlowEthernetPauseControlOpCodeCounter + (*PatternFlowEthernetPauseControlOpCodeMetricTag)(nil), // 929: otg.PatternFlowEthernetPauseControlOpCodeMetricTag + (*PatternFlowEthernetPauseControlOpCode)(nil), // 930: otg.PatternFlowEthernetPauseControlOpCode + (*PatternFlowEthernetPauseTimeCounter)(nil), // 931: otg.PatternFlowEthernetPauseTimeCounter + (*PatternFlowEthernetPauseTimeMetricTag)(nil), // 932: otg.PatternFlowEthernetPauseTimeMetricTag + (*PatternFlowEthernetPauseTime)(nil), // 933: otg.PatternFlowEthernetPauseTime + (*PatternFlowTcpSrcPortCounter)(nil), // 934: otg.PatternFlowTcpSrcPortCounter + (*PatternFlowTcpSrcPortMetricTag)(nil), // 935: otg.PatternFlowTcpSrcPortMetricTag + (*PatternFlowTcpSrcPort)(nil), // 936: otg.PatternFlowTcpSrcPort + (*PatternFlowTcpDstPortCounter)(nil), // 937: otg.PatternFlowTcpDstPortCounter + (*PatternFlowTcpDstPortMetricTag)(nil), // 938: otg.PatternFlowTcpDstPortMetricTag + (*PatternFlowTcpDstPort)(nil), // 939: otg.PatternFlowTcpDstPort + (*PatternFlowTcpSeqNumCounter)(nil), // 940: otg.PatternFlowTcpSeqNumCounter + (*PatternFlowTcpSeqNumMetricTag)(nil), // 941: otg.PatternFlowTcpSeqNumMetricTag + (*PatternFlowTcpSeqNum)(nil), // 942: otg.PatternFlowTcpSeqNum + (*PatternFlowTcpAckNumCounter)(nil), // 943: otg.PatternFlowTcpAckNumCounter + (*PatternFlowTcpAckNumMetricTag)(nil), // 944: otg.PatternFlowTcpAckNumMetricTag + (*PatternFlowTcpAckNum)(nil), // 945: otg.PatternFlowTcpAckNum + (*PatternFlowTcpDataOffsetCounter)(nil), // 946: otg.PatternFlowTcpDataOffsetCounter + (*PatternFlowTcpDataOffsetMetricTag)(nil), // 947: otg.PatternFlowTcpDataOffsetMetricTag + (*PatternFlowTcpDataOffset)(nil), // 948: otg.PatternFlowTcpDataOffset + (*PatternFlowTcpEcnNsCounter)(nil), // 949: otg.PatternFlowTcpEcnNsCounter + (*PatternFlowTcpEcnNsMetricTag)(nil), // 950: otg.PatternFlowTcpEcnNsMetricTag + (*PatternFlowTcpEcnNs)(nil), // 951: otg.PatternFlowTcpEcnNs + (*PatternFlowTcpEcnCwrCounter)(nil), // 952: otg.PatternFlowTcpEcnCwrCounter + (*PatternFlowTcpEcnCwrMetricTag)(nil), // 953: otg.PatternFlowTcpEcnCwrMetricTag + (*PatternFlowTcpEcnCwr)(nil), // 954: otg.PatternFlowTcpEcnCwr + (*PatternFlowTcpEcnEchoCounter)(nil), // 955: otg.PatternFlowTcpEcnEchoCounter + (*PatternFlowTcpEcnEchoMetricTag)(nil), // 956: otg.PatternFlowTcpEcnEchoMetricTag + (*PatternFlowTcpEcnEcho)(nil), // 957: otg.PatternFlowTcpEcnEcho + (*PatternFlowTcpCtlUrgCounter)(nil), // 958: otg.PatternFlowTcpCtlUrgCounter + (*PatternFlowTcpCtlUrgMetricTag)(nil), // 959: otg.PatternFlowTcpCtlUrgMetricTag + (*PatternFlowTcpCtlUrg)(nil), // 960: otg.PatternFlowTcpCtlUrg + (*PatternFlowTcpCtlAckCounter)(nil), // 961: otg.PatternFlowTcpCtlAckCounter + (*PatternFlowTcpCtlAckMetricTag)(nil), // 962: otg.PatternFlowTcpCtlAckMetricTag + (*PatternFlowTcpCtlAck)(nil), // 963: otg.PatternFlowTcpCtlAck + (*PatternFlowTcpCtlPshCounter)(nil), // 964: otg.PatternFlowTcpCtlPshCounter + (*PatternFlowTcpCtlPshMetricTag)(nil), // 965: otg.PatternFlowTcpCtlPshMetricTag + (*PatternFlowTcpCtlPsh)(nil), // 966: otg.PatternFlowTcpCtlPsh + (*PatternFlowTcpCtlRstCounter)(nil), // 967: otg.PatternFlowTcpCtlRstCounter + (*PatternFlowTcpCtlRstMetricTag)(nil), // 968: otg.PatternFlowTcpCtlRstMetricTag + (*PatternFlowTcpCtlRst)(nil), // 969: otg.PatternFlowTcpCtlRst + (*PatternFlowTcpCtlSynCounter)(nil), // 970: otg.PatternFlowTcpCtlSynCounter + (*PatternFlowTcpCtlSynMetricTag)(nil), // 971: otg.PatternFlowTcpCtlSynMetricTag + (*PatternFlowTcpCtlSyn)(nil), // 972: otg.PatternFlowTcpCtlSyn + (*PatternFlowTcpCtlFinCounter)(nil), // 973: otg.PatternFlowTcpCtlFinCounter + (*PatternFlowTcpCtlFinMetricTag)(nil), // 974: otg.PatternFlowTcpCtlFinMetricTag + (*PatternFlowTcpCtlFin)(nil), // 975: otg.PatternFlowTcpCtlFin + (*PatternFlowTcpWindowCounter)(nil), // 976: otg.PatternFlowTcpWindowCounter + (*PatternFlowTcpWindowMetricTag)(nil), // 977: otg.PatternFlowTcpWindowMetricTag + (*PatternFlowTcpWindow)(nil), // 978: otg.PatternFlowTcpWindow + (*PatternFlowUdpSrcPortCounter)(nil), // 979: otg.PatternFlowUdpSrcPortCounter + (*PatternFlowUdpSrcPortMetricTag)(nil), // 980: otg.PatternFlowUdpSrcPortMetricTag + (*PatternFlowUdpSrcPort)(nil), // 981: otg.PatternFlowUdpSrcPort + (*PatternFlowUdpDstPortCounter)(nil), // 982: otg.PatternFlowUdpDstPortCounter + (*PatternFlowUdpDstPortMetricTag)(nil), // 983: otg.PatternFlowUdpDstPortMetricTag + (*PatternFlowUdpDstPort)(nil), // 984: otg.PatternFlowUdpDstPort + (*PatternFlowUdpLengthCounter)(nil), // 985: otg.PatternFlowUdpLengthCounter + (*PatternFlowUdpLengthMetricTag)(nil), // 986: otg.PatternFlowUdpLengthMetricTag + (*PatternFlowUdpLength)(nil), // 987: otg.PatternFlowUdpLength + (*PatternFlowUdpChecksum)(nil), // 988: otg.PatternFlowUdpChecksum + (*PatternFlowGreChecksumPresentCounter)(nil), // 989: otg.PatternFlowGreChecksumPresentCounter + (*PatternFlowGreChecksumPresentMetricTag)(nil), // 990: otg.PatternFlowGreChecksumPresentMetricTag + (*PatternFlowGreChecksumPresent)(nil), // 991: otg.PatternFlowGreChecksumPresent + (*PatternFlowGreReserved0Counter)(nil), // 992: otg.PatternFlowGreReserved0Counter + (*PatternFlowGreReserved0MetricTag)(nil), // 993: otg.PatternFlowGreReserved0MetricTag + (*PatternFlowGreReserved0)(nil), // 994: otg.PatternFlowGreReserved0 + (*PatternFlowGreVersionCounter)(nil), // 995: otg.PatternFlowGreVersionCounter + (*PatternFlowGreVersionMetricTag)(nil), // 996: otg.PatternFlowGreVersionMetricTag + (*PatternFlowGreVersion)(nil), // 997: otg.PatternFlowGreVersion + (*PatternFlowGreProtocolCounter)(nil), // 998: otg.PatternFlowGreProtocolCounter + (*PatternFlowGreProtocolMetricTag)(nil), // 999: otg.PatternFlowGreProtocolMetricTag + (*PatternFlowGreProtocol)(nil), // 1000: otg.PatternFlowGreProtocol + (*PatternFlowGreChecksum)(nil), // 1001: otg.PatternFlowGreChecksum + (*PatternFlowGreReserved1Counter)(nil), // 1002: otg.PatternFlowGreReserved1Counter + (*PatternFlowGreReserved1MetricTag)(nil), // 1003: otg.PatternFlowGreReserved1MetricTag + (*PatternFlowGreReserved1)(nil), // 1004: otg.PatternFlowGreReserved1 + (*PatternFlowGtpv1VersionCounter)(nil), // 1005: otg.PatternFlowGtpv1VersionCounter + (*PatternFlowGtpv1VersionMetricTag)(nil), // 1006: otg.PatternFlowGtpv1VersionMetricTag + (*PatternFlowGtpv1Version)(nil), // 1007: otg.PatternFlowGtpv1Version + (*PatternFlowGtpv1ProtocolTypeCounter)(nil), // 1008: otg.PatternFlowGtpv1ProtocolTypeCounter + (*PatternFlowGtpv1ProtocolTypeMetricTag)(nil), // 1009: otg.PatternFlowGtpv1ProtocolTypeMetricTag + (*PatternFlowGtpv1ProtocolType)(nil), // 1010: otg.PatternFlowGtpv1ProtocolType + (*PatternFlowGtpv1ReservedCounter)(nil), // 1011: otg.PatternFlowGtpv1ReservedCounter + (*PatternFlowGtpv1ReservedMetricTag)(nil), // 1012: otg.PatternFlowGtpv1ReservedMetricTag + (*PatternFlowGtpv1Reserved)(nil), // 1013: otg.PatternFlowGtpv1Reserved + (*PatternFlowGtpv1EFlagCounter)(nil), // 1014: otg.PatternFlowGtpv1EFlagCounter + (*PatternFlowGtpv1EFlagMetricTag)(nil), // 1015: otg.PatternFlowGtpv1EFlagMetricTag + (*PatternFlowGtpv1EFlag)(nil), // 1016: otg.PatternFlowGtpv1EFlag + (*PatternFlowGtpv1SFlagCounter)(nil), // 1017: otg.PatternFlowGtpv1SFlagCounter + (*PatternFlowGtpv1SFlagMetricTag)(nil), // 1018: otg.PatternFlowGtpv1SFlagMetricTag + (*PatternFlowGtpv1SFlag)(nil), // 1019: otg.PatternFlowGtpv1SFlag + (*PatternFlowGtpv1PnFlagCounter)(nil), // 1020: otg.PatternFlowGtpv1PnFlagCounter + (*PatternFlowGtpv1PnFlagMetricTag)(nil), // 1021: otg.PatternFlowGtpv1PnFlagMetricTag + (*PatternFlowGtpv1PnFlag)(nil), // 1022: otg.PatternFlowGtpv1PnFlag + (*PatternFlowGtpv1MessageTypeCounter)(nil), // 1023: otg.PatternFlowGtpv1MessageTypeCounter + (*PatternFlowGtpv1MessageTypeMetricTag)(nil), // 1024: otg.PatternFlowGtpv1MessageTypeMetricTag + (*PatternFlowGtpv1MessageType)(nil), // 1025: otg.PatternFlowGtpv1MessageType + (*PatternFlowGtpv1MessageLengthCounter)(nil), // 1026: otg.PatternFlowGtpv1MessageLengthCounter + (*PatternFlowGtpv1MessageLengthMetricTag)(nil), // 1027: otg.PatternFlowGtpv1MessageLengthMetricTag + (*PatternFlowGtpv1MessageLength)(nil), // 1028: otg.PatternFlowGtpv1MessageLength + (*PatternFlowGtpv1TeidCounter)(nil), // 1029: otg.PatternFlowGtpv1TeidCounter + (*PatternFlowGtpv1TeidMetricTag)(nil), // 1030: otg.PatternFlowGtpv1TeidMetricTag + (*PatternFlowGtpv1Teid)(nil), // 1031: otg.PatternFlowGtpv1Teid + (*PatternFlowGtpv1SquenceNumberCounter)(nil), // 1032: otg.PatternFlowGtpv1SquenceNumberCounter + (*PatternFlowGtpv1SquenceNumberMetricTag)(nil), // 1033: otg.PatternFlowGtpv1SquenceNumberMetricTag + (*PatternFlowGtpv1SquenceNumber)(nil), // 1034: otg.PatternFlowGtpv1SquenceNumber + (*PatternFlowGtpv1NPduNumberCounter)(nil), // 1035: otg.PatternFlowGtpv1NPduNumberCounter + (*PatternFlowGtpv1NPduNumberMetricTag)(nil), // 1036: otg.PatternFlowGtpv1NPduNumberMetricTag + (*PatternFlowGtpv1NPduNumber)(nil), // 1037: otg.PatternFlowGtpv1NPduNumber + (*PatternFlowGtpv1NextExtensionHeaderTypeCounter)(nil), // 1038: otg.PatternFlowGtpv1NextExtensionHeaderTypeCounter + (*PatternFlowGtpv1NextExtensionHeaderTypeMetricTag)(nil), // 1039: otg.PatternFlowGtpv1NextExtensionHeaderTypeMetricTag + (*PatternFlowGtpv1NextExtensionHeaderType)(nil), // 1040: otg.PatternFlowGtpv1NextExtensionHeaderType + (*PatternFlowGtpExtensionExtensionLengthCounter)(nil), // 1041: otg.PatternFlowGtpExtensionExtensionLengthCounter + (*PatternFlowGtpExtensionExtensionLengthMetricTag)(nil), // 1042: otg.PatternFlowGtpExtensionExtensionLengthMetricTag + (*PatternFlowGtpExtensionExtensionLength)(nil), // 1043: otg.PatternFlowGtpExtensionExtensionLength + (*PatternFlowGtpExtensionContentsCounter)(nil), // 1044: otg.PatternFlowGtpExtensionContentsCounter + (*PatternFlowGtpExtensionContentsMetricTag)(nil), // 1045: otg.PatternFlowGtpExtensionContentsMetricTag + (*PatternFlowGtpExtensionContents)(nil), // 1046: otg.PatternFlowGtpExtensionContents + (*PatternFlowGtpExtensionNextExtensionHeaderCounter)(nil), // 1047: otg.PatternFlowGtpExtensionNextExtensionHeaderCounter + (*PatternFlowGtpExtensionNextExtensionHeaderMetricTag)(nil), // 1048: otg.PatternFlowGtpExtensionNextExtensionHeaderMetricTag + (*PatternFlowGtpExtensionNextExtensionHeader)(nil), // 1049: otg.PatternFlowGtpExtensionNextExtensionHeader + (*PatternFlowGtpv2VersionCounter)(nil), // 1050: otg.PatternFlowGtpv2VersionCounter + (*PatternFlowGtpv2VersionMetricTag)(nil), // 1051: otg.PatternFlowGtpv2VersionMetricTag + (*PatternFlowGtpv2Version)(nil), // 1052: otg.PatternFlowGtpv2Version + (*PatternFlowGtpv2PiggybackingFlagCounter)(nil), // 1053: otg.PatternFlowGtpv2PiggybackingFlagCounter + (*PatternFlowGtpv2PiggybackingFlagMetricTag)(nil), // 1054: otg.PatternFlowGtpv2PiggybackingFlagMetricTag + (*PatternFlowGtpv2PiggybackingFlag)(nil), // 1055: otg.PatternFlowGtpv2PiggybackingFlag + (*PatternFlowGtpv2TeidFlagCounter)(nil), // 1056: otg.PatternFlowGtpv2TeidFlagCounter + (*PatternFlowGtpv2TeidFlagMetricTag)(nil), // 1057: otg.PatternFlowGtpv2TeidFlagMetricTag + (*PatternFlowGtpv2TeidFlag)(nil), // 1058: otg.PatternFlowGtpv2TeidFlag + (*PatternFlowGtpv2Spare1Counter)(nil), // 1059: otg.PatternFlowGtpv2Spare1Counter + (*PatternFlowGtpv2Spare1MetricTag)(nil), // 1060: otg.PatternFlowGtpv2Spare1MetricTag + (*PatternFlowGtpv2Spare1)(nil), // 1061: otg.PatternFlowGtpv2Spare1 + (*PatternFlowGtpv2MessageTypeCounter)(nil), // 1062: otg.PatternFlowGtpv2MessageTypeCounter + (*PatternFlowGtpv2MessageTypeMetricTag)(nil), // 1063: otg.PatternFlowGtpv2MessageTypeMetricTag + (*PatternFlowGtpv2MessageType)(nil), // 1064: otg.PatternFlowGtpv2MessageType + (*PatternFlowGtpv2MessageLengthCounter)(nil), // 1065: otg.PatternFlowGtpv2MessageLengthCounter + (*PatternFlowGtpv2MessageLengthMetricTag)(nil), // 1066: otg.PatternFlowGtpv2MessageLengthMetricTag + (*PatternFlowGtpv2MessageLength)(nil), // 1067: otg.PatternFlowGtpv2MessageLength + (*PatternFlowGtpv2TeidCounter)(nil), // 1068: otg.PatternFlowGtpv2TeidCounter + (*PatternFlowGtpv2TeidMetricTag)(nil), // 1069: otg.PatternFlowGtpv2TeidMetricTag + (*PatternFlowGtpv2Teid)(nil), // 1070: otg.PatternFlowGtpv2Teid + (*PatternFlowGtpv2SequenceNumberCounter)(nil), // 1071: otg.PatternFlowGtpv2SequenceNumberCounter + (*PatternFlowGtpv2SequenceNumberMetricTag)(nil), // 1072: otg.PatternFlowGtpv2SequenceNumberMetricTag + (*PatternFlowGtpv2SequenceNumber)(nil), // 1073: otg.PatternFlowGtpv2SequenceNumber + (*PatternFlowGtpv2Spare2Counter)(nil), // 1074: otg.PatternFlowGtpv2Spare2Counter + (*PatternFlowGtpv2Spare2MetricTag)(nil), // 1075: otg.PatternFlowGtpv2Spare2MetricTag + (*PatternFlowGtpv2Spare2)(nil), // 1076: otg.PatternFlowGtpv2Spare2 + (*PatternFlowArpHardwareTypeCounter)(nil), // 1077: otg.PatternFlowArpHardwareTypeCounter + (*PatternFlowArpHardwareTypeMetricTag)(nil), // 1078: otg.PatternFlowArpHardwareTypeMetricTag + (*PatternFlowArpHardwareType)(nil), // 1079: otg.PatternFlowArpHardwareType + (*PatternFlowArpProtocolTypeCounter)(nil), // 1080: otg.PatternFlowArpProtocolTypeCounter + (*PatternFlowArpProtocolTypeMetricTag)(nil), // 1081: otg.PatternFlowArpProtocolTypeMetricTag + (*PatternFlowArpProtocolType)(nil), // 1082: otg.PatternFlowArpProtocolType + (*PatternFlowArpHardwareLengthCounter)(nil), // 1083: otg.PatternFlowArpHardwareLengthCounter + (*PatternFlowArpHardwareLengthMetricTag)(nil), // 1084: otg.PatternFlowArpHardwareLengthMetricTag + (*PatternFlowArpHardwareLength)(nil), // 1085: otg.PatternFlowArpHardwareLength + (*PatternFlowArpProtocolLengthCounter)(nil), // 1086: otg.PatternFlowArpProtocolLengthCounter + (*PatternFlowArpProtocolLengthMetricTag)(nil), // 1087: otg.PatternFlowArpProtocolLengthMetricTag + (*PatternFlowArpProtocolLength)(nil), // 1088: otg.PatternFlowArpProtocolLength + (*PatternFlowArpOperationCounter)(nil), // 1089: otg.PatternFlowArpOperationCounter + (*PatternFlowArpOperationMetricTag)(nil), // 1090: otg.PatternFlowArpOperationMetricTag + (*PatternFlowArpOperation)(nil), // 1091: otg.PatternFlowArpOperation + (*PatternFlowArpSenderHardwareAddrCounter)(nil), // 1092: otg.PatternFlowArpSenderHardwareAddrCounter + (*PatternFlowArpSenderHardwareAddrMetricTag)(nil), // 1093: otg.PatternFlowArpSenderHardwareAddrMetricTag + (*PatternFlowArpSenderHardwareAddr)(nil), // 1094: otg.PatternFlowArpSenderHardwareAddr + (*PatternFlowArpSenderProtocolAddrCounter)(nil), // 1095: otg.PatternFlowArpSenderProtocolAddrCounter + (*PatternFlowArpSenderProtocolAddrMetricTag)(nil), // 1096: otg.PatternFlowArpSenderProtocolAddrMetricTag + (*PatternFlowArpSenderProtocolAddr)(nil), // 1097: otg.PatternFlowArpSenderProtocolAddr + (*PatternFlowArpTargetHardwareAddrCounter)(nil), // 1098: otg.PatternFlowArpTargetHardwareAddrCounter + (*PatternFlowArpTargetHardwareAddrMetricTag)(nil), // 1099: otg.PatternFlowArpTargetHardwareAddrMetricTag + (*PatternFlowArpTargetHardwareAddr)(nil), // 1100: otg.PatternFlowArpTargetHardwareAddr + (*PatternFlowArpTargetProtocolAddrCounter)(nil), // 1101: otg.PatternFlowArpTargetProtocolAddrCounter + (*PatternFlowArpTargetProtocolAddrMetricTag)(nil), // 1102: otg.PatternFlowArpTargetProtocolAddrMetricTag + (*PatternFlowArpTargetProtocolAddr)(nil), // 1103: otg.PatternFlowArpTargetProtocolAddr + (*PatternFlowIcmpEchoTypeCounter)(nil), // 1104: otg.PatternFlowIcmpEchoTypeCounter + (*PatternFlowIcmpEchoTypeMetricTag)(nil), // 1105: otg.PatternFlowIcmpEchoTypeMetricTag + (*PatternFlowIcmpEchoType)(nil), // 1106: otg.PatternFlowIcmpEchoType + (*PatternFlowIcmpEchoCodeCounter)(nil), // 1107: otg.PatternFlowIcmpEchoCodeCounter + (*PatternFlowIcmpEchoCodeMetricTag)(nil), // 1108: otg.PatternFlowIcmpEchoCodeMetricTag + (*PatternFlowIcmpEchoCode)(nil), // 1109: otg.PatternFlowIcmpEchoCode + (*PatternFlowIcmpEchoChecksum)(nil), // 1110: otg.PatternFlowIcmpEchoChecksum + (*PatternFlowIcmpEchoIdentifierCounter)(nil), // 1111: otg.PatternFlowIcmpEchoIdentifierCounter + (*PatternFlowIcmpEchoIdentifierMetricTag)(nil), // 1112: otg.PatternFlowIcmpEchoIdentifierMetricTag + (*PatternFlowIcmpEchoIdentifier)(nil), // 1113: otg.PatternFlowIcmpEchoIdentifier + (*PatternFlowIcmpEchoSequenceNumberCounter)(nil), // 1114: otg.PatternFlowIcmpEchoSequenceNumberCounter + (*PatternFlowIcmpEchoSequenceNumberMetricTag)(nil), // 1115: otg.PatternFlowIcmpEchoSequenceNumberMetricTag + (*PatternFlowIcmpEchoSequenceNumber)(nil), // 1116: otg.PatternFlowIcmpEchoSequenceNumber + (*PatternFlowIcmpCommonChecksum)(nil), // 1117: otg.PatternFlowIcmpCommonChecksum + (*PatternFlowIcmpNextFieldsIdentifierCounter)(nil), // 1118: otg.PatternFlowIcmpNextFieldsIdentifierCounter + (*PatternFlowIcmpNextFieldsIdentifierMetricTag)(nil), // 1119: otg.PatternFlowIcmpNextFieldsIdentifierMetricTag + (*PatternFlowIcmpNextFieldsIdentifier)(nil), // 1120: otg.PatternFlowIcmpNextFieldsIdentifier + (*PatternFlowIcmpNextFieldsSequenceNumberCounter)(nil), // 1121: otg.PatternFlowIcmpNextFieldsSequenceNumberCounter + (*PatternFlowIcmpNextFieldsSequenceNumberMetricTag)(nil), // 1122: otg.PatternFlowIcmpNextFieldsSequenceNumberMetricTag + (*PatternFlowIcmpNextFieldsSequenceNumber)(nil), // 1123: otg.PatternFlowIcmpNextFieldsSequenceNumber + (*PatternFlowIcmpv6EchoTypeCounter)(nil), // 1124: otg.PatternFlowIcmpv6EchoTypeCounter + (*PatternFlowIcmpv6EchoTypeMetricTag)(nil), // 1125: otg.PatternFlowIcmpv6EchoTypeMetricTag + (*PatternFlowIcmpv6EchoType)(nil), // 1126: otg.PatternFlowIcmpv6EchoType + (*PatternFlowIcmpv6EchoCodeCounter)(nil), // 1127: otg.PatternFlowIcmpv6EchoCodeCounter + (*PatternFlowIcmpv6EchoCodeMetricTag)(nil), // 1128: otg.PatternFlowIcmpv6EchoCodeMetricTag + (*PatternFlowIcmpv6EchoCode)(nil), // 1129: otg.PatternFlowIcmpv6EchoCode + (*PatternFlowIcmpv6EchoIdentifierCounter)(nil), // 1130: otg.PatternFlowIcmpv6EchoIdentifierCounter + (*PatternFlowIcmpv6EchoIdentifierMetricTag)(nil), // 1131: otg.PatternFlowIcmpv6EchoIdentifierMetricTag + (*PatternFlowIcmpv6EchoIdentifier)(nil), // 1132: otg.PatternFlowIcmpv6EchoIdentifier + (*PatternFlowIcmpv6EchoSequenceNumberCounter)(nil), // 1133: otg.PatternFlowIcmpv6EchoSequenceNumberCounter + (*PatternFlowIcmpv6EchoSequenceNumberMetricTag)(nil), // 1134: otg.PatternFlowIcmpv6EchoSequenceNumberMetricTag + (*PatternFlowIcmpv6EchoSequenceNumber)(nil), // 1135: otg.PatternFlowIcmpv6EchoSequenceNumber + (*PatternFlowIcmpv6EchoChecksum)(nil), // 1136: otg.PatternFlowIcmpv6EchoChecksum + (*PatternFlowIcmpv6CommonChecksum)(nil), // 1137: otg.PatternFlowIcmpv6CommonChecksum + (*PatternFlowPppAddressCounter)(nil), // 1138: otg.PatternFlowPppAddressCounter + (*PatternFlowPppAddressMetricTag)(nil), // 1139: otg.PatternFlowPppAddressMetricTag + (*PatternFlowPppAddress)(nil), // 1140: otg.PatternFlowPppAddress + (*PatternFlowPppControlCounter)(nil), // 1141: otg.PatternFlowPppControlCounter + (*PatternFlowPppControlMetricTag)(nil), // 1142: otg.PatternFlowPppControlMetricTag + (*PatternFlowPppControl)(nil), // 1143: otg.PatternFlowPppControl + (*PatternFlowPppProtocolTypeCounter)(nil), // 1144: otg.PatternFlowPppProtocolTypeCounter + (*PatternFlowPppProtocolTypeMetricTag)(nil), // 1145: otg.PatternFlowPppProtocolTypeMetricTag + (*PatternFlowPppProtocolType)(nil), // 1146: otg.PatternFlowPppProtocolType + (*PatternFlowIgmpv1VersionCounter)(nil), // 1147: otg.PatternFlowIgmpv1VersionCounter + (*PatternFlowIgmpv1VersionMetricTag)(nil), // 1148: otg.PatternFlowIgmpv1VersionMetricTag + (*PatternFlowIgmpv1Version)(nil), // 1149: otg.PatternFlowIgmpv1Version + (*PatternFlowIgmpv1TypeCounter)(nil), // 1150: otg.PatternFlowIgmpv1TypeCounter + (*PatternFlowIgmpv1TypeMetricTag)(nil), // 1151: otg.PatternFlowIgmpv1TypeMetricTag + (*PatternFlowIgmpv1Type)(nil), // 1152: otg.PatternFlowIgmpv1Type + (*PatternFlowIgmpv1UnusedCounter)(nil), // 1153: otg.PatternFlowIgmpv1UnusedCounter + (*PatternFlowIgmpv1UnusedMetricTag)(nil), // 1154: otg.PatternFlowIgmpv1UnusedMetricTag + (*PatternFlowIgmpv1Unused)(nil), // 1155: otg.PatternFlowIgmpv1Unused + (*PatternFlowIgmpv1Checksum)(nil), // 1156: otg.PatternFlowIgmpv1Checksum + (*PatternFlowIgmpv1GroupAddressCounter)(nil), // 1157: otg.PatternFlowIgmpv1GroupAddressCounter + (*PatternFlowIgmpv1GroupAddressMetricTag)(nil), // 1158: otg.PatternFlowIgmpv1GroupAddressMetricTag + (*PatternFlowIgmpv1GroupAddress)(nil), // 1159: otg.PatternFlowIgmpv1GroupAddress + (*PatternFlowMplsLabelCounter)(nil), // 1160: otg.PatternFlowMplsLabelCounter + (*PatternFlowMplsLabelMetricTag)(nil), // 1161: otg.PatternFlowMplsLabelMetricTag + (*PatternFlowMplsLabel)(nil), // 1162: otg.PatternFlowMplsLabel + (*PatternFlowMplsTrafficClassCounter)(nil), // 1163: otg.PatternFlowMplsTrafficClassCounter + (*PatternFlowMplsTrafficClassMetricTag)(nil), // 1164: otg.PatternFlowMplsTrafficClassMetricTag + (*PatternFlowMplsTrafficClass)(nil), // 1165: otg.PatternFlowMplsTrafficClass + (*PatternFlowMplsBottomOfStackCounter)(nil), // 1166: otg.PatternFlowMplsBottomOfStackCounter + (*PatternFlowMplsBottomOfStackMetricTag)(nil), // 1167: otg.PatternFlowMplsBottomOfStackMetricTag + (*PatternFlowMplsBottomOfStack)(nil), // 1168: otg.PatternFlowMplsBottomOfStack + (*PatternFlowMplsTimeToLiveCounter)(nil), // 1169: otg.PatternFlowMplsTimeToLiveCounter + (*PatternFlowMplsTimeToLiveMetricTag)(nil), // 1170: otg.PatternFlowMplsTimeToLiveMetricTag + (*PatternFlowMplsTimeToLive)(nil), // 1171: otg.PatternFlowMplsTimeToLive + (*PatternFlowRsvpVersionCounter)(nil), // 1172: otg.PatternFlowRsvpVersionCounter + (*PatternFlowRsvpVersion)(nil), // 1173: otg.PatternFlowRsvpVersion + (*PatternFlowRsvpRsvpChecksum)(nil), // 1174: otg.PatternFlowRsvpRsvpChecksum + (*PatternFlowRsvpTimeToLiveCounter)(nil), // 1175: otg.PatternFlowRsvpTimeToLiveCounter + (*PatternFlowRsvpTimeToLive)(nil), // 1176: otg.PatternFlowRsvpTimeToLive + (*PatternFlowRsvpReservedCounter)(nil), // 1177: otg.PatternFlowRsvpReservedCounter + (*PatternFlowRsvpReserved)(nil), // 1178: otg.PatternFlowRsvpReserved + (*PatternFlowRSVPPathSessionLspTunnelIpv4Ipv4TunnelEndPointAddressCounter)(nil), // 1179: otg.PatternFlowRSVPPathSessionLspTunnelIpv4Ipv4TunnelEndPointAddressCounter + (*PatternFlowRSVPPathSessionLspTunnelIpv4Ipv4TunnelEndPointAddress)(nil), // 1180: otg.PatternFlowRSVPPathSessionLspTunnelIpv4Ipv4TunnelEndPointAddress + (*PatternFlowRSVPPathSessionLspTunnelIpv4ReservedCounter)(nil), // 1181: otg.PatternFlowRSVPPathSessionLspTunnelIpv4ReservedCounter + (*PatternFlowRSVPPathSessionLspTunnelIpv4Reserved)(nil), // 1182: otg.PatternFlowRSVPPathSessionLspTunnelIpv4Reserved + (*PatternFlowRSVPPathSessionLspTunnelIpv4TunnelIdCounter)(nil), // 1183: otg.PatternFlowRSVPPathSessionLspTunnelIpv4TunnelIdCounter + (*PatternFlowRSVPPathSessionLspTunnelIpv4TunnelId)(nil), // 1184: otg.PatternFlowRSVPPathSessionLspTunnelIpv4TunnelId + (*PatternFlowRSVPPathSessionLspTunnelIpv4ExtendedTunnelIdCounter)(nil), // 1185: otg.PatternFlowRSVPPathSessionLspTunnelIpv4ExtendedTunnelIdCounter + (*PatternFlowRSVPPathSessionLspTunnelIpv4ExtendedTunnelId)(nil), // 1186: otg.PatternFlowRSVPPathSessionLspTunnelIpv4ExtendedTunnelId + (*PatternFlowRSVPPathRsvpHopIpv4Ipv4NextPreviousHopAddressCounter)(nil), // 1187: otg.PatternFlowRSVPPathRsvpHopIpv4Ipv4NextPreviousHopAddressCounter + (*PatternFlowRSVPPathRsvpHopIpv4Ipv4NextPreviousHopAddress)(nil), // 1188: otg.PatternFlowRSVPPathRsvpHopIpv4Ipv4NextPreviousHopAddress + (*PatternFlowRSVPPathRsvpHopIpv4LogicalInterfaceHandleCounter)(nil), // 1189: otg.PatternFlowRSVPPathRsvpHopIpv4LogicalInterfaceHandleCounter + (*PatternFlowRSVPPathRsvpHopIpv4LogicalInterfaceHandle)(nil), // 1190: otg.PatternFlowRSVPPathRsvpHopIpv4LogicalInterfaceHandle + (*PatternFlowRSVPPathTimeValuesType1RefreshPeriodRCounter)(nil), // 1191: otg.PatternFlowRSVPPathTimeValuesType1RefreshPeriodRCounter + (*PatternFlowRSVPPathTimeValuesType1RefreshPeriodR)(nil), // 1192: otg.PatternFlowRSVPPathTimeValuesType1RefreshPeriodR + (*PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixLBitCounter)(nil), // 1193: otg.PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixLBitCounter + (*PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixLBit)(nil), // 1194: otg.PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixLBit + (*PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixIpv4AddressCounter)(nil), // 1195: otg.PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixIpv4AddressCounter + (*PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixIpv4Address)(nil), // 1196: otg.PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixIpv4Address + (*PatternFlowRSVPPathExplicitRouteType1FourByteASNumberLBitCounter)(nil), // 1197: otg.PatternFlowRSVPPathExplicitRouteType1FourByteASNumberLBitCounter + (*PatternFlowRSVPPathExplicitRouteType1FourByteASNumberLBit)(nil), // 1198: otg.PatternFlowRSVPPathExplicitRouteType1FourByteASNumberLBit + (*PatternFlowRSVPPathExplicitRouteType1FourByteASNumberReservedCounter)(nil), // 1199: otg.PatternFlowRSVPPathExplicitRouteType1FourByteASNumberReservedCounter + (*PatternFlowRSVPPathExplicitRouteType1FourByteASNumberReserved)(nil), // 1200: otg.PatternFlowRSVPPathExplicitRouteType1FourByteASNumberReserved + (*PatternFlowRSVPPathLabelRequestWithoutLabelRangeReservedCounter)(nil), // 1201: otg.PatternFlowRSVPPathLabelRequestWithoutLabelRangeReservedCounter + (*PatternFlowRSVPPathLabelRequestWithoutLabelRangeReserved)(nil), // 1202: otg.PatternFlowRSVPPathLabelRequestWithoutLabelRangeReserved + (*PatternFlowRSVPPathLabelRequestWithoutLabelRangeL3PidCounter)(nil), // 1203: otg.PatternFlowRSVPPathLabelRequestWithoutLabelRangeL3pidCounter + (*PatternFlowRSVPPathLabelRequestWithoutLabelRangeL3Pid)(nil), // 1204: otg.PatternFlowRSVPPathLabelRequestWithoutLabelRangeL3pid + (*PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Ipv4TunnelSenderAddressCounter)(nil), // 1205: otg.PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Ipv4TunnelSenderAddressCounter + (*PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Ipv4TunnelSenderAddress)(nil), // 1206: otg.PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Ipv4TunnelSenderAddress + (*PatternFlowRSVPPathSenderTemplateLspTunnelIpv4ReservedCounter)(nil), // 1207: otg.PatternFlowRSVPPathSenderTemplateLspTunnelIpv4ReservedCounter + (*PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Reserved)(nil), // 1208: otg.PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Reserved + (*PatternFlowRSVPPathSenderTemplateLspTunnelIpv4LspIdCounter)(nil), // 1209: otg.PatternFlowRSVPPathSenderTemplateLspTunnelIpv4LspIdCounter + (*PatternFlowRSVPPathSenderTemplateLspTunnelIpv4LspId)(nil), // 1210: otg.PatternFlowRSVPPathSenderTemplateLspTunnelIpv4LspId + (*PatternFlowRSVPPathSenderTspecIntServVersionCounter)(nil), // 1211: otg.PatternFlowRSVPPathSenderTspecIntServVersionCounter + (*PatternFlowRSVPPathSenderTspecIntServVersion)(nil), // 1212: otg.PatternFlowRSVPPathSenderTspecIntServVersion + (*PatternFlowRSVPPathSenderTspecIntServReserved1Counter)(nil), // 1213: otg.PatternFlowRSVPPathSenderTspecIntServReserved1Counter + (*PatternFlowRSVPPathSenderTspecIntServReserved1)(nil), // 1214: otg.PatternFlowRSVPPathSenderTspecIntServReserved1 + (*PatternFlowRSVPPathSenderTspecIntServOverallLengthCounter)(nil), // 1215: otg.PatternFlowRSVPPathSenderTspecIntServOverallLengthCounter + (*PatternFlowRSVPPathSenderTspecIntServOverallLength)(nil), // 1216: otg.PatternFlowRSVPPathSenderTspecIntServOverallLength + (*PatternFlowRSVPPathSenderTspecIntServServiceHeaderCounter)(nil), // 1217: otg.PatternFlowRSVPPathSenderTspecIntServServiceHeaderCounter + (*PatternFlowRSVPPathSenderTspecIntServServiceHeader)(nil), // 1218: otg.PatternFlowRSVPPathSenderTspecIntServServiceHeader + (*PatternFlowRSVPPathSenderTspecIntServZeroBitCounter)(nil), // 1219: otg.PatternFlowRSVPPathSenderTspecIntServZeroBitCounter + (*PatternFlowRSVPPathSenderTspecIntServZeroBit)(nil), // 1220: otg.PatternFlowRSVPPathSenderTspecIntServZeroBit + (*PatternFlowRSVPPathSenderTspecIntServReserved2Counter)(nil), // 1221: otg.PatternFlowRSVPPathSenderTspecIntServReserved2Counter + (*PatternFlowRSVPPathSenderTspecIntServReserved2)(nil), // 1222: otg.PatternFlowRSVPPathSenderTspecIntServReserved2 + (*PatternFlowRSVPPathSenderTspecIntServLengthOfServiceDataCounter)(nil), // 1223: otg.PatternFlowRSVPPathSenderTspecIntServLengthOfServiceDataCounter + (*PatternFlowRSVPPathSenderTspecIntServLengthOfServiceData)(nil), // 1224: otg.PatternFlowRSVPPathSenderTspecIntServLengthOfServiceData + (*PatternFlowRSVPPathSenderTspecIntServParameterIdTokenBucketTspecCounter)(nil), // 1225: otg.PatternFlowRSVPPathSenderTspecIntServParameterIdTokenBucketTspecCounter + (*PatternFlowRSVPPathSenderTspecIntServParameterIdTokenBucketTspec)(nil), // 1226: otg.PatternFlowRSVPPathSenderTspecIntServParameterIdTokenBucketTspec + (*PatternFlowRSVPPathSenderTspecIntServParameter127FlagCounter)(nil), // 1227: otg.PatternFlowRSVPPathSenderTspecIntServParameter127FlagCounter + (*PatternFlowRSVPPathSenderTspecIntServParameter127Flag)(nil), // 1228: otg.PatternFlowRSVPPathSenderTspecIntServParameter127Flag + (*PatternFlowRSVPPathSenderTspecIntServParameter127LengthCounter)(nil), // 1229: otg.PatternFlowRSVPPathSenderTspecIntServParameter127LengthCounter + (*PatternFlowRSVPPathSenderTspecIntServParameter127Length)(nil), // 1230: otg.PatternFlowRSVPPathSenderTspecIntServParameter127Length + (*PatternFlowRSVPPathSenderTspecIntServMinimumPolicedUnitCounter)(nil), // 1231: otg.PatternFlowRSVPPathSenderTspecIntServMinimumPolicedUnitCounter + (*PatternFlowRSVPPathSenderTspecIntServMinimumPolicedUnit)(nil), // 1232: otg.PatternFlowRSVPPathSenderTspecIntServMinimumPolicedUnit + (*PatternFlowRSVPPathSenderTspecIntServMaximumPacketSizeCounter)(nil), // 1233: otg.PatternFlowRSVPPathSenderTspecIntServMaximumPacketSizeCounter + (*PatternFlowRSVPPathSenderTspecIntServMaximumPacketSize)(nil), // 1234: otg.PatternFlowRSVPPathSenderTspecIntServMaximumPacketSize + (*PatternFlowRSVPPathRecordRouteType1Ipv4AddressIpv4AddressCounter)(nil), // 1235: otg.PatternFlowRSVPPathRecordRouteType1Ipv4AddressIpv4AddressCounter + (*PatternFlowRSVPPathRecordRouteType1Ipv4AddressIpv4Address)(nil), // 1236: otg.PatternFlowRSVPPathRecordRouteType1Ipv4AddressIpv4Address + (*PatternFlowRSVPPathRecordRouteType1Ipv4AddressPrefixLengthCounter)(nil), // 1237: otg.PatternFlowRSVPPathRecordRouteType1Ipv4AddressPrefixLengthCounter + (*PatternFlowRSVPPathRecordRouteType1Ipv4AddressPrefixLength)(nil), // 1238: otg.PatternFlowRSVPPathRecordRouteType1Ipv4AddressPrefixLength + (*PatternFlowRSVPPathRecordRouteType1LabelFlags)(nil), // 1239: otg.PatternFlowRSVPPathRecordRouteType1LabelFlags + (*PatternFlowRSVPPathRecordRouteType1LabelCType)(nil), // 1240: otg.PatternFlowRSVPPathRecordRouteType1LabelCType + (*PatternFlowRSVPPathObjectsCustomTypeCounter)(nil), // 1241: otg.PatternFlowRSVPPathObjectsCustomTypeCounter + (*PatternFlowRSVPPathObjectsCustomType)(nil), // 1242: otg.PatternFlowRSVPPathObjectsCustomType + (*Version)(nil), // 1243: otg.Version + (*Success)(nil), // 1244: otg.Success + (*Failure)(nil), // 1245: otg.Failure + (*SetConfigRequest)(nil), // 1246: otg.SetConfigRequest + (*UpdateConfigRequest)(nil), // 1247: otg.UpdateConfigRequest + (*SetConfigResponse)(nil), // 1248: otg.SetConfigResponse + (*GetConfigResponse)(nil), // 1249: otg.GetConfigResponse + (*UpdateConfigResponse)(nil), // 1250: otg.UpdateConfigResponse + (*SetControlStateRequest)(nil), // 1251: otg.SetControlStateRequest + (*SetControlStateResponse)(nil), // 1252: otg.SetControlStateResponse + (*SetControlActionRequest)(nil), // 1253: otg.SetControlActionRequest + (*SetControlActionResponse)(nil), // 1254: otg.SetControlActionResponse + (*GetMetricsRequest)(nil), // 1255: otg.GetMetricsRequest + (*GetMetricsResponse)(nil), // 1256: otg.GetMetricsResponse + (*GetStatesRequest)(nil), // 1257: otg.GetStatesRequest + (*GetStatesResponse)(nil), // 1258: otg.GetStatesResponse + (*GetCaptureRequest)(nil), // 1259: otg.GetCaptureRequest + (*GetCaptureResponse)(nil), // 1260: otg.GetCaptureResponse + (*GetVersionResponse)(nil), // 1261: otg.GetVersionResponse + (*LagProtocol_Choice)(nil), // 1262: otg.LagProtocol.Choice + (*LagPortLacp_ActorActivity)(nil), // 1263: otg.LagPortLacp.ActorActivity + (*EthernetConnection_Choice)(nil), // 1264: otg.EthernetConnection.Choice + (*DeviceVlan_Tpid)(nil), // 1265: otg.DeviceVlan.Tpid + (*DeviceIpv4GatewayMAC_Choice)(nil), // 1266: otg.DeviceIpv4GatewayMAC.Choice + (*DeviceIpv6GatewayMAC_Choice)(nil), // 1267: otg.DeviceIpv6GatewayMAC.Choice + (*Layer1_Speed)(nil), // 1268: otg.Layer1.Speed + (*Layer1_Media)(nil), // 1269: otg.Layer1.Media + (*Layer1FlowControl_Choice)(nil), // 1270: otg.Layer1FlowControl.Choice + (*Capture_Format)(nil), // 1271: otg.Capture.Format + (*CaptureFilter_Choice)(nil), // 1272: otg.CaptureFilter.Choice + (*IsisInterface_NetworkType)(nil), // 1273: otg.IsisInterface.NetworkType + (*IsisInterface_LevelType)(nil), // 1274: otg.IsisInterface.LevelType + (*IsisInterfaceAuthentication_AuthType)(nil), // 1275: otg.IsisInterfaceAuthentication.AuthType + (*IsisAuthenticationBase_AuthType)(nil), // 1276: otg.IsisAuthenticationBase.AuthType + (*IsisV4RouteRange_OriginType)(nil), // 1277: otg.IsisV4RouteRange.OriginType + (*IsisV4RouteRange_RedistributionType)(nil), // 1278: otg.IsisV4RouteRange.RedistributionType + (*IsisV6RouteRange_OriginType)(nil), // 1279: otg.IsisV6RouteRange.OriginType + (*IsisV6RouteRange_RedistributionType)(nil), // 1280: otg.IsisV6RouteRange.RedistributionType + (*DeviceBgpMessageHeaderError_Subcode)(nil), // 1281: otg.DeviceBgpMessageHeaderError.Subcode + (*DeviceBgpOpenMessageError_Subcode)(nil), // 1282: otg.DeviceBgpOpenMessageError.Subcode + (*DeviceBgpUpdateMessageError_Subcode)(nil), // 1283: otg.DeviceBgpUpdateMessageError.Subcode + (*DeviceBgpCeaseError_Subcode)(nil), // 1284: otg.DeviceBgpCeaseError.Subcode + (*BgpV4Peer_AsType)(nil), // 1285: otg.BgpV4Peer.AsType + (*BgpV4Peer_AsNumberWidth)(nil), // 1286: otg.BgpV4Peer.AsNumberWidth + (*BgpV4EthernetSegment_ActiveMode)(nil), // 1287: otg.BgpV4EthernetSegment.ActiveMode + (*BgpRouteAdvanced_Origin)(nil), // 1288: otg.BgpRouteAdvanced.Origin + (*BgpCommunity_Type)(nil), // 1289: otg.BgpCommunity.Type + (*BgpExtCommunity_Type)(nil), // 1290: otg.BgpExtCommunity.Type + (*BgpExtCommunity_Subtype)(nil), // 1291: otg.BgpExtCommunity.Subtype + (*BgpAsPath_AsSetMode)(nil), // 1292: otg.BgpAsPath.AsSetMode + (*BgpAsPathSegment_Type)(nil), // 1293: otg.BgpAsPathSegment.Type + (*BgpV4EvpnEvis_Choice)(nil), // 1294: otg.BgpV4EvpnEvis.Choice + (*BgpV4EviVxlan_ReplicationType)(nil), // 1295: otg.BgpV4EviVxlan.ReplicationType + (*BgpRouteDistinguisher_RdType)(nil), // 1296: otg.BgpRouteDistinguisher.RdType + (*BgpRouteTarget_RtType)(nil), // 1297: otg.BgpRouteTarget.RtType + (*BgpV4RouteRange_NextHopMode)(nil), // 1298: otg.BgpV4RouteRange.NextHopMode + (*BgpV4RouteRange_NextHopAddressType)(nil), // 1299: otg.BgpV4RouteRange.NextHopAddressType + (*BgpExtendedCommunity_Choice)(nil), // 1300: otg.BgpExtendedCommunity.Choice + (*BgpExtendedCommunityTransitive2OctetAsType_Choice)(nil), // 1301: otg.BgpExtendedCommunityTransitive2OctetAsType.Choice + (*BgpExtendedCommunityTransitiveIpv4AddressType_Choice)(nil), // 1302: otg.BgpExtendedCommunityTransitiveIpv4AddressType.Choice + (*BgpExtendedCommunityTransitive4OctetAsType_Choice)(nil), // 1303: otg.BgpExtendedCommunityTransitive4OctetAsType.Choice + (*BgpExtendedCommunityTransitiveOpaqueType_Choice)(nil), // 1304: otg.BgpExtendedCommunityTransitiveOpaqueType.Choice + (*BgpExtendedCommunityTransitiveEvpnType_Choice)(nil), // 1305: otg.BgpExtendedCommunityTransitiveEvpnType.Choice + (*BgpExtendedCommunityNonTransitive2OctetAsType_Choice)(nil), // 1306: otg.BgpExtendedCommunityNonTransitive2OctetAsType.Choice + (*BgpV6RouteRange_NextHopMode)(nil), // 1307: otg.BgpV6RouteRange.NextHopMode + (*BgpV6RouteRange_NextHopAddressType)(nil), // 1308: otg.BgpV6RouteRange.NextHopAddressType + (*BgpSrteV4Policy_NextHopMode)(nil), // 1309: otg.BgpSrteV4Policy.NextHopMode + (*BgpSrteV4Policy_NextHopAddressType)(nil), // 1310: otg.BgpSrteV4Policy.NextHopAddressType + (*BgpSrteRemoteEndpointSubTlv_AddressFamily)(nil), // 1311: otg.BgpSrteRemoteEndpointSubTlv.AddressFamily + (*BgpSrteBindingSubTlv_BindingSidType)(nil), // 1312: otg.BgpSrteBindingSubTlv.BindingSidType + (*BgpSrteExplicitNullLabelPolicySubTlv_ExplicitNullLabelPolicy)(nil), // 1313: otg.BgpSrteExplicitNullLabelPolicySubTlv.ExplicitNullLabelPolicy + (*BgpSrteSegment_SegmentType)(nil), // 1314: otg.BgpSrteSegment.SegmentType + (*BgpSrteV6Policy_NextHopMode)(nil), // 1315: otg.BgpSrteV6Policy.NextHopMode + (*BgpSrteV6Policy_NextHopAddressType)(nil), // 1316: otg.BgpSrteV6Policy.NextHopAddressType + (*BgpV6Peer_AsType)(nil), // 1317: otg.BgpV6Peer.AsType + (*BgpV6Peer_AsNumberWidth)(nil), // 1318: otg.BgpV6Peer.AsNumberWidth + (*BgpV6EthernetSegment_ActiveMode)(nil), // 1319: otg.BgpV6EthernetSegment.ActiveMode + (*BgpV6EvpnEvis_Choice)(nil), // 1320: otg.BgpV6EvpnEvis.Choice + (*BgpV6EviVxlan_ReplicationType)(nil), // 1321: otg.BgpV6EviVxlan.ReplicationType + (*VxlanV4TunnelDestinationIPMode_Choice)(nil), // 1322: otg.VxlanV4TunnelDestinationIPMode.Choice + (*VxlanV6TunnelDestinationIPMode_Choice)(nil), // 1323: otg.VxlanV6TunnelDestinationIPMode.Choice + (*RsvpLspIpv4InterfaceP2PEgressIpv4Lsp_ReservationStyle)(nil), // 1324: otg.RsvpLspIpv4InterfaceP2PEgressIpv4Lsp.ReservationStyle + (*RsvpEro_PrependNeighborIp)(nil), // 1325: otg.RsvpEro.PrependNeighborIp + (*RsvpEroSubobject_Type)(nil), // 1326: otg.RsvpEroSubobject.Type + (*RsvpEroSubobject_HopType)(nil), // 1327: otg.RsvpEroSubobject.HopType + (*FlowTxRx_Choice)(nil), // 1328: otg.FlowTxRx.Choice + (*FlowRouter_Mode)(nil), // 1329: otg.FlowRouter.Mode + (*FlowHeader_Choice)(nil), // 1330: otg.FlowHeader.Choice + (*FlowIpv4Priority_Choice)(nil), // 1331: otg.FlowIpv4Priority.Choice + (*FlowIcmp_Choice)(nil), // 1332: otg.FlowIcmp.Choice + (*FlowIcmpv6_Choice)(nil), // 1333: otg.FlowIcmpv6.Choice + (*FlowRSVPFlag_Choice)(nil), // 1334: otg.FlowRSVPFlag.Choice + (*FlowRSVPLength_Choice)(nil), // 1335: otg.FlowRSVPLength.Choice + (*FlowRSVPMessage_Choice)(nil), // 1336: otg.FlowRSVPMessage.Choice + (*FlowRSVPPathObjectLength_Choice)(nil), // 1337: otg.FlowRSVPPathObjectLength.Choice + (*FlowRSVPPathObjectsClass_Choice)(nil), // 1338: otg.FlowRSVPPathObjectsClass.Choice + (*FlowRSVPPathObjectsSessionCType_Choice)(nil), // 1339: otg.FlowRSVPPathObjectsSessionCType.Choice + (*FlowRSVPPathObjectsRsvpHopCType_Choice)(nil), // 1340: otg.FlowRSVPPathObjectsRsvpHopCType.Choice + (*FlowRSVPPathObjectsTimeValuesCType_Choice)(nil), // 1341: otg.FlowRSVPPathObjectsTimeValuesCType.Choice + (*FlowRSVPPathObjectsClassExplicitRouteCType_Choice)(nil), // 1342: otg.FlowRSVPPathObjectsClassExplicitRouteCType.Choice + (*FlowRSVPType1ExplicitRouteSubobjectsType_Choice)(nil), // 1343: otg.FlowRSVPType1ExplicitRouteSubobjectsType.Choice + (*FlowRSVPExplicitRouteLength_Choice)(nil), // 1344: otg.FlowRSVPExplicitRouteLength.Choice + (*FlowRSVPPathObjectsLabelRequestCType_Choice)(nil), // 1345: otg.FlowRSVPPathObjectsLabelRequestCType.Choice + (*FlowRSVPPathObjectsSessionAttributeCType_Choice)(nil), // 1346: otg.FlowRSVPPathObjectsSessionAttributeCType.Choice + (*FlowRSVPLspTunnelFlag_Choice)(nil), // 1347: otg.FlowRSVPLspTunnelFlag.Choice + (*FlowRSVPPathObjectsSenderTemplateCType_Choice)(nil), // 1348: otg.FlowRSVPPathObjectsSenderTemplateCType.Choice + (*FlowRSVPPathObjectsSenderTspecCType_Choice)(nil), // 1349: otg.FlowRSVPPathObjectsSenderTspecCType.Choice + (*FlowRSVPPathObjectsRecordRouteCType_Choice)(nil), // 1350: otg.FlowRSVPPathObjectsRecordRouteCType.Choice + (*FlowRSVPPathObjectsRecordRouteSubObjectType_Choice)(nil), // 1351: otg.FlowRSVPPathObjectsRecordRouteSubObjectType.Choice + (*FlowRSVPRecordRouteIPv4Flag_Choice)(nil), // 1352: otg.FlowRSVPRecordRouteIPv4Flag.Choice + (*FlowRSVPRouteRecordLength_Choice)(nil), // 1353: otg.FlowRSVPRouteRecordLength.Choice + (*FlowRSVPObjectOptionsCustomLength_Choice)(nil), // 1354: otg.FlowRSVPObjectOptionsCustomLength.Choice + (*FlowSize_Choice)(nil), // 1355: otg.FlowSize.Choice + (*FlowSizeWeightPairs_Choice)(nil), // 1356: otg.FlowSizeWeightPairs.Choice + (*FlowSizeWeightPairs_Predefined)(nil), // 1357: otg.FlowSizeWeightPairs.Predefined + (*FlowRate_Choice)(nil), // 1358: otg.FlowRate.Choice + (*FlowDuration_Choice)(nil), // 1359: otg.FlowDuration.Choice + (*FlowDelay_Choice)(nil), // 1360: otg.FlowDelay.Choice + (*FlowDurationInterBurstGap_Choice)(nil), // 1361: otg.FlowDurationInterBurstGap.Choice + (*FlowLatencyMetrics_Mode)(nil), // 1362: otg.FlowLatencyMetrics.Mode + (*FlowRxTxRatio_Choice)(nil), // 1363: otg.FlowRxTxRatio.Choice + (*EventRequest_Type)(nil), // 1364: otg.EventRequest.Type + (*LldpConnection_Choice)(nil), // 1365: otg.LldpConnection.Choice + (*LldpChassisId_Choice)(nil), // 1366: otg.LldpChassisId.Choice + (*LldpPortId_Choice)(nil), // 1367: otg.LldpPortId.Choice + (*LldpChassisMacSubType_Choice)(nil), // 1368: otg.LldpChassisMacSubType.Choice + (*LldpPortInterfaceNameSubType_Choice)(nil), // 1369: otg.LldpPortInterfaceNameSubType.Choice + (*LldpSystemName_Choice)(nil), // 1370: otg.LldpSystemName.Choice + (*Error_Kind)(nil), // 1371: otg.Error.Kind + (*ConfigUpdate_Choice)(nil), // 1372: otg.ConfigUpdate.Choice + (*FlowsUpdate_PropertyNames)(nil), // 1373: otg.FlowsUpdate.PropertyNames + (*ControlState_Choice)(nil), // 1374: otg.ControlState.Choice + (*StatePort_Choice)(nil), // 1375: otg.StatePort.Choice + (*StateTraffic_Choice)(nil), // 1376: otg.StateTraffic.Choice + (*StateProtocol_Choice)(nil), // 1377: otg.StateProtocol.Choice + (*StatePortLink_State)(nil), // 1378: otg.StatePortLink.State + (*StatePortCapture_State)(nil), // 1379: otg.StatePortCapture.State + (*StateTrafficFlowTransmit_State)(nil), // 1380: otg.StateTrafficFlowTransmit.State + (*StateProtocolAll_State)(nil), // 1381: otg.StateProtocolAll.State + (*StateProtocolRoute_State)(nil), // 1382: otg.StateProtocolRoute.State + (*StateProtocolLacp_Choice)(nil), // 1383: otg.StateProtocolLacp.Choice + (*StateProtocolLacpAdmin_State)(nil), // 1384: otg.StateProtocolLacpAdmin.State + (*StateProtocolLacpMemberPorts_State)(nil), // 1385: otg.StateProtocolLacpMemberPorts.State + (*StateProtocolBgp_Choice)(nil), // 1386: otg.StateProtocolBgp.Choice + (*StateProtocolBgpPeers_State)(nil), // 1387: otg.StateProtocolBgpPeers.State + (*StateProtocolIsis_Choice)(nil), // 1388: otg.StateProtocolIsis.Choice + (*StateProtocolIsisRouters_State)(nil), // 1389: otg.StateProtocolIsisRouters.State + (*ControlAction_Choice)(nil), // 1390: otg.ControlAction.Choice + (*ActionResponse_Choice)(nil), // 1391: otg.ActionResponse.Choice + (*ActionProtocol_Choice)(nil), // 1392: otg.ActionProtocol.Choice + (*ActionResponseProtocol_Choice)(nil), // 1393: otg.ActionResponseProtocol.Choice + (*ActionProtocolIpv4_Choice)(nil), // 1394: otg.ActionProtocolIpv4.Choice + (*ActionResponseProtocolIpv4_Choice)(nil), // 1395: otg.ActionResponseProtocolIpv4.Choice + (*ActionResponseProtocolIpv4PingResponse_Result)(nil), // 1396: otg.ActionResponseProtocolIpv4PingResponse.Result + (*ActionProtocolIpv6_Choice)(nil), // 1397: otg.ActionProtocolIpv6.Choice + (*ActionResponseProtocolIpv6_Choice)(nil), // 1398: otg.ActionResponseProtocolIpv6.Choice + (*ActionResponseProtocolIpv6PingResponse_Result)(nil), // 1399: otg.ActionResponseProtocolIpv6PingResponse.Result + (*ActionProtocolBgp_Choice)(nil), // 1400: otg.ActionProtocolBgp.Choice + (*ActionProtocolBgpNotification_Choice)(nil), // 1401: otg.ActionProtocolBgpNotification.Choice + (*MetricsRequest_Choice)(nil), // 1402: otg.MetricsRequest.Choice + (*MetricsResponse_Choice)(nil), // 1403: otg.MetricsResponse.Choice + (*PortMetricsRequest_ColumnNames)(nil), // 1404: otg.PortMetricsRequest.ColumnNames + (*PortMetric_Link)(nil), // 1405: otg.PortMetric.Link + (*PortMetric_Capture)(nil), // 1406: otg.PortMetric.Capture + (*PortMetric_Transmit)(nil), // 1407: otg.PortMetric.Transmit + (*FlowMetricsRequest_MetricNames)(nil), // 1408: otg.FlowMetricsRequest.MetricNames + (*FlowTaggedMetricsFilter_MetricNames)(nil), // 1409: otg.FlowTaggedMetricsFilter.MetricNames + (*FlowMetric_Transmit)(nil), // 1410: otg.FlowMetric.Transmit + (*FlowMetricTagValue_Choice)(nil), // 1411: otg.FlowMetricTagValue.Choice + (*Bgpv4MetricsRequest_ColumnNames)(nil), // 1412: otg.Bgpv4MetricsRequest.ColumnNames + (*Bgpv4Metric_SessionState)(nil), // 1413: otg.Bgpv4Metric.SessionState + (*Bgpv4Metric_FsmState)(nil), // 1414: otg.Bgpv4Metric.FsmState + (*Bgpv6MetricsRequest_ColumnNames)(nil), // 1415: otg.Bgpv6MetricsRequest.ColumnNames + (*Bgpv6Metric_SessionState)(nil), // 1416: otg.Bgpv6Metric.SessionState + (*Bgpv6Metric_FsmState)(nil), // 1417: otg.Bgpv6Metric.FsmState + (*IsisMetricsRequest_ColumnNames)(nil), // 1418: otg.IsisMetricsRequest.ColumnNames + (*LagMetricsRequest_ColumnNames)(nil), // 1419: otg.LagMetricsRequest.ColumnNames + (*LagMetric_OperStatus)(nil), // 1420: otg.LagMetric.OperStatus + (*LacpMetricsRequest_ColumnNames)(nil), // 1421: otg.LacpMetricsRequest.ColumnNames + (*LacpMetric_Activity)(nil), // 1422: otg.LacpMetric.Activity + (*LacpMetric_Timeout)(nil), // 1423: otg.LacpMetric.Timeout + (*LacpMetric_Synchronization)(nil), // 1424: otg.LacpMetric.Synchronization + (*LldpMetricsRequest_ColumnNames)(nil), // 1425: otg.LldpMetricsRequest.ColumnNames + (*RsvpMetricsRequest_ColumnNames)(nil), // 1426: otg.RsvpMetricsRequest.ColumnNames + (*StatesRequest_Choice)(nil), // 1427: otg.StatesRequest.Choice + (*StatesResponse_Choice)(nil), // 1428: otg.StatesResponse.Choice + (*BgpPrefixStateRequest_PrefixFilters)(nil), // 1429: otg.BgpPrefixStateRequest.PrefixFilters + (*BgpPrefixIpv4UnicastFilter_Origin)(nil), // 1430: otg.BgpPrefixIpv4UnicastFilter.Origin + (*BgpPrefixIpv6UnicastFilter_Origin)(nil), // 1431: otg.BgpPrefixIpv6UnicastFilter.Origin + (*BgpPrefixIpv4UnicastState_Origin)(nil), // 1432: otg.BgpPrefixIpv4UnicastState.Origin + (*BgpPrefixIpv6UnicastState_Origin)(nil), // 1433: otg.BgpPrefixIpv6UnicastState.Origin + (*ResultBgpCommunity_Type)(nil), // 1434: otg.ResultBgpCommunity.Type + (*ResultBgpAsPathSegment_Type)(nil), // 1435: otg.ResultBgpAsPathSegment.Type + (*IsisLspState_PduType)(nil), // 1436: otg.IsisLspState.PduType + (*IsisLspV4Prefix_RedistributionType)(nil), // 1437: otg.IsisLspV4Prefix.RedistributionType + (*IsisLspV4Prefix_OriginType)(nil), // 1438: otg.IsisLspV4Prefix.OriginType + (*IsisLspExtendedV4Prefix_RedistributionType)(nil), // 1439: otg.IsisLspExtendedV4Prefix.RedistributionType + (*IsisLspV6Prefix_RedistributionType)(nil), // 1440: otg.IsisLspV6Prefix.RedistributionType + (*IsisLspV6Prefix_OriginType)(nil), // 1441: otg.IsisLspV6Prefix.OriginType + (*LldpNeighborsState_ChassisIdType)(nil), // 1442: otg.LldpNeighborsState.ChassisIdType + (*LldpNeighborsState_PortIdType)(nil), // 1443: otg.LldpNeighborsState.PortIdType + (*LldpCapabilityState_CapabilityName)(nil), // 1444: otg.LldpCapabilityState.CapabilityName + (*RsvpLspState_SessionStatus)(nil), // 1445: otg.RsvpLspState.SessionStatus + (*RsvpLspState_LastFlapReason)(nil), // 1446: otg.RsvpLspState.LastFlapReason + (*RsvpLspIpv4Ero_Type)(nil), // 1447: otg.RsvpLspIpv4Ero.Type + (*PatternFlowEthernetDst_Choice)(nil), // 1448: otg.PatternFlowEthernetDst.Choice + (*PatternFlowEthernetSrc_Choice)(nil), // 1449: otg.PatternFlowEthernetSrc.Choice + (*PatternFlowEthernetEtherType_Choice)(nil), // 1450: otg.PatternFlowEthernetEtherType.Choice + (*PatternFlowEthernetPfcQueue_Choice)(nil), // 1451: otg.PatternFlowEthernetPfcQueue.Choice + (*PatternFlowVlanPriority_Choice)(nil), // 1452: otg.PatternFlowVlanPriority.Choice + (*PatternFlowVlanCfi_Choice)(nil), // 1453: otg.PatternFlowVlanCfi.Choice + (*PatternFlowVlanId_Choice)(nil), // 1454: otg.PatternFlowVlanId.Choice + (*PatternFlowVlanTpid_Choice)(nil), // 1455: otg.PatternFlowVlanTpid.Choice + (*PatternFlowVxlanFlags_Choice)(nil), // 1456: otg.PatternFlowVxlanFlags.Choice + (*PatternFlowVxlanReserved0_Choice)(nil), // 1457: otg.PatternFlowVxlanReserved0.Choice + (*PatternFlowVxlanVni_Choice)(nil), // 1458: otg.PatternFlowVxlanVni.Choice + (*PatternFlowVxlanReserved1_Choice)(nil), // 1459: otg.PatternFlowVxlanReserved1.Choice + (*PatternFlowIpv4Version_Choice)(nil), // 1460: otg.PatternFlowIpv4Version.Choice + (*PatternFlowIpv4HeaderLength_Choice)(nil), // 1461: otg.PatternFlowIpv4HeaderLength.Choice + (*PatternFlowIpv4TotalLength_Choice)(nil), // 1462: otg.PatternFlowIpv4TotalLength.Choice + (*PatternFlowIpv4Identification_Choice)(nil), // 1463: otg.PatternFlowIpv4Identification.Choice + (*PatternFlowIpv4Reserved_Choice)(nil), // 1464: otg.PatternFlowIpv4Reserved.Choice + (*PatternFlowIpv4DontFragment_Choice)(nil), // 1465: otg.PatternFlowIpv4DontFragment.Choice + (*PatternFlowIpv4MoreFragments_Choice)(nil), // 1466: otg.PatternFlowIpv4MoreFragments.Choice + (*PatternFlowIpv4FragmentOffset_Choice)(nil), // 1467: otg.PatternFlowIpv4FragmentOffset.Choice + (*PatternFlowIpv4TimeToLive_Choice)(nil), // 1468: otg.PatternFlowIpv4TimeToLive.Choice + (*PatternFlowIpv4Protocol_Choice)(nil), // 1469: otg.PatternFlowIpv4Protocol.Choice + (*PatternFlowIpv4HeaderChecksum_Choice)(nil), // 1470: otg.PatternFlowIpv4HeaderChecksum.Choice + (*PatternFlowIpv4HeaderChecksum_Generated)(nil), // 1471: otg.PatternFlowIpv4HeaderChecksum.Generated + (*PatternFlowIpv4Src_Choice)(nil), // 1472: otg.PatternFlowIpv4Src.Choice + (*PatternFlowIpv4Dst_Choice)(nil), // 1473: otg.PatternFlowIpv4Dst.Choice + (*PatternFlowIpv4PriorityRaw_Choice)(nil), // 1474: otg.PatternFlowIpv4PriorityRaw.Choice + (*PatternFlowIpv4DscpPhb_Choice)(nil), // 1475: otg.PatternFlowIpv4DscpPhb.Choice + (*PatternFlowIpv4DscpEcn_Choice)(nil), // 1476: otg.PatternFlowIpv4DscpEcn.Choice + (*PatternFlowIpv4TosPrecedence_Choice)(nil), // 1477: otg.PatternFlowIpv4TosPrecedence.Choice + (*PatternFlowIpv4TosDelay_Choice)(nil), // 1478: otg.PatternFlowIpv4TosDelay.Choice + (*PatternFlowIpv4TosThroughput_Choice)(nil), // 1479: otg.PatternFlowIpv4TosThroughput.Choice + (*PatternFlowIpv4TosReliability_Choice)(nil), // 1480: otg.PatternFlowIpv4TosReliability.Choice + (*PatternFlowIpv4TosMonetary_Choice)(nil), // 1481: otg.PatternFlowIpv4TosMonetary.Choice + (*PatternFlowIpv4TosUnused_Choice)(nil), // 1482: otg.PatternFlowIpv4TosUnused.Choice + (*PatternFlowIpv6Version_Choice)(nil), // 1483: otg.PatternFlowIpv6Version.Choice + (*PatternFlowIpv6TrafficClass_Choice)(nil), // 1484: otg.PatternFlowIpv6TrafficClass.Choice + (*PatternFlowIpv6FlowLabel_Choice)(nil), // 1485: otg.PatternFlowIpv6FlowLabel.Choice + (*PatternFlowIpv6PayloadLength_Choice)(nil), // 1486: otg.PatternFlowIpv6PayloadLength.Choice + (*PatternFlowIpv6NextHeader_Choice)(nil), // 1487: otg.PatternFlowIpv6NextHeader.Choice + (*PatternFlowIpv6HopLimit_Choice)(nil), // 1488: otg.PatternFlowIpv6HopLimit.Choice + (*PatternFlowIpv6Src_Choice)(nil), // 1489: otg.PatternFlowIpv6Src.Choice + (*PatternFlowIpv6Dst_Choice)(nil), // 1490: otg.PatternFlowIpv6Dst.Choice + (*PatternFlowPfcPauseDst_Choice)(nil), // 1491: otg.PatternFlowPfcPauseDst.Choice + (*PatternFlowPfcPauseSrc_Choice)(nil), // 1492: otg.PatternFlowPfcPauseSrc.Choice + (*PatternFlowPfcPauseEtherType_Choice)(nil), // 1493: otg.PatternFlowPfcPauseEtherType.Choice + (*PatternFlowPfcPauseControlOpCode_Choice)(nil), // 1494: otg.PatternFlowPfcPauseControlOpCode.Choice + (*PatternFlowPfcPauseClassEnableVector_Choice)(nil), // 1495: otg.PatternFlowPfcPauseClassEnableVector.Choice + (*PatternFlowPfcPausePauseClass0_Choice)(nil), // 1496: otg.PatternFlowPfcPausePauseClass0.Choice + (*PatternFlowPfcPausePauseClass1_Choice)(nil), // 1497: otg.PatternFlowPfcPausePauseClass1.Choice + (*PatternFlowPfcPausePauseClass2_Choice)(nil), // 1498: otg.PatternFlowPfcPausePauseClass2.Choice + (*PatternFlowPfcPausePauseClass3_Choice)(nil), // 1499: otg.PatternFlowPfcPausePauseClass3.Choice + (*PatternFlowPfcPausePauseClass4_Choice)(nil), // 1500: otg.PatternFlowPfcPausePauseClass4.Choice + (*PatternFlowPfcPausePauseClass5_Choice)(nil), // 1501: otg.PatternFlowPfcPausePauseClass5.Choice + (*PatternFlowPfcPausePauseClass6_Choice)(nil), // 1502: otg.PatternFlowPfcPausePauseClass6.Choice + (*PatternFlowPfcPausePauseClass7_Choice)(nil), // 1503: otg.PatternFlowPfcPausePauseClass7.Choice + (*PatternFlowEthernetPauseDst_Choice)(nil), // 1504: otg.PatternFlowEthernetPauseDst.Choice + (*PatternFlowEthernetPauseSrc_Choice)(nil), // 1505: otg.PatternFlowEthernetPauseSrc.Choice + (*PatternFlowEthernetPauseEtherType_Choice)(nil), // 1506: otg.PatternFlowEthernetPauseEtherType.Choice + (*PatternFlowEthernetPauseControlOpCode_Choice)(nil), // 1507: otg.PatternFlowEthernetPauseControlOpCode.Choice + (*PatternFlowEthernetPauseTime_Choice)(nil), // 1508: otg.PatternFlowEthernetPauseTime.Choice + (*PatternFlowTcpSrcPort_Choice)(nil), // 1509: otg.PatternFlowTcpSrcPort.Choice + (*PatternFlowTcpDstPort_Choice)(nil), // 1510: otg.PatternFlowTcpDstPort.Choice + (*PatternFlowTcpSeqNum_Choice)(nil), // 1511: otg.PatternFlowTcpSeqNum.Choice + (*PatternFlowTcpAckNum_Choice)(nil), // 1512: otg.PatternFlowTcpAckNum.Choice + (*PatternFlowTcpDataOffset_Choice)(nil), // 1513: otg.PatternFlowTcpDataOffset.Choice + (*PatternFlowTcpEcnNs_Choice)(nil), // 1514: otg.PatternFlowTcpEcnNs.Choice + (*PatternFlowTcpEcnCwr_Choice)(nil), // 1515: otg.PatternFlowTcpEcnCwr.Choice + (*PatternFlowTcpEcnEcho_Choice)(nil), // 1516: otg.PatternFlowTcpEcnEcho.Choice + (*PatternFlowTcpCtlUrg_Choice)(nil), // 1517: otg.PatternFlowTcpCtlUrg.Choice + (*PatternFlowTcpCtlAck_Choice)(nil), // 1518: otg.PatternFlowTcpCtlAck.Choice + (*PatternFlowTcpCtlPsh_Choice)(nil), // 1519: otg.PatternFlowTcpCtlPsh.Choice + (*PatternFlowTcpCtlRst_Choice)(nil), // 1520: otg.PatternFlowTcpCtlRst.Choice + (*PatternFlowTcpCtlSyn_Choice)(nil), // 1521: otg.PatternFlowTcpCtlSyn.Choice + (*PatternFlowTcpCtlFin_Choice)(nil), // 1522: otg.PatternFlowTcpCtlFin.Choice + (*PatternFlowTcpWindow_Choice)(nil), // 1523: otg.PatternFlowTcpWindow.Choice + (*PatternFlowUdpSrcPort_Choice)(nil), // 1524: otg.PatternFlowUdpSrcPort.Choice + (*PatternFlowUdpDstPort_Choice)(nil), // 1525: otg.PatternFlowUdpDstPort.Choice + (*PatternFlowUdpLength_Choice)(nil), // 1526: otg.PatternFlowUdpLength.Choice + (*PatternFlowUdpChecksum_Choice)(nil), // 1527: otg.PatternFlowUdpChecksum.Choice + (*PatternFlowUdpChecksum_Generated)(nil), // 1528: otg.PatternFlowUdpChecksum.Generated + (*PatternFlowGreChecksumPresent_Choice)(nil), // 1529: otg.PatternFlowGreChecksumPresent.Choice + (*PatternFlowGreReserved0_Choice)(nil), // 1530: otg.PatternFlowGreReserved0.Choice + (*PatternFlowGreVersion_Choice)(nil), // 1531: otg.PatternFlowGreVersion.Choice + (*PatternFlowGreProtocol_Choice)(nil), // 1532: otg.PatternFlowGreProtocol.Choice + (*PatternFlowGreChecksum_Choice)(nil), // 1533: otg.PatternFlowGreChecksum.Choice + (*PatternFlowGreChecksum_Generated)(nil), // 1534: otg.PatternFlowGreChecksum.Generated + (*PatternFlowGreReserved1_Choice)(nil), // 1535: otg.PatternFlowGreReserved1.Choice + (*PatternFlowGtpv1Version_Choice)(nil), // 1536: otg.PatternFlowGtpv1Version.Choice + (*PatternFlowGtpv1ProtocolType_Choice)(nil), // 1537: otg.PatternFlowGtpv1ProtocolType.Choice + (*PatternFlowGtpv1Reserved_Choice)(nil), // 1538: otg.PatternFlowGtpv1Reserved.Choice + (*PatternFlowGtpv1EFlag_Choice)(nil), // 1539: otg.PatternFlowGtpv1EFlag.Choice + (*PatternFlowGtpv1SFlag_Choice)(nil), // 1540: otg.PatternFlowGtpv1SFlag.Choice + (*PatternFlowGtpv1PnFlag_Choice)(nil), // 1541: otg.PatternFlowGtpv1PnFlag.Choice + (*PatternFlowGtpv1MessageType_Choice)(nil), // 1542: otg.PatternFlowGtpv1MessageType.Choice + (*PatternFlowGtpv1MessageLength_Choice)(nil), // 1543: otg.PatternFlowGtpv1MessageLength.Choice + (*PatternFlowGtpv1Teid_Choice)(nil), // 1544: otg.PatternFlowGtpv1Teid.Choice + (*PatternFlowGtpv1SquenceNumber_Choice)(nil), // 1545: otg.PatternFlowGtpv1SquenceNumber.Choice + (*PatternFlowGtpv1NPduNumber_Choice)(nil), // 1546: otg.PatternFlowGtpv1NPduNumber.Choice + (*PatternFlowGtpv1NextExtensionHeaderType_Choice)(nil), // 1547: otg.PatternFlowGtpv1NextExtensionHeaderType.Choice + (*PatternFlowGtpExtensionExtensionLength_Choice)(nil), // 1548: otg.PatternFlowGtpExtensionExtensionLength.Choice + (*PatternFlowGtpExtensionContents_Choice)(nil), // 1549: otg.PatternFlowGtpExtensionContents.Choice + (*PatternFlowGtpExtensionNextExtensionHeader_Choice)(nil), // 1550: otg.PatternFlowGtpExtensionNextExtensionHeader.Choice + (*PatternFlowGtpv2Version_Choice)(nil), // 1551: otg.PatternFlowGtpv2Version.Choice + (*PatternFlowGtpv2PiggybackingFlag_Choice)(nil), // 1552: otg.PatternFlowGtpv2PiggybackingFlag.Choice + (*PatternFlowGtpv2TeidFlag_Choice)(nil), // 1553: otg.PatternFlowGtpv2TeidFlag.Choice + (*PatternFlowGtpv2Spare1_Choice)(nil), // 1554: otg.PatternFlowGtpv2Spare1.Choice + (*PatternFlowGtpv2MessageType_Choice)(nil), // 1555: otg.PatternFlowGtpv2MessageType.Choice + (*PatternFlowGtpv2MessageLength_Choice)(nil), // 1556: otg.PatternFlowGtpv2MessageLength.Choice + (*PatternFlowGtpv2Teid_Choice)(nil), // 1557: otg.PatternFlowGtpv2Teid.Choice + (*PatternFlowGtpv2SequenceNumber_Choice)(nil), // 1558: otg.PatternFlowGtpv2SequenceNumber.Choice + (*PatternFlowGtpv2Spare2_Choice)(nil), // 1559: otg.PatternFlowGtpv2Spare2.Choice + (*PatternFlowArpHardwareType_Choice)(nil), // 1560: otg.PatternFlowArpHardwareType.Choice + (*PatternFlowArpProtocolType_Choice)(nil), // 1561: otg.PatternFlowArpProtocolType.Choice + (*PatternFlowArpHardwareLength_Choice)(nil), // 1562: otg.PatternFlowArpHardwareLength.Choice + (*PatternFlowArpProtocolLength_Choice)(nil), // 1563: otg.PatternFlowArpProtocolLength.Choice + (*PatternFlowArpOperation_Choice)(nil), // 1564: otg.PatternFlowArpOperation.Choice + (*PatternFlowArpSenderHardwareAddr_Choice)(nil), // 1565: otg.PatternFlowArpSenderHardwareAddr.Choice + (*PatternFlowArpSenderProtocolAddr_Choice)(nil), // 1566: otg.PatternFlowArpSenderProtocolAddr.Choice + (*PatternFlowArpTargetHardwareAddr_Choice)(nil), // 1567: otg.PatternFlowArpTargetHardwareAddr.Choice + (*PatternFlowArpTargetProtocolAddr_Choice)(nil), // 1568: otg.PatternFlowArpTargetProtocolAddr.Choice + (*PatternFlowIcmpEchoType_Choice)(nil), // 1569: otg.PatternFlowIcmpEchoType.Choice + (*PatternFlowIcmpEchoCode_Choice)(nil), // 1570: otg.PatternFlowIcmpEchoCode.Choice + (*PatternFlowIcmpEchoChecksum_Choice)(nil), // 1571: otg.PatternFlowIcmpEchoChecksum.Choice + (*PatternFlowIcmpEchoChecksum_Generated)(nil), // 1572: otg.PatternFlowIcmpEchoChecksum.Generated + (*PatternFlowIcmpEchoIdentifier_Choice)(nil), // 1573: otg.PatternFlowIcmpEchoIdentifier.Choice + (*PatternFlowIcmpEchoSequenceNumber_Choice)(nil), // 1574: otg.PatternFlowIcmpEchoSequenceNumber.Choice + (*PatternFlowIcmpCommonChecksum_Choice)(nil), // 1575: otg.PatternFlowIcmpCommonChecksum.Choice + (*PatternFlowIcmpCommonChecksum_Generated)(nil), // 1576: otg.PatternFlowIcmpCommonChecksum.Generated + (*PatternFlowIcmpNextFieldsIdentifier_Choice)(nil), // 1577: otg.PatternFlowIcmpNextFieldsIdentifier.Choice + (*PatternFlowIcmpNextFieldsSequenceNumber_Choice)(nil), // 1578: otg.PatternFlowIcmpNextFieldsSequenceNumber.Choice + (*PatternFlowIcmpv6EchoType_Choice)(nil), // 1579: otg.PatternFlowIcmpv6EchoType.Choice + (*PatternFlowIcmpv6EchoCode_Choice)(nil), // 1580: otg.PatternFlowIcmpv6EchoCode.Choice + (*PatternFlowIcmpv6EchoIdentifier_Choice)(nil), // 1581: otg.PatternFlowIcmpv6EchoIdentifier.Choice + (*PatternFlowIcmpv6EchoSequenceNumber_Choice)(nil), // 1582: otg.PatternFlowIcmpv6EchoSequenceNumber.Choice + (*PatternFlowIcmpv6EchoChecksum_Choice)(nil), // 1583: otg.PatternFlowIcmpv6EchoChecksum.Choice + (*PatternFlowIcmpv6EchoChecksum_Generated)(nil), // 1584: otg.PatternFlowIcmpv6EchoChecksum.Generated + (*PatternFlowIcmpv6CommonChecksum_Choice)(nil), // 1585: otg.PatternFlowIcmpv6CommonChecksum.Choice + (*PatternFlowIcmpv6CommonChecksum_Generated)(nil), // 1586: otg.PatternFlowIcmpv6CommonChecksum.Generated + (*PatternFlowPppAddress_Choice)(nil), // 1587: otg.PatternFlowPppAddress.Choice + (*PatternFlowPppControl_Choice)(nil), // 1588: otg.PatternFlowPppControl.Choice + (*PatternFlowPppProtocolType_Choice)(nil), // 1589: otg.PatternFlowPppProtocolType.Choice + (*PatternFlowIgmpv1Version_Choice)(nil), // 1590: otg.PatternFlowIgmpv1Version.Choice + (*PatternFlowIgmpv1Type_Choice)(nil), // 1591: otg.PatternFlowIgmpv1Type.Choice + (*PatternFlowIgmpv1Unused_Choice)(nil), // 1592: otg.PatternFlowIgmpv1Unused.Choice + (*PatternFlowIgmpv1Checksum_Choice)(nil), // 1593: otg.PatternFlowIgmpv1Checksum.Choice + (*PatternFlowIgmpv1Checksum_Generated)(nil), // 1594: otg.PatternFlowIgmpv1Checksum.Generated + (*PatternFlowIgmpv1GroupAddress_Choice)(nil), // 1595: otg.PatternFlowIgmpv1GroupAddress.Choice + (*PatternFlowMplsLabel_Choice)(nil), // 1596: otg.PatternFlowMplsLabel.Choice + (*PatternFlowMplsTrafficClass_Choice)(nil), // 1597: otg.PatternFlowMplsTrafficClass.Choice + (*PatternFlowMplsBottomOfStack_Choice)(nil), // 1598: otg.PatternFlowMplsBottomOfStack.Choice + (*PatternFlowMplsTimeToLive_Choice)(nil), // 1599: otg.PatternFlowMplsTimeToLive.Choice + (*PatternFlowRsvpVersion_Choice)(nil), // 1600: otg.PatternFlowRsvpVersion.Choice + (*PatternFlowRsvpRsvpChecksum_Choice)(nil), // 1601: otg.PatternFlowRsvpRsvpChecksum.Choice + (*PatternFlowRsvpRsvpChecksum_Generated)(nil), // 1602: otg.PatternFlowRsvpRsvpChecksum.Generated + (*PatternFlowRsvpTimeToLive_Choice)(nil), // 1603: otg.PatternFlowRsvpTimeToLive.Choice + (*PatternFlowRsvpReserved_Choice)(nil), // 1604: otg.PatternFlowRsvpReserved.Choice + (*PatternFlowRSVPPathSessionLspTunnelIpv4Ipv4TunnelEndPointAddress_Choice)(nil), // 1605: otg.PatternFlowRSVPPathSessionLspTunnelIpv4Ipv4TunnelEndPointAddress.Choice + (*PatternFlowRSVPPathSessionLspTunnelIpv4Reserved_Choice)(nil), // 1606: otg.PatternFlowRSVPPathSessionLspTunnelIpv4Reserved.Choice + (*PatternFlowRSVPPathSessionLspTunnelIpv4TunnelId_Choice)(nil), // 1607: otg.PatternFlowRSVPPathSessionLspTunnelIpv4TunnelId.Choice + (*PatternFlowRSVPPathSessionLspTunnelIpv4ExtendedTunnelId_Choice)(nil), // 1608: otg.PatternFlowRSVPPathSessionLspTunnelIpv4ExtendedTunnelId.Choice + (*PatternFlowRSVPPathRsvpHopIpv4Ipv4NextPreviousHopAddress_Choice)(nil), // 1609: otg.PatternFlowRSVPPathRsvpHopIpv4Ipv4NextPreviousHopAddress.Choice + (*PatternFlowRSVPPathRsvpHopIpv4LogicalInterfaceHandle_Choice)(nil), // 1610: otg.PatternFlowRSVPPathRsvpHopIpv4LogicalInterfaceHandle.Choice + (*PatternFlowRSVPPathTimeValuesType1RefreshPeriodR_Choice)(nil), // 1611: otg.PatternFlowRSVPPathTimeValuesType1RefreshPeriodR.Choice + (*PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixLBit_Choice)(nil), // 1612: otg.PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixLBit.Choice + (*PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixIpv4Address_Choice)(nil), // 1613: otg.PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixIpv4Address.Choice + (*PatternFlowRSVPPathExplicitRouteType1FourByteASNumberLBit_Choice)(nil), // 1614: otg.PatternFlowRSVPPathExplicitRouteType1FourByteASNumberLBit.Choice + (*PatternFlowRSVPPathExplicitRouteType1FourByteASNumberReserved_Choice)(nil), // 1615: otg.PatternFlowRSVPPathExplicitRouteType1FourByteASNumberReserved.Choice + (*PatternFlowRSVPPathLabelRequestWithoutLabelRangeReserved_Choice)(nil), // 1616: otg.PatternFlowRSVPPathLabelRequestWithoutLabelRangeReserved.Choice + (*PatternFlowRSVPPathLabelRequestWithoutLabelRangeL3Pid_Choice)(nil), // 1617: otg.PatternFlowRSVPPathLabelRequestWithoutLabelRangeL3pid.Choice + (*PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Ipv4TunnelSenderAddress_Choice)(nil), // 1618: otg.PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Ipv4TunnelSenderAddress.Choice + (*PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Reserved_Choice)(nil), // 1619: otg.PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Reserved.Choice + (*PatternFlowRSVPPathSenderTemplateLspTunnelIpv4LspId_Choice)(nil), // 1620: otg.PatternFlowRSVPPathSenderTemplateLspTunnelIpv4LspId.Choice + (*PatternFlowRSVPPathSenderTspecIntServVersion_Choice)(nil), // 1621: otg.PatternFlowRSVPPathSenderTspecIntServVersion.Choice + (*PatternFlowRSVPPathSenderTspecIntServReserved1_Choice)(nil), // 1622: otg.PatternFlowRSVPPathSenderTspecIntServReserved1.Choice + (*PatternFlowRSVPPathSenderTspecIntServOverallLength_Choice)(nil), // 1623: otg.PatternFlowRSVPPathSenderTspecIntServOverallLength.Choice + (*PatternFlowRSVPPathSenderTspecIntServServiceHeader_Choice)(nil), // 1624: otg.PatternFlowRSVPPathSenderTspecIntServServiceHeader.Choice + (*PatternFlowRSVPPathSenderTspecIntServZeroBit_Choice)(nil), // 1625: otg.PatternFlowRSVPPathSenderTspecIntServZeroBit.Choice + (*PatternFlowRSVPPathSenderTspecIntServReserved2_Choice)(nil), // 1626: otg.PatternFlowRSVPPathSenderTspecIntServReserved2.Choice + (*PatternFlowRSVPPathSenderTspecIntServLengthOfServiceData_Choice)(nil), // 1627: otg.PatternFlowRSVPPathSenderTspecIntServLengthOfServiceData.Choice + (*PatternFlowRSVPPathSenderTspecIntServParameterIdTokenBucketTspec_Choice)(nil), // 1628: otg.PatternFlowRSVPPathSenderTspecIntServParameterIdTokenBucketTspec.Choice + (*PatternFlowRSVPPathSenderTspecIntServParameter127Flag_Choice)(nil), // 1629: otg.PatternFlowRSVPPathSenderTspecIntServParameter127Flag.Choice + (*PatternFlowRSVPPathSenderTspecIntServParameter127Length_Choice)(nil), // 1630: otg.PatternFlowRSVPPathSenderTspecIntServParameter127Length.Choice + (*PatternFlowRSVPPathSenderTspecIntServMinimumPolicedUnit_Choice)(nil), // 1631: otg.PatternFlowRSVPPathSenderTspecIntServMinimumPolicedUnit.Choice + (*PatternFlowRSVPPathSenderTspecIntServMaximumPacketSize_Choice)(nil), // 1632: otg.PatternFlowRSVPPathSenderTspecIntServMaximumPacketSize.Choice + (*PatternFlowRSVPPathRecordRouteType1Ipv4AddressIpv4Address_Choice)(nil), // 1633: otg.PatternFlowRSVPPathRecordRouteType1Ipv4AddressIpv4Address.Choice + (*PatternFlowRSVPPathRecordRouteType1Ipv4AddressPrefixLength_Choice)(nil), // 1634: otg.PatternFlowRSVPPathRecordRouteType1Ipv4AddressPrefixLength.Choice + (*PatternFlowRSVPPathRecordRouteType1LabelFlags_Choice)(nil), // 1635: otg.PatternFlowRSVPPathRecordRouteType1LabelFlags.Choice + (*PatternFlowRSVPPathRecordRouteType1LabelCType_Choice)(nil), // 1636: otg.PatternFlowRSVPPathRecordRouteType1LabelCType.Choice + (*PatternFlowRSVPPathObjectsCustomType_Choice)(nil), // 1637: otg.PatternFlowRSVPPathObjectsCustomType.Choice + (*emptypb.Empty)(nil), // 1638: google.protobuf.Empty } var file_otg_proto_depIdxs = []int32{ - 319, // 0: otg.Config.ports:type_name -> otg.Port - 321, // 1: otg.Config.lags:type_name -> otg.Lag - 337, // 2: otg.Config.layer1:type_name -> otg.Layer1 - 342, // 3: otg.Config.captures:type_name -> otg.Capture - 350, // 4: otg.Config.devices:type_name -> otg.Device - 475, // 5: otg.Config.flows:type_name -> otg.Flow - 524, // 6: otg.Config.events:type_name -> otg.Event - 318, // 7: otg.Config.options:type_name -> otg.ConfigOptions - 530, // 8: otg.Config.lldp:type_name -> otg.Lldp - 320, // 9: otg.ConfigOptions.port_options:type_name -> otg.PortOptions - 351, // 10: otg.ConfigOptions.protocol_options:type_name -> otg.ProtocolOptions - 322, // 11: otg.Lag.ports:type_name -> otg.LagPort - 323, // 12: otg.Lag.protocol:type_name -> otg.LagProtocol - 326, // 13: otg.LagPort.lacp:type_name -> otg.LagPortLacp - 327, // 14: otg.LagPort.ethernet:type_name -> otg.DeviceEthernetBase + 378, // 0: otg.Config.ports:type_name -> otg.Port + 380, // 1: otg.Config.lags:type_name -> otg.Lag + 396, // 2: otg.Config.layer1:type_name -> otg.Layer1 + 401, // 3: otg.Config.captures:type_name -> otg.Capture + 409, // 4: otg.Config.devices:type_name -> otg.Device + 534, // 5: otg.Config.flows:type_name -> otg.Flow + 633, // 6: otg.Config.events:type_name -> otg.Event + 377, // 7: otg.Config.options:type_name -> otg.ConfigOptions + 639, // 8: otg.Config.lldp:type_name -> otg.Lldp + 379, // 9: otg.ConfigOptions.port_options:type_name -> otg.PortOptions + 410, // 10: otg.ConfigOptions.protocol_options:type_name -> otg.ProtocolOptions + 381, // 11: otg.Lag.ports:type_name -> otg.LagPort + 382, // 12: otg.Lag.protocol:type_name -> otg.LagProtocol + 385, // 13: otg.LagPort.lacp:type_name -> otg.LagPortLacp + 386, // 14: otg.LagPort.ethernet:type_name -> otg.DeviceEthernetBase 0, // 15: otg.LagProtocol.choice:type_name -> otg.LagProtocol.Choice.Enum - 325, // 16: otg.LagProtocol.lacp:type_name -> otg.LagProtocolLacp - 324, // 17: otg.LagProtocol.static:type_name -> otg.LagProtocolStatic + 384, // 16: otg.LagProtocol.lacp:type_name -> otg.LagProtocolLacp + 383, // 17: otg.LagProtocol.static:type_name -> otg.LagProtocolStatic 1, // 18: otg.LagPortLacp.actor_activity:type_name -> otg.LagPortLacp.ActorActivity.Enum - 330, // 19: otg.DeviceEthernetBase.vlans:type_name -> otg.DeviceVlan - 329, // 20: otg.DeviceEthernet.connection:type_name -> otg.EthernetConnection - 331, // 21: otg.DeviceEthernet.ipv4_addresses:type_name -> otg.DeviceIpv4 - 334, // 22: otg.DeviceEthernet.ipv6_addresses:type_name -> otg.DeviceIpv6 - 330, // 23: otg.DeviceEthernet.vlans:type_name -> otg.DeviceVlan + 389, // 19: otg.DeviceEthernetBase.vlans:type_name -> otg.DeviceVlan + 388, // 20: otg.DeviceEthernet.connection:type_name -> otg.EthernetConnection + 390, // 21: otg.DeviceEthernet.ipv4_addresses:type_name -> otg.DeviceIpv4 + 393, // 22: otg.DeviceEthernet.ipv6_addresses:type_name -> otg.DeviceIpv6 + 389, // 23: otg.DeviceEthernet.vlans:type_name -> otg.DeviceVlan 2, // 24: otg.EthernetConnection.choice:type_name -> otg.EthernetConnection.Choice.Enum 3, // 25: otg.DeviceVlan.tpid:type_name -> otg.DeviceVlan.Tpid.Enum - 333, // 26: otg.DeviceIpv4.gateway_mac:type_name -> otg.DeviceIpv4GatewayMAC + 392, // 26: otg.DeviceIpv4.gateway_mac:type_name -> otg.DeviceIpv4GatewayMAC 4, // 27: otg.DeviceIpv4GatewayMAC.choice:type_name -> otg.DeviceIpv4GatewayMAC.Choice.Enum - 336, // 28: otg.DeviceIpv6.gateway_mac:type_name -> otg.DeviceIpv6GatewayMAC + 395, // 28: otg.DeviceIpv6.gateway_mac:type_name -> otg.DeviceIpv6GatewayMAC 5, // 29: otg.DeviceIpv6GatewayMAC.choice:type_name -> otg.DeviceIpv6GatewayMAC.Choice.Enum 6, // 30: otg.Layer1.speed:type_name -> otg.Layer1.Speed.Enum 7, // 31: otg.Layer1.media:type_name -> otg.Layer1.Media.Enum - 338, // 32: otg.Layer1.auto_negotiation:type_name -> otg.Layer1AutoNegotiation - 339, // 33: otg.Layer1.flow_control:type_name -> otg.Layer1FlowControl + 397, // 32: otg.Layer1.auto_negotiation:type_name -> otg.Layer1AutoNegotiation + 398, // 33: otg.Layer1.flow_control:type_name -> otg.Layer1FlowControl 8, // 34: otg.Layer1FlowControl.choice:type_name -> otg.Layer1FlowControl.Choice.Enum - 341, // 35: otg.Layer1FlowControl.ieee_802_1qbb:type_name -> otg.Layer1Ieee8021qbb - 340, // 36: otg.Layer1FlowControl.ieee_802_3x:type_name -> otg.Layer1Ieee8023x - 343, // 37: otg.Capture.filters:type_name -> otg.CaptureFilter + 400, // 35: otg.Layer1FlowControl.ieee_802_1qbb:type_name -> otg.Layer1Ieee8021qbb + 399, // 36: otg.Layer1FlowControl.ieee_802_3x:type_name -> otg.Layer1Ieee8023x + 402, // 37: otg.Capture.filters:type_name -> otg.CaptureFilter 9, // 38: otg.Capture.format:type_name -> otg.Capture.Format.Enum 10, // 39: otg.CaptureFilter.choice:type_name -> otg.CaptureFilter.Choice.Enum - 344, // 40: otg.CaptureFilter.custom:type_name -> otg.CaptureCustom - 346, // 41: otg.CaptureFilter.ethernet:type_name -> otg.CaptureEthernet - 347, // 42: otg.CaptureFilter.vlan:type_name -> otg.CaptureVlan - 348, // 43: otg.CaptureFilter.ipv4:type_name -> otg.CaptureIpv4 - 349, // 44: otg.CaptureFilter.ipv6:type_name -> otg.CaptureIpv6 - 345, // 45: otg.CaptureEthernet.src:type_name -> otg.CaptureField - 345, // 46: otg.CaptureEthernet.dst:type_name -> otg.CaptureField - 345, // 47: otg.CaptureEthernet.ether_type:type_name -> otg.CaptureField - 345, // 48: otg.CaptureEthernet.pfc_queue:type_name -> otg.CaptureField - 345, // 49: otg.CaptureVlan.priority:type_name -> otg.CaptureField - 345, // 50: otg.CaptureVlan.cfi:type_name -> otg.CaptureField - 345, // 51: otg.CaptureVlan.id:type_name -> otg.CaptureField - 345, // 52: otg.CaptureVlan.protocol:type_name -> otg.CaptureField - 345, // 53: otg.CaptureIpv4.version:type_name -> otg.CaptureField - 345, // 54: otg.CaptureIpv4.header_length:type_name -> otg.CaptureField - 345, // 55: otg.CaptureIpv4.priority:type_name -> otg.CaptureField - 345, // 56: otg.CaptureIpv4.total_length:type_name -> otg.CaptureField - 345, // 57: otg.CaptureIpv4.identification:type_name -> otg.CaptureField - 345, // 58: otg.CaptureIpv4.reserved:type_name -> otg.CaptureField - 345, // 59: otg.CaptureIpv4.dont_fragment:type_name -> otg.CaptureField - 345, // 60: otg.CaptureIpv4.more_fragments:type_name -> otg.CaptureField - 345, // 61: otg.CaptureIpv4.fragment_offset:type_name -> otg.CaptureField - 345, // 62: otg.CaptureIpv4.time_to_live:type_name -> otg.CaptureField - 345, // 63: otg.CaptureIpv4.protocol:type_name -> otg.CaptureField - 345, // 64: otg.CaptureIpv4.header_checksum:type_name -> otg.CaptureField - 345, // 65: otg.CaptureIpv4.src:type_name -> otg.CaptureField - 345, // 66: otg.CaptureIpv4.dst:type_name -> otg.CaptureField - 345, // 67: otg.CaptureIpv6.version:type_name -> otg.CaptureField - 345, // 68: otg.CaptureIpv6.traffic_class:type_name -> otg.CaptureField - 345, // 69: otg.CaptureIpv6.flow_label:type_name -> otg.CaptureField - 345, // 70: otg.CaptureIpv6.payload_length:type_name -> otg.CaptureField - 345, // 71: otg.CaptureIpv6.next_header:type_name -> otg.CaptureField - 345, // 72: otg.CaptureIpv6.hop_limit:type_name -> otg.CaptureField - 345, // 73: otg.CaptureIpv6.src:type_name -> otg.CaptureField - 345, // 74: otg.CaptureIpv6.dst:type_name -> otg.CaptureField - 328, // 75: otg.Device.ethernets:type_name -> otg.DeviceEthernet - 332, // 76: otg.Device.ipv4_loopbacks:type_name -> otg.DeviceIpv4Loopback - 335, // 77: otg.Device.ipv6_loopbacks:type_name -> otg.DeviceIpv6Loopback - 352, // 78: otg.Device.isis:type_name -> otg.DeviceIsisRouter - 371, // 79: otg.Device.bgp:type_name -> otg.DeviceBgpRouter - 452, // 80: otg.Device.vxlan:type_name -> otg.DeviceVxlan - 464, // 81: otg.Device.rsvp:type_name -> otg.DeviceRsvp - 353, // 82: otg.DeviceIsisRouter.instance:type_name -> otg.DeviceIsisMultiInstance - 354, // 83: otg.DeviceIsisRouter.interfaces:type_name -> otg.IsisInterface - 362, // 84: otg.DeviceIsisRouter.basic:type_name -> otg.IsisBasic - 363, // 85: otg.DeviceIsisRouter.advanced:type_name -> otg.IsisAdvanced - 364, // 86: otg.DeviceIsisRouter.router_auth:type_name -> otg.IsisAuthentication - 366, // 87: otg.DeviceIsisRouter.v4_routes:type_name -> otg.IsisV4RouteRange - 370, // 88: otg.DeviceIsisRouter.v6_routes:type_name -> otg.IsisV6RouteRange + 403, // 40: otg.CaptureFilter.custom:type_name -> otg.CaptureCustom + 405, // 41: otg.CaptureFilter.ethernet:type_name -> otg.CaptureEthernet + 406, // 42: otg.CaptureFilter.vlan:type_name -> otg.CaptureVlan + 407, // 43: otg.CaptureFilter.ipv4:type_name -> otg.CaptureIpv4 + 408, // 44: otg.CaptureFilter.ipv6:type_name -> otg.CaptureIpv6 + 404, // 45: otg.CaptureEthernet.src:type_name -> otg.CaptureField + 404, // 46: otg.CaptureEthernet.dst:type_name -> otg.CaptureField + 404, // 47: otg.CaptureEthernet.ether_type:type_name -> otg.CaptureField + 404, // 48: otg.CaptureEthernet.pfc_queue:type_name -> otg.CaptureField + 404, // 49: otg.CaptureVlan.priority:type_name -> otg.CaptureField + 404, // 50: otg.CaptureVlan.cfi:type_name -> otg.CaptureField + 404, // 51: otg.CaptureVlan.id:type_name -> otg.CaptureField + 404, // 52: otg.CaptureVlan.protocol:type_name -> otg.CaptureField + 404, // 53: otg.CaptureIpv4.version:type_name -> otg.CaptureField + 404, // 54: otg.CaptureIpv4.header_length:type_name -> otg.CaptureField + 404, // 55: otg.CaptureIpv4.priority:type_name -> otg.CaptureField + 404, // 56: otg.CaptureIpv4.total_length:type_name -> otg.CaptureField + 404, // 57: otg.CaptureIpv4.identification:type_name -> otg.CaptureField + 404, // 58: otg.CaptureIpv4.reserved:type_name -> otg.CaptureField + 404, // 59: otg.CaptureIpv4.dont_fragment:type_name -> otg.CaptureField + 404, // 60: otg.CaptureIpv4.more_fragments:type_name -> otg.CaptureField + 404, // 61: otg.CaptureIpv4.fragment_offset:type_name -> otg.CaptureField + 404, // 62: otg.CaptureIpv4.time_to_live:type_name -> otg.CaptureField + 404, // 63: otg.CaptureIpv4.protocol:type_name -> otg.CaptureField + 404, // 64: otg.CaptureIpv4.header_checksum:type_name -> otg.CaptureField + 404, // 65: otg.CaptureIpv4.src:type_name -> otg.CaptureField + 404, // 66: otg.CaptureIpv4.dst:type_name -> otg.CaptureField + 404, // 67: otg.CaptureIpv6.version:type_name -> otg.CaptureField + 404, // 68: otg.CaptureIpv6.traffic_class:type_name -> otg.CaptureField + 404, // 69: otg.CaptureIpv6.flow_label:type_name -> otg.CaptureField + 404, // 70: otg.CaptureIpv6.payload_length:type_name -> otg.CaptureField + 404, // 71: otg.CaptureIpv6.next_header:type_name -> otg.CaptureField + 404, // 72: otg.CaptureIpv6.hop_limit:type_name -> otg.CaptureField + 404, // 73: otg.CaptureIpv6.src:type_name -> otg.CaptureField + 404, // 74: otg.CaptureIpv6.dst:type_name -> otg.CaptureField + 387, // 75: otg.Device.ethernets:type_name -> otg.DeviceEthernet + 391, // 76: otg.Device.ipv4_loopbacks:type_name -> otg.DeviceIpv4Loopback + 394, // 77: otg.Device.ipv6_loopbacks:type_name -> otg.DeviceIpv6Loopback + 411, // 78: otg.Device.isis:type_name -> otg.DeviceIsisRouter + 430, // 79: otg.Device.bgp:type_name -> otg.DeviceBgpRouter + 511, // 80: otg.Device.vxlan:type_name -> otg.DeviceVxlan + 523, // 81: otg.Device.rsvp:type_name -> otg.DeviceRsvp + 412, // 82: otg.DeviceIsisRouter.instance:type_name -> otg.DeviceIsisMultiInstance + 413, // 83: otg.DeviceIsisRouter.interfaces:type_name -> otg.IsisInterface + 421, // 84: otg.DeviceIsisRouter.basic:type_name -> otg.IsisBasic + 422, // 85: otg.DeviceIsisRouter.advanced:type_name -> otg.IsisAdvanced + 423, // 86: otg.DeviceIsisRouter.router_auth:type_name -> otg.IsisAuthentication + 425, // 87: otg.DeviceIsisRouter.v4_routes:type_name -> otg.IsisV4RouteRange + 429, // 88: otg.DeviceIsisRouter.v6_routes:type_name -> otg.IsisV6RouteRange 11, // 89: otg.IsisInterface.network_type:type_name -> otg.IsisInterface.NetworkType.Enum 12, // 90: otg.IsisInterface.level_type:type_name -> otg.IsisInterface.LevelType.Enum - 355, // 91: otg.IsisInterface.l1_settings:type_name -> otg.IsisInterfaceLevel - 355, // 92: otg.IsisInterface.l2_settings:type_name -> otg.IsisInterfaceLevel - 356, // 93: otg.IsisInterface.multi_topology_ids:type_name -> otg.IsisMT - 357, // 94: otg.IsisInterface.traffic_engineering:type_name -> otg.LinkStateTE - 359, // 95: otg.IsisInterface.authentication:type_name -> otg.IsisInterfaceAuthentication - 360, // 96: otg.IsisInterface.advanced:type_name -> otg.IsisInterfaceAdvanced - 361, // 97: otg.IsisInterface.link_protection:type_name -> otg.IsisInterfaceLinkProtection - 358, // 98: otg.LinkStateTE.priority_bandwidths:type_name -> otg.LinkStatepriorityBandwidths + 414, // 91: otg.IsisInterface.l1_settings:type_name -> otg.IsisInterfaceLevel + 414, // 92: otg.IsisInterface.l2_settings:type_name -> otg.IsisInterfaceLevel + 415, // 93: otg.IsisInterface.multi_topology_ids:type_name -> otg.IsisMT + 416, // 94: otg.IsisInterface.traffic_engineering:type_name -> otg.LinkStateTE + 418, // 95: otg.IsisInterface.authentication:type_name -> otg.IsisInterfaceAuthentication + 419, // 96: otg.IsisInterface.advanced:type_name -> otg.IsisInterfaceAdvanced + 420, // 97: otg.IsisInterface.link_protection:type_name -> otg.IsisInterfaceLinkProtection + 417, // 98: otg.LinkStateTE.priority_bandwidths:type_name -> otg.LinkStatepriorityBandwidths 13, // 99: otg.IsisInterfaceAuthentication.auth_type:type_name -> otg.IsisInterfaceAuthentication.AuthType.Enum - 365, // 100: otg.IsisAuthentication.area_auth:type_name -> otg.IsisAuthenticationBase - 365, // 101: otg.IsisAuthentication.domain_auth:type_name -> otg.IsisAuthenticationBase + 424, // 100: otg.IsisAuthentication.area_auth:type_name -> otg.IsisAuthenticationBase + 424, // 101: otg.IsisAuthentication.domain_auth:type_name -> otg.IsisAuthenticationBase 14, // 102: otg.IsisAuthenticationBase.auth_type:type_name -> otg.IsisAuthenticationBase.AuthType.Enum - 367, // 103: otg.IsisV4RouteRange.addresses:type_name -> otg.V4RouteAddress + 426, // 103: otg.IsisV4RouteRange.addresses:type_name -> otg.V4RouteAddress 15, // 104: otg.IsisV4RouteRange.origin_type:type_name -> otg.IsisV4RouteRange.OriginType.Enum 16, // 105: otg.IsisV4RouteRange.redistribution_type:type_name -> otg.IsisV4RouteRange.RedistributionType.Enum - 368, // 106: otg.IsisV6RouteRange.addresses:type_name -> otg.V6RouteAddress + 427, // 106: otg.IsisV6RouteRange.addresses:type_name -> otg.V6RouteAddress 17, // 107: otg.IsisV6RouteRange.origin_type:type_name -> otg.IsisV6RouteRange.OriginType.Enum 18, // 108: otg.IsisV6RouteRange.redistribution_type:type_name -> otg.IsisV6RouteRange.RedistributionType.Enum - 380, // 109: otg.DeviceBgpRouter.ipv4_interfaces:type_name -> otg.BgpV4Interface - 446, // 110: otg.DeviceBgpRouter.ipv6_interfaces:type_name -> otg.BgpV6Interface + 439, // 109: otg.DeviceBgpRouter.ipv4_interfaces:type_name -> otg.BgpV4Interface + 505, // 110: otg.DeviceBgpRouter.ipv6_interfaces:type_name -> otg.BgpV6Interface 19, // 111: otg.DeviceBgpMessageHeaderError.subcode:type_name -> otg.DeviceBgpMessageHeaderError.Subcode.Enum 20, // 112: otg.DeviceBgpOpenMessageError.subcode:type_name -> otg.DeviceBgpOpenMessageError.Subcode.Enum 21, // 113: otg.DeviceBgpUpdateMessageError.subcode:type_name -> otg.DeviceBgpUpdateMessageError.Subcode.Enum 22, // 114: otg.DeviceBgpCeaseError.subcode:type_name -> otg.DeviceBgpCeaseError.Subcode.Enum - 381, // 115: otg.BgpV4Peer.evpn_ethernet_segments:type_name -> otg.BgpV4EthernetSegment + 440, // 115: otg.BgpV4Peer.evpn_ethernet_segments:type_name -> otg.BgpV4EthernetSegment 23, // 116: otg.BgpV4Peer.as_type:type_name -> otg.BgpV4Peer.AsType.Enum 24, // 117: otg.BgpV4Peer.as_number_width:type_name -> otg.BgpV4Peer.AsNumberWidth.Enum - 394, // 118: otg.BgpV4Peer.advanced:type_name -> otg.BgpAdvanced - 395, // 119: otg.BgpV4Peer.capability:type_name -> otg.BgpCapability - 396, // 120: otg.BgpV4Peer.learned_information_filter:type_name -> otg.BgpLearnedInformationFilter - 397, // 121: otg.BgpV4Peer.v4_routes:type_name -> otg.BgpV4RouteRange - 417, // 122: otg.BgpV4Peer.v6_routes:type_name -> otg.BgpV6RouteRange - 418, // 123: otg.BgpV4Peer.v4_srte_policies:type_name -> otg.BgpSrteV4Policy - 442, // 124: otg.BgpV4Peer.v6_srte_policies:type_name -> otg.BgpSrteV6Policy - 444, // 125: otg.BgpV4Peer.graceful_restart:type_name -> otg.BgpGracefulRestart - 379, // 126: otg.BgpV4Interface.peers:type_name -> otg.BgpV4Peer - 382, // 127: otg.BgpV4EthernetSegment.df_election:type_name -> otg.BgpEthernetSegmentDfElection - 388, // 128: otg.BgpV4EthernetSegment.evis:type_name -> otg.BgpV4EvpnEvis + 453, // 118: otg.BgpV4Peer.advanced:type_name -> otg.BgpAdvanced + 454, // 119: otg.BgpV4Peer.capability:type_name -> otg.BgpCapability + 455, // 120: otg.BgpV4Peer.learned_information_filter:type_name -> otg.BgpLearnedInformationFilter + 456, // 121: otg.BgpV4Peer.v4_routes:type_name -> otg.BgpV4RouteRange + 476, // 122: otg.BgpV4Peer.v6_routes:type_name -> otg.BgpV6RouteRange + 477, // 123: otg.BgpV4Peer.v4_srte_policies:type_name -> otg.BgpSrteV4Policy + 501, // 124: otg.BgpV4Peer.v6_srte_policies:type_name -> otg.BgpSrteV6Policy + 503, // 125: otg.BgpV4Peer.graceful_restart:type_name -> otg.BgpGracefulRestart + 438, // 126: otg.BgpV4Interface.peers:type_name -> otg.BgpV4Peer + 441, // 127: otg.BgpV4EthernetSegment.df_election:type_name -> otg.BgpEthernetSegmentDfElection + 447, // 128: otg.BgpV4EthernetSegment.evis:type_name -> otg.BgpV4EvpnEvis 25, // 129: otg.BgpV4EthernetSegment.active_mode:type_name -> otg.BgpV4EthernetSegment.ActiveMode.Enum - 383, // 130: otg.BgpV4EthernetSegment.advanced:type_name -> otg.BgpRouteAdvanced - 384, // 131: otg.BgpV4EthernetSegment.communities:type_name -> otg.BgpCommunity - 385, // 132: otg.BgpV4EthernetSegment.ext_communities:type_name -> otg.BgpExtCommunity - 386, // 133: otg.BgpV4EthernetSegment.as_path:type_name -> otg.BgpAsPath + 442, // 130: otg.BgpV4EthernetSegment.advanced:type_name -> otg.BgpRouteAdvanced + 443, // 131: otg.BgpV4EthernetSegment.communities:type_name -> otg.BgpCommunity + 444, // 132: otg.BgpV4EthernetSegment.ext_communities:type_name -> otg.BgpExtCommunity + 445, // 133: otg.BgpV4EthernetSegment.as_path:type_name -> otg.BgpAsPath 26, // 134: otg.BgpRouteAdvanced.origin:type_name -> otg.BgpRouteAdvanced.Origin.Enum 27, // 135: otg.BgpCommunity.type:type_name -> otg.BgpCommunity.Type.Enum 28, // 136: otg.BgpExtCommunity.type:type_name -> otg.BgpExtCommunity.Type.Enum 29, // 137: otg.BgpExtCommunity.subtype:type_name -> otg.BgpExtCommunity.Subtype.Enum 30, // 138: otg.BgpAsPath.as_set_mode:type_name -> otg.BgpAsPath.AsSetMode.Enum - 387, // 139: otg.BgpAsPath.segments:type_name -> otg.BgpAsPathSegment + 446, // 139: otg.BgpAsPath.segments:type_name -> otg.BgpAsPathSegment 31, // 140: otg.BgpAsPathSegment.type:type_name -> otg.BgpAsPathSegment.Type.Enum 32, // 141: otg.BgpV4EvpnEvis.choice:type_name -> otg.BgpV4EvpnEvis.Choice.Enum - 389, // 142: otg.BgpV4EvpnEvis.evi_vxlan:type_name -> otg.BgpV4EviVxlan - 390, // 143: otg.BgpV4EviVxlan.broadcast_domains:type_name -> otg.BgpV4EviVxlanBroadcastDomain + 448, // 142: otg.BgpV4EvpnEvis.evi_vxlan:type_name -> otg.BgpV4EviVxlan + 449, // 143: otg.BgpV4EviVxlan.broadcast_domains:type_name -> otg.BgpV4EviVxlanBroadcastDomain 33, // 144: otg.BgpV4EviVxlan.replication_type:type_name -> otg.BgpV4EviVxlan.ReplicationType.Enum - 392, // 145: otg.BgpV4EviVxlan.route_distinguisher:type_name -> otg.BgpRouteDistinguisher - 393, // 146: otg.BgpV4EviVxlan.route_target_export:type_name -> otg.BgpRouteTarget - 393, // 147: otg.BgpV4EviVxlan.route_target_import:type_name -> otg.BgpRouteTarget - 393, // 148: otg.BgpV4EviVxlan.l3_route_target_export:type_name -> otg.BgpRouteTarget - 393, // 149: otg.BgpV4EviVxlan.l3_route_target_import:type_name -> otg.BgpRouteTarget - 383, // 150: otg.BgpV4EviVxlan.advanced:type_name -> otg.BgpRouteAdvanced - 384, // 151: otg.BgpV4EviVxlan.communities:type_name -> otg.BgpCommunity - 385, // 152: otg.BgpV4EviVxlan.ext_communities:type_name -> otg.BgpExtCommunity - 386, // 153: otg.BgpV4EviVxlan.as_path:type_name -> otg.BgpAsPath - 391, // 154: otg.BgpV4EviVxlanBroadcastDomain.cmac_ip_range:type_name -> otg.BgpCMacIpRange - 369, // 155: otg.BgpCMacIpRange.mac_addresses:type_name -> otg.MACRouteAddress - 367, // 156: otg.BgpCMacIpRange.ipv4_addresses:type_name -> otg.V4RouteAddress - 368, // 157: otg.BgpCMacIpRange.ipv6_addresses:type_name -> otg.V6RouteAddress - 383, // 158: otg.BgpCMacIpRange.advanced:type_name -> otg.BgpRouteAdvanced - 384, // 159: otg.BgpCMacIpRange.communities:type_name -> otg.BgpCommunity - 385, // 160: otg.BgpCMacIpRange.ext_communities:type_name -> otg.BgpExtCommunity - 386, // 161: otg.BgpCMacIpRange.as_path:type_name -> otg.BgpAsPath + 451, // 145: otg.BgpV4EviVxlan.route_distinguisher:type_name -> otg.BgpRouteDistinguisher + 452, // 146: otg.BgpV4EviVxlan.route_target_export:type_name -> otg.BgpRouteTarget + 452, // 147: otg.BgpV4EviVxlan.route_target_import:type_name -> otg.BgpRouteTarget + 452, // 148: otg.BgpV4EviVxlan.l3_route_target_export:type_name -> otg.BgpRouteTarget + 452, // 149: otg.BgpV4EviVxlan.l3_route_target_import:type_name -> otg.BgpRouteTarget + 442, // 150: otg.BgpV4EviVxlan.advanced:type_name -> otg.BgpRouteAdvanced + 443, // 151: otg.BgpV4EviVxlan.communities:type_name -> otg.BgpCommunity + 444, // 152: otg.BgpV4EviVxlan.ext_communities:type_name -> otg.BgpExtCommunity + 445, // 153: otg.BgpV4EviVxlan.as_path:type_name -> otg.BgpAsPath + 450, // 154: otg.BgpV4EviVxlanBroadcastDomain.cmac_ip_range:type_name -> otg.BgpCMacIpRange + 428, // 155: otg.BgpCMacIpRange.mac_addresses:type_name -> otg.MACRouteAddress + 426, // 156: otg.BgpCMacIpRange.ipv4_addresses:type_name -> otg.V4RouteAddress + 427, // 157: otg.BgpCMacIpRange.ipv6_addresses:type_name -> otg.V6RouteAddress + 442, // 158: otg.BgpCMacIpRange.advanced:type_name -> otg.BgpRouteAdvanced + 443, // 159: otg.BgpCMacIpRange.communities:type_name -> otg.BgpCommunity + 444, // 160: otg.BgpCMacIpRange.ext_communities:type_name -> otg.BgpExtCommunity + 445, // 161: otg.BgpCMacIpRange.as_path:type_name -> otg.BgpAsPath 34, // 162: otg.BgpRouteDistinguisher.rd_type:type_name -> otg.BgpRouteDistinguisher.RdType.Enum 35, // 163: otg.BgpRouteTarget.rt_type:type_name -> otg.BgpRouteTarget.RtType.Enum - 367, // 164: otg.BgpV4RouteRange.addresses:type_name -> otg.V4RouteAddress + 426, // 164: otg.BgpV4RouteRange.addresses:type_name -> otg.V4RouteAddress 36, // 165: otg.BgpV4RouteRange.next_hop_mode:type_name -> otg.BgpV4RouteRange.NextHopMode.Enum 37, // 166: otg.BgpV4RouteRange.next_hop_address_type:type_name -> otg.BgpV4RouteRange.NextHopAddressType.Enum - 383, // 167: otg.BgpV4RouteRange.advanced:type_name -> otg.BgpRouteAdvanced - 384, // 168: otg.BgpV4RouteRange.communities:type_name -> otg.BgpCommunity - 386, // 169: otg.BgpV4RouteRange.as_path:type_name -> otg.BgpAsPath - 398, // 170: otg.BgpV4RouteRange.add_path:type_name -> otg.BgpAddPath - 385, // 171: otg.BgpV4RouteRange.ext_communities:type_name -> otg.BgpExtCommunity - 399, // 172: otg.BgpV4RouteRange.extended_communities:type_name -> otg.BgpExtendedCommunity + 442, // 167: otg.BgpV4RouteRange.advanced:type_name -> otg.BgpRouteAdvanced + 443, // 168: otg.BgpV4RouteRange.communities:type_name -> otg.BgpCommunity + 445, // 169: otg.BgpV4RouteRange.as_path:type_name -> otg.BgpAsPath + 457, // 170: otg.BgpV4RouteRange.add_path:type_name -> otg.BgpAddPath + 444, // 171: otg.BgpV4RouteRange.ext_communities:type_name -> otg.BgpExtCommunity + 458, // 172: otg.BgpV4RouteRange.extended_communities:type_name -> otg.BgpExtendedCommunity 38, // 173: otg.BgpExtendedCommunity.choice:type_name -> otg.BgpExtendedCommunity.Choice.Enum - 402, // 174: otg.BgpExtendedCommunity.transitive_2octet_as_type:type_name -> otg.BgpExtendedCommunityTransitive2OctetAsType - 405, // 175: otg.BgpExtendedCommunity.transitive_ipv4_address_type:type_name -> otg.BgpExtendedCommunityTransitiveIpv4AddressType - 408, // 176: otg.BgpExtendedCommunity.transitive_4octet_as_type:type_name -> otg.BgpExtendedCommunityTransitive4OctetAsType - 411, // 177: otg.BgpExtendedCommunity.transitive_opaque_type:type_name -> otg.BgpExtendedCommunityTransitiveOpaqueType - 413, // 178: otg.BgpExtendedCommunity.transitive_evpn_type:type_name -> otg.BgpExtendedCommunityTransitiveEvpnType - 415, // 179: otg.BgpExtendedCommunity.non_transitive_2octet_as_type:type_name -> otg.BgpExtendedCommunityNonTransitive2OctetAsType - 416, // 180: otg.BgpExtendedCommunity.custom:type_name -> otg.BgpExtendedCommunityCustomType + 461, // 174: otg.BgpExtendedCommunity.transitive_2octet_as_type:type_name -> otg.BgpExtendedCommunityTransitive2OctetAsType + 464, // 175: otg.BgpExtendedCommunity.transitive_ipv4_address_type:type_name -> otg.BgpExtendedCommunityTransitiveIpv4AddressType + 467, // 176: otg.BgpExtendedCommunity.transitive_4octet_as_type:type_name -> otg.BgpExtendedCommunityTransitive4OctetAsType + 470, // 177: otg.BgpExtendedCommunity.transitive_opaque_type:type_name -> otg.BgpExtendedCommunityTransitiveOpaqueType + 472, // 178: otg.BgpExtendedCommunity.transitive_evpn_type:type_name -> otg.BgpExtendedCommunityTransitiveEvpnType + 474, // 179: otg.BgpExtendedCommunity.non_transitive_2octet_as_type:type_name -> otg.BgpExtendedCommunityNonTransitive2OctetAsType + 475, // 180: otg.BgpExtendedCommunity.custom:type_name -> otg.BgpExtendedCommunityCustomType 39, // 181: otg.BgpExtendedCommunityTransitive2OctetAsType.choice:type_name -> otg.BgpExtendedCommunityTransitive2OctetAsType.Choice.Enum - 400, // 182: otg.BgpExtendedCommunityTransitive2OctetAsType.route_target_subtype:type_name -> otg.BgpExtendedCommunityTransitive2OctetAsTypeRouteTarget - 401, // 183: otg.BgpExtendedCommunityTransitive2OctetAsType.route_origin_subtype:type_name -> otg.BgpExtendedCommunityTransitive2OctetAsTypeRouteOrigin + 459, // 182: otg.BgpExtendedCommunityTransitive2OctetAsType.route_target_subtype:type_name -> otg.BgpExtendedCommunityTransitive2OctetAsTypeRouteTarget + 460, // 183: otg.BgpExtendedCommunityTransitive2OctetAsType.route_origin_subtype:type_name -> otg.BgpExtendedCommunityTransitive2OctetAsTypeRouteOrigin 40, // 184: otg.BgpExtendedCommunityTransitiveIpv4AddressType.choice:type_name -> otg.BgpExtendedCommunityTransitiveIpv4AddressType.Choice.Enum - 404, // 185: otg.BgpExtendedCommunityTransitiveIpv4AddressType.route_target_subtype:type_name -> otg.BgpExtendedCommunityTransitiveIpv4AddressTypeRouteTarget - 403, // 186: otg.BgpExtendedCommunityTransitiveIpv4AddressType.route_origin_subtype:type_name -> otg.BgpExtendedCommunityTransitiveIpv4AddressTypeRouteOrigin + 463, // 185: otg.BgpExtendedCommunityTransitiveIpv4AddressType.route_target_subtype:type_name -> otg.BgpExtendedCommunityTransitiveIpv4AddressTypeRouteTarget + 462, // 186: otg.BgpExtendedCommunityTransitiveIpv4AddressType.route_origin_subtype:type_name -> otg.BgpExtendedCommunityTransitiveIpv4AddressTypeRouteOrigin 41, // 187: otg.BgpExtendedCommunityTransitive4OctetAsType.choice:type_name -> otg.BgpExtendedCommunityTransitive4OctetAsType.Choice.Enum - 406, // 188: otg.BgpExtendedCommunityTransitive4OctetAsType.route_target_subtype:type_name -> otg.BgpExtendedCommunityTransitive4OctetAsTypeRouteTarget - 407, // 189: otg.BgpExtendedCommunityTransitive4OctetAsType.route_origin_subtype:type_name -> otg.BgpExtendedCommunityTransitive4OctetAsTypeRouteOrigin + 465, // 188: otg.BgpExtendedCommunityTransitive4OctetAsType.route_target_subtype:type_name -> otg.BgpExtendedCommunityTransitive4OctetAsTypeRouteTarget + 466, // 189: otg.BgpExtendedCommunityTransitive4OctetAsType.route_origin_subtype:type_name -> otg.BgpExtendedCommunityTransitive4OctetAsTypeRouteOrigin 42, // 190: otg.BgpExtendedCommunityTransitiveOpaqueType.choice:type_name -> otg.BgpExtendedCommunityTransitiveOpaqueType.Choice.Enum - 409, // 191: otg.BgpExtendedCommunityTransitiveOpaqueType.color_subtype:type_name -> otg.BgpExtendedCommunityTransitiveOpaqueTypeColor - 410, // 192: otg.BgpExtendedCommunityTransitiveOpaqueType.encapsulation_subtype:type_name -> otg.BgpExtendedCommunityTransitiveOpaqueTypeEncapsulation + 468, // 191: otg.BgpExtendedCommunityTransitiveOpaqueType.color_subtype:type_name -> otg.BgpExtendedCommunityTransitiveOpaqueTypeColor + 469, // 192: otg.BgpExtendedCommunityTransitiveOpaqueType.encapsulation_subtype:type_name -> otg.BgpExtendedCommunityTransitiveOpaqueTypeEncapsulation 43, // 193: otg.BgpExtendedCommunityTransitiveEvpnType.choice:type_name -> otg.BgpExtendedCommunityTransitiveEvpnType.Choice.Enum - 412, // 194: otg.BgpExtendedCommunityTransitiveEvpnType.router_mac_subtype:type_name -> otg.BgpExtendedCommunityTransitiveEvpnTypeRouterMac + 471, // 194: otg.BgpExtendedCommunityTransitiveEvpnType.router_mac_subtype:type_name -> otg.BgpExtendedCommunityTransitiveEvpnTypeRouterMac 44, // 195: otg.BgpExtendedCommunityNonTransitive2OctetAsType.choice:type_name -> otg.BgpExtendedCommunityNonTransitive2OctetAsType.Choice.Enum - 414, // 196: otg.BgpExtendedCommunityNonTransitive2OctetAsType.link_bandwidth_subtype:type_name -> otg.BgpExtendedCommunityNonTransitive2OctetAsTypeLinkBandwidth - 368, // 197: otg.BgpV6RouteRange.addresses:type_name -> otg.V6RouteAddress + 473, // 196: otg.BgpExtendedCommunityNonTransitive2OctetAsType.link_bandwidth_subtype:type_name -> otg.BgpExtendedCommunityNonTransitive2OctetAsTypeLinkBandwidth + 427, // 197: otg.BgpV6RouteRange.addresses:type_name -> otg.V6RouteAddress 45, // 198: otg.BgpV6RouteRange.next_hop_mode:type_name -> otg.BgpV6RouteRange.NextHopMode.Enum 46, // 199: otg.BgpV6RouteRange.next_hop_address_type:type_name -> otg.BgpV6RouteRange.NextHopAddressType.Enum - 383, // 200: otg.BgpV6RouteRange.advanced:type_name -> otg.BgpRouteAdvanced - 384, // 201: otg.BgpV6RouteRange.communities:type_name -> otg.BgpCommunity - 386, // 202: otg.BgpV6RouteRange.as_path:type_name -> otg.BgpAsPath - 398, // 203: otg.BgpV6RouteRange.add_path:type_name -> otg.BgpAddPath - 385, // 204: otg.BgpV6RouteRange.ext_communities:type_name -> otg.BgpExtCommunity - 399, // 205: otg.BgpV6RouteRange.extended_communities:type_name -> otg.BgpExtendedCommunity + 442, // 200: otg.BgpV6RouteRange.advanced:type_name -> otg.BgpRouteAdvanced + 443, // 201: otg.BgpV6RouteRange.communities:type_name -> otg.BgpCommunity + 445, // 202: otg.BgpV6RouteRange.as_path:type_name -> otg.BgpAsPath + 457, // 203: otg.BgpV6RouteRange.add_path:type_name -> otg.BgpAddPath + 444, // 204: otg.BgpV6RouteRange.ext_communities:type_name -> otg.BgpExtCommunity + 458, // 205: otg.BgpV6RouteRange.extended_communities:type_name -> otg.BgpExtendedCommunity 47, // 206: otg.BgpSrteV4Policy.next_hop_mode:type_name -> otg.BgpSrteV4Policy.NextHopMode.Enum 48, // 207: otg.BgpSrteV4Policy.next_hop_address_type:type_name -> otg.BgpSrteV4Policy.NextHopAddressType.Enum - 383, // 208: otg.BgpSrteV4Policy.advanced:type_name -> otg.BgpRouteAdvanced - 398, // 209: otg.BgpSrteV4Policy.add_path:type_name -> otg.BgpAddPath - 386, // 210: otg.BgpSrteV4Policy.as_path:type_name -> otg.BgpAsPath - 384, // 211: otg.BgpSrteV4Policy.communities:type_name -> otg.BgpCommunity - 385, // 212: otg.BgpSrteV4Policy.ext_communities:type_name -> otg.BgpExtCommunity - 419, // 213: otg.BgpSrteV4Policy.tunnel_tlvs:type_name -> otg.BgpSrteV4TunnelTlv - 420, // 214: otg.BgpSrteV4TunnelTlv.remote_endpoint_sub_tlv:type_name -> otg.BgpSrteRemoteEndpointSubTlv - 421, // 215: otg.BgpSrteV4TunnelTlv.color_sub_tlv:type_name -> otg.BgpSrteColorSubTlv - 422, // 216: otg.BgpSrteV4TunnelTlv.binding_sub_tlv:type_name -> otg.BgpSrteBindingSubTlv - 423, // 217: otg.BgpSrteV4TunnelTlv.preference_sub_tlv:type_name -> otg.BgpSrtePreferenceSubTlv - 424, // 218: otg.BgpSrteV4TunnelTlv.policy_priority_sub_tlv:type_name -> otg.BgpSrtePolicyPrioritySubTlv - 425, // 219: otg.BgpSrteV4TunnelTlv.policy_name_sub_tlv:type_name -> otg.BgpSrtePolicyNameSubTlv - 426, // 220: otg.BgpSrteV4TunnelTlv.explicit_null_label_policy_sub_tlv:type_name -> otg.BgpSrteExplicitNullLabelPolicySubTlv - 427, // 221: otg.BgpSrteV4TunnelTlv.segment_lists:type_name -> otg.BgpSrteSegmentList + 442, // 208: otg.BgpSrteV4Policy.advanced:type_name -> otg.BgpRouteAdvanced + 457, // 209: otg.BgpSrteV4Policy.add_path:type_name -> otg.BgpAddPath + 445, // 210: otg.BgpSrteV4Policy.as_path:type_name -> otg.BgpAsPath + 443, // 211: otg.BgpSrteV4Policy.communities:type_name -> otg.BgpCommunity + 444, // 212: otg.BgpSrteV4Policy.ext_communities:type_name -> otg.BgpExtCommunity + 478, // 213: otg.BgpSrteV4Policy.tunnel_tlvs:type_name -> otg.BgpSrteV4TunnelTlv + 479, // 214: otg.BgpSrteV4TunnelTlv.remote_endpoint_sub_tlv:type_name -> otg.BgpSrteRemoteEndpointSubTlv + 480, // 215: otg.BgpSrteV4TunnelTlv.color_sub_tlv:type_name -> otg.BgpSrteColorSubTlv + 481, // 216: otg.BgpSrteV4TunnelTlv.binding_sub_tlv:type_name -> otg.BgpSrteBindingSubTlv + 482, // 217: otg.BgpSrteV4TunnelTlv.preference_sub_tlv:type_name -> otg.BgpSrtePreferenceSubTlv + 483, // 218: otg.BgpSrteV4TunnelTlv.policy_priority_sub_tlv:type_name -> otg.BgpSrtePolicyPrioritySubTlv + 484, // 219: otg.BgpSrteV4TunnelTlv.policy_name_sub_tlv:type_name -> otg.BgpSrtePolicyNameSubTlv + 485, // 220: otg.BgpSrteV4TunnelTlv.explicit_null_label_policy_sub_tlv:type_name -> otg.BgpSrteExplicitNullLabelPolicySubTlv + 486, // 221: otg.BgpSrteV4TunnelTlv.segment_lists:type_name -> otg.BgpSrteSegmentList 49, // 222: otg.BgpSrteRemoteEndpointSubTlv.address_family:type_name -> otg.BgpSrteRemoteEndpointSubTlv.AddressFamily.Enum 50, // 223: otg.BgpSrteBindingSubTlv.binding_sid_type:type_name -> otg.BgpSrteBindingSubTlv.BindingSidType.Enum 51, // 224: otg.BgpSrteExplicitNullLabelPolicySubTlv.explicit_null_label_policy:type_name -> otg.BgpSrteExplicitNullLabelPolicySubTlv.ExplicitNullLabelPolicy.Enum - 428, // 225: otg.BgpSrteSegmentList.segments:type_name -> otg.BgpSrteSegment + 487, // 225: otg.BgpSrteSegmentList.segments:type_name -> otg.BgpSrteSegment 52, // 226: otg.BgpSrteSegment.segment_type:type_name -> otg.BgpSrteSegment.SegmentType.Enum - 431, // 227: otg.BgpSrteSegment.type_a:type_name -> otg.BgpSrteSegmentATypeSubTlv - 432, // 228: otg.BgpSrteSegment.type_b:type_name -> otg.BgpSrteSegmentBTypeSubTlv - 433, // 229: otg.BgpSrteSegment.type_c:type_name -> otg.BgpSrteSegmentCTypeSubTlv - 434, // 230: otg.BgpSrteSegment.type_d:type_name -> otg.BgpSrteSegmentDTypeSubTlv - 435, // 231: otg.BgpSrteSegment.type_e:type_name -> otg.BgpSrteSegmentETypeSubTlv - 436, // 232: otg.BgpSrteSegment.type_f:type_name -> otg.BgpSrteSegmentFTypeSubTlv - 437, // 233: otg.BgpSrteSegment.type_g:type_name -> otg.BgpSrteSegmentGTypeSubTlv - 438, // 234: otg.BgpSrteSegment.type_h:type_name -> otg.BgpSrteSegmentHTypeSubTlv - 439, // 235: otg.BgpSrteSegment.type_i:type_name -> otg.BgpSrteSegmentITypeSubTlv - 440, // 236: otg.BgpSrteSegment.type_j:type_name -> otg.BgpSrteSegmentJTypeSubTlv - 441, // 237: otg.BgpSrteSegment.type_k:type_name -> otg.BgpSrteSegmentKTypeSubTlv - 430, // 238: otg.BgpSrteSegmentBTypeSubTlv.srv6_sid_endpoint_behavior:type_name -> otg.BgpSrteSRv6SIDEndpointBehaviorAndStructure - 429, // 239: otg.BgpSrteSegmentCTypeSubTlv.sr_mpls_sid:type_name -> otg.BgpSrteSrMplsSid - 429, // 240: otg.BgpSrteSegmentDTypeSubTlv.sr_mpls_sid:type_name -> otg.BgpSrteSrMplsSid - 429, // 241: otg.BgpSrteSegmentETypeSubTlv.sr_mpls_sid:type_name -> otg.BgpSrteSrMplsSid - 429, // 242: otg.BgpSrteSegmentFTypeSubTlv.sr_mpls_sid:type_name -> otg.BgpSrteSrMplsSid - 429, // 243: otg.BgpSrteSegmentGTypeSubTlv.sr_mpls_sid:type_name -> otg.BgpSrteSrMplsSid - 429, // 244: otg.BgpSrteSegmentHTypeSubTlv.sr_mpls_sid:type_name -> otg.BgpSrteSrMplsSid - 430, // 245: otg.BgpSrteSegmentITypeSubTlv.srv6_sid_endpoint_behavior:type_name -> otg.BgpSrteSRv6SIDEndpointBehaviorAndStructure - 430, // 246: otg.BgpSrteSegmentJTypeSubTlv.srv6_sid_endpoint_behavior:type_name -> otg.BgpSrteSRv6SIDEndpointBehaviorAndStructure - 430, // 247: otg.BgpSrteSegmentKTypeSubTlv.srv6_sid_endpoint_behavior:type_name -> otg.BgpSrteSRv6SIDEndpointBehaviorAndStructure + 490, // 227: otg.BgpSrteSegment.type_a:type_name -> otg.BgpSrteSegmentATypeSubTlv + 491, // 228: otg.BgpSrteSegment.type_b:type_name -> otg.BgpSrteSegmentBTypeSubTlv + 492, // 229: otg.BgpSrteSegment.type_c:type_name -> otg.BgpSrteSegmentCTypeSubTlv + 493, // 230: otg.BgpSrteSegment.type_d:type_name -> otg.BgpSrteSegmentDTypeSubTlv + 494, // 231: otg.BgpSrteSegment.type_e:type_name -> otg.BgpSrteSegmentETypeSubTlv + 495, // 232: otg.BgpSrteSegment.type_f:type_name -> otg.BgpSrteSegmentFTypeSubTlv + 496, // 233: otg.BgpSrteSegment.type_g:type_name -> otg.BgpSrteSegmentGTypeSubTlv + 497, // 234: otg.BgpSrteSegment.type_h:type_name -> otg.BgpSrteSegmentHTypeSubTlv + 498, // 235: otg.BgpSrteSegment.type_i:type_name -> otg.BgpSrteSegmentITypeSubTlv + 499, // 236: otg.BgpSrteSegment.type_j:type_name -> otg.BgpSrteSegmentJTypeSubTlv + 500, // 237: otg.BgpSrteSegment.type_k:type_name -> otg.BgpSrteSegmentKTypeSubTlv + 489, // 238: otg.BgpSrteSegmentBTypeSubTlv.srv6_sid_endpoint_behavior:type_name -> otg.BgpSrteSRv6SIDEndpointBehaviorAndStructure + 488, // 239: otg.BgpSrteSegmentCTypeSubTlv.sr_mpls_sid:type_name -> otg.BgpSrteSrMplsSid + 488, // 240: otg.BgpSrteSegmentDTypeSubTlv.sr_mpls_sid:type_name -> otg.BgpSrteSrMplsSid + 488, // 241: otg.BgpSrteSegmentETypeSubTlv.sr_mpls_sid:type_name -> otg.BgpSrteSrMplsSid + 488, // 242: otg.BgpSrteSegmentFTypeSubTlv.sr_mpls_sid:type_name -> otg.BgpSrteSrMplsSid + 488, // 243: otg.BgpSrteSegmentGTypeSubTlv.sr_mpls_sid:type_name -> otg.BgpSrteSrMplsSid + 488, // 244: otg.BgpSrteSegmentHTypeSubTlv.sr_mpls_sid:type_name -> otg.BgpSrteSrMplsSid + 489, // 245: otg.BgpSrteSegmentITypeSubTlv.srv6_sid_endpoint_behavior:type_name -> otg.BgpSrteSRv6SIDEndpointBehaviorAndStructure + 489, // 246: otg.BgpSrteSegmentJTypeSubTlv.srv6_sid_endpoint_behavior:type_name -> otg.BgpSrteSRv6SIDEndpointBehaviorAndStructure + 489, // 247: otg.BgpSrteSegmentKTypeSubTlv.srv6_sid_endpoint_behavior:type_name -> otg.BgpSrteSRv6SIDEndpointBehaviorAndStructure 53, // 248: otg.BgpSrteV6Policy.next_hop_mode:type_name -> otg.BgpSrteV6Policy.NextHopMode.Enum 54, // 249: otg.BgpSrteV6Policy.next_hop_address_type:type_name -> otg.BgpSrteV6Policy.NextHopAddressType.Enum - 383, // 250: otg.BgpSrteV6Policy.advanced:type_name -> otg.BgpRouteAdvanced - 398, // 251: otg.BgpSrteV6Policy.add_path:type_name -> otg.BgpAddPath - 386, // 252: otg.BgpSrteV6Policy.as_path:type_name -> otg.BgpAsPath - 384, // 253: otg.BgpSrteV6Policy.communities:type_name -> otg.BgpCommunity - 385, // 254: otg.BgpSrteV6Policy.extcommunities:type_name -> otg.BgpExtCommunity - 443, // 255: otg.BgpSrteV6Policy.tunnel_tlvs:type_name -> otg.BgpSrteV6TunnelTlv - 420, // 256: otg.BgpSrteV6TunnelTlv.remote_endpoint_sub_tlv:type_name -> otg.BgpSrteRemoteEndpointSubTlv - 421, // 257: otg.BgpSrteV6TunnelTlv.color_sub_tlv:type_name -> otg.BgpSrteColorSubTlv - 422, // 258: otg.BgpSrteV6TunnelTlv.binding_sub_tlv:type_name -> otg.BgpSrteBindingSubTlv - 423, // 259: otg.BgpSrteV6TunnelTlv.preference_sub_tlv:type_name -> otg.BgpSrtePreferenceSubTlv - 424, // 260: otg.BgpSrteV6TunnelTlv.policy_priority_sub_tlv:type_name -> otg.BgpSrtePolicyPrioritySubTlv - 425, // 261: otg.BgpSrteV6TunnelTlv.policy_name_sub_tlv:type_name -> otg.BgpSrtePolicyNameSubTlv - 426, // 262: otg.BgpSrteV6TunnelTlv.explicit_null_label_policy_sub_tlv:type_name -> otg.BgpSrteExplicitNullLabelPolicySubTlv - 427, // 263: otg.BgpSrteV6TunnelTlv.segment_lists:type_name -> otg.BgpSrteSegmentList - 447, // 264: otg.BgpV6Peer.segment_routing:type_name -> otg.BgpV6SegmentRouting - 448, // 265: otg.BgpV6Peer.evpn_ethernet_segments:type_name -> otg.BgpV6EthernetSegment + 442, // 250: otg.BgpSrteV6Policy.advanced:type_name -> otg.BgpRouteAdvanced + 457, // 251: otg.BgpSrteV6Policy.add_path:type_name -> otg.BgpAddPath + 445, // 252: otg.BgpSrteV6Policy.as_path:type_name -> otg.BgpAsPath + 443, // 253: otg.BgpSrteV6Policy.communities:type_name -> otg.BgpCommunity + 444, // 254: otg.BgpSrteV6Policy.extcommunities:type_name -> otg.BgpExtCommunity + 502, // 255: otg.BgpSrteV6Policy.tunnel_tlvs:type_name -> otg.BgpSrteV6TunnelTlv + 479, // 256: otg.BgpSrteV6TunnelTlv.remote_endpoint_sub_tlv:type_name -> otg.BgpSrteRemoteEndpointSubTlv + 480, // 257: otg.BgpSrteV6TunnelTlv.color_sub_tlv:type_name -> otg.BgpSrteColorSubTlv + 481, // 258: otg.BgpSrteV6TunnelTlv.binding_sub_tlv:type_name -> otg.BgpSrteBindingSubTlv + 482, // 259: otg.BgpSrteV6TunnelTlv.preference_sub_tlv:type_name -> otg.BgpSrtePreferenceSubTlv + 483, // 260: otg.BgpSrteV6TunnelTlv.policy_priority_sub_tlv:type_name -> otg.BgpSrtePolicyPrioritySubTlv + 484, // 261: otg.BgpSrteV6TunnelTlv.policy_name_sub_tlv:type_name -> otg.BgpSrtePolicyNameSubTlv + 485, // 262: otg.BgpSrteV6TunnelTlv.explicit_null_label_policy_sub_tlv:type_name -> otg.BgpSrteExplicitNullLabelPolicySubTlv + 486, // 263: otg.BgpSrteV6TunnelTlv.segment_lists:type_name -> otg.BgpSrteSegmentList + 506, // 264: otg.BgpV6Peer.segment_routing:type_name -> otg.BgpV6SegmentRouting + 507, // 265: otg.BgpV6Peer.evpn_ethernet_segments:type_name -> otg.BgpV6EthernetSegment 55, // 266: otg.BgpV6Peer.as_type:type_name -> otg.BgpV6Peer.AsType.Enum 56, // 267: otg.BgpV6Peer.as_number_width:type_name -> otg.BgpV6Peer.AsNumberWidth.Enum - 394, // 268: otg.BgpV6Peer.advanced:type_name -> otg.BgpAdvanced - 395, // 269: otg.BgpV6Peer.capability:type_name -> otg.BgpCapability - 396, // 270: otg.BgpV6Peer.learned_information_filter:type_name -> otg.BgpLearnedInformationFilter - 397, // 271: otg.BgpV6Peer.v4_routes:type_name -> otg.BgpV4RouteRange - 417, // 272: otg.BgpV6Peer.v6_routes:type_name -> otg.BgpV6RouteRange - 418, // 273: otg.BgpV6Peer.v4_srte_policies:type_name -> otg.BgpSrteV4Policy - 442, // 274: otg.BgpV6Peer.v6_srte_policies:type_name -> otg.BgpSrteV6Policy - 444, // 275: otg.BgpV6Peer.graceful_restart:type_name -> otg.BgpGracefulRestart - 445, // 276: otg.BgpV6Interface.peers:type_name -> otg.BgpV6Peer - 382, // 277: otg.BgpV6EthernetSegment.df_election:type_name -> otg.BgpEthernetSegmentDfElection - 449, // 278: otg.BgpV6EthernetSegment.evis:type_name -> otg.BgpV6EvpnEvis + 453, // 268: otg.BgpV6Peer.advanced:type_name -> otg.BgpAdvanced + 454, // 269: otg.BgpV6Peer.capability:type_name -> otg.BgpCapability + 455, // 270: otg.BgpV6Peer.learned_information_filter:type_name -> otg.BgpLearnedInformationFilter + 456, // 271: otg.BgpV6Peer.v4_routes:type_name -> otg.BgpV4RouteRange + 476, // 272: otg.BgpV6Peer.v6_routes:type_name -> otg.BgpV6RouteRange + 477, // 273: otg.BgpV6Peer.v4_srte_policies:type_name -> otg.BgpSrteV4Policy + 501, // 274: otg.BgpV6Peer.v6_srte_policies:type_name -> otg.BgpSrteV6Policy + 503, // 275: otg.BgpV6Peer.graceful_restart:type_name -> otg.BgpGracefulRestart + 504, // 276: otg.BgpV6Interface.peers:type_name -> otg.BgpV6Peer + 441, // 277: otg.BgpV6EthernetSegment.df_election:type_name -> otg.BgpEthernetSegmentDfElection + 508, // 278: otg.BgpV6EthernetSegment.evis:type_name -> otg.BgpV6EvpnEvis 57, // 279: otg.BgpV6EthernetSegment.active_mode:type_name -> otg.BgpV6EthernetSegment.ActiveMode.Enum - 383, // 280: otg.BgpV6EthernetSegment.advanced:type_name -> otg.BgpRouteAdvanced - 384, // 281: otg.BgpV6EthernetSegment.communities:type_name -> otg.BgpCommunity - 385, // 282: otg.BgpV6EthernetSegment.ext_communities:type_name -> otg.BgpExtCommunity - 386, // 283: otg.BgpV6EthernetSegment.as_path:type_name -> otg.BgpAsPath + 442, // 280: otg.BgpV6EthernetSegment.advanced:type_name -> otg.BgpRouteAdvanced + 443, // 281: otg.BgpV6EthernetSegment.communities:type_name -> otg.BgpCommunity + 444, // 282: otg.BgpV6EthernetSegment.ext_communities:type_name -> otg.BgpExtCommunity + 445, // 283: otg.BgpV6EthernetSegment.as_path:type_name -> otg.BgpAsPath 58, // 284: otg.BgpV6EvpnEvis.choice:type_name -> otg.BgpV6EvpnEvis.Choice.Enum - 450, // 285: otg.BgpV6EvpnEvis.evi_vxlan:type_name -> otg.BgpV6EviVxlan - 451, // 286: otg.BgpV6EviVxlan.broadcast_domains:type_name -> otg.BgpV6EviVxlanBroadcastDomain + 509, // 285: otg.BgpV6EvpnEvis.evi_vxlan:type_name -> otg.BgpV6EviVxlan + 510, // 286: otg.BgpV6EviVxlan.broadcast_domains:type_name -> otg.BgpV6EviVxlanBroadcastDomain 59, // 287: otg.BgpV6EviVxlan.replication_type:type_name -> otg.BgpV6EviVxlan.ReplicationType.Enum - 392, // 288: otg.BgpV6EviVxlan.route_distinguisher:type_name -> otg.BgpRouteDistinguisher - 393, // 289: otg.BgpV6EviVxlan.route_target_export:type_name -> otg.BgpRouteTarget - 393, // 290: otg.BgpV6EviVxlan.route_target_import:type_name -> otg.BgpRouteTarget - 393, // 291: otg.BgpV6EviVxlan.l3_route_target_export:type_name -> otg.BgpRouteTarget - 393, // 292: otg.BgpV6EviVxlan.l3_route_target_import:type_name -> otg.BgpRouteTarget - 383, // 293: otg.BgpV6EviVxlan.advanced:type_name -> otg.BgpRouteAdvanced - 384, // 294: otg.BgpV6EviVxlan.communities:type_name -> otg.BgpCommunity - 385, // 295: otg.BgpV6EviVxlan.ext_communities:type_name -> otg.BgpExtCommunity - 386, // 296: otg.BgpV6EviVxlan.as_path:type_name -> otg.BgpAsPath - 391, // 297: otg.BgpV6EviVxlanBroadcastDomain.cmac_ip_range:type_name -> otg.BgpCMacIpRange - 453, // 298: otg.DeviceVxlan.v4_tunnels:type_name -> otg.VxlanV4Tunnel - 454, // 299: otg.DeviceVxlan.v6_tunnels:type_name -> otg.VxlanV6Tunnel - 455, // 300: otg.VxlanV4Tunnel.destination_ip_mode:type_name -> otg.VxlanV4TunnelDestinationIPMode - 456, // 301: otg.VxlanV6Tunnel.destination_ip_mode:type_name -> otg.VxlanV6TunnelDestinationIPMode + 451, // 288: otg.BgpV6EviVxlan.route_distinguisher:type_name -> otg.BgpRouteDistinguisher + 452, // 289: otg.BgpV6EviVxlan.route_target_export:type_name -> otg.BgpRouteTarget + 452, // 290: otg.BgpV6EviVxlan.route_target_import:type_name -> otg.BgpRouteTarget + 452, // 291: otg.BgpV6EviVxlan.l3_route_target_export:type_name -> otg.BgpRouteTarget + 452, // 292: otg.BgpV6EviVxlan.l3_route_target_import:type_name -> otg.BgpRouteTarget + 442, // 293: otg.BgpV6EviVxlan.advanced:type_name -> otg.BgpRouteAdvanced + 443, // 294: otg.BgpV6EviVxlan.communities:type_name -> otg.BgpCommunity + 444, // 295: otg.BgpV6EviVxlan.ext_communities:type_name -> otg.BgpExtCommunity + 445, // 296: otg.BgpV6EviVxlan.as_path:type_name -> otg.BgpAsPath + 450, // 297: otg.BgpV6EviVxlanBroadcastDomain.cmac_ip_range:type_name -> otg.BgpCMacIpRange + 512, // 298: otg.DeviceVxlan.v4_tunnels:type_name -> otg.VxlanV4Tunnel + 513, // 299: otg.DeviceVxlan.v6_tunnels:type_name -> otg.VxlanV6Tunnel + 514, // 300: otg.VxlanV4Tunnel.destination_ip_mode:type_name -> otg.VxlanV4TunnelDestinationIPMode + 515, // 301: otg.VxlanV6Tunnel.destination_ip_mode:type_name -> otg.VxlanV6TunnelDestinationIPMode 60, // 302: otg.VxlanV4TunnelDestinationIPMode.choice:type_name -> otg.VxlanV4TunnelDestinationIPMode.Choice.Enum - 457, // 303: otg.VxlanV4TunnelDestinationIPMode.unicast:type_name -> otg.VxlanV4TunnelDestinationIPModeUnicast - 462, // 304: otg.VxlanV4TunnelDestinationIPMode.multicast:type_name -> otg.VxlanV4TunnelDestinationIPModeMulticast + 516, // 303: otg.VxlanV4TunnelDestinationIPMode.unicast:type_name -> otg.VxlanV4TunnelDestinationIPModeUnicast + 521, // 304: otg.VxlanV4TunnelDestinationIPMode.multicast:type_name -> otg.VxlanV4TunnelDestinationIPModeMulticast 61, // 305: otg.VxlanV6TunnelDestinationIPMode.choice:type_name -> otg.VxlanV6TunnelDestinationIPMode.Choice.Enum - 458, // 306: otg.VxlanV6TunnelDestinationIPMode.unicast:type_name -> otg.VxlanV6TunnelDestinationIPModeUnicast - 463, // 307: otg.VxlanV6TunnelDestinationIPMode.multicast:type_name -> otg.VxlanV6TunnelDestinationIPModeMulticast - 460, // 308: otg.VxlanV4TunnelDestinationIPModeUnicast.vteps:type_name -> otg.VxlanV4TunnelDestinationIPModeUnicastVtep - 461, // 309: otg.VxlanV6TunnelDestinationIPModeUnicast.vteps:type_name -> otg.VxlanV6TunnelDestinationIPModeUnicastVtep - 459, // 310: otg.VxlanV4TunnelDestinationIPModeUnicastVtep.arp_suppression_cache:type_name -> otg.VxlanTunnelDestinationIPModeUnicastArpSuppressionCache - 459, // 311: otg.VxlanV6TunnelDestinationIPModeUnicastVtep.arp_suppression_cache:type_name -> otg.VxlanTunnelDestinationIPModeUnicastArpSuppressionCache - 465, // 312: otg.DeviceRsvp.ipv4_interfaces:type_name -> otg.RsvpIpv4Interface - 466, // 313: otg.DeviceRsvp.lsp_ipv4_interfaces:type_name -> otg.RsvpLspIpv4Interface - 467, // 314: otg.RsvpLspIpv4Interface.p2p_egress_ipv4_lsps:type_name -> otg.RsvpLspIpv4InterfaceP2PEgressIpv4Lsp - 468, // 315: otg.RsvpLspIpv4Interface.p2p_ingress_ipv4_lsps:type_name -> otg.RsvpLspIpv4InterfaceP2PIngressIpv4Lsp + 517, // 306: otg.VxlanV6TunnelDestinationIPMode.unicast:type_name -> otg.VxlanV6TunnelDestinationIPModeUnicast + 522, // 307: otg.VxlanV6TunnelDestinationIPMode.multicast:type_name -> otg.VxlanV6TunnelDestinationIPModeMulticast + 519, // 308: otg.VxlanV4TunnelDestinationIPModeUnicast.vteps:type_name -> otg.VxlanV4TunnelDestinationIPModeUnicastVtep + 520, // 309: otg.VxlanV6TunnelDestinationIPModeUnicast.vteps:type_name -> otg.VxlanV6TunnelDestinationIPModeUnicastVtep + 518, // 310: otg.VxlanV4TunnelDestinationIPModeUnicastVtep.arp_suppression_cache:type_name -> otg.VxlanTunnelDestinationIPModeUnicastArpSuppressionCache + 518, // 311: otg.VxlanV6TunnelDestinationIPModeUnicastVtep.arp_suppression_cache:type_name -> otg.VxlanTunnelDestinationIPModeUnicastArpSuppressionCache + 524, // 312: otg.DeviceRsvp.ipv4_interfaces:type_name -> otg.RsvpIpv4Interface + 525, // 313: otg.DeviceRsvp.lsp_ipv4_interfaces:type_name -> otg.RsvpLspIpv4Interface + 526, // 314: otg.RsvpLspIpv4Interface.p2p_egress_ipv4_lsps:type_name -> otg.RsvpLspIpv4InterfaceP2PEgressIpv4Lsp + 527, // 315: otg.RsvpLspIpv4Interface.p2p_ingress_ipv4_lsps:type_name -> otg.RsvpLspIpv4InterfaceP2PIngressIpv4Lsp 62, // 316: otg.RsvpLspIpv4InterfaceP2PEgressIpv4Lsp.reservation_style:type_name -> otg.RsvpLspIpv4InterfaceP2PEgressIpv4Lsp.ReservationStyle.Enum - 469, // 317: otg.RsvpLspIpv4InterfaceP2PIngressIpv4Lsp.session_attribute:type_name -> otg.RsvpSessionAttribute - 471, // 318: otg.RsvpLspIpv4InterfaceP2PIngressIpv4Lsp.tspec:type_name -> otg.RsvpTspec - 472, // 319: otg.RsvpLspIpv4InterfaceP2PIngressIpv4Lsp.fast_reroute:type_name -> otg.RsvpFastReroute - 473, // 320: otg.RsvpLspIpv4InterfaceP2PIngressIpv4Lsp.ero:type_name -> otg.RsvpEro - 470, // 321: otg.RsvpSessionAttribute.resource_affinities:type_name -> otg.RsvpResourceAffinities + 528, // 317: otg.RsvpLspIpv4InterfaceP2PIngressIpv4Lsp.session_attribute:type_name -> otg.RsvpSessionAttribute + 530, // 318: otg.RsvpLspIpv4InterfaceP2PIngressIpv4Lsp.tspec:type_name -> otg.RsvpTspec + 531, // 319: otg.RsvpLspIpv4InterfaceP2PIngressIpv4Lsp.fast_reroute:type_name -> otg.RsvpFastReroute + 532, // 320: otg.RsvpLspIpv4InterfaceP2PIngressIpv4Lsp.ero:type_name -> otg.RsvpEro + 529, // 321: otg.RsvpSessionAttribute.resource_affinities:type_name -> otg.RsvpResourceAffinities 63, // 322: otg.RsvpEro.prepend_neighbor_ip:type_name -> otg.RsvpEro.PrependNeighborIp.Enum - 474, // 323: otg.RsvpEro.subobjects:type_name -> otg.RsvpEroSubobject + 533, // 323: otg.RsvpEro.subobjects:type_name -> otg.RsvpEroSubobject 64, // 324: otg.RsvpEroSubobject.type:type_name -> otg.RsvpEroSubobject.Type.Enum 65, // 325: otg.RsvpEroSubobject.hop_type:type_name -> otg.RsvpEroSubobject.HopType.Enum - 476, // 326: otg.Flow.tx_rx:type_name -> otg.FlowTxRx - 479, // 327: otg.Flow.packet:type_name -> otg.FlowHeader - 479, // 328: otg.Flow.egress_packet:type_name -> otg.FlowHeader - 506, // 329: otg.Flow.size:type_name -> otg.FlowSize - 511, // 330: otg.Flow.rate:type_name -> otg.FlowRate - 512, // 331: otg.Flow.duration:type_name -> otg.FlowDuration - 519, // 332: otg.Flow.metrics:type_name -> otg.FlowMetrics + 535, // 326: otg.Flow.tx_rx:type_name -> otg.FlowTxRx + 538, // 327: otg.Flow.packet:type_name -> otg.FlowHeader + 538, // 328: otg.Flow.egress_packet:type_name -> otg.FlowHeader + 615, // 329: otg.Flow.size:type_name -> otg.FlowSize + 620, // 330: otg.Flow.rate:type_name -> otg.FlowRate + 621, // 331: otg.Flow.duration:type_name -> otg.FlowDuration + 628, // 332: otg.Flow.metrics:type_name -> otg.FlowMetrics 66, // 333: otg.FlowTxRx.choice:type_name -> otg.FlowTxRx.Choice.Enum - 477, // 334: otg.FlowTxRx.port:type_name -> otg.FlowPort - 478, // 335: otg.FlowTxRx.device:type_name -> otg.FlowRouter + 536, // 334: otg.FlowTxRx.port:type_name -> otg.FlowPort + 537, // 335: otg.FlowTxRx.device:type_name -> otg.FlowRouter 67, // 336: otg.FlowRouter.mode:type_name -> otg.FlowRouter.Mode.Enum 68, // 337: otg.FlowHeader.choice:type_name -> otg.FlowHeader.Choice.Enum - 480, // 338: otg.FlowHeader.custom:type_name -> otg.FlowCustom - 482, // 339: otg.FlowHeader.ethernet:type_name -> otg.FlowEthernet - 483, // 340: otg.FlowHeader.vlan:type_name -> otg.FlowVlan - 484, // 341: otg.FlowHeader.vxlan:type_name -> otg.FlowVxlan - 485, // 342: otg.FlowHeader.ipv4:type_name -> otg.FlowIpv4 - 489, // 343: otg.FlowHeader.ipv6:type_name -> otg.FlowIpv6 - 490, // 344: otg.FlowHeader.pfcpause:type_name -> otg.FlowPfcPause - 491, // 345: otg.FlowHeader.ethernetpause:type_name -> otg.FlowEthernetPause - 492, // 346: otg.FlowHeader.tcp:type_name -> otg.FlowTcp - 493, // 347: otg.FlowHeader.udp:type_name -> otg.FlowUdp - 494, // 348: otg.FlowHeader.gre:type_name -> otg.FlowGre - 495, // 349: otg.FlowHeader.gtpv1:type_name -> otg.FlowGtpv1 - 497, // 350: otg.FlowHeader.gtpv2:type_name -> otg.FlowGtpv2 - 498, // 351: otg.FlowHeader.arp:type_name -> otg.FlowArp - 499, // 352: otg.FlowHeader.icmp:type_name -> otg.FlowIcmp - 501, // 353: otg.FlowHeader.icmpv6:type_name -> otg.FlowIcmpv6 - 503, // 354: otg.FlowHeader.ppp:type_name -> otg.FlowPpp - 504, // 355: otg.FlowHeader.igmpv1:type_name -> otg.FlowIgmpv1 - 505, // 356: otg.FlowHeader.mpls:type_name -> otg.FlowMpls - 481, // 357: otg.FlowCustom.metric_tags:type_name -> otg.FlowCustomMetricTag - 649, // 358: otg.FlowEthernet.dst:type_name -> otg.PatternFlowEthernetDst - 652, // 359: otg.FlowEthernet.src:type_name -> otg.PatternFlowEthernetSrc - 655, // 360: otg.FlowEthernet.ether_type:type_name -> otg.PatternFlowEthernetEtherType - 658, // 361: otg.FlowEthernet.pfc_queue:type_name -> otg.PatternFlowEthernetPfcQueue - 661, // 362: otg.FlowVlan.priority:type_name -> otg.PatternFlowVlanPriority - 664, // 363: otg.FlowVlan.cfi:type_name -> otg.PatternFlowVlanCfi - 667, // 364: otg.FlowVlan.id:type_name -> otg.PatternFlowVlanId - 670, // 365: otg.FlowVlan.tpid:type_name -> otg.PatternFlowVlanTpid - 673, // 366: otg.FlowVxlan.flags:type_name -> otg.PatternFlowVxlanFlags - 676, // 367: otg.FlowVxlan.reserved0:type_name -> otg.PatternFlowVxlanReserved0 - 679, // 368: otg.FlowVxlan.vni:type_name -> otg.PatternFlowVxlanVni - 682, // 369: otg.FlowVxlan.reserved1:type_name -> otg.PatternFlowVxlanReserved1 - 685, // 370: otg.FlowIpv4.version:type_name -> otg.PatternFlowIpv4Version - 688, // 371: otg.FlowIpv4.header_length:type_name -> otg.PatternFlowIpv4HeaderLength - 486, // 372: otg.FlowIpv4.priority:type_name -> otg.FlowIpv4Priority - 691, // 373: otg.FlowIpv4.total_length:type_name -> otg.PatternFlowIpv4TotalLength - 694, // 374: otg.FlowIpv4.identification:type_name -> otg.PatternFlowIpv4Identification - 697, // 375: otg.FlowIpv4.reserved:type_name -> otg.PatternFlowIpv4Reserved - 700, // 376: otg.FlowIpv4.dont_fragment:type_name -> otg.PatternFlowIpv4DontFragment - 703, // 377: otg.FlowIpv4.more_fragments:type_name -> otg.PatternFlowIpv4MoreFragments - 706, // 378: otg.FlowIpv4.fragment_offset:type_name -> otg.PatternFlowIpv4FragmentOffset - 709, // 379: otg.FlowIpv4.time_to_live:type_name -> otg.PatternFlowIpv4TimeToLive - 712, // 380: otg.FlowIpv4.protocol:type_name -> otg.PatternFlowIpv4Protocol - 713, // 381: otg.FlowIpv4.header_checksum:type_name -> otg.PatternFlowIpv4HeaderChecksum - 716, // 382: otg.FlowIpv4.src:type_name -> otg.PatternFlowIpv4Src - 719, // 383: otg.FlowIpv4.dst:type_name -> otg.PatternFlowIpv4Dst - 69, // 384: otg.FlowIpv4Priority.choice:type_name -> otg.FlowIpv4Priority.Choice.Enum - 722, // 385: otg.FlowIpv4Priority.raw:type_name -> otg.PatternFlowIpv4PriorityRaw - 488, // 386: otg.FlowIpv4Priority.tos:type_name -> otg.FlowIpv4Tos - 487, // 387: otg.FlowIpv4Priority.dscp:type_name -> otg.FlowIpv4Dscp - 725, // 388: otg.FlowIpv4Dscp.phb:type_name -> otg.PatternFlowIpv4DscpPhb - 728, // 389: otg.FlowIpv4Dscp.ecn:type_name -> otg.PatternFlowIpv4DscpEcn - 731, // 390: otg.FlowIpv4Tos.precedence:type_name -> otg.PatternFlowIpv4TosPrecedence - 734, // 391: otg.FlowIpv4Tos.delay:type_name -> otg.PatternFlowIpv4TosDelay - 737, // 392: otg.FlowIpv4Tos.throughput:type_name -> otg.PatternFlowIpv4TosThroughput - 740, // 393: otg.FlowIpv4Tos.reliability:type_name -> otg.PatternFlowIpv4TosReliability - 743, // 394: otg.FlowIpv4Tos.monetary:type_name -> otg.PatternFlowIpv4TosMonetary - 746, // 395: otg.FlowIpv4Tos.unused:type_name -> otg.PatternFlowIpv4TosUnused - 749, // 396: otg.FlowIpv6.version:type_name -> otg.PatternFlowIpv6Version - 752, // 397: otg.FlowIpv6.traffic_class:type_name -> otg.PatternFlowIpv6TrafficClass - 755, // 398: otg.FlowIpv6.flow_label:type_name -> otg.PatternFlowIpv6FlowLabel - 758, // 399: otg.FlowIpv6.payload_length:type_name -> otg.PatternFlowIpv6PayloadLength - 761, // 400: otg.FlowIpv6.next_header:type_name -> otg.PatternFlowIpv6NextHeader - 764, // 401: otg.FlowIpv6.hop_limit:type_name -> otg.PatternFlowIpv6HopLimit - 767, // 402: otg.FlowIpv6.src:type_name -> otg.PatternFlowIpv6Src - 770, // 403: otg.FlowIpv6.dst:type_name -> otg.PatternFlowIpv6Dst - 773, // 404: otg.FlowPfcPause.dst:type_name -> otg.PatternFlowPfcPauseDst - 776, // 405: otg.FlowPfcPause.src:type_name -> otg.PatternFlowPfcPauseSrc - 779, // 406: otg.FlowPfcPause.ether_type:type_name -> otg.PatternFlowPfcPauseEtherType - 782, // 407: otg.FlowPfcPause.control_op_code:type_name -> otg.PatternFlowPfcPauseControlOpCode - 785, // 408: otg.FlowPfcPause.class_enable_vector:type_name -> otg.PatternFlowPfcPauseClassEnableVector - 788, // 409: otg.FlowPfcPause.pause_class_0:type_name -> otg.PatternFlowPfcPausePauseClass0 - 791, // 410: otg.FlowPfcPause.pause_class_1:type_name -> otg.PatternFlowPfcPausePauseClass1 - 794, // 411: otg.FlowPfcPause.pause_class_2:type_name -> otg.PatternFlowPfcPausePauseClass2 - 797, // 412: otg.FlowPfcPause.pause_class_3:type_name -> otg.PatternFlowPfcPausePauseClass3 - 800, // 413: otg.FlowPfcPause.pause_class_4:type_name -> otg.PatternFlowPfcPausePauseClass4 - 803, // 414: otg.FlowPfcPause.pause_class_5:type_name -> otg.PatternFlowPfcPausePauseClass5 - 806, // 415: otg.FlowPfcPause.pause_class_6:type_name -> otg.PatternFlowPfcPausePauseClass6 - 809, // 416: otg.FlowPfcPause.pause_class_7:type_name -> otg.PatternFlowPfcPausePauseClass7 - 812, // 417: otg.FlowEthernetPause.dst:type_name -> otg.PatternFlowEthernetPauseDst - 815, // 418: otg.FlowEthernetPause.src:type_name -> otg.PatternFlowEthernetPauseSrc - 818, // 419: otg.FlowEthernetPause.ether_type:type_name -> otg.PatternFlowEthernetPauseEtherType - 821, // 420: otg.FlowEthernetPause.control_op_code:type_name -> otg.PatternFlowEthernetPauseControlOpCode - 824, // 421: otg.FlowEthernetPause.time:type_name -> otg.PatternFlowEthernetPauseTime - 827, // 422: otg.FlowTcp.src_port:type_name -> otg.PatternFlowTcpSrcPort - 830, // 423: otg.FlowTcp.dst_port:type_name -> otg.PatternFlowTcpDstPort - 833, // 424: otg.FlowTcp.seq_num:type_name -> otg.PatternFlowTcpSeqNum - 836, // 425: otg.FlowTcp.ack_num:type_name -> otg.PatternFlowTcpAckNum - 839, // 426: otg.FlowTcp.data_offset:type_name -> otg.PatternFlowTcpDataOffset - 842, // 427: otg.FlowTcp.ecn_ns:type_name -> otg.PatternFlowTcpEcnNs - 845, // 428: otg.FlowTcp.ecn_cwr:type_name -> otg.PatternFlowTcpEcnCwr - 848, // 429: otg.FlowTcp.ecn_echo:type_name -> otg.PatternFlowTcpEcnEcho - 851, // 430: otg.FlowTcp.ctl_urg:type_name -> otg.PatternFlowTcpCtlUrg - 854, // 431: otg.FlowTcp.ctl_ack:type_name -> otg.PatternFlowTcpCtlAck - 857, // 432: otg.FlowTcp.ctl_psh:type_name -> otg.PatternFlowTcpCtlPsh - 860, // 433: otg.FlowTcp.ctl_rst:type_name -> otg.PatternFlowTcpCtlRst - 863, // 434: otg.FlowTcp.ctl_syn:type_name -> otg.PatternFlowTcpCtlSyn - 866, // 435: otg.FlowTcp.ctl_fin:type_name -> otg.PatternFlowTcpCtlFin - 869, // 436: otg.FlowTcp.window:type_name -> otg.PatternFlowTcpWindow - 872, // 437: otg.FlowUdp.src_port:type_name -> otg.PatternFlowUdpSrcPort - 875, // 438: otg.FlowUdp.dst_port:type_name -> otg.PatternFlowUdpDstPort - 878, // 439: otg.FlowUdp.length:type_name -> otg.PatternFlowUdpLength - 879, // 440: otg.FlowUdp.checksum:type_name -> otg.PatternFlowUdpChecksum - 882, // 441: otg.FlowGre.checksum_present:type_name -> otg.PatternFlowGreChecksumPresent - 885, // 442: otg.FlowGre.reserved0:type_name -> otg.PatternFlowGreReserved0 - 888, // 443: otg.FlowGre.version:type_name -> otg.PatternFlowGreVersion - 891, // 444: otg.FlowGre.protocol:type_name -> otg.PatternFlowGreProtocol - 892, // 445: otg.FlowGre.checksum:type_name -> otg.PatternFlowGreChecksum - 895, // 446: otg.FlowGre.reserved1:type_name -> otg.PatternFlowGreReserved1 - 898, // 447: otg.FlowGtpv1.version:type_name -> otg.PatternFlowGtpv1Version - 901, // 448: otg.FlowGtpv1.protocol_type:type_name -> otg.PatternFlowGtpv1ProtocolType - 904, // 449: otg.FlowGtpv1.reserved:type_name -> otg.PatternFlowGtpv1Reserved - 907, // 450: otg.FlowGtpv1.e_flag:type_name -> otg.PatternFlowGtpv1EFlag - 910, // 451: otg.FlowGtpv1.s_flag:type_name -> otg.PatternFlowGtpv1SFlag - 913, // 452: otg.FlowGtpv1.pn_flag:type_name -> otg.PatternFlowGtpv1PnFlag - 916, // 453: otg.FlowGtpv1.message_type:type_name -> otg.PatternFlowGtpv1MessageType - 919, // 454: otg.FlowGtpv1.message_length:type_name -> otg.PatternFlowGtpv1MessageLength - 922, // 455: otg.FlowGtpv1.teid:type_name -> otg.PatternFlowGtpv1Teid - 925, // 456: otg.FlowGtpv1.squence_number:type_name -> otg.PatternFlowGtpv1SquenceNumber - 928, // 457: otg.FlowGtpv1.n_pdu_number:type_name -> otg.PatternFlowGtpv1NPduNumber - 931, // 458: otg.FlowGtpv1.next_extension_header_type:type_name -> otg.PatternFlowGtpv1NextExtensionHeaderType - 496, // 459: otg.FlowGtpv1.extension_headers:type_name -> otg.FlowGtpExtension - 934, // 460: otg.FlowGtpExtension.extension_length:type_name -> otg.PatternFlowGtpExtensionExtensionLength - 937, // 461: otg.FlowGtpExtension.contents:type_name -> otg.PatternFlowGtpExtensionContents - 940, // 462: otg.FlowGtpExtension.next_extension_header:type_name -> otg.PatternFlowGtpExtensionNextExtensionHeader - 943, // 463: otg.FlowGtpv2.version:type_name -> otg.PatternFlowGtpv2Version - 946, // 464: otg.FlowGtpv2.piggybacking_flag:type_name -> otg.PatternFlowGtpv2PiggybackingFlag - 949, // 465: otg.FlowGtpv2.teid_flag:type_name -> otg.PatternFlowGtpv2TeidFlag - 952, // 466: otg.FlowGtpv2.spare1:type_name -> otg.PatternFlowGtpv2Spare1 - 955, // 467: otg.FlowGtpv2.message_type:type_name -> otg.PatternFlowGtpv2MessageType - 958, // 468: otg.FlowGtpv2.message_length:type_name -> otg.PatternFlowGtpv2MessageLength - 961, // 469: otg.FlowGtpv2.teid:type_name -> otg.PatternFlowGtpv2Teid - 964, // 470: otg.FlowGtpv2.sequence_number:type_name -> otg.PatternFlowGtpv2SequenceNumber - 967, // 471: otg.FlowGtpv2.spare2:type_name -> otg.PatternFlowGtpv2Spare2 - 970, // 472: otg.FlowArp.hardware_type:type_name -> otg.PatternFlowArpHardwareType - 973, // 473: otg.FlowArp.protocol_type:type_name -> otg.PatternFlowArpProtocolType - 976, // 474: otg.FlowArp.hardware_length:type_name -> otg.PatternFlowArpHardwareLength - 979, // 475: otg.FlowArp.protocol_length:type_name -> otg.PatternFlowArpProtocolLength - 982, // 476: otg.FlowArp.operation:type_name -> otg.PatternFlowArpOperation - 985, // 477: otg.FlowArp.sender_hardware_addr:type_name -> otg.PatternFlowArpSenderHardwareAddr - 988, // 478: otg.FlowArp.sender_protocol_addr:type_name -> otg.PatternFlowArpSenderProtocolAddr - 991, // 479: otg.FlowArp.target_hardware_addr:type_name -> otg.PatternFlowArpTargetHardwareAddr - 994, // 480: otg.FlowArp.target_protocol_addr:type_name -> otg.PatternFlowArpTargetProtocolAddr - 70, // 481: otg.FlowIcmp.choice:type_name -> otg.FlowIcmp.Choice.Enum - 500, // 482: otg.FlowIcmp.echo:type_name -> otg.FlowIcmpEcho - 997, // 483: otg.FlowIcmpEcho.type:type_name -> otg.PatternFlowIcmpEchoType - 1000, // 484: otg.FlowIcmpEcho.code:type_name -> otg.PatternFlowIcmpEchoCode - 1001, // 485: otg.FlowIcmpEcho.checksum:type_name -> otg.PatternFlowIcmpEchoChecksum - 1004, // 486: otg.FlowIcmpEcho.identifier:type_name -> otg.PatternFlowIcmpEchoIdentifier - 1007, // 487: otg.FlowIcmpEcho.sequence_number:type_name -> otg.PatternFlowIcmpEchoSequenceNumber - 71, // 488: otg.FlowIcmpv6.choice:type_name -> otg.FlowIcmpv6.Choice.Enum - 502, // 489: otg.FlowIcmpv6.echo:type_name -> otg.FlowIcmpv6Echo - 1017, // 490: otg.FlowIcmpv6Echo.type:type_name -> otg.PatternFlowIcmpv6EchoType - 1020, // 491: otg.FlowIcmpv6Echo.code:type_name -> otg.PatternFlowIcmpv6EchoCode - 1023, // 492: otg.FlowIcmpv6Echo.identifier:type_name -> otg.PatternFlowIcmpv6EchoIdentifier - 1026, // 493: otg.FlowIcmpv6Echo.sequence_number:type_name -> otg.PatternFlowIcmpv6EchoSequenceNumber - 1027, // 494: otg.FlowIcmpv6Echo.checksum:type_name -> otg.PatternFlowIcmpv6EchoChecksum - 1031, // 495: otg.FlowPpp.address:type_name -> otg.PatternFlowPppAddress - 1034, // 496: otg.FlowPpp.control:type_name -> otg.PatternFlowPppControl - 1037, // 497: otg.FlowPpp.protocol_type:type_name -> otg.PatternFlowPppProtocolType - 1040, // 498: otg.FlowIgmpv1.version:type_name -> otg.PatternFlowIgmpv1Version - 1043, // 499: otg.FlowIgmpv1.type:type_name -> otg.PatternFlowIgmpv1Type - 1046, // 500: otg.FlowIgmpv1.unused:type_name -> otg.PatternFlowIgmpv1Unused - 1047, // 501: otg.FlowIgmpv1.checksum:type_name -> otg.PatternFlowIgmpv1Checksum - 1050, // 502: otg.FlowIgmpv1.group_address:type_name -> otg.PatternFlowIgmpv1GroupAddress - 1053, // 503: otg.FlowMpls.label:type_name -> otg.PatternFlowMplsLabel - 1056, // 504: otg.FlowMpls.traffic_class:type_name -> otg.PatternFlowMplsTrafficClass - 1059, // 505: otg.FlowMpls.bottom_of_stack:type_name -> otg.PatternFlowMplsBottomOfStack - 1062, // 506: otg.FlowMpls.time_to_live:type_name -> otg.PatternFlowMplsTimeToLive - 72, // 507: otg.FlowSize.choice:type_name -> otg.FlowSize.Choice.Enum - 507, // 508: otg.FlowSize.increment:type_name -> otg.FlowSizeIncrement - 508, // 509: otg.FlowSize.random:type_name -> otg.FlowSizeRandom - 509, // 510: otg.FlowSize.weight_pairs:type_name -> otg.FlowSizeWeightPairs - 73, // 511: otg.FlowSizeWeightPairs.choice:type_name -> otg.FlowSizeWeightPairs.Choice.Enum - 74, // 512: otg.FlowSizeWeightPairs.predefined:type_name -> otg.FlowSizeWeightPairs.Predefined.Enum - 510, // 513: otg.FlowSizeWeightPairs.custom:type_name -> otg.FlowSizeWeightPairsCustom - 75, // 514: otg.FlowRate.choice:type_name -> otg.FlowRate.Choice.Enum - 76, // 515: otg.FlowDuration.choice:type_name -> otg.FlowDuration.Choice.Enum - 515, // 516: otg.FlowDuration.fixed_packets:type_name -> otg.FlowFixedPackets - 516, // 517: otg.FlowDuration.fixed_seconds:type_name -> otg.FlowFixedSeconds - 517, // 518: otg.FlowDuration.burst:type_name -> otg.FlowBurst - 513, // 519: otg.FlowDuration.continuous:type_name -> otg.FlowContinuous - 514, // 520: otg.FlowContinuous.delay:type_name -> otg.FlowDelay - 77, // 521: otg.FlowDelay.choice:type_name -> otg.FlowDelay.Choice.Enum - 514, // 522: otg.FlowFixedPackets.delay:type_name -> otg.FlowDelay - 514, // 523: otg.FlowFixedSeconds.delay:type_name -> otg.FlowDelay - 518, // 524: otg.FlowBurst.inter_burst_gap:type_name -> otg.FlowDurationInterBurstGap - 78, // 525: otg.FlowDurationInterBurstGap.choice:type_name -> otg.FlowDurationInterBurstGap.Choice.Enum - 522, // 526: otg.FlowMetrics.rx_tx_ratio:type_name -> otg.FlowRxTxRatio - 520, // 527: otg.FlowMetrics.latency:type_name -> otg.FlowLatencyMetrics - 521, // 528: otg.FlowMetrics.predefined_metric_tags:type_name -> otg.FlowPredefinedTags - 79, // 529: otg.FlowLatencyMetrics.mode:type_name -> otg.FlowLatencyMetrics.Mode.Enum - 80, // 530: otg.FlowRxTxRatio.choice:type_name -> otg.FlowRxTxRatio.Choice.Enum - 523, // 531: otg.FlowRxTxRatio.rx_count:type_name -> otg.FlowRxTxRatioRxCount - 526, // 532: otg.Event.link:type_name -> otg.EventLink - 525, // 533: otg.Event.rx_rate_threshold:type_name -> otg.EventRxRateThreshold - 527, // 534: otg.Event.route_advertise_withdraw:type_name -> otg.EventRouteAdvertiseWithdraw - 81, // 535: otg.EventRequest.type:type_name -> otg.EventRequest.Type.Enum - 528, // 536: otg.EventSubscription.events:type_name -> otg.EventRequest - 531, // 537: otg.Lldp.connection:type_name -> otg.LldpConnection - 532, // 538: otg.Lldp.chassis_id:type_name -> otg.LldpChassisId - 533, // 539: otg.Lldp.port_id:type_name -> otg.LldpPortId - 536, // 540: otg.Lldp.system_name:type_name -> otg.LldpSystemName - 82, // 541: otg.LldpConnection.choice:type_name -> otg.LldpConnection.Choice.Enum - 83, // 542: otg.LldpChassisId.choice:type_name -> otg.LldpChassisId.Choice.Enum - 534, // 543: otg.LldpChassisId.mac_address_subtype:type_name -> otg.LldpChassisMacSubType - 84, // 544: otg.LldpPortId.choice:type_name -> otg.LldpPortId.Choice.Enum - 535, // 545: otg.LldpPortId.interface_name_subtype:type_name -> otg.LldpPortInterfaceNameSubType - 85, // 546: otg.LldpChassisMacSubType.choice:type_name -> otg.LldpChassisMacSubType.Choice.Enum - 86, // 547: otg.LldpPortInterfaceNameSubType.choice:type_name -> otg.LldpPortInterfaceNameSubType.Choice.Enum - 87, // 548: otg.LldpSystemName.choice:type_name -> otg.LldpSystemName.Choice.Enum - 88, // 549: otg.Error.kind:type_name -> otg.Error.Kind.Enum - 89, // 550: otg.ConfigUpdate.choice:type_name -> otg.ConfigUpdate.Choice.Enum - 540, // 551: otg.ConfigUpdate.flows:type_name -> otg.FlowsUpdate - 90, // 552: otg.FlowsUpdate.property_names:type_name -> otg.FlowsUpdate.PropertyNames.Enum - 475, // 553: otg.FlowsUpdate.flows:type_name -> otg.Flow - 91, // 554: otg.ControlState.choice:type_name -> otg.ControlState.Choice.Enum - 542, // 555: otg.ControlState.port:type_name -> otg.StatePort - 544, // 556: otg.ControlState.protocol:type_name -> otg.StateProtocol - 543, // 557: otg.ControlState.traffic:type_name -> otg.StateTraffic - 92, // 558: otg.StatePort.choice:type_name -> otg.StatePort.Choice.Enum - 545, // 559: otg.StatePort.link:type_name -> otg.StatePortLink - 546, // 560: otg.StatePort.capture:type_name -> otg.StatePortCapture - 93, // 561: otg.StateTraffic.choice:type_name -> otg.StateTraffic.Choice.Enum - 547, // 562: otg.StateTraffic.flow_transmit:type_name -> otg.StateTrafficFlowTransmit - 94, // 563: otg.StateProtocol.choice:type_name -> otg.StateProtocol.Choice.Enum - 548, // 564: otg.StateProtocol.all:type_name -> otg.StateProtocolAll - 549, // 565: otg.StateProtocol.route:type_name -> otg.StateProtocolRoute - 550, // 566: otg.StateProtocol.lacp:type_name -> otg.StateProtocolLacp - 553, // 567: otg.StateProtocol.bgp:type_name -> otg.StateProtocolBgp - 555, // 568: otg.StateProtocol.isis:type_name -> otg.StateProtocolIsis - 95, // 569: otg.StatePortLink.state:type_name -> otg.StatePortLink.State.Enum - 96, // 570: otg.StatePortCapture.state:type_name -> otg.StatePortCapture.State.Enum - 97, // 571: otg.StateTrafficFlowTransmit.state:type_name -> otg.StateTrafficFlowTransmit.State.Enum - 98, // 572: otg.StateProtocolAll.state:type_name -> otg.StateProtocolAll.State.Enum - 99, // 573: otg.StateProtocolRoute.state:type_name -> otg.StateProtocolRoute.State.Enum - 100, // 574: otg.StateProtocolLacp.choice:type_name -> otg.StateProtocolLacp.Choice.Enum - 551, // 575: otg.StateProtocolLacp.admin:type_name -> otg.StateProtocolLacpAdmin - 552, // 576: otg.StateProtocolLacp.member_ports:type_name -> otg.StateProtocolLacpMemberPorts - 101, // 577: otg.StateProtocolLacpAdmin.state:type_name -> otg.StateProtocolLacpAdmin.State.Enum - 102, // 578: otg.StateProtocolLacpMemberPorts.state:type_name -> otg.StateProtocolLacpMemberPorts.State.Enum - 103, // 579: otg.StateProtocolBgp.choice:type_name -> otg.StateProtocolBgp.Choice.Enum - 554, // 580: otg.StateProtocolBgp.peers:type_name -> otg.StateProtocolBgpPeers - 104, // 581: otg.StateProtocolBgpPeers.state:type_name -> otg.StateProtocolBgpPeers.State.Enum - 105, // 582: otg.StateProtocolIsis.choice:type_name -> otg.StateProtocolIsis.Choice.Enum - 556, // 583: otg.StateProtocolIsis.routers:type_name -> otg.StateProtocolIsisRouters - 106, // 584: otg.StateProtocolIsisRouters.state:type_name -> otg.StateProtocolIsisRouters.State.Enum - 107, // 585: otg.ControlAction.choice:type_name -> otg.ControlAction.Choice.Enum - 560, // 586: otg.ControlAction.protocol:type_name -> otg.ActionProtocol - 559, // 587: otg.ControlActionResponse.response:type_name -> otg.ActionResponse - 108, // 588: otg.ActionResponse.choice:type_name -> otg.ActionResponse.Choice.Enum - 561, // 589: otg.ActionResponse.protocol:type_name -> otg.ActionResponseProtocol - 109, // 590: otg.ActionProtocol.choice:type_name -> otg.ActionProtocol.Choice.Enum - 562, // 591: otg.ActionProtocol.ipv4:type_name -> otg.ActionProtocolIpv4 - 568, // 592: otg.ActionProtocol.ipv6:type_name -> otg.ActionProtocolIpv6 - 574, // 593: otg.ActionProtocol.bgp:type_name -> otg.ActionProtocolBgp - 110, // 594: otg.ActionResponseProtocol.choice:type_name -> otg.ActionResponseProtocol.Choice.Enum - 563, // 595: otg.ActionResponseProtocol.ipv4:type_name -> otg.ActionResponseProtocolIpv4 - 569, // 596: otg.ActionResponseProtocol.ipv6:type_name -> otg.ActionResponseProtocolIpv6 - 111, // 597: otg.ActionProtocolIpv4.choice:type_name -> otg.ActionProtocolIpv4.Choice.Enum - 564, // 598: otg.ActionProtocolIpv4.ping:type_name -> otg.ActionProtocolIpv4Ping - 112, // 599: otg.ActionResponseProtocolIpv4.choice:type_name -> otg.ActionResponseProtocolIpv4.Choice.Enum - 566, // 600: otg.ActionResponseProtocolIpv4.ping:type_name -> otg.ActionResponseProtocolIpv4Ping - 565, // 601: otg.ActionProtocolIpv4Ping.requests:type_name -> otg.ActionProtocolIpv4PingRequest - 567, // 602: otg.ActionResponseProtocolIpv4Ping.responses:type_name -> otg.ActionResponseProtocolIpv4PingResponse - 113, // 603: otg.ActionResponseProtocolIpv4PingResponse.result:type_name -> otg.ActionResponseProtocolIpv4PingResponse.Result.Enum - 114, // 604: otg.ActionProtocolIpv6.choice:type_name -> otg.ActionProtocolIpv6.Choice.Enum - 570, // 605: otg.ActionProtocolIpv6.ping:type_name -> otg.ActionProtocolIpv6Ping - 115, // 606: otg.ActionResponseProtocolIpv6.choice:type_name -> otg.ActionResponseProtocolIpv6.Choice.Enum - 572, // 607: otg.ActionResponseProtocolIpv6.ping:type_name -> otg.ActionResponseProtocolIpv6Ping - 571, // 608: otg.ActionProtocolIpv6Ping.requests:type_name -> otg.ActionProtocolIpv6PingRequest - 573, // 609: otg.ActionResponseProtocolIpv6Ping.responses:type_name -> otg.ActionResponseProtocolIpv6PingResponse - 116, // 610: otg.ActionResponseProtocolIpv6PingResponse.result:type_name -> otg.ActionResponseProtocolIpv6PingResponse.Result.Enum - 117, // 611: otg.ActionProtocolBgp.choice:type_name -> otg.ActionProtocolBgp.Choice.Enum - 575, // 612: otg.ActionProtocolBgp.notification:type_name -> otg.ActionProtocolBgpNotification - 576, // 613: otg.ActionProtocolBgp.initiate_graceful_restart:type_name -> otg.ActionProtocolBgpInitiateGracefulRestart - 118, // 614: otg.ActionProtocolBgpNotification.choice:type_name -> otg.ActionProtocolBgpNotification.Choice.Enum - 377, // 615: otg.ActionProtocolBgpNotification.cease:type_name -> otg.DeviceBgpCeaseError - 372, // 616: otg.ActionProtocolBgpNotification.message_header_error:type_name -> otg.DeviceBgpMessageHeaderError - 373, // 617: otg.ActionProtocolBgpNotification.open_message_error:type_name -> otg.DeviceBgpOpenMessageError - 374, // 618: otg.ActionProtocolBgpNotification.update_message_error:type_name -> otg.DeviceBgpUpdateMessageError - 375, // 619: otg.ActionProtocolBgpNotification.hold_timer_expired:type_name -> otg.DeviceBgpHoldTimerExpired - 376, // 620: otg.ActionProtocolBgpNotification.finite_state_machine_error:type_name -> otg.DeviceBgpFiniteStateMachineError - 378, // 621: otg.ActionProtocolBgpNotification.custom:type_name -> otg.DeviceBgpCustomError - 119, // 622: otg.MetricsRequest.choice:type_name -> otg.MetricsRequest.Choice.Enum - 579, // 623: otg.MetricsRequest.port:type_name -> otg.PortMetricsRequest - 581, // 624: otg.MetricsRequest.flow:type_name -> otg.FlowMetricsRequest - 590, // 625: otg.MetricsRequest.bgpv4:type_name -> otg.Bgpv4MetricsRequest - 592, // 626: otg.MetricsRequest.bgpv6:type_name -> otg.Bgpv6MetricsRequest - 594, // 627: otg.MetricsRequest.isis:type_name -> otg.IsisMetricsRequest - 596, // 628: otg.MetricsRequest.lag:type_name -> otg.LagMetricsRequest - 598, // 629: otg.MetricsRequest.lacp:type_name -> otg.LacpMetricsRequest - 600, // 630: otg.MetricsRequest.lldp:type_name -> otg.LldpMetricsRequest - 602, // 631: otg.MetricsRequest.rsvp:type_name -> otg.RsvpMetricsRequest - 120, // 632: otg.MetricsResponse.choice:type_name -> otg.MetricsResponse.Choice.Enum - 580, // 633: otg.MetricsResponse.port_metrics:type_name -> otg.PortMetric - 584, // 634: otg.MetricsResponse.flow_metrics:type_name -> otg.FlowMetric - 591, // 635: otg.MetricsResponse.bgpv4_metrics:type_name -> otg.Bgpv4Metric - 593, // 636: otg.MetricsResponse.bgpv6_metrics:type_name -> otg.Bgpv6Metric - 595, // 637: otg.MetricsResponse.isis_metrics:type_name -> otg.IsisMetric - 597, // 638: otg.MetricsResponse.lag_metrics:type_name -> otg.LagMetric - 599, // 639: otg.MetricsResponse.lacp_metrics:type_name -> otg.LacpMetric - 601, // 640: otg.MetricsResponse.lldp_metrics:type_name -> otg.LldpMetric - 603, // 641: otg.MetricsResponse.rsvp_metrics:type_name -> otg.RsvpMetric - 121, // 642: otg.PortMetricsRequest.column_names:type_name -> otg.PortMetricsRequest.ColumnNames.Enum - 122, // 643: otg.PortMetric.link:type_name -> otg.PortMetric.Link.Enum - 123, // 644: otg.PortMetric.capture:type_name -> otg.PortMetric.Capture.Enum - 124, // 645: otg.PortMetric.transmit:type_name -> otg.PortMetric.Transmit.Enum - 125, // 646: otg.FlowMetricsRequest.metric_names:type_name -> otg.FlowMetricsRequest.MetricNames.Enum - 582, // 647: otg.FlowMetricsRequest.tagged_metrics:type_name -> otg.FlowTaggedMetricsFilter - 126, // 648: otg.FlowTaggedMetricsFilter.metric_names:type_name -> otg.FlowTaggedMetricsFilter.MetricNames.Enum - 583, // 649: otg.FlowTaggedMetricsFilter.filters:type_name -> otg.FlowMetricTagFilter - 127, // 650: otg.FlowMetric.transmit:type_name -> otg.FlowMetric.Transmit.Enum - 588, // 651: otg.FlowMetric.timestamps:type_name -> otg.MetricTimestamp - 589, // 652: otg.FlowMetric.latency:type_name -> otg.MetricLatency - 585, // 653: otg.FlowMetric.tagged_metrics:type_name -> otg.FlowTaggedMetric - 586, // 654: otg.FlowTaggedMetric.tags:type_name -> otg.FlowMetricTag - 588, // 655: otg.FlowTaggedMetric.timestamps:type_name -> otg.MetricTimestamp - 589, // 656: otg.FlowTaggedMetric.latency:type_name -> otg.MetricLatency - 587, // 657: otg.FlowMetricTag.value:type_name -> otg.FlowMetricTagValue - 128, // 658: otg.FlowMetricTagValue.choice:type_name -> otg.FlowMetricTagValue.Choice.Enum - 129, // 659: otg.Bgpv4MetricsRequest.column_names:type_name -> otg.Bgpv4MetricsRequest.ColumnNames.Enum - 130, // 660: otg.Bgpv4Metric.session_state:type_name -> otg.Bgpv4Metric.SessionState.Enum - 131, // 661: otg.Bgpv4Metric.fsm_state:type_name -> otg.Bgpv4Metric.FsmState.Enum - 132, // 662: otg.Bgpv6MetricsRequest.column_names:type_name -> otg.Bgpv6MetricsRequest.ColumnNames.Enum - 133, // 663: otg.Bgpv6Metric.session_state:type_name -> otg.Bgpv6Metric.SessionState.Enum - 134, // 664: otg.Bgpv6Metric.fsm_state:type_name -> otg.Bgpv6Metric.FsmState.Enum - 135, // 665: otg.IsisMetricsRequest.column_names:type_name -> otg.IsisMetricsRequest.ColumnNames.Enum - 136, // 666: otg.LagMetricsRequest.column_names:type_name -> otg.LagMetricsRequest.ColumnNames.Enum - 137, // 667: otg.LagMetric.oper_status:type_name -> otg.LagMetric.OperStatus.Enum - 138, // 668: otg.LacpMetricsRequest.column_names:type_name -> otg.LacpMetricsRequest.ColumnNames.Enum - 139, // 669: otg.LacpMetric.activity:type_name -> otg.LacpMetric.Activity.Enum - 140, // 670: otg.LacpMetric.timeout:type_name -> otg.LacpMetric.Timeout.Enum - 141, // 671: otg.LacpMetric.synchronization:type_name -> otg.LacpMetric.Synchronization.Enum - 142, // 672: otg.LldpMetricsRequest.column_names:type_name -> otg.LldpMetricsRequest.ColumnNames.Enum - 143, // 673: otg.RsvpMetricsRequest.column_names:type_name -> otg.RsvpMetricsRequest.ColumnNames.Enum - 144, // 674: otg.StatesRequest.choice:type_name -> otg.StatesRequest.Choice.Enum - 606, // 675: otg.StatesRequest.ipv4_neighbors:type_name -> otg.Neighborsv4StatesRequest - 608, // 676: otg.StatesRequest.ipv6_neighbors:type_name -> otg.Neighborsv6StatesRequest - 610, // 677: otg.StatesRequest.bgp_prefixes:type_name -> otg.BgpPrefixStateRequest - 619, // 678: otg.StatesRequest.isis_lsps:type_name -> otg.IsisLspsStateRequest - 636, // 679: otg.StatesRequest.lldp_neighbors:type_name -> otg.LldpNeighborsStateRequest - 640, // 680: otg.StatesRequest.rsvp_lsps:type_name -> otg.RsvpLspsStateRequest - 145, // 681: otg.StatesResponse.choice:type_name -> otg.StatesResponse.Choice.Enum - 607, // 682: otg.StatesResponse.ipv4_neighbors:type_name -> otg.Neighborsv4State - 609, // 683: otg.StatesResponse.ipv6_neighbors:type_name -> otg.Neighborsv6State - 613, // 684: otg.StatesResponse.bgp_prefixes:type_name -> otg.BgpPrefixesState - 620, // 685: otg.StatesResponse.isis_lsps:type_name -> otg.IsisLspsState - 637, // 686: otg.StatesResponse.lldp_neighbors:type_name -> otg.LldpNeighborsState - 641, // 687: otg.StatesResponse.rsvp_lsps:type_name -> otg.RsvpLspsState - 146, // 688: otg.BgpPrefixStateRequest.prefix_filters:type_name -> otg.BgpPrefixStateRequest.PrefixFilters.Enum - 611, // 689: otg.BgpPrefixStateRequest.ipv4_unicast_filters:type_name -> otg.BgpPrefixIpv4UnicastFilter - 612, // 690: otg.BgpPrefixStateRequest.ipv6_unicast_filters:type_name -> otg.BgpPrefixIpv6UnicastFilter - 147, // 691: otg.BgpPrefixIpv4UnicastFilter.origin:type_name -> otg.BgpPrefixIpv4UnicastFilter.Origin.Enum - 148, // 692: otg.BgpPrefixIpv6UnicastFilter.origin:type_name -> otg.BgpPrefixIpv6UnicastFilter.Origin.Enum - 614, // 693: otg.BgpPrefixesState.ipv4_unicast_prefixes:type_name -> otg.BgpPrefixIpv4UnicastState - 615, // 694: otg.BgpPrefixesState.ipv6_unicast_prefixes:type_name -> otg.BgpPrefixIpv6UnicastState - 149, // 695: otg.BgpPrefixIpv4UnicastState.origin:type_name -> otg.BgpPrefixIpv4UnicastState.Origin.Enum - 616, // 696: otg.BgpPrefixIpv4UnicastState.communities:type_name -> otg.ResultBgpCommunity - 617, // 697: otg.BgpPrefixIpv4UnicastState.as_path:type_name -> otg.ResultBgpAsPath - 150, // 698: otg.BgpPrefixIpv6UnicastState.origin:type_name -> otg.BgpPrefixIpv6UnicastState.Origin.Enum - 616, // 699: otg.BgpPrefixIpv6UnicastState.communities:type_name -> otg.ResultBgpCommunity - 617, // 700: otg.BgpPrefixIpv6UnicastState.as_path:type_name -> otg.ResultBgpAsPath - 151, // 701: otg.ResultBgpCommunity.type:type_name -> otg.ResultBgpCommunity.Type.Enum - 618, // 702: otg.ResultBgpAsPath.segments:type_name -> otg.ResultBgpAsPathSegment - 152, // 703: otg.ResultBgpAsPathSegment.type:type_name -> otg.ResultBgpAsPathSegment.Type.Enum - 621, // 704: otg.IsisLspsState.lsps:type_name -> otg.IsisLspState - 153, // 705: otg.IsisLspState.pdu_type:type_name -> otg.IsisLspState.PduType.Enum - 624, // 706: otg.IsisLspState.flags:type_name -> otg.IsisLspFlags - 622, // 707: otg.IsisLspState.tlvs:type_name -> otg.IsisLspTlvs - 623, // 708: otg.IsisLspTlvs.hostname_tlvs:type_name -> otg.IsisLspHostname - 625, // 709: otg.IsisLspTlvs.is_reachability_tlvs:type_name -> otg.IsisLspIsReachabilityTlv - 626, // 710: otg.IsisLspTlvs.extended_is_reachability_tlvs:type_name -> otg.IsisLspExtendedIsReachabilityTlv - 628, // 711: otg.IsisLspTlvs.ipv4_internal_reachability_tlvs:type_name -> otg.IsisLspIpv4InternalReachabilityTlv - 629, // 712: otg.IsisLspTlvs.ipv4_external_reachability_tlvs:type_name -> otg.IsisLspIpv4ExternalReachabilityTlv - 631, // 713: otg.IsisLspTlvs.extended_ipv4_reachability_tlvs:type_name -> otg.IsisLspExtendedIpv4ReachabilityTlv - 633, // 714: otg.IsisLspTlvs.ipv6_reachability_tlvs:type_name -> otg.IsisLspIpv6ReachabilityTlv - 627, // 715: otg.IsisLspIsReachabilityTlv.neighbors:type_name -> otg.IsisLspneighbor - 627, // 716: otg.IsisLspExtendedIsReachabilityTlv.neighbors:type_name -> otg.IsisLspneighbor - 630, // 717: otg.IsisLspIpv4InternalReachabilityTlv.prefixes:type_name -> otg.IsisLspV4Prefix - 630, // 718: otg.IsisLspIpv4ExternalReachabilityTlv.prefixes:type_name -> otg.IsisLspV4Prefix - 154, // 719: otg.IsisLspV4Prefix.redistribution_type:type_name -> otg.IsisLspV4Prefix.RedistributionType.Enum - 155, // 720: otg.IsisLspV4Prefix.origin_type:type_name -> otg.IsisLspV4Prefix.OriginType.Enum - 632, // 721: otg.IsisLspExtendedIpv4ReachabilityTlv.prefixes:type_name -> otg.IsisLspExtendedV4Prefix - 156, // 722: otg.IsisLspExtendedV4Prefix.redistribution_type:type_name -> otg.IsisLspExtendedV4Prefix.RedistributionType.Enum - 635, // 723: otg.IsisLspExtendedV4Prefix.prefix_attributes:type_name -> otg.IsisLspPrefixAttributes - 634, // 724: otg.IsisLspIpv6ReachabilityTlv.prefixes:type_name -> otg.IsisLspV6Prefix - 157, // 725: otg.IsisLspV6Prefix.redistribution_type:type_name -> otg.IsisLspV6Prefix.RedistributionType.Enum - 158, // 726: otg.IsisLspV6Prefix.origin_type:type_name -> otg.IsisLspV6Prefix.OriginType.Enum - 635, // 727: otg.IsisLspV6Prefix.prefix_attributes:type_name -> otg.IsisLspPrefixAttributes - 159, // 728: otg.LldpNeighborsState.chassis_id_type:type_name -> otg.LldpNeighborsState.ChassisIdType.Enum - 160, // 729: otg.LldpNeighborsState.port_id_type:type_name -> otg.LldpNeighborsState.PortIdType.Enum - 638, // 730: otg.LldpNeighborsState.custom_tlvs:type_name -> otg.LldpCustomTLVState - 639, // 731: otg.LldpNeighborsState.capabilities:type_name -> otg.LldpCapabilityState - 161, // 732: otg.LldpCapabilityState.capability_name:type_name -> otg.LldpCapabilityState.CapabilityName.Enum - 642, // 733: otg.RsvpLspsState.ipv4_lsps:type_name -> otg.RsvpIPv4LspState - 643, // 734: otg.RsvpIPv4LspState.lsp:type_name -> otg.RsvpLspState - 644, // 735: otg.RsvpIPv4LspState.rros:type_name -> otg.RsvpLspIpv4Rro - 645, // 736: otg.RsvpIPv4LspState.eros:type_name -> otg.RsvpLspIpv4Ero - 162, // 737: otg.RsvpLspState.session_status:type_name -> otg.RsvpLspState.SessionStatus.Enum - 163, // 738: otg.RsvpLspState.last_flap_reason:type_name -> otg.RsvpLspState.LastFlapReason.Enum - 164, // 739: otg.RsvpLspIpv4Ero.type:type_name -> otg.RsvpLspIpv4Ero.Type.Enum - 165, // 740: otg.PatternFlowEthernetDst.choice:type_name -> otg.PatternFlowEthernetDst.Choice.Enum - 647, // 741: otg.PatternFlowEthernetDst.increment:type_name -> otg.PatternFlowEthernetDstCounter - 647, // 742: otg.PatternFlowEthernetDst.decrement:type_name -> otg.PatternFlowEthernetDstCounter - 648, // 743: otg.PatternFlowEthernetDst.metric_tags:type_name -> otg.PatternFlowEthernetDstMetricTag - 166, // 744: otg.PatternFlowEthernetSrc.choice:type_name -> otg.PatternFlowEthernetSrc.Choice.Enum - 650, // 745: otg.PatternFlowEthernetSrc.increment:type_name -> otg.PatternFlowEthernetSrcCounter - 650, // 746: otg.PatternFlowEthernetSrc.decrement:type_name -> otg.PatternFlowEthernetSrcCounter - 651, // 747: otg.PatternFlowEthernetSrc.metric_tags:type_name -> otg.PatternFlowEthernetSrcMetricTag - 167, // 748: otg.PatternFlowEthernetEtherType.choice:type_name -> otg.PatternFlowEthernetEtherType.Choice.Enum - 653, // 749: otg.PatternFlowEthernetEtherType.increment:type_name -> otg.PatternFlowEthernetEtherTypeCounter - 653, // 750: otg.PatternFlowEthernetEtherType.decrement:type_name -> otg.PatternFlowEthernetEtherTypeCounter - 654, // 751: otg.PatternFlowEthernetEtherType.metric_tags:type_name -> otg.PatternFlowEthernetEtherTypeMetricTag - 168, // 752: otg.PatternFlowEthernetPfcQueue.choice:type_name -> otg.PatternFlowEthernetPfcQueue.Choice.Enum - 656, // 753: otg.PatternFlowEthernetPfcQueue.increment:type_name -> otg.PatternFlowEthernetPfcQueueCounter - 656, // 754: otg.PatternFlowEthernetPfcQueue.decrement:type_name -> otg.PatternFlowEthernetPfcQueueCounter - 657, // 755: otg.PatternFlowEthernetPfcQueue.metric_tags:type_name -> otg.PatternFlowEthernetPfcQueueMetricTag - 169, // 756: otg.PatternFlowVlanPriority.choice:type_name -> otg.PatternFlowVlanPriority.Choice.Enum - 659, // 757: otg.PatternFlowVlanPriority.increment:type_name -> otg.PatternFlowVlanPriorityCounter - 659, // 758: otg.PatternFlowVlanPriority.decrement:type_name -> otg.PatternFlowVlanPriorityCounter - 660, // 759: otg.PatternFlowVlanPriority.metric_tags:type_name -> otg.PatternFlowVlanPriorityMetricTag - 170, // 760: otg.PatternFlowVlanCfi.choice:type_name -> otg.PatternFlowVlanCfi.Choice.Enum - 662, // 761: otg.PatternFlowVlanCfi.increment:type_name -> otg.PatternFlowVlanCfiCounter - 662, // 762: otg.PatternFlowVlanCfi.decrement:type_name -> otg.PatternFlowVlanCfiCounter - 663, // 763: otg.PatternFlowVlanCfi.metric_tags:type_name -> otg.PatternFlowVlanCfiMetricTag - 171, // 764: otg.PatternFlowVlanId.choice:type_name -> otg.PatternFlowVlanId.Choice.Enum - 665, // 765: otg.PatternFlowVlanId.increment:type_name -> otg.PatternFlowVlanIdCounter - 665, // 766: otg.PatternFlowVlanId.decrement:type_name -> otg.PatternFlowVlanIdCounter - 666, // 767: otg.PatternFlowVlanId.metric_tags:type_name -> otg.PatternFlowVlanIdMetricTag - 172, // 768: otg.PatternFlowVlanTpid.choice:type_name -> otg.PatternFlowVlanTpid.Choice.Enum - 668, // 769: otg.PatternFlowVlanTpid.increment:type_name -> otg.PatternFlowVlanTpidCounter - 668, // 770: otg.PatternFlowVlanTpid.decrement:type_name -> otg.PatternFlowVlanTpidCounter - 669, // 771: otg.PatternFlowVlanTpid.metric_tags:type_name -> otg.PatternFlowVlanTpidMetricTag - 173, // 772: otg.PatternFlowVxlanFlags.choice:type_name -> otg.PatternFlowVxlanFlags.Choice.Enum - 671, // 773: otg.PatternFlowVxlanFlags.increment:type_name -> otg.PatternFlowVxlanFlagsCounter - 671, // 774: otg.PatternFlowVxlanFlags.decrement:type_name -> otg.PatternFlowVxlanFlagsCounter - 672, // 775: otg.PatternFlowVxlanFlags.metric_tags:type_name -> otg.PatternFlowVxlanFlagsMetricTag - 174, // 776: otg.PatternFlowVxlanReserved0.choice:type_name -> otg.PatternFlowVxlanReserved0.Choice.Enum - 674, // 777: otg.PatternFlowVxlanReserved0.increment:type_name -> otg.PatternFlowVxlanReserved0Counter - 674, // 778: otg.PatternFlowVxlanReserved0.decrement:type_name -> otg.PatternFlowVxlanReserved0Counter - 675, // 779: otg.PatternFlowVxlanReserved0.metric_tags:type_name -> otg.PatternFlowVxlanReserved0MetricTag - 175, // 780: otg.PatternFlowVxlanVni.choice:type_name -> otg.PatternFlowVxlanVni.Choice.Enum - 677, // 781: otg.PatternFlowVxlanVni.increment:type_name -> otg.PatternFlowVxlanVniCounter - 677, // 782: otg.PatternFlowVxlanVni.decrement:type_name -> otg.PatternFlowVxlanVniCounter - 678, // 783: otg.PatternFlowVxlanVni.metric_tags:type_name -> otg.PatternFlowVxlanVniMetricTag - 176, // 784: otg.PatternFlowVxlanReserved1.choice:type_name -> otg.PatternFlowVxlanReserved1.Choice.Enum - 680, // 785: otg.PatternFlowVxlanReserved1.increment:type_name -> otg.PatternFlowVxlanReserved1Counter - 680, // 786: otg.PatternFlowVxlanReserved1.decrement:type_name -> otg.PatternFlowVxlanReserved1Counter - 681, // 787: otg.PatternFlowVxlanReserved1.metric_tags:type_name -> otg.PatternFlowVxlanReserved1MetricTag - 177, // 788: otg.PatternFlowIpv4Version.choice:type_name -> otg.PatternFlowIpv4Version.Choice.Enum - 683, // 789: otg.PatternFlowIpv4Version.increment:type_name -> otg.PatternFlowIpv4VersionCounter - 683, // 790: otg.PatternFlowIpv4Version.decrement:type_name -> otg.PatternFlowIpv4VersionCounter - 684, // 791: otg.PatternFlowIpv4Version.metric_tags:type_name -> otg.PatternFlowIpv4VersionMetricTag - 178, // 792: otg.PatternFlowIpv4HeaderLength.choice:type_name -> otg.PatternFlowIpv4HeaderLength.Choice.Enum - 686, // 793: otg.PatternFlowIpv4HeaderLength.increment:type_name -> otg.PatternFlowIpv4HeaderLengthCounter - 686, // 794: otg.PatternFlowIpv4HeaderLength.decrement:type_name -> otg.PatternFlowIpv4HeaderLengthCounter - 687, // 795: otg.PatternFlowIpv4HeaderLength.metric_tags:type_name -> otg.PatternFlowIpv4HeaderLengthMetricTag - 179, // 796: otg.PatternFlowIpv4TotalLength.choice:type_name -> otg.PatternFlowIpv4TotalLength.Choice.Enum - 689, // 797: otg.PatternFlowIpv4TotalLength.increment:type_name -> otg.PatternFlowIpv4TotalLengthCounter - 689, // 798: otg.PatternFlowIpv4TotalLength.decrement:type_name -> otg.PatternFlowIpv4TotalLengthCounter - 690, // 799: otg.PatternFlowIpv4TotalLength.metric_tags:type_name -> otg.PatternFlowIpv4TotalLengthMetricTag - 180, // 800: otg.PatternFlowIpv4Identification.choice:type_name -> otg.PatternFlowIpv4Identification.Choice.Enum - 692, // 801: otg.PatternFlowIpv4Identification.increment:type_name -> otg.PatternFlowIpv4IdentificationCounter - 692, // 802: otg.PatternFlowIpv4Identification.decrement:type_name -> otg.PatternFlowIpv4IdentificationCounter - 693, // 803: otg.PatternFlowIpv4Identification.metric_tags:type_name -> otg.PatternFlowIpv4IdentificationMetricTag - 181, // 804: otg.PatternFlowIpv4Reserved.choice:type_name -> otg.PatternFlowIpv4Reserved.Choice.Enum - 695, // 805: otg.PatternFlowIpv4Reserved.increment:type_name -> otg.PatternFlowIpv4ReservedCounter - 695, // 806: otg.PatternFlowIpv4Reserved.decrement:type_name -> otg.PatternFlowIpv4ReservedCounter - 696, // 807: otg.PatternFlowIpv4Reserved.metric_tags:type_name -> otg.PatternFlowIpv4ReservedMetricTag - 182, // 808: otg.PatternFlowIpv4DontFragment.choice:type_name -> otg.PatternFlowIpv4DontFragment.Choice.Enum - 698, // 809: otg.PatternFlowIpv4DontFragment.increment:type_name -> otg.PatternFlowIpv4DontFragmentCounter - 698, // 810: otg.PatternFlowIpv4DontFragment.decrement:type_name -> otg.PatternFlowIpv4DontFragmentCounter - 699, // 811: otg.PatternFlowIpv4DontFragment.metric_tags:type_name -> otg.PatternFlowIpv4DontFragmentMetricTag - 183, // 812: otg.PatternFlowIpv4MoreFragments.choice:type_name -> otg.PatternFlowIpv4MoreFragments.Choice.Enum - 701, // 813: otg.PatternFlowIpv4MoreFragments.increment:type_name -> otg.PatternFlowIpv4MoreFragmentsCounter - 701, // 814: otg.PatternFlowIpv4MoreFragments.decrement:type_name -> otg.PatternFlowIpv4MoreFragmentsCounter - 702, // 815: otg.PatternFlowIpv4MoreFragments.metric_tags:type_name -> otg.PatternFlowIpv4MoreFragmentsMetricTag - 184, // 816: otg.PatternFlowIpv4FragmentOffset.choice:type_name -> otg.PatternFlowIpv4FragmentOffset.Choice.Enum - 704, // 817: otg.PatternFlowIpv4FragmentOffset.increment:type_name -> otg.PatternFlowIpv4FragmentOffsetCounter - 704, // 818: otg.PatternFlowIpv4FragmentOffset.decrement:type_name -> otg.PatternFlowIpv4FragmentOffsetCounter - 705, // 819: otg.PatternFlowIpv4FragmentOffset.metric_tags:type_name -> otg.PatternFlowIpv4FragmentOffsetMetricTag - 185, // 820: otg.PatternFlowIpv4TimeToLive.choice:type_name -> otg.PatternFlowIpv4TimeToLive.Choice.Enum - 707, // 821: otg.PatternFlowIpv4TimeToLive.increment:type_name -> otg.PatternFlowIpv4TimeToLiveCounter - 707, // 822: otg.PatternFlowIpv4TimeToLive.decrement:type_name -> otg.PatternFlowIpv4TimeToLiveCounter - 708, // 823: otg.PatternFlowIpv4TimeToLive.metric_tags:type_name -> otg.PatternFlowIpv4TimeToLiveMetricTag - 186, // 824: otg.PatternFlowIpv4Protocol.choice:type_name -> otg.PatternFlowIpv4Protocol.Choice.Enum - 710, // 825: otg.PatternFlowIpv4Protocol.increment:type_name -> otg.PatternFlowIpv4ProtocolCounter - 710, // 826: otg.PatternFlowIpv4Protocol.decrement:type_name -> otg.PatternFlowIpv4ProtocolCounter - 711, // 827: otg.PatternFlowIpv4Protocol.metric_tags:type_name -> otg.PatternFlowIpv4ProtocolMetricTag - 187, // 828: otg.PatternFlowIpv4HeaderChecksum.choice:type_name -> otg.PatternFlowIpv4HeaderChecksum.Choice.Enum - 188, // 829: otg.PatternFlowIpv4HeaderChecksum.generated:type_name -> otg.PatternFlowIpv4HeaderChecksum.Generated.Enum - 189, // 830: otg.PatternFlowIpv4Src.choice:type_name -> otg.PatternFlowIpv4Src.Choice.Enum - 714, // 831: otg.PatternFlowIpv4Src.increment:type_name -> otg.PatternFlowIpv4SrcCounter - 714, // 832: otg.PatternFlowIpv4Src.decrement:type_name -> otg.PatternFlowIpv4SrcCounter - 715, // 833: otg.PatternFlowIpv4Src.metric_tags:type_name -> otg.PatternFlowIpv4SrcMetricTag - 190, // 834: otg.PatternFlowIpv4Dst.choice:type_name -> otg.PatternFlowIpv4Dst.Choice.Enum - 717, // 835: otg.PatternFlowIpv4Dst.increment:type_name -> otg.PatternFlowIpv4DstCounter - 717, // 836: otg.PatternFlowIpv4Dst.decrement:type_name -> otg.PatternFlowIpv4DstCounter - 718, // 837: otg.PatternFlowIpv4Dst.metric_tags:type_name -> otg.PatternFlowIpv4DstMetricTag - 191, // 838: otg.PatternFlowIpv4PriorityRaw.choice:type_name -> otg.PatternFlowIpv4PriorityRaw.Choice.Enum - 720, // 839: otg.PatternFlowIpv4PriorityRaw.increment:type_name -> otg.PatternFlowIpv4PriorityRawCounter - 720, // 840: otg.PatternFlowIpv4PriorityRaw.decrement:type_name -> otg.PatternFlowIpv4PriorityRawCounter - 721, // 841: otg.PatternFlowIpv4PriorityRaw.metric_tags:type_name -> otg.PatternFlowIpv4PriorityRawMetricTag - 192, // 842: otg.PatternFlowIpv4DscpPhb.choice:type_name -> otg.PatternFlowIpv4DscpPhb.Choice.Enum - 723, // 843: otg.PatternFlowIpv4DscpPhb.increment:type_name -> otg.PatternFlowIpv4DscpPhbCounter - 723, // 844: otg.PatternFlowIpv4DscpPhb.decrement:type_name -> otg.PatternFlowIpv4DscpPhbCounter - 724, // 845: otg.PatternFlowIpv4DscpPhb.metric_tags:type_name -> otg.PatternFlowIpv4DscpPhbMetricTag - 193, // 846: otg.PatternFlowIpv4DscpEcn.choice:type_name -> otg.PatternFlowIpv4DscpEcn.Choice.Enum - 726, // 847: otg.PatternFlowIpv4DscpEcn.increment:type_name -> otg.PatternFlowIpv4DscpEcnCounter - 726, // 848: otg.PatternFlowIpv4DscpEcn.decrement:type_name -> otg.PatternFlowIpv4DscpEcnCounter - 727, // 849: otg.PatternFlowIpv4DscpEcn.metric_tags:type_name -> otg.PatternFlowIpv4DscpEcnMetricTag - 194, // 850: otg.PatternFlowIpv4TosPrecedence.choice:type_name -> otg.PatternFlowIpv4TosPrecedence.Choice.Enum - 729, // 851: otg.PatternFlowIpv4TosPrecedence.increment:type_name -> otg.PatternFlowIpv4TosPrecedenceCounter - 729, // 852: otg.PatternFlowIpv4TosPrecedence.decrement:type_name -> otg.PatternFlowIpv4TosPrecedenceCounter - 730, // 853: otg.PatternFlowIpv4TosPrecedence.metric_tags:type_name -> otg.PatternFlowIpv4TosPrecedenceMetricTag - 195, // 854: otg.PatternFlowIpv4TosDelay.choice:type_name -> otg.PatternFlowIpv4TosDelay.Choice.Enum - 732, // 855: otg.PatternFlowIpv4TosDelay.increment:type_name -> otg.PatternFlowIpv4TosDelayCounter - 732, // 856: otg.PatternFlowIpv4TosDelay.decrement:type_name -> otg.PatternFlowIpv4TosDelayCounter - 733, // 857: otg.PatternFlowIpv4TosDelay.metric_tags:type_name -> otg.PatternFlowIpv4TosDelayMetricTag - 196, // 858: otg.PatternFlowIpv4TosThroughput.choice:type_name -> otg.PatternFlowIpv4TosThroughput.Choice.Enum - 735, // 859: otg.PatternFlowIpv4TosThroughput.increment:type_name -> otg.PatternFlowIpv4TosThroughputCounter - 735, // 860: otg.PatternFlowIpv4TosThroughput.decrement:type_name -> otg.PatternFlowIpv4TosThroughputCounter - 736, // 861: otg.PatternFlowIpv4TosThroughput.metric_tags:type_name -> otg.PatternFlowIpv4TosThroughputMetricTag - 197, // 862: otg.PatternFlowIpv4TosReliability.choice:type_name -> otg.PatternFlowIpv4TosReliability.Choice.Enum - 738, // 863: otg.PatternFlowIpv4TosReliability.increment:type_name -> otg.PatternFlowIpv4TosReliabilityCounter - 738, // 864: otg.PatternFlowIpv4TosReliability.decrement:type_name -> otg.PatternFlowIpv4TosReliabilityCounter - 739, // 865: otg.PatternFlowIpv4TosReliability.metric_tags:type_name -> otg.PatternFlowIpv4TosReliabilityMetricTag - 198, // 866: otg.PatternFlowIpv4TosMonetary.choice:type_name -> otg.PatternFlowIpv4TosMonetary.Choice.Enum - 741, // 867: otg.PatternFlowIpv4TosMonetary.increment:type_name -> otg.PatternFlowIpv4TosMonetaryCounter - 741, // 868: otg.PatternFlowIpv4TosMonetary.decrement:type_name -> otg.PatternFlowIpv4TosMonetaryCounter - 742, // 869: otg.PatternFlowIpv4TosMonetary.metric_tags:type_name -> otg.PatternFlowIpv4TosMonetaryMetricTag - 199, // 870: otg.PatternFlowIpv4TosUnused.choice:type_name -> otg.PatternFlowIpv4TosUnused.Choice.Enum - 744, // 871: otg.PatternFlowIpv4TosUnused.increment:type_name -> otg.PatternFlowIpv4TosUnusedCounter - 744, // 872: otg.PatternFlowIpv4TosUnused.decrement:type_name -> otg.PatternFlowIpv4TosUnusedCounter - 745, // 873: otg.PatternFlowIpv4TosUnused.metric_tags:type_name -> otg.PatternFlowIpv4TosUnusedMetricTag - 200, // 874: otg.PatternFlowIpv6Version.choice:type_name -> otg.PatternFlowIpv6Version.Choice.Enum - 747, // 875: otg.PatternFlowIpv6Version.increment:type_name -> otg.PatternFlowIpv6VersionCounter - 747, // 876: otg.PatternFlowIpv6Version.decrement:type_name -> otg.PatternFlowIpv6VersionCounter - 748, // 877: otg.PatternFlowIpv6Version.metric_tags:type_name -> otg.PatternFlowIpv6VersionMetricTag - 201, // 878: otg.PatternFlowIpv6TrafficClass.choice:type_name -> otg.PatternFlowIpv6TrafficClass.Choice.Enum - 750, // 879: otg.PatternFlowIpv6TrafficClass.increment:type_name -> otg.PatternFlowIpv6TrafficClassCounter - 750, // 880: otg.PatternFlowIpv6TrafficClass.decrement:type_name -> otg.PatternFlowIpv6TrafficClassCounter - 751, // 881: otg.PatternFlowIpv6TrafficClass.metric_tags:type_name -> otg.PatternFlowIpv6TrafficClassMetricTag - 202, // 882: otg.PatternFlowIpv6FlowLabel.choice:type_name -> otg.PatternFlowIpv6FlowLabel.Choice.Enum - 753, // 883: otg.PatternFlowIpv6FlowLabel.increment:type_name -> otg.PatternFlowIpv6FlowLabelCounter - 753, // 884: otg.PatternFlowIpv6FlowLabel.decrement:type_name -> otg.PatternFlowIpv6FlowLabelCounter - 754, // 885: otg.PatternFlowIpv6FlowLabel.metric_tags:type_name -> otg.PatternFlowIpv6FlowLabelMetricTag - 203, // 886: otg.PatternFlowIpv6PayloadLength.choice:type_name -> otg.PatternFlowIpv6PayloadLength.Choice.Enum - 756, // 887: otg.PatternFlowIpv6PayloadLength.increment:type_name -> otg.PatternFlowIpv6PayloadLengthCounter - 756, // 888: otg.PatternFlowIpv6PayloadLength.decrement:type_name -> otg.PatternFlowIpv6PayloadLengthCounter - 757, // 889: otg.PatternFlowIpv6PayloadLength.metric_tags:type_name -> otg.PatternFlowIpv6PayloadLengthMetricTag - 204, // 890: otg.PatternFlowIpv6NextHeader.choice:type_name -> otg.PatternFlowIpv6NextHeader.Choice.Enum - 759, // 891: otg.PatternFlowIpv6NextHeader.increment:type_name -> otg.PatternFlowIpv6NextHeaderCounter - 759, // 892: otg.PatternFlowIpv6NextHeader.decrement:type_name -> otg.PatternFlowIpv6NextHeaderCounter - 760, // 893: otg.PatternFlowIpv6NextHeader.metric_tags:type_name -> otg.PatternFlowIpv6NextHeaderMetricTag - 205, // 894: otg.PatternFlowIpv6HopLimit.choice:type_name -> otg.PatternFlowIpv6HopLimit.Choice.Enum - 762, // 895: otg.PatternFlowIpv6HopLimit.increment:type_name -> otg.PatternFlowIpv6HopLimitCounter - 762, // 896: otg.PatternFlowIpv6HopLimit.decrement:type_name -> otg.PatternFlowIpv6HopLimitCounter - 763, // 897: otg.PatternFlowIpv6HopLimit.metric_tags:type_name -> otg.PatternFlowIpv6HopLimitMetricTag - 206, // 898: otg.PatternFlowIpv6Src.choice:type_name -> otg.PatternFlowIpv6Src.Choice.Enum - 765, // 899: otg.PatternFlowIpv6Src.increment:type_name -> otg.PatternFlowIpv6SrcCounter - 765, // 900: otg.PatternFlowIpv6Src.decrement:type_name -> otg.PatternFlowIpv6SrcCounter - 766, // 901: otg.PatternFlowIpv6Src.metric_tags:type_name -> otg.PatternFlowIpv6SrcMetricTag - 207, // 902: otg.PatternFlowIpv6Dst.choice:type_name -> otg.PatternFlowIpv6Dst.Choice.Enum - 768, // 903: otg.PatternFlowIpv6Dst.increment:type_name -> otg.PatternFlowIpv6DstCounter - 768, // 904: otg.PatternFlowIpv6Dst.decrement:type_name -> otg.PatternFlowIpv6DstCounter - 769, // 905: otg.PatternFlowIpv6Dst.metric_tags:type_name -> otg.PatternFlowIpv6DstMetricTag - 208, // 906: otg.PatternFlowPfcPauseDst.choice:type_name -> otg.PatternFlowPfcPauseDst.Choice.Enum - 771, // 907: otg.PatternFlowPfcPauseDst.increment:type_name -> otg.PatternFlowPfcPauseDstCounter - 771, // 908: otg.PatternFlowPfcPauseDst.decrement:type_name -> otg.PatternFlowPfcPauseDstCounter - 772, // 909: otg.PatternFlowPfcPauseDst.metric_tags:type_name -> otg.PatternFlowPfcPauseDstMetricTag - 209, // 910: otg.PatternFlowPfcPauseSrc.choice:type_name -> otg.PatternFlowPfcPauseSrc.Choice.Enum - 774, // 911: otg.PatternFlowPfcPauseSrc.increment:type_name -> otg.PatternFlowPfcPauseSrcCounter - 774, // 912: otg.PatternFlowPfcPauseSrc.decrement:type_name -> otg.PatternFlowPfcPauseSrcCounter - 775, // 913: otg.PatternFlowPfcPauseSrc.metric_tags:type_name -> otg.PatternFlowPfcPauseSrcMetricTag - 210, // 914: otg.PatternFlowPfcPauseEtherType.choice:type_name -> otg.PatternFlowPfcPauseEtherType.Choice.Enum - 777, // 915: otg.PatternFlowPfcPauseEtherType.increment:type_name -> otg.PatternFlowPfcPauseEtherTypeCounter - 777, // 916: otg.PatternFlowPfcPauseEtherType.decrement:type_name -> otg.PatternFlowPfcPauseEtherTypeCounter - 778, // 917: otg.PatternFlowPfcPauseEtherType.metric_tags:type_name -> otg.PatternFlowPfcPauseEtherTypeMetricTag - 211, // 918: otg.PatternFlowPfcPauseControlOpCode.choice:type_name -> otg.PatternFlowPfcPauseControlOpCode.Choice.Enum - 780, // 919: otg.PatternFlowPfcPauseControlOpCode.increment:type_name -> otg.PatternFlowPfcPauseControlOpCodeCounter - 780, // 920: otg.PatternFlowPfcPauseControlOpCode.decrement:type_name -> otg.PatternFlowPfcPauseControlOpCodeCounter - 781, // 921: otg.PatternFlowPfcPauseControlOpCode.metric_tags:type_name -> otg.PatternFlowPfcPauseControlOpCodeMetricTag - 212, // 922: otg.PatternFlowPfcPauseClassEnableVector.choice:type_name -> otg.PatternFlowPfcPauseClassEnableVector.Choice.Enum - 783, // 923: otg.PatternFlowPfcPauseClassEnableVector.increment:type_name -> otg.PatternFlowPfcPauseClassEnableVectorCounter - 783, // 924: otg.PatternFlowPfcPauseClassEnableVector.decrement:type_name -> otg.PatternFlowPfcPauseClassEnableVectorCounter - 784, // 925: otg.PatternFlowPfcPauseClassEnableVector.metric_tags:type_name -> otg.PatternFlowPfcPauseClassEnableVectorMetricTag - 213, // 926: otg.PatternFlowPfcPausePauseClass0.choice:type_name -> otg.PatternFlowPfcPausePauseClass0.Choice.Enum - 786, // 927: otg.PatternFlowPfcPausePauseClass0.increment:type_name -> otg.PatternFlowPfcPausePauseClass0Counter - 786, // 928: otg.PatternFlowPfcPausePauseClass0.decrement:type_name -> otg.PatternFlowPfcPausePauseClass0Counter - 787, // 929: otg.PatternFlowPfcPausePauseClass0.metric_tags:type_name -> otg.PatternFlowPfcPausePauseClass0MetricTag - 214, // 930: otg.PatternFlowPfcPausePauseClass1.choice:type_name -> otg.PatternFlowPfcPausePauseClass1.Choice.Enum - 789, // 931: otg.PatternFlowPfcPausePauseClass1.increment:type_name -> otg.PatternFlowPfcPausePauseClass1Counter - 789, // 932: otg.PatternFlowPfcPausePauseClass1.decrement:type_name -> otg.PatternFlowPfcPausePauseClass1Counter - 790, // 933: otg.PatternFlowPfcPausePauseClass1.metric_tags:type_name -> otg.PatternFlowPfcPausePauseClass1MetricTag - 215, // 934: otg.PatternFlowPfcPausePauseClass2.choice:type_name -> otg.PatternFlowPfcPausePauseClass2.Choice.Enum - 792, // 935: otg.PatternFlowPfcPausePauseClass2.increment:type_name -> otg.PatternFlowPfcPausePauseClass2Counter - 792, // 936: otg.PatternFlowPfcPausePauseClass2.decrement:type_name -> otg.PatternFlowPfcPausePauseClass2Counter - 793, // 937: otg.PatternFlowPfcPausePauseClass2.metric_tags:type_name -> otg.PatternFlowPfcPausePauseClass2MetricTag - 216, // 938: otg.PatternFlowPfcPausePauseClass3.choice:type_name -> otg.PatternFlowPfcPausePauseClass3.Choice.Enum - 795, // 939: otg.PatternFlowPfcPausePauseClass3.increment:type_name -> otg.PatternFlowPfcPausePauseClass3Counter - 795, // 940: otg.PatternFlowPfcPausePauseClass3.decrement:type_name -> otg.PatternFlowPfcPausePauseClass3Counter - 796, // 941: otg.PatternFlowPfcPausePauseClass3.metric_tags:type_name -> otg.PatternFlowPfcPausePauseClass3MetricTag - 217, // 942: otg.PatternFlowPfcPausePauseClass4.choice:type_name -> otg.PatternFlowPfcPausePauseClass4.Choice.Enum - 798, // 943: otg.PatternFlowPfcPausePauseClass4.increment:type_name -> otg.PatternFlowPfcPausePauseClass4Counter - 798, // 944: otg.PatternFlowPfcPausePauseClass4.decrement:type_name -> otg.PatternFlowPfcPausePauseClass4Counter - 799, // 945: otg.PatternFlowPfcPausePauseClass4.metric_tags:type_name -> otg.PatternFlowPfcPausePauseClass4MetricTag - 218, // 946: otg.PatternFlowPfcPausePauseClass5.choice:type_name -> otg.PatternFlowPfcPausePauseClass5.Choice.Enum - 801, // 947: otg.PatternFlowPfcPausePauseClass5.increment:type_name -> otg.PatternFlowPfcPausePauseClass5Counter - 801, // 948: otg.PatternFlowPfcPausePauseClass5.decrement:type_name -> otg.PatternFlowPfcPausePauseClass5Counter - 802, // 949: otg.PatternFlowPfcPausePauseClass5.metric_tags:type_name -> otg.PatternFlowPfcPausePauseClass5MetricTag - 219, // 950: otg.PatternFlowPfcPausePauseClass6.choice:type_name -> otg.PatternFlowPfcPausePauseClass6.Choice.Enum - 804, // 951: otg.PatternFlowPfcPausePauseClass6.increment:type_name -> otg.PatternFlowPfcPausePauseClass6Counter - 804, // 952: otg.PatternFlowPfcPausePauseClass6.decrement:type_name -> otg.PatternFlowPfcPausePauseClass6Counter - 805, // 953: otg.PatternFlowPfcPausePauseClass6.metric_tags:type_name -> otg.PatternFlowPfcPausePauseClass6MetricTag - 220, // 954: otg.PatternFlowPfcPausePauseClass7.choice:type_name -> otg.PatternFlowPfcPausePauseClass7.Choice.Enum - 807, // 955: otg.PatternFlowPfcPausePauseClass7.increment:type_name -> otg.PatternFlowPfcPausePauseClass7Counter - 807, // 956: otg.PatternFlowPfcPausePauseClass7.decrement:type_name -> otg.PatternFlowPfcPausePauseClass7Counter - 808, // 957: otg.PatternFlowPfcPausePauseClass7.metric_tags:type_name -> otg.PatternFlowPfcPausePauseClass7MetricTag - 221, // 958: otg.PatternFlowEthernetPauseDst.choice:type_name -> otg.PatternFlowEthernetPauseDst.Choice.Enum - 810, // 959: otg.PatternFlowEthernetPauseDst.increment:type_name -> otg.PatternFlowEthernetPauseDstCounter - 810, // 960: otg.PatternFlowEthernetPauseDst.decrement:type_name -> otg.PatternFlowEthernetPauseDstCounter - 811, // 961: otg.PatternFlowEthernetPauseDst.metric_tags:type_name -> otg.PatternFlowEthernetPauseDstMetricTag - 222, // 962: otg.PatternFlowEthernetPauseSrc.choice:type_name -> otg.PatternFlowEthernetPauseSrc.Choice.Enum - 813, // 963: otg.PatternFlowEthernetPauseSrc.increment:type_name -> otg.PatternFlowEthernetPauseSrcCounter - 813, // 964: otg.PatternFlowEthernetPauseSrc.decrement:type_name -> otg.PatternFlowEthernetPauseSrcCounter - 814, // 965: otg.PatternFlowEthernetPauseSrc.metric_tags:type_name -> otg.PatternFlowEthernetPauseSrcMetricTag - 223, // 966: otg.PatternFlowEthernetPauseEtherType.choice:type_name -> otg.PatternFlowEthernetPauseEtherType.Choice.Enum - 816, // 967: otg.PatternFlowEthernetPauseEtherType.increment:type_name -> otg.PatternFlowEthernetPauseEtherTypeCounter - 816, // 968: otg.PatternFlowEthernetPauseEtherType.decrement:type_name -> otg.PatternFlowEthernetPauseEtherTypeCounter - 817, // 969: otg.PatternFlowEthernetPauseEtherType.metric_tags:type_name -> otg.PatternFlowEthernetPauseEtherTypeMetricTag - 224, // 970: otg.PatternFlowEthernetPauseControlOpCode.choice:type_name -> otg.PatternFlowEthernetPauseControlOpCode.Choice.Enum - 819, // 971: otg.PatternFlowEthernetPauseControlOpCode.increment:type_name -> otg.PatternFlowEthernetPauseControlOpCodeCounter - 819, // 972: otg.PatternFlowEthernetPauseControlOpCode.decrement:type_name -> otg.PatternFlowEthernetPauseControlOpCodeCounter - 820, // 973: otg.PatternFlowEthernetPauseControlOpCode.metric_tags:type_name -> otg.PatternFlowEthernetPauseControlOpCodeMetricTag - 225, // 974: otg.PatternFlowEthernetPauseTime.choice:type_name -> otg.PatternFlowEthernetPauseTime.Choice.Enum - 822, // 975: otg.PatternFlowEthernetPauseTime.increment:type_name -> otg.PatternFlowEthernetPauseTimeCounter - 822, // 976: otg.PatternFlowEthernetPauseTime.decrement:type_name -> otg.PatternFlowEthernetPauseTimeCounter - 823, // 977: otg.PatternFlowEthernetPauseTime.metric_tags:type_name -> otg.PatternFlowEthernetPauseTimeMetricTag - 226, // 978: otg.PatternFlowTcpSrcPort.choice:type_name -> otg.PatternFlowTcpSrcPort.Choice.Enum - 825, // 979: otg.PatternFlowTcpSrcPort.increment:type_name -> otg.PatternFlowTcpSrcPortCounter - 825, // 980: otg.PatternFlowTcpSrcPort.decrement:type_name -> otg.PatternFlowTcpSrcPortCounter - 826, // 981: otg.PatternFlowTcpSrcPort.metric_tags:type_name -> otg.PatternFlowTcpSrcPortMetricTag - 227, // 982: otg.PatternFlowTcpDstPort.choice:type_name -> otg.PatternFlowTcpDstPort.Choice.Enum - 828, // 983: otg.PatternFlowTcpDstPort.increment:type_name -> otg.PatternFlowTcpDstPortCounter - 828, // 984: otg.PatternFlowTcpDstPort.decrement:type_name -> otg.PatternFlowTcpDstPortCounter - 829, // 985: otg.PatternFlowTcpDstPort.metric_tags:type_name -> otg.PatternFlowTcpDstPortMetricTag - 228, // 986: otg.PatternFlowTcpSeqNum.choice:type_name -> otg.PatternFlowTcpSeqNum.Choice.Enum - 831, // 987: otg.PatternFlowTcpSeqNum.increment:type_name -> otg.PatternFlowTcpSeqNumCounter - 831, // 988: otg.PatternFlowTcpSeqNum.decrement:type_name -> otg.PatternFlowTcpSeqNumCounter - 832, // 989: otg.PatternFlowTcpSeqNum.metric_tags:type_name -> otg.PatternFlowTcpSeqNumMetricTag - 229, // 990: otg.PatternFlowTcpAckNum.choice:type_name -> otg.PatternFlowTcpAckNum.Choice.Enum - 834, // 991: otg.PatternFlowTcpAckNum.increment:type_name -> otg.PatternFlowTcpAckNumCounter - 834, // 992: otg.PatternFlowTcpAckNum.decrement:type_name -> otg.PatternFlowTcpAckNumCounter - 835, // 993: otg.PatternFlowTcpAckNum.metric_tags:type_name -> otg.PatternFlowTcpAckNumMetricTag - 230, // 994: otg.PatternFlowTcpDataOffset.choice:type_name -> otg.PatternFlowTcpDataOffset.Choice.Enum - 837, // 995: otg.PatternFlowTcpDataOffset.increment:type_name -> otg.PatternFlowTcpDataOffsetCounter - 837, // 996: otg.PatternFlowTcpDataOffset.decrement:type_name -> otg.PatternFlowTcpDataOffsetCounter - 838, // 997: otg.PatternFlowTcpDataOffset.metric_tags:type_name -> otg.PatternFlowTcpDataOffsetMetricTag - 231, // 998: otg.PatternFlowTcpEcnNs.choice:type_name -> otg.PatternFlowTcpEcnNs.Choice.Enum - 840, // 999: otg.PatternFlowTcpEcnNs.increment:type_name -> otg.PatternFlowTcpEcnNsCounter - 840, // 1000: otg.PatternFlowTcpEcnNs.decrement:type_name -> otg.PatternFlowTcpEcnNsCounter - 841, // 1001: otg.PatternFlowTcpEcnNs.metric_tags:type_name -> otg.PatternFlowTcpEcnNsMetricTag - 232, // 1002: otg.PatternFlowTcpEcnCwr.choice:type_name -> otg.PatternFlowTcpEcnCwr.Choice.Enum - 843, // 1003: otg.PatternFlowTcpEcnCwr.increment:type_name -> otg.PatternFlowTcpEcnCwrCounter - 843, // 1004: otg.PatternFlowTcpEcnCwr.decrement:type_name -> otg.PatternFlowTcpEcnCwrCounter - 844, // 1005: otg.PatternFlowTcpEcnCwr.metric_tags:type_name -> otg.PatternFlowTcpEcnCwrMetricTag - 233, // 1006: otg.PatternFlowTcpEcnEcho.choice:type_name -> otg.PatternFlowTcpEcnEcho.Choice.Enum - 846, // 1007: otg.PatternFlowTcpEcnEcho.increment:type_name -> otg.PatternFlowTcpEcnEchoCounter - 846, // 1008: otg.PatternFlowTcpEcnEcho.decrement:type_name -> otg.PatternFlowTcpEcnEchoCounter - 847, // 1009: otg.PatternFlowTcpEcnEcho.metric_tags:type_name -> otg.PatternFlowTcpEcnEchoMetricTag - 234, // 1010: otg.PatternFlowTcpCtlUrg.choice:type_name -> otg.PatternFlowTcpCtlUrg.Choice.Enum - 849, // 1011: otg.PatternFlowTcpCtlUrg.increment:type_name -> otg.PatternFlowTcpCtlUrgCounter - 849, // 1012: otg.PatternFlowTcpCtlUrg.decrement:type_name -> otg.PatternFlowTcpCtlUrgCounter - 850, // 1013: otg.PatternFlowTcpCtlUrg.metric_tags:type_name -> otg.PatternFlowTcpCtlUrgMetricTag - 235, // 1014: otg.PatternFlowTcpCtlAck.choice:type_name -> otg.PatternFlowTcpCtlAck.Choice.Enum - 852, // 1015: otg.PatternFlowTcpCtlAck.increment:type_name -> otg.PatternFlowTcpCtlAckCounter - 852, // 1016: otg.PatternFlowTcpCtlAck.decrement:type_name -> otg.PatternFlowTcpCtlAckCounter - 853, // 1017: otg.PatternFlowTcpCtlAck.metric_tags:type_name -> otg.PatternFlowTcpCtlAckMetricTag - 236, // 1018: otg.PatternFlowTcpCtlPsh.choice:type_name -> otg.PatternFlowTcpCtlPsh.Choice.Enum - 855, // 1019: otg.PatternFlowTcpCtlPsh.increment:type_name -> otg.PatternFlowTcpCtlPshCounter - 855, // 1020: otg.PatternFlowTcpCtlPsh.decrement:type_name -> otg.PatternFlowTcpCtlPshCounter - 856, // 1021: otg.PatternFlowTcpCtlPsh.metric_tags:type_name -> otg.PatternFlowTcpCtlPshMetricTag - 237, // 1022: otg.PatternFlowTcpCtlRst.choice:type_name -> otg.PatternFlowTcpCtlRst.Choice.Enum - 858, // 1023: otg.PatternFlowTcpCtlRst.increment:type_name -> otg.PatternFlowTcpCtlRstCounter - 858, // 1024: otg.PatternFlowTcpCtlRst.decrement:type_name -> otg.PatternFlowTcpCtlRstCounter - 859, // 1025: otg.PatternFlowTcpCtlRst.metric_tags:type_name -> otg.PatternFlowTcpCtlRstMetricTag - 238, // 1026: otg.PatternFlowTcpCtlSyn.choice:type_name -> otg.PatternFlowTcpCtlSyn.Choice.Enum - 861, // 1027: otg.PatternFlowTcpCtlSyn.increment:type_name -> otg.PatternFlowTcpCtlSynCounter - 861, // 1028: otg.PatternFlowTcpCtlSyn.decrement:type_name -> otg.PatternFlowTcpCtlSynCounter - 862, // 1029: otg.PatternFlowTcpCtlSyn.metric_tags:type_name -> otg.PatternFlowTcpCtlSynMetricTag - 239, // 1030: otg.PatternFlowTcpCtlFin.choice:type_name -> otg.PatternFlowTcpCtlFin.Choice.Enum - 864, // 1031: otg.PatternFlowTcpCtlFin.increment:type_name -> otg.PatternFlowTcpCtlFinCounter - 864, // 1032: otg.PatternFlowTcpCtlFin.decrement:type_name -> otg.PatternFlowTcpCtlFinCounter - 865, // 1033: otg.PatternFlowTcpCtlFin.metric_tags:type_name -> otg.PatternFlowTcpCtlFinMetricTag - 240, // 1034: otg.PatternFlowTcpWindow.choice:type_name -> otg.PatternFlowTcpWindow.Choice.Enum - 867, // 1035: otg.PatternFlowTcpWindow.increment:type_name -> otg.PatternFlowTcpWindowCounter - 867, // 1036: otg.PatternFlowTcpWindow.decrement:type_name -> otg.PatternFlowTcpWindowCounter - 868, // 1037: otg.PatternFlowTcpWindow.metric_tags:type_name -> otg.PatternFlowTcpWindowMetricTag - 241, // 1038: otg.PatternFlowUdpSrcPort.choice:type_name -> otg.PatternFlowUdpSrcPort.Choice.Enum - 870, // 1039: otg.PatternFlowUdpSrcPort.increment:type_name -> otg.PatternFlowUdpSrcPortCounter - 870, // 1040: otg.PatternFlowUdpSrcPort.decrement:type_name -> otg.PatternFlowUdpSrcPortCounter - 871, // 1041: otg.PatternFlowUdpSrcPort.metric_tags:type_name -> otg.PatternFlowUdpSrcPortMetricTag - 242, // 1042: otg.PatternFlowUdpDstPort.choice:type_name -> otg.PatternFlowUdpDstPort.Choice.Enum - 873, // 1043: otg.PatternFlowUdpDstPort.increment:type_name -> otg.PatternFlowUdpDstPortCounter - 873, // 1044: otg.PatternFlowUdpDstPort.decrement:type_name -> otg.PatternFlowUdpDstPortCounter - 874, // 1045: otg.PatternFlowUdpDstPort.metric_tags:type_name -> otg.PatternFlowUdpDstPortMetricTag - 243, // 1046: otg.PatternFlowUdpLength.choice:type_name -> otg.PatternFlowUdpLength.Choice.Enum - 876, // 1047: otg.PatternFlowUdpLength.increment:type_name -> otg.PatternFlowUdpLengthCounter - 876, // 1048: otg.PatternFlowUdpLength.decrement:type_name -> otg.PatternFlowUdpLengthCounter - 877, // 1049: otg.PatternFlowUdpLength.metric_tags:type_name -> otg.PatternFlowUdpLengthMetricTag - 244, // 1050: otg.PatternFlowUdpChecksum.choice:type_name -> otg.PatternFlowUdpChecksum.Choice.Enum - 245, // 1051: otg.PatternFlowUdpChecksum.generated:type_name -> otg.PatternFlowUdpChecksum.Generated.Enum - 246, // 1052: otg.PatternFlowGreChecksumPresent.choice:type_name -> otg.PatternFlowGreChecksumPresent.Choice.Enum - 880, // 1053: otg.PatternFlowGreChecksumPresent.increment:type_name -> otg.PatternFlowGreChecksumPresentCounter - 880, // 1054: otg.PatternFlowGreChecksumPresent.decrement:type_name -> otg.PatternFlowGreChecksumPresentCounter - 881, // 1055: otg.PatternFlowGreChecksumPresent.metric_tags:type_name -> otg.PatternFlowGreChecksumPresentMetricTag - 247, // 1056: otg.PatternFlowGreReserved0.choice:type_name -> otg.PatternFlowGreReserved0.Choice.Enum - 883, // 1057: otg.PatternFlowGreReserved0.increment:type_name -> otg.PatternFlowGreReserved0Counter - 883, // 1058: otg.PatternFlowGreReserved0.decrement:type_name -> otg.PatternFlowGreReserved0Counter - 884, // 1059: otg.PatternFlowGreReserved0.metric_tags:type_name -> otg.PatternFlowGreReserved0MetricTag - 248, // 1060: otg.PatternFlowGreVersion.choice:type_name -> otg.PatternFlowGreVersion.Choice.Enum - 886, // 1061: otg.PatternFlowGreVersion.increment:type_name -> otg.PatternFlowGreVersionCounter - 886, // 1062: otg.PatternFlowGreVersion.decrement:type_name -> otg.PatternFlowGreVersionCounter - 887, // 1063: otg.PatternFlowGreVersion.metric_tags:type_name -> otg.PatternFlowGreVersionMetricTag - 249, // 1064: otg.PatternFlowGreProtocol.choice:type_name -> otg.PatternFlowGreProtocol.Choice.Enum - 889, // 1065: otg.PatternFlowGreProtocol.increment:type_name -> otg.PatternFlowGreProtocolCounter - 889, // 1066: otg.PatternFlowGreProtocol.decrement:type_name -> otg.PatternFlowGreProtocolCounter - 890, // 1067: otg.PatternFlowGreProtocol.metric_tags:type_name -> otg.PatternFlowGreProtocolMetricTag - 250, // 1068: otg.PatternFlowGreChecksum.choice:type_name -> otg.PatternFlowGreChecksum.Choice.Enum - 251, // 1069: otg.PatternFlowGreChecksum.generated:type_name -> otg.PatternFlowGreChecksum.Generated.Enum - 252, // 1070: otg.PatternFlowGreReserved1.choice:type_name -> otg.PatternFlowGreReserved1.Choice.Enum - 893, // 1071: otg.PatternFlowGreReserved1.increment:type_name -> otg.PatternFlowGreReserved1Counter - 893, // 1072: otg.PatternFlowGreReserved1.decrement:type_name -> otg.PatternFlowGreReserved1Counter - 894, // 1073: otg.PatternFlowGreReserved1.metric_tags:type_name -> otg.PatternFlowGreReserved1MetricTag - 253, // 1074: otg.PatternFlowGtpv1Version.choice:type_name -> otg.PatternFlowGtpv1Version.Choice.Enum - 896, // 1075: otg.PatternFlowGtpv1Version.increment:type_name -> otg.PatternFlowGtpv1VersionCounter - 896, // 1076: otg.PatternFlowGtpv1Version.decrement:type_name -> otg.PatternFlowGtpv1VersionCounter - 897, // 1077: otg.PatternFlowGtpv1Version.metric_tags:type_name -> otg.PatternFlowGtpv1VersionMetricTag - 254, // 1078: otg.PatternFlowGtpv1ProtocolType.choice:type_name -> otg.PatternFlowGtpv1ProtocolType.Choice.Enum - 899, // 1079: otg.PatternFlowGtpv1ProtocolType.increment:type_name -> otg.PatternFlowGtpv1ProtocolTypeCounter - 899, // 1080: otg.PatternFlowGtpv1ProtocolType.decrement:type_name -> otg.PatternFlowGtpv1ProtocolTypeCounter - 900, // 1081: otg.PatternFlowGtpv1ProtocolType.metric_tags:type_name -> otg.PatternFlowGtpv1ProtocolTypeMetricTag - 255, // 1082: otg.PatternFlowGtpv1Reserved.choice:type_name -> otg.PatternFlowGtpv1Reserved.Choice.Enum - 902, // 1083: otg.PatternFlowGtpv1Reserved.increment:type_name -> otg.PatternFlowGtpv1ReservedCounter - 902, // 1084: otg.PatternFlowGtpv1Reserved.decrement:type_name -> otg.PatternFlowGtpv1ReservedCounter - 903, // 1085: otg.PatternFlowGtpv1Reserved.metric_tags:type_name -> otg.PatternFlowGtpv1ReservedMetricTag - 256, // 1086: otg.PatternFlowGtpv1EFlag.choice:type_name -> otg.PatternFlowGtpv1EFlag.Choice.Enum - 905, // 1087: otg.PatternFlowGtpv1EFlag.increment:type_name -> otg.PatternFlowGtpv1EFlagCounter - 905, // 1088: otg.PatternFlowGtpv1EFlag.decrement:type_name -> otg.PatternFlowGtpv1EFlagCounter - 906, // 1089: otg.PatternFlowGtpv1EFlag.metric_tags:type_name -> otg.PatternFlowGtpv1EFlagMetricTag - 257, // 1090: otg.PatternFlowGtpv1SFlag.choice:type_name -> otg.PatternFlowGtpv1SFlag.Choice.Enum - 908, // 1091: otg.PatternFlowGtpv1SFlag.increment:type_name -> otg.PatternFlowGtpv1SFlagCounter - 908, // 1092: otg.PatternFlowGtpv1SFlag.decrement:type_name -> otg.PatternFlowGtpv1SFlagCounter - 909, // 1093: otg.PatternFlowGtpv1SFlag.metric_tags:type_name -> otg.PatternFlowGtpv1SFlagMetricTag - 258, // 1094: otg.PatternFlowGtpv1PnFlag.choice:type_name -> otg.PatternFlowGtpv1PnFlag.Choice.Enum - 911, // 1095: otg.PatternFlowGtpv1PnFlag.increment:type_name -> otg.PatternFlowGtpv1PnFlagCounter - 911, // 1096: otg.PatternFlowGtpv1PnFlag.decrement:type_name -> otg.PatternFlowGtpv1PnFlagCounter - 912, // 1097: otg.PatternFlowGtpv1PnFlag.metric_tags:type_name -> otg.PatternFlowGtpv1PnFlagMetricTag - 259, // 1098: otg.PatternFlowGtpv1MessageType.choice:type_name -> otg.PatternFlowGtpv1MessageType.Choice.Enum - 914, // 1099: otg.PatternFlowGtpv1MessageType.increment:type_name -> otg.PatternFlowGtpv1MessageTypeCounter - 914, // 1100: otg.PatternFlowGtpv1MessageType.decrement:type_name -> otg.PatternFlowGtpv1MessageTypeCounter - 915, // 1101: otg.PatternFlowGtpv1MessageType.metric_tags:type_name -> otg.PatternFlowGtpv1MessageTypeMetricTag - 260, // 1102: otg.PatternFlowGtpv1MessageLength.choice:type_name -> otg.PatternFlowGtpv1MessageLength.Choice.Enum - 917, // 1103: otg.PatternFlowGtpv1MessageLength.increment:type_name -> otg.PatternFlowGtpv1MessageLengthCounter - 917, // 1104: otg.PatternFlowGtpv1MessageLength.decrement:type_name -> otg.PatternFlowGtpv1MessageLengthCounter - 918, // 1105: otg.PatternFlowGtpv1MessageLength.metric_tags:type_name -> otg.PatternFlowGtpv1MessageLengthMetricTag - 261, // 1106: otg.PatternFlowGtpv1Teid.choice:type_name -> otg.PatternFlowGtpv1Teid.Choice.Enum - 920, // 1107: otg.PatternFlowGtpv1Teid.increment:type_name -> otg.PatternFlowGtpv1TeidCounter - 920, // 1108: otg.PatternFlowGtpv1Teid.decrement:type_name -> otg.PatternFlowGtpv1TeidCounter - 921, // 1109: otg.PatternFlowGtpv1Teid.metric_tags:type_name -> otg.PatternFlowGtpv1TeidMetricTag - 262, // 1110: otg.PatternFlowGtpv1SquenceNumber.choice:type_name -> otg.PatternFlowGtpv1SquenceNumber.Choice.Enum - 923, // 1111: otg.PatternFlowGtpv1SquenceNumber.increment:type_name -> otg.PatternFlowGtpv1SquenceNumberCounter - 923, // 1112: otg.PatternFlowGtpv1SquenceNumber.decrement:type_name -> otg.PatternFlowGtpv1SquenceNumberCounter - 924, // 1113: otg.PatternFlowGtpv1SquenceNumber.metric_tags:type_name -> otg.PatternFlowGtpv1SquenceNumberMetricTag - 263, // 1114: otg.PatternFlowGtpv1NPduNumber.choice:type_name -> otg.PatternFlowGtpv1NPduNumber.Choice.Enum - 926, // 1115: otg.PatternFlowGtpv1NPduNumber.increment:type_name -> otg.PatternFlowGtpv1NPduNumberCounter - 926, // 1116: otg.PatternFlowGtpv1NPduNumber.decrement:type_name -> otg.PatternFlowGtpv1NPduNumberCounter - 927, // 1117: otg.PatternFlowGtpv1NPduNumber.metric_tags:type_name -> otg.PatternFlowGtpv1NPduNumberMetricTag - 264, // 1118: otg.PatternFlowGtpv1NextExtensionHeaderType.choice:type_name -> otg.PatternFlowGtpv1NextExtensionHeaderType.Choice.Enum - 929, // 1119: otg.PatternFlowGtpv1NextExtensionHeaderType.increment:type_name -> otg.PatternFlowGtpv1NextExtensionHeaderTypeCounter - 929, // 1120: otg.PatternFlowGtpv1NextExtensionHeaderType.decrement:type_name -> otg.PatternFlowGtpv1NextExtensionHeaderTypeCounter - 930, // 1121: otg.PatternFlowGtpv1NextExtensionHeaderType.metric_tags:type_name -> otg.PatternFlowGtpv1NextExtensionHeaderTypeMetricTag - 265, // 1122: otg.PatternFlowGtpExtensionExtensionLength.choice:type_name -> otg.PatternFlowGtpExtensionExtensionLength.Choice.Enum - 932, // 1123: otg.PatternFlowGtpExtensionExtensionLength.increment:type_name -> otg.PatternFlowGtpExtensionExtensionLengthCounter - 932, // 1124: otg.PatternFlowGtpExtensionExtensionLength.decrement:type_name -> otg.PatternFlowGtpExtensionExtensionLengthCounter - 933, // 1125: otg.PatternFlowGtpExtensionExtensionLength.metric_tags:type_name -> otg.PatternFlowGtpExtensionExtensionLengthMetricTag - 266, // 1126: otg.PatternFlowGtpExtensionContents.choice:type_name -> otg.PatternFlowGtpExtensionContents.Choice.Enum - 935, // 1127: otg.PatternFlowGtpExtensionContents.increment:type_name -> otg.PatternFlowGtpExtensionContentsCounter - 935, // 1128: otg.PatternFlowGtpExtensionContents.decrement:type_name -> otg.PatternFlowGtpExtensionContentsCounter - 936, // 1129: otg.PatternFlowGtpExtensionContents.metric_tags:type_name -> otg.PatternFlowGtpExtensionContentsMetricTag - 267, // 1130: otg.PatternFlowGtpExtensionNextExtensionHeader.choice:type_name -> otg.PatternFlowGtpExtensionNextExtensionHeader.Choice.Enum - 938, // 1131: otg.PatternFlowGtpExtensionNextExtensionHeader.increment:type_name -> otg.PatternFlowGtpExtensionNextExtensionHeaderCounter - 938, // 1132: otg.PatternFlowGtpExtensionNextExtensionHeader.decrement:type_name -> otg.PatternFlowGtpExtensionNextExtensionHeaderCounter - 939, // 1133: otg.PatternFlowGtpExtensionNextExtensionHeader.metric_tags:type_name -> otg.PatternFlowGtpExtensionNextExtensionHeaderMetricTag - 268, // 1134: otg.PatternFlowGtpv2Version.choice:type_name -> otg.PatternFlowGtpv2Version.Choice.Enum - 941, // 1135: otg.PatternFlowGtpv2Version.increment:type_name -> otg.PatternFlowGtpv2VersionCounter - 941, // 1136: otg.PatternFlowGtpv2Version.decrement:type_name -> otg.PatternFlowGtpv2VersionCounter - 942, // 1137: otg.PatternFlowGtpv2Version.metric_tags:type_name -> otg.PatternFlowGtpv2VersionMetricTag - 269, // 1138: otg.PatternFlowGtpv2PiggybackingFlag.choice:type_name -> otg.PatternFlowGtpv2PiggybackingFlag.Choice.Enum - 944, // 1139: otg.PatternFlowGtpv2PiggybackingFlag.increment:type_name -> otg.PatternFlowGtpv2PiggybackingFlagCounter - 944, // 1140: otg.PatternFlowGtpv2PiggybackingFlag.decrement:type_name -> otg.PatternFlowGtpv2PiggybackingFlagCounter - 945, // 1141: otg.PatternFlowGtpv2PiggybackingFlag.metric_tags:type_name -> otg.PatternFlowGtpv2PiggybackingFlagMetricTag - 270, // 1142: otg.PatternFlowGtpv2TeidFlag.choice:type_name -> otg.PatternFlowGtpv2TeidFlag.Choice.Enum - 947, // 1143: otg.PatternFlowGtpv2TeidFlag.increment:type_name -> otg.PatternFlowGtpv2TeidFlagCounter - 947, // 1144: otg.PatternFlowGtpv2TeidFlag.decrement:type_name -> otg.PatternFlowGtpv2TeidFlagCounter - 948, // 1145: otg.PatternFlowGtpv2TeidFlag.metric_tags:type_name -> otg.PatternFlowGtpv2TeidFlagMetricTag - 271, // 1146: otg.PatternFlowGtpv2Spare1.choice:type_name -> otg.PatternFlowGtpv2Spare1.Choice.Enum - 950, // 1147: otg.PatternFlowGtpv2Spare1.increment:type_name -> otg.PatternFlowGtpv2Spare1Counter - 950, // 1148: otg.PatternFlowGtpv2Spare1.decrement:type_name -> otg.PatternFlowGtpv2Spare1Counter - 951, // 1149: otg.PatternFlowGtpv2Spare1.metric_tags:type_name -> otg.PatternFlowGtpv2Spare1MetricTag - 272, // 1150: otg.PatternFlowGtpv2MessageType.choice:type_name -> otg.PatternFlowGtpv2MessageType.Choice.Enum - 953, // 1151: otg.PatternFlowGtpv2MessageType.increment:type_name -> otg.PatternFlowGtpv2MessageTypeCounter - 953, // 1152: otg.PatternFlowGtpv2MessageType.decrement:type_name -> otg.PatternFlowGtpv2MessageTypeCounter - 954, // 1153: otg.PatternFlowGtpv2MessageType.metric_tags:type_name -> otg.PatternFlowGtpv2MessageTypeMetricTag - 273, // 1154: otg.PatternFlowGtpv2MessageLength.choice:type_name -> otg.PatternFlowGtpv2MessageLength.Choice.Enum - 956, // 1155: otg.PatternFlowGtpv2MessageLength.increment:type_name -> otg.PatternFlowGtpv2MessageLengthCounter - 956, // 1156: otg.PatternFlowGtpv2MessageLength.decrement:type_name -> otg.PatternFlowGtpv2MessageLengthCounter - 957, // 1157: otg.PatternFlowGtpv2MessageLength.metric_tags:type_name -> otg.PatternFlowGtpv2MessageLengthMetricTag - 274, // 1158: otg.PatternFlowGtpv2Teid.choice:type_name -> otg.PatternFlowGtpv2Teid.Choice.Enum - 959, // 1159: otg.PatternFlowGtpv2Teid.increment:type_name -> otg.PatternFlowGtpv2TeidCounter - 959, // 1160: otg.PatternFlowGtpv2Teid.decrement:type_name -> otg.PatternFlowGtpv2TeidCounter - 960, // 1161: otg.PatternFlowGtpv2Teid.metric_tags:type_name -> otg.PatternFlowGtpv2TeidMetricTag - 275, // 1162: otg.PatternFlowGtpv2SequenceNumber.choice:type_name -> otg.PatternFlowGtpv2SequenceNumber.Choice.Enum - 962, // 1163: otg.PatternFlowGtpv2SequenceNumber.increment:type_name -> otg.PatternFlowGtpv2SequenceNumberCounter - 962, // 1164: otg.PatternFlowGtpv2SequenceNumber.decrement:type_name -> otg.PatternFlowGtpv2SequenceNumberCounter - 963, // 1165: otg.PatternFlowGtpv2SequenceNumber.metric_tags:type_name -> otg.PatternFlowGtpv2SequenceNumberMetricTag - 276, // 1166: otg.PatternFlowGtpv2Spare2.choice:type_name -> otg.PatternFlowGtpv2Spare2.Choice.Enum - 965, // 1167: otg.PatternFlowGtpv2Spare2.increment:type_name -> otg.PatternFlowGtpv2Spare2Counter - 965, // 1168: otg.PatternFlowGtpv2Spare2.decrement:type_name -> otg.PatternFlowGtpv2Spare2Counter - 966, // 1169: otg.PatternFlowGtpv2Spare2.metric_tags:type_name -> otg.PatternFlowGtpv2Spare2MetricTag - 277, // 1170: otg.PatternFlowArpHardwareType.choice:type_name -> otg.PatternFlowArpHardwareType.Choice.Enum - 968, // 1171: otg.PatternFlowArpHardwareType.increment:type_name -> otg.PatternFlowArpHardwareTypeCounter - 968, // 1172: otg.PatternFlowArpHardwareType.decrement:type_name -> otg.PatternFlowArpHardwareTypeCounter - 969, // 1173: otg.PatternFlowArpHardwareType.metric_tags:type_name -> otg.PatternFlowArpHardwareTypeMetricTag - 278, // 1174: otg.PatternFlowArpProtocolType.choice:type_name -> otg.PatternFlowArpProtocolType.Choice.Enum - 971, // 1175: otg.PatternFlowArpProtocolType.increment:type_name -> otg.PatternFlowArpProtocolTypeCounter - 971, // 1176: otg.PatternFlowArpProtocolType.decrement:type_name -> otg.PatternFlowArpProtocolTypeCounter - 972, // 1177: otg.PatternFlowArpProtocolType.metric_tags:type_name -> otg.PatternFlowArpProtocolTypeMetricTag - 279, // 1178: otg.PatternFlowArpHardwareLength.choice:type_name -> otg.PatternFlowArpHardwareLength.Choice.Enum - 974, // 1179: otg.PatternFlowArpHardwareLength.increment:type_name -> otg.PatternFlowArpHardwareLengthCounter - 974, // 1180: otg.PatternFlowArpHardwareLength.decrement:type_name -> otg.PatternFlowArpHardwareLengthCounter - 975, // 1181: otg.PatternFlowArpHardwareLength.metric_tags:type_name -> otg.PatternFlowArpHardwareLengthMetricTag - 280, // 1182: otg.PatternFlowArpProtocolLength.choice:type_name -> otg.PatternFlowArpProtocolLength.Choice.Enum - 977, // 1183: otg.PatternFlowArpProtocolLength.increment:type_name -> otg.PatternFlowArpProtocolLengthCounter - 977, // 1184: otg.PatternFlowArpProtocolLength.decrement:type_name -> otg.PatternFlowArpProtocolLengthCounter - 978, // 1185: otg.PatternFlowArpProtocolLength.metric_tags:type_name -> otg.PatternFlowArpProtocolLengthMetricTag - 281, // 1186: otg.PatternFlowArpOperation.choice:type_name -> otg.PatternFlowArpOperation.Choice.Enum - 980, // 1187: otg.PatternFlowArpOperation.increment:type_name -> otg.PatternFlowArpOperationCounter - 980, // 1188: otg.PatternFlowArpOperation.decrement:type_name -> otg.PatternFlowArpOperationCounter - 981, // 1189: otg.PatternFlowArpOperation.metric_tags:type_name -> otg.PatternFlowArpOperationMetricTag - 282, // 1190: otg.PatternFlowArpSenderHardwareAddr.choice:type_name -> otg.PatternFlowArpSenderHardwareAddr.Choice.Enum - 983, // 1191: otg.PatternFlowArpSenderHardwareAddr.increment:type_name -> otg.PatternFlowArpSenderHardwareAddrCounter - 983, // 1192: otg.PatternFlowArpSenderHardwareAddr.decrement:type_name -> otg.PatternFlowArpSenderHardwareAddrCounter - 984, // 1193: otg.PatternFlowArpSenderHardwareAddr.metric_tags:type_name -> otg.PatternFlowArpSenderHardwareAddrMetricTag - 283, // 1194: otg.PatternFlowArpSenderProtocolAddr.choice:type_name -> otg.PatternFlowArpSenderProtocolAddr.Choice.Enum - 986, // 1195: otg.PatternFlowArpSenderProtocolAddr.increment:type_name -> otg.PatternFlowArpSenderProtocolAddrCounter - 986, // 1196: otg.PatternFlowArpSenderProtocolAddr.decrement:type_name -> otg.PatternFlowArpSenderProtocolAddrCounter - 987, // 1197: otg.PatternFlowArpSenderProtocolAddr.metric_tags:type_name -> otg.PatternFlowArpSenderProtocolAddrMetricTag - 284, // 1198: otg.PatternFlowArpTargetHardwareAddr.choice:type_name -> otg.PatternFlowArpTargetHardwareAddr.Choice.Enum - 989, // 1199: otg.PatternFlowArpTargetHardwareAddr.increment:type_name -> otg.PatternFlowArpTargetHardwareAddrCounter - 989, // 1200: otg.PatternFlowArpTargetHardwareAddr.decrement:type_name -> otg.PatternFlowArpTargetHardwareAddrCounter - 990, // 1201: otg.PatternFlowArpTargetHardwareAddr.metric_tags:type_name -> otg.PatternFlowArpTargetHardwareAddrMetricTag - 285, // 1202: otg.PatternFlowArpTargetProtocolAddr.choice:type_name -> otg.PatternFlowArpTargetProtocolAddr.Choice.Enum - 992, // 1203: otg.PatternFlowArpTargetProtocolAddr.increment:type_name -> otg.PatternFlowArpTargetProtocolAddrCounter - 992, // 1204: otg.PatternFlowArpTargetProtocolAddr.decrement:type_name -> otg.PatternFlowArpTargetProtocolAddrCounter - 993, // 1205: otg.PatternFlowArpTargetProtocolAddr.metric_tags:type_name -> otg.PatternFlowArpTargetProtocolAddrMetricTag - 286, // 1206: otg.PatternFlowIcmpEchoType.choice:type_name -> otg.PatternFlowIcmpEchoType.Choice.Enum - 995, // 1207: otg.PatternFlowIcmpEchoType.increment:type_name -> otg.PatternFlowIcmpEchoTypeCounter - 995, // 1208: otg.PatternFlowIcmpEchoType.decrement:type_name -> otg.PatternFlowIcmpEchoTypeCounter - 996, // 1209: otg.PatternFlowIcmpEchoType.metric_tags:type_name -> otg.PatternFlowIcmpEchoTypeMetricTag - 287, // 1210: otg.PatternFlowIcmpEchoCode.choice:type_name -> otg.PatternFlowIcmpEchoCode.Choice.Enum - 998, // 1211: otg.PatternFlowIcmpEchoCode.increment:type_name -> otg.PatternFlowIcmpEchoCodeCounter - 998, // 1212: otg.PatternFlowIcmpEchoCode.decrement:type_name -> otg.PatternFlowIcmpEchoCodeCounter - 999, // 1213: otg.PatternFlowIcmpEchoCode.metric_tags:type_name -> otg.PatternFlowIcmpEchoCodeMetricTag - 288, // 1214: otg.PatternFlowIcmpEchoChecksum.choice:type_name -> otg.PatternFlowIcmpEchoChecksum.Choice.Enum - 289, // 1215: otg.PatternFlowIcmpEchoChecksum.generated:type_name -> otg.PatternFlowIcmpEchoChecksum.Generated.Enum - 290, // 1216: otg.PatternFlowIcmpEchoIdentifier.choice:type_name -> otg.PatternFlowIcmpEchoIdentifier.Choice.Enum - 1002, // 1217: otg.PatternFlowIcmpEchoIdentifier.increment:type_name -> otg.PatternFlowIcmpEchoIdentifierCounter - 1002, // 1218: otg.PatternFlowIcmpEchoIdentifier.decrement:type_name -> otg.PatternFlowIcmpEchoIdentifierCounter - 1003, // 1219: otg.PatternFlowIcmpEchoIdentifier.metric_tags:type_name -> otg.PatternFlowIcmpEchoIdentifierMetricTag - 291, // 1220: otg.PatternFlowIcmpEchoSequenceNumber.choice:type_name -> otg.PatternFlowIcmpEchoSequenceNumber.Choice.Enum - 1005, // 1221: otg.PatternFlowIcmpEchoSequenceNumber.increment:type_name -> otg.PatternFlowIcmpEchoSequenceNumberCounter - 1005, // 1222: otg.PatternFlowIcmpEchoSequenceNumber.decrement:type_name -> otg.PatternFlowIcmpEchoSequenceNumberCounter - 1006, // 1223: otg.PatternFlowIcmpEchoSequenceNumber.metric_tags:type_name -> otg.PatternFlowIcmpEchoSequenceNumberMetricTag - 292, // 1224: otg.PatternFlowIcmpCommonChecksum.choice:type_name -> otg.PatternFlowIcmpCommonChecksum.Choice.Enum - 293, // 1225: otg.PatternFlowIcmpCommonChecksum.generated:type_name -> otg.PatternFlowIcmpCommonChecksum.Generated.Enum - 294, // 1226: otg.PatternFlowIcmpNextFieldsIdentifier.choice:type_name -> otg.PatternFlowIcmpNextFieldsIdentifier.Choice.Enum - 1009, // 1227: otg.PatternFlowIcmpNextFieldsIdentifier.increment:type_name -> otg.PatternFlowIcmpNextFieldsIdentifierCounter - 1009, // 1228: otg.PatternFlowIcmpNextFieldsIdentifier.decrement:type_name -> otg.PatternFlowIcmpNextFieldsIdentifierCounter - 1010, // 1229: otg.PatternFlowIcmpNextFieldsIdentifier.metric_tags:type_name -> otg.PatternFlowIcmpNextFieldsIdentifierMetricTag - 295, // 1230: otg.PatternFlowIcmpNextFieldsSequenceNumber.choice:type_name -> otg.PatternFlowIcmpNextFieldsSequenceNumber.Choice.Enum - 1012, // 1231: otg.PatternFlowIcmpNextFieldsSequenceNumber.increment:type_name -> otg.PatternFlowIcmpNextFieldsSequenceNumberCounter - 1012, // 1232: otg.PatternFlowIcmpNextFieldsSequenceNumber.decrement:type_name -> otg.PatternFlowIcmpNextFieldsSequenceNumberCounter - 1013, // 1233: otg.PatternFlowIcmpNextFieldsSequenceNumber.metric_tags:type_name -> otg.PatternFlowIcmpNextFieldsSequenceNumberMetricTag - 296, // 1234: otg.PatternFlowIcmpv6EchoType.choice:type_name -> otg.PatternFlowIcmpv6EchoType.Choice.Enum - 1015, // 1235: otg.PatternFlowIcmpv6EchoType.increment:type_name -> otg.PatternFlowIcmpv6EchoTypeCounter - 1015, // 1236: otg.PatternFlowIcmpv6EchoType.decrement:type_name -> otg.PatternFlowIcmpv6EchoTypeCounter - 1016, // 1237: otg.PatternFlowIcmpv6EchoType.metric_tags:type_name -> otg.PatternFlowIcmpv6EchoTypeMetricTag - 297, // 1238: otg.PatternFlowIcmpv6EchoCode.choice:type_name -> otg.PatternFlowIcmpv6EchoCode.Choice.Enum - 1018, // 1239: otg.PatternFlowIcmpv6EchoCode.increment:type_name -> otg.PatternFlowIcmpv6EchoCodeCounter - 1018, // 1240: otg.PatternFlowIcmpv6EchoCode.decrement:type_name -> otg.PatternFlowIcmpv6EchoCodeCounter - 1019, // 1241: otg.PatternFlowIcmpv6EchoCode.metric_tags:type_name -> otg.PatternFlowIcmpv6EchoCodeMetricTag - 298, // 1242: otg.PatternFlowIcmpv6EchoIdentifier.choice:type_name -> otg.PatternFlowIcmpv6EchoIdentifier.Choice.Enum - 1021, // 1243: otg.PatternFlowIcmpv6EchoIdentifier.increment:type_name -> otg.PatternFlowIcmpv6EchoIdentifierCounter - 1021, // 1244: otg.PatternFlowIcmpv6EchoIdentifier.decrement:type_name -> otg.PatternFlowIcmpv6EchoIdentifierCounter - 1022, // 1245: otg.PatternFlowIcmpv6EchoIdentifier.metric_tags:type_name -> otg.PatternFlowIcmpv6EchoIdentifierMetricTag - 299, // 1246: otg.PatternFlowIcmpv6EchoSequenceNumber.choice:type_name -> otg.PatternFlowIcmpv6EchoSequenceNumber.Choice.Enum - 1024, // 1247: otg.PatternFlowIcmpv6EchoSequenceNumber.increment:type_name -> otg.PatternFlowIcmpv6EchoSequenceNumberCounter - 1024, // 1248: otg.PatternFlowIcmpv6EchoSequenceNumber.decrement:type_name -> otg.PatternFlowIcmpv6EchoSequenceNumberCounter - 1025, // 1249: otg.PatternFlowIcmpv6EchoSequenceNumber.metric_tags:type_name -> otg.PatternFlowIcmpv6EchoSequenceNumberMetricTag - 300, // 1250: otg.PatternFlowIcmpv6EchoChecksum.choice:type_name -> otg.PatternFlowIcmpv6EchoChecksum.Choice.Enum - 301, // 1251: otg.PatternFlowIcmpv6EchoChecksum.generated:type_name -> otg.PatternFlowIcmpv6EchoChecksum.Generated.Enum - 302, // 1252: otg.PatternFlowIcmpv6CommonChecksum.choice:type_name -> otg.PatternFlowIcmpv6CommonChecksum.Choice.Enum - 303, // 1253: otg.PatternFlowIcmpv6CommonChecksum.generated:type_name -> otg.PatternFlowIcmpv6CommonChecksum.Generated.Enum - 304, // 1254: otg.PatternFlowPppAddress.choice:type_name -> otg.PatternFlowPppAddress.Choice.Enum - 1029, // 1255: otg.PatternFlowPppAddress.increment:type_name -> otg.PatternFlowPppAddressCounter - 1029, // 1256: otg.PatternFlowPppAddress.decrement:type_name -> otg.PatternFlowPppAddressCounter - 1030, // 1257: otg.PatternFlowPppAddress.metric_tags:type_name -> otg.PatternFlowPppAddressMetricTag - 305, // 1258: otg.PatternFlowPppControl.choice:type_name -> otg.PatternFlowPppControl.Choice.Enum - 1032, // 1259: otg.PatternFlowPppControl.increment:type_name -> otg.PatternFlowPppControlCounter - 1032, // 1260: otg.PatternFlowPppControl.decrement:type_name -> otg.PatternFlowPppControlCounter - 1033, // 1261: otg.PatternFlowPppControl.metric_tags:type_name -> otg.PatternFlowPppControlMetricTag - 306, // 1262: otg.PatternFlowPppProtocolType.choice:type_name -> otg.PatternFlowPppProtocolType.Choice.Enum - 1035, // 1263: otg.PatternFlowPppProtocolType.increment:type_name -> otg.PatternFlowPppProtocolTypeCounter - 1035, // 1264: otg.PatternFlowPppProtocolType.decrement:type_name -> otg.PatternFlowPppProtocolTypeCounter - 1036, // 1265: otg.PatternFlowPppProtocolType.metric_tags:type_name -> otg.PatternFlowPppProtocolTypeMetricTag - 307, // 1266: otg.PatternFlowIgmpv1Version.choice:type_name -> otg.PatternFlowIgmpv1Version.Choice.Enum - 1038, // 1267: otg.PatternFlowIgmpv1Version.increment:type_name -> otg.PatternFlowIgmpv1VersionCounter - 1038, // 1268: otg.PatternFlowIgmpv1Version.decrement:type_name -> otg.PatternFlowIgmpv1VersionCounter - 1039, // 1269: otg.PatternFlowIgmpv1Version.metric_tags:type_name -> otg.PatternFlowIgmpv1VersionMetricTag - 308, // 1270: otg.PatternFlowIgmpv1Type.choice:type_name -> otg.PatternFlowIgmpv1Type.Choice.Enum - 1041, // 1271: otg.PatternFlowIgmpv1Type.increment:type_name -> otg.PatternFlowIgmpv1TypeCounter - 1041, // 1272: otg.PatternFlowIgmpv1Type.decrement:type_name -> otg.PatternFlowIgmpv1TypeCounter - 1042, // 1273: otg.PatternFlowIgmpv1Type.metric_tags:type_name -> otg.PatternFlowIgmpv1TypeMetricTag - 309, // 1274: otg.PatternFlowIgmpv1Unused.choice:type_name -> otg.PatternFlowIgmpv1Unused.Choice.Enum - 1044, // 1275: otg.PatternFlowIgmpv1Unused.increment:type_name -> otg.PatternFlowIgmpv1UnusedCounter - 1044, // 1276: otg.PatternFlowIgmpv1Unused.decrement:type_name -> otg.PatternFlowIgmpv1UnusedCounter - 1045, // 1277: otg.PatternFlowIgmpv1Unused.metric_tags:type_name -> otg.PatternFlowIgmpv1UnusedMetricTag - 310, // 1278: otg.PatternFlowIgmpv1Checksum.choice:type_name -> otg.PatternFlowIgmpv1Checksum.Choice.Enum - 311, // 1279: otg.PatternFlowIgmpv1Checksum.generated:type_name -> otg.PatternFlowIgmpv1Checksum.Generated.Enum - 312, // 1280: otg.PatternFlowIgmpv1GroupAddress.choice:type_name -> otg.PatternFlowIgmpv1GroupAddress.Choice.Enum - 1048, // 1281: otg.PatternFlowIgmpv1GroupAddress.increment:type_name -> otg.PatternFlowIgmpv1GroupAddressCounter - 1048, // 1282: otg.PatternFlowIgmpv1GroupAddress.decrement:type_name -> otg.PatternFlowIgmpv1GroupAddressCounter - 1049, // 1283: otg.PatternFlowIgmpv1GroupAddress.metric_tags:type_name -> otg.PatternFlowIgmpv1GroupAddressMetricTag - 313, // 1284: otg.PatternFlowMplsLabel.choice:type_name -> otg.PatternFlowMplsLabel.Choice.Enum - 1051, // 1285: otg.PatternFlowMplsLabel.increment:type_name -> otg.PatternFlowMplsLabelCounter - 1051, // 1286: otg.PatternFlowMplsLabel.decrement:type_name -> otg.PatternFlowMplsLabelCounter - 1052, // 1287: otg.PatternFlowMplsLabel.metric_tags:type_name -> otg.PatternFlowMplsLabelMetricTag - 314, // 1288: otg.PatternFlowMplsTrafficClass.choice:type_name -> otg.PatternFlowMplsTrafficClass.Choice.Enum - 1054, // 1289: otg.PatternFlowMplsTrafficClass.increment:type_name -> otg.PatternFlowMplsTrafficClassCounter - 1054, // 1290: otg.PatternFlowMplsTrafficClass.decrement:type_name -> otg.PatternFlowMplsTrafficClassCounter - 1055, // 1291: otg.PatternFlowMplsTrafficClass.metric_tags:type_name -> otg.PatternFlowMplsTrafficClassMetricTag - 315, // 1292: otg.PatternFlowMplsBottomOfStack.choice:type_name -> otg.PatternFlowMplsBottomOfStack.Choice.Enum - 1057, // 1293: otg.PatternFlowMplsBottomOfStack.increment:type_name -> otg.PatternFlowMplsBottomOfStackCounter - 1057, // 1294: otg.PatternFlowMplsBottomOfStack.decrement:type_name -> otg.PatternFlowMplsBottomOfStackCounter - 1058, // 1295: otg.PatternFlowMplsBottomOfStack.metric_tags:type_name -> otg.PatternFlowMplsBottomOfStackMetricTag - 316, // 1296: otg.PatternFlowMplsTimeToLive.choice:type_name -> otg.PatternFlowMplsTimeToLive.Choice.Enum - 1060, // 1297: otg.PatternFlowMplsTimeToLive.increment:type_name -> otg.PatternFlowMplsTimeToLiveCounter - 1060, // 1298: otg.PatternFlowMplsTimeToLive.decrement:type_name -> otg.PatternFlowMplsTimeToLiveCounter - 1061, // 1299: otg.PatternFlowMplsTimeToLive.metric_tags:type_name -> otg.PatternFlowMplsTimeToLiveMetricTag - 538, // 1300: otg.Success.warning:type_name -> otg.Warning - 537, // 1301: otg.Failure.error:type_name -> otg.Error - 317, // 1302: otg.SetConfigRequest.config:type_name -> otg.Config - 539, // 1303: otg.UpdateConfigRequest.config_update:type_name -> otg.ConfigUpdate - 538, // 1304: otg.SetConfigResponse.warning:type_name -> otg.Warning - 317, // 1305: otg.GetConfigResponse.config:type_name -> otg.Config - 538, // 1306: otg.UpdateConfigResponse.warning:type_name -> otg.Warning - 541, // 1307: otg.SetControlStateRequest.control_state:type_name -> otg.ControlState - 538, // 1308: otg.SetControlStateResponse.warning:type_name -> otg.Warning - 557, // 1309: otg.SetControlActionRequest.control_action:type_name -> otg.ControlAction - 558, // 1310: otg.SetControlActionResponse.control_action_response:type_name -> otg.ControlActionResponse - 577, // 1311: otg.GetMetricsRequest.metrics_request:type_name -> otg.MetricsRequest - 578, // 1312: otg.GetMetricsResponse.metrics_response:type_name -> otg.MetricsResponse - 604, // 1313: otg.GetStatesRequest.states_request:type_name -> otg.StatesRequest - 605, // 1314: otg.GetStatesResponse.states_response:type_name -> otg.StatesResponse - 646, // 1315: otg.GetCaptureRequest.capture_request:type_name -> otg.CaptureRequest - 1063, // 1316: otg.GetVersionResponse.version:type_name -> otg.Version - 1066, // 1317: otg.Openapi.SetConfig:input_type -> otg.SetConfigRequest - 1399, // 1318: otg.Openapi.GetConfig:input_type -> google.protobuf.Empty - 1067, // 1319: otg.Openapi.UpdateConfig:input_type -> otg.UpdateConfigRequest - 1071, // 1320: otg.Openapi.SetControlState:input_type -> otg.SetControlStateRequest - 1073, // 1321: otg.Openapi.SetControlAction:input_type -> otg.SetControlActionRequest - 1075, // 1322: otg.Openapi.GetMetrics:input_type -> otg.GetMetricsRequest - 1077, // 1323: otg.Openapi.GetStates:input_type -> otg.GetStatesRequest - 1079, // 1324: otg.Openapi.GetCapture:input_type -> otg.GetCaptureRequest - 1399, // 1325: otg.Openapi.GetVersion:input_type -> google.protobuf.Empty - 1068, // 1326: otg.Openapi.SetConfig:output_type -> otg.SetConfigResponse - 1069, // 1327: otg.Openapi.GetConfig:output_type -> otg.GetConfigResponse - 1070, // 1328: otg.Openapi.UpdateConfig:output_type -> otg.UpdateConfigResponse - 1072, // 1329: otg.Openapi.SetControlState:output_type -> otg.SetControlStateResponse - 1074, // 1330: otg.Openapi.SetControlAction:output_type -> otg.SetControlActionResponse - 1076, // 1331: otg.Openapi.GetMetrics:output_type -> otg.GetMetricsResponse - 1078, // 1332: otg.Openapi.GetStates:output_type -> otg.GetStatesResponse - 1080, // 1333: otg.Openapi.GetCapture:output_type -> otg.GetCaptureResponse - 1081, // 1334: otg.Openapi.GetVersion:output_type -> otg.GetVersionResponse - 1326, // [1326:1335] is the sub-list for method output_type - 1317, // [1317:1326] is the sub-list for method input_type - 1317, // [1317:1317] is the sub-list for extension type_name - 1317, // [1317:1317] is the sub-list for extension extendee - 0, // [0:1317] is the sub-list for field type_name + 539, // 338: otg.FlowHeader.custom:type_name -> otg.FlowCustom + 541, // 339: otg.FlowHeader.ethernet:type_name -> otg.FlowEthernet + 542, // 340: otg.FlowHeader.vlan:type_name -> otg.FlowVlan + 543, // 341: otg.FlowHeader.vxlan:type_name -> otg.FlowVxlan + 544, // 342: otg.FlowHeader.ipv4:type_name -> otg.FlowIpv4 + 548, // 343: otg.FlowHeader.ipv6:type_name -> otg.FlowIpv6 + 549, // 344: otg.FlowHeader.pfcpause:type_name -> otg.FlowPfcPause + 550, // 345: otg.FlowHeader.ethernetpause:type_name -> otg.FlowEthernetPause + 551, // 346: otg.FlowHeader.tcp:type_name -> otg.FlowTcp + 552, // 347: otg.FlowHeader.udp:type_name -> otg.FlowUdp + 553, // 348: otg.FlowHeader.gre:type_name -> otg.FlowGre + 554, // 349: otg.FlowHeader.gtpv1:type_name -> otg.FlowGtpv1 + 556, // 350: otg.FlowHeader.gtpv2:type_name -> otg.FlowGtpv2 + 557, // 351: otg.FlowHeader.arp:type_name -> otg.FlowArp + 558, // 352: otg.FlowHeader.icmp:type_name -> otg.FlowIcmp + 560, // 353: otg.FlowHeader.icmpv6:type_name -> otg.FlowIcmpv6 + 562, // 354: otg.FlowHeader.ppp:type_name -> otg.FlowPpp + 563, // 355: otg.FlowHeader.igmpv1:type_name -> otg.FlowIgmpv1 + 564, // 356: otg.FlowHeader.mpls:type_name -> otg.FlowMpls + 565, // 357: otg.FlowHeader.rsvp:type_name -> otg.FlowRsvp + 540, // 358: otg.FlowCustom.metric_tags:type_name -> otg.FlowCustomMetricTag + 758, // 359: otg.FlowEthernet.dst:type_name -> otg.PatternFlowEthernetDst + 761, // 360: otg.FlowEthernet.src:type_name -> otg.PatternFlowEthernetSrc + 764, // 361: otg.FlowEthernet.ether_type:type_name -> otg.PatternFlowEthernetEtherType + 767, // 362: otg.FlowEthernet.pfc_queue:type_name -> otg.PatternFlowEthernetPfcQueue + 770, // 363: otg.FlowVlan.priority:type_name -> otg.PatternFlowVlanPriority + 773, // 364: otg.FlowVlan.cfi:type_name -> otg.PatternFlowVlanCfi + 776, // 365: otg.FlowVlan.id:type_name -> otg.PatternFlowVlanId + 779, // 366: otg.FlowVlan.tpid:type_name -> otg.PatternFlowVlanTpid + 782, // 367: otg.FlowVxlan.flags:type_name -> otg.PatternFlowVxlanFlags + 785, // 368: otg.FlowVxlan.reserved0:type_name -> otg.PatternFlowVxlanReserved0 + 788, // 369: otg.FlowVxlan.vni:type_name -> otg.PatternFlowVxlanVni + 791, // 370: otg.FlowVxlan.reserved1:type_name -> otg.PatternFlowVxlanReserved1 + 794, // 371: otg.FlowIpv4.version:type_name -> otg.PatternFlowIpv4Version + 797, // 372: otg.FlowIpv4.header_length:type_name -> otg.PatternFlowIpv4HeaderLength + 545, // 373: otg.FlowIpv4.priority:type_name -> otg.FlowIpv4Priority + 800, // 374: otg.FlowIpv4.total_length:type_name -> otg.PatternFlowIpv4TotalLength + 803, // 375: otg.FlowIpv4.identification:type_name -> otg.PatternFlowIpv4Identification + 806, // 376: otg.FlowIpv4.reserved:type_name -> otg.PatternFlowIpv4Reserved + 809, // 377: otg.FlowIpv4.dont_fragment:type_name -> otg.PatternFlowIpv4DontFragment + 812, // 378: otg.FlowIpv4.more_fragments:type_name -> otg.PatternFlowIpv4MoreFragments + 815, // 379: otg.FlowIpv4.fragment_offset:type_name -> otg.PatternFlowIpv4FragmentOffset + 818, // 380: otg.FlowIpv4.time_to_live:type_name -> otg.PatternFlowIpv4TimeToLive + 821, // 381: otg.FlowIpv4.protocol:type_name -> otg.PatternFlowIpv4Protocol + 822, // 382: otg.FlowIpv4.header_checksum:type_name -> otg.PatternFlowIpv4HeaderChecksum + 825, // 383: otg.FlowIpv4.src:type_name -> otg.PatternFlowIpv4Src + 828, // 384: otg.FlowIpv4.dst:type_name -> otg.PatternFlowIpv4Dst + 69, // 385: otg.FlowIpv4Priority.choice:type_name -> otg.FlowIpv4Priority.Choice.Enum + 831, // 386: otg.FlowIpv4Priority.raw:type_name -> otg.PatternFlowIpv4PriorityRaw + 547, // 387: otg.FlowIpv4Priority.tos:type_name -> otg.FlowIpv4Tos + 546, // 388: otg.FlowIpv4Priority.dscp:type_name -> otg.FlowIpv4Dscp + 834, // 389: otg.FlowIpv4Dscp.phb:type_name -> otg.PatternFlowIpv4DscpPhb + 837, // 390: otg.FlowIpv4Dscp.ecn:type_name -> otg.PatternFlowIpv4DscpEcn + 840, // 391: otg.FlowIpv4Tos.precedence:type_name -> otg.PatternFlowIpv4TosPrecedence + 843, // 392: otg.FlowIpv4Tos.delay:type_name -> otg.PatternFlowIpv4TosDelay + 846, // 393: otg.FlowIpv4Tos.throughput:type_name -> otg.PatternFlowIpv4TosThroughput + 849, // 394: otg.FlowIpv4Tos.reliability:type_name -> otg.PatternFlowIpv4TosReliability + 852, // 395: otg.FlowIpv4Tos.monetary:type_name -> otg.PatternFlowIpv4TosMonetary + 855, // 396: otg.FlowIpv4Tos.unused:type_name -> otg.PatternFlowIpv4TosUnused + 858, // 397: otg.FlowIpv6.version:type_name -> otg.PatternFlowIpv6Version + 861, // 398: otg.FlowIpv6.traffic_class:type_name -> otg.PatternFlowIpv6TrafficClass + 864, // 399: otg.FlowIpv6.flow_label:type_name -> otg.PatternFlowIpv6FlowLabel + 867, // 400: otg.FlowIpv6.payload_length:type_name -> otg.PatternFlowIpv6PayloadLength + 870, // 401: otg.FlowIpv6.next_header:type_name -> otg.PatternFlowIpv6NextHeader + 873, // 402: otg.FlowIpv6.hop_limit:type_name -> otg.PatternFlowIpv6HopLimit + 876, // 403: otg.FlowIpv6.src:type_name -> otg.PatternFlowIpv6Src + 879, // 404: otg.FlowIpv6.dst:type_name -> otg.PatternFlowIpv6Dst + 882, // 405: otg.FlowPfcPause.dst:type_name -> otg.PatternFlowPfcPauseDst + 885, // 406: otg.FlowPfcPause.src:type_name -> otg.PatternFlowPfcPauseSrc + 888, // 407: otg.FlowPfcPause.ether_type:type_name -> otg.PatternFlowPfcPauseEtherType + 891, // 408: otg.FlowPfcPause.control_op_code:type_name -> otg.PatternFlowPfcPauseControlOpCode + 894, // 409: otg.FlowPfcPause.class_enable_vector:type_name -> otg.PatternFlowPfcPauseClassEnableVector + 897, // 410: otg.FlowPfcPause.pause_class_0:type_name -> otg.PatternFlowPfcPausePauseClass0 + 900, // 411: otg.FlowPfcPause.pause_class_1:type_name -> otg.PatternFlowPfcPausePauseClass1 + 903, // 412: otg.FlowPfcPause.pause_class_2:type_name -> otg.PatternFlowPfcPausePauseClass2 + 906, // 413: otg.FlowPfcPause.pause_class_3:type_name -> otg.PatternFlowPfcPausePauseClass3 + 909, // 414: otg.FlowPfcPause.pause_class_4:type_name -> otg.PatternFlowPfcPausePauseClass4 + 912, // 415: otg.FlowPfcPause.pause_class_5:type_name -> otg.PatternFlowPfcPausePauseClass5 + 915, // 416: otg.FlowPfcPause.pause_class_6:type_name -> otg.PatternFlowPfcPausePauseClass6 + 918, // 417: otg.FlowPfcPause.pause_class_7:type_name -> otg.PatternFlowPfcPausePauseClass7 + 921, // 418: otg.FlowEthernetPause.dst:type_name -> otg.PatternFlowEthernetPauseDst + 924, // 419: otg.FlowEthernetPause.src:type_name -> otg.PatternFlowEthernetPauseSrc + 927, // 420: otg.FlowEthernetPause.ether_type:type_name -> otg.PatternFlowEthernetPauseEtherType + 930, // 421: otg.FlowEthernetPause.control_op_code:type_name -> otg.PatternFlowEthernetPauseControlOpCode + 933, // 422: otg.FlowEthernetPause.time:type_name -> otg.PatternFlowEthernetPauseTime + 936, // 423: otg.FlowTcp.src_port:type_name -> otg.PatternFlowTcpSrcPort + 939, // 424: otg.FlowTcp.dst_port:type_name -> otg.PatternFlowTcpDstPort + 942, // 425: otg.FlowTcp.seq_num:type_name -> otg.PatternFlowTcpSeqNum + 945, // 426: otg.FlowTcp.ack_num:type_name -> otg.PatternFlowTcpAckNum + 948, // 427: otg.FlowTcp.data_offset:type_name -> otg.PatternFlowTcpDataOffset + 951, // 428: otg.FlowTcp.ecn_ns:type_name -> otg.PatternFlowTcpEcnNs + 954, // 429: otg.FlowTcp.ecn_cwr:type_name -> otg.PatternFlowTcpEcnCwr + 957, // 430: otg.FlowTcp.ecn_echo:type_name -> otg.PatternFlowTcpEcnEcho + 960, // 431: otg.FlowTcp.ctl_urg:type_name -> otg.PatternFlowTcpCtlUrg + 963, // 432: otg.FlowTcp.ctl_ack:type_name -> otg.PatternFlowTcpCtlAck + 966, // 433: otg.FlowTcp.ctl_psh:type_name -> otg.PatternFlowTcpCtlPsh + 969, // 434: otg.FlowTcp.ctl_rst:type_name -> otg.PatternFlowTcpCtlRst + 972, // 435: otg.FlowTcp.ctl_syn:type_name -> otg.PatternFlowTcpCtlSyn + 975, // 436: otg.FlowTcp.ctl_fin:type_name -> otg.PatternFlowTcpCtlFin + 978, // 437: otg.FlowTcp.window:type_name -> otg.PatternFlowTcpWindow + 981, // 438: otg.FlowUdp.src_port:type_name -> otg.PatternFlowUdpSrcPort + 984, // 439: otg.FlowUdp.dst_port:type_name -> otg.PatternFlowUdpDstPort + 987, // 440: otg.FlowUdp.length:type_name -> otg.PatternFlowUdpLength + 988, // 441: otg.FlowUdp.checksum:type_name -> otg.PatternFlowUdpChecksum + 991, // 442: otg.FlowGre.checksum_present:type_name -> otg.PatternFlowGreChecksumPresent + 994, // 443: otg.FlowGre.reserved0:type_name -> otg.PatternFlowGreReserved0 + 997, // 444: otg.FlowGre.version:type_name -> otg.PatternFlowGreVersion + 1000, // 445: otg.FlowGre.protocol:type_name -> otg.PatternFlowGreProtocol + 1001, // 446: otg.FlowGre.checksum:type_name -> otg.PatternFlowGreChecksum + 1004, // 447: otg.FlowGre.reserved1:type_name -> otg.PatternFlowGreReserved1 + 1007, // 448: otg.FlowGtpv1.version:type_name -> otg.PatternFlowGtpv1Version + 1010, // 449: otg.FlowGtpv1.protocol_type:type_name -> otg.PatternFlowGtpv1ProtocolType + 1013, // 450: otg.FlowGtpv1.reserved:type_name -> otg.PatternFlowGtpv1Reserved + 1016, // 451: otg.FlowGtpv1.e_flag:type_name -> otg.PatternFlowGtpv1EFlag + 1019, // 452: otg.FlowGtpv1.s_flag:type_name -> otg.PatternFlowGtpv1SFlag + 1022, // 453: otg.FlowGtpv1.pn_flag:type_name -> otg.PatternFlowGtpv1PnFlag + 1025, // 454: otg.FlowGtpv1.message_type:type_name -> otg.PatternFlowGtpv1MessageType + 1028, // 455: otg.FlowGtpv1.message_length:type_name -> otg.PatternFlowGtpv1MessageLength + 1031, // 456: otg.FlowGtpv1.teid:type_name -> otg.PatternFlowGtpv1Teid + 1034, // 457: otg.FlowGtpv1.squence_number:type_name -> otg.PatternFlowGtpv1SquenceNumber + 1037, // 458: otg.FlowGtpv1.n_pdu_number:type_name -> otg.PatternFlowGtpv1NPduNumber + 1040, // 459: otg.FlowGtpv1.next_extension_header_type:type_name -> otg.PatternFlowGtpv1NextExtensionHeaderType + 555, // 460: otg.FlowGtpv1.extension_headers:type_name -> otg.FlowGtpExtension + 1043, // 461: otg.FlowGtpExtension.extension_length:type_name -> otg.PatternFlowGtpExtensionExtensionLength + 1046, // 462: otg.FlowGtpExtension.contents:type_name -> otg.PatternFlowGtpExtensionContents + 1049, // 463: otg.FlowGtpExtension.next_extension_header:type_name -> otg.PatternFlowGtpExtensionNextExtensionHeader + 1052, // 464: otg.FlowGtpv2.version:type_name -> otg.PatternFlowGtpv2Version + 1055, // 465: otg.FlowGtpv2.piggybacking_flag:type_name -> otg.PatternFlowGtpv2PiggybackingFlag + 1058, // 466: otg.FlowGtpv2.teid_flag:type_name -> otg.PatternFlowGtpv2TeidFlag + 1061, // 467: otg.FlowGtpv2.spare1:type_name -> otg.PatternFlowGtpv2Spare1 + 1064, // 468: otg.FlowGtpv2.message_type:type_name -> otg.PatternFlowGtpv2MessageType + 1067, // 469: otg.FlowGtpv2.message_length:type_name -> otg.PatternFlowGtpv2MessageLength + 1070, // 470: otg.FlowGtpv2.teid:type_name -> otg.PatternFlowGtpv2Teid + 1073, // 471: otg.FlowGtpv2.sequence_number:type_name -> otg.PatternFlowGtpv2SequenceNumber + 1076, // 472: otg.FlowGtpv2.spare2:type_name -> otg.PatternFlowGtpv2Spare2 + 1079, // 473: otg.FlowArp.hardware_type:type_name -> otg.PatternFlowArpHardwareType + 1082, // 474: otg.FlowArp.protocol_type:type_name -> otg.PatternFlowArpProtocolType + 1085, // 475: otg.FlowArp.hardware_length:type_name -> otg.PatternFlowArpHardwareLength + 1088, // 476: otg.FlowArp.protocol_length:type_name -> otg.PatternFlowArpProtocolLength + 1091, // 477: otg.FlowArp.operation:type_name -> otg.PatternFlowArpOperation + 1094, // 478: otg.FlowArp.sender_hardware_addr:type_name -> otg.PatternFlowArpSenderHardwareAddr + 1097, // 479: otg.FlowArp.sender_protocol_addr:type_name -> otg.PatternFlowArpSenderProtocolAddr + 1100, // 480: otg.FlowArp.target_hardware_addr:type_name -> otg.PatternFlowArpTargetHardwareAddr + 1103, // 481: otg.FlowArp.target_protocol_addr:type_name -> otg.PatternFlowArpTargetProtocolAddr + 70, // 482: otg.FlowIcmp.choice:type_name -> otg.FlowIcmp.Choice.Enum + 559, // 483: otg.FlowIcmp.echo:type_name -> otg.FlowIcmpEcho + 1106, // 484: otg.FlowIcmpEcho.type:type_name -> otg.PatternFlowIcmpEchoType + 1109, // 485: otg.FlowIcmpEcho.code:type_name -> otg.PatternFlowIcmpEchoCode + 1110, // 486: otg.FlowIcmpEcho.checksum:type_name -> otg.PatternFlowIcmpEchoChecksum + 1113, // 487: otg.FlowIcmpEcho.identifier:type_name -> otg.PatternFlowIcmpEchoIdentifier + 1116, // 488: otg.FlowIcmpEcho.sequence_number:type_name -> otg.PatternFlowIcmpEchoSequenceNumber + 71, // 489: otg.FlowIcmpv6.choice:type_name -> otg.FlowIcmpv6.Choice.Enum + 561, // 490: otg.FlowIcmpv6.echo:type_name -> otg.FlowIcmpv6Echo + 1126, // 491: otg.FlowIcmpv6Echo.type:type_name -> otg.PatternFlowIcmpv6EchoType + 1129, // 492: otg.FlowIcmpv6Echo.code:type_name -> otg.PatternFlowIcmpv6EchoCode + 1132, // 493: otg.FlowIcmpv6Echo.identifier:type_name -> otg.PatternFlowIcmpv6EchoIdentifier + 1135, // 494: otg.FlowIcmpv6Echo.sequence_number:type_name -> otg.PatternFlowIcmpv6EchoSequenceNumber + 1136, // 495: otg.FlowIcmpv6Echo.checksum:type_name -> otg.PatternFlowIcmpv6EchoChecksum + 1140, // 496: otg.FlowPpp.address:type_name -> otg.PatternFlowPppAddress + 1143, // 497: otg.FlowPpp.control:type_name -> otg.PatternFlowPppControl + 1146, // 498: otg.FlowPpp.protocol_type:type_name -> otg.PatternFlowPppProtocolType + 1149, // 499: otg.FlowIgmpv1.version:type_name -> otg.PatternFlowIgmpv1Version + 1152, // 500: otg.FlowIgmpv1.type:type_name -> otg.PatternFlowIgmpv1Type + 1155, // 501: otg.FlowIgmpv1.unused:type_name -> otg.PatternFlowIgmpv1Unused + 1156, // 502: otg.FlowIgmpv1.checksum:type_name -> otg.PatternFlowIgmpv1Checksum + 1159, // 503: otg.FlowIgmpv1.group_address:type_name -> otg.PatternFlowIgmpv1GroupAddress + 1162, // 504: otg.FlowMpls.label:type_name -> otg.PatternFlowMplsLabel + 1165, // 505: otg.FlowMpls.traffic_class:type_name -> otg.PatternFlowMplsTrafficClass + 1168, // 506: otg.FlowMpls.bottom_of_stack:type_name -> otg.PatternFlowMplsBottomOfStack + 1171, // 507: otg.FlowMpls.time_to_live:type_name -> otg.PatternFlowMplsTimeToLive + 1173, // 508: otg.FlowRsvp.version:type_name -> otg.PatternFlowRsvpVersion + 566, // 509: otg.FlowRsvp.flag:type_name -> otg.FlowRSVPFlag + 1174, // 510: otg.FlowRsvp.rsvp_checksum:type_name -> otg.PatternFlowRsvpRsvpChecksum + 1176, // 511: otg.FlowRsvp.time_to_live:type_name -> otg.PatternFlowRsvpTimeToLive + 1178, // 512: otg.FlowRsvp.reserved:type_name -> otg.PatternFlowRsvpReserved + 567, // 513: otg.FlowRsvp.rsvp_length:type_name -> otg.FlowRSVPLength + 568, // 514: otg.FlowRsvp.message_type:type_name -> otg.FlowRSVPMessage + 72, // 515: otg.FlowRSVPFlag.choice:type_name -> otg.FlowRSVPFlag.Choice.Enum + 73, // 516: otg.FlowRSVPLength.choice:type_name -> otg.FlowRSVPLength.Choice.Enum + 74, // 517: otg.FlowRSVPMessage.choice:type_name -> otg.FlowRSVPMessage.Choice.Enum + 569, // 518: otg.FlowRSVPMessage.path:type_name -> otg.FlowRSVPPathMessage + 570, // 519: otg.FlowRSVPPathMessage.objects:type_name -> otg.FlowRSVPPathObjects + 571, // 520: otg.FlowRSVPPathObjects.length:type_name -> otg.FlowRSVPPathObjectLength + 572, // 521: otg.FlowRSVPPathObjects.class_num:type_name -> otg.FlowRSVPPathObjectsClass + 75, // 522: otg.FlowRSVPPathObjectLength.choice:type_name -> otg.FlowRSVPPathObjectLength.Choice.Enum + 76, // 523: otg.FlowRSVPPathObjectsClass.choice:type_name -> otg.FlowRSVPPathObjectsClass.Choice.Enum + 573, // 524: otg.FlowRSVPPathObjectsClass.session:type_name -> otg.FlowRSVPPathObjectsClassSession + 576, // 525: otg.FlowRSVPPathObjectsClass.rsvp_hop:type_name -> otg.FlowRSVPPathObjectsClassRsvpHop + 579, // 526: otg.FlowRSVPPathObjectsClass.time_values:type_name -> otg.FlowRSVPPathObjectsClassTimeValues + 582, // 527: otg.FlowRSVPPathObjectsClass.explicit_route:type_name -> otg.FlowRSVPPathObjectsClassExplicitRoute + 590, // 528: otg.FlowRSVPPathObjectsClass.label_request:type_name -> otg.FlowRSVPPathObjectsClassLabelRequest + 593, // 529: otg.FlowRSVPPathObjectsClass.session_attribute:type_name -> otg.FlowRSVPPathObjectsClassSessionAttribute + 598, // 530: otg.FlowRSVPPathObjectsClass.sender_template:type_name -> otg.FlowRSVPPathObjectsClassSenderTemplate + 601, // 531: otg.FlowRSVPPathObjectsClass.sender_tspec:type_name -> otg.FlowRSVPPathObjectsClassSenderTspec + 604, // 532: otg.FlowRSVPPathObjectsClass.record_route:type_name -> otg.FlowRSVPPathObjectsClassRecordRoute + 613, // 533: otg.FlowRSVPPathObjectsClass.custom:type_name -> otg.FlowRSVPPathObjectsCustom + 574, // 534: otg.FlowRSVPPathObjectsClassSession.c_type:type_name -> otg.FlowRSVPPathObjectsSessionCType + 77, // 535: otg.FlowRSVPPathObjectsSessionCType.choice:type_name -> otg.FlowRSVPPathObjectsSessionCType.Choice.Enum + 575, // 536: otg.FlowRSVPPathObjectsSessionCType.lsp_tunnel_ipv4:type_name -> otg.FlowRSVPPathSessionLspTunnelIpv4 + 1180, // 537: otg.FlowRSVPPathSessionLspTunnelIpv4.ipv4_tunnel_end_point_address:type_name -> otg.PatternFlowRSVPPathSessionLspTunnelIpv4Ipv4TunnelEndPointAddress + 1182, // 538: otg.FlowRSVPPathSessionLspTunnelIpv4.reserved:type_name -> otg.PatternFlowRSVPPathSessionLspTunnelIpv4Reserved + 1184, // 539: otg.FlowRSVPPathSessionLspTunnelIpv4.tunnel_id:type_name -> otg.PatternFlowRSVPPathSessionLspTunnelIpv4TunnelId + 1186, // 540: otg.FlowRSVPPathSessionLspTunnelIpv4.extended_tunnel_id:type_name -> otg.PatternFlowRSVPPathSessionLspTunnelIpv4ExtendedTunnelId + 577, // 541: otg.FlowRSVPPathObjectsClassRsvpHop.c_type:type_name -> otg.FlowRSVPPathObjectsRsvpHopCType + 78, // 542: otg.FlowRSVPPathObjectsRsvpHopCType.choice:type_name -> otg.FlowRSVPPathObjectsRsvpHopCType.Choice.Enum + 578, // 543: otg.FlowRSVPPathObjectsRsvpHopCType.ipv4:type_name -> otg.FlowRSVPPathRsvpHopIpv4 + 1188, // 544: otg.FlowRSVPPathRsvpHopIpv4.ipv4_next_previous_hop_address:type_name -> otg.PatternFlowRSVPPathRsvpHopIpv4Ipv4NextPreviousHopAddress + 1190, // 545: otg.FlowRSVPPathRsvpHopIpv4.logical_interface_handle:type_name -> otg.PatternFlowRSVPPathRsvpHopIpv4LogicalInterfaceHandle + 580, // 546: otg.FlowRSVPPathObjectsClassTimeValues.c_type:type_name -> otg.FlowRSVPPathObjectsTimeValuesCType + 79, // 547: otg.FlowRSVPPathObjectsTimeValuesCType.choice:type_name -> otg.FlowRSVPPathObjectsTimeValuesCType.Choice.Enum + 581, // 548: otg.FlowRSVPPathObjectsTimeValuesCType.type_1_time_value:type_name -> otg.FlowRSVPPathTimeValuesType1 + 1192, // 549: otg.FlowRSVPPathTimeValuesType1.refresh_period_r:type_name -> otg.PatternFlowRSVPPathTimeValuesType1RefreshPeriodR + 583, // 550: otg.FlowRSVPPathObjectsClassExplicitRoute.c_type:type_name -> otg.FlowRSVPPathObjectsClassExplicitRouteCType + 80, // 551: otg.FlowRSVPPathObjectsClassExplicitRouteCType.choice:type_name -> otg.FlowRSVPPathObjectsClassExplicitRouteCType.Choice.Enum + 584, // 552: otg.FlowRSVPPathObjectsClassExplicitRouteCType.type_1_explicit_route:type_name -> otg.FlowRSVPPathExplicitRouteType1 + 585, // 553: otg.FlowRSVPPathExplicitRouteType1.subobjects:type_name -> otg.FlowRSVPType1ExplicitRouteSubobjects + 586, // 554: otg.FlowRSVPType1ExplicitRouteSubobjects.type:type_name -> otg.FlowRSVPType1ExplicitRouteSubobjectsType + 81, // 555: otg.FlowRSVPType1ExplicitRouteSubobjectsType.choice:type_name -> otg.FlowRSVPType1ExplicitRouteSubobjectsType.Choice.Enum + 587, // 556: otg.FlowRSVPType1ExplicitRouteSubobjectsType.ipv4_prefix:type_name -> otg.FlowRSVPPathExplicitRouteType1Ipv4Prefix + 588, // 557: otg.FlowRSVPType1ExplicitRouteSubobjectsType.four_byte_as_number:type_name -> otg.FlowRSVPPathExplicitRouteType1FourByteASNumber + 1194, // 558: otg.FlowRSVPPathExplicitRouteType1Ipv4Prefix.l_bit:type_name -> otg.PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixLBit + 589, // 559: otg.FlowRSVPPathExplicitRouteType1Ipv4Prefix.length:type_name -> otg.FlowRSVPExplicitRouteLength + 1196, // 560: otg.FlowRSVPPathExplicitRouteType1Ipv4Prefix.ipv4_address:type_name -> otg.PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixIpv4Address + 1198, // 561: otg.FlowRSVPPathExplicitRouteType1FourByteASNumber.l_bit:type_name -> otg.PatternFlowRSVPPathExplicitRouteType1FourByteASNumberLBit + 589, // 562: otg.FlowRSVPPathExplicitRouteType1FourByteASNumber.length:type_name -> otg.FlowRSVPExplicitRouteLength + 1200, // 563: otg.FlowRSVPPathExplicitRouteType1FourByteASNumber.reserved:type_name -> otg.PatternFlowRSVPPathExplicitRouteType1FourByteASNumberReserved + 82, // 564: otg.FlowRSVPExplicitRouteLength.choice:type_name -> otg.FlowRSVPExplicitRouteLength.Choice.Enum + 591, // 565: otg.FlowRSVPPathObjectsClassLabelRequest.c_type:type_name -> otg.FlowRSVPPathObjectsLabelRequestCType + 83, // 566: otg.FlowRSVPPathObjectsLabelRequestCType.choice:type_name -> otg.FlowRSVPPathObjectsLabelRequestCType.Choice.Enum + 592, // 567: otg.FlowRSVPPathObjectsLabelRequestCType.without_label_range:type_name -> otg.FlowRSVPPathLabelRequestWithoutLabelRange + 1202, // 568: otg.FlowRSVPPathLabelRequestWithoutLabelRange.reserved:type_name -> otg.PatternFlowRSVPPathLabelRequestWithoutLabelRangeReserved + 1204, // 569: otg.FlowRSVPPathLabelRequestWithoutLabelRange.l3pid:type_name -> otg.PatternFlowRSVPPathLabelRequestWithoutLabelRangeL3pid + 594, // 570: otg.FlowRSVPPathObjectsClassSessionAttribute.c_type:type_name -> otg.FlowRSVPPathObjectsSessionAttributeCType + 84, // 571: otg.FlowRSVPPathObjectsSessionAttributeCType.choice:type_name -> otg.FlowRSVPPathObjectsSessionAttributeCType.Choice.Enum + 595, // 572: otg.FlowRSVPPathObjectsSessionAttributeCType.lsp_tunnel:type_name -> otg.FlowRSVPPathSessionAttributeLspTunnel + 596, // 573: otg.FlowRSVPPathObjectsSessionAttributeCType.lsp_tunnel_ra:type_name -> otg.FlowRSVPPathSessionAttributeLspTunnelRa + 597, // 574: otg.FlowRSVPPathSessionAttributeLspTunnel.flags:type_name -> otg.FlowRSVPLspTunnelFlag + 597, // 575: otg.FlowRSVPPathSessionAttributeLspTunnelRa.flags:type_name -> otg.FlowRSVPLspTunnelFlag + 85, // 576: otg.FlowRSVPLspTunnelFlag.choice:type_name -> otg.FlowRSVPLspTunnelFlag.Choice.Enum + 599, // 577: otg.FlowRSVPPathObjectsClassSenderTemplate.c_type:type_name -> otg.FlowRSVPPathObjectsSenderTemplateCType + 86, // 578: otg.FlowRSVPPathObjectsSenderTemplateCType.choice:type_name -> otg.FlowRSVPPathObjectsSenderTemplateCType.Choice.Enum + 600, // 579: otg.FlowRSVPPathObjectsSenderTemplateCType.lsp_tunnel_ipv4:type_name -> otg.FlowRSVPPathSenderTemplateLspTunnelIpv4 + 1206, // 580: otg.FlowRSVPPathSenderTemplateLspTunnelIpv4.ipv4_tunnel_sender_address:type_name -> otg.PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Ipv4TunnelSenderAddress + 1208, // 581: otg.FlowRSVPPathSenderTemplateLspTunnelIpv4.reserved:type_name -> otg.PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Reserved + 1210, // 582: otg.FlowRSVPPathSenderTemplateLspTunnelIpv4.lsp_id:type_name -> otg.PatternFlowRSVPPathSenderTemplateLspTunnelIpv4LspId + 602, // 583: otg.FlowRSVPPathObjectsClassSenderTspec.c_type:type_name -> otg.FlowRSVPPathObjectsSenderTspecCType + 87, // 584: otg.FlowRSVPPathObjectsSenderTspecCType.choice:type_name -> otg.FlowRSVPPathObjectsSenderTspecCType.Choice.Enum + 603, // 585: otg.FlowRSVPPathObjectsSenderTspecCType.int_serv:type_name -> otg.FlowRSVPPathSenderTspecIntServ + 1212, // 586: otg.FlowRSVPPathSenderTspecIntServ.version:type_name -> otg.PatternFlowRSVPPathSenderTspecIntServVersion + 1214, // 587: otg.FlowRSVPPathSenderTspecIntServ.reserved1:type_name -> otg.PatternFlowRSVPPathSenderTspecIntServReserved1 + 1216, // 588: otg.FlowRSVPPathSenderTspecIntServ.overall_length:type_name -> otg.PatternFlowRSVPPathSenderTspecIntServOverallLength + 1218, // 589: otg.FlowRSVPPathSenderTspecIntServ.service_header:type_name -> otg.PatternFlowRSVPPathSenderTspecIntServServiceHeader + 1220, // 590: otg.FlowRSVPPathSenderTspecIntServ.zero_bit:type_name -> otg.PatternFlowRSVPPathSenderTspecIntServZeroBit + 1222, // 591: otg.FlowRSVPPathSenderTspecIntServ.reserved2:type_name -> otg.PatternFlowRSVPPathSenderTspecIntServReserved2 + 1224, // 592: otg.FlowRSVPPathSenderTspecIntServ.length_of_service_data:type_name -> otg.PatternFlowRSVPPathSenderTspecIntServLengthOfServiceData + 1226, // 593: otg.FlowRSVPPathSenderTspecIntServ.parameter_id_token_bucket_tspec:type_name -> otg.PatternFlowRSVPPathSenderTspecIntServParameterIdTokenBucketTspec + 1228, // 594: otg.FlowRSVPPathSenderTspecIntServ.parameter_127_flag:type_name -> otg.PatternFlowRSVPPathSenderTspecIntServParameter127Flag + 1230, // 595: otg.FlowRSVPPathSenderTspecIntServ.parameter_127_length:type_name -> otg.PatternFlowRSVPPathSenderTspecIntServParameter127Length + 1232, // 596: otg.FlowRSVPPathSenderTspecIntServ.minimum_policed_unit:type_name -> otg.PatternFlowRSVPPathSenderTspecIntServMinimumPolicedUnit + 1234, // 597: otg.FlowRSVPPathSenderTspecIntServ.maximum_packet_size:type_name -> otg.PatternFlowRSVPPathSenderTspecIntServMaximumPacketSize + 605, // 598: otg.FlowRSVPPathObjectsClassRecordRoute.c_type:type_name -> otg.FlowRSVPPathObjectsRecordRouteCType + 88, // 599: otg.FlowRSVPPathObjectsRecordRouteCType.choice:type_name -> otg.FlowRSVPPathObjectsRecordRouteCType.Choice.Enum + 606, // 600: otg.FlowRSVPPathObjectsRecordRouteCType.type_1_route_record:type_name -> otg.FlowRSVPPathRecordRouteType1 + 607, // 601: otg.FlowRSVPPathRecordRouteType1.subobjects:type_name -> otg.FlowRSVPType1RecordRouteSubobjects + 608, // 602: otg.FlowRSVPType1RecordRouteSubobjects.type:type_name -> otg.FlowRSVPPathObjectsRecordRouteSubObjectType + 89, // 603: otg.FlowRSVPPathObjectsRecordRouteSubObjectType.choice:type_name -> otg.FlowRSVPPathObjectsRecordRouteSubObjectType.Choice.Enum + 609, // 604: otg.FlowRSVPPathObjectsRecordRouteSubObjectType.ipv4_address:type_name -> otg.FlowRSVPPathRecordRouteType1Ipv4Address + 611, // 605: otg.FlowRSVPPathObjectsRecordRouteSubObjectType.label:type_name -> otg.FlowRSVPPathRecordRouteType1Label + 612, // 606: otg.FlowRSVPPathRecordRouteType1Ipv4Address.length:type_name -> otg.FlowRSVPRouteRecordLength + 1236, // 607: otg.FlowRSVPPathRecordRouteType1Ipv4Address.ipv4_address:type_name -> otg.PatternFlowRSVPPathRecordRouteType1Ipv4AddressIpv4Address + 1238, // 608: otg.FlowRSVPPathRecordRouteType1Ipv4Address.prefix_length:type_name -> otg.PatternFlowRSVPPathRecordRouteType1Ipv4AddressPrefixLength + 610, // 609: otg.FlowRSVPPathRecordRouteType1Ipv4Address.flags:type_name -> otg.FlowRSVPRecordRouteIPv4Flag + 90, // 610: otg.FlowRSVPRecordRouteIPv4Flag.choice:type_name -> otg.FlowRSVPRecordRouteIPv4Flag.Choice.Enum + 612, // 611: otg.FlowRSVPPathRecordRouteType1Label.length:type_name -> otg.FlowRSVPRouteRecordLength + 1239, // 612: otg.FlowRSVPPathRecordRouteType1Label.flags:type_name -> otg.PatternFlowRSVPPathRecordRouteType1LabelFlags + 1240, // 613: otg.FlowRSVPPathRecordRouteType1Label.c_type:type_name -> otg.PatternFlowRSVPPathRecordRouteType1LabelCType + 91, // 614: otg.FlowRSVPRouteRecordLength.choice:type_name -> otg.FlowRSVPRouteRecordLength.Choice.Enum + 1242, // 615: otg.FlowRSVPPathObjectsCustom.type:type_name -> otg.PatternFlowRSVPPathObjectsCustomType + 614, // 616: otg.FlowRSVPPathObjectsCustom.length:type_name -> otg.FlowRSVPObjectOptionsCustomLength + 92, // 617: otg.FlowRSVPObjectOptionsCustomLength.choice:type_name -> otg.FlowRSVPObjectOptionsCustomLength.Choice.Enum + 93, // 618: otg.FlowSize.choice:type_name -> otg.FlowSize.Choice.Enum + 616, // 619: otg.FlowSize.increment:type_name -> otg.FlowSizeIncrement + 617, // 620: otg.FlowSize.random:type_name -> otg.FlowSizeRandom + 618, // 621: otg.FlowSize.weight_pairs:type_name -> otg.FlowSizeWeightPairs + 94, // 622: otg.FlowSizeWeightPairs.choice:type_name -> otg.FlowSizeWeightPairs.Choice.Enum + 95, // 623: otg.FlowSizeWeightPairs.predefined:type_name -> otg.FlowSizeWeightPairs.Predefined.Enum + 619, // 624: otg.FlowSizeWeightPairs.custom:type_name -> otg.FlowSizeWeightPairsCustom + 96, // 625: otg.FlowRate.choice:type_name -> otg.FlowRate.Choice.Enum + 97, // 626: otg.FlowDuration.choice:type_name -> otg.FlowDuration.Choice.Enum + 624, // 627: otg.FlowDuration.fixed_packets:type_name -> otg.FlowFixedPackets + 625, // 628: otg.FlowDuration.fixed_seconds:type_name -> otg.FlowFixedSeconds + 626, // 629: otg.FlowDuration.burst:type_name -> otg.FlowBurst + 622, // 630: otg.FlowDuration.continuous:type_name -> otg.FlowContinuous + 623, // 631: otg.FlowContinuous.delay:type_name -> otg.FlowDelay + 98, // 632: otg.FlowDelay.choice:type_name -> otg.FlowDelay.Choice.Enum + 623, // 633: otg.FlowFixedPackets.delay:type_name -> otg.FlowDelay + 623, // 634: otg.FlowFixedSeconds.delay:type_name -> otg.FlowDelay + 627, // 635: otg.FlowBurst.inter_burst_gap:type_name -> otg.FlowDurationInterBurstGap + 99, // 636: otg.FlowDurationInterBurstGap.choice:type_name -> otg.FlowDurationInterBurstGap.Choice.Enum + 631, // 637: otg.FlowMetrics.rx_tx_ratio:type_name -> otg.FlowRxTxRatio + 629, // 638: otg.FlowMetrics.latency:type_name -> otg.FlowLatencyMetrics + 630, // 639: otg.FlowMetrics.predefined_metric_tags:type_name -> otg.FlowPredefinedTags + 100, // 640: otg.FlowLatencyMetrics.mode:type_name -> otg.FlowLatencyMetrics.Mode.Enum + 101, // 641: otg.FlowRxTxRatio.choice:type_name -> otg.FlowRxTxRatio.Choice.Enum + 632, // 642: otg.FlowRxTxRatio.rx_count:type_name -> otg.FlowRxTxRatioRxCount + 635, // 643: otg.Event.link:type_name -> otg.EventLink + 634, // 644: otg.Event.rx_rate_threshold:type_name -> otg.EventRxRateThreshold + 636, // 645: otg.Event.route_advertise_withdraw:type_name -> otg.EventRouteAdvertiseWithdraw + 102, // 646: otg.EventRequest.type:type_name -> otg.EventRequest.Type.Enum + 637, // 647: otg.EventSubscription.events:type_name -> otg.EventRequest + 640, // 648: otg.Lldp.connection:type_name -> otg.LldpConnection + 641, // 649: otg.Lldp.chassis_id:type_name -> otg.LldpChassisId + 642, // 650: otg.Lldp.port_id:type_name -> otg.LldpPortId + 645, // 651: otg.Lldp.system_name:type_name -> otg.LldpSystemName + 103, // 652: otg.LldpConnection.choice:type_name -> otg.LldpConnection.Choice.Enum + 104, // 653: otg.LldpChassisId.choice:type_name -> otg.LldpChassisId.Choice.Enum + 643, // 654: otg.LldpChassisId.mac_address_subtype:type_name -> otg.LldpChassisMacSubType + 105, // 655: otg.LldpPortId.choice:type_name -> otg.LldpPortId.Choice.Enum + 644, // 656: otg.LldpPortId.interface_name_subtype:type_name -> otg.LldpPortInterfaceNameSubType + 106, // 657: otg.LldpChassisMacSubType.choice:type_name -> otg.LldpChassisMacSubType.Choice.Enum + 107, // 658: otg.LldpPortInterfaceNameSubType.choice:type_name -> otg.LldpPortInterfaceNameSubType.Choice.Enum + 108, // 659: otg.LldpSystemName.choice:type_name -> otg.LldpSystemName.Choice.Enum + 109, // 660: otg.Error.kind:type_name -> otg.Error.Kind.Enum + 110, // 661: otg.ConfigUpdate.choice:type_name -> otg.ConfigUpdate.Choice.Enum + 649, // 662: otg.ConfigUpdate.flows:type_name -> otg.FlowsUpdate + 111, // 663: otg.FlowsUpdate.property_names:type_name -> otg.FlowsUpdate.PropertyNames.Enum + 534, // 664: otg.FlowsUpdate.flows:type_name -> otg.Flow + 112, // 665: otg.ControlState.choice:type_name -> otg.ControlState.Choice.Enum + 651, // 666: otg.ControlState.port:type_name -> otg.StatePort + 653, // 667: otg.ControlState.protocol:type_name -> otg.StateProtocol + 652, // 668: otg.ControlState.traffic:type_name -> otg.StateTraffic + 113, // 669: otg.StatePort.choice:type_name -> otg.StatePort.Choice.Enum + 654, // 670: otg.StatePort.link:type_name -> otg.StatePortLink + 655, // 671: otg.StatePort.capture:type_name -> otg.StatePortCapture + 114, // 672: otg.StateTraffic.choice:type_name -> otg.StateTraffic.Choice.Enum + 656, // 673: otg.StateTraffic.flow_transmit:type_name -> otg.StateTrafficFlowTransmit + 115, // 674: otg.StateProtocol.choice:type_name -> otg.StateProtocol.Choice.Enum + 657, // 675: otg.StateProtocol.all:type_name -> otg.StateProtocolAll + 658, // 676: otg.StateProtocol.route:type_name -> otg.StateProtocolRoute + 659, // 677: otg.StateProtocol.lacp:type_name -> otg.StateProtocolLacp + 662, // 678: otg.StateProtocol.bgp:type_name -> otg.StateProtocolBgp + 664, // 679: otg.StateProtocol.isis:type_name -> otg.StateProtocolIsis + 116, // 680: otg.StatePortLink.state:type_name -> otg.StatePortLink.State.Enum + 117, // 681: otg.StatePortCapture.state:type_name -> otg.StatePortCapture.State.Enum + 118, // 682: otg.StateTrafficFlowTransmit.state:type_name -> otg.StateTrafficFlowTransmit.State.Enum + 119, // 683: otg.StateProtocolAll.state:type_name -> otg.StateProtocolAll.State.Enum + 120, // 684: otg.StateProtocolRoute.state:type_name -> otg.StateProtocolRoute.State.Enum + 121, // 685: otg.StateProtocolLacp.choice:type_name -> otg.StateProtocolLacp.Choice.Enum + 660, // 686: otg.StateProtocolLacp.admin:type_name -> otg.StateProtocolLacpAdmin + 661, // 687: otg.StateProtocolLacp.member_ports:type_name -> otg.StateProtocolLacpMemberPorts + 122, // 688: otg.StateProtocolLacpAdmin.state:type_name -> otg.StateProtocolLacpAdmin.State.Enum + 123, // 689: otg.StateProtocolLacpMemberPorts.state:type_name -> otg.StateProtocolLacpMemberPorts.State.Enum + 124, // 690: otg.StateProtocolBgp.choice:type_name -> otg.StateProtocolBgp.Choice.Enum + 663, // 691: otg.StateProtocolBgp.peers:type_name -> otg.StateProtocolBgpPeers + 125, // 692: otg.StateProtocolBgpPeers.state:type_name -> otg.StateProtocolBgpPeers.State.Enum + 126, // 693: otg.StateProtocolIsis.choice:type_name -> otg.StateProtocolIsis.Choice.Enum + 665, // 694: otg.StateProtocolIsis.routers:type_name -> otg.StateProtocolIsisRouters + 127, // 695: otg.StateProtocolIsisRouters.state:type_name -> otg.StateProtocolIsisRouters.State.Enum + 128, // 696: otg.ControlAction.choice:type_name -> otg.ControlAction.Choice.Enum + 669, // 697: otg.ControlAction.protocol:type_name -> otg.ActionProtocol + 668, // 698: otg.ControlActionResponse.response:type_name -> otg.ActionResponse + 129, // 699: otg.ActionResponse.choice:type_name -> otg.ActionResponse.Choice.Enum + 670, // 700: otg.ActionResponse.protocol:type_name -> otg.ActionResponseProtocol + 130, // 701: otg.ActionProtocol.choice:type_name -> otg.ActionProtocol.Choice.Enum + 671, // 702: otg.ActionProtocol.ipv4:type_name -> otg.ActionProtocolIpv4 + 677, // 703: otg.ActionProtocol.ipv6:type_name -> otg.ActionProtocolIpv6 + 683, // 704: otg.ActionProtocol.bgp:type_name -> otg.ActionProtocolBgp + 131, // 705: otg.ActionResponseProtocol.choice:type_name -> otg.ActionResponseProtocol.Choice.Enum + 672, // 706: otg.ActionResponseProtocol.ipv4:type_name -> otg.ActionResponseProtocolIpv4 + 678, // 707: otg.ActionResponseProtocol.ipv6:type_name -> otg.ActionResponseProtocolIpv6 + 132, // 708: otg.ActionProtocolIpv4.choice:type_name -> otg.ActionProtocolIpv4.Choice.Enum + 673, // 709: otg.ActionProtocolIpv4.ping:type_name -> otg.ActionProtocolIpv4Ping + 133, // 710: otg.ActionResponseProtocolIpv4.choice:type_name -> otg.ActionResponseProtocolIpv4.Choice.Enum + 675, // 711: otg.ActionResponseProtocolIpv4.ping:type_name -> otg.ActionResponseProtocolIpv4Ping + 674, // 712: otg.ActionProtocolIpv4Ping.requests:type_name -> otg.ActionProtocolIpv4PingRequest + 676, // 713: otg.ActionResponseProtocolIpv4Ping.responses:type_name -> otg.ActionResponseProtocolIpv4PingResponse + 134, // 714: otg.ActionResponseProtocolIpv4PingResponse.result:type_name -> otg.ActionResponseProtocolIpv4PingResponse.Result.Enum + 135, // 715: otg.ActionProtocolIpv6.choice:type_name -> otg.ActionProtocolIpv6.Choice.Enum + 679, // 716: otg.ActionProtocolIpv6.ping:type_name -> otg.ActionProtocolIpv6Ping + 136, // 717: otg.ActionResponseProtocolIpv6.choice:type_name -> otg.ActionResponseProtocolIpv6.Choice.Enum + 681, // 718: otg.ActionResponseProtocolIpv6.ping:type_name -> otg.ActionResponseProtocolIpv6Ping + 680, // 719: otg.ActionProtocolIpv6Ping.requests:type_name -> otg.ActionProtocolIpv6PingRequest + 682, // 720: otg.ActionResponseProtocolIpv6Ping.responses:type_name -> otg.ActionResponseProtocolIpv6PingResponse + 137, // 721: otg.ActionResponseProtocolIpv6PingResponse.result:type_name -> otg.ActionResponseProtocolIpv6PingResponse.Result.Enum + 138, // 722: otg.ActionProtocolBgp.choice:type_name -> otg.ActionProtocolBgp.Choice.Enum + 684, // 723: otg.ActionProtocolBgp.notification:type_name -> otg.ActionProtocolBgpNotification + 685, // 724: otg.ActionProtocolBgp.initiate_graceful_restart:type_name -> otg.ActionProtocolBgpInitiateGracefulRestart + 139, // 725: otg.ActionProtocolBgpNotification.choice:type_name -> otg.ActionProtocolBgpNotification.Choice.Enum + 436, // 726: otg.ActionProtocolBgpNotification.cease:type_name -> otg.DeviceBgpCeaseError + 431, // 727: otg.ActionProtocolBgpNotification.message_header_error:type_name -> otg.DeviceBgpMessageHeaderError + 432, // 728: otg.ActionProtocolBgpNotification.open_message_error:type_name -> otg.DeviceBgpOpenMessageError + 433, // 729: otg.ActionProtocolBgpNotification.update_message_error:type_name -> otg.DeviceBgpUpdateMessageError + 434, // 730: otg.ActionProtocolBgpNotification.hold_timer_expired:type_name -> otg.DeviceBgpHoldTimerExpired + 435, // 731: otg.ActionProtocolBgpNotification.finite_state_machine_error:type_name -> otg.DeviceBgpFiniteStateMachineError + 437, // 732: otg.ActionProtocolBgpNotification.custom:type_name -> otg.DeviceBgpCustomError + 140, // 733: otg.MetricsRequest.choice:type_name -> otg.MetricsRequest.Choice.Enum + 688, // 734: otg.MetricsRequest.port:type_name -> otg.PortMetricsRequest + 690, // 735: otg.MetricsRequest.flow:type_name -> otg.FlowMetricsRequest + 699, // 736: otg.MetricsRequest.bgpv4:type_name -> otg.Bgpv4MetricsRequest + 701, // 737: otg.MetricsRequest.bgpv6:type_name -> otg.Bgpv6MetricsRequest + 703, // 738: otg.MetricsRequest.isis:type_name -> otg.IsisMetricsRequest + 705, // 739: otg.MetricsRequest.lag:type_name -> otg.LagMetricsRequest + 707, // 740: otg.MetricsRequest.lacp:type_name -> otg.LacpMetricsRequest + 709, // 741: otg.MetricsRequest.lldp:type_name -> otg.LldpMetricsRequest + 711, // 742: otg.MetricsRequest.rsvp:type_name -> otg.RsvpMetricsRequest + 141, // 743: otg.MetricsResponse.choice:type_name -> otg.MetricsResponse.Choice.Enum + 689, // 744: otg.MetricsResponse.port_metrics:type_name -> otg.PortMetric + 693, // 745: otg.MetricsResponse.flow_metrics:type_name -> otg.FlowMetric + 700, // 746: otg.MetricsResponse.bgpv4_metrics:type_name -> otg.Bgpv4Metric + 702, // 747: otg.MetricsResponse.bgpv6_metrics:type_name -> otg.Bgpv6Metric + 704, // 748: otg.MetricsResponse.isis_metrics:type_name -> otg.IsisMetric + 706, // 749: otg.MetricsResponse.lag_metrics:type_name -> otg.LagMetric + 708, // 750: otg.MetricsResponse.lacp_metrics:type_name -> otg.LacpMetric + 710, // 751: otg.MetricsResponse.lldp_metrics:type_name -> otg.LldpMetric + 712, // 752: otg.MetricsResponse.rsvp_metrics:type_name -> otg.RsvpMetric + 142, // 753: otg.PortMetricsRequest.column_names:type_name -> otg.PortMetricsRequest.ColumnNames.Enum + 143, // 754: otg.PortMetric.link:type_name -> otg.PortMetric.Link.Enum + 144, // 755: otg.PortMetric.capture:type_name -> otg.PortMetric.Capture.Enum + 145, // 756: otg.PortMetric.transmit:type_name -> otg.PortMetric.Transmit.Enum + 146, // 757: otg.FlowMetricsRequest.metric_names:type_name -> otg.FlowMetricsRequest.MetricNames.Enum + 691, // 758: otg.FlowMetricsRequest.tagged_metrics:type_name -> otg.FlowTaggedMetricsFilter + 147, // 759: otg.FlowTaggedMetricsFilter.metric_names:type_name -> otg.FlowTaggedMetricsFilter.MetricNames.Enum + 692, // 760: otg.FlowTaggedMetricsFilter.filters:type_name -> otg.FlowMetricTagFilter + 148, // 761: otg.FlowMetric.transmit:type_name -> otg.FlowMetric.Transmit.Enum + 697, // 762: otg.FlowMetric.timestamps:type_name -> otg.MetricTimestamp + 698, // 763: otg.FlowMetric.latency:type_name -> otg.MetricLatency + 694, // 764: otg.FlowMetric.tagged_metrics:type_name -> otg.FlowTaggedMetric + 695, // 765: otg.FlowTaggedMetric.tags:type_name -> otg.FlowMetricTag + 697, // 766: otg.FlowTaggedMetric.timestamps:type_name -> otg.MetricTimestamp + 698, // 767: otg.FlowTaggedMetric.latency:type_name -> otg.MetricLatency + 696, // 768: otg.FlowMetricTag.value:type_name -> otg.FlowMetricTagValue + 149, // 769: otg.FlowMetricTagValue.choice:type_name -> otg.FlowMetricTagValue.Choice.Enum + 150, // 770: otg.Bgpv4MetricsRequest.column_names:type_name -> otg.Bgpv4MetricsRequest.ColumnNames.Enum + 151, // 771: otg.Bgpv4Metric.session_state:type_name -> otg.Bgpv4Metric.SessionState.Enum + 152, // 772: otg.Bgpv4Metric.fsm_state:type_name -> otg.Bgpv4Metric.FsmState.Enum + 153, // 773: otg.Bgpv6MetricsRequest.column_names:type_name -> otg.Bgpv6MetricsRequest.ColumnNames.Enum + 154, // 774: otg.Bgpv6Metric.session_state:type_name -> otg.Bgpv6Metric.SessionState.Enum + 155, // 775: otg.Bgpv6Metric.fsm_state:type_name -> otg.Bgpv6Metric.FsmState.Enum + 156, // 776: otg.IsisMetricsRequest.column_names:type_name -> otg.IsisMetricsRequest.ColumnNames.Enum + 157, // 777: otg.LagMetricsRequest.column_names:type_name -> otg.LagMetricsRequest.ColumnNames.Enum + 158, // 778: otg.LagMetric.oper_status:type_name -> otg.LagMetric.OperStatus.Enum + 159, // 779: otg.LacpMetricsRequest.column_names:type_name -> otg.LacpMetricsRequest.ColumnNames.Enum + 160, // 780: otg.LacpMetric.activity:type_name -> otg.LacpMetric.Activity.Enum + 161, // 781: otg.LacpMetric.timeout:type_name -> otg.LacpMetric.Timeout.Enum + 162, // 782: otg.LacpMetric.synchronization:type_name -> otg.LacpMetric.Synchronization.Enum + 163, // 783: otg.LldpMetricsRequest.column_names:type_name -> otg.LldpMetricsRequest.ColumnNames.Enum + 164, // 784: otg.RsvpMetricsRequest.column_names:type_name -> otg.RsvpMetricsRequest.ColumnNames.Enum + 165, // 785: otg.StatesRequest.choice:type_name -> otg.StatesRequest.Choice.Enum + 715, // 786: otg.StatesRequest.ipv4_neighbors:type_name -> otg.Neighborsv4StatesRequest + 717, // 787: otg.StatesRequest.ipv6_neighbors:type_name -> otg.Neighborsv6StatesRequest + 719, // 788: otg.StatesRequest.bgp_prefixes:type_name -> otg.BgpPrefixStateRequest + 728, // 789: otg.StatesRequest.isis_lsps:type_name -> otg.IsisLspsStateRequest + 745, // 790: otg.StatesRequest.lldp_neighbors:type_name -> otg.LldpNeighborsStateRequest + 749, // 791: otg.StatesRequest.rsvp_lsps:type_name -> otg.RsvpLspsStateRequest + 166, // 792: otg.StatesResponse.choice:type_name -> otg.StatesResponse.Choice.Enum + 716, // 793: otg.StatesResponse.ipv4_neighbors:type_name -> otg.Neighborsv4State + 718, // 794: otg.StatesResponse.ipv6_neighbors:type_name -> otg.Neighborsv6State + 722, // 795: otg.StatesResponse.bgp_prefixes:type_name -> otg.BgpPrefixesState + 729, // 796: otg.StatesResponse.isis_lsps:type_name -> otg.IsisLspsState + 746, // 797: otg.StatesResponse.lldp_neighbors:type_name -> otg.LldpNeighborsState + 750, // 798: otg.StatesResponse.rsvp_lsps:type_name -> otg.RsvpLspsState + 167, // 799: otg.BgpPrefixStateRequest.prefix_filters:type_name -> otg.BgpPrefixStateRequest.PrefixFilters.Enum + 720, // 800: otg.BgpPrefixStateRequest.ipv4_unicast_filters:type_name -> otg.BgpPrefixIpv4UnicastFilter + 721, // 801: otg.BgpPrefixStateRequest.ipv6_unicast_filters:type_name -> otg.BgpPrefixIpv6UnicastFilter + 168, // 802: otg.BgpPrefixIpv4UnicastFilter.origin:type_name -> otg.BgpPrefixIpv4UnicastFilter.Origin.Enum + 169, // 803: otg.BgpPrefixIpv6UnicastFilter.origin:type_name -> otg.BgpPrefixIpv6UnicastFilter.Origin.Enum + 723, // 804: otg.BgpPrefixesState.ipv4_unicast_prefixes:type_name -> otg.BgpPrefixIpv4UnicastState + 724, // 805: otg.BgpPrefixesState.ipv6_unicast_prefixes:type_name -> otg.BgpPrefixIpv6UnicastState + 170, // 806: otg.BgpPrefixIpv4UnicastState.origin:type_name -> otg.BgpPrefixIpv4UnicastState.Origin.Enum + 725, // 807: otg.BgpPrefixIpv4UnicastState.communities:type_name -> otg.ResultBgpCommunity + 726, // 808: otg.BgpPrefixIpv4UnicastState.as_path:type_name -> otg.ResultBgpAsPath + 171, // 809: otg.BgpPrefixIpv6UnicastState.origin:type_name -> otg.BgpPrefixIpv6UnicastState.Origin.Enum + 725, // 810: otg.BgpPrefixIpv6UnicastState.communities:type_name -> otg.ResultBgpCommunity + 726, // 811: otg.BgpPrefixIpv6UnicastState.as_path:type_name -> otg.ResultBgpAsPath + 172, // 812: otg.ResultBgpCommunity.type:type_name -> otg.ResultBgpCommunity.Type.Enum + 727, // 813: otg.ResultBgpAsPath.segments:type_name -> otg.ResultBgpAsPathSegment + 173, // 814: otg.ResultBgpAsPathSegment.type:type_name -> otg.ResultBgpAsPathSegment.Type.Enum + 730, // 815: otg.IsisLspsState.lsps:type_name -> otg.IsisLspState + 174, // 816: otg.IsisLspState.pdu_type:type_name -> otg.IsisLspState.PduType.Enum + 733, // 817: otg.IsisLspState.flags:type_name -> otg.IsisLspFlags + 731, // 818: otg.IsisLspState.tlvs:type_name -> otg.IsisLspTlvs + 732, // 819: otg.IsisLspTlvs.hostname_tlvs:type_name -> otg.IsisLspHostname + 734, // 820: otg.IsisLspTlvs.is_reachability_tlvs:type_name -> otg.IsisLspIsReachabilityTlv + 735, // 821: otg.IsisLspTlvs.extended_is_reachability_tlvs:type_name -> otg.IsisLspExtendedIsReachabilityTlv + 737, // 822: otg.IsisLspTlvs.ipv4_internal_reachability_tlvs:type_name -> otg.IsisLspIpv4InternalReachabilityTlv + 738, // 823: otg.IsisLspTlvs.ipv4_external_reachability_tlvs:type_name -> otg.IsisLspIpv4ExternalReachabilityTlv + 740, // 824: otg.IsisLspTlvs.extended_ipv4_reachability_tlvs:type_name -> otg.IsisLspExtendedIpv4ReachabilityTlv + 742, // 825: otg.IsisLspTlvs.ipv6_reachability_tlvs:type_name -> otg.IsisLspIpv6ReachabilityTlv + 736, // 826: otg.IsisLspIsReachabilityTlv.neighbors:type_name -> otg.IsisLspneighbor + 736, // 827: otg.IsisLspExtendedIsReachabilityTlv.neighbors:type_name -> otg.IsisLspneighbor + 739, // 828: otg.IsisLspIpv4InternalReachabilityTlv.prefixes:type_name -> otg.IsisLspV4Prefix + 739, // 829: otg.IsisLspIpv4ExternalReachabilityTlv.prefixes:type_name -> otg.IsisLspV4Prefix + 175, // 830: otg.IsisLspV4Prefix.redistribution_type:type_name -> otg.IsisLspV4Prefix.RedistributionType.Enum + 176, // 831: otg.IsisLspV4Prefix.origin_type:type_name -> otg.IsisLspV4Prefix.OriginType.Enum + 741, // 832: otg.IsisLspExtendedIpv4ReachabilityTlv.prefixes:type_name -> otg.IsisLspExtendedV4Prefix + 177, // 833: otg.IsisLspExtendedV4Prefix.redistribution_type:type_name -> otg.IsisLspExtendedV4Prefix.RedistributionType.Enum + 744, // 834: otg.IsisLspExtendedV4Prefix.prefix_attributes:type_name -> otg.IsisLspPrefixAttributes + 743, // 835: otg.IsisLspIpv6ReachabilityTlv.prefixes:type_name -> otg.IsisLspV6Prefix + 178, // 836: otg.IsisLspV6Prefix.redistribution_type:type_name -> otg.IsisLspV6Prefix.RedistributionType.Enum + 179, // 837: otg.IsisLspV6Prefix.origin_type:type_name -> otg.IsisLspV6Prefix.OriginType.Enum + 744, // 838: otg.IsisLspV6Prefix.prefix_attributes:type_name -> otg.IsisLspPrefixAttributes + 180, // 839: otg.LldpNeighborsState.chassis_id_type:type_name -> otg.LldpNeighborsState.ChassisIdType.Enum + 181, // 840: otg.LldpNeighborsState.port_id_type:type_name -> otg.LldpNeighborsState.PortIdType.Enum + 747, // 841: otg.LldpNeighborsState.custom_tlvs:type_name -> otg.LldpCustomTLVState + 748, // 842: otg.LldpNeighborsState.capabilities:type_name -> otg.LldpCapabilityState + 182, // 843: otg.LldpCapabilityState.capability_name:type_name -> otg.LldpCapabilityState.CapabilityName.Enum + 751, // 844: otg.RsvpLspsState.ipv4_lsps:type_name -> otg.RsvpIPv4LspState + 752, // 845: otg.RsvpIPv4LspState.lsp:type_name -> otg.RsvpLspState + 753, // 846: otg.RsvpIPv4LspState.rros:type_name -> otg.RsvpLspIpv4Rro + 754, // 847: otg.RsvpIPv4LspState.eros:type_name -> otg.RsvpLspIpv4Ero + 183, // 848: otg.RsvpLspState.session_status:type_name -> otg.RsvpLspState.SessionStatus.Enum + 184, // 849: otg.RsvpLspState.last_flap_reason:type_name -> otg.RsvpLspState.LastFlapReason.Enum + 185, // 850: otg.RsvpLspIpv4Ero.type:type_name -> otg.RsvpLspIpv4Ero.Type.Enum + 186, // 851: otg.PatternFlowEthernetDst.choice:type_name -> otg.PatternFlowEthernetDst.Choice.Enum + 756, // 852: otg.PatternFlowEthernetDst.increment:type_name -> otg.PatternFlowEthernetDstCounter + 756, // 853: otg.PatternFlowEthernetDst.decrement:type_name -> otg.PatternFlowEthernetDstCounter + 757, // 854: otg.PatternFlowEthernetDst.metric_tags:type_name -> otg.PatternFlowEthernetDstMetricTag + 187, // 855: otg.PatternFlowEthernetSrc.choice:type_name -> otg.PatternFlowEthernetSrc.Choice.Enum + 759, // 856: otg.PatternFlowEthernetSrc.increment:type_name -> otg.PatternFlowEthernetSrcCounter + 759, // 857: otg.PatternFlowEthernetSrc.decrement:type_name -> otg.PatternFlowEthernetSrcCounter + 760, // 858: otg.PatternFlowEthernetSrc.metric_tags:type_name -> otg.PatternFlowEthernetSrcMetricTag + 188, // 859: otg.PatternFlowEthernetEtherType.choice:type_name -> otg.PatternFlowEthernetEtherType.Choice.Enum + 762, // 860: otg.PatternFlowEthernetEtherType.increment:type_name -> otg.PatternFlowEthernetEtherTypeCounter + 762, // 861: otg.PatternFlowEthernetEtherType.decrement:type_name -> otg.PatternFlowEthernetEtherTypeCounter + 763, // 862: otg.PatternFlowEthernetEtherType.metric_tags:type_name -> otg.PatternFlowEthernetEtherTypeMetricTag + 189, // 863: otg.PatternFlowEthernetPfcQueue.choice:type_name -> otg.PatternFlowEthernetPfcQueue.Choice.Enum + 765, // 864: otg.PatternFlowEthernetPfcQueue.increment:type_name -> otg.PatternFlowEthernetPfcQueueCounter + 765, // 865: otg.PatternFlowEthernetPfcQueue.decrement:type_name -> otg.PatternFlowEthernetPfcQueueCounter + 766, // 866: otg.PatternFlowEthernetPfcQueue.metric_tags:type_name -> otg.PatternFlowEthernetPfcQueueMetricTag + 190, // 867: otg.PatternFlowVlanPriority.choice:type_name -> otg.PatternFlowVlanPriority.Choice.Enum + 768, // 868: otg.PatternFlowVlanPriority.increment:type_name -> otg.PatternFlowVlanPriorityCounter + 768, // 869: otg.PatternFlowVlanPriority.decrement:type_name -> otg.PatternFlowVlanPriorityCounter + 769, // 870: otg.PatternFlowVlanPriority.metric_tags:type_name -> otg.PatternFlowVlanPriorityMetricTag + 191, // 871: otg.PatternFlowVlanCfi.choice:type_name -> otg.PatternFlowVlanCfi.Choice.Enum + 771, // 872: otg.PatternFlowVlanCfi.increment:type_name -> otg.PatternFlowVlanCfiCounter + 771, // 873: otg.PatternFlowVlanCfi.decrement:type_name -> otg.PatternFlowVlanCfiCounter + 772, // 874: otg.PatternFlowVlanCfi.metric_tags:type_name -> otg.PatternFlowVlanCfiMetricTag + 192, // 875: otg.PatternFlowVlanId.choice:type_name -> otg.PatternFlowVlanId.Choice.Enum + 774, // 876: otg.PatternFlowVlanId.increment:type_name -> otg.PatternFlowVlanIdCounter + 774, // 877: otg.PatternFlowVlanId.decrement:type_name -> otg.PatternFlowVlanIdCounter + 775, // 878: otg.PatternFlowVlanId.metric_tags:type_name -> otg.PatternFlowVlanIdMetricTag + 193, // 879: otg.PatternFlowVlanTpid.choice:type_name -> otg.PatternFlowVlanTpid.Choice.Enum + 777, // 880: otg.PatternFlowVlanTpid.increment:type_name -> otg.PatternFlowVlanTpidCounter + 777, // 881: otg.PatternFlowVlanTpid.decrement:type_name -> otg.PatternFlowVlanTpidCounter + 778, // 882: otg.PatternFlowVlanTpid.metric_tags:type_name -> otg.PatternFlowVlanTpidMetricTag + 194, // 883: otg.PatternFlowVxlanFlags.choice:type_name -> otg.PatternFlowVxlanFlags.Choice.Enum + 780, // 884: otg.PatternFlowVxlanFlags.increment:type_name -> otg.PatternFlowVxlanFlagsCounter + 780, // 885: otg.PatternFlowVxlanFlags.decrement:type_name -> otg.PatternFlowVxlanFlagsCounter + 781, // 886: otg.PatternFlowVxlanFlags.metric_tags:type_name -> otg.PatternFlowVxlanFlagsMetricTag + 195, // 887: otg.PatternFlowVxlanReserved0.choice:type_name -> otg.PatternFlowVxlanReserved0.Choice.Enum + 783, // 888: otg.PatternFlowVxlanReserved0.increment:type_name -> otg.PatternFlowVxlanReserved0Counter + 783, // 889: otg.PatternFlowVxlanReserved0.decrement:type_name -> otg.PatternFlowVxlanReserved0Counter + 784, // 890: otg.PatternFlowVxlanReserved0.metric_tags:type_name -> otg.PatternFlowVxlanReserved0MetricTag + 196, // 891: otg.PatternFlowVxlanVni.choice:type_name -> otg.PatternFlowVxlanVni.Choice.Enum + 786, // 892: otg.PatternFlowVxlanVni.increment:type_name -> otg.PatternFlowVxlanVniCounter + 786, // 893: otg.PatternFlowVxlanVni.decrement:type_name -> otg.PatternFlowVxlanVniCounter + 787, // 894: otg.PatternFlowVxlanVni.metric_tags:type_name -> otg.PatternFlowVxlanVniMetricTag + 197, // 895: otg.PatternFlowVxlanReserved1.choice:type_name -> otg.PatternFlowVxlanReserved1.Choice.Enum + 789, // 896: otg.PatternFlowVxlanReserved1.increment:type_name -> otg.PatternFlowVxlanReserved1Counter + 789, // 897: otg.PatternFlowVxlanReserved1.decrement:type_name -> otg.PatternFlowVxlanReserved1Counter + 790, // 898: otg.PatternFlowVxlanReserved1.metric_tags:type_name -> otg.PatternFlowVxlanReserved1MetricTag + 198, // 899: otg.PatternFlowIpv4Version.choice:type_name -> otg.PatternFlowIpv4Version.Choice.Enum + 792, // 900: otg.PatternFlowIpv4Version.increment:type_name -> otg.PatternFlowIpv4VersionCounter + 792, // 901: otg.PatternFlowIpv4Version.decrement:type_name -> otg.PatternFlowIpv4VersionCounter + 793, // 902: otg.PatternFlowIpv4Version.metric_tags:type_name -> otg.PatternFlowIpv4VersionMetricTag + 199, // 903: otg.PatternFlowIpv4HeaderLength.choice:type_name -> otg.PatternFlowIpv4HeaderLength.Choice.Enum + 795, // 904: otg.PatternFlowIpv4HeaderLength.increment:type_name -> otg.PatternFlowIpv4HeaderLengthCounter + 795, // 905: otg.PatternFlowIpv4HeaderLength.decrement:type_name -> otg.PatternFlowIpv4HeaderLengthCounter + 796, // 906: otg.PatternFlowIpv4HeaderLength.metric_tags:type_name -> otg.PatternFlowIpv4HeaderLengthMetricTag + 200, // 907: otg.PatternFlowIpv4TotalLength.choice:type_name -> otg.PatternFlowIpv4TotalLength.Choice.Enum + 798, // 908: otg.PatternFlowIpv4TotalLength.increment:type_name -> otg.PatternFlowIpv4TotalLengthCounter + 798, // 909: otg.PatternFlowIpv4TotalLength.decrement:type_name -> otg.PatternFlowIpv4TotalLengthCounter + 799, // 910: otg.PatternFlowIpv4TotalLength.metric_tags:type_name -> otg.PatternFlowIpv4TotalLengthMetricTag + 201, // 911: otg.PatternFlowIpv4Identification.choice:type_name -> otg.PatternFlowIpv4Identification.Choice.Enum + 801, // 912: otg.PatternFlowIpv4Identification.increment:type_name -> otg.PatternFlowIpv4IdentificationCounter + 801, // 913: otg.PatternFlowIpv4Identification.decrement:type_name -> otg.PatternFlowIpv4IdentificationCounter + 802, // 914: otg.PatternFlowIpv4Identification.metric_tags:type_name -> otg.PatternFlowIpv4IdentificationMetricTag + 202, // 915: otg.PatternFlowIpv4Reserved.choice:type_name -> otg.PatternFlowIpv4Reserved.Choice.Enum + 804, // 916: otg.PatternFlowIpv4Reserved.increment:type_name -> otg.PatternFlowIpv4ReservedCounter + 804, // 917: otg.PatternFlowIpv4Reserved.decrement:type_name -> otg.PatternFlowIpv4ReservedCounter + 805, // 918: otg.PatternFlowIpv4Reserved.metric_tags:type_name -> otg.PatternFlowIpv4ReservedMetricTag + 203, // 919: otg.PatternFlowIpv4DontFragment.choice:type_name -> otg.PatternFlowIpv4DontFragment.Choice.Enum + 807, // 920: otg.PatternFlowIpv4DontFragment.increment:type_name -> otg.PatternFlowIpv4DontFragmentCounter + 807, // 921: otg.PatternFlowIpv4DontFragment.decrement:type_name -> otg.PatternFlowIpv4DontFragmentCounter + 808, // 922: otg.PatternFlowIpv4DontFragment.metric_tags:type_name -> otg.PatternFlowIpv4DontFragmentMetricTag + 204, // 923: otg.PatternFlowIpv4MoreFragments.choice:type_name -> otg.PatternFlowIpv4MoreFragments.Choice.Enum + 810, // 924: otg.PatternFlowIpv4MoreFragments.increment:type_name -> otg.PatternFlowIpv4MoreFragmentsCounter + 810, // 925: otg.PatternFlowIpv4MoreFragments.decrement:type_name -> otg.PatternFlowIpv4MoreFragmentsCounter + 811, // 926: otg.PatternFlowIpv4MoreFragments.metric_tags:type_name -> otg.PatternFlowIpv4MoreFragmentsMetricTag + 205, // 927: otg.PatternFlowIpv4FragmentOffset.choice:type_name -> otg.PatternFlowIpv4FragmentOffset.Choice.Enum + 813, // 928: otg.PatternFlowIpv4FragmentOffset.increment:type_name -> otg.PatternFlowIpv4FragmentOffsetCounter + 813, // 929: otg.PatternFlowIpv4FragmentOffset.decrement:type_name -> otg.PatternFlowIpv4FragmentOffsetCounter + 814, // 930: otg.PatternFlowIpv4FragmentOffset.metric_tags:type_name -> otg.PatternFlowIpv4FragmentOffsetMetricTag + 206, // 931: otg.PatternFlowIpv4TimeToLive.choice:type_name -> otg.PatternFlowIpv4TimeToLive.Choice.Enum + 816, // 932: otg.PatternFlowIpv4TimeToLive.increment:type_name -> otg.PatternFlowIpv4TimeToLiveCounter + 816, // 933: otg.PatternFlowIpv4TimeToLive.decrement:type_name -> otg.PatternFlowIpv4TimeToLiveCounter + 817, // 934: otg.PatternFlowIpv4TimeToLive.metric_tags:type_name -> otg.PatternFlowIpv4TimeToLiveMetricTag + 207, // 935: otg.PatternFlowIpv4Protocol.choice:type_name -> otg.PatternFlowIpv4Protocol.Choice.Enum + 819, // 936: otg.PatternFlowIpv4Protocol.increment:type_name -> otg.PatternFlowIpv4ProtocolCounter + 819, // 937: otg.PatternFlowIpv4Protocol.decrement:type_name -> otg.PatternFlowIpv4ProtocolCounter + 820, // 938: otg.PatternFlowIpv4Protocol.metric_tags:type_name -> otg.PatternFlowIpv4ProtocolMetricTag + 208, // 939: otg.PatternFlowIpv4HeaderChecksum.choice:type_name -> otg.PatternFlowIpv4HeaderChecksum.Choice.Enum + 209, // 940: otg.PatternFlowIpv4HeaderChecksum.generated:type_name -> otg.PatternFlowIpv4HeaderChecksum.Generated.Enum + 210, // 941: otg.PatternFlowIpv4Src.choice:type_name -> otg.PatternFlowIpv4Src.Choice.Enum + 823, // 942: otg.PatternFlowIpv4Src.increment:type_name -> otg.PatternFlowIpv4SrcCounter + 823, // 943: otg.PatternFlowIpv4Src.decrement:type_name -> otg.PatternFlowIpv4SrcCounter + 824, // 944: otg.PatternFlowIpv4Src.metric_tags:type_name -> otg.PatternFlowIpv4SrcMetricTag + 211, // 945: otg.PatternFlowIpv4Dst.choice:type_name -> otg.PatternFlowIpv4Dst.Choice.Enum + 826, // 946: otg.PatternFlowIpv4Dst.increment:type_name -> otg.PatternFlowIpv4DstCounter + 826, // 947: otg.PatternFlowIpv4Dst.decrement:type_name -> otg.PatternFlowIpv4DstCounter + 827, // 948: otg.PatternFlowIpv4Dst.metric_tags:type_name -> otg.PatternFlowIpv4DstMetricTag + 212, // 949: otg.PatternFlowIpv4PriorityRaw.choice:type_name -> otg.PatternFlowIpv4PriorityRaw.Choice.Enum + 829, // 950: otg.PatternFlowIpv4PriorityRaw.increment:type_name -> otg.PatternFlowIpv4PriorityRawCounter + 829, // 951: otg.PatternFlowIpv4PriorityRaw.decrement:type_name -> otg.PatternFlowIpv4PriorityRawCounter + 830, // 952: otg.PatternFlowIpv4PriorityRaw.metric_tags:type_name -> otg.PatternFlowIpv4PriorityRawMetricTag + 213, // 953: otg.PatternFlowIpv4DscpPhb.choice:type_name -> otg.PatternFlowIpv4DscpPhb.Choice.Enum + 832, // 954: otg.PatternFlowIpv4DscpPhb.increment:type_name -> otg.PatternFlowIpv4DscpPhbCounter + 832, // 955: otg.PatternFlowIpv4DscpPhb.decrement:type_name -> otg.PatternFlowIpv4DscpPhbCounter + 833, // 956: otg.PatternFlowIpv4DscpPhb.metric_tags:type_name -> otg.PatternFlowIpv4DscpPhbMetricTag + 214, // 957: otg.PatternFlowIpv4DscpEcn.choice:type_name -> otg.PatternFlowIpv4DscpEcn.Choice.Enum + 835, // 958: otg.PatternFlowIpv4DscpEcn.increment:type_name -> otg.PatternFlowIpv4DscpEcnCounter + 835, // 959: otg.PatternFlowIpv4DscpEcn.decrement:type_name -> otg.PatternFlowIpv4DscpEcnCounter + 836, // 960: otg.PatternFlowIpv4DscpEcn.metric_tags:type_name -> otg.PatternFlowIpv4DscpEcnMetricTag + 215, // 961: otg.PatternFlowIpv4TosPrecedence.choice:type_name -> otg.PatternFlowIpv4TosPrecedence.Choice.Enum + 838, // 962: otg.PatternFlowIpv4TosPrecedence.increment:type_name -> otg.PatternFlowIpv4TosPrecedenceCounter + 838, // 963: otg.PatternFlowIpv4TosPrecedence.decrement:type_name -> otg.PatternFlowIpv4TosPrecedenceCounter + 839, // 964: otg.PatternFlowIpv4TosPrecedence.metric_tags:type_name -> otg.PatternFlowIpv4TosPrecedenceMetricTag + 216, // 965: otg.PatternFlowIpv4TosDelay.choice:type_name -> otg.PatternFlowIpv4TosDelay.Choice.Enum + 841, // 966: otg.PatternFlowIpv4TosDelay.increment:type_name -> otg.PatternFlowIpv4TosDelayCounter + 841, // 967: otg.PatternFlowIpv4TosDelay.decrement:type_name -> otg.PatternFlowIpv4TosDelayCounter + 842, // 968: otg.PatternFlowIpv4TosDelay.metric_tags:type_name -> otg.PatternFlowIpv4TosDelayMetricTag + 217, // 969: otg.PatternFlowIpv4TosThroughput.choice:type_name -> otg.PatternFlowIpv4TosThroughput.Choice.Enum + 844, // 970: otg.PatternFlowIpv4TosThroughput.increment:type_name -> otg.PatternFlowIpv4TosThroughputCounter + 844, // 971: otg.PatternFlowIpv4TosThroughput.decrement:type_name -> otg.PatternFlowIpv4TosThroughputCounter + 845, // 972: otg.PatternFlowIpv4TosThroughput.metric_tags:type_name -> otg.PatternFlowIpv4TosThroughputMetricTag + 218, // 973: otg.PatternFlowIpv4TosReliability.choice:type_name -> otg.PatternFlowIpv4TosReliability.Choice.Enum + 847, // 974: otg.PatternFlowIpv4TosReliability.increment:type_name -> otg.PatternFlowIpv4TosReliabilityCounter + 847, // 975: otg.PatternFlowIpv4TosReliability.decrement:type_name -> otg.PatternFlowIpv4TosReliabilityCounter + 848, // 976: otg.PatternFlowIpv4TosReliability.metric_tags:type_name -> otg.PatternFlowIpv4TosReliabilityMetricTag + 219, // 977: otg.PatternFlowIpv4TosMonetary.choice:type_name -> otg.PatternFlowIpv4TosMonetary.Choice.Enum + 850, // 978: otg.PatternFlowIpv4TosMonetary.increment:type_name -> otg.PatternFlowIpv4TosMonetaryCounter + 850, // 979: otg.PatternFlowIpv4TosMonetary.decrement:type_name -> otg.PatternFlowIpv4TosMonetaryCounter + 851, // 980: otg.PatternFlowIpv4TosMonetary.metric_tags:type_name -> otg.PatternFlowIpv4TosMonetaryMetricTag + 220, // 981: otg.PatternFlowIpv4TosUnused.choice:type_name -> otg.PatternFlowIpv4TosUnused.Choice.Enum + 853, // 982: otg.PatternFlowIpv4TosUnused.increment:type_name -> otg.PatternFlowIpv4TosUnusedCounter + 853, // 983: otg.PatternFlowIpv4TosUnused.decrement:type_name -> otg.PatternFlowIpv4TosUnusedCounter + 854, // 984: otg.PatternFlowIpv4TosUnused.metric_tags:type_name -> otg.PatternFlowIpv4TosUnusedMetricTag + 221, // 985: otg.PatternFlowIpv6Version.choice:type_name -> otg.PatternFlowIpv6Version.Choice.Enum + 856, // 986: otg.PatternFlowIpv6Version.increment:type_name -> otg.PatternFlowIpv6VersionCounter + 856, // 987: otg.PatternFlowIpv6Version.decrement:type_name -> otg.PatternFlowIpv6VersionCounter + 857, // 988: otg.PatternFlowIpv6Version.metric_tags:type_name -> otg.PatternFlowIpv6VersionMetricTag + 222, // 989: otg.PatternFlowIpv6TrafficClass.choice:type_name -> otg.PatternFlowIpv6TrafficClass.Choice.Enum + 859, // 990: otg.PatternFlowIpv6TrafficClass.increment:type_name -> otg.PatternFlowIpv6TrafficClassCounter + 859, // 991: otg.PatternFlowIpv6TrafficClass.decrement:type_name -> otg.PatternFlowIpv6TrafficClassCounter + 860, // 992: otg.PatternFlowIpv6TrafficClass.metric_tags:type_name -> otg.PatternFlowIpv6TrafficClassMetricTag + 223, // 993: otg.PatternFlowIpv6FlowLabel.choice:type_name -> otg.PatternFlowIpv6FlowLabel.Choice.Enum + 862, // 994: otg.PatternFlowIpv6FlowLabel.increment:type_name -> otg.PatternFlowIpv6FlowLabelCounter + 862, // 995: otg.PatternFlowIpv6FlowLabel.decrement:type_name -> otg.PatternFlowIpv6FlowLabelCounter + 863, // 996: otg.PatternFlowIpv6FlowLabel.metric_tags:type_name -> otg.PatternFlowIpv6FlowLabelMetricTag + 224, // 997: otg.PatternFlowIpv6PayloadLength.choice:type_name -> otg.PatternFlowIpv6PayloadLength.Choice.Enum + 865, // 998: otg.PatternFlowIpv6PayloadLength.increment:type_name -> otg.PatternFlowIpv6PayloadLengthCounter + 865, // 999: otg.PatternFlowIpv6PayloadLength.decrement:type_name -> otg.PatternFlowIpv6PayloadLengthCounter + 866, // 1000: otg.PatternFlowIpv6PayloadLength.metric_tags:type_name -> otg.PatternFlowIpv6PayloadLengthMetricTag + 225, // 1001: otg.PatternFlowIpv6NextHeader.choice:type_name -> otg.PatternFlowIpv6NextHeader.Choice.Enum + 868, // 1002: otg.PatternFlowIpv6NextHeader.increment:type_name -> otg.PatternFlowIpv6NextHeaderCounter + 868, // 1003: otg.PatternFlowIpv6NextHeader.decrement:type_name -> otg.PatternFlowIpv6NextHeaderCounter + 869, // 1004: otg.PatternFlowIpv6NextHeader.metric_tags:type_name -> otg.PatternFlowIpv6NextHeaderMetricTag + 226, // 1005: otg.PatternFlowIpv6HopLimit.choice:type_name -> otg.PatternFlowIpv6HopLimit.Choice.Enum + 871, // 1006: otg.PatternFlowIpv6HopLimit.increment:type_name -> otg.PatternFlowIpv6HopLimitCounter + 871, // 1007: otg.PatternFlowIpv6HopLimit.decrement:type_name -> otg.PatternFlowIpv6HopLimitCounter + 872, // 1008: otg.PatternFlowIpv6HopLimit.metric_tags:type_name -> otg.PatternFlowIpv6HopLimitMetricTag + 227, // 1009: otg.PatternFlowIpv6Src.choice:type_name -> otg.PatternFlowIpv6Src.Choice.Enum + 874, // 1010: otg.PatternFlowIpv6Src.increment:type_name -> otg.PatternFlowIpv6SrcCounter + 874, // 1011: otg.PatternFlowIpv6Src.decrement:type_name -> otg.PatternFlowIpv6SrcCounter + 875, // 1012: otg.PatternFlowIpv6Src.metric_tags:type_name -> otg.PatternFlowIpv6SrcMetricTag + 228, // 1013: otg.PatternFlowIpv6Dst.choice:type_name -> otg.PatternFlowIpv6Dst.Choice.Enum + 877, // 1014: otg.PatternFlowIpv6Dst.increment:type_name -> otg.PatternFlowIpv6DstCounter + 877, // 1015: otg.PatternFlowIpv6Dst.decrement:type_name -> otg.PatternFlowIpv6DstCounter + 878, // 1016: otg.PatternFlowIpv6Dst.metric_tags:type_name -> otg.PatternFlowIpv6DstMetricTag + 229, // 1017: otg.PatternFlowPfcPauseDst.choice:type_name -> otg.PatternFlowPfcPauseDst.Choice.Enum + 880, // 1018: otg.PatternFlowPfcPauseDst.increment:type_name -> otg.PatternFlowPfcPauseDstCounter + 880, // 1019: otg.PatternFlowPfcPauseDst.decrement:type_name -> otg.PatternFlowPfcPauseDstCounter + 881, // 1020: otg.PatternFlowPfcPauseDst.metric_tags:type_name -> otg.PatternFlowPfcPauseDstMetricTag + 230, // 1021: otg.PatternFlowPfcPauseSrc.choice:type_name -> otg.PatternFlowPfcPauseSrc.Choice.Enum + 883, // 1022: otg.PatternFlowPfcPauseSrc.increment:type_name -> otg.PatternFlowPfcPauseSrcCounter + 883, // 1023: otg.PatternFlowPfcPauseSrc.decrement:type_name -> otg.PatternFlowPfcPauseSrcCounter + 884, // 1024: otg.PatternFlowPfcPauseSrc.metric_tags:type_name -> otg.PatternFlowPfcPauseSrcMetricTag + 231, // 1025: otg.PatternFlowPfcPauseEtherType.choice:type_name -> otg.PatternFlowPfcPauseEtherType.Choice.Enum + 886, // 1026: otg.PatternFlowPfcPauseEtherType.increment:type_name -> otg.PatternFlowPfcPauseEtherTypeCounter + 886, // 1027: otg.PatternFlowPfcPauseEtherType.decrement:type_name -> otg.PatternFlowPfcPauseEtherTypeCounter + 887, // 1028: otg.PatternFlowPfcPauseEtherType.metric_tags:type_name -> otg.PatternFlowPfcPauseEtherTypeMetricTag + 232, // 1029: otg.PatternFlowPfcPauseControlOpCode.choice:type_name -> otg.PatternFlowPfcPauseControlOpCode.Choice.Enum + 889, // 1030: otg.PatternFlowPfcPauseControlOpCode.increment:type_name -> otg.PatternFlowPfcPauseControlOpCodeCounter + 889, // 1031: otg.PatternFlowPfcPauseControlOpCode.decrement:type_name -> otg.PatternFlowPfcPauseControlOpCodeCounter + 890, // 1032: otg.PatternFlowPfcPauseControlOpCode.metric_tags:type_name -> otg.PatternFlowPfcPauseControlOpCodeMetricTag + 233, // 1033: otg.PatternFlowPfcPauseClassEnableVector.choice:type_name -> otg.PatternFlowPfcPauseClassEnableVector.Choice.Enum + 892, // 1034: otg.PatternFlowPfcPauseClassEnableVector.increment:type_name -> otg.PatternFlowPfcPauseClassEnableVectorCounter + 892, // 1035: otg.PatternFlowPfcPauseClassEnableVector.decrement:type_name -> otg.PatternFlowPfcPauseClassEnableVectorCounter + 893, // 1036: otg.PatternFlowPfcPauseClassEnableVector.metric_tags:type_name -> otg.PatternFlowPfcPauseClassEnableVectorMetricTag + 234, // 1037: otg.PatternFlowPfcPausePauseClass0.choice:type_name -> otg.PatternFlowPfcPausePauseClass0.Choice.Enum + 895, // 1038: otg.PatternFlowPfcPausePauseClass0.increment:type_name -> otg.PatternFlowPfcPausePauseClass0Counter + 895, // 1039: otg.PatternFlowPfcPausePauseClass0.decrement:type_name -> otg.PatternFlowPfcPausePauseClass0Counter + 896, // 1040: otg.PatternFlowPfcPausePauseClass0.metric_tags:type_name -> otg.PatternFlowPfcPausePauseClass0MetricTag + 235, // 1041: otg.PatternFlowPfcPausePauseClass1.choice:type_name -> otg.PatternFlowPfcPausePauseClass1.Choice.Enum + 898, // 1042: otg.PatternFlowPfcPausePauseClass1.increment:type_name -> otg.PatternFlowPfcPausePauseClass1Counter + 898, // 1043: otg.PatternFlowPfcPausePauseClass1.decrement:type_name -> otg.PatternFlowPfcPausePauseClass1Counter + 899, // 1044: otg.PatternFlowPfcPausePauseClass1.metric_tags:type_name -> otg.PatternFlowPfcPausePauseClass1MetricTag + 236, // 1045: otg.PatternFlowPfcPausePauseClass2.choice:type_name -> otg.PatternFlowPfcPausePauseClass2.Choice.Enum + 901, // 1046: otg.PatternFlowPfcPausePauseClass2.increment:type_name -> otg.PatternFlowPfcPausePauseClass2Counter + 901, // 1047: otg.PatternFlowPfcPausePauseClass2.decrement:type_name -> otg.PatternFlowPfcPausePauseClass2Counter + 902, // 1048: otg.PatternFlowPfcPausePauseClass2.metric_tags:type_name -> otg.PatternFlowPfcPausePauseClass2MetricTag + 237, // 1049: otg.PatternFlowPfcPausePauseClass3.choice:type_name -> otg.PatternFlowPfcPausePauseClass3.Choice.Enum + 904, // 1050: otg.PatternFlowPfcPausePauseClass3.increment:type_name -> otg.PatternFlowPfcPausePauseClass3Counter + 904, // 1051: otg.PatternFlowPfcPausePauseClass3.decrement:type_name -> otg.PatternFlowPfcPausePauseClass3Counter + 905, // 1052: otg.PatternFlowPfcPausePauseClass3.metric_tags:type_name -> otg.PatternFlowPfcPausePauseClass3MetricTag + 238, // 1053: otg.PatternFlowPfcPausePauseClass4.choice:type_name -> otg.PatternFlowPfcPausePauseClass4.Choice.Enum + 907, // 1054: otg.PatternFlowPfcPausePauseClass4.increment:type_name -> otg.PatternFlowPfcPausePauseClass4Counter + 907, // 1055: otg.PatternFlowPfcPausePauseClass4.decrement:type_name -> otg.PatternFlowPfcPausePauseClass4Counter + 908, // 1056: otg.PatternFlowPfcPausePauseClass4.metric_tags:type_name -> otg.PatternFlowPfcPausePauseClass4MetricTag + 239, // 1057: otg.PatternFlowPfcPausePauseClass5.choice:type_name -> otg.PatternFlowPfcPausePauseClass5.Choice.Enum + 910, // 1058: otg.PatternFlowPfcPausePauseClass5.increment:type_name -> otg.PatternFlowPfcPausePauseClass5Counter + 910, // 1059: otg.PatternFlowPfcPausePauseClass5.decrement:type_name -> otg.PatternFlowPfcPausePauseClass5Counter + 911, // 1060: otg.PatternFlowPfcPausePauseClass5.metric_tags:type_name -> otg.PatternFlowPfcPausePauseClass5MetricTag + 240, // 1061: otg.PatternFlowPfcPausePauseClass6.choice:type_name -> otg.PatternFlowPfcPausePauseClass6.Choice.Enum + 913, // 1062: otg.PatternFlowPfcPausePauseClass6.increment:type_name -> otg.PatternFlowPfcPausePauseClass6Counter + 913, // 1063: otg.PatternFlowPfcPausePauseClass6.decrement:type_name -> otg.PatternFlowPfcPausePauseClass6Counter + 914, // 1064: otg.PatternFlowPfcPausePauseClass6.metric_tags:type_name -> otg.PatternFlowPfcPausePauseClass6MetricTag + 241, // 1065: otg.PatternFlowPfcPausePauseClass7.choice:type_name -> otg.PatternFlowPfcPausePauseClass7.Choice.Enum + 916, // 1066: otg.PatternFlowPfcPausePauseClass7.increment:type_name -> otg.PatternFlowPfcPausePauseClass7Counter + 916, // 1067: otg.PatternFlowPfcPausePauseClass7.decrement:type_name -> otg.PatternFlowPfcPausePauseClass7Counter + 917, // 1068: otg.PatternFlowPfcPausePauseClass7.metric_tags:type_name -> otg.PatternFlowPfcPausePauseClass7MetricTag + 242, // 1069: otg.PatternFlowEthernetPauseDst.choice:type_name -> otg.PatternFlowEthernetPauseDst.Choice.Enum + 919, // 1070: otg.PatternFlowEthernetPauseDst.increment:type_name -> otg.PatternFlowEthernetPauseDstCounter + 919, // 1071: otg.PatternFlowEthernetPauseDst.decrement:type_name -> otg.PatternFlowEthernetPauseDstCounter + 920, // 1072: otg.PatternFlowEthernetPauseDst.metric_tags:type_name -> otg.PatternFlowEthernetPauseDstMetricTag + 243, // 1073: otg.PatternFlowEthernetPauseSrc.choice:type_name -> otg.PatternFlowEthernetPauseSrc.Choice.Enum + 922, // 1074: otg.PatternFlowEthernetPauseSrc.increment:type_name -> otg.PatternFlowEthernetPauseSrcCounter + 922, // 1075: otg.PatternFlowEthernetPauseSrc.decrement:type_name -> otg.PatternFlowEthernetPauseSrcCounter + 923, // 1076: otg.PatternFlowEthernetPauseSrc.metric_tags:type_name -> otg.PatternFlowEthernetPauseSrcMetricTag + 244, // 1077: otg.PatternFlowEthernetPauseEtherType.choice:type_name -> otg.PatternFlowEthernetPauseEtherType.Choice.Enum + 925, // 1078: otg.PatternFlowEthernetPauseEtherType.increment:type_name -> otg.PatternFlowEthernetPauseEtherTypeCounter + 925, // 1079: otg.PatternFlowEthernetPauseEtherType.decrement:type_name -> otg.PatternFlowEthernetPauseEtherTypeCounter + 926, // 1080: otg.PatternFlowEthernetPauseEtherType.metric_tags:type_name -> otg.PatternFlowEthernetPauseEtherTypeMetricTag + 245, // 1081: otg.PatternFlowEthernetPauseControlOpCode.choice:type_name -> otg.PatternFlowEthernetPauseControlOpCode.Choice.Enum + 928, // 1082: otg.PatternFlowEthernetPauseControlOpCode.increment:type_name -> otg.PatternFlowEthernetPauseControlOpCodeCounter + 928, // 1083: otg.PatternFlowEthernetPauseControlOpCode.decrement:type_name -> otg.PatternFlowEthernetPauseControlOpCodeCounter + 929, // 1084: otg.PatternFlowEthernetPauseControlOpCode.metric_tags:type_name -> otg.PatternFlowEthernetPauseControlOpCodeMetricTag + 246, // 1085: otg.PatternFlowEthernetPauseTime.choice:type_name -> otg.PatternFlowEthernetPauseTime.Choice.Enum + 931, // 1086: otg.PatternFlowEthernetPauseTime.increment:type_name -> otg.PatternFlowEthernetPauseTimeCounter + 931, // 1087: otg.PatternFlowEthernetPauseTime.decrement:type_name -> otg.PatternFlowEthernetPauseTimeCounter + 932, // 1088: otg.PatternFlowEthernetPauseTime.metric_tags:type_name -> otg.PatternFlowEthernetPauseTimeMetricTag + 247, // 1089: otg.PatternFlowTcpSrcPort.choice:type_name -> otg.PatternFlowTcpSrcPort.Choice.Enum + 934, // 1090: otg.PatternFlowTcpSrcPort.increment:type_name -> otg.PatternFlowTcpSrcPortCounter + 934, // 1091: otg.PatternFlowTcpSrcPort.decrement:type_name -> otg.PatternFlowTcpSrcPortCounter + 935, // 1092: otg.PatternFlowTcpSrcPort.metric_tags:type_name -> otg.PatternFlowTcpSrcPortMetricTag + 248, // 1093: otg.PatternFlowTcpDstPort.choice:type_name -> otg.PatternFlowTcpDstPort.Choice.Enum + 937, // 1094: otg.PatternFlowTcpDstPort.increment:type_name -> otg.PatternFlowTcpDstPortCounter + 937, // 1095: otg.PatternFlowTcpDstPort.decrement:type_name -> otg.PatternFlowTcpDstPortCounter + 938, // 1096: otg.PatternFlowTcpDstPort.metric_tags:type_name -> otg.PatternFlowTcpDstPortMetricTag + 249, // 1097: otg.PatternFlowTcpSeqNum.choice:type_name -> otg.PatternFlowTcpSeqNum.Choice.Enum + 940, // 1098: otg.PatternFlowTcpSeqNum.increment:type_name -> otg.PatternFlowTcpSeqNumCounter + 940, // 1099: otg.PatternFlowTcpSeqNum.decrement:type_name -> otg.PatternFlowTcpSeqNumCounter + 941, // 1100: otg.PatternFlowTcpSeqNum.metric_tags:type_name -> otg.PatternFlowTcpSeqNumMetricTag + 250, // 1101: otg.PatternFlowTcpAckNum.choice:type_name -> otg.PatternFlowTcpAckNum.Choice.Enum + 943, // 1102: otg.PatternFlowTcpAckNum.increment:type_name -> otg.PatternFlowTcpAckNumCounter + 943, // 1103: otg.PatternFlowTcpAckNum.decrement:type_name -> otg.PatternFlowTcpAckNumCounter + 944, // 1104: otg.PatternFlowTcpAckNum.metric_tags:type_name -> otg.PatternFlowTcpAckNumMetricTag + 251, // 1105: otg.PatternFlowTcpDataOffset.choice:type_name -> otg.PatternFlowTcpDataOffset.Choice.Enum + 946, // 1106: otg.PatternFlowTcpDataOffset.increment:type_name -> otg.PatternFlowTcpDataOffsetCounter + 946, // 1107: otg.PatternFlowTcpDataOffset.decrement:type_name -> otg.PatternFlowTcpDataOffsetCounter + 947, // 1108: otg.PatternFlowTcpDataOffset.metric_tags:type_name -> otg.PatternFlowTcpDataOffsetMetricTag + 252, // 1109: otg.PatternFlowTcpEcnNs.choice:type_name -> otg.PatternFlowTcpEcnNs.Choice.Enum + 949, // 1110: otg.PatternFlowTcpEcnNs.increment:type_name -> otg.PatternFlowTcpEcnNsCounter + 949, // 1111: otg.PatternFlowTcpEcnNs.decrement:type_name -> otg.PatternFlowTcpEcnNsCounter + 950, // 1112: otg.PatternFlowTcpEcnNs.metric_tags:type_name -> otg.PatternFlowTcpEcnNsMetricTag + 253, // 1113: otg.PatternFlowTcpEcnCwr.choice:type_name -> otg.PatternFlowTcpEcnCwr.Choice.Enum + 952, // 1114: otg.PatternFlowTcpEcnCwr.increment:type_name -> otg.PatternFlowTcpEcnCwrCounter + 952, // 1115: otg.PatternFlowTcpEcnCwr.decrement:type_name -> otg.PatternFlowTcpEcnCwrCounter + 953, // 1116: otg.PatternFlowTcpEcnCwr.metric_tags:type_name -> otg.PatternFlowTcpEcnCwrMetricTag + 254, // 1117: otg.PatternFlowTcpEcnEcho.choice:type_name -> otg.PatternFlowTcpEcnEcho.Choice.Enum + 955, // 1118: otg.PatternFlowTcpEcnEcho.increment:type_name -> otg.PatternFlowTcpEcnEchoCounter + 955, // 1119: otg.PatternFlowTcpEcnEcho.decrement:type_name -> otg.PatternFlowTcpEcnEchoCounter + 956, // 1120: otg.PatternFlowTcpEcnEcho.metric_tags:type_name -> otg.PatternFlowTcpEcnEchoMetricTag + 255, // 1121: otg.PatternFlowTcpCtlUrg.choice:type_name -> otg.PatternFlowTcpCtlUrg.Choice.Enum + 958, // 1122: otg.PatternFlowTcpCtlUrg.increment:type_name -> otg.PatternFlowTcpCtlUrgCounter + 958, // 1123: otg.PatternFlowTcpCtlUrg.decrement:type_name -> otg.PatternFlowTcpCtlUrgCounter + 959, // 1124: otg.PatternFlowTcpCtlUrg.metric_tags:type_name -> otg.PatternFlowTcpCtlUrgMetricTag + 256, // 1125: otg.PatternFlowTcpCtlAck.choice:type_name -> otg.PatternFlowTcpCtlAck.Choice.Enum + 961, // 1126: otg.PatternFlowTcpCtlAck.increment:type_name -> otg.PatternFlowTcpCtlAckCounter + 961, // 1127: otg.PatternFlowTcpCtlAck.decrement:type_name -> otg.PatternFlowTcpCtlAckCounter + 962, // 1128: otg.PatternFlowTcpCtlAck.metric_tags:type_name -> otg.PatternFlowTcpCtlAckMetricTag + 257, // 1129: otg.PatternFlowTcpCtlPsh.choice:type_name -> otg.PatternFlowTcpCtlPsh.Choice.Enum + 964, // 1130: otg.PatternFlowTcpCtlPsh.increment:type_name -> otg.PatternFlowTcpCtlPshCounter + 964, // 1131: otg.PatternFlowTcpCtlPsh.decrement:type_name -> otg.PatternFlowTcpCtlPshCounter + 965, // 1132: otg.PatternFlowTcpCtlPsh.metric_tags:type_name -> otg.PatternFlowTcpCtlPshMetricTag + 258, // 1133: otg.PatternFlowTcpCtlRst.choice:type_name -> otg.PatternFlowTcpCtlRst.Choice.Enum + 967, // 1134: otg.PatternFlowTcpCtlRst.increment:type_name -> otg.PatternFlowTcpCtlRstCounter + 967, // 1135: otg.PatternFlowTcpCtlRst.decrement:type_name -> otg.PatternFlowTcpCtlRstCounter + 968, // 1136: otg.PatternFlowTcpCtlRst.metric_tags:type_name -> otg.PatternFlowTcpCtlRstMetricTag + 259, // 1137: otg.PatternFlowTcpCtlSyn.choice:type_name -> otg.PatternFlowTcpCtlSyn.Choice.Enum + 970, // 1138: otg.PatternFlowTcpCtlSyn.increment:type_name -> otg.PatternFlowTcpCtlSynCounter + 970, // 1139: otg.PatternFlowTcpCtlSyn.decrement:type_name -> otg.PatternFlowTcpCtlSynCounter + 971, // 1140: otg.PatternFlowTcpCtlSyn.metric_tags:type_name -> otg.PatternFlowTcpCtlSynMetricTag + 260, // 1141: otg.PatternFlowTcpCtlFin.choice:type_name -> otg.PatternFlowTcpCtlFin.Choice.Enum + 973, // 1142: otg.PatternFlowTcpCtlFin.increment:type_name -> otg.PatternFlowTcpCtlFinCounter + 973, // 1143: otg.PatternFlowTcpCtlFin.decrement:type_name -> otg.PatternFlowTcpCtlFinCounter + 974, // 1144: otg.PatternFlowTcpCtlFin.metric_tags:type_name -> otg.PatternFlowTcpCtlFinMetricTag + 261, // 1145: otg.PatternFlowTcpWindow.choice:type_name -> otg.PatternFlowTcpWindow.Choice.Enum + 976, // 1146: otg.PatternFlowTcpWindow.increment:type_name -> otg.PatternFlowTcpWindowCounter + 976, // 1147: otg.PatternFlowTcpWindow.decrement:type_name -> otg.PatternFlowTcpWindowCounter + 977, // 1148: otg.PatternFlowTcpWindow.metric_tags:type_name -> otg.PatternFlowTcpWindowMetricTag + 262, // 1149: otg.PatternFlowUdpSrcPort.choice:type_name -> otg.PatternFlowUdpSrcPort.Choice.Enum + 979, // 1150: otg.PatternFlowUdpSrcPort.increment:type_name -> otg.PatternFlowUdpSrcPortCounter + 979, // 1151: otg.PatternFlowUdpSrcPort.decrement:type_name -> otg.PatternFlowUdpSrcPortCounter + 980, // 1152: otg.PatternFlowUdpSrcPort.metric_tags:type_name -> otg.PatternFlowUdpSrcPortMetricTag + 263, // 1153: otg.PatternFlowUdpDstPort.choice:type_name -> otg.PatternFlowUdpDstPort.Choice.Enum + 982, // 1154: otg.PatternFlowUdpDstPort.increment:type_name -> otg.PatternFlowUdpDstPortCounter + 982, // 1155: otg.PatternFlowUdpDstPort.decrement:type_name -> otg.PatternFlowUdpDstPortCounter + 983, // 1156: otg.PatternFlowUdpDstPort.metric_tags:type_name -> otg.PatternFlowUdpDstPortMetricTag + 264, // 1157: otg.PatternFlowUdpLength.choice:type_name -> otg.PatternFlowUdpLength.Choice.Enum + 985, // 1158: otg.PatternFlowUdpLength.increment:type_name -> otg.PatternFlowUdpLengthCounter + 985, // 1159: otg.PatternFlowUdpLength.decrement:type_name -> otg.PatternFlowUdpLengthCounter + 986, // 1160: otg.PatternFlowUdpLength.metric_tags:type_name -> otg.PatternFlowUdpLengthMetricTag + 265, // 1161: otg.PatternFlowUdpChecksum.choice:type_name -> otg.PatternFlowUdpChecksum.Choice.Enum + 266, // 1162: otg.PatternFlowUdpChecksum.generated:type_name -> otg.PatternFlowUdpChecksum.Generated.Enum + 267, // 1163: otg.PatternFlowGreChecksumPresent.choice:type_name -> otg.PatternFlowGreChecksumPresent.Choice.Enum + 989, // 1164: otg.PatternFlowGreChecksumPresent.increment:type_name -> otg.PatternFlowGreChecksumPresentCounter + 989, // 1165: otg.PatternFlowGreChecksumPresent.decrement:type_name -> otg.PatternFlowGreChecksumPresentCounter + 990, // 1166: otg.PatternFlowGreChecksumPresent.metric_tags:type_name -> otg.PatternFlowGreChecksumPresentMetricTag + 268, // 1167: otg.PatternFlowGreReserved0.choice:type_name -> otg.PatternFlowGreReserved0.Choice.Enum + 992, // 1168: otg.PatternFlowGreReserved0.increment:type_name -> otg.PatternFlowGreReserved0Counter + 992, // 1169: otg.PatternFlowGreReserved0.decrement:type_name -> otg.PatternFlowGreReserved0Counter + 993, // 1170: otg.PatternFlowGreReserved0.metric_tags:type_name -> otg.PatternFlowGreReserved0MetricTag + 269, // 1171: otg.PatternFlowGreVersion.choice:type_name -> otg.PatternFlowGreVersion.Choice.Enum + 995, // 1172: otg.PatternFlowGreVersion.increment:type_name -> otg.PatternFlowGreVersionCounter + 995, // 1173: otg.PatternFlowGreVersion.decrement:type_name -> otg.PatternFlowGreVersionCounter + 996, // 1174: otg.PatternFlowGreVersion.metric_tags:type_name -> otg.PatternFlowGreVersionMetricTag + 270, // 1175: otg.PatternFlowGreProtocol.choice:type_name -> otg.PatternFlowGreProtocol.Choice.Enum + 998, // 1176: otg.PatternFlowGreProtocol.increment:type_name -> otg.PatternFlowGreProtocolCounter + 998, // 1177: otg.PatternFlowGreProtocol.decrement:type_name -> otg.PatternFlowGreProtocolCounter + 999, // 1178: otg.PatternFlowGreProtocol.metric_tags:type_name -> otg.PatternFlowGreProtocolMetricTag + 271, // 1179: otg.PatternFlowGreChecksum.choice:type_name -> otg.PatternFlowGreChecksum.Choice.Enum + 272, // 1180: otg.PatternFlowGreChecksum.generated:type_name -> otg.PatternFlowGreChecksum.Generated.Enum + 273, // 1181: otg.PatternFlowGreReserved1.choice:type_name -> otg.PatternFlowGreReserved1.Choice.Enum + 1002, // 1182: otg.PatternFlowGreReserved1.increment:type_name -> otg.PatternFlowGreReserved1Counter + 1002, // 1183: otg.PatternFlowGreReserved1.decrement:type_name -> otg.PatternFlowGreReserved1Counter + 1003, // 1184: otg.PatternFlowGreReserved1.metric_tags:type_name -> otg.PatternFlowGreReserved1MetricTag + 274, // 1185: otg.PatternFlowGtpv1Version.choice:type_name -> otg.PatternFlowGtpv1Version.Choice.Enum + 1005, // 1186: otg.PatternFlowGtpv1Version.increment:type_name -> otg.PatternFlowGtpv1VersionCounter + 1005, // 1187: otg.PatternFlowGtpv1Version.decrement:type_name -> otg.PatternFlowGtpv1VersionCounter + 1006, // 1188: otg.PatternFlowGtpv1Version.metric_tags:type_name -> otg.PatternFlowGtpv1VersionMetricTag + 275, // 1189: otg.PatternFlowGtpv1ProtocolType.choice:type_name -> otg.PatternFlowGtpv1ProtocolType.Choice.Enum + 1008, // 1190: otg.PatternFlowGtpv1ProtocolType.increment:type_name -> otg.PatternFlowGtpv1ProtocolTypeCounter + 1008, // 1191: otg.PatternFlowGtpv1ProtocolType.decrement:type_name -> otg.PatternFlowGtpv1ProtocolTypeCounter + 1009, // 1192: otg.PatternFlowGtpv1ProtocolType.metric_tags:type_name -> otg.PatternFlowGtpv1ProtocolTypeMetricTag + 276, // 1193: otg.PatternFlowGtpv1Reserved.choice:type_name -> otg.PatternFlowGtpv1Reserved.Choice.Enum + 1011, // 1194: otg.PatternFlowGtpv1Reserved.increment:type_name -> otg.PatternFlowGtpv1ReservedCounter + 1011, // 1195: otg.PatternFlowGtpv1Reserved.decrement:type_name -> otg.PatternFlowGtpv1ReservedCounter + 1012, // 1196: otg.PatternFlowGtpv1Reserved.metric_tags:type_name -> otg.PatternFlowGtpv1ReservedMetricTag + 277, // 1197: otg.PatternFlowGtpv1EFlag.choice:type_name -> otg.PatternFlowGtpv1EFlag.Choice.Enum + 1014, // 1198: otg.PatternFlowGtpv1EFlag.increment:type_name -> otg.PatternFlowGtpv1EFlagCounter + 1014, // 1199: otg.PatternFlowGtpv1EFlag.decrement:type_name -> otg.PatternFlowGtpv1EFlagCounter + 1015, // 1200: otg.PatternFlowGtpv1EFlag.metric_tags:type_name -> otg.PatternFlowGtpv1EFlagMetricTag + 278, // 1201: otg.PatternFlowGtpv1SFlag.choice:type_name -> otg.PatternFlowGtpv1SFlag.Choice.Enum + 1017, // 1202: otg.PatternFlowGtpv1SFlag.increment:type_name -> otg.PatternFlowGtpv1SFlagCounter + 1017, // 1203: otg.PatternFlowGtpv1SFlag.decrement:type_name -> otg.PatternFlowGtpv1SFlagCounter + 1018, // 1204: otg.PatternFlowGtpv1SFlag.metric_tags:type_name -> otg.PatternFlowGtpv1SFlagMetricTag + 279, // 1205: otg.PatternFlowGtpv1PnFlag.choice:type_name -> otg.PatternFlowGtpv1PnFlag.Choice.Enum + 1020, // 1206: otg.PatternFlowGtpv1PnFlag.increment:type_name -> otg.PatternFlowGtpv1PnFlagCounter + 1020, // 1207: otg.PatternFlowGtpv1PnFlag.decrement:type_name -> otg.PatternFlowGtpv1PnFlagCounter + 1021, // 1208: otg.PatternFlowGtpv1PnFlag.metric_tags:type_name -> otg.PatternFlowGtpv1PnFlagMetricTag + 280, // 1209: otg.PatternFlowGtpv1MessageType.choice:type_name -> otg.PatternFlowGtpv1MessageType.Choice.Enum + 1023, // 1210: otg.PatternFlowGtpv1MessageType.increment:type_name -> otg.PatternFlowGtpv1MessageTypeCounter + 1023, // 1211: otg.PatternFlowGtpv1MessageType.decrement:type_name -> otg.PatternFlowGtpv1MessageTypeCounter + 1024, // 1212: otg.PatternFlowGtpv1MessageType.metric_tags:type_name -> otg.PatternFlowGtpv1MessageTypeMetricTag + 281, // 1213: otg.PatternFlowGtpv1MessageLength.choice:type_name -> otg.PatternFlowGtpv1MessageLength.Choice.Enum + 1026, // 1214: otg.PatternFlowGtpv1MessageLength.increment:type_name -> otg.PatternFlowGtpv1MessageLengthCounter + 1026, // 1215: otg.PatternFlowGtpv1MessageLength.decrement:type_name -> otg.PatternFlowGtpv1MessageLengthCounter + 1027, // 1216: otg.PatternFlowGtpv1MessageLength.metric_tags:type_name -> otg.PatternFlowGtpv1MessageLengthMetricTag + 282, // 1217: otg.PatternFlowGtpv1Teid.choice:type_name -> otg.PatternFlowGtpv1Teid.Choice.Enum + 1029, // 1218: otg.PatternFlowGtpv1Teid.increment:type_name -> otg.PatternFlowGtpv1TeidCounter + 1029, // 1219: otg.PatternFlowGtpv1Teid.decrement:type_name -> otg.PatternFlowGtpv1TeidCounter + 1030, // 1220: otg.PatternFlowGtpv1Teid.metric_tags:type_name -> otg.PatternFlowGtpv1TeidMetricTag + 283, // 1221: otg.PatternFlowGtpv1SquenceNumber.choice:type_name -> otg.PatternFlowGtpv1SquenceNumber.Choice.Enum + 1032, // 1222: otg.PatternFlowGtpv1SquenceNumber.increment:type_name -> otg.PatternFlowGtpv1SquenceNumberCounter + 1032, // 1223: otg.PatternFlowGtpv1SquenceNumber.decrement:type_name -> otg.PatternFlowGtpv1SquenceNumberCounter + 1033, // 1224: otg.PatternFlowGtpv1SquenceNumber.metric_tags:type_name -> otg.PatternFlowGtpv1SquenceNumberMetricTag + 284, // 1225: otg.PatternFlowGtpv1NPduNumber.choice:type_name -> otg.PatternFlowGtpv1NPduNumber.Choice.Enum + 1035, // 1226: otg.PatternFlowGtpv1NPduNumber.increment:type_name -> otg.PatternFlowGtpv1NPduNumberCounter + 1035, // 1227: otg.PatternFlowGtpv1NPduNumber.decrement:type_name -> otg.PatternFlowGtpv1NPduNumberCounter + 1036, // 1228: otg.PatternFlowGtpv1NPduNumber.metric_tags:type_name -> otg.PatternFlowGtpv1NPduNumberMetricTag + 285, // 1229: otg.PatternFlowGtpv1NextExtensionHeaderType.choice:type_name -> otg.PatternFlowGtpv1NextExtensionHeaderType.Choice.Enum + 1038, // 1230: otg.PatternFlowGtpv1NextExtensionHeaderType.increment:type_name -> otg.PatternFlowGtpv1NextExtensionHeaderTypeCounter + 1038, // 1231: otg.PatternFlowGtpv1NextExtensionHeaderType.decrement:type_name -> otg.PatternFlowGtpv1NextExtensionHeaderTypeCounter + 1039, // 1232: otg.PatternFlowGtpv1NextExtensionHeaderType.metric_tags:type_name -> otg.PatternFlowGtpv1NextExtensionHeaderTypeMetricTag + 286, // 1233: otg.PatternFlowGtpExtensionExtensionLength.choice:type_name -> otg.PatternFlowGtpExtensionExtensionLength.Choice.Enum + 1041, // 1234: otg.PatternFlowGtpExtensionExtensionLength.increment:type_name -> otg.PatternFlowGtpExtensionExtensionLengthCounter + 1041, // 1235: otg.PatternFlowGtpExtensionExtensionLength.decrement:type_name -> otg.PatternFlowGtpExtensionExtensionLengthCounter + 1042, // 1236: otg.PatternFlowGtpExtensionExtensionLength.metric_tags:type_name -> otg.PatternFlowGtpExtensionExtensionLengthMetricTag + 287, // 1237: otg.PatternFlowGtpExtensionContents.choice:type_name -> otg.PatternFlowGtpExtensionContents.Choice.Enum + 1044, // 1238: otg.PatternFlowGtpExtensionContents.increment:type_name -> otg.PatternFlowGtpExtensionContentsCounter + 1044, // 1239: otg.PatternFlowGtpExtensionContents.decrement:type_name -> otg.PatternFlowGtpExtensionContentsCounter + 1045, // 1240: otg.PatternFlowGtpExtensionContents.metric_tags:type_name -> otg.PatternFlowGtpExtensionContentsMetricTag + 288, // 1241: otg.PatternFlowGtpExtensionNextExtensionHeader.choice:type_name -> otg.PatternFlowGtpExtensionNextExtensionHeader.Choice.Enum + 1047, // 1242: otg.PatternFlowGtpExtensionNextExtensionHeader.increment:type_name -> otg.PatternFlowGtpExtensionNextExtensionHeaderCounter + 1047, // 1243: otg.PatternFlowGtpExtensionNextExtensionHeader.decrement:type_name -> otg.PatternFlowGtpExtensionNextExtensionHeaderCounter + 1048, // 1244: otg.PatternFlowGtpExtensionNextExtensionHeader.metric_tags:type_name -> otg.PatternFlowGtpExtensionNextExtensionHeaderMetricTag + 289, // 1245: otg.PatternFlowGtpv2Version.choice:type_name -> otg.PatternFlowGtpv2Version.Choice.Enum + 1050, // 1246: otg.PatternFlowGtpv2Version.increment:type_name -> otg.PatternFlowGtpv2VersionCounter + 1050, // 1247: otg.PatternFlowGtpv2Version.decrement:type_name -> otg.PatternFlowGtpv2VersionCounter + 1051, // 1248: otg.PatternFlowGtpv2Version.metric_tags:type_name -> otg.PatternFlowGtpv2VersionMetricTag + 290, // 1249: otg.PatternFlowGtpv2PiggybackingFlag.choice:type_name -> otg.PatternFlowGtpv2PiggybackingFlag.Choice.Enum + 1053, // 1250: otg.PatternFlowGtpv2PiggybackingFlag.increment:type_name -> otg.PatternFlowGtpv2PiggybackingFlagCounter + 1053, // 1251: otg.PatternFlowGtpv2PiggybackingFlag.decrement:type_name -> otg.PatternFlowGtpv2PiggybackingFlagCounter + 1054, // 1252: otg.PatternFlowGtpv2PiggybackingFlag.metric_tags:type_name -> otg.PatternFlowGtpv2PiggybackingFlagMetricTag + 291, // 1253: otg.PatternFlowGtpv2TeidFlag.choice:type_name -> otg.PatternFlowGtpv2TeidFlag.Choice.Enum + 1056, // 1254: otg.PatternFlowGtpv2TeidFlag.increment:type_name -> otg.PatternFlowGtpv2TeidFlagCounter + 1056, // 1255: otg.PatternFlowGtpv2TeidFlag.decrement:type_name -> otg.PatternFlowGtpv2TeidFlagCounter + 1057, // 1256: otg.PatternFlowGtpv2TeidFlag.metric_tags:type_name -> otg.PatternFlowGtpv2TeidFlagMetricTag + 292, // 1257: otg.PatternFlowGtpv2Spare1.choice:type_name -> otg.PatternFlowGtpv2Spare1.Choice.Enum + 1059, // 1258: otg.PatternFlowGtpv2Spare1.increment:type_name -> otg.PatternFlowGtpv2Spare1Counter + 1059, // 1259: otg.PatternFlowGtpv2Spare1.decrement:type_name -> otg.PatternFlowGtpv2Spare1Counter + 1060, // 1260: otg.PatternFlowGtpv2Spare1.metric_tags:type_name -> otg.PatternFlowGtpv2Spare1MetricTag + 293, // 1261: otg.PatternFlowGtpv2MessageType.choice:type_name -> otg.PatternFlowGtpv2MessageType.Choice.Enum + 1062, // 1262: otg.PatternFlowGtpv2MessageType.increment:type_name -> otg.PatternFlowGtpv2MessageTypeCounter + 1062, // 1263: otg.PatternFlowGtpv2MessageType.decrement:type_name -> otg.PatternFlowGtpv2MessageTypeCounter + 1063, // 1264: otg.PatternFlowGtpv2MessageType.metric_tags:type_name -> otg.PatternFlowGtpv2MessageTypeMetricTag + 294, // 1265: otg.PatternFlowGtpv2MessageLength.choice:type_name -> otg.PatternFlowGtpv2MessageLength.Choice.Enum + 1065, // 1266: otg.PatternFlowGtpv2MessageLength.increment:type_name -> otg.PatternFlowGtpv2MessageLengthCounter + 1065, // 1267: otg.PatternFlowGtpv2MessageLength.decrement:type_name -> otg.PatternFlowGtpv2MessageLengthCounter + 1066, // 1268: otg.PatternFlowGtpv2MessageLength.metric_tags:type_name -> otg.PatternFlowGtpv2MessageLengthMetricTag + 295, // 1269: otg.PatternFlowGtpv2Teid.choice:type_name -> otg.PatternFlowGtpv2Teid.Choice.Enum + 1068, // 1270: otg.PatternFlowGtpv2Teid.increment:type_name -> otg.PatternFlowGtpv2TeidCounter + 1068, // 1271: otg.PatternFlowGtpv2Teid.decrement:type_name -> otg.PatternFlowGtpv2TeidCounter + 1069, // 1272: otg.PatternFlowGtpv2Teid.metric_tags:type_name -> otg.PatternFlowGtpv2TeidMetricTag + 296, // 1273: otg.PatternFlowGtpv2SequenceNumber.choice:type_name -> otg.PatternFlowGtpv2SequenceNumber.Choice.Enum + 1071, // 1274: otg.PatternFlowGtpv2SequenceNumber.increment:type_name -> otg.PatternFlowGtpv2SequenceNumberCounter + 1071, // 1275: otg.PatternFlowGtpv2SequenceNumber.decrement:type_name -> otg.PatternFlowGtpv2SequenceNumberCounter + 1072, // 1276: otg.PatternFlowGtpv2SequenceNumber.metric_tags:type_name -> otg.PatternFlowGtpv2SequenceNumberMetricTag + 297, // 1277: otg.PatternFlowGtpv2Spare2.choice:type_name -> otg.PatternFlowGtpv2Spare2.Choice.Enum + 1074, // 1278: otg.PatternFlowGtpv2Spare2.increment:type_name -> otg.PatternFlowGtpv2Spare2Counter + 1074, // 1279: otg.PatternFlowGtpv2Spare2.decrement:type_name -> otg.PatternFlowGtpv2Spare2Counter + 1075, // 1280: otg.PatternFlowGtpv2Spare2.metric_tags:type_name -> otg.PatternFlowGtpv2Spare2MetricTag + 298, // 1281: otg.PatternFlowArpHardwareType.choice:type_name -> otg.PatternFlowArpHardwareType.Choice.Enum + 1077, // 1282: otg.PatternFlowArpHardwareType.increment:type_name -> otg.PatternFlowArpHardwareTypeCounter + 1077, // 1283: otg.PatternFlowArpHardwareType.decrement:type_name -> otg.PatternFlowArpHardwareTypeCounter + 1078, // 1284: otg.PatternFlowArpHardwareType.metric_tags:type_name -> otg.PatternFlowArpHardwareTypeMetricTag + 299, // 1285: otg.PatternFlowArpProtocolType.choice:type_name -> otg.PatternFlowArpProtocolType.Choice.Enum + 1080, // 1286: otg.PatternFlowArpProtocolType.increment:type_name -> otg.PatternFlowArpProtocolTypeCounter + 1080, // 1287: otg.PatternFlowArpProtocolType.decrement:type_name -> otg.PatternFlowArpProtocolTypeCounter + 1081, // 1288: otg.PatternFlowArpProtocolType.metric_tags:type_name -> otg.PatternFlowArpProtocolTypeMetricTag + 300, // 1289: otg.PatternFlowArpHardwareLength.choice:type_name -> otg.PatternFlowArpHardwareLength.Choice.Enum + 1083, // 1290: otg.PatternFlowArpHardwareLength.increment:type_name -> otg.PatternFlowArpHardwareLengthCounter + 1083, // 1291: otg.PatternFlowArpHardwareLength.decrement:type_name -> otg.PatternFlowArpHardwareLengthCounter + 1084, // 1292: otg.PatternFlowArpHardwareLength.metric_tags:type_name -> otg.PatternFlowArpHardwareLengthMetricTag + 301, // 1293: otg.PatternFlowArpProtocolLength.choice:type_name -> otg.PatternFlowArpProtocolLength.Choice.Enum + 1086, // 1294: otg.PatternFlowArpProtocolLength.increment:type_name -> otg.PatternFlowArpProtocolLengthCounter + 1086, // 1295: otg.PatternFlowArpProtocolLength.decrement:type_name -> otg.PatternFlowArpProtocolLengthCounter + 1087, // 1296: otg.PatternFlowArpProtocolLength.metric_tags:type_name -> otg.PatternFlowArpProtocolLengthMetricTag + 302, // 1297: otg.PatternFlowArpOperation.choice:type_name -> otg.PatternFlowArpOperation.Choice.Enum + 1089, // 1298: otg.PatternFlowArpOperation.increment:type_name -> otg.PatternFlowArpOperationCounter + 1089, // 1299: otg.PatternFlowArpOperation.decrement:type_name -> otg.PatternFlowArpOperationCounter + 1090, // 1300: otg.PatternFlowArpOperation.metric_tags:type_name -> otg.PatternFlowArpOperationMetricTag + 303, // 1301: otg.PatternFlowArpSenderHardwareAddr.choice:type_name -> otg.PatternFlowArpSenderHardwareAddr.Choice.Enum + 1092, // 1302: otg.PatternFlowArpSenderHardwareAddr.increment:type_name -> otg.PatternFlowArpSenderHardwareAddrCounter + 1092, // 1303: otg.PatternFlowArpSenderHardwareAddr.decrement:type_name -> otg.PatternFlowArpSenderHardwareAddrCounter + 1093, // 1304: otg.PatternFlowArpSenderHardwareAddr.metric_tags:type_name -> otg.PatternFlowArpSenderHardwareAddrMetricTag + 304, // 1305: otg.PatternFlowArpSenderProtocolAddr.choice:type_name -> otg.PatternFlowArpSenderProtocolAddr.Choice.Enum + 1095, // 1306: otg.PatternFlowArpSenderProtocolAddr.increment:type_name -> otg.PatternFlowArpSenderProtocolAddrCounter + 1095, // 1307: otg.PatternFlowArpSenderProtocolAddr.decrement:type_name -> otg.PatternFlowArpSenderProtocolAddrCounter + 1096, // 1308: otg.PatternFlowArpSenderProtocolAddr.metric_tags:type_name -> otg.PatternFlowArpSenderProtocolAddrMetricTag + 305, // 1309: otg.PatternFlowArpTargetHardwareAddr.choice:type_name -> otg.PatternFlowArpTargetHardwareAddr.Choice.Enum + 1098, // 1310: otg.PatternFlowArpTargetHardwareAddr.increment:type_name -> otg.PatternFlowArpTargetHardwareAddrCounter + 1098, // 1311: otg.PatternFlowArpTargetHardwareAddr.decrement:type_name -> otg.PatternFlowArpTargetHardwareAddrCounter + 1099, // 1312: otg.PatternFlowArpTargetHardwareAddr.metric_tags:type_name -> otg.PatternFlowArpTargetHardwareAddrMetricTag + 306, // 1313: otg.PatternFlowArpTargetProtocolAddr.choice:type_name -> otg.PatternFlowArpTargetProtocolAddr.Choice.Enum + 1101, // 1314: otg.PatternFlowArpTargetProtocolAddr.increment:type_name -> otg.PatternFlowArpTargetProtocolAddrCounter + 1101, // 1315: otg.PatternFlowArpTargetProtocolAddr.decrement:type_name -> otg.PatternFlowArpTargetProtocolAddrCounter + 1102, // 1316: otg.PatternFlowArpTargetProtocolAddr.metric_tags:type_name -> otg.PatternFlowArpTargetProtocolAddrMetricTag + 307, // 1317: otg.PatternFlowIcmpEchoType.choice:type_name -> otg.PatternFlowIcmpEchoType.Choice.Enum + 1104, // 1318: otg.PatternFlowIcmpEchoType.increment:type_name -> otg.PatternFlowIcmpEchoTypeCounter + 1104, // 1319: otg.PatternFlowIcmpEchoType.decrement:type_name -> otg.PatternFlowIcmpEchoTypeCounter + 1105, // 1320: otg.PatternFlowIcmpEchoType.metric_tags:type_name -> otg.PatternFlowIcmpEchoTypeMetricTag + 308, // 1321: otg.PatternFlowIcmpEchoCode.choice:type_name -> otg.PatternFlowIcmpEchoCode.Choice.Enum + 1107, // 1322: otg.PatternFlowIcmpEchoCode.increment:type_name -> otg.PatternFlowIcmpEchoCodeCounter + 1107, // 1323: otg.PatternFlowIcmpEchoCode.decrement:type_name -> otg.PatternFlowIcmpEchoCodeCounter + 1108, // 1324: otg.PatternFlowIcmpEchoCode.metric_tags:type_name -> otg.PatternFlowIcmpEchoCodeMetricTag + 309, // 1325: otg.PatternFlowIcmpEchoChecksum.choice:type_name -> otg.PatternFlowIcmpEchoChecksum.Choice.Enum + 310, // 1326: otg.PatternFlowIcmpEchoChecksum.generated:type_name -> otg.PatternFlowIcmpEchoChecksum.Generated.Enum + 311, // 1327: otg.PatternFlowIcmpEchoIdentifier.choice:type_name -> otg.PatternFlowIcmpEchoIdentifier.Choice.Enum + 1111, // 1328: otg.PatternFlowIcmpEchoIdentifier.increment:type_name -> otg.PatternFlowIcmpEchoIdentifierCounter + 1111, // 1329: otg.PatternFlowIcmpEchoIdentifier.decrement:type_name -> otg.PatternFlowIcmpEchoIdentifierCounter + 1112, // 1330: otg.PatternFlowIcmpEchoIdentifier.metric_tags:type_name -> otg.PatternFlowIcmpEchoIdentifierMetricTag + 312, // 1331: otg.PatternFlowIcmpEchoSequenceNumber.choice:type_name -> otg.PatternFlowIcmpEchoSequenceNumber.Choice.Enum + 1114, // 1332: otg.PatternFlowIcmpEchoSequenceNumber.increment:type_name -> otg.PatternFlowIcmpEchoSequenceNumberCounter + 1114, // 1333: otg.PatternFlowIcmpEchoSequenceNumber.decrement:type_name -> otg.PatternFlowIcmpEchoSequenceNumberCounter + 1115, // 1334: otg.PatternFlowIcmpEchoSequenceNumber.metric_tags:type_name -> otg.PatternFlowIcmpEchoSequenceNumberMetricTag + 313, // 1335: otg.PatternFlowIcmpCommonChecksum.choice:type_name -> otg.PatternFlowIcmpCommonChecksum.Choice.Enum + 314, // 1336: otg.PatternFlowIcmpCommonChecksum.generated:type_name -> otg.PatternFlowIcmpCommonChecksum.Generated.Enum + 315, // 1337: otg.PatternFlowIcmpNextFieldsIdentifier.choice:type_name -> otg.PatternFlowIcmpNextFieldsIdentifier.Choice.Enum + 1118, // 1338: otg.PatternFlowIcmpNextFieldsIdentifier.increment:type_name -> otg.PatternFlowIcmpNextFieldsIdentifierCounter + 1118, // 1339: otg.PatternFlowIcmpNextFieldsIdentifier.decrement:type_name -> otg.PatternFlowIcmpNextFieldsIdentifierCounter + 1119, // 1340: otg.PatternFlowIcmpNextFieldsIdentifier.metric_tags:type_name -> otg.PatternFlowIcmpNextFieldsIdentifierMetricTag + 316, // 1341: otg.PatternFlowIcmpNextFieldsSequenceNumber.choice:type_name -> otg.PatternFlowIcmpNextFieldsSequenceNumber.Choice.Enum + 1121, // 1342: otg.PatternFlowIcmpNextFieldsSequenceNumber.increment:type_name -> otg.PatternFlowIcmpNextFieldsSequenceNumberCounter + 1121, // 1343: otg.PatternFlowIcmpNextFieldsSequenceNumber.decrement:type_name -> otg.PatternFlowIcmpNextFieldsSequenceNumberCounter + 1122, // 1344: otg.PatternFlowIcmpNextFieldsSequenceNumber.metric_tags:type_name -> otg.PatternFlowIcmpNextFieldsSequenceNumberMetricTag + 317, // 1345: otg.PatternFlowIcmpv6EchoType.choice:type_name -> otg.PatternFlowIcmpv6EchoType.Choice.Enum + 1124, // 1346: otg.PatternFlowIcmpv6EchoType.increment:type_name -> otg.PatternFlowIcmpv6EchoTypeCounter + 1124, // 1347: otg.PatternFlowIcmpv6EchoType.decrement:type_name -> otg.PatternFlowIcmpv6EchoTypeCounter + 1125, // 1348: otg.PatternFlowIcmpv6EchoType.metric_tags:type_name -> otg.PatternFlowIcmpv6EchoTypeMetricTag + 318, // 1349: otg.PatternFlowIcmpv6EchoCode.choice:type_name -> otg.PatternFlowIcmpv6EchoCode.Choice.Enum + 1127, // 1350: otg.PatternFlowIcmpv6EchoCode.increment:type_name -> otg.PatternFlowIcmpv6EchoCodeCounter + 1127, // 1351: otg.PatternFlowIcmpv6EchoCode.decrement:type_name -> otg.PatternFlowIcmpv6EchoCodeCounter + 1128, // 1352: otg.PatternFlowIcmpv6EchoCode.metric_tags:type_name -> otg.PatternFlowIcmpv6EchoCodeMetricTag + 319, // 1353: otg.PatternFlowIcmpv6EchoIdentifier.choice:type_name -> otg.PatternFlowIcmpv6EchoIdentifier.Choice.Enum + 1130, // 1354: otg.PatternFlowIcmpv6EchoIdentifier.increment:type_name -> otg.PatternFlowIcmpv6EchoIdentifierCounter + 1130, // 1355: otg.PatternFlowIcmpv6EchoIdentifier.decrement:type_name -> otg.PatternFlowIcmpv6EchoIdentifierCounter + 1131, // 1356: otg.PatternFlowIcmpv6EchoIdentifier.metric_tags:type_name -> otg.PatternFlowIcmpv6EchoIdentifierMetricTag + 320, // 1357: otg.PatternFlowIcmpv6EchoSequenceNumber.choice:type_name -> otg.PatternFlowIcmpv6EchoSequenceNumber.Choice.Enum + 1133, // 1358: otg.PatternFlowIcmpv6EchoSequenceNumber.increment:type_name -> otg.PatternFlowIcmpv6EchoSequenceNumberCounter + 1133, // 1359: otg.PatternFlowIcmpv6EchoSequenceNumber.decrement:type_name -> otg.PatternFlowIcmpv6EchoSequenceNumberCounter + 1134, // 1360: otg.PatternFlowIcmpv6EchoSequenceNumber.metric_tags:type_name -> otg.PatternFlowIcmpv6EchoSequenceNumberMetricTag + 321, // 1361: otg.PatternFlowIcmpv6EchoChecksum.choice:type_name -> otg.PatternFlowIcmpv6EchoChecksum.Choice.Enum + 322, // 1362: otg.PatternFlowIcmpv6EchoChecksum.generated:type_name -> otg.PatternFlowIcmpv6EchoChecksum.Generated.Enum + 323, // 1363: otg.PatternFlowIcmpv6CommonChecksum.choice:type_name -> otg.PatternFlowIcmpv6CommonChecksum.Choice.Enum + 324, // 1364: otg.PatternFlowIcmpv6CommonChecksum.generated:type_name -> otg.PatternFlowIcmpv6CommonChecksum.Generated.Enum + 325, // 1365: otg.PatternFlowPppAddress.choice:type_name -> otg.PatternFlowPppAddress.Choice.Enum + 1138, // 1366: otg.PatternFlowPppAddress.increment:type_name -> otg.PatternFlowPppAddressCounter + 1138, // 1367: otg.PatternFlowPppAddress.decrement:type_name -> otg.PatternFlowPppAddressCounter + 1139, // 1368: otg.PatternFlowPppAddress.metric_tags:type_name -> otg.PatternFlowPppAddressMetricTag + 326, // 1369: otg.PatternFlowPppControl.choice:type_name -> otg.PatternFlowPppControl.Choice.Enum + 1141, // 1370: otg.PatternFlowPppControl.increment:type_name -> otg.PatternFlowPppControlCounter + 1141, // 1371: otg.PatternFlowPppControl.decrement:type_name -> otg.PatternFlowPppControlCounter + 1142, // 1372: otg.PatternFlowPppControl.metric_tags:type_name -> otg.PatternFlowPppControlMetricTag + 327, // 1373: otg.PatternFlowPppProtocolType.choice:type_name -> otg.PatternFlowPppProtocolType.Choice.Enum + 1144, // 1374: otg.PatternFlowPppProtocolType.increment:type_name -> otg.PatternFlowPppProtocolTypeCounter + 1144, // 1375: otg.PatternFlowPppProtocolType.decrement:type_name -> otg.PatternFlowPppProtocolTypeCounter + 1145, // 1376: otg.PatternFlowPppProtocolType.metric_tags:type_name -> otg.PatternFlowPppProtocolTypeMetricTag + 328, // 1377: otg.PatternFlowIgmpv1Version.choice:type_name -> otg.PatternFlowIgmpv1Version.Choice.Enum + 1147, // 1378: otg.PatternFlowIgmpv1Version.increment:type_name -> otg.PatternFlowIgmpv1VersionCounter + 1147, // 1379: otg.PatternFlowIgmpv1Version.decrement:type_name -> otg.PatternFlowIgmpv1VersionCounter + 1148, // 1380: otg.PatternFlowIgmpv1Version.metric_tags:type_name -> otg.PatternFlowIgmpv1VersionMetricTag + 329, // 1381: otg.PatternFlowIgmpv1Type.choice:type_name -> otg.PatternFlowIgmpv1Type.Choice.Enum + 1150, // 1382: otg.PatternFlowIgmpv1Type.increment:type_name -> otg.PatternFlowIgmpv1TypeCounter + 1150, // 1383: otg.PatternFlowIgmpv1Type.decrement:type_name -> otg.PatternFlowIgmpv1TypeCounter + 1151, // 1384: otg.PatternFlowIgmpv1Type.metric_tags:type_name -> otg.PatternFlowIgmpv1TypeMetricTag + 330, // 1385: otg.PatternFlowIgmpv1Unused.choice:type_name -> otg.PatternFlowIgmpv1Unused.Choice.Enum + 1153, // 1386: otg.PatternFlowIgmpv1Unused.increment:type_name -> otg.PatternFlowIgmpv1UnusedCounter + 1153, // 1387: otg.PatternFlowIgmpv1Unused.decrement:type_name -> otg.PatternFlowIgmpv1UnusedCounter + 1154, // 1388: otg.PatternFlowIgmpv1Unused.metric_tags:type_name -> otg.PatternFlowIgmpv1UnusedMetricTag + 331, // 1389: otg.PatternFlowIgmpv1Checksum.choice:type_name -> otg.PatternFlowIgmpv1Checksum.Choice.Enum + 332, // 1390: otg.PatternFlowIgmpv1Checksum.generated:type_name -> otg.PatternFlowIgmpv1Checksum.Generated.Enum + 333, // 1391: otg.PatternFlowIgmpv1GroupAddress.choice:type_name -> otg.PatternFlowIgmpv1GroupAddress.Choice.Enum + 1157, // 1392: otg.PatternFlowIgmpv1GroupAddress.increment:type_name -> otg.PatternFlowIgmpv1GroupAddressCounter + 1157, // 1393: otg.PatternFlowIgmpv1GroupAddress.decrement:type_name -> otg.PatternFlowIgmpv1GroupAddressCounter + 1158, // 1394: otg.PatternFlowIgmpv1GroupAddress.metric_tags:type_name -> otg.PatternFlowIgmpv1GroupAddressMetricTag + 334, // 1395: otg.PatternFlowMplsLabel.choice:type_name -> otg.PatternFlowMplsLabel.Choice.Enum + 1160, // 1396: otg.PatternFlowMplsLabel.increment:type_name -> otg.PatternFlowMplsLabelCounter + 1160, // 1397: otg.PatternFlowMplsLabel.decrement:type_name -> otg.PatternFlowMplsLabelCounter + 1161, // 1398: otg.PatternFlowMplsLabel.metric_tags:type_name -> otg.PatternFlowMplsLabelMetricTag + 335, // 1399: otg.PatternFlowMplsTrafficClass.choice:type_name -> otg.PatternFlowMplsTrafficClass.Choice.Enum + 1163, // 1400: otg.PatternFlowMplsTrafficClass.increment:type_name -> otg.PatternFlowMplsTrafficClassCounter + 1163, // 1401: otg.PatternFlowMplsTrafficClass.decrement:type_name -> otg.PatternFlowMplsTrafficClassCounter + 1164, // 1402: otg.PatternFlowMplsTrafficClass.metric_tags:type_name -> otg.PatternFlowMplsTrafficClassMetricTag + 336, // 1403: otg.PatternFlowMplsBottomOfStack.choice:type_name -> otg.PatternFlowMplsBottomOfStack.Choice.Enum + 1166, // 1404: otg.PatternFlowMplsBottomOfStack.increment:type_name -> otg.PatternFlowMplsBottomOfStackCounter + 1166, // 1405: otg.PatternFlowMplsBottomOfStack.decrement:type_name -> otg.PatternFlowMplsBottomOfStackCounter + 1167, // 1406: otg.PatternFlowMplsBottomOfStack.metric_tags:type_name -> otg.PatternFlowMplsBottomOfStackMetricTag + 337, // 1407: otg.PatternFlowMplsTimeToLive.choice:type_name -> otg.PatternFlowMplsTimeToLive.Choice.Enum + 1169, // 1408: otg.PatternFlowMplsTimeToLive.increment:type_name -> otg.PatternFlowMplsTimeToLiveCounter + 1169, // 1409: otg.PatternFlowMplsTimeToLive.decrement:type_name -> otg.PatternFlowMplsTimeToLiveCounter + 1170, // 1410: otg.PatternFlowMplsTimeToLive.metric_tags:type_name -> otg.PatternFlowMplsTimeToLiveMetricTag + 338, // 1411: otg.PatternFlowRsvpVersion.choice:type_name -> otg.PatternFlowRsvpVersion.Choice.Enum + 1172, // 1412: otg.PatternFlowRsvpVersion.increment:type_name -> otg.PatternFlowRsvpVersionCounter + 1172, // 1413: otg.PatternFlowRsvpVersion.decrement:type_name -> otg.PatternFlowRsvpVersionCounter + 339, // 1414: otg.PatternFlowRsvpRsvpChecksum.choice:type_name -> otg.PatternFlowRsvpRsvpChecksum.Choice.Enum + 340, // 1415: otg.PatternFlowRsvpRsvpChecksum.generated:type_name -> otg.PatternFlowRsvpRsvpChecksum.Generated.Enum + 341, // 1416: otg.PatternFlowRsvpTimeToLive.choice:type_name -> otg.PatternFlowRsvpTimeToLive.Choice.Enum + 1175, // 1417: otg.PatternFlowRsvpTimeToLive.increment:type_name -> otg.PatternFlowRsvpTimeToLiveCounter + 1175, // 1418: otg.PatternFlowRsvpTimeToLive.decrement:type_name -> otg.PatternFlowRsvpTimeToLiveCounter + 342, // 1419: otg.PatternFlowRsvpReserved.choice:type_name -> otg.PatternFlowRsvpReserved.Choice.Enum + 1177, // 1420: otg.PatternFlowRsvpReserved.increment:type_name -> otg.PatternFlowRsvpReservedCounter + 1177, // 1421: otg.PatternFlowRsvpReserved.decrement:type_name -> otg.PatternFlowRsvpReservedCounter + 343, // 1422: otg.PatternFlowRSVPPathSessionLspTunnelIpv4Ipv4TunnelEndPointAddress.choice:type_name -> otg.PatternFlowRSVPPathSessionLspTunnelIpv4Ipv4TunnelEndPointAddress.Choice.Enum + 1179, // 1423: otg.PatternFlowRSVPPathSessionLspTunnelIpv4Ipv4TunnelEndPointAddress.increment:type_name -> otg.PatternFlowRSVPPathSessionLspTunnelIpv4Ipv4TunnelEndPointAddressCounter + 1179, // 1424: otg.PatternFlowRSVPPathSessionLspTunnelIpv4Ipv4TunnelEndPointAddress.decrement:type_name -> otg.PatternFlowRSVPPathSessionLspTunnelIpv4Ipv4TunnelEndPointAddressCounter + 344, // 1425: otg.PatternFlowRSVPPathSessionLspTunnelIpv4Reserved.choice:type_name -> otg.PatternFlowRSVPPathSessionLspTunnelIpv4Reserved.Choice.Enum + 1181, // 1426: otg.PatternFlowRSVPPathSessionLspTunnelIpv4Reserved.increment:type_name -> otg.PatternFlowRSVPPathSessionLspTunnelIpv4ReservedCounter + 1181, // 1427: otg.PatternFlowRSVPPathSessionLspTunnelIpv4Reserved.decrement:type_name -> otg.PatternFlowRSVPPathSessionLspTunnelIpv4ReservedCounter + 345, // 1428: otg.PatternFlowRSVPPathSessionLspTunnelIpv4TunnelId.choice:type_name -> otg.PatternFlowRSVPPathSessionLspTunnelIpv4TunnelId.Choice.Enum + 1183, // 1429: otg.PatternFlowRSVPPathSessionLspTunnelIpv4TunnelId.increment:type_name -> otg.PatternFlowRSVPPathSessionLspTunnelIpv4TunnelIdCounter + 1183, // 1430: otg.PatternFlowRSVPPathSessionLspTunnelIpv4TunnelId.decrement:type_name -> otg.PatternFlowRSVPPathSessionLspTunnelIpv4TunnelIdCounter + 346, // 1431: otg.PatternFlowRSVPPathSessionLspTunnelIpv4ExtendedTunnelId.choice:type_name -> otg.PatternFlowRSVPPathSessionLspTunnelIpv4ExtendedTunnelId.Choice.Enum + 1185, // 1432: otg.PatternFlowRSVPPathSessionLspTunnelIpv4ExtendedTunnelId.increment:type_name -> otg.PatternFlowRSVPPathSessionLspTunnelIpv4ExtendedTunnelIdCounter + 1185, // 1433: otg.PatternFlowRSVPPathSessionLspTunnelIpv4ExtendedTunnelId.decrement:type_name -> otg.PatternFlowRSVPPathSessionLspTunnelIpv4ExtendedTunnelIdCounter + 347, // 1434: otg.PatternFlowRSVPPathRsvpHopIpv4Ipv4NextPreviousHopAddress.choice:type_name -> otg.PatternFlowRSVPPathRsvpHopIpv4Ipv4NextPreviousHopAddress.Choice.Enum + 1187, // 1435: otg.PatternFlowRSVPPathRsvpHopIpv4Ipv4NextPreviousHopAddress.increment:type_name -> otg.PatternFlowRSVPPathRsvpHopIpv4Ipv4NextPreviousHopAddressCounter + 1187, // 1436: otg.PatternFlowRSVPPathRsvpHopIpv4Ipv4NextPreviousHopAddress.decrement:type_name -> otg.PatternFlowRSVPPathRsvpHopIpv4Ipv4NextPreviousHopAddressCounter + 348, // 1437: otg.PatternFlowRSVPPathRsvpHopIpv4LogicalInterfaceHandle.choice:type_name -> otg.PatternFlowRSVPPathRsvpHopIpv4LogicalInterfaceHandle.Choice.Enum + 1189, // 1438: otg.PatternFlowRSVPPathRsvpHopIpv4LogicalInterfaceHandle.increment:type_name -> otg.PatternFlowRSVPPathRsvpHopIpv4LogicalInterfaceHandleCounter + 1189, // 1439: otg.PatternFlowRSVPPathRsvpHopIpv4LogicalInterfaceHandle.decrement:type_name -> otg.PatternFlowRSVPPathRsvpHopIpv4LogicalInterfaceHandleCounter + 349, // 1440: otg.PatternFlowRSVPPathTimeValuesType1RefreshPeriodR.choice:type_name -> otg.PatternFlowRSVPPathTimeValuesType1RefreshPeriodR.Choice.Enum + 1191, // 1441: otg.PatternFlowRSVPPathTimeValuesType1RefreshPeriodR.increment:type_name -> otg.PatternFlowRSVPPathTimeValuesType1RefreshPeriodRCounter + 1191, // 1442: otg.PatternFlowRSVPPathTimeValuesType1RefreshPeriodR.decrement:type_name -> otg.PatternFlowRSVPPathTimeValuesType1RefreshPeriodRCounter + 350, // 1443: otg.PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixLBit.choice:type_name -> otg.PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixLBit.Choice.Enum + 1193, // 1444: otg.PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixLBit.increment:type_name -> otg.PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixLBitCounter + 1193, // 1445: otg.PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixLBit.decrement:type_name -> otg.PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixLBitCounter + 351, // 1446: otg.PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixIpv4Address.choice:type_name -> otg.PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixIpv4Address.Choice.Enum + 1195, // 1447: otg.PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixIpv4Address.increment:type_name -> otg.PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixIpv4AddressCounter + 1195, // 1448: otg.PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixIpv4Address.decrement:type_name -> otg.PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixIpv4AddressCounter + 352, // 1449: otg.PatternFlowRSVPPathExplicitRouteType1FourByteASNumberLBit.choice:type_name -> otg.PatternFlowRSVPPathExplicitRouteType1FourByteASNumberLBit.Choice.Enum + 1197, // 1450: otg.PatternFlowRSVPPathExplicitRouteType1FourByteASNumberLBit.increment:type_name -> otg.PatternFlowRSVPPathExplicitRouteType1FourByteASNumberLBitCounter + 1197, // 1451: otg.PatternFlowRSVPPathExplicitRouteType1FourByteASNumberLBit.decrement:type_name -> otg.PatternFlowRSVPPathExplicitRouteType1FourByteASNumberLBitCounter + 353, // 1452: otg.PatternFlowRSVPPathExplicitRouteType1FourByteASNumberReserved.choice:type_name -> otg.PatternFlowRSVPPathExplicitRouteType1FourByteASNumberReserved.Choice.Enum + 1199, // 1453: otg.PatternFlowRSVPPathExplicitRouteType1FourByteASNumberReserved.increment:type_name -> otg.PatternFlowRSVPPathExplicitRouteType1FourByteASNumberReservedCounter + 1199, // 1454: otg.PatternFlowRSVPPathExplicitRouteType1FourByteASNumberReserved.decrement:type_name -> otg.PatternFlowRSVPPathExplicitRouteType1FourByteASNumberReservedCounter + 354, // 1455: otg.PatternFlowRSVPPathLabelRequestWithoutLabelRangeReserved.choice:type_name -> otg.PatternFlowRSVPPathLabelRequestWithoutLabelRangeReserved.Choice.Enum + 1201, // 1456: otg.PatternFlowRSVPPathLabelRequestWithoutLabelRangeReserved.increment:type_name -> otg.PatternFlowRSVPPathLabelRequestWithoutLabelRangeReservedCounter + 1201, // 1457: otg.PatternFlowRSVPPathLabelRequestWithoutLabelRangeReserved.decrement:type_name -> otg.PatternFlowRSVPPathLabelRequestWithoutLabelRangeReservedCounter + 355, // 1458: otg.PatternFlowRSVPPathLabelRequestWithoutLabelRangeL3pid.choice:type_name -> otg.PatternFlowRSVPPathLabelRequestWithoutLabelRangeL3pid.Choice.Enum + 1203, // 1459: otg.PatternFlowRSVPPathLabelRequestWithoutLabelRangeL3pid.increment:type_name -> otg.PatternFlowRSVPPathLabelRequestWithoutLabelRangeL3pidCounter + 1203, // 1460: otg.PatternFlowRSVPPathLabelRequestWithoutLabelRangeL3pid.decrement:type_name -> otg.PatternFlowRSVPPathLabelRequestWithoutLabelRangeL3pidCounter + 356, // 1461: otg.PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Ipv4TunnelSenderAddress.choice:type_name -> otg.PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Ipv4TunnelSenderAddress.Choice.Enum + 1205, // 1462: otg.PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Ipv4TunnelSenderAddress.increment:type_name -> otg.PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Ipv4TunnelSenderAddressCounter + 1205, // 1463: otg.PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Ipv4TunnelSenderAddress.decrement:type_name -> otg.PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Ipv4TunnelSenderAddressCounter + 357, // 1464: otg.PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Reserved.choice:type_name -> otg.PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Reserved.Choice.Enum + 1207, // 1465: otg.PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Reserved.increment:type_name -> otg.PatternFlowRSVPPathSenderTemplateLspTunnelIpv4ReservedCounter + 1207, // 1466: otg.PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Reserved.decrement:type_name -> otg.PatternFlowRSVPPathSenderTemplateLspTunnelIpv4ReservedCounter + 358, // 1467: otg.PatternFlowRSVPPathSenderTemplateLspTunnelIpv4LspId.choice:type_name -> otg.PatternFlowRSVPPathSenderTemplateLspTunnelIpv4LspId.Choice.Enum + 1209, // 1468: otg.PatternFlowRSVPPathSenderTemplateLspTunnelIpv4LspId.increment:type_name -> otg.PatternFlowRSVPPathSenderTemplateLspTunnelIpv4LspIdCounter + 1209, // 1469: otg.PatternFlowRSVPPathSenderTemplateLspTunnelIpv4LspId.decrement:type_name -> otg.PatternFlowRSVPPathSenderTemplateLspTunnelIpv4LspIdCounter + 359, // 1470: otg.PatternFlowRSVPPathSenderTspecIntServVersion.choice:type_name -> otg.PatternFlowRSVPPathSenderTspecIntServVersion.Choice.Enum + 1211, // 1471: otg.PatternFlowRSVPPathSenderTspecIntServVersion.increment:type_name -> otg.PatternFlowRSVPPathSenderTspecIntServVersionCounter + 1211, // 1472: otg.PatternFlowRSVPPathSenderTspecIntServVersion.decrement:type_name -> otg.PatternFlowRSVPPathSenderTspecIntServVersionCounter + 360, // 1473: otg.PatternFlowRSVPPathSenderTspecIntServReserved1.choice:type_name -> otg.PatternFlowRSVPPathSenderTspecIntServReserved1.Choice.Enum + 1213, // 1474: otg.PatternFlowRSVPPathSenderTspecIntServReserved1.increment:type_name -> otg.PatternFlowRSVPPathSenderTspecIntServReserved1Counter + 1213, // 1475: otg.PatternFlowRSVPPathSenderTspecIntServReserved1.decrement:type_name -> otg.PatternFlowRSVPPathSenderTspecIntServReserved1Counter + 361, // 1476: otg.PatternFlowRSVPPathSenderTspecIntServOverallLength.choice:type_name -> otg.PatternFlowRSVPPathSenderTspecIntServOverallLength.Choice.Enum + 1215, // 1477: otg.PatternFlowRSVPPathSenderTspecIntServOverallLength.increment:type_name -> otg.PatternFlowRSVPPathSenderTspecIntServOverallLengthCounter + 1215, // 1478: otg.PatternFlowRSVPPathSenderTspecIntServOverallLength.decrement:type_name -> otg.PatternFlowRSVPPathSenderTspecIntServOverallLengthCounter + 362, // 1479: otg.PatternFlowRSVPPathSenderTspecIntServServiceHeader.choice:type_name -> otg.PatternFlowRSVPPathSenderTspecIntServServiceHeader.Choice.Enum + 1217, // 1480: otg.PatternFlowRSVPPathSenderTspecIntServServiceHeader.increment:type_name -> otg.PatternFlowRSVPPathSenderTspecIntServServiceHeaderCounter + 1217, // 1481: otg.PatternFlowRSVPPathSenderTspecIntServServiceHeader.decrement:type_name -> otg.PatternFlowRSVPPathSenderTspecIntServServiceHeaderCounter + 363, // 1482: otg.PatternFlowRSVPPathSenderTspecIntServZeroBit.choice:type_name -> otg.PatternFlowRSVPPathSenderTspecIntServZeroBit.Choice.Enum + 1219, // 1483: otg.PatternFlowRSVPPathSenderTspecIntServZeroBit.increment:type_name -> otg.PatternFlowRSVPPathSenderTspecIntServZeroBitCounter + 1219, // 1484: otg.PatternFlowRSVPPathSenderTspecIntServZeroBit.decrement:type_name -> otg.PatternFlowRSVPPathSenderTspecIntServZeroBitCounter + 364, // 1485: otg.PatternFlowRSVPPathSenderTspecIntServReserved2.choice:type_name -> otg.PatternFlowRSVPPathSenderTspecIntServReserved2.Choice.Enum + 1221, // 1486: otg.PatternFlowRSVPPathSenderTspecIntServReserved2.increment:type_name -> otg.PatternFlowRSVPPathSenderTspecIntServReserved2Counter + 1221, // 1487: otg.PatternFlowRSVPPathSenderTspecIntServReserved2.decrement:type_name -> otg.PatternFlowRSVPPathSenderTspecIntServReserved2Counter + 365, // 1488: otg.PatternFlowRSVPPathSenderTspecIntServLengthOfServiceData.choice:type_name -> otg.PatternFlowRSVPPathSenderTspecIntServLengthOfServiceData.Choice.Enum + 1223, // 1489: otg.PatternFlowRSVPPathSenderTspecIntServLengthOfServiceData.increment:type_name -> otg.PatternFlowRSVPPathSenderTspecIntServLengthOfServiceDataCounter + 1223, // 1490: otg.PatternFlowRSVPPathSenderTspecIntServLengthOfServiceData.decrement:type_name -> otg.PatternFlowRSVPPathSenderTspecIntServLengthOfServiceDataCounter + 366, // 1491: otg.PatternFlowRSVPPathSenderTspecIntServParameterIdTokenBucketTspec.choice:type_name -> otg.PatternFlowRSVPPathSenderTspecIntServParameterIdTokenBucketTspec.Choice.Enum + 1225, // 1492: otg.PatternFlowRSVPPathSenderTspecIntServParameterIdTokenBucketTspec.increment:type_name -> otg.PatternFlowRSVPPathSenderTspecIntServParameterIdTokenBucketTspecCounter + 1225, // 1493: otg.PatternFlowRSVPPathSenderTspecIntServParameterIdTokenBucketTspec.decrement:type_name -> otg.PatternFlowRSVPPathSenderTspecIntServParameterIdTokenBucketTspecCounter + 367, // 1494: otg.PatternFlowRSVPPathSenderTspecIntServParameter127Flag.choice:type_name -> otg.PatternFlowRSVPPathSenderTspecIntServParameter127Flag.Choice.Enum + 1227, // 1495: otg.PatternFlowRSVPPathSenderTspecIntServParameter127Flag.increment:type_name -> otg.PatternFlowRSVPPathSenderTspecIntServParameter127FlagCounter + 1227, // 1496: otg.PatternFlowRSVPPathSenderTspecIntServParameter127Flag.decrement:type_name -> otg.PatternFlowRSVPPathSenderTspecIntServParameter127FlagCounter + 368, // 1497: otg.PatternFlowRSVPPathSenderTspecIntServParameter127Length.choice:type_name -> otg.PatternFlowRSVPPathSenderTspecIntServParameter127Length.Choice.Enum + 1229, // 1498: otg.PatternFlowRSVPPathSenderTspecIntServParameter127Length.increment:type_name -> otg.PatternFlowRSVPPathSenderTspecIntServParameter127LengthCounter + 1229, // 1499: otg.PatternFlowRSVPPathSenderTspecIntServParameter127Length.decrement:type_name -> otg.PatternFlowRSVPPathSenderTspecIntServParameter127LengthCounter + 369, // 1500: otg.PatternFlowRSVPPathSenderTspecIntServMinimumPolicedUnit.choice:type_name -> otg.PatternFlowRSVPPathSenderTspecIntServMinimumPolicedUnit.Choice.Enum + 1231, // 1501: otg.PatternFlowRSVPPathSenderTspecIntServMinimumPolicedUnit.increment:type_name -> otg.PatternFlowRSVPPathSenderTspecIntServMinimumPolicedUnitCounter + 1231, // 1502: otg.PatternFlowRSVPPathSenderTspecIntServMinimumPolicedUnit.decrement:type_name -> otg.PatternFlowRSVPPathSenderTspecIntServMinimumPolicedUnitCounter + 370, // 1503: otg.PatternFlowRSVPPathSenderTspecIntServMaximumPacketSize.choice:type_name -> otg.PatternFlowRSVPPathSenderTspecIntServMaximumPacketSize.Choice.Enum + 1233, // 1504: otg.PatternFlowRSVPPathSenderTspecIntServMaximumPacketSize.increment:type_name -> otg.PatternFlowRSVPPathSenderTspecIntServMaximumPacketSizeCounter + 1233, // 1505: otg.PatternFlowRSVPPathSenderTspecIntServMaximumPacketSize.decrement:type_name -> otg.PatternFlowRSVPPathSenderTspecIntServMaximumPacketSizeCounter + 371, // 1506: otg.PatternFlowRSVPPathRecordRouteType1Ipv4AddressIpv4Address.choice:type_name -> otg.PatternFlowRSVPPathRecordRouteType1Ipv4AddressIpv4Address.Choice.Enum + 1235, // 1507: otg.PatternFlowRSVPPathRecordRouteType1Ipv4AddressIpv4Address.increment:type_name -> otg.PatternFlowRSVPPathRecordRouteType1Ipv4AddressIpv4AddressCounter + 1235, // 1508: otg.PatternFlowRSVPPathRecordRouteType1Ipv4AddressIpv4Address.decrement:type_name -> otg.PatternFlowRSVPPathRecordRouteType1Ipv4AddressIpv4AddressCounter + 372, // 1509: otg.PatternFlowRSVPPathRecordRouteType1Ipv4AddressPrefixLength.choice:type_name -> otg.PatternFlowRSVPPathRecordRouteType1Ipv4AddressPrefixLength.Choice.Enum + 1237, // 1510: otg.PatternFlowRSVPPathRecordRouteType1Ipv4AddressPrefixLength.increment:type_name -> otg.PatternFlowRSVPPathRecordRouteType1Ipv4AddressPrefixLengthCounter + 1237, // 1511: otg.PatternFlowRSVPPathRecordRouteType1Ipv4AddressPrefixLength.decrement:type_name -> otg.PatternFlowRSVPPathRecordRouteType1Ipv4AddressPrefixLengthCounter + 373, // 1512: otg.PatternFlowRSVPPathRecordRouteType1LabelFlags.choice:type_name -> otg.PatternFlowRSVPPathRecordRouteType1LabelFlags.Choice.Enum + 374, // 1513: otg.PatternFlowRSVPPathRecordRouteType1LabelCType.choice:type_name -> otg.PatternFlowRSVPPathRecordRouteType1LabelCType.Choice.Enum + 375, // 1514: otg.PatternFlowRSVPPathObjectsCustomType.choice:type_name -> otg.PatternFlowRSVPPathObjectsCustomType.Choice.Enum + 1241, // 1515: otg.PatternFlowRSVPPathObjectsCustomType.increment:type_name -> otg.PatternFlowRSVPPathObjectsCustomTypeCounter + 1241, // 1516: otg.PatternFlowRSVPPathObjectsCustomType.decrement:type_name -> otg.PatternFlowRSVPPathObjectsCustomTypeCounter + 647, // 1517: otg.Success.warning:type_name -> otg.Warning + 646, // 1518: otg.Failure.error:type_name -> otg.Error + 376, // 1519: otg.SetConfigRequest.config:type_name -> otg.Config + 648, // 1520: otg.UpdateConfigRequest.config_update:type_name -> otg.ConfigUpdate + 647, // 1521: otg.SetConfigResponse.warning:type_name -> otg.Warning + 376, // 1522: otg.GetConfigResponse.config:type_name -> otg.Config + 647, // 1523: otg.UpdateConfigResponse.warning:type_name -> otg.Warning + 650, // 1524: otg.SetControlStateRequest.control_state:type_name -> otg.ControlState + 647, // 1525: otg.SetControlStateResponse.warning:type_name -> otg.Warning + 666, // 1526: otg.SetControlActionRequest.control_action:type_name -> otg.ControlAction + 667, // 1527: otg.SetControlActionResponse.control_action_response:type_name -> otg.ControlActionResponse + 686, // 1528: otg.GetMetricsRequest.metrics_request:type_name -> otg.MetricsRequest + 687, // 1529: otg.GetMetricsResponse.metrics_response:type_name -> otg.MetricsResponse + 713, // 1530: otg.GetStatesRequest.states_request:type_name -> otg.StatesRequest + 714, // 1531: otg.GetStatesResponse.states_response:type_name -> otg.StatesResponse + 755, // 1532: otg.GetCaptureRequest.capture_request:type_name -> otg.CaptureRequest + 1243, // 1533: otg.GetVersionResponse.version:type_name -> otg.Version + 1246, // 1534: otg.Openapi.SetConfig:input_type -> otg.SetConfigRequest + 1638, // 1535: otg.Openapi.GetConfig:input_type -> google.protobuf.Empty + 1247, // 1536: otg.Openapi.UpdateConfig:input_type -> otg.UpdateConfigRequest + 1251, // 1537: otg.Openapi.SetControlState:input_type -> otg.SetControlStateRequest + 1253, // 1538: otg.Openapi.SetControlAction:input_type -> otg.SetControlActionRequest + 1255, // 1539: otg.Openapi.GetMetrics:input_type -> otg.GetMetricsRequest + 1257, // 1540: otg.Openapi.GetStates:input_type -> otg.GetStatesRequest + 1259, // 1541: otg.Openapi.GetCapture:input_type -> otg.GetCaptureRequest + 1638, // 1542: otg.Openapi.GetVersion:input_type -> google.protobuf.Empty + 1248, // 1543: otg.Openapi.SetConfig:output_type -> otg.SetConfigResponse + 1249, // 1544: otg.Openapi.GetConfig:output_type -> otg.GetConfigResponse + 1250, // 1545: otg.Openapi.UpdateConfig:output_type -> otg.UpdateConfigResponse + 1252, // 1546: otg.Openapi.SetControlState:output_type -> otg.SetControlStateResponse + 1254, // 1547: otg.Openapi.SetControlAction:output_type -> otg.SetControlActionResponse + 1256, // 1548: otg.Openapi.GetMetrics:output_type -> otg.GetMetricsResponse + 1258, // 1549: otg.Openapi.GetStates:output_type -> otg.GetStatesResponse + 1260, // 1550: otg.Openapi.GetCapture:output_type -> otg.GetCaptureResponse + 1261, // 1551: otg.Openapi.GetVersion:output_type -> otg.GetVersionResponse + 1543, // [1543:1552] is the sub-list for method output_type + 1534, // [1534:1543] is the sub-list for method input_type + 1534, // [1534:1534] is the sub-list for extension type_name + 1534, // [1534:1534] is the sub-list for extension extendee + 0, // [0:1534] is the sub-list for field type_name } func init() { file_otg_proto_init() } @@ -110255,8 +127134,2048 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ConfigOptions); i { + file_otg_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ConfigOptions); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_otg_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Port); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_otg_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PortOptions); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_otg_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Lag); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_otg_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*LagPort); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_otg_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*LagProtocol); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_otg_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*LagProtocolStatic); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_otg_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*LagProtocolLacp); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_otg_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*LagPortLacp); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_otg_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*DeviceEthernetBase); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_otg_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*DeviceEthernet); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_otg_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*EthernetConnection); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_otg_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*DeviceVlan); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_otg_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*DeviceIpv4); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_otg_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*DeviceIpv4Loopback); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_otg_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*DeviceIpv4GatewayMAC); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_otg_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*DeviceIpv6); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_otg_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*DeviceIpv6Loopback); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_otg_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*DeviceIpv6GatewayMAC); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_otg_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Layer1); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_otg_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Layer1AutoNegotiation); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_otg_proto_msgTypes[22].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Layer1FlowControl); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_otg_proto_msgTypes[23].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Layer1Ieee8023X); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_otg_proto_msgTypes[24].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Layer1Ieee8021Qbb); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_otg_proto_msgTypes[25].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Capture); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_otg_proto_msgTypes[26].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*CaptureFilter); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_otg_proto_msgTypes[27].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*CaptureCustom); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_otg_proto_msgTypes[28].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*CaptureField); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_otg_proto_msgTypes[29].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*CaptureEthernet); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_otg_proto_msgTypes[30].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*CaptureVlan); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_otg_proto_msgTypes[31].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*CaptureIpv4); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_otg_proto_msgTypes[32].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*CaptureIpv6); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_otg_proto_msgTypes[33].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_otg_proto_msgTypes[34].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ProtocolOptions); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_otg_proto_msgTypes[35].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*DeviceIsisRouter); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_otg_proto_msgTypes[36].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*DeviceIsisMultiInstance); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_otg_proto_msgTypes[37].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*IsisInterface); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_otg_proto_msgTypes[38].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*IsisInterfaceLevel); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_otg_proto_msgTypes[39].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*IsisMT); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_otg_proto_msgTypes[40].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*LinkStateTE); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_otg_proto_msgTypes[41].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*LinkStatepriorityBandwidths); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_otg_proto_msgTypes[42].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*IsisInterfaceAuthentication); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_otg_proto_msgTypes[43].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*IsisInterfaceAdvanced); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_otg_proto_msgTypes[44].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*IsisInterfaceLinkProtection); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_otg_proto_msgTypes[45].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*IsisBasic); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_otg_proto_msgTypes[46].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*IsisAdvanced); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_otg_proto_msgTypes[47].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*IsisAuthentication); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_otg_proto_msgTypes[48].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*IsisAuthenticationBase); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_otg_proto_msgTypes[49].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*IsisV4RouteRange); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_otg_proto_msgTypes[50].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*V4RouteAddress); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_otg_proto_msgTypes[51].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*V6RouteAddress); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_otg_proto_msgTypes[52].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*MACRouteAddress); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_otg_proto_msgTypes[53].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*IsisV6RouteRange); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_otg_proto_msgTypes[54].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*DeviceBgpRouter); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_otg_proto_msgTypes[55].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*DeviceBgpMessageHeaderError); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_otg_proto_msgTypes[56].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*DeviceBgpOpenMessageError); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_otg_proto_msgTypes[57].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*DeviceBgpUpdateMessageError); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_otg_proto_msgTypes[58].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*DeviceBgpHoldTimerExpired); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_otg_proto_msgTypes[59].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*DeviceBgpFiniteStateMachineError); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_otg_proto_msgTypes[60].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*DeviceBgpCeaseError); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_otg_proto_msgTypes[61].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*DeviceBgpCustomError); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_otg_proto_msgTypes[62].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*BgpV4Peer); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_otg_proto_msgTypes[63].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*BgpV4Interface); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_otg_proto_msgTypes[64].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*BgpV4EthernetSegment); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_otg_proto_msgTypes[65].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*BgpEthernetSegmentDfElection); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_otg_proto_msgTypes[66].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*BgpRouteAdvanced); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_otg_proto_msgTypes[67].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*BgpCommunity); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_otg_proto_msgTypes[68].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*BgpExtCommunity); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_otg_proto_msgTypes[69].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*BgpAsPath); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_otg_proto_msgTypes[70].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*BgpAsPathSegment); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_otg_proto_msgTypes[71].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*BgpV4EvpnEvis); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_otg_proto_msgTypes[72].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*BgpV4EviVxlan); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_otg_proto_msgTypes[73].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*BgpV4EviVxlanBroadcastDomain); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_otg_proto_msgTypes[74].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*BgpCMacIpRange); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_otg_proto_msgTypes[75].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*BgpRouteDistinguisher); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_otg_proto_msgTypes[76].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*BgpRouteTarget); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_otg_proto_msgTypes[77].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*BgpAdvanced); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_otg_proto_msgTypes[78].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*BgpCapability); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_otg_proto_msgTypes[79].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*BgpLearnedInformationFilter); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_otg_proto_msgTypes[80].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*BgpV4RouteRange); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_otg_proto_msgTypes[81].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*BgpAddPath); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_otg_proto_msgTypes[82].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*BgpExtendedCommunity); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_otg_proto_msgTypes[83].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*BgpExtendedCommunityTransitive2OctetAsTypeRouteTarget); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_otg_proto_msgTypes[84].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*BgpExtendedCommunityTransitive2OctetAsTypeRouteOrigin); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_otg_proto_msgTypes[85].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*BgpExtendedCommunityTransitive2OctetAsType); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_otg_proto_msgTypes[86].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*BgpExtendedCommunityTransitiveIpv4AddressTypeRouteOrigin); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_otg_proto_msgTypes[87].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*BgpExtendedCommunityTransitiveIpv4AddressTypeRouteTarget); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_otg_proto_msgTypes[88].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*BgpExtendedCommunityTransitiveIpv4AddressType); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_otg_proto_msgTypes[89].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*BgpExtendedCommunityTransitive4OctetAsTypeRouteTarget); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_otg_proto_msgTypes[90].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*BgpExtendedCommunityTransitive4OctetAsTypeRouteOrigin); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_otg_proto_msgTypes[91].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*BgpExtendedCommunityTransitive4OctetAsType); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_otg_proto_msgTypes[92].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*BgpExtendedCommunityTransitiveOpaqueTypeColor); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_otg_proto_msgTypes[93].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*BgpExtendedCommunityTransitiveOpaqueTypeEncapsulation); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_otg_proto_msgTypes[94].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*BgpExtendedCommunityTransitiveOpaqueType); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_otg_proto_msgTypes[95].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*BgpExtendedCommunityTransitiveEvpnTypeRouterMac); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_otg_proto_msgTypes[96].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*BgpExtendedCommunityTransitiveEvpnType); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_otg_proto_msgTypes[97].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*BgpExtendedCommunityNonTransitive2OctetAsTypeLinkBandwidth); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_otg_proto_msgTypes[98].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*BgpExtendedCommunityNonTransitive2OctetAsType); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_otg_proto_msgTypes[99].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*BgpExtendedCommunityCustomType); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_otg_proto_msgTypes[100].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*BgpV6RouteRange); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_otg_proto_msgTypes[101].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*BgpSrteV4Policy); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_otg_proto_msgTypes[102].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*BgpSrteV4TunnelTlv); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_otg_proto_msgTypes[103].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*BgpSrteRemoteEndpointSubTlv); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_otg_proto_msgTypes[104].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*BgpSrteColorSubTlv); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_otg_proto_msgTypes[105].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*BgpSrteBindingSubTlv); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_otg_proto_msgTypes[106].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*BgpSrtePreferenceSubTlv); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_otg_proto_msgTypes[107].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*BgpSrtePolicyPrioritySubTlv); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_otg_proto_msgTypes[108].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*BgpSrtePolicyNameSubTlv); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_otg_proto_msgTypes[109].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*BgpSrteExplicitNullLabelPolicySubTlv); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_otg_proto_msgTypes[110].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*BgpSrteSegmentList); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_otg_proto_msgTypes[111].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*BgpSrteSegment); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_otg_proto_msgTypes[112].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*BgpSrteSrMplsSid); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_otg_proto_msgTypes[113].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*BgpSrteSRv6SIDEndpointBehaviorAndStructure); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_otg_proto_msgTypes[114].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*BgpSrteSegmentATypeSubTlv); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_otg_proto_msgTypes[115].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*BgpSrteSegmentBTypeSubTlv); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_otg_proto_msgTypes[116].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*BgpSrteSegmentCTypeSubTlv); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_otg_proto_msgTypes[117].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*BgpSrteSegmentDTypeSubTlv); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_otg_proto_msgTypes[118].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*BgpSrteSegmentETypeSubTlv); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_otg_proto_msgTypes[119].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*BgpSrteSegmentFTypeSubTlv); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_otg_proto_msgTypes[120].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*BgpSrteSegmentGTypeSubTlv); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_otg_proto_msgTypes[121].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*BgpSrteSegmentHTypeSubTlv); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_otg_proto_msgTypes[122].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*BgpSrteSegmentITypeSubTlv); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_otg_proto_msgTypes[123].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*BgpSrteSegmentJTypeSubTlv); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_otg_proto_msgTypes[124].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*BgpSrteSegmentKTypeSubTlv); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_otg_proto_msgTypes[125].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*BgpSrteV6Policy); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_otg_proto_msgTypes[126].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*BgpSrteV6TunnelTlv); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_otg_proto_msgTypes[127].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*BgpGracefulRestart); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_otg_proto_msgTypes[128].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*BgpV6Peer); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_otg_proto_msgTypes[129].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*BgpV6Interface); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_otg_proto_msgTypes[130].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*BgpV6SegmentRouting); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_otg_proto_msgTypes[131].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*BgpV6EthernetSegment); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_otg_proto_msgTypes[132].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*BgpV6EvpnEvis); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_otg_proto_msgTypes[133].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*BgpV6EviVxlan); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_otg_proto_msgTypes[134].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*BgpV6EviVxlanBroadcastDomain); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_otg_proto_msgTypes[135].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*DeviceVxlan); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_otg_proto_msgTypes[136].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*VxlanV4Tunnel); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_otg_proto_msgTypes[137].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*VxlanV6Tunnel); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_otg_proto_msgTypes[138].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*VxlanV4TunnelDestinationIPMode); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_otg_proto_msgTypes[139].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*VxlanV6TunnelDestinationIPMode); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_otg_proto_msgTypes[140].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*VxlanV4TunnelDestinationIPModeUnicast); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_otg_proto_msgTypes[141].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*VxlanV6TunnelDestinationIPModeUnicast); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_otg_proto_msgTypes[142].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*VxlanTunnelDestinationIPModeUnicastArpSuppressionCache); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_otg_proto_msgTypes[143].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*VxlanV4TunnelDestinationIPModeUnicastVtep); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_otg_proto_msgTypes[144].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*VxlanV6TunnelDestinationIPModeUnicastVtep); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_otg_proto_msgTypes[145].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*VxlanV4TunnelDestinationIPModeMulticast); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_otg_proto_msgTypes[146].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*VxlanV6TunnelDestinationIPModeMulticast); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_otg_proto_msgTypes[147].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*DeviceRsvp); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_otg_proto_msgTypes[148].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*RsvpIpv4Interface); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_otg_proto_msgTypes[149].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*RsvpLspIpv4Interface); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_otg_proto_msgTypes[150].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*RsvpLspIpv4InterfaceP2PEgressIpv4Lsp); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_otg_proto_msgTypes[151].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*RsvpLspIpv4InterfaceP2PIngressIpv4Lsp); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_otg_proto_msgTypes[152].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*RsvpSessionAttribute); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_otg_proto_msgTypes[153].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*RsvpResourceAffinities); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_otg_proto_msgTypes[154].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*RsvpTspec); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_otg_proto_msgTypes[155].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*RsvpFastReroute); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_otg_proto_msgTypes[156].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*RsvpEro); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_otg_proto_msgTypes[157].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*RsvpEroSubobject); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_otg_proto_msgTypes[158].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Flow); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_otg_proto_msgTypes[159].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*FlowTxRx); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_otg_proto_msgTypes[160].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*FlowPort); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_otg_proto_msgTypes[161].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*FlowRouter); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_otg_proto_msgTypes[162].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*FlowHeader); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_otg_proto_msgTypes[163].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*FlowCustom); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_otg_proto_msgTypes[164].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*FlowCustomMetricTag); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_otg_proto_msgTypes[165].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*FlowEthernet); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_otg_proto_msgTypes[166].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*FlowVlan); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_otg_proto_msgTypes[167].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*FlowVxlan); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_otg_proto_msgTypes[168].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*FlowIpv4); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_otg_proto_msgTypes[169].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*FlowIpv4Priority); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_otg_proto_msgTypes[170].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*FlowIpv4Dscp); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_otg_proto_msgTypes[171].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*FlowIpv4Tos); i { case 0: return &v.state case 1: @@ -110267,8 +129186,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Port); i { + file_otg_proto_msgTypes[172].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*FlowIpv6); i { case 0: return &v.state case 1: @@ -110279,8 +129198,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PortOptions); i { + file_otg_proto_msgTypes[173].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*FlowPfcPause); i { case 0: return &v.state case 1: @@ -110291,8 +129210,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Lag); i { + file_otg_proto_msgTypes[174].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*FlowEthernetPause); i { case 0: return &v.state case 1: @@ -110303,8 +129222,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*LagPort); i { + file_otg_proto_msgTypes[175].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*FlowTcp); i { case 0: return &v.state case 1: @@ -110315,8 +129234,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*LagProtocol); i { + file_otg_proto_msgTypes[176].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*FlowUdp); i { case 0: return &v.state case 1: @@ -110327,8 +129246,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*LagProtocolStatic); i { + file_otg_proto_msgTypes[177].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*FlowGre); i { case 0: return &v.state case 1: @@ -110339,8 +129258,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*LagProtocolLacp); i { + file_otg_proto_msgTypes[178].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*FlowGtpv1); i { case 0: return &v.state case 1: @@ -110351,8 +129270,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*LagPortLacp); i { + file_otg_proto_msgTypes[179].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*FlowGtpExtension); i { case 0: return &v.state case 1: @@ -110363,8 +129282,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DeviceEthernetBase); i { + file_otg_proto_msgTypes[180].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*FlowGtpv2); i { case 0: return &v.state case 1: @@ -110375,8 +129294,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DeviceEthernet); i { + file_otg_proto_msgTypes[181].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*FlowArp); i { case 0: return &v.state case 1: @@ -110387,8 +129306,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*EthernetConnection); i { + file_otg_proto_msgTypes[182].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*FlowIcmp); i { case 0: return &v.state case 1: @@ -110399,8 +129318,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DeviceVlan); i { + file_otg_proto_msgTypes[183].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*FlowIcmpEcho); i { case 0: return &v.state case 1: @@ -110411,8 +129330,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DeviceIpv4); i { + file_otg_proto_msgTypes[184].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*FlowIcmpv6); i { case 0: return &v.state case 1: @@ -110423,8 +129342,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DeviceIpv4Loopback); i { + file_otg_proto_msgTypes[185].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*FlowIcmpv6Echo); i { case 0: return &v.state case 1: @@ -110435,8 +129354,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DeviceIpv4GatewayMAC); i { + file_otg_proto_msgTypes[186].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*FlowPpp); i { case 0: return &v.state case 1: @@ -110447,8 +129366,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DeviceIpv6); i { + file_otg_proto_msgTypes[187].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*FlowIgmpv1); i { case 0: return &v.state case 1: @@ -110459,8 +129378,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DeviceIpv6Loopback); i { + file_otg_proto_msgTypes[188].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*FlowMpls); i { case 0: return &v.state case 1: @@ -110471,8 +129390,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DeviceIpv6GatewayMAC); i { + file_otg_proto_msgTypes[189].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*FlowRsvp); i { case 0: return &v.state case 1: @@ -110483,8 +129402,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Layer1); i { + file_otg_proto_msgTypes[190].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*FlowRSVPFlag); i { case 0: return &v.state case 1: @@ -110495,8 +129414,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Layer1AutoNegotiation); i { + file_otg_proto_msgTypes[191].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*FlowRSVPLength); i { case 0: return &v.state case 1: @@ -110507,8 +129426,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[22].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Layer1FlowControl); i { + file_otg_proto_msgTypes[192].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*FlowRSVPMessage); i { case 0: return &v.state case 1: @@ -110519,8 +129438,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[23].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Layer1Ieee8023X); i { + file_otg_proto_msgTypes[193].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*FlowRSVPPathMessage); i { case 0: return &v.state case 1: @@ -110531,8 +129450,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[24].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Layer1Ieee8021Qbb); i { + file_otg_proto_msgTypes[194].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*FlowRSVPPathObjects); i { case 0: return &v.state case 1: @@ -110543,8 +129462,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[25].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Capture); i { + file_otg_proto_msgTypes[195].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*FlowRSVPPathObjectLength); i { case 0: return &v.state case 1: @@ -110555,8 +129474,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[26].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CaptureFilter); i { + file_otg_proto_msgTypes[196].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*FlowRSVPPathObjectsClass); i { case 0: return &v.state case 1: @@ -110567,8 +129486,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[27].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CaptureCustom); i { + file_otg_proto_msgTypes[197].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*FlowRSVPPathObjectsClassSession); i { case 0: return &v.state case 1: @@ -110579,8 +129498,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[28].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CaptureField); i { + file_otg_proto_msgTypes[198].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*FlowRSVPPathObjectsSessionCType); i { case 0: return &v.state case 1: @@ -110591,8 +129510,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[29].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CaptureEthernet); i { + file_otg_proto_msgTypes[199].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*FlowRSVPPathSessionLspTunnelIpv4); i { case 0: return &v.state case 1: @@ -110603,8 +129522,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[30].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CaptureVlan); i { + file_otg_proto_msgTypes[200].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*FlowRSVPPathObjectsClassRsvpHop); i { case 0: return &v.state case 1: @@ -110615,8 +129534,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[31].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CaptureIpv4); i { + file_otg_proto_msgTypes[201].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*FlowRSVPPathObjectsRsvpHopCType); i { case 0: return &v.state case 1: @@ -110627,8 +129546,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[32].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CaptureIpv6); i { + file_otg_proto_msgTypes[202].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*FlowRSVPPathRsvpHopIpv4); i { case 0: return &v.state case 1: @@ -110639,8 +129558,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[33].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Device); i { + file_otg_proto_msgTypes[203].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*FlowRSVPPathObjectsClassTimeValues); i { case 0: return &v.state case 1: @@ -110651,8 +129570,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[34].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ProtocolOptions); i { + file_otg_proto_msgTypes[204].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*FlowRSVPPathObjectsTimeValuesCType); i { case 0: return &v.state case 1: @@ -110663,8 +129582,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[35].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DeviceIsisRouter); i { + file_otg_proto_msgTypes[205].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*FlowRSVPPathTimeValuesType1); i { case 0: return &v.state case 1: @@ -110675,8 +129594,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[36].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DeviceIsisMultiInstance); i { + file_otg_proto_msgTypes[206].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*FlowRSVPPathObjectsClassExplicitRoute); i { case 0: return &v.state case 1: @@ -110687,8 +129606,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[37].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*IsisInterface); i { + file_otg_proto_msgTypes[207].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*FlowRSVPPathObjectsClassExplicitRouteCType); i { case 0: return &v.state case 1: @@ -110699,8 +129618,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[38].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*IsisInterfaceLevel); i { + file_otg_proto_msgTypes[208].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*FlowRSVPPathExplicitRouteType1); i { case 0: return &v.state case 1: @@ -110711,8 +129630,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[39].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*IsisMT); i { + file_otg_proto_msgTypes[209].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*FlowRSVPType1ExplicitRouteSubobjects); i { case 0: return &v.state case 1: @@ -110723,8 +129642,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[40].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*LinkStateTE); i { + file_otg_proto_msgTypes[210].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*FlowRSVPType1ExplicitRouteSubobjectsType); i { case 0: return &v.state case 1: @@ -110735,8 +129654,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[41].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*LinkStatepriorityBandwidths); i { + file_otg_proto_msgTypes[211].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*FlowRSVPPathExplicitRouteType1Ipv4Prefix); i { case 0: return &v.state case 1: @@ -110747,8 +129666,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[42].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*IsisInterfaceAuthentication); i { + file_otg_proto_msgTypes[212].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*FlowRSVPPathExplicitRouteType1FourByteASNumber); i { case 0: return &v.state case 1: @@ -110759,8 +129678,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[43].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*IsisInterfaceAdvanced); i { + file_otg_proto_msgTypes[213].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*FlowRSVPExplicitRouteLength); i { case 0: return &v.state case 1: @@ -110771,8 +129690,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[44].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*IsisInterfaceLinkProtection); i { + file_otg_proto_msgTypes[214].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*FlowRSVPPathObjectsClassLabelRequest); i { case 0: return &v.state case 1: @@ -110783,8 +129702,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[45].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*IsisBasic); i { + file_otg_proto_msgTypes[215].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*FlowRSVPPathObjectsLabelRequestCType); i { case 0: return &v.state case 1: @@ -110795,8 +129714,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[46].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*IsisAdvanced); i { + file_otg_proto_msgTypes[216].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*FlowRSVPPathLabelRequestWithoutLabelRange); i { case 0: return &v.state case 1: @@ -110807,8 +129726,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[47].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*IsisAuthentication); i { + file_otg_proto_msgTypes[217].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*FlowRSVPPathObjectsClassSessionAttribute); i { case 0: return &v.state case 1: @@ -110819,8 +129738,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[48].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*IsisAuthenticationBase); i { + file_otg_proto_msgTypes[218].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*FlowRSVPPathObjectsSessionAttributeCType); i { case 0: return &v.state case 1: @@ -110831,8 +129750,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[49].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*IsisV4RouteRange); i { + file_otg_proto_msgTypes[219].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*FlowRSVPPathSessionAttributeLspTunnel); i { case 0: return &v.state case 1: @@ -110843,8 +129762,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[50].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*V4RouteAddress); i { + file_otg_proto_msgTypes[220].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*FlowRSVPPathSessionAttributeLspTunnelRa); i { case 0: return &v.state case 1: @@ -110855,8 +129774,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[51].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*V6RouteAddress); i { + file_otg_proto_msgTypes[221].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*FlowRSVPLspTunnelFlag); i { case 0: return &v.state case 1: @@ -110867,8 +129786,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[52].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*MACRouteAddress); i { + file_otg_proto_msgTypes[222].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*FlowRSVPPathObjectsClassSenderTemplate); i { case 0: return &v.state case 1: @@ -110879,8 +129798,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[53].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*IsisV6RouteRange); i { + file_otg_proto_msgTypes[223].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*FlowRSVPPathObjectsSenderTemplateCType); i { case 0: return &v.state case 1: @@ -110891,8 +129810,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[54].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DeviceBgpRouter); i { + file_otg_proto_msgTypes[224].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*FlowRSVPPathSenderTemplateLspTunnelIpv4); i { case 0: return &v.state case 1: @@ -110903,8 +129822,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[55].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DeviceBgpMessageHeaderError); i { + file_otg_proto_msgTypes[225].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*FlowRSVPPathObjectsClassSenderTspec); i { case 0: return &v.state case 1: @@ -110915,8 +129834,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[56].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DeviceBgpOpenMessageError); i { + file_otg_proto_msgTypes[226].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*FlowRSVPPathObjectsSenderTspecCType); i { case 0: return &v.state case 1: @@ -110927,8 +129846,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[57].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DeviceBgpUpdateMessageError); i { + file_otg_proto_msgTypes[227].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*FlowRSVPPathSenderTspecIntServ); i { case 0: return &v.state case 1: @@ -110939,8 +129858,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[58].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DeviceBgpHoldTimerExpired); i { + file_otg_proto_msgTypes[228].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*FlowRSVPPathObjectsClassRecordRoute); i { case 0: return &v.state case 1: @@ -110951,8 +129870,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[59].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DeviceBgpFiniteStateMachineError); i { + file_otg_proto_msgTypes[229].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*FlowRSVPPathObjectsRecordRouteCType); i { case 0: return &v.state case 1: @@ -110963,8 +129882,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[60].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DeviceBgpCeaseError); i { + file_otg_proto_msgTypes[230].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*FlowRSVPPathRecordRouteType1); i { case 0: return &v.state case 1: @@ -110975,8 +129894,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[61].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DeviceBgpCustomError); i { + file_otg_proto_msgTypes[231].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*FlowRSVPType1RecordRouteSubobjects); i { case 0: return &v.state case 1: @@ -110987,8 +129906,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[62].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*BgpV4Peer); i { + file_otg_proto_msgTypes[232].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*FlowRSVPPathObjectsRecordRouteSubObjectType); i { case 0: return &v.state case 1: @@ -110999,8 +129918,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[63].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*BgpV4Interface); i { + file_otg_proto_msgTypes[233].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*FlowRSVPPathRecordRouteType1Ipv4Address); i { case 0: return &v.state case 1: @@ -111011,8 +129930,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[64].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*BgpV4EthernetSegment); i { + file_otg_proto_msgTypes[234].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*FlowRSVPRecordRouteIPv4Flag); i { case 0: return &v.state case 1: @@ -111023,8 +129942,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[65].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*BgpEthernetSegmentDfElection); i { + file_otg_proto_msgTypes[235].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*FlowRSVPPathRecordRouteType1Label); i { case 0: return &v.state case 1: @@ -111035,8 +129954,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[66].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*BgpRouteAdvanced); i { + file_otg_proto_msgTypes[236].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*FlowRSVPRouteRecordLength); i { case 0: return &v.state case 1: @@ -111047,8 +129966,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[67].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*BgpCommunity); i { + file_otg_proto_msgTypes[237].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*FlowRSVPPathObjectsCustom); i { case 0: return &v.state case 1: @@ -111059,8 +129978,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[68].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*BgpExtCommunity); i { + file_otg_proto_msgTypes[238].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*FlowRSVPObjectOptionsCustomLength); i { case 0: return &v.state case 1: @@ -111071,8 +129990,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[69].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*BgpAsPath); i { + file_otg_proto_msgTypes[239].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*FlowSize); i { case 0: return &v.state case 1: @@ -111083,8 +130002,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[70].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*BgpAsPathSegment); i { + file_otg_proto_msgTypes[240].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*FlowSizeIncrement); i { case 0: return &v.state case 1: @@ -111095,8 +130014,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[71].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*BgpV4EvpnEvis); i { + file_otg_proto_msgTypes[241].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*FlowSizeRandom); i { case 0: return &v.state case 1: @@ -111107,8 +130026,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[72].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*BgpV4EviVxlan); i { + file_otg_proto_msgTypes[242].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*FlowSizeWeightPairs); i { case 0: return &v.state case 1: @@ -111119,8 +130038,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[73].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*BgpV4EviVxlanBroadcastDomain); i { + file_otg_proto_msgTypes[243].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*FlowSizeWeightPairsCustom); i { case 0: return &v.state case 1: @@ -111131,8 +130050,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[74].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*BgpCMacIpRange); i { + file_otg_proto_msgTypes[244].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*FlowRate); i { case 0: return &v.state case 1: @@ -111143,8 +130062,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[75].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*BgpRouteDistinguisher); i { + file_otg_proto_msgTypes[245].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*FlowDuration); i { case 0: return &v.state case 1: @@ -111155,8 +130074,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[76].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*BgpRouteTarget); i { + file_otg_proto_msgTypes[246].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*FlowContinuous); i { case 0: return &v.state case 1: @@ -111167,8 +130086,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[77].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*BgpAdvanced); i { + file_otg_proto_msgTypes[247].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*FlowDelay); i { case 0: return &v.state case 1: @@ -111179,8 +130098,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[78].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*BgpCapability); i { + file_otg_proto_msgTypes[248].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*FlowFixedPackets); i { case 0: return &v.state case 1: @@ -111191,8 +130110,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[79].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*BgpLearnedInformationFilter); i { + file_otg_proto_msgTypes[249].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*FlowFixedSeconds); i { case 0: return &v.state case 1: @@ -111203,8 +130122,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[80].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*BgpV4RouteRange); i { + file_otg_proto_msgTypes[250].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*FlowBurst); i { case 0: return &v.state case 1: @@ -111215,8 +130134,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[81].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*BgpAddPath); i { + file_otg_proto_msgTypes[251].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*FlowDurationInterBurstGap); i { case 0: return &v.state case 1: @@ -111227,8 +130146,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[82].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*BgpExtendedCommunity); i { + file_otg_proto_msgTypes[252].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*FlowMetrics); i { case 0: return &v.state case 1: @@ -111239,8 +130158,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[83].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*BgpExtendedCommunityTransitive2OctetAsTypeRouteTarget); i { + file_otg_proto_msgTypes[253].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*FlowLatencyMetrics); i { case 0: return &v.state case 1: @@ -111251,8 +130170,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[84].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*BgpExtendedCommunityTransitive2OctetAsTypeRouteOrigin); i { + file_otg_proto_msgTypes[254].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*FlowPredefinedTags); i { case 0: return &v.state case 1: @@ -111263,8 +130182,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[85].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*BgpExtendedCommunityTransitive2OctetAsType); i { + file_otg_proto_msgTypes[255].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*FlowRxTxRatio); i { case 0: return &v.state case 1: @@ -111275,8 +130194,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[86].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*BgpExtendedCommunityTransitiveIpv4AddressTypeRouteOrigin); i { + file_otg_proto_msgTypes[256].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*FlowRxTxRatioRxCount); i { case 0: return &v.state case 1: @@ -111287,8 +130206,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[87].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*BgpExtendedCommunityTransitiveIpv4AddressTypeRouteTarget); i { + file_otg_proto_msgTypes[257].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Event); i { case 0: return &v.state case 1: @@ -111299,8 +130218,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[88].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*BgpExtendedCommunityTransitiveIpv4AddressType); i { + file_otg_proto_msgTypes[258].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*EventRxRateThreshold); i { case 0: return &v.state case 1: @@ -111311,8 +130230,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[89].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*BgpExtendedCommunityTransitive4OctetAsTypeRouteTarget); i { + file_otg_proto_msgTypes[259].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*EventLink); i { case 0: return &v.state case 1: @@ -111323,8 +130242,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[90].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*BgpExtendedCommunityTransitive4OctetAsTypeRouteOrigin); i { + file_otg_proto_msgTypes[260].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*EventRouteAdvertiseWithdraw); i { case 0: return &v.state case 1: @@ -111335,8 +130254,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[91].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*BgpExtendedCommunityTransitive4OctetAsType); i { + file_otg_proto_msgTypes[261].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*EventRequest); i { case 0: return &v.state case 1: @@ -111347,8 +130266,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[92].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*BgpExtendedCommunityTransitiveOpaqueTypeColor); i { + file_otg_proto_msgTypes[262].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*EventSubscription); i { case 0: return &v.state case 1: @@ -111359,8 +130278,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[93].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*BgpExtendedCommunityTransitiveOpaqueTypeEncapsulation); i { + file_otg_proto_msgTypes[263].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Lldp); i { case 0: return &v.state case 1: @@ -111371,8 +130290,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[94].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*BgpExtendedCommunityTransitiveOpaqueType); i { + file_otg_proto_msgTypes[264].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*LldpConnection); i { case 0: return &v.state case 1: @@ -111383,8 +130302,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[95].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*BgpExtendedCommunityTransitiveEvpnTypeRouterMac); i { + file_otg_proto_msgTypes[265].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*LldpChassisId); i { case 0: return &v.state case 1: @@ -111395,8 +130314,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[96].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*BgpExtendedCommunityTransitiveEvpnType); i { + file_otg_proto_msgTypes[266].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*LldpPortId); i { case 0: return &v.state case 1: @@ -111407,8 +130326,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[97].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*BgpExtendedCommunityNonTransitive2OctetAsTypeLinkBandwidth); i { + file_otg_proto_msgTypes[267].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*LldpChassisMacSubType); i { case 0: return &v.state case 1: @@ -111419,8 +130338,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[98].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*BgpExtendedCommunityNonTransitive2OctetAsType); i { + file_otg_proto_msgTypes[268].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*LldpPortInterfaceNameSubType); i { case 0: return &v.state case 1: @@ -111431,8 +130350,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[99].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*BgpExtendedCommunityCustomType); i { + file_otg_proto_msgTypes[269].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*LldpSystemName); i { case 0: return &v.state case 1: @@ -111443,8 +130362,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[100].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*BgpV6RouteRange); i { + file_otg_proto_msgTypes[270].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Error); i { case 0: return &v.state case 1: @@ -111455,8 +130374,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[101].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*BgpSrteV4Policy); i { + file_otg_proto_msgTypes[271].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Warning); i { case 0: return &v.state case 1: @@ -111467,8 +130386,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[102].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*BgpSrteV4TunnelTlv); i { + file_otg_proto_msgTypes[272].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ConfigUpdate); i { case 0: return &v.state case 1: @@ -111479,8 +130398,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[103].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*BgpSrteRemoteEndpointSubTlv); i { + file_otg_proto_msgTypes[273].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*FlowsUpdate); i { case 0: return &v.state case 1: @@ -111491,8 +130410,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[104].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*BgpSrteColorSubTlv); i { + file_otg_proto_msgTypes[274].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ControlState); i { case 0: return &v.state case 1: @@ -111503,8 +130422,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[105].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*BgpSrteBindingSubTlv); i { + file_otg_proto_msgTypes[275].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*StatePort); i { case 0: return &v.state case 1: @@ -111515,8 +130434,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[106].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*BgpSrtePreferenceSubTlv); i { + file_otg_proto_msgTypes[276].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*StateTraffic); i { case 0: return &v.state case 1: @@ -111527,8 +130446,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[107].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*BgpSrtePolicyPrioritySubTlv); i { + file_otg_proto_msgTypes[277].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*StateProtocol); i { case 0: return &v.state case 1: @@ -111539,8 +130458,128 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[108].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*BgpSrtePolicyNameSubTlv); i { + file_otg_proto_msgTypes[278].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*StatePortLink); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_otg_proto_msgTypes[279].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*StatePortCapture); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_otg_proto_msgTypes[280].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*StateTrafficFlowTransmit); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_otg_proto_msgTypes[281].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*StateProtocolAll); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_otg_proto_msgTypes[282].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*StateProtocolRoute); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_otg_proto_msgTypes[283].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*StateProtocolLacp); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_otg_proto_msgTypes[284].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*StateProtocolLacpAdmin); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_otg_proto_msgTypes[285].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*StateProtocolLacpMemberPorts); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_otg_proto_msgTypes[286].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*StateProtocolBgp); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_otg_proto_msgTypes[287].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*StateProtocolBgpPeers); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_otg_proto_msgTypes[288].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*StateProtocolIsis); i { case 0: return &v.state case 1: @@ -111551,8 +130590,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[109].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*BgpSrteExplicitNullLabelPolicySubTlv); i { + file_otg_proto_msgTypes[289].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*StateProtocolIsisRouters); i { case 0: return &v.state case 1: @@ -111563,8 +130602,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[110].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*BgpSrteSegmentList); i { + file_otg_proto_msgTypes[290].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ControlAction); i { case 0: return &v.state case 1: @@ -111575,8 +130614,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[111].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*BgpSrteSegment); i { + file_otg_proto_msgTypes[291].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ControlActionResponse); i { case 0: return &v.state case 1: @@ -111587,8 +130626,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[112].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*BgpSrteSrMplsSid); i { + file_otg_proto_msgTypes[292].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ActionResponse); i { case 0: return &v.state case 1: @@ -111599,8 +130638,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[113].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*BgpSrteSRv6SIDEndpointBehaviorAndStructure); i { + file_otg_proto_msgTypes[293].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ActionProtocol); i { case 0: return &v.state case 1: @@ -111611,8 +130650,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[114].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*BgpSrteSegmentATypeSubTlv); i { + file_otg_proto_msgTypes[294].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ActionResponseProtocol); i { case 0: return &v.state case 1: @@ -111623,8 +130662,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[115].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*BgpSrteSegmentBTypeSubTlv); i { + file_otg_proto_msgTypes[295].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ActionProtocolIpv4); i { case 0: return &v.state case 1: @@ -111635,8 +130674,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[116].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*BgpSrteSegmentCTypeSubTlv); i { + file_otg_proto_msgTypes[296].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ActionResponseProtocolIpv4); i { case 0: return &v.state case 1: @@ -111647,8 +130686,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[117].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*BgpSrteSegmentDTypeSubTlv); i { + file_otg_proto_msgTypes[297].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ActionProtocolIpv4Ping); i { case 0: return &v.state case 1: @@ -111659,8 +130698,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[118].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*BgpSrteSegmentETypeSubTlv); i { + file_otg_proto_msgTypes[298].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ActionProtocolIpv4PingRequest); i { case 0: return &v.state case 1: @@ -111671,8 +130710,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[119].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*BgpSrteSegmentFTypeSubTlv); i { + file_otg_proto_msgTypes[299].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ActionResponseProtocolIpv4Ping); i { case 0: return &v.state case 1: @@ -111683,8 +130722,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[120].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*BgpSrteSegmentGTypeSubTlv); i { + file_otg_proto_msgTypes[300].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ActionResponseProtocolIpv4PingResponse); i { case 0: return &v.state case 1: @@ -111695,8 +130734,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[121].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*BgpSrteSegmentHTypeSubTlv); i { + file_otg_proto_msgTypes[301].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ActionProtocolIpv6); i { case 0: return &v.state case 1: @@ -111707,8 +130746,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[122].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*BgpSrteSegmentITypeSubTlv); i { + file_otg_proto_msgTypes[302].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ActionResponseProtocolIpv6); i { case 0: return &v.state case 1: @@ -111719,8 +130758,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[123].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*BgpSrteSegmentJTypeSubTlv); i { + file_otg_proto_msgTypes[303].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ActionProtocolIpv6Ping); i { case 0: return &v.state case 1: @@ -111731,8 +130770,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[124].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*BgpSrteSegmentKTypeSubTlv); i { + file_otg_proto_msgTypes[304].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ActionProtocolIpv6PingRequest); i { case 0: return &v.state case 1: @@ -111743,8 +130782,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[125].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*BgpSrteV6Policy); i { + file_otg_proto_msgTypes[305].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ActionResponseProtocolIpv6Ping); i { case 0: return &v.state case 1: @@ -111755,8 +130794,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[126].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*BgpSrteV6TunnelTlv); i { + file_otg_proto_msgTypes[306].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ActionResponseProtocolIpv6PingResponse); i { case 0: return &v.state case 1: @@ -111767,8 +130806,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[127].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*BgpGracefulRestart); i { + file_otg_proto_msgTypes[307].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ActionProtocolBgp); i { case 0: return &v.state case 1: @@ -111779,8 +130818,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[128].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*BgpV6Peer); i { + file_otg_proto_msgTypes[308].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ActionProtocolBgpNotification); i { case 0: return &v.state case 1: @@ -111791,8 +130830,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[129].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*BgpV6Interface); i { + file_otg_proto_msgTypes[309].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ActionProtocolBgpInitiateGracefulRestart); i { case 0: return &v.state case 1: @@ -111803,8 +130842,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[130].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*BgpV6SegmentRouting); i { + file_otg_proto_msgTypes[310].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*MetricsRequest); i { case 0: return &v.state case 1: @@ -111815,8 +130854,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[131].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*BgpV6EthernetSegment); i { + file_otg_proto_msgTypes[311].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*MetricsResponse); i { case 0: return &v.state case 1: @@ -111827,8 +130866,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[132].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*BgpV6EvpnEvis); i { + file_otg_proto_msgTypes[312].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PortMetricsRequest); i { case 0: return &v.state case 1: @@ -111839,8 +130878,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[133].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*BgpV6EviVxlan); i { + file_otg_proto_msgTypes[313].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PortMetric); i { case 0: return &v.state case 1: @@ -111851,8 +130890,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[134].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*BgpV6EviVxlanBroadcastDomain); i { + file_otg_proto_msgTypes[314].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*FlowMetricsRequest); i { case 0: return &v.state case 1: @@ -111863,8 +130902,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[135].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DeviceVxlan); i { + file_otg_proto_msgTypes[315].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*FlowTaggedMetricsFilter); i { case 0: return &v.state case 1: @@ -111875,8 +130914,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[136].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*VxlanV4Tunnel); i { + file_otg_proto_msgTypes[316].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*FlowMetricTagFilter); i { case 0: return &v.state case 1: @@ -111887,8 +130926,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[137].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*VxlanV6Tunnel); i { + file_otg_proto_msgTypes[317].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*FlowMetric); i { case 0: return &v.state case 1: @@ -111899,8 +130938,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[138].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*VxlanV4TunnelDestinationIPMode); i { + file_otg_proto_msgTypes[318].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*FlowTaggedMetric); i { case 0: return &v.state case 1: @@ -111911,8 +130950,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[139].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*VxlanV6TunnelDestinationIPMode); i { + file_otg_proto_msgTypes[319].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*FlowMetricTag); i { case 0: return &v.state case 1: @@ -111923,8 +130962,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[140].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*VxlanV4TunnelDestinationIPModeUnicast); i { + file_otg_proto_msgTypes[320].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*FlowMetricTagValue); i { case 0: return &v.state case 1: @@ -111935,8 +130974,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[141].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*VxlanV6TunnelDestinationIPModeUnicast); i { + file_otg_proto_msgTypes[321].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*MetricTimestamp); i { case 0: return &v.state case 1: @@ -111947,8 +130986,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[142].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*VxlanTunnelDestinationIPModeUnicastArpSuppressionCache); i { + file_otg_proto_msgTypes[322].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*MetricLatency); i { case 0: return &v.state case 1: @@ -111959,8 +130998,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[143].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*VxlanV4TunnelDestinationIPModeUnicastVtep); i { + file_otg_proto_msgTypes[323].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Bgpv4MetricsRequest); i { case 0: return &v.state case 1: @@ -111971,8 +131010,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[144].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*VxlanV6TunnelDestinationIPModeUnicastVtep); i { + file_otg_proto_msgTypes[324].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Bgpv4Metric); i { case 0: return &v.state case 1: @@ -111983,8 +131022,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[145].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*VxlanV4TunnelDestinationIPModeMulticast); i { + file_otg_proto_msgTypes[325].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Bgpv6MetricsRequest); i { case 0: return &v.state case 1: @@ -111995,8 +131034,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[146].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*VxlanV6TunnelDestinationIPModeMulticast); i { + file_otg_proto_msgTypes[326].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Bgpv6Metric); i { case 0: return &v.state case 1: @@ -112007,8 +131046,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[147].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DeviceRsvp); i { + file_otg_proto_msgTypes[327].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*IsisMetricsRequest); i { case 0: return &v.state case 1: @@ -112019,8 +131058,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[148].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*RsvpIpv4Interface); i { + file_otg_proto_msgTypes[328].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*IsisMetric); i { case 0: return &v.state case 1: @@ -112031,8 +131070,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[149].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*RsvpLspIpv4Interface); i { + file_otg_proto_msgTypes[329].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*LagMetricsRequest); i { case 0: return &v.state case 1: @@ -112043,8 +131082,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[150].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*RsvpLspIpv4InterfaceP2PEgressIpv4Lsp); i { + file_otg_proto_msgTypes[330].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*LagMetric); i { case 0: return &v.state case 1: @@ -112055,8 +131094,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[151].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*RsvpLspIpv4InterfaceP2PIngressIpv4Lsp); i { + file_otg_proto_msgTypes[331].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*LacpMetricsRequest); i { case 0: return &v.state case 1: @@ -112067,8 +131106,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[152].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*RsvpSessionAttribute); i { + file_otg_proto_msgTypes[332].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*LacpMetric); i { case 0: return &v.state case 1: @@ -112079,8 +131118,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[153].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*RsvpResourceAffinities); i { + file_otg_proto_msgTypes[333].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*LldpMetricsRequest); i { case 0: return &v.state case 1: @@ -112091,8 +131130,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[154].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*RsvpTspec); i { + file_otg_proto_msgTypes[334].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*LldpMetric); i { case 0: return &v.state case 1: @@ -112103,8 +131142,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[155].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*RsvpFastReroute); i { + file_otg_proto_msgTypes[335].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*RsvpMetricsRequest); i { case 0: return &v.state case 1: @@ -112115,8 +131154,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[156].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*RsvpEro); i { + file_otg_proto_msgTypes[336].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*RsvpMetric); i { case 0: return &v.state case 1: @@ -112127,8 +131166,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[157].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*RsvpEroSubobject); i { + file_otg_proto_msgTypes[337].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*StatesRequest); i { case 0: return &v.state case 1: @@ -112139,8 +131178,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[158].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Flow); i { + file_otg_proto_msgTypes[338].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*StatesResponse); i { case 0: return &v.state case 1: @@ -112151,8 +131190,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[159].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*FlowTxRx); i { + file_otg_proto_msgTypes[339].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Neighborsv4StatesRequest); i { case 0: return &v.state case 1: @@ -112163,8 +131202,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[160].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*FlowPort); i { + file_otg_proto_msgTypes[340].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Neighborsv4State); i { case 0: return &v.state case 1: @@ -112175,8 +131214,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[161].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*FlowRouter); i { + file_otg_proto_msgTypes[341].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Neighborsv6StatesRequest); i { case 0: return &v.state case 1: @@ -112187,8 +131226,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[162].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*FlowHeader); i { + file_otg_proto_msgTypes[342].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Neighborsv6State); i { case 0: return &v.state case 1: @@ -112199,8 +131238,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[163].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*FlowCustom); i { + file_otg_proto_msgTypes[343].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*BgpPrefixStateRequest); i { case 0: return &v.state case 1: @@ -112211,8 +131250,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[164].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*FlowCustomMetricTag); i { + file_otg_proto_msgTypes[344].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*BgpPrefixIpv4UnicastFilter); i { case 0: return &v.state case 1: @@ -112223,8 +131262,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[165].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*FlowEthernet); i { + file_otg_proto_msgTypes[345].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*BgpPrefixIpv6UnicastFilter); i { case 0: return &v.state case 1: @@ -112235,8 +131274,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[166].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*FlowVlan); i { + file_otg_proto_msgTypes[346].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*BgpPrefixesState); i { case 0: return &v.state case 1: @@ -112247,8 +131286,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[167].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*FlowVxlan); i { + file_otg_proto_msgTypes[347].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*BgpPrefixIpv4UnicastState); i { case 0: return &v.state case 1: @@ -112259,8 +131298,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[168].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*FlowIpv4); i { + file_otg_proto_msgTypes[348].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*BgpPrefixIpv6UnicastState); i { case 0: return &v.state case 1: @@ -112271,8 +131310,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[169].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*FlowIpv4Priority); i { + file_otg_proto_msgTypes[349].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ResultBgpCommunity); i { case 0: return &v.state case 1: @@ -112283,8 +131322,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[170].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*FlowIpv4Dscp); i { + file_otg_proto_msgTypes[350].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ResultBgpAsPath); i { case 0: return &v.state case 1: @@ -112295,8 +131334,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[171].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*FlowIpv4Tos); i { + file_otg_proto_msgTypes[351].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ResultBgpAsPathSegment); i { case 0: return &v.state case 1: @@ -112307,8 +131346,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[172].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*FlowIpv6); i { + file_otg_proto_msgTypes[352].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*IsisLspsStateRequest); i { case 0: return &v.state case 1: @@ -112319,8 +131358,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[173].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*FlowPfcPause); i { + file_otg_proto_msgTypes[353].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*IsisLspsState); i { case 0: return &v.state case 1: @@ -112331,8 +131370,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[174].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*FlowEthernetPause); i { + file_otg_proto_msgTypes[354].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*IsisLspState); i { case 0: return &v.state case 1: @@ -112343,8 +131382,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[175].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*FlowTcp); i { + file_otg_proto_msgTypes[355].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*IsisLspTlvs); i { case 0: return &v.state case 1: @@ -112355,8 +131394,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[176].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*FlowUdp); i { + file_otg_proto_msgTypes[356].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*IsisLspHostname); i { case 0: return &v.state case 1: @@ -112367,8 +131406,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[177].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*FlowGre); i { + file_otg_proto_msgTypes[357].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*IsisLspFlags); i { case 0: return &v.state case 1: @@ -112379,8 +131418,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[178].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*FlowGtpv1); i { + file_otg_proto_msgTypes[358].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*IsisLspIsReachabilityTlv); i { case 0: return &v.state case 1: @@ -112391,8 +131430,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[179].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*FlowGtpExtension); i { + file_otg_proto_msgTypes[359].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*IsisLspExtendedIsReachabilityTlv); i { case 0: return &v.state case 1: @@ -112403,8 +131442,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[180].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*FlowGtpv2); i { + file_otg_proto_msgTypes[360].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*IsisLspneighbor); i { case 0: return &v.state case 1: @@ -112415,8 +131454,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[181].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*FlowArp); i { + file_otg_proto_msgTypes[361].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*IsisLspIpv4InternalReachabilityTlv); i { case 0: return &v.state case 1: @@ -112427,8 +131466,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[182].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*FlowIcmp); i { + file_otg_proto_msgTypes[362].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*IsisLspIpv4ExternalReachabilityTlv); i { case 0: return &v.state case 1: @@ -112439,8 +131478,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[183].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*FlowIcmpEcho); i { + file_otg_proto_msgTypes[363].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*IsisLspV4Prefix); i { case 0: return &v.state case 1: @@ -112451,8 +131490,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[184].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*FlowIcmpv6); i { + file_otg_proto_msgTypes[364].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*IsisLspExtendedIpv4ReachabilityTlv); i { case 0: return &v.state case 1: @@ -112463,8 +131502,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[185].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*FlowIcmpv6Echo); i { + file_otg_proto_msgTypes[365].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*IsisLspExtendedV4Prefix); i { case 0: return &v.state case 1: @@ -112475,8 +131514,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[186].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*FlowPpp); i { + file_otg_proto_msgTypes[366].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*IsisLspIpv6ReachabilityTlv); i { case 0: return &v.state case 1: @@ -112487,8 +131526,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[187].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*FlowIgmpv1); i { + file_otg_proto_msgTypes[367].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*IsisLspV6Prefix); i { case 0: return &v.state case 1: @@ -112499,8 +131538,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[188].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*FlowMpls); i { + file_otg_proto_msgTypes[368].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*IsisLspPrefixAttributes); i { case 0: return &v.state case 1: @@ -112511,8 +131550,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[189].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*FlowSize); i { + file_otg_proto_msgTypes[369].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*LldpNeighborsStateRequest); i { case 0: return &v.state case 1: @@ -112523,8 +131562,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[190].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*FlowSizeIncrement); i { + file_otg_proto_msgTypes[370].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*LldpNeighborsState); i { case 0: return &v.state case 1: @@ -112535,8 +131574,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[191].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*FlowSizeRandom); i { + file_otg_proto_msgTypes[371].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*LldpCustomTLVState); i { case 0: return &v.state case 1: @@ -112547,8 +131586,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[192].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*FlowSizeWeightPairs); i { + file_otg_proto_msgTypes[372].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*LldpCapabilityState); i { case 0: return &v.state case 1: @@ -112559,8 +131598,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[193].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*FlowSizeWeightPairsCustom); i { + file_otg_proto_msgTypes[373].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*RsvpLspsStateRequest); i { case 0: return &v.state case 1: @@ -112571,8 +131610,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[194].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*FlowRate); i { + file_otg_proto_msgTypes[374].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*RsvpLspsState); i { case 0: return &v.state case 1: @@ -112583,8 +131622,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[195].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*FlowDuration); i { + file_otg_proto_msgTypes[375].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*RsvpIPv4LspState); i { case 0: return &v.state case 1: @@ -112595,8 +131634,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[196].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*FlowContinuous); i { + file_otg_proto_msgTypes[376].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*RsvpLspState); i { case 0: return &v.state case 1: @@ -112607,8 +131646,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[197].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*FlowDelay); i { + file_otg_proto_msgTypes[377].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*RsvpLspIpv4Rro); i { case 0: return &v.state case 1: @@ -112619,8 +131658,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[198].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*FlowFixedPackets); i { + file_otg_proto_msgTypes[378].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*RsvpLspIpv4Ero); i { case 0: return &v.state case 1: @@ -112631,8 +131670,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[199].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*FlowFixedSeconds); i { + file_otg_proto_msgTypes[379].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*CaptureRequest); i { case 0: return &v.state case 1: @@ -112643,8 +131682,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[200].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*FlowBurst); i { + file_otg_proto_msgTypes[380].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowEthernetDstCounter); i { case 0: return &v.state case 1: @@ -112655,8 +131694,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[201].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*FlowDurationInterBurstGap); i { + file_otg_proto_msgTypes[381].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowEthernetDstMetricTag); i { case 0: return &v.state case 1: @@ -112667,8 +131706,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[202].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*FlowMetrics); i { + file_otg_proto_msgTypes[382].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowEthernetDst); i { case 0: return &v.state case 1: @@ -112679,8 +131718,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[203].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*FlowLatencyMetrics); i { + file_otg_proto_msgTypes[383].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowEthernetSrcCounter); i { case 0: return &v.state case 1: @@ -112691,8 +131730,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[204].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*FlowPredefinedTags); i { + file_otg_proto_msgTypes[384].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowEthernetSrcMetricTag); i { case 0: return &v.state case 1: @@ -112703,8 +131742,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[205].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*FlowRxTxRatio); i { + file_otg_proto_msgTypes[385].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowEthernetSrc); i { case 0: return &v.state case 1: @@ -112715,8 +131754,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[206].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*FlowRxTxRatioRxCount); i { + file_otg_proto_msgTypes[386].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowEthernetEtherTypeCounter); i { case 0: return &v.state case 1: @@ -112727,8 +131766,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[207].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Event); i { + file_otg_proto_msgTypes[387].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowEthernetEtherTypeMetricTag); i { case 0: return &v.state case 1: @@ -112739,8 +131778,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[208].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*EventRxRateThreshold); i { + file_otg_proto_msgTypes[388].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowEthernetEtherType); i { case 0: return &v.state case 1: @@ -112751,8 +131790,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[209].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*EventLink); i { + file_otg_proto_msgTypes[389].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowEthernetPfcQueueCounter); i { case 0: return &v.state case 1: @@ -112763,8 +131802,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[210].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*EventRouteAdvertiseWithdraw); i { + file_otg_proto_msgTypes[390].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowEthernetPfcQueueMetricTag); i { case 0: return &v.state case 1: @@ -112775,8 +131814,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[211].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*EventRequest); i { + file_otg_proto_msgTypes[391].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowEthernetPfcQueue); i { case 0: return &v.state case 1: @@ -112787,8 +131826,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[212].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*EventSubscription); i { + file_otg_proto_msgTypes[392].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowVlanPriorityCounter); i { case 0: return &v.state case 1: @@ -112799,8 +131838,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[213].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Lldp); i { + file_otg_proto_msgTypes[393].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowVlanPriorityMetricTag); i { case 0: return &v.state case 1: @@ -112811,8 +131850,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[214].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*LldpConnection); i { + file_otg_proto_msgTypes[394].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowVlanPriority); i { case 0: return &v.state case 1: @@ -112823,8 +131862,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[215].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*LldpChassisId); i { + file_otg_proto_msgTypes[395].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowVlanCfiCounter); i { case 0: return &v.state case 1: @@ -112835,8 +131874,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[216].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*LldpPortId); i { + file_otg_proto_msgTypes[396].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowVlanCfiMetricTag); i { case 0: return &v.state case 1: @@ -112847,8 +131886,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[217].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*LldpChassisMacSubType); i { + file_otg_proto_msgTypes[397].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowVlanCfi); i { case 0: return &v.state case 1: @@ -112859,8 +131898,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[218].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*LldpPortInterfaceNameSubType); i { + file_otg_proto_msgTypes[398].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowVlanIdCounter); i { case 0: return &v.state case 1: @@ -112871,8 +131910,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[219].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*LldpSystemName); i { + file_otg_proto_msgTypes[399].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowVlanIdMetricTag); i { case 0: return &v.state case 1: @@ -112883,8 +131922,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[220].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Error); i { + file_otg_proto_msgTypes[400].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowVlanId); i { case 0: return &v.state case 1: @@ -112895,8 +131934,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[221].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Warning); i { + file_otg_proto_msgTypes[401].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowVlanTpidCounter); i { case 0: return &v.state case 1: @@ -112907,8 +131946,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[222].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ConfigUpdate); i { + file_otg_proto_msgTypes[402].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowVlanTpidMetricTag); i { case 0: return &v.state case 1: @@ -112919,8 +131958,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[223].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*FlowsUpdate); i { + file_otg_proto_msgTypes[403].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowVlanTpid); i { case 0: return &v.state case 1: @@ -112931,8 +131970,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[224].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ControlState); i { + file_otg_proto_msgTypes[404].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowVxlanFlagsCounter); i { case 0: return &v.state case 1: @@ -112943,8 +131982,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[225].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*StatePort); i { + file_otg_proto_msgTypes[405].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowVxlanFlagsMetricTag); i { case 0: return &v.state case 1: @@ -112955,8 +131994,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[226].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*StateTraffic); i { + file_otg_proto_msgTypes[406].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowVxlanFlags); i { case 0: return &v.state case 1: @@ -112967,8 +132006,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[227].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*StateProtocol); i { + file_otg_proto_msgTypes[407].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowVxlanReserved0Counter); i { case 0: return &v.state case 1: @@ -112979,8 +132018,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[228].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*StatePortLink); i { + file_otg_proto_msgTypes[408].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowVxlanReserved0MetricTag); i { case 0: return &v.state case 1: @@ -112991,8 +132030,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[229].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*StatePortCapture); i { + file_otg_proto_msgTypes[409].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowVxlanReserved0); i { case 0: return &v.state case 1: @@ -113003,8 +132042,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[230].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*StateTrafficFlowTransmit); i { + file_otg_proto_msgTypes[410].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowVxlanVniCounter); i { case 0: return &v.state case 1: @@ -113015,8 +132054,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[231].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*StateProtocolAll); i { + file_otg_proto_msgTypes[411].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowVxlanVniMetricTag); i { case 0: return &v.state case 1: @@ -113027,8 +132066,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[232].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*StateProtocolRoute); i { + file_otg_proto_msgTypes[412].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowVxlanVni); i { case 0: return &v.state case 1: @@ -113039,8 +132078,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[233].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*StateProtocolLacp); i { + file_otg_proto_msgTypes[413].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowVxlanReserved1Counter); i { case 0: return &v.state case 1: @@ -113051,8 +132090,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[234].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*StateProtocolLacpAdmin); i { + file_otg_proto_msgTypes[414].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowVxlanReserved1MetricTag); i { case 0: return &v.state case 1: @@ -113063,8 +132102,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[235].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*StateProtocolLacpMemberPorts); i { + file_otg_proto_msgTypes[415].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowVxlanReserved1); i { case 0: return &v.state case 1: @@ -113075,8 +132114,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[236].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*StateProtocolBgp); i { + file_otg_proto_msgTypes[416].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowIpv4VersionCounter); i { case 0: return &v.state case 1: @@ -113087,8 +132126,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[237].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*StateProtocolBgpPeers); i { + file_otg_proto_msgTypes[417].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowIpv4VersionMetricTag); i { case 0: return &v.state case 1: @@ -113099,8 +132138,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[238].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*StateProtocolIsis); i { + file_otg_proto_msgTypes[418].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowIpv4Version); i { case 0: return &v.state case 1: @@ -113111,8 +132150,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[239].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*StateProtocolIsisRouters); i { + file_otg_proto_msgTypes[419].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowIpv4HeaderLengthCounter); i { case 0: return &v.state case 1: @@ -113123,8 +132162,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[240].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ControlAction); i { + file_otg_proto_msgTypes[420].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowIpv4HeaderLengthMetricTag); i { case 0: return &v.state case 1: @@ -113135,8 +132174,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[241].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ControlActionResponse); i { + file_otg_proto_msgTypes[421].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowIpv4HeaderLength); i { case 0: return &v.state case 1: @@ -113147,8 +132186,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[242].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ActionResponse); i { + file_otg_proto_msgTypes[422].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowIpv4TotalLengthCounter); i { case 0: return &v.state case 1: @@ -113159,8 +132198,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[243].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ActionProtocol); i { + file_otg_proto_msgTypes[423].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowIpv4TotalLengthMetricTag); i { case 0: return &v.state case 1: @@ -113171,8 +132210,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[244].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ActionResponseProtocol); i { + file_otg_proto_msgTypes[424].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowIpv4TotalLength); i { case 0: return &v.state case 1: @@ -113183,8 +132222,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[245].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ActionProtocolIpv4); i { + file_otg_proto_msgTypes[425].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowIpv4IdentificationCounter); i { case 0: return &v.state case 1: @@ -113195,8 +132234,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[246].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ActionResponseProtocolIpv4); i { + file_otg_proto_msgTypes[426].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowIpv4IdentificationMetricTag); i { case 0: return &v.state case 1: @@ -113207,8 +132246,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[247].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ActionProtocolIpv4Ping); i { + file_otg_proto_msgTypes[427].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowIpv4Identification); i { case 0: return &v.state case 1: @@ -113219,8 +132258,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[248].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ActionProtocolIpv4PingRequest); i { + file_otg_proto_msgTypes[428].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowIpv4ReservedCounter); i { case 0: return &v.state case 1: @@ -113231,8 +132270,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[249].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ActionResponseProtocolIpv4Ping); i { + file_otg_proto_msgTypes[429].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowIpv4ReservedMetricTag); i { case 0: return &v.state case 1: @@ -113243,8 +132282,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[250].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ActionResponseProtocolIpv4PingResponse); i { + file_otg_proto_msgTypes[430].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowIpv4Reserved); i { case 0: return &v.state case 1: @@ -113255,8 +132294,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[251].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ActionProtocolIpv6); i { + file_otg_proto_msgTypes[431].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowIpv4DontFragmentCounter); i { case 0: return &v.state case 1: @@ -113267,8 +132306,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[252].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ActionResponseProtocolIpv6); i { + file_otg_proto_msgTypes[432].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowIpv4DontFragmentMetricTag); i { case 0: return &v.state case 1: @@ -113279,8 +132318,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[253].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ActionProtocolIpv6Ping); i { + file_otg_proto_msgTypes[433].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowIpv4DontFragment); i { case 0: return &v.state case 1: @@ -113291,8 +132330,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[254].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ActionProtocolIpv6PingRequest); i { + file_otg_proto_msgTypes[434].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowIpv4MoreFragmentsCounter); i { case 0: return &v.state case 1: @@ -113303,8 +132342,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[255].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ActionResponseProtocolIpv6Ping); i { + file_otg_proto_msgTypes[435].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowIpv4MoreFragmentsMetricTag); i { case 0: return &v.state case 1: @@ -113315,8 +132354,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[256].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ActionResponseProtocolIpv6PingResponse); i { + file_otg_proto_msgTypes[436].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowIpv4MoreFragments); i { case 0: return &v.state case 1: @@ -113327,8 +132366,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[257].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ActionProtocolBgp); i { + file_otg_proto_msgTypes[437].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowIpv4FragmentOffsetCounter); i { case 0: return &v.state case 1: @@ -113339,8 +132378,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[258].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ActionProtocolBgpNotification); i { + file_otg_proto_msgTypes[438].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowIpv4FragmentOffsetMetricTag); i { case 0: return &v.state case 1: @@ -113351,8 +132390,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[259].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ActionProtocolBgpInitiateGracefulRestart); i { + file_otg_proto_msgTypes[439].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowIpv4FragmentOffset); i { case 0: return &v.state case 1: @@ -113363,8 +132402,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[260].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*MetricsRequest); i { + file_otg_proto_msgTypes[440].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowIpv4TimeToLiveCounter); i { case 0: return &v.state case 1: @@ -113375,8 +132414,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[261].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*MetricsResponse); i { + file_otg_proto_msgTypes[441].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowIpv4TimeToLiveMetricTag); i { case 0: return &v.state case 1: @@ -113387,8 +132426,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[262].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PortMetricsRequest); i { + file_otg_proto_msgTypes[442].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowIpv4TimeToLive); i { case 0: return &v.state case 1: @@ -113399,8 +132438,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[263].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PortMetric); i { + file_otg_proto_msgTypes[443].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowIpv4ProtocolCounter); i { case 0: return &v.state case 1: @@ -113411,8 +132450,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[264].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*FlowMetricsRequest); i { + file_otg_proto_msgTypes[444].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowIpv4ProtocolMetricTag); i { case 0: return &v.state case 1: @@ -113423,8 +132462,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[265].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*FlowTaggedMetricsFilter); i { + file_otg_proto_msgTypes[445].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowIpv4Protocol); i { case 0: return &v.state case 1: @@ -113435,8 +132474,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[266].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*FlowMetricTagFilter); i { + file_otg_proto_msgTypes[446].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowIpv4HeaderChecksum); i { case 0: return &v.state case 1: @@ -113447,8 +132486,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[267].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*FlowMetric); i { + file_otg_proto_msgTypes[447].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowIpv4SrcCounter); i { case 0: return &v.state case 1: @@ -113459,8 +132498,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[268].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*FlowTaggedMetric); i { + file_otg_proto_msgTypes[448].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowIpv4SrcMetricTag); i { case 0: return &v.state case 1: @@ -113471,8 +132510,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[269].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*FlowMetricTag); i { + file_otg_proto_msgTypes[449].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowIpv4Src); i { case 0: return &v.state case 1: @@ -113483,8 +132522,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[270].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*FlowMetricTagValue); i { + file_otg_proto_msgTypes[450].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowIpv4DstCounter); i { case 0: return &v.state case 1: @@ -113495,8 +132534,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[271].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*MetricTimestamp); i { + file_otg_proto_msgTypes[451].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowIpv4DstMetricTag); i { case 0: return &v.state case 1: @@ -113507,8 +132546,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[272].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*MetricLatency); i { + file_otg_proto_msgTypes[452].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowIpv4Dst); i { case 0: return &v.state case 1: @@ -113519,8 +132558,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[273].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Bgpv4MetricsRequest); i { + file_otg_proto_msgTypes[453].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowIpv4PriorityRawCounter); i { case 0: return &v.state case 1: @@ -113531,8 +132570,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[274].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Bgpv4Metric); i { + file_otg_proto_msgTypes[454].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowIpv4PriorityRawMetricTag); i { case 0: return &v.state case 1: @@ -113543,8 +132582,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[275].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Bgpv6MetricsRequest); i { + file_otg_proto_msgTypes[455].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowIpv4PriorityRaw); i { case 0: return &v.state case 1: @@ -113555,8 +132594,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[276].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Bgpv6Metric); i { + file_otg_proto_msgTypes[456].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowIpv4DscpPhbCounter); i { case 0: return &v.state case 1: @@ -113567,8 +132606,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[277].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*IsisMetricsRequest); i { + file_otg_proto_msgTypes[457].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowIpv4DscpPhbMetricTag); i { case 0: return &v.state case 1: @@ -113579,8 +132618,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[278].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*IsisMetric); i { + file_otg_proto_msgTypes[458].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowIpv4DscpPhb); i { case 0: return &v.state case 1: @@ -113591,8 +132630,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[279].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*LagMetricsRequest); i { + file_otg_proto_msgTypes[459].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowIpv4DscpEcnCounter); i { case 0: return &v.state case 1: @@ -113603,8 +132642,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[280].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*LagMetric); i { + file_otg_proto_msgTypes[460].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowIpv4DscpEcnMetricTag); i { case 0: return &v.state case 1: @@ -113615,8 +132654,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[281].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*LacpMetricsRequest); i { + file_otg_proto_msgTypes[461].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowIpv4DscpEcn); i { case 0: return &v.state case 1: @@ -113627,8 +132666,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[282].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*LacpMetric); i { + file_otg_proto_msgTypes[462].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowIpv4TosPrecedenceCounter); i { case 0: return &v.state case 1: @@ -113639,8 +132678,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[283].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*LldpMetricsRequest); i { + file_otg_proto_msgTypes[463].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowIpv4TosPrecedenceMetricTag); i { case 0: return &v.state case 1: @@ -113651,8 +132690,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[284].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*LldpMetric); i { + file_otg_proto_msgTypes[464].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowIpv4TosPrecedence); i { case 0: return &v.state case 1: @@ -113663,8 +132702,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[285].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*RsvpMetricsRequest); i { + file_otg_proto_msgTypes[465].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowIpv4TosDelayCounter); i { case 0: return &v.state case 1: @@ -113675,8 +132714,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[286].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*RsvpMetric); i { + file_otg_proto_msgTypes[466].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowIpv4TosDelayMetricTag); i { case 0: return &v.state case 1: @@ -113687,8 +132726,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[287].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*StatesRequest); i { + file_otg_proto_msgTypes[467].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowIpv4TosDelay); i { case 0: return &v.state case 1: @@ -113699,8 +132738,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[288].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*StatesResponse); i { + file_otg_proto_msgTypes[468].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowIpv4TosThroughputCounter); i { case 0: return &v.state case 1: @@ -113711,8 +132750,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[289].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Neighborsv4StatesRequest); i { + file_otg_proto_msgTypes[469].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowIpv4TosThroughputMetricTag); i { case 0: return &v.state case 1: @@ -113723,8 +132762,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[290].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Neighborsv4State); i { + file_otg_proto_msgTypes[470].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowIpv4TosThroughput); i { case 0: return &v.state case 1: @@ -113735,8 +132774,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[291].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Neighborsv6StatesRequest); i { + file_otg_proto_msgTypes[471].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowIpv4TosReliabilityCounter); i { case 0: return &v.state case 1: @@ -113747,8 +132786,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[292].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Neighborsv6State); i { + file_otg_proto_msgTypes[472].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowIpv4TosReliabilityMetricTag); i { case 0: return &v.state case 1: @@ -113759,8 +132798,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[293].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*BgpPrefixStateRequest); i { + file_otg_proto_msgTypes[473].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowIpv4TosReliability); i { case 0: return &v.state case 1: @@ -113771,8 +132810,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[294].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*BgpPrefixIpv4UnicastFilter); i { + file_otg_proto_msgTypes[474].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowIpv4TosMonetaryCounter); i { case 0: return &v.state case 1: @@ -113783,8 +132822,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[295].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*BgpPrefixIpv6UnicastFilter); i { + file_otg_proto_msgTypes[475].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowIpv4TosMonetaryMetricTag); i { case 0: return &v.state case 1: @@ -113795,8 +132834,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[296].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*BgpPrefixesState); i { + file_otg_proto_msgTypes[476].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowIpv4TosMonetary); i { case 0: return &v.state case 1: @@ -113807,8 +132846,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[297].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*BgpPrefixIpv4UnicastState); i { + file_otg_proto_msgTypes[477].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowIpv4TosUnusedCounter); i { case 0: return &v.state case 1: @@ -113819,8 +132858,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[298].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*BgpPrefixIpv6UnicastState); i { + file_otg_proto_msgTypes[478].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowIpv4TosUnusedMetricTag); i { case 0: return &v.state case 1: @@ -113831,8 +132870,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[299].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ResultBgpCommunity); i { + file_otg_proto_msgTypes[479].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowIpv4TosUnused); i { case 0: return &v.state case 1: @@ -113843,8 +132882,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[300].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ResultBgpAsPath); i { + file_otg_proto_msgTypes[480].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowIpv6VersionCounter); i { case 0: return &v.state case 1: @@ -113855,8 +132894,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[301].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ResultBgpAsPathSegment); i { + file_otg_proto_msgTypes[481].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowIpv6VersionMetricTag); i { case 0: return &v.state case 1: @@ -113867,8 +132906,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[302].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*IsisLspsStateRequest); i { + file_otg_proto_msgTypes[482].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowIpv6Version); i { case 0: return &v.state case 1: @@ -113879,8 +132918,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[303].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*IsisLspsState); i { + file_otg_proto_msgTypes[483].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowIpv6TrafficClassCounter); i { case 0: return &v.state case 1: @@ -113891,8 +132930,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[304].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*IsisLspState); i { + file_otg_proto_msgTypes[484].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowIpv6TrafficClassMetricTag); i { case 0: return &v.state case 1: @@ -113903,8 +132942,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[305].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*IsisLspTlvs); i { + file_otg_proto_msgTypes[485].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowIpv6TrafficClass); i { case 0: return &v.state case 1: @@ -113915,8 +132954,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[306].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*IsisLspHostname); i { + file_otg_proto_msgTypes[486].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowIpv6FlowLabelCounter); i { case 0: return &v.state case 1: @@ -113927,8 +132966,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[307].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*IsisLspFlags); i { + file_otg_proto_msgTypes[487].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowIpv6FlowLabelMetricTag); i { case 0: return &v.state case 1: @@ -113939,8 +132978,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[308].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*IsisLspIsReachabilityTlv); i { + file_otg_proto_msgTypes[488].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowIpv6FlowLabel); i { case 0: return &v.state case 1: @@ -113951,8 +132990,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[309].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*IsisLspExtendedIsReachabilityTlv); i { + file_otg_proto_msgTypes[489].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowIpv6PayloadLengthCounter); i { case 0: return &v.state case 1: @@ -113963,8 +133002,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[310].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*IsisLspneighbor); i { + file_otg_proto_msgTypes[490].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowIpv6PayloadLengthMetricTag); i { case 0: return &v.state case 1: @@ -113975,8 +133014,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[311].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*IsisLspIpv4InternalReachabilityTlv); i { + file_otg_proto_msgTypes[491].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowIpv6PayloadLength); i { case 0: return &v.state case 1: @@ -113987,8 +133026,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[312].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*IsisLspIpv4ExternalReachabilityTlv); i { + file_otg_proto_msgTypes[492].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowIpv6NextHeaderCounter); i { case 0: return &v.state case 1: @@ -113999,8 +133038,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[313].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*IsisLspV4Prefix); i { + file_otg_proto_msgTypes[493].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowIpv6NextHeaderMetricTag); i { case 0: return &v.state case 1: @@ -114011,8 +133050,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[314].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*IsisLspExtendedIpv4ReachabilityTlv); i { + file_otg_proto_msgTypes[494].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowIpv6NextHeader); i { case 0: return &v.state case 1: @@ -114023,8 +133062,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[315].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*IsisLspExtendedV4Prefix); i { + file_otg_proto_msgTypes[495].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowIpv6HopLimitCounter); i { case 0: return &v.state case 1: @@ -114035,8 +133074,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[316].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*IsisLspIpv6ReachabilityTlv); i { + file_otg_proto_msgTypes[496].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowIpv6HopLimitMetricTag); i { case 0: return &v.state case 1: @@ -114047,8 +133086,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[317].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*IsisLspV6Prefix); i { + file_otg_proto_msgTypes[497].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowIpv6HopLimit); i { case 0: return &v.state case 1: @@ -114059,8 +133098,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[318].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*IsisLspPrefixAttributes); i { + file_otg_proto_msgTypes[498].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowIpv6SrcCounter); i { case 0: return &v.state case 1: @@ -114071,8 +133110,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[319].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*LldpNeighborsStateRequest); i { + file_otg_proto_msgTypes[499].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowIpv6SrcMetricTag); i { case 0: return &v.state case 1: @@ -114083,8 +133122,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[320].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*LldpNeighborsState); i { + file_otg_proto_msgTypes[500].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowIpv6Src); i { case 0: return &v.state case 1: @@ -114095,8 +133134,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[321].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*LldpCustomTLVState); i { + file_otg_proto_msgTypes[501].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowIpv6DstCounter); i { case 0: return &v.state case 1: @@ -114107,8 +133146,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[322].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*LldpCapabilityState); i { + file_otg_proto_msgTypes[502].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowIpv6DstMetricTag); i { case 0: return &v.state case 1: @@ -114119,8 +133158,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[323].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*RsvpLspsStateRequest); i { + file_otg_proto_msgTypes[503].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowIpv6Dst); i { case 0: return &v.state case 1: @@ -114131,8 +133170,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[324].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*RsvpLspsState); i { + file_otg_proto_msgTypes[504].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowPfcPauseDstCounter); i { case 0: return &v.state case 1: @@ -114143,8 +133182,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[325].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*RsvpIPv4LspState); i { + file_otg_proto_msgTypes[505].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowPfcPauseDstMetricTag); i { case 0: return &v.state case 1: @@ -114155,8 +133194,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[326].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*RsvpLspState); i { + file_otg_proto_msgTypes[506].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowPfcPauseDst); i { case 0: return &v.state case 1: @@ -114167,8 +133206,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[327].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*RsvpLspIpv4Rro); i { + file_otg_proto_msgTypes[507].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowPfcPauseSrcCounter); i { case 0: return &v.state case 1: @@ -114179,8 +133218,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[328].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*RsvpLspIpv4Ero); i { + file_otg_proto_msgTypes[508].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowPfcPauseSrcMetricTag); i { case 0: return &v.state case 1: @@ -114191,8 +133230,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[329].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CaptureRequest); i { + file_otg_proto_msgTypes[509].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowPfcPauseSrc); i { case 0: return &v.state case 1: @@ -114203,8 +133242,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[330].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowEthernetDstCounter); i { + file_otg_proto_msgTypes[510].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowPfcPauseEtherTypeCounter); i { case 0: return &v.state case 1: @@ -114215,8 +133254,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[331].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowEthernetDstMetricTag); i { + file_otg_proto_msgTypes[511].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowPfcPauseEtherTypeMetricTag); i { case 0: return &v.state case 1: @@ -114227,8 +133266,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[332].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowEthernetDst); i { + file_otg_proto_msgTypes[512].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowPfcPauseEtherType); i { case 0: return &v.state case 1: @@ -114239,8 +133278,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[333].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowEthernetSrcCounter); i { + file_otg_proto_msgTypes[513].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowPfcPauseControlOpCodeCounter); i { case 0: return &v.state case 1: @@ -114251,8 +133290,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[334].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowEthernetSrcMetricTag); i { + file_otg_proto_msgTypes[514].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowPfcPauseControlOpCodeMetricTag); i { case 0: return &v.state case 1: @@ -114263,8 +133302,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[335].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowEthernetSrc); i { + file_otg_proto_msgTypes[515].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowPfcPauseControlOpCode); i { case 0: return &v.state case 1: @@ -114275,8 +133314,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[336].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowEthernetEtherTypeCounter); i { + file_otg_proto_msgTypes[516].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowPfcPauseClassEnableVectorCounter); i { case 0: return &v.state case 1: @@ -114287,8 +133326,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[337].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowEthernetEtherTypeMetricTag); i { + file_otg_proto_msgTypes[517].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowPfcPauseClassEnableVectorMetricTag); i { case 0: return &v.state case 1: @@ -114299,8 +133338,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[338].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowEthernetEtherType); i { + file_otg_proto_msgTypes[518].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowPfcPauseClassEnableVector); i { case 0: return &v.state case 1: @@ -114311,8 +133350,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[339].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowEthernetPfcQueueCounter); i { + file_otg_proto_msgTypes[519].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowPfcPausePauseClass0Counter); i { case 0: return &v.state case 1: @@ -114323,8 +133362,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[340].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowEthernetPfcQueueMetricTag); i { + file_otg_proto_msgTypes[520].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowPfcPausePauseClass0MetricTag); i { case 0: return &v.state case 1: @@ -114335,8 +133374,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[341].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowEthernetPfcQueue); i { + file_otg_proto_msgTypes[521].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowPfcPausePauseClass0); i { case 0: return &v.state case 1: @@ -114347,8 +133386,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[342].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowVlanPriorityCounter); i { + file_otg_proto_msgTypes[522].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowPfcPausePauseClass1Counter); i { case 0: return &v.state case 1: @@ -114359,8 +133398,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[343].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowVlanPriorityMetricTag); i { + file_otg_proto_msgTypes[523].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowPfcPausePauseClass1MetricTag); i { case 0: return &v.state case 1: @@ -114371,8 +133410,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[344].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowVlanPriority); i { + file_otg_proto_msgTypes[524].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowPfcPausePauseClass1); i { case 0: return &v.state case 1: @@ -114383,8 +133422,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[345].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowVlanCfiCounter); i { + file_otg_proto_msgTypes[525].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowPfcPausePauseClass2Counter); i { case 0: return &v.state case 1: @@ -114395,8 +133434,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[346].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowVlanCfiMetricTag); i { + file_otg_proto_msgTypes[526].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowPfcPausePauseClass2MetricTag); i { case 0: return &v.state case 1: @@ -114407,8 +133446,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[347].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowVlanCfi); i { + file_otg_proto_msgTypes[527].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowPfcPausePauseClass2); i { case 0: return &v.state case 1: @@ -114419,8 +133458,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[348].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowVlanIdCounter); i { + file_otg_proto_msgTypes[528].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowPfcPausePauseClass3Counter); i { case 0: return &v.state case 1: @@ -114431,8 +133470,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[349].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowVlanIdMetricTag); i { + file_otg_proto_msgTypes[529].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowPfcPausePauseClass3MetricTag); i { case 0: return &v.state case 1: @@ -114443,8 +133482,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[350].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowVlanId); i { + file_otg_proto_msgTypes[530].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowPfcPausePauseClass3); i { case 0: return &v.state case 1: @@ -114455,8 +133494,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[351].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowVlanTpidCounter); i { + file_otg_proto_msgTypes[531].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowPfcPausePauseClass4Counter); i { case 0: return &v.state case 1: @@ -114467,8 +133506,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[352].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowVlanTpidMetricTag); i { + file_otg_proto_msgTypes[532].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowPfcPausePauseClass4MetricTag); i { case 0: return &v.state case 1: @@ -114479,8 +133518,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[353].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowVlanTpid); i { + file_otg_proto_msgTypes[533].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowPfcPausePauseClass4); i { case 0: return &v.state case 1: @@ -114491,8 +133530,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[354].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowVxlanFlagsCounter); i { + file_otg_proto_msgTypes[534].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowPfcPausePauseClass5Counter); i { case 0: return &v.state case 1: @@ -114503,8 +133542,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[355].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowVxlanFlagsMetricTag); i { + file_otg_proto_msgTypes[535].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowPfcPausePauseClass5MetricTag); i { case 0: return &v.state case 1: @@ -114515,8 +133554,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[356].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowVxlanFlags); i { + file_otg_proto_msgTypes[536].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowPfcPausePauseClass5); i { case 0: return &v.state case 1: @@ -114527,8 +133566,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[357].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowVxlanReserved0Counter); i { + file_otg_proto_msgTypes[537].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowPfcPausePauseClass6Counter); i { case 0: return &v.state case 1: @@ -114539,8 +133578,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[358].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowVxlanReserved0MetricTag); i { + file_otg_proto_msgTypes[538].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowPfcPausePauseClass6MetricTag); i { case 0: return &v.state case 1: @@ -114551,8 +133590,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[359].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowVxlanReserved0); i { + file_otg_proto_msgTypes[539].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowPfcPausePauseClass6); i { case 0: return &v.state case 1: @@ -114563,8 +133602,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[360].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowVxlanVniCounter); i { + file_otg_proto_msgTypes[540].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowPfcPausePauseClass7Counter); i { case 0: return &v.state case 1: @@ -114575,8 +133614,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[361].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowVxlanVniMetricTag); i { + file_otg_proto_msgTypes[541].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowPfcPausePauseClass7MetricTag); i { case 0: return &v.state case 1: @@ -114587,8 +133626,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[362].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowVxlanVni); i { + file_otg_proto_msgTypes[542].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowPfcPausePauseClass7); i { case 0: return &v.state case 1: @@ -114599,8 +133638,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[363].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowVxlanReserved1Counter); i { + file_otg_proto_msgTypes[543].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowEthernetPauseDstCounter); i { case 0: return &v.state case 1: @@ -114611,8 +133650,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[364].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowVxlanReserved1MetricTag); i { + file_otg_proto_msgTypes[544].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowEthernetPauseDstMetricTag); i { case 0: return &v.state case 1: @@ -114623,8 +133662,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[365].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowVxlanReserved1); i { + file_otg_proto_msgTypes[545].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowEthernetPauseDst); i { case 0: return &v.state case 1: @@ -114635,8 +133674,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[366].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowIpv4VersionCounter); i { + file_otg_proto_msgTypes[546].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowEthernetPauseSrcCounter); i { case 0: return &v.state case 1: @@ -114647,8 +133686,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[367].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowIpv4VersionMetricTag); i { + file_otg_proto_msgTypes[547].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowEthernetPauseSrcMetricTag); i { case 0: return &v.state case 1: @@ -114659,8 +133698,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[368].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowIpv4Version); i { + file_otg_proto_msgTypes[548].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowEthernetPauseSrc); i { case 0: return &v.state case 1: @@ -114671,8 +133710,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[369].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowIpv4HeaderLengthCounter); i { + file_otg_proto_msgTypes[549].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowEthernetPauseEtherTypeCounter); i { case 0: return &v.state case 1: @@ -114683,8 +133722,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[370].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowIpv4HeaderLengthMetricTag); i { + file_otg_proto_msgTypes[550].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowEthernetPauseEtherTypeMetricTag); i { case 0: return &v.state case 1: @@ -114695,8 +133734,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[371].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowIpv4HeaderLength); i { + file_otg_proto_msgTypes[551].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowEthernetPauseEtherType); i { case 0: return &v.state case 1: @@ -114707,8 +133746,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[372].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowIpv4TotalLengthCounter); i { + file_otg_proto_msgTypes[552].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowEthernetPauseControlOpCodeCounter); i { case 0: return &v.state case 1: @@ -114719,8 +133758,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[373].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowIpv4TotalLengthMetricTag); i { + file_otg_proto_msgTypes[553].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowEthernetPauseControlOpCodeMetricTag); i { case 0: return &v.state case 1: @@ -114731,8 +133770,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[374].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowIpv4TotalLength); i { + file_otg_proto_msgTypes[554].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowEthernetPauseControlOpCode); i { case 0: return &v.state case 1: @@ -114743,8 +133782,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[375].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowIpv4IdentificationCounter); i { + file_otg_proto_msgTypes[555].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowEthernetPauseTimeCounter); i { case 0: return &v.state case 1: @@ -114755,8 +133794,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[376].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowIpv4IdentificationMetricTag); i { + file_otg_proto_msgTypes[556].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowEthernetPauseTimeMetricTag); i { case 0: return &v.state case 1: @@ -114767,8 +133806,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[377].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowIpv4Identification); i { + file_otg_proto_msgTypes[557].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowEthernetPauseTime); i { case 0: return &v.state case 1: @@ -114779,8 +133818,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[378].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowIpv4ReservedCounter); i { + file_otg_proto_msgTypes[558].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowTcpSrcPortCounter); i { case 0: return &v.state case 1: @@ -114791,8 +133830,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[379].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowIpv4ReservedMetricTag); i { + file_otg_proto_msgTypes[559].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowTcpSrcPortMetricTag); i { case 0: return &v.state case 1: @@ -114803,8 +133842,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[380].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowIpv4Reserved); i { + file_otg_proto_msgTypes[560].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowTcpSrcPort); i { case 0: return &v.state case 1: @@ -114815,8 +133854,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[381].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowIpv4DontFragmentCounter); i { + file_otg_proto_msgTypes[561].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowTcpDstPortCounter); i { case 0: return &v.state case 1: @@ -114827,8 +133866,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[382].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowIpv4DontFragmentMetricTag); i { + file_otg_proto_msgTypes[562].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowTcpDstPortMetricTag); i { case 0: return &v.state case 1: @@ -114839,8 +133878,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[383].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowIpv4DontFragment); i { + file_otg_proto_msgTypes[563].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowTcpDstPort); i { case 0: return &v.state case 1: @@ -114851,8 +133890,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[384].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowIpv4MoreFragmentsCounter); i { + file_otg_proto_msgTypes[564].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowTcpSeqNumCounter); i { case 0: return &v.state case 1: @@ -114863,8 +133902,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[385].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowIpv4MoreFragmentsMetricTag); i { + file_otg_proto_msgTypes[565].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowTcpSeqNumMetricTag); i { case 0: return &v.state case 1: @@ -114875,8 +133914,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[386].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowIpv4MoreFragments); i { + file_otg_proto_msgTypes[566].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowTcpSeqNum); i { case 0: return &v.state case 1: @@ -114887,8 +133926,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[387].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowIpv4FragmentOffsetCounter); i { + file_otg_proto_msgTypes[567].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowTcpAckNumCounter); i { case 0: return &v.state case 1: @@ -114899,8 +133938,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[388].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowIpv4FragmentOffsetMetricTag); i { + file_otg_proto_msgTypes[568].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowTcpAckNumMetricTag); i { case 0: return &v.state case 1: @@ -114911,8 +133950,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[389].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowIpv4FragmentOffset); i { + file_otg_proto_msgTypes[569].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowTcpAckNum); i { case 0: return &v.state case 1: @@ -114923,8 +133962,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[390].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowIpv4TimeToLiveCounter); i { + file_otg_proto_msgTypes[570].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowTcpDataOffsetCounter); i { case 0: return &v.state case 1: @@ -114935,8 +133974,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[391].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowIpv4TimeToLiveMetricTag); i { + file_otg_proto_msgTypes[571].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowTcpDataOffsetMetricTag); i { case 0: return &v.state case 1: @@ -114947,8 +133986,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[392].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowIpv4TimeToLive); i { + file_otg_proto_msgTypes[572].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowTcpDataOffset); i { case 0: return &v.state case 1: @@ -114959,8 +133998,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[393].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowIpv4ProtocolCounter); i { + file_otg_proto_msgTypes[573].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowTcpEcnNsCounter); i { case 0: return &v.state case 1: @@ -114971,8 +134010,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[394].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowIpv4ProtocolMetricTag); i { + file_otg_proto_msgTypes[574].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowTcpEcnNsMetricTag); i { case 0: return &v.state case 1: @@ -114983,8 +134022,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[395].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowIpv4Protocol); i { + file_otg_proto_msgTypes[575].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowTcpEcnNs); i { case 0: return &v.state case 1: @@ -114995,8 +134034,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[396].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowIpv4HeaderChecksum); i { + file_otg_proto_msgTypes[576].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowTcpEcnCwrCounter); i { case 0: return &v.state case 1: @@ -115007,8 +134046,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[397].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowIpv4SrcCounter); i { + file_otg_proto_msgTypes[577].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowTcpEcnCwrMetricTag); i { case 0: return &v.state case 1: @@ -115019,8 +134058,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[398].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowIpv4SrcMetricTag); i { + file_otg_proto_msgTypes[578].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowTcpEcnCwr); i { case 0: return &v.state case 1: @@ -115031,8 +134070,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[399].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowIpv4Src); i { + file_otg_proto_msgTypes[579].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowTcpEcnEchoCounter); i { case 0: return &v.state case 1: @@ -115043,8 +134082,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[400].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowIpv4DstCounter); i { + file_otg_proto_msgTypes[580].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowTcpEcnEchoMetricTag); i { case 0: return &v.state case 1: @@ -115055,8 +134094,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[401].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowIpv4DstMetricTag); i { + file_otg_proto_msgTypes[581].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowTcpEcnEcho); i { case 0: return &v.state case 1: @@ -115067,8 +134106,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[402].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowIpv4Dst); i { + file_otg_proto_msgTypes[582].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowTcpCtlUrgCounter); i { case 0: return &v.state case 1: @@ -115079,8 +134118,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[403].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowIpv4PriorityRawCounter); i { + file_otg_proto_msgTypes[583].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowTcpCtlUrgMetricTag); i { case 0: return &v.state case 1: @@ -115091,8 +134130,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[404].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowIpv4PriorityRawMetricTag); i { + file_otg_proto_msgTypes[584].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowTcpCtlUrg); i { case 0: return &v.state case 1: @@ -115103,8 +134142,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[405].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowIpv4PriorityRaw); i { + file_otg_proto_msgTypes[585].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowTcpCtlAckCounter); i { case 0: return &v.state case 1: @@ -115115,8 +134154,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[406].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowIpv4DscpPhbCounter); i { + file_otg_proto_msgTypes[586].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowTcpCtlAckMetricTag); i { case 0: return &v.state case 1: @@ -115127,8 +134166,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[407].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowIpv4DscpPhbMetricTag); i { + file_otg_proto_msgTypes[587].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowTcpCtlAck); i { case 0: return &v.state case 1: @@ -115139,8 +134178,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[408].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowIpv4DscpPhb); i { + file_otg_proto_msgTypes[588].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowTcpCtlPshCounter); i { case 0: return &v.state case 1: @@ -115151,8 +134190,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[409].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowIpv4DscpEcnCounter); i { + file_otg_proto_msgTypes[589].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowTcpCtlPshMetricTag); i { case 0: return &v.state case 1: @@ -115163,8 +134202,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[410].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowIpv4DscpEcnMetricTag); i { + file_otg_proto_msgTypes[590].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowTcpCtlPsh); i { case 0: return &v.state case 1: @@ -115175,8 +134214,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[411].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowIpv4DscpEcn); i { + file_otg_proto_msgTypes[591].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowTcpCtlRstCounter); i { case 0: return &v.state case 1: @@ -115187,8 +134226,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[412].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowIpv4TosPrecedenceCounter); i { + file_otg_proto_msgTypes[592].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowTcpCtlRstMetricTag); i { case 0: return &v.state case 1: @@ -115199,8 +134238,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[413].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowIpv4TosPrecedenceMetricTag); i { + file_otg_proto_msgTypes[593].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowTcpCtlRst); i { case 0: return &v.state case 1: @@ -115211,8 +134250,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[414].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowIpv4TosPrecedence); i { + file_otg_proto_msgTypes[594].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowTcpCtlSynCounter); i { case 0: return &v.state case 1: @@ -115223,8 +134262,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[415].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowIpv4TosDelayCounter); i { + file_otg_proto_msgTypes[595].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowTcpCtlSynMetricTag); i { case 0: return &v.state case 1: @@ -115235,8 +134274,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[416].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowIpv4TosDelayMetricTag); i { + file_otg_proto_msgTypes[596].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowTcpCtlSyn); i { case 0: return &v.state case 1: @@ -115247,8 +134286,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[417].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowIpv4TosDelay); i { + file_otg_proto_msgTypes[597].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowTcpCtlFinCounter); i { case 0: return &v.state case 1: @@ -115259,8 +134298,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[418].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowIpv4TosThroughputCounter); i { + file_otg_proto_msgTypes[598].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowTcpCtlFinMetricTag); i { case 0: return &v.state case 1: @@ -115271,8 +134310,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[419].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowIpv4TosThroughputMetricTag); i { + file_otg_proto_msgTypes[599].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowTcpCtlFin); i { case 0: return &v.state case 1: @@ -115283,8 +134322,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[420].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowIpv4TosThroughput); i { + file_otg_proto_msgTypes[600].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowTcpWindowCounter); i { case 0: return &v.state case 1: @@ -115295,8 +134334,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[421].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowIpv4TosReliabilityCounter); i { + file_otg_proto_msgTypes[601].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowTcpWindowMetricTag); i { case 0: return &v.state case 1: @@ -115307,8 +134346,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[422].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowIpv4TosReliabilityMetricTag); i { + file_otg_proto_msgTypes[602].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowTcpWindow); i { case 0: return &v.state case 1: @@ -115319,8 +134358,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[423].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowIpv4TosReliability); i { + file_otg_proto_msgTypes[603].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowUdpSrcPortCounter); i { case 0: return &v.state case 1: @@ -115331,8 +134370,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[424].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowIpv4TosMonetaryCounter); i { + file_otg_proto_msgTypes[604].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowUdpSrcPortMetricTag); i { case 0: return &v.state case 1: @@ -115343,8 +134382,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[425].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowIpv4TosMonetaryMetricTag); i { + file_otg_proto_msgTypes[605].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowUdpSrcPort); i { case 0: return &v.state case 1: @@ -115355,8 +134394,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[426].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowIpv4TosMonetary); i { + file_otg_proto_msgTypes[606].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowUdpDstPortCounter); i { case 0: return &v.state case 1: @@ -115367,8 +134406,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[427].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowIpv4TosUnusedCounter); i { + file_otg_proto_msgTypes[607].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowUdpDstPortMetricTag); i { case 0: return &v.state case 1: @@ -115379,8 +134418,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[428].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowIpv4TosUnusedMetricTag); i { + file_otg_proto_msgTypes[608].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowUdpDstPort); i { case 0: return &v.state case 1: @@ -115391,8 +134430,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[429].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowIpv4TosUnused); i { + file_otg_proto_msgTypes[609].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowUdpLengthCounter); i { case 0: return &v.state case 1: @@ -115403,8 +134442,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[430].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowIpv6VersionCounter); i { + file_otg_proto_msgTypes[610].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowUdpLengthMetricTag); i { case 0: return &v.state case 1: @@ -115415,8 +134454,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[431].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowIpv6VersionMetricTag); i { + file_otg_proto_msgTypes[611].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowUdpLength); i { case 0: return &v.state case 1: @@ -115427,8 +134466,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[432].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowIpv6Version); i { + file_otg_proto_msgTypes[612].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowUdpChecksum); i { case 0: return &v.state case 1: @@ -115439,8 +134478,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[433].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowIpv6TrafficClassCounter); i { + file_otg_proto_msgTypes[613].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowGreChecksumPresentCounter); i { case 0: return &v.state case 1: @@ -115451,8 +134490,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[434].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowIpv6TrafficClassMetricTag); i { + file_otg_proto_msgTypes[614].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowGreChecksumPresentMetricTag); i { case 0: return &v.state case 1: @@ -115463,8 +134502,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[435].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowIpv6TrafficClass); i { + file_otg_proto_msgTypes[615].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowGreChecksumPresent); i { case 0: return &v.state case 1: @@ -115475,8 +134514,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[436].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowIpv6FlowLabelCounter); i { + file_otg_proto_msgTypes[616].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowGreReserved0Counter); i { case 0: return &v.state case 1: @@ -115487,8 +134526,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[437].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowIpv6FlowLabelMetricTag); i { + file_otg_proto_msgTypes[617].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowGreReserved0MetricTag); i { case 0: return &v.state case 1: @@ -115499,8 +134538,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[438].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowIpv6FlowLabel); i { + file_otg_proto_msgTypes[618].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowGreReserved0); i { case 0: return &v.state case 1: @@ -115511,8 +134550,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[439].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowIpv6PayloadLengthCounter); i { + file_otg_proto_msgTypes[619].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowGreVersionCounter); i { case 0: return &v.state case 1: @@ -115523,8 +134562,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[440].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowIpv6PayloadLengthMetricTag); i { + file_otg_proto_msgTypes[620].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowGreVersionMetricTag); i { case 0: return &v.state case 1: @@ -115535,8 +134574,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[441].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowIpv6PayloadLength); i { + file_otg_proto_msgTypes[621].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowGreVersion); i { case 0: return &v.state case 1: @@ -115547,8 +134586,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[442].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowIpv6NextHeaderCounter); i { + file_otg_proto_msgTypes[622].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowGreProtocolCounter); i { case 0: return &v.state case 1: @@ -115559,8 +134598,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[443].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowIpv6NextHeaderMetricTag); i { + file_otg_proto_msgTypes[623].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowGreProtocolMetricTag); i { case 0: return &v.state case 1: @@ -115571,8 +134610,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[444].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowIpv6NextHeader); i { + file_otg_proto_msgTypes[624].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowGreProtocol); i { case 0: return &v.state case 1: @@ -115583,8 +134622,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[445].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowIpv6HopLimitCounter); i { + file_otg_proto_msgTypes[625].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowGreChecksum); i { case 0: return &v.state case 1: @@ -115595,8 +134634,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[446].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowIpv6HopLimitMetricTag); i { + file_otg_proto_msgTypes[626].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowGreReserved1Counter); i { case 0: return &v.state case 1: @@ -115607,8 +134646,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[447].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowIpv6HopLimit); i { + file_otg_proto_msgTypes[627].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowGreReserved1MetricTag); i { case 0: return &v.state case 1: @@ -115619,8 +134658,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[448].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowIpv6SrcCounter); i { + file_otg_proto_msgTypes[628].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowGreReserved1); i { case 0: return &v.state case 1: @@ -115631,8 +134670,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[449].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowIpv6SrcMetricTag); i { + file_otg_proto_msgTypes[629].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowGtpv1VersionCounter); i { case 0: return &v.state case 1: @@ -115643,8 +134682,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[450].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowIpv6Src); i { + file_otg_proto_msgTypes[630].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowGtpv1VersionMetricTag); i { case 0: return &v.state case 1: @@ -115655,8 +134694,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[451].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowIpv6DstCounter); i { + file_otg_proto_msgTypes[631].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowGtpv1Version); i { case 0: return &v.state case 1: @@ -115667,8 +134706,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[452].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowIpv6DstMetricTag); i { + file_otg_proto_msgTypes[632].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowGtpv1ProtocolTypeCounter); i { case 0: return &v.state case 1: @@ -115679,8 +134718,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[453].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowIpv6Dst); i { + file_otg_proto_msgTypes[633].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowGtpv1ProtocolTypeMetricTag); i { case 0: return &v.state case 1: @@ -115691,8 +134730,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[454].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowPfcPauseDstCounter); i { + file_otg_proto_msgTypes[634].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowGtpv1ProtocolType); i { case 0: return &v.state case 1: @@ -115703,8 +134742,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[455].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowPfcPauseDstMetricTag); i { + file_otg_proto_msgTypes[635].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowGtpv1ReservedCounter); i { case 0: return &v.state case 1: @@ -115715,8 +134754,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[456].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowPfcPauseDst); i { + file_otg_proto_msgTypes[636].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowGtpv1ReservedMetricTag); i { case 0: return &v.state case 1: @@ -115727,8 +134766,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[457].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowPfcPauseSrcCounter); i { + file_otg_proto_msgTypes[637].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowGtpv1Reserved); i { case 0: return &v.state case 1: @@ -115739,8 +134778,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[458].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowPfcPauseSrcMetricTag); i { + file_otg_proto_msgTypes[638].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowGtpv1EFlagCounter); i { case 0: return &v.state case 1: @@ -115751,8 +134790,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[459].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowPfcPauseSrc); i { + file_otg_proto_msgTypes[639].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowGtpv1EFlagMetricTag); i { case 0: return &v.state case 1: @@ -115763,8 +134802,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[460].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowPfcPauseEtherTypeCounter); i { + file_otg_proto_msgTypes[640].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowGtpv1EFlag); i { case 0: return &v.state case 1: @@ -115775,8 +134814,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[461].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowPfcPauseEtherTypeMetricTag); i { + file_otg_proto_msgTypes[641].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowGtpv1SFlagCounter); i { case 0: return &v.state case 1: @@ -115787,8 +134826,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[462].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowPfcPauseEtherType); i { + file_otg_proto_msgTypes[642].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowGtpv1SFlagMetricTag); i { case 0: return &v.state case 1: @@ -115799,8 +134838,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[463].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowPfcPauseControlOpCodeCounter); i { + file_otg_proto_msgTypes[643].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowGtpv1SFlag); i { case 0: return &v.state case 1: @@ -115811,8 +134850,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[464].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowPfcPauseControlOpCodeMetricTag); i { + file_otg_proto_msgTypes[644].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowGtpv1PnFlagCounter); i { case 0: return &v.state case 1: @@ -115823,8 +134862,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[465].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowPfcPauseControlOpCode); i { + file_otg_proto_msgTypes[645].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowGtpv1PnFlagMetricTag); i { case 0: return &v.state case 1: @@ -115835,8 +134874,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[466].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowPfcPauseClassEnableVectorCounter); i { + file_otg_proto_msgTypes[646].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowGtpv1PnFlag); i { case 0: return &v.state case 1: @@ -115847,8 +134886,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[467].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowPfcPauseClassEnableVectorMetricTag); i { + file_otg_proto_msgTypes[647].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowGtpv1MessageTypeCounter); i { case 0: return &v.state case 1: @@ -115859,8 +134898,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[468].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowPfcPauseClassEnableVector); i { + file_otg_proto_msgTypes[648].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowGtpv1MessageTypeMetricTag); i { case 0: return &v.state case 1: @@ -115871,8 +134910,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[469].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowPfcPausePauseClass0Counter); i { + file_otg_proto_msgTypes[649].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowGtpv1MessageType); i { case 0: return &v.state case 1: @@ -115883,8 +134922,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[470].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowPfcPausePauseClass0MetricTag); i { + file_otg_proto_msgTypes[650].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowGtpv1MessageLengthCounter); i { case 0: return &v.state case 1: @@ -115895,8 +134934,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[471].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowPfcPausePauseClass0); i { + file_otg_proto_msgTypes[651].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowGtpv1MessageLengthMetricTag); i { case 0: return &v.state case 1: @@ -115907,8 +134946,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[472].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowPfcPausePauseClass1Counter); i { + file_otg_proto_msgTypes[652].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowGtpv1MessageLength); i { case 0: return &v.state case 1: @@ -115919,8 +134958,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[473].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowPfcPausePauseClass1MetricTag); i { + file_otg_proto_msgTypes[653].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowGtpv1TeidCounter); i { case 0: return &v.state case 1: @@ -115931,8 +134970,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[474].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowPfcPausePauseClass1); i { + file_otg_proto_msgTypes[654].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowGtpv1TeidMetricTag); i { case 0: return &v.state case 1: @@ -115943,8 +134982,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[475].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowPfcPausePauseClass2Counter); i { + file_otg_proto_msgTypes[655].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowGtpv1Teid); i { case 0: return &v.state case 1: @@ -115955,8 +134994,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[476].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowPfcPausePauseClass2MetricTag); i { + file_otg_proto_msgTypes[656].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowGtpv1SquenceNumberCounter); i { case 0: return &v.state case 1: @@ -115967,8 +135006,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[477].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowPfcPausePauseClass2); i { + file_otg_proto_msgTypes[657].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowGtpv1SquenceNumberMetricTag); i { case 0: return &v.state case 1: @@ -115979,8 +135018,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[478].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowPfcPausePauseClass3Counter); i { + file_otg_proto_msgTypes[658].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowGtpv1SquenceNumber); i { case 0: return &v.state case 1: @@ -115991,8 +135030,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[479].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowPfcPausePauseClass3MetricTag); i { + file_otg_proto_msgTypes[659].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowGtpv1NPduNumberCounter); i { case 0: return &v.state case 1: @@ -116003,8 +135042,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[480].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowPfcPausePauseClass3); i { + file_otg_proto_msgTypes[660].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowGtpv1NPduNumberMetricTag); i { case 0: return &v.state case 1: @@ -116015,8 +135054,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[481].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowPfcPausePauseClass4Counter); i { + file_otg_proto_msgTypes[661].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowGtpv1NPduNumber); i { case 0: return &v.state case 1: @@ -116027,8 +135066,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[482].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowPfcPausePauseClass4MetricTag); i { + file_otg_proto_msgTypes[662].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowGtpv1NextExtensionHeaderTypeCounter); i { case 0: return &v.state case 1: @@ -116039,8 +135078,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[483].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowPfcPausePauseClass4); i { + file_otg_proto_msgTypes[663].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowGtpv1NextExtensionHeaderTypeMetricTag); i { case 0: return &v.state case 1: @@ -116051,8 +135090,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[484].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowPfcPausePauseClass5Counter); i { + file_otg_proto_msgTypes[664].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowGtpv1NextExtensionHeaderType); i { case 0: return &v.state case 1: @@ -116063,8 +135102,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[485].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowPfcPausePauseClass5MetricTag); i { + file_otg_proto_msgTypes[665].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowGtpExtensionExtensionLengthCounter); i { case 0: return &v.state case 1: @@ -116075,8 +135114,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[486].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowPfcPausePauseClass5); i { + file_otg_proto_msgTypes[666].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowGtpExtensionExtensionLengthMetricTag); i { case 0: return &v.state case 1: @@ -116087,8 +135126,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[487].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowPfcPausePauseClass6Counter); i { + file_otg_proto_msgTypes[667].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowGtpExtensionExtensionLength); i { case 0: return &v.state case 1: @@ -116099,8 +135138,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[488].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowPfcPausePauseClass6MetricTag); i { + file_otg_proto_msgTypes[668].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowGtpExtensionContentsCounter); i { case 0: return &v.state case 1: @@ -116111,8 +135150,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[489].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowPfcPausePauseClass6); i { + file_otg_proto_msgTypes[669].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowGtpExtensionContentsMetricTag); i { case 0: return &v.state case 1: @@ -116123,8 +135162,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[490].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowPfcPausePauseClass7Counter); i { + file_otg_proto_msgTypes[670].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowGtpExtensionContents); i { case 0: return &v.state case 1: @@ -116135,8 +135174,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[491].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowPfcPausePauseClass7MetricTag); i { + file_otg_proto_msgTypes[671].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowGtpExtensionNextExtensionHeaderCounter); i { case 0: return &v.state case 1: @@ -116147,8 +135186,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[492].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowPfcPausePauseClass7); i { + file_otg_proto_msgTypes[672].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowGtpExtensionNextExtensionHeaderMetricTag); i { case 0: return &v.state case 1: @@ -116159,8 +135198,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[493].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowEthernetPauseDstCounter); i { + file_otg_proto_msgTypes[673].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowGtpExtensionNextExtensionHeader); i { case 0: return &v.state case 1: @@ -116171,8 +135210,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[494].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowEthernetPauseDstMetricTag); i { + file_otg_proto_msgTypes[674].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowGtpv2VersionCounter); i { case 0: return &v.state case 1: @@ -116183,8 +135222,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[495].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowEthernetPauseDst); i { + file_otg_proto_msgTypes[675].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowGtpv2VersionMetricTag); i { case 0: return &v.state case 1: @@ -116195,8 +135234,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[496].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowEthernetPauseSrcCounter); i { + file_otg_proto_msgTypes[676].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowGtpv2Version); i { case 0: return &v.state case 1: @@ -116207,8 +135246,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[497].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowEthernetPauseSrcMetricTag); i { + file_otg_proto_msgTypes[677].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowGtpv2PiggybackingFlagCounter); i { case 0: return &v.state case 1: @@ -116219,8 +135258,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[498].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowEthernetPauseSrc); i { + file_otg_proto_msgTypes[678].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowGtpv2PiggybackingFlagMetricTag); i { case 0: return &v.state case 1: @@ -116231,8 +135270,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[499].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowEthernetPauseEtherTypeCounter); i { + file_otg_proto_msgTypes[679].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowGtpv2PiggybackingFlag); i { case 0: return &v.state case 1: @@ -116243,8 +135282,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[500].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowEthernetPauseEtherTypeMetricTag); i { + file_otg_proto_msgTypes[680].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowGtpv2TeidFlagCounter); i { case 0: return &v.state case 1: @@ -116255,8 +135294,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[501].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowEthernetPauseEtherType); i { + file_otg_proto_msgTypes[681].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowGtpv2TeidFlagMetricTag); i { case 0: return &v.state case 1: @@ -116267,8 +135306,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[502].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowEthernetPauseControlOpCodeCounter); i { + file_otg_proto_msgTypes[682].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowGtpv2TeidFlag); i { case 0: return &v.state case 1: @@ -116279,8 +135318,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[503].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowEthernetPauseControlOpCodeMetricTag); i { + file_otg_proto_msgTypes[683].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowGtpv2Spare1Counter); i { case 0: return &v.state case 1: @@ -116291,8 +135330,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[504].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowEthernetPauseControlOpCode); i { + file_otg_proto_msgTypes[684].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowGtpv2Spare1MetricTag); i { case 0: return &v.state case 1: @@ -116303,8 +135342,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[505].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowEthernetPauseTimeCounter); i { + file_otg_proto_msgTypes[685].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowGtpv2Spare1); i { case 0: return &v.state case 1: @@ -116315,8 +135354,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[506].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowEthernetPauseTimeMetricTag); i { + file_otg_proto_msgTypes[686].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowGtpv2MessageTypeCounter); i { case 0: return &v.state case 1: @@ -116327,8 +135366,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[507].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowEthernetPauseTime); i { + file_otg_proto_msgTypes[687].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowGtpv2MessageTypeMetricTag); i { case 0: return &v.state case 1: @@ -116339,8 +135378,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[508].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowTcpSrcPortCounter); i { + file_otg_proto_msgTypes[688].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowGtpv2MessageType); i { case 0: return &v.state case 1: @@ -116351,8 +135390,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[509].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowTcpSrcPortMetricTag); i { + file_otg_proto_msgTypes[689].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowGtpv2MessageLengthCounter); i { case 0: return &v.state case 1: @@ -116363,8 +135402,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[510].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowTcpSrcPort); i { + file_otg_proto_msgTypes[690].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowGtpv2MessageLengthMetricTag); i { case 0: return &v.state case 1: @@ -116375,8 +135414,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[511].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowTcpDstPortCounter); i { + file_otg_proto_msgTypes[691].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowGtpv2MessageLength); i { case 0: return &v.state case 1: @@ -116387,8 +135426,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[512].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowTcpDstPortMetricTag); i { + file_otg_proto_msgTypes[692].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowGtpv2TeidCounter); i { case 0: return &v.state case 1: @@ -116399,8 +135438,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[513].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowTcpDstPort); i { + file_otg_proto_msgTypes[693].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowGtpv2TeidMetricTag); i { case 0: return &v.state case 1: @@ -116411,8 +135450,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[514].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowTcpSeqNumCounter); i { + file_otg_proto_msgTypes[694].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowGtpv2Teid); i { case 0: return &v.state case 1: @@ -116423,8 +135462,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[515].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowTcpSeqNumMetricTag); i { + file_otg_proto_msgTypes[695].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowGtpv2SequenceNumberCounter); i { case 0: return &v.state case 1: @@ -116435,8 +135474,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[516].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowTcpSeqNum); i { + file_otg_proto_msgTypes[696].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowGtpv2SequenceNumberMetricTag); i { case 0: return &v.state case 1: @@ -116447,8 +135486,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[517].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowTcpAckNumCounter); i { + file_otg_proto_msgTypes[697].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowGtpv2SequenceNumber); i { case 0: return &v.state case 1: @@ -116459,8 +135498,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[518].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowTcpAckNumMetricTag); i { + file_otg_proto_msgTypes[698].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowGtpv2Spare2Counter); i { case 0: return &v.state case 1: @@ -116471,8 +135510,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[519].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowTcpAckNum); i { + file_otg_proto_msgTypes[699].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowGtpv2Spare2MetricTag); i { case 0: return &v.state case 1: @@ -116483,8 +135522,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[520].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowTcpDataOffsetCounter); i { + file_otg_proto_msgTypes[700].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowGtpv2Spare2); i { case 0: return &v.state case 1: @@ -116495,8 +135534,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[521].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowTcpDataOffsetMetricTag); i { + file_otg_proto_msgTypes[701].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowArpHardwareTypeCounter); i { case 0: return &v.state case 1: @@ -116507,8 +135546,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[522].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowTcpDataOffset); i { + file_otg_proto_msgTypes[702].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowArpHardwareTypeMetricTag); i { case 0: return &v.state case 1: @@ -116519,8 +135558,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[523].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowTcpEcnNsCounter); i { + file_otg_proto_msgTypes[703].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowArpHardwareType); i { case 0: return &v.state case 1: @@ -116531,8 +135570,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[524].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowTcpEcnNsMetricTag); i { + file_otg_proto_msgTypes[704].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowArpProtocolTypeCounter); i { case 0: return &v.state case 1: @@ -116543,8 +135582,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[525].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowTcpEcnNs); i { + file_otg_proto_msgTypes[705].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowArpProtocolTypeMetricTag); i { case 0: return &v.state case 1: @@ -116555,8 +135594,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[526].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowTcpEcnCwrCounter); i { + file_otg_proto_msgTypes[706].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowArpProtocolType); i { case 0: return &v.state case 1: @@ -116567,8 +135606,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[527].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowTcpEcnCwrMetricTag); i { + file_otg_proto_msgTypes[707].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowArpHardwareLengthCounter); i { case 0: return &v.state case 1: @@ -116579,8 +135618,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[528].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowTcpEcnCwr); i { + file_otg_proto_msgTypes[708].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowArpHardwareLengthMetricTag); i { case 0: return &v.state case 1: @@ -116591,8 +135630,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[529].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowTcpEcnEchoCounter); i { + file_otg_proto_msgTypes[709].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowArpHardwareLength); i { case 0: return &v.state case 1: @@ -116603,8 +135642,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[530].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowTcpEcnEchoMetricTag); i { + file_otg_proto_msgTypes[710].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowArpProtocolLengthCounter); i { case 0: return &v.state case 1: @@ -116615,8 +135654,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[531].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowTcpEcnEcho); i { + file_otg_proto_msgTypes[711].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowArpProtocolLengthMetricTag); i { case 0: return &v.state case 1: @@ -116627,8 +135666,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[532].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowTcpCtlUrgCounter); i { + file_otg_proto_msgTypes[712].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowArpProtocolLength); i { case 0: return &v.state case 1: @@ -116639,8 +135678,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[533].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowTcpCtlUrgMetricTag); i { + file_otg_proto_msgTypes[713].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowArpOperationCounter); i { case 0: return &v.state case 1: @@ -116651,8 +135690,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[534].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowTcpCtlUrg); i { + file_otg_proto_msgTypes[714].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowArpOperationMetricTag); i { case 0: return &v.state case 1: @@ -116663,8 +135702,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[535].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowTcpCtlAckCounter); i { + file_otg_proto_msgTypes[715].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowArpOperation); i { case 0: return &v.state case 1: @@ -116675,8 +135714,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[536].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowTcpCtlAckMetricTag); i { + file_otg_proto_msgTypes[716].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowArpSenderHardwareAddrCounter); i { case 0: return &v.state case 1: @@ -116687,8 +135726,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[537].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowTcpCtlAck); i { + file_otg_proto_msgTypes[717].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowArpSenderHardwareAddrMetricTag); i { case 0: return &v.state case 1: @@ -116699,8 +135738,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[538].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowTcpCtlPshCounter); i { + file_otg_proto_msgTypes[718].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowArpSenderHardwareAddr); i { case 0: return &v.state case 1: @@ -116711,8 +135750,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[539].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowTcpCtlPshMetricTag); i { + file_otg_proto_msgTypes[719].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowArpSenderProtocolAddrCounter); i { case 0: return &v.state case 1: @@ -116723,8 +135762,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[540].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowTcpCtlPsh); i { + file_otg_proto_msgTypes[720].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowArpSenderProtocolAddrMetricTag); i { case 0: return &v.state case 1: @@ -116735,8 +135774,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[541].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowTcpCtlRstCounter); i { + file_otg_proto_msgTypes[721].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowArpSenderProtocolAddr); i { case 0: return &v.state case 1: @@ -116747,8 +135786,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[542].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowTcpCtlRstMetricTag); i { + file_otg_proto_msgTypes[722].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowArpTargetHardwareAddrCounter); i { case 0: return &v.state case 1: @@ -116759,8 +135798,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[543].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowTcpCtlRst); i { + file_otg_proto_msgTypes[723].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowArpTargetHardwareAddrMetricTag); i { case 0: return &v.state case 1: @@ -116771,8 +135810,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[544].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowTcpCtlSynCounter); i { + file_otg_proto_msgTypes[724].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowArpTargetHardwareAddr); i { case 0: return &v.state case 1: @@ -116783,8 +135822,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[545].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowTcpCtlSynMetricTag); i { + file_otg_proto_msgTypes[725].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowArpTargetProtocolAddrCounter); i { case 0: return &v.state case 1: @@ -116795,8 +135834,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[546].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowTcpCtlSyn); i { + file_otg_proto_msgTypes[726].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowArpTargetProtocolAddrMetricTag); i { case 0: return &v.state case 1: @@ -116807,8 +135846,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[547].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowTcpCtlFinCounter); i { + file_otg_proto_msgTypes[727].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowArpTargetProtocolAddr); i { case 0: return &v.state case 1: @@ -116819,8 +135858,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[548].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowTcpCtlFinMetricTag); i { + file_otg_proto_msgTypes[728].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowIcmpEchoTypeCounter); i { case 0: return &v.state case 1: @@ -116831,8 +135870,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[549].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowTcpCtlFin); i { + file_otg_proto_msgTypes[729].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowIcmpEchoTypeMetricTag); i { case 0: return &v.state case 1: @@ -116843,8 +135882,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[550].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowTcpWindowCounter); i { + file_otg_proto_msgTypes[730].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowIcmpEchoType); i { case 0: return &v.state case 1: @@ -116855,8 +135894,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[551].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowTcpWindowMetricTag); i { + file_otg_proto_msgTypes[731].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowIcmpEchoCodeCounter); i { case 0: return &v.state case 1: @@ -116867,8 +135906,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[552].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowTcpWindow); i { + file_otg_proto_msgTypes[732].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowIcmpEchoCodeMetricTag); i { case 0: return &v.state case 1: @@ -116879,8 +135918,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[553].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowUdpSrcPortCounter); i { + file_otg_proto_msgTypes[733].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowIcmpEchoCode); i { case 0: return &v.state case 1: @@ -116891,8 +135930,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[554].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowUdpSrcPortMetricTag); i { + file_otg_proto_msgTypes[734].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowIcmpEchoChecksum); i { case 0: return &v.state case 1: @@ -116903,8 +135942,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[555].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowUdpSrcPort); i { + file_otg_proto_msgTypes[735].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowIcmpEchoIdentifierCounter); i { case 0: return &v.state case 1: @@ -116915,8 +135954,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[556].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowUdpDstPortCounter); i { + file_otg_proto_msgTypes[736].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowIcmpEchoIdentifierMetricTag); i { case 0: return &v.state case 1: @@ -116927,8 +135966,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[557].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowUdpDstPortMetricTag); i { + file_otg_proto_msgTypes[737].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowIcmpEchoIdentifier); i { case 0: return &v.state case 1: @@ -116939,8 +135978,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[558].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowUdpDstPort); i { + file_otg_proto_msgTypes[738].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowIcmpEchoSequenceNumberCounter); i { case 0: return &v.state case 1: @@ -116951,8 +135990,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[559].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowUdpLengthCounter); i { + file_otg_proto_msgTypes[739].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowIcmpEchoSequenceNumberMetricTag); i { case 0: return &v.state case 1: @@ -116963,8 +136002,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[560].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowUdpLengthMetricTag); i { + file_otg_proto_msgTypes[740].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowIcmpEchoSequenceNumber); i { case 0: return &v.state case 1: @@ -116975,8 +136014,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[561].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowUdpLength); i { + file_otg_proto_msgTypes[741].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowIcmpCommonChecksum); i { case 0: return &v.state case 1: @@ -116987,8 +136026,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[562].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowUdpChecksum); i { + file_otg_proto_msgTypes[742].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowIcmpNextFieldsIdentifierCounter); i { case 0: return &v.state case 1: @@ -116999,8 +136038,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[563].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowGreChecksumPresentCounter); i { + file_otg_proto_msgTypes[743].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowIcmpNextFieldsIdentifierMetricTag); i { case 0: return &v.state case 1: @@ -117011,8 +136050,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[564].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowGreChecksumPresentMetricTag); i { + file_otg_proto_msgTypes[744].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowIcmpNextFieldsIdentifier); i { case 0: return &v.state case 1: @@ -117023,8 +136062,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[565].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowGreChecksumPresent); i { + file_otg_proto_msgTypes[745].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowIcmpNextFieldsSequenceNumberCounter); i { case 0: return &v.state case 1: @@ -117035,8 +136074,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[566].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowGreReserved0Counter); i { + file_otg_proto_msgTypes[746].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowIcmpNextFieldsSequenceNumberMetricTag); i { case 0: return &v.state case 1: @@ -117047,8 +136086,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[567].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowGreReserved0MetricTag); i { + file_otg_proto_msgTypes[747].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowIcmpNextFieldsSequenceNumber); i { case 0: return &v.state case 1: @@ -117059,8 +136098,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[568].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowGreReserved0); i { + file_otg_proto_msgTypes[748].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowIcmpv6EchoTypeCounter); i { case 0: return &v.state case 1: @@ -117071,8 +136110,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[569].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowGreVersionCounter); i { + file_otg_proto_msgTypes[749].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowIcmpv6EchoTypeMetricTag); i { case 0: return &v.state case 1: @@ -117083,8 +136122,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[570].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowGreVersionMetricTag); i { + file_otg_proto_msgTypes[750].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowIcmpv6EchoType); i { case 0: return &v.state case 1: @@ -117095,8 +136134,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[571].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowGreVersion); i { + file_otg_proto_msgTypes[751].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowIcmpv6EchoCodeCounter); i { case 0: return &v.state case 1: @@ -117107,8 +136146,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[572].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowGreProtocolCounter); i { + file_otg_proto_msgTypes[752].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowIcmpv6EchoCodeMetricTag); i { case 0: return &v.state case 1: @@ -117119,8 +136158,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[573].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowGreProtocolMetricTag); i { + file_otg_proto_msgTypes[753].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowIcmpv6EchoCode); i { case 0: return &v.state case 1: @@ -117131,8 +136170,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[574].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowGreProtocol); i { + file_otg_proto_msgTypes[754].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowIcmpv6EchoIdentifierCounter); i { case 0: return &v.state case 1: @@ -117143,8 +136182,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[575].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowGreChecksum); i { + file_otg_proto_msgTypes[755].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowIcmpv6EchoIdentifierMetricTag); i { case 0: return &v.state case 1: @@ -117155,8 +136194,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[576].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowGreReserved1Counter); i { + file_otg_proto_msgTypes[756].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowIcmpv6EchoIdentifier); i { case 0: return &v.state case 1: @@ -117167,8 +136206,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[577].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowGreReserved1MetricTag); i { + file_otg_proto_msgTypes[757].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowIcmpv6EchoSequenceNumberCounter); i { case 0: return &v.state case 1: @@ -117179,8 +136218,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[578].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowGreReserved1); i { + file_otg_proto_msgTypes[758].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowIcmpv6EchoSequenceNumberMetricTag); i { case 0: return &v.state case 1: @@ -117191,8 +136230,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[579].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowGtpv1VersionCounter); i { + file_otg_proto_msgTypes[759].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowIcmpv6EchoSequenceNumber); i { case 0: return &v.state case 1: @@ -117203,8 +136242,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[580].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowGtpv1VersionMetricTag); i { + file_otg_proto_msgTypes[760].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowIcmpv6EchoChecksum); i { case 0: return &v.state case 1: @@ -117215,8 +136254,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[581].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowGtpv1Version); i { + file_otg_proto_msgTypes[761].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowIcmpv6CommonChecksum); i { case 0: return &v.state case 1: @@ -117227,8 +136266,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[582].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowGtpv1ProtocolTypeCounter); i { + file_otg_proto_msgTypes[762].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowPppAddressCounter); i { case 0: return &v.state case 1: @@ -117239,8 +136278,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[583].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowGtpv1ProtocolTypeMetricTag); i { + file_otg_proto_msgTypes[763].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowPppAddressMetricTag); i { case 0: return &v.state case 1: @@ -117251,8 +136290,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[584].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowGtpv1ProtocolType); i { + file_otg_proto_msgTypes[764].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowPppAddress); i { case 0: return &v.state case 1: @@ -117263,8 +136302,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[585].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowGtpv1ReservedCounter); i { + file_otg_proto_msgTypes[765].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowPppControlCounter); i { case 0: return &v.state case 1: @@ -117275,8 +136314,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[586].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowGtpv1ReservedMetricTag); i { + file_otg_proto_msgTypes[766].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowPppControlMetricTag); i { case 0: return &v.state case 1: @@ -117287,8 +136326,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[587].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowGtpv1Reserved); i { + file_otg_proto_msgTypes[767].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowPppControl); i { case 0: return &v.state case 1: @@ -117299,8 +136338,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[588].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowGtpv1EFlagCounter); i { + file_otg_proto_msgTypes[768].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowPppProtocolTypeCounter); i { case 0: return &v.state case 1: @@ -117311,8 +136350,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[589].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowGtpv1EFlagMetricTag); i { + file_otg_proto_msgTypes[769].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowPppProtocolTypeMetricTag); i { case 0: return &v.state case 1: @@ -117323,8 +136362,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[590].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowGtpv1EFlag); i { + file_otg_proto_msgTypes[770].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowPppProtocolType); i { case 0: return &v.state case 1: @@ -117335,8 +136374,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[591].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowGtpv1SFlagCounter); i { + file_otg_proto_msgTypes[771].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowIgmpv1VersionCounter); i { case 0: return &v.state case 1: @@ -117347,8 +136386,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[592].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowGtpv1SFlagMetricTag); i { + file_otg_proto_msgTypes[772].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowIgmpv1VersionMetricTag); i { case 0: return &v.state case 1: @@ -117359,8 +136398,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[593].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowGtpv1SFlag); i { + file_otg_proto_msgTypes[773].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowIgmpv1Version); i { case 0: return &v.state case 1: @@ -117371,8 +136410,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[594].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowGtpv1PnFlagCounter); i { + file_otg_proto_msgTypes[774].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowIgmpv1TypeCounter); i { case 0: return &v.state case 1: @@ -117383,8 +136422,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[595].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowGtpv1PnFlagMetricTag); i { + file_otg_proto_msgTypes[775].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowIgmpv1TypeMetricTag); i { case 0: return &v.state case 1: @@ -117395,8 +136434,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[596].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowGtpv1PnFlag); i { + file_otg_proto_msgTypes[776].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowIgmpv1Type); i { case 0: return &v.state case 1: @@ -117407,8 +136446,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[597].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowGtpv1MessageTypeCounter); i { + file_otg_proto_msgTypes[777].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowIgmpv1UnusedCounter); i { case 0: return &v.state case 1: @@ -117419,8 +136458,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[598].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowGtpv1MessageTypeMetricTag); i { + file_otg_proto_msgTypes[778].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowIgmpv1UnusedMetricTag); i { case 0: return &v.state case 1: @@ -117431,8 +136470,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[599].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowGtpv1MessageType); i { + file_otg_proto_msgTypes[779].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowIgmpv1Unused); i { case 0: return &v.state case 1: @@ -117443,8 +136482,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[600].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowGtpv1MessageLengthCounter); i { + file_otg_proto_msgTypes[780].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowIgmpv1Checksum); i { case 0: return &v.state case 1: @@ -117455,8 +136494,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[601].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowGtpv1MessageLengthMetricTag); i { + file_otg_proto_msgTypes[781].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowIgmpv1GroupAddressCounter); i { case 0: return &v.state case 1: @@ -117467,8 +136506,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[602].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowGtpv1MessageLength); i { + file_otg_proto_msgTypes[782].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowIgmpv1GroupAddressMetricTag); i { case 0: return &v.state case 1: @@ -117479,8 +136518,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[603].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowGtpv1TeidCounter); i { + file_otg_proto_msgTypes[783].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowIgmpv1GroupAddress); i { case 0: return &v.state case 1: @@ -117491,8 +136530,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[604].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowGtpv1TeidMetricTag); i { + file_otg_proto_msgTypes[784].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowMplsLabelCounter); i { case 0: return &v.state case 1: @@ -117503,8 +136542,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[605].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowGtpv1Teid); i { + file_otg_proto_msgTypes[785].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowMplsLabelMetricTag); i { case 0: return &v.state case 1: @@ -117515,8 +136554,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[606].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowGtpv1SquenceNumberCounter); i { + file_otg_proto_msgTypes[786].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowMplsLabel); i { case 0: return &v.state case 1: @@ -117527,8 +136566,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[607].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowGtpv1SquenceNumberMetricTag); i { + file_otg_proto_msgTypes[787].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowMplsTrafficClassCounter); i { case 0: return &v.state case 1: @@ -117539,8 +136578,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[608].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowGtpv1SquenceNumber); i { + file_otg_proto_msgTypes[788].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowMplsTrafficClassMetricTag); i { case 0: return &v.state case 1: @@ -117551,8 +136590,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[609].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowGtpv1NPduNumberCounter); i { + file_otg_proto_msgTypes[789].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowMplsTrafficClass); i { case 0: return &v.state case 1: @@ -117563,8 +136602,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[610].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowGtpv1NPduNumberMetricTag); i { + file_otg_proto_msgTypes[790].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowMplsBottomOfStackCounter); i { case 0: return &v.state case 1: @@ -117575,8 +136614,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[611].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowGtpv1NPduNumber); i { + file_otg_proto_msgTypes[791].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowMplsBottomOfStackMetricTag); i { case 0: return &v.state case 1: @@ -117587,8 +136626,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[612].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowGtpv1NextExtensionHeaderTypeCounter); i { + file_otg_proto_msgTypes[792].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowMplsBottomOfStack); i { case 0: return &v.state case 1: @@ -117599,8 +136638,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[613].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowGtpv1NextExtensionHeaderTypeMetricTag); i { + file_otg_proto_msgTypes[793].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowMplsTimeToLiveCounter); i { case 0: return &v.state case 1: @@ -117611,8 +136650,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[614].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowGtpv1NextExtensionHeaderType); i { + file_otg_proto_msgTypes[794].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowMplsTimeToLiveMetricTag); i { case 0: return &v.state case 1: @@ -117623,8 +136662,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[615].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowGtpExtensionExtensionLengthCounter); i { + file_otg_proto_msgTypes[795].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowMplsTimeToLive); i { case 0: return &v.state case 1: @@ -117635,8 +136674,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[616].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowGtpExtensionExtensionLengthMetricTag); i { + file_otg_proto_msgTypes[796].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowRsvpVersionCounter); i { case 0: return &v.state case 1: @@ -117647,8 +136686,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[617].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowGtpExtensionExtensionLength); i { + file_otg_proto_msgTypes[797].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowRsvpVersion); i { case 0: return &v.state case 1: @@ -117659,8 +136698,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[618].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowGtpExtensionContentsCounter); i { + file_otg_proto_msgTypes[798].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowRsvpRsvpChecksum); i { case 0: return &v.state case 1: @@ -117671,8 +136710,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[619].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowGtpExtensionContentsMetricTag); i { + file_otg_proto_msgTypes[799].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowRsvpTimeToLiveCounter); i { case 0: return &v.state case 1: @@ -117683,8 +136722,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[620].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowGtpExtensionContents); i { + file_otg_proto_msgTypes[800].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowRsvpTimeToLive); i { case 0: return &v.state case 1: @@ -117695,8 +136734,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[621].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowGtpExtensionNextExtensionHeaderCounter); i { + file_otg_proto_msgTypes[801].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowRsvpReservedCounter); i { case 0: return &v.state case 1: @@ -117707,8 +136746,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[622].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowGtpExtensionNextExtensionHeaderMetricTag); i { + file_otg_proto_msgTypes[802].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowRsvpReserved); i { case 0: return &v.state case 1: @@ -117719,8 +136758,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[623].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowGtpExtensionNextExtensionHeader); i { + file_otg_proto_msgTypes[803].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowRSVPPathSessionLspTunnelIpv4Ipv4TunnelEndPointAddressCounter); i { case 0: return &v.state case 1: @@ -117731,8 +136770,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[624].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowGtpv2VersionCounter); i { + file_otg_proto_msgTypes[804].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowRSVPPathSessionLspTunnelIpv4Ipv4TunnelEndPointAddress); i { case 0: return &v.state case 1: @@ -117743,8 +136782,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[625].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowGtpv2VersionMetricTag); i { + file_otg_proto_msgTypes[805].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowRSVPPathSessionLspTunnelIpv4ReservedCounter); i { case 0: return &v.state case 1: @@ -117755,8 +136794,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[626].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowGtpv2Version); i { + file_otg_proto_msgTypes[806].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowRSVPPathSessionLspTunnelIpv4Reserved); i { case 0: return &v.state case 1: @@ -117767,8 +136806,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[627].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowGtpv2PiggybackingFlagCounter); i { + file_otg_proto_msgTypes[807].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowRSVPPathSessionLspTunnelIpv4TunnelIdCounter); i { case 0: return &v.state case 1: @@ -117779,8 +136818,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[628].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowGtpv2PiggybackingFlagMetricTag); i { + file_otg_proto_msgTypes[808].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowRSVPPathSessionLspTunnelIpv4TunnelId); i { case 0: return &v.state case 1: @@ -117791,8 +136830,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[629].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowGtpv2PiggybackingFlag); i { + file_otg_proto_msgTypes[809].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowRSVPPathSessionLspTunnelIpv4ExtendedTunnelIdCounter); i { case 0: return &v.state case 1: @@ -117803,8 +136842,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[630].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowGtpv2TeidFlagCounter); i { + file_otg_proto_msgTypes[810].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowRSVPPathSessionLspTunnelIpv4ExtendedTunnelId); i { case 0: return &v.state case 1: @@ -117815,8 +136854,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[631].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowGtpv2TeidFlagMetricTag); i { + file_otg_proto_msgTypes[811].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowRSVPPathRsvpHopIpv4Ipv4NextPreviousHopAddressCounter); i { case 0: return &v.state case 1: @@ -117827,8 +136866,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[632].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowGtpv2TeidFlag); i { + file_otg_proto_msgTypes[812].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowRSVPPathRsvpHopIpv4Ipv4NextPreviousHopAddress); i { case 0: return &v.state case 1: @@ -117839,8 +136878,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[633].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowGtpv2Spare1Counter); i { + file_otg_proto_msgTypes[813].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowRSVPPathRsvpHopIpv4LogicalInterfaceHandleCounter); i { case 0: return &v.state case 1: @@ -117851,8 +136890,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[634].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowGtpv2Spare1MetricTag); i { + file_otg_proto_msgTypes[814].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowRSVPPathRsvpHopIpv4LogicalInterfaceHandle); i { case 0: return &v.state case 1: @@ -117863,8 +136902,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[635].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowGtpv2Spare1); i { + file_otg_proto_msgTypes[815].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowRSVPPathTimeValuesType1RefreshPeriodRCounter); i { case 0: return &v.state case 1: @@ -117875,8 +136914,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[636].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowGtpv2MessageTypeCounter); i { + file_otg_proto_msgTypes[816].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowRSVPPathTimeValuesType1RefreshPeriodR); i { case 0: return &v.state case 1: @@ -117887,8 +136926,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[637].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowGtpv2MessageTypeMetricTag); i { + file_otg_proto_msgTypes[817].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixLBitCounter); i { case 0: return &v.state case 1: @@ -117899,8 +136938,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[638].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowGtpv2MessageType); i { + file_otg_proto_msgTypes[818].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixLBit); i { case 0: return &v.state case 1: @@ -117911,8 +136950,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[639].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowGtpv2MessageLengthCounter); i { + file_otg_proto_msgTypes[819].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixIpv4AddressCounter); i { case 0: return &v.state case 1: @@ -117923,8 +136962,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[640].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowGtpv2MessageLengthMetricTag); i { + file_otg_proto_msgTypes[820].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixIpv4Address); i { case 0: return &v.state case 1: @@ -117935,8 +136974,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[641].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowGtpv2MessageLength); i { + file_otg_proto_msgTypes[821].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowRSVPPathExplicitRouteType1FourByteASNumberLBitCounter); i { case 0: return &v.state case 1: @@ -117947,8 +136986,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[642].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowGtpv2TeidCounter); i { + file_otg_proto_msgTypes[822].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowRSVPPathExplicitRouteType1FourByteASNumberLBit); i { case 0: return &v.state case 1: @@ -117959,8 +136998,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[643].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowGtpv2TeidMetricTag); i { + file_otg_proto_msgTypes[823].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowRSVPPathExplicitRouteType1FourByteASNumberReservedCounter); i { case 0: return &v.state case 1: @@ -117971,8 +137010,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[644].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowGtpv2Teid); i { + file_otg_proto_msgTypes[824].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowRSVPPathExplicitRouteType1FourByteASNumberReserved); i { case 0: return &v.state case 1: @@ -117983,8 +137022,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[645].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowGtpv2SequenceNumberCounter); i { + file_otg_proto_msgTypes[825].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowRSVPPathLabelRequestWithoutLabelRangeReservedCounter); i { case 0: return &v.state case 1: @@ -117995,8 +137034,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[646].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowGtpv2SequenceNumberMetricTag); i { + file_otg_proto_msgTypes[826].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowRSVPPathLabelRequestWithoutLabelRangeReserved); i { case 0: return &v.state case 1: @@ -118007,8 +137046,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[647].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowGtpv2SequenceNumber); i { + file_otg_proto_msgTypes[827].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowRSVPPathLabelRequestWithoutLabelRangeL3PidCounter); i { case 0: return &v.state case 1: @@ -118019,8 +137058,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[648].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowGtpv2Spare2Counter); i { + file_otg_proto_msgTypes[828].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowRSVPPathLabelRequestWithoutLabelRangeL3Pid); i { case 0: return &v.state case 1: @@ -118031,8 +137070,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[649].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowGtpv2Spare2MetricTag); i { + file_otg_proto_msgTypes[829].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Ipv4TunnelSenderAddressCounter); i { case 0: return &v.state case 1: @@ -118043,8 +137082,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[650].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowGtpv2Spare2); i { + file_otg_proto_msgTypes[830].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Ipv4TunnelSenderAddress); i { case 0: return &v.state case 1: @@ -118055,8 +137094,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[651].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowArpHardwareTypeCounter); i { + file_otg_proto_msgTypes[831].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowRSVPPathSenderTemplateLspTunnelIpv4ReservedCounter); i { case 0: return &v.state case 1: @@ -118067,8 +137106,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[652].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowArpHardwareTypeMetricTag); i { + file_otg_proto_msgTypes[832].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Reserved); i { case 0: return &v.state case 1: @@ -118079,8 +137118,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[653].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowArpHardwareType); i { + file_otg_proto_msgTypes[833].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowRSVPPathSenderTemplateLspTunnelIpv4LspIdCounter); i { case 0: return &v.state case 1: @@ -118091,8 +137130,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[654].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowArpProtocolTypeCounter); i { + file_otg_proto_msgTypes[834].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowRSVPPathSenderTemplateLspTunnelIpv4LspId); i { case 0: return &v.state case 1: @@ -118103,8 +137142,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[655].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowArpProtocolTypeMetricTag); i { + file_otg_proto_msgTypes[835].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowRSVPPathSenderTspecIntServVersionCounter); i { case 0: return &v.state case 1: @@ -118115,8 +137154,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[656].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowArpProtocolType); i { + file_otg_proto_msgTypes[836].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowRSVPPathSenderTspecIntServVersion); i { case 0: return &v.state case 1: @@ -118127,8 +137166,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[657].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowArpHardwareLengthCounter); i { + file_otg_proto_msgTypes[837].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowRSVPPathSenderTspecIntServReserved1Counter); i { case 0: return &v.state case 1: @@ -118139,8 +137178,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[658].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowArpHardwareLengthMetricTag); i { + file_otg_proto_msgTypes[838].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowRSVPPathSenderTspecIntServReserved1); i { case 0: return &v.state case 1: @@ -118151,8 +137190,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[659].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowArpHardwareLength); i { + file_otg_proto_msgTypes[839].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowRSVPPathSenderTspecIntServOverallLengthCounter); i { case 0: return &v.state case 1: @@ -118163,8 +137202,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[660].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowArpProtocolLengthCounter); i { + file_otg_proto_msgTypes[840].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowRSVPPathSenderTspecIntServOverallLength); i { case 0: return &v.state case 1: @@ -118175,8 +137214,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[661].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowArpProtocolLengthMetricTag); i { + file_otg_proto_msgTypes[841].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowRSVPPathSenderTspecIntServServiceHeaderCounter); i { case 0: return &v.state case 1: @@ -118187,8 +137226,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[662].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowArpProtocolLength); i { + file_otg_proto_msgTypes[842].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowRSVPPathSenderTspecIntServServiceHeader); i { case 0: return &v.state case 1: @@ -118199,8 +137238,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[663].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowArpOperationCounter); i { + file_otg_proto_msgTypes[843].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowRSVPPathSenderTspecIntServZeroBitCounter); i { case 0: return &v.state case 1: @@ -118211,8 +137250,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[664].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowArpOperationMetricTag); i { + file_otg_proto_msgTypes[844].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowRSVPPathSenderTspecIntServZeroBit); i { case 0: return &v.state case 1: @@ -118223,8 +137262,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[665].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowArpOperation); i { + file_otg_proto_msgTypes[845].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowRSVPPathSenderTspecIntServReserved2Counter); i { case 0: return &v.state case 1: @@ -118235,8 +137274,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[666].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowArpSenderHardwareAddrCounter); i { + file_otg_proto_msgTypes[846].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowRSVPPathSenderTspecIntServReserved2); i { case 0: return &v.state case 1: @@ -118247,8 +137286,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[667].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowArpSenderHardwareAddrMetricTag); i { + file_otg_proto_msgTypes[847].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowRSVPPathSenderTspecIntServLengthOfServiceDataCounter); i { case 0: return &v.state case 1: @@ -118259,8 +137298,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[668].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowArpSenderHardwareAddr); i { + file_otg_proto_msgTypes[848].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowRSVPPathSenderTspecIntServLengthOfServiceData); i { case 0: return &v.state case 1: @@ -118271,8 +137310,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[669].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowArpSenderProtocolAddrCounter); i { + file_otg_proto_msgTypes[849].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowRSVPPathSenderTspecIntServParameterIdTokenBucketTspecCounter); i { case 0: return &v.state case 1: @@ -118283,8 +137322,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[670].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowArpSenderProtocolAddrMetricTag); i { + file_otg_proto_msgTypes[850].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowRSVPPathSenderTspecIntServParameterIdTokenBucketTspec); i { case 0: return &v.state case 1: @@ -118295,8 +137334,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[671].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowArpSenderProtocolAddr); i { + file_otg_proto_msgTypes[851].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowRSVPPathSenderTspecIntServParameter127FlagCounter); i { case 0: return &v.state case 1: @@ -118307,8 +137346,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[672].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowArpTargetHardwareAddrCounter); i { + file_otg_proto_msgTypes[852].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowRSVPPathSenderTspecIntServParameter127Flag); i { case 0: return &v.state case 1: @@ -118319,8 +137358,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[673].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowArpTargetHardwareAddrMetricTag); i { + file_otg_proto_msgTypes[853].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowRSVPPathSenderTspecIntServParameter127LengthCounter); i { case 0: return &v.state case 1: @@ -118331,8 +137370,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[674].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowArpTargetHardwareAddr); i { + file_otg_proto_msgTypes[854].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowRSVPPathSenderTspecIntServParameter127Length); i { case 0: return &v.state case 1: @@ -118343,8 +137382,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[675].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowArpTargetProtocolAddrCounter); i { + file_otg_proto_msgTypes[855].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowRSVPPathSenderTspecIntServMinimumPolicedUnitCounter); i { case 0: return &v.state case 1: @@ -118355,8 +137394,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[676].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowArpTargetProtocolAddrMetricTag); i { + file_otg_proto_msgTypes[856].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowRSVPPathSenderTspecIntServMinimumPolicedUnit); i { case 0: return &v.state case 1: @@ -118367,8 +137406,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[677].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowArpTargetProtocolAddr); i { + file_otg_proto_msgTypes[857].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowRSVPPathSenderTspecIntServMaximumPacketSizeCounter); i { case 0: return &v.state case 1: @@ -118379,8 +137418,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[678].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowIcmpEchoTypeCounter); i { + file_otg_proto_msgTypes[858].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowRSVPPathSenderTspecIntServMaximumPacketSize); i { case 0: return &v.state case 1: @@ -118391,8 +137430,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[679].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowIcmpEchoTypeMetricTag); i { + file_otg_proto_msgTypes[859].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowRSVPPathRecordRouteType1Ipv4AddressIpv4AddressCounter); i { case 0: return &v.state case 1: @@ -118403,8 +137442,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[680].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowIcmpEchoType); i { + file_otg_proto_msgTypes[860].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowRSVPPathRecordRouteType1Ipv4AddressIpv4Address); i { case 0: return &v.state case 1: @@ -118415,8 +137454,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[681].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowIcmpEchoCodeCounter); i { + file_otg_proto_msgTypes[861].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowRSVPPathRecordRouteType1Ipv4AddressPrefixLengthCounter); i { case 0: return &v.state case 1: @@ -118427,8 +137466,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[682].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowIcmpEchoCodeMetricTag); i { + file_otg_proto_msgTypes[862].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowRSVPPathRecordRouteType1Ipv4AddressPrefixLength); i { case 0: return &v.state case 1: @@ -118439,8 +137478,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[683].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowIcmpEchoCode); i { + file_otg_proto_msgTypes[863].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowRSVPPathRecordRouteType1LabelFlags); i { case 0: return &v.state case 1: @@ -118451,8 +137490,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[684].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowIcmpEchoChecksum); i { + file_otg_proto_msgTypes[864].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowRSVPPathRecordRouteType1LabelCType); i { case 0: return &v.state case 1: @@ -118463,8 +137502,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[685].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowIcmpEchoIdentifierCounter); i { + file_otg_proto_msgTypes[865].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowRSVPPathObjectsCustomTypeCounter); i { case 0: return &v.state case 1: @@ -118475,8 +137514,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[686].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowIcmpEchoIdentifierMetricTag); i { + file_otg_proto_msgTypes[866].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowRSVPPathObjectsCustomType); i { case 0: return &v.state case 1: @@ -118487,8 +137526,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[687].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowIcmpEchoIdentifier); i { + file_otg_proto_msgTypes[867].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Version); i { case 0: return &v.state case 1: @@ -118499,8 +137538,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[688].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowIcmpEchoSequenceNumberCounter); i { + file_otg_proto_msgTypes[868].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Success); i { case 0: return &v.state case 1: @@ -118511,8 +137550,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[689].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowIcmpEchoSequenceNumberMetricTag); i { + file_otg_proto_msgTypes[869].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Failure); i { case 0: return &v.state case 1: @@ -118523,8 +137562,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[690].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowIcmpEchoSequenceNumber); i { + file_otg_proto_msgTypes[870].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*SetConfigRequest); i { case 0: return &v.state case 1: @@ -118535,8 +137574,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[691].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowIcmpCommonChecksum); i { + file_otg_proto_msgTypes[871].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*UpdateConfigRequest); i { case 0: return &v.state case 1: @@ -118547,8 +137586,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[692].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowIcmpNextFieldsIdentifierCounter); i { + file_otg_proto_msgTypes[872].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*SetConfigResponse); i { case 0: return &v.state case 1: @@ -118559,8 +137598,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[693].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowIcmpNextFieldsIdentifierMetricTag); i { + file_otg_proto_msgTypes[873].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GetConfigResponse); i { case 0: return &v.state case 1: @@ -118571,8 +137610,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[694].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowIcmpNextFieldsIdentifier); i { + file_otg_proto_msgTypes[874].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*UpdateConfigResponse); i { case 0: return &v.state case 1: @@ -118583,8 +137622,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[695].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowIcmpNextFieldsSequenceNumberCounter); i { + file_otg_proto_msgTypes[875].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*SetControlStateRequest); i { case 0: return &v.state case 1: @@ -118595,8 +137634,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[696].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowIcmpNextFieldsSequenceNumberMetricTag); i { + file_otg_proto_msgTypes[876].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*SetControlStateResponse); i { case 0: return &v.state case 1: @@ -118607,8 +137646,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[697].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowIcmpNextFieldsSequenceNumber); i { + file_otg_proto_msgTypes[877].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*SetControlActionRequest); i { case 0: return &v.state case 1: @@ -118619,8 +137658,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[698].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowIcmpv6EchoTypeCounter); i { + file_otg_proto_msgTypes[878].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*SetControlActionResponse); i { case 0: return &v.state case 1: @@ -118631,8 +137670,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[699].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowIcmpv6EchoTypeMetricTag); i { + file_otg_proto_msgTypes[879].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GetMetricsRequest); i { case 0: return &v.state case 1: @@ -118643,8 +137682,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[700].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowIcmpv6EchoType); i { + file_otg_proto_msgTypes[880].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GetMetricsResponse); i { case 0: return &v.state case 1: @@ -118655,8 +137694,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[701].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowIcmpv6EchoCodeCounter); i { + file_otg_proto_msgTypes[881].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GetStatesRequest); i { case 0: return &v.state case 1: @@ -118667,8 +137706,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[702].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowIcmpv6EchoCodeMetricTag); i { + file_otg_proto_msgTypes[882].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GetStatesResponse); i { case 0: return &v.state case 1: @@ -118679,8 +137718,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[703].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowIcmpv6EchoCode); i { + file_otg_proto_msgTypes[883].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GetCaptureRequest); i { case 0: return &v.state case 1: @@ -118691,8 +137730,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[704].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowIcmpv6EchoIdentifierCounter); i { + file_otg_proto_msgTypes[884].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GetCaptureResponse); i { case 0: return &v.state case 1: @@ -118703,8 +137742,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[705].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowIcmpv6EchoIdentifierMetricTag); i { + file_otg_proto_msgTypes[885].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GetVersionResponse); i { case 0: return &v.state case 1: @@ -118715,8 +137754,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[706].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowIcmpv6EchoIdentifier); i { + file_otg_proto_msgTypes[886].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*LagProtocol_Choice); i { case 0: return &v.state case 1: @@ -118727,8 +137766,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[707].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowIcmpv6EchoSequenceNumberCounter); i { + file_otg_proto_msgTypes[887].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*LagPortLacp_ActorActivity); i { case 0: return &v.state case 1: @@ -118739,8 +137778,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[708].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowIcmpv6EchoSequenceNumberMetricTag); i { + file_otg_proto_msgTypes[888].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*EthernetConnection_Choice); i { case 0: return &v.state case 1: @@ -118751,8 +137790,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[709].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowIcmpv6EchoSequenceNumber); i { + file_otg_proto_msgTypes[889].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*DeviceVlan_Tpid); i { case 0: return &v.state case 1: @@ -118763,8 +137802,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[710].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowIcmpv6EchoChecksum); i { + file_otg_proto_msgTypes[890].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*DeviceIpv4GatewayMAC_Choice); i { case 0: return &v.state case 1: @@ -118775,8 +137814,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[711].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowIcmpv6CommonChecksum); i { + file_otg_proto_msgTypes[891].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*DeviceIpv6GatewayMAC_Choice); i { case 0: return &v.state case 1: @@ -118787,8 +137826,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[712].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowPppAddressCounter); i { + file_otg_proto_msgTypes[892].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Layer1_Speed); i { case 0: return &v.state case 1: @@ -118799,8 +137838,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[713].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowPppAddressMetricTag); i { + file_otg_proto_msgTypes[893].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Layer1_Media); i { case 0: return &v.state case 1: @@ -118811,8 +137850,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[714].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowPppAddress); i { + file_otg_proto_msgTypes[894].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Layer1FlowControl_Choice); i { case 0: return &v.state case 1: @@ -118823,8 +137862,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[715].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowPppControlCounter); i { + file_otg_proto_msgTypes[895].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Capture_Format); i { case 0: return &v.state case 1: @@ -118835,8 +137874,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[716].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowPppControlMetricTag); i { + file_otg_proto_msgTypes[896].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*CaptureFilter_Choice); i { case 0: return &v.state case 1: @@ -118847,8 +137886,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[717].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowPppControl); i { + file_otg_proto_msgTypes[897].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*IsisInterface_NetworkType); i { case 0: return &v.state case 1: @@ -118859,8 +137898,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[718].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowPppProtocolTypeCounter); i { + file_otg_proto_msgTypes[898].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*IsisInterface_LevelType); i { case 0: return &v.state case 1: @@ -118871,8 +137910,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[719].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowPppProtocolTypeMetricTag); i { + file_otg_proto_msgTypes[899].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*IsisInterfaceAuthentication_AuthType); i { case 0: return &v.state case 1: @@ -118883,8 +137922,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[720].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowPppProtocolType); i { + file_otg_proto_msgTypes[900].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*IsisAuthenticationBase_AuthType); i { case 0: return &v.state case 1: @@ -118895,8 +137934,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[721].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowIgmpv1VersionCounter); i { + file_otg_proto_msgTypes[901].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*IsisV4RouteRange_OriginType); i { case 0: return &v.state case 1: @@ -118907,8 +137946,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[722].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowIgmpv1VersionMetricTag); i { + file_otg_proto_msgTypes[902].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*IsisV4RouteRange_RedistributionType); i { case 0: return &v.state case 1: @@ -118919,8 +137958,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[723].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowIgmpv1Version); i { + file_otg_proto_msgTypes[903].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*IsisV6RouteRange_OriginType); i { case 0: return &v.state case 1: @@ -118931,8 +137970,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[724].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowIgmpv1TypeCounter); i { + file_otg_proto_msgTypes[904].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*IsisV6RouteRange_RedistributionType); i { case 0: return &v.state case 1: @@ -118943,8 +137982,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[725].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowIgmpv1TypeMetricTag); i { + file_otg_proto_msgTypes[905].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*DeviceBgpMessageHeaderError_Subcode); i { case 0: return &v.state case 1: @@ -118955,8 +137994,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[726].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowIgmpv1Type); i { + file_otg_proto_msgTypes[906].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*DeviceBgpOpenMessageError_Subcode); i { case 0: return &v.state case 1: @@ -118967,8 +138006,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[727].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowIgmpv1UnusedCounter); i { + file_otg_proto_msgTypes[907].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*DeviceBgpUpdateMessageError_Subcode); i { case 0: return &v.state case 1: @@ -118979,8 +138018,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[728].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowIgmpv1UnusedMetricTag); i { + file_otg_proto_msgTypes[908].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*DeviceBgpCeaseError_Subcode); i { case 0: return &v.state case 1: @@ -118991,8 +138030,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[729].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowIgmpv1Unused); i { + file_otg_proto_msgTypes[909].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*BgpV4Peer_AsType); i { case 0: return &v.state case 1: @@ -119003,8 +138042,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[730].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowIgmpv1Checksum); i { + file_otg_proto_msgTypes[910].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*BgpV4Peer_AsNumberWidth); i { case 0: return &v.state case 1: @@ -119015,8 +138054,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[731].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowIgmpv1GroupAddressCounter); i { + file_otg_proto_msgTypes[911].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*BgpV4EthernetSegment_ActiveMode); i { case 0: return &v.state case 1: @@ -119027,8 +138066,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[732].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowIgmpv1GroupAddressMetricTag); i { + file_otg_proto_msgTypes[912].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*BgpRouteAdvanced_Origin); i { case 0: return &v.state case 1: @@ -119039,8 +138078,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[733].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowIgmpv1GroupAddress); i { + file_otg_proto_msgTypes[913].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*BgpCommunity_Type); i { case 0: return &v.state case 1: @@ -119051,8 +138090,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[734].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowMplsLabelCounter); i { + file_otg_proto_msgTypes[914].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*BgpExtCommunity_Type); i { case 0: return &v.state case 1: @@ -119063,8 +138102,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[735].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowMplsLabelMetricTag); i { + file_otg_proto_msgTypes[915].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*BgpExtCommunity_Subtype); i { case 0: return &v.state case 1: @@ -119075,8 +138114,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[736].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowMplsLabel); i { + file_otg_proto_msgTypes[916].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*BgpAsPath_AsSetMode); i { case 0: return &v.state case 1: @@ -119087,8 +138126,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[737].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowMplsTrafficClassCounter); i { + file_otg_proto_msgTypes[917].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*BgpAsPathSegment_Type); i { case 0: return &v.state case 1: @@ -119099,8 +138138,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[738].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowMplsTrafficClassMetricTag); i { + file_otg_proto_msgTypes[918].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*BgpV4EvpnEvis_Choice); i { case 0: return &v.state case 1: @@ -119111,8 +138150,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[739].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowMplsTrafficClass); i { + file_otg_proto_msgTypes[919].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*BgpV4EviVxlan_ReplicationType); i { case 0: return &v.state case 1: @@ -119123,8 +138162,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[740].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowMplsBottomOfStackCounter); i { + file_otg_proto_msgTypes[920].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*BgpRouteDistinguisher_RdType); i { case 0: return &v.state case 1: @@ -119135,8 +138174,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[741].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowMplsBottomOfStackMetricTag); i { + file_otg_proto_msgTypes[921].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*BgpRouteTarget_RtType); i { case 0: return &v.state case 1: @@ -119147,8 +138186,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[742].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowMplsBottomOfStack); i { + file_otg_proto_msgTypes[922].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*BgpV4RouteRange_NextHopMode); i { case 0: return &v.state case 1: @@ -119159,8 +138198,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[743].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowMplsTimeToLiveCounter); i { + file_otg_proto_msgTypes[923].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*BgpV4RouteRange_NextHopAddressType); i { case 0: return &v.state case 1: @@ -119171,8 +138210,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[744].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowMplsTimeToLiveMetricTag); i { + file_otg_proto_msgTypes[924].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*BgpExtendedCommunity_Choice); i { case 0: return &v.state case 1: @@ -119183,8 +138222,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[745].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowMplsTimeToLive); i { + file_otg_proto_msgTypes[925].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*BgpExtendedCommunityTransitive2OctetAsType_Choice); i { case 0: return &v.state case 1: @@ -119195,8 +138234,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[746].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Version); i { + file_otg_proto_msgTypes[926].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*BgpExtendedCommunityTransitiveIpv4AddressType_Choice); i { case 0: return &v.state case 1: @@ -119207,8 +138246,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[747].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Success); i { + file_otg_proto_msgTypes[927].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*BgpExtendedCommunityTransitive4OctetAsType_Choice); i { case 0: return &v.state case 1: @@ -119219,8 +138258,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[748].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Failure); i { + file_otg_proto_msgTypes[928].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*BgpExtendedCommunityTransitiveOpaqueType_Choice); i { case 0: return &v.state case 1: @@ -119231,8 +138270,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[749].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SetConfigRequest); i { + file_otg_proto_msgTypes[929].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*BgpExtendedCommunityTransitiveEvpnType_Choice); i { case 0: return &v.state case 1: @@ -119243,8 +138282,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[750].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*UpdateConfigRequest); i { + file_otg_proto_msgTypes[930].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*BgpExtendedCommunityNonTransitive2OctetAsType_Choice); i { case 0: return &v.state case 1: @@ -119255,8 +138294,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[751].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SetConfigResponse); i { + file_otg_proto_msgTypes[931].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*BgpV6RouteRange_NextHopMode); i { case 0: return &v.state case 1: @@ -119267,8 +138306,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[752].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetConfigResponse); i { + file_otg_proto_msgTypes[932].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*BgpV6RouteRange_NextHopAddressType); i { case 0: return &v.state case 1: @@ -119279,8 +138318,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[753].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*UpdateConfigResponse); i { + file_otg_proto_msgTypes[933].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*BgpSrteV4Policy_NextHopMode); i { case 0: return &v.state case 1: @@ -119291,8 +138330,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[754].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SetControlStateRequest); i { + file_otg_proto_msgTypes[934].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*BgpSrteV4Policy_NextHopAddressType); i { case 0: return &v.state case 1: @@ -119303,8 +138342,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[755].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SetControlStateResponse); i { + file_otg_proto_msgTypes[935].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*BgpSrteRemoteEndpointSubTlv_AddressFamily); i { case 0: return &v.state case 1: @@ -119315,8 +138354,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[756].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SetControlActionRequest); i { + file_otg_proto_msgTypes[936].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*BgpSrteBindingSubTlv_BindingSidType); i { case 0: return &v.state case 1: @@ -119327,8 +138366,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[757].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SetControlActionResponse); i { + file_otg_proto_msgTypes[937].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*BgpSrteExplicitNullLabelPolicySubTlv_ExplicitNullLabelPolicy); i { case 0: return &v.state case 1: @@ -119339,8 +138378,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[758].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetMetricsRequest); i { + file_otg_proto_msgTypes[938].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*BgpSrteSegment_SegmentType); i { case 0: return &v.state case 1: @@ -119351,8 +138390,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[759].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetMetricsResponse); i { + file_otg_proto_msgTypes[939].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*BgpSrteV6Policy_NextHopMode); i { case 0: return &v.state case 1: @@ -119363,8 +138402,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[760].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetStatesRequest); i { + file_otg_proto_msgTypes[940].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*BgpSrteV6Policy_NextHopAddressType); i { case 0: return &v.state case 1: @@ -119375,8 +138414,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[761].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetStatesResponse); i { + file_otg_proto_msgTypes[941].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*BgpV6Peer_AsType); i { case 0: return &v.state case 1: @@ -119387,8 +138426,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[762].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetCaptureRequest); i { + file_otg_proto_msgTypes[942].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*BgpV6Peer_AsNumberWidth); i { case 0: return &v.state case 1: @@ -119399,8 +138438,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[763].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetCaptureResponse); i { + file_otg_proto_msgTypes[943].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*BgpV6EthernetSegment_ActiveMode); i { case 0: return &v.state case 1: @@ -119411,8 +138450,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[764].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetVersionResponse); i { + file_otg_proto_msgTypes[944].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*BgpV6EvpnEvis_Choice); i { case 0: return &v.state case 1: @@ -119423,8 +138462,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[765].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*LagProtocol_Choice); i { + file_otg_proto_msgTypes[945].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*BgpV6EviVxlan_ReplicationType); i { case 0: return &v.state case 1: @@ -119434,9 +138473,9 @@ func file_otg_proto_init() { default: return nil } - } - file_otg_proto_msgTypes[766].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*LagPortLacp_ActorActivity); i { + } + file_otg_proto_msgTypes[946].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*VxlanV4TunnelDestinationIPMode_Choice); i { case 0: return &v.state case 1: @@ -119447,8 +138486,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[767].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*EthernetConnection_Choice); i { + file_otg_proto_msgTypes[947].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*VxlanV6TunnelDestinationIPMode_Choice); i { case 0: return &v.state case 1: @@ -119459,8 +138498,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[768].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DeviceVlan_Tpid); i { + file_otg_proto_msgTypes[948].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*RsvpLspIpv4InterfaceP2PEgressIpv4Lsp_ReservationStyle); i { case 0: return &v.state case 1: @@ -119471,8 +138510,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[769].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DeviceIpv4GatewayMAC_Choice); i { + file_otg_proto_msgTypes[949].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*RsvpEro_PrependNeighborIp); i { case 0: return &v.state case 1: @@ -119483,8 +138522,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[770].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DeviceIpv6GatewayMAC_Choice); i { + file_otg_proto_msgTypes[950].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*RsvpEroSubobject_Type); i { case 0: return &v.state case 1: @@ -119495,8 +138534,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[771].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Layer1_Speed); i { + file_otg_proto_msgTypes[951].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*RsvpEroSubobject_HopType); i { case 0: return &v.state case 1: @@ -119507,8 +138546,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[772].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Layer1_Media); i { + file_otg_proto_msgTypes[952].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*FlowTxRx_Choice); i { case 0: return &v.state case 1: @@ -119519,8 +138558,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[773].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Layer1FlowControl_Choice); i { + file_otg_proto_msgTypes[953].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*FlowRouter_Mode); i { case 0: return &v.state case 1: @@ -119531,8 +138570,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[774].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Capture_Format); i { + file_otg_proto_msgTypes[954].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*FlowHeader_Choice); i { case 0: return &v.state case 1: @@ -119543,8 +138582,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[775].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CaptureFilter_Choice); i { + file_otg_proto_msgTypes[955].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*FlowIpv4Priority_Choice); i { case 0: return &v.state case 1: @@ -119555,8 +138594,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[776].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*IsisInterface_NetworkType); i { + file_otg_proto_msgTypes[956].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*FlowIcmp_Choice); i { case 0: return &v.state case 1: @@ -119567,8 +138606,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[777].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*IsisInterface_LevelType); i { + file_otg_proto_msgTypes[957].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*FlowIcmpv6_Choice); i { case 0: return &v.state case 1: @@ -119579,8 +138618,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[778].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*IsisInterfaceAuthentication_AuthType); i { + file_otg_proto_msgTypes[958].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*FlowRSVPFlag_Choice); i { case 0: return &v.state case 1: @@ -119591,8 +138630,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[779].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*IsisAuthenticationBase_AuthType); i { + file_otg_proto_msgTypes[959].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*FlowRSVPLength_Choice); i { case 0: return &v.state case 1: @@ -119603,8 +138642,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[780].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*IsisV4RouteRange_OriginType); i { + file_otg_proto_msgTypes[960].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*FlowRSVPMessage_Choice); i { case 0: return &v.state case 1: @@ -119615,8 +138654,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[781].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*IsisV4RouteRange_RedistributionType); i { + file_otg_proto_msgTypes[961].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*FlowRSVPPathObjectLength_Choice); i { case 0: return &v.state case 1: @@ -119627,8 +138666,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[782].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*IsisV6RouteRange_OriginType); i { + file_otg_proto_msgTypes[962].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*FlowRSVPPathObjectsClass_Choice); i { case 0: return &v.state case 1: @@ -119639,8 +138678,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[783].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*IsisV6RouteRange_RedistributionType); i { + file_otg_proto_msgTypes[963].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*FlowRSVPPathObjectsSessionCType_Choice); i { case 0: return &v.state case 1: @@ -119651,8 +138690,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[784].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DeviceBgpMessageHeaderError_Subcode); i { + file_otg_proto_msgTypes[964].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*FlowRSVPPathObjectsRsvpHopCType_Choice); i { case 0: return &v.state case 1: @@ -119663,8 +138702,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[785].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DeviceBgpOpenMessageError_Subcode); i { + file_otg_proto_msgTypes[965].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*FlowRSVPPathObjectsTimeValuesCType_Choice); i { case 0: return &v.state case 1: @@ -119675,8 +138714,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[786].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DeviceBgpUpdateMessageError_Subcode); i { + file_otg_proto_msgTypes[966].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*FlowRSVPPathObjectsClassExplicitRouteCType_Choice); i { case 0: return &v.state case 1: @@ -119687,8 +138726,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[787].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DeviceBgpCeaseError_Subcode); i { + file_otg_proto_msgTypes[967].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*FlowRSVPType1ExplicitRouteSubobjectsType_Choice); i { case 0: return &v.state case 1: @@ -119699,8 +138738,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[788].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*BgpV4Peer_AsType); i { + file_otg_proto_msgTypes[968].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*FlowRSVPExplicitRouteLength_Choice); i { case 0: return &v.state case 1: @@ -119711,8 +138750,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[789].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*BgpV4Peer_AsNumberWidth); i { + file_otg_proto_msgTypes[969].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*FlowRSVPPathObjectsLabelRequestCType_Choice); i { case 0: return &v.state case 1: @@ -119723,8 +138762,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[790].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*BgpV4EthernetSegment_ActiveMode); i { + file_otg_proto_msgTypes[970].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*FlowRSVPPathObjectsSessionAttributeCType_Choice); i { case 0: return &v.state case 1: @@ -119735,8 +138774,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[791].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*BgpRouteAdvanced_Origin); i { + file_otg_proto_msgTypes[971].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*FlowRSVPLspTunnelFlag_Choice); i { case 0: return &v.state case 1: @@ -119747,8 +138786,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[792].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*BgpCommunity_Type); i { + file_otg_proto_msgTypes[972].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*FlowRSVPPathObjectsSenderTemplateCType_Choice); i { case 0: return &v.state case 1: @@ -119759,8 +138798,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[793].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*BgpExtCommunity_Type); i { + file_otg_proto_msgTypes[973].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*FlowRSVPPathObjectsSenderTspecCType_Choice); i { case 0: return &v.state case 1: @@ -119771,8 +138810,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[794].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*BgpExtCommunity_Subtype); i { + file_otg_proto_msgTypes[974].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*FlowRSVPPathObjectsRecordRouteCType_Choice); i { case 0: return &v.state case 1: @@ -119783,8 +138822,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[795].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*BgpAsPath_AsSetMode); i { + file_otg_proto_msgTypes[975].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*FlowRSVPPathObjectsRecordRouteSubObjectType_Choice); i { case 0: return &v.state case 1: @@ -119795,8 +138834,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[796].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*BgpAsPathSegment_Type); i { + file_otg_proto_msgTypes[976].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*FlowRSVPRecordRouteIPv4Flag_Choice); i { case 0: return &v.state case 1: @@ -119807,8 +138846,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[797].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*BgpV4EvpnEvis_Choice); i { + file_otg_proto_msgTypes[977].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*FlowRSVPRouteRecordLength_Choice); i { case 0: return &v.state case 1: @@ -119819,8 +138858,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[798].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*BgpV4EviVxlan_ReplicationType); i { + file_otg_proto_msgTypes[978].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*FlowRSVPObjectOptionsCustomLength_Choice); i { case 0: return &v.state case 1: @@ -119831,8 +138870,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[799].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*BgpRouteDistinguisher_RdType); i { + file_otg_proto_msgTypes[979].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*FlowSize_Choice); i { case 0: return &v.state case 1: @@ -119843,8 +138882,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[800].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*BgpRouteTarget_RtType); i { + file_otg_proto_msgTypes[980].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*FlowSizeWeightPairs_Choice); i { case 0: return &v.state case 1: @@ -119855,8 +138894,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[801].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*BgpV4RouteRange_NextHopMode); i { + file_otg_proto_msgTypes[981].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*FlowSizeWeightPairs_Predefined); i { case 0: return &v.state case 1: @@ -119867,8 +138906,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[802].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*BgpV4RouteRange_NextHopAddressType); i { + file_otg_proto_msgTypes[982].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*FlowRate_Choice); i { case 0: return &v.state case 1: @@ -119879,8 +138918,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[803].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*BgpExtendedCommunity_Choice); i { + file_otg_proto_msgTypes[983].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*FlowDuration_Choice); i { case 0: return &v.state case 1: @@ -119891,8 +138930,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[804].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*BgpExtendedCommunityTransitive2OctetAsType_Choice); i { + file_otg_proto_msgTypes[984].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*FlowDelay_Choice); i { case 0: return &v.state case 1: @@ -119903,8 +138942,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[805].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*BgpExtendedCommunityTransitiveIpv4AddressType_Choice); i { + file_otg_proto_msgTypes[985].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*FlowDurationInterBurstGap_Choice); i { case 0: return &v.state case 1: @@ -119915,8 +138954,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[806].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*BgpExtendedCommunityTransitive4OctetAsType_Choice); i { + file_otg_proto_msgTypes[986].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*FlowLatencyMetrics_Mode); i { case 0: return &v.state case 1: @@ -119927,8 +138966,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[807].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*BgpExtendedCommunityTransitiveOpaqueType_Choice); i { + file_otg_proto_msgTypes[987].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*FlowRxTxRatio_Choice); i { case 0: return &v.state case 1: @@ -119939,8 +138978,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[808].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*BgpExtendedCommunityTransitiveEvpnType_Choice); i { + file_otg_proto_msgTypes[988].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*EventRequest_Type); i { case 0: return &v.state case 1: @@ -119951,8 +138990,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[809].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*BgpExtendedCommunityNonTransitive2OctetAsType_Choice); i { + file_otg_proto_msgTypes[989].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*LldpConnection_Choice); i { case 0: return &v.state case 1: @@ -119963,8 +139002,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[810].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*BgpV6RouteRange_NextHopMode); i { + file_otg_proto_msgTypes[990].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*LldpChassisId_Choice); i { case 0: return &v.state case 1: @@ -119975,8 +139014,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[811].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*BgpV6RouteRange_NextHopAddressType); i { + file_otg_proto_msgTypes[991].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*LldpPortId_Choice); i { case 0: return &v.state case 1: @@ -119987,8 +139026,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[812].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*BgpSrteV4Policy_NextHopMode); i { + file_otg_proto_msgTypes[992].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*LldpChassisMacSubType_Choice); i { case 0: return &v.state case 1: @@ -119999,8 +139038,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[813].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*BgpSrteV4Policy_NextHopAddressType); i { + file_otg_proto_msgTypes[993].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*LldpPortInterfaceNameSubType_Choice); i { case 0: return &v.state case 1: @@ -120011,8 +139050,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[814].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*BgpSrteRemoteEndpointSubTlv_AddressFamily); i { + file_otg_proto_msgTypes[994].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*LldpSystemName_Choice); i { case 0: return &v.state case 1: @@ -120023,8 +139062,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[815].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*BgpSrteBindingSubTlv_BindingSidType); i { + file_otg_proto_msgTypes[995].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Error_Kind); i { case 0: return &v.state case 1: @@ -120035,8 +139074,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[816].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*BgpSrteExplicitNullLabelPolicySubTlv_ExplicitNullLabelPolicy); i { + file_otg_proto_msgTypes[996].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ConfigUpdate_Choice); i { case 0: return &v.state case 1: @@ -120047,8 +139086,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[817].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*BgpSrteSegment_SegmentType); i { + file_otg_proto_msgTypes[997].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*FlowsUpdate_PropertyNames); i { case 0: return &v.state case 1: @@ -120059,8 +139098,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[818].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*BgpSrteV6Policy_NextHopMode); i { + file_otg_proto_msgTypes[998].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ControlState_Choice); i { case 0: return &v.state case 1: @@ -120071,8 +139110,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[819].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*BgpSrteV6Policy_NextHopAddressType); i { + file_otg_proto_msgTypes[999].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*StatePort_Choice); i { case 0: return &v.state case 1: @@ -120083,8 +139122,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[820].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*BgpV6Peer_AsType); i { + file_otg_proto_msgTypes[1000].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*StateTraffic_Choice); i { case 0: return &v.state case 1: @@ -120095,8 +139134,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[821].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*BgpV6Peer_AsNumberWidth); i { + file_otg_proto_msgTypes[1001].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*StateProtocol_Choice); i { case 0: return &v.state case 1: @@ -120107,8 +139146,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[822].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*BgpV6EthernetSegment_ActiveMode); i { + file_otg_proto_msgTypes[1002].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*StatePortLink_State); i { case 0: return &v.state case 1: @@ -120119,8 +139158,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[823].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*BgpV6EvpnEvis_Choice); i { + file_otg_proto_msgTypes[1003].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*StatePortCapture_State); i { case 0: return &v.state case 1: @@ -120131,8 +139170,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[824].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*BgpV6EviVxlan_ReplicationType); i { + file_otg_proto_msgTypes[1004].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*StateTrafficFlowTransmit_State); i { case 0: return &v.state case 1: @@ -120143,8 +139182,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[825].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*VxlanV4TunnelDestinationIPMode_Choice); i { + file_otg_proto_msgTypes[1005].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*StateProtocolAll_State); i { case 0: return &v.state case 1: @@ -120155,8 +139194,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[826].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*VxlanV6TunnelDestinationIPMode_Choice); i { + file_otg_proto_msgTypes[1006].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*StateProtocolRoute_State); i { case 0: return &v.state case 1: @@ -120167,8 +139206,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[827].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*RsvpLspIpv4InterfaceP2PEgressIpv4Lsp_ReservationStyle); i { + file_otg_proto_msgTypes[1007].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*StateProtocolLacp_Choice); i { case 0: return &v.state case 1: @@ -120179,8 +139218,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[828].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*RsvpEro_PrependNeighborIp); i { + file_otg_proto_msgTypes[1008].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*StateProtocolLacpAdmin_State); i { case 0: return &v.state case 1: @@ -120191,8 +139230,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[829].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*RsvpEroSubobject_Type); i { + file_otg_proto_msgTypes[1009].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*StateProtocolLacpMemberPorts_State); i { case 0: return &v.state case 1: @@ -120203,8 +139242,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[830].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*RsvpEroSubobject_HopType); i { + file_otg_proto_msgTypes[1010].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*StateProtocolBgp_Choice); i { case 0: return &v.state case 1: @@ -120215,8 +139254,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[831].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*FlowTxRx_Choice); i { + file_otg_proto_msgTypes[1011].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*StateProtocolBgpPeers_State); i { case 0: return &v.state case 1: @@ -120227,8 +139266,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[832].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*FlowRouter_Mode); i { + file_otg_proto_msgTypes[1012].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*StateProtocolIsis_Choice); i { case 0: return &v.state case 1: @@ -120239,8 +139278,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[833].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*FlowHeader_Choice); i { + file_otg_proto_msgTypes[1013].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*StateProtocolIsisRouters_State); i { case 0: return &v.state case 1: @@ -120251,8 +139290,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[834].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*FlowIpv4Priority_Choice); i { + file_otg_proto_msgTypes[1014].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ControlAction_Choice); i { case 0: return &v.state case 1: @@ -120263,8 +139302,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[835].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*FlowIcmp_Choice); i { + file_otg_proto_msgTypes[1015].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ActionResponse_Choice); i { case 0: return &v.state case 1: @@ -120275,8 +139314,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[836].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*FlowIcmpv6_Choice); i { + file_otg_proto_msgTypes[1016].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ActionProtocol_Choice); i { case 0: return &v.state case 1: @@ -120287,8 +139326,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[837].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*FlowSize_Choice); i { + file_otg_proto_msgTypes[1017].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ActionResponseProtocol_Choice); i { case 0: return &v.state case 1: @@ -120299,8 +139338,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[838].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*FlowSizeWeightPairs_Choice); i { + file_otg_proto_msgTypes[1018].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ActionProtocolIpv4_Choice); i { case 0: return &v.state case 1: @@ -120311,8 +139350,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[839].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*FlowSizeWeightPairs_Predefined); i { + file_otg_proto_msgTypes[1019].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ActionResponseProtocolIpv4_Choice); i { case 0: return &v.state case 1: @@ -120323,8 +139362,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[840].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*FlowRate_Choice); i { + file_otg_proto_msgTypes[1020].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ActionResponseProtocolIpv4PingResponse_Result); i { case 0: return &v.state case 1: @@ -120335,8 +139374,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[841].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*FlowDuration_Choice); i { + file_otg_proto_msgTypes[1021].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ActionProtocolIpv6_Choice); i { case 0: return &v.state case 1: @@ -120347,8 +139386,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[842].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*FlowDelay_Choice); i { + file_otg_proto_msgTypes[1022].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ActionResponseProtocolIpv6_Choice); i { case 0: return &v.state case 1: @@ -120359,8 +139398,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[843].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*FlowDurationInterBurstGap_Choice); i { + file_otg_proto_msgTypes[1023].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ActionResponseProtocolIpv6PingResponse_Result); i { case 0: return &v.state case 1: @@ -120371,8 +139410,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[844].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*FlowLatencyMetrics_Mode); i { + file_otg_proto_msgTypes[1024].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ActionProtocolBgp_Choice); i { case 0: return &v.state case 1: @@ -120383,8 +139422,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[845].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*FlowRxTxRatio_Choice); i { + file_otg_proto_msgTypes[1025].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ActionProtocolBgpNotification_Choice); i { case 0: return &v.state case 1: @@ -120395,8 +139434,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[846].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*EventRequest_Type); i { + file_otg_proto_msgTypes[1026].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*MetricsRequest_Choice); i { case 0: return &v.state case 1: @@ -120407,8 +139446,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[847].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*LldpConnection_Choice); i { + file_otg_proto_msgTypes[1027].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*MetricsResponse_Choice); i { case 0: return &v.state case 1: @@ -120419,8 +139458,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[848].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*LldpChassisId_Choice); i { + file_otg_proto_msgTypes[1028].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PortMetricsRequest_ColumnNames); i { case 0: return &v.state case 1: @@ -120431,8 +139470,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[849].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*LldpPortId_Choice); i { + file_otg_proto_msgTypes[1029].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PortMetric_Link); i { case 0: return &v.state case 1: @@ -120443,8 +139482,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[850].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*LldpChassisMacSubType_Choice); i { + file_otg_proto_msgTypes[1030].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PortMetric_Capture); i { case 0: return &v.state case 1: @@ -120455,8 +139494,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[851].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*LldpPortInterfaceNameSubType_Choice); i { + file_otg_proto_msgTypes[1031].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PortMetric_Transmit); i { case 0: return &v.state case 1: @@ -120467,8 +139506,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[852].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*LldpSystemName_Choice); i { + file_otg_proto_msgTypes[1032].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*FlowMetricsRequest_MetricNames); i { case 0: return &v.state case 1: @@ -120479,8 +139518,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[853].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Error_Kind); i { + file_otg_proto_msgTypes[1033].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*FlowTaggedMetricsFilter_MetricNames); i { case 0: return &v.state case 1: @@ -120491,8 +139530,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[854].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ConfigUpdate_Choice); i { + file_otg_proto_msgTypes[1034].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*FlowMetric_Transmit); i { case 0: return &v.state case 1: @@ -120503,8 +139542,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[855].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*FlowsUpdate_PropertyNames); i { + file_otg_proto_msgTypes[1035].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*FlowMetricTagValue_Choice); i { case 0: return &v.state case 1: @@ -120515,8 +139554,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[856].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ControlState_Choice); i { + file_otg_proto_msgTypes[1036].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Bgpv4MetricsRequest_ColumnNames); i { case 0: return &v.state case 1: @@ -120527,8 +139566,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[857].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*StatePort_Choice); i { + file_otg_proto_msgTypes[1037].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Bgpv4Metric_SessionState); i { case 0: return &v.state case 1: @@ -120539,8 +139578,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[858].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*StateTraffic_Choice); i { + file_otg_proto_msgTypes[1038].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Bgpv4Metric_FsmState); i { case 0: return &v.state case 1: @@ -120551,8 +139590,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[859].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*StateProtocol_Choice); i { + file_otg_proto_msgTypes[1039].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Bgpv6MetricsRequest_ColumnNames); i { case 0: return &v.state case 1: @@ -120563,8 +139602,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[860].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*StatePortLink_State); i { + file_otg_proto_msgTypes[1040].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Bgpv6Metric_SessionState); i { case 0: return &v.state case 1: @@ -120575,8 +139614,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[861].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*StatePortCapture_State); i { + file_otg_proto_msgTypes[1041].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Bgpv6Metric_FsmState); i { case 0: return &v.state case 1: @@ -120587,8 +139626,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[862].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*StateTrafficFlowTransmit_State); i { + file_otg_proto_msgTypes[1042].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*IsisMetricsRequest_ColumnNames); i { case 0: return &v.state case 1: @@ -120599,8 +139638,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[863].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*StateProtocolAll_State); i { + file_otg_proto_msgTypes[1043].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*LagMetricsRequest_ColumnNames); i { case 0: return &v.state case 1: @@ -120611,8 +139650,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[864].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*StateProtocolRoute_State); i { + file_otg_proto_msgTypes[1044].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*LagMetric_OperStatus); i { case 0: return &v.state case 1: @@ -120623,8 +139662,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[865].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*StateProtocolLacp_Choice); i { + file_otg_proto_msgTypes[1045].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*LacpMetricsRequest_ColumnNames); i { case 0: return &v.state case 1: @@ -120635,8 +139674,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[866].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*StateProtocolLacpAdmin_State); i { + file_otg_proto_msgTypes[1046].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*LacpMetric_Activity); i { case 0: return &v.state case 1: @@ -120647,8 +139686,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[867].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*StateProtocolLacpMemberPorts_State); i { + file_otg_proto_msgTypes[1047].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*LacpMetric_Timeout); i { case 0: return &v.state case 1: @@ -120659,8 +139698,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[868].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*StateProtocolBgp_Choice); i { + file_otg_proto_msgTypes[1048].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*LacpMetric_Synchronization); i { case 0: return &v.state case 1: @@ -120671,8 +139710,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[869].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*StateProtocolBgpPeers_State); i { + file_otg_proto_msgTypes[1049].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*LldpMetricsRequest_ColumnNames); i { case 0: return &v.state case 1: @@ -120683,8 +139722,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[870].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*StateProtocolIsis_Choice); i { + file_otg_proto_msgTypes[1050].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*RsvpMetricsRequest_ColumnNames); i { case 0: return &v.state case 1: @@ -120695,8 +139734,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[871].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*StateProtocolIsisRouters_State); i { + file_otg_proto_msgTypes[1051].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*StatesRequest_Choice); i { case 0: return &v.state case 1: @@ -120707,8 +139746,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[872].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ControlAction_Choice); i { + file_otg_proto_msgTypes[1052].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*StatesResponse_Choice); i { case 0: return &v.state case 1: @@ -120719,8 +139758,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[873].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ActionResponse_Choice); i { + file_otg_proto_msgTypes[1053].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*BgpPrefixStateRequest_PrefixFilters); i { case 0: return &v.state case 1: @@ -120731,8 +139770,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[874].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ActionProtocol_Choice); i { + file_otg_proto_msgTypes[1054].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*BgpPrefixIpv4UnicastFilter_Origin); i { case 0: return &v.state case 1: @@ -120743,8 +139782,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[875].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ActionResponseProtocol_Choice); i { + file_otg_proto_msgTypes[1055].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*BgpPrefixIpv6UnicastFilter_Origin); i { case 0: return &v.state case 1: @@ -120755,8 +139794,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[876].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ActionProtocolIpv4_Choice); i { + file_otg_proto_msgTypes[1056].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*BgpPrefixIpv4UnicastState_Origin); i { case 0: return &v.state case 1: @@ -120767,8 +139806,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[877].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ActionResponseProtocolIpv4_Choice); i { + file_otg_proto_msgTypes[1057].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*BgpPrefixIpv6UnicastState_Origin); i { case 0: return &v.state case 1: @@ -120779,8 +139818,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[878].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ActionResponseProtocolIpv4PingResponse_Result); i { + file_otg_proto_msgTypes[1058].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ResultBgpCommunity_Type); i { case 0: return &v.state case 1: @@ -120791,8 +139830,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[879].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ActionProtocolIpv6_Choice); i { + file_otg_proto_msgTypes[1059].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ResultBgpAsPathSegment_Type); i { case 0: return &v.state case 1: @@ -120803,8 +139842,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[880].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ActionResponseProtocolIpv6_Choice); i { + file_otg_proto_msgTypes[1060].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*IsisLspState_PduType); i { case 0: return &v.state case 1: @@ -120815,8 +139854,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[881].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ActionResponseProtocolIpv6PingResponse_Result); i { + file_otg_proto_msgTypes[1061].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*IsisLspV4Prefix_RedistributionType); i { case 0: return &v.state case 1: @@ -120827,8 +139866,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[882].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ActionProtocolBgp_Choice); i { + file_otg_proto_msgTypes[1062].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*IsisLspV4Prefix_OriginType); i { case 0: return &v.state case 1: @@ -120839,8 +139878,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[883].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ActionProtocolBgpNotification_Choice); i { + file_otg_proto_msgTypes[1063].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*IsisLspExtendedV4Prefix_RedistributionType); i { case 0: return &v.state case 1: @@ -120851,8 +139890,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[884].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*MetricsRequest_Choice); i { + file_otg_proto_msgTypes[1064].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*IsisLspV6Prefix_RedistributionType); i { case 0: return &v.state case 1: @@ -120863,8 +139902,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[885].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*MetricsResponse_Choice); i { + file_otg_proto_msgTypes[1065].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*IsisLspV6Prefix_OriginType); i { case 0: return &v.state case 1: @@ -120875,8 +139914,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[886].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PortMetricsRequest_ColumnNames); i { + file_otg_proto_msgTypes[1066].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*LldpNeighborsState_ChassisIdType); i { case 0: return &v.state case 1: @@ -120887,8 +139926,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[887].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PortMetric_Link); i { + file_otg_proto_msgTypes[1067].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*LldpNeighborsState_PortIdType); i { case 0: return &v.state case 1: @@ -120899,8 +139938,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[888].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PortMetric_Capture); i { + file_otg_proto_msgTypes[1068].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*LldpCapabilityState_CapabilityName); i { case 0: return &v.state case 1: @@ -120911,8 +139950,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[889].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PortMetric_Transmit); i { + file_otg_proto_msgTypes[1069].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*RsvpLspState_SessionStatus); i { case 0: return &v.state case 1: @@ -120923,8 +139962,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[890].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*FlowMetricsRequest_MetricNames); i { + file_otg_proto_msgTypes[1070].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*RsvpLspState_LastFlapReason); i { case 0: return &v.state case 1: @@ -120935,8 +139974,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[891].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*FlowTaggedMetricsFilter_MetricNames); i { + file_otg_proto_msgTypes[1071].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*RsvpLspIpv4Ero_Type); i { case 0: return &v.state case 1: @@ -120947,8 +139986,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[892].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*FlowMetric_Transmit); i { + file_otg_proto_msgTypes[1072].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowEthernetDst_Choice); i { case 0: return &v.state case 1: @@ -120959,8 +139998,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[893].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*FlowMetricTagValue_Choice); i { + file_otg_proto_msgTypes[1073].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowEthernetSrc_Choice); i { case 0: return &v.state case 1: @@ -120971,8 +140010,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[894].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Bgpv4MetricsRequest_ColumnNames); i { + file_otg_proto_msgTypes[1074].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowEthernetEtherType_Choice); i { case 0: return &v.state case 1: @@ -120983,8 +140022,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[895].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Bgpv4Metric_SessionState); i { + file_otg_proto_msgTypes[1075].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowEthernetPfcQueue_Choice); i { case 0: return &v.state case 1: @@ -120995,8 +140034,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[896].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Bgpv4Metric_FsmState); i { + file_otg_proto_msgTypes[1076].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowVlanPriority_Choice); i { case 0: return &v.state case 1: @@ -121007,8 +140046,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[897].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Bgpv6MetricsRequest_ColumnNames); i { + file_otg_proto_msgTypes[1077].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowVlanCfi_Choice); i { case 0: return &v.state case 1: @@ -121019,8 +140058,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[898].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Bgpv6Metric_SessionState); i { + file_otg_proto_msgTypes[1078].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowVlanId_Choice); i { case 0: return &v.state case 1: @@ -121031,8 +140070,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[899].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Bgpv6Metric_FsmState); i { + file_otg_proto_msgTypes[1079].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowVlanTpid_Choice); i { case 0: return &v.state case 1: @@ -121043,8 +140082,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[900].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*IsisMetricsRequest_ColumnNames); i { + file_otg_proto_msgTypes[1080].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowVxlanFlags_Choice); i { case 0: return &v.state case 1: @@ -121055,8 +140094,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[901].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*LagMetricsRequest_ColumnNames); i { + file_otg_proto_msgTypes[1081].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowVxlanReserved0_Choice); i { case 0: return &v.state case 1: @@ -121067,8 +140106,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[902].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*LagMetric_OperStatus); i { + file_otg_proto_msgTypes[1082].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowVxlanVni_Choice); i { case 0: return &v.state case 1: @@ -121079,8 +140118,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[903].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*LacpMetricsRequest_ColumnNames); i { + file_otg_proto_msgTypes[1083].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowVxlanReserved1_Choice); i { case 0: return &v.state case 1: @@ -121091,8 +140130,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[904].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*LacpMetric_Activity); i { + file_otg_proto_msgTypes[1084].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowIpv4Version_Choice); i { case 0: return &v.state case 1: @@ -121103,8 +140142,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[905].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*LacpMetric_Timeout); i { + file_otg_proto_msgTypes[1085].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowIpv4HeaderLength_Choice); i { case 0: return &v.state case 1: @@ -121115,8 +140154,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[906].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*LacpMetric_Synchronization); i { + file_otg_proto_msgTypes[1086].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowIpv4TotalLength_Choice); i { case 0: return &v.state case 1: @@ -121127,8 +140166,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[907].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*LldpMetricsRequest_ColumnNames); i { + file_otg_proto_msgTypes[1087].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowIpv4Identification_Choice); i { case 0: return &v.state case 1: @@ -121139,8 +140178,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[908].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*RsvpMetricsRequest_ColumnNames); i { + file_otg_proto_msgTypes[1088].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowIpv4Reserved_Choice); i { case 0: return &v.state case 1: @@ -121151,8 +140190,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[909].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*StatesRequest_Choice); i { + file_otg_proto_msgTypes[1089].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowIpv4DontFragment_Choice); i { case 0: return &v.state case 1: @@ -121163,8 +140202,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[910].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*StatesResponse_Choice); i { + file_otg_proto_msgTypes[1090].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowIpv4MoreFragments_Choice); i { case 0: return &v.state case 1: @@ -121175,8 +140214,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[911].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*BgpPrefixStateRequest_PrefixFilters); i { + file_otg_proto_msgTypes[1091].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowIpv4FragmentOffset_Choice); i { case 0: return &v.state case 1: @@ -121187,8 +140226,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[912].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*BgpPrefixIpv4UnicastFilter_Origin); i { + file_otg_proto_msgTypes[1092].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowIpv4TimeToLive_Choice); i { case 0: return &v.state case 1: @@ -121199,8 +140238,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[913].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*BgpPrefixIpv6UnicastFilter_Origin); i { + file_otg_proto_msgTypes[1093].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowIpv4Protocol_Choice); i { case 0: return &v.state case 1: @@ -121211,8 +140250,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[914].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*BgpPrefixIpv4UnicastState_Origin); i { + file_otg_proto_msgTypes[1094].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowIpv4HeaderChecksum_Choice); i { case 0: return &v.state case 1: @@ -121223,8 +140262,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[915].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*BgpPrefixIpv6UnicastState_Origin); i { + file_otg_proto_msgTypes[1095].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowIpv4HeaderChecksum_Generated); i { case 0: return &v.state case 1: @@ -121235,8 +140274,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[916].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ResultBgpCommunity_Type); i { + file_otg_proto_msgTypes[1096].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowIpv4Src_Choice); i { case 0: return &v.state case 1: @@ -121247,8 +140286,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[917].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ResultBgpAsPathSegment_Type); i { + file_otg_proto_msgTypes[1097].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowIpv4Dst_Choice); i { case 0: return &v.state case 1: @@ -121259,8 +140298,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[918].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*IsisLspState_PduType); i { + file_otg_proto_msgTypes[1098].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowIpv4PriorityRaw_Choice); i { case 0: return &v.state case 1: @@ -121271,8 +140310,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[919].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*IsisLspV4Prefix_RedistributionType); i { + file_otg_proto_msgTypes[1099].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowIpv4DscpPhb_Choice); i { case 0: return &v.state case 1: @@ -121283,8 +140322,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[920].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*IsisLspV4Prefix_OriginType); i { + file_otg_proto_msgTypes[1100].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowIpv4DscpEcn_Choice); i { case 0: return &v.state case 1: @@ -121295,8 +140334,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[921].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*IsisLspExtendedV4Prefix_RedistributionType); i { + file_otg_proto_msgTypes[1101].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowIpv4TosPrecedence_Choice); i { case 0: return &v.state case 1: @@ -121307,8 +140346,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[922].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*IsisLspV6Prefix_RedistributionType); i { + file_otg_proto_msgTypes[1102].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowIpv4TosDelay_Choice); i { case 0: return &v.state case 1: @@ -121319,8 +140358,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[923].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*IsisLspV6Prefix_OriginType); i { + file_otg_proto_msgTypes[1103].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowIpv4TosThroughput_Choice); i { case 0: return &v.state case 1: @@ -121331,8 +140370,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[924].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*LldpNeighborsState_ChassisIdType); i { + file_otg_proto_msgTypes[1104].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowIpv4TosReliability_Choice); i { case 0: return &v.state case 1: @@ -121343,8 +140382,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[925].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*LldpNeighborsState_PortIdType); i { + file_otg_proto_msgTypes[1105].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowIpv4TosMonetary_Choice); i { case 0: return &v.state case 1: @@ -121355,8 +140394,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[926].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*LldpCapabilityState_CapabilityName); i { + file_otg_proto_msgTypes[1106].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowIpv4TosUnused_Choice); i { case 0: return &v.state case 1: @@ -121367,8 +140406,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[927].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*RsvpLspState_SessionStatus); i { + file_otg_proto_msgTypes[1107].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowIpv6Version_Choice); i { case 0: return &v.state case 1: @@ -121379,8 +140418,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[928].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*RsvpLspState_LastFlapReason); i { + file_otg_proto_msgTypes[1108].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowIpv6TrafficClass_Choice); i { case 0: return &v.state case 1: @@ -121391,8 +140430,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[929].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*RsvpLspIpv4Ero_Type); i { + file_otg_proto_msgTypes[1109].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowIpv6FlowLabel_Choice); i { case 0: return &v.state case 1: @@ -121403,8 +140442,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[930].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowEthernetDst_Choice); i { + file_otg_proto_msgTypes[1110].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowIpv6PayloadLength_Choice); i { case 0: return &v.state case 1: @@ -121415,8 +140454,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[931].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowEthernetSrc_Choice); i { + file_otg_proto_msgTypes[1111].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowIpv6NextHeader_Choice); i { case 0: return &v.state case 1: @@ -121427,8 +140466,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[932].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowEthernetEtherType_Choice); i { + file_otg_proto_msgTypes[1112].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowIpv6HopLimit_Choice); i { case 0: return &v.state case 1: @@ -121439,8 +140478,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[933].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowEthernetPfcQueue_Choice); i { + file_otg_proto_msgTypes[1113].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowIpv6Src_Choice); i { case 0: return &v.state case 1: @@ -121451,8 +140490,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[934].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowVlanPriority_Choice); i { + file_otg_proto_msgTypes[1114].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowIpv6Dst_Choice); i { case 0: return &v.state case 1: @@ -121463,8 +140502,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[935].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowVlanCfi_Choice); i { + file_otg_proto_msgTypes[1115].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowPfcPauseDst_Choice); i { case 0: return &v.state case 1: @@ -121475,8 +140514,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[936].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowVlanId_Choice); i { + file_otg_proto_msgTypes[1116].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowPfcPauseSrc_Choice); i { case 0: return &v.state case 1: @@ -121487,8 +140526,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[937].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowVlanTpid_Choice); i { + file_otg_proto_msgTypes[1117].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowPfcPauseEtherType_Choice); i { case 0: return &v.state case 1: @@ -121499,8 +140538,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[938].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowVxlanFlags_Choice); i { + file_otg_proto_msgTypes[1118].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowPfcPauseControlOpCode_Choice); i { case 0: return &v.state case 1: @@ -121511,8 +140550,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[939].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowVxlanReserved0_Choice); i { + file_otg_proto_msgTypes[1119].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowPfcPauseClassEnableVector_Choice); i { case 0: return &v.state case 1: @@ -121523,8 +140562,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[940].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowVxlanVni_Choice); i { + file_otg_proto_msgTypes[1120].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowPfcPausePauseClass0_Choice); i { case 0: return &v.state case 1: @@ -121535,8 +140574,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[941].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowVxlanReserved1_Choice); i { + file_otg_proto_msgTypes[1121].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowPfcPausePauseClass1_Choice); i { case 0: return &v.state case 1: @@ -121547,8 +140586,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[942].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowIpv4Version_Choice); i { + file_otg_proto_msgTypes[1122].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowPfcPausePauseClass2_Choice); i { case 0: return &v.state case 1: @@ -121559,8 +140598,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[943].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowIpv4HeaderLength_Choice); i { + file_otg_proto_msgTypes[1123].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowPfcPausePauseClass3_Choice); i { case 0: return &v.state case 1: @@ -121571,8 +140610,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[944].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowIpv4TotalLength_Choice); i { + file_otg_proto_msgTypes[1124].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowPfcPausePauseClass4_Choice); i { case 0: return &v.state case 1: @@ -121583,8 +140622,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[945].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowIpv4Identification_Choice); i { + file_otg_proto_msgTypes[1125].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowPfcPausePauseClass5_Choice); i { case 0: return &v.state case 1: @@ -121595,8 +140634,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[946].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowIpv4Reserved_Choice); i { + file_otg_proto_msgTypes[1126].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowPfcPausePauseClass6_Choice); i { case 0: return &v.state case 1: @@ -121607,8 +140646,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[947].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowIpv4DontFragment_Choice); i { + file_otg_proto_msgTypes[1127].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowPfcPausePauseClass7_Choice); i { case 0: return &v.state case 1: @@ -121619,8 +140658,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[948].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowIpv4MoreFragments_Choice); i { + file_otg_proto_msgTypes[1128].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowEthernetPauseDst_Choice); i { case 0: return &v.state case 1: @@ -121631,8 +140670,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[949].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowIpv4FragmentOffset_Choice); i { + file_otg_proto_msgTypes[1129].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowEthernetPauseSrc_Choice); i { case 0: return &v.state case 1: @@ -121643,8 +140682,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[950].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowIpv4TimeToLive_Choice); i { + file_otg_proto_msgTypes[1130].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowEthernetPauseEtherType_Choice); i { case 0: return &v.state case 1: @@ -121655,8 +140694,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[951].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowIpv4Protocol_Choice); i { + file_otg_proto_msgTypes[1131].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowEthernetPauseControlOpCode_Choice); i { case 0: return &v.state case 1: @@ -121667,8 +140706,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[952].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowIpv4HeaderChecksum_Choice); i { + file_otg_proto_msgTypes[1132].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowEthernetPauseTime_Choice); i { case 0: return &v.state case 1: @@ -121679,8 +140718,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[953].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowIpv4HeaderChecksum_Generated); i { + file_otg_proto_msgTypes[1133].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowTcpSrcPort_Choice); i { case 0: return &v.state case 1: @@ -121691,8 +140730,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[954].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowIpv4Src_Choice); i { + file_otg_proto_msgTypes[1134].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowTcpDstPort_Choice); i { case 0: return &v.state case 1: @@ -121703,8 +140742,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[955].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowIpv4Dst_Choice); i { + file_otg_proto_msgTypes[1135].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowTcpSeqNum_Choice); i { case 0: return &v.state case 1: @@ -121715,8 +140754,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[956].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowIpv4PriorityRaw_Choice); i { + file_otg_proto_msgTypes[1136].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowTcpAckNum_Choice); i { case 0: return &v.state case 1: @@ -121727,8 +140766,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[957].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowIpv4DscpPhb_Choice); i { + file_otg_proto_msgTypes[1137].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowTcpDataOffset_Choice); i { case 0: return &v.state case 1: @@ -121739,8 +140778,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[958].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowIpv4DscpEcn_Choice); i { + file_otg_proto_msgTypes[1138].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowTcpEcnNs_Choice); i { case 0: return &v.state case 1: @@ -121751,8 +140790,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[959].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowIpv4TosPrecedence_Choice); i { + file_otg_proto_msgTypes[1139].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowTcpEcnCwr_Choice); i { case 0: return &v.state case 1: @@ -121763,8 +140802,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[960].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowIpv4TosDelay_Choice); i { + file_otg_proto_msgTypes[1140].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowTcpEcnEcho_Choice); i { case 0: return &v.state case 1: @@ -121775,8 +140814,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[961].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowIpv4TosThroughput_Choice); i { + file_otg_proto_msgTypes[1141].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowTcpCtlUrg_Choice); i { case 0: return &v.state case 1: @@ -121787,8 +140826,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[962].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowIpv4TosReliability_Choice); i { + file_otg_proto_msgTypes[1142].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowTcpCtlAck_Choice); i { case 0: return &v.state case 1: @@ -121799,8 +140838,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[963].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowIpv4TosMonetary_Choice); i { + file_otg_proto_msgTypes[1143].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowTcpCtlPsh_Choice); i { case 0: return &v.state case 1: @@ -121811,8 +140850,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[964].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowIpv4TosUnused_Choice); i { + file_otg_proto_msgTypes[1144].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowTcpCtlRst_Choice); i { case 0: return &v.state case 1: @@ -121823,8 +140862,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[965].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowIpv6Version_Choice); i { + file_otg_proto_msgTypes[1145].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowTcpCtlSyn_Choice); i { case 0: return &v.state case 1: @@ -121835,8 +140874,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[966].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowIpv6TrafficClass_Choice); i { + file_otg_proto_msgTypes[1146].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowTcpCtlFin_Choice); i { case 0: return &v.state case 1: @@ -121847,8 +140886,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[967].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowIpv6FlowLabel_Choice); i { + file_otg_proto_msgTypes[1147].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowTcpWindow_Choice); i { case 0: return &v.state case 1: @@ -121859,8 +140898,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[968].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowIpv6PayloadLength_Choice); i { + file_otg_proto_msgTypes[1148].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowUdpSrcPort_Choice); i { case 0: return &v.state case 1: @@ -121871,8 +140910,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[969].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowIpv6NextHeader_Choice); i { + file_otg_proto_msgTypes[1149].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowUdpDstPort_Choice); i { case 0: return &v.state case 1: @@ -121883,8 +140922,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[970].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowIpv6HopLimit_Choice); i { + file_otg_proto_msgTypes[1150].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowUdpLength_Choice); i { case 0: return &v.state case 1: @@ -121895,8 +140934,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[971].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowIpv6Src_Choice); i { + file_otg_proto_msgTypes[1151].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowUdpChecksum_Choice); i { case 0: return &v.state case 1: @@ -121907,8 +140946,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[972].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowIpv6Dst_Choice); i { + file_otg_proto_msgTypes[1152].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowUdpChecksum_Generated); i { case 0: return &v.state case 1: @@ -121919,8 +140958,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[973].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowPfcPauseDst_Choice); i { + file_otg_proto_msgTypes[1153].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowGreChecksumPresent_Choice); i { case 0: return &v.state case 1: @@ -121931,8 +140970,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[974].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowPfcPauseSrc_Choice); i { + file_otg_proto_msgTypes[1154].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowGreReserved0_Choice); i { case 0: return &v.state case 1: @@ -121943,8 +140982,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[975].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowPfcPauseEtherType_Choice); i { + file_otg_proto_msgTypes[1155].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowGreVersion_Choice); i { case 0: return &v.state case 1: @@ -121955,8 +140994,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[976].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowPfcPauseControlOpCode_Choice); i { + file_otg_proto_msgTypes[1156].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowGreProtocol_Choice); i { case 0: return &v.state case 1: @@ -121967,8 +141006,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[977].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowPfcPauseClassEnableVector_Choice); i { + file_otg_proto_msgTypes[1157].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowGreChecksum_Choice); i { case 0: return &v.state case 1: @@ -121979,8 +141018,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[978].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowPfcPausePauseClass0_Choice); i { + file_otg_proto_msgTypes[1158].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowGreChecksum_Generated); i { case 0: return &v.state case 1: @@ -121991,8 +141030,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[979].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowPfcPausePauseClass1_Choice); i { + file_otg_proto_msgTypes[1159].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowGreReserved1_Choice); i { case 0: return &v.state case 1: @@ -122003,8 +141042,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[980].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowPfcPausePauseClass2_Choice); i { + file_otg_proto_msgTypes[1160].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowGtpv1Version_Choice); i { case 0: return &v.state case 1: @@ -122015,8 +141054,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[981].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowPfcPausePauseClass3_Choice); i { + file_otg_proto_msgTypes[1161].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowGtpv1ProtocolType_Choice); i { case 0: return &v.state case 1: @@ -122027,8 +141066,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[982].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowPfcPausePauseClass4_Choice); i { + file_otg_proto_msgTypes[1162].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowGtpv1Reserved_Choice); i { case 0: return &v.state case 1: @@ -122039,8 +141078,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[983].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowPfcPausePauseClass5_Choice); i { + file_otg_proto_msgTypes[1163].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowGtpv1EFlag_Choice); i { case 0: return &v.state case 1: @@ -122051,8 +141090,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[984].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowPfcPausePauseClass6_Choice); i { + file_otg_proto_msgTypes[1164].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowGtpv1SFlag_Choice); i { case 0: return &v.state case 1: @@ -122063,8 +141102,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[985].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowPfcPausePauseClass7_Choice); i { + file_otg_proto_msgTypes[1165].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowGtpv1PnFlag_Choice); i { case 0: return &v.state case 1: @@ -122075,8 +141114,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[986].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowEthernetPauseDst_Choice); i { + file_otg_proto_msgTypes[1166].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowGtpv1MessageType_Choice); i { case 0: return &v.state case 1: @@ -122087,8 +141126,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[987].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowEthernetPauseSrc_Choice); i { + file_otg_proto_msgTypes[1167].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowGtpv1MessageLength_Choice); i { case 0: return &v.state case 1: @@ -122099,8 +141138,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[988].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowEthernetPauseEtherType_Choice); i { + file_otg_proto_msgTypes[1168].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowGtpv1Teid_Choice); i { case 0: return &v.state case 1: @@ -122111,8 +141150,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[989].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowEthernetPauseControlOpCode_Choice); i { + file_otg_proto_msgTypes[1169].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowGtpv1SquenceNumber_Choice); i { case 0: return &v.state case 1: @@ -122123,8 +141162,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[990].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowEthernetPauseTime_Choice); i { + file_otg_proto_msgTypes[1170].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowGtpv1NPduNumber_Choice); i { case 0: return &v.state case 1: @@ -122135,8 +141174,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[991].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowTcpSrcPort_Choice); i { + file_otg_proto_msgTypes[1171].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowGtpv1NextExtensionHeaderType_Choice); i { case 0: return &v.state case 1: @@ -122147,8 +141186,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[992].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowTcpDstPort_Choice); i { + file_otg_proto_msgTypes[1172].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowGtpExtensionExtensionLength_Choice); i { case 0: return &v.state case 1: @@ -122159,8 +141198,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[993].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowTcpSeqNum_Choice); i { + file_otg_proto_msgTypes[1173].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowGtpExtensionContents_Choice); i { case 0: return &v.state case 1: @@ -122171,8 +141210,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[994].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowTcpAckNum_Choice); i { + file_otg_proto_msgTypes[1174].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowGtpExtensionNextExtensionHeader_Choice); i { case 0: return &v.state case 1: @@ -122183,8 +141222,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[995].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowTcpDataOffset_Choice); i { + file_otg_proto_msgTypes[1175].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowGtpv2Version_Choice); i { case 0: return &v.state case 1: @@ -122195,8 +141234,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[996].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowTcpEcnNs_Choice); i { + file_otg_proto_msgTypes[1176].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowGtpv2PiggybackingFlag_Choice); i { case 0: return &v.state case 1: @@ -122207,8 +141246,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[997].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowTcpEcnCwr_Choice); i { + file_otg_proto_msgTypes[1177].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowGtpv2TeidFlag_Choice); i { case 0: return &v.state case 1: @@ -122219,8 +141258,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[998].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowTcpEcnEcho_Choice); i { + file_otg_proto_msgTypes[1178].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowGtpv2Spare1_Choice); i { case 0: return &v.state case 1: @@ -122231,8 +141270,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[999].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowTcpCtlUrg_Choice); i { + file_otg_proto_msgTypes[1179].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowGtpv2MessageType_Choice); i { case 0: return &v.state case 1: @@ -122243,8 +141282,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[1000].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowTcpCtlAck_Choice); i { + file_otg_proto_msgTypes[1180].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowGtpv2MessageLength_Choice); i { case 0: return &v.state case 1: @@ -122255,8 +141294,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[1001].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowTcpCtlPsh_Choice); i { + file_otg_proto_msgTypes[1181].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowGtpv2Teid_Choice); i { case 0: return &v.state case 1: @@ -122267,8 +141306,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[1002].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowTcpCtlRst_Choice); i { + file_otg_proto_msgTypes[1182].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowGtpv2SequenceNumber_Choice); i { case 0: return &v.state case 1: @@ -122279,8 +141318,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[1003].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowTcpCtlSyn_Choice); i { + file_otg_proto_msgTypes[1183].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowGtpv2Spare2_Choice); i { case 0: return &v.state case 1: @@ -122291,8 +141330,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[1004].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowTcpCtlFin_Choice); i { + file_otg_proto_msgTypes[1184].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowArpHardwareType_Choice); i { case 0: return &v.state case 1: @@ -122303,8 +141342,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[1005].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowTcpWindow_Choice); i { + file_otg_proto_msgTypes[1185].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowArpProtocolType_Choice); i { case 0: return &v.state case 1: @@ -122315,8 +141354,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[1006].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowUdpSrcPort_Choice); i { + file_otg_proto_msgTypes[1186].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowArpHardwareLength_Choice); i { case 0: return &v.state case 1: @@ -122327,8 +141366,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[1007].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowUdpDstPort_Choice); i { + file_otg_proto_msgTypes[1187].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowArpProtocolLength_Choice); i { case 0: return &v.state case 1: @@ -122339,8 +141378,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[1008].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowUdpLength_Choice); i { + file_otg_proto_msgTypes[1188].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowArpOperation_Choice); i { case 0: return &v.state case 1: @@ -122351,8 +141390,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[1009].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowUdpChecksum_Choice); i { + file_otg_proto_msgTypes[1189].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowArpSenderHardwareAddr_Choice); i { case 0: return &v.state case 1: @@ -122363,8 +141402,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[1010].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowUdpChecksum_Generated); i { + file_otg_proto_msgTypes[1190].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowArpSenderProtocolAddr_Choice); i { case 0: return &v.state case 1: @@ -122375,8 +141414,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[1011].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowGreChecksumPresent_Choice); i { + file_otg_proto_msgTypes[1191].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowArpTargetHardwareAddr_Choice); i { case 0: return &v.state case 1: @@ -122387,8 +141426,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[1012].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowGreReserved0_Choice); i { + file_otg_proto_msgTypes[1192].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowArpTargetProtocolAddr_Choice); i { case 0: return &v.state case 1: @@ -122399,8 +141438,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[1013].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowGreVersion_Choice); i { + file_otg_proto_msgTypes[1193].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowIcmpEchoType_Choice); i { case 0: return &v.state case 1: @@ -122411,8 +141450,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[1014].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowGreProtocol_Choice); i { + file_otg_proto_msgTypes[1194].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowIcmpEchoCode_Choice); i { case 0: return &v.state case 1: @@ -122423,8 +141462,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[1015].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowGreChecksum_Choice); i { + file_otg_proto_msgTypes[1195].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowIcmpEchoChecksum_Choice); i { case 0: return &v.state case 1: @@ -122435,8 +141474,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[1016].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowGreChecksum_Generated); i { + file_otg_proto_msgTypes[1196].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowIcmpEchoChecksum_Generated); i { case 0: return &v.state case 1: @@ -122447,8 +141486,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[1017].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowGreReserved1_Choice); i { + file_otg_proto_msgTypes[1197].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowIcmpEchoIdentifier_Choice); i { case 0: return &v.state case 1: @@ -122459,8 +141498,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[1018].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowGtpv1Version_Choice); i { + file_otg_proto_msgTypes[1198].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowIcmpEchoSequenceNumber_Choice); i { case 0: return &v.state case 1: @@ -122471,8 +141510,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[1019].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowGtpv1ProtocolType_Choice); i { + file_otg_proto_msgTypes[1199].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowIcmpCommonChecksum_Choice); i { case 0: return &v.state case 1: @@ -122483,8 +141522,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[1020].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowGtpv1Reserved_Choice); i { + file_otg_proto_msgTypes[1200].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowIcmpCommonChecksum_Generated); i { case 0: return &v.state case 1: @@ -122495,8 +141534,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[1021].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowGtpv1EFlag_Choice); i { + file_otg_proto_msgTypes[1201].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowIcmpNextFieldsIdentifier_Choice); i { case 0: return &v.state case 1: @@ -122507,8 +141546,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[1022].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowGtpv1SFlag_Choice); i { + file_otg_proto_msgTypes[1202].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowIcmpNextFieldsSequenceNumber_Choice); i { case 0: return &v.state case 1: @@ -122519,8 +141558,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[1023].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowGtpv1PnFlag_Choice); i { + file_otg_proto_msgTypes[1203].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowIcmpv6EchoType_Choice); i { case 0: return &v.state case 1: @@ -122531,8 +141570,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[1024].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowGtpv1MessageType_Choice); i { + file_otg_proto_msgTypes[1204].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowIcmpv6EchoCode_Choice); i { case 0: return &v.state case 1: @@ -122543,8 +141582,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[1025].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowGtpv1MessageLength_Choice); i { + file_otg_proto_msgTypes[1205].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowIcmpv6EchoIdentifier_Choice); i { case 0: return &v.state case 1: @@ -122555,8 +141594,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[1026].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowGtpv1Teid_Choice); i { + file_otg_proto_msgTypes[1206].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowIcmpv6EchoSequenceNumber_Choice); i { case 0: return &v.state case 1: @@ -122567,8 +141606,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[1027].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowGtpv1SquenceNumber_Choice); i { + file_otg_proto_msgTypes[1207].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowIcmpv6EchoChecksum_Choice); i { case 0: return &v.state case 1: @@ -122579,8 +141618,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[1028].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowGtpv1NPduNumber_Choice); i { + file_otg_proto_msgTypes[1208].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowIcmpv6EchoChecksum_Generated); i { case 0: return &v.state case 1: @@ -122591,8 +141630,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[1029].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowGtpv1NextExtensionHeaderType_Choice); i { + file_otg_proto_msgTypes[1209].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowIcmpv6CommonChecksum_Choice); i { case 0: return &v.state case 1: @@ -122603,8 +141642,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[1030].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowGtpExtensionExtensionLength_Choice); i { + file_otg_proto_msgTypes[1210].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowIcmpv6CommonChecksum_Generated); i { case 0: return &v.state case 1: @@ -122615,8 +141654,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[1031].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowGtpExtensionContents_Choice); i { + file_otg_proto_msgTypes[1211].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowPppAddress_Choice); i { case 0: return &v.state case 1: @@ -122627,8 +141666,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[1032].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowGtpExtensionNextExtensionHeader_Choice); i { + file_otg_proto_msgTypes[1212].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowPppControl_Choice); i { case 0: return &v.state case 1: @@ -122639,8 +141678,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[1033].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowGtpv2Version_Choice); i { + file_otg_proto_msgTypes[1213].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowPppProtocolType_Choice); i { case 0: return &v.state case 1: @@ -122651,8 +141690,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[1034].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowGtpv2PiggybackingFlag_Choice); i { + file_otg_proto_msgTypes[1214].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowIgmpv1Version_Choice); i { case 0: return &v.state case 1: @@ -122663,8 +141702,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[1035].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowGtpv2TeidFlag_Choice); i { + file_otg_proto_msgTypes[1215].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowIgmpv1Type_Choice); i { case 0: return &v.state case 1: @@ -122675,8 +141714,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[1036].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowGtpv2Spare1_Choice); i { + file_otg_proto_msgTypes[1216].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowIgmpv1Unused_Choice); i { case 0: return &v.state case 1: @@ -122687,8 +141726,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[1037].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowGtpv2MessageType_Choice); i { + file_otg_proto_msgTypes[1217].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowIgmpv1Checksum_Choice); i { case 0: return &v.state case 1: @@ -122699,8 +141738,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[1038].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowGtpv2MessageLength_Choice); i { + file_otg_proto_msgTypes[1218].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowIgmpv1Checksum_Generated); i { case 0: return &v.state case 1: @@ -122711,8 +141750,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[1039].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowGtpv2Teid_Choice); i { + file_otg_proto_msgTypes[1219].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowIgmpv1GroupAddress_Choice); i { case 0: return &v.state case 1: @@ -122723,8 +141762,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[1040].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowGtpv2SequenceNumber_Choice); i { + file_otg_proto_msgTypes[1220].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowMplsLabel_Choice); i { case 0: return &v.state case 1: @@ -122735,8 +141774,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[1041].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowGtpv2Spare2_Choice); i { + file_otg_proto_msgTypes[1221].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowMplsTrafficClass_Choice); i { case 0: return &v.state case 1: @@ -122747,8 +141786,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[1042].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowArpHardwareType_Choice); i { + file_otg_proto_msgTypes[1222].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowMplsBottomOfStack_Choice); i { case 0: return &v.state case 1: @@ -122759,8 +141798,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[1043].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowArpProtocolType_Choice); i { + file_otg_proto_msgTypes[1223].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowMplsTimeToLive_Choice); i { case 0: return &v.state case 1: @@ -122771,8 +141810,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[1044].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowArpHardwareLength_Choice); i { + file_otg_proto_msgTypes[1224].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowRsvpVersion_Choice); i { case 0: return &v.state case 1: @@ -122783,8 +141822,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[1045].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowArpProtocolLength_Choice); i { + file_otg_proto_msgTypes[1225].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowRsvpRsvpChecksum_Choice); i { case 0: return &v.state case 1: @@ -122795,8 +141834,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[1046].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowArpOperation_Choice); i { + file_otg_proto_msgTypes[1226].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowRsvpRsvpChecksum_Generated); i { case 0: return &v.state case 1: @@ -122807,8 +141846,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[1047].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowArpSenderHardwareAddr_Choice); i { + file_otg_proto_msgTypes[1227].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowRsvpTimeToLive_Choice); i { case 0: return &v.state case 1: @@ -122819,8 +141858,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[1048].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowArpSenderProtocolAddr_Choice); i { + file_otg_proto_msgTypes[1228].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowRsvpReserved_Choice); i { case 0: return &v.state case 1: @@ -122831,8 +141870,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[1049].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowArpTargetHardwareAddr_Choice); i { + file_otg_proto_msgTypes[1229].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowRSVPPathSessionLspTunnelIpv4Ipv4TunnelEndPointAddress_Choice); i { case 0: return &v.state case 1: @@ -122843,8 +141882,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[1050].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowArpTargetProtocolAddr_Choice); i { + file_otg_proto_msgTypes[1230].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowRSVPPathSessionLspTunnelIpv4Reserved_Choice); i { case 0: return &v.state case 1: @@ -122855,8 +141894,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[1051].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowIcmpEchoType_Choice); i { + file_otg_proto_msgTypes[1231].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowRSVPPathSessionLspTunnelIpv4TunnelId_Choice); i { case 0: return &v.state case 1: @@ -122867,8 +141906,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[1052].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowIcmpEchoCode_Choice); i { + file_otg_proto_msgTypes[1232].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowRSVPPathSessionLspTunnelIpv4ExtendedTunnelId_Choice); i { case 0: return &v.state case 1: @@ -122879,8 +141918,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[1053].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowIcmpEchoChecksum_Choice); i { + file_otg_proto_msgTypes[1233].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowRSVPPathRsvpHopIpv4Ipv4NextPreviousHopAddress_Choice); i { case 0: return &v.state case 1: @@ -122891,8 +141930,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[1054].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowIcmpEchoChecksum_Generated); i { + file_otg_proto_msgTypes[1234].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowRSVPPathRsvpHopIpv4LogicalInterfaceHandle_Choice); i { case 0: return &v.state case 1: @@ -122903,8 +141942,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[1055].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowIcmpEchoIdentifier_Choice); i { + file_otg_proto_msgTypes[1235].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowRSVPPathTimeValuesType1RefreshPeriodR_Choice); i { case 0: return &v.state case 1: @@ -122915,8 +141954,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[1056].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowIcmpEchoSequenceNumber_Choice); i { + file_otg_proto_msgTypes[1236].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixLBit_Choice); i { case 0: return &v.state case 1: @@ -122927,8 +141966,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[1057].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowIcmpCommonChecksum_Choice); i { + file_otg_proto_msgTypes[1237].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixIpv4Address_Choice); i { case 0: return &v.state case 1: @@ -122939,8 +141978,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[1058].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowIcmpCommonChecksum_Generated); i { + file_otg_proto_msgTypes[1238].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowRSVPPathExplicitRouteType1FourByteASNumberLBit_Choice); i { case 0: return &v.state case 1: @@ -122951,8 +141990,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[1059].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowIcmpNextFieldsIdentifier_Choice); i { + file_otg_proto_msgTypes[1239].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowRSVPPathExplicitRouteType1FourByteASNumberReserved_Choice); i { case 0: return &v.state case 1: @@ -122963,8 +142002,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[1060].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowIcmpNextFieldsSequenceNumber_Choice); i { + file_otg_proto_msgTypes[1240].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowRSVPPathLabelRequestWithoutLabelRangeReserved_Choice); i { case 0: return &v.state case 1: @@ -122975,8 +142014,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[1061].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowIcmpv6EchoType_Choice); i { + file_otg_proto_msgTypes[1241].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowRSVPPathLabelRequestWithoutLabelRangeL3Pid_Choice); i { case 0: return &v.state case 1: @@ -122987,8 +142026,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[1062].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowIcmpv6EchoCode_Choice); i { + file_otg_proto_msgTypes[1242].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Ipv4TunnelSenderAddress_Choice); i { case 0: return &v.state case 1: @@ -122999,8 +142038,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[1063].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowIcmpv6EchoIdentifier_Choice); i { + file_otg_proto_msgTypes[1243].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Reserved_Choice); i { case 0: return &v.state case 1: @@ -123011,8 +142050,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[1064].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowIcmpv6EchoSequenceNumber_Choice); i { + file_otg_proto_msgTypes[1244].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowRSVPPathSenderTemplateLspTunnelIpv4LspId_Choice); i { case 0: return &v.state case 1: @@ -123023,8 +142062,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[1065].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowIcmpv6EchoChecksum_Choice); i { + file_otg_proto_msgTypes[1245].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowRSVPPathSenderTspecIntServVersion_Choice); i { case 0: return &v.state case 1: @@ -123035,8 +142074,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[1066].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowIcmpv6EchoChecksum_Generated); i { + file_otg_proto_msgTypes[1246].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowRSVPPathSenderTspecIntServReserved1_Choice); i { case 0: return &v.state case 1: @@ -123047,8 +142086,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[1067].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowIcmpv6CommonChecksum_Choice); i { + file_otg_proto_msgTypes[1247].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowRSVPPathSenderTspecIntServOverallLength_Choice); i { case 0: return &v.state case 1: @@ -123059,8 +142098,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[1068].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowIcmpv6CommonChecksum_Generated); i { + file_otg_proto_msgTypes[1248].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowRSVPPathSenderTspecIntServServiceHeader_Choice); i { case 0: return &v.state case 1: @@ -123071,8 +142110,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[1069].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowPppAddress_Choice); i { + file_otg_proto_msgTypes[1249].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowRSVPPathSenderTspecIntServZeroBit_Choice); i { case 0: return &v.state case 1: @@ -123083,8 +142122,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[1070].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowPppControl_Choice); i { + file_otg_proto_msgTypes[1250].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowRSVPPathSenderTspecIntServReserved2_Choice); i { case 0: return &v.state case 1: @@ -123095,8 +142134,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[1071].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowPppProtocolType_Choice); i { + file_otg_proto_msgTypes[1251].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowRSVPPathSenderTspecIntServLengthOfServiceData_Choice); i { case 0: return &v.state case 1: @@ -123107,8 +142146,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[1072].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowIgmpv1Version_Choice); i { + file_otg_proto_msgTypes[1252].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowRSVPPathSenderTspecIntServParameterIdTokenBucketTspec_Choice); i { case 0: return &v.state case 1: @@ -123119,8 +142158,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[1073].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowIgmpv1Type_Choice); i { + file_otg_proto_msgTypes[1253].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowRSVPPathSenderTspecIntServParameter127Flag_Choice); i { case 0: return &v.state case 1: @@ -123131,8 +142170,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[1074].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowIgmpv1Unused_Choice); i { + file_otg_proto_msgTypes[1254].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowRSVPPathSenderTspecIntServParameter127Length_Choice); i { case 0: return &v.state case 1: @@ -123143,8 +142182,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[1075].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowIgmpv1Checksum_Choice); i { + file_otg_proto_msgTypes[1255].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowRSVPPathSenderTspecIntServMinimumPolicedUnit_Choice); i { case 0: return &v.state case 1: @@ -123155,8 +142194,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[1076].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowIgmpv1Checksum_Generated); i { + file_otg_proto_msgTypes[1256].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowRSVPPathSenderTspecIntServMaximumPacketSize_Choice); i { case 0: return &v.state case 1: @@ -123167,8 +142206,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[1077].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowIgmpv1GroupAddress_Choice); i { + file_otg_proto_msgTypes[1257].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowRSVPPathRecordRouteType1Ipv4AddressIpv4Address_Choice); i { case 0: return &v.state case 1: @@ -123179,8 +142218,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[1078].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowMplsLabel_Choice); i { + file_otg_proto_msgTypes[1258].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowRSVPPathRecordRouteType1Ipv4AddressPrefixLength_Choice); i { case 0: return &v.state case 1: @@ -123191,8 +142230,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[1079].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowMplsTrafficClass_Choice); i { + file_otg_proto_msgTypes[1259].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowRSVPPathRecordRouteType1LabelFlags_Choice); i { case 0: return &v.state case 1: @@ -123203,8 +142242,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[1080].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowMplsBottomOfStack_Choice); i { + file_otg_proto_msgTypes[1260].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowRSVPPathRecordRouteType1LabelCType_Choice); i { case 0: return &v.state case 1: @@ -123215,8 +142254,8 @@ func file_otg_proto_init() { return nil } } - file_otg_proto_msgTypes[1081].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PatternFlowMplsTimeToLive_Choice); i { + file_otg_proto_msgTypes[1261].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PatternFlowRSVPPathObjectsCustomType_Choice); i { case 0: return &v.state case 1: @@ -123384,47 +142423,29 @@ func file_otg_proto_init() { file_otg_proto_msgTypes[169].OneofWrappers = []interface{}{} file_otg_proto_msgTypes[182].OneofWrappers = []interface{}{} file_otg_proto_msgTypes[184].OneofWrappers = []interface{}{} - file_otg_proto_msgTypes[189].OneofWrappers = []interface{}{} file_otg_proto_msgTypes[190].OneofWrappers = []interface{}{} file_otg_proto_msgTypes[191].OneofWrappers = []interface{}{} file_otg_proto_msgTypes[192].OneofWrappers = []interface{}{} - file_otg_proto_msgTypes[193].OneofWrappers = []interface{}{} - file_otg_proto_msgTypes[194].OneofWrappers = []interface{}{} file_otg_proto_msgTypes[195].OneofWrappers = []interface{}{} file_otg_proto_msgTypes[196].OneofWrappers = []interface{}{} - file_otg_proto_msgTypes[197].OneofWrappers = []interface{}{} file_otg_proto_msgTypes[198].OneofWrappers = []interface{}{} - file_otg_proto_msgTypes[199].OneofWrappers = []interface{}{} - file_otg_proto_msgTypes[200].OneofWrappers = []interface{}{} file_otg_proto_msgTypes[201].OneofWrappers = []interface{}{} - file_otg_proto_msgTypes[202].OneofWrappers = []interface{}{} - file_otg_proto_msgTypes[203].OneofWrappers = []interface{}{} file_otg_proto_msgTypes[204].OneofWrappers = []interface{}{} - file_otg_proto_msgTypes[205].OneofWrappers = []interface{}{} file_otg_proto_msgTypes[207].OneofWrappers = []interface{}{} - file_otg_proto_msgTypes[208].OneofWrappers = []interface{}{} - file_otg_proto_msgTypes[209].OneofWrappers = []interface{}{} file_otg_proto_msgTypes[210].OneofWrappers = []interface{}{} + file_otg_proto_msgTypes[211].OneofWrappers = []interface{}{} file_otg_proto_msgTypes[212].OneofWrappers = []interface{}{} file_otg_proto_msgTypes[213].OneofWrappers = []interface{}{} - file_otg_proto_msgTypes[214].OneofWrappers = []interface{}{} file_otg_proto_msgTypes[215].OneofWrappers = []interface{}{} - file_otg_proto_msgTypes[216].OneofWrappers = []interface{}{} - file_otg_proto_msgTypes[217].OneofWrappers = []interface{}{} file_otg_proto_msgTypes[218].OneofWrappers = []interface{}{} file_otg_proto_msgTypes[219].OneofWrappers = []interface{}{} file_otg_proto_msgTypes[220].OneofWrappers = []interface{}{} - file_otg_proto_msgTypes[222].OneofWrappers = []interface{}{} - file_otg_proto_msgTypes[224].OneofWrappers = []interface{}{} - file_otg_proto_msgTypes[225].OneofWrappers = []interface{}{} + file_otg_proto_msgTypes[221].OneofWrappers = []interface{}{} + file_otg_proto_msgTypes[223].OneofWrappers = []interface{}{} file_otg_proto_msgTypes[226].OneofWrappers = []interface{}{} file_otg_proto_msgTypes[227].OneofWrappers = []interface{}{} - file_otg_proto_msgTypes[228].OneofWrappers = []interface{}{} file_otg_proto_msgTypes[229].OneofWrappers = []interface{}{} - file_otg_proto_msgTypes[230].OneofWrappers = []interface{}{} - file_otg_proto_msgTypes[231].OneofWrappers = []interface{}{} file_otg_proto_msgTypes[232].OneofWrappers = []interface{}{} - file_otg_proto_msgTypes[233].OneofWrappers = []interface{}{} file_otg_proto_msgTypes[234].OneofWrappers = []interface{}{} file_otg_proto_msgTypes[235].OneofWrappers = []interface{}{} file_otg_proto_msgTypes[236].OneofWrappers = []interface{}{} @@ -123432,111 +142453,107 @@ func file_otg_proto_init() { file_otg_proto_msgTypes[238].OneofWrappers = []interface{}{} file_otg_proto_msgTypes[239].OneofWrappers = []interface{}{} file_otg_proto_msgTypes[240].OneofWrappers = []interface{}{} + file_otg_proto_msgTypes[241].OneofWrappers = []interface{}{} file_otg_proto_msgTypes[242].OneofWrappers = []interface{}{} file_otg_proto_msgTypes[243].OneofWrappers = []interface{}{} file_otg_proto_msgTypes[244].OneofWrappers = []interface{}{} file_otg_proto_msgTypes[245].OneofWrappers = []interface{}{} file_otg_proto_msgTypes[246].OneofWrappers = []interface{}{} + file_otg_proto_msgTypes[247].OneofWrappers = []interface{}{} file_otg_proto_msgTypes[248].OneofWrappers = []interface{}{} + file_otg_proto_msgTypes[249].OneofWrappers = []interface{}{} file_otg_proto_msgTypes[250].OneofWrappers = []interface{}{} file_otg_proto_msgTypes[251].OneofWrappers = []interface{}{} file_otg_proto_msgTypes[252].OneofWrappers = []interface{}{} + file_otg_proto_msgTypes[253].OneofWrappers = []interface{}{} file_otg_proto_msgTypes[254].OneofWrappers = []interface{}{} - file_otg_proto_msgTypes[256].OneofWrappers = []interface{}{} + file_otg_proto_msgTypes[255].OneofWrappers = []interface{}{} file_otg_proto_msgTypes[257].OneofWrappers = []interface{}{} file_otg_proto_msgTypes[258].OneofWrappers = []interface{}{} file_otg_proto_msgTypes[259].OneofWrappers = []interface{}{} file_otg_proto_msgTypes[260].OneofWrappers = []interface{}{} - file_otg_proto_msgTypes[261].OneofWrappers = []interface{}{} + file_otg_proto_msgTypes[262].OneofWrappers = []interface{}{} file_otg_proto_msgTypes[263].OneofWrappers = []interface{}{} + file_otg_proto_msgTypes[264].OneofWrappers = []interface{}{} file_otg_proto_msgTypes[265].OneofWrappers = []interface{}{} file_otg_proto_msgTypes[266].OneofWrappers = []interface{}{} file_otg_proto_msgTypes[267].OneofWrappers = []interface{}{} file_otg_proto_msgTypes[268].OneofWrappers = []interface{}{} file_otg_proto_msgTypes[269].OneofWrappers = []interface{}{} file_otg_proto_msgTypes[270].OneofWrappers = []interface{}{} - file_otg_proto_msgTypes[271].OneofWrappers = []interface{}{} file_otg_proto_msgTypes[272].OneofWrappers = []interface{}{} file_otg_proto_msgTypes[274].OneofWrappers = []interface{}{} + file_otg_proto_msgTypes[275].OneofWrappers = []interface{}{} file_otg_proto_msgTypes[276].OneofWrappers = []interface{}{} + file_otg_proto_msgTypes[277].OneofWrappers = []interface{}{} file_otg_proto_msgTypes[278].OneofWrappers = []interface{}{} + file_otg_proto_msgTypes[279].OneofWrappers = []interface{}{} file_otg_proto_msgTypes[280].OneofWrappers = []interface{}{} + file_otg_proto_msgTypes[281].OneofWrappers = []interface{}{} file_otg_proto_msgTypes[282].OneofWrappers = []interface{}{} + file_otg_proto_msgTypes[283].OneofWrappers = []interface{}{} file_otg_proto_msgTypes[284].OneofWrappers = []interface{}{} + file_otg_proto_msgTypes[285].OneofWrappers = []interface{}{} file_otg_proto_msgTypes[286].OneofWrappers = []interface{}{} file_otg_proto_msgTypes[287].OneofWrappers = []interface{}{} file_otg_proto_msgTypes[288].OneofWrappers = []interface{}{} + file_otg_proto_msgTypes[289].OneofWrappers = []interface{}{} file_otg_proto_msgTypes[290].OneofWrappers = []interface{}{} file_otg_proto_msgTypes[292].OneofWrappers = []interface{}{} + file_otg_proto_msgTypes[293].OneofWrappers = []interface{}{} file_otg_proto_msgTypes[294].OneofWrappers = []interface{}{} file_otg_proto_msgTypes[295].OneofWrappers = []interface{}{} file_otg_proto_msgTypes[296].OneofWrappers = []interface{}{} - file_otg_proto_msgTypes[297].OneofWrappers = []interface{}{} file_otg_proto_msgTypes[298].OneofWrappers = []interface{}{} - file_otg_proto_msgTypes[299].OneofWrappers = []interface{}{} + file_otg_proto_msgTypes[300].OneofWrappers = []interface{}{} file_otg_proto_msgTypes[301].OneofWrappers = []interface{}{} - file_otg_proto_msgTypes[303].OneofWrappers = []interface{}{} + file_otg_proto_msgTypes[302].OneofWrappers = []interface{}{} file_otg_proto_msgTypes[304].OneofWrappers = []interface{}{} file_otg_proto_msgTypes[306].OneofWrappers = []interface{}{} file_otg_proto_msgTypes[307].OneofWrappers = []interface{}{} + file_otg_proto_msgTypes[308].OneofWrappers = []interface{}{} + file_otg_proto_msgTypes[309].OneofWrappers = []interface{}{} file_otg_proto_msgTypes[310].OneofWrappers = []interface{}{} + file_otg_proto_msgTypes[311].OneofWrappers = []interface{}{} file_otg_proto_msgTypes[313].OneofWrappers = []interface{}{} file_otg_proto_msgTypes[315].OneofWrappers = []interface{}{} + file_otg_proto_msgTypes[316].OneofWrappers = []interface{}{} file_otg_proto_msgTypes[317].OneofWrappers = []interface{}{} file_otg_proto_msgTypes[318].OneofWrappers = []interface{}{} + file_otg_proto_msgTypes[319].OneofWrappers = []interface{}{} file_otg_proto_msgTypes[320].OneofWrappers = []interface{}{} file_otg_proto_msgTypes[321].OneofWrappers = []interface{}{} file_otg_proto_msgTypes[322].OneofWrappers = []interface{}{} file_otg_proto_msgTypes[324].OneofWrappers = []interface{}{} - file_otg_proto_msgTypes[325].OneofWrappers = []interface{}{} file_otg_proto_msgTypes[326].OneofWrappers = []interface{}{} - file_otg_proto_msgTypes[327].OneofWrappers = []interface{}{} file_otg_proto_msgTypes[328].OneofWrappers = []interface{}{} - file_otg_proto_msgTypes[329].OneofWrappers = []interface{}{} file_otg_proto_msgTypes[330].OneofWrappers = []interface{}{} - file_otg_proto_msgTypes[331].OneofWrappers = []interface{}{} file_otg_proto_msgTypes[332].OneofWrappers = []interface{}{} - file_otg_proto_msgTypes[333].OneofWrappers = []interface{}{} file_otg_proto_msgTypes[334].OneofWrappers = []interface{}{} - file_otg_proto_msgTypes[335].OneofWrappers = []interface{}{} file_otg_proto_msgTypes[336].OneofWrappers = []interface{}{} file_otg_proto_msgTypes[337].OneofWrappers = []interface{}{} file_otg_proto_msgTypes[338].OneofWrappers = []interface{}{} - file_otg_proto_msgTypes[339].OneofWrappers = []interface{}{} file_otg_proto_msgTypes[340].OneofWrappers = []interface{}{} - file_otg_proto_msgTypes[341].OneofWrappers = []interface{}{} file_otg_proto_msgTypes[342].OneofWrappers = []interface{}{} - file_otg_proto_msgTypes[343].OneofWrappers = []interface{}{} file_otg_proto_msgTypes[344].OneofWrappers = []interface{}{} file_otg_proto_msgTypes[345].OneofWrappers = []interface{}{} file_otg_proto_msgTypes[346].OneofWrappers = []interface{}{} file_otg_proto_msgTypes[347].OneofWrappers = []interface{}{} file_otg_proto_msgTypes[348].OneofWrappers = []interface{}{} file_otg_proto_msgTypes[349].OneofWrappers = []interface{}{} - file_otg_proto_msgTypes[350].OneofWrappers = []interface{}{} file_otg_proto_msgTypes[351].OneofWrappers = []interface{}{} - file_otg_proto_msgTypes[352].OneofWrappers = []interface{}{} file_otg_proto_msgTypes[353].OneofWrappers = []interface{}{} file_otg_proto_msgTypes[354].OneofWrappers = []interface{}{} - file_otg_proto_msgTypes[355].OneofWrappers = []interface{}{} file_otg_proto_msgTypes[356].OneofWrappers = []interface{}{} file_otg_proto_msgTypes[357].OneofWrappers = []interface{}{} - file_otg_proto_msgTypes[358].OneofWrappers = []interface{}{} - file_otg_proto_msgTypes[359].OneofWrappers = []interface{}{} file_otg_proto_msgTypes[360].OneofWrappers = []interface{}{} - file_otg_proto_msgTypes[361].OneofWrappers = []interface{}{} - file_otg_proto_msgTypes[362].OneofWrappers = []interface{}{} file_otg_proto_msgTypes[363].OneofWrappers = []interface{}{} - file_otg_proto_msgTypes[364].OneofWrappers = []interface{}{} file_otg_proto_msgTypes[365].OneofWrappers = []interface{}{} - file_otg_proto_msgTypes[366].OneofWrappers = []interface{}{} file_otg_proto_msgTypes[367].OneofWrappers = []interface{}{} file_otg_proto_msgTypes[368].OneofWrappers = []interface{}{} - file_otg_proto_msgTypes[369].OneofWrappers = []interface{}{} file_otg_proto_msgTypes[370].OneofWrappers = []interface{}{} file_otg_proto_msgTypes[371].OneofWrappers = []interface{}{} file_otg_proto_msgTypes[372].OneofWrappers = []interface{}{} - file_otg_proto_msgTypes[373].OneofWrappers = []interface{}{} file_otg_proto_msgTypes[374].OneofWrappers = []interface{}{} file_otg_proto_msgTypes[375].OneofWrappers = []interface{}{} file_otg_proto_msgTypes[376].OneofWrappers = []interface{}{} @@ -123910,13 +142927,134 @@ func file_otg_proto_init() { file_otg_proto_msgTypes[744].OneofWrappers = []interface{}{} file_otg_proto_msgTypes[745].OneofWrappers = []interface{}{} file_otg_proto_msgTypes[746].OneofWrappers = []interface{}{} + file_otg_proto_msgTypes[747].OneofWrappers = []interface{}{} + file_otg_proto_msgTypes[748].OneofWrappers = []interface{}{} + file_otg_proto_msgTypes[749].OneofWrappers = []interface{}{} + file_otg_proto_msgTypes[750].OneofWrappers = []interface{}{} + file_otg_proto_msgTypes[751].OneofWrappers = []interface{}{} + file_otg_proto_msgTypes[752].OneofWrappers = []interface{}{} + file_otg_proto_msgTypes[753].OneofWrappers = []interface{}{} + file_otg_proto_msgTypes[754].OneofWrappers = []interface{}{} + file_otg_proto_msgTypes[755].OneofWrappers = []interface{}{} + file_otg_proto_msgTypes[756].OneofWrappers = []interface{}{} + file_otg_proto_msgTypes[757].OneofWrappers = []interface{}{} + file_otg_proto_msgTypes[758].OneofWrappers = []interface{}{} + file_otg_proto_msgTypes[759].OneofWrappers = []interface{}{} + file_otg_proto_msgTypes[760].OneofWrappers = []interface{}{} + file_otg_proto_msgTypes[761].OneofWrappers = []interface{}{} + file_otg_proto_msgTypes[762].OneofWrappers = []interface{}{} + file_otg_proto_msgTypes[763].OneofWrappers = []interface{}{} + file_otg_proto_msgTypes[764].OneofWrappers = []interface{}{} + file_otg_proto_msgTypes[765].OneofWrappers = []interface{}{} + file_otg_proto_msgTypes[766].OneofWrappers = []interface{}{} + file_otg_proto_msgTypes[767].OneofWrappers = []interface{}{} + file_otg_proto_msgTypes[768].OneofWrappers = []interface{}{} + file_otg_proto_msgTypes[769].OneofWrappers = []interface{}{} + file_otg_proto_msgTypes[770].OneofWrappers = []interface{}{} + file_otg_proto_msgTypes[771].OneofWrappers = []interface{}{} + file_otg_proto_msgTypes[772].OneofWrappers = []interface{}{} + file_otg_proto_msgTypes[773].OneofWrappers = []interface{}{} + file_otg_proto_msgTypes[774].OneofWrappers = []interface{}{} + file_otg_proto_msgTypes[775].OneofWrappers = []interface{}{} + file_otg_proto_msgTypes[776].OneofWrappers = []interface{}{} + file_otg_proto_msgTypes[777].OneofWrappers = []interface{}{} + file_otg_proto_msgTypes[778].OneofWrappers = []interface{}{} + file_otg_proto_msgTypes[779].OneofWrappers = []interface{}{} + file_otg_proto_msgTypes[780].OneofWrappers = []interface{}{} + file_otg_proto_msgTypes[781].OneofWrappers = []interface{}{} + file_otg_proto_msgTypes[782].OneofWrappers = []interface{}{} + file_otg_proto_msgTypes[783].OneofWrappers = []interface{}{} + file_otg_proto_msgTypes[784].OneofWrappers = []interface{}{} + file_otg_proto_msgTypes[785].OneofWrappers = []interface{}{} + file_otg_proto_msgTypes[786].OneofWrappers = []interface{}{} + file_otg_proto_msgTypes[787].OneofWrappers = []interface{}{} + file_otg_proto_msgTypes[788].OneofWrappers = []interface{}{} + file_otg_proto_msgTypes[789].OneofWrappers = []interface{}{} + file_otg_proto_msgTypes[790].OneofWrappers = []interface{}{} + file_otg_proto_msgTypes[791].OneofWrappers = []interface{}{} + file_otg_proto_msgTypes[792].OneofWrappers = []interface{}{} + file_otg_proto_msgTypes[793].OneofWrappers = []interface{}{} + file_otg_proto_msgTypes[794].OneofWrappers = []interface{}{} + file_otg_proto_msgTypes[795].OneofWrappers = []interface{}{} + file_otg_proto_msgTypes[796].OneofWrappers = []interface{}{} + file_otg_proto_msgTypes[797].OneofWrappers = []interface{}{} + file_otg_proto_msgTypes[798].OneofWrappers = []interface{}{} + file_otg_proto_msgTypes[799].OneofWrappers = []interface{}{} + file_otg_proto_msgTypes[800].OneofWrappers = []interface{}{} + file_otg_proto_msgTypes[801].OneofWrappers = []interface{}{} + file_otg_proto_msgTypes[802].OneofWrappers = []interface{}{} + file_otg_proto_msgTypes[803].OneofWrappers = []interface{}{} + file_otg_proto_msgTypes[804].OneofWrappers = []interface{}{} + file_otg_proto_msgTypes[805].OneofWrappers = []interface{}{} + file_otg_proto_msgTypes[806].OneofWrappers = []interface{}{} + file_otg_proto_msgTypes[807].OneofWrappers = []interface{}{} + file_otg_proto_msgTypes[808].OneofWrappers = []interface{}{} + file_otg_proto_msgTypes[809].OneofWrappers = []interface{}{} + file_otg_proto_msgTypes[810].OneofWrappers = []interface{}{} + file_otg_proto_msgTypes[811].OneofWrappers = []interface{}{} + file_otg_proto_msgTypes[812].OneofWrappers = []interface{}{} + file_otg_proto_msgTypes[813].OneofWrappers = []interface{}{} + file_otg_proto_msgTypes[814].OneofWrappers = []interface{}{} + file_otg_proto_msgTypes[815].OneofWrappers = []interface{}{} + file_otg_proto_msgTypes[816].OneofWrappers = []interface{}{} + file_otg_proto_msgTypes[817].OneofWrappers = []interface{}{} + file_otg_proto_msgTypes[818].OneofWrappers = []interface{}{} + file_otg_proto_msgTypes[819].OneofWrappers = []interface{}{} + file_otg_proto_msgTypes[820].OneofWrappers = []interface{}{} + file_otg_proto_msgTypes[821].OneofWrappers = []interface{}{} + file_otg_proto_msgTypes[822].OneofWrappers = []interface{}{} + file_otg_proto_msgTypes[823].OneofWrappers = []interface{}{} + file_otg_proto_msgTypes[824].OneofWrappers = []interface{}{} + file_otg_proto_msgTypes[825].OneofWrappers = []interface{}{} + file_otg_proto_msgTypes[826].OneofWrappers = []interface{}{} + file_otg_proto_msgTypes[827].OneofWrappers = []interface{}{} + file_otg_proto_msgTypes[828].OneofWrappers = []interface{}{} + file_otg_proto_msgTypes[829].OneofWrappers = []interface{}{} + file_otg_proto_msgTypes[830].OneofWrappers = []interface{}{} + file_otg_proto_msgTypes[831].OneofWrappers = []interface{}{} + file_otg_proto_msgTypes[832].OneofWrappers = []interface{}{} + file_otg_proto_msgTypes[833].OneofWrappers = []interface{}{} + file_otg_proto_msgTypes[834].OneofWrappers = []interface{}{} + file_otg_proto_msgTypes[835].OneofWrappers = []interface{}{} + file_otg_proto_msgTypes[836].OneofWrappers = []interface{}{} + file_otg_proto_msgTypes[837].OneofWrappers = []interface{}{} + file_otg_proto_msgTypes[838].OneofWrappers = []interface{}{} + file_otg_proto_msgTypes[839].OneofWrappers = []interface{}{} + file_otg_proto_msgTypes[840].OneofWrappers = []interface{}{} + file_otg_proto_msgTypes[841].OneofWrappers = []interface{}{} + file_otg_proto_msgTypes[842].OneofWrappers = []interface{}{} + file_otg_proto_msgTypes[843].OneofWrappers = []interface{}{} + file_otg_proto_msgTypes[844].OneofWrappers = []interface{}{} + file_otg_proto_msgTypes[845].OneofWrappers = []interface{}{} + file_otg_proto_msgTypes[846].OneofWrappers = []interface{}{} + file_otg_proto_msgTypes[847].OneofWrappers = []interface{}{} + file_otg_proto_msgTypes[848].OneofWrappers = []interface{}{} + file_otg_proto_msgTypes[849].OneofWrappers = []interface{}{} + file_otg_proto_msgTypes[850].OneofWrappers = []interface{}{} + file_otg_proto_msgTypes[851].OneofWrappers = []interface{}{} + file_otg_proto_msgTypes[852].OneofWrappers = []interface{}{} + file_otg_proto_msgTypes[853].OneofWrappers = []interface{}{} + file_otg_proto_msgTypes[854].OneofWrappers = []interface{}{} + file_otg_proto_msgTypes[855].OneofWrappers = []interface{}{} + file_otg_proto_msgTypes[856].OneofWrappers = []interface{}{} + file_otg_proto_msgTypes[857].OneofWrappers = []interface{}{} + file_otg_proto_msgTypes[858].OneofWrappers = []interface{}{} + file_otg_proto_msgTypes[859].OneofWrappers = []interface{}{} + file_otg_proto_msgTypes[860].OneofWrappers = []interface{}{} + file_otg_proto_msgTypes[861].OneofWrappers = []interface{}{} + file_otg_proto_msgTypes[862].OneofWrappers = []interface{}{} + file_otg_proto_msgTypes[863].OneofWrappers = []interface{}{} + file_otg_proto_msgTypes[864].OneofWrappers = []interface{}{} + file_otg_proto_msgTypes[865].OneofWrappers = []interface{}{} + file_otg_proto_msgTypes[866].OneofWrappers = []interface{}{} + file_otg_proto_msgTypes[867].OneofWrappers = []interface{}{} type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_otg_proto_rawDesc, - NumEnums: 317, - NumMessages: 1082, + NumEnums: 376, + NumMessages: 1262, NumExtensions: 0, NumServices: 1, }, diff --git a/gosnappi/otg/otg.proto b/gosnappi/otg/otg.proto index 57897ac5..43be0e99 100644 --- a/gosnappi/otg/otg.proto +++ b/gosnappi/otg/otg.proto @@ -125,10 +125,6 @@ message LagPort { // x-constraint: // - /components/schemas/Port/properties/name // - // - // x-constraint: - // - /components/schemas/Port/properties/name - // // required = true optional string port_name = 1; @@ -289,10 +285,6 @@ message EthernetConnection { // x-constraint: // - /components/schemas/Port/properties/name // - // - // x-constraint: - // - /components/schemas/Port/properties/name - // optional string port_name = 2; // Name of the LAG that the Ethernet interface is configured on. @@ -300,10 +292,6 @@ message EthernetConnection { // x-constraint: // - /components/schemas/Lag/properties/name // - // - // x-constraint: - // - /components/schemas/Lag/properties/name - // optional string lag_name = 3; // Name of the VXLAN instance (or VXLAN tunnel) that this Ethernet interface is connected @@ -313,11 +301,6 @@ message EthernetConnection { // - #/components/schemas/Vxlan.V4Tunnel/properties/name // - #/components/schemas/Vxlan.V6Tunnel/properties/name // - // - // x-constraint: - // - #/components/schemas/Vxlan.V4Tunnel/properties/name - // - #/components/schemas/Vxlan.V6Tunnel/properties/name - // optional string vxlan_name = 4; } @@ -385,10 +368,6 @@ message DeviceIpv4Loopback { // x-constraint: // - /components/schemas/Device.Ethernet/properties/name // - // - // x-constraint: - // - /components/schemas/Device.Ethernet/properties/name - // // required = true optional string eth_name = 1; @@ -463,10 +442,6 @@ message DeviceIpv6Loopback { // x-constraint: // - /components/schemas/Device.Ethernet/properties/name // - // - // x-constraint: - // - /components/schemas/Device.Ethernet/properties/name - // // required = true optional string eth_name = 1; @@ -517,10 +492,6 @@ message Layer1 { // x-constraint: // - /components/schemas/Port/properties/name // - // - // x-constraint: - // - /components/schemas/Port/properties/name - // repeated string port_names = 1; message Speed { @@ -568,9 +539,6 @@ message Layer1 { // default = 1500 optional uint32 mtu = 5; - // Under Review: This field is currently under review for pending exploration on use - // cases - // // Under Review: This field is currently under review for pending exploration on use // cases // @@ -578,9 +546,6 @@ message Layer1 { // and rs_fec settings for gigabit ethernet interfaces. optional bool ieee_media_defaults = 6; - // Under Review: This field is currently under review for pending exploration on use - // cases, given that a separate configuration called `AutoNegotiation` already exists. - // // Under Review: This field is currently under review for pending exploration on use // cases, given that a separate configuration called `AutoNegotiation` already exists. // @@ -719,8 +684,6 @@ message Layer1Ieee8021qbb { optional uint32 pfc_class_7 = 9; } -// Under Review: There may be changes in filter configuration -// // Under Review: There may be changes in filter configuration // // Configuration for capture settings. @@ -732,10 +695,6 @@ message Capture { // x-constraint: // - /components/schemas/Port/properties/name // - // - // x-constraint: - // - /components/schemas/Port/properties/name - // repeated string port_names = 1; // A list of filters to apply to the capturing ports. If no filters are specified then @@ -1053,10 +1012,6 @@ message IsisInterface { // x-constraint: // - /components/schemas/Device.Ethernet/properties/name // - // - // x-constraint: - // - /components/schemas/Device.Ethernet/properties/name - // // required = true optional string eth_name = 1; @@ -1868,11 +1823,6 @@ message BgpV4Interface { // - /components/schemas/Device.Ipv4/properties/name // - /components/schemas/Device.Ipv4Loopback/properties/name // - // - // x-constraint: - // - /components/schemas/Device.Ipv4/properties/name - // - /components/schemas/Device.Ipv4Loopback/properties/name - // // required = true optional string ipv4_name = 1; @@ -2630,8 +2580,6 @@ message BgpV4RouteRange { // required = true optional string name = 10; - // Deprecated: This property is deprecated in favor of property extended_communities - // // Deprecated: This property is deprecated in favor of property extended_communities // // Optional Extended Community settings. The Extended Communities Attribute is a transitive @@ -3093,8 +3041,6 @@ message BgpV6RouteRange { // required = true optional string name = 10; - // Deprecated: This property is deprecated in favor of property extended_communities - // // Deprecated: This property is deprecated in favor of property extended_communities // // Optional Extended Community settings. The Extended Communities Attribute is a transitive @@ -4081,11 +4027,6 @@ message BgpV6Interface { // - /components/schemas/Device.Ipv6/properties/name // - /components/schemas/Device.Ipv6Loopback/properties/name // - // - // x-constraint: - // - /components/schemas/Device.Ipv6/properties/name - // - /components/schemas/Device.Ipv6Loopback/properties/name - // // required = true optional string ipv6_name = 1; @@ -4347,11 +4288,6 @@ message VxlanV4Tunnel { // - /components/schemas/Device.Ipv4/properties/name // - /components/schemas/Device.Ipv4Loopback/properties/name // - // - // x-constraint: - // - /components/schemas/Device.Ipv4/properties/name - // - /components/schemas/Device.Ipv4Loopback/properties/name - // // required = true optional string source_interface = 1; @@ -4380,11 +4316,6 @@ message VxlanV6Tunnel { // - /components/schemas/Device.Ipv6/properties/name // - /components/schemas/Device.Ipv6Loopback/properties/name // - // - // x-constraint: - // - /components/schemas/Device.Ipv6/properties/name - // - /components/schemas/Device.Ipv6Loopback/properties/name - // // required = true optional string source_interface = 1; @@ -4543,10 +4474,6 @@ message RsvpIpv4Interface { // x-constraint: // - /components/schemas/Device.Ipv4/properties/name // - // - // x-constraint: - // - /components/schemas/Device.Ipv4/properties/name - // // required = true optional string ipv4_name = 1; @@ -4613,11 +4540,6 @@ message RsvpLspIpv4Interface { // - /components/schemas/Device.Ipv4/properties/name // - /components/schemas/Device.Ipv4Loopback/properties/name // - // - // x-constraint: - // - /components/schemas/Device.Ipv4/properties/name - // - /components/schemas/Device.Ipv4Loopback/properties/name - // // required = true optional string ipv4_name = 1; @@ -5040,10 +4962,6 @@ message Flow { // one ethernet packet header. repeated FlowHeader packet = 2; - // Under Review: The packet header schema for egress tracking currently exposes unwanted - // fields. The query structure for tagged metrics inside flows metrics requires documenting - // expected response format. - // // Under Review: The packet header schema for egress tracking currently exposes unwanted // fields. The query structure for tagged metrics inside flows metrics requires documenting // expected response format. @@ -5110,16 +5028,9 @@ message FlowPort { // - /components/schemas/Port/properties/name // - /components/schemas/Lag/properties/name // - // - // x-constraint: - // - /components/schemas/Port/properties/name - // - /components/schemas/Lag/properties/name - // // required = true optional string tx_name = 1; - // Deprecated: This property is deprecated in favor of property rx_names - // // Deprecated: This property is deprecated in favor of property rx_names // // The unique name of a port that is the intended receive port. @@ -5128,11 +5039,6 @@ message FlowPort { // - /components/schemas/Port/properties/name // - /components/schemas/Lag/properties/name // - // - // x-constraint: - // - /components/schemas/Port/properties/name - // - /components/schemas/Lag/properties/name - // optional string rx_name = 2; // Unique name of ports or lags that are intended receive endpoints. @@ -5141,11 +5047,6 @@ message FlowPort { // - /components/schemas/Port/properties/name // - /components/schemas/Lag/properties/name // - // - // x-constraint: - // - /components/schemas/Port/properties/name - // - /components/schemas/Lag/properties/name - // repeated string rx_names = 3; } @@ -5217,18 +5118,6 @@ message FlowRouter { // - /components/schemas/Isis.V4RouteRange/properties/name // - /components/schemas/Isis.V6RouteRange/properties/name // - // - // x-constraint: - // - /components/schemas/Device.Ethernet/properties/name - // - /components/schemas/Device.Ipv4/properties/name - // - /components/schemas/Device.Ipv6/properties/name - // - /components/schemas/Bgp.V4RouteRange/properties/name - // - /components/schemas/Bgp.V6RouteRange/properties/name - // - /components/schemas/Bgp.CMacIpRange/properties/name - // - /components/schemas/Rsvp.LspIpv4Interface.P2PIngressIpv4Lsp/properties/name - // - /components/schemas/Isis.V4RouteRange/properties/name - // - /components/schemas/Isis.V6RouteRange/properties/name - // repeated string tx_names = 2; // TBD @@ -5244,18 +5133,6 @@ message FlowRouter { // - /components/schemas/Isis.V4RouteRange/properties/name // - /components/schemas/Isis.V6RouteRange/properties/name // - // - // x-constraint: - // - /components/schemas/Device.Ethernet/properties/name - // - /components/schemas/Device.Ipv4/properties/name - // - /components/schemas/Device.Ipv6/properties/name - // - /components/schemas/Bgp.V4RouteRange/properties/name - // - /components/schemas/Bgp.V6RouteRange/properties/name - // - /components/schemas/Bgp.CMacIpRange/properties/name - // - /components/schemas/Rsvp.LspIpv4Interface.P2PEgressIpv4Lsp/properties/name - // - /components/schemas/Isis.V4RouteRange/properties/name - // - /components/schemas/Isis.V6RouteRange/properties/name - // repeated string rx_names = 3; } @@ -5284,6 +5161,7 @@ message FlowHeader { ppp = 17; igmpv1 = 18; mpls = 19; + rsvp = 20; } } // The available types of flow headers. If one is not provided the @@ -5347,6 +5225,9 @@ message FlowHeader { // Description missing in models FlowMpls mpls = 20; + + // Description missing in models + FlowRsvp rsvp = 21; } // Custom packet header @@ -5951,3942 +5832,6963 @@ message FlowMpls { PatternFlowMplsTimeToLive time_to_live = 4; } -// The frame size which overrides the total length of the packet -message FlowSize { +// RSVP packet header as defined in RFC2205 and RFC3209. Currently only supported message +// type is path with mandatory objects and sub-objects. +message FlowRsvp { - message Choice { - enum Enum { - unspecified = 0; - fixed = 1; - increment = 2; - random = 3; - weight_pairs = 4; - } - } // Description missing in models - // default = Choice.Enum.fixed - optional Choice.Enum choice = 1; + PatternFlowRsvpVersion version = 1; - // Description missing in models - // default = 64 - optional uint32 fixed = 2; + // Flag, 0x01-0x08: Reserved. + FlowRSVPFlag flag = 2; // Description missing in models - FlowSizeIncrement increment = 3; + PatternFlowRsvpRsvpChecksum rsvp_checksum = 3; // Description missing in models - FlowSizeRandom random = 4; + PatternFlowRsvpTimeToLive time_to_live = 4; // Description missing in models - FlowSizeWeightPairs weight_pairs = 5; -} - -// Frame size that increments from a starting size to -// an ending size incrementing by a step size. -message FlowSizeIncrement { - - // Starting frame size in bytes - // default = 64 - optional uint32 start = 1; + PatternFlowRsvpReserved reserved = 5; - // Ending frame size in bytes - // default = 1518 - optional uint32 end = 2; + // The sum of the lengths of the common header and all objects included in the message. + FlowRSVPLength rsvp_length = 6; - // Step frame size in bytes - // default = 1 - optional uint32 step = 3; + // An 8-bit number that identifies the function of the RSVP message. There are aound + // 20 message types is defined https://www.iana.org/assignments/rsvp-parameters/rsvp-parameters.xhtml#rsvp-parameters-2 + // . Among Those we are presently supporting path(value: 1) message type. + FlowRSVPMessage message_type = 7; } -// Random frame size from a min value to a max value. -message FlowSizeRandom { - - // Description missing in models - // default = 64 - optional uint32 min = 1; +// Description missing in models +message FlowRSVPFlag { + message Choice { + enum Enum { + unspecified = 0; + not_refresh_reduction_capable = 1; + refresh_reduction_capable = 2; + } + } // Description missing in models - // default = 1518 - optional uint32 max = 2; + // default = Choice.Enum.not_refresh_reduction_capable + optional Choice.Enum choice = 1; } -// Frame size distribution, defined as pairs (including IMIX distribution). -// Frames are randomly generated such that the proportion of each frame size out of -// the total number of frames -// are matching with the weight value of the pair. However, as with any -// other probability -// distribution, the sample distribution is close to theoretical value only if the size -// of the sample is reasonably large. -// When the number of frames is very low the transmitted frames may not come close to -// the ratio described in the weight. -message FlowSizeWeightPairs { +// Description missing in models +message FlowRSVPLength { message Choice { enum Enum { unspecified = 0; - predefined = 1; - custom = 2; + auto = 1; + value = 2; } } - // Description missing in models - // default = Choice.Enum.predefined + // auto or configured value. + // default = Choice.Enum.auto optional Choice.Enum choice = 1; - message Predefined { + // The OTG implementation can provide a system generated value for this property. If + // the OTG is unable to generate a value the default value must be used. + // default = 0 + optional uint32 auto = 2; + + // Description missing in models + // default = 0 + optional uint32 value = 3; +} + +// Description missing in models +message FlowRSVPMessage { + + message Choice { enum Enum { unspecified = 0; - imix = 1; - ipsec_imix = 2; - ipv6_imix = 3; - standard_imix = 4; - tcp_imix = 5; + path = 1; } } - // Specify predefined frame size distribution pairs (including IMIX distribution). - // - // The available predefined distribution pairs are: - // - IMIX (64:7, 570:4, and 1518:1) - // - IPSec IMIX (90:58.67, 92:2, 594:23.66 and 1418:15.67) - // - IPv6 IMIX (60:58.67, 496:2, 594:23.66 and 1518:15.67) - // - Standard IMIX (58:58.67, 62:2, 594:23.66 and 1518:15.67) - // - TCP IMIX (90:58.67, 92:2, 594:23.66 and 1518:15.67) - // default = Predefined.Enum.imix - optional Predefined.Enum predefined = 2; + // Description missing in models + // default = Choice.Enum.path + optional Choice.Enum choice = 1; // Description missing in models - repeated FlowSizeWeightPairsCustom custom = 3; + FlowRSVPPathMessage path = 2; } -// Custom frame size distribution pair. -message FlowSizeWeightPairsCustom { +// path message required the follwoing list of objects in order as defined in https://www.rfc-editor.org/rfc/rfc3209.html#page-15: +// 1. SESSION 2. RSVP_HOP 3. TIME_VALUES 4. EXPLICIT_ROUTE [optional] 5. LABEL_REQUEST +// 6. SESSION_ATTRIBUTE [optional] 7. SENDER_TEMPLATE 8. SENDER_TSPEC 9. RECORD_ROUTE +// [optional] +message FlowRSVPPathMessage { - // The size of the frame (in bytes) for this weight pair. - // default = 64 - optional uint32 size = 1; + // path message required atleast SESSION, RSVP_HOP, TIME_VALUES, LABEL_REQUEST, SENDER_TEMPLATE + // and SENDER_TSPEC objects in order. + repeated FlowRSVPPathObjects objects = 1; +} - // Weight assigned to the corresponding frame size in this weight pair. - // Higher weight means more packets. - // default = 1 - optional float weight = 2; +// Every RSVP object encapsulated in an RSVP message consists of a 32-bit word header +// and the object's contents. +message FlowRSVPPathObjects { + + // A 16-bit field containing the total object length in bytes. Must always be a multiple + // of 4, and at least 4. + FlowRSVPPathObjectLength length = 1; + + // Description missing in models + FlowRSVPPathObjectsClass class_num = 2; } -// The rate of packet transmission -message FlowRate { +// Description missing in models +message FlowRSVPPathObjectLength { message Choice { enum Enum { unspecified = 0; - pps = 1; - bps = 2; - kbps = 3; - mbps = 4; - gbps = 5; - percentage = 6; + auto = 1; + value = 2; } } - // The available types of flow rate. - // default = Choice.Enum.pps + // auto or configured value. + // default = Choice.Enum.auto optional Choice.Enum choice = 1; - // Packets per second. - // default = 1000 - optional uint64 pps = 2; - - // Bits per second. - // default = 1000000000 - optional uint64 bps = 3; - - // Kilobits per second. - // default = 1000000 - optional uint64 kbps = 4; - - // Megabits per second. - // default = 1000 - optional uint64 mbps = 5; - - // Gigabits per second. - // default = 1 - optional uint32 gbps = 6; + // The OTG implementation can provide a system generated value for this property. If + // the OTG is unable to generate a value the default value must be used. + // default = 4 + optional uint32 auto = 2; - // The percentage of a port location's available bandwidth. - // default = 100 - optional float percentage = 7; + // Description missing in models + // default = 4 + optional uint32 value = 3; } -// A container for different transmit durations. -message FlowDuration { +// The class number is used to identify the class of an object. Defined in https://www.iana.org/assignments/rsvp-parameters/rsvp-parameters.xhtml#rsvp-parameters-4 +// . Curently supported class numbers are for path message type. path message: Supported +// Class numbers and it's value: SESSION: 1, RSVP_HOP: 3, TIME_VALUES: 5, EXPLICIT_ROUTE: +// 20, LABEL_REQUEST: 19, SESSION_ATTRIBUTE: 207, SENDER_TEMPLATE: 11, SENDER_TSPEC: +// 12, RECORD_ROUTE: 21, Custom: User defined bytes based on class and c-types not suppored +// in above options. +message FlowRSVPPathObjectsClass { message Choice { enum Enum { unspecified = 0; - fixed_packets = 1; - fixed_seconds = 2; - burst = 3; - continuous = 4; + session = 1; + rsvp_hop = 2; + time_values = 3; + explicit_route = 4; + label_request = 5; + session_attribute = 6; + sender_template = 7; + sender_tspec = 8; + record_route = 9; + custom = 10; } } - // A choice used to determine the type of duration. - // default = Choice.Enum.continuous + // Description missing in models + // required = true optional Choice.Enum choice = 1; // Description missing in models - FlowFixedPackets fixed_packets = 2; + FlowRSVPPathObjectsClassSession session = 2; // Description missing in models - FlowFixedSeconds fixed_seconds = 3; + FlowRSVPPathObjectsClassRsvpHop rsvp_hop = 3; // Description missing in models - FlowBurst burst = 4; + FlowRSVPPathObjectsClassTimeValues time_values = 4; // Description missing in models - FlowContinuous continuous = 5; -} + FlowRSVPPathObjectsClassExplicitRoute explicit_route = 5; -// Transmit will be continuous and will not stop automatically. -message FlowContinuous { + // Description missing in models + FlowRSVPPathObjectsClassLabelRequest label_request = 6; - // The minimum gap between packets expressed as bytes. - // default = 12 - optional uint32 gap = 1; + // Description missing in models + FlowRSVPPathObjectsClassSessionAttribute session_attribute = 7; // Description missing in models - FlowDelay delay = 2; + FlowRSVPPathObjectsClassSenderTemplate sender_template = 8; + + // Description missing in models + FlowRSVPPathObjectsClassSenderTspec sender_tspec = 9; + + // Description missing in models + FlowRSVPPathObjectsClassRecordRoute record_route = 10; + + // Description missing in models + FlowRSVPPathObjectsCustom custom = 11; } -// The optional container to specify the delay before starting -// transmission of packets. -message FlowDelay { +// C-Type is specific to a class num. +message FlowRSVPPathObjectsClassSession { + + // Description missing in models + FlowRSVPPathObjectsSessionCType c_type = 1; +} + +// The body of an object corresponding to the class number and c-type. Currently supported +// c-type for SESSION object is LSP Tunnel IPv4 (7). +message FlowRSVPPathObjectsSessionCType { message Choice { enum Enum { unspecified = 0; - bytes = 1; - nanoseconds = 2; - microseconds = 3; + lsp_tunnel_ipv4 = 1; } } // Description missing in models - // default = Choice.Enum.bytes + // default = Choice.Enum.lsp_tunnel_ipv4 optional Choice.Enum choice = 1; - // The delay before starting transmission of packets. - // A value of 0 indicates no delay. - // default = 0 - optional float bytes = 2; - - // The delay before starting transmission of packets. - // A value of 0 indicates no delay. - // default = 0 - optional float nanoseconds = 3; - - // The delay before starting transmission of packets. - // A value of 0 indicates no delay. - // default = 0 - optional float microseconds = 4; + // Description missing in models + FlowRSVPPathSessionLspTunnelIpv4 lsp_tunnel_ipv4 = 2; } -// Transmit a fixed number of packets after which the flow will stop. -message FlowFixedPackets { +// Class = SESSION, LSP_TUNNEL_IPv4 C-Type = 7. +message FlowRSVPPathSessionLspTunnelIpv4 { - // Stop transmit of the flow after this number of packets. - // default = 1 - optional uint32 packets = 1; + // Description missing in models + PatternFlowRSVPPathSessionLspTunnelIpv4Ipv4TunnelEndPointAddress ipv4_tunnel_end_point_address = 1; - // The minimum gap between packets expressed as bytes. - // default = 12 - optional uint32 gap = 2; + // Description missing in models + PatternFlowRSVPPathSessionLspTunnelIpv4Reserved reserved = 2; // Description missing in models - FlowDelay delay = 3; + PatternFlowRSVPPathSessionLspTunnelIpv4TunnelId tunnel_id = 3; + + // Description missing in models + PatternFlowRSVPPathSessionLspTunnelIpv4ExtendedTunnelId extended_tunnel_id = 4; } -// Transmit for a fixed number of seconds after which the flow will stop. -message FlowFixedSeconds { +// C-Type is specific to a class num. +message FlowRSVPPathObjectsClassRsvpHop { - // Stop transmit of the flow after this number of seconds. - // default = 1 - optional float seconds = 1; + // Description missing in models + FlowRSVPPathObjectsRsvpHopCType c_type = 1; +} - // The minimum gap between packets expressed as bytes. - // default = 12 - optional uint32 gap = 2; +// Object for RSVP_HOP class. Currently supported c-type is IPv4 (1). +message FlowRSVPPathObjectsRsvpHopCType { + + message Choice { + enum Enum { + unspecified = 0; + ipv4 = 1; + } + } + // Description missing in models + // default = Choice.Enum.ipv4 + optional Choice.Enum choice = 1; // Description missing in models - FlowDelay delay = 3; + FlowRSVPPathRsvpHopIpv4 ipv4 = 2; } -// Transmits continuous or fixed burst of packets. -// For continuous burst of packets, it will not automatically stop. -// For fixed burst of packets, it will stop after transmitting fixed number of bursts. -// -message FlowBurst { +// IPv4 RSVP_HOP object: Class = 3, C-Type = 1 +message FlowRSVPPathRsvpHopIpv4 { - // The number of packet bursts transmitted per flow. - // A value of 0 implies continuous burst of packets. - // default = 0 - optional uint32 bursts = 1; + // Description missing in models + PatternFlowRSVPPathRsvpHopIpv4Ipv4NextPreviousHopAddress ipv4_next_previous_hop_address = 1; - // The number of packets transmitted per burst. - // default = 1 - optional uint32 packets = 2; + // Description missing in models + PatternFlowRSVPPathRsvpHopIpv4LogicalInterfaceHandle logical_interface_handle = 2; +} - // The minimum gap between packets expressed as bytes. - // default = 12 - optional uint32 gap = 3; +// C-Type is specific to a class num. +message FlowRSVPPathObjectsClassTimeValues { // Description missing in models - FlowDurationInterBurstGap inter_burst_gap = 4; + FlowRSVPPathObjectsTimeValuesCType c_type = 1; } -// The optional container for specifying a gap between bursts. -message FlowDurationInterBurstGap { +// Object for TIME_VALUES class. Currently supported c-type is Type 1 Time Value (1). +message FlowRSVPPathObjectsTimeValuesCType { message Choice { enum Enum { unspecified = 0; - bytes = 1; - nanoseconds = 2; - microseconds = 3; + type_1_time_value = 1; } } - // The type of inter burst gap units. - // default = Choice.Enum.bytes + // Description missing in models + // default = Choice.Enum.type_1_time_value optional Choice.Enum choice = 1; - // The amount of time between bursts expressed in bytes. - // A value of 0 indicates no gap between bursts. - // default = 12 - optional double bytes = 2; - - // The amount of time between bursts expressed in nanoseconds. - // A value of 0 indicates no gap between bursts. - // default = 96 - optional double nanoseconds = 3; - - // The amount of time between bursts expressed in microseconds. - // A value of 0 indicates no gap between bursts. - // default = 0.096 - optional double microseconds = 4; + // Description missing in models + FlowRSVPPathTimeValuesType1 type_1_time_value = 2; } -// The optional container for configuring flow metrics. -message FlowMetrics { - - // Enables flow metrics. - // Enabling this option may affect the resultant packet payload due to - // additional instrumentation data. - // default = False - optional bool enable = 1; - - // Enables additional flow metric loss calculation. - // default = False - optional bool loss = 2; - - // Rx Tx ratio. - FlowRxTxRatio rx_tx_ratio = 6; +// TIME_VALUES Object: Class = 5, C-Type = 1 +message FlowRSVPPathTimeValuesType1 { - // Enables additional flow metric first and last timestamps. - // default = False - optional bool timestamps = 3; + // Description missing in models + PatternFlowRSVPPathTimeValuesType1RefreshPeriodR refresh_period_r = 1; +} - // Latency metrics. - FlowLatencyMetrics latency = 4; +// C-Type is specific to a class num. +message FlowRSVPPathObjectsClassExplicitRoute { - // Predefined metric tags - FlowPredefinedTags predefined_metric_tags = 5; + // Description missing in models + FlowRSVPPathObjectsClassExplicitRouteCType c_type = 1; } -// The optional container for per flow latency metric configuration. -message FlowLatencyMetrics { - - // True to enable latency metrics using timestamps. - // - // Enabling this option may affect the resultant packet payload due to - // additional instrumentation data. - // default = False - optional bool enable = 1; +// Object for EXPLICIT_ROUTE class and c-type is Type 1 Explicit Route (1). +message FlowRSVPPathObjectsClassExplicitRouteCType { - message Mode { + message Choice { enum Enum { unspecified = 0; - store_forward = 1; - cut_through = 2; + type_1_explicit_route = 1; } } - // Select the type of latency measurement. The different types of - // latency measurements are: - // - // - // store_forward: - // The time interval starting when the last bit of the frame leaves the - // sending port and ending when the first bit of the frame is seen on - // the receiving port (LIFO). This is based on the RFC 1242 standard. - // - // - // cut_through: - // The time interval starting when the first bit of the frame leaves - // the sending port and ending when the first bit of the frame is seen - // on the receiving port (FIFO). This is based on the RFC 1242 - // standard. - // default = Mode.Enum.store_forward - optional Mode.Enum mode = 2; + // Description missing in models + // default = Choice.Enum.type_1_explicit_route + optional Choice.Enum choice = 1; + + // Description missing in models + FlowRSVPPathExplicitRouteType1 type_1_explicit_route = 2; } -// List of predefined flow tracking options, outside packet fields, that can be enabled. -message FlowPredefinedTags { +// Type1 Explicit Route has subobjects. Currently supported subobjects are IPv4 prefix +// and 4-byte AS number. +message FlowRSVPPathExplicitRouteType1 { - // Enables Rx port or lag level disaggregation with predefined metrics tag name set - // as rx_name. - // The Rx port / lag names can be found under tagged_metrics tag names in flow metrics - // response. - // default = False - optional bool rx_name = 1; + // Description missing in models + repeated FlowRSVPType1ExplicitRouteSubobjects subobjects = 1; } -// Rx Tx ratio is the ratio of expected number of Rx packets across all Rx ports to -// the Tx packets -// for the configured flow. It is a factor by which the Tx packet count is multiplied -// to calculate -// the sum of expected Rx packet count, across all Rx ports. This will be used to calculate -// loss -// percentage of flow at aggregate level. -message FlowRxTxRatio { +// Type is specific to a subobject. +message FlowRSVPType1ExplicitRouteSubobjects { + + // Description missing in models + FlowRSVPType1ExplicitRouteSubobjectsType type = 1; +} + +// Currently supported subobjects are IPv4 address(1) and 4-byte AS number(5). +message FlowRSVPType1ExplicitRouteSubobjectsType { message Choice { enum Enum { unspecified = 0; - rx_count = 1; - value = 2; + ipv4_prefix = 1; + four_byte_as_number = 2; } } // Description missing in models - // default = Choice.Enum.value + // default = Choice.Enum.ipv4_prefix optional Choice.Enum choice = 1; // Description missing in models - FlowRxTxRatioRxCount rx_count = 2; + FlowRSVPPathExplicitRouteType1Ipv4Prefix ipv4_prefix = 2; - // Should be a positive, non-zero value. The default value of 1, is when the Rx packet - // count across - // all ports is expected to match the Tx packet count. A custom integer value (>1) can - // be specified for - // loss calculation for cases when there are multiple destination addresses configured - // within one flow, - // but DUT is configured to replicate only to a subset of Rx ports. For cases when Tx - // side generates two - // packets from each source in 1:1 protection mode but only one of the two packets are - // received by the - // Rx port, we may need to specify a fractional value instead. - // default = 1.0 - optional float value = 3; + // Description missing in models + FlowRSVPPathExplicitRouteType1FourByteASNumber four_byte_as_number = 3; } -// This is for cases where one copy of Tx packet is received on all Rx ports and so -// the sum total of Rx packets -// received across all Rx ports is a multiple of Rx port count and Tx packets. -message FlowRxTxRatioRxCount { -} +// Class = EXPLICIT_ROUTE, Type1 ROUTE_RECORD C-Type = 1 Subobject: IPv4 Prefix, C-Type: +// 1 +message FlowRSVPPathExplicitRouteType1Ipv4Prefix { -// The optional container for event configuration. -message Event { + // Description missing in models + PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixLBit l_bit = 1; - // True to enable all events. - // Enabling this option may affect the resultant packet payload due to - // additional instrumentation data. - // default = False - optional bool enable = 1; + // The Length contains the total length of the subobject in bytes,including L ,Type + // and Length fields. The Length MUST be atleast 4, and MUST be a multiple of 4. + FlowRSVPExplicitRouteLength length = 2; // Description missing in models - EventLink link = 2; + PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixIpv4Address ipv4_address = 3; + + // The prefix of the IPv4 address. + // default = 32 + optional uint32 prefix = 4; +} + +// Class = EXPLICIT_ROUTE, Type1 ROUTE_RECORD C-Type = 1 Subobject: 4-byte AS number, +// C-Type: 32 +message FlowRSVPPathExplicitRouteType1FourByteASNumber { // Description missing in models - EventRxRateThreshold rx_rate_threshold = 3; + PatternFlowRSVPPathExplicitRouteType1FourByteASNumberLBit l_bit = 1; + + // The Length contains the total length of the subobject in bytes,including L ,Type + // and Length fields. The Length MUST be atleast 4, and MUST be a multiple of 4. + FlowRSVPExplicitRouteLength length = 2; // Description missing in models - EventRouteAdvertiseWithdraw route_advertise_withdraw = 4; + PatternFlowRSVPPathExplicitRouteType1FourByteASNumberReserved reserved = 3; + + // Autonomous System number to be set in the ERO sub-object that this LSP should traverse + // through. This field is applicable only if the value of 'type' is set to 'as_number'. + // Note that as per RFC3209, 4-byte AS encoding is not supported. + // default = 0 + optional uint32 as_number = 4; } -// The optional container for rx rate threshold event configuration. -message EventRxRateThreshold { +// Description missing in models +message FlowRSVPExplicitRouteLength { - // True to enable the rx_rate_threshold event. - // Enabling this option may affect the resultant packet payload due to - // additional instrumentation data. - // default = False - optional bool enable = 1; + message Choice { + enum Enum { + unspecified = 0; + auto = 1; + value = 2; + } + } + // auto or configured value. + // default = Choice.Enum.auto + optional Choice.Enum choice = 1; - // True to enable notifications when the rx rate of a flow passes above - // or below the threshold value. - // default = 95 - optional float threshold = 2; + // The OTG implementation can provide a system generated value for this property. If + // the OTG is unable to generate a value the default value must be used. + // default = 8 + optional uint32 auto = 2; + + // Description missing in models + // default = 8 + optional uint32 value = 3; } -// The optional container for link up/down event configuration. -message EventLink { +// C-Type is specific to a class num. +message FlowRSVPPathObjectsClassLabelRequest { - // True to enable notifications when a link up/down event occurs. - // default = False - optional bool enable = 1; + // Description missing in models + FlowRSVPPathObjectsLabelRequestCType c_type = 1; } -// The optional container for route advertise/withdraw event configuration. -message EventRouteAdvertiseWithdraw { +// Object for LABEL_REQUEST class. Currently supported c-type is Without Label Range +// (1). +message FlowRSVPPathObjectsLabelRequestCType { - // True to enable notifications when a route advertise/withdraw - // event occurs. - // default = False - optional bool enable = 1; + message Choice { + enum Enum { + unspecified = 0; + without_label_range = 1; + } + } + // Description missing in models + // default = Choice.Enum.without_label_range + optional Choice.Enum choice = 1; + + // Description missing in models + FlowRSVPPathLabelRequestWithoutLabelRange without_label_range = 2; } -// Description missing in models -message EventRequest { +// Class = LABEL_REQUEST, Without Label Range C-Type = 1 +message FlowRSVPPathLabelRequestWithoutLabelRange { - message Type { + // Description missing in models + PatternFlowRSVPPathLabelRequestWithoutLabelRangeReserved reserved = 1; + + // Description missing in models + PatternFlowRSVPPathLabelRequestWithoutLabelRangeL3pid l3pid = 2; +} + +// C-Type is specific to a class num. +message FlowRSVPPathObjectsClassSessionAttribute { + + // Description missing in models + FlowRSVPPathObjectsSessionAttributeCType c_type = 1; +} + +// Object for SESSION_ATTRIBUTE class. Currently supported c-type is LSP_Tunnel (1) +// and LSP_Tunnel (7). +message FlowRSVPPathObjectsSessionAttributeCType { + + message Choice { enum Enum { unspecified = 0; - link_down = 1; - link_up = 2; - route_withdraw = 3; - route_advertise = 4; - flow_rx_rate_above_threshold = 5; - flow_rx_rate_below_threshold = 6; + lsp_tunnel = 1; + lsp_tunnel_ra = 2; } } - // Constrain the events being returned by specifying event types. - // If the list is empty then all event types will be returned. - repeated Type.Enum type = 1; + // Description missing in models + // default = Choice.Enum.lsp_tunnel + optional Choice.Enum choice = 1; - // Constrain the events being returned by specifying event sources. - // If the list is empty then all event sources will be returned. - // - // x-constraint: - // - /components/schemas/Port/properties/name - // - /components/schemas/Bgp.V4RouteRange/name - // - /components/schemas/Bgp.V6RouteRange/name - // - // - // x-constraint: - // - /components/schemas/Port/properties/name - // - /components/schemas/Bgp.V4RouteRange/name - // - /components/schemas/Bgp.V6RouteRange/name - // - repeated string source = 2; + // Description missing in models + FlowRSVPPathSessionAttributeLspTunnel lsp_tunnel = 2; + + // Description missing in models + FlowRSVPPathSessionAttributeLspTunnelRa lsp_tunnel_ra = 3; } -// A container that describes what events a system should provide and -// optionally where to publish them. -message EventSubscription { +// SESSION_ATTRIBUTE class = 207, LSP_TUNNEL_RA C-Type = 7, resource affinity information. +message FlowRSVPPathSessionAttributeLspTunnel { - // Description missing in models - EventRequest events = 1; + // The priority of the session with respect to taking resources,in the range of 0 to + // 7. The value 0 is the highest priority. The Setup Priority is used in deciding whether + // this session can preempt another session. + // default = 7 + optional uint32 setup_priority = 1; - // Indicates where a client wants to be notified of the events set in - // the events property. - // If this property is empty or null then no event notifications will - // be forwarded. - optional string callback_url = 2; + // The priority of the session with respect to holding resources,in the range of 0 to + // 7. The value 0 is the highest priority. The Setup Priority is used in deciding whether + // this session can preempt another session. + // default = 7 + optional uint32 holding_priority = 2; + + // 0x01 Local protection desired, 0x02 Label recording desired, 0x04 SE Style desired + FlowRSVPLspTunnelFlag flags = 3; + + // The length of the display string before padding, in bytes. + // default = 0 + optional string name_length = 4; + + // A null padded string of characters. + optional string session_name = 5; } -// Configuration of LLDP protocol IEEE Ref: https://www.ieee802.org/1/files/public/docs2002/lldp-protocol-00.pdf -message Lldp { +// SESSION_ATTRIBUTE class = 207, LSP_TUNNEL_RA C-Type = 1, it carries resource affinity +// information. +message FlowRSVPPathSessionAttributeLspTunnelRa { - // The unique name of the object on which LLDP is running. - // required = true - LldpConnection connection = 1; + // A 32-bit vector representing a set of attribute filters associated with a tunnel + // any of which renders a link unacceptable. A null set (all bits set to zero) doesn't + // render the link unacceptable. The most significant byte in the hex-string is the + // farthest to the left in the byte sequence. Leading zero bytes in the configured + // value may be omitted for brevity. + // default = 0 + optional string exclude_any = 1; - // The Chassis ID is a mandatory TLV which identifies the chassis component of the endpoint - // identifier associated with the transmitting LLDP agent. If mac address is specified - // it should be in colon seperated mac address format. - LldpChassisId chassis_id = 2; + // A 32-bit vector representing a set of attribute filters associated with a tunnel + // any of which renders a link acceptable. A null set (all bits set to zero) automatically + // passes. The most significant byte in the hex-string is the farthest to the left + // in the byte sequence. Leading zero bytes in the configured value may be omitted + // for brevity. + // default = 0 + optional string include_any = 2; - // The Port ID is a mandatory TLV which identifies the port component of the endpoint - // identifier associated with the transmitting LLDP agent. If the specified port is - // an IEEE 802.3 Repeater port, then this TLV is optional. - LldpPortId port_id = 3; + // A 32-bit vector representing a set of attribute filters associated with a tunnel + // all of which must be present for a link to be acceptable. A null set (all bits set + // to zero) automatically passes. The most significant byte in the hex-string is the + // farthest to the left in the byte sequence. Leading zero bytes in the configured + // value may be omitted for brevity. + // default = 0 + optional string include_all = 3; - // The system name field shall contain an alpha-numeric string that indicates the system's - // administratively assigned name. The system name should be the system's fully qualified - // domain name. If implementations support IETF RFC 3418, the sysName object should - // be used for this field. - LldpSystemName system_name = 4; + // The priority of the session with respect to taking resources,in the range of 0 to + // 7. The value 0 is the highest priority. The Setup Priority is used in deciding whether + // this session can preempt another session. + // default = 7 + optional uint32 setup_priority = 4; - // Specifies the amount of time in seconds a receiving device should maintain LLDP information - // sent by the device before discarding it. - // default = 120 - optional uint32 hold_time = 5; + // The priority of the session with respect to holding resources,in the range of 0 to + // 7. The value 0 is the highest priority. The Setup Priority is used in deciding whether + // this session can preempt another session. + // default = 7 + optional uint32 holding_priority = 5; - // Set the transmission frequency of LLDP updates in seconds. - // default = 30 - optional uint32 advertisement_interval = 6; + // 0x01 Local protection desired, 0x02 Label recording desired, 0x04 SE Style desired + FlowRSVPLspTunnelFlag flags = 6; - // Globally unique name of an object. It also serves as the primary key for arrays of - // objects. - // required = true - optional string name = 7; + // The length of the display string before padding, in bytes. + // default = 0 + optional string name_length = 7; + + // A null padded string of characters. + optional string session_name = 8; } -// LLDP connection to a test port. In future if more connection options arise LLDP -// connection object will be enhanced. -message LldpConnection { +// Description missing in models +message FlowRSVPLspTunnelFlag { message Choice { enum Enum { unspecified = 0; - port_name = 1; + local_protection_desired = 1; + label_recording_desired = 2; + se_style_desired = 3; } } - // The name of the test port or other connection objects on which LLDP is configured. + // Description missing in models + // default = Choice.Enum.local_protection_desired optional Choice.Enum choice = 1; +} - // Name of the test port on which LLDP is configured on. - // - // x-constraint: - // - /components/schemas/Port/properties/name - // - // - // x-constraint: - // - /components/schemas/Port/properties/name - // - optional string port_name = 2; +// C-Type is specific to a class num. +message FlowRSVPPathObjectsClassSenderTemplate { + + // Description missing in models + FlowRSVPPathObjectsSenderTemplateCType c_type = 1; } -// The Chassis ID is a mandatory TLV which identifies the chassis component of the endpoint -// identifier associated with the transmitting LLDP agent. This field identifies the -// format and source of the chassis identifier string. It is based on the enumerator -// defined by the LldpChassisIdSubtype object from IEEE 802.1AB MIB. -message LldpChassisId { +// Object for SENDER_TEMPLATE class. Currently supported c-type is LSP Tunnel IPv4 (7). +message FlowRSVPPathObjectsSenderTemplateCType { message Choice { enum Enum { unspecified = 0; - mac_address_subtype = 1; - interface_name_subtype = 2; - local_subtype = 3; + lsp_tunnel_ipv4 = 1; } } - // Chassis ID subtype to be used in Chassis ID TLV. - // default = Choice.Enum.mac_address_subtype + // Description missing in models + // default = Choice.Enum.lsp_tunnel_ipv4 optional Choice.Enum choice = 1; // Description missing in models - LldpChassisMacSubType mac_address_subtype = 2; + FlowRSVPPathSenderTemplateLspTunnelIpv4 lsp_tunnel_ipv4 = 2; +} - // Name of an interface of the chassis that uniquely identifies the chassis. - optional string interface_name_subtype = 3; +// Class = SENDER_TEMPLATE, LSP_TUNNEL_IPv4 C-Type = 7 +message FlowRSVPPathSenderTemplateLspTunnelIpv4 { - // Locally assigned name of the chassis. - optional string local_subtype = 4; + // Description missing in models + PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Ipv4TunnelSenderAddress ipv4_tunnel_sender_address = 1; + + // Description missing in models + PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Reserved reserved = 2; + + // Description missing in models + PatternFlowRSVPPathSenderTemplateLspTunnelIpv4LspId lsp_id = 3; } -// The Port ID is a mandatory TLV which identifies the port component of the endpoint -// identifier associated with the transmitting LLDP agent.This field identifies the -// format and source of the port identifier string. It is based on the enumerator defined -// by the PtopoPortIdType object from RFC2922. -message LldpPortId { +// C-Type is specific to a class num. +message FlowRSVPPathObjectsClassSenderTspec { + + // Description missing in models + FlowRSVPPathObjectsSenderTspecCType c_type = 1; +} + +// Object for SENDER_TSPEC class. Currently supported c-type is int-serv (2). +message FlowRSVPPathObjectsSenderTspecCType { message Choice { enum Enum { unspecified = 0; - mac_address_subtype = 1; - interface_name_subtype = 2; - local_subtype = 3; + int_serv = 1; } } - // Port ID subtype to be used in Port ID TLV. - // default = Choice.Enum.interface_name_subtype + // Description missing in models + // default = Choice.Enum.int_serv optional Choice.Enum choice = 1; - // The MAC Address configured in the Port ID TLV. - optional string mac_address_subtype = 2; - // Description missing in models - LldpPortInterfaceNameSubType interface_name_subtype = 3; - - // The Locally assigned name configured in the Port ID TLV. - optional string local_subtype = 4; + FlowRSVPPathSenderTspecIntServ int_serv = 2; } -// The MAC address configured in the Chassis ID TLV. -message LldpChassisMacSubType { +// int-serv SENDER_TSPEC object: Class = 12, C-Type = 2 +message FlowRSVPPathSenderTspecIntServ { - message Choice { - enum Enum { - unspecified = 0; - auto = 1; - value = 2; - } - } - // In auto mode the system generated value is set for this property, while if the choice - // is selected as value, a user configured value will be used for this property. - // default = Choice.Enum.auto - optional Choice.Enum choice = 1; + // Description missing in models + PatternFlowRSVPPathSenderTspecIntServVersion version = 1; - // The OTG implementation must provide a system generated value for this property. - optional string auto = 2; + // Description missing in models + PatternFlowRSVPPathSenderTspecIntServReserved1 reserved1 = 2; - // User must specify a value if mode is not auto. - optional string value = 3; -} + // Description missing in models + PatternFlowRSVPPathSenderTspecIntServOverallLength overall_length = 3; -// The interface name configured in the Port ID TLV. -message LldpPortInterfaceNameSubType { + // Description missing in models + PatternFlowRSVPPathSenderTspecIntServServiceHeader service_header = 4; - message Choice { - enum Enum { - unspecified = 0; - auto = 1; - value = 2; - } - } - // In auto mode the system generated value is set for this property, while if the choice - // is selected as value, a user configured value will be used for this property. - // default = Choice.Enum.auto - optional Choice.Enum choice = 1; + // Description missing in models + PatternFlowRSVPPathSenderTspecIntServZeroBit zero_bit = 5; - // The OTG implementation must provide a system generated value for this property. - optional string auto = 2; + // Description missing in models + PatternFlowRSVPPathSenderTspecIntServReserved2 reserved2 = 6; - // User must specify a value if mode is not auto. - optional string value = 3; -} + // Description missing in models + PatternFlowRSVPPathSenderTspecIntServLengthOfServiceData length_of_service_data = 7; -// The system Name configured in the System Name TLV. -message LldpSystemName { + // Description missing in models + PatternFlowRSVPPathSenderTspecIntServParameterIdTokenBucketTspec parameter_id_token_bucket_tspec = 8; - message Choice { - enum Enum { - unspecified = 0; - auto = 1; - value = 2; - } - } - // In auto mode the system generated value is set for this property, while if the choice - // is selected as value, a user configured value will be used for this property. - // default = Choice.Enum.auto - optional Choice.Enum choice = 1; + // Description missing in models + PatternFlowRSVPPathSenderTspecIntServParameter127Flag parameter_127_flag = 9; - // The OTG implementation must provide a system generated value for this property. - optional string auto = 2; + // Description missing in models + PatternFlowRSVPPathSenderTspecIntServParameter127Length parameter_127_length = 10; - // User must specify a value if mode is not auto. - optional string value = 3; + // Token bucket rate is set to sender's view of its generated traffic. + // default = 0 + optional float token_bucket_rate = 11; + + // Token bucket size is set to sender's view of its generated traffic. + // default = 0 + optional float token_bucket_size = 12; + + // The peak rate may be set to the sender's peak traffic generation rate (if known and + // controlled), the physical interface line rate (if known), or positive infinity (if + // no better value is available). + // default = 0 + optional float peak_data_rate = 13; + + // Description missing in models + PatternFlowRSVPPathSenderTspecIntServMinimumPolicedUnit minimum_policed_unit = 14; + + // Description missing in models + PatternFlowRSVPPathSenderTspecIntServMaximumPacketSize maximum_packet_size = 15; } -// Error response generated while serving API request. -message Error { +// C-Type is specific to a class num. +message FlowRSVPPathObjectsClassRecordRoute { - // Numeric status code based on the underlying transport being used. - // The API server MUST set this code explicitly based on following references: - // - HTTP 4xx errors: https://datatracker.ietf.org/doc/html/rfc9110#section-15.5 - // - HTTP 5xx errors: https://datatracker.ietf.org/doc/html/rfc9110#section-15.6 - // - gRPC errors: https://grpc.github.io/grpc/core/md_doc_statuscodes.html - // required = true - optional int32 code = 1; + // Description missing in models + FlowRSVPPathObjectsRecordRouteCType c_type = 1; +} - message Kind { +// Object for RECORD_ROUTE class. c-type is Type 1 Route Record (1). +message FlowRSVPPathObjectsRecordRouteCType { + + message Choice { enum Enum { unspecified = 0; - validation = 1; - internal = 2; + type_1_route_record = 1; } } - // Classification of error originating from within API server that may not be mapped - // to the value in `code`. - // Absence of this field may indicate that the error did not originate from within API - // server. - optional Kind.Enum kind = 2; + // Description missing in models + // default = Choice.Enum.type_1_route_record + optional Choice.Enum choice = 1; - // List of error messages generated while executing the request. - repeated string errors = 3; + // Description missing in models + FlowRSVPPathRecordRouteType1 type_1_route_record = 2; } -// A list of warnings that have occurred while executing the request. -message Warning { +// Type1 record route has list of subobjects. Currently supported subobjects are IPv4 +// address(1) and Label(3). +message FlowRSVPPathRecordRouteType1 { - // A list of any system specific warnings that have occurred while - // executing the request. - repeated string warnings = 1; + // Description missing in models + repeated FlowRSVPType1RecordRouteSubobjects subobjects = 1; } -// Request for updating specific attributes of resources in traffic generator -message ConfigUpdate { +// Type is specific to a subobject. +message FlowRSVPType1RecordRouteSubobjects { + + // Description missing in models + FlowRSVPPathObjectsRecordRouteSubObjectType type = 1; +} + +// Currently supported subobjects are IPv4 address(1) and Label(3). +message FlowRSVPPathObjectsRecordRouteSubObjectType { message Choice { enum Enum { unspecified = 0; - flows = 1; + ipv4_address = 1; + label = 2; } } // Description missing in models + // default = Choice.Enum.ipv4_address optional Choice.Enum choice = 1; // Description missing in models - FlowsUpdate flows = 2; + FlowRSVPPathRecordRouteType1Ipv4Address ipv4_address = 2; + + // Description missing in models + FlowRSVPPathRecordRouteType1Label label = 3; } -// A container of flows with associated properties to be updated without affecting the -// flows current transmit state. -message FlowsUpdate { +// Class = RECORD_ROUTE, Type1 ROUTE_RECORD C-Type = 1 Subobject: IPv4 Address, C-Type: +// 1 +message FlowRSVPPathRecordRouteType1Ipv4Address { - message PropertyNames { - enum Enum { - unspecified = 0; - rate = 1; - size = 2; - } - } - // Flow properties to be updated without affecting the transmit state. - repeated PropertyNames.Enum property_names = 1; + // The Length contains the total length of the subobject in bytes, including the Type + // and Length fields. The Length MUST be atleast 4, and MUST be a multiple of 4. + FlowRSVPRouteRecordLength length = 1; - // The list of configured flows for which given property will be updated. - repeated Flow flows = 2; + // Description missing in models + PatternFlowRSVPPathRecordRouteType1Ipv4AddressIpv4Address ipv4_address = 2; + + // Description missing in models + PatternFlowRSVPPathRecordRouteType1Ipv4AddressPrefixLength prefix_length = 3; + + // 0x01 local_protection_available, 0x02 local_protection_in_use + FlowRSVPRecordRouteIPv4Flag flags = 4; } -// Request for setting operational state of configured resources. -message ControlState { +// Description missing in models +message FlowRSVPRecordRouteIPv4Flag { message Choice { enum Enum { unspecified = 0; - port = 1; - protocol = 2; - traffic = 3; + local_protection_available = 1; + local_protection_in_use = 2; } } // Description missing in models - // required = true + // default = Choice.Enum.local_protection_available optional Choice.Enum choice = 1; +} - // Description missing in models - StatePort port = 2; +// Class = RECORD_ROUTE, Type1 ROUTE_RECORD C-Type = 1 Subobject: Label, C-Type: 3 +message FlowRSVPPathRecordRouteType1Label { + + // The Length contains the total length of the subobject in bytes, including the Type + // and Length fields. The Length MUST be atleast 4, and MUST be a multiple of 4. + FlowRSVPRouteRecordLength length = 1; // Description missing in models - StateProtocol protocol = 3; + PatternFlowRSVPPathRecordRouteType1LabelFlags flags = 2; // Description missing in models - StateTraffic traffic = 4; + PatternFlowRSVPPathRecordRouteType1LabelCType c_type = 3; + + // The contents of the Label Object. Copied from the Label Object. + // default = 00 + optional string contents_of_label_obejct = 4; } -// States associated with configured ports. -message StatePort { +// Description missing in models +message FlowRSVPRouteRecordLength { message Choice { enum Enum { unspecified = 0; - link = 1; - capture = 2; + auto = 1; + value = 2; } } - // Description missing in models - // required = true + // auto or configured value. + // default = Choice.Enum.auto optional Choice.Enum choice = 1; + // The OTG implementation can provide a system generated value for this property. If + // the OTG is unable to generate a value the default value must be used. + // default = 8 + optional uint32 auto = 2; + // Description missing in models - StatePortLink link = 2; + // default = 8 + optional uint32 value = 3; +} + +// Custom packet header +message FlowRSVPPathObjectsCustom { // Description missing in models - StatePortCapture capture = 3; + PatternFlowRSVPPathObjectsCustomType type = 1; + + // Description missing in models + FlowRSVPObjectOptionsCustomLength length = 2; + + // A custom packet header defined as a string of hex bytes. The string MUST contain + // sequence of valid hex bytes. Spaces or colons can be part of the bytes but will be + // discarded. This packet header can be used in multiple places in the packet. + // required = true + optional string bytes = 3; } -// States associated with configured flows -message StateTraffic { +// Length for custom options. +message FlowRSVPObjectOptionsCustomLength { message Choice { enum Enum { unspecified = 0; - flow_transmit = 1; + auto = 1; + value = 2; } } - // Description missing in models - // required = true + // auto or configured value. + // default = Choice.Enum.auto optional Choice.Enum choice = 1; + // The OTG implementation can provide a system generated value for this property. If + // the OTG is unable to generate a value the default value must be used. + // default = 4 + optional uint32 auto = 2; + // Description missing in models - StateTrafficFlowTransmit flow_transmit = 2; + // default = 4 + optional uint32 value = 3; } -// States associated with protocols on configured resources. -message StateProtocol { +// The frame size which overrides the total length of the packet +message FlowSize { message Choice { enum Enum { unspecified = 0; - all = 1; - route = 2; - lacp = 3; - bgp = 4; - isis = 5; + fixed = 1; + increment = 2; + random = 3; + weight_pairs = 4; } } // Description missing in models - // required = true + // default = Choice.Enum.fixed optional Choice.Enum choice = 1; // Description missing in models - StateProtocolAll all = 2; - - // Description missing in models - StateProtocolRoute route = 3; + // default = 64 + optional uint32 fixed = 2; // Description missing in models - StateProtocolLacp lacp = 4; + FlowSizeIncrement increment = 3; // Description missing in models - StateProtocolBgp bgp = 5; + FlowSizeRandom random = 4; // Description missing in models - StateProtocolIsis isis = 6; + FlowSizeWeightPairs weight_pairs = 5; } -// Sets the link of configured ports. -message StatePortLink { +// Frame size that increments from a starting size to +// an ending size incrementing by a step size. +message FlowSizeIncrement { - // The names of target ports. An empty or null list will target all ports. - // - // x-constraint: - // - /components/schemas/Port/properties/name - // - // - // x-constraint: - // - /components/schemas/Port/properties/name - // - repeated string port_names = 1; + // Starting frame size in bytes + // default = 64 + optional uint32 start = 1; - message State { - enum Enum { - unspecified = 0; - up = 1; - down = 2; - } - } - // The link state. - // required = true - optional State.Enum state = 2; + // Ending frame size in bytes + // default = 1518 + optional uint32 end = 2; + + // Step frame size in bytes + // default = 1 + optional uint32 step = 3; } -// Sets the capture state of configured ports -message StatePortCapture { +// Random frame size from a min value to a max value. +message FlowSizeRandom { - // The names of ports to which the capture state will be applied to. If the list of - // port_names is empty or null the state will be applied to all configured ports. - // If the list is not empty any port that is not included in the list of port_names - // MUST be ignored and not included in the state change. - // - // x-constraint: - // - /components/schemas/Port/properties/name - // - // - // x-constraint: - // - /components/schemas/Port/properties/name - // - repeated string port_names = 1; + // Description missing in models + // default = 64 + optional uint32 min = 1; - message State { - enum Enum { - unspecified = 0; - start = 1; - stop = 2; - } - } - // The capture state. - // required = true - optional State.Enum state = 2; + // Description missing in models + // default = 1518 + optional uint32 max = 2; } -// Provides state control of flow transmission. -message StateTrafficFlowTransmit { - - // The names of flows to which the transmit state will be applied to. If the list of - // flow_names is empty or null the state will be applied to all configured flows. - // If the list is not empty any flow that is not included in the list of flow_names - // MUST be ignored and not included in the state change. - // - // x-constraint: - // - /components/schemas/Flow/properties/name - // - // - // x-constraint: - // - /components/schemas/Flow/properties/name - // - repeated string flow_names = 1; +// Frame size distribution, defined as pairs (including IMIX distribution). +// Frames are randomly generated such that the proportion of each frame size out of +// the total number of frames +// are matching with the weight value of the pair. However, as with any +// other probability +// distribution, the sample distribution is close to theoretical value only if the size +// of the sample is reasonably large. +// When the number of frames is very low the transmitted frames may not come close to +// the ratio described in the weight. +message FlowSizeWeightPairs { - message State { + message Choice { enum Enum { unspecified = 0; - start = 1; - stop = 2; - pause = 3; - resume = 4; + predefined = 1; + custom = 2; } } - // The transmit state. - // If the value of the state property is 'start' then all flows defined by the 'flow_names' - // property will be started and the metric counters MUST be cleared prior to starting - // the flow(s). - // If the value of the state property is 'stop' then all flows defined by the 'flow_names' - // property will be stopped and the metric counters MUST NOT be cleared. - // If the value of the state property is 'pause' then all flows defined by the 'flow_names' - // property will be paused and the metric counters MUST NOT be cleared. - // If the value of the state property is 'resume' then any paused flows defined by the - // 'flow_names' property will start transmit at the point at which they were paused. - // Any flow that is stopped will start transmit at the beginning of the flow. The flow(s) - // MUST NOT have their metric counters cleared. - // required = true - optional State.Enum state = 2; -} - -// Sets all configured protocols to `start` or `stop` state. -// Setting protocol state to `start` shall be a no-op if preceding `set_config` API -// call was made with `config.options.protocol_options.auto_start_all` set to `true` -// or if all the configured protocols are already started. -message StateProtocolAll { + // Description missing in models + // default = Choice.Enum.predefined + optional Choice.Enum choice = 1; - message State { + message Predefined { enum Enum { unspecified = 0; - start = 1; - stop = 2; + imix = 1; + ipsec_imix = 2; + ipv6_imix = 3; + standard_imix = 4; + tcp_imix = 5; } } - // Protocol states - // required = true - optional State.Enum state = 1; + // Specify predefined frame size distribution pairs (including IMIX distribution). + // + // The available predefined distribution pairs are: + // - IMIX (64:7, 570:4, and 1518:1) + // - IPSec IMIX (90:58.67, 92:2, 594:23.66 and 1418:15.67) + // - IPv6 IMIX (60:58.67, 496:2, 594:23.66 and 1518:15.67) + // - Standard IMIX (58:58.67, 62:2, 594:23.66 and 1518:15.67) + // - TCP IMIX (90:58.67, 92:2, 594:23.66 and 1518:15.67) + // default = Predefined.Enum.imix + optional Predefined.Enum predefined = 2; + + // Description missing in models + repeated FlowSizeWeightPairsCustom custom = 3; } -// Sets the state of configured routes -message StateProtocolRoute { +// Custom frame size distribution pair. +message FlowSizeWeightPairsCustom { - // The names of device route objects to control. If no names are specified then all - // route objects that match the x-constraint will be affected. - // - // x-constraint: - // - /components/schemas/Bgp.V4RouteRange/properties/name - // - /components/schemas/Bgp.V6RouteRange/properties/name - // - /components/schemas/Isis.V4RouteRange/properties/name - // - /components/schemas/Isis.V6RouteRange/properties/name - // - // - // x-constraint: - // - /components/schemas/Bgp.V4RouteRange/properties/name - // - /components/schemas/Bgp.V6RouteRange/properties/name - // - /components/schemas/Isis.V4RouteRange/properties/name - // - /components/schemas/Isis.V6RouteRange/properties/name - // - repeated string names = 1; + // The size of the frame (in bytes) for this weight pair. + // default = 64 + optional uint32 size = 1; - message State { - enum Enum { - unspecified = 0; - withdraw = 1; - advertise = 2; - } - } - // Route states - // required = true - optional State.Enum state = 2; + // Weight assigned to the corresponding frame size in this weight pair. + // Higher weight means more packets. + // default = 1 + optional float weight = 2; } -// Sets state of configured LACP -message StateProtocolLacp { +// The rate of packet transmission +message FlowRate { message Choice { enum Enum { unspecified = 0; - admin = 1; - member_ports = 2; + pps = 1; + bps = 2; + kbps = 3; + mbps = 4; + gbps = 5; + percentage = 6; } } - // Description missing in models - // required = true + // The available types of flow rate. + // default = Choice.Enum.pps optional Choice.Enum choice = 1; - // Description missing in models - StateProtocolLacpAdmin admin = 2; - - // Description missing in models - StateProtocolLacpMemberPorts member_ports = 3; -} - -// Sets admin state of LACP configured on LAG members -message StateProtocolLacpAdmin { + // Packets per second. + // default = 1000 + optional uint64 pps = 2; - // The names of LAG members (ports) for which the state has to be applied. An empty - // or null list will control all LAG members. - // - // x-constraint: - // - /components/schemas/Port/properties/name - // - // - // x-constraint: - // - /components/schemas/Port/properties/name - // - repeated string lag_member_names = 1; + // Bits per second. + // default = 1000000000 + optional uint64 bps = 3; - message State { - enum Enum { - unspecified = 0; - up = 1; - down = 2; - } - } - // The LACP Member admin state. 'up' will send LACPDUs with 'sync' flag set on selected - // member ports. 'down' will send LACPDUs with 'sync' flag unset on selected member - // ports. - // required = true - optional State.Enum state = 2; -} + // Kilobits per second. + // default = 1000000 + optional uint64 kbps = 4; -// Sets state of LACP member ports configured on LAG. -message StateProtocolLacpMemberPorts { + // Megabits per second. + // default = 1000 + optional uint64 mbps = 5; - // The names of LAG members (ports) for which the state has to be applied. An empty - // or null list will control all LAG members. - // - // x-constraint: - // - /components/schemas/Port/properties/name - // - // - // x-constraint: - // - /components/schemas/Port/properties/name - // - repeated string lag_member_names = 1; + // Gigabits per second. + // default = 1 + optional uint32 gbps = 6; - message State { - enum Enum { - unspecified = 0; - up = 1; - down = 2; - } - } - // The desired LACP member port state. - // required = true - optional State.Enum state = 2; + // The percentage of a port location's available bandwidth. + // default = 100 + optional float percentage = 7; } -// Sets state of configured BGP peers. -message StateProtocolBgp { +// A container for different transmit durations. +message FlowDuration { message Choice { enum Enum { unspecified = 0; - peers = 1; + fixed_packets = 1; + fixed_seconds = 2; + burst = 3; + continuous = 4; } } - // Description missing in models - // required = true + // A choice used to determine the type of duration. + // default = Choice.Enum.continuous optional Choice.Enum choice = 1; // Description missing in models - StateProtocolBgpPeers peers = 2; -} + FlowFixedPackets fixed_packets = 2; -// Sets state of configured BGP peers. -message StateProtocolBgpPeers { + // Description missing in models + FlowFixedSeconds fixed_seconds = 3; - // The names of BGP peers for which the state has to be applied. An empty or null list - // will control all BGP peers. - // - // x-constraint: - // - /components/schemas/Bgp.V4Peer/properties/name - // - /components/schemas/Bgp.V6Peer/properties/name - // - // - // x-constraint: - // - /components/schemas/Bgp.V4Peer/properties/name - // - /components/schemas/Bgp.V6Peer/properties/name - // - repeated string peer_names = 1; - - message State { - enum Enum { - unspecified = 0; - up = 1; - down = 2; - } - } - // The desired state of BGP peer. If the desired state is 'up', underlying IP interface(s) - // would be brought up automatically (if not already up), would attempt to bring up - // the BGP session(s) and advertise route(s), if configured. If the desired state is - // 'down', BGP session(s) would be brought down. - // required = true - optional State.Enum state = 2; -} - -// Sets state of configured ISIS routers. -message StateProtocolIsis { - - message Choice { - enum Enum { - unspecified = 0; - routers = 1; - } - } // Description missing in models - // required = true - optional Choice.Enum choice = 1; + FlowBurst burst = 4; // Description missing in models - StateProtocolIsisRouters routers = 2; + FlowContinuous continuous = 5; } -// Sets state of configured ISIS routers. -message StateProtocolIsisRouters { +// Transmit will be continuous and will not stop automatically. +message FlowContinuous { - // The names of ISIS routers for which the state has to be applied. An empty or null - // list will control all ISIS routers. - // - // x-constraint: - // - /components/schemas/Device.IsisRouter/properties/name - // - // - // x-constraint: - // - /components/schemas/Device.IsisRouter/properties/name - // - repeated string router_names = 1; + // The minimum gap between packets expressed as bytes. + // default = 12 + optional uint32 gap = 1; - message State { - enum Enum { - unspecified = 0; - up = 1; - down = 2; - } - } - // The desired state of ISIS router. If the desired state is 'up', would attempt to - // bring up the ISIS session(s) with respective peer(s) and advertise route(s), if configured. - // If the desired state is 'down', would bring down ISIS session(s) with respective - // peer(s). - // required = true - optional State.Enum state = 2; + // Description missing in models + FlowDelay delay = 2; } -// Request for triggering action against configured resources. -message ControlAction { +// The optional container to specify the delay before starting +// transmission of packets. +message FlowDelay { message Choice { enum Enum { unspecified = 0; - protocol = 1; + bytes = 1; + nanoseconds = 2; + microseconds = 3; } } // Description missing in models - // required = true + // default = Choice.Enum.bytes optional Choice.Enum choice = 1; - // Description missing in models - ActionProtocol protocol = 2; + // The delay before starting transmission of packets. + // A value of 0 indicates no delay. + // default = 0 + optional float bytes = 2; + + // The delay before starting transmission of packets. + // A value of 0 indicates no delay. + // default = 0 + optional float nanoseconds = 3; + + // The delay before starting transmission of packets. + // A value of 0 indicates no delay. + // default = 0 + optional float microseconds = 4; } -// Response for action triggered against configured resources along with warnings. -message ControlActionResponse { +// Transmit a fixed number of packets after which the flow will stop. +message FlowFixedPackets { - // List of warnings generated while triggering specified action - repeated string warnings = 1; + // Stop transmit of the flow after this number of packets. + // default = 1 + optional uint32 packets = 1; + + // The minimum gap between packets expressed as bytes. + // default = 12 + optional uint32 gap = 2; // Description missing in models - ActionResponse response = 2; + FlowDelay delay = 3; } -// Response for action triggered against configured resources. -message ActionResponse { +// Transmit for a fixed number of seconds after which the flow will stop. +message FlowFixedSeconds { - message Choice { - enum Enum { - unspecified = 0; - protocol = 1; - } - } - // Description missing in models - // required = true - optional Choice.Enum choice = 1; + // Stop transmit of the flow after this number of seconds. + // default = 1 + optional float seconds = 1; + + // The minimum gap between packets expressed as bytes. + // default = 12 + optional uint32 gap = 2; // Description missing in models - ActionResponseProtocol protocol = 2; + FlowDelay delay = 3; } -// Actions associated with protocols on configured resources. -message ActionProtocol { +// Transmits continuous or fixed burst of packets. +// For continuous burst of packets, it will not automatically stop. +// For fixed burst of packets, it will stop after transmitting fixed number of bursts. +// +message FlowBurst { - message Choice { - enum Enum { - unspecified = 0; - ipv4 = 1; - ipv6 = 2; - bgp = 3; - } - } - // Description missing in models - // required = true - optional Choice.Enum choice = 1; + // The number of packet bursts transmitted per flow. + // A value of 0 implies continuous burst of packets. + // default = 0 + optional uint32 bursts = 1; - // Description missing in models - ActionProtocolIpv4 ipv4 = 2; + // The number of packets transmitted per burst. + // default = 1 + optional uint32 packets = 2; - // Description missing in models - ActionProtocolIpv6 ipv6 = 3; + // The minimum gap between packets expressed as bytes. + // default = 12 + optional uint32 gap = 3; // Description missing in models - ActionProtocolBgp bgp = 4; + FlowDurationInterBurstGap inter_burst_gap = 4; } -// Response for actions associated with protocols on configured resources. -message ActionResponseProtocol { +// The optional container for specifying a gap between bursts. +message FlowDurationInterBurstGap { message Choice { enum Enum { unspecified = 0; - ipv4 = 1; - ipv6 = 2; + bytes = 1; + nanoseconds = 2; + microseconds = 3; } } - // Description missing in models - // required = true + // The type of inter burst gap units. + // default = Choice.Enum.bytes optional Choice.Enum choice = 1; - // Description missing in models - ActionResponseProtocolIpv4 ipv4 = 2; + // The amount of time between bursts expressed in bytes. + // A value of 0 indicates no gap between bursts. + // default = 12 + optional double bytes = 2; - // Description missing in models - ActionResponseProtocolIpv6 ipv6 = 3; + // The amount of time between bursts expressed in nanoseconds. + // A value of 0 indicates no gap between bursts. + // default = 96 + optional double nanoseconds = 3; + + // The amount of time between bursts expressed in microseconds. + // A value of 0 indicates no gap between bursts. + // default = 0.096 + optional double microseconds = 4; } -// Actions associated with IPv4 on configured resources. -message ActionProtocolIpv4 { +// The optional container for configuring flow metrics. +message FlowMetrics { - message Choice { - enum Enum { - unspecified = 0; - ping = 1; - } - } - // Description missing in models - // required = true - optional Choice.Enum choice = 1; + // Enables flow metrics. + // Enabling this option may affect the resultant packet payload due to + // additional instrumentation data. + // default = False + optional bool enable = 1; - // Description missing in models - ActionProtocolIpv4Ping ping = 2; + // Enables additional flow metric loss calculation. + // default = False + optional bool loss = 2; + + // Rx Tx ratio. + FlowRxTxRatio rx_tx_ratio = 6; + + // Enables additional flow metric first and last timestamps. + // default = False + optional bool timestamps = 3; + + // Latency metrics. + FlowLatencyMetrics latency = 4; + + // Predefined metric tags + FlowPredefinedTags predefined_metric_tags = 5; } -// Response for actions associated with IPv4 on configured resources. -message ActionResponseProtocolIpv4 { +// The optional container for per flow latency metric configuration. +message FlowLatencyMetrics { - message Choice { + // True to enable latency metrics using timestamps. + // + // Enabling this option may affect the resultant packet payload due to + // additional instrumentation data. + // default = False + optional bool enable = 1; + + message Mode { enum Enum { unspecified = 0; - ping = 1; + store_forward = 1; + cut_through = 2; } } - // Description missing in models - // required = true - optional Choice.Enum choice = 1; - - // Description missing in models - ActionResponseProtocolIpv4Ping ping = 2; -} - -// Request for initiating ping between multiple source and destination pairs. -message ActionProtocolIpv4Ping { - - // List of IPv4 ping requests. - repeated ActionProtocolIpv4PingRequest requests = 1; -} - -// Under Review: Most ping request parameters are still TBD. -// -// Under Review: Most ping request parameters are still TBD. -// -// Request for initiating ping between a single source and destination pair. -// For ping request, 1 IPv4 ICMP Echo Request shall be sent and wait for ping response -// to either succeed or time out. The API wait timeout for each request shall be 300ms. -message ActionProtocolIpv4PingRequest { - - // Name of source IPv4 interface to be used. + // Select the type of latency measurement. The different types of + // latency measurements are: // - // x-constraint: - // - /components/schemas/Device.Ipv4/properties/name // + // store_forward: + // The time interval starting when the last bit of the frame leaves the + // sending port and ending when the first bit of the frame is seen on + // the receiving port (LIFO). This is based on the RFC 1242 standard. // - // x-constraint: - // - /components/schemas/Device.Ipv4/properties/name // - optional string src_name = 1; - - // Destination IPv4 address to ping. - optional string dst_ip = 2; -} - -// Response for ping initiated between multiple source and destination pairs. -message ActionResponseProtocolIpv4Ping { - - // List of responses for IPv4 ping responses. - repeated ActionResponseProtocolIpv4PingResponse responses = 1; + // cut_through: + // The time interval starting when the first bit of the frame leaves + // the sending port and ending when the first bit of the frame is seen + // on the receiving port (FIFO). This is based on the RFC 1242 + // standard. + // default = Mode.Enum.store_forward + optional Mode.Enum mode = 2; } -// Response for ping initiated between a single source and destination pair. -message ActionResponseProtocolIpv4PingResponse { - - // Name of source IPv4 interface used for ping. - // - // x-constraint: - // - /components/schemas/Device.Ipv4/properties/name - // - // - // x-constraint: - // - /components/schemas/Device.Ipv4/properties/name - // - // required = true - optional string src_name = 1; - - // Destination IPv4 address used for ping. - // required = true - optional string dst_ip = 2; +// List of predefined flow tracking options, outside packet fields, that can be enabled. +message FlowPredefinedTags { - message Result { - enum Enum { - unspecified = 0; - succeeded = 1; - failed = 2; - } - } - // Result of the ping request. - // required = true - optional Result.Enum result = 3; + // Enables Rx port or lag level disaggregation with predefined metrics tag name set + // as rx_name. + // The Rx port / lag names can be found under tagged_metrics tag names in flow metrics + // response. + // default = False + optional bool rx_name = 1; } -// Actions associated with IPv6 on configured resources. -message ActionProtocolIpv6 { +// Rx Tx ratio is the ratio of expected number of Rx packets across all Rx ports to +// the Tx packets +// for the configured flow. It is a factor by which the Tx packet count is multiplied +// to calculate +// the sum of expected Rx packet count, across all Rx ports. This will be used to calculate +// loss +// percentage of flow at aggregate level. +message FlowRxTxRatio { message Choice { enum Enum { unspecified = 0; - ping = 1; + rx_count = 1; + value = 2; } } // Description missing in models - // required = true + // default = Choice.Enum.value optional Choice.Enum choice = 1; // Description missing in models - ActionProtocolIpv6Ping ping = 2; + FlowRxTxRatioRxCount rx_count = 2; + + // Should be a positive, non-zero value. The default value of 1, is when the Rx packet + // count across + // all ports is expected to match the Tx packet count. A custom integer value (>1) can + // be specified for + // loss calculation for cases when there are multiple destination addresses configured + // within one flow, + // but DUT is configured to replicate only to a subset of Rx ports. For cases when Tx + // side generates two + // packets from each source in 1:1 protection mode but only one of the two packets are + // received by the + // Rx port, we may need to specify a fractional value instead. + // default = 1.0 + optional float value = 3; } -// Response for actions associated with IPv6 on configured resources. -message ActionResponseProtocolIpv6 { +// This is for cases where one copy of Tx packet is received on all Rx ports and so +// the sum total of Rx packets +// received across all Rx ports is a multiple of Rx port count and Tx packets. +message FlowRxTxRatioRxCount { +} - message Choice { - enum Enum { - unspecified = 0; - ping = 1; - } - } - // Description missing in models - // required = true - optional Choice.Enum choice = 1; +// The optional container for event configuration. +message Event { + + // True to enable all events. + // Enabling this option may affect the resultant packet payload due to + // additional instrumentation data. + // default = False + optional bool enable = 1; // Description missing in models - ActionResponseProtocolIpv6Ping ping = 2; -} + EventLink link = 2; -// Request for initiating ping between multiple source and destination pairs. -message ActionProtocolIpv6Ping { + // Description missing in models + EventRxRateThreshold rx_rate_threshold = 3; - // List of IPv6 ping requests. - repeated ActionProtocolIpv6PingRequest requests = 1; + // Description missing in models + EventRouteAdvertiseWithdraw route_advertise_withdraw = 4; } -// Under Review: Most ping request parameters are still TBD. -// -// Under Review: Most ping request parameters are still TBD. -// -// Request for initiating ping between a single source and destination pair. -// For ping request, 1 IPv6 ICMP Echo Request shall be sent and wait for ping response -// to either succeed or time out. The API wait timeout for each request shall be 300ms. -message ActionProtocolIpv6PingRequest { +// The optional container for rx rate threshold event configuration. +message EventRxRateThreshold { - // Name of source IPv6 interface to be used. - // - // x-constraint: - // - /components/schemas/Device.Ipv6/properties/name - // - // - // x-constraint: - // - /components/schemas/Device.Ipv6/properties/name - // - optional string src_name = 1; + // True to enable the rx_rate_threshold event. + // Enabling this option may affect the resultant packet payload due to + // additional instrumentation data. + // default = False + optional bool enable = 1; - // Destination IPv6 address to ping. - optional string dst_ip = 2; + // True to enable notifications when the rx rate of a flow passes above + // or below the threshold value. + // default = 95 + optional float threshold = 2; } -// Response for ping initiated between multiple source and destination pairs. -message ActionResponseProtocolIpv6Ping { +// The optional container for link up/down event configuration. +message EventLink { - // List of responses for IPv6 ping responses. - repeated ActionResponseProtocolIpv6PingResponse responses = 1; + // True to enable notifications when a link up/down event occurs. + // default = False + optional bool enable = 1; } -// Response for ping initiated between a single source and destination pair. -message ActionResponseProtocolIpv6PingResponse { +// The optional container for route advertise/withdraw event configuration. +message EventRouteAdvertiseWithdraw { - // Name of source IPv6 interface used for ping. - // - // x-constraint: - // - /components/schemas/Device.Ipv6/properties/name - // - // - // x-constraint: - // - /components/schemas/Device.Ipv6/properties/name - // - // required = true - optional string src_name = 1; + // True to enable notifications when a route advertise/withdraw + // event occurs. + // default = False + optional bool enable = 1; +} - // Destination IPv6 address used for ping. - // required = true - optional string dst_ip = 2; +// Description missing in models +message EventRequest { - message Result { + message Type { enum Enum { unspecified = 0; - succeeded = 1; - failed = 2; + link_down = 1; + link_up = 2; + route_withdraw = 3; + route_advertise = 4; + flow_rx_rate_above_threshold = 5; + flow_rx_rate_below_threshold = 6; } } - // Result of the ping request. - // required = true - optional Result.Enum result = 3; + // Constrain the events being returned by specifying event types. + // If the list is empty then all event types will be returned. + repeated Type.Enum type = 1; + + // Constrain the events being returned by specifying event sources. + // If the list is empty then all event sources will be returned. + // + // x-constraint: + // - /components/schemas/Port/properties/name + // - /components/schemas/Bgp.V4RouteRange/name + // - /components/schemas/Bgp.V6RouteRange/name + // + repeated string source = 2; } -// Actions associated with BGP on configured resources. -message ActionProtocolBgp { - - message Choice { - enum Enum { - unspecified = 0; - notification = 1; - initiate_graceful_restart = 2; - } - } - // Description missing in models - // required = true - optional Choice.Enum choice = 1; +// A container that describes what events a system should provide and +// optionally where to publish them. +message EventSubscription { // Description missing in models - ActionProtocolBgpNotification notification = 2; + EventRequest events = 1; - // Description missing in models - ActionProtocolBgpInitiateGracefulRestart initiate_graceful_restart = 3; + // Indicates where a client wants to be notified of the events set in + // the events property. + // If this property is empty or null then no event notifications will + // be forwarded. + optional string callback_url = 2; } -// A NOTIFICATION message is sent when an error is detected with the BGP session, such -// as hold timer expiring, misconfigured AS number or a BGP session reset is requested. -// This causes the BGP connection to close. Send explicit NOTIFICATIONs for list of -// specified BGP peers. If a user wants to send custom Error Code and Error Subcode -// the custom object should be configured. A user can send IANA defined BGP NOTIFICATIONs -// according to https://www.iana.org/assignments/bgp-parameters/bgp-parameters.xhtml. -// -message ActionProtocolBgpNotification { - - // The names of BGP Peers to send NOTIFICATION to. If no name is specified then NOTIFICATION - // will be sent to all configured BGP peers. - // - // x-constraint: - // - /components/schemas/Device.Bgp/properties/name - // - // - // x-constraint: - // - /components/schemas/Device.Bgp/properties/name - // - repeated string names = 1; - - message Choice { - enum Enum { - unspecified = 0; - cease = 1; - message_header_error = 2; - open_message_error = 3; - update_message_error = 4; - hold_timer_expired = 5; - finite_state_machine_error = 6; - custom = 7; - } - } - // Each BGP NOTIFICATION message includes an Error Code field indicating what type of - // problem occurred. For certain Error Codes, an Error Subcode field provides additional - // details about the specific nature of the problem. The choice value will provide - // the Error Code used in NOTIFICATION message. The Subcode can be set for each of - // the corresponding errors except for Hold Timer Expired error and BGP Finite State - // Machine error. In both of these cases Subcode 0 will be sent. If a user wants to - // use non zero Sub Code then custom choice can be used. - // default = Choice.Enum.cease - optional Choice.Enum choice = 2; +// Configuration of LLDP protocol IEEE Ref: https://www.ieee802.org/1/files/public/docs2002/lldp-protocol-00.pdf +message Lldp { - // Description missing in models - DeviceBgpCeaseError cease = 3; + // The unique name of the object on which LLDP is running. + // required = true + LldpConnection connection = 1; - // Description missing in models - DeviceBgpMessageHeaderError message_header_error = 4; + // The Chassis ID is a mandatory TLV which identifies the chassis component of the endpoint + // identifier associated with the transmitting LLDP agent. If mac address is specified + // it should be in colon seperated mac address format. + LldpChassisId chassis_id = 2; - // Description missing in models - DeviceBgpOpenMessageError open_message_error = 5; + // The Port ID is a mandatory TLV which identifies the port component of the endpoint + // identifier associated with the transmitting LLDP agent. If the specified port is + // an IEEE 802.3 Repeater port, then this TLV is optional. + LldpPortId port_id = 3; - // Description missing in models - DeviceBgpUpdateMessageError update_message_error = 6; + // The system name field shall contain an alpha-numeric string that indicates the system's + // administratively assigned name. The system name should be the system's fully qualified + // domain name. If implementations support IETF RFC 3418, the sysName object should + // be used for this field. + LldpSystemName system_name = 4; - // Description missing in models - DeviceBgpHoldTimerExpired hold_timer_expired = 7; + // Specifies the amount of time in seconds a receiving device should maintain LLDP information + // sent by the device before discarding it. + // default = 120 + optional uint32 hold_time = 5; - // Description missing in models - DeviceBgpFiniteStateMachineError finite_state_machine_error = 8; + // Set the transmission frequency of LLDP updates in seconds. + // default = 30 + optional uint32 advertisement_interval = 6; - // Description missing in models - DeviceBgpCustomError custom = 9; + // Globally unique name of an object. It also serves as the primary key for arrays of + // objects. + // required = true + optional string name = 7; } -// Initiates BGP Graceful Restart process for the selected BGP peers. If no name is -// specified then Graceful Restart will be sent to all configured BGP peers. -message ActionProtocolBgpInitiateGracefulRestart { +// LLDP connection to a test port. In future if more connection options arise LLDP +// connection object will be enhanced. +message LldpConnection { - // The names of device BGP peers objects to control. - // - // x-constraint: - // - /components/schemas/Device.Bgp/properties/name - // + message Choice { + enum Enum { + unspecified = 0; + port_name = 1; + } + } + // The name of the test port or other connection objects on which LLDP is configured. + optional Choice.Enum choice = 1; + + // Name of the test port on which LLDP is configured on. // // x-constraint: - // - /components/schemas/Device.Bgp/properties/name + // - /components/schemas/Port/properties/name // - repeated string peer_names = 1; - - // Duration (in seconds) after which selected BGP peers will initiate - // Graceful restart by sending the Open Message with Restart State bit set in the Graceful - // Restart capability. - // default = 30 - optional uint32 restart_delay = 2; + optional string port_name = 2; } -// Request to traffic generator for metrics of choice. -message MetricsRequest { +// The Chassis ID is a mandatory TLV which identifies the chassis component of the endpoint +// identifier associated with the transmitting LLDP agent. This field identifies the +// format and source of the chassis identifier string. It is based on the enumerator +// defined by the LldpChassisIdSubtype object from IEEE 802.1AB MIB. +message LldpChassisId { message Choice { enum Enum { unspecified = 0; - port = 1; - flow = 2; - bgpv4 = 3; - bgpv6 = 4; - isis = 5; - lag = 6; - lacp = 7; - lldp = 8; - rsvp = 9; + mac_address_subtype = 1; + interface_name_subtype = 2; + local_subtype = 3; } } - // Description missing in models - // default = Choice.Enum.port + // Chassis ID subtype to be used in Chassis ID TLV. + // default = Choice.Enum.mac_address_subtype optional Choice.Enum choice = 1; // Description missing in models - PortMetricsRequest port = 2; - - // Description missing in models - FlowMetricsRequest flow = 3; + LldpChassisMacSubType mac_address_subtype = 2; - // Description missing in models - Bgpv4MetricsRequest bgpv4 = 4; + // Name of an interface of the chassis that uniquely identifies the chassis. + optional string interface_name_subtype = 3; - // Description missing in models - Bgpv6MetricsRequest bgpv6 = 5; + // Locally assigned name of the chassis. + optional string local_subtype = 4; +} - // Description missing in models - IsisMetricsRequest isis = 6; +// The Port ID is a mandatory TLV which identifies the port component of the endpoint +// identifier associated with the transmitting LLDP agent.This field identifies the +// format and source of the port identifier string. It is based on the enumerator defined +// by the PtopoPortIdType object from RFC2922. +message LldpPortId { - // Description missing in models - LagMetricsRequest lag = 7; + message Choice { + enum Enum { + unspecified = 0; + mac_address_subtype = 1; + interface_name_subtype = 2; + local_subtype = 3; + } + } + // Port ID subtype to be used in Port ID TLV. + // default = Choice.Enum.interface_name_subtype + optional Choice.Enum choice = 1; - // Description missing in models - LacpMetricsRequest lacp = 8; + // The MAC Address configured in the Port ID TLV. + optional string mac_address_subtype = 2; // Description missing in models - LldpMetricsRequest lldp = 9; + LldpPortInterfaceNameSubType interface_name_subtype = 3; - // Description missing in models - RsvpMetricsRequest rsvp = 10; + // The Locally assigned name configured in the Port ID TLV. + optional string local_subtype = 4; } -// Response containing chosen traffic generator metrics. -message MetricsResponse { +// The MAC address configured in the Chassis ID TLV. +message LldpChassisMacSubType { message Choice { enum Enum { unspecified = 0; - flow_metrics = 1; - port_metrics = 2; - bgpv4_metrics = 3; - bgpv6_metrics = 4; - isis_metrics = 5; - lag_metrics = 6; - lacp_metrics = 7; - lldp_metrics = 8; - rsvp_metrics = 9; + auto = 1; + value = 2; } } - // Description missing in models - // default = Choice.Enum.port_metrics + // In auto mode the system generated value is set for this property, while if the choice + // is selected as value, a user configured value will be used for this property. + // default = Choice.Enum.auto optional Choice.Enum choice = 1; - // Description missing in models - repeated PortMetric port_metrics = 2; + // The OTG implementation must provide a system generated value for this property. + optional string auto = 2; - // Description missing in models - repeated FlowMetric flow_metrics = 3; + // User must specify a value if mode is not auto. + optional string value = 3; +} - // Description missing in models - repeated Bgpv4Metric bgpv4_metrics = 4; +// The interface name configured in the Port ID TLV. +message LldpPortInterfaceNameSubType { - // Description missing in models - repeated Bgpv6Metric bgpv6_metrics = 5; + message Choice { + enum Enum { + unspecified = 0; + auto = 1; + value = 2; + } + } + // In auto mode the system generated value is set for this property, while if the choice + // is selected as value, a user configured value will be used for this property. + // default = Choice.Enum.auto + optional Choice.Enum choice = 1; - // Description missing in models - repeated IsisMetric isis_metrics = 6; + // The OTG implementation must provide a system generated value for this property. + optional string auto = 2; - // Description missing in models - repeated LagMetric lag_metrics = 7; + // User must specify a value if mode is not auto. + optional string value = 3; +} - // Description missing in models - repeated LacpMetric lacp_metrics = 8; +// The system Name configured in the System Name TLV. +message LldpSystemName { - // Description missing in models - repeated LldpMetric lldp_metrics = 9; + message Choice { + enum Enum { + unspecified = 0; + auto = 1; + value = 2; + } + } + // In auto mode the system generated value is set for this property, while if the choice + // is selected as value, a user configured value will be used for this property. + // default = Choice.Enum.auto + optional Choice.Enum choice = 1; - // Description missing in models - repeated RsvpMetric rsvp_metrics = 10; + // The OTG implementation must provide a system generated value for this property. + optional string auto = 2; + + // User must specify a value if mode is not auto. + optional string value = 3; } -// The port result request to the traffic generator -message PortMetricsRequest { +// Error response generated while serving API request. +message Error { - // The names of objects to return results for. An empty list will return all port row - // results. - // - // x-constraint: - // - /components/schemas/Port/properties/name - // - // - // x-constraint: - // - /components/schemas/Port/properties/name - // - repeated string port_names = 1; + // Numeric status code based on the underlying transport being used. + // The API server MUST set this code explicitly based on following references: + // - HTTP 4xx errors: https://datatracker.ietf.org/doc/html/rfc9110#section-15.5 + // - HTTP 5xx errors: https://datatracker.ietf.org/doc/html/rfc9110#section-15.6 + // - gRPC errors: https://grpc.github.io/grpc/core/md_doc_statuscodes.html + // required = true + optional int32 code = 1; - message ColumnNames { + message Kind { enum Enum { unspecified = 0; - transmit = 1; - location = 2; - link = 3; - capture = 4; - frames_tx = 5; - frames_rx = 6; - bytes_tx = 7; - bytes_rx = 8; - frames_tx_rate = 9; - frames_rx_rate = 10; - bytes_tx_rate = 11; - bytes_rx_rate = 12; + validation = 1; + internal = 2; } } - // The list of column names that the returned result set will contain. If the list is - // empty then all columns will be returned. The name of the port cannot be excluded. - repeated ColumnNames.Enum column_names = 2; + // Classification of error originating from within API server that may not be mapped + // to the value in `code`. + // Absence of this field may indicate that the error did not originate from within API + // server. + optional Kind.Enum kind = 2; + + // List of error messages generated while executing the request. + repeated string errors = 3; } -// Description missing in models -message PortMetric { +// A list of warnings that have occurred while executing the request. +message Warning { - // The name of a configured port - // - // x-constraint: - // - /components/schemas/Port/properties/name - // - // - // x-constraint: - // - /components/schemas/Port/properties/name - // - optional string name = 1; + // A list of any system specific warnings that have occurred while + // executing the request. + repeated string warnings = 1; +} - // The state of the connection to the test port location. The format should be the configured - // port location along with any custom connection state message. - optional string location = 2; +// Request for updating specific attributes of resources in traffic generator +message ConfigUpdate { - message Link { + message Choice { enum Enum { unspecified = 0; - up = 1; - down = 2; + flows = 1; } } - // The state of the test port link The string can be up, down or a custom error message. - optional Link.Enum link = 3; + // Description missing in models + optional Choice.Enum choice = 1; - message Capture { + // Description missing in models + FlowsUpdate flows = 2; +} + +// A container of flows with associated properties to be updated without affecting the +// flows current transmit state. +message FlowsUpdate { + + message PropertyNames { enum Enum { unspecified = 0; - started = 1; - stopped = 2; + rate = 1; + size = 2; } } - // The state of the test port capture infrastructure. The string can be started, stopped - // or a custom error message. - optional Capture.Enum capture = 4; - - // The current total number of frames transmitted - optional uint64 frames_tx = 5; + // Flow properties to be updated without affecting the transmit state. + repeated PropertyNames.Enum property_names = 1; - // The current total number of valid frames received - optional uint64 frames_rx = 6; + // The list of configured flows for which given property will be updated. + repeated Flow flows = 2; +} - // The current total number of bytes transmitted - optional uint64 bytes_tx = 7; +// Request for setting operational state of configured resources. +message ControlState { - // The current total number of valid bytes received - optional uint64 bytes_rx = 8; + message Choice { + enum Enum { + unspecified = 0; + port = 1; + protocol = 2; + traffic = 3; + } + } + // Description missing in models + // required = true + optional Choice.Enum choice = 1; - // The current rate of frames transmitted - optional float frames_tx_rate = 9; + // Description missing in models + StatePort port = 2; - // The current rate of valid frames received - optional float frames_rx_rate = 10; + // Description missing in models + StateProtocol protocol = 3; - // The current rate of bytes transmitted - optional float bytes_tx_rate = 11; + // Description missing in models + StateTraffic traffic = 4; +} - // The current rate of bytes received - optional float bytes_rx_rate = 12; +// States associated with configured ports. +message StatePort { - message Transmit { + message Choice { enum Enum { unspecified = 0; - started = 1; - stopped = 2; + link = 1; + capture = 2; } } - // The transmit state of the flow. - optional Transmit.Enum transmit = 13; -} + // Description missing in models + // required = true + optional Choice.Enum choice = 1; -// The container for a flow metric request. -message FlowMetricsRequest { + // Description missing in models + StatePortLink link = 2; - // Flow metrics will be retrieved for these flow names. - // If no flow names are specified then all flows will be returned. - // - // x-constraint: - // - /components/schemas/Flow/properties/name - // - // - // x-constraint: - // - /components/schemas/Flow/properties/name - // - repeated string flow_names = 1; + // Description missing in models + StatePortCapture capture = 3; +} - message MetricNames { +// States associated with configured flows +message StateTraffic { + + message Choice { enum Enum { unspecified = 0; - transmit = 1; - frames_tx = 2; - frames_rx = 3; - bytes_tx = 4; - bytes_rx = 5; - frames_tx_rate = 6; - frames_rx_rate = 7; + flow_transmit = 1; } } - // The list of metric names that the returned result set will contain. If the list is - // empty then all metrics will be returned. - repeated MetricNames.Enum metric_names = 3; + // Description missing in models + // required = true + optional Choice.Enum choice = 1; // Description missing in models - FlowTaggedMetricsFilter tagged_metrics = 4; + StateTrafficFlowTransmit flow_transmit = 2; } -// Filter for tagged metrics -message FlowTaggedMetricsFilter { - - // Controls inclusion/exclusion of tagged metrics when fetching flow metrics. - // default = True - optional bool include = 1; - - // Controls inclusion/exclusion of tagged metrics where each underlying attributes has - // zero value or absent value. - // default = False - optional bool include_empty_metrics = 2; +// States associated with protocols on configured resources. +message StateProtocol { - message MetricNames { + message Choice { enum Enum { unspecified = 0; - frames_tx = 1; - frames_rx = 2; - bytes_tx = 3; - bytes_rx = 4; - frames_tx_rate = 5; - frames_rx_rate = 6; + all = 1; + route = 2; + lacp = 3; + bgp = 4; + isis = 5; } } - // The list of metric names that the returned result set will contain. If the list is - // empty then all metrics will be returned. - repeated MetricNames.Enum metric_names = 3; + // Description missing in models + // required = true + optional Choice.Enum choice = 1; - // List of filters to selectively fetch tagged metrics with certain tag and corresponding - // value. - repeated FlowMetricTagFilter filters = 4; -} + // Description missing in models + StateProtocolAll all = 2; -// A container for filtering ingress and/or egress metric tags. -// The Tx stats may not be applicable in both the request and response filter. -message FlowMetricTagFilter { + // Description missing in models + StateProtocolRoute route = 3; - // A metric tag name that MUST exist in a flow packet or - // flow egress_packet configuration - optional string name = 1; - - // A list of filters that can be applied to the metric tag name. - // By default all values will be included in the flow metric results. - repeated string values = 2; -} + // Description missing in models + StateProtocolLacp lacp = 4; -// A container for flow metrics. -// The container is keyed by the name, port_tx and port_rx. -message FlowMetric { + // Description missing in models + StateProtocolBgp bgp = 5; - // The name of the flow - optional string name = 1; + // Description missing in models + StateProtocolIsis isis = 6; +} - // The name of the transmit port - optional string port_tx = 2; +// Sets the link of configured ports. +message StatePortLink { - // The name of the receive port - optional string port_rx = 3; + // The names of target ports. An empty or null list will target all ports. + // + // x-constraint: + // - /components/schemas/Port/properties/name + // + repeated string port_names = 1; - message Transmit { + message State { enum Enum { unspecified = 0; - started = 1; - stopped = 2; - paused = 3; + up = 1; + down = 2; } } - // The transmit state of the flow. - optional Transmit.Enum transmit = 5; - - // The current total number of frames transmitted - optional uint64 frames_tx = 6; - - // The current total number of valid frames received - optional uint64 frames_rx = 7; - - // The current total number of bytes transmitted - optional uint64 bytes_tx = 8; - - // The current total number of bytes received - optional uint64 bytes_rx = 9; - - // The current rate of frames transmitted - optional float frames_tx_rate = 10; - - // The current rate of valid frames received - optional float frames_rx_rate = 11; - - // The percentage of lost frames - optional float loss = 12; - - // Description missing in models - MetricTimestamp timestamps = 13; - - // Description missing in models - MetricLatency latency = 14; - - // List of metrics corresponding to a set of values applicable - // for configured metric tags in ingress or egress packet header fields of corresponding - // flow. - // The container is keyed by list of tag-value pairs. - repeated FlowTaggedMetric tagged_metrics = 15; + // The link state. + // required = true + optional State.Enum state = 2; } -// Metrics for each set of values applicable for configured -// metric tags in ingress or egress packet header fields of corresponding flow. -// The container is keyed by list of tag-value pairs. -message FlowTaggedMetric { - - // List of tag and value pairs - repeated FlowMetricTag tags = 1; - - // The current total number of frames transmitted - optional uint64 frames_tx = 2; - - // The current total number of valid frames received - optional uint64 frames_rx = 3; +// Sets the capture state of configured ports +message StatePortCapture { - // The current total number of bytes transmitted - optional uint64 bytes_tx = 4; + // The names of ports to which the capture state will be applied to. If the list of + // port_names is empty or null the state will be applied to all configured ports. + // If the list is not empty any port that is not included in the list of port_names + // MUST be ignored and not included in the state change. + // + // x-constraint: + // - /components/schemas/Port/properties/name + // + repeated string port_names = 1; - // The current total number of bytes received - optional uint64 bytes_rx = 5; + message State { + enum Enum { + unspecified = 0; + start = 1; + stop = 2; + } + } + // The capture state. + // required = true + optional State.Enum state = 2; +} - // The current rate of frames transmitted - optional float frames_tx_rate = 6; +// Provides state control of flow transmission. +message StateTrafficFlowTransmit { - // The current rate of valid frames received - optional float frames_rx_rate = 7; + // The names of flows to which the transmit state will be applied to. If the list of + // flow_names is empty or null the state will be applied to all configured flows. + // If the list is not empty any flow that is not included in the list of flow_names + // MUST be ignored and not included in the state change. + // + // x-constraint: + // - /components/schemas/Flow/properties/name + // + repeated string flow_names = 1; - // The percentage of lost frames - optional float loss = 8; + message State { + enum Enum { + unspecified = 0; + start = 1; + stop = 2; + pause = 3; + resume = 4; + } + } + // The transmit state. + // If the value of the state property is 'start' then all flows defined by the 'flow_names' + // property will be started and the metric counters MUST be cleared prior to starting + // the flow(s). + // If the value of the state property is 'stop' then all flows defined by the 'flow_names' + // property will be stopped and the metric counters MUST NOT be cleared. + // If the value of the state property is 'pause' then all flows defined by the 'flow_names' + // property will be paused and the metric counters MUST NOT be cleared. + // If the value of the state property is 'resume' then any paused flows defined by the + // 'flow_names' property will start transmit at the point at which they were paused. + // Any flow that is stopped will start transmit at the beginning of the flow. The flow(s) + // MUST NOT have their metric counters cleared. + // required = true + optional State.Enum state = 2; +} - // Description missing in models - MetricTimestamp timestamps = 9; +// Sets all configured protocols to `start` or `stop` state. +// Setting protocol state to `start` shall be a no-op if preceding `set_config` API +// call was made with `config.options.protocol_options.auto_start_all` set to `true` +// or if all the configured protocols are already started. +message StateProtocolAll { - // Description missing in models - MetricLatency latency = 10; + message State { + enum Enum { + unspecified = 0; + start = 1; + stop = 2; + } + } + // Protocol states + // required = true + optional State.Enum state = 1; } -// Description missing in models -message FlowMetricTag { +// Sets the state of configured routes +message StateProtocolRoute { - // Name of packet field metric tag - optional string name = 1; + // The names of device route objects to control. If no names are specified then all + // route objects that match the x-constraint will be affected. + // + // x-constraint: + // - /components/schemas/Bgp.V4RouteRange/properties/name + // - /components/schemas/Bgp.V6RouteRange/properties/name + // - /components/schemas/Isis.V4RouteRange/properties/name + // - /components/schemas/Isis.V6RouteRange/properties/name + // + repeated string names = 1; - // Description missing in models - FlowMetricTagValue value = 2; + message State { + enum Enum { + unspecified = 0; + withdraw = 1; + advertise = 2; + } + } + // Route states + // required = true + optional State.Enum state = 2; } -// A container for metric tag value -message FlowMetricTagValue { +// Sets state of configured LACP +message StateProtocolLacp { message Choice { enum Enum { unspecified = 0; - hex = 1; - str = 2; + admin = 1; + member_ports = 2; } } - // Available formats for metric tag value - // default = Choice.Enum.hex + // Description missing in models + // required = true optional Choice.Enum choice = 1; - // Value represented in hexadecimal format - optional string hex = 2; + // Description missing in models + StateProtocolLacpAdmin admin = 2; - // Value represented in string format - optional string str = 3; + // Description missing in models + StateProtocolLacpMemberPorts member_ports = 3; } -// The container for timestamp metrics. -// The container will be empty if the timestamp has not been configured for -// the flow. -message MetricTimestamp { +// Sets admin state of LACP configured on LAG members +message StateProtocolLacpAdmin { - // First timestamp in nanoseconds - optional double first_timestamp_ns = 1; + // The names of LAG members (ports) for which the state has to be applied. An empty + // or null list will control all LAG members. + // + // x-constraint: + // - /components/schemas/Port/properties/name + // + repeated string lag_member_names = 1; - // Last timestamp in nanoseconds - optional double last_timestamp_ns = 2; + message State { + enum Enum { + unspecified = 0; + up = 1; + down = 2; + } + } + // The LACP Member admin state. 'up' will send LACPDUs with 'sync' flag set on selected + // member ports. 'down' will send LACPDUs with 'sync' flag unset on selected member + // ports. + // required = true + optional State.Enum state = 2; } -// The container for latency metrics. -// The min/max/avg values are dependent on the type of latency measurement -// mode that is configured. -// The container will be empty if the latency has not been configured for -// the flow. -message MetricLatency { - - // Minimum latency in nanoseconds - optional double minimum_ns = 1; - - // Maximum latency in nanoseconds - optional double maximum_ns = 2; - - // Average latency in nanoseconds - optional double average_ns = 3; -} - -// The request to retrieve BGPv4 per peer metrics/statistics. -message Bgpv4MetricsRequest { +// Sets state of LACP member ports configured on LAG. +message StateProtocolLacpMemberPorts { - // The names of BGPv4 peers to return results for. An empty list will return results - // for all BGPv4 peers. - // - // x-constraint: - // - /components/schemas/Bgp.V4peer/properties/name - // + // The names of LAG members (ports) for which the state has to be applied. An empty + // or null list will control all LAG members. // // x-constraint: - // - /components/schemas/Bgp.V4peer/properties/name + // - /components/schemas/Port/properties/name // - repeated string peer_names = 1; + repeated string lag_member_names = 1; - message ColumnNames { + message State { enum Enum { unspecified = 0; - session_state = 1; - session_flap_count = 2; - routes_advertised = 3; - routes_received = 4; - route_withdraws_sent = 5; - route_withdraws_received = 6; - updates_sent = 7; - updates_received = 8; - opens_sent = 9; - opens_received = 10; - keepalives_sent = 11; - keepalives_received = 12; - notifications_sent = 13; - notifications_received = 14; - fsm_state = 15; - end_of_rib_received = 16; + up = 1; + down = 2; } } - // The list of column names that the returned result set will contain. If the list is - // empty then all columns will be returned except for any result_groups. The name of - // the BGPv4 peer cannot be excluded. - repeated ColumnNames.Enum column_names = 2; + // The desired LACP member port state. + // required = true + optional State.Enum state = 2; } -// BGPv4 per peer statistics information. -message Bgpv4Metric { - - // The name of a configured BGPv4 peer. - optional string name = 1; +// Sets state of configured BGP peers. +message StateProtocolBgp { - message SessionState { + message Choice { enum Enum { unspecified = 0; - up = 1; - down = 2; + peers = 1; } } - // Session state as up or down. Up refers to an Established state and Down refers to - // any other state. - optional SessionState.Enum session_state = 2; - - // Number of times the session went from Up to Down state. - optional uint64 session_flap_count = 3; - - // Number of routes advertised. - optional uint64 routes_advertised = 4; - - // Number of routes received. - optional uint64 routes_received = 5; - - // Number of route withdraws sent. - optional uint64 route_withdraws_sent = 6; - - // Number of route withdraws received. - optional uint64 route_withdraws_received = 7; - - // Number of Update messages sent. - optional uint64 updates_sent = 8; - - // Number of Update messages received. - optional uint64 updates_received = 9; - - // Number of Open messages sent. - optional uint64 opens_sent = 10; + // Description missing in models + // required = true + optional Choice.Enum choice = 1; - // Number of Open messages received. - optional uint64 opens_received = 11; + // Description missing in models + StateProtocolBgpPeers peers = 2; +} - // Number of Keepalive messages sent. - optional uint64 keepalives_sent = 12; +// Sets state of configured BGP peers. +message StateProtocolBgpPeers { - // Number of Keepalive messages received. - optional uint64 keepalives_received = 13; + // The names of BGP peers for which the state has to be applied. An empty or null list + // will control all BGP peers. + // + // x-constraint: + // - /components/schemas/Bgp.V4Peer/properties/name + // - /components/schemas/Bgp.V6Peer/properties/name + // + repeated string peer_names = 1; - // Number of Notification messages sent. - optional uint64 notifications_sent = 14; + message State { + enum Enum { + unspecified = 0; + up = 1; + down = 2; + } + } + // The desired state of BGP peer. If the desired state is 'up', underlying IP interface(s) + // would be brought up automatically (if not already up), would attempt to bring up + // the BGP session(s) and advertise route(s), if configured. If the desired state is + // 'down', BGP session(s) would be brought down. + // required = true + optional State.Enum state = 2; +} - // Number of Notification messages received. - optional uint64 notifications_received = 15; +// Sets state of configured ISIS routers. +message StateProtocolIsis { - message FsmState { + message Choice { enum Enum { unspecified = 0; - idle = 1; - connect = 2; - active = 3; - opensent = 4; - openconfirm = 5; - established = 6; + routers = 1; } } - // BGP peer FSM (Finite State Machine) state as Idle, Connect, Active, OpenSent, OpenConfirm - // and Established. In all the states except Established the BGP session is down. Idle - // refers to the Idle state of the FSM. Connect refers to the state where the session - // is waiting for the underlying transport session to be established. Active refers - // to the state where the session is awaiting for a connection from the remote peer. - // OpenSent refers to the state where the session is in the process of being established. - // The local system has sent an OPEN message. OpenConfirm refers to the state where - // the session is in the process of being established. The local system has sent and - // received an OPEN message and is awaiting a NOTIFICATION or KEEPALIVE message from - // remote peer. Established refers to the state where the BGP session with the peer - // is established. - optional FsmState.Enum fsm_state = 16; + // Description missing in models + // required = true + optional Choice.Enum choice = 1; - // Number of End-of-RIB markers received indicating the completion of the initial routing - // update for a particular address family after the session is established. - // For the IPv4 unicast address family, the End-of-RIB marker is an UPDATE message with - // the minimum length. For any other address family, it is an UPDATE message that contains - // only the MP_UNREACH_NLRI attribute with no withdrawn routes for that . - optional uint64 end_of_rib_received = 17; + // Description missing in models + StateProtocolIsisRouters routers = 2; } -// The request to retrieve BGPv6 per peer metrics/statistics. -message Bgpv6MetricsRequest { +// Sets state of configured ISIS routers. +message StateProtocolIsisRouters { - // The names of BGPv6 peers to return results for. An empty list will return results - // for all BGPv6 peers. - // - // x-constraint: - // - /components/schemas/Bgp.V6peer/properties/name - // + // The names of ISIS routers for which the state has to be applied. An empty or null + // list will control all ISIS routers. // // x-constraint: - // - /components/schemas/Bgp.V6peer/properties/name + // - /components/schemas/Device.IsisRouter/properties/name // - repeated string peer_names = 1; + repeated string router_names = 1; - message ColumnNames { + message State { enum Enum { unspecified = 0; - session_state = 1; - session_flap_count = 2; - routes_advertised = 3; - routes_received = 4; - route_withdraws_sent = 5; - route_withdraws_received = 6; - updates_sent = 7; - updates_received = 8; - opens_sent = 9; - opens_received = 10; - keepalives_sent = 11; - keepalives_received = 12; - notifications_sent = 13; - notifications_received = 14; - fsm_state = 15; - end_of_rib_received = 16; + up = 1; + down = 2; } } - // The list of column names that the returned result set will contain. If the list is - // empty then all columns will be returned except for any result_groups. The name of - // the BGPv6 peer cannot be excluded. - repeated ColumnNames.Enum column_names = 2; + // The desired state of ISIS router. If the desired state is 'up', would attempt to + // bring up the ISIS session(s) with respective peer(s) and advertise route(s), if configured. + // If the desired state is 'down', would bring down ISIS session(s) with respective + // peer(s). + // required = true + optional State.Enum state = 2; } -// BGPv6 per peer statistics information. -message Bgpv6Metric { - - // The name of a configured BGPv6 peer. - optional string name = 1; +// Request for triggering action against configured resources. +message ControlAction { - message SessionState { + message Choice { enum Enum { unspecified = 0; - up = 1; - down = 2; + protocol = 1; } } - // Session state as up or down. Up refers to an Established state and Down refers to - // any other state. - optional SessionState.Enum session_state = 2; + // Description missing in models + // required = true + optional Choice.Enum choice = 1; - // Number of times the session went from Up to Down state. - optional uint64 session_flap_count = 3; + // Description missing in models + ActionProtocol protocol = 2; +} - // Number of routes advertised. - optional uint64 routes_advertised = 4; +// Response for action triggered against configured resources along with warnings. +message ControlActionResponse { - // Number of routes received. - optional uint64 routes_received = 5; + // List of warnings generated while triggering specified action + repeated string warnings = 1; - // Number of route withdraws sent. - optional uint64 route_withdraws_sent = 6; + // Description missing in models + ActionResponse response = 2; +} - // Number of route withdraws received. - optional uint64 route_withdraws_received = 7; +// Response for action triggered against configured resources. +message ActionResponse { - // Number of Update messages sent. - optional uint64 updates_sent = 8; + message Choice { + enum Enum { + unspecified = 0; + protocol = 1; + } + } + // Description missing in models + // required = true + optional Choice.Enum choice = 1; - // Number of Update messages received. - optional uint64 updates_received = 9; + // Description missing in models + ActionResponseProtocol protocol = 2; +} - // Number of Open messages sent. - optional uint64 opens_sent = 10; +// Actions associated with protocols on configured resources. +message ActionProtocol { - // Number of Open messages received. - optional uint64 opens_received = 11; + message Choice { + enum Enum { + unspecified = 0; + ipv4 = 1; + ipv6 = 2; + bgp = 3; + } + } + // Description missing in models + // required = true + optional Choice.Enum choice = 1; - // Number of Keepalive messages sent. - optional uint64 keepalives_sent = 12; + // Description missing in models + ActionProtocolIpv4 ipv4 = 2; - // Number of Keepalive messages received. - optional uint64 keepalives_received = 13; + // Description missing in models + ActionProtocolIpv6 ipv6 = 3; - // Number of Notification messages sent. - optional uint64 notifications_sent = 14; + // Description missing in models + ActionProtocolBgp bgp = 4; +} - // Number of Notification messages received. - optional uint64 notifications_received = 15; +// Response for actions associated with protocols on configured resources. +message ActionResponseProtocol { - message FsmState { + message Choice { enum Enum { unspecified = 0; - idle = 1; - connect = 2; - active = 3; - opensent = 4; - openconfirm = 5; - established = 6; + ipv4 = 1; + ipv6 = 2; } } - // BGP peer FSM (Finite State Machine) state as Idle, Connect, Active, OpenSent, OpenConfirm - // and Established. In all the states except Established the BGP session is down. Idle - // refers to the Idle state of the FSM. Connect refers to the state where the session - // is waiting for the underlying transport session to be established. Active refers - // to the state where the session is awaiting for a connection from the remote peer. - // OpenSent refers to the state where the session is in the process of being established. - // The local system has sent an OPEN message. OpenConfirm refers to the state where - // the session is in the process of being established. The local system has sent and - // received an OPEN message and is awaiting a NOTIFICATION or KEEPALIVE message from - // remote peer. Established refers to the state where the BGP session with the peer - // is established. - optional FsmState.Enum fsm_state = 16; + // Description missing in models + // required = true + optional Choice.Enum choice = 1; - // Number of End-of-RIB markers received indicating the completion of the initial routing - // update for a particular address family after the session is established. - // For the IPv4 unicast address family, the End-of-RIB marker is an UPDATE message with - // the minimum length. For any other address family, it is an UPDATE message that contains - // only the MP_UNREACH_NLRI attribute with no withdrawn routes for that . - optional uint64 end_of_rib_received = 17; -} + // Description missing in models + ActionResponseProtocolIpv4 ipv4 = 2; -// The request to retrieve ISIS per Router metrics/statistics. -message IsisMetricsRequest { + // Description missing in models + ActionResponseProtocolIpv6 ipv6 = 3; +} - // The names of ISIS Routers to return results for. An empty list will return results - // for all ISIS router. - // - // x-constraint: - // - /components/schemas/Device.IsisRouter/properties/name - // - // - // x-constraint: - // - /components/schemas/Device.IsisRouter/properties/name - // - repeated string router_names = 1; +// Actions associated with IPv4 on configured resources. +message ActionProtocolIpv4 { - message ColumnNames { + message Choice { enum Enum { unspecified = 0; - l1_sessions_up = 1; - l1_session_flap = 2; - l1_database_size = 3; - l1_broadcast_hellos_sent = 4; - l1_broadcast_hellos_received = 5; - l1_point_to_point_hellos_sent = 6; - l1_point_to_point_hellos_received = 7; - l1_psnp_sent = 8; - l1_psnp_received = 9; - l1_csnp_sent = 10; - l1_csnp_received = 11; - l1_lsp_sent = 12; - l1_lsp_received = 13; - l2_sessions_up = 14; - l2_session_flap = 15; - l2_database_size = 16; - l2_broadcast_hellos_sent = 17; - l2_broadcast_hellos_received = 18; - l2_point_to_point_hellos_sent = 19; - l2_point_to_point_hellos_received = 20; - l2_psnp_sent = 21; - l2_psnp_received = 22; - l2_csnp_sent = 23; - l2_csnp_received = 24; - l2_lsp_sent = 25; - l2_lsp_received = 26; + ping = 1; } } - // The list of column names that the returned result set will contain. If the list is - // empty then all columns will be returned except for any result_groups. The name of - // the ISIS Router cannot be excluded. - repeated ColumnNames.Enum column_names = 2; + // Description missing in models + // required = true + optional Choice.Enum choice = 1; + + // Description missing in models + ActionProtocolIpv4Ping ping = 2; } -// ISIS per router statistics information. -message IsisMetric { +// Response for actions associated with IPv4 on configured resources. +message ActionResponseProtocolIpv4 { - // The name of a configured ISIS router. - optional string name = 1; + message Choice { + enum Enum { + unspecified = 0; + ping = 1; + } + } + // Description missing in models + // required = true + optional Choice.Enum choice = 1; - // The number of Level 1 (L1) sessions that are fully up. - optional uint32 l1_sessions_up = 2; + // Description missing in models + ActionResponseProtocolIpv4Ping ping = 2; +} - // The number of Level 1 Sessions Flap. - optional uint64 l1_session_flap = 3; +// Request for initiating ping between multiple source and destination pairs. +message ActionProtocolIpv4Ping { - // Number of Level 1 Hello messages sent. - optional uint64 l1_broadcast_hellos_sent = 4; + // List of IPv4 ping requests. + repeated ActionProtocolIpv4PingRequest requests = 1; +} - // Number of Level 1 Hello messages received. - optional uint64 l1_broadcast_hellos_received = 5; +// Under Review: Most ping request parameters are still TBD. +// +// Request for initiating ping between a single source and destination pair. +// For ping request, 1 IPv4 ICMP Echo Request shall be sent and wait for ping response +// to either succeed or time out. The API wait timeout for each request shall be 300ms. +message ActionProtocolIpv4PingRequest { - // Number of Level 1 Point-to-Point(P2P) Hello messages sent. - optional uint64 l1_point_to_point_hellos_sent = 6; + // Name of source IPv4 interface to be used. + // + // x-constraint: + // - /components/schemas/Device.Ipv4/properties/name + // + optional string src_name = 1; - // Number of Level 1 Point-to-Point(P2P) Hello messages received. - optional uint64 l1_point_to_point_hellos_received = 7; + // Destination IPv4 address to ping. + optional string dst_ip = 2; +} - // Number of Link State Updates (LSPs) in the Level 1 LSP Databases. - optional uint64 l1_database_size = 8; +// Response for ping initiated between multiple source and destination pairs. +message ActionResponseProtocolIpv4Ping { - // Number of Level 1 (L1) Partial Sequence Number Packet (PSNPs) sent. - optional uint64 l1_psnp_sent = 9; + // List of responses for IPv4 ping responses. + repeated ActionResponseProtocolIpv4PingResponse responses = 1; +} - // Number of Level 1 (L1) Complete Sequence Number Packet (PSNPs) received. - optional uint64 l1_psnp_received = 10; +// Response for ping initiated between a single source and destination pair. +message ActionResponseProtocolIpv4PingResponse { - // Number of Level 1 (L1) Complete Sequence Number Packet (CSNPs) sent. - optional uint64 l1_csnp_sent = 11; + // Name of source IPv4 interface used for ping. + // + // x-constraint: + // - /components/schemas/Device.Ipv4/properties/name + // + // required = true + optional string src_name = 1; - // Number of Level 1 (L1) Complete Sequence Number Packet (CSNPs) received. - optional uint64 l1_csnp_received = 12; + // Destination IPv4 address used for ping. + // required = true + optional string dst_ip = 2; - // Number of Level 1 (L1) Link State Protocol Data Units (LSPs) sent. - optional uint64 l1_lsp_sent = 13; + message Result { + enum Enum { + unspecified = 0; + succeeded = 1; + failed = 2; + } + } + // Result of the ping request. + // required = true + optional Result.Enum result = 3; +} - // Number of Level 1 (L1) Link State Protocol Data Units (LSPs) received. - optional uint64 l1_lsp_received = 14; +// Actions associated with IPv6 on configured resources. +message ActionProtocolIpv6 { - // The number of Level 2 (L2) sessions that are fully up. - optional uint32 l2_sessions_up = 15; + message Choice { + enum Enum { + unspecified = 0; + ping = 1; + } + } + // Description missing in models + // required = true + optional Choice.Enum choice = 1; - // The number of Level 2 Sessions Flap. - optional uint64 l2_session_flap = 16; + // Description missing in models + ActionProtocolIpv6Ping ping = 2; +} - // Number of Level 2 Hello messages sent. - optional uint64 l2_broadcast_hellos_sent = 17; +// Response for actions associated with IPv6 on configured resources. +message ActionResponseProtocolIpv6 { + + message Choice { + enum Enum { + unspecified = 0; + ping = 1; + } + } + // Description missing in models + // required = true + optional Choice.Enum choice = 1; + + // Description missing in models + ActionResponseProtocolIpv6Ping ping = 2; +} + +// Request for initiating ping between multiple source and destination pairs. +message ActionProtocolIpv6Ping { + + // List of IPv6 ping requests. + repeated ActionProtocolIpv6PingRequest requests = 1; +} + +// Under Review: Most ping request parameters are still TBD. +// +// Request for initiating ping between a single source and destination pair. +// For ping request, 1 IPv6 ICMP Echo Request shall be sent and wait for ping response +// to either succeed or time out. The API wait timeout for each request shall be 300ms. +message ActionProtocolIpv6PingRequest { + + // Name of source IPv6 interface to be used. + // + // x-constraint: + // - /components/schemas/Device.Ipv6/properties/name + // + optional string src_name = 1; + + // Destination IPv6 address to ping. + optional string dst_ip = 2; +} + +// Response for ping initiated between multiple source and destination pairs. +message ActionResponseProtocolIpv6Ping { + + // List of responses for IPv6 ping responses. + repeated ActionResponseProtocolIpv6PingResponse responses = 1; +} + +// Response for ping initiated between a single source and destination pair. +message ActionResponseProtocolIpv6PingResponse { + + // Name of source IPv6 interface used for ping. + // + // x-constraint: + // - /components/schemas/Device.Ipv6/properties/name + // + // required = true + optional string src_name = 1; + + // Destination IPv6 address used for ping. + // required = true + optional string dst_ip = 2; + + message Result { + enum Enum { + unspecified = 0; + succeeded = 1; + failed = 2; + } + } + // Result of the ping request. + // required = true + optional Result.Enum result = 3; +} + +// Actions associated with BGP on configured resources. +message ActionProtocolBgp { + + message Choice { + enum Enum { + unspecified = 0; + notification = 1; + initiate_graceful_restart = 2; + } + } + // Description missing in models + // required = true + optional Choice.Enum choice = 1; + + // Description missing in models + ActionProtocolBgpNotification notification = 2; + + // Description missing in models + ActionProtocolBgpInitiateGracefulRestart initiate_graceful_restart = 3; +} + +// A NOTIFICATION message is sent when an error is detected with the BGP session, such +// as hold timer expiring, misconfigured AS number or a BGP session reset is requested. +// This causes the BGP connection to close. Send explicit NOTIFICATIONs for list of +// specified BGP peers. If a user wants to send custom Error Code and Error Subcode +// the custom object should be configured. A user can send IANA defined BGP NOTIFICATIONs +// according to https://www.iana.org/assignments/bgp-parameters/bgp-parameters.xhtml. +// +message ActionProtocolBgpNotification { + + // The names of BGP Peers to send NOTIFICATION to. If no name is specified then NOTIFICATION + // will be sent to all configured BGP peers. + // + // x-constraint: + // - /components/schemas/Device.Bgp/properties/name + // + repeated string names = 1; + + message Choice { + enum Enum { + unspecified = 0; + cease = 1; + message_header_error = 2; + open_message_error = 3; + update_message_error = 4; + hold_timer_expired = 5; + finite_state_machine_error = 6; + custom = 7; + } + } + // Each BGP NOTIFICATION message includes an Error Code field indicating what type of + // problem occurred. For certain Error Codes, an Error Subcode field provides additional + // details about the specific nature of the problem. The choice value will provide + // the Error Code used in NOTIFICATION message. The Subcode can be set for each of + // the corresponding errors except for Hold Timer Expired error and BGP Finite State + // Machine error. In both of these cases Subcode 0 will be sent. If a user wants to + // use non zero Sub Code then custom choice can be used. + // default = Choice.Enum.cease + optional Choice.Enum choice = 2; + + // Description missing in models + DeviceBgpCeaseError cease = 3; + + // Description missing in models + DeviceBgpMessageHeaderError message_header_error = 4; + + // Description missing in models + DeviceBgpOpenMessageError open_message_error = 5; + + // Description missing in models + DeviceBgpUpdateMessageError update_message_error = 6; + + // Description missing in models + DeviceBgpHoldTimerExpired hold_timer_expired = 7; + + // Description missing in models + DeviceBgpFiniteStateMachineError finite_state_machine_error = 8; + + // Description missing in models + DeviceBgpCustomError custom = 9; +} + +// Initiates BGP Graceful Restart process for the selected BGP peers. If no name is +// specified then Graceful Restart will be sent to all configured BGP peers. +message ActionProtocolBgpInitiateGracefulRestart { + + // The names of device BGP peers objects to control. + // + // x-constraint: + // - /components/schemas/Device.Bgp/properties/name + // + repeated string peer_names = 1; + + // Duration (in seconds) after which selected BGP peers will initiate + // Graceful restart by sending the Open Message with Restart State bit set in the Graceful + // Restart capability. + // default = 30 + optional uint32 restart_delay = 2; +} + +// Request to traffic generator for metrics of choice. +message MetricsRequest { + + message Choice { + enum Enum { + unspecified = 0; + port = 1; + flow = 2; + bgpv4 = 3; + bgpv6 = 4; + isis = 5; + lag = 6; + lacp = 7; + lldp = 8; + rsvp = 9; + } + } + // Description missing in models + // default = Choice.Enum.port + optional Choice.Enum choice = 1; + + // Description missing in models + PortMetricsRequest port = 2; + + // Description missing in models + FlowMetricsRequest flow = 3; + + // Description missing in models + Bgpv4MetricsRequest bgpv4 = 4; + + // Description missing in models + Bgpv6MetricsRequest bgpv6 = 5; + + // Description missing in models + IsisMetricsRequest isis = 6; + + // Description missing in models + LagMetricsRequest lag = 7; + + // Description missing in models + LacpMetricsRequest lacp = 8; + + // Description missing in models + LldpMetricsRequest lldp = 9; + + // Description missing in models + RsvpMetricsRequest rsvp = 10; +} + +// Response containing chosen traffic generator metrics. +message MetricsResponse { + + message Choice { + enum Enum { + unspecified = 0; + flow_metrics = 1; + port_metrics = 2; + bgpv4_metrics = 3; + bgpv6_metrics = 4; + isis_metrics = 5; + lag_metrics = 6; + lacp_metrics = 7; + lldp_metrics = 8; + rsvp_metrics = 9; + } + } + // Description missing in models + // default = Choice.Enum.port_metrics + optional Choice.Enum choice = 1; + + // Description missing in models + repeated PortMetric port_metrics = 2; + + // Description missing in models + repeated FlowMetric flow_metrics = 3; + + // Description missing in models + repeated Bgpv4Metric bgpv4_metrics = 4; + + // Description missing in models + repeated Bgpv6Metric bgpv6_metrics = 5; + + // Description missing in models + repeated IsisMetric isis_metrics = 6; + + // Description missing in models + repeated LagMetric lag_metrics = 7; + + // Description missing in models + repeated LacpMetric lacp_metrics = 8; + + // Description missing in models + repeated LldpMetric lldp_metrics = 9; + + // Description missing in models + repeated RsvpMetric rsvp_metrics = 10; +} + +// The port result request to the traffic generator +message PortMetricsRequest { + + // The names of objects to return results for. An empty list will return all port row + // results. + // + // x-constraint: + // - /components/schemas/Port/properties/name + // + repeated string port_names = 1; + + message ColumnNames { + enum Enum { + unspecified = 0; + transmit = 1; + location = 2; + link = 3; + capture = 4; + frames_tx = 5; + frames_rx = 6; + bytes_tx = 7; + bytes_rx = 8; + frames_tx_rate = 9; + frames_rx_rate = 10; + bytes_tx_rate = 11; + bytes_rx_rate = 12; + } + } + // The list of column names that the returned result set will contain. If the list is + // empty then all columns will be returned. The name of the port cannot be excluded. + repeated ColumnNames.Enum column_names = 2; +} + +// Description missing in models +message PortMetric { + + // The name of a configured port + // + // x-constraint: + // - /components/schemas/Port/properties/name + // + optional string name = 1; + + // The state of the connection to the test port location. The format should be the configured + // port location along with any custom connection state message. + optional string location = 2; + + message Link { + enum Enum { + unspecified = 0; + up = 1; + down = 2; + } + } + // The state of the test port link The string can be up, down or a custom error message. + optional Link.Enum link = 3; + + message Capture { + enum Enum { + unspecified = 0; + started = 1; + stopped = 2; + } + } + // The state of the test port capture infrastructure. The string can be started, stopped + // or a custom error message. + optional Capture.Enum capture = 4; + + // The current total number of frames transmitted + optional uint64 frames_tx = 5; + + // The current total number of valid frames received + optional uint64 frames_rx = 6; + + // The current total number of bytes transmitted + optional uint64 bytes_tx = 7; + + // The current total number of valid bytes received + optional uint64 bytes_rx = 8; + + // The current rate of frames transmitted + optional float frames_tx_rate = 9; + + // The current rate of valid frames received + optional float frames_rx_rate = 10; + + // The current rate of bytes transmitted + optional float bytes_tx_rate = 11; + + // The current rate of bytes received + optional float bytes_rx_rate = 12; + + message Transmit { + enum Enum { + unspecified = 0; + started = 1; + stopped = 2; + } + } + // The transmit state of the flow. + optional Transmit.Enum transmit = 13; +} + +// The container for a flow metric request. +message FlowMetricsRequest { + + // Flow metrics will be retrieved for these flow names. + // If no flow names are specified then all flows will be returned. + // + // x-constraint: + // - /components/schemas/Flow/properties/name + // + repeated string flow_names = 1; + + message MetricNames { + enum Enum { + unspecified = 0; + transmit = 1; + frames_tx = 2; + frames_rx = 3; + bytes_tx = 4; + bytes_rx = 5; + frames_tx_rate = 6; + frames_rx_rate = 7; + } + } + // The list of metric names that the returned result set will contain. If the list is + // empty then all metrics will be returned. + repeated MetricNames.Enum metric_names = 3; + + // Description missing in models + FlowTaggedMetricsFilter tagged_metrics = 4; +} + +// Filter for tagged metrics +message FlowTaggedMetricsFilter { + + // Controls inclusion/exclusion of tagged metrics when fetching flow metrics. + // default = True + optional bool include = 1; + + // Controls inclusion/exclusion of tagged metrics where each underlying attributes has + // zero value or absent value. + // default = False + optional bool include_empty_metrics = 2; + + message MetricNames { + enum Enum { + unspecified = 0; + frames_tx = 1; + frames_rx = 2; + bytes_tx = 3; + bytes_rx = 4; + frames_tx_rate = 5; + frames_rx_rate = 6; + } + } + // The list of metric names that the returned result set will contain. If the list is + // empty then all metrics will be returned. + repeated MetricNames.Enum metric_names = 3; + + // List of filters to selectively fetch tagged metrics with certain tag and corresponding + // value. + repeated FlowMetricTagFilter filters = 4; +} + +// A container for filtering ingress and/or egress metric tags. +// The Tx stats may not be applicable in both the request and response filter. +message FlowMetricTagFilter { + + // A metric tag name that MUST exist in a flow packet or + // flow egress_packet configuration + optional string name = 1; + + // A list of filters that can be applied to the metric tag name. + // By default all values will be included in the flow metric results. + repeated string values = 2; +} + +// A container for flow metrics. +// The container is keyed by the name, port_tx and port_rx. +message FlowMetric { + + // The name of the flow + optional string name = 1; + + // The name of the transmit port + optional string port_tx = 2; + + // The name of the receive port + optional string port_rx = 3; + + message Transmit { + enum Enum { + unspecified = 0; + started = 1; + stopped = 2; + paused = 3; + } + } + // The transmit state of the flow. + optional Transmit.Enum transmit = 5; + + // The current total number of frames transmitted + optional uint64 frames_tx = 6; + + // The current total number of valid frames received + optional uint64 frames_rx = 7; + + // The current total number of bytes transmitted + optional uint64 bytes_tx = 8; + + // The current total number of bytes received + optional uint64 bytes_rx = 9; + + // The current rate of frames transmitted + optional float frames_tx_rate = 10; + + // The current rate of valid frames received + optional float frames_rx_rate = 11; + + // The percentage of lost frames + optional float loss = 12; + + // Description missing in models + MetricTimestamp timestamps = 13; + + // Description missing in models + MetricLatency latency = 14; + + // List of metrics corresponding to a set of values applicable + // for configured metric tags in ingress or egress packet header fields of corresponding + // flow. + // The container is keyed by list of tag-value pairs. + repeated FlowTaggedMetric tagged_metrics = 15; +} + +// Metrics for each set of values applicable for configured +// metric tags in ingress or egress packet header fields of corresponding flow. +// The container is keyed by list of tag-value pairs. +message FlowTaggedMetric { + + // List of tag and value pairs + repeated FlowMetricTag tags = 1; + + // The current total number of frames transmitted + optional uint64 frames_tx = 2; + + // The current total number of valid frames received + optional uint64 frames_rx = 3; + + // The current total number of bytes transmitted + optional uint64 bytes_tx = 4; + + // The current total number of bytes received + optional uint64 bytes_rx = 5; + + // The current rate of frames transmitted + optional float frames_tx_rate = 6; + + // The current rate of valid frames received + optional float frames_rx_rate = 7; + + // The percentage of lost frames + optional float loss = 8; + + // Description missing in models + MetricTimestamp timestamps = 9; + + // Description missing in models + MetricLatency latency = 10; +} + +// Description missing in models +message FlowMetricTag { + + // Name of packet field metric tag + optional string name = 1; + + // Description missing in models + FlowMetricTagValue value = 2; +} + +// A container for metric tag value +message FlowMetricTagValue { + + message Choice { + enum Enum { + unspecified = 0; + hex = 1; + str = 2; + } + } + // Available formats for metric tag value + // default = Choice.Enum.hex + optional Choice.Enum choice = 1; + + // Value represented in hexadecimal format + optional string hex = 2; + + // Value represented in string format + optional string str = 3; +} + +// The container for timestamp metrics. +// The container will be empty if the timestamp has not been configured for +// the flow. +message MetricTimestamp { + + // First timestamp in nanoseconds + optional double first_timestamp_ns = 1; + + // Last timestamp in nanoseconds + optional double last_timestamp_ns = 2; +} + +// The container for latency metrics. +// The min/max/avg values are dependent on the type of latency measurement +// mode that is configured. +// The container will be empty if the latency has not been configured for +// the flow. +message MetricLatency { + + // Minimum latency in nanoseconds + optional double minimum_ns = 1; + + // Maximum latency in nanoseconds + optional double maximum_ns = 2; + + // Average latency in nanoseconds + optional double average_ns = 3; +} + +// The request to retrieve BGPv4 per peer metrics/statistics. +message Bgpv4MetricsRequest { + + // The names of BGPv4 peers to return results for. An empty list will return results + // for all BGPv4 peers. + // + // x-constraint: + // - /components/schemas/Bgp.V4peer/properties/name + // + repeated string peer_names = 1; + + message ColumnNames { + enum Enum { + unspecified = 0; + session_state = 1; + session_flap_count = 2; + routes_advertised = 3; + routes_received = 4; + route_withdraws_sent = 5; + route_withdraws_received = 6; + updates_sent = 7; + updates_received = 8; + opens_sent = 9; + opens_received = 10; + keepalives_sent = 11; + keepalives_received = 12; + notifications_sent = 13; + notifications_received = 14; + fsm_state = 15; + end_of_rib_received = 16; + } + } + // The list of column names that the returned result set will contain. If the list is + // empty then all columns will be returned except for any result_groups. The name of + // the BGPv4 peer cannot be excluded. + repeated ColumnNames.Enum column_names = 2; +} + +// BGPv4 per peer statistics information. +message Bgpv4Metric { + + // The name of a configured BGPv4 peer. + optional string name = 1; + + message SessionState { + enum Enum { + unspecified = 0; + up = 1; + down = 2; + } + } + // Session state as up or down. Up refers to an Established state and Down refers to + // any other state. + optional SessionState.Enum session_state = 2; + + // Number of times the session went from Up to Down state. + optional uint64 session_flap_count = 3; + + // Number of routes advertised. + optional uint64 routes_advertised = 4; + + // Number of routes received. + optional uint64 routes_received = 5; + + // Number of route withdraws sent. + optional uint64 route_withdraws_sent = 6; + + // Number of route withdraws received. + optional uint64 route_withdraws_received = 7; + + // Number of Update messages sent. + optional uint64 updates_sent = 8; + + // Number of Update messages received. + optional uint64 updates_received = 9; + + // Number of Open messages sent. + optional uint64 opens_sent = 10; + + // Number of Open messages received. + optional uint64 opens_received = 11; + + // Number of Keepalive messages sent. + optional uint64 keepalives_sent = 12; + + // Number of Keepalive messages received. + optional uint64 keepalives_received = 13; + + // Number of Notification messages sent. + optional uint64 notifications_sent = 14; + + // Number of Notification messages received. + optional uint64 notifications_received = 15; + + message FsmState { + enum Enum { + unspecified = 0; + idle = 1; + connect = 2; + active = 3; + opensent = 4; + openconfirm = 5; + established = 6; + } + } + // BGP peer FSM (Finite State Machine) state as Idle, Connect, Active, OpenSent, OpenConfirm + // and Established. In all the states except Established the BGP session is down. Idle + // refers to the Idle state of the FSM. Connect refers to the state where the session + // is waiting for the underlying transport session to be established. Active refers + // to the state where the session is awaiting for a connection from the remote peer. + // OpenSent refers to the state where the session is in the process of being established. + // The local system has sent an OPEN message. OpenConfirm refers to the state where + // the session is in the process of being established. The local system has sent and + // received an OPEN message and is awaiting a NOTIFICATION or KEEPALIVE message from + // remote peer. Established refers to the state where the BGP session with the peer + // is established. + optional FsmState.Enum fsm_state = 16; + + // Number of End-of-RIB markers received indicating the completion of the initial routing + // update for a particular address family after the session is established. + // For the IPv4 unicast address family, the End-of-RIB marker is an UPDATE message with + // the minimum length. For any other address family, it is an UPDATE message that contains + // only the MP_UNREACH_NLRI attribute with no withdrawn routes for that . + optional uint64 end_of_rib_received = 17; +} + +// The request to retrieve BGPv6 per peer metrics/statistics. +message Bgpv6MetricsRequest { + + // The names of BGPv6 peers to return results for. An empty list will return results + // for all BGPv6 peers. + // + // x-constraint: + // - /components/schemas/Bgp.V6peer/properties/name + // + repeated string peer_names = 1; + + message ColumnNames { + enum Enum { + unspecified = 0; + session_state = 1; + session_flap_count = 2; + routes_advertised = 3; + routes_received = 4; + route_withdraws_sent = 5; + route_withdraws_received = 6; + updates_sent = 7; + updates_received = 8; + opens_sent = 9; + opens_received = 10; + keepalives_sent = 11; + keepalives_received = 12; + notifications_sent = 13; + notifications_received = 14; + fsm_state = 15; + end_of_rib_received = 16; + } + } + // The list of column names that the returned result set will contain. If the list is + // empty then all columns will be returned except for any result_groups. The name of + // the BGPv6 peer cannot be excluded. + repeated ColumnNames.Enum column_names = 2; +} + +// BGPv6 per peer statistics information. +message Bgpv6Metric { + + // The name of a configured BGPv6 peer. + optional string name = 1; + + message SessionState { + enum Enum { + unspecified = 0; + up = 1; + down = 2; + } + } + // Session state as up or down. Up refers to an Established state and Down refers to + // any other state. + optional SessionState.Enum session_state = 2; + + // Number of times the session went from Up to Down state. + optional uint64 session_flap_count = 3; + + // Number of routes advertised. + optional uint64 routes_advertised = 4; + + // Number of routes received. + optional uint64 routes_received = 5; + + // Number of route withdraws sent. + optional uint64 route_withdraws_sent = 6; + + // Number of route withdraws received. + optional uint64 route_withdraws_received = 7; + + // Number of Update messages sent. + optional uint64 updates_sent = 8; + + // Number of Update messages received. + optional uint64 updates_received = 9; + + // Number of Open messages sent. + optional uint64 opens_sent = 10; + + // Number of Open messages received. + optional uint64 opens_received = 11; + + // Number of Keepalive messages sent. + optional uint64 keepalives_sent = 12; + + // Number of Keepalive messages received. + optional uint64 keepalives_received = 13; + + // Number of Notification messages sent. + optional uint64 notifications_sent = 14; + + // Number of Notification messages received. + optional uint64 notifications_received = 15; + + message FsmState { + enum Enum { + unspecified = 0; + idle = 1; + connect = 2; + active = 3; + opensent = 4; + openconfirm = 5; + established = 6; + } + } + // BGP peer FSM (Finite State Machine) state as Idle, Connect, Active, OpenSent, OpenConfirm + // and Established. In all the states except Established the BGP session is down. Idle + // refers to the Idle state of the FSM. Connect refers to the state where the session + // is waiting for the underlying transport session to be established. Active refers + // to the state where the session is awaiting for a connection from the remote peer. + // OpenSent refers to the state where the session is in the process of being established. + // The local system has sent an OPEN message. OpenConfirm refers to the state where + // the session is in the process of being established. The local system has sent and + // received an OPEN message and is awaiting a NOTIFICATION or KEEPALIVE message from + // remote peer. Established refers to the state where the BGP session with the peer + // is established. + optional FsmState.Enum fsm_state = 16; + + // Number of End-of-RIB markers received indicating the completion of the initial routing + // update for a particular address family after the session is established. + // For the IPv4 unicast address family, the End-of-RIB marker is an UPDATE message with + // the minimum length. For any other address family, it is an UPDATE message that contains + // only the MP_UNREACH_NLRI attribute with no withdrawn routes for that . + optional uint64 end_of_rib_received = 17; +} + +// The request to retrieve ISIS per Router metrics/statistics. +message IsisMetricsRequest { + + // The names of ISIS Routers to return results for. An empty list will return results + // for all ISIS router. + // + // x-constraint: + // - /components/schemas/Device.IsisRouter/properties/name + // + repeated string router_names = 1; + + message ColumnNames { + enum Enum { + unspecified = 0; + l1_sessions_up = 1; + l1_session_flap = 2; + l1_database_size = 3; + l1_broadcast_hellos_sent = 4; + l1_broadcast_hellos_received = 5; + l1_point_to_point_hellos_sent = 6; + l1_point_to_point_hellos_received = 7; + l1_psnp_sent = 8; + l1_psnp_received = 9; + l1_csnp_sent = 10; + l1_csnp_received = 11; + l1_lsp_sent = 12; + l1_lsp_received = 13; + l2_sessions_up = 14; + l2_session_flap = 15; + l2_database_size = 16; + l2_broadcast_hellos_sent = 17; + l2_broadcast_hellos_received = 18; + l2_point_to_point_hellos_sent = 19; + l2_point_to_point_hellos_received = 20; + l2_psnp_sent = 21; + l2_psnp_received = 22; + l2_csnp_sent = 23; + l2_csnp_received = 24; + l2_lsp_sent = 25; + l2_lsp_received = 26; + } + } + // The list of column names that the returned result set will contain. If the list is + // empty then all columns will be returned except for any result_groups. The name of + // the ISIS Router cannot be excluded. + repeated ColumnNames.Enum column_names = 2; +} + +// ISIS per router statistics information. +message IsisMetric { + + // The name of a configured ISIS router. + optional string name = 1; + + // The number of Level 1 (L1) sessions that are fully up. + optional uint32 l1_sessions_up = 2; + + // The number of Level 1 Sessions Flap. + optional uint64 l1_session_flap = 3; + + // Number of Level 1 Hello messages sent. + optional uint64 l1_broadcast_hellos_sent = 4; + + // Number of Level 1 Hello messages received. + optional uint64 l1_broadcast_hellos_received = 5; + + // Number of Level 1 Point-to-Point(P2P) Hello messages sent. + optional uint64 l1_point_to_point_hellos_sent = 6; + + // Number of Level 1 Point-to-Point(P2P) Hello messages received. + optional uint64 l1_point_to_point_hellos_received = 7; + + // Number of Link State Updates (LSPs) in the Level 1 LSP Databases. + optional uint64 l1_database_size = 8; + + // Number of Level 1 (L1) Partial Sequence Number Packet (PSNPs) sent. + optional uint64 l1_psnp_sent = 9; + + // Number of Level 1 (L1) Complete Sequence Number Packet (PSNPs) received. + optional uint64 l1_psnp_received = 10; + + // Number of Level 1 (L1) Complete Sequence Number Packet (CSNPs) sent. + optional uint64 l1_csnp_sent = 11; + + // Number of Level 1 (L1) Complete Sequence Number Packet (CSNPs) received. + optional uint64 l1_csnp_received = 12; + + // Number of Level 1 (L1) Link State Protocol Data Units (LSPs) sent. + optional uint64 l1_lsp_sent = 13; + + // Number of Level 1 (L1) Link State Protocol Data Units (LSPs) received. + optional uint64 l1_lsp_received = 14; + + // The number of Level 2 (L2) sessions that are fully up. + optional uint32 l2_sessions_up = 15; + + // The number of Level 2 Sessions Flap. + optional uint64 l2_session_flap = 16; + + // Number of Level 2 Hello messages sent. + optional uint64 l2_broadcast_hellos_sent = 17; + + // Number of Level 2 Hello messages received. + optional uint64 l2_broadcast_hellos_received = 18; + + // Number of Level 2 Point-to-Point(P2P) Hello messages sent. + optional uint64 l2_point_to_point_hellos_sent = 19; + + // Number of Level 2 Point-to-Point(P2P) Hello messages received. + optional uint64 l2_point_to_point_hellos_received = 20; + + // Number of Link State Updates (LSPs) in the Level 2 LSP Databases. + optional uint64 l2_database_size = 21; + + // Number of Level 2 (L2) Partial Sequence Number Packet (PSNPs) sent. + optional uint64 l2_psnp_sent = 22; + + // Number of Level 2 (L2) Complete Sequence Number Packet (PSNPs) received. + optional uint64 l2_psnp_received = 23; + + // Number of Level 2 (L2) Complete Sequence Number Packet (CSNPs) sent. + optional uint64 l2_csnp_sent = 24; + + // Number of Level 2 (L2) Complete Sequence Number Packet (CSNPs) received. + optional uint64 l2_csnp_received = 25; + + // Number of Level 2 (L2) Link State Protocol Data Units (LSPs) sent. + optional uint64 l2_lsp_sent = 26; + + // Number of Level 2 (L2) Link State Protocol Data Units (LSPs) received. + optional uint64 l2_lsp_received = 27; +} + +// The request to retrieve per LAG metrics/statistics. +message LagMetricsRequest { + + // The names of LAGs to return results for. An empty list will return results for all + // LAGs. + // + // x-constraint: + // - /components/schemas/Lag/properties/name + // + repeated string lag_names = 1; + + message ColumnNames { + enum Enum { + unspecified = 0; + oper_status = 1; + member_ports_up = 2; + frames_tx = 3; + frames_rx = 4; + bytes_tx = 5; + bytes_rx = 6; + frames_tx_rate = 7; + frames_rx_rate = 8; + bytes_tx_rate = 9; + bytes_rx_rate = 10; + } + } + // The list of column names that the returned result set will contain. If the list is + // empty then all columns will be returned. The name of the LAG cannot be excluded. + repeated ColumnNames.Enum column_names = 2; +} + +// Description missing in models +message LagMetric { + + // The name of a configured LAG + // + // x-constraint: + // - /components/schemas/Lag/properties/name + // + optional string name = 1; + + message OperStatus { + enum Enum { + unspecified = 0; + up = 1; + down = 2; + } + } + // The current operational state of the LAG. The state can be up or down. State 'up' + // indicates member_ports_up >= min_links. + optional OperStatus.Enum oper_status = 2; + + // The number of LAG member ports up. + optional uint32 member_ports_up = 3; + + // The current total number of frames transmitted. + optional uint64 frames_tx = 4; + + // The current total number of valid frames received. + optional uint64 frames_rx = 5; + + // The current total number of bytes transmitted. + optional uint64 bytes_tx = 6; + + // The current total number of valid bytes received. + optional uint64 bytes_rx = 7; + + // The current rate of frames transmitted. + optional float frames_tx_rate = 8; + + // The current rate of valid frames received. + optional float frames_rx_rate = 9; + + // The current rate of bytes transmitted. + optional float bytes_tx_rate = 10; + + // The current rate of bytes received. + optional float bytes_rx_rate = 11; +} + +// The request to retrieve LACP per LAG member metrics/statistics. +message LacpMetricsRequest { + + // The names of LAG (ports group) for which LACP metrics to be returned. An empty list + // will return metrics for all LAGs. + // + // x-constraint: + // - /components/schemas/Lag/properties/name + // + repeated string lag_names = 1; + + // The names of LAG members (ports) for which LACP metrics to be returned. An empty + // list will return metrics for all LAG members. + // + // x-constraint: + // - /components/schemas/Port/properties/name + // + repeated string lag_member_port_names = 2; + + message ColumnNames { + enum Enum { + unspecified = 0; + lacp_packets_rx = 1; + lacp_packets_tx = 2; + lacp_rx_errors = 3; + activity = 4; + timeout = 5; + synchronization = 6; + aggregatable = 7; + collecting = 8; + distributing = 9; + system_id = 10; + oper_key = 11; + partner_id = 12; + partner_key = 13; + port_num = 14; + partner_port_num = 15; + } + } + // The list of column names that the returned result set will contain. If the list is + // empty then all columns will be returned. The name of LAG and LAG member can not be + // excluded. + repeated ColumnNames.Enum column_names = 3; +} + +// LACP metrics (statistics) per LAG member. +message LacpMetric { + + // The name of a LAG (ports group) configured with LACP. + optional string lag_name = 1; + + // The name of a LAG member (port) configured with LACP. + optional string lag_member_port_name = 2; + + // Number of LACPDUs received. + optional uint64 lacp_packets_rx = 3; + + // Number of LACPDUs transmitted. + optional uint64 lacp_packets_tx = 4; + + // Number of LACPDUs receive packet errors. + optional uint64 lacp_rx_errors = 5; + + message Activity { + enum Enum { + unspecified = 0; + active = 1; + passive = 2; + } + } + // Indicates participant is active or passive. + optional Activity.Enum activity = 6; + + message Timeout { + enum Enum { + unspecified = 0; + short = 1; + long = 2; + } + } + // The timeout type (short or long) used by the participant. + optional Timeout.Enum timeout = 7; + + message Synchronization { + enum Enum { + unspecified = 0; + in_sync = 1; + out_sync = 2; + } + } + // Indicates whether the participant is in-sync or out-of-sync. + optional Synchronization.Enum synchronization = 8; + + // A true value indicates that the participant will allow the link to be used as part + // of the aggregate. A false value indicates the link should be used as an individual + // link. + optional bool aggregatable = 9; + + // If true, the participant is collecting incoming frames on the link, otherwise false. + optional bool collecting = 10; + + // When true, the participant is distributing outgoing frames; when false, distribution + // is disabled. + optional bool distributing = 11; + + // MAC address that defines the local system ID for the aggregate interface. + optional string system_id = 12; + + // Current operational value of the key for the aggregate interface. + optional uint32 oper_key = 13; + + // MAC address representing the protocol partner's interface system ID. + optional string partner_id = 14; + + // Operational value of the protocol partner's key. + optional uint32 partner_key = 15; + + // Port number of the local (actor) aggregation member. + optional uint32 port_num = 16; + + // Port number of the partner (remote) port for this member port. + optional uint32 partner_port_num = 17; +} + +// The request to retrieve LLDP per instance metrics/statistics. +message LldpMetricsRequest { + + // The names of LLDP instances to return results for. An empty list will return results + // for all LLDP instances. + // + // x-constraint: + // - /components/schemas/Lldp/properties/name + // + repeated string lldp_names = 1; + + message ColumnNames { + enum Enum { + unspecified = 0; + frames_rx = 1; + frames_tx = 2; + frames_error_rx = 3; + frames_discard = 4; + tlvs_discard = 5; + tlvs_unknown = 6; + } + } + // The requested list of column names for the result set. If the list is empty then + // metrics for all columns will be returned. The name of LLDP instance can not be excluded. + repeated ColumnNames.Enum column_names = 2; +} + +// LLDP per instance statistics information. +message LldpMetric { + + // The name of the configured LLDP instance. + optional string name = 1; + + // Number of LLDP frames received. + optional uint64 frames_rx = 2; + + // Number of LLDP frames transmitted. + optional uint64 frames_tx = 3; + + // Number of LLDP frames received with packet errors. This stat should be incremented + // based on statsFramesInErrorsTotal increment rule in section 10.3.2 of IEEE Std 802.1 + // AB-2005. + optional uint64 frames_error_rx = 4; + + // Number of LLDP frames received that are discarded. This stat should be incremented + // when one or more of the three mandatory TLVs at the beginning of the LLDPDU is missing, + // out of order or contains an out of range information string length. This stat should + // follow the validation rules in section 10.3.2 of IEEE Std 802.1 AB-2005. + optional uint64 frames_discard = 5; + + // Number of LLDP tlvs received that are discarded. If any TLV contains an error condition + // specific for that particular TLV or if any TLV extends past the physical end of + // the frame then these TLVs will be discarded. + optional uint64 tlvs_discard = 6; + + // Number of LLDP unknown tlvs received. If the OUI of the organizationlly specific + // TLV and/or organizationally defined subtype are not recognized,or if TLV type value + // is in the range of reserved TLV types then these TLVs will be considered as unknown + // TLVs. + optional uint64 tlvs_unknown = 7; +} + +// The request to retrieve RSVP-TE per Router metrics/statistics. +message RsvpMetricsRequest { + + // The names of RSVP-TE Routers to return results for. An empty list as input will return + // results for all RSVP-TE routers. + // + // x-constraint: + // - /components/schemas/Device.Rsvp/properties/name + // + repeated string router_names = 1; + + message ColumnNames { + enum Enum { + unspecified = 0; + ingress_p2p_lsps_configured = 1; + ingress_p2p_lsps_up = 2; + egress_p2p_lsps_up = 3; + lsp_flap_count = 4; + paths_tx = 5; + paths_rx = 6; + resvs_tx = 7; + resvs_rx = 8; + path_tears_tx = 9; + path_tears_rx = 10; + resv_tears_tx = 11; + resv_tears_rx = 12; + path_errors_tx = 13; + path_errors_rx = 14; + resv_errors_tx = 15; + resv_errors_rx = 16; + resv_conf_tx = 17; + resv_conf_rx = 18; + hellos_tx = 19; + hellos_rx = 20; + acks_tx = 21; + acks_rx = 22; + nacks_tx = 23; + nacks_rx = 24; + srefresh_tx = 25; + srefresh_rx = 26; + bundle_tx = 27; + bundle_rx = 28; + path_reevaluation_request_tx = 29; + path_reoptimizations = 30; + } + } + // The list of column names that the returned result set will contain. If the input + // list is empty then all columns will be returned except for any result_groups. + // + repeated ColumnNames.Enum column_names = 2; +} + +// RSVP-TE per router statistics information. +message RsvpMetric { + + // The name of a configured RSVP router. + optional string name = 1; + + // The number of ingress point-to-point LSPs configured or transiting through the RSVP + // router which have been initated from the test port. + optional uint32 ingress_p2p_lsps_configured = 2; + + // The number of ingress point-to-point LSPs for which Resv has been received and is + // currently up. + optional uint32 ingress_p2p_lsps_up = 3; + + // The number of egress point-to-point LSPs for which Path requests were successfully + // processed and is currently up. + optional uint32 egress_p2p_lsps_up = 4; + + // The number of times an LSP went from up to down state either because it timed out + // while waiting for Refreshes or a PathTear or ResvTear message was received which + // caused the LSP to flap. + optional uint64 lsp_flap_count = 5; + + // The number of Path messages sent by this RSVP router. + optional uint64 paths_tx = 6; + + // The number of Path messages received by this RSVP router. + optional uint64 paths_rx = 7; + + // The number of Resv messages sent by this RSVP router. + optional uint64 resvs_tx = 8; + + // The number of Resv messages received by this RSVP router. + optional uint64 resvs_rx = 9; + + // The number of Path Tear messages sent by this RSVP router. + optional uint64 path_tears_tx = 10; + + // The number of Path Tear messages received by this RSVP router. + optional uint64 path_tears_rx = 11; + + // The number of Resv Tear messages sent by this RSVP router. + optional uint64 resv_tears_tx = 12; + + // The number of Resv Tear messages received by this RSVP router. + optional uint64 resv_tears_rx = 13; + + // The number of Path Error messages sent by this RSVP router. + optional uint64 path_errors_tx = 14; + + // The number of Path Error messages received by this RSVP router. + optional uint64 path_errors_rx = 15; + + // The number of Resv Error messages sent by this RSVP router. + optional uint64 resv_errors_tx = 16; + + // The number of Resv Error messages received by this RSVP router. + optional uint64 resv_errors_rx = 17; + + // The number of ResvConf messages sent by this RSVP router. + optional uint64 resv_conf_tx = 18; + + // The number of ResvConf messages received by this RSVP router. + optional uint64 resv_conf_rx = 19; + + // The number of Hello messages sent by this RSVP router. + optional uint64 hellos_tx = 20; + + // The number of Hello messages received by this RSVP router. + optional uint64 hellos_rx = 21; + + // The number of Ack messages sent by this RSVP router. + optional uint64 acks_tx = 22; + + // The number of Ack messages received by this RSVP router. + optional uint64 acks_rx = 23; + + // The number of Nack messages sent by this RSVP router. + optional uint64 nacks_tx = 24; + + // The number of Nack messages received by this RSVP router. + optional uint64 nacks_rx = 25; + + // The number of SRefresh messages sent by this RSVP router. + optional uint64 srefresh_tx = 26; + + // The number of SRefresh messages received by this RSVP router. + optional uint64 srefresh_rx = 27; + + // The number of Bundle messages sent by this RSVP router. + optional uint64 bundle_tx = 28; + + // The number of Bundle messages received by this RSVP router. + optional uint64 bundle_rx = 29; + + // The number of Path messages with Path Re-evaluation Request enabled sent by this + // RSVP router. + optional uint64 path_reevaluation_request_tx = 30; + + // The number of successfully completed Make-Before-Break operations on LSPs on this + // RSVP router. + optional uint64 path_reoptimizations = 31; +} + +// Request to traffic generator for states of choice +message StatesRequest { + + message Choice { + enum Enum { + unspecified = 0; + ipv4_neighbors = 1; + ipv6_neighbors = 2; + bgp_prefixes = 3; + isis_lsps = 4; + lldp_neighbors = 5; + rsvp_lsps = 6; + } + } + // Description missing in models + // default = Choice.Enum.ipv4_neighbors + optional Choice.Enum choice = 1; + + // Description missing in models + Neighborsv4StatesRequest ipv4_neighbors = 2; + + // Description missing in models + Neighborsv6StatesRequest ipv6_neighbors = 3; + + // Description missing in models + BgpPrefixStateRequest bgp_prefixes = 4; + + // Description missing in models + IsisLspsStateRequest isis_lsps = 5; + + // Description missing in models + LldpNeighborsStateRequest lldp_neighbors = 6; + + // Description missing in models + RsvpLspsStateRequest rsvp_lsps = 7; +} + +// Response containing chosen traffic generator states +message StatesResponse { + + message Choice { + enum Enum { + unspecified = 0; + ipv4_neighbors = 1; + ipv6_neighbors = 2; + bgp_prefixes = 3; + isis_lsps = 4; + lldp_neighbors = 5; + rsvp_lsps = 6; + } + } + // Description missing in models + // default = Choice.Enum.ipv4_neighbors + optional Choice.Enum choice = 1; + + // Description missing in models + repeated Neighborsv4State ipv4_neighbors = 2; + + // Description missing in models + repeated Neighborsv6State ipv6_neighbors = 3; + + // Description missing in models + repeated BgpPrefixesState bgp_prefixes = 4; + + // Description missing in models + repeated IsisLspsState isis_lsps = 5; + + // Description missing in models + repeated LldpNeighborsState lldp_neighbors = 6; + + // Description missing in models + repeated RsvpLspsState rsvp_lsps = 7; +} + +// The request to retrieve IPv4 Neighbor state (ARP cache entries) of a network interface(s). +message Neighborsv4StatesRequest { + + // The names of Ethernet interfaces for which Neighbor state (ARP cache entries) will + // be retrieved. If no names are specified then the results will contain Neighbor state + // (ARP cache entries) for all available Ethernet interfaces. + // + // x-constraint: + // - /components/schemas/Device.Ethernet/properties/name + // + repeated string ethernet_names = 1; +} + +// IPv4 Neighbor state (ARP cache entry). +message Neighborsv4State { + + // The name of the Ethernet interface associated with the Neighbor state (ARP cache + // entry). + // required = true + optional string ethernet_name = 1; + + // The IPv4 address of the neighbor. + // required = true + optional string ipv4_address = 2; + + // The link-layer address (MAC) of the neighbor. + optional string link_layer_address = 3; +} + +// The request to retrieve IPv6 Neighbor state (NDISC cache entries) of a network interface(s). +message Neighborsv6StatesRequest { + + // The names of Ethernet interfaces for which Neighbor state (NDISC cache entries) will + // be retrieved. If no names are specified then the results will contain Neighbor state + // (NDISC cache entries) for all available Ethernet interfaces. + // + // x-constraint: + // - /components/schemas/Device.Ethernet/properties/name + // + repeated string ethernet_names = 1; +} + +// IPv6 Neighbor state (NDISC cache entry). +message Neighborsv6State { + + // The name of the Ethernet interface associated with the Neighbor state (NDISC cache + // entry). + // required = true + optional string ethernet_name = 1; + + // The IPv6 address of the neighbor. + // required = true + optional string ipv6_address = 2; + + // The link-layer address (MAC) of the neighbor. + optional string link_layer_address = 3; +} + +// The request to retrieve BGP peer prefix information. +message BgpPrefixStateRequest { + + // The names of BGP peers for which prefix information will be retrieved. If no names + // are specified then the results will contain prefix information for all configured + // BGP peers. + // + // x-constraint: + // - /components/schemas/Bgp.V4Peer/properties/name + // - /components/schemas/Bgp.V6Peer/properties/name + // + repeated string bgp_peer_names = 1; + + message PrefixFilters { + enum Enum { + unspecified = 0; + ipv4_unicast = 1; + ipv6_unicast = 2; + } + } + // Specify which prefixes to return. If the list is empty or missing then all prefixes + // will be returned. + repeated PrefixFilters.Enum prefix_filters = 2; + + // The IPv4 unicast results can be filtered by specifying additional prefix search criteria. + // If the ipv4_unicast_filters property is missing or empty then all IPv4 prefixes will + // be returned. + repeated BgpPrefixIpv4UnicastFilter ipv4_unicast_filters = 3; + + // The IPv6 unicast results can be filtered by specifying additional prefix search criteria. + // If the ipv6_unicast_filters property is missing or empty then all IPv6 prefixes will + // be returned. + repeated BgpPrefixIpv6UnicastFilter ipv6_unicast_filters = 4; +} + +// Description missing in models +message BgpPrefixIpv4UnicastFilter { + + // The addresses to match. If the addresses property is missing or empty then all addresses + // will match. + repeated string addresses = 1; + + // The prefix length to match. If the prefix length is missing then all prefix lengths + // will match. + optional uint32 prefix_length = 2; + + message Origin { + enum Enum { + unspecified = 0; + igp = 1; + egp = 2; + incomplete = 3; + } + } + // The origin to match. If the origin is missing then all origins will match. + optional Origin.Enum origin = 3; + + // The path id to match. If the path id is missing then all path ids will match. + optional uint32 path_id = 4; +} + +// Description missing in models +message BgpPrefixIpv6UnicastFilter { + + // The addresses to match. If the addresses property is missing or empty then all addresses + // will match. + repeated string addresses = 1; + + // The prefix length to match. If the prefix length is missing then all prefix lengths + // will match. + optional uint32 prefix_length = 2; + + message Origin { + enum Enum { + unspecified = 0; + igp = 1; + egp = 2; + incomplete = 3; + } + } + // The origin to match. If the origin is missing then all origins will match. + optional Origin.Enum origin = 3; + + // The path id to match. If the path id is missing then all path ids will match. + optional uint32 path_id = 4; +} + +// BGP peer prefixes. +message BgpPrefixesState { + + // The name of a BGP peer. + optional string bgp_peer_name = 1; + + // Description missing in models + repeated BgpPrefixIpv4UnicastState ipv4_unicast_prefixes = 2; + + // Description missing in models + repeated BgpPrefixIpv6UnicastState ipv6_unicast_prefixes = 3; +} + +// IPv4 unicast prefix. +message BgpPrefixIpv4UnicastState { + + // An IPv4 unicast address + optional string ipv4_address = 1; + + // The length of the prefix. + optional uint32 prefix_length = 2; + + message Origin { + enum Enum { + unspecified = 0; + igp = 1; + egp = 2; + incomplete = 3; + } + } + // The origin of the prefix. + optional Origin.Enum origin = 3; + + // The path id. + optional uint32 path_id = 4; + + // The IPv4 address of the egress interface. + optional string ipv4_next_hop = 5; + + // The IPv6 address of the egress interface. + optional string ipv6_next_hop = 6; + + // Optional community attributes. + repeated ResultBgpCommunity communities = 7; + + // Description missing in models + ResultBgpAsPath as_path = 8; + + // The local preference is a well-known attribute and the value is used for route selection. + // The route with the highest local preference value is preferred. + optional uint32 local_preference = 9; + + // The multi exit discriminator (MED) is an optional non-transitive attribute and the + // value is used for route selection. The route with the lowest MED value is preferred. + optional uint32 multi_exit_discriminator = 10; +} + +// IPv6 unicast prefix. +message BgpPrefixIpv6UnicastState { + + // An IPv6 unicast address + optional string ipv6_address = 1; + + // The length of the prefix. + optional uint32 prefix_length = 2; + + message Origin { + enum Enum { + unspecified = 0; + igp = 1; + egp = 2; + incomplete = 3; + } + } + // The origin of the prefix. + optional Origin.Enum origin = 3; + + // The path id. + optional uint32 path_id = 4; + + // The IPv4 address of the egress interface. + optional string ipv4_next_hop = 5; + + // The IPv6 address of the egress interface. + optional string ipv6_next_hop = 6; + + // Optional community attributes. + repeated ResultBgpCommunity communities = 7; + + // Description missing in models + ResultBgpAsPath as_path = 8; + + // The local preference is a well-known attribute and the value is used for route selection. + // The route with the highest local preference value is preferred. + optional uint32 local_preference = 9; + + // The multi exit discriminator (MED) is an optional non-transitive attribute and the + // value is used for route selection. The route with the lowest MED value is preferred. + optional uint32 multi_exit_discriminator = 10; +} + +// BGP communities provide additional capability for tagging routes and for modifying +// BGP routing policy on upstream and downstream routers. BGP community is a 32-bit +// number which is broken into 16-bit AS number and a 16-bit custom value. +message ResultBgpCommunity { + + message Type { + enum Enum { + unspecified = 0; + manual_as_number = 1; + no_export = 2; + no_advertised = 3; + no_export_subconfed = 4; + llgr_stale = 5; + no_llgr = 6; + } + } + // The type of community AS number. If community type is manual_as_number then as_number + // and as_custom will be available. + optional Type.Enum type = 1; + + // First two octets of 32 bit community AS number. + optional uint32 as_number = 2; + + // Last two octets of the community value. + optional uint32 as_custom = 3; +} + +// This attribute identifies the autonomous systems through which routing information +// carried in this UPDATE message has passed. +message ResultBgpAsPath { + + // AS Path segments present in the received AS Path attribute. + repeated ResultBgpAsPathSegment segments = 1; +} + +// Configuration for a single BGP AS path segment +message ResultBgpAsPathSegment { + + message Type { + enum Enum { + unspecified = 0; + as_seq = 1; + as_set = 2; + as_confed_seq = 3; + as_confed_set = 4; + } + } + // AS sequence is the most common type of AS_PATH, it contains the list of ASNs starting + // with the most recent ASN being added read from left to right. + // The other three AS_PATH types are used for Confederations - AS_SET is the type of + // AS_PATH attribute that summarizes routes using using the aggregate-address command, + // allowing AS_PATHs to be summarized in the update as well. - AS_CONFED_SEQ gives + // the list of ASNs in the path starting with the most recent ASN to be added reading + // left to right - AS_CONFED_SET will allow summarization of multiple AS PATHs to be + // sent in BGP Updates. + optional Type.Enum type = 1; + + // The AS numbers in this AS path segment. + repeated uint32 as_numbers = 2; +} + +// The request to retrieve ISIS Link State PDU (LSP) information learned by the router. +message IsisLspsStateRequest { + + // The names of ISIS routers for which learned information is requested. An empty list + // will return results for all ISIS routers. + // + // x-constraint: + // - /components/schemas/Device.IsisRouter/properties/name + // + repeated string isis_router_names = 1; +} + +// The result of ISIS LSP information that are retrieved. +message IsisLspsState { + + // The name of the ISIS Router. + optional string isis_router_name = 1; + + // One or more LSPs that are learned by this ISIS router. + repeated IsisLspState lsps = 2; +} + +// ISIS LSP. +message IsisLspState { + + // LSP ID in the format, e.g. '640000000001-00-00'. LSP ID consists of the System ID + // of a neighbor, the Pseudonode ID, and the LSP number. The last two bytes represent + // Pseudonode ID and LSP number respectively. A pseudonode is a logical representation + // of the LAN which is generated by a Designated Intermediate System (DIS) on a LAN + // segment. If one LSP exceeds the maximum LSP size then it is sent in another LSP with + // the LSP number incremented by one. A router's learned LSP gets refreshed by 'remaining_lifetime'. + // Then the sequence number is incremented by 1. + // required = true + optional string lsp_id = 1; + + message PduType { + enum Enum { + unspecified = 0; + level_1 = 1; + level_2 = 2; + } + } + // Link State PDU type. + optional PduType.Enum pdu_type = 2; + + // Remaining lifetime in seconds before LSP expires. + optional uint32 remaining_lifetime = 3; + + // Sequence number of the LSP. + optional uint64 sequence_number = 4; + + // Total length of the LSP. + optional uint32 pdu_length = 5; + + // LSP Type-Block flags. + IsisLspFlags flags = 6; + + // IS Type - bits 1 and 2 indicate the type of Intermediate System. + // 1 - ( i.e. bit 1 set) Level 1 Intermediate system. + // 2 - Unused value. + // 3 - (i.e. bits 1 and 2 set) Level 2 Intermediate system. + optional uint32 is_type = 7; + + // It refers to Link State PDU State TLVs container. + IsisLspTlvs tlvs = 8; +} + +// This contains the list of TLVs present in one LSP. +message IsisLspTlvs { + + // Array of Hostname TLVs ( type 137) present in this LSP. + repeated IsisLspHostname hostname_tlvs = 1; + + // Array of IS-Reachability TLVs (type 2) present in this LSP. + repeated IsisLspIsReachabilityTlv is_reachability_tlvs = 2; + + // Array of Extended IS-Reachability TLVs (type 22) present in this LSP. + repeated IsisLspExtendedIsReachabilityTlv extended_is_reachability_tlvs = 3; + + // Array of IPv4 Internal Reachability TLVs (type 128) present in this LSP. + repeated IsisLspIpv4InternalReachabilityTlv ipv4_internal_reachability_tlvs = 4; + + // Array of IPv4 External Reachability TLVs (type 130) present in this LSP. + repeated IsisLspIpv4ExternalReachabilityTlv ipv4_external_reachability_tlvs = 5; + + // Array of IPv4 Extended Reachability TLVs (type 135) present in this LSP. + repeated IsisLspExtendedIpv4ReachabilityTlv extended_ipv4_reachability_tlvs = 6; + + // Array of IPv6 Reachability TLVs (type 236) present in this LSP. + repeated IsisLspIpv6ReachabilityTlv ipv6_reachability_tlvs = 7; +} + +// It contains Hostname for the TLV 137. +message IsisLspHostname { + + // Hostname for an ISIS router. + optional string hostname = 1; +} + +// LSP Type flags. +message IsisLspFlags { + + // When set, the originator supports partition repair. + optional bool partition_repair = 1; + + // When set, the originator is attached to another area using the referred metric. + optional bool attached_error = 2; + + // When set, the originator is attached to another + // area using the referred metric. + optional bool attached_expense = 3; + + // Delay Metric - when set, the originator is attached to another + // area using the referred metric. + optional bool attached_delay = 4; + + // Default Metric - when set, the originator is attached to another + // area using the referred metric. + optional bool attached_default = 5; + + // Overload bit - when set, the originator is overloaded, and must + // be avoided in path calculation. + optional bool overload = 6; +} + +// This container describes list of ISIS neighbors and attributes in IS-Reachability +// TLV (type 2). +message IsisLspIsReachabilityTlv { + + // This container describes Intermediate System (IS) neighbors. + repeated IsisLspneighbor neighbors = 1; +} + +// This is list of ISIS neighbors and attributes in Extended-IS-Reachability TLV (type +// 22). +message IsisLspExtendedIsReachabilityTlv { + + // This container describes IS neighbors. + repeated IsisLspneighbor neighbors = 1; +} + +// This contains IS neighbors. +message IsisLspneighbor { + + // The System ID for this emulated ISIS router, e.g. 640100010000. + optional string system_id = 1; +} + +// This container defines list of IPv4 internal reachability information in one IPv4 +// internal reachability TLV. +// This is advertised when the origin-type is set 'internal' in route range configurations. +message IsisLspIpv4InternalReachabilityTlv { + + // Describes list of IPv4 prefixes in this TLV. + repeated IsisLspV4Prefix prefixes = 1; +} + +// This container defines list of IPv4 external reachability information in one IPv4 +// external reachability TLV. +// This is advertised when the origin-type is set 'external' in route range configurations. +message IsisLspIpv4ExternalReachabilityTlv { + + // Describes list of IPv4 prefixes in this TLV.. + repeated IsisLspV4Prefix prefixes = 1; +} + +// This group defines attributes of an IPv4 standard prefix. +message IsisLspV4Prefix { + + // An IPv4 unicast prefix reachable via the originator of this LSP. + optional string ipv4_address = 1; + + // The length of the IPv4 prefix. + optional uint32 prefix_length = 2; + + message RedistributionType { + enum Enum { + unspecified = 0; + up = 1; + down = 2; + } + } + // Up (0)-used when a prefix is initially advertised within the ISIS L3 hierarchy, + // and for all other prefixes in L1 and L2 LSPs. (default) + // Down (1)-used when an L1/L2 router advertises L2 prefixes in L1 LSPs. + // The prefixes are being advertised from a higher level (L2) down to a lower level + // (L1). + optional RedistributionType.Enum redistribution_type = 3; + + // ISIS default metric value. + optional uint32 default_metric = 4; + + message OriginType { + enum Enum { + unspecified = 0; + internal = 1; + external = 2; + } + } + // The origin of the advertised route-internal or external to the ISIS area. Options + // include the following: + // Internal-for intra-area routes, through Level 1 LSPs. + // External-for inter-area routes redistributed within L1, through Level + // 1 LSPs. + optional OriginType.Enum origin_type = 5; +} + +// This container defines list of IPv4 extended reachability information in one Extended +// IPv4 External Reachability TLV. +// It is advertised when the 'wide metric' is enabled. +message IsisLspExtendedIpv4ReachabilityTlv { + + // IPv4 prefix contained within extended reachability TLVs. + repeated IsisLspExtendedV4Prefix prefixes = 1; +} + +// This group defines attributes of an IPv4 standard prefix. +message IsisLspExtendedV4Prefix { + + // An IPv4 unicast prefix reachable via the originator of this LSP. + optional string ipv4_address = 1; + + // The length of the IPv4 prefix. + optional uint32 prefix_length = 2; + + // ISIS wide metric. + optional uint32 metric = 3; + + message RedistributionType { + enum Enum { + unspecified = 0; + up = 1; + down = 2; + } + } + // Up (0)-used when a prefix is initially advertised within the ISIS L3 hierarchy, + // and for all other prefixes in L1 and L2 LSPs. (default) + // Down (1)-used when an L1/L2 router advertises L2 prefixes in L1 LSPs. + // The prefixes are being advertised from a higher level (L2) down to a lower level + // (L1). + optional RedistributionType.Enum redistribution_type = 4; + + // Description missing in models + IsisLspPrefixAttributes prefix_attributes = 5; +} + +// It defines list of IPv6 extended reachability information in one IPv6 Reachability +// TLV. +message IsisLspIpv6ReachabilityTlv { + + // IPv6 prefix contained within reachability TLVs. + repeated IsisLspV6Prefix prefixes = 1; +} + +// It defines attributes of an IPv6 standard prefix. +message IsisLspV6Prefix { + + // An IPv6 unicast prefix reachable via the originator of this LSP. + optional string ipv6_address = 1; + + // The length of the IPv6 prefix. + optional uint32 prefix_length = 2; + + // ISIS wide metric. + optional uint32 metric = 3; + + message RedistributionType { + enum Enum { + unspecified = 0; + up = 1; + down = 2; + } + } + // Up (0)-used when a prefix is initially advertised within the ISIS L3 hierarchy, + // and for all other prefixes in L1 and L2 LSPs. (default) + // Down (1)-used when an L1/L2 router advertises L2 prefixes in L1 LSPs. + // The prefixes are being advertised from a higher level (L2) down to a lower level + // (L1). + optional RedistributionType.Enum redistribution_type = 4; + + message OriginType { + enum Enum { + unspecified = 0; + internal = 1; + external = 2; + } + } + // The origin of the advertised route-internal or external to the ISIS area. Options + // include the following: + // Internal-for intra-area routes, through Level 1 LSPs. + // External-for inter-area routes redistributed within L1, through Level + // 1 LSPs. + optional OriginType.Enum origin_type = 5; + + // Description missing in models + IsisLspPrefixAttributes prefix_attributes = 6; +} + +// This contains the properties of ISIS Prefix attributes for the extended IPv4 and +// IPv6 reachability. https://www.rfc-editor.org/rfc/rfc7794.html +message IsisLspPrefixAttributes { + + // External Prefix Flag (Bit 0) + optional bool x_flag = 1; + + // Re-advertisement Flag (Bit 1) + optional bool r_flag = 2; + + // Node Flag (Bit 2) + optional bool n_flag = 3; +} + +// The request to retrieve LLDP neighbor information for a given instance. +message LldpNeighborsStateRequest { + + // The names of LLDP instances for which neighbor information will be retrieved. If + // no names are specified then the results will contain neighbor information for all + // configured LLDP instances. + // + // x-constraint: + // - /components/schemas/Lldp/properties/name + // + repeated string lldp_names = 1; + + // Specify the neighbors for which information will be returned. If empty or missing + // then information for all neighbors will be returned. + repeated string neighbor_id_filters = 2; +} + +// LLDP neighbor information. +message LldpNeighborsState { + + // The name of the LLDP instance. + optional string lldp_name = 1; + + // The system name field shall contain an alpha-numeric string that indicates the system's + // administratively assigned name. The system name should be the system's fully qualified + // domain name. If implementations support IETF RFC 3418, the sysName object should + // be used for this field. + optional string system_name = 2; + + // The system description field shall contain an alpha-numeric string that is the textual + // description of the network entity. The system description should include the full + // name and version identification of the system's hardware type, software operating + // system, and networking software. If implementations support IETF RFC 3418, the sysDescr + // object should be used for this field. + optional string system_description = 3; + + // The Chassis ID is a mandatory TLV which identifies the chassis component of the + // endpoint identifier associated with the transmitting LLDP agent. + optional string chassis_id = 4; + + message ChassisIdType { + enum Enum { + unspecified = 0; + port_component = 1; + network_address = 2; + chassis_component = 3; + mac_address = 4; + interface_name = 5; + local = 6; + interface_alias = 7; + } + } + // This field identifies the format and source of the chassis identifier string. It + // is an enumerator defined by the LldpChassisIdSubtype object from IEEE 802.1AB MIB. + optional ChassisIdType.Enum chassis_id_type = 5; + + // System generated identifier for the neighbor on the LLDP instance. + optional string neighbor_id = 6; + + // Age since discovery in seconds. + optional uint32 age = 7; + + // Seconds since last update received. + optional uint32 last_update = 8; + + // The time-to-live (TTL) in seconds is a mandatory TLV which indicates how long information + // from the neighbor should be considered valid. + optional uint32 ttl = 9; + + // The Port ID is a mandatory TLV which identifies the port component of the endpoint + // identifier associated with the transmitting LLDP agent. If the specified port is + // an IEEE 802.3 Repeater port, then this TLV is optional. + optional string port_id = 10; + + message PortIdType { + enum Enum { + unspecified = 0; + port_component = 1; + network_address = 2; + agent_circuit_id = 3; + mac_address = 4; + interface_name = 5; + local = 6; + interface_alias = 7; + } + } + // This field identifies the format and source of the port identifier string. It is + // an enumerator defined by the PtopoPortIdType object from RFC2922. + optional PortIdType.Enum port_id_type = 11; + + // The binary string containing the actual port identifier for the port which this LLDP + // PDU was transmitted. The source and format of this field is defined by PtopoPortId + // from RFC2922. + optional string port_description = 12; + + // The Management Address is a mandatory TLV which identifies a network address associated + // with the local LLDP agent, which can be used to reach the agent on the port identified + // in the Port ID TLV. + optional string management_address = 13; + + // The enumerated value for the network address type identified in this TLV. This enumeration + // is defined in the 'Assigned Numbers' RFC [RFC3232] and the ianaAddressFamilyNumbers + // object. + optional string management_address_type = 14; + + // Description missing in models + repeated LldpCustomTLVState custom_tlvs = 15; + + // Description missing in models + repeated LldpCapabilityState capabilities = 16; +} + +// Custom TLV received from a neighbor.Custom TLVs are organization specific TLVs advertised +// with TLV type 127. +message LldpCustomTLVState { + + // The integer value identifying the type of information contained in the value field. + optional uint32 custom_type = 1; + + // The organizationally unique identifier field shall contain the organization's OUI + // as defined in Clause 9 of IEEE Std 802. The high-order octet is 0 and the low-order + // 3 octets are the SMI Network Management Private Enterprise Code of the Vendor in + // network byte order, as defined in the 'Assigned Numbers' RFC [RFC3232]. + optional string oui = 2; + + // The organizationally defined subtype field shall contain a unique subtype value assigned + // by the defining organization. + optional string oui_subtype = 3; +} + +// LLDP system capability advertised by the neighbor +message LldpCapabilityState { + + message CapabilityName { + enum Enum { + unspecified = 0; + mac_bridge = 1; + two_port_mac_relay = 2; + repeater = 3; + docsis_cable_device = 4; + s_vlan = 5; + telephone = 6; + other = 7; + router = 8; + c_vlan = 9; + station_only = 10; + wlan_access_point = 11; + } + } + // Name of the system capability advertised by the neighbor. Capabilities are represented + // in a bitmap that defines the primary functions of the system. The capabilities are + // defined in IEEE 802.1AB. + optional CapabilityName.Enum capability_name = 1; + + // Indicates whether the corresponding system capability is enabled on the neighbor. + optional bool capability_enabled = 2; +} + +// The request to retrieve RSVP Label Switched Path (LSP) information learned by the +// router. +message RsvpLspsStateRequest { + + // The names of RSVP-TE routers for which learned information is requested. An empty + // list will return results for all RSVP=TE routers. + // + // x-constraint: + // - /components/schemas/Device.Rsvp/properties/name + // + repeated string rsvp_router_names = 1; +} + +// Discovered IPv4 Point-to-Point LSPs of a RSVP-TE router. +message RsvpLspsState { + + // The name of the RSVP-TE Router. + optional string rsvp_router_name = 1; + + // IPv4 Point-to-Point RSVP-TE Discovered LSPs. + repeated RsvpIPv4LspState ipv4_lsps = 2; +} + +// IPv4 RSVP-TE Discovered LSPs. +message RsvpIPv4LspState { + + // The origin IPv4 address of RSVP session. + optional string source_address = 1; + + // The IPv4 destination address of RSVP session. + optional string destination_address = 2; + + // It refers to the RSVP LSP properties. + RsvpLspState lsp = 3; + + // It refers to RSVP RRO objects container. + repeated RsvpLspIpv4Rro rros = 4; + + // It refers to RSVP ERO objects container. + repeated RsvpLspIpv4Ero eros = 5; +} + +// IPv4 RSVP-TE Discovered LSPs. +message RsvpLspState { + + // The tunnel id of RSVP session which acts as an identifier that remains constant over + // the life of the tunnel. + optional uint32 tunnel_id = 1; + + // The lsp-id of RSVP session which acts as a differentiator for two lsps originating + // from the same headend, commonly used to distinguish RSVP sessions during make before + // break operations. + optional uint32 lsp_id = 2; + + // The value of RSVP-TE Session Name field of the Session Attribute object. + optional string session_name = 3; + + // The label received by RSVP-TE ingress. + optional uint32 label_in = 4; + + // The label assigned by RSVP-TE egress. + optional uint32 label_out = 5; + + message SessionStatus { + enum Enum { + unspecified = 0; + up = 1; + down = 2; + } + } + // Operational state of the RSVP LSP. + optional SessionStatus.Enum session_status = 6; + + message LastFlapReason { + enum Enum { + unspecified = 0; + resv_tear = 1; + path_tear = 2; + path_timeout = 3; + } + } + // The reason for the last flap of this RSVP session. + optional LastFlapReason.Enum last_flap_reason = 7; + + // The tunnel UP time in milli seconds. If the tunnel is DOWN the UP time will be zero. + optional uint64 up_time = 8; +} + +// This contains the list of Record Route Object(RRO) objects associated with the traffic +// engineering tunnel. The Record Route Object(RRO) is used in RSVP-TE to record the +// route traversed by the LSP. The RRO might be present in both Path message and Resv +// message, the RRO stores the IP addresses of the routers that the traffic engineering +// tunnel traversed and also the label generated and distributed by the routers. The +// RROs in the Resv message mirrors that of the Path message, the only difference is +// that the RRO in a Resv message records the path information in the reverse direction. +// +message RsvpLspIpv4Rro { + + // The IPv4 addresses of the routers that the traffic engineering tunnel traversed. + optional string address = 1; + + // Label reported for RRO hop. When the Label_Recording flag is set in the Session Attribute + // object, nodes doing route recording should include the Label Record subobject containing + // the reported label. + optional uint32 reported_label = 2; +} + +// This contains the list of sub-objects included in the Explicit Route Object(ERO) +// object send in the PATH message from the ingress. These sub-objects contain the intermediate +// hops to be traversed by the LSP while being forwarded towards the egress endpoint. +message RsvpLspIpv4Ero { + + // The IPv4 prefix indicated by the ERO. Specified only when the ERO hop is an IPv4 + // prefix. + optional string prefix = 1; + + // The autonomous system number indicated by the ERO. Specified only when the ERO hop + // is an 2 or 4-byte AS number. + optional uint32 asn = 2; + + message Type { + enum Enum { + unspecified = 0; + ipv4 = 1; + ipv6 = 2; + asn = 3; + asn4 = 4; + label = 5; + unnumbered_interface = 6; + } + } + // The type indicated by the ERO. + optional Type.Enum type = 3; +} + +// The capture result request to the traffic generator. Stops the port capture on the +// port_name and returns the capture. +message CaptureRequest { + + // The name of a port a capture is started on. + // + // x-constraint: + // - /components/schemas/Port/properties/name + // + // required = true + optional string port_name = 1; +} + +// mac counter pattern +message PatternFlowEthernetDstCounter { + + // Description missing in models + // default = 00:00:00:00:00:00 + optional string start = 1; + + // Description missing in models + // default = 00:00:00:00:00:01 + optional string step = 2; + + // Description missing in models + // default = 1 + optional uint32 count = 3; +} + +// Metric tag can be used to enable tracking portion of or all bits in a corresponding +// header field for metrics per each applicable value. These would appear as tagged +// metrics in corresponding flow metrics. +message PatternFlowEthernetDstMetricTag { + + // Name used to identify the metrics associated with the values applicable for configured + // offset and length inside corresponding header field + // required = true + optional string name = 1; + + // Offset in bits relative to start of corresponding header field + // default = 0 + optional uint32 offset = 2; + + // Number of bits to track for metrics starting from configured offset of corresponding + // header field + // default = 48 + optional uint32 length = 3; +} + +// Destination MAC address +message PatternFlowEthernetDst { + + message Choice { + enum Enum { + unspecified = 0; + value = 2; + values = 3; + auto = 1; + increment = 4; + decrement = 5; + } + } + // Description missing in models + // default = Choice.Enum.auto + optional Choice.Enum choice = 1; + + // Description missing in models + // default = 00:00:00:00:00:00 + optional string value = 2; + + // Description missing in models + // default = ['00:00:00:00:00:00'] + repeated string values = 3; + + // The OTG implementation can provide a system generated + // value for this property. If the OTG is unable to generate a value + // the default value must be used. + // default = 00:00:00:00:00:00 + optional string auto = 4; + + // Description missing in models + PatternFlowEthernetDstCounter increment = 6; + + // Description missing in models + PatternFlowEthernetDstCounter decrement = 7; + + // One or more metric tags can be used to enable tracking portion of or all bits in + // a corresponding header field for metrics per each applicable value. These would appear + // as tagged metrics in corresponding flow metrics. + repeated PatternFlowEthernetDstMetricTag metric_tags = 8; +} + +// mac counter pattern +message PatternFlowEthernetSrcCounter { + + // Description missing in models + // default = 00:00:00:00:00:00 + optional string start = 1; + + // Description missing in models + // default = 00:00:00:00:00:01 + optional string step = 2; + + // Description missing in models + // default = 1 + optional uint32 count = 3; +} + +// Metric tag can be used to enable tracking portion of or all bits in a corresponding +// header field for metrics per each applicable value. These would appear as tagged +// metrics in corresponding flow metrics. +message PatternFlowEthernetSrcMetricTag { + + // Name used to identify the metrics associated with the values applicable for configured + // offset and length inside corresponding header field + // required = true + optional string name = 1; + + // Offset in bits relative to start of corresponding header field + // default = 0 + optional uint32 offset = 2; + + // Number of bits to track for metrics starting from configured offset of corresponding + // header field + // default = 48 + optional uint32 length = 3; +} + +// Source MAC address +message PatternFlowEthernetSrc { + + message Choice { + enum Enum { + unspecified = 0; + value = 2; + values = 3; + increment = 4; + decrement = 5; + } + } + // Description missing in models + // default = Choice.Enum.value + optional Choice.Enum choice = 1; + + // Description missing in models + // default = 00:00:00:00:00:00 + optional string value = 2; + + // Description missing in models + // default = ['00:00:00:00:00:00'] + repeated string values = 3; + + // Description missing in models + PatternFlowEthernetSrcCounter increment = 5; + + // Description missing in models + PatternFlowEthernetSrcCounter decrement = 6; + + // One or more metric tags can be used to enable tracking portion of or all bits in + // a corresponding header field for metrics per each applicable value. These would appear + // as tagged metrics in corresponding flow metrics. + repeated PatternFlowEthernetSrcMetricTag metric_tags = 7; +} + +// integer counter pattern +message PatternFlowEthernetEtherTypeCounter { + + // Description missing in models + // default = 65535 + optional uint32 start = 1; + + // Description missing in models + // default = 1 + optional uint32 step = 2; + + // Description missing in models + // default = 1 + optional uint32 count = 3; +} + +// Metric tag can be used to enable tracking portion of or all bits in a corresponding +// header field for metrics per each applicable value. These would appear as tagged +// metrics in corresponding flow metrics. +message PatternFlowEthernetEtherTypeMetricTag { + + // Name used to identify the metrics associated with the values applicable for configured + // offset and length inside corresponding header field + // required = true + optional string name = 1; + + // Offset in bits relative to start of corresponding header field + // default = 0 + optional uint32 offset = 2; + + // Number of bits to track for metrics starting from configured offset of corresponding + // header field + // default = 16 + optional uint32 length = 3; +} + +// Ethernet type +message PatternFlowEthernetEtherType { + + message Choice { + enum Enum { + unspecified = 0; + value = 2; + values = 3; + auto = 1; + increment = 4; + decrement = 5; + } + } + // Description missing in models + // default = Choice.Enum.auto + optional Choice.Enum choice = 1; + + // Description missing in models + // default = 65535 + optional uint32 value = 2; + + // Description missing in models + // default = [65535] + repeated uint32 values = 3; + + // The OTG implementation can provide a system generated + // value for this property. If the OTG is unable to generate a value + // the default value must be used. + // default = 65535 + optional uint32 auto = 4; + + // Description missing in models + PatternFlowEthernetEtherTypeCounter increment = 6; + + // Description missing in models + PatternFlowEthernetEtherTypeCounter decrement = 7; + + // One or more metric tags can be used to enable tracking portion of or all bits in + // a corresponding header field for metrics per each applicable value. These would appear + // as tagged metrics in corresponding flow metrics. + repeated PatternFlowEthernetEtherTypeMetricTag metric_tags = 8; +} + +// integer counter pattern +message PatternFlowEthernetPfcQueueCounter { + + // Description missing in models + // default = 0 + optional uint32 start = 1; + + // Description missing in models + // default = 1 + optional uint32 step = 2; + + // Description missing in models + // default = 1 + optional uint32 count = 3; +} + +// Metric tag can be used to enable tracking portion of or all bits in a corresponding +// header field for metrics per each applicable value. These would appear as tagged +// metrics in corresponding flow metrics. +message PatternFlowEthernetPfcQueueMetricTag { + + // Name used to identify the metrics associated with the values applicable for configured + // offset and length inside corresponding header field + // required = true + optional string name = 1; + + // Offset in bits relative to start of corresponding header field + // default = 0 + optional uint32 offset = 2; + + // Number of bits to track for metrics starting from configured offset of corresponding + // header field + // default = 3 + optional uint32 length = 3; +} + +// Priority flow control queue +message PatternFlowEthernetPfcQueue { + + message Choice { + enum Enum { + unspecified = 0; + value = 2; + values = 3; + increment = 4; + decrement = 5; + } + } + // Description missing in models + // default = Choice.Enum.value + optional Choice.Enum choice = 1; + + // Description missing in models + // default = 0 + optional uint32 value = 2; + + // Description missing in models + // default = [0] + repeated uint32 values = 3; + + // Description missing in models + PatternFlowEthernetPfcQueueCounter increment = 5; + + // Description missing in models + PatternFlowEthernetPfcQueueCounter decrement = 6; + + // One or more metric tags can be used to enable tracking portion of or all bits in + // a corresponding header field for metrics per each applicable value. These would appear + // as tagged metrics in corresponding flow metrics. + repeated PatternFlowEthernetPfcQueueMetricTag metric_tags = 7; +} + +// integer counter pattern +message PatternFlowVlanPriorityCounter { + + // Description missing in models + // default = 0 + optional uint32 start = 1; + + // Description missing in models + // default = 1 + optional uint32 step = 2; + + // Description missing in models + // default = 1 + optional uint32 count = 3; +} + +// Metric tag can be used to enable tracking portion of or all bits in a corresponding +// header field for metrics per each applicable value. These would appear as tagged +// metrics in corresponding flow metrics. +message PatternFlowVlanPriorityMetricTag { + + // Name used to identify the metrics associated with the values applicable for configured + // offset and length inside corresponding header field + // required = true + optional string name = 1; + + // Offset in bits relative to start of corresponding header field + // default = 0 + optional uint32 offset = 2; + + // Number of bits to track for metrics starting from configured offset of corresponding + // header field + // default = 3 + optional uint32 length = 3; +} + +// Priority code point +message PatternFlowVlanPriority { + + message Choice { + enum Enum { + unspecified = 0; + value = 2; + values = 3; + increment = 4; + decrement = 5; + } + } + // Description missing in models + // default = Choice.Enum.value + optional Choice.Enum choice = 1; + + // Description missing in models + // default = 0 + optional uint32 value = 2; + + // Description missing in models + // default = [0] + repeated uint32 values = 3; + + // Description missing in models + PatternFlowVlanPriorityCounter increment = 5; + + // Description missing in models + PatternFlowVlanPriorityCounter decrement = 6; + + // One or more metric tags can be used to enable tracking portion of or all bits in + // a corresponding header field for metrics per each applicable value. These would appear + // as tagged metrics in corresponding flow metrics. + repeated PatternFlowVlanPriorityMetricTag metric_tags = 7; +} + +// integer counter pattern +message PatternFlowVlanCfiCounter { + + // Description missing in models + // default = 0 + optional uint32 start = 1; + + // Description missing in models + // default = 1 + optional uint32 step = 2; + + // Description missing in models + // default = 1 + optional uint32 count = 3; +} + +// Metric tag can be used to enable tracking portion of or all bits in a corresponding +// header field for metrics per each applicable value. These would appear as tagged +// metrics in corresponding flow metrics. +message PatternFlowVlanCfiMetricTag { + + // Name used to identify the metrics associated with the values applicable for configured + // offset and length inside corresponding header field + // required = true + optional string name = 1; + + // Offset in bits relative to start of corresponding header field + // default = 0 + optional uint32 offset = 2; + + // Number of bits to track for metrics starting from configured offset of corresponding + // header field + // default = 1 + optional uint32 length = 3; +} + +// Canonical format indicator or drop elegible indicator +message PatternFlowVlanCfi { + + message Choice { + enum Enum { + unspecified = 0; + value = 2; + values = 3; + increment = 4; + decrement = 5; + } + } + // Description missing in models + // default = Choice.Enum.value + optional Choice.Enum choice = 1; + + // Description missing in models + // default = 0 + optional uint32 value = 2; + + // Description missing in models + // default = [0] + repeated uint32 values = 3; + + // Description missing in models + PatternFlowVlanCfiCounter increment = 5; + + // Description missing in models + PatternFlowVlanCfiCounter decrement = 6; + + // One or more metric tags can be used to enable tracking portion of or all bits in + // a corresponding header field for metrics per each applicable value. These would appear + // as tagged metrics in corresponding flow metrics. + repeated PatternFlowVlanCfiMetricTag metric_tags = 7; +} + +// integer counter pattern +message PatternFlowVlanIdCounter { + + // Description missing in models + // default = 0 + optional uint32 start = 1; + + // Description missing in models + // default = 1 + optional uint32 step = 2; + + // Description missing in models + // default = 1 + optional uint32 count = 3; +} + +// Metric tag can be used to enable tracking portion of or all bits in a corresponding +// header field for metrics per each applicable value. These would appear as tagged +// metrics in corresponding flow metrics. +message PatternFlowVlanIdMetricTag { + + // Name used to identify the metrics associated with the values applicable for configured + // offset and length inside corresponding header field + // required = true + optional string name = 1; + + // Offset in bits relative to start of corresponding header field + // default = 0 + optional uint32 offset = 2; + + // Number of bits to track for metrics starting from configured offset of corresponding + // header field + // default = 12 + optional uint32 length = 3; +} + +// Vlan identifier +message PatternFlowVlanId { + + message Choice { + enum Enum { + unspecified = 0; + value = 2; + values = 3; + increment = 4; + decrement = 5; + } + } + // Description missing in models + // default = Choice.Enum.value + optional Choice.Enum choice = 1; + + // Description missing in models + // default = 0 + optional uint32 value = 2; + + // Description missing in models + // default = [0] + repeated uint32 values = 3; + + // Description missing in models + PatternFlowVlanIdCounter increment = 5; + + // Description missing in models + PatternFlowVlanIdCounter decrement = 6; + + // One or more metric tags can be used to enable tracking portion of or all bits in + // a corresponding header field for metrics per each applicable value. These would appear + // as tagged metrics in corresponding flow metrics. + repeated PatternFlowVlanIdMetricTag metric_tags = 7; +} + +// integer counter pattern +message PatternFlowVlanTpidCounter { + + // Description missing in models + // default = 65535 + optional uint32 start = 1; + + // Description missing in models + // default = 1 + optional uint32 step = 2; + + // Description missing in models + // default = 1 + optional uint32 count = 3; +} + +// Metric tag can be used to enable tracking portion of or all bits in a corresponding +// header field for metrics per each applicable value. These would appear as tagged +// metrics in corresponding flow metrics. +message PatternFlowVlanTpidMetricTag { + + // Name used to identify the metrics associated with the values applicable for configured + // offset and length inside corresponding header field + // required = true + optional string name = 1; + + // Offset in bits relative to start of corresponding header field + // default = 0 + optional uint32 offset = 2; + + // Number of bits to track for metrics starting from configured offset of corresponding + // header field + // default = 16 + optional uint32 length = 3; +} + +// Protocol identifier +message PatternFlowVlanTpid { + + message Choice { + enum Enum { + unspecified = 0; + value = 2; + values = 3; + increment = 4; + decrement = 5; + } + } + // Description missing in models + // default = Choice.Enum.value + optional Choice.Enum choice = 1; + + // Description missing in models + // default = 65535 + optional uint32 value = 2; + + // Description missing in models + // default = [65535] + repeated uint32 values = 3; + + // Description missing in models + PatternFlowVlanTpidCounter increment = 5; + + // Description missing in models + PatternFlowVlanTpidCounter decrement = 6; + + // One or more metric tags can be used to enable tracking portion of or all bits in + // a corresponding header field for metrics per each applicable value. These would appear + // as tagged metrics in corresponding flow metrics. + repeated PatternFlowVlanTpidMetricTag metric_tags = 7; +} + +// integer counter pattern +message PatternFlowVxlanFlagsCounter { + + // Description missing in models + // default = 8 + optional uint32 start = 1; + + // Description missing in models + // default = 1 + optional uint32 step = 2; + + // Description missing in models + // default = 1 + optional uint32 count = 3; +} + +// Metric tag can be used to enable tracking portion of or all bits in a corresponding +// header field for metrics per each applicable value. These would appear as tagged +// metrics in corresponding flow metrics. +message PatternFlowVxlanFlagsMetricTag { + + // Name used to identify the metrics associated with the values applicable for configured + // offset and length inside corresponding header field + // required = true + optional string name = 1; + + // Offset in bits relative to start of corresponding header field + // default = 0 + optional uint32 offset = 2; + + // Number of bits to track for metrics starting from configured offset of corresponding + // header field + // default = 8 + optional uint32 length = 3; +} + +// Flags field with a bit format of RRRRIRRR. The I flag MUST be set to 1 for a valid +// vxlan network id (VNI). The other 7 bits (designated R) are reserved fields and +// MUST be set to zero on transmission and ignored on receipt. +message PatternFlowVxlanFlags { + + message Choice { + enum Enum { + unspecified = 0; + value = 2; + values = 3; + increment = 4; + decrement = 5; + } + } + // Description missing in models + // default = Choice.Enum.value + optional Choice.Enum choice = 1; + + // Description missing in models + // default = 8 + optional uint32 value = 2; + + // Description missing in models + // default = [8] + repeated uint32 values = 3; + + // Description missing in models + PatternFlowVxlanFlagsCounter increment = 5; + + // Description missing in models + PatternFlowVxlanFlagsCounter decrement = 6; + + // One or more metric tags can be used to enable tracking portion of or all bits in + // a corresponding header field for metrics per each applicable value. These would appear + // as tagged metrics in corresponding flow metrics. + repeated PatternFlowVxlanFlagsMetricTag metric_tags = 7; +} + +// integer counter pattern +message PatternFlowVxlanReserved0Counter { + + // Description missing in models + // default = 0 + optional uint32 start = 1; + + // Description missing in models + // default = 1 + optional uint32 step = 2; + + // Description missing in models + // default = 1 + optional uint32 count = 3; +} + +// Metric tag can be used to enable tracking portion of or all bits in a corresponding +// header field for metrics per each applicable value. These would appear as tagged +// metrics in corresponding flow metrics. +message PatternFlowVxlanReserved0MetricTag { + + // Name used to identify the metrics associated with the values applicable for configured + // offset and length inside corresponding header field + // required = true + optional string name = 1; + + // Offset in bits relative to start of corresponding header field + // default = 0 + optional uint32 offset = 2; + + // Number of bits to track for metrics starting from configured offset of corresponding + // header field + // default = 24 + optional uint32 length = 3; +} + +// Reserved field +message PatternFlowVxlanReserved0 { + + message Choice { + enum Enum { + unspecified = 0; + value = 2; + values = 3; + increment = 4; + decrement = 5; + } + } + // Description missing in models + // default = Choice.Enum.value + optional Choice.Enum choice = 1; + + // Description missing in models + // default = 0 + optional uint32 value = 2; + + // Description missing in models + // default = [0] + repeated uint32 values = 3; + + // Description missing in models + PatternFlowVxlanReserved0Counter increment = 5; + + // Description missing in models + PatternFlowVxlanReserved0Counter decrement = 6; + + // One or more metric tags can be used to enable tracking portion of or all bits in + // a corresponding header field for metrics per each applicable value. These would appear + // as tagged metrics in corresponding flow metrics. + repeated PatternFlowVxlanReserved0MetricTag metric_tags = 7; +} + +// integer counter pattern +message PatternFlowVxlanVniCounter { + + // Description missing in models + // default = 0 + optional uint32 start = 1; + + // Description missing in models + // default = 1 + optional uint32 step = 2; + + // Description missing in models + // default = 1 + optional uint32 count = 3; +} + +// Metric tag can be used to enable tracking portion of or all bits in a corresponding +// header field for metrics per each applicable value. These would appear as tagged +// metrics in corresponding flow metrics. +message PatternFlowVxlanVniMetricTag { + + // Name used to identify the metrics associated with the values applicable for configured + // offset and length inside corresponding header field + // required = true + optional string name = 1; + + // Offset in bits relative to start of corresponding header field + // default = 0 + optional uint32 offset = 2; + + // Number of bits to track for metrics starting from configured offset of corresponding + // header field + // default = 24 + optional uint32 length = 3; +} + +// VXLAN network id +message PatternFlowVxlanVni { + + message Choice { + enum Enum { + unspecified = 0; + value = 2; + values = 3; + auto = 1; + increment = 4; + decrement = 5; + } + } + // Description missing in models + // default = Choice.Enum.auto + optional Choice.Enum choice = 1; - // Number of Level 2 Hello messages received. - optional uint64 l2_broadcast_hellos_received = 18; + // Description missing in models + // default = 0 + optional uint32 value = 2; - // Number of Level 2 Point-to-Point(P2P) Hello messages sent. - optional uint64 l2_point_to_point_hellos_sent = 19; + // Description missing in models + // default = [0] + repeated uint32 values = 3; - // Number of Level 2 Point-to-Point(P2P) Hello messages received. - optional uint64 l2_point_to_point_hellos_received = 20; + // The OTG implementation can provide a system generated + // value for this property. If the OTG is unable to generate a value + // the default value must be used. + // default = 0 + optional uint32 auto = 4; - // Number of Link State Updates (LSPs) in the Level 2 LSP Databases. - optional uint64 l2_database_size = 21; + // Description missing in models + PatternFlowVxlanVniCounter increment = 6; - // Number of Level 2 (L2) Partial Sequence Number Packet (PSNPs) sent. - optional uint64 l2_psnp_sent = 22; + // Description missing in models + PatternFlowVxlanVniCounter decrement = 7; - // Number of Level 2 (L2) Complete Sequence Number Packet (PSNPs) received. - optional uint64 l2_psnp_received = 23; + // One or more metric tags can be used to enable tracking portion of or all bits in + // a corresponding header field for metrics per each applicable value. These would appear + // as tagged metrics in corresponding flow metrics. + repeated PatternFlowVxlanVniMetricTag metric_tags = 8; +} - // Number of Level 2 (L2) Complete Sequence Number Packet (CSNPs) sent. - optional uint64 l2_csnp_sent = 24; +// integer counter pattern +message PatternFlowVxlanReserved1Counter { - // Number of Level 2 (L2) Complete Sequence Number Packet (CSNPs) received. - optional uint64 l2_csnp_received = 25; + // Description missing in models + // default = 0 + optional uint32 start = 1; - // Number of Level 2 (L2) Link State Protocol Data Units (LSPs) sent. - optional uint64 l2_lsp_sent = 26; + // Description missing in models + // default = 1 + optional uint32 step = 2; - // Number of Level 2 (L2) Link State Protocol Data Units (LSPs) received. - optional uint64 l2_lsp_received = 27; + // Description missing in models + // default = 1 + optional uint32 count = 3; } -// The request to retrieve per LAG metrics/statistics. -message LagMetricsRequest { +// Metric tag can be used to enable tracking portion of or all bits in a corresponding +// header field for metrics per each applicable value. These would appear as tagged +// metrics in corresponding flow metrics. +message PatternFlowVxlanReserved1MetricTag { - // The names of LAGs to return results for. An empty list will return results for all - // LAGs. - // - // x-constraint: - // - /components/schemas/Lag/properties/name - // - // - // x-constraint: - // - /components/schemas/Lag/properties/name - // - repeated string lag_names = 1; + // Name used to identify the metrics associated with the values applicable for configured + // offset and length inside corresponding header field + // required = true + optional string name = 1; - message ColumnNames { - enum Enum { - unspecified = 0; - oper_status = 1; - member_ports_up = 2; - frames_tx = 3; - frames_rx = 4; - bytes_tx = 5; - bytes_rx = 6; - frames_tx_rate = 7; - frames_rx_rate = 8; - bytes_tx_rate = 9; - bytes_rx_rate = 10; - } - } - // The list of column names that the returned result set will contain. If the list is - // empty then all columns will be returned. The name of the LAG cannot be excluded. - repeated ColumnNames.Enum column_names = 2; -} + // Offset in bits relative to start of corresponding header field + // default = 0 + optional uint32 offset = 2; -// Description missing in models -message LagMetric { + // Number of bits to track for metrics starting from configured offset of corresponding + // header field + // default = 8 + optional uint32 length = 3; +} - // The name of a configured LAG - // - // x-constraint: - // - /components/schemas/Lag/properties/name - // - // - // x-constraint: - // - /components/schemas/Lag/properties/name - // - optional string name = 1; +// Reserved field +message PatternFlowVxlanReserved1 { - message OperStatus { + message Choice { enum Enum { unspecified = 0; - up = 1; - down = 2; + value = 2; + values = 3; + increment = 4; + decrement = 5; } } - // The current operational state of the LAG. The state can be up or down. State 'up' - // indicates member_ports_up >= min_links. - optional OperStatus.Enum oper_status = 2; + // Description missing in models + // default = Choice.Enum.value + optional Choice.Enum choice = 1; - // The number of LAG member ports up. - optional uint32 member_ports_up = 3; + // Description missing in models + // default = 0 + optional uint32 value = 2; - // The current total number of frames transmitted. - optional uint64 frames_tx = 4; + // Description missing in models + // default = [0] + repeated uint32 values = 3; - // The current total number of valid frames received. - optional uint64 frames_rx = 5; + // Description missing in models + PatternFlowVxlanReserved1Counter increment = 5; - // The current total number of bytes transmitted. - optional uint64 bytes_tx = 6; + // Description missing in models + PatternFlowVxlanReserved1Counter decrement = 6; - // The current total number of valid bytes received. - optional uint64 bytes_rx = 7; + // One or more metric tags can be used to enable tracking portion of or all bits in + // a corresponding header field for metrics per each applicable value. These would appear + // as tagged metrics in corresponding flow metrics. + repeated PatternFlowVxlanReserved1MetricTag metric_tags = 7; +} - // The current rate of frames transmitted. - optional float frames_tx_rate = 8; +// integer counter pattern +message PatternFlowIpv4VersionCounter { - // The current rate of valid frames received. - optional float frames_rx_rate = 9; + // Description missing in models + // default = 4 + optional uint32 start = 1; - // The current rate of bytes transmitted. - optional float bytes_tx_rate = 10; + // Description missing in models + // default = 1 + optional uint32 step = 2; - // The current rate of bytes received. - optional float bytes_rx_rate = 11; + // Description missing in models + // default = 1 + optional uint32 count = 3; } -// The request to retrieve LACP per LAG member metrics/statistics. -message LacpMetricsRequest { +// Metric tag can be used to enable tracking portion of or all bits in a corresponding +// header field for metrics per each applicable value. These would appear as tagged +// metrics in corresponding flow metrics. +message PatternFlowIpv4VersionMetricTag { - // The names of LAG (ports group) for which LACP metrics to be returned. An empty list - // will return metrics for all LAGs. - // - // x-constraint: - // - /components/schemas/Lag/properties/name - // - // - // x-constraint: - // - /components/schemas/Lag/properties/name - // - repeated string lag_names = 1; + // Name used to identify the metrics associated with the values applicable for configured + // offset and length inside corresponding header field + // required = true + optional string name = 1; - // The names of LAG members (ports) for which LACP metrics to be returned. An empty - // list will return metrics for all LAG members. - // - // x-constraint: - // - /components/schemas/Port/properties/name - // - // - // x-constraint: - // - /components/schemas/Port/properties/name - // - repeated string lag_member_port_names = 2; + // Offset in bits relative to start of corresponding header field + // default = 0 + optional uint32 offset = 2; - message ColumnNames { + // Number of bits to track for metrics starting from configured offset of corresponding + // header field + // default = 4 + optional uint32 length = 3; +} + +// Version +message PatternFlowIpv4Version { + + message Choice { enum Enum { unspecified = 0; - lacp_packets_rx = 1; - lacp_packets_tx = 2; - lacp_rx_errors = 3; - activity = 4; - timeout = 5; - synchronization = 6; - aggregatable = 7; - collecting = 8; - distributing = 9; - system_id = 10; - oper_key = 11; - partner_id = 12; - partner_key = 13; - port_num = 14; - partner_port_num = 15; + value = 2; + values = 3; + increment = 4; + decrement = 5; } } - // The list of column names that the returned result set will contain. If the list is - // empty then all columns will be returned. The name of LAG and LAG member can not be - // excluded. - repeated ColumnNames.Enum column_names = 3; + // Description missing in models + // default = Choice.Enum.value + optional Choice.Enum choice = 1; + + // Description missing in models + // default = 4 + optional uint32 value = 2; + + // Description missing in models + // default = [4] + repeated uint32 values = 3; + + // Description missing in models + PatternFlowIpv4VersionCounter increment = 5; + + // Description missing in models + PatternFlowIpv4VersionCounter decrement = 6; + + // One or more metric tags can be used to enable tracking portion of or all bits in + // a corresponding header field for metrics per each applicable value. These would appear + // as tagged metrics in corresponding flow metrics. + repeated PatternFlowIpv4VersionMetricTag metric_tags = 7; } -// LACP metrics (statistics) per LAG member. -message LacpMetric { +// integer counter pattern +message PatternFlowIpv4HeaderLengthCounter { - // The name of a LAG (ports group) configured with LACP. - optional string lag_name = 1; + // Description missing in models + // default = 5 + optional uint32 start = 1; - // The name of a LAG member (port) configured with LACP. - optional string lag_member_port_name = 2; + // Description missing in models + // default = 1 + optional uint32 step = 2; - // Number of LACPDUs received. - optional uint64 lacp_packets_rx = 3; + // Description missing in models + // default = 1 + optional uint32 count = 3; +} - // Number of LACPDUs transmitted. - optional uint64 lacp_packets_tx = 4; +// Metric tag can be used to enable tracking portion of or all bits in a corresponding +// header field for metrics per each applicable value. These would appear as tagged +// metrics in corresponding flow metrics. +message PatternFlowIpv4HeaderLengthMetricTag { - // Number of LACPDUs receive packet errors. - optional uint64 lacp_rx_errors = 5; + // Name used to identify the metrics associated with the values applicable for configured + // offset and length inside corresponding header field + // required = true + optional string name = 1; - message Activity { - enum Enum { - unspecified = 0; - active = 1; - passive = 2; - } - } - // Indicates participant is active or passive. - optional Activity.Enum activity = 6; + // Offset in bits relative to start of corresponding header field + // default = 0 + optional uint32 offset = 2; - message Timeout { - enum Enum { - unspecified = 0; - short = 1; - long = 2; - } - } - // The timeout type (short or long) used by the participant. - optional Timeout.Enum timeout = 7; + // Number of bits to track for metrics starting from configured offset of corresponding + // header field + // default = 4 + optional uint32 length = 3; +} - message Synchronization { +// Header length +message PatternFlowIpv4HeaderLength { + + message Choice { enum Enum { unspecified = 0; - in_sync = 1; - out_sync = 2; + value = 2; + values = 3; + auto = 1; + increment = 4; + decrement = 5; } } - // Indicates whether the participant is in-sync or out-of-sync. - optional Synchronization.Enum synchronization = 8; + // Description missing in models + // default = Choice.Enum.auto + optional Choice.Enum choice = 1; - // A true value indicates that the participant will allow the link to be used as part - // of the aggregate. A false value indicates the link should be used as an individual - // link. - optional bool aggregatable = 9; + // Description missing in models + // default = 5 + optional uint32 value = 2; - // If true, the participant is collecting incoming frames on the link, otherwise false. - optional bool collecting = 10; + // Description missing in models + // default = [5] + repeated uint32 values = 3; - // When true, the participant is distributing outgoing frames; when false, distribution - // is disabled. - optional bool distributing = 11; + // The OTG implementation can provide a system generated + // value for this property. If the OTG is unable to generate a value + // the default value must be used. + // default = 5 + optional uint32 auto = 4; - // MAC address that defines the local system ID for the aggregate interface. - optional string system_id = 12; + // Description missing in models + PatternFlowIpv4HeaderLengthCounter increment = 6; - // Current operational value of the key for the aggregate interface. - optional uint32 oper_key = 13; + // Description missing in models + PatternFlowIpv4HeaderLengthCounter decrement = 7; - // MAC address representing the protocol partner's interface system ID. - optional string partner_id = 14; + // One or more metric tags can be used to enable tracking portion of or all bits in + // a corresponding header field for metrics per each applicable value. These would appear + // as tagged metrics in corresponding flow metrics. + repeated PatternFlowIpv4HeaderLengthMetricTag metric_tags = 8; +} - // Operational value of the protocol partner's key. - optional uint32 partner_key = 15; +// integer counter pattern +message PatternFlowIpv4TotalLengthCounter { - // Port number of the local (actor) aggregation member. - optional uint32 port_num = 16; + // Description missing in models + // default = 46 + optional uint32 start = 1; - // Port number of the partner (remote) port for this member port. - optional uint32 partner_port_num = 17; + // Description missing in models + // default = 1 + optional uint32 step = 2; + + // Description missing in models + // default = 1 + optional uint32 count = 3; } -// The request to retrieve LLDP per instance metrics/statistics. -message LldpMetricsRequest { +// Metric tag can be used to enable tracking portion of or all bits in a corresponding +// header field for metrics per each applicable value. These would appear as tagged +// metrics in corresponding flow metrics. +message PatternFlowIpv4TotalLengthMetricTag { - // The names of LLDP instances to return results for. An empty list will return results - // for all LLDP instances. - // - // x-constraint: - // - /components/schemas/Lldp/properties/name - // - // - // x-constraint: - // - /components/schemas/Lldp/properties/name - // - repeated string lldp_names = 1; + // Name used to identify the metrics associated with the values applicable for configured + // offset and length inside corresponding header field + // required = true + optional string name = 1; - message ColumnNames { + // Offset in bits relative to start of corresponding header field + // default = 0 + optional uint32 offset = 2; + + // Number of bits to track for metrics starting from configured offset of corresponding + // header field + // default = 16 + optional uint32 length = 3; +} + +// Total length +message PatternFlowIpv4TotalLength { + + message Choice { enum Enum { unspecified = 0; - frames_rx = 1; - frames_tx = 2; - frames_error_rx = 3; - frames_discard = 4; - tlvs_discard = 5; - tlvs_unknown = 6; + value = 2; + values = 3; + auto = 1; + increment = 4; + decrement = 5; } } - // The requested list of column names for the result set. If the list is empty then - // metrics for all columns will be returned. The name of LLDP instance can not be excluded. - repeated ColumnNames.Enum column_names = 2; + // Description missing in models + // default = Choice.Enum.auto + optional Choice.Enum choice = 1; + + // Description missing in models + // default = 46 + optional uint32 value = 2; + + // Description missing in models + // default = [46] + repeated uint32 values = 3; + + // The OTG implementation can provide a system generated + // value for this property. If the OTG is unable to generate a value + // the default value must be used. + // default = 46 + optional uint32 auto = 4; + + // Description missing in models + PatternFlowIpv4TotalLengthCounter increment = 6; + + // Description missing in models + PatternFlowIpv4TotalLengthCounter decrement = 7; + + // One or more metric tags can be used to enable tracking portion of or all bits in + // a corresponding header field for metrics per each applicable value. These would appear + // as tagged metrics in corresponding flow metrics. + repeated PatternFlowIpv4TotalLengthMetricTag metric_tags = 8; } -// LLDP per instance statistics information. -message LldpMetric { +// integer counter pattern +message PatternFlowIpv4IdentificationCounter { - // The name of the configured LLDP instance. - optional string name = 1; + // Description missing in models + // default = 0 + optional uint32 start = 1; - // Number of LLDP frames received. - optional uint64 frames_rx = 2; + // Description missing in models + // default = 1 + optional uint32 step = 2; - // Number of LLDP frames transmitted. - optional uint64 frames_tx = 3; + // Description missing in models + // default = 1 + optional uint32 count = 3; +} - // Number of LLDP frames received with packet errors. This stat should be incremented - // based on statsFramesInErrorsTotal increment rule in section 10.3.2 of IEEE Std 802.1 - // AB-2005. - optional uint64 frames_error_rx = 4; +// Metric tag can be used to enable tracking portion of or all bits in a corresponding +// header field for metrics per each applicable value. These would appear as tagged +// metrics in corresponding flow metrics. +message PatternFlowIpv4IdentificationMetricTag { - // Number of LLDP frames received that are discarded. This stat should be incremented - // when one or more of the three mandatory TLVs at the beginning of the LLDPDU is missing, - // out of order or contains an out of range information string length. This stat should - // follow the validation rules in section 10.3.2 of IEEE Std 802.1 AB-2005. - optional uint64 frames_discard = 5; + // Name used to identify the metrics associated with the values applicable for configured + // offset and length inside corresponding header field + // required = true + optional string name = 1; - // Number of LLDP tlvs received that are discarded. If any TLV contains an error condition - // specific for that particular TLV or if any TLV extends past the physical end of - // the frame then these TLVs will be discarded. - optional uint64 tlvs_discard = 6; + // Offset in bits relative to start of corresponding header field + // default = 0 + optional uint32 offset = 2; - // Number of LLDP unknown tlvs received. If the OUI of the organizationlly specific - // TLV and/or organizationally defined subtype are not recognized,or if TLV type value - // is in the range of reserved TLV types then these TLVs will be considered as unknown - // TLVs. - optional uint64 tlvs_unknown = 7; + // Number of bits to track for metrics starting from configured offset of corresponding + // header field + // default = 16 + optional uint32 length = 3; } -// The request to retrieve RSVP-TE per Router metrics/statistics. -message RsvpMetricsRequest { - - // The names of RSVP-TE Routers to return results for. An empty list as input will return - // results for all RSVP-TE routers. - // - // x-constraint: - // - /components/schemas/Device.Rsvp/properties/name - // - // - // x-constraint: - // - /components/schemas/Device.Rsvp/properties/name - // - repeated string router_names = 1; +// Identification +message PatternFlowIpv4Identification { - message ColumnNames { + message Choice { enum Enum { unspecified = 0; - ingress_p2p_lsps_configured = 1; - ingress_p2p_lsps_up = 2; - egress_p2p_lsps_up = 3; - lsp_flap_count = 4; - paths_tx = 5; - paths_rx = 6; - resvs_tx = 7; - resvs_rx = 8; - path_tears_tx = 9; - path_tears_rx = 10; - resv_tears_tx = 11; - resv_tears_rx = 12; - path_errors_tx = 13; - path_errors_rx = 14; - resv_errors_tx = 15; - resv_errors_rx = 16; - resv_conf_tx = 17; - resv_conf_rx = 18; - hellos_tx = 19; - hellos_rx = 20; - acks_tx = 21; - acks_rx = 22; - nacks_tx = 23; - nacks_rx = 24; - srefresh_tx = 25; - srefresh_rx = 26; - bundle_tx = 27; - bundle_rx = 28; - path_reevaluation_request_tx = 29; - path_reoptimizations = 30; + value = 2; + values = 3; + increment = 4; + decrement = 5; } } - // The list of column names that the returned result set will contain. If the input - // list is empty then all columns will be returned except for any result_groups. - // - repeated ColumnNames.Enum column_names = 2; -} - -// RSVP-TE per router statistics information. -message RsvpMetric { - - // The name of a configured RSVP router. - optional string name = 1; - - // The number of ingress point-to-point LSPs configured or transiting through the RSVP - // router which have been initated from the test port. - optional uint32 ingress_p2p_lsps_configured = 2; - - // The number of ingress point-to-point LSPs for which Resv has been received and is - // currently up. - optional uint32 ingress_p2p_lsps_up = 3; + // Description missing in models + // default = Choice.Enum.value + optional Choice.Enum choice = 1; - // The number of egress point-to-point LSPs for which Path requests were successfully - // processed and is currently up. - optional uint32 egress_p2p_lsps_up = 4; + // Description missing in models + // default = 0 + optional uint32 value = 2; - // The number of times an LSP went from up to down state either because it timed out - // while waiting for Refreshes or a PathTear or ResvTear message was received which - // caused the LSP to flap. - optional uint64 lsp_flap_count = 5; + // Description missing in models + // default = [0] + repeated uint32 values = 3; - // The number of Path messages sent by this RSVP router. - optional uint64 paths_tx = 6; + // Description missing in models + PatternFlowIpv4IdentificationCounter increment = 5; - // The number of Path messages received by this RSVP router. - optional uint64 paths_rx = 7; + // Description missing in models + PatternFlowIpv4IdentificationCounter decrement = 6; - // The number of Resv messages sent by this RSVP router. - optional uint64 resvs_tx = 8; + // One or more metric tags can be used to enable tracking portion of or all bits in + // a corresponding header field for metrics per each applicable value. These would appear + // as tagged metrics in corresponding flow metrics. + repeated PatternFlowIpv4IdentificationMetricTag metric_tags = 7; +} - // The number of Resv messages received by this RSVP router. - optional uint64 resvs_rx = 9; +// integer counter pattern +message PatternFlowIpv4ReservedCounter { - // The number of Path Tear messages sent by this RSVP router. - optional uint64 path_tears_tx = 10; + // Description missing in models + // default = 0 + optional uint32 start = 1; - // The number of Path Tear messages received by this RSVP router. - optional uint64 path_tears_rx = 11; + // Description missing in models + // default = 1 + optional uint32 step = 2; - // The number of Resv Tear messages sent by this RSVP router. - optional uint64 resv_tears_tx = 12; + // Description missing in models + // default = 1 + optional uint32 count = 3; +} - // The number of Resv Tear messages received by this RSVP router. - optional uint64 resv_tears_rx = 13; +// Metric tag can be used to enable tracking portion of or all bits in a corresponding +// header field for metrics per each applicable value. These would appear as tagged +// metrics in corresponding flow metrics. +message PatternFlowIpv4ReservedMetricTag { - // The number of Path Error messages sent by this RSVP router. - optional uint64 path_errors_tx = 14; + // Name used to identify the metrics associated with the values applicable for configured + // offset and length inside corresponding header field + // required = true + optional string name = 1; - // The number of Path Error messages received by this RSVP router. - optional uint64 path_errors_rx = 15; + // Offset in bits relative to start of corresponding header field + // default = 0 + optional uint32 offset = 2; - // The number of Resv Error messages sent by this RSVP router. - optional uint64 resv_errors_tx = 16; + // Number of bits to track for metrics starting from configured offset of corresponding + // header field + // default = 1 + optional uint32 length = 3; +} - // The number of Resv Error messages received by this RSVP router. - optional uint64 resv_errors_rx = 17; +// Reserved flag. +message PatternFlowIpv4Reserved { - // The number of ResvConf messages sent by this RSVP router. - optional uint64 resv_conf_tx = 18; + message Choice { + enum Enum { + unspecified = 0; + value = 2; + values = 3; + increment = 4; + decrement = 5; + } + } + // Description missing in models + // default = Choice.Enum.value + optional Choice.Enum choice = 1; - // The number of ResvConf messages received by this RSVP router. - optional uint64 resv_conf_rx = 19; + // Description missing in models + // default = 0 + optional uint32 value = 2; - // The number of Hello messages sent by this RSVP router. - optional uint64 hellos_tx = 20; + // Description missing in models + // default = [0] + repeated uint32 values = 3; - // The number of Hello messages received by this RSVP router. - optional uint64 hellos_rx = 21; + // Description missing in models + PatternFlowIpv4ReservedCounter increment = 5; - // The number of Ack messages sent by this RSVP router. - optional uint64 acks_tx = 22; + // Description missing in models + PatternFlowIpv4ReservedCounter decrement = 6; - // The number of Ack messages received by this RSVP router. - optional uint64 acks_rx = 23; + // One or more metric tags can be used to enable tracking portion of or all bits in + // a corresponding header field for metrics per each applicable value. These would appear + // as tagged metrics in corresponding flow metrics. + repeated PatternFlowIpv4ReservedMetricTag metric_tags = 7; +} - // The number of Nack messages sent by this RSVP router. - optional uint64 nacks_tx = 24; +// integer counter pattern +message PatternFlowIpv4DontFragmentCounter { - // The number of Nack messages received by this RSVP router. - optional uint64 nacks_rx = 25; + // Description missing in models + // default = 0 + optional uint32 start = 1; - // The number of SRefresh messages sent by this RSVP router. - optional uint64 srefresh_tx = 26; + // Description missing in models + // default = 1 + optional uint32 step = 2; - // The number of SRefresh messages received by this RSVP router. - optional uint64 srefresh_rx = 27; + // Description missing in models + // default = 1 + optional uint32 count = 3; +} - // The number of Bundle messages sent by this RSVP router. - optional uint64 bundle_tx = 28; +// Metric tag can be used to enable tracking portion of or all bits in a corresponding +// header field for metrics per each applicable value. These would appear as tagged +// metrics in corresponding flow metrics. +message PatternFlowIpv4DontFragmentMetricTag { - // The number of Bundle messages received by this RSVP router. - optional uint64 bundle_rx = 29; + // Name used to identify the metrics associated with the values applicable for configured + // offset and length inside corresponding header field + // required = true + optional string name = 1; - // The number of Path messages with Path Re-evaluation Request enabled sent by this - // RSVP router. - optional uint64 path_reevaluation_request_tx = 30; + // Offset in bits relative to start of corresponding header field + // default = 0 + optional uint32 offset = 2; - // The number of successfully completed Make-Before-Break operations on LSPs on this - // RSVP router. - optional uint64 path_reoptimizations = 31; + // Number of bits to track for metrics starting from configured offset of corresponding + // header field + // default = 1 + optional uint32 length = 3; } -// Request to traffic generator for states of choice -message StatesRequest { +// Dont fragment flag If the dont_fragment flag is set and fragmentation is required +// to route the packet then the packet is dropped. +message PatternFlowIpv4DontFragment { message Choice { - enum Enum { - unspecified = 0; - ipv4_neighbors = 1; - ipv6_neighbors = 2; - bgp_prefixes = 3; - isis_lsps = 4; - lldp_neighbors = 5; - rsvp_lsps = 6; + enum Enum { + unspecified = 0; + value = 2; + values = 3; + increment = 4; + decrement = 5; } } // Description missing in models - // default = Choice.Enum.ipv4_neighbors + // default = Choice.Enum.value optional Choice.Enum choice = 1; // Description missing in models - Neighborsv4StatesRequest ipv4_neighbors = 2; + // default = 0 + optional uint32 value = 2; // Description missing in models - Neighborsv6StatesRequest ipv6_neighbors = 3; + // default = [0] + repeated uint32 values = 3; // Description missing in models - BgpPrefixStateRequest bgp_prefixes = 4; + PatternFlowIpv4DontFragmentCounter increment = 5; // Description missing in models - IsisLspsStateRequest isis_lsps = 5; + PatternFlowIpv4DontFragmentCounter decrement = 6; + + // One or more metric tags can be used to enable tracking portion of or all bits in + // a corresponding header field for metrics per each applicable value. These would appear + // as tagged metrics in corresponding flow metrics. + repeated PatternFlowIpv4DontFragmentMetricTag metric_tags = 7; +} + +// integer counter pattern +message PatternFlowIpv4MoreFragmentsCounter { // Description missing in models - LldpNeighborsStateRequest lldp_neighbors = 6; + // default = 0 + optional uint32 start = 1; // Description missing in models - RsvpLspsStateRequest rsvp_lsps = 7; + // default = 1 + optional uint32 step = 2; + + // Description missing in models + // default = 1 + optional uint32 count = 3; } -// Response containing chosen traffic generator states -message StatesResponse { +// Metric tag can be used to enable tracking portion of or all bits in a corresponding +// header field for metrics per each applicable value. These would appear as tagged +// metrics in corresponding flow metrics. +message PatternFlowIpv4MoreFragmentsMetricTag { + + // Name used to identify the metrics associated with the values applicable for configured + // offset and length inside corresponding header field + // required = true + optional string name = 1; + + // Offset in bits relative to start of corresponding header field + // default = 0 + optional uint32 offset = 2; + + // Number of bits to track for metrics starting from configured offset of corresponding + // header field + // default = 1 + optional uint32 length = 3; +} + +// More fragments flag +message PatternFlowIpv4MoreFragments { message Choice { enum Enum { unspecified = 0; - ipv4_neighbors = 1; - ipv6_neighbors = 2; - bgp_prefixes = 3; - isis_lsps = 4; - lldp_neighbors = 5; - rsvp_lsps = 6; + value = 2; + values = 3; + increment = 4; + decrement = 5; } } // Description missing in models - // default = Choice.Enum.ipv4_neighbors + // default = Choice.Enum.value optional Choice.Enum choice = 1; // Description missing in models - repeated Neighborsv4State ipv4_neighbors = 2; + // default = 0 + optional uint32 value = 2; // Description missing in models - repeated Neighborsv6State ipv6_neighbors = 3; + // default = [0] + repeated uint32 values = 3; // Description missing in models - repeated BgpPrefixesState bgp_prefixes = 4; + PatternFlowIpv4MoreFragmentsCounter increment = 5; // Description missing in models - repeated IsisLspsState isis_lsps = 5; + PatternFlowIpv4MoreFragmentsCounter decrement = 6; - // Description missing in models - repeated LldpNeighborsState lldp_neighbors = 6; + // One or more metric tags can be used to enable tracking portion of or all bits in + // a corresponding header field for metrics per each applicable value. These would appear + // as tagged metrics in corresponding flow metrics. + repeated PatternFlowIpv4MoreFragmentsMetricTag metric_tags = 7; +} + +// integer counter pattern +message PatternFlowIpv4FragmentOffsetCounter { // Description missing in models - repeated RsvpLspsState rsvp_lsps = 7; -} + // default = 0 + optional uint32 start = 1; -// The request to retrieve IPv4 Neighbor state (ARP cache entries) of a network interface(s). -message Neighborsv4StatesRequest { + // Description missing in models + // default = 1 + optional uint32 step = 2; - // The names of Ethernet interfaces for which Neighbor state (ARP cache entries) will - // be retrieved. If no names are specified then the results will contain Neighbor state - // (ARP cache entries) for all available Ethernet interfaces. - // - // x-constraint: - // - /components/schemas/Device.Ethernet/properties/name - // - // - // x-constraint: - // - /components/schemas/Device.Ethernet/properties/name - // - repeated string ethernet_names = 1; + // Description missing in models + // default = 1 + optional uint32 count = 3; } -// IPv4 Neighbor state (ARP cache entry). -message Neighborsv4State { +// Metric tag can be used to enable tracking portion of or all bits in a corresponding +// header field for metrics per each applicable value. These would appear as tagged +// metrics in corresponding flow metrics. +message PatternFlowIpv4FragmentOffsetMetricTag { - // The name of the Ethernet interface associated with the Neighbor state (ARP cache - // entry). + // Name used to identify the metrics associated with the values applicable for configured + // offset and length inside corresponding header field // required = true - optional string ethernet_name = 1; + optional string name = 1; - // The IPv4 address of the neighbor. - // required = true - optional string ipv4_address = 2; + // Offset in bits relative to start of corresponding header field + // default = 0 + optional uint32 offset = 2; - // The link-layer address (MAC) of the neighbor. - optional string link_layer_address = 3; + // Number of bits to track for metrics starting from configured offset of corresponding + // header field + // default = 5 + optional uint32 length = 3; } -// The request to retrieve IPv6 Neighbor state (NDISC cache entries) of a network interface(s). -message Neighborsv6StatesRequest { +// Fragment offset +message PatternFlowIpv4FragmentOffset { - // The names of Ethernet interfaces for which Neighbor state (NDISC cache entries) will - // be retrieved. If no names are specified then the results will contain Neighbor state - // (NDISC cache entries) for all available Ethernet interfaces. - // - // x-constraint: - // - /components/schemas/Device.Ethernet/properties/name - // - // - // x-constraint: - // - /components/schemas/Device.Ethernet/properties/name - // - repeated string ethernet_names = 1; -} + message Choice { + enum Enum { + unspecified = 0; + value = 2; + values = 3; + increment = 4; + decrement = 5; + } + } + // Description missing in models + // default = Choice.Enum.value + optional Choice.Enum choice = 1; -// IPv6 Neighbor state (NDISC cache entry). -message Neighborsv6State { + // Description missing in models + // default = 0 + optional uint32 value = 2; - // The name of the Ethernet interface associated with the Neighbor state (NDISC cache - // entry). - // required = true - optional string ethernet_name = 1; + // Description missing in models + // default = [0] + repeated uint32 values = 3; - // The IPv6 address of the neighbor. - // required = true - optional string ipv6_address = 2; + // Description missing in models + PatternFlowIpv4FragmentOffsetCounter increment = 5; - // The link-layer address (MAC) of the neighbor. - optional string link_layer_address = 3; -} + // Description missing in models + PatternFlowIpv4FragmentOffsetCounter decrement = 6; -// The request to retrieve BGP peer prefix information. -message BgpPrefixStateRequest { + // One or more metric tags can be used to enable tracking portion of or all bits in + // a corresponding header field for metrics per each applicable value. These would appear + // as tagged metrics in corresponding flow metrics. + repeated PatternFlowIpv4FragmentOffsetMetricTag metric_tags = 7; +} - // The names of BGP peers for which prefix information will be retrieved. If no names - // are specified then the results will contain prefix information for all configured - // BGP peers. - // - // x-constraint: - // - /components/schemas/Bgp.V4Peer/properties/name - // - /components/schemas/Bgp.V6Peer/properties/name - // - // - // x-constraint: - // - /components/schemas/Bgp.V4Peer/properties/name - // - /components/schemas/Bgp.V6Peer/properties/name - // - repeated string bgp_peer_names = 1; +// integer counter pattern +message PatternFlowIpv4TimeToLiveCounter { - message PrefixFilters { - enum Enum { - unspecified = 0; - ipv4_unicast = 1; - ipv6_unicast = 2; - } - } - // Specify which prefixes to return. If the list is empty or missing then all prefixes - // will be returned. - repeated PrefixFilters.Enum prefix_filters = 2; + // Description missing in models + // default = 64 + optional uint32 start = 1; - // The IPv4 unicast results can be filtered by specifying additional prefix search criteria. - // If the ipv4_unicast_filters property is missing or empty then all IPv4 prefixes will - // be returned. - repeated BgpPrefixIpv4UnicastFilter ipv4_unicast_filters = 3; + // Description missing in models + // default = 1 + optional uint32 step = 2; - // The IPv6 unicast results can be filtered by specifying additional prefix search criteria. - // If the ipv6_unicast_filters property is missing or empty then all IPv6 prefixes will - // be returned. - repeated BgpPrefixIpv6UnicastFilter ipv6_unicast_filters = 4; + // Description missing in models + // default = 1 + optional uint32 count = 3; } -// Description missing in models -message BgpPrefixIpv4UnicastFilter { +// Metric tag can be used to enable tracking portion of or all bits in a corresponding +// header field for metrics per each applicable value. These would appear as tagged +// metrics in corresponding flow metrics. +message PatternFlowIpv4TimeToLiveMetricTag { + + // Name used to identify the metrics associated with the values applicable for configured + // offset and length inside corresponding header field + // required = true + optional string name = 1; + + // Offset in bits relative to start of corresponding header field + // default = 0 + optional uint32 offset = 2; - // The addresses to match. If the addresses property is missing or empty then all addresses - // will match. - repeated string addresses = 1; + // Number of bits to track for metrics starting from configured offset of corresponding + // header field + // default = 8 + optional uint32 length = 3; +} - // The prefix length to match. If the prefix length is missing then all prefix lengths - // will match. - optional uint32 prefix_length = 2; +// Time to live +message PatternFlowIpv4TimeToLive { - message Origin { + message Choice { enum Enum { unspecified = 0; - igp = 1; - egp = 2; - incomplete = 3; + value = 2; + values = 3; + increment = 4; + decrement = 5; } } - // The origin to match. If the origin is missing then all origins will match. - optional Origin.Enum origin = 3; - - // The path id to match. If the path id is missing then all path ids will match. - optional uint32 path_id = 4; -} + // Description missing in models + // default = Choice.Enum.value + optional Choice.Enum choice = 1; -// Description missing in models -message BgpPrefixIpv6UnicastFilter { + // Description missing in models + // default = 64 + optional uint32 value = 2; - // The addresses to match. If the addresses property is missing or empty then all addresses - // will match. - repeated string addresses = 1; + // Description missing in models + // default = [64] + repeated uint32 values = 3; - // The prefix length to match. If the prefix length is missing then all prefix lengths - // will match. - optional uint32 prefix_length = 2; + // Description missing in models + PatternFlowIpv4TimeToLiveCounter increment = 5; - message Origin { - enum Enum { - unspecified = 0; - igp = 1; - egp = 2; - incomplete = 3; - } - } - // The origin to match. If the origin is missing then all origins will match. - optional Origin.Enum origin = 3; + // Description missing in models + PatternFlowIpv4TimeToLiveCounter decrement = 6; - // The path id to match. If the path id is missing then all path ids will match. - optional uint32 path_id = 4; + // One or more metric tags can be used to enable tracking portion of or all bits in + // a corresponding header field for metrics per each applicable value. These would appear + // as tagged metrics in corresponding flow metrics. + repeated PatternFlowIpv4TimeToLiveMetricTag metric_tags = 7; } -// BGP peer prefixes. -message BgpPrefixesState { +// integer counter pattern +message PatternFlowIpv4ProtocolCounter { - // The name of a BGP peer. - optional string bgp_peer_name = 1; + // Description missing in models + // default = 61 + optional uint32 start = 1; // Description missing in models - repeated BgpPrefixIpv4UnicastState ipv4_unicast_prefixes = 2; + // default = 1 + optional uint32 step = 2; // Description missing in models - repeated BgpPrefixIpv6UnicastState ipv6_unicast_prefixes = 3; + // default = 1 + optional uint32 count = 3; } -// IPv4 unicast prefix. -message BgpPrefixIpv4UnicastState { +// Metric tag can be used to enable tracking portion of or all bits in a corresponding +// header field for metrics per each applicable value. These would appear as tagged +// metrics in corresponding flow metrics. +message PatternFlowIpv4ProtocolMetricTag { - // An IPv4 unicast address - optional string ipv4_address = 1; + // Name used to identify the metrics associated with the values applicable for configured + // offset and length inside corresponding header field + // required = true + optional string name = 1; - // The length of the prefix. - optional uint32 prefix_length = 2; + // Offset in bits relative to start of corresponding header field + // default = 0 + optional uint32 offset = 2; - message Origin { + // Number of bits to track for metrics starting from configured offset of corresponding + // header field + // default = 8 + optional uint32 length = 3; +} + +// Protocol, default is 61 any host internal protocol +message PatternFlowIpv4Protocol { + + message Choice { enum Enum { unspecified = 0; - igp = 1; - egp = 2; - incomplete = 3; + value = 2; + values = 3; + auto = 1; + increment = 4; + decrement = 5; } } - // The origin of the prefix. - optional Origin.Enum origin = 3; - - // The path id. - optional uint32 path_id = 4; + // Description missing in models + // default = Choice.Enum.auto + optional Choice.Enum choice = 1; - // The IPv4 address of the egress interface. - optional string ipv4_next_hop = 5; + // Description missing in models + // default = 61 + optional uint32 value = 2; - // The IPv6 address of the egress interface. - optional string ipv6_next_hop = 6; + // Description missing in models + // default = [61] + repeated uint32 values = 3; - // Optional community attributes. - repeated ResultBgpCommunity communities = 7; + // The OTG implementation can provide a system generated + // value for this property. If the OTG is unable to generate a value + // the default value must be used. + // default = 61 + optional uint32 auto = 4; // Description missing in models - ResultBgpAsPath as_path = 8; + PatternFlowIpv4ProtocolCounter increment = 6; - // The local preference is a well-known attribute and the value is used for route selection. - // The route with the highest local preference value is preferred. - optional uint32 local_preference = 9; + // Description missing in models + PatternFlowIpv4ProtocolCounter decrement = 7; - // The multi exit discriminator (MED) is an optional non-transitive attribute and the - // value is used for route selection. The route with the lowest MED value is preferred. - optional uint32 multi_exit_discriminator = 10; + // One or more metric tags can be used to enable tracking portion of or all bits in + // a corresponding header field for metrics per each applicable value. These would appear + // as tagged metrics in corresponding flow metrics. + repeated PatternFlowIpv4ProtocolMetricTag metric_tags = 8; } -// IPv6 unicast prefix. -message BgpPrefixIpv6UnicastState { - - // An IPv6 unicast address - optional string ipv6_address = 1; - - // The length of the prefix. - optional uint32 prefix_length = 2; +// Header checksum +message PatternFlowIpv4HeaderChecksum { - message Origin { + message Choice { enum Enum { unspecified = 0; - igp = 1; - egp = 2; - incomplete = 3; + generated = 1; + custom = 2; } } - // The origin of the prefix. - optional Origin.Enum origin = 3; - - // The path id. - optional uint32 path_id = 4; + // The type of checksum + // default = Choice.Enum.generated + optional Choice.Enum choice = 1; - // The IPv4 address of the egress interface. - optional string ipv4_next_hop = 5; + message Generated { + enum Enum { + unspecified = 0; + good = 1; + bad = 2; + } + } + // A system generated checksum value + // default = Generated.Enum.good + optional Generated.Enum generated = 2; - // The IPv6 address of the egress interface. - optional string ipv6_next_hop = 6; + // A custom checksum value + optional uint32 custom = 3; +} - // Optional community attributes. - repeated ResultBgpCommunity communities = 7; +// ipv4 counter pattern +message PatternFlowIpv4SrcCounter { // Description missing in models - ResultBgpAsPath as_path = 8; + // default = 0.0.0.0 + optional string start = 1; - // The local preference is a well-known attribute and the value is used for route selection. - // The route with the highest local preference value is preferred. - optional uint32 local_preference = 9; + // Description missing in models + // default = 0.0.0.1 + optional string step = 2; - // The multi exit discriminator (MED) is an optional non-transitive attribute and the - // value is used for route selection. The route with the lowest MED value is preferred. - optional uint32 multi_exit_discriminator = 10; + // Description missing in models + // default = 1 + optional uint32 count = 3; } -// BGP communities provide additional capability for tagging routes and for modifying -// BGP routing policy on upstream and downstream routers. BGP community is a 32-bit -// number which is broken into 16-bit AS number and a 16-bit custom value. -message ResultBgpCommunity { - - message Type { - enum Enum { - unspecified = 0; - manual_as_number = 1; - no_export = 2; - no_advertised = 3; - no_export_subconfed = 4; - llgr_stale = 5; - no_llgr = 6; - } - } - // The type of community AS number. If community type is manual_as_number then as_number - // and as_custom will be available. - optional Type.Enum type = 1; - - // First two octets of 32 bit community AS number. - optional uint32 as_number = 2; +// Metric tag can be used to enable tracking portion of or all bits in a corresponding +// header field for metrics per each applicable value. These would appear as tagged +// metrics in corresponding flow metrics. +message PatternFlowIpv4SrcMetricTag { - // Last two octets of the community value. - optional uint32 as_custom = 3; -} + // Name used to identify the metrics associated with the values applicable for configured + // offset and length inside corresponding header field + // required = true + optional string name = 1; -// This attribute identifies the autonomous systems through which routing information -// carried in this UPDATE message has passed. -message ResultBgpAsPath { + // Offset in bits relative to start of corresponding header field + // default = 0 + optional uint32 offset = 2; - // AS Path segments present in the received AS Path attribute. - repeated ResultBgpAsPathSegment segments = 1; + // Number of bits to track for metrics starting from configured offset of corresponding + // header field + // default = 32 + optional uint32 length = 3; } -// Configuration for a single BGP AS path segment -message ResultBgpAsPathSegment { +// Source address +message PatternFlowIpv4Src { - message Type { + message Choice { enum Enum { unspecified = 0; - as_seq = 1; - as_set = 2; - as_confed_seq = 3; - as_confed_set = 4; + value = 2; + values = 3; + increment = 4; + decrement = 5; } } - // AS sequence is the most common type of AS_PATH, it contains the list of ASNs starting - // with the most recent ASN being added read from left to right. - // The other three AS_PATH types are used for Confederations - AS_SET is the type of - // AS_PATH attribute that summarizes routes using using the aggregate-address command, - // allowing AS_PATHs to be summarized in the update as well. - AS_CONFED_SEQ gives - // the list of ASNs in the path starting with the most recent ASN to be added reading - // left to right - AS_CONFED_SET will allow summarization of multiple AS PATHs to be - // sent in BGP Updates. - optional Type.Enum type = 1; - - // The AS numbers in this AS path segment. - repeated uint32 as_numbers = 2; -} + // Description missing in models + // default = Choice.Enum.value + optional Choice.Enum choice = 1; -// The request to retrieve ISIS Link State PDU (LSP) information learned by the router. -message IsisLspsStateRequest { + // Description missing in models + // default = 0.0.0.0 + optional string value = 2; - // The names of ISIS routers for which learned information is requested. An empty list - // will return results for all ISIS routers. - // - // x-constraint: - // - /components/schemas/Device.IsisRouter/properties/name - // - // - // x-constraint: - // - /components/schemas/Device.IsisRouter/properties/name - // - repeated string isis_router_names = 1; -} + // Description missing in models + // default = ['0.0.0.0'] + repeated string values = 3; -// The result of ISIS LSP information that are retrieved. -message IsisLspsState { + // Description missing in models + PatternFlowIpv4SrcCounter increment = 5; - // The name of the ISIS Router. - optional string isis_router_name = 1; + // Description missing in models + PatternFlowIpv4SrcCounter decrement = 6; - // One or more LSPs that are learned by this ISIS router. - repeated IsisLspState lsps = 2; + // One or more metric tags can be used to enable tracking portion of or all bits in + // a corresponding header field for metrics per each applicable value. These would appear + // as tagged metrics in corresponding flow metrics. + repeated PatternFlowIpv4SrcMetricTag metric_tags = 7; } -// ISIS LSP. -message IsisLspState { - - // LSP ID in the format, e.g. '640000000001-00-00'. LSP ID consists of the System ID - // of a neighbor, the Pseudonode ID, and the LSP number. The last two bytes represent - // Pseudonode ID and LSP number respectively. A pseudonode is a logical representation - // of the LAN which is generated by a Designated Intermediate System (DIS) on a LAN - // segment. If one LSP exceeds the maximum LSP size then it is sent in another LSP with - // the LSP number incremented by one. A router's learned LSP gets refreshed by 'remaining_lifetime'. - // Then the sequence number is incremented by 1. - // required = true - optional string lsp_id = 1; +// ipv4 counter pattern +message PatternFlowIpv4DstCounter { - message PduType { - enum Enum { - unspecified = 0; - level_1 = 1; - level_2 = 2; - } - } - // Link State PDU type. - optional PduType.Enum pdu_type = 2; + // Description missing in models + // default = 0.0.0.0 + optional string start = 1; - // Remaining lifetime in seconds before LSP expires. - optional uint32 remaining_lifetime = 3; + // Description missing in models + // default = 0.0.0.1 + optional string step = 2; - // Sequence number of the LSP. - optional uint64 sequence_number = 4; + // Description missing in models + // default = 1 + optional uint32 count = 3; +} - // Total length of the LSP. - optional uint32 pdu_length = 5; +// Metric tag can be used to enable tracking portion of or all bits in a corresponding +// header field for metrics per each applicable value. These would appear as tagged +// metrics in corresponding flow metrics. +message PatternFlowIpv4DstMetricTag { - // LSP Type-Block flags. - IsisLspFlags flags = 6; + // Name used to identify the metrics associated with the values applicable for configured + // offset and length inside corresponding header field + // required = true + optional string name = 1; - // IS Type - bits 1 and 2 indicate the type of Intermediate System. - // 1 - ( i.e. bit 1 set) Level 1 Intermediate system. - // 2 - Unused value. - // 3 - (i.e. bits 1 and 2 set) Level 2 Intermediate system. - optional uint32 is_type = 7; + // Offset in bits relative to start of corresponding header field + // default = 0 + optional uint32 offset = 2; - // It refers to Link State PDU State TLVs container. - IsisLspTlvs tlvs = 8; + // Number of bits to track for metrics starting from configured offset of corresponding + // header field + // default = 32 + optional uint32 length = 3; } -// This contains the list of TLVs present in one LSP. -message IsisLspTlvs { - - // Array of Hostname TLVs ( type 137) present in this LSP. - repeated IsisLspHostname hostname_tlvs = 1; +// Destination address +message PatternFlowIpv4Dst { - // Array of IS-Reachability TLVs (type 2) present in this LSP. - repeated IsisLspIsReachabilityTlv is_reachability_tlvs = 2; + message Choice { + enum Enum { + unspecified = 0; + value = 2; + values = 3; + increment = 4; + decrement = 5; + } + } + // Description missing in models + // default = Choice.Enum.value + optional Choice.Enum choice = 1; - // Array of Extended IS-Reachability TLVs (type 22) present in this LSP. - repeated IsisLspExtendedIsReachabilityTlv extended_is_reachability_tlvs = 3; + // Description missing in models + // default = 0.0.0.0 + optional string value = 2; - // Array of IPv4 Internal Reachability TLVs (type 128) present in this LSP. - repeated IsisLspIpv4InternalReachabilityTlv ipv4_internal_reachability_tlvs = 4; + // Description missing in models + // default = ['0.0.0.0'] + repeated string values = 3; - // Array of IPv4 External Reachability TLVs (type 130) present in this LSP. - repeated IsisLspIpv4ExternalReachabilityTlv ipv4_external_reachability_tlvs = 5; + // Description missing in models + PatternFlowIpv4DstCounter increment = 5; - // Array of IPv4 Extended Reachability TLVs (type 135) present in this LSP. - repeated IsisLspExtendedIpv4ReachabilityTlv extended_ipv4_reachability_tlvs = 6; + // Description missing in models + PatternFlowIpv4DstCounter decrement = 6; - // Array of IPv6 Reachability TLVs (type 236) present in this LSP. - repeated IsisLspIpv6ReachabilityTlv ipv6_reachability_tlvs = 7; + // One or more metric tags can be used to enable tracking portion of or all bits in + // a corresponding header field for metrics per each applicable value. These would appear + // as tagged metrics in corresponding flow metrics. + repeated PatternFlowIpv4DstMetricTag metric_tags = 7; } -// It contains Hostname for the TLV 137. -message IsisLspHostname { - - // Hostname for an ISIS router. - optional string hostname = 1; -} +// integer counter pattern +message PatternFlowIpv4PriorityRawCounter { -// LSP Type flags. -message IsisLspFlags { + // Description missing in models + // default = 0 + optional uint32 start = 1; - // When set, the originator supports partition repair. - optional bool partition_repair = 1; + // Description missing in models + // default = 1 + optional uint32 step = 2; - // When set, the originator is attached to another area using the referred metric. - optional bool attached_error = 2; + // Description missing in models + // default = 1 + optional uint32 count = 3; +} - // When set, the originator is attached to another - // area using the referred metric. - optional bool attached_expense = 3; +// Metric tag can be used to enable tracking portion of or all bits in a corresponding +// header field for metrics per each applicable value. These would appear as tagged +// metrics in corresponding flow metrics. +message PatternFlowIpv4PriorityRawMetricTag { - // Delay Metric - when set, the originator is attached to another - // area using the referred metric. - optional bool attached_delay = 4; + // Name used to identify the metrics associated with the values applicable for configured + // offset and length inside corresponding header field + // required = true + optional string name = 1; - // Default Metric - when set, the originator is attached to another - // area using the referred metric. - optional bool attached_default = 5; + // Offset in bits relative to start of corresponding header field + // default = 0 + optional uint32 offset = 2; - // Overload bit - when set, the originator is overloaded, and must - // be avoided in path calculation. - optional bool overload = 6; + // Number of bits to track for metrics starting from configured offset of corresponding + // header field + // default = 8 + optional uint32 length = 3; } -// This container describes list of ISIS neighbors and attributes in IS-Reachability -// TLV (type 2). -message IsisLspIsReachabilityTlv { +// Raw priority +message PatternFlowIpv4PriorityRaw { - // This container describes Intermediate System (IS) neighbors. - repeated IsisLspneighbor neighbors = 1; -} + message Choice { + enum Enum { + unspecified = 0; + value = 2; + values = 3; + increment = 4; + decrement = 5; + } + } + // Description missing in models + // default = Choice.Enum.value + optional Choice.Enum choice = 1; -// This is list of ISIS neighbors and attributes in Extended-IS-Reachability TLV (type -// 22). -message IsisLspExtendedIsReachabilityTlv { + // Description missing in models + // default = 0 + optional uint32 value = 2; + + // Description missing in models + // default = [0] + repeated uint32 values = 3; - // This container describes IS neighbors. - repeated IsisLspneighbor neighbors = 1; -} + // Description missing in models + PatternFlowIpv4PriorityRawCounter increment = 5; -// This contains IS neighbors. -message IsisLspneighbor { + // Description missing in models + PatternFlowIpv4PriorityRawCounter decrement = 6; - // The System ID for this emulated ISIS router, e.g. 640100010000. - optional string system_id = 1; + // One or more metric tags can be used to enable tracking portion of or all bits in + // a corresponding header field for metrics per each applicable value. These would appear + // as tagged metrics in corresponding flow metrics. + repeated PatternFlowIpv4PriorityRawMetricTag metric_tags = 7; } -// This container defines list of IPv4 internal reachability information in one IPv4 -// internal reachability TLV. -// This is advertised when the origin-type is set 'internal' in route range configurations. -message IsisLspIpv4InternalReachabilityTlv { +// integer counter pattern +message PatternFlowIpv4DscpPhbCounter { - // Describes list of IPv4 prefixes in this TLV. - repeated IsisLspV4Prefix prefixes = 1; -} + // Description missing in models + // default = 0 + optional uint32 start = 1; -// This container defines list of IPv4 external reachability information in one IPv4 -// external reachability TLV. -// This is advertised when the origin-type is set 'external' in route range configurations. -message IsisLspIpv4ExternalReachabilityTlv { + // Description missing in models + // default = 1 + optional uint32 step = 2; - // Describes list of IPv4 prefixes in this TLV.. - repeated IsisLspV4Prefix prefixes = 1; + // Description missing in models + // default = 1 + optional uint32 count = 3; } -// This group defines attributes of an IPv4 standard prefix. -message IsisLspV4Prefix { +// Metric tag can be used to enable tracking portion of or all bits in a corresponding +// header field for metrics per each applicable value. These would appear as tagged +// metrics in corresponding flow metrics. +message PatternFlowIpv4DscpPhbMetricTag { - // An IPv4 unicast prefix reachable via the originator of this LSP. - optional string ipv4_address = 1; + // Name used to identify the metrics associated with the values applicable for configured + // offset and length inside corresponding header field + // required = true + optional string name = 1; - // The length of the IPv4 prefix. - optional uint32 prefix_length = 2; + // Offset in bits relative to start of corresponding header field + // default = 0 + optional uint32 offset = 2; - message RedistributionType { - enum Enum { - unspecified = 0; - up = 1; - down = 2; - } - } - // Up (0)-used when a prefix is initially advertised within the ISIS L3 hierarchy, - // and for all other prefixes in L1 and L2 LSPs. (default) - // Down (1)-used when an L1/L2 router advertises L2 prefixes in L1 LSPs. - // The prefixes are being advertised from a higher level (L2) down to a lower level - // (L1). - optional RedistributionType.Enum redistribution_type = 3; + // Number of bits to track for metrics starting from configured offset of corresponding + // header field + // default = 6 + optional uint32 length = 3; +} - // ISIS default metric value. - optional uint32 default_metric = 4; +// Per hop behavior +message PatternFlowIpv4DscpPhb { - message OriginType { + message Choice { enum Enum { unspecified = 0; - internal = 1; - external = 2; + value = 2; + values = 3; + increment = 4; + decrement = 5; } } - // The origin of the advertised route-internal or external to the ISIS area. Options - // include the following: - // Internal-for intra-area routes, through Level 1 LSPs. - // External-for inter-area routes redistributed within L1, through Level - // 1 LSPs. - optional OriginType.Enum origin_type = 5; -} - -// This container defines list of IPv4 extended reachability information in one Extended -// IPv4 External Reachability TLV. -// It is advertised when the 'wide metric' is enabled. -message IsisLspExtendedIpv4ReachabilityTlv { + // Description missing in models + // default = Choice.Enum.value + optional Choice.Enum choice = 1; - // IPv4 prefix contained within extended reachability TLVs. - repeated IsisLspExtendedV4Prefix prefixes = 1; -} + // Description missing in models + // default = 0 + optional uint32 value = 2; -// This group defines attributes of an IPv4 standard prefix. -message IsisLspExtendedV4Prefix { + // Description missing in models + // default = [0] + repeated uint32 values = 3; - // An IPv4 unicast prefix reachable via the originator of this LSP. - optional string ipv4_address = 1; + // Description missing in models + PatternFlowIpv4DscpPhbCounter increment = 5; - // The length of the IPv4 prefix. - optional uint32 prefix_length = 2; + // Description missing in models + PatternFlowIpv4DscpPhbCounter decrement = 6; - // ISIS wide metric. - optional uint32 metric = 3; + // One or more metric tags can be used to enable tracking portion of or all bits in + // a corresponding header field for metrics per each applicable value. These would appear + // as tagged metrics in corresponding flow metrics. + repeated PatternFlowIpv4DscpPhbMetricTag metric_tags = 7; +} - message RedistributionType { - enum Enum { - unspecified = 0; - up = 1; - down = 2; - } - } - // Up (0)-used when a prefix is initially advertised within the ISIS L3 hierarchy, - // and for all other prefixes in L1 and L2 LSPs. (default) - // Down (1)-used when an L1/L2 router advertises L2 prefixes in L1 LSPs. - // The prefixes are being advertised from a higher level (L2) down to a lower level - // (L1). - optional RedistributionType.Enum redistribution_type = 4; +// integer counter pattern +message PatternFlowIpv4DscpEcnCounter { // Description missing in models - IsisLspPrefixAttributes prefix_attributes = 5; -} + // default = 0 + optional uint32 start = 1; -// It defines list of IPv6 extended reachability information in one IPv6 Reachability -// TLV. -message IsisLspIpv6ReachabilityTlv { + // Description missing in models + // default = 1 + optional uint32 step = 2; - // IPv6 prefix contained within reachability TLVs. - repeated IsisLspV6Prefix prefixes = 1; + // Description missing in models + // default = 1 + optional uint32 count = 3; } -// It defines attributes of an IPv6 standard prefix. -message IsisLspV6Prefix { +// Metric tag can be used to enable tracking portion of or all bits in a corresponding +// header field for metrics per each applicable value. These would appear as tagged +// metrics in corresponding flow metrics. +message PatternFlowIpv4DscpEcnMetricTag { - // An IPv6 unicast prefix reachable via the originator of this LSP. - optional string ipv6_address = 1; + // Name used to identify the metrics associated with the values applicable for configured + // offset and length inside corresponding header field + // required = true + optional string name = 1; - // The length of the IPv6 prefix. - optional uint32 prefix_length = 2; + // Offset in bits relative to start of corresponding header field + // default = 0 + optional uint32 offset = 2; - // ISIS wide metric. - optional uint32 metric = 3; + // Number of bits to track for metrics starting from configured offset of corresponding + // header field + // default = 2 + optional uint32 length = 3; +} - message RedistributionType { - enum Enum { - unspecified = 0; - up = 1; - down = 2; - } - } - // Up (0)-used when a prefix is initially advertised within the ISIS L3 hierarchy, - // and for all other prefixes in L1 and L2 LSPs. (default) - // Down (1)-used when an L1/L2 router advertises L2 prefixes in L1 LSPs. - // The prefixes are being advertised from a higher level (L2) down to a lower level - // (L1). - optional RedistributionType.Enum redistribution_type = 4; +// Explicit congestion notification +message PatternFlowIpv4DscpEcn { - message OriginType { + message Choice { enum Enum { unspecified = 0; - internal = 1; - external = 2; + value = 2; + values = 3; + increment = 4; + decrement = 5; } } - // The origin of the advertised route-internal or external to the ISIS area. Options - // include the following: - // Internal-for intra-area routes, through Level 1 LSPs. - // External-for inter-area routes redistributed within L1, through Level - // 1 LSPs. - optional OriginType.Enum origin_type = 5; + // Description missing in models + // default = Choice.Enum.value + optional Choice.Enum choice = 1; // Description missing in models - IsisLspPrefixAttributes prefix_attributes = 6; -} + // default = 0 + optional uint32 value = 2; -// This contains the properties of ISIS Prefix attributes for the extended IPv4 and -// IPv6 reachability. https://www.rfc-editor.org/rfc/rfc7794.html -message IsisLspPrefixAttributes { + // Description missing in models + // default = [0] + repeated uint32 values = 3; - // External Prefix Flag (Bit 0) - optional bool x_flag = 1; + // Description missing in models + PatternFlowIpv4DscpEcnCounter increment = 5; - // Re-advertisement Flag (Bit 1) - optional bool r_flag = 2; + // Description missing in models + PatternFlowIpv4DscpEcnCounter decrement = 6; - // Node Flag (Bit 2) - optional bool n_flag = 3; + // One or more metric tags can be used to enable tracking portion of or all bits in + // a corresponding header field for metrics per each applicable value. These would appear + // as tagged metrics in corresponding flow metrics. + repeated PatternFlowIpv4DscpEcnMetricTag metric_tags = 7; } -// The request to retrieve LLDP neighbor information for a given instance. -message LldpNeighborsStateRequest { - - // The names of LLDP instances for which neighbor information will be retrieved. If - // no names are specified then the results will contain neighbor information for all - // configured LLDP instances. - // - // x-constraint: - // - /components/schemas/Lldp/properties/name - // - // - // x-constraint: - // - /components/schemas/Lldp/properties/name - // - repeated string lldp_names = 1; +// integer counter pattern +message PatternFlowIpv4TosPrecedenceCounter { - // Specify the neighbors for which information will be returned. If empty or missing - // then information for all neighbors will be returned. - repeated string neighbor_id_filters = 2; + // Description missing in models + // default = 0 + optional uint32 start = 1; + + // Description missing in models + // default = 1 + optional uint32 step = 2; + + // Description missing in models + // default = 1 + optional uint32 count = 3; } -// LLDP neighbor information. -message LldpNeighborsState { +// Metric tag can be used to enable tracking portion of or all bits in a corresponding +// header field for metrics per each applicable value. These would appear as tagged +// metrics in corresponding flow metrics. +message PatternFlowIpv4TosPrecedenceMetricTag { - // The name of the LLDP instance. - optional string lldp_name = 1; + // Name used to identify the metrics associated with the values applicable for configured + // offset and length inside corresponding header field + // required = true + optional string name = 1; - // The system name field shall contain an alpha-numeric string that indicates the system's - // administratively assigned name. The system name should be the system's fully qualified - // domain name. If implementations support IETF RFC 3418, the sysName object should - // be used for this field. - optional string system_name = 2; + // Offset in bits relative to start of corresponding header field + // default = 0 + optional uint32 offset = 2; - // The system description field shall contain an alpha-numeric string that is the textual - // description of the network entity. The system description should include the full - // name and version identification of the system's hardware type, software operating - // system, and networking software. If implementations support IETF RFC 3418, the sysDescr - // object should be used for this field. - optional string system_description = 3; + // Number of bits to track for metrics starting from configured offset of corresponding + // header field + // default = 3 + optional uint32 length = 3; +} - // The Chassis ID is a mandatory TLV which identifies the chassis component of the - // endpoint identifier associated with the transmitting LLDP agent. - optional string chassis_id = 4; +// Precedence +message PatternFlowIpv4TosPrecedence { - message ChassisIdType { + message Choice { enum Enum { unspecified = 0; - port_component = 1; - network_address = 2; - chassis_component = 3; - mac_address = 4; - interface_name = 5; - local = 6; - interface_alias = 7; + value = 2; + values = 3; + increment = 4; + decrement = 5; } } - // This field identifies the format and source of the chassis identifier string. It - // is an enumerator defined by the LldpChassisIdSubtype object from IEEE 802.1AB MIB. - optional ChassisIdType.Enum chassis_id_type = 5; - - // System generated identifier for the neighbor on the LLDP instance. - optional string neighbor_id = 6; - - // Age since discovery in seconds. - optional uint32 age = 7; + // Description missing in models + // default = Choice.Enum.value + optional Choice.Enum choice = 1; - // Seconds since last update received. - optional uint32 last_update = 8; + // Description missing in models + // default = 0 + optional uint32 value = 2; - // The time-to-live (TTL) in seconds is a mandatory TLV which indicates how long information - // from the neighbor should be considered valid. - optional uint32 ttl = 9; + // Description missing in models + // default = [0] + repeated uint32 values = 3; - // The Port ID is a mandatory TLV which identifies the port component of the endpoint - // identifier associated with the transmitting LLDP agent. If the specified port is - // an IEEE 802.3 Repeater port, then this TLV is optional. - optional string port_id = 10; + // Description missing in models + PatternFlowIpv4TosPrecedenceCounter increment = 5; - message PortIdType { - enum Enum { - unspecified = 0; - port_component = 1; - network_address = 2; - agent_circuit_id = 3; - mac_address = 4; - interface_name = 5; - local = 6; - interface_alias = 7; - } - } - // This field identifies the format and source of the port identifier string. It is - // an enumerator defined by the PtopoPortIdType object from RFC2922. - optional PortIdType.Enum port_id_type = 11; + // Description missing in models + PatternFlowIpv4TosPrecedenceCounter decrement = 6; - // The binary string containing the actual port identifier for the port which this LLDP - // PDU was transmitted. The source and format of this field is defined by PtopoPortId - // from RFC2922. - optional string port_description = 12; + // One or more metric tags can be used to enable tracking portion of or all bits in + // a corresponding header field for metrics per each applicable value. These would appear + // as tagged metrics in corresponding flow metrics. + repeated PatternFlowIpv4TosPrecedenceMetricTag metric_tags = 7; +} - // The Management Address is a mandatory TLV which identifies a network address associated - // with the local LLDP agent, which can be used to reach the agent on the port identified - // in the Port ID TLV. - optional string management_address = 13; +// integer counter pattern +message PatternFlowIpv4TosDelayCounter { - // The enumerated value for the network address type identified in this TLV. This enumeration - // is defined in the 'Assigned Numbers' RFC [RFC3232] and the ianaAddressFamilyNumbers - // object. - optional string management_address_type = 14; + // Description missing in models + // default = 0 + optional uint32 start = 1; // Description missing in models - repeated LldpCustomTLVState custom_tlvs = 15; + // default = 1 + optional uint32 step = 2; // Description missing in models - repeated LldpCapabilityState capabilities = 16; + // default = 1 + optional uint32 count = 3; } -// Custom TLV received from a neighbor.Custom TLVs are organization specific TLVs advertised -// with TLV type 127. -message LldpCustomTLVState { +// Metric tag can be used to enable tracking portion of or all bits in a corresponding +// header field for metrics per each applicable value. These would appear as tagged +// metrics in corresponding flow metrics. +message PatternFlowIpv4TosDelayMetricTag { - // The integer value identifying the type of information contained in the value field. - optional uint32 custom_type = 1; + // Name used to identify the metrics associated with the values applicable for configured + // offset and length inside corresponding header field + // required = true + optional string name = 1; - // The organizationally unique identifier field shall contain the organization's OUI - // as defined in Clause 9 of IEEE Std 802. The high-order octet is 0 and the low-order - // 3 octets are the SMI Network Management Private Enterprise Code of the Vendor in - // network byte order, as defined in the 'Assigned Numbers' RFC [RFC3232]. - optional string oui = 2; + // Offset in bits relative to start of corresponding header field + // default = 0 + optional uint32 offset = 2; - // The organizationally defined subtype field shall contain a unique subtype value assigned - // by the defining organization. - optional string oui_subtype = 3; + // Number of bits to track for metrics starting from configured offset of corresponding + // header field + // default = 1 + optional uint32 length = 3; } -// LLDP system capability advertised by the neighbor -message LldpCapabilityState { +// Delay +message PatternFlowIpv4TosDelay { - message CapabilityName { + message Choice { enum Enum { unspecified = 0; - mac_bridge = 1; - two_port_mac_relay = 2; - repeater = 3; - docsis_cable_device = 4; - s_vlan = 5; - telephone = 6; - other = 7; - router = 8; - c_vlan = 9; - station_only = 10; - wlan_access_point = 11; + value = 2; + values = 3; + increment = 4; + decrement = 5; } } - // Name of the system capability advertised by the neighbor. Capabilities are represented - // in a bitmap that defines the primary functions of the system. The capabilities are - // defined in IEEE 802.1AB. - optional CapabilityName.Enum capability_name = 1; - - // Indicates whether the corresponding system capability is enabled on the neighbor. - optional bool capability_enabled = 2; -} + // Description missing in models + // default = Choice.Enum.value + optional Choice.Enum choice = 1; -// The request to retrieve RSVP Label Switched Path (LSP) information learned by the -// router. -message RsvpLspsStateRequest { + // Description missing in models + // default = 0 + optional uint32 value = 2; - // The names of RSVP-TE routers for which learned information is requested. An empty - // list will return results for all RSVP=TE routers. - // - // x-constraint: - // - /components/schemas/Device.Rsvp/properties/name - // - // - // x-constraint: - // - /components/schemas/Device.Rsvp/properties/name - // - repeated string rsvp_router_names = 1; -} + // Description missing in models + // default = [0] + repeated uint32 values = 3; -// Discovered IPv4 Point-to-Point LSPs of a RSVP-TE router. -message RsvpLspsState { + // Description missing in models + PatternFlowIpv4TosDelayCounter increment = 5; - // The name of the RSVP-TE Router. - optional string rsvp_router_name = 1; + // Description missing in models + PatternFlowIpv4TosDelayCounter decrement = 6; - // IPv4 Point-to-Point RSVP-TE Discovered LSPs. - repeated RsvpIPv4LspState ipv4_lsps = 2; + // One or more metric tags can be used to enable tracking portion of or all bits in + // a corresponding header field for metrics per each applicable value. These would appear + // as tagged metrics in corresponding flow metrics. + repeated PatternFlowIpv4TosDelayMetricTag metric_tags = 7; } -// IPv4 RSVP-TE Discovered LSPs. -message RsvpIPv4LspState { - - // The origin IPv4 address of RSVP session. - optional string source_address = 1; - - // The IPv4 destination address of RSVP session. - optional string destination_address = 2; - - // It refers to the RSVP LSP properties. - RsvpLspState lsp = 3; +// integer counter pattern +message PatternFlowIpv4TosThroughputCounter { - // It refers to RSVP RRO objects container. - repeated RsvpLspIpv4Rro rros = 4; + // Description missing in models + // default = 0 + optional uint32 start = 1; - // It refers to RSVP ERO objects container. - repeated RsvpLspIpv4Ero eros = 5; -} + // Description missing in models + // default = 1 + optional uint32 step = 2; -// IPv4 RSVP-TE Discovered LSPs. -message RsvpLspState { + // Description missing in models + // default = 1 + optional uint32 count = 3; +} - // The tunnel id of RSVP session which acts as an identifier that remains constant over - // the life of the tunnel. - optional uint32 tunnel_id = 1; +// Metric tag can be used to enable tracking portion of or all bits in a corresponding +// header field for metrics per each applicable value. These would appear as tagged +// metrics in corresponding flow metrics. +message PatternFlowIpv4TosThroughputMetricTag { - // The lsp-id of RSVP session which acts as a differentiator for two lsps originating - // from the same headend, commonly used to distinguish RSVP sessions during make before - // break operations. - optional uint32 lsp_id = 2; + // Name used to identify the metrics associated with the values applicable for configured + // offset and length inside corresponding header field + // required = true + optional string name = 1; - // The value of RSVP-TE Session Name field of the Session Attribute object. - optional string session_name = 3; + // Offset in bits relative to start of corresponding header field + // default = 0 + optional uint32 offset = 2; - // The label received by RSVP-TE ingress. - optional uint32 label_in = 4; + // Number of bits to track for metrics starting from configured offset of corresponding + // header field + // default = 1 + optional uint32 length = 3; +} - // The label assigned by RSVP-TE egress. - optional uint32 label_out = 5; +// Throughput +message PatternFlowIpv4TosThroughput { - message SessionStatus { + message Choice { enum Enum { unspecified = 0; - up = 1; - down = 2; + value = 2; + values = 3; + increment = 4; + decrement = 5; } } - // Operational state of the RSVP LSP. - optional SessionStatus.Enum session_status = 6; + // Description missing in models + // default = Choice.Enum.value + optional Choice.Enum choice = 1; - message LastFlapReason { - enum Enum { - unspecified = 0; - resv_tear = 1; - path_tear = 2; - path_timeout = 3; - } - } - // The reason for the last flap of this RSVP session. - optional LastFlapReason.Enum last_flap_reason = 7; + // Description missing in models + // default = 0 + optional uint32 value = 2; - // The tunnel UP time in milli seconds. If the tunnel is DOWN the UP time will be zero. - optional uint64 up_time = 8; + // Description missing in models + // default = [0] + repeated uint32 values = 3; + + // Description missing in models + PatternFlowIpv4TosThroughputCounter increment = 5; + + // Description missing in models + PatternFlowIpv4TosThroughputCounter decrement = 6; + + // One or more metric tags can be used to enable tracking portion of or all bits in + // a corresponding header field for metrics per each applicable value. These would appear + // as tagged metrics in corresponding flow metrics. + repeated PatternFlowIpv4TosThroughputMetricTag metric_tags = 7; } -// This contains the list of Record Route Object(RRO) objects associated with the traffic -// engineering tunnel. The Record Route Object(RRO) is used in RSVP-TE to record the -// route traversed by the LSP. The RRO might be present in both Path message and Resv -// message, the RRO stores the IP addresses of the routers that the traffic engineering -// tunnel traversed and also the label generated and distributed by the routers. The -// RROs in the Resv message mirrors that of the Path message, the only difference is -// that the RRO in a Resv message records the path information in the reverse direction. -// -message RsvpLspIpv4Rro { +// integer counter pattern +message PatternFlowIpv4TosReliabilityCounter { - // The IPv4 addresses of the routers that the traffic engineering tunnel traversed. - optional string address = 1; + // Description missing in models + // default = 0 + optional uint32 start = 1; - // Label reported for RRO hop. When the Label_Recording flag is set in the Session Attribute - // object, nodes doing route recording should include the Label Record subobject containing - // the reported label. - optional uint32 reported_label = 2; + // Description missing in models + // default = 1 + optional uint32 step = 2; + + // Description missing in models + // default = 1 + optional uint32 count = 3; } -// This contains the list of sub-objects included in the Explicit Route Object(ERO) -// object send in the PATH message from the ingress. These sub-objects contain the intermediate -// hops to be traversed by the LSP while being forwarded towards the egress endpoint. -message RsvpLspIpv4Ero { +// Metric tag can be used to enable tracking portion of or all bits in a corresponding +// header field for metrics per each applicable value. These would appear as tagged +// metrics in corresponding flow metrics. +message PatternFlowIpv4TosReliabilityMetricTag { - // The IPv4 prefix indicated by the ERO. Specified only when the ERO hop is an IPv4 - // prefix. - optional string prefix = 1; + // Name used to identify the metrics associated with the values applicable for configured + // offset and length inside corresponding header field + // required = true + optional string name = 1; - // The autonomous system number indicated by the ERO. Specified only when the ERO hop - // is an 2 or 4-byte AS number. - optional uint32 asn = 2; + // Offset in bits relative to start of corresponding header field + // default = 0 + optional uint32 offset = 2; - message Type { + // Number of bits to track for metrics starting from configured offset of corresponding + // header field + // default = 1 + optional uint32 length = 3; +} + +// Reliability +message PatternFlowIpv4TosReliability { + + message Choice { enum Enum { unspecified = 0; - ipv4 = 1; - ipv6 = 2; - asn = 3; - asn4 = 4; - label = 5; - unnumbered_interface = 6; + value = 2; + values = 3; + increment = 4; + decrement = 5; } } - // The type indicated by the ERO. - optional Type.Enum type = 3; -} + // Description missing in models + // default = Choice.Enum.value + optional Choice.Enum choice = 1; -// The capture result request to the traffic generator. Stops the port capture on the -// port_name and returns the capture. -message CaptureRequest { + // Description missing in models + // default = 0 + optional uint32 value = 2; - // The name of a port a capture is started on. - // - // x-constraint: - // - /components/schemas/Port/properties/name - // - // - // x-constraint: - // - /components/schemas/Port/properties/name - // - // required = true - optional string port_name = 1; + // Description missing in models + // default = [0] + repeated uint32 values = 3; + + // Description missing in models + PatternFlowIpv4TosReliabilityCounter increment = 5; + + // Description missing in models + PatternFlowIpv4TosReliabilityCounter decrement = 6; + + // One or more metric tags can be used to enable tracking portion of or all bits in + // a corresponding header field for metrics per each applicable value. These would appear + // as tagged metrics in corresponding flow metrics. + repeated PatternFlowIpv4TosReliabilityMetricTag metric_tags = 7; } -// mac counter pattern -message PatternFlowEthernetDstCounter { +// integer counter pattern +message PatternFlowIpv4TosMonetaryCounter { // Description missing in models - // default = 00:00:00:00:00:00 - optional string start = 1; + // default = 0 + optional uint32 start = 1; // Description missing in models - // default = 00:00:00:00:00:01 - optional string step = 2; + // default = 1 + optional uint32 step = 2; // Description missing in models // default = 1 @@ -9896,7 +12798,7 @@ message PatternFlowEthernetDstCounter { // Metric tag can be used to enable tracking portion of or all bits in a corresponding // header field for metrics per each applicable value. These would appear as tagged // metrics in corresponding flow metrics. -message PatternFlowEthernetDstMetricTag { +message PatternFlowIpv4TosMonetaryMetricTag { // Name used to identify the metrics associated with the values applicable for configured // offset and length inside corresponding header field @@ -9909,63 +12811,56 @@ message PatternFlowEthernetDstMetricTag { // Number of bits to track for metrics starting from configured offset of corresponding // header field - // default = 48 + // default = 1 optional uint32 length = 3; } -// Destination MAC address -message PatternFlowEthernetDst { +// Monetary +message PatternFlowIpv4TosMonetary { message Choice { enum Enum { unspecified = 0; value = 2; values = 3; - auto = 1; increment = 4; decrement = 5; } } // Description missing in models - // default = Choice.Enum.auto + // default = Choice.Enum.value optional Choice.Enum choice = 1; // Description missing in models - // default = 00:00:00:00:00:00 - optional string value = 2; + // default = 0 + optional uint32 value = 2; // Description missing in models - // default = ['00:00:00:00:00:00'] - repeated string values = 3; - - // The OTG implementation can provide a system generated - // value for this property. If the OTG is unable to generate a value - // the default value must be used. - // default = 00:00:00:00:00:00 - optional string auto = 4; + // default = [0] + repeated uint32 values = 3; // Description missing in models - PatternFlowEthernetDstCounter increment = 6; + PatternFlowIpv4TosMonetaryCounter increment = 5; // Description missing in models - PatternFlowEthernetDstCounter decrement = 7; + PatternFlowIpv4TosMonetaryCounter decrement = 6; // One or more metric tags can be used to enable tracking portion of or all bits in // a corresponding header field for metrics per each applicable value. These would appear // as tagged metrics in corresponding flow metrics. - repeated PatternFlowEthernetDstMetricTag metric_tags = 8; + repeated PatternFlowIpv4TosMonetaryMetricTag metric_tags = 7; } -// mac counter pattern -message PatternFlowEthernetSrcCounter { +// integer counter pattern +message PatternFlowIpv4TosUnusedCounter { // Description missing in models - // default = 00:00:00:00:00:00 - optional string start = 1; + // default = 0 + optional uint32 start = 1; // Description missing in models - // default = 00:00:00:00:00:01 - optional string step = 2; + // default = 1 + optional uint32 step = 2; // Description missing in models // default = 1 @@ -9975,7 +12870,7 @@ message PatternFlowEthernetSrcCounter { // Metric tag can be used to enable tracking portion of or all bits in a corresponding // header field for metrics per each applicable value. These would appear as tagged // metrics in corresponding flow metrics. -message PatternFlowEthernetSrcMetricTag { +message PatternFlowIpv4TosUnusedMetricTag { // Name used to identify the metrics associated with the values applicable for configured // offset and length inside corresponding header field @@ -9988,12 +12883,12 @@ message PatternFlowEthernetSrcMetricTag { // Number of bits to track for metrics starting from configured offset of corresponding // header field - // default = 48 + // default = 1 optional uint32 length = 3; } -// Source MAC address -message PatternFlowEthernetSrc { +// Unused +message PatternFlowIpv4TosUnused { message Choice { enum Enum { @@ -10009,30 +12904,30 @@ message PatternFlowEthernetSrc { optional Choice.Enum choice = 1; // Description missing in models - // default = 00:00:00:00:00:00 - optional string value = 2; + // default = 0 + optional uint32 value = 2; - // Description missing in models - // default = ['00:00:00:00:00:00'] - repeated string values = 3; + // Description missing in models + // default = [0] + repeated uint32 values = 3; // Description missing in models - PatternFlowEthernetSrcCounter increment = 5; + PatternFlowIpv4TosUnusedCounter increment = 5; // Description missing in models - PatternFlowEthernetSrcCounter decrement = 6; + PatternFlowIpv4TosUnusedCounter decrement = 6; // One or more metric tags can be used to enable tracking portion of or all bits in // a corresponding header field for metrics per each applicable value. These would appear // as tagged metrics in corresponding flow metrics. - repeated PatternFlowEthernetSrcMetricTag metric_tags = 7; + repeated PatternFlowIpv4TosUnusedMetricTag metric_tags = 7; } // integer counter pattern -message PatternFlowEthernetEtherTypeCounter { +message PatternFlowIpv6VersionCounter { // Description missing in models - // default = 65535 + // default = 6 optional uint32 start = 1; // Description missing in models @@ -10047,7 +12942,7 @@ message PatternFlowEthernetEtherTypeCounter { // Metric tag can be used to enable tracking portion of or all bits in a corresponding // header field for metrics per each applicable value. These would appear as tagged // metrics in corresponding flow metrics. -message PatternFlowEthernetEtherTypeMetricTag { +message PatternFlowIpv6VersionMetricTag { // Name used to identify the metrics associated with the values applicable for configured // offset and length inside corresponding header field @@ -10060,55 +12955,48 @@ message PatternFlowEthernetEtherTypeMetricTag { // Number of bits to track for metrics starting from configured offset of corresponding // header field - // default = 16 + // default = 4 optional uint32 length = 3; } -// Ethernet type -message PatternFlowEthernetEtherType { +// Version number +message PatternFlowIpv6Version { message Choice { enum Enum { unspecified = 0; value = 2; values = 3; - auto = 1; increment = 4; decrement = 5; } } // Description missing in models - // default = Choice.Enum.auto + // default = Choice.Enum.value optional Choice.Enum choice = 1; // Description missing in models - // default = 65535 + // default = 6 optional uint32 value = 2; // Description missing in models - // default = [65535] + // default = [6] repeated uint32 values = 3; - // The OTG implementation can provide a system generated - // value for this property. If the OTG is unable to generate a value - // the default value must be used. - // default = 65535 - optional uint32 auto = 4; - // Description missing in models - PatternFlowEthernetEtherTypeCounter increment = 6; + PatternFlowIpv6VersionCounter increment = 5; // Description missing in models - PatternFlowEthernetEtherTypeCounter decrement = 7; + PatternFlowIpv6VersionCounter decrement = 6; // One or more metric tags can be used to enable tracking portion of or all bits in // a corresponding header field for metrics per each applicable value. These would appear // as tagged metrics in corresponding flow metrics. - repeated PatternFlowEthernetEtherTypeMetricTag metric_tags = 8; + repeated PatternFlowIpv6VersionMetricTag metric_tags = 7; } // integer counter pattern -message PatternFlowEthernetPfcQueueCounter { +message PatternFlowIpv6TrafficClassCounter { // Description missing in models // default = 0 @@ -10126,7 +13014,7 @@ message PatternFlowEthernetPfcQueueCounter { // Metric tag can be used to enable tracking portion of or all bits in a corresponding // header field for metrics per each applicable value. These would appear as tagged // metrics in corresponding flow metrics. -message PatternFlowEthernetPfcQueueMetricTag { +message PatternFlowIpv6TrafficClassMetricTag { // Name used to identify the metrics associated with the values applicable for configured // offset and length inside corresponding header field @@ -10139,12 +13027,12 @@ message PatternFlowEthernetPfcQueueMetricTag { // Number of bits to track for metrics starting from configured offset of corresponding // header field - // default = 3 + // default = 8 optional uint32 length = 3; } -// Priority flow control queue -message PatternFlowEthernetPfcQueue { +// Traffic class +message PatternFlowIpv6TrafficClass { message Choice { enum Enum { @@ -10168,19 +13056,19 @@ message PatternFlowEthernetPfcQueue { repeated uint32 values = 3; // Description missing in models - PatternFlowEthernetPfcQueueCounter increment = 5; + PatternFlowIpv6TrafficClassCounter increment = 5; // Description missing in models - PatternFlowEthernetPfcQueueCounter decrement = 6; + PatternFlowIpv6TrafficClassCounter decrement = 6; // One or more metric tags can be used to enable tracking portion of or all bits in // a corresponding header field for metrics per each applicable value. These would appear // as tagged metrics in corresponding flow metrics. - repeated PatternFlowEthernetPfcQueueMetricTag metric_tags = 7; + repeated PatternFlowIpv6TrafficClassMetricTag metric_tags = 7; } // integer counter pattern -message PatternFlowVlanPriorityCounter { +message PatternFlowIpv6FlowLabelCounter { // Description missing in models // default = 0 @@ -10198,7 +13086,7 @@ message PatternFlowVlanPriorityCounter { // Metric tag can be used to enable tracking portion of or all bits in a corresponding // header field for metrics per each applicable value. These would appear as tagged // metrics in corresponding flow metrics. -message PatternFlowVlanPriorityMetricTag { +message PatternFlowIpv6FlowLabelMetricTag { // Name used to identify the metrics associated with the values applicable for configured // offset and length inside corresponding header field @@ -10211,12 +13099,12 @@ message PatternFlowVlanPriorityMetricTag { // Number of bits to track for metrics starting from configured offset of corresponding // header field - // default = 3 + // default = 20 optional uint32 length = 3; } -// Priority code point -message PatternFlowVlanPriority { +// Flow label +message PatternFlowIpv6FlowLabel { message Choice { enum Enum { @@ -10240,19 +13128,19 @@ message PatternFlowVlanPriority { repeated uint32 values = 3; // Description missing in models - PatternFlowVlanPriorityCounter increment = 5; + PatternFlowIpv6FlowLabelCounter increment = 5; // Description missing in models - PatternFlowVlanPriorityCounter decrement = 6; + PatternFlowIpv6FlowLabelCounter decrement = 6; // One or more metric tags can be used to enable tracking portion of or all bits in // a corresponding header field for metrics per each applicable value. These would appear // as tagged metrics in corresponding flow metrics. - repeated PatternFlowVlanPriorityMetricTag metric_tags = 7; + repeated PatternFlowIpv6FlowLabelMetricTag metric_tags = 7; } // integer counter pattern -message PatternFlowVlanCfiCounter { +message PatternFlowIpv6PayloadLengthCounter { // Description missing in models // default = 0 @@ -10270,7 +13158,7 @@ message PatternFlowVlanCfiCounter { // Metric tag can be used to enable tracking portion of or all bits in a corresponding // header field for metrics per each applicable value. These would appear as tagged // metrics in corresponding flow metrics. -message PatternFlowVlanCfiMetricTag { +message PatternFlowIpv6PayloadLengthMetricTag { // Name used to identify the metrics associated with the values applicable for configured // offset and length inside corresponding header field @@ -10283,24 +13171,25 @@ message PatternFlowVlanCfiMetricTag { // Number of bits to track for metrics starting from configured offset of corresponding // header field - // default = 1 + // default = 16 optional uint32 length = 3; } -// Canonical format indicator or drop elegible indicator -message PatternFlowVlanCfi { +// Payload length +message PatternFlowIpv6PayloadLength { message Choice { enum Enum { unspecified = 0; value = 2; values = 3; + auto = 1; increment = 4; decrement = 5; } } // Description missing in models - // default = Choice.Enum.value + // default = Choice.Enum.auto optional Choice.Enum choice = 1; // Description missing in models @@ -10311,23 +13200,29 @@ message PatternFlowVlanCfi { // default = [0] repeated uint32 values = 3; + // The OTG implementation can provide a system generated + // value for this property. If the OTG is unable to generate a value + // the default value must be used. + // default = 0 + optional uint32 auto = 4; + // Description missing in models - PatternFlowVlanCfiCounter increment = 5; + PatternFlowIpv6PayloadLengthCounter increment = 6; // Description missing in models - PatternFlowVlanCfiCounter decrement = 6; + PatternFlowIpv6PayloadLengthCounter decrement = 7; // One or more metric tags can be used to enable tracking portion of or all bits in // a corresponding header field for metrics per each applicable value. These would appear // as tagged metrics in corresponding flow metrics. - repeated PatternFlowVlanCfiMetricTag metric_tags = 7; + repeated PatternFlowIpv6PayloadLengthMetricTag metric_tags = 8; } // integer counter pattern -message PatternFlowVlanIdCounter { +message PatternFlowIpv6NextHeaderCounter { // Description missing in models - // default = 0 + // default = 59 optional uint32 start = 1; // Description missing in models @@ -10342,7 +13237,7 @@ message PatternFlowVlanIdCounter { // Metric tag can be used to enable tracking portion of or all bits in a corresponding // header field for metrics per each applicable value. These would appear as tagged // metrics in corresponding flow metrics. -message PatternFlowVlanIdMetricTag { +message PatternFlowIpv6NextHeaderMetricTag { // Name used to identify the metrics associated with the values applicable for configured // offset and length inside corresponding header field @@ -10355,51 +13250,58 @@ message PatternFlowVlanIdMetricTag { // Number of bits to track for metrics starting from configured offset of corresponding // header field - // default = 12 + // default = 8 optional uint32 length = 3; } -// Vlan identifier -message PatternFlowVlanId { +// Next header +message PatternFlowIpv6NextHeader { message Choice { enum Enum { unspecified = 0; value = 2; values = 3; + auto = 1; increment = 4; decrement = 5; } } // Description missing in models - // default = Choice.Enum.value + // default = Choice.Enum.auto optional Choice.Enum choice = 1; // Description missing in models - // default = 0 + // default = 59 optional uint32 value = 2; // Description missing in models - // default = [0] + // default = [59] repeated uint32 values = 3; + // The OTG implementation can provide a system generated + // value for this property. If the OTG is unable to generate a value + // the default value must be used. + // default = 59 + optional uint32 auto = 4; + // Description missing in models - PatternFlowVlanIdCounter increment = 5; + PatternFlowIpv6NextHeaderCounter increment = 6; // Description missing in models - PatternFlowVlanIdCounter decrement = 6; + PatternFlowIpv6NextHeaderCounter decrement = 7; // One or more metric tags can be used to enable tracking portion of or all bits in // a corresponding header field for metrics per each applicable value. These would appear // as tagged metrics in corresponding flow metrics. - repeated PatternFlowVlanIdMetricTag metric_tags = 7; + repeated PatternFlowIpv6NextHeaderMetricTag metric_tags = 8; } // integer counter pattern -message PatternFlowVlanTpidCounter { +message PatternFlowIpv6HopLimitCounter { // Description missing in models - // default = 65535 + // default = 64 optional uint32 start = 1; // Description missing in models @@ -10414,7 +13316,7 @@ message PatternFlowVlanTpidCounter { // Metric tag can be used to enable tracking portion of or all bits in a corresponding // header field for metrics per each applicable value. These would appear as tagged // metrics in corresponding flow metrics. -message PatternFlowVlanTpidMetricTag { +message PatternFlowIpv6HopLimitMetricTag { // Name used to identify the metrics associated with the values applicable for configured // offset and length inside corresponding header field @@ -10427,12 +13329,12 @@ message PatternFlowVlanTpidMetricTag { // Number of bits to track for metrics starting from configured offset of corresponding // header field - // default = 16 + // default = 8 optional uint32 length = 3; } -// Protocol identifier -message PatternFlowVlanTpid { +// Hop limit +message PatternFlowIpv6HopLimit { message Choice { enum Enum { @@ -10448,35 +13350,35 @@ message PatternFlowVlanTpid { optional Choice.Enum choice = 1; // Description missing in models - // default = 65535 + // default = 64 optional uint32 value = 2; // Description missing in models - // default = [65535] + // default = [64] repeated uint32 values = 3; // Description missing in models - PatternFlowVlanTpidCounter increment = 5; + PatternFlowIpv6HopLimitCounter increment = 5; // Description missing in models - PatternFlowVlanTpidCounter decrement = 6; + PatternFlowIpv6HopLimitCounter decrement = 6; // One or more metric tags can be used to enable tracking portion of or all bits in // a corresponding header field for metrics per each applicable value. These would appear // as tagged metrics in corresponding flow metrics. - repeated PatternFlowVlanTpidMetricTag metric_tags = 7; + repeated PatternFlowIpv6HopLimitMetricTag metric_tags = 7; } -// integer counter pattern -message PatternFlowVxlanFlagsCounter { +// ipv6 counter pattern +message PatternFlowIpv6SrcCounter { // Description missing in models - // default = 8 - optional uint32 start = 1; + // default = ::0 + optional string start = 1; // Description missing in models - // default = 1 - optional uint32 step = 2; + // default = ::1 + optional string step = 2; // Description missing in models // default = 1 @@ -10486,7 +13388,7 @@ message PatternFlowVxlanFlagsCounter { // Metric tag can be used to enable tracking portion of or all bits in a corresponding // header field for metrics per each applicable value. These would appear as tagged // metrics in corresponding flow metrics. -message PatternFlowVxlanFlagsMetricTag { +message PatternFlowIpv6SrcMetricTag { // Name used to identify the metrics associated with the values applicable for configured // offset and length inside corresponding header field @@ -10499,14 +13401,12 @@ message PatternFlowVxlanFlagsMetricTag { // Number of bits to track for metrics starting from configured offset of corresponding // header field - // default = 8 + // default = 128 optional uint32 length = 3; } -// Flags field with a bit format of RRRRIRRR. The I flag MUST be set to 1 for a valid -// vxlan network id (VNI). The other 7 bits (designated R) are reserved fields and -// MUST be set to zero on transmission and ignored on receipt. -message PatternFlowVxlanFlags { +// Source address +message PatternFlowIpv6Src { message Choice { enum Enum { @@ -10522,35 +13422,35 @@ message PatternFlowVxlanFlags { optional Choice.Enum choice = 1; // Description missing in models - // default = 8 - optional uint32 value = 2; + // default = ::0 + optional string value = 2; // Description missing in models - // default = [8] - repeated uint32 values = 3; + // default = ['::0'] + repeated string values = 3; // Description missing in models - PatternFlowVxlanFlagsCounter increment = 5; + PatternFlowIpv6SrcCounter increment = 5; // Description missing in models - PatternFlowVxlanFlagsCounter decrement = 6; + PatternFlowIpv6SrcCounter decrement = 6; // One or more metric tags can be used to enable tracking portion of or all bits in // a corresponding header field for metrics per each applicable value. These would appear // as tagged metrics in corresponding flow metrics. - repeated PatternFlowVxlanFlagsMetricTag metric_tags = 7; + repeated PatternFlowIpv6SrcMetricTag metric_tags = 7; } -// integer counter pattern -message PatternFlowVxlanReserved0Counter { +// ipv6 counter pattern +message PatternFlowIpv6DstCounter { // Description missing in models - // default = 0 - optional uint32 start = 1; + // default = ::0 + optional string start = 1; // Description missing in models - // default = 1 - optional uint32 step = 2; + // default = ::1 + optional string step = 2; // Description missing in models // default = 1 @@ -10560,7 +13460,7 @@ message PatternFlowVxlanReserved0Counter { // Metric tag can be used to enable tracking portion of or all bits in a corresponding // header field for metrics per each applicable value. These would appear as tagged // metrics in corresponding flow metrics. -message PatternFlowVxlanReserved0MetricTag { +message PatternFlowIpv6DstMetricTag { // Name used to identify the metrics associated with the values applicable for configured // offset and length inside corresponding header field @@ -10573,12 +13473,12 @@ message PatternFlowVxlanReserved0MetricTag { // Number of bits to track for metrics starting from configured offset of corresponding // header field - // default = 24 + // default = 128 optional uint32 length = 3; } -// Reserved field -message PatternFlowVxlanReserved0 { +// Destination address +message PatternFlowIpv6Dst { message Choice { enum Enum { @@ -10594,35 +13494,35 @@ message PatternFlowVxlanReserved0 { optional Choice.Enum choice = 1; // Description missing in models - // default = 0 - optional uint32 value = 2; + // default = ::0 + optional string value = 2; // Description missing in models - // default = [0] - repeated uint32 values = 3; + // default = ['::0'] + repeated string values = 3; // Description missing in models - PatternFlowVxlanReserved0Counter increment = 5; + PatternFlowIpv6DstCounter increment = 5; // Description missing in models - PatternFlowVxlanReserved0Counter decrement = 6; + PatternFlowIpv6DstCounter decrement = 6; // One or more metric tags can be used to enable tracking portion of or all bits in // a corresponding header field for metrics per each applicable value. These would appear // as tagged metrics in corresponding flow metrics. - repeated PatternFlowVxlanReserved0MetricTag metric_tags = 7; + repeated PatternFlowIpv6DstMetricTag metric_tags = 7; } -// integer counter pattern -message PatternFlowVxlanVniCounter { +// mac counter pattern +message PatternFlowPfcPauseDstCounter { // Description missing in models - // default = 0 - optional uint32 start = 1; + // default = 01:80:c2:00:00:01 + optional string start = 1; // Description missing in models - // default = 1 - optional uint32 step = 2; + // default = 00:00:00:00:00:01 + optional string step = 2; // Description missing in models // default = 1 @@ -10632,7 +13532,7 @@ message PatternFlowVxlanVniCounter { // Metric tag can be used to enable tracking portion of or all bits in a corresponding // header field for metrics per each applicable value. These would appear as tagged // metrics in corresponding flow metrics. -message PatternFlowVxlanVniMetricTag { +message PatternFlowPfcPauseDstMetricTag { // Name used to identify the metrics associated with the values applicable for configured // offset and length inside corresponding header field @@ -10645,63 +13545,56 @@ message PatternFlowVxlanVniMetricTag { // Number of bits to track for metrics starting from configured offset of corresponding // header field - // default = 24 + // default = 48 optional uint32 length = 3; } -// VXLAN network id -message PatternFlowVxlanVni { +// Destination MAC address +message PatternFlowPfcPauseDst { message Choice { enum Enum { unspecified = 0; value = 2; values = 3; - auto = 1; increment = 4; decrement = 5; } } // Description missing in models - // default = Choice.Enum.auto + // default = Choice.Enum.value optional Choice.Enum choice = 1; - // Description missing in models - // default = 0 - optional uint32 value = 2; - - // Description missing in models - // default = [0] - repeated uint32 values = 3; - - // The OTG implementation can provide a system generated - // value for this property. If the OTG is unable to generate a value - // the default value must be used. - // default = 0 - optional uint32 auto = 4; + // Description missing in models + // default = 01:80:c2:00:00:01 + optional string value = 2; // Description missing in models - PatternFlowVxlanVniCounter increment = 6; + // default = ['01:80:c2:00:00:01'] + repeated string values = 3; // Description missing in models - PatternFlowVxlanVniCounter decrement = 7; + PatternFlowPfcPauseDstCounter increment = 5; + + // Description missing in models + PatternFlowPfcPauseDstCounter decrement = 6; // One or more metric tags can be used to enable tracking portion of or all bits in // a corresponding header field for metrics per each applicable value. These would appear // as tagged metrics in corresponding flow metrics. - repeated PatternFlowVxlanVniMetricTag metric_tags = 8; + repeated PatternFlowPfcPauseDstMetricTag metric_tags = 7; } -// integer counter pattern -message PatternFlowVxlanReserved1Counter { +// mac counter pattern +message PatternFlowPfcPauseSrcCounter { // Description missing in models - // default = 0 - optional uint32 start = 1; + // default = 00:00:00:00:00:00 + optional string start = 1; // Description missing in models - // default = 1 - optional uint32 step = 2; + // default = 00:00:00:00:00:01 + optional string step = 2; // Description missing in models // default = 1 @@ -10711,7 +13604,7 @@ message PatternFlowVxlanReserved1Counter { // Metric tag can be used to enable tracking portion of or all bits in a corresponding // header field for metrics per each applicable value. These would appear as tagged // metrics in corresponding flow metrics. -message PatternFlowVxlanReserved1MetricTag { +message PatternFlowPfcPauseSrcMetricTag { // Name used to identify the metrics associated with the values applicable for configured // offset and length inside corresponding header field @@ -10724,12 +13617,12 @@ message PatternFlowVxlanReserved1MetricTag { // Number of bits to track for metrics starting from configured offset of corresponding // header field - // default = 8 + // default = 48 optional uint32 length = 3; } -// Reserved field -message PatternFlowVxlanReserved1 { +// Source MAC address +message PatternFlowPfcPauseSrc { message Choice { enum Enum { @@ -10745,30 +13638,30 @@ message PatternFlowVxlanReserved1 { optional Choice.Enum choice = 1; // Description missing in models - // default = 0 - optional uint32 value = 2; + // default = 00:00:00:00:00:00 + optional string value = 2; // Description missing in models - // default = [0] - repeated uint32 values = 3; + // default = ['00:00:00:00:00:00'] + repeated string values = 3; // Description missing in models - PatternFlowVxlanReserved1Counter increment = 5; + PatternFlowPfcPauseSrcCounter increment = 5; // Description missing in models - PatternFlowVxlanReserved1Counter decrement = 6; + PatternFlowPfcPauseSrcCounter decrement = 6; // One or more metric tags can be used to enable tracking portion of or all bits in // a corresponding header field for metrics per each applicable value. These would appear // as tagged metrics in corresponding flow metrics. - repeated PatternFlowVxlanReserved1MetricTag metric_tags = 7; + repeated PatternFlowPfcPauseSrcMetricTag metric_tags = 7; } // integer counter pattern -message PatternFlowIpv4VersionCounter { +message PatternFlowPfcPauseEtherTypeCounter { // Description missing in models - // default = 4 + // default = 34824 optional uint32 start = 1; // Description missing in models @@ -10783,7 +13676,7 @@ message PatternFlowIpv4VersionCounter { // Metric tag can be used to enable tracking portion of or all bits in a corresponding // header field for metrics per each applicable value. These would appear as tagged // metrics in corresponding flow metrics. -message PatternFlowIpv4VersionMetricTag { +message PatternFlowPfcPauseEtherTypeMetricTag { // Name used to identify the metrics associated with the values applicable for configured // offset and length inside corresponding header field @@ -10796,12 +13689,12 @@ message PatternFlowIpv4VersionMetricTag { // Number of bits to track for metrics starting from configured offset of corresponding // header field - // default = 4 + // default = 16 optional uint32 length = 3; } -// Version -message PatternFlowIpv4Version { +// Ethernet type +message PatternFlowPfcPauseEtherType { message Choice { enum Enum { @@ -10817,30 +13710,30 @@ message PatternFlowIpv4Version { optional Choice.Enum choice = 1; // Description missing in models - // default = 4 + // default = 34824 optional uint32 value = 2; // Description missing in models - // default = [4] + // default = [34824] repeated uint32 values = 3; // Description missing in models - PatternFlowIpv4VersionCounter increment = 5; + PatternFlowPfcPauseEtherTypeCounter increment = 5; // Description missing in models - PatternFlowIpv4VersionCounter decrement = 6; + PatternFlowPfcPauseEtherTypeCounter decrement = 6; // One or more metric tags can be used to enable tracking portion of or all bits in // a corresponding header field for metrics per each applicable value. These would appear // as tagged metrics in corresponding flow metrics. - repeated PatternFlowIpv4VersionMetricTag metric_tags = 7; + repeated PatternFlowPfcPauseEtherTypeMetricTag metric_tags = 7; } // integer counter pattern -message PatternFlowIpv4HeaderLengthCounter { +message PatternFlowPfcPauseControlOpCodeCounter { // Description missing in models - // default = 5 + // default = 257 optional uint32 start = 1; // Description missing in models @@ -10855,7 +13748,7 @@ message PatternFlowIpv4HeaderLengthCounter { // Metric tag can be used to enable tracking portion of or all bits in a corresponding // header field for metrics per each applicable value. These would appear as tagged // metrics in corresponding flow metrics. -message PatternFlowIpv4HeaderLengthMetricTag { +message PatternFlowPfcPauseControlOpCodeMetricTag { // Name used to identify the metrics associated with the values applicable for configured // offset and length inside corresponding header field @@ -10868,58 +13761,51 @@ message PatternFlowIpv4HeaderLengthMetricTag { // Number of bits to track for metrics starting from configured offset of corresponding // header field - // default = 4 + // default = 16 optional uint32 length = 3; } -// Header length -message PatternFlowIpv4HeaderLength { +// Control operation code +message PatternFlowPfcPauseControlOpCode { message Choice { enum Enum { unspecified = 0; value = 2; values = 3; - auto = 1; increment = 4; decrement = 5; } } // Description missing in models - // default = Choice.Enum.auto + // default = Choice.Enum.value optional Choice.Enum choice = 1; // Description missing in models - // default = 5 + // default = 257 optional uint32 value = 2; // Description missing in models - // default = [5] + // default = [257] repeated uint32 values = 3; - // The OTG implementation can provide a system generated - // value for this property. If the OTG is unable to generate a value - // the default value must be used. - // default = 5 - optional uint32 auto = 4; - // Description missing in models - PatternFlowIpv4HeaderLengthCounter increment = 6; + PatternFlowPfcPauseControlOpCodeCounter increment = 5; // Description missing in models - PatternFlowIpv4HeaderLengthCounter decrement = 7; + PatternFlowPfcPauseControlOpCodeCounter decrement = 6; // One or more metric tags can be used to enable tracking portion of or all bits in // a corresponding header field for metrics per each applicable value. These would appear // as tagged metrics in corresponding flow metrics. - repeated PatternFlowIpv4HeaderLengthMetricTag metric_tags = 8; + repeated PatternFlowPfcPauseControlOpCodeMetricTag metric_tags = 7; } // integer counter pattern -message PatternFlowIpv4TotalLengthCounter { +message PatternFlowPfcPauseClassEnableVectorCounter { // Description missing in models - // default = 46 + // default = 0 optional uint32 start = 1; // Description missing in models @@ -10934,7 +13820,7 @@ message PatternFlowIpv4TotalLengthCounter { // Metric tag can be used to enable tracking portion of or all bits in a corresponding // header field for metrics per each applicable value. These would appear as tagged // metrics in corresponding flow metrics. -message PatternFlowIpv4TotalLengthMetricTag { +message PatternFlowPfcPauseClassEnableVectorMetricTag { // Name used to identify the metrics associated with the values applicable for configured // offset and length inside corresponding header field @@ -10951,51 +13837,44 @@ message PatternFlowIpv4TotalLengthMetricTag { optional uint32 length = 3; } -// Total length -message PatternFlowIpv4TotalLength { +// Destination +message PatternFlowPfcPauseClassEnableVector { message Choice { enum Enum { unspecified = 0; value = 2; values = 3; - auto = 1; increment = 4; decrement = 5; } } // Description missing in models - // default = Choice.Enum.auto + // default = Choice.Enum.value optional Choice.Enum choice = 1; // Description missing in models - // default = 46 + // default = 0 optional uint32 value = 2; // Description missing in models - // default = [46] + // default = [0] repeated uint32 values = 3; - // The OTG implementation can provide a system generated - // value for this property. If the OTG is unable to generate a value - // the default value must be used. - // default = 46 - optional uint32 auto = 4; - // Description missing in models - PatternFlowIpv4TotalLengthCounter increment = 6; + PatternFlowPfcPauseClassEnableVectorCounter increment = 5; // Description missing in models - PatternFlowIpv4TotalLengthCounter decrement = 7; + PatternFlowPfcPauseClassEnableVectorCounter decrement = 6; // One or more metric tags can be used to enable tracking portion of or all bits in // a corresponding header field for metrics per each applicable value. These would appear // as tagged metrics in corresponding flow metrics. - repeated PatternFlowIpv4TotalLengthMetricTag metric_tags = 8; + repeated PatternFlowPfcPauseClassEnableVectorMetricTag metric_tags = 7; } // integer counter pattern -message PatternFlowIpv4IdentificationCounter { +message PatternFlowPfcPausePauseClass0Counter { // Description missing in models // default = 0 @@ -11013,7 +13892,7 @@ message PatternFlowIpv4IdentificationCounter { // Metric tag can be used to enable tracking portion of or all bits in a corresponding // header field for metrics per each applicable value. These would appear as tagged // metrics in corresponding flow metrics. -message PatternFlowIpv4IdentificationMetricTag { +message PatternFlowPfcPausePauseClass0MetricTag { // Name used to identify the metrics associated with the values applicable for configured // offset and length inside corresponding header field @@ -11030,8 +13909,8 @@ message PatternFlowIpv4IdentificationMetricTag { optional uint32 length = 3; } -// Identification -message PatternFlowIpv4Identification { +// Pause class 0 +message PatternFlowPfcPausePauseClass0 { message Choice { enum Enum { @@ -11055,19 +13934,19 @@ message PatternFlowIpv4Identification { repeated uint32 values = 3; // Description missing in models - PatternFlowIpv4IdentificationCounter increment = 5; + PatternFlowPfcPausePauseClass0Counter increment = 5; // Description missing in models - PatternFlowIpv4IdentificationCounter decrement = 6; + PatternFlowPfcPausePauseClass0Counter decrement = 6; // One or more metric tags can be used to enable tracking portion of or all bits in // a corresponding header field for metrics per each applicable value. These would appear // as tagged metrics in corresponding flow metrics. - repeated PatternFlowIpv4IdentificationMetricTag metric_tags = 7; + repeated PatternFlowPfcPausePauseClass0MetricTag metric_tags = 7; } // integer counter pattern -message PatternFlowIpv4ReservedCounter { +message PatternFlowPfcPausePauseClass1Counter { // Description missing in models // default = 0 @@ -11085,7 +13964,7 @@ message PatternFlowIpv4ReservedCounter { // Metric tag can be used to enable tracking portion of or all bits in a corresponding // header field for metrics per each applicable value. These would appear as tagged // metrics in corresponding flow metrics. -message PatternFlowIpv4ReservedMetricTag { +message PatternFlowPfcPausePauseClass1MetricTag { // Name used to identify the metrics associated with the values applicable for configured // offset and length inside corresponding header field @@ -11098,12 +13977,12 @@ message PatternFlowIpv4ReservedMetricTag { // Number of bits to track for metrics starting from configured offset of corresponding // header field - // default = 1 + // default = 16 optional uint32 length = 3; } -// Reserved flag. -message PatternFlowIpv4Reserved { +// Pause class 1 +message PatternFlowPfcPausePauseClass1 { message Choice { enum Enum { @@ -11127,19 +14006,19 @@ message PatternFlowIpv4Reserved { repeated uint32 values = 3; // Description missing in models - PatternFlowIpv4ReservedCounter increment = 5; + PatternFlowPfcPausePauseClass1Counter increment = 5; // Description missing in models - PatternFlowIpv4ReservedCounter decrement = 6; + PatternFlowPfcPausePauseClass1Counter decrement = 6; // One or more metric tags can be used to enable tracking portion of or all bits in // a corresponding header field for metrics per each applicable value. These would appear // as tagged metrics in corresponding flow metrics. - repeated PatternFlowIpv4ReservedMetricTag metric_tags = 7; + repeated PatternFlowPfcPausePauseClass1MetricTag metric_tags = 7; } // integer counter pattern -message PatternFlowIpv4DontFragmentCounter { +message PatternFlowPfcPausePauseClass2Counter { // Description missing in models // default = 0 @@ -11157,7 +14036,7 @@ message PatternFlowIpv4DontFragmentCounter { // Metric tag can be used to enable tracking portion of or all bits in a corresponding // header field for metrics per each applicable value. These would appear as tagged // metrics in corresponding flow metrics. -message PatternFlowIpv4DontFragmentMetricTag { +message PatternFlowPfcPausePauseClass2MetricTag { // Name used to identify the metrics associated with the values applicable for configured // offset and length inside corresponding header field @@ -11170,13 +14049,12 @@ message PatternFlowIpv4DontFragmentMetricTag { // Number of bits to track for metrics starting from configured offset of corresponding // header field - // default = 1 + // default = 16 optional uint32 length = 3; } -// Dont fragment flag If the dont_fragment flag is set and fragmentation is required -// to route the packet then the packet is dropped. -message PatternFlowIpv4DontFragment { +// Pause class 2 +message PatternFlowPfcPausePauseClass2 { message Choice { enum Enum { @@ -11200,19 +14078,19 @@ message PatternFlowIpv4DontFragment { repeated uint32 values = 3; // Description missing in models - PatternFlowIpv4DontFragmentCounter increment = 5; + PatternFlowPfcPausePauseClass2Counter increment = 5; // Description missing in models - PatternFlowIpv4DontFragmentCounter decrement = 6; + PatternFlowPfcPausePauseClass2Counter decrement = 6; // One or more metric tags can be used to enable tracking portion of or all bits in // a corresponding header field for metrics per each applicable value. These would appear // as tagged metrics in corresponding flow metrics. - repeated PatternFlowIpv4DontFragmentMetricTag metric_tags = 7; + repeated PatternFlowPfcPausePauseClass2MetricTag metric_tags = 7; } // integer counter pattern -message PatternFlowIpv4MoreFragmentsCounter { +message PatternFlowPfcPausePauseClass3Counter { // Description missing in models // default = 0 @@ -11230,7 +14108,7 @@ message PatternFlowIpv4MoreFragmentsCounter { // Metric tag can be used to enable tracking portion of or all bits in a corresponding // header field for metrics per each applicable value. These would appear as tagged // metrics in corresponding flow metrics. -message PatternFlowIpv4MoreFragmentsMetricTag { +message PatternFlowPfcPausePauseClass3MetricTag { // Name used to identify the metrics associated with the values applicable for configured // offset and length inside corresponding header field @@ -11243,12 +14121,12 @@ message PatternFlowIpv4MoreFragmentsMetricTag { // Number of bits to track for metrics starting from configured offset of corresponding // header field - // default = 1 + // default = 16 optional uint32 length = 3; } -// More fragments flag -message PatternFlowIpv4MoreFragments { +// Pause class 3 +message PatternFlowPfcPausePauseClass3 { message Choice { enum Enum { @@ -11272,19 +14150,19 @@ message PatternFlowIpv4MoreFragments { repeated uint32 values = 3; // Description missing in models - PatternFlowIpv4MoreFragmentsCounter increment = 5; + PatternFlowPfcPausePauseClass3Counter increment = 5; // Description missing in models - PatternFlowIpv4MoreFragmentsCounter decrement = 6; + PatternFlowPfcPausePauseClass3Counter decrement = 6; // One or more metric tags can be used to enable tracking portion of or all bits in // a corresponding header field for metrics per each applicable value. These would appear // as tagged metrics in corresponding flow metrics. - repeated PatternFlowIpv4MoreFragmentsMetricTag metric_tags = 7; + repeated PatternFlowPfcPausePauseClass3MetricTag metric_tags = 7; } // integer counter pattern -message PatternFlowIpv4FragmentOffsetCounter { +message PatternFlowPfcPausePauseClass4Counter { // Description missing in models // default = 0 @@ -11302,7 +14180,7 @@ message PatternFlowIpv4FragmentOffsetCounter { // Metric tag can be used to enable tracking portion of or all bits in a corresponding // header field for metrics per each applicable value. These would appear as tagged // metrics in corresponding flow metrics. -message PatternFlowIpv4FragmentOffsetMetricTag { +message PatternFlowPfcPausePauseClass4MetricTag { // Name used to identify the metrics associated with the values applicable for configured // offset and length inside corresponding header field @@ -11315,12 +14193,12 @@ message PatternFlowIpv4FragmentOffsetMetricTag { // Number of bits to track for metrics starting from configured offset of corresponding // header field - // default = 5 + // default = 16 optional uint32 length = 3; } -// Fragment offset -message PatternFlowIpv4FragmentOffset { +// Pause class 4 +message PatternFlowPfcPausePauseClass4 { message Choice { enum Enum { @@ -11344,22 +14222,22 @@ message PatternFlowIpv4FragmentOffset { repeated uint32 values = 3; // Description missing in models - PatternFlowIpv4FragmentOffsetCounter increment = 5; + PatternFlowPfcPausePauseClass4Counter increment = 5; // Description missing in models - PatternFlowIpv4FragmentOffsetCounter decrement = 6; + PatternFlowPfcPausePauseClass4Counter decrement = 6; // One or more metric tags can be used to enable tracking portion of or all bits in // a corresponding header field for metrics per each applicable value. These would appear // as tagged metrics in corresponding flow metrics. - repeated PatternFlowIpv4FragmentOffsetMetricTag metric_tags = 7; + repeated PatternFlowPfcPausePauseClass4MetricTag metric_tags = 7; } // integer counter pattern -message PatternFlowIpv4TimeToLiveCounter { +message PatternFlowPfcPausePauseClass5Counter { // Description missing in models - // default = 64 + // default = 0 optional uint32 start = 1; // Description missing in models @@ -11374,7 +14252,7 @@ message PatternFlowIpv4TimeToLiveCounter { // Metric tag can be used to enable tracking portion of or all bits in a corresponding // header field for metrics per each applicable value. These would appear as tagged // metrics in corresponding flow metrics. -message PatternFlowIpv4TimeToLiveMetricTag { +message PatternFlowPfcPausePauseClass5MetricTag { // Name used to identify the metrics associated with the values applicable for configured // offset and length inside corresponding header field @@ -11387,12 +14265,12 @@ message PatternFlowIpv4TimeToLiveMetricTag { // Number of bits to track for metrics starting from configured offset of corresponding // header field - // default = 8 + // default = 16 optional uint32 length = 3; } -// Time to live -message PatternFlowIpv4TimeToLive { +// Pause class 5 +message PatternFlowPfcPausePauseClass5 { message Choice { enum Enum { @@ -11408,30 +14286,30 @@ message PatternFlowIpv4TimeToLive { optional Choice.Enum choice = 1; // Description missing in models - // default = 64 + // default = 0 optional uint32 value = 2; // Description missing in models - // default = [64] + // default = [0] repeated uint32 values = 3; // Description missing in models - PatternFlowIpv4TimeToLiveCounter increment = 5; + PatternFlowPfcPausePauseClass5Counter increment = 5; // Description missing in models - PatternFlowIpv4TimeToLiveCounter decrement = 6; + PatternFlowPfcPausePauseClass5Counter decrement = 6; // One or more metric tags can be used to enable tracking portion of or all bits in // a corresponding header field for metrics per each applicable value. These would appear // as tagged metrics in corresponding flow metrics. - repeated PatternFlowIpv4TimeToLiveMetricTag metric_tags = 7; + repeated PatternFlowPfcPausePauseClass5MetricTag metric_tags = 7; } // integer counter pattern -message PatternFlowIpv4ProtocolCounter { +message PatternFlowPfcPausePauseClass6Counter { // Description missing in models - // default = 61 + // default = 0 optional uint32 start = 1; // Description missing in models @@ -11446,7 +14324,7 @@ message PatternFlowIpv4ProtocolCounter { // Metric tag can be used to enable tracking portion of or all bits in a corresponding // header field for metrics per each applicable value. These would appear as tagged // metrics in corresponding flow metrics. -message PatternFlowIpv4ProtocolMetricTag { +message PatternFlowPfcPausePauseClass6MetricTag { // Name used to identify the metrics associated with the values applicable for configured // offset and length inside corresponding header field @@ -11459,92 +14337,56 @@ message PatternFlowIpv4ProtocolMetricTag { // Number of bits to track for metrics starting from configured offset of corresponding // header field - // default = 8 + // default = 16 optional uint32 length = 3; } -// Protocol, default is 61 any host internal protocol -message PatternFlowIpv4Protocol { +// Pause class 6 +message PatternFlowPfcPausePauseClass6 { message Choice { enum Enum { unspecified = 0; value = 2; values = 3; - auto = 1; increment = 4; decrement = 5; } } // Description missing in models - // default = Choice.Enum.auto + // default = Choice.Enum.value optional Choice.Enum choice = 1; // Description missing in models - // default = 61 + // default = 0 optional uint32 value = 2; // Description missing in models - // default = [61] - repeated uint32 values = 3; - - // The OTG implementation can provide a system generated - // value for this property. If the OTG is unable to generate a value - // the default value must be used. - // default = 61 - optional uint32 auto = 4; + // default = [0] + repeated uint32 values = 3; // Description missing in models - PatternFlowIpv4ProtocolCounter increment = 6; + PatternFlowPfcPausePauseClass6Counter increment = 5; // Description missing in models - PatternFlowIpv4ProtocolCounter decrement = 7; + PatternFlowPfcPausePauseClass6Counter decrement = 6; // One or more metric tags can be used to enable tracking portion of or all bits in // a corresponding header field for metrics per each applicable value. These would appear // as tagged metrics in corresponding flow metrics. - repeated PatternFlowIpv4ProtocolMetricTag metric_tags = 8; -} - -// Header checksum -message PatternFlowIpv4HeaderChecksum { - - message Choice { - enum Enum { - unspecified = 0; - generated = 1; - custom = 2; - } - } - // The type of checksum - // default = Choice.Enum.generated - optional Choice.Enum choice = 1; - - message Generated { - enum Enum { - unspecified = 0; - good = 1; - bad = 2; - } - } - // A system generated checksum value - // default = Generated.Enum.good - optional Generated.Enum generated = 2; - - // A custom checksum value - optional uint32 custom = 3; + repeated PatternFlowPfcPausePauseClass6MetricTag metric_tags = 7; } -// ipv4 counter pattern -message PatternFlowIpv4SrcCounter { +// integer counter pattern +message PatternFlowPfcPausePauseClass7Counter { // Description missing in models - // default = 0.0.0.0 - optional string start = 1; + // default = 0 + optional uint32 start = 1; // Description missing in models - // default = 0.0.0.1 - optional string step = 2; + // default = 1 + optional uint32 step = 2; // Description missing in models // default = 1 @@ -11554,7 +14396,7 @@ message PatternFlowIpv4SrcCounter { // Metric tag can be used to enable tracking portion of or all bits in a corresponding // header field for metrics per each applicable value. These would appear as tagged // metrics in corresponding flow metrics. -message PatternFlowIpv4SrcMetricTag { +message PatternFlowPfcPausePauseClass7MetricTag { // Name used to identify the metrics associated with the values applicable for configured // offset and length inside corresponding header field @@ -11567,12 +14409,12 @@ message PatternFlowIpv4SrcMetricTag { // Number of bits to track for metrics starting from configured offset of corresponding // header field - // default = 32 + // default = 16 optional uint32 length = 3; } -// Source address -message PatternFlowIpv4Src { +// Pause class 7 +message PatternFlowPfcPausePauseClass7 { message Choice { enum Enum { @@ -11588,34 +14430,34 @@ message PatternFlowIpv4Src { optional Choice.Enum choice = 1; // Description missing in models - // default = 0.0.0.0 - optional string value = 2; + // default = 0 + optional uint32 value = 2; // Description missing in models - // default = ['0.0.0.0'] - repeated string values = 3; + // default = [0] + repeated uint32 values = 3; // Description missing in models - PatternFlowIpv4SrcCounter increment = 5; + PatternFlowPfcPausePauseClass7Counter increment = 5; // Description missing in models - PatternFlowIpv4SrcCounter decrement = 6; + PatternFlowPfcPausePauseClass7Counter decrement = 6; // One or more metric tags can be used to enable tracking portion of or all bits in // a corresponding header field for metrics per each applicable value. These would appear // as tagged metrics in corresponding flow metrics. - repeated PatternFlowIpv4SrcMetricTag metric_tags = 7; + repeated PatternFlowPfcPausePauseClass7MetricTag metric_tags = 7; } -// ipv4 counter pattern -message PatternFlowIpv4DstCounter { +// mac counter pattern +message PatternFlowEthernetPauseDstCounter { // Description missing in models - // default = 0.0.0.0 + // default = 01:80:c2:00:00:01 optional string start = 1; // Description missing in models - // default = 0.0.0.1 + // default = 00:00:00:00:00:01 optional string step = 2; // Description missing in models @@ -11626,7 +14468,7 @@ message PatternFlowIpv4DstCounter { // Metric tag can be used to enable tracking portion of or all bits in a corresponding // header field for metrics per each applicable value. These would appear as tagged // metrics in corresponding flow metrics. -message PatternFlowIpv4DstMetricTag { +message PatternFlowEthernetPauseDstMetricTag { // Name used to identify the metrics associated with the values applicable for configured // offset and length inside corresponding header field @@ -11639,12 +14481,12 @@ message PatternFlowIpv4DstMetricTag { // Number of bits to track for metrics starting from configured offset of corresponding // header field - // default = 32 + // default = 48 optional uint32 length = 3; } -// Destination address -message PatternFlowIpv4Dst { +// Destination MAC address +message PatternFlowEthernetPauseDst { message Choice { enum Enum { @@ -11660,35 +14502,35 @@ message PatternFlowIpv4Dst { optional Choice.Enum choice = 1; // Description missing in models - // default = 0.0.0.0 + // default = 01:80:c2:00:00:01 optional string value = 2; // Description missing in models - // default = ['0.0.0.0'] + // default = ['01:80:c2:00:00:01'] repeated string values = 3; // Description missing in models - PatternFlowIpv4DstCounter increment = 5; + PatternFlowEthernetPauseDstCounter increment = 5; // Description missing in models - PatternFlowIpv4DstCounter decrement = 6; + PatternFlowEthernetPauseDstCounter decrement = 6; // One or more metric tags can be used to enable tracking portion of or all bits in // a corresponding header field for metrics per each applicable value. These would appear // as tagged metrics in corresponding flow metrics. - repeated PatternFlowIpv4DstMetricTag metric_tags = 7; + repeated PatternFlowEthernetPauseDstMetricTag metric_tags = 7; } -// integer counter pattern -message PatternFlowIpv4PriorityRawCounter { +// mac counter pattern +message PatternFlowEthernetPauseSrcCounter { // Description missing in models - // default = 0 - optional uint32 start = 1; + // default = 00:00:00:00:00:00 + optional string start = 1; // Description missing in models - // default = 1 - optional uint32 step = 2; + // default = 00:00:00:00:00:01 + optional string step = 2; // Description missing in models // default = 1 @@ -11698,7 +14540,7 @@ message PatternFlowIpv4PriorityRawCounter { // Metric tag can be used to enable tracking portion of or all bits in a corresponding // header field for metrics per each applicable value. These would appear as tagged // metrics in corresponding flow metrics. -message PatternFlowIpv4PriorityRawMetricTag { +message PatternFlowEthernetPauseSrcMetricTag { // Name used to identify the metrics associated with the values applicable for configured // offset and length inside corresponding header field @@ -11711,12 +14553,12 @@ message PatternFlowIpv4PriorityRawMetricTag { // Number of bits to track for metrics starting from configured offset of corresponding // header field - // default = 8 + // default = 48 optional uint32 length = 3; } -// Raw priority -message PatternFlowIpv4PriorityRaw { +// Source MAC address +message PatternFlowEthernetPauseSrc { message Choice { enum Enum { @@ -11732,30 +14574,30 @@ message PatternFlowIpv4PriorityRaw { optional Choice.Enum choice = 1; // Description missing in models - // default = 0 - optional uint32 value = 2; + // default = 00:00:00:00:00:00 + optional string value = 2; // Description missing in models - // default = [0] - repeated uint32 values = 3; + // default = ['00:00:00:00:00:00'] + repeated string values = 3; // Description missing in models - PatternFlowIpv4PriorityRawCounter increment = 5; + PatternFlowEthernetPauseSrcCounter increment = 5; // Description missing in models - PatternFlowIpv4PriorityRawCounter decrement = 6; + PatternFlowEthernetPauseSrcCounter decrement = 6; // One or more metric tags can be used to enable tracking portion of or all bits in // a corresponding header field for metrics per each applicable value. These would appear // as tagged metrics in corresponding flow metrics. - repeated PatternFlowIpv4PriorityRawMetricTag metric_tags = 7; + repeated PatternFlowEthernetPauseSrcMetricTag metric_tags = 7; } // integer counter pattern -message PatternFlowIpv4DscpPhbCounter { +message PatternFlowEthernetPauseEtherTypeCounter { // Description missing in models - // default = 0 + // default = 34824 optional uint32 start = 1; // Description missing in models @@ -11770,7 +14612,7 @@ message PatternFlowIpv4DscpPhbCounter { // Metric tag can be used to enable tracking portion of or all bits in a corresponding // header field for metrics per each applicable value. These would appear as tagged // metrics in corresponding flow metrics. -message PatternFlowIpv4DscpPhbMetricTag { +message PatternFlowEthernetPauseEtherTypeMetricTag { // Name used to identify the metrics associated with the values applicable for configured // offset and length inside corresponding header field @@ -11783,12 +14625,12 @@ message PatternFlowIpv4DscpPhbMetricTag { // Number of bits to track for metrics starting from configured offset of corresponding // header field - // default = 6 + // default = 16 optional uint32 length = 3; } -// Per hop behavior -message PatternFlowIpv4DscpPhb { +// Ethernet type +message PatternFlowEthernetPauseEtherType { message Choice { enum Enum { @@ -11804,30 +14646,30 @@ message PatternFlowIpv4DscpPhb { optional Choice.Enum choice = 1; // Description missing in models - // default = 0 + // default = 34824 optional uint32 value = 2; // Description missing in models - // default = [0] + // default = [34824] repeated uint32 values = 3; // Description missing in models - PatternFlowIpv4DscpPhbCounter increment = 5; + PatternFlowEthernetPauseEtherTypeCounter increment = 5; // Description missing in models - PatternFlowIpv4DscpPhbCounter decrement = 6; + PatternFlowEthernetPauseEtherTypeCounter decrement = 6; // One or more metric tags can be used to enable tracking portion of or all bits in // a corresponding header field for metrics per each applicable value. These would appear // as tagged metrics in corresponding flow metrics. - repeated PatternFlowIpv4DscpPhbMetricTag metric_tags = 7; + repeated PatternFlowEthernetPauseEtherTypeMetricTag metric_tags = 7; } // integer counter pattern -message PatternFlowIpv4DscpEcnCounter { +message PatternFlowEthernetPauseControlOpCodeCounter { // Description missing in models - // default = 0 + // default = 1 optional uint32 start = 1; // Description missing in models @@ -11842,7 +14684,7 @@ message PatternFlowIpv4DscpEcnCounter { // Metric tag can be used to enable tracking portion of or all bits in a corresponding // header field for metrics per each applicable value. These would appear as tagged // metrics in corresponding flow metrics. -message PatternFlowIpv4DscpEcnMetricTag { +message PatternFlowEthernetPauseControlOpCodeMetricTag { // Name used to identify the metrics associated with the values applicable for configured // offset and length inside corresponding header field @@ -11855,12 +14697,12 @@ message PatternFlowIpv4DscpEcnMetricTag { // Number of bits to track for metrics starting from configured offset of corresponding // header field - // default = 2 + // default = 16 optional uint32 length = 3; } -// Explicit congestion notification -message PatternFlowIpv4DscpEcn { +// Control operation code +message PatternFlowEthernetPauseControlOpCode { message Choice { enum Enum { @@ -11876,27 +14718,27 @@ message PatternFlowIpv4DscpEcn { optional Choice.Enum choice = 1; // Description missing in models - // default = 0 + // default = 1 optional uint32 value = 2; // Description missing in models - // default = [0] + // default = [1] repeated uint32 values = 3; // Description missing in models - PatternFlowIpv4DscpEcnCounter increment = 5; + PatternFlowEthernetPauseControlOpCodeCounter increment = 5; // Description missing in models - PatternFlowIpv4DscpEcnCounter decrement = 6; + PatternFlowEthernetPauseControlOpCodeCounter decrement = 6; // One or more metric tags can be used to enable tracking portion of or all bits in // a corresponding header field for metrics per each applicable value. These would appear // as tagged metrics in corresponding flow metrics. - repeated PatternFlowIpv4DscpEcnMetricTag metric_tags = 7; + repeated PatternFlowEthernetPauseControlOpCodeMetricTag metric_tags = 7; } // integer counter pattern -message PatternFlowIpv4TosPrecedenceCounter { +message PatternFlowEthernetPauseTimeCounter { // Description missing in models // default = 0 @@ -11914,7 +14756,7 @@ message PatternFlowIpv4TosPrecedenceCounter { // Metric tag can be used to enable tracking portion of or all bits in a corresponding // header field for metrics per each applicable value. These would appear as tagged // metrics in corresponding flow metrics. -message PatternFlowIpv4TosPrecedenceMetricTag { +message PatternFlowEthernetPauseTimeMetricTag { // Name used to identify the metrics associated with the values applicable for configured // offset and length inside corresponding header field @@ -11927,12 +14769,12 @@ message PatternFlowIpv4TosPrecedenceMetricTag { // Number of bits to track for metrics starting from configured offset of corresponding // header field - // default = 3 + // default = 16 optional uint32 length = 3; } -// Precedence -message PatternFlowIpv4TosPrecedence { +// Time +message PatternFlowEthernetPauseTime { message Choice { enum Enum { @@ -11956,19 +14798,19 @@ message PatternFlowIpv4TosPrecedence { repeated uint32 values = 3; // Description missing in models - PatternFlowIpv4TosPrecedenceCounter increment = 5; + PatternFlowEthernetPauseTimeCounter increment = 5; // Description missing in models - PatternFlowIpv4TosPrecedenceCounter decrement = 6; + PatternFlowEthernetPauseTimeCounter decrement = 6; // One or more metric tags can be used to enable tracking portion of or all bits in // a corresponding header field for metrics per each applicable value. These would appear // as tagged metrics in corresponding flow metrics. - repeated PatternFlowIpv4TosPrecedenceMetricTag metric_tags = 7; + repeated PatternFlowEthernetPauseTimeMetricTag metric_tags = 7; } // integer counter pattern -message PatternFlowIpv4TosDelayCounter { +message PatternFlowTcpSrcPortCounter { // Description missing in models // default = 0 @@ -11986,7 +14828,7 @@ message PatternFlowIpv4TosDelayCounter { // Metric tag can be used to enable tracking portion of or all bits in a corresponding // header field for metrics per each applicable value. These would appear as tagged // metrics in corresponding flow metrics. -message PatternFlowIpv4TosDelayMetricTag { +message PatternFlowTcpSrcPortMetricTag { // Name used to identify the metrics associated with the values applicable for configured // offset and length inside corresponding header field @@ -11999,12 +14841,12 @@ message PatternFlowIpv4TosDelayMetricTag { // Number of bits to track for metrics starting from configured offset of corresponding // header field - // default = 1 + // default = 16 optional uint32 length = 3; } -// Delay -message PatternFlowIpv4TosDelay { +// Source port +message PatternFlowTcpSrcPort { message Choice { enum Enum { @@ -12028,19 +14870,19 @@ message PatternFlowIpv4TosDelay { repeated uint32 values = 3; // Description missing in models - PatternFlowIpv4TosDelayCounter increment = 5; + PatternFlowTcpSrcPortCounter increment = 5; // Description missing in models - PatternFlowIpv4TosDelayCounter decrement = 6; + PatternFlowTcpSrcPortCounter decrement = 6; // One or more metric tags can be used to enable tracking portion of or all bits in // a corresponding header field for metrics per each applicable value. These would appear // as tagged metrics in corresponding flow metrics. - repeated PatternFlowIpv4TosDelayMetricTag metric_tags = 7; + repeated PatternFlowTcpSrcPortMetricTag metric_tags = 7; } // integer counter pattern -message PatternFlowIpv4TosThroughputCounter { +message PatternFlowTcpDstPortCounter { // Description missing in models // default = 0 @@ -12058,7 +14900,7 @@ message PatternFlowIpv4TosThroughputCounter { // Metric tag can be used to enable tracking portion of or all bits in a corresponding // header field for metrics per each applicable value. These would appear as tagged // metrics in corresponding flow metrics. -message PatternFlowIpv4TosThroughputMetricTag { +message PatternFlowTcpDstPortMetricTag { // Name used to identify the metrics associated with the values applicable for configured // offset and length inside corresponding header field @@ -12071,12 +14913,12 @@ message PatternFlowIpv4TosThroughputMetricTag { // Number of bits to track for metrics starting from configured offset of corresponding // header field - // default = 1 + // default = 16 optional uint32 length = 3; } -// Throughput -message PatternFlowIpv4TosThroughput { +// Destination port +message PatternFlowTcpDstPort { message Choice { enum Enum { @@ -12100,19 +14942,19 @@ message PatternFlowIpv4TosThroughput { repeated uint32 values = 3; // Description missing in models - PatternFlowIpv4TosThroughputCounter increment = 5; + PatternFlowTcpDstPortCounter increment = 5; // Description missing in models - PatternFlowIpv4TosThroughputCounter decrement = 6; + PatternFlowTcpDstPortCounter decrement = 6; // One or more metric tags can be used to enable tracking portion of or all bits in // a corresponding header field for metrics per each applicable value. These would appear // as tagged metrics in corresponding flow metrics. - repeated PatternFlowIpv4TosThroughputMetricTag metric_tags = 7; + repeated PatternFlowTcpDstPortMetricTag metric_tags = 7; } // integer counter pattern -message PatternFlowIpv4TosReliabilityCounter { +message PatternFlowTcpSeqNumCounter { // Description missing in models // default = 0 @@ -12130,7 +14972,7 @@ message PatternFlowIpv4TosReliabilityCounter { // Metric tag can be used to enable tracking portion of or all bits in a corresponding // header field for metrics per each applicable value. These would appear as tagged // metrics in corresponding flow metrics. -message PatternFlowIpv4TosReliabilityMetricTag { +message PatternFlowTcpSeqNumMetricTag { // Name used to identify the metrics associated with the values applicable for configured // offset and length inside corresponding header field @@ -12143,12 +14985,12 @@ message PatternFlowIpv4TosReliabilityMetricTag { // Number of bits to track for metrics starting from configured offset of corresponding // header field - // default = 1 + // default = 32 optional uint32 length = 3; } -// Reliability -message PatternFlowIpv4TosReliability { +// Sequence number +message PatternFlowTcpSeqNum { message Choice { enum Enum { @@ -12172,19 +15014,19 @@ message PatternFlowIpv4TosReliability { repeated uint32 values = 3; // Description missing in models - PatternFlowIpv4TosReliabilityCounter increment = 5; + PatternFlowTcpSeqNumCounter increment = 5; // Description missing in models - PatternFlowIpv4TosReliabilityCounter decrement = 6; + PatternFlowTcpSeqNumCounter decrement = 6; // One or more metric tags can be used to enable tracking portion of or all bits in // a corresponding header field for metrics per each applicable value. These would appear // as tagged metrics in corresponding flow metrics. - repeated PatternFlowIpv4TosReliabilityMetricTag metric_tags = 7; + repeated PatternFlowTcpSeqNumMetricTag metric_tags = 7; } // integer counter pattern -message PatternFlowIpv4TosMonetaryCounter { +message PatternFlowTcpAckNumCounter { // Description missing in models // default = 0 @@ -12202,7 +15044,7 @@ message PatternFlowIpv4TosMonetaryCounter { // Metric tag can be used to enable tracking portion of or all bits in a corresponding // header field for metrics per each applicable value. These would appear as tagged // metrics in corresponding flow metrics. -message PatternFlowIpv4TosMonetaryMetricTag { +message PatternFlowTcpAckNumMetricTag { // Name used to identify the metrics associated with the values applicable for configured // offset and length inside corresponding header field @@ -12215,12 +15057,12 @@ message PatternFlowIpv4TosMonetaryMetricTag { // Number of bits to track for metrics starting from configured offset of corresponding // header field - // default = 1 + // default = 32 optional uint32 length = 3; } -// Monetary -message PatternFlowIpv4TosMonetary { +// Acknowledgement number +message PatternFlowTcpAckNum { message Choice { enum Enum { @@ -12244,19 +15086,19 @@ message PatternFlowIpv4TosMonetary { repeated uint32 values = 3; // Description missing in models - PatternFlowIpv4TosMonetaryCounter increment = 5; + PatternFlowTcpAckNumCounter increment = 5; // Description missing in models - PatternFlowIpv4TosMonetaryCounter decrement = 6; + PatternFlowTcpAckNumCounter decrement = 6; // One or more metric tags can be used to enable tracking portion of or all bits in // a corresponding header field for metrics per each applicable value. These would appear // as tagged metrics in corresponding flow metrics. - repeated PatternFlowIpv4TosMonetaryMetricTag metric_tags = 7; + repeated PatternFlowTcpAckNumMetricTag metric_tags = 7; } // integer counter pattern -message PatternFlowIpv4TosUnusedCounter { +message PatternFlowTcpDataOffsetCounter { // Description missing in models // default = 0 @@ -12274,7 +15116,7 @@ message PatternFlowIpv4TosUnusedCounter { // Metric tag can be used to enable tracking portion of or all bits in a corresponding // header field for metrics per each applicable value. These would appear as tagged // metrics in corresponding flow metrics. -message PatternFlowIpv4TosUnusedMetricTag { +message PatternFlowTcpDataOffsetMetricTag { // Name used to identify the metrics associated with the values applicable for configured // offset and length inside corresponding header field @@ -12287,12 +15129,12 @@ message PatternFlowIpv4TosUnusedMetricTag { // Number of bits to track for metrics starting from configured offset of corresponding // header field - // default = 1 + // default = 4 optional uint32 length = 3; } -// Unused -message PatternFlowIpv4TosUnused { +// The number of 32 bit words in the TCP header. This indicates where the data begins. +message PatternFlowTcpDataOffset { message Choice { enum Enum { @@ -12316,22 +15158,22 @@ message PatternFlowIpv4TosUnused { repeated uint32 values = 3; // Description missing in models - PatternFlowIpv4TosUnusedCounter increment = 5; + PatternFlowTcpDataOffsetCounter increment = 5; // Description missing in models - PatternFlowIpv4TosUnusedCounter decrement = 6; + PatternFlowTcpDataOffsetCounter decrement = 6; // One or more metric tags can be used to enable tracking portion of or all bits in // a corresponding header field for metrics per each applicable value. These would appear // as tagged metrics in corresponding flow metrics. - repeated PatternFlowIpv4TosUnusedMetricTag metric_tags = 7; + repeated PatternFlowTcpDataOffsetMetricTag metric_tags = 7; } // integer counter pattern -message PatternFlowIpv6VersionCounter { +message PatternFlowTcpEcnNsCounter { // Description missing in models - // default = 6 + // default = 0 optional uint32 start = 1; // Description missing in models @@ -12346,7 +15188,7 @@ message PatternFlowIpv6VersionCounter { // Metric tag can be used to enable tracking portion of or all bits in a corresponding // header field for metrics per each applicable value. These would appear as tagged // metrics in corresponding flow metrics. -message PatternFlowIpv6VersionMetricTag { +message PatternFlowTcpEcnNsMetricTag { // Name used to identify the metrics associated with the values applicable for configured // offset and length inside corresponding header field @@ -12359,12 +15201,12 @@ message PatternFlowIpv6VersionMetricTag { // Number of bits to track for metrics starting from configured offset of corresponding // header field - // default = 4 + // default = 1 optional uint32 length = 3; } -// Version number -message PatternFlowIpv6Version { +// Explicit congestion notification, concealment protection. +message PatternFlowTcpEcnNs { message Choice { enum Enum { @@ -12380,27 +15222,27 @@ message PatternFlowIpv6Version { optional Choice.Enum choice = 1; // Description missing in models - // default = 6 + // default = 0 optional uint32 value = 2; // Description missing in models - // default = [6] + // default = [0] repeated uint32 values = 3; // Description missing in models - PatternFlowIpv6VersionCounter increment = 5; + PatternFlowTcpEcnNsCounter increment = 5; // Description missing in models - PatternFlowIpv6VersionCounter decrement = 6; + PatternFlowTcpEcnNsCounter decrement = 6; // One or more metric tags can be used to enable tracking portion of or all bits in // a corresponding header field for metrics per each applicable value. These would appear // as tagged metrics in corresponding flow metrics. - repeated PatternFlowIpv6VersionMetricTag metric_tags = 7; + repeated PatternFlowTcpEcnNsMetricTag metric_tags = 7; } // integer counter pattern -message PatternFlowIpv6TrafficClassCounter { +message PatternFlowTcpEcnCwrCounter { // Description missing in models // default = 0 @@ -12418,7 +15260,7 @@ message PatternFlowIpv6TrafficClassCounter { // Metric tag can be used to enable tracking portion of or all bits in a corresponding // header field for metrics per each applicable value. These would appear as tagged // metrics in corresponding flow metrics. -message PatternFlowIpv6TrafficClassMetricTag { +message PatternFlowTcpEcnCwrMetricTag { // Name used to identify the metrics associated with the values applicable for configured // offset and length inside corresponding header field @@ -12431,12 +15273,12 @@ message PatternFlowIpv6TrafficClassMetricTag { // Number of bits to track for metrics starting from configured offset of corresponding // header field - // default = 8 + // default = 1 optional uint32 length = 3; } -// Traffic class -message PatternFlowIpv6TrafficClass { +// Explicit congestion notification, congestion window reduced. +message PatternFlowTcpEcnCwr { message Choice { enum Enum { @@ -12460,19 +15302,19 @@ message PatternFlowIpv6TrafficClass { repeated uint32 values = 3; // Description missing in models - PatternFlowIpv6TrafficClassCounter increment = 5; + PatternFlowTcpEcnCwrCounter increment = 5; // Description missing in models - PatternFlowIpv6TrafficClassCounter decrement = 6; + PatternFlowTcpEcnCwrCounter decrement = 6; // One or more metric tags can be used to enable tracking portion of or all bits in // a corresponding header field for metrics per each applicable value. These would appear // as tagged metrics in corresponding flow metrics. - repeated PatternFlowIpv6TrafficClassMetricTag metric_tags = 7; + repeated PatternFlowTcpEcnCwrMetricTag metric_tags = 7; } // integer counter pattern -message PatternFlowIpv6FlowLabelCounter { +message PatternFlowTcpEcnEchoCounter { // Description missing in models // default = 0 @@ -12490,7 +15332,7 @@ message PatternFlowIpv6FlowLabelCounter { // Metric tag can be used to enable tracking portion of or all bits in a corresponding // header field for metrics per each applicable value. These would appear as tagged // metrics in corresponding flow metrics. -message PatternFlowIpv6FlowLabelMetricTag { +message PatternFlowTcpEcnEchoMetricTag { // Name used to identify the metrics associated with the values applicable for configured // offset and length inside corresponding header field @@ -12503,12 +15345,13 @@ message PatternFlowIpv6FlowLabelMetricTag { // Number of bits to track for metrics starting from configured offset of corresponding // header field - // default = 20 + // default = 1 optional uint32 length = 3; } -// Flow label -message PatternFlowIpv6FlowLabel { +// Explicit congestion notification, echo. 1 indicates the peer is ecn capable. 0 indicates +// that a packet with ipv4.ecn = 11 in the ip header was received during normal transmission. +message PatternFlowTcpEcnEcho { message Choice { enum Enum { @@ -12532,19 +15375,19 @@ message PatternFlowIpv6FlowLabel { repeated uint32 values = 3; // Description missing in models - PatternFlowIpv6FlowLabelCounter increment = 5; + PatternFlowTcpEcnEchoCounter increment = 5; // Description missing in models - PatternFlowIpv6FlowLabelCounter decrement = 6; + PatternFlowTcpEcnEchoCounter decrement = 6; // One or more metric tags can be used to enable tracking portion of or all bits in // a corresponding header field for metrics per each applicable value. These would appear // as tagged metrics in corresponding flow metrics. - repeated PatternFlowIpv6FlowLabelMetricTag metric_tags = 7; + repeated PatternFlowTcpEcnEchoMetricTag metric_tags = 7; } // integer counter pattern -message PatternFlowIpv6PayloadLengthCounter { +message PatternFlowTcpCtlUrgCounter { // Description missing in models // default = 0 @@ -12562,7 +15405,7 @@ message PatternFlowIpv6PayloadLengthCounter { // Metric tag can be used to enable tracking portion of or all bits in a corresponding // header field for metrics per each applicable value. These would appear as tagged // metrics in corresponding flow metrics. -message PatternFlowIpv6PayloadLengthMetricTag { +message PatternFlowTcpCtlUrgMetricTag { // Name used to identify the metrics associated with the values applicable for configured // offset and length inside corresponding header field @@ -12575,25 +15418,24 @@ message PatternFlowIpv6PayloadLengthMetricTag { // Number of bits to track for metrics starting from configured offset of corresponding // header field - // default = 16 + // default = 1 optional uint32 length = 3; } -// Payload length -message PatternFlowIpv6PayloadLength { +// A value of 1 indicates that the urgent pointer field is significant. +message PatternFlowTcpCtlUrg { message Choice { enum Enum { unspecified = 0; value = 2; values = 3; - auto = 1; increment = 4; decrement = 5; } } // Description missing in models - // default = Choice.Enum.auto + // default = Choice.Enum.value optional Choice.Enum choice = 1; // Description missing in models @@ -12604,29 +15446,23 @@ message PatternFlowIpv6PayloadLength { // default = [0] repeated uint32 values = 3; - // The OTG implementation can provide a system generated - // value for this property. If the OTG is unable to generate a value - // the default value must be used. - // default = 0 - optional uint32 auto = 4; - // Description missing in models - PatternFlowIpv6PayloadLengthCounter increment = 6; + PatternFlowTcpCtlUrgCounter increment = 5; // Description missing in models - PatternFlowIpv6PayloadLengthCounter decrement = 7; + PatternFlowTcpCtlUrgCounter decrement = 6; // One or more metric tags can be used to enable tracking portion of or all bits in // a corresponding header field for metrics per each applicable value. These would appear // as tagged metrics in corresponding flow metrics. - repeated PatternFlowIpv6PayloadLengthMetricTag metric_tags = 8; + repeated PatternFlowTcpCtlUrgMetricTag metric_tags = 7; } // integer counter pattern -message PatternFlowIpv6NextHeaderCounter { +message PatternFlowTcpCtlAckCounter { // Description missing in models - // default = 59 + // default = 0 optional uint32 start = 1; // Description missing in models @@ -12641,7 +15477,7 @@ message PatternFlowIpv6NextHeaderCounter { // Metric tag can be used to enable tracking portion of or all bits in a corresponding // header field for metrics per each applicable value. These would appear as tagged // metrics in corresponding flow metrics. -message PatternFlowIpv6NextHeaderMetricTag { +message PatternFlowTcpCtlAckMetricTag { // Name used to identify the metrics associated with the values applicable for configured // offset and length inside corresponding header field @@ -12654,58 +15490,51 @@ message PatternFlowIpv6NextHeaderMetricTag { // Number of bits to track for metrics starting from configured offset of corresponding // header field - // default = 8 + // default = 1 optional uint32 length = 3; } -// Next header -message PatternFlowIpv6NextHeader { +// A value of 1 indicates that the ackknowledgment field is significant. +message PatternFlowTcpCtlAck { message Choice { enum Enum { unspecified = 0; value = 2; values = 3; - auto = 1; increment = 4; decrement = 5; } } // Description missing in models - // default = Choice.Enum.auto + // default = Choice.Enum.value optional Choice.Enum choice = 1; // Description missing in models - // default = 59 + // default = 0 optional uint32 value = 2; // Description missing in models - // default = [59] + // default = [0] repeated uint32 values = 3; - // The OTG implementation can provide a system generated - // value for this property. If the OTG is unable to generate a value - // the default value must be used. - // default = 59 - optional uint32 auto = 4; - // Description missing in models - PatternFlowIpv6NextHeaderCounter increment = 6; + PatternFlowTcpCtlAckCounter increment = 5; // Description missing in models - PatternFlowIpv6NextHeaderCounter decrement = 7; + PatternFlowTcpCtlAckCounter decrement = 6; // One or more metric tags can be used to enable tracking portion of or all bits in // a corresponding header field for metrics per each applicable value. These would appear // as tagged metrics in corresponding flow metrics. - repeated PatternFlowIpv6NextHeaderMetricTag metric_tags = 8; + repeated PatternFlowTcpCtlAckMetricTag metric_tags = 7; } // integer counter pattern -message PatternFlowIpv6HopLimitCounter { +message PatternFlowTcpCtlPshCounter { // Description missing in models - // default = 64 + // default = 0 optional uint32 start = 1; // Description missing in models @@ -12720,7 +15549,7 @@ message PatternFlowIpv6HopLimitCounter { // Metric tag can be used to enable tracking portion of or all bits in a corresponding // header field for metrics per each applicable value. These would appear as tagged // metrics in corresponding flow metrics. -message PatternFlowIpv6HopLimitMetricTag { +message PatternFlowTcpCtlPshMetricTag { // Name used to identify the metrics associated with the values applicable for configured // offset and length inside corresponding header field @@ -12733,12 +15562,12 @@ message PatternFlowIpv6HopLimitMetricTag { // Number of bits to track for metrics starting from configured offset of corresponding // header field - // default = 8 + // default = 1 optional uint32 length = 3; } -// Hop limit -message PatternFlowIpv6HopLimit { +// Asks to push the buffered data to the receiving application. +message PatternFlowTcpCtlPsh { message Choice { enum Enum { @@ -12754,35 +15583,35 @@ message PatternFlowIpv6HopLimit { optional Choice.Enum choice = 1; // Description missing in models - // default = 64 + // default = 0 optional uint32 value = 2; // Description missing in models - // default = [64] + // default = [0] repeated uint32 values = 3; // Description missing in models - PatternFlowIpv6HopLimitCounter increment = 5; + PatternFlowTcpCtlPshCounter increment = 5; // Description missing in models - PatternFlowIpv6HopLimitCounter decrement = 6; + PatternFlowTcpCtlPshCounter decrement = 6; // One or more metric tags can be used to enable tracking portion of or all bits in // a corresponding header field for metrics per each applicable value. These would appear // as tagged metrics in corresponding flow metrics. - repeated PatternFlowIpv6HopLimitMetricTag metric_tags = 7; + repeated PatternFlowTcpCtlPshMetricTag metric_tags = 7; } -// ipv6 counter pattern -message PatternFlowIpv6SrcCounter { +// integer counter pattern +message PatternFlowTcpCtlRstCounter { // Description missing in models - // default = ::0 - optional string start = 1; + // default = 0 + optional uint32 start = 1; // Description missing in models - // default = ::1 - optional string step = 2; + // default = 1 + optional uint32 step = 2; // Description missing in models // default = 1 @@ -12792,7 +15621,7 @@ message PatternFlowIpv6SrcCounter { // Metric tag can be used to enable tracking portion of or all bits in a corresponding // header field for metrics per each applicable value. These would appear as tagged // metrics in corresponding flow metrics. -message PatternFlowIpv6SrcMetricTag { +message PatternFlowTcpCtlRstMetricTag { // Name used to identify the metrics associated with the values applicable for configured // offset and length inside corresponding header field @@ -12805,12 +15634,12 @@ message PatternFlowIpv6SrcMetricTag { // Number of bits to track for metrics starting from configured offset of corresponding // header field - // default = 128 + // default = 1 optional uint32 length = 3; } -// Source address -message PatternFlowIpv6Src { +// Reset the connection. +message PatternFlowTcpCtlRst { message Choice { enum Enum { @@ -12826,35 +15655,35 @@ message PatternFlowIpv6Src { optional Choice.Enum choice = 1; // Description missing in models - // default = ::0 - optional string value = 2; + // default = 0 + optional uint32 value = 2; // Description missing in models - // default = ['::0'] - repeated string values = 3; + // default = [0] + repeated uint32 values = 3; // Description missing in models - PatternFlowIpv6SrcCounter increment = 5; + PatternFlowTcpCtlRstCounter increment = 5; // Description missing in models - PatternFlowIpv6SrcCounter decrement = 6; + PatternFlowTcpCtlRstCounter decrement = 6; // One or more metric tags can be used to enable tracking portion of or all bits in // a corresponding header field for metrics per each applicable value. These would appear // as tagged metrics in corresponding flow metrics. - repeated PatternFlowIpv6SrcMetricTag metric_tags = 7; + repeated PatternFlowTcpCtlRstMetricTag metric_tags = 7; } -// ipv6 counter pattern -message PatternFlowIpv6DstCounter { +// integer counter pattern +message PatternFlowTcpCtlSynCounter { // Description missing in models - // default = ::0 - optional string start = 1; + // default = 0 + optional uint32 start = 1; // Description missing in models - // default = ::1 - optional string step = 2; + // default = 1 + optional uint32 step = 2; // Description missing in models // default = 1 @@ -12864,7 +15693,7 @@ message PatternFlowIpv6DstCounter { // Metric tag can be used to enable tracking portion of or all bits in a corresponding // header field for metrics per each applicable value. These would appear as tagged // metrics in corresponding flow metrics. -message PatternFlowIpv6DstMetricTag { +message PatternFlowTcpCtlSynMetricTag { // Name used to identify the metrics associated with the values applicable for configured // offset and length inside corresponding header field @@ -12877,12 +15706,12 @@ message PatternFlowIpv6DstMetricTag { // Number of bits to track for metrics starting from configured offset of corresponding // header field - // default = 128 + // default = 1 optional uint32 length = 3; } -// Destination address -message PatternFlowIpv6Dst { +// Synchronize sequenece numbers. +message PatternFlowTcpCtlSyn { message Choice { enum Enum { @@ -12898,35 +15727,35 @@ message PatternFlowIpv6Dst { optional Choice.Enum choice = 1; // Description missing in models - // default = ::0 - optional string value = 2; + // default = 0 + optional uint32 value = 2; // Description missing in models - // default = ['::0'] - repeated string values = 3; + // default = [0] + repeated uint32 values = 3; // Description missing in models - PatternFlowIpv6DstCounter increment = 5; + PatternFlowTcpCtlSynCounter increment = 5; // Description missing in models - PatternFlowIpv6DstCounter decrement = 6; + PatternFlowTcpCtlSynCounter decrement = 6; // One or more metric tags can be used to enable tracking portion of or all bits in // a corresponding header field for metrics per each applicable value. These would appear // as tagged metrics in corresponding flow metrics. - repeated PatternFlowIpv6DstMetricTag metric_tags = 7; + repeated PatternFlowTcpCtlSynMetricTag metric_tags = 7; } -// mac counter pattern -message PatternFlowPfcPauseDstCounter { +// integer counter pattern +message PatternFlowTcpCtlFinCounter { // Description missing in models - // default = 01:80:c2:00:00:01 - optional string start = 1; + // default = 0 + optional uint32 start = 1; // Description missing in models - // default = 00:00:00:00:00:01 - optional string step = 2; + // default = 1 + optional uint32 step = 2; // Description missing in models // default = 1 @@ -12936,7 +15765,7 @@ message PatternFlowPfcPauseDstCounter { // Metric tag can be used to enable tracking portion of or all bits in a corresponding // header field for metrics per each applicable value. These would appear as tagged // metrics in corresponding flow metrics. -message PatternFlowPfcPauseDstMetricTag { +message PatternFlowTcpCtlFinMetricTag { // Name used to identify the metrics associated with the values applicable for configured // offset and length inside corresponding header field @@ -12949,12 +15778,12 @@ message PatternFlowPfcPauseDstMetricTag { // Number of bits to track for metrics starting from configured offset of corresponding // header field - // default = 48 + // default = 1 optional uint32 length = 3; } -// Destination MAC address -message PatternFlowPfcPauseDst { +// Last packet from the sender. +message PatternFlowTcpCtlFin { message Choice { enum Enum { @@ -12970,35 +15799,35 @@ message PatternFlowPfcPauseDst { optional Choice.Enum choice = 1; // Description missing in models - // default = 01:80:c2:00:00:01 - optional string value = 2; + // default = 0 + optional uint32 value = 2; // Description missing in models - // default = ['01:80:c2:00:00:01'] - repeated string values = 3; + // default = [0] + repeated uint32 values = 3; // Description missing in models - PatternFlowPfcPauseDstCounter increment = 5; + PatternFlowTcpCtlFinCounter increment = 5; // Description missing in models - PatternFlowPfcPauseDstCounter decrement = 6; + PatternFlowTcpCtlFinCounter decrement = 6; // One or more metric tags can be used to enable tracking portion of or all bits in // a corresponding header field for metrics per each applicable value. These would appear // as tagged metrics in corresponding flow metrics. - repeated PatternFlowPfcPauseDstMetricTag metric_tags = 7; + repeated PatternFlowTcpCtlFinMetricTag metric_tags = 7; } -// mac counter pattern -message PatternFlowPfcPauseSrcCounter { +// integer counter pattern +message PatternFlowTcpWindowCounter { // Description missing in models - // default = 00:00:00:00:00:00 - optional string start = 1; + // default = 0 + optional uint32 start = 1; // Description missing in models - // default = 00:00:00:00:00:01 - optional string step = 2; + // default = 1 + optional uint32 step = 2; // Description missing in models // default = 1 @@ -13008,7 +15837,7 @@ message PatternFlowPfcPauseSrcCounter { // Metric tag can be used to enable tracking portion of or all bits in a corresponding // header field for metrics per each applicable value. These would appear as tagged // metrics in corresponding flow metrics. -message PatternFlowPfcPauseSrcMetricTag { +message PatternFlowTcpWindowMetricTag { // Name used to identify the metrics associated with the values applicable for configured // offset and length inside corresponding header field @@ -13021,12 +15850,12 @@ message PatternFlowPfcPauseSrcMetricTag { // Number of bits to track for metrics starting from configured offset of corresponding // header field - // default = 48 + // default = 16 optional uint32 length = 3; } -// Source MAC address -message PatternFlowPfcPauseSrc { +// Tcp connection window. +message PatternFlowTcpWindow { message Choice { enum Enum { @@ -13042,30 +15871,30 @@ message PatternFlowPfcPauseSrc { optional Choice.Enum choice = 1; // Description missing in models - // default = 00:00:00:00:00:00 - optional string value = 2; + // default = 0 + optional uint32 value = 2; // Description missing in models - // default = ['00:00:00:00:00:00'] - repeated string values = 3; + // default = [0] + repeated uint32 values = 3; // Description missing in models - PatternFlowPfcPauseSrcCounter increment = 5; + PatternFlowTcpWindowCounter increment = 5; // Description missing in models - PatternFlowPfcPauseSrcCounter decrement = 6; + PatternFlowTcpWindowCounter decrement = 6; // One or more metric tags can be used to enable tracking portion of or all bits in // a corresponding header field for metrics per each applicable value. These would appear // as tagged metrics in corresponding flow metrics. - repeated PatternFlowPfcPauseSrcMetricTag metric_tags = 7; + repeated PatternFlowTcpWindowMetricTag metric_tags = 7; } // integer counter pattern -message PatternFlowPfcPauseEtherTypeCounter { +message PatternFlowUdpSrcPortCounter { // Description missing in models - // default = 34824 + // default = 0 optional uint32 start = 1; // Description missing in models @@ -13080,7 +15909,7 @@ message PatternFlowPfcPauseEtherTypeCounter { // Metric tag can be used to enable tracking portion of or all bits in a corresponding // header field for metrics per each applicable value. These would appear as tagged // metrics in corresponding flow metrics. -message PatternFlowPfcPauseEtherTypeMetricTag { +message PatternFlowUdpSrcPortMetricTag { // Name used to identify the metrics associated with the values applicable for configured // offset and length inside corresponding header field @@ -13097,8 +15926,8 @@ message PatternFlowPfcPauseEtherTypeMetricTag { optional uint32 length = 3; } -// Ethernet type -message PatternFlowPfcPauseEtherType { +// Source port +message PatternFlowUdpSrcPort { message Choice { enum Enum { @@ -13114,30 +15943,30 @@ message PatternFlowPfcPauseEtherType { optional Choice.Enum choice = 1; // Description missing in models - // default = 34824 + // default = 0 optional uint32 value = 2; // Description missing in models - // default = [34824] + // default = [0] repeated uint32 values = 3; // Description missing in models - PatternFlowPfcPauseEtherTypeCounter increment = 5; + PatternFlowUdpSrcPortCounter increment = 5; // Description missing in models - PatternFlowPfcPauseEtherTypeCounter decrement = 6; + PatternFlowUdpSrcPortCounter decrement = 6; // One or more metric tags can be used to enable tracking portion of or all bits in // a corresponding header field for metrics per each applicable value. These would appear // as tagged metrics in corresponding flow metrics. - repeated PatternFlowPfcPauseEtherTypeMetricTag metric_tags = 7; + repeated PatternFlowUdpSrcPortMetricTag metric_tags = 7; } // integer counter pattern -message PatternFlowPfcPauseControlOpCodeCounter { +message PatternFlowUdpDstPortCounter { // Description missing in models - // default = 257 + // default = 0 optional uint32 start = 1; // Description missing in models @@ -13152,7 +15981,7 @@ message PatternFlowPfcPauseControlOpCodeCounter { // Metric tag can be used to enable tracking portion of or all bits in a corresponding // header field for metrics per each applicable value. These would appear as tagged // metrics in corresponding flow metrics. -message PatternFlowPfcPauseControlOpCodeMetricTag { +message PatternFlowUdpDstPortMetricTag { // Name used to identify the metrics associated with the values applicable for configured // offset and length inside corresponding header field @@ -13169,8 +15998,8 @@ message PatternFlowPfcPauseControlOpCodeMetricTag { optional uint32 length = 3; } -// Control operation code -message PatternFlowPfcPauseControlOpCode { +// Destination port +message PatternFlowUdpDstPort { message Choice { enum Enum { @@ -13186,27 +16015,27 @@ message PatternFlowPfcPauseControlOpCode { optional Choice.Enum choice = 1; // Description missing in models - // default = 257 + // default = 0 optional uint32 value = 2; // Description missing in models - // default = [257] + // default = [0] repeated uint32 values = 3; // Description missing in models - PatternFlowPfcPauseControlOpCodeCounter increment = 5; + PatternFlowUdpDstPortCounter increment = 5; // Description missing in models - PatternFlowPfcPauseControlOpCodeCounter decrement = 6; + PatternFlowUdpDstPortCounter decrement = 6; // One or more metric tags can be used to enable tracking portion of or all bits in // a corresponding header field for metrics per each applicable value. These would appear // as tagged metrics in corresponding flow metrics. - repeated PatternFlowPfcPauseControlOpCodeMetricTag metric_tags = 7; + repeated PatternFlowUdpDstPortMetricTag metric_tags = 7; } // integer counter pattern -message PatternFlowPfcPauseClassEnableVectorCounter { +message PatternFlowUdpLengthCounter { // Description missing in models // default = 0 @@ -13224,7 +16053,7 @@ message PatternFlowPfcPauseClassEnableVectorCounter { // Metric tag can be used to enable tracking portion of or all bits in a corresponding // header field for metrics per each applicable value. These would appear as tagged // metrics in corresponding flow metrics. -message PatternFlowPfcPauseClassEnableVectorMetricTag { +message PatternFlowUdpLengthMetricTag { // Name used to identify the metrics associated with the values applicable for configured // offset and length inside corresponding header field @@ -13241,8 +16070,8 @@ message PatternFlowPfcPauseClassEnableVectorMetricTag { optional uint32 length = 3; } -// Destination -message PatternFlowPfcPauseClassEnableVector { +// Length +message PatternFlowUdpLength { message Choice { enum Enum { @@ -13266,19 +16095,48 @@ message PatternFlowPfcPauseClassEnableVector { repeated uint32 values = 3; // Description missing in models - PatternFlowPfcPauseClassEnableVectorCounter increment = 5; + PatternFlowUdpLengthCounter increment = 5; // Description missing in models - PatternFlowPfcPauseClassEnableVectorCounter decrement = 6; + PatternFlowUdpLengthCounter decrement = 6; // One or more metric tags can be used to enable tracking portion of or all bits in // a corresponding header field for metrics per each applicable value. These would appear // as tagged metrics in corresponding flow metrics. - repeated PatternFlowPfcPauseClassEnableVectorMetricTag metric_tags = 7; + repeated PatternFlowUdpLengthMetricTag metric_tags = 7; +} + +// UDP checksum +message PatternFlowUdpChecksum { + + message Choice { + enum Enum { + unspecified = 0; + generated = 1; + custom = 2; + } + } + // The type of checksum + // default = Choice.Enum.generated + optional Choice.Enum choice = 1; + + message Generated { + enum Enum { + unspecified = 0; + good = 1; + bad = 2; + } + } + // A system generated checksum value + // default = Generated.Enum.good + optional Generated.Enum generated = 2; + + // A custom checksum value + optional uint32 custom = 3; } // integer counter pattern -message PatternFlowPfcPausePauseClass0Counter { +message PatternFlowGreChecksumPresentCounter { // Description missing in models // default = 0 @@ -13296,7 +16154,7 @@ message PatternFlowPfcPausePauseClass0Counter { // Metric tag can be used to enable tracking portion of or all bits in a corresponding // header field for metrics per each applicable value. These would appear as tagged // metrics in corresponding flow metrics. -message PatternFlowPfcPausePauseClass0MetricTag { +message PatternFlowGreChecksumPresentMetricTag { // Name used to identify the metrics associated with the values applicable for configured // offset and length inside corresponding header field @@ -13309,12 +16167,12 @@ message PatternFlowPfcPausePauseClass0MetricTag { // Number of bits to track for metrics starting from configured offset of corresponding // header field - // default = 16 + // default = 1 optional uint32 length = 3; } -// Pause class 0 -message PatternFlowPfcPausePauseClass0 { +// Checksum present bit +message PatternFlowGreChecksumPresent { message Choice { enum Enum { @@ -13338,19 +16196,19 @@ message PatternFlowPfcPausePauseClass0 { repeated uint32 values = 3; // Description missing in models - PatternFlowPfcPausePauseClass0Counter increment = 5; + PatternFlowGreChecksumPresentCounter increment = 5; // Description missing in models - PatternFlowPfcPausePauseClass0Counter decrement = 6; + PatternFlowGreChecksumPresentCounter decrement = 6; // One or more metric tags can be used to enable tracking portion of or all bits in // a corresponding header field for metrics per each applicable value. These would appear // as tagged metrics in corresponding flow metrics. - repeated PatternFlowPfcPausePauseClass0MetricTag metric_tags = 7; + repeated PatternFlowGreChecksumPresentMetricTag metric_tags = 7; } // integer counter pattern -message PatternFlowPfcPausePauseClass1Counter { +message PatternFlowGreReserved0Counter { // Description missing in models // default = 0 @@ -13368,7 +16226,7 @@ message PatternFlowPfcPausePauseClass1Counter { // Metric tag can be used to enable tracking portion of or all bits in a corresponding // header field for metrics per each applicable value. These would appear as tagged // metrics in corresponding flow metrics. -message PatternFlowPfcPausePauseClass1MetricTag { +message PatternFlowGreReserved0MetricTag { // Name used to identify the metrics associated with the values applicable for configured // offset and length inside corresponding header field @@ -13381,12 +16239,12 @@ message PatternFlowPfcPausePauseClass1MetricTag { // Number of bits to track for metrics starting from configured offset of corresponding // header field - // default = 16 + // default = 12 optional uint32 length = 3; } -// Pause class 1 -message PatternFlowPfcPausePauseClass1 { +// Reserved bits +message PatternFlowGreReserved0 { message Choice { enum Enum { @@ -13410,19 +16268,19 @@ message PatternFlowPfcPausePauseClass1 { repeated uint32 values = 3; // Description missing in models - PatternFlowPfcPausePauseClass1Counter increment = 5; + PatternFlowGreReserved0Counter increment = 5; // Description missing in models - PatternFlowPfcPausePauseClass1Counter decrement = 6; + PatternFlowGreReserved0Counter decrement = 6; // One or more metric tags can be used to enable tracking portion of or all bits in // a corresponding header field for metrics per each applicable value. These would appear // as tagged metrics in corresponding flow metrics. - repeated PatternFlowPfcPausePauseClass1MetricTag metric_tags = 7; + repeated PatternFlowGreReserved0MetricTag metric_tags = 7; } // integer counter pattern -message PatternFlowPfcPausePauseClass2Counter { +message PatternFlowGreVersionCounter { // Description missing in models // default = 0 @@ -13440,7 +16298,7 @@ message PatternFlowPfcPausePauseClass2Counter { // Metric tag can be used to enable tracking portion of or all bits in a corresponding // header field for metrics per each applicable value. These would appear as tagged // metrics in corresponding flow metrics. -message PatternFlowPfcPausePauseClass2MetricTag { +message PatternFlowGreVersionMetricTag { // Name used to identify the metrics associated with the values applicable for configured // offset and length inside corresponding header field @@ -13453,12 +16311,12 @@ message PatternFlowPfcPausePauseClass2MetricTag { // Number of bits to track for metrics starting from configured offset of corresponding // header field - // default = 16 + // default = 3 optional uint32 length = 3; } -// Pause class 2 -message PatternFlowPfcPausePauseClass2 { +// GRE version number +message PatternFlowGreVersion { message Choice { enum Enum { @@ -13482,22 +16340,22 @@ message PatternFlowPfcPausePauseClass2 { repeated uint32 values = 3; // Description missing in models - PatternFlowPfcPausePauseClass2Counter increment = 5; + PatternFlowGreVersionCounter increment = 5; // Description missing in models - PatternFlowPfcPausePauseClass2Counter decrement = 6; + PatternFlowGreVersionCounter decrement = 6; // One or more metric tags can be used to enable tracking portion of or all bits in // a corresponding header field for metrics per each applicable value. These would appear // as tagged metrics in corresponding flow metrics. - repeated PatternFlowPfcPausePauseClass2MetricTag metric_tags = 7; + repeated PatternFlowGreVersionMetricTag metric_tags = 7; } // integer counter pattern -message PatternFlowPfcPausePauseClass3Counter { +message PatternFlowGreProtocolCounter { // Description missing in models - // default = 0 + // default = 2048 optional uint32 start = 1; // Description missing in models @@ -13512,7 +16370,7 @@ message PatternFlowPfcPausePauseClass3Counter { // Metric tag can be used to enable tracking portion of or all bits in a corresponding // header field for metrics per each applicable value. These would appear as tagged // metrics in corresponding flow metrics. -message PatternFlowPfcPausePauseClass3MetricTag { +message PatternFlowGreProtocolMetricTag { // Name used to identify the metrics associated with the values applicable for configured // offset and length inside corresponding header field @@ -13529,8 +16387,8 @@ message PatternFlowPfcPausePauseClass3MetricTag { optional uint32 length = 3; } -// Pause class 3 -message PatternFlowPfcPausePauseClass3 { +// Protocol type of encapsulated payload +message PatternFlowGreProtocol { message Choice { enum Enum { @@ -13546,27 +16404,57 @@ message PatternFlowPfcPausePauseClass3 { optional Choice.Enum choice = 1; // Description missing in models - // default = 0 + // default = 2048 optional uint32 value = 2; // Description missing in models - // default = [0] + // default = [2048] repeated uint32 values = 3; // Description missing in models - PatternFlowPfcPausePauseClass3Counter increment = 5; + PatternFlowGreProtocolCounter increment = 5; // Description missing in models - PatternFlowPfcPausePauseClass3Counter decrement = 6; + PatternFlowGreProtocolCounter decrement = 6; // One or more metric tags can be used to enable tracking portion of or all bits in // a corresponding header field for metrics per each applicable value. These would appear // as tagged metrics in corresponding flow metrics. - repeated PatternFlowPfcPausePauseClass3MetricTag metric_tags = 7; + repeated PatternFlowGreProtocolMetricTag metric_tags = 7; +} + +// Optional checksum of GRE header and payload. Only present if the checksum_present +// bit is set. +message PatternFlowGreChecksum { + + message Choice { + enum Enum { + unspecified = 0; + generated = 1; + custom = 2; + } + } + // The type of checksum + // default = Choice.Enum.generated + optional Choice.Enum choice = 1; + + message Generated { + enum Enum { + unspecified = 0; + good = 1; + bad = 2; + } + } + // A system generated checksum value + // default = Generated.Enum.good + optional Generated.Enum generated = 2; + + // A custom checksum value + optional uint32 custom = 3; } // integer counter pattern -message PatternFlowPfcPausePauseClass4Counter { +message PatternFlowGreReserved1Counter { // Description missing in models // default = 0 @@ -13584,7 +16472,7 @@ message PatternFlowPfcPausePauseClass4Counter { // Metric tag can be used to enable tracking portion of or all bits in a corresponding // header field for metrics per each applicable value. These would appear as tagged // metrics in corresponding flow metrics. -message PatternFlowPfcPausePauseClass4MetricTag { +message PatternFlowGreReserved1MetricTag { // Name used to identify the metrics associated with the values applicable for configured // offset and length inside corresponding header field @@ -13601,8 +16489,8 @@ message PatternFlowPfcPausePauseClass4MetricTag { optional uint32 length = 3; } -// Pause class 4 -message PatternFlowPfcPausePauseClass4 { +// Optional reserved field. Only present if the checksum_present bit is set. +message PatternFlowGreReserved1 { message Choice { enum Enum { @@ -13626,22 +16514,22 @@ message PatternFlowPfcPausePauseClass4 { repeated uint32 values = 3; // Description missing in models - PatternFlowPfcPausePauseClass4Counter increment = 5; + PatternFlowGreReserved1Counter increment = 5; // Description missing in models - PatternFlowPfcPausePauseClass4Counter decrement = 6; + PatternFlowGreReserved1Counter decrement = 6; // One or more metric tags can be used to enable tracking portion of or all bits in // a corresponding header field for metrics per each applicable value. These would appear // as tagged metrics in corresponding flow metrics. - repeated PatternFlowPfcPausePauseClass4MetricTag metric_tags = 7; + repeated PatternFlowGreReserved1MetricTag metric_tags = 7; } // integer counter pattern -message PatternFlowPfcPausePauseClass5Counter { +message PatternFlowGtpv1VersionCounter { // Description missing in models - // default = 0 + // default = 1 optional uint32 start = 1; // Description missing in models @@ -13656,7 +16544,7 @@ message PatternFlowPfcPausePauseClass5Counter { // Metric tag can be used to enable tracking portion of or all bits in a corresponding // header field for metrics per each applicable value. These would appear as tagged // metrics in corresponding flow metrics. -message PatternFlowPfcPausePauseClass5MetricTag { +message PatternFlowGtpv1VersionMetricTag { // Name used to identify the metrics associated with the values applicable for configured // offset and length inside corresponding header field @@ -13669,12 +16557,12 @@ message PatternFlowPfcPausePauseClass5MetricTag { // Number of bits to track for metrics starting from configured offset of corresponding // header field - // default = 16 + // default = 3 optional uint32 length = 3; } -// Pause class 5 -message PatternFlowPfcPausePauseClass5 { +// GTPv1 version +message PatternFlowGtpv1Version { message Choice { enum Enum { @@ -13690,30 +16578,30 @@ message PatternFlowPfcPausePauseClass5 { optional Choice.Enum choice = 1; // Description missing in models - // default = 0 + // default = 1 optional uint32 value = 2; // Description missing in models - // default = [0] + // default = [1] repeated uint32 values = 3; // Description missing in models - PatternFlowPfcPausePauseClass5Counter increment = 5; + PatternFlowGtpv1VersionCounter increment = 5; // Description missing in models - PatternFlowPfcPausePauseClass5Counter decrement = 6; + PatternFlowGtpv1VersionCounter decrement = 6; // One or more metric tags can be used to enable tracking portion of or all bits in // a corresponding header field for metrics per each applicable value. These would appear // as tagged metrics in corresponding flow metrics. - repeated PatternFlowPfcPausePauseClass5MetricTag metric_tags = 7; + repeated PatternFlowGtpv1VersionMetricTag metric_tags = 7; } // integer counter pattern -message PatternFlowPfcPausePauseClass6Counter { +message PatternFlowGtpv1ProtocolTypeCounter { // Description missing in models - // default = 0 + // default = 1 optional uint32 start = 1; // Description missing in models @@ -13728,7 +16616,7 @@ message PatternFlowPfcPausePauseClass6Counter { // Metric tag can be used to enable tracking portion of or all bits in a corresponding // header field for metrics per each applicable value. These would appear as tagged // metrics in corresponding flow metrics. -message PatternFlowPfcPausePauseClass6MetricTag { +message PatternFlowGtpv1ProtocolTypeMetricTag { // Name used to identify the metrics associated with the values applicable for configured // offset and length inside corresponding header field @@ -13741,12 +16629,12 @@ message PatternFlowPfcPausePauseClass6MetricTag { // Number of bits to track for metrics starting from configured offset of corresponding // header field - // default = 16 + // default = 1 optional uint32 length = 3; } -// Pause class 6 -message PatternFlowPfcPausePauseClass6 { +// Protocol type, GTP is 1, GTP' is 0 +message PatternFlowGtpv1ProtocolType { message Choice { enum Enum { @@ -13762,27 +16650,27 @@ message PatternFlowPfcPausePauseClass6 { optional Choice.Enum choice = 1; // Description missing in models - // default = 0 + // default = 1 optional uint32 value = 2; // Description missing in models - // default = [0] + // default = [1] repeated uint32 values = 3; // Description missing in models - PatternFlowPfcPausePauseClass6Counter increment = 5; + PatternFlowGtpv1ProtocolTypeCounter increment = 5; // Description missing in models - PatternFlowPfcPausePauseClass6Counter decrement = 6; + PatternFlowGtpv1ProtocolTypeCounter decrement = 6; // One or more metric tags can be used to enable tracking portion of or all bits in // a corresponding header field for metrics per each applicable value. These would appear // as tagged metrics in corresponding flow metrics. - repeated PatternFlowPfcPausePauseClass6MetricTag metric_tags = 7; + repeated PatternFlowGtpv1ProtocolTypeMetricTag metric_tags = 7; } // integer counter pattern -message PatternFlowPfcPausePauseClass7Counter { +message PatternFlowGtpv1ReservedCounter { // Description missing in models // default = 0 @@ -13800,7 +16688,7 @@ message PatternFlowPfcPausePauseClass7Counter { // Metric tag can be used to enable tracking portion of or all bits in a corresponding // header field for metrics per each applicable value. These would appear as tagged // metrics in corresponding flow metrics. -message PatternFlowPfcPausePauseClass7MetricTag { +message PatternFlowGtpv1ReservedMetricTag { // Name used to identify the metrics associated with the values applicable for configured // offset and length inside corresponding header field @@ -13813,12 +16701,12 @@ message PatternFlowPfcPausePauseClass7MetricTag { // Number of bits to track for metrics starting from configured offset of corresponding // header field - // default = 16 + // default = 1 optional uint32 length = 3; } -// Pause class 7 -message PatternFlowPfcPausePauseClass7 { +// Reserved field +message PatternFlowGtpv1Reserved { message Choice { enum Enum { @@ -13842,27 +16730,27 @@ message PatternFlowPfcPausePauseClass7 { repeated uint32 values = 3; // Description missing in models - PatternFlowPfcPausePauseClass7Counter increment = 5; + PatternFlowGtpv1ReservedCounter increment = 5; // Description missing in models - PatternFlowPfcPausePauseClass7Counter decrement = 6; + PatternFlowGtpv1ReservedCounter decrement = 6; // One or more metric tags can be used to enable tracking portion of or all bits in // a corresponding header field for metrics per each applicable value. These would appear // as tagged metrics in corresponding flow metrics. - repeated PatternFlowPfcPausePauseClass7MetricTag metric_tags = 7; + repeated PatternFlowGtpv1ReservedMetricTag metric_tags = 7; } -// mac counter pattern -message PatternFlowEthernetPauseDstCounter { +// integer counter pattern +message PatternFlowGtpv1EFlagCounter { // Description missing in models - // default = 01:80:c2:00:00:01 - optional string start = 1; + // default = 0 + optional uint32 start = 1; // Description missing in models - // default = 00:00:00:00:00:01 - optional string step = 2; + // default = 1 + optional uint32 step = 2; // Description missing in models // default = 1 @@ -13872,7 +16760,7 @@ message PatternFlowEthernetPauseDstCounter { // Metric tag can be used to enable tracking portion of or all bits in a corresponding // header field for metrics per each applicable value. These would appear as tagged // metrics in corresponding flow metrics. -message PatternFlowEthernetPauseDstMetricTag { +message PatternFlowGtpv1EFlagMetricTag { // Name used to identify the metrics associated with the values applicable for configured // offset and length inside corresponding header field @@ -13885,12 +16773,12 @@ message PatternFlowEthernetPauseDstMetricTag { // Number of bits to track for metrics starting from configured offset of corresponding // header field - // default = 48 + // default = 1 optional uint32 length = 3; } -// Destination MAC address -message PatternFlowEthernetPauseDst { +// Extension header field present +message PatternFlowGtpv1EFlag { message Choice { enum Enum { @@ -13906,35 +16794,35 @@ message PatternFlowEthernetPauseDst { optional Choice.Enum choice = 1; // Description missing in models - // default = 01:80:c2:00:00:01 - optional string value = 2; + // default = 0 + optional uint32 value = 2; // Description missing in models - // default = ['01:80:c2:00:00:01'] - repeated string values = 3; + // default = [0] + repeated uint32 values = 3; // Description missing in models - PatternFlowEthernetPauseDstCounter increment = 5; + PatternFlowGtpv1EFlagCounter increment = 5; // Description missing in models - PatternFlowEthernetPauseDstCounter decrement = 6; + PatternFlowGtpv1EFlagCounter decrement = 6; // One or more metric tags can be used to enable tracking portion of or all bits in // a corresponding header field for metrics per each applicable value. These would appear // as tagged metrics in corresponding flow metrics. - repeated PatternFlowEthernetPauseDstMetricTag metric_tags = 7; + repeated PatternFlowGtpv1EFlagMetricTag metric_tags = 7; } -// mac counter pattern -message PatternFlowEthernetPauseSrcCounter { +// integer counter pattern +message PatternFlowGtpv1SFlagCounter { // Description missing in models - // default = 00:00:00:00:00:00 - optional string start = 1; + // default = 0 + optional uint32 start = 1; // Description missing in models - // default = 00:00:00:00:00:01 - optional string step = 2; + // default = 1 + optional uint32 step = 2; // Description missing in models // default = 1 @@ -13944,7 +16832,7 @@ message PatternFlowEthernetPauseSrcCounter { // Metric tag can be used to enable tracking portion of or all bits in a corresponding // header field for metrics per each applicable value. These would appear as tagged // metrics in corresponding flow metrics. -message PatternFlowEthernetPauseSrcMetricTag { +message PatternFlowGtpv1SFlagMetricTag { // Name used to identify the metrics associated with the values applicable for configured // offset and length inside corresponding header field @@ -13957,12 +16845,12 @@ message PatternFlowEthernetPauseSrcMetricTag { // Number of bits to track for metrics starting from configured offset of corresponding // header field - // default = 48 + // default = 1 optional uint32 length = 3; } -// Source MAC address -message PatternFlowEthernetPauseSrc { +// Sequence number field present +message PatternFlowGtpv1SFlag { message Choice { enum Enum { @@ -13978,30 +16866,30 @@ message PatternFlowEthernetPauseSrc { optional Choice.Enum choice = 1; // Description missing in models - // default = 00:00:00:00:00:00 - optional string value = 2; + // default = 0 + optional uint32 value = 2; // Description missing in models - // default = ['00:00:00:00:00:00'] - repeated string values = 3; + // default = [0] + repeated uint32 values = 3; // Description missing in models - PatternFlowEthernetPauseSrcCounter increment = 5; + PatternFlowGtpv1SFlagCounter increment = 5; // Description missing in models - PatternFlowEthernetPauseSrcCounter decrement = 6; + PatternFlowGtpv1SFlagCounter decrement = 6; // One or more metric tags can be used to enable tracking portion of or all bits in // a corresponding header field for metrics per each applicable value. These would appear // as tagged metrics in corresponding flow metrics. - repeated PatternFlowEthernetPauseSrcMetricTag metric_tags = 7; + repeated PatternFlowGtpv1SFlagMetricTag metric_tags = 7; } // integer counter pattern -message PatternFlowEthernetPauseEtherTypeCounter { +message PatternFlowGtpv1PnFlagCounter { // Description missing in models - // default = 34824 + // default = 0 optional uint32 start = 1; // Description missing in models @@ -14016,7 +16904,7 @@ message PatternFlowEthernetPauseEtherTypeCounter { // Metric tag can be used to enable tracking portion of or all bits in a corresponding // header field for metrics per each applicable value. These would appear as tagged // metrics in corresponding flow metrics. -message PatternFlowEthernetPauseEtherTypeMetricTag { +message PatternFlowGtpv1PnFlagMetricTag { // Name used to identify the metrics associated with the values applicable for configured // offset and length inside corresponding header field @@ -14029,12 +16917,12 @@ message PatternFlowEthernetPauseEtherTypeMetricTag { // Number of bits to track for metrics starting from configured offset of corresponding // header field - // default = 16 + // default = 1 optional uint32 length = 3; } -// Ethernet type -message PatternFlowEthernetPauseEtherType { +// N-PDU field present +message PatternFlowGtpv1PnFlag { message Choice { enum Enum { @@ -14050,30 +16938,30 @@ message PatternFlowEthernetPauseEtherType { optional Choice.Enum choice = 1; // Description missing in models - // default = 34824 + // default = 0 optional uint32 value = 2; // Description missing in models - // default = [34824] + // default = [0] repeated uint32 values = 3; // Description missing in models - PatternFlowEthernetPauseEtherTypeCounter increment = 5; + PatternFlowGtpv1PnFlagCounter increment = 5; // Description missing in models - PatternFlowEthernetPauseEtherTypeCounter decrement = 6; + PatternFlowGtpv1PnFlagCounter decrement = 6; // One or more metric tags can be used to enable tracking portion of or all bits in // a corresponding header field for metrics per each applicable value. These would appear // as tagged metrics in corresponding flow metrics. - repeated PatternFlowEthernetPauseEtherTypeMetricTag metric_tags = 7; + repeated PatternFlowGtpv1PnFlagMetricTag metric_tags = 7; } // integer counter pattern -message PatternFlowEthernetPauseControlOpCodeCounter { +message PatternFlowGtpv1MessageTypeCounter { // Description missing in models - // default = 1 + // default = 0 optional uint32 start = 1; // Description missing in models @@ -14088,7 +16976,7 @@ message PatternFlowEthernetPauseControlOpCodeCounter { // Metric tag can be used to enable tracking portion of or all bits in a corresponding // header field for metrics per each applicable value. These would appear as tagged // metrics in corresponding flow metrics. -message PatternFlowEthernetPauseControlOpCodeMetricTag { +message PatternFlowGtpv1MessageTypeMetricTag { // Name used to identify the metrics associated with the values applicable for configured // offset and length inside corresponding header field @@ -14101,12 +16989,13 @@ message PatternFlowEthernetPauseControlOpCodeMetricTag { // Number of bits to track for metrics starting from configured offset of corresponding // header field - // default = 16 + // default = 8 optional uint32 length = 3; } -// Control operation code -message PatternFlowEthernetPauseControlOpCode { +// The type of GTP message Different types of messages are defined in 3GPP TS 29.060 +// section 7.1 +message PatternFlowGtpv1MessageType { message Choice { enum Enum { @@ -14122,27 +17011,27 @@ message PatternFlowEthernetPauseControlOpCode { optional Choice.Enum choice = 1; // Description missing in models - // default = 1 + // default = 0 optional uint32 value = 2; // Description missing in models - // default = [1] + // default = [0] repeated uint32 values = 3; // Description missing in models - PatternFlowEthernetPauseControlOpCodeCounter increment = 5; + PatternFlowGtpv1MessageTypeCounter increment = 5; // Description missing in models - PatternFlowEthernetPauseControlOpCodeCounter decrement = 6; + PatternFlowGtpv1MessageTypeCounter decrement = 6; // One or more metric tags can be used to enable tracking portion of or all bits in // a corresponding header field for metrics per each applicable value. These would appear // as tagged metrics in corresponding flow metrics. - repeated PatternFlowEthernetPauseControlOpCodeMetricTag metric_tags = 7; + repeated PatternFlowGtpv1MessageTypeMetricTag metric_tags = 7; } // integer counter pattern -message PatternFlowEthernetPauseTimeCounter { +message PatternFlowGtpv1MessageLengthCounter { // Description missing in models // default = 0 @@ -14160,7 +17049,7 @@ message PatternFlowEthernetPauseTimeCounter { // Metric tag can be used to enable tracking portion of or all bits in a corresponding // header field for metrics per each applicable value. These would appear as tagged // metrics in corresponding flow metrics. -message PatternFlowEthernetPauseTimeMetricTag { +message PatternFlowGtpv1MessageLengthMetricTag { // Name used to identify the metrics associated with the values applicable for configured // offset and length inside corresponding header field @@ -14177,8 +17066,9 @@ message PatternFlowEthernetPauseTimeMetricTag { optional uint32 length = 3; } -// Time -message PatternFlowEthernetPauseTime { +// The length of the payload (the bytes following the mandatory 8-byte GTP header) in +// bytes that includes any optional fields +message PatternFlowGtpv1MessageLength { message Choice { enum Enum { @@ -14202,19 +17092,19 @@ message PatternFlowEthernetPauseTime { repeated uint32 values = 3; // Description missing in models - PatternFlowEthernetPauseTimeCounter increment = 5; + PatternFlowGtpv1MessageLengthCounter increment = 5; // Description missing in models - PatternFlowEthernetPauseTimeCounter decrement = 6; + PatternFlowGtpv1MessageLengthCounter decrement = 6; // One or more metric tags can be used to enable tracking portion of or all bits in // a corresponding header field for metrics per each applicable value. These would appear // as tagged metrics in corresponding flow metrics. - repeated PatternFlowEthernetPauseTimeMetricTag metric_tags = 7; + repeated PatternFlowGtpv1MessageLengthMetricTag metric_tags = 7; } // integer counter pattern -message PatternFlowTcpSrcPortCounter { +message PatternFlowGtpv1TeidCounter { // Description missing in models // default = 0 @@ -14232,7 +17122,7 @@ message PatternFlowTcpSrcPortCounter { // Metric tag can be used to enable tracking portion of or all bits in a corresponding // header field for metrics per each applicable value. These would appear as tagged // metrics in corresponding flow metrics. -message PatternFlowTcpSrcPortMetricTag { +message PatternFlowGtpv1TeidMetricTag { // Name used to identify the metrics associated with the values applicable for configured // offset and length inside corresponding header field @@ -14245,12 +17135,12 @@ message PatternFlowTcpSrcPortMetricTag { // Number of bits to track for metrics starting from configured offset of corresponding // header field - // default = 16 + // default = 32 optional uint32 length = 3; } -// Source port -message PatternFlowTcpSrcPort { +// Tunnel endpoint identifier (TEID) used to multiplex connections in the same GTP tunnel +message PatternFlowGtpv1Teid { message Choice { enum Enum { @@ -14274,19 +17164,19 @@ message PatternFlowTcpSrcPort { repeated uint32 values = 3; // Description missing in models - PatternFlowTcpSrcPortCounter increment = 5; + PatternFlowGtpv1TeidCounter increment = 5; // Description missing in models - PatternFlowTcpSrcPortCounter decrement = 6; + PatternFlowGtpv1TeidCounter decrement = 6; // One or more metric tags can be used to enable tracking portion of or all bits in // a corresponding header field for metrics per each applicable value. These would appear // as tagged metrics in corresponding flow metrics. - repeated PatternFlowTcpSrcPortMetricTag metric_tags = 7; + repeated PatternFlowGtpv1TeidMetricTag metric_tags = 7; } // integer counter pattern -message PatternFlowTcpDstPortCounter { +message PatternFlowGtpv1SquenceNumberCounter { // Description missing in models // default = 0 @@ -14304,7 +17194,7 @@ message PatternFlowTcpDstPortCounter { // Metric tag can be used to enable tracking portion of or all bits in a corresponding // header field for metrics per each applicable value. These would appear as tagged // metrics in corresponding flow metrics. -message PatternFlowTcpDstPortMetricTag { +message PatternFlowGtpv1SquenceNumberMetricTag { // Name used to identify the metrics associated with the values applicable for configured // offset and length inside corresponding header field @@ -14321,8 +17211,9 @@ message PatternFlowTcpDstPortMetricTag { optional uint32 length = 3; } -// Destination port -message PatternFlowTcpDstPort { +// Sequence number. Exists if any of the e_flag, s_flag, or pn_flag bits are on. Must +// be interpreted only if the s_flag bit is on. +message PatternFlowGtpv1SquenceNumber { message Choice { enum Enum { @@ -14346,19 +17237,19 @@ message PatternFlowTcpDstPort { repeated uint32 values = 3; // Description missing in models - PatternFlowTcpDstPortCounter increment = 5; + PatternFlowGtpv1SquenceNumberCounter increment = 5; // Description missing in models - PatternFlowTcpDstPortCounter decrement = 6; + PatternFlowGtpv1SquenceNumberCounter decrement = 6; // One or more metric tags can be used to enable tracking portion of or all bits in // a corresponding header field for metrics per each applicable value. These would appear // as tagged metrics in corresponding flow metrics. - repeated PatternFlowTcpDstPortMetricTag metric_tags = 7; + repeated PatternFlowGtpv1SquenceNumberMetricTag metric_tags = 7; } // integer counter pattern -message PatternFlowTcpSeqNumCounter { +message PatternFlowGtpv1NPduNumberCounter { // Description missing in models // default = 0 @@ -14376,7 +17267,7 @@ message PatternFlowTcpSeqNumCounter { // Metric tag can be used to enable tracking portion of or all bits in a corresponding // header field for metrics per each applicable value. These would appear as tagged // metrics in corresponding flow metrics. -message PatternFlowTcpSeqNumMetricTag { +message PatternFlowGtpv1NPduNumberMetricTag { // Name used to identify the metrics associated with the values applicable for configured // offset and length inside corresponding header field @@ -14389,12 +17280,13 @@ message PatternFlowTcpSeqNumMetricTag { // Number of bits to track for metrics starting from configured offset of corresponding // header field - // default = 32 + // default = 8 optional uint32 length = 3; } -// Sequence number -message PatternFlowTcpSeqNum { +// N-PDU number. Exists if any of the e_flag, s_flag, or pn_flag bits are on. Must +// be interpreted only if the pn_flag bit is on. +message PatternFlowGtpv1NPduNumber { message Choice { enum Enum { @@ -14418,19 +17310,19 @@ message PatternFlowTcpSeqNum { repeated uint32 values = 3; // Description missing in models - PatternFlowTcpSeqNumCounter increment = 5; + PatternFlowGtpv1NPduNumberCounter increment = 5; // Description missing in models - PatternFlowTcpSeqNumCounter decrement = 6; + PatternFlowGtpv1NPduNumberCounter decrement = 6; // One or more metric tags can be used to enable tracking portion of or all bits in // a corresponding header field for metrics per each applicable value. These would appear // as tagged metrics in corresponding flow metrics. - repeated PatternFlowTcpSeqNumMetricTag metric_tags = 7; + repeated PatternFlowGtpv1NPduNumberMetricTag metric_tags = 7; } // integer counter pattern -message PatternFlowTcpAckNumCounter { +message PatternFlowGtpv1NextExtensionHeaderTypeCounter { // Description missing in models // default = 0 @@ -14448,7 +17340,7 @@ message PatternFlowTcpAckNumCounter { // Metric tag can be used to enable tracking portion of or all bits in a corresponding // header field for metrics per each applicable value. These would appear as tagged // metrics in corresponding flow metrics. -message PatternFlowTcpAckNumMetricTag { +message PatternFlowGtpv1NextExtensionHeaderTypeMetricTag { // Name used to identify the metrics associated with the values applicable for configured // offset and length inside corresponding header field @@ -14461,12 +17353,13 @@ message PatternFlowTcpAckNumMetricTag { // Number of bits to track for metrics starting from configured offset of corresponding // header field - // default = 32 + // default = 8 optional uint32 length = 3; } -// Acknowledgement number -message PatternFlowTcpAckNum { +// Next extension header. Exists if any of the e_flag, s_flag, or pn_flag bits are on. +// Must be interpreted only if the e_flag bit is on. +message PatternFlowGtpv1NextExtensionHeaderType { message Choice { enum Enum { @@ -14490,19 +17383,19 @@ message PatternFlowTcpAckNum { repeated uint32 values = 3; // Description missing in models - PatternFlowTcpAckNumCounter increment = 5; + PatternFlowGtpv1NextExtensionHeaderTypeCounter increment = 5; // Description missing in models - PatternFlowTcpAckNumCounter decrement = 6; + PatternFlowGtpv1NextExtensionHeaderTypeCounter decrement = 6; // One or more metric tags can be used to enable tracking portion of or all bits in // a corresponding header field for metrics per each applicable value. These would appear // as tagged metrics in corresponding flow metrics. - repeated PatternFlowTcpAckNumMetricTag metric_tags = 7; + repeated PatternFlowGtpv1NextExtensionHeaderTypeMetricTag metric_tags = 7; } // integer counter pattern -message PatternFlowTcpDataOffsetCounter { +message PatternFlowGtpExtensionExtensionLengthCounter { // Description missing in models // default = 0 @@ -14520,7 +17413,7 @@ message PatternFlowTcpDataOffsetCounter { // Metric tag can be used to enable tracking portion of or all bits in a corresponding // header field for metrics per each applicable value. These would appear as tagged // metrics in corresponding flow metrics. -message PatternFlowTcpDataOffsetMetricTag { +message PatternFlowGtpExtensionExtensionLengthMetricTag { // Name used to identify the metrics associated with the values applicable for configured // offset and length inside corresponding header field @@ -14533,12 +17426,14 @@ message PatternFlowTcpDataOffsetMetricTag { // Number of bits to track for metrics starting from configured offset of corresponding // header field - // default = 4 + // default = 8 optional uint32 length = 3; } -// The number of 32 bit words in the TCP header. This indicates where the data begins. -message PatternFlowTcpDataOffset { +// This field states the length of this extension header, including the length, the +// contents, and the next extension header field, in 4-octet units, so the length of +// the extension must always be a multiple of 4. +message PatternFlowGtpExtensionExtensionLength { message Choice { enum Enum { @@ -14562,37 +17457,37 @@ message PatternFlowTcpDataOffset { repeated uint32 values = 3; // Description missing in models - PatternFlowTcpDataOffsetCounter increment = 5; + PatternFlowGtpExtensionExtensionLengthCounter increment = 5; // Description missing in models - PatternFlowTcpDataOffsetCounter decrement = 6; + PatternFlowGtpExtensionExtensionLengthCounter decrement = 6; // One or more metric tags can be used to enable tracking portion of or all bits in // a corresponding header field for metrics per each applicable value. These would appear // as tagged metrics in corresponding flow metrics. - repeated PatternFlowTcpDataOffsetMetricTag metric_tags = 7; + repeated PatternFlowGtpExtensionExtensionLengthMetricTag metric_tags = 7; } // integer counter pattern -message PatternFlowTcpEcnNsCounter { +message PatternFlowGtpExtensionContentsCounter { // Description missing in models // default = 0 - optional uint32 start = 1; + optional uint64 start = 1; // Description missing in models // default = 1 - optional uint32 step = 2; + optional uint64 step = 2; // Description missing in models // default = 1 - optional uint32 count = 3; + optional uint64 count = 3; } // Metric tag can be used to enable tracking portion of or all bits in a corresponding // header field for metrics per each applicable value. These would appear as tagged // metrics in corresponding flow metrics. -message PatternFlowTcpEcnNsMetricTag { +message PatternFlowGtpExtensionContentsMetricTag { // Name used to identify the metrics associated with the values applicable for configured // offset and length inside corresponding header field @@ -14601,17 +17496,17 @@ message PatternFlowTcpEcnNsMetricTag { // Offset in bits relative to start of corresponding header field // default = 0 - optional uint32 offset = 2; + optional uint64 offset = 2; // Number of bits to track for metrics starting from configured offset of corresponding // header field - // default = 1 - optional uint32 length = 3; + // default = 48 + optional uint64 length = 3; } -// Explicit congestion notification, concealment protection. -message PatternFlowTcpEcnNs { - +// The extension header contents +message PatternFlowGtpExtensionContents { + message Choice { enum Enum { unspecified = 0; @@ -14627,26 +17522,26 @@ message PatternFlowTcpEcnNs { // Description missing in models // default = 0 - optional uint32 value = 2; + optional uint64 value = 2; // Description missing in models // default = [0] - repeated uint32 values = 3; + repeated uint64 values = 3; // Description missing in models - PatternFlowTcpEcnNsCounter increment = 5; + PatternFlowGtpExtensionContentsCounter increment = 5; // Description missing in models - PatternFlowTcpEcnNsCounter decrement = 6; + PatternFlowGtpExtensionContentsCounter decrement = 6; // One or more metric tags can be used to enable tracking portion of or all bits in // a corresponding header field for metrics per each applicable value. These would appear // as tagged metrics in corresponding flow metrics. - repeated PatternFlowTcpEcnNsMetricTag metric_tags = 7; + repeated PatternFlowGtpExtensionContentsMetricTag metric_tags = 7; } // integer counter pattern -message PatternFlowTcpEcnCwrCounter { +message PatternFlowGtpExtensionNextExtensionHeaderCounter { // Description missing in models // default = 0 @@ -14664,7 +17559,7 @@ message PatternFlowTcpEcnCwrCounter { // Metric tag can be used to enable tracking portion of or all bits in a corresponding // header field for metrics per each applicable value. These would appear as tagged // metrics in corresponding flow metrics. -message PatternFlowTcpEcnCwrMetricTag { +message PatternFlowGtpExtensionNextExtensionHeaderMetricTag { // Name used to identify the metrics associated with the values applicable for configured // offset and length inside corresponding header field @@ -14677,12 +17572,13 @@ message PatternFlowTcpEcnCwrMetricTag { // Number of bits to track for metrics starting from configured offset of corresponding // header field - // default = 1 + // default = 8 optional uint32 length = 3; } -// Explicit congestion notification, congestion window reduced. -message PatternFlowTcpEcnCwr { +// It states the type of the next extension, or 0 if no next extension exists. This +// permits chaining several next extension headers. +message PatternFlowGtpExtensionNextExtensionHeader { message Choice { enum Enum { @@ -14706,22 +17602,22 @@ message PatternFlowTcpEcnCwr { repeated uint32 values = 3; // Description missing in models - PatternFlowTcpEcnCwrCounter increment = 5; + PatternFlowGtpExtensionNextExtensionHeaderCounter increment = 5; // Description missing in models - PatternFlowTcpEcnCwrCounter decrement = 6; + PatternFlowGtpExtensionNextExtensionHeaderCounter decrement = 6; // One or more metric tags can be used to enable tracking portion of or all bits in // a corresponding header field for metrics per each applicable value. These would appear // as tagged metrics in corresponding flow metrics. - repeated PatternFlowTcpEcnCwrMetricTag metric_tags = 7; + repeated PatternFlowGtpExtensionNextExtensionHeaderMetricTag metric_tags = 7; } // integer counter pattern -message PatternFlowTcpEcnEchoCounter { +message PatternFlowGtpv2VersionCounter { // Description missing in models - // default = 0 + // default = 2 optional uint32 start = 1; // Description missing in models @@ -14736,7 +17632,7 @@ message PatternFlowTcpEcnEchoCounter { // Metric tag can be used to enable tracking portion of or all bits in a corresponding // header field for metrics per each applicable value. These would appear as tagged // metrics in corresponding flow metrics. -message PatternFlowTcpEcnEchoMetricTag { +message PatternFlowGtpv2VersionMetricTag { // Name used to identify the metrics associated with the values applicable for configured // offset and length inside corresponding header field @@ -14749,13 +17645,12 @@ message PatternFlowTcpEcnEchoMetricTag { // Number of bits to track for metrics starting from configured offset of corresponding // header field - // default = 1 + // default = 3 optional uint32 length = 3; } -// Explicit congestion notification, echo. 1 indicates the peer is ecn capable. 0 indicates -// that a packet with ipv4.ecn = 11 in the ip header was received during normal transmission. -message PatternFlowTcpEcnEcho { +// Version number +message PatternFlowGtpv2Version { message Choice { enum Enum { @@ -14771,27 +17666,27 @@ message PatternFlowTcpEcnEcho { optional Choice.Enum choice = 1; // Description missing in models - // default = 0 + // default = 2 optional uint32 value = 2; // Description missing in models - // default = [0] + // default = [2] repeated uint32 values = 3; // Description missing in models - PatternFlowTcpEcnEchoCounter increment = 5; + PatternFlowGtpv2VersionCounter increment = 5; // Description missing in models - PatternFlowTcpEcnEchoCounter decrement = 6; + PatternFlowGtpv2VersionCounter decrement = 6; // One or more metric tags can be used to enable tracking portion of or all bits in // a corresponding header field for metrics per each applicable value. These would appear // as tagged metrics in corresponding flow metrics. - repeated PatternFlowTcpEcnEchoMetricTag metric_tags = 7; + repeated PatternFlowGtpv2VersionMetricTag metric_tags = 7; } // integer counter pattern -message PatternFlowTcpCtlUrgCounter { +message PatternFlowGtpv2PiggybackingFlagCounter { // Description missing in models // default = 0 @@ -14809,7 +17704,7 @@ message PatternFlowTcpCtlUrgCounter { // Metric tag can be used to enable tracking portion of or all bits in a corresponding // header field for metrics per each applicable value. These would appear as tagged // metrics in corresponding flow metrics. -message PatternFlowTcpCtlUrgMetricTag { +message PatternFlowGtpv2PiggybackingFlagMetricTag { // Name used to identify the metrics associated with the values applicable for configured // offset and length inside corresponding header field @@ -14826,8 +17721,9 @@ message PatternFlowTcpCtlUrgMetricTag { optional uint32 length = 3; } -// A value of 1 indicates that the urgent pointer field is significant. -message PatternFlowTcpCtlUrg { +// If piggybacking_flag is set to 1 then another GTP-C message with its own header shall +// be present at the end of the current message +message PatternFlowGtpv2PiggybackingFlag { message Choice { enum Enum { @@ -14851,19 +17747,19 @@ message PatternFlowTcpCtlUrg { repeated uint32 values = 3; // Description missing in models - PatternFlowTcpCtlUrgCounter increment = 5; + PatternFlowGtpv2PiggybackingFlagCounter increment = 5; // Description missing in models - PatternFlowTcpCtlUrgCounter decrement = 6; + PatternFlowGtpv2PiggybackingFlagCounter decrement = 6; // One or more metric tags can be used to enable tracking portion of or all bits in // a corresponding header field for metrics per each applicable value. These would appear // as tagged metrics in corresponding flow metrics. - repeated PatternFlowTcpCtlUrgMetricTag metric_tags = 7; + repeated PatternFlowGtpv2PiggybackingFlagMetricTag metric_tags = 7; } // integer counter pattern -message PatternFlowTcpCtlAckCounter { +message PatternFlowGtpv2TeidFlagCounter { // Description missing in models // default = 0 @@ -14881,7 +17777,7 @@ message PatternFlowTcpCtlAckCounter { // Metric tag can be used to enable tracking portion of or all bits in a corresponding // header field for metrics per each applicable value. These would appear as tagged // metrics in corresponding flow metrics. -message PatternFlowTcpCtlAckMetricTag { +message PatternFlowGtpv2TeidFlagMetricTag { // Name used to identify the metrics associated with the values applicable for configured // offset and length inside corresponding header field @@ -14898,8 +17794,10 @@ message PatternFlowTcpCtlAckMetricTag { optional uint32 length = 3; } -// A value of 1 indicates that the ackknowledgment field is significant. -message PatternFlowTcpCtlAck { +// If teid_flag is set to 1 then the TEID field will be present between the message +// length and the sequence number. All messages except Echo and Echo reply require TEID +// to be present +message PatternFlowGtpv2TeidFlag { message Choice { enum Enum { @@ -14923,19 +17821,19 @@ message PatternFlowTcpCtlAck { repeated uint32 values = 3; // Description missing in models - PatternFlowTcpCtlAckCounter increment = 5; + PatternFlowGtpv2TeidFlagCounter increment = 5; // Description missing in models - PatternFlowTcpCtlAckCounter decrement = 6; + PatternFlowGtpv2TeidFlagCounter decrement = 6; // One or more metric tags can be used to enable tracking portion of or all bits in // a corresponding header field for metrics per each applicable value. These would appear // as tagged metrics in corresponding flow metrics. - repeated PatternFlowTcpCtlAckMetricTag metric_tags = 7; + repeated PatternFlowGtpv2TeidFlagMetricTag metric_tags = 7; } // integer counter pattern -message PatternFlowTcpCtlPshCounter { +message PatternFlowGtpv2Spare1Counter { // Description missing in models // default = 0 @@ -14953,7 +17851,7 @@ message PatternFlowTcpCtlPshCounter { // Metric tag can be used to enable tracking portion of or all bits in a corresponding // header field for metrics per each applicable value. These would appear as tagged // metrics in corresponding flow metrics. -message PatternFlowTcpCtlPshMetricTag { +message PatternFlowGtpv2Spare1MetricTag { // Name used to identify the metrics associated with the values applicable for configured // offset and length inside corresponding header field @@ -14966,12 +17864,12 @@ message PatternFlowTcpCtlPshMetricTag { // Number of bits to track for metrics starting from configured offset of corresponding // header field - // default = 1 + // default = 3 optional uint32 length = 3; } -// Asks to push the buffered data to the receiving application. -message PatternFlowTcpCtlPsh { +// A 3-bit reserved field (must be 0). +message PatternFlowGtpv2Spare1 { message Choice { enum Enum { @@ -14995,19 +17893,19 @@ message PatternFlowTcpCtlPsh { repeated uint32 values = 3; // Description missing in models - PatternFlowTcpCtlPshCounter increment = 5; + PatternFlowGtpv2Spare1Counter increment = 5; // Description missing in models - PatternFlowTcpCtlPshCounter decrement = 6; + PatternFlowGtpv2Spare1Counter decrement = 6; // One or more metric tags can be used to enable tracking portion of or all bits in // a corresponding header field for metrics per each applicable value. These would appear // as tagged metrics in corresponding flow metrics. - repeated PatternFlowTcpCtlPshMetricTag metric_tags = 7; + repeated PatternFlowGtpv2Spare1MetricTag metric_tags = 7; } // integer counter pattern -message PatternFlowTcpCtlRstCounter { +message PatternFlowGtpv2MessageTypeCounter { // Description missing in models // default = 0 @@ -15025,7 +17923,7 @@ message PatternFlowTcpCtlRstCounter { // Metric tag can be used to enable tracking portion of or all bits in a corresponding // header field for metrics per each applicable value. These would appear as tagged // metrics in corresponding flow metrics. -message PatternFlowTcpCtlRstMetricTag { +message PatternFlowGtpv2MessageTypeMetricTag { // Name used to identify the metrics associated with the values applicable for configured // offset and length inside corresponding header field @@ -15038,12 +17936,13 @@ message PatternFlowTcpCtlRstMetricTag { // Number of bits to track for metrics starting from configured offset of corresponding // header field - // default = 1 + // default = 8 optional uint32 length = 3; } -// Reset the connection. -message PatternFlowTcpCtlRst { +// An 8-bit field that indicates the type of GTP message. Different types of messages +// are defined in 3GPP TS 29.060 section 7.1 +message PatternFlowGtpv2MessageType { message Choice { enum Enum { @@ -15067,19 +17966,19 @@ message PatternFlowTcpCtlRst { repeated uint32 values = 3; // Description missing in models - PatternFlowTcpCtlRstCounter increment = 5; + PatternFlowGtpv2MessageTypeCounter increment = 5; // Description missing in models - PatternFlowTcpCtlRstCounter decrement = 6; + PatternFlowGtpv2MessageTypeCounter decrement = 6; // One or more metric tags can be used to enable tracking portion of or all bits in // a corresponding header field for metrics per each applicable value. These would appear // as tagged metrics in corresponding flow metrics. - repeated PatternFlowTcpCtlRstMetricTag metric_tags = 7; + repeated PatternFlowGtpv2MessageTypeMetricTag metric_tags = 7; } // integer counter pattern -message PatternFlowTcpCtlSynCounter { +message PatternFlowGtpv2MessageLengthCounter { // Description missing in models // default = 0 @@ -15097,7 +17996,7 @@ message PatternFlowTcpCtlSynCounter { // Metric tag can be used to enable tracking portion of or all bits in a corresponding // header field for metrics per each applicable value. These would appear as tagged // metrics in corresponding flow metrics. -message PatternFlowTcpCtlSynMetricTag { +message PatternFlowGtpv2MessageLengthMetricTag { // Name used to identify the metrics associated with the values applicable for configured // offset and length inside corresponding header field @@ -15110,12 +18009,13 @@ message PatternFlowTcpCtlSynMetricTag { // Number of bits to track for metrics starting from configured offset of corresponding // header field - // default = 1 + // default = 16 optional uint32 length = 3; } -// Synchronize sequenece numbers. -message PatternFlowTcpCtlSyn { +// A 16-bit field that indicates the length of the payload in bytes, excluding the mandatory +// GTP-c header (first 4 bytes). Includes the TEID and sequence_number if they are present. +message PatternFlowGtpv2MessageLength { message Choice { enum Enum { @@ -15139,19 +18039,19 @@ message PatternFlowTcpCtlSyn { repeated uint32 values = 3; // Description missing in models - PatternFlowTcpCtlSynCounter increment = 5; + PatternFlowGtpv2MessageLengthCounter increment = 5; // Description missing in models - PatternFlowTcpCtlSynCounter decrement = 6; + PatternFlowGtpv2MessageLengthCounter decrement = 6; // One or more metric tags can be used to enable tracking portion of or all bits in // a corresponding header field for metrics per each applicable value. These would appear // as tagged metrics in corresponding flow metrics. - repeated PatternFlowTcpCtlSynMetricTag metric_tags = 7; + repeated PatternFlowGtpv2MessageLengthMetricTag metric_tags = 7; } // integer counter pattern -message PatternFlowTcpCtlFinCounter { +message PatternFlowGtpv2TeidCounter { // Description missing in models // default = 0 @@ -15169,7 +18069,7 @@ message PatternFlowTcpCtlFinCounter { // Metric tag can be used to enable tracking portion of or all bits in a corresponding // header field for metrics per each applicable value. These would appear as tagged // metrics in corresponding flow metrics. -message PatternFlowTcpCtlFinMetricTag { +message PatternFlowGtpv2TeidMetricTag { // Name used to identify the metrics associated with the values applicable for configured // offset and length inside corresponding header field @@ -15182,12 +18082,13 @@ message PatternFlowTcpCtlFinMetricTag { // Number of bits to track for metrics starting from configured offset of corresponding // header field - // default = 1 + // default = 32 optional uint32 length = 3; } -// Last packet from the sender. -message PatternFlowTcpCtlFin { +// Tunnel endpoint identifier. A 32-bit (4-octet) field used to multiplex different +// connections in the same GTP tunnel. Is present only if the teid_flag is set. +message PatternFlowGtpv2Teid { message Choice { enum Enum { @@ -15211,19 +18112,19 @@ message PatternFlowTcpCtlFin { repeated uint32 values = 3; // Description missing in models - PatternFlowTcpCtlFinCounter increment = 5; + PatternFlowGtpv2TeidCounter increment = 5; // Description missing in models - PatternFlowTcpCtlFinCounter decrement = 6; + PatternFlowGtpv2TeidCounter decrement = 6; // One or more metric tags can be used to enable tracking portion of or all bits in // a corresponding header field for metrics per each applicable value. These would appear // as tagged metrics in corresponding flow metrics. - repeated PatternFlowTcpCtlFinMetricTag metric_tags = 7; + repeated PatternFlowGtpv2TeidMetricTag metric_tags = 7; } // integer counter pattern -message PatternFlowTcpWindowCounter { +message PatternFlowGtpv2SequenceNumberCounter { // Description missing in models // default = 0 @@ -15241,7 +18142,7 @@ message PatternFlowTcpWindowCounter { // Metric tag can be used to enable tracking portion of or all bits in a corresponding // header field for metrics per each applicable value. These would appear as tagged // metrics in corresponding flow metrics. -message PatternFlowTcpWindowMetricTag { +message PatternFlowGtpv2SequenceNumberMetricTag { // Name used to identify the metrics associated with the values applicable for configured // offset and length inside corresponding header field @@ -15254,12 +18155,12 @@ message PatternFlowTcpWindowMetricTag { // Number of bits to track for metrics starting from configured offset of corresponding // header field - // default = 16 + // default = 24 optional uint32 length = 3; } -// Tcp connection window. -message PatternFlowTcpWindow { +// The sequence number +message PatternFlowGtpv2SequenceNumber { message Choice { enum Enum { @@ -15283,19 +18184,19 @@ message PatternFlowTcpWindow { repeated uint32 values = 3; // Description missing in models - PatternFlowTcpWindowCounter increment = 5; + PatternFlowGtpv2SequenceNumberCounter increment = 5; // Description missing in models - PatternFlowTcpWindowCounter decrement = 6; + PatternFlowGtpv2SequenceNumberCounter decrement = 6; // One or more metric tags can be used to enable tracking portion of or all bits in // a corresponding header field for metrics per each applicable value. These would appear // as tagged metrics in corresponding flow metrics. - repeated PatternFlowTcpWindowMetricTag metric_tags = 7; + repeated PatternFlowGtpv2SequenceNumberMetricTag metric_tags = 7; } // integer counter pattern -message PatternFlowUdpSrcPortCounter { +message PatternFlowGtpv2Spare2Counter { // Description missing in models // default = 0 @@ -15313,7 +18214,7 @@ message PatternFlowUdpSrcPortCounter { // Metric tag can be used to enable tracking portion of or all bits in a corresponding // header field for metrics per each applicable value. These would appear as tagged // metrics in corresponding flow metrics. -message PatternFlowUdpSrcPortMetricTag { +message PatternFlowGtpv2Spare2MetricTag { // Name used to identify the metrics associated with the values applicable for configured // offset and length inside corresponding header field @@ -15326,12 +18227,12 @@ message PatternFlowUdpSrcPortMetricTag { // Number of bits to track for metrics starting from configured offset of corresponding // header field - // default = 16 + // default = 8 optional uint32 length = 3; } -// Source port -message PatternFlowUdpSrcPort { +// Reserved field +message PatternFlowGtpv2Spare2 { message Choice { enum Enum { @@ -15355,22 +18256,22 @@ message PatternFlowUdpSrcPort { repeated uint32 values = 3; // Description missing in models - PatternFlowUdpSrcPortCounter increment = 5; + PatternFlowGtpv2Spare2Counter increment = 5; // Description missing in models - PatternFlowUdpSrcPortCounter decrement = 6; + PatternFlowGtpv2Spare2Counter decrement = 6; // One or more metric tags can be used to enable tracking portion of or all bits in // a corresponding header field for metrics per each applicable value. These would appear // as tagged metrics in corresponding flow metrics. - repeated PatternFlowUdpSrcPortMetricTag metric_tags = 7; + repeated PatternFlowGtpv2Spare2MetricTag metric_tags = 7; } // integer counter pattern -message PatternFlowUdpDstPortCounter { +message PatternFlowArpHardwareTypeCounter { // Description missing in models - // default = 0 + // default = 1 optional uint32 start = 1; // Description missing in models @@ -15385,7 +18286,7 @@ message PatternFlowUdpDstPortCounter { // Metric tag can be used to enable tracking portion of or all bits in a corresponding // header field for metrics per each applicable value. These would appear as tagged // metrics in corresponding flow metrics. -message PatternFlowUdpDstPortMetricTag { +message PatternFlowArpHardwareTypeMetricTag { // Name used to identify the metrics associated with the values applicable for configured // offset and length inside corresponding header field @@ -15402,8 +18303,8 @@ message PatternFlowUdpDstPortMetricTag { optional uint32 length = 3; } -// Destination port -message PatternFlowUdpDstPort { +// Network link protocol type +message PatternFlowArpHardwareType { message Choice { enum Enum { @@ -15419,30 +18320,30 @@ message PatternFlowUdpDstPort { optional Choice.Enum choice = 1; // Description missing in models - // default = 0 + // default = 1 optional uint32 value = 2; // Description missing in models - // default = [0] + // default = [1] repeated uint32 values = 3; // Description missing in models - PatternFlowUdpDstPortCounter increment = 5; + PatternFlowArpHardwareTypeCounter increment = 5; // Description missing in models - PatternFlowUdpDstPortCounter decrement = 6; + PatternFlowArpHardwareTypeCounter decrement = 6; // One or more metric tags can be used to enable tracking portion of or all bits in // a corresponding header field for metrics per each applicable value. These would appear // as tagged metrics in corresponding flow metrics. - repeated PatternFlowUdpDstPortMetricTag metric_tags = 7; + repeated PatternFlowArpHardwareTypeMetricTag metric_tags = 7; } // integer counter pattern -message PatternFlowUdpLengthCounter { +message PatternFlowArpProtocolTypeCounter { // Description missing in models - // default = 0 + // default = 2048 optional uint32 start = 1; // Description missing in models @@ -15457,7 +18358,7 @@ message PatternFlowUdpLengthCounter { // Metric tag can be used to enable tracking portion of or all bits in a corresponding // header field for metrics per each applicable value. These would appear as tagged // metrics in corresponding flow metrics. -message PatternFlowUdpLengthMetricTag { +message PatternFlowArpProtocolTypeMetricTag { // Name used to identify the metrics associated with the values applicable for configured // offset and length inside corresponding header field @@ -15474,8 +18375,8 @@ message PatternFlowUdpLengthMetricTag { optional uint32 length = 3; } -// Length -message PatternFlowUdpLength { +// The internetwork protocol for which the ARP request is intended +message PatternFlowArpProtocolType { message Choice { enum Enum { @@ -15491,59 +18392,30 @@ message PatternFlowUdpLength { optional Choice.Enum choice = 1; // Description missing in models - // default = 0 + // default = 2048 optional uint32 value = 2; // Description missing in models - // default = [0] + // default = [2048] repeated uint32 values = 3; // Description missing in models - PatternFlowUdpLengthCounter increment = 5; + PatternFlowArpProtocolTypeCounter increment = 5; // Description missing in models - PatternFlowUdpLengthCounter decrement = 6; + PatternFlowArpProtocolTypeCounter decrement = 6; // One or more metric tags can be used to enable tracking portion of or all bits in // a corresponding header field for metrics per each applicable value. These would appear // as tagged metrics in corresponding flow metrics. - repeated PatternFlowUdpLengthMetricTag metric_tags = 7; -} - -// UDP checksum -message PatternFlowUdpChecksum { - - message Choice { - enum Enum { - unspecified = 0; - generated = 1; - custom = 2; - } - } - // The type of checksum - // default = Choice.Enum.generated - optional Choice.Enum choice = 1; - - message Generated { - enum Enum { - unspecified = 0; - good = 1; - bad = 2; - } - } - // A system generated checksum value - // default = Generated.Enum.good - optional Generated.Enum generated = 2; - - // A custom checksum value - optional uint32 custom = 3; + repeated PatternFlowArpProtocolTypeMetricTag metric_tags = 7; } // integer counter pattern -message PatternFlowGreChecksumPresentCounter { +message PatternFlowArpHardwareLengthCounter { // Description missing in models - // default = 0 + // default = 6 optional uint32 start = 1; // Description missing in models @@ -15558,7 +18430,7 @@ message PatternFlowGreChecksumPresentCounter { // Metric tag can be used to enable tracking portion of or all bits in a corresponding // header field for metrics per each applicable value. These would appear as tagged // metrics in corresponding flow metrics. -message PatternFlowGreChecksumPresentMetricTag { +message PatternFlowArpHardwareLengthMetricTag { // Name used to identify the metrics associated with the values applicable for configured // offset and length inside corresponding header field @@ -15571,12 +18443,12 @@ message PatternFlowGreChecksumPresentMetricTag { // Number of bits to track for metrics starting from configured offset of corresponding // header field - // default = 1 + // default = 8 optional uint32 length = 3; } -// Checksum present bit -message PatternFlowGreChecksumPresent { +// Length (in octets) of a hardware address +message PatternFlowArpHardwareLength { message Choice { enum Enum { @@ -15592,30 +18464,30 @@ message PatternFlowGreChecksumPresent { optional Choice.Enum choice = 1; // Description missing in models - // default = 0 + // default = 6 optional uint32 value = 2; // Description missing in models - // default = [0] + // default = [6] repeated uint32 values = 3; // Description missing in models - PatternFlowGreChecksumPresentCounter increment = 5; + PatternFlowArpHardwareLengthCounter increment = 5; // Description missing in models - PatternFlowGreChecksumPresentCounter decrement = 6; + PatternFlowArpHardwareLengthCounter decrement = 6; // One or more metric tags can be used to enable tracking portion of or all bits in // a corresponding header field for metrics per each applicable value. These would appear // as tagged metrics in corresponding flow metrics. - repeated PatternFlowGreChecksumPresentMetricTag metric_tags = 7; + repeated PatternFlowArpHardwareLengthMetricTag metric_tags = 7; } // integer counter pattern -message PatternFlowGreReserved0Counter { +message PatternFlowArpProtocolLengthCounter { // Description missing in models - // default = 0 + // default = 4 optional uint32 start = 1; // Description missing in models @@ -15630,7 +18502,7 @@ message PatternFlowGreReserved0Counter { // Metric tag can be used to enable tracking portion of or all bits in a corresponding // header field for metrics per each applicable value. These would appear as tagged // metrics in corresponding flow metrics. -message PatternFlowGreReserved0MetricTag { +message PatternFlowArpProtocolLengthMetricTag { // Name used to identify the metrics associated with the values applicable for configured // offset and length inside corresponding header field @@ -15643,12 +18515,12 @@ message PatternFlowGreReserved0MetricTag { // Number of bits to track for metrics starting from configured offset of corresponding // header field - // default = 12 + // default = 8 optional uint32 length = 3; } -// Reserved bits -message PatternFlowGreReserved0 { +// Length (in octets) of internetwork addresses +message PatternFlowArpProtocolLength { message Choice { enum Enum { @@ -15664,30 +18536,30 @@ message PatternFlowGreReserved0 { optional Choice.Enum choice = 1; // Description missing in models - // default = 0 + // default = 4 optional uint32 value = 2; // Description missing in models - // default = [0] + // default = [4] repeated uint32 values = 3; // Description missing in models - PatternFlowGreReserved0Counter increment = 5; + PatternFlowArpProtocolLengthCounter increment = 5; // Description missing in models - PatternFlowGreReserved0Counter decrement = 6; + PatternFlowArpProtocolLengthCounter decrement = 6; // One or more metric tags can be used to enable tracking portion of or all bits in // a corresponding header field for metrics per each applicable value. These would appear // as tagged metrics in corresponding flow metrics. - repeated PatternFlowGreReserved0MetricTag metric_tags = 7; + repeated PatternFlowArpProtocolLengthMetricTag metric_tags = 7; } // integer counter pattern -message PatternFlowGreVersionCounter { +message PatternFlowArpOperationCounter { // Description missing in models - // default = 0 + // default = 1 optional uint32 start = 1; // Description missing in models @@ -15702,7 +18574,7 @@ message PatternFlowGreVersionCounter { // Metric tag can be used to enable tracking portion of or all bits in a corresponding // header field for metrics per each applicable value. These would appear as tagged // metrics in corresponding flow metrics. -message PatternFlowGreVersionMetricTag { +message PatternFlowArpOperationMetricTag { // Name used to identify the metrics associated with the values applicable for configured // offset and length inside corresponding header field @@ -15715,12 +18587,12 @@ message PatternFlowGreVersionMetricTag { // Number of bits to track for metrics starting from configured offset of corresponding // header field - // default = 3 + // default = 16 optional uint32 length = 3; } -// GRE version number -message PatternFlowGreVersion { +// The operation that the sender is performing +message PatternFlowArpOperation { message Choice { enum Enum { @@ -15736,35 +18608,35 @@ message PatternFlowGreVersion { optional Choice.Enum choice = 1; // Description missing in models - // default = 0 + // default = 1 optional uint32 value = 2; // Description missing in models - // default = [0] + // default = [1] repeated uint32 values = 3; // Description missing in models - PatternFlowGreVersionCounter increment = 5; + PatternFlowArpOperationCounter increment = 5; // Description missing in models - PatternFlowGreVersionCounter decrement = 6; + PatternFlowArpOperationCounter decrement = 6; // One or more metric tags can be used to enable tracking portion of or all bits in // a corresponding header field for metrics per each applicable value. These would appear // as tagged metrics in corresponding flow metrics. - repeated PatternFlowGreVersionMetricTag metric_tags = 7; + repeated PatternFlowArpOperationMetricTag metric_tags = 7; } -// integer counter pattern -message PatternFlowGreProtocolCounter { +// mac counter pattern +message PatternFlowArpSenderHardwareAddrCounter { // Description missing in models - // default = 2048 - optional uint32 start = 1; + // default = 00:00:00:00:00:00 + optional string start = 1; // Description missing in models - // default = 1 - optional uint32 step = 2; + // default = 00:00:00:00:00:01 + optional string step = 2; // Description missing in models // default = 1 @@ -15774,7 +18646,7 @@ message PatternFlowGreProtocolCounter { // Metric tag can be used to enable tracking portion of or all bits in a corresponding // header field for metrics per each applicable value. These would appear as tagged // metrics in corresponding flow metrics. -message PatternFlowGreProtocolMetricTag { +message PatternFlowArpSenderHardwareAddrMetricTag { // Name used to identify the metrics associated with the values applicable for configured // offset and length inside corresponding header field @@ -15787,12 +18659,12 @@ message PatternFlowGreProtocolMetricTag { // Number of bits to track for metrics starting from configured offset of corresponding // header field - // default = 16 + // default = 48 optional uint32 length = 3; } -// Protocol type of encapsulated payload -message PatternFlowGreProtocol { +// Media address of the sender +message PatternFlowArpSenderHardwareAddr { message Choice { enum Enum { @@ -15808,65 +18680,35 @@ message PatternFlowGreProtocol { optional Choice.Enum choice = 1; // Description missing in models - // default = 2048 - optional uint32 value = 2; + // default = 00:00:00:00:00:00 + optional string value = 2; // Description missing in models - // default = [2048] - repeated uint32 values = 3; + // default = ['00:00:00:00:00:00'] + repeated string values = 3; // Description missing in models - PatternFlowGreProtocolCounter increment = 5; + PatternFlowArpSenderHardwareAddrCounter increment = 5; // Description missing in models - PatternFlowGreProtocolCounter decrement = 6; + PatternFlowArpSenderHardwareAddrCounter decrement = 6; // One or more metric tags can be used to enable tracking portion of or all bits in // a corresponding header field for metrics per each applicable value. These would appear // as tagged metrics in corresponding flow metrics. - repeated PatternFlowGreProtocolMetricTag metric_tags = 7; -} - -// Optional checksum of GRE header and payload. Only present if the checksum_present -// bit is set. -message PatternFlowGreChecksum { - - message Choice { - enum Enum { - unspecified = 0; - generated = 1; - custom = 2; - } - } - // The type of checksum - // default = Choice.Enum.generated - optional Choice.Enum choice = 1; - - message Generated { - enum Enum { - unspecified = 0; - good = 1; - bad = 2; - } - } - // A system generated checksum value - // default = Generated.Enum.good - optional Generated.Enum generated = 2; - - // A custom checksum value - optional uint32 custom = 3; + repeated PatternFlowArpSenderHardwareAddrMetricTag metric_tags = 7; } -// integer counter pattern -message PatternFlowGreReserved1Counter { +// ipv4 counter pattern +message PatternFlowArpSenderProtocolAddrCounter { // Description missing in models - // default = 0 - optional uint32 start = 1; + // default = 0.0.0.0 + optional string start = 1; // Description missing in models - // default = 1 - optional uint32 step = 2; + // default = 0.0.0.1 + optional string step = 2; // Description missing in models // default = 1 @@ -15876,7 +18718,7 @@ message PatternFlowGreReserved1Counter { // Metric tag can be used to enable tracking portion of or all bits in a corresponding // header field for metrics per each applicable value. These would appear as tagged // metrics in corresponding flow metrics. -message PatternFlowGreReserved1MetricTag { +message PatternFlowArpSenderProtocolAddrMetricTag { // Name used to identify the metrics associated with the values applicable for configured // offset and length inside corresponding header field @@ -15889,12 +18731,12 @@ message PatternFlowGreReserved1MetricTag { // Number of bits to track for metrics starting from configured offset of corresponding // header field - // default = 16 + // default = 32 optional uint32 length = 3; } -// Optional reserved field. Only present if the checksum_present bit is set. -message PatternFlowGreReserved1 { +// Internetwork address of the sender +message PatternFlowArpSenderProtocolAddr { message Choice { enum Enum { @@ -15910,35 +18752,35 @@ message PatternFlowGreReserved1 { optional Choice.Enum choice = 1; // Description missing in models - // default = 0 - optional uint32 value = 2; + // default = 0.0.0.0 + optional string value = 2; // Description missing in models - // default = [0] - repeated uint32 values = 3; + // default = ['0.0.0.0'] + repeated string values = 3; // Description missing in models - PatternFlowGreReserved1Counter increment = 5; + PatternFlowArpSenderProtocolAddrCounter increment = 5; // Description missing in models - PatternFlowGreReserved1Counter decrement = 6; + PatternFlowArpSenderProtocolAddrCounter decrement = 6; // One or more metric tags can be used to enable tracking portion of or all bits in // a corresponding header field for metrics per each applicable value. These would appear // as tagged metrics in corresponding flow metrics. - repeated PatternFlowGreReserved1MetricTag metric_tags = 7; + repeated PatternFlowArpSenderProtocolAddrMetricTag metric_tags = 7; } -// integer counter pattern -message PatternFlowGtpv1VersionCounter { +// mac counter pattern +message PatternFlowArpTargetHardwareAddrCounter { // Description missing in models - // default = 1 - optional uint32 start = 1; + // default = 00:00:00:00:00:00 + optional string start = 1; // Description missing in models - // default = 1 - optional uint32 step = 2; + // default = 00:00:00:00:00:01 + optional string step = 2; // Description missing in models // default = 1 @@ -15948,7 +18790,7 @@ message PatternFlowGtpv1VersionCounter { // Metric tag can be used to enable tracking portion of or all bits in a corresponding // header field for metrics per each applicable value. These would appear as tagged // metrics in corresponding flow metrics. -message PatternFlowGtpv1VersionMetricTag { +message PatternFlowArpTargetHardwareAddrMetricTag { // Name used to identify the metrics associated with the values applicable for configured // offset and length inside corresponding header field @@ -15961,12 +18803,12 @@ message PatternFlowGtpv1VersionMetricTag { // Number of bits to track for metrics starting from configured offset of corresponding // header field - // default = 3 + // default = 48 optional uint32 length = 3; } -// GTPv1 version -message PatternFlowGtpv1Version { +// Media address of the target +message PatternFlowArpTargetHardwareAddr { message Choice { enum Enum { @@ -15982,35 +18824,35 @@ message PatternFlowGtpv1Version { optional Choice.Enum choice = 1; // Description missing in models - // default = 1 - optional uint32 value = 2; + // default = 00:00:00:00:00:00 + optional string value = 2; // Description missing in models - // default = [1] - repeated uint32 values = 3; + // default = ['00:00:00:00:00:00'] + repeated string values = 3; // Description missing in models - PatternFlowGtpv1VersionCounter increment = 5; + PatternFlowArpTargetHardwareAddrCounter increment = 5; // Description missing in models - PatternFlowGtpv1VersionCounter decrement = 6; + PatternFlowArpTargetHardwareAddrCounter decrement = 6; // One or more metric tags can be used to enable tracking portion of or all bits in // a corresponding header field for metrics per each applicable value. These would appear // as tagged metrics in corresponding flow metrics. - repeated PatternFlowGtpv1VersionMetricTag metric_tags = 7; + repeated PatternFlowArpTargetHardwareAddrMetricTag metric_tags = 7; } -// integer counter pattern -message PatternFlowGtpv1ProtocolTypeCounter { +// ipv4 counter pattern +message PatternFlowArpTargetProtocolAddrCounter { // Description missing in models - // default = 1 - optional uint32 start = 1; + // default = 0.0.0.0 + optional string start = 1; // Description missing in models - // default = 1 - optional uint32 step = 2; + // default = 0.0.0.1 + optional string step = 2; // Description missing in models // default = 1 @@ -16020,7 +18862,7 @@ message PatternFlowGtpv1ProtocolTypeCounter { // Metric tag can be used to enable tracking portion of or all bits in a corresponding // header field for metrics per each applicable value. These would appear as tagged // metrics in corresponding flow metrics. -message PatternFlowGtpv1ProtocolTypeMetricTag { +message PatternFlowArpTargetProtocolAddrMetricTag { // Name used to identify the metrics associated with the values applicable for configured // offset and length inside corresponding header field @@ -16033,12 +18875,12 @@ message PatternFlowGtpv1ProtocolTypeMetricTag { // Number of bits to track for metrics starting from configured offset of corresponding // header field - // default = 1 + // default = 32 optional uint32 length = 3; } -// Protocol type, GTP is 1, GTP' is 0 -message PatternFlowGtpv1ProtocolType { +// Internetwork address of the target +message PatternFlowArpTargetProtocolAddr { message Choice { enum Enum { @@ -16054,30 +18896,30 @@ message PatternFlowGtpv1ProtocolType { optional Choice.Enum choice = 1; // Description missing in models - // default = 1 - optional uint32 value = 2; + // default = 0.0.0.0 + optional string value = 2; // Description missing in models - // default = [1] - repeated uint32 values = 3; + // default = ['0.0.0.0'] + repeated string values = 3; // Description missing in models - PatternFlowGtpv1ProtocolTypeCounter increment = 5; + PatternFlowArpTargetProtocolAddrCounter increment = 5; // Description missing in models - PatternFlowGtpv1ProtocolTypeCounter decrement = 6; + PatternFlowArpTargetProtocolAddrCounter decrement = 6; // One or more metric tags can be used to enable tracking portion of or all bits in // a corresponding header field for metrics per each applicable value. These would appear // as tagged metrics in corresponding flow metrics. - repeated PatternFlowGtpv1ProtocolTypeMetricTag metric_tags = 7; + repeated PatternFlowArpTargetProtocolAddrMetricTag metric_tags = 7; } // integer counter pattern -message PatternFlowGtpv1ReservedCounter { +message PatternFlowIcmpEchoTypeCounter { // Description missing in models - // default = 0 + // default = 8 optional uint32 start = 1; // Description missing in models @@ -16092,7 +18934,7 @@ message PatternFlowGtpv1ReservedCounter { // Metric tag can be used to enable tracking portion of or all bits in a corresponding // header field for metrics per each applicable value. These would appear as tagged // metrics in corresponding flow metrics. -message PatternFlowGtpv1ReservedMetricTag { +message PatternFlowIcmpEchoTypeMetricTag { // Name used to identify the metrics associated with the values applicable for configured // offset and length inside corresponding header field @@ -16105,12 +18947,12 @@ message PatternFlowGtpv1ReservedMetricTag { // Number of bits to track for metrics starting from configured offset of corresponding // header field - // default = 1 + // default = 8 optional uint32 length = 3; } -// Reserved field -message PatternFlowGtpv1Reserved { +// The type of ICMP echo packet +message PatternFlowIcmpEchoType { message Choice { enum Enum { @@ -16126,27 +18968,27 @@ message PatternFlowGtpv1Reserved { optional Choice.Enum choice = 1; // Description missing in models - // default = 0 + // default = 8 optional uint32 value = 2; // Description missing in models - // default = [0] + // default = [8] repeated uint32 values = 3; // Description missing in models - PatternFlowGtpv1ReservedCounter increment = 5; + PatternFlowIcmpEchoTypeCounter increment = 5; // Description missing in models - PatternFlowGtpv1ReservedCounter decrement = 6; + PatternFlowIcmpEchoTypeCounter decrement = 6; // One or more metric tags can be used to enable tracking portion of or all bits in // a corresponding header field for metrics per each applicable value. These would appear // as tagged metrics in corresponding flow metrics. - repeated PatternFlowGtpv1ReservedMetricTag metric_tags = 7; + repeated PatternFlowIcmpEchoTypeMetricTag metric_tags = 7; } // integer counter pattern -message PatternFlowGtpv1EFlagCounter { +message PatternFlowIcmpEchoCodeCounter { // Description missing in models // default = 0 @@ -16164,7 +19006,7 @@ message PatternFlowGtpv1EFlagCounter { // Metric tag can be used to enable tracking portion of or all bits in a corresponding // header field for metrics per each applicable value. These would appear as tagged // metrics in corresponding flow metrics. -message PatternFlowGtpv1EFlagMetricTag { +message PatternFlowIcmpEchoCodeMetricTag { // Name used to identify the metrics associated with the values applicable for configured // offset and length inside corresponding header field @@ -16177,12 +19019,12 @@ message PatternFlowGtpv1EFlagMetricTag { // Number of bits to track for metrics starting from configured offset of corresponding // header field - // default = 1 + // default = 8 optional uint32 length = 3; } -// Extension header field present -message PatternFlowGtpv1EFlag { +// The ICMP subtype. The default code for ICMP echo request and reply is 0. +message PatternFlowIcmpEchoCode { message Choice { enum Enum { @@ -16206,19 +19048,48 @@ message PatternFlowGtpv1EFlag { repeated uint32 values = 3; // Description missing in models - PatternFlowGtpv1EFlagCounter increment = 5; + PatternFlowIcmpEchoCodeCounter increment = 5; // Description missing in models - PatternFlowGtpv1EFlagCounter decrement = 6; + PatternFlowIcmpEchoCodeCounter decrement = 6; // One or more metric tags can be used to enable tracking portion of or all bits in // a corresponding header field for metrics per each applicable value. These would appear // as tagged metrics in corresponding flow metrics. - repeated PatternFlowGtpv1EFlagMetricTag metric_tags = 7; + repeated PatternFlowIcmpEchoCodeMetricTag metric_tags = 7; +} + +// ICMP checksum +message PatternFlowIcmpEchoChecksum { + + message Choice { + enum Enum { + unspecified = 0; + generated = 1; + custom = 2; + } + } + // The type of checksum + // default = Choice.Enum.generated + optional Choice.Enum choice = 1; + + message Generated { + enum Enum { + unspecified = 0; + good = 1; + bad = 2; + } + } + // A system generated checksum value + // default = Generated.Enum.good + optional Generated.Enum generated = 2; + + // A custom checksum value + optional uint32 custom = 3; } // integer counter pattern -message PatternFlowGtpv1SFlagCounter { +message PatternFlowIcmpEchoIdentifierCounter { // Description missing in models // default = 0 @@ -16236,7 +19107,7 @@ message PatternFlowGtpv1SFlagCounter { // Metric tag can be used to enable tracking portion of or all bits in a corresponding // header field for metrics per each applicable value. These would appear as tagged // metrics in corresponding flow metrics. -message PatternFlowGtpv1SFlagMetricTag { +message PatternFlowIcmpEchoIdentifierMetricTag { // Name used to identify the metrics associated with the values applicable for configured // offset and length inside corresponding header field @@ -16249,12 +19120,12 @@ message PatternFlowGtpv1SFlagMetricTag { // Number of bits to track for metrics starting from configured offset of corresponding // header field - // default = 1 + // default = 16 optional uint32 length = 3; } -// Sequence number field present -message PatternFlowGtpv1SFlag { +// ICMP identifier +message PatternFlowIcmpEchoIdentifier { message Choice { enum Enum { @@ -16278,19 +19149,19 @@ message PatternFlowGtpv1SFlag { repeated uint32 values = 3; // Description missing in models - PatternFlowGtpv1SFlagCounter increment = 5; + PatternFlowIcmpEchoIdentifierCounter increment = 5; // Description missing in models - PatternFlowGtpv1SFlagCounter decrement = 6; + PatternFlowIcmpEchoIdentifierCounter decrement = 6; // One or more metric tags can be used to enable tracking portion of or all bits in // a corresponding header field for metrics per each applicable value. These would appear // as tagged metrics in corresponding flow metrics. - repeated PatternFlowGtpv1SFlagMetricTag metric_tags = 7; + repeated PatternFlowIcmpEchoIdentifierMetricTag metric_tags = 7; } // integer counter pattern -message PatternFlowGtpv1PnFlagCounter { +message PatternFlowIcmpEchoSequenceNumberCounter { // Description missing in models // default = 0 @@ -16308,7 +19179,7 @@ message PatternFlowGtpv1PnFlagCounter { // Metric tag can be used to enable tracking portion of or all bits in a corresponding // header field for metrics per each applicable value. These would appear as tagged // metrics in corresponding flow metrics. -message PatternFlowGtpv1PnFlagMetricTag { +message PatternFlowIcmpEchoSequenceNumberMetricTag { // Name used to identify the metrics associated with the values applicable for configured // offset and length inside corresponding header field @@ -16321,12 +19192,12 @@ message PatternFlowGtpv1PnFlagMetricTag { // Number of bits to track for metrics starting from configured offset of corresponding // header field - // default = 1 + // default = 16 optional uint32 length = 3; } -// N-PDU field present -message PatternFlowGtpv1PnFlag { +// ICMP sequence number +message PatternFlowIcmpEchoSequenceNumber { message Choice { enum Enum { @@ -16350,19 +19221,48 @@ message PatternFlowGtpv1PnFlag { repeated uint32 values = 3; // Description missing in models - PatternFlowGtpv1PnFlagCounter increment = 5; + PatternFlowIcmpEchoSequenceNumberCounter increment = 5; // Description missing in models - PatternFlowGtpv1PnFlagCounter decrement = 6; + PatternFlowIcmpEchoSequenceNumberCounter decrement = 6; // One or more metric tags can be used to enable tracking portion of or all bits in // a corresponding header field for metrics per each applicable value. These would appear // as tagged metrics in corresponding flow metrics. - repeated PatternFlowGtpv1PnFlagMetricTag metric_tags = 7; + repeated PatternFlowIcmpEchoSequenceNumberMetricTag metric_tags = 7; +} + +// ICMP checksum +message PatternFlowIcmpCommonChecksum { + + message Choice { + enum Enum { + unspecified = 0; + generated = 1; + custom = 2; + } + } + // The type of checksum + // default = Choice.Enum.generated + optional Choice.Enum choice = 1; + + message Generated { + enum Enum { + unspecified = 0; + good = 1; + bad = 2; + } + } + // A system generated checksum value + // default = Generated.Enum.good + optional Generated.Enum generated = 2; + + // A custom checksum value + optional uint32 custom = 3; } // integer counter pattern -message PatternFlowGtpv1MessageTypeCounter { +message PatternFlowIcmpNextFieldsIdentifierCounter { // Description missing in models // default = 0 @@ -16380,7 +19280,7 @@ message PatternFlowGtpv1MessageTypeCounter { // Metric tag can be used to enable tracking portion of or all bits in a corresponding // header field for metrics per each applicable value. These would appear as tagged // metrics in corresponding flow metrics. -message PatternFlowGtpv1MessageTypeMetricTag { +message PatternFlowIcmpNextFieldsIdentifierMetricTag { // Name used to identify the metrics associated with the values applicable for configured // offset and length inside corresponding header field @@ -16393,13 +19293,12 @@ message PatternFlowGtpv1MessageTypeMetricTag { // Number of bits to track for metrics starting from configured offset of corresponding // header field - // default = 8 + // default = 16 optional uint32 length = 3; } -// The type of GTP message Different types of messages are defined in 3GPP TS 29.060 -// section 7.1 -message PatternFlowGtpv1MessageType { +// ICMP identifier +message PatternFlowIcmpNextFieldsIdentifier { message Choice { enum Enum { @@ -16423,19 +19322,19 @@ message PatternFlowGtpv1MessageType { repeated uint32 values = 3; // Description missing in models - PatternFlowGtpv1MessageTypeCounter increment = 5; + PatternFlowIcmpNextFieldsIdentifierCounter increment = 5; // Description missing in models - PatternFlowGtpv1MessageTypeCounter decrement = 6; + PatternFlowIcmpNextFieldsIdentifierCounter decrement = 6; // One or more metric tags can be used to enable tracking portion of or all bits in // a corresponding header field for metrics per each applicable value. These would appear // as tagged metrics in corresponding flow metrics. - repeated PatternFlowGtpv1MessageTypeMetricTag metric_tags = 7; + repeated PatternFlowIcmpNextFieldsIdentifierMetricTag metric_tags = 7; } // integer counter pattern -message PatternFlowGtpv1MessageLengthCounter { +message PatternFlowIcmpNextFieldsSequenceNumberCounter { // Description missing in models // default = 0 @@ -16453,7 +19352,7 @@ message PatternFlowGtpv1MessageLengthCounter { // Metric tag can be used to enable tracking portion of or all bits in a corresponding // header field for metrics per each applicable value. These would appear as tagged // metrics in corresponding flow metrics. -message PatternFlowGtpv1MessageLengthMetricTag { +message PatternFlowIcmpNextFieldsSequenceNumberMetricTag { // Name used to identify the metrics associated with the values applicable for configured // offset and length inside corresponding header field @@ -16470,9 +19369,8 @@ message PatternFlowGtpv1MessageLengthMetricTag { optional uint32 length = 3; } -// The length of the payload (the bytes following the mandatory 8-byte GTP header) in -// bytes that includes any optional fields -message PatternFlowGtpv1MessageLength { +// ICMP sequence number +message PatternFlowIcmpNextFieldsSequenceNumber { message Choice { enum Enum { @@ -16496,22 +19394,22 @@ message PatternFlowGtpv1MessageLength { repeated uint32 values = 3; // Description missing in models - PatternFlowGtpv1MessageLengthCounter increment = 5; + PatternFlowIcmpNextFieldsSequenceNumberCounter increment = 5; // Description missing in models - PatternFlowGtpv1MessageLengthCounter decrement = 6; + PatternFlowIcmpNextFieldsSequenceNumberCounter decrement = 6; // One or more metric tags can be used to enable tracking portion of or all bits in // a corresponding header field for metrics per each applicable value. These would appear // as tagged metrics in corresponding flow metrics. - repeated PatternFlowGtpv1MessageLengthMetricTag metric_tags = 7; + repeated PatternFlowIcmpNextFieldsSequenceNumberMetricTag metric_tags = 7; } // integer counter pattern -message PatternFlowGtpv1TeidCounter { +message PatternFlowIcmpv6EchoTypeCounter { // Description missing in models - // default = 0 + // default = 128 optional uint32 start = 1; // Description missing in models @@ -16526,7 +19424,7 @@ message PatternFlowGtpv1TeidCounter { // Metric tag can be used to enable tracking portion of or all bits in a corresponding // header field for metrics per each applicable value. These would appear as tagged // metrics in corresponding flow metrics. -message PatternFlowGtpv1TeidMetricTag { +message PatternFlowIcmpv6EchoTypeMetricTag { // Name used to identify the metrics associated with the values applicable for configured // offset and length inside corresponding header field @@ -16539,12 +19437,12 @@ message PatternFlowGtpv1TeidMetricTag { // Number of bits to track for metrics starting from configured offset of corresponding // header field - // default = 32 + // default = 8 optional uint32 length = 3; } -// Tunnel endpoint identifier (TEID) used to multiplex connections in the same GTP tunnel -message PatternFlowGtpv1Teid { +// ICMPv6 echo type +message PatternFlowIcmpv6EchoType { message Choice { enum Enum { @@ -16560,27 +19458,27 @@ message PatternFlowGtpv1Teid { optional Choice.Enum choice = 1; // Description missing in models - // default = 0 + // default = 128 optional uint32 value = 2; // Description missing in models - // default = [0] + // default = [128] repeated uint32 values = 3; // Description missing in models - PatternFlowGtpv1TeidCounter increment = 5; + PatternFlowIcmpv6EchoTypeCounter increment = 5; // Description missing in models - PatternFlowGtpv1TeidCounter decrement = 6; + PatternFlowIcmpv6EchoTypeCounter decrement = 6; // One or more metric tags can be used to enable tracking portion of or all bits in // a corresponding header field for metrics per each applicable value. These would appear // as tagged metrics in corresponding flow metrics. - repeated PatternFlowGtpv1TeidMetricTag metric_tags = 7; + repeated PatternFlowIcmpv6EchoTypeMetricTag metric_tags = 7; } // integer counter pattern -message PatternFlowGtpv1SquenceNumberCounter { +message PatternFlowIcmpv6EchoCodeCounter { // Description missing in models // default = 0 @@ -16598,7 +19496,7 @@ message PatternFlowGtpv1SquenceNumberCounter { // Metric tag can be used to enable tracking portion of or all bits in a corresponding // header field for metrics per each applicable value. These would appear as tagged // metrics in corresponding flow metrics. -message PatternFlowGtpv1SquenceNumberMetricTag { +message PatternFlowIcmpv6EchoCodeMetricTag { // Name used to identify the metrics associated with the values applicable for configured // offset and length inside corresponding header field @@ -16611,13 +19509,12 @@ message PatternFlowGtpv1SquenceNumberMetricTag { // Number of bits to track for metrics starting from configured offset of corresponding // header field - // default = 16 + // default = 8 optional uint32 length = 3; } -// Sequence number. Exists if any of the e_flag, s_flag, or pn_flag bits are on. Must -// be interpreted only if the s_flag bit is on. -message PatternFlowGtpv1SquenceNumber { +// ICMPv6 echo sub type +message PatternFlowIcmpv6EchoCode { message Choice { enum Enum { @@ -16641,19 +19538,19 @@ message PatternFlowGtpv1SquenceNumber { repeated uint32 values = 3; // Description missing in models - PatternFlowGtpv1SquenceNumberCounter increment = 5; + PatternFlowIcmpv6EchoCodeCounter increment = 5; // Description missing in models - PatternFlowGtpv1SquenceNumberCounter decrement = 6; + PatternFlowIcmpv6EchoCodeCounter decrement = 6; // One or more metric tags can be used to enable tracking portion of or all bits in // a corresponding header field for metrics per each applicable value. These would appear // as tagged metrics in corresponding flow metrics. - repeated PatternFlowGtpv1SquenceNumberMetricTag metric_tags = 7; + repeated PatternFlowIcmpv6EchoCodeMetricTag metric_tags = 7; } // integer counter pattern -message PatternFlowGtpv1NPduNumberCounter { +message PatternFlowIcmpv6EchoIdentifierCounter { // Description missing in models // default = 0 @@ -16671,7 +19568,7 @@ message PatternFlowGtpv1NPduNumberCounter { // Metric tag can be used to enable tracking portion of or all bits in a corresponding // header field for metrics per each applicable value. These would appear as tagged // metrics in corresponding flow metrics. -message PatternFlowGtpv1NPduNumberMetricTag { +message PatternFlowIcmpv6EchoIdentifierMetricTag { // Name used to identify the metrics associated with the values applicable for configured // offset and length inside corresponding header field @@ -16684,13 +19581,12 @@ message PatternFlowGtpv1NPduNumberMetricTag { // Number of bits to track for metrics starting from configured offset of corresponding // header field - // default = 8 + // default = 16 optional uint32 length = 3; } -// N-PDU number. Exists if any of the e_flag, s_flag, or pn_flag bits are on. Must -// be interpreted only if the pn_flag bit is on. -message PatternFlowGtpv1NPduNumber { +// ICMPv6 echo identifier +message PatternFlowIcmpv6EchoIdentifier { message Choice { enum Enum { @@ -16714,19 +19610,19 @@ message PatternFlowGtpv1NPduNumber { repeated uint32 values = 3; // Description missing in models - PatternFlowGtpv1NPduNumberCounter increment = 5; + PatternFlowIcmpv6EchoIdentifierCounter increment = 5; // Description missing in models - PatternFlowGtpv1NPduNumberCounter decrement = 6; + PatternFlowIcmpv6EchoIdentifierCounter decrement = 6; // One or more metric tags can be used to enable tracking portion of or all bits in // a corresponding header field for metrics per each applicable value. These would appear // as tagged metrics in corresponding flow metrics. - repeated PatternFlowGtpv1NPduNumberMetricTag metric_tags = 7; + repeated PatternFlowIcmpv6EchoIdentifierMetricTag metric_tags = 7; } // integer counter pattern -message PatternFlowGtpv1NextExtensionHeaderTypeCounter { +message PatternFlowIcmpv6EchoSequenceNumberCounter { // Description missing in models // default = 0 @@ -16744,7 +19640,7 @@ message PatternFlowGtpv1NextExtensionHeaderTypeCounter { // Metric tag can be used to enable tracking portion of or all bits in a corresponding // header field for metrics per each applicable value. These would appear as tagged // metrics in corresponding flow metrics. -message PatternFlowGtpv1NextExtensionHeaderTypeMetricTag { +message PatternFlowIcmpv6EchoSequenceNumberMetricTag { // Name used to identify the metrics associated with the values applicable for configured // offset and length inside corresponding header field @@ -16757,13 +19653,12 @@ message PatternFlowGtpv1NextExtensionHeaderTypeMetricTag { // Number of bits to track for metrics starting from configured offset of corresponding // header field - // default = 8 + // default = 16 optional uint32 length = 3; } -// Next extension header. Exists if any of the e_flag, s_flag, or pn_flag bits are on. -// Must be interpreted only if the e_flag bit is on. -message PatternFlowGtpv1NextExtensionHeaderType { +// ICMPv6 echo sequence number +message PatternFlowIcmpv6EchoSequenceNumber { message Choice { enum Enum { @@ -16787,22 +19682,80 @@ message PatternFlowGtpv1NextExtensionHeaderType { repeated uint32 values = 3; // Description missing in models - PatternFlowGtpv1NextExtensionHeaderTypeCounter increment = 5; + PatternFlowIcmpv6EchoSequenceNumberCounter increment = 5; // Description missing in models - PatternFlowGtpv1NextExtensionHeaderTypeCounter decrement = 6; + PatternFlowIcmpv6EchoSequenceNumberCounter decrement = 6; + + // One or more metric tags can be used to enable tracking portion of or all bits in + // a corresponding header field for metrics per each applicable value. These would appear + // as tagged metrics in corresponding flow metrics. + repeated PatternFlowIcmpv6EchoSequenceNumberMetricTag metric_tags = 7; +} + +// ICMPv6 checksum +message PatternFlowIcmpv6EchoChecksum { + + message Choice { + enum Enum { + unspecified = 0; + generated = 1; + custom = 2; + } + } + // The type of checksum + // default = Choice.Enum.generated + optional Choice.Enum choice = 1; + + message Generated { + enum Enum { + unspecified = 0; + good = 1; + bad = 2; + } + } + // A system generated checksum value + // default = Generated.Enum.good + optional Generated.Enum generated = 2; + + // A custom checksum value + optional uint32 custom = 3; +} + +// ICMPv6 checksum +message PatternFlowIcmpv6CommonChecksum { + + message Choice { + enum Enum { + unspecified = 0; + generated = 1; + custom = 2; + } + } + // The type of checksum + // default = Choice.Enum.generated + optional Choice.Enum choice = 1; + + message Generated { + enum Enum { + unspecified = 0; + good = 1; + bad = 2; + } + } + // A system generated checksum value + // default = Generated.Enum.good + optional Generated.Enum generated = 2; - // One or more metric tags can be used to enable tracking portion of or all bits in - // a corresponding header field for metrics per each applicable value. These would appear - // as tagged metrics in corresponding flow metrics. - repeated PatternFlowGtpv1NextExtensionHeaderTypeMetricTag metric_tags = 7; + // A custom checksum value + optional uint32 custom = 3; } // integer counter pattern -message PatternFlowGtpExtensionExtensionLengthCounter { +message PatternFlowPppAddressCounter { // Description missing in models - // default = 0 + // default = 255 optional uint32 start = 1; // Description missing in models @@ -16817,7 +19770,7 @@ message PatternFlowGtpExtensionExtensionLengthCounter { // Metric tag can be used to enable tracking portion of or all bits in a corresponding // header field for metrics per each applicable value. These would appear as tagged // metrics in corresponding flow metrics. -message PatternFlowGtpExtensionExtensionLengthMetricTag { +message PatternFlowPppAddressMetricTag { // Name used to identify the metrics associated with the values applicable for configured // offset and length inside corresponding header field @@ -16834,10 +19787,8 @@ message PatternFlowGtpExtensionExtensionLengthMetricTag { optional uint32 length = 3; } -// This field states the length of this extension header, including the length, the -// contents, and the next extension header field, in 4-octet units, so the length of -// the extension must always be a multiple of 4. -message PatternFlowGtpExtensionExtensionLength { +// PPP address +message PatternFlowPppAddress { message Choice { enum Enum { @@ -16853,45 +19804,45 @@ message PatternFlowGtpExtensionExtensionLength { optional Choice.Enum choice = 1; // Description missing in models - // default = 0 + // default = 255 optional uint32 value = 2; // Description missing in models - // default = [0] + // default = [255] repeated uint32 values = 3; // Description missing in models - PatternFlowGtpExtensionExtensionLengthCounter increment = 5; + PatternFlowPppAddressCounter increment = 5; // Description missing in models - PatternFlowGtpExtensionExtensionLengthCounter decrement = 6; + PatternFlowPppAddressCounter decrement = 6; // One or more metric tags can be used to enable tracking portion of or all bits in // a corresponding header field for metrics per each applicable value. These would appear // as tagged metrics in corresponding flow metrics. - repeated PatternFlowGtpExtensionExtensionLengthMetricTag metric_tags = 7; + repeated PatternFlowPppAddressMetricTag metric_tags = 7; } // integer counter pattern -message PatternFlowGtpExtensionContentsCounter { +message PatternFlowPppControlCounter { // Description missing in models - // default = 0 - optional uint64 start = 1; + // default = 3 + optional uint32 start = 1; // Description missing in models // default = 1 - optional uint64 step = 2; + optional uint32 step = 2; // Description missing in models // default = 1 - optional uint64 count = 3; + optional uint32 count = 3; } // Metric tag can be used to enable tracking portion of or all bits in a corresponding // header field for metrics per each applicable value. These would appear as tagged // metrics in corresponding flow metrics. -message PatternFlowGtpExtensionContentsMetricTag { +message PatternFlowPppControlMetricTag { // Name used to identify the metrics associated with the values applicable for configured // offset and length inside corresponding header field @@ -16900,16 +19851,16 @@ message PatternFlowGtpExtensionContentsMetricTag { // Offset in bits relative to start of corresponding header field // default = 0 - optional uint64 offset = 2; + optional uint32 offset = 2; // Number of bits to track for metrics starting from configured offset of corresponding // header field - // default = 48 - optional uint64 length = 3; + // default = 8 + optional uint32 length = 3; } -// The extension header contents -message PatternFlowGtpExtensionContents { +// PPP control +message PatternFlowPppControl { message Choice { enum Enum { @@ -16925,30 +19876,30 @@ message PatternFlowGtpExtensionContents { optional Choice.Enum choice = 1; // Description missing in models - // default = 0 - optional uint64 value = 2; + // default = 3 + optional uint32 value = 2; // Description missing in models - // default = [0] - repeated uint64 values = 3; + // default = [3] + repeated uint32 values = 3; // Description missing in models - PatternFlowGtpExtensionContentsCounter increment = 5; + PatternFlowPppControlCounter increment = 5; // Description missing in models - PatternFlowGtpExtensionContentsCounter decrement = 6; + PatternFlowPppControlCounter decrement = 6; // One or more metric tags can be used to enable tracking portion of or all bits in // a corresponding header field for metrics per each applicable value. These would appear // as tagged metrics in corresponding flow metrics. - repeated PatternFlowGtpExtensionContentsMetricTag metric_tags = 7; + repeated PatternFlowPppControlMetricTag metric_tags = 7; } // integer counter pattern -message PatternFlowGtpExtensionNextExtensionHeaderCounter { +message PatternFlowPppProtocolTypeCounter { // Description missing in models - // default = 0 + // default = 33 optional uint32 start = 1; // Description missing in models @@ -16963,7 +19914,7 @@ message PatternFlowGtpExtensionNextExtensionHeaderCounter { // Metric tag can be used to enable tracking portion of or all bits in a corresponding // header field for metrics per each applicable value. These would appear as tagged // metrics in corresponding flow metrics. -message PatternFlowGtpExtensionNextExtensionHeaderMetricTag { +message PatternFlowPppProtocolTypeMetricTag { // Name used to identify the metrics associated with the values applicable for configured // offset and length inside corresponding header field @@ -16976,52 +19927,58 @@ message PatternFlowGtpExtensionNextExtensionHeaderMetricTag { // Number of bits to track for metrics starting from configured offset of corresponding // header field - // default = 8 + // default = 16 optional uint32 length = 3; } -// It states the type of the next extension, or 0 if no next extension exists. This -// permits chaining several next extension headers. -message PatternFlowGtpExtensionNextExtensionHeader { +// PPP protocol type +message PatternFlowPppProtocolType { message Choice { enum Enum { unspecified = 0; value = 2; values = 3; + auto = 1; increment = 4; decrement = 5; } } // Description missing in models - // default = Choice.Enum.value + // default = Choice.Enum.auto optional Choice.Enum choice = 1; // Description missing in models - // default = 0 + // default = 33 optional uint32 value = 2; // Description missing in models - // default = [0] + // default = [33] repeated uint32 values = 3; + // The OTG implementation can provide a system generated + // value for this property. If the OTG is unable to generate a value + // the default value must be used. + // default = 33 + optional uint32 auto = 4; + // Description missing in models - PatternFlowGtpExtensionNextExtensionHeaderCounter increment = 5; + PatternFlowPppProtocolTypeCounter increment = 6; // Description missing in models - PatternFlowGtpExtensionNextExtensionHeaderCounter decrement = 6; + PatternFlowPppProtocolTypeCounter decrement = 7; // One or more metric tags can be used to enable tracking portion of or all bits in // a corresponding header field for metrics per each applicable value. These would appear // as tagged metrics in corresponding flow metrics. - repeated PatternFlowGtpExtensionNextExtensionHeaderMetricTag metric_tags = 7; + repeated PatternFlowPppProtocolTypeMetricTag metric_tags = 8; } // integer counter pattern -message PatternFlowGtpv2VersionCounter { +message PatternFlowIgmpv1VersionCounter { // Description missing in models - // default = 2 + // default = 1 optional uint32 start = 1; // Description missing in models @@ -17036,7 +19993,7 @@ message PatternFlowGtpv2VersionCounter { // Metric tag can be used to enable tracking portion of or all bits in a corresponding // header field for metrics per each applicable value. These would appear as tagged // metrics in corresponding flow metrics. -message PatternFlowGtpv2VersionMetricTag { +message PatternFlowIgmpv1VersionMetricTag { // Name used to identify the metrics associated with the values applicable for configured // offset and length inside corresponding header field @@ -17049,12 +20006,12 @@ message PatternFlowGtpv2VersionMetricTag { // Number of bits to track for metrics starting from configured offset of corresponding // header field - // default = 3 + // default = 4 optional uint32 length = 3; } // Version number -message PatternFlowGtpv2Version { +message PatternFlowIgmpv1Version { message Choice { enum Enum { @@ -17070,30 +20027,30 @@ message PatternFlowGtpv2Version { optional Choice.Enum choice = 1; // Description missing in models - // default = 2 + // default = 1 optional uint32 value = 2; // Description missing in models - // default = [2] + // default = [1] repeated uint32 values = 3; // Description missing in models - PatternFlowGtpv2VersionCounter increment = 5; + PatternFlowIgmpv1VersionCounter increment = 5; // Description missing in models - PatternFlowGtpv2VersionCounter decrement = 6; + PatternFlowIgmpv1VersionCounter decrement = 6; // One or more metric tags can be used to enable tracking portion of or all bits in // a corresponding header field for metrics per each applicable value. These would appear // as tagged metrics in corresponding flow metrics. - repeated PatternFlowGtpv2VersionMetricTag metric_tags = 7; + repeated PatternFlowIgmpv1VersionMetricTag metric_tags = 7; } // integer counter pattern -message PatternFlowGtpv2PiggybackingFlagCounter { +message PatternFlowIgmpv1TypeCounter { // Description missing in models - // default = 0 + // default = 1 optional uint32 start = 1; // Description missing in models @@ -17108,7 +20065,7 @@ message PatternFlowGtpv2PiggybackingFlagCounter { // Metric tag can be used to enable tracking portion of or all bits in a corresponding // header field for metrics per each applicable value. These would appear as tagged // metrics in corresponding flow metrics. -message PatternFlowGtpv2PiggybackingFlagMetricTag { +message PatternFlowIgmpv1TypeMetricTag { // Name used to identify the metrics associated with the values applicable for configured // offset and length inside corresponding header field @@ -17121,13 +20078,12 @@ message PatternFlowGtpv2PiggybackingFlagMetricTag { // Number of bits to track for metrics starting from configured offset of corresponding // header field - // default = 1 + // default = 4 optional uint32 length = 3; } -// If piggybacking_flag is set to 1 then another GTP-C message with its own header shall -// be present at the end of the current message -message PatternFlowGtpv2PiggybackingFlag { +// Type of message +message PatternFlowIgmpv1Type { message Choice { enum Enum { @@ -17143,27 +20099,27 @@ message PatternFlowGtpv2PiggybackingFlag { optional Choice.Enum choice = 1; // Description missing in models - // default = 0 + // default = 1 optional uint32 value = 2; // Description missing in models - // default = [0] + // default = [1] repeated uint32 values = 3; // Description missing in models - PatternFlowGtpv2PiggybackingFlagCounter increment = 5; + PatternFlowIgmpv1TypeCounter increment = 5; // Description missing in models - PatternFlowGtpv2PiggybackingFlagCounter decrement = 6; + PatternFlowIgmpv1TypeCounter decrement = 6; // One or more metric tags can be used to enable tracking portion of or all bits in // a corresponding header field for metrics per each applicable value. These would appear // as tagged metrics in corresponding flow metrics. - repeated PatternFlowGtpv2PiggybackingFlagMetricTag metric_tags = 7; + repeated PatternFlowIgmpv1TypeMetricTag metric_tags = 7; } // integer counter pattern -message PatternFlowGtpv2TeidFlagCounter { +message PatternFlowIgmpv1UnusedCounter { // Description missing in models // default = 0 @@ -17181,7 +20137,7 @@ message PatternFlowGtpv2TeidFlagCounter { // Metric tag can be used to enable tracking portion of or all bits in a corresponding // header field for metrics per each applicable value. These would appear as tagged // metrics in corresponding flow metrics. -message PatternFlowGtpv2TeidFlagMetricTag { +message PatternFlowIgmpv1UnusedMetricTag { // Name used to identify the metrics associated with the values applicable for configured // offset and length inside corresponding header field @@ -17194,14 +20150,12 @@ message PatternFlowGtpv2TeidFlagMetricTag { // Number of bits to track for metrics starting from configured offset of corresponding // header field - // default = 1 + // default = 8 optional uint32 length = 3; } -// If teid_flag is set to 1 then the TEID field will be present between the message -// length and the sequence number. All messages except Echo and Echo reply require TEID -// to be present -message PatternFlowGtpv2TeidFlag { +// Unused +message PatternFlowIgmpv1Unused { message Choice { enum Enum { @@ -17225,27 +20179,56 @@ message PatternFlowGtpv2TeidFlag { repeated uint32 values = 3; // Description missing in models - PatternFlowGtpv2TeidFlagCounter increment = 5; + PatternFlowIgmpv1UnusedCounter increment = 5; // Description missing in models - PatternFlowGtpv2TeidFlagCounter decrement = 6; + PatternFlowIgmpv1UnusedCounter decrement = 6; // One or more metric tags can be used to enable tracking portion of or all bits in // a corresponding header field for metrics per each applicable value. These would appear // as tagged metrics in corresponding flow metrics. - repeated PatternFlowGtpv2TeidFlagMetricTag metric_tags = 7; + repeated PatternFlowIgmpv1UnusedMetricTag metric_tags = 7; } -// integer counter pattern -message PatternFlowGtpv2Spare1Counter { +// Checksum +message PatternFlowIgmpv1Checksum { + + message Choice { + enum Enum { + unspecified = 0; + generated = 1; + custom = 2; + } + } + // The type of checksum + // default = Choice.Enum.generated + optional Choice.Enum choice = 1; + + message Generated { + enum Enum { + unspecified = 0; + good = 1; + bad = 2; + } + } + // A system generated checksum value + // default = Generated.Enum.good + optional Generated.Enum generated = 2; + + // A custom checksum value + optional uint32 custom = 3; +} + +// ipv4 counter pattern +message PatternFlowIgmpv1GroupAddressCounter { // Description missing in models - // default = 0 - optional uint32 start = 1; + // default = 0.0.0.0 + optional string start = 1; // Description missing in models - // default = 1 - optional uint32 step = 2; + // default = 0.0.0.1 + optional string step = 2; // Description missing in models // default = 1 @@ -17255,7 +20238,7 @@ message PatternFlowGtpv2Spare1Counter { // Metric tag can be used to enable tracking portion of or all bits in a corresponding // header field for metrics per each applicable value. These would appear as tagged // metrics in corresponding flow metrics. -message PatternFlowGtpv2Spare1MetricTag { +message PatternFlowIgmpv1GroupAddressMetricTag { // Name used to identify the metrics associated with the values applicable for configured // offset and length inside corresponding header field @@ -17268,12 +20251,12 @@ message PatternFlowGtpv2Spare1MetricTag { // Number of bits to track for metrics starting from configured offset of corresponding // header field - // default = 3 + // default = 32 optional uint32 length = 3; } -// A 3-bit reserved field (must be 0). -message PatternFlowGtpv2Spare1 { +// Group address +message PatternFlowIgmpv1GroupAddress { message Choice { enum Enum { @@ -17289,30 +20272,30 @@ message PatternFlowGtpv2Spare1 { optional Choice.Enum choice = 1; // Description missing in models - // default = 0 - optional uint32 value = 2; + // default = 0.0.0.0 + optional string value = 2; // Description missing in models - // default = [0] - repeated uint32 values = 3; + // default = ['0.0.0.0'] + repeated string values = 3; // Description missing in models - PatternFlowGtpv2Spare1Counter increment = 5; + PatternFlowIgmpv1GroupAddressCounter increment = 5; // Description missing in models - PatternFlowGtpv2Spare1Counter decrement = 6; + PatternFlowIgmpv1GroupAddressCounter decrement = 6; // One or more metric tags can be used to enable tracking portion of or all bits in // a corresponding header field for metrics per each applicable value. These would appear // as tagged metrics in corresponding flow metrics. - repeated PatternFlowGtpv2Spare1MetricTag metric_tags = 7; + repeated PatternFlowIgmpv1GroupAddressMetricTag metric_tags = 7; } // integer counter pattern -message PatternFlowGtpv2MessageTypeCounter { +message PatternFlowMplsLabelCounter { // Description missing in models - // default = 0 + // default = 16 optional uint32 start = 1; // Description missing in models @@ -17327,7 +20310,7 @@ message PatternFlowGtpv2MessageTypeCounter { // Metric tag can be used to enable tracking portion of or all bits in a corresponding // header field for metrics per each applicable value. These would appear as tagged // metrics in corresponding flow metrics. -message PatternFlowGtpv2MessageTypeMetricTag { +message PatternFlowMplsLabelMetricTag { // Name used to identify the metrics associated with the values applicable for configured // offset and length inside corresponding header field @@ -17340,49 +20323,55 @@ message PatternFlowGtpv2MessageTypeMetricTag { // Number of bits to track for metrics starting from configured offset of corresponding // header field - // default = 8 + // default = 20 optional uint32 length = 3; } -// An 8-bit field that indicates the type of GTP message. Different types of messages -// are defined in 3GPP TS 29.060 section 7.1 -message PatternFlowGtpv2MessageType { +// Label of routers +message PatternFlowMplsLabel { message Choice { enum Enum { unspecified = 0; value = 2; values = 3; + auto = 1; increment = 4; decrement = 5; } } // Description missing in models - // default = Choice.Enum.value + // default = Choice.Enum.auto optional Choice.Enum choice = 1; // Description missing in models - // default = 0 + // default = 16 optional uint32 value = 2; // Description missing in models - // default = [0] + // default = [16] repeated uint32 values = 3; + // The OTG implementation can provide a system generated + // value for this property. If the OTG is unable to generate a value + // the default value must be used. + // default = 16 + optional uint32 auto = 4; + // Description missing in models - PatternFlowGtpv2MessageTypeCounter increment = 5; + PatternFlowMplsLabelCounter increment = 6; // Description missing in models - PatternFlowGtpv2MessageTypeCounter decrement = 6; + PatternFlowMplsLabelCounter decrement = 7; // One or more metric tags can be used to enable tracking portion of or all bits in // a corresponding header field for metrics per each applicable value. These would appear // as tagged metrics in corresponding flow metrics. - repeated PatternFlowGtpv2MessageTypeMetricTag metric_tags = 7; + repeated PatternFlowMplsLabelMetricTag metric_tags = 8; } // integer counter pattern -message PatternFlowGtpv2MessageLengthCounter { +message PatternFlowMplsTrafficClassCounter { // Description missing in models // default = 0 @@ -17400,7 +20389,7 @@ message PatternFlowGtpv2MessageLengthCounter { // Metric tag can be used to enable tracking portion of or all bits in a corresponding // header field for metrics per each applicable value. These would appear as tagged // metrics in corresponding flow metrics. -message PatternFlowGtpv2MessageLengthMetricTag { +message PatternFlowMplsTrafficClassMetricTag { // Name used to identify the metrics associated with the values applicable for configured // offset and length inside corresponding header field @@ -17413,13 +20402,12 @@ message PatternFlowGtpv2MessageLengthMetricTag { // Number of bits to track for metrics starting from configured offset of corresponding // header field - // default = 16 + // default = 3 optional uint32 length = 3; } -// A 16-bit field that indicates the length of the payload in bytes, excluding the mandatory -// GTP-c header (first 4 bytes). Includes the TEID and sequence_number if they are present. -message PatternFlowGtpv2MessageLength { +// Traffic class +message PatternFlowMplsTrafficClass { message Choice { enum Enum { @@ -17443,22 +20431,22 @@ message PatternFlowGtpv2MessageLength { repeated uint32 values = 3; // Description missing in models - PatternFlowGtpv2MessageLengthCounter increment = 5; + PatternFlowMplsTrafficClassCounter increment = 5; // Description missing in models - PatternFlowGtpv2MessageLengthCounter decrement = 6; + PatternFlowMplsTrafficClassCounter decrement = 6; // One or more metric tags can be used to enable tracking portion of or all bits in // a corresponding header field for metrics per each applicable value. These would appear // as tagged metrics in corresponding flow metrics. - repeated PatternFlowGtpv2MessageLengthMetricTag metric_tags = 7; + repeated PatternFlowMplsTrafficClassMetricTag metric_tags = 7; } // integer counter pattern -message PatternFlowGtpv2TeidCounter { +message PatternFlowMplsBottomOfStackCounter { // Description missing in models - // default = 0 + // default = 1 optional uint32 start = 1; // Description missing in models @@ -17473,7 +20461,7 @@ message PatternFlowGtpv2TeidCounter { // Metric tag can be used to enable tracking portion of or all bits in a corresponding // header field for metrics per each applicable value. These would appear as tagged // metrics in corresponding flow metrics. -message PatternFlowGtpv2TeidMetricTag { +message PatternFlowMplsBottomOfStackMetricTag { // Name used to identify the metrics associated with the values applicable for configured // offset and length inside corresponding header field @@ -17486,52 +20474,58 @@ message PatternFlowGtpv2TeidMetricTag { // Number of bits to track for metrics starting from configured offset of corresponding // header field - // default = 32 + // default = 1 optional uint32 length = 3; } -// Tunnel endpoint identifier. A 32-bit (4-octet) field used to multiplex different -// connections in the same GTP tunnel. Is present only if the teid_flag is set. -message PatternFlowGtpv2Teid { +// Bottom of stack +message PatternFlowMplsBottomOfStack { message Choice { enum Enum { unspecified = 0; value = 2; values = 3; + auto = 1; increment = 4; decrement = 5; } } // Description missing in models - // default = Choice.Enum.value + // default = Choice.Enum.auto optional Choice.Enum choice = 1; // Description missing in models - // default = 0 + // default = 1 optional uint32 value = 2; // Description missing in models - // default = [0] + // default = [1] repeated uint32 values = 3; + // The OTG implementation can provide a system generated + // value for this property. If the OTG is unable to generate a value + // the default value must be used. + // default = 1 + optional uint32 auto = 4; + // Description missing in models - PatternFlowGtpv2TeidCounter increment = 5; + PatternFlowMplsBottomOfStackCounter increment = 6; // Description missing in models - PatternFlowGtpv2TeidCounter decrement = 6; + PatternFlowMplsBottomOfStackCounter decrement = 7; // One or more metric tags can be used to enable tracking portion of or all bits in // a corresponding header field for metrics per each applicable value. These would appear // as tagged metrics in corresponding flow metrics. - repeated PatternFlowGtpv2TeidMetricTag metric_tags = 7; + repeated PatternFlowMplsBottomOfStackMetricTag metric_tags = 8; } // integer counter pattern -message PatternFlowGtpv2SequenceNumberCounter { +message PatternFlowMplsTimeToLiveCounter { // Description missing in models - // default = 0 + // default = 64 optional uint32 start = 1; // Description missing in models @@ -17546,7 +20540,7 @@ message PatternFlowGtpv2SequenceNumberCounter { // Metric tag can be used to enable tracking portion of or all bits in a corresponding // header field for metrics per each applicable value. These would appear as tagged // metrics in corresponding flow metrics. -message PatternFlowGtpv2SequenceNumberMetricTag { +message PatternFlowMplsTimeToLiveMetricTag { // Name used to identify the metrics associated with the values applicable for configured // offset and length inside corresponding header field @@ -17559,12 +20553,12 @@ message PatternFlowGtpv2SequenceNumberMetricTag { // Number of bits to track for metrics starting from configured offset of corresponding // header field - // default = 24 + // default = 8 optional uint32 length = 3; } -// The sequence number -message PatternFlowGtpv2SequenceNumber { +// Time to live +message PatternFlowMplsTimeToLive { message Choice { enum Enum { @@ -17580,30 +20574,30 @@ message PatternFlowGtpv2SequenceNumber { optional Choice.Enum choice = 1; // Description missing in models - // default = 0 + // default = 64 optional uint32 value = 2; // Description missing in models - // default = [0] + // default = [64] repeated uint32 values = 3; // Description missing in models - PatternFlowGtpv2SequenceNumberCounter increment = 5; + PatternFlowMplsTimeToLiveCounter increment = 5; // Description missing in models - PatternFlowGtpv2SequenceNumberCounter decrement = 6; + PatternFlowMplsTimeToLiveCounter decrement = 6; // One or more metric tags can be used to enable tracking portion of or all bits in // a corresponding header field for metrics per each applicable value. These would appear // as tagged metrics in corresponding flow metrics. - repeated PatternFlowGtpv2SequenceNumberMetricTag metric_tags = 7; + repeated PatternFlowMplsTimeToLiveMetricTag metric_tags = 7; } // integer counter pattern -message PatternFlowGtpv2Spare2Counter { +message PatternFlowRsvpVersionCounter { // Description missing in models - // default = 0 + // default = 1 optional uint32 start = 1; // Description missing in models @@ -17615,28 +20609,8 @@ message PatternFlowGtpv2Spare2Counter { optional uint32 count = 3; } -// Metric tag can be used to enable tracking portion of or all bits in a corresponding -// header field for metrics per each applicable value. These would appear as tagged -// metrics in corresponding flow metrics. -message PatternFlowGtpv2Spare2MetricTag { - - // Name used to identify the metrics associated with the values applicable for configured - // offset and length inside corresponding header field - // required = true - optional string name = 1; - - // Offset in bits relative to start of corresponding header field - // default = 0 - optional uint32 offset = 2; - - // Number of bits to track for metrics starting from configured offset of corresponding - // header field - // default = 8 - optional uint32 length = 3; -} - -// Reserved field -message PatternFlowGtpv2Spare2 { +// Protocol Version number. +message PatternFlowRsvpVersion { message Choice { enum Enum { @@ -17652,30 +20626,56 @@ message PatternFlowGtpv2Spare2 { optional Choice.Enum choice = 1; // Description missing in models - // default = 0 + // default = 1 optional uint32 value = 2; // Description missing in models - // default = [0] + // default = [1] repeated uint32 values = 3; // Description missing in models - PatternFlowGtpv2Spare2Counter increment = 5; + PatternFlowRsvpVersionCounter increment = 5; // Description missing in models - PatternFlowGtpv2Spare2Counter decrement = 6; + PatternFlowRsvpVersionCounter decrement = 6; +} - // One or more metric tags can be used to enable tracking portion of or all bits in - // a corresponding header field for metrics per each applicable value. These would appear - // as tagged metrics in corresponding flow metrics. - repeated PatternFlowGtpv2Spare2MetricTag metric_tags = 7; +// The one's complement of the one's complement sum of the message, with the checksum +// field replaced by zero for the purpose of computing the checksum. An all-zero value +// means that no checksum was transmitted. +message PatternFlowRsvpRsvpChecksum { + + message Choice { + enum Enum { + unspecified = 0; + generated = 1; + custom = 2; + } + } + // The type of checksum + // default = Choice.Enum.generated + optional Choice.Enum choice = 1; + + message Generated { + enum Enum { + unspecified = 0; + good = 1; + bad = 2; + } + } + // A system generated checksum value + // default = Generated.Enum.good + optional Generated.Enum generated = 2; + + // A custom checksum value + optional uint32 custom = 3; } // integer counter pattern -message PatternFlowArpHardwareTypeCounter { +message PatternFlowRsvpTimeToLiveCounter { // Description missing in models - // default = 1 + // default = 0 optional uint32 start = 1; // Description missing in models @@ -17687,28 +20687,8 @@ message PatternFlowArpHardwareTypeCounter { optional uint32 count = 3; } -// Metric tag can be used to enable tracking portion of or all bits in a corresponding -// header field for metrics per each applicable value. These would appear as tagged -// metrics in corresponding flow metrics. -message PatternFlowArpHardwareTypeMetricTag { - - // Name used to identify the metrics associated with the values applicable for configured - // offset and length inside corresponding header field - // required = true - optional string name = 1; - - // Offset in bits relative to start of corresponding header field - // default = 0 - optional uint32 offset = 2; - - // Number of bits to track for metrics starting from configured offset of corresponding - // header field - // default = 16 - optional uint32 length = 3; -} - -// Network link protocol type -message PatternFlowArpHardwareType { +// The IP time-to-live(TTL) value with which the message was sent. +message PatternFlowRsvpTimeToLive { message Choice { enum Enum { @@ -17724,30 +20704,25 @@ message PatternFlowArpHardwareType { optional Choice.Enum choice = 1; // Description missing in models - // default = 1 + // default = 0 optional uint32 value = 2; // Description missing in models - // default = [1] + // default = [0] repeated uint32 values = 3; // Description missing in models - PatternFlowArpHardwareTypeCounter increment = 5; + PatternFlowRsvpTimeToLiveCounter increment = 5; // Description missing in models - PatternFlowArpHardwareTypeCounter decrement = 6; - - // One or more metric tags can be used to enable tracking portion of or all bits in - // a corresponding header field for metrics per each applicable value. These would appear - // as tagged metrics in corresponding flow metrics. - repeated PatternFlowArpHardwareTypeMetricTag metric_tags = 7; + PatternFlowRsvpTimeToLiveCounter decrement = 6; } // integer counter pattern -message PatternFlowArpProtocolTypeCounter { +message PatternFlowRsvpReservedCounter { // Description missing in models - // default = 2048 + // default = 0 optional uint32 start = 1; // Description missing in models @@ -17759,28 +20734,8 @@ message PatternFlowArpProtocolTypeCounter { optional uint32 count = 3; } -// Metric tag can be used to enable tracking portion of or all bits in a corresponding -// header field for metrics per each applicable value. These would appear as tagged -// metrics in corresponding flow metrics. -message PatternFlowArpProtocolTypeMetricTag { - - // Name used to identify the metrics associated with the values applicable for configured - // offset and length inside corresponding header field - // required = true - optional string name = 1; - - // Offset in bits relative to start of corresponding header field - // default = 0 - optional uint32 offset = 2; - - // Number of bits to track for metrics starting from configured offset of corresponding - // header field - // default = 16 - optional uint32 length = 3; -} - -// The internetwork protocol for which the ARP request is intended -message PatternFlowArpProtocolType { +// Reserved +message PatternFlowRsvpReserved { message Choice { enum Enum { @@ -17796,63 +20751,85 @@ message PatternFlowArpProtocolType { optional Choice.Enum choice = 1; // Description missing in models - // default = 2048 + // default = 0 optional uint32 value = 2; // Description missing in models - // default = [2048] + // default = [0] repeated uint32 values = 3; // Description missing in models - PatternFlowArpProtocolTypeCounter increment = 5; + PatternFlowRsvpReservedCounter increment = 5; // Description missing in models - PatternFlowArpProtocolTypeCounter decrement = 6; - - // One or more metric tags can be used to enable tracking portion of or all bits in - // a corresponding header field for metrics per each applicable value. These would appear - // as tagged metrics in corresponding flow metrics. - repeated PatternFlowArpProtocolTypeMetricTag metric_tags = 7; + PatternFlowRsvpReservedCounter decrement = 6; } -// integer counter pattern -message PatternFlowArpHardwareLengthCounter { +// ipv4 counter pattern +message PatternFlowRSVPPathSessionLspTunnelIpv4Ipv4TunnelEndPointAddressCounter { // Description missing in models - // default = 6 - optional uint32 start = 1; + // default = 0.0.0.0 + optional string start = 1; // Description missing in models - // default = 1 - optional uint32 step = 2; + // default = 0.0.0.1 + optional string step = 2; // Description missing in models // default = 1 optional uint32 count = 3; } -// Metric tag can be used to enable tracking portion of or all bits in a corresponding -// header field for metrics per each applicable value. These would appear as tagged -// metrics in corresponding flow metrics. -message PatternFlowArpHardwareLengthMetricTag { +// IPv4 address of the egress node for the tunnel. +message PatternFlowRSVPPathSessionLspTunnelIpv4Ipv4TunnelEndPointAddress { - // Name used to identify the metrics associated with the values applicable for configured - // offset and length inside corresponding header field - // required = true - optional string name = 1; + message Choice { + enum Enum { + unspecified = 0; + value = 2; + values = 3; + increment = 4; + decrement = 5; + } + } + // Description missing in models + // default = Choice.Enum.value + optional Choice.Enum choice = 1; - // Offset in bits relative to start of corresponding header field + // Description missing in models + // default = 0.0.0.0 + optional string value = 2; + + // Description missing in models + // default = ['0.0.0.0'] + repeated string values = 3; + + // Description missing in models + PatternFlowRSVPPathSessionLspTunnelIpv4Ipv4TunnelEndPointAddressCounter increment = 5; + + // Description missing in models + PatternFlowRSVPPathSessionLspTunnelIpv4Ipv4TunnelEndPointAddressCounter decrement = 6; +} + +// integer counter pattern +message PatternFlowRSVPPathSessionLspTunnelIpv4ReservedCounter { + + // Description missing in models // default = 0 - optional uint32 offset = 2; + optional uint32 start = 1; - // Number of bits to track for metrics starting from configured offset of corresponding - // header field - // default = 8 - optional uint32 length = 3; + // Description missing in models + // default = 1 + optional uint32 step = 2; + + // Description missing in models + // default = 1 + optional uint32 count = 3; } -// Length (in octets) of a hardware address -message PatternFlowArpHardwareLength { +// Reserved field, MUST be zero. +message PatternFlowRSVPPathSessionLspTunnelIpv4Reserved { message Choice { enum Enum { @@ -17868,30 +20845,25 @@ message PatternFlowArpHardwareLength { optional Choice.Enum choice = 1; // Description missing in models - // default = 6 + // default = 0 optional uint32 value = 2; // Description missing in models - // default = [6] + // default = [0] repeated uint32 values = 3; // Description missing in models - PatternFlowArpHardwareLengthCounter increment = 5; + PatternFlowRSVPPathSessionLspTunnelIpv4ReservedCounter increment = 5; // Description missing in models - PatternFlowArpHardwareLengthCounter decrement = 6; - - // One or more metric tags can be used to enable tracking portion of or all bits in - // a corresponding header field for metrics per each applicable value. These would appear - // as tagged metrics in corresponding flow metrics. - repeated PatternFlowArpHardwareLengthMetricTag metric_tags = 7; + PatternFlowRSVPPathSessionLspTunnelIpv4ReservedCounter decrement = 6; } // integer counter pattern -message PatternFlowArpProtocolLengthCounter { +message PatternFlowRSVPPathSessionLspTunnelIpv4TunnelIdCounter { // Description missing in models - // default = 4 + // default = 0 optional uint32 start = 1; // Description missing in models @@ -17903,28 +20875,9 @@ message PatternFlowArpProtocolLengthCounter { optional uint32 count = 3; } -// Metric tag can be used to enable tracking portion of or all bits in a corresponding -// header field for metrics per each applicable value. These would appear as tagged -// metrics in corresponding flow metrics. -message PatternFlowArpProtocolLengthMetricTag { - - // Name used to identify the metrics associated with the values applicable for configured - // offset and length inside corresponding header field - // required = true - optional string name = 1; - - // Offset in bits relative to start of corresponding header field - // default = 0 - optional uint32 offset = 2; - - // Number of bits to track for metrics starting from configured offset of corresponding - // header field - // default = 8 - optional uint32 length = 3; -} - -// Length (in octets) of internetwork addresses -message PatternFlowArpProtocolLength { +// A 16-bit identifier used in the SESSION that remains constant over the life of the +// tunnel. +message PatternFlowRSVPPathSessionLspTunnelIpv4TunnelId { message Choice { enum Enum { @@ -17940,30 +20893,25 @@ message PatternFlowArpProtocolLength { optional Choice.Enum choice = 1; // Description missing in models - // default = 4 + // default = 0 optional uint32 value = 2; // Description missing in models - // default = [4] + // default = [0] repeated uint32 values = 3; // Description missing in models - PatternFlowArpProtocolLengthCounter increment = 5; + PatternFlowRSVPPathSessionLspTunnelIpv4TunnelIdCounter increment = 5; // Description missing in models - PatternFlowArpProtocolLengthCounter decrement = 6; - - // One or more metric tags can be used to enable tracking portion of or all bits in - // a corresponding header field for metrics per each applicable value. These would appear - // as tagged metrics in corresponding flow metrics. - repeated PatternFlowArpProtocolLengthMetricTag metric_tags = 7; + PatternFlowRSVPPathSessionLspTunnelIpv4TunnelIdCounter decrement = 6; } // integer counter pattern -message PatternFlowArpOperationCounter { +message PatternFlowRSVPPathSessionLspTunnelIpv4ExtendedTunnelIdCounter { // Description missing in models - // default = 1 + // default = 0 optional uint32 start = 1; // Description missing in models @@ -17975,28 +20923,11 @@ message PatternFlowArpOperationCounter { optional uint32 count = 3; } -// Metric tag can be used to enable tracking portion of or all bits in a corresponding -// header field for metrics per each applicable value. These would appear as tagged -// metrics in corresponding flow metrics. -message PatternFlowArpOperationMetricTag { - - // Name used to identify the metrics associated with the values applicable for configured - // offset and length inside corresponding header field - // required = true - optional string name = 1; - - // Offset in bits relative to start of corresponding header field - // default = 0 - optional uint32 offset = 2; - - // Number of bits to track for metrics starting from configured offset of corresponding - // header field - // default = 16 - optional uint32 length = 3; -} - -// The operation that the sender is performing -message PatternFlowArpOperation { +// A 32-bit identifier used in the SESSION that remains constant over the life of the +// tunnel. Normally set to all zeros. Ingress nodes that wish to narrow the scope of +// a SESSION to the ingress-egress pair may place their IPv4 address here as a globally +// unique identifier. +message PatternFlowRSVPPathSessionLspTunnelIpv4ExtendedTunnelId { message Choice { enum Enum { @@ -18012,34 +20943,29 @@ message PatternFlowArpOperation { optional Choice.Enum choice = 1; // Description missing in models - // default = 1 + // default = 0 optional uint32 value = 2; // Description missing in models - // default = [1] + // default = [0] repeated uint32 values = 3; // Description missing in models - PatternFlowArpOperationCounter increment = 5; + PatternFlowRSVPPathSessionLspTunnelIpv4ExtendedTunnelIdCounter increment = 5; // Description missing in models - PatternFlowArpOperationCounter decrement = 6; - - // One or more metric tags can be used to enable tracking portion of or all bits in - // a corresponding header field for metrics per each applicable value. These would appear - // as tagged metrics in corresponding flow metrics. - repeated PatternFlowArpOperationMetricTag metric_tags = 7; + PatternFlowRSVPPathSessionLspTunnelIpv4ExtendedTunnelIdCounter decrement = 6; } -// mac counter pattern -message PatternFlowArpSenderHardwareAddrCounter { +// ipv4 counter pattern +message PatternFlowRSVPPathRsvpHopIpv4Ipv4NextPreviousHopAddressCounter { // Description missing in models - // default = 00:00:00:00:00:00 + // default = 0.0.0.0 optional string start = 1; // Description missing in models - // default = 00:00:00:00:00:01 + // default = 0.0.0.1 optional string step = 2; // Description missing in models @@ -18047,28 +20973,9 @@ message PatternFlowArpSenderHardwareAddrCounter { optional uint32 count = 3; } -// Metric tag can be used to enable tracking portion of or all bits in a corresponding -// header field for metrics per each applicable value. These would appear as tagged -// metrics in corresponding flow metrics. -message PatternFlowArpSenderHardwareAddrMetricTag { - - // Name used to identify the metrics associated with the values applicable for configured - // offset and length inside corresponding header field - // required = true - optional string name = 1; - - // Offset in bits relative to start of corresponding header field - // default = 0 - optional uint32 offset = 2; - - // Number of bits to track for metrics starting from configured offset of corresponding - // header field - // default = 48 - optional uint32 length = 3; -} - -// Media address of the sender -message PatternFlowArpSenderHardwareAddr { +// The IPv4 address of the interface through which the last RSVP-knowledgeable hop forwarded +// this message. +message PatternFlowRSVPPathRsvpHopIpv4Ipv4NextPreviousHopAddress { message Choice { enum Enum { @@ -18084,63 +20991,41 @@ message PatternFlowArpSenderHardwareAddr { optional Choice.Enum choice = 1; // Description missing in models - // default = 00:00:00:00:00:00 + // default = 0.0.0.0 optional string value = 2; // Description missing in models - // default = ['00:00:00:00:00:00'] + // default = ['0.0.0.0'] repeated string values = 3; // Description missing in models - PatternFlowArpSenderHardwareAddrCounter increment = 5; + PatternFlowRSVPPathRsvpHopIpv4Ipv4NextPreviousHopAddressCounter increment = 5; // Description missing in models - PatternFlowArpSenderHardwareAddrCounter decrement = 6; - - // One or more metric tags can be used to enable tracking portion of or all bits in - // a corresponding header field for metrics per each applicable value. These would appear - // as tagged metrics in corresponding flow metrics. - repeated PatternFlowArpSenderHardwareAddrMetricTag metric_tags = 7; + PatternFlowRSVPPathRsvpHopIpv4Ipv4NextPreviousHopAddressCounter decrement = 6; } -// ipv4 counter pattern -message PatternFlowArpSenderProtocolAddrCounter { +// integer counter pattern +message PatternFlowRSVPPathRsvpHopIpv4LogicalInterfaceHandleCounter { // Description missing in models - // default = 0.0.0.0 - optional string start = 1; + // default = 0 + optional uint32 start = 1; // Description missing in models - // default = 0.0.0.1 - optional string step = 2; + // default = 1 + optional uint32 step = 2; // Description missing in models // default = 1 optional uint32 count = 3; } -// Metric tag can be used to enable tracking portion of or all bits in a corresponding -// header field for metrics per each applicable value. These would appear as tagged -// metrics in corresponding flow metrics. -message PatternFlowArpSenderProtocolAddrMetricTag { - - // Name used to identify the metrics associated with the values applicable for configured - // offset and length inside corresponding header field - // required = true - optional string name = 1; - - // Offset in bits relative to start of corresponding header field - // default = 0 - optional uint32 offset = 2; - - // Number of bits to track for metrics starting from configured offset of corresponding - // header field - // default = 32 - optional uint32 length = 3; -} - -// Internetwork address of the sender -message PatternFlowArpSenderProtocolAddr { +// Logical Interface Handle (LIH) is used to distinguish logical outgoing interfaces. +// A node receiving an LIH in a Path message saves its value and returns it in the HOP +// objects of subsequent Resv messages sent to the node that originated the LIH. The +// LIH should be identically zero if there is no logical interface handle. +message PatternFlowRSVPPathRsvpHopIpv4LogicalInterfaceHandle { message Choice { enum Enum { @@ -18156,63 +21041,87 @@ message PatternFlowArpSenderProtocolAddr { optional Choice.Enum choice = 1; // Description missing in models - // default = 0.0.0.0 - optional string value = 2; + // default = 0 + optional uint32 value = 2; // Description missing in models - // default = ['0.0.0.0'] - repeated string values = 3; + // default = [0] + repeated uint32 values = 3; // Description missing in models - PatternFlowArpSenderProtocolAddrCounter increment = 5; + PatternFlowRSVPPathRsvpHopIpv4LogicalInterfaceHandleCounter increment = 5; // Description missing in models - PatternFlowArpSenderProtocolAddrCounter decrement = 6; - - // One or more metric tags can be used to enable tracking portion of or all bits in - // a corresponding header field for metrics per each applicable value. These would appear - // as tagged metrics in corresponding flow metrics. - repeated PatternFlowArpSenderProtocolAddrMetricTag metric_tags = 7; + PatternFlowRSVPPathRsvpHopIpv4LogicalInterfaceHandleCounter decrement = 6; } -// mac counter pattern -message PatternFlowArpTargetHardwareAddrCounter { +// integer counter pattern +message PatternFlowRSVPPathTimeValuesType1RefreshPeriodRCounter { // Description missing in models - // default = 00:00:00:00:00:00 - optional string start = 1; + // default = 0 + optional uint32 start = 1; // Description missing in models - // default = 00:00:00:00:00:01 - optional string step = 2; + // default = 1 + optional uint32 step = 2; // Description missing in models // default = 1 optional uint32 count = 3; } -// Metric tag can be used to enable tracking portion of or all bits in a corresponding -// header field for metrics per each applicable value. These would appear as tagged -// metrics in corresponding flow metrics. -message PatternFlowArpTargetHardwareAddrMetricTag { +// The refresh timeout period R used to generate this message;in milliseconds. +message PatternFlowRSVPPathTimeValuesType1RefreshPeriodR { - // Name used to identify the metrics associated with the values applicable for configured - // offset and length inside corresponding header field - // required = true - optional string name = 1; + message Choice { + enum Enum { + unspecified = 0; + value = 2; + values = 3; + increment = 4; + decrement = 5; + } + } + // Description missing in models + // default = Choice.Enum.value + optional Choice.Enum choice = 1; - // Offset in bits relative to start of corresponding header field + // Description missing in models // default = 0 - optional uint32 offset = 2; + optional uint32 value = 2; - // Number of bits to track for metrics starting from configured offset of corresponding - // header field - // default = 48 - optional uint32 length = 3; + // Description missing in models + // default = [0] + repeated uint32 values = 3; + + // Description missing in models + PatternFlowRSVPPathTimeValuesType1RefreshPeriodRCounter increment = 5; + + // Description missing in models + PatternFlowRSVPPathTimeValuesType1RefreshPeriodRCounter decrement = 6; } -// Media address of the target -message PatternFlowArpTargetHardwareAddr { +// integer counter pattern +message PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixLBitCounter { + + // Description missing in models + // default = 0 + optional uint32 start = 1; + + // Description missing in models + // default = 1 + optional uint32 step = 2; + + // Description missing in models + // default = 1 + optional uint32 count = 3; +} + +// The L bit is an attribute of the subobject.The L bit is set if the subobject represents +// a loose hop in the explicit route. If the bit is not set, the subobject represents +// a strict hop in the explicit route. +message PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixLBit { message Choice { enum Enum { @@ -18228,27 +21137,22 @@ message PatternFlowArpTargetHardwareAddr { optional Choice.Enum choice = 1; // Description missing in models - // default = 00:00:00:00:00:00 - optional string value = 2; - - // Description missing in models - // default = ['00:00:00:00:00:00'] - repeated string values = 3; + // default = 0 + optional uint32 value = 2; // Description missing in models - PatternFlowArpTargetHardwareAddrCounter increment = 5; + // default = [0] + repeated uint32 values = 3; // Description missing in models - PatternFlowArpTargetHardwareAddrCounter decrement = 6; + PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixLBitCounter increment = 5; - // One or more metric tags can be used to enable tracking portion of or all bits in - // a corresponding header field for metrics per each applicable value. These would appear - // as tagged metrics in corresponding flow metrics. - repeated PatternFlowArpTargetHardwareAddrMetricTag metric_tags = 7; + // Description missing in models + PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixLBitCounter decrement = 6; } // ipv4 counter pattern -message PatternFlowArpTargetProtocolAddrCounter { +message PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixIpv4AddressCounter { // Description missing in models // default = 0.0.0.0 @@ -18263,28 +21167,9 @@ message PatternFlowArpTargetProtocolAddrCounter { optional uint32 count = 3; } -// Metric tag can be used to enable tracking portion of or all bits in a corresponding -// header field for metrics per each applicable value. These would appear as tagged -// metrics in corresponding flow metrics. -message PatternFlowArpTargetProtocolAddrMetricTag { - - // Name used to identify the metrics associated with the values applicable for configured - // offset and length inside corresponding header field - // required = true - optional string name = 1; - - // Offset in bits relative to start of corresponding header field - // default = 0 - optional uint32 offset = 2; - - // Number of bits to track for metrics starting from configured offset of corresponding - // header field - // default = 32 - optional uint32 length = 3; -} - -// Internetwork address of the target -message PatternFlowArpTargetProtocolAddr { +// This IPv4 address is treated as a prefix based on the prefix length value below. +// Bits beyond the prefix are ignored on receipt and SHOULD be set to zero on transmission. +message PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixIpv4Address { message Choice { enum Enum { @@ -18308,22 +21193,17 @@ message PatternFlowArpTargetProtocolAddr { repeated string values = 3; // Description missing in models - PatternFlowArpTargetProtocolAddrCounter increment = 5; + PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixIpv4AddressCounter increment = 5; // Description missing in models - PatternFlowArpTargetProtocolAddrCounter decrement = 6; - - // One or more metric tags can be used to enable tracking portion of or all bits in - // a corresponding header field for metrics per each applicable value. These would appear - // as tagged metrics in corresponding flow metrics. - repeated PatternFlowArpTargetProtocolAddrMetricTag metric_tags = 7; + PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixIpv4AddressCounter decrement = 6; } // integer counter pattern -message PatternFlowIcmpEchoTypeCounter { +message PatternFlowRSVPPathExplicitRouteType1FourByteASNumberLBitCounter { // Description missing in models - // default = 8 + // default = 0 optional uint32 start = 1; // Description missing in models @@ -18335,28 +21215,10 @@ message PatternFlowIcmpEchoTypeCounter { optional uint32 count = 3; } -// Metric tag can be used to enable tracking portion of or all bits in a corresponding -// header field for metrics per each applicable value. These would appear as tagged -// metrics in corresponding flow metrics. -message PatternFlowIcmpEchoTypeMetricTag { - - // Name used to identify the metrics associated with the values applicable for configured - // offset and length inside corresponding header field - // required = true - optional string name = 1; - - // Offset in bits relative to start of corresponding header field - // default = 0 - optional uint32 offset = 2; - - // Number of bits to track for metrics starting from configured offset of corresponding - // header field - // default = 8 - optional uint32 length = 3; -} - -// The type of ICMP echo packet -message PatternFlowIcmpEchoType { +// The L bit is an attribute of the subobject.The L bit is set if the subobject represents +// a loose hop in the explicit route. If the bit is not set, the subobject represents +// a strict hop in the explicit route. +message PatternFlowRSVPPathExplicitRouteType1FourByteASNumberLBit { message Choice { enum Enum { @@ -18372,27 +21234,22 @@ message PatternFlowIcmpEchoType { optional Choice.Enum choice = 1; // Description missing in models - // default = 8 + // default = 0 optional uint32 value = 2; // Description missing in models - // default = [8] + // default = [0] repeated uint32 values = 3; // Description missing in models - PatternFlowIcmpEchoTypeCounter increment = 5; + PatternFlowRSVPPathExplicitRouteType1FourByteASNumberLBitCounter increment = 5; // Description missing in models - PatternFlowIcmpEchoTypeCounter decrement = 6; - - // One or more metric tags can be used to enable tracking portion of or all bits in - // a corresponding header field for metrics per each applicable value. These would appear - // as tagged metrics in corresponding flow metrics. - repeated PatternFlowIcmpEchoTypeMetricTag metric_tags = 7; + PatternFlowRSVPPathExplicitRouteType1FourByteASNumberLBitCounter decrement = 6; } // integer counter pattern -message PatternFlowIcmpEchoCodeCounter { +message PatternFlowRSVPPathExplicitRouteType1FourByteASNumberReservedCounter { // Description missing in models // default = 0 @@ -18407,28 +21264,8 @@ message PatternFlowIcmpEchoCodeCounter { optional uint32 count = 3; } -// Metric tag can be used to enable tracking portion of or all bits in a corresponding -// header field for metrics per each applicable value. These would appear as tagged -// metrics in corresponding flow metrics. -message PatternFlowIcmpEchoCodeMetricTag { - - // Name used to identify the metrics associated with the values applicable for configured - // offset and length inside corresponding header field - // required = true - optional string name = 1; - - // Offset in bits relative to start of corresponding header field - // default = 0 - optional uint32 offset = 2; - - // Number of bits to track for metrics starting from configured offset of corresponding - // header field - // default = 8 - optional uint32 length = 3; -} - -// The ICMP subtype. The default code for ICMP echo request and reply is 0. -message PatternFlowIcmpEchoCode { +// Reserved. +message PatternFlowRSVPPathExplicitRouteType1FourByteASNumberReserved { message Choice { enum Enum { @@ -18452,48 +21289,14 @@ message PatternFlowIcmpEchoCode { repeated uint32 values = 3; // Description missing in models - PatternFlowIcmpEchoCodeCounter increment = 5; + PatternFlowRSVPPathExplicitRouteType1FourByteASNumberReservedCounter increment = 5; // Description missing in models - PatternFlowIcmpEchoCodeCounter decrement = 6; - - // One or more metric tags can be used to enable tracking portion of or all bits in - // a corresponding header field for metrics per each applicable value. These would appear - // as tagged metrics in corresponding flow metrics. - repeated PatternFlowIcmpEchoCodeMetricTag metric_tags = 7; -} - -// ICMP checksum -message PatternFlowIcmpEchoChecksum { - - message Choice { - enum Enum { - unspecified = 0; - generated = 1; - custom = 2; - } - } - // The type of checksum - // default = Choice.Enum.generated - optional Choice.Enum choice = 1; - - message Generated { - enum Enum { - unspecified = 0; - good = 1; - bad = 2; - } - } - // A system generated checksum value - // default = Generated.Enum.good - optional Generated.Enum generated = 2; - - // A custom checksum value - optional uint32 custom = 3; + PatternFlowRSVPPathExplicitRouteType1FourByteASNumberReservedCounter decrement = 6; } // integer counter pattern -message PatternFlowIcmpEchoIdentifierCounter { +message PatternFlowRSVPPathLabelRequestWithoutLabelRangeReservedCounter { // Description missing in models // default = 0 @@ -18508,28 +21311,9 @@ message PatternFlowIcmpEchoIdentifierCounter { optional uint32 count = 3; } -// Metric tag can be used to enable tracking portion of or all bits in a corresponding -// header field for metrics per each applicable value. These would appear as tagged -// metrics in corresponding flow metrics. -message PatternFlowIcmpEchoIdentifierMetricTag { - - // Name used to identify the metrics associated with the values applicable for configured - // offset and length inside corresponding header field - // required = true - optional string name = 1; - - // Offset in bits relative to start of corresponding header field - // default = 0 - optional uint32 offset = 2; - - // Number of bits to track for metrics starting from configured offset of corresponding - // header field - // default = 16 - optional uint32 length = 3; -} - -// ICMP identifier -message PatternFlowIcmpEchoIdentifier { +// This field is reserved. It MUST be set to zero on transmission and MUST be ignored +// on receipt. +message PatternFlowRSVPPathLabelRequestWithoutLabelRangeReserved { message Choice { enum Enum { @@ -18553,19 +21337,14 @@ message PatternFlowIcmpEchoIdentifier { repeated uint32 values = 3; // Description missing in models - PatternFlowIcmpEchoIdentifierCounter increment = 5; + PatternFlowRSVPPathLabelRequestWithoutLabelRangeReservedCounter increment = 5; // Description missing in models - PatternFlowIcmpEchoIdentifierCounter decrement = 6; - - // One or more metric tags can be used to enable tracking portion of or all bits in - // a corresponding header field for metrics per each applicable value. These would appear - // as tagged metrics in corresponding flow metrics. - repeated PatternFlowIcmpEchoIdentifierMetricTag metric_tags = 7; + PatternFlowRSVPPathLabelRequestWithoutLabelRangeReservedCounter decrement = 6; } // integer counter pattern -message PatternFlowIcmpEchoSequenceNumberCounter { +message PatternFlowRSVPPathLabelRequestWithoutLabelRangeL3pidCounter { // Description missing in models // default = 0 @@ -18580,28 +21359,9 @@ message PatternFlowIcmpEchoSequenceNumberCounter { optional uint32 count = 3; } -// Metric tag can be used to enable tracking portion of or all bits in a corresponding -// header field for metrics per each applicable value. These would appear as tagged -// metrics in corresponding flow metrics. -message PatternFlowIcmpEchoSequenceNumberMetricTag { - - // Name used to identify the metrics associated with the values applicable for configured - // offset and length inside corresponding header field - // required = true - optional string name = 1; - - // Offset in bits relative to start of corresponding header field - // default = 0 - optional uint32 offset = 2; - - // Number of bits to track for metrics starting from configured offset of corresponding - // header field - // default = 16 - optional uint32 length = 3; -} - -// ICMP sequence number -message PatternFlowIcmpEchoSequenceNumber { +// An identifier of the layer 3 protocol using this path. Standard Ethertype values +// are used. +message PatternFlowRSVPPathLabelRequestWithoutLabelRangeL3pid { message Choice { enum Enum { @@ -18625,84 +21385,30 @@ message PatternFlowIcmpEchoSequenceNumber { repeated uint32 values = 3; // Description missing in models - PatternFlowIcmpEchoSequenceNumberCounter increment = 5; + PatternFlowRSVPPathLabelRequestWithoutLabelRangeL3pidCounter increment = 5; // Description missing in models - PatternFlowIcmpEchoSequenceNumberCounter decrement = 6; - - // One or more metric tags can be used to enable tracking portion of or all bits in - // a corresponding header field for metrics per each applicable value. These would appear - // as tagged metrics in corresponding flow metrics. - repeated PatternFlowIcmpEchoSequenceNumberMetricTag metric_tags = 7; -} - -// ICMP checksum -message PatternFlowIcmpCommonChecksum { - - message Choice { - enum Enum { - unspecified = 0; - generated = 1; - custom = 2; - } - } - // The type of checksum - // default = Choice.Enum.generated - optional Choice.Enum choice = 1; - - message Generated { - enum Enum { - unspecified = 0; - good = 1; - bad = 2; - } - } - // A system generated checksum value - // default = Generated.Enum.good - optional Generated.Enum generated = 2; - - // A custom checksum value - optional uint32 custom = 3; + PatternFlowRSVPPathLabelRequestWithoutLabelRangeL3pidCounter decrement = 6; } -// integer counter pattern -message PatternFlowIcmpNextFieldsIdentifierCounter { +// ipv4 counter pattern +message PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Ipv4TunnelSenderAddressCounter { // Description missing in models - // default = 0 - optional uint32 start = 1; + // default = 0.0.0.0 + optional string start = 1; // Description missing in models - // default = 1 - optional uint32 step = 2; + // default = 0.0.0.1 + optional string step = 2; // Description missing in models // default = 1 optional uint32 count = 3; } -// Metric tag can be used to enable tracking portion of or all bits in a corresponding -// header field for metrics per each applicable value. These would appear as tagged -// metrics in corresponding flow metrics. -message PatternFlowIcmpNextFieldsIdentifierMetricTag { - - // Name used to identify the metrics associated with the values applicable for configured - // offset and length inside corresponding header field - // required = true - optional string name = 1; - - // Offset in bits relative to start of corresponding header field - // default = 0 - optional uint32 offset = 2; - - // Number of bits to track for metrics starting from configured offset of corresponding - // header field - // default = 16 - optional uint32 length = 3; -} - -// ICMP identifier -message PatternFlowIcmpNextFieldsIdentifier { +// IPv4 address for a sender node. +message PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Ipv4TunnelSenderAddress { message Choice { enum Enum { @@ -18718,27 +21424,22 @@ message PatternFlowIcmpNextFieldsIdentifier { optional Choice.Enum choice = 1; // Description missing in models - // default = 0 - optional uint32 value = 2; + // default = 0.0.0.0 + optional string value = 2; // Description missing in models - // default = [0] - repeated uint32 values = 3; + // default = ['0.0.0.0'] + repeated string values = 3; // Description missing in models - PatternFlowIcmpNextFieldsIdentifierCounter increment = 5; + PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Ipv4TunnelSenderAddressCounter increment = 5; // Description missing in models - PatternFlowIcmpNextFieldsIdentifierCounter decrement = 6; - - // One or more metric tags can be used to enable tracking portion of or all bits in - // a corresponding header field for metrics per each applicable value. These would appear - // as tagged metrics in corresponding flow metrics. - repeated PatternFlowIcmpNextFieldsIdentifierMetricTag metric_tags = 7; + PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Ipv4TunnelSenderAddressCounter decrement = 6; } // integer counter pattern -message PatternFlowIcmpNextFieldsSequenceNumberCounter { +message PatternFlowRSVPPathSenderTemplateLspTunnelIpv4ReservedCounter { // Description missing in models // default = 0 @@ -18753,28 +21454,8 @@ message PatternFlowIcmpNextFieldsSequenceNumberCounter { optional uint32 count = 3; } -// Metric tag can be used to enable tracking portion of or all bits in a corresponding -// header field for metrics per each applicable value. These would appear as tagged -// metrics in corresponding flow metrics. -message PatternFlowIcmpNextFieldsSequenceNumberMetricTag { - - // Name used to identify the metrics associated with the values applicable for configured - // offset and length inside corresponding header field - // required = true - optional string name = 1; - - // Offset in bits relative to start of corresponding header field - // default = 0 - optional uint32 offset = 2; - - // Number of bits to track for metrics starting from configured offset of corresponding - // header field - // default = 16 - optional uint32 length = 3; -} - -// ICMP sequence number -message PatternFlowIcmpNextFieldsSequenceNumber { +// Reserved field, MUST be zero. +message PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Reserved { message Choice { enum Enum { @@ -18798,22 +21479,17 @@ message PatternFlowIcmpNextFieldsSequenceNumber { repeated uint32 values = 3; // Description missing in models - PatternFlowIcmpNextFieldsSequenceNumberCounter increment = 5; + PatternFlowRSVPPathSenderTemplateLspTunnelIpv4ReservedCounter increment = 5; // Description missing in models - PatternFlowIcmpNextFieldsSequenceNumberCounter decrement = 6; - - // One or more metric tags can be used to enable tracking portion of or all bits in - // a corresponding header field for metrics per each applicable value. These would appear - // as tagged metrics in corresponding flow metrics. - repeated PatternFlowIcmpNextFieldsSequenceNumberMetricTag metric_tags = 7; + PatternFlowRSVPPathSenderTemplateLspTunnelIpv4ReservedCounter decrement = 6; } // integer counter pattern -message PatternFlowIcmpv6EchoTypeCounter { +message PatternFlowRSVPPathSenderTemplateLspTunnelIpv4LspIdCounter { // Description missing in models - // default = 128 + // default = 0 optional uint32 start = 1; // Description missing in models @@ -18825,28 +21501,9 @@ message PatternFlowIcmpv6EchoTypeCounter { optional uint32 count = 3; } -// Metric tag can be used to enable tracking portion of or all bits in a corresponding -// header field for metrics per each applicable value. These would appear as tagged -// metrics in corresponding flow metrics. -message PatternFlowIcmpv6EchoTypeMetricTag { - - // Name used to identify the metrics associated with the values applicable for configured - // offset and length inside corresponding header field - // required = true - optional string name = 1; - - // Offset in bits relative to start of corresponding header field - // default = 0 - optional uint32 offset = 2; - - // Number of bits to track for metrics starting from configured offset of corresponding - // header field - // default = 8 - optional uint32 length = 3; -} - -// ICMPv6 echo type -message PatternFlowIcmpv6EchoType { +// A 16-bit identifier used in the SENDER_TEMPLATE that can be changed to allow a sender +// to share resources with itself. +message PatternFlowRSVPPathSenderTemplateLspTunnelIpv4LspId { message Choice { enum Enum { @@ -18862,27 +21519,22 @@ message PatternFlowIcmpv6EchoType { optional Choice.Enum choice = 1; // Description missing in models - // default = 128 + // default = 0 optional uint32 value = 2; // Description missing in models - // default = [128] + // default = [0] repeated uint32 values = 3; // Description missing in models - PatternFlowIcmpv6EchoTypeCounter increment = 5; + PatternFlowRSVPPathSenderTemplateLspTunnelIpv4LspIdCounter increment = 5; // Description missing in models - PatternFlowIcmpv6EchoTypeCounter decrement = 6; - - // One or more metric tags can be used to enable tracking portion of or all bits in - // a corresponding header field for metrics per each applicable value. These would appear - // as tagged metrics in corresponding flow metrics. - repeated PatternFlowIcmpv6EchoTypeMetricTag metric_tags = 7; + PatternFlowRSVPPathSenderTemplateLspTunnelIpv4LspIdCounter decrement = 6; } // integer counter pattern -message PatternFlowIcmpv6EchoCodeCounter { +message PatternFlowRSVPPathSenderTspecIntServVersionCounter { // Description missing in models // default = 0 @@ -18897,28 +21549,8 @@ message PatternFlowIcmpv6EchoCodeCounter { optional uint32 count = 3; } -// Metric tag can be used to enable tracking portion of or all bits in a corresponding -// header field for metrics per each applicable value. These would appear as tagged -// metrics in corresponding flow metrics. -message PatternFlowIcmpv6EchoCodeMetricTag { - - // Name used to identify the metrics associated with the values applicable for configured - // offset and length inside corresponding header field - // required = true - optional string name = 1; - - // Offset in bits relative to start of corresponding header field - // default = 0 - optional uint32 offset = 2; - - // Number of bits to track for metrics starting from configured offset of corresponding - // header field - // default = 8 - optional uint32 length = 3; -} - -// ICMPv6 echo sub type -message PatternFlowIcmpv6EchoCode { +// Message format version number. +message PatternFlowRSVPPathSenderTspecIntServVersion { message Choice { enum Enum { @@ -18942,19 +21574,14 @@ message PatternFlowIcmpv6EchoCode { repeated uint32 values = 3; // Description missing in models - PatternFlowIcmpv6EchoCodeCounter increment = 5; + PatternFlowRSVPPathSenderTspecIntServVersionCounter increment = 5; // Description missing in models - PatternFlowIcmpv6EchoCodeCounter decrement = 6; - - // One or more metric tags can be used to enable tracking portion of or all bits in - // a corresponding header field for metrics per each applicable value. These would appear - // as tagged metrics in corresponding flow metrics. - repeated PatternFlowIcmpv6EchoCodeMetricTag metric_tags = 7; + PatternFlowRSVPPathSenderTspecIntServVersionCounter decrement = 6; } // integer counter pattern -message PatternFlowIcmpv6EchoIdentifierCounter { +message PatternFlowRSVPPathSenderTspecIntServReserved1Counter { // Description missing in models // default = 0 @@ -18969,28 +21596,8 @@ message PatternFlowIcmpv6EchoIdentifierCounter { optional uint32 count = 3; } -// Metric tag can be used to enable tracking portion of or all bits in a corresponding -// header field for metrics per each applicable value. These would appear as tagged -// metrics in corresponding flow metrics. -message PatternFlowIcmpv6EchoIdentifierMetricTag { - - // Name used to identify the metrics associated with the values applicable for configured - // offset and length inside corresponding header field - // required = true - optional string name = 1; - - // Offset in bits relative to start of corresponding header field - // default = 0 - optional uint32 offset = 2; - - // Number of bits to track for metrics starting from configured offset of corresponding - // header field - // default = 16 - optional uint32 length = 3; -} - -// ICMPv6 echo identifier -message PatternFlowIcmpv6EchoIdentifier { +// Reserved. +message PatternFlowRSVPPathSenderTspecIntServReserved1 { message Choice { enum Enum { @@ -19014,22 +21621,17 @@ message PatternFlowIcmpv6EchoIdentifier { repeated uint32 values = 3; // Description missing in models - PatternFlowIcmpv6EchoIdentifierCounter increment = 5; + PatternFlowRSVPPathSenderTspecIntServReserved1Counter increment = 5; // Description missing in models - PatternFlowIcmpv6EchoIdentifierCounter decrement = 6; - - // One or more metric tags can be used to enable tracking portion of or all bits in - // a corresponding header field for metrics per each applicable value. These would appear - // as tagged metrics in corresponding flow metrics. - repeated PatternFlowIcmpv6EchoIdentifierMetricTag metric_tags = 7; + PatternFlowRSVPPathSenderTspecIntServReserved1Counter decrement = 6; } // integer counter pattern -message PatternFlowIcmpv6EchoSequenceNumberCounter { +message PatternFlowRSVPPathSenderTspecIntServOverallLengthCounter { // Description missing in models - // default = 0 + // default = 7 optional uint32 start = 1; // Description missing in models @@ -19041,28 +21643,8 @@ message PatternFlowIcmpv6EchoSequenceNumberCounter { optional uint32 count = 3; } -// Metric tag can be used to enable tracking portion of or all bits in a corresponding -// header field for metrics per each applicable value. These would appear as tagged -// metrics in corresponding flow metrics. -message PatternFlowIcmpv6EchoSequenceNumberMetricTag { - - // Name used to identify the metrics associated with the values applicable for configured - // offset and length inside corresponding header field - // required = true - optional string name = 1; - - // Offset in bits relative to start of corresponding header field - // default = 0 - optional uint32 offset = 2; - - // Number of bits to track for metrics starting from configured offset of corresponding - // header field - // default = 16 - optional uint32 length = 3; -} - -// ICMPv6 echo sequence number -message PatternFlowIcmpv6EchoSequenceNumber { +// Overall length (7 words not including header). +message PatternFlowRSVPPathSenderTspecIntServOverallLength { message Choice { enum Enum { @@ -19078,121 +21660,38 @@ message PatternFlowIcmpv6EchoSequenceNumber { optional Choice.Enum choice = 1; // Description missing in models - // default = 0 + // default = 7 optional uint32 value = 2; // Description missing in models - // default = [0] + // default = [7] repeated uint32 values = 3; // Description missing in models - PatternFlowIcmpv6EchoSequenceNumberCounter increment = 5; + PatternFlowRSVPPathSenderTspecIntServOverallLengthCounter increment = 5; // Description missing in models - PatternFlowIcmpv6EchoSequenceNumberCounter decrement = 6; - - // One or more metric tags can be used to enable tracking portion of or all bits in - // a corresponding header field for metrics per each applicable value. These would appear - // as tagged metrics in corresponding flow metrics. - repeated PatternFlowIcmpv6EchoSequenceNumberMetricTag metric_tags = 7; -} - -// ICMPv6 checksum -message PatternFlowIcmpv6EchoChecksum { - - message Choice { - enum Enum { - unspecified = 0; - generated = 1; - custom = 2; - } - } - // The type of checksum - // default = Choice.Enum.generated - optional Choice.Enum choice = 1; - - message Generated { - enum Enum { - unspecified = 0; - good = 1; - bad = 2; - } - } - // A system generated checksum value - // default = Generated.Enum.good - optional Generated.Enum generated = 2; - - // A custom checksum value - optional uint32 custom = 3; -} - -// ICMPv6 checksum -message PatternFlowIcmpv6CommonChecksum { - - message Choice { - enum Enum { - unspecified = 0; - generated = 1; - custom = 2; - } - } - // The type of checksum - // default = Choice.Enum.generated - optional Choice.Enum choice = 1; - - message Generated { - enum Enum { - unspecified = 0; - good = 1; - bad = 2; - } - } - // A system generated checksum value - // default = Generated.Enum.good - optional Generated.Enum generated = 2; - - // A custom checksum value - optional uint32 custom = 3; + PatternFlowRSVPPathSenderTspecIntServOverallLengthCounter decrement = 6; } // integer counter pattern -message PatternFlowPppAddressCounter { +message PatternFlowRSVPPathSenderTspecIntServServiceHeaderCounter { // Description missing in models - // default = 255 + // default = 1 optional uint32 start = 1; // Description missing in models // default = 1 optional uint32 step = 2; - // Description missing in models - // default = 1 - optional uint32 count = 3; -} - -// Metric tag can be used to enable tracking portion of or all bits in a corresponding -// header field for metrics per each applicable value. These would appear as tagged -// metrics in corresponding flow metrics. -message PatternFlowPppAddressMetricTag { - - // Name used to identify the metrics associated with the values applicable for configured - // offset and length inside corresponding header field - // required = true - optional string name = 1; - - // Offset in bits relative to start of corresponding header field - // default = 0 - optional uint32 offset = 2; - - // Number of bits to track for metrics starting from configured offset of corresponding - // header field - // default = 8 - optional uint32 length = 3; + // Description missing in models + // default = 1 + optional uint32 count = 3; } -// PPP address -message PatternFlowPppAddress { +// Service header, service number - '1' (Generic information) if in a PATH message. +message PatternFlowRSVPPathSenderTspecIntServServiceHeader { message Choice { enum Enum { @@ -19208,30 +21707,25 @@ message PatternFlowPppAddress { optional Choice.Enum choice = 1; // Description missing in models - // default = 255 + // default = 1 optional uint32 value = 2; // Description missing in models - // default = [255] + // default = [1] repeated uint32 values = 3; // Description missing in models - PatternFlowPppAddressCounter increment = 5; + PatternFlowRSVPPathSenderTspecIntServServiceHeaderCounter increment = 5; // Description missing in models - PatternFlowPppAddressCounter decrement = 6; - - // One or more metric tags can be used to enable tracking portion of or all bits in - // a corresponding header field for metrics per each applicable value. These would appear - // as tagged metrics in corresponding flow metrics. - repeated PatternFlowPppAddressMetricTag metric_tags = 7; + PatternFlowRSVPPathSenderTspecIntServServiceHeaderCounter decrement = 6; } // integer counter pattern -message PatternFlowPppControlCounter { +message PatternFlowRSVPPathSenderTspecIntServZeroBitCounter { // Description missing in models - // default = 3 + // default = 0 optional uint32 start = 1; // Description missing in models @@ -19243,28 +21737,8 @@ message PatternFlowPppControlCounter { optional uint32 count = 3; } -// Metric tag can be used to enable tracking portion of or all bits in a corresponding -// header field for metrics per each applicable value. These would appear as tagged -// metrics in corresponding flow metrics. -message PatternFlowPppControlMetricTag { - - // Name used to identify the metrics associated with the values applicable for configured - // offset and length inside corresponding header field - // required = true - optional string name = 1; - - // Offset in bits relative to start of corresponding header field - // default = 0 - optional uint32 offset = 2; - - // Number of bits to track for metrics starting from configured offset of corresponding - // header field - // default = 8 - optional uint32 length = 3; -} - -// PPP control -message PatternFlowPppControl { +// MUST be 0. +message PatternFlowRSVPPathSenderTspecIntServZeroBit { message Choice { enum Enum { @@ -19280,30 +21754,25 @@ message PatternFlowPppControl { optional Choice.Enum choice = 1; // Description missing in models - // default = 3 + // default = 0 optional uint32 value = 2; // Description missing in models - // default = [3] + // default = [0] repeated uint32 values = 3; // Description missing in models - PatternFlowPppControlCounter increment = 5; + PatternFlowRSVPPathSenderTspecIntServZeroBitCounter increment = 5; // Description missing in models - PatternFlowPppControlCounter decrement = 6; - - // One or more metric tags can be used to enable tracking portion of or all bits in - // a corresponding header field for metrics per each applicable value. These would appear - // as tagged metrics in corresponding flow metrics. - repeated PatternFlowPppControlMetricTag metric_tags = 7; + PatternFlowRSVPPathSenderTspecIntServZeroBitCounter decrement = 6; } // integer counter pattern -message PatternFlowPppProtocolTypeCounter { +message PatternFlowRSVPPathSenderTspecIntServReserved2Counter { // Description missing in models - // default = 33 + // default = 0 optional uint32 start = 1; // Description missing in models @@ -19315,74 +21784,42 @@ message PatternFlowPppProtocolTypeCounter { optional uint32 count = 3; } -// Metric tag can be used to enable tracking portion of or all bits in a corresponding -// header field for metrics per each applicable value. These would appear as tagged -// metrics in corresponding flow metrics. -message PatternFlowPppProtocolTypeMetricTag { - - // Name used to identify the metrics associated with the values applicable for configured - // offset and length inside corresponding header field - // required = true - optional string name = 1; - - // Offset in bits relative to start of corresponding header field - // default = 0 - optional uint32 offset = 2; - - // Number of bits to track for metrics starting from configured offset of corresponding - // header field - // default = 16 - optional uint32 length = 3; -} - -// PPP protocol type -message PatternFlowPppProtocolType { +// Reserved. +message PatternFlowRSVPPathSenderTspecIntServReserved2 { message Choice { enum Enum { unspecified = 0; value = 2; values = 3; - auto = 1; increment = 4; decrement = 5; } } // Description missing in models - // default = Choice.Enum.auto + // default = Choice.Enum.value optional Choice.Enum choice = 1; // Description missing in models - // default = 33 + // default = 0 optional uint32 value = 2; // Description missing in models - // default = [33] + // default = [0] repeated uint32 values = 3; - // The OTG implementation can provide a system generated - // value for this property. If the OTG is unable to generate a value - // the default value must be used. - // default = 33 - optional uint32 auto = 4; - // Description missing in models - PatternFlowPppProtocolTypeCounter increment = 6; + PatternFlowRSVPPathSenderTspecIntServReserved2Counter increment = 5; // Description missing in models - PatternFlowPppProtocolTypeCounter decrement = 7; - - // One or more metric tags can be used to enable tracking portion of or all bits in - // a corresponding header field for metrics per each applicable value. These would appear - // as tagged metrics in corresponding flow metrics. - repeated PatternFlowPppProtocolTypeMetricTag metric_tags = 8; + PatternFlowRSVPPathSenderTspecIntServReserved2Counter decrement = 6; } // integer counter pattern -message PatternFlowIgmpv1VersionCounter { +message PatternFlowRSVPPathSenderTspecIntServLengthOfServiceDataCounter { // Description missing in models - // default = 1 + // default = 6 optional uint32 start = 1; // Description missing in models @@ -19394,28 +21831,8 @@ message PatternFlowIgmpv1VersionCounter { optional uint32 count = 3; } -// Metric tag can be used to enable tracking portion of or all bits in a corresponding -// header field for metrics per each applicable value. These would appear as tagged -// metrics in corresponding flow metrics. -message PatternFlowIgmpv1VersionMetricTag { - - // Name used to identify the metrics associated with the values applicable for configured - // offset and length inside corresponding header field - // required = true - optional string name = 1; - - // Offset in bits relative to start of corresponding header field - // default = 0 - optional uint32 offset = 2; - - // Number of bits to track for metrics starting from configured offset of corresponding - // header field - // default = 4 - optional uint32 length = 3; -} - -// Version number -message PatternFlowIgmpv1Version { +// Length of service data, 6 words not including per-service header. +message PatternFlowRSVPPathSenderTspecIntServLengthOfServiceData { message Choice { enum Enum { @@ -19431,30 +21848,25 @@ message PatternFlowIgmpv1Version { optional Choice.Enum choice = 1; // Description missing in models - // default = 1 + // default = 6 optional uint32 value = 2; // Description missing in models - // default = [1] + // default = [6] repeated uint32 values = 3; // Description missing in models - PatternFlowIgmpv1VersionCounter increment = 5; + PatternFlowRSVPPathSenderTspecIntServLengthOfServiceDataCounter increment = 5; // Description missing in models - PatternFlowIgmpv1VersionCounter decrement = 6; - - // One or more metric tags can be used to enable tracking portion of or all bits in - // a corresponding header field for metrics per each applicable value. These would appear - // as tagged metrics in corresponding flow metrics. - repeated PatternFlowIgmpv1VersionMetricTag metric_tags = 7; + PatternFlowRSVPPathSenderTspecIntServLengthOfServiceDataCounter decrement = 6; } // integer counter pattern -message PatternFlowIgmpv1TypeCounter { +message PatternFlowRSVPPathSenderTspecIntServParameterIdTokenBucketTspecCounter { // Description missing in models - // default = 1 + // default = 127 optional uint32 start = 1; // Description missing in models @@ -19466,28 +21878,8 @@ message PatternFlowIgmpv1TypeCounter { optional uint32 count = 3; } -// Metric tag can be used to enable tracking portion of or all bits in a corresponding -// header field for metrics per each applicable value. These would appear as tagged -// metrics in corresponding flow metrics. -message PatternFlowIgmpv1TypeMetricTag { - - // Name used to identify the metrics associated with the values applicable for configured - // offset and length inside corresponding header field - // required = true - optional string name = 1; - - // Offset in bits relative to start of corresponding header field - // default = 0 - optional uint32 offset = 2; - - // Number of bits to track for metrics starting from configured offset of corresponding - // header field - // default = 4 - optional uint32 length = 3; -} - -// Type of message -message PatternFlowIgmpv1Type { +// Parameter ID, parameter 127 (Token Bucket TSpec) +message PatternFlowRSVPPathSenderTspecIntServParameterIdTokenBucketTspec { message Choice { enum Enum { @@ -19503,27 +21895,22 @@ message PatternFlowIgmpv1Type { optional Choice.Enum choice = 1; // Description missing in models - // default = 1 + // default = 127 optional uint32 value = 2; // Description missing in models - // default = [1] + // default = [127] repeated uint32 values = 3; // Description missing in models - PatternFlowIgmpv1TypeCounter increment = 5; + PatternFlowRSVPPathSenderTspecIntServParameterIdTokenBucketTspecCounter increment = 5; // Description missing in models - PatternFlowIgmpv1TypeCounter decrement = 6; - - // One or more metric tags can be used to enable tracking portion of or all bits in - // a corresponding header field for metrics per each applicable value. These would appear - // as tagged metrics in corresponding flow metrics. - repeated PatternFlowIgmpv1TypeMetricTag metric_tags = 7; + PatternFlowRSVPPathSenderTspecIntServParameterIdTokenBucketTspecCounter decrement = 6; } // integer counter pattern -message PatternFlowIgmpv1UnusedCounter { +message PatternFlowRSVPPathSenderTspecIntServParameter127FlagCounter { // Description missing in models // default = 0 @@ -19538,28 +21925,8 @@ message PatternFlowIgmpv1UnusedCounter { optional uint32 count = 3; } -// Metric tag can be used to enable tracking portion of or all bits in a corresponding -// header field for metrics per each applicable value. These would appear as tagged -// metrics in corresponding flow metrics. -message PatternFlowIgmpv1UnusedMetricTag { - - // Name used to identify the metrics associated with the values applicable for configured - // offset and length inside corresponding header field - // required = true - optional string name = 1; - - // Offset in bits relative to start of corresponding header field - // default = 0 - optional uint32 offset = 2; - - // Number of bits to track for metrics starting from configured offset of corresponding - // header field - // default = 8 - optional uint32 length = 3; -} - -// Unused -message PatternFlowIgmpv1Unused { +// Parameter 127 flags (none set) +message PatternFlowRSVPPathSenderTspecIntServParameter127Flag { message Choice { enum Enum { @@ -19583,84 +21950,30 @@ message PatternFlowIgmpv1Unused { repeated uint32 values = 3; // Description missing in models - PatternFlowIgmpv1UnusedCounter increment = 5; - - // Description missing in models - PatternFlowIgmpv1UnusedCounter decrement = 6; - - // One or more metric tags can be used to enable tracking portion of or all bits in - // a corresponding header field for metrics per each applicable value. These would appear - // as tagged metrics in corresponding flow metrics. - repeated PatternFlowIgmpv1UnusedMetricTag metric_tags = 7; -} - -// Checksum -message PatternFlowIgmpv1Checksum { - - message Choice { - enum Enum { - unspecified = 0; - generated = 1; - custom = 2; - } - } - // The type of checksum - // default = Choice.Enum.generated - optional Choice.Enum choice = 1; - - message Generated { - enum Enum { - unspecified = 0; - good = 1; - bad = 2; - } - } - // A system generated checksum value - // default = Generated.Enum.good - optional Generated.Enum generated = 2; - - // A custom checksum value - optional uint32 custom = 3; -} - -// ipv4 counter pattern -message PatternFlowIgmpv1GroupAddressCounter { - - // Description missing in models - // default = 0.0.0.0 - optional string start = 1; - - // Description missing in models - // default = 0.0.0.1 - optional string step = 2; + PatternFlowRSVPPathSenderTspecIntServParameter127FlagCounter increment = 5; // Description missing in models - // default = 1 - optional uint32 count = 3; -} - -// Metric tag can be used to enable tracking portion of or all bits in a corresponding -// header field for metrics per each applicable value. These would appear as tagged -// metrics in corresponding flow metrics. -message PatternFlowIgmpv1GroupAddressMetricTag { - - // Name used to identify the metrics associated with the values applicable for configured - // offset and length inside corresponding header field - // required = true - optional string name = 1; + PatternFlowRSVPPathSenderTspecIntServParameter127FlagCounter decrement = 6; +} - // Offset in bits relative to start of corresponding header field +// integer counter pattern +message PatternFlowRSVPPathSenderTspecIntServParameter127LengthCounter { + + // Description missing in models // default = 0 - optional uint32 offset = 2; + optional uint32 start = 1; - // Number of bits to track for metrics starting from configured offset of corresponding - // header field - // default = 32 - optional uint32 length = 3; + // Description missing in models + // default = 1 + optional uint32 step = 2; + + // Description missing in models + // default = 1 + optional uint32 count = 3; } -// Group address -message PatternFlowIgmpv1GroupAddress { +// Parameter 127 length, 5 words not including per-service header +message PatternFlowRSVPPathSenderTspecIntServParameter127Length { message Choice { enum Enum { @@ -19676,30 +21989,25 @@ message PatternFlowIgmpv1GroupAddress { optional Choice.Enum choice = 1; // Description missing in models - // default = 0.0.0.0 - optional string value = 2; + // default = 0 + optional uint32 value = 2; // Description missing in models - // default = ['0.0.0.0'] - repeated string values = 3; + // default = [0] + repeated uint32 values = 3; // Description missing in models - PatternFlowIgmpv1GroupAddressCounter increment = 5; + PatternFlowRSVPPathSenderTspecIntServParameter127LengthCounter increment = 5; // Description missing in models - PatternFlowIgmpv1GroupAddressCounter decrement = 6; - - // One or more metric tags can be used to enable tracking portion of or all bits in - // a corresponding header field for metrics per each applicable value. These would appear - // as tagged metrics in corresponding flow metrics. - repeated PatternFlowIgmpv1GroupAddressMetricTag metric_tags = 7; + PatternFlowRSVPPathSenderTspecIntServParameter127LengthCounter decrement = 6; } // integer counter pattern -message PatternFlowMplsLabelCounter { +message PatternFlowRSVPPathSenderTspecIntServMinimumPolicedUnitCounter { // Description missing in models - // default = 16 + // default = 0 optional uint32 start = 1; // Description missing in models @@ -19711,71 +22019,40 @@ message PatternFlowMplsLabelCounter { optional uint32 count = 3; } -// Metric tag can be used to enable tracking portion of or all bits in a corresponding -// header field for metrics per each applicable value. These would appear as tagged -// metrics in corresponding flow metrics. -message PatternFlowMplsLabelMetricTag { - - // Name used to identify the metrics associated with the values applicable for configured - // offset and length inside corresponding header field - // required = true - optional string name = 1; - - // Offset in bits relative to start of corresponding header field - // default = 0 - optional uint32 offset = 2; - - // Number of bits to track for metrics starting from configured offset of corresponding - // header field - // default = 20 - optional uint32 length = 3; -} - -// Label of routers -message PatternFlowMplsLabel { +// The minimum policed unit parameter should generally be set equal to the size of the +// smallest packet generated by the application. +message PatternFlowRSVPPathSenderTspecIntServMinimumPolicedUnit { message Choice { enum Enum { unspecified = 0; value = 2; values = 3; - auto = 1; increment = 4; decrement = 5; } } // Description missing in models - // default = Choice.Enum.auto + // default = Choice.Enum.value optional Choice.Enum choice = 1; // Description missing in models - // default = 16 + // default = 0 optional uint32 value = 2; // Description missing in models - // default = [16] + // default = [0] repeated uint32 values = 3; - // The OTG implementation can provide a system generated - // value for this property. If the OTG is unable to generate a value - // the default value must be used. - // default = 16 - optional uint32 auto = 4; - // Description missing in models - PatternFlowMplsLabelCounter increment = 6; + PatternFlowRSVPPathSenderTspecIntServMinimumPolicedUnitCounter increment = 5; // Description missing in models - PatternFlowMplsLabelCounter decrement = 7; - - // One or more metric tags can be used to enable tracking portion of or all bits in - // a corresponding header field for metrics per each applicable value. These would appear - // as tagged metrics in corresponding flow metrics. - repeated PatternFlowMplsLabelMetricTag metric_tags = 8; + PatternFlowRSVPPathSenderTspecIntServMinimumPolicedUnitCounter decrement = 6; } // integer counter pattern -message PatternFlowMplsTrafficClassCounter { +message PatternFlowRSVPPathSenderTspecIntServMaximumPacketSizeCounter { // Description missing in models // default = 0 @@ -19790,28 +22067,58 @@ message PatternFlowMplsTrafficClassCounter { optional uint32 count = 3; } -// Metric tag can be used to enable tracking portion of or all bits in a corresponding -// header field for metrics per each applicable value. These would appear as tagged -// metrics in corresponding flow metrics. -message PatternFlowMplsTrafficClassMetricTag { +// The maximum packet size parameter should be set to the size of the largest packet +// the application might wish to generate. This value must, by definition, be equal +// to or larger than the value of The minimum policed unit. +message PatternFlowRSVPPathSenderTspecIntServMaximumPacketSize { - // Name used to identify the metrics associated with the values applicable for configured - // offset and length inside corresponding header field - // required = true - optional string name = 1; + message Choice { + enum Enum { + unspecified = 0; + value = 2; + values = 3; + increment = 4; + decrement = 5; + } + } + // Description missing in models + // default = Choice.Enum.value + optional Choice.Enum choice = 1; - // Offset in bits relative to start of corresponding header field + // Description missing in models // default = 0 - optional uint32 offset = 2; + optional uint32 value = 2; - // Number of bits to track for metrics starting from configured offset of corresponding - // header field - // default = 3 - optional uint32 length = 3; + // Description missing in models + // default = [0] + repeated uint32 values = 3; + + // Description missing in models + PatternFlowRSVPPathSenderTspecIntServMaximumPacketSizeCounter increment = 5; + + // Description missing in models + PatternFlowRSVPPathSenderTspecIntServMaximumPacketSizeCounter decrement = 6; } -// Traffic class -message PatternFlowMplsTrafficClass { +// ipv4 counter pattern +message PatternFlowRSVPPathRecordRouteType1Ipv4AddressIpv4AddressCounter { + + // Description missing in models + // default = 0.0.0.0 + optional string start = 1; + + // Description missing in models + // default = 0.0.0.1 + optional string step = 2; + + // Description missing in models + // default = 1 + optional uint32 count = 3; +} + +// A 32-bit unicast, host address. Any network-reachable interface address is allowed +// here. Illegal addresses, such as certain loopback addresses, SHOULD NOT be used. +message PatternFlowRSVPPathRecordRouteType1Ipv4AddressIpv4Address { message Choice { enum Enum { @@ -19827,30 +22134,25 @@ message PatternFlowMplsTrafficClass { optional Choice.Enum choice = 1; // Description missing in models - // default = 0 - optional uint32 value = 2; + // default = 0.0.0.0 + optional string value = 2; // Description missing in models - // default = [0] - repeated uint32 values = 3; + // default = ['0.0.0.0'] + repeated string values = 3; // Description missing in models - PatternFlowMplsTrafficClassCounter increment = 5; + PatternFlowRSVPPathRecordRouteType1Ipv4AddressIpv4AddressCounter increment = 5; // Description missing in models - PatternFlowMplsTrafficClassCounter decrement = 6; - - // One or more metric tags can be used to enable tracking portion of or all bits in - // a corresponding header field for metrics per each applicable value. These would appear - // as tagged metrics in corresponding flow metrics. - repeated PatternFlowMplsTrafficClassMetricTag metric_tags = 7; + PatternFlowRSVPPathRecordRouteType1Ipv4AddressIpv4AddressCounter decrement = 6; } // integer counter pattern -message PatternFlowMplsBottomOfStackCounter { +message PatternFlowRSVPPathRecordRouteType1Ipv4AddressPrefixLengthCounter { // Description missing in models - // default = 1 + // default = 32 optional uint32 start = 1; // Description missing in models @@ -19862,41 +22164,50 @@ message PatternFlowMplsBottomOfStackCounter { optional uint32 count = 3; } -// Metric tag can be used to enable tracking portion of or all bits in a corresponding -// header field for metrics per each applicable value. These would appear as tagged -// metrics in corresponding flow metrics. -message PatternFlowMplsBottomOfStackMetricTag { +// Prefix-length of ipv4 address. +message PatternFlowRSVPPathRecordRouteType1Ipv4AddressPrefixLength { - // Name used to identify the metrics associated with the values applicable for configured - // offset and length inside corresponding header field - // required = true - optional string name = 1; + message Choice { + enum Enum { + unspecified = 0; + value = 2; + values = 3; + increment = 4; + decrement = 5; + } + } + // Description missing in models + // default = Choice.Enum.value + optional Choice.Enum choice = 1; - // Offset in bits relative to start of corresponding header field - // default = 0 - optional uint32 offset = 2; + // Description missing in models + // default = 32 + optional uint32 value = 2; - // Number of bits to track for metrics starting from configured offset of corresponding - // header field - // default = 1 - optional uint32 length = 3; + // Description missing in models + // default = [32] + repeated uint32 values = 3; + + // Description missing in models + PatternFlowRSVPPathRecordRouteType1Ipv4AddressPrefixLengthCounter increment = 5; + + // Description missing in models + PatternFlowRSVPPathRecordRouteType1Ipv4AddressPrefixLengthCounter decrement = 6; } -// Bottom of stack -message PatternFlowMplsBottomOfStack { +// 0x01 = Global label. This flag indicates that the label will be understood if received +// on any interface. +message PatternFlowRSVPPathRecordRouteType1LabelFlags { message Choice { enum Enum { unspecified = 0; value = 2; values = 3; - auto = 1; - increment = 4; - decrement = 5; } } // Description missing in models - // default = Choice.Enum.auto + // default = Choice.Enum.value optional Choice.Enum choice = 1; // Description missing in models @@ -19906,30 +22217,36 @@ message PatternFlowMplsBottomOfStack { // Description missing in models // default = [1] repeated uint32 values = 3; +} - // The OTG implementation can provide a system generated - // value for this property. If the OTG is unable to generate a value - // the default value must be used. - // default = 1 - optional uint32 auto = 4; +// The C-Type of the included Label Object. Copied from the Label object. +message PatternFlowRSVPPathRecordRouteType1LabelCType { + message Choice { + enum Enum { + unspecified = 0; + value = 2; + values = 3; + } + } // Description missing in models - PatternFlowMplsBottomOfStackCounter increment = 6; + // default = Choice.Enum.value + optional Choice.Enum choice = 1; // Description missing in models - PatternFlowMplsBottomOfStackCounter decrement = 7; + // default = 0 + optional uint32 value = 2; - // One or more metric tags can be used to enable tracking portion of or all bits in - // a corresponding header field for metrics per each applicable value. These would appear - // as tagged metrics in corresponding flow metrics. - repeated PatternFlowMplsBottomOfStackMetricTag metric_tags = 8; + // Description missing in models + // default = [0] + repeated uint32 values = 3; } // integer counter pattern -message PatternFlowMplsTimeToLiveCounter { +message PatternFlowRSVPPathObjectsCustomTypeCounter { // Description missing in models - // default = 64 + // default = 0 optional uint32 start = 1; // Description missing in models @@ -19941,28 +22258,8 @@ message PatternFlowMplsTimeToLiveCounter { optional uint32 count = 3; } -// Metric tag can be used to enable tracking portion of or all bits in a corresponding -// header field for metrics per each applicable value. These would appear as tagged -// metrics in corresponding flow metrics. -message PatternFlowMplsTimeToLiveMetricTag { - - // Name used to identify the metrics associated with the values applicable for configured - // offset and length inside corresponding header field - // required = true - optional string name = 1; - - // Offset in bits relative to start of corresponding header field - // default = 0 - optional uint32 offset = 2; - - // Number of bits to track for metrics starting from configured offset of corresponding - // header field - // default = 8 - optional uint32 length = 3; -} - -// Time to live -message PatternFlowMplsTimeToLive { +// User defined object type. +message PatternFlowRSVPPathObjectsCustomType { message Choice { enum Enum { @@ -19978,23 +22275,18 @@ message PatternFlowMplsTimeToLive { optional Choice.Enum choice = 1; // Description missing in models - // default = 64 + // default = 0 optional uint32 value = 2; // Description missing in models - // default = [64] + // default = [0] repeated uint32 values = 3; // Description missing in models - PatternFlowMplsTimeToLiveCounter increment = 5; + PatternFlowRSVPPathObjectsCustomTypeCounter increment = 5; // Description missing in models - PatternFlowMplsTimeToLiveCounter decrement = 6; - - // One or more metric tags can be used to enable tracking portion of or all bits in - // a corresponding header field for metrics per each applicable value. These would appear - // as tagged metrics in corresponding flow metrics. - repeated PatternFlowMplsTimeToLiveMetricTag metric_tags = 7; + PatternFlowRSVPPathObjectsCustomTypeCounter decrement = 6; } // Version details diff --git a/requirements.txt b/requirements.txt index bb110d29..6308acc9 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,11 +1,11 @@ --prefer-binary -requests -PyYAML -grpcio-tools~=1.54.2 ; python_version > '3.6' grpcio-tools~=1.35.0 ; python_version <= '3.6' +grpcio-tools~=1.54.2 ; python_version > '3.6' grpcio~=1.54.2 ; python_version > '3.6' grpcio~=1.35.0 ; python_version <= '3.6' -protobuf~=4.23.3 ; python_version > '3.6' +PyYAML protobuf~=3.15.0 ; python_version <= '3.6' +protobuf~=4.23.3 ; python_version > '3.6' +requests urllib3 semantic_version diff --git a/snappi/__init__.py b/snappi/__init__.py index 6a8f8236..4eed4dd2 100644 --- a/snappi/__init__.py +++ b/snappi/__init__.py @@ -774,6 +774,130 @@ from .snappi import PatternFlowMplsTimeToLiveCounter from .snappi import PatternFlowMplsTimeToLiveMetricTag from .snappi import PatternFlowMplsTimeToLiveMetricTagIter +from .snappi import FlowRsvp +from .snappi import PatternFlowRsvpVersion +from .snappi import PatternFlowRsvpVersionCounter +from .snappi import FlowRSVPFlag +from .snappi import PatternFlowRsvpRsvpChecksum +from .snappi import PatternFlowRsvpTimeToLive +from .snappi import PatternFlowRsvpTimeToLiveCounter +from .snappi import PatternFlowRsvpReserved +from .snappi import PatternFlowRsvpReservedCounter +from .snappi import FlowRSVPLength +from .snappi import FlowRSVPMessage +from .snappi import FlowRSVPPathMessage +from .snappi import FlowRSVPPathObjects +from .snappi import FlowRSVPPathObjectLength +from .snappi import FlowRSVPPathObjectsClass +from .snappi import FlowRSVPPathObjectsClassSession +from .snappi import FlowRSVPPathObjectsSessionCType +from .snappi import FlowRSVPPathSessionLspTunnelIpv4 +from .snappi import PatternFlowRSVPPathSessionLspTunnelIpv4Ipv4TunnelEndPointAddress +from .snappi import PatternFlowRSVPPathSessionLspTunnelIpv4Ipv4TunnelEndPointAddressCounter +from .snappi import PatternFlowRSVPPathSessionLspTunnelIpv4Reserved +from .snappi import PatternFlowRSVPPathSessionLspTunnelIpv4ReservedCounter +from .snappi import PatternFlowRSVPPathSessionLspTunnelIpv4TunnelId +from .snappi import PatternFlowRSVPPathSessionLspTunnelIpv4TunnelIdCounter +from .snappi import PatternFlowRSVPPathSessionLspTunnelIpv4ExtendedTunnelId +from .snappi import PatternFlowRSVPPathSessionLspTunnelIpv4ExtendedTunnelIdCounter +from .snappi import FlowRSVPPathObjectsClassRsvpHop +from .snappi import FlowRSVPPathObjectsRsvpHopCType +from .snappi import FlowRSVPPathRsvpHopIpv4 +from .snappi import PatternFlowRSVPPathRsvpHopIpv4Ipv4NextPreviousHopAddress +from .snappi import PatternFlowRSVPPathRsvpHopIpv4Ipv4NextPreviousHopAddressCounter +from .snappi import PatternFlowRSVPPathRsvpHopIpv4LogicalInterfaceHandle +from .snappi import PatternFlowRSVPPathRsvpHopIpv4LogicalInterfaceHandleCounter +from .snappi import FlowRSVPPathObjectsClassTimeValues +from .snappi import FlowRSVPPathObjectsTimeValuesCType +from .snappi import FlowRSVPPathTimeValuesType1 +from .snappi import PatternFlowRSVPPathTimeValuesType1RefreshPeriodR +from .snappi import PatternFlowRSVPPathTimeValuesType1RefreshPeriodRCounter +from .snappi import FlowRSVPPathObjectsClassExplicitRoute +from .snappi import FlowRSVPPathObjectsClassExplicitRouteCType +from .snappi import FlowRSVPPathExplicitRouteType1 +from .snappi import FlowRSVPType1ExplicitRouteSubobjects +from .snappi import FlowRSVPType1ExplicitRouteSubobjectsType +from .snappi import FlowRSVPPathExplicitRouteType1Ipv4Prefix +from .snappi import PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixLBit +from .snappi import PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixLBitCounter +from .snappi import FlowRSVPExplicitRouteLength +from .snappi import PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixIpv4Address +from .snappi import PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixIpv4AddressCounter +from .snappi import FlowRSVPPathExplicitRouteType1FourByteASNumber +from .snappi import PatternFlowRSVPPathExplicitRouteType1FourByteASNumberLBit +from .snappi import PatternFlowRSVPPathExplicitRouteType1FourByteASNumberLBitCounter +from .snappi import PatternFlowRSVPPathExplicitRouteType1FourByteASNumberReserved +from .snappi import PatternFlowRSVPPathExplicitRouteType1FourByteASNumberReservedCounter +from .snappi import FlowRSVPType1ExplicitRouteSubobjectsIter +from .snappi import FlowRSVPPathObjectsClassLabelRequest +from .snappi import FlowRSVPPathObjectsLabelRequestCType +from .snappi import FlowRSVPPathLabelRequestWithoutLabelRange +from .snappi import PatternFlowRSVPPathLabelRequestWithoutLabelRangeReserved +from .snappi import PatternFlowRSVPPathLabelRequestWithoutLabelRangeReservedCounter +from .snappi import PatternFlowRSVPPathLabelRequestWithoutLabelRangeL3pid +from .snappi import PatternFlowRSVPPathLabelRequestWithoutLabelRangeL3pidCounter +from .snappi import FlowRSVPPathObjectsClassSessionAttribute +from .snappi import FlowRSVPPathObjectsSessionAttributeCType +from .snappi import FlowRSVPPathSessionAttributeLspTunnel +from .snappi import FlowRSVPLspTunnelFlag +from .snappi import FlowRSVPPathSessionAttributeLspTunnelRa +from .snappi import FlowRSVPPathObjectsClassSenderTemplate +from .snappi import FlowRSVPPathObjectsSenderTemplateCType +from .snappi import FlowRSVPPathSenderTemplateLspTunnelIpv4 +from .snappi import PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Ipv4TunnelSenderAddress +from .snappi import PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Ipv4TunnelSenderAddressCounter +from .snappi import PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Reserved +from .snappi import PatternFlowRSVPPathSenderTemplateLspTunnelIpv4ReservedCounter +from .snappi import PatternFlowRSVPPathSenderTemplateLspTunnelIpv4LspId +from .snappi import PatternFlowRSVPPathSenderTemplateLspTunnelIpv4LspIdCounter +from .snappi import FlowRSVPPathObjectsClassSenderTspec +from .snappi import FlowRSVPPathObjectsSenderTspecCType +from .snappi import FlowRSVPPathSenderTspecIntServ +from .snappi import PatternFlowRSVPPathSenderTspecIntServVersion +from .snappi import PatternFlowRSVPPathSenderTspecIntServVersionCounter +from .snappi import PatternFlowRSVPPathSenderTspecIntServReserved1 +from .snappi import PatternFlowRSVPPathSenderTspecIntServReserved1Counter +from .snappi import PatternFlowRSVPPathSenderTspecIntServOverallLength +from .snappi import PatternFlowRSVPPathSenderTspecIntServOverallLengthCounter +from .snappi import PatternFlowRSVPPathSenderTspecIntServServiceHeader +from .snappi import PatternFlowRSVPPathSenderTspecIntServServiceHeaderCounter +from .snappi import PatternFlowRSVPPathSenderTspecIntServZeroBit +from .snappi import PatternFlowRSVPPathSenderTspecIntServZeroBitCounter +from .snappi import PatternFlowRSVPPathSenderTspecIntServReserved2 +from .snappi import PatternFlowRSVPPathSenderTspecIntServReserved2Counter +from .snappi import PatternFlowRSVPPathSenderTspecIntServLengthOfServiceData +from .snappi import PatternFlowRSVPPathSenderTspecIntServLengthOfServiceDataCounter +from .snappi import PatternFlowRSVPPathSenderTspecIntServParameterIdTokenBucketTspec +from .snappi import PatternFlowRSVPPathSenderTspecIntServParameterIdTokenBucketTspecCounter +from .snappi import PatternFlowRSVPPathSenderTspecIntServParameter127Flag +from .snappi import PatternFlowRSVPPathSenderTspecIntServParameter127FlagCounter +from .snappi import PatternFlowRSVPPathSenderTspecIntServParameter127Length +from .snappi import PatternFlowRSVPPathSenderTspecIntServParameter127LengthCounter +from .snappi import PatternFlowRSVPPathSenderTspecIntServMinimumPolicedUnit +from .snappi import PatternFlowRSVPPathSenderTspecIntServMinimumPolicedUnitCounter +from .snappi import PatternFlowRSVPPathSenderTspecIntServMaximumPacketSize +from .snappi import PatternFlowRSVPPathSenderTspecIntServMaximumPacketSizeCounter +from .snappi import FlowRSVPPathObjectsClassRecordRoute +from .snappi import FlowRSVPPathObjectsRecordRouteCType +from .snappi import FlowRSVPPathRecordRouteType1 +from .snappi import FlowRSVPType1RecordRouteSubobjects +from .snappi import FlowRSVPPathObjectsRecordRouteSubObjectType +from .snappi import FlowRSVPPathRecordRouteType1Ipv4Address +from .snappi import FlowRSVPRouteRecordLength +from .snappi import PatternFlowRSVPPathRecordRouteType1Ipv4AddressIpv4Address +from .snappi import PatternFlowRSVPPathRecordRouteType1Ipv4AddressIpv4AddressCounter +from .snappi import PatternFlowRSVPPathRecordRouteType1Ipv4AddressPrefixLength +from .snappi import PatternFlowRSVPPathRecordRouteType1Ipv4AddressPrefixLengthCounter +from .snappi import FlowRSVPRecordRouteIPv4Flag +from .snappi import FlowRSVPPathRecordRouteType1Label +from .snappi import PatternFlowRSVPPathRecordRouteType1LabelFlags +from .snappi import PatternFlowRSVPPathRecordRouteType1LabelCType +from .snappi import FlowRSVPType1RecordRouteSubobjectsIter +from .snappi import FlowRSVPPathObjectsCustom +from .snappi import PatternFlowRSVPPathObjectsCustomType +from .snappi import PatternFlowRSVPPathObjectsCustomTypeCounter +from .snappi import FlowRSVPObjectOptionsCustomLength +from .snappi import FlowRSVPPathObjectsIter from .snappi import FlowHeaderIter from .snappi import FlowSize from .snappi import FlowSizeIncrement diff --git a/snappi/docs/openapi.yaml b/snappi/docs/openapi.yaml index 2878c5f6..84214dbb 100644 --- a/snappi/docs/openapi.yaml +++ b/snappi/docs/openapi.yaml @@ -388,8 +388,7 @@ components: properties: port_name: description: "The name of a port object that will be part of the LAG. \n\ - \nx-constraint:\n- /components/schemas/Port/properties/name\n\n\nx-constraint:\n\ - - /components/schemas/Port/properties/name\n" + \nx-constraint:\n- /components/schemas/Port/properties/name\n" type: string x-constraint: - /components/schemas/Port/properties/name @@ -641,10 +640,6 @@ components: description: | Name of the port that the Ethernet interface is configured on. - x-constraint: - - /components/schemas/Port/properties/name - - x-constraint: - /components/schemas/Port/properties/name type: string @@ -655,10 +650,6 @@ components: description: | Name of the LAG that the Ethernet interface is configured on. - x-constraint: - - /components/schemas/Lag/properties/name - - x-constraint: - /components/schemas/Lag/properties/name type: string @@ -669,11 +660,6 @@ components: description: | Name of the VXLAN instance (or VXLAN tunnel) that this Ethernet interface is connected to. - x-constraint: - - #/components/schemas/Vxlan.V4Tunnel/properties/name - - #/components/schemas/Vxlan.V6Tunnel/properties/name - - x-constraint: - #/components/schemas/Vxlan.V4Tunnel/properties/name - #/components/schemas/Vxlan.V6Tunnel/properties/name @@ -787,10 +773,6 @@ components: description: | The unique name of the Ethernet interface behind which this Loopback interface will be created. - x-constraint: - - /components/schemas/Device.Ethernet/properties/name - - x-constraint: - /components/schemas/Device.Ethernet/properties/name type: string @@ -894,8 +876,7 @@ components: properties: eth_name: description: "The unique name of the Ethernet interface behind which this\ - \ Loopback \n interface will be created.\n\nx-constraint:\n- /components/schemas/Device.Ethernet/properties/name\n\ - \n\nx-constraint:\n- /components/schemas/Device.Ethernet/properties/name\n" + \ Loopback \n interface will be created.\n\nx-constraint:\n- /components/schemas/Device.Ethernet/properties/name\n" type: string x-constraint: - /components/schemas/Device.Ethernet/properties/name @@ -957,8 +938,7 @@ components: properties: port_names: description: "A list of unique names of port objects that will share the\n\ - choice settings. \n\nx-constraint:\n- /components/schemas/Port/properties/name\n\ - \n\nx-constraint:\n- /components/schemas/Port/properties/name\n" + choice settings. \n\nx-constraint:\n- /components/schemas/Port/properties/name\n" type: array items: type: string @@ -1049,8 +1029,6 @@ components: description: |- Under Review: This field is currently under review for pending exploration on use cases - Under Review: This field is currently under review for pending exploration on use cases - Set to true to override the auto_negotiate, link_training and rs_fec settings for gigabit ethernet interfaces. type: boolean @@ -1063,8 +1041,6 @@ components: description: |- Under Review: This field is currently under review for pending exploration on use cases, given that a separate configuration called `AutoNegotiation` already exists. - Under Review: This field is currently under review for pending exploration on use cases, given that a separate configuration called `AutoNegotiation` already exists. - Enable/disable auto negotiation. type: boolean x-field-uid: 7 @@ -1270,8 +1246,6 @@ components: description: |- Under Review: There may be changes in filter configuration - Under Review: There may be changes in filter configuration - Configuration for capture settings. type: object required: @@ -1282,10 +1256,6 @@ components: description: | The unique names of ports that the capture settings will apply to. Port_names cannot be duplicated between capture objects. - x-constraint: - - /components/schemas/Port/properties/name - - x-constraint: - /components/schemas/Port/properties/name type: array @@ -1691,8 +1661,7 @@ components: eth_name: description: "The unique name of the Ethernet interface on which ISIS is\ \ running. Two ISIS interfaces cannot share the same Ethernet. \ - \ \n\nx-constraint:\n- /components/schemas/Device.Ethernet/properties/name\n\ - \n\nx-constraint:\n- /components/schemas/Device.Ethernet/properties/name\n" + \ \n\nx-constraint:\n- /components/schemas/Device.Ethernet/properties/name\n" type: string x-constraint: - /components/schemas/Device.Ethernet/properties/name @@ -2848,11 +2817,6 @@ components: description: | The unique name of the IPv4 or Loopback IPv4 interface used as the source IP for this list of BGP peers. - x-constraint: - - /components/schemas/Device.Ipv4/properties/name - - /components/schemas/Device.Ipv4Loopback/properties/name - - x-constraint: - /components/schemas/Device.Ipv4/properties/name - /components/schemas/Device.Ipv4Loopback/properties/name @@ -3794,8 +3758,6 @@ components: description: |- Deprecated: This property is deprecated in favor of property extended_communities - Deprecated: This property is deprecated in favor of property extended_communities - Optional Extended Community settings. The Extended Communities Attribute is a transitive optional BGP attribute, with the Type Code 16. Community and Extended Communities attributes are utilized to trigger routing decisions, such as acceptance, rejection, preference, or redistribution. An extended community is an 8-Bytes value. It is divided into two main parts. The first 2 Bytes of the community encode a type and sub-type fields and the last 6 Bytes carry a unique set of data in a format defined by the type and sub-type field. Extended communities provide a larger range for grouping or categorizing communities. When type is administrator_as_2octet or administrator_as_4octet, the valid sub types are route target and origin. The valid value for administrator_as_2octet and administrator_as_4octet type is either two byte AS followed by four byte local administrator id or four byte AS followed by two byte local administrator id. When type is administrator_ipv4_address the valid sub types are route target and origin. The valid value for administrator_ipv4_address is a four byte IPv4 address followed by a two byte local administrator id. When type is opaque, valid sub types are color and encapsulation. When sub type is color, first two bytes of the value field contain flags and last four bytes contains the value of the color. When sub type is encapsulation the first four bytes of value field are reserved and last two bytes carries the tunnel type from IANA's "ETHER TYPES" registry e.g IPv4 (protocol type = 0x0800), IPv6 (protocol type = 0x86dd), and MPLS (protocol type = 0x8847). When type is administrator_as_2octet_link_bandwidth the valid sub type is extended_bandwidth. The first two bytes of the value field contains the AS number and the last four bytes contains the bandwidth in IEEE floating point format. When type is evpn the valid subtype is mac_address. In the value field the low-order bit of the first byte(Flags) is defined as the "Sticky/static" flag and may be set to 1, indicating the MAC address is static and cannot move. The second byte is reserved and the last four bytes contain the sequence number which is used to ensure that PEs retain the correct MAC/IP Advertisement route when multiple updates occur for the same MAC address. Note evpn type is defined mainly for use with evpn route updates and not for IPv4 and IPv6 route updates. type: array items: @@ -4328,8 +4290,6 @@ components: description: |- Deprecated: This property is deprecated in favor of property extended_communities - Deprecated: This property is deprecated in favor of property extended_communities - Optional Extended Community settings. The Extended Communities Attribute is a transitive optional BGP attribute, with the Type Code 16. Community and Extended Communities attributes are utilized to trigger routing decisions, such as acceptance, rejection, preference, or redistribution. An extended community is an 8-Bytes value. It is divided into two main parts. The first 2 Bytes of the community encode a type and sub-type fields and the last 6 Bytes carry a unique set of data in a format defined by the type and sub-type field. Extended communities provide a larger range for grouping or categorizing communities. When type is administrator_as_2octet or administrator_as_4octet, the valid sub types are route target and origin. The valid value for administrator_as_2octet and administrator_as_4octet type is either two byte AS followed by four byte local administrator id or four byte AS followed by two byte local administrator id. When type is administrator_ipv4_address the valid sub types are route target and origin. The valid value for administrator_ipv4_address is a four byte IPv4 address followed by a two byte local administrator id. When type is opaque, valid sub types are color and encapsulation. When sub type is color, first two bytes of the value field contain flags and last four bytes contains the value of the color. When sub type is encapsulation the first four bytes of value field are reserved and last two bytes carries the tunnel type from IANA's "ETHER TYPES" registry e.g IPv4 (protocol type = 0x0800), IPv6 (protocol type = 0x86dd), and MPLS (protocol type = 0x8847). When type is administrator_as_2octet_link_bandwidth the valid sub type is extended_bandwidth. The first two bytes of the value field contains the AS number and the last four bytes contains the bandwidth in IEEE floating point format. When type is evpn the valid subtype is mac_address. In the value field the low-order bit of the first byte(Flags) is defined as the "Sticky/static" flag and may be set to 1, indicating the MAC address is static and cannot move. The second byte is reserved and the last four bytes contain the sequence number which is used to ensure that PEs retain the correct MAC/IP Advertisement route when multiple updates occur for the same MAC address. Note evpn type is defined mainly for use with evpn route updates and not for IPv4 and IPv6 route updates. type: array items: @@ -5594,11 +5554,6 @@ components: description: | The unique name of IPv6 or Loopback IPv6 interface used as the source IP for this list of BGP peers. - x-constraint: - - /components/schemas/Device.Ipv6/properties/name - - /components/schemas/Device.Ipv6Loopback/properties/name - - x-constraint: - /components/schemas/Device.Ipv6/properties/name - /components/schemas/Device.Ipv6Loopback/properties/name @@ -5916,11 +5871,6 @@ components: description: | Determines the source interface. - x-constraint: - - /components/schemas/Device.Ipv4/properties/name - - /components/schemas/Device.Ipv4Loopback/properties/name - - x-constraint: - /components/schemas/Device.Ipv4/properties/name - /components/schemas/Device.Ipv4Loopback/properties/name @@ -5961,11 +5911,6 @@ components: description: | Determines the source interface. - x-constraint: - - /components/schemas/Device.Ipv6/properties/name - - /components/schemas/Device.Ipv6Loopback/properties/name - - x-constraint: - /components/schemas/Device.Ipv6/properties/name - /components/schemas/Device.Ipv6Loopback/properties/name @@ -6174,7 +6119,6 @@ components: description: "The globally unique name of the IPv4 interface connected to\ \ the DUT. This name must match the \"name\" field of the \"ipv4_addresses\"\ \ on top which this RSVP interface is configured. \n\nx-constraint:\n\ - - /components/schemas/Device.Ipv4/properties/name\n\n\nx-constraint:\n\ - /components/schemas/Device.Ipv4/properties/name\n" type: string x-constraint: @@ -6264,11 +6208,6 @@ components: description: | The globally unique name of the IPv4 or Loopback IPv4 interface acting as the RSVP ingress and egress endpoint for the LSPs configured on this interface. This must match the "name" field of either "ipv4_addresses" or "ipv4_loopbacks" on which this LSP interface is configured. - x-constraint: - - /components/schemas/Device.Ipv4/properties/name - - /components/schemas/Device.Ipv4Loopback/properties/name - - x-constraint: - /components/schemas/Device.Ipv4/properties/name - /components/schemas/Device.Ipv4Loopback/properties/name @@ -6835,10 +6774,7 @@ components: description: "Under Review: The packet header schema for egress tracking\ \ currently exposes unwanted fields. The query structure for tagged metrics\ \ inside flows metrics requires documenting expected response format.\n\ - \nUnder Review: The packet header schema for egress tracking currently\ - \ exposes unwanted fields. The query structure for tagged metrics inside\ - \ flows metrics requires documenting expected response format.\n\nThe\ - \ list of protocol headers defining the shape of all \nintended packets\ + \nThe list of protocol headers defining the shape of all \nintended packets\ \ in corresponding flow as it is received\nby traffic-generator port.\n\ \nFor all protocol headers, only the `metric_tags` property is configurable." type: array @@ -6916,11 +6852,6 @@ components: description: | The unique name of a port that is the transmit port. - x-constraint: - - /components/schemas/Port/properties/name - - /components/schemas/Lag/properties/name - - x-constraint: - /components/schemas/Port/properties/name - /components/schemas/Lag/properties/name @@ -6933,15 +6864,8 @@ components: description: | Deprecated: This property is deprecated in favor of property rx_names - Deprecated: This property is deprecated in favor of property rx_names - The unique name of a port that is the intended receive port. - x-constraint: - - /components/schemas/Port/properties/name - - /components/schemas/Lag/properties/name - - x-constraint: - /components/schemas/Port/properties/name - /components/schemas/Lag/properties/name @@ -6957,11 +6881,6 @@ components: description: | Unique name of ports or lags that are intended receive endpoints. - x-constraint: - - /components/schemas/Port/properties/name - - /components/schemas/Lag/properties/name - - x-constraint: - /components/schemas/Port/properties/name - /components/schemas/Lag/properties/name @@ -7055,18 +6974,6 @@ components: description: | TBD - x-constraint: - - /components/schemas/Device.Ethernet/properties/name - - /components/schemas/Device.Ipv4/properties/name - - /components/schemas/Device.Ipv6/properties/name - - /components/schemas/Bgp.V4RouteRange/properties/name - - /components/schemas/Bgp.V6RouteRange/properties/name - - /components/schemas/Bgp.CMacIpRange/properties/name - - /components/schemas/Rsvp.LspIpv4Interface.P2PIngressIpv4Lsp/properties/name - - /components/schemas/Isis.V4RouteRange/properties/name - - /components/schemas/Isis.V6RouteRange/properties/name - - x-constraint: - /components/schemas/Device.Ethernet/properties/name - /components/schemas/Device.Ipv4/properties/name @@ -7105,18 +7012,6 @@ components: description: | TBD - x-constraint: - - /components/schemas/Device.Ethernet/properties/name - - /components/schemas/Device.Ipv4/properties/name - - /components/schemas/Device.Ipv6/properties/name - - /components/schemas/Bgp.V4RouteRange/properties/name - - /components/schemas/Bgp.V6RouteRange/properties/name - - /components/schemas/Bgp.CMacIpRange/properties/name - - /components/schemas/Rsvp.LspIpv4Interface.P2PEgressIpv4Lsp/properties/name - - /components/schemas/Isis.V4RouteRange/properties/name - - /components/schemas/Isis.V6RouteRange/properties/name - - x-constraint: - /components/schemas/Device.Ethernet/properties/name - /components/schemas/Device.Ipv4/properties/name @@ -7177,6 +7072,8 @@ components: x-field-uid: 18 mpls: x-field-uid: 19 + rsvp: + x-field-uid: 20 enum: - custom - ethernet @@ -7197,6 +7094,7 @@ components: - ppp - igmpv1 - mpls + - rsvp custom: $ref: '#/components/schemas/Flow.Custom' x-field-uid: 2 @@ -7254,6 +7152,9 @@ components: mpls: $ref: '#/components/schemas/Flow.Mpls' x-field-uid: 20 + rsvp: + $ref: '#/components/schemas/Flow.Rsvp' + x-field-uid: 21 Flow.Custom: type: object description: |- @@ -7901,898 +7802,949 @@ components: time_to_live: x-field-uid: 4 $ref: '#/components/schemas/Pattern.Flow.Mpls.TimeToLive' - Flow.Size: + Flow.Rsvp: description: |- - The frame size which overrides the total length of the packet + RSVP packet header as defined in RFC2205 and RFC3209. Currently only supported message type is "path" with mandatory objects and sub-objects. + type: object + properties: + version: + x-field-uid: 1 + $ref: '#/components/schemas/Pattern.Flow.Rsvp.Version' + flag: + description: |- + Flag, 0x01-0x08: Reserved. + $ref: '#/components/schemas/Flow.RSVP.Flag' + x-field-uid: 2 + rsvp_checksum: + x-field-uid: 3 + $ref: '#/components/schemas/Pattern.Flow.Rsvp.RsvpChecksum' + time_to_live: + x-field-uid: 4 + $ref: '#/components/schemas/Pattern.Flow.Rsvp.TimeToLive' + reserved: + x-field-uid: 5 + $ref: '#/components/schemas/Pattern.Flow.Rsvp.Reserved' + rsvp_length: + description: |- + The sum of the lengths of the common header and all objects included in the message. + $ref: '#/components/schemas/Flow.RSVP.Length' + x-field-uid: 6 + message_type: + description: |- + An 8-bit number that identifies the function of the RSVP message. There are aound 20 message types is defined https://www.iana.org/assignments/rsvp-parameters/rsvp-parameters.xhtml#rsvp-parameters-2 . Among Those we are presently supporting "path"(value: 1) message type. + $ref: '#/components/schemas/Flow.RSVP.Message' + x-field-uid: 7 + Flow.RSVP.Flag: type: object properties: choice: type: string - default: fixed - x-field-uid: 1 + default: not_refresh_reduction_capable x-enum: - fixed: + not_refresh_reduction_capable: x-field-uid: 1 - increment: + refresh_reduction_capable: x-field-uid: 2 - random: - x-field-uid: 3 - weight_pairs: - x-field-uid: 4 + x-field-uid: 1 enum: - - fixed - - increment - - random - - weight_pairs - fixed: - type: integer - format: uint32 - default: 64 - x-field-uid: 2 - increment: - $ref: '#/components/schemas/Flow.SizeIncrement' - x-field-uid: 3 - random: - $ref: '#/components/schemas/Flow.SizeRandom' - x-field-uid: 4 - weight_pairs: - $ref: '#/components/schemas/Flow.SizeWeightPairs' - x-field-uid: 5 - Flow.SizeIncrement: + - not_refresh_reduction_capable + - refresh_reduction_capable + Flow.RSVP.Length: type: object - description: "Frame size that increments from a starting size to \nan ending\ - \ size incrementing by a step size." properties: - start: + choice: description: |- - Starting frame size in bytes - type: integer - format: uint32 - minimum: 1 - default: 64 + auto or configured value. + type: string + default: auto x-field-uid: 1 - end: + x-enum: + auto: + x-field-uid: 1 + value: + x-field-uid: 2 + enum: + - auto + - value + auto: description: |- - Ending frame size in bytes + The OTG implementation can provide a system generated value for this property. If the OTG is unable to generate a value the default value must be used. type: integer format: uint32 - minimum: 64 - default: 1518 + maximum: 65535 + default: 0 x-field-uid: 2 - step: - description: |- - Step frame size in bytes + value: type: integer format: uint32 - default: 1 + maximum: 65535 + default: 0 x-field-uid: 3 - Flow.SizeRandom: + Flow.RSVP.Message: type: object + properties: + choice: + type: string + default: path + x-enum: + path: + x-field-uid: 1 + x-field-uid: 1 + enum: + - path + path: + $ref: '#/components/schemas/Flow.RSVP.PathMessage' + x-field-uid: 2 + Flow.RSVP.PathMessage: description: |- - Random frame size from a min value to a max value. + "path" message required the follwoing list of objects in order as defined in https://www.rfc-editor.org/rfc/rfc3209.html#page-15: 1. SESSION 2. RSVP_HOP 3. TIME_VALUES 4. EXPLICIT_ROUTE [optional] 5. LABEL_REQUEST 6. SESSION_ATTRIBUTE [optional] 7. SENDER_TEMPLATE 8. SENDER_TSPEC 9. RECORD_ROUTE [optional] + type: object properties: - min: - type: integer - format: uint32 - default: 64 + objects: + description: |- + "path" message required atleast SESSION, RSVP_HOP, TIME_VALUES, LABEL_REQUEST, SENDER_TEMPLATE and SENDER_TSPEC objects in order. + type: array + minItems: 6 + items: + $ref: '#/components/schemas/Flow.RSVP.PathObjects' x-field-uid: 1 - max: - type: integer - format: uint32 - default: 1518 + Flow.RSVP.PathObjects: + description: |- + Every RSVP object encapsulated in an RSVP message consists of a 32-bit word header and the object's contents. + type: object + properties: + length: + description: |- + A 16-bit field containing the total object length in bytes. Must always be a multiple of 4, and at least 4. + $ref: '#/components/schemas/Flow.RSVPPathObject.Length' + x-field-uid: 1 + class_num: + $ref: '#/components/schemas/Flow.RSVP.PathObjectsClass' x-field-uid: 2 - Flow.SizeWeightPairs: + Flow.RSVPPathObject.Length: type: object - description: "Frame size distribution, defined as pairs (including\ - \ IMIX distribution).\nFrames are randomly generated such that the proportion\ - \ of each frame size out of the total number of frames \nare matching with\ - \ the weight value of the pair. However, as with any other\ - \ probability \ndistribution, the sample distribution is close to theoretical\ - \ value only if the size of the sample is reasonably large. \nWhen the number\ - \ of frames is very low the transmitted frames may not come close to the ratio\ - \ described in the weight." properties: choice: + description: |- + auto or configured value. type: string - default: predefined + default: auto x-field-uid: 1 x-enum: - predefined: + auto: x-field-uid: 1 - custom: + value: x-field-uid: 2 enum: - - predefined - - custom - predefined: - type: string - default: imix - description: "Specify predefined frame size distribution \ - \ pairs (including IMIX distribution). \nThe available predefined distribution\ - \ pairs are:\n- IMIX (64:7, 570:4, and 1518:1) \n- IPSec IMIX (90:58.67,\ - \ 92:2, 594:23.66 and 1418:15.67) \n- IPv6 IMIX (60:58.67, 496:2, 594:23.66\ - \ and 1518:15.67) \n- Standard IMIX (58:58.67, 62:2, 594:23.66 and 1518:15.67)\ - \ \n- TCP IMIX (90:58.67, 92:2, 594:23.66 and 1518:15.67) " + - auto + - value + auto: + description: |- + The OTG implementation can provide a system generated value for this property. If the OTG is unable to generate a value the default value must be used. + type: integer + format: uint32 + minimum: 4 + maximum: 65535 + default: 4 x-field-uid: 2 - x-enum: - imix: - x-field-uid: 1 - ipsec_imix: - x-field-uid: 2 - ipv6_imix: - x-field-uid: 3 - standard_imix: - x-field-uid: 4 - tcp_imix: - x-field-uid: 5 - enum: - - imix - - ipsec_imix - - ipv6_imix - - standard_imix - - tcp_imix - custom: - type: array - items: - $ref: '#/components/schemas/Flow.SizeWeightPairs.Custom' - x-field-uid: 3 - Flow.SizeWeightPairs.Custom: - type: object - description: |- - Custom frame size distribution pair. - properties: - size: - description: |- - The size of the frame (in bytes) for this weight pair. + value: type: integer format: uint32 - minimum: 12 + minimum: 4 maximum: 65535 - default: 64 - x-field-uid: 1 - weight: - description: "Weight assigned to the corresponding frame size in this weight\ - \ pair. \nHigher weight means more packets." - type: number - format: float - default: 1 - x-field-uid: 2 - Flow.Rate: - type: object + default: 4 + x-field-uid: 3 + Flow.RSVP.PathObjectsClass: description: |- - The rate of packet transmission + The class number is used to identify the class of an object. Defined in https://www.iana.org/assignments/rsvp-parameters/rsvp-parameters.xhtml#rsvp-parameters-4 . Curently supported class numbers are for "path" message type. "path" message: Supported Class numbers and it's value: SESSION: 1, RSVP_HOP: 3, TIME_VALUES: 5, EXPLICIT_ROUTE: 20, LABEL_REQUEST: 19, SESSION_ATTRIBUTE: 207, SENDER_TEMPLATE: 11, SENDER_TSPEC: 12, RECORD_ROUTE: 21, Custom: User defined bytes based on class and c-types not suppored in above options. + type: object + required: + - choice properties: choice: - description: |- - The available types of flow rate. type: string - default: pps x-field-uid: 1 x-enum: - pps: + session: x-field-uid: 1 - bps: + rsvp_hop: x-field-uid: 2 - kbps: + time_values: x-field-uid: 3 - mbps: + explicit_route: x-field-uid: 4 - gbps: + label_request: x-field-uid: 5 - percentage: + session_attribute: x-field-uid: 6 + sender_template: + x-field-uid: 7 + sender_tspec: + x-field-uid: 8 + record_route: + x-field-uid: 9 + custom: + x-field-uid: 10 enum: - - pps - - bps - - kbps - - mbps - - gbps - - percentage - pps: - description: |- - Packets per second. - type: integer - format: uint64 - minimum: 1 - default: 1000 + - session + - rsvp_hop + - time_values + - explicit_route + - label_request + - session_attribute + - sender_template + - sender_tspec + - record_route + - custom + session: + $ref: '#/components/schemas/Flow.RSVP.PathObjectsClassSession' x-field-uid: 2 - bps: - description: |- - Bits per second. - type: integer - format: uint64 - minimum: 672 - default: 1000000000 + rsvp_hop: + $ref: '#/components/schemas/Flow.RSVP.PathObjectsClassRsvpHop' x-field-uid: 3 - kbps: - description: |- - Kilobits per second. - type: integer - format: uint64 - minimum: 1 - default: 1000000 + time_values: + $ref: '#/components/schemas/Flow.RSVP.PathObjectsClassTimeValues' x-field-uid: 4 - mbps: - description: "Megabits per second. " - type: integer - format: uint64 - minimum: 1 - default: 1000 + explicit_route: + $ref: '#/components/schemas/Flow.RSVP.PathObjectsClassExplicitRoute' x-field-uid: 5 - gbps: - description: |- - Gigabits per second. - type: integer - format: uint32 - minimum: 1 - default: 1 + label_request: + $ref: '#/components/schemas/Flow.RSVP.PathObjectsClassLabelRequest' x-field-uid: 6 - percentage: - description: |- - The percentage of a port location's available bandwidth. - type: number - format: float - minimum: 0 - maximum: 100 - default: 100 + session_attribute: + $ref: '#/components/schemas/Flow.RSVP.PathObjectsClassSessionAttribute' x-field-uid: 7 - Flow.Duration: - description: "A container for different transmit durations. " + sender_template: + $ref: '#/components/schemas/Flow.RSVP.PathObjectsClassSenderTemplate' + x-field-uid: 8 + sender_tspec: + $ref: '#/components/schemas/Flow.RSVP.PathObjectsClassSenderTspec' + x-field-uid: 9 + record_route: + $ref: '#/components/schemas/Flow.RSVP.PathObjectsClassRecordRoute' + x-field-uid: 10 + custom: + $ref: '#/components/schemas/Flow.RSVP.PathObjectsCustom' + x-field-uid: 11 + Flow.RSVP.PathObjectsClassSession: + description: |- + C-Type is specific to a class num. + type: object + properties: + c_type: + $ref: '#/components/schemas/Flow.RSVP.PathObjectsSessionCType' + x-field-uid: 1 + Flow.RSVP.PathObjectsSessionCType: + description: |- + The body of an object corresponding to the class number and c-type. Currently supported c-type for SESSION object is LSP Tunnel IPv4 (7). type: object properties: choice: - description: |- - A choice used to determine the type of duration. type: string - default: continuous x-field-uid: 1 + default: lsp_tunnel_ipv4 x-enum: - fixed_packets: + lsp_tunnel_ipv4: x-field-uid: 1 - fixed_seconds: - x-field-uid: 2 - burst: - x-field-uid: 3 - continuous: - x-field-uid: 4 enum: - - fixed_packets - - fixed_seconds - - burst - - continuous - fixed_packets: - $ref: '#/components/schemas/Flow.FixedPackets' + - lsp_tunnel_ipv4 + lsp_tunnel_ipv4: + $ref: '#/components/schemas/Flow.RSVP.PathSessionLspTunnelIpv4' x-field-uid: 2 - fixed_seconds: - $ref: '#/components/schemas/Flow.FixedSeconds' + Flow.RSVP.PathSessionLspTunnelIpv4: + description: |- + Class = SESSION, LSP_TUNNEL_IPv4 C-Type = 7. + type: object + properties: + ipv4_tunnel_end_point_address: + x-field-uid: 1 + $ref: '#/components/schemas/Pattern.Flow.RSVP.PathSessionLspTunnelIpv4.Ipv4TunnelEndPointAddress' + reserved: + x-field-uid: 2 + $ref: '#/components/schemas/Pattern.Flow.RSVP.PathSessionLspTunnelIpv4.Reserved' + tunnel_id: x-field-uid: 3 - burst: - $ref: '#/components/schemas/Flow.Burst' + $ref: '#/components/schemas/Pattern.Flow.RSVP.PathSessionLspTunnelIpv4.TunnelId' + extended_tunnel_id: x-field-uid: 4 - continuous: - $ref: '#/components/schemas/Flow.Continuous' - x-field-uid: 5 - Flow.Continuous: - description: "Transmit will be continuous and will not stop automatically. " + $ref: '#/components/schemas/Pattern.Flow.RSVP.PathSessionLspTunnelIpv4.ExtendedTunnelId' + Flow.RSVP.PathObjectsClassRsvpHop: + description: |- + C-Type is specific to a class num. type: object properties: - gap: - description: |- - The minimum gap between packets expressed as bytes. - type: integer - format: uint32 - default: 12 + c_type: + $ref: '#/components/schemas/Flow.RSVP.PathObjectsRsvpHopCType' x-field-uid: 1 - delay: - $ref: '#/components/schemas/Flow.Delay' - x-field-uid: 2 - Flow.Delay: - description: "The optional container to specify the delay before starting \n\ - transmission of packets." + Flow.RSVP.PathObjectsRsvpHopCType: + description: |- + Object for RSVP_HOP class. Currently supported c-type is IPv4 (1). type: object properties: choice: type: string - default: bytes x-field-uid: 1 + default: ipv4 x-enum: - bytes: + ipv4: x-field-uid: 1 - nanoseconds: - x-field-uid: 2 - microseconds: - x-field-uid: 3 enum: - - bytes - - nanoseconds - - microseconds - bytes: - description: |- - The delay before starting transmission of packets. - A value of 0 indicates no delay. - type: number - format: float - minimum: 0 - default: 0 + - ipv4 + ipv4: + $ref: '#/components/schemas/Flow.RSVP.PathRsvpHopIpv4' x-field-uid: 2 - nanoseconds: - description: |- - The delay before starting transmission of packets. - A value of 0 indicates no delay. - type: number - format: float - minimum: 0 - default: 0 - x-field-uid: 3 - microseconds: - description: |- - The delay before starting transmission of packets. - A value of 0 indicates no delay. - type: number - format: float - minimum: 0 - default: 0 - x-field-uid: 4 - Flow.FixedPackets: + Flow.RSVP.PathRsvpHopIpv4: description: |- - Transmit a fixed number of packets after which the flow will stop. + IPv4 RSVP_HOP object: Class = 3, C-Type = 1 type: object properties: - packets: - description: |- - Stop transmit of the flow after this number of packets. - type: integer - format: uint32 - minimum: 1 - default: 1 + ipv4_next_previous_hop_address: x-field-uid: 1 - gap: - description: |- - The minimum gap between packets expressed as bytes. - type: integer - format: uint32 - default: 12 + $ref: '#/components/schemas/Pattern.Flow.RSVP.PathRsvpHopIpv4.Ipv4NextPreviousHopAddress' + logical_interface_handle: x-field-uid: 2 - delay: - $ref: '#/components/schemas/Flow.Delay' - x-field-uid: 3 - Flow.FixedSeconds: + $ref: '#/components/schemas/Pattern.Flow.RSVP.PathRsvpHopIpv4.LogicalInterfaceHandle' + Flow.RSVP.PathObjectsClassTimeValues: description: |- - Transmit for a fixed number of seconds after which the flow will stop. + C-Type is specific to a class num. type: object properties: - seconds: - description: |- - Stop transmit of the flow after this number of seconds. - type: number - minimum: 0 - default: 1 + c_type: + $ref: '#/components/schemas/Flow.RSVP.PathObjectsTimeValuesCType' x-field-uid: 1 - gap: - description: |- - The minimum gap between packets expressed as bytes. - type: integer - format: uint32 - default: 12 - x-field-uid: 2 - delay: - $ref: '#/components/schemas/Flow.Delay' - x-field-uid: 3 - Flow.Burst: - description: "Transmits continuous or fixed burst of packets. \nFor continuous\ - \ burst of packets, it will not automatically stop.\nFor fixed burst of packets,\ - \ it will stop after transmitting fixed number of bursts. " + Flow.RSVP.PathObjectsTimeValuesCType: + description: |- + Object for TIME_VALUES class. Currently supported c-type is Type 1 Time Value (1). type: object properties: - bursts: - description: |- - The number of packet bursts transmitted per flow. - A value of 0 implies continuous burst of packets. - type: integer - format: uint32 - default: 0 + choice: + type: string x-field-uid: 1 - packets: - description: |- - The number of packets transmitted per burst. - type: integer - format: uint32 - minimum: 1 - default: 1 + default: type_1_time_value + x-enum: + type_1_time_value: + x-field-uid: 1 + enum: + - type_1_time_value + type_1_time_value: + $ref: '#/components/schemas/Flow.RSVP.PathTimeValuesType1' x-field-uid: 2 - gap: - description: |- - The minimum gap between packets expressed as bytes. - type: integer - format: uint32 - default: 12 - x-field-uid: 3 - inter_burst_gap: - $ref: '#/components/schemas/Flow.Duration.InterBurstGap' - x-field-uid: 4 - Flow.Duration.InterBurstGap: + Flow.RSVP.PathTimeValuesType1: + description: |- + TIME_VALUES Object: Class = 5, C-Type = 1 type: object + properties: + refresh_period_r: + x-field-uid: 1 + $ref: '#/components/schemas/Pattern.Flow.RSVP.PathTimeValuesType1.RefreshPeriodR' + Flow.RSVP.PathObjectsClassExplicitRoute: description: |- - The optional container for specifying a gap between bursts. + C-Type is specific to a class num. + type: object + properties: + c_type: + $ref: '#/components/schemas/Flow.RSVP.PathObjectsClassExplicitRouteCType' + x-field-uid: 1 + Flow.RSVP.PathObjectsClassExplicitRouteCType: + description: |- + Object for EXPLICIT_ROUTE class and c-type is Type 1 Explicit Route (1). + type: object properties: choice: - description: |- - The type of inter burst gap units. type: string - default: bytes + default: type_1_explicit_route x-field-uid: 1 x-enum: - bytes: + type_1_explicit_route: x-field-uid: 1 - nanoseconds: - x-field-uid: 2 - microseconds: - x-field-uid: 3 enum: - - bytes - - nanoseconds - - microseconds - bytes: - description: |- - The amount of time between bursts expressed in bytes. - A value of 0 indicates no gap between bursts. - type: number - format: double - minimum: 0 - default: 12 + - type_1_explicit_route + type_1_explicit_route: + $ref: '#/components/schemas/Flow.RSVP.PathExplicitRouteType1' x-field-uid: 2 - nanoseconds: - description: |- - The amount of time between bursts expressed in nanoseconds. - A value of 0 indicates no gap between bursts. - type: number - format: double - minimum: 0 - default: 96 - x-field-uid: 3 - microseconds: - description: |- - The amount of time between bursts expressed in microseconds. - A value of 0 indicates no gap between bursts. - type: number - format: double - minimum: 0 - default: 0.096 - x-field-uid: 4 - Flow.Metrics: + Flow.RSVP.PathExplicitRouteType1: description: |- - The optional container for configuring flow metrics. + Type1 Explicit Route has subobjects. Currently supported subobjects are IPv4 prefix and 4-byte AS number. type: object properties: - enable: - description: "Enables flow metrics.\nEnabling this option may affect the\ - \ resultant packet payload due to \nadditional instrumentation data." - type: boolean - default: false + subobjects: + type: array + minItems: 1 + items: + $ref: '#/components/schemas/Flow.RSVP.Type1ExplicitRouteSubobjects' x-field-uid: 1 - loss: - description: |- - Enables additional flow metric loss calculation. - type: boolean - default: false - x-field-uid: 2 - rx_tx_ratio: - description: |- - Rx Tx ratio. - $ref: '#/components/schemas/Flow.RxTxRatio' - x-field-uid: 6 - timestamps: - description: |- - Enables additional flow metric first and last timestamps. - type: boolean - default: false - x-field-uid: 3 - latency: - description: |- - Latency metrics. - $ref: '#/components/schemas/Flow.Latency.Metrics' - x-field-uid: 4 - predefined_metric_tags: - description: |- - Predefined metric tags - $ref: '#/components/schemas/Flow.Predefined.Tags' - x-field-uid: 5 - Flow.Latency.Metrics: + Flow.RSVP.Type1ExplicitRouteSubobjects: description: |- - The optional container for per flow latency metric configuration. + Type is specific to a subobject. type: object properties: - enable: - description: "True to enable latency metrics using timestamps.\n\nEnabling\ - \ this option may affect the resultant packet payload due to \nadditional\ - \ instrumentation data." - type: boolean - default: false + type: + $ref: '#/components/schemas/Flow.RSVP.Type1ExplicitRouteSubobjectsType' x-field-uid: 1 - mode: - description: "Select the type of latency measurement. The different types\ - \ of \nlatency measurements are:\n\n\nstore_forward:\nThe time interval\ - \ starting when the last bit of the frame leaves the\nsending port and\ - \ ending when the first bit of the frame is seen on\nthe receiving port\ - \ (LIFO). This is based on the RFC 1242 standard.\n\n\ncut_through:\n\ - The time interval starting when the first bit of the frame leaves\nthe\ - \ sending port and ending when the first bit of the frame is seen\non\ - \ the receiving port (FIFO). This is based on the RFC 1242 \nstandard." + Flow.RSVP.Type1ExplicitRouteSubobjectsType: + description: |- + Currently supported subobjects are IPv4 address(1) and 4-byte AS number(5). + type: object + properties: + choice: type: string - default: store_forward - x-field-uid: 2 + x-field-uid: 1 + default: ipv4_prefix x-enum: - store_forward: + ipv4_prefix: x-field-uid: 1 - cut_through: + four_byte_as_number: x-field-uid: 2 enum: - - store_forward - - cut_through - Flow.Predefined.Tags: + - ipv4_prefix + - four_byte_as_number + ipv4_prefix: + $ref: '#/components/schemas/Flow.RSVP.PathExplicitRouteType1Ipv4Prefix' + x-field-uid: 2 + four_byte_as_number: + $ref: '#/components/schemas/Flow.RSVP.PathExplicitRouteType1FourByteASNumber' + x-field-uid: 3 + Flow.RSVP.PathExplicitRouteType1Ipv4Prefix: description: |- - List of predefined flow tracking options, outside packet fields, that can be enabled. + Class = EXPLICIT_ROUTE, Type1 ROUTE_RECORD C-Type = 1 Subobject: IPv4 Prefix, C-Type: 1 type: object properties: - rx_name: - description: |- - Enables Rx port or lag level disaggregation with predefined metrics tag name set as "rx_name". - The Rx port / lag names can be found under tagged_metrics tag names in flow metrics response. - type: boolean - default: false + l_bit: x-field-uid: 1 - Flow.RxTxRatio: + $ref: '#/components/schemas/Pattern.Flow.RSVP.PathExplicitRouteType1Ipv4Prefix.LBit' + length: + description: |- + The Length contains the total length of the subobject in bytes,including L ,Type and Length fields. The Length MUST be atleast 4, and MUST be a multiple of 4. + $ref: '#/components/schemas/Flow.RSVPExplicitRoute.Length' + x-field-uid: 2 + ipv4_address: + x-field-uid: 3 + $ref: '#/components/schemas/Pattern.Flow.RSVP.PathExplicitRouteType1Ipv4Prefix.Ipv4Address' + prefix: + description: |- + The prefix of the IPv4 address. + type: integer + format: uint32 + minimum: 1 + maximum: 32 + default: 32 + x-field-uid: 4 + Flow.RSVP.PathExplicitRouteType1FourByteASNumber: description: |- - Rx Tx ratio is the ratio of expected number of Rx packets across all Rx ports to the Tx packets - for the configured flow. It is a factor by which the Tx packet count is multiplied to calculate - the sum of expected Rx packet count, across all Rx ports. This will be used to calculate loss - percentage of flow at aggregate level. + Class = EXPLICIT_ROUTE, Type1 ROUTE_RECORD C-Type = 1 Subobject: 4-byte AS number, C-Type: 32 + type: object + properties: + l_bit: + x-field-uid: 1 + $ref: '#/components/schemas/Pattern.Flow.RSVP.PathExplicitRouteType1FourByteASNumber.LBit' + length: + description: |- + The Length contains the total length of the subobject in bytes,including L ,Type and Length fields. The Length MUST be atleast 4, and MUST be a multiple of 4. + $ref: '#/components/schemas/Flow.RSVPExplicitRoute.Length' + x-field-uid: 2 + reserved: + x-field-uid: 3 + $ref: '#/components/schemas/Pattern.Flow.RSVP.PathExplicitRouteType1FourByteASNumber.Reserved' + as_number: + description: |- + Autonomous System number to be set in the ERO sub-object that this LSP should traverse through. This field is applicable only if the value of 'type' is set to 'as_number'. Note that as per RFC3209, 4-byte AS encoding is not supported. + type: integer + format: uint32 + default: 0 + maximum: 65535 + x-field-uid: 4 + Flow.RSVPExplicitRoute.Length: type: object properties: choice: + description: |- + auto or configured value. type: string - default: value + default: auto x-field-uid: 1 x-enum: - rx_count: + auto: x-field-uid: 1 value: x-field-uid: 2 enum: - - rx_count + - auto - value - rx_count: - $ref: '#/components/schemas/Flow.RxTxRatio.RxCount' + auto: + description: |- + The OTG implementation can provide a system generated value for this property. If the OTG is unable to generate a value the default value must be used. + type: integer + format: uint32 + maximum: 256 + default: 8 x-field-uid: 2 value: - description: |- - Should be a positive, non-zero value. The default value of 1, is when the Rx packet count across - all ports is expected to match the Tx packet count. A custom integer value (>1) can be specified for - loss calculation for cases when there are multiple destination addresses configured within one flow, - but DUT is configured to replicate only to a subset of Rx ports. For cases when Tx side generates two - packets from each source in 1:1 protection mode but only one of the two packets are received by the - Rx port, we may need to specify a fractional value instead. - type: number - format: float - default: 1.0 + type: integer + format: uint32 + maximum: 256 + default: 8 x-field-uid: 3 - Flow.RxTxRatio.RxCount: + Flow.RSVP.PathObjectsClassLabelRequest: description: |- - This is for cases where one copy of Tx packet is received on all Rx ports and so the sum total of Rx packets - received across all Rx ports is a multiple of Rx port count and Tx packets. - Event: + C-Type is specific to a class num. + type: object + properties: + c_type: + $ref: '#/components/schemas/Flow.RSVP.PathObjectsLabelRequestCType' + x-field-uid: 1 + Flow.RSVP.PathObjectsLabelRequestCType: description: |- - The optional container for event configuration. + Object for LABEL_REQUEST class. Currently supported c-type is Without Label Range (1). type: object properties: - enable: - description: "True to enable all events. \nEnabling this option may affect\ - \ the resultant packet payload due to \nadditional instrumentation data." - type: boolean - default: false + choice: + type: string x-field-uid: 1 - link: - $ref: '#/components/schemas/Event.Link' + default: without_label_range + x-enum: + without_label_range: + x-field-uid: 1 + enum: + - without_label_range + without_label_range: + $ref: '#/components/schemas/Flow.RSVP.PathLabelRequestWithoutLabelRange' x-field-uid: 2 - rx_rate_threshold: - $ref: '#/components/schemas/Event.RxRateThreshold' - x-field-uid: 3 - route_advertise_withdraw: - $ref: '#/components/schemas/Event.RouteAdvertiseWithdraw' - x-field-uid: 4 - Event.RxRateThreshold: + Flow.RSVP.PathLabelRequestWithoutLabelRange: description: |- - The optional container for rx rate threshold event configuration. + Class = LABEL_REQUEST, Without Label Range C-Type = 1 type: object properties: - enable: - description: "True to enable the rx_rate_threshold event. \nEnabling this\ - \ option may affect the resultant packet payload due to \nadditional instrumentation\ - \ data." - type: boolean - default: false + reserved: x-field-uid: 1 - threshold: - description: "True to enable notifications when the rx rate of a flow passes\ - \ above \nor below the threshold value. " - type: number - format: float - maximum: 100 - minimum: 0 - default: 95 + $ref: '#/components/schemas/Pattern.Flow.RSVP.PathLabelRequestWithoutLabelRange.Reserved' + l3pid: x-field-uid: 2 - Event.Link: + $ref: '#/components/schemas/Pattern.Flow.RSVP.PathLabelRequestWithoutLabelRange.L3pid' + Flow.RSVP.PathObjectsClassSessionAttribute: description: |- - The optional container for link up/down event configuration. + C-Type is specific to a class num. type: object properties: - enable: - description: "True to enable notifications when a link up/down event occurs. " - type: boolean - default: false + c_type: + $ref: '#/components/schemas/Flow.RSVP.PathObjectsSessionAttributeCType' x-field-uid: 1 - Event.RouteAdvertiseWithdraw: + Flow.RSVP.PathObjectsSessionAttributeCType: description: |- - The optional container for route advertise/withdraw event configuration. + Object for SESSION_ATTRIBUTE class. Currently supported c-type is LSP_Tunnel (1) and LSP_Tunnel (7). type: object properties: - enable: - description: "True to enable notifications when a route advertise/withdraw\ - \ \nevent occurs. " - type: boolean - default: false - x-field-uid: 1 - Event.Request: - type: object - properties: - type: - description: "Constrain the events being returned by specifying event types.\n\ - If the list is empty then all event types will be returned. " - type: array - items: - type: string - example: route_withdraw - x-enum: - link_down: - x-field-uid: 1 - link_up: - x-field-uid: 2 - route_withdraw: - x-field-uid: 3 - route_advertise: - x-field-uid: 4 - flow_rx_rate_above_threshold: - x-field-uid: 5 - flow_rx_rate_below_threshold: - x-field-uid: 6 - enum: - - link_down - - link_up - - route_withdraw - - route_advertise - - flow_rx_rate_above_threshold - - flow_rx_rate_below_threshold + choice: + type: string x-field-uid: 1 - source: - description: "Constrain the events being returned by specifying event sources.\ - \ \nIf the list is empty then all event sources will be returned. \n\n\ - x-constraint:\n- /components/schemas/Port/properties/name\n- /components/schemas/Bgp.V4RouteRange/name\n\ - - /components/schemas/Bgp.V6RouteRange/name\n\n\nx-constraint:\n- /components/schemas/Port/properties/name\n\ - - /components/schemas/Bgp.V4RouteRange/name\n- /components/schemas/Bgp.V6RouteRange/name\n" - type: array - items: - type: string - x-constraint: - - /components/schemas/Port/properties/name - - /components/schemas/Bgp.V4RouteRange/name - - /components/schemas/Bgp.V6RouteRange/name + default: lsp_tunnel + x-enum: + lsp_tunnel: + x-field-uid: 1 + lsp_tunnel_ra: + x-field-uid: 2 + enum: + - lsp_tunnel + - lsp_tunnel_ra + lsp_tunnel: + $ref: '#/components/schemas/Flow.RSVP.PathSessionAttributeLspTunnel' x-field-uid: 2 - Event.Subscription: - description: "A container that describes what events a system should provide\ - \ and \noptionally where to publish them. " + lsp_tunnel_ra: + $ref: '#/components/schemas/Flow.RSVP.PathSessionAttributeLspTunnelRa' + x-field-uid: 3 + Flow.RSVP.PathSessionAttributeLspTunnel: + description: |- + SESSION_ATTRIBUTE class = 207, LSP_TUNNEL_RA C-Type = 7, resource affinity information. type: object properties: - events: - $ref: '#/components/schemas/Event.Request' + setup_priority: + description: |- + The priority of the session with respect to taking resources,in the range of 0 to 7. The value 0 is the highest priority. The Setup Priority is used in deciding whether this session can preempt another session. + type: integer + format: uint32 + default: 7 + maximum: 7 x-field-uid: 1 - callback_url: + holding_priority: description: |- - Indicates where a client wants to be notified of the events set in - the events property. - If this property is empty or null then no event notifications will - be forwarded. - type: string - format: uri - example: https://127.0.0.1/event/notification + The priority of the session with respect to holding resources,in the range of 0 to 7. The value 0 is the highest priority. The Setup Priority is used in deciding whether this session can preempt another session. + type: integer + format: uint32 + default: 7 + maximum: 7 x-field-uid: 2 - Lldp: + flags: + description: |- + 0x01 Local protection desired, 0x02 Label recording desired, 0x04 SE Style desired + $ref: '#/components/schemas/Flow.RSVPLspTunnel.Flag' + x-field-uid: 3 + name_length: + description: "The length of the display string before padding, in bytes.\ + \ " + type: string + format: hex + default: '0' + maxLength: 2 + x-field-uid: 4 + session_name: + description: "A null padded string of characters. " + type: string + minLength: 0 + maxLength: 254 + x-field-uid: 5 + Flow.RSVP.PathSessionAttributeLspTunnelRa: description: |- - Configuration of LLDP protocol IEEE Ref: https://www.ieee802.org/1/files/public/docs2002/lldp-protocol-00.pdf + SESSION_ATTRIBUTE class = 207, LSP_TUNNEL_RA C-Type = 1, it carries resource affinity information. type: object - required: - - connection - - name properties: - connection: - description: "The unique name of the object on which LLDP is running. " - $ref: '#/components/schemas/Lldp.Connection' + exclude_any: + description: "A 32-bit vector representing a set of attribute filters associated\ + \ with a tunnel any of which renders a link unacceptable. A null set (all\ + \ bits set to zero) doesn't render the link unacceptable. The most significant\ + \ byte in the hex-string is the farthest to the left in the byte sequence.\ + \ Leading zero bytes in the configured value may be omitted for brevity.\ + \ " + type: string + format: hex + default: '0' + minLength: 0 + maxLength: 8 x-field-uid: 1 - chassis_id: - description: |- - The Chassis ID is a mandatory TLV which identifies the chassis component of the endpoint identifier associated with the transmitting LLDP agent. If mac address is specified it should be in colon seperated mac address format. - $ref: '#/components/schemas/Lldp.ChassisId' + include_any: + description: "A 32-bit vector representing a set of attribute filters associated\ + \ with a tunnel any of which renders a link acceptable. A null set (all\ + \ bits set to zero) automatically passes. The most significant byte in\ + \ the hex-string is the farthest to the left in the byte sequence. Leading\ + \ zero bytes in the configured value may be omitted for brevity. " + type: string + format: hex + default: '0' + minLength: 0 + maxLength: 8 x-field-uid: 2 - port_id: - description: |- - The Port ID is a mandatory TLV which identifies the port component of the endpoint identifier associated with the transmitting LLDP agent. If the specified port is an IEEE 802.3 Repeater port, then this TLV is optional. - $ref: '#/components/schemas/Lldp.PortId' + include_all: + description: "A 32-bit vector representing a set of attribute filters associated\ + \ with a tunnel all of which must be present for a link to be acceptable.\ + \ A null set (all bits set to zero) automatically passes. The most significant\ + \ byte in the hex-string is the farthest to the left in the byte sequence.\ + \ Leading zero bytes in the configured value may be omitted for brevity.\ + \ " + type: string + format: hex + default: '0' + minLength: 0 + maxLength: 8 x-field-uid: 3 - system_name: + setup_priority: description: |- - The system name field shall contain an alpha-numeric string that indicates the system's administratively assigned name. The system name should be the system's fully qualified domain name. If implementations support IETF RFC 3418, the sysName object should be used for this field. - $ref: '#/components/schemas/Lldp.SystemName' + The priority of the session with respect to taking resources,in the range of 0 to 7. The value 0 is the highest priority. The Setup Priority is used in deciding whether this session can preempt another session. + type: integer + format: uint32 + default: 7 + maximum: 7 x-field-uid: 4 - hold_time: + holding_priority: description: |- - Specifies the amount of time in seconds a receiving device should maintain LLDP information sent by the device before discarding it. + The priority of the session with respect to holding resources,in the range of 0 to 7. The value 0 is the highest priority. The Setup Priority is used in deciding whether this session can preempt another session. type: integer format: uint32 - minimum: 10 - maximum: 65535 - default: 120 + default: 7 + maximum: 7 x-field-uid: 5 - advertisement_interval: + flags: description: |- - Set the transmission frequency of LLDP updates in seconds. - type: integer - format: uint32 - minimum: 5 - maximum: 65534 - default: 30 + 0x01 Local protection desired, 0x02 Label recording desired, 0x04 SE Style desired + $ref: '#/components/schemas/Flow.RSVPLspTunnel.Flag' x-field-uid: 6 - name: + name_length: + description: "The length of the display string before padding, in bytes.\ + \ " + type: string + format: hex + default: '0' + maxLength: 2 x-field-uid: 7 - description: |- - Globally unique name of an object. It also serves as the primary key for arrays of objects. + session_name: + description: "A null padded string of characters. " type: string - pattern: ^[\sa-zA-Z0-9-_()><\[\]]+$ - x-unique: global - Lldp.Connection: - description: "LLDP connection to a test port. In future if more connection options\ - \ arise LLDP connection object will be enhanced. " + minLength: 0 + maxLength: 254 + x-field-uid: 8 + Flow.RSVPLspTunnel.Flag: type: object properties: choice: - description: |- - The name of the test port or other connection objects on which LLDP is configured. type: string - x-field-uid: 1 + default: local_protection_desired x-enum: - port_name: + local_protection_desired: x-field-uid: 1 + label_recording_desired: + x-field-uid: 2 + se_style_desired: + x-field-uid: 3 + x-field-uid: 1 enum: - - port_name - port_name: - description: | - Name of the test port on which LLDP is configured on. - - x-constraint: - - /components/schemas/Port/properties/name - - - x-constraint: - - /components/schemas/Port/properties/name - type: string - x-constraint: - - /components/schemas/Port/properties/name - x-field-uid: 2 - Lldp.ChassisId: + - local_protection_desired + - label_recording_desired + - se_style_desired + Flow.RSVP.PathObjectsClassSenderTemplate: description: |- - The Chassis ID is a mandatory TLV which identifies the chassis component of the endpoint identifier associated with the transmitting LLDP agent. This field identifies the format and source of the chassis identifier string. It is based on the enumerator defined by the LldpChassisIdSubtype object from IEEE 802.1AB MIB. + C-Type is specific to a class num. + type: object + properties: + c_type: + $ref: '#/components/schemas/Flow.RSVP.PathObjectsSenderTemplateCType' + x-field-uid: 1 + Flow.RSVP.PathObjectsSenderTemplateCType: + description: |- + Object for SENDER_TEMPLATE class. Currently supported c-type is LSP Tunnel IPv4 (7). type: object properties: choice: - description: |- - Chassis ID subtype to be used in Chassis ID TLV. type: string - default: mac_address_subtype x-field-uid: 1 + default: lsp_tunnel_ipv4 x-enum: - mac_address_subtype: + lsp_tunnel_ipv4: x-field-uid: 1 - interface_name_subtype: - x-field-uid: 2 - local_subtype: - x-field-uid: 3 enum: - - mac_address_subtype - - interface_name_subtype - - local_subtype - mac_address_subtype: - $ref: '#/components/schemas/Lldp.ChassisMacSubType' + - lsp_tunnel_ipv4 + lsp_tunnel_ipv4: + $ref: '#/components/schemas/Flow.RSVP.PathSenderTemplateLspTunnelIpv4' x-field-uid: 2 - interface_name_subtype: - description: |- - Name of an interface of the chassis that uniquely identifies the chassis. - type: string + Flow.RSVP.PathSenderTemplateLspTunnelIpv4: + description: |- + Class = SENDER_TEMPLATE, LSP_TUNNEL_IPv4 C-Type = 7 + type: object + properties: + ipv4_tunnel_sender_address: + x-field-uid: 1 + $ref: '#/components/schemas/Pattern.Flow.RSVP.PathSenderTemplateLspTunnelIpv4.Ipv4TunnelSenderAddress' + reserved: + x-field-uid: 2 + $ref: '#/components/schemas/Pattern.Flow.RSVP.PathSenderTemplateLspTunnelIpv4.Reserved' + lsp_id: x-field-uid: 3 - local_subtype: - description: |- - Locally assigned name of the chassis. - type: string - x-field-uid: 4 - Lldp.PortId: + $ref: '#/components/schemas/Pattern.Flow.RSVP.PathSenderTemplateLspTunnelIpv4.LspId' + Flow.RSVP.PathObjectsClassSenderTspec: description: |- - The Port ID is a mandatory TLV which identifies the port component of the endpoint identifier associated with the transmitting LLDP agent.This field identifies the format and source of the port identifier string. It is based on the enumerator defined by the PtopoPortIdType object from RFC2922. + C-Type is specific to a class num. + type: object + properties: + c_type: + $ref: '#/components/schemas/Flow.RSVP.PathObjectsSenderTspecCType' + x-field-uid: 1 + Flow.RSVP.PathObjectsSenderTspecCType: + description: |- + Object for SENDER_TSPEC class. Currently supported c-type is int-serv (2). type: object properties: choice: - description: |- - Port ID subtype to be used in Port ID TLV. type: string - default: interface_name_subtype x-field-uid: 1 + default: int_serv x-enum: - mac_address_subtype: + int_serv: x-field-uid: 1 - interface_name_subtype: - x-field-uid: 2 - local_subtype: - x-field-uid: 3 enum: - - mac_address_subtype - - interface_name_subtype - - local_subtype - mac_address_subtype: - description: |- - The MAC Address configured in the Port ID TLV. - type: string + - int_serv + int_serv: + $ref: '#/components/schemas/Flow.RSVP.PathSenderTspecIntServ' x-field-uid: 2 - interface_name_subtype: - $ref: '#/components/schemas/Lldp.PortInterfaceNameSubType' + Flow.RSVP.PathSenderTspecIntServ: + description: |- + int-serv SENDER_TSPEC object: Class = 12, C-Type = 2 + type: object + properties: + version: + x-field-uid: 1 + $ref: '#/components/schemas/Pattern.Flow.RSVP.PathSenderTspecIntServ.Version' + reserved1: + x-field-uid: 2 + $ref: '#/components/schemas/Pattern.Flow.RSVP.PathSenderTspecIntServ.Reserved1' + overall_length: x-field-uid: 3 - local_subtype: + $ref: '#/components/schemas/Pattern.Flow.RSVP.PathSenderTspecIntServ.OverallLength' + service_header: + x-field-uid: 4 + $ref: '#/components/schemas/Pattern.Flow.RSVP.PathSenderTspecIntServ.ServiceHeader' + zero_bit: + x-field-uid: 5 + $ref: '#/components/schemas/Pattern.Flow.RSVP.PathSenderTspecIntServ.ZeroBit' + reserved2: + x-field-uid: 6 + $ref: '#/components/schemas/Pattern.Flow.RSVP.PathSenderTspecIntServ.Reserved2' + length_of_service_data: + x-field-uid: 7 + $ref: '#/components/schemas/Pattern.Flow.RSVP.PathSenderTspecIntServ.LengthOfServiceData' + parameter_id_token_bucket_tspec: + x-field-uid: 8 + $ref: '#/components/schemas/Pattern.Flow.RSVP.PathSenderTspecIntServ.ParameterIdTokenBucketTspec' + parameter_127_flag: + x-field-uid: 9 + $ref: '#/components/schemas/Pattern.Flow.RSVP.PathSenderTspecIntServ.Parameter127Flag' + parameter_127_length: + x-field-uid: 10 + $ref: '#/components/schemas/Pattern.Flow.RSVP.PathSenderTspecIntServ.Parameter127Length' + token_bucket_rate: description: |- - The Locally assigned name configured in the Port ID TLV. + Token bucket rate is set to sender's view of its generated traffic. + type: number + format: float + default: 0 + x-field-uid: 11 + token_bucket_size: + description: |- + Token bucket size is set to sender's view of its generated traffic. + type: number + format: float + default: 0 + x-field-uid: 12 + peak_data_rate: + description: |- + The peak rate may be set to the sender's peak traffic generation rate (if known and controlled), the physical interface line rate (if known), or positive infinity (if no better value is available). + type: number + format: float + default: 0 + x-field-uid: 13 + minimum_policed_unit: + x-field-uid: 14 + $ref: '#/components/schemas/Pattern.Flow.RSVP.PathSenderTspecIntServ.MinimumPolicedUnit' + maximum_packet_size: + x-field-uid: 15 + $ref: '#/components/schemas/Pattern.Flow.RSVP.PathSenderTspecIntServ.MaximumPacketSize' + Flow.RSVP.PathObjectsClassRecordRoute: + description: |- + C-Type is specific to a class num. + type: object + properties: + c_type: + $ref: '#/components/schemas/Flow.RSVP.PathObjectsRecordRouteCType' + x-field-uid: 1 + Flow.RSVP.PathObjectsRecordRouteCType: + description: |- + Object for RECORD_ROUTE class. c-type is Type 1 Route Record (1). + type: object + properties: + choice: type: string - x-field-uid: 4 - Lldp.ChassisMacSubType: - description: "The MAC address configured in the Chassis ID TLV. " + default: type_1_route_record + x-field-uid: 1 + x-enum: + type_1_route_record: + x-field-uid: 1 + enum: + - type_1_route_record + type_1_route_record: + $ref: '#/components/schemas/Flow.RSVP.PathRecordRouteType1' + x-field-uid: 2 + Flow.RSVP.PathRecordRouteType1: + description: |- + Type1 record route has list of subobjects. Currently supported subobjects are IPv4 address(1) and Label(3). + type: object + properties: + subobjects: + type: array + minItems: 1 + items: + $ref: '#/components/schemas/Flow.RSVP.Type1RecordRouteSubobjects' + x-field-uid: 1 + Flow.RSVP.Type1RecordRouteSubobjects: + description: |- + Type is specific to a subobject. + type: object + properties: + type: + $ref: '#/components/schemas/Flow.RSVP.PathObjectsRecordRouteSubObjectType' + x-field-uid: 1 + Flow.RSVP.PathObjectsRecordRouteSubObjectType: + description: |- + Currently supported subobjects are IPv4 address(1) and Label(3). type: object properties: choice: - description: |- - In auto mode the system generated value is set for this property, while if the choice is selected as value, a user configured value will be used for this property. type: string - default: auto x-field-uid: 1 + default: ipv4_address x-enum: - auto: + ipv4_address: x-field-uid: 1 - value: + label: x-field-uid: 2 enum: - - auto - - value - auto: + - ipv4_address + - label + ipv4_address: + $ref: '#/components/schemas/Flow.RSVP.PathRecordRouteType1Ipv4Address' + x-field-uid: 2 + label: + $ref: '#/components/schemas/Flow.RSVP.PathRecordRouteType1Label' + x-field-uid: 3 + Flow.RSVP.PathRecordRouteType1Ipv4Address: + description: |- + Class = RECORD_ROUTE, Type1 ROUTE_RECORD C-Type = 1 Subobject: IPv4 Address, C-Type: 1 + type: object + properties: + length: description: |- - The OTG implementation must provide a system generated value for this property. - type: string - format: mac + The Length contains the total length of the subobject in bytes, including the Type and Length fields. The Length MUST be atleast 4, and MUST be a multiple of 4. + $ref: '#/components/schemas/Flow.RSVPRouteRecord.Length' + x-field-uid: 1 + ipv4_address: x-field-uid: 2 - value: + $ref: '#/components/schemas/Pattern.Flow.RSVP.PathRecordRouteType1Ipv4Address.Ipv4Address' + prefix_length: + x-field-uid: 3 + $ref: '#/components/schemas/Pattern.Flow.RSVP.PathRecordRouteType1Ipv4Address.PrefixLength' + flags: description: |- - User must specify a value if mode is not auto. + 0x01 local_protection_available, 0x02 local_protection_in_use + $ref: '#/components/schemas/Flow.RSVPRecordRouteIPv4.Flag' + x-field-uid: 4 + Flow.RSVPRecordRouteIPv4.Flag: + type: object + properties: + choice: type: string - format: mac + default: local_protection_available + x-enum: + local_protection_available: + x-field-uid: 1 + local_protection_in_use: + x-field-uid: 2 + x-field-uid: 1 + enum: + - local_protection_available + - local_protection_in_use + Flow.RSVP.PathRecordRouteType1Label: + description: |- + Class = RECORD_ROUTE, Type1 ROUTE_RECORD C-Type = 1 Subobject: Label, C-Type: 3 + type: object + properties: + length: + description: |- + The Length contains the total length of the subobject in bytes, including the Type and Length fields. The Length MUST be atleast 4, and MUST be a multiple of 4. + $ref: '#/components/schemas/Flow.RSVPRouteRecord.Length' + x-field-uid: 1 + flags: + x-field-uid: 2 + $ref: '#/components/schemas/Pattern.Flow.RSVP.PathRecordRouteType1Label.Flags' + c_type: x-field-uid: 3 - Lldp.PortInterfaceNameSubType: - description: "The interface name configured in the Port ID TLV. " + $ref: '#/components/schemas/Pattern.Flow.RSVP.PathRecordRouteType1Label.CType' + contents_of_label_obejct: + description: |- + The contents of the Label Object. Copied from the Label Object. + type: string + format: hex + default: '00' + x-field-uid: 4 + Flow.RSVPRouteRecord.Length: type: object properties: choice: description: |- - In auto mode the system generated value is set for this property, while if the choice is selected as value, a user configured value will be used for this property. + auto or configured value. type: string default: auto x-field-uid: 1 @@ -8806,21 +8758,45 @@ components: - value auto: description: |- - The OTG implementation must provide a system generated value for this property. - type: string + The OTG implementation can provide a system generated value for this property. If the OTG is unable to generate a value the default value must be used. + type: integer + format: uint32 + maximum: 256 + default: 8 x-field-uid: 2 value: + type: integer + format: uint32 + maximum: 256 + default: 8 + x-field-uid: 3 + Flow.RSVP.PathObjectsCustom: + type: object + description: |- + Custom packet header + required: + - bytes + properties: + type: + x-field-uid: 1 + $ref: '#/components/schemas/Pattern.Flow.RSVP.PathObjectsCustom.Type' + length: + $ref: '#/components/schemas/Flow.RSVP.ObjectOptionsCustom.Length' + x-field-uid: 2 + bytes: description: |- - User must specify a value if mode is not auto. + A custom packet header defined as a string of hex bytes. The string MUST contain sequence of valid hex bytes. Spaces or colons can be part of the bytes but will be discarded. This packet header can be used in multiple places in the packet. type: string + pattern: '^[A-Fa-f0-9: ]+$' x-field-uid: 3 - Lldp.SystemName: - description: "The system Name configured in the System Name TLV. " + Flow.RSVP.ObjectOptionsCustom.Length: + description: |- + Length for custom options. type: object properties: choice: description: |- - In auto mode the system generated value is set for this property, while if the choice is selected as value, a user configured value will be used for this property. + auto or configured value. type: string default: auto x-field-uid: 1 @@ -8834,997 +8810,1082 @@ components: - value auto: description: |- - The OTG implementation must provide a system generated value for this property. - type: string + The OTG implementation can provide a system generated value for this property. If the OTG is unable to generate a value the default value must be used. + type: integer + format: uint32 + default: 4 x-field-uid: 2 value: - description: |- - User must specify a value if mode is not auto. - type: string + type: integer + format: uint32 + default: 4 x-field-uid: 3 - Error: + Flow.Size: description: |- - Error response generated while serving API request. + The frame size which overrides the total length of the packet type: object - required: - - code - - errors properties: - code: - description: |- - Numeric status code based on the underlying transport being used. - The API server MUST set this code explicitly based on following references: - - HTTP 4xx errors: https://datatracker.ietf.org/doc/html/rfc9110#section-15.5 - - HTTP 5xx errors: https://datatracker.ietf.org/doc/html/rfc9110#section-15.6 - - gRPC errors: https://grpc.github.io/grpc/core/md_doc_statuscodes.html - type: integer - format: int32 - x-field-uid: 1 - kind: - description: |- - Classification of error originating from within API server that may not be mapped to the value in `code`. - Absence of this field may indicate that the error did not originate from within API server. + choice: type: string + default: fixed + x-field-uid: 1 x-enum: - validation: + fixed: x-field-uid: 1 - internal: + increment: x-field-uid: 2 - x-field-uid: 2 + random: + x-field-uid: 3 + weight_pairs: + x-field-uid: 4 enum: - - validation - - internal - errors: - description: |- - List of error messages generated while executing the request. - type: array - items: - type: string + - fixed + - increment + - random + - weight_pairs + fixed: + type: integer + format: uint32 + default: 64 + x-field-uid: 2 + increment: + $ref: '#/components/schemas/Flow.SizeIncrement' x-field-uid: 3 - Warning: - description: |- - A list of warnings that have occurred while executing the request. + random: + $ref: '#/components/schemas/Flow.SizeRandom' + x-field-uid: 4 + weight_pairs: + $ref: '#/components/schemas/Flow.SizeWeightPairs' + x-field-uid: 5 + Flow.SizeIncrement: type: object + description: "Frame size that increments from a starting size to \nan ending\ + \ size incrementing by a step size." properties: - warnings: - description: "A list of any system specific warnings that have occurred\ - \ while \nexecuting the request." - type: array - items: - type: string + start: + description: |- + Starting frame size in bytes + type: integer + format: uint32 + minimum: 1 + default: 64 x-field-uid: 1 - Config.Update: - description: |- - Request for updating specific attributes of resources in traffic generator - type: object - properties: - choice: - type: string - x-enum: - flows: - x-field-uid: 1 - x-field-uid: 1 - enum: - - flows - flows: - $ref: '#/components/schemas/Flows.Update' + end: + description: |- + Ending frame size in bytes + type: integer + format: uint32 + minimum: 64 + default: 1518 x-field-uid: 2 - Flows.Update: - description: |- - A container of flows with associated properties to be updated without affecting the flows current transmit state. + step: + description: |- + Step frame size in bytes + type: integer + format: uint32 + default: 1 + x-field-uid: 3 + Flow.SizeRandom: type: object - required: - - property_names - - flows + description: |- + Random frame size from a min value to a max value. properties: - property_names: - description: |- - Flow properties to be updated without affecting the transmit state. - type: array - items: - type: string - x-enum: - rate: - x-field-uid: 1 - size: - x-field-uid: 2 - enum: - - rate - - size + min: + type: integer + format: uint32 + default: 64 x-field-uid: 1 - flows: - description: |- - The list of configured flows for which given property will be updated. - type: array - items: - $ref: '#/components/schemas/Flow' + max: + type: integer + format: uint32 + default: 1518 x-field-uid: 2 - Control.State: - description: |- - Request for setting operational state of configured resources. + Flow.SizeWeightPairs: type: object - required: - - choice + description: "Frame size distribution, defined as pairs (including\ + \ IMIX distribution).\nFrames are randomly generated such that the proportion\ + \ of each frame size out of the total number of frames \nare matching with\ + \ the weight value of the pair. However, as with any other\ + \ probability \ndistribution, the sample distribution is close to theoretical\ + \ value only if the size of the sample is reasonably large. \nWhen the number\ + \ of frames is very low the transmitted frames may not come close to the ratio\ + \ described in the weight." properties: choice: type: string + default: predefined + x-field-uid: 1 x-enum: - port: + predefined: x-field-uid: 1 - protocol: + custom: x-field-uid: 2 - traffic: - x-field-uid: 3 - x-field-uid: 1 enum: - - port - - protocol - - traffic - port: - $ref: '#/components/schemas/State.Port' - x-field-uid: 2 - protocol: - $ref: '#/components/schemas/State.Protocol' - x-field-uid: 3 - traffic: - $ref: '#/components/schemas/State.Traffic' - x-field-uid: 4 - State.Port: - description: |- - States associated with configured ports. - type: object - required: - - choice - properties: - choice: + - predefined + - custom + predefined: type: string + default: imix + description: "Specify predefined frame size distribution \ + \ pairs (including IMIX distribution). \nThe available predefined distribution\ + \ pairs are:\n- IMIX (64:7, 570:4, and 1518:1) \n- IPSec IMIX (90:58.67,\ + \ 92:2, 594:23.66 and 1418:15.67) \n- IPv6 IMIX (60:58.67, 496:2, 594:23.66\ + \ and 1518:15.67) \n- Standard IMIX (58:58.67, 62:2, 594:23.66 and 1518:15.67)\ + \ \n- TCP IMIX (90:58.67, 92:2, 594:23.66 and 1518:15.67) " + x-field-uid: 2 x-enum: - link: + imix: x-field-uid: 1 - capture: + ipsec_imix: x-field-uid: 2 - x-field-uid: 1 + ipv6_imix: + x-field-uid: 3 + standard_imix: + x-field-uid: 4 + tcp_imix: + x-field-uid: 5 enum: - - link - - capture - link: - $ref: '#/components/schemas/State.Port.Link' - x-field-uid: 2 - capture: - $ref: '#/components/schemas/State.Port.Capture' + - imix + - ipsec_imix + - ipv6_imix + - standard_imix + - tcp_imix + custom: + type: array + items: + $ref: '#/components/schemas/Flow.SizeWeightPairs.Custom' x-field-uid: 3 - State.Traffic: - description: |- - States associated with configured flows + Flow.SizeWeightPairs.Custom: type: object - required: - - choice + description: |- + Custom frame size distribution pair. properties: - choice: - type: string - x-enum: - flow_transmit: - x-field-uid: 1 + size: + description: |- + The size of the frame (in bytes) for this weight pair. + type: integer + format: uint32 + minimum: 12 + maximum: 65535 + default: 64 x-field-uid: 1 - enum: - - flow_transmit - flow_transmit: - $ref: '#/components/schemas/State.Traffic.FlowTransmit' + weight: + description: "Weight assigned to the corresponding frame size in this weight\ + \ pair. \nHigher weight means more packets." + type: number + format: float + default: 1 x-field-uid: 2 - State.Protocol: - description: |- - States associated with protocols on configured resources. + Flow.Rate: type: object - required: - - choice + description: |- + The rate of packet transmission properties: choice: + description: |- + The available types of flow rate. type: string + default: pps + x-field-uid: 1 x-enum: - all: + pps: x-field-uid: 1 - route: + bps: x-field-uid: 2 - lacp: + kbps: x-field-uid: 3 - bgp: + mbps: x-field-uid: 4 - isis: + gbps: x-field-uid: 5 - x-field-uid: 1 + percentage: + x-field-uid: 6 enum: - - all - - route - - lacp - - bgp - - isis - all: - $ref: '#/components/schemas/State.Protocol.All' + - pps + - bps + - kbps + - mbps + - gbps + - percentage + pps: + description: |- + Packets per second. + type: integer + format: uint64 + minimum: 1 + default: 1000 x-field-uid: 2 - route: - $ref: '#/components/schemas/State.Protocol.Route' + bps: + description: |- + Bits per second. + type: integer + format: uint64 + minimum: 672 + default: 1000000000 x-field-uid: 3 - lacp: - $ref: '#/components/schemas/State.Protocol.Lacp' + kbps: + description: |- + Kilobits per second. + type: integer + format: uint64 + minimum: 1 + default: 1000000 x-field-uid: 4 - bgp: - $ref: '#/components/schemas/State.Protocol.Bgp' + mbps: + description: "Megabits per second. " + type: integer + format: uint64 + minimum: 1 + default: 1000 x-field-uid: 5 - isis: - $ref: '#/components/schemas/State.Protocol.Isis' + gbps: + description: |- + Gigabits per second. + type: integer + format: uint32 + minimum: 1 + default: 1 x-field-uid: 6 - State.Port.Link: - description: |- - Sets the link of configured ports. - type: object - required: - - state + percentage: + description: |- + The percentage of a port location's available bandwidth. + type: number + format: float + minimum: 0 + maximum: 100 + default: 100 + x-field-uid: 7 + Flow.Duration: + description: "A container for different transmit durations. " + type: object properties: - port_names: - description: | - The names of target ports. An empty or null list will target all ports. - - x-constraint: - - /components/schemas/Port/properties/name - - - x-constraint: - - /components/schemas/Port/properties/name - type: array - items: - type: string - x-constraint: - - /components/schemas/Port/properties/name - x-field-uid: 1 - state: + choice: description: |- - The link state. + A choice used to determine the type of duration. type: string - x-field-uid: 2 + default: continuous + x-field-uid: 1 x-enum: - up: + fixed_packets: x-field-uid: 1 - down: + fixed_seconds: x-field-uid: 2 + burst: + x-field-uid: 3 + continuous: + x-field-uid: 4 enum: - - up - - down - State.Port.Capture: - description: |- - Sets the capture state of configured ports + - fixed_packets + - fixed_seconds + - burst + - continuous + fixed_packets: + $ref: '#/components/schemas/Flow.FixedPackets' + x-field-uid: 2 + fixed_seconds: + $ref: '#/components/schemas/Flow.FixedSeconds' + x-field-uid: 3 + burst: + $ref: '#/components/schemas/Flow.Burst' + x-field-uid: 4 + continuous: + $ref: '#/components/schemas/Flow.Continuous' + x-field-uid: 5 + Flow.Continuous: + description: "Transmit will be continuous and will not stop automatically. " type: object - required: - - state properties: - port_names: - description: | - The names of ports to which the capture state will be applied to. If the list of port_names is empty or null the state will be applied to all configured ports. - If the list is not empty any port that is not included in the list of port_names MUST be ignored and not included in the state change. - - x-constraint: - - /components/schemas/Port/properties/name - - - x-constraint: - - /components/schemas/Port/properties/name - type: array - items: - type: string - x-constraint: - - /components/schemas/Port/properties/name - x-field-uid: 1 - state: + gap: description: |- - The capture state. - type: string + The minimum gap between packets expressed as bytes. + type: integer + format: uint32 + default: 12 + x-field-uid: 1 + delay: + $ref: '#/components/schemas/Flow.Delay' x-field-uid: 2 - x-enum: - start: - x-field-uid: 1 - stop: - x-field-uid: 2 - enum: - - start - - stop - State.Traffic.FlowTransmit: - description: |- - Provides state control of flow transmission. + Flow.Delay: + description: "The optional container to specify the delay before starting \n\ + transmission of packets." type: object - required: - - state properties: - flow_names: - description: | - The names of flows to which the transmit state will be applied to. If the list of flow_names is empty or null the state will be applied to all configured flows. - If the list is not empty any flow that is not included in the list of flow_names MUST be ignored and not included in the state change. - - x-constraint: - - /components/schemas/Flow/properties/name - - - x-constraint: - - /components/schemas/Flow/properties/name - type: array - items: - type: string - x-constraint: - - /components/schemas/Flow/properties/name - x-field-uid: 1 - state: - description: |- - The transmit state. - If the value of the state property is 'start' then all flows defined by the 'flow_names' property will be started and the metric counters MUST be cleared prior to starting the flow(s). - If the value of the state property is 'stop' then all flows defined by the 'flow_names' property will be stopped and the metric counters MUST NOT be cleared. - If the value of the state property is 'pause' then all flows defined by the 'flow_names' property will be paused and the metric counters MUST NOT be cleared. - If the value of the state property is 'resume' then any paused flows defined by the 'flow_names' property will start transmit at the point at which they were paused. Any flow that is stopped will start transmit at the beginning of the flow. The flow(s) MUST NOT have their metric counters cleared. + choice: type: string - x-field-uid: 2 + default: bytes + x-field-uid: 1 x-enum: - start: + bytes: x-field-uid: 1 - stop: + nanoseconds: x-field-uid: 2 - pause: + microseconds: x-field-uid: 3 - resume: - x-field-uid: 4 enum: - - start - - stop - - pause - - resume - State.Protocol.All: + - bytes + - nanoseconds + - microseconds + bytes: + description: |- + The delay before starting transmission of packets. + A value of 0 indicates no delay. + type: number + format: float + minimum: 0 + default: 0 + x-field-uid: 2 + nanoseconds: + description: |- + The delay before starting transmission of packets. + A value of 0 indicates no delay. + type: number + format: float + minimum: 0 + default: 0 + x-field-uid: 3 + microseconds: + description: |- + The delay before starting transmission of packets. + A value of 0 indicates no delay. + type: number + format: float + minimum: 0 + default: 0 + x-field-uid: 4 + Flow.FixedPackets: description: |- - Sets all configured protocols to `start` or `stop` state. - Setting protocol state to `start` shall be a no-op if preceding `set_config` API call was made with `config.options.protocol_options.auto_start_all` set to `true` or if all the configured protocols are already started. + Transmit a fixed number of packets after which the flow will stop. type: object - required: - - state properties: - state: + packets: description: |- - Protocol states - type: string + Stop transmit of the flow after this number of packets. + type: integer + format: uint32 + minimum: 1 + default: 1 x-field-uid: 1 - x-enum: - start: - x-field-uid: 1 - stop: - x-field-uid: 2 - enum: - - start - - stop - State.Protocol.Route: + gap: + description: |- + The minimum gap between packets expressed as bytes. + type: integer + format: uint32 + default: 12 + x-field-uid: 2 + delay: + $ref: '#/components/schemas/Flow.Delay' + x-field-uid: 3 + Flow.FixedSeconds: description: |- - Sets the state of configured routes + Transmit for a fixed number of seconds after which the flow will stop. type: object - required: - - state properties: - names: - description: | - The names of device route objects to control. If no names are specified then all route objects that match the x-constraint will be affected. - - x-constraint: - - /components/schemas/Bgp.V4RouteRange/properties/name - - /components/schemas/Bgp.V6RouteRange/properties/name - - /components/schemas/Isis.V4RouteRange/properties/name - - /components/schemas/Isis.V6RouteRange/properties/name - - - x-constraint: - - /components/schemas/Bgp.V4RouteRange/properties/name - - /components/schemas/Bgp.V6RouteRange/properties/name - - /components/schemas/Isis.V4RouteRange/properties/name - - /components/schemas/Isis.V6RouteRange/properties/name - type: array - items: - type: string - x-constraint: - - /components/schemas/Bgp.V4RouteRange/properties/name - - /components/schemas/Bgp.V6RouteRange/properties/name - - /components/schemas/Isis.V4RouteRange/properties/name - - /components/schemas/Isis.V6RouteRange/properties/name + seconds: + description: |- + Stop transmit of the flow after this number of seconds. + type: number + minimum: 0 + default: 1 x-field-uid: 1 - state: + gap: description: |- - Route states - type: string + The minimum gap between packets expressed as bytes. + type: integer + format: uint32 + default: 12 x-field-uid: 2 - x-enum: - withdraw: - x-field-uid: 1 - advertise: - x-field-uid: 2 - enum: - - withdraw - - advertise - State.Protocol.Lacp: - description: |- - Sets state of configured LACP + delay: + $ref: '#/components/schemas/Flow.Delay' + x-field-uid: 3 + Flow.Burst: + description: "Transmits continuous or fixed burst of packets. \nFor continuous\ + \ burst of packets, it will not automatically stop.\nFor fixed burst of packets,\ + \ it will stop after transmitting fixed number of bursts. " type: object - required: - - choice + properties: + bursts: + description: |- + The number of packet bursts transmitted per flow. + A value of 0 implies continuous burst of packets. + type: integer + format: uint32 + default: 0 + x-field-uid: 1 + packets: + description: |- + The number of packets transmitted per burst. + type: integer + format: uint32 + minimum: 1 + default: 1 + x-field-uid: 2 + gap: + description: |- + The minimum gap between packets expressed as bytes. + type: integer + format: uint32 + default: 12 + x-field-uid: 3 + inter_burst_gap: + $ref: '#/components/schemas/Flow.Duration.InterBurstGap' + x-field-uid: 4 + Flow.Duration.InterBurstGap: + type: object + description: |- + The optional container for specifying a gap between bursts. properties: choice: + description: |- + The type of inter burst gap units. type: string + default: bytes + x-field-uid: 1 x-enum: - admin: + bytes: x-field-uid: 1 - member_ports: + nanoseconds: x-field-uid: 2 - x-field-uid: 1 + microseconds: + x-field-uid: 3 enum: - - admin - - member_ports - admin: - $ref: '#/components/schemas/State.Protocol.Lacp.Admin' + - bytes + - nanoseconds + - microseconds + bytes: + description: |- + The amount of time between bursts expressed in bytes. + A value of 0 indicates no gap between bursts. + type: number + format: double + minimum: 0 + default: 12 x-field-uid: 2 - member_ports: - $ref: '#/components/schemas/State.Protocol.Lacp.MemberPorts' + nanoseconds: + description: |- + The amount of time between bursts expressed in nanoseconds. + A value of 0 indicates no gap between bursts. + type: number + format: double + minimum: 0 + default: 96 x-field-uid: 3 - State.Protocol.Lacp.Admin: + microseconds: + description: |- + The amount of time between bursts expressed in microseconds. + A value of 0 indicates no gap between bursts. + type: number + format: double + minimum: 0 + default: 0.096 + x-field-uid: 4 + Flow.Metrics: description: |- - Sets admin state of LACP configured on LAG members - required: - - state + The optional container for configuring flow metrics. + type: object properties: - lag_member_names: - description: | - The names of LAG members (ports) for which the state has to be applied. An empty or null list will control all LAG members. - - x-constraint: - - /components/schemas/Port/properties/name - - - x-constraint: - - /components/schemas/Port/properties/name - type: array - items: - type: string - x-constraint: - - /components/schemas/Port/properties/name + enable: + description: "Enables flow metrics.\nEnabling this option may affect the\ + \ resultant packet payload due to \nadditional instrumentation data." + type: boolean + default: false x-field-uid: 1 - state: + loss: description: |- - The LACP Member admin state. 'up' will send LACPDUs with 'sync' flag set on selected member ports. 'down' will send LACPDUs with 'sync' flag unset on selected member ports. - type: string + Enables additional flow metric loss calculation. + type: boolean + default: false x-field-uid: 2 - x-enum: - up: - x-field-uid: 1 - down: - x-field-uid: 2 - enum: - - up - - down - State.Protocol.Lacp.MemberPorts: + rx_tx_ratio: + description: |- + Rx Tx ratio. + $ref: '#/components/schemas/Flow.RxTxRatio' + x-field-uid: 6 + timestamps: + description: |- + Enables additional flow metric first and last timestamps. + type: boolean + default: false + x-field-uid: 3 + latency: + description: |- + Latency metrics. + $ref: '#/components/schemas/Flow.Latency.Metrics' + x-field-uid: 4 + predefined_metric_tags: + description: |- + Predefined metric tags + $ref: '#/components/schemas/Flow.Predefined.Tags' + x-field-uid: 5 + Flow.Latency.Metrics: description: |- - Sets state of LACP member ports configured on LAG. - required: - - state + The optional container for per flow latency metric configuration. + type: object properties: - lag_member_names: - description: | - The names of LAG members (ports) for which the state has to be applied. An empty or null list will control all LAG members. - - x-constraint: - - /components/schemas/Port/properties/name - - - x-constraint: - - /components/schemas/Port/properties/name - type: array - items: - type: string - x-constraint: - - /components/schemas/Port/properties/name + enable: + description: "True to enable latency metrics using timestamps.\n\nEnabling\ + \ this option may affect the resultant packet payload due to \nadditional\ + \ instrumentation data." + type: boolean + default: false x-field-uid: 1 - state: - description: |- - The desired LACP member port state. + mode: + description: "Select the type of latency measurement. The different types\ + \ of \nlatency measurements are:\n\n\nstore_forward:\nThe time interval\ + \ starting when the last bit of the frame leaves the\nsending port and\ + \ ending when the first bit of the frame is seen on\nthe receiving port\ + \ (LIFO). This is based on the RFC 1242 standard.\n\n\ncut_through:\n\ + The time interval starting when the first bit of the frame leaves\nthe\ + \ sending port and ending when the first bit of the frame is seen\non\ + \ the receiving port (FIFO). This is based on the RFC 1242 \nstandard." type: string + default: store_forward x-field-uid: 2 x-enum: - up: + store_forward: x-field-uid: 1 - down: + cut_through: x-field-uid: 2 enum: - - up - - down - State.Protocol.Bgp: + - store_forward + - cut_through + Flow.Predefined.Tags: description: |- - Sets state of configured BGP peers. + List of predefined flow tracking options, outside packet fields, that can be enabled. + type: object + properties: + rx_name: + description: |- + Enables Rx port or lag level disaggregation with predefined metrics tag name set as "rx_name". + The Rx port / lag names can be found under tagged_metrics tag names in flow metrics response. + type: boolean + default: false + x-field-uid: 1 + Flow.RxTxRatio: + description: |- + Rx Tx ratio is the ratio of expected number of Rx packets across all Rx ports to the Tx packets + for the configured flow. It is a factor by which the Tx packet count is multiplied to calculate + the sum of expected Rx packet count, across all Rx ports. This will be used to calculate loss + percentage of flow at aggregate level. type: object - required: - - choice properties: choice: type: string + default: value + x-field-uid: 1 x-enum: - peers: + rx_count: x-field-uid: 1 - x-field-uid: 1 + value: + x-field-uid: 2 enum: - - peers - peers: - $ref: '#/components/schemas/State.Protocol.Bgp.Peers' + - rx_count + - value + rx_count: + $ref: '#/components/schemas/Flow.RxTxRatio.RxCount' x-field-uid: 2 - State.Protocol.Bgp.Peers: - description: |- - Sets state of configured BGP peers. - required: - - state - properties: - peer_names: - description: | - The names of BGP peers for which the state has to be applied. An empty or null list will control all BGP peers. - - x-constraint: - - /components/schemas/Bgp.V4Peer/properties/name - - /components/schemas/Bgp.V6Peer/properties/name - - - x-constraint: - - /components/schemas/Bgp.V4Peer/properties/name - - /components/schemas/Bgp.V6Peer/properties/name - type: array - items: - type: string - x-constraint: - - /components/schemas/Bgp.V4Peer/properties/name - - /components/schemas/Bgp.V6Peer/properties/name - x-field-uid: 1 - state: - description: "The desired state of BGP peer. If the desired state is 'up',\ - \ underlying IP interface(s) would be brought up automatically (if not\ - \ already up), would attempt to bring up the BGP session(s) and advertise\ - \ route(s), if configured. If the desired state is 'down', BGP session(s)\ - \ would be brought down. " - type: string - x-field-uid: 2 - x-enum: - up: - x-field-uid: 1 - down: - x-field-uid: 2 - enum: - - up - - down - State.Protocol.Isis: + value: + description: |- + Should be a positive, non-zero value. The default value of 1, is when the Rx packet count across + all ports is expected to match the Tx packet count. A custom integer value (>1) can be specified for + loss calculation for cases when there are multiple destination addresses configured within one flow, + but DUT is configured to replicate only to a subset of Rx ports. For cases when Tx side generates two + packets from each source in 1:1 protection mode but only one of the two packets are received by the + Rx port, we may need to specify a fractional value instead. + type: number + format: float + default: 1.0 + x-field-uid: 3 + Flow.RxTxRatio.RxCount: description: |- - Sets state of configured ISIS routers. + This is for cases where one copy of Tx packet is received on all Rx ports and so the sum total of Rx packets + received across all Rx ports is a multiple of Rx port count and Tx packets. + Event: + description: |- + The optional container for event configuration. type: object - required: - - choice properties: - choice: - type: string - x-enum: - routers: - x-field-uid: 1 + enable: + description: "True to enable all events. \nEnabling this option may affect\ + \ the resultant packet payload due to \nadditional instrumentation data." + type: boolean + default: false x-field-uid: 1 - enum: - - routers - routers: - $ref: '#/components/schemas/State.Protocol.Isis.Routers' + link: + $ref: '#/components/schemas/Event.Link' x-field-uid: 2 - State.Protocol.Isis.Routers: + rx_rate_threshold: + $ref: '#/components/schemas/Event.RxRateThreshold' + x-field-uid: 3 + route_advertise_withdraw: + $ref: '#/components/schemas/Event.RouteAdvertiseWithdraw' + x-field-uid: 4 + Event.RxRateThreshold: description: |- - Sets state of configured ISIS routers. - required: - - state + The optional container for rx rate threshold event configuration. + type: object properties: - router_names: - description: | - The names of ISIS routers for which the state has to be applied. An empty or null list will control all ISIS routers. - - x-constraint: - - /components/schemas/Device.IsisRouter/properties/name - - - x-constraint: - - /components/schemas/Device.IsisRouter/properties/name - type: array - items: - type: string - x-constraint: - - /components/schemas/Device.IsisRouter/properties/name + enable: + description: "True to enable the rx_rate_threshold event. \nEnabling this\ + \ option may affect the resultant packet payload due to \nadditional instrumentation\ + \ data." + type: boolean + default: false x-field-uid: 1 - state: - description: "The desired state of ISIS router. If the desired state is\ - \ 'up', would attempt to bring up the ISIS session(s) with respective\ - \ peer(s) and advertise route(s), if configured. If the desired state\ - \ is 'down', would bring down ISIS session(s) with respective peer(s). " - type: string + threshold: + description: "True to enable notifications when the rx rate of a flow passes\ + \ above \nor below the threshold value. " + type: number + format: float + maximum: 100 + minimum: 0 + default: 95 x-field-uid: 2 - x-enum: - up: - x-field-uid: 1 - down: - x-field-uid: 2 - enum: - - up - - down - Control.Action: + Event.Link: description: |- - Request for triggering action against configured resources. + The optional container for link up/down event configuration. type: object - required: - - choice properties: - choice: - type: string - x-enum: - protocol: - x-field-uid: 1 + enable: + description: "True to enable notifications when a link up/down event occurs. " + type: boolean + default: false x-field-uid: 1 - enum: - - protocol - protocol: - $ref: '#/components/schemas/Action.Protocol' - x-field-uid: 2 - Control.Action.Response: + Event.RouteAdvertiseWithdraw: description: |- - Response for action triggered against configured resources along with warnings. + The optional container for route advertise/withdraw event configuration. type: object properties: - warnings: - description: |- - List of warnings generated while triggering specified action + enable: + description: "True to enable notifications when a route advertise/withdraw\ + \ \nevent occurs. " + type: boolean + default: false + x-field-uid: 1 + Event.Request: + type: object + properties: + type: + description: "Constrain the events being returned by specifying event types.\n\ + If the list is empty then all event types will be returned. " type: array items: type: string + example: route_withdraw + x-enum: + link_down: + x-field-uid: 1 + link_up: + x-field-uid: 2 + route_withdraw: + x-field-uid: 3 + route_advertise: + x-field-uid: 4 + flow_rx_rate_above_threshold: + x-field-uid: 5 + flow_rx_rate_below_threshold: + x-field-uid: 6 + enum: + - link_down + - link_up + - route_withdraw + - route_advertise + - flow_rx_rate_above_threshold + - flow_rx_rate_below_threshold x-field-uid: 1 - response: - $ref: '#/components/schemas/Action.Response' + source: + description: "Constrain the events being returned by specifying event sources.\ + \ \nIf the list is empty then all event sources will be returned. \n\n\ + x-constraint:\n- /components/schemas/Port/properties/name\n- /components/schemas/Bgp.V4RouteRange/name\n\ + - /components/schemas/Bgp.V6RouteRange/name\n" + type: array + items: + type: string + x-constraint: + - /components/schemas/Port/properties/name + - /components/schemas/Bgp.V4RouteRange/name + - /components/schemas/Bgp.V6RouteRange/name x-field-uid: 2 - Action.Response: - description: |- - Response for action triggered against configured resources. + Event.Subscription: + description: "A container that describes what events a system should provide\ + \ and \noptionally where to publish them. " type: object - required: - - choice properties: - choice: - type: string - x-enum: - protocol: - x-field-uid: 1 + events: + $ref: '#/components/schemas/Event.Request' x-field-uid: 1 - enum: - - protocol - protocol: - $ref: '#/components/schemas/Action.Response.Protocol' + callback_url: + description: |- + Indicates where a client wants to be notified of the events set in + the events property. + If this property is empty or null then no event notifications will + be forwarded. + type: string + format: uri + example: https://127.0.0.1/event/notification x-field-uid: 2 - Action.Protocol: + Lldp: description: |- - Actions associated with protocols on configured resources. + Configuration of LLDP protocol IEEE Ref: https://www.ieee802.org/1/files/public/docs2002/lldp-protocol-00.pdf type: object required: - - choice + - connection + - name properties: - choice: - type: string - x-enum: - ipv4: - x-field-uid: 1 - ipv6: - x-field-uid: 2 - bgp: - x-field-uid: 3 + connection: + description: "The unique name of the object on which LLDP is running. " + $ref: '#/components/schemas/Lldp.Connection' x-field-uid: 1 - enum: - - ipv4 - - ipv6 - - bgp - ipv4: - $ref: '#/components/schemas/Action.Protocol.Ipv4' + chassis_id: + description: |- + The Chassis ID is a mandatory TLV which identifies the chassis component of the endpoint identifier associated with the transmitting LLDP agent. If mac address is specified it should be in colon seperated mac address format. + $ref: '#/components/schemas/Lldp.ChassisId' x-field-uid: 2 - ipv6: - $ref: '#/components/schemas/Action.Protocol.Ipv6' + port_id: + description: |- + The Port ID is a mandatory TLV which identifies the port component of the endpoint identifier associated with the transmitting LLDP agent. If the specified port is an IEEE 802.3 Repeater port, then this TLV is optional. + $ref: '#/components/schemas/Lldp.PortId' x-field-uid: 3 - bgp: - $ref: '#/components/schemas/Action.Protocol.Bgp' + system_name: + description: |- + The system name field shall contain an alpha-numeric string that indicates the system's administratively assigned name. The system name should be the system's fully qualified domain name. If implementations support IETF RFC 3418, the sysName object should be used for this field. + $ref: '#/components/schemas/Lldp.SystemName' x-field-uid: 4 - Action.Response.Protocol: - description: |- - Response for actions associated with protocols on configured resources. + hold_time: + description: |- + Specifies the amount of time in seconds a receiving device should maintain LLDP information sent by the device before discarding it. + type: integer + format: uint32 + minimum: 10 + maximum: 65535 + default: 120 + x-field-uid: 5 + advertisement_interval: + description: |- + Set the transmission frequency of LLDP updates in seconds. + type: integer + format: uint32 + minimum: 5 + maximum: 65534 + default: 30 + x-field-uid: 6 + name: + x-field-uid: 7 + description: |- + Globally unique name of an object. It also serves as the primary key for arrays of objects. + type: string + pattern: ^[\sa-zA-Z0-9-_()><\[\]]+$ + x-unique: global + Lldp.Connection: + description: "LLDP connection to a test port. In future if more connection options\ + \ arise LLDP connection object will be enhanced. " type: object - required: - - choice properties: choice: + description: |- + The name of the test port or other connection objects on which LLDP is configured. type: string + x-field-uid: 1 x-enum: - ipv4: + port_name: x-field-uid: 1 - ipv6: - x-field-uid: 2 - x-field-uid: 1 enum: - - ipv4 - - ipv6 - ipv4: - $ref: '#/components/schemas/Action.Response.Protocol.Ipv4' + - port_name + port_name: + description: | + Name of the test port on which LLDP is configured on. + + x-constraint: + - /components/schemas/Port/properties/name + type: string + x-constraint: + - /components/schemas/Port/properties/name x-field-uid: 2 - ipv6: - $ref: '#/components/schemas/Action.Response.Protocol.Ipv6' - x-field-uid: 3 - Action.Protocol.Ipv4: + Lldp.ChassisId: description: |- - Actions associated with IPv4 on configured resources. + The Chassis ID is a mandatory TLV which identifies the chassis component of the endpoint identifier associated with the transmitting LLDP agent. This field identifies the format and source of the chassis identifier string. It is based on the enumerator defined by the LldpChassisIdSubtype object from IEEE 802.1AB MIB. type: object - required: - - choice properties: choice: + description: |- + Chassis ID subtype to be used in Chassis ID TLV. type: string + default: mac_address_subtype + x-field-uid: 1 x-enum: - ping: + mac_address_subtype: x-field-uid: 1 - x-field-uid: 1 + interface_name_subtype: + x-field-uid: 2 + local_subtype: + x-field-uid: 3 enum: - - ping - ping: - $ref: '#/components/schemas/Action.Protocol.Ipv4.Ping' + - mac_address_subtype + - interface_name_subtype + - local_subtype + mac_address_subtype: + $ref: '#/components/schemas/Lldp.ChassisMacSubType' x-field-uid: 2 - Action.Response.Protocol.Ipv4: + interface_name_subtype: + description: |- + Name of an interface of the chassis that uniquely identifies the chassis. + type: string + x-field-uid: 3 + local_subtype: + description: |- + Locally assigned name of the chassis. + type: string + x-field-uid: 4 + Lldp.PortId: description: |- - Response for actions associated with IPv4 on configured resources. + The Port ID is a mandatory TLV which identifies the port component of the endpoint identifier associated with the transmitting LLDP agent.This field identifies the format and source of the port identifier string. It is based on the enumerator defined by the PtopoPortIdType object from RFC2922. type: object - required: - - choice properties: choice: + description: |- + Port ID subtype to be used in Port ID TLV. type: string + default: interface_name_subtype + x-field-uid: 1 x-enum: - ping: + mac_address_subtype: x-field-uid: 1 - x-field-uid: 1 + interface_name_subtype: + x-field-uid: 2 + local_subtype: + x-field-uid: 3 enum: - - ping - ping: - $ref: '#/components/schemas/Action.Response.Protocol.Ipv4.Ping' - x-field-uid: 2 - Action.Protocol.Ipv4.Ping: - description: |- - Request for initiating ping between multiple source and destination pairs. - type: object - properties: - requests: + - mac_address_subtype + - interface_name_subtype + - local_subtype + mac_address_subtype: description: |- - List of IPv4 ping requests. - type: array - items: - $ref: '#/components/schemas/Action.Protocol.Ipv4.PingRequest' - x-field-uid: 1 - Action.Protocol.Ipv4.PingRequest: - description: |- - Under Review: Most ping request parameters are still TBD. - - Under Review: Most ping request parameters are still TBD. - - Request for initiating ping between a single source and destination pair. - For ping request, 1 IPv4 ICMP Echo Request shall be sent and wait for ping response to either succeed or time out. The API wait timeout for each request shall be 300ms. - type: object - x-status: - status: under_review - information: Most ping request parameters are still TBD. - properties: - src_name: - description: | - Name of source IPv4 interface to be used. - - x-constraint: - - /components/schemas/Device.Ipv4/properties/name - - - x-constraint: - - /components/schemas/Device.Ipv4/properties/name + The MAC Address configured in the Port ID TLV. type: string - x-constraint: - - /components/schemas/Device.Ipv4/properties/name - x-field-uid: 1 - dst_ip: + x-field-uid: 2 + interface_name_subtype: + $ref: '#/components/schemas/Lldp.PortInterfaceNameSubType' + x-field-uid: 3 + local_subtype: description: |- - Destination IPv4 address to ping. + The Locally assigned name configured in the Port ID TLV. type: string - format: ipv4 - x-field-uid: 2 - Action.Response.Protocol.Ipv4.Ping: - description: |- - Response for ping initiated between multiple source and destination pairs. + x-field-uid: 4 + Lldp.ChassisMacSubType: + description: "The MAC address configured in the Chassis ID TLV. " type: object properties: - responses: + choice: description: |- - List of responses for IPv4 ping responses. - type: array - items: - $ref: '#/components/schemas/Action.Response.Protocol.Ipv4.PingResponse' - x-field-uid: 1 - Action.Response.Protocol.Ipv4.PingResponse: - description: |- - Response for ping initiated between a single source and destination pair. - type: object - required: - - src_name - - dst_ip - - result - properties: - src_name: - description: | - Name of source IPv4 interface used for ping. - - x-constraint: - - /components/schemas/Device.Ipv4/properties/name - - - x-constraint: - - /components/schemas/Device.Ipv4/properties/name + In auto mode the system generated value is set for this property, while if the choice is selected as value, a user configured value will be used for this property. type: string - x-constraint: - - /components/schemas/Device.Ipv4/properties/name + default: auto x-field-uid: 1 - dst_ip: + x-enum: + auto: + x-field-uid: 1 + value: + x-field-uid: 2 + enum: + - auto + - value + auto: description: |- - Destination IPv4 address used for ping. + The OTG implementation must provide a system generated value for this property. type: string - format: ipv4 + format: mac x-field-uid: 2 - result: + value: description: |- - Result of the ping request. + User must specify a value if mode is not auto. type: string + format: mac x-field-uid: 3 - x-enum: - succeeded: - x-field-uid: 1 - failed: - x-field-uid: 2 - enum: - - succeeded - - failed - Action.Protocol.Ipv6: - description: |- - Actions associated with IPv6 on configured resources. + Lldp.PortInterfaceNameSubType: + description: "The interface name configured in the Port ID TLV. " type: object - required: - - choice properties: choice: + description: |- + In auto mode the system generated value is set for this property, while if the choice is selected as value, a user configured value will be used for this property. type: string + default: auto + x-field-uid: 1 x-enum: - ping: + auto: x-field-uid: 1 - x-field-uid: 1 - enum: - - ping - ping: - $ref: '#/components/schemas/Action.Protocol.Ipv6.Ping' + value: + x-field-uid: 2 + enum: + - auto + - value + auto: + description: |- + The OTG implementation must provide a system generated value for this property. + type: string x-field-uid: 2 - Action.Response.Protocol.Ipv6: - description: |- - Response for actions associated with IPv6 on configured resources. + value: + description: |- + User must specify a value if mode is not auto. + type: string + x-field-uid: 3 + Lldp.SystemName: + description: "The system Name configured in the System Name TLV. " type: object - required: - - choice properties: choice: + description: |- + In auto mode the system generated value is set for this property, while if the choice is selected as value, a user configured value will be used for this property. type: string + default: auto + x-field-uid: 1 x-enum: - ping: + auto: x-field-uid: 1 - x-field-uid: 1 + value: + x-field-uid: 2 enum: - - ping - ping: - $ref: '#/components/schemas/Action.Response.Protocol.Ipv6.Ping' + - auto + - value + auto: + description: |- + The OTG implementation must provide a system generated value for this property. + type: string x-field-uid: 2 - Action.Protocol.Ipv6.Ping: + value: + description: |- + User must specify a value if mode is not auto. + type: string + x-field-uid: 3 + Error: description: |- - Request for initiating ping between multiple source and destination pairs. + Error response generated while serving API request. type: object + required: + - code + - errors properties: - requests: + code: description: |- - List of IPv6 ping requests. + Numeric status code based on the underlying transport being used. + The API server MUST set this code explicitly based on following references: + - HTTP 4xx errors: https://datatracker.ietf.org/doc/html/rfc9110#section-15.5 + - HTTP 5xx errors: https://datatracker.ietf.org/doc/html/rfc9110#section-15.6 + - gRPC errors: https://grpc.github.io/grpc/core/md_doc_statuscodes.html + type: integer + format: int32 + x-field-uid: 1 + kind: + description: |- + Classification of error originating from within API server that may not be mapped to the value in `code`. + Absence of this field may indicate that the error did not originate from within API server. + type: string + x-enum: + validation: + x-field-uid: 1 + internal: + x-field-uid: 2 + x-field-uid: 2 + enum: + - validation + - internal + errors: + description: |- + List of error messages generated while executing the request. type: array items: - $ref: '#/components/schemas/Action.Protocol.Ipv6.PingRequest' + type: string + x-field-uid: 3 + Warning: + description: |- + A list of warnings that have occurred while executing the request. + type: object + properties: + warnings: + description: "A list of any system specific warnings that have occurred\ + \ while \nexecuting the request." + type: array + items: + type: string x-field-uid: 1 - Action.Protocol.Ipv6.PingRequest: + Config.Update: description: |- - Under Review: Most ping request parameters are still TBD. - - Under Review: Most ping request parameters are still TBD. - - Request for initiating ping between a single source and destination pair. - For ping request, 1 IPv6 ICMP Echo Request shall be sent and wait for ping response to either succeed or time out. The API wait timeout for each request shall be 300ms. + Request for updating specific attributes of resources in traffic generator type: object - x-status: - status: under_review - information: Most ping request parameters are still TBD. properties: - src_name: - description: | - Name of source IPv6 interface to be used. - - x-constraint: - - /components/schemas/Device.Ipv6/properties/name - - - x-constraint: - - /components/schemas/Device.Ipv6/properties/name + choice: type: string - x-constraint: - - /components/schemas/Device.Ipv6/properties/name + x-enum: + flows: + x-field-uid: 1 x-field-uid: 1 - dst_ip: - description: |- - Destination IPv6 address to ping. - type: string - format: ipv6 + enum: + - flows + flows: + $ref: '#/components/schemas/Flows.Update' x-field-uid: 2 - Action.Response.Protocol.Ipv6.Ping: + Flows.Update: description: |- - Response for ping initiated between multiple source and destination pairs. + A container of flows with associated properties to be updated without affecting the flows current transmit state. type: object + required: + - property_names + - flows properties: - responses: + property_names: description: |- - List of responses for IPv6 ping responses. + Flow properties to be updated without affecting the transmit state. type: array items: - $ref: '#/components/schemas/Action.Response.Protocol.Ipv6.PingResponse' + type: string + x-enum: + rate: + x-field-uid: 1 + size: + x-field-uid: 2 + enum: + - rate + - size x-field-uid: 1 - Action.Response.Protocol.Ipv6.PingResponse: + flows: + description: |- + The list of configured flows for which given property will be updated. + type: array + items: + $ref: '#/components/schemas/Flow' + x-field-uid: 2 + Control.State: description: |- - Response for ping initiated between a single source and destination pair. + Request for setting operational state of configured resources. type: object required: - - src_name - - dst_ip - - result + - choice properties: - src_name: - description: | - Name of source IPv6 interface used for ping. - - x-constraint: - - /components/schemas/Device.Ipv6/properties/name - - - x-constraint: - - /components/schemas/Device.Ipv6/properties/name - type: string - x-constraint: - - /components/schemas/Device.Ipv6/properties/name - x-field-uid: 1 - dst_ip: - description: |- - Destination IPv6 address used for ping. - type: string - format: ipv6 - x-field-uid: 2 - result: - description: |- - Result of the ping request. + choice: type: string - x-field-uid: 3 x-enum: - succeeded: + port: x-field-uid: 1 - failed: + protocol: x-field-uid: 2 + traffic: + x-field-uid: 3 + x-field-uid: 1 enum: - - succeeded - - failed - Action.Protocol.Bgp: + - port + - protocol + - traffic + port: + $ref: '#/components/schemas/State.Port' + x-field-uid: 2 + protocol: + $ref: '#/components/schemas/State.Protocol' + x-field-uid: 3 + traffic: + $ref: '#/components/schemas/State.Traffic' + x-field-uid: 4 + State.Port: description: |- - Actions associated with BGP on configured resources. + States associated with configured ports. type: object required: - choice @@ -9832,286 +9893,280 @@ components: choice: type: string x-enum: - notification: + link: x-field-uid: 1 - initiate_graceful_restart: + capture: x-field-uid: 2 x-field-uid: 1 enum: - - notification - - initiate_graceful_restart - notification: - $ref: '#/components/schemas/Action.Protocol.Bgp.Notification' + - link + - capture + link: + $ref: '#/components/schemas/State.Port.Link' x-field-uid: 2 - initiate_graceful_restart: - $ref: '#/components/schemas/Action.Protocol.Bgp.InitiateGracefulRestart' + capture: + $ref: '#/components/schemas/State.Port.Capture' x-field-uid: 3 - Action.Protocol.Bgp.Notification: - description: "A NOTIFICATION message is sent when an error is detected with\ - \ the BGP session, such as hold timer expiring, misconfigured AS number or\ - \ a BGP session reset is requested. This causes the BGP connection to close.\ - \ Send explicit NOTIFICATIONs for list of specified BGP peers. If a user\ - \ wants to send custom Error Code and Error Subcode the custom object should\ - \ be configured. A user can send IANA defined BGP NOTIFICATIONs according\ - \ to https://www.iana.org/assignments/bgp-parameters/bgp-parameters.xhtml. " + State.Traffic: + description: |- + States associated with configured flows type: object + required: + - choice properties: - names: - description: | - The names of BGP Peers to send NOTIFICATION to. If no name is specified then NOTIFICATION will be sent to all configured BGP peers. - - x-constraint: - - /components/schemas/Device.Bgp/properties/name - - - x-constraint: - - /components/schemas/Device.Bgp/properties/name - type: array - items: - type: string - x-constraint: - - /components/schemas/Device.Bgp/properties/name - x-field-uid: 1 choice: - description: |- - Each BGP NOTIFICATION message includes an Error Code field indicating what type of problem occurred. For certain Error Codes, an Error Subcode field provides additional details about the specific nature of the problem. The choice value will provide the Error Code used in NOTIFICATION message. The Subcode can be set for each of the corresponding errors except for Hold Timer Expired error and BGP Finite State Machine error. In both of these cases Subcode 0 will be sent. If a user wants to use non zero Sub Code then custom choice can be used. type: string + x-enum: + flow_transmit: + x-field-uid: 1 + x-field-uid: 1 + enum: + - flow_transmit + flow_transmit: + $ref: '#/components/schemas/State.Traffic.FlowTransmit' x-field-uid: 2 - default: cease + State.Protocol: + description: |- + States associated with protocols on configured resources. + type: object + required: + - choice + properties: + choice: + type: string x-enum: - cease: + all: x-field-uid: 1 - message_header_error: + route: x-field-uid: 2 - open_message_error: + lacp: x-field-uid: 3 - update_message_error: + bgp: x-field-uid: 4 - hold_timer_expired: + isis: x-field-uid: 5 - finite_state_machine_error: - x-field-uid: 6 - custom: - x-field-uid: 7 + x-field-uid: 1 enum: - - cease - - message_header_error - - open_message_error - - update_message_error - - hold_timer_expired - - finite_state_machine_error - - custom - cease: - $ref: '#/components/schemas/Device.Bgp.CeaseError' + - all + - route + - lacp + - bgp + - isis + all: + $ref: '#/components/schemas/State.Protocol.All' + x-field-uid: 2 + route: + $ref: '#/components/schemas/State.Protocol.Route' x-field-uid: 3 - message_header_error: - $ref: '#/components/schemas/Device.Bgp.MessageHeaderError' + lacp: + $ref: '#/components/schemas/State.Protocol.Lacp' x-field-uid: 4 - open_message_error: - $ref: '#/components/schemas/Device.Bgp.OpenMessageError' + bgp: + $ref: '#/components/schemas/State.Protocol.Bgp' x-field-uid: 5 - update_message_error: - $ref: '#/components/schemas/Device.Bgp.UpdateMessageError' + isis: + $ref: '#/components/schemas/State.Protocol.Isis' x-field-uid: 6 - hold_timer_expired: - $ref: '#/components/schemas/Device.Bgp.HoldTimerExpired' - x-field-uid: 7 - finite_state_machine_error: - $ref: '#/components/schemas/Device.Bgp.FiniteStateMachineError' - x-field-uid: 8 - custom: - $ref: '#/components/schemas/Device.Bgp.CustomError' - x-field-uid: 9 - Action.Protocol.Bgp.InitiateGracefulRestart: + State.Port.Link: description: |- - Initiates BGP Graceful Restart process for the selected BGP peers. If no name is specified then Graceful Restart will be sent to all configured BGP peers. + Sets the link of configured ports. type: object + required: + - state properties: - peer_names: + port_names: description: | - The names of device BGP peers objects to control. + The names of target ports. An empty or null list will target all ports. x-constraint: - - /components/schemas/Device.Bgp/properties/name - + - /components/schemas/Port/properties/name + type: array + items: + type: string + x-constraint: + - /components/schemas/Port/properties/name + x-field-uid: 1 + state: + description: |- + The link state. + type: string + x-field-uid: 2 + x-enum: + up: + x-field-uid: 1 + down: + x-field-uid: 2 + enum: + - up + - down + State.Port.Capture: + description: |- + Sets the capture state of configured ports + type: object + required: + - state + properties: + port_names: + description: | + The names of ports to which the capture state will be applied to. If the list of port_names is empty or null the state will be applied to all configured ports. + If the list is not empty any port that is not included in the list of port_names MUST be ignored and not included in the state change. x-constraint: - - /components/schemas/Device.Bgp/properties/name + - /components/schemas/Port/properties/name type: array items: type: string x-constraint: - - /components/schemas/Device.Bgp/properties/name + - /components/schemas/Port/properties/name x-field-uid: 1 - restart_delay: - description: "Duration (in seconds) after which selected BGP peers will\ - \ initiate \nGraceful restart by sending the Open Message with Restart\ - \ State bit set in the Graceful Restart capability." - type: integer - format: uint32 - maximum: 3600 - default: 30 + state: + description: |- + The capture state. + type: string x-field-uid: 2 - Metrics.Request: + x-enum: + start: + x-field-uid: 1 + stop: + x-field-uid: 2 + enum: + - start + - stop + State.Traffic.FlowTransmit: description: |- - Request to traffic generator for metrics of choice. + Provides state control of flow transmission. type: object + required: + - state properties: - choice: - type: string - default: port + flow_names: + description: | + The names of flows to which the transmit state will be applied to. If the list of flow_names is empty or null the state will be applied to all configured flows. + If the list is not empty any flow that is not included in the list of flow_names MUST be ignored and not included in the state change. + + x-constraint: + - /components/schemas/Flow/properties/name + type: array + items: + type: string + x-constraint: + - /components/schemas/Flow/properties/name x-field-uid: 1 + state: + description: |- + The transmit state. + If the value of the state property is 'start' then all flows defined by the 'flow_names' property will be started and the metric counters MUST be cleared prior to starting the flow(s). + If the value of the state property is 'stop' then all flows defined by the 'flow_names' property will be stopped and the metric counters MUST NOT be cleared. + If the value of the state property is 'pause' then all flows defined by the 'flow_names' property will be paused and the metric counters MUST NOT be cleared. + If the value of the state property is 'resume' then any paused flows defined by the 'flow_names' property will start transmit at the point at which they were paused. Any flow that is stopped will start transmit at the beginning of the flow. The flow(s) MUST NOT have their metric counters cleared. + type: string + x-field-uid: 2 x-enum: - port: + start: x-field-uid: 1 - flow: + stop: x-field-uid: 2 - bgpv4: + pause: x-field-uid: 3 - bgpv6: + resume: x-field-uid: 4 - isis: - x-field-uid: 5 - lag: - x-field-uid: 6 - lacp: - x-field-uid: 7 - lldp: - x-field-uid: 8 - rsvp: - x-field-uid: 9 enum: - - port - - flow - - bgpv4 - - bgpv6 - - isis - - lag - - lacp - - lldp - - rsvp - port: - $ref: '#/components/schemas/Port.Metrics.Request' - x-field-uid: 2 - flow: - $ref: '#/components/schemas/Flow.Metrics.Request' - x-field-uid: 3 - bgpv4: - $ref: '#/components/schemas/Bgpv4.Metrics.Request' - x-field-uid: 4 - bgpv6: - $ref: '#/components/schemas/Bgpv6.Metrics.Request' - x-field-uid: 5 - isis: - $ref: '#/components/schemas/Isis.Metrics.Request' - x-field-uid: 6 - lag: - $ref: '#/components/schemas/Lag.Metrics.Request' - x-field-uid: 7 - lacp: - $ref: '#/components/schemas/Lacp.Metrics.Request' - x-field-uid: 8 - lldp: - $ref: '#/components/schemas/Lldp.Metrics.Request' - x-field-uid: 9 - rsvp: - $ref: '#/components/schemas/Rsvp.Metrics.Request' - x-field-uid: 10 - Metrics.Response: + - start + - stop + - pause + - resume + State.Protocol.All: description: |- - Response containing chosen traffic generator metrics. + Sets all configured protocols to `start` or `stop` state. + Setting protocol state to `start` shall be a no-op if preceding `set_config` API call was made with `config.options.protocol_options.auto_start_all` set to `true` or if all the configured protocols are already started. type: object + required: + - state properties: - choice: + state: + description: |- + Protocol states type: string - default: port_metrics x-field-uid: 1 x-enum: - flow_metrics: + start: x-field-uid: 1 - port_metrics: + stop: x-field-uid: 2 - bgpv4_metrics: - x-field-uid: 3 - bgpv6_metrics: - x-field-uid: 4 - isis_metrics: - x-field-uid: 5 - lag_metrics: - x-field-uid: 6 - lacp_metrics: - x-field-uid: 7 - lldp_metrics: - x-field-uid: 8 - rsvp_metrics: - x-field-uid: 9 enum: - - flow_metrics - - port_metrics - - bgpv4_metrics - - bgpv6_metrics - - isis_metrics - - lag_metrics - - lacp_metrics - - lldp_metrics - - rsvp_metrics - port_metrics: + - start + - stop + State.Protocol.Route: + description: |- + Sets the state of configured routes + type: object + required: + - state + properties: + names: + description: | + The names of device route objects to control. If no names are specified then all route objects that match the x-constraint will be affected. + + x-constraint: + - /components/schemas/Bgp.V4RouteRange/properties/name + - /components/schemas/Bgp.V6RouteRange/properties/name + - /components/schemas/Isis.V4RouteRange/properties/name + - /components/schemas/Isis.V6RouteRange/properties/name type: array items: - $ref: '#/components/schemas/Port.Metric' + type: string + x-constraint: + - /components/schemas/Bgp.V4RouteRange/properties/name + - /components/schemas/Bgp.V6RouteRange/properties/name + - /components/schemas/Isis.V4RouteRange/properties/name + - /components/schemas/Isis.V6RouteRange/properties/name + x-field-uid: 1 + state: + description: |- + Route states + type: string x-field-uid: 2 - flow_metrics: - type: array - items: - $ref: '#/components/schemas/Flow.Metric' - x-field-uid: 3 - bgpv4_metrics: - type: array - items: - $ref: '#/components/schemas/Bgpv4.Metric' - x-field-uid: 4 - bgpv6_metrics: - type: array - items: - $ref: '#/components/schemas/Bgpv6.Metric' - x-field-uid: 5 - isis_metrics: - type: array - items: - $ref: '#/components/schemas/Isis.Metric' - x-field-uid: 6 - lag_metrics: - type: array - items: - $ref: '#/components/schemas/Lag.Metric' - x-field-uid: 7 - lacp_metrics: - type: array - items: - $ref: '#/components/schemas/Lacp.Metric' - x-field-uid: 8 - lldp_metrics: - type: array - items: - $ref: '#/components/schemas/Lldp.Metric' - x-field-uid: 9 - rsvp_metrics: - type: array - items: - $ref: '#/components/schemas/Rsvp.Metric' - x-field-uid: 10 - Port.Metrics.Request: + x-enum: + withdraw: + x-field-uid: 1 + advertise: + x-field-uid: 2 + enum: + - withdraw + - advertise + State.Protocol.Lacp: description: |- - The port result request to the traffic generator + Sets state of configured LACP type: object + required: + - choice properties: - port_names: + choice: + type: string + x-enum: + admin: + x-field-uid: 1 + member_ports: + x-field-uid: 2 + x-field-uid: 1 + enum: + - admin + - member_ports + admin: + $ref: '#/components/schemas/State.Protocol.Lacp.Admin' + x-field-uid: 2 + member_ports: + $ref: '#/components/schemas/State.Protocol.Lacp.MemberPorts' + x-field-uid: 3 + State.Protocol.Lacp.Admin: + description: |- + Sets admin state of LACP configured on LAG members + required: + - state + properties: + lag_member_names: description: | - The names of objects to return results for. An empty list will return all port row results. - - x-constraint: - - /components/schemas/Port/properties/name - + The names of LAG members (ports) for which the state has to be applied. An empty or null list will control all LAG members. x-constraint: - /components/schemas/Port/properties/name @@ -10121,78 +10176,42 @@ components: x-constraint: - /components/schemas/Port/properties/name x-field-uid: 1 - column_names: + state: description: |- - The list of column names that the returned result set will contain. If the list is empty then all columns will be returned. The name of the port cannot be excluded. - type: array - items: - type: string - x-enum: - transmit: - x-field-uid: 1 - location: - x-field-uid: 2 - link: - x-field-uid: 3 - capture: - x-field-uid: 4 - frames_tx: - x-field-uid: 5 - frames_rx: - x-field-uid: 6 - bytes_tx: - x-field-uid: 7 - bytes_rx: - x-field-uid: 8 - frames_tx_rate: - x-field-uid: 9 - frames_rx_rate: - x-field-uid: 10 - bytes_tx_rate: - x-field-uid: 11 - bytes_rx_rate: - x-field-uid: 12 - enum: - - transmit - - location - - link - - capture - - frames_tx - - frames_rx - - bytes_tx - - bytes_rx - - frames_tx_rate - - frames_rx_rate - - bytes_tx_rate - - bytes_rx_rate + The LACP Member admin state. 'up' will send LACPDUs with 'sync' flag set on selected member ports. 'down' will send LACPDUs with 'sync' flag unset on selected member ports. + type: string x-field-uid: 2 - Port.Metric: - type: object + x-enum: + up: + x-field-uid: 1 + down: + x-field-uid: 2 + enum: + - up + - down + State.Protocol.Lacp.MemberPorts: + description: |- + Sets state of LACP member ports configured on LAG. + required: + - state properties: - name: + lag_member_names: description: | - The name of a configured port - - x-constraint: - - /components/schemas/Port/properties/name - + The names of LAG members (ports) for which the state has to be applied. An empty or null list will control all LAG members. x-constraint: - /components/schemas/Port/properties/name - type: string + type: array + items: + type: string x-constraint: - /components/schemas/Port/properties/name x-field-uid: 1 - location: + state: description: |- - The state of the connection to the test port location. The format should be the configured port location along with any custom connection state message. + The desired LACP member port state. type: string x-field-uid: 2 - link: - description: |- - The state of the test port link The string can be up, down or a custom error message. - type: string - x-field-uid: 3 x-enum: up: x-field-uid: 1 @@ -10201,3413 +10220,7608 @@ components: enum: - up - down - capture: - description: |- - The state of the test port capture infrastructure. The string can be started, stopped or a custom error message. + State.Protocol.Bgp: + description: |- + Sets state of configured BGP peers. + type: object + required: + - choice + properties: + choice: type: string - x-field-uid: 4 x-enum: - started: + peers: x-field-uid: 1 - stopped: - x-field-uid: 2 + x-field-uid: 1 enum: - - started - - stopped - frames_tx: - description: |- - The current total number of frames transmitted - type: integer - format: uint64 - x-field-uid: 5 - frames_rx: - description: |- - The current total number of valid frames received - type: integer - format: uint64 - x-field-uid: 6 - bytes_tx: - description: |- - The current total number of bytes transmitted - type: integer - format: uint64 - x-field-uid: 7 - bytes_rx: - description: |- - The current total number of valid bytes received - type: integer - format: uint64 - x-field-uid: 8 - frames_tx_rate: - description: |- - The current rate of frames transmitted - type: number - x-field-uid: 9 - frames_rx_rate: - description: |- - The current rate of valid frames received - type: number - x-field-uid: 10 - bytes_tx_rate: - description: |- - The current rate of bytes transmitted - type: number - x-field-uid: 11 - bytes_rx_rate: - description: |- - The current rate of bytes received - type: number - x-field-uid: 12 - transmit: - description: |- - The transmit state of the flow. + - peers + peers: + $ref: '#/components/schemas/State.Protocol.Bgp.Peers' + x-field-uid: 2 + State.Protocol.Bgp.Peers: + description: |- + Sets state of configured BGP peers. + required: + - state + properties: + peer_names: + description: | + The names of BGP peers for which the state has to be applied. An empty or null list will control all BGP peers. + + x-constraint: + - /components/schemas/Bgp.V4Peer/properties/name + - /components/schemas/Bgp.V6Peer/properties/name + type: array + items: + type: string + x-constraint: + - /components/schemas/Bgp.V4Peer/properties/name + - /components/schemas/Bgp.V6Peer/properties/name + x-field-uid: 1 + state: + description: "The desired state of BGP peer. If the desired state is 'up',\ + \ underlying IP interface(s) would be brought up automatically (if not\ + \ already up), would attempt to bring up the BGP session(s) and advertise\ + \ route(s), if configured. If the desired state is 'down', BGP session(s)\ + \ would be brought down. " type: string - x-field-uid: 13 + x-field-uid: 2 x-enum: - started: + up: x-field-uid: 1 - stopped: + down: x-field-uid: 2 enum: - - started - - stopped - Flow.Metrics.Request: + - up + - down + State.Protocol.Isis: description: |- - The container for a flow metric request. + Sets state of configured ISIS routers. type: object + required: + - choice properties: - flow_names: + choice: + type: string + x-enum: + routers: + x-field-uid: 1 + x-field-uid: 1 + enum: + - routers + routers: + $ref: '#/components/schemas/State.Protocol.Isis.Routers' + x-field-uid: 2 + State.Protocol.Isis.Routers: + description: |- + Sets state of configured ISIS routers. + required: + - state + properties: + router_names: description: | - Flow metrics will be retrieved for these flow names. - If no flow names are specified then all flows will be returned. - - x-constraint: - - /components/schemas/Flow/properties/name - + The names of ISIS routers for which the state has to be applied. An empty or null list will control all ISIS routers. x-constraint: - - /components/schemas/Flow/properties/name + - /components/schemas/Device.IsisRouter/properties/name type: array items: type: string x-constraint: - - /components/schemas/Flow/properties/name + - /components/schemas/Device.IsisRouter/properties/name x-field-uid: 1 - metric_names: - description: |- - The list of metric names that the returned result set will contain. If the list is empty then all metrics will be returned. - type: array - items: - type: string - x-enum: - transmit: - x-field-uid: 1 - frames_tx: - x-field-uid: 2 - frames_rx: - x-field-uid: 3 - bytes_tx: - x-field-uid: 4 - bytes_rx: - x-field-uid: 5 - frames_tx_rate: - x-field-uid: 6 - frames_rx_rate: - x-field-uid: 7 - enum: - - transmit - - frames_tx - - frames_rx - - bytes_tx - - bytes_rx - - frames_tx_rate - - frames_rx_rate - x-field-uid: 3 - tagged_metrics: - $ref: '#/components/schemas/Flow.TaggedMetrics.Filter' - x-field-uid: 4 - Flow.TaggedMetrics.Filter: + state: + description: "The desired state of ISIS router. If the desired state is\ + \ 'up', would attempt to bring up the ISIS session(s) with respective\ + \ peer(s) and advertise route(s), if configured. If the desired state\ + \ is 'down', would bring down ISIS session(s) with respective peer(s). " + type: string + x-field-uid: 2 + x-enum: + up: + x-field-uid: 1 + down: + x-field-uid: 2 + enum: + - up + - down + Control.Action: description: |- - Filter for tagged metrics + Request for triggering action against configured resources. type: object + required: + - choice properties: - include: - description: |- - Controls inclusion/exclusion of tagged metrics when fetching flow metrics. - type: boolean - default: true + choice: + type: string + x-enum: + protocol: + x-field-uid: 1 x-field-uid: 1 - include_empty_metrics: - description: |- - Controls inclusion/exclusion of tagged metrics where each underlying attributes has zero value or absent value. - type: boolean - default: false + enum: + - protocol + protocol: + $ref: '#/components/schemas/Action.Protocol' x-field-uid: 2 - metric_names: - description: |- - The list of metric names that the returned result set will contain. If the list is empty then all metrics will be returned. - type: array - items: - type: string - x-enum: - frames_tx: - x-field-uid: 1 - frames_rx: - x-field-uid: 2 - bytes_tx: - x-field-uid: 3 - bytes_rx: - x-field-uid: 4 - frames_tx_rate: - x-field-uid: 5 - frames_rx_rate: - x-field-uid: 6 - enum: - - frames_tx - - frames_rx - - bytes_tx - - bytes_rx - - frames_tx_rate - - frames_rx_rate - x-field-uid: 3 - filters: - description: |- - List of filters to selectively fetch tagged metrics with certain tag and corresponding value. - type: array - items: - $ref: '#/components/schemas/Flow.MetricTag.Filter' - x-field-uid: 4 - Flow.MetricTag.Filter: + Control.Action.Response: description: |- - A container for filtering ingress and/or egress metric tags. - The Tx stats may not be applicable in both the request and response filter. + Response for action triggered against configured resources along with warnings. type: object properties: - name: - description: |- - A metric tag name that MUST exist in a flow packet or - flow egress_packet configuration - type: string - x-field-uid: 1 - values: + warnings: description: |- - A list of filters that can be applied to the metric tag name. - By default all values will be included in the flow metric results. + List of warnings generated while triggering specified action type: array items: type: string + x-field-uid: 1 + response: + $ref: '#/components/schemas/Action.Response' x-field-uid: 2 - Flow.Metric: + Action.Response: description: |- - A container for flow metrics. - The container is keyed by the name, port_tx and port_rx. + Response for action triggered against configured resources. type: object + required: + - choice properties: - name: - description: |- - The name of the flow + choice: type: string - example: Tx -> Rx + x-enum: + protocol: + x-field-uid: 1 x-field-uid: 1 - port_tx: - description: |- - The name of the transmit port - type: string + enum: + - protocol + protocol: + $ref: '#/components/schemas/Action.Response.Protocol' x-field-uid: 2 - port_rx: - description: |- - The name of the receive port - type: string - x-field-uid: 3 - transmit: - description: |- - The transmit state of the flow. + Action.Protocol: + description: |- + Actions associated with protocols on configured resources. + type: object + required: + - choice + properties: + choice: type: string - x-field-uid: 5 x-enum: - started: + ipv4: x-field-uid: 1 - stopped: + ipv6: x-field-uid: 2 - paused: + bgp: x-field-uid: 3 + x-field-uid: 1 enum: - - started - - stopped - - paused - frames_tx: - description: |- - The current total number of frames transmitted - type: integer - format: uint64 - x-field-uid: 6 - frames_rx: - description: |- - The current total number of valid frames received - type: integer - format: uint64 - x-field-uid: 7 - bytes_tx: - description: |- - The current total number of bytes transmitted - type: integer - format: uint64 - x-field-uid: 8 - bytes_rx: - description: |- - The current total number of bytes received - type: integer - format: uint64 - x-field-uid: 9 - frames_tx_rate: - description: |- - The current rate of frames transmitted - type: number - x-field-uid: 10 - frames_rx_rate: - description: |- - The current rate of valid frames received - type: number - x-field-uid: 11 - loss: - description: |- - The percentage of lost frames - type: number - x-field-uid: 12 - timestamps: - $ref: '#/components/schemas/Metric.Timestamp' - x-field-uid: 13 - latency: - $ref: '#/components/schemas/Metric.Latency' - x-field-uid: 14 - tagged_metrics: - description: |- - List of metrics corresponding to a set of values applicable - for configured metric tags in ingress or egress packet header fields of corresponding flow. - The container is keyed by list of tag-value pairs. - type: array - items: - $ref: '#/components/schemas/Flow.TaggedMetric' - x-field-uid: 15 - Flow.TaggedMetric: + - ipv4 + - ipv6 + - bgp + ipv4: + $ref: '#/components/schemas/Action.Protocol.Ipv4' + x-field-uid: 2 + ipv6: + $ref: '#/components/schemas/Action.Protocol.Ipv6' + x-field-uid: 3 + bgp: + $ref: '#/components/schemas/Action.Protocol.Bgp' + x-field-uid: 4 + Action.Response.Protocol: description: |- - Metrics for each set of values applicable for configured - metric tags in ingress or egress packet header fields of corresponding flow. - The container is keyed by list of tag-value pairs. + Response for actions associated with protocols on configured resources. type: object + required: + - choice properties: - tags: - description: |- - List of tag and value pairs - type: array - items: - $ref: '#/components/schemas/Flow.MetricTag' + choice: + type: string + x-enum: + ipv4: + x-field-uid: 1 + ipv6: + x-field-uid: 2 x-field-uid: 1 - frames_tx: - description: |- - The current total number of frames transmitted - type: integer - format: uint64 + enum: + - ipv4 + - ipv6 + ipv4: + $ref: '#/components/schemas/Action.Response.Protocol.Ipv4' x-field-uid: 2 - frames_rx: - description: |- - The current total number of valid frames received - type: integer - format: uint64 + ipv6: + $ref: '#/components/schemas/Action.Response.Protocol.Ipv6' x-field-uid: 3 - bytes_tx: - description: |- - The current total number of bytes transmitted - type: integer - format: uint64 - x-field-uid: 4 - bytes_rx: - description: |- - The current total number of bytes received - type: integer - format: uint64 - x-field-uid: 5 - frames_tx_rate: - description: |- - The current rate of frames transmitted - type: number - x-field-uid: 6 - frames_rx_rate: - description: |- - The current rate of valid frames received - type: number - x-field-uid: 7 - loss: - description: |- - The percentage of lost frames - type: number - x-field-uid: 8 - timestamps: - $ref: '#/components/schemas/Metric.Timestamp' - x-field-uid: 9 - latency: - $ref: '#/components/schemas/Metric.Latency' - x-field-uid: 10 - Flow.MetricTag: + Action.Protocol.Ipv4: + description: |- + Actions associated with IPv4 on configured resources. type: object + required: + - choice properties: - name: - description: |- - Name of packet field metric tag + choice: type: string + x-enum: + ping: + x-field-uid: 1 x-field-uid: 1 - value: - $ref: '#/components/schemas/Flow.MetricTag.Value' + enum: + - ping + ping: + $ref: '#/components/schemas/Action.Protocol.Ipv4.Ping' x-field-uid: 2 - Flow.MetricTag.Value: + Action.Response.Protocol.Ipv4: description: |- - A container for metric tag value + Response for actions associated with IPv4 on configured resources. type: object + required: + - choice properties: choice: - description: |- - Available formats for metric tag value type: string - default: hex x-enum: - hex: + ping: x-field-uid: 1 - str: - x-field-uid: 2 x-field-uid: 1 enum: - - hex - - str - hex: - description: |- - Value represented in hexadecimal format - type: string - format: hex + - ping + ping: + $ref: '#/components/schemas/Action.Response.Protocol.Ipv4.Ping' x-field-uid: 2 - str: - description: |- - Value represented in string format - type: string - x-field-uid: 3 - Metric.Timestamp: + Action.Protocol.Ipv4.Ping: description: |- - The container for timestamp metrics. - The container will be empty if the timestamp has not been configured for - the flow. + Request for initiating ping between multiple source and destination pairs. type: object properties: - first_timestamp_ns: + requests: description: |- - First timestamp in nanoseconds - type: number - format: double + List of IPv4 ping requests. + type: array + items: + $ref: '#/components/schemas/Action.Protocol.Ipv4.PingRequest' x-field-uid: 1 - last_timestamp_ns: - description: |- - Last timestamp in nanoseconds - type: number - format: double - x-field-uid: 2 - Metric.Latency: - description: "The container for latency metrics. \nThe min/max/avg values are\ - \ dependent on the type of latency measurement \nmode that is configured.\n\ - The container will be empty if the latency has not been configured for\nthe\ - \ flow." + Action.Protocol.Ipv4.PingRequest: + description: |- + Under Review: Most ping request parameters are still TBD. + + Request for initiating ping between a single source and destination pair. + For ping request, 1 IPv4 ICMP Echo Request shall be sent and wait for ping response to either succeed or time out. The API wait timeout for each request shall be 300ms. type: object + x-status: + status: under_review + information: Most ping request parameters are still TBD. properties: - minimum_ns: + src_name: + description: | + Name of source IPv4 interface to be used. + + x-constraint: + - /components/schemas/Device.Ipv4/properties/name + type: string + x-constraint: + - /components/schemas/Device.Ipv4/properties/name + x-field-uid: 1 + dst_ip: description: |- - Minimum latency in nanoseconds - type: number - format: double - x-field-uid: 1 - maximum_ns: - description: |- - Maximum latency in nanoseconds - type: number - format: double + Destination IPv4 address to ping. + type: string + format: ipv4 x-field-uid: 2 - average_ns: + Action.Response.Protocol.Ipv4.Ping: + description: |- + Response for ping initiated between multiple source and destination pairs. + type: object + properties: + responses: description: |- - Average latency in nanoseconds - type: number - format: double - x-field-uid: 3 - Bgpv4.Metrics.Request: + List of responses for IPv4 ping responses. + type: array + items: + $ref: '#/components/schemas/Action.Response.Protocol.Ipv4.PingResponse' + x-field-uid: 1 + Action.Response.Protocol.Ipv4.PingResponse: description: |- - The request to retrieve BGPv4 per peer metrics/statistics. + Response for ping initiated between a single source and destination pair. type: object + required: + - src_name + - dst_ip + - result properties: - peer_names: + src_name: description: | - The names of BGPv4 peers to return results for. An empty list will return results for all BGPv4 peers. + Name of source IPv4 interface used for ping. x-constraint: - - /components/schemas/Bgp.V4peer/properties/name + - /components/schemas/Device.Ipv4/properties/name + type: string + x-constraint: + - /components/schemas/Device.Ipv4/properties/name + x-field-uid: 1 + dst_ip: + description: |- + Destination IPv4 address used for ping. + type: string + format: ipv4 + x-field-uid: 2 + result: + description: |- + Result of the ping request. + type: string + x-field-uid: 3 + x-enum: + succeeded: + x-field-uid: 1 + failed: + x-field-uid: 2 + enum: + - succeeded + - failed + Action.Protocol.Ipv6: + description: |- + Actions associated with IPv6 on configured resources. + type: object + required: + - choice + properties: + choice: + type: string + x-enum: + ping: + x-field-uid: 1 + x-field-uid: 1 + enum: + - ping + ping: + $ref: '#/components/schemas/Action.Protocol.Ipv6.Ping' + x-field-uid: 2 + Action.Response.Protocol.Ipv6: + description: |- + Response for actions associated with IPv6 on configured resources. + type: object + required: + - choice + properties: + choice: + type: string + x-enum: + ping: + x-field-uid: 1 + x-field-uid: 1 + enum: + - ping + ping: + $ref: '#/components/schemas/Action.Response.Protocol.Ipv6.Ping' + x-field-uid: 2 + Action.Protocol.Ipv6.Ping: + description: |- + Request for initiating ping between multiple source and destination pairs. + type: object + properties: + requests: + description: |- + List of IPv6 ping requests. + type: array + items: + $ref: '#/components/schemas/Action.Protocol.Ipv6.PingRequest' + x-field-uid: 1 + Action.Protocol.Ipv6.PingRequest: + description: |- + Under Review: Most ping request parameters are still TBD. + Request for initiating ping between a single source and destination pair. + For ping request, 1 IPv6 ICMP Echo Request shall be sent and wait for ping response to either succeed or time out. The API wait timeout for each request shall be 300ms. + type: object + x-status: + status: under_review + information: Most ping request parameters are still TBD. + properties: + src_name: + description: | + Name of source IPv6 interface to be used. x-constraint: - - /components/schemas/Bgp.V4peer/properties/name - type: array - items: - type: string + - /components/schemas/Device.Ipv6/properties/name + type: string x-constraint: - - /components/schemas/Bgp.V4peer/properties/name + - /components/schemas/Device.Ipv6/properties/name x-field-uid: 1 - column_names: + dst_ip: description: |- - The list of column names that the returned result set will contain. If the list is empty then all columns will be returned except for any result_groups. The name of the BGPv4 peer cannot be excluded. - type: array - items: - type: string - x-enum: - session_state: - x-field-uid: 1 - session_flap_count: - x-field-uid: 2 - routes_advertised: - x-field-uid: 3 - routes_received: - x-field-uid: 4 - route_withdraws_sent: - x-field-uid: 5 - route_withdraws_received: - x-field-uid: 6 - updates_sent: - x-field-uid: 7 - updates_received: - x-field-uid: 8 - opens_sent: - x-field-uid: 9 - opens_received: - x-field-uid: 10 - keepalives_sent: - x-field-uid: 11 - keepalives_received: - x-field-uid: 12 - notifications_sent: - x-field-uid: 13 - notifications_received: - x-field-uid: 14 - fsm_state: - x-field-uid: 15 - end_of_rib_received: - x-field-uid: 16 - enum: - - session_state - - session_flap_count - - routes_advertised - - routes_received - - route_withdraws_sent - - route_withdraws_received - - updates_sent - - updates_received - - opens_sent - - opens_received - - keepalives_sent - - keepalives_received - - notifications_sent - - notifications_received - - fsm_state - - end_of_rib_received + Destination IPv6 address to ping. + type: string + format: ipv6 x-field-uid: 2 - Bgpv4.Metric: + Action.Response.Protocol.Ipv6.Ping: description: |- - BGPv4 per peer statistics information. + Response for ping initiated between multiple source and destination pairs. type: object properties: - name: + responses: description: |- - The name of a configured BGPv4 peer. + List of responses for IPv6 ping responses. + type: array + items: + $ref: '#/components/schemas/Action.Response.Protocol.Ipv6.PingResponse' + x-field-uid: 1 + Action.Response.Protocol.Ipv6.PingResponse: + description: |- + Response for ping initiated between a single source and destination pair. + type: object + required: + - src_name + - dst_ip + - result + properties: + src_name: + description: | + Name of source IPv6 interface used for ping. + + x-constraint: + - /components/schemas/Device.Ipv6/properties/name type: string + x-constraint: + - /components/schemas/Device.Ipv6/properties/name x-field-uid: 1 - session_state: + dst_ip: description: |- - Session state as up or down. Up refers to an Established state and Down refers to any other state. + Destination IPv6 address used for ping. type: string + format: ipv6 x-field-uid: 2 + result: + description: |- + Result of the ping request. + type: string + x-field-uid: 3 x-enum: - up: + succeeded: x-field-uid: 1 - down: + failed: x-field-uid: 2 enum: - - up - - down - session_flap_count: - description: |- - Number of times the session went from Up to Down state. - type: integer - format: uint64 - x-field-uid: 3 - routes_advertised: - description: |- - Number of routes advertised. - type: integer - format: uint64 - x-field-uid: 4 - routes_received: - description: |- - Number of routes received. - type: integer - format: uint64 - x-field-uid: 5 - route_withdraws_sent: - description: |- - Number of route withdraws sent. - type: integer - format: uint64 - x-field-uid: 6 - route_withdraws_received: - description: |- - Number of route withdraws received. - type: integer - format: uint64 - x-field-uid: 7 - updates_sent: - description: |- - Number of Update messages sent. - type: integer - format: uint64 - x-field-uid: 8 - updates_received: - description: |- - Number of Update messages received. - type: integer - format: uint64 - x-field-uid: 9 - opens_sent: - description: |- - Number of Open messages sent. - type: integer - format: uint64 - x-field-uid: 10 - opens_received: - description: |- - Number of Open messages received. - type: integer - format: uint64 - x-field-uid: 11 - keepalives_sent: - description: |- - Number of Keepalive messages sent. - type: integer - format: uint64 - x-field-uid: 12 - keepalives_received: - description: |- - Number of Keepalive messages received. - type: integer - format: uint64 - x-field-uid: 13 - notifications_sent: - description: |- - Number of Notification messages sent. - type: integer - format: uint64 - x-field-uid: 14 - notifications_received: - description: |- - Number of Notification messages received. - type: integer - format: uint64 - x-field-uid: 15 - fsm_state: + - succeeded + - failed + Action.Protocol.Bgp: + description: |- + Actions associated with BGP on configured resources. + type: object + required: + - choice + properties: + choice: + type: string + x-enum: + notification: + x-field-uid: 1 + initiate_graceful_restart: + x-field-uid: 2 + x-field-uid: 1 + enum: + - notification + - initiate_graceful_restart + notification: + $ref: '#/components/schemas/Action.Protocol.Bgp.Notification' + x-field-uid: 2 + initiate_graceful_restart: + $ref: '#/components/schemas/Action.Protocol.Bgp.InitiateGracefulRestart' + x-field-uid: 3 + Action.Protocol.Bgp.Notification: + description: "A NOTIFICATION message is sent when an error is detected with\ + \ the BGP session, such as hold timer expiring, misconfigured AS number or\ + \ a BGP session reset is requested. This causes the BGP connection to close.\ + \ Send explicit NOTIFICATIONs for list of specified BGP peers. If a user\ + \ wants to send custom Error Code and Error Subcode the custom object should\ + \ be configured. A user can send IANA defined BGP NOTIFICATIONs according\ + \ to https://www.iana.org/assignments/bgp-parameters/bgp-parameters.xhtml. " + type: object + properties: + names: + description: | + The names of BGP Peers to send NOTIFICATION to. If no name is specified then NOTIFICATION will be sent to all configured BGP peers. + + x-constraint: + - /components/schemas/Device.Bgp/properties/name + type: array + items: + type: string + x-constraint: + - /components/schemas/Device.Bgp/properties/name + x-field-uid: 1 + choice: description: |- - BGP peer FSM (Finite State Machine) state as Idle, Connect, Active, OpenSent, OpenConfirm and Established. In all the states except Established the BGP session is down. Idle refers to the Idle state of the FSM. Connect refers to the state where the session is waiting for the underlying transport session to be established. Active refers to the state where the session is awaiting for a connection from the remote peer. OpenSent refers to the state where the session is in the process of being established. The local system has sent an OPEN message. OpenConfirm refers to the state where the session is in the process of being established. The local system has sent and received an OPEN message and is awaiting a NOTIFICATION or KEEPALIVE message from remote peer. Established refers to the state where the BGP session with the peer is established. + Each BGP NOTIFICATION message includes an Error Code field indicating what type of problem occurred. For certain Error Codes, an Error Subcode field provides additional details about the specific nature of the problem. The choice value will provide the Error Code used in NOTIFICATION message. The Subcode can be set for each of the corresponding errors except for Hold Timer Expired error and BGP Finite State Machine error. In both of these cases Subcode 0 will be sent. If a user wants to use non zero Sub Code then custom choice can be used. type: string - x-field-uid: 16 + x-field-uid: 2 + default: cease x-enum: - idle: + cease: x-field-uid: 1 - connect: + message_header_error: x-field-uid: 2 - active: + open_message_error: x-field-uid: 3 - opensent: + update_message_error: x-field-uid: 4 - openconfirm: + hold_timer_expired: x-field-uid: 5 - established: + finite_state_machine_error: x-field-uid: 6 + custom: + x-field-uid: 7 enum: - - idle - - connect - - active - - opensent - - openconfirm - - established - end_of_rib_received: - description: |- - Number of End-of-RIB markers received indicating the completion of the initial routing update for a particular address family after the session is established. For the IPv4 unicast address family, the End-of-RIB marker is an UPDATE message with the minimum length. For any other address family, it is an UPDATE message that contains only the MP_UNREACH_NLRI attribute with no withdrawn routes for that . - type: integer - format: uint64 - x-field-uid: 17 - Bgpv6.Metrics.Request: + - cease + - message_header_error + - open_message_error + - update_message_error + - hold_timer_expired + - finite_state_machine_error + - custom + cease: + $ref: '#/components/schemas/Device.Bgp.CeaseError' + x-field-uid: 3 + message_header_error: + $ref: '#/components/schemas/Device.Bgp.MessageHeaderError' + x-field-uid: 4 + open_message_error: + $ref: '#/components/schemas/Device.Bgp.OpenMessageError' + x-field-uid: 5 + update_message_error: + $ref: '#/components/schemas/Device.Bgp.UpdateMessageError' + x-field-uid: 6 + hold_timer_expired: + $ref: '#/components/schemas/Device.Bgp.HoldTimerExpired' + x-field-uid: 7 + finite_state_machine_error: + $ref: '#/components/schemas/Device.Bgp.FiniteStateMachineError' + x-field-uid: 8 + custom: + $ref: '#/components/schemas/Device.Bgp.CustomError' + x-field-uid: 9 + Action.Protocol.Bgp.InitiateGracefulRestart: description: |- - The request to retrieve BGPv6 per peer metrics/statistics. + Initiates BGP Graceful Restart process for the selected BGP peers. If no name is specified then Graceful Restart will be sent to all configured BGP peers. type: object properties: peer_names: description: | - The names of BGPv6 peers to return results for. An empty list will return results for all BGPv6 peers. - - x-constraint: - - /components/schemas/Bgp.V6peer/properties/name - + The names of device BGP peers objects to control. x-constraint: - - /components/schemas/Bgp.V6peer/properties/name + - /components/schemas/Device.Bgp/properties/name type: array items: type: string x-constraint: - - /components/schemas/Bgp.V6peer/properties/name + - /components/schemas/Device.Bgp/properties/name x-field-uid: 1 - column_names: - description: |- - The list of column names that the returned result set will contain. If the list is empty then all columns will be returned except for any result_groups. The name of the BGPv6 peer cannot be excluded. - type: array - items: - type: string - x-enum: - session_state: - x-field-uid: 1 - session_flap_count: - x-field-uid: 2 - routes_advertised: - x-field-uid: 3 - routes_received: - x-field-uid: 4 - route_withdraws_sent: - x-field-uid: 5 - route_withdraws_received: - x-field-uid: 6 - updates_sent: - x-field-uid: 7 - updates_received: - x-field-uid: 8 - opens_sent: - x-field-uid: 9 - opens_received: - x-field-uid: 10 - keepalives_sent: - x-field-uid: 11 - keepalives_received: - x-field-uid: 12 - notifications_sent: - x-field-uid: 13 - notifications_received: - x-field-uid: 14 - fsm_state: - x-field-uid: 15 - end_of_rib_received: - x-field-uid: 16 - enum: - - session_state - - session_flap_count - - routes_advertised - - routes_received - - route_withdraws_sent - - route_withdraws_received - - updates_sent - - updates_received - - opens_sent - - opens_received - - keepalives_sent - - keepalives_received - - notifications_sent - - notifications_received - - fsm_state - - end_of_rib_received + restart_delay: + description: "Duration (in seconds) after which selected BGP peers will\ + \ initiate \nGraceful restart by sending the Open Message with Restart\ + \ State bit set in the Graceful Restart capability." + type: integer + format: uint32 + maximum: 3600 + default: 30 x-field-uid: 2 - Bgpv6.Metric: + Metrics.Request: description: |- - BGPv6 per peer statistics information. + Request to traffic generator for metrics of choice. type: object properties: - name: - description: |- - The name of a configured BGPv6 peer. + choice: type: string + default: port x-field-uid: 1 - session_state: - description: |- - Session state as up or down. Up refers to an Established state and Down refers to any other state. - type: string - x-field-uid: 2 x-enum: - up: + port: x-field-uid: 1 - down: + flow: x-field-uid: 2 + bgpv4: + x-field-uid: 3 + bgpv6: + x-field-uid: 4 + isis: + x-field-uid: 5 + lag: + x-field-uid: 6 + lacp: + x-field-uid: 7 + lldp: + x-field-uid: 8 + rsvp: + x-field-uid: 9 enum: - - up - - down - session_flap_count: - description: |- - Number of times the session went from Up to Down state. - type: integer - format: uint64 + - port + - flow + - bgpv4 + - bgpv6 + - isis + - lag + - lacp + - lldp + - rsvp + port: + $ref: '#/components/schemas/Port.Metrics.Request' + x-field-uid: 2 + flow: + $ref: '#/components/schemas/Flow.Metrics.Request' x-field-uid: 3 - routes_advertised: - description: |- - Number of routes advertised. - type: integer - format: uint64 + bgpv4: + $ref: '#/components/schemas/Bgpv4.Metrics.Request' x-field-uid: 4 - routes_received: - description: |- - Number of routes received. - type: integer - format: uint64 + bgpv6: + $ref: '#/components/schemas/Bgpv6.Metrics.Request' x-field-uid: 5 - route_withdraws_sent: - description: |- - Number of route withdraws sent. - type: integer - format: uint64 + isis: + $ref: '#/components/schemas/Isis.Metrics.Request' x-field-uid: 6 - route_withdraws_received: - description: |- - Number of route withdraws received. - type: integer - format: uint64 + lag: + $ref: '#/components/schemas/Lag.Metrics.Request' x-field-uid: 7 - updates_sent: - description: |- - Number of Update messages sent. - type: integer - format: uint64 + lacp: + $ref: '#/components/schemas/Lacp.Metrics.Request' x-field-uid: 8 - updates_received: - description: |- - Number of Update messages received. - type: integer - format: uint64 + lldp: + $ref: '#/components/schemas/Lldp.Metrics.Request' x-field-uid: 9 - opens_sent: - description: |- - Number of Open messages sent. - type: integer - format: uint64 + rsvp: + $ref: '#/components/schemas/Rsvp.Metrics.Request' x-field-uid: 10 - opens_received: - description: |- - Number of Open messages received. - type: integer - format: uint64 - x-field-uid: 11 - keepalives_sent: - description: |- - Number of Keepalive messages sent. - type: integer - format: uint64 - x-field-uid: 12 - keepalives_received: - description: |- - Number of Keepalive messages received. - type: integer - format: uint64 - x-field-uid: 13 - notifications_sent: - description: |- - Number of Notification messages sent. - type: integer - format: uint64 - x-field-uid: 14 - notifications_received: - description: |- - Number of Notification messages received. - type: integer - format: uint64 - x-field-uid: 15 - fsm_state: - description: |- - BGP peer FSM (Finite State Machine) state as Idle, Connect, Active, OpenSent, OpenConfirm and Established. In all the states except Established the BGP session is down. Idle refers to the Idle state of the FSM. Connect refers to the state where the session is waiting for the underlying transport session to be established. Active refers to the state where the session is awaiting for a connection from the remote peer. OpenSent refers to the state where the session is in the process of being established. The local system has sent an OPEN message. OpenConfirm refers to the state where the session is in the process of being established. The local system has sent and received an OPEN message and is awaiting a NOTIFICATION or KEEPALIVE message from remote peer. Established refers to the state where the BGP session with the peer is established. + Metrics.Response: + description: |- + Response containing chosen traffic generator metrics. + type: object + properties: + choice: type: string - x-field-uid: 16 + default: port_metrics + x-field-uid: 1 x-enum: - idle: + flow_metrics: x-field-uid: 1 - connect: + port_metrics: x-field-uid: 2 - active: + bgpv4_metrics: x-field-uid: 3 - opensent: + bgpv6_metrics: x-field-uid: 4 - openconfirm: + isis_metrics: x-field-uid: 5 - established: + lag_metrics: x-field-uid: 6 + lacp_metrics: + x-field-uid: 7 + lldp_metrics: + x-field-uid: 8 + rsvp_metrics: + x-field-uid: 9 enum: - - idle - - connect - - active - - opensent - - openconfirm - - established - end_of_rib_received: - description: |- - Number of End-of-RIB markers received indicating the completion of the initial routing update for a particular address family after the session is established. For the IPv4 unicast address family, the End-of-RIB marker is an UPDATE message with the minimum length. For any other address family, it is an UPDATE message that contains only the MP_UNREACH_NLRI attribute with no withdrawn routes for that . - type: integer - format: uint64 - x-field-uid: 17 - Isis.Metrics.Request: + - flow_metrics + - port_metrics + - bgpv4_metrics + - bgpv6_metrics + - isis_metrics + - lag_metrics + - lacp_metrics + - lldp_metrics + - rsvp_metrics + port_metrics: + type: array + items: + $ref: '#/components/schemas/Port.Metric' + x-field-uid: 2 + flow_metrics: + type: array + items: + $ref: '#/components/schemas/Flow.Metric' + x-field-uid: 3 + bgpv4_metrics: + type: array + items: + $ref: '#/components/schemas/Bgpv4.Metric' + x-field-uid: 4 + bgpv6_metrics: + type: array + items: + $ref: '#/components/schemas/Bgpv6.Metric' + x-field-uid: 5 + isis_metrics: + type: array + items: + $ref: '#/components/schemas/Isis.Metric' + x-field-uid: 6 + lag_metrics: + type: array + items: + $ref: '#/components/schemas/Lag.Metric' + x-field-uid: 7 + lacp_metrics: + type: array + items: + $ref: '#/components/schemas/Lacp.Metric' + x-field-uid: 8 + lldp_metrics: + type: array + items: + $ref: '#/components/schemas/Lldp.Metric' + x-field-uid: 9 + rsvp_metrics: + type: array + items: + $ref: '#/components/schemas/Rsvp.Metric' + x-field-uid: 10 + Port.Metrics.Request: description: |- - The request to retrieve ISIS per Router metrics/statistics. + The port result request to the traffic generator type: object properties: - router_names: + port_names: description: | - The names of ISIS Routers to return results for. An empty list will return results for all ISIS router. - - x-constraint: - - /components/schemas/Device.IsisRouter/properties/name - + The names of objects to return results for. An empty list will return all port row results. x-constraint: - - /components/schemas/Device.IsisRouter/properties/name + - /components/schemas/Port/properties/name type: array items: type: string x-constraint: - - /components/schemas/Device.IsisRouter/properties/name + - /components/schemas/Port/properties/name x-field-uid: 1 column_names: description: |- - The list of column names that the returned result set will contain. If the list is empty then all columns will be returned except for any result_groups. The name of the ISIS Router cannot be excluded. + The list of column names that the returned result set will contain. If the list is empty then all columns will be returned. The name of the port cannot be excluded. type: array items: type: string x-enum: - l1_sessions_up: + transmit: x-field-uid: 1 - l1_session_flap: + location: x-field-uid: 2 - l1_database_size: + link: x-field-uid: 3 - l1_broadcast_hellos_sent: + capture: x-field-uid: 4 - l1_broadcast_hellos_received: + frames_tx: x-field-uid: 5 - l1_point_to_point_hellos_sent: + frames_rx: x-field-uid: 6 - l1_point_to_point_hellos_received: + bytes_tx: x-field-uid: 7 - l1_psnp_sent: + bytes_rx: x-field-uid: 8 - l1_psnp_received: + frames_tx_rate: x-field-uid: 9 - l1_csnp_sent: + frames_rx_rate: x-field-uid: 10 - l1_csnp_received: + bytes_tx_rate: x-field-uid: 11 - l1_lsp_sent: + bytes_rx_rate: x-field-uid: 12 - l1_lsp_received: - x-field-uid: 13 - l2_sessions_up: - x-field-uid: 14 - l2_session_flap: - x-field-uid: 15 - l2_database_size: - x-field-uid: 16 - l2_broadcast_hellos_sent: - x-field-uid: 17 - l2_broadcast_hellos_received: - x-field-uid: 18 - l2_point_to_point_hellos_sent: - x-field-uid: 19 - l2_point_to_point_hellos_received: - x-field-uid: 20 - l2_psnp_sent: - x-field-uid: 21 - l2_psnp_received: - x-field-uid: 22 - l2_csnp_sent: - x-field-uid: 23 - l2_csnp_received: - x-field-uid: 24 - l2_lsp_sent: - x-field-uid: 25 - l2_lsp_received: - x-field-uid: 26 enum: - - l1_sessions_up - - l1_session_flap - - l1_database_size - - l1_broadcast_hellos_sent - - l1_broadcast_hellos_received - - l1_point_to_point_hellos_sent - - l1_point_to_point_hellos_received - - l1_psnp_sent - - l1_psnp_received - - l1_csnp_sent - - l1_csnp_received - - l1_lsp_sent - - l1_lsp_received - - l2_sessions_up - - l2_session_flap - - l2_database_size - - l2_broadcast_hellos_sent - - l2_broadcast_hellos_received - - l2_point_to_point_hellos_sent - - l2_point_to_point_hellos_received - - l2_psnp_sent - - l2_psnp_received - - l2_csnp_sent - - l2_csnp_received - - l2_lsp_sent - - l2_lsp_received + - transmit + - location + - link + - capture + - frames_tx + - frames_rx + - bytes_tx + - bytes_rx + - frames_tx_rate + - frames_rx_rate + - bytes_tx_rate + - bytes_rx_rate x-field-uid: 2 - Isis.Metric: - description: |- - ISIS per router statistics information. + Port.Metric: type: object properties: name: - description: |- - The name of a configured ISIS router. + description: | + The name of a configured port + + x-constraint: + - /components/schemas/Port/properties/name type: string + x-constraint: + - /components/schemas/Port/properties/name x-field-uid: 1 - l1_sessions_up: + location: description: |- - The number of Level 1 (L1) sessions that are fully up. - type: integer - format: uint32 + The state of the connection to the test port location. The format should be the configured port location along with any custom connection state message. + type: string x-field-uid: 2 - l1_session_flap: + link: description: |- - The number of Level 1 Sessions Flap. - type: integer - format: uint64 + The state of the test port link The string can be up, down or a custom error message. + type: string x-field-uid: 3 - l1_broadcast_hellos_sent: + x-enum: + up: + x-field-uid: 1 + down: + x-field-uid: 2 + enum: + - up + - down + capture: description: |- - Number of Level 1 Hello messages sent. - type: integer - format: uint64 + The state of the test port capture infrastructure. The string can be started, stopped or a custom error message. + type: string x-field-uid: 4 - l1_broadcast_hellos_received: + x-enum: + started: + x-field-uid: 1 + stopped: + x-field-uid: 2 + enum: + - started + - stopped + frames_tx: description: |- - Number of Level 1 Hello messages received. + The current total number of frames transmitted type: integer format: uint64 x-field-uid: 5 - l1_point_to_point_hellos_sent: + frames_rx: description: |- - Number of Level 1 Point-to-Point(P2P) Hello messages sent. + The current total number of valid frames received type: integer format: uint64 x-field-uid: 6 - l1_point_to_point_hellos_received: + bytes_tx: description: |- - Number of Level 1 Point-to-Point(P2P) Hello messages received. + The current total number of bytes transmitted type: integer format: uint64 x-field-uid: 7 - l1_database_size: + bytes_rx: description: |- - Number of Link State Updates (LSPs) in the Level 1 LSP Databases. + The current total number of valid bytes received type: integer format: uint64 x-field-uid: 8 - l1_psnp_sent: + frames_tx_rate: description: |- - Number of Level 1 (L1) Partial Sequence Number Packet (PSNPs) sent. - type: integer - format: uint64 + The current rate of frames transmitted + type: number x-field-uid: 9 - l1_psnp_received: + frames_rx_rate: description: |- - Number of Level 1 (L1) Complete Sequence Number Packet (PSNPs) received. - type: integer - format: uint64 + The current rate of valid frames received + type: number x-field-uid: 10 - l1_csnp_sent: + bytes_tx_rate: description: |- - Number of Level 1 (L1) Complete Sequence Number Packet (CSNPs) sent. - type: integer - format: uint64 + The current rate of bytes transmitted + type: number x-field-uid: 11 - l1_csnp_received: + bytes_rx_rate: description: |- - Number of Level 1 (L1) Complete Sequence Number Packet (CSNPs) received. - type: integer - format: uint64 + The current rate of bytes received + type: number x-field-uid: 12 - l1_lsp_sent: + transmit: description: |- - Number of Level 1 (L1) Link State Protocol Data Units (LSPs) sent. - type: integer - format: uint64 + The transmit state of the flow. + type: string x-field-uid: 13 - l1_lsp_received: + x-enum: + started: + x-field-uid: 1 + stopped: + x-field-uid: 2 + enum: + - started + - stopped + Flow.Metrics.Request: + description: |- + The container for a flow metric request. + type: object + properties: + flow_names: + description: | + Flow metrics will be retrieved for these flow names. + If no flow names are specified then all flows will be returned. + + x-constraint: + - /components/schemas/Flow/properties/name + type: array + items: + type: string + x-constraint: + - /components/schemas/Flow/properties/name + x-field-uid: 1 + metric_names: description: |- - Number of Level 1 (L1) Link State Protocol Data Units (LSPs) received. - type: integer - format: uint64 - x-field-uid: 14 - l2_sessions_up: + The list of metric names that the returned result set will contain. If the list is empty then all metrics will be returned. + type: array + items: + type: string + x-enum: + transmit: + x-field-uid: 1 + frames_tx: + x-field-uid: 2 + frames_rx: + x-field-uid: 3 + bytes_tx: + x-field-uid: 4 + bytes_rx: + x-field-uid: 5 + frames_tx_rate: + x-field-uid: 6 + frames_rx_rate: + x-field-uid: 7 + enum: + - transmit + - frames_tx + - frames_rx + - bytes_tx + - bytes_rx + - frames_tx_rate + - frames_rx_rate + x-field-uid: 3 + tagged_metrics: + $ref: '#/components/schemas/Flow.TaggedMetrics.Filter' + x-field-uid: 4 + Flow.TaggedMetrics.Filter: + description: |- + Filter for tagged metrics + type: object + properties: + include: description: |- - The number of Level 2 (L2) sessions that are fully up. - type: integer - format: uint32 - x-field-uid: 15 - l2_session_flap: + Controls inclusion/exclusion of tagged metrics when fetching flow metrics. + type: boolean + default: true + x-field-uid: 1 + include_empty_metrics: description: |- - The number of Level 2 Sessions Flap. - type: integer - format: uint64 - x-field-uid: 16 - l2_broadcast_hellos_sent: - description: |- - Number of Level 2 Hello messages sent. - type: integer - format: uint64 - x-field-uid: 17 - l2_broadcast_hellos_received: - description: |- - Number of Level 2 Hello messages received. - type: integer - format: uint64 - x-field-uid: 18 - l2_point_to_point_hellos_sent: - description: |- - Number of Level 2 Point-to-Point(P2P) Hello messages sent. - type: integer - format: uint64 - x-field-uid: 19 - l2_point_to_point_hellos_received: - description: |- - Number of Level 2 Point-to-Point(P2P) Hello messages received. - type: integer - format: uint64 - x-field-uid: 20 - l2_database_size: - description: |- - Number of Link State Updates (LSPs) in the Level 2 LSP Databases. - type: integer - format: uint64 - x-field-uid: 21 - l2_psnp_sent: - description: |- - Number of Level 2 (L2) Partial Sequence Number Packet (PSNPs) sent. - type: integer - format: uint64 - x-field-uid: 22 - l2_psnp_received: - description: |- - Number of Level 2 (L2) Complete Sequence Number Packet (PSNPs) received. - type: integer - format: uint64 - x-field-uid: 23 - l2_csnp_sent: - description: |- - Number of Level 2 (L2) Complete Sequence Number Packet (CSNPs) sent. - type: integer - format: uint64 - x-field-uid: 24 - l2_csnp_received: - description: |- - Number of Level 2 (L2) Complete Sequence Number Packet (CSNPs) received. - type: integer - format: uint64 - x-field-uid: 25 - l2_lsp_sent: - description: |- - Number of Level 2 (L2) Link State Protocol Data Units (LSPs) sent. - type: integer - format: uint64 - x-field-uid: 26 - l2_lsp_received: - description: |- - Number of Level 2 (L2) Link State Protocol Data Units (LSPs) received. - type: integer - format: uint64 - x-field-uid: 27 - Lag.Metrics.Request: - description: |- - The request to retrieve per LAG metrics/statistics. - type: object - properties: - lag_names: - description: | - The names of LAGs to return results for. An empty list will return results for all LAGs. - - x-constraint: - - /components/schemas/Lag/properties/name - - - x-constraint: - - /components/schemas/Lag/properties/name - type: array - items: - type: string - x-constraint: - - /components/schemas/Lag/properties/name - x-field-uid: 1 - column_names: + Controls inclusion/exclusion of tagged metrics where each underlying attributes has zero value or absent value. + type: boolean + default: false + x-field-uid: 2 + metric_names: description: |- - The list of column names that the returned result set will contain. If the list is empty then all columns will be returned. The name of the LAG cannot be excluded. + The list of metric names that the returned result set will contain. If the list is empty then all metrics will be returned. type: array items: type: string x-enum: - oper_status: - x-field-uid: 1 - member_ports_up: - x-field-uid: 2 frames_tx: - x-field-uid: 3 + x-field-uid: 1 frames_rx: - x-field-uid: 4 + x-field-uid: 2 bytes_tx: - x-field-uid: 5 + x-field-uid: 3 bytes_rx: - x-field-uid: 6 + x-field-uid: 4 frames_tx_rate: - x-field-uid: 7 + x-field-uid: 5 frames_rx_rate: - x-field-uid: 8 - bytes_tx_rate: - x-field-uid: 9 - bytes_rx_rate: - x-field-uid: 10 + x-field-uid: 6 enum: - - oper_status - - member_ports_up - frames_tx - frames_rx - bytes_tx - bytes_rx - frames_tx_rate - frames_rx_rate - - bytes_tx_rate - - bytes_rx_rate + x-field-uid: 3 + filters: + description: |- + List of filters to selectively fetch tagged metrics with certain tag and corresponding value. + type: array + items: + $ref: '#/components/schemas/Flow.MetricTag.Filter' + x-field-uid: 4 + Flow.MetricTag.Filter: + description: |- + A container for filtering ingress and/or egress metric tags. + The Tx stats may not be applicable in both the request and response filter. + type: object + properties: + name: + description: |- + A metric tag name that MUST exist in a flow packet or + flow egress_packet configuration + type: string + x-field-uid: 1 + values: + description: |- + A list of filters that can be applied to the metric tag name. + By default all values will be included in the flow metric results. + type: array + items: + type: string x-field-uid: 2 - Lag.Metric: + Flow.Metric: + description: |- + A container for flow metrics. + The container is keyed by the name, port_tx and port_rx. type: object properties: name: - description: | - The name of a configured LAG - - x-constraint: - - /components/schemas/Lag/properties/name - - - x-constraint: - - /components/schemas/Lag/properties/name + description: |- + The name of the flow type: string - x-constraint: - - /components/schemas/Lag/properties/name + example: Tx -> Rx x-field-uid: 1 - oper_status: + port_tx: description: |- - The current operational state of the LAG. The state can be up or down. State 'up' indicates member_ports_up >= min_links. + The name of the transmit port type: string x-field-uid: 2 + port_rx: + description: |- + The name of the receive port + type: string + x-field-uid: 3 + transmit: + description: |- + The transmit state of the flow. + type: string + x-field-uid: 5 x-enum: - up: + started: x-field-uid: 1 - down: + stopped: x-field-uid: 2 + paused: + x-field-uid: 3 enum: - - up - - down - member_ports_up: - description: |- - The number of LAG member ports up. - type: integer - format: uint32 - x-field-uid: 3 + - started + - stopped + - paused frames_tx: description: |- - The current total number of frames transmitted. + The current total number of frames transmitted type: integer format: uint64 - x-field-uid: 4 + x-field-uid: 6 frames_rx: description: |- - The current total number of valid frames received. + The current total number of valid frames received type: integer format: uint64 - x-field-uid: 5 + x-field-uid: 7 bytes_tx: description: |- - The current total number of bytes transmitted. + The current total number of bytes transmitted type: integer format: uint64 - x-field-uid: 6 + x-field-uid: 8 bytes_rx: description: |- - The current total number of valid bytes received. + The current total number of bytes received type: integer format: uint64 - minimum: 0 - x-field-uid: 7 + x-field-uid: 9 frames_tx_rate: description: |- - The current rate of frames transmitted. + The current rate of frames transmitted type: number - x-field-uid: 8 + x-field-uid: 10 frames_rx_rate: description: |- - The current rate of valid frames received. + The current rate of valid frames received type: number - x-field-uid: 9 - bytes_tx_rate: + x-field-uid: 11 + loss: description: |- - The current rate of bytes transmitted. + The percentage of lost frames type: number - x-field-uid: 10 - bytes_rx_rate: + x-field-uid: 12 + timestamps: + $ref: '#/components/schemas/Metric.Timestamp' + x-field-uid: 13 + latency: + $ref: '#/components/schemas/Metric.Latency' + x-field-uid: 14 + tagged_metrics: description: |- - The current rate of bytes received. - type: number - x-field-uid: 11 - Lacp.Metrics.Request: + List of metrics corresponding to a set of values applicable + for configured metric tags in ingress or egress packet header fields of corresponding flow. + The container is keyed by list of tag-value pairs. + type: array + items: + $ref: '#/components/schemas/Flow.TaggedMetric' + x-field-uid: 15 + Flow.TaggedMetric: description: |- - The request to retrieve LACP per LAG member metrics/statistics. + Metrics for each set of values applicable for configured + metric tags in ingress or egress packet header fields of corresponding flow. + The container is keyed by list of tag-value pairs. type: object properties: - lag_names: - description: | - The names of LAG (ports group) for which LACP metrics to be returned. An empty list will return metrics for all LAGs. - - x-constraint: - - /components/schemas/Lag/properties/name - - - x-constraint: - - /components/schemas/Lag/properties/name + tags: + description: |- + List of tag and value pairs type: array items: - type: string - x-constraint: - - /components/schemas/Lag/properties/name + $ref: '#/components/schemas/Flow.MetricTag' x-field-uid: 1 - lag_member_port_names: + frames_tx: + description: |- + The current total number of frames transmitted + type: integer + format: uint64 + x-field-uid: 2 + frames_rx: + description: |- + The current total number of valid frames received + type: integer + format: uint64 + x-field-uid: 3 + bytes_tx: + description: |- + The current total number of bytes transmitted + type: integer + format: uint64 + x-field-uid: 4 + bytes_rx: + description: |- + The current total number of bytes received + type: integer + format: uint64 + x-field-uid: 5 + frames_tx_rate: + description: |- + The current rate of frames transmitted + type: number + x-field-uid: 6 + frames_rx_rate: + description: |- + The current rate of valid frames received + type: number + x-field-uid: 7 + loss: + description: |- + The percentage of lost frames + type: number + x-field-uid: 8 + timestamps: + $ref: '#/components/schemas/Metric.Timestamp' + x-field-uid: 9 + latency: + $ref: '#/components/schemas/Metric.Latency' + x-field-uid: 10 + Flow.MetricTag: + type: object + properties: + name: + description: |- + Name of packet field metric tag + type: string + x-field-uid: 1 + value: + $ref: '#/components/schemas/Flow.MetricTag.Value' + x-field-uid: 2 + Flow.MetricTag.Value: + description: |- + A container for metric tag value + type: object + properties: + choice: + description: |- + Available formats for metric tag value + type: string + default: hex + x-enum: + hex: + x-field-uid: 1 + str: + x-field-uid: 2 + x-field-uid: 1 + enum: + - hex + - str + hex: + description: |- + Value represented in hexadecimal format + type: string + format: hex + x-field-uid: 2 + str: + description: |- + Value represented in string format + type: string + x-field-uid: 3 + Metric.Timestamp: + description: |- + The container for timestamp metrics. + The container will be empty if the timestamp has not been configured for + the flow. + type: object + properties: + first_timestamp_ns: + description: |- + First timestamp in nanoseconds + type: number + format: double + x-field-uid: 1 + last_timestamp_ns: + description: |- + Last timestamp in nanoseconds + type: number + format: double + x-field-uid: 2 + Metric.Latency: + description: "The container for latency metrics. \nThe min/max/avg values are\ + \ dependent on the type of latency measurement \nmode that is configured.\n\ + The container will be empty if the latency has not been configured for\nthe\ + \ flow." + type: object + properties: + minimum_ns: + description: |- + Minimum latency in nanoseconds + type: number + format: double + x-field-uid: 1 + maximum_ns: + description: |- + Maximum latency in nanoseconds + type: number + format: double + x-field-uid: 2 + average_ns: + description: |- + Average latency in nanoseconds + type: number + format: double + x-field-uid: 3 + Bgpv4.Metrics.Request: + description: |- + The request to retrieve BGPv4 per peer metrics/statistics. + type: object + properties: + peer_names: description: | - The names of LAG members (ports) for which LACP metrics to be returned. An empty list will return metrics for all LAG members. - - x-constraint: - - /components/schemas/Port/properties/name - + The names of BGPv4 peers to return results for. An empty list will return results for all BGPv4 peers. x-constraint: - - /components/schemas/Port/properties/name + - /components/schemas/Bgp.V4peer/properties/name type: array items: type: string x-constraint: - - /components/schemas/Port/properties/name - x-field-uid: 2 + - /components/schemas/Bgp.V4peer/properties/name + x-field-uid: 1 column_names: description: |- - The list of column names that the returned result set will contain. If the list is empty then all columns will be returned. The name of LAG and LAG member can not be excluded. + The list of column names that the returned result set will contain. If the list is empty then all columns will be returned except for any result_groups. The name of the BGPv4 peer cannot be excluded. type: array items: type: string x-enum: - lacp_packets_rx: + session_state: x-field-uid: 1 - lacp_packets_tx: + session_flap_count: x-field-uid: 2 - lacp_rx_errors: + routes_advertised: x-field-uid: 3 - activity: + routes_received: x-field-uid: 4 - timeout: + route_withdraws_sent: x-field-uid: 5 - synchronization: + route_withdraws_received: x-field-uid: 6 - aggregatable: + updates_sent: x-field-uid: 7 - collecting: + updates_received: x-field-uid: 8 - distributing: + opens_sent: x-field-uid: 9 - system_id: + opens_received: x-field-uid: 10 - oper_key: + keepalives_sent: x-field-uid: 11 - partner_id: + keepalives_received: x-field-uid: 12 - partner_key: + notifications_sent: x-field-uid: 13 - port_num: + notifications_received: x-field-uid: 14 - partner_port_num: + fsm_state: x-field-uid: 15 + end_of_rib_received: + x-field-uid: 16 enum: - - lacp_packets_rx - - lacp_packets_tx - - lacp_rx_errors - - activity - - timeout - - synchronization - - aggregatable - - collecting - - distributing - - system_id - - oper_key - - partner_id - - partner_key - - port_num - - partner_port_num - x-field-uid: 3 - Lacp.Metric: + - session_state + - session_flap_count + - routes_advertised + - routes_received + - route_withdraws_sent + - route_withdraws_received + - updates_sent + - updates_received + - opens_sent + - opens_received + - keepalives_sent + - keepalives_received + - notifications_sent + - notifications_received + - fsm_state + - end_of_rib_received + x-field-uid: 2 + Bgpv4.Metric: description: |- - LACP metrics (statistics) per LAG member. + BGPv4 per peer statistics information. type: object properties: - lag_name: + name: description: |- - The name of a LAG (ports group) configured with LACP. + The name of a configured BGPv4 peer. type: string x-field-uid: 1 - lag_member_port_name: + session_state: description: |- - The name of a LAG member (port) configured with LACP. + Session state as up or down. Up refers to an Established state and Down refers to any other state. type: string x-field-uid: 2 - lacp_packets_rx: + x-enum: + up: + x-field-uid: 1 + down: + x-field-uid: 2 + enum: + - up + - down + session_flap_count: description: |- - Number of LACPDUs received. + Number of times the session went from Up to Down state. type: integer format: uint64 x-field-uid: 3 - lacp_packets_tx: + routes_advertised: description: |- - Number of LACPDUs transmitted. + Number of routes advertised. type: integer format: uint64 x-field-uid: 4 - lacp_rx_errors: + routes_received: description: |- - Number of LACPDUs receive packet errors. + Number of routes received. type: integer format: uint64 x-field-uid: 5 - activity: + route_withdraws_sent: description: |- - Indicates participant is active or passive. - type: string + Number of route withdraws sent. + type: integer + format: uint64 x-field-uid: 6 - x-enum: - active: - x-field-uid: 1 - passive: - x-field-uid: 2 - enum: - - active - - passive - timeout: + route_withdraws_received: description: |- - The timeout type (short or long) used by the participant. - type: string + Number of route withdraws received. + type: integer + format: uint64 x-field-uid: 7 - x-enum: - short: - x-field-uid: 1 - long: - x-field-uid: 2 - enum: - - short - - long - synchronization: + updates_sent: description: |- - Indicates whether the participant is in-sync or out-of-sync. - type: string + Number of Update messages sent. + type: integer + format: uint64 x-field-uid: 8 - x-enum: - in_sync: - x-field-uid: 1 - out_sync: - x-field-uid: 2 - enum: - - in_sync - - out_sync - aggregatable: + updates_received: description: |- - A true value indicates that the participant will allow the link to be used as part of the aggregate. A false value indicates the link should be used as an individual link. - type: boolean + Number of Update messages received. + type: integer + format: uint64 x-field-uid: 9 - collecting: + opens_sent: description: |- - If true, the participant is collecting incoming frames on the link, otherwise false. - type: boolean + Number of Open messages sent. + type: integer + format: uint64 x-field-uid: 10 - distributing: + opens_received: description: |- - When true, the participant is distributing outgoing frames; when false, distribution is disabled. - type: boolean + Number of Open messages received. + type: integer + format: uint64 x-field-uid: 11 - system_id: + keepalives_sent: description: |- - MAC address that defines the local system ID for the aggregate interface. - type: string - format: mac + Number of Keepalive messages sent. + type: integer + format: uint64 x-field-uid: 12 - oper_key: + keepalives_received: description: |- - Current operational value of the key for the aggregate interface. + Number of Keepalive messages received. type: integer - format: uint32 + format: uint64 x-field-uid: 13 - partner_id: + notifications_sent: description: |- - MAC address representing the protocol partner's interface system ID. - type: string - format: mac + Number of Notification messages sent. + type: integer + format: uint64 x-field-uid: 14 - partner_key: + notifications_received: description: |- - Operational value of the protocol partner's key. + Number of Notification messages received. type: integer - format: uint32 + format: uint64 x-field-uid: 15 - port_num: + fsm_state: description: |- - Port number of the local (actor) aggregation member. - type: integer - format: uint32 + BGP peer FSM (Finite State Machine) state as Idle, Connect, Active, OpenSent, OpenConfirm and Established. In all the states except Established the BGP session is down. Idle refers to the Idle state of the FSM. Connect refers to the state where the session is waiting for the underlying transport session to be established. Active refers to the state where the session is awaiting for a connection from the remote peer. OpenSent refers to the state where the session is in the process of being established. The local system has sent an OPEN message. OpenConfirm refers to the state where the session is in the process of being established. The local system has sent and received an OPEN message and is awaiting a NOTIFICATION or KEEPALIVE message from remote peer. Established refers to the state where the BGP session with the peer is established. + type: string x-field-uid: 16 - partner_port_num: + x-enum: + idle: + x-field-uid: 1 + connect: + x-field-uid: 2 + active: + x-field-uid: 3 + opensent: + x-field-uid: 4 + openconfirm: + x-field-uid: 5 + established: + x-field-uid: 6 + enum: + - idle + - connect + - active + - opensent + - openconfirm + - established + end_of_rib_received: description: |- - Port number of the partner (remote) port for this member port. + Number of End-of-RIB markers received indicating the completion of the initial routing update for a particular address family after the session is established. For the IPv4 unicast address family, the End-of-RIB marker is an UPDATE message with the minimum length. For any other address family, it is an UPDATE message that contains only the MP_UNREACH_NLRI attribute with no withdrawn routes for that . type: integer - format: uint32 + format: uint64 x-field-uid: 17 - Lldp.Metrics.Request: + Bgpv6.Metrics.Request: description: |- - The request to retrieve LLDP per instance metrics/statistics. + The request to retrieve BGPv6 per peer metrics/statistics. type: object properties: - lldp_names: + peer_names: description: | - The names of LLDP instances to return results for. An empty list will return results for all LLDP instances. - - x-constraint: - - /components/schemas/Lldp/properties/name - + The names of BGPv6 peers to return results for. An empty list will return results for all BGPv6 peers. x-constraint: - - /components/schemas/Lldp/properties/name + - /components/schemas/Bgp.V6peer/properties/name type: array items: type: string x-constraint: - - /components/schemas/Lldp/properties/name + - /components/schemas/Bgp.V6peer/properties/name x-field-uid: 1 column_names: description: |- - The requested list of column names for the result set. If the list is empty then metrics for all columns will be returned. The name of LLDP instance can not be excluded. + The list of column names that the returned result set will contain. If the list is empty then all columns will be returned except for any result_groups. The name of the BGPv6 peer cannot be excluded. type: array items: type: string x-enum: - frames_rx: + session_state: x-field-uid: 1 - frames_tx: + session_flap_count: x-field-uid: 2 - frames_error_rx: + routes_advertised: x-field-uid: 3 - frames_discard: + routes_received: x-field-uid: 4 - tlvs_discard: + route_withdraws_sent: x-field-uid: 5 - tlvs_unknown: + route_withdraws_received: x-field-uid: 6 + updates_sent: + x-field-uid: 7 + updates_received: + x-field-uid: 8 + opens_sent: + x-field-uid: 9 + opens_received: + x-field-uid: 10 + keepalives_sent: + x-field-uid: 11 + keepalives_received: + x-field-uid: 12 + notifications_sent: + x-field-uid: 13 + notifications_received: + x-field-uid: 14 + fsm_state: + x-field-uid: 15 + end_of_rib_received: + x-field-uid: 16 enum: - - frames_rx - - frames_tx - - frames_error_rx - - frames_discard - - tlvs_discard - - tlvs_unknown + - session_state + - session_flap_count + - routes_advertised + - routes_received + - route_withdraws_sent + - route_withdraws_received + - updates_sent + - updates_received + - opens_sent + - opens_received + - keepalives_sent + - keepalives_received + - notifications_sent + - notifications_received + - fsm_state + - end_of_rib_received x-field-uid: 2 - Lldp.Metric: + Bgpv6.Metric: description: |- - LLDP per instance statistics information. + BGPv6 per peer statistics information. type: object properties: name: description: |- - The name of the configured LLDP instance. + The name of a configured BGPv6 peer. type: string x-field-uid: 1 - frames_rx: + session_state: description: |- - Number of LLDP frames received. - type: integer - format: uint64 + Session state as up or down. Up refers to an Established state and Down refers to any other state. + type: string x-field-uid: 2 - frames_tx: + x-enum: + up: + x-field-uid: 1 + down: + x-field-uid: 2 + enum: + - up + - down + session_flap_count: description: |- - Number of LLDP frames transmitted. + Number of times the session went from Up to Down state. type: integer format: uint64 x-field-uid: 3 - frames_error_rx: + routes_advertised: description: |- - Number of LLDP frames received with packet errors. This stat should be incremented based on statsFramesInErrorsTotal increment rule in section 10.3.2 of IEEE Std 802.1 AB-2005. + Number of routes advertised. type: integer format: uint64 x-field-uid: 4 - frames_discard: + routes_received: description: |- - Number of LLDP frames received that are discarded. This stat should be incremented when one or more of the three mandatory TLVs at the beginning of the LLDPDU is missing, out of order or contains an out of range information string length. This stat should follow the validation rules in section 10.3.2 of IEEE Std 802.1 AB-2005. + Number of routes received. type: integer format: uint64 x-field-uid: 5 - tlvs_discard: + route_withdraws_sent: description: |- - Number of LLDP tlvs received that are discarded. If any TLV contains an error condition specific for that particular TLV or if any TLV extends past the physical end of the frame then these TLVs will be discarded. + Number of route withdraws sent. type: integer format: uint64 x-field-uid: 6 - tlvs_unknown: + route_withdraws_received: description: |- - Number of LLDP unknown tlvs received. If the OUI of the organizationlly specific TLV and/or organizationally defined subtype are not recognized,or if TLV type value is in the range of reserved TLV types then these TLVs will be considered as unknown TLVs. + Number of route withdraws received. type: integer format: uint64 x-field-uid: 7 - Rsvp.Metrics.Request: - description: |- - The request to retrieve RSVP-TE per Router metrics/statistics. - type: object - properties: - router_names: - description: | - The names of RSVP-TE Routers to return results for. An empty list as input will return results for all RSVP-TE routers. - - x-constraint: - - /components/schemas/Device.Rsvp/properties/name - + updates_sent: + description: |- + Number of Update messages sent. + type: integer + format: uint64 + x-field-uid: 8 + updates_received: + description: |- + Number of Update messages received. + type: integer + format: uint64 + x-field-uid: 9 + opens_sent: + description: |- + Number of Open messages sent. + type: integer + format: uint64 + x-field-uid: 10 + opens_received: + description: |- + Number of Open messages received. + type: integer + format: uint64 + x-field-uid: 11 + keepalives_sent: + description: |- + Number of Keepalive messages sent. + type: integer + format: uint64 + x-field-uid: 12 + keepalives_received: + description: |- + Number of Keepalive messages received. + type: integer + format: uint64 + x-field-uid: 13 + notifications_sent: + description: |- + Number of Notification messages sent. + type: integer + format: uint64 + x-field-uid: 14 + notifications_received: + description: |- + Number of Notification messages received. + type: integer + format: uint64 + x-field-uid: 15 + fsm_state: + description: |- + BGP peer FSM (Finite State Machine) state as Idle, Connect, Active, OpenSent, OpenConfirm and Established. In all the states except Established the BGP session is down. Idle refers to the Idle state of the FSM. Connect refers to the state where the session is waiting for the underlying transport session to be established. Active refers to the state where the session is awaiting for a connection from the remote peer. OpenSent refers to the state where the session is in the process of being established. The local system has sent an OPEN message. OpenConfirm refers to the state where the session is in the process of being established. The local system has sent and received an OPEN message and is awaiting a NOTIFICATION or KEEPALIVE message from remote peer. Established refers to the state where the BGP session with the peer is established. + type: string + x-field-uid: 16 + x-enum: + idle: + x-field-uid: 1 + connect: + x-field-uid: 2 + active: + x-field-uid: 3 + opensent: + x-field-uid: 4 + openconfirm: + x-field-uid: 5 + established: + x-field-uid: 6 + enum: + - idle + - connect + - active + - opensent + - openconfirm + - established + end_of_rib_received: + description: |- + Number of End-of-RIB markers received indicating the completion of the initial routing update for a particular address family after the session is established. For the IPv4 unicast address family, the End-of-RIB marker is an UPDATE message with the minimum length. For any other address family, it is an UPDATE message that contains only the MP_UNREACH_NLRI attribute with no withdrawn routes for that . + type: integer + format: uint64 + x-field-uid: 17 + Isis.Metrics.Request: + description: |- + The request to retrieve ISIS per Router metrics/statistics. + type: object + properties: + router_names: + description: | + The names of ISIS Routers to return results for. An empty list will return results for all ISIS router. x-constraint: - - /components/schemas/Device.Rsvp/properties/name + - /components/schemas/Device.IsisRouter/properties/name type: array items: type: string x-constraint: - - /components/schemas/Device.Rsvp/properties/name + - /components/schemas/Device.IsisRouter/properties/name x-field-uid: 1 column_names: - description: "The list of column names that the returned result set will\ - \ contain. If the input list is empty then all columns will be returned\ - \ except for any result_groups. " + description: |- + The list of column names that the returned result set will contain. If the list is empty then all columns will be returned except for any result_groups. The name of the ISIS Router cannot be excluded. type: array items: type: string x-enum: - ingress_p2p_lsps_configured: + l1_sessions_up: x-field-uid: 1 - ingress_p2p_lsps_up: + l1_session_flap: x-field-uid: 2 - egress_p2p_lsps_up: + l1_database_size: x-field-uid: 3 - lsp_flap_count: + l1_broadcast_hellos_sent: x-field-uid: 4 - paths_tx: + l1_broadcast_hellos_received: x-field-uid: 5 - paths_rx: + l1_point_to_point_hellos_sent: x-field-uid: 6 - resvs_tx: + l1_point_to_point_hellos_received: x-field-uid: 7 - resvs_rx: + l1_psnp_sent: x-field-uid: 8 - path_tears_tx: + l1_psnp_received: x-field-uid: 9 - path_tears_rx: + l1_csnp_sent: x-field-uid: 10 - resv_tears_tx: + l1_csnp_received: x-field-uid: 11 - resv_tears_rx: + l1_lsp_sent: x-field-uid: 12 - path_errors_tx: + l1_lsp_received: x-field-uid: 13 - path_errors_rx: + l2_sessions_up: x-field-uid: 14 - resv_errors_tx: + l2_session_flap: x-field-uid: 15 - resv_errors_rx: + l2_database_size: x-field-uid: 16 - resv_conf_tx: + l2_broadcast_hellos_sent: x-field-uid: 17 - resv_conf_rx: + l2_broadcast_hellos_received: x-field-uid: 18 - hellos_tx: + l2_point_to_point_hellos_sent: x-field-uid: 19 - hellos_rx: + l2_point_to_point_hellos_received: x-field-uid: 20 - acks_tx: + l2_psnp_sent: x-field-uid: 21 - acks_rx: + l2_psnp_received: x-field-uid: 22 - nacks_tx: + l2_csnp_sent: x-field-uid: 23 - nacks_rx: + l2_csnp_received: x-field-uid: 24 - srefresh_tx: + l2_lsp_sent: x-field-uid: 25 - srefresh_rx: + l2_lsp_received: x-field-uid: 26 - bundle_tx: - x-field-uid: 27 - bundle_rx: - x-field-uid: 28 - path_reevaluation_request_tx: - x-field-uid: 29 - path_reoptimizations: - x-field-uid: 30 enum: - - ingress_p2p_lsps_configured - - ingress_p2p_lsps_up - - egress_p2p_lsps_up - - lsp_flap_count - - paths_tx - - paths_rx - - resvs_tx - - resvs_rx - - path_tears_tx - - path_tears_rx - - resv_tears_tx - - resv_tears_rx - - path_errors_tx - - path_errors_rx - - resv_errors_tx - - resv_errors_rx - - resv_conf_tx - - resv_conf_rx - - hellos_tx - - hellos_rx - - acks_tx - - acks_rx - - nacks_tx - - nacks_rx - - srefresh_tx - - srefresh_rx - - bundle_tx - - bundle_rx - - path_reevaluation_request_tx - - path_reoptimizations + - l1_sessions_up + - l1_session_flap + - l1_database_size + - l1_broadcast_hellos_sent + - l1_broadcast_hellos_received + - l1_point_to_point_hellos_sent + - l1_point_to_point_hellos_received + - l1_psnp_sent + - l1_psnp_received + - l1_csnp_sent + - l1_csnp_received + - l1_lsp_sent + - l1_lsp_received + - l2_sessions_up + - l2_session_flap + - l2_database_size + - l2_broadcast_hellos_sent + - l2_broadcast_hellos_received + - l2_point_to_point_hellos_sent + - l2_point_to_point_hellos_received + - l2_psnp_sent + - l2_psnp_received + - l2_csnp_sent + - l2_csnp_received + - l2_lsp_sent + - l2_lsp_received x-field-uid: 2 - Rsvp.Metric: + Isis.Metric: + description: |- + ISIS per router statistics information. + type: object + properties: + name: + description: |- + The name of a configured ISIS router. + type: string + x-field-uid: 1 + l1_sessions_up: + description: |- + The number of Level 1 (L1) sessions that are fully up. + type: integer + format: uint32 + x-field-uid: 2 + l1_session_flap: + description: |- + The number of Level 1 Sessions Flap. + type: integer + format: uint64 + x-field-uid: 3 + l1_broadcast_hellos_sent: + description: |- + Number of Level 1 Hello messages sent. + type: integer + format: uint64 + x-field-uid: 4 + l1_broadcast_hellos_received: + description: |- + Number of Level 1 Hello messages received. + type: integer + format: uint64 + x-field-uid: 5 + l1_point_to_point_hellos_sent: + description: |- + Number of Level 1 Point-to-Point(P2P) Hello messages sent. + type: integer + format: uint64 + x-field-uid: 6 + l1_point_to_point_hellos_received: + description: |- + Number of Level 1 Point-to-Point(P2P) Hello messages received. + type: integer + format: uint64 + x-field-uid: 7 + l1_database_size: + description: |- + Number of Link State Updates (LSPs) in the Level 1 LSP Databases. + type: integer + format: uint64 + x-field-uid: 8 + l1_psnp_sent: + description: |- + Number of Level 1 (L1) Partial Sequence Number Packet (PSNPs) sent. + type: integer + format: uint64 + x-field-uid: 9 + l1_psnp_received: + description: |- + Number of Level 1 (L1) Complete Sequence Number Packet (PSNPs) received. + type: integer + format: uint64 + x-field-uid: 10 + l1_csnp_sent: + description: |- + Number of Level 1 (L1) Complete Sequence Number Packet (CSNPs) sent. + type: integer + format: uint64 + x-field-uid: 11 + l1_csnp_received: + description: |- + Number of Level 1 (L1) Complete Sequence Number Packet (CSNPs) received. + type: integer + format: uint64 + x-field-uid: 12 + l1_lsp_sent: + description: |- + Number of Level 1 (L1) Link State Protocol Data Units (LSPs) sent. + type: integer + format: uint64 + x-field-uid: 13 + l1_lsp_received: + description: |- + Number of Level 1 (L1) Link State Protocol Data Units (LSPs) received. + type: integer + format: uint64 + x-field-uid: 14 + l2_sessions_up: + description: |- + The number of Level 2 (L2) sessions that are fully up. + type: integer + format: uint32 + x-field-uid: 15 + l2_session_flap: + description: |- + The number of Level 2 Sessions Flap. + type: integer + format: uint64 + x-field-uid: 16 + l2_broadcast_hellos_sent: + description: |- + Number of Level 2 Hello messages sent. + type: integer + format: uint64 + x-field-uid: 17 + l2_broadcast_hellos_received: + description: |- + Number of Level 2 Hello messages received. + type: integer + format: uint64 + x-field-uid: 18 + l2_point_to_point_hellos_sent: + description: |- + Number of Level 2 Point-to-Point(P2P) Hello messages sent. + type: integer + format: uint64 + x-field-uid: 19 + l2_point_to_point_hellos_received: + description: |- + Number of Level 2 Point-to-Point(P2P) Hello messages received. + type: integer + format: uint64 + x-field-uid: 20 + l2_database_size: + description: |- + Number of Link State Updates (LSPs) in the Level 2 LSP Databases. + type: integer + format: uint64 + x-field-uid: 21 + l2_psnp_sent: + description: |- + Number of Level 2 (L2) Partial Sequence Number Packet (PSNPs) sent. + type: integer + format: uint64 + x-field-uid: 22 + l2_psnp_received: + description: |- + Number of Level 2 (L2) Complete Sequence Number Packet (PSNPs) received. + type: integer + format: uint64 + x-field-uid: 23 + l2_csnp_sent: + description: |- + Number of Level 2 (L2) Complete Sequence Number Packet (CSNPs) sent. + type: integer + format: uint64 + x-field-uid: 24 + l2_csnp_received: + description: |- + Number of Level 2 (L2) Complete Sequence Number Packet (CSNPs) received. + type: integer + format: uint64 + x-field-uid: 25 + l2_lsp_sent: + description: |- + Number of Level 2 (L2) Link State Protocol Data Units (LSPs) sent. + type: integer + format: uint64 + x-field-uid: 26 + l2_lsp_received: + description: |- + Number of Level 2 (L2) Link State Protocol Data Units (LSPs) received. + type: integer + format: uint64 + x-field-uid: 27 + Lag.Metrics.Request: + description: |- + The request to retrieve per LAG metrics/statistics. + type: object + properties: + lag_names: + description: | + The names of LAGs to return results for. An empty list will return results for all LAGs. + + x-constraint: + - /components/schemas/Lag/properties/name + type: array + items: + type: string + x-constraint: + - /components/schemas/Lag/properties/name + x-field-uid: 1 + column_names: + description: |- + The list of column names that the returned result set will contain. If the list is empty then all columns will be returned. The name of the LAG cannot be excluded. + type: array + items: + type: string + x-enum: + oper_status: + x-field-uid: 1 + member_ports_up: + x-field-uid: 2 + frames_tx: + x-field-uid: 3 + frames_rx: + x-field-uid: 4 + bytes_tx: + x-field-uid: 5 + bytes_rx: + x-field-uid: 6 + frames_tx_rate: + x-field-uid: 7 + frames_rx_rate: + x-field-uid: 8 + bytes_tx_rate: + x-field-uid: 9 + bytes_rx_rate: + x-field-uid: 10 + enum: + - oper_status + - member_ports_up + - frames_tx + - frames_rx + - bytes_tx + - bytes_rx + - frames_tx_rate + - frames_rx_rate + - bytes_tx_rate + - bytes_rx_rate + x-field-uid: 2 + Lag.Metric: + type: object + properties: + name: + description: | + The name of a configured LAG + + x-constraint: + - /components/schemas/Lag/properties/name + type: string + x-constraint: + - /components/schemas/Lag/properties/name + x-field-uid: 1 + oper_status: + description: |- + The current operational state of the LAG. The state can be up or down. State 'up' indicates member_ports_up >= min_links. + type: string + x-field-uid: 2 + x-enum: + up: + x-field-uid: 1 + down: + x-field-uid: 2 + enum: + - up + - down + member_ports_up: + description: |- + The number of LAG member ports up. + type: integer + format: uint32 + x-field-uid: 3 + frames_tx: + description: |- + The current total number of frames transmitted. + type: integer + format: uint64 + x-field-uid: 4 + frames_rx: + description: |- + The current total number of valid frames received. + type: integer + format: uint64 + x-field-uid: 5 + bytes_tx: + description: |- + The current total number of bytes transmitted. + type: integer + format: uint64 + x-field-uid: 6 + bytes_rx: + description: |- + The current total number of valid bytes received. + type: integer + format: uint64 + minimum: 0 + x-field-uid: 7 + frames_tx_rate: + description: |- + The current rate of frames transmitted. + type: number + x-field-uid: 8 + frames_rx_rate: + description: |- + The current rate of valid frames received. + type: number + x-field-uid: 9 + bytes_tx_rate: + description: |- + The current rate of bytes transmitted. + type: number + x-field-uid: 10 + bytes_rx_rate: + description: |- + The current rate of bytes received. + type: number + x-field-uid: 11 + Lacp.Metrics.Request: + description: |- + The request to retrieve LACP per LAG member metrics/statistics. + type: object + properties: + lag_names: + description: | + The names of LAG (ports group) for which LACP metrics to be returned. An empty list will return metrics for all LAGs. + + x-constraint: + - /components/schemas/Lag/properties/name + type: array + items: + type: string + x-constraint: + - /components/schemas/Lag/properties/name + x-field-uid: 1 + lag_member_port_names: + description: | + The names of LAG members (ports) for which LACP metrics to be returned. An empty list will return metrics for all LAG members. + + x-constraint: + - /components/schemas/Port/properties/name + type: array + items: + type: string + x-constraint: + - /components/schemas/Port/properties/name + x-field-uid: 2 + column_names: + description: |- + The list of column names that the returned result set will contain. If the list is empty then all columns will be returned. The name of LAG and LAG member can not be excluded. + type: array + items: + type: string + x-enum: + lacp_packets_rx: + x-field-uid: 1 + lacp_packets_tx: + x-field-uid: 2 + lacp_rx_errors: + x-field-uid: 3 + activity: + x-field-uid: 4 + timeout: + x-field-uid: 5 + synchronization: + x-field-uid: 6 + aggregatable: + x-field-uid: 7 + collecting: + x-field-uid: 8 + distributing: + x-field-uid: 9 + system_id: + x-field-uid: 10 + oper_key: + x-field-uid: 11 + partner_id: + x-field-uid: 12 + partner_key: + x-field-uid: 13 + port_num: + x-field-uid: 14 + partner_port_num: + x-field-uid: 15 + enum: + - lacp_packets_rx + - lacp_packets_tx + - lacp_rx_errors + - activity + - timeout + - synchronization + - aggregatable + - collecting + - distributing + - system_id + - oper_key + - partner_id + - partner_key + - port_num + - partner_port_num + x-field-uid: 3 + Lacp.Metric: + description: |- + LACP metrics (statistics) per LAG member. + type: object + properties: + lag_name: + description: |- + The name of a LAG (ports group) configured with LACP. + type: string + x-field-uid: 1 + lag_member_port_name: + description: |- + The name of a LAG member (port) configured with LACP. + type: string + x-field-uid: 2 + lacp_packets_rx: + description: |- + Number of LACPDUs received. + type: integer + format: uint64 + x-field-uid: 3 + lacp_packets_tx: + description: |- + Number of LACPDUs transmitted. + type: integer + format: uint64 + x-field-uid: 4 + lacp_rx_errors: + description: |- + Number of LACPDUs receive packet errors. + type: integer + format: uint64 + x-field-uid: 5 + activity: + description: |- + Indicates participant is active or passive. + type: string + x-field-uid: 6 + x-enum: + active: + x-field-uid: 1 + passive: + x-field-uid: 2 + enum: + - active + - passive + timeout: + description: |- + The timeout type (short or long) used by the participant. + type: string + x-field-uid: 7 + x-enum: + short: + x-field-uid: 1 + long: + x-field-uid: 2 + enum: + - short + - long + synchronization: + description: |- + Indicates whether the participant is in-sync or out-of-sync. + type: string + x-field-uid: 8 + x-enum: + in_sync: + x-field-uid: 1 + out_sync: + x-field-uid: 2 + enum: + - in_sync + - out_sync + aggregatable: + description: |- + A true value indicates that the participant will allow the link to be used as part of the aggregate. A false value indicates the link should be used as an individual link. + type: boolean + x-field-uid: 9 + collecting: + description: |- + If true, the participant is collecting incoming frames on the link, otherwise false. + type: boolean + x-field-uid: 10 + distributing: + description: |- + When true, the participant is distributing outgoing frames; when false, distribution is disabled. + type: boolean + x-field-uid: 11 + system_id: + description: |- + MAC address that defines the local system ID for the aggregate interface. + type: string + format: mac + x-field-uid: 12 + oper_key: + description: |- + Current operational value of the key for the aggregate interface. + type: integer + format: uint32 + x-field-uid: 13 + partner_id: + description: |- + MAC address representing the protocol partner's interface system ID. + type: string + format: mac + x-field-uid: 14 + partner_key: + description: |- + Operational value of the protocol partner's key. + type: integer + format: uint32 + x-field-uid: 15 + port_num: + description: |- + Port number of the local (actor) aggregation member. + type: integer + format: uint32 + x-field-uid: 16 + partner_port_num: + description: |- + Port number of the partner (remote) port for this member port. + type: integer + format: uint32 + x-field-uid: 17 + Lldp.Metrics.Request: + description: |- + The request to retrieve LLDP per instance metrics/statistics. + type: object + properties: + lldp_names: + description: | + The names of LLDP instances to return results for. An empty list will return results for all LLDP instances. + + x-constraint: + - /components/schemas/Lldp/properties/name + type: array + items: + type: string + x-constraint: + - /components/schemas/Lldp/properties/name + x-field-uid: 1 + column_names: + description: |- + The requested list of column names for the result set. If the list is empty then metrics for all columns will be returned. The name of LLDP instance can not be excluded. + type: array + items: + type: string + x-enum: + frames_rx: + x-field-uid: 1 + frames_tx: + x-field-uid: 2 + frames_error_rx: + x-field-uid: 3 + frames_discard: + x-field-uid: 4 + tlvs_discard: + x-field-uid: 5 + tlvs_unknown: + x-field-uid: 6 + enum: + - frames_rx + - frames_tx + - frames_error_rx + - frames_discard + - tlvs_discard + - tlvs_unknown + x-field-uid: 2 + Lldp.Metric: + description: |- + LLDP per instance statistics information. + type: object + properties: + name: + description: |- + The name of the configured LLDP instance. + type: string + x-field-uid: 1 + frames_rx: + description: |- + Number of LLDP frames received. + type: integer + format: uint64 + x-field-uid: 2 + frames_tx: + description: |- + Number of LLDP frames transmitted. + type: integer + format: uint64 + x-field-uid: 3 + frames_error_rx: + description: |- + Number of LLDP frames received with packet errors. This stat should be incremented based on statsFramesInErrorsTotal increment rule in section 10.3.2 of IEEE Std 802.1 AB-2005. + type: integer + format: uint64 + x-field-uid: 4 + frames_discard: + description: |- + Number of LLDP frames received that are discarded. This stat should be incremented when one or more of the three mandatory TLVs at the beginning of the LLDPDU is missing, out of order or contains an out of range information string length. This stat should follow the validation rules in section 10.3.2 of IEEE Std 802.1 AB-2005. + type: integer + format: uint64 + x-field-uid: 5 + tlvs_discard: + description: |- + Number of LLDP tlvs received that are discarded. If any TLV contains an error condition specific for that particular TLV or if any TLV extends past the physical end of the frame then these TLVs will be discarded. + type: integer + format: uint64 + x-field-uid: 6 + tlvs_unknown: + description: |- + Number of LLDP unknown tlvs received. If the OUI of the organizationlly specific TLV and/or organizationally defined subtype are not recognized,or if TLV type value is in the range of reserved TLV types then these TLVs will be considered as unknown TLVs. + type: integer + format: uint64 + x-field-uid: 7 + Rsvp.Metrics.Request: + description: |- + The request to retrieve RSVP-TE per Router metrics/statistics. + type: object + properties: + router_names: + description: | + The names of RSVP-TE Routers to return results for. An empty list as input will return results for all RSVP-TE routers. + + x-constraint: + - /components/schemas/Device.Rsvp/properties/name + type: array + items: + type: string + x-constraint: + - /components/schemas/Device.Rsvp/properties/name + x-field-uid: 1 + column_names: + description: "The list of column names that the returned result set will\ + \ contain. If the input list is empty then all columns will be returned\ + \ except for any result_groups. " + type: array + items: + type: string + x-enum: + ingress_p2p_lsps_configured: + x-field-uid: 1 + ingress_p2p_lsps_up: + x-field-uid: 2 + egress_p2p_lsps_up: + x-field-uid: 3 + lsp_flap_count: + x-field-uid: 4 + paths_tx: + x-field-uid: 5 + paths_rx: + x-field-uid: 6 + resvs_tx: + x-field-uid: 7 + resvs_rx: + x-field-uid: 8 + path_tears_tx: + x-field-uid: 9 + path_tears_rx: + x-field-uid: 10 + resv_tears_tx: + x-field-uid: 11 + resv_tears_rx: + x-field-uid: 12 + path_errors_tx: + x-field-uid: 13 + path_errors_rx: + x-field-uid: 14 + resv_errors_tx: + x-field-uid: 15 + resv_errors_rx: + x-field-uid: 16 + resv_conf_tx: + x-field-uid: 17 + resv_conf_rx: + x-field-uid: 18 + hellos_tx: + x-field-uid: 19 + hellos_rx: + x-field-uid: 20 + acks_tx: + x-field-uid: 21 + acks_rx: + x-field-uid: 22 + nacks_tx: + x-field-uid: 23 + nacks_rx: + x-field-uid: 24 + srefresh_tx: + x-field-uid: 25 + srefresh_rx: + x-field-uid: 26 + bundle_tx: + x-field-uid: 27 + bundle_rx: + x-field-uid: 28 + path_reevaluation_request_tx: + x-field-uid: 29 + path_reoptimizations: + x-field-uid: 30 + enum: + - ingress_p2p_lsps_configured + - ingress_p2p_lsps_up + - egress_p2p_lsps_up + - lsp_flap_count + - paths_tx + - paths_rx + - resvs_tx + - resvs_rx + - path_tears_tx + - path_tears_rx + - resv_tears_tx + - resv_tears_rx + - path_errors_tx + - path_errors_rx + - resv_errors_tx + - resv_errors_rx + - resv_conf_tx + - resv_conf_rx + - hellos_tx + - hellos_rx + - acks_tx + - acks_rx + - nacks_tx + - nacks_rx + - srefresh_tx + - srefresh_rx + - bundle_tx + - bundle_rx + - path_reevaluation_request_tx + - path_reoptimizations + x-field-uid: 2 + Rsvp.Metric: + description: |- + RSVP-TE per router statistics information. + type: object + properties: + name: + description: |- + The name of a configured RSVP router. + type: string + x-field-uid: 1 + ingress_p2p_lsps_configured: + description: |- + The number of ingress point-to-point LSPs configured or transiting through the RSVP router which have been initated from the test port. + type: integer + format: uint32 + x-field-uid: 2 + ingress_p2p_lsps_up: + description: "The number of ingress point-to-point LSPs for which Resv has\ + \ been received and is currently up. " + type: integer + format: uint32 + x-field-uid: 3 + egress_p2p_lsps_up: + description: |- + The number of egress point-to-point LSPs for which Path requests were successfully processed and is currently up. + type: integer + format: uint32 + x-field-uid: 4 + lsp_flap_count: + description: |- + The number of times an LSP went from up to down state either because it timed out while waiting for Refreshes or a PathTear or ResvTear message was received which caused the LSP to flap. + type: integer + format: uint64 + x-field-uid: 5 + paths_tx: + description: |- + The number of Path messages sent by this RSVP router. + type: integer + format: uint64 + x-field-uid: 6 + paths_rx: + description: |- + The number of Path messages received by this RSVP router. + type: integer + format: uint64 + x-field-uid: 7 + resvs_tx: + description: |- + The number of Resv messages sent by this RSVP router. + type: integer + format: uint64 + x-field-uid: 8 + resvs_rx: + description: |- + The number of Resv messages received by this RSVP router. + type: integer + format: uint64 + x-field-uid: 9 + path_tears_tx: + description: |- + The number of Path Tear messages sent by this RSVP router. + type: integer + format: uint64 + x-field-uid: 10 + path_tears_rx: + description: "The number of Path Tear messages received by this RSVP router. " + type: integer + format: uint64 + x-field-uid: 11 + resv_tears_tx: + description: |- + The number of Resv Tear messages sent by this RSVP router. + type: integer + format: uint64 + x-field-uid: 12 + resv_tears_rx: + description: "The number of Resv Tear messages received by this RSVP router. " + type: integer + format: uint64 + x-field-uid: 13 + path_errors_tx: + description: |- + The number of Path Error messages sent by this RSVP router. + type: integer + format: uint64 + x-field-uid: 14 + path_errors_rx: + description: "The number of Path Error messages received by this RSVP router. " + type: integer + format: uint64 + x-field-uid: 15 + resv_errors_tx: + description: |- + The number of Resv Error messages sent by this RSVP router. + type: integer + format: uint64 + x-field-uid: 16 + resv_errors_rx: + description: "The number of Resv Error messages received by this RSVP router. " + type: integer + format: uint64 + x-field-uid: 17 + resv_conf_tx: + description: |- + The number of ResvConf messages sent by this RSVP router. + type: integer + format: uint64 + x-field-uid: 18 + resv_conf_rx: + description: "The number of ResvConf messages received by this RSVP router. " + type: integer + format: uint64 + x-field-uid: 19 + hellos_tx: + description: |- + The number of Hello messages sent by this RSVP router. + type: integer + format: uint64 + x-field-uid: 20 + hellos_rx: + description: "The number of Hello messages received by this RSVP router. " + type: integer + format: uint64 + x-field-uid: 21 + acks_tx: + description: |- + The number of Ack messages sent by this RSVP router. + type: integer + format: uint64 + x-field-uid: 22 + acks_rx: + description: "The number of Ack messages received by this RSVP router. " + type: integer + format: uint64 + x-field-uid: 23 + nacks_tx: + description: |- + The number of Nack messages sent by this RSVP router. + type: integer + format: uint64 + x-field-uid: 24 + nacks_rx: + description: "The number of Nack messages received by this RSVP router. " + type: integer + format: uint64 + x-field-uid: 25 + srefresh_tx: + description: |- + The number of SRefresh messages sent by this RSVP router. + type: integer + format: uint64 + x-field-uid: 26 + srefresh_rx: + description: "The number of SRefresh messages received by this RSVP router. " + type: integer + format: uint64 + x-field-uid: 27 + bundle_tx: + description: |- + The number of Bundle messages sent by this RSVP router. + type: integer + format: uint64 + x-field-uid: 28 + bundle_rx: + description: "The number of Bundle messages received by this RSVP router. " + type: integer + format: uint64 + x-field-uid: 29 + path_reevaluation_request_tx: + description: |- + The number of Path messages with Path Re-evaluation Request enabled sent by this RSVP router. + type: integer + format: uint64 + x-field-uid: 30 + path_reoptimizations: + description: |- + The number of successfully completed Make-Before-Break operations on LSPs on this RSVP router. + type: integer + format: uint64 + x-field-uid: 31 + States.Request: + description: |- + Request to traffic generator for states of choice + type: object + properties: + choice: + type: string + default: ipv4_neighbors + x-field-uid: 1 + x-enum: + ipv4_neighbors: + x-field-uid: 1 + ipv6_neighbors: + x-field-uid: 2 + bgp_prefixes: + x-field-uid: 3 + isis_lsps: + x-field-uid: 4 + lldp_neighbors: + x-field-uid: 5 + rsvp_lsps: + x-field-uid: 6 + enum: + - ipv4_neighbors + - ipv6_neighbors + - bgp_prefixes + - isis_lsps + - lldp_neighbors + - rsvp_lsps + ipv4_neighbors: + $ref: '#/components/schemas/Neighborsv4.States.Request' + x-field-uid: 2 + ipv6_neighbors: + $ref: '#/components/schemas/Neighborsv6.States.Request' + x-field-uid: 3 + bgp_prefixes: + $ref: '#/components/schemas/BgpPrefix.State.Request' + x-field-uid: 4 + isis_lsps: + $ref: '#/components/schemas/IsisLsps.State.Request' + x-field-uid: 5 + lldp_neighbors: + $ref: '#/components/schemas/LldpNeighbors.State.Request' + x-field-uid: 6 + rsvp_lsps: + $ref: '#/components/schemas/RsvpLsps.State.Request' + x-field-uid: 7 + States.Response: + description: |- + Response containing chosen traffic generator states + type: object + properties: + choice: + type: string + default: ipv4_neighbors + x-field-uid: 1 + x-enum: + ipv4_neighbors: + x-field-uid: 1 + ipv6_neighbors: + x-field-uid: 2 + bgp_prefixes: + x-field-uid: 3 + isis_lsps: + x-field-uid: 4 + lldp_neighbors: + x-field-uid: 5 + rsvp_lsps: + x-field-uid: 6 + enum: + - ipv4_neighbors + - ipv6_neighbors + - bgp_prefixes + - isis_lsps + - lldp_neighbors + - rsvp_lsps + ipv4_neighbors: + type: array + items: + $ref: '#/components/schemas/Neighborsv4.State' + x-field-uid: 2 + ipv6_neighbors: + type: array + items: + $ref: '#/components/schemas/Neighborsv6.State' + x-field-uid: 3 + bgp_prefixes: + type: array + items: + $ref: '#/components/schemas/BgpPrefixes.State' + x-field-uid: 4 + isis_lsps: + type: array + items: + $ref: '#/components/schemas/IsisLsps.State' + x-field-uid: 5 + lldp_neighbors: + type: array + items: + $ref: '#/components/schemas/LldpNeighbors.State' + x-field-uid: 6 + rsvp_lsps: + type: array + items: + $ref: '#/components/schemas/RsvpLsps.State' + x-field-uid: 7 + Neighborsv4.States.Request: + description: |- + The request to retrieve IPv4 Neighbor state (ARP cache entries) of a network interface(s). + type: object + properties: + ethernet_names: + description: | + The names of Ethernet interfaces for which Neighbor state (ARP cache entries) will be retrieved. If no names are specified then the results will contain Neighbor state (ARP cache entries) for all available Ethernet interfaces. + + x-constraint: + - /components/schemas/Device.Ethernet/properties/name + type: array + items: + type: string + x-constraint: + - /components/schemas/Device.Ethernet/properties/name + x-field-uid: 1 + Neighborsv4.State: + description: |- + IPv4 Neighbor state (ARP cache entry). + type: object + required: + - ethernet_name + - ipv4_address + properties: + ethernet_name: + description: |- + The name of the Ethernet interface associated with the Neighbor state (ARP cache entry). + type: string + x-field-uid: 1 + ipv4_address: + description: |- + The IPv4 address of the neighbor. + type: string + format: ipv4 + x-field-uid: 2 + link_layer_address: + description: |- + The link-layer address (MAC) of the neighbor. + type: string + format: mac + x-field-uid: 3 + Neighborsv6.States.Request: + description: |- + The request to retrieve IPv6 Neighbor state (NDISC cache entries) of a network interface(s). + type: object + properties: + ethernet_names: + description: | + The names of Ethernet interfaces for which Neighbor state (NDISC cache entries) will be retrieved. If no names are specified then the results will contain Neighbor state (NDISC cache entries) for all available Ethernet interfaces. + + x-constraint: + - /components/schemas/Device.Ethernet/properties/name + type: array + items: + type: string + x-constraint: + - /components/schemas/Device.Ethernet/properties/name + x-field-uid: 1 + Neighborsv6.State: + description: |- + IPv6 Neighbor state (NDISC cache entry). + type: object + required: + - ethernet_name + - ipv6_address + properties: + ethernet_name: + description: |- + The name of the Ethernet interface associated with the Neighbor state (NDISC cache entry). + type: string + x-field-uid: 1 + ipv6_address: + description: |- + The IPv6 address of the neighbor. + type: string + format: ipv6 + x-field-uid: 2 + link_layer_address: + description: |- + The link-layer address (MAC) of the neighbor. + type: string + format: mac + x-field-uid: 3 + BgpPrefix.State.Request: + description: |- + The request to retrieve BGP peer prefix information. + type: object + properties: + bgp_peer_names: + description: | + The names of BGP peers for which prefix information will be retrieved. If no names are specified then the results will contain prefix information for all configured BGP peers. + + x-constraint: + - /components/schemas/Bgp.V4Peer/properties/name + - /components/schemas/Bgp.V6Peer/properties/name + type: array + items: + type: string + x-constraint: + - /components/schemas/Bgp.V4Peer/properties/name + - /components/schemas/Bgp.V6Peer/properties/name + x-field-uid: 1 + prefix_filters: + description: |- + Specify which prefixes to return. If the list is empty or missing then all prefixes will be returned. + type: array + items: + type: string + x-enum: + ipv4_unicast: + x-field-uid: 1 + ipv6_unicast: + x-field-uid: 2 + enum: + - ipv4_unicast + - ipv6_unicast + x-field-uid: 2 + ipv4_unicast_filters: + description: |- + The IPv4 unicast results can be filtered by specifying additional prefix search criteria. If the ipv4_unicast_filters property is missing or empty then all IPv4 prefixes will be returned. + type: array + items: + $ref: '#/components/schemas/BgpPrefix.Ipv4Unicast.Filter' + x-field-uid: 3 + ipv6_unicast_filters: + description: |- + The IPv6 unicast results can be filtered by specifying additional prefix search criteria. If the ipv6_unicast_filters property is missing or empty then all IPv6 prefixes will be returned. + type: array + items: + $ref: '#/components/schemas/BgpPrefix.Ipv6Unicast.Filter' + x-field-uid: 4 + BgpPrefix.Ipv4Unicast.Filter: + type: object + properties: + addresses: + description: |- + The addresses to match. If the addresses property is missing or empty then all addresses will match. + type: array + items: + type: string + format: ipv4 + x-field-uid: 1 + prefix_length: + x-field-uid: 2 + description: |- + The prefix length to match. If the prefix length is missing then all prefix lengths will match. + type: integer + format: uint32 + maximum: 128 + origin: + x-field-uid: 3 + description: |- + The origin to match. If the origin is missing then all origins will match. + type: string + x-enum: + igp: + x-field-uid: 1 + egp: + x-field-uid: 2 + incomplete: + x-field-uid: 3 + enum: + - igp + - egp + - incomplete + path_id: + x-field-uid: 4 + description: |- + The path id to match. If the path id is missing then all path ids will match. + type: integer + format: uint32 + BgpPrefix.Ipv6Unicast.Filter: + type: object + properties: + addresses: + description: |- + The addresses to match. If the addresses property is missing or empty then all addresses will match. + type: array + items: + type: string + format: ipv6 + x-field-uid: 1 + prefix_length: + x-field-uid: 2 + description: |- + The prefix length to match. If the prefix length is missing then all prefix lengths will match. + type: integer + format: uint32 + maximum: 128 + origin: + x-field-uid: 3 + description: |- + The origin to match. If the origin is missing then all origins will match. + type: string + x-enum: + igp: + x-field-uid: 1 + egp: + x-field-uid: 2 + incomplete: + x-field-uid: 3 + enum: + - igp + - egp + - incomplete + path_id: + x-field-uid: 4 + description: |- + The path id to match. If the path id is missing then all path ids will match. + type: integer + format: uint32 + BgpPrefixes.State: + description: |- + BGP peer prefixes. + type: object + properties: + bgp_peer_name: + description: |- + The name of a BGP peer. + type: string + x-field-uid: 1 + ipv4_unicast_prefixes: + type: array + items: + $ref: '#/components/schemas/BgpPrefixIpv4Unicast.State' + x-field-uid: 2 + ipv6_unicast_prefixes: + type: array + items: + $ref: '#/components/schemas/BgpPrefixIpv6Unicast.State' + x-field-uid: 3 + BgpPrefixIpv4Unicast.State: + description: |- + IPv4 unicast prefix. + type: object + properties: + ipv4_address: + description: |- + An IPv4 unicast address + type: string + x-field-uid: 1 + prefix_length: + x-field-uid: 2 + description: |- + The length of the prefix. + type: integer + format: uint32 + maximum: 128 + origin: + x-field-uid: 3 + description: |- + The origin of the prefix. + type: string + x-enum: + igp: + x-field-uid: 1 + egp: + x-field-uid: 2 + incomplete: + x-field-uid: 3 + enum: + - igp + - egp + - incomplete + path_id: + x-field-uid: 4 + description: |- + The path id. + type: integer + format: uint32 + ipv4_next_hop: + x-field-uid: 5 + description: |- + The IPv4 address of the egress interface. + type: string + format: ipv4 + ipv6_next_hop: + x-field-uid: 6 + description: |- + The IPv6 address of the egress interface. + type: string + format: ipv6 + communities: + x-field-uid: 7 + description: |- + Optional community attributes. + type: array + items: + $ref: '#/components/schemas/Result.BgpCommunity' + as_path: + x-field-uid: 8 + $ref: '#/components/schemas/Result.BgpAsPath' + local_preference: + x-field-uid: 9 + description: |- + The local preference is a well-known attribute and the value is used for route selection. The route with the highest local preference value is preferred. + type: integer + format: uint32 + multi_exit_discriminator: + x-field-uid: 10 + description: |- + The multi exit discriminator (MED) is an optional non-transitive attribute and the value is used for route selection. The route with the lowest MED value is preferred. + type: integer + format: uint32 + BgpPrefixIpv6Unicast.State: + description: |- + IPv6 unicast prefix. + type: object + properties: + ipv6_address: + description: |- + An IPv6 unicast address + type: string + x-field-uid: 1 + prefix_length: + x-field-uid: 2 + description: |- + The length of the prefix. + type: integer + format: uint32 + maximum: 128 + origin: + x-field-uid: 3 + description: |- + The origin of the prefix. + type: string + x-enum: + igp: + x-field-uid: 1 + egp: + x-field-uid: 2 + incomplete: + x-field-uid: 3 + enum: + - igp + - egp + - incomplete + path_id: + x-field-uid: 4 + description: |- + The path id. + type: integer + format: uint32 + ipv4_next_hop: + x-field-uid: 5 + description: |- + The IPv4 address of the egress interface. + type: string + format: ipv4 + ipv6_next_hop: + x-field-uid: 6 + description: |- + The IPv6 address of the egress interface. + type: string + format: ipv6 + communities: + x-field-uid: 7 + description: |- + Optional community attributes. + type: array + items: + $ref: '#/components/schemas/Result.BgpCommunity' + as_path: + x-field-uid: 8 + $ref: '#/components/schemas/Result.BgpAsPath' + local_preference: + x-field-uid: 9 + description: |- + The local preference is a well-known attribute and the value is used for route selection. The route with the highest local preference value is preferred. + type: integer + format: uint32 + multi_exit_discriminator: + x-field-uid: 10 + description: |- + The multi exit discriminator (MED) is an optional non-transitive attribute and the value is used for route selection. The route with the lowest MED value is preferred. + type: integer + format: uint32 + Result.BgpCommunity: + description: |- + BGP communities provide additional capability for tagging routes and for modifying BGP routing policy on upstream and downstream routers. BGP community is a 32-bit number which is broken into 16-bit AS number and a 16-bit custom value. + type: object + properties: + type: + description: |- + The type of community AS number. If community type is manual_as_number then as_number and as_custom will be available. + type: string + x-field-uid: 1 + x-enum: + manual_as_number: + x-field-uid: 1 + no_export: + x-field-uid: 2 + no_advertised: + x-field-uid: 3 + no_export_subconfed: + x-field-uid: 4 + llgr_stale: + x-field-uid: 5 + no_llgr: + x-field-uid: 6 + enum: + - manual_as_number + - no_export + - no_advertised + - no_export_subconfed + - llgr_stale + - no_llgr + as_number: + description: |- + First two octets of 32 bit community AS number. + type: integer + format: uint32 + maximum: 65535 + x-field-uid: 2 + as_custom: + description: "Last two octets of the community value. " + type: integer + format: uint32 + maximum: 65535 + x-field-uid: 3 + Result.BgpAsPath: + description: |- + This attribute identifies the autonomous systems through which routing information carried in this UPDATE message has passed. + type: object + properties: + segments: + description: "AS Path segments present in the received AS Path attribute. " + type: array + items: + $ref: '#/components/schemas/Result.BgpAsPathSegment' + x-field-uid: 1 + Result.BgpAsPathSegment: + description: |- + Configuration for a single BGP AS path segment + type: object + properties: + type: + description: |- + AS sequence is the most common type of AS_PATH, it contains the list of ASNs starting with the most recent ASN being added read from left to right. + The other three AS_PATH types are used for Confederations - AS_SET is the type of AS_PATH attribute that summarizes routes using using the aggregate-address command, allowing AS_PATHs to be summarized in the update as well. - AS_CONFED_SEQ gives the list of ASNs in the path starting with the most recent ASN to be added reading left to right - AS_CONFED_SET will allow summarization of multiple AS PATHs to be sent in BGP Updates. + type: string + x-field-uid: 1 + x-enum: + as_seq: + x-field-uid: 1 + as_set: + x-field-uid: 2 + as_confed_seq: + x-field-uid: 3 + as_confed_set: + x-field-uid: 4 + enum: + - as_seq + - as_set + - as_confed_seq + - as_confed_set + as_numbers: + description: |- + The AS numbers in this AS path segment. + type: array + items: + type: integer + format: uint32 + x-field-uid: 2 + IsisLsps.State.Request: + description: |- + The request to retrieve ISIS Link State PDU (LSP) information learned by the router. + type: object + properties: + isis_router_names: + description: | + The names of ISIS routers for which learned information is requested. An empty list will return results for all ISIS routers. + + x-constraint: + - /components/schemas/Device.IsisRouter/properties/name + type: array + items: + type: string + x-constraint: + - /components/schemas/Device.IsisRouter/properties/name + x-field-uid: 1 + IsisLsps.State: + description: |- + The result of ISIS LSP information that are retrieved. + type: object + properties: + isis_router_name: + description: |- + The name of the ISIS Router. + type: string + x-field-uid: 1 + lsps: + description: |- + One or more LSPs that are learned by this ISIS router. + type: array + items: + $ref: '#/components/schemas/IsisLsp.State' + x-field-uid: 2 + IsisLsp.State: + description: |- + ISIS LSP. + type: object + required: + - lsp_id + properties: + lsp_id: + description: |- + LSP ID in the format, e.g. '640000000001-00-00'. LSP ID consists of the System ID of a neighbor, the Pseudonode ID, and the LSP number. The last two bytes represent Pseudonode ID and LSP number respectively. A pseudonode is a logical representation of the LAN which is generated by a Designated Intermediate System (DIS) on a LAN segment. If one LSP exceeds the maximum LSP size then it is sent in another LSP with the LSP number incremented by one. A router's learned LSP gets refreshed by 'remaining_lifetime'. Then the sequence number is incremented by 1. + type: string + x-field-uid: 1 + pdu_type: + description: |- + Link State PDU type. + type: string + x-field-uid: 2 + x-enum: + level_1: + x-field-uid: 1 + level_2: + x-field-uid: 2 + enum: + - level_1 + - level_2 + remaining_lifetime: + description: |- + Remaining lifetime in seconds before LSP expires. + type: integer + format: uint32 + x-field-uid: 3 + sequence_number: + description: |- + Sequence number of the LSP. + type: integer + format: uint64 + x-field-uid: 4 + pdu_length: + description: |- + Total length of the LSP. + type: integer + format: uint32 + maximum: 65535 + x-field-uid: 5 + flags: + description: |- + LSP Type-Block flags. + $ref: '#/components/schemas/IsisLsp.Flags' + x-field-uid: 6 + is_type: + description: "IS Type - bits 1 and 2 indicate the type of Intermediate System.\n\ + 1 - ( i.e. bit 1 set) Level 1 Intermediate system.\n2 - Unused value.\n\ + 3 - (i.e. bits 1 and 2 set) Level 2 Intermediate system. " + type: integer + format: uint32 + maximum: 3 + x-field-uid: 7 + tlvs: + description: |- + It refers to Link State PDU State TLVs container. + $ref: '#/components/schemas/IsisLsp.Tlvs' + x-field-uid: 8 + IsisLsp.Tlvs: + description: |- + This contains the list of TLVs present in one LSP. + type: object + properties: + hostname_tlvs: + description: |- + Array of Hostname TLVs ( type 137) present in this LSP. + type: array + items: + $ref: '#/components/schemas/IsisLsp.Hostname' + x-field-uid: 1 + is_reachability_tlvs: + description: |- + Array of IS-Reachability TLVs (type 2) present in this LSP. + type: array + items: + $ref: '#/components/schemas/IsisLsp.IsReachabilityTlv' + x-field-uid: 2 + extended_is_reachability_tlvs: + description: |- + Array of Extended IS-Reachability TLVs (type 22) present in this LSP. + type: array + items: + $ref: '#/components/schemas/IsisLsp.ExtendedIsReachabilityTlv' + x-field-uid: 3 + ipv4_internal_reachability_tlvs: + description: |- + Array of IPv4 Internal Reachability TLVs (type 128) present in this LSP. + type: array + items: + $ref: '#/components/schemas/IsisLsp.Ipv4InternalReachabilityTlv' + x-field-uid: 4 + ipv4_external_reachability_tlvs: + description: |- + Array of IPv4 External Reachability TLVs (type 130) present in this LSP. + type: array + items: + $ref: '#/components/schemas/IsisLsp.Ipv4ExternalReachabilityTlv' + x-field-uid: 5 + extended_ipv4_reachability_tlvs: + description: |- + Array of IPv4 Extended Reachability TLVs (type 135) present in this LSP. + type: array + items: + $ref: '#/components/schemas/IsisLsp.ExtendedIpv4ReachabilityTlv' + x-field-uid: 6 + ipv6_reachability_tlvs: + description: |- + Array of IPv6 Reachability TLVs (type 236) present in this LSP. + type: array + items: + $ref: '#/components/schemas/IsisLsp.Ipv6ReachabilityTlv' + x-field-uid: 7 + IsisLsp.Hostname: + description: |- + It contains Hostname for the TLV 137. + type: object + properties: + hostname: + description: |- + Hostname for an ISIS router. + type: string + x-field-uid: 1 + IsisLsp.Flags: + description: |- + LSP Type flags. + type: object + properties: + partition_repair: + description: |- + When set, the originator supports partition repair. + type: boolean + x-field-uid: 1 + attached_error: + description: |- + When set, the originator is attached to another area using the referred metric. + type: boolean + x-field-uid: 2 + attached_expense: + description: |- + When set, the originator is attached to another + area using the referred metric. + type: boolean + x-field-uid: 3 + attached_delay: + description: |- + Delay Metric - when set, the originator is attached to another + area using the referred metric. + type: boolean + x-field-uid: 4 + attached_default: + description: |- + Default Metric - when set, the originator is attached to another + area using the referred metric. + type: boolean + x-field-uid: 5 + overload: + description: |- + Overload bit - when set, the originator is overloaded, and must + be avoided in path calculation. + type: boolean + x-field-uid: 6 + IsisLsp.IsReachabilityTlv: + description: |- + This container describes list of ISIS neighbors and attributes in IS-Reachability TLV (type 2). + type: object + properties: + neighbors: + description: |- + This container describes Intermediate System (IS) neighbors. + type: array + items: + $ref: '#/components/schemas/IsisLsp.neighbor' + x-field-uid: 1 + IsisLsp.ExtendedIsReachabilityTlv: + description: |- + This is list of ISIS neighbors and attributes in Extended-IS-Reachability TLV (type 22). + type: object + properties: + neighbors: + description: |- + This container describes IS neighbors. + type: array + items: + $ref: '#/components/schemas/IsisLsp.neighbor' + x-field-uid: 1 + IsisLsp.neighbor: + description: |- + This contains IS neighbors. + type: object + properties: + system_id: + description: |- + The System ID for this emulated ISIS router, e.g. "640100010000". + type: string + format: hex + x-field-uid: 1 + IsisLsp.Ipv4InternalReachabilityTlv: + description: |- + This container defines list of IPv4 internal reachability information in one IPv4 internal reachability TLV. + This is advertised when the origin-type is set 'internal' in route range configurations. + type: object + properties: + prefixes: + description: |- + Describes list of IPv4 prefixes in this TLV. + type: array + items: + $ref: '#/components/schemas/IsisLsp.V4Prefix' + x-field-uid: 1 + IsisLsp.Ipv4ExternalReachabilityTlv: + description: |- + This container defines list of IPv4 external reachability information in one IPv4 external reachability TLV. + This is advertised when the origin-type is set 'external' in route range configurations. + type: object + properties: + prefixes: + description: |- + Describes list of IPv4 prefixes in this TLV.. + type: array + items: + $ref: '#/components/schemas/IsisLsp.V4Prefix' + x-field-uid: 1 + IsisLsp.V4Prefix: + description: |- + This group defines attributes of an IPv4 standard prefix. + type: object + properties: + ipv4_address: + description: |- + An IPv4 unicast prefix reachable via the originator of this LSP. + type: string + x-field-uid: 1 + prefix_length: + description: |- + The length of the IPv4 prefix. + type: integer + format: uint32 + maximum: 32 + x-field-uid: 2 + redistribution_type: + description: "Up (0)-used when a prefix is initially advertised within the\ + \ ISIS L3 hierarchy, \n and for all other prefixes in L1 and L2 LSPs.\ + \ (default) \nDown (1)-used when an L1/L2 router advertises L2 prefixes\ + \ in L1 LSPs. \nThe prefixes are being advertised from a higher level\ + \ (L2) down to a lower level (L1). " + type: string + x-field-uid: 3 + x-enum: + up: + x-field-uid: 1 + down: + x-field-uid: 2 + enum: + - up + - down + default_metric: + description: |- + ISIS default metric value. + type: integer + format: uint32 + x-field-uid: 4 + origin_type: + description: "The origin of the advertised route-internal or external to\ + \ the ISIS area. Options include the following: \n Internal-for intra-area\ + \ routes, through Level 1 LSPs. \n External-for inter-area routes redistributed\ + \ within L1, through Level\n1 LSPs." + type: string + x-field-uid: 5 + x-enum: + internal: + x-field-uid: 1 + external: + x-field-uid: 2 + enum: + - internal + - external + IsisLsp.ExtendedIpv4ReachabilityTlv: + description: |- + This container defines list of IPv4 extended reachability information in one Extended IPv4 External Reachability TLV. + It is advertised when the 'wide metric' is enabled. + type: object + properties: + prefixes: + description: |- + IPv4 prefix contained within extended reachability TLVs. + type: array + items: + $ref: '#/components/schemas/IsisLsp.ExtendedV4Prefix' + x-field-uid: 1 + IsisLsp.ExtendedV4Prefix: + description: |- + This group defines attributes of an IPv4 standard prefix. + type: object + properties: + ipv4_address: + description: |- + An IPv4 unicast prefix reachable via the originator of this LSP. + type: string + format: ipv4 + x-field-uid: 1 + prefix_length: + description: |- + The length of the IPv4 prefix. + type: integer + format: uint32 + maximum: 32 + x-field-uid: 2 + metric: + description: |- + ISIS wide metric. + type: integer + format: uint32 + x-field-uid: 3 + redistribution_type: + description: "Up (0)-used when a prefix is initially advertised within the\ + \ ISIS L3 hierarchy, \n and for all other prefixes in L1 and L2 LSPs.\ + \ (default) \nDown (1)-used when an L1/L2 router advertises L2 prefixes\ + \ in L1 LSPs. \nThe prefixes are being advertised from a higher level\ + \ (L2) down to a lower level (L1). " + type: string + x-field-uid: 4 + x-enum: + up: + x-field-uid: 1 + down: + x-field-uid: 2 + enum: + - up + - down + prefix_attributes: + $ref: '#/components/schemas/IsisLsp.PrefixAttributes' + x-field-uid: 5 + IsisLsp.Ipv6ReachabilityTlv: + description: |- + It defines list of IPv6 extended reachability information in one IPv6 Reachability TLV. + type: object + properties: + prefixes: + description: |- + IPv6 prefix contained within reachability TLVs. + type: array + items: + $ref: '#/components/schemas/IsisLsp.V6Prefix' + x-field-uid: 1 + IsisLsp.V6Prefix: + description: |- + It defines attributes of an IPv6 standard prefix. + type: object + properties: + ipv6_address: + description: |- + An IPv6 unicast prefix reachable via the originator of this LSP. + type: string + format: ipv6 + x-field-uid: 1 + prefix_length: + description: |- + The length of the IPv6 prefix. + type: integer + format: uint32 + maximum: 128 + x-field-uid: 2 + metric: + description: |- + ISIS wide metric. + type: integer + format: uint32 + x-field-uid: 3 + redistribution_type: + description: "Up (0)-used when a prefix is initially advertised within the\ + \ ISIS L3 hierarchy, \n and for all other prefixes in L1 and L2 LSPs.\ + \ (default) \nDown (1)-used when an L1/L2 router advertises L2 prefixes\ + \ in L1 LSPs. \nThe prefixes are being advertised from a higher level\ + \ (L2) down to a lower level (L1). " + type: string + x-field-uid: 4 + x-enum: + up: + x-field-uid: 1 + down: + x-field-uid: 2 + enum: + - up + - down + origin_type: + description: "The origin of the advertised route-internal or external to\ + \ the ISIS area. Options include the following: \n Internal-for intra-area\ + \ routes, through Level 1 LSPs. \n External-for inter-area routes redistributed\ + \ within L1, through Level\n1 LSPs." + type: string + x-field-uid: 5 + x-enum: + internal: + x-field-uid: 1 + external: + x-field-uid: 2 + enum: + - internal + - external + prefix_attributes: + $ref: '#/components/schemas/IsisLsp.PrefixAttributes' + x-field-uid: 6 + IsisLsp.PrefixAttributes: + description: |- + This contains the properties of ISIS Prefix attributes for the extended IPv4 and IPv6 reachability. https://www.rfc-editor.org/rfc/rfc7794.html + type: object + properties: + x_flag: + description: |- + External Prefix Flag (Bit 0) + type: boolean + x-field-uid: 1 + r_flag: + description: |- + Re-advertisement Flag (Bit 1) + type: boolean + x-field-uid: 2 + n_flag: + description: |- + Node Flag (Bit 2) + type: boolean + x-field-uid: 3 + LldpNeighbors.State.Request: + description: |- + The request to retrieve LLDP neighbor information for a given instance. + type: object + properties: + lldp_names: + description: | + The names of LLDP instances for which neighbor information will be retrieved. If no names are specified then the results will contain neighbor information for all configured LLDP instances. + + x-constraint: + - /components/schemas/Lldp/properties/name + type: array + items: + type: string + x-constraint: + - /components/schemas/Lldp/properties/name + x-field-uid: 1 + neighbor_id_filters: + description: |- + Specify the neighbors for which information will be returned. If empty or missing then information for all neighbors will be returned. + type: array + items: + type: string + x-field-uid: 2 + LldpNeighbors.State: + description: |- + LLDP neighbor information. + type: object + properties: + lldp_name: + description: |- + The name of the LLDP instance. + type: string + x-field-uid: 1 + system_name: + description: |- + The system name field shall contain an alpha-numeric string that indicates the system's administratively assigned name. The system name should be the system's fully qualified domain name. If implementations support IETF RFC 3418, the sysName object should be used for this field. + type: string + x-field-uid: 2 + system_description: + description: |- + The system description field shall contain an alpha-numeric string that is the textual description of the network entity. The system description should include the full name and version identification of the system's hardware type, software operating system, and networking software. If implementations support IETF RFC 3418, the sysDescr object should be used for this field. + type: string + x-field-uid: 3 + chassis_id: + description: |- + The Chassis ID is a mandatory TLV which identifies the chassis component of the endpoint identifier associated with the transmitting LLDP agent. + type: string + x-field-uid: 4 + chassis_id_type: + description: |- + This field identifies the format and source of the chassis identifier string. It is an enumerator defined by the LldpChassisIdSubtype object from IEEE 802.1AB MIB. + type: string + x-enum: + port_component: + x-field-uid: 1 + network_address: + x-field-uid: 2 + chassis_component: + x-field-uid: 3 + mac_address: + x-field-uid: 4 + interface_name: + x-field-uid: 5 + local: + x-field-uid: 6 + interface_alias: + x-field-uid: 7 + x-field-uid: 5 + enum: + - port_component + - network_address + - chassis_component + - mac_address + - interface_name + - local + - interface_alias + neighbor_id: + description: |- + System generated identifier for the neighbor on the LLDP instance. + type: string + x-field-uid: 6 + age: + description: |- + Age since discovery in seconds. + type: integer + format: uint32 + x-field-uid: 7 + last_update: + description: |- + Seconds since last update received. + type: integer + format: uint32 + x-field-uid: 8 + ttl: + description: |- + The time-to-live (TTL) in seconds is a mandatory TLV which indicates how long information from the neighbor should be considered valid. + type: integer + format: uint32 + x-field-uid: 9 + port_id: + description: |- + The Port ID is a mandatory TLV which identifies the port component of the endpoint identifier associated with the transmitting LLDP agent. If the specified port is an IEEE 802.3 Repeater port, then this TLV is optional. + type: string + x-field-uid: 10 + port_id_type: + description: |- + This field identifies the format and source of the port identifier string. It is an enumerator defined by the PtopoPortIdType object from RFC2922. + type: string + x-enum: + port_component: + x-field-uid: 1 + network_address: + x-field-uid: 2 + agent_circuit_id: + x-field-uid: 3 + mac_address: + x-field-uid: 4 + interface_name: + x-field-uid: 5 + local: + x-field-uid: 6 + interface_alias: + x-field-uid: 7 + x-field-uid: 11 + enum: + - port_component + - network_address + - agent_circuit_id + - mac_address + - interface_name + - local + - interface_alias + port_description: + description: |- + The binary string containing the actual port identifier for the port which this LLDP PDU was transmitted. The source and format of this field is defined by PtopoPortId from RFC2922. + type: string + x-field-uid: 12 + management_address: + description: |- + The Management Address is a mandatory TLV which identifies a network address associated with the local LLDP agent, which can be used to reach the agent on the port identified in the Port ID TLV. + type: string + x-field-uid: 13 + management_address_type: + description: |- + The enumerated value for the network address type identified in this TLV. This enumeration is defined in the 'Assigned Numbers' RFC [RFC3232] and the ianaAddressFamilyNumbers object. + type: string + x-field-uid: 14 + custom_tlvs: + type: array + items: + $ref: '#/components/schemas/LldpCustomTLV.State' + x-field-uid: 15 + capabilities: + type: array + items: + $ref: '#/components/schemas/LldpCapability.State' + x-field-uid: 16 + LldpCustomTLV.State: + description: |- + Custom TLV received from a neighbor.Custom TLVs are organization specific TLVs advertised with TLV type 127. + type: object + properties: + custom_type: + description: |- + The integer value identifying the type of information contained in the value field. + type: integer + format: uint32 + x-field-uid: 1 + oui: + description: |- + The organizationally unique identifier field shall contain the organization's OUI as defined in Clause 9 of IEEE Std 802. The high-order octet is 0 and the low-order 3 octets are the SMI Network Management Private Enterprise Code of the Vendor in network byte order, as defined in the 'Assigned Numbers' RFC [RFC3232]. + type: string + x-field-uid: 2 + oui_subtype: + description: |- + The organizationally defined subtype field shall contain a unique subtype value assigned by the defining organization. + type: string + x-field-uid: 3 + LldpCapability.State: + description: |- + LLDP system capability advertised by the neighbor + type: object + properties: + capability_name: + description: |- + Name of the system capability advertised by the neighbor. Capabilities are represented in a bitmap that defines the primary functions of the system. The capabilities are defined in IEEE 802.1AB. + type: string + x-enum: + mac_bridge: + x-field-uid: 1 + two_port_mac_relay: + x-field-uid: 2 + repeater: + x-field-uid: 3 + docsis_cable_device: + x-field-uid: 4 + s_vlan: + x-field-uid: 5 + telephone: + x-field-uid: 6 + other: + x-field-uid: 7 + router: + x-field-uid: 8 + c_vlan: + x-field-uid: 9 + station_only: + x-field-uid: 10 + wlan_access_point: + x-field-uid: 11 + x-field-uid: 1 + enum: + - mac_bridge + - two_port_mac_relay + - repeater + - docsis_cable_device + - s_vlan + - telephone + - other + - router + - c_vlan + - station_only + - wlan_access_point + capability_enabled: + description: |- + Indicates whether the corresponding system capability is enabled on the neighbor. + type: boolean + x-field-uid: 2 + RsvpLsps.State.Request: + description: |- + The request to retrieve RSVP Label Switched Path (LSP) information learned by the router. + type: object + properties: + rsvp_router_names: + description: | + The names of RSVP-TE routers for which learned information is requested. An empty list will return results for all RSVP=TE routers. + + x-constraint: + - /components/schemas/Device.Rsvp/properties/name + type: array + items: + type: string + x-constraint: + - /components/schemas/Device.Rsvp/properties/name + x-field-uid: 1 + RsvpLsps.State: + description: |- + Discovered IPv4 Point-to-Point LSPs of a RSVP-TE router. + type: object + properties: + rsvp_router_name: + description: |- + The name of the RSVP-TE Router. + type: string + x-field-uid: 1 + ipv4_lsps: + description: |- + IPv4 Point-to-Point RSVP-TE Discovered LSPs. + type: array + items: + $ref: '#/components/schemas/RsvpIPv4Lsp.State' + x-field-uid: 2 + RsvpIPv4Lsp.State: + description: |- + IPv4 RSVP-TE Discovered LSPs. + type: object + properties: + source_address: + description: |- + The origin IPv4 address of RSVP session. + type: string + format: ipv4 + x-field-uid: 1 + destination_address: + description: |- + The IPv4 destination address of RSVP session. + type: string + format: ipv4 + x-field-uid: 2 + lsp: + description: |- + It refers to the RSVP LSP properties. + $ref: '#/components/schemas/RsvpLsp.State' + x-field-uid: 3 + rros: + description: |- + It refers to RSVP RRO objects container. + items: + $ref: '#/components/schemas/RsvpLsp.Ipv4Rro' + type: array + x-field-uid: 4 + eros: + description: |- + It refers to RSVP ERO objects container. + items: + $ref: '#/components/schemas/RsvpLsp.Ipv4Ero' + type: array + x-field-uid: 5 + RsvpLsp.State: + description: |- + IPv4 RSVP-TE Discovered LSPs. + type: object + properties: + tunnel_id: + description: |- + The tunnel id of RSVP session which acts as an identifier that remains constant over the life of the tunnel. + type: integer + format: uint32 + x-field-uid: 1 + lsp_id: + description: |- + The lsp-id of RSVP session which acts as a differentiator for two lsps originating from the same headend, commonly used to distinguish RSVP sessions during make before break operations. + type: integer + format: uint32 + x-field-uid: 2 + session_name: + description: |- + The value of RSVP-TE Session Name field of the Session Attribute object. + type: string + x-field-uid: 3 + label_in: + description: |- + The label received by RSVP-TE ingress. + type: integer + format: uint32 + x-field-uid: 4 + label_out: + description: |- + The label assigned by RSVP-TE egress. + type: integer + format: uint32 + x-field-uid: 5 + session_status: + description: |- + Operational state of the RSVP LSP. + type: string + x-field-uid: 6 + x-enum: + up: + x-field-uid: 1 + down: + x-field-uid: 2 + enum: + - up + - down + last_flap_reason: + description: |- + The reason for the last flap of this RSVP session. + type: string + x-field-uid: 7 + x-enum: + resv_tear: + x-field-uid: 1 + path_tear: + x-field-uid: 2 + path_timeout: + x-field-uid: 3 + enum: + - resv_tear + - path_tear + - path_timeout + up_time: + description: |- + The tunnel UP time in milli seconds. If the tunnel is DOWN the UP time will be zero. + type: integer + format: uint64 + x-field-uid: 8 + RsvpLsp.Ipv4Rro: + description: "This contains the list of Record Route Object(RRO) objects associated\ + \ with the traffic engineering tunnel. The Record Route Object(RRO) is used\ + \ in RSVP-TE to record the route traversed by the LSP. The RRO might be present\ + \ in both Path message and Resv message, the RRO stores the IP addresses\ + \ of the routers that the traffic engineering tunnel traversed and also the\ + \ label generated and distributed by the routers. The RROs in the Resv message\ + \ mirrors that of the Path message, the only difference is that the RRO in\ + \ a Resv message records the path information in the reverse direction. " + properties: + address: + description: |- + The IPv4 addresses of the routers that the traffic engineering tunnel traversed. + type: string + format: ipv4 + x-field-uid: 1 + reported_label: + description: "Label reported for RRO hop. When the Label_Recording flag\ + \ is set in the Session Attribute object, nodes doing route recording\ + \ should include the Label Record subobject containing the reported label. " + type: integer + format: uint32 + x-field-uid: 2 + RsvpLsp.Ipv4Ero: + description: |- + This contains the list of sub-objects included in the Explicit Route Object(ERO) object send in the PATH message from the ingress. These sub-objects contain the intermediate hops to be traversed by the LSP while being forwarded towards the egress endpoint. + type: object + properties: + prefix: + description: |- + The IPv4 prefix indicated by the ERO. Specified only when the ERO hop is an IPv4 prefix. + type: string + format: ipv4 + x-field-uid: 1 + asn: + description: |- + The autonomous system number indicated by the ERO. Specified only when the ERO hop is an 2 or 4-byte AS number. + type: integer + format: uint32 + x-field-uid: 2 + type: + description: |- + The type indicated by the ERO. + type: string + x-field-uid: 3 + x-enum: + ipv4: + x-field-uid: 1 + ipv6: + x-field-uid: 2 + asn: + x-field-uid: 3 + asn4: + x-field-uid: 4 + label: + x-field-uid: 5 + unnumbered_interface: + x-field-uid: 6 + enum: + - ipv4 + - ipv6 + - asn + - asn4 + - label + - unnumbered_interface + Capture.Request: + description: |- + The capture result request to the traffic generator. Stops the port capture on the port_name and returns the capture. + type: object + required: + - port_name + properties: + port_name: + description: | + The name of a port a capture is started on. + + x-constraint: + - /components/schemas/Port/properties/name + type: string + x-constraint: + - /components/schemas/Port/properties/name + x-field-uid: 1 + Pattern.Flow.Ethernet.Dst.Counter: + description: |- + mac counter pattern + type: object + properties: + start: + type: string + x-field-uid: 1 + default: 00:00:00:00:00:00 + format: mac + step: + type: string + x-field-uid: 2 + default: 00:00:00:00:00:01 + format: mac + count: + type: integer + x-field-uid: 3 + default: 1 + format: uint32 + Pattern.Flow.Ethernet.Dst.MetricTag: + description: |- + Metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. + type: object + required: + - name + properties: + name: + description: |- + Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field + type: string + pattern: ^[\sa-zA-Z0-9-_()><\[\]]+$ + x-field-uid: 1 + offset: + description: |- + Offset in bits relative to start of corresponding header field + type: integer + format: uint32 + default: 0 + maximum: 47 + x-field-uid: 2 + length: + description: |- + Number of bits to track for metrics starting from configured offset of corresponding header field + type: integer + format: uint32 + default: 48 + minimum: 1 + maximum: 48 + x-field-uid: 3 + Pattern.Flow.Ethernet.Dst: + description: |- + Destination MAC address + type: object + properties: + choice: + type: string + x-enum: + value: + x-field-uid: 2 + values: + x-field-uid: 3 + auto: + x-field-uid: 1 + increment: + x-field-uid: 4 + decrement: + x-field-uid: 5 + default: auto + x-field-uid: 1 + enum: + - value + - values + - auto + - increment + - decrement + value: + type: string + x-field-uid: 2 + default: 00:00:00:00:00:00 + format: mac + values: + type: array + items: + type: string + format: mac + x-field-uid: 3 + default: + - 00:00:00:00:00:00 + auto: + description: |- + The OTG implementation can provide a system generated + value for this property. If the OTG is unable to generate a value + the default value must be used. + type: string + x-field-uid: 4 + default: 00:00:00:00:00:00 + format: mac + increment: + $ref: '#/components/schemas/Pattern.Flow.Ethernet.Dst.Counter' + x-field-uid: 6 + decrement: + $ref: '#/components/schemas/Pattern.Flow.Ethernet.Dst.Counter' + x-field-uid: 7 + metric_tags: + description: |- + One or more metric tags can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. + type: array + items: + $ref: '#/components/schemas/Pattern.Flow.Ethernet.Dst.MetricTag' + x-field-uid: 8 + Pattern.Flow.Ethernet.Src.Counter: + description: |- + mac counter pattern + type: object + properties: + start: + type: string + x-field-uid: 1 + default: 00:00:00:00:00:00 + format: mac + step: + type: string + x-field-uid: 2 + default: 00:00:00:00:00:01 + format: mac + count: + type: integer + x-field-uid: 3 + default: 1 + format: uint32 + Pattern.Flow.Ethernet.Src.MetricTag: + description: |- + Metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. + type: object + required: + - name + properties: + name: + description: |- + Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field + type: string + pattern: ^[\sa-zA-Z0-9-_()><\[\]]+$ + x-field-uid: 1 + offset: + description: |- + Offset in bits relative to start of corresponding header field + type: integer + format: uint32 + default: 0 + maximum: 47 + x-field-uid: 2 + length: + description: |- + Number of bits to track for metrics starting from configured offset of corresponding header field + type: integer + format: uint32 + default: 48 + minimum: 1 + maximum: 48 + x-field-uid: 3 + Pattern.Flow.Ethernet.Src: + description: |- + Source MAC address + type: object + properties: + choice: + type: string + x-enum: + value: + x-field-uid: 2 + values: + x-field-uid: 3 + increment: + x-field-uid: 4 + decrement: + x-field-uid: 5 + default: value + x-field-uid: 1 + enum: + - value + - values + - increment + - decrement + value: + type: string + x-field-uid: 2 + default: 00:00:00:00:00:00 + format: mac + values: + type: array + items: + type: string + format: mac + x-field-uid: 3 + default: + - 00:00:00:00:00:00 + increment: + $ref: '#/components/schemas/Pattern.Flow.Ethernet.Src.Counter' + x-field-uid: 5 + decrement: + $ref: '#/components/schemas/Pattern.Flow.Ethernet.Src.Counter' + x-field-uid: 6 + metric_tags: + description: |- + One or more metric tags can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. + type: array + items: + $ref: '#/components/schemas/Pattern.Flow.Ethernet.Src.MetricTag' + x-field-uid: 7 + Pattern.Flow.Ethernet.EtherType.Counter: + description: |- + integer counter pattern + type: object + properties: + start: + type: integer + x-field-uid: 1 + default: 65535 + format: uint32 + maximum: 65535 + step: + type: integer + x-field-uid: 2 + default: 1 + format: uint32 + maximum: 65535 + count: + type: integer + x-field-uid: 3 + default: 1 + format: uint32 + maximum: 65535 + x-constants: + ipv4: 2048 + ipv6: 34525 + arp: 2054 + vlan_802_1_q: 33024 + reserved: 65535 + Pattern.Flow.Ethernet.EtherType.MetricTag: + description: |- + Metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. + type: object + required: + - name + properties: + name: + description: |- + Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field + type: string + pattern: ^[\sa-zA-Z0-9-_()><\[\]]+$ + x-field-uid: 1 + offset: + description: |- + Offset in bits relative to start of corresponding header field + type: integer + format: uint32 + default: 0 + maximum: 15 + x-field-uid: 2 + length: + description: |- + Number of bits to track for metrics starting from configured offset of corresponding header field + type: integer + format: uint32 + default: 16 + minimum: 1 + maximum: 16 + x-field-uid: 3 + Pattern.Flow.Ethernet.EtherType: + description: |- + Ethernet type + type: object + properties: + choice: + type: string + x-enum: + value: + x-field-uid: 2 + values: + x-field-uid: 3 + auto: + x-field-uid: 1 + increment: + x-field-uid: 4 + decrement: + x-field-uid: 5 + default: auto + x-field-uid: 1 + enum: + - value + - values + - auto + - increment + - decrement + value: + type: integer + x-field-uid: 2 + default: 65535 + format: uint32 + maximum: 65535 + values: + type: array + items: + type: integer + format: uint32 + maximum: 65535 + x-field-uid: 3 + default: + - 65535 + auto: + description: |- + The OTG implementation can provide a system generated + value for this property. If the OTG is unable to generate a value + the default value must be used. + type: integer + x-field-uid: 4 + default: 65535 + format: uint32 + maximum: 65535 + increment: + $ref: '#/components/schemas/Pattern.Flow.Ethernet.EtherType.Counter' + x-field-uid: 6 + decrement: + $ref: '#/components/schemas/Pattern.Flow.Ethernet.EtherType.Counter' + x-field-uid: 7 + metric_tags: + description: |- + One or more metric tags can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. + type: array + items: + $ref: '#/components/schemas/Pattern.Flow.Ethernet.EtherType.MetricTag' + x-field-uid: 8 + x-constants: + ipv4: 2048 + ipv6: 34525 + arp: 2054 + vlan_802_1_q: 33024 + reserved: 65535 + Pattern.Flow.Ethernet.PfcQueue.Counter: + description: |- + integer counter pattern + type: object + properties: + start: + type: integer + x-field-uid: 1 + default: 0 + format: uint32 + maximum: 7 + step: + type: integer + x-field-uid: 2 + default: 1 + format: uint32 + maximum: 7 + count: + type: integer + x-field-uid: 3 + default: 1 + format: uint32 + maximum: 7 + Pattern.Flow.Ethernet.PfcQueue.MetricTag: + description: |- + Metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. + type: object + required: + - name + properties: + name: + description: |- + Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field + type: string + pattern: ^[\sa-zA-Z0-9-_()><\[\]]+$ + x-field-uid: 1 + offset: + description: |- + Offset in bits relative to start of corresponding header field + type: integer + format: uint32 + default: 0 + maximum: 2 + x-field-uid: 2 + length: + description: |- + Number of bits to track for metrics starting from configured offset of corresponding header field + type: integer + format: uint32 + default: 3 + minimum: 1 + maximum: 3 + x-field-uid: 3 + Pattern.Flow.Ethernet.PfcQueue: + description: |- + Priority flow control queue + type: object + properties: + choice: + type: string + x-enum: + value: + x-field-uid: 2 + values: + x-field-uid: 3 + increment: + x-field-uid: 4 + decrement: + x-field-uid: 5 + default: value + x-field-uid: 1 + enum: + - value + - values + - increment + - decrement + value: + type: integer + x-field-uid: 2 + default: 0 + format: uint32 + maximum: 7 + values: + type: array + items: + type: integer + format: uint32 + maximum: 7 + x-field-uid: 3 + default: + - 0 + increment: + $ref: '#/components/schemas/Pattern.Flow.Ethernet.PfcQueue.Counter' + x-field-uid: 5 + decrement: + $ref: '#/components/schemas/Pattern.Flow.Ethernet.PfcQueue.Counter' + x-field-uid: 6 + metric_tags: + description: |- + One or more metric tags can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. + type: array + items: + $ref: '#/components/schemas/Pattern.Flow.Ethernet.PfcQueue.MetricTag' + x-field-uid: 7 + Pattern.Flow.Vlan.Priority.Counter: + description: |- + integer counter pattern + type: object + properties: + start: + type: integer + x-field-uid: 1 + default: 0 + format: uint32 + maximum: 7 + step: + type: integer + x-field-uid: 2 + default: 1 + format: uint32 + maximum: 7 + count: + type: integer + x-field-uid: 3 + default: 1 + format: uint32 + maximum: 7 + Pattern.Flow.Vlan.Priority.MetricTag: + description: |- + Metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. + type: object + required: + - name + properties: + name: + description: |- + Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field + type: string + pattern: ^[\sa-zA-Z0-9-_()><\[\]]+$ + x-field-uid: 1 + offset: + description: |- + Offset in bits relative to start of corresponding header field + type: integer + format: uint32 + default: 0 + maximum: 2 + x-field-uid: 2 + length: + description: |- + Number of bits to track for metrics starting from configured offset of corresponding header field + type: integer + format: uint32 + default: 3 + minimum: 1 + maximum: 3 + x-field-uid: 3 + Pattern.Flow.Vlan.Priority: + description: |- + Priority code point + type: object + properties: + choice: + type: string + x-enum: + value: + x-field-uid: 2 + values: + x-field-uid: 3 + increment: + x-field-uid: 4 + decrement: + x-field-uid: 5 + default: value + x-field-uid: 1 + enum: + - value + - values + - increment + - decrement + value: + type: integer + x-field-uid: 2 + default: 0 + format: uint32 + maximum: 7 + values: + type: array + items: + type: integer + format: uint32 + maximum: 7 + x-field-uid: 3 + default: + - 0 + increment: + $ref: '#/components/schemas/Pattern.Flow.Vlan.Priority.Counter' + x-field-uid: 5 + decrement: + $ref: '#/components/schemas/Pattern.Flow.Vlan.Priority.Counter' + x-field-uid: 6 + metric_tags: + description: |- + One or more metric tags can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. + type: array + items: + $ref: '#/components/schemas/Pattern.Flow.Vlan.Priority.MetricTag' + x-field-uid: 7 + Pattern.Flow.Vlan.Cfi.Counter: + description: |- + integer counter pattern + type: object + properties: + start: + type: integer + x-field-uid: 1 + default: 0 + format: uint32 + maximum: 1 + step: + type: integer + x-field-uid: 2 + default: 1 + format: uint32 + maximum: 1 + count: + type: integer + x-field-uid: 3 + default: 1 + format: uint32 + maximum: 1 + Pattern.Flow.Vlan.Cfi.MetricTag: + description: |- + Metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. + type: object + required: + - name + properties: + name: + description: |- + Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field + type: string + pattern: ^[\sa-zA-Z0-9-_()><\[\]]+$ + x-field-uid: 1 + offset: + description: |- + Offset in bits relative to start of corresponding header field + type: integer + format: uint32 + default: 0 + maximum: 0 + x-field-uid: 2 + length: + description: |- + Number of bits to track for metrics starting from configured offset of corresponding header field + type: integer + format: uint32 + default: 1 + minimum: 1 + maximum: 1 + x-field-uid: 3 + Pattern.Flow.Vlan.Cfi: + description: |- + Canonical format indicator or drop elegible indicator + type: object + properties: + choice: + type: string + x-enum: + value: + x-field-uid: 2 + values: + x-field-uid: 3 + increment: + x-field-uid: 4 + decrement: + x-field-uid: 5 + default: value + x-field-uid: 1 + enum: + - value + - values + - increment + - decrement + value: + type: integer + x-field-uid: 2 + default: 0 + format: uint32 + maximum: 1 + values: + type: array + items: + type: integer + format: uint32 + maximum: 1 + x-field-uid: 3 + default: + - 0 + increment: + $ref: '#/components/schemas/Pattern.Flow.Vlan.Cfi.Counter' + x-field-uid: 5 + decrement: + $ref: '#/components/schemas/Pattern.Flow.Vlan.Cfi.Counter' + x-field-uid: 6 + metric_tags: + description: |- + One or more metric tags can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. + type: array + items: + $ref: '#/components/schemas/Pattern.Flow.Vlan.Cfi.MetricTag' + x-field-uid: 7 + Pattern.Flow.Vlan.Id.Counter: + description: |- + integer counter pattern + type: object + properties: + start: + type: integer + x-field-uid: 1 + default: 0 + format: uint32 + maximum: 4095 + step: + type: integer + x-field-uid: 2 + default: 1 + format: uint32 + maximum: 4095 + count: + type: integer + x-field-uid: 3 + default: 1 + format: uint32 + maximum: 4095 + Pattern.Flow.Vlan.Id.MetricTag: + description: |- + Metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. + type: object + required: + - name + properties: + name: + description: |- + Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field + type: string + pattern: ^[\sa-zA-Z0-9-_()><\[\]]+$ + x-field-uid: 1 + offset: + description: |- + Offset in bits relative to start of corresponding header field + type: integer + format: uint32 + default: 0 + maximum: 11 + x-field-uid: 2 + length: + description: |- + Number of bits to track for metrics starting from configured offset of corresponding header field + type: integer + format: uint32 + default: 12 + minimum: 1 + maximum: 12 + x-field-uid: 3 + Pattern.Flow.Vlan.Id: + description: |- + Vlan identifier + type: object + properties: + choice: + type: string + x-enum: + value: + x-field-uid: 2 + values: + x-field-uid: 3 + increment: + x-field-uid: 4 + decrement: + x-field-uid: 5 + default: value + x-field-uid: 1 + enum: + - value + - values + - increment + - decrement + value: + type: integer + x-field-uid: 2 + default: 0 + format: uint32 + maximum: 4095 + values: + type: array + items: + type: integer + format: uint32 + maximum: 4095 + x-field-uid: 3 + default: + - 0 + increment: + $ref: '#/components/schemas/Pattern.Flow.Vlan.Id.Counter' + x-field-uid: 5 + decrement: + $ref: '#/components/schemas/Pattern.Flow.Vlan.Id.Counter' + x-field-uid: 6 + metric_tags: + description: |- + One or more metric tags can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. + type: array + items: + $ref: '#/components/schemas/Pattern.Flow.Vlan.Id.MetricTag' + x-field-uid: 7 + Pattern.Flow.Vlan.Tpid.Counter: + description: |- + integer counter pattern + type: object + properties: + start: + type: integer + x-field-uid: 1 + default: 65535 + format: uint32 + maximum: 65535 + step: + type: integer + x-field-uid: 2 + default: 1 + format: uint32 + maximum: 65535 + count: + type: integer + x-field-uid: 3 + default: 1 + format: uint32 + maximum: 65535 + x-constants: + x8100: 33024 + x88A8: 34984 + x9100: 37120 + x9200: 37376 + x9300: 37632 + Pattern.Flow.Vlan.Tpid.MetricTag: + description: |- + Metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. + type: object + required: + - name + properties: + name: + description: |- + Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field + type: string + pattern: ^[\sa-zA-Z0-9-_()><\[\]]+$ + x-field-uid: 1 + offset: + description: |- + Offset in bits relative to start of corresponding header field + type: integer + format: uint32 + default: 0 + maximum: 15 + x-field-uid: 2 + length: + description: |- + Number of bits to track for metrics starting from configured offset of corresponding header field + type: integer + format: uint32 + default: 16 + minimum: 1 + maximum: 16 + x-field-uid: 3 + Pattern.Flow.Vlan.Tpid: + description: |- + Protocol identifier + type: object + properties: + choice: + type: string + x-enum: + value: + x-field-uid: 2 + values: + x-field-uid: 3 + increment: + x-field-uid: 4 + decrement: + x-field-uid: 5 + default: value + x-field-uid: 1 + enum: + - value + - values + - increment + - decrement + value: + type: integer + x-field-uid: 2 + default: 65535 + format: uint32 + maximum: 65535 + values: + type: array + items: + type: integer + format: uint32 + maximum: 65535 + x-field-uid: 3 + default: + - 65535 + increment: + $ref: '#/components/schemas/Pattern.Flow.Vlan.Tpid.Counter' + x-field-uid: 5 + decrement: + $ref: '#/components/schemas/Pattern.Flow.Vlan.Tpid.Counter' + x-field-uid: 6 + metric_tags: + description: |- + One or more metric tags can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. + type: array + items: + $ref: '#/components/schemas/Pattern.Flow.Vlan.Tpid.MetricTag' + x-field-uid: 7 + x-constants: + x8100: 33024 + x88A8: 34984 + x9100: 37120 + x9200: 37376 + x9300: 37632 + Pattern.Flow.Vxlan.Flags.Counter: + description: |- + integer counter pattern + type: object + properties: + start: + type: integer + x-field-uid: 1 + default: 8 + format: uint32 + maximum: 255 + step: + type: integer + x-field-uid: 2 + default: 1 + format: uint32 + maximum: 255 + count: + type: integer + x-field-uid: 3 + default: 1 + format: uint32 + maximum: 255 + Pattern.Flow.Vxlan.Flags.MetricTag: + description: |- + Metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. + type: object + required: + - name + properties: + name: + description: |- + Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field + type: string + pattern: ^[\sa-zA-Z0-9-_()><\[\]]+$ + x-field-uid: 1 + offset: + description: |- + Offset in bits relative to start of corresponding header field + type: integer + format: uint32 + default: 0 + maximum: 7 + x-field-uid: 2 + length: + description: |- + Number of bits to track for metrics starting from configured offset of corresponding header field + type: integer + format: uint32 + default: 8 + minimum: 1 + maximum: 8 + x-field-uid: 3 + Pattern.Flow.Vxlan.Flags: + description: |- + Flags field with a bit format of RRRRIRRR. The I flag MUST be set to 1 for a valid vxlan network id (VNI). The other 7 bits (designated "R") are reserved fields and MUST be set to zero on transmission and ignored on receipt. + type: object + properties: + choice: + type: string + x-enum: + value: + x-field-uid: 2 + values: + x-field-uid: 3 + increment: + x-field-uid: 4 + decrement: + x-field-uid: 5 + default: value + x-field-uid: 1 + enum: + - value + - values + - increment + - decrement + value: + type: integer + x-field-uid: 2 + default: 8 + format: uint32 + maximum: 255 + values: + type: array + items: + type: integer + format: uint32 + maximum: 255 + x-field-uid: 3 + default: + - 8 + increment: + $ref: '#/components/schemas/Pattern.Flow.Vxlan.Flags.Counter' + x-field-uid: 5 + decrement: + $ref: '#/components/schemas/Pattern.Flow.Vxlan.Flags.Counter' + x-field-uid: 6 + metric_tags: + description: |- + One or more metric tags can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. + type: array + items: + $ref: '#/components/schemas/Pattern.Flow.Vxlan.Flags.MetricTag' + x-field-uid: 7 + Pattern.Flow.Vxlan.Reserved0.Counter: + description: |- + integer counter pattern + type: object + properties: + start: + type: integer + x-field-uid: 1 + default: 0 + format: uint32 + maximum: 16777215 + step: + type: integer + x-field-uid: 2 + default: 1 + format: uint32 + maximum: 16777215 + count: + type: integer + x-field-uid: 3 + default: 1 + format: uint32 + maximum: 16777215 + Pattern.Flow.Vxlan.Reserved0.MetricTag: + description: |- + Metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. + type: object + required: + - name + properties: + name: + description: |- + Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field + type: string + pattern: ^[\sa-zA-Z0-9-_()><\[\]]+$ + x-field-uid: 1 + offset: + description: |- + Offset in bits relative to start of corresponding header field + type: integer + format: uint32 + default: 0 + maximum: 23 + x-field-uid: 2 + length: + description: |- + Number of bits to track for metrics starting from configured offset of corresponding header field + type: integer + format: uint32 + default: 24 + minimum: 1 + maximum: 24 + x-field-uid: 3 + Pattern.Flow.Vxlan.Reserved0: + description: |- + Reserved field + type: object + properties: + choice: + type: string + x-enum: + value: + x-field-uid: 2 + values: + x-field-uid: 3 + increment: + x-field-uid: 4 + decrement: + x-field-uid: 5 + default: value + x-field-uid: 1 + enum: + - value + - values + - increment + - decrement + value: + type: integer + x-field-uid: 2 + default: 0 + format: uint32 + maximum: 16777215 + values: + type: array + items: + type: integer + format: uint32 + maximum: 16777215 + x-field-uid: 3 + default: + - 0 + increment: + $ref: '#/components/schemas/Pattern.Flow.Vxlan.Reserved0.Counter' + x-field-uid: 5 + decrement: + $ref: '#/components/schemas/Pattern.Flow.Vxlan.Reserved0.Counter' + x-field-uid: 6 + metric_tags: + description: |- + One or more metric tags can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. + type: array + items: + $ref: '#/components/schemas/Pattern.Flow.Vxlan.Reserved0.MetricTag' + x-field-uid: 7 + Pattern.Flow.Vxlan.Vni.Counter: + description: |- + integer counter pattern + type: object + properties: + start: + type: integer + x-field-uid: 1 + default: 0 + format: uint32 + maximum: 16777215 + step: + type: integer + x-field-uid: 2 + default: 1 + format: uint32 + maximum: 16777215 + count: + type: integer + x-field-uid: 3 + default: 1 + format: uint32 + maximum: 16777215 + Pattern.Flow.Vxlan.Vni.MetricTag: + description: |- + Metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. + type: object + required: + - name + properties: + name: + description: |- + Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field + type: string + pattern: ^[\sa-zA-Z0-9-_()><\[\]]+$ + x-field-uid: 1 + offset: + description: |- + Offset in bits relative to start of corresponding header field + type: integer + format: uint32 + default: 0 + maximum: 23 + x-field-uid: 2 + length: + description: |- + Number of bits to track for metrics starting from configured offset of corresponding header field + type: integer + format: uint32 + default: 24 + minimum: 1 + maximum: 24 + x-field-uid: 3 + Pattern.Flow.Vxlan.Vni: + description: |- + VXLAN network id + type: object + properties: + choice: + type: string + x-enum: + value: + x-field-uid: 2 + values: + x-field-uid: 3 + auto: + x-field-uid: 1 + increment: + x-field-uid: 4 + decrement: + x-field-uid: 5 + default: auto + x-field-uid: 1 + enum: + - value + - values + - auto + - increment + - decrement + value: + type: integer + x-field-uid: 2 + default: 0 + format: uint32 + maximum: 16777215 + values: + type: array + items: + type: integer + format: uint32 + maximum: 16777215 + x-field-uid: 3 + default: + - 0 + auto: + description: |- + The OTG implementation can provide a system generated + value for this property. If the OTG is unable to generate a value + the default value must be used. + type: integer + x-field-uid: 4 + default: 0 + format: uint32 + maximum: 16777215 + increment: + $ref: '#/components/schemas/Pattern.Flow.Vxlan.Vni.Counter' + x-field-uid: 6 + decrement: + $ref: '#/components/schemas/Pattern.Flow.Vxlan.Vni.Counter' + x-field-uid: 7 + metric_tags: + description: |- + One or more metric tags can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. + type: array + items: + $ref: '#/components/schemas/Pattern.Flow.Vxlan.Vni.MetricTag' + x-field-uid: 8 + Pattern.Flow.Vxlan.Reserved1.Counter: + description: |- + integer counter pattern + type: object + properties: + start: + type: integer + x-field-uid: 1 + default: 0 + format: uint32 + maximum: 255 + step: + type: integer + x-field-uid: 2 + default: 1 + format: uint32 + maximum: 255 + count: + type: integer + x-field-uid: 3 + default: 1 + format: uint32 + maximum: 255 + Pattern.Flow.Vxlan.Reserved1.MetricTag: description: |- - RSVP-TE per router statistics information. + Metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. type: object + required: + - name properties: name: description: |- - The name of a configured RSVP router. + Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field type: string + pattern: ^[\sa-zA-Z0-9-_()><\[\]]+$ x-field-uid: 1 - ingress_p2p_lsps_configured: + offset: description: |- - The number of ingress point-to-point LSPs configured or transiting through the RSVP router which have been initated from the test port. + Offset in bits relative to start of corresponding header field type: integer format: uint32 + default: 0 + maximum: 7 x-field-uid: 2 - ingress_p2p_lsps_up: - description: "The number of ingress point-to-point LSPs for which Resv has\ - \ been received and is currently up. " + length: + description: |- + Number of bits to track for metrics starting from configured offset of corresponding header field type: integer format: uint32 + default: 8 + minimum: 1 + maximum: 8 x-field-uid: 3 - egress_p2p_lsps_up: - description: |- - The number of egress point-to-point LSPs for which Path requests were successfully processed and is currently up. + Pattern.Flow.Vxlan.Reserved1: + description: |- + Reserved field + type: object + properties: + choice: + type: string + x-enum: + value: + x-field-uid: 2 + values: + x-field-uid: 3 + increment: + x-field-uid: 4 + decrement: + x-field-uid: 5 + default: value + x-field-uid: 1 + enum: + - value + - values + - increment + - decrement + value: type: integer + x-field-uid: 2 + default: 0 format: uint32 - x-field-uid: 4 - lsp_flap_count: - description: |- - The number of times an LSP went from up to down state either because it timed out while waiting for Refreshes or a PathTear or ResvTear message was received which caused the LSP to flap. - type: integer - format: uint64 + maximum: 255 + values: + type: array + items: + type: integer + format: uint32 + maximum: 255 + x-field-uid: 3 + default: + - 0 + increment: + $ref: '#/components/schemas/Pattern.Flow.Vxlan.Reserved1.Counter' x-field-uid: 5 - paths_tx: - description: |- - The number of Path messages sent by this RSVP router. - type: integer - format: uint64 + decrement: + $ref: '#/components/schemas/Pattern.Flow.Vxlan.Reserved1.Counter' x-field-uid: 6 - paths_rx: + metric_tags: description: |- - The number of Path messages received by this RSVP router. - type: integer - format: uint64 + One or more metric tags can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. + type: array + items: + $ref: '#/components/schemas/Pattern.Flow.Vxlan.Reserved1.MetricTag' x-field-uid: 7 - resvs_tx: - description: |- - The number of Resv messages sent by this RSVP router. - type: integer - format: uint64 - x-field-uid: 8 - resvs_rx: - description: |- - The number of Resv messages received by this RSVP router. - type: integer - format: uint64 - x-field-uid: 9 - path_tears_tx: - description: |- - The number of Path Tear messages sent by this RSVP router. - type: integer - format: uint64 - x-field-uid: 10 - path_tears_rx: - description: "The number of Path Tear messages received by this RSVP router. " - type: integer - format: uint64 - x-field-uid: 11 - resv_tears_tx: - description: |- - The number of Resv Tear messages sent by this RSVP router. - type: integer - format: uint64 - x-field-uid: 12 - resv_tears_rx: - description: "The number of Resv Tear messages received by this RSVP router. " - type: integer - format: uint64 - x-field-uid: 13 - path_errors_tx: - description: |- - The number of Path Error messages sent by this RSVP router. - type: integer - format: uint64 - x-field-uid: 14 - path_errors_rx: - description: "The number of Path Error messages received by this RSVP router. " + Pattern.Flow.Ipv4.Version.Counter: + description: |- + integer counter pattern + type: object + properties: + start: type: integer - format: uint64 - x-field-uid: 15 - resv_errors_tx: - description: |- - The number of Resv Error messages sent by this RSVP router. + x-field-uid: 1 + default: 4 + format: uint32 + maximum: 15 + step: type: integer - format: uint64 - x-field-uid: 16 - resv_errors_rx: - description: "The number of Resv Error messages received by this RSVP router. " + x-field-uid: 2 + default: 1 + format: uint32 + maximum: 15 + count: type: integer - format: uint64 - x-field-uid: 17 - resv_conf_tx: + x-field-uid: 3 + default: 1 + format: uint32 + maximum: 15 + Pattern.Flow.Ipv4.Version.MetricTag: + description: |- + Metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. + type: object + required: + - name + properties: + name: description: |- - The number of ResvConf messages sent by this RSVP router. - type: integer - format: uint64 - x-field-uid: 18 - resv_conf_rx: - description: "The number of ResvConf messages received by this RSVP router. " - type: integer - format: uint64 - x-field-uid: 19 - hellos_tx: + Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field + type: string + pattern: ^[\sa-zA-Z0-9-_()><\[\]]+$ + x-field-uid: 1 + offset: description: |- - The number of Hello messages sent by this RSVP router. - type: integer - format: uint64 - x-field-uid: 20 - hellos_rx: - description: "The number of Hello messages received by this RSVP router. " + Offset in bits relative to start of corresponding header field type: integer - format: uint64 - x-field-uid: 21 - acks_tx: + format: uint32 + default: 0 + maximum: 3 + x-field-uid: 2 + length: description: |- - The number of Ack messages sent by this RSVP router. + Number of bits to track for metrics starting from configured offset of corresponding header field type: integer - format: uint64 - x-field-uid: 22 - acks_rx: - description: "The number of Ack messages received by this RSVP router. " + format: uint32 + default: 4 + minimum: 1 + maximum: 4 + x-field-uid: 3 + Pattern.Flow.Ipv4.Version: + description: |- + Version + type: object + properties: + choice: + type: string + x-enum: + value: + x-field-uid: 2 + values: + x-field-uid: 3 + increment: + x-field-uid: 4 + decrement: + x-field-uid: 5 + default: value + x-field-uid: 1 + enum: + - value + - values + - increment + - decrement + value: type: integer - format: uint64 - x-field-uid: 23 - nacks_tx: + x-field-uid: 2 + default: 4 + format: uint32 + maximum: 15 + values: + type: array + items: + type: integer + format: uint32 + maximum: 15 + x-field-uid: 3 + default: + - 4 + increment: + $ref: '#/components/schemas/Pattern.Flow.Ipv4.Version.Counter' + x-field-uid: 5 + decrement: + $ref: '#/components/schemas/Pattern.Flow.Ipv4.Version.Counter' + x-field-uid: 6 + metric_tags: description: |- - The number of Nack messages sent by this RSVP router. - type: integer - format: uint64 - x-field-uid: 24 - nacks_rx: - description: "The number of Nack messages received by this RSVP router. " + One or more metric tags can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. + type: array + items: + $ref: '#/components/schemas/Pattern.Flow.Ipv4.Version.MetricTag' + x-field-uid: 7 + Pattern.Flow.Ipv4.HeaderLength.Counter: + description: |- + integer counter pattern + type: object + properties: + start: type: integer - format: uint64 - x-field-uid: 25 - srefresh_tx: - description: |- - The number of SRefresh messages sent by this RSVP router. + x-field-uid: 1 + default: 5 + format: uint32 + maximum: 15 + step: type: integer - format: uint64 - x-field-uid: 26 - srefresh_rx: - description: "The number of SRefresh messages received by this RSVP router. " + x-field-uid: 2 + default: 1 + format: uint32 + maximum: 15 + count: type: integer - format: uint64 - x-field-uid: 27 - bundle_tx: + x-field-uid: 3 + default: 1 + format: uint32 + maximum: 15 + Pattern.Flow.Ipv4.HeaderLength.MetricTag: + description: |- + Metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. + type: object + required: + - name + properties: + name: description: |- - The number of Bundle messages sent by this RSVP router. - type: integer - format: uint64 - x-field-uid: 28 - bundle_rx: - description: "The number of Bundle messages received by this RSVP router. " - type: integer - format: uint64 - x-field-uid: 29 - path_reevaluation_request_tx: + Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field + type: string + pattern: ^[\sa-zA-Z0-9-_()><\[\]]+$ + x-field-uid: 1 + offset: description: |- - The number of Path messages with Path Re-evaluation Request enabled sent by this RSVP router. + Offset in bits relative to start of corresponding header field type: integer - format: uint64 - x-field-uid: 30 - path_reoptimizations: + format: uint32 + default: 0 + maximum: 3 + x-field-uid: 2 + length: description: |- - The number of successfully completed Make-Before-Break operations on LSPs on this RSVP router. + Number of bits to track for metrics starting from configured offset of corresponding header field type: integer - format: uint64 - x-field-uid: 31 - States.Request: + format: uint32 + default: 4 + minimum: 1 + maximum: 4 + x-field-uid: 3 + Pattern.Flow.Ipv4.HeaderLength: description: |- - Request to traffic generator for states of choice + Header length type: object properties: choice: type: string - default: ipv4_neighbors - x-field-uid: 1 x-enum: - ipv4_neighbors: - x-field-uid: 1 - ipv6_neighbors: + value: x-field-uid: 2 - bgp_prefixes: + values: x-field-uid: 3 - isis_lsps: + auto: + x-field-uid: 1 + increment: x-field-uid: 4 - lldp_neighbors: + decrement: x-field-uid: 5 - rsvp_lsps: - x-field-uid: 6 + default: auto + x-field-uid: 1 enum: - - ipv4_neighbors - - ipv6_neighbors - - bgp_prefixes - - isis_lsps - - lldp_neighbors - - rsvp_lsps - ipv4_neighbors: - $ref: '#/components/schemas/Neighborsv4.States.Request' + - value + - values + - auto + - increment + - decrement + value: + type: integer x-field-uid: 2 - ipv6_neighbors: - $ref: '#/components/schemas/Neighborsv6.States.Request' + default: 5 + format: uint32 + maximum: 15 + values: + type: array + items: + type: integer + format: uint32 + maximum: 15 x-field-uid: 3 - bgp_prefixes: - $ref: '#/components/schemas/BgpPrefix.State.Request' + default: + - 5 + auto: + description: |- + The OTG implementation can provide a system generated + value for this property. If the OTG is unable to generate a value + the default value must be used. + type: integer x-field-uid: 4 - isis_lsps: - $ref: '#/components/schemas/IsisLsps.State.Request' - x-field-uid: 5 - lldp_neighbors: - $ref: '#/components/schemas/LldpNeighbors.State.Request' + default: 5 + format: uint32 + maximum: 15 + increment: + $ref: '#/components/schemas/Pattern.Flow.Ipv4.HeaderLength.Counter' x-field-uid: 6 - rsvp_lsps: - $ref: '#/components/schemas/RsvpLsps.State.Request' + decrement: + $ref: '#/components/schemas/Pattern.Flow.Ipv4.HeaderLength.Counter' x-field-uid: 7 - States.Response: + metric_tags: + description: |- + One or more metric tags can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. + type: array + items: + $ref: '#/components/schemas/Pattern.Flow.Ipv4.HeaderLength.MetricTag' + x-field-uid: 8 + Pattern.Flow.Ipv4.TotalLength.Counter: description: |- - Response containing chosen traffic generator states + integer counter pattern type: object properties: - choice: + start: + type: integer + x-field-uid: 1 + default: 46 + format: uint32 + maximum: 65535 + step: + type: integer + x-field-uid: 2 + default: 1 + format: uint32 + maximum: 65535 + count: + type: integer + x-field-uid: 3 + default: 1 + format: uint32 + maximum: 65535 + Pattern.Flow.Ipv4.TotalLength.MetricTag: + description: |- + Metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. + type: object + required: + - name + properties: + name: + description: |- + Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field type: string - default: ipv4_neighbors + pattern: ^[\sa-zA-Z0-9-_()><\[\]]+$ x-field-uid: 1 + offset: + description: |- + Offset in bits relative to start of corresponding header field + type: integer + format: uint32 + default: 0 + maximum: 15 + x-field-uid: 2 + length: + description: |- + Number of bits to track for metrics starting from configured offset of corresponding header field + type: integer + format: uint32 + default: 16 + minimum: 1 + maximum: 16 + x-field-uid: 3 + Pattern.Flow.Ipv4.TotalLength: + description: |- + Total length + type: object + properties: + choice: + type: string x-enum: - ipv4_neighbors: - x-field-uid: 1 - ipv6_neighbors: + value: x-field-uid: 2 - bgp_prefixes: + values: x-field-uid: 3 - isis_lsps: + auto: + x-field-uid: 1 + increment: x-field-uid: 4 - lldp_neighbors: + decrement: x-field-uid: 5 - rsvp_lsps: - x-field-uid: 6 + default: auto + x-field-uid: 1 enum: - - ipv4_neighbors - - ipv6_neighbors - - bgp_prefixes - - isis_lsps - - lldp_neighbors - - rsvp_lsps - ipv4_neighbors: - type: array - items: - $ref: '#/components/schemas/Neighborsv4.State' + - value + - values + - auto + - increment + - decrement + value: + type: integer x-field-uid: 2 - ipv6_neighbors: + default: 46 + format: uint32 + maximum: 65535 + values: type: array items: - $ref: '#/components/schemas/Neighborsv6.State' + type: integer + format: uint32 + maximum: 65535 x-field-uid: 3 - bgp_prefixes: - type: array - items: - $ref: '#/components/schemas/BgpPrefixes.State' + default: + - 46 + auto: + description: |- + The OTG implementation can provide a system generated + value for this property. If the OTG is unable to generate a value + the default value must be used. + type: integer x-field-uid: 4 - isis_lsps: - type: array - items: - $ref: '#/components/schemas/IsisLsps.State' - x-field-uid: 5 - lldp_neighbors: - type: array - items: - $ref: '#/components/schemas/LldpNeighbors.State' + default: 46 + format: uint32 + maximum: 65535 + increment: + $ref: '#/components/schemas/Pattern.Flow.Ipv4.TotalLength.Counter' x-field-uid: 6 - rsvp_lsps: - type: array - items: - $ref: '#/components/schemas/RsvpLsps.State' + decrement: + $ref: '#/components/schemas/Pattern.Flow.Ipv4.TotalLength.Counter' x-field-uid: 7 - Neighborsv4.States.Request: - description: |- - The request to retrieve IPv4 Neighbor state (ARP cache entries) of a network interface(s). - type: object - properties: - ethernet_names: - description: | - The names of Ethernet interfaces for which Neighbor state (ARP cache entries) will be retrieved. If no names are specified then the results will contain Neighbor state (ARP cache entries) for all available Ethernet interfaces. - - x-constraint: - - /components/schemas/Device.Ethernet/properties/name - - - x-constraint: - - /components/schemas/Device.Ethernet/properties/name + metric_tags: + description: |- + One or more metric tags can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. type: array items: - type: string - x-constraint: - - /components/schemas/Device.Ethernet/properties/name - x-field-uid: 1 - Neighborsv4.State: + $ref: '#/components/schemas/Pattern.Flow.Ipv4.TotalLength.MetricTag' + x-field-uid: 8 + Pattern.Flow.Ipv4.Identification.Counter: description: |- - IPv4 Neighbor state (ARP cache entry). + integer counter pattern type: object - required: - - ethernet_name - - ipv4_address properties: - ethernet_name: - description: |- - The name of the Ethernet interface associated with the Neighbor state (ARP cache entry). - type: string + start: + type: integer x-field-uid: 1 - ipv4_address: - description: |- - The IPv4 address of the neighbor. - type: string - format: ipv4 + default: 0 + format: uint32 + maximum: 65535 + step: + type: integer x-field-uid: 2 - link_layer_address: - description: |- - The link-layer address (MAC) of the neighbor. - type: string - format: mac + default: 1 + format: uint32 + maximum: 65535 + count: + type: integer x-field-uid: 3 - Neighborsv6.States.Request: - description: |- - The request to retrieve IPv6 Neighbor state (NDISC cache entries) of a network interface(s). - type: object - properties: - ethernet_names: - description: | - The names of Ethernet interfaces for which Neighbor state (NDISC cache entries) will be retrieved. If no names are specified then the results will contain Neighbor state (NDISC cache entries) for all available Ethernet interfaces. - - x-constraint: - - /components/schemas/Device.Ethernet/properties/name - - - x-constraint: - - /components/schemas/Device.Ethernet/properties/name - type: array - items: - type: string - x-constraint: - - /components/schemas/Device.Ethernet/properties/name - x-field-uid: 1 - Neighborsv6.State: + default: 1 + format: uint32 + maximum: 65535 + Pattern.Flow.Ipv4.Identification.MetricTag: description: |- - IPv6 Neighbor state (NDISC cache entry). + Metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. type: object required: - - ethernet_name - - ipv6_address + - name properties: - ethernet_name: + name: description: |- - The name of the Ethernet interface associated with the Neighbor state (NDISC cache entry). + Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field type: string + pattern: ^[\sa-zA-Z0-9-_()><\[\]]+$ x-field-uid: 1 - ipv6_address: + offset: description: |- - The IPv6 address of the neighbor. - type: string - format: ipv6 + Offset in bits relative to start of corresponding header field + type: integer + format: uint32 + default: 0 + maximum: 15 x-field-uid: 2 - link_layer_address: + length: description: |- - The link-layer address (MAC) of the neighbor. - type: string - format: mac + Number of bits to track for metrics starting from configured offset of corresponding header field + type: integer + format: uint32 + default: 16 + minimum: 1 + maximum: 16 x-field-uid: 3 - BgpPrefix.State.Request: + Pattern.Flow.Ipv4.Identification: description: |- - The request to retrieve BGP peer prefix information. + Identification type: object properties: - bgp_peer_names: - description: | - The names of BGP peers for which prefix information will be retrieved. If no names are specified then the results will contain prefix information for all configured BGP peers. - - x-constraint: - - /components/schemas/Bgp.V4Peer/properties/name - - /components/schemas/Bgp.V6Peer/properties/name - - - x-constraint: - - /components/schemas/Bgp.V4Peer/properties/name - - /components/schemas/Bgp.V6Peer/properties/name - type: array - items: - type: string - x-constraint: - - /components/schemas/Bgp.V4Peer/properties/name - - /components/schemas/Bgp.V6Peer/properties/name + choice: + type: string + x-enum: + value: + x-field-uid: 2 + values: + x-field-uid: 3 + increment: + x-field-uid: 4 + decrement: + x-field-uid: 5 + default: value x-field-uid: 1 - prefix_filters: - description: |- - Specify which prefixes to return. If the list is empty or missing then all prefixes will be returned. - type: array - items: - type: string - x-enum: - ipv4_unicast: - x-field-uid: 1 - ipv6_unicast: - x-field-uid: 2 - enum: - - ipv4_unicast - - ipv6_unicast + enum: + - value + - values + - increment + - decrement + value: + type: integer x-field-uid: 2 - ipv4_unicast_filters: - description: |- - The IPv4 unicast results can be filtered by specifying additional prefix search criteria. If the ipv4_unicast_filters property is missing or empty then all IPv4 prefixes will be returned. + default: 0 + format: uint32 + maximum: 65535 + values: type: array items: - $ref: '#/components/schemas/BgpPrefix.Ipv4Unicast.Filter' + type: integer + format: uint32 + maximum: 65535 x-field-uid: 3 - ipv6_unicast_filters: + default: + - 0 + increment: + $ref: '#/components/schemas/Pattern.Flow.Ipv4.Identification.Counter' + x-field-uid: 5 + decrement: + $ref: '#/components/schemas/Pattern.Flow.Ipv4.Identification.Counter' + x-field-uid: 6 + metric_tags: description: |- - The IPv6 unicast results can be filtered by specifying additional prefix search criteria. If the ipv6_unicast_filters property is missing or empty then all IPv6 prefixes will be returned. + One or more metric tags can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. type: array items: - $ref: '#/components/schemas/BgpPrefix.Ipv6Unicast.Filter' - x-field-uid: 4 - BgpPrefix.Ipv4Unicast.Filter: + $ref: '#/components/schemas/Pattern.Flow.Ipv4.Identification.MetricTag' + x-field-uid: 7 + Pattern.Flow.Ipv4.Reserved.Counter: + description: |- + integer counter pattern type: object properties: - addresses: - description: |- - The addresses to match. If the addresses property is missing or empty then all addresses will match. - type: array - items: - type: string - format: ipv4 + start: + type: integer x-field-uid: 1 - prefix_length: - x-field-uid: 2 - description: |- - The prefix length to match. If the prefix length is missing then all prefix lengths will match. + default: 0 + format: uint32 + maximum: 1 + step: type: integer + x-field-uid: 2 + default: 1 format: uint32 - maximum: 128 - origin: - x-field-uid: 3 - description: |- - The origin to match. If the origin is missing then all origins will match. - type: string - x-enum: - igp: - x-field-uid: 1 - egp: - x-field-uid: 2 - incomplete: - x-field-uid: 3 - enum: - - igp - - egp - - incomplete - path_id: - x-field-uid: 4 - description: |- - The path id to match. If the path id is missing then all path ids will match. + maximum: 1 + count: type: integer + x-field-uid: 3 + default: 1 format: uint32 - BgpPrefix.Ipv6Unicast.Filter: + maximum: 1 + Pattern.Flow.Ipv4.Reserved.MetricTag: + description: |- + Metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. type: object + required: + - name properties: - addresses: + name: description: |- - The addresses to match. If the addresses property is missing or empty then all addresses will match. - type: array - items: - type: string - format: ipv6 + Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field + type: string + pattern: ^[\sa-zA-Z0-9-_()><\[\]]+$ x-field-uid: 1 - prefix_length: + offset: + description: |- + Offset in bits relative to start of corresponding header field + type: integer + format: uint32 + default: 0 + maximum: 0 x-field-uid: 2 + length: description: |- - The prefix length to match. If the prefix length is missing then all prefix lengths will match. + Number of bits to track for metrics starting from configured offset of corresponding header field type: integer format: uint32 - maximum: 128 - origin: + default: 1 + minimum: 1 + maximum: 1 x-field-uid: 3 - description: |- - The origin to match. If the origin is missing then all origins will match. + Pattern.Flow.Ipv4.Reserved: + description: |- + Reserved flag. + type: object + properties: + choice: type: string x-enum: - igp: - x-field-uid: 1 - egp: + value: x-field-uid: 2 - incomplete: + values: x-field-uid: 3 + increment: + x-field-uid: 4 + decrement: + x-field-uid: 5 + default: value + x-field-uid: 1 enum: - - igp - - egp - - incomplete - path_id: - x-field-uid: 4 - description: |- - The path id to match. If the path id is missing then all path ids will match. + - value + - values + - increment + - decrement + value: type: integer + x-field-uid: 2 + default: 0 format: uint32 - BgpPrefixes.State: + maximum: 1 + values: + type: array + items: + type: integer + format: uint32 + maximum: 1 + x-field-uid: 3 + default: + - 0 + increment: + $ref: '#/components/schemas/Pattern.Flow.Ipv4.Reserved.Counter' + x-field-uid: 5 + decrement: + $ref: '#/components/schemas/Pattern.Flow.Ipv4.Reserved.Counter' + x-field-uid: 6 + metric_tags: + description: |- + One or more metric tags can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. + type: array + items: + $ref: '#/components/schemas/Pattern.Flow.Ipv4.Reserved.MetricTag' + x-field-uid: 7 + Pattern.Flow.Ipv4.DontFragment.Counter: description: |- - BGP peer prefixes. + integer counter pattern type: object properties: - bgp_peer_name: - description: |- - The name of a BGP peer. - type: string + start: + type: integer x-field-uid: 1 - ipv4_unicast_prefixes: - type: array - items: - $ref: '#/components/schemas/BgpPrefixIpv4Unicast.State' + default: 0 + format: uint32 + maximum: 1 + step: + type: integer x-field-uid: 2 - ipv6_unicast_prefixes: - type: array - items: - $ref: '#/components/schemas/BgpPrefixIpv6Unicast.State' + default: 1 + format: uint32 + maximum: 1 + count: + type: integer x-field-uid: 3 - BgpPrefixIpv4Unicast.State: + default: 1 + format: uint32 + maximum: 1 + Pattern.Flow.Ipv4.DontFragment.MetricTag: description: |- - IPv4 unicast prefix. + Metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. type: object + required: + - name properties: - ipv4_address: + name: description: |- - An IPv4 unicast address + Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field type: string + pattern: ^[\sa-zA-Z0-9-_()><\[\]]+$ x-field-uid: 1 - prefix_length: + offset: + description: |- + Offset in bits relative to start of corresponding header field + type: integer + format: uint32 + default: 0 + maximum: 0 x-field-uid: 2 + length: description: |- - The length of the prefix. + Number of bits to track for metrics starting from configured offset of corresponding header field type: integer format: uint32 - maximum: 128 - origin: + default: 1 + minimum: 1 + maximum: 1 x-field-uid: 3 - description: |- - The origin of the prefix. + Pattern.Flow.Ipv4.DontFragment: + description: |- + Dont fragment flag If the dont_fragment flag is set and fragmentation is required to route the packet then the packet is dropped. + type: object + properties: + choice: type: string x-enum: - igp: - x-field-uid: 1 - egp: + value: x-field-uid: 2 - incomplete: + values: x-field-uid: 3 + increment: + x-field-uid: 4 + decrement: + x-field-uid: 5 + default: value + x-field-uid: 1 enum: - - igp - - egp - - incomplete - path_id: - x-field-uid: 4 - description: |- - The path id. + - value + - values + - increment + - decrement + value: type: integer + x-field-uid: 2 + default: 0 format: uint32 - ipv4_next_hop: + maximum: 1 + values: + type: array + items: + type: integer + format: uint32 + maximum: 1 + x-field-uid: 3 + default: + - 0 + increment: + $ref: '#/components/schemas/Pattern.Flow.Ipv4.DontFragment.Counter' x-field-uid: 5 - description: |- - The IPv4 address of the egress interface. - type: string - format: ipv4 - ipv6_next_hop: + decrement: + $ref: '#/components/schemas/Pattern.Flow.Ipv4.DontFragment.Counter' x-field-uid: 6 + metric_tags: description: |- - The IPv6 address of the egress interface. - type: string - format: ipv6 - communities: - x-field-uid: 7 - description: |- - Optional community attributes. + One or more metric tags can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. type: array items: - $ref: '#/components/schemas/Result.BgpCommunity' - as_path: - x-field-uid: 8 - $ref: '#/components/schemas/Result.BgpAsPath' - local_preference: - x-field-uid: 9 - description: |- - The local preference is a well-known attribute and the value is used for route selection. The route with the highest local preference value is preferred. + $ref: '#/components/schemas/Pattern.Flow.Ipv4.DontFragment.MetricTag' + x-field-uid: 7 + Pattern.Flow.Ipv4.MoreFragments.Counter: + description: |- + integer counter pattern + type: object + properties: + start: type: integer + x-field-uid: 1 + default: 0 format: uint32 - multi_exit_discriminator: - x-field-uid: 10 - description: |- - The multi exit discriminator (MED) is an optional non-transitive attribute and the value is used for route selection. The route with the lowest MED value is preferred. + maximum: 1 + step: type: integer + x-field-uid: 2 + default: 1 format: uint32 - BgpPrefixIpv6Unicast.State: + maximum: 1 + count: + type: integer + x-field-uid: 3 + default: 1 + format: uint32 + maximum: 1 + Pattern.Flow.Ipv4.MoreFragments.MetricTag: description: |- - IPv6 unicast prefix. + Metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. type: object + required: + - name properties: - ipv6_address: + name: description: |- - An IPv6 unicast address + Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field type: string + pattern: ^[\sa-zA-Z0-9-_()><\[\]]+$ x-field-uid: 1 - prefix_length: + offset: + description: |- + Offset in bits relative to start of corresponding header field + type: integer + format: uint32 + default: 0 + maximum: 0 x-field-uid: 2 + length: description: |- - The length of the prefix. + Number of bits to track for metrics starting from configured offset of corresponding header field type: integer format: uint32 - maximum: 128 - origin: + default: 1 + minimum: 1 + maximum: 1 x-field-uid: 3 - description: |- - The origin of the prefix. + Pattern.Flow.Ipv4.MoreFragments: + description: |- + More fragments flag + type: object + properties: + choice: type: string x-enum: - igp: - x-field-uid: 1 - egp: + value: x-field-uid: 2 - incomplete: + values: x-field-uid: 3 + increment: + x-field-uid: 4 + decrement: + x-field-uid: 5 + default: value + x-field-uid: 1 enum: - - igp - - egp - - incomplete - path_id: - x-field-uid: 4 - description: |- - The path id. + - value + - values + - increment + - decrement + value: type: integer + x-field-uid: 2 + default: 0 format: uint32 - ipv4_next_hop: + maximum: 1 + values: + type: array + items: + type: integer + format: uint32 + maximum: 1 + x-field-uid: 3 + default: + - 0 + increment: + $ref: '#/components/schemas/Pattern.Flow.Ipv4.MoreFragments.Counter' x-field-uid: 5 - description: |- - The IPv4 address of the egress interface. - type: string - format: ipv4 - ipv6_next_hop: + decrement: + $ref: '#/components/schemas/Pattern.Flow.Ipv4.MoreFragments.Counter' x-field-uid: 6 + metric_tags: description: |- - The IPv6 address of the egress interface. - type: string - format: ipv6 - communities: - x-field-uid: 7 - description: |- - Optional community attributes. + One or more metric tags can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. type: array items: - $ref: '#/components/schemas/Result.BgpCommunity' - as_path: - x-field-uid: 8 - $ref: '#/components/schemas/Result.BgpAsPath' - local_preference: - x-field-uid: 9 - description: |- - The local preference is a well-known attribute and the value is used for route selection. The route with the highest local preference value is preferred. + $ref: '#/components/schemas/Pattern.Flow.Ipv4.MoreFragments.MetricTag' + x-field-uid: 7 + Pattern.Flow.Ipv4.FragmentOffset.Counter: + description: |- + integer counter pattern + type: object + properties: + start: type: integer + x-field-uid: 1 + default: 0 format: uint32 - multi_exit_discriminator: - x-field-uid: 10 - description: |- - The multi exit discriminator (MED) is an optional non-transitive attribute and the value is used for route selection. The route with the lowest MED value is preferred. + maximum: 31 + step: type: integer + x-field-uid: 2 + default: 1 format: uint32 - Result.BgpCommunity: + maximum: 31 + count: + type: integer + x-field-uid: 3 + default: 1 + format: uint32 + maximum: 31 + Pattern.Flow.Ipv4.FragmentOffset.MetricTag: description: |- - BGP communities provide additional capability for tagging routes and for modifying BGP routing policy on upstream and downstream routers. BGP community is a 32-bit number which is broken into 16-bit AS number and a 16-bit custom value. + Metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. type: object + required: + - name properties: - type: + name: description: |- - The type of community AS number. If community type is manual_as_number then as_number and as_custom will be available. + Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field type: string + pattern: ^[\sa-zA-Z0-9-_()><\[\]]+$ x-field-uid: 1 - x-enum: - manual_as_number: - x-field-uid: 1 - no_export: - x-field-uid: 2 - no_advertised: - x-field-uid: 3 - no_export_subconfed: - x-field-uid: 4 - llgr_stale: - x-field-uid: 5 - no_llgr: - x-field-uid: 6 - enum: - - manual_as_number - - no_export - - no_advertised - - no_export_subconfed - - llgr_stale - - no_llgr - as_number: + offset: description: |- - First two octets of 32 bit community AS number. + Offset in bits relative to start of corresponding header field type: integer format: uint32 - maximum: 65535 + default: 0 + maximum: 4 x-field-uid: 2 - as_custom: - description: "Last two octets of the community value. " + length: + description: |- + Number of bits to track for metrics starting from configured offset of corresponding header field type: integer format: uint32 - maximum: 65535 + default: 5 + minimum: 1 + maximum: 5 x-field-uid: 3 - Result.BgpAsPath: - description: |- - This attribute identifies the autonomous systems through which routing information carried in this UPDATE message has passed. - type: object - properties: - segments: - description: "AS Path segments present in the received AS Path attribute. " - type: array - items: - $ref: '#/components/schemas/Result.BgpAsPathSegment' - x-field-uid: 1 - Result.BgpAsPathSegment: + Pattern.Flow.Ipv4.FragmentOffset: description: |- - Configuration for a single BGP AS path segment + Fragment offset type: object properties: - type: - description: |- - AS sequence is the most common type of AS_PATH, it contains the list of ASNs starting with the most recent ASN being added read from left to right. - The other three AS_PATH types are used for Confederations - AS_SET is the type of AS_PATH attribute that summarizes routes using using the aggregate-address command, allowing AS_PATHs to be summarized in the update as well. - AS_CONFED_SEQ gives the list of ASNs in the path starting with the most recent ASN to be added reading left to right - AS_CONFED_SET will allow summarization of multiple AS PATHs to be sent in BGP Updates. + choice: type: string - x-field-uid: 1 x-enum: - as_seq: - x-field-uid: 1 - as_set: + value: x-field-uid: 2 - as_confed_seq: + values: x-field-uid: 3 - as_confed_set: + increment: x-field-uid: 4 + decrement: + x-field-uid: 5 + default: value + x-field-uid: 1 enum: - - as_seq - - as_set - - as_confed_seq - - as_confed_set - as_numbers: - description: |- - The AS numbers in this AS path segment. + - value + - values + - increment + - decrement + value: + type: integer + x-field-uid: 2 + default: 0 + format: uint32 + maximum: 31 + values: type: array items: - type: integer - format: uint32 - x-field-uid: 2 - IsisLsps.State.Request: - description: |- - The request to retrieve ISIS Link State PDU (LSP) information learned by the router. - type: object - properties: - isis_router_names: - description: | - The names of ISIS routers for which learned information is requested. An empty list will return results for all ISIS routers. - - x-constraint: - - /components/schemas/Device.IsisRouter/properties/name - - - x-constraint: - - /components/schemas/Device.IsisRouter/properties/name + type: integer + format: uint32 + maximum: 31 + x-field-uid: 3 + default: + - 0 + increment: + $ref: '#/components/schemas/Pattern.Flow.Ipv4.FragmentOffset.Counter' + x-field-uid: 5 + decrement: + $ref: '#/components/schemas/Pattern.Flow.Ipv4.FragmentOffset.Counter' + x-field-uid: 6 + metric_tags: + description: |- + One or more metric tags can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. type: array items: - type: string - x-constraint: - - /components/schemas/Device.IsisRouter/properties/name - x-field-uid: 1 - IsisLsps.State: + $ref: '#/components/schemas/Pattern.Flow.Ipv4.FragmentOffset.MetricTag' + x-field-uid: 7 + Pattern.Flow.Ipv4.TimeToLive.Counter: description: |- - The result of ISIS LSP information that are retrieved. + integer counter pattern type: object properties: - isis_router_name: - description: |- - The name of the ISIS Router. - type: string + start: + type: integer x-field-uid: 1 - lsps: - description: |- - One or more LSPs that are learned by this ISIS router. - type: array - items: - $ref: '#/components/schemas/IsisLsp.State' + default: 64 + format: uint32 + maximum: 255 + step: + type: integer x-field-uid: 2 - IsisLsp.State: + default: 1 + format: uint32 + maximum: 255 + count: + type: integer + x-field-uid: 3 + default: 1 + format: uint32 + maximum: 255 + Pattern.Flow.Ipv4.TimeToLive.MetricTag: description: |- - ISIS LSP. + Metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. type: object required: - - lsp_id + - name properties: - lsp_id: + name: description: |- - LSP ID in the format, e.g. '640000000001-00-00'. LSP ID consists of the System ID of a neighbor, the Pseudonode ID, and the LSP number. The last two bytes represent Pseudonode ID and LSP number respectively. A pseudonode is a logical representation of the LAN which is generated by a Designated Intermediate System (DIS) on a LAN segment. If one LSP exceeds the maximum LSP size then it is sent in another LSP with the LSP number incremented by one. A router's learned LSP gets refreshed by 'remaining_lifetime'. Then the sequence number is incremented by 1. + Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field type: string + pattern: ^[\sa-zA-Z0-9-_()><\[\]]+$ x-field-uid: 1 - pdu_type: - description: |- - Link State PDU type. - type: string - x-field-uid: 2 - x-enum: - level_1: - x-field-uid: 1 - level_2: - x-field-uid: 2 - enum: - - level_1 - - level_2 - remaining_lifetime: - description: |- - Remaining lifetime in seconds before LSP expires. - type: integer - format: uint32 - x-field-uid: 3 - sequence_number: - description: |- - Sequence number of the LSP. - type: integer - format: uint64 - x-field-uid: 4 - pdu_length: + offset: description: |- - Total length of the LSP. + Offset in bits relative to start of corresponding header field type: integer format: uint32 - maximum: 65535 - x-field-uid: 5 - flags: + default: 0 + maximum: 7 + x-field-uid: 2 + length: description: |- - LSP Type-Block flags. - $ref: '#/components/schemas/IsisLsp.Flags' - x-field-uid: 6 - is_type: - description: "IS Type - bits 1 and 2 indicate the type of Intermediate System.\n\ - 1 - ( i.e. bit 1 set) Level 1 Intermediate system.\n2 - Unused value.\n\ - 3 - (i.e. bits 1 and 2 set) Level 2 Intermediate system. " + Number of bits to track for metrics starting from configured offset of corresponding header field type: integer format: uint32 - maximum: 3 - x-field-uid: 7 - tlvs: - description: |- - It refers to Link State PDU State TLVs container. - $ref: '#/components/schemas/IsisLsp.Tlvs' - x-field-uid: 8 - IsisLsp.Tlvs: + default: 8 + minimum: 1 + maximum: 8 + x-field-uid: 3 + Pattern.Flow.Ipv4.TimeToLive: description: |- - This contains the list of TLVs present in one LSP. + Time to live type: object properties: - hostname_tlvs: - description: |- - Array of Hostname TLVs ( type 137) present in this LSP. - type: array - items: - $ref: '#/components/schemas/IsisLsp.Hostname' + choice: + type: string + x-enum: + value: + x-field-uid: 2 + values: + x-field-uid: 3 + increment: + x-field-uid: 4 + decrement: + x-field-uid: 5 + default: value x-field-uid: 1 - is_reachability_tlvs: - description: |- - Array of IS-Reachability TLVs (type 2) present in this LSP. - type: array - items: - $ref: '#/components/schemas/IsisLsp.IsReachabilityTlv' + enum: + - value + - values + - increment + - decrement + value: + type: integer x-field-uid: 2 - extended_is_reachability_tlvs: - description: |- - Array of Extended IS-Reachability TLVs (type 22) present in this LSP. + default: 64 + format: uint32 + maximum: 255 + values: type: array items: - $ref: '#/components/schemas/IsisLsp.ExtendedIsReachabilityTlv' + type: integer + format: uint32 + maximum: 255 x-field-uid: 3 - ipv4_internal_reachability_tlvs: - description: |- - Array of IPv4 Internal Reachability TLVs (type 128) present in this LSP. - type: array - items: - $ref: '#/components/schemas/IsisLsp.Ipv4InternalReachabilityTlv' - x-field-uid: 4 - ipv4_external_reachability_tlvs: - description: |- - Array of IPv4 External Reachability TLVs (type 130) present in this LSP. - type: array - items: - $ref: '#/components/schemas/IsisLsp.Ipv4ExternalReachabilityTlv' + default: + - 64 + increment: + $ref: '#/components/schemas/Pattern.Flow.Ipv4.TimeToLive.Counter' x-field-uid: 5 - extended_ipv4_reachability_tlvs: - description: |- - Array of IPv4 Extended Reachability TLVs (type 135) present in this LSP. - type: array - items: - $ref: '#/components/schemas/IsisLsp.ExtendedIpv4ReachabilityTlv' + decrement: + $ref: '#/components/schemas/Pattern.Flow.Ipv4.TimeToLive.Counter' x-field-uid: 6 - ipv6_reachability_tlvs: + metric_tags: description: |- - Array of IPv6 Reachability TLVs (type 236) present in this LSP. + One or more metric tags can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. type: array items: - $ref: '#/components/schemas/IsisLsp.Ipv6ReachabilityTlv' + $ref: '#/components/schemas/Pattern.Flow.Ipv4.TimeToLive.MetricTag' x-field-uid: 7 - IsisLsp.Hostname: + Pattern.Flow.Ipv4.Protocol.Counter: description: |- - It contains Hostname for the TLV 137. + integer counter pattern type: object properties: - hostname: + start: + type: integer + x-field-uid: 1 + default: 61 + format: uint32 + maximum: 255 + step: + type: integer + x-field-uid: 2 + default: 1 + format: uint32 + maximum: 255 + count: + type: integer + x-field-uid: 3 + default: 1 + format: uint32 + maximum: 255 + Pattern.Flow.Ipv4.Protocol.MetricTag: + description: |- + Metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. + type: object + required: + - name + properties: + name: description: |- - Hostname for an ISIS router. + Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field type: string + pattern: ^[\sa-zA-Z0-9-_()><\[\]]+$ x-field-uid: 1 - IsisLsp.Flags: + offset: + description: |- + Offset in bits relative to start of corresponding header field + type: integer + format: uint32 + default: 0 + maximum: 7 + x-field-uid: 2 + length: + description: |- + Number of bits to track for metrics starting from configured offset of corresponding header field + type: integer + format: uint32 + default: 8 + minimum: 1 + maximum: 8 + x-field-uid: 3 + Pattern.Flow.Ipv4.Protocol: description: |- - LSP Type flags. + Protocol, default is 61 any host internal protocol type: object properties: - partition_repair: - description: |- - When set, the originator supports partition repair. - type: boolean + choice: + type: string + x-enum: + value: + x-field-uid: 2 + values: + x-field-uid: 3 + auto: + x-field-uid: 1 + increment: + x-field-uid: 4 + decrement: + x-field-uid: 5 + default: auto x-field-uid: 1 - attached_error: - description: |- - When set, the originator is attached to another area using the referred metric. - type: boolean + enum: + - value + - values + - auto + - increment + - decrement + value: + type: integer x-field-uid: 2 - attached_expense: - description: |- - When set, the originator is attached to another - area using the referred metric. - type: boolean + default: 61 + format: uint32 + maximum: 255 + values: + type: array + items: + type: integer + format: uint32 + maximum: 255 x-field-uid: 3 - attached_delay: + default: + - 61 + auto: description: |- - Delay Metric - when set, the originator is attached to another - area using the referred metric. - type: boolean + The OTG implementation can provide a system generated + value for this property. If the OTG is unable to generate a value + the default value must be used. + type: integer x-field-uid: 4 - attached_default: - description: |- - Default Metric - when set, the originator is attached to another - area using the referred metric. - type: boolean - x-field-uid: 5 - overload: - description: |- - Overload bit - when set, the originator is overloaded, and must - be avoided in path calculation. - type: boolean + default: 61 + format: uint32 + maximum: 255 + increment: + $ref: '#/components/schemas/Pattern.Flow.Ipv4.Protocol.Counter' x-field-uid: 6 - IsisLsp.IsReachabilityTlv: - description: |- - This container describes list of ISIS neighbors and attributes in IS-Reachability TLV (type 2). - type: object - properties: - neighbors: + decrement: + $ref: '#/components/schemas/Pattern.Flow.Ipv4.Protocol.Counter' + x-field-uid: 7 + metric_tags: description: |- - This container describes Intermediate System (IS) neighbors. + One or more metric tags can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. type: array items: - $ref: '#/components/schemas/IsisLsp.neighbor' - x-field-uid: 1 - IsisLsp.ExtendedIsReachabilityTlv: + $ref: '#/components/schemas/Pattern.Flow.Ipv4.Protocol.MetricTag' + x-field-uid: 8 + Pattern.Flow.Ipv4.HeaderChecksum: description: |- - This is list of ISIS neighbors and attributes in Extended-IS-Reachability TLV (type 22). + Header checksum type: object properties: - neighbors: + choice: description: |- - This container describes IS neighbors. - type: array - items: - $ref: '#/components/schemas/IsisLsp.neighbor' + The type of checksum + type: string + x-enum: + generated: + x-field-uid: 1 + custom: + x-field-uid: 2 + default: generated x-field-uid: 1 - IsisLsp.neighbor: - description: |- - This contains IS neighbors. - type: object - properties: - system_id: + enum: + - generated + - custom + generated: description: |- - The System ID for this emulated ISIS router, e.g. "640100010000". + A system generated checksum value type: string - format: hex - x-field-uid: 1 - IsisLsp.Ipv4InternalReachabilityTlv: - description: |- - This container defines list of IPv4 internal reachability information in one IPv4 internal reachability TLV. - This is advertised when the origin-type is set 'internal' in route range configurations. - type: object - properties: - prefixes: + x-enum: + good: + x-field-uid: 1 + bad: + x-field-uid: 2 + default: good + x-field-uid: 2 + enum: + - good + - bad + custom: description: |- - Describes list of IPv4 prefixes in this TLV. - type: array - items: - $ref: '#/components/schemas/IsisLsp.V4Prefix' - x-field-uid: 1 - IsisLsp.Ipv4ExternalReachabilityTlv: + A custom checksum value + type: integer + format: uint32 + maximum: 65535 + x-field-uid: 3 + Pattern.Flow.Ipv4.Src.Counter: description: |- - This container defines list of IPv4 external reachability information in one IPv4 external reachability TLV. - This is advertised when the origin-type is set 'external' in route range configurations. + ipv4 counter pattern type: object properties: - prefixes: - description: |- - Describes list of IPv4 prefixes in this TLV.. - type: array - items: - $ref: '#/components/schemas/IsisLsp.V4Prefix' + start: + type: string x-field-uid: 1 - IsisLsp.V4Prefix: + default: 0.0.0.0 + format: ipv4 + step: + type: string + x-field-uid: 2 + default: 0.0.0.1 + format: ipv4 + count: + type: integer + x-field-uid: 3 + default: 1 + format: uint32 + Pattern.Flow.Ipv4.Src.MetricTag: description: |- - This group defines attributes of an IPv4 standard prefix. + Metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. type: object + required: + - name properties: - ipv4_address: + name: description: |- - An IPv4 unicast prefix reachable via the originator of this LSP. + Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field type: string + pattern: ^[\sa-zA-Z0-9-_()><\[\]]+$ x-field-uid: 1 - prefix_length: + offset: description: |- - The length of the IPv4 prefix. + Offset in bits relative to start of corresponding header field type: integer format: uint32 - maximum: 32 + default: 0 + maximum: 31 x-field-uid: 2 - redistribution_type: - description: "Up (0)-used when a prefix is initially advertised within the\ - \ ISIS L3 hierarchy, \n and for all other prefixes in L1 and L2 LSPs.\ - \ (default) \nDown (1)-used when an L1/L2 router advertises L2 prefixes\ - \ in L1 LSPs. \nThe prefixes are being advertised from a higher level\ - \ (L2) down to a lower level (L1). " - type: string - x-field-uid: 3 - x-enum: - up: - x-field-uid: 1 - down: - x-field-uid: 2 - enum: - - up - - down - default_metric: + length: description: |- - ISIS default metric value. + Number of bits to track for metrics starting from configured offset of corresponding header field type: integer format: uint32 - x-field-uid: 4 - origin_type: - description: "The origin of the advertised route-internal or external to\ - \ the ISIS area. Options include the following: \n Internal-for intra-area\ - \ routes, through Level 1 LSPs. \n External-for inter-area routes redistributed\ - \ within L1, through Level\n1 LSPs." + default: 32 + minimum: 1 + maximum: 32 + x-field-uid: 3 + Pattern.Flow.Ipv4.Src: + description: |- + Source address + type: object + properties: + choice: type: string - x-field-uid: 5 x-enum: - internal: - x-field-uid: 1 - external: + value: x-field-uid: 2 + values: + x-field-uid: 3 + increment: + x-field-uid: 4 + decrement: + x-field-uid: 5 + default: value + x-field-uid: 1 enum: - - internal - - external - IsisLsp.ExtendedIpv4ReachabilityTlv: - description: |- - This container defines list of IPv4 extended reachability information in one Extended IPv4 External Reachability TLV. - It is advertised when the 'wide metric' is enabled. - type: object - properties: - prefixes: + - value + - values + - increment + - decrement + value: + type: string + x-field-uid: 2 + default: 0.0.0.0 + format: ipv4 + values: + type: array + items: + type: string + format: ipv4 + x-field-uid: 3 + default: + - 0.0.0.0 + increment: + $ref: '#/components/schemas/Pattern.Flow.Ipv4.Src.Counter' + x-field-uid: 5 + decrement: + $ref: '#/components/schemas/Pattern.Flow.Ipv4.Src.Counter' + x-field-uid: 6 + metric_tags: description: |- - IPv4 prefix contained within extended reachability TLVs. + One or more metric tags can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. type: array items: - $ref: '#/components/schemas/IsisLsp.ExtendedV4Prefix' + $ref: '#/components/schemas/Pattern.Flow.Ipv4.Src.MetricTag' + x-field-uid: 7 + Pattern.Flow.Ipv4.Dst.Counter: + description: |- + ipv4 counter pattern + type: object + properties: + start: + type: string x-field-uid: 1 - IsisLsp.ExtendedV4Prefix: + default: 0.0.0.0 + format: ipv4 + step: + type: string + x-field-uid: 2 + default: 0.0.0.1 + format: ipv4 + count: + type: integer + x-field-uid: 3 + default: 1 + format: uint32 + Pattern.Flow.Ipv4.Dst.MetricTag: description: |- - This group defines attributes of an IPv4 standard prefix. + Metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. type: object + required: + - name properties: - ipv4_address: + name: description: |- - An IPv4 unicast prefix reachable via the originator of this LSP. + Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field type: string - format: ipv4 + pattern: ^[\sa-zA-Z0-9-_()><\[\]]+$ x-field-uid: 1 - prefix_length: + offset: description: |- - The length of the IPv4 prefix. + Offset in bits relative to start of corresponding header field type: integer format: uint32 - maximum: 32 + default: 0 + maximum: 31 x-field-uid: 2 - metric: + length: description: |- - ISIS wide metric. + Number of bits to track for metrics starting from configured offset of corresponding header field type: integer format: uint32 + default: 32 + minimum: 1 + maximum: 32 x-field-uid: 3 - redistribution_type: - description: "Up (0)-used when a prefix is initially advertised within the\ - \ ISIS L3 hierarchy, \n and for all other prefixes in L1 and L2 LSPs.\ - \ (default) \nDown (1)-used when an L1/L2 router advertises L2 prefixes\ - \ in L1 LSPs. \nThe prefixes are being advertised from a higher level\ - \ (L2) down to a lower level (L1). " + Pattern.Flow.Ipv4.Dst: + description: |- + Destination address + type: object + properties: + choice: type: string - x-field-uid: 4 x-enum: - up: - x-field-uid: 1 - down: + value: x-field-uid: 2 + values: + x-field-uid: 3 + increment: + x-field-uid: 4 + decrement: + x-field-uid: 5 + default: value + x-field-uid: 1 enum: - - up - - down - prefix_attributes: - $ref: '#/components/schemas/IsisLsp.PrefixAttributes' + - value + - values + - increment + - decrement + value: + type: string + x-field-uid: 2 + default: 0.0.0.0 + format: ipv4 + values: + type: array + items: + type: string + format: ipv4 + x-field-uid: 3 + default: + - 0.0.0.0 + increment: + $ref: '#/components/schemas/Pattern.Flow.Ipv4.Dst.Counter' x-field-uid: 5 - IsisLsp.Ipv6ReachabilityTlv: - description: |- - It defines list of IPv6 extended reachability information in one IPv6 Reachability TLV. - type: object - properties: - prefixes: + decrement: + $ref: '#/components/schemas/Pattern.Flow.Ipv4.Dst.Counter' + x-field-uid: 6 + metric_tags: description: |- - IPv6 prefix contained within reachability TLVs. + One or more metric tags can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. type: array items: - $ref: '#/components/schemas/IsisLsp.V6Prefix' - x-field-uid: 1 - IsisLsp.V6Prefix: + $ref: '#/components/schemas/Pattern.Flow.Ipv4.Dst.MetricTag' + x-field-uid: 7 + Pattern.Flow.Ipv4.Priority.Raw.Counter: description: |- - It defines attributes of an IPv6 standard prefix. + integer counter pattern type: object properties: - ipv6_address: - description: |- - An IPv6 unicast prefix reachable via the originator of this LSP. - type: string - format: ipv6 - x-field-uid: 1 - prefix_length: - description: |- - The length of the IPv6 prefix. + start: type: integer + x-field-uid: 1 + default: 0 format: uint32 - maximum: 128 - x-field-uid: 2 - metric: - description: |- - ISIS wide metric. + maximum: 255 + step: type: integer + x-field-uid: 2 + default: 1 format: uint32 + maximum: 255 + count: + type: integer x-field-uid: 3 - redistribution_type: - description: "Up (0)-used when a prefix is initially advertised within the\ - \ ISIS L3 hierarchy, \n and for all other prefixes in L1 and L2 LSPs.\ - \ (default) \nDown (1)-used when an L1/L2 router advertises L2 prefixes\ - \ in L1 LSPs. \nThe prefixes are being advertised from a higher level\ - \ (L2) down to a lower level (L1). " - type: string - x-field-uid: 4 - x-enum: - up: - x-field-uid: 1 - down: - x-field-uid: 2 - enum: - - up - - down - origin_type: - description: "The origin of the advertised route-internal or external to\ - \ the ISIS area. Options include the following: \n Internal-for intra-area\ - \ routes, through Level 1 LSPs. \n External-for inter-area routes redistributed\ - \ within L1, through Level\n1 LSPs." - type: string - x-field-uid: 5 - x-enum: - internal: - x-field-uid: 1 - external: - x-field-uid: 2 - enum: - - internal - - external - prefix_attributes: - $ref: '#/components/schemas/IsisLsp.PrefixAttributes' - x-field-uid: 6 - IsisLsp.PrefixAttributes: + default: 1 + format: uint32 + maximum: 255 + Pattern.Flow.Ipv4.Priority.Raw.MetricTag: description: |- - This contains the properties of ISIS Prefix attributes for the extended IPv4 and IPv6 reachability. https://www.rfc-editor.org/rfc/rfc7794.html + Metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. type: object + required: + - name properties: - x_flag: + name: description: |- - External Prefix Flag (Bit 0) - type: boolean + Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field + type: string + pattern: ^[\sa-zA-Z0-9-_()><\[\]]+$ x-field-uid: 1 - r_flag: + offset: description: |- - Re-advertisement Flag (Bit 1) - type: boolean + Offset in bits relative to start of corresponding header field + type: integer + format: uint32 + default: 0 + maximum: 7 x-field-uid: 2 - n_flag: + length: description: |- - Node Flag (Bit 2) - type: boolean + Number of bits to track for metrics starting from configured offset of corresponding header field + type: integer + format: uint32 + default: 8 + minimum: 1 + maximum: 8 x-field-uid: 3 - LldpNeighbors.State.Request: + Pattern.Flow.Ipv4.Priority.Raw: description: |- - The request to retrieve LLDP neighbor information for a given instance. + Raw priority type: object properties: - lldp_names: - description: | - The names of LLDP instances for which neighbor information will be retrieved. If no names are specified then the results will contain neighbor information for all configured LLDP instances. - - x-constraint: - - /components/schemas/Lldp/properties/name - - - x-constraint: - - /components/schemas/Lldp/properties/name + choice: + type: string + x-enum: + value: + x-field-uid: 2 + values: + x-field-uid: 3 + increment: + x-field-uid: 4 + decrement: + x-field-uid: 5 + default: value + x-field-uid: 1 + enum: + - value + - values + - increment + - decrement + value: + type: integer + x-field-uid: 2 + default: 0 + format: uint32 + maximum: 255 + values: type: array items: - type: string - x-constraint: - - /components/schemas/Lldp/properties/name - x-field-uid: 1 - neighbor_id_filters: + type: integer + format: uint32 + maximum: 255 + x-field-uid: 3 + default: + - 0 + increment: + $ref: '#/components/schemas/Pattern.Flow.Ipv4.Priority.Raw.Counter' + x-field-uid: 5 + decrement: + $ref: '#/components/schemas/Pattern.Flow.Ipv4.Priority.Raw.Counter' + x-field-uid: 6 + metric_tags: description: |- - Specify the neighbors for which information will be returned. If empty or missing then information for all neighbors will be returned. + One or more metric tags can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. type: array items: - type: string + $ref: '#/components/schemas/Pattern.Flow.Ipv4.Priority.Raw.MetricTag' + x-field-uid: 7 + Pattern.Flow.Ipv4.Dscp.Phb.Counter: + description: |- + integer counter pattern + type: object + properties: + start: + type: integer + x-field-uid: 1 + default: 0 + format: uint32 + maximum: 63 + step: + type: integer x-field-uid: 2 - LldpNeighbors.State: + default: 1 + format: uint32 + maximum: 63 + count: + type: integer + x-field-uid: 3 + default: 1 + format: uint32 + maximum: 63 + x-constants: + default: 0 + cs1: 8 + cs2: 16 + cs3: 24 + cs4: 32 + cs5: 40 + cs6: 48 + cs7: 56 + af11: 10 + af12: 12 + af13: 14 + af21: 18 + af22: 20 + af23: 22 + af31: 26 + af32: 28 + af33: 30 + af41: 34 + af42: 36 + af43: 38 + ef46: 46 + Pattern.Flow.Ipv4.Dscp.Phb.MetricTag: description: |- - LLDP neighbor information. + Metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. type: object + required: + - name properties: - lldp_name: + name: description: |- - The name of the LLDP instance. + Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field type: string + pattern: ^[\sa-zA-Z0-9-_()><\[\]]+$ x-field-uid: 1 - system_name: + offset: description: |- - The system name field shall contain an alpha-numeric string that indicates the system's administratively assigned name. The system name should be the system's fully qualified domain name. If implementations support IETF RFC 3418, the sysName object should be used for this field. - type: string + Offset in bits relative to start of corresponding header field + type: integer + format: uint32 + default: 0 + maximum: 5 x-field-uid: 2 - system_description: + length: description: |- - The system description field shall contain an alpha-numeric string that is the textual description of the network entity. The system description should include the full name and version identification of the system's hardware type, software operating system, and networking software. If implementations support IETF RFC 3418, the sysDescr object should be used for this field. - type: string + Number of bits to track for metrics starting from configured offset of corresponding header field + type: integer + format: uint32 + default: 6 + minimum: 1 + maximum: 6 x-field-uid: 3 - chassis_id: - description: |- - The Chassis ID is a mandatory TLV which identifies the chassis component of the endpoint identifier associated with the transmitting LLDP agent. - type: string - x-field-uid: 4 - chassis_id_type: - description: |- - This field identifies the format and source of the chassis identifier string. It is an enumerator defined by the LldpChassisIdSubtype object from IEEE 802.1AB MIB. + Pattern.Flow.Ipv4.Dscp.Phb: + description: |- + Per hop behavior + type: object + properties: + choice: type: string x-enum: - port_component: - x-field-uid: 1 - network_address: + value: x-field-uid: 2 - chassis_component: + values: x-field-uid: 3 - mac_address: + increment: x-field-uid: 4 - interface_name: + decrement: x-field-uid: 5 - local: - x-field-uid: 6 - interface_alias: - x-field-uid: 7 - x-field-uid: 5 + default: value + x-field-uid: 1 enum: - - port_component - - network_address - - chassis_component - - mac_address - - interface_name - - local - - interface_alias - neighbor_id: - description: |- - System generated identifier for the neighbor on the LLDP instance. - type: string + - value + - values + - increment + - decrement + value: + type: integer + x-field-uid: 2 + default: 0 + format: uint32 + maximum: 63 + values: + type: array + items: + type: integer + format: uint32 + maximum: 63 + x-field-uid: 3 + default: + - 0 + increment: + $ref: '#/components/schemas/Pattern.Flow.Ipv4.Dscp.Phb.Counter' + x-field-uid: 5 + decrement: + $ref: '#/components/schemas/Pattern.Flow.Ipv4.Dscp.Phb.Counter' x-field-uid: 6 - age: + metric_tags: description: |- - Age since discovery in seconds. + One or more metric tags can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. + type: array + items: + $ref: '#/components/schemas/Pattern.Flow.Ipv4.Dscp.Phb.MetricTag' + x-field-uid: 7 + x-constants: + default: 0 + cs1: 8 + cs2: 16 + cs3: 24 + cs4: 32 + cs5: 40 + cs6: 48 + cs7: 56 + af11: 10 + af12: 12 + af13: 14 + af21: 18 + af22: 20 + af23: 22 + af31: 26 + af32: 28 + af33: 30 + af41: 34 + af42: 36 + af43: 38 + ef46: 46 + Pattern.Flow.Ipv4.Dscp.Ecn.Counter: + description: |- + integer counter pattern + type: object + properties: + start: type: integer + x-field-uid: 1 + default: 0 format: uint32 - x-field-uid: 7 - last_update: - description: |- - Seconds since last update received. + maximum: 3 + step: type: integer + x-field-uid: 2 + default: 1 format: uint32 - x-field-uid: 8 - ttl: - description: |- - The time-to-live (TTL) in seconds is a mandatory TLV which indicates how long information from the neighbor should be considered valid. + maximum: 3 + count: type: integer + x-field-uid: 3 + default: 1 format: uint32 - x-field-uid: 9 - port_id: + maximum: 3 + x-constants: + non_capable: 0 + capable_transport_0: 1 + capable_transport_1: 2 + congestion_encountered: 3 + Pattern.Flow.Ipv4.Dscp.Ecn.MetricTag: + description: |- + Metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. + type: object + required: + - name + properties: + name: description: |- - The Port ID is a mandatory TLV which identifies the port component of the endpoint identifier associated with the transmitting LLDP agent. If the specified port is an IEEE 802.3 Repeater port, then this TLV is optional. + Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field type: string - x-field-uid: 10 - port_id_type: + pattern: ^[\sa-zA-Z0-9-_()><\[\]]+$ + x-field-uid: 1 + offset: description: |- - This field identifies the format and source of the port identifier string. It is an enumerator defined by the PtopoPortIdType object from RFC2922. + Offset in bits relative to start of corresponding header field + type: integer + format: uint32 + default: 0 + maximum: 1 + x-field-uid: 2 + length: + description: |- + Number of bits to track for metrics starting from configured offset of corresponding header field + type: integer + format: uint32 + default: 2 + minimum: 1 + maximum: 2 + x-field-uid: 3 + Pattern.Flow.Ipv4.Dscp.Ecn: + description: |- + Explicit congestion notification + type: object + properties: + choice: type: string x-enum: - port_component: - x-field-uid: 1 - network_address: + value: x-field-uid: 2 - agent_circuit_id: + values: x-field-uid: 3 - mac_address: + increment: x-field-uid: 4 - interface_name: + decrement: x-field-uid: 5 - local: - x-field-uid: 6 - interface_alias: - x-field-uid: 7 - x-field-uid: 11 + default: value + x-field-uid: 1 enum: - - port_component - - network_address - - agent_circuit_id - - mac_address - - interface_name - - local - - interface_alias - port_description: - description: |- - The binary string containing the actual port identifier for the port which this LLDP PDU was transmitted. The source and format of this field is defined by PtopoPortId from RFC2922. - type: string - x-field-uid: 12 - management_address: - description: |- - The Management Address is a mandatory TLV which identifies a network address associated with the local LLDP agent, which can be used to reach the agent on the port identified in the Port ID TLV. - type: string - x-field-uid: 13 - management_address_type: - description: |- - The enumerated value for the network address type identified in this TLV. This enumeration is defined in the 'Assigned Numbers' RFC [RFC3232] and the ianaAddressFamilyNumbers object. - type: string - x-field-uid: 14 - custom_tlvs: + - value + - values + - increment + - decrement + value: + type: integer + x-field-uid: 2 + default: 0 + format: uint32 + maximum: 3 + values: type: array items: - $ref: '#/components/schemas/LldpCustomTLV.State' - x-field-uid: 15 - capabilities: + type: integer + format: uint32 + maximum: 3 + x-field-uid: 3 + default: + - 0 + increment: + $ref: '#/components/schemas/Pattern.Flow.Ipv4.Dscp.Ecn.Counter' + x-field-uid: 5 + decrement: + $ref: '#/components/schemas/Pattern.Flow.Ipv4.Dscp.Ecn.Counter' + x-field-uid: 6 + metric_tags: + description: |- + One or more metric tags can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. type: array items: - $ref: '#/components/schemas/LldpCapability.State' - x-field-uid: 16 - LldpCustomTLV.State: + $ref: '#/components/schemas/Pattern.Flow.Ipv4.Dscp.Ecn.MetricTag' + x-field-uid: 7 + x-constants: + non_capable: 0 + capable_transport_0: 1 + capable_transport_1: 2 + congestion_encountered: 3 + Pattern.Flow.Ipv4.Tos.Precedence.Counter: description: |- - Custom TLV received from a neighbor.Custom TLVs are organization specific TLVs advertised with TLV type 127. + integer counter pattern type: object properties: - custom_type: - description: |- - The integer value identifying the type of information contained in the value field. + start: type: integer - format: uint32 x-field-uid: 1 - oui: + default: 0 + format: uint32 + maximum: 7 + step: + type: integer + x-field-uid: 2 + default: 1 + format: uint32 + maximum: 7 + count: + type: integer + x-field-uid: 3 + default: 1 + format: uint32 + maximum: 7 + x-constants: + routine: 0 + priority: 1 + immediate: 2 + flash: 3 + flash_override: 4 + critic_ecp: 5 + internetwork_control: 6 + network_control: 7 + Pattern.Flow.Ipv4.Tos.Precedence.MetricTag: + description: |- + Metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. + type: object + required: + - name + properties: + name: description: |- - The organizationally unique identifier field shall contain the organization's OUI as defined in Clause 9 of IEEE Std 802. The high-order octet is 0 and the low-order 3 octets are the SMI Network Management Private Enterprise Code of the Vendor in network byte order, as defined in the 'Assigned Numbers' RFC [RFC3232]. + Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field type: string + pattern: ^[\sa-zA-Z0-9-_()><\[\]]+$ + x-field-uid: 1 + offset: + description: |- + Offset in bits relative to start of corresponding header field + type: integer + format: uint32 + default: 0 + maximum: 2 x-field-uid: 2 - oui_subtype: + length: description: |- - The organizationally defined subtype field shall contain a unique subtype value assigned by the defining organization. - type: string + Number of bits to track for metrics starting from configured offset of corresponding header field + type: integer + format: uint32 + default: 3 + minimum: 1 + maximum: 3 x-field-uid: 3 - LldpCapability.State: + Pattern.Flow.Ipv4.Tos.Precedence: description: |- - LLDP system capability advertised by the neighbor + Precedence type: object properties: - capability_name: - description: |- - Name of the system capability advertised by the neighbor. Capabilities are represented in a bitmap that defines the primary functions of the system. The capabilities are defined in IEEE 802.1AB. + choice: type: string x-enum: - mac_bridge: - x-field-uid: 1 - two_port_mac_relay: + value: x-field-uid: 2 - repeater: + values: x-field-uid: 3 - docsis_cable_device: + increment: x-field-uid: 4 - s_vlan: + decrement: x-field-uid: 5 - telephone: - x-field-uid: 6 - other: - x-field-uid: 7 - router: - x-field-uid: 8 - c_vlan: - x-field-uid: 9 - station_only: - x-field-uid: 10 - wlan_access_point: - x-field-uid: 11 + default: value x-field-uid: 1 enum: - - mac_bridge - - two_port_mac_relay - - repeater - - docsis_cable_device - - s_vlan - - telephone - - other - - router - - c_vlan - - station_only - - wlan_access_point - capability_enabled: - description: |- - Indicates whether the corresponding system capability is enabled on the neighbor. - type: boolean + - value + - values + - increment + - decrement + value: + type: integer x-field-uid: 2 - RsvpLsps.State.Request: + default: 0 + format: uint32 + maximum: 7 + values: + type: array + items: + type: integer + format: uint32 + maximum: 7 + x-field-uid: 3 + default: + - 0 + increment: + $ref: '#/components/schemas/Pattern.Flow.Ipv4.Tos.Precedence.Counter' + x-field-uid: 5 + decrement: + $ref: '#/components/schemas/Pattern.Flow.Ipv4.Tos.Precedence.Counter' + x-field-uid: 6 + metric_tags: + description: |- + One or more metric tags can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. + type: array + items: + $ref: '#/components/schemas/Pattern.Flow.Ipv4.Tos.Precedence.MetricTag' + x-field-uid: 7 + x-constants: + routine: 0 + priority: 1 + immediate: 2 + flash: 3 + flash_override: 4 + critic_ecp: 5 + internetwork_control: 6 + network_control: 7 + Pattern.Flow.Ipv4.Tos.Delay.Counter: description: |- - The request to retrieve RSVP Label Switched Path (LSP) information learned by the router. + integer counter pattern type: object properties: - rsvp_router_names: - description: | - The names of RSVP-TE routers for which learned information is requested. An empty list will return results for all RSVP=TE routers. - - x-constraint: - - /components/schemas/Device.Rsvp/properties/name - - - x-constraint: - - /components/schemas/Device.Rsvp/properties/name - type: array - items: - type: string - x-constraint: - - /components/schemas/Device.Rsvp/properties/name + start: + type: integer x-field-uid: 1 - RsvpLsps.State: + default: 0 + format: uint32 + maximum: 1 + step: + type: integer + x-field-uid: 2 + default: 1 + format: uint32 + maximum: 1 + count: + type: integer + x-field-uid: 3 + default: 1 + format: uint32 + maximum: 1 + x-constants: + normal: 0 + low: 1 + Pattern.Flow.Ipv4.Tos.Delay.MetricTag: description: |- - Discovered IPv4 Point-to-Point LSPs of a RSVP-TE router. + Metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. type: object + required: + - name properties: - rsvp_router_name: + name: description: |- - The name of the RSVP-TE Router. + Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field type: string + pattern: ^[\sa-zA-Z0-9-_()><\[\]]+$ x-field-uid: 1 - ipv4_lsps: + offset: description: |- - IPv4 Point-to-Point RSVP-TE Discovered LSPs. - type: array - items: - $ref: '#/components/schemas/RsvpIPv4Lsp.State' + Offset in bits relative to start of corresponding header field + type: integer + format: uint32 + default: 0 + maximum: 0 x-field-uid: 2 - RsvpIPv4Lsp.State: + length: + description: |- + Number of bits to track for metrics starting from configured offset of corresponding header field + type: integer + format: uint32 + default: 1 + minimum: 1 + maximum: 1 + x-field-uid: 3 + Pattern.Flow.Ipv4.Tos.Delay: description: |- - IPv4 RSVP-TE Discovered LSPs. + Delay type: object properties: - source_address: - description: |- - The origin IPv4 address of RSVP session. + choice: type: string - format: ipv4 + x-enum: + value: + x-field-uid: 2 + values: + x-field-uid: 3 + increment: + x-field-uid: 4 + decrement: + x-field-uid: 5 + default: value x-field-uid: 1 - destination_address: - description: |- - The IPv4 destination address of RSVP session. - type: string - format: ipv4 + enum: + - value + - values + - increment + - decrement + value: + type: integer x-field-uid: 2 - lsp: - description: |- - It refers to the RSVP LSP properties. - $ref: '#/components/schemas/RsvpLsp.State' + default: 0 + format: uint32 + maximum: 1 + values: + type: array + items: + type: integer + format: uint32 + maximum: 1 x-field-uid: 3 - rros: + default: + - 0 + increment: + $ref: '#/components/schemas/Pattern.Flow.Ipv4.Tos.Delay.Counter' + x-field-uid: 5 + decrement: + $ref: '#/components/schemas/Pattern.Flow.Ipv4.Tos.Delay.Counter' + x-field-uid: 6 + metric_tags: description: |- - It refers to RSVP RRO objects container. - items: - $ref: '#/components/schemas/RsvpLsp.Ipv4Rro' + One or more metric tags can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. type: array - x-field-uid: 4 - eros: - description: |- - It refers to RSVP ERO objects container. items: - $ref: '#/components/schemas/RsvpLsp.Ipv4Ero' - type: array - x-field-uid: 5 - RsvpLsp.State: + $ref: '#/components/schemas/Pattern.Flow.Ipv4.Tos.Delay.MetricTag' + x-field-uid: 7 + x-constants: + normal: 0 + low: 1 + Pattern.Flow.Ipv4.Tos.Throughput.Counter: description: |- - IPv4 RSVP-TE Discovered LSPs. + integer counter pattern type: object properties: - tunnel_id: - description: |- - The tunnel id of RSVP session which acts as an identifier that remains constant over the life of the tunnel. + start: type: integer - format: uint32 x-field-uid: 1 - lsp_id: - description: |- - The lsp-id of RSVP session which acts as a differentiator for two lsps originating from the same headend, commonly used to distinguish RSVP sessions during make before break operations. - type: integer + default: 0 format: uint32 + maximum: 1 + step: + type: integer x-field-uid: 2 - session_name: + default: 1 + format: uint32 + maximum: 1 + count: + type: integer + x-field-uid: 3 + default: 1 + format: uint32 + maximum: 1 + x-constants: + normal: 0 + low: 1 + Pattern.Flow.Ipv4.Tos.Throughput.MetricTag: + description: |- + Metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. + type: object + required: + - name + properties: + name: description: |- - The value of RSVP-TE Session Name field of the Session Attribute object. + Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field type: string - x-field-uid: 3 - label_in: + pattern: ^[\sa-zA-Z0-9-_()><\[\]]+$ + x-field-uid: 1 + offset: description: |- - The label received by RSVP-TE ingress. + Offset in bits relative to start of corresponding header field type: integer format: uint32 - x-field-uid: 4 - label_out: + default: 0 + maximum: 0 + x-field-uid: 2 + length: description: |- - The label assigned by RSVP-TE egress. + Number of bits to track for metrics starting from configured offset of corresponding header field type: integer format: uint32 - x-field-uid: 5 - session_status: - description: |- - Operational state of the RSVP LSP. - type: string - x-field-uid: 6 - x-enum: - up: - x-field-uid: 1 - down: - x-field-uid: 2 - enum: - - up - - down - last_flap_reason: - description: |- - The reason for the last flap of this RSVP session. + default: 1 + minimum: 1 + maximum: 1 + x-field-uid: 3 + Pattern.Flow.Ipv4.Tos.Throughput: + description: |- + Throughput + type: object + properties: + choice: type: string - x-field-uid: 7 x-enum: - resv_tear: - x-field-uid: 1 - path_tear: + value: x-field-uid: 2 - path_timeout: + values: x-field-uid: 3 + increment: + x-field-uid: 4 + decrement: + x-field-uid: 5 + default: value + x-field-uid: 1 enum: - - resv_tear - - path_tear - - path_timeout - up_time: - description: |- - The tunnel UP time in milli seconds. If the tunnel is DOWN the UP time will be zero. + - value + - values + - increment + - decrement + value: type: integer - format: uint64 - x-field-uid: 8 - RsvpLsp.Ipv4Rro: - description: "This contains the list of Record Route Object(RRO) objects associated\ - \ with the traffic engineering tunnel. The Record Route Object(RRO) is used\ - \ in RSVP-TE to record the route traversed by the LSP. The RRO might be present\ - \ in both Path message and Resv message, the RRO stores the IP addresses\ - \ of the routers that the traffic engineering tunnel traversed and also the\ - \ label generated and distributed by the routers. The RROs in the Resv message\ - \ mirrors that of the Path message, the only difference is that the RRO in\ - \ a Resv message records the path information in the reverse direction. " - properties: - address: + x-field-uid: 2 + default: 0 + format: uint32 + maximum: 1 + values: + type: array + items: + type: integer + format: uint32 + maximum: 1 + x-field-uid: 3 + default: + - 0 + increment: + $ref: '#/components/schemas/Pattern.Flow.Ipv4.Tos.Throughput.Counter' + x-field-uid: 5 + decrement: + $ref: '#/components/schemas/Pattern.Flow.Ipv4.Tos.Throughput.Counter' + x-field-uid: 6 + metric_tags: description: |- - The IPv4 addresses of the routers that the traffic engineering tunnel traversed. - type: string - format: ipv4 - x-field-uid: 1 - reported_label: - description: "Label reported for RRO hop. When the Label_Recording flag\ - \ is set in the Session Attribute object, nodes doing route recording\ - \ should include the Label Record subobject containing the reported label. " + One or more metric tags can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. + type: array + items: + $ref: '#/components/schemas/Pattern.Flow.Ipv4.Tos.Throughput.MetricTag' + x-field-uid: 7 + x-constants: + normal: 0 + low: 1 + Pattern.Flow.Ipv4.Tos.Reliability.Counter: + description: |- + integer counter pattern + type: object + properties: + start: type: integer + x-field-uid: 1 + default: 0 format: uint32 + maximum: 1 + step: + type: integer x-field-uid: 2 - RsvpLsp.Ipv4Ero: + default: 1 + format: uint32 + maximum: 1 + count: + type: integer + x-field-uid: 3 + default: 1 + format: uint32 + maximum: 1 + x-constants: + normal: 0 + low: 1 + Pattern.Flow.Ipv4.Tos.Reliability.MetricTag: description: |- - This contains the list of sub-objects included in the Explicit Route Object(ERO) object send in the PATH message from the ingress. These sub-objects contain the intermediate hops to be traversed by the LSP while being forwarded towards the egress endpoint. + Metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. type: object + required: + - name properties: - prefix: + name: description: |- - The IPv4 prefix indicated by the ERO. Specified only when the ERO hop is an IPv4 prefix. + Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field type: string - format: ipv4 + pattern: ^[\sa-zA-Z0-9-_()><\[\]]+$ x-field-uid: 1 - asn: + offset: description: |- - The autonomous system number indicated by the ERO. Specified only when the ERO hop is an 2 or 4-byte AS number. + Offset in bits relative to start of corresponding header field type: integer format: uint32 + default: 0 + maximum: 0 x-field-uid: 2 - type: + length: description: |- - The type indicated by the ERO. - type: string + Number of bits to track for metrics starting from configured offset of corresponding header field + type: integer + format: uint32 + default: 1 + minimum: 1 + maximum: 1 x-field-uid: 3 + Pattern.Flow.Ipv4.Tos.Reliability: + description: |- + Reliability + type: object + properties: + choice: + type: string x-enum: - ipv4: - x-field-uid: 1 - ipv6: + value: x-field-uid: 2 - asn: + values: x-field-uid: 3 - asn4: + increment: x-field-uid: 4 - label: + decrement: x-field-uid: 5 - unnumbered_interface: - x-field-uid: 6 - enum: - - ipv4 - - ipv6 - - asn - - asn4 - - label - - unnumbered_interface - Capture.Request: - description: |- - The capture result request to the traffic generator. Stops the port capture on the port_name and returns the capture. - type: object - required: - - port_name - properties: - port_name: - description: | - The name of a port a capture is started on. - - x-constraint: - - /components/schemas/Port/properties/name - - - x-constraint: - - /components/schemas/Port/properties/name - type: string - x-constraint: - - /components/schemas/Port/properties/name + default: value x-field-uid: 1 - Pattern.Flow.Ethernet.Dst.Counter: + enum: + - value + - values + - increment + - decrement + value: + type: integer + x-field-uid: 2 + default: 0 + format: uint32 + maximum: 1 + values: + type: array + items: + type: integer + format: uint32 + maximum: 1 + x-field-uid: 3 + default: + - 0 + increment: + $ref: '#/components/schemas/Pattern.Flow.Ipv4.Tos.Reliability.Counter' + x-field-uid: 5 + decrement: + $ref: '#/components/schemas/Pattern.Flow.Ipv4.Tos.Reliability.Counter' + x-field-uid: 6 + metric_tags: + description: |- + One or more metric tags can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. + type: array + items: + $ref: '#/components/schemas/Pattern.Flow.Ipv4.Tos.Reliability.MetricTag' + x-field-uid: 7 + x-constants: + normal: 0 + low: 1 + Pattern.Flow.Ipv4.Tos.Monetary.Counter: description: |- - mac counter pattern + integer counter pattern type: object properties: start: - type: string + type: integer x-field-uid: 1 - default: 00:00:00:00:00:00 - format: mac + default: 0 + format: uint32 + maximum: 1 step: - type: string + type: integer x-field-uid: 2 - default: 00:00:00:00:00:01 - format: mac + default: 1 + format: uint32 + maximum: 1 count: type: integer x-field-uid: 3 default: 1 format: uint32 - Pattern.Flow.Ethernet.Dst.MetricTag: + maximum: 1 + x-constants: + normal: 0 + low: 1 + Pattern.Flow.Ipv4.Tos.Monetary.MetricTag: description: |- Metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. type: object @@ -13626,20 +17840,20 @@ components: type: integer format: uint32 default: 0 - maximum: 47 + maximum: 0 x-field-uid: 2 length: description: |- Number of bits to track for metrics starting from configured offset of corresponding header field type: integer format: uint32 - default: 48 + default: 1 minimum: 1 - maximum: 48 + maximum: 1 x-field-uid: 3 - Pattern.Flow.Ethernet.Dst: + Pattern.Flow.Ipv4.Tos.Monetary: description: |- - Destination MAC address + Monetary type: object properties: choice: @@ -13649,76 +17863,72 @@ components: x-field-uid: 2 values: x-field-uid: 3 - auto: - x-field-uid: 1 increment: x-field-uid: 4 decrement: x-field-uid: 5 - default: auto + default: value x-field-uid: 1 enum: - value - values - - auto - increment - decrement value: - type: string + type: integer x-field-uid: 2 - default: 00:00:00:00:00:00 - format: mac + default: 0 + format: uint32 + maximum: 1 values: type: array items: - type: string - format: mac + type: integer + format: uint32 + maximum: 1 x-field-uid: 3 default: - - 00:00:00:00:00:00 - auto: - description: |- - The OTG implementation can provide a system generated - value for this property. If the OTG is unable to generate a value - the default value must be used. - type: string - x-field-uid: 4 - default: 00:00:00:00:00:00 - format: mac + - 0 increment: - $ref: '#/components/schemas/Pattern.Flow.Ethernet.Dst.Counter' - x-field-uid: 6 + $ref: '#/components/schemas/Pattern.Flow.Ipv4.Tos.Monetary.Counter' + x-field-uid: 5 decrement: - $ref: '#/components/schemas/Pattern.Flow.Ethernet.Dst.Counter' - x-field-uid: 7 + $ref: '#/components/schemas/Pattern.Flow.Ipv4.Tos.Monetary.Counter' + x-field-uid: 6 metric_tags: description: |- One or more metric tags can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. type: array items: - $ref: '#/components/schemas/Pattern.Flow.Ethernet.Dst.MetricTag' - x-field-uid: 8 - Pattern.Flow.Ethernet.Src.Counter: + $ref: '#/components/schemas/Pattern.Flow.Ipv4.Tos.Monetary.MetricTag' + x-field-uid: 7 + x-constants: + normal: 0 + low: 1 + Pattern.Flow.Ipv4.Tos.Unused.Counter: description: |- - mac counter pattern + integer counter pattern type: object properties: start: - type: string + type: integer x-field-uid: 1 - default: 00:00:00:00:00:00 - format: mac + default: 0 + format: uint32 + maximum: 1 step: - type: string + type: integer x-field-uid: 2 - default: 00:00:00:00:00:01 - format: mac + default: 1 + format: uint32 + maximum: 1 count: type: integer x-field-uid: 3 default: 1 format: uint32 - Pattern.Flow.Ethernet.Src.MetricTag: + maximum: 1 + Pattern.Flow.Ipv4.Tos.Unused.MetricTag: description: |- Metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. type: object @@ -13737,20 +17947,20 @@ components: type: integer format: uint32 default: 0 - maximum: 47 + maximum: 0 x-field-uid: 2 length: description: |- Number of bits to track for metrics starting from configured offset of corresponding header field type: integer format: uint32 - default: 48 + default: 1 minimum: 1 - maximum: 48 + maximum: 1 x-field-uid: 3 - Pattern.Flow.Ethernet.Src: + Pattern.Flow.Ipv4.Tos.Unused: description: |- - Source MAC address + Unused type: object properties: choice: @@ -13772,32 +17982,34 @@ components: - increment - decrement value: - type: string + type: integer x-field-uid: 2 - default: 00:00:00:00:00:00 - format: mac + default: 0 + format: uint32 + maximum: 1 values: type: array items: - type: string - format: mac + type: integer + format: uint32 + maximum: 1 x-field-uid: 3 default: - - 00:00:00:00:00:00 + - 0 increment: - $ref: '#/components/schemas/Pattern.Flow.Ethernet.Src.Counter' + $ref: '#/components/schemas/Pattern.Flow.Ipv4.Tos.Unused.Counter' x-field-uid: 5 decrement: - $ref: '#/components/schemas/Pattern.Flow.Ethernet.Src.Counter' + $ref: '#/components/schemas/Pattern.Flow.Ipv4.Tos.Unused.Counter' x-field-uid: 6 metric_tags: description: |- One or more metric tags can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. type: array items: - $ref: '#/components/schemas/Pattern.Flow.Ethernet.Src.MetricTag' + $ref: '#/components/schemas/Pattern.Flow.Ipv4.Tos.Unused.MetricTag' x-field-uid: 7 - Pattern.Flow.Ethernet.EtherType.Counter: + Pattern.Flow.Ipv6.Version.Counter: description: |- integer counter pattern type: object @@ -13805,28 +18017,22 @@ components: start: type: integer x-field-uid: 1 - default: 65535 + default: 6 format: uint32 - maximum: 65535 + maximum: 15 step: type: integer x-field-uid: 2 default: 1 format: uint32 - maximum: 65535 + maximum: 15 count: type: integer x-field-uid: 3 default: 1 format: uint32 - maximum: 65535 - x-constants: - ipv4: 2048 - ipv6: 34525 - arp: 2054 - vlan_802_1_q: 33024 - reserved: 65535 - Pattern.Flow.Ethernet.EtherType.MetricTag: + maximum: 15 + Pattern.Flow.Ipv6.Version.MetricTag: description: |- Metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. type: object @@ -13845,20 +18051,20 @@ components: type: integer format: uint32 default: 0 - maximum: 15 + maximum: 3 x-field-uid: 2 length: description: |- Number of bits to track for metrics starting from configured offset of corresponding header field type: integer format: uint32 - default: 16 + default: 4 minimum: 1 - maximum: 16 + maximum: 4 x-field-uid: 3 - Pattern.Flow.Ethernet.EtherType: + Pattern.Flow.Ipv6.Version: description: |- - Ethernet type + Version number type: object properties: choice: @@ -13868,65 +18074,46 @@ components: x-field-uid: 2 values: x-field-uid: 3 - auto: - x-field-uid: 1 increment: x-field-uid: 4 decrement: x-field-uid: 5 - default: auto + default: value x-field-uid: 1 enum: - value - values - - auto - increment - decrement value: type: integer x-field-uid: 2 - default: 65535 + default: 6 format: uint32 - maximum: 65535 + maximum: 15 values: type: array items: type: integer format: uint32 - maximum: 65535 + maximum: 15 x-field-uid: 3 default: - - 65535 - auto: - description: |- - The OTG implementation can provide a system generated - value for this property. If the OTG is unable to generate a value - the default value must be used. - type: integer - x-field-uid: 4 - default: 65535 - format: uint32 - maximum: 65535 + - 6 increment: - $ref: '#/components/schemas/Pattern.Flow.Ethernet.EtherType.Counter' - x-field-uid: 6 + $ref: '#/components/schemas/Pattern.Flow.Ipv6.Version.Counter' + x-field-uid: 5 decrement: - $ref: '#/components/schemas/Pattern.Flow.Ethernet.EtherType.Counter' - x-field-uid: 7 + $ref: '#/components/schemas/Pattern.Flow.Ipv6.Version.Counter' + x-field-uid: 6 metric_tags: description: |- One or more metric tags can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. type: array items: - $ref: '#/components/schemas/Pattern.Flow.Ethernet.EtherType.MetricTag' - x-field-uid: 8 - x-constants: - ipv4: 2048 - ipv6: 34525 - arp: 2054 - vlan_802_1_q: 33024 - reserved: 65535 - Pattern.Flow.Ethernet.PfcQueue.Counter: + $ref: '#/components/schemas/Pattern.Flow.Ipv6.Version.MetricTag' + x-field-uid: 7 + Pattern.Flow.Ipv6.TrafficClass.Counter: description: |- integer counter pattern type: object @@ -13936,20 +18123,20 @@ components: x-field-uid: 1 default: 0 format: uint32 - maximum: 7 + maximum: 255 step: type: integer x-field-uid: 2 default: 1 format: uint32 - maximum: 7 + maximum: 255 count: type: integer x-field-uid: 3 default: 1 format: uint32 - maximum: 7 - Pattern.Flow.Ethernet.PfcQueue.MetricTag: + maximum: 255 + Pattern.Flow.Ipv6.TrafficClass.MetricTag: description: |- Metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. type: object @@ -13968,20 +18155,20 @@ components: type: integer format: uint32 default: 0 - maximum: 2 + maximum: 7 x-field-uid: 2 length: description: |- Number of bits to track for metrics starting from configured offset of corresponding header field type: integer format: uint32 - default: 3 + default: 8 minimum: 1 - maximum: 3 + maximum: 8 x-field-uid: 3 - Pattern.Flow.Ethernet.PfcQueue: + Pattern.Flow.Ipv6.TrafficClass: description: |- - Priority flow control queue + Traffic class type: object properties: choice: @@ -14007,30 +18194,30 @@ components: x-field-uid: 2 default: 0 format: uint32 - maximum: 7 + maximum: 255 values: type: array items: type: integer format: uint32 - maximum: 7 + maximum: 255 x-field-uid: 3 default: - 0 increment: - $ref: '#/components/schemas/Pattern.Flow.Ethernet.PfcQueue.Counter' + $ref: '#/components/schemas/Pattern.Flow.Ipv6.TrafficClass.Counter' x-field-uid: 5 decrement: - $ref: '#/components/schemas/Pattern.Flow.Ethernet.PfcQueue.Counter' + $ref: '#/components/schemas/Pattern.Flow.Ipv6.TrafficClass.Counter' x-field-uid: 6 metric_tags: description: |- One or more metric tags can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. type: array items: - $ref: '#/components/schemas/Pattern.Flow.Ethernet.PfcQueue.MetricTag' + $ref: '#/components/schemas/Pattern.Flow.Ipv6.TrafficClass.MetricTag' x-field-uid: 7 - Pattern.Flow.Vlan.Priority.Counter: + Pattern.Flow.Ipv6.FlowLabel.Counter: description: |- integer counter pattern type: object @@ -14040,20 +18227,20 @@ components: x-field-uid: 1 default: 0 format: uint32 - maximum: 7 + maximum: 1048575 step: type: integer x-field-uid: 2 default: 1 format: uint32 - maximum: 7 + maximum: 1048575 count: type: integer x-field-uid: 3 default: 1 format: uint32 - maximum: 7 - Pattern.Flow.Vlan.Priority.MetricTag: + maximum: 1048575 + Pattern.Flow.Ipv6.FlowLabel.MetricTag: description: |- Metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. type: object @@ -14072,20 +18259,20 @@ components: type: integer format: uint32 default: 0 - maximum: 2 + maximum: 19 x-field-uid: 2 length: description: |- Number of bits to track for metrics starting from configured offset of corresponding header field type: integer format: uint32 - default: 3 + default: 20 minimum: 1 - maximum: 3 + maximum: 20 x-field-uid: 3 - Pattern.Flow.Vlan.Priority: + Pattern.Flow.Ipv6.FlowLabel: description: |- - Priority code point + Flow label type: object properties: choice: @@ -14111,30 +18298,30 @@ components: x-field-uid: 2 default: 0 format: uint32 - maximum: 7 + maximum: 1048575 values: type: array items: type: integer format: uint32 - maximum: 7 + maximum: 1048575 x-field-uid: 3 default: - 0 increment: - $ref: '#/components/schemas/Pattern.Flow.Vlan.Priority.Counter' + $ref: '#/components/schemas/Pattern.Flow.Ipv6.FlowLabel.Counter' x-field-uid: 5 decrement: - $ref: '#/components/schemas/Pattern.Flow.Vlan.Priority.Counter' + $ref: '#/components/schemas/Pattern.Flow.Ipv6.FlowLabel.Counter' x-field-uid: 6 metric_tags: description: |- One or more metric tags can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. type: array items: - $ref: '#/components/schemas/Pattern.Flow.Vlan.Priority.MetricTag' + $ref: '#/components/schemas/Pattern.Flow.Ipv6.FlowLabel.MetricTag' x-field-uid: 7 - Pattern.Flow.Vlan.Cfi.Counter: + Pattern.Flow.Ipv6.PayloadLength.Counter: description: |- integer counter pattern type: object @@ -14144,20 +18331,20 @@ components: x-field-uid: 1 default: 0 format: uint32 - maximum: 1 + maximum: 65535 step: type: integer x-field-uid: 2 default: 1 format: uint32 - maximum: 1 + maximum: 65535 count: type: integer x-field-uid: 3 default: 1 format: uint32 - maximum: 1 - Pattern.Flow.Vlan.Cfi.MetricTag: + maximum: 65535 + Pattern.Flow.Ipv6.PayloadLength.MetricTag: description: |- Metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. type: object @@ -14176,20 +18363,20 @@ components: type: integer format: uint32 default: 0 - maximum: 0 + maximum: 15 x-field-uid: 2 length: description: |- Number of bits to track for metrics starting from configured offset of corresponding header field type: integer format: uint32 - default: 1 + default: 16 minimum: 1 - maximum: 1 + maximum: 16 x-field-uid: 3 - Pattern.Flow.Vlan.Cfi: + Pattern.Flow.Ipv6.PayloadLength: description: |- - Canonical format indicator or drop elegible indicator + Payload length type: object properties: choice: @@ -14199,15 +18386,18 @@ components: x-field-uid: 2 values: x-field-uid: 3 + auto: + x-field-uid: 1 increment: x-field-uid: 4 decrement: x-field-uid: 5 - default: value + default: auto x-field-uid: 1 enum: - value - values + - auto - increment - decrement value: @@ -14215,30 +18405,40 @@ components: x-field-uid: 2 default: 0 format: uint32 - maximum: 1 + maximum: 65535 values: type: array items: type: integer format: uint32 - maximum: 1 + maximum: 65535 x-field-uid: 3 default: - 0 + auto: + description: |- + The OTG implementation can provide a system generated + value for this property. If the OTG is unable to generate a value + the default value must be used. + type: integer + x-field-uid: 4 + default: 0 + format: uint32 + maximum: 65535 increment: - $ref: '#/components/schemas/Pattern.Flow.Vlan.Cfi.Counter' - x-field-uid: 5 - decrement: - $ref: '#/components/schemas/Pattern.Flow.Vlan.Cfi.Counter' + $ref: '#/components/schemas/Pattern.Flow.Ipv6.PayloadLength.Counter' x-field-uid: 6 + decrement: + $ref: '#/components/schemas/Pattern.Flow.Ipv6.PayloadLength.Counter' + x-field-uid: 7 metric_tags: description: |- One or more metric tags can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. type: array items: - $ref: '#/components/schemas/Pattern.Flow.Vlan.Cfi.MetricTag' - x-field-uid: 7 - Pattern.Flow.Vlan.Id.Counter: + $ref: '#/components/schemas/Pattern.Flow.Ipv6.PayloadLength.MetricTag' + x-field-uid: 8 + Pattern.Flow.Ipv6.NextHeader.Counter: description: |- integer counter pattern type: object @@ -14246,22 +18446,34 @@ components: start: type: integer x-field-uid: 1 - default: 0 + default: 59 format: uint32 - maximum: 4095 + maximum: 255 step: type: integer x-field-uid: 2 default: 1 format: uint32 - maximum: 4095 + maximum: 255 count: type: integer x-field-uid: 3 default: 1 format: uint32 - maximum: 4095 - Pattern.Flow.Vlan.Id.MetricTag: + maximum: 255 + x-constants: + hopopt: 0 + icmp: 1 + igmp: 2 + ggp: 3 + ip_in_ip: 4 + st: 5 + tcp: 6 + cpt: 7 + egp: 8 + igp: 9 + no_next_header: 59 + Pattern.Flow.Ipv6.NextHeader.MetricTag: description: |- Metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. type: object @@ -14280,20 +18492,20 @@ components: type: integer format: uint32 default: 0 - maximum: 11 + maximum: 7 x-field-uid: 2 length: description: |- Number of bits to track for metrics starting from configured offset of corresponding header field type: integer format: uint32 - default: 12 + default: 8 minimum: 1 - maximum: 12 + maximum: 8 x-field-uid: 3 - Pattern.Flow.Vlan.Id: + Pattern.Flow.Ipv6.NextHeader: description: |- - Vlan identifier + Next header type: object properties: choice: @@ -14303,46 +18515,71 @@ components: x-field-uid: 2 values: x-field-uid: 3 + auto: + x-field-uid: 1 increment: x-field-uid: 4 decrement: x-field-uid: 5 - default: value + default: auto x-field-uid: 1 enum: - value - values + - auto - increment - decrement value: type: integer x-field-uid: 2 - default: 0 + default: 59 format: uint32 - maximum: 4095 + maximum: 255 values: type: array items: type: integer format: uint32 - maximum: 4095 + maximum: 255 x-field-uid: 3 default: - - 0 + - 59 + auto: + description: |- + The OTG implementation can provide a system generated + value for this property. If the OTG is unable to generate a value + the default value must be used. + type: integer + x-field-uid: 4 + default: 59 + format: uint32 + maximum: 255 increment: - $ref: '#/components/schemas/Pattern.Flow.Vlan.Id.Counter' - x-field-uid: 5 - decrement: - $ref: '#/components/schemas/Pattern.Flow.Vlan.Id.Counter' + $ref: '#/components/schemas/Pattern.Flow.Ipv6.NextHeader.Counter' x-field-uid: 6 + decrement: + $ref: '#/components/schemas/Pattern.Flow.Ipv6.NextHeader.Counter' + x-field-uid: 7 metric_tags: description: |- One or more metric tags can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. type: array items: - $ref: '#/components/schemas/Pattern.Flow.Vlan.Id.MetricTag' - x-field-uid: 7 - Pattern.Flow.Vlan.Tpid.Counter: + $ref: '#/components/schemas/Pattern.Flow.Ipv6.NextHeader.MetricTag' + x-field-uid: 8 + x-constants: + hopopt: 0 + icmp: 1 + igmp: 2 + ggp: 3 + ip_in_ip: 4 + st: 5 + tcp: 6 + cpt: 7 + egp: 8 + igp: 9 + no_next_header: 59 + Pattern.Flow.Ipv6.HopLimit.Counter: description: |- integer counter pattern type: object @@ -14350,28 +18587,22 @@ components: start: type: integer x-field-uid: 1 - default: 65535 + default: 64 format: uint32 - maximum: 65535 + maximum: 255 step: type: integer x-field-uid: 2 default: 1 format: uint32 - maximum: 65535 + maximum: 255 count: type: integer x-field-uid: 3 default: 1 format: uint32 - maximum: 65535 - x-constants: - x8100: 33024 - x88A8: 34984 - x9100: 37120 - x9200: 37376 - x9300: 37632 - Pattern.Flow.Vlan.Tpid.MetricTag: + maximum: 255 + Pattern.Flow.Ipv6.HopLimit.MetricTag: description: |- Metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. type: object @@ -14390,20 +18621,20 @@ components: type: integer format: uint32 default: 0 - maximum: 15 + maximum: 7 x-field-uid: 2 length: description: |- Number of bits to track for metrics starting from configured offset of corresponding header field type: integer format: uint32 - default: 16 + default: 8 minimum: 1 - maximum: 16 + maximum: 8 x-field-uid: 3 - Pattern.Flow.Vlan.Tpid: + Pattern.Flow.Ipv6.HopLimit: description: |- - Protocol identifier + Hop limit type: object properties: choice: @@ -14427,61 +18658,52 @@ components: value: type: integer x-field-uid: 2 - default: 65535 + default: 64 format: uint32 - maximum: 65535 + maximum: 255 values: type: array items: type: integer format: uint32 - maximum: 65535 + maximum: 255 x-field-uid: 3 default: - - 65535 + - 64 increment: - $ref: '#/components/schemas/Pattern.Flow.Vlan.Tpid.Counter' + $ref: '#/components/schemas/Pattern.Flow.Ipv6.HopLimit.Counter' x-field-uid: 5 decrement: - $ref: '#/components/schemas/Pattern.Flow.Vlan.Tpid.Counter' + $ref: '#/components/schemas/Pattern.Flow.Ipv6.HopLimit.Counter' x-field-uid: 6 metric_tags: description: |- One or more metric tags can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. type: array items: - $ref: '#/components/schemas/Pattern.Flow.Vlan.Tpid.MetricTag' + $ref: '#/components/schemas/Pattern.Flow.Ipv6.HopLimit.MetricTag' x-field-uid: 7 - x-constants: - x8100: 33024 - x88A8: 34984 - x9100: 37120 - x9200: 37376 - x9300: 37632 - Pattern.Flow.Vxlan.Flags.Counter: + Pattern.Flow.Ipv6.Src.Counter: description: |- - integer counter pattern + ipv6 counter pattern type: object properties: start: - type: integer + type: string x-field-uid: 1 - default: 8 - format: uint32 - maximum: 255 + default: ::0 + format: ipv6 step: - type: integer + type: string x-field-uid: 2 - default: 1 - format: uint32 - maximum: 255 + default: ::1 + format: ipv6 count: type: integer x-field-uid: 3 default: 1 format: uint32 - maximum: 255 - Pattern.Flow.Vxlan.Flags.MetricTag: + Pattern.Flow.Ipv6.Src.MetricTag: description: |- Metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. type: object @@ -14500,20 +18722,20 @@ components: type: integer format: uint32 default: 0 - maximum: 7 + maximum: 127 x-field-uid: 2 length: description: |- Number of bits to track for metrics starting from configured offset of corresponding header field type: integer format: uint32 - default: 8 + default: 128 minimum: 1 - maximum: 8 + maximum: 128 x-field-uid: 3 - Pattern.Flow.Vxlan.Flags: + Pattern.Flow.Ipv6.Src: description: |- - Flags field with a bit format of RRRRIRRR. The I flag MUST be set to 1 for a valid vxlan network id (VNI). The other 7 bits (designated "R") are reserved fields and MUST be set to zero on transmission and ignored on receipt. + Source address type: object properties: choice: @@ -14535,57 +18757,52 @@ components: - increment - decrement value: - type: integer + type: string x-field-uid: 2 - default: 8 - format: uint32 - maximum: 255 + default: ::0 + format: ipv6 values: type: array items: - type: integer - format: uint32 - maximum: 255 + type: string + format: ipv6 x-field-uid: 3 default: - - 8 + - ::0 increment: - $ref: '#/components/schemas/Pattern.Flow.Vxlan.Flags.Counter' + $ref: '#/components/schemas/Pattern.Flow.Ipv6.Src.Counter' x-field-uid: 5 decrement: - $ref: '#/components/schemas/Pattern.Flow.Vxlan.Flags.Counter' + $ref: '#/components/schemas/Pattern.Flow.Ipv6.Src.Counter' x-field-uid: 6 metric_tags: description: |- One or more metric tags can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. type: array items: - $ref: '#/components/schemas/Pattern.Flow.Vxlan.Flags.MetricTag' + $ref: '#/components/schemas/Pattern.Flow.Ipv6.Src.MetricTag' x-field-uid: 7 - Pattern.Flow.Vxlan.Reserved0.Counter: + Pattern.Flow.Ipv6.Dst.Counter: description: |- - integer counter pattern + ipv6 counter pattern type: object properties: start: - type: integer + type: string x-field-uid: 1 - default: 0 - format: uint32 - maximum: 16777215 + default: ::0 + format: ipv6 step: - type: integer + type: string x-field-uid: 2 - default: 1 - format: uint32 - maximum: 16777215 + default: ::1 + format: ipv6 count: type: integer x-field-uid: 3 default: 1 format: uint32 - maximum: 16777215 - Pattern.Flow.Vxlan.Reserved0.MetricTag: + Pattern.Flow.Ipv6.Dst.MetricTag: description: |- Metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. type: object @@ -14604,20 +18821,20 @@ components: type: integer format: uint32 default: 0 - maximum: 23 + maximum: 127 x-field-uid: 2 length: description: |- Number of bits to track for metrics starting from configured offset of corresponding header field type: integer format: uint32 - default: 24 + default: 128 minimum: 1 - maximum: 24 + maximum: 128 x-field-uid: 3 - Pattern.Flow.Vxlan.Reserved0: + Pattern.Flow.Ipv6.Dst: description: |- - Reserved field + Destination address type: object properties: choice: @@ -14639,57 +18856,52 @@ components: - increment - decrement value: - type: integer + type: string x-field-uid: 2 - default: 0 - format: uint32 - maximum: 16777215 + default: ::0 + format: ipv6 values: type: array items: - type: integer - format: uint32 - maximum: 16777215 + type: string + format: ipv6 x-field-uid: 3 default: - - 0 + - ::0 increment: - $ref: '#/components/schemas/Pattern.Flow.Vxlan.Reserved0.Counter' + $ref: '#/components/schemas/Pattern.Flow.Ipv6.Dst.Counter' x-field-uid: 5 decrement: - $ref: '#/components/schemas/Pattern.Flow.Vxlan.Reserved0.Counter' + $ref: '#/components/schemas/Pattern.Flow.Ipv6.Dst.Counter' x-field-uid: 6 metric_tags: description: |- One or more metric tags can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. type: array items: - $ref: '#/components/schemas/Pattern.Flow.Vxlan.Reserved0.MetricTag' + $ref: '#/components/schemas/Pattern.Flow.Ipv6.Dst.MetricTag' x-field-uid: 7 - Pattern.Flow.Vxlan.Vni.Counter: + Pattern.Flow.PfcPause.Dst.Counter: description: |- - integer counter pattern + mac counter pattern type: object properties: start: - type: integer + type: string x-field-uid: 1 - default: 0 - format: uint32 - maximum: 16777215 + default: 01:80:c2:00:00:01 + format: mac step: - type: integer + type: string x-field-uid: 2 - default: 1 - format: uint32 - maximum: 16777215 + default: 00:00:00:00:00:01 + format: mac count: type: integer x-field-uid: 3 default: 1 format: uint32 - maximum: 16777215 - Pattern.Flow.Vxlan.Vni.MetricTag: + Pattern.Flow.PfcPause.Dst.MetricTag: description: |- Metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. type: object @@ -14708,20 +18920,20 @@ components: type: integer format: uint32 default: 0 - maximum: 23 + maximum: 47 x-field-uid: 2 length: description: |- Number of bits to track for metrics starting from configured offset of corresponding header field type: integer format: uint32 - default: 24 + default: 48 minimum: 1 - maximum: 24 + maximum: 48 x-field-uid: 3 - Pattern.Flow.Vxlan.Vni: + Pattern.Flow.PfcPause.Dst: description: |- - VXLAN network id + Destination MAC address type: object properties: choice: @@ -14731,82 +18943,64 @@ components: x-field-uid: 2 values: x-field-uid: 3 - auto: - x-field-uid: 1 increment: x-field-uid: 4 decrement: x-field-uid: 5 - default: auto + default: value x-field-uid: 1 enum: - value - values - - auto - increment - decrement value: - type: integer + type: string x-field-uid: 2 - default: 0 - format: uint32 - maximum: 16777215 + default: 01:80:c2:00:00:01 + format: mac values: type: array items: - type: integer - format: uint32 - maximum: 16777215 + type: string + format: mac x-field-uid: 3 default: - - 0 - auto: - description: |- - The OTG implementation can provide a system generated - value for this property. If the OTG is unable to generate a value - the default value must be used. - type: integer - x-field-uid: 4 - default: 0 - format: uint32 - maximum: 16777215 + - 01:80:c2:00:00:01 increment: - $ref: '#/components/schemas/Pattern.Flow.Vxlan.Vni.Counter' - x-field-uid: 6 + $ref: '#/components/schemas/Pattern.Flow.PfcPause.Dst.Counter' + x-field-uid: 5 decrement: - $ref: '#/components/schemas/Pattern.Flow.Vxlan.Vni.Counter' - x-field-uid: 7 + $ref: '#/components/schemas/Pattern.Flow.PfcPause.Dst.Counter' + x-field-uid: 6 metric_tags: description: |- One or more metric tags can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. type: array items: - $ref: '#/components/schemas/Pattern.Flow.Vxlan.Vni.MetricTag' - x-field-uid: 8 - Pattern.Flow.Vxlan.Reserved1.Counter: + $ref: '#/components/schemas/Pattern.Flow.PfcPause.Dst.MetricTag' + x-field-uid: 7 + Pattern.Flow.PfcPause.Src.Counter: description: |- - integer counter pattern + mac counter pattern type: object properties: start: - type: integer + type: string x-field-uid: 1 - default: 0 - format: uint32 - maximum: 255 + default: 00:00:00:00:00:00 + format: mac step: - type: integer + type: string x-field-uid: 2 - default: 1 - format: uint32 - maximum: 255 + default: 00:00:00:00:00:01 + format: mac count: type: integer x-field-uid: 3 default: 1 format: uint32 - maximum: 255 - Pattern.Flow.Vxlan.Reserved1.MetricTag: + Pattern.Flow.PfcPause.Src.MetricTag: description: |- Metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. type: object @@ -14825,20 +19019,20 @@ components: type: integer format: uint32 default: 0 - maximum: 7 + maximum: 47 x-field-uid: 2 length: description: |- Number of bits to track for metrics starting from configured offset of corresponding header field type: integer format: uint32 - default: 8 + default: 48 minimum: 1 - maximum: 8 + maximum: 48 x-field-uid: 3 - Pattern.Flow.Vxlan.Reserved1: + Pattern.Flow.PfcPause.Src: description: |- - Reserved field + Source MAC address type: object properties: choice: @@ -14860,34 +19054,32 @@ components: - increment - decrement value: - type: integer + type: string x-field-uid: 2 - default: 0 - format: uint32 - maximum: 255 + default: 00:00:00:00:00:00 + format: mac values: type: array items: - type: integer - format: uint32 - maximum: 255 + type: string + format: mac x-field-uid: 3 default: - - 0 + - 00:00:00:00:00:00 increment: - $ref: '#/components/schemas/Pattern.Flow.Vxlan.Reserved1.Counter' + $ref: '#/components/schemas/Pattern.Flow.PfcPause.Src.Counter' x-field-uid: 5 decrement: - $ref: '#/components/schemas/Pattern.Flow.Vxlan.Reserved1.Counter' + $ref: '#/components/schemas/Pattern.Flow.PfcPause.Src.Counter' x-field-uid: 6 metric_tags: description: |- One or more metric tags can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. type: array items: - $ref: '#/components/schemas/Pattern.Flow.Vxlan.Reserved1.MetricTag' + $ref: '#/components/schemas/Pattern.Flow.PfcPause.Src.MetricTag' x-field-uid: 7 - Pattern.Flow.Ipv4.Version.Counter: + Pattern.Flow.PfcPause.EtherType.Counter: description: |- integer counter pattern type: object @@ -14895,22 +19087,24 @@ components: start: type: integer x-field-uid: 1 - default: 4 + default: 34824 format: uint32 - maximum: 15 + maximum: 65535 step: type: integer x-field-uid: 2 default: 1 format: uint32 - maximum: 15 + maximum: 65535 count: type: integer x-field-uid: 3 default: 1 format: uint32 - maximum: 15 - Pattern.Flow.Ipv4.Version.MetricTag: + maximum: 65535 + x-constants: + x8808: 34824 + Pattern.Flow.PfcPause.EtherType.MetricTag: description: |- Metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. type: object @@ -14929,20 +19123,20 @@ components: type: integer format: uint32 default: 0 - maximum: 3 + maximum: 15 x-field-uid: 2 length: description: |- Number of bits to track for metrics starting from configured offset of corresponding header field type: integer format: uint32 - default: 4 + default: 16 minimum: 1 - maximum: 4 + maximum: 16 x-field-uid: 3 - Pattern.Flow.Ipv4.Version: + Pattern.Flow.PfcPause.EtherType: description: |- - Version + Ethernet type type: object properties: choice: @@ -14966,32 +19160,34 @@ components: value: type: integer x-field-uid: 2 - default: 4 + default: 34824 format: uint32 - maximum: 15 + maximum: 65535 values: type: array items: type: integer format: uint32 - maximum: 15 + maximum: 65535 x-field-uid: 3 default: - - 4 + - 34824 increment: - $ref: '#/components/schemas/Pattern.Flow.Ipv4.Version.Counter' + $ref: '#/components/schemas/Pattern.Flow.PfcPause.EtherType.Counter' x-field-uid: 5 decrement: - $ref: '#/components/schemas/Pattern.Flow.Ipv4.Version.Counter' + $ref: '#/components/schemas/Pattern.Flow.PfcPause.EtherType.Counter' x-field-uid: 6 metric_tags: description: |- One or more metric tags can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. type: array items: - $ref: '#/components/schemas/Pattern.Flow.Ipv4.Version.MetricTag' + $ref: '#/components/schemas/Pattern.Flow.PfcPause.EtherType.MetricTag' x-field-uid: 7 - Pattern.Flow.Ipv4.HeaderLength.Counter: + x-constants: + x8808: 34824 + Pattern.Flow.PfcPause.ControlOpCode.Counter: description: |- integer counter pattern type: object @@ -14999,22 +19195,22 @@ components: start: type: integer x-field-uid: 1 - default: 5 + default: 257 format: uint32 - maximum: 15 + maximum: 65535 step: type: integer x-field-uid: 2 default: 1 format: uint32 - maximum: 15 + maximum: 65535 count: type: integer x-field-uid: 3 default: 1 format: uint32 - maximum: 15 - Pattern.Flow.Ipv4.HeaderLength.MetricTag: + maximum: 65535 + Pattern.Flow.PfcPause.ControlOpCode.MetricTag: description: |- Metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. type: object @@ -15033,20 +19229,20 @@ components: type: integer format: uint32 default: 0 - maximum: 3 + maximum: 15 x-field-uid: 2 length: description: |- Number of bits to track for metrics starting from configured offset of corresponding header field type: integer format: uint32 - default: 4 + default: 16 minimum: 1 - maximum: 4 + maximum: 16 x-field-uid: 3 - Pattern.Flow.Ipv4.HeaderLength: + Pattern.Flow.PfcPause.ControlOpCode: description: |- - Header length + Control operation code type: object properties: choice: @@ -15056,59 +19252,46 @@ components: x-field-uid: 2 values: x-field-uid: 3 - auto: - x-field-uid: 1 increment: x-field-uid: 4 decrement: x-field-uid: 5 - default: auto + default: value x-field-uid: 1 enum: - value - values - - auto - increment - decrement value: type: integer x-field-uid: 2 - default: 5 + default: 257 format: uint32 - maximum: 15 + maximum: 65535 values: type: array items: type: integer format: uint32 - maximum: 15 + maximum: 65535 x-field-uid: 3 default: - - 5 - auto: - description: |- - The OTG implementation can provide a system generated - value for this property. If the OTG is unable to generate a value - the default value must be used. - type: integer - x-field-uid: 4 - default: 5 - format: uint32 - maximum: 15 + - 257 increment: - $ref: '#/components/schemas/Pattern.Flow.Ipv4.HeaderLength.Counter' - x-field-uid: 6 + $ref: '#/components/schemas/Pattern.Flow.PfcPause.ControlOpCode.Counter' + x-field-uid: 5 decrement: - $ref: '#/components/schemas/Pattern.Flow.Ipv4.HeaderLength.Counter' - x-field-uid: 7 + $ref: '#/components/schemas/Pattern.Flow.PfcPause.ControlOpCode.Counter' + x-field-uid: 6 metric_tags: description: |- One or more metric tags can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. type: array items: - $ref: '#/components/schemas/Pattern.Flow.Ipv4.HeaderLength.MetricTag' - x-field-uid: 8 - Pattern.Flow.Ipv4.TotalLength.Counter: + $ref: '#/components/schemas/Pattern.Flow.PfcPause.ControlOpCode.MetricTag' + x-field-uid: 7 + Pattern.Flow.PfcPause.ClassEnableVector.Counter: description: |- integer counter pattern type: object @@ -15116,7 +19299,7 @@ components: start: type: integer x-field-uid: 1 - default: 46 + default: 0 format: uint32 maximum: 65535 step: @@ -15131,7 +19314,7 @@ components: default: 1 format: uint32 maximum: 65535 - Pattern.Flow.Ipv4.TotalLength.MetricTag: + Pattern.Flow.PfcPause.ClassEnableVector.MetricTag: description: |- Metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. type: object @@ -15161,9 +19344,9 @@ components: minimum: 1 maximum: 16 x-field-uid: 3 - Pattern.Flow.Ipv4.TotalLength: + Pattern.Flow.PfcPause.ClassEnableVector: description: |- - Total length + Destination type: object properties: choice: @@ -15173,24 +19356,21 @@ components: x-field-uid: 2 values: x-field-uid: 3 - auto: - x-field-uid: 1 increment: x-field-uid: 4 decrement: x-field-uid: 5 - default: auto + default: value x-field-uid: 1 enum: - value - values - - auto - increment - decrement value: type: integer x-field-uid: 2 - default: 46 + default: 0 format: uint32 maximum: 65535 values: @@ -15201,31 +19381,21 @@ components: maximum: 65535 x-field-uid: 3 default: - - 46 - auto: - description: |- - The OTG implementation can provide a system generated - value for this property. If the OTG is unable to generate a value - the default value must be used. - type: integer - x-field-uid: 4 - default: 46 - format: uint32 - maximum: 65535 + - 0 increment: - $ref: '#/components/schemas/Pattern.Flow.Ipv4.TotalLength.Counter' - x-field-uid: 6 + $ref: '#/components/schemas/Pattern.Flow.PfcPause.ClassEnableVector.Counter' + x-field-uid: 5 decrement: - $ref: '#/components/schemas/Pattern.Flow.Ipv4.TotalLength.Counter' - x-field-uid: 7 + $ref: '#/components/schemas/Pattern.Flow.PfcPause.ClassEnableVector.Counter' + x-field-uid: 6 metric_tags: description: |- One or more metric tags can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. type: array items: - $ref: '#/components/schemas/Pattern.Flow.Ipv4.TotalLength.MetricTag' - x-field-uid: 8 - Pattern.Flow.Ipv4.Identification.Counter: + $ref: '#/components/schemas/Pattern.Flow.PfcPause.ClassEnableVector.MetricTag' + x-field-uid: 7 + Pattern.Flow.PfcPause.PauseClass0.Counter: description: |- integer counter pattern type: object @@ -15248,7 +19418,7 @@ components: default: 1 format: uint32 maximum: 65535 - Pattern.Flow.Ipv4.Identification.MetricTag: + Pattern.Flow.PfcPause.PauseClass0.MetricTag: description: |- Metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. type: object @@ -15278,9 +19448,9 @@ components: minimum: 1 maximum: 16 x-field-uid: 3 - Pattern.Flow.Ipv4.Identification: + Pattern.Flow.PfcPause.PauseClass0: description: |- - Identification + Pause class 0 type: object properties: choice: @@ -15317,19 +19487,19 @@ components: default: - 0 increment: - $ref: '#/components/schemas/Pattern.Flow.Ipv4.Identification.Counter' + $ref: '#/components/schemas/Pattern.Flow.PfcPause.PauseClass0.Counter' x-field-uid: 5 decrement: - $ref: '#/components/schemas/Pattern.Flow.Ipv4.Identification.Counter' + $ref: '#/components/schemas/Pattern.Flow.PfcPause.PauseClass0.Counter' x-field-uid: 6 metric_tags: description: |- One or more metric tags can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. type: array items: - $ref: '#/components/schemas/Pattern.Flow.Ipv4.Identification.MetricTag' + $ref: '#/components/schemas/Pattern.Flow.PfcPause.PauseClass0.MetricTag' x-field-uid: 7 - Pattern.Flow.Ipv4.Reserved.Counter: + Pattern.Flow.PfcPause.PauseClass1.Counter: description: |- integer counter pattern type: object @@ -15339,20 +19509,20 @@ components: x-field-uid: 1 default: 0 format: uint32 - maximum: 1 + maximum: 65535 step: type: integer x-field-uid: 2 default: 1 format: uint32 - maximum: 1 + maximum: 65535 count: type: integer x-field-uid: 3 default: 1 format: uint32 - maximum: 1 - Pattern.Flow.Ipv4.Reserved.MetricTag: + maximum: 65535 + Pattern.Flow.PfcPause.PauseClass1.MetricTag: description: |- Metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. type: object @@ -15371,20 +19541,20 @@ components: type: integer format: uint32 default: 0 - maximum: 0 + maximum: 15 x-field-uid: 2 length: description: |- Number of bits to track for metrics starting from configured offset of corresponding header field type: integer format: uint32 - default: 1 + default: 16 minimum: 1 - maximum: 1 + maximum: 16 x-field-uid: 3 - Pattern.Flow.Ipv4.Reserved: + Pattern.Flow.PfcPause.PauseClass1: description: |- - Reserved flag. + Pause class 1 type: object properties: choice: @@ -15410,30 +19580,30 @@ components: x-field-uid: 2 default: 0 format: uint32 - maximum: 1 + maximum: 65535 values: type: array items: type: integer format: uint32 - maximum: 1 + maximum: 65535 x-field-uid: 3 default: - 0 increment: - $ref: '#/components/schemas/Pattern.Flow.Ipv4.Reserved.Counter' + $ref: '#/components/schemas/Pattern.Flow.PfcPause.PauseClass1.Counter' x-field-uid: 5 decrement: - $ref: '#/components/schemas/Pattern.Flow.Ipv4.Reserved.Counter' + $ref: '#/components/schemas/Pattern.Flow.PfcPause.PauseClass1.Counter' x-field-uid: 6 metric_tags: description: |- One or more metric tags can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. type: array items: - $ref: '#/components/schemas/Pattern.Flow.Ipv4.Reserved.MetricTag' + $ref: '#/components/schemas/Pattern.Flow.PfcPause.PauseClass1.MetricTag' x-field-uid: 7 - Pattern.Flow.Ipv4.DontFragment.Counter: + Pattern.Flow.PfcPause.PauseClass2.Counter: description: |- integer counter pattern type: object @@ -15443,20 +19613,20 @@ components: x-field-uid: 1 default: 0 format: uint32 - maximum: 1 + maximum: 65535 step: type: integer x-field-uid: 2 default: 1 format: uint32 - maximum: 1 + maximum: 65535 count: type: integer x-field-uid: 3 default: 1 format: uint32 - maximum: 1 - Pattern.Flow.Ipv4.DontFragment.MetricTag: + maximum: 65535 + Pattern.Flow.PfcPause.PauseClass2.MetricTag: description: |- Metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. type: object @@ -15475,20 +19645,20 @@ components: type: integer format: uint32 default: 0 - maximum: 0 + maximum: 15 x-field-uid: 2 length: description: |- Number of bits to track for metrics starting from configured offset of corresponding header field type: integer format: uint32 - default: 1 + default: 16 minimum: 1 - maximum: 1 + maximum: 16 x-field-uid: 3 - Pattern.Flow.Ipv4.DontFragment: + Pattern.Flow.PfcPause.PauseClass2: description: |- - Dont fragment flag If the dont_fragment flag is set and fragmentation is required to route the packet then the packet is dropped. + Pause class 2 type: object properties: choice: @@ -15514,30 +19684,30 @@ components: x-field-uid: 2 default: 0 format: uint32 - maximum: 1 + maximum: 65535 values: type: array items: type: integer format: uint32 - maximum: 1 + maximum: 65535 x-field-uid: 3 default: - 0 increment: - $ref: '#/components/schemas/Pattern.Flow.Ipv4.DontFragment.Counter' + $ref: '#/components/schemas/Pattern.Flow.PfcPause.PauseClass2.Counter' x-field-uid: 5 decrement: - $ref: '#/components/schemas/Pattern.Flow.Ipv4.DontFragment.Counter' + $ref: '#/components/schemas/Pattern.Flow.PfcPause.PauseClass2.Counter' x-field-uid: 6 metric_tags: description: |- One or more metric tags can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. type: array items: - $ref: '#/components/schemas/Pattern.Flow.Ipv4.DontFragment.MetricTag' + $ref: '#/components/schemas/Pattern.Flow.PfcPause.PauseClass2.MetricTag' x-field-uid: 7 - Pattern.Flow.Ipv4.MoreFragments.Counter: + Pattern.Flow.PfcPause.PauseClass3.Counter: description: |- integer counter pattern type: object @@ -15547,20 +19717,20 @@ components: x-field-uid: 1 default: 0 format: uint32 - maximum: 1 + maximum: 65535 step: type: integer x-field-uid: 2 default: 1 format: uint32 - maximum: 1 + maximum: 65535 count: type: integer x-field-uid: 3 default: 1 format: uint32 - maximum: 1 - Pattern.Flow.Ipv4.MoreFragments.MetricTag: + maximum: 65535 + Pattern.Flow.PfcPause.PauseClass3.MetricTag: description: |- Metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. type: object @@ -15579,20 +19749,20 @@ components: type: integer format: uint32 default: 0 - maximum: 0 + maximum: 15 x-field-uid: 2 length: description: |- Number of bits to track for metrics starting from configured offset of corresponding header field type: integer format: uint32 - default: 1 + default: 16 minimum: 1 - maximum: 1 + maximum: 16 x-field-uid: 3 - Pattern.Flow.Ipv4.MoreFragments: + Pattern.Flow.PfcPause.PauseClass3: description: |- - More fragments flag + Pause class 3 type: object properties: choice: @@ -15618,30 +19788,30 @@ components: x-field-uid: 2 default: 0 format: uint32 - maximum: 1 + maximum: 65535 values: type: array items: type: integer format: uint32 - maximum: 1 + maximum: 65535 x-field-uid: 3 default: - 0 increment: - $ref: '#/components/schemas/Pattern.Flow.Ipv4.MoreFragments.Counter' + $ref: '#/components/schemas/Pattern.Flow.PfcPause.PauseClass3.Counter' x-field-uid: 5 decrement: - $ref: '#/components/schemas/Pattern.Flow.Ipv4.MoreFragments.Counter' + $ref: '#/components/schemas/Pattern.Flow.PfcPause.PauseClass3.Counter' x-field-uid: 6 metric_tags: description: |- One or more metric tags can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. type: array items: - $ref: '#/components/schemas/Pattern.Flow.Ipv4.MoreFragments.MetricTag' + $ref: '#/components/schemas/Pattern.Flow.PfcPause.PauseClass3.MetricTag' x-field-uid: 7 - Pattern.Flow.Ipv4.FragmentOffset.Counter: + Pattern.Flow.PfcPause.PauseClass4.Counter: description: |- integer counter pattern type: object @@ -15651,20 +19821,20 @@ components: x-field-uid: 1 default: 0 format: uint32 - maximum: 31 + maximum: 65535 step: type: integer x-field-uid: 2 default: 1 format: uint32 - maximum: 31 + maximum: 65535 count: type: integer x-field-uid: 3 default: 1 format: uint32 - maximum: 31 - Pattern.Flow.Ipv4.FragmentOffset.MetricTag: + maximum: 65535 + Pattern.Flow.PfcPause.PauseClass4.MetricTag: description: |- Metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. type: object @@ -15683,20 +19853,20 @@ components: type: integer format: uint32 default: 0 - maximum: 4 + maximum: 15 x-field-uid: 2 length: description: |- Number of bits to track for metrics starting from configured offset of corresponding header field type: integer format: uint32 - default: 5 + default: 16 minimum: 1 - maximum: 5 + maximum: 16 x-field-uid: 3 - Pattern.Flow.Ipv4.FragmentOffset: + Pattern.Flow.PfcPause.PauseClass4: description: |- - Fragment offset + Pause class 4 type: object properties: choice: @@ -15722,30 +19892,30 @@ components: x-field-uid: 2 default: 0 format: uint32 - maximum: 31 + maximum: 65535 values: type: array items: type: integer format: uint32 - maximum: 31 + maximum: 65535 x-field-uid: 3 default: - 0 increment: - $ref: '#/components/schemas/Pattern.Flow.Ipv4.FragmentOffset.Counter' + $ref: '#/components/schemas/Pattern.Flow.PfcPause.PauseClass4.Counter' x-field-uid: 5 decrement: - $ref: '#/components/schemas/Pattern.Flow.Ipv4.FragmentOffset.Counter' + $ref: '#/components/schemas/Pattern.Flow.PfcPause.PauseClass4.Counter' x-field-uid: 6 metric_tags: description: |- One or more metric tags can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. type: array items: - $ref: '#/components/schemas/Pattern.Flow.Ipv4.FragmentOffset.MetricTag' + $ref: '#/components/schemas/Pattern.Flow.PfcPause.PauseClass4.MetricTag' x-field-uid: 7 - Pattern.Flow.Ipv4.TimeToLive.Counter: + Pattern.Flow.PfcPause.PauseClass5.Counter: description: |- integer counter pattern type: object @@ -15753,22 +19923,22 @@ components: start: type: integer x-field-uid: 1 - default: 64 + default: 0 format: uint32 - maximum: 255 + maximum: 65535 step: type: integer x-field-uid: 2 default: 1 format: uint32 - maximum: 255 + maximum: 65535 count: type: integer x-field-uid: 3 default: 1 format: uint32 - maximum: 255 - Pattern.Flow.Ipv4.TimeToLive.MetricTag: + maximum: 65535 + Pattern.Flow.PfcPause.PauseClass5.MetricTag: description: |- Metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. type: object @@ -15787,20 +19957,20 @@ components: type: integer format: uint32 default: 0 - maximum: 7 + maximum: 15 x-field-uid: 2 length: description: |- Number of bits to track for metrics starting from configured offset of corresponding header field type: integer format: uint32 - default: 8 + default: 16 minimum: 1 - maximum: 8 + maximum: 16 x-field-uid: 3 - Pattern.Flow.Ipv4.TimeToLive: + Pattern.Flow.PfcPause.PauseClass5: description: |- - Time to live + Pause class 5 type: object properties: choice: @@ -15824,32 +19994,32 @@ components: value: type: integer x-field-uid: 2 - default: 64 + default: 0 format: uint32 - maximum: 255 + maximum: 65535 values: type: array items: type: integer format: uint32 - maximum: 255 + maximum: 65535 x-field-uid: 3 default: - - 64 + - 0 increment: - $ref: '#/components/schemas/Pattern.Flow.Ipv4.TimeToLive.Counter' + $ref: '#/components/schemas/Pattern.Flow.PfcPause.PauseClass5.Counter' x-field-uid: 5 decrement: - $ref: '#/components/schemas/Pattern.Flow.Ipv4.TimeToLive.Counter' + $ref: '#/components/schemas/Pattern.Flow.PfcPause.PauseClass5.Counter' x-field-uid: 6 metric_tags: description: |- One or more metric tags can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. type: array items: - $ref: '#/components/schemas/Pattern.Flow.Ipv4.TimeToLive.MetricTag' + $ref: '#/components/schemas/Pattern.Flow.PfcPause.PauseClass5.MetricTag' x-field-uid: 7 - Pattern.Flow.Ipv4.Protocol.Counter: + Pattern.Flow.PfcPause.PauseClass6.Counter: description: |- integer counter pattern type: object @@ -15857,22 +20027,22 @@ components: start: type: integer x-field-uid: 1 - default: 61 + default: 0 format: uint32 - maximum: 255 + maximum: 65535 step: type: integer x-field-uid: 2 default: 1 format: uint32 - maximum: 255 + maximum: 65535 count: type: integer x-field-uid: 3 default: 1 format: uint32 - maximum: 255 - Pattern.Flow.Ipv4.Protocol.MetricTag: + maximum: 65535 + Pattern.Flow.PfcPause.PauseClass6.MetricTag: description: |- Metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. type: object @@ -15891,20 +20061,20 @@ components: type: integer format: uint32 default: 0 - maximum: 7 + maximum: 15 x-field-uid: 2 length: description: |- Number of bits to track for metrics starting from configured offset of corresponding header field type: integer format: uint32 - default: 8 + default: 16 minimum: 1 - maximum: 8 + maximum: 16 x-field-uid: 3 - Pattern.Flow.Ipv4.Protocol: + Pattern.Flow.PfcPause.PauseClass6: description: |- - Protocol, default is 61 any host internal protocol + Pause class 6 type: object properties: choice: @@ -15914,119 +20084,69 @@ components: x-field-uid: 2 values: x-field-uid: 3 - auto: - x-field-uid: 1 increment: x-field-uid: 4 decrement: x-field-uid: 5 - default: auto + default: value x-field-uid: 1 enum: - value - values - - auto - increment - decrement value: type: integer x-field-uid: 2 - default: 61 + default: 0 format: uint32 - maximum: 255 + maximum: 65535 values: type: array items: type: integer format: uint32 - maximum: 255 + maximum: 65535 x-field-uid: 3 default: - - 61 - auto: - description: |- - The OTG implementation can provide a system generated - value for this property. If the OTG is unable to generate a value - the default value must be used. - type: integer - x-field-uid: 4 - default: 61 - format: uint32 - maximum: 255 + - 0 increment: - $ref: '#/components/schemas/Pattern.Flow.Ipv4.Protocol.Counter' - x-field-uid: 6 + $ref: '#/components/schemas/Pattern.Flow.PfcPause.PauseClass6.Counter' + x-field-uid: 5 decrement: - $ref: '#/components/schemas/Pattern.Flow.Ipv4.Protocol.Counter' - x-field-uid: 7 + $ref: '#/components/schemas/Pattern.Flow.PfcPause.PauseClass6.Counter' + x-field-uid: 6 metric_tags: description: |- One or more metric tags can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. type: array items: - $ref: '#/components/schemas/Pattern.Flow.Ipv4.Protocol.MetricTag' - x-field-uid: 8 - Pattern.Flow.Ipv4.HeaderChecksum: + $ref: '#/components/schemas/Pattern.Flow.PfcPause.PauseClass6.MetricTag' + x-field-uid: 7 + Pattern.Flow.PfcPause.PauseClass7.Counter: description: |- - Header checksum + integer counter pattern type: object properties: - choice: - description: |- - The type of checksum - type: string - x-enum: - generated: - x-field-uid: 1 - custom: - x-field-uid: 2 - default: generated - x-field-uid: 1 - enum: - - generated - - custom - generated: - description: |- - A system generated checksum value - type: string - x-enum: - good: - x-field-uid: 1 - bad: - x-field-uid: 2 - default: good - x-field-uid: 2 - enum: - - good - - bad - custom: - description: |- - A custom checksum value + start: type: integer + x-field-uid: 1 + default: 0 format: uint32 maximum: 65535 - x-field-uid: 3 - Pattern.Flow.Ipv4.Src.Counter: - description: |- - ipv4 counter pattern - type: object - properties: - start: - type: string - x-field-uid: 1 - default: 0.0.0.0 - format: ipv4 step: - type: string + type: integer x-field-uid: 2 - default: 0.0.0.1 - format: ipv4 + default: 1 + format: uint32 + maximum: 65535 count: type: integer x-field-uid: 3 default: 1 format: uint32 - Pattern.Flow.Ipv4.Src.MetricTag: + maximum: 65535 + Pattern.Flow.PfcPause.PauseClass7.MetricTag: description: |- Metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. type: object @@ -16045,20 +20165,20 @@ components: type: integer format: uint32 default: 0 - maximum: 31 + maximum: 15 x-field-uid: 2 length: description: |- Number of bits to track for metrics starting from configured offset of corresponding header field type: integer format: uint32 - default: 32 + default: 16 minimum: 1 - maximum: 32 + maximum: 16 x-field-uid: 3 - Pattern.Flow.Ipv4.Src: + Pattern.Flow.PfcPause.PauseClass7: description: |- - Source address + Pause class 7 type: object properties: choice: @@ -16080,52 +20200,54 @@ components: - increment - decrement value: - type: string + type: integer x-field-uid: 2 - default: 0.0.0.0 - format: ipv4 + default: 0 + format: uint32 + maximum: 65535 values: type: array items: - type: string - format: ipv4 + type: integer + format: uint32 + maximum: 65535 x-field-uid: 3 default: - - 0.0.0.0 + - 0 increment: - $ref: '#/components/schemas/Pattern.Flow.Ipv4.Src.Counter' + $ref: '#/components/schemas/Pattern.Flow.PfcPause.PauseClass7.Counter' x-field-uid: 5 decrement: - $ref: '#/components/schemas/Pattern.Flow.Ipv4.Src.Counter' + $ref: '#/components/schemas/Pattern.Flow.PfcPause.PauseClass7.Counter' x-field-uid: 6 metric_tags: description: |- One or more metric tags can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. type: array items: - $ref: '#/components/schemas/Pattern.Flow.Ipv4.Src.MetricTag' + $ref: '#/components/schemas/Pattern.Flow.PfcPause.PauseClass7.MetricTag' x-field-uid: 7 - Pattern.Flow.Ipv4.Dst.Counter: + Pattern.Flow.EthernetPause.Dst.Counter: description: |- - ipv4 counter pattern + mac counter pattern type: object properties: start: type: string x-field-uid: 1 - default: 0.0.0.0 - format: ipv4 + default: 01:80:c2:00:00:01 + format: mac step: type: string - x-field-uid: 2 - default: 0.0.0.1 - format: ipv4 + x-field-uid: 2 + default: 00:00:00:00:00:01 + format: mac count: type: integer x-field-uid: 3 default: 1 format: uint32 - Pattern.Flow.Ipv4.Dst.MetricTag: + Pattern.Flow.EthernetPause.Dst.MetricTag: description: |- Metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. type: object @@ -16144,20 +20266,20 @@ components: type: integer format: uint32 default: 0 - maximum: 31 + maximum: 47 x-field-uid: 2 length: description: |- Number of bits to track for metrics starting from configured offset of corresponding header field type: integer format: uint32 - default: 32 + default: 48 minimum: 1 - maximum: 32 + maximum: 48 x-field-uid: 3 - Pattern.Flow.Ipv4.Dst: + Pattern.Flow.EthernetPause.Dst: description: |- - Destination address + Destination MAC address type: object properties: choice: @@ -16181,53 +20303,50 @@ components: value: type: string x-field-uid: 2 - default: 0.0.0.0 - format: ipv4 + default: 01:80:c2:00:00:01 + format: mac values: type: array items: type: string - format: ipv4 + format: mac x-field-uid: 3 default: - - 0.0.0.0 + - 01:80:c2:00:00:01 increment: - $ref: '#/components/schemas/Pattern.Flow.Ipv4.Dst.Counter' + $ref: '#/components/schemas/Pattern.Flow.EthernetPause.Dst.Counter' x-field-uid: 5 decrement: - $ref: '#/components/schemas/Pattern.Flow.Ipv4.Dst.Counter' + $ref: '#/components/schemas/Pattern.Flow.EthernetPause.Dst.Counter' x-field-uid: 6 metric_tags: description: |- One or more metric tags can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. type: array items: - $ref: '#/components/schemas/Pattern.Flow.Ipv4.Dst.MetricTag' + $ref: '#/components/schemas/Pattern.Flow.EthernetPause.Dst.MetricTag' x-field-uid: 7 - Pattern.Flow.Ipv4.Priority.Raw.Counter: + Pattern.Flow.EthernetPause.Src.Counter: description: |- - integer counter pattern + mac counter pattern type: object properties: start: - type: integer + type: string x-field-uid: 1 - default: 0 - format: uint32 - maximum: 255 + default: 00:00:00:00:00:00 + format: mac step: - type: integer + type: string x-field-uid: 2 - default: 1 - format: uint32 - maximum: 255 + default: 00:00:00:00:00:01 + format: mac count: type: integer x-field-uid: 3 default: 1 format: uint32 - maximum: 255 - Pattern.Flow.Ipv4.Priority.Raw.MetricTag: + Pattern.Flow.EthernetPause.Src.MetricTag: description: |- Metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. type: object @@ -16246,20 +20365,20 @@ components: type: integer format: uint32 default: 0 - maximum: 7 + maximum: 47 x-field-uid: 2 length: description: |- Number of bits to track for metrics starting from configured offset of corresponding header field type: integer format: uint32 - default: 8 + default: 48 minimum: 1 - maximum: 8 + maximum: 48 x-field-uid: 3 - Pattern.Flow.Ipv4.Priority.Raw: + Pattern.Flow.EthernetPause.Src: description: |- - Raw priority + Source MAC address type: object properties: choice: @@ -16281,34 +20400,32 @@ components: - increment - decrement value: - type: integer + type: string x-field-uid: 2 - default: 0 - format: uint32 - maximum: 255 + default: 00:00:00:00:00:00 + format: mac values: type: array items: - type: integer - format: uint32 - maximum: 255 + type: string + format: mac x-field-uid: 3 default: - - 0 + - 00:00:00:00:00:00 increment: - $ref: '#/components/schemas/Pattern.Flow.Ipv4.Priority.Raw.Counter' + $ref: '#/components/schemas/Pattern.Flow.EthernetPause.Src.Counter' x-field-uid: 5 decrement: - $ref: '#/components/schemas/Pattern.Flow.Ipv4.Priority.Raw.Counter' + $ref: '#/components/schemas/Pattern.Flow.EthernetPause.Src.Counter' x-field-uid: 6 metric_tags: description: |- One or more metric tags can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. type: array items: - $ref: '#/components/schemas/Pattern.Flow.Ipv4.Priority.Raw.MetricTag' + $ref: '#/components/schemas/Pattern.Flow.EthernetPause.Src.MetricTag' x-field-uid: 7 - Pattern.Flow.Ipv4.Dscp.Phb.Counter: + Pattern.Flow.EthernetPause.EtherType.Counter: description: |- integer counter pattern type: object @@ -16316,44 +20433,24 @@ components: start: type: integer x-field-uid: 1 - default: 0 + default: 34824 format: uint32 - maximum: 63 + maximum: 65535 step: type: integer x-field-uid: 2 default: 1 format: uint32 - maximum: 63 + maximum: 65535 count: type: integer x-field-uid: 3 default: 1 format: uint32 - maximum: 63 + maximum: 65535 x-constants: - default: 0 - cs1: 8 - cs2: 16 - cs3: 24 - cs4: 32 - cs5: 40 - cs6: 48 - cs7: 56 - af11: 10 - af12: 12 - af13: 14 - af21: 18 - af22: 20 - af23: 22 - af31: 26 - af32: 28 - af33: 30 - af41: 34 - af42: 36 - af43: 38 - ef46: 46 - Pattern.Flow.Ipv4.Dscp.Phb.MetricTag: + flow_control: 34824 + Pattern.Flow.EthernetPause.EtherType.MetricTag: description: |- Metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. type: object @@ -16372,20 +20469,20 @@ components: type: integer format: uint32 default: 0 - maximum: 5 + maximum: 15 x-field-uid: 2 length: description: |- Number of bits to track for metrics starting from configured offset of corresponding header field type: integer format: uint32 - default: 6 + default: 16 minimum: 1 - maximum: 6 + maximum: 16 x-field-uid: 3 - Pattern.Flow.Ipv4.Dscp.Phb: + Pattern.Flow.EthernetPause.EtherType: description: |- - Per hop behavior + Ethernet type type: object properties: choice: @@ -16409,54 +20506,34 @@ components: value: type: integer x-field-uid: 2 - default: 0 + default: 34824 format: uint32 - maximum: 63 + maximum: 65535 values: type: array items: type: integer format: uint32 - maximum: 63 + maximum: 65535 x-field-uid: 3 default: - - 0 + - 34824 increment: - $ref: '#/components/schemas/Pattern.Flow.Ipv4.Dscp.Phb.Counter' + $ref: '#/components/schemas/Pattern.Flow.EthernetPause.EtherType.Counter' x-field-uid: 5 decrement: - $ref: '#/components/schemas/Pattern.Flow.Ipv4.Dscp.Phb.Counter' + $ref: '#/components/schemas/Pattern.Flow.EthernetPause.EtherType.Counter' x-field-uid: 6 metric_tags: description: |- One or more metric tags can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. type: array items: - $ref: '#/components/schemas/Pattern.Flow.Ipv4.Dscp.Phb.MetricTag' + $ref: '#/components/schemas/Pattern.Flow.EthernetPause.EtherType.MetricTag' x-field-uid: 7 x-constants: - default: 0 - cs1: 8 - cs2: 16 - cs3: 24 - cs4: 32 - cs5: 40 - cs6: 48 - cs7: 56 - af11: 10 - af12: 12 - af13: 14 - af21: 18 - af22: 20 - af23: 22 - af31: 26 - af32: 28 - af33: 30 - af41: 34 - af42: 36 - af43: 38 - ef46: 46 - Pattern.Flow.Ipv4.Dscp.Ecn.Counter: + flow_control: 34824 + Pattern.Flow.EthernetPause.ControlOpCode.Counter: description: |- integer counter pattern type: object @@ -16464,27 +20541,22 @@ components: start: type: integer x-field-uid: 1 - default: 0 + default: 1 format: uint32 - maximum: 3 + maximum: 65535 step: type: integer x-field-uid: 2 default: 1 format: uint32 - maximum: 3 + maximum: 65535 count: type: integer x-field-uid: 3 default: 1 format: uint32 - maximum: 3 - x-constants: - non_capable: 0 - capable_transport_0: 1 - capable_transport_1: 2 - congestion_encountered: 3 - Pattern.Flow.Ipv4.Dscp.Ecn.MetricTag: + maximum: 65535 + Pattern.Flow.EthernetPause.ControlOpCode.MetricTag: description: |- Metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. type: object @@ -16503,20 +20575,20 @@ components: type: integer format: uint32 default: 0 - maximum: 1 + maximum: 15 x-field-uid: 2 length: description: |- Number of bits to track for metrics starting from configured offset of corresponding header field type: integer format: uint32 - default: 2 + default: 16 minimum: 1 - maximum: 2 + maximum: 16 x-field-uid: 3 - Pattern.Flow.Ipv4.Dscp.Ecn: + Pattern.Flow.EthernetPause.ControlOpCode: description: |- - Explicit congestion notification + Control operation code type: object properties: choice: @@ -16540,37 +20612,32 @@ components: value: type: integer x-field-uid: 2 - default: 0 + default: 1 format: uint32 - maximum: 3 + maximum: 65535 values: type: array items: type: integer format: uint32 - maximum: 3 + maximum: 65535 x-field-uid: 3 default: - - 0 + - 1 increment: - $ref: '#/components/schemas/Pattern.Flow.Ipv4.Dscp.Ecn.Counter' + $ref: '#/components/schemas/Pattern.Flow.EthernetPause.ControlOpCode.Counter' x-field-uid: 5 decrement: - $ref: '#/components/schemas/Pattern.Flow.Ipv4.Dscp.Ecn.Counter' + $ref: '#/components/schemas/Pattern.Flow.EthernetPause.ControlOpCode.Counter' x-field-uid: 6 metric_tags: description: |- One or more metric tags can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. type: array items: - $ref: '#/components/schemas/Pattern.Flow.Ipv4.Dscp.Ecn.MetricTag' + $ref: '#/components/schemas/Pattern.Flow.EthernetPause.ControlOpCode.MetricTag' x-field-uid: 7 - x-constants: - non_capable: 0 - capable_transport_0: 1 - capable_transport_1: 2 - congestion_encountered: 3 - Pattern.Flow.Ipv4.Tos.Precedence.Counter: + Pattern.Flow.EthernetPause.Time.Counter: description: |- integer counter pattern type: object @@ -16580,29 +20647,20 @@ components: x-field-uid: 1 default: 0 format: uint32 - maximum: 7 + maximum: 65535 step: type: integer x-field-uid: 2 default: 1 format: uint32 - maximum: 7 + maximum: 65535 count: type: integer x-field-uid: 3 default: 1 format: uint32 - maximum: 7 - x-constants: - routine: 0 - priority: 1 - immediate: 2 - flash: 3 - flash_override: 4 - critic_ecp: 5 - internetwork_control: 6 - network_control: 7 - Pattern.Flow.Ipv4.Tos.Precedence.MetricTag: + maximum: 65535 + Pattern.Flow.EthernetPause.Time.MetricTag: description: |- Metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. type: object @@ -16621,20 +20679,20 @@ components: type: integer format: uint32 default: 0 - maximum: 2 + maximum: 15 x-field-uid: 2 length: description: |- Number of bits to track for metrics starting from configured offset of corresponding header field type: integer format: uint32 - default: 3 + default: 16 minimum: 1 - maximum: 3 + maximum: 16 x-field-uid: 3 - Pattern.Flow.Ipv4.Tos.Precedence: + Pattern.Flow.EthernetPause.Time: description: |- - Precedence + Time type: object properties: choice: @@ -16660,39 +20718,30 @@ components: x-field-uid: 2 default: 0 format: uint32 - maximum: 7 + maximum: 65535 values: type: array items: type: integer format: uint32 - maximum: 7 + maximum: 65535 x-field-uid: 3 default: - 0 increment: - $ref: '#/components/schemas/Pattern.Flow.Ipv4.Tos.Precedence.Counter' + $ref: '#/components/schemas/Pattern.Flow.EthernetPause.Time.Counter' x-field-uid: 5 decrement: - $ref: '#/components/schemas/Pattern.Flow.Ipv4.Tos.Precedence.Counter' + $ref: '#/components/schemas/Pattern.Flow.EthernetPause.Time.Counter' x-field-uid: 6 metric_tags: description: |- One or more metric tags can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. type: array items: - $ref: '#/components/schemas/Pattern.Flow.Ipv4.Tos.Precedence.MetricTag' - x-field-uid: 7 - x-constants: - routine: 0 - priority: 1 - immediate: 2 - flash: 3 - flash_override: 4 - critic_ecp: 5 - internetwork_control: 6 - network_control: 7 - Pattern.Flow.Ipv4.Tos.Delay.Counter: + $ref: '#/components/schemas/Pattern.Flow.EthernetPause.Time.MetricTag' + x-field-uid: 7 + Pattern.Flow.Tcp.SrcPort.Counter: description: |- integer counter pattern type: object @@ -16702,23 +20751,20 @@ components: x-field-uid: 1 default: 0 format: uint32 - maximum: 1 + maximum: 65535 step: type: integer x-field-uid: 2 default: 1 format: uint32 - maximum: 1 + maximum: 65535 count: type: integer x-field-uid: 3 default: 1 format: uint32 - maximum: 1 - x-constants: - normal: 0 - low: 1 - Pattern.Flow.Ipv4.Tos.Delay.MetricTag: + maximum: 65535 + Pattern.Flow.Tcp.SrcPort.MetricTag: description: |- Metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. type: object @@ -16737,20 +20783,20 @@ components: type: integer format: uint32 default: 0 - maximum: 0 + maximum: 15 x-field-uid: 2 length: description: |- Number of bits to track for metrics starting from configured offset of corresponding header field type: integer format: uint32 - default: 1 + default: 16 minimum: 1 - maximum: 1 + maximum: 16 x-field-uid: 3 - Pattern.Flow.Ipv4.Tos.Delay: + Pattern.Flow.Tcp.SrcPort: description: |- - Delay + Source port type: object properties: choice: @@ -16776,33 +20822,30 @@ components: x-field-uid: 2 default: 0 format: uint32 - maximum: 1 + maximum: 65535 values: type: array items: type: integer format: uint32 - maximum: 1 + maximum: 65535 x-field-uid: 3 default: - 0 increment: - $ref: '#/components/schemas/Pattern.Flow.Ipv4.Tos.Delay.Counter' + $ref: '#/components/schemas/Pattern.Flow.Tcp.SrcPort.Counter' x-field-uid: 5 decrement: - $ref: '#/components/schemas/Pattern.Flow.Ipv4.Tos.Delay.Counter' + $ref: '#/components/schemas/Pattern.Flow.Tcp.SrcPort.Counter' x-field-uid: 6 metric_tags: description: |- One or more metric tags can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. type: array items: - $ref: '#/components/schemas/Pattern.Flow.Ipv4.Tos.Delay.MetricTag' + $ref: '#/components/schemas/Pattern.Flow.Tcp.SrcPort.MetricTag' x-field-uid: 7 - x-constants: - normal: 0 - low: 1 - Pattern.Flow.Ipv4.Tos.Throughput.Counter: + Pattern.Flow.Tcp.DstPort.Counter: description: |- integer counter pattern type: object @@ -16812,23 +20855,20 @@ components: x-field-uid: 1 default: 0 format: uint32 - maximum: 1 + maximum: 65535 step: type: integer x-field-uid: 2 default: 1 format: uint32 - maximum: 1 + maximum: 65535 count: type: integer x-field-uid: 3 default: 1 format: uint32 - maximum: 1 - x-constants: - normal: 0 - low: 1 - Pattern.Flow.Ipv4.Tos.Throughput.MetricTag: + maximum: 65535 + Pattern.Flow.Tcp.DstPort.MetricTag: description: |- Metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. type: object @@ -16847,20 +20887,20 @@ components: type: integer format: uint32 default: 0 - maximum: 0 + maximum: 15 x-field-uid: 2 length: description: |- Number of bits to track for metrics starting from configured offset of corresponding header field type: integer format: uint32 - default: 1 + default: 16 minimum: 1 - maximum: 1 + maximum: 16 x-field-uid: 3 - Pattern.Flow.Ipv4.Tos.Throughput: + Pattern.Flow.Tcp.DstPort: description: |- - Throughput + Destination port type: object properties: choice: @@ -16886,33 +20926,30 @@ components: x-field-uid: 2 default: 0 format: uint32 - maximum: 1 + maximum: 65535 values: type: array items: type: integer format: uint32 - maximum: 1 + maximum: 65535 x-field-uid: 3 default: - 0 increment: - $ref: '#/components/schemas/Pattern.Flow.Ipv4.Tos.Throughput.Counter' + $ref: '#/components/schemas/Pattern.Flow.Tcp.DstPort.Counter' x-field-uid: 5 decrement: - $ref: '#/components/schemas/Pattern.Flow.Ipv4.Tos.Throughput.Counter' + $ref: '#/components/schemas/Pattern.Flow.Tcp.DstPort.Counter' x-field-uid: 6 metric_tags: description: |- One or more metric tags can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. type: array items: - $ref: '#/components/schemas/Pattern.Flow.Ipv4.Tos.Throughput.MetricTag' + $ref: '#/components/schemas/Pattern.Flow.Tcp.DstPort.MetricTag' x-field-uid: 7 - x-constants: - normal: 0 - low: 1 - Pattern.Flow.Ipv4.Tos.Reliability.Counter: + Pattern.Flow.Tcp.SeqNum.Counter: description: |- integer counter pattern type: object @@ -16922,23 +20959,17 @@ components: x-field-uid: 1 default: 0 format: uint32 - maximum: 1 step: type: integer x-field-uid: 2 default: 1 format: uint32 - maximum: 1 count: type: integer x-field-uid: 3 default: 1 format: uint32 - maximum: 1 - x-constants: - normal: 0 - low: 1 - Pattern.Flow.Ipv4.Tos.Reliability.MetricTag: + Pattern.Flow.Tcp.SeqNum.MetricTag: description: |- Metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. type: object @@ -16957,20 +20988,20 @@ components: type: integer format: uint32 default: 0 - maximum: 0 + maximum: 31 x-field-uid: 2 length: description: |- Number of bits to track for metrics starting from configured offset of corresponding header field type: integer format: uint32 - default: 1 + default: 32 minimum: 1 - maximum: 1 + maximum: 32 x-field-uid: 3 - Pattern.Flow.Ipv4.Tos.Reliability: + Pattern.Flow.Tcp.SeqNum: description: |- - Reliability + Sequence number type: object properties: choice: @@ -16996,33 +21027,28 @@ components: x-field-uid: 2 default: 0 format: uint32 - maximum: 1 values: type: array items: type: integer format: uint32 - maximum: 1 x-field-uid: 3 default: - 0 increment: - $ref: '#/components/schemas/Pattern.Flow.Ipv4.Tos.Reliability.Counter' + $ref: '#/components/schemas/Pattern.Flow.Tcp.SeqNum.Counter' x-field-uid: 5 decrement: - $ref: '#/components/schemas/Pattern.Flow.Ipv4.Tos.Reliability.Counter' + $ref: '#/components/schemas/Pattern.Flow.Tcp.SeqNum.Counter' x-field-uid: 6 metric_tags: description: |- One or more metric tags can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. type: array items: - $ref: '#/components/schemas/Pattern.Flow.Ipv4.Tos.Reliability.MetricTag' + $ref: '#/components/schemas/Pattern.Flow.Tcp.SeqNum.MetricTag' x-field-uid: 7 - x-constants: - normal: 0 - low: 1 - Pattern.Flow.Ipv4.Tos.Monetary.Counter: + Pattern.Flow.Tcp.AckNum.Counter: description: |- integer counter pattern type: object @@ -17032,23 +21058,17 @@ components: x-field-uid: 1 default: 0 format: uint32 - maximum: 1 step: type: integer x-field-uid: 2 default: 1 format: uint32 - maximum: 1 count: type: integer x-field-uid: 3 default: 1 format: uint32 - maximum: 1 - x-constants: - normal: 0 - low: 1 - Pattern.Flow.Ipv4.Tos.Monetary.MetricTag: + Pattern.Flow.Tcp.AckNum.MetricTag: description: |- Metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. type: object @@ -17067,20 +21087,20 @@ components: type: integer format: uint32 default: 0 - maximum: 0 + maximum: 31 x-field-uid: 2 length: description: |- Number of bits to track for metrics starting from configured offset of corresponding header field type: integer format: uint32 - default: 1 + default: 32 minimum: 1 - maximum: 1 + maximum: 32 x-field-uid: 3 - Pattern.Flow.Ipv4.Tos.Monetary: + Pattern.Flow.Tcp.AckNum: description: |- - Monetary + Acknowledgement number type: object properties: choice: @@ -17106,33 +21126,28 @@ components: x-field-uid: 2 default: 0 format: uint32 - maximum: 1 values: type: array items: type: integer format: uint32 - maximum: 1 x-field-uid: 3 default: - 0 increment: - $ref: '#/components/schemas/Pattern.Flow.Ipv4.Tos.Monetary.Counter' + $ref: '#/components/schemas/Pattern.Flow.Tcp.AckNum.Counter' x-field-uid: 5 decrement: - $ref: '#/components/schemas/Pattern.Flow.Ipv4.Tos.Monetary.Counter' + $ref: '#/components/schemas/Pattern.Flow.Tcp.AckNum.Counter' x-field-uid: 6 metric_tags: description: |- One or more metric tags can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. type: array items: - $ref: '#/components/schemas/Pattern.Flow.Ipv4.Tos.Monetary.MetricTag' + $ref: '#/components/schemas/Pattern.Flow.Tcp.AckNum.MetricTag' x-field-uid: 7 - x-constants: - normal: 0 - low: 1 - Pattern.Flow.Ipv4.Tos.Unused.Counter: + Pattern.Flow.Tcp.DataOffset.Counter: description: |- integer counter pattern type: object @@ -17142,20 +21157,20 @@ components: x-field-uid: 1 default: 0 format: uint32 - maximum: 1 + maximum: 15 step: type: integer x-field-uid: 2 default: 1 format: uint32 - maximum: 1 + maximum: 15 count: type: integer x-field-uid: 3 default: 1 format: uint32 - maximum: 1 - Pattern.Flow.Ipv4.Tos.Unused.MetricTag: + maximum: 15 + Pattern.Flow.Tcp.DataOffset.MetricTag: description: |- Metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. type: object @@ -17174,20 +21189,20 @@ components: type: integer format: uint32 default: 0 - maximum: 0 + maximum: 3 x-field-uid: 2 length: description: |- Number of bits to track for metrics starting from configured offset of corresponding header field type: integer format: uint32 - default: 1 + default: 4 minimum: 1 - maximum: 1 + maximum: 4 x-field-uid: 3 - Pattern.Flow.Ipv4.Tos.Unused: + Pattern.Flow.Tcp.DataOffset: description: |- - Unused + The number of 32 bit words in the TCP header. This indicates where the data begins. type: object properties: choice: @@ -17213,30 +21228,30 @@ components: x-field-uid: 2 default: 0 format: uint32 - maximum: 1 + maximum: 15 values: type: array items: type: integer format: uint32 - maximum: 1 + maximum: 15 x-field-uid: 3 default: - 0 increment: - $ref: '#/components/schemas/Pattern.Flow.Ipv4.Tos.Unused.Counter' + $ref: '#/components/schemas/Pattern.Flow.Tcp.DataOffset.Counter' x-field-uid: 5 decrement: - $ref: '#/components/schemas/Pattern.Flow.Ipv4.Tos.Unused.Counter' + $ref: '#/components/schemas/Pattern.Flow.Tcp.DataOffset.Counter' x-field-uid: 6 metric_tags: description: |- One or more metric tags can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. type: array items: - $ref: '#/components/schemas/Pattern.Flow.Ipv4.Tos.Unused.MetricTag' + $ref: '#/components/schemas/Pattern.Flow.Tcp.DataOffset.MetricTag' x-field-uid: 7 - Pattern.Flow.Ipv6.Version.Counter: + Pattern.Flow.Tcp.EcnNs.Counter: description: |- integer counter pattern type: object @@ -17244,22 +21259,22 @@ components: start: type: integer x-field-uid: 1 - default: 6 + default: 0 format: uint32 - maximum: 15 + maximum: 1 step: type: integer x-field-uid: 2 default: 1 format: uint32 - maximum: 15 + maximum: 1 count: type: integer x-field-uid: 3 default: 1 format: uint32 - maximum: 15 - Pattern.Flow.Ipv6.Version.MetricTag: + maximum: 1 + Pattern.Flow.Tcp.EcnNs.MetricTag: description: |- Metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. type: object @@ -17278,20 +21293,20 @@ components: type: integer format: uint32 default: 0 - maximum: 3 + maximum: 0 x-field-uid: 2 length: description: |- Number of bits to track for metrics starting from configured offset of corresponding header field type: integer format: uint32 - default: 4 + default: 1 minimum: 1 - maximum: 4 + maximum: 1 x-field-uid: 3 - Pattern.Flow.Ipv6.Version: + Pattern.Flow.Tcp.EcnNs: description: |- - Version number + Explicit congestion notification, concealment protection. type: object properties: choice: @@ -17315,32 +21330,32 @@ components: value: type: integer x-field-uid: 2 - default: 6 + default: 0 format: uint32 - maximum: 15 + maximum: 1 values: type: array items: type: integer format: uint32 - maximum: 15 + maximum: 1 x-field-uid: 3 default: - - 6 + - 0 increment: - $ref: '#/components/schemas/Pattern.Flow.Ipv6.Version.Counter' + $ref: '#/components/schemas/Pattern.Flow.Tcp.EcnNs.Counter' x-field-uid: 5 decrement: - $ref: '#/components/schemas/Pattern.Flow.Ipv6.Version.Counter' + $ref: '#/components/schemas/Pattern.Flow.Tcp.EcnNs.Counter' x-field-uid: 6 metric_tags: description: |- One or more metric tags can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. type: array items: - $ref: '#/components/schemas/Pattern.Flow.Ipv6.Version.MetricTag' + $ref: '#/components/schemas/Pattern.Flow.Tcp.EcnNs.MetricTag' x-field-uid: 7 - Pattern.Flow.Ipv6.TrafficClass.Counter: + Pattern.Flow.Tcp.EcnCwr.Counter: description: |- integer counter pattern type: object @@ -17350,20 +21365,20 @@ components: x-field-uid: 1 default: 0 format: uint32 - maximum: 255 + maximum: 1 step: type: integer x-field-uid: 2 default: 1 format: uint32 - maximum: 255 + maximum: 1 count: type: integer x-field-uid: 3 default: 1 format: uint32 - maximum: 255 - Pattern.Flow.Ipv6.TrafficClass.MetricTag: + maximum: 1 + Pattern.Flow.Tcp.EcnCwr.MetricTag: description: |- Metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. type: object @@ -17382,20 +21397,20 @@ components: type: integer format: uint32 default: 0 - maximum: 7 + maximum: 0 x-field-uid: 2 length: description: |- Number of bits to track for metrics starting from configured offset of corresponding header field type: integer format: uint32 - default: 8 + default: 1 minimum: 1 - maximum: 8 + maximum: 1 x-field-uid: 3 - Pattern.Flow.Ipv6.TrafficClass: + Pattern.Flow.Tcp.EcnCwr: description: |- - Traffic class + Explicit congestion notification, congestion window reduced. type: object properties: choice: @@ -17421,30 +21436,30 @@ components: x-field-uid: 2 default: 0 format: uint32 - maximum: 255 + maximum: 1 values: type: array items: type: integer format: uint32 - maximum: 255 + maximum: 1 x-field-uid: 3 default: - 0 increment: - $ref: '#/components/schemas/Pattern.Flow.Ipv6.TrafficClass.Counter' + $ref: '#/components/schemas/Pattern.Flow.Tcp.EcnCwr.Counter' x-field-uid: 5 decrement: - $ref: '#/components/schemas/Pattern.Flow.Ipv6.TrafficClass.Counter' + $ref: '#/components/schemas/Pattern.Flow.Tcp.EcnCwr.Counter' x-field-uid: 6 metric_tags: description: |- One or more metric tags can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. type: array items: - $ref: '#/components/schemas/Pattern.Flow.Ipv6.TrafficClass.MetricTag' + $ref: '#/components/schemas/Pattern.Flow.Tcp.EcnCwr.MetricTag' x-field-uid: 7 - Pattern.Flow.Ipv6.FlowLabel.Counter: + Pattern.Flow.Tcp.EcnEcho.Counter: description: |- integer counter pattern type: object @@ -17454,20 +21469,20 @@ components: x-field-uid: 1 default: 0 format: uint32 - maximum: 1048575 + maximum: 1 step: type: integer x-field-uid: 2 default: 1 format: uint32 - maximum: 1048575 + maximum: 1 count: type: integer x-field-uid: 3 default: 1 format: uint32 - maximum: 1048575 - Pattern.Flow.Ipv6.FlowLabel.MetricTag: + maximum: 1 + Pattern.Flow.Tcp.EcnEcho.MetricTag: description: |- Metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. type: object @@ -17486,20 +21501,20 @@ components: type: integer format: uint32 default: 0 - maximum: 19 + maximum: 0 x-field-uid: 2 length: description: |- Number of bits to track for metrics starting from configured offset of corresponding header field type: integer format: uint32 - default: 20 + default: 1 minimum: 1 - maximum: 20 + maximum: 1 x-field-uid: 3 - Pattern.Flow.Ipv6.FlowLabel: + Pattern.Flow.Tcp.EcnEcho: description: |- - Flow label + Explicit congestion notification, echo. 1 indicates the peer is ecn capable. 0 indicates that a packet with ipv4.ecn = 11 in the ip header was received during normal transmission. type: object properties: choice: @@ -17525,30 +21540,30 @@ components: x-field-uid: 2 default: 0 format: uint32 - maximum: 1048575 + maximum: 1 values: type: array items: type: integer format: uint32 - maximum: 1048575 + maximum: 1 x-field-uid: 3 default: - 0 increment: - $ref: '#/components/schemas/Pattern.Flow.Ipv6.FlowLabel.Counter' + $ref: '#/components/schemas/Pattern.Flow.Tcp.EcnEcho.Counter' x-field-uid: 5 decrement: - $ref: '#/components/schemas/Pattern.Flow.Ipv6.FlowLabel.Counter' + $ref: '#/components/schemas/Pattern.Flow.Tcp.EcnEcho.Counter' x-field-uid: 6 metric_tags: description: |- One or more metric tags can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. type: array items: - $ref: '#/components/schemas/Pattern.Flow.Ipv6.FlowLabel.MetricTag' + $ref: '#/components/schemas/Pattern.Flow.Tcp.EcnEcho.MetricTag' x-field-uid: 7 - Pattern.Flow.Ipv6.PayloadLength.Counter: + Pattern.Flow.Tcp.CtlUrg.Counter: description: |- integer counter pattern type: object @@ -17558,20 +21573,20 @@ components: x-field-uid: 1 default: 0 format: uint32 - maximum: 65535 + maximum: 1 step: type: integer x-field-uid: 2 default: 1 format: uint32 - maximum: 65535 + maximum: 1 count: type: integer x-field-uid: 3 default: 1 format: uint32 - maximum: 65535 - Pattern.Flow.Ipv6.PayloadLength.MetricTag: + maximum: 1 + Pattern.Flow.Tcp.CtlUrg.MetricTag: description: |- Metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. type: object @@ -17590,20 +21605,20 @@ components: type: integer format: uint32 default: 0 - maximum: 15 + maximum: 0 x-field-uid: 2 length: description: |- Number of bits to track for metrics starting from configured offset of corresponding header field type: integer format: uint32 - default: 16 + default: 1 minimum: 1 - maximum: 16 + maximum: 1 x-field-uid: 3 - Pattern.Flow.Ipv6.PayloadLength: + Pattern.Flow.Tcp.CtlUrg: description: |- - Payload length + A value of 1 indicates that the urgent pointer field is significant. type: object properties: choice: @@ -17613,18 +21628,15 @@ components: x-field-uid: 2 values: x-field-uid: 3 - auto: - x-field-uid: 1 increment: x-field-uid: 4 decrement: x-field-uid: 5 - default: auto + default: value x-field-uid: 1 enum: - value - values - - auto - increment - decrement value: @@ -17632,40 +21644,30 @@ components: x-field-uid: 2 default: 0 format: uint32 - maximum: 65535 + maximum: 1 values: type: array items: type: integer format: uint32 - maximum: 65535 + maximum: 1 x-field-uid: 3 default: - 0 - auto: - description: |- - The OTG implementation can provide a system generated - value for this property. If the OTG is unable to generate a value - the default value must be used. - type: integer - x-field-uid: 4 - default: 0 - format: uint32 - maximum: 65535 increment: - $ref: '#/components/schemas/Pattern.Flow.Ipv6.PayloadLength.Counter' - x-field-uid: 6 + $ref: '#/components/schemas/Pattern.Flow.Tcp.CtlUrg.Counter' + x-field-uid: 5 decrement: - $ref: '#/components/schemas/Pattern.Flow.Ipv6.PayloadLength.Counter' - x-field-uid: 7 + $ref: '#/components/schemas/Pattern.Flow.Tcp.CtlUrg.Counter' + x-field-uid: 6 metric_tags: description: |- One or more metric tags can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. type: array items: - $ref: '#/components/schemas/Pattern.Flow.Ipv6.PayloadLength.MetricTag' - x-field-uid: 8 - Pattern.Flow.Ipv6.NextHeader.Counter: + $ref: '#/components/schemas/Pattern.Flow.Tcp.CtlUrg.MetricTag' + x-field-uid: 7 + Pattern.Flow.Tcp.CtlAck.Counter: description: |- integer counter pattern type: object @@ -17673,34 +21675,22 @@ components: start: type: integer x-field-uid: 1 - default: 59 + default: 0 format: uint32 - maximum: 255 + maximum: 1 step: type: integer x-field-uid: 2 default: 1 format: uint32 - maximum: 255 + maximum: 1 count: type: integer x-field-uid: 3 default: 1 format: uint32 - maximum: 255 - x-constants: - hopopt: 0 - icmp: 1 - igmp: 2 - ggp: 3 - ip_in_ip: 4 - st: 5 - tcp: 6 - cpt: 7 - egp: 8 - igp: 9 - no_next_header: 59 - Pattern.Flow.Ipv6.NextHeader.MetricTag: + maximum: 1 + Pattern.Flow.Tcp.CtlAck.MetricTag: description: |- Metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. type: object @@ -17719,20 +21709,20 @@ components: type: integer format: uint32 default: 0 - maximum: 7 + maximum: 0 x-field-uid: 2 length: description: |- Number of bits to track for metrics starting from configured offset of corresponding header field type: integer format: uint32 - default: 8 + default: 1 minimum: 1 - maximum: 8 + maximum: 1 x-field-uid: 3 - Pattern.Flow.Ipv6.NextHeader: + Pattern.Flow.Tcp.CtlAck: description: |- - Next header + A value of 1 indicates that the ackknowledgment field is significant. type: object properties: choice: @@ -17742,71 +21732,46 @@ components: x-field-uid: 2 values: x-field-uid: 3 - auto: - x-field-uid: 1 increment: x-field-uid: 4 decrement: x-field-uid: 5 - default: auto + default: value x-field-uid: 1 enum: - value - values - - auto - increment - decrement value: type: integer x-field-uid: 2 - default: 59 + default: 0 format: uint32 - maximum: 255 + maximum: 1 values: type: array items: type: integer format: uint32 - maximum: 255 + maximum: 1 x-field-uid: 3 default: - - 59 - auto: - description: |- - The OTG implementation can provide a system generated - value for this property. If the OTG is unable to generate a value - the default value must be used. - type: integer - x-field-uid: 4 - default: 59 - format: uint32 - maximum: 255 + - 0 increment: - $ref: '#/components/schemas/Pattern.Flow.Ipv6.NextHeader.Counter' - x-field-uid: 6 + $ref: '#/components/schemas/Pattern.Flow.Tcp.CtlAck.Counter' + x-field-uid: 5 decrement: - $ref: '#/components/schemas/Pattern.Flow.Ipv6.NextHeader.Counter' - x-field-uid: 7 + $ref: '#/components/schemas/Pattern.Flow.Tcp.CtlAck.Counter' + x-field-uid: 6 metric_tags: description: |- One or more metric tags can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. type: array items: - $ref: '#/components/schemas/Pattern.Flow.Ipv6.NextHeader.MetricTag' - x-field-uid: 8 - x-constants: - hopopt: 0 - icmp: 1 - igmp: 2 - ggp: 3 - ip_in_ip: 4 - st: 5 - tcp: 6 - cpt: 7 - egp: 8 - igp: 9 - no_next_header: 59 - Pattern.Flow.Ipv6.HopLimit.Counter: + $ref: '#/components/schemas/Pattern.Flow.Tcp.CtlAck.MetricTag' + x-field-uid: 7 + Pattern.Flow.Tcp.CtlPsh.Counter: description: |- integer counter pattern type: object @@ -17814,22 +21779,22 @@ components: start: type: integer x-field-uid: 1 - default: 64 + default: 0 format: uint32 - maximum: 255 + maximum: 1 step: type: integer x-field-uid: 2 default: 1 format: uint32 - maximum: 255 + maximum: 1 count: type: integer x-field-uid: 3 default: 1 format: uint32 - maximum: 255 - Pattern.Flow.Ipv6.HopLimit.MetricTag: + maximum: 1 + Pattern.Flow.Tcp.CtlPsh.MetricTag: description: |- Metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. type: object @@ -17848,20 +21813,19 @@ components: type: integer format: uint32 default: 0 - maximum: 7 + maximum: 0 x-field-uid: 2 length: description: |- Number of bits to track for metrics starting from configured offset of corresponding header field type: integer format: uint32 - default: 8 + default: 1 minimum: 1 - maximum: 8 + maximum: 1 x-field-uid: 3 - Pattern.Flow.Ipv6.HopLimit: - description: |- - Hop limit + Pattern.Flow.Tcp.CtlPsh: + description: "Asks to push the buffered data to the receiving application. " type: object properties: choice: @@ -17885,52 +21849,55 @@ components: value: type: integer x-field-uid: 2 - default: 64 + default: 0 format: uint32 - maximum: 255 + maximum: 1 values: type: array items: type: integer format: uint32 - maximum: 255 + maximum: 1 x-field-uid: 3 default: - - 64 + - 0 increment: - $ref: '#/components/schemas/Pattern.Flow.Ipv6.HopLimit.Counter' + $ref: '#/components/schemas/Pattern.Flow.Tcp.CtlPsh.Counter' x-field-uid: 5 decrement: - $ref: '#/components/schemas/Pattern.Flow.Ipv6.HopLimit.Counter' + $ref: '#/components/schemas/Pattern.Flow.Tcp.CtlPsh.Counter' x-field-uid: 6 metric_tags: description: |- One or more metric tags can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. type: array items: - $ref: '#/components/schemas/Pattern.Flow.Ipv6.HopLimit.MetricTag' + $ref: '#/components/schemas/Pattern.Flow.Tcp.CtlPsh.MetricTag' x-field-uid: 7 - Pattern.Flow.Ipv6.Src.Counter: + Pattern.Flow.Tcp.CtlRst.Counter: description: |- - ipv6 counter pattern + integer counter pattern type: object properties: start: - type: string + type: integer x-field-uid: 1 - default: ::0 - format: ipv6 + default: 0 + format: uint32 + maximum: 1 step: - type: string + type: integer x-field-uid: 2 - default: ::1 - format: ipv6 + default: 1 + format: uint32 + maximum: 1 count: type: integer x-field-uid: 3 default: 1 format: uint32 - Pattern.Flow.Ipv6.Src.MetricTag: + maximum: 1 + Pattern.Flow.Tcp.CtlRst.MetricTag: description: |- Metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. type: object @@ -17949,20 +21916,19 @@ components: type: integer format: uint32 default: 0 - maximum: 127 + maximum: 0 x-field-uid: 2 length: description: |- Number of bits to track for metrics starting from configured offset of corresponding header field type: integer format: uint32 - default: 128 + default: 1 minimum: 1 - maximum: 128 + maximum: 1 x-field-uid: 3 - Pattern.Flow.Ipv6.Src: - description: |- - Source address + Pattern.Flow.Tcp.CtlRst: + description: "Reset the connection. " type: object properties: choice: @@ -17984,52 +21950,57 @@ components: - increment - decrement value: - type: string + type: integer x-field-uid: 2 - default: ::0 - format: ipv6 + default: 0 + format: uint32 + maximum: 1 values: type: array items: - type: string - format: ipv6 + type: integer + format: uint32 + maximum: 1 x-field-uid: 3 default: - - ::0 + - 0 increment: - $ref: '#/components/schemas/Pattern.Flow.Ipv6.Src.Counter' + $ref: '#/components/schemas/Pattern.Flow.Tcp.CtlRst.Counter' x-field-uid: 5 decrement: - $ref: '#/components/schemas/Pattern.Flow.Ipv6.Src.Counter' + $ref: '#/components/schemas/Pattern.Flow.Tcp.CtlRst.Counter' x-field-uid: 6 metric_tags: description: |- One or more metric tags can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. type: array items: - $ref: '#/components/schemas/Pattern.Flow.Ipv6.Src.MetricTag' + $ref: '#/components/schemas/Pattern.Flow.Tcp.CtlRst.MetricTag' x-field-uid: 7 - Pattern.Flow.Ipv6.Dst.Counter: + Pattern.Flow.Tcp.CtlSyn.Counter: description: |- - ipv6 counter pattern + integer counter pattern type: object properties: start: - type: string + type: integer x-field-uid: 1 - default: ::0 - format: ipv6 + default: 0 + format: uint32 + maximum: 1 step: - type: string + type: integer x-field-uid: 2 - default: ::1 - format: ipv6 + default: 1 + format: uint32 + maximum: 1 count: type: integer x-field-uid: 3 default: 1 format: uint32 - Pattern.Flow.Ipv6.Dst.MetricTag: + maximum: 1 + Pattern.Flow.Tcp.CtlSyn.MetricTag: description: |- Metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. type: object @@ -18048,20 +22019,19 @@ components: type: integer format: uint32 default: 0 - maximum: 127 + maximum: 0 x-field-uid: 2 length: description: |- Number of bits to track for metrics starting from configured offset of corresponding header field type: integer format: uint32 - default: 128 + default: 1 minimum: 1 - maximum: 128 + maximum: 1 x-field-uid: 3 - Pattern.Flow.Ipv6.Dst: - description: |- - Destination address + Pattern.Flow.Tcp.CtlSyn: + description: "Synchronize sequenece numbers. " type: object properties: choice: @@ -18083,52 +22053,57 @@ components: - increment - decrement value: - type: string + type: integer x-field-uid: 2 - default: ::0 - format: ipv6 + default: 0 + format: uint32 + maximum: 1 values: type: array items: - type: string - format: ipv6 + type: integer + format: uint32 + maximum: 1 x-field-uid: 3 default: - - ::0 + - 0 increment: - $ref: '#/components/schemas/Pattern.Flow.Ipv6.Dst.Counter' + $ref: '#/components/schemas/Pattern.Flow.Tcp.CtlSyn.Counter' x-field-uid: 5 decrement: - $ref: '#/components/schemas/Pattern.Flow.Ipv6.Dst.Counter' + $ref: '#/components/schemas/Pattern.Flow.Tcp.CtlSyn.Counter' x-field-uid: 6 metric_tags: description: |- One or more metric tags can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. type: array items: - $ref: '#/components/schemas/Pattern.Flow.Ipv6.Dst.MetricTag' + $ref: '#/components/schemas/Pattern.Flow.Tcp.CtlSyn.MetricTag' x-field-uid: 7 - Pattern.Flow.PfcPause.Dst.Counter: + Pattern.Flow.Tcp.CtlFin.Counter: description: |- - mac counter pattern + integer counter pattern type: object properties: start: - type: string + type: integer x-field-uid: 1 - default: 01:80:c2:00:00:01 - format: mac + default: 0 + format: uint32 + maximum: 1 step: - type: string + type: integer x-field-uid: 2 - default: 00:00:00:00:00:01 - format: mac + default: 1 + format: uint32 + maximum: 1 count: type: integer x-field-uid: 3 default: 1 format: uint32 - Pattern.Flow.PfcPause.Dst.MetricTag: + maximum: 1 + Pattern.Flow.Tcp.CtlFin.MetricTag: description: |- Metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. type: object @@ -18147,20 +22122,19 @@ components: type: integer format: uint32 default: 0 - maximum: 47 + maximum: 0 x-field-uid: 2 length: description: |- Number of bits to track for metrics starting from configured offset of corresponding header field type: integer format: uint32 - default: 48 + default: 1 minimum: 1 - maximum: 48 + maximum: 1 x-field-uid: 3 - Pattern.Flow.PfcPause.Dst: - description: |- - Destination MAC address + Pattern.Flow.Tcp.CtlFin: + description: "Last packet from the sender. " type: object properties: choice: @@ -18182,52 +22156,57 @@ components: - increment - decrement value: - type: string + type: integer x-field-uid: 2 - default: 01:80:c2:00:00:01 - format: mac + default: 0 + format: uint32 + maximum: 1 values: type: array items: - type: string - format: mac + type: integer + format: uint32 + maximum: 1 x-field-uid: 3 default: - - 01:80:c2:00:00:01 + - 0 increment: - $ref: '#/components/schemas/Pattern.Flow.PfcPause.Dst.Counter' + $ref: '#/components/schemas/Pattern.Flow.Tcp.CtlFin.Counter' x-field-uid: 5 decrement: - $ref: '#/components/schemas/Pattern.Flow.PfcPause.Dst.Counter' + $ref: '#/components/schemas/Pattern.Flow.Tcp.CtlFin.Counter' x-field-uid: 6 metric_tags: description: |- One or more metric tags can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. type: array items: - $ref: '#/components/schemas/Pattern.Flow.PfcPause.Dst.MetricTag' + $ref: '#/components/schemas/Pattern.Flow.Tcp.CtlFin.MetricTag' x-field-uid: 7 - Pattern.Flow.PfcPause.Src.Counter: + Pattern.Flow.Tcp.Window.Counter: description: |- - mac counter pattern + integer counter pattern type: object properties: start: - type: string + type: integer x-field-uid: 1 - default: 00:00:00:00:00:00 - format: mac + default: 0 + format: uint32 + maximum: 65535 step: - type: string + type: integer x-field-uid: 2 - default: 00:00:00:00:00:01 - format: mac + default: 1 + format: uint32 + maximum: 65535 count: type: integer x-field-uid: 3 default: 1 format: uint32 - Pattern.Flow.PfcPause.Src.MetricTag: + maximum: 65535 + Pattern.Flow.Tcp.Window.MetricTag: description: |- Metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. type: object @@ -18246,20 +22225,20 @@ components: type: integer format: uint32 default: 0 - maximum: 47 + maximum: 15 x-field-uid: 2 length: description: |- Number of bits to track for metrics starting from configured offset of corresponding header field type: integer format: uint32 - default: 48 + default: 16 minimum: 1 - maximum: 48 + maximum: 16 x-field-uid: 3 - Pattern.Flow.PfcPause.Src: + Pattern.Flow.Tcp.Window: description: |- - Source MAC address + Tcp connection window. type: object properties: choice: @@ -18281,32 +22260,34 @@ components: - increment - decrement value: - type: string + type: integer x-field-uid: 2 - default: 00:00:00:00:00:00 - format: mac + default: 0 + format: uint32 + maximum: 65535 values: type: array items: - type: string - format: mac + type: integer + format: uint32 + maximum: 65535 x-field-uid: 3 default: - - 00:00:00:00:00:00 + - 0 increment: - $ref: '#/components/schemas/Pattern.Flow.PfcPause.Src.Counter' + $ref: '#/components/schemas/Pattern.Flow.Tcp.Window.Counter' x-field-uid: 5 decrement: - $ref: '#/components/schemas/Pattern.Flow.PfcPause.Src.Counter' + $ref: '#/components/schemas/Pattern.Flow.Tcp.Window.Counter' x-field-uid: 6 metric_tags: description: |- One or more metric tags can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. type: array items: - $ref: '#/components/schemas/Pattern.Flow.PfcPause.Src.MetricTag' + $ref: '#/components/schemas/Pattern.Flow.Tcp.Window.MetricTag' x-field-uid: 7 - Pattern.Flow.PfcPause.EtherType.Counter: + Pattern.Flow.Udp.SrcPort.Counter: description: |- integer counter pattern type: object @@ -18314,7 +22295,7 @@ components: start: type: integer x-field-uid: 1 - default: 34824 + default: 0 format: uint32 maximum: 65535 step: @@ -18329,9 +22310,7 @@ components: default: 1 format: uint32 maximum: 65535 - x-constants: - x8808: 34824 - Pattern.Flow.PfcPause.EtherType.MetricTag: + Pattern.Flow.Udp.SrcPort.MetricTag: description: |- Metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. type: object @@ -18361,9 +22340,9 @@ components: minimum: 1 maximum: 16 x-field-uid: 3 - Pattern.Flow.PfcPause.EtherType: + Pattern.Flow.Udp.SrcPort: description: |- - Ethernet type + Source port type: object properties: choice: @@ -18387,7 +22366,7 @@ components: value: type: integer x-field-uid: 2 - default: 34824 + default: 0 format: uint32 maximum: 65535 values: @@ -18398,23 +22377,21 @@ components: maximum: 65535 x-field-uid: 3 default: - - 34824 + - 0 increment: - $ref: '#/components/schemas/Pattern.Flow.PfcPause.EtherType.Counter' + $ref: '#/components/schemas/Pattern.Flow.Udp.SrcPort.Counter' x-field-uid: 5 decrement: - $ref: '#/components/schemas/Pattern.Flow.PfcPause.EtherType.Counter' + $ref: '#/components/schemas/Pattern.Flow.Udp.SrcPort.Counter' x-field-uid: 6 metric_tags: description: |- One or more metric tags can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. type: array items: - $ref: '#/components/schemas/Pattern.Flow.PfcPause.EtherType.MetricTag' + $ref: '#/components/schemas/Pattern.Flow.Udp.SrcPort.MetricTag' x-field-uid: 7 - x-constants: - x8808: 34824 - Pattern.Flow.PfcPause.ControlOpCode.Counter: + Pattern.Flow.Udp.DstPort.Counter: description: |- integer counter pattern type: object @@ -18422,7 +22399,7 @@ components: start: type: integer x-field-uid: 1 - default: 257 + default: 0 format: uint32 maximum: 65535 step: @@ -18437,7 +22414,7 @@ components: default: 1 format: uint32 maximum: 65535 - Pattern.Flow.PfcPause.ControlOpCode.MetricTag: + Pattern.Flow.Udp.DstPort.MetricTag: description: |- Metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. type: object @@ -18467,9 +22444,9 @@ components: minimum: 1 maximum: 16 x-field-uid: 3 - Pattern.Flow.PfcPause.ControlOpCode: + Pattern.Flow.Udp.DstPort: description: |- - Control operation code + Destination port type: object properties: choice: @@ -18493,7 +22470,7 @@ components: value: type: integer x-field-uid: 2 - default: 257 + default: 0 format: uint32 maximum: 65535 values: @@ -18504,21 +22481,21 @@ components: maximum: 65535 x-field-uid: 3 default: - - 257 + - 0 increment: - $ref: '#/components/schemas/Pattern.Flow.PfcPause.ControlOpCode.Counter' + $ref: '#/components/schemas/Pattern.Flow.Udp.DstPort.Counter' x-field-uid: 5 decrement: - $ref: '#/components/schemas/Pattern.Flow.PfcPause.ControlOpCode.Counter' + $ref: '#/components/schemas/Pattern.Flow.Udp.DstPort.Counter' x-field-uid: 6 metric_tags: description: |- One or more metric tags can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. type: array items: - $ref: '#/components/schemas/Pattern.Flow.PfcPause.ControlOpCode.MetricTag' + $ref: '#/components/schemas/Pattern.Flow.Udp.DstPort.MetricTag' x-field-uid: 7 - Pattern.Flow.PfcPause.ClassEnableVector.Counter: + Pattern.Flow.Udp.Length.Counter: description: |- integer counter pattern type: object @@ -18541,7 +22518,7 @@ components: default: 1 format: uint32 maximum: 65535 - Pattern.Flow.PfcPause.ClassEnableVector.MetricTag: + Pattern.Flow.Udp.Length.MetricTag: description: |- Metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. type: object @@ -18571,9 +22548,9 @@ components: minimum: 1 maximum: 16 x-field-uid: 3 - Pattern.Flow.PfcPause.ClassEnableVector: + Pattern.Flow.Udp.Length: description: |- - Destination + Length type: object properties: choice: @@ -18610,19 +22587,59 @@ components: default: - 0 increment: - $ref: '#/components/schemas/Pattern.Flow.PfcPause.ClassEnableVector.Counter' + $ref: '#/components/schemas/Pattern.Flow.Udp.Length.Counter' x-field-uid: 5 decrement: - $ref: '#/components/schemas/Pattern.Flow.PfcPause.ClassEnableVector.Counter' + $ref: '#/components/schemas/Pattern.Flow.Udp.Length.Counter' x-field-uid: 6 metric_tags: description: |- One or more metric tags can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. type: array items: - $ref: '#/components/schemas/Pattern.Flow.PfcPause.ClassEnableVector.MetricTag' + $ref: '#/components/schemas/Pattern.Flow.Udp.Length.MetricTag' x-field-uid: 7 - Pattern.Flow.PfcPause.PauseClass0.Counter: + Pattern.Flow.Udp.Checksum: + description: |- + UDP checksum + type: object + properties: + choice: + description: |- + The type of checksum + type: string + x-enum: + generated: + x-field-uid: 1 + custom: + x-field-uid: 2 + default: generated + x-field-uid: 1 + enum: + - generated + - custom + generated: + description: |- + A system generated checksum value + type: string + x-enum: + good: + x-field-uid: 1 + bad: + x-field-uid: 2 + default: good + x-field-uid: 2 + enum: + - good + - bad + custom: + description: |- + A custom checksum value + type: integer + format: uint32 + maximum: 65535 + x-field-uid: 3 + Pattern.Flow.Gre.ChecksumPresent.Counter: description: |- integer counter pattern type: object @@ -18632,20 +22649,20 @@ components: x-field-uid: 1 default: 0 format: uint32 - maximum: 65535 + maximum: 1 step: type: integer x-field-uid: 2 default: 1 format: uint32 - maximum: 65535 + maximum: 1 count: type: integer x-field-uid: 3 default: 1 format: uint32 - maximum: 65535 - Pattern.Flow.PfcPause.PauseClass0.MetricTag: + maximum: 1 + Pattern.Flow.Gre.ChecksumPresent.MetricTag: description: |- Metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. type: object @@ -18664,20 +22681,20 @@ components: type: integer format: uint32 default: 0 - maximum: 15 + maximum: 0 x-field-uid: 2 length: description: |- Number of bits to track for metrics starting from configured offset of corresponding header field type: integer format: uint32 - default: 16 + default: 1 minimum: 1 - maximum: 16 + maximum: 1 x-field-uid: 3 - Pattern.Flow.PfcPause.PauseClass0: + Pattern.Flow.Gre.ChecksumPresent: description: |- - Pause class 0 + Checksum present bit type: object properties: choice: @@ -18703,30 +22720,30 @@ components: x-field-uid: 2 default: 0 format: uint32 - maximum: 65535 + maximum: 1 values: type: array items: type: integer format: uint32 - maximum: 65535 + maximum: 1 x-field-uid: 3 default: - 0 increment: - $ref: '#/components/schemas/Pattern.Flow.PfcPause.PauseClass0.Counter' + $ref: '#/components/schemas/Pattern.Flow.Gre.ChecksumPresent.Counter' x-field-uid: 5 decrement: - $ref: '#/components/schemas/Pattern.Flow.PfcPause.PauseClass0.Counter' + $ref: '#/components/schemas/Pattern.Flow.Gre.ChecksumPresent.Counter' x-field-uid: 6 metric_tags: description: |- One or more metric tags can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. type: array items: - $ref: '#/components/schemas/Pattern.Flow.PfcPause.PauseClass0.MetricTag' + $ref: '#/components/schemas/Pattern.Flow.Gre.ChecksumPresent.MetricTag' x-field-uid: 7 - Pattern.Flow.PfcPause.PauseClass1.Counter: + Pattern.Flow.Gre.Reserved0.Counter: description: |- integer counter pattern type: object @@ -18736,20 +22753,20 @@ components: x-field-uid: 1 default: 0 format: uint32 - maximum: 65535 + maximum: 4095 step: type: integer x-field-uid: 2 default: 1 format: uint32 - maximum: 65535 + maximum: 4095 count: type: integer x-field-uid: 3 default: 1 format: uint32 - maximum: 65535 - Pattern.Flow.PfcPause.PauseClass1.MetricTag: + maximum: 4095 + Pattern.Flow.Gre.Reserved0.MetricTag: description: |- Metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. type: object @@ -18768,20 +22785,20 @@ components: type: integer format: uint32 default: 0 - maximum: 15 + maximum: 11 x-field-uid: 2 length: description: |- Number of bits to track for metrics starting from configured offset of corresponding header field type: integer format: uint32 - default: 16 + default: 12 minimum: 1 - maximum: 16 + maximum: 12 x-field-uid: 3 - Pattern.Flow.PfcPause.PauseClass1: + Pattern.Flow.Gre.Reserved0: description: |- - Pause class 1 + Reserved bits type: object properties: choice: @@ -18807,30 +22824,30 @@ components: x-field-uid: 2 default: 0 format: uint32 - maximum: 65535 + maximum: 4095 values: type: array items: type: integer format: uint32 - maximum: 65535 + maximum: 4095 x-field-uid: 3 default: - 0 increment: - $ref: '#/components/schemas/Pattern.Flow.PfcPause.PauseClass1.Counter' + $ref: '#/components/schemas/Pattern.Flow.Gre.Reserved0.Counter' x-field-uid: 5 decrement: - $ref: '#/components/schemas/Pattern.Flow.PfcPause.PauseClass1.Counter' + $ref: '#/components/schemas/Pattern.Flow.Gre.Reserved0.Counter' x-field-uid: 6 metric_tags: description: |- One or more metric tags can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. type: array items: - $ref: '#/components/schemas/Pattern.Flow.PfcPause.PauseClass1.MetricTag' + $ref: '#/components/schemas/Pattern.Flow.Gre.Reserved0.MetricTag' x-field-uid: 7 - Pattern.Flow.PfcPause.PauseClass2.Counter: + Pattern.Flow.Gre.Version.Counter: description: |- integer counter pattern type: object @@ -18840,20 +22857,20 @@ components: x-field-uid: 1 default: 0 format: uint32 - maximum: 65535 + maximum: 7 step: type: integer x-field-uid: 2 default: 1 format: uint32 - maximum: 65535 + maximum: 7 count: type: integer x-field-uid: 3 default: 1 format: uint32 - maximum: 65535 - Pattern.Flow.PfcPause.PauseClass2.MetricTag: + maximum: 7 + Pattern.Flow.Gre.Version.MetricTag: description: |- Metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. type: object @@ -18872,20 +22889,20 @@ components: type: integer format: uint32 default: 0 - maximum: 15 + maximum: 2 x-field-uid: 2 length: description: |- Number of bits to track for metrics starting from configured offset of corresponding header field type: integer format: uint32 - default: 16 + default: 3 minimum: 1 - maximum: 16 + maximum: 3 x-field-uid: 3 - Pattern.Flow.PfcPause.PauseClass2: + Pattern.Flow.Gre.Version: description: |- - Pause class 2 + GRE version number type: object properties: choice: @@ -18911,30 +22928,30 @@ components: x-field-uid: 2 default: 0 format: uint32 - maximum: 65535 + maximum: 7 values: type: array items: type: integer format: uint32 - maximum: 65535 + maximum: 7 x-field-uid: 3 default: - 0 increment: - $ref: '#/components/schemas/Pattern.Flow.PfcPause.PauseClass2.Counter' + $ref: '#/components/schemas/Pattern.Flow.Gre.Version.Counter' x-field-uid: 5 decrement: - $ref: '#/components/schemas/Pattern.Flow.PfcPause.PauseClass2.Counter' + $ref: '#/components/schemas/Pattern.Flow.Gre.Version.Counter' x-field-uid: 6 metric_tags: description: |- One or more metric tags can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. type: array items: - $ref: '#/components/schemas/Pattern.Flow.PfcPause.PauseClass2.MetricTag' + $ref: '#/components/schemas/Pattern.Flow.Gre.Version.MetricTag' x-field-uid: 7 - Pattern.Flow.PfcPause.PauseClass3.Counter: + Pattern.Flow.Gre.Protocol.Counter: description: |- integer counter pattern type: object @@ -18942,7 +22959,7 @@ components: start: type: integer x-field-uid: 1 - default: 0 + default: 2048 format: uint32 maximum: 65535 step: @@ -18957,7 +22974,10 @@ components: default: 1 format: uint32 maximum: 65535 - Pattern.Flow.PfcPause.PauseClass3.MetricTag: + x-constants: + ipv4: 2048 + ipv6: 34525 + Pattern.Flow.Gre.Protocol.MetricTag: description: |- Metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. type: object @@ -18987,9 +23007,9 @@ components: minimum: 1 maximum: 16 x-field-uid: 3 - Pattern.Flow.PfcPause.PauseClass3: + Pattern.Flow.Gre.Protocol: description: |- - Pause class 3 + Protocol type of encapsulated payload type: object properties: choice: @@ -19013,7 +23033,7 @@ components: value: type: integer x-field-uid: 2 - default: 0 + default: 2048 format: uint32 maximum: 65535 values: @@ -19024,21 +23044,64 @@ components: maximum: 65535 x-field-uid: 3 default: - - 0 + - 2048 increment: - $ref: '#/components/schemas/Pattern.Flow.PfcPause.PauseClass3.Counter' + $ref: '#/components/schemas/Pattern.Flow.Gre.Protocol.Counter' x-field-uid: 5 decrement: - $ref: '#/components/schemas/Pattern.Flow.PfcPause.PauseClass3.Counter' + $ref: '#/components/schemas/Pattern.Flow.Gre.Protocol.Counter' x-field-uid: 6 metric_tags: description: |- One or more metric tags can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. type: array items: - $ref: '#/components/schemas/Pattern.Flow.PfcPause.PauseClass3.MetricTag' + $ref: '#/components/schemas/Pattern.Flow.Gre.Protocol.MetricTag' x-field-uid: 7 - Pattern.Flow.PfcPause.PauseClass4.Counter: + x-constants: + ipv4: 2048 + ipv6: 34525 + Pattern.Flow.Gre.Checksum: + description: |- + Optional checksum of GRE header and payload. Only present if the checksum_present bit is set. + type: object + properties: + choice: + description: |- + The type of checksum + type: string + x-enum: + generated: + x-field-uid: 1 + custom: + x-field-uid: 2 + default: generated + x-field-uid: 1 + enum: + - generated + - custom + generated: + description: |- + A system generated checksum value + type: string + x-enum: + good: + x-field-uid: 1 + bad: + x-field-uid: 2 + default: good + x-field-uid: 2 + enum: + - good + - bad + custom: + description: |- + A custom checksum value + type: integer + format: uint32 + maximum: 65535 + x-field-uid: 3 + Pattern.Flow.Gre.Reserved1.Counter: description: |- integer counter pattern type: object @@ -19061,7 +23124,7 @@ components: default: 1 format: uint32 maximum: 65535 - Pattern.Flow.PfcPause.PauseClass4.MetricTag: + Pattern.Flow.Gre.Reserved1.MetricTag: description: |- Metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. type: object @@ -19091,9 +23154,9 @@ components: minimum: 1 maximum: 16 x-field-uid: 3 - Pattern.Flow.PfcPause.PauseClass4: + Pattern.Flow.Gre.Reserved1: description: |- - Pause class 4 + Optional reserved field. Only present if the checksum_present bit is set. type: object properties: choice: @@ -19130,19 +23193,19 @@ components: default: - 0 increment: - $ref: '#/components/schemas/Pattern.Flow.PfcPause.PauseClass4.Counter' + $ref: '#/components/schemas/Pattern.Flow.Gre.Reserved1.Counter' x-field-uid: 5 decrement: - $ref: '#/components/schemas/Pattern.Flow.PfcPause.PauseClass4.Counter' + $ref: '#/components/schemas/Pattern.Flow.Gre.Reserved1.Counter' x-field-uid: 6 metric_tags: description: |- One or more metric tags can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. type: array items: - $ref: '#/components/schemas/Pattern.Flow.PfcPause.PauseClass4.MetricTag' + $ref: '#/components/schemas/Pattern.Flow.Gre.Reserved1.MetricTag' x-field-uid: 7 - Pattern.Flow.PfcPause.PauseClass5.Counter: + Pattern.Flow.Gtpv1.Version.Counter: description: |- integer counter pattern type: object @@ -19150,22 +23213,22 @@ components: start: type: integer x-field-uid: 1 - default: 0 + default: 1 format: uint32 - maximum: 65535 + maximum: 7 step: type: integer x-field-uid: 2 default: 1 format: uint32 - maximum: 65535 + maximum: 7 count: type: integer x-field-uid: 3 default: 1 format: uint32 - maximum: 65535 - Pattern.Flow.PfcPause.PauseClass5.MetricTag: + maximum: 7 + Pattern.Flow.Gtpv1.Version.MetricTag: description: |- Metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. type: object @@ -19184,20 +23247,20 @@ components: type: integer format: uint32 default: 0 - maximum: 15 + maximum: 2 x-field-uid: 2 length: description: |- Number of bits to track for metrics starting from configured offset of corresponding header field type: integer format: uint32 - default: 16 + default: 3 minimum: 1 - maximum: 16 + maximum: 3 x-field-uid: 3 - Pattern.Flow.PfcPause.PauseClass5: + Pattern.Flow.Gtpv1.Version: description: |- - Pause class 5 + GTPv1 version type: object properties: choice: @@ -19221,32 +23284,32 @@ components: value: type: integer x-field-uid: 2 - default: 0 + default: 1 format: uint32 - maximum: 65535 + maximum: 7 values: type: array items: type: integer format: uint32 - maximum: 65535 + maximum: 7 x-field-uid: 3 default: - - 0 + - 1 increment: - $ref: '#/components/schemas/Pattern.Flow.PfcPause.PauseClass5.Counter' + $ref: '#/components/schemas/Pattern.Flow.Gtpv1.Version.Counter' x-field-uid: 5 decrement: - $ref: '#/components/schemas/Pattern.Flow.PfcPause.PauseClass5.Counter' + $ref: '#/components/schemas/Pattern.Flow.Gtpv1.Version.Counter' x-field-uid: 6 metric_tags: description: |- One or more metric tags can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. type: array items: - $ref: '#/components/schemas/Pattern.Flow.PfcPause.PauseClass5.MetricTag' + $ref: '#/components/schemas/Pattern.Flow.Gtpv1.Version.MetricTag' x-field-uid: 7 - Pattern.Flow.PfcPause.PauseClass6.Counter: + Pattern.Flow.Gtpv1.ProtocolType.Counter: description: |- integer counter pattern type: object @@ -19254,22 +23317,22 @@ components: start: type: integer x-field-uid: 1 - default: 0 + default: 1 format: uint32 - maximum: 65535 + maximum: 1 step: type: integer x-field-uid: 2 default: 1 format: uint32 - maximum: 65535 + maximum: 1 count: type: integer x-field-uid: 3 default: 1 format: uint32 - maximum: 65535 - Pattern.Flow.PfcPause.PauseClass6.MetricTag: + maximum: 1 + Pattern.Flow.Gtpv1.ProtocolType.MetricTag: description: |- Metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. type: object @@ -19288,20 +23351,20 @@ components: type: integer format: uint32 default: 0 - maximum: 15 + maximum: 0 x-field-uid: 2 length: description: |- Number of bits to track for metrics starting from configured offset of corresponding header field type: integer format: uint32 - default: 16 + default: 1 minimum: 1 - maximum: 16 + maximum: 1 x-field-uid: 3 - Pattern.Flow.PfcPause.PauseClass6: + Pattern.Flow.Gtpv1.ProtocolType: description: |- - Pause class 6 + Protocol type, GTP is 1, GTP' is 0 type: object properties: choice: @@ -19325,32 +23388,32 @@ components: value: type: integer x-field-uid: 2 - default: 0 + default: 1 format: uint32 - maximum: 65535 + maximum: 1 values: type: array items: type: integer format: uint32 - maximum: 65535 + maximum: 1 x-field-uid: 3 default: - - 0 + - 1 increment: - $ref: '#/components/schemas/Pattern.Flow.PfcPause.PauseClass6.Counter' + $ref: '#/components/schemas/Pattern.Flow.Gtpv1.ProtocolType.Counter' x-field-uid: 5 decrement: - $ref: '#/components/schemas/Pattern.Flow.PfcPause.PauseClass6.Counter' + $ref: '#/components/schemas/Pattern.Flow.Gtpv1.ProtocolType.Counter' x-field-uid: 6 metric_tags: description: |- One or more metric tags can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. type: array items: - $ref: '#/components/schemas/Pattern.Flow.PfcPause.PauseClass6.MetricTag' + $ref: '#/components/schemas/Pattern.Flow.Gtpv1.ProtocolType.MetricTag' x-field-uid: 7 - Pattern.Flow.PfcPause.PauseClass7.Counter: + Pattern.Flow.Gtpv1.Reserved.Counter: description: |- integer counter pattern type: object @@ -19360,20 +23423,20 @@ components: x-field-uid: 1 default: 0 format: uint32 - maximum: 65535 + maximum: 1 step: type: integer x-field-uid: 2 default: 1 format: uint32 - maximum: 65535 + maximum: 1 count: type: integer x-field-uid: 3 default: 1 format: uint32 - maximum: 65535 - Pattern.Flow.PfcPause.PauseClass7.MetricTag: + maximum: 1 + Pattern.Flow.Gtpv1.Reserved.MetricTag: description: |- Metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. type: object @@ -19392,20 +23455,20 @@ components: type: integer format: uint32 default: 0 - maximum: 15 + maximum: 0 x-field-uid: 2 length: description: |- Number of bits to track for metrics starting from configured offset of corresponding header field type: integer format: uint32 - default: 16 + default: 1 minimum: 1 - maximum: 16 + maximum: 1 x-field-uid: 3 - Pattern.Flow.PfcPause.PauseClass7: + Pattern.Flow.Gtpv1.Reserved: description: |- - Pause class 7 + Reserved field type: object properties: choice: @@ -19431,50 +23494,53 @@ components: x-field-uid: 2 default: 0 format: uint32 - maximum: 65535 + maximum: 1 values: type: array items: type: integer format: uint32 - maximum: 65535 + maximum: 1 x-field-uid: 3 default: - 0 increment: - $ref: '#/components/schemas/Pattern.Flow.PfcPause.PauseClass7.Counter' + $ref: '#/components/schemas/Pattern.Flow.Gtpv1.Reserved.Counter' x-field-uid: 5 decrement: - $ref: '#/components/schemas/Pattern.Flow.PfcPause.PauseClass7.Counter' + $ref: '#/components/schemas/Pattern.Flow.Gtpv1.Reserved.Counter' x-field-uid: 6 metric_tags: description: |- One or more metric tags can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. type: array items: - $ref: '#/components/schemas/Pattern.Flow.PfcPause.PauseClass7.MetricTag' + $ref: '#/components/schemas/Pattern.Flow.Gtpv1.Reserved.MetricTag' x-field-uid: 7 - Pattern.Flow.EthernetPause.Dst.Counter: + Pattern.Flow.Gtpv1.EFlag.Counter: description: |- - mac counter pattern + integer counter pattern type: object properties: start: - type: string + type: integer x-field-uid: 1 - default: 01:80:c2:00:00:01 - format: mac + default: 0 + format: uint32 + maximum: 1 step: - type: string + type: integer x-field-uid: 2 - default: 00:00:00:00:00:01 - format: mac + default: 1 + format: uint32 + maximum: 1 count: type: integer x-field-uid: 3 default: 1 format: uint32 - Pattern.Flow.EthernetPause.Dst.MetricTag: + maximum: 1 + Pattern.Flow.Gtpv1.EFlag.MetricTag: description: |- Metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. type: object @@ -19493,20 +23559,20 @@ components: type: integer format: uint32 default: 0 - maximum: 47 + maximum: 0 x-field-uid: 2 length: description: |- Number of bits to track for metrics starting from configured offset of corresponding header field type: integer format: uint32 - default: 48 + default: 1 minimum: 1 - maximum: 48 + maximum: 1 x-field-uid: 3 - Pattern.Flow.EthernetPause.Dst: + Pattern.Flow.Gtpv1.EFlag: description: |- - Destination MAC address + Extension header field present type: object properties: choice: @@ -19528,52 +23594,57 @@ components: - increment - decrement value: - type: string + type: integer x-field-uid: 2 - default: 01:80:c2:00:00:01 - format: mac + default: 0 + format: uint32 + maximum: 1 values: type: array items: - type: string - format: mac + type: integer + format: uint32 + maximum: 1 x-field-uid: 3 default: - - 01:80:c2:00:00:01 + - 0 increment: - $ref: '#/components/schemas/Pattern.Flow.EthernetPause.Dst.Counter' + $ref: '#/components/schemas/Pattern.Flow.Gtpv1.EFlag.Counter' x-field-uid: 5 decrement: - $ref: '#/components/schemas/Pattern.Flow.EthernetPause.Dst.Counter' + $ref: '#/components/schemas/Pattern.Flow.Gtpv1.EFlag.Counter' x-field-uid: 6 metric_tags: description: |- One or more metric tags can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. type: array items: - $ref: '#/components/schemas/Pattern.Flow.EthernetPause.Dst.MetricTag' + $ref: '#/components/schemas/Pattern.Flow.Gtpv1.EFlag.MetricTag' x-field-uid: 7 - Pattern.Flow.EthernetPause.Src.Counter: + Pattern.Flow.Gtpv1.SFlag.Counter: description: |- - mac counter pattern + integer counter pattern type: object properties: start: - type: string + type: integer x-field-uid: 1 - default: 00:00:00:00:00:00 - format: mac + default: 0 + format: uint32 + maximum: 1 step: - type: string + type: integer x-field-uid: 2 - default: 00:00:00:00:00:01 - format: mac + default: 1 + format: uint32 + maximum: 1 count: type: integer x-field-uid: 3 default: 1 format: uint32 - Pattern.Flow.EthernetPause.Src.MetricTag: + maximum: 1 + Pattern.Flow.Gtpv1.SFlag.MetricTag: description: |- Metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. type: object @@ -19592,20 +23663,20 @@ components: type: integer format: uint32 default: 0 - maximum: 47 + maximum: 0 x-field-uid: 2 length: description: |- Number of bits to track for metrics starting from configured offset of corresponding header field type: integer format: uint32 - default: 48 + default: 1 minimum: 1 - maximum: 48 + maximum: 1 x-field-uid: 3 - Pattern.Flow.EthernetPause.Src: + Pattern.Flow.Gtpv1.SFlag: description: |- - Source MAC address + Sequence number field present type: object properties: choice: @@ -19627,32 +23698,34 @@ components: - increment - decrement value: - type: string + type: integer x-field-uid: 2 - default: 00:00:00:00:00:00 - format: mac + default: 0 + format: uint32 + maximum: 1 values: type: array items: - type: string - format: mac + type: integer + format: uint32 + maximum: 1 x-field-uid: 3 default: - - 00:00:00:00:00:00 + - 0 increment: - $ref: '#/components/schemas/Pattern.Flow.EthernetPause.Src.Counter' + $ref: '#/components/schemas/Pattern.Flow.Gtpv1.SFlag.Counter' x-field-uid: 5 decrement: - $ref: '#/components/schemas/Pattern.Flow.EthernetPause.Src.Counter' + $ref: '#/components/schemas/Pattern.Flow.Gtpv1.SFlag.Counter' x-field-uid: 6 metric_tags: description: |- One or more metric tags can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. type: array items: - $ref: '#/components/schemas/Pattern.Flow.EthernetPause.Src.MetricTag' + $ref: '#/components/schemas/Pattern.Flow.Gtpv1.SFlag.MetricTag' x-field-uid: 7 - Pattern.Flow.EthernetPause.EtherType.Counter: + Pattern.Flow.Gtpv1.PnFlag.Counter: description: |- integer counter pattern type: object @@ -19660,24 +23733,22 @@ components: start: type: integer x-field-uid: 1 - default: 34824 + default: 0 format: uint32 - maximum: 65535 + maximum: 1 step: type: integer x-field-uid: 2 default: 1 format: uint32 - maximum: 65535 + maximum: 1 count: type: integer x-field-uid: 3 default: 1 format: uint32 - maximum: 65535 - x-constants: - flow_control: 34824 - Pattern.Flow.EthernetPause.EtherType.MetricTag: + maximum: 1 + Pattern.Flow.Gtpv1.PnFlag.MetricTag: description: |- Metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. type: object @@ -19696,20 +23767,20 @@ components: type: integer format: uint32 default: 0 - maximum: 15 + maximum: 0 x-field-uid: 2 length: description: |- Number of bits to track for metrics starting from configured offset of corresponding header field type: integer format: uint32 - default: 16 + default: 1 minimum: 1 - maximum: 16 + maximum: 1 x-field-uid: 3 - Pattern.Flow.EthernetPause.EtherType: + Pattern.Flow.Gtpv1.PnFlag: description: |- - Ethernet type + N-PDU field present type: object properties: choice: @@ -19733,34 +23804,32 @@ components: value: type: integer x-field-uid: 2 - default: 34824 + default: 0 format: uint32 - maximum: 65535 + maximum: 1 values: type: array items: type: integer format: uint32 - maximum: 65535 + maximum: 1 x-field-uid: 3 default: - - 34824 + - 0 increment: - $ref: '#/components/schemas/Pattern.Flow.EthernetPause.EtherType.Counter' + $ref: '#/components/schemas/Pattern.Flow.Gtpv1.PnFlag.Counter' x-field-uid: 5 decrement: - $ref: '#/components/schemas/Pattern.Flow.EthernetPause.EtherType.Counter' + $ref: '#/components/schemas/Pattern.Flow.Gtpv1.PnFlag.Counter' x-field-uid: 6 metric_tags: description: |- One or more metric tags can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. type: array items: - $ref: '#/components/schemas/Pattern.Flow.EthernetPause.EtherType.MetricTag' + $ref: '#/components/schemas/Pattern.Flow.Gtpv1.PnFlag.MetricTag' x-field-uid: 7 - x-constants: - flow_control: 34824 - Pattern.Flow.EthernetPause.ControlOpCode.Counter: + Pattern.Flow.Gtpv1.MessageType.Counter: description: |- integer counter pattern type: object @@ -19768,22 +23837,22 @@ components: start: type: integer x-field-uid: 1 - default: 1 + default: 0 format: uint32 - maximum: 65535 + maximum: 255 step: type: integer x-field-uid: 2 default: 1 format: uint32 - maximum: 65535 + maximum: 255 count: type: integer x-field-uid: 3 default: 1 format: uint32 - maximum: 65535 - Pattern.Flow.EthernetPause.ControlOpCode.MetricTag: + maximum: 255 + Pattern.Flow.Gtpv1.MessageType.MetricTag: description: |- Metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. type: object @@ -19802,20 +23871,20 @@ components: type: integer format: uint32 default: 0 - maximum: 15 + maximum: 7 x-field-uid: 2 length: description: |- Number of bits to track for metrics starting from configured offset of corresponding header field type: integer format: uint32 - default: 16 + default: 8 minimum: 1 - maximum: 16 + maximum: 8 x-field-uid: 3 - Pattern.Flow.EthernetPause.ControlOpCode: + Pattern.Flow.Gtpv1.MessageType: description: |- - Control operation code + The type of GTP message Different types of messages are defined in 3GPP TS 29.060 section 7.1 type: object properties: choice: @@ -19839,32 +23908,32 @@ components: value: type: integer x-field-uid: 2 - default: 1 + default: 0 format: uint32 - maximum: 65535 + maximum: 255 values: type: array items: type: integer format: uint32 - maximum: 65535 + maximum: 255 x-field-uid: 3 default: - - 1 + - 0 increment: - $ref: '#/components/schemas/Pattern.Flow.EthernetPause.ControlOpCode.Counter' + $ref: '#/components/schemas/Pattern.Flow.Gtpv1.MessageType.Counter' x-field-uid: 5 decrement: - $ref: '#/components/schemas/Pattern.Flow.EthernetPause.ControlOpCode.Counter' + $ref: '#/components/schemas/Pattern.Flow.Gtpv1.MessageType.Counter' x-field-uid: 6 metric_tags: description: |- One or more metric tags can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. type: array items: - $ref: '#/components/schemas/Pattern.Flow.EthernetPause.ControlOpCode.MetricTag' + $ref: '#/components/schemas/Pattern.Flow.Gtpv1.MessageType.MetricTag' x-field-uid: 7 - Pattern.Flow.EthernetPause.Time.Counter: + Pattern.Flow.Gtpv1.MessageLength.Counter: description: |- integer counter pattern type: object @@ -19887,7 +23956,7 @@ components: default: 1 format: uint32 maximum: 65535 - Pattern.Flow.EthernetPause.Time.MetricTag: + Pattern.Flow.Gtpv1.MessageLength.MetricTag: description: |- Metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. type: object @@ -19917,9 +23986,9 @@ components: minimum: 1 maximum: 16 x-field-uid: 3 - Pattern.Flow.EthernetPause.Time: + Pattern.Flow.Gtpv1.MessageLength: description: |- - Time + The length of the payload (the bytes following the mandatory 8-byte GTP header) in bytes that includes any optional fields type: object properties: choice: @@ -19956,19 +24025,19 @@ components: default: - 0 increment: - $ref: '#/components/schemas/Pattern.Flow.EthernetPause.Time.Counter' + $ref: '#/components/schemas/Pattern.Flow.Gtpv1.MessageLength.Counter' x-field-uid: 5 decrement: - $ref: '#/components/schemas/Pattern.Flow.EthernetPause.Time.Counter' + $ref: '#/components/schemas/Pattern.Flow.Gtpv1.MessageLength.Counter' x-field-uid: 6 metric_tags: description: |- One or more metric tags can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. type: array items: - $ref: '#/components/schemas/Pattern.Flow.EthernetPause.Time.MetricTag' + $ref: '#/components/schemas/Pattern.Flow.Gtpv1.MessageLength.MetricTag' x-field-uid: 7 - Pattern.Flow.Tcp.SrcPort.Counter: + Pattern.Flow.Gtpv1.Teid.Counter: description: |- integer counter pattern type: object @@ -19978,20 +24047,17 @@ components: x-field-uid: 1 default: 0 format: uint32 - maximum: 65535 step: type: integer x-field-uid: 2 default: 1 format: uint32 - maximum: 65535 count: type: integer x-field-uid: 3 default: 1 format: uint32 - maximum: 65535 - Pattern.Flow.Tcp.SrcPort.MetricTag: + Pattern.Flow.Gtpv1.Teid.MetricTag: description: |- Metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. type: object @@ -20010,20 +24076,20 @@ components: type: integer format: uint32 default: 0 - maximum: 15 + maximum: 31 x-field-uid: 2 length: description: |- Number of bits to track for metrics starting from configured offset of corresponding header field type: integer format: uint32 - default: 16 + default: 32 minimum: 1 - maximum: 16 + maximum: 32 x-field-uid: 3 - Pattern.Flow.Tcp.SrcPort: + Pattern.Flow.Gtpv1.Teid: description: |- - Source port + Tunnel endpoint identifier (TEID) used to multiplex connections in the same GTP tunnel type: object properties: choice: @@ -20049,30 +24115,28 @@ components: x-field-uid: 2 default: 0 format: uint32 - maximum: 65535 values: type: array items: type: integer format: uint32 - maximum: 65535 x-field-uid: 3 default: - 0 increment: - $ref: '#/components/schemas/Pattern.Flow.Tcp.SrcPort.Counter' + $ref: '#/components/schemas/Pattern.Flow.Gtpv1.Teid.Counter' x-field-uid: 5 decrement: - $ref: '#/components/schemas/Pattern.Flow.Tcp.SrcPort.Counter' + $ref: '#/components/schemas/Pattern.Flow.Gtpv1.Teid.Counter' x-field-uid: 6 metric_tags: description: |- One or more metric tags can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. type: array items: - $ref: '#/components/schemas/Pattern.Flow.Tcp.SrcPort.MetricTag' + $ref: '#/components/schemas/Pattern.Flow.Gtpv1.Teid.MetricTag' x-field-uid: 7 - Pattern.Flow.Tcp.DstPort.Counter: + Pattern.Flow.Gtpv1.SquenceNumber.Counter: description: |- integer counter pattern type: object @@ -20095,7 +24159,7 @@ components: default: 1 format: uint32 maximum: 65535 - Pattern.Flow.Tcp.DstPort.MetricTag: + Pattern.Flow.Gtpv1.SquenceNumber.MetricTag: description: |- Metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. type: object @@ -20125,9 +24189,9 @@ components: minimum: 1 maximum: 16 x-field-uid: 3 - Pattern.Flow.Tcp.DstPort: + Pattern.Flow.Gtpv1.SquenceNumber: description: |- - Destination port + Sequence number. Exists if any of the e_flag, s_flag, or pn_flag bits are on. Must be interpreted only if the s_flag bit is on. type: object properties: choice: @@ -20164,19 +24228,19 @@ components: default: - 0 increment: - $ref: '#/components/schemas/Pattern.Flow.Tcp.DstPort.Counter' + $ref: '#/components/schemas/Pattern.Flow.Gtpv1.SquenceNumber.Counter' x-field-uid: 5 decrement: - $ref: '#/components/schemas/Pattern.Flow.Tcp.DstPort.Counter' + $ref: '#/components/schemas/Pattern.Flow.Gtpv1.SquenceNumber.Counter' x-field-uid: 6 metric_tags: description: |- One or more metric tags can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. type: array items: - $ref: '#/components/schemas/Pattern.Flow.Tcp.DstPort.MetricTag' + $ref: '#/components/schemas/Pattern.Flow.Gtpv1.SquenceNumber.MetricTag' x-field-uid: 7 - Pattern.Flow.Tcp.SeqNum.Counter: + Pattern.Flow.Gtpv1.NPduNumber.Counter: description: |- integer counter pattern type: object @@ -20186,17 +24250,20 @@ components: x-field-uid: 1 default: 0 format: uint32 + maximum: 255 step: type: integer x-field-uid: 2 default: 1 format: uint32 + maximum: 255 count: type: integer x-field-uid: 3 default: 1 format: uint32 - Pattern.Flow.Tcp.SeqNum.MetricTag: + maximum: 255 + Pattern.Flow.Gtpv1.NPduNumber.MetricTag: description: |- Metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. type: object @@ -20215,20 +24282,20 @@ components: type: integer format: uint32 default: 0 - maximum: 31 + maximum: 7 x-field-uid: 2 length: description: |- Number of bits to track for metrics starting from configured offset of corresponding header field type: integer format: uint32 - default: 32 + default: 8 minimum: 1 - maximum: 32 + maximum: 8 x-field-uid: 3 - Pattern.Flow.Tcp.SeqNum: + Pattern.Flow.Gtpv1.NPduNumber: description: |- - Sequence number + N-PDU number. Exists if any of the e_flag, s_flag, or pn_flag bits are on. Must be interpreted only if the pn_flag bit is on. type: object properties: choice: @@ -20254,28 +24321,30 @@ components: x-field-uid: 2 default: 0 format: uint32 + maximum: 255 values: type: array items: type: integer format: uint32 + maximum: 255 x-field-uid: 3 default: - 0 increment: - $ref: '#/components/schemas/Pattern.Flow.Tcp.SeqNum.Counter' + $ref: '#/components/schemas/Pattern.Flow.Gtpv1.NPduNumber.Counter' x-field-uid: 5 decrement: - $ref: '#/components/schemas/Pattern.Flow.Tcp.SeqNum.Counter' + $ref: '#/components/schemas/Pattern.Flow.Gtpv1.NPduNumber.Counter' x-field-uid: 6 metric_tags: description: |- One or more metric tags can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. type: array items: - $ref: '#/components/schemas/Pattern.Flow.Tcp.SeqNum.MetricTag' + $ref: '#/components/schemas/Pattern.Flow.Gtpv1.NPduNumber.MetricTag' x-field-uid: 7 - Pattern.Flow.Tcp.AckNum.Counter: + Pattern.Flow.Gtpv1.NextExtensionHeaderType.Counter: description: |- integer counter pattern type: object @@ -20285,17 +24354,20 @@ components: x-field-uid: 1 default: 0 format: uint32 + maximum: 255 step: type: integer x-field-uid: 2 default: 1 format: uint32 + maximum: 255 count: type: integer x-field-uid: 3 default: 1 format: uint32 - Pattern.Flow.Tcp.AckNum.MetricTag: + maximum: 255 + Pattern.Flow.Gtpv1.NextExtensionHeaderType.MetricTag: description: |- Metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. type: object @@ -20314,20 +24386,20 @@ components: type: integer format: uint32 default: 0 - maximum: 31 + maximum: 7 x-field-uid: 2 length: description: |- Number of bits to track for metrics starting from configured offset of corresponding header field type: integer format: uint32 - default: 32 + default: 8 minimum: 1 - maximum: 32 + maximum: 8 x-field-uid: 3 - Pattern.Flow.Tcp.AckNum: + Pattern.Flow.Gtpv1.NextExtensionHeaderType: description: |- - Acknowledgement number + Next extension header. Exists if any of the e_flag, s_flag, or pn_flag bits are on. Must be interpreted only if the e_flag bit is on. type: object properties: choice: @@ -20353,28 +24425,30 @@ components: x-field-uid: 2 default: 0 format: uint32 + maximum: 255 values: type: array items: type: integer format: uint32 + maximum: 255 x-field-uid: 3 default: - 0 increment: - $ref: '#/components/schemas/Pattern.Flow.Tcp.AckNum.Counter' + $ref: '#/components/schemas/Pattern.Flow.Gtpv1.NextExtensionHeaderType.Counter' x-field-uid: 5 decrement: - $ref: '#/components/schemas/Pattern.Flow.Tcp.AckNum.Counter' + $ref: '#/components/schemas/Pattern.Flow.Gtpv1.NextExtensionHeaderType.Counter' x-field-uid: 6 metric_tags: description: |- One or more metric tags can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. type: array items: - $ref: '#/components/schemas/Pattern.Flow.Tcp.AckNum.MetricTag' + $ref: '#/components/schemas/Pattern.Flow.Gtpv1.NextExtensionHeaderType.MetricTag' x-field-uid: 7 - Pattern.Flow.Tcp.DataOffset.Counter: + Pattern.Flow.GtpExtension.ExtensionLength.Counter: description: |- integer counter pattern type: object @@ -20384,20 +24458,20 @@ components: x-field-uid: 1 default: 0 format: uint32 - maximum: 15 + maximum: 255 step: type: integer x-field-uid: 2 default: 1 format: uint32 - maximum: 15 + maximum: 255 count: type: integer x-field-uid: 3 default: 1 format: uint32 - maximum: 15 - Pattern.Flow.Tcp.DataOffset.MetricTag: + maximum: 255 + Pattern.Flow.GtpExtension.ExtensionLength.MetricTag: description: |- Metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. type: object @@ -20416,20 +24490,20 @@ components: type: integer format: uint32 default: 0 - maximum: 3 + maximum: 7 x-field-uid: 2 length: description: |- Number of bits to track for metrics starting from configured offset of corresponding header field type: integer format: uint32 - default: 4 + default: 8 minimum: 1 - maximum: 4 + maximum: 8 x-field-uid: 3 - Pattern.Flow.Tcp.DataOffset: + Pattern.Flow.GtpExtension.ExtensionLength: description: |- - The number of 32 bit words in the TCP header. This indicates where the data begins. + This field states the length of this extension header, including the length, the contents, and the next extension header field, in 4-octet units, so the length of the extension must always be a multiple of 4. type: object properties: choice: @@ -20455,30 +24529,30 @@ components: x-field-uid: 2 default: 0 format: uint32 - maximum: 15 + maximum: 255 values: type: array items: type: integer format: uint32 - maximum: 15 + maximum: 255 x-field-uid: 3 default: - 0 increment: - $ref: '#/components/schemas/Pattern.Flow.Tcp.DataOffset.Counter' + $ref: '#/components/schemas/Pattern.Flow.GtpExtension.ExtensionLength.Counter' x-field-uid: 5 decrement: - $ref: '#/components/schemas/Pattern.Flow.Tcp.DataOffset.Counter' + $ref: '#/components/schemas/Pattern.Flow.GtpExtension.ExtensionLength.Counter' x-field-uid: 6 metric_tags: description: |- One or more metric tags can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. type: array items: - $ref: '#/components/schemas/Pattern.Flow.Tcp.DataOffset.MetricTag' + $ref: '#/components/schemas/Pattern.Flow.GtpExtension.ExtensionLength.MetricTag' x-field-uid: 7 - Pattern.Flow.Tcp.EcnNs.Counter: + Pattern.Flow.GtpExtension.Contents.Counter: description: |- integer counter pattern type: object @@ -20487,21 +24561,21 @@ components: type: integer x-field-uid: 1 default: 0 - format: uint32 - maximum: 1 + format: uint64 + maximum: 281474976710655 step: type: integer x-field-uid: 2 default: 1 - format: uint32 - maximum: 1 + format: uint64 + maximum: 281474976710655 count: type: integer x-field-uid: 3 default: 1 - format: uint32 - maximum: 1 - Pattern.Flow.Tcp.EcnNs.MetricTag: + format: uint64 + maximum: 281474976710655 + Pattern.Flow.GtpExtension.Contents.MetricTag: description: |- Metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. type: object @@ -20518,22 +24592,22 @@ components: description: |- Offset in bits relative to start of corresponding header field type: integer - format: uint32 + format: uint64 default: 0 - maximum: 0 + maximum: 47 x-field-uid: 2 length: description: |- Number of bits to track for metrics starting from configured offset of corresponding header field type: integer - format: uint32 - default: 1 + format: uint64 + default: 48 minimum: 1 - maximum: 1 + maximum: 48 x-field-uid: 3 - Pattern.Flow.Tcp.EcnNs: + Pattern.Flow.GtpExtension.Contents: description: |- - Explicit congestion notification, concealment protection. + The extension header contents type: object properties: choice: @@ -20558,31 +24632,31 @@ components: type: integer x-field-uid: 2 default: 0 - format: uint32 - maximum: 1 + format: uint64 + maximum: 281474976710655 values: type: array items: type: integer - format: uint32 - maximum: 1 + format: uint64 + maximum: 281474976710655 x-field-uid: 3 default: - 0 increment: - $ref: '#/components/schemas/Pattern.Flow.Tcp.EcnNs.Counter' + $ref: '#/components/schemas/Pattern.Flow.GtpExtension.Contents.Counter' x-field-uid: 5 decrement: - $ref: '#/components/schemas/Pattern.Flow.Tcp.EcnNs.Counter' + $ref: '#/components/schemas/Pattern.Flow.GtpExtension.Contents.Counter' x-field-uid: 6 metric_tags: description: |- One or more metric tags can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. type: array items: - $ref: '#/components/schemas/Pattern.Flow.Tcp.EcnNs.MetricTag' + $ref: '#/components/schemas/Pattern.Flow.GtpExtension.Contents.MetricTag' x-field-uid: 7 - Pattern.Flow.Tcp.EcnCwr.Counter: + Pattern.Flow.GtpExtension.NextExtensionHeader.Counter: description: |- integer counter pattern type: object @@ -20592,20 +24666,20 @@ components: x-field-uid: 1 default: 0 format: uint32 - maximum: 1 + maximum: 255 step: type: integer x-field-uid: 2 default: 1 format: uint32 - maximum: 1 + maximum: 255 count: type: integer x-field-uid: 3 default: 1 format: uint32 - maximum: 1 - Pattern.Flow.Tcp.EcnCwr.MetricTag: + maximum: 255 + Pattern.Flow.GtpExtension.NextExtensionHeader.MetricTag: description: |- Metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. type: object @@ -20624,20 +24698,20 @@ components: type: integer format: uint32 default: 0 - maximum: 0 + maximum: 7 x-field-uid: 2 length: description: |- Number of bits to track for metrics starting from configured offset of corresponding header field type: integer format: uint32 - default: 1 + default: 8 minimum: 1 - maximum: 1 + maximum: 8 x-field-uid: 3 - Pattern.Flow.Tcp.EcnCwr: + Pattern.Flow.GtpExtension.NextExtensionHeader: description: |- - Explicit congestion notification, congestion window reduced. + It states the type of the next extension, or 0 if no next extension exists. This permits chaining several next extension headers. type: object properties: choice: @@ -20663,30 +24737,30 @@ components: x-field-uid: 2 default: 0 format: uint32 - maximum: 1 + maximum: 255 values: type: array items: type: integer format: uint32 - maximum: 1 + maximum: 255 x-field-uid: 3 default: - 0 increment: - $ref: '#/components/schemas/Pattern.Flow.Tcp.EcnCwr.Counter' + $ref: '#/components/schemas/Pattern.Flow.GtpExtension.NextExtensionHeader.Counter' x-field-uid: 5 decrement: - $ref: '#/components/schemas/Pattern.Flow.Tcp.EcnCwr.Counter' + $ref: '#/components/schemas/Pattern.Flow.GtpExtension.NextExtensionHeader.Counter' x-field-uid: 6 metric_tags: description: |- One or more metric tags can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. type: array items: - $ref: '#/components/schemas/Pattern.Flow.Tcp.EcnCwr.MetricTag' + $ref: '#/components/schemas/Pattern.Flow.GtpExtension.NextExtensionHeader.MetricTag' x-field-uid: 7 - Pattern.Flow.Tcp.EcnEcho.Counter: + Pattern.Flow.Gtpv2.Version.Counter: description: |- integer counter pattern type: object @@ -20694,22 +24768,22 @@ components: start: type: integer x-field-uid: 1 - default: 0 + default: 2 format: uint32 - maximum: 1 + maximum: 7 step: type: integer x-field-uid: 2 default: 1 format: uint32 - maximum: 1 + maximum: 7 count: type: integer x-field-uid: 3 default: 1 format: uint32 - maximum: 1 - Pattern.Flow.Tcp.EcnEcho.MetricTag: + maximum: 7 + Pattern.Flow.Gtpv2.Version.MetricTag: description: |- Metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. type: object @@ -20728,20 +24802,20 @@ components: type: integer format: uint32 default: 0 - maximum: 0 + maximum: 2 x-field-uid: 2 length: description: |- Number of bits to track for metrics starting from configured offset of corresponding header field type: integer format: uint32 - default: 1 + default: 3 minimum: 1 - maximum: 1 + maximum: 3 x-field-uid: 3 - Pattern.Flow.Tcp.EcnEcho: + Pattern.Flow.Gtpv2.Version: description: |- - Explicit congestion notification, echo. 1 indicates the peer is ecn capable. 0 indicates that a packet with ipv4.ecn = 11 in the ip header was received during normal transmission. + Version number type: object properties: choice: @@ -20765,32 +24839,32 @@ components: value: type: integer x-field-uid: 2 - default: 0 + default: 2 format: uint32 - maximum: 1 + maximum: 7 values: type: array items: type: integer format: uint32 - maximum: 1 + maximum: 7 x-field-uid: 3 default: - - 0 + - 2 increment: - $ref: '#/components/schemas/Pattern.Flow.Tcp.EcnEcho.Counter' + $ref: '#/components/schemas/Pattern.Flow.Gtpv2.Version.Counter' x-field-uid: 5 decrement: - $ref: '#/components/schemas/Pattern.Flow.Tcp.EcnEcho.Counter' + $ref: '#/components/schemas/Pattern.Flow.Gtpv2.Version.Counter' x-field-uid: 6 metric_tags: description: |- One or more metric tags can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. type: array items: - $ref: '#/components/schemas/Pattern.Flow.Tcp.EcnEcho.MetricTag' + $ref: '#/components/schemas/Pattern.Flow.Gtpv2.Version.MetricTag' x-field-uid: 7 - Pattern.Flow.Tcp.CtlUrg.Counter: + Pattern.Flow.Gtpv2.PiggybackingFlag.Counter: description: |- integer counter pattern type: object @@ -20813,7 +24887,7 @@ components: default: 1 format: uint32 maximum: 1 - Pattern.Flow.Tcp.CtlUrg.MetricTag: + Pattern.Flow.Gtpv2.PiggybackingFlag.MetricTag: description: |- Metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. type: object @@ -20843,9 +24917,9 @@ components: minimum: 1 maximum: 1 x-field-uid: 3 - Pattern.Flow.Tcp.CtlUrg: + Pattern.Flow.Gtpv2.PiggybackingFlag: description: |- - A value of 1 indicates that the urgent pointer field is significant. + If piggybacking_flag is set to 1 then another GTP-C message with its own header shall be present at the end of the current message type: object properties: choice: @@ -20882,19 +24956,19 @@ components: default: - 0 increment: - $ref: '#/components/schemas/Pattern.Flow.Tcp.CtlUrg.Counter' + $ref: '#/components/schemas/Pattern.Flow.Gtpv2.PiggybackingFlag.Counter' x-field-uid: 5 decrement: - $ref: '#/components/schemas/Pattern.Flow.Tcp.CtlUrg.Counter' + $ref: '#/components/schemas/Pattern.Flow.Gtpv2.PiggybackingFlag.Counter' x-field-uid: 6 metric_tags: description: |- One or more metric tags can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. type: array items: - $ref: '#/components/schemas/Pattern.Flow.Tcp.CtlUrg.MetricTag' + $ref: '#/components/schemas/Pattern.Flow.Gtpv2.PiggybackingFlag.MetricTag' x-field-uid: 7 - Pattern.Flow.Tcp.CtlAck.Counter: + Pattern.Flow.Gtpv2.TeidFlag.Counter: description: |- integer counter pattern type: object @@ -20917,7 +24991,7 @@ components: default: 1 format: uint32 maximum: 1 - Pattern.Flow.Tcp.CtlAck.MetricTag: + Pattern.Flow.Gtpv2.TeidFlag.MetricTag: description: |- Metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. type: object @@ -20947,9 +25021,9 @@ components: minimum: 1 maximum: 1 x-field-uid: 3 - Pattern.Flow.Tcp.CtlAck: + Pattern.Flow.Gtpv2.TeidFlag: description: |- - A value of 1 indicates that the ackknowledgment field is significant. + If teid_flag is set to 1 then the TEID field will be present between the message length and the sequence number. All messages except Echo and Echo reply require TEID to be present type: object properties: choice: @@ -20986,19 +25060,19 @@ components: default: - 0 increment: - $ref: '#/components/schemas/Pattern.Flow.Tcp.CtlAck.Counter' + $ref: '#/components/schemas/Pattern.Flow.Gtpv2.TeidFlag.Counter' x-field-uid: 5 decrement: - $ref: '#/components/schemas/Pattern.Flow.Tcp.CtlAck.Counter' + $ref: '#/components/schemas/Pattern.Flow.Gtpv2.TeidFlag.Counter' x-field-uid: 6 metric_tags: description: |- One or more metric tags can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. type: array items: - $ref: '#/components/schemas/Pattern.Flow.Tcp.CtlAck.MetricTag' + $ref: '#/components/schemas/Pattern.Flow.Gtpv2.TeidFlag.MetricTag' x-field-uid: 7 - Pattern.Flow.Tcp.CtlPsh.Counter: + Pattern.Flow.Gtpv2.Spare1.Counter: description: |- integer counter pattern type: object @@ -21008,20 +25082,20 @@ components: x-field-uid: 1 default: 0 format: uint32 - maximum: 1 + maximum: 7 step: type: integer x-field-uid: 2 default: 1 format: uint32 - maximum: 1 + maximum: 7 count: type: integer x-field-uid: 3 default: 1 format: uint32 - maximum: 1 - Pattern.Flow.Tcp.CtlPsh.MetricTag: + maximum: 7 + Pattern.Flow.Gtpv2.Spare1.MetricTag: description: |- Metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. type: object @@ -21040,19 +25114,20 @@ components: type: integer format: uint32 default: 0 - maximum: 0 + maximum: 2 x-field-uid: 2 length: description: |- Number of bits to track for metrics starting from configured offset of corresponding header field type: integer format: uint32 - default: 1 + default: 3 minimum: 1 - maximum: 1 + maximum: 3 x-field-uid: 3 - Pattern.Flow.Tcp.CtlPsh: - description: "Asks to push the buffered data to the receiving application. " + Pattern.Flow.Gtpv2.Spare1: + description: |- + A 3-bit reserved field (must be 0). type: object properties: choice: @@ -21078,30 +25153,30 @@ components: x-field-uid: 2 default: 0 format: uint32 - maximum: 1 + maximum: 7 values: type: array items: type: integer format: uint32 - maximum: 1 + maximum: 7 x-field-uid: 3 default: - 0 increment: - $ref: '#/components/schemas/Pattern.Flow.Tcp.CtlPsh.Counter' + $ref: '#/components/schemas/Pattern.Flow.Gtpv2.Spare1.Counter' x-field-uid: 5 decrement: - $ref: '#/components/schemas/Pattern.Flow.Tcp.CtlPsh.Counter' + $ref: '#/components/schemas/Pattern.Flow.Gtpv2.Spare1.Counter' x-field-uid: 6 metric_tags: description: |- One or more metric tags can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. type: array items: - $ref: '#/components/schemas/Pattern.Flow.Tcp.CtlPsh.MetricTag' + $ref: '#/components/schemas/Pattern.Flow.Gtpv2.Spare1.MetricTag' x-field-uid: 7 - Pattern.Flow.Tcp.CtlRst.Counter: + Pattern.Flow.Gtpv2.MessageType.Counter: description: |- integer counter pattern type: object @@ -21111,20 +25186,20 @@ components: x-field-uid: 1 default: 0 format: uint32 - maximum: 1 + maximum: 255 step: type: integer x-field-uid: 2 default: 1 format: uint32 - maximum: 1 + maximum: 255 count: type: integer x-field-uid: 3 default: 1 format: uint32 - maximum: 1 - Pattern.Flow.Tcp.CtlRst.MetricTag: + maximum: 255 + Pattern.Flow.Gtpv2.MessageType.MetricTag: description: |- Metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. type: object @@ -21143,19 +25218,20 @@ components: type: integer format: uint32 default: 0 - maximum: 0 + maximum: 7 x-field-uid: 2 length: description: |- Number of bits to track for metrics starting from configured offset of corresponding header field type: integer format: uint32 - default: 1 + default: 8 minimum: 1 - maximum: 1 + maximum: 8 x-field-uid: 3 - Pattern.Flow.Tcp.CtlRst: - description: "Reset the connection. " + Pattern.Flow.Gtpv2.MessageType: + description: |- + An 8-bit field that indicates the type of GTP message. Different types of messages are defined in 3GPP TS 29.060 section 7.1 type: object properties: choice: @@ -21181,30 +25257,30 @@ components: x-field-uid: 2 default: 0 format: uint32 - maximum: 1 + maximum: 255 values: type: array items: type: integer format: uint32 - maximum: 1 + maximum: 255 x-field-uid: 3 default: - 0 increment: - $ref: '#/components/schemas/Pattern.Flow.Tcp.CtlRst.Counter' + $ref: '#/components/schemas/Pattern.Flow.Gtpv2.MessageType.Counter' x-field-uid: 5 decrement: - $ref: '#/components/schemas/Pattern.Flow.Tcp.CtlRst.Counter' + $ref: '#/components/schemas/Pattern.Flow.Gtpv2.MessageType.Counter' x-field-uid: 6 metric_tags: description: |- One or more metric tags can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. type: array items: - $ref: '#/components/schemas/Pattern.Flow.Tcp.CtlRst.MetricTag' + $ref: '#/components/schemas/Pattern.Flow.Gtpv2.MessageType.MetricTag' x-field-uid: 7 - Pattern.Flow.Tcp.CtlSyn.Counter: + Pattern.Flow.Gtpv2.MessageLength.Counter: description: |- integer counter pattern type: object @@ -21214,20 +25290,20 @@ components: x-field-uid: 1 default: 0 format: uint32 - maximum: 1 + maximum: 65535 step: type: integer x-field-uid: 2 default: 1 format: uint32 - maximum: 1 + maximum: 65535 count: type: integer x-field-uid: 3 default: 1 format: uint32 - maximum: 1 - Pattern.Flow.Tcp.CtlSyn.MetricTag: + maximum: 65535 + Pattern.Flow.Gtpv2.MessageLength.MetricTag: description: |- Metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. type: object @@ -21246,19 +25322,20 @@ components: type: integer format: uint32 default: 0 - maximum: 0 + maximum: 15 x-field-uid: 2 length: description: |- Number of bits to track for metrics starting from configured offset of corresponding header field type: integer format: uint32 - default: 1 + default: 16 minimum: 1 - maximum: 1 + maximum: 16 x-field-uid: 3 - Pattern.Flow.Tcp.CtlSyn: - description: "Synchronize sequenece numbers. " + Pattern.Flow.Gtpv2.MessageLength: + description: |- + A 16-bit field that indicates the length of the payload in bytes, excluding the mandatory GTP-c header (first 4 bytes). Includes the TEID and sequence_number if they are present. type: object properties: choice: @@ -21284,30 +25361,30 @@ components: x-field-uid: 2 default: 0 format: uint32 - maximum: 1 + maximum: 65535 values: type: array items: type: integer format: uint32 - maximum: 1 + maximum: 65535 x-field-uid: 3 default: - 0 increment: - $ref: '#/components/schemas/Pattern.Flow.Tcp.CtlSyn.Counter' + $ref: '#/components/schemas/Pattern.Flow.Gtpv2.MessageLength.Counter' x-field-uid: 5 decrement: - $ref: '#/components/schemas/Pattern.Flow.Tcp.CtlSyn.Counter' + $ref: '#/components/schemas/Pattern.Flow.Gtpv2.MessageLength.Counter' x-field-uid: 6 metric_tags: description: |- One or more metric tags can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. type: array items: - $ref: '#/components/schemas/Pattern.Flow.Tcp.CtlSyn.MetricTag' + $ref: '#/components/schemas/Pattern.Flow.Gtpv2.MessageLength.MetricTag' x-field-uid: 7 - Pattern.Flow.Tcp.CtlFin.Counter: + Pattern.Flow.Gtpv2.Teid.Counter: description: |- integer counter pattern type: object @@ -21317,20 +25394,17 @@ components: x-field-uid: 1 default: 0 format: uint32 - maximum: 1 step: type: integer x-field-uid: 2 default: 1 format: uint32 - maximum: 1 count: type: integer x-field-uid: 3 default: 1 format: uint32 - maximum: 1 - Pattern.Flow.Tcp.CtlFin.MetricTag: + Pattern.Flow.Gtpv2.Teid.MetricTag: description: |- Metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. type: object @@ -21349,19 +25423,20 @@ components: type: integer format: uint32 default: 0 - maximum: 0 + maximum: 31 x-field-uid: 2 length: description: |- Number of bits to track for metrics starting from configured offset of corresponding header field type: integer format: uint32 - default: 1 + default: 32 minimum: 1 - maximum: 1 + maximum: 32 x-field-uid: 3 - Pattern.Flow.Tcp.CtlFin: - description: "Last packet from the sender. " + Pattern.Flow.Gtpv2.Teid: + description: |- + Tunnel endpoint identifier. A 32-bit (4-octet) field used to multiplex different connections in the same GTP tunnel. Is present only if the teid_flag is set. type: object properties: choice: @@ -21387,30 +25462,28 @@ components: x-field-uid: 2 default: 0 format: uint32 - maximum: 1 values: type: array items: type: integer format: uint32 - maximum: 1 x-field-uid: 3 default: - 0 increment: - $ref: '#/components/schemas/Pattern.Flow.Tcp.CtlFin.Counter' + $ref: '#/components/schemas/Pattern.Flow.Gtpv2.Teid.Counter' x-field-uid: 5 decrement: - $ref: '#/components/schemas/Pattern.Flow.Tcp.CtlFin.Counter' + $ref: '#/components/schemas/Pattern.Flow.Gtpv2.Teid.Counter' x-field-uid: 6 metric_tags: description: |- One or more metric tags can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. type: array items: - $ref: '#/components/schemas/Pattern.Flow.Tcp.CtlFin.MetricTag' + $ref: '#/components/schemas/Pattern.Flow.Gtpv2.Teid.MetricTag' x-field-uid: 7 - Pattern.Flow.Tcp.Window.Counter: + Pattern.Flow.Gtpv2.SequenceNumber.Counter: description: |- integer counter pattern type: object @@ -21420,20 +25493,20 @@ components: x-field-uid: 1 default: 0 format: uint32 - maximum: 65535 + maximum: 16777215 step: type: integer x-field-uid: 2 default: 1 format: uint32 - maximum: 65535 + maximum: 16777215 count: type: integer x-field-uid: 3 default: 1 format: uint32 - maximum: 65535 - Pattern.Flow.Tcp.Window.MetricTag: + maximum: 16777215 + Pattern.Flow.Gtpv2.SequenceNumber.MetricTag: description: |- Metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. type: object @@ -21452,20 +25525,20 @@ components: type: integer format: uint32 default: 0 - maximum: 15 + maximum: 23 x-field-uid: 2 length: description: |- Number of bits to track for metrics starting from configured offset of corresponding header field type: integer format: uint32 - default: 16 + default: 24 minimum: 1 - maximum: 16 + maximum: 24 x-field-uid: 3 - Pattern.Flow.Tcp.Window: + Pattern.Flow.Gtpv2.SequenceNumber: description: |- - Tcp connection window. + The sequence number type: object properties: choice: @@ -21491,30 +25564,30 @@ components: x-field-uid: 2 default: 0 format: uint32 - maximum: 65535 + maximum: 16777215 values: type: array items: type: integer format: uint32 - maximum: 65535 + maximum: 16777215 x-field-uid: 3 default: - 0 increment: - $ref: '#/components/schemas/Pattern.Flow.Tcp.Window.Counter' + $ref: '#/components/schemas/Pattern.Flow.Gtpv2.SequenceNumber.Counter' x-field-uid: 5 decrement: - $ref: '#/components/schemas/Pattern.Flow.Tcp.Window.Counter' + $ref: '#/components/schemas/Pattern.Flow.Gtpv2.SequenceNumber.Counter' x-field-uid: 6 metric_tags: description: |- One or more metric tags can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. type: array items: - $ref: '#/components/schemas/Pattern.Flow.Tcp.Window.MetricTag' + $ref: '#/components/schemas/Pattern.Flow.Gtpv2.SequenceNumber.MetricTag' x-field-uid: 7 - Pattern.Flow.Udp.SrcPort.Counter: + Pattern.Flow.Gtpv2.Spare2.Counter: description: |- integer counter pattern type: object @@ -21524,20 +25597,20 @@ components: x-field-uid: 1 default: 0 format: uint32 - maximum: 65535 + maximum: 255 step: type: integer x-field-uid: 2 default: 1 format: uint32 - maximum: 65535 + maximum: 255 count: type: integer x-field-uid: 3 default: 1 format: uint32 - maximum: 65535 - Pattern.Flow.Udp.SrcPort.MetricTag: + maximum: 255 + Pattern.Flow.Gtpv2.Spare2.MetricTag: description: |- Metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. type: object @@ -21556,20 +25629,20 @@ components: type: integer format: uint32 default: 0 - maximum: 15 + maximum: 7 x-field-uid: 2 length: description: |- Number of bits to track for metrics starting from configured offset of corresponding header field type: integer format: uint32 - default: 16 + default: 8 minimum: 1 - maximum: 16 + maximum: 8 x-field-uid: 3 - Pattern.Flow.Udp.SrcPort: + Pattern.Flow.Gtpv2.Spare2: description: |- - Source port + Reserved field type: object properties: choice: @@ -21595,30 +25668,30 @@ components: x-field-uid: 2 default: 0 format: uint32 - maximum: 65535 + maximum: 255 values: type: array items: type: integer format: uint32 - maximum: 65535 + maximum: 255 x-field-uid: 3 default: - 0 increment: - $ref: '#/components/schemas/Pattern.Flow.Udp.SrcPort.Counter' + $ref: '#/components/schemas/Pattern.Flow.Gtpv2.Spare2.Counter' x-field-uid: 5 decrement: - $ref: '#/components/schemas/Pattern.Flow.Udp.SrcPort.Counter' + $ref: '#/components/schemas/Pattern.Flow.Gtpv2.Spare2.Counter' x-field-uid: 6 metric_tags: description: |- One or more metric tags can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. type: array items: - $ref: '#/components/schemas/Pattern.Flow.Udp.SrcPort.MetricTag' + $ref: '#/components/schemas/Pattern.Flow.Gtpv2.Spare2.MetricTag' x-field-uid: 7 - Pattern.Flow.Udp.DstPort.Counter: + Pattern.Flow.Arp.HardwareType.Counter: description: |- integer counter pattern type: object @@ -21626,7 +25699,7 @@ components: start: type: integer x-field-uid: 1 - default: 0 + default: 1 format: uint32 maximum: 65535 step: @@ -21641,7 +25714,9 @@ components: default: 1 format: uint32 maximum: 65535 - Pattern.Flow.Udp.DstPort.MetricTag: + x-constants: + ethernet: 1 + Pattern.Flow.Arp.HardwareType.MetricTag: description: |- Metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. type: object @@ -21671,9 +25746,9 @@ components: minimum: 1 maximum: 16 x-field-uid: 3 - Pattern.Flow.Udp.DstPort: + Pattern.Flow.Arp.HardwareType: description: |- - Destination port + Network link protocol type type: object properties: choice: @@ -21697,7 +25772,7 @@ components: value: type: integer x-field-uid: 2 - default: 0 + default: 1 format: uint32 maximum: 65535 values: @@ -21708,21 +25783,23 @@ components: maximum: 65535 x-field-uid: 3 default: - - 0 + - 1 increment: - $ref: '#/components/schemas/Pattern.Flow.Udp.DstPort.Counter' + $ref: '#/components/schemas/Pattern.Flow.Arp.HardwareType.Counter' x-field-uid: 5 decrement: - $ref: '#/components/schemas/Pattern.Flow.Udp.DstPort.Counter' + $ref: '#/components/schemas/Pattern.Flow.Arp.HardwareType.Counter' x-field-uid: 6 metric_tags: description: |- One or more metric tags can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. type: array items: - $ref: '#/components/schemas/Pattern.Flow.Udp.DstPort.MetricTag' + $ref: '#/components/schemas/Pattern.Flow.Arp.HardwareType.MetricTag' x-field-uid: 7 - Pattern.Flow.Udp.Length.Counter: + x-constants: + ethernet: 1 + Pattern.Flow.Arp.ProtocolType.Counter: description: |- integer counter pattern type: object @@ -21730,7 +25807,7 @@ components: start: type: integer x-field-uid: 1 - default: 0 + default: 2048 format: uint32 maximum: 65535 step: @@ -21745,7 +25822,10 @@ components: default: 1 format: uint32 maximum: 65535 - Pattern.Flow.Udp.Length.MetricTag: + x-constants: + ipv4: 2048 + ipv6: 34525 + Pattern.Flow.Arp.ProtocolType.MetricTag: description: |- Metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. type: object @@ -21775,9 +25855,9 @@ components: minimum: 1 maximum: 16 x-field-uid: 3 - Pattern.Flow.Udp.Length: + Pattern.Flow.Arp.ProtocolType: description: |- - Length + The internetwork protocol for which the ARP request is intended type: object properties: choice: @@ -21801,7 +25881,7 @@ components: value: type: integer x-field-uid: 2 - default: 0 + default: 2048 format: uint32 maximum: 65535 values: @@ -21812,61 +25892,24 @@ components: maximum: 65535 x-field-uid: 3 default: - - 0 + - 2048 increment: - $ref: '#/components/schemas/Pattern.Flow.Udp.Length.Counter' + $ref: '#/components/schemas/Pattern.Flow.Arp.ProtocolType.Counter' x-field-uid: 5 decrement: - $ref: '#/components/schemas/Pattern.Flow.Udp.Length.Counter' + $ref: '#/components/schemas/Pattern.Flow.Arp.ProtocolType.Counter' x-field-uid: 6 metric_tags: description: |- One or more metric tags can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. type: array items: - $ref: '#/components/schemas/Pattern.Flow.Udp.Length.MetricTag' + $ref: '#/components/schemas/Pattern.Flow.Arp.ProtocolType.MetricTag' x-field-uid: 7 - Pattern.Flow.Udp.Checksum: - description: |- - UDP checksum - type: object - properties: - choice: - description: |- - The type of checksum - type: string - x-enum: - generated: - x-field-uid: 1 - custom: - x-field-uid: 2 - default: generated - x-field-uid: 1 - enum: - - generated - - custom - generated: - description: |- - A system generated checksum value - type: string - x-enum: - good: - x-field-uid: 1 - bad: - x-field-uid: 2 - default: good - x-field-uid: 2 - enum: - - good - - bad - custom: - description: |- - A custom checksum value - type: integer - format: uint32 - maximum: 65535 - x-field-uid: 3 - Pattern.Flow.Gre.ChecksumPresent.Counter: + x-constants: + ipv4: 2048 + ipv6: 34525 + Pattern.Flow.Arp.HardwareLength.Counter: description: |- integer counter pattern type: object @@ -21874,22 +25917,22 @@ components: start: type: integer x-field-uid: 1 - default: 0 + default: 6 format: uint32 - maximum: 1 + maximum: 255 step: type: integer x-field-uid: 2 default: 1 format: uint32 - maximum: 1 + maximum: 255 count: type: integer x-field-uid: 3 default: 1 format: uint32 - maximum: 1 - Pattern.Flow.Gre.ChecksumPresent.MetricTag: + maximum: 255 + Pattern.Flow.Arp.HardwareLength.MetricTag: description: |- Metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. type: object @@ -21908,20 +25951,20 @@ components: type: integer format: uint32 default: 0 - maximum: 0 + maximum: 7 x-field-uid: 2 length: description: |- Number of bits to track for metrics starting from configured offset of corresponding header field type: integer format: uint32 - default: 1 + default: 8 minimum: 1 - maximum: 1 + maximum: 8 x-field-uid: 3 - Pattern.Flow.Gre.ChecksumPresent: + Pattern.Flow.Arp.HardwareLength: description: |- - Checksum present bit + Length (in octets) of a hardware address type: object properties: choice: @@ -21945,32 +25988,32 @@ components: value: type: integer x-field-uid: 2 - default: 0 + default: 6 format: uint32 - maximum: 1 + maximum: 255 values: type: array items: type: integer format: uint32 - maximum: 1 + maximum: 255 x-field-uid: 3 default: - - 0 + - 6 increment: - $ref: '#/components/schemas/Pattern.Flow.Gre.ChecksumPresent.Counter' + $ref: '#/components/schemas/Pattern.Flow.Arp.HardwareLength.Counter' x-field-uid: 5 decrement: - $ref: '#/components/schemas/Pattern.Flow.Gre.ChecksumPresent.Counter' + $ref: '#/components/schemas/Pattern.Flow.Arp.HardwareLength.Counter' x-field-uid: 6 metric_tags: description: |- One or more metric tags can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. type: array items: - $ref: '#/components/schemas/Pattern.Flow.Gre.ChecksumPresent.MetricTag' + $ref: '#/components/schemas/Pattern.Flow.Arp.HardwareLength.MetricTag' x-field-uid: 7 - Pattern.Flow.Gre.Reserved0.Counter: + Pattern.Flow.Arp.ProtocolLength.Counter: description: |- integer counter pattern type: object @@ -21978,22 +26021,22 @@ components: start: type: integer x-field-uid: 1 - default: 0 + default: 4 format: uint32 - maximum: 4095 + maximum: 255 step: type: integer x-field-uid: 2 default: 1 format: uint32 - maximum: 4095 + maximum: 255 count: type: integer x-field-uid: 3 default: 1 format: uint32 - maximum: 4095 - Pattern.Flow.Gre.Reserved0.MetricTag: + maximum: 255 + Pattern.Flow.Arp.ProtocolLength.MetricTag: description: |- Metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. type: object @@ -22012,20 +26055,20 @@ components: type: integer format: uint32 default: 0 - maximum: 11 + maximum: 7 x-field-uid: 2 length: description: |- Number of bits to track for metrics starting from configured offset of corresponding header field type: integer format: uint32 - default: 12 + default: 8 minimum: 1 - maximum: 12 + maximum: 8 x-field-uid: 3 - Pattern.Flow.Gre.Reserved0: + Pattern.Flow.Arp.ProtocolLength: description: |- - Reserved bits + Length (in octets) of internetwork addresses type: object properties: choice: @@ -22049,32 +26092,32 @@ components: value: type: integer x-field-uid: 2 - default: 0 + default: 4 format: uint32 - maximum: 4095 + maximum: 255 values: type: array items: type: integer format: uint32 - maximum: 4095 + maximum: 255 x-field-uid: 3 default: - - 0 + - 4 increment: - $ref: '#/components/schemas/Pattern.Flow.Gre.Reserved0.Counter' + $ref: '#/components/schemas/Pattern.Flow.Arp.ProtocolLength.Counter' x-field-uid: 5 decrement: - $ref: '#/components/schemas/Pattern.Flow.Gre.Reserved0.Counter' + $ref: '#/components/schemas/Pattern.Flow.Arp.ProtocolLength.Counter' x-field-uid: 6 metric_tags: description: |- One or more metric tags can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. type: array items: - $ref: '#/components/schemas/Pattern.Flow.Gre.Reserved0.MetricTag' + $ref: '#/components/schemas/Pattern.Flow.Arp.ProtocolLength.MetricTag' x-field-uid: 7 - Pattern.Flow.Gre.Version.Counter: + Pattern.Flow.Arp.Operation.Counter: description: |- integer counter pattern type: object @@ -22082,22 +26125,25 @@ components: start: type: integer x-field-uid: 1 - default: 0 + default: 1 format: uint32 - maximum: 7 + maximum: 65535 step: type: integer x-field-uid: 2 default: 1 format: uint32 - maximum: 7 + maximum: 65535 count: type: integer x-field-uid: 3 default: 1 format: uint32 - maximum: 7 - Pattern.Flow.Gre.Version.MetricTag: + maximum: 65535 + x-constants: + request: 1 + reply: 2 + Pattern.Flow.Arp.Operation.MetricTag: description: |- Metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. type: object @@ -22116,20 +26162,20 @@ components: type: integer format: uint32 default: 0 - maximum: 2 + maximum: 15 x-field-uid: 2 length: description: |- Number of bits to track for metrics starting from configured offset of corresponding header field type: integer format: uint32 - default: 3 + default: 16 minimum: 1 - maximum: 3 + maximum: 16 x-field-uid: 3 - Pattern.Flow.Gre.Version: + Pattern.Flow.Arp.Operation: description: |- - GRE version number + The operation that the sender is performing type: object properties: choice: @@ -22153,58 +26199,55 @@ components: value: type: integer x-field-uid: 2 - default: 0 + default: 1 format: uint32 - maximum: 7 + maximum: 65535 values: type: array items: type: integer format: uint32 - maximum: 7 + maximum: 65535 x-field-uid: 3 default: - - 0 + - 1 increment: - $ref: '#/components/schemas/Pattern.Flow.Gre.Version.Counter' + $ref: '#/components/schemas/Pattern.Flow.Arp.Operation.Counter' x-field-uid: 5 decrement: - $ref: '#/components/schemas/Pattern.Flow.Gre.Version.Counter' + $ref: '#/components/schemas/Pattern.Flow.Arp.Operation.Counter' x-field-uid: 6 metric_tags: description: |- One or more metric tags can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. type: array items: - $ref: '#/components/schemas/Pattern.Flow.Gre.Version.MetricTag' + $ref: '#/components/schemas/Pattern.Flow.Arp.Operation.MetricTag' x-field-uid: 7 - Pattern.Flow.Gre.Protocol.Counter: + x-constants: + request: 1 + reply: 2 + Pattern.Flow.Arp.SenderHardwareAddr.Counter: description: |- - integer counter pattern + mac counter pattern type: object properties: start: - type: integer + type: string x-field-uid: 1 - default: 2048 - format: uint32 - maximum: 65535 + default: 00:00:00:00:00:00 + format: mac step: - type: integer + type: string x-field-uid: 2 - default: 1 - format: uint32 - maximum: 65535 + default: 00:00:00:00:00:01 + format: mac count: type: integer x-field-uid: 3 default: 1 format: uint32 - maximum: 65535 - x-constants: - ipv4: 2048 - ipv6: 34525 - Pattern.Flow.Gre.Protocol.MetricTag: + Pattern.Flow.Arp.SenderHardwareAddr.MetricTag: description: |- Metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. type: object @@ -22223,20 +26266,20 @@ components: type: integer format: uint32 default: 0 - maximum: 15 + maximum: 47 x-field-uid: 2 length: description: |- Number of bits to track for metrics starting from configured offset of corresponding header field type: integer format: uint32 - default: 16 + default: 48 minimum: 1 - maximum: 16 + maximum: 48 x-field-uid: 3 - Pattern.Flow.Gre.Protocol: + Pattern.Flow.Arp.SenderHardwareAddr: description: |- - Protocol type of encapsulated payload + Media address of the sender type: object properties: choice: @@ -22258,100 +26301,52 @@ components: - increment - decrement value: - type: integer + type: string x-field-uid: 2 - default: 2048 - format: uint32 - maximum: 65535 + default: 00:00:00:00:00:00 + format: mac values: type: array items: - type: integer - format: uint32 - maximum: 65535 + type: string + format: mac x-field-uid: 3 default: - - 2048 + - 00:00:00:00:00:00 increment: - $ref: '#/components/schemas/Pattern.Flow.Gre.Protocol.Counter' + $ref: '#/components/schemas/Pattern.Flow.Arp.SenderHardwareAddr.Counter' x-field-uid: 5 decrement: - $ref: '#/components/schemas/Pattern.Flow.Gre.Protocol.Counter' + $ref: '#/components/schemas/Pattern.Flow.Arp.SenderHardwareAddr.Counter' x-field-uid: 6 metric_tags: description: |- One or more metric tags can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. type: array items: - $ref: '#/components/schemas/Pattern.Flow.Gre.Protocol.MetricTag' + $ref: '#/components/schemas/Pattern.Flow.Arp.SenderHardwareAddr.MetricTag' x-field-uid: 7 - x-constants: - ipv4: 2048 - ipv6: 34525 - Pattern.Flow.Gre.Checksum: - description: |- - Optional checksum of GRE header and payload. Only present if the checksum_present bit is set. - type: object - properties: - choice: - description: |- - The type of checksum - type: string - x-enum: - generated: - x-field-uid: 1 - custom: - x-field-uid: 2 - default: generated - x-field-uid: 1 - enum: - - generated - - custom - generated: - description: |- - A system generated checksum value - type: string - x-enum: - good: - x-field-uid: 1 - bad: - x-field-uid: 2 - default: good - x-field-uid: 2 - enum: - - good - - bad - custom: - description: |- - A custom checksum value - type: integer - format: uint32 - maximum: 65535 - x-field-uid: 3 - Pattern.Flow.Gre.Reserved1.Counter: + Pattern.Flow.Arp.SenderProtocolAddr.Counter: description: |- - integer counter pattern + ipv4 counter pattern type: object properties: start: - type: integer + type: string x-field-uid: 1 - default: 0 - format: uint32 - maximum: 65535 + default: 0.0.0.0 + format: ipv4 step: - type: integer + type: string x-field-uid: 2 - default: 1 - format: uint32 - maximum: 65535 + default: 0.0.0.1 + format: ipv4 count: type: integer x-field-uid: 3 default: 1 format: uint32 - maximum: 65535 - Pattern.Flow.Gre.Reserved1.MetricTag: + Pattern.Flow.Arp.SenderProtocolAddr.MetricTag: description: |- Metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. type: object @@ -22370,20 +26365,20 @@ components: type: integer format: uint32 default: 0 - maximum: 15 + maximum: 31 x-field-uid: 2 length: description: |- Number of bits to track for metrics starting from configured offset of corresponding header field type: integer format: uint32 - default: 16 + default: 32 minimum: 1 - maximum: 16 + maximum: 32 x-field-uid: 3 - Pattern.Flow.Gre.Reserved1: + Pattern.Flow.Arp.SenderProtocolAddr: description: |- - Optional reserved field. Only present if the checksum_present bit is set. + Internetwork address of the sender type: object properties: choice: @@ -22405,57 +26400,52 @@ components: - increment - decrement value: - type: integer + type: string x-field-uid: 2 - default: 0 - format: uint32 - maximum: 65535 + default: 0.0.0.0 + format: ipv4 values: type: array items: - type: integer - format: uint32 - maximum: 65535 + type: string + format: ipv4 x-field-uid: 3 default: - - 0 + - 0.0.0.0 increment: - $ref: '#/components/schemas/Pattern.Flow.Gre.Reserved1.Counter' + $ref: '#/components/schemas/Pattern.Flow.Arp.SenderProtocolAddr.Counter' x-field-uid: 5 decrement: - $ref: '#/components/schemas/Pattern.Flow.Gre.Reserved1.Counter' + $ref: '#/components/schemas/Pattern.Flow.Arp.SenderProtocolAddr.Counter' x-field-uid: 6 metric_tags: description: |- One or more metric tags can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. type: array items: - $ref: '#/components/schemas/Pattern.Flow.Gre.Reserved1.MetricTag' + $ref: '#/components/schemas/Pattern.Flow.Arp.SenderProtocolAddr.MetricTag' x-field-uid: 7 - Pattern.Flow.Gtpv1.Version.Counter: + Pattern.Flow.Arp.TargetHardwareAddr.Counter: description: |- - integer counter pattern + mac counter pattern type: object properties: start: - type: integer + type: string x-field-uid: 1 - default: 1 - format: uint32 - maximum: 7 + default: 00:00:00:00:00:00 + format: mac step: - type: integer + type: string x-field-uid: 2 - default: 1 - format: uint32 - maximum: 7 + default: 00:00:00:00:00:01 + format: mac count: type: integer x-field-uid: 3 default: 1 format: uint32 - maximum: 7 - Pattern.Flow.Gtpv1.Version.MetricTag: + Pattern.Flow.Arp.TargetHardwareAddr.MetricTag: description: |- Metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. type: object @@ -22474,20 +26464,20 @@ components: type: integer format: uint32 default: 0 - maximum: 2 + maximum: 47 x-field-uid: 2 length: description: |- Number of bits to track for metrics starting from configured offset of corresponding header field type: integer format: uint32 - default: 3 + default: 48 minimum: 1 - maximum: 3 + maximum: 48 x-field-uid: 3 - Pattern.Flow.Gtpv1.Version: + Pattern.Flow.Arp.TargetHardwareAddr: description: |- - GTPv1 version + Media address of the target type: object properties: choice: @@ -22509,57 +26499,52 @@ components: - increment - decrement value: - type: integer + type: string x-field-uid: 2 - default: 1 - format: uint32 - maximum: 7 + default: 00:00:00:00:00:00 + format: mac values: type: array items: - type: integer - format: uint32 - maximum: 7 + type: string + format: mac x-field-uid: 3 default: - - 1 + - 00:00:00:00:00:00 increment: - $ref: '#/components/schemas/Pattern.Flow.Gtpv1.Version.Counter' + $ref: '#/components/schemas/Pattern.Flow.Arp.TargetHardwareAddr.Counter' x-field-uid: 5 decrement: - $ref: '#/components/schemas/Pattern.Flow.Gtpv1.Version.Counter' + $ref: '#/components/schemas/Pattern.Flow.Arp.TargetHardwareAddr.Counter' x-field-uid: 6 metric_tags: description: |- One or more metric tags can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. type: array items: - $ref: '#/components/schemas/Pattern.Flow.Gtpv1.Version.MetricTag' + $ref: '#/components/schemas/Pattern.Flow.Arp.TargetHardwareAddr.MetricTag' x-field-uid: 7 - Pattern.Flow.Gtpv1.ProtocolType.Counter: + Pattern.Flow.Arp.TargetProtocolAddr.Counter: description: |- - integer counter pattern + ipv4 counter pattern type: object properties: start: - type: integer + type: string x-field-uid: 1 - default: 1 - format: uint32 - maximum: 1 + default: 0.0.0.0 + format: ipv4 step: - type: integer + type: string x-field-uid: 2 - default: 1 - format: uint32 - maximum: 1 + default: 0.0.0.1 + format: ipv4 count: type: integer x-field-uid: 3 default: 1 format: uint32 - maximum: 1 - Pattern.Flow.Gtpv1.ProtocolType.MetricTag: + Pattern.Flow.Arp.TargetProtocolAddr.MetricTag: description: |- Metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. type: object @@ -22578,20 +26563,20 @@ components: type: integer format: uint32 default: 0 - maximum: 0 + maximum: 31 x-field-uid: 2 length: description: |- Number of bits to track for metrics starting from configured offset of corresponding header field type: integer format: uint32 - default: 1 + default: 32 minimum: 1 - maximum: 1 + maximum: 32 x-field-uid: 3 - Pattern.Flow.Gtpv1.ProtocolType: + Pattern.Flow.Arp.TargetProtocolAddr: description: |- - Protocol type, GTP is 1, GTP' is 0 + Internetwork address of the target type: object properties: choice: @@ -22613,34 +26598,32 @@ components: - increment - decrement value: - type: integer + type: string x-field-uid: 2 - default: 1 - format: uint32 - maximum: 1 + default: 0.0.0.0 + format: ipv4 values: type: array items: - type: integer - format: uint32 - maximum: 1 + type: string + format: ipv4 x-field-uid: 3 default: - - 1 + - 0.0.0.0 increment: - $ref: '#/components/schemas/Pattern.Flow.Gtpv1.ProtocolType.Counter' + $ref: '#/components/schemas/Pattern.Flow.Arp.TargetProtocolAddr.Counter' x-field-uid: 5 decrement: - $ref: '#/components/schemas/Pattern.Flow.Gtpv1.ProtocolType.Counter' + $ref: '#/components/schemas/Pattern.Flow.Arp.TargetProtocolAddr.Counter' x-field-uid: 6 metric_tags: description: |- One or more metric tags can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. type: array items: - $ref: '#/components/schemas/Pattern.Flow.Gtpv1.ProtocolType.MetricTag' + $ref: '#/components/schemas/Pattern.Flow.Arp.TargetProtocolAddr.MetricTag' x-field-uid: 7 - Pattern.Flow.Gtpv1.Reserved.Counter: + Pattern.Flow.Icmp.Echo.Type.Counter: description: |- integer counter pattern type: object @@ -22648,22 +26631,25 @@ components: start: type: integer x-field-uid: 1 - default: 0 + default: 8 format: uint32 - maximum: 1 + maximum: 255 step: type: integer x-field-uid: 2 default: 1 format: uint32 - maximum: 1 + maximum: 255 count: type: integer x-field-uid: 3 default: 1 format: uint32 - maximum: 1 - Pattern.Flow.Gtpv1.Reserved.MetricTag: + maximum: 255 + x-constants: + reply: 0 + request: 8 + Pattern.Flow.Icmp.Echo.Type.MetricTag: description: |- Metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. type: object @@ -22682,20 +26668,20 @@ components: type: integer format: uint32 default: 0 - maximum: 0 + maximum: 7 x-field-uid: 2 length: description: |- Number of bits to track for metrics starting from configured offset of corresponding header field type: integer format: uint32 - default: 1 + default: 8 minimum: 1 - maximum: 1 + maximum: 8 x-field-uid: 3 - Pattern.Flow.Gtpv1.Reserved: + Pattern.Flow.Icmp.Echo.Type: description: |- - Reserved field + The type of ICMP echo packet type: object properties: choice: @@ -22719,32 +26705,35 @@ components: value: type: integer x-field-uid: 2 - default: 0 + default: 8 format: uint32 - maximum: 1 + maximum: 255 values: type: array items: type: integer format: uint32 - maximum: 1 + maximum: 255 x-field-uid: 3 default: - - 0 + - 8 increment: - $ref: '#/components/schemas/Pattern.Flow.Gtpv1.Reserved.Counter' + $ref: '#/components/schemas/Pattern.Flow.Icmp.Echo.Type.Counter' x-field-uid: 5 decrement: - $ref: '#/components/schemas/Pattern.Flow.Gtpv1.Reserved.Counter' + $ref: '#/components/schemas/Pattern.Flow.Icmp.Echo.Type.Counter' x-field-uid: 6 metric_tags: description: |- One or more metric tags can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. type: array items: - $ref: '#/components/schemas/Pattern.Flow.Gtpv1.Reserved.MetricTag' + $ref: '#/components/schemas/Pattern.Flow.Icmp.Echo.Type.MetricTag' x-field-uid: 7 - Pattern.Flow.Gtpv1.EFlag.Counter: + x-constants: + reply: 0 + request: 8 + Pattern.Flow.Icmp.Echo.Code.Counter: description: |- integer counter pattern type: object @@ -22754,20 +26743,20 @@ components: x-field-uid: 1 default: 0 format: uint32 - maximum: 1 + maximum: 255 step: type: integer x-field-uid: 2 default: 1 format: uint32 - maximum: 1 + maximum: 255 count: type: integer x-field-uid: 3 default: 1 format: uint32 - maximum: 1 - Pattern.Flow.Gtpv1.EFlag.MetricTag: + maximum: 255 + Pattern.Flow.Icmp.Echo.Code.MetricTag: description: |- Metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. type: object @@ -22786,20 +26775,20 @@ components: type: integer format: uint32 default: 0 - maximum: 0 + maximum: 7 x-field-uid: 2 length: description: |- Number of bits to track for metrics starting from configured offset of corresponding header field type: integer format: uint32 - default: 1 + default: 8 minimum: 1 - maximum: 1 + maximum: 8 x-field-uid: 3 - Pattern.Flow.Gtpv1.EFlag: + Pattern.Flow.Icmp.Echo.Code: description: |- - Extension header field present + The ICMP subtype. The default code for ICMP echo request and reply is 0. type: object properties: choice: @@ -22825,30 +26814,70 @@ components: x-field-uid: 2 default: 0 format: uint32 - maximum: 1 + maximum: 255 values: type: array items: type: integer format: uint32 - maximum: 1 + maximum: 255 x-field-uid: 3 default: - 0 increment: - $ref: '#/components/schemas/Pattern.Flow.Gtpv1.EFlag.Counter' + $ref: '#/components/schemas/Pattern.Flow.Icmp.Echo.Code.Counter' x-field-uid: 5 decrement: - $ref: '#/components/schemas/Pattern.Flow.Gtpv1.EFlag.Counter' + $ref: '#/components/schemas/Pattern.Flow.Icmp.Echo.Code.Counter' x-field-uid: 6 metric_tags: description: |- One or more metric tags can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. type: array items: - $ref: '#/components/schemas/Pattern.Flow.Gtpv1.EFlag.MetricTag' + $ref: '#/components/schemas/Pattern.Flow.Icmp.Echo.Code.MetricTag' x-field-uid: 7 - Pattern.Flow.Gtpv1.SFlag.Counter: + Pattern.Flow.Icmp.Echo.Checksum: + description: |- + ICMP checksum + type: object + properties: + choice: + description: |- + The type of checksum + type: string + x-enum: + generated: + x-field-uid: 1 + custom: + x-field-uid: 2 + default: generated + x-field-uid: 1 + enum: + - generated + - custom + generated: + description: |- + A system generated checksum value + type: string + x-enum: + good: + x-field-uid: 1 + bad: + x-field-uid: 2 + default: good + x-field-uid: 2 + enum: + - good + - bad + custom: + description: |- + A custom checksum value + type: integer + format: uint32 + maximum: 65535 + x-field-uid: 3 + Pattern.Flow.Icmp.Echo.Identifier.Counter: description: |- integer counter pattern type: object @@ -22858,20 +26887,20 @@ components: x-field-uid: 1 default: 0 format: uint32 - maximum: 1 + maximum: 65535 step: type: integer x-field-uid: 2 default: 1 format: uint32 - maximum: 1 + maximum: 65535 count: type: integer x-field-uid: 3 default: 1 format: uint32 - maximum: 1 - Pattern.Flow.Gtpv1.SFlag.MetricTag: + maximum: 65535 + Pattern.Flow.Icmp.Echo.Identifier.MetricTag: description: |- Metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. type: object @@ -22890,20 +26919,20 @@ components: type: integer format: uint32 default: 0 - maximum: 0 + maximum: 15 x-field-uid: 2 length: description: |- Number of bits to track for metrics starting from configured offset of corresponding header field type: integer format: uint32 - default: 1 + default: 16 minimum: 1 - maximum: 1 + maximum: 16 x-field-uid: 3 - Pattern.Flow.Gtpv1.SFlag: + Pattern.Flow.Icmp.Echo.Identifier: description: |- - Sequence number field present + ICMP identifier type: object properties: choice: @@ -22929,30 +26958,30 @@ components: x-field-uid: 2 default: 0 format: uint32 - maximum: 1 + maximum: 65535 values: type: array items: type: integer format: uint32 - maximum: 1 + maximum: 65535 x-field-uid: 3 default: - 0 increment: - $ref: '#/components/schemas/Pattern.Flow.Gtpv1.SFlag.Counter' + $ref: '#/components/schemas/Pattern.Flow.Icmp.Echo.Identifier.Counter' x-field-uid: 5 decrement: - $ref: '#/components/schemas/Pattern.Flow.Gtpv1.SFlag.Counter' + $ref: '#/components/schemas/Pattern.Flow.Icmp.Echo.Identifier.Counter' x-field-uid: 6 metric_tags: description: |- One or more metric tags can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. type: array items: - $ref: '#/components/schemas/Pattern.Flow.Gtpv1.SFlag.MetricTag' + $ref: '#/components/schemas/Pattern.Flow.Icmp.Echo.Identifier.MetricTag' x-field-uid: 7 - Pattern.Flow.Gtpv1.PnFlag.Counter: + Pattern.Flow.Icmp.Echo.SequenceNumber.Counter: description: |- integer counter pattern type: object @@ -22962,20 +26991,20 @@ components: x-field-uid: 1 default: 0 format: uint32 - maximum: 1 + maximum: 65535 step: type: integer x-field-uid: 2 default: 1 format: uint32 - maximum: 1 + maximum: 65535 count: type: integer x-field-uid: 3 default: 1 format: uint32 - maximum: 1 - Pattern.Flow.Gtpv1.PnFlag.MetricTag: + maximum: 65535 + Pattern.Flow.Icmp.Echo.SequenceNumber.MetricTag: description: |- Metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. type: object @@ -22994,20 +27023,20 @@ components: type: integer format: uint32 default: 0 - maximum: 0 + maximum: 15 x-field-uid: 2 length: description: |- Number of bits to track for metrics starting from configured offset of corresponding header field type: integer format: uint32 - default: 1 + default: 16 minimum: 1 - maximum: 1 + maximum: 16 x-field-uid: 3 - Pattern.Flow.Gtpv1.PnFlag: + Pattern.Flow.Icmp.Echo.SequenceNumber: description: |- - N-PDU field present + ICMP sequence number type: object properties: choice: @@ -23031,32 +27060,72 @@ components: value: type: integer x-field-uid: 2 - default: 0 + default: 0 + format: uint32 + maximum: 65535 + values: + type: array + items: + type: integer + format: uint32 + maximum: 65535 + x-field-uid: 3 + default: + - 0 + increment: + $ref: '#/components/schemas/Pattern.Flow.Icmp.Echo.SequenceNumber.Counter' + x-field-uid: 5 + decrement: + $ref: '#/components/schemas/Pattern.Flow.Icmp.Echo.SequenceNumber.Counter' + x-field-uid: 6 + metric_tags: + description: |- + One or more metric tags can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. + type: array + items: + $ref: '#/components/schemas/Pattern.Flow.Icmp.Echo.SequenceNumber.MetricTag' + x-field-uid: 7 + Pattern.Flow.Icmp.Common.Checksum: + description: |- + ICMP checksum + type: object + properties: + choice: + description: |- + The type of checksum + type: string + x-enum: + generated: + x-field-uid: 1 + custom: + x-field-uid: 2 + default: generated + x-field-uid: 1 + enum: + - generated + - custom + generated: + description: |- + A system generated checksum value + type: string + x-enum: + good: + x-field-uid: 1 + bad: + x-field-uid: 2 + default: good + x-field-uid: 2 + enum: + - good + - bad + custom: + description: |- + A custom checksum value + type: integer format: uint32 - maximum: 1 - values: - type: array - items: - type: integer - format: uint32 - maximum: 1 + maximum: 65535 x-field-uid: 3 - default: - - 0 - increment: - $ref: '#/components/schemas/Pattern.Flow.Gtpv1.PnFlag.Counter' - x-field-uid: 5 - decrement: - $ref: '#/components/schemas/Pattern.Flow.Gtpv1.PnFlag.Counter' - x-field-uid: 6 - metric_tags: - description: |- - One or more metric tags can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. - type: array - items: - $ref: '#/components/schemas/Pattern.Flow.Gtpv1.PnFlag.MetricTag' - x-field-uid: 7 - Pattern.Flow.Gtpv1.MessageType.Counter: + Pattern.Flow.Icmp.NextFields.Identifier.Counter: description: |- integer counter pattern type: object @@ -23066,20 +27135,20 @@ components: x-field-uid: 1 default: 0 format: uint32 - maximum: 255 + maximum: 65535 step: type: integer x-field-uid: 2 default: 1 format: uint32 - maximum: 255 + maximum: 65535 count: type: integer x-field-uid: 3 default: 1 format: uint32 - maximum: 255 - Pattern.Flow.Gtpv1.MessageType.MetricTag: + maximum: 65535 + Pattern.Flow.Icmp.NextFields.Identifier.MetricTag: description: |- Metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. type: object @@ -23098,20 +27167,20 @@ components: type: integer format: uint32 default: 0 - maximum: 7 + maximum: 15 x-field-uid: 2 length: description: |- Number of bits to track for metrics starting from configured offset of corresponding header field type: integer format: uint32 - default: 8 + default: 16 minimum: 1 - maximum: 8 + maximum: 16 x-field-uid: 3 - Pattern.Flow.Gtpv1.MessageType: + Pattern.Flow.Icmp.NextFields.Identifier: description: |- - The type of GTP message Different types of messages are defined in 3GPP TS 29.060 section 7.1 + ICMP identifier type: object properties: choice: @@ -23137,30 +27206,30 @@ components: x-field-uid: 2 default: 0 format: uint32 - maximum: 255 + maximum: 65535 values: type: array items: type: integer format: uint32 - maximum: 255 + maximum: 65535 x-field-uid: 3 default: - 0 increment: - $ref: '#/components/schemas/Pattern.Flow.Gtpv1.MessageType.Counter' + $ref: '#/components/schemas/Pattern.Flow.Icmp.NextFields.Identifier.Counter' x-field-uid: 5 decrement: - $ref: '#/components/schemas/Pattern.Flow.Gtpv1.MessageType.Counter' + $ref: '#/components/schemas/Pattern.Flow.Icmp.NextFields.Identifier.Counter' x-field-uid: 6 metric_tags: description: |- One or more metric tags can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. type: array items: - $ref: '#/components/schemas/Pattern.Flow.Gtpv1.MessageType.MetricTag' + $ref: '#/components/schemas/Pattern.Flow.Icmp.NextFields.Identifier.MetricTag' x-field-uid: 7 - Pattern.Flow.Gtpv1.MessageLength.Counter: + Pattern.Flow.Icmp.NextFields.SequenceNumber.Counter: description: |- integer counter pattern type: object @@ -23183,7 +27252,7 @@ components: default: 1 format: uint32 maximum: 65535 - Pattern.Flow.Gtpv1.MessageLength.MetricTag: + Pattern.Flow.Icmp.NextFields.SequenceNumber.MetricTag: description: |- Metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. type: object @@ -23213,9 +27282,9 @@ components: minimum: 1 maximum: 16 x-field-uid: 3 - Pattern.Flow.Gtpv1.MessageLength: + Pattern.Flow.Icmp.NextFields.SequenceNumber: description: |- - The length of the payload (the bytes following the mandatory 8-byte GTP header) in bytes that includes any optional fields + ICMP sequence number type: object properties: choice: @@ -23252,19 +27321,19 @@ components: default: - 0 increment: - $ref: '#/components/schemas/Pattern.Flow.Gtpv1.MessageLength.Counter' + $ref: '#/components/schemas/Pattern.Flow.Icmp.NextFields.SequenceNumber.Counter' x-field-uid: 5 decrement: - $ref: '#/components/schemas/Pattern.Flow.Gtpv1.MessageLength.Counter' + $ref: '#/components/schemas/Pattern.Flow.Icmp.NextFields.SequenceNumber.Counter' x-field-uid: 6 metric_tags: description: |- One or more metric tags can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. type: array items: - $ref: '#/components/schemas/Pattern.Flow.Gtpv1.MessageLength.MetricTag' + $ref: '#/components/schemas/Pattern.Flow.Icmp.NextFields.SequenceNumber.MetricTag' x-field-uid: 7 - Pattern.Flow.Gtpv1.Teid.Counter: + Pattern.Flow.Icmpv6.Echo.Type.Counter: description: |- integer counter pattern type: object @@ -23272,19 +27341,25 @@ components: start: type: integer x-field-uid: 1 - default: 0 + default: 128 format: uint32 + maximum: 255 step: type: integer x-field-uid: 2 default: 1 format: uint32 + maximum: 255 count: type: integer x-field-uid: 3 default: 1 format: uint32 - Pattern.Flow.Gtpv1.Teid.MetricTag: + maximum: 255 + x-constants: + request: 128 + reply: 129 + Pattern.Flow.Icmpv6.Echo.Type.MetricTag: description: |- Metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. type: object @@ -23303,20 +27378,20 @@ components: type: integer format: uint32 default: 0 - maximum: 31 + maximum: 7 x-field-uid: 2 length: description: |- Number of bits to track for metrics starting from configured offset of corresponding header field type: integer format: uint32 - default: 32 + default: 8 minimum: 1 - maximum: 32 + maximum: 8 x-field-uid: 3 - Pattern.Flow.Gtpv1.Teid: + Pattern.Flow.Icmpv6.Echo.Type: description: |- - Tunnel endpoint identifier (TEID) used to multiplex connections in the same GTP tunnel + ICMPv6 echo type type: object properties: choice: @@ -23340,30 +27415,35 @@ components: value: type: integer x-field-uid: 2 - default: 0 + default: 128 format: uint32 + maximum: 255 values: type: array items: type: integer format: uint32 + maximum: 255 x-field-uid: 3 default: - - 0 + - 128 increment: - $ref: '#/components/schemas/Pattern.Flow.Gtpv1.Teid.Counter' + $ref: '#/components/schemas/Pattern.Flow.Icmpv6.Echo.Type.Counter' x-field-uid: 5 decrement: - $ref: '#/components/schemas/Pattern.Flow.Gtpv1.Teid.Counter' + $ref: '#/components/schemas/Pattern.Flow.Icmpv6.Echo.Type.Counter' x-field-uid: 6 metric_tags: description: |- One or more metric tags can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. type: array items: - $ref: '#/components/schemas/Pattern.Flow.Gtpv1.Teid.MetricTag' + $ref: '#/components/schemas/Pattern.Flow.Icmpv6.Echo.Type.MetricTag' x-field-uid: 7 - Pattern.Flow.Gtpv1.SquenceNumber.Counter: + x-constants: + request: 128 + reply: 129 + Pattern.Flow.Icmpv6.Echo.Code.Counter: description: |- integer counter pattern type: object @@ -23373,20 +27453,20 @@ components: x-field-uid: 1 default: 0 format: uint32 - maximum: 65535 + maximum: 255 step: type: integer x-field-uid: 2 default: 1 format: uint32 - maximum: 65535 + maximum: 255 count: type: integer x-field-uid: 3 default: 1 format: uint32 - maximum: 65535 - Pattern.Flow.Gtpv1.SquenceNumber.MetricTag: + maximum: 255 + Pattern.Flow.Icmpv6.Echo.Code.MetricTag: description: |- Metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. type: object @@ -23405,20 +27485,20 @@ components: type: integer format: uint32 default: 0 - maximum: 15 + maximum: 7 x-field-uid: 2 length: description: |- Number of bits to track for metrics starting from configured offset of corresponding header field type: integer format: uint32 - default: 16 + default: 8 minimum: 1 - maximum: 16 + maximum: 8 x-field-uid: 3 - Pattern.Flow.Gtpv1.SquenceNumber: + Pattern.Flow.Icmpv6.Echo.Code: description: |- - Sequence number. Exists if any of the e_flag, s_flag, or pn_flag bits are on. Must be interpreted only if the s_flag bit is on. + ICMPv6 echo sub type type: object properties: choice: @@ -23444,30 +27524,30 @@ components: x-field-uid: 2 default: 0 format: uint32 - maximum: 65535 + maximum: 255 values: type: array items: type: integer format: uint32 - maximum: 65535 + maximum: 255 x-field-uid: 3 default: - 0 increment: - $ref: '#/components/schemas/Pattern.Flow.Gtpv1.SquenceNumber.Counter' + $ref: '#/components/schemas/Pattern.Flow.Icmpv6.Echo.Code.Counter' x-field-uid: 5 decrement: - $ref: '#/components/schemas/Pattern.Flow.Gtpv1.SquenceNumber.Counter' + $ref: '#/components/schemas/Pattern.Flow.Icmpv6.Echo.Code.Counter' x-field-uid: 6 metric_tags: description: |- One or more metric tags can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. type: array items: - $ref: '#/components/schemas/Pattern.Flow.Gtpv1.SquenceNumber.MetricTag' + $ref: '#/components/schemas/Pattern.Flow.Icmpv6.Echo.Code.MetricTag' x-field-uid: 7 - Pattern.Flow.Gtpv1.NPduNumber.Counter: + Pattern.Flow.Icmpv6.Echo.Identifier.Counter: description: |- integer counter pattern type: object @@ -23477,20 +27557,20 @@ components: x-field-uid: 1 default: 0 format: uint32 - maximum: 255 + maximum: 65535 step: type: integer x-field-uid: 2 default: 1 format: uint32 - maximum: 255 + maximum: 65535 count: type: integer x-field-uid: 3 default: 1 format: uint32 - maximum: 255 - Pattern.Flow.Gtpv1.NPduNumber.MetricTag: + maximum: 65535 + Pattern.Flow.Icmpv6.Echo.Identifier.MetricTag: description: |- Metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. type: object @@ -23509,20 +27589,20 @@ components: type: integer format: uint32 default: 0 - maximum: 7 + maximum: 15 x-field-uid: 2 length: description: |- Number of bits to track for metrics starting from configured offset of corresponding header field type: integer format: uint32 - default: 8 + default: 16 minimum: 1 - maximum: 8 + maximum: 16 x-field-uid: 3 - Pattern.Flow.Gtpv1.NPduNumber: + Pattern.Flow.Icmpv6.Echo.Identifier: description: |- - N-PDU number. Exists if any of the e_flag, s_flag, or pn_flag bits are on. Must be interpreted only if the pn_flag bit is on. + ICMPv6 echo identifier type: object properties: choice: @@ -23548,30 +27628,30 @@ components: x-field-uid: 2 default: 0 format: uint32 - maximum: 255 + maximum: 65535 values: type: array items: type: integer format: uint32 - maximum: 255 + maximum: 65535 x-field-uid: 3 default: - 0 increment: - $ref: '#/components/schemas/Pattern.Flow.Gtpv1.NPduNumber.Counter' + $ref: '#/components/schemas/Pattern.Flow.Icmpv6.Echo.Identifier.Counter' x-field-uid: 5 decrement: - $ref: '#/components/schemas/Pattern.Flow.Gtpv1.NPduNumber.Counter' + $ref: '#/components/schemas/Pattern.Flow.Icmpv6.Echo.Identifier.Counter' x-field-uid: 6 metric_tags: description: |- One or more metric tags can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. type: array items: - $ref: '#/components/schemas/Pattern.Flow.Gtpv1.NPduNumber.MetricTag' + $ref: '#/components/schemas/Pattern.Flow.Icmpv6.Echo.Identifier.MetricTag' x-field-uid: 7 - Pattern.Flow.Gtpv1.NextExtensionHeaderType.Counter: + Pattern.Flow.Icmpv6.Echo.SequenceNumber.Counter: description: |- integer counter pattern type: object @@ -23581,20 +27661,20 @@ components: x-field-uid: 1 default: 0 format: uint32 - maximum: 255 + maximum: 65535 step: type: integer x-field-uid: 2 default: 1 format: uint32 - maximum: 255 + maximum: 65535 count: type: integer x-field-uid: 3 default: 1 format: uint32 - maximum: 255 - Pattern.Flow.Gtpv1.NextExtensionHeaderType.MetricTag: + maximum: 65535 + Pattern.Flow.Icmpv6.Echo.SequenceNumber.MetricTag: description: |- Metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. type: object @@ -23613,20 +27693,20 @@ components: type: integer format: uint32 default: 0 - maximum: 7 + maximum: 15 x-field-uid: 2 length: description: |- Number of bits to track for metrics starting from configured offset of corresponding header field type: integer format: uint32 - default: 8 + default: 16 minimum: 1 - maximum: 8 + maximum: 16 x-field-uid: 3 - Pattern.Flow.Gtpv1.NextExtensionHeaderType: + Pattern.Flow.Icmpv6.Echo.SequenceNumber: description: |- - Next extension header. Exists if any of the e_flag, s_flag, or pn_flag bits are on. Must be interpreted only if the e_flag bit is on. + ICMPv6 echo sequence number type: object properties: choice: @@ -23652,134 +27732,110 @@ components: x-field-uid: 2 default: 0 format: uint32 - maximum: 255 + maximum: 65535 values: type: array items: type: integer format: uint32 - maximum: 255 + maximum: 65535 x-field-uid: 3 default: - 0 increment: - $ref: '#/components/schemas/Pattern.Flow.Gtpv1.NextExtensionHeaderType.Counter' + $ref: '#/components/schemas/Pattern.Flow.Icmpv6.Echo.SequenceNumber.Counter' x-field-uid: 5 decrement: - $ref: '#/components/schemas/Pattern.Flow.Gtpv1.NextExtensionHeaderType.Counter' + $ref: '#/components/schemas/Pattern.Flow.Icmpv6.Echo.SequenceNumber.Counter' x-field-uid: 6 metric_tags: description: |- One or more metric tags can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. type: array items: - $ref: '#/components/schemas/Pattern.Flow.Gtpv1.NextExtensionHeaderType.MetricTag' + $ref: '#/components/schemas/Pattern.Flow.Icmpv6.Echo.SequenceNumber.MetricTag' x-field-uid: 7 - Pattern.Flow.GtpExtension.ExtensionLength.Counter: - description: |- - integer counter pattern - type: object - properties: - start: - type: integer - x-field-uid: 1 - default: 0 - format: uint32 - maximum: 255 - step: - type: integer - x-field-uid: 2 - default: 1 - format: uint32 - maximum: 255 - count: - type: integer - x-field-uid: 3 - default: 1 - format: uint32 - maximum: 255 - Pattern.Flow.GtpExtension.ExtensionLength.MetricTag: + Pattern.Flow.Icmpv6.Echo.Checksum: description: |- - Metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. + ICMPv6 checksum type: object - required: - - name properties: - name: + choice: description: |- - Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field + The type of checksum type: string - pattern: ^[\sa-zA-Z0-9-_()><\[\]]+$ + x-enum: + generated: + x-field-uid: 1 + custom: + x-field-uid: 2 + default: generated x-field-uid: 1 - offset: + enum: + - generated + - custom + generated: description: |- - Offset in bits relative to start of corresponding header field - type: integer - format: uint32 - default: 0 - maximum: 7 + A system generated checksum value + type: string + x-enum: + good: + x-field-uid: 1 + bad: + x-field-uid: 2 + default: good x-field-uid: 2 - length: + enum: + - good + - bad + custom: description: |- - Number of bits to track for metrics starting from configured offset of corresponding header field + A custom checksum value type: integer format: uint32 - default: 8 - minimum: 1 - maximum: 8 + maximum: 65535 x-field-uid: 3 - Pattern.Flow.GtpExtension.ExtensionLength: + Pattern.Flow.Icmpv6.Common.Checksum: description: |- - This field states the length of this extension header, including the length, the contents, and the next extension header field, in 4-octet units, so the length of the extension must always be a multiple of 4. + ICMPv6 checksum type: object properties: choice: + description: |- + The type of checksum type: string x-enum: - value: + generated: + x-field-uid: 1 + custom: x-field-uid: 2 - values: - x-field-uid: 3 - increment: - x-field-uid: 4 - decrement: - x-field-uid: 5 - default: value + default: generated x-field-uid: 1 enum: - - value - - values - - increment - - decrement - value: - type: integer + - generated + - custom + generated: + description: |- + A system generated checksum value + type: string + x-enum: + good: + x-field-uid: 1 + bad: + x-field-uid: 2 + default: good x-field-uid: 2 - default: 0 + enum: + - good + - bad + custom: + description: |- + A custom checksum value + type: integer format: uint32 - maximum: 255 - values: - type: array - items: - type: integer - format: uint32 - maximum: 255 + maximum: 65535 x-field-uid: 3 - default: - - 0 - increment: - $ref: '#/components/schemas/Pattern.Flow.GtpExtension.ExtensionLength.Counter' - x-field-uid: 5 - decrement: - $ref: '#/components/schemas/Pattern.Flow.GtpExtension.ExtensionLength.Counter' - x-field-uid: 6 - metric_tags: - description: |- - One or more metric tags can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. - type: array - items: - $ref: '#/components/schemas/Pattern.Flow.GtpExtension.ExtensionLength.MetricTag' - x-field-uid: 7 - Pattern.Flow.GtpExtension.Contents.Counter: + Pattern.Flow.Ppp.Address.Counter: description: |- integer counter pattern type: object @@ -23787,22 +27843,24 @@ components: start: type: integer x-field-uid: 1 - default: 0 - format: uint64 - maximum: 281474976710655 + default: 255 + format: uint32 + maximum: 255 step: type: integer x-field-uid: 2 default: 1 - format: uint64 - maximum: 281474976710655 + format: uint32 + maximum: 255 count: type: integer x-field-uid: 3 default: 1 - format: uint64 - maximum: 281474976710655 - Pattern.Flow.GtpExtension.Contents.MetricTag: + format: uint32 + maximum: 255 + x-constants: + standard_address: 255 + Pattern.Flow.Ppp.Address.MetricTag: description: |- Metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. type: object @@ -23819,22 +27877,22 @@ components: description: |- Offset in bits relative to start of corresponding header field type: integer - format: uint64 + format: uint32 default: 0 - maximum: 47 + maximum: 7 x-field-uid: 2 length: description: |- Number of bits to track for metrics starting from configured offset of corresponding header field type: integer - format: uint64 - default: 48 + format: uint32 + default: 8 minimum: 1 - maximum: 48 + maximum: 8 x-field-uid: 3 - Pattern.Flow.GtpExtension.Contents: + Pattern.Flow.Ppp.Address: description: |- - The extension header contents + PPP address type: object properties: choice: @@ -23858,32 +27916,34 @@ components: value: type: integer x-field-uid: 2 - default: 0 - format: uint64 - maximum: 281474976710655 + default: 255 + format: uint32 + maximum: 255 values: type: array items: type: integer - format: uint64 - maximum: 281474976710655 + format: uint32 + maximum: 255 x-field-uid: 3 default: - - 0 + - 255 increment: - $ref: '#/components/schemas/Pattern.Flow.GtpExtension.Contents.Counter' + $ref: '#/components/schemas/Pattern.Flow.Ppp.Address.Counter' x-field-uid: 5 decrement: - $ref: '#/components/schemas/Pattern.Flow.GtpExtension.Contents.Counter' + $ref: '#/components/schemas/Pattern.Flow.Ppp.Address.Counter' x-field-uid: 6 metric_tags: description: |- One or more metric tags can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. type: array items: - $ref: '#/components/schemas/Pattern.Flow.GtpExtension.Contents.MetricTag' + $ref: '#/components/schemas/Pattern.Flow.Ppp.Address.MetricTag' x-field-uid: 7 - Pattern.Flow.GtpExtension.NextExtensionHeader.Counter: + x-constants: + standard_address: 255 + Pattern.Flow.Ppp.Control.Counter: description: |- integer counter pattern type: object @@ -23891,7 +27951,7 @@ components: start: type: integer x-field-uid: 1 - default: 0 + default: 3 format: uint32 maximum: 255 step: @@ -23906,7 +27966,9 @@ components: default: 1 format: uint32 maximum: 255 - Pattern.Flow.GtpExtension.NextExtensionHeader.MetricTag: + x-constants: + unnumbered_data: 3 + Pattern.Flow.Ppp.Control.MetricTag: description: |- Metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. type: object @@ -23936,9 +27998,9 @@ components: minimum: 1 maximum: 8 x-field-uid: 3 - Pattern.Flow.GtpExtension.NextExtensionHeader: + Pattern.Flow.Ppp.Control: description: |- - It states the type of the next extension, or 0 if no next extension exists. This permits chaining several next extension headers. + PPP control type: object properties: choice: @@ -23962,7 +28024,7 @@ components: value: type: integer x-field-uid: 2 - default: 0 + default: 3 format: uint32 maximum: 255 values: @@ -23973,21 +28035,23 @@ components: maximum: 255 x-field-uid: 3 default: - - 0 + - 3 increment: - $ref: '#/components/schemas/Pattern.Flow.GtpExtension.NextExtensionHeader.Counter' + $ref: '#/components/schemas/Pattern.Flow.Ppp.Control.Counter' x-field-uid: 5 decrement: - $ref: '#/components/schemas/Pattern.Flow.GtpExtension.NextExtensionHeader.Counter' + $ref: '#/components/schemas/Pattern.Flow.Ppp.Control.Counter' x-field-uid: 6 metric_tags: description: |- One or more metric tags can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. type: array items: - $ref: '#/components/schemas/Pattern.Flow.GtpExtension.NextExtensionHeader.MetricTag' + $ref: '#/components/schemas/Pattern.Flow.Ppp.Control.MetricTag' x-field-uid: 7 - Pattern.Flow.Gtpv2.Version.Counter: + x-constants: + unnumbered_data: 3 + Pattern.Flow.Ppp.ProtocolType.Counter: description: |- integer counter pattern type: object @@ -23995,22 +28059,22 @@ components: start: type: integer x-field-uid: 1 - default: 2 + default: 33 format: uint32 - maximum: 7 + maximum: 65535 step: type: integer x-field-uid: 2 default: 1 format: uint32 - maximum: 7 + maximum: 65535 count: type: integer x-field-uid: 3 default: 1 format: uint32 - maximum: 7 - Pattern.Flow.Gtpv2.Version.MetricTag: + maximum: 65535 + Pattern.Flow.Ppp.ProtocolType.MetricTag: description: |- Metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. type: object @@ -24029,20 +28093,20 @@ components: type: integer format: uint32 default: 0 - maximum: 2 + maximum: 15 x-field-uid: 2 length: description: |- Number of bits to track for metrics starting from configured offset of corresponding header field type: integer format: uint32 - default: 3 + default: 16 minimum: 1 - maximum: 3 + maximum: 16 x-field-uid: 3 - Pattern.Flow.Gtpv2.Version: + Pattern.Flow.Ppp.ProtocolType: description: |- - Version number + PPP protocol type type: object properties: choice: @@ -24052,46 +28116,59 @@ components: x-field-uid: 2 values: x-field-uid: 3 + auto: + x-field-uid: 1 increment: x-field-uid: 4 decrement: x-field-uid: 5 - default: value + default: auto x-field-uid: 1 enum: - value - values + - auto - increment - decrement value: type: integer x-field-uid: 2 - default: 2 + default: 33 format: uint32 - maximum: 7 + maximum: 65535 values: type: array items: type: integer format: uint32 - maximum: 7 + maximum: 65535 x-field-uid: 3 default: - - 2 + - 33 + auto: + description: |- + The OTG implementation can provide a system generated + value for this property. If the OTG is unable to generate a value + the default value must be used. + type: integer + x-field-uid: 4 + default: 33 + format: uint32 + maximum: 65535 increment: - $ref: '#/components/schemas/Pattern.Flow.Gtpv2.Version.Counter' - x-field-uid: 5 - decrement: - $ref: '#/components/schemas/Pattern.Flow.Gtpv2.Version.Counter' + $ref: '#/components/schemas/Pattern.Flow.Ppp.ProtocolType.Counter' x-field-uid: 6 + decrement: + $ref: '#/components/schemas/Pattern.Flow.Ppp.ProtocolType.Counter' + x-field-uid: 7 metric_tags: description: |- One or more metric tags can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. type: array items: - $ref: '#/components/schemas/Pattern.Flow.Gtpv2.Version.MetricTag' - x-field-uid: 7 - Pattern.Flow.Gtpv2.PiggybackingFlag.Counter: + $ref: '#/components/schemas/Pattern.Flow.Ppp.ProtocolType.MetricTag' + x-field-uid: 8 + Pattern.Flow.Igmpv1.Version.Counter: description: |- integer counter pattern type: object @@ -24099,22 +28176,22 @@ components: start: type: integer x-field-uid: 1 - default: 0 + default: 1 format: uint32 - maximum: 1 + maximum: 15 step: type: integer x-field-uid: 2 default: 1 format: uint32 - maximum: 1 + maximum: 15 count: type: integer x-field-uid: 3 default: 1 format: uint32 - maximum: 1 - Pattern.Flow.Gtpv2.PiggybackingFlag.MetricTag: + maximum: 15 + Pattern.Flow.Igmpv1.Version.MetricTag: description: |- Metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. type: object @@ -24133,20 +28210,20 @@ components: type: integer format: uint32 default: 0 - maximum: 0 + maximum: 3 x-field-uid: 2 length: description: |- Number of bits to track for metrics starting from configured offset of corresponding header field type: integer format: uint32 - default: 1 + default: 4 minimum: 1 - maximum: 1 + maximum: 4 x-field-uid: 3 - Pattern.Flow.Gtpv2.PiggybackingFlag: + Pattern.Flow.Igmpv1.Version: description: |- - If piggybacking_flag is set to 1 then another GTP-C message with its own header shall be present at the end of the current message + Version number type: object properties: choice: @@ -24170,32 +28247,32 @@ components: value: type: integer x-field-uid: 2 - default: 0 + default: 1 format: uint32 - maximum: 1 + maximum: 15 values: type: array items: type: integer format: uint32 - maximum: 1 + maximum: 15 x-field-uid: 3 default: - - 0 + - 1 increment: - $ref: '#/components/schemas/Pattern.Flow.Gtpv2.PiggybackingFlag.Counter' + $ref: '#/components/schemas/Pattern.Flow.Igmpv1.Version.Counter' x-field-uid: 5 decrement: - $ref: '#/components/schemas/Pattern.Flow.Gtpv2.PiggybackingFlag.Counter' + $ref: '#/components/schemas/Pattern.Flow.Igmpv1.Version.Counter' x-field-uid: 6 metric_tags: description: |- One or more metric tags can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. type: array items: - $ref: '#/components/schemas/Pattern.Flow.Gtpv2.PiggybackingFlag.MetricTag' + $ref: '#/components/schemas/Pattern.Flow.Igmpv1.Version.MetricTag' x-field-uid: 7 - Pattern.Flow.Gtpv2.TeidFlag.Counter: + Pattern.Flow.Igmpv1.Type.Counter: description: |- integer counter pattern type: object @@ -24203,22 +28280,25 @@ components: start: type: integer x-field-uid: 1 - default: 0 + default: 1 format: uint32 - maximum: 1 + maximum: 15 step: type: integer x-field-uid: 2 default: 1 format: uint32 - maximum: 1 + maximum: 15 count: type: integer x-field-uid: 3 default: 1 format: uint32 - maximum: 1 - Pattern.Flow.Gtpv2.TeidFlag.MetricTag: + maximum: 15 + x-constants: + query: 1 + report: 2 + Pattern.Flow.Igmpv1.Type.MetricTag: description: |- Metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. type: object @@ -24237,20 +28317,20 @@ components: type: integer format: uint32 default: 0 - maximum: 0 + maximum: 3 x-field-uid: 2 length: description: |- Number of bits to track for metrics starting from configured offset of corresponding header field type: integer format: uint32 - default: 1 + default: 4 minimum: 1 - maximum: 1 + maximum: 4 x-field-uid: 3 - Pattern.Flow.Gtpv2.TeidFlag: + Pattern.Flow.Igmpv1.Type: description: |- - If teid_flag is set to 1 then the TEID field will be present between the message length and the sequence number. All messages except Echo and Echo reply require TEID to be present + Type of message type: object properties: choice: @@ -24274,32 +28354,35 @@ components: value: type: integer x-field-uid: 2 - default: 0 + default: 1 format: uint32 - maximum: 1 + maximum: 15 values: type: array items: type: integer format: uint32 - maximum: 1 + maximum: 15 x-field-uid: 3 default: - - 0 + - 1 increment: - $ref: '#/components/schemas/Pattern.Flow.Gtpv2.TeidFlag.Counter' + $ref: '#/components/schemas/Pattern.Flow.Igmpv1.Type.Counter' x-field-uid: 5 decrement: - $ref: '#/components/schemas/Pattern.Flow.Gtpv2.TeidFlag.Counter' + $ref: '#/components/schemas/Pattern.Flow.Igmpv1.Type.Counter' x-field-uid: 6 metric_tags: description: |- One or more metric tags can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. type: array items: - $ref: '#/components/schemas/Pattern.Flow.Gtpv2.TeidFlag.MetricTag' + $ref: '#/components/schemas/Pattern.Flow.Igmpv1.Type.MetricTag' x-field-uid: 7 - Pattern.Flow.Gtpv2.Spare1.Counter: + x-constants: + query: 1 + report: 2 + Pattern.Flow.Igmpv1.Unused.Counter: description: |- integer counter pattern type: object @@ -24309,20 +28392,20 @@ components: x-field-uid: 1 default: 0 format: uint32 - maximum: 7 + maximum: 255 step: type: integer x-field-uid: 2 default: 1 format: uint32 - maximum: 7 + maximum: 255 count: type: integer x-field-uid: 3 default: 1 format: uint32 - maximum: 7 - Pattern.Flow.Gtpv2.Spare1.MetricTag: + maximum: 255 + Pattern.Flow.Igmpv1.Unused.MetricTag: description: |- Metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. type: object @@ -24341,20 +28424,20 @@ components: type: integer format: uint32 default: 0 - maximum: 2 + maximum: 7 x-field-uid: 2 length: description: |- Number of bits to track for metrics starting from configured offset of corresponding header field type: integer format: uint32 - default: 3 + default: 8 minimum: 1 - maximum: 3 + maximum: 8 x-field-uid: 3 - Pattern.Flow.Gtpv2.Spare1: + Pattern.Flow.Igmpv1.Unused: description: |- - A 3-bit reserved field (must be 0). + Unused type: object properties: choice: @@ -24380,53 +28463,90 @@ components: x-field-uid: 2 default: 0 format: uint32 - maximum: 7 + maximum: 255 values: type: array items: type: integer format: uint32 - maximum: 7 + maximum: 255 x-field-uid: 3 default: - 0 increment: - $ref: '#/components/schemas/Pattern.Flow.Gtpv2.Spare1.Counter' + $ref: '#/components/schemas/Pattern.Flow.Igmpv1.Unused.Counter' x-field-uid: 5 decrement: - $ref: '#/components/schemas/Pattern.Flow.Gtpv2.Spare1.Counter' + $ref: '#/components/schemas/Pattern.Flow.Igmpv1.Unused.Counter' x-field-uid: 6 metric_tags: description: |- One or more metric tags can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. type: array items: - $ref: '#/components/schemas/Pattern.Flow.Gtpv2.Spare1.MetricTag' + $ref: '#/components/schemas/Pattern.Flow.Igmpv1.Unused.MetricTag' x-field-uid: 7 - Pattern.Flow.Gtpv2.MessageType.Counter: + Pattern.Flow.Igmpv1.Checksum: description: |- - integer counter pattern + Checksum type: object properties: - start: - type: integer + choice: + description: |- + The type of checksum + type: string + x-enum: + generated: + x-field-uid: 1 + custom: + x-field-uid: 2 + default: generated x-field-uid: 1 - default: 0 + enum: + - generated + - custom + generated: + description: |- + A system generated checksum value + type: string + x-enum: + good: + x-field-uid: 1 + bad: + x-field-uid: 2 + default: good + x-field-uid: 2 + enum: + - good + - bad + custom: + description: |- + A custom checksum value + type: integer format: uint32 - maximum: 255 + maximum: 65535 + x-field-uid: 3 + Pattern.Flow.Igmpv1.GroupAddress.Counter: + description: |- + ipv4 counter pattern + type: object + properties: + start: + type: string + x-field-uid: 1 + default: 0.0.0.0 + format: ipv4 step: - type: integer + type: string x-field-uid: 2 - default: 1 - format: uint32 - maximum: 255 + default: 0.0.0.1 + format: ipv4 count: type: integer x-field-uid: 3 default: 1 format: uint32 - maximum: 255 - Pattern.Flow.Gtpv2.MessageType.MetricTag: + Pattern.Flow.Igmpv1.GroupAddress.MetricTag: description: |- Metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. type: object @@ -24445,20 +28565,20 @@ components: type: integer format: uint32 default: 0 - maximum: 7 + maximum: 31 x-field-uid: 2 length: description: |- Number of bits to track for metrics starting from configured offset of corresponding header field type: integer format: uint32 - default: 8 + default: 32 minimum: 1 - maximum: 8 + maximum: 32 x-field-uid: 3 - Pattern.Flow.Gtpv2.MessageType: + Pattern.Flow.Igmpv1.GroupAddress: description: |- - An 8-bit field that indicates the type of GTP message. Different types of messages are defined in 3GPP TS 29.060 section 7.1 + Group address type: object properties: choice: @@ -24480,34 +28600,32 @@ components: - increment - decrement value: - type: integer + type: string x-field-uid: 2 - default: 0 - format: uint32 - maximum: 255 + default: 0.0.0.0 + format: ipv4 values: type: array items: - type: integer - format: uint32 - maximum: 255 + type: string + format: ipv4 x-field-uid: 3 default: - - 0 + - 0.0.0.0 increment: - $ref: '#/components/schemas/Pattern.Flow.Gtpv2.MessageType.Counter' + $ref: '#/components/schemas/Pattern.Flow.Igmpv1.GroupAddress.Counter' x-field-uid: 5 decrement: - $ref: '#/components/schemas/Pattern.Flow.Gtpv2.MessageType.Counter' + $ref: '#/components/schemas/Pattern.Flow.Igmpv1.GroupAddress.Counter' x-field-uid: 6 metric_tags: description: |- One or more metric tags can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. type: array items: - $ref: '#/components/schemas/Pattern.Flow.Gtpv2.MessageType.MetricTag' + $ref: '#/components/schemas/Pattern.Flow.Igmpv1.GroupAddress.MetricTag' x-field-uid: 7 - Pattern.Flow.Gtpv2.MessageLength.Counter: + Pattern.Flow.Mpls.Label.Counter: description: |- integer counter pattern type: object @@ -24515,22 +28633,22 @@ components: start: type: integer x-field-uid: 1 - default: 0 + default: 16 format: uint32 - maximum: 65535 + maximum: 1048575 step: type: integer x-field-uid: 2 default: 1 format: uint32 - maximum: 65535 + maximum: 1048575 count: type: integer x-field-uid: 3 default: 1 format: uint32 - maximum: 65535 - Pattern.Flow.Gtpv2.MessageLength.MetricTag: + maximum: 1048575 + Pattern.Flow.Mpls.Label.MetricTag: description: |- Metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. type: object @@ -24549,20 +28667,20 @@ components: type: integer format: uint32 default: 0 - maximum: 15 + maximum: 19 x-field-uid: 2 length: description: |- Number of bits to track for metrics starting from configured offset of corresponding header field type: integer format: uint32 - default: 16 + default: 20 minimum: 1 - maximum: 16 + maximum: 20 x-field-uid: 3 - Pattern.Flow.Gtpv2.MessageLength: + Pattern.Flow.Mpls.Label: description: |- - A 16-bit field that indicates the length of the payload in bytes, excluding the mandatory GTP-c header (first 4 bytes). Includes the TEID and sequence_number if they are present. + Label of routers type: object properties: choice: @@ -24572,46 +28690,59 @@ components: x-field-uid: 2 values: x-field-uid: 3 + auto: + x-field-uid: 1 increment: x-field-uid: 4 decrement: x-field-uid: 5 - default: value + default: auto x-field-uid: 1 enum: - value - values + - auto - increment - decrement value: type: integer x-field-uid: 2 - default: 0 + default: 16 format: uint32 - maximum: 65535 + maximum: 1048575 values: type: array items: type: integer format: uint32 - maximum: 65535 + maximum: 1048575 x-field-uid: 3 default: - - 0 + - 16 + auto: + description: |- + The OTG implementation can provide a system generated + value for this property. If the OTG is unable to generate a value + the default value must be used. + type: integer + x-field-uid: 4 + default: 16 + format: uint32 + maximum: 1048575 increment: - $ref: '#/components/schemas/Pattern.Flow.Gtpv2.MessageLength.Counter' - x-field-uid: 5 - decrement: - $ref: '#/components/schemas/Pattern.Flow.Gtpv2.MessageLength.Counter' + $ref: '#/components/schemas/Pattern.Flow.Mpls.Label.Counter' x-field-uid: 6 + decrement: + $ref: '#/components/schemas/Pattern.Flow.Mpls.Label.Counter' + x-field-uid: 7 metric_tags: description: |- One or more metric tags can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. type: array items: - $ref: '#/components/schemas/Pattern.Flow.Gtpv2.MessageLength.MetricTag' - x-field-uid: 7 - Pattern.Flow.Gtpv2.Teid.Counter: + $ref: '#/components/schemas/Pattern.Flow.Mpls.Label.MetricTag' + x-field-uid: 8 + Pattern.Flow.Mpls.TrafficClass.Counter: description: |- integer counter pattern type: object @@ -24621,17 +28752,20 @@ components: x-field-uid: 1 default: 0 format: uint32 + maximum: 7 step: type: integer x-field-uid: 2 default: 1 format: uint32 + maximum: 7 count: type: integer x-field-uid: 3 default: 1 format: uint32 - Pattern.Flow.Gtpv2.Teid.MetricTag: + maximum: 7 + Pattern.Flow.Mpls.TrafficClass.MetricTag: description: |- Metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. type: object @@ -24650,20 +28784,20 @@ components: type: integer format: uint32 default: 0 - maximum: 31 + maximum: 2 x-field-uid: 2 length: description: |- Number of bits to track for metrics starting from configured offset of corresponding header field type: integer format: uint32 - default: 32 + default: 3 minimum: 1 - maximum: 32 + maximum: 3 x-field-uid: 3 - Pattern.Flow.Gtpv2.Teid: + Pattern.Flow.Mpls.TrafficClass: description: |- - Tunnel endpoint identifier. A 32-bit (4-octet) field used to multiplex different connections in the same GTP tunnel. Is present only if the teid_flag is set. + Traffic class type: object properties: choice: @@ -24689,28 +28823,30 @@ components: x-field-uid: 2 default: 0 format: uint32 + maximum: 7 values: type: array items: type: integer format: uint32 + maximum: 7 x-field-uid: 3 default: - 0 increment: - $ref: '#/components/schemas/Pattern.Flow.Gtpv2.Teid.Counter' + $ref: '#/components/schemas/Pattern.Flow.Mpls.TrafficClass.Counter' x-field-uid: 5 decrement: - $ref: '#/components/schemas/Pattern.Flow.Gtpv2.Teid.Counter' + $ref: '#/components/schemas/Pattern.Flow.Mpls.TrafficClass.Counter' x-field-uid: 6 metric_tags: description: |- One or more metric tags can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. type: array items: - $ref: '#/components/schemas/Pattern.Flow.Gtpv2.Teid.MetricTag' + $ref: '#/components/schemas/Pattern.Flow.Mpls.TrafficClass.MetricTag' x-field-uid: 7 - Pattern.Flow.Gtpv2.SequenceNumber.Counter: + Pattern.Flow.Mpls.BottomOfStack.Counter: description: |- integer counter pattern type: object @@ -24718,22 +28854,22 @@ components: start: type: integer x-field-uid: 1 - default: 0 + default: 1 format: uint32 - maximum: 16777215 + maximum: 1 step: type: integer x-field-uid: 2 default: 1 format: uint32 - maximum: 16777215 + maximum: 1 count: type: integer x-field-uid: 3 default: 1 format: uint32 - maximum: 16777215 - Pattern.Flow.Gtpv2.SequenceNumber.MetricTag: + maximum: 1 + Pattern.Flow.Mpls.BottomOfStack.MetricTag: description: |- Metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. type: object @@ -24752,20 +28888,20 @@ components: type: integer format: uint32 default: 0 - maximum: 23 + maximum: 0 x-field-uid: 2 length: description: |- Number of bits to track for metrics starting from configured offset of corresponding header field type: integer format: uint32 - default: 24 + default: 1 minimum: 1 - maximum: 24 + maximum: 1 x-field-uid: 3 - Pattern.Flow.Gtpv2.SequenceNumber: + Pattern.Flow.Mpls.BottomOfStack: description: |- - The sequence number + Bottom of stack type: object properties: choice: @@ -24775,46 +28911,59 @@ components: x-field-uid: 2 values: x-field-uid: 3 + auto: + x-field-uid: 1 increment: x-field-uid: 4 decrement: x-field-uid: 5 - default: value + default: auto x-field-uid: 1 enum: - value - values + - auto - increment - decrement value: type: integer x-field-uid: 2 - default: 0 + default: 1 format: uint32 - maximum: 16777215 + maximum: 1 values: type: array items: type: integer format: uint32 - maximum: 16777215 + maximum: 1 x-field-uid: 3 default: - - 0 + - 1 + auto: + description: |- + The OTG implementation can provide a system generated + value for this property. If the OTG is unable to generate a value + the default value must be used. + type: integer + x-field-uid: 4 + default: 1 + format: uint32 + maximum: 1 increment: - $ref: '#/components/schemas/Pattern.Flow.Gtpv2.SequenceNumber.Counter' - x-field-uid: 5 - decrement: - $ref: '#/components/schemas/Pattern.Flow.Gtpv2.SequenceNumber.Counter' + $ref: '#/components/schemas/Pattern.Flow.Mpls.BottomOfStack.Counter' x-field-uid: 6 + decrement: + $ref: '#/components/schemas/Pattern.Flow.Mpls.BottomOfStack.Counter' + x-field-uid: 7 metric_tags: description: |- One or more metric tags can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. type: array items: - $ref: '#/components/schemas/Pattern.Flow.Gtpv2.SequenceNumber.MetricTag' - x-field-uid: 7 - Pattern.Flow.Gtpv2.Spare2.Counter: + $ref: '#/components/schemas/Pattern.Flow.Mpls.BottomOfStack.MetricTag' + x-field-uid: 8 + Pattern.Flow.Mpls.TimeToLive.Counter: description: |- integer counter pattern type: object @@ -24822,7 +28971,7 @@ components: start: type: integer x-field-uid: 1 - default: 0 + default: 64 format: uint32 maximum: 255 step: @@ -24837,7 +28986,7 @@ components: default: 1 format: uint32 maximum: 255 - Pattern.Flow.Gtpv2.Spare2.MetricTag: + Pattern.Flow.Mpls.TimeToLive.MetricTag: description: |- Metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. type: object @@ -24867,9 +29016,9 @@ components: minimum: 1 maximum: 8 x-field-uid: 3 - Pattern.Flow.Gtpv2.Spare2: + Pattern.Flow.Mpls.TimeToLive: description: |- - Reserved field + Time to live type: object properties: choice: @@ -24893,7 +29042,7 @@ components: value: type: integer x-field-uid: 2 - default: 0 + default: 64 format: uint32 maximum: 255 values: @@ -24904,21 +29053,21 @@ components: maximum: 255 x-field-uid: 3 default: - - 0 + - 64 increment: - $ref: '#/components/schemas/Pattern.Flow.Gtpv2.Spare2.Counter' + $ref: '#/components/schemas/Pattern.Flow.Mpls.TimeToLive.Counter' x-field-uid: 5 decrement: - $ref: '#/components/schemas/Pattern.Flow.Gtpv2.Spare2.Counter' + $ref: '#/components/schemas/Pattern.Flow.Mpls.TimeToLive.Counter' x-field-uid: 6 metric_tags: description: |- One or more metric tags can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. type: array items: - $ref: '#/components/schemas/Pattern.Flow.Gtpv2.Spare2.MetricTag' + $ref: '#/components/schemas/Pattern.Flow.Mpls.TimeToLive.MetricTag' x-field-uid: 7 - Pattern.Flow.Arp.HardwareType.Counter: + Pattern.Flow.Rsvp.Version.Counter: description: |- integer counter pattern type: object @@ -24928,54 +29077,21 @@ components: x-field-uid: 1 default: 1 format: uint32 - maximum: 65535 + maximum: 15 step: type: integer x-field-uid: 2 default: 1 format: uint32 - maximum: 65535 + maximum: 15 count: type: integer x-field-uid: 3 default: 1 format: uint32 - maximum: 65535 - x-constants: - ethernet: 1 - Pattern.Flow.Arp.HardwareType.MetricTag: - description: |- - Metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. - type: object - required: - - name - properties: - name: - description: |- - Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field - type: string - pattern: ^[\sa-zA-Z0-9-_()><\[\]]+$ - x-field-uid: 1 - offset: - description: |- - Offset in bits relative to start of corresponding header field - type: integer - format: uint32 - default: 0 maximum: 15 - x-field-uid: 2 - length: - description: |- - Number of bits to track for metrics starting from configured offset of corresponding header field - type: integer - format: uint32 - default: 16 - minimum: 1 - maximum: 16 - x-field-uid: 3 - Pattern.Flow.Arp.HardwareType: - description: |- - Network link protocol type + Pattern.Flow.Rsvp.Version: + description: "Protocol Version number. " type: object properties: choice: @@ -25001,32 +29117,63 @@ components: x-field-uid: 2 default: 1 format: uint32 - maximum: 65535 + maximum: 15 values: type: array items: type: integer format: uint32 - maximum: 65535 + maximum: 15 x-field-uid: 3 default: - 1 increment: - $ref: '#/components/schemas/Pattern.Flow.Arp.HardwareType.Counter' + $ref: '#/components/schemas/Pattern.Flow.Rsvp.Version.Counter' x-field-uid: 5 decrement: - $ref: '#/components/schemas/Pattern.Flow.Arp.HardwareType.Counter' + $ref: '#/components/schemas/Pattern.Flow.Rsvp.Version.Counter' x-field-uid: 6 - metric_tags: + Pattern.Flow.Rsvp.RsvpChecksum: + description: |- + The one's complement of the one's complement sum of the message, with the checksum field replaced by zero for the purpose of computing the checksum. An all-zero value means that no checksum was transmitted. + type: object + properties: + choice: description: |- - One or more metric tags can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. - type: array - items: - $ref: '#/components/schemas/Pattern.Flow.Arp.HardwareType.MetricTag' - x-field-uid: 7 - x-constants: - ethernet: 1 - Pattern.Flow.Arp.ProtocolType.Counter: + The type of checksum + type: string + x-enum: + generated: + x-field-uid: 1 + custom: + x-field-uid: 2 + default: generated + x-field-uid: 1 + enum: + - generated + - custom + generated: + description: |- + A system generated checksum value + type: string + x-enum: + good: + x-field-uid: 1 + bad: + x-field-uid: 2 + default: good + x-field-uid: 2 + enum: + - good + - bad + custom: + description: |- + A custom checksum value + type: integer + format: uint32 + maximum: 65535 + x-field-uid: 3 + Pattern.Flow.Rsvp.TimeToLive.Counter: description: |- integer counter pattern type: object @@ -25034,57 +29181,24 @@ components: start: type: integer x-field-uid: 1 - default: 2048 + default: 0 format: uint32 - maximum: 65535 + maximum: 255 step: type: integer x-field-uid: 2 default: 1 format: uint32 - maximum: 65535 + maximum: 255 count: type: integer x-field-uid: 3 default: 1 format: uint32 - maximum: 65535 - x-constants: - ipv4: 2048 - ipv6: 34525 - Pattern.Flow.Arp.ProtocolType.MetricTag: - description: |- - Metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. - type: object - required: - - name - properties: - name: - description: |- - Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field - type: string - pattern: ^[\sa-zA-Z0-9-_()><\[\]]+$ - x-field-uid: 1 - offset: - description: |- - Offset in bits relative to start of corresponding header field - type: integer - format: uint32 - default: 0 - maximum: 15 - x-field-uid: 2 - length: - description: |- - Number of bits to track for metrics starting from configured offset of corresponding header field - type: integer - format: uint32 - default: 16 - minimum: 1 - maximum: 16 - x-field-uid: 3 - Pattern.Flow.Arp.ProtocolType: + maximum: 255 + Pattern.Flow.Rsvp.TimeToLive: description: |- - The internetwork protocol for which the ARP request is intended + The IP time-to-live(TTL) value with which the message was sent. type: object properties: choice: @@ -25108,35 +29222,25 @@ components: value: type: integer x-field-uid: 2 - default: 2048 + default: 0 format: uint32 - maximum: 65535 + maximum: 255 values: type: array items: type: integer format: uint32 - maximum: 65535 + maximum: 255 x-field-uid: 3 default: - - 2048 + - 0 increment: - $ref: '#/components/schemas/Pattern.Flow.Arp.ProtocolType.Counter' + $ref: '#/components/schemas/Pattern.Flow.Rsvp.TimeToLive.Counter' x-field-uid: 5 decrement: - $ref: '#/components/schemas/Pattern.Flow.Arp.ProtocolType.Counter' + $ref: '#/components/schemas/Pattern.Flow.Rsvp.TimeToLive.Counter' x-field-uid: 6 - metric_tags: - description: |- - One or more metric tags can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. - type: array - items: - $ref: '#/components/schemas/Pattern.Flow.Arp.ProtocolType.MetricTag' - x-field-uid: 7 - x-constants: - ipv4: 2048 - ipv6: 34525 - Pattern.Flow.Arp.HardwareLength.Counter: + Pattern.Flow.Rsvp.Reserved.Counter: description: |- integer counter pattern type: object @@ -25144,7 +29248,7 @@ components: start: type: integer x-field-uid: 1 - default: 6 + default: 0 format: uint32 maximum: 255 step: @@ -25158,40 +29262,9 @@ components: x-field-uid: 3 default: 1 format: uint32 - maximum: 255 - Pattern.Flow.Arp.HardwareLength.MetricTag: - description: |- - Metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. - type: object - required: - - name - properties: - name: - description: |- - Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field - type: string - pattern: ^[\sa-zA-Z0-9-_()><\[\]]+$ - x-field-uid: 1 - offset: - description: |- - Offset in bits relative to start of corresponding header field - type: integer - format: uint32 - default: 0 - maximum: 7 - x-field-uid: 2 - length: - description: |- - Number of bits to track for metrics starting from configured offset of corresponding header field - type: integer - format: uint32 - default: 8 - minimum: 1 - maximum: 8 - x-field-uid: 3 - Pattern.Flow.Arp.HardwareLength: - description: |- - Length (in octets) of a hardware address + maximum: 255 + Pattern.Flow.Rsvp.Reserved: + description: "Reserved " type: object properties: choice: @@ -25215,7 +29288,7 @@ components: value: type: integer x-field-uid: 2 - default: 6 + default: 0 format: uint32 maximum: 255 values: @@ -25226,76 +29299,36 @@ components: maximum: 255 x-field-uid: 3 default: - - 6 + - 0 increment: - $ref: '#/components/schemas/Pattern.Flow.Arp.HardwareLength.Counter' + $ref: '#/components/schemas/Pattern.Flow.Rsvp.Reserved.Counter' x-field-uid: 5 decrement: - $ref: '#/components/schemas/Pattern.Flow.Arp.HardwareLength.Counter' + $ref: '#/components/schemas/Pattern.Flow.Rsvp.Reserved.Counter' x-field-uid: 6 - metric_tags: - description: |- - One or more metric tags can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. - type: array - items: - $ref: '#/components/schemas/Pattern.Flow.Arp.HardwareLength.MetricTag' - x-field-uid: 7 - Pattern.Flow.Arp.ProtocolLength.Counter: + Pattern.Flow.RSVP.PathSessionLspTunnelIpv4.Ipv4TunnelEndPointAddress.Counter: description: |- - integer counter pattern + ipv4 counter pattern type: object properties: start: - type: integer + type: string x-field-uid: 1 - default: 4 - format: uint32 - maximum: 255 + default: 0.0.0.0 + format: ipv4 step: - type: integer + type: string x-field-uid: 2 - default: 1 - format: uint32 - maximum: 255 + default: 0.0.0.1 + format: ipv4 count: type: integer x-field-uid: 3 default: 1 format: uint32 - maximum: 255 - Pattern.Flow.Arp.ProtocolLength.MetricTag: - description: |- - Metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. - type: object - required: - - name - properties: - name: - description: |- - Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field - type: string - pattern: ^[\sa-zA-Z0-9-_()><\[\]]+$ - x-field-uid: 1 - offset: - description: |- - Offset in bits relative to start of corresponding header field - type: integer - format: uint32 - default: 0 - maximum: 7 - x-field-uid: 2 - length: - description: |- - Number of bits to track for metrics starting from configured offset of corresponding header field - type: integer - format: uint32 - default: 8 - minimum: 1 - maximum: 8 - x-field-uid: 3 - Pattern.Flow.Arp.ProtocolLength: + Pattern.Flow.RSVP.PathSessionLspTunnelIpv4.Ipv4TunnelEndPointAddress: description: |- - Length (in octets) of internetwork addresses + IPv4 address of the egress node for the tunnel. type: object properties: choice: @@ -25317,34 +29350,25 @@ components: - increment - decrement value: - type: integer + type: string x-field-uid: 2 - default: 4 - format: uint32 - maximum: 255 + default: 0.0.0.0 + format: ipv4 values: type: array items: - type: integer - format: uint32 - maximum: 255 + type: string + format: ipv4 x-field-uid: 3 default: - - 4 + - 0.0.0.0 increment: - $ref: '#/components/schemas/Pattern.Flow.Arp.ProtocolLength.Counter' + $ref: '#/components/schemas/Pattern.Flow.RSVP.PathSessionLspTunnelIpv4.Ipv4TunnelEndPointAddress.Counter' x-field-uid: 5 decrement: - $ref: '#/components/schemas/Pattern.Flow.Arp.ProtocolLength.Counter' + $ref: '#/components/schemas/Pattern.Flow.RSVP.PathSessionLspTunnelIpv4.Ipv4TunnelEndPointAddress.Counter' x-field-uid: 6 - metric_tags: - description: |- - One or more metric tags can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. - type: array - items: - $ref: '#/components/schemas/Pattern.Flow.Arp.ProtocolLength.MetricTag' - x-field-uid: 7 - Pattern.Flow.Arp.Operation.Counter: + Pattern.Flow.RSVP.PathSessionLspTunnelIpv4.Reserved.Counter: description: |- integer counter pattern type: object @@ -25352,7 +29376,7 @@ components: start: type: integer x-field-uid: 1 - default: 1 + default: 0 format: uint32 maximum: 65535 step: @@ -25367,42 +29391,9 @@ components: default: 1 format: uint32 maximum: 65535 - x-constants: - request: 1 - reply: 2 - Pattern.Flow.Arp.Operation.MetricTag: - description: |- - Metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. - type: object - required: - - name - properties: - name: - description: |- - Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field - type: string - pattern: ^[\sa-zA-Z0-9-_()><\[\]]+$ - x-field-uid: 1 - offset: - description: |- - Offset in bits relative to start of corresponding header field - type: integer - format: uint32 - default: 0 - maximum: 15 - x-field-uid: 2 - length: - description: |- - Number of bits to track for metrics starting from configured offset of corresponding header field - type: integer - format: uint32 - default: 16 - minimum: 1 - maximum: 16 - x-field-uid: 3 - Pattern.Flow.Arp.Operation: + Pattern.Flow.RSVP.PathSessionLspTunnelIpv4.Reserved: description: |- - The operation that the sender is performing + Reserved field, MUST be zero. type: object properties: choice: @@ -25426,7 +29417,7 @@ components: value: type: integer x-field-uid: 2 - default: 1 + default: 0 format: uint32 maximum: 65535 values: @@ -25437,76 +29428,39 @@ components: maximum: 65535 x-field-uid: 3 default: - - 1 + - 0 increment: - $ref: '#/components/schemas/Pattern.Flow.Arp.Operation.Counter' + $ref: '#/components/schemas/Pattern.Flow.RSVP.PathSessionLspTunnelIpv4.Reserved.Counter' x-field-uid: 5 decrement: - $ref: '#/components/schemas/Pattern.Flow.Arp.Operation.Counter' + $ref: '#/components/schemas/Pattern.Flow.RSVP.PathSessionLspTunnelIpv4.Reserved.Counter' x-field-uid: 6 - metric_tags: - description: |- - One or more metric tags can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. - type: array - items: - $ref: '#/components/schemas/Pattern.Flow.Arp.Operation.MetricTag' - x-field-uid: 7 - x-constants: - request: 1 - reply: 2 - Pattern.Flow.Arp.SenderHardwareAddr.Counter: + Pattern.Flow.RSVP.PathSessionLspTunnelIpv4.TunnelId.Counter: description: |- - mac counter pattern + integer counter pattern type: object properties: start: - type: string + type: integer x-field-uid: 1 - default: 00:00:00:00:00:00 - format: mac + default: 0 + format: uint32 + maximum: 65535 step: - type: string + type: integer x-field-uid: 2 - default: 00:00:00:00:00:01 - format: mac + default: 1 + format: uint32 + maximum: 65535 count: type: integer x-field-uid: 3 default: 1 format: uint32 - Pattern.Flow.Arp.SenderHardwareAddr.MetricTag: - description: |- - Metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. - type: object - required: - - name - properties: - name: - description: |- - Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field - type: string - pattern: ^[\sa-zA-Z0-9-_()><\[\]]+$ - x-field-uid: 1 - offset: - description: |- - Offset in bits relative to start of corresponding header field - type: integer - format: uint32 - default: 0 - maximum: 47 - x-field-uid: 2 - length: - description: |- - Number of bits to track for metrics starting from configured offset of corresponding header field - type: integer - format: uint32 - default: 48 - minimum: 1 - maximum: 48 - x-field-uid: 3 - Pattern.Flow.Arp.SenderHardwareAddr: + maximum: 65535 + Pattern.Flow.RSVP.PathSessionLspTunnelIpv4.TunnelId: description: |- - Media address of the sender + A 16-bit identifier used in the SESSION that remains constant over the life of the tunnel. type: object properties: choice: @@ -25528,84 +29482,49 @@ components: - increment - decrement value: - type: string + type: integer x-field-uid: 2 - default: 00:00:00:00:00:00 - format: mac + default: 0 + format: uint32 + maximum: 65535 values: type: array items: - type: string - format: mac + type: integer + format: uint32 + maximum: 65535 x-field-uid: 3 default: - - 00:00:00:00:00:00 + - 0 increment: - $ref: '#/components/schemas/Pattern.Flow.Arp.SenderHardwareAddr.Counter' + $ref: '#/components/schemas/Pattern.Flow.RSVP.PathSessionLspTunnelIpv4.TunnelId.Counter' x-field-uid: 5 decrement: - $ref: '#/components/schemas/Pattern.Flow.Arp.SenderHardwareAddr.Counter' + $ref: '#/components/schemas/Pattern.Flow.RSVP.PathSessionLspTunnelIpv4.TunnelId.Counter' x-field-uid: 6 - metric_tags: - description: |- - One or more metric tags can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. - type: array - items: - $ref: '#/components/schemas/Pattern.Flow.Arp.SenderHardwareAddr.MetricTag' - x-field-uid: 7 - Pattern.Flow.Arp.SenderProtocolAddr.Counter: + Pattern.Flow.RSVP.PathSessionLspTunnelIpv4.ExtendedTunnelId.Counter: description: |- - ipv4 counter pattern + integer counter pattern type: object properties: start: - type: string - x-field-uid: 1 - default: 0.0.0.0 - format: ipv4 - step: - type: string - x-field-uid: 2 - default: 0.0.0.1 - format: ipv4 - count: type: integer - x-field-uid: 3 - default: 1 - format: uint32 - Pattern.Flow.Arp.SenderProtocolAddr.MetricTag: - description: |- - Metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. - type: object - required: - - name - properties: - name: - description: |- - Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field - type: string - pattern: ^[\sa-zA-Z0-9-_()><\[\]]+$ x-field-uid: 1 - offset: - description: |- - Offset in bits relative to start of corresponding header field - type: integer - format: uint32 default: 0 - maximum: 31 - x-field-uid: 2 - length: - description: |- - Number of bits to track for metrics starting from configured offset of corresponding header field + format: uint32 + step: type: integer + x-field-uid: 2 + default: 1 format: uint32 - default: 32 - minimum: 1 - maximum: 32 + count: + type: integer x-field-uid: 3 - Pattern.Flow.Arp.SenderProtocolAddr: + default: 1 + format: uint32 + Pattern.Flow.RSVP.PathSessionLspTunnelIpv4.ExtendedTunnelId: description: |- - Internetwork address of the sender + A 32-bit identifier used in the SESSION that remains constant over the life of the tunnel. Normally set to all zeros. Ingress nodes that wish to narrow the scope of a SESSION to the ingress-egress pair may place their IPv4 address here as a globally unique identifier. type: object properties: choice: @@ -25627,84 +29546,47 @@ components: - increment - decrement value: - type: string + type: integer x-field-uid: 2 - default: 0.0.0.0 - format: ipv4 + default: 0 + format: uint32 values: type: array items: - type: string - format: ipv4 + type: integer + format: uint32 x-field-uid: 3 default: - - 0.0.0.0 + - 0 increment: - $ref: '#/components/schemas/Pattern.Flow.Arp.SenderProtocolAddr.Counter' + $ref: '#/components/schemas/Pattern.Flow.RSVP.PathSessionLspTunnelIpv4.ExtendedTunnelId.Counter' x-field-uid: 5 decrement: - $ref: '#/components/schemas/Pattern.Flow.Arp.SenderProtocolAddr.Counter' + $ref: '#/components/schemas/Pattern.Flow.RSVP.PathSessionLspTunnelIpv4.ExtendedTunnelId.Counter' x-field-uid: 6 - metric_tags: - description: |- - One or more metric tags can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. - type: array - items: - $ref: '#/components/schemas/Pattern.Flow.Arp.SenderProtocolAddr.MetricTag' - x-field-uid: 7 - Pattern.Flow.Arp.TargetHardwareAddr.Counter: + Pattern.Flow.RSVP.PathRsvpHopIpv4.Ipv4NextPreviousHopAddress.Counter: description: |- - mac counter pattern + ipv4 counter pattern type: object properties: start: type: string x-field-uid: 1 - default: 00:00:00:00:00:00 - format: mac + default: 0.0.0.0 + format: ipv4 step: type: string x-field-uid: 2 - default: 00:00:00:00:00:01 - format: mac + default: 0.0.0.1 + format: ipv4 count: type: integer x-field-uid: 3 default: 1 format: uint32 - Pattern.Flow.Arp.TargetHardwareAddr.MetricTag: - description: |- - Metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. - type: object - required: - - name - properties: - name: - description: |- - Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field - type: string - pattern: ^[\sa-zA-Z0-9-_()><\[\]]+$ - x-field-uid: 1 - offset: - description: |- - Offset in bits relative to start of corresponding header field - type: integer - format: uint32 - default: 0 - maximum: 47 - x-field-uid: 2 - length: - description: |- - Number of bits to track for metrics starting from configured offset of corresponding header field - type: integer - format: uint32 - default: 48 - minimum: 1 - maximum: 48 - x-field-uid: 3 - Pattern.Flow.Arp.TargetHardwareAddr: + Pattern.Flow.RSVP.PathRsvpHopIpv4.Ipv4NextPreviousHopAddress: description: |- - Media address of the target + The IPv4 address of the interface through which the last RSVP-knowledgeable hop forwarded this message. type: object properties: choice: @@ -25728,82 +29610,45 @@ components: value: type: string x-field-uid: 2 - default: 00:00:00:00:00:00 - format: mac + default: 0.0.0.0 + format: ipv4 values: type: array items: type: string - format: mac + format: ipv4 x-field-uid: 3 default: - - 00:00:00:00:00:00 + - 0.0.0.0 increment: - $ref: '#/components/schemas/Pattern.Flow.Arp.TargetHardwareAddr.Counter' + $ref: '#/components/schemas/Pattern.Flow.RSVP.PathRsvpHopIpv4.Ipv4NextPreviousHopAddress.Counter' x-field-uid: 5 decrement: - $ref: '#/components/schemas/Pattern.Flow.Arp.TargetHardwareAddr.Counter' + $ref: '#/components/schemas/Pattern.Flow.RSVP.PathRsvpHopIpv4.Ipv4NextPreviousHopAddress.Counter' x-field-uid: 6 - metric_tags: - description: |- - One or more metric tags can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. - type: array - items: - $ref: '#/components/schemas/Pattern.Flow.Arp.TargetHardwareAddr.MetricTag' - x-field-uid: 7 - Pattern.Flow.Arp.TargetProtocolAddr.Counter: + Pattern.Flow.RSVP.PathRsvpHopIpv4.LogicalInterfaceHandle.Counter: description: |- - ipv4 counter pattern + integer counter pattern type: object properties: start: - type: string + type: integer x-field-uid: 1 - default: 0.0.0.0 - format: ipv4 + default: 0 + format: uint32 step: - type: string + type: integer x-field-uid: 2 - default: 0.0.0.1 - format: ipv4 + default: 1 + format: uint32 count: type: integer x-field-uid: 3 default: 1 format: uint32 - Pattern.Flow.Arp.TargetProtocolAddr.MetricTag: - description: |- - Metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. - type: object - required: - - name - properties: - name: - description: |- - Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field - type: string - pattern: ^[\sa-zA-Z0-9-_()><\[\]]+$ - x-field-uid: 1 - offset: - description: |- - Offset in bits relative to start of corresponding header field - type: integer - format: uint32 - default: 0 - maximum: 31 - x-field-uid: 2 - length: - description: |- - Number of bits to track for metrics starting from configured offset of corresponding header field - type: integer - format: uint32 - default: 32 - minimum: 1 - maximum: 32 - x-field-uid: 3 - Pattern.Flow.Arp.TargetProtocolAddr: + Pattern.Flow.RSVP.PathRsvpHopIpv4.LogicalInterfaceHandle: description: |- - Internetwork address of the target + Logical Interface Handle (LIH) is used to distinguish logical outgoing interfaces. A node receiving an LIH in a Path message saves its value and returns it in the HOP objects of subsequent Resv messages sent to the node that originated the LIH. The LIH should be identically zero if there is no logical interface handle. type: object properties: choice: @@ -25825,32 +29670,25 @@ components: - increment - decrement value: - type: string + type: integer x-field-uid: 2 - default: 0.0.0.0 - format: ipv4 + default: 0 + format: uint32 values: type: array items: - type: string - format: ipv4 + type: integer + format: uint32 x-field-uid: 3 default: - - 0.0.0.0 + - 0 increment: - $ref: '#/components/schemas/Pattern.Flow.Arp.TargetProtocolAddr.Counter' + $ref: '#/components/schemas/Pattern.Flow.RSVP.PathRsvpHopIpv4.LogicalInterfaceHandle.Counter' x-field-uid: 5 decrement: - $ref: '#/components/schemas/Pattern.Flow.Arp.TargetProtocolAddr.Counter' + $ref: '#/components/schemas/Pattern.Flow.RSVP.PathRsvpHopIpv4.LogicalInterfaceHandle.Counter' x-field-uid: 6 - metric_tags: - description: |- - One or more metric tags can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. - type: array - items: - $ref: '#/components/schemas/Pattern.Flow.Arp.TargetProtocolAddr.MetricTag' - x-field-uid: 7 - Pattern.Flow.Icmp.Echo.Type.Counter: + Pattern.Flow.RSVP.PathTimeValuesType1.RefreshPeriodR.Counter: description: |- integer counter pattern type: object @@ -25858,57 +29696,21 @@ components: start: type: integer x-field-uid: 1 - default: 8 + default: 0 format: uint32 - maximum: 255 step: type: integer x-field-uid: 2 default: 1 format: uint32 - maximum: 255 count: type: integer x-field-uid: 3 default: 1 format: uint32 - maximum: 255 - x-constants: - reply: 0 - request: 8 - Pattern.Flow.Icmp.Echo.Type.MetricTag: - description: |- - Metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. - type: object - required: - - name - properties: - name: - description: |- - Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field - type: string - pattern: ^[\sa-zA-Z0-9-_()><\[\]]+$ - x-field-uid: 1 - offset: - description: |- - Offset in bits relative to start of corresponding header field - type: integer - format: uint32 - default: 0 - maximum: 7 - x-field-uid: 2 - length: - description: |- - Number of bits to track for metrics starting from configured offset of corresponding header field - type: integer - format: uint32 - default: 8 - minimum: 1 - maximum: 8 - x-field-uid: 3 - Pattern.Flow.Icmp.Echo.Type: + Pattern.Flow.RSVP.PathTimeValuesType1.RefreshPeriodR: description: |- - The type of ICMP echo packet + The refresh timeout period R used to generate this message;in milliseconds. type: object properties: choice: @@ -25932,35 +29734,23 @@ components: value: type: integer x-field-uid: 2 - default: 8 + default: 0 format: uint32 - maximum: 255 values: type: array items: type: integer format: uint32 - maximum: 255 x-field-uid: 3 default: - - 8 + - 0 increment: - $ref: '#/components/schemas/Pattern.Flow.Icmp.Echo.Type.Counter' + $ref: '#/components/schemas/Pattern.Flow.RSVP.PathTimeValuesType1.RefreshPeriodR.Counter' x-field-uid: 5 decrement: - $ref: '#/components/schemas/Pattern.Flow.Icmp.Echo.Type.Counter' + $ref: '#/components/schemas/Pattern.Flow.RSVP.PathTimeValuesType1.RefreshPeriodR.Counter' x-field-uid: 6 - metric_tags: - description: |- - One or more metric tags can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. - type: array - items: - $ref: '#/components/schemas/Pattern.Flow.Icmp.Echo.Type.MetricTag' - x-field-uid: 7 - x-constants: - reply: 0 - request: 8 - Pattern.Flow.Icmp.Echo.Code.Counter: + Pattern.Flow.RSVP.PathExplicitRouteType1Ipv4Prefix.LBit.Counter: description: |- integer counter pattern type: object @@ -25970,52 +29760,22 @@ components: x-field-uid: 1 default: 0 format: uint32 - maximum: 255 + maximum: 1 step: type: integer x-field-uid: 2 default: 1 format: uint32 - maximum: 255 + maximum: 1 count: - type: integer - x-field-uid: 3 - default: 1 - format: uint32 - maximum: 255 - Pattern.Flow.Icmp.Echo.Code.MetricTag: - description: |- - Metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. - type: object - required: - - name - properties: - name: - description: |- - Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field - type: string - pattern: ^[\sa-zA-Z0-9-_()><\[\]]+$ - x-field-uid: 1 - offset: - description: |- - Offset in bits relative to start of corresponding header field - type: integer - format: uint32 - default: 0 - maximum: 7 - x-field-uid: 2 - length: - description: |- - Number of bits to track for metrics starting from configured offset of corresponding header field - type: integer - format: uint32 - default: 8 - minimum: 1 - maximum: 8 + type: integer x-field-uid: 3 - Pattern.Flow.Icmp.Echo.Code: + default: 1 + format: uint32 + maximum: 1 + Pattern.Flow.RSVP.PathExplicitRouteType1Ipv4Prefix.LBit: description: |- - The ICMP subtype. The default code for ICMP echo request and reply is 0. + The L bit is an attribute of the subobject.The L bit is set if the subobject represents a loose hop in the explicit route. If the bit is not set, the subobject represents a strict hop in the explicit route. type: object properties: choice: @@ -26041,70 +29801,85 @@ components: x-field-uid: 2 default: 0 format: uint32 - maximum: 255 + maximum: 1 values: type: array items: type: integer format: uint32 - maximum: 255 + maximum: 1 x-field-uid: 3 default: - 0 increment: - $ref: '#/components/schemas/Pattern.Flow.Icmp.Echo.Code.Counter' + $ref: '#/components/schemas/Pattern.Flow.RSVP.PathExplicitRouteType1Ipv4Prefix.LBit.Counter' x-field-uid: 5 decrement: - $ref: '#/components/schemas/Pattern.Flow.Icmp.Echo.Code.Counter' + $ref: '#/components/schemas/Pattern.Flow.RSVP.PathExplicitRouteType1Ipv4Prefix.LBit.Counter' x-field-uid: 6 - metric_tags: - description: |- - One or more metric tags can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. - type: array - items: - $ref: '#/components/schemas/Pattern.Flow.Icmp.Echo.Code.MetricTag' - x-field-uid: 7 - Pattern.Flow.Icmp.Echo.Checksum: + Pattern.Flow.RSVP.PathExplicitRouteType1Ipv4Prefix.Ipv4Address.Counter: description: |- - ICMP checksum + ipv4 counter pattern + type: object + properties: + start: + type: string + x-field-uid: 1 + default: 0.0.0.0 + format: ipv4 + step: + type: string + x-field-uid: 2 + default: 0.0.0.1 + format: ipv4 + count: + type: integer + x-field-uid: 3 + default: 1 + format: uint32 + Pattern.Flow.RSVP.PathExplicitRouteType1Ipv4Prefix.Ipv4Address: + description: |- + This IPv4 address is treated as a prefix based on the prefix length value below. Bits beyond the prefix are ignored on receipt and SHOULD be set to zero on transmission. type: object properties: choice: - description: |- - The type of checksum type: string x-enum: - generated: - x-field-uid: 1 - custom: + value: x-field-uid: 2 - default: generated + values: + x-field-uid: 3 + increment: + x-field-uid: 4 + decrement: + x-field-uid: 5 + default: value x-field-uid: 1 enum: - - generated - - custom - generated: - description: |- - A system generated checksum value + - value + - values + - increment + - decrement + value: type: string - x-enum: - good: - x-field-uid: 1 - bad: - x-field-uid: 2 - default: good x-field-uid: 2 - enum: - - good - - bad - custom: - description: |- - A custom checksum value - type: integer - format: uint32 - maximum: 65535 + default: 0.0.0.0 + format: ipv4 + values: + type: array + items: + type: string + format: ipv4 x-field-uid: 3 - Pattern.Flow.Icmp.Echo.Identifier.Counter: + default: + - 0.0.0.0 + increment: + $ref: '#/components/schemas/Pattern.Flow.RSVP.PathExplicitRouteType1Ipv4Prefix.Ipv4Address.Counter' + x-field-uid: 5 + decrement: + $ref: '#/components/schemas/Pattern.Flow.RSVP.PathExplicitRouteType1Ipv4Prefix.Ipv4Address.Counter' + x-field-uid: 6 + Pattern.Flow.RSVP.PathExplicitRouteType1FourByteASNumber.LBit.Counter: description: |- integer counter pattern type: object @@ -26114,52 +29889,22 @@ components: x-field-uid: 1 default: 0 format: uint32 - maximum: 65535 + maximum: 1 step: type: integer x-field-uid: 2 default: 1 format: uint32 - maximum: 65535 + maximum: 1 count: type: integer x-field-uid: 3 default: 1 format: uint32 - maximum: 65535 - Pattern.Flow.Icmp.Echo.Identifier.MetricTag: - description: |- - Metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. - type: object - required: - - name - properties: - name: - description: |- - Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field - type: string - pattern: ^[\sa-zA-Z0-9-_()><\[\]]+$ - x-field-uid: 1 - offset: - description: |- - Offset in bits relative to start of corresponding header field - type: integer - format: uint32 - default: 0 - maximum: 15 - x-field-uid: 2 - length: - description: |- - Number of bits to track for metrics starting from configured offset of corresponding header field - type: integer - format: uint32 - default: 16 - minimum: 1 - maximum: 16 - x-field-uid: 3 - Pattern.Flow.Icmp.Echo.Identifier: + maximum: 1 + Pattern.Flow.RSVP.PathExplicitRouteType1FourByteASNumber.LBit: description: |- - ICMP identifier + The L bit is an attribute of the subobject.The L bit is set if the subobject represents a loose hop in the explicit route. If the bit is not set, the subobject represents a strict hop in the explicit route. type: object properties: choice: @@ -26185,30 +29930,23 @@ components: x-field-uid: 2 default: 0 format: uint32 - maximum: 65535 + maximum: 1 values: type: array items: type: integer format: uint32 - maximum: 65535 + maximum: 1 x-field-uid: 3 default: - 0 increment: - $ref: '#/components/schemas/Pattern.Flow.Icmp.Echo.Identifier.Counter' + $ref: '#/components/schemas/Pattern.Flow.RSVP.PathExplicitRouteType1FourByteASNumber.LBit.Counter' x-field-uid: 5 decrement: - $ref: '#/components/schemas/Pattern.Flow.Icmp.Echo.Identifier.Counter' + $ref: '#/components/schemas/Pattern.Flow.RSVP.PathExplicitRouteType1FourByteASNumber.LBit.Counter' x-field-uid: 6 - metric_tags: - description: |- - One or more metric tags can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. - type: array - items: - $ref: '#/components/schemas/Pattern.Flow.Icmp.Echo.Identifier.MetricTag' - x-field-uid: 7 - Pattern.Flow.Icmp.Echo.SequenceNumber.Counter: + Pattern.Flow.RSVP.PathExplicitRouteType1FourByteASNumber.Reserved.Counter: description: |- integer counter pattern type: object @@ -26218,52 +29956,22 @@ components: x-field-uid: 1 default: 0 format: uint32 - maximum: 65535 + maximum: 255 step: type: integer x-field-uid: 2 default: 1 format: uint32 - maximum: 65535 + maximum: 255 count: type: integer x-field-uid: 3 default: 1 format: uint32 - maximum: 65535 - Pattern.Flow.Icmp.Echo.SequenceNumber.MetricTag: - description: |- - Metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. - type: object - required: - - name - properties: - name: - description: |- - Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field - type: string - pattern: ^[\sa-zA-Z0-9-_()><\[\]]+$ - x-field-uid: 1 - offset: - description: |- - Offset in bits relative to start of corresponding header field - type: integer - format: uint32 - default: 0 - maximum: 15 - x-field-uid: 2 - length: - description: |- - Number of bits to track for metrics starting from configured offset of corresponding header field - type: integer - format: uint32 - default: 16 - minimum: 1 - maximum: 16 - x-field-uid: 3 - Pattern.Flow.Icmp.Echo.SequenceNumber: + maximum: 255 + Pattern.Flow.RSVP.PathExplicitRouteType1FourByteASNumber.Reserved: description: |- - ICMP sequence number + Reserved. type: object properties: choice: @@ -26289,70 +29997,90 @@ components: x-field-uid: 2 default: 0 format: uint32 - maximum: 65535 + maximum: 255 values: type: array items: type: integer format: uint32 - maximum: 65535 + maximum: 255 x-field-uid: 3 default: - 0 increment: - $ref: '#/components/schemas/Pattern.Flow.Icmp.Echo.SequenceNumber.Counter' + $ref: '#/components/schemas/Pattern.Flow.RSVP.PathExplicitRouteType1FourByteASNumber.Reserved.Counter' x-field-uid: 5 decrement: - $ref: '#/components/schemas/Pattern.Flow.Icmp.Echo.SequenceNumber.Counter' + $ref: '#/components/schemas/Pattern.Flow.RSVP.PathExplicitRouteType1FourByteASNumber.Reserved.Counter' x-field-uid: 6 - metric_tags: - description: |- - One or more metric tags can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. - type: array - items: - $ref: '#/components/schemas/Pattern.Flow.Icmp.Echo.SequenceNumber.MetricTag' - x-field-uid: 7 - Pattern.Flow.Icmp.Common.Checksum: + Pattern.Flow.RSVP.PathLabelRequestWithoutLabelRange.Reserved.Counter: description: |- - ICMP checksum + integer counter pattern + type: object + properties: + start: + type: integer + x-field-uid: 1 + default: 0 + format: uint32 + maximum: 65535 + step: + type: integer + x-field-uid: 2 + default: 1 + format: uint32 + maximum: 65535 + count: + type: integer + x-field-uid: 3 + default: 1 + format: uint32 + maximum: 65535 + Pattern.Flow.RSVP.PathLabelRequestWithoutLabelRange.Reserved: + description: "This field is reserved. It MUST be set to zero on transmission\ + \ and MUST be ignored on receipt. " type: object properties: choice: - description: |- - The type of checksum type: string x-enum: - generated: - x-field-uid: 1 - custom: + value: x-field-uid: 2 - default: generated + values: + x-field-uid: 3 + increment: + x-field-uid: 4 + decrement: + x-field-uid: 5 + default: value x-field-uid: 1 enum: - - generated - - custom - generated: - description: |- - A system generated checksum value - type: string - x-enum: - good: - x-field-uid: 1 - bad: - x-field-uid: 2 - default: good - x-field-uid: 2 - enum: - - good - - bad - custom: - description: |- - A custom checksum value + - value + - values + - increment + - decrement + value: type: integer + x-field-uid: 2 + default: 0 format: uint32 maximum: 65535 + values: + type: array + items: + type: integer + format: uint32 + maximum: 65535 x-field-uid: 3 - Pattern.Flow.Icmp.NextFields.Identifier.Counter: + default: + - 0 + increment: + $ref: '#/components/schemas/Pattern.Flow.RSVP.PathLabelRequestWithoutLabelRange.Reserved.Counter' + x-field-uid: 5 + decrement: + $ref: '#/components/schemas/Pattern.Flow.RSVP.PathLabelRequestWithoutLabelRange.Reserved.Counter' + x-field-uid: 6 + Pattern.Flow.RSVP.PathLabelRequestWithoutLabelRange.L3pid.Counter: description: |- integer counter pattern type: object @@ -26375,39 +30103,9 @@ components: default: 1 format: uint32 maximum: 65535 - Pattern.Flow.Icmp.NextFields.Identifier.MetricTag: - description: |- - Metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. - type: object - required: - - name - properties: - name: - description: |- - Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field - type: string - pattern: ^[\sa-zA-Z0-9-_()><\[\]]+$ - x-field-uid: 1 - offset: - description: |- - Offset in bits relative to start of corresponding header field - type: integer - format: uint32 - default: 0 - maximum: 15 - x-field-uid: 2 - length: - description: |- - Number of bits to track for metrics starting from configured offset of corresponding header field - type: integer - format: uint32 - default: 16 - minimum: 1 - maximum: 16 - x-field-uid: 3 - Pattern.Flow.Icmp.NextFields.Identifier: - description: |- - ICMP identifier + Pattern.Flow.RSVP.PathLabelRequestWithoutLabelRange.L3pid: + description: "An identifier of the layer 3 protocol using this path. Standard\ + \ Ethertype values are used. " type: object properties: choice: @@ -26444,19 +30142,74 @@ components: default: - 0 increment: - $ref: '#/components/schemas/Pattern.Flow.Icmp.NextFields.Identifier.Counter' + $ref: '#/components/schemas/Pattern.Flow.RSVP.PathLabelRequestWithoutLabelRange.L3pid.Counter' x-field-uid: 5 decrement: - $ref: '#/components/schemas/Pattern.Flow.Icmp.NextFields.Identifier.Counter' + $ref: '#/components/schemas/Pattern.Flow.RSVP.PathLabelRequestWithoutLabelRange.L3pid.Counter' x-field-uid: 6 - metric_tags: - description: |- - One or more metric tags can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. + Pattern.Flow.RSVP.PathSenderTemplateLspTunnelIpv4.Ipv4TunnelSenderAddress.Counter: + description: |- + ipv4 counter pattern + type: object + properties: + start: + type: string + x-field-uid: 1 + default: 0.0.0.0 + format: ipv4 + step: + type: string + x-field-uid: 2 + default: 0.0.0.1 + format: ipv4 + count: + type: integer + x-field-uid: 3 + default: 1 + format: uint32 + Pattern.Flow.RSVP.PathSenderTemplateLspTunnelIpv4.Ipv4TunnelSenderAddress: + description: |- + IPv4 address for a sender node. + type: object + properties: + choice: + type: string + x-enum: + value: + x-field-uid: 2 + values: + x-field-uid: 3 + increment: + x-field-uid: 4 + decrement: + x-field-uid: 5 + default: value + x-field-uid: 1 + enum: + - value + - values + - increment + - decrement + value: + type: string + x-field-uid: 2 + default: 0.0.0.0 + format: ipv4 + values: type: array items: - $ref: '#/components/schemas/Pattern.Flow.Icmp.NextFields.Identifier.MetricTag' - x-field-uid: 7 - Pattern.Flow.Icmp.NextFields.SequenceNumber.Counter: + type: string + format: ipv4 + x-field-uid: 3 + default: + - 0.0.0.0 + increment: + $ref: '#/components/schemas/Pattern.Flow.RSVP.PathSenderTemplateLspTunnelIpv4.Ipv4TunnelSenderAddress.Counter' + x-field-uid: 5 + decrement: + $ref: '#/components/schemas/Pattern.Flow.RSVP.PathSenderTemplateLspTunnelIpv4.Ipv4TunnelSenderAddress.Counter' + x-field-uid: 6 + Pattern.Flow.RSVP.PathSenderTemplateLspTunnelIpv4.Reserved.Counter: description: |- integer counter pattern type: object @@ -26479,39 +30232,9 @@ components: default: 1 format: uint32 maximum: 65535 - Pattern.Flow.Icmp.NextFields.SequenceNumber.MetricTag: - description: |- - Metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. - type: object - required: - - name - properties: - name: - description: |- - Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field - type: string - pattern: ^[\sa-zA-Z0-9-_()><\[\]]+$ - x-field-uid: 1 - offset: - description: |- - Offset in bits relative to start of corresponding header field - type: integer - format: uint32 - default: 0 - maximum: 15 - x-field-uid: 2 - length: - description: |- - Number of bits to track for metrics starting from configured offset of corresponding header field - type: integer - format: uint32 - default: 16 - minimum: 1 - maximum: 16 - x-field-uid: 3 - Pattern.Flow.Icmp.NextFields.SequenceNumber: + Pattern.Flow.RSVP.PathSenderTemplateLspTunnelIpv4.Reserved: description: |- - ICMP sequence number + Reserved field, MUST be zero. type: object properties: choice: @@ -26548,19 +30271,12 @@ components: default: - 0 increment: - $ref: '#/components/schemas/Pattern.Flow.Icmp.NextFields.SequenceNumber.Counter' + $ref: '#/components/schemas/Pattern.Flow.RSVP.PathSenderTemplateLspTunnelIpv4.Reserved.Counter' x-field-uid: 5 decrement: - $ref: '#/components/schemas/Pattern.Flow.Icmp.NextFields.SequenceNumber.Counter' + $ref: '#/components/schemas/Pattern.Flow.RSVP.PathSenderTemplateLspTunnelIpv4.Reserved.Counter' x-field-uid: 6 - metric_tags: - description: |- - One or more metric tags can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. - type: array - items: - $ref: '#/components/schemas/Pattern.Flow.Icmp.NextFields.SequenceNumber.MetricTag' - x-field-uid: 7 - Pattern.Flow.Icmpv6.Echo.Type.Counter: + Pattern.Flow.RSVP.PathSenderTemplateLspTunnelIpv4.LspId.Counter: description: |- integer counter pattern type: object @@ -26568,57 +30284,24 @@ components: start: type: integer x-field-uid: 1 - default: 128 + default: 0 format: uint32 - maximum: 255 + maximum: 65535 step: type: integer x-field-uid: 2 default: 1 format: uint32 - maximum: 255 + maximum: 65535 count: type: integer x-field-uid: 3 default: 1 format: uint32 - maximum: 255 - x-constants: - request: 128 - reply: 129 - Pattern.Flow.Icmpv6.Echo.Type.MetricTag: - description: |- - Metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. - type: object - required: - - name - properties: - name: - description: |- - Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field - type: string - pattern: ^[\sa-zA-Z0-9-_()><\[\]]+$ - x-field-uid: 1 - offset: - description: |- - Offset in bits relative to start of corresponding header field - type: integer - format: uint32 - default: 0 - maximum: 7 - x-field-uid: 2 - length: - description: |- - Number of bits to track for metrics starting from configured offset of corresponding header field - type: integer - format: uint32 - default: 8 - minimum: 1 - maximum: 8 - x-field-uid: 3 - Pattern.Flow.Icmpv6.Echo.Type: + maximum: 65535 + Pattern.Flow.RSVP.PathSenderTemplateLspTunnelIpv4.LspId: description: |- - ICMPv6 echo type + A 16-bit identifier used in the SENDER_TEMPLATE that can be changed to allow a sender to share resources with itself. type: object properties: choice: @@ -26642,35 +30325,25 @@ components: value: type: integer x-field-uid: 2 - default: 128 + default: 0 format: uint32 - maximum: 255 + maximum: 65535 values: type: array items: type: integer format: uint32 - maximum: 255 + maximum: 65535 x-field-uid: 3 default: - - 128 + - 0 increment: - $ref: '#/components/schemas/Pattern.Flow.Icmpv6.Echo.Type.Counter' + $ref: '#/components/schemas/Pattern.Flow.RSVP.PathSenderTemplateLspTunnelIpv4.LspId.Counter' x-field-uid: 5 decrement: - $ref: '#/components/schemas/Pattern.Flow.Icmpv6.Echo.Type.Counter' + $ref: '#/components/schemas/Pattern.Flow.RSVP.PathSenderTemplateLspTunnelIpv4.LspId.Counter' x-field-uid: 6 - metric_tags: - description: |- - One or more metric tags can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. - type: array - items: - $ref: '#/components/schemas/Pattern.Flow.Icmpv6.Echo.Type.MetricTag' - x-field-uid: 7 - x-constants: - request: 128 - reply: 129 - Pattern.Flow.Icmpv6.Echo.Code.Counter: + Pattern.Flow.RSVP.PathSenderTspecIntServ.Version.Counter: description: |- integer counter pattern type: object @@ -26680,52 +30353,22 @@ components: x-field-uid: 1 default: 0 format: uint32 - maximum: 255 + maximum: 15 step: type: integer x-field-uid: 2 default: 1 format: uint32 - maximum: 255 + maximum: 15 count: type: integer x-field-uid: 3 default: 1 format: uint32 - maximum: 255 - Pattern.Flow.Icmpv6.Echo.Code.MetricTag: - description: |- - Metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. - type: object - required: - - name - properties: - name: - description: |- - Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field - type: string - pattern: ^[\sa-zA-Z0-9-_()><\[\]]+$ - x-field-uid: 1 - offset: - description: |- - Offset in bits relative to start of corresponding header field - type: integer - format: uint32 - default: 0 - maximum: 7 - x-field-uid: 2 - length: - description: |- - Number of bits to track for metrics starting from configured offset of corresponding header field - type: integer - format: uint32 - default: 8 - minimum: 1 - maximum: 8 - x-field-uid: 3 - Pattern.Flow.Icmpv6.Echo.Code: + maximum: 15 + Pattern.Flow.RSVP.PathSenderTspecIntServ.Version: description: |- - ICMPv6 echo sub type + Message format version number. type: object properties: choice: @@ -26751,30 +30394,23 @@ components: x-field-uid: 2 default: 0 format: uint32 - maximum: 255 + maximum: 15 values: type: array items: type: integer format: uint32 - maximum: 255 + maximum: 15 x-field-uid: 3 default: - 0 increment: - $ref: '#/components/schemas/Pattern.Flow.Icmpv6.Echo.Code.Counter' + $ref: '#/components/schemas/Pattern.Flow.RSVP.PathSenderTspecIntServ.Version.Counter' x-field-uid: 5 decrement: - $ref: '#/components/schemas/Pattern.Flow.Icmpv6.Echo.Code.Counter' + $ref: '#/components/schemas/Pattern.Flow.RSVP.PathSenderTspecIntServ.Version.Counter' x-field-uid: 6 - metric_tags: - description: |- - One or more metric tags can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. - type: array - items: - $ref: '#/components/schemas/Pattern.Flow.Icmpv6.Echo.Code.MetricTag' - x-field-uid: 7 - Pattern.Flow.Icmpv6.Echo.Identifier.Counter: + Pattern.Flow.RSVP.PathSenderTspecIntServ.Reserved1.Counter: description: |- integer counter pattern type: object @@ -26784,52 +30420,22 @@ components: x-field-uid: 1 default: 0 format: uint32 - maximum: 65535 + maximum: 4095 step: type: integer x-field-uid: 2 default: 1 format: uint32 - maximum: 65535 + maximum: 4095 count: type: integer x-field-uid: 3 default: 1 format: uint32 - maximum: 65535 - Pattern.Flow.Icmpv6.Echo.Identifier.MetricTag: - description: |- - Metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. - type: object - required: - - name - properties: - name: - description: |- - Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field - type: string - pattern: ^[\sa-zA-Z0-9-_()><\[\]]+$ - x-field-uid: 1 - offset: - description: |- - Offset in bits relative to start of corresponding header field - type: integer - format: uint32 - default: 0 - maximum: 15 - x-field-uid: 2 - length: - description: |- - Number of bits to track for metrics starting from configured offset of corresponding header field - type: integer - format: uint32 - default: 16 - minimum: 1 - maximum: 16 - x-field-uid: 3 - Pattern.Flow.Icmpv6.Echo.Identifier: + maximum: 4095 + Pattern.Flow.RSVP.PathSenderTspecIntServ.Reserved1: description: |- - ICMPv6 echo identifier + Reserved. type: object properties: choice: @@ -26855,30 +30461,23 @@ components: x-field-uid: 2 default: 0 format: uint32 - maximum: 65535 + maximum: 4095 values: type: array items: type: integer format: uint32 - maximum: 65535 + maximum: 4095 x-field-uid: 3 default: - 0 increment: - $ref: '#/components/schemas/Pattern.Flow.Icmpv6.Echo.Identifier.Counter' + $ref: '#/components/schemas/Pattern.Flow.RSVP.PathSenderTspecIntServ.Reserved1.Counter' x-field-uid: 5 decrement: - $ref: '#/components/schemas/Pattern.Flow.Icmpv6.Echo.Identifier.Counter' + $ref: '#/components/schemas/Pattern.Flow.RSVP.PathSenderTspecIntServ.Reserved1.Counter' x-field-uid: 6 - metric_tags: - description: |- - One or more metric tags can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. - type: array - items: - $ref: '#/components/schemas/Pattern.Flow.Icmpv6.Echo.Identifier.MetricTag' - x-field-uid: 7 - Pattern.Flow.Icmpv6.Echo.SequenceNumber.Counter: + Pattern.Flow.RSVP.PathSenderTspecIntServ.OverallLength.Counter: description: |- integer counter pattern type: object @@ -26886,7 +30485,7 @@ components: start: type: integer x-field-uid: 1 - default: 0 + default: 7 format: uint32 maximum: 65535 step: @@ -26901,39 +30500,9 @@ components: default: 1 format: uint32 maximum: 65535 - Pattern.Flow.Icmpv6.Echo.SequenceNumber.MetricTag: - description: |- - Metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. - type: object - required: - - name - properties: - name: - description: |- - Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field - type: string - pattern: ^[\sa-zA-Z0-9-_()><\[\]]+$ - x-field-uid: 1 - offset: - description: |- - Offset in bits relative to start of corresponding header field - type: integer - format: uint32 - default: 0 - maximum: 15 - x-field-uid: 2 - length: - description: |- - Number of bits to track for metrics starting from configured offset of corresponding header field - type: integer - format: uint32 - default: 16 - minimum: 1 - maximum: 16 - x-field-uid: 3 - Pattern.Flow.Icmpv6.Echo.SequenceNumber: + Pattern.Flow.RSVP.PathSenderTspecIntServ.OverallLength: description: |- - ICMPv6 echo sequence number + Overall length (7 words not including header). type: object properties: choice: @@ -26957,7 +30526,7 @@ components: value: type: integer x-field-uid: 2 - default: 0 + default: 7 format: uint32 maximum: 65535 values: @@ -26968,101 +30537,81 @@ components: maximum: 65535 x-field-uid: 3 default: - - 0 + - 7 increment: - $ref: '#/components/schemas/Pattern.Flow.Icmpv6.Echo.SequenceNumber.Counter' + $ref: '#/components/schemas/Pattern.Flow.RSVP.PathSenderTspecIntServ.OverallLength.Counter' x-field-uid: 5 decrement: - $ref: '#/components/schemas/Pattern.Flow.Icmpv6.Echo.SequenceNumber.Counter' + $ref: '#/components/schemas/Pattern.Flow.RSVP.PathSenderTspecIntServ.OverallLength.Counter' x-field-uid: 6 - metric_tags: - description: |- - One or more metric tags can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. - type: array - items: - $ref: '#/components/schemas/Pattern.Flow.Icmpv6.Echo.SequenceNumber.MetricTag' - x-field-uid: 7 - Pattern.Flow.Icmpv6.Echo.Checksum: + Pattern.Flow.RSVP.PathSenderTspecIntServ.ServiceHeader.Counter: description: |- - ICMPv6 checksum + integer counter pattern type: object properties: - choice: - description: |- - The type of checksum - type: string - x-enum: - generated: - x-field-uid: 1 - custom: - x-field-uid: 2 - default: generated + start: + type: integer x-field-uid: 1 - enum: - - generated - - custom - generated: - description: |- - A system generated checksum value - type: string - x-enum: - good: - x-field-uid: 1 - bad: - x-field-uid: 2 - default: good - x-field-uid: 2 - enum: - - good - - bad - custom: - description: |- - A custom checksum value + default: 1 + format: uint32 + maximum: 255 + step: type: integer + x-field-uid: 2 + default: 1 format: uint32 - maximum: 65535 + maximum: 255 + count: + type: integer x-field-uid: 3 - Pattern.Flow.Icmpv6.Common.Checksum: + default: 1 + format: uint32 + maximum: 255 + Pattern.Flow.RSVP.PathSenderTspecIntServ.ServiceHeader: description: |- - ICMPv6 checksum + Service header, service number - '1' (Generic information) if in a PATH message. type: object properties: choice: - description: |- - The type of checksum type: string x-enum: - generated: - x-field-uid: 1 - custom: + value: x-field-uid: 2 - default: generated + values: + x-field-uid: 3 + increment: + x-field-uid: 4 + decrement: + x-field-uid: 5 + default: value x-field-uid: 1 enum: - - generated - - custom - generated: - description: |- - A system generated checksum value - type: string - x-enum: - good: - x-field-uid: 1 - bad: - x-field-uid: 2 - default: good - x-field-uid: 2 - enum: - - good - - bad - custom: - description: |- - A custom checksum value + - value + - values + - increment + - decrement + value: type: integer + x-field-uid: 2 + default: 1 format: uint32 - maximum: 65535 + maximum: 255 + values: + type: array + items: + type: integer + format: uint32 + maximum: 255 x-field-uid: 3 - Pattern.Flow.Ppp.Address.Counter: + default: + - 1 + increment: + $ref: '#/components/schemas/Pattern.Flow.RSVP.PathSenderTspecIntServ.ServiceHeader.Counter' + x-field-uid: 5 + decrement: + $ref: '#/components/schemas/Pattern.Flow.RSVP.PathSenderTspecIntServ.ServiceHeader.Counter' + x-field-uid: 6 + Pattern.Flow.RSVP.PathSenderTspecIntServ.ZeroBit.Counter: description: |- integer counter pattern type: object @@ -27070,56 +30619,24 @@ components: start: type: integer x-field-uid: 1 - default: 255 + default: 0 format: uint32 - maximum: 255 + maximum: 1 step: type: integer x-field-uid: 2 default: 1 format: uint32 - maximum: 255 - count: - type: integer - x-field-uid: 3 - default: 1 - format: uint32 - maximum: 255 - x-constants: - standard_address: 255 - Pattern.Flow.Ppp.Address.MetricTag: - description: |- - Metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. - type: object - required: - - name - properties: - name: - description: |- - Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field - type: string - pattern: ^[\sa-zA-Z0-9-_()><\[\]]+$ - x-field-uid: 1 - offset: - description: |- - Offset in bits relative to start of corresponding header field - type: integer - format: uint32 - default: 0 - maximum: 7 - x-field-uid: 2 - length: - description: |- - Number of bits to track for metrics starting from configured offset of corresponding header field - type: integer - format: uint32 - default: 8 - minimum: 1 - maximum: 8 + maximum: 1 + count: + type: integer x-field-uid: 3 - Pattern.Flow.Ppp.Address: + default: 1 + format: uint32 + maximum: 1 + Pattern.Flow.RSVP.PathSenderTspecIntServ.ZeroBit: description: |- - PPP address + MUST be 0. type: object properties: choice: @@ -27143,34 +30660,25 @@ components: value: type: integer x-field-uid: 2 - default: 255 + default: 0 format: uint32 - maximum: 255 + maximum: 1 values: type: array items: type: integer format: uint32 - maximum: 255 + maximum: 1 x-field-uid: 3 default: - - 255 + - 0 increment: - $ref: '#/components/schemas/Pattern.Flow.Ppp.Address.Counter' + $ref: '#/components/schemas/Pattern.Flow.RSVP.PathSenderTspecIntServ.ZeroBit.Counter' x-field-uid: 5 decrement: - $ref: '#/components/schemas/Pattern.Flow.Ppp.Address.Counter' + $ref: '#/components/schemas/Pattern.Flow.RSVP.PathSenderTspecIntServ.ZeroBit.Counter' x-field-uid: 6 - metric_tags: - description: |- - One or more metric tags can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. - type: array - items: - $ref: '#/components/schemas/Pattern.Flow.Ppp.Address.MetricTag' - x-field-uid: 7 - x-constants: - standard_address: 255 - Pattern.Flow.Ppp.Control.Counter: + Pattern.Flow.RSVP.PathSenderTspecIntServ.Reserved2.Counter: description: |- integer counter pattern type: object @@ -27178,56 +30686,24 @@ components: start: type: integer x-field-uid: 1 - default: 3 + default: 0 format: uint32 - maximum: 255 + maximum: 127 step: type: integer x-field-uid: 2 default: 1 format: uint32 - maximum: 255 + maximum: 127 count: type: integer x-field-uid: 3 default: 1 format: uint32 - maximum: 255 - x-constants: - unnumbered_data: 3 - Pattern.Flow.Ppp.Control.MetricTag: - description: |- - Metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. - type: object - required: - - name - properties: - name: - description: |- - Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field - type: string - pattern: ^[\sa-zA-Z0-9-_()><\[\]]+$ - x-field-uid: 1 - offset: - description: |- - Offset in bits relative to start of corresponding header field - type: integer - format: uint32 - default: 0 - maximum: 7 - x-field-uid: 2 - length: - description: |- - Number of bits to track for metrics starting from configured offset of corresponding header field - type: integer - format: uint32 - default: 8 - minimum: 1 - maximum: 8 - x-field-uid: 3 - Pattern.Flow.Ppp.Control: + maximum: 127 + Pattern.Flow.RSVP.PathSenderTspecIntServ.Reserved2: description: |- - PPP control + Reserved. type: object properties: choice: @@ -27251,34 +30727,25 @@ components: value: type: integer x-field-uid: 2 - default: 3 + default: 0 format: uint32 - maximum: 255 + maximum: 127 values: type: array items: type: integer format: uint32 - maximum: 255 + maximum: 127 x-field-uid: 3 default: - - 3 + - 0 increment: - $ref: '#/components/schemas/Pattern.Flow.Ppp.Control.Counter' + $ref: '#/components/schemas/Pattern.Flow.RSVP.PathSenderTspecIntServ.Reserved2.Counter' x-field-uid: 5 decrement: - $ref: '#/components/schemas/Pattern.Flow.Ppp.Control.Counter' + $ref: '#/components/schemas/Pattern.Flow.RSVP.PathSenderTspecIntServ.Reserved2.Counter' x-field-uid: 6 - metric_tags: - description: |- - One or more metric tags can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. - type: array - items: - $ref: '#/components/schemas/Pattern.Flow.Ppp.Control.MetricTag' - x-field-uid: 7 - x-constants: - unnumbered_data: 3 - Pattern.Flow.Ppp.ProtocolType.Counter: + Pattern.Flow.RSVP.PathSenderTspecIntServ.LengthOfServiceData.Counter: description: |- integer counter pattern type: object @@ -27286,7 +30753,7 @@ components: start: type: integer x-field-uid: 1 - default: 33 + default: 6 format: uint32 maximum: 65535 step: @@ -27301,39 +30768,9 @@ components: default: 1 format: uint32 maximum: 65535 - Pattern.Flow.Ppp.ProtocolType.MetricTag: - description: |- - Metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. - type: object - required: - - name - properties: - name: - description: |- - Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field - type: string - pattern: ^[\sa-zA-Z0-9-_()><\[\]]+$ - x-field-uid: 1 - offset: - description: |- - Offset in bits relative to start of corresponding header field - type: integer - format: uint32 - default: 0 - maximum: 15 - x-field-uid: 2 - length: - description: |- - Number of bits to track for metrics starting from configured offset of corresponding header field - type: integer - format: uint32 - default: 16 - minimum: 1 - maximum: 16 - x-field-uid: 3 - Pattern.Flow.Ppp.ProtocolType: + Pattern.Flow.RSVP.PathSenderTspecIntServ.LengthOfServiceData: description: |- - PPP protocol type + Length of service data, 6 words not including per-service header. type: object properties: choice: @@ -27343,24 +30780,21 @@ components: x-field-uid: 2 values: x-field-uid: 3 - auto: - x-field-uid: 1 increment: x-field-uid: 4 decrement: x-field-uid: 5 - default: auto + default: value x-field-uid: 1 enum: - value - values - - auto - increment - decrement value: type: integer x-field-uid: 2 - default: 33 + default: 6 format: uint32 maximum: 65535 values: @@ -27371,31 +30805,14 @@ components: maximum: 65535 x-field-uid: 3 default: - - 33 - auto: - description: |- - The OTG implementation can provide a system generated - value for this property. If the OTG is unable to generate a value - the default value must be used. - type: integer - x-field-uid: 4 - default: 33 - format: uint32 - maximum: 65535 + - 6 increment: - $ref: '#/components/schemas/Pattern.Flow.Ppp.ProtocolType.Counter' - x-field-uid: 6 + $ref: '#/components/schemas/Pattern.Flow.RSVP.PathSenderTspecIntServ.LengthOfServiceData.Counter' + x-field-uid: 5 decrement: - $ref: '#/components/schemas/Pattern.Flow.Ppp.ProtocolType.Counter' - x-field-uid: 7 - metric_tags: - description: |- - One or more metric tags can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. - type: array - items: - $ref: '#/components/schemas/Pattern.Flow.Ppp.ProtocolType.MetricTag' - x-field-uid: 8 - Pattern.Flow.Igmpv1.Version.Counter: + $ref: '#/components/schemas/Pattern.Flow.RSVP.PathSenderTspecIntServ.LengthOfServiceData.Counter' + x-field-uid: 6 + Pattern.Flow.RSVP.PathSenderTspecIntServ.ParameterIdTokenBucketTspec.Counter: description: |- integer counter pattern type: object @@ -27403,54 +30820,24 @@ components: start: type: integer x-field-uid: 1 - default: 1 + default: 127 format: uint32 - maximum: 15 + maximum: 255 step: type: integer x-field-uid: 2 default: 1 format: uint32 - maximum: 15 + maximum: 255 count: type: integer x-field-uid: 3 default: 1 format: uint32 - maximum: 15 - Pattern.Flow.Igmpv1.Version.MetricTag: - description: |- - Metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. - type: object - required: - - name - properties: - name: - description: |- - Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field - type: string - pattern: ^[\sa-zA-Z0-9-_()><\[\]]+$ - x-field-uid: 1 - offset: - description: |- - Offset in bits relative to start of corresponding header field - type: integer - format: uint32 - default: 0 - maximum: 3 - x-field-uid: 2 - length: - description: |- - Number of bits to track for metrics starting from configured offset of corresponding header field - type: integer - format: uint32 - default: 4 - minimum: 1 - maximum: 4 - x-field-uid: 3 - Pattern.Flow.Igmpv1.Version: + maximum: 255 + Pattern.Flow.RSVP.PathSenderTspecIntServ.ParameterIdTokenBucketTspec: description: |- - Version number + Parameter ID, parameter 127 (Token Bucket TSpec) type: object properties: choice: @@ -27474,32 +30861,25 @@ components: value: type: integer x-field-uid: 2 - default: 1 + default: 127 format: uint32 - maximum: 15 + maximum: 255 values: type: array items: type: integer format: uint32 - maximum: 15 + maximum: 255 x-field-uid: 3 default: - - 1 + - 127 increment: - $ref: '#/components/schemas/Pattern.Flow.Igmpv1.Version.Counter' + $ref: '#/components/schemas/Pattern.Flow.RSVP.PathSenderTspecIntServ.ParameterIdTokenBucketTspec.Counter' x-field-uid: 5 decrement: - $ref: '#/components/schemas/Pattern.Flow.Igmpv1.Version.Counter' + $ref: '#/components/schemas/Pattern.Flow.RSVP.PathSenderTspecIntServ.ParameterIdTokenBucketTspec.Counter' x-field-uid: 6 - metric_tags: - description: |- - One or more metric tags can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. - type: array - items: - $ref: '#/components/schemas/Pattern.Flow.Igmpv1.Version.MetricTag' - x-field-uid: 7 - Pattern.Flow.Igmpv1.Type.Counter: + Pattern.Flow.RSVP.PathSenderTspecIntServ.Parameter127Flag.Counter: description: |- integer counter pattern type: object @@ -27507,57 +30887,24 @@ components: start: type: integer x-field-uid: 1 - default: 1 + default: 0 format: uint32 - maximum: 15 + maximum: 255 step: type: integer x-field-uid: 2 default: 1 format: uint32 - maximum: 15 + maximum: 255 count: type: integer x-field-uid: 3 default: 1 format: uint32 - maximum: 15 - x-constants: - query: 1 - report: 2 - Pattern.Flow.Igmpv1.Type.MetricTag: - description: |- - Metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. - type: object - required: - - name - properties: - name: - description: |- - Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field - type: string - pattern: ^[\sa-zA-Z0-9-_()><\[\]]+$ - x-field-uid: 1 - offset: - description: |- - Offset in bits relative to start of corresponding header field - type: integer - format: uint32 - default: 0 - maximum: 3 - x-field-uid: 2 - length: - description: |- - Number of bits to track for metrics starting from configured offset of corresponding header field - type: integer - format: uint32 - default: 4 - minimum: 1 - maximum: 4 - x-field-uid: 3 - Pattern.Flow.Igmpv1.Type: + maximum: 255 + Pattern.Flow.RSVP.PathSenderTspecIntServ.Parameter127Flag: description: |- - Type of message + Parameter 127 flags (none set) type: object properties: choice: @@ -27581,35 +30928,25 @@ components: value: type: integer x-field-uid: 2 - default: 1 + default: 0 format: uint32 - maximum: 15 + maximum: 255 values: type: array items: type: integer format: uint32 - maximum: 15 + maximum: 255 x-field-uid: 3 default: - - 1 + - 0 increment: - $ref: '#/components/schemas/Pattern.Flow.Igmpv1.Type.Counter' + $ref: '#/components/schemas/Pattern.Flow.RSVP.PathSenderTspecIntServ.Parameter127Flag.Counter' x-field-uid: 5 decrement: - $ref: '#/components/schemas/Pattern.Flow.Igmpv1.Type.Counter' + $ref: '#/components/schemas/Pattern.Flow.RSVP.PathSenderTspecIntServ.Parameter127Flag.Counter' x-field-uid: 6 - metric_tags: - description: |- - One or more metric tags can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. - type: array - items: - $ref: '#/components/schemas/Pattern.Flow.Igmpv1.Type.MetricTag' - x-field-uid: 7 - x-constants: - query: 1 - report: 2 - Pattern.Flow.Igmpv1.Unused.Counter: + Pattern.Flow.RSVP.PathSenderTspecIntServ.Parameter127Length.Counter: description: |- integer counter pattern type: object @@ -27619,52 +30956,22 @@ components: x-field-uid: 1 default: 0 format: uint32 - maximum: 255 + maximum: 65535 step: type: integer x-field-uid: 2 default: 1 format: uint32 - maximum: 255 + maximum: 65535 count: type: integer x-field-uid: 3 default: 1 format: uint32 - maximum: 255 - Pattern.Flow.Igmpv1.Unused.MetricTag: - description: |- - Metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. - type: object - required: - - name - properties: - name: - description: |- - Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field - type: string - pattern: ^[\sa-zA-Z0-9-_()><\[\]]+$ - x-field-uid: 1 - offset: - description: |- - Offset in bits relative to start of corresponding header field - type: integer - format: uint32 - default: 0 - maximum: 7 - x-field-uid: 2 - length: - description: |- - Number of bits to track for metrics starting from configured offset of corresponding header field - type: integer - format: uint32 - default: 8 - minimum: 1 - maximum: 8 - x-field-uid: 3 - Pattern.Flow.Igmpv1.Unused: + maximum: 65535 + Pattern.Flow.RSVP.PathSenderTspecIntServ.Parameter127Length: description: |- - Unused + Parameter 127 length, 5 words not including per-service header type: object properties: choice: @@ -27690,122 +30997,45 @@ components: x-field-uid: 2 default: 0 format: uint32 - maximum: 255 + maximum: 65535 values: type: array items: type: integer format: uint32 - maximum: 255 + maximum: 65535 x-field-uid: 3 default: - 0 increment: - $ref: '#/components/schemas/Pattern.Flow.Igmpv1.Unused.Counter' + $ref: '#/components/schemas/Pattern.Flow.RSVP.PathSenderTspecIntServ.Parameter127Length.Counter' x-field-uid: 5 decrement: - $ref: '#/components/schemas/Pattern.Flow.Igmpv1.Unused.Counter' + $ref: '#/components/schemas/Pattern.Flow.RSVP.PathSenderTspecIntServ.Parameter127Length.Counter' x-field-uid: 6 - metric_tags: - description: |- - One or more metric tags can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. - type: array - items: - $ref: '#/components/schemas/Pattern.Flow.Igmpv1.Unused.MetricTag' - x-field-uid: 7 - Pattern.Flow.Igmpv1.Checksum: - description: |- - Checksum - type: object - properties: - choice: - description: |- - The type of checksum - type: string - x-enum: - generated: - x-field-uid: 1 - custom: - x-field-uid: 2 - default: generated - x-field-uid: 1 - enum: - - generated - - custom - generated: - description: |- - A system generated checksum value - type: string - x-enum: - good: - x-field-uid: 1 - bad: - x-field-uid: 2 - default: good - x-field-uid: 2 - enum: - - good - - bad - custom: - description: |- - A custom checksum value - type: integer - format: uint32 - maximum: 65535 - x-field-uid: 3 - Pattern.Flow.Igmpv1.GroupAddress.Counter: + Pattern.Flow.RSVP.PathSenderTspecIntServ.MinimumPolicedUnit.Counter: description: |- - ipv4 counter pattern + integer counter pattern type: object properties: start: - type: string + type: integer x-field-uid: 1 - default: 0.0.0.0 - format: ipv4 + default: 0 + format: uint32 step: - type: string + type: integer x-field-uid: 2 - default: 0.0.0.1 - format: ipv4 + default: 1 + format: uint32 count: type: integer x-field-uid: 3 default: 1 format: uint32 - Pattern.Flow.Igmpv1.GroupAddress.MetricTag: - description: |- - Metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. - type: object - required: - - name - properties: - name: - description: |- - Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field - type: string - pattern: ^[\sa-zA-Z0-9-_()><\[\]]+$ - x-field-uid: 1 - offset: - description: |- - Offset in bits relative to start of corresponding header field - type: integer - format: uint32 - default: 0 - maximum: 31 - x-field-uid: 2 - length: - description: |- - Number of bits to track for metrics starting from configured offset of corresponding header field - type: integer - format: uint32 - default: 32 - minimum: 1 - maximum: 32 - x-field-uid: 3 - Pattern.Flow.Igmpv1.GroupAddress: + Pattern.Flow.RSVP.PathSenderTspecIntServ.MinimumPolicedUnit: description: |- - Group address + The minimum policed unit parameter should generally be set equal to the size of the smallest packet generated by the application. type: object properties: choice: @@ -27827,32 +31057,25 @@ components: - increment - decrement value: - type: string + type: integer x-field-uid: 2 - default: 0.0.0.0 - format: ipv4 + default: 0 + format: uint32 values: type: array items: - type: string - format: ipv4 + type: integer + format: uint32 x-field-uid: 3 default: - - 0.0.0.0 + - 0 increment: - $ref: '#/components/schemas/Pattern.Flow.Igmpv1.GroupAddress.Counter' + $ref: '#/components/schemas/Pattern.Flow.RSVP.PathSenderTspecIntServ.MinimumPolicedUnit.Counter' x-field-uid: 5 decrement: - $ref: '#/components/schemas/Pattern.Flow.Igmpv1.GroupAddress.Counter' + $ref: '#/components/schemas/Pattern.Flow.RSVP.PathSenderTspecIntServ.MinimumPolicedUnit.Counter' x-field-uid: 6 - metric_tags: - description: |- - One or more metric tags can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. - type: array - items: - $ref: '#/components/schemas/Pattern.Flow.Igmpv1.GroupAddress.MetricTag' - x-field-uid: 7 - Pattern.Flow.Mpls.Label.Counter: + Pattern.Flow.RSVP.PathSenderTspecIntServ.MaximumPacketSize.Counter: description: |- integer counter pattern type: object @@ -27860,54 +31083,83 @@ components: start: type: integer x-field-uid: 1 - default: 16 + default: 0 format: uint32 - maximum: 1048575 step: type: integer x-field-uid: 2 default: 1 format: uint32 - maximum: 1048575 count: type: integer x-field-uid: 3 default: 1 format: uint32 - maximum: 1048575 - Pattern.Flow.Mpls.Label.MetricTag: + Pattern.Flow.RSVP.PathSenderTspecIntServ.MaximumPacketSize: description: |- - Metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. + The maximum packet size parameter should be set to the size of the largest packet the application might wish to generate. This value must, by definition, be equal to or larger than the value of The minimum policed unit. type: object - required: - - name properties: - name: - description: |- - Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field + choice: type: string - pattern: ^[\sa-zA-Z0-9-_()><\[\]]+$ + x-enum: + value: + x-field-uid: 2 + values: + x-field-uid: 3 + increment: + x-field-uid: 4 + decrement: + x-field-uid: 5 + default: value x-field-uid: 1 - offset: - description: |- - Offset in bits relative to start of corresponding header field + enum: + - value + - values + - increment + - decrement + value: type: integer - format: uint32 + x-field-uid: 2 default: 0 - maximum: 19 + format: uint32 + values: + type: array + items: + type: integer + format: uint32 + x-field-uid: 3 + default: + - 0 + increment: + $ref: '#/components/schemas/Pattern.Flow.RSVP.PathSenderTspecIntServ.MaximumPacketSize.Counter' + x-field-uid: 5 + decrement: + $ref: '#/components/schemas/Pattern.Flow.RSVP.PathSenderTspecIntServ.MaximumPacketSize.Counter' + x-field-uid: 6 + Pattern.Flow.RSVP.PathRecordRouteType1Ipv4Address.Ipv4Address.Counter: + description: |- + ipv4 counter pattern + type: object + properties: + start: + type: string + x-field-uid: 1 + default: 0.0.0.0 + format: ipv4 + step: + type: string x-field-uid: 2 - length: - description: |- - Number of bits to track for metrics starting from configured offset of corresponding header field + default: 0.0.0.1 + format: ipv4 + count: type: integer - format: uint32 - default: 20 - minimum: 1 - maximum: 20 x-field-uid: 3 - Pattern.Flow.Mpls.Label: + default: 1 + format: uint32 + Pattern.Flow.RSVP.PathRecordRouteType1Ipv4Address.Ipv4Address: description: |- - Label of routers + A 32-bit unicast, host address. Any network-reachable interface address is allowed here. Illegal addresses, such as certain loopback addresses, SHOULD NOT be used. type: object properties: choice: @@ -27917,59 +31169,37 @@ components: x-field-uid: 2 values: x-field-uid: 3 - auto: - x-field-uid: 1 increment: x-field-uid: 4 decrement: x-field-uid: 5 - default: auto + default: value x-field-uid: 1 enum: - value - values - - auto - increment - decrement value: - type: integer + type: string x-field-uid: 2 - default: 16 - format: uint32 - maximum: 1048575 + default: 0.0.0.0 + format: ipv4 values: type: array items: - type: integer - format: uint32 - maximum: 1048575 + type: string + format: ipv4 x-field-uid: 3 default: - - 16 - auto: - description: |- - The OTG implementation can provide a system generated - value for this property. If the OTG is unable to generate a value - the default value must be used. - type: integer - x-field-uid: 4 - default: 16 - format: uint32 - maximum: 1048575 + - 0.0.0.0 increment: - $ref: '#/components/schemas/Pattern.Flow.Mpls.Label.Counter' - x-field-uid: 6 + $ref: '#/components/schemas/Pattern.Flow.RSVP.PathRecordRouteType1Ipv4Address.Ipv4Address.Counter' + x-field-uid: 5 decrement: - $ref: '#/components/schemas/Pattern.Flow.Mpls.Label.Counter' - x-field-uid: 7 - metric_tags: - description: |- - One or more metric tags can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. - type: array - items: - $ref: '#/components/schemas/Pattern.Flow.Mpls.Label.MetricTag' - x-field-uid: 8 - Pattern.Flow.Mpls.TrafficClass.Counter: + $ref: '#/components/schemas/Pattern.Flow.RSVP.PathRecordRouteType1Ipv4Address.Ipv4Address.Counter' + x-field-uid: 6 + Pattern.Flow.RSVP.PathRecordRouteType1Ipv4Address.PrefixLength.Counter: description: |- integer counter pattern type: object @@ -27977,54 +31207,24 @@ components: start: type: integer x-field-uid: 1 - default: 0 + default: 32 format: uint32 - maximum: 7 + maximum: 255 step: type: integer x-field-uid: 2 default: 1 format: uint32 - maximum: 7 + maximum: 255 count: type: integer x-field-uid: 3 default: 1 format: uint32 - maximum: 7 - Pattern.Flow.Mpls.TrafficClass.MetricTag: - description: |- - Metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. - type: object - required: - - name - properties: - name: - description: |- - Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field - type: string - pattern: ^[\sa-zA-Z0-9-_()><\[\]]+$ - x-field-uid: 1 - offset: - description: |- - Offset in bits relative to start of corresponding header field - type: integer - format: uint32 - default: 0 - maximum: 2 - x-field-uid: 2 - length: - description: |- - Number of bits to track for metrics starting from configured offset of corresponding header field - type: integer - format: uint32 - default: 3 - minimum: 1 - maximum: 3 - x-field-uid: 3 - Pattern.Flow.Mpls.TrafficClass: + maximum: 255 + Pattern.Flow.RSVP.PathRecordRouteType1Ipv4Address.PrefixLength: description: |- - Traffic class + Prefix-length of ipv4 address. type: object properties: choice: @@ -28048,87 +31248,59 @@ components: value: type: integer x-field-uid: 2 - default: 0 + default: 32 format: uint32 - maximum: 7 + maximum: 255 values: type: array items: type: integer format: uint32 - maximum: 7 + maximum: 255 x-field-uid: 3 default: - - 0 + - 32 increment: - $ref: '#/components/schemas/Pattern.Flow.Mpls.TrafficClass.Counter' + $ref: '#/components/schemas/Pattern.Flow.RSVP.PathRecordRouteType1Ipv4Address.PrefixLength.Counter' x-field-uid: 5 decrement: - $ref: '#/components/schemas/Pattern.Flow.Mpls.TrafficClass.Counter' + $ref: '#/components/schemas/Pattern.Flow.RSVP.PathRecordRouteType1Ipv4Address.PrefixLength.Counter' x-field-uid: 6 - metric_tags: - description: |- - One or more metric tags can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. - type: array - items: - $ref: '#/components/schemas/Pattern.Flow.Mpls.TrafficClass.MetricTag' - x-field-uid: 7 - Pattern.Flow.Mpls.BottomOfStack.Counter: - description: |- - integer counter pattern - type: object - properties: - start: - type: integer - x-field-uid: 1 - default: 1 - format: uint32 - maximum: 1 - step: - type: integer - x-field-uid: 2 - default: 1 - format: uint32 - maximum: 1 - count: - type: integer - x-field-uid: 3 - default: 1 - format: uint32 - maximum: 1 - Pattern.Flow.Mpls.BottomOfStack.MetricTag: + Pattern.Flow.RSVP.PathRecordRouteType1Label.Flags: description: |- - Metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. + 0x01 = Global label. This flag indicates that the label will be understood if received on any interface. type: object - required: - - name properties: - name: - description: |- - Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field + choice: type: string - pattern: ^[\sa-zA-Z0-9-_()><\[\]]+$ + x-enum: + value: + x-field-uid: 2 + values: + x-field-uid: 3 + default: value x-field-uid: 1 - offset: - description: |- - Offset in bits relative to start of corresponding header field + enum: + - value + - values + value: type: integer - format: uint32 - default: 0 - maximum: 0 x-field-uid: 2 - length: - description: |- - Number of bits to track for metrics starting from configured offset of corresponding header field - type: integer - format: uint32 default: 1 - minimum: 1 - maximum: 1 + format: uint32 + maximum: 255 + values: + type: array + items: + type: integer + format: uint32 + maximum: 255 x-field-uid: 3 - Pattern.Flow.Mpls.BottomOfStack: + default: + - 1 + Pattern.Flow.RSVP.PathRecordRouteType1Label.CType: description: |- - Bottom of stack + The C-Type of the included Label Object. Copied from the Label object. type: object properties: choice: @@ -28138,59 +31310,27 @@ components: x-field-uid: 2 values: x-field-uid: 3 - auto: - x-field-uid: 1 - increment: - x-field-uid: 4 - decrement: - x-field-uid: 5 - default: auto + default: value x-field-uid: 1 enum: - value - values - - auto - - increment - - decrement value: type: integer x-field-uid: 2 - default: 1 + default: 0 format: uint32 - maximum: 1 + maximum: 255 values: type: array items: type: integer format: uint32 - maximum: 1 + maximum: 255 x-field-uid: 3 default: - - 1 - auto: - description: |- - The OTG implementation can provide a system generated - value for this property. If the OTG is unable to generate a value - the default value must be used. - type: integer - x-field-uid: 4 - default: 1 - format: uint32 - maximum: 1 - increment: - $ref: '#/components/schemas/Pattern.Flow.Mpls.BottomOfStack.Counter' - x-field-uid: 6 - decrement: - $ref: '#/components/schemas/Pattern.Flow.Mpls.BottomOfStack.Counter' - x-field-uid: 7 - metric_tags: - description: |- - One or more metric tags can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. - type: array - items: - $ref: '#/components/schemas/Pattern.Flow.Mpls.BottomOfStack.MetricTag' - x-field-uid: 8 - Pattern.Flow.Mpls.TimeToLive.Counter: + - 0 + Pattern.Flow.RSVP.PathObjectsCustom.Type.Counter: description: |- integer counter pattern type: object @@ -28198,7 +31338,7 @@ components: start: type: integer x-field-uid: 1 - default: 64 + default: 0 format: uint32 maximum: 255 step: @@ -28213,39 +31353,9 @@ components: default: 1 format: uint32 maximum: 255 - Pattern.Flow.Mpls.TimeToLive.MetricTag: - description: |- - Metric tag can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. - type: object - required: - - name - properties: - name: - description: |- - Name used to identify the metrics associated with the values applicable for configured offset and length inside corresponding header field - type: string - pattern: ^[\sa-zA-Z0-9-_()><\[\]]+$ - x-field-uid: 1 - offset: - description: |- - Offset in bits relative to start of corresponding header field - type: integer - format: uint32 - default: 0 - maximum: 7 - x-field-uid: 2 - length: - description: |- - Number of bits to track for metrics starting from configured offset of corresponding header field - type: integer - format: uint32 - default: 8 - minimum: 1 - maximum: 8 - x-field-uid: 3 - Pattern.Flow.Mpls.TimeToLive: + Pattern.Flow.RSVP.PathObjectsCustom.Type: description: |- - Time to live + User defined object type. type: object properties: choice: @@ -28269,7 +31379,7 @@ components: value: type: integer x-field-uid: 2 - default: 64 + default: 0 format: uint32 maximum: 255 values: @@ -28280,20 +31390,13 @@ components: maximum: 255 x-field-uid: 3 default: - - 64 + - 0 increment: - $ref: '#/components/schemas/Pattern.Flow.Mpls.TimeToLive.Counter' + $ref: '#/components/schemas/Pattern.Flow.RSVP.PathObjectsCustom.Type.Counter' x-field-uid: 5 decrement: - $ref: '#/components/schemas/Pattern.Flow.Mpls.TimeToLive.Counter' + $ref: '#/components/schemas/Pattern.Flow.RSVP.PathObjectsCustom.Type.Counter' x-field-uid: 6 - metric_tags: - description: |- - One or more metric tags can be used to enable tracking portion of or all bits in a corresponding header field for metrics per each applicable value. These would appear as tagged metrics in corresponding flow metrics. - type: array - items: - $ref: '#/components/schemas/Pattern.Flow.Mpls.TimeToLive.MetricTag' - x-field-uid: 7 Version: description: |- Version details diff --git a/snappi/otg_pb2.py b/snappi/otg_pb2.py index c4986e6c..782ab9dd 100644 --- a/snappi/otg_pb2.py +++ b/snappi/otg_pb2.py @@ -15,7 +15,7 @@ from google.protobuf import empty_pb2 as google_dot_protobuf_dot_empty__pb2 -DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\totg.proto\x12\x03otg\x1a google/protobuf/descriptor.proto\x1a\x1bgoogle/protobuf/empty.proto\"\x89\x02\n\x06\x43onfig\x12\x18\n\x05ports\x18\x01 \x03(\x0b\x32\t.otg.Port\x12\x16\n\x04lags\x18\x02 \x03(\x0b\x32\x08.otg.Lag\x12\x1b\n\x06layer1\x18\x03 \x03(\x0b\x32\x0b.otg.Layer1\x12\x1e\n\x08\x63\x61ptures\x18\x04 \x03(\x0b\x32\x0c.otg.Capture\x12\x1c\n\x07\x64\x65vices\x18\x05 \x03(\x0b\x32\x0b.otg.Device\x12\x18\n\x05\x66lows\x18\x06 \x03(\x0b\x32\t.otg.Flow\x12\x1a\n\x06\x65vents\x18\x07 \x01(\x0b\x32\n.otg.Event\x12#\n\x07options\x18\x08 \x01(\x0b\x32\x12.otg.ConfigOptions\x12\x17\n\x04lldp\x18\t \x03(\x0b\x32\t.otg.Lldp\"g\n\rConfigOptions\x12&\n\x0cport_options\x18\x01 \x01(\x0b\x32\x10.otg.PortOptions\x12.\n\x10protocol_options\x18\x02 \x01(\x0b\x32\x14.otg.ProtocolOptions\"F\n\x04Port\x12\x15\n\x08location\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x11\n\x04name\x18\x02 \x01(\tH\x01\x88\x01\x01\x42\x0b\n\t_locationB\x07\n\x05_name\"G\n\x0bPortOptions\x12 \n\x13location_preemption\x18\x01 \x01(\x08H\x00\x88\x01\x01\x42\x16\n\x14_location_preemption\"\x88\x01\n\x03Lag\x12\x1b\n\x05ports\x18\x01 \x03(\x0b\x32\x0c.otg.LagPort\x12\"\n\x08protocol\x18\x02 \x01(\x0b\x32\x10.otg.LagProtocol\x12\x16\n\tmin_links\x18\x03 \x01(\rH\x00\x88\x01\x01\x12\x11\n\x04name\x18\x04 \x01(\tH\x01\x88\x01\x01\x42\x0c\n\n_min_linksB\x07\n\x05_name\"z\n\x07LagPort\x12\x16\n\tport_name\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x1e\n\x04lacp\x18\x02 \x01(\x0b\x32\x10.otg.LagPortLacp\x12)\n\x08\x65thernet\x18\x03 \x01(\x0b\x32\x17.otg.DeviceEthernetBaseB\x0c\n\n_port_name\"\xd0\x01\n\x0bLagProtocol\x12\x31\n\x06\x63hoice\x18\x01 \x01(\x0e\x32\x1c.otg.LagProtocol.Choice.EnumH\x00\x88\x01\x01\x12\"\n\x04lacp\x18\x02 \x01(\x0b\x32\x14.otg.LagProtocolLacp\x12&\n\x06static\x18\x03 \x01(\x0b\x32\x16.otg.LagProtocolStatic\x1a\x37\n\x06\x43hoice\"-\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\x08\n\x04lacp\x10\x01\x12\n\n\x06static\x10\x02\x42\t\n\x07_choice\"3\n\x11LagProtocolStatic\x12\x13\n\x06lag_id\x18\x01 \x01(\rH\x00\x88\x01\x01\x42\t\n\x07_lag_id\"\xa7\x01\n\x0fLagProtocolLacp\x12\x1c\n\x0f\x61\x63tor_system_id\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\"\n\x15\x61\x63tor_system_priority\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x16\n\tactor_key\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x12\n\x10_actor_system_idB\x18\n\x16_actor_system_priorityB\x0c\n\n_actor_key\"\x93\x03\n\x0bLagPortLacp\x12\x1e\n\x11\x61\x63tor_port_number\x18\x01 \x01(\rH\x00\x88\x01\x01\x12 \n\x13\x61\x63tor_port_priority\x18\x02 \x01(\rH\x01\x88\x01\x01\x12@\n\x0e\x61\x63tor_activity\x18\x03 \x01(\x0e\x32#.otg.LagPortLacp.ActorActivity.EnumH\x02\x88\x01\x01\x12*\n\x1dlacpdu_periodic_time_interval\x18\x04 \x01(\rH\x03\x88\x01\x01\x12\x1b\n\x0elacpdu_timeout\x18\x05 \x01(\rH\x04\x88\x01\x01\x1a\x41\n\rActorActivity\"0\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\x0b\n\x07passive\x10\x01\x12\n\n\x06\x61\x63tive\x10\x02\x42\x14\n\x12_actor_port_numberB\x16\n\x14_actor_port_priorityB\x11\n\x0f_actor_activityB \n\x1e_lacpdu_periodic_time_intervalB\x11\n\x0f_lacpdu_timeout\"\x84\x01\n\x12\x44\x65viceEthernetBase\x12\x10\n\x03mac\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x10\n\x03mtu\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x1e\n\x05vlans\x18\x03 \x03(\x0b\x32\x0f.otg.DeviceVlan\x12\x11\n\x04name\x18\x04 \x01(\tH\x02\x88\x01\x01\x42\x06\n\x04_macB\x06\n\x04_mtuB\x07\n\x05_name\"\xff\x01\n\x0e\x44\x65viceEthernet\x12+\n\nconnection\x18\x02 \x01(\x0b\x32\x17.otg.EthernetConnection\x12\'\n\x0eipv4_addresses\x18\x03 \x03(\x0b\x32\x0f.otg.DeviceIpv4\x12\'\n\x0eipv6_addresses\x18\x04 \x03(\x0b\x32\x0f.otg.DeviceIpv6\x12\x10\n\x03mac\x18\x05 \x01(\tH\x00\x88\x01\x01\x12\x10\n\x03mtu\x18\x06 \x01(\rH\x01\x88\x01\x01\x12\x1e\n\x05vlans\x18\x07 \x03(\x0b\x32\x0f.otg.DeviceVlan\x12\x11\n\x04name\x18\x08 \x01(\tH\x02\x88\x01\x01\x42\x06\n\x04_macB\x06\n\x04_mtuB\x07\n\x05_name\"\x9b\x02\n\x12\x45thernetConnection\x12\x38\n\x06\x63hoice\x18\x01 \x01(\x0e\x32#.otg.EthernetConnection.Choice.EnumH\x00\x88\x01\x01\x12\x16\n\tport_name\x18\x02 \x01(\tH\x01\x88\x01\x01\x12\x15\n\x08lag_name\x18\x03 \x01(\tH\x02\x88\x01\x01\x12\x17\n\nvxlan_name\x18\x04 \x01(\tH\x03\x88\x01\x01\x1aN\n\x06\x43hoice\"D\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\r\n\tport_name\x10\x01\x12\x0c\n\x08lag_name\x10\x02\x12\x0e\n\nvxlan_name\x10\x03\x42\t\n\x07_choiceB\x0c\n\n_port_nameB\x0b\n\t_lag_nameB\r\n\x0b_vxlan_name\"\xf3\x01\n\nDeviceVlan\x12,\n\x04tpid\x18\x01 \x01(\x0e\x32\x19.otg.DeviceVlan.Tpid.EnumH\x00\x88\x01\x01\x12\x15\n\x08priority\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x0f\n\x02id\x18\x03 \x01(\rH\x02\x88\x01\x01\x12\x11\n\x04name\x18\x04 \x01(\tH\x03\x88\x01\x01\x1aV\n\x04Tpid\"N\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\t\n\x05x8100\x10\x01\x12\t\n\x05x88A8\x10\x02\x12\t\n\x05x9100\x10\x03\x12\t\n\x05x9200\x10\x04\x12\t\n\x05x9300\x10\x05\x42\x07\n\x05_tpidB\x0b\n\t_priorityB\x05\n\x03_idB\x07\n\x05_name\"\xbc\x01\n\nDeviceIpv4\x12\x14\n\x07gateway\x18\x01 \x01(\tH\x00\x88\x01\x01\x12.\n\x0bgateway_mac\x18\x02 \x01(\x0b\x32\x19.otg.DeviceIpv4GatewayMAC\x12\x14\n\x07\x61\x64\x64ress\x18\x03 \x01(\tH\x01\x88\x01\x01\x12\x13\n\x06prefix\x18\x04 \x01(\rH\x02\x88\x01\x01\x12\x11\n\x04name\x18\x05 \x01(\tH\x03\x88\x01\x01\x42\n\n\x08_gatewayB\n\n\x08_addressB\t\n\x07_prefixB\x07\n\x05_name\"v\n\x12\x44\x65viceIpv4Loopback\x12\x15\n\x08\x65th_name\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x14\n\x07\x61\x64\x64ress\x18\x02 \x01(\tH\x01\x88\x01\x01\x12\x11\n\x04name\x18\x03 \x01(\tH\x02\x88\x01\x01\x42\x0b\n\t_eth_nameB\n\n\x08_addressB\x07\n\x05_name\"\xcf\x01\n\x14\x44\x65viceIpv4GatewayMAC\x12:\n\x06\x63hoice\x18\x01 \x01(\x0e\x32%.otg.DeviceIpv4GatewayMAC.Choice.EnumH\x00\x88\x01\x01\x12\x11\n\x04\x61uto\x18\x02 \x01(\tH\x01\x88\x01\x01\x12\x12\n\x05value\x18\x03 \x01(\tH\x02\x88\x01\x01\x1a\x36\n\x06\x43hoice\",\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\x08\n\x04\x61uto\x10\x01\x12\t\n\x05value\x10\x02\x42\t\n\x07_choiceB\x07\n\x05_autoB\x08\n\x06_value\"\xbc\x01\n\nDeviceIpv6\x12\x14\n\x07gateway\x18\x01 \x01(\tH\x00\x88\x01\x01\x12.\n\x0bgateway_mac\x18\x02 \x01(\x0b\x32\x19.otg.DeviceIpv6GatewayMAC\x12\x14\n\x07\x61\x64\x64ress\x18\x03 \x01(\tH\x01\x88\x01\x01\x12\x13\n\x06prefix\x18\x04 \x01(\rH\x02\x88\x01\x01\x12\x11\n\x04name\x18\x05 \x01(\tH\x03\x88\x01\x01\x42\n\n\x08_gatewayB\n\n\x08_addressB\t\n\x07_prefixB\x07\n\x05_name\"v\n\x12\x44\x65viceIpv6Loopback\x12\x15\n\x08\x65th_name\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x14\n\x07\x61\x64\x64ress\x18\x02 \x01(\tH\x01\x88\x01\x01\x12\x11\n\x04name\x18\x03 \x01(\tH\x02\x88\x01\x01\x42\x0b\n\t_eth_nameB\n\n\x08_addressB\x07\n\x05_name\"\xcf\x01\n\x14\x44\x65viceIpv6GatewayMAC\x12:\n\x06\x63hoice\x18\x01 \x01(\x0e\x32%.otg.DeviceIpv6GatewayMAC.Choice.EnumH\x00\x88\x01\x01\x12\x11\n\x04\x61uto\x18\x02 \x01(\tH\x01\x88\x01\x01\x12\x12\n\x05value\x18\x03 \x01(\tH\x02\x88\x01\x01\x1a\x36\n\x06\x43hoice\",\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\x08\n\x04\x61uto\x10\x01\x12\t\n\x05value\x10\x02\x42\t\n\x07_choiceB\x07\n\x05_autoB\x08\n\x06_value\"\x92\x06\n\x06Layer1\x12\x12\n\nport_names\x18\x01 \x03(\t\x12*\n\x05speed\x18\x02 \x01(\x0e\x32\x16.otg.Layer1.Speed.EnumH\x00\x88\x01\x01\x12*\n\x05media\x18\x03 \x01(\x0e\x32\x16.otg.Layer1.Media.EnumH\x01\x88\x01\x01\x12\x18\n\x0bpromiscuous\x18\x04 \x01(\x08H\x02\x88\x01\x01\x12\x10\n\x03mtu\x18\x05 \x01(\rH\x03\x88\x01\x01\x12 \n\x13ieee_media_defaults\x18\x06 \x01(\x08H\x04\x88\x01\x01\x12\x1b\n\x0e\x61uto_negotiate\x18\x07 \x01(\x08H\x05\x88\x01\x01\x12\x34\n\x10\x61uto_negotiation\x18\x08 \x01(\x0b\x32\x1a.otg.Layer1AutoNegotiation\x12,\n\x0c\x66low_control\x18\t \x01(\x0b\x32\x16.otg.Layer1FlowControl\x12\x11\n\x04name\x18\n \x01(\tH\x06\x88\x01\x01\x1a\x95\x02\n\x05Speed\"\x8b\x02\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\x14\n\x10speed_10_fd_mbps\x10\x01\x12\x14\n\x10speed_10_hd_mbps\x10\x02\x12\x15\n\x11speed_100_fd_mbps\x10\x03\x12\x15\n\x11speed_100_hd_mbps\x10\x04\x12\x10\n\x0cspeed_1_gbps\x10\x05\x12\x11\n\rspeed_10_gbps\x10\x06\x12\x11\n\rspeed_25_gbps\x10\x07\x12\x11\n\rspeed_40_gbps\x10\x08\x12\x11\n\rspeed_50_gbps\x10\t\x12\x12\n\x0espeed_100_gbps\x10\n\x12\x12\n\x0espeed_200_gbps\x10\x0b\x12\x12\n\x0espeed_400_gbps\x10\x0c\x1a\x42\n\x05Media\"9\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\n\n\x06\x63opper\x10\x01\x12\t\n\x05\x66iber\x10\x02\x12\t\n\x05sgmii\x10\x03\x42\x08\n\x06_speedB\x08\n\x06_mediaB\x0e\n\x0c_promiscuousB\x06\n\x04_mtuB\x16\n\x14_ieee_media_defaultsB\x11\n\x0f_auto_negotiateB\x07\n\x05_name\"\x93\x03\n\x15Layer1AutoNegotiation\x12 \n\x13\x61\x64vertise_1000_mbps\x18\x01 \x01(\x08H\x00\x88\x01\x01\x12\"\n\x15\x61\x64vertise_100_fd_mbps\x18\x02 \x01(\x08H\x01\x88\x01\x01\x12\"\n\x15\x61\x64vertise_100_hd_mbps\x18\x03 \x01(\x08H\x02\x88\x01\x01\x12!\n\x14\x61\x64vertise_10_fd_mbps\x18\x04 \x01(\x08H\x03\x88\x01\x01\x12!\n\x14\x61\x64vertise_10_hd_mbps\x18\x05 \x01(\x08H\x04\x88\x01\x01\x12\x1a\n\rlink_training\x18\x06 \x01(\x08H\x05\x88\x01\x01\x12\x13\n\x06rs_fec\x18\x07 \x01(\x08H\x06\x88\x01\x01\x42\x16\n\x14_advertise_1000_mbpsB\x18\n\x16_advertise_100_fd_mbpsB\x18\n\x16_advertise_100_hd_mbpsB\x17\n\x15_advertise_10_fd_mbpsB\x17\n\x15_advertise_10_hd_mbpsB\x10\n\x0e_link_trainingB\t\n\x07_rs_fec\"\xac\x02\n\x11Layer1FlowControl\x12\x1d\n\x10\x64irected_address\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x37\n\x06\x63hoice\x18\x02 \x01(\x0e\x32\".otg.Layer1FlowControl.Choice.EnumH\x01\x88\x01\x01\x12-\n\rieee_802_1qbb\x18\x03 \x01(\x0b\x32\x16.otg.Layer1Ieee8021qbb\x12)\n\x0bieee_802_3x\x18\x04 \x01(\x0b\x32\x14.otg.Layer1Ieee8023x\x1a\x45\n\x06\x43hoice\";\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\x11\n\rieee_802_1qbb\x10\x01\x12\x0f\n\x0bieee_802_3x\x10\x02\x42\x13\n\x11_directed_addressB\t\n\x07_choice\"\x11\n\x0fLayer1Ieee8023x\"\x89\x03\n\x11Layer1Ieee8021qbb\x12\x16\n\tpfc_delay\x18\x01 \x01(\rH\x00\x88\x01\x01\x12\x18\n\x0bpfc_class_0\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x18\n\x0bpfc_class_1\x18\x03 \x01(\rH\x02\x88\x01\x01\x12\x18\n\x0bpfc_class_2\x18\x04 \x01(\rH\x03\x88\x01\x01\x12\x18\n\x0bpfc_class_3\x18\x05 \x01(\rH\x04\x88\x01\x01\x12\x18\n\x0bpfc_class_4\x18\x06 \x01(\rH\x05\x88\x01\x01\x12\x18\n\x0bpfc_class_5\x18\x07 \x01(\rH\x06\x88\x01\x01\x12\x18\n\x0bpfc_class_6\x18\x08 \x01(\rH\x07\x88\x01\x01\x12\x18\n\x0bpfc_class_7\x18\t \x01(\rH\x08\x88\x01\x01\x42\x0c\n\n_pfc_delayB\x0e\n\x0c_pfc_class_0B\x0e\n\x0c_pfc_class_1B\x0e\n\x0c_pfc_class_2B\x0e\n\x0c_pfc_class_3B\x0e\n\x0c_pfc_class_4B\x0e\n\x0c_pfc_class_5B\x0e\n\x0c_pfc_class_6B\x0e\n\x0c_pfc_class_7\"\xa1\x02\n\x07\x43\x61pture\x12\x12\n\nport_names\x18\x01 \x03(\t\x12#\n\x07\x66ilters\x18\x02 \x03(\x0b\x32\x12.otg.CaptureFilter\x12\x16\n\toverwrite\x18\x03 \x01(\x08H\x00\x88\x01\x01\x12\x18\n\x0bpacket_size\x18\x04 \x01(\rH\x01\x88\x01\x01\x12-\n\x06\x66ormat\x18\x05 \x01(\x0e\x32\x18.otg.Capture.Format.EnumH\x02\x88\x01\x01\x12\x11\n\x04name\x18\x06 \x01(\tH\x03\x88\x01\x01\x1a\x37\n\x06\x46ormat\"-\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\x08\n\x04pcap\x10\x01\x12\n\n\x06pcapng\x10\x02\x42\x0c\n\n_overwriteB\x0e\n\x0c_packet_sizeB\t\n\x07_formatB\x07\n\x05_name\"\xd6\x02\n\rCaptureFilter\x12\x33\n\x06\x63hoice\x18\x01 \x01(\x0e\x32\x1e.otg.CaptureFilter.Choice.EnumH\x00\x88\x01\x01\x12\"\n\x06\x63ustom\x18\x02 \x01(\x0b\x32\x12.otg.CaptureCustom\x12&\n\x08\x65thernet\x18\x03 \x01(\x0b\x32\x14.otg.CaptureEthernet\x12\x1e\n\x04vlan\x18\x04 \x01(\x0b\x32\x10.otg.CaptureVlan\x12\x1e\n\x04ipv4\x18\x05 \x01(\x0b\x32\x10.otg.CaptureIpv4\x12\x1e\n\x04ipv6\x18\x06 \x01(\x0b\x32\x10.otg.CaptureIpv6\x1aY\n\x06\x43hoice\"O\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\n\n\x06\x63ustom\x10\x01\x12\x0c\n\x08\x65thernet\x10\x02\x12\x08\n\x04vlan\x10\x03\x12\x08\n\x04ipv4\x10\x04\x12\x08\n\x04ipv6\x10\x05\x42\t\n\x07_choice\"\xb1\x01\n\rCaptureCustom\x12\x13\n\x06offset\x18\x01 \x01(\rH\x00\x88\x01\x01\x12\x17\n\nbit_length\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x12\n\x05value\x18\x03 \x01(\tH\x02\x88\x01\x01\x12\x11\n\x04mask\x18\x04 \x01(\tH\x03\x88\x01\x01\x12\x13\n\x06negate\x18\x05 \x01(\x08H\x04\x88\x01\x01\x42\t\n\x07_offsetB\r\n\x0b_bit_lengthB\x08\n\x06_valueB\x07\n\x05_maskB\t\n\x07_negate\"h\n\x0c\x43\x61ptureField\x12\x12\n\x05value\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x11\n\x04mask\x18\x02 \x01(\tH\x01\x88\x01\x01\x12\x13\n\x06negate\x18\x03 \x01(\x08H\x02\x88\x01\x01\x42\x08\n\x06_valueB\x07\n\x05_maskB\t\n\x07_negate\"\x9e\x01\n\x0f\x43\x61ptureEthernet\x12\x1e\n\x03src\x18\x01 \x01(\x0b\x32\x11.otg.CaptureField\x12\x1e\n\x03\x64st\x18\x02 \x01(\x0b\x32\x11.otg.CaptureField\x12%\n\nether_type\x18\x03 \x01(\x0b\x32\x11.otg.CaptureField\x12$\n\tpfc_queue\x18\x04 \x01(\x0b\x32\x11.otg.CaptureField\"\x96\x01\n\x0b\x43\x61ptureVlan\x12#\n\x08priority\x18\x01 \x01(\x0b\x32\x11.otg.CaptureField\x12\x1e\n\x03\x63\x66i\x18\x02 \x01(\x0b\x32\x11.otg.CaptureField\x12\x1d\n\x02id\x18\x03 \x01(\x0b\x32\x11.otg.CaptureField\x12#\n\x08protocol\x18\x04 \x01(\x0b\x32\x11.otg.CaptureField\"\xb4\x04\n\x0b\x43\x61ptureIpv4\x12\"\n\x07version\x18\x01 \x01(\x0b\x32\x11.otg.CaptureField\x12(\n\rheader_length\x18\x02 \x01(\x0b\x32\x11.otg.CaptureField\x12#\n\x08priority\x18\x03 \x01(\x0b\x32\x11.otg.CaptureField\x12\'\n\x0ctotal_length\x18\x04 \x01(\x0b\x32\x11.otg.CaptureField\x12)\n\x0eidentification\x18\x05 \x01(\x0b\x32\x11.otg.CaptureField\x12#\n\x08reserved\x18\x06 \x01(\x0b\x32\x11.otg.CaptureField\x12(\n\rdont_fragment\x18\x07 \x01(\x0b\x32\x11.otg.CaptureField\x12)\n\x0emore_fragments\x18\x08 \x01(\x0b\x32\x11.otg.CaptureField\x12*\n\x0f\x66ragment_offset\x18\t \x01(\x0b\x32\x11.otg.CaptureField\x12\'\n\x0ctime_to_live\x18\n \x01(\x0b\x32\x11.otg.CaptureField\x12#\n\x08protocol\x18\x0b \x01(\x0b\x32\x11.otg.CaptureField\x12*\n\x0fheader_checksum\x18\x0c \x01(\x0b\x32\x11.otg.CaptureField\x12\x1e\n\x03src\x18\r \x01(\x0b\x32\x11.otg.CaptureField\x12\x1e\n\x03\x64st\x18\x0e \x01(\x0b\x32\x11.otg.CaptureField\"\xbb\x02\n\x0b\x43\x61ptureIpv6\x12\"\n\x07version\x18\x01 \x01(\x0b\x32\x11.otg.CaptureField\x12(\n\rtraffic_class\x18\x02 \x01(\x0b\x32\x11.otg.CaptureField\x12%\n\nflow_label\x18\x03 \x01(\x0b\x32\x11.otg.CaptureField\x12)\n\x0epayload_length\x18\x04 \x01(\x0b\x32\x11.otg.CaptureField\x12&\n\x0bnext_header\x18\x05 \x01(\x0b\x32\x11.otg.CaptureField\x12$\n\thop_limit\x18\x06 \x01(\x0b\x32\x11.otg.CaptureField\x12\x1e\n\x03src\x18\x07 \x01(\x0b\x32\x11.otg.CaptureField\x12\x1e\n\x03\x64st\x18\x08 \x01(\x0b\x32\x11.otg.CaptureField\"\xb6\x02\n\x06\x44\x65vice\x12&\n\tethernets\x18\x01 \x03(\x0b\x32\x13.otg.DeviceEthernet\x12/\n\x0eipv4_loopbacks\x18\x02 \x03(\x0b\x32\x17.otg.DeviceIpv4Loopback\x12/\n\x0eipv6_loopbacks\x18\x03 \x03(\x0b\x32\x17.otg.DeviceIpv6Loopback\x12#\n\x04isis\x18\x04 \x01(\x0b\x32\x15.otg.DeviceIsisRouter\x12!\n\x03\x62gp\x18\x05 \x01(\x0b\x32\x14.otg.DeviceBgpRouter\x12\x1f\n\x05vxlan\x18\x06 \x01(\x0b\x32\x10.otg.DeviceVxlan\x12\x11\n\x04name\x18\x07 \x01(\tH\x00\x88\x01\x01\x12\x1d\n\x04rsvp\x18\x08 \x01(\x0b\x32\x0f.otg.DeviceRsvpB\x07\n\x05_name\"A\n\x0fProtocolOptions\x12\x1b\n\x0e\x61uto_start_all\x18\x01 \x01(\x08H\x00\x88\x01\x01\x42\x11\n\x0f_auto_start_all\"\xf2\x02\n\x10\x44\x65viceIsisRouter\x12.\n\x08instance\x18\x01 \x01(\x0b\x32\x1c.otg.DeviceIsisMultiInstance\x12\x16\n\tsystem_id\x18\x02 \x01(\tH\x00\x88\x01\x01\x12&\n\ninterfaces\x18\x03 \x03(\x0b\x32\x12.otg.IsisInterface\x12\x1d\n\x05\x62\x61sic\x18\x04 \x01(\x0b\x32\x0e.otg.IsisBasic\x12#\n\x08\x61\x64vanced\x18\x05 \x01(\x0b\x32\x11.otg.IsisAdvanced\x12,\n\x0brouter_auth\x18\x06 \x01(\x0b\x32\x17.otg.IsisAuthentication\x12(\n\tv4_routes\x18\x07 \x03(\x0b\x32\x15.otg.IsisV4RouteRange\x12(\n\tv6_routes\x18\x08 \x03(\x0b\x32\x15.otg.IsisV6RouteRange\x12\x11\n\x04name\x18\t \x01(\tH\x01\x88\x01\x01\x42\x0c\n\n_system_idB\x07\n\x05_name\"B\n\x17\x44\x65viceIsisMultiInstance\x12\x10\n\x03iid\x18\x01 \x01(\rH\x00\x88\x01\x01\x12\r\n\x05itids\x18\x02 \x03(\rB\x06\n\x04_iid\"\x91\x06\n\rIsisInterface\x12\x15\n\x08\x65th_name\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x13\n\x06metric\x18\x02 \x01(\rH\x01\x88\x01\x01\x12>\n\x0cnetwork_type\x18\x03 \x01(\x0e\x32#.otg.IsisInterface.NetworkType.EnumH\x02\x88\x01\x01\x12:\n\nlevel_type\x18\x04 \x01(\x0e\x32!.otg.IsisInterface.LevelType.EnumH\x03\x88\x01\x01\x12,\n\x0bl1_settings\x18\x05 \x01(\x0b\x32\x17.otg.IsisInterfaceLevel\x12,\n\x0bl2_settings\x18\x06 \x01(\x0b\x32\x17.otg.IsisInterfaceLevel\x12\'\n\x12multi_topology_ids\x18\x07 \x03(\x0b\x32\x0b.otg.IsisMT\x12-\n\x13traffic_engineering\x18\x08 \x03(\x0b\x32\x10.otg.LinkStateTE\x12\x38\n\x0e\x61uthentication\x18\t \x01(\x0b\x32 .otg.IsisInterfaceAuthentication\x12,\n\x08\x61\x64vanced\x18\n \x01(\x0b\x32\x1a.otg.IsisInterfaceAdvanced\x12\x39\n\x0flink_protection\x18\x0b \x01(\x0b\x32 .otg.IsisInterfaceLinkProtection\x12\x13\n\x0bsrlg_values\x18\x0c \x03(\r\x12\x11\n\x04name\x18\r \x01(\tH\x04\x88\x01\x01\x1aI\n\x0bNetworkType\":\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\r\n\tbroadcast\x10\x01\x12\x12\n\x0epoint_to_point\x10\x02\x1aM\n\tLevelType\"@\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\x0b\n\x07level_1\x10\x01\x12\x0b\n\x07level_2\x10\x02\x12\r\n\tlevel_1_2\x10\x03\x42\x0b\n\t_eth_nameB\t\n\x07_metricB\x0f\n\r_network_typeB\r\n\x0b_level_typeB\x07\n\x05_name\"\x96\x01\n\x12IsisInterfaceLevel\x12\x15\n\x08priority\x18\x01 \x01(\rH\x00\x88\x01\x01\x12\x1b\n\x0ehello_interval\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x1a\n\rdead_interval\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x0b\n\t_priorityB\x11\n\x0f_hello_intervalB\x10\n\x0e_dead_interval\"P\n\x06IsisMT\x12\x12\n\x05mt_id\x18\x01 \x01(\rH\x00\x88\x01\x01\x12\x18\n\x0blink_metric\x18\x02 \x01(\rH\x01\x88\x01\x01\x42\x08\n\x06_mt_idB\x0e\n\x0c_link_metric\"\xa4\x02\n\x0bLinkStateTE\x12!\n\x14\x61\x64ministrative_group\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x19\n\x0cmetric_level\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x19\n\x0cmax_bandwith\x18\x03 \x01(\rH\x02\x88\x01\x01\x12%\n\x18max_reservable_bandwidth\x18\x04 \x01(\rH\x03\x88\x01\x01\x12=\n\x13priority_bandwidths\x18\x05 \x01(\x0b\x32 .otg.LinkStatepriorityBandwidthsB\x17\n\x15_administrative_groupB\x0f\n\r_metric_levelB\x0f\n\r_max_bandwithB\x1b\n\x19_max_reservable_bandwidth\"\xed\x01\n\x1bLinkStatepriorityBandwidths\x12\x10\n\x03pb0\x18\x01 \x01(\rH\x00\x88\x01\x01\x12\x10\n\x03pb1\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x10\n\x03pb2\x18\x03 \x01(\rH\x02\x88\x01\x01\x12\x10\n\x03pb3\x18\x04 \x01(\rH\x03\x88\x01\x01\x12\x10\n\x03pb4\x18\x05 \x01(\rH\x04\x88\x01\x01\x12\x10\n\x03pb5\x18\x06 \x01(\rH\x05\x88\x01\x01\x12\x10\n\x03pb6\x18\x07 \x01(\rH\x06\x88\x01\x01\x12\x10\n\x03pb7\x18\x08 \x01(\rH\x07\x88\x01\x01\x42\x06\n\x04_pb0B\x06\n\x04_pb1B\x06\n\x04_pb2B\x06\n\x04_pb3B\x06\n\x04_pb4B\x06\n\x04_pb5B\x06\n\x04_pb6B\x06\n\x04_pb7\"\xed\x01\n\x1bIsisInterfaceAuthentication\x12\x46\n\tauth_type\x18\x01 \x01(\x0e\x32..otg.IsisInterfaceAuthentication.AuthType.EnumH\x00\x88\x01\x01\x12\x10\n\x03md5\x18\x02 \x01(\tH\x01\x88\x01\x01\x12\x15\n\x08password\x18\x03 \x01(\tH\x02\x88\x01\x01\x1a:\n\x08\x41uthType\".\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\x07\n\x03md5\x10\x01\x12\x0c\n\x08password\x10\x02\x42\x0c\n\n_auth_typeB\x06\n\x04_md5B\x0b\n\t_password\"\xd3\x02\n\x15IsisInterfaceAdvanced\x12\x1c\n\x0f\x61uto_adjust_mtu\x18\x01 \x01(\x08H\x00\x88\x01\x01\x12\x1d\n\x10\x61uto_adjust_area\x18\x02 \x01(\x08H\x01\x88\x01\x01\x12,\n\x1f\x61uto_adjust_supported_protocols\x18\x03 \x01(\x08H\x02\x88\x01\x01\x12\"\n\x15\x65nable_3way_handshake\x18\x04 \x01(\x08H\x03\x88\x01\x01\x12&\n\x19p2p_hellos_to_unicast_mac\x18\x05 \x01(\x08H\x04\x88\x01\x01\x42\x12\n\x10_auto_adjust_mtuB\x13\n\x11_auto_adjust_areaB\"\n _auto_adjust_supported_protocolsB\x18\n\x16_enable_3way_handshakeB\x1c\n\x1a_p2p_hellos_to_unicast_mac\"\xf9\x02\n\x1bIsisInterfaceLinkProtection\x12\x1a\n\rextra_traffic\x18\x01 \x01(\x08H\x00\x88\x01\x01\x12\x18\n\x0bunprotected\x18\x02 \x01(\x08H\x01\x88\x01\x01\x12\x13\n\x06shared\x18\x03 \x01(\x08H\x02\x88\x01\x01\x12\x1d\n\x10\x64\x65\x64icated_1_to_1\x18\x04 \x01(\x08H\x03\x88\x01\x01\x12\x1f\n\x12\x64\x65\x64icated_1_plus_1\x18\x05 \x01(\x08H\x04\x88\x01\x01\x12\x15\n\x08\x65nhanced\x18\x06 \x01(\x08H\x05\x88\x01\x01\x12\x18\n\x0breserved_40\x18\x07 \x01(\x08H\x06\x88\x01\x01\x12\x18\n\x0breserved_80\x18\x08 \x01(\x08H\x07\x88\x01\x01\x42\x10\n\x0e_extra_trafficB\x0e\n\x0c_unprotectedB\t\n\x07_sharedB\x13\n\x11_dedicated_1_to_1B\x15\n\x13_dedicated_1_plus_1B\x0b\n\t_enhancedB\x0e\n\x0c_reserved_40B\x0e\n\x0c_reserved_80\"\xd5\x01\n\tIsisBasic\x12\x1e\n\x11ipv4_te_router_id\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x15\n\x08hostname\x18\x02 \x01(\tH\x01\x88\x01\x01\x12\x1f\n\x12\x65nable_wide_metric\x18\x03 \x01(\x08H\x02\x88\x01\x01\x12\x1f\n\x12learned_lsp_filter\x18\x04 \x01(\x08H\x03\x88\x01\x01\x42\x14\n\x12_ipv4_te_router_idB\x0b\n\t_hostnameB\x15\n\x13_enable_wide_metricB\x15\n\x13_learned_lsp_filter\"\x8a\x04\n\x0cIsisAdvanced\x12!\n\x14\x65nable_hello_padding\x18\x01 \x01(\x08H\x00\x88\x01\x01\x12\x1f\n\x12max_area_addresses\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x16\n\x0e\x61rea_addresses\x18\x03 \x03(\t\x12\x1d\n\x10lsp_refresh_rate\x18\x04 \x01(\rH\x02\x88\x01\x01\x12\x19\n\x0clsp_lifetime\x18\x05 \x01(\rH\x03\x88\x01\x01\x12\x1a\n\rpsnp_interval\x18\x06 \x01(\rH\x04\x88\x01\x01\x12\x1a\n\rcsnp_interval\x18\x07 \x01(\rH\x05\x88\x01\x01\x12\x19\n\x0cmax_lsp_size\x18\x08 \x01(\rH\x06\x88\x01\x01\x12*\n\x1dlsp_mgroup_min_trans_interval\x18\t \x01(\rH\x07\x88\x01\x01\x12 \n\x13\x65nable_attached_bit\x18\n \x01(\x08H\x08\x88\x01\x01\x42\x17\n\x15_enable_hello_paddingB\x15\n\x13_max_area_addressesB\x13\n\x11_lsp_refresh_rateB\x0f\n\r_lsp_lifetimeB\x10\n\x0e_psnp_intervalB\x10\n\x0e_csnp_intervalB\x0f\n\r_max_lsp_sizeB \n\x1e_lsp_mgroup_min_trans_intervalB\x16\n\x14_enable_attached_bit\"\xae\x01\n\x12IsisAuthentication\x12\x1f\n\x12ignore_receive_md5\x18\x01 \x01(\x08H\x00\x88\x01\x01\x12.\n\tarea_auth\x18\x02 \x01(\x0b\x32\x1b.otg.IsisAuthenticationBase\x12\x30\n\x0b\x64omain_auth\x18\x03 \x01(\x0b\x32\x1b.otg.IsisAuthenticationBaseB\x15\n\x13_ignore_receive_md5\"\xe3\x01\n\x16IsisAuthenticationBase\x12\x41\n\tauth_type\x18\x01 \x01(\x0e\x32).otg.IsisAuthenticationBase.AuthType.EnumH\x00\x88\x01\x01\x12\x10\n\x03md5\x18\x02 \x01(\tH\x01\x88\x01\x01\x12\x15\n\x08password\x18\x03 \x01(\tH\x02\x88\x01\x01\x1a:\n\x08\x41uthType\".\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\x07\n\x03md5\x10\x01\x12\x0c\n\x08password\x10\x02\x42\x0c\n\n_auth_typeB\x06\n\x04_md5B\x0b\n\t_password\"\xd8\x04\n\x10IsisV4RouteRange\x12&\n\taddresses\x18\x01 \x03(\x0b\x32\x13.otg.V4RouteAddress\x12\x18\n\x0blink_metric\x18\x02 \x01(\rH\x00\x88\x01\x01\x12?\n\x0borigin_type\x18\x03 \x01(\x0e\x32%.otg.IsisV4RouteRange.OriginType.EnumH\x01\x88\x01\x01\x12O\n\x13redistribution_type\x18\x04 \x01(\x0e\x32-.otg.IsisV4RouteRange.RedistributionType.EnumH\x02\x88\x01\x01\x12\x11\n\x04name\x18\x05 \x01(\tH\x03\x88\x01\x01\x12 \n\x13prefix_attr_enabled\x18\x06 \x01(\x08H\x04\x88\x01\x01\x12\x13\n\x06x_flag\x18\x07 \x01(\x08H\x05\x88\x01\x01\x12\x13\n\x06r_flag\x18\x08 \x01(\x08H\x06\x88\x01\x01\x12\x13\n\x06n_flag\x18\t \x01(\x08H\x07\x88\x01\x01\x1a\x41\n\nOriginType\"3\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\x0c\n\x08internal\x10\x01\x12\x0c\n\x08\x65xternal\x10\x02\x1a?\n\x12RedistributionType\")\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\x06\n\x02up\x10\x01\x12\x08\n\x04\x64own\x10\x02\x42\x0e\n\x0c_link_metricB\x0e\n\x0c_origin_typeB\x16\n\x14_redistribution_typeB\x07\n\x05_nameB\x16\n\x14_prefix_attr_enabledB\t\n\x07_x_flagB\t\n\x07_r_flagB\t\n\x07_n_flag\"\x8c\x01\n\x0eV4RouteAddress\x12\x14\n\x07\x61\x64\x64ress\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x13\n\x06prefix\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x12\n\x05\x63ount\x18\x03 \x01(\rH\x02\x88\x01\x01\x12\x11\n\x04step\x18\x04 \x01(\rH\x03\x88\x01\x01\x42\n\n\x08_addressB\t\n\x07_prefixB\x08\n\x06_countB\x07\n\x05_step\"\x8c\x01\n\x0eV6RouteAddress\x12\x14\n\x07\x61\x64\x64ress\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x13\n\x06prefix\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x12\n\x05\x63ount\x18\x03 \x01(\rH\x02\x88\x01\x01\x12\x11\n\x04step\x18\x04 \x01(\rH\x03\x88\x01\x01\x42\n\n\x08_addressB\t\n\x07_prefixB\x08\n\x06_countB\x07\n\x05_step\"\x8d\x01\n\x0fMACRouteAddress\x12\x14\n\x07\x61\x64\x64ress\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x13\n\x06prefix\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x12\n\x05\x63ount\x18\x03 \x01(\rH\x02\x88\x01\x01\x12\x11\n\x04step\x18\x04 \x01(\rH\x03\x88\x01\x01\x42\n\n\x08_addressB\t\n\x07_prefixB\x08\n\x06_countB\x07\n\x05_step\"\xd8\x04\n\x10IsisV6RouteRange\x12&\n\taddresses\x18\x01 \x03(\x0b\x32\x13.otg.V6RouteAddress\x12\x18\n\x0blink_metric\x18\x02 \x01(\rH\x00\x88\x01\x01\x12?\n\x0borigin_type\x18\x03 \x01(\x0e\x32%.otg.IsisV6RouteRange.OriginType.EnumH\x01\x88\x01\x01\x12O\n\x13redistribution_type\x18\x04 \x01(\x0e\x32-.otg.IsisV6RouteRange.RedistributionType.EnumH\x02\x88\x01\x01\x12\x11\n\x04name\x18\x05 \x01(\tH\x03\x88\x01\x01\x12 \n\x13prefix_attr_enabled\x18\x06 \x01(\x08H\x04\x88\x01\x01\x12\x13\n\x06x_flag\x18\x07 \x01(\x08H\x05\x88\x01\x01\x12\x13\n\x06r_flag\x18\x08 \x01(\x08H\x06\x88\x01\x01\x12\x13\n\x06n_flag\x18\t \x01(\x08H\x07\x88\x01\x01\x1a\x41\n\nOriginType\"3\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\x0c\n\x08internal\x10\x01\x12\x0c\n\x08\x65xternal\x10\x02\x1a?\n\x12RedistributionType\")\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\x06\n\x02up\x10\x01\x12\x08\n\x04\x64own\x10\x02\x42\x0e\n\x0c_link_metricB\x0e\n\x0c_origin_typeB\x16\n\x14_redistribution_typeB\x07\n\x05_nameB\x16\n\x14_prefix_attr_enabledB\t\n\x07_x_flagB\t\n\x07_r_flagB\t\n\x07_n_flag\"\x93\x01\n\x0f\x44\x65viceBgpRouter\x12\x16\n\trouter_id\x18\x01 \x01(\tH\x00\x88\x01\x01\x12,\n\x0fipv4_interfaces\x18\x02 \x03(\x0b\x32\x13.otg.BgpV4Interface\x12,\n\x0fipv6_interfaces\x18\x03 \x03(\x0b\x32\x13.otg.BgpV6InterfaceB\x0c\n\n_router_id\"\x90\x02\n\x1b\x44\x65viceBgpMessageHeaderError\x12\x43\n\x07subcode\x18\x01 \x01(\x0e\x32-.otg.DeviceBgpMessageHeaderError.Subcode.EnumH\x00\x88\x01\x01\x1a\x9f\x01\n\x07Subcode\"\x93\x01\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12.\n*connection_not_synchronized_code1_subcode1\x10\x01\x12%\n!bad_message_length_code1_subcode2\x10\x02\x12#\n\x1f\x62\x61\x64_message_type_code1_subcode3\x10\x03\x42\n\n\x08_subcode\"\xaa\x03\n\x19\x44\x65viceBgpOpenMessageError\x12\x41\n\x07subcode\x18\x01 \x01(\x0e\x32+.otg.DeviceBgpOpenMessageError.Subcode.EnumH\x00\x88\x01\x01\x1a\xbd\x02\n\x07Subcode\"\xb1\x02\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12-\n)unsupported_version_number_code2_subcode1\x10\x01\x12 \n\x1c\x65rror_peer_as_code2_subcode2\x10\x02\x12\x1f\n\x1b\x65rror_bgp_id_code2_subcode3\x10\x03\x12\x31\n-unsupported_optional_parameter_code2_subcode4\x10\x04\x12\x1e\n\x1a\x61uth_failed_code2_subcode5\x10\x05\x12(\n$unsupported_hold_time_code2_subcode6\x10\x06\x12)\n%unsupported_capability_code2_subcode7\x10\x07\x42\n\n\x08_subcode\"\xdc\x04\n\x1b\x44\x65viceBgpUpdateMessageError\x12\x43\n\x07subcode\x18\x01 \x01(\x0e\x32-.otg.DeviceBgpUpdateMessageError.Subcode.EnumH\x00\x88\x01\x01\x1a\xeb\x03\n\x07Subcode\"\xdf\x03\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12(\n$malformed_attrib_list_code3_subcode1\x10\x01\x12\x30\n,unrecognized_wellknown_attrib_code3_subcode2\x10\x02\x12+\n\'wellknown_attrib_missing_code3_subcode3\x10\x03\x12%\n!attrib_flags_error_code3_subcode4\x10\x04\x12&\n\"attrib_length_error_code3_subcode5\x10\x05\x12(\n$invalid_origin_attrib_code3_subcode6\x10\x06\x12\"\n\x1e\x61s_routing_loop_code3_subcode7\x10\x07\x12&\n\"invalid_nhop_attrib_code3_subcode8\x10\x08\x12(\n$error_optional_attrib_code3_subcode9\x10\t\x12)\n%invalid_network_field_code3_subcode10\x10\n\x12#\n\x1f\x61\x62normal_aspath_code3_subcode11\x10\x0b\x42\n\n\x08_subcode\"\x1b\n\x19\x44\x65viceBgpHoldTimerExpired\"\"\n DeviceBgpFiniteStateMachineError\"\xe3\x03\n\x13\x44\x65viceBgpCeaseError\x12;\n\x07subcode\x18\x01 \x01(\x0e\x32%.otg.DeviceBgpCeaseError.Subcode.EnumH\x00\x88\x01\x01\x1a\x82\x03\n\x07Subcode\"\xf6\x02\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12,\n(max_number_prefix_reached_code6_subcode1\x10\x01\x12!\n\x1d\x61\x64min_shutdown_code6_subcode2\x10\x02\x12\x1f\n\x1bpeer_deleted_code6_subcode3\x10\x03\x12\x1e\n\x1a\x61\x64min_reset_code6_subcode4\x10\x04\x12$\n connection_reject_code6_subcode5\x10\x05\x12\'\n#other_config_changes_code6_subcode6\x10\x06\x12\x32\n.connection_collision_resolution_code6_subcode7\x10\x07\x12#\n\x1fout_of_resources_code6_subcode8\x10\x08\x12#\n\x1f\x62\x66\x64_session_down_code6_subcode9\x10\tB\n\n\x08_subcode\"T\n\x14\x44\x65viceBgpCustomError\x12\x11\n\x04\x63ode\x18\x01 \x01(\rH\x00\x88\x01\x01\x12\x14\n\x07subcode\x18\x02 \x01(\rH\x01\x88\x01\x01\x42\x07\n\x05_codeB\n\n\x08_subcode\"\xb2\x06\n\tBgpV4Peer\x12\x19\n\x0cpeer_address\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x39\n\x16\x65vpn_ethernet_segments\x18\x02 \x03(\x0b\x32\x19.otg.BgpV4EthernetSegment\x12\x30\n\x07\x61s_type\x18\x03 \x01(\x0e\x32\x1a.otg.BgpV4Peer.AsType.EnumH\x01\x88\x01\x01\x12\x16\n\tas_number\x18\x04 \x01(\rH\x02\x88\x01\x01\x12?\n\x0f\x61s_number_width\x18\x05 \x01(\x0e\x32!.otg.BgpV4Peer.AsNumberWidth.EnumH\x03\x88\x01\x01\x12\"\n\x08\x61\x64vanced\x18\x06 \x01(\x0b\x32\x10.otg.BgpAdvanced\x12&\n\ncapability\x18\x07 \x01(\x0b\x32\x12.otg.BgpCapability\x12\x44\n\x1alearned_information_filter\x18\x08 \x01(\x0b\x32 .otg.BgpLearnedInformationFilter\x12\'\n\tv4_routes\x18\t \x03(\x0b\x32\x14.otg.BgpV4RouteRange\x12\'\n\tv6_routes\x18\n \x03(\x0b\x32\x14.otg.BgpV6RouteRange\x12.\n\x10v4_srte_policies\x18\x0b \x03(\x0b\x32\x14.otg.BgpSrteV4Policy\x12.\n\x10v6_srte_policies\x18\x0c \x03(\x0b\x32\x14.otg.BgpSrteV6Policy\x12\x11\n\x04name\x18\r \x01(\tH\x04\x88\x01\x01\x12\x31\n\x10graceful_restart\x18\x0e \x01(\x0b\x32\x17.otg.BgpGracefulRestart\x1a\x35\n\x06\x41sType\"+\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\x08\n\x04ibgp\x10\x01\x12\x08\n\x04\x65\x62gp\x10\x02\x1a;\n\rAsNumberWidth\"*\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\x07\n\x03two\x10\x01\x12\x08\n\x04\x66our\x10\x02\x42\x0f\n\r_peer_addressB\n\n\x08_as_typeB\x0c\n\n_as_numberB\x12\n\x10_as_number_widthB\x07\n\x05_name\"U\n\x0e\x42gpV4Interface\x12\x16\n\tipv4_name\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x1d\n\x05peers\x18\x02 \x03(\x0b\x32\x0e.otg.BgpV4PeerB\x0c\n\n_ipv4_name\"\xf0\x03\n\x14\x42gpV4EthernetSegment\x12\x36\n\x0b\x64\x66_election\x18\x01 \x01(\x0b\x32!.otg.BgpEthernetSegmentDfElection\x12 \n\x04\x65vis\x18\x02 \x03(\x0b\x32\x12.otg.BgpV4EvpnEvis\x12\x10\n\x03\x65si\x18\x03 \x01(\tH\x00\x88\x01\x01\x12\x43\n\x0b\x61\x63tive_mode\x18\x04 \x01(\x0e\x32).otg.BgpV4EthernetSegment.ActiveMode.EnumH\x01\x88\x01\x01\x12\x16\n\tesi_label\x18\x05 \x01(\rH\x02\x88\x01\x01\x12\'\n\x08\x61\x64vanced\x18\x06 \x01(\x0b\x32\x15.otg.BgpRouteAdvanced\x12&\n\x0b\x63ommunities\x18\x07 \x03(\x0b\x32\x11.otg.BgpCommunity\x12-\n\x0f\x65xt_communities\x18\x08 \x03(\x0b\x32\x14.otg.BgpExtCommunity\x12\x1f\n\x07\x61s_path\x18\t \x01(\x0b\x32\x0e.otg.BgpAsPath\x1aH\n\nActiveMode\":\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\x11\n\rsingle_active\x10\x01\x12\x0e\n\nall_active\x10\x02\x42\x06\n\x04_esiB\x0e\n\x0c_active_modeB\x0c\n\n_esi_label\"N\n\x1c\x42gpEthernetSegmentDfElection\x12\x1b\n\x0e\x65lection_timer\x18\x01 \x01(\rH\x00\x88\x01\x01\x42\x11\n\x0f_election_timer\"\xda\x03\n\x10\x42gpRouteAdvanced\x12-\n include_multi_exit_discriminator\x18\x03 \x01(\x08H\x00\x88\x01\x01\x12%\n\x18multi_exit_discriminator\x18\x01 \x01(\rH\x01\x88\x01\x01\x12\x1b\n\x0einclude_origin\x18\x04 \x01(\x08H\x02\x88\x01\x01\x12\x36\n\x06origin\x18\x02 \x01(\x0e\x32!.otg.BgpRouteAdvanced.Origin.EnumH\x03\x88\x01\x01\x12%\n\x18include_local_preference\x18\x05 \x01(\x08H\x04\x88\x01\x01\x12\x1d\n\x10local_preference\x18\x06 \x01(\rH\x05\x88\x01\x01\x1a\x43\n\x06Origin\"9\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\x07\n\x03igp\x10\x01\x12\x07\n\x03\x65gp\x10\x02\x12\x0e\n\nincomplete\x10\x03\x42#\n!_include_multi_exit_discriminatorB\x1b\n\x19_multi_exit_discriminatorB\x11\n\x0f_include_originB\t\n\x07_originB\x1b\n\x19_include_local_preferenceB\x13\n\x11_local_preference\"\xa4\x02\n\x0c\x42gpCommunity\x12.\n\x04type\x18\x01 \x01(\x0e\x32\x1b.otg.BgpCommunity.Type.EnumH\x00\x88\x01\x01\x12\x16\n\tas_number\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x16\n\tas_custom\x18\x03 \x01(\rH\x02\x88\x01\x01\x1a\x8e\x01\n\x04Type\"\x85\x01\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\x14\n\x10manual_as_number\x10\x01\x12\r\n\tno_export\x10\x02\x12\x11\n\rno_advertised\x10\x03\x12\x17\n\x13no_export_subconfed\x10\x04\x12\x0e\n\nllgr_stale\x10\x05\x12\x0b\n\x07no_llgr\x10\x06\x42\x07\n\x05_typeB\x0c\n\n_as_numberB\x0c\n\n_as_custom\"\xf9\x03\n\x0f\x42gpExtCommunity\x12\x31\n\x04type\x18\x01 \x01(\x0e\x32\x1e.otg.BgpExtCommunity.Type.EnumH\x00\x88\x01\x01\x12\x37\n\x07subtype\x18\x02 \x01(\x0e\x32!.otg.BgpExtCommunity.Subtype.EnumH\x01\x88\x01\x01\x12\x12\n\x05value\x18\x03 \x01(\tH\x02\x88\x01\x01\x1a\xbc\x01\n\x04Type\"\xb3\x01\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\x1b\n\x17\x61\x64ministrator_as_2octet\x10\x01\x12\x1e\n\x1a\x61\x64ministrator_ipv4_address\x10\x02\x12\x1b\n\x17\x61\x64ministrator_as_4octet\x10\x03\x12\n\n\x06opaque\x10\x04\x12\x08\n\x04\x65vpn\x10\x05\x12*\n&administrator_as_2octet_link_bandwidth\x10\x06\x1a\x87\x01\n\x07Subtype\"|\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\x10\n\x0croute_target\x10\x01\x12\n\n\x06origin\x10\x02\x12\x16\n\x12\x65xtended_bandwidth\x10\x03\x12\t\n\x05\x63olor\x10\x04\x12\x11\n\rencapsulation\x10\x05\x12\x0f\n\x0bmac_address\x10\x06\x42\x07\n\x05_typeB\n\n\x08_subtypeB\x08\n\x06_value\"\xbe\x02\n\tBgpAsPath\x12\x37\n\x0b\x61s_set_mode\x18\x01 \x01(\x0e\x32\x1d.otg.BgpAsPath.AsSetMode.EnumH\x00\x88\x01\x01\x12\'\n\x08segments\x18\x02 \x03(\x0b\x32\x15.otg.BgpAsPathSegment\x1a\xbe\x01\n\tAsSetMode\"\xb0\x01\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\x1b\n\x17\x64o_not_include_local_as\x10\x01\x12\x12\n\x0einclude_as_seq\x10\x02\x12\x12\n\x0einclude_as_set\x10\x03\x12\x19\n\x15include_as_confed_seq\x10\x04\x12\x19\n\x15include_as_confed_set\x10\x05\x12\x1c\n\x18prepend_to_first_segment\x10\x06\x42\x0e\n\x0c_as_set_mode\"\xc2\x01\n\x10\x42gpAsPathSegment\x12\x32\n\x04type\x18\x01 \x01(\x0e\x32\x1f.otg.BgpAsPathSegment.Type.EnumH\x00\x88\x01\x01\x12\x12\n\nas_numbers\x18\x02 \x03(\r\x1a]\n\x04Type\"U\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\n\n\x06\x61s_seq\x10\x01\x12\n\n\x06\x61s_set\x10\x02\x12\x11\n\ras_confed_seq\x10\x03\x12\x11\n\ras_confed_set\x10\x04\x42\x07\n\x05_type\"\xa8\x01\n\rBgpV4EvpnEvis\x12\x33\n\x06\x63hoice\x18\x01 \x01(\x0e\x32\x1e.otg.BgpV4EvpnEvis.Choice.EnumH\x00\x88\x01\x01\x12%\n\tevi_vxlan\x18\x02 \x01(\x0b\x32\x12.otg.BgpV4EviVxlan\x1a\x30\n\x06\x43hoice\"&\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\r\n\tevi_vxlan\x10\x01\x42\t\n\x07_choice\"\xe3\x05\n\rBgpV4EviVxlan\x12<\n\x11\x62roadcast_domains\x18\x01 \x03(\x0b\x32!.otg.BgpV4EviVxlanBroadcastDomain\x12\x46\n\x10replication_type\x18\x02 \x01(\x0e\x32\'.otg.BgpV4EviVxlan.ReplicationType.EnumH\x00\x88\x01\x01\x12\x17\n\npmsi_label\x18\x03 \x01(\rH\x01\x88\x01\x01\x12\x15\n\x08\x61\x64_label\x18\x04 \x01(\rH\x02\x88\x01\x01\x12\x37\n\x13route_distinguisher\x18\x05 \x01(\x0b\x32\x1a.otg.BgpRouteDistinguisher\x12\x30\n\x13route_target_export\x18\x06 \x03(\x0b\x32\x13.otg.BgpRouteTarget\x12\x30\n\x13route_target_import\x18\x07 \x03(\x0b\x32\x13.otg.BgpRouteTarget\x12\x33\n\x16l3_route_target_export\x18\x08 \x03(\x0b\x32\x13.otg.BgpRouteTarget\x12\x33\n\x16l3_route_target_import\x18\t \x03(\x0b\x32\x13.otg.BgpRouteTarget\x12\'\n\x08\x61\x64vanced\x18\n \x01(\x0b\x32\x15.otg.BgpRouteAdvanced\x12&\n\x0b\x63ommunities\x18\x0b \x03(\x0b\x32\x11.otg.BgpCommunity\x12-\n\x0f\x65xt_communities\x18\x0c \x03(\x0b\x32\x14.otg.BgpExtCommunity\x12\x1f\n\x07\x61s_path\x18\r \x01(\x0b\x32\x0e.otg.BgpAsPath\x1a\x43\n\x0fReplicationType\"0\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\x17\n\x13ingress_replication\x10\x01\x42\x13\n\x11_replication_typeB\r\n\x0b_pmsi_labelB\x0b\n\t_ad_label\"\xb4\x01\n\x1c\x42gpV4EviVxlanBroadcastDomain\x12*\n\rcmac_ip_range\x18\x01 \x03(\x0b\x32\x13.otg.BgpCMacIpRange\x12\x1c\n\x0f\x65thernet_tag_id\x18\x02 \x01(\rH\x00\x88\x01\x01\x12\x1f\n\x12vlan_aware_service\x18\x03 \x01(\x08H\x01\x88\x01\x01\x42\x12\n\x10_ethernet_tag_idB\x15\n\x13_vlan_aware_service\"\xd2\x03\n\x0e\x42gpCMacIpRange\x12+\n\rmac_addresses\x18\x01 \x01(\x0b\x32\x14.otg.MACRouteAddress\x12\x12\n\x05l2vni\x18\x02 \x01(\rH\x00\x88\x01\x01\x12+\n\x0eipv4_addresses\x18\x03 \x01(\x0b\x32\x13.otg.V4RouteAddress\x12+\n\x0eipv6_addresses\x18\x04 \x01(\x0b\x32\x13.otg.V6RouteAddress\x12\x12\n\x05l3vni\x18\x05 \x01(\rH\x01\x88\x01\x01\x12$\n\x17include_default_gateway\x18\x06 \x01(\x08H\x02\x88\x01\x01\x12\'\n\x08\x61\x64vanced\x18\x07 \x01(\x0b\x32\x15.otg.BgpRouteAdvanced\x12&\n\x0b\x63ommunities\x18\x08 \x03(\x0b\x32\x11.otg.BgpCommunity\x12-\n\x0f\x65xt_communities\x18\t \x03(\x0b\x32\x14.otg.BgpExtCommunity\x12\x1f\n\x07\x61s_path\x18\n \x01(\x0b\x32\x0e.otg.BgpAsPath\x12\x11\n\x04name\x18\x0b \x01(\tH\x03\x88\x01\x01\x42\x08\n\x06_l2vniB\x08\n\x06_l3vniB\x1a\n\x18_include_default_gatewayB\x07\n\x05_name\"\x98\x02\n\x15\x42gpRouteDistinguisher\x12<\n\x07rd_type\x18\x01 \x01(\x0e\x32&.otg.BgpRouteDistinguisher.RdType.EnumH\x00\x88\x01\x01\x12#\n\x16\x61uto_config_rd_ip_addr\x18\x02 \x01(\x08H\x01\x88\x01\x01\x12\x15\n\x08rd_value\x18\x03 \x01(\tH\x02\x88\x01\x01\x1aQ\n\x06RdType\"G\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\r\n\tas_2octet\x10\x01\x12\x10\n\x0cipv4_address\x10\x02\x12\r\n\tas_4octet\x10\x03\x42\n\n\x08_rd_typeB\x19\n\x17_auto_config_rd_ip_addrB\x0b\n\t_rd_value\"\xca\x01\n\x0e\x42gpRouteTarget\x12\x35\n\x07rt_type\x18\x01 \x01(\x0e\x32\x1f.otg.BgpRouteTarget.RtType.EnumH\x00\x88\x01\x01\x12\x15\n\x08rt_value\x18\x02 \x01(\tH\x01\x88\x01\x01\x1aQ\n\x06RtType\"G\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\r\n\tas_2octet\x10\x01\x12\x10\n\x0cipv4_address\x10\x02\x12\r\n\tas_4octet\x10\x03\x42\n\n\x08_rt_typeB\x0b\n\t_rt_value\"\x83\x03\n\x0b\x42gpAdvanced\x12\x1f\n\x12hold_time_interval\x18\x01 \x01(\rH\x00\x88\x01\x01\x12 \n\x13keep_alive_interval\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x1c\n\x0fupdate_interval\x18\x03 \x01(\rH\x02\x88\x01\x01\x12\x19\n\x0ctime_to_live\x18\x04 \x01(\rH\x03\x88\x01\x01\x12\x14\n\x07md5_key\x18\x05 \x01(\tH\x04\x88\x01\x01\x12\x19\n\x0cpassive_mode\x18\x06 \x01(\x08H\x05\x88\x01\x01\x12\x18\n\x0blisten_port\x18\x07 \x01(\rH\x06\x88\x01\x01\x12\x1a\n\rneighbor_port\x18\x08 \x01(\rH\x07\x88\x01\x01\x42\x15\n\x13_hold_time_intervalB\x16\n\x14_keep_alive_intervalB\x12\n\x10_update_intervalB\x0f\n\r_time_to_liveB\n\n\x08_md5_keyB\x0f\n\r_passive_modeB\x0e\n\x0c_listen_portB\x10\n\x0e_neighbor_port\"\x91\n\n\rBgpCapability\x12\x19\n\x0cipv4_unicast\x18\x01 \x01(\x08H\x00\x88\x01\x01\x12\x1b\n\x0eipv4_multicast\x18\x02 \x01(\x08H\x01\x88\x01\x01\x12\x19\n\x0cipv6_unicast\x18\x03 \x01(\x08H\x02\x88\x01\x01\x12\x1b\n\x0eipv6_multicast\x18\x04 \x01(\x08H\x03\x88\x01\x01\x12\x11\n\x04vpls\x18\x05 \x01(\x08H\x04\x88\x01\x01\x12\x1a\n\rroute_refresh\x18\x06 \x01(\x08H\x05\x88\x01\x01\x12\x1d\n\x10route_constraint\x18\x07 \x01(\x08H\x06\x88\x01\x01\x12\x1f\n\x12link_state_non_vpn\x18\x08 \x01(\x08H\x07\x88\x01\x01\x12\x1b\n\x0elink_state_vpn\x18\t \x01(\x08H\x08\x88\x01\x01\x12\x11\n\x04\x65vpn\x18\n \x01(\x08H\t\x88\x01\x01\x12\'\n\x1a\x65xtended_next_hop_encoding\x18\x0b \x01(\x08H\n\x88\x01\x01\x12\x1f\n\x12ipv4_multicast_vpn\x18\x0c \x01(\x08H\x0b\x88\x01\x01\x12\x1a\n\ripv4_mpls_vpn\x18\r \x01(\x08H\x0c\x88\x01\x01\x12\x15\n\x08ipv4_mdt\x18\x0e \x01(\x08H\r\x88\x01\x01\x12$\n\x17ipv4_multicast_mpls_vpn\x18\x0f \x01(\x08H\x0e\x88\x01\x01\x12#\n\x16ipv4_unicast_flow_spec\x18\x10 \x01(\x08H\x0f\x88\x01\x01\x12\x1e\n\x11ipv4_sr_te_policy\x18\x11 \x01(\x08H\x10\x88\x01\x01\x12\"\n\x15ipv4_unicast_add_path\x18\x12 \x01(\x08H\x11\x88\x01\x01\x12\x1f\n\x12ipv6_multicast_vpn\x18\x13 \x01(\x08H\x12\x88\x01\x01\x12\x1a\n\ripv6_mpls_vpn\x18\x14 \x01(\x08H\x13\x88\x01\x01\x12\x15\n\x08ipv6_mdt\x18\x15 \x01(\x08H\x14\x88\x01\x01\x12$\n\x17ipv6_multicast_mpls_vpn\x18\x16 \x01(\x08H\x15\x88\x01\x01\x12#\n\x16ipv6_unicast_flow_spec\x18\x17 \x01(\x08H\x16\x88\x01\x01\x12\x1e\n\x11ipv6_sr_te_policy\x18\x18 \x01(\x08H\x17\x88\x01\x01\x12\"\n\x15ipv6_unicast_add_path\x18\x19 \x01(\x08H\x18\x88\x01\x01\x42\x0f\n\r_ipv4_unicastB\x11\n\x0f_ipv4_multicastB\x0f\n\r_ipv6_unicastB\x11\n\x0f_ipv6_multicastB\x07\n\x05_vplsB\x10\n\x0e_route_refreshB\x13\n\x11_route_constraintB\x15\n\x13_link_state_non_vpnB\x11\n\x0f_link_state_vpnB\x07\n\x05_evpnB\x1d\n\x1b_extended_next_hop_encodingB\x15\n\x13_ipv4_multicast_vpnB\x10\n\x0e_ipv4_mpls_vpnB\x0b\n\t_ipv4_mdtB\x1a\n\x18_ipv4_multicast_mpls_vpnB\x19\n\x17_ipv4_unicast_flow_specB\x14\n\x12_ipv4_sr_te_policyB\x18\n\x16_ipv4_unicast_add_pathB\x15\n\x13_ipv6_multicast_vpnB\x10\n\x0e_ipv6_mpls_vpnB\x0b\n\t_ipv6_mdtB\x1a\n\x18_ipv6_multicast_mpls_vpnB\x19\n\x17_ipv6_unicast_flow_specB\x14\n\x12_ipv6_sr_te_policyB\x18\n\x16_ipv6_unicast_add_path\"\x91\x01\n\x1b\x42gpLearnedInformationFilter\x12 \n\x13unicast_ipv4_prefix\x18\x01 \x01(\x08H\x00\x88\x01\x01\x12 \n\x13unicast_ipv6_prefix\x18\x02 \x01(\x08H\x01\x88\x01\x01\x42\x16\n\x14_unicast_ipv4_prefixB\x16\n\x14_unicast_ipv6_prefix\"\x94\x06\n\x0f\x42gpV4RouteRange\x12&\n\taddresses\x18\x01 \x03(\x0b\x32\x13.otg.V4RouteAddress\x12\x41\n\rnext_hop_mode\x18\x02 \x01(\x0e\x32%.otg.BgpV4RouteRange.NextHopMode.EnumH\x00\x88\x01\x01\x12P\n\x15next_hop_address_type\x18\x03 \x01(\x0e\x32,.otg.BgpV4RouteRange.NextHopAddressType.EnumH\x01\x88\x01\x01\x12\"\n\x15next_hop_ipv4_address\x18\x04 \x01(\tH\x02\x88\x01\x01\x12\"\n\x15next_hop_ipv6_address\x18\x05 \x01(\tH\x03\x88\x01\x01\x12\'\n\x08\x61\x64vanced\x18\x06 \x01(\x0b\x32\x15.otg.BgpRouteAdvanced\x12&\n\x0b\x63ommunities\x18\x07 \x03(\x0b\x32\x11.otg.BgpCommunity\x12\x1f\n\x07\x61s_path\x18\x08 \x01(\x0b\x32\x0e.otg.BgpAsPath\x12!\n\x08\x61\x64\x64_path\x18\t \x01(\x0b\x32\x0f.otg.BgpAddPath\x12\x11\n\x04name\x18\n \x01(\tH\x04\x88\x01\x01\x12-\n\x0f\x65xt_communities\x18\x0b \x03(\x0b\x32\x14.otg.BgpExtCommunity\x12\x37\n\x14\x65xtended_communities\x18\x0c \x03(\x0b\x32\x19.otg.BgpExtendedCommunity\x1a@\n\x0bNextHopMode\"1\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\x0c\n\x08local_ip\x10\x01\x12\n\n\x06manual\x10\x02\x1a\x41\n\x12NextHopAddressType\"+\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\x08\n\x04ipv4\x10\x01\x12\x08\n\x04ipv6\x10\x02\x42\x10\n\x0e_next_hop_modeB\x18\n\x16_next_hop_address_typeB\x18\n\x16_next_hop_ipv4_addressB\x18\n\x16_next_hop_ipv6_addressB\x07\n\x05_name\".\n\nBgpAddPath\x12\x14\n\x07path_id\x18\x01 \x01(\rH\x00\x88\x01\x01\x42\n\n\x08_path_id\"\xf3\x06\n\x14\x42gpExtendedCommunity\x12:\n\x06\x63hoice\x18\x01 \x01(\x0e\x32%.otg.BgpExtendedCommunity.Choice.EnumH\x00\x88\x01\x01\x12R\n\x19transitive_2octet_as_type\x18\x02 \x01(\x0b\x32/.otg.BgpExtendedCommunityTransitive2OctetAsType\x12X\n\x1ctransitive_ipv4_address_type\x18\x03 \x01(\x0b\x32\x32.otg.BgpExtendedCommunityTransitiveIpv4AddressType\x12R\n\x19transitive_4octet_as_type\x18\x04 \x01(\x0b\x32/.otg.BgpExtendedCommunityTransitive4OctetAsType\x12M\n\x16transitive_opaque_type\x18\x05 \x01(\x0b\x32-.otg.BgpExtendedCommunityTransitiveOpaqueType\x12I\n\x14transitive_evpn_type\x18\x06 \x01(\x0b\x32+.otg.BgpExtendedCommunityTransitiveEvpnType\x12Y\n\x1dnon_transitive_2octet_as_type\x18\x07 \x01(\x0b\x32\x32.otg.BgpExtendedCommunityNonTransitive2OctetAsType\x12\x33\n\x06\x63ustom\x18\x08 \x01(\x0b\x32#.otg.BgpExtendedCommunityCustomType\x1a\xe7\x01\n\x06\x43hoice\"\xdc\x01\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\x1d\n\x19transitive_2octet_as_type\x10\x01\x12 \n\x1ctransitive_ipv4_address_type\x10\x02\x12\x1d\n\x19transitive_4octet_as_type\x10\x03\x12\x1a\n\x16transitive_opaque_type\x10\x04\x12\x18\n\x14transitive_evpn_type\x10\x05\x12!\n\x1dnon_transitive_2octet_as_type\x10\x06\x12\n\n\x06\x63ustom\x10\x07\x42\t\n\x07_choice\"\x9f\x01\n5BgpExtendedCommunityTransitive2OctetAsTypeRouteTarget\x12\x1c\n\x0fglobal_2byte_as\x18\x01 \x01(\rH\x00\x88\x01\x01\x12\x1e\n\x11local_4byte_admin\x18\x02 \x01(\rH\x01\x88\x01\x01\x42\x12\n\x10_global_2byte_asB\x14\n\x12_local_4byte_admin\"\x9f\x01\n5BgpExtendedCommunityTransitive2OctetAsTypeRouteOrigin\x12\x1c\n\x0fglobal_2byte_as\x18\x01 \x01(\rH\x00\x88\x01\x01\x12\x1e\n\x11local_4byte_admin\x18\x02 \x01(\rH\x01\x88\x01\x01\x42\x12\n\x10_global_2byte_asB\x14\n\x12_local_4byte_admin\"\x94\x03\n*BgpExtendedCommunityTransitive2OctetAsType\x12P\n\x06\x63hoice\x18\x01 \x01(\x0e\x32;.otg.BgpExtendedCommunityTransitive2OctetAsType.Choice.EnumH\x00\x88\x01\x01\x12X\n\x14route_target_subtype\x18\x02 \x01(\x0b\x32:.otg.BgpExtendedCommunityTransitive2OctetAsTypeRouteTarget\x12X\n\x14route_origin_subtype\x18\x03 \x01(\x0b\x32:.otg.BgpExtendedCommunityTransitive2OctetAsTypeRouteOrigin\x1aU\n\x06\x43hoice\"K\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\x18\n\x14route_target_subtype\x10\x01\x12\x18\n\x14route_origin_subtype\x10\x02\x42\t\n\x07_choice\"\xa6\x01\n8BgpExtendedCommunityTransitiveIpv4AddressTypeRouteOrigin\x12\x1e\n\x11global_ipv4_admin\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x1e\n\x11local_2byte_admin\x18\x02 \x01(\rH\x01\x88\x01\x01\x42\x14\n\x12_global_ipv4_adminB\x14\n\x12_local_2byte_admin\"\xa6\x01\n8BgpExtendedCommunityTransitiveIpv4AddressTypeRouteTarget\x12\x1e\n\x11global_ipv4_admin\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x1e\n\x11local_2byte_admin\x18\x02 \x01(\rH\x01\x88\x01\x01\x42\x14\n\x12_global_ipv4_adminB\x14\n\x12_local_2byte_admin\"\xa0\x03\n-BgpExtendedCommunityTransitiveIpv4AddressType\x12S\n\x06\x63hoice\x18\x01 \x01(\x0e\x32>.otg.BgpExtendedCommunityTransitiveIpv4AddressType.Choice.EnumH\x00\x88\x01\x01\x12[\n\x14route_target_subtype\x18\x02 \x01(\x0b\x32=.otg.BgpExtendedCommunityTransitiveIpv4AddressTypeRouteTarget\x12[\n\x14route_origin_subtype\x18\x03 \x01(\x0b\x32=.otg.BgpExtendedCommunityTransitiveIpv4AddressTypeRouteOrigin\x1aU\n\x06\x43hoice\"K\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\x18\n\x14route_target_subtype\x10\x01\x12\x18\n\x14route_origin_subtype\x10\x02\x42\t\n\x07_choice\"\x9f\x01\n5BgpExtendedCommunityTransitive4OctetAsTypeRouteTarget\x12\x1c\n\x0fglobal_4byte_as\x18\x01 \x01(\rH\x00\x88\x01\x01\x12\x1e\n\x11local_2byte_admin\x18\x02 \x01(\rH\x01\x88\x01\x01\x42\x12\n\x10_global_4byte_asB\x14\n\x12_local_2byte_admin\"\x9f\x01\n5BgpExtendedCommunityTransitive4OctetAsTypeRouteOrigin\x12\x1c\n\x0fglobal_4byte_as\x18\x01 \x01(\rH\x00\x88\x01\x01\x12\x1e\n\x11local_2byte_admin\x18\x02 \x01(\rH\x01\x88\x01\x01\x42\x12\n\x10_global_4byte_asB\x14\n\x12_local_2byte_admin\"\x94\x03\n*BgpExtendedCommunityTransitive4OctetAsType\x12P\n\x06\x63hoice\x18\x01 \x01(\x0e\x32;.otg.BgpExtendedCommunityTransitive4OctetAsType.Choice.EnumH\x00\x88\x01\x01\x12X\n\x14route_target_subtype\x18\x02 \x01(\x0b\x32:.otg.BgpExtendedCommunityTransitive4OctetAsTypeRouteTarget\x12X\n\x14route_origin_subtype\x18\x03 \x01(\x0b\x32:.otg.BgpExtendedCommunityTransitive4OctetAsTypeRouteOrigin\x1aU\n\x06\x43hoice\"K\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\x18\n\x14route_target_subtype\x10\x01\x12\x18\n\x14route_origin_subtype\x10\x02\x42\t\n\x07_choice\"k\n-BgpExtendedCommunityTransitiveOpaqueTypeColor\x12\x12\n\x05\x66lags\x18\x01 \x01(\rH\x00\x88\x01\x01\x12\x12\n\x05\x63olor\x18\x02 \x01(\rH\x01\x88\x01\x01\x42\x08\n\x06_flagsB\x08\n\x06_color\"\x85\x01\n5BgpExtendedCommunityTransitiveOpaqueTypeEncapsulation\x12\x15\n\x08reserved\x18\x01 \x01(\rH\x00\x88\x01\x01\x12\x18\n\x0btunnel_type\x18\x02 \x01(\rH\x01\x88\x01\x01\x42\x0b\n\t_reservedB\x0e\n\x0c_tunnel_type\"\xfc\x02\n(BgpExtendedCommunityTransitiveOpaqueType\x12N\n\x06\x63hoice\x18\x01 \x01(\x0e\x32\x39.otg.BgpExtendedCommunityTransitiveOpaqueType.Choice.EnumH\x00\x88\x01\x01\x12I\n\rcolor_subtype\x18\x02 \x01(\x0b\x32\x32.otg.BgpExtendedCommunityTransitiveOpaqueTypeColor\x12Y\n\x15\x65ncapsulation_subtype\x18\x03 \x01(\x0b\x32:.otg.BgpExtendedCommunityTransitiveOpaqueTypeEncapsulation\x1aO\n\x06\x43hoice\"E\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\x11\n\rcolor_subtype\x10\x01\x12\x19\n\x15\x65ncapsulation_subtype\x10\x02\x42\t\n\x07_choice\"Y\n/BgpExtendedCommunityTransitiveEvpnTypeRouterMac\x12\x17\n\nrouter_mac\x18\x01 \x01(\tH\x00\x88\x01\x01\x42\r\n\x0b_router_mac\"\x8e\x02\n&BgpExtendedCommunityTransitiveEvpnType\x12L\n\x06\x63hoice\x18\x01 \x01(\x0e\x32\x37.otg.BgpExtendedCommunityTransitiveEvpnType.Choice.EnumH\x00\x88\x01\x01\x12P\n\x12router_mac_subtype\x18\x02 \x01(\x0b\x32\x34.otg.BgpExtendedCommunityTransitiveEvpnTypeRouterMac\x1a\x39\n\x06\x43hoice\"/\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\x16\n\x12router_mac_subtype\x10\x01\x42\t\n\x07_choice\"\x94\x01\n:BgpExtendedCommunityNonTransitive2OctetAsTypeLinkBandwidth\x12\x1c\n\x0fglobal_2byte_as\x18\x01 \x01(\rH\x00\x88\x01\x01\x12\x16\n\tbandwidth\x18\x02 \x01(\x02H\x01\x88\x01\x01\x42\x12\n\x10_global_2byte_asB\x0c\n\n_bandwidth\"\xaf\x02\n-BgpExtendedCommunityNonTransitive2OctetAsType\x12S\n\x06\x63hoice\x18\x01 \x01(\x0e\x32>.otg.BgpExtendedCommunityNonTransitive2OctetAsType.Choice.EnumH\x00\x88\x01\x01\x12_\n\x16link_bandwidth_subtype\x18\x02 \x01(\x0b\x32?.otg.BgpExtendedCommunityNonTransitive2OctetAsTypeLinkBandwidth\x1a=\n\x06\x43hoice\"3\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\x1a\n\x16link_bandwidth_subtype\x10\x01\x42\t\n\x07_choice\"\xa4\x01\n\x1e\x42gpExtendedCommunityCustomType\x12\x1b\n\x0e\x63ommunity_type\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x1e\n\x11\x63ommunity_subtype\x18\x02 \x01(\tH\x01\x88\x01\x01\x12\x12\n\x05value\x18\x03 \x01(\tH\x02\x88\x01\x01\x42\x11\n\x0f_community_typeB\x14\n\x12_community_subtypeB\x08\n\x06_value\"\x94\x06\n\x0f\x42gpV6RouteRange\x12&\n\taddresses\x18\x01 \x03(\x0b\x32\x13.otg.V6RouteAddress\x12\x41\n\rnext_hop_mode\x18\x02 \x01(\x0e\x32%.otg.BgpV6RouteRange.NextHopMode.EnumH\x00\x88\x01\x01\x12P\n\x15next_hop_address_type\x18\x03 \x01(\x0e\x32,.otg.BgpV6RouteRange.NextHopAddressType.EnumH\x01\x88\x01\x01\x12\"\n\x15next_hop_ipv4_address\x18\x04 \x01(\tH\x02\x88\x01\x01\x12\"\n\x15next_hop_ipv6_address\x18\x05 \x01(\tH\x03\x88\x01\x01\x12\'\n\x08\x61\x64vanced\x18\x06 \x01(\x0b\x32\x15.otg.BgpRouteAdvanced\x12&\n\x0b\x63ommunities\x18\x07 \x03(\x0b\x32\x11.otg.BgpCommunity\x12\x1f\n\x07\x61s_path\x18\x08 \x01(\x0b\x32\x0e.otg.BgpAsPath\x12!\n\x08\x61\x64\x64_path\x18\t \x01(\x0b\x32\x0f.otg.BgpAddPath\x12\x11\n\x04name\x18\n \x01(\tH\x04\x88\x01\x01\x12-\n\x0f\x65xt_communities\x18\x0b \x03(\x0b\x32\x14.otg.BgpExtCommunity\x12\x37\n\x14\x65xtended_communities\x18\x0c \x03(\x0b\x32\x19.otg.BgpExtendedCommunity\x1a@\n\x0bNextHopMode\"1\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\x0c\n\x08local_ip\x10\x01\x12\n\n\x06manual\x10\x02\x1a\x41\n\x12NextHopAddressType\"+\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\x08\n\x04ipv4\x10\x01\x12\x08\n\x04ipv6\x10\x02\x42\x10\n\x0e_next_hop_modeB\x18\n\x16_next_hop_address_typeB\x18\n\x16_next_hop_ipv4_addressB\x18\n\x16_next_hop_ipv6_addressB\x07\n\x05_name\"\xfb\x06\n\x0f\x42gpSrteV4Policy\x12\x1a\n\rdistinguisher\x18\x01 \x01(\rH\x00\x88\x01\x01\x12\x12\n\x05\x63olor\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x1a\n\ripv4_endpoint\x18\x03 \x01(\tH\x02\x88\x01\x01\x12\x41\n\rnext_hop_mode\x18\x04 \x01(\x0e\x32%.otg.BgpSrteV4Policy.NextHopMode.EnumH\x03\x88\x01\x01\x12P\n\x15next_hop_address_type\x18\x05 \x01(\x0e\x32,.otg.BgpSrteV4Policy.NextHopAddressType.EnumH\x04\x88\x01\x01\x12\"\n\x15next_hop_ipv4_address\x18\x06 \x01(\tH\x05\x88\x01\x01\x12\"\n\x15next_hop_ipv6_address\x18\x07 \x01(\tH\x06\x88\x01\x01\x12\'\n\x08\x61\x64vanced\x18\x08 \x01(\x0b\x32\x15.otg.BgpRouteAdvanced\x12!\n\x08\x61\x64\x64_path\x18\t \x01(\x0b\x32\x0f.otg.BgpAddPath\x12\x1f\n\x07\x61s_path\x18\n \x01(\x0b\x32\x0e.otg.BgpAsPath\x12&\n\x0b\x63ommunities\x18\x0b \x03(\x0b\x32\x11.otg.BgpCommunity\x12-\n\x0f\x65xt_communities\x18\x0c \x03(\x0b\x32\x14.otg.BgpExtCommunity\x12,\n\x0btunnel_tlvs\x18\r \x03(\x0b\x32\x17.otg.BgpSrteV4TunnelTlv\x12\x11\n\x04name\x18\x0e \x01(\tH\x07\x88\x01\x01\x12\x13\n\x06\x61\x63tive\x18\x0f \x01(\x08H\x08\x88\x01\x01\x1a@\n\x0bNextHopMode\"1\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\x0c\n\x08local_ip\x10\x01\x12\n\n\x06manual\x10\x02\x1a\x41\n\x12NextHopAddressType\"+\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\x08\n\x04ipv4\x10\x01\x12\x08\n\x04ipv6\x10\x02\x42\x10\n\x0e_distinguisherB\x08\n\x06_colorB\x10\n\x0e_ipv4_endpointB\x10\n\x0e_next_hop_modeB\x18\n\x16_next_hop_address_typeB\x18\n\x16_next_hop_ipv4_addressB\x18\n\x16_next_hop_ipv6_addressB\x07\n\x05_nameB\t\n\x07_active\"\xb6\x04\n\x12\x42gpSrteV4TunnelTlv\x12\x41\n\x17remote_endpoint_sub_tlv\x18\x01 \x01(\x0b\x32 .otg.BgpSrteRemoteEndpointSubTlv\x12.\n\rcolor_sub_tlv\x18\x02 \x01(\x0b\x32\x17.otg.BgpSrteColorSubTlv\x12\x32\n\x0f\x62inding_sub_tlv\x18\x03 \x01(\x0b\x32\x19.otg.BgpSrteBindingSubTlv\x12\x38\n\x12preference_sub_tlv\x18\x04 \x01(\x0b\x32\x1c.otg.BgpSrtePreferenceSubTlv\x12\x41\n\x17policy_priority_sub_tlv\x18\x05 \x01(\x0b\x32 .otg.BgpSrtePolicyPrioritySubTlv\x12\x39\n\x13policy_name_sub_tlv\x18\x06 \x01(\x0b\x32\x1c.otg.BgpSrtePolicyNameSubTlv\x12U\n\"explicit_null_label_policy_sub_tlv\x18\x07 \x01(\x0b\x32).otg.BgpSrteExplicitNullLabelPolicySubTlv\x12.\n\rsegment_lists\x18\x08 \x03(\x0b\x32\x17.otg.BgpSrteSegmentList\x12\x11\n\x04name\x18\t \x01(\tH\x00\x88\x01\x01\x12\x13\n\x06\x61\x63tive\x18\n \x01(\x08H\x01\x88\x01\x01\x42\x07\n\x05_nameB\t\n\x07_active\"\xbe\x02\n\x1b\x42gpSrteRemoteEndpointSubTlv\x12\x16\n\tas_number\x18\x01 \x01(\rH\x00\x88\x01\x01\x12P\n\x0e\x61\x64\x64ress_family\x18\x02 \x01(\x0e\x32\x33.otg.BgpSrteRemoteEndpointSubTlv.AddressFamily.EnumH\x01\x88\x01\x01\x12\x19\n\x0cipv4_address\x18\x03 \x01(\tH\x02\x88\x01\x01\x12\x19\n\x0cipv6_address\x18\x04 \x01(\tH\x03\x88\x01\x01\x1a<\n\rAddressFamily\"+\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\x08\n\x04ipv4\x10\x01\x12\x08\n\x04ipv6\x10\x02\x42\x0c\n\n_as_numberB\x11\n\x0f_address_familyB\x0f\n\r_ipv4_addressB\x0f\n\r_ipv6_address\"2\n\x12\x42gpSrteColorSubTlv\x12\x12\n\x05\x63olor\x18\x01 \x01(\tH\x00\x88\x01\x01\x42\x08\n\x06_color\"\xea\x02\n\x14\x42gpSrteBindingSubTlv\x12L\n\x10\x62inding_sid_type\x18\x01 \x01(\x0e\x32-.otg.BgpSrteBindingSubTlv.BindingSidType.EnumH\x00\x88\x01\x01\x12\x1b\n\x0e\x66our_octet_sid\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x15\n\x08ipv6_sid\x18\x03 \x01(\tH\x02\x88\x01\x01\x12\x13\n\x06s_flag\x18\x04 \x01(\x08H\x03\x88\x01\x01\x12\x13\n\x06i_flag\x18\x05 \x01(\x08H\x04\x88\x01\x01\x1a[\n\x0e\x42indingSidType\"I\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\x0e\n\nno_binding\x10\x01\x12\x12\n\x0e\x66our_octet_sid\x10\x02\x12\x0c\n\x08ipv6_sid\x10\x03\x42\x13\n\x11_binding_sid_typeB\x11\n\x0f_four_octet_sidB\x0b\n\t_ipv6_sidB\t\n\x07_s_flagB\t\n\x07_i_flag\"A\n\x17\x42gpSrtePreferenceSubTlv\x12\x17\n\npreference\x18\x01 \x01(\rH\x00\x88\x01\x01\x42\r\n\x0b_preference\"O\n\x1b\x42gpSrtePolicyPrioritySubTlv\x12\x1c\n\x0fpolicy_priority\x18\x01 \x01(\rH\x00\x88\x01\x01\x42\x12\n\x10_policy_priority\"C\n\x17\x42gpSrtePolicyNameSubTlv\x12\x18\n\x0bpolicy_name\x18\x01 \x01(\tH\x00\x88\x01\x01\x42\x0e\n\x0c_policy_name\"\xd6\x02\n$BgpSrteExplicitNullLabelPolicySubTlv\x12o\n\x1a\x65xplicit_null_label_policy\x18\x01 \x01(\x0e\x32\x46.otg.BgpSrteExplicitNullLabelPolicySubTlv.ExplicitNullLabelPolicy.EnumH\x00\x88\x01\x01\x1a\x9d\x01\n\x17\x45xplicitNullLabelPolicy\"\x81\x01\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\x11\n\rreserved_enlp\x10\x01\x12\x12\n\x0epush_ipv4_enlp\x10\x02\x12\x12\n\x0epush_ipv6_enlp\x10\x03\x12\x17\n\x13push_ipv4_ipv6_enlp\x10\x04\x12\x14\n\x10\x64o_not_push_enlp\x10\x05\x42\x1d\n\x1b_explicit_null_label_policy\"\x97\x01\n\x12\x42gpSrteSegmentList\x12\x13\n\x06weight\x18\x01 \x01(\rH\x00\x88\x01\x01\x12%\n\x08segments\x18\x02 \x03(\x0b\x32\x13.otg.BgpSrteSegment\x12\x11\n\x04name\x18\x03 \x01(\tH\x01\x88\x01\x01\x12\x13\n\x06\x61\x63tive\x18\x04 \x01(\x08H\x02\x88\x01\x01\x42\t\n\x07_weightB\x07\n\x05_nameB\t\n\x07_active\"\xdc\x06\n\x0e\x42gpSrteSegment\x12?\n\x0csegment_type\x18\x01 \x01(\x0e\x32$.otg.BgpSrteSegment.SegmentType.EnumH\x00\x88\x01\x01\x12.\n\x06type_a\x18\x02 \x01(\x0b\x32\x1e.otg.BgpSrteSegmentATypeSubTlv\x12.\n\x06type_b\x18\x03 \x01(\x0b\x32\x1e.otg.BgpSrteSegmentBTypeSubTlv\x12.\n\x06type_c\x18\x04 \x01(\x0b\x32\x1e.otg.BgpSrteSegmentCTypeSubTlv\x12.\n\x06type_d\x18\x05 \x01(\x0b\x32\x1e.otg.BgpSrteSegmentDTypeSubTlv\x12.\n\x06type_e\x18\x06 \x01(\x0b\x32\x1e.otg.BgpSrteSegmentETypeSubTlv\x12.\n\x06type_f\x18\x07 \x01(\x0b\x32\x1e.otg.BgpSrteSegmentFTypeSubTlv\x12.\n\x06type_g\x18\x08 \x01(\x0b\x32\x1e.otg.BgpSrteSegmentGTypeSubTlv\x12.\n\x06type_h\x18\t \x01(\x0b\x32\x1e.otg.BgpSrteSegmentHTypeSubTlv\x12.\n\x06type_i\x18\n \x01(\x0b\x32\x1e.otg.BgpSrteSegmentITypeSubTlv\x12.\n\x06type_j\x18\x0b \x01(\x0b\x32\x1e.otg.BgpSrteSegmentJTypeSubTlv\x12.\n\x06type_k\x18\x0c \x01(\x0b\x32\x1e.otg.BgpSrteSegmentKTypeSubTlv\x12\x11\n\x04name\x18\r \x01(\tH\x01\x88\x01\x01\x12\x13\n\x06\x61\x63tive\x18\x0e \x01(\x08H\x02\x88\x01\x01\x1a\xab\x01\n\x0bSegmentType\"\x9b\x01\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\n\n\x06type_a\x10\x01\x12\n\n\x06type_b\x10\x02\x12\n\n\x06type_c\x10\x03\x12\n\n\x06type_d\x10\x04\x12\n\n\x06type_e\x10\x05\x12\n\n\x06type_f\x10\x06\x12\n\n\x06type_g\x10\x07\x12\n\n\x06type_h\x10\x08\x12\n\n\x06type_i\x10\t\x12\n\n\x06type_j\x10\n\x12\n\n\x06type_k\x10\x0b\x42\x0f\n\r_segment_typeB\x07\n\x05_nameB\t\n\x07_active\"\x80\x01\n\x10\x42gpSrteSrMplsSid\x12\x12\n\x05label\x18\x01 \x01(\rH\x00\x88\x01\x01\x12\x0f\n\x02tc\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x12\n\x05s_bit\x18\x03 \x01(\x08H\x02\x88\x01\x01\x12\x10\n\x03ttl\x18\x04 \x01(\rH\x03\x88\x01\x01\x42\x08\n\x06_labelB\x05\n\x03_tcB\x08\n\x06_s_bitB\x06\n\x04_ttl\"\xca\x01\n*BgpSrteSRv6SIDEndpointBehaviorAndStructure\x12\x16\n\tlb_length\x18\x01 \x01(\rH\x00\x88\x01\x01\x12\x16\n\tln_length\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x18\n\x0b\x66unc_length\x18\x03 \x01(\rH\x02\x88\x01\x01\x12\x17\n\narg_length\x18\x04 \x01(\rH\x03\x88\x01\x01\x42\x0c\n\n_lb_lengthB\x0c\n\n_ln_lengthB\x0e\n\x0c_func_lengthB\r\n\x0b_arg_length\"\xa7\x01\n\x19\x42gpSrteSegmentATypeSubTlv\x12\x12\n\x05\x66lags\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x12\n\x05label\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x0f\n\x02tc\x18\x03 \x01(\rH\x02\x88\x01\x01\x12\x12\n\x05s_bit\x18\x04 \x01(\x08H\x03\x88\x01\x01\x12\x10\n\x03ttl\x18\x05 \x01(\rH\x04\x88\x01\x01\x42\x08\n\x06_flagsB\x08\n\x06_labelB\x05\n\x03_tcB\x08\n\x06_s_bitB\x06\n\x04_ttl\"\xb2\x01\n\x19\x42gpSrteSegmentBTypeSubTlv\x12\x12\n\x05\x66lags\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x15\n\x08srv6_sid\x18\x02 \x01(\tH\x01\x88\x01\x01\x12S\n\x1asrv6_sid_endpoint_behavior\x18\x03 \x01(\x0b\x32/.otg.BgpSrteSRv6SIDEndpointBehaviorAndStructureB\x08\n\x06_flagsB\x0b\n\t_srv6_sid\"\xc7\x01\n\x19\x42gpSrteSegmentCTypeSubTlv\x12\x12\n\x05\x66lags\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x19\n\x0csr_algorithm\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x1e\n\x11ipv4_node_address\x18\x03 \x01(\tH\x02\x88\x01\x01\x12*\n\x0bsr_mpls_sid\x18\x04 \x01(\x0b\x32\x15.otg.BgpSrteSrMplsSidB\x08\n\x06_flagsB\x0f\n\r_sr_algorithmB\x14\n\x12_ipv4_node_address\"\xc7\x01\n\x19\x42gpSrteSegmentDTypeSubTlv\x12\x12\n\x05\x66lags\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x19\n\x0csr_algorithm\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x1e\n\x11ipv6_node_address\x18\x03 \x01(\tH\x02\x88\x01\x01\x12*\n\x0bsr_mpls_sid\x18\x04 \x01(\x0b\x32\x15.otg.BgpSrteSrMplsSidB\x08\n\x06_flagsB\x0f\n\r_sr_algorithmB\x14\n\x12_ipv6_node_address\"\xd3\x01\n\x19\x42gpSrteSegmentETypeSubTlv\x12\x12\n\x05\x66lags\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x1f\n\x12local_interface_id\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x1e\n\x11ipv4_node_address\x18\x03 \x01(\tH\x02\x88\x01\x01\x12*\n\x0bsr_mpls_sid\x18\x04 \x01(\x0b\x32\x15.otg.BgpSrteSrMplsSidB\x08\n\x06_flagsB\x15\n\x13_local_interface_idB\x14\n\x12_ipv4_node_address\"\xd7\x01\n\x19\x42gpSrteSegmentFTypeSubTlv\x12\x12\n\x05\x66lags\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x1f\n\x12local_ipv4_address\x18\x02 \x01(\tH\x01\x88\x01\x01\x12 \n\x13remote_ipv4_address\x18\x03 \x01(\tH\x02\x88\x01\x01\x12*\n\x0bsr_mpls_sid\x18\x04 \x01(\x0b\x32\x15.otg.BgpSrteSrMplsSidB\x08\n\x06_flagsB\x15\n\x13_local_ipv4_addressB\x16\n\x14_remote_ipv4_address\"\xdd\x02\n\x19\x42gpSrteSegmentGTypeSubTlv\x12\x12\n\x05\x66lags\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x1f\n\x12local_interface_id\x18\x02 \x01(\rH\x01\x88\x01\x01\x12$\n\x17local_ipv6_node_address\x18\x03 \x01(\tH\x02\x88\x01\x01\x12 \n\x13remote_interface_id\x18\x04 \x01(\rH\x03\x88\x01\x01\x12%\n\x18remote_ipv6_node_address\x18\x05 \x01(\tH\x04\x88\x01\x01\x12*\n\x0bsr_mpls_sid\x18\x06 \x01(\x0b\x32\x15.otg.BgpSrteSrMplsSidB\x08\n\x06_flagsB\x15\n\x13_local_interface_idB\x1a\n\x18_local_ipv6_node_addressB\x16\n\x14_remote_interface_idB\x1b\n\x19_remote_ipv6_node_address\"\xd7\x01\n\x19\x42gpSrteSegmentHTypeSubTlv\x12\x12\n\x05\x66lags\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x1f\n\x12local_ipv6_address\x18\x02 \x01(\tH\x01\x88\x01\x01\x12 \n\x13remote_ipv6_address\x18\x03 \x01(\tH\x02\x88\x01\x01\x12*\n\x0bsr_mpls_sid\x18\x04 \x01(\x0b\x32\x15.otg.BgpSrteSrMplsSidB\x08\n\x06_flagsB\x15\n\x13_local_ipv6_addressB\x16\n\x14_remote_ipv6_address\"\xe8\x01\n\x19\x42gpSrteSegmentITypeSubTlv\x12\x12\n\x05\x66lags\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x1e\n\x11ipv6_node_address\x18\x02 \x01(\tH\x01\x88\x01\x01\x12\x15\n\x08srv6_sid\x18\x03 \x01(\tH\x02\x88\x01\x01\x12S\n\x1asrv6_sid_endpoint_behavior\x18\x04 \x01(\x0b\x32/.otg.BgpSrteSRv6SIDEndpointBehaviorAndStructureB\x08\n\x06_flagsB\x14\n\x12_ipv6_node_addressB\x0b\n\t_srv6_sid\"\xd6\x03\n\x19\x42gpSrteSegmentJTypeSubTlv\x12\x12\n\x05\x66lags\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x19\n\x0csr_algorithm\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x1f\n\x12local_interface_id\x18\x03 \x01(\rH\x02\x88\x01\x01\x12$\n\x17local_ipv6_node_address\x18\x04 \x01(\tH\x03\x88\x01\x01\x12 \n\x13remote_interface_id\x18\x05 \x01(\rH\x04\x88\x01\x01\x12%\n\x18remote_ipv6_node_address\x18\x06 \x01(\tH\x05\x88\x01\x01\x12\x15\n\x08srv6_sid\x18\x07 \x01(\tH\x06\x88\x01\x01\x12S\n\x1asrv6_sid_endpoint_behavior\x18\x08 \x01(\x0b\x32/.otg.BgpSrteSRv6SIDEndpointBehaviorAndStructureB\x08\n\x06_flagsB\x0f\n\r_sr_algorithmB\x15\n\x13_local_interface_idB\x1a\n\x18_local_ipv6_node_addressB\x16\n\x14_remote_interface_idB\x1b\n\x19_remote_ipv6_node_addressB\x0b\n\t_srv6_sid\"\xd0\x02\n\x19\x42gpSrteSegmentKTypeSubTlv\x12\x12\n\x05\x66lags\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x19\n\x0csr_algorithm\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x1f\n\x12local_ipv6_address\x18\x03 \x01(\tH\x02\x88\x01\x01\x12 \n\x13remote_ipv6_address\x18\x04 \x01(\tH\x03\x88\x01\x01\x12\x15\n\x08srv6_sid\x18\x05 \x01(\tH\x04\x88\x01\x01\x12S\n\x1asrv6_sid_endpoint_behavior\x18\x06 \x01(\x0b\x32/.otg.BgpSrteSRv6SIDEndpointBehaviorAndStructureB\x08\n\x06_flagsB\x0f\n\r_sr_algorithmB\x15\n\x13_local_ipv6_addressB\x16\n\x14_remote_ipv6_addressB\x0b\n\t_srv6_sid\"\xfa\x06\n\x0f\x42gpSrteV6Policy\x12\x1a\n\rdistinguisher\x18\x01 \x01(\rH\x00\x88\x01\x01\x12\x12\n\x05\x63olor\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x1a\n\ripv6_endpoint\x18\x03 \x01(\tH\x02\x88\x01\x01\x12\x41\n\rnext_hop_mode\x18\x04 \x01(\x0e\x32%.otg.BgpSrteV6Policy.NextHopMode.EnumH\x03\x88\x01\x01\x12P\n\x15next_hop_address_type\x18\x05 \x01(\x0e\x32,.otg.BgpSrteV6Policy.NextHopAddressType.EnumH\x04\x88\x01\x01\x12\"\n\x15next_hop_ipv4_address\x18\x06 \x01(\tH\x05\x88\x01\x01\x12\"\n\x15next_hop_ipv6_address\x18\x07 \x01(\tH\x06\x88\x01\x01\x12\'\n\x08\x61\x64vanced\x18\x08 \x01(\x0b\x32\x15.otg.BgpRouteAdvanced\x12!\n\x08\x61\x64\x64_path\x18\t \x01(\x0b\x32\x0f.otg.BgpAddPath\x12\x1f\n\x07\x61s_path\x18\n \x01(\x0b\x32\x0e.otg.BgpAsPath\x12&\n\x0b\x63ommunities\x18\x0b \x03(\x0b\x32\x11.otg.BgpCommunity\x12,\n\x0e\x65xtcommunities\x18\x0c \x03(\x0b\x32\x14.otg.BgpExtCommunity\x12,\n\x0btunnel_tlvs\x18\r \x03(\x0b\x32\x17.otg.BgpSrteV6TunnelTlv\x12\x11\n\x04name\x18\x0e \x01(\tH\x07\x88\x01\x01\x12\x13\n\x06\x61\x63tive\x18\x0f \x01(\x08H\x08\x88\x01\x01\x1a@\n\x0bNextHopMode\"1\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\x0c\n\x08local_ip\x10\x01\x12\n\n\x06manual\x10\x02\x1a\x41\n\x12NextHopAddressType\"+\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\x08\n\x04ipv4\x10\x01\x12\x08\n\x04ipv6\x10\x02\x42\x10\n\x0e_distinguisherB\x08\n\x06_colorB\x10\n\x0e_ipv6_endpointB\x10\n\x0e_next_hop_modeB\x18\n\x16_next_hop_address_typeB\x18\n\x16_next_hop_ipv4_addressB\x18\n\x16_next_hop_ipv6_addressB\x07\n\x05_nameB\t\n\x07_active\"\xb6\x04\n\x12\x42gpSrteV6TunnelTlv\x12\x41\n\x17remote_endpoint_sub_tlv\x18\x01 \x01(\x0b\x32 .otg.BgpSrteRemoteEndpointSubTlv\x12.\n\rcolor_sub_tlv\x18\x02 \x01(\x0b\x32\x17.otg.BgpSrteColorSubTlv\x12\x32\n\x0f\x62inding_sub_tlv\x18\x03 \x01(\x0b\x32\x19.otg.BgpSrteBindingSubTlv\x12\x38\n\x12preference_sub_tlv\x18\x04 \x01(\x0b\x32\x1c.otg.BgpSrtePreferenceSubTlv\x12\x41\n\x17policy_priority_sub_tlv\x18\x05 \x01(\x0b\x32 .otg.BgpSrtePolicyPrioritySubTlv\x12\x39\n\x13policy_name_sub_tlv\x18\x06 \x01(\x0b\x32\x1c.otg.BgpSrtePolicyNameSubTlv\x12U\n\"explicit_null_label_policy_sub_tlv\x18\x07 \x01(\x0b\x32).otg.BgpSrteExplicitNullLabelPolicySubTlv\x12.\n\rsegment_lists\x18\x08 \x03(\x0b\x32\x17.otg.BgpSrteSegmentList\x12\x11\n\x04name\x18\t \x01(\tH\x00\x88\x01\x01\x12\x13\n\x06\x61\x63tive\x18\n \x01(\x08H\x01\x88\x01\x01\x42\x07\n\x05_nameB\t\n\x07_active\"\xb8\x01\n\x12\x42gpGracefulRestart\x12\x16\n\tenable_gr\x18\x01 \x01(\x08H\x00\x88\x01\x01\x12\x19\n\x0crestart_time\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x18\n\x0b\x65nable_llgr\x18\x03 \x01(\x08H\x02\x88\x01\x01\x12\x17\n\nstale_time\x18\x04 \x01(\rH\x03\x88\x01\x01\x42\x0c\n\n_enable_grB\x0f\n\r_restart_timeB\x0e\n\x0c_enable_llgrB\r\n\x0b_stale_time\"\xe5\x06\n\tBgpV6Peer\x12\x19\n\x0cpeer_address\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x31\n\x0fsegment_routing\x18\x02 \x01(\x0b\x32\x18.otg.BgpV6SegmentRouting\x12\x39\n\x16\x65vpn_ethernet_segments\x18\x03 \x03(\x0b\x32\x19.otg.BgpV6EthernetSegment\x12\x30\n\x07\x61s_type\x18\x04 \x01(\x0e\x32\x1a.otg.BgpV6Peer.AsType.EnumH\x01\x88\x01\x01\x12\x16\n\tas_number\x18\x05 \x01(\rH\x02\x88\x01\x01\x12?\n\x0f\x61s_number_width\x18\x06 \x01(\x0e\x32!.otg.BgpV6Peer.AsNumberWidth.EnumH\x03\x88\x01\x01\x12\"\n\x08\x61\x64vanced\x18\x07 \x01(\x0b\x32\x10.otg.BgpAdvanced\x12&\n\ncapability\x18\x08 \x01(\x0b\x32\x12.otg.BgpCapability\x12\x44\n\x1alearned_information_filter\x18\t \x01(\x0b\x32 .otg.BgpLearnedInformationFilter\x12\'\n\tv4_routes\x18\n \x03(\x0b\x32\x14.otg.BgpV4RouteRange\x12\'\n\tv6_routes\x18\x0b \x03(\x0b\x32\x14.otg.BgpV6RouteRange\x12.\n\x10v4_srte_policies\x18\x0c \x03(\x0b\x32\x14.otg.BgpSrteV4Policy\x12.\n\x10v6_srte_policies\x18\r \x03(\x0b\x32\x14.otg.BgpSrteV6Policy\x12\x11\n\x04name\x18\x0e \x01(\tH\x04\x88\x01\x01\x12\x31\n\x10graceful_restart\x18\x0f \x01(\x0b\x32\x17.otg.BgpGracefulRestart\x1a\x35\n\x06\x41sType\"+\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\x08\n\x04ibgp\x10\x01\x12\x08\n\x04\x65\x62gp\x10\x02\x1a;\n\rAsNumberWidth\"*\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\x07\n\x03two\x10\x01\x12\x08\n\x04\x66our\x10\x02\x42\x0f\n\r_peer_addressB\n\n\x08_as_typeB\x0c\n\n_as_numberB\x12\n\x10_as_number_widthB\x07\n\x05_name\"U\n\x0e\x42gpV6Interface\x12\x16\n\tipv6_name\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x1d\n\x05peers\x18\x02 \x03(\x0b\x32\x0e.otg.BgpV6PeerB\x0c\n\n_ipv6_name\"\xf1\x03\n\x13\x42gpV6SegmentRouting\x12!\n\x14ingress_supports_vpn\x18\x01 \x01(\x08H\x00\x88\x01\x01\x12\"\n\x15reduced_encapsulation\x18\x02 \x01(\x08H\x01\x88\x01\x01\x12\x1e\n\x11\x63opy_time_to_live\x18\x03 \x01(\x08H\x02\x88\x01\x01\x12\x19\n\x0ctime_to_live\x18\x04 \x01(\rH\x03\x88\x01\x01\x12\x1d\n\x10max_sids_per_srh\x18\x05 \x01(\rH\x04\x88\x01\x01\x12-\n auto_generate_segment_left_value\x18\x06 \x01(\x08H\x05\x88\x01\x01\x12\x1f\n\x12segment_left_value\x18\x07 \x01(\rH\x06\x88\x01\x01\x12#\n\x16\x61\x64vertise_sr_te_policy\x18\x08 \x01(\x08H\x07\x88\x01\x01\x42\x17\n\x15_ingress_supports_vpnB\x18\n\x16_reduced_encapsulationB\x14\n\x12_copy_time_to_liveB\x0f\n\r_time_to_liveB\x13\n\x11_max_sids_per_srhB#\n!_auto_generate_segment_left_valueB\x15\n\x13_segment_left_valueB\x19\n\x17_advertise_sr_te_policy\"\xf0\x03\n\x14\x42gpV6EthernetSegment\x12\x36\n\x0b\x64\x66_election\x18\x01 \x01(\x0b\x32!.otg.BgpEthernetSegmentDfElection\x12 \n\x04\x65vis\x18\x02 \x03(\x0b\x32\x12.otg.BgpV6EvpnEvis\x12\x10\n\x03\x65si\x18\x03 \x01(\tH\x00\x88\x01\x01\x12\x43\n\x0b\x61\x63tive_mode\x18\x04 \x01(\x0e\x32).otg.BgpV6EthernetSegment.ActiveMode.EnumH\x01\x88\x01\x01\x12\x16\n\tesi_label\x18\x05 \x01(\rH\x02\x88\x01\x01\x12\'\n\x08\x61\x64vanced\x18\x06 \x01(\x0b\x32\x15.otg.BgpRouteAdvanced\x12&\n\x0b\x63ommunities\x18\x07 \x03(\x0b\x32\x11.otg.BgpCommunity\x12-\n\x0f\x65xt_communities\x18\x08 \x03(\x0b\x32\x14.otg.BgpExtCommunity\x12\x1f\n\x07\x61s_path\x18\t \x01(\x0b\x32\x0e.otg.BgpAsPath\x1aH\n\nActiveMode\":\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\x11\n\rsingle_active\x10\x01\x12\x0e\n\nall_active\x10\x02\x42\x06\n\x04_esiB\x0e\n\x0c_active_modeB\x0c\n\n_esi_label\"\xa8\x01\n\rBgpV6EvpnEvis\x12\x33\n\x06\x63hoice\x18\x01 \x01(\x0e\x32\x1e.otg.BgpV6EvpnEvis.Choice.EnumH\x00\x88\x01\x01\x12%\n\tevi_vxlan\x18\x02 \x01(\x0b\x32\x12.otg.BgpV6EviVxlan\x1a\x30\n\x06\x43hoice\"&\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\r\n\tevi_vxlan\x10\x01\x42\t\n\x07_choice\"\xe3\x05\n\rBgpV6EviVxlan\x12<\n\x11\x62roadcast_domains\x18\x01 \x03(\x0b\x32!.otg.BgpV6EviVxlanBroadcastDomain\x12\x46\n\x10replication_type\x18\x02 \x01(\x0e\x32\'.otg.BgpV6EviVxlan.ReplicationType.EnumH\x00\x88\x01\x01\x12\x17\n\npmsi_label\x18\x03 \x01(\rH\x01\x88\x01\x01\x12\x15\n\x08\x61\x64_label\x18\x04 \x01(\rH\x02\x88\x01\x01\x12\x37\n\x13route_distinguisher\x18\x05 \x01(\x0b\x32\x1a.otg.BgpRouteDistinguisher\x12\x30\n\x13route_target_export\x18\x06 \x03(\x0b\x32\x13.otg.BgpRouteTarget\x12\x30\n\x13route_target_import\x18\x07 \x03(\x0b\x32\x13.otg.BgpRouteTarget\x12\x33\n\x16l3_route_target_export\x18\x08 \x03(\x0b\x32\x13.otg.BgpRouteTarget\x12\x33\n\x16l3_route_target_import\x18\t \x03(\x0b\x32\x13.otg.BgpRouteTarget\x12\'\n\x08\x61\x64vanced\x18\n \x01(\x0b\x32\x15.otg.BgpRouteAdvanced\x12&\n\x0b\x63ommunities\x18\x0b \x03(\x0b\x32\x11.otg.BgpCommunity\x12-\n\x0f\x65xt_communities\x18\x0c \x03(\x0b\x32\x14.otg.BgpExtCommunity\x12\x1f\n\x07\x61s_path\x18\r \x01(\x0b\x32\x0e.otg.BgpAsPath\x1a\x43\n\x0fReplicationType\"0\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\x17\n\x13ingress_replication\x10\x01\x42\x13\n\x11_replication_typeB\r\n\x0b_pmsi_labelB\x0b\n\t_ad_label\"\xb4\x01\n\x1c\x42gpV6EviVxlanBroadcastDomain\x12*\n\rcmac_ip_range\x18\x01 \x03(\x0b\x32\x13.otg.BgpCMacIpRange\x12\x1c\n\x0f\x65thernet_tag_id\x18\x02 \x01(\rH\x00\x88\x01\x01\x12\x1f\n\x12vlan_aware_service\x18\x03 \x01(\x08H\x01\x88\x01\x01\x42\x12\n\x10_ethernet_tag_idB\x15\n\x13_vlan_aware_service\"]\n\x0b\x44\x65viceVxlan\x12&\n\nv4_tunnels\x18\x01 \x03(\x0b\x32\x12.otg.VxlanV4Tunnel\x12&\n\nv6_tunnels\x18\x02 \x03(\x0b\x32\x12.otg.VxlanV6Tunnel\"\xbb\x01\n\rVxlanV4Tunnel\x12\x1d\n\x10source_interface\x18\x01 \x01(\tH\x00\x88\x01\x01\x12@\n\x13\x64\x65stination_ip_mode\x18\x02 \x01(\x0b\x32#.otg.VxlanV4TunnelDestinationIPMode\x12\x10\n\x03vni\x18\x03 \x01(\rH\x01\x88\x01\x01\x12\x11\n\x04name\x18\x04 \x01(\tH\x02\x88\x01\x01\x42\x13\n\x11_source_interfaceB\x06\n\x04_vniB\x07\n\x05_name\"\xbb\x01\n\rVxlanV6Tunnel\x12\x1d\n\x10source_interface\x18\x01 \x01(\tH\x00\x88\x01\x01\x12@\n\x13\x64\x65stination_ip_mode\x18\x02 \x01(\x0b\x32#.otg.VxlanV6TunnelDestinationIPMode\x12\x10\n\x03vni\x18\x03 \x01(\rH\x01\x88\x01\x01\x12\x11\n\x04name\x18\x04 \x01(\tH\x02\x88\x01\x01\x42\x13\n\x11_source_interfaceB\x06\n\x04_vniB\x07\n\x05_name\"\xae\x02\n\x1eVxlanV4TunnelDestinationIPMode\x12\x44\n\x06\x63hoice\x18\x01 \x01(\x0e\x32/.otg.VxlanV4TunnelDestinationIPMode.Choice.EnumH\x00\x88\x01\x01\x12;\n\x07unicast\x18\x02 \x01(\x0b\x32*.otg.VxlanV4TunnelDestinationIPModeUnicast\x12?\n\tmulticast\x18\x03 \x01(\x0b\x32,.otg.VxlanV4TunnelDestinationIPModeMulticast\x1a=\n\x06\x43hoice\"3\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\x0b\n\x07unicast\x10\x01\x12\r\n\tmulticast\x10\x02\x42\t\n\x07_choice\"\xae\x02\n\x1eVxlanV6TunnelDestinationIPMode\x12\x44\n\x06\x63hoice\x18\x01 \x01(\x0e\x32/.otg.VxlanV6TunnelDestinationIPMode.Choice.EnumH\x00\x88\x01\x01\x12;\n\x07unicast\x18\x02 \x01(\x0b\x32*.otg.VxlanV6TunnelDestinationIPModeUnicast\x12?\n\tmulticast\x18\x03 \x01(\x0b\x32,.otg.VxlanV6TunnelDestinationIPModeMulticast\x1a=\n\x06\x43hoice\"3\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\x0b\n\x07unicast\x10\x01\x12\r\n\tmulticast\x10\x02\x42\t\n\x07_choice\"f\n%VxlanV4TunnelDestinationIPModeUnicast\x12=\n\x05vteps\x18\x01 \x03(\x0b\x32..otg.VxlanV4TunnelDestinationIPModeUnicastVtep\"f\n%VxlanV6TunnelDestinationIPModeUnicast\x12=\n\x05vteps\x18\x01 \x03(\x0b\x32..otg.VxlanV6TunnelDestinationIPModeUnicastVtep\"\x96\x01\n6VxlanTunnelDestinationIPModeUnicastArpSuppressionCache\x12\x1a\n\rremote_vm_mac\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x1b\n\x0eremote_vm_ipv4\x18\x02 \x01(\tH\x01\x88\x01\x01\x42\x10\n\x0e_remote_vm_macB\x11\n\x0f_remote_vm_ipv4\"\xc1\x01\n)VxlanV4TunnelDestinationIPModeUnicastVtep\x12 \n\x13remote_vtep_address\x18\x01 \x01(\tH\x00\x88\x01\x01\x12Z\n\x15\x61rp_suppression_cache\x18\x02 \x03(\x0b\x32;.otg.VxlanTunnelDestinationIPModeUnicastArpSuppressionCacheB\x16\n\x14_remote_vtep_address\"\xc1\x01\n)VxlanV6TunnelDestinationIPModeUnicastVtep\x12 \n\x13remote_vtep_address\x18\x01 \x01(\tH\x00\x88\x01\x01\x12Z\n\x15\x61rp_suppression_cache\x18\x02 \x03(\x0b\x32;.otg.VxlanTunnelDestinationIPModeUnicastArpSuppressionCacheB\x16\n\x14_remote_vtep_address\"K\n\'VxlanV4TunnelDestinationIPModeMulticast\x12\x14\n\x07\x61\x64\x64ress\x18\x01 \x01(\tH\x00\x88\x01\x01\x42\n\n\x08_address\"K\n\'VxlanV6TunnelDestinationIPModeMulticast\x12\x14\n\x07\x61\x64\x64ress\x18\x01 \x01(\tH\x00\x88\x01\x01\x42\n\n\x08_address\"\x91\x01\n\nDeviceRsvp\x12/\n\x0fipv4_interfaces\x18\x01 \x03(\x0b\x32\x16.otg.RsvpIpv4Interface\x12\x36\n\x13lsp_ipv4_interfaces\x18\x02 \x03(\x0b\x32\x19.otg.RsvpLspIpv4Interface\x12\x11\n\x04name\x18\x03 \x01(\tH\x00\x88\x01\x01\x42\x07\n\x05_name\"\xc5\x04\n\x11RsvpIpv4Interface\x12\x16\n\tipv4_name\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x18\n\x0bneighbor_ip\x18\x02 \x01(\tH\x01\x88\x01\x01\x12\x1e\n\x11label_space_start\x18\x03 \x01(\rH\x02\x88\x01\x01\x12\x1c\n\x0flabel_space_end\x18\x04 \x01(\rH\x03\x88\x01\x01\x12%\n\x18\x65nable_refresh_reduction\x18\x05 \x01(\x08H\x04\x88\x01\x01\x12%\n\x18summary_refresh_interval\x18\x06 \x01(\rH\x05\x88\x01\x01\x12\x18\n\x0bsend_bundle\x18\x07 \x01(\x08H\x06\x88\x01\x01\x12\x1d\n\x10\x62undle_threshold\x18\x08 \x01(\rH\x07\x88\x01\x01\x12\x19\n\x0c\x65nable_hello\x18\t \x01(\x08H\x08\x88\x01\x01\x12\x1b\n\x0ehello_interval\x18\n \x01(\rH\t\x88\x01\x01\x12\x1f\n\x12timeout_multiplier\x18\x0b \x01(\rH\n\x88\x01\x01\x42\x0c\n\n_ipv4_nameB\x0e\n\x0c_neighbor_ipB\x14\n\x12_label_space_startB\x12\n\x10_label_space_endB\x1b\n\x19_enable_refresh_reductionB\x1b\n\x19_summary_refresh_intervalB\x0e\n\x0c_send_bundleB\x13\n\x11_bundle_thresholdB\x0f\n\r_enable_helloB\x11\n\x0f_hello_intervalB\x15\n\x13_timeout_multiplier\"\xd0\x01\n\x14RsvpLspIpv4Interface\x12\x16\n\tipv4_name\x18\x01 \x01(\tH\x00\x88\x01\x01\x12G\n\x14p2p_egress_ipv4_lsps\x18\x02 \x01(\x0b\x32).otg.RsvpLspIpv4InterfaceP2PEgressIpv4Lsp\x12I\n\x15p2p_ingress_ipv4_lsps\x18\x03 \x03(\x0b\x32*.otg.RsvpLspIpv4InterfaceP2PIngressIpv4LspB\x0c\n\n_ipv4_name\"\xf1\x03\n$RsvpLspIpv4InterfaceP2PEgressIpv4Lsp\x12\x11\n\x04name\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x1d\n\x10refresh_interval\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x1f\n\x12timeout_multiplier\x18\x03 \x01(\rH\x02\x88\x01\x01\x12_\n\x11reservation_style\x18\x04 \x01(\x0e\x32?.otg.RsvpLspIpv4InterfaceP2PEgressIpv4Lsp.ReservationStyle.EnumH\x03\x88\x01\x01\x12\x1f\n\x12\x65nable_fixed_label\x18\x05 \x01(\x08H\x04\x88\x01\x01\x12\x1e\n\x11\x66ixed_label_value\x18\x06 \x01(\rH\x05\x88\x01\x01\x1a\\\n\x10ReservationStyle\"H\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\x13\n\x0fshared_explicit\x10\x01\x12\x10\n\x0c\x66ixed_filter\x10\x02\x12\x08\n\x04\x61uto\x10\x03\x42\x07\n\x05_nameB\x13\n\x11_refresh_intervalB\x15\n\x13_timeout_multiplierB\x14\n\x12_reservation_styleB\x15\n\x13_enable_fixed_labelB\x14\n\x12_fixed_label_value\"\xab\x04\n%RsvpLspIpv4InterfaceP2PIngressIpv4Lsp\x12\x11\n\x04name\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x1b\n\x0eremote_address\x18\x02 \x01(\tH\x01\x88\x01\x01\x12\x16\n\ttunnel_id\x18\x03 \x01(\rH\x02\x88\x01\x01\x12\x13\n\x06lsp_id\x18\x04 \x01(\rH\x03\x88\x01\x01\x12\x1d\n\x10refresh_interval\x18\x05 \x01(\rH\x04\x88\x01\x01\x12\x1f\n\x12timeout_multiplier\x18\x06 \x01(\rH\x05\x88\x01\x01\x12\x1a\n\rbackup_lsp_id\x18\x07 \x01(\rH\x06\x88\x01\x01\x12!\n\x14lsp_switchover_delay\x18\x08 \x01(\rH\x07\x88\x01\x01\x12\x34\n\x11session_attribute\x18\t \x01(\x0b\x32\x19.otg.RsvpSessionAttribute\x12\x1d\n\x05tspec\x18\n \x01(\x0b\x32\x0e.otg.RsvpTspec\x12*\n\x0c\x66\x61st_reroute\x18\x0b \x01(\x0b\x32\x14.otg.RsvpFastReroute\x12\x19\n\x03\x65ro\x18\x0c \x01(\x0b\x32\x0c.otg.RsvpEroB\x07\n\x05_nameB\x11\n\x0f_remote_addressB\x0c\n\n_tunnel_idB\t\n\x07_lsp_idB\x13\n\x11_refresh_intervalB\x15\n\x13_timeout_multiplierB\x10\n\x0e_backup_lsp_idB\x17\n\x15_lsp_switchover_delay\"\xf0\x04\n\x14RsvpSessionAttribute\x12\'\n\x1a\x61uto_generate_session_name\x18\x01 \x01(\x08H\x00\x88\x01\x01\x12\x19\n\x0csession_name\x18\x02 \x01(\tH\x01\x88\x01\x01\x12\x1b\n\x0esetup_priority\x18\x03 \x01(\rH\x02\x88\x01\x01\x12\x1d\n\x10holding_priority\x18\x04 \x01(\rH\x03\x88\x01\x01\x12%\n\x18local_protection_desired\x18\x05 \x01(\x08H\x04\x88\x01\x01\x12$\n\x17label_recording_desired\x18\x06 \x01(\x08H\x05\x88\x01\x01\x12\x1d\n\x10se_style_desired\x18\x07 \x01(\x08H\x06\x88\x01\x01\x12)\n\x1c\x62\x61ndwidth_protection_desired\x18\x08 \x01(\x08H\x07\x88\x01\x01\x12$\n\x17node_protection_desired\x18\t \x01(\x08H\x08\x88\x01\x01\x12\x38\n\x13resource_affinities\x18\n \x01(\x0b\x32\x1b.otg.RsvpResourceAffinitiesB\x1d\n\x1b_auto_generate_session_nameB\x0f\n\r_session_nameB\x11\n\x0f_setup_priorityB\x13\n\x11_holding_priorityB\x1b\n\x19_local_protection_desiredB\x1a\n\x18_label_recording_desiredB\x13\n\x11_se_style_desiredB\x1f\n\x1d_bandwidth_protection_desiredB\x1a\n\x18_node_protection_desired\"\x96\x01\n\x16RsvpResourceAffinities\x12\x18\n\x0b\x65xclude_any\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x18\n\x0binclude_any\x18\x02 \x01(\tH\x01\x88\x01\x01\x12\x18\n\x0binclude_all\x18\x03 \x01(\tH\x02\x88\x01\x01\x42\x0e\n\x0c_exclude_anyB\x0e\n\x0c_include_anyB\x0e\n\x0c_include_all\"\x9f\x02\n\tRsvpTspec\x12\x1e\n\x11token_bucket_rate\x18\x01 \x01(\x02H\x00\x88\x01\x01\x12\x1e\n\x11token_bucket_size\x18\x02 \x01(\x02H\x01\x88\x01\x01\x12\x1b\n\x0epeak_data_rate\x18\x03 \x01(\x02H\x02\x88\x01\x01\x12!\n\x14minimum_policed_unit\x18\x04 \x01(\rH\x03\x88\x01\x01\x12!\n\x14maximum_policed_unit\x18\x05 \x01(\rH\x04\x88\x01\x01\x42\x14\n\x12_token_bucket_rateB\x14\n\x12_token_bucket_sizeB\x11\n\x0f_peak_data_rateB\x17\n\x15_minimum_policed_unitB\x17\n\x15_maximum_policed_unit\"\xc7\x03\n\x0fRsvpFastReroute\x12\x1b\n\x0esetup_priority\x18\x01 \x01(\rH\x00\x88\x01\x01\x12\x1d\n\x10holding_priority\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x16\n\thop_limit\x18\x03 \x01(\rH\x02\x88\x01\x01\x12\x16\n\tbandwidth\x18\x04 \x01(\x02H\x03\x88\x01\x01\x12\x18\n\x0b\x65xclude_any\x18\x05 \x01(\tH\x04\x88\x01\x01\x12\x18\n\x0binclude_any\x18\x06 \x01(\tH\x05\x88\x01\x01\x12\x18\n\x0binclude_all\x18\x07 \x01(\tH\x06\x88\x01\x01\x12&\n\x19one_to_one_backup_desired\x18\x08 \x01(\x08H\x07\x88\x01\x01\x12$\n\x17\x66\x61\x63ility_backup_desired\x18\t \x01(\x08H\x08\x88\x01\x01\x42\x11\n\x0f_setup_priorityB\x13\n\x11_holding_priorityB\x0c\n\n_hop_limitB\x0c\n\n_bandwidthB\x0e\n\x0c_exclude_anyB\x0e\n\x0c_include_anyB\x0e\n\x0c_include_allB\x1c\n\x1a_one_to_one_backup_desiredB\x1a\n\x18_facility_backup_desired\"\xa8\x02\n\x07RsvpEro\x12\x45\n\x13prepend_neighbor_ip\x18\x01 \x01(\x0e\x32#.otg.RsvpEro.PrependNeighborIp.EnumH\x00\x88\x01\x01\x12\x1a\n\rprefix_length\x18\x02 \x01(\rH\x01\x88\x01\x01\x12)\n\nsubobjects\x18\x03 \x03(\x0b\x32\x15.otg.RsvpEroSubobject\x1a\x65\n\x11PrependNeighborIp\"P\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\x10\n\x0c\x64ont_prepend\x10\x01\x12\x11\n\rprepend_loose\x10\x02\x12\x12\n\x0eprepend_strict\x10\x03\x42\x16\n\x14_prepend_neighbor_ipB\x10\n\x0e_prefix_length\"\x8c\x03\n\x10RsvpEroSubobject\x12\x32\n\x04type\x18\x01 \x01(\x0e\x32\x1f.otg.RsvpEroSubobject.Type.EnumH\x00\x88\x01\x01\x12\x19\n\x0cipv4_address\x18\x02 \x01(\tH\x01\x88\x01\x01\x12\x1a\n\rprefix_length\x18\x03 \x01(\rH\x02\x88\x01\x01\x12\x16\n\tas_number\x18\x04 \x01(\rH\x03\x88\x01\x01\x12\x39\n\x08hop_type\x18\x05 \x01(\x0e\x32\".otg.RsvpEroSubobject.HopType.EnumH\x04\x88\x01\x01\x1a\x38\n\x04Type\"0\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\x08\n\x04ipv4\x10\x01\x12\r\n\tas_number\x10\x02\x1a\x39\n\x07HopType\".\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\n\n\x06strict\x10\x01\x12\t\n\x05loose\x10\x02\x42\x07\n\x05_typeB\x0f\n\r_ipv4_addressB\x10\n\x0e_prefix_lengthB\x0c\n\n_as_numberB\x0b\n\t_hop_type\"\x8b\x02\n\x04\x46low\x12\x1c\n\x05tx_rx\x18\x01 \x01(\x0b\x32\r.otg.FlowTxRx\x12\x1f\n\x06packet\x18\x02 \x03(\x0b\x32\x0f.otg.FlowHeader\x12&\n\regress_packet\x18\t \x03(\x0b\x32\x0f.otg.FlowHeader\x12\x1b\n\x04size\x18\x03 \x01(\x0b\x32\r.otg.FlowSize\x12\x1b\n\x04rate\x18\x04 \x01(\x0b\x32\r.otg.FlowRate\x12#\n\x08\x64uration\x18\x05 \x01(\x0b\x32\x11.otg.FlowDuration\x12!\n\x07metrics\x18\x06 \x01(\x0b\x32\x10.otg.FlowMetrics\x12\x11\n\x04name\x18\x07 \x01(\tH\x00\x88\x01\x01\x42\x07\n\x05_name\"\xbc\x01\n\x08\x46lowTxRx\x12.\n\x06\x63hoice\x18\x01 \x01(\x0e\x32\x19.otg.FlowTxRx.Choice.EnumH\x00\x88\x01\x01\x12\x1b\n\x04port\x18\x02 \x01(\x0b\x32\r.otg.FlowPort\x12\x1f\n\x06\x64\x65vice\x18\x03 \x01(\x0b\x32\x0f.otg.FlowRouter\x1a\x37\n\x06\x43hoice\"-\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\x08\n\x04port\x10\x01\x12\n\n\x06\x64\x65vice\x10\x02\x42\t\n\x07_choice\"`\n\x08\x46lowPort\x12\x14\n\x07tx_name\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x14\n\x07rx_name\x18\x02 \x01(\tH\x01\x88\x01\x01\x12\x10\n\x08rx_names\x18\x03 \x03(\tB\n\n\x08_tx_nameB\n\n\x08_rx_name\"\xa2\x01\n\nFlowRouter\x12,\n\x04mode\x18\x01 \x01(\x0e\x32\x19.otg.FlowRouter.Mode.EnumH\x00\x88\x01\x01\x12\x10\n\x08tx_names\x18\x02 \x03(\t\x12\x10\n\x08rx_names\x18\x03 \x03(\t\x1a\x39\n\x04Mode\"1\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\x08\n\x04mesh\x10\x01\x12\x0e\n\none_to_one\x10\x02\x42\x07\n\x05_mode\"\x92\x07\n\nFlowHeader\x12\x30\n\x06\x63hoice\x18\x01 \x01(\x0e\x32\x1b.otg.FlowHeader.Choice.EnumH\x00\x88\x01\x01\x12\x1f\n\x06\x63ustom\x18\x02 \x01(\x0b\x32\x0f.otg.FlowCustom\x12#\n\x08\x65thernet\x18\x03 \x01(\x0b\x32\x11.otg.FlowEthernet\x12\x1b\n\x04vlan\x18\x04 \x01(\x0b\x32\r.otg.FlowVlan\x12\x1d\n\x05vxlan\x18\x05 \x01(\x0b\x32\x0e.otg.FlowVxlan\x12\x1b\n\x04ipv4\x18\x06 \x01(\x0b\x32\r.otg.FlowIpv4\x12\x1b\n\x04ipv6\x18\x07 \x01(\x0b\x32\r.otg.FlowIpv6\x12#\n\x08pfcpause\x18\x08 \x01(\x0b\x32\x11.otg.FlowPfcPause\x12-\n\rethernetpause\x18\t \x01(\x0b\x32\x16.otg.FlowEthernetPause\x12\x19\n\x03tcp\x18\n \x01(\x0b\x32\x0c.otg.FlowTcp\x12\x19\n\x03udp\x18\x0b \x01(\x0b\x32\x0c.otg.FlowUdp\x12\x19\n\x03gre\x18\x0c \x01(\x0b\x32\x0c.otg.FlowGre\x12\x1d\n\x05gtpv1\x18\r \x01(\x0b\x32\x0e.otg.FlowGtpv1\x12\x1d\n\x05gtpv2\x18\x0e \x01(\x0b\x32\x0e.otg.FlowGtpv2\x12\x19\n\x03\x61rp\x18\x0f \x01(\x0b\x32\x0c.otg.FlowArp\x12\x1b\n\x04icmp\x18\x10 \x01(\x0b\x32\r.otg.FlowIcmp\x12\x1f\n\x06icmpv6\x18\x11 \x01(\x0b\x32\x0f.otg.FlowIcmpv6\x12\x19\n\x03ppp\x18\x12 \x01(\x0b\x32\x0c.otg.FlowPpp\x12\x1f\n\x06igmpv1\x18\x13 \x01(\x0b\x32\x0f.otg.FlowIgmpv1\x12\x1b\n\x04mpls\x18\x14 \x01(\x0b\x32\r.otg.FlowMpls\x1a\xf5\x01\n\x06\x43hoice\"\xea\x01\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\n\n\x06\x63ustom\x10\x01\x12\x0c\n\x08\x65thernet\x10\x02\x12\x08\n\x04vlan\x10\x03\x12\t\n\x05vxlan\x10\x04\x12\x08\n\x04ipv4\x10\x05\x12\x08\n\x04ipv6\x10\x06\x12\x0c\n\x08pfcpause\x10\x07\x12\x11\n\rethernetpause\x10\x08\x12\x07\n\x03tcp\x10\t\x12\x07\n\x03udp\x10\n\x12\x07\n\x03gre\x10\x0b\x12\t\n\x05gtpv1\x10\x0c\x12\t\n\x05gtpv2\x10\r\x12\x07\n\x03\x61rp\x10\x0e\x12\x08\n\x04icmp\x10\x0f\x12\n\n\x06icmpv6\x10\x10\x12\x07\n\x03ppp\x10\x11\x12\n\n\x06igmpv1\x10\x12\x12\x08\n\x04mpls\x10\x13\x42\t\n\x07_choice\"Y\n\nFlowCustom\x12\x12\n\x05\x62ytes\x18\x01 \x01(\tH\x00\x88\x01\x01\x12-\n\x0bmetric_tags\x18\x02 \x03(\x0b\x32\x18.otg.FlowCustomMetricTagB\x08\n\x06_bytes\"q\n\x13\x46lowCustomMetricTag\x12\x11\n\x04name\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x13\n\x06offset\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x13\n\x06length\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x07\n\x05_nameB\t\n\x07_offsetB\t\n\x07_length\"\xce\x01\n\x0c\x46lowEthernet\x12(\n\x03\x64st\x18\x01 \x01(\x0b\x32\x1b.otg.PatternFlowEthernetDst\x12(\n\x03src\x18\x02 \x01(\x0b\x32\x1b.otg.PatternFlowEthernetSrc\x12\x35\n\nether_type\x18\x03 \x01(\x0b\x32!.otg.PatternFlowEthernetEtherType\x12\x33\n\tpfc_queue\x18\x04 \x01(\x0b\x32 .otg.PatternFlowEthernetPfcQueue\"\xac\x01\n\x08\x46lowVlan\x12.\n\x08priority\x18\x01 \x01(\x0b\x32\x1c.otg.PatternFlowVlanPriority\x12$\n\x03\x63\x66i\x18\x02 \x01(\x0b\x32\x17.otg.PatternFlowVlanCfi\x12\"\n\x02id\x18\x03 \x01(\x0b\x32\x16.otg.PatternFlowVlanId\x12&\n\x04tpid\x18\x04 \x01(\x0b\x32\x18.otg.PatternFlowVlanTpid\"\xc3\x01\n\tFlowVxlan\x12)\n\x05\x66lags\x18\x01 \x01(\x0b\x32\x1a.otg.PatternFlowVxlanFlags\x12\x31\n\treserved0\x18\x02 \x01(\x0b\x32\x1e.otg.PatternFlowVxlanReserved0\x12%\n\x03vni\x18\x03 \x01(\x0b\x32\x18.otg.PatternFlowVxlanVni\x12\x31\n\treserved1\x18\x04 \x01(\x0b\x32\x1e.otg.PatternFlowVxlanReserved1\"\xdd\x05\n\x08\x46lowIpv4\x12,\n\x07version\x18\x01 \x01(\x0b\x32\x1b.otg.PatternFlowIpv4Version\x12\x37\n\rheader_length\x18\x02 \x01(\x0b\x32 .otg.PatternFlowIpv4HeaderLength\x12\'\n\x08priority\x18\x03 \x01(\x0b\x32\x15.otg.FlowIpv4Priority\x12\x35\n\x0ctotal_length\x18\x04 \x01(\x0b\x32\x1f.otg.PatternFlowIpv4TotalLength\x12:\n\x0eidentification\x18\x05 \x01(\x0b\x32\".otg.PatternFlowIpv4Identification\x12.\n\x08reserved\x18\x06 \x01(\x0b\x32\x1c.otg.PatternFlowIpv4Reserved\x12\x37\n\rdont_fragment\x18\x07 \x01(\x0b\x32 .otg.PatternFlowIpv4DontFragment\x12\x39\n\x0emore_fragments\x18\x08 \x01(\x0b\x32!.otg.PatternFlowIpv4MoreFragments\x12;\n\x0f\x66ragment_offset\x18\t \x01(\x0b\x32\".otg.PatternFlowIpv4FragmentOffset\x12\x34\n\x0ctime_to_live\x18\n \x01(\x0b\x32\x1e.otg.PatternFlowIpv4TimeToLive\x12.\n\x08protocol\x18\x0b \x01(\x0b\x32\x1c.otg.PatternFlowIpv4Protocol\x12;\n\x0fheader_checksum\x18\x0c \x01(\x0b\x32\".otg.PatternFlowIpv4HeaderChecksum\x12$\n\x03src\x18\r \x01(\x0b\x32\x17.otg.PatternFlowIpv4Src\x12$\n\x03\x64st\x18\x0e \x01(\x0b\x32\x17.otg.PatternFlowIpv4Dst\"\x82\x02\n\x10\x46lowIpv4Priority\x12\x36\n\x06\x63hoice\x18\x01 \x01(\x0e\x32!.otg.FlowIpv4Priority.Choice.EnumH\x00\x88\x01\x01\x12,\n\x03raw\x18\x02 \x01(\x0b\x32\x1f.otg.PatternFlowIpv4PriorityRaw\x12\x1d\n\x03tos\x18\x03 \x01(\x0b\x32\x10.otg.FlowIpv4Tos\x12\x1f\n\x04\x64scp\x18\x04 \x01(\x0b\x32\x11.otg.FlowIpv4Dscp\x1a=\n\x06\x43hoice\"3\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\x07\n\x03raw\x10\x01\x12\x07\n\x03tos\x10\x02\x12\x08\n\x04\x64scp\x10\x03\x42\t\n\x07_choice\"b\n\x0c\x46lowIpv4Dscp\x12(\n\x03phb\x18\x01 \x01(\x0b\x32\x1b.otg.PatternFlowIpv4DscpPhb\x12(\n\x03\x65\x63n\x18\x02 \x01(\x0b\x32\x1b.otg.PatternFlowIpv4DscpEcn\"\xc3\x02\n\x0b\x46lowIpv4Tos\x12\x35\n\nprecedence\x18\x01 \x01(\x0b\x32!.otg.PatternFlowIpv4TosPrecedence\x12+\n\x05\x64\x65lay\x18\x02 \x01(\x0b\x32\x1c.otg.PatternFlowIpv4TosDelay\x12\x35\n\nthroughput\x18\x03 \x01(\x0b\x32!.otg.PatternFlowIpv4TosThroughput\x12\x37\n\x0breliability\x18\x04 \x01(\x0b\x32\".otg.PatternFlowIpv4TosReliability\x12\x31\n\x08monetary\x18\x05 \x01(\x0b\x32\x1f.otg.PatternFlowIpv4TosMonetary\x12-\n\x06unused\x18\x06 \x01(\x0b\x32\x1d.otg.PatternFlowIpv4TosUnused\"\x91\x03\n\x08\x46lowIpv6\x12,\n\x07version\x18\x01 \x01(\x0b\x32\x1b.otg.PatternFlowIpv6Version\x12\x37\n\rtraffic_class\x18\x02 \x01(\x0b\x32 .otg.PatternFlowIpv6TrafficClass\x12\x31\n\nflow_label\x18\x03 \x01(\x0b\x32\x1d.otg.PatternFlowIpv6FlowLabel\x12\x39\n\x0epayload_length\x18\x04 \x01(\x0b\x32!.otg.PatternFlowIpv6PayloadLength\x12\x33\n\x0bnext_header\x18\x05 \x01(\x0b\x32\x1e.otg.PatternFlowIpv6NextHeader\x12/\n\thop_limit\x18\x06 \x01(\x0b\x32\x1c.otg.PatternFlowIpv6HopLimit\x12$\n\x03src\x18\x07 \x01(\x0b\x32\x17.otg.PatternFlowIpv6Src\x12$\n\x03\x64st\x18\x08 \x01(\x0b\x32\x17.otg.PatternFlowIpv6Dst\"\x81\x06\n\x0c\x46lowPfcPause\x12(\n\x03\x64st\x18\x01 \x01(\x0b\x32\x1b.otg.PatternFlowPfcPauseDst\x12(\n\x03src\x18\x02 \x01(\x0b\x32\x1b.otg.PatternFlowPfcPauseSrc\x12\x35\n\nether_type\x18\x03 \x01(\x0b\x32!.otg.PatternFlowPfcPauseEtherType\x12>\n\x0f\x63ontrol_op_code\x18\x04 \x01(\x0b\x32%.otg.PatternFlowPfcPauseControlOpCode\x12\x46\n\x13\x63lass_enable_vector\x18\x05 \x01(\x0b\x32).otg.PatternFlowPfcPauseClassEnableVector\x12:\n\rpause_class_0\x18\x06 \x01(\x0b\x32#.otg.PatternFlowPfcPausePauseClass0\x12:\n\rpause_class_1\x18\x07 \x01(\x0b\x32#.otg.PatternFlowPfcPausePauseClass1\x12:\n\rpause_class_2\x18\x08 \x01(\x0b\x32#.otg.PatternFlowPfcPausePauseClass2\x12:\n\rpause_class_3\x18\t \x01(\x0b\x32#.otg.PatternFlowPfcPausePauseClass3\x12:\n\rpause_class_4\x18\n \x01(\x0b\x32#.otg.PatternFlowPfcPausePauseClass4\x12:\n\rpause_class_5\x18\x0b \x01(\x0b\x32#.otg.PatternFlowPfcPausePauseClass5\x12:\n\rpause_class_6\x18\x0c \x01(\x0b\x32#.otg.PatternFlowPfcPausePauseClass6\x12:\n\rpause_class_7\x18\r \x01(\x0b\x32#.otg.PatternFlowPfcPausePauseClass7\"\xa3\x02\n\x11\x46lowEthernetPause\x12-\n\x03\x64st\x18\x01 \x01(\x0b\x32 .otg.PatternFlowEthernetPauseDst\x12-\n\x03src\x18\x02 \x01(\x0b\x32 .otg.PatternFlowEthernetPauseSrc\x12:\n\nether_type\x18\x03 \x01(\x0b\x32&.otg.PatternFlowEthernetPauseEtherType\x12\x43\n\x0f\x63ontrol_op_code\x18\x04 \x01(\x0b\x32*.otg.PatternFlowEthernetPauseControlOpCode\x12/\n\x04time\x18\x05 \x01(\x0b\x32!.otg.PatternFlowEthernetPauseTime\"\xa8\x05\n\x07\x46lowTcp\x12,\n\x08src_port\x18\x01 \x01(\x0b\x32\x1a.otg.PatternFlowTcpSrcPort\x12,\n\x08\x64st_port\x18\x02 \x01(\x0b\x32\x1a.otg.PatternFlowTcpDstPort\x12*\n\x07seq_num\x18\x03 \x01(\x0b\x32\x19.otg.PatternFlowTcpSeqNum\x12*\n\x07\x61\x63k_num\x18\x04 \x01(\x0b\x32\x19.otg.PatternFlowTcpAckNum\x12\x32\n\x0b\x64\x61ta_offset\x18\x05 \x01(\x0b\x32\x1d.otg.PatternFlowTcpDataOffset\x12(\n\x06\x65\x63n_ns\x18\x06 \x01(\x0b\x32\x18.otg.PatternFlowTcpEcnNs\x12*\n\x07\x65\x63n_cwr\x18\x07 \x01(\x0b\x32\x19.otg.PatternFlowTcpEcnCwr\x12,\n\x08\x65\x63n_echo\x18\x08 \x01(\x0b\x32\x1a.otg.PatternFlowTcpEcnEcho\x12*\n\x07\x63tl_urg\x18\t \x01(\x0b\x32\x19.otg.PatternFlowTcpCtlUrg\x12*\n\x07\x63tl_ack\x18\n \x01(\x0b\x32\x19.otg.PatternFlowTcpCtlAck\x12*\n\x07\x63tl_psh\x18\x0b \x01(\x0b\x32\x19.otg.PatternFlowTcpCtlPsh\x12*\n\x07\x63tl_rst\x18\x0c \x01(\x0b\x32\x19.otg.PatternFlowTcpCtlRst\x12*\n\x07\x63tl_syn\x18\r \x01(\x0b\x32\x19.otg.PatternFlowTcpCtlSyn\x12*\n\x07\x63tl_fin\x18\x0e \x01(\x0b\x32\x19.otg.PatternFlowTcpCtlFin\x12)\n\x06window\x18\x0f \x01(\x0b\x32\x19.otg.PatternFlowTcpWindow\"\xbf\x01\n\x07\x46lowUdp\x12,\n\x08src_port\x18\x01 \x01(\x0b\x32\x1a.otg.PatternFlowUdpSrcPort\x12,\n\x08\x64st_port\x18\x02 \x01(\x0b\x32\x1a.otg.PatternFlowUdpDstPort\x12)\n\x06length\x18\x03 \x01(\x0b\x32\x19.otg.PatternFlowUdpLength\x12-\n\x08\x63hecksum\x18\x04 \x01(\x0b\x32\x1b.otg.PatternFlowUdpChecksum\"\xb4\x02\n\x07\x46lowGre\x12<\n\x10\x63hecksum_present\x18\x01 \x01(\x0b\x32\".otg.PatternFlowGreChecksumPresent\x12/\n\treserved0\x18\x02 \x01(\x0b\x32\x1c.otg.PatternFlowGreReserved0\x12+\n\x07version\x18\x03 \x01(\x0b\x32\x1a.otg.PatternFlowGreVersion\x12-\n\x08protocol\x18\x04 \x01(\x0b\x32\x1b.otg.PatternFlowGreProtocol\x12-\n\x08\x63hecksum\x18\x05 \x01(\x0b\x32\x1b.otg.PatternFlowGreChecksum\x12/\n\treserved1\x18\x06 \x01(\x0b\x32\x1c.otg.PatternFlowGreReserved1\"\xbf\x05\n\tFlowGtpv1\x12-\n\x07version\x18\x01 \x01(\x0b\x32\x1c.otg.PatternFlowGtpv1Version\x12\x38\n\rprotocol_type\x18\x02 \x01(\x0b\x32!.otg.PatternFlowGtpv1ProtocolType\x12/\n\x08reserved\x18\x03 \x01(\x0b\x32\x1d.otg.PatternFlowGtpv1Reserved\x12*\n\x06\x65_flag\x18\x04 \x01(\x0b\x32\x1a.otg.PatternFlowGtpv1EFlag\x12*\n\x06s_flag\x18\x05 \x01(\x0b\x32\x1a.otg.PatternFlowGtpv1SFlag\x12,\n\x07pn_flag\x18\x06 \x01(\x0b\x32\x1b.otg.PatternFlowGtpv1PnFlag\x12\x36\n\x0cmessage_type\x18\x07 \x01(\x0b\x32 .otg.PatternFlowGtpv1MessageType\x12:\n\x0emessage_length\x18\x08 \x01(\x0b\x32\".otg.PatternFlowGtpv1MessageLength\x12\'\n\x04teid\x18\t \x01(\x0b\x32\x19.otg.PatternFlowGtpv1Teid\x12:\n\x0esquence_number\x18\n \x01(\x0b\x32\".otg.PatternFlowGtpv1SquenceNumber\x12\x35\n\x0cn_pdu_number\x18\x0b \x01(\x0b\x32\x1f.otg.PatternFlowGtpv1NPduNumber\x12P\n\x1anext_extension_header_type\x18\x0c \x01(\x0b\x32,.otg.PatternFlowGtpv1NextExtensionHeaderType\x12\x30\n\x11\x65xtension_headers\x18\r \x03(\x0b\x32\x15.otg.FlowGtpExtension\"\xe1\x01\n\x10\x46lowGtpExtension\x12\x45\n\x10\x65xtension_length\x18\x01 \x01(\x0b\x32+.otg.PatternFlowGtpExtensionExtensionLength\x12\x36\n\x08\x63ontents\x18\x02 \x01(\x0b\x32$.otg.PatternFlowGtpExtensionContents\x12N\n\x15next_extension_header\x18\x03 \x01(\x0b\x32/.otg.PatternFlowGtpExtensionNextExtensionHeader\"\xe3\x03\n\tFlowGtpv2\x12-\n\x07version\x18\x01 \x01(\x0b\x32\x1c.otg.PatternFlowGtpv2Version\x12@\n\x11piggybacking_flag\x18\x02 \x01(\x0b\x32%.otg.PatternFlowGtpv2PiggybackingFlag\x12\x30\n\tteid_flag\x18\x03 \x01(\x0b\x32\x1d.otg.PatternFlowGtpv2TeidFlag\x12+\n\x06spare1\x18\x04 \x01(\x0b\x32\x1b.otg.PatternFlowGtpv2Spare1\x12\x36\n\x0cmessage_type\x18\x05 \x01(\x0b\x32 .otg.PatternFlowGtpv2MessageType\x12:\n\x0emessage_length\x18\x06 \x01(\x0b\x32\".otg.PatternFlowGtpv2MessageLength\x12\'\n\x04teid\x18\x07 \x01(\x0b\x32\x19.otg.PatternFlowGtpv2Teid\x12<\n\x0fsequence_number\x18\x08 \x01(\x0b\x32#.otg.PatternFlowGtpv2SequenceNumber\x12+\n\x06spare2\x18\t \x01(\x0b\x32\x1b.otg.PatternFlowGtpv2Spare2\"\xb6\x04\n\x07\x46lowArp\x12\x36\n\rhardware_type\x18\x01 \x01(\x0b\x32\x1f.otg.PatternFlowArpHardwareType\x12\x36\n\rprotocol_type\x18\x02 \x01(\x0b\x32\x1f.otg.PatternFlowArpProtocolType\x12:\n\x0fhardware_length\x18\x03 \x01(\x0b\x32!.otg.PatternFlowArpHardwareLength\x12:\n\x0fprotocol_length\x18\x04 \x01(\x0b\x32!.otg.PatternFlowArpProtocolLength\x12/\n\toperation\x18\x05 \x01(\x0b\x32\x1c.otg.PatternFlowArpOperation\x12\x43\n\x14sender_hardware_addr\x18\x06 \x01(\x0b\x32%.otg.PatternFlowArpSenderHardwareAddr\x12\x43\n\x14sender_protocol_addr\x18\x07 \x01(\x0b\x32%.otg.PatternFlowArpSenderProtocolAddr\x12\x43\n\x14target_hardware_addr\x18\x08 \x01(\x0b\x32%.otg.PatternFlowArpTargetHardwareAddr\x12\x43\n\x14target_protocol_addr\x18\t \x01(\x0b\x32%.otg.PatternFlowArpTargetProtocolAddr\"\x93\x01\n\x08\x46lowIcmp\x12.\n\x06\x63hoice\x18\x01 \x01(\x0e\x32\x19.otg.FlowIcmp.Choice.EnumH\x00\x88\x01\x01\x12\x1f\n\x04\x65\x63ho\x18\x02 \x01(\x0b\x32\x11.otg.FlowIcmpEcho\x1a+\n\x06\x43hoice\"!\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\x08\n\x04\x65\x63ho\x10\x01\x42\t\n\x07_choice\"\x93\x02\n\x0c\x46lowIcmpEcho\x12*\n\x04type\x18\x01 \x01(\x0b\x32\x1c.otg.PatternFlowIcmpEchoType\x12*\n\x04\x63ode\x18\x02 \x01(\x0b\x32\x1c.otg.PatternFlowIcmpEchoCode\x12\x32\n\x08\x63hecksum\x18\x03 \x01(\x0b\x32 .otg.PatternFlowIcmpEchoChecksum\x12\x36\n\nidentifier\x18\x04 \x01(\x0b\x32\".otg.PatternFlowIcmpEchoIdentifier\x12?\n\x0fsequence_number\x18\x05 \x01(\x0b\x32&.otg.PatternFlowIcmpEchoSequenceNumber\"\x99\x01\n\nFlowIcmpv6\x12\x30\n\x06\x63hoice\x18\x01 \x01(\x0e\x32\x1b.otg.FlowIcmpv6.Choice.EnumH\x00\x88\x01\x01\x12!\n\x04\x65\x63ho\x18\x02 \x01(\x0b\x32\x13.otg.FlowIcmpv6Echo\x1a+\n\x06\x43hoice\"!\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\x08\n\x04\x65\x63ho\x10\x01\x42\t\n\x07_choice\"\x9f\x02\n\x0e\x46lowIcmpv6Echo\x12,\n\x04type\x18\x01 \x01(\x0b\x32\x1e.otg.PatternFlowIcmpv6EchoType\x12,\n\x04\x63ode\x18\x02 \x01(\x0b\x32\x1e.otg.PatternFlowIcmpv6EchoCode\x12\x38\n\nidentifier\x18\x03 \x01(\x0b\x32$.otg.PatternFlowIcmpv6EchoIdentifier\x12\x41\n\x0fsequence_number\x18\x04 \x01(\x0b\x32(.otg.PatternFlowIcmpv6EchoSequenceNumber\x12\x34\n\x08\x63hecksum\x18\x05 \x01(\x0b\x32\".otg.PatternFlowIcmpv6EchoChecksum\"\x9b\x01\n\x07\x46lowPpp\x12+\n\x07\x61\x64\x64ress\x18\x01 \x01(\x0b\x32\x1a.otg.PatternFlowPppAddress\x12+\n\x07\x63ontrol\x18\x02 \x01(\x0b\x32\x1a.otg.PatternFlowPppControl\x12\x36\n\rprotocol_type\x18\x03 \x01(\x0b\x32\x1f.otg.PatternFlowPppProtocolType\"\x81\x02\n\nFlowIgmpv1\x12.\n\x07version\x18\x01 \x01(\x0b\x32\x1d.otg.PatternFlowIgmpv1Version\x12(\n\x04type\x18\x02 \x01(\x0b\x32\x1a.otg.PatternFlowIgmpv1Type\x12,\n\x06unused\x18\x03 \x01(\x0b\x32\x1c.otg.PatternFlowIgmpv1Unused\x12\x30\n\x08\x63hecksum\x18\x04 \x01(\x0b\x32\x1e.otg.PatternFlowIgmpv1Checksum\x12\x39\n\rgroup_address\x18\x05 \x01(\x0b\x32\".otg.PatternFlowIgmpv1GroupAddress\"\xdf\x01\n\x08\x46lowMpls\x12(\n\x05label\x18\x01 \x01(\x0b\x32\x19.otg.PatternFlowMplsLabel\x12\x37\n\rtraffic_class\x18\x02 \x01(\x0b\x32 .otg.PatternFlowMplsTrafficClass\x12:\n\x0f\x62ottom_of_stack\x18\x03 \x01(\x0b\x32!.otg.PatternFlowMplsBottomOfStack\x12\x34\n\x0ctime_to_live\x18\x04 \x01(\x0b\x32\x1e.otg.PatternFlowMplsTimeToLive\"\xbe\x02\n\x08\x46lowSize\x12.\n\x06\x63hoice\x18\x01 \x01(\x0e\x32\x19.otg.FlowSize.Choice.EnumH\x00\x88\x01\x01\x12\x12\n\x05\x66ixed\x18\x02 \x01(\rH\x01\x88\x01\x01\x12)\n\tincrement\x18\x03 \x01(\x0b\x32\x16.otg.FlowSizeIncrement\x12#\n\x06random\x18\x04 \x01(\x0b\x32\x13.otg.FlowSizeRandom\x12.\n\x0cweight_pairs\x18\x05 \x01(\x0b\x32\x18.otg.FlowSizeWeightPairs\x1aY\n\x06\x43hoice\"O\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\t\n\x05\x66ixed\x10\x01\x12\r\n\tincrement\x10\x02\x12\n\n\x06random\x10\x03\x12\x10\n\x0cweight_pairs\x10\x04\x42\t\n\x07_choiceB\x08\n\x06_fixed\"g\n\x11\x46lowSizeIncrement\x12\x12\n\x05start\x18\x01 \x01(\rH\x00\x88\x01\x01\x12\x10\n\x03\x65nd\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x11\n\x04step\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x08\n\x06_startB\x06\n\x04_endB\x07\n\x05_step\"D\n\x0e\x46lowSizeRandom\x12\x10\n\x03min\x18\x01 \x01(\rH\x00\x88\x01\x01\x12\x10\n\x03max\x18\x02 \x01(\rH\x01\x88\x01\x01\x42\x06\n\x04_minB\x06\n\x04_max\"\x8d\x03\n\x13\x46lowSizeWeightPairs\x12\x39\n\x06\x63hoice\x18\x01 \x01(\x0e\x32$.otg.FlowSizeWeightPairs.Choice.EnumH\x00\x88\x01\x01\x12\x41\n\npredefined\x18\x02 \x01(\x0e\x32(.otg.FlowSizeWeightPairs.Predefined.EnumH\x01\x88\x01\x01\x12.\n\x06\x63ustom\x18\x03 \x03(\x0b\x32\x1e.otg.FlowSizeWeightPairsCustom\x1a=\n\x06\x43hoice\"3\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\x0e\n\npredefined\x10\x01\x12\n\n\x06\x63ustom\x10\x02\x1ao\n\nPredefined\"a\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\x08\n\x04imix\x10\x01\x12\x0e\n\nipsec_imix\x10\x02\x12\r\n\tipv6_imix\x10\x03\x12\x11\n\rstandard_imix\x10\x04\x12\x0c\n\x08tcp_imix\x10\x05\x42\t\n\x07_choiceB\r\n\x0b_predefined\"W\n\x19\x46lowSizeWeightPairsCustom\x12\x11\n\x04size\x18\x01 \x01(\rH\x00\x88\x01\x01\x12\x13\n\x06weight\x18\x02 \x01(\x02H\x01\x88\x01\x01\x42\x07\n\x05_sizeB\t\n\x07_weight\"\xd8\x02\n\x08\x46lowRate\x12.\n\x06\x63hoice\x18\x01 \x01(\x0e\x32\x19.otg.FlowRate.Choice.EnumH\x00\x88\x01\x01\x12\x10\n\x03pps\x18\x02 \x01(\x04H\x01\x88\x01\x01\x12\x10\n\x03\x62ps\x18\x03 \x01(\x04H\x02\x88\x01\x01\x12\x11\n\x04kbps\x18\x04 \x01(\x04H\x03\x88\x01\x01\x12\x11\n\x04mbps\x18\x05 \x01(\x04H\x04\x88\x01\x01\x12\x11\n\x04gbps\x18\x06 \x01(\rH\x05\x88\x01\x01\x12\x17\n\npercentage\x18\x07 \x01(\x02H\x06\x88\x01\x01\x1a\x61\n\x06\x43hoice\"W\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\x07\n\x03pps\x10\x01\x12\x07\n\x03\x62ps\x10\x02\x12\x08\n\x04kbps\x10\x03\x12\x08\n\x04mbps\x10\x04\x12\x08\n\x04gbps\x10\x05\x12\x0e\n\npercentage\x10\x06\x42\t\n\x07_choiceB\x06\n\x04_ppsB\x06\n\x04_bpsB\x07\n\x05_kbpsB\x07\n\x05_mbpsB\x07\n\x05_gbpsB\r\n\x0b_percentage\"\xd5\x02\n\x0c\x46lowDuration\x12\x32\n\x06\x63hoice\x18\x01 \x01(\x0e\x32\x1d.otg.FlowDuration.Choice.EnumH\x00\x88\x01\x01\x12,\n\rfixed_packets\x18\x02 \x01(\x0b\x32\x15.otg.FlowFixedPackets\x12,\n\rfixed_seconds\x18\x03 \x01(\x0b\x32\x15.otg.FlowFixedSeconds\x12\x1d\n\x05\x62urst\x18\x04 \x01(\x0b\x32\x0e.otg.FlowBurst\x12\'\n\ncontinuous\x18\x05 \x01(\x0b\x32\x13.otg.FlowContinuous\x1a\x62\n\x06\x43hoice\"X\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\x11\n\rfixed_packets\x10\x01\x12\x11\n\rfixed_seconds\x10\x02\x12\t\n\x05\x62urst\x10\x03\x12\x0e\n\ncontinuous\x10\x04\x42\t\n\x07_choice\"I\n\x0e\x46lowContinuous\x12\x10\n\x03gap\x18\x01 \x01(\rH\x00\x88\x01\x01\x12\x1d\n\x05\x64\x65lay\x18\x02 \x01(\x0b\x32\x0e.otg.FlowDelayB\x06\n\x04_gap\"\x8c\x02\n\tFlowDelay\x12/\n\x06\x63hoice\x18\x01 \x01(\x0e\x32\x1a.otg.FlowDelay.Choice.EnumH\x00\x88\x01\x01\x12\x12\n\x05\x62ytes\x18\x02 \x01(\x02H\x01\x88\x01\x01\x12\x18\n\x0bnanoseconds\x18\x03 \x01(\x02H\x02\x88\x01\x01\x12\x19\n\x0cmicroseconds\x18\x04 \x01(\x02H\x03\x88\x01\x01\x1aO\n\x06\x43hoice\"E\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\t\n\x05\x62ytes\x10\x01\x12\x0f\n\x0bnanoseconds\x10\x02\x12\x10\n\x0cmicroseconds\x10\x03\x42\t\n\x07_choiceB\x08\n\x06_bytesB\x0e\n\x0c_nanosecondsB\x0f\n\r_microseconds\"m\n\x10\x46lowFixedPackets\x12\x14\n\x07packets\x18\x01 \x01(\rH\x00\x88\x01\x01\x12\x10\n\x03gap\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x1d\n\x05\x64\x65lay\x18\x03 \x01(\x0b\x32\x0e.otg.FlowDelayB\n\n\x08_packetsB\x06\n\x04_gap\"m\n\x10\x46lowFixedSeconds\x12\x14\n\x07seconds\x18\x01 \x01(\x02H\x00\x88\x01\x01\x12\x10\n\x03gap\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x1d\n\x05\x64\x65lay\x18\x03 \x01(\x0b\x32\x0e.otg.FlowDelayB\n\n\x08_secondsB\x06\n\x04_gap\"\xa0\x01\n\tFlowBurst\x12\x13\n\x06\x62ursts\x18\x01 \x01(\rH\x00\x88\x01\x01\x12\x14\n\x07packets\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x10\n\x03gap\x18\x03 \x01(\rH\x02\x88\x01\x01\x12\x37\n\x0finter_burst_gap\x18\x04 \x01(\x0b\x32\x1e.otg.FlowDurationInterBurstGapB\t\n\x07_burstsB\n\n\x08_packetsB\x06\n\x04_gap\"\xac\x02\n\x19\x46lowDurationInterBurstGap\x12?\n\x06\x63hoice\x18\x01 \x01(\x0e\x32*.otg.FlowDurationInterBurstGap.Choice.EnumH\x00\x88\x01\x01\x12\x12\n\x05\x62ytes\x18\x02 \x01(\x01H\x01\x88\x01\x01\x12\x18\n\x0bnanoseconds\x18\x03 \x01(\x01H\x02\x88\x01\x01\x12\x19\n\x0cmicroseconds\x18\x04 \x01(\x01H\x03\x88\x01\x01\x1aO\n\x06\x43hoice\"E\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\t\n\x05\x62ytes\x10\x01\x12\x0f\n\x0bnanoseconds\x10\x02\x12\x10\n\x0cmicroseconds\x10\x03\x42\t\n\x07_choiceB\x08\n\x06_bytesB\x0e\n\x0c_nanosecondsB\x0f\n\r_microseconds\"\xfd\x01\n\x0b\x46lowMetrics\x12\x13\n\x06\x65nable\x18\x01 \x01(\x08H\x00\x88\x01\x01\x12\x11\n\x04loss\x18\x02 \x01(\x08H\x01\x88\x01\x01\x12\'\n\x0brx_tx_ratio\x18\x06 \x01(\x0b\x32\x12.otg.FlowRxTxRatio\x12\x17\n\ntimestamps\x18\x03 \x01(\x08H\x02\x88\x01\x01\x12(\n\x07latency\x18\x04 \x01(\x0b\x32\x17.otg.FlowLatencyMetrics\x12\x37\n\x16predefined_metric_tags\x18\x05 \x01(\x0b\x32\x17.otg.FlowPredefinedTagsB\t\n\x07_enableB\x07\n\x05_lossB\r\n\x0b_timestamps\"\xb8\x01\n\x12\x46lowLatencyMetrics\x12\x13\n\x06\x65nable\x18\x01 \x01(\x08H\x00\x88\x01\x01\x12\x34\n\x04mode\x18\x02 \x01(\x0e\x32!.otg.FlowLatencyMetrics.Mode.EnumH\x01\x88\x01\x01\x1a\x43\n\x04Mode\";\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\x11\n\rstore_forward\x10\x01\x12\x0f\n\x0b\x63ut_through\x10\x02\x42\t\n\x07_enableB\x07\n\x05_mode\"6\n\x12\x46lowPredefinedTags\x12\x14\n\x07rx_name\x18\x01 \x01(\x08H\x00\x88\x01\x01\x42\n\n\x08_rx_name\"\xd6\x01\n\rFlowRxTxRatio\x12\x33\n\x06\x63hoice\x18\x01 \x01(\x0e\x32\x1e.otg.FlowRxTxRatio.Choice.EnumH\x00\x88\x01\x01\x12+\n\x08rx_count\x18\x02 \x01(\x0b\x32\x19.otg.FlowRxTxRatioRxCount\x12\x12\n\x05value\x18\x03 \x01(\x02H\x01\x88\x01\x01\x1a:\n\x06\x43hoice\"0\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\x0c\n\x08rx_count\x10\x01\x12\t\n\x05value\x10\x02\x42\t\n\x07_choiceB\x08\n\x06_value\"\x16\n\x14\x46lowRxTxRatioRxCount\"\xbf\x01\n\x05\x45vent\x12\x13\n\x06\x65nable\x18\x01 \x01(\x08H\x00\x88\x01\x01\x12\x1c\n\x04link\x18\x02 \x01(\x0b\x32\x0e.otg.EventLink\x12\x34\n\x11rx_rate_threshold\x18\x03 \x01(\x0b\x32\x19.otg.EventRxRateThreshold\x12\x42\n\x18route_advertise_withdraw\x18\x04 \x01(\x0b\x32 .otg.EventRouteAdvertiseWithdrawB\t\n\x07_enable\"\\\n\x14\x45ventRxRateThreshold\x12\x13\n\x06\x65nable\x18\x01 \x01(\x08H\x00\x88\x01\x01\x12\x16\n\tthreshold\x18\x02 \x01(\x02H\x01\x88\x01\x01\x42\t\n\x07_enableB\x0c\n\n_threshold\"+\n\tEventLink\x12\x13\n\x06\x65nable\x18\x01 \x01(\x08H\x00\x88\x01\x01\x42\t\n\x07_enable\"=\n\x1b\x45ventRouteAdvertiseWithdraw\x12\x13\n\x06\x65nable\x18\x01 \x01(\x08H\x00\x88\x01\x01\x42\t\n\x07_enable\"\xf5\x01\n\x0c\x45ventRequest\x12)\n\x04type\x18\x01 \x03(\x0e\x32\x1b.otg.EventRequest.Type.Enum\x12\x0e\n\x06source\x18\x02 \x03(\t\x1a\xa9\x01\n\x04Type\"\xa0\x01\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\r\n\tlink_down\x10\x01\x12\x0b\n\x07link_up\x10\x02\x12\x12\n\x0eroute_withdraw\x10\x03\x12\x13\n\x0froute_advertise\x10\x04\x12 \n\x1c\x66low_rx_rate_above_threshold\x10\x05\x12 \n\x1c\x66low_rx_rate_below_threshold\x10\x06\"b\n\x11\x45ventSubscription\x12!\n\x06\x65vents\x18\x01 \x01(\x0b\x32\x11.otg.EventRequest\x12\x19\n\x0c\x63\x61llback_url\x18\x02 \x01(\tH\x00\x88\x01\x01\x42\x0f\n\r_callback_url\"\xa5\x02\n\x04Lldp\x12\'\n\nconnection\x18\x01 \x01(\x0b\x32\x13.otg.LldpConnection\x12&\n\nchassis_id\x18\x02 \x01(\x0b\x32\x12.otg.LldpChassisId\x12 \n\x07port_id\x18\x03 \x01(\x0b\x32\x0f.otg.LldpPortId\x12(\n\x0bsystem_name\x18\x04 \x01(\x0b\x32\x13.otg.LldpSystemName\x12\x16\n\thold_time\x18\x05 \x01(\rH\x00\x88\x01\x01\x12#\n\x16\x61\x64vertisement_interval\x18\x06 \x01(\rH\x01\x88\x01\x01\x12\x11\n\x04name\x18\x07 \x01(\tH\x02\x88\x01\x01\x42\x0c\n\n_hold_timeB\x19\n\x17_advertisement_intervalB\x07\n\x05_name\"\xa9\x01\n\x0eLldpConnection\x12\x34\n\x06\x63hoice\x18\x01 \x01(\x0e\x32\x1f.otg.LldpConnection.Choice.EnumH\x00\x88\x01\x01\x12\x16\n\tport_name\x18\x02 \x01(\tH\x01\x88\x01\x01\x1a\x30\n\x06\x43hoice\"&\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\r\n\tport_name\x10\x01\x42\t\n\x07_choiceB\x0c\n\n_port_name\"\xe1\x02\n\rLldpChassisId\x12\x33\n\x06\x63hoice\x18\x01 \x01(\x0e\x32\x1e.otg.LldpChassisId.Choice.EnumH\x00\x88\x01\x01\x12\x37\n\x13mac_address_subtype\x18\x02 \x01(\x0b\x32\x1a.otg.LldpChassisMacSubType\x12#\n\x16interface_name_subtype\x18\x03 \x01(\tH\x01\x88\x01\x01\x12\x1a\n\rlocal_subtype\x18\x04 \x01(\tH\x02\x88\x01\x01\x1ai\n\x06\x43hoice\"_\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\x17\n\x13mac_address_subtype\x10\x01\x12\x1a\n\x16interface_name_subtype\x10\x02\x12\x11\n\rlocal_subtype\x10\x03\x42\t\n\x07_choiceB\x19\n\x17_interface_name_subtypeB\x10\n\x0e_local_subtype\"\xdf\x02\n\nLldpPortId\x12\x30\n\x06\x63hoice\x18\x01 \x01(\x0e\x32\x1b.otg.LldpPortId.Choice.EnumH\x00\x88\x01\x01\x12 \n\x13mac_address_subtype\x18\x02 \x01(\tH\x01\x88\x01\x01\x12\x41\n\x16interface_name_subtype\x18\x03 \x01(\x0b\x32!.otg.LldpPortInterfaceNameSubType\x12\x1a\n\rlocal_subtype\x18\x04 \x01(\tH\x02\x88\x01\x01\x1ai\n\x06\x43hoice\"_\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\x17\n\x13mac_address_subtype\x10\x01\x12\x1a\n\x16interface_name_subtype\x10\x02\x12\x11\n\rlocal_subtype\x10\x03\x42\t\n\x07_choiceB\x16\n\x14_mac_address_subtypeB\x10\n\x0e_local_subtype\"\xd1\x01\n\x15LldpChassisMacSubType\x12;\n\x06\x63hoice\x18\x01 \x01(\x0e\x32&.otg.LldpChassisMacSubType.Choice.EnumH\x00\x88\x01\x01\x12\x11\n\x04\x61uto\x18\x02 \x01(\tH\x01\x88\x01\x01\x12\x12\n\x05value\x18\x03 \x01(\tH\x02\x88\x01\x01\x1a\x36\n\x06\x43hoice\",\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\x08\n\x04\x61uto\x10\x01\x12\t\n\x05value\x10\x02\x42\t\n\x07_choiceB\x07\n\x05_autoB\x08\n\x06_value\"\xdf\x01\n\x1cLldpPortInterfaceNameSubType\x12\x42\n\x06\x63hoice\x18\x01 \x01(\x0e\x32-.otg.LldpPortInterfaceNameSubType.Choice.EnumH\x00\x88\x01\x01\x12\x11\n\x04\x61uto\x18\x02 \x01(\tH\x01\x88\x01\x01\x12\x12\n\x05value\x18\x03 \x01(\tH\x02\x88\x01\x01\x1a\x36\n\x06\x43hoice\",\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\x08\n\x04\x61uto\x10\x01\x12\t\n\x05value\x10\x02\x42\t\n\x07_choiceB\x07\n\x05_autoB\x08\n\x06_value\"\xc3\x01\n\x0eLldpSystemName\x12\x34\n\x06\x63hoice\x18\x01 \x01(\x0e\x32\x1f.otg.LldpSystemName.Choice.EnumH\x00\x88\x01\x01\x12\x11\n\x04\x61uto\x18\x02 \x01(\tH\x01\x88\x01\x01\x12\x12\n\x05value\x18\x03 \x01(\tH\x02\x88\x01\x01\x1a\x36\n\x06\x43hoice\",\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\x08\n\x04\x61uto\x10\x01\x12\t\n\x05value\x10\x02\x42\t\n\x07_choiceB\x07\n\x05_autoB\x08\n\x06_value\"\xa4\x01\n\x05\x45rror\x12\x11\n\x04\x63ode\x18\x01 \x01(\x05H\x00\x88\x01\x01\x12\'\n\x04kind\x18\x02 \x01(\x0e\x32\x14.otg.Error.Kind.EnumH\x01\x88\x01\x01\x12\x0e\n\x06\x65rrors\x18\x03 \x03(\t\x1a=\n\x04Kind\"5\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\x0e\n\nvalidation\x10\x01\x12\x0c\n\x08internal\x10\x02\x42\x07\n\x05_codeB\x07\n\x05_kind\"\x1b\n\x07Warning\x12\x10\n\x08warnings\x18\x01 \x03(\t\"\x9c\x01\n\x0c\x43onfigUpdate\x12\x32\n\x06\x63hoice\x18\x01 \x01(\x0e\x32\x1d.otg.ConfigUpdate.Choice.EnumH\x00\x88\x01\x01\x12\x1f\n\x05\x66lows\x18\x02 \x01(\x0b\x32\x10.otg.FlowsUpdate\x1a,\n\x06\x43hoice\"\"\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\t\n\x05\x66lows\x10\x01\x42\t\n\x07_choice\"\xa2\x01\n\x0b\x46lowsUpdate\x12;\n\x0eproperty_names\x18\x01 \x03(\x0e\x32#.otg.FlowsUpdate.PropertyNames.Enum\x12\x18\n\x05\x66lows\x18\x02 \x03(\x0b\x32\t.otg.Flow\x1a<\n\rPropertyNames\"+\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\x08\n\x04rate\x10\x01\x12\x08\n\x04size\x10\x02\"\xfd\x01\n\x0c\x43ontrolState\x12\x32\n\x06\x63hoice\x18\x01 \x01(\x0e\x32\x1d.otg.ControlState.Choice.EnumH\x00\x88\x01\x01\x12\x1c\n\x04port\x18\x02 \x01(\x0b\x32\x0e.otg.StatePort\x12$\n\x08protocol\x18\x03 \x01(\x0b\x32\x12.otg.StateProtocol\x12\"\n\x07traffic\x18\x04 \x01(\x0b\x32\x11.otg.StateTraffic\x1a\x46\n\x06\x43hoice\"<\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\x08\n\x04port\x10\x01\x12\x0c\n\x08protocol\x10\x02\x12\x0b\n\x07traffic\x10\x03\x42\t\n\x07_choice\"\xcb\x01\n\tStatePort\x12/\n\x06\x63hoice\x18\x01 \x01(\x0e\x32\x1a.otg.StatePort.Choice.EnumH\x00\x88\x01\x01\x12 \n\x04link\x18\x02 \x01(\x0b\x32\x12.otg.StatePortLink\x12&\n\x07\x63\x61pture\x18\x03 \x01(\x0b\x32\x15.otg.StatePortCapture\x1a\x38\n\x06\x43hoice\".\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\x08\n\x04link\x10\x01\x12\x0b\n\x07\x63\x61pture\x10\x02\x42\t\n\x07_choice\"\xb9\x01\n\x0cStateTraffic\x12\x32\n\x06\x63hoice\x18\x01 \x01(\x0e\x32\x1d.otg.StateTraffic.Choice.EnumH\x00\x88\x01\x01\x12\x34\n\rflow_transmit\x18\x02 \x01(\x0b\x32\x1d.otg.StateTrafficFlowTransmit\x1a\x34\n\x06\x43hoice\"*\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\x11\n\rflow_transmit\x10\x01\x42\t\n\x07_choice\"\xdf\x02\n\rStateProtocol\x12\x33\n\x06\x63hoice\x18\x01 \x01(\x0e\x32\x1e.otg.StateProtocol.Choice.EnumH\x00\x88\x01\x01\x12\"\n\x03\x61ll\x18\x02 \x01(\x0b\x32\x15.otg.StateProtocolAll\x12&\n\x05route\x18\x03 \x01(\x0b\x32\x17.otg.StateProtocolRoute\x12$\n\x04lacp\x18\x04 \x01(\x0b\x32\x16.otg.StateProtocolLacp\x12\"\n\x03\x62gp\x18\x05 \x01(\x0b\x32\x15.otg.StateProtocolBgp\x12$\n\x04isis\x18\x06 \x01(\x0b\x32\x16.otg.StateProtocolIsis\x1aR\n\x06\x43hoice\"H\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\x07\n\x03\x61ll\x10\x01\x12\t\n\x05route\x10\x02\x12\x08\n\x04lacp\x10\x03\x12\x07\n\x03\x62gp\x10\x04\x12\x08\n\x04isis\x10\x05\x42\t\n\x07_choice\"\x94\x01\n\rStatePortLink\x12\x12\n\nport_names\x18\x01 \x03(\t\x12\x31\n\x05state\x18\x02 \x01(\x0e\x32\x1d.otg.StatePortLink.State.EnumH\x00\x88\x01\x01\x1a\x32\n\x05State\")\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\x06\n\x02up\x10\x01\x12\x08\n\x04\x64own\x10\x02\x42\x08\n\x06_state\"\x9d\x01\n\x10StatePortCapture\x12\x12\n\nport_names\x18\x01 \x03(\t\x12\x34\n\x05state\x18\x02 \x01(\x0e\x32 .otg.StatePortCapture.State.EnumH\x00\x88\x01\x01\x1a\x35\n\x05State\",\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\t\n\x05start\x10\x01\x12\x08\n\x04stop\x10\x02\x42\x08\n\x06_state\"\xc4\x01\n\x18StateTrafficFlowTransmit\x12\x12\n\nflow_names\x18\x01 \x03(\t\x12<\n\x05state\x18\x02 \x01(\x0e\x32(.otg.StateTrafficFlowTransmit.State.EnumH\x00\x88\x01\x01\x1aL\n\x05State\"C\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\t\n\x05start\x10\x01\x12\x08\n\x04stop\x10\x02\x12\t\n\x05pause\x10\x03\x12\n\n\x06resume\x10\x04\x42\x08\n\x06_state\"\x89\x01\n\x10StateProtocolAll\x12\x34\n\x05state\x18\x01 \x01(\x0e\x32 .otg.StateProtocolAll.State.EnumH\x00\x88\x01\x01\x1a\x35\n\x05State\",\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\t\n\x05start\x10\x01\x12\x08\n\x04stop\x10\x02\x42\x08\n\x06_state\"\xa4\x01\n\x12StateProtocolRoute\x12\r\n\x05names\x18\x01 \x03(\t\x12\x36\n\x05state\x18\x02 \x01(\x0e\x32\".otg.StateProtocolRoute.State.EnumH\x00\x88\x01\x01\x1a=\n\x05State\"4\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\x0c\n\x08withdraw\x10\x01\x12\r\n\tadvertise\x10\x02\x42\x08\n\x06_state\"\xfc\x01\n\x11StateProtocolLacp\x12\x37\n\x06\x63hoice\x18\x01 \x01(\x0e\x32\".otg.StateProtocolLacp.Choice.EnumH\x00\x88\x01\x01\x12*\n\x05\x61\x64min\x18\x02 \x01(\x0b\x32\x1b.otg.StateProtocolLacpAdmin\x12\x37\n\x0cmember_ports\x18\x03 \x01(\x0b\x32!.otg.StateProtocolLacpMemberPorts\x1a>\n\x06\x43hoice\"4\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\t\n\x05\x61\x64min\x10\x01\x12\x10\n\x0cmember_ports\x10\x02\x42\t\n\x07_choice\"\xac\x01\n\x16StateProtocolLacpAdmin\x12\x18\n\x10lag_member_names\x18\x01 \x03(\t\x12:\n\x05state\x18\x02 \x01(\x0e\x32&.otg.StateProtocolLacpAdmin.State.EnumH\x00\x88\x01\x01\x1a\x32\n\x05State\")\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\x06\n\x02up\x10\x01\x12\x08\n\x04\x64own\x10\x02\x42\x08\n\x06_state\"\xb8\x01\n\x1cStateProtocolLacpMemberPorts\x12\x18\n\x10lag_member_names\x18\x01 \x03(\t\x12@\n\x05state\x18\x02 \x01(\x0e\x32,.otg.StateProtocolLacpMemberPorts.State.EnumH\x00\x88\x01\x01\x1a\x32\n\x05State\")\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\x06\n\x02up\x10\x01\x12\x08\n\x04\x64own\x10\x02\x42\x08\n\x06_state\"\xae\x01\n\x10StateProtocolBgp\x12\x36\n\x06\x63hoice\x18\x01 \x01(\x0e\x32!.otg.StateProtocolBgp.Choice.EnumH\x00\x88\x01\x01\x12)\n\x05peers\x18\x02 \x01(\x0b\x32\x1a.otg.StateProtocolBgpPeers\x1a,\n\x06\x43hoice\"\"\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\t\n\x05peers\x10\x01\x42\t\n\x07_choice\"\xa4\x01\n\x15StateProtocolBgpPeers\x12\x12\n\npeer_names\x18\x01 \x03(\t\x12\x39\n\x05state\x18\x02 \x01(\x0e\x32%.otg.StateProtocolBgpPeers.State.EnumH\x00\x88\x01\x01\x1a\x32\n\x05State\")\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\x06\n\x02up\x10\x01\x12\x08\n\x04\x64own\x10\x02\x42\x08\n\x06_state\"\xb7\x01\n\x11StateProtocolIsis\x12\x37\n\x06\x63hoice\x18\x01 \x01(\x0e\x32\".otg.StateProtocolIsis.Choice.EnumH\x00\x88\x01\x01\x12.\n\x07routers\x18\x02 \x01(\x0b\x32\x1d.otg.StateProtocolIsisRouters\x1a.\n\x06\x43hoice\"$\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\x0b\n\x07routers\x10\x01\x42\t\n\x07_choice\"\xac\x01\n\x18StateProtocolIsisRouters\x12\x14\n\x0crouter_names\x18\x01 \x03(\t\x12<\n\x05state\x18\x02 \x01(\x0e\x32(.otg.StateProtocolIsisRouters.State.EnumH\x00\x88\x01\x01\x1a\x32\n\x05State\")\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\x06\n\x02up\x10\x01\x12\x08\n\x04\x64own\x10\x02\x42\x08\n\x06_state\"\xa7\x01\n\rControlAction\x12\x33\n\x06\x63hoice\x18\x01 \x01(\x0e\x32\x1e.otg.ControlAction.Choice.EnumH\x00\x88\x01\x01\x12%\n\x08protocol\x18\x02 \x01(\x0b\x32\x13.otg.ActionProtocol\x1a/\n\x06\x43hoice\"%\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\x0c\n\x08protocol\x10\x01\x42\t\n\x07_choice\"P\n\x15\x43ontrolActionResponse\x12\x10\n\x08warnings\x18\x01 \x03(\t\x12%\n\x08response\x18\x02 \x01(\x0b\x32\x13.otg.ActionResponse\"\xb1\x01\n\x0e\x41\x63tionResponse\x12\x34\n\x06\x63hoice\x18\x01 \x01(\x0e\x32\x1f.otg.ActionResponse.Choice.EnumH\x00\x88\x01\x01\x12-\n\x08protocol\x18\x02 \x01(\x0b\x32\x1b.otg.ActionResponseProtocol\x1a/\n\x06\x43hoice\"%\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\x0c\n\x08protocol\x10\x01\x42\t\n\x07_choice\"\x84\x02\n\x0e\x41\x63tionProtocol\x12\x34\n\x06\x63hoice\x18\x01 \x01(\x0e\x32\x1f.otg.ActionProtocol.Choice.EnumH\x00\x88\x01\x01\x12%\n\x04ipv4\x18\x02 \x01(\x0b\x32\x17.otg.ActionProtocolIpv4\x12%\n\x04ipv6\x18\x03 \x01(\x0b\x32\x17.otg.ActionProtocolIpv6\x12#\n\x03\x62gp\x18\x04 \x01(\x0b\x32\x16.otg.ActionProtocolBgp\x1a>\n\x06\x43hoice\"4\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\x08\n\x04ipv4\x10\x01\x12\x08\n\x04ipv6\x10\x02\x12\x07\n\x03\x62gp\x10\x03\x42\t\n\x07_choice\"\xf6\x01\n\x16\x41\x63tionResponseProtocol\x12<\n\x06\x63hoice\x18\x01 \x01(\x0e\x32\'.otg.ActionResponseProtocol.Choice.EnumH\x00\x88\x01\x01\x12-\n\x04ipv4\x18\x02 \x01(\x0b\x32\x1f.otg.ActionResponseProtocolIpv4\x12-\n\x04ipv6\x18\x03 \x01(\x0b\x32\x1f.otg.ActionResponseProtocolIpv6\x1a\x35\n\x06\x43hoice\"+\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\x08\n\x04ipv4\x10\x01\x12\x08\n\x04ipv6\x10\x02\x42\t\n\x07_choice\"\xb1\x01\n\x12\x41\x63tionProtocolIpv4\x12\x38\n\x06\x63hoice\x18\x01 \x01(\x0e\x32#.otg.ActionProtocolIpv4.Choice.EnumH\x00\x88\x01\x01\x12)\n\x04ping\x18\x02 \x01(\x0b\x32\x1b.otg.ActionProtocolIpv4Ping\x1a+\n\x06\x43hoice\"!\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\x08\n\x04ping\x10\x01\x42\t\n\x07_choice\"\xc9\x01\n\x1a\x41\x63tionResponseProtocolIpv4\x12@\n\x06\x63hoice\x18\x01 \x01(\x0e\x32+.otg.ActionResponseProtocolIpv4.Choice.EnumH\x00\x88\x01\x01\x12\x31\n\x04ping\x18\x02 \x01(\x0b\x32#.otg.ActionResponseProtocolIpv4Ping\x1a+\n\x06\x43hoice\"!\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\x08\n\x04ping\x10\x01\x42\t\n\x07_choice\"N\n\x16\x41\x63tionProtocolIpv4Ping\x12\x34\n\x08requests\x18\x01 \x03(\x0b\x32\".otg.ActionProtocolIpv4PingRequest\"c\n\x1d\x41\x63tionProtocolIpv4PingRequest\x12\x15\n\x08src_name\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x13\n\x06\x64st_ip\x18\x02 \x01(\tH\x01\x88\x01\x01\x42\x0b\n\t_src_nameB\t\n\x07_dst_ip\"`\n\x1e\x41\x63tionResponseProtocolIpv4Ping\x12>\n\tresponses\x18\x01 \x03(\x0b\x32+.otg.ActionResponseProtocolIpv4PingResponse\"\x83\x02\n&ActionResponseProtocolIpv4PingResponse\x12\x15\n\x08src_name\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x13\n\x06\x64st_ip\x18\x02 \x01(\tH\x01\x88\x01\x01\x12L\n\x06result\x18\x03 \x01(\x0e\x32\x37.otg.ActionResponseProtocolIpv4PingResponse.Result.EnumH\x02\x88\x01\x01\x1a<\n\x06Result\"2\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\r\n\tsucceeded\x10\x01\x12\n\n\x06\x66\x61iled\x10\x02\x42\x0b\n\t_src_nameB\t\n\x07_dst_ipB\t\n\x07_result\"\xb1\x01\n\x12\x41\x63tionProtocolIpv6\x12\x38\n\x06\x63hoice\x18\x01 \x01(\x0e\x32#.otg.ActionProtocolIpv6.Choice.EnumH\x00\x88\x01\x01\x12)\n\x04ping\x18\x02 \x01(\x0b\x32\x1b.otg.ActionProtocolIpv6Ping\x1a+\n\x06\x43hoice\"!\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\x08\n\x04ping\x10\x01\x42\t\n\x07_choice\"\xc9\x01\n\x1a\x41\x63tionResponseProtocolIpv6\x12@\n\x06\x63hoice\x18\x01 \x01(\x0e\x32+.otg.ActionResponseProtocolIpv6.Choice.EnumH\x00\x88\x01\x01\x12\x31\n\x04ping\x18\x02 \x01(\x0b\x32#.otg.ActionResponseProtocolIpv6Ping\x1a+\n\x06\x43hoice\"!\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\x08\n\x04ping\x10\x01\x42\t\n\x07_choice\"N\n\x16\x41\x63tionProtocolIpv6Ping\x12\x34\n\x08requests\x18\x01 \x03(\x0b\x32\".otg.ActionProtocolIpv6PingRequest\"c\n\x1d\x41\x63tionProtocolIpv6PingRequest\x12\x15\n\x08src_name\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x13\n\x06\x64st_ip\x18\x02 \x01(\tH\x01\x88\x01\x01\x42\x0b\n\t_src_nameB\t\n\x07_dst_ip\"`\n\x1e\x41\x63tionResponseProtocolIpv6Ping\x12>\n\tresponses\x18\x01 \x03(\x0b\x32+.otg.ActionResponseProtocolIpv6PingResponse\"\x83\x02\n&ActionResponseProtocolIpv6PingResponse\x12\x15\n\x08src_name\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x13\n\x06\x64st_ip\x18\x02 \x01(\tH\x01\x88\x01\x01\x12L\n\x06result\x18\x03 \x01(\x0e\x32\x37.otg.ActionResponseProtocolIpv6PingResponse.Result.EnumH\x02\x88\x01\x01\x1a<\n\x06Result\"2\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\r\n\tsucceeded\x10\x01\x12\n\n\x06\x66\x61iled\x10\x02\x42\x0b\n\t_src_nameB\t\n\x07_dst_ipB\t\n\x07_result\"\xb7\x02\n\x11\x41\x63tionProtocolBgp\x12\x37\n\x06\x63hoice\x18\x01 \x01(\x0e\x32\".otg.ActionProtocolBgp.Choice.EnumH\x00\x88\x01\x01\x12\x38\n\x0cnotification\x18\x02 \x01(\x0b\x32\".otg.ActionProtocolBgpNotification\x12P\n\x19initiate_graceful_restart\x18\x03 \x01(\x0b\x32-.otg.ActionProtocolBgpInitiateGracefulRestart\x1aR\n\x06\x43hoice\"H\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\x10\n\x0cnotification\x10\x01\x12\x1d\n\x19initiate_graceful_restart\x10\x02\x42\t\n\x07_choice\"\xd5\x05\n\x1d\x41\x63tionProtocolBgpNotification\x12\r\n\x05names\x18\x01 \x03(\t\x12\x43\n\x06\x63hoice\x18\x02 \x01(\x0e\x32..otg.ActionProtocolBgpNotification.Choice.EnumH\x00\x88\x01\x01\x12\'\n\x05\x63\x65\x61se\x18\x03 \x01(\x0b\x32\x18.otg.DeviceBgpCeaseError\x12>\n\x14message_header_error\x18\x04 \x01(\x0b\x32 .otg.DeviceBgpMessageHeaderError\x12:\n\x12open_message_error\x18\x05 \x01(\x0b\x32\x1e.otg.DeviceBgpOpenMessageError\x12>\n\x14update_message_error\x18\x06 \x01(\x0b\x32 .otg.DeviceBgpUpdateMessageError\x12:\n\x12hold_timer_expired\x18\x07 \x01(\x0b\x32\x1e.otg.DeviceBgpHoldTimerExpired\x12I\n\x1a\x66inite_state_machine_error\x18\x08 \x01(\x0b\x32%.otg.DeviceBgpFiniteStateMachineError\x12)\n\x06\x63ustom\x18\t \x01(\x0b\x32\x19.otg.DeviceBgpCustomError\x1a\xbd\x01\n\x06\x43hoice\"\xb2\x01\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\t\n\x05\x63\x65\x61se\x10\x01\x12\x18\n\x14message_header_error\x10\x02\x12\x16\n\x12open_message_error\x10\x03\x12\x18\n\x14update_message_error\x10\x04\x12\x16\n\x12hold_timer_expired\x10\x05\x12\x1e\n\x1a\x66inite_state_machine_error\x10\x06\x12\n\n\x06\x63ustom\x10\x07\x42\t\n\x07_choice\"l\n(ActionProtocolBgpInitiateGracefulRestart\x12\x12\n\npeer_names\x18\x01 \x03(\t\x12\x1a\n\rrestart_delay\x18\x02 \x01(\rH\x00\x88\x01\x01\x42\x10\n\x0e_restart_delay\"\xb0\x04\n\x0eMetricsRequest\x12\x34\n\x06\x63hoice\x18\x01 \x01(\x0e\x32\x1f.otg.MetricsRequest.Choice.EnumH\x00\x88\x01\x01\x12%\n\x04port\x18\x02 \x01(\x0b\x32\x17.otg.PortMetricsRequest\x12%\n\x04\x66low\x18\x03 \x01(\x0b\x32\x17.otg.FlowMetricsRequest\x12\'\n\x05\x62gpv4\x18\x04 \x01(\x0b\x32\x18.otg.Bgpv4MetricsRequest\x12\'\n\x05\x62gpv6\x18\x05 \x01(\x0b\x32\x18.otg.Bgpv6MetricsRequest\x12%\n\x04isis\x18\x06 \x01(\x0b\x32\x17.otg.IsisMetricsRequest\x12#\n\x03lag\x18\x07 \x01(\x0b\x32\x16.otg.LagMetricsRequest\x12%\n\x04lacp\x18\x08 \x01(\x0b\x32\x17.otg.LacpMetricsRequest\x12%\n\x04lldp\x18\t \x01(\x0b\x32\x17.otg.LldpMetricsRequest\x12%\n\x04rsvp\x18\n \x01(\x0b\x32\x17.otg.RsvpMetricsRequest\x1a|\n\x06\x43hoice\"r\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\x08\n\x04port\x10\x01\x12\x08\n\x04\x66low\x10\x02\x12\t\n\x05\x62gpv4\x10\x03\x12\t\n\x05\x62gpv6\x10\x04\x12\x08\n\x04isis\x10\x05\x12\x07\n\x03lag\x10\x06\x12\x08\n\x04lacp\x10\x07\x12\x08\n\x04lldp\x10\x08\x12\x08\n\x04rsvp\x10\tB\t\n\x07_choice\"\xfc\x04\n\x0fMetricsResponse\x12\x35\n\x06\x63hoice\x18\x01 \x01(\x0e\x32 .otg.MetricsResponse.Choice.EnumH\x00\x88\x01\x01\x12%\n\x0cport_metrics\x18\x02 \x03(\x0b\x32\x0f.otg.PortMetric\x12%\n\x0c\x66low_metrics\x18\x03 \x03(\x0b\x32\x0f.otg.FlowMetric\x12\'\n\rbgpv4_metrics\x18\x04 \x03(\x0b\x32\x10.otg.Bgpv4Metric\x12\'\n\rbgpv6_metrics\x18\x05 \x03(\x0b\x32\x10.otg.Bgpv6Metric\x12%\n\x0cisis_metrics\x18\x06 \x03(\x0b\x32\x0f.otg.IsisMetric\x12#\n\x0blag_metrics\x18\x07 \x03(\x0b\x32\x0e.otg.LagMetric\x12%\n\x0clacp_metrics\x18\x08 \x03(\x0b\x32\x0f.otg.LacpMetric\x12%\n\x0clldp_metrics\x18\t \x03(\x0b\x32\x0f.otg.LldpMetric\x12%\n\x0crsvp_metrics\x18\n \x03(\x0b\x32\x0f.otg.RsvpMetric\x1a\xc5\x01\n\x06\x43hoice\"\xba\x01\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\x10\n\x0c\x66low_metrics\x10\x01\x12\x10\n\x0cport_metrics\x10\x02\x12\x11\n\rbgpv4_metrics\x10\x03\x12\x11\n\rbgpv6_metrics\x10\x04\x12\x10\n\x0cisis_metrics\x10\x05\x12\x0f\n\x0blag_metrics\x10\x06\x12\x10\n\x0clacp_metrics\x10\x07\x12\x10\n\x0clldp_metrics\x10\x08\x12\x10\n\x0crsvp_metrics\x10\tB\t\n\x07_choice\"\xcd\x02\n\x12PortMetricsRequest\x12\x12\n\nport_names\x18\x01 \x03(\t\x12>\n\x0c\x63olumn_names\x18\x02 \x03(\x0e\x32(.otg.PortMetricsRequest.ColumnNames.Enum\x1a\xe2\x01\n\x0b\x43olumnNames\"\xd2\x01\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\x0c\n\x08transmit\x10\x01\x12\x0c\n\x08location\x10\x02\x12\x08\n\x04link\x10\x03\x12\x0b\n\x07\x63\x61pture\x10\x04\x12\r\n\tframes_tx\x10\x05\x12\r\n\tframes_rx\x10\x06\x12\x0c\n\x08\x62ytes_tx\x10\x07\x12\x0c\n\x08\x62ytes_rx\x10\x08\x12\x12\n\x0e\x66rames_tx_rate\x10\t\x12\x12\n\x0e\x66rames_rx_rate\x10\n\x12\x11\n\rbytes_tx_rate\x10\x0b\x12\x11\n\rbytes_rx_rate\x10\x0c\"\x86\x06\n\nPortMetric\x12\x11\n\x04name\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x15\n\x08location\x18\x02 \x01(\tH\x01\x88\x01\x01\x12,\n\x04link\x18\x03 \x01(\x0e\x32\x19.otg.PortMetric.Link.EnumH\x02\x88\x01\x01\x12\x32\n\x07\x63\x61pture\x18\x04 \x01(\x0e\x32\x1c.otg.PortMetric.Capture.EnumH\x03\x88\x01\x01\x12\x16\n\tframes_tx\x18\x05 \x01(\x04H\x04\x88\x01\x01\x12\x16\n\tframes_rx\x18\x06 \x01(\x04H\x05\x88\x01\x01\x12\x15\n\x08\x62ytes_tx\x18\x07 \x01(\x04H\x06\x88\x01\x01\x12\x15\n\x08\x62ytes_rx\x18\x08 \x01(\x04H\x07\x88\x01\x01\x12\x1b\n\x0e\x66rames_tx_rate\x18\t \x01(\x02H\x08\x88\x01\x01\x12\x1b\n\x0e\x66rames_rx_rate\x18\n \x01(\x02H\t\x88\x01\x01\x12\x1a\n\rbytes_tx_rate\x18\x0b \x01(\x02H\n\x88\x01\x01\x12\x1a\n\rbytes_rx_rate\x18\x0c \x01(\x02H\x0b\x88\x01\x01\x12\x34\n\x08transmit\x18\r \x01(\x0e\x32\x1d.otg.PortMetric.Transmit.EnumH\x0c\x88\x01\x01\x1a\x31\n\x04Link\")\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\x06\n\x02up\x10\x01\x12\x08\n\x04\x64own\x10\x02\x1a<\n\x07\x43\x61pture\"1\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\x0b\n\x07started\x10\x01\x12\x0b\n\x07stopped\x10\x02\x1a=\n\x08Transmit\"1\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\x0b\n\x07started\x10\x01\x12\x0b\n\x07stopped\x10\x02\x42\x07\n\x05_nameB\x0b\n\t_locationB\x07\n\x05_linkB\n\n\x08_captureB\x0c\n\n_frames_txB\x0c\n\n_frames_rxB\x0b\n\t_bytes_txB\x0b\n\t_bytes_rxB\x11\n\x0f_frames_tx_rateB\x11\n\x0f_frames_rx_rateB\x10\n\x0e_bytes_tx_rateB\x10\n\x0e_bytes_rx_rateB\x0b\n\t_transmit\"\xb8\x02\n\x12\x46lowMetricsRequest\x12\x12\n\nflow_names\x18\x01 \x03(\t\x12>\n\x0cmetric_names\x18\x03 \x03(\x0e\x32(.otg.FlowMetricsRequest.MetricNames.Enum\x12\x34\n\x0etagged_metrics\x18\x04 \x01(\x0b\x32\x1c.otg.FlowTaggedMetricsFilter\x1a\x97\x01\n\x0bMetricNames\"\x87\x01\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\x0c\n\x08transmit\x10\x01\x12\r\n\tframes_tx\x10\x02\x12\r\n\tframes_rx\x10\x03\x12\x0c\n\x08\x62ytes_tx\x10\x04\x12\x0c\n\x08\x62ytes_rx\x10\x05\x12\x12\n\x0e\x66rames_tx_rate\x10\x06\x12\x12\n\x0e\x66rames_rx_rate\x10\x07\"\xf4\x02\n\x17\x46lowTaggedMetricsFilter\x12\x14\n\x07include\x18\x01 \x01(\x08H\x00\x88\x01\x01\x12\"\n\x15include_empty_metrics\x18\x02 \x01(\x08H\x01\x88\x01\x01\x12\x43\n\x0cmetric_names\x18\x03 \x03(\x0e\x32-.otg.FlowTaggedMetricsFilter.MetricNames.Enum\x12)\n\x07\x66ilters\x18\x04 \x03(\x0b\x32\x18.otg.FlowMetricTagFilter\x1a\x88\x01\n\x0bMetricNames\"y\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\r\n\tframes_tx\x10\x01\x12\r\n\tframes_rx\x10\x02\x12\x0c\n\x08\x62ytes_tx\x10\x03\x12\x0c\n\x08\x62ytes_rx\x10\x04\x12\x12\n\x0e\x66rames_tx_rate\x10\x05\x12\x12\n\x0e\x66rames_rx_rate\x10\x06\x42\n\n\x08_includeB\x18\n\x16_include_empty_metrics\"A\n\x13\x46lowMetricTagFilter\x12\x11\n\x04name\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x0e\n\x06values\x18\x02 \x03(\tB\x07\n\x05_name\"\x88\x05\n\nFlowMetric\x12\x11\n\x04name\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x14\n\x07port_tx\x18\x02 \x01(\tH\x01\x88\x01\x01\x12\x14\n\x07port_rx\x18\x03 \x01(\tH\x02\x88\x01\x01\x12\x34\n\x08transmit\x18\x05 \x01(\x0e\x32\x1d.otg.FlowMetric.Transmit.EnumH\x03\x88\x01\x01\x12\x16\n\tframes_tx\x18\x06 \x01(\x04H\x04\x88\x01\x01\x12\x16\n\tframes_rx\x18\x07 \x01(\x04H\x05\x88\x01\x01\x12\x15\n\x08\x62ytes_tx\x18\x08 \x01(\x04H\x06\x88\x01\x01\x12\x15\n\x08\x62ytes_rx\x18\t \x01(\x04H\x07\x88\x01\x01\x12\x1b\n\x0e\x66rames_tx_rate\x18\n \x01(\x02H\x08\x88\x01\x01\x12\x1b\n\x0e\x66rames_rx_rate\x18\x0b \x01(\x02H\t\x88\x01\x01\x12\x11\n\x04loss\x18\x0c \x01(\x02H\n\x88\x01\x01\x12(\n\ntimestamps\x18\r \x01(\x0b\x32\x14.otg.MetricTimestamp\x12#\n\x07latency\x18\x0e \x01(\x0b\x32\x12.otg.MetricLatency\x12-\n\x0etagged_metrics\x18\x0f \x03(\x0b\x32\x15.otg.FlowTaggedMetric\x1aI\n\x08Transmit\"=\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\x0b\n\x07started\x10\x01\x12\x0b\n\x07stopped\x10\x02\x12\n\n\x06paused\x10\x03\x42\x07\n\x05_nameB\n\n\x08_port_txB\n\n\x08_port_rxB\x0b\n\t_transmitB\x0c\n\n_frames_txB\x0c\n\n_frames_rxB\x0b\n\t_bytes_txB\x0b\n\t_bytes_rxB\x11\n\x0f_frames_tx_rateB\x11\n\x0f_frames_rx_rateB\x07\n\x05_loss\"\x93\x03\n\x10\x46lowTaggedMetric\x12 \n\x04tags\x18\x01 \x03(\x0b\x32\x12.otg.FlowMetricTag\x12\x16\n\tframes_tx\x18\x02 \x01(\x04H\x00\x88\x01\x01\x12\x16\n\tframes_rx\x18\x03 \x01(\x04H\x01\x88\x01\x01\x12\x15\n\x08\x62ytes_tx\x18\x04 \x01(\x04H\x02\x88\x01\x01\x12\x15\n\x08\x62ytes_rx\x18\x05 \x01(\x04H\x03\x88\x01\x01\x12\x1b\n\x0e\x66rames_tx_rate\x18\x06 \x01(\x02H\x04\x88\x01\x01\x12\x1b\n\x0e\x66rames_rx_rate\x18\x07 \x01(\x02H\x05\x88\x01\x01\x12\x11\n\x04loss\x18\x08 \x01(\x02H\x06\x88\x01\x01\x12(\n\ntimestamps\x18\t \x01(\x0b\x32\x14.otg.MetricTimestamp\x12#\n\x07latency\x18\n \x01(\x0b\x32\x12.otg.MetricLatencyB\x0c\n\n_frames_txB\x0c\n\n_frames_rxB\x0b\n\t_bytes_txB\x0b\n\t_bytes_rxB\x11\n\x0f_frames_tx_rateB\x11\n\x0f_frames_rx_rateB\x07\n\x05_loss\"S\n\rFlowMetricTag\x12\x11\n\x04name\x18\x01 \x01(\tH\x00\x88\x01\x01\x12&\n\x05value\x18\x02 \x01(\x0b\x32\x17.otg.FlowMetricTagValueB\x07\n\x05_name\"\xc2\x01\n\x12\x46lowMetricTagValue\x12\x38\n\x06\x63hoice\x18\x01 \x01(\x0e\x32#.otg.FlowMetricTagValue.Choice.EnumH\x00\x88\x01\x01\x12\x10\n\x03hex\x18\x02 \x01(\tH\x01\x88\x01\x01\x12\x10\n\x03str\x18\x03 \x01(\tH\x02\x88\x01\x01\x1a\x33\n\x06\x43hoice\")\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\x07\n\x03hex\x10\x01\x12\x07\n\x03str\x10\x02\x42\t\n\x07_choiceB\x06\n\x04_hexB\x06\n\x04_str\"\x7f\n\x0fMetricTimestamp\x12\x1f\n\x12\x66irst_timestamp_ns\x18\x01 \x01(\x01H\x00\x88\x01\x01\x12\x1e\n\x11last_timestamp_ns\x18\x02 \x01(\x01H\x01\x88\x01\x01\x42\x15\n\x13_first_timestamp_nsB\x14\n\x12_last_timestamp_ns\"\x87\x01\n\rMetricLatency\x12\x17\n\nminimum_ns\x18\x01 \x01(\x01H\x00\x88\x01\x01\x12\x17\n\nmaximum_ns\x18\x02 \x01(\x01H\x01\x88\x01\x01\x12\x17\n\naverage_ns\x18\x03 \x01(\x01H\x02\x88\x01\x01\x42\r\n\x0b_minimum_nsB\r\n\x0b_maximum_nsB\r\n\x0b_average_ns\"\xf9\x03\n\x13\x42gpv4MetricsRequest\x12\x12\n\npeer_names\x18\x01 \x03(\t\x12?\n\x0c\x63olumn_names\x18\x02 \x03(\x0e\x32).otg.Bgpv4MetricsRequest.ColumnNames.Enum\x1a\x8c\x03\n\x0b\x43olumnNames\"\xfc\x02\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\x11\n\rsession_state\x10\x01\x12\x16\n\x12session_flap_count\x10\x02\x12\x15\n\x11routes_advertised\x10\x03\x12\x13\n\x0froutes_received\x10\x04\x12\x18\n\x14route_withdraws_sent\x10\x05\x12\x1c\n\x18route_withdraws_received\x10\x06\x12\x10\n\x0cupdates_sent\x10\x07\x12\x14\n\x10updates_received\x10\x08\x12\x0e\n\nopens_sent\x10\t\x12\x12\n\x0eopens_received\x10\n\x12\x13\n\x0fkeepalives_sent\x10\x0b\x12\x17\n\x13keepalives_received\x10\x0c\x12\x16\n\x12notifications_sent\x10\r\x12\x1a\n\x16notifications_received\x10\x0e\x12\r\n\tfsm_state\x10\x0f\x12\x17\n\x13\x65nd_of_rib_received\x10\x10\"\xea\x08\n\x0b\x42gpv4Metric\x12\x11\n\x04name\x18\x01 \x01(\tH\x00\x88\x01\x01\x12>\n\rsession_state\x18\x02 \x01(\x0e\x32\".otg.Bgpv4Metric.SessionState.EnumH\x01\x88\x01\x01\x12\x1f\n\x12session_flap_count\x18\x03 \x01(\x04H\x02\x88\x01\x01\x12\x1e\n\x11routes_advertised\x18\x04 \x01(\x04H\x03\x88\x01\x01\x12\x1c\n\x0froutes_received\x18\x05 \x01(\x04H\x04\x88\x01\x01\x12!\n\x14route_withdraws_sent\x18\x06 \x01(\x04H\x05\x88\x01\x01\x12%\n\x18route_withdraws_received\x18\x07 \x01(\x04H\x06\x88\x01\x01\x12\x19\n\x0cupdates_sent\x18\x08 \x01(\x04H\x07\x88\x01\x01\x12\x1d\n\x10updates_received\x18\t \x01(\x04H\x08\x88\x01\x01\x12\x17\n\nopens_sent\x18\n \x01(\x04H\t\x88\x01\x01\x12\x1b\n\x0eopens_received\x18\x0b \x01(\x04H\n\x88\x01\x01\x12\x1c\n\x0fkeepalives_sent\x18\x0c \x01(\x04H\x0b\x88\x01\x01\x12 \n\x13keepalives_received\x18\r \x01(\x04H\x0c\x88\x01\x01\x12\x1f\n\x12notifications_sent\x18\x0e \x01(\x04H\r\x88\x01\x01\x12#\n\x16notifications_received\x18\x0f \x01(\x04H\x0e\x88\x01\x01\x12\x36\n\tfsm_state\x18\x10 \x01(\x0e\x32\x1e.otg.Bgpv4Metric.FsmState.EnumH\x0f\x88\x01\x01\x12 \n\x13\x65nd_of_rib_received\x18\x11 \x01(\x04H\x10\x88\x01\x01\x1a\x39\n\x0cSessionState\")\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\x06\n\x02up\x10\x01\x12\x08\n\x04\x64own\x10\x02\x1av\n\x08\x46smState\"j\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\x08\n\x04idle\x10\x01\x12\x0b\n\x07\x63onnect\x10\x02\x12\n\n\x06\x61\x63tive\x10\x03\x12\x0c\n\x08opensent\x10\x04\x12\x0f\n\x0bopenconfirm\x10\x05\x12\x0f\n\x0b\x65stablished\x10\x06\x42\x07\n\x05_nameB\x10\n\x0e_session_stateB\x15\n\x13_session_flap_countB\x14\n\x12_routes_advertisedB\x12\n\x10_routes_receivedB\x17\n\x15_route_withdraws_sentB\x1b\n\x19_route_withdraws_receivedB\x0f\n\r_updates_sentB\x13\n\x11_updates_receivedB\r\n\x0b_opens_sentB\x11\n\x0f_opens_receivedB\x12\n\x10_keepalives_sentB\x16\n\x14_keepalives_receivedB\x15\n\x13_notifications_sentB\x19\n\x17_notifications_receivedB\x0c\n\n_fsm_stateB\x16\n\x14_end_of_rib_received\"\xf9\x03\n\x13\x42gpv6MetricsRequest\x12\x12\n\npeer_names\x18\x01 \x03(\t\x12?\n\x0c\x63olumn_names\x18\x02 \x03(\x0e\x32).otg.Bgpv6MetricsRequest.ColumnNames.Enum\x1a\x8c\x03\n\x0b\x43olumnNames\"\xfc\x02\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\x11\n\rsession_state\x10\x01\x12\x16\n\x12session_flap_count\x10\x02\x12\x15\n\x11routes_advertised\x10\x03\x12\x13\n\x0froutes_received\x10\x04\x12\x18\n\x14route_withdraws_sent\x10\x05\x12\x1c\n\x18route_withdraws_received\x10\x06\x12\x10\n\x0cupdates_sent\x10\x07\x12\x14\n\x10updates_received\x10\x08\x12\x0e\n\nopens_sent\x10\t\x12\x12\n\x0eopens_received\x10\n\x12\x13\n\x0fkeepalives_sent\x10\x0b\x12\x17\n\x13keepalives_received\x10\x0c\x12\x16\n\x12notifications_sent\x10\r\x12\x1a\n\x16notifications_received\x10\x0e\x12\r\n\tfsm_state\x10\x0f\x12\x17\n\x13\x65nd_of_rib_received\x10\x10\"\xea\x08\n\x0b\x42gpv6Metric\x12\x11\n\x04name\x18\x01 \x01(\tH\x00\x88\x01\x01\x12>\n\rsession_state\x18\x02 \x01(\x0e\x32\".otg.Bgpv6Metric.SessionState.EnumH\x01\x88\x01\x01\x12\x1f\n\x12session_flap_count\x18\x03 \x01(\x04H\x02\x88\x01\x01\x12\x1e\n\x11routes_advertised\x18\x04 \x01(\x04H\x03\x88\x01\x01\x12\x1c\n\x0froutes_received\x18\x05 \x01(\x04H\x04\x88\x01\x01\x12!\n\x14route_withdraws_sent\x18\x06 \x01(\x04H\x05\x88\x01\x01\x12%\n\x18route_withdraws_received\x18\x07 \x01(\x04H\x06\x88\x01\x01\x12\x19\n\x0cupdates_sent\x18\x08 \x01(\x04H\x07\x88\x01\x01\x12\x1d\n\x10updates_received\x18\t \x01(\x04H\x08\x88\x01\x01\x12\x17\n\nopens_sent\x18\n \x01(\x04H\t\x88\x01\x01\x12\x1b\n\x0eopens_received\x18\x0b \x01(\x04H\n\x88\x01\x01\x12\x1c\n\x0fkeepalives_sent\x18\x0c \x01(\x04H\x0b\x88\x01\x01\x12 \n\x13keepalives_received\x18\r \x01(\x04H\x0c\x88\x01\x01\x12\x1f\n\x12notifications_sent\x18\x0e \x01(\x04H\r\x88\x01\x01\x12#\n\x16notifications_received\x18\x0f \x01(\x04H\x0e\x88\x01\x01\x12\x36\n\tfsm_state\x18\x10 \x01(\x0e\x32\x1e.otg.Bgpv6Metric.FsmState.EnumH\x0f\x88\x01\x01\x12 \n\x13\x65nd_of_rib_received\x18\x11 \x01(\x04H\x10\x88\x01\x01\x1a\x39\n\x0cSessionState\")\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\x06\n\x02up\x10\x01\x12\x08\n\x04\x64own\x10\x02\x1av\n\x08\x46smState\"j\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\x08\n\x04idle\x10\x01\x12\x0b\n\x07\x63onnect\x10\x02\x12\n\n\x06\x61\x63tive\x10\x03\x12\x0c\n\x08opensent\x10\x04\x12\x0f\n\x0bopenconfirm\x10\x05\x12\x0f\n\x0b\x65stablished\x10\x06\x42\x07\n\x05_nameB\x10\n\x0e_session_stateB\x15\n\x13_session_flap_countB\x14\n\x12_routes_advertisedB\x12\n\x10_routes_receivedB\x17\n\x15_route_withdraws_sentB\x1b\n\x19_route_withdraws_receivedB\x0f\n\r_updates_sentB\x13\n\x11_updates_receivedB\r\n\x0b_opens_sentB\x11\n\x0f_opens_receivedB\x12\n\x10_keepalives_sentB\x16\n\x14_keepalives_receivedB\x15\n\x13_notifications_sentB\x19\n\x17_notifications_receivedB\x0c\n\n_fsm_stateB\x16\n\x14_end_of_rib_received\"\x92\x06\n\x12IsisMetricsRequest\x12\x14\n\x0crouter_names\x18\x01 \x03(\t\x12>\n\x0c\x63olumn_names\x18\x02 \x03(\x0e\x32(.otg.IsisMetricsRequest.ColumnNames.Enum\x1a\xa5\x05\n\x0b\x43olumnNames\"\x95\x05\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\x12\n\x0el1_sessions_up\x10\x01\x12\x13\n\x0fl1_session_flap\x10\x02\x12\x14\n\x10l1_database_size\x10\x03\x12\x1c\n\x18l1_broadcast_hellos_sent\x10\x04\x12 \n\x1cl1_broadcast_hellos_received\x10\x05\x12!\n\x1dl1_point_to_point_hellos_sent\x10\x06\x12%\n!l1_point_to_point_hellos_received\x10\x07\x12\x10\n\x0cl1_psnp_sent\x10\x08\x12\x14\n\x10l1_psnp_received\x10\t\x12\x10\n\x0cl1_csnp_sent\x10\n\x12\x14\n\x10l1_csnp_received\x10\x0b\x12\x0f\n\x0bl1_lsp_sent\x10\x0c\x12\x13\n\x0fl1_lsp_received\x10\r\x12\x12\n\x0el2_sessions_up\x10\x0e\x12\x13\n\x0fl2_session_flap\x10\x0f\x12\x14\n\x10l2_database_size\x10\x10\x12\x1c\n\x18l2_broadcast_hellos_sent\x10\x11\x12 \n\x1cl2_broadcast_hellos_received\x10\x12\x12!\n\x1dl2_point_to_point_hellos_sent\x10\x13\x12%\n!l2_point_to_point_hellos_received\x10\x14\x12\x10\n\x0cl2_psnp_sent\x10\x15\x12\x14\n\x10l2_psnp_received\x10\x16\x12\x10\n\x0cl2_csnp_sent\x10\x17\x12\x14\n\x10l2_csnp_received\x10\x18\x12\x0f\n\x0bl2_lsp_sent\x10\x19\x12\x13\n\x0fl2_lsp_received\x10\x1a\"\xf4\x0b\n\nIsisMetric\x12\x11\n\x04name\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x1b\n\x0el1_sessions_up\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x1c\n\x0fl1_session_flap\x18\x03 \x01(\x04H\x02\x88\x01\x01\x12%\n\x18l1_broadcast_hellos_sent\x18\x04 \x01(\x04H\x03\x88\x01\x01\x12)\n\x1cl1_broadcast_hellos_received\x18\x05 \x01(\x04H\x04\x88\x01\x01\x12*\n\x1dl1_point_to_point_hellos_sent\x18\x06 \x01(\x04H\x05\x88\x01\x01\x12.\n!l1_point_to_point_hellos_received\x18\x07 \x01(\x04H\x06\x88\x01\x01\x12\x1d\n\x10l1_database_size\x18\x08 \x01(\x04H\x07\x88\x01\x01\x12\x19\n\x0cl1_psnp_sent\x18\t \x01(\x04H\x08\x88\x01\x01\x12\x1d\n\x10l1_psnp_received\x18\n \x01(\x04H\t\x88\x01\x01\x12\x19\n\x0cl1_csnp_sent\x18\x0b \x01(\x04H\n\x88\x01\x01\x12\x1d\n\x10l1_csnp_received\x18\x0c \x01(\x04H\x0b\x88\x01\x01\x12\x18\n\x0bl1_lsp_sent\x18\r \x01(\x04H\x0c\x88\x01\x01\x12\x1c\n\x0fl1_lsp_received\x18\x0e \x01(\x04H\r\x88\x01\x01\x12\x1b\n\x0el2_sessions_up\x18\x0f \x01(\rH\x0e\x88\x01\x01\x12\x1c\n\x0fl2_session_flap\x18\x10 \x01(\x04H\x0f\x88\x01\x01\x12%\n\x18l2_broadcast_hellos_sent\x18\x11 \x01(\x04H\x10\x88\x01\x01\x12)\n\x1cl2_broadcast_hellos_received\x18\x12 \x01(\x04H\x11\x88\x01\x01\x12*\n\x1dl2_point_to_point_hellos_sent\x18\x13 \x01(\x04H\x12\x88\x01\x01\x12.\n!l2_point_to_point_hellos_received\x18\x14 \x01(\x04H\x13\x88\x01\x01\x12\x1d\n\x10l2_database_size\x18\x15 \x01(\x04H\x14\x88\x01\x01\x12\x19\n\x0cl2_psnp_sent\x18\x16 \x01(\x04H\x15\x88\x01\x01\x12\x1d\n\x10l2_psnp_received\x18\x17 \x01(\x04H\x16\x88\x01\x01\x12\x19\n\x0cl2_csnp_sent\x18\x18 \x01(\x04H\x17\x88\x01\x01\x12\x1d\n\x10l2_csnp_received\x18\x19 \x01(\x04H\x18\x88\x01\x01\x12\x18\n\x0bl2_lsp_sent\x18\x1a \x01(\x04H\x19\x88\x01\x01\x12\x1c\n\x0fl2_lsp_received\x18\x1b \x01(\x04H\x1a\x88\x01\x01\x42\x07\n\x05_nameB\x11\n\x0f_l1_sessions_upB\x12\n\x10_l1_session_flapB\x1b\n\x19_l1_broadcast_hellos_sentB\x1f\n\x1d_l1_broadcast_hellos_receivedB \n\x1e_l1_point_to_point_hellos_sentB$\n\"_l1_point_to_point_hellos_receivedB\x13\n\x11_l1_database_sizeB\x0f\n\r_l1_psnp_sentB\x13\n\x11_l1_psnp_receivedB\x0f\n\r_l1_csnp_sentB\x13\n\x11_l1_csnp_receivedB\x0e\n\x0c_l1_lsp_sentB\x12\n\x10_l1_lsp_receivedB\x11\n\x0f_l2_sessions_upB\x12\n\x10_l2_session_flapB\x1b\n\x19_l2_broadcast_hellos_sentB\x1f\n\x1d_l2_broadcast_hellos_receivedB \n\x1e_l2_point_to_point_hellos_sentB$\n\"_l2_point_to_point_hellos_receivedB\x13\n\x11_l2_database_sizeB\x0f\n\r_l2_psnp_sentB\x13\n\x11_l2_psnp_receivedB\x0f\n\r_l2_csnp_sentB\x13\n\x11_l2_csnp_receivedB\x0e\n\x0c_l2_lsp_sentB\x12\n\x10_l2_lsp_received\"\xbd\x02\n\x11LagMetricsRequest\x12\x11\n\tlag_names\x18\x01 \x03(\t\x12=\n\x0c\x63olumn_names\x18\x02 \x03(\x0e\x32\'.otg.LagMetricsRequest.ColumnNames.Enum\x1a\xd5\x01\n\x0b\x43olumnNames\"\xc5\x01\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\x0f\n\x0boper_status\x10\x01\x12\x13\n\x0fmember_ports_up\x10\x02\x12\r\n\tframes_tx\x10\x03\x12\r\n\tframes_rx\x10\x04\x12\x0c\n\x08\x62ytes_tx\x10\x05\x12\x0c\n\x08\x62ytes_rx\x10\x06\x12\x12\n\x0e\x66rames_tx_rate\x10\x07\x12\x12\n\x0e\x66rames_rx_rate\x10\x08\x12\x11\n\rbytes_tx_rate\x10\t\x12\x11\n\rbytes_rx_rate\x10\n\"\xac\x04\n\tLagMetric\x12\x11\n\x04name\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x38\n\x0boper_status\x18\x02 \x01(\x0e\x32\x1e.otg.LagMetric.OperStatus.EnumH\x01\x88\x01\x01\x12\x1c\n\x0fmember_ports_up\x18\x03 \x01(\rH\x02\x88\x01\x01\x12\x16\n\tframes_tx\x18\x04 \x01(\x04H\x03\x88\x01\x01\x12\x16\n\tframes_rx\x18\x05 \x01(\x04H\x04\x88\x01\x01\x12\x15\n\x08\x62ytes_tx\x18\x06 \x01(\x04H\x05\x88\x01\x01\x12\x15\n\x08\x62ytes_rx\x18\x07 \x01(\x04H\x06\x88\x01\x01\x12\x1b\n\x0e\x66rames_tx_rate\x18\x08 \x01(\x02H\x07\x88\x01\x01\x12\x1b\n\x0e\x66rames_rx_rate\x18\t \x01(\x02H\x08\x88\x01\x01\x12\x1a\n\rbytes_tx_rate\x18\n \x01(\x02H\t\x88\x01\x01\x12\x1a\n\rbytes_rx_rate\x18\x0b \x01(\x02H\n\x88\x01\x01\x1a\x37\n\nOperStatus\")\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\x06\n\x02up\x10\x01\x12\x08\n\x04\x64own\x10\x02\x42\x07\n\x05_nameB\x0e\n\x0c_oper_statusB\x12\n\x10_member_ports_upB\x0c\n\n_frames_txB\x0c\n\n_frames_rxB\x0b\n\t_bytes_txB\x0b\n\t_bytes_rxB\x11\n\x0f_frames_tx_rateB\x11\n\x0f_frames_rx_rateB\x10\n\x0e_bytes_tx_rateB\x10\n\x0e_bytes_rx_rate\"\xb4\x03\n\x12LacpMetricsRequest\x12\x11\n\tlag_names\x18\x01 \x03(\t\x12\x1d\n\x15lag_member_port_names\x18\x02 \x03(\t\x12>\n\x0c\x63olumn_names\x18\x03 \x03(\x0e\x32(.otg.LacpMetricsRequest.ColumnNames.Enum\x1a\xab\x02\n\x0b\x43olumnNames\"\x9b\x02\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\x13\n\x0flacp_packets_rx\x10\x01\x12\x13\n\x0flacp_packets_tx\x10\x02\x12\x12\n\x0elacp_rx_errors\x10\x03\x12\x0c\n\x08\x61\x63tivity\x10\x04\x12\x0b\n\x07timeout\x10\x05\x12\x13\n\x0fsynchronization\x10\x06\x12\x10\n\x0c\x61ggregatable\x10\x07\x12\x0e\n\ncollecting\x10\x08\x12\x10\n\x0c\x64istributing\x10\t\x12\r\n\tsystem_id\x10\n\x12\x0c\n\x08oper_key\x10\x0b\x12\x0e\n\npartner_id\x10\x0c\x12\x0f\n\x0bpartner_key\x10\r\x12\x0c\n\x08port_num\x10\x0e\x12\x14\n\x10partner_port_num\x10\x0f\"\x8d\x08\n\nLacpMetric\x12\x15\n\x08lag_name\x18\x01 \x01(\tH\x00\x88\x01\x01\x12!\n\x14lag_member_port_name\x18\x02 \x01(\tH\x01\x88\x01\x01\x12\x1c\n\x0flacp_packets_rx\x18\x03 \x01(\x04H\x02\x88\x01\x01\x12\x1c\n\x0flacp_packets_tx\x18\x04 \x01(\x04H\x03\x88\x01\x01\x12\x1b\n\x0elacp_rx_errors\x18\x05 \x01(\x04H\x04\x88\x01\x01\x12\x34\n\x08\x61\x63tivity\x18\x06 \x01(\x0e\x32\x1d.otg.LacpMetric.Activity.EnumH\x05\x88\x01\x01\x12\x32\n\x07timeout\x18\x07 \x01(\x0e\x32\x1c.otg.LacpMetric.Timeout.EnumH\x06\x88\x01\x01\x12\x42\n\x0fsynchronization\x18\x08 \x01(\x0e\x32$.otg.LacpMetric.Synchronization.EnumH\x07\x88\x01\x01\x12\x19\n\x0c\x61ggregatable\x18\t \x01(\x08H\x08\x88\x01\x01\x12\x17\n\ncollecting\x18\n \x01(\x08H\t\x88\x01\x01\x12\x19\n\x0c\x64istributing\x18\x0b \x01(\x08H\n\x88\x01\x01\x12\x16\n\tsystem_id\x18\x0c \x01(\tH\x0b\x88\x01\x01\x12\x15\n\x08oper_key\x18\r \x01(\rH\x0c\x88\x01\x01\x12\x17\n\npartner_id\x18\x0e \x01(\tH\r\x88\x01\x01\x12\x18\n\x0bpartner_key\x18\x0f \x01(\rH\x0e\x88\x01\x01\x12\x15\n\x08port_num\x18\x10 \x01(\rH\x0f\x88\x01\x01\x12\x1d\n\x10partner_port_num\x18\x11 \x01(\rH\x10\x88\x01\x01\x1a<\n\x08\x41\x63tivity\"0\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\n\n\x06\x61\x63tive\x10\x01\x12\x0b\n\x07passive\x10\x02\x1a\x37\n\x07Timeout\",\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\t\n\x05short\x10\x01\x12\x08\n\x04long\x10\x02\x1a\x45\n\x0fSynchronization\"2\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\x0b\n\x07in_sync\x10\x01\x12\x0c\n\x08out_sync\x10\x02\x42\x0b\n\t_lag_nameB\x17\n\x15_lag_member_port_nameB\x12\n\x10_lacp_packets_rxB\x12\n\x10_lacp_packets_txB\x11\n\x0f_lacp_rx_errorsB\x0b\n\t_activityB\n\n\x08_timeoutB\x12\n\x10_synchronizationB\x0f\n\r_aggregatableB\r\n\x0b_collectingB\x0f\n\r_distributingB\x0c\n\n_system_idB\x0b\n\t_oper_keyB\r\n\x0b_partner_idB\x0e\n\x0c_partner_keyB\x0b\n\t_port_numB\x13\n\x11_partner_port_num\"\xfd\x01\n\x12LldpMetricsRequest\x12\x12\n\nlldp_names\x18\x01 \x03(\t\x12>\n\x0c\x63olumn_names\x18\x02 \x03(\x0e\x32(.otg.LldpMetricsRequest.ColumnNames.Enum\x1a\x92\x01\n\x0b\x43olumnNames\"\x82\x01\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\r\n\tframes_rx\x10\x01\x12\r\n\tframes_tx\x10\x02\x12\x13\n\x0f\x66rames_error_rx\x10\x03\x12\x12\n\x0e\x66rames_discard\x10\x04\x12\x10\n\x0ctlvs_discard\x10\x05\x12\x10\n\x0ctlvs_unknown\x10\x06\"\xae\x02\n\nLldpMetric\x12\x11\n\x04name\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x16\n\tframes_rx\x18\x02 \x01(\x04H\x01\x88\x01\x01\x12\x16\n\tframes_tx\x18\x03 \x01(\x04H\x02\x88\x01\x01\x12\x1c\n\x0f\x66rames_error_rx\x18\x04 \x01(\x04H\x03\x88\x01\x01\x12\x1b\n\x0e\x66rames_discard\x18\x05 \x01(\x04H\x04\x88\x01\x01\x12\x19\n\x0ctlvs_discard\x18\x06 \x01(\x04H\x05\x88\x01\x01\x12\x19\n\x0ctlvs_unknown\x18\x07 \x01(\x04H\x06\x88\x01\x01\x42\x07\n\x05_nameB\x0c\n\n_frames_rxB\x0c\n\n_frames_txB\x12\n\x10_frames_error_rxB\x11\n\x0f_frames_discardB\x0f\n\r_tlvs_discardB\x0f\n\r_tlvs_unknown\"\xc2\x05\n\x12RsvpMetricsRequest\x12\x14\n\x0crouter_names\x18\x01 \x03(\t\x12>\n\x0c\x63olumn_names\x18\x02 \x03(\x0e\x32(.otg.RsvpMetricsRequest.ColumnNames.Enum\x1a\xd5\x04\n\x0b\x43olumnNames\"\xc5\x04\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\x1f\n\x1bingress_p2p_lsps_configured\x10\x01\x12\x17\n\x13ingress_p2p_lsps_up\x10\x02\x12\x16\n\x12\x65gress_p2p_lsps_up\x10\x03\x12\x12\n\x0elsp_flap_count\x10\x04\x12\x0c\n\x08paths_tx\x10\x05\x12\x0c\n\x08paths_rx\x10\x06\x12\x0c\n\x08resvs_tx\x10\x07\x12\x0c\n\x08resvs_rx\x10\x08\x12\x11\n\rpath_tears_tx\x10\t\x12\x11\n\rpath_tears_rx\x10\n\x12\x11\n\rresv_tears_tx\x10\x0b\x12\x11\n\rresv_tears_rx\x10\x0c\x12\x12\n\x0epath_errors_tx\x10\r\x12\x12\n\x0epath_errors_rx\x10\x0e\x12\x12\n\x0eresv_errors_tx\x10\x0f\x12\x12\n\x0eresv_errors_rx\x10\x10\x12\x10\n\x0cresv_conf_tx\x10\x11\x12\x10\n\x0cresv_conf_rx\x10\x12\x12\r\n\thellos_tx\x10\x13\x12\r\n\thellos_rx\x10\x14\x12\x0b\n\x07\x61\x63ks_tx\x10\x15\x12\x0b\n\x07\x61\x63ks_rx\x10\x16\x12\x0c\n\x08nacks_tx\x10\x17\x12\x0c\n\x08nacks_rx\x10\x18\x12\x0f\n\x0bsrefresh_tx\x10\x19\x12\x0f\n\x0bsrefresh_rx\x10\x1a\x12\r\n\tbundle_tx\x10\x1b\x12\r\n\tbundle_rx\x10\x1c\x12 \n\x1cpath_reevaluation_request_tx\x10\x1d\x12\x18\n\x14path_reoptimizations\x10\x1e\"\xf4\n\n\nRsvpMetric\x12\x11\n\x04name\x18\x01 \x01(\tH\x00\x88\x01\x01\x12(\n\x1bingress_p2p_lsps_configured\x18\x02 \x01(\rH\x01\x88\x01\x01\x12 \n\x13ingress_p2p_lsps_up\x18\x03 \x01(\rH\x02\x88\x01\x01\x12\x1f\n\x12\x65gress_p2p_lsps_up\x18\x04 \x01(\rH\x03\x88\x01\x01\x12\x1b\n\x0elsp_flap_count\x18\x05 \x01(\x04H\x04\x88\x01\x01\x12\x15\n\x08paths_tx\x18\x06 \x01(\x04H\x05\x88\x01\x01\x12\x15\n\x08paths_rx\x18\x07 \x01(\x04H\x06\x88\x01\x01\x12\x15\n\x08resvs_tx\x18\x08 \x01(\x04H\x07\x88\x01\x01\x12\x15\n\x08resvs_rx\x18\t \x01(\x04H\x08\x88\x01\x01\x12\x1a\n\rpath_tears_tx\x18\n \x01(\x04H\t\x88\x01\x01\x12\x1a\n\rpath_tears_rx\x18\x0b \x01(\x04H\n\x88\x01\x01\x12\x1a\n\rresv_tears_tx\x18\x0c \x01(\x04H\x0b\x88\x01\x01\x12\x1a\n\rresv_tears_rx\x18\r \x01(\x04H\x0c\x88\x01\x01\x12\x1b\n\x0epath_errors_tx\x18\x0e \x01(\x04H\r\x88\x01\x01\x12\x1b\n\x0epath_errors_rx\x18\x0f \x01(\x04H\x0e\x88\x01\x01\x12\x1b\n\x0eresv_errors_tx\x18\x10 \x01(\x04H\x0f\x88\x01\x01\x12\x1b\n\x0eresv_errors_rx\x18\x11 \x01(\x04H\x10\x88\x01\x01\x12\x19\n\x0cresv_conf_tx\x18\x12 \x01(\x04H\x11\x88\x01\x01\x12\x19\n\x0cresv_conf_rx\x18\x13 \x01(\x04H\x12\x88\x01\x01\x12\x16\n\thellos_tx\x18\x14 \x01(\x04H\x13\x88\x01\x01\x12\x16\n\thellos_rx\x18\x15 \x01(\x04H\x14\x88\x01\x01\x12\x14\n\x07\x61\x63ks_tx\x18\x16 \x01(\x04H\x15\x88\x01\x01\x12\x14\n\x07\x61\x63ks_rx\x18\x17 \x01(\x04H\x16\x88\x01\x01\x12\x15\n\x08nacks_tx\x18\x18 \x01(\x04H\x17\x88\x01\x01\x12\x15\n\x08nacks_rx\x18\x19 \x01(\x04H\x18\x88\x01\x01\x12\x18\n\x0bsrefresh_tx\x18\x1a \x01(\x04H\x19\x88\x01\x01\x12\x18\n\x0bsrefresh_rx\x18\x1b \x01(\x04H\x1a\x88\x01\x01\x12\x16\n\tbundle_tx\x18\x1c \x01(\x04H\x1b\x88\x01\x01\x12\x16\n\tbundle_rx\x18\x1d \x01(\x04H\x1c\x88\x01\x01\x12)\n\x1cpath_reevaluation_request_tx\x18\x1e \x01(\x04H\x1d\x88\x01\x01\x12!\n\x14path_reoptimizations\x18\x1f \x01(\x04H\x1e\x88\x01\x01\x42\x07\n\x05_nameB\x1e\n\x1c_ingress_p2p_lsps_configuredB\x16\n\x14_ingress_p2p_lsps_upB\x15\n\x13_egress_p2p_lsps_upB\x11\n\x0f_lsp_flap_countB\x0b\n\t_paths_txB\x0b\n\t_paths_rxB\x0b\n\t_resvs_txB\x0b\n\t_resvs_rxB\x10\n\x0e_path_tears_txB\x10\n\x0e_path_tears_rxB\x10\n\x0e_resv_tears_txB\x10\n\x0e_resv_tears_rxB\x11\n\x0f_path_errors_txB\x11\n\x0f_path_errors_rxB\x11\n\x0f_resv_errors_txB\x11\n\x0f_resv_errors_rxB\x0f\n\r_resv_conf_txB\x0f\n\r_resv_conf_rxB\x0c\n\n_hellos_txB\x0c\n\n_hellos_rxB\n\n\x08_acks_txB\n\n\x08_acks_rxB\x0b\n\t_nacks_txB\x0b\n\t_nacks_rxB\x0e\n\x0c_srefresh_txB\x0e\n\x0c_srefresh_rxB\x0c\n\n_bundle_txB\x0c\n\n_bundle_rxB\x1f\n\x1d_path_reevaluation_request_txB\x17\n\x15_path_reoptimizations\"\x94\x04\n\rStatesRequest\x12\x33\n\x06\x63hoice\x18\x01 \x01(\x0e\x32\x1e.otg.StatesRequest.Choice.EnumH\x00\x88\x01\x01\x12\x35\n\x0eipv4_neighbors\x18\x02 \x01(\x0b\x32\x1d.otg.Neighborsv4StatesRequest\x12\x35\n\x0eipv6_neighbors\x18\x03 \x01(\x0b\x32\x1d.otg.Neighborsv6StatesRequest\x12\x30\n\x0c\x62gp_prefixes\x18\x04 \x01(\x0b\x32\x1a.otg.BgpPrefixStateRequest\x12,\n\tisis_lsps\x18\x05 \x01(\x0b\x32\x19.otg.IsisLspsStateRequest\x12\x36\n\x0elldp_neighbors\x18\x06 \x01(\x0b\x32\x1e.otg.LldpNeighborsStateRequest\x12,\n\trsvp_lsps\x18\x07 \x01(\x0b\x32\x19.otg.RsvpLspsStateRequest\x1a\x8e\x01\n\x06\x43hoice\"\x83\x01\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\x12\n\x0eipv4_neighbors\x10\x01\x12\x12\n\x0eipv6_neighbors\x10\x02\x12\x10\n\x0c\x62gp_prefixes\x10\x03\x12\r\n\tisis_lsps\x10\x04\x12\x12\n\x0elldp_neighbors\x10\x05\x12\r\n\trsvp_lsps\x10\x06\x42\t\n\x07_choice\"\xec\x03\n\x0eStatesResponse\x12\x34\n\x06\x63hoice\x18\x01 \x01(\x0e\x32\x1f.otg.StatesResponse.Choice.EnumH\x00\x88\x01\x01\x12-\n\x0eipv4_neighbors\x18\x02 \x03(\x0b\x32\x15.otg.Neighborsv4State\x12-\n\x0eipv6_neighbors\x18\x03 \x03(\x0b\x32\x15.otg.Neighborsv6State\x12+\n\x0c\x62gp_prefixes\x18\x04 \x03(\x0b\x32\x15.otg.BgpPrefixesState\x12%\n\tisis_lsps\x18\x05 \x03(\x0b\x32\x12.otg.IsisLspsState\x12/\n\x0elldp_neighbors\x18\x06 \x03(\x0b\x32\x17.otg.LldpNeighborsState\x12%\n\trsvp_lsps\x18\x07 \x03(\x0b\x32\x12.otg.RsvpLspsState\x1a\x8e\x01\n\x06\x43hoice\"\x83\x01\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\x12\n\x0eipv4_neighbors\x10\x01\x12\x12\n\x0eipv6_neighbors\x10\x02\x12\x10\n\x0c\x62gp_prefixes\x10\x03\x12\r\n\tisis_lsps\x10\x04\x12\x12\n\x0elldp_neighbors\x10\x05\x12\r\n\trsvp_lsps\x10\x06\x42\t\n\x07_choice\"2\n\x18Neighborsv4StatesRequest\x12\x16\n\x0e\x65thernet_names\x18\x01 \x03(\t\"\xa4\x01\n\x10Neighborsv4State\x12\x1a\n\rethernet_name\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x19\n\x0cipv4_address\x18\x02 \x01(\tH\x01\x88\x01\x01\x12\x1f\n\x12link_layer_address\x18\x03 \x01(\tH\x02\x88\x01\x01\x42\x10\n\x0e_ethernet_nameB\x0f\n\r_ipv4_addressB\x15\n\x13_link_layer_address\"2\n\x18Neighborsv6StatesRequest\x12\x16\n\x0e\x65thernet_names\x18\x01 \x03(\t\"\xa4\x01\n\x10Neighborsv6State\x12\x1a\n\rethernet_name\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x19\n\x0cipv6_address\x18\x02 \x01(\tH\x01\x88\x01\x01\x12\x1f\n\x12link_layer_address\x18\x03 \x01(\tH\x02\x88\x01\x01\x42\x10\n\x0e_ethernet_nameB\x0f\n\r_ipv6_addressB\x15\n\x13_link_layer_address\"\xc2\x02\n\x15\x42gpPrefixStateRequest\x12\x16\n\x0e\x62gp_peer_names\x18\x01 \x03(\t\x12\x45\n\x0eprefix_filters\x18\x02 \x03(\x0e\x32-.otg.BgpPrefixStateRequest.PrefixFilters.Enum\x12=\n\x14ipv4_unicast_filters\x18\x03 \x03(\x0b\x32\x1f.otg.BgpPrefixIpv4UnicastFilter\x12=\n\x14ipv6_unicast_filters\x18\x04 \x03(\x0b\x32\x1f.otg.BgpPrefixIpv6UnicastFilter\x1aL\n\rPrefixFilters\";\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\x10\n\x0cipv4_unicast\x10\x01\x12\x10\n\x0cipv6_unicast\x10\x02\"\x91\x02\n\x1a\x42gpPrefixIpv4UnicastFilter\x12\x11\n\taddresses\x18\x01 \x03(\t\x12\x1a\n\rprefix_length\x18\x02 \x01(\rH\x00\x88\x01\x01\x12@\n\x06origin\x18\x03 \x01(\x0e\x32+.otg.BgpPrefixIpv4UnicastFilter.Origin.EnumH\x01\x88\x01\x01\x12\x14\n\x07path_id\x18\x04 \x01(\rH\x02\x88\x01\x01\x1a\x43\n\x06Origin\"9\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\x07\n\x03igp\x10\x01\x12\x07\n\x03\x65gp\x10\x02\x12\x0e\n\nincomplete\x10\x03\x42\x10\n\x0e_prefix_lengthB\t\n\x07_originB\n\n\x08_path_id\"\x91\x02\n\x1a\x42gpPrefixIpv6UnicastFilter\x12\x11\n\taddresses\x18\x01 \x03(\t\x12\x1a\n\rprefix_length\x18\x02 \x01(\rH\x00\x88\x01\x01\x12@\n\x06origin\x18\x03 \x01(\x0e\x32+.otg.BgpPrefixIpv6UnicastFilter.Origin.EnumH\x01\x88\x01\x01\x12\x14\n\x07path_id\x18\x04 \x01(\rH\x02\x88\x01\x01\x1a\x43\n\x06Origin\"9\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\x07\n\x03igp\x10\x01\x12\x07\n\x03\x65gp\x10\x02\x12\x0e\n\nincomplete\x10\x03\x42\x10\n\x0e_prefix_lengthB\t\n\x07_originB\n\n\x08_path_id\"\xbe\x01\n\x10\x42gpPrefixesState\x12\x1a\n\rbgp_peer_name\x18\x01 \x01(\tH\x00\x88\x01\x01\x12=\n\x15ipv4_unicast_prefixes\x18\x02 \x03(\x0b\x32\x1e.otg.BgpPrefixIpv4UnicastState\x12=\n\x15ipv6_unicast_prefixes\x18\x03 \x03(\x0b\x32\x1e.otg.BgpPrefixIpv6UnicastStateB\x10\n\x0e_bgp_peer_name\"\xd1\x04\n\x19\x42gpPrefixIpv4UnicastState\x12\x19\n\x0cipv4_address\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x1a\n\rprefix_length\x18\x02 \x01(\rH\x01\x88\x01\x01\x12?\n\x06origin\x18\x03 \x01(\x0e\x32*.otg.BgpPrefixIpv4UnicastState.Origin.EnumH\x02\x88\x01\x01\x12\x14\n\x07path_id\x18\x04 \x01(\rH\x03\x88\x01\x01\x12\x1a\n\ripv4_next_hop\x18\x05 \x01(\tH\x04\x88\x01\x01\x12\x1a\n\ripv6_next_hop\x18\x06 \x01(\tH\x05\x88\x01\x01\x12,\n\x0b\x63ommunities\x18\x07 \x03(\x0b\x32\x17.otg.ResultBgpCommunity\x12%\n\x07\x61s_path\x18\x08 \x01(\x0b\x32\x14.otg.ResultBgpAsPath\x12\x1d\n\x10local_preference\x18\t \x01(\rH\x06\x88\x01\x01\x12%\n\x18multi_exit_discriminator\x18\n \x01(\rH\x07\x88\x01\x01\x1a\x43\n\x06Origin\"9\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\x07\n\x03igp\x10\x01\x12\x07\n\x03\x65gp\x10\x02\x12\x0e\n\nincomplete\x10\x03\x42\x0f\n\r_ipv4_addressB\x10\n\x0e_prefix_lengthB\t\n\x07_originB\n\n\x08_path_idB\x10\n\x0e_ipv4_next_hopB\x10\n\x0e_ipv6_next_hopB\x13\n\x11_local_preferenceB\x1b\n\x19_multi_exit_discriminator\"\xd1\x04\n\x19\x42gpPrefixIpv6UnicastState\x12\x19\n\x0cipv6_address\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x1a\n\rprefix_length\x18\x02 \x01(\rH\x01\x88\x01\x01\x12?\n\x06origin\x18\x03 \x01(\x0e\x32*.otg.BgpPrefixIpv6UnicastState.Origin.EnumH\x02\x88\x01\x01\x12\x14\n\x07path_id\x18\x04 \x01(\rH\x03\x88\x01\x01\x12\x1a\n\ripv4_next_hop\x18\x05 \x01(\tH\x04\x88\x01\x01\x12\x1a\n\ripv6_next_hop\x18\x06 \x01(\tH\x05\x88\x01\x01\x12,\n\x0b\x63ommunities\x18\x07 \x03(\x0b\x32\x17.otg.ResultBgpCommunity\x12%\n\x07\x61s_path\x18\x08 \x01(\x0b\x32\x14.otg.ResultBgpAsPath\x12\x1d\n\x10local_preference\x18\t \x01(\rH\x06\x88\x01\x01\x12%\n\x18multi_exit_discriminator\x18\n \x01(\rH\x07\x88\x01\x01\x1a\x43\n\x06Origin\"9\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\x07\n\x03igp\x10\x01\x12\x07\n\x03\x65gp\x10\x02\x12\x0e\n\nincomplete\x10\x03\x42\x0f\n\r_ipv6_addressB\x10\n\x0e_prefix_lengthB\t\n\x07_originB\n\n\x08_path_idB\x10\n\x0e_ipv4_next_hopB\x10\n\x0e_ipv6_next_hopB\x13\n\x11_local_preferenceB\x1b\n\x19_multi_exit_discriminator\"\xb0\x02\n\x12ResultBgpCommunity\x12\x34\n\x04type\x18\x01 \x01(\x0e\x32!.otg.ResultBgpCommunity.Type.EnumH\x00\x88\x01\x01\x12\x16\n\tas_number\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x16\n\tas_custom\x18\x03 \x01(\rH\x02\x88\x01\x01\x1a\x8e\x01\n\x04Type\"\x85\x01\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\x14\n\x10manual_as_number\x10\x01\x12\r\n\tno_export\x10\x02\x12\x11\n\rno_advertised\x10\x03\x12\x17\n\x13no_export_subconfed\x10\x04\x12\x0e\n\nllgr_stale\x10\x05\x12\x0b\n\x07no_llgr\x10\x06\x42\x07\n\x05_typeB\x0c\n\n_as_numberB\x0c\n\n_as_custom\"@\n\x0fResultBgpAsPath\x12-\n\x08segments\x18\x01 \x03(\x0b\x32\x1b.otg.ResultBgpAsPathSegment\"\xce\x01\n\x16ResultBgpAsPathSegment\x12\x38\n\x04type\x18\x01 \x01(\x0e\x32%.otg.ResultBgpAsPathSegment.Type.EnumH\x00\x88\x01\x01\x12\x12\n\nas_numbers\x18\x02 \x03(\r\x1a]\n\x04Type\"U\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\n\n\x06\x61s_seq\x10\x01\x12\n\n\x06\x61s_set\x10\x02\x12\x11\n\ras_confed_seq\x10\x03\x12\x11\n\ras_confed_set\x10\x04\x42\x07\n\x05_type\"1\n\x14IsisLspsStateRequest\x12\x19\n\x11isis_router_names\x18\x01 \x03(\t\"d\n\rIsisLspsState\x12\x1d\n\x10isis_router_name\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x1f\n\x04lsps\x18\x02 \x03(\x0b\x32\x11.otg.IsisLspStateB\x13\n\x11_isis_router_name\"\xa6\x03\n\x0cIsisLspState\x12\x13\n\x06lsp_id\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x35\n\x08pdu_type\x18\x02 \x01(\x0e\x32\x1e.otg.IsisLspState.PduType.EnumH\x01\x88\x01\x01\x12\x1f\n\x12remaining_lifetime\x18\x03 \x01(\rH\x02\x88\x01\x01\x12\x1c\n\x0fsequence_number\x18\x04 \x01(\x04H\x03\x88\x01\x01\x12\x17\n\npdu_length\x18\x05 \x01(\rH\x04\x88\x01\x01\x12 \n\x05\x66lags\x18\x06 \x01(\x0b\x32\x11.otg.IsisLspFlags\x12\x14\n\x07is_type\x18\x07 \x01(\rH\x05\x88\x01\x01\x12\x1e\n\x04tlvs\x18\x08 \x01(\x0b\x32\x10.otg.IsisLspTlvs\x1a<\n\x07PduType\"1\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\x0b\n\x07level_1\x10\x01\x12\x0b\n\x07level_2\x10\x02\x42\t\n\x07_lsp_idB\x0b\n\t_pdu_typeB\x15\n\x13_remaining_lifetimeB\x12\n\x10_sequence_numberB\r\n\x0b_pdu_lengthB\n\n\x08_is_type\"\xfc\x03\n\x0bIsisLspTlvs\x12+\n\rhostname_tlvs\x18\x01 \x03(\x0b\x32\x14.otg.IsisLspHostname\x12;\n\x14is_reachability_tlvs\x18\x02 \x03(\x0b\x32\x1d.otg.IsisLspIsReachabilityTlv\x12L\n\x1d\x65xtended_is_reachability_tlvs\x18\x03 \x03(\x0b\x32%.otg.IsisLspExtendedIsReachabilityTlv\x12P\n\x1fipv4_internal_reachability_tlvs\x18\x04 \x03(\x0b\x32\'.otg.IsisLspIpv4InternalReachabilityTlv\x12P\n\x1fipv4_external_reachability_tlvs\x18\x05 \x03(\x0b\x32\'.otg.IsisLspIpv4ExternalReachabilityTlv\x12P\n\x1f\x65xtended_ipv4_reachability_tlvs\x18\x06 \x03(\x0b\x32\'.otg.IsisLspExtendedIpv4ReachabilityTlv\x12?\n\x16ipv6_reachability_tlvs\x18\x07 \x03(\x0b\x32\x1f.otg.IsisLspIpv6ReachabilityTlv\"5\n\x0fIsisLspHostname\x12\x15\n\x08hostname\x18\x01 \x01(\tH\x00\x88\x01\x01\x42\x0b\n\t_hostname\"\xae\x02\n\x0cIsisLspFlags\x12\x1d\n\x10partition_repair\x18\x01 \x01(\x08H\x00\x88\x01\x01\x12\x1b\n\x0e\x61ttached_error\x18\x02 \x01(\x08H\x01\x88\x01\x01\x12\x1d\n\x10\x61ttached_expense\x18\x03 \x01(\x08H\x02\x88\x01\x01\x12\x1b\n\x0e\x61ttached_delay\x18\x04 \x01(\x08H\x03\x88\x01\x01\x12\x1d\n\x10\x61ttached_default\x18\x05 \x01(\x08H\x04\x88\x01\x01\x12\x15\n\x08overload\x18\x06 \x01(\x08H\x05\x88\x01\x01\x42\x13\n\x11_partition_repairB\x11\n\x0f_attached_errorB\x13\n\x11_attached_expenseB\x11\n\x0f_attached_delayB\x13\n\x11_attached_defaultB\x0b\n\t_overload\"C\n\x18IsisLspIsReachabilityTlv\x12\'\n\tneighbors\x18\x01 \x03(\x0b\x32\x14.otg.IsisLspneighbor\"K\n IsisLspExtendedIsReachabilityTlv\x12\'\n\tneighbors\x18\x01 \x03(\x0b\x32\x14.otg.IsisLspneighbor\"7\n\x0fIsisLspneighbor\x12\x16\n\tsystem_id\x18\x01 \x01(\tH\x00\x88\x01\x01\x42\x0c\n\n_system_id\"L\n\"IsisLspIpv4InternalReachabilityTlv\x12&\n\x08prefixes\x18\x01 \x03(\x0b\x32\x14.otg.IsisLspV4Prefix\"L\n\"IsisLspIpv4ExternalReachabilityTlv\x12&\n\x08prefixes\x18\x01 \x03(\x0b\x32\x14.otg.IsisLspV4Prefix\"\xd7\x03\n\x0fIsisLspV4Prefix\x12\x19\n\x0cipv4_address\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x1a\n\rprefix_length\x18\x02 \x01(\rH\x01\x88\x01\x01\x12N\n\x13redistribution_type\x18\x03 \x01(\x0e\x32,.otg.IsisLspV4Prefix.RedistributionType.EnumH\x02\x88\x01\x01\x12\x1b\n\x0e\x64\x65\x66\x61ult_metric\x18\x04 \x01(\rH\x03\x88\x01\x01\x12>\n\x0borigin_type\x18\x05 \x01(\x0e\x32$.otg.IsisLspV4Prefix.OriginType.EnumH\x04\x88\x01\x01\x1a?\n\x12RedistributionType\")\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\x06\n\x02up\x10\x01\x12\x08\n\x04\x64own\x10\x02\x1a\x41\n\nOriginType\"3\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\x0c\n\x08internal\x10\x01\x12\x0c\n\x08\x65xternal\x10\x02\x42\x0f\n\r_ipv4_addressB\x10\n\x0e_prefix_lengthB\x16\n\x14_redistribution_typeB\x11\n\x0f_default_metricB\x0e\n\x0c_origin_type\"T\n\"IsisLspExtendedIpv4ReachabilityTlv\x12.\n\x08prefixes\x18\x01 \x03(\x0b\x32\x1c.otg.IsisLspExtendedV4Prefix\"\xfd\x02\n\x17IsisLspExtendedV4Prefix\x12\x19\n\x0cipv4_address\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x1a\n\rprefix_length\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x13\n\x06metric\x18\x03 \x01(\rH\x02\x88\x01\x01\x12V\n\x13redistribution_type\x18\x04 \x01(\x0e\x32\x34.otg.IsisLspExtendedV4Prefix.RedistributionType.EnumH\x03\x88\x01\x01\x12\x37\n\x11prefix_attributes\x18\x05 \x01(\x0b\x32\x1c.otg.IsisLspPrefixAttributes\x1a?\n\x12RedistributionType\")\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\x06\n\x02up\x10\x01\x12\x08\n\x04\x64own\x10\x02\x42\x0f\n\r_ipv4_addressB\x10\n\x0e_prefix_lengthB\t\n\x07_metricB\x16\n\x14_redistribution_type\"D\n\x1aIsisLspIpv6ReachabilityTlv\x12&\n\x08prefixes\x18\x01 \x03(\x0b\x32\x14.otg.IsisLspV6Prefix\"\x80\x04\n\x0fIsisLspV6Prefix\x12\x19\n\x0cipv6_address\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x1a\n\rprefix_length\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x13\n\x06metric\x18\x03 \x01(\rH\x02\x88\x01\x01\x12N\n\x13redistribution_type\x18\x04 \x01(\x0e\x32,.otg.IsisLspV6Prefix.RedistributionType.EnumH\x03\x88\x01\x01\x12>\n\x0borigin_type\x18\x05 \x01(\x0e\x32$.otg.IsisLspV6Prefix.OriginType.EnumH\x04\x88\x01\x01\x12\x37\n\x11prefix_attributes\x18\x06 \x01(\x0b\x32\x1c.otg.IsisLspPrefixAttributes\x1a?\n\x12RedistributionType\")\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\x06\n\x02up\x10\x01\x12\x08\n\x04\x64own\x10\x02\x1a\x41\n\nOriginType\"3\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\x0c\n\x08internal\x10\x01\x12\x0c\n\x08\x65xternal\x10\x02\x42\x0f\n\r_ipv6_addressB\x10\n\x0e_prefix_lengthB\t\n\x07_metricB\x16\n\x14_redistribution_typeB\x0e\n\x0c_origin_type\"y\n\x17IsisLspPrefixAttributes\x12\x13\n\x06x_flag\x18\x01 \x01(\x08H\x00\x88\x01\x01\x12\x13\n\x06r_flag\x18\x02 \x01(\x08H\x01\x88\x01\x01\x12\x13\n\x06n_flag\x18\x03 \x01(\x08H\x02\x88\x01\x01\x42\t\n\x07_x_flagB\t\n\x07_r_flagB\t\n\x07_n_flag\"L\n\x19LldpNeighborsStateRequest\x12\x12\n\nlldp_names\x18\x01 \x03(\t\x12\x1b\n\x13neighbor_id_filters\x18\x02 \x03(\t\"\x8b\t\n\x12LldpNeighborsState\x12\x16\n\tlldp_name\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x18\n\x0bsystem_name\x18\x02 \x01(\tH\x01\x88\x01\x01\x12\x1f\n\x12system_description\x18\x03 \x01(\tH\x02\x88\x01\x01\x12\x17\n\nchassis_id\x18\x04 \x01(\tH\x03\x88\x01\x01\x12H\n\x0f\x63hassis_id_type\x18\x05 \x01(\x0e\x32*.otg.LldpNeighborsState.ChassisIdType.EnumH\x04\x88\x01\x01\x12\x18\n\x0bneighbor_id\x18\x06 \x01(\tH\x05\x88\x01\x01\x12\x10\n\x03\x61ge\x18\x07 \x01(\rH\x06\x88\x01\x01\x12\x18\n\x0blast_update\x18\x08 \x01(\rH\x07\x88\x01\x01\x12\x10\n\x03ttl\x18\t \x01(\rH\x08\x88\x01\x01\x12\x14\n\x07port_id\x18\n \x01(\tH\t\x88\x01\x01\x12\x42\n\x0cport_id_type\x18\x0b \x01(\x0e\x32\'.otg.LldpNeighborsState.PortIdType.EnumH\n\x88\x01\x01\x12\x1d\n\x10port_description\x18\x0c \x01(\tH\x0b\x88\x01\x01\x12\x1f\n\x12management_address\x18\r \x01(\tH\x0c\x88\x01\x01\x12$\n\x17management_address_type\x18\x0e \x01(\tH\r\x88\x01\x01\x12,\n\x0b\x63ustom_tlvs\x18\x0f \x03(\x0b\x32\x17.otg.LldpCustomTLVState\x12.\n\x0c\x63\x61pabilities\x18\x10 \x03(\x0b\x32\x18.otg.LldpCapabilityState\x1a\xae\x01\n\rChassisIdType\"\x9c\x01\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\x12\n\x0eport_component\x10\x01\x12\x13\n\x0fnetwork_address\x10\x02\x12\x15\n\x11\x63hassis_component\x10\x03\x12\x0f\n\x0bmac_address\x10\x04\x12\x12\n\x0einterface_name\x10\x05\x12\t\n\x05local\x10\x06\x12\x13\n\x0finterface_alias\x10\x07\x1a\xaa\x01\n\nPortIdType\"\x9b\x01\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\x12\n\x0eport_component\x10\x01\x12\x13\n\x0fnetwork_address\x10\x02\x12\x14\n\x10\x61gent_circuit_id\x10\x03\x12\x0f\n\x0bmac_address\x10\x04\x12\x12\n\x0einterface_name\x10\x05\x12\t\n\x05local\x10\x06\x12\x13\n\x0finterface_alias\x10\x07\x42\x0c\n\n_lldp_nameB\x0e\n\x0c_system_nameB\x15\n\x13_system_descriptionB\r\n\x0b_chassis_idB\x12\n\x10_chassis_id_typeB\x0e\n\x0c_neighbor_idB\x06\n\x04_ageB\x0e\n\x0c_last_updateB\x06\n\x04_ttlB\n\n\x08_port_idB\x0f\n\r_port_id_typeB\x13\n\x11_port_descriptionB\x15\n\x13_management_addressB\x1a\n\x18_management_address_type\"\x82\x01\n\x12LldpCustomTLVState\x12\x18\n\x0b\x63ustom_type\x18\x01 \x01(\rH\x00\x88\x01\x01\x12\x10\n\x03oui\x18\x02 \x01(\tH\x01\x88\x01\x01\x12\x18\n\x0boui_subtype\x18\x03 \x01(\tH\x02\x88\x01\x01\x42\x0e\n\x0c_custom_typeB\x06\n\x04_ouiB\x0e\n\x0c_oui_subtype\"\x90\x03\n\x13LldpCapabilityState\x12J\n\x0f\x63\x61pability_name\x18\x01 \x01(\x0e\x32,.otg.LldpCapabilityState.CapabilityName.EnumH\x00\x88\x01\x01\x12\x1f\n\x12\x63\x61pability_enabled\x18\x02 \x01(\x08H\x01\x88\x01\x01\x1a\xe0\x01\n\x0e\x43\x61pabilityName\"\xcd\x01\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\x0e\n\nmac_bridge\x10\x01\x12\x16\n\x12two_port_mac_relay\x10\x02\x12\x0c\n\x08repeater\x10\x03\x12\x17\n\x13\x64ocsis_cable_device\x10\x04\x12\n\n\x06s_vlan\x10\x05\x12\r\n\ttelephone\x10\x06\x12\t\n\x05other\x10\x07\x12\n\n\x06router\x10\x08\x12\n\n\x06\x63_vlan\x10\t\x12\x10\n\x0cstation_only\x10\n\x12\x15\n\x11wlan_access_point\x10\x0b\x42\x12\n\x10_capability_nameB\x15\n\x13_capability_enabled\"1\n\x14RsvpLspsStateRequest\x12\x19\n\x11rsvp_router_names\x18\x01 \x03(\t\"m\n\rRsvpLspsState\x12\x1d\n\x10rsvp_router_name\x18\x01 \x01(\tH\x00\x88\x01\x01\x12(\n\tipv4_lsps\x18\x02 \x03(\x0b\x32\x15.otg.RsvpIPv4LspStateB\x13\n\x11_rsvp_router_name\"\xe2\x01\n\x10RsvpIPv4LspState\x12\x1b\n\x0esource_address\x18\x01 \x01(\tH\x00\x88\x01\x01\x12 \n\x13\x64\x65stination_address\x18\x02 \x01(\tH\x01\x88\x01\x01\x12\x1e\n\x03lsp\x18\x03 \x01(\x0b\x32\x11.otg.RsvpLspState\x12!\n\x04rros\x18\x04 \x03(\x0b\x32\x13.otg.RsvpLspIpv4Rro\x12!\n\x04\x65ros\x18\x05 \x03(\x0b\x32\x13.otg.RsvpLspIpv4EroB\x11\n\x0f_source_addressB\x16\n\x14_destination_address\"\xb4\x04\n\x0cRsvpLspState\x12\x16\n\ttunnel_id\x18\x01 \x01(\rH\x00\x88\x01\x01\x12\x13\n\x06lsp_id\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x19\n\x0csession_name\x18\x03 \x01(\tH\x02\x88\x01\x01\x12\x15\n\x08label_in\x18\x04 \x01(\rH\x03\x88\x01\x01\x12\x16\n\tlabel_out\x18\x05 \x01(\rH\x04\x88\x01\x01\x12\x41\n\x0esession_status\x18\x06 \x01(\x0e\x32$.otg.RsvpLspState.SessionStatus.EnumH\x05\x88\x01\x01\x12\x44\n\x10last_flap_reason\x18\x07 \x01(\x0e\x32%.otg.RsvpLspState.LastFlapReason.EnumH\x06\x88\x01\x01\x12\x14\n\x07up_time\x18\x08 \x01(\x04H\x07\x88\x01\x01\x1a:\n\rSessionStatus\")\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\x06\n\x02up\x10\x01\x12\x08\n\x04\x64own\x10\x02\x1aY\n\x0eLastFlapReason\"G\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\r\n\tresv_tear\x10\x01\x12\r\n\tpath_tear\x10\x02\x12\x10\n\x0cpath_timeout\x10\x03\x42\x0c\n\n_tunnel_idB\t\n\x07_lsp_idB\x0f\n\r_session_nameB\x0b\n\t_label_inB\x0c\n\n_label_outB\x11\n\x0f_session_statusB\x13\n\x11_last_flap_reasonB\n\n\x08_up_time\"b\n\x0eRsvpLspIpv4Rro\x12\x14\n\x07\x61\x64\x64ress\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x1b\n\x0ereported_label\x18\x02 \x01(\rH\x01\x88\x01\x01\x42\n\n\x08_addressB\x11\n\x0f_reported_label\"\xf2\x01\n\x0eRsvpLspIpv4Ero\x12\x13\n\x06prefix\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x10\n\x03\x61sn\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x30\n\x04type\x18\x03 \x01(\x0e\x32\x1d.otg.RsvpLspIpv4Ero.Type.EnumH\x02\x88\x01\x01\x1ak\n\x04Type\"c\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\x08\n\x04ipv4\x10\x01\x12\x08\n\x04ipv6\x10\x02\x12\x07\n\x03\x61sn\x10\x03\x12\x08\n\x04\x61sn4\x10\x04\x12\t\n\x05label\x10\x05\x12\x18\n\x14unnumbered_interface\x10\x06\x42\t\n\x07_prefixB\x06\n\x04_asnB\x07\n\x05_type\"6\n\x0e\x43\x61ptureRequest\x12\x16\n\tport_name\x18\x01 \x01(\tH\x00\x88\x01\x01\x42\x0c\n\n_port_name\"w\n\x1dPatternFlowEthernetDstCounter\x12\x12\n\x05start\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x11\n\x04step\x18\x02 \x01(\tH\x01\x88\x01\x01\x12\x12\n\x05\x63ount\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x08\n\x06_startB\x07\n\x05_stepB\x08\n\x06_count\"}\n\x1fPatternFlowEthernetDstMetricTag\x12\x11\n\x04name\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x13\n\x06offset\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x13\n\x06length\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x07\n\x05_nameB\t\n\x07_offsetB\t\n\x07_length\"\xb6\x03\n\x16PatternFlowEthernetDst\x12<\n\x06\x63hoice\x18\x01 \x01(\x0e\x32\'.otg.PatternFlowEthernetDst.Choice.EnumH\x00\x88\x01\x01\x12\x12\n\x05value\x18\x02 \x01(\tH\x01\x88\x01\x01\x12\x0e\n\x06values\x18\x03 \x03(\t\x12\x11\n\x04\x61uto\x18\x04 \x01(\tH\x02\x88\x01\x01\x12\x35\n\tincrement\x18\x06 \x01(\x0b\x32\".otg.PatternFlowEthernetDstCounter\x12\x35\n\tdecrement\x18\x07 \x01(\x0b\x32\".otg.PatternFlowEthernetDstCounter\x12\x39\n\x0bmetric_tags\x18\x08 \x03(\x0b\x32$.otg.PatternFlowEthernetDstMetricTag\x1a`\n\x06\x43hoice\"V\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\t\n\x05value\x10\x02\x12\n\n\x06values\x10\x03\x12\x08\n\x04\x61uto\x10\x01\x12\r\n\tincrement\x10\x04\x12\r\n\tdecrement\x10\x05\x42\t\n\x07_choiceB\x08\n\x06_valueB\x07\n\x05_auto\"w\n\x1dPatternFlowEthernetSrcCounter\x12\x12\n\x05start\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x11\n\x04step\x18\x02 \x01(\tH\x01\x88\x01\x01\x12\x12\n\x05\x63ount\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x08\n\x06_startB\x07\n\x05_stepB\x08\n\x06_count\"}\n\x1fPatternFlowEthernetSrcMetricTag\x12\x11\n\x04name\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x13\n\x06offset\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x13\n\x06length\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x07\n\x05_nameB\t\n\x07_offsetB\t\n\x07_length\"\x90\x03\n\x16PatternFlowEthernetSrc\x12<\n\x06\x63hoice\x18\x01 \x01(\x0e\x32\'.otg.PatternFlowEthernetSrc.Choice.EnumH\x00\x88\x01\x01\x12\x12\n\x05value\x18\x02 \x01(\tH\x01\x88\x01\x01\x12\x0e\n\x06values\x18\x03 \x03(\t\x12\x35\n\tincrement\x18\x05 \x01(\x0b\x32\".otg.PatternFlowEthernetSrcCounter\x12\x35\n\tdecrement\x18\x06 \x01(\x0b\x32\".otg.PatternFlowEthernetSrcCounter\x12\x39\n\x0bmetric_tags\x18\x07 \x03(\x0b\x32$.otg.PatternFlowEthernetSrcMetricTag\x1aV\n\x06\x43hoice\"L\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\t\n\x05value\x10\x02\x12\n\n\x06values\x10\x03\x12\r\n\tincrement\x10\x04\x12\r\n\tdecrement\x10\x05\x42\t\n\x07_choiceB\x08\n\x06_value\"}\n#PatternFlowEthernetEtherTypeCounter\x12\x12\n\x05start\x18\x01 \x01(\rH\x00\x88\x01\x01\x12\x11\n\x04step\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x12\n\x05\x63ount\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x08\n\x06_startB\x07\n\x05_stepB\x08\n\x06_count\"\x83\x01\n%PatternFlowEthernetEtherTypeMetricTag\x12\x11\n\x04name\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x13\n\x06offset\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x13\n\x06length\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x07\n\x05_nameB\t\n\x07_offsetB\t\n\x07_length\"\xd4\x03\n\x1cPatternFlowEthernetEtherType\x12\x42\n\x06\x63hoice\x18\x01 \x01(\x0e\x32-.otg.PatternFlowEthernetEtherType.Choice.EnumH\x00\x88\x01\x01\x12\x12\n\x05value\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x0e\n\x06values\x18\x03 \x03(\r\x12\x11\n\x04\x61uto\x18\x04 \x01(\rH\x02\x88\x01\x01\x12;\n\tincrement\x18\x06 \x01(\x0b\x32(.otg.PatternFlowEthernetEtherTypeCounter\x12;\n\tdecrement\x18\x07 \x01(\x0b\x32(.otg.PatternFlowEthernetEtherTypeCounter\x12?\n\x0bmetric_tags\x18\x08 \x03(\x0b\x32*.otg.PatternFlowEthernetEtherTypeMetricTag\x1a`\n\x06\x43hoice\"V\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\t\n\x05value\x10\x02\x12\n\n\x06values\x10\x03\x12\x08\n\x04\x61uto\x10\x01\x12\r\n\tincrement\x10\x04\x12\r\n\tdecrement\x10\x05\x42\t\n\x07_choiceB\x08\n\x06_valueB\x07\n\x05_auto\"|\n\"PatternFlowEthernetPfcQueueCounter\x12\x12\n\x05start\x18\x01 \x01(\rH\x00\x88\x01\x01\x12\x11\n\x04step\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x12\n\x05\x63ount\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x08\n\x06_startB\x07\n\x05_stepB\x08\n\x06_count\"\x82\x01\n$PatternFlowEthernetPfcQueueMetricTag\x12\x11\n\x04name\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x13\n\x06offset\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x13\n\x06length\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x07\n\x05_nameB\t\n\x07_offsetB\t\n\x07_length\"\xa9\x03\n\x1bPatternFlowEthernetPfcQueue\x12\x41\n\x06\x63hoice\x18\x01 \x01(\x0e\x32,.otg.PatternFlowEthernetPfcQueue.Choice.EnumH\x00\x88\x01\x01\x12\x12\n\x05value\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x0e\n\x06values\x18\x03 \x03(\r\x12:\n\tincrement\x18\x05 \x01(\x0b\x32\'.otg.PatternFlowEthernetPfcQueueCounter\x12:\n\tdecrement\x18\x06 \x01(\x0b\x32\'.otg.PatternFlowEthernetPfcQueueCounter\x12>\n\x0bmetric_tags\x18\x07 \x03(\x0b\x32).otg.PatternFlowEthernetPfcQueueMetricTag\x1aV\n\x06\x43hoice\"L\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\t\n\x05value\x10\x02\x12\n\n\x06values\x10\x03\x12\r\n\tincrement\x10\x04\x12\r\n\tdecrement\x10\x05\x42\t\n\x07_choiceB\x08\n\x06_value\"x\n\x1ePatternFlowVlanPriorityCounter\x12\x12\n\x05start\x18\x01 \x01(\rH\x00\x88\x01\x01\x12\x11\n\x04step\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x12\n\x05\x63ount\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x08\n\x06_startB\x07\n\x05_stepB\x08\n\x06_count\"~\n PatternFlowVlanPriorityMetricTag\x12\x11\n\x04name\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x13\n\x06offset\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x13\n\x06length\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x07\n\x05_nameB\t\n\x07_offsetB\t\n\x07_length\"\x95\x03\n\x17PatternFlowVlanPriority\x12=\n\x06\x63hoice\x18\x01 \x01(\x0e\x32(.otg.PatternFlowVlanPriority.Choice.EnumH\x00\x88\x01\x01\x12\x12\n\x05value\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x0e\n\x06values\x18\x03 \x03(\r\x12\x36\n\tincrement\x18\x05 \x01(\x0b\x32#.otg.PatternFlowVlanPriorityCounter\x12\x36\n\tdecrement\x18\x06 \x01(\x0b\x32#.otg.PatternFlowVlanPriorityCounter\x12:\n\x0bmetric_tags\x18\x07 \x03(\x0b\x32%.otg.PatternFlowVlanPriorityMetricTag\x1aV\n\x06\x43hoice\"L\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\t\n\x05value\x10\x02\x12\n\n\x06values\x10\x03\x12\r\n\tincrement\x10\x04\x12\r\n\tdecrement\x10\x05\x42\t\n\x07_choiceB\x08\n\x06_value\"s\n\x19PatternFlowVlanCfiCounter\x12\x12\n\x05start\x18\x01 \x01(\rH\x00\x88\x01\x01\x12\x11\n\x04step\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x12\n\x05\x63ount\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x08\n\x06_startB\x07\n\x05_stepB\x08\n\x06_count\"y\n\x1bPatternFlowVlanCfiMetricTag\x12\x11\n\x04name\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x13\n\x06offset\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x13\n\x06length\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x07\n\x05_nameB\t\n\x07_offsetB\t\n\x07_length\"\xfc\x02\n\x12PatternFlowVlanCfi\x12\x38\n\x06\x63hoice\x18\x01 \x01(\x0e\x32#.otg.PatternFlowVlanCfi.Choice.EnumH\x00\x88\x01\x01\x12\x12\n\x05value\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x0e\n\x06values\x18\x03 \x03(\r\x12\x31\n\tincrement\x18\x05 \x01(\x0b\x32\x1e.otg.PatternFlowVlanCfiCounter\x12\x31\n\tdecrement\x18\x06 \x01(\x0b\x32\x1e.otg.PatternFlowVlanCfiCounter\x12\x35\n\x0bmetric_tags\x18\x07 \x03(\x0b\x32 .otg.PatternFlowVlanCfiMetricTag\x1aV\n\x06\x43hoice\"L\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\t\n\x05value\x10\x02\x12\n\n\x06values\x10\x03\x12\r\n\tincrement\x10\x04\x12\r\n\tdecrement\x10\x05\x42\t\n\x07_choiceB\x08\n\x06_value\"r\n\x18PatternFlowVlanIdCounter\x12\x12\n\x05start\x18\x01 \x01(\rH\x00\x88\x01\x01\x12\x11\n\x04step\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x12\n\x05\x63ount\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x08\n\x06_startB\x07\n\x05_stepB\x08\n\x06_count\"x\n\x1aPatternFlowVlanIdMetricTag\x12\x11\n\x04name\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x13\n\x06offset\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x13\n\x06length\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x07\n\x05_nameB\t\n\x07_offsetB\t\n\x07_length\"\xf7\x02\n\x11PatternFlowVlanId\x12\x37\n\x06\x63hoice\x18\x01 \x01(\x0e\x32\".otg.PatternFlowVlanId.Choice.EnumH\x00\x88\x01\x01\x12\x12\n\x05value\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x0e\n\x06values\x18\x03 \x03(\r\x12\x30\n\tincrement\x18\x05 \x01(\x0b\x32\x1d.otg.PatternFlowVlanIdCounter\x12\x30\n\tdecrement\x18\x06 \x01(\x0b\x32\x1d.otg.PatternFlowVlanIdCounter\x12\x34\n\x0bmetric_tags\x18\x07 \x03(\x0b\x32\x1f.otg.PatternFlowVlanIdMetricTag\x1aV\n\x06\x43hoice\"L\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\t\n\x05value\x10\x02\x12\n\n\x06values\x10\x03\x12\r\n\tincrement\x10\x04\x12\r\n\tdecrement\x10\x05\x42\t\n\x07_choiceB\x08\n\x06_value\"t\n\x1aPatternFlowVlanTpidCounter\x12\x12\n\x05start\x18\x01 \x01(\rH\x00\x88\x01\x01\x12\x11\n\x04step\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x12\n\x05\x63ount\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x08\n\x06_startB\x07\n\x05_stepB\x08\n\x06_count\"z\n\x1cPatternFlowVlanTpidMetricTag\x12\x11\n\x04name\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x13\n\x06offset\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x13\n\x06length\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x07\n\x05_nameB\t\n\x07_offsetB\t\n\x07_length\"\x81\x03\n\x13PatternFlowVlanTpid\x12\x39\n\x06\x63hoice\x18\x01 \x01(\x0e\x32$.otg.PatternFlowVlanTpid.Choice.EnumH\x00\x88\x01\x01\x12\x12\n\x05value\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x0e\n\x06values\x18\x03 \x03(\r\x12\x32\n\tincrement\x18\x05 \x01(\x0b\x32\x1f.otg.PatternFlowVlanTpidCounter\x12\x32\n\tdecrement\x18\x06 \x01(\x0b\x32\x1f.otg.PatternFlowVlanTpidCounter\x12\x36\n\x0bmetric_tags\x18\x07 \x03(\x0b\x32!.otg.PatternFlowVlanTpidMetricTag\x1aV\n\x06\x43hoice\"L\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\t\n\x05value\x10\x02\x12\n\n\x06values\x10\x03\x12\r\n\tincrement\x10\x04\x12\r\n\tdecrement\x10\x05\x42\t\n\x07_choiceB\x08\n\x06_value\"v\n\x1cPatternFlowVxlanFlagsCounter\x12\x12\n\x05start\x18\x01 \x01(\rH\x00\x88\x01\x01\x12\x11\n\x04step\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x12\n\x05\x63ount\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x08\n\x06_startB\x07\n\x05_stepB\x08\n\x06_count\"|\n\x1ePatternFlowVxlanFlagsMetricTag\x12\x11\n\x04name\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x13\n\x06offset\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x13\n\x06length\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x07\n\x05_nameB\t\n\x07_offsetB\t\n\x07_length\"\x8b\x03\n\x15PatternFlowVxlanFlags\x12;\n\x06\x63hoice\x18\x01 \x01(\x0e\x32&.otg.PatternFlowVxlanFlags.Choice.EnumH\x00\x88\x01\x01\x12\x12\n\x05value\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x0e\n\x06values\x18\x03 \x03(\r\x12\x34\n\tincrement\x18\x05 \x01(\x0b\x32!.otg.PatternFlowVxlanFlagsCounter\x12\x34\n\tdecrement\x18\x06 \x01(\x0b\x32!.otg.PatternFlowVxlanFlagsCounter\x12\x38\n\x0bmetric_tags\x18\x07 \x03(\x0b\x32#.otg.PatternFlowVxlanFlagsMetricTag\x1aV\n\x06\x43hoice\"L\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\t\n\x05value\x10\x02\x12\n\n\x06values\x10\x03\x12\r\n\tincrement\x10\x04\x12\r\n\tdecrement\x10\x05\x42\t\n\x07_choiceB\x08\n\x06_value\"z\n PatternFlowVxlanReserved0Counter\x12\x12\n\x05start\x18\x01 \x01(\rH\x00\x88\x01\x01\x12\x11\n\x04step\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x12\n\x05\x63ount\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x08\n\x06_startB\x07\n\x05_stepB\x08\n\x06_count\"\x80\x01\n\"PatternFlowVxlanReserved0MetricTag\x12\x11\n\x04name\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x13\n\x06offset\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x13\n\x06length\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x07\n\x05_nameB\t\n\x07_offsetB\t\n\x07_length\"\x9f\x03\n\x19PatternFlowVxlanReserved0\x12?\n\x06\x63hoice\x18\x01 \x01(\x0e\x32*.otg.PatternFlowVxlanReserved0.Choice.EnumH\x00\x88\x01\x01\x12\x12\n\x05value\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x0e\n\x06values\x18\x03 \x03(\r\x12\x38\n\tincrement\x18\x05 \x01(\x0b\x32%.otg.PatternFlowVxlanReserved0Counter\x12\x38\n\tdecrement\x18\x06 \x01(\x0b\x32%.otg.PatternFlowVxlanReserved0Counter\x12<\n\x0bmetric_tags\x18\x07 \x03(\x0b\x32\'.otg.PatternFlowVxlanReserved0MetricTag\x1aV\n\x06\x43hoice\"L\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\t\n\x05value\x10\x02\x12\n\n\x06values\x10\x03\x12\r\n\tincrement\x10\x04\x12\r\n\tdecrement\x10\x05\x42\t\n\x07_choiceB\x08\n\x06_value\"t\n\x1aPatternFlowVxlanVniCounter\x12\x12\n\x05start\x18\x01 \x01(\rH\x00\x88\x01\x01\x12\x11\n\x04step\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x12\n\x05\x63ount\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x08\n\x06_startB\x07\n\x05_stepB\x08\n\x06_count\"z\n\x1cPatternFlowVxlanVniMetricTag\x12\x11\n\x04name\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x13\n\x06offset\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x13\n\x06length\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x07\n\x05_nameB\t\n\x07_offsetB\t\n\x07_length\"\xa7\x03\n\x13PatternFlowVxlanVni\x12\x39\n\x06\x63hoice\x18\x01 \x01(\x0e\x32$.otg.PatternFlowVxlanVni.Choice.EnumH\x00\x88\x01\x01\x12\x12\n\x05value\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x0e\n\x06values\x18\x03 \x03(\r\x12\x11\n\x04\x61uto\x18\x04 \x01(\rH\x02\x88\x01\x01\x12\x32\n\tincrement\x18\x06 \x01(\x0b\x32\x1f.otg.PatternFlowVxlanVniCounter\x12\x32\n\tdecrement\x18\x07 \x01(\x0b\x32\x1f.otg.PatternFlowVxlanVniCounter\x12\x36\n\x0bmetric_tags\x18\x08 \x03(\x0b\x32!.otg.PatternFlowVxlanVniMetricTag\x1a`\n\x06\x43hoice\"V\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\t\n\x05value\x10\x02\x12\n\n\x06values\x10\x03\x12\x08\n\x04\x61uto\x10\x01\x12\r\n\tincrement\x10\x04\x12\r\n\tdecrement\x10\x05\x42\t\n\x07_choiceB\x08\n\x06_valueB\x07\n\x05_auto\"z\n PatternFlowVxlanReserved1Counter\x12\x12\n\x05start\x18\x01 \x01(\rH\x00\x88\x01\x01\x12\x11\n\x04step\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x12\n\x05\x63ount\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x08\n\x06_startB\x07\n\x05_stepB\x08\n\x06_count\"\x80\x01\n\"PatternFlowVxlanReserved1MetricTag\x12\x11\n\x04name\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x13\n\x06offset\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x13\n\x06length\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x07\n\x05_nameB\t\n\x07_offsetB\t\n\x07_length\"\x9f\x03\n\x19PatternFlowVxlanReserved1\x12?\n\x06\x63hoice\x18\x01 \x01(\x0e\x32*.otg.PatternFlowVxlanReserved1.Choice.EnumH\x00\x88\x01\x01\x12\x12\n\x05value\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x0e\n\x06values\x18\x03 \x03(\r\x12\x38\n\tincrement\x18\x05 \x01(\x0b\x32%.otg.PatternFlowVxlanReserved1Counter\x12\x38\n\tdecrement\x18\x06 \x01(\x0b\x32%.otg.PatternFlowVxlanReserved1Counter\x12<\n\x0bmetric_tags\x18\x07 \x03(\x0b\x32\'.otg.PatternFlowVxlanReserved1MetricTag\x1aV\n\x06\x43hoice\"L\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\t\n\x05value\x10\x02\x12\n\n\x06values\x10\x03\x12\r\n\tincrement\x10\x04\x12\r\n\tdecrement\x10\x05\x42\t\n\x07_choiceB\x08\n\x06_value\"w\n\x1dPatternFlowIpv4VersionCounter\x12\x12\n\x05start\x18\x01 \x01(\rH\x00\x88\x01\x01\x12\x11\n\x04step\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x12\n\x05\x63ount\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x08\n\x06_startB\x07\n\x05_stepB\x08\n\x06_count\"}\n\x1fPatternFlowIpv4VersionMetricTag\x12\x11\n\x04name\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x13\n\x06offset\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x13\n\x06length\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x07\n\x05_nameB\t\n\x07_offsetB\t\n\x07_length\"\x90\x03\n\x16PatternFlowIpv4Version\x12<\n\x06\x63hoice\x18\x01 \x01(\x0e\x32\'.otg.PatternFlowIpv4Version.Choice.EnumH\x00\x88\x01\x01\x12\x12\n\x05value\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x0e\n\x06values\x18\x03 \x03(\r\x12\x35\n\tincrement\x18\x05 \x01(\x0b\x32\".otg.PatternFlowIpv4VersionCounter\x12\x35\n\tdecrement\x18\x06 \x01(\x0b\x32\".otg.PatternFlowIpv4VersionCounter\x12\x39\n\x0bmetric_tags\x18\x07 \x03(\x0b\x32$.otg.PatternFlowIpv4VersionMetricTag\x1aV\n\x06\x43hoice\"L\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\t\n\x05value\x10\x02\x12\n\n\x06values\x10\x03\x12\r\n\tincrement\x10\x04\x12\r\n\tdecrement\x10\x05\x42\t\n\x07_choiceB\x08\n\x06_value\"|\n\"PatternFlowIpv4HeaderLengthCounter\x12\x12\n\x05start\x18\x01 \x01(\rH\x00\x88\x01\x01\x12\x11\n\x04step\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x12\n\x05\x63ount\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x08\n\x06_startB\x07\n\x05_stepB\x08\n\x06_count\"\x82\x01\n$PatternFlowIpv4HeaderLengthMetricTag\x12\x11\n\x04name\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x13\n\x06offset\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x13\n\x06length\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x07\n\x05_nameB\t\n\x07_offsetB\t\n\x07_length\"\xcf\x03\n\x1bPatternFlowIpv4HeaderLength\x12\x41\n\x06\x63hoice\x18\x01 \x01(\x0e\x32,.otg.PatternFlowIpv4HeaderLength.Choice.EnumH\x00\x88\x01\x01\x12\x12\n\x05value\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x0e\n\x06values\x18\x03 \x03(\r\x12\x11\n\x04\x61uto\x18\x04 \x01(\rH\x02\x88\x01\x01\x12:\n\tincrement\x18\x06 \x01(\x0b\x32\'.otg.PatternFlowIpv4HeaderLengthCounter\x12:\n\tdecrement\x18\x07 \x01(\x0b\x32\'.otg.PatternFlowIpv4HeaderLengthCounter\x12>\n\x0bmetric_tags\x18\x08 \x03(\x0b\x32).otg.PatternFlowIpv4HeaderLengthMetricTag\x1a`\n\x06\x43hoice\"V\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\t\n\x05value\x10\x02\x12\n\n\x06values\x10\x03\x12\x08\n\x04\x61uto\x10\x01\x12\r\n\tincrement\x10\x04\x12\r\n\tdecrement\x10\x05\x42\t\n\x07_choiceB\x08\n\x06_valueB\x07\n\x05_auto\"{\n!PatternFlowIpv4TotalLengthCounter\x12\x12\n\x05start\x18\x01 \x01(\rH\x00\x88\x01\x01\x12\x11\n\x04step\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x12\n\x05\x63ount\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x08\n\x06_startB\x07\n\x05_stepB\x08\n\x06_count\"\x81\x01\n#PatternFlowIpv4TotalLengthMetricTag\x12\x11\n\x04name\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x13\n\x06offset\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x13\n\x06length\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x07\n\x05_nameB\t\n\x07_offsetB\t\n\x07_length\"\xca\x03\n\x1aPatternFlowIpv4TotalLength\x12@\n\x06\x63hoice\x18\x01 \x01(\x0e\x32+.otg.PatternFlowIpv4TotalLength.Choice.EnumH\x00\x88\x01\x01\x12\x12\n\x05value\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x0e\n\x06values\x18\x03 \x03(\r\x12\x11\n\x04\x61uto\x18\x04 \x01(\rH\x02\x88\x01\x01\x12\x39\n\tincrement\x18\x06 \x01(\x0b\x32&.otg.PatternFlowIpv4TotalLengthCounter\x12\x39\n\tdecrement\x18\x07 \x01(\x0b\x32&.otg.PatternFlowIpv4TotalLengthCounter\x12=\n\x0bmetric_tags\x18\x08 \x03(\x0b\x32(.otg.PatternFlowIpv4TotalLengthMetricTag\x1a`\n\x06\x43hoice\"V\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\t\n\x05value\x10\x02\x12\n\n\x06values\x10\x03\x12\x08\n\x04\x61uto\x10\x01\x12\r\n\tincrement\x10\x04\x12\r\n\tdecrement\x10\x05\x42\t\n\x07_choiceB\x08\n\x06_valueB\x07\n\x05_auto\"~\n$PatternFlowIpv4IdentificationCounter\x12\x12\n\x05start\x18\x01 \x01(\rH\x00\x88\x01\x01\x12\x11\n\x04step\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x12\n\x05\x63ount\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x08\n\x06_startB\x07\n\x05_stepB\x08\n\x06_count\"\x84\x01\n&PatternFlowIpv4IdentificationMetricTag\x12\x11\n\x04name\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x13\n\x06offset\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x13\n\x06length\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x07\n\x05_nameB\t\n\x07_offsetB\t\n\x07_length\"\xb3\x03\n\x1dPatternFlowIpv4Identification\x12\x43\n\x06\x63hoice\x18\x01 \x01(\x0e\x32..otg.PatternFlowIpv4Identification.Choice.EnumH\x00\x88\x01\x01\x12\x12\n\x05value\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x0e\n\x06values\x18\x03 \x03(\r\x12<\n\tincrement\x18\x05 \x01(\x0b\x32).otg.PatternFlowIpv4IdentificationCounter\x12<\n\tdecrement\x18\x06 \x01(\x0b\x32).otg.PatternFlowIpv4IdentificationCounter\x12@\n\x0bmetric_tags\x18\x07 \x03(\x0b\x32+.otg.PatternFlowIpv4IdentificationMetricTag\x1aV\n\x06\x43hoice\"L\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\t\n\x05value\x10\x02\x12\n\n\x06values\x10\x03\x12\r\n\tincrement\x10\x04\x12\r\n\tdecrement\x10\x05\x42\t\n\x07_choiceB\x08\n\x06_value\"x\n\x1ePatternFlowIpv4ReservedCounter\x12\x12\n\x05start\x18\x01 \x01(\rH\x00\x88\x01\x01\x12\x11\n\x04step\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x12\n\x05\x63ount\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x08\n\x06_startB\x07\n\x05_stepB\x08\n\x06_count\"~\n PatternFlowIpv4ReservedMetricTag\x12\x11\n\x04name\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x13\n\x06offset\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x13\n\x06length\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x07\n\x05_nameB\t\n\x07_offsetB\t\n\x07_length\"\x95\x03\n\x17PatternFlowIpv4Reserved\x12=\n\x06\x63hoice\x18\x01 \x01(\x0e\x32(.otg.PatternFlowIpv4Reserved.Choice.EnumH\x00\x88\x01\x01\x12\x12\n\x05value\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x0e\n\x06values\x18\x03 \x03(\r\x12\x36\n\tincrement\x18\x05 \x01(\x0b\x32#.otg.PatternFlowIpv4ReservedCounter\x12\x36\n\tdecrement\x18\x06 \x01(\x0b\x32#.otg.PatternFlowIpv4ReservedCounter\x12:\n\x0bmetric_tags\x18\x07 \x03(\x0b\x32%.otg.PatternFlowIpv4ReservedMetricTag\x1aV\n\x06\x43hoice\"L\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\t\n\x05value\x10\x02\x12\n\n\x06values\x10\x03\x12\r\n\tincrement\x10\x04\x12\r\n\tdecrement\x10\x05\x42\t\n\x07_choiceB\x08\n\x06_value\"|\n\"PatternFlowIpv4DontFragmentCounter\x12\x12\n\x05start\x18\x01 \x01(\rH\x00\x88\x01\x01\x12\x11\n\x04step\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x12\n\x05\x63ount\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x08\n\x06_startB\x07\n\x05_stepB\x08\n\x06_count\"\x82\x01\n$PatternFlowIpv4DontFragmentMetricTag\x12\x11\n\x04name\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x13\n\x06offset\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x13\n\x06length\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x07\n\x05_nameB\t\n\x07_offsetB\t\n\x07_length\"\xa9\x03\n\x1bPatternFlowIpv4DontFragment\x12\x41\n\x06\x63hoice\x18\x01 \x01(\x0e\x32,.otg.PatternFlowIpv4DontFragment.Choice.EnumH\x00\x88\x01\x01\x12\x12\n\x05value\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x0e\n\x06values\x18\x03 \x03(\r\x12:\n\tincrement\x18\x05 \x01(\x0b\x32\'.otg.PatternFlowIpv4DontFragmentCounter\x12:\n\tdecrement\x18\x06 \x01(\x0b\x32\'.otg.PatternFlowIpv4DontFragmentCounter\x12>\n\x0bmetric_tags\x18\x07 \x03(\x0b\x32).otg.PatternFlowIpv4DontFragmentMetricTag\x1aV\n\x06\x43hoice\"L\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\t\n\x05value\x10\x02\x12\n\n\x06values\x10\x03\x12\r\n\tincrement\x10\x04\x12\r\n\tdecrement\x10\x05\x42\t\n\x07_choiceB\x08\n\x06_value\"}\n#PatternFlowIpv4MoreFragmentsCounter\x12\x12\n\x05start\x18\x01 \x01(\rH\x00\x88\x01\x01\x12\x11\n\x04step\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x12\n\x05\x63ount\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x08\n\x06_startB\x07\n\x05_stepB\x08\n\x06_count\"\x83\x01\n%PatternFlowIpv4MoreFragmentsMetricTag\x12\x11\n\x04name\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x13\n\x06offset\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x13\n\x06length\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x07\n\x05_nameB\t\n\x07_offsetB\t\n\x07_length\"\xae\x03\n\x1cPatternFlowIpv4MoreFragments\x12\x42\n\x06\x63hoice\x18\x01 \x01(\x0e\x32-.otg.PatternFlowIpv4MoreFragments.Choice.EnumH\x00\x88\x01\x01\x12\x12\n\x05value\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x0e\n\x06values\x18\x03 \x03(\r\x12;\n\tincrement\x18\x05 \x01(\x0b\x32(.otg.PatternFlowIpv4MoreFragmentsCounter\x12;\n\tdecrement\x18\x06 \x01(\x0b\x32(.otg.PatternFlowIpv4MoreFragmentsCounter\x12?\n\x0bmetric_tags\x18\x07 \x03(\x0b\x32*.otg.PatternFlowIpv4MoreFragmentsMetricTag\x1aV\n\x06\x43hoice\"L\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\t\n\x05value\x10\x02\x12\n\n\x06values\x10\x03\x12\r\n\tincrement\x10\x04\x12\r\n\tdecrement\x10\x05\x42\t\n\x07_choiceB\x08\n\x06_value\"~\n$PatternFlowIpv4FragmentOffsetCounter\x12\x12\n\x05start\x18\x01 \x01(\rH\x00\x88\x01\x01\x12\x11\n\x04step\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x12\n\x05\x63ount\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x08\n\x06_startB\x07\n\x05_stepB\x08\n\x06_count\"\x84\x01\n&PatternFlowIpv4FragmentOffsetMetricTag\x12\x11\n\x04name\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x13\n\x06offset\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x13\n\x06length\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x07\n\x05_nameB\t\n\x07_offsetB\t\n\x07_length\"\xb3\x03\n\x1dPatternFlowIpv4FragmentOffset\x12\x43\n\x06\x63hoice\x18\x01 \x01(\x0e\x32..otg.PatternFlowIpv4FragmentOffset.Choice.EnumH\x00\x88\x01\x01\x12\x12\n\x05value\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x0e\n\x06values\x18\x03 \x03(\r\x12<\n\tincrement\x18\x05 \x01(\x0b\x32).otg.PatternFlowIpv4FragmentOffsetCounter\x12<\n\tdecrement\x18\x06 \x01(\x0b\x32).otg.PatternFlowIpv4FragmentOffsetCounter\x12@\n\x0bmetric_tags\x18\x07 \x03(\x0b\x32+.otg.PatternFlowIpv4FragmentOffsetMetricTag\x1aV\n\x06\x43hoice\"L\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\t\n\x05value\x10\x02\x12\n\n\x06values\x10\x03\x12\r\n\tincrement\x10\x04\x12\r\n\tdecrement\x10\x05\x42\t\n\x07_choiceB\x08\n\x06_value\"z\n PatternFlowIpv4TimeToLiveCounter\x12\x12\n\x05start\x18\x01 \x01(\rH\x00\x88\x01\x01\x12\x11\n\x04step\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x12\n\x05\x63ount\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x08\n\x06_startB\x07\n\x05_stepB\x08\n\x06_count\"\x80\x01\n\"PatternFlowIpv4TimeToLiveMetricTag\x12\x11\n\x04name\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x13\n\x06offset\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x13\n\x06length\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x07\n\x05_nameB\t\n\x07_offsetB\t\n\x07_length\"\x9f\x03\n\x19PatternFlowIpv4TimeToLive\x12?\n\x06\x63hoice\x18\x01 \x01(\x0e\x32*.otg.PatternFlowIpv4TimeToLive.Choice.EnumH\x00\x88\x01\x01\x12\x12\n\x05value\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x0e\n\x06values\x18\x03 \x03(\r\x12\x38\n\tincrement\x18\x05 \x01(\x0b\x32%.otg.PatternFlowIpv4TimeToLiveCounter\x12\x38\n\tdecrement\x18\x06 \x01(\x0b\x32%.otg.PatternFlowIpv4TimeToLiveCounter\x12<\n\x0bmetric_tags\x18\x07 \x03(\x0b\x32\'.otg.PatternFlowIpv4TimeToLiveMetricTag\x1aV\n\x06\x43hoice\"L\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\t\n\x05value\x10\x02\x12\n\n\x06values\x10\x03\x12\r\n\tincrement\x10\x04\x12\r\n\tdecrement\x10\x05\x42\t\n\x07_choiceB\x08\n\x06_value\"x\n\x1ePatternFlowIpv4ProtocolCounter\x12\x12\n\x05start\x18\x01 \x01(\rH\x00\x88\x01\x01\x12\x11\n\x04step\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x12\n\x05\x63ount\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x08\n\x06_startB\x07\n\x05_stepB\x08\n\x06_count\"~\n PatternFlowIpv4ProtocolMetricTag\x12\x11\n\x04name\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x13\n\x06offset\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x13\n\x06length\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x07\n\x05_nameB\t\n\x07_offsetB\t\n\x07_length\"\xbb\x03\n\x17PatternFlowIpv4Protocol\x12=\n\x06\x63hoice\x18\x01 \x01(\x0e\x32(.otg.PatternFlowIpv4Protocol.Choice.EnumH\x00\x88\x01\x01\x12\x12\n\x05value\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x0e\n\x06values\x18\x03 \x03(\r\x12\x11\n\x04\x61uto\x18\x04 \x01(\rH\x02\x88\x01\x01\x12\x36\n\tincrement\x18\x06 \x01(\x0b\x32#.otg.PatternFlowIpv4ProtocolCounter\x12\x36\n\tdecrement\x18\x07 \x01(\x0b\x32#.otg.PatternFlowIpv4ProtocolCounter\x12:\n\x0bmetric_tags\x18\x08 \x03(\x0b\x32%.otg.PatternFlowIpv4ProtocolMetricTag\x1a`\n\x06\x43hoice\"V\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\t\n\x05value\x10\x02\x12\n\n\x06values\x10\x03\x12\x08\n\x04\x61uto\x10\x01\x12\r\n\tincrement\x10\x04\x12\r\n\tdecrement\x10\x05\x42\t\n\x07_choiceB\x08\n\x06_valueB\x07\n\x05_auto\"\xdf\x02\n\x1dPatternFlowIpv4HeaderChecksum\x12\x43\n\x06\x63hoice\x18\x01 \x01(\x0e\x32..otg.PatternFlowIpv4HeaderChecksum.Choice.EnumH\x00\x88\x01\x01\x12I\n\tgenerated\x18\x02 \x01(\x0e\x32\x31.otg.PatternFlowIpv4HeaderChecksum.Generated.EnumH\x01\x88\x01\x01\x12\x13\n\x06\x63ustom\x18\x03 \x01(\rH\x02\x88\x01\x01\x1a<\n\x06\x43hoice\"2\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\r\n\tgenerated\x10\x01\x12\n\n\x06\x63ustom\x10\x02\x1a\x37\n\tGenerated\"*\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\x08\n\x04good\x10\x01\x12\x07\n\x03\x62\x61\x64\x10\x02\x42\t\n\x07_choiceB\x0c\n\n_generatedB\t\n\x07_custom\"s\n\x19PatternFlowIpv4SrcCounter\x12\x12\n\x05start\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x11\n\x04step\x18\x02 \x01(\tH\x01\x88\x01\x01\x12\x12\n\x05\x63ount\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x08\n\x06_startB\x07\n\x05_stepB\x08\n\x06_count\"y\n\x1bPatternFlowIpv4SrcMetricTag\x12\x11\n\x04name\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x13\n\x06offset\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x13\n\x06length\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x07\n\x05_nameB\t\n\x07_offsetB\t\n\x07_length\"\xfc\x02\n\x12PatternFlowIpv4Src\x12\x38\n\x06\x63hoice\x18\x01 \x01(\x0e\x32#.otg.PatternFlowIpv4Src.Choice.EnumH\x00\x88\x01\x01\x12\x12\n\x05value\x18\x02 \x01(\tH\x01\x88\x01\x01\x12\x0e\n\x06values\x18\x03 \x03(\t\x12\x31\n\tincrement\x18\x05 \x01(\x0b\x32\x1e.otg.PatternFlowIpv4SrcCounter\x12\x31\n\tdecrement\x18\x06 \x01(\x0b\x32\x1e.otg.PatternFlowIpv4SrcCounter\x12\x35\n\x0bmetric_tags\x18\x07 \x03(\x0b\x32 .otg.PatternFlowIpv4SrcMetricTag\x1aV\n\x06\x43hoice\"L\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\t\n\x05value\x10\x02\x12\n\n\x06values\x10\x03\x12\r\n\tincrement\x10\x04\x12\r\n\tdecrement\x10\x05\x42\t\n\x07_choiceB\x08\n\x06_value\"s\n\x19PatternFlowIpv4DstCounter\x12\x12\n\x05start\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x11\n\x04step\x18\x02 \x01(\tH\x01\x88\x01\x01\x12\x12\n\x05\x63ount\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x08\n\x06_startB\x07\n\x05_stepB\x08\n\x06_count\"y\n\x1bPatternFlowIpv4DstMetricTag\x12\x11\n\x04name\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x13\n\x06offset\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x13\n\x06length\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x07\n\x05_nameB\t\n\x07_offsetB\t\n\x07_length\"\xfc\x02\n\x12PatternFlowIpv4Dst\x12\x38\n\x06\x63hoice\x18\x01 \x01(\x0e\x32#.otg.PatternFlowIpv4Dst.Choice.EnumH\x00\x88\x01\x01\x12\x12\n\x05value\x18\x02 \x01(\tH\x01\x88\x01\x01\x12\x0e\n\x06values\x18\x03 \x03(\t\x12\x31\n\tincrement\x18\x05 \x01(\x0b\x32\x1e.otg.PatternFlowIpv4DstCounter\x12\x31\n\tdecrement\x18\x06 \x01(\x0b\x32\x1e.otg.PatternFlowIpv4DstCounter\x12\x35\n\x0bmetric_tags\x18\x07 \x03(\x0b\x32 .otg.PatternFlowIpv4DstMetricTag\x1aV\n\x06\x43hoice\"L\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\t\n\x05value\x10\x02\x12\n\n\x06values\x10\x03\x12\r\n\tincrement\x10\x04\x12\r\n\tdecrement\x10\x05\x42\t\n\x07_choiceB\x08\n\x06_value\"{\n!PatternFlowIpv4PriorityRawCounter\x12\x12\n\x05start\x18\x01 \x01(\rH\x00\x88\x01\x01\x12\x11\n\x04step\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x12\n\x05\x63ount\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x08\n\x06_startB\x07\n\x05_stepB\x08\n\x06_count\"\x81\x01\n#PatternFlowIpv4PriorityRawMetricTag\x12\x11\n\x04name\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x13\n\x06offset\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x13\n\x06length\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x07\n\x05_nameB\t\n\x07_offsetB\t\n\x07_length\"\xa4\x03\n\x1aPatternFlowIpv4PriorityRaw\x12@\n\x06\x63hoice\x18\x01 \x01(\x0e\x32+.otg.PatternFlowIpv4PriorityRaw.Choice.EnumH\x00\x88\x01\x01\x12\x12\n\x05value\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x0e\n\x06values\x18\x03 \x03(\r\x12\x39\n\tincrement\x18\x05 \x01(\x0b\x32&.otg.PatternFlowIpv4PriorityRawCounter\x12\x39\n\tdecrement\x18\x06 \x01(\x0b\x32&.otg.PatternFlowIpv4PriorityRawCounter\x12=\n\x0bmetric_tags\x18\x07 \x03(\x0b\x32(.otg.PatternFlowIpv4PriorityRawMetricTag\x1aV\n\x06\x43hoice\"L\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\t\n\x05value\x10\x02\x12\n\n\x06values\x10\x03\x12\r\n\tincrement\x10\x04\x12\r\n\tdecrement\x10\x05\x42\t\n\x07_choiceB\x08\n\x06_value\"w\n\x1dPatternFlowIpv4DscpPhbCounter\x12\x12\n\x05start\x18\x01 \x01(\rH\x00\x88\x01\x01\x12\x11\n\x04step\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x12\n\x05\x63ount\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x08\n\x06_startB\x07\n\x05_stepB\x08\n\x06_count\"}\n\x1fPatternFlowIpv4DscpPhbMetricTag\x12\x11\n\x04name\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x13\n\x06offset\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x13\n\x06length\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x07\n\x05_nameB\t\n\x07_offsetB\t\n\x07_length\"\x90\x03\n\x16PatternFlowIpv4DscpPhb\x12<\n\x06\x63hoice\x18\x01 \x01(\x0e\x32\'.otg.PatternFlowIpv4DscpPhb.Choice.EnumH\x00\x88\x01\x01\x12\x12\n\x05value\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x0e\n\x06values\x18\x03 \x03(\r\x12\x35\n\tincrement\x18\x05 \x01(\x0b\x32\".otg.PatternFlowIpv4DscpPhbCounter\x12\x35\n\tdecrement\x18\x06 \x01(\x0b\x32\".otg.PatternFlowIpv4DscpPhbCounter\x12\x39\n\x0bmetric_tags\x18\x07 \x03(\x0b\x32$.otg.PatternFlowIpv4DscpPhbMetricTag\x1aV\n\x06\x43hoice\"L\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\t\n\x05value\x10\x02\x12\n\n\x06values\x10\x03\x12\r\n\tincrement\x10\x04\x12\r\n\tdecrement\x10\x05\x42\t\n\x07_choiceB\x08\n\x06_value\"w\n\x1dPatternFlowIpv4DscpEcnCounter\x12\x12\n\x05start\x18\x01 \x01(\rH\x00\x88\x01\x01\x12\x11\n\x04step\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x12\n\x05\x63ount\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x08\n\x06_startB\x07\n\x05_stepB\x08\n\x06_count\"}\n\x1fPatternFlowIpv4DscpEcnMetricTag\x12\x11\n\x04name\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x13\n\x06offset\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x13\n\x06length\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x07\n\x05_nameB\t\n\x07_offsetB\t\n\x07_length\"\x90\x03\n\x16PatternFlowIpv4DscpEcn\x12<\n\x06\x63hoice\x18\x01 \x01(\x0e\x32\'.otg.PatternFlowIpv4DscpEcn.Choice.EnumH\x00\x88\x01\x01\x12\x12\n\x05value\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x0e\n\x06values\x18\x03 \x03(\r\x12\x35\n\tincrement\x18\x05 \x01(\x0b\x32\".otg.PatternFlowIpv4DscpEcnCounter\x12\x35\n\tdecrement\x18\x06 \x01(\x0b\x32\".otg.PatternFlowIpv4DscpEcnCounter\x12\x39\n\x0bmetric_tags\x18\x07 \x03(\x0b\x32$.otg.PatternFlowIpv4DscpEcnMetricTag\x1aV\n\x06\x43hoice\"L\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\t\n\x05value\x10\x02\x12\n\n\x06values\x10\x03\x12\r\n\tincrement\x10\x04\x12\r\n\tdecrement\x10\x05\x42\t\n\x07_choiceB\x08\n\x06_value\"}\n#PatternFlowIpv4TosPrecedenceCounter\x12\x12\n\x05start\x18\x01 \x01(\rH\x00\x88\x01\x01\x12\x11\n\x04step\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x12\n\x05\x63ount\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x08\n\x06_startB\x07\n\x05_stepB\x08\n\x06_count\"\x83\x01\n%PatternFlowIpv4TosPrecedenceMetricTag\x12\x11\n\x04name\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x13\n\x06offset\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x13\n\x06length\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x07\n\x05_nameB\t\n\x07_offsetB\t\n\x07_length\"\xae\x03\n\x1cPatternFlowIpv4TosPrecedence\x12\x42\n\x06\x63hoice\x18\x01 \x01(\x0e\x32-.otg.PatternFlowIpv4TosPrecedence.Choice.EnumH\x00\x88\x01\x01\x12\x12\n\x05value\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x0e\n\x06values\x18\x03 \x03(\r\x12;\n\tincrement\x18\x05 \x01(\x0b\x32(.otg.PatternFlowIpv4TosPrecedenceCounter\x12;\n\tdecrement\x18\x06 \x01(\x0b\x32(.otg.PatternFlowIpv4TosPrecedenceCounter\x12?\n\x0bmetric_tags\x18\x07 \x03(\x0b\x32*.otg.PatternFlowIpv4TosPrecedenceMetricTag\x1aV\n\x06\x43hoice\"L\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\t\n\x05value\x10\x02\x12\n\n\x06values\x10\x03\x12\r\n\tincrement\x10\x04\x12\r\n\tdecrement\x10\x05\x42\t\n\x07_choiceB\x08\n\x06_value\"x\n\x1ePatternFlowIpv4TosDelayCounter\x12\x12\n\x05start\x18\x01 \x01(\rH\x00\x88\x01\x01\x12\x11\n\x04step\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x12\n\x05\x63ount\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x08\n\x06_startB\x07\n\x05_stepB\x08\n\x06_count\"~\n PatternFlowIpv4TosDelayMetricTag\x12\x11\n\x04name\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x13\n\x06offset\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x13\n\x06length\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x07\n\x05_nameB\t\n\x07_offsetB\t\n\x07_length\"\x95\x03\n\x17PatternFlowIpv4TosDelay\x12=\n\x06\x63hoice\x18\x01 \x01(\x0e\x32(.otg.PatternFlowIpv4TosDelay.Choice.EnumH\x00\x88\x01\x01\x12\x12\n\x05value\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x0e\n\x06values\x18\x03 \x03(\r\x12\x36\n\tincrement\x18\x05 \x01(\x0b\x32#.otg.PatternFlowIpv4TosDelayCounter\x12\x36\n\tdecrement\x18\x06 \x01(\x0b\x32#.otg.PatternFlowIpv4TosDelayCounter\x12:\n\x0bmetric_tags\x18\x07 \x03(\x0b\x32%.otg.PatternFlowIpv4TosDelayMetricTag\x1aV\n\x06\x43hoice\"L\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\t\n\x05value\x10\x02\x12\n\n\x06values\x10\x03\x12\r\n\tincrement\x10\x04\x12\r\n\tdecrement\x10\x05\x42\t\n\x07_choiceB\x08\n\x06_value\"}\n#PatternFlowIpv4TosThroughputCounter\x12\x12\n\x05start\x18\x01 \x01(\rH\x00\x88\x01\x01\x12\x11\n\x04step\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x12\n\x05\x63ount\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x08\n\x06_startB\x07\n\x05_stepB\x08\n\x06_count\"\x83\x01\n%PatternFlowIpv4TosThroughputMetricTag\x12\x11\n\x04name\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x13\n\x06offset\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x13\n\x06length\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x07\n\x05_nameB\t\n\x07_offsetB\t\n\x07_length\"\xae\x03\n\x1cPatternFlowIpv4TosThroughput\x12\x42\n\x06\x63hoice\x18\x01 \x01(\x0e\x32-.otg.PatternFlowIpv4TosThroughput.Choice.EnumH\x00\x88\x01\x01\x12\x12\n\x05value\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x0e\n\x06values\x18\x03 \x03(\r\x12;\n\tincrement\x18\x05 \x01(\x0b\x32(.otg.PatternFlowIpv4TosThroughputCounter\x12;\n\tdecrement\x18\x06 \x01(\x0b\x32(.otg.PatternFlowIpv4TosThroughputCounter\x12?\n\x0bmetric_tags\x18\x07 \x03(\x0b\x32*.otg.PatternFlowIpv4TosThroughputMetricTag\x1aV\n\x06\x43hoice\"L\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\t\n\x05value\x10\x02\x12\n\n\x06values\x10\x03\x12\r\n\tincrement\x10\x04\x12\r\n\tdecrement\x10\x05\x42\t\n\x07_choiceB\x08\n\x06_value\"~\n$PatternFlowIpv4TosReliabilityCounter\x12\x12\n\x05start\x18\x01 \x01(\rH\x00\x88\x01\x01\x12\x11\n\x04step\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x12\n\x05\x63ount\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x08\n\x06_startB\x07\n\x05_stepB\x08\n\x06_count\"\x84\x01\n&PatternFlowIpv4TosReliabilityMetricTag\x12\x11\n\x04name\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x13\n\x06offset\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x13\n\x06length\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x07\n\x05_nameB\t\n\x07_offsetB\t\n\x07_length\"\xb3\x03\n\x1dPatternFlowIpv4TosReliability\x12\x43\n\x06\x63hoice\x18\x01 \x01(\x0e\x32..otg.PatternFlowIpv4TosReliability.Choice.EnumH\x00\x88\x01\x01\x12\x12\n\x05value\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x0e\n\x06values\x18\x03 \x03(\r\x12<\n\tincrement\x18\x05 \x01(\x0b\x32).otg.PatternFlowIpv4TosReliabilityCounter\x12<\n\tdecrement\x18\x06 \x01(\x0b\x32).otg.PatternFlowIpv4TosReliabilityCounter\x12@\n\x0bmetric_tags\x18\x07 \x03(\x0b\x32+.otg.PatternFlowIpv4TosReliabilityMetricTag\x1aV\n\x06\x43hoice\"L\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\t\n\x05value\x10\x02\x12\n\n\x06values\x10\x03\x12\r\n\tincrement\x10\x04\x12\r\n\tdecrement\x10\x05\x42\t\n\x07_choiceB\x08\n\x06_value\"{\n!PatternFlowIpv4TosMonetaryCounter\x12\x12\n\x05start\x18\x01 \x01(\rH\x00\x88\x01\x01\x12\x11\n\x04step\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x12\n\x05\x63ount\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x08\n\x06_startB\x07\n\x05_stepB\x08\n\x06_count\"\x81\x01\n#PatternFlowIpv4TosMonetaryMetricTag\x12\x11\n\x04name\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x13\n\x06offset\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x13\n\x06length\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x07\n\x05_nameB\t\n\x07_offsetB\t\n\x07_length\"\xa4\x03\n\x1aPatternFlowIpv4TosMonetary\x12@\n\x06\x63hoice\x18\x01 \x01(\x0e\x32+.otg.PatternFlowIpv4TosMonetary.Choice.EnumH\x00\x88\x01\x01\x12\x12\n\x05value\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x0e\n\x06values\x18\x03 \x03(\r\x12\x39\n\tincrement\x18\x05 \x01(\x0b\x32&.otg.PatternFlowIpv4TosMonetaryCounter\x12\x39\n\tdecrement\x18\x06 \x01(\x0b\x32&.otg.PatternFlowIpv4TosMonetaryCounter\x12=\n\x0bmetric_tags\x18\x07 \x03(\x0b\x32(.otg.PatternFlowIpv4TosMonetaryMetricTag\x1aV\n\x06\x43hoice\"L\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\t\n\x05value\x10\x02\x12\n\n\x06values\x10\x03\x12\r\n\tincrement\x10\x04\x12\r\n\tdecrement\x10\x05\x42\t\n\x07_choiceB\x08\n\x06_value\"y\n\x1fPatternFlowIpv4TosUnusedCounter\x12\x12\n\x05start\x18\x01 \x01(\rH\x00\x88\x01\x01\x12\x11\n\x04step\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x12\n\x05\x63ount\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x08\n\x06_startB\x07\n\x05_stepB\x08\n\x06_count\"\x7f\n!PatternFlowIpv4TosUnusedMetricTag\x12\x11\n\x04name\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x13\n\x06offset\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x13\n\x06length\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x07\n\x05_nameB\t\n\x07_offsetB\t\n\x07_length\"\x9a\x03\n\x18PatternFlowIpv4TosUnused\x12>\n\x06\x63hoice\x18\x01 \x01(\x0e\x32).otg.PatternFlowIpv4TosUnused.Choice.EnumH\x00\x88\x01\x01\x12\x12\n\x05value\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x0e\n\x06values\x18\x03 \x03(\r\x12\x37\n\tincrement\x18\x05 \x01(\x0b\x32$.otg.PatternFlowIpv4TosUnusedCounter\x12\x37\n\tdecrement\x18\x06 \x01(\x0b\x32$.otg.PatternFlowIpv4TosUnusedCounter\x12;\n\x0bmetric_tags\x18\x07 \x03(\x0b\x32&.otg.PatternFlowIpv4TosUnusedMetricTag\x1aV\n\x06\x43hoice\"L\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\t\n\x05value\x10\x02\x12\n\n\x06values\x10\x03\x12\r\n\tincrement\x10\x04\x12\r\n\tdecrement\x10\x05\x42\t\n\x07_choiceB\x08\n\x06_value\"w\n\x1dPatternFlowIpv6VersionCounter\x12\x12\n\x05start\x18\x01 \x01(\rH\x00\x88\x01\x01\x12\x11\n\x04step\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x12\n\x05\x63ount\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x08\n\x06_startB\x07\n\x05_stepB\x08\n\x06_count\"}\n\x1fPatternFlowIpv6VersionMetricTag\x12\x11\n\x04name\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x13\n\x06offset\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x13\n\x06length\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x07\n\x05_nameB\t\n\x07_offsetB\t\n\x07_length\"\x90\x03\n\x16PatternFlowIpv6Version\x12<\n\x06\x63hoice\x18\x01 \x01(\x0e\x32\'.otg.PatternFlowIpv6Version.Choice.EnumH\x00\x88\x01\x01\x12\x12\n\x05value\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x0e\n\x06values\x18\x03 \x03(\r\x12\x35\n\tincrement\x18\x05 \x01(\x0b\x32\".otg.PatternFlowIpv6VersionCounter\x12\x35\n\tdecrement\x18\x06 \x01(\x0b\x32\".otg.PatternFlowIpv6VersionCounter\x12\x39\n\x0bmetric_tags\x18\x07 \x03(\x0b\x32$.otg.PatternFlowIpv6VersionMetricTag\x1aV\n\x06\x43hoice\"L\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\t\n\x05value\x10\x02\x12\n\n\x06values\x10\x03\x12\r\n\tincrement\x10\x04\x12\r\n\tdecrement\x10\x05\x42\t\n\x07_choiceB\x08\n\x06_value\"|\n\"PatternFlowIpv6TrafficClassCounter\x12\x12\n\x05start\x18\x01 \x01(\rH\x00\x88\x01\x01\x12\x11\n\x04step\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x12\n\x05\x63ount\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x08\n\x06_startB\x07\n\x05_stepB\x08\n\x06_count\"\x82\x01\n$PatternFlowIpv6TrafficClassMetricTag\x12\x11\n\x04name\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x13\n\x06offset\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x13\n\x06length\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x07\n\x05_nameB\t\n\x07_offsetB\t\n\x07_length\"\xa9\x03\n\x1bPatternFlowIpv6TrafficClass\x12\x41\n\x06\x63hoice\x18\x01 \x01(\x0e\x32,.otg.PatternFlowIpv6TrafficClass.Choice.EnumH\x00\x88\x01\x01\x12\x12\n\x05value\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x0e\n\x06values\x18\x03 \x03(\r\x12:\n\tincrement\x18\x05 \x01(\x0b\x32\'.otg.PatternFlowIpv6TrafficClassCounter\x12:\n\tdecrement\x18\x06 \x01(\x0b\x32\'.otg.PatternFlowIpv6TrafficClassCounter\x12>\n\x0bmetric_tags\x18\x07 \x03(\x0b\x32).otg.PatternFlowIpv6TrafficClassMetricTag\x1aV\n\x06\x43hoice\"L\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\t\n\x05value\x10\x02\x12\n\n\x06values\x10\x03\x12\r\n\tincrement\x10\x04\x12\r\n\tdecrement\x10\x05\x42\t\n\x07_choiceB\x08\n\x06_value\"y\n\x1fPatternFlowIpv6FlowLabelCounter\x12\x12\n\x05start\x18\x01 \x01(\rH\x00\x88\x01\x01\x12\x11\n\x04step\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x12\n\x05\x63ount\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x08\n\x06_startB\x07\n\x05_stepB\x08\n\x06_count\"\x7f\n!PatternFlowIpv6FlowLabelMetricTag\x12\x11\n\x04name\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x13\n\x06offset\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x13\n\x06length\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x07\n\x05_nameB\t\n\x07_offsetB\t\n\x07_length\"\x9a\x03\n\x18PatternFlowIpv6FlowLabel\x12>\n\x06\x63hoice\x18\x01 \x01(\x0e\x32).otg.PatternFlowIpv6FlowLabel.Choice.EnumH\x00\x88\x01\x01\x12\x12\n\x05value\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x0e\n\x06values\x18\x03 \x03(\r\x12\x37\n\tincrement\x18\x05 \x01(\x0b\x32$.otg.PatternFlowIpv6FlowLabelCounter\x12\x37\n\tdecrement\x18\x06 \x01(\x0b\x32$.otg.PatternFlowIpv6FlowLabelCounter\x12;\n\x0bmetric_tags\x18\x07 \x03(\x0b\x32&.otg.PatternFlowIpv6FlowLabelMetricTag\x1aV\n\x06\x43hoice\"L\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\t\n\x05value\x10\x02\x12\n\n\x06values\x10\x03\x12\r\n\tincrement\x10\x04\x12\r\n\tdecrement\x10\x05\x42\t\n\x07_choiceB\x08\n\x06_value\"}\n#PatternFlowIpv6PayloadLengthCounter\x12\x12\n\x05start\x18\x01 \x01(\rH\x00\x88\x01\x01\x12\x11\n\x04step\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x12\n\x05\x63ount\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x08\n\x06_startB\x07\n\x05_stepB\x08\n\x06_count\"\x83\x01\n%PatternFlowIpv6PayloadLengthMetricTag\x12\x11\n\x04name\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x13\n\x06offset\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x13\n\x06length\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x07\n\x05_nameB\t\n\x07_offsetB\t\n\x07_length\"\xd4\x03\n\x1cPatternFlowIpv6PayloadLength\x12\x42\n\x06\x63hoice\x18\x01 \x01(\x0e\x32-.otg.PatternFlowIpv6PayloadLength.Choice.EnumH\x00\x88\x01\x01\x12\x12\n\x05value\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x0e\n\x06values\x18\x03 \x03(\r\x12\x11\n\x04\x61uto\x18\x04 \x01(\rH\x02\x88\x01\x01\x12;\n\tincrement\x18\x06 \x01(\x0b\x32(.otg.PatternFlowIpv6PayloadLengthCounter\x12;\n\tdecrement\x18\x07 \x01(\x0b\x32(.otg.PatternFlowIpv6PayloadLengthCounter\x12?\n\x0bmetric_tags\x18\x08 \x03(\x0b\x32*.otg.PatternFlowIpv6PayloadLengthMetricTag\x1a`\n\x06\x43hoice\"V\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\t\n\x05value\x10\x02\x12\n\n\x06values\x10\x03\x12\x08\n\x04\x61uto\x10\x01\x12\r\n\tincrement\x10\x04\x12\r\n\tdecrement\x10\x05\x42\t\n\x07_choiceB\x08\n\x06_valueB\x07\n\x05_auto\"z\n PatternFlowIpv6NextHeaderCounter\x12\x12\n\x05start\x18\x01 \x01(\rH\x00\x88\x01\x01\x12\x11\n\x04step\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x12\n\x05\x63ount\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x08\n\x06_startB\x07\n\x05_stepB\x08\n\x06_count\"\x80\x01\n\"PatternFlowIpv6NextHeaderMetricTag\x12\x11\n\x04name\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x13\n\x06offset\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x13\n\x06length\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x07\n\x05_nameB\t\n\x07_offsetB\t\n\x07_length\"\xc5\x03\n\x19PatternFlowIpv6NextHeader\x12?\n\x06\x63hoice\x18\x01 \x01(\x0e\x32*.otg.PatternFlowIpv6NextHeader.Choice.EnumH\x00\x88\x01\x01\x12\x12\n\x05value\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x0e\n\x06values\x18\x03 \x03(\r\x12\x11\n\x04\x61uto\x18\x04 \x01(\rH\x02\x88\x01\x01\x12\x38\n\tincrement\x18\x06 \x01(\x0b\x32%.otg.PatternFlowIpv6NextHeaderCounter\x12\x38\n\tdecrement\x18\x07 \x01(\x0b\x32%.otg.PatternFlowIpv6NextHeaderCounter\x12<\n\x0bmetric_tags\x18\x08 \x03(\x0b\x32\'.otg.PatternFlowIpv6NextHeaderMetricTag\x1a`\n\x06\x43hoice\"V\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\t\n\x05value\x10\x02\x12\n\n\x06values\x10\x03\x12\x08\n\x04\x61uto\x10\x01\x12\r\n\tincrement\x10\x04\x12\r\n\tdecrement\x10\x05\x42\t\n\x07_choiceB\x08\n\x06_valueB\x07\n\x05_auto\"x\n\x1ePatternFlowIpv6HopLimitCounter\x12\x12\n\x05start\x18\x01 \x01(\rH\x00\x88\x01\x01\x12\x11\n\x04step\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x12\n\x05\x63ount\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x08\n\x06_startB\x07\n\x05_stepB\x08\n\x06_count\"~\n PatternFlowIpv6HopLimitMetricTag\x12\x11\n\x04name\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x13\n\x06offset\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x13\n\x06length\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x07\n\x05_nameB\t\n\x07_offsetB\t\n\x07_length\"\x95\x03\n\x17PatternFlowIpv6HopLimit\x12=\n\x06\x63hoice\x18\x01 \x01(\x0e\x32(.otg.PatternFlowIpv6HopLimit.Choice.EnumH\x00\x88\x01\x01\x12\x12\n\x05value\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x0e\n\x06values\x18\x03 \x03(\r\x12\x36\n\tincrement\x18\x05 \x01(\x0b\x32#.otg.PatternFlowIpv6HopLimitCounter\x12\x36\n\tdecrement\x18\x06 \x01(\x0b\x32#.otg.PatternFlowIpv6HopLimitCounter\x12:\n\x0bmetric_tags\x18\x07 \x03(\x0b\x32%.otg.PatternFlowIpv6HopLimitMetricTag\x1aV\n\x06\x43hoice\"L\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\t\n\x05value\x10\x02\x12\n\n\x06values\x10\x03\x12\r\n\tincrement\x10\x04\x12\r\n\tdecrement\x10\x05\x42\t\n\x07_choiceB\x08\n\x06_value\"s\n\x19PatternFlowIpv6SrcCounter\x12\x12\n\x05start\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x11\n\x04step\x18\x02 \x01(\tH\x01\x88\x01\x01\x12\x12\n\x05\x63ount\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x08\n\x06_startB\x07\n\x05_stepB\x08\n\x06_count\"y\n\x1bPatternFlowIpv6SrcMetricTag\x12\x11\n\x04name\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x13\n\x06offset\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x13\n\x06length\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x07\n\x05_nameB\t\n\x07_offsetB\t\n\x07_length\"\xfc\x02\n\x12PatternFlowIpv6Src\x12\x38\n\x06\x63hoice\x18\x01 \x01(\x0e\x32#.otg.PatternFlowIpv6Src.Choice.EnumH\x00\x88\x01\x01\x12\x12\n\x05value\x18\x02 \x01(\tH\x01\x88\x01\x01\x12\x0e\n\x06values\x18\x03 \x03(\t\x12\x31\n\tincrement\x18\x05 \x01(\x0b\x32\x1e.otg.PatternFlowIpv6SrcCounter\x12\x31\n\tdecrement\x18\x06 \x01(\x0b\x32\x1e.otg.PatternFlowIpv6SrcCounter\x12\x35\n\x0bmetric_tags\x18\x07 \x03(\x0b\x32 .otg.PatternFlowIpv6SrcMetricTag\x1aV\n\x06\x43hoice\"L\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\t\n\x05value\x10\x02\x12\n\n\x06values\x10\x03\x12\r\n\tincrement\x10\x04\x12\r\n\tdecrement\x10\x05\x42\t\n\x07_choiceB\x08\n\x06_value\"s\n\x19PatternFlowIpv6DstCounter\x12\x12\n\x05start\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x11\n\x04step\x18\x02 \x01(\tH\x01\x88\x01\x01\x12\x12\n\x05\x63ount\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x08\n\x06_startB\x07\n\x05_stepB\x08\n\x06_count\"y\n\x1bPatternFlowIpv6DstMetricTag\x12\x11\n\x04name\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x13\n\x06offset\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x13\n\x06length\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x07\n\x05_nameB\t\n\x07_offsetB\t\n\x07_length\"\xfc\x02\n\x12PatternFlowIpv6Dst\x12\x38\n\x06\x63hoice\x18\x01 \x01(\x0e\x32#.otg.PatternFlowIpv6Dst.Choice.EnumH\x00\x88\x01\x01\x12\x12\n\x05value\x18\x02 \x01(\tH\x01\x88\x01\x01\x12\x0e\n\x06values\x18\x03 \x03(\t\x12\x31\n\tincrement\x18\x05 \x01(\x0b\x32\x1e.otg.PatternFlowIpv6DstCounter\x12\x31\n\tdecrement\x18\x06 \x01(\x0b\x32\x1e.otg.PatternFlowIpv6DstCounter\x12\x35\n\x0bmetric_tags\x18\x07 \x03(\x0b\x32 .otg.PatternFlowIpv6DstMetricTag\x1aV\n\x06\x43hoice\"L\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\t\n\x05value\x10\x02\x12\n\n\x06values\x10\x03\x12\r\n\tincrement\x10\x04\x12\r\n\tdecrement\x10\x05\x42\t\n\x07_choiceB\x08\n\x06_value\"w\n\x1dPatternFlowPfcPauseDstCounter\x12\x12\n\x05start\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x11\n\x04step\x18\x02 \x01(\tH\x01\x88\x01\x01\x12\x12\n\x05\x63ount\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x08\n\x06_startB\x07\n\x05_stepB\x08\n\x06_count\"}\n\x1fPatternFlowPfcPauseDstMetricTag\x12\x11\n\x04name\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x13\n\x06offset\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x13\n\x06length\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x07\n\x05_nameB\t\n\x07_offsetB\t\n\x07_length\"\x90\x03\n\x16PatternFlowPfcPauseDst\x12<\n\x06\x63hoice\x18\x01 \x01(\x0e\x32\'.otg.PatternFlowPfcPauseDst.Choice.EnumH\x00\x88\x01\x01\x12\x12\n\x05value\x18\x02 \x01(\tH\x01\x88\x01\x01\x12\x0e\n\x06values\x18\x03 \x03(\t\x12\x35\n\tincrement\x18\x05 \x01(\x0b\x32\".otg.PatternFlowPfcPauseDstCounter\x12\x35\n\tdecrement\x18\x06 \x01(\x0b\x32\".otg.PatternFlowPfcPauseDstCounter\x12\x39\n\x0bmetric_tags\x18\x07 \x03(\x0b\x32$.otg.PatternFlowPfcPauseDstMetricTag\x1aV\n\x06\x43hoice\"L\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\t\n\x05value\x10\x02\x12\n\n\x06values\x10\x03\x12\r\n\tincrement\x10\x04\x12\r\n\tdecrement\x10\x05\x42\t\n\x07_choiceB\x08\n\x06_value\"w\n\x1dPatternFlowPfcPauseSrcCounter\x12\x12\n\x05start\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x11\n\x04step\x18\x02 \x01(\tH\x01\x88\x01\x01\x12\x12\n\x05\x63ount\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x08\n\x06_startB\x07\n\x05_stepB\x08\n\x06_count\"}\n\x1fPatternFlowPfcPauseSrcMetricTag\x12\x11\n\x04name\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x13\n\x06offset\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x13\n\x06length\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x07\n\x05_nameB\t\n\x07_offsetB\t\n\x07_length\"\x90\x03\n\x16PatternFlowPfcPauseSrc\x12<\n\x06\x63hoice\x18\x01 \x01(\x0e\x32\'.otg.PatternFlowPfcPauseSrc.Choice.EnumH\x00\x88\x01\x01\x12\x12\n\x05value\x18\x02 \x01(\tH\x01\x88\x01\x01\x12\x0e\n\x06values\x18\x03 \x03(\t\x12\x35\n\tincrement\x18\x05 \x01(\x0b\x32\".otg.PatternFlowPfcPauseSrcCounter\x12\x35\n\tdecrement\x18\x06 \x01(\x0b\x32\".otg.PatternFlowPfcPauseSrcCounter\x12\x39\n\x0bmetric_tags\x18\x07 \x03(\x0b\x32$.otg.PatternFlowPfcPauseSrcMetricTag\x1aV\n\x06\x43hoice\"L\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\t\n\x05value\x10\x02\x12\n\n\x06values\x10\x03\x12\r\n\tincrement\x10\x04\x12\r\n\tdecrement\x10\x05\x42\t\n\x07_choiceB\x08\n\x06_value\"}\n#PatternFlowPfcPauseEtherTypeCounter\x12\x12\n\x05start\x18\x01 \x01(\rH\x00\x88\x01\x01\x12\x11\n\x04step\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x12\n\x05\x63ount\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x08\n\x06_startB\x07\n\x05_stepB\x08\n\x06_count\"\x83\x01\n%PatternFlowPfcPauseEtherTypeMetricTag\x12\x11\n\x04name\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x13\n\x06offset\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x13\n\x06length\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x07\n\x05_nameB\t\n\x07_offsetB\t\n\x07_length\"\xae\x03\n\x1cPatternFlowPfcPauseEtherType\x12\x42\n\x06\x63hoice\x18\x01 \x01(\x0e\x32-.otg.PatternFlowPfcPauseEtherType.Choice.EnumH\x00\x88\x01\x01\x12\x12\n\x05value\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x0e\n\x06values\x18\x03 \x03(\r\x12;\n\tincrement\x18\x05 \x01(\x0b\x32(.otg.PatternFlowPfcPauseEtherTypeCounter\x12;\n\tdecrement\x18\x06 \x01(\x0b\x32(.otg.PatternFlowPfcPauseEtherTypeCounter\x12?\n\x0bmetric_tags\x18\x07 \x03(\x0b\x32*.otg.PatternFlowPfcPauseEtherTypeMetricTag\x1aV\n\x06\x43hoice\"L\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\t\n\x05value\x10\x02\x12\n\n\x06values\x10\x03\x12\r\n\tincrement\x10\x04\x12\r\n\tdecrement\x10\x05\x42\t\n\x07_choiceB\x08\n\x06_value\"\x81\x01\n\'PatternFlowPfcPauseControlOpCodeCounter\x12\x12\n\x05start\x18\x01 \x01(\rH\x00\x88\x01\x01\x12\x11\n\x04step\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x12\n\x05\x63ount\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x08\n\x06_startB\x07\n\x05_stepB\x08\n\x06_count\"\x87\x01\n)PatternFlowPfcPauseControlOpCodeMetricTag\x12\x11\n\x04name\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x13\n\x06offset\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x13\n\x06length\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x07\n\x05_nameB\t\n\x07_offsetB\t\n\x07_length\"\xc2\x03\n PatternFlowPfcPauseControlOpCode\x12\x46\n\x06\x63hoice\x18\x01 \x01(\x0e\x32\x31.otg.PatternFlowPfcPauseControlOpCode.Choice.EnumH\x00\x88\x01\x01\x12\x12\n\x05value\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x0e\n\x06values\x18\x03 \x03(\r\x12?\n\tincrement\x18\x05 \x01(\x0b\x32,.otg.PatternFlowPfcPauseControlOpCodeCounter\x12?\n\tdecrement\x18\x06 \x01(\x0b\x32,.otg.PatternFlowPfcPauseControlOpCodeCounter\x12\x43\n\x0bmetric_tags\x18\x07 \x03(\x0b\x32..otg.PatternFlowPfcPauseControlOpCodeMetricTag\x1aV\n\x06\x43hoice\"L\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\t\n\x05value\x10\x02\x12\n\n\x06values\x10\x03\x12\r\n\tincrement\x10\x04\x12\r\n\tdecrement\x10\x05\x42\t\n\x07_choiceB\x08\n\x06_value\"\x85\x01\n+PatternFlowPfcPauseClassEnableVectorCounter\x12\x12\n\x05start\x18\x01 \x01(\rH\x00\x88\x01\x01\x12\x11\n\x04step\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x12\n\x05\x63ount\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x08\n\x06_startB\x07\n\x05_stepB\x08\n\x06_count\"\x8b\x01\n-PatternFlowPfcPauseClassEnableVectorMetricTag\x12\x11\n\x04name\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x13\n\x06offset\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x13\n\x06length\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x07\n\x05_nameB\t\n\x07_offsetB\t\n\x07_length\"\xd6\x03\n$PatternFlowPfcPauseClassEnableVector\x12J\n\x06\x63hoice\x18\x01 \x01(\x0e\x32\x35.otg.PatternFlowPfcPauseClassEnableVector.Choice.EnumH\x00\x88\x01\x01\x12\x12\n\x05value\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x0e\n\x06values\x18\x03 \x03(\r\x12\x43\n\tincrement\x18\x05 \x01(\x0b\x32\x30.otg.PatternFlowPfcPauseClassEnableVectorCounter\x12\x43\n\tdecrement\x18\x06 \x01(\x0b\x32\x30.otg.PatternFlowPfcPauseClassEnableVectorCounter\x12G\n\x0bmetric_tags\x18\x07 \x03(\x0b\x32\x32.otg.PatternFlowPfcPauseClassEnableVectorMetricTag\x1aV\n\x06\x43hoice\"L\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\t\n\x05value\x10\x02\x12\n\n\x06values\x10\x03\x12\r\n\tincrement\x10\x04\x12\r\n\tdecrement\x10\x05\x42\t\n\x07_choiceB\x08\n\x06_value\"\x7f\n%PatternFlowPfcPausePauseClass0Counter\x12\x12\n\x05start\x18\x01 \x01(\rH\x00\x88\x01\x01\x12\x11\n\x04step\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x12\n\x05\x63ount\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x08\n\x06_startB\x07\n\x05_stepB\x08\n\x06_count\"\x85\x01\n\'PatternFlowPfcPausePauseClass0MetricTag\x12\x11\n\x04name\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x13\n\x06offset\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x13\n\x06length\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x07\n\x05_nameB\t\n\x07_offsetB\t\n\x07_length\"\xb8\x03\n\x1ePatternFlowPfcPausePauseClass0\x12\x44\n\x06\x63hoice\x18\x01 \x01(\x0e\x32/.otg.PatternFlowPfcPausePauseClass0.Choice.EnumH\x00\x88\x01\x01\x12\x12\n\x05value\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x0e\n\x06values\x18\x03 \x03(\r\x12=\n\tincrement\x18\x05 \x01(\x0b\x32*.otg.PatternFlowPfcPausePauseClass0Counter\x12=\n\tdecrement\x18\x06 \x01(\x0b\x32*.otg.PatternFlowPfcPausePauseClass0Counter\x12\x41\n\x0bmetric_tags\x18\x07 \x03(\x0b\x32,.otg.PatternFlowPfcPausePauseClass0MetricTag\x1aV\n\x06\x43hoice\"L\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\t\n\x05value\x10\x02\x12\n\n\x06values\x10\x03\x12\r\n\tincrement\x10\x04\x12\r\n\tdecrement\x10\x05\x42\t\n\x07_choiceB\x08\n\x06_value\"\x7f\n%PatternFlowPfcPausePauseClass1Counter\x12\x12\n\x05start\x18\x01 \x01(\rH\x00\x88\x01\x01\x12\x11\n\x04step\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x12\n\x05\x63ount\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x08\n\x06_startB\x07\n\x05_stepB\x08\n\x06_count\"\x85\x01\n\'PatternFlowPfcPausePauseClass1MetricTag\x12\x11\n\x04name\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x13\n\x06offset\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x13\n\x06length\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x07\n\x05_nameB\t\n\x07_offsetB\t\n\x07_length\"\xb8\x03\n\x1ePatternFlowPfcPausePauseClass1\x12\x44\n\x06\x63hoice\x18\x01 \x01(\x0e\x32/.otg.PatternFlowPfcPausePauseClass1.Choice.EnumH\x00\x88\x01\x01\x12\x12\n\x05value\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x0e\n\x06values\x18\x03 \x03(\r\x12=\n\tincrement\x18\x05 \x01(\x0b\x32*.otg.PatternFlowPfcPausePauseClass1Counter\x12=\n\tdecrement\x18\x06 \x01(\x0b\x32*.otg.PatternFlowPfcPausePauseClass1Counter\x12\x41\n\x0bmetric_tags\x18\x07 \x03(\x0b\x32,.otg.PatternFlowPfcPausePauseClass1MetricTag\x1aV\n\x06\x43hoice\"L\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\t\n\x05value\x10\x02\x12\n\n\x06values\x10\x03\x12\r\n\tincrement\x10\x04\x12\r\n\tdecrement\x10\x05\x42\t\n\x07_choiceB\x08\n\x06_value\"\x7f\n%PatternFlowPfcPausePauseClass2Counter\x12\x12\n\x05start\x18\x01 \x01(\rH\x00\x88\x01\x01\x12\x11\n\x04step\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x12\n\x05\x63ount\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x08\n\x06_startB\x07\n\x05_stepB\x08\n\x06_count\"\x85\x01\n\'PatternFlowPfcPausePauseClass2MetricTag\x12\x11\n\x04name\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x13\n\x06offset\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x13\n\x06length\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x07\n\x05_nameB\t\n\x07_offsetB\t\n\x07_length\"\xb8\x03\n\x1ePatternFlowPfcPausePauseClass2\x12\x44\n\x06\x63hoice\x18\x01 \x01(\x0e\x32/.otg.PatternFlowPfcPausePauseClass2.Choice.EnumH\x00\x88\x01\x01\x12\x12\n\x05value\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x0e\n\x06values\x18\x03 \x03(\r\x12=\n\tincrement\x18\x05 \x01(\x0b\x32*.otg.PatternFlowPfcPausePauseClass2Counter\x12=\n\tdecrement\x18\x06 \x01(\x0b\x32*.otg.PatternFlowPfcPausePauseClass2Counter\x12\x41\n\x0bmetric_tags\x18\x07 \x03(\x0b\x32,.otg.PatternFlowPfcPausePauseClass2MetricTag\x1aV\n\x06\x43hoice\"L\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\t\n\x05value\x10\x02\x12\n\n\x06values\x10\x03\x12\r\n\tincrement\x10\x04\x12\r\n\tdecrement\x10\x05\x42\t\n\x07_choiceB\x08\n\x06_value\"\x7f\n%PatternFlowPfcPausePauseClass3Counter\x12\x12\n\x05start\x18\x01 \x01(\rH\x00\x88\x01\x01\x12\x11\n\x04step\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x12\n\x05\x63ount\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x08\n\x06_startB\x07\n\x05_stepB\x08\n\x06_count\"\x85\x01\n\'PatternFlowPfcPausePauseClass3MetricTag\x12\x11\n\x04name\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x13\n\x06offset\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x13\n\x06length\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x07\n\x05_nameB\t\n\x07_offsetB\t\n\x07_length\"\xb8\x03\n\x1ePatternFlowPfcPausePauseClass3\x12\x44\n\x06\x63hoice\x18\x01 \x01(\x0e\x32/.otg.PatternFlowPfcPausePauseClass3.Choice.EnumH\x00\x88\x01\x01\x12\x12\n\x05value\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x0e\n\x06values\x18\x03 \x03(\r\x12=\n\tincrement\x18\x05 \x01(\x0b\x32*.otg.PatternFlowPfcPausePauseClass3Counter\x12=\n\tdecrement\x18\x06 \x01(\x0b\x32*.otg.PatternFlowPfcPausePauseClass3Counter\x12\x41\n\x0bmetric_tags\x18\x07 \x03(\x0b\x32,.otg.PatternFlowPfcPausePauseClass3MetricTag\x1aV\n\x06\x43hoice\"L\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\t\n\x05value\x10\x02\x12\n\n\x06values\x10\x03\x12\r\n\tincrement\x10\x04\x12\r\n\tdecrement\x10\x05\x42\t\n\x07_choiceB\x08\n\x06_value\"\x7f\n%PatternFlowPfcPausePauseClass4Counter\x12\x12\n\x05start\x18\x01 \x01(\rH\x00\x88\x01\x01\x12\x11\n\x04step\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x12\n\x05\x63ount\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x08\n\x06_startB\x07\n\x05_stepB\x08\n\x06_count\"\x85\x01\n\'PatternFlowPfcPausePauseClass4MetricTag\x12\x11\n\x04name\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x13\n\x06offset\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x13\n\x06length\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x07\n\x05_nameB\t\n\x07_offsetB\t\n\x07_length\"\xb8\x03\n\x1ePatternFlowPfcPausePauseClass4\x12\x44\n\x06\x63hoice\x18\x01 \x01(\x0e\x32/.otg.PatternFlowPfcPausePauseClass4.Choice.EnumH\x00\x88\x01\x01\x12\x12\n\x05value\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x0e\n\x06values\x18\x03 \x03(\r\x12=\n\tincrement\x18\x05 \x01(\x0b\x32*.otg.PatternFlowPfcPausePauseClass4Counter\x12=\n\tdecrement\x18\x06 \x01(\x0b\x32*.otg.PatternFlowPfcPausePauseClass4Counter\x12\x41\n\x0bmetric_tags\x18\x07 \x03(\x0b\x32,.otg.PatternFlowPfcPausePauseClass4MetricTag\x1aV\n\x06\x43hoice\"L\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\t\n\x05value\x10\x02\x12\n\n\x06values\x10\x03\x12\r\n\tincrement\x10\x04\x12\r\n\tdecrement\x10\x05\x42\t\n\x07_choiceB\x08\n\x06_value\"\x7f\n%PatternFlowPfcPausePauseClass5Counter\x12\x12\n\x05start\x18\x01 \x01(\rH\x00\x88\x01\x01\x12\x11\n\x04step\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x12\n\x05\x63ount\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x08\n\x06_startB\x07\n\x05_stepB\x08\n\x06_count\"\x85\x01\n\'PatternFlowPfcPausePauseClass5MetricTag\x12\x11\n\x04name\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x13\n\x06offset\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x13\n\x06length\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x07\n\x05_nameB\t\n\x07_offsetB\t\n\x07_length\"\xb8\x03\n\x1ePatternFlowPfcPausePauseClass5\x12\x44\n\x06\x63hoice\x18\x01 \x01(\x0e\x32/.otg.PatternFlowPfcPausePauseClass5.Choice.EnumH\x00\x88\x01\x01\x12\x12\n\x05value\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x0e\n\x06values\x18\x03 \x03(\r\x12=\n\tincrement\x18\x05 \x01(\x0b\x32*.otg.PatternFlowPfcPausePauseClass5Counter\x12=\n\tdecrement\x18\x06 \x01(\x0b\x32*.otg.PatternFlowPfcPausePauseClass5Counter\x12\x41\n\x0bmetric_tags\x18\x07 \x03(\x0b\x32,.otg.PatternFlowPfcPausePauseClass5MetricTag\x1aV\n\x06\x43hoice\"L\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\t\n\x05value\x10\x02\x12\n\n\x06values\x10\x03\x12\r\n\tincrement\x10\x04\x12\r\n\tdecrement\x10\x05\x42\t\n\x07_choiceB\x08\n\x06_value\"\x7f\n%PatternFlowPfcPausePauseClass6Counter\x12\x12\n\x05start\x18\x01 \x01(\rH\x00\x88\x01\x01\x12\x11\n\x04step\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x12\n\x05\x63ount\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x08\n\x06_startB\x07\n\x05_stepB\x08\n\x06_count\"\x85\x01\n\'PatternFlowPfcPausePauseClass6MetricTag\x12\x11\n\x04name\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x13\n\x06offset\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x13\n\x06length\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x07\n\x05_nameB\t\n\x07_offsetB\t\n\x07_length\"\xb8\x03\n\x1ePatternFlowPfcPausePauseClass6\x12\x44\n\x06\x63hoice\x18\x01 \x01(\x0e\x32/.otg.PatternFlowPfcPausePauseClass6.Choice.EnumH\x00\x88\x01\x01\x12\x12\n\x05value\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x0e\n\x06values\x18\x03 \x03(\r\x12=\n\tincrement\x18\x05 \x01(\x0b\x32*.otg.PatternFlowPfcPausePauseClass6Counter\x12=\n\tdecrement\x18\x06 \x01(\x0b\x32*.otg.PatternFlowPfcPausePauseClass6Counter\x12\x41\n\x0bmetric_tags\x18\x07 \x03(\x0b\x32,.otg.PatternFlowPfcPausePauseClass6MetricTag\x1aV\n\x06\x43hoice\"L\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\t\n\x05value\x10\x02\x12\n\n\x06values\x10\x03\x12\r\n\tincrement\x10\x04\x12\r\n\tdecrement\x10\x05\x42\t\n\x07_choiceB\x08\n\x06_value\"\x7f\n%PatternFlowPfcPausePauseClass7Counter\x12\x12\n\x05start\x18\x01 \x01(\rH\x00\x88\x01\x01\x12\x11\n\x04step\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x12\n\x05\x63ount\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x08\n\x06_startB\x07\n\x05_stepB\x08\n\x06_count\"\x85\x01\n\'PatternFlowPfcPausePauseClass7MetricTag\x12\x11\n\x04name\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x13\n\x06offset\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x13\n\x06length\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x07\n\x05_nameB\t\n\x07_offsetB\t\n\x07_length\"\xb8\x03\n\x1ePatternFlowPfcPausePauseClass7\x12\x44\n\x06\x63hoice\x18\x01 \x01(\x0e\x32/.otg.PatternFlowPfcPausePauseClass7.Choice.EnumH\x00\x88\x01\x01\x12\x12\n\x05value\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x0e\n\x06values\x18\x03 \x03(\r\x12=\n\tincrement\x18\x05 \x01(\x0b\x32*.otg.PatternFlowPfcPausePauseClass7Counter\x12=\n\tdecrement\x18\x06 \x01(\x0b\x32*.otg.PatternFlowPfcPausePauseClass7Counter\x12\x41\n\x0bmetric_tags\x18\x07 \x03(\x0b\x32,.otg.PatternFlowPfcPausePauseClass7MetricTag\x1aV\n\x06\x43hoice\"L\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\t\n\x05value\x10\x02\x12\n\n\x06values\x10\x03\x12\r\n\tincrement\x10\x04\x12\r\n\tdecrement\x10\x05\x42\t\n\x07_choiceB\x08\n\x06_value\"|\n\"PatternFlowEthernetPauseDstCounter\x12\x12\n\x05start\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x11\n\x04step\x18\x02 \x01(\tH\x01\x88\x01\x01\x12\x12\n\x05\x63ount\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x08\n\x06_startB\x07\n\x05_stepB\x08\n\x06_count\"\x82\x01\n$PatternFlowEthernetPauseDstMetricTag\x12\x11\n\x04name\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x13\n\x06offset\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x13\n\x06length\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x07\n\x05_nameB\t\n\x07_offsetB\t\n\x07_length\"\xa9\x03\n\x1bPatternFlowEthernetPauseDst\x12\x41\n\x06\x63hoice\x18\x01 \x01(\x0e\x32,.otg.PatternFlowEthernetPauseDst.Choice.EnumH\x00\x88\x01\x01\x12\x12\n\x05value\x18\x02 \x01(\tH\x01\x88\x01\x01\x12\x0e\n\x06values\x18\x03 \x03(\t\x12:\n\tincrement\x18\x05 \x01(\x0b\x32\'.otg.PatternFlowEthernetPauseDstCounter\x12:\n\tdecrement\x18\x06 \x01(\x0b\x32\'.otg.PatternFlowEthernetPauseDstCounter\x12>\n\x0bmetric_tags\x18\x07 \x03(\x0b\x32).otg.PatternFlowEthernetPauseDstMetricTag\x1aV\n\x06\x43hoice\"L\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\t\n\x05value\x10\x02\x12\n\n\x06values\x10\x03\x12\r\n\tincrement\x10\x04\x12\r\n\tdecrement\x10\x05\x42\t\n\x07_choiceB\x08\n\x06_value\"|\n\"PatternFlowEthernetPauseSrcCounter\x12\x12\n\x05start\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x11\n\x04step\x18\x02 \x01(\tH\x01\x88\x01\x01\x12\x12\n\x05\x63ount\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x08\n\x06_startB\x07\n\x05_stepB\x08\n\x06_count\"\x82\x01\n$PatternFlowEthernetPauseSrcMetricTag\x12\x11\n\x04name\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x13\n\x06offset\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x13\n\x06length\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x07\n\x05_nameB\t\n\x07_offsetB\t\n\x07_length\"\xa9\x03\n\x1bPatternFlowEthernetPauseSrc\x12\x41\n\x06\x63hoice\x18\x01 \x01(\x0e\x32,.otg.PatternFlowEthernetPauseSrc.Choice.EnumH\x00\x88\x01\x01\x12\x12\n\x05value\x18\x02 \x01(\tH\x01\x88\x01\x01\x12\x0e\n\x06values\x18\x03 \x03(\t\x12:\n\tincrement\x18\x05 \x01(\x0b\x32\'.otg.PatternFlowEthernetPauseSrcCounter\x12:\n\tdecrement\x18\x06 \x01(\x0b\x32\'.otg.PatternFlowEthernetPauseSrcCounter\x12>\n\x0bmetric_tags\x18\x07 \x03(\x0b\x32).otg.PatternFlowEthernetPauseSrcMetricTag\x1aV\n\x06\x43hoice\"L\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\t\n\x05value\x10\x02\x12\n\n\x06values\x10\x03\x12\r\n\tincrement\x10\x04\x12\r\n\tdecrement\x10\x05\x42\t\n\x07_choiceB\x08\n\x06_value\"\x82\x01\n(PatternFlowEthernetPauseEtherTypeCounter\x12\x12\n\x05start\x18\x01 \x01(\rH\x00\x88\x01\x01\x12\x11\n\x04step\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x12\n\x05\x63ount\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x08\n\x06_startB\x07\n\x05_stepB\x08\n\x06_count\"\x88\x01\n*PatternFlowEthernetPauseEtherTypeMetricTag\x12\x11\n\x04name\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x13\n\x06offset\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x13\n\x06length\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x07\n\x05_nameB\t\n\x07_offsetB\t\n\x07_length\"\xc7\x03\n!PatternFlowEthernetPauseEtherType\x12G\n\x06\x63hoice\x18\x01 \x01(\x0e\x32\x32.otg.PatternFlowEthernetPauseEtherType.Choice.EnumH\x00\x88\x01\x01\x12\x12\n\x05value\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x0e\n\x06values\x18\x03 \x03(\r\x12@\n\tincrement\x18\x05 \x01(\x0b\x32-.otg.PatternFlowEthernetPauseEtherTypeCounter\x12@\n\tdecrement\x18\x06 \x01(\x0b\x32-.otg.PatternFlowEthernetPauseEtherTypeCounter\x12\x44\n\x0bmetric_tags\x18\x07 \x03(\x0b\x32/.otg.PatternFlowEthernetPauseEtherTypeMetricTag\x1aV\n\x06\x43hoice\"L\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\t\n\x05value\x10\x02\x12\n\n\x06values\x10\x03\x12\r\n\tincrement\x10\x04\x12\r\n\tdecrement\x10\x05\x42\t\n\x07_choiceB\x08\n\x06_value\"\x86\x01\n,PatternFlowEthernetPauseControlOpCodeCounter\x12\x12\n\x05start\x18\x01 \x01(\rH\x00\x88\x01\x01\x12\x11\n\x04step\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x12\n\x05\x63ount\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x08\n\x06_startB\x07\n\x05_stepB\x08\n\x06_count\"\x8c\x01\n.PatternFlowEthernetPauseControlOpCodeMetricTag\x12\x11\n\x04name\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x13\n\x06offset\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x13\n\x06length\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x07\n\x05_nameB\t\n\x07_offsetB\t\n\x07_length\"\xdb\x03\n%PatternFlowEthernetPauseControlOpCode\x12K\n\x06\x63hoice\x18\x01 \x01(\x0e\x32\x36.otg.PatternFlowEthernetPauseControlOpCode.Choice.EnumH\x00\x88\x01\x01\x12\x12\n\x05value\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x0e\n\x06values\x18\x03 \x03(\r\x12\x44\n\tincrement\x18\x05 \x01(\x0b\x32\x31.otg.PatternFlowEthernetPauseControlOpCodeCounter\x12\x44\n\tdecrement\x18\x06 \x01(\x0b\x32\x31.otg.PatternFlowEthernetPauseControlOpCodeCounter\x12H\n\x0bmetric_tags\x18\x07 \x03(\x0b\x32\x33.otg.PatternFlowEthernetPauseControlOpCodeMetricTag\x1aV\n\x06\x43hoice\"L\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\t\n\x05value\x10\x02\x12\n\n\x06values\x10\x03\x12\r\n\tincrement\x10\x04\x12\r\n\tdecrement\x10\x05\x42\t\n\x07_choiceB\x08\n\x06_value\"}\n#PatternFlowEthernetPauseTimeCounter\x12\x12\n\x05start\x18\x01 \x01(\rH\x00\x88\x01\x01\x12\x11\n\x04step\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x12\n\x05\x63ount\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x08\n\x06_startB\x07\n\x05_stepB\x08\n\x06_count\"\x83\x01\n%PatternFlowEthernetPauseTimeMetricTag\x12\x11\n\x04name\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x13\n\x06offset\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x13\n\x06length\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x07\n\x05_nameB\t\n\x07_offsetB\t\n\x07_length\"\xae\x03\n\x1cPatternFlowEthernetPauseTime\x12\x42\n\x06\x63hoice\x18\x01 \x01(\x0e\x32-.otg.PatternFlowEthernetPauseTime.Choice.EnumH\x00\x88\x01\x01\x12\x12\n\x05value\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x0e\n\x06values\x18\x03 \x03(\r\x12;\n\tincrement\x18\x05 \x01(\x0b\x32(.otg.PatternFlowEthernetPauseTimeCounter\x12;\n\tdecrement\x18\x06 \x01(\x0b\x32(.otg.PatternFlowEthernetPauseTimeCounter\x12?\n\x0bmetric_tags\x18\x07 \x03(\x0b\x32*.otg.PatternFlowEthernetPauseTimeMetricTag\x1aV\n\x06\x43hoice\"L\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\t\n\x05value\x10\x02\x12\n\n\x06values\x10\x03\x12\r\n\tincrement\x10\x04\x12\r\n\tdecrement\x10\x05\x42\t\n\x07_choiceB\x08\n\x06_value\"v\n\x1cPatternFlowTcpSrcPortCounter\x12\x12\n\x05start\x18\x01 \x01(\rH\x00\x88\x01\x01\x12\x11\n\x04step\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x12\n\x05\x63ount\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x08\n\x06_startB\x07\n\x05_stepB\x08\n\x06_count\"|\n\x1ePatternFlowTcpSrcPortMetricTag\x12\x11\n\x04name\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x13\n\x06offset\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x13\n\x06length\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x07\n\x05_nameB\t\n\x07_offsetB\t\n\x07_length\"\x8b\x03\n\x15PatternFlowTcpSrcPort\x12;\n\x06\x63hoice\x18\x01 \x01(\x0e\x32&.otg.PatternFlowTcpSrcPort.Choice.EnumH\x00\x88\x01\x01\x12\x12\n\x05value\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x0e\n\x06values\x18\x03 \x03(\r\x12\x34\n\tincrement\x18\x05 \x01(\x0b\x32!.otg.PatternFlowTcpSrcPortCounter\x12\x34\n\tdecrement\x18\x06 \x01(\x0b\x32!.otg.PatternFlowTcpSrcPortCounter\x12\x38\n\x0bmetric_tags\x18\x07 \x03(\x0b\x32#.otg.PatternFlowTcpSrcPortMetricTag\x1aV\n\x06\x43hoice\"L\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\t\n\x05value\x10\x02\x12\n\n\x06values\x10\x03\x12\r\n\tincrement\x10\x04\x12\r\n\tdecrement\x10\x05\x42\t\n\x07_choiceB\x08\n\x06_value\"v\n\x1cPatternFlowTcpDstPortCounter\x12\x12\n\x05start\x18\x01 \x01(\rH\x00\x88\x01\x01\x12\x11\n\x04step\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x12\n\x05\x63ount\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x08\n\x06_startB\x07\n\x05_stepB\x08\n\x06_count\"|\n\x1ePatternFlowTcpDstPortMetricTag\x12\x11\n\x04name\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x13\n\x06offset\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x13\n\x06length\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x07\n\x05_nameB\t\n\x07_offsetB\t\n\x07_length\"\x8b\x03\n\x15PatternFlowTcpDstPort\x12;\n\x06\x63hoice\x18\x01 \x01(\x0e\x32&.otg.PatternFlowTcpDstPort.Choice.EnumH\x00\x88\x01\x01\x12\x12\n\x05value\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x0e\n\x06values\x18\x03 \x03(\r\x12\x34\n\tincrement\x18\x05 \x01(\x0b\x32!.otg.PatternFlowTcpDstPortCounter\x12\x34\n\tdecrement\x18\x06 \x01(\x0b\x32!.otg.PatternFlowTcpDstPortCounter\x12\x38\n\x0bmetric_tags\x18\x07 \x03(\x0b\x32#.otg.PatternFlowTcpDstPortMetricTag\x1aV\n\x06\x43hoice\"L\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\t\n\x05value\x10\x02\x12\n\n\x06values\x10\x03\x12\r\n\tincrement\x10\x04\x12\r\n\tdecrement\x10\x05\x42\t\n\x07_choiceB\x08\n\x06_value\"u\n\x1bPatternFlowTcpSeqNumCounter\x12\x12\n\x05start\x18\x01 \x01(\rH\x00\x88\x01\x01\x12\x11\n\x04step\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x12\n\x05\x63ount\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x08\n\x06_startB\x07\n\x05_stepB\x08\n\x06_count\"{\n\x1dPatternFlowTcpSeqNumMetricTag\x12\x11\n\x04name\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x13\n\x06offset\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x13\n\x06length\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x07\n\x05_nameB\t\n\x07_offsetB\t\n\x07_length\"\x86\x03\n\x14PatternFlowTcpSeqNum\x12:\n\x06\x63hoice\x18\x01 \x01(\x0e\x32%.otg.PatternFlowTcpSeqNum.Choice.EnumH\x00\x88\x01\x01\x12\x12\n\x05value\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x0e\n\x06values\x18\x03 \x03(\r\x12\x33\n\tincrement\x18\x05 \x01(\x0b\x32 .otg.PatternFlowTcpSeqNumCounter\x12\x33\n\tdecrement\x18\x06 \x01(\x0b\x32 .otg.PatternFlowTcpSeqNumCounter\x12\x37\n\x0bmetric_tags\x18\x07 \x03(\x0b\x32\".otg.PatternFlowTcpSeqNumMetricTag\x1aV\n\x06\x43hoice\"L\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\t\n\x05value\x10\x02\x12\n\n\x06values\x10\x03\x12\r\n\tincrement\x10\x04\x12\r\n\tdecrement\x10\x05\x42\t\n\x07_choiceB\x08\n\x06_value\"u\n\x1bPatternFlowTcpAckNumCounter\x12\x12\n\x05start\x18\x01 \x01(\rH\x00\x88\x01\x01\x12\x11\n\x04step\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x12\n\x05\x63ount\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x08\n\x06_startB\x07\n\x05_stepB\x08\n\x06_count\"{\n\x1dPatternFlowTcpAckNumMetricTag\x12\x11\n\x04name\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x13\n\x06offset\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x13\n\x06length\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x07\n\x05_nameB\t\n\x07_offsetB\t\n\x07_length\"\x86\x03\n\x14PatternFlowTcpAckNum\x12:\n\x06\x63hoice\x18\x01 \x01(\x0e\x32%.otg.PatternFlowTcpAckNum.Choice.EnumH\x00\x88\x01\x01\x12\x12\n\x05value\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x0e\n\x06values\x18\x03 \x03(\r\x12\x33\n\tincrement\x18\x05 \x01(\x0b\x32 .otg.PatternFlowTcpAckNumCounter\x12\x33\n\tdecrement\x18\x06 \x01(\x0b\x32 .otg.PatternFlowTcpAckNumCounter\x12\x37\n\x0bmetric_tags\x18\x07 \x03(\x0b\x32\".otg.PatternFlowTcpAckNumMetricTag\x1aV\n\x06\x43hoice\"L\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\t\n\x05value\x10\x02\x12\n\n\x06values\x10\x03\x12\r\n\tincrement\x10\x04\x12\r\n\tdecrement\x10\x05\x42\t\n\x07_choiceB\x08\n\x06_value\"y\n\x1fPatternFlowTcpDataOffsetCounter\x12\x12\n\x05start\x18\x01 \x01(\rH\x00\x88\x01\x01\x12\x11\n\x04step\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x12\n\x05\x63ount\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x08\n\x06_startB\x07\n\x05_stepB\x08\n\x06_count\"\x7f\n!PatternFlowTcpDataOffsetMetricTag\x12\x11\n\x04name\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x13\n\x06offset\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x13\n\x06length\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x07\n\x05_nameB\t\n\x07_offsetB\t\n\x07_length\"\x9a\x03\n\x18PatternFlowTcpDataOffset\x12>\n\x06\x63hoice\x18\x01 \x01(\x0e\x32).otg.PatternFlowTcpDataOffset.Choice.EnumH\x00\x88\x01\x01\x12\x12\n\x05value\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x0e\n\x06values\x18\x03 \x03(\r\x12\x37\n\tincrement\x18\x05 \x01(\x0b\x32$.otg.PatternFlowTcpDataOffsetCounter\x12\x37\n\tdecrement\x18\x06 \x01(\x0b\x32$.otg.PatternFlowTcpDataOffsetCounter\x12;\n\x0bmetric_tags\x18\x07 \x03(\x0b\x32&.otg.PatternFlowTcpDataOffsetMetricTag\x1aV\n\x06\x43hoice\"L\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\t\n\x05value\x10\x02\x12\n\n\x06values\x10\x03\x12\r\n\tincrement\x10\x04\x12\r\n\tdecrement\x10\x05\x42\t\n\x07_choiceB\x08\n\x06_value\"t\n\x1aPatternFlowTcpEcnNsCounter\x12\x12\n\x05start\x18\x01 \x01(\rH\x00\x88\x01\x01\x12\x11\n\x04step\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x12\n\x05\x63ount\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x08\n\x06_startB\x07\n\x05_stepB\x08\n\x06_count\"z\n\x1cPatternFlowTcpEcnNsMetricTag\x12\x11\n\x04name\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x13\n\x06offset\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x13\n\x06length\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x07\n\x05_nameB\t\n\x07_offsetB\t\n\x07_length\"\x81\x03\n\x13PatternFlowTcpEcnNs\x12\x39\n\x06\x63hoice\x18\x01 \x01(\x0e\x32$.otg.PatternFlowTcpEcnNs.Choice.EnumH\x00\x88\x01\x01\x12\x12\n\x05value\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x0e\n\x06values\x18\x03 \x03(\r\x12\x32\n\tincrement\x18\x05 \x01(\x0b\x32\x1f.otg.PatternFlowTcpEcnNsCounter\x12\x32\n\tdecrement\x18\x06 \x01(\x0b\x32\x1f.otg.PatternFlowTcpEcnNsCounter\x12\x36\n\x0bmetric_tags\x18\x07 \x03(\x0b\x32!.otg.PatternFlowTcpEcnNsMetricTag\x1aV\n\x06\x43hoice\"L\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\t\n\x05value\x10\x02\x12\n\n\x06values\x10\x03\x12\r\n\tincrement\x10\x04\x12\r\n\tdecrement\x10\x05\x42\t\n\x07_choiceB\x08\n\x06_value\"u\n\x1bPatternFlowTcpEcnCwrCounter\x12\x12\n\x05start\x18\x01 \x01(\rH\x00\x88\x01\x01\x12\x11\n\x04step\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x12\n\x05\x63ount\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x08\n\x06_startB\x07\n\x05_stepB\x08\n\x06_count\"{\n\x1dPatternFlowTcpEcnCwrMetricTag\x12\x11\n\x04name\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x13\n\x06offset\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x13\n\x06length\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x07\n\x05_nameB\t\n\x07_offsetB\t\n\x07_length\"\x86\x03\n\x14PatternFlowTcpEcnCwr\x12:\n\x06\x63hoice\x18\x01 \x01(\x0e\x32%.otg.PatternFlowTcpEcnCwr.Choice.EnumH\x00\x88\x01\x01\x12\x12\n\x05value\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x0e\n\x06values\x18\x03 \x03(\r\x12\x33\n\tincrement\x18\x05 \x01(\x0b\x32 .otg.PatternFlowTcpEcnCwrCounter\x12\x33\n\tdecrement\x18\x06 \x01(\x0b\x32 .otg.PatternFlowTcpEcnCwrCounter\x12\x37\n\x0bmetric_tags\x18\x07 \x03(\x0b\x32\".otg.PatternFlowTcpEcnCwrMetricTag\x1aV\n\x06\x43hoice\"L\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\t\n\x05value\x10\x02\x12\n\n\x06values\x10\x03\x12\r\n\tincrement\x10\x04\x12\r\n\tdecrement\x10\x05\x42\t\n\x07_choiceB\x08\n\x06_value\"v\n\x1cPatternFlowTcpEcnEchoCounter\x12\x12\n\x05start\x18\x01 \x01(\rH\x00\x88\x01\x01\x12\x11\n\x04step\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x12\n\x05\x63ount\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x08\n\x06_startB\x07\n\x05_stepB\x08\n\x06_count\"|\n\x1ePatternFlowTcpEcnEchoMetricTag\x12\x11\n\x04name\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x13\n\x06offset\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x13\n\x06length\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x07\n\x05_nameB\t\n\x07_offsetB\t\n\x07_length\"\x8b\x03\n\x15PatternFlowTcpEcnEcho\x12;\n\x06\x63hoice\x18\x01 \x01(\x0e\x32&.otg.PatternFlowTcpEcnEcho.Choice.EnumH\x00\x88\x01\x01\x12\x12\n\x05value\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x0e\n\x06values\x18\x03 \x03(\r\x12\x34\n\tincrement\x18\x05 \x01(\x0b\x32!.otg.PatternFlowTcpEcnEchoCounter\x12\x34\n\tdecrement\x18\x06 \x01(\x0b\x32!.otg.PatternFlowTcpEcnEchoCounter\x12\x38\n\x0bmetric_tags\x18\x07 \x03(\x0b\x32#.otg.PatternFlowTcpEcnEchoMetricTag\x1aV\n\x06\x43hoice\"L\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\t\n\x05value\x10\x02\x12\n\n\x06values\x10\x03\x12\r\n\tincrement\x10\x04\x12\r\n\tdecrement\x10\x05\x42\t\n\x07_choiceB\x08\n\x06_value\"u\n\x1bPatternFlowTcpCtlUrgCounter\x12\x12\n\x05start\x18\x01 \x01(\rH\x00\x88\x01\x01\x12\x11\n\x04step\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x12\n\x05\x63ount\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x08\n\x06_startB\x07\n\x05_stepB\x08\n\x06_count\"{\n\x1dPatternFlowTcpCtlUrgMetricTag\x12\x11\n\x04name\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x13\n\x06offset\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x13\n\x06length\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x07\n\x05_nameB\t\n\x07_offsetB\t\n\x07_length\"\x86\x03\n\x14PatternFlowTcpCtlUrg\x12:\n\x06\x63hoice\x18\x01 \x01(\x0e\x32%.otg.PatternFlowTcpCtlUrg.Choice.EnumH\x00\x88\x01\x01\x12\x12\n\x05value\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x0e\n\x06values\x18\x03 \x03(\r\x12\x33\n\tincrement\x18\x05 \x01(\x0b\x32 .otg.PatternFlowTcpCtlUrgCounter\x12\x33\n\tdecrement\x18\x06 \x01(\x0b\x32 .otg.PatternFlowTcpCtlUrgCounter\x12\x37\n\x0bmetric_tags\x18\x07 \x03(\x0b\x32\".otg.PatternFlowTcpCtlUrgMetricTag\x1aV\n\x06\x43hoice\"L\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\t\n\x05value\x10\x02\x12\n\n\x06values\x10\x03\x12\r\n\tincrement\x10\x04\x12\r\n\tdecrement\x10\x05\x42\t\n\x07_choiceB\x08\n\x06_value\"u\n\x1bPatternFlowTcpCtlAckCounter\x12\x12\n\x05start\x18\x01 \x01(\rH\x00\x88\x01\x01\x12\x11\n\x04step\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x12\n\x05\x63ount\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x08\n\x06_startB\x07\n\x05_stepB\x08\n\x06_count\"{\n\x1dPatternFlowTcpCtlAckMetricTag\x12\x11\n\x04name\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x13\n\x06offset\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x13\n\x06length\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x07\n\x05_nameB\t\n\x07_offsetB\t\n\x07_length\"\x86\x03\n\x14PatternFlowTcpCtlAck\x12:\n\x06\x63hoice\x18\x01 \x01(\x0e\x32%.otg.PatternFlowTcpCtlAck.Choice.EnumH\x00\x88\x01\x01\x12\x12\n\x05value\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x0e\n\x06values\x18\x03 \x03(\r\x12\x33\n\tincrement\x18\x05 \x01(\x0b\x32 .otg.PatternFlowTcpCtlAckCounter\x12\x33\n\tdecrement\x18\x06 \x01(\x0b\x32 .otg.PatternFlowTcpCtlAckCounter\x12\x37\n\x0bmetric_tags\x18\x07 \x03(\x0b\x32\".otg.PatternFlowTcpCtlAckMetricTag\x1aV\n\x06\x43hoice\"L\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\t\n\x05value\x10\x02\x12\n\n\x06values\x10\x03\x12\r\n\tincrement\x10\x04\x12\r\n\tdecrement\x10\x05\x42\t\n\x07_choiceB\x08\n\x06_value\"u\n\x1bPatternFlowTcpCtlPshCounter\x12\x12\n\x05start\x18\x01 \x01(\rH\x00\x88\x01\x01\x12\x11\n\x04step\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x12\n\x05\x63ount\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x08\n\x06_startB\x07\n\x05_stepB\x08\n\x06_count\"{\n\x1dPatternFlowTcpCtlPshMetricTag\x12\x11\n\x04name\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x13\n\x06offset\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x13\n\x06length\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x07\n\x05_nameB\t\n\x07_offsetB\t\n\x07_length\"\x86\x03\n\x14PatternFlowTcpCtlPsh\x12:\n\x06\x63hoice\x18\x01 \x01(\x0e\x32%.otg.PatternFlowTcpCtlPsh.Choice.EnumH\x00\x88\x01\x01\x12\x12\n\x05value\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x0e\n\x06values\x18\x03 \x03(\r\x12\x33\n\tincrement\x18\x05 \x01(\x0b\x32 .otg.PatternFlowTcpCtlPshCounter\x12\x33\n\tdecrement\x18\x06 \x01(\x0b\x32 .otg.PatternFlowTcpCtlPshCounter\x12\x37\n\x0bmetric_tags\x18\x07 \x03(\x0b\x32\".otg.PatternFlowTcpCtlPshMetricTag\x1aV\n\x06\x43hoice\"L\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\t\n\x05value\x10\x02\x12\n\n\x06values\x10\x03\x12\r\n\tincrement\x10\x04\x12\r\n\tdecrement\x10\x05\x42\t\n\x07_choiceB\x08\n\x06_value\"u\n\x1bPatternFlowTcpCtlRstCounter\x12\x12\n\x05start\x18\x01 \x01(\rH\x00\x88\x01\x01\x12\x11\n\x04step\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x12\n\x05\x63ount\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x08\n\x06_startB\x07\n\x05_stepB\x08\n\x06_count\"{\n\x1dPatternFlowTcpCtlRstMetricTag\x12\x11\n\x04name\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x13\n\x06offset\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x13\n\x06length\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x07\n\x05_nameB\t\n\x07_offsetB\t\n\x07_length\"\x86\x03\n\x14PatternFlowTcpCtlRst\x12:\n\x06\x63hoice\x18\x01 \x01(\x0e\x32%.otg.PatternFlowTcpCtlRst.Choice.EnumH\x00\x88\x01\x01\x12\x12\n\x05value\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x0e\n\x06values\x18\x03 \x03(\r\x12\x33\n\tincrement\x18\x05 \x01(\x0b\x32 .otg.PatternFlowTcpCtlRstCounter\x12\x33\n\tdecrement\x18\x06 \x01(\x0b\x32 .otg.PatternFlowTcpCtlRstCounter\x12\x37\n\x0bmetric_tags\x18\x07 \x03(\x0b\x32\".otg.PatternFlowTcpCtlRstMetricTag\x1aV\n\x06\x43hoice\"L\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\t\n\x05value\x10\x02\x12\n\n\x06values\x10\x03\x12\r\n\tincrement\x10\x04\x12\r\n\tdecrement\x10\x05\x42\t\n\x07_choiceB\x08\n\x06_value\"u\n\x1bPatternFlowTcpCtlSynCounter\x12\x12\n\x05start\x18\x01 \x01(\rH\x00\x88\x01\x01\x12\x11\n\x04step\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x12\n\x05\x63ount\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x08\n\x06_startB\x07\n\x05_stepB\x08\n\x06_count\"{\n\x1dPatternFlowTcpCtlSynMetricTag\x12\x11\n\x04name\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x13\n\x06offset\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x13\n\x06length\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x07\n\x05_nameB\t\n\x07_offsetB\t\n\x07_length\"\x86\x03\n\x14PatternFlowTcpCtlSyn\x12:\n\x06\x63hoice\x18\x01 \x01(\x0e\x32%.otg.PatternFlowTcpCtlSyn.Choice.EnumH\x00\x88\x01\x01\x12\x12\n\x05value\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x0e\n\x06values\x18\x03 \x03(\r\x12\x33\n\tincrement\x18\x05 \x01(\x0b\x32 .otg.PatternFlowTcpCtlSynCounter\x12\x33\n\tdecrement\x18\x06 \x01(\x0b\x32 .otg.PatternFlowTcpCtlSynCounter\x12\x37\n\x0bmetric_tags\x18\x07 \x03(\x0b\x32\".otg.PatternFlowTcpCtlSynMetricTag\x1aV\n\x06\x43hoice\"L\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\t\n\x05value\x10\x02\x12\n\n\x06values\x10\x03\x12\r\n\tincrement\x10\x04\x12\r\n\tdecrement\x10\x05\x42\t\n\x07_choiceB\x08\n\x06_value\"u\n\x1bPatternFlowTcpCtlFinCounter\x12\x12\n\x05start\x18\x01 \x01(\rH\x00\x88\x01\x01\x12\x11\n\x04step\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x12\n\x05\x63ount\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x08\n\x06_startB\x07\n\x05_stepB\x08\n\x06_count\"{\n\x1dPatternFlowTcpCtlFinMetricTag\x12\x11\n\x04name\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x13\n\x06offset\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x13\n\x06length\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x07\n\x05_nameB\t\n\x07_offsetB\t\n\x07_length\"\x86\x03\n\x14PatternFlowTcpCtlFin\x12:\n\x06\x63hoice\x18\x01 \x01(\x0e\x32%.otg.PatternFlowTcpCtlFin.Choice.EnumH\x00\x88\x01\x01\x12\x12\n\x05value\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x0e\n\x06values\x18\x03 \x03(\r\x12\x33\n\tincrement\x18\x05 \x01(\x0b\x32 .otg.PatternFlowTcpCtlFinCounter\x12\x33\n\tdecrement\x18\x06 \x01(\x0b\x32 .otg.PatternFlowTcpCtlFinCounter\x12\x37\n\x0bmetric_tags\x18\x07 \x03(\x0b\x32\".otg.PatternFlowTcpCtlFinMetricTag\x1aV\n\x06\x43hoice\"L\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\t\n\x05value\x10\x02\x12\n\n\x06values\x10\x03\x12\r\n\tincrement\x10\x04\x12\r\n\tdecrement\x10\x05\x42\t\n\x07_choiceB\x08\n\x06_value\"u\n\x1bPatternFlowTcpWindowCounter\x12\x12\n\x05start\x18\x01 \x01(\rH\x00\x88\x01\x01\x12\x11\n\x04step\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x12\n\x05\x63ount\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x08\n\x06_startB\x07\n\x05_stepB\x08\n\x06_count\"{\n\x1dPatternFlowTcpWindowMetricTag\x12\x11\n\x04name\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x13\n\x06offset\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x13\n\x06length\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x07\n\x05_nameB\t\n\x07_offsetB\t\n\x07_length\"\x86\x03\n\x14PatternFlowTcpWindow\x12:\n\x06\x63hoice\x18\x01 \x01(\x0e\x32%.otg.PatternFlowTcpWindow.Choice.EnumH\x00\x88\x01\x01\x12\x12\n\x05value\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x0e\n\x06values\x18\x03 \x03(\r\x12\x33\n\tincrement\x18\x05 \x01(\x0b\x32 .otg.PatternFlowTcpWindowCounter\x12\x33\n\tdecrement\x18\x06 \x01(\x0b\x32 .otg.PatternFlowTcpWindowCounter\x12\x37\n\x0bmetric_tags\x18\x07 \x03(\x0b\x32\".otg.PatternFlowTcpWindowMetricTag\x1aV\n\x06\x43hoice\"L\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\t\n\x05value\x10\x02\x12\n\n\x06values\x10\x03\x12\r\n\tincrement\x10\x04\x12\r\n\tdecrement\x10\x05\x42\t\n\x07_choiceB\x08\n\x06_value\"v\n\x1cPatternFlowUdpSrcPortCounter\x12\x12\n\x05start\x18\x01 \x01(\rH\x00\x88\x01\x01\x12\x11\n\x04step\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x12\n\x05\x63ount\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x08\n\x06_startB\x07\n\x05_stepB\x08\n\x06_count\"|\n\x1ePatternFlowUdpSrcPortMetricTag\x12\x11\n\x04name\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x13\n\x06offset\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x13\n\x06length\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x07\n\x05_nameB\t\n\x07_offsetB\t\n\x07_length\"\x8b\x03\n\x15PatternFlowUdpSrcPort\x12;\n\x06\x63hoice\x18\x01 \x01(\x0e\x32&.otg.PatternFlowUdpSrcPort.Choice.EnumH\x00\x88\x01\x01\x12\x12\n\x05value\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x0e\n\x06values\x18\x03 \x03(\r\x12\x34\n\tincrement\x18\x05 \x01(\x0b\x32!.otg.PatternFlowUdpSrcPortCounter\x12\x34\n\tdecrement\x18\x06 \x01(\x0b\x32!.otg.PatternFlowUdpSrcPortCounter\x12\x38\n\x0bmetric_tags\x18\x07 \x03(\x0b\x32#.otg.PatternFlowUdpSrcPortMetricTag\x1aV\n\x06\x43hoice\"L\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\t\n\x05value\x10\x02\x12\n\n\x06values\x10\x03\x12\r\n\tincrement\x10\x04\x12\r\n\tdecrement\x10\x05\x42\t\n\x07_choiceB\x08\n\x06_value\"v\n\x1cPatternFlowUdpDstPortCounter\x12\x12\n\x05start\x18\x01 \x01(\rH\x00\x88\x01\x01\x12\x11\n\x04step\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x12\n\x05\x63ount\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x08\n\x06_startB\x07\n\x05_stepB\x08\n\x06_count\"|\n\x1ePatternFlowUdpDstPortMetricTag\x12\x11\n\x04name\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x13\n\x06offset\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x13\n\x06length\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x07\n\x05_nameB\t\n\x07_offsetB\t\n\x07_length\"\x8b\x03\n\x15PatternFlowUdpDstPort\x12;\n\x06\x63hoice\x18\x01 \x01(\x0e\x32&.otg.PatternFlowUdpDstPort.Choice.EnumH\x00\x88\x01\x01\x12\x12\n\x05value\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x0e\n\x06values\x18\x03 \x03(\r\x12\x34\n\tincrement\x18\x05 \x01(\x0b\x32!.otg.PatternFlowUdpDstPortCounter\x12\x34\n\tdecrement\x18\x06 \x01(\x0b\x32!.otg.PatternFlowUdpDstPortCounter\x12\x38\n\x0bmetric_tags\x18\x07 \x03(\x0b\x32#.otg.PatternFlowUdpDstPortMetricTag\x1aV\n\x06\x43hoice\"L\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\t\n\x05value\x10\x02\x12\n\n\x06values\x10\x03\x12\r\n\tincrement\x10\x04\x12\r\n\tdecrement\x10\x05\x42\t\n\x07_choiceB\x08\n\x06_value\"u\n\x1bPatternFlowUdpLengthCounter\x12\x12\n\x05start\x18\x01 \x01(\rH\x00\x88\x01\x01\x12\x11\n\x04step\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x12\n\x05\x63ount\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x08\n\x06_startB\x07\n\x05_stepB\x08\n\x06_count\"{\n\x1dPatternFlowUdpLengthMetricTag\x12\x11\n\x04name\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x13\n\x06offset\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x13\n\x06length\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x07\n\x05_nameB\t\n\x07_offsetB\t\n\x07_length\"\x86\x03\n\x14PatternFlowUdpLength\x12:\n\x06\x63hoice\x18\x01 \x01(\x0e\x32%.otg.PatternFlowUdpLength.Choice.EnumH\x00\x88\x01\x01\x12\x12\n\x05value\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x0e\n\x06values\x18\x03 \x03(\r\x12\x33\n\tincrement\x18\x05 \x01(\x0b\x32 .otg.PatternFlowUdpLengthCounter\x12\x33\n\tdecrement\x18\x06 \x01(\x0b\x32 .otg.PatternFlowUdpLengthCounter\x12\x37\n\x0bmetric_tags\x18\x07 \x03(\x0b\x32\".otg.PatternFlowUdpLengthMetricTag\x1aV\n\x06\x43hoice\"L\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\t\n\x05value\x10\x02\x12\n\n\x06values\x10\x03\x12\r\n\tincrement\x10\x04\x12\r\n\tdecrement\x10\x05\x42\t\n\x07_choiceB\x08\n\x06_value\"\xca\x02\n\x16PatternFlowUdpChecksum\x12<\n\x06\x63hoice\x18\x01 \x01(\x0e\x32\'.otg.PatternFlowUdpChecksum.Choice.EnumH\x00\x88\x01\x01\x12\x42\n\tgenerated\x18\x02 \x01(\x0e\x32*.otg.PatternFlowUdpChecksum.Generated.EnumH\x01\x88\x01\x01\x12\x13\n\x06\x63ustom\x18\x03 \x01(\rH\x02\x88\x01\x01\x1a<\n\x06\x43hoice\"2\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\r\n\tgenerated\x10\x01\x12\n\n\x06\x63ustom\x10\x02\x1a\x37\n\tGenerated\"*\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\x08\n\x04good\x10\x01\x12\x07\n\x03\x62\x61\x64\x10\x02\x42\t\n\x07_choiceB\x0c\n\n_generatedB\t\n\x07_custom\"~\n$PatternFlowGreChecksumPresentCounter\x12\x12\n\x05start\x18\x01 \x01(\rH\x00\x88\x01\x01\x12\x11\n\x04step\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x12\n\x05\x63ount\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x08\n\x06_startB\x07\n\x05_stepB\x08\n\x06_count\"\x84\x01\n&PatternFlowGreChecksumPresentMetricTag\x12\x11\n\x04name\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x13\n\x06offset\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x13\n\x06length\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x07\n\x05_nameB\t\n\x07_offsetB\t\n\x07_length\"\xb3\x03\n\x1dPatternFlowGreChecksumPresent\x12\x43\n\x06\x63hoice\x18\x01 \x01(\x0e\x32..otg.PatternFlowGreChecksumPresent.Choice.EnumH\x00\x88\x01\x01\x12\x12\n\x05value\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x0e\n\x06values\x18\x03 \x03(\r\x12<\n\tincrement\x18\x05 \x01(\x0b\x32).otg.PatternFlowGreChecksumPresentCounter\x12<\n\tdecrement\x18\x06 \x01(\x0b\x32).otg.PatternFlowGreChecksumPresentCounter\x12@\n\x0bmetric_tags\x18\x07 \x03(\x0b\x32+.otg.PatternFlowGreChecksumPresentMetricTag\x1aV\n\x06\x43hoice\"L\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\t\n\x05value\x10\x02\x12\n\n\x06values\x10\x03\x12\r\n\tincrement\x10\x04\x12\r\n\tdecrement\x10\x05\x42\t\n\x07_choiceB\x08\n\x06_value\"x\n\x1ePatternFlowGreReserved0Counter\x12\x12\n\x05start\x18\x01 \x01(\rH\x00\x88\x01\x01\x12\x11\n\x04step\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x12\n\x05\x63ount\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x08\n\x06_startB\x07\n\x05_stepB\x08\n\x06_count\"~\n PatternFlowGreReserved0MetricTag\x12\x11\n\x04name\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x13\n\x06offset\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x13\n\x06length\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x07\n\x05_nameB\t\n\x07_offsetB\t\n\x07_length\"\x95\x03\n\x17PatternFlowGreReserved0\x12=\n\x06\x63hoice\x18\x01 \x01(\x0e\x32(.otg.PatternFlowGreReserved0.Choice.EnumH\x00\x88\x01\x01\x12\x12\n\x05value\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x0e\n\x06values\x18\x03 \x03(\r\x12\x36\n\tincrement\x18\x05 \x01(\x0b\x32#.otg.PatternFlowGreReserved0Counter\x12\x36\n\tdecrement\x18\x06 \x01(\x0b\x32#.otg.PatternFlowGreReserved0Counter\x12:\n\x0bmetric_tags\x18\x07 \x03(\x0b\x32%.otg.PatternFlowGreReserved0MetricTag\x1aV\n\x06\x43hoice\"L\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\t\n\x05value\x10\x02\x12\n\n\x06values\x10\x03\x12\r\n\tincrement\x10\x04\x12\r\n\tdecrement\x10\x05\x42\t\n\x07_choiceB\x08\n\x06_value\"v\n\x1cPatternFlowGreVersionCounter\x12\x12\n\x05start\x18\x01 \x01(\rH\x00\x88\x01\x01\x12\x11\n\x04step\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x12\n\x05\x63ount\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x08\n\x06_startB\x07\n\x05_stepB\x08\n\x06_count\"|\n\x1ePatternFlowGreVersionMetricTag\x12\x11\n\x04name\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x13\n\x06offset\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x13\n\x06length\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x07\n\x05_nameB\t\n\x07_offsetB\t\n\x07_length\"\x8b\x03\n\x15PatternFlowGreVersion\x12;\n\x06\x63hoice\x18\x01 \x01(\x0e\x32&.otg.PatternFlowGreVersion.Choice.EnumH\x00\x88\x01\x01\x12\x12\n\x05value\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x0e\n\x06values\x18\x03 \x03(\r\x12\x34\n\tincrement\x18\x05 \x01(\x0b\x32!.otg.PatternFlowGreVersionCounter\x12\x34\n\tdecrement\x18\x06 \x01(\x0b\x32!.otg.PatternFlowGreVersionCounter\x12\x38\n\x0bmetric_tags\x18\x07 \x03(\x0b\x32#.otg.PatternFlowGreVersionMetricTag\x1aV\n\x06\x43hoice\"L\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\t\n\x05value\x10\x02\x12\n\n\x06values\x10\x03\x12\r\n\tincrement\x10\x04\x12\r\n\tdecrement\x10\x05\x42\t\n\x07_choiceB\x08\n\x06_value\"w\n\x1dPatternFlowGreProtocolCounter\x12\x12\n\x05start\x18\x01 \x01(\rH\x00\x88\x01\x01\x12\x11\n\x04step\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x12\n\x05\x63ount\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x08\n\x06_startB\x07\n\x05_stepB\x08\n\x06_count\"}\n\x1fPatternFlowGreProtocolMetricTag\x12\x11\n\x04name\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x13\n\x06offset\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x13\n\x06length\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x07\n\x05_nameB\t\n\x07_offsetB\t\n\x07_length\"\x90\x03\n\x16PatternFlowGreProtocol\x12<\n\x06\x63hoice\x18\x01 \x01(\x0e\x32\'.otg.PatternFlowGreProtocol.Choice.EnumH\x00\x88\x01\x01\x12\x12\n\x05value\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x0e\n\x06values\x18\x03 \x03(\r\x12\x35\n\tincrement\x18\x05 \x01(\x0b\x32\".otg.PatternFlowGreProtocolCounter\x12\x35\n\tdecrement\x18\x06 \x01(\x0b\x32\".otg.PatternFlowGreProtocolCounter\x12\x39\n\x0bmetric_tags\x18\x07 \x03(\x0b\x32$.otg.PatternFlowGreProtocolMetricTag\x1aV\n\x06\x43hoice\"L\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\t\n\x05value\x10\x02\x12\n\n\x06values\x10\x03\x12\r\n\tincrement\x10\x04\x12\r\n\tdecrement\x10\x05\x42\t\n\x07_choiceB\x08\n\x06_value\"\xca\x02\n\x16PatternFlowGreChecksum\x12<\n\x06\x63hoice\x18\x01 \x01(\x0e\x32\'.otg.PatternFlowGreChecksum.Choice.EnumH\x00\x88\x01\x01\x12\x42\n\tgenerated\x18\x02 \x01(\x0e\x32*.otg.PatternFlowGreChecksum.Generated.EnumH\x01\x88\x01\x01\x12\x13\n\x06\x63ustom\x18\x03 \x01(\rH\x02\x88\x01\x01\x1a<\n\x06\x43hoice\"2\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\r\n\tgenerated\x10\x01\x12\n\n\x06\x63ustom\x10\x02\x1a\x37\n\tGenerated\"*\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\x08\n\x04good\x10\x01\x12\x07\n\x03\x62\x61\x64\x10\x02\x42\t\n\x07_choiceB\x0c\n\n_generatedB\t\n\x07_custom\"x\n\x1ePatternFlowGreReserved1Counter\x12\x12\n\x05start\x18\x01 \x01(\rH\x00\x88\x01\x01\x12\x11\n\x04step\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x12\n\x05\x63ount\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x08\n\x06_startB\x07\n\x05_stepB\x08\n\x06_count\"~\n PatternFlowGreReserved1MetricTag\x12\x11\n\x04name\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x13\n\x06offset\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x13\n\x06length\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x07\n\x05_nameB\t\n\x07_offsetB\t\n\x07_length\"\x95\x03\n\x17PatternFlowGreReserved1\x12=\n\x06\x63hoice\x18\x01 \x01(\x0e\x32(.otg.PatternFlowGreReserved1.Choice.EnumH\x00\x88\x01\x01\x12\x12\n\x05value\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x0e\n\x06values\x18\x03 \x03(\r\x12\x36\n\tincrement\x18\x05 \x01(\x0b\x32#.otg.PatternFlowGreReserved1Counter\x12\x36\n\tdecrement\x18\x06 \x01(\x0b\x32#.otg.PatternFlowGreReserved1Counter\x12:\n\x0bmetric_tags\x18\x07 \x03(\x0b\x32%.otg.PatternFlowGreReserved1MetricTag\x1aV\n\x06\x43hoice\"L\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\t\n\x05value\x10\x02\x12\n\n\x06values\x10\x03\x12\r\n\tincrement\x10\x04\x12\r\n\tdecrement\x10\x05\x42\t\n\x07_choiceB\x08\n\x06_value\"x\n\x1ePatternFlowGtpv1VersionCounter\x12\x12\n\x05start\x18\x01 \x01(\rH\x00\x88\x01\x01\x12\x11\n\x04step\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x12\n\x05\x63ount\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x08\n\x06_startB\x07\n\x05_stepB\x08\n\x06_count\"~\n PatternFlowGtpv1VersionMetricTag\x12\x11\n\x04name\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x13\n\x06offset\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x13\n\x06length\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x07\n\x05_nameB\t\n\x07_offsetB\t\n\x07_length\"\x95\x03\n\x17PatternFlowGtpv1Version\x12=\n\x06\x63hoice\x18\x01 \x01(\x0e\x32(.otg.PatternFlowGtpv1Version.Choice.EnumH\x00\x88\x01\x01\x12\x12\n\x05value\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x0e\n\x06values\x18\x03 \x03(\r\x12\x36\n\tincrement\x18\x05 \x01(\x0b\x32#.otg.PatternFlowGtpv1VersionCounter\x12\x36\n\tdecrement\x18\x06 \x01(\x0b\x32#.otg.PatternFlowGtpv1VersionCounter\x12:\n\x0bmetric_tags\x18\x07 \x03(\x0b\x32%.otg.PatternFlowGtpv1VersionMetricTag\x1aV\n\x06\x43hoice\"L\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\t\n\x05value\x10\x02\x12\n\n\x06values\x10\x03\x12\r\n\tincrement\x10\x04\x12\r\n\tdecrement\x10\x05\x42\t\n\x07_choiceB\x08\n\x06_value\"}\n#PatternFlowGtpv1ProtocolTypeCounter\x12\x12\n\x05start\x18\x01 \x01(\rH\x00\x88\x01\x01\x12\x11\n\x04step\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x12\n\x05\x63ount\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x08\n\x06_startB\x07\n\x05_stepB\x08\n\x06_count\"\x83\x01\n%PatternFlowGtpv1ProtocolTypeMetricTag\x12\x11\n\x04name\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x13\n\x06offset\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x13\n\x06length\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x07\n\x05_nameB\t\n\x07_offsetB\t\n\x07_length\"\xae\x03\n\x1cPatternFlowGtpv1ProtocolType\x12\x42\n\x06\x63hoice\x18\x01 \x01(\x0e\x32-.otg.PatternFlowGtpv1ProtocolType.Choice.EnumH\x00\x88\x01\x01\x12\x12\n\x05value\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x0e\n\x06values\x18\x03 \x03(\r\x12;\n\tincrement\x18\x05 \x01(\x0b\x32(.otg.PatternFlowGtpv1ProtocolTypeCounter\x12;\n\tdecrement\x18\x06 \x01(\x0b\x32(.otg.PatternFlowGtpv1ProtocolTypeCounter\x12?\n\x0bmetric_tags\x18\x07 \x03(\x0b\x32*.otg.PatternFlowGtpv1ProtocolTypeMetricTag\x1aV\n\x06\x43hoice\"L\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\t\n\x05value\x10\x02\x12\n\n\x06values\x10\x03\x12\r\n\tincrement\x10\x04\x12\r\n\tdecrement\x10\x05\x42\t\n\x07_choiceB\x08\n\x06_value\"y\n\x1fPatternFlowGtpv1ReservedCounter\x12\x12\n\x05start\x18\x01 \x01(\rH\x00\x88\x01\x01\x12\x11\n\x04step\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x12\n\x05\x63ount\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x08\n\x06_startB\x07\n\x05_stepB\x08\n\x06_count\"\x7f\n!PatternFlowGtpv1ReservedMetricTag\x12\x11\n\x04name\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x13\n\x06offset\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x13\n\x06length\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x07\n\x05_nameB\t\n\x07_offsetB\t\n\x07_length\"\x9a\x03\n\x18PatternFlowGtpv1Reserved\x12>\n\x06\x63hoice\x18\x01 \x01(\x0e\x32).otg.PatternFlowGtpv1Reserved.Choice.EnumH\x00\x88\x01\x01\x12\x12\n\x05value\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x0e\n\x06values\x18\x03 \x03(\r\x12\x37\n\tincrement\x18\x05 \x01(\x0b\x32$.otg.PatternFlowGtpv1ReservedCounter\x12\x37\n\tdecrement\x18\x06 \x01(\x0b\x32$.otg.PatternFlowGtpv1ReservedCounter\x12;\n\x0bmetric_tags\x18\x07 \x03(\x0b\x32&.otg.PatternFlowGtpv1ReservedMetricTag\x1aV\n\x06\x43hoice\"L\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\t\n\x05value\x10\x02\x12\n\n\x06values\x10\x03\x12\r\n\tincrement\x10\x04\x12\r\n\tdecrement\x10\x05\x42\t\n\x07_choiceB\x08\n\x06_value\"v\n\x1cPatternFlowGtpv1EFlagCounter\x12\x12\n\x05start\x18\x01 \x01(\rH\x00\x88\x01\x01\x12\x11\n\x04step\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x12\n\x05\x63ount\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x08\n\x06_startB\x07\n\x05_stepB\x08\n\x06_count\"|\n\x1ePatternFlowGtpv1EFlagMetricTag\x12\x11\n\x04name\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x13\n\x06offset\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x13\n\x06length\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x07\n\x05_nameB\t\n\x07_offsetB\t\n\x07_length\"\x8b\x03\n\x15PatternFlowGtpv1EFlag\x12;\n\x06\x63hoice\x18\x01 \x01(\x0e\x32&.otg.PatternFlowGtpv1EFlag.Choice.EnumH\x00\x88\x01\x01\x12\x12\n\x05value\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x0e\n\x06values\x18\x03 \x03(\r\x12\x34\n\tincrement\x18\x05 \x01(\x0b\x32!.otg.PatternFlowGtpv1EFlagCounter\x12\x34\n\tdecrement\x18\x06 \x01(\x0b\x32!.otg.PatternFlowGtpv1EFlagCounter\x12\x38\n\x0bmetric_tags\x18\x07 \x03(\x0b\x32#.otg.PatternFlowGtpv1EFlagMetricTag\x1aV\n\x06\x43hoice\"L\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\t\n\x05value\x10\x02\x12\n\n\x06values\x10\x03\x12\r\n\tincrement\x10\x04\x12\r\n\tdecrement\x10\x05\x42\t\n\x07_choiceB\x08\n\x06_value\"v\n\x1cPatternFlowGtpv1SFlagCounter\x12\x12\n\x05start\x18\x01 \x01(\rH\x00\x88\x01\x01\x12\x11\n\x04step\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x12\n\x05\x63ount\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x08\n\x06_startB\x07\n\x05_stepB\x08\n\x06_count\"|\n\x1ePatternFlowGtpv1SFlagMetricTag\x12\x11\n\x04name\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x13\n\x06offset\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x13\n\x06length\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x07\n\x05_nameB\t\n\x07_offsetB\t\n\x07_length\"\x8b\x03\n\x15PatternFlowGtpv1SFlag\x12;\n\x06\x63hoice\x18\x01 \x01(\x0e\x32&.otg.PatternFlowGtpv1SFlag.Choice.EnumH\x00\x88\x01\x01\x12\x12\n\x05value\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x0e\n\x06values\x18\x03 \x03(\r\x12\x34\n\tincrement\x18\x05 \x01(\x0b\x32!.otg.PatternFlowGtpv1SFlagCounter\x12\x34\n\tdecrement\x18\x06 \x01(\x0b\x32!.otg.PatternFlowGtpv1SFlagCounter\x12\x38\n\x0bmetric_tags\x18\x07 \x03(\x0b\x32#.otg.PatternFlowGtpv1SFlagMetricTag\x1aV\n\x06\x43hoice\"L\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\t\n\x05value\x10\x02\x12\n\n\x06values\x10\x03\x12\r\n\tincrement\x10\x04\x12\r\n\tdecrement\x10\x05\x42\t\n\x07_choiceB\x08\n\x06_value\"w\n\x1dPatternFlowGtpv1PnFlagCounter\x12\x12\n\x05start\x18\x01 \x01(\rH\x00\x88\x01\x01\x12\x11\n\x04step\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x12\n\x05\x63ount\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x08\n\x06_startB\x07\n\x05_stepB\x08\n\x06_count\"}\n\x1fPatternFlowGtpv1PnFlagMetricTag\x12\x11\n\x04name\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x13\n\x06offset\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x13\n\x06length\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x07\n\x05_nameB\t\n\x07_offsetB\t\n\x07_length\"\x90\x03\n\x16PatternFlowGtpv1PnFlag\x12<\n\x06\x63hoice\x18\x01 \x01(\x0e\x32\'.otg.PatternFlowGtpv1PnFlag.Choice.EnumH\x00\x88\x01\x01\x12\x12\n\x05value\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x0e\n\x06values\x18\x03 \x03(\r\x12\x35\n\tincrement\x18\x05 \x01(\x0b\x32\".otg.PatternFlowGtpv1PnFlagCounter\x12\x35\n\tdecrement\x18\x06 \x01(\x0b\x32\".otg.PatternFlowGtpv1PnFlagCounter\x12\x39\n\x0bmetric_tags\x18\x07 \x03(\x0b\x32$.otg.PatternFlowGtpv1PnFlagMetricTag\x1aV\n\x06\x43hoice\"L\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\t\n\x05value\x10\x02\x12\n\n\x06values\x10\x03\x12\r\n\tincrement\x10\x04\x12\r\n\tdecrement\x10\x05\x42\t\n\x07_choiceB\x08\n\x06_value\"|\n\"PatternFlowGtpv1MessageTypeCounter\x12\x12\n\x05start\x18\x01 \x01(\rH\x00\x88\x01\x01\x12\x11\n\x04step\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x12\n\x05\x63ount\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x08\n\x06_startB\x07\n\x05_stepB\x08\n\x06_count\"\x82\x01\n$PatternFlowGtpv1MessageTypeMetricTag\x12\x11\n\x04name\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x13\n\x06offset\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x13\n\x06length\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x07\n\x05_nameB\t\n\x07_offsetB\t\n\x07_length\"\xa9\x03\n\x1bPatternFlowGtpv1MessageType\x12\x41\n\x06\x63hoice\x18\x01 \x01(\x0e\x32,.otg.PatternFlowGtpv1MessageType.Choice.EnumH\x00\x88\x01\x01\x12\x12\n\x05value\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x0e\n\x06values\x18\x03 \x03(\r\x12:\n\tincrement\x18\x05 \x01(\x0b\x32\'.otg.PatternFlowGtpv1MessageTypeCounter\x12:\n\tdecrement\x18\x06 \x01(\x0b\x32\'.otg.PatternFlowGtpv1MessageTypeCounter\x12>\n\x0bmetric_tags\x18\x07 \x03(\x0b\x32).otg.PatternFlowGtpv1MessageTypeMetricTag\x1aV\n\x06\x43hoice\"L\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\t\n\x05value\x10\x02\x12\n\n\x06values\x10\x03\x12\r\n\tincrement\x10\x04\x12\r\n\tdecrement\x10\x05\x42\t\n\x07_choiceB\x08\n\x06_value\"~\n$PatternFlowGtpv1MessageLengthCounter\x12\x12\n\x05start\x18\x01 \x01(\rH\x00\x88\x01\x01\x12\x11\n\x04step\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x12\n\x05\x63ount\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x08\n\x06_startB\x07\n\x05_stepB\x08\n\x06_count\"\x84\x01\n&PatternFlowGtpv1MessageLengthMetricTag\x12\x11\n\x04name\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x13\n\x06offset\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x13\n\x06length\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x07\n\x05_nameB\t\n\x07_offsetB\t\n\x07_length\"\xb3\x03\n\x1dPatternFlowGtpv1MessageLength\x12\x43\n\x06\x63hoice\x18\x01 \x01(\x0e\x32..otg.PatternFlowGtpv1MessageLength.Choice.EnumH\x00\x88\x01\x01\x12\x12\n\x05value\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x0e\n\x06values\x18\x03 \x03(\r\x12<\n\tincrement\x18\x05 \x01(\x0b\x32).otg.PatternFlowGtpv1MessageLengthCounter\x12<\n\tdecrement\x18\x06 \x01(\x0b\x32).otg.PatternFlowGtpv1MessageLengthCounter\x12@\n\x0bmetric_tags\x18\x07 \x03(\x0b\x32+.otg.PatternFlowGtpv1MessageLengthMetricTag\x1aV\n\x06\x43hoice\"L\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\t\n\x05value\x10\x02\x12\n\n\x06values\x10\x03\x12\r\n\tincrement\x10\x04\x12\r\n\tdecrement\x10\x05\x42\t\n\x07_choiceB\x08\n\x06_value\"u\n\x1bPatternFlowGtpv1TeidCounter\x12\x12\n\x05start\x18\x01 \x01(\rH\x00\x88\x01\x01\x12\x11\n\x04step\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x12\n\x05\x63ount\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x08\n\x06_startB\x07\n\x05_stepB\x08\n\x06_count\"{\n\x1dPatternFlowGtpv1TeidMetricTag\x12\x11\n\x04name\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x13\n\x06offset\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x13\n\x06length\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x07\n\x05_nameB\t\n\x07_offsetB\t\n\x07_length\"\x86\x03\n\x14PatternFlowGtpv1Teid\x12:\n\x06\x63hoice\x18\x01 \x01(\x0e\x32%.otg.PatternFlowGtpv1Teid.Choice.EnumH\x00\x88\x01\x01\x12\x12\n\x05value\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x0e\n\x06values\x18\x03 \x03(\r\x12\x33\n\tincrement\x18\x05 \x01(\x0b\x32 .otg.PatternFlowGtpv1TeidCounter\x12\x33\n\tdecrement\x18\x06 \x01(\x0b\x32 .otg.PatternFlowGtpv1TeidCounter\x12\x37\n\x0bmetric_tags\x18\x07 \x03(\x0b\x32\".otg.PatternFlowGtpv1TeidMetricTag\x1aV\n\x06\x43hoice\"L\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\t\n\x05value\x10\x02\x12\n\n\x06values\x10\x03\x12\r\n\tincrement\x10\x04\x12\r\n\tdecrement\x10\x05\x42\t\n\x07_choiceB\x08\n\x06_value\"~\n$PatternFlowGtpv1SquenceNumberCounter\x12\x12\n\x05start\x18\x01 \x01(\rH\x00\x88\x01\x01\x12\x11\n\x04step\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x12\n\x05\x63ount\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x08\n\x06_startB\x07\n\x05_stepB\x08\n\x06_count\"\x84\x01\n&PatternFlowGtpv1SquenceNumberMetricTag\x12\x11\n\x04name\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x13\n\x06offset\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x13\n\x06length\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x07\n\x05_nameB\t\n\x07_offsetB\t\n\x07_length\"\xb3\x03\n\x1dPatternFlowGtpv1SquenceNumber\x12\x43\n\x06\x63hoice\x18\x01 \x01(\x0e\x32..otg.PatternFlowGtpv1SquenceNumber.Choice.EnumH\x00\x88\x01\x01\x12\x12\n\x05value\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x0e\n\x06values\x18\x03 \x03(\r\x12<\n\tincrement\x18\x05 \x01(\x0b\x32).otg.PatternFlowGtpv1SquenceNumberCounter\x12<\n\tdecrement\x18\x06 \x01(\x0b\x32).otg.PatternFlowGtpv1SquenceNumberCounter\x12@\n\x0bmetric_tags\x18\x07 \x03(\x0b\x32+.otg.PatternFlowGtpv1SquenceNumberMetricTag\x1aV\n\x06\x43hoice\"L\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\t\n\x05value\x10\x02\x12\n\n\x06values\x10\x03\x12\r\n\tincrement\x10\x04\x12\r\n\tdecrement\x10\x05\x42\t\n\x07_choiceB\x08\n\x06_value\"{\n!PatternFlowGtpv1NPduNumberCounter\x12\x12\n\x05start\x18\x01 \x01(\rH\x00\x88\x01\x01\x12\x11\n\x04step\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x12\n\x05\x63ount\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x08\n\x06_startB\x07\n\x05_stepB\x08\n\x06_count\"\x81\x01\n#PatternFlowGtpv1NPduNumberMetricTag\x12\x11\n\x04name\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x13\n\x06offset\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x13\n\x06length\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x07\n\x05_nameB\t\n\x07_offsetB\t\n\x07_length\"\xa4\x03\n\x1aPatternFlowGtpv1NPduNumber\x12@\n\x06\x63hoice\x18\x01 \x01(\x0e\x32+.otg.PatternFlowGtpv1NPduNumber.Choice.EnumH\x00\x88\x01\x01\x12\x12\n\x05value\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x0e\n\x06values\x18\x03 \x03(\r\x12\x39\n\tincrement\x18\x05 \x01(\x0b\x32&.otg.PatternFlowGtpv1NPduNumberCounter\x12\x39\n\tdecrement\x18\x06 \x01(\x0b\x32&.otg.PatternFlowGtpv1NPduNumberCounter\x12=\n\x0bmetric_tags\x18\x07 \x03(\x0b\x32(.otg.PatternFlowGtpv1NPduNumberMetricTag\x1aV\n\x06\x43hoice\"L\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\t\n\x05value\x10\x02\x12\n\n\x06values\x10\x03\x12\r\n\tincrement\x10\x04\x12\r\n\tdecrement\x10\x05\x42\t\n\x07_choiceB\x08\n\x06_value\"\x88\x01\n.PatternFlowGtpv1NextExtensionHeaderTypeCounter\x12\x12\n\x05start\x18\x01 \x01(\rH\x00\x88\x01\x01\x12\x11\n\x04step\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x12\n\x05\x63ount\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x08\n\x06_startB\x07\n\x05_stepB\x08\n\x06_count\"\x8e\x01\n0PatternFlowGtpv1NextExtensionHeaderTypeMetricTag\x12\x11\n\x04name\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x13\n\x06offset\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x13\n\x06length\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x07\n\x05_nameB\t\n\x07_offsetB\t\n\x07_length\"\xe5\x03\n\'PatternFlowGtpv1NextExtensionHeaderType\x12M\n\x06\x63hoice\x18\x01 \x01(\x0e\x32\x38.otg.PatternFlowGtpv1NextExtensionHeaderType.Choice.EnumH\x00\x88\x01\x01\x12\x12\n\x05value\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x0e\n\x06values\x18\x03 \x03(\r\x12\x46\n\tincrement\x18\x05 \x01(\x0b\x32\x33.otg.PatternFlowGtpv1NextExtensionHeaderTypeCounter\x12\x46\n\tdecrement\x18\x06 \x01(\x0b\x32\x33.otg.PatternFlowGtpv1NextExtensionHeaderTypeCounter\x12J\n\x0bmetric_tags\x18\x07 \x03(\x0b\x32\x35.otg.PatternFlowGtpv1NextExtensionHeaderTypeMetricTag\x1aV\n\x06\x43hoice\"L\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\t\n\x05value\x10\x02\x12\n\n\x06values\x10\x03\x12\r\n\tincrement\x10\x04\x12\r\n\tdecrement\x10\x05\x42\t\n\x07_choiceB\x08\n\x06_value\"\x87\x01\n-PatternFlowGtpExtensionExtensionLengthCounter\x12\x12\n\x05start\x18\x01 \x01(\rH\x00\x88\x01\x01\x12\x11\n\x04step\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x12\n\x05\x63ount\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x08\n\x06_startB\x07\n\x05_stepB\x08\n\x06_count\"\x8d\x01\n/PatternFlowGtpExtensionExtensionLengthMetricTag\x12\x11\n\x04name\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x13\n\x06offset\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x13\n\x06length\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x07\n\x05_nameB\t\n\x07_offsetB\t\n\x07_length\"\xe0\x03\n&PatternFlowGtpExtensionExtensionLength\x12L\n\x06\x63hoice\x18\x01 \x01(\x0e\x32\x37.otg.PatternFlowGtpExtensionExtensionLength.Choice.EnumH\x00\x88\x01\x01\x12\x12\n\x05value\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x0e\n\x06values\x18\x03 \x03(\r\x12\x45\n\tincrement\x18\x05 \x01(\x0b\x32\x32.otg.PatternFlowGtpExtensionExtensionLengthCounter\x12\x45\n\tdecrement\x18\x06 \x01(\x0b\x32\x32.otg.PatternFlowGtpExtensionExtensionLengthCounter\x12I\n\x0bmetric_tags\x18\x07 \x03(\x0b\x32\x34.otg.PatternFlowGtpExtensionExtensionLengthMetricTag\x1aV\n\x06\x43hoice\"L\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\t\n\x05value\x10\x02\x12\n\n\x06values\x10\x03\x12\r\n\tincrement\x10\x04\x12\r\n\tdecrement\x10\x05\x42\t\n\x07_choiceB\x08\n\x06_value\"\x80\x01\n&PatternFlowGtpExtensionContentsCounter\x12\x12\n\x05start\x18\x01 \x01(\x04H\x00\x88\x01\x01\x12\x11\n\x04step\x18\x02 \x01(\x04H\x01\x88\x01\x01\x12\x12\n\x05\x63ount\x18\x03 \x01(\x04H\x02\x88\x01\x01\x42\x08\n\x06_startB\x07\n\x05_stepB\x08\n\x06_count\"\x86\x01\n(PatternFlowGtpExtensionContentsMetricTag\x12\x11\n\x04name\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x13\n\x06offset\x18\x02 \x01(\x04H\x01\x88\x01\x01\x12\x13\n\x06length\x18\x03 \x01(\x04H\x02\x88\x01\x01\x42\x07\n\x05_nameB\t\n\x07_offsetB\t\n\x07_length\"\xbd\x03\n\x1fPatternFlowGtpExtensionContents\x12\x45\n\x06\x63hoice\x18\x01 \x01(\x0e\x32\x30.otg.PatternFlowGtpExtensionContents.Choice.EnumH\x00\x88\x01\x01\x12\x12\n\x05value\x18\x02 \x01(\x04H\x01\x88\x01\x01\x12\x0e\n\x06values\x18\x03 \x03(\x04\x12>\n\tincrement\x18\x05 \x01(\x0b\x32+.otg.PatternFlowGtpExtensionContentsCounter\x12>\n\tdecrement\x18\x06 \x01(\x0b\x32+.otg.PatternFlowGtpExtensionContentsCounter\x12\x42\n\x0bmetric_tags\x18\x07 \x03(\x0b\x32-.otg.PatternFlowGtpExtensionContentsMetricTag\x1aV\n\x06\x43hoice\"L\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\t\n\x05value\x10\x02\x12\n\n\x06values\x10\x03\x12\r\n\tincrement\x10\x04\x12\r\n\tdecrement\x10\x05\x42\t\n\x07_choiceB\x08\n\x06_value\"\x8b\x01\n1PatternFlowGtpExtensionNextExtensionHeaderCounter\x12\x12\n\x05start\x18\x01 \x01(\rH\x00\x88\x01\x01\x12\x11\n\x04step\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x12\n\x05\x63ount\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x08\n\x06_startB\x07\n\x05_stepB\x08\n\x06_count\"\x91\x01\n3PatternFlowGtpExtensionNextExtensionHeaderMetricTag\x12\x11\n\x04name\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x13\n\x06offset\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x13\n\x06length\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x07\n\x05_nameB\t\n\x07_offsetB\t\n\x07_length\"\xf4\x03\n*PatternFlowGtpExtensionNextExtensionHeader\x12P\n\x06\x63hoice\x18\x01 \x01(\x0e\x32;.otg.PatternFlowGtpExtensionNextExtensionHeader.Choice.EnumH\x00\x88\x01\x01\x12\x12\n\x05value\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x0e\n\x06values\x18\x03 \x03(\r\x12I\n\tincrement\x18\x05 \x01(\x0b\x32\x36.otg.PatternFlowGtpExtensionNextExtensionHeaderCounter\x12I\n\tdecrement\x18\x06 \x01(\x0b\x32\x36.otg.PatternFlowGtpExtensionNextExtensionHeaderCounter\x12M\n\x0bmetric_tags\x18\x07 \x03(\x0b\x32\x38.otg.PatternFlowGtpExtensionNextExtensionHeaderMetricTag\x1aV\n\x06\x43hoice\"L\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\t\n\x05value\x10\x02\x12\n\n\x06values\x10\x03\x12\r\n\tincrement\x10\x04\x12\r\n\tdecrement\x10\x05\x42\t\n\x07_choiceB\x08\n\x06_value\"x\n\x1ePatternFlowGtpv2VersionCounter\x12\x12\n\x05start\x18\x01 \x01(\rH\x00\x88\x01\x01\x12\x11\n\x04step\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x12\n\x05\x63ount\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x08\n\x06_startB\x07\n\x05_stepB\x08\n\x06_count\"~\n PatternFlowGtpv2VersionMetricTag\x12\x11\n\x04name\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x13\n\x06offset\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x13\n\x06length\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x07\n\x05_nameB\t\n\x07_offsetB\t\n\x07_length\"\x95\x03\n\x17PatternFlowGtpv2Version\x12=\n\x06\x63hoice\x18\x01 \x01(\x0e\x32(.otg.PatternFlowGtpv2Version.Choice.EnumH\x00\x88\x01\x01\x12\x12\n\x05value\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x0e\n\x06values\x18\x03 \x03(\r\x12\x36\n\tincrement\x18\x05 \x01(\x0b\x32#.otg.PatternFlowGtpv2VersionCounter\x12\x36\n\tdecrement\x18\x06 \x01(\x0b\x32#.otg.PatternFlowGtpv2VersionCounter\x12:\n\x0bmetric_tags\x18\x07 \x03(\x0b\x32%.otg.PatternFlowGtpv2VersionMetricTag\x1aV\n\x06\x43hoice\"L\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\t\n\x05value\x10\x02\x12\n\n\x06values\x10\x03\x12\r\n\tincrement\x10\x04\x12\r\n\tdecrement\x10\x05\x42\t\n\x07_choiceB\x08\n\x06_value\"\x81\x01\n\'PatternFlowGtpv2PiggybackingFlagCounter\x12\x12\n\x05start\x18\x01 \x01(\rH\x00\x88\x01\x01\x12\x11\n\x04step\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x12\n\x05\x63ount\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x08\n\x06_startB\x07\n\x05_stepB\x08\n\x06_count\"\x87\x01\n)PatternFlowGtpv2PiggybackingFlagMetricTag\x12\x11\n\x04name\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x13\n\x06offset\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x13\n\x06length\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x07\n\x05_nameB\t\n\x07_offsetB\t\n\x07_length\"\xc2\x03\n PatternFlowGtpv2PiggybackingFlag\x12\x46\n\x06\x63hoice\x18\x01 \x01(\x0e\x32\x31.otg.PatternFlowGtpv2PiggybackingFlag.Choice.EnumH\x00\x88\x01\x01\x12\x12\n\x05value\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x0e\n\x06values\x18\x03 \x03(\r\x12?\n\tincrement\x18\x05 \x01(\x0b\x32,.otg.PatternFlowGtpv2PiggybackingFlagCounter\x12?\n\tdecrement\x18\x06 \x01(\x0b\x32,.otg.PatternFlowGtpv2PiggybackingFlagCounter\x12\x43\n\x0bmetric_tags\x18\x07 \x03(\x0b\x32..otg.PatternFlowGtpv2PiggybackingFlagMetricTag\x1aV\n\x06\x43hoice\"L\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\t\n\x05value\x10\x02\x12\n\n\x06values\x10\x03\x12\r\n\tincrement\x10\x04\x12\r\n\tdecrement\x10\x05\x42\t\n\x07_choiceB\x08\n\x06_value\"y\n\x1fPatternFlowGtpv2TeidFlagCounter\x12\x12\n\x05start\x18\x01 \x01(\rH\x00\x88\x01\x01\x12\x11\n\x04step\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x12\n\x05\x63ount\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x08\n\x06_startB\x07\n\x05_stepB\x08\n\x06_count\"\x7f\n!PatternFlowGtpv2TeidFlagMetricTag\x12\x11\n\x04name\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x13\n\x06offset\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x13\n\x06length\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x07\n\x05_nameB\t\n\x07_offsetB\t\n\x07_length\"\x9a\x03\n\x18PatternFlowGtpv2TeidFlag\x12>\n\x06\x63hoice\x18\x01 \x01(\x0e\x32).otg.PatternFlowGtpv2TeidFlag.Choice.EnumH\x00\x88\x01\x01\x12\x12\n\x05value\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x0e\n\x06values\x18\x03 \x03(\r\x12\x37\n\tincrement\x18\x05 \x01(\x0b\x32$.otg.PatternFlowGtpv2TeidFlagCounter\x12\x37\n\tdecrement\x18\x06 \x01(\x0b\x32$.otg.PatternFlowGtpv2TeidFlagCounter\x12;\n\x0bmetric_tags\x18\x07 \x03(\x0b\x32&.otg.PatternFlowGtpv2TeidFlagMetricTag\x1aV\n\x06\x43hoice\"L\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\t\n\x05value\x10\x02\x12\n\n\x06values\x10\x03\x12\r\n\tincrement\x10\x04\x12\r\n\tdecrement\x10\x05\x42\t\n\x07_choiceB\x08\n\x06_value\"w\n\x1dPatternFlowGtpv2Spare1Counter\x12\x12\n\x05start\x18\x01 \x01(\rH\x00\x88\x01\x01\x12\x11\n\x04step\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x12\n\x05\x63ount\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x08\n\x06_startB\x07\n\x05_stepB\x08\n\x06_count\"}\n\x1fPatternFlowGtpv2Spare1MetricTag\x12\x11\n\x04name\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x13\n\x06offset\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x13\n\x06length\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x07\n\x05_nameB\t\n\x07_offsetB\t\n\x07_length\"\x90\x03\n\x16PatternFlowGtpv2Spare1\x12<\n\x06\x63hoice\x18\x01 \x01(\x0e\x32\'.otg.PatternFlowGtpv2Spare1.Choice.EnumH\x00\x88\x01\x01\x12\x12\n\x05value\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x0e\n\x06values\x18\x03 \x03(\r\x12\x35\n\tincrement\x18\x05 \x01(\x0b\x32\".otg.PatternFlowGtpv2Spare1Counter\x12\x35\n\tdecrement\x18\x06 \x01(\x0b\x32\".otg.PatternFlowGtpv2Spare1Counter\x12\x39\n\x0bmetric_tags\x18\x07 \x03(\x0b\x32$.otg.PatternFlowGtpv2Spare1MetricTag\x1aV\n\x06\x43hoice\"L\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\t\n\x05value\x10\x02\x12\n\n\x06values\x10\x03\x12\r\n\tincrement\x10\x04\x12\r\n\tdecrement\x10\x05\x42\t\n\x07_choiceB\x08\n\x06_value\"|\n\"PatternFlowGtpv2MessageTypeCounter\x12\x12\n\x05start\x18\x01 \x01(\rH\x00\x88\x01\x01\x12\x11\n\x04step\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x12\n\x05\x63ount\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x08\n\x06_startB\x07\n\x05_stepB\x08\n\x06_count\"\x82\x01\n$PatternFlowGtpv2MessageTypeMetricTag\x12\x11\n\x04name\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x13\n\x06offset\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x13\n\x06length\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x07\n\x05_nameB\t\n\x07_offsetB\t\n\x07_length\"\xa9\x03\n\x1bPatternFlowGtpv2MessageType\x12\x41\n\x06\x63hoice\x18\x01 \x01(\x0e\x32,.otg.PatternFlowGtpv2MessageType.Choice.EnumH\x00\x88\x01\x01\x12\x12\n\x05value\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x0e\n\x06values\x18\x03 \x03(\r\x12:\n\tincrement\x18\x05 \x01(\x0b\x32\'.otg.PatternFlowGtpv2MessageTypeCounter\x12:\n\tdecrement\x18\x06 \x01(\x0b\x32\'.otg.PatternFlowGtpv2MessageTypeCounter\x12>\n\x0bmetric_tags\x18\x07 \x03(\x0b\x32).otg.PatternFlowGtpv2MessageTypeMetricTag\x1aV\n\x06\x43hoice\"L\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\t\n\x05value\x10\x02\x12\n\n\x06values\x10\x03\x12\r\n\tincrement\x10\x04\x12\r\n\tdecrement\x10\x05\x42\t\n\x07_choiceB\x08\n\x06_value\"~\n$PatternFlowGtpv2MessageLengthCounter\x12\x12\n\x05start\x18\x01 \x01(\rH\x00\x88\x01\x01\x12\x11\n\x04step\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x12\n\x05\x63ount\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x08\n\x06_startB\x07\n\x05_stepB\x08\n\x06_count\"\x84\x01\n&PatternFlowGtpv2MessageLengthMetricTag\x12\x11\n\x04name\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x13\n\x06offset\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x13\n\x06length\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x07\n\x05_nameB\t\n\x07_offsetB\t\n\x07_length\"\xb3\x03\n\x1dPatternFlowGtpv2MessageLength\x12\x43\n\x06\x63hoice\x18\x01 \x01(\x0e\x32..otg.PatternFlowGtpv2MessageLength.Choice.EnumH\x00\x88\x01\x01\x12\x12\n\x05value\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x0e\n\x06values\x18\x03 \x03(\r\x12<\n\tincrement\x18\x05 \x01(\x0b\x32).otg.PatternFlowGtpv2MessageLengthCounter\x12<\n\tdecrement\x18\x06 \x01(\x0b\x32).otg.PatternFlowGtpv2MessageLengthCounter\x12@\n\x0bmetric_tags\x18\x07 \x03(\x0b\x32+.otg.PatternFlowGtpv2MessageLengthMetricTag\x1aV\n\x06\x43hoice\"L\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\t\n\x05value\x10\x02\x12\n\n\x06values\x10\x03\x12\r\n\tincrement\x10\x04\x12\r\n\tdecrement\x10\x05\x42\t\n\x07_choiceB\x08\n\x06_value\"u\n\x1bPatternFlowGtpv2TeidCounter\x12\x12\n\x05start\x18\x01 \x01(\rH\x00\x88\x01\x01\x12\x11\n\x04step\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x12\n\x05\x63ount\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x08\n\x06_startB\x07\n\x05_stepB\x08\n\x06_count\"{\n\x1dPatternFlowGtpv2TeidMetricTag\x12\x11\n\x04name\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x13\n\x06offset\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x13\n\x06length\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x07\n\x05_nameB\t\n\x07_offsetB\t\n\x07_length\"\x86\x03\n\x14PatternFlowGtpv2Teid\x12:\n\x06\x63hoice\x18\x01 \x01(\x0e\x32%.otg.PatternFlowGtpv2Teid.Choice.EnumH\x00\x88\x01\x01\x12\x12\n\x05value\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x0e\n\x06values\x18\x03 \x03(\r\x12\x33\n\tincrement\x18\x05 \x01(\x0b\x32 .otg.PatternFlowGtpv2TeidCounter\x12\x33\n\tdecrement\x18\x06 \x01(\x0b\x32 .otg.PatternFlowGtpv2TeidCounter\x12\x37\n\x0bmetric_tags\x18\x07 \x03(\x0b\x32\".otg.PatternFlowGtpv2TeidMetricTag\x1aV\n\x06\x43hoice\"L\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\t\n\x05value\x10\x02\x12\n\n\x06values\x10\x03\x12\r\n\tincrement\x10\x04\x12\r\n\tdecrement\x10\x05\x42\t\n\x07_choiceB\x08\n\x06_value\"\x7f\n%PatternFlowGtpv2SequenceNumberCounter\x12\x12\n\x05start\x18\x01 \x01(\rH\x00\x88\x01\x01\x12\x11\n\x04step\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x12\n\x05\x63ount\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x08\n\x06_startB\x07\n\x05_stepB\x08\n\x06_count\"\x85\x01\n\'PatternFlowGtpv2SequenceNumberMetricTag\x12\x11\n\x04name\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x13\n\x06offset\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x13\n\x06length\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x07\n\x05_nameB\t\n\x07_offsetB\t\n\x07_length\"\xb8\x03\n\x1ePatternFlowGtpv2SequenceNumber\x12\x44\n\x06\x63hoice\x18\x01 \x01(\x0e\x32/.otg.PatternFlowGtpv2SequenceNumber.Choice.EnumH\x00\x88\x01\x01\x12\x12\n\x05value\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x0e\n\x06values\x18\x03 \x03(\r\x12=\n\tincrement\x18\x05 \x01(\x0b\x32*.otg.PatternFlowGtpv2SequenceNumberCounter\x12=\n\tdecrement\x18\x06 \x01(\x0b\x32*.otg.PatternFlowGtpv2SequenceNumberCounter\x12\x41\n\x0bmetric_tags\x18\x07 \x03(\x0b\x32,.otg.PatternFlowGtpv2SequenceNumberMetricTag\x1aV\n\x06\x43hoice\"L\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\t\n\x05value\x10\x02\x12\n\n\x06values\x10\x03\x12\r\n\tincrement\x10\x04\x12\r\n\tdecrement\x10\x05\x42\t\n\x07_choiceB\x08\n\x06_value\"w\n\x1dPatternFlowGtpv2Spare2Counter\x12\x12\n\x05start\x18\x01 \x01(\rH\x00\x88\x01\x01\x12\x11\n\x04step\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x12\n\x05\x63ount\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x08\n\x06_startB\x07\n\x05_stepB\x08\n\x06_count\"}\n\x1fPatternFlowGtpv2Spare2MetricTag\x12\x11\n\x04name\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x13\n\x06offset\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x13\n\x06length\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x07\n\x05_nameB\t\n\x07_offsetB\t\n\x07_length\"\x90\x03\n\x16PatternFlowGtpv2Spare2\x12<\n\x06\x63hoice\x18\x01 \x01(\x0e\x32\'.otg.PatternFlowGtpv2Spare2.Choice.EnumH\x00\x88\x01\x01\x12\x12\n\x05value\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x0e\n\x06values\x18\x03 \x03(\r\x12\x35\n\tincrement\x18\x05 \x01(\x0b\x32\".otg.PatternFlowGtpv2Spare2Counter\x12\x35\n\tdecrement\x18\x06 \x01(\x0b\x32\".otg.PatternFlowGtpv2Spare2Counter\x12\x39\n\x0bmetric_tags\x18\x07 \x03(\x0b\x32$.otg.PatternFlowGtpv2Spare2MetricTag\x1aV\n\x06\x43hoice\"L\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\t\n\x05value\x10\x02\x12\n\n\x06values\x10\x03\x12\r\n\tincrement\x10\x04\x12\r\n\tdecrement\x10\x05\x42\t\n\x07_choiceB\x08\n\x06_value\"{\n!PatternFlowArpHardwareTypeCounter\x12\x12\n\x05start\x18\x01 \x01(\rH\x00\x88\x01\x01\x12\x11\n\x04step\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x12\n\x05\x63ount\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x08\n\x06_startB\x07\n\x05_stepB\x08\n\x06_count\"\x81\x01\n#PatternFlowArpHardwareTypeMetricTag\x12\x11\n\x04name\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x13\n\x06offset\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x13\n\x06length\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x07\n\x05_nameB\t\n\x07_offsetB\t\n\x07_length\"\xa4\x03\n\x1aPatternFlowArpHardwareType\x12@\n\x06\x63hoice\x18\x01 \x01(\x0e\x32+.otg.PatternFlowArpHardwareType.Choice.EnumH\x00\x88\x01\x01\x12\x12\n\x05value\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x0e\n\x06values\x18\x03 \x03(\r\x12\x39\n\tincrement\x18\x05 \x01(\x0b\x32&.otg.PatternFlowArpHardwareTypeCounter\x12\x39\n\tdecrement\x18\x06 \x01(\x0b\x32&.otg.PatternFlowArpHardwareTypeCounter\x12=\n\x0bmetric_tags\x18\x07 \x03(\x0b\x32(.otg.PatternFlowArpHardwareTypeMetricTag\x1aV\n\x06\x43hoice\"L\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\t\n\x05value\x10\x02\x12\n\n\x06values\x10\x03\x12\r\n\tincrement\x10\x04\x12\r\n\tdecrement\x10\x05\x42\t\n\x07_choiceB\x08\n\x06_value\"{\n!PatternFlowArpProtocolTypeCounter\x12\x12\n\x05start\x18\x01 \x01(\rH\x00\x88\x01\x01\x12\x11\n\x04step\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x12\n\x05\x63ount\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x08\n\x06_startB\x07\n\x05_stepB\x08\n\x06_count\"\x81\x01\n#PatternFlowArpProtocolTypeMetricTag\x12\x11\n\x04name\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x13\n\x06offset\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x13\n\x06length\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x07\n\x05_nameB\t\n\x07_offsetB\t\n\x07_length\"\xa4\x03\n\x1aPatternFlowArpProtocolType\x12@\n\x06\x63hoice\x18\x01 \x01(\x0e\x32+.otg.PatternFlowArpProtocolType.Choice.EnumH\x00\x88\x01\x01\x12\x12\n\x05value\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x0e\n\x06values\x18\x03 \x03(\r\x12\x39\n\tincrement\x18\x05 \x01(\x0b\x32&.otg.PatternFlowArpProtocolTypeCounter\x12\x39\n\tdecrement\x18\x06 \x01(\x0b\x32&.otg.PatternFlowArpProtocolTypeCounter\x12=\n\x0bmetric_tags\x18\x07 \x03(\x0b\x32(.otg.PatternFlowArpProtocolTypeMetricTag\x1aV\n\x06\x43hoice\"L\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\t\n\x05value\x10\x02\x12\n\n\x06values\x10\x03\x12\r\n\tincrement\x10\x04\x12\r\n\tdecrement\x10\x05\x42\t\n\x07_choiceB\x08\n\x06_value\"}\n#PatternFlowArpHardwareLengthCounter\x12\x12\n\x05start\x18\x01 \x01(\rH\x00\x88\x01\x01\x12\x11\n\x04step\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x12\n\x05\x63ount\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x08\n\x06_startB\x07\n\x05_stepB\x08\n\x06_count\"\x83\x01\n%PatternFlowArpHardwareLengthMetricTag\x12\x11\n\x04name\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x13\n\x06offset\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x13\n\x06length\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x07\n\x05_nameB\t\n\x07_offsetB\t\n\x07_length\"\xae\x03\n\x1cPatternFlowArpHardwareLength\x12\x42\n\x06\x63hoice\x18\x01 \x01(\x0e\x32-.otg.PatternFlowArpHardwareLength.Choice.EnumH\x00\x88\x01\x01\x12\x12\n\x05value\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x0e\n\x06values\x18\x03 \x03(\r\x12;\n\tincrement\x18\x05 \x01(\x0b\x32(.otg.PatternFlowArpHardwareLengthCounter\x12;\n\tdecrement\x18\x06 \x01(\x0b\x32(.otg.PatternFlowArpHardwareLengthCounter\x12?\n\x0bmetric_tags\x18\x07 \x03(\x0b\x32*.otg.PatternFlowArpHardwareLengthMetricTag\x1aV\n\x06\x43hoice\"L\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\t\n\x05value\x10\x02\x12\n\n\x06values\x10\x03\x12\r\n\tincrement\x10\x04\x12\r\n\tdecrement\x10\x05\x42\t\n\x07_choiceB\x08\n\x06_value\"}\n#PatternFlowArpProtocolLengthCounter\x12\x12\n\x05start\x18\x01 \x01(\rH\x00\x88\x01\x01\x12\x11\n\x04step\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x12\n\x05\x63ount\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x08\n\x06_startB\x07\n\x05_stepB\x08\n\x06_count\"\x83\x01\n%PatternFlowArpProtocolLengthMetricTag\x12\x11\n\x04name\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x13\n\x06offset\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x13\n\x06length\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x07\n\x05_nameB\t\n\x07_offsetB\t\n\x07_length\"\xae\x03\n\x1cPatternFlowArpProtocolLength\x12\x42\n\x06\x63hoice\x18\x01 \x01(\x0e\x32-.otg.PatternFlowArpProtocolLength.Choice.EnumH\x00\x88\x01\x01\x12\x12\n\x05value\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x0e\n\x06values\x18\x03 \x03(\r\x12;\n\tincrement\x18\x05 \x01(\x0b\x32(.otg.PatternFlowArpProtocolLengthCounter\x12;\n\tdecrement\x18\x06 \x01(\x0b\x32(.otg.PatternFlowArpProtocolLengthCounter\x12?\n\x0bmetric_tags\x18\x07 \x03(\x0b\x32*.otg.PatternFlowArpProtocolLengthMetricTag\x1aV\n\x06\x43hoice\"L\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\t\n\x05value\x10\x02\x12\n\n\x06values\x10\x03\x12\r\n\tincrement\x10\x04\x12\r\n\tdecrement\x10\x05\x42\t\n\x07_choiceB\x08\n\x06_value\"x\n\x1ePatternFlowArpOperationCounter\x12\x12\n\x05start\x18\x01 \x01(\rH\x00\x88\x01\x01\x12\x11\n\x04step\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x12\n\x05\x63ount\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x08\n\x06_startB\x07\n\x05_stepB\x08\n\x06_count\"~\n PatternFlowArpOperationMetricTag\x12\x11\n\x04name\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x13\n\x06offset\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x13\n\x06length\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x07\n\x05_nameB\t\n\x07_offsetB\t\n\x07_length\"\x95\x03\n\x17PatternFlowArpOperation\x12=\n\x06\x63hoice\x18\x01 \x01(\x0e\x32(.otg.PatternFlowArpOperation.Choice.EnumH\x00\x88\x01\x01\x12\x12\n\x05value\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x0e\n\x06values\x18\x03 \x03(\r\x12\x36\n\tincrement\x18\x05 \x01(\x0b\x32#.otg.PatternFlowArpOperationCounter\x12\x36\n\tdecrement\x18\x06 \x01(\x0b\x32#.otg.PatternFlowArpOperationCounter\x12:\n\x0bmetric_tags\x18\x07 \x03(\x0b\x32%.otg.PatternFlowArpOperationMetricTag\x1aV\n\x06\x43hoice\"L\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\t\n\x05value\x10\x02\x12\n\n\x06values\x10\x03\x12\r\n\tincrement\x10\x04\x12\r\n\tdecrement\x10\x05\x42\t\n\x07_choiceB\x08\n\x06_value\"\x81\x01\n\'PatternFlowArpSenderHardwareAddrCounter\x12\x12\n\x05start\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x11\n\x04step\x18\x02 \x01(\tH\x01\x88\x01\x01\x12\x12\n\x05\x63ount\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x08\n\x06_startB\x07\n\x05_stepB\x08\n\x06_count\"\x87\x01\n)PatternFlowArpSenderHardwareAddrMetricTag\x12\x11\n\x04name\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x13\n\x06offset\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x13\n\x06length\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x07\n\x05_nameB\t\n\x07_offsetB\t\n\x07_length\"\xc2\x03\n PatternFlowArpSenderHardwareAddr\x12\x46\n\x06\x63hoice\x18\x01 \x01(\x0e\x32\x31.otg.PatternFlowArpSenderHardwareAddr.Choice.EnumH\x00\x88\x01\x01\x12\x12\n\x05value\x18\x02 \x01(\tH\x01\x88\x01\x01\x12\x0e\n\x06values\x18\x03 \x03(\t\x12?\n\tincrement\x18\x05 \x01(\x0b\x32,.otg.PatternFlowArpSenderHardwareAddrCounter\x12?\n\tdecrement\x18\x06 \x01(\x0b\x32,.otg.PatternFlowArpSenderHardwareAddrCounter\x12\x43\n\x0bmetric_tags\x18\x07 \x03(\x0b\x32..otg.PatternFlowArpSenderHardwareAddrMetricTag\x1aV\n\x06\x43hoice\"L\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\t\n\x05value\x10\x02\x12\n\n\x06values\x10\x03\x12\r\n\tincrement\x10\x04\x12\r\n\tdecrement\x10\x05\x42\t\n\x07_choiceB\x08\n\x06_value\"\x81\x01\n\'PatternFlowArpSenderProtocolAddrCounter\x12\x12\n\x05start\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x11\n\x04step\x18\x02 \x01(\tH\x01\x88\x01\x01\x12\x12\n\x05\x63ount\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x08\n\x06_startB\x07\n\x05_stepB\x08\n\x06_count\"\x87\x01\n)PatternFlowArpSenderProtocolAddrMetricTag\x12\x11\n\x04name\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x13\n\x06offset\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x13\n\x06length\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x07\n\x05_nameB\t\n\x07_offsetB\t\n\x07_length\"\xc2\x03\n PatternFlowArpSenderProtocolAddr\x12\x46\n\x06\x63hoice\x18\x01 \x01(\x0e\x32\x31.otg.PatternFlowArpSenderProtocolAddr.Choice.EnumH\x00\x88\x01\x01\x12\x12\n\x05value\x18\x02 \x01(\tH\x01\x88\x01\x01\x12\x0e\n\x06values\x18\x03 \x03(\t\x12?\n\tincrement\x18\x05 \x01(\x0b\x32,.otg.PatternFlowArpSenderProtocolAddrCounter\x12?\n\tdecrement\x18\x06 \x01(\x0b\x32,.otg.PatternFlowArpSenderProtocolAddrCounter\x12\x43\n\x0bmetric_tags\x18\x07 \x03(\x0b\x32..otg.PatternFlowArpSenderProtocolAddrMetricTag\x1aV\n\x06\x43hoice\"L\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\t\n\x05value\x10\x02\x12\n\n\x06values\x10\x03\x12\r\n\tincrement\x10\x04\x12\r\n\tdecrement\x10\x05\x42\t\n\x07_choiceB\x08\n\x06_value\"\x81\x01\n\'PatternFlowArpTargetHardwareAddrCounter\x12\x12\n\x05start\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x11\n\x04step\x18\x02 \x01(\tH\x01\x88\x01\x01\x12\x12\n\x05\x63ount\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x08\n\x06_startB\x07\n\x05_stepB\x08\n\x06_count\"\x87\x01\n)PatternFlowArpTargetHardwareAddrMetricTag\x12\x11\n\x04name\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x13\n\x06offset\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x13\n\x06length\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x07\n\x05_nameB\t\n\x07_offsetB\t\n\x07_length\"\xc2\x03\n PatternFlowArpTargetHardwareAddr\x12\x46\n\x06\x63hoice\x18\x01 \x01(\x0e\x32\x31.otg.PatternFlowArpTargetHardwareAddr.Choice.EnumH\x00\x88\x01\x01\x12\x12\n\x05value\x18\x02 \x01(\tH\x01\x88\x01\x01\x12\x0e\n\x06values\x18\x03 \x03(\t\x12?\n\tincrement\x18\x05 \x01(\x0b\x32,.otg.PatternFlowArpTargetHardwareAddrCounter\x12?\n\tdecrement\x18\x06 \x01(\x0b\x32,.otg.PatternFlowArpTargetHardwareAddrCounter\x12\x43\n\x0bmetric_tags\x18\x07 \x03(\x0b\x32..otg.PatternFlowArpTargetHardwareAddrMetricTag\x1aV\n\x06\x43hoice\"L\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\t\n\x05value\x10\x02\x12\n\n\x06values\x10\x03\x12\r\n\tincrement\x10\x04\x12\r\n\tdecrement\x10\x05\x42\t\n\x07_choiceB\x08\n\x06_value\"\x81\x01\n\'PatternFlowArpTargetProtocolAddrCounter\x12\x12\n\x05start\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x11\n\x04step\x18\x02 \x01(\tH\x01\x88\x01\x01\x12\x12\n\x05\x63ount\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x08\n\x06_startB\x07\n\x05_stepB\x08\n\x06_count\"\x87\x01\n)PatternFlowArpTargetProtocolAddrMetricTag\x12\x11\n\x04name\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x13\n\x06offset\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x13\n\x06length\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x07\n\x05_nameB\t\n\x07_offsetB\t\n\x07_length\"\xc2\x03\n PatternFlowArpTargetProtocolAddr\x12\x46\n\x06\x63hoice\x18\x01 \x01(\x0e\x32\x31.otg.PatternFlowArpTargetProtocolAddr.Choice.EnumH\x00\x88\x01\x01\x12\x12\n\x05value\x18\x02 \x01(\tH\x01\x88\x01\x01\x12\x0e\n\x06values\x18\x03 \x03(\t\x12?\n\tincrement\x18\x05 \x01(\x0b\x32,.otg.PatternFlowArpTargetProtocolAddrCounter\x12?\n\tdecrement\x18\x06 \x01(\x0b\x32,.otg.PatternFlowArpTargetProtocolAddrCounter\x12\x43\n\x0bmetric_tags\x18\x07 \x03(\x0b\x32..otg.PatternFlowArpTargetProtocolAddrMetricTag\x1aV\n\x06\x43hoice\"L\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\t\n\x05value\x10\x02\x12\n\n\x06values\x10\x03\x12\r\n\tincrement\x10\x04\x12\r\n\tdecrement\x10\x05\x42\t\n\x07_choiceB\x08\n\x06_value\"x\n\x1ePatternFlowIcmpEchoTypeCounter\x12\x12\n\x05start\x18\x01 \x01(\rH\x00\x88\x01\x01\x12\x11\n\x04step\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x12\n\x05\x63ount\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x08\n\x06_startB\x07\n\x05_stepB\x08\n\x06_count\"~\n PatternFlowIcmpEchoTypeMetricTag\x12\x11\n\x04name\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x13\n\x06offset\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x13\n\x06length\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x07\n\x05_nameB\t\n\x07_offsetB\t\n\x07_length\"\x95\x03\n\x17PatternFlowIcmpEchoType\x12=\n\x06\x63hoice\x18\x01 \x01(\x0e\x32(.otg.PatternFlowIcmpEchoType.Choice.EnumH\x00\x88\x01\x01\x12\x12\n\x05value\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x0e\n\x06values\x18\x03 \x03(\r\x12\x36\n\tincrement\x18\x05 \x01(\x0b\x32#.otg.PatternFlowIcmpEchoTypeCounter\x12\x36\n\tdecrement\x18\x06 \x01(\x0b\x32#.otg.PatternFlowIcmpEchoTypeCounter\x12:\n\x0bmetric_tags\x18\x07 \x03(\x0b\x32%.otg.PatternFlowIcmpEchoTypeMetricTag\x1aV\n\x06\x43hoice\"L\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\t\n\x05value\x10\x02\x12\n\n\x06values\x10\x03\x12\r\n\tincrement\x10\x04\x12\r\n\tdecrement\x10\x05\x42\t\n\x07_choiceB\x08\n\x06_value\"x\n\x1ePatternFlowIcmpEchoCodeCounter\x12\x12\n\x05start\x18\x01 \x01(\rH\x00\x88\x01\x01\x12\x11\n\x04step\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x12\n\x05\x63ount\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x08\n\x06_startB\x07\n\x05_stepB\x08\n\x06_count\"~\n PatternFlowIcmpEchoCodeMetricTag\x12\x11\n\x04name\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x13\n\x06offset\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x13\n\x06length\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x07\n\x05_nameB\t\n\x07_offsetB\t\n\x07_length\"\x95\x03\n\x17PatternFlowIcmpEchoCode\x12=\n\x06\x63hoice\x18\x01 \x01(\x0e\x32(.otg.PatternFlowIcmpEchoCode.Choice.EnumH\x00\x88\x01\x01\x12\x12\n\x05value\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x0e\n\x06values\x18\x03 \x03(\r\x12\x36\n\tincrement\x18\x05 \x01(\x0b\x32#.otg.PatternFlowIcmpEchoCodeCounter\x12\x36\n\tdecrement\x18\x06 \x01(\x0b\x32#.otg.PatternFlowIcmpEchoCodeCounter\x12:\n\x0bmetric_tags\x18\x07 \x03(\x0b\x32%.otg.PatternFlowIcmpEchoCodeMetricTag\x1aV\n\x06\x43hoice\"L\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\t\n\x05value\x10\x02\x12\n\n\x06values\x10\x03\x12\r\n\tincrement\x10\x04\x12\r\n\tdecrement\x10\x05\x42\t\n\x07_choiceB\x08\n\x06_value\"\xd9\x02\n\x1bPatternFlowIcmpEchoChecksum\x12\x41\n\x06\x63hoice\x18\x01 \x01(\x0e\x32,.otg.PatternFlowIcmpEchoChecksum.Choice.EnumH\x00\x88\x01\x01\x12G\n\tgenerated\x18\x02 \x01(\x0e\x32/.otg.PatternFlowIcmpEchoChecksum.Generated.EnumH\x01\x88\x01\x01\x12\x13\n\x06\x63ustom\x18\x03 \x01(\rH\x02\x88\x01\x01\x1a<\n\x06\x43hoice\"2\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\r\n\tgenerated\x10\x01\x12\n\n\x06\x63ustom\x10\x02\x1a\x37\n\tGenerated\"*\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\x08\n\x04good\x10\x01\x12\x07\n\x03\x62\x61\x64\x10\x02\x42\t\n\x07_choiceB\x0c\n\n_generatedB\t\n\x07_custom\"~\n$PatternFlowIcmpEchoIdentifierCounter\x12\x12\n\x05start\x18\x01 \x01(\rH\x00\x88\x01\x01\x12\x11\n\x04step\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x12\n\x05\x63ount\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x08\n\x06_startB\x07\n\x05_stepB\x08\n\x06_count\"\x84\x01\n&PatternFlowIcmpEchoIdentifierMetricTag\x12\x11\n\x04name\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x13\n\x06offset\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x13\n\x06length\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x07\n\x05_nameB\t\n\x07_offsetB\t\n\x07_length\"\xb3\x03\n\x1dPatternFlowIcmpEchoIdentifier\x12\x43\n\x06\x63hoice\x18\x01 \x01(\x0e\x32..otg.PatternFlowIcmpEchoIdentifier.Choice.EnumH\x00\x88\x01\x01\x12\x12\n\x05value\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x0e\n\x06values\x18\x03 \x03(\r\x12<\n\tincrement\x18\x05 \x01(\x0b\x32).otg.PatternFlowIcmpEchoIdentifierCounter\x12<\n\tdecrement\x18\x06 \x01(\x0b\x32).otg.PatternFlowIcmpEchoIdentifierCounter\x12@\n\x0bmetric_tags\x18\x07 \x03(\x0b\x32+.otg.PatternFlowIcmpEchoIdentifierMetricTag\x1aV\n\x06\x43hoice\"L\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\t\n\x05value\x10\x02\x12\n\n\x06values\x10\x03\x12\r\n\tincrement\x10\x04\x12\r\n\tdecrement\x10\x05\x42\t\n\x07_choiceB\x08\n\x06_value\"\x82\x01\n(PatternFlowIcmpEchoSequenceNumberCounter\x12\x12\n\x05start\x18\x01 \x01(\rH\x00\x88\x01\x01\x12\x11\n\x04step\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x12\n\x05\x63ount\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x08\n\x06_startB\x07\n\x05_stepB\x08\n\x06_count\"\x88\x01\n*PatternFlowIcmpEchoSequenceNumberMetricTag\x12\x11\n\x04name\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x13\n\x06offset\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x13\n\x06length\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x07\n\x05_nameB\t\n\x07_offsetB\t\n\x07_length\"\xc7\x03\n!PatternFlowIcmpEchoSequenceNumber\x12G\n\x06\x63hoice\x18\x01 \x01(\x0e\x32\x32.otg.PatternFlowIcmpEchoSequenceNumber.Choice.EnumH\x00\x88\x01\x01\x12\x12\n\x05value\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x0e\n\x06values\x18\x03 \x03(\r\x12@\n\tincrement\x18\x05 \x01(\x0b\x32-.otg.PatternFlowIcmpEchoSequenceNumberCounter\x12@\n\tdecrement\x18\x06 \x01(\x0b\x32-.otg.PatternFlowIcmpEchoSequenceNumberCounter\x12\x44\n\x0bmetric_tags\x18\x07 \x03(\x0b\x32/.otg.PatternFlowIcmpEchoSequenceNumberMetricTag\x1aV\n\x06\x43hoice\"L\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\t\n\x05value\x10\x02\x12\n\n\x06values\x10\x03\x12\r\n\tincrement\x10\x04\x12\r\n\tdecrement\x10\x05\x42\t\n\x07_choiceB\x08\n\x06_value\"\xdf\x02\n\x1dPatternFlowIcmpCommonChecksum\x12\x43\n\x06\x63hoice\x18\x01 \x01(\x0e\x32..otg.PatternFlowIcmpCommonChecksum.Choice.EnumH\x00\x88\x01\x01\x12I\n\tgenerated\x18\x02 \x01(\x0e\x32\x31.otg.PatternFlowIcmpCommonChecksum.Generated.EnumH\x01\x88\x01\x01\x12\x13\n\x06\x63ustom\x18\x03 \x01(\rH\x02\x88\x01\x01\x1a<\n\x06\x43hoice\"2\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\r\n\tgenerated\x10\x01\x12\n\n\x06\x63ustom\x10\x02\x1a\x37\n\tGenerated\"*\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\x08\n\x04good\x10\x01\x12\x07\n\x03\x62\x61\x64\x10\x02\x42\t\n\x07_choiceB\x0c\n\n_generatedB\t\n\x07_custom\"\x84\x01\n*PatternFlowIcmpNextFieldsIdentifierCounter\x12\x12\n\x05start\x18\x01 \x01(\rH\x00\x88\x01\x01\x12\x11\n\x04step\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x12\n\x05\x63ount\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x08\n\x06_startB\x07\n\x05_stepB\x08\n\x06_count\"\x8a\x01\n,PatternFlowIcmpNextFieldsIdentifierMetricTag\x12\x11\n\x04name\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x13\n\x06offset\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x13\n\x06length\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x07\n\x05_nameB\t\n\x07_offsetB\t\n\x07_length\"\xd1\x03\n#PatternFlowIcmpNextFieldsIdentifier\x12I\n\x06\x63hoice\x18\x01 \x01(\x0e\x32\x34.otg.PatternFlowIcmpNextFieldsIdentifier.Choice.EnumH\x00\x88\x01\x01\x12\x12\n\x05value\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x0e\n\x06values\x18\x03 \x03(\r\x12\x42\n\tincrement\x18\x05 \x01(\x0b\x32/.otg.PatternFlowIcmpNextFieldsIdentifierCounter\x12\x42\n\tdecrement\x18\x06 \x01(\x0b\x32/.otg.PatternFlowIcmpNextFieldsIdentifierCounter\x12\x46\n\x0bmetric_tags\x18\x07 \x03(\x0b\x32\x31.otg.PatternFlowIcmpNextFieldsIdentifierMetricTag\x1aV\n\x06\x43hoice\"L\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\t\n\x05value\x10\x02\x12\n\n\x06values\x10\x03\x12\r\n\tincrement\x10\x04\x12\r\n\tdecrement\x10\x05\x42\t\n\x07_choiceB\x08\n\x06_value\"\x88\x01\n.PatternFlowIcmpNextFieldsSequenceNumberCounter\x12\x12\n\x05start\x18\x01 \x01(\rH\x00\x88\x01\x01\x12\x11\n\x04step\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x12\n\x05\x63ount\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x08\n\x06_startB\x07\n\x05_stepB\x08\n\x06_count\"\x8e\x01\n0PatternFlowIcmpNextFieldsSequenceNumberMetricTag\x12\x11\n\x04name\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x13\n\x06offset\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x13\n\x06length\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x07\n\x05_nameB\t\n\x07_offsetB\t\n\x07_length\"\xe5\x03\n\'PatternFlowIcmpNextFieldsSequenceNumber\x12M\n\x06\x63hoice\x18\x01 \x01(\x0e\x32\x38.otg.PatternFlowIcmpNextFieldsSequenceNumber.Choice.EnumH\x00\x88\x01\x01\x12\x12\n\x05value\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x0e\n\x06values\x18\x03 \x03(\r\x12\x46\n\tincrement\x18\x05 \x01(\x0b\x32\x33.otg.PatternFlowIcmpNextFieldsSequenceNumberCounter\x12\x46\n\tdecrement\x18\x06 \x01(\x0b\x32\x33.otg.PatternFlowIcmpNextFieldsSequenceNumberCounter\x12J\n\x0bmetric_tags\x18\x07 \x03(\x0b\x32\x35.otg.PatternFlowIcmpNextFieldsSequenceNumberMetricTag\x1aV\n\x06\x43hoice\"L\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\t\n\x05value\x10\x02\x12\n\n\x06values\x10\x03\x12\r\n\tincrement\x10\x04\x12\r\n\tdecrement\x10\x05\x42\t\n\x07_choiceB\x08\n\x06_value\"z\n PatternFlowIcmpv6EchoTypeCounter\x12\x12\n\x05start\x18\x01 \x01(\rH\x00\x88\x01\x01\x12\x11\n\x04step\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x12\n\x05\x63ount\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x08\n\x06_startB\x07\n\x05_stepB\x08\n\x06_count\"\x80\x01\n\"PatternFlowIcmpv6EchoTypeMetricTag\x12\x11\n\x04name\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x13\n\x06offset\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x13\n\x06length\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x07\n\x05_nameB\t\n\x07_offsetB\t\n\x07_length\"\x9f\x03\n\x19PatternFlowIcmpv6EchoType\x12?\n\x06\x63hoice\x18\x01 \x01(\x0e\x32*.otg.PatternFlowIcmpv6EchoType.Choice.EnumH\x00\x88\x01\x01\x12\x12\n\x05value\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x0e\n\x06values\x18\x03 \x03(\r\x12\x38\n\tincrement\x18\x05 \x01(\x0b\x32%.otg.PatternFlowIcmpv6EchoTypeCounter\x12\x38\n\tdecrement\x18\x06 \x01(\x0b\x32%.otg.PatternFlowIcmpv6EchoTypeCounter\x12<\n\x0bmetric_tags\x18\x07 \x03(\x0b\x32\'.otg.PatternFlowIcmpv6EchoTypeMetricTag\x1aV\n\x06\x43hoice\"L\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\t\n\x05value\x10\x02\x12\n\n\x06values\x10\x03\x12\r\n\tincrement\x10\x04\x12\r\n\tdecrement\x10\x05\x42\t\n\x07_choiceB\x08\n\x06_value\"z\n PatternFlowIcmpv6EchoCodeCounter\x12\x12\n\x05start\x18\x01 \x01(\rH\x00\x88\x01\x01\x12\x11\n\x04step\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x12\n\x05\x63ount\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x08\n\x06_startB\x07\n\x05_stepB\x08\n\x06_count\"\x80\x01\n\"PatternFlowIcmpv6EchoCodeMetricTag\x12\x11\n\x04name\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x13\n\x06offset\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x13\n\x06length\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x07\n\x05_nameB\t\n\x07_offsetB\t\n\x07_length\"\x9f\x03\n\x19PatternFlowIcmpv6EchoCode\x12?\n\x06\x63hoice\x18\x01 \x01(\x0e\x32*.otg.PatternFlowIcmpv6EchoCode.Choice.EnumH\x00\x88\x01\x01\x12\x12\n\x05value\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x0e\n\x06values\x18\x03 \x03(\r\x12\x38\n\tincrement\x18\x05 \x01(\x0b\x32%.otg.PatternFlowIcmpv6EchoCodeCounter\x12\x38\n\tdecrement\x18\x06 \x01(\x0b\x32%.otg.PatternFlowIcmpv6EchoCodeCounter\x12<\n\x0bmetric_tags\x18\x07 \x03(\x0b\x32\'.otg.PatternFlowIcmpv6EchoCodeMetricTag\x1aV\n\x06\x43hoice\"L\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\t\n\x05value\x10\x02\x12\n\n\x06values\x10\x03\x12\r\n\tincrement\x10\x04\x12\r\n\tdecrement\x10\x05\x42\t\n\x07_choiceB\x08\n\x06_value\"\x80\x01\n&PatternFlowIcmpv6EchoIdentifierCounter\x12\x12\n\x05start\x18\x01 \x01(\rH\x00\x88\x01\x01\x12\x11\n\x04step\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x12\n\x05\x63ount\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x08\n\x06_startB\x07\n\x05_stepB\x08\n\x06_count\"\x86\x01\n(PatternFlowIcmpv6EchoIdentifierMetricTag\x12\x11\n\x04name\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x13\n\x06offset\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x13\n\x06length\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x07\n\x05_nameB\t\n\x07_offsetB\t\n\x07_length\"\xbd\x03\n\x1fPatternFlowIcmpv6EchoIdentifier\x12\x45\n\x06\x63hoice\x18\x01 \x01(\x0e\x32\x30.otg.PatternFlowIcmpv6EchoIdentifier.Choice.EnumH\x00\x88\x01\x01\x12\x12\n\x05value\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x0e\n\x06values\x18\x03 \x03(\r\x12>\n\tincrement\x18\x05 \x01(\x0b\x32+.otg.PatternFlowIcmpv6EchoIdentifierCounter\x12>\n\tdecrement\x18\x06 \x01(\x0b\x32+.otg.PatternFlowIcmpv6EchoIdentifierCounter\x12\x42\n\x0bmetric_tags\x18\x07 \x03(\x0b\x32-.otg.PatternFlowIcmpv6EchoIdentifierMetricTag\x1aV\n\x06\x43hoice\"L\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\t\n\x05value\x10\x02\x12\n\n\x06values\x10\x03\x12\r\n\tincrement\x10\x04\x12\r\n\tdecrement\x10\x05\x42\t\n\x07_choiceB\x08\n\x06_value\"\x84\x01\n*PatternFlowIcmpv6EchoSequenceNumberCounter\x12\x12\n\x05start\x18\x01 \x01(\rH\x00\x88\x01\x01\x12\x11\n\x04step\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x12\n\x05\x63ount\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x08\n\x06_startB\x07\n\x05_stepB\x08\n\x06_count\"\x8a\x01\n,PatternFlowIcmpv6EchoSequenceNumberMetricTag\x12\x11\n\x04name\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x13\n\x06offset\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x13\n\x06length\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x07\n\x05_nameB\t\n\x07_offsetB\t\n\x07_length\"\xd1\x03\n#PatternFlowIcmpv6EchoSequenceNumber\x12I\n\x06\x63hoice\x18\x01 \x01(\x0e\x32\x34.otg.PatternFlowIcmpv6EchoSequenceNumber.Choice.EnumH\x00\x88\x01\x01\x12\x12\n\x05value\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x0e\n\x06values\x18\x03 \x03(\r\x12\x42\n\tincrement\x18\x05 \x01(\x0b\x32/.otg.PatternFlowIcmpv6EchoSequenceNumberCounter\x12\x42\n\tdecrement\x18\x06 \x01(\x0b\x32/.otg.PatternFlowIcmpv6EchoSequenceNumberCounter\x12\x46\n\x0bmetric_tags\x18\x07 \x03(\x0b\x32\x31.otg.PatternFlowIcmpv6EchoSequenceNumberMetricTag\x1aV\n\x06\x43hoice\"L\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\t\n\x05value\x10\x02\x12\n\n\x06values\x10\x03\x12\r\n\tincrement\x10\x04\x12\r\n\tdecrement\x10\x05\x42\t\n\x07_choiceB\x08\n\x06_value\"\xdf\x02\n\x1dPatternFlowIcmpv6EchoChecksum\x12\x43\n\x06\x63hoice\x18\x01 \x01(\x0e\x32..otg.PatternFlowIcmpv6EchoChecksum.Choice.EnumH\x00\x88\x01\x01\x12I\n\tgenerated\x18\x02 \x01(\x0e\x32\x31.otg.PatternFlowIcmpv6EchoChecksum.Generated.EnumH\x01\x88\x01\x01\x12\x13\n\x06\x63ustom\x18\x03 \x01(\rH\x02\x88\x01\x01\x1a<\n\x06\x43hoice\"2\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\r\n\tgenerated\x10\x01\x12\n\n\x06\x63ustom\x10\x02\x1a\x37\n\tGenerated\"*\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\x08\n\x04good\x10\x01\x12\x07\n\x03\x62\x61\x64\x10\x02\x42\t\n\x07_choiceB\x0c\n\n_generatedB\t\n\x07_custom\"\xe5\x02\n\x1fPatternFlowIcmpv6CommonChecksum\x12\x45\n\x06\x63hoice\x18\x01 \x01(\x0e\x32\x30.otg.PatternFlowIcmpv6CommonChecksum.Choice.EnumH\x00\x88\x01\x01\x12K\n\tgenerated\x18\x02 \x01(\x0e\x32\x33.otg.PatternFlowIcmpv6CommonChecksum.Generated.EnumH\x01\x88\x01\x01\x12\x13\n\x06\x63ustom\x18\x03 \x01(\rH\x02\x88\x01\x01\x1a<\n\x06\x43hoice\"2\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\r\n\tgenerated\x10\x01\x12\n\n\x06\x63ustom\x10\x02\x1a\x37\n\tGenerated\"*\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\x08\n\x04good\x10\x01\x12\x07\n\x03\x62\x61\x64\x10\x02\x42\t\n\x07_choiceB\x0c\n\n_generatedB\t\n\x07_custom\"v\n\x1cPatternFlowPppAddressCounter\x12\x12\n\x05start\x18\x01 \x01(\rH\x00\x88\x01\x01\x12\x11\n\x04step\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x12\n\x05\x63ount\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x08\n\x06_startB\x07\n\x05_stepB\x08\n\x06_count\"|\n\x1ePatternFlowPppAddressMetricTag\x12\x11\n\x04name\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x13\n\x06offset\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x13\n\x06length\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x07\n\x05_nameB\t\n\x07_offsetB\t\n\x07_length\"\x8b\x03\n\x15PatternFlowPppAddress\x12;\n\x06\x63hoice\x18\x01 \x01(\x0e\x32&.otg.PatternFlowPppAddress.Choice.EnumH\x00\x88\x01\x01\x12\x12\n\x05value\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x0e\n\x06values\x18\x03 \x03(\r\x12\x34\n\tincrement\x18\x05 \x01(\x0b\x32!.otg.PatternFlowPppAddressCounter\x12\x34\n\tdecrement\x18\x06 \x01(\x0b\x32!.otg.PatternFlowPppAddressCounter\x12\x38\n\x0bmetric_tags\x18\x07 \x03(\x0b\x32#.otg.PatternFlowPppAddressMetricTag\x1aV\n\x06\x43hoice\"L\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\t\n\x05value\x10\x02\x12\n\n\x06values\x10\x03\x12\r\n\tincrement\x10\x04\x12\r\n\tdecrement\x10\x05\x42\t\n\x07_choiceB\x08\n\x06_value\"v\n\x1cPatternFlowPppControlCounter\x12\x12\n\x05start\x18\x01 \x01(\rH\x00\x88\x01\x01\x12\x11\n\x04step\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x12\n\x05\x63ount\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x08\n\x06_startB\x07\n\x05_stepB\x08\n\x06_count\"|\n\x1ePatternFlowPppControlMetricTag\x12\x11\n\x04name\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x13\n\x06offset\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x13\n\x06length\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x07\n\x05_nameB\t\n\x07_offsetB\t\n\x07_length\"\x8b\x03\n\x15PatternFlowPppControl\x12;\n\x06\x63hoice\x18\x01 \x01(\x0e\x32&.otg.PatternFlowPppControl.Choice.EnumH\x00\x88\x01\x01\x12\x12\n\x05value\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x0e\n\x06values\x18\x03 \x03(\r\x12\x34\n\tincrement\x18\x05 \x01(\x0b\x32!.otg.PatternFlowPppControlCounter\x12\x34\n\tdecrement\x18\x06 \x01(\x0b\x32!.otg.PatternFlowPppControlCounter\x12\x38\n\x0bmetric_tags\x18\x07 \x03(\x0b\x32#.otg.PatternFlowPppControlMetricTag\x1aV\n\x06\x43hoice\"L\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\t\n\x05value\x10\x02\x12\n\n\x06values\x10\x03\x12\r\n\tincrement\x10\x04\x12\r\n\tdecrement\x10\x05\x42\t\n\x07_choiceB\x08\n\x06_value\"{\n!PatternFlowPppProtocolTypeCounter\x12\x12\n\x05start\x18\x01 \x01(\rH\x00\x88\x01\x01\x12\x11\n\x04step\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x12\n\x05\x63ount\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x08\n\x06_startB\x07\n\x05_stepB\x08\n\x06_count\"\x81\x01\n#PatternFlowPppProtocolTypeMetricTag\x12\x11\n\x04name\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x13\n\x06offset\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x13\n\x06length\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x07\n\x05_nameB\t\n\x07_offsetB\t\n\x07_length\"\xca\x03\n\x1aPatternFlowPppProtocolType\x12@\n\x06\x63hoice\x18\x01 \x01(\x0e\x32+.otg.PatternFlowPppProtocolType.Choice.EnumH\x00\x88\x01\x01\x12\x12\n\x05value\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x0e\n\x06values\x18\x03 \x03(\r\x12\x11\n\x04\x61uto\x18\x04 \x01(\rH\x02\x88\x01\x01\x12\x39\n\tincrement\x18\x06 \x01(\x0b\x32&.otg.PatternFlowPppProtocolTypeCounter\x12\x39\n\tdecrement\x18\x07 \x01(\x0b\x32&.otg.PatternFlowPppProtocolTypeCounter\x12=\n\x0bmetric_tags\x18\x08 \x03(\x0b\x32(.otg.PatternFlowPppProtocolTypeMetricTag\x1a`\n\x06\x43hoice\"V\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\t\n\x05value\x10\x02\x12\n\n\x06values\x10\x03\x12\x08\n\x04\x61uto\x10\x01\x12\r\n\tincrement\x10\x04\x12\r\n\tdecrement\x10\x05\x42\t\n\x07_choiceB\x08\n\x06_valueB\x07\n\x05_auto\"y\n\x1fPatternFlowIgmpv1VersionCounter\x12\x12\n\x05start\x18\x01 \x01(\rH\x00\x88\x01\x01\x12\x11\n\x04step\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x12\n\x05\x63ount\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x08\n\x06_startB\x07\n\x05_stepB\x08\n\x06_count\"\x7f\n!PatternFlowIgmpv1VersionMetricTag\x12\x11\n\x04name\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x13\n\x06offset\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x13\n\x06length\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x07\n\x05_nameB\t\n\x07_offsetB\t\n\x07_length\"\x9a\x03\n\x18PatternFlowIgmpv1Version\x12>\n\x06\x63hoice\x18\x01 \x01(\x0e\x32).otg.PatternFlowIgmpv1Version.Choice.EnumH\x00\x88\x01\x01\x12\x12\n\x05value\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x0e\n\x06values\x18\x03 \x03(\r\x12\x37\n\tincrement\x18\x05 \x01(\x0b\x32$.otg.PatternFlowIgmpv1VersionCounter\x12\x37\n\tdecrement\x18\x06 \x01(\x0b\x32$.otg.PatternFlowIgmpv1VersionCounter\x12;\n\x0bmetric_tags\x18\x07 \x03(\x0b\x32&.otg.PatternFlowIgmpv1VersionMetricTag\x1aV\n\x06\x43hoice\"L\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\t\n\x05value\x10\x02\x12\n\n\x06values\x10\x03\x12\r\n\tincrement\x10\x04\x12\r\n\tdecrement\x10\x05\x42\t\n\x07_choiceB\x08\n\x06_value\"v\n\x1cPatternFlowIgmpv1TypeCounter\x12\x12\n\x05start\x18\x01 \x01(\rH\x00\x88\x01\x01\x12\x11\n\x04step\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x12\n\x05\x63ount\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x08\n\x06_startB\x07\n\x05_stepB\x08\n\x06_count\"|\n\x1ePatternFlowIgmpv1TypeMetricTag\x12\x11\n\x04name\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x13\n\x06offset\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x13\n\x06length\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x07\n\x05_nameB\t\n\x07_offsetB\t\n\x07_length\"\x8b\x03\n\x15PatternFlowIgmpv1Type\x12;\n\x06\x63hoice\x18\x01 \x01(\x0e\x32&.otg.PatternFlowIgmpv1Type.Choice.EnumH\x00\x88\x01\x01\x12\x12\n\x05value\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x0e\n\x06values\x18\x03 \x03(\r\x12\x34\n\tincrement\x18\x05 \x01(\x0b\x32!.otg.PatternFlowIgmpv1TypeCounter\x12\x34\n\tdecrement\x18\x06 \x01(\x0b\x32!.otg.PatternFlowIgmpv1TypeCounter\x12\x38\n\x0bmetric_tags\x18\x07 \x03(\x0b\x32#.otg.PatternFlowIgmpv1TypeMetricTag\x1aV\n\x06\x43hoice\"L\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\t\n\x05value\x10\x02\x12\n\n\x06values\x10\x03\x12\r\n\tincrement\x10\x04\x12\r\n\tdecrement\x10\x05\x42\t\n\x07_choiceB\x08\n\x06_value\"x\n\x1ePatternFlowIgmpv1UnusedCounter\x12\x12\n\x05start\x18\x01 \x01(\rH\x00\x88\x01\x01\x12\x11\n\x04step\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x12\n\x05\x63ount\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x08\n\x06_startB\x07\n\x05_stepB\x08\n\x06_count\"~\n PatternFlowIgmpv1UnusedMetricTag\x12\x11\n\x04name\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x13\n\x06offset\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x13\n\x06length\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x07\n\x05_nameB\t\n\x07_offsetB\t\n\x07_length\"\x95\x03\n\x17PatternFlowIgmpv1Unused\x12=\n\x06\x63hoice\x18\x01 \x01(\x0e\x32(.otg.PatternFlowIgmpv1Unused.Choice.EnumH\x00\x88\x01\x01\x12\x12\n\x05value\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x0e\n\x06values\x18\x03 \x03(\r\x12\x36\n\tincrement\x18\x05 \x01(\x0b\x32#.otg.PatternFlowIgmpv1UnusedCounter\x12\x36\n\tdecrement\x18\x06 \x01(\x0b\x32#.otg.PatternFlowIgmpv1UnusedCounter\x12:\n\x0bmetric_tags\x18\x07 \x03(\x0b\x32%.otg.PatternFlowIgmpv1UnusedMetricTag\x1aV\n\x06\x43hoice\"L\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\t\n\x05value\x10\x02\x12\n\n\x06values\x10\x03\x12\r\n\tincrement\x10\x04\x12\r\n\tdecrement\x10\x05\x42\t\n\x07_choiceB\x08\n\x06_value\"\xd3\x02\n\x19PatternFlowIgmpv1Checksum\x12?\n\x06\x63hoice\x18\x01 \x01(\x0e\x32*.otg.PatternFlowIgmpv1Checksum.Choice.EnumH\x00\x88\x01\x01\x12\x45\n\tgenerated\x18\x02 \x01(\x0e\x32-.otg.PatternFlowIgmpv1Checksum.Generated.EnumH\x01\x88\x01\x01\x12\x13\n\x06\x63ustom\x18\x03 \x01(\rH\x02\x88\x01\x01\x1a<\n\x06\x43hoice\"2\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\r\n\tgenerated\x10\x01\x12\n\n\x06\x63ustom\x10\x02\x1a\x37\n\tGenerated\"*\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\x08\n\x04good\x10\x01\x12\x07\n\x03\x62\x61\x64\x10\x02\x42\t\n\x07_choiceB\x0c\n\n_generatedB\t\n\x07_custom\"~\n$PatternFlowIgmpv1GroupAddressCounter\x12\x12\n\x05start\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x11\n\x04step\x18\x02 \x01(\tH\x01\x88\x01\x01\x12\x12\n\x05\x63ount\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x08\n\x06_startB\x07\n\x05_stepB\x08\n\x06_count\"\x84\x01\n&PatternFlowIgmpv1GroupAddressMetricTag\x12\x11\n\x04name\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x13\n\x06offset\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x13\n\x06length\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x07\n\x05_nameB\t\n\x07_offsetB\t\n\x07_length\"\xb3\x03\n\x1dPatternFlowIgmpv1GroupAddress\x12\x43\n\x06\x63hoice\x18\x01 \x01(\x0e\x32..otg.PatternFlowIgmpv1GroupAddress.Choice.EnumH\x00\x88\x01\x01\x12\x12\n\x05value\x18\x02 \x01(\tH\x01\x88\x01\x01\x12\x0e\n\x06values\x18\x03 \x03(\t\x12<\n\tincrement\x18\x05 \x01(\x0b\x32).otg.PatternFlowIgmpv1GroupAddressCounter\x12<\n\tdecrement\x18\x06 \x01(\x0b\x32).otg.PatternFlowIgmpv1GroupAddressCounter\x12@\n\x0bmetric_tags\x18\x07 \x03(\x0b\x32+.otg.PatternFlowIgmpv1GroupAddressMetricTag\x1aV\n\x06\x43hoice\"L\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\t\n\x05value\x10\x02\x12\n\n\x06values\x10\x03\x12\r\n\tincrement\x10\x04\x12\r\n\tdecrement\x10\x05\x42\t\n\x07_choiceB\x08\n\x06_value\"u\n\x1bPatternFlowMplsLabelCounter\x12\x12\n\x05start\x18\x01 \x01(\rH\x00\x88\x01\x01\x12\x11\n\x04step\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x12\n\x05\x63ount\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x08\n\x06_startB\x07\n\x05_stepB\x08\n\x06_count\"{\n\x1dPatternFlowMplsLabelMetricTag\x12\x11\n\x04name\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x13\n\x06offset\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x13\n\x06length\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x07\n\x05_nameB\t\n\x07_offsetB\t\n\x07_length\"\xac\x03\n\x14PatternFlowMplsLabel\x12:\n\x06\x63hoice\x18\x01 \x01(\x0e\x32%.otg.PatternFlowMplsLabel.Choice.EnumH\x00\x88\x01\x01\x12\x12\n\x05value\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x0e\n\x06values\x18\x03 \x03(\r\x12\x11\n\x04\x61uto\x18\x04 \x01(\rH\x02\x88\x01\x01\x12\x33\n\tincrement\x18\x06 \x01(\x0b\x32 .otg.PatternFlowMplsLabelCounter\x12\x33\n\tdecrement\x18\x07 \x01(\x0b\x32 .otg.PatternFlowMplsLabelCounter\x12\x37\n\x0bmetric_tags\x18\x08 \x03(\x0b\x32\".otg.PatternFlowMplsLabelMetricTag\x1a`\n\x06\x43hoice\"V\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\t\n\x05value\x10\x02\x12\n\n\x06values\x10\x03\x12\x08\n\x04\x61uto\x10\x01\x12\r\n\tincrement\x10\x04\x12\r\n\tdecrement\x10\x05\x42\t\n\x07_choiceB\x08\n\x06_valueB\x07\n\x05_auto\"|\n\"PatternFlowMplsTrafficClassCounter\x12\x12\n\x05start\x18\x01 \x01(\rH\x00\x88\x01\x01\x12\x11\n\x04step\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x12\n\x05\x63ount\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x08\n\x06_startB\x07\n\x05_stepB\x08\n\x06_count\"\x82\x01\n$PatternFlowMplsTrafficClassMetricTag\x12\x11\n\x04name\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x13\n\x06offset\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x13\n\x06length\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x07\n\x05_nameB\t\n\x07_offsetB\t\n\x07_length\"\xa9\x03\n\x1bPatternFlowMplsTrafficClass\x12\x41\n\x06\x63hoice\x18\x01 \x01(\x0e\x32,.otg.PatternFlowMplsTrafficClass.Choice.EnumH\x00\x88\x01\x01\x12\x12\n\x05value\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x0e\n\x06values\x18\x03 \x03(\r\x12:\n\tincrement\x18\x05 \x01(\x0b\x32\'.otg.PatternFlowMplsTrafficClassCounter\x12:\n\tdecrement\x18\x06 \x01(\x0b\x32\'.otg.PatternFlowMplsTrafficClassCounter\x12>\n\x0bmetric_tags\x18\x07 \x03(\x0b\x32).otg.PatternFlowMplsTrafficClassMetricTag\x1aV\n\x06\x43hoice\"L\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\t\n\x05value\x10\x02\x12\n\n\x06values\x10\x03\x12\r\n\tincrement\x10\x04\x12\r\n\tdecrement\x10\x05\x42\t\n\x07_choiceB\x08\n\x06_value\"}\n#PatternFlowMplsBottomOfStackCounter\x12\x12\n\x05start\x18\x01 \x01(\rH\x00\x88\x01\x01\x12\x11\n\x04step\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x12\n\x05\x63ount\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x08\n\x06_startB\x07\n\x05_stepB\x08\n\x06_count\"\x83\x01\n%PatternFlowMplsBottomOfStackMetricTag\x12\x11\n\x04name\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x13\n\x06offset\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x13\n\x06length\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x07\n\x05_nameB\t\n\x07_offsetB\t\n\x07_length\"\xd4\x03\n\x1cPatternFlowMplsBottomOfStack\x12\x42\n\x06\x63hoice\x18\x01 \x01(\x0e\x32-.otg.PatternFlowMplsBottomOfStack.Choice.EnumH\x00\x88\x01\x01\x12\x12\n\x05value\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x0e\n\x06values\x18\x03 \x03(\r\x12\x11\n\x04\x61uto\x18\x04 \x01(\rH\x02\x88\x01\x01\x12;\n\tincrement\x18\x06 \x01(\x0b\x32(.otg.PatternFlowMplsBottomOfStackCounter\x12;\n\tdecrement\x18\x07 \x01(\x0b\x32(.otg.PatternFlowMplsBottomOfStackCounter\x12?\n\x0bmetric_tags\x18\x08 \x03(\x0b\x32*.otg.PatternFlowMplsBottomOfStackMetricTag\x1a`\n\x06\x43hoice\"V\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\t\n\x05value\x10\x02\x12\n\n\x06values\x10\x03\x12\x08\n\x04\x61uto\x10\x01\x12\r\n\tincrement\x10\x04\x12\r\n\tdecrement\x10\x05\x42\t\n\x07_choiceB\x08\n\x06_valueB\x07\n\x05_auto\"z\n PatternFlowMplsTimeToLiveCounter\x12\x12\n\x05start\x18\x01 \x01(\rH\x00\x88\x01\x01\x12\x11\n\x04step\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x12\n\x05\x63ount\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x08\n\x06_startB\x07\n\x05_stepB\x08\n\x06_count\"\x80\x01\n\"PatternFlowMplsTimeToLiveMetricTag\x12\x11\n\x04name\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x13\n\x06offset\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x13\n\x06length\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x07\n\x05_nameB\t\n\x07_offsetB\t\n\x07_length\"\x9f\x03\n\x19PatternFlowMplsTimeToLive\x12?\n\x06\x63hoice\x18\x01 \x01(\x0e\x32*.otg.PatternFlowMplsTimeToLive.Choice.EnumH\x00\x88\x01\x01\x12\x12\n\x05value\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x0e\n\x06values\x18\x03 \x03(\r\x12\x38\n\tincrement\x18\x05 \x01(\x0b\x32%.otg.PatternFlowMplsTimeToLiveCounter\x12\x38\n\tdecrement\x18\x06 \x01(\x0b\x32%.otg.PatternFlowMplsTimeToLiveCounter\x12<\n\x0bmetric_tags\x18\x07 \x03(\x0b\x32\'.otg.PatternFlowMplsTimeToLiveMetricTag\x1aV\n\x06\x43hoice\"L\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\t\n\x05value\x10\x02\x12\n\n\x06values\x10\x03\x12\r\n\tincrement\x10\x04\x12\r\n\tdecrement\x10\x05\x42\t\n\x07_choiceB\x08\n\x06_value\"\x91\x01\n\x07Version\x12\x1d\n\x10\x61pi_spec_version\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x18\n\x0bsdk_version\x18\x02 \x01(\tH\x01\x88\x01\x01\x12\x18\n\x0b\x61pp_version\x18\x03 \x01(\tH\x02\x88\x01\x01\x42\x13\n\x11_api_spec_versionB\x0e\n\x0c_sdk_versionB\x0e\n\x0c_app_version\"(\n\x07Success\x12\x1d\n\x07warning\x18\x01 \x01(\x0b\x32\x0c.otg.Warning\"$\n\x07\x46\x61ilure\x12\x19\n\x05\x65rror\x18\x01 \x01(\x0b\x32\n.otg.Error\"/\n\x10SetConfigRequest\x12\x1b\n\x06\x63onfig\x18\x01 \x01(\x0b\x32\x0b.otg.Config\"?\n\x13UpdateConfigRequest\x12(\n\rconfig_update\x18\x01 \x01(\x0b\x32\x11.otg.ConfigUpdate\"2\n\x11SetConfigResponse\x12\x1d\n\x07warning\x18\x01 \x01(\x0b\x32\x0c.otg.Warning\"0\n\x11GetConfigResponse\x12\x1b\n\x06\x63onfig\x18\x01 \x01(\x0b\x32\x0b.otg.Config\"5\n\x14UpdateConfigResponse\x12\x1d\n\x07warning\x18\x01 \x01(\x0b\x32\x0c.otg.Warning\"B\n\x16SetControlStateRequest\x12(\n\rcontrol_state\x18\x01 \x01(\x0b\x32\x11.otg.ControlState\"8\n\x17SetControlStateResponse\x12\x1d\n\x07warning\x18\x01 \x01(\x0b\x32\x0c.otg.Warning\"E\n\x17SetControlActionRequest\x12*\n\x0e\x63ontrol_action\x18\x01 \x01(\x0b\x32\x12.otg.ControlAction\"W\n\x18SetControlActionResponse\x12;\n\x17\x63ontrol_action_response\x18\x01 \x01(\x0b\x32\x1a.otg.ControlActionResponse\"A\n\x11GetMetricsRequest\x12,\n\x0fmetrics_request\x18\x01 \x01(\x0b\x32\x13.otg.MetricsRequest\"D\n\x12GetMetricsResponse\x12.\n\x10metrics_response\x18\x01 \x01(\x0b\x32\x14.otg.MetricsResponse\">\n\x10GetStatesRequest\x12*\n\x0estates_request\x18\x01 \x01(\x0b\x32\x12.otg.StatesRequest\"A\n\x11GetStatesResponse\x12,\n\x0fstates_response\x18\x01 \x01(\x0b\x32\x13.otg.StatesResponse\"A\n\x11GetCaptureRequest\x12,\n\x0f\x63\x61pture_request\x18\x01 \x01(\x0b\x32\x13.otg.CaptureRequest\",\n\x12GetCaptureResponse\x12\x16\n\x0eresponse_bytes\x18\x01 \x01(\x0c\"3\n\x12GetVersionResponse\x12\x1d\n\x07version\x18\x01 \x01(\x0b\x32\x0c.otg.Version2\xdf\x04\n\x07Openapi\x12:\n\tSetConfig\x12\x15.otg.SetConfigRequest\x1a\x16.otg.SetConfigResponse\x12;\n\tGetConfig\x12\x16.google.protobuf.Empty\x1a\x16.otg.GetConfigResponse\x12\x43\n\x0cUpdateConfig\x12\x18.otg.UpdateConfigRequest\x1a\x19.otg.UpdateConfigResponse\x12L\n\x0fSetControlState\x12\x1b.otg.SetControlStateRequest\x1a\x1c.otg.SetControlStateResponse\x12O\n\x10SetControlAction\x12\x1c.otg.SetControlActionRequest\x1a\x1d.otg.SetControlActionResponse\x12=\n\nGetMetrics\x12\x16.otg.GetMetricsRequest\x1a\x17.otg.GetMetricsResponse\x12:\n\tGetStates\x12\x15.otg.GetStatesRequest\x1a\x16.otg.GetStatesResponse\x12=\n\nGetCapture\x12\x16.otg.GetCaptureRequest\x1a\x17.otg.GetCaptureResponse\x12=\n\nGetVersion\x12\x16.google.protobuf.Empty\x1a\x17.otg.GetVersionResponseB\x0bZ\t./otg;otgb\x06proto3') +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\totg.proto\x12\x03otg\x1a google/protobuf/descriptor.proto\x1a\x1bgoogle/protobuf/empty.proto\"\x89\x02\n\x06\x43onfig\x12\x18\n\x05ports\x18\x01 \x03(\x0b\x32\t.otg.Port\x12\x16\n\x04lags\x18\x02 \x03(\x0b\x32\x08.otg.Lag\x12\x1b\n\x06layer1\x18\x03 \x03(\x0b\x32\x0b.otg.Layer1\x12\x1e\n\x08\x63\x61ptures\x18\x04 \x03(\x0b\x32\x0c.otg.Capture\x12\x1c\n\x07\x64\x65vices\x18\x05 \x03(\x0b\x32\x0b.otg.Device\x12\x18\n\x05\x66lows\x18\x06 \x03(\x0b\x32\t.otg.Flow\x12\x1a\n\x06\x65vents\x18\x07 \x01(\x0b\x32\n.otg.Event\x12#\n\x07options\x18\x08 \x01(\x0b\x32\x12.otg.ConfigOptions\x12\x17\n\x04lldp\x18\t \x03(\x0b\x32\t.otg.Lldp\"g\n\rConfigOptions\x12&\n\x0cport_options\x18\x01 \x01(\x0b\x32\x10.otg.PortOptions\x12.\n\x10protocol_options\x18\x02 \x01(\x0b\x32\x14.otg.ProtocolOptions\"F\n\x04Port\x12\x15\n\x08location\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x11\n\x04name\x18\x02 \x01(\tH\x01\x88\x01\x01\x42\x0b\n\t_locationB\x07\n\x05_name\"G\n\x0bPortOptions\x12 \n\x13location_preemption\x18\x01 \x01(\x08H\x00\x88\x01\x01\x42\x16\n\x14_location_preemption\"\x88\x01\n\x03Lag\x12\x1b\n\x05ports\x18\x01 \x03(\x0b\x32\x0c.otg.LagPort\x12\"\n\x08protocol\x18\x02 \x01(\x0b\x32\x10.otg.LagProtocol\x12\x16\n\tmin_links\x18\x03 \x01(\rH\x00\x88\x01\x01\x12\x11\n\x04name\x18\x04 \x01(\tH\x01\x88\x01\x01\x42\x0c\n\n_min_linksB\x07\n\x05_name\"z\n\x07LagPort\x12\x16\n\tport_name\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x1e\n\x04lacp\x18\x02 \x01(\x0b\x32\x10.otg.LagPortLacp\x12)\n\x08\x65thernet\x18\x03 \x01(\x0b\x32\x17.otg.DeviceEthernetBaseB\x0c\n\n_port_name\"\xd0\x01\n\x0bLagProtocol\x12\x31\n\x06\x63hoice\x18\x01 \x01(\x0e\x32\x1c.otg.LagProtocol.Choice.EnumH\x00\x88\x01\x01\x12\"\n\x04lacp\x18\x02 \x01(\x0b\x32\x14.otg.LagProtocolLacp\x12&\n\x06static\x18\x03 \x01(\x0b\x32\x16.otg.LagProtocolStatic\x1a\x37\n\x06\x43hoice\"-\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\x08\n\x04lacp\x10\x01\x12\n\n\x06static\x10\x02\x42\t\n\x07_choice\"3\n\x11LagProtocolStatic\x12\x13\n\x06lag_id\x18\x01 \x01(\rH\x00\x88\x01\x01\x42\t\n\x07_lag_id\"\xa7\x01\n\x0fLagProtocolLacp\x12\x1c\n\x0f\x61\x63tor_system_id\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\"\n\x15\x61\x63tor_system_priority\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x16\n\tactor_key\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x12\n\x10_actor_system_idB\x18\n\x16_actor_system_priorityB\x0c\n\n_actor_key\"\x93\x03\n\x0bLagPortLacp\x12\x1e\n\x11\x61\x63tor_port_number\x18\x01 \x01(\rH\x00\x88\x01\x01\x12 \n\x13\x61\x63tor_port_priority\x18\x02 \x01(\rH\x01\x88\x01\x01\x12@\n\x0e\x61\x63tor_activity\x18\x03 \x01(\x0e\x32#.otg.LagPortLacp.ActorActivity.EnumH\x02\x88\x01\x01\x12*\n\x1dlacpdu_periodic_time_interval\x18\x04 \x01(\rH\x03\x88\x01\x01\x12\x1b\n\x0elacpdu_timeout\x18\x05 \x01(\rH\x04\x88\x01\x01\x1a\x41\n\rActorActivity\"0\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\x0b\n\x07passive\x10\x01\x12\n\n\x06\x61\x63tive\x10\x02\x42\x14\n\x12_actor_port_numberB\x16\n\x14_actor_port_priorityB\x11\n\x0f_actor_activityB \n\x1e_lacpdu_periodic_time_intervalB\x11\n\x0f_lacpdu_timeout\"\x84\x01\n\x12\x44\x65viceEthernetBase\x12\x10\n\x03mac\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x10\n\x03mtu\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x1e\n\x05vlans\x18\x03 \x03(\x0b\x32\x0f.otg.DeviceVlan\x12\x11\n\x04name\x18\x04 \x01(\tH\x02\x88\x01\x01\x42\x06\n\x04_macB\x06\n\x04_mtuB\x07\n\x05_name\"\xff\x01\n\x0e\x44\x65viceEthernet\x12+\n\nconnection\x18\x02 \x01(\x0b\x32\x17.otg.EthernetConnection\x12\'\n\x0eipv4_addresses\x18\x03 \x03(\x0b\x32\x0f.otg.DeviceIpv4\x12\'\n\x0eipv6_addresses\x18\x04 \x03(\x0b\x32\x0f.otg.DeviceIpv6\x12\x10\n\x03mac\x18\x05 \x01(\tH\x00\x88\x01\x01\x12\x10\n\x03mtu\x18\x06 \x01(\rH\x01\x88\x01\x01\x12\x1e\n\x05vlans\x18\x07 \x03(\x0b\x32\x0f.otg.DeviceVlan\x12\x11\n\x04name\x18\x08 \x01(\tH\x02\x88\x01\x01\x42\x06\n\x04_macB\x06\n\x04_mtuB\x07\n\x05_name\"\x9b\x02\n\x12\x45thernetConnection\x12\x38\n\x06\x63hoice\x18\x01 \x01(\x0e\x32#.otg.EthernetConnection.Choice.EnumH\x00\x88\x01\x01\x12\x16\n\tport_name\x18\x02 \x01(\tH\x01\x88\x01\x01\x12\x15\n\x08lag_name\x18\x03 \x01(\tH\x02\x88\x01\x01\x12\x17\n\nvxlan_name\x18\x04 \x01(\tH\x03\x88\x01\x01\x1aN\n\x06\x43hoice\"D\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\r\n\tport_name\x10\x01\x12\x0c\n\x08lag_name\x10\x02\x12\x0e\n\nvxlan_name\x10\x03\x42\t\n\x07_choiceB\x0c\n\n_port_nameB\x0b\n\t_lag_nameB\r\n\x0b_vxlan_name\"\xf3\x01\n\nDeviceVlan\x12,\n\x04tpid\x18\x01 \x01(\x0e\x32\x19.otg.DeviceVlan.Tpid.EnumH\x00\x88\x01\x01\x12\x15\n\x08priority\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x0f\n\x02id\x18\x03 \x01(\rH\x02\x88\x01\x01\x12\x11\n\x04name\x18\x04 \x01(\tH\x03\x88\x01\x01\x1aV\n\x04Tpid\"N\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\t\n\x05x8100\x10\x01\x12\t\n\x05x88A8\x10\x02\x12\t\n\x05x9100\x10\x03\x12\t\n\x05x9200\x10\x04\x12\t\n\x05x9300\x10\x05\x42\x07\n\x05_tpidB\x0b\n\t_priorityB\x05\n\x03_idB\x07\n\x05_name\"\xbc\x01\n\nDeviceIpv4\x12\x14\n\x07gateway\x18\x01 \x01(\tH\x00\x88\x01\x01\x12.\n\x0bgateway_mac\x18\x02 \x01(\x0b\x32\x19.otg.DeviceIpv4GatewayMAC\x12\x14\n\x07\x61\x64\x64ress\x18\x03 \x01(\tH\x01\x88\x01\x01\x12\x13\n\x06prefix\x18\x04 \x01(\rH\x02\x88\x01\x01\x12\x11\n\x04name\x18\x05 \x01(\tH\x03\x88\x01\x01\x42\n\n\x08_gatewayB\n\n\x08_addressB\t\n\x07_prefixB\x07\n\x05_name\"v\n\x12\x44\x65viceIpv4Loopback\x12\x15\n\x08\x65th_name\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x14\n\x07\x61\x64\x64ress\x18\x02 \x01(\tH\x01\x88\x01\x01\x12\x11\n\x04name\x18\x03 \x01(\tH\x02\x88\x01\x01\x42\x0b\n\t_eth_nameB\n\n\x08_addressB\x07\n\x05_name\"\xcf\x01\n\x14\x44\x65viceIpv4GatewayMAC\x12:\n\x06\x63hoice\x18\x01 \x01(\x0e\x32%.otg.DeviceIpv4GatewayMAC.Choice.EnumH\x00\x88\x01\x01\x12\x11\n\x04\x61uto\x18\x02 \x01(\tH\x01\x88\x01\x01\x12\x12\n\x05value\x18\x03 \x01(\tH\x02\x88\x01\x01\x1a\x36\n\x06\x43hoice\",\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\x08\n\x04\x61uto\x10\x01\x12\t\n\x05value\x10\x02\x42\t\n\x07_choiceB\x07\n\x05_autoB\x08\n\x06_value\"\xbc\x01\n\nDeviceIpv6\x12\x14\n\x07gateway\x18\x01 \x01(\tH\x00\x88\x01\x01\x12.\n\x0bgateway_mac\x18\x02 \x01(\x0b\x32\x19.otg.DeviceIpv6GatewayMAC\x12\x14\n\x07\x61\x64\x64ress\x18\x03 \x01(\tH\x01\x88\x01\x01\x12\x13\n\x06prefix\x18\x04 \x01(\rH\x02\x88\x01\x01\x12\x11\n\x04name\x18\x05 \x01(\tH\x03\x88\x01\x01\x42\n\n\x08_gatewayB\n\n\x08_addressB\t\n\x07_prefixB\x07\n\x05_name\"v\n\x12\x44\x65viceIpv6Loopback\x12\x15\n\x08\x65th_name\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x14\n\x07\x61\x64\x64ress\x18\x02 \x01(\tH\x01\x88\x01\x01\x12\x11\n\x04name\x18\x03 \x01(\tH\x02\x88\x01\x01\x42\x0b\n\t_eth_nameB\n\n\x08_addressB\x07\n\x05_name\"\xcf\x01\n\x14\x44\x65viceIpv6GatewayMAC\x12:\n\x06\x63hoice\x18\x01 \x01(\x0e\x32%.otg.DeviceIpv6GatewayMAC.Choice.EnumH\x00\x88\x01\x01\x12\x11\n\x04\x61uto\x18\x02 \x01(\tH\x01\x88\x01\x01\x12\x12\n\x05value\x18\x03 \x01(\tH\x02\x88\x01\x01\x1a\x36\n\x06\x43hoice\",\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\x08\n\x04\x61uto\x10\x01\x12\t\n\x05value\x10\x02\x42\t\n\x07_choiceB\x07\n\x05_autoB\x08\n\x06_value\"\x92\x06\n\x06Layer1\x12\x12\n\nport_names\x18\x01 \x03(\t\x12*\n\x05speed\x18\x02 \x01(\x0e\x32\x16.otg.Layer1.Speed.EnumH\x00\x88\x01\x01\x12*\n\x05media\x18\x03 \x01(\x0e\x32\x16.otg.Layer1.Media.EnumH\x01\x88\x01\x01\x12\x18\n\x0bpromiscuous\x18\x04 \x01(\x08H\x02\x88\x01\x01\x12\x10\n\x03mtu\x18\x05 \x01(\rH\x03\x88\x01\x01\x12 \n\x13ieee_media_defaults\x18\x06 \x01(\x08H\x04\x88\x01\x01\x12\x1b\n\x0e\x61uto_negotiate\x18\x07 \x01(\x08H\x05\x88\x01\x01\x12\x34\n\x10\x61uto_negotiation\x18\x08 \x01(\x0b\x32\x1a.otg.Layer1AutoNegotiation\x12,\n\x0c\x66low_control\x18\t \x01(\x0b\x32\x16.otg.Layer1FlowControl\x12\x11\n\x04name\x18\n \x01(\tH\x06\x88\x01\x01\x1a\x95\x02\n\x05Speed\"\x8b\x02\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\x14\n\x10speed_10_fd_mbps\x10\x01\x12\x14\n\x10speed_10_hd_mbps\x10\x02\x12\x15\n\x11speed_100_fd_mbps\x10\x03\x12\x15\n\x11speed_100_hd_mbps\x10\x04\x12\x10\n\x0cspeed_1_gbps\x10\x05\x12\x11\n\rspeed_10_gbps\x10\x06\x12\x11\n\rspeed_25_gbps\x10\x07\x12\x11\n\rspeed_40_gbps\x10\x08\x12\x11\n\rspeed_50_gbps\x10\t\x12\x12\n\x0espeed_100_gbps\x10\n\x12\x12\n\x0espeed_200_gbps\x10\x0b\x12\x12\n\x0espeed_400_gbps\x10\x0c\x1a\x42\n\x05Media\"9\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\n\n\x06\x63opper\x10\x01\x12\t\n\x05\x66iber\x10\x02\x12\t\n\x05sgmii\x10\x03\x42\x08\n\x06_speedB\x08\n\x06_mediaB\x0e\n\x0c_promiscuousB\x06\n\x04_mtuB\x16\n\x14_ieee_media_defaultsB\x11\n\x0f_auto_negotiateB\x07\n\x05_name\"\x93\x03\n\x15Layer1AutoNegotiation\x12 \n\x13\x61\x64vertise_1000_mbps\x18\x01 \x01(\x08H\x00\x88\x01\x01\x12\"\n\x15\x61\x64vertise_100_fd_mbps\x18\x02 \x01(\x08H\x01\x88\x01\x01\x12\"\n\x15\x61\x64vertise_100_hd_mbps\x18\x03 \x01(\x08H\x02\x88\x01\x01\x12!\n\x14\x61\x64vertise_10_fd_mbps\x18\x04 \x01(\x08H\x03\x88\x01\x01\x12!\n\x14\x61\x64vertise_10_hd_mbps\x18\x05 \x01(\x08H\x04\x88\x01\x01\x12\x1a\n\rlink_training\x18\x06 \x01(\x08H\x05\x88\x01\x01\x12\x13\n\x06rs_fec\x18\x07 \x01(\x08H\x06\x88\x01\x01\x42\x16\n\x14_advertise_1000_mbpsB\x18\n\x16_advertise_100_fd_mbpsB\x18\n\x16_advertise_100_hd_mbpsB\x17\n\x15_advertise_10_fd_mbpsB\x17\n\x15_advertise_10_hd_mbpsB\x10\n\x0e_link_trainingB\t\n\x07_rs_fec\"\xac\x02\n\x11Layer1FlowControl\x12\x1d\n\x10\x64irected_address\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x37\n\x06\x63hoice\x18\x02 \x01(\x0e\x32\".otg.Layer1FlowControl.Choice.EnumH\x01\x88\x01\x01\x12-\n\rieee_802_1qbb\x18\x03 \x01(\x0b\x32\x16.otg.Layer1Ieee8021qbb\x12)\n\x0bieee_802_3x\x18\x04 \x01(\x0b\x32\x14.otg.Layer1Ieee8023x\x1a\x45\n\x06\x43hoice\";\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\x11\n\rieee_802_1qbb\x10\x01\x12\x0f\n\x0bieee_802_3x\x10\x02\x42\x13\n\x11_directed_addressB\t\n\x07_choice\"\x11\n\x0fLayer1Ieee8023x\"\x89\x03\n\x11Layer1Ieee8021qbb\x12\x16\n\tpfc_delay\x18\x01 \x01(\rH\x00\x88\x01\x01\x12\x18\n\x0bpfc_class_0\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x18\n\x0bpfc_class_1\x18\x03 \x01(\rH\x02\x88\x01\x01\x12\x18\n\x0bpfc_class_2\x18\x04 \x01(\rH\x03\x88\x01\x01\x12\x18\n\x0bpfc_class_3\x18\x05 \x01(\rH\x04\x88\x01\x01\x12\x18\n\x0bpfc_class_4\x18\x06 \x01(\rH\x05\x88\x01\x01\x12\x18\n\x0bpfc_class_5\x18\x07 \x01(\rH\x06\x88\x01\x01\x12\x18\n\x0bpfc_class_6\x18\x08 \x01(\rH\x07\x88\x01\x01\x12\x18\n\x0bpfc_class_7\x18\t \x01(\rH\x08\x88\x01\x01\x42\x0c\n\n_pfc_delayB\x0e\n\x0c_pfc_class_0B\x0e\n\x0c_pfc_class_1B\x0e\n\x0c_pfc_class_2B\x0e\n\x0c_pfc_class_3B\x0e\n\x0c_pfc_class_4B\x0e\n\x0c_pfc_class_5B\x0e\n\x0c_pfc_class_6B\x0e\n\x0c_pfc_class_7\"\xa1\x02\n\x07\x43\x61pture\x12\x12\n\nport_names\x18\x01 \x03(\t\x12#\n\x07\x66ilters\x18\x02 \x03(\x0b\x32\x12.otg.CaptureFilter\x12\x16\n\toverwrite\x18\x03 \x01(\x08H\x00\x88\x01\x01\x12\x18\n\x0bpacket_size\x18\x04 \x01(\rH\x01\x88\x01\x01\x12-\n\x06\x66ormat\x18\x05 \x01(\x0e\x32\x18.otg.Capture.Format.EnumH\x02\x88\x01\x01\x12\x11\n\x04name\x18\x06 \x01(\tH\x03\x88\x01\x01\x1a\x37\n\x06\x46ormat\"-\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\x08\n\x04pcap\x10\x01\x12\n\n\x06pcapng\x10\x02\x42\x0c\n\n_overwriteB\x0e\n\x0c_packet_sizeB\t\n\x07_formatB\x07\n\x05_name\"\xd6\x02\n\rCaptureFilter\x12\x33\n\x06\x63hoice\x18\x01 \x01(\x0e\x32\x1e.otg.CaptureFilter.Choice.EnumH\x00\x88\x01\x01\x12\"\n\x06\x63ustom\x18\x02 \x01(\x0b\x32\x12.otg.CaptureCustom\x12&\n\x08\x65thernet\x18\x03 \x01(\x0b\x32\x14.otg.CaptureEthernet\x12\x1e\n\x04vlan\x18\x04 \x01(\x0b\x32\x10.otg.CaptureVlan\x12\x1e\n\x04ipv4\x18\x05 \x01(\x0b\x32\x10.otg.CaptureIpv4\x12\x1e\n\x04ipv6\x18\x06 \x01(\x0b\x32\x10.otg.CaptureIpv6\x1aY\n\x06\x43hoice\"O\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\n\n\x06\x63ustom\x10\x01\x12\x0c\n\x08\x65thernet\x10\x02\x12\x08\n\x04vlan\x10\x03\x12\x08\n\x04ipv4\x10\x04\x12\x08\n\x04ipv6\x10\x05\x42\t\n\x07_choice\"\xb1\x01\n\rCaptureCustom\x12\x13\n\x06offset\x18\x01 \x01(\rH\x00\x88\x01\x01\x12\x17\n\nbit_length\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x12\n\x05value\x18\x03 \x01(\tH\x02\x88\x01\x01\x12\x11\n\x04mask\x18\x04 \x01(\tH\x03\x88\x01\x01\x12\x13\n\x06negate\x18\x05 \x01(\x08H\x04\x88\x01\x01\x42\t\n\x07_offsetB\r\n\x0b_bit_lengthB\x08\n\x06_valueB\x07\n\x05_maskB\t\n\x07_negate\"h\n\x0c\x43\x61ptureField\x12\x12\n\x05value\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x11\n\x04mask\x18\x02 \x01(\tH\x01\x88\x01\x01\x12\x13\n\x06negate\x18\x03 \x01(\x08H\x02\x88\x01\x01\x42\x08\n\x06_valueB\x07\n\x05_maskB\t\n\x07_negate\"\x9e\x01\n\x0f\x43\x61ptureEthernet\x12\x1e\n\x03src\x18\x01 \x01(\x0b\x32\x11.otg.CaptureField\x12\x1e\n\x03\x64st\x18\x02 \x01(\x0b\x32\x11.otg.CaptureField\x12%\n\nether_type\x18\x03 \x01(\x0b\x32\x11.otg.CaptureField\x12$\n\tpfc_queue\x18\x04 \x01(\x0b\x32\x11.otg.CaptureField\"\x96\x01\n\x0b\x43\x61ptureVlan\x12#\n\x08priority\x18\x01 \x01(\x0b\x32\x11.otg.CaptureField\x12\x1e\n\x03\x63\x66i\x18\x02 \x01(\x0b\x32\x11.otg.CaptureField\x12\x1d\n\x02id\x18\x03 \x01(\x0b\x32\x11.otg.CaptureField\x12#\n\x08protocol\x18\x04 \x01(\x0b\x32\x11.otg.CaptureField\"\xb4\x04\n\x0b\x43\x61ptureIpv4\x12\"\n\x07version\x18\x01 \x01(\x0b\x32\x11.otg.CaptureField\x12(\n\rheader_length\x18\x02 \x01(\x0b\x32\x11.otg.CaptureField\x12#\n\x08priority\x18\x03 \x01(\x0b\x32\x11.otg.CaptureField\x12\'\n\x0ctotal_length\x18\x04 \x01(\x0b\x32\x11.otg.CaptureField\x12)\n\x0eidentification\x18\x05 \x01(\x0b\x32\x11.otg.CaptureField\x12#\n\x08reserved\x18\x06 \x01(\x0b\x32\x11.otg.CaptureField\x12(\n\rdont_fragment\x18\x07 \x01(\x0b\x32\x11.otg.CaptureField\x12)\n\x0emore_fragments\x18\x08 \x01(\x0b\x32\x11.otg.CaptureField\x12*\n\x0f\x66ragment_offset\x18\t \x01(\x0b\x32\x11.otg.CaptureField\x12\'\n\x0ctime_to_live\x18\n \x01(\x0b\x32\x11.otg.CaptureField\x12#\n\x08protocol\x18\x0b \x01(\x0b\x32\x11.otg.CaptureField\x12*\n\x0fheader_checksum\x18\x0c \x01(\x0b\x32\x11.otg.CaptureField\x12\x1e\n\x03src\x18\r \x01(\x0b\x32\x11.otg.CaptureField\x12\x1e\n\x03\x64st\x18\x0e \x01(\x0b\x32\x11.otg.CaptureField\"\xbb\x02\n\x0b\x43\x61ptureIpv6\x12\"\n\x07version\x18\x01 \x01(\x0b\x32\x11.otg.CaptureField\x12(\n\rtraffic_class\x18\x02 \x01(\x0b\x32\x11.otg.CaptureField\x12%\n\nflow_label\x18\x03 \x01(\x0b\x32\x11.otg.CaptureField\x12)\n\x0epayload_length\x18\x04 \x01(\x0b\x32\x11.otg.CaptureField\x12&\n\x0bnext_header\x18\x05 \x01(\x0b\x32\x11.otg.CaptureField\x12$\n\thop_limit\x18\x06 \x01(\x0b\x32\x11.otg.CaptureField\x12\x1e\n\x03src\x18\x07 \x01(\x0b\x32\x11.otg.CaptureField\x12\x1e\n\x03\x64st\x18\x08 \x01(\x0b\x32\x11.otg.CaptureField\"\xb6\x02\n\x06\x44\x65vice\x12&\n\tethernets\x18\x01 \x03(\x0b\x32\x13.otg.DeviceEthernet\x12/\n\x0eipv4_loopbacks\x18\x02 \x03(\x0b\x32\x17.otg.DeviceIpv4Loopback\x12/\n\x0eipv6_loopbacks\x18\x03 \x03(\x0b\x32\x17.otg.DeviceIpv6Loopback\x12#\n\x04isis\x18\x04 \x01(\x0b\x32\x15.otg.DeviceIsisRouter\x12!\n\x03\x62gp\x18\x05 \x01(\x0b\x32\x14.otg.DeviceBgpRouter\x12\x1f\n\x05vxlan\x18\x06 \x01(\x0b\x32\x10.otg.DeviceVxlan\x12\x11\n\x04name\x18\x07 \x01(\tH\x00\x88\x01\x01\x12\x1d\n\x04rsvp\x18\x08 \x01(\x0b\x32\x0f.otg.DeviceRsvpB\x07\n\x05_name\"A\n\x0fProtocolOptions\x12\x1b\n\x0e\x61uto_start_all\x18\x01 \x01(\x08H\x00\x88\x01\x01\x42\x11\n\x0f_auto_start_all\"\xf2\x02\n\x10\x44\x65viceIsisRouter\x12.\n\x08instance\x18\x01 \x01(\x0b\x32\x1c.otg.DeviceIsisMultiInstance\x12\x16\n\tsystem_id\x18\x02 \x01(\tH\x00\x88\x01\x01\x12&\n\ninterfaces\x18\x03 \x03(\x0b\x32\x12.otg.IsisInterface\x12\x1d\n\x05\x62\x61sic\x18\x04 \x01(\x0b\x32\x0e.otg.IsisBasic\x12#\n\x08\x61\x64vanced\x18\x05 \x01(\x0b\x32\x11.otg.IsisAdvanced\x12,\n\x0brouter_auth\x18\x06 \x01(\x0b\x32\x17.otg.IsisAuthentication\x12(\n\tv4_routes\x18\x07 \x03(\x0b\x32\x15.otg.IsisV4RouteRange\x12(\n\tv6_routes\x18\x08 \x03(\x0b\x32\x15.otg.IsisV6RouteRange\x12\x11\n\x04name\x18\t \x01(\tH\x01\x88\x01\x01\x42\x0c\n\n_system_idB\x07\n\x05_name\"B\n\x17\x44\x65viceIsisMultiInstance\x12\x10\n\x03iid\x18\x01 \x01(\rH\x00\x88\x01\x01\x12\r\n\x05itids\x18\x02 \x03(\rB\x06\n\x04_iid\"\x91\x06\n\rIsisInterface\x12\x15\n\x08\x65th_name\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x13\n\x06metric\x18\x02 \x01(\rH\x01\x88\x01\x01\x12>\n\x0cnetwork_type\x18\x03 \x01(\x0e\x32#.otg.IsisInterface.NetworkType.EnumH\x02\x88\x01\x01\x12:\n\nlevel_type\x18\x04 \x01(\x0e\x32!.otg.IsisInterface.LevelType.EnumH\x03\x88\x01\x01\x12,\n\x0bl1_settings\x18\x05 \x01(\x0b\x32\x17.otg.IsisInterfaceLevel\x12,\n\x0bl2_settings\x18\x06 \x01(\x0b\x32\x17.otg.IsisInterfaceLevel\x12\'\n\x12multi_topology_ids\x18\x07 \x03(\x0b\x32\x0b.otg.IsisMT\x12-\n\x13traffic_engineering\x18\x08 \x03(\x0b\x32\x10.otg.LinkStateTE\x12\x38\n\x0e\x61uthentication\x18\t \x01(\x0b\x32 .otg.IsisInterfaceAuthentication\x12,\n\x08\x61\x64vanced\x18\n \x01(\x0b\x32\x1a.otg.IsisInterfaceAdvanced\x12\x39\n\x0flink_protection\x18\x0b \x01(\x0b\x32 .otg.IsisInterfaceLinkProtection\x12\x13\n\x0bsrlg_values\x18\x0c \x03(\r\x12\x11\n\x04name\x18\r \x01(\tH\x04\x88\x01\x01\x1aI\n\x0bNetworkType\":\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\r\n\tbroadcast\x10\x01\x12\x12\n\x0epoint_to_point\x10\x02\x1aM\n\tLevelType\"@\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\x0b\n\x07level_1\x10\x01\x12\x0b\n\x07level_2\x10\x02\x12\r\n\tlevel_1_2\x10\x03\x42\x0b\n\t_eth_nameB\t\n\x07_metricB\x0f\n\r_network_typeB\r\n\x0b_level_typeB\x07\n\x05_name\"\x96\x01\n\x12IsisInterfaceLevel\x12\x15\n\x08priority\x18\x01 \x01(\rH\x00\x88\x01\x01\x12\x1b\n\x0ehello_interval\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x1a\n\rdead_interval\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x0b\n\t_priorityB\x11\n\x0f_hello_intervalB\x10\n\x0e_dead_interval\"P\n\x06IsisMT\x12\x12\n\x05mt_id\x18\x01 \x01(\rH\x00\x88\x01\x01\x12\x18\n\x0blink_metric\x18\x02 \x01(\rH\x01\x88\x01\x01\x42\x08\n\x06_mt_idB\x0e\n\x0c_link_metric\"\xa4\x02\n\x0bLinkStateTE\x12!\n\x14\x61\x64ministrative_group\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x19\n\x0cmetric_level\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x19\n\x0cmax_bandwith\x18\x03 \x01(\rH\x02\x88\x01\x01\x12%\n\x18max_reservable_bandwidth\x18\x04 \x01(\rH\x03\x88\x01\x01\x12=\n\x13priority_bandwidths\x18\x05 \x01(\x0b\x32 .otg.LinkStatepriorityBandwidthsB\x17\n\x15_administrative_groupB\x0f\n\r_metric_levelB\x0f\n\r_max_bandwithB\x1b\n\x19_max_reservable_bandwidth\"\xed\x01\n\x1bLinkStatepriorityBandwidths\x12\x10\n\x03pb0\x18\x01 \x01(\rH\x00\x88\x01\x01\x12\x10\n\x03pb1\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x10\n\x03pb2\x18\x03 \x01(\rH\x02\x88\x01\x01\x12\x10\n\x03pb3\x18\x04 \x01(\rH\x03\x88\x01\x01\x12\x10\n\x03pb4\x18\x05 \x01(\rH\x04\x88\x01\x01\x12\x10\n\x03pb5\x18\x06 \x01(\rH\x05\x88\x01\x01\x12\x10\n\x03pb6\x18\x07 \x01(\rH\x06\x88\x01\x01\x12\x10\n\x03pb7\x18\x08 \x01(\rH\x07\x88\x01\x01\x42\x06\n\x04_pb0B\x06\n\x04_pb1B\x06\n\x04_pb2B\x06\n\x04_pb3B\x06\n\x04_pb4B\x06\n\x04_pb5B\x06\n\x04_pb6B\x06\n\x04_pb7\"\xed\x01\n\x1bIsisInterfaceAuthentication\x12\x46\n\tauth_type\x18\x01 \x01(\x0e\x32..otg.IsisInterfaceAuthentication.AuthType.EnumH\x00\x88\x01\x01\x12\x10\n\x03md5\x18\x02 \x01(\tH\x01\x88\x01\x01\x12\x15\n\x08password\x18\x03 \x01(\tH\x02\x88\x01\x01\x1a:\n\x08\x41uthType\".\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\x07\n\x03md5\x10\x01\x12\x0c\n\x08password\x10\x02\x42\x0c\n\n_auth_typeB\x06\n\x04_md5B\x0b\n\t_password\"\xd3\x02\n\x15IsisInterfaceAdvanced\x12\x1c\n\x0f\x61uto_adjust_mtu\x18\x01 \x01(\x08H\x00\x88\x01\x01\x12\x1d\n\x10\x61uto_adjust_area\x18\x02 \x01(\x08H\x01\x88\x01\x01\x12,\n\x1f\x61uto_adjust_supported_protocols\x18\x03 \x01(\x08H\x02\x88\x01\x01\x12\"\n\x15\x65nable_3way_handshake\x18\x04 \x01(\x08H\x03\x88\x01\x01\x12&\n\x19p2p_hellos_to_unicast_mac\x18\x05 \x01(\x08H\x04\x88\x01\x01\x42\x12\n\x10_auto_adjust_mtuB\x13\n\x11_auto_adjust_areaB\"\n _auto_adjust_supported_protocolsB\x18\n\x16_enable_3way_handshakeB\x1c\n\x1a_p2p_hellos_to_unicast_mac\"\xf9\x02\n\x1bIsisInterfaceLinkProtection\x12\x1a\n\rextra_traffic\x18\x01 \x01(\x08H\x00\x88\x01\x01\x12\x18\n\x0bunprotected\x18\x02 \x01(\x08H\x01\x88\x01\x01\x12\x13\n\x06shared\x18\x03 \x01(\x08H\x02\x88\x01\x01\x12\x1d\n\x10\x64\x65\x64icated_1_to_1\x18\x04 \x01(\x08H\x03\x88\x01\x01\x12\x1f\n\x12\x64\x65\x64icated_1_plus_1\x18\x05 \x01(\x08H\x04\x88\x01\x01\x12\x15\n\x08\x65nhanced\x18\x06 \x01(\x08H\x05\x88\x01\x01\x12\x18\n\x0breserved_40\x18\x07 \x01(\x08H\x06\x88\x01\x01\x12\x18\n\x0breserved_80\x18\x08 \x01(\x08H\x07\x88\x01\x01\x42\x10\n\x0e_extra_trafficB\x0e\n\x0c_unprotectedB\t\n\x07_sharedB\x13\n\x11_dedicated_1_to_1B\x15\n\x13_dedicated_1_plus_1B\x0b\n\t_enhancedB\x0e\n\x0c_reserved_40B\x0e\n\x0c_reserved_80\"\xd5\x01\n\tIsisBasic\x12\x1e\n\x11ipv4_te_router_id\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x15\n\x08hostname\x18\x02 \x01(\tH\x01\x88\x01\x01\x12\x1f\n\x12\x65nable_wide_metric\x18\x03 \x01(\x08H\x02\x88\x01\x01\x12\x1f\n\x12learned_lsp_filter\x18\x04 \x01(\x08H\x03\x88\x01\x01\x42\x14\n\x12_ipv4_te_router_idB\x0b\n\t_hostnameB\x15\n\x13_enable_wide_metricB\x15\n\x13_learned_lsp_filter\"\x8a\x04\n\x0cIsisAdvanced\x12!\n\x14\x65nable_hello_padding\x18\x01 \x01(\x08H\x00\x88\x01\x01\x12\x1f\n\x12max_area_addresses\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x16\n\x0e\x61rea_addresses\x18\x03 \x03(\t\x12\x1d\n\x10lsp_refresh_rate\x18\x04 \x01(\rH\x02\x88\x01\x01\x12\x19\n\x0clsp_lifetime\x18\x05 \x01(\rH\x03\x88\x01\x01\x12\x1a\n\rpsnp_interval\x18\x06 \x01(\rH\x04\x88\x01\x01\x12\x1a\n\rcsnp_interval\x18\x07 \x01(\rH\x05\x88\x01\x01\x12\x19\n\x0cmax_lsp_size\x18\x08 \x01(\rH\x06\x88\x01\x01\x12*\n\x1dlsp_mgroup_min_trans_interval\x18\t \x01(\rH\x07\x88\x01\x01\x12 \n\x13\x65nable_attached_bit\x18\n \x01(\x08H\x08\x88\x01\x01\x42\x17\n\x15_enable_hello_paddingB\x15\n\x13_max_area_addressesB\x13\n\x11_lsp_refresh_rateB\x0f\n\r_lsp_lifetimeB\x10\n\x0e_psnp_intervalB\x10\n\x0e_csnp_intervalB\x0f\n\r_max_lsp_sizeB \n\x1e_lsp_mgroup_min_trans_intervalB\x16\n\x14_enable_attached_bit\"\xae\x01\n\x12IsisAuthentication\x12\x1f\n\x12ignore_receive_md5\x18\x01 \x01(\x08H\x00\x88\x01\x01\x12.\n\tarea_auth\x18\x02 \x01(\x0b\x32\x1b.otg.IsisAuthenticationBase\x12\x30\n\x0b\x64omain_auth\x18\x03 \x01(\x0b\x32\x1b.otg.IsisAuthenticationBaseB\x15\n\x13_ignore_receive_md5\"\xe3\x01\n\x16IsisAuthenticationBase\x12\x41\n\tauth_type\x18\x01 \x01(\x0e\x32).otg.IsisAuthenticationBase.AuthType.EnumH\x00\x88\x01\x01\x12\x10\n\x03md5\x18\x02 \x01(\tH\x01\x88\x01\x01\x12\x15\n\x08password\x18\x03 \x01(\tH\x02\x88\x01\x01\x1a:\n\x08\x41uthType\".\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\x07\n\x03md5\x10\x01\x12\x0c\n\x08password\x10\x02\x42\x0c\n\n_auth_typeB\x06\n\x04_md5B\x0b\n\t_password\"\xd8\x04\n\x10IsisV4RouteRange\x12&\n\taddresses\x18\x01 \x03(\x0b\x32\x13.otg.V4RouteAddress\x12\x18\n\x0blink_metric\x18\x02 \x01(\rH\x00\x88\x01\x01\x12?\n\x0borigin_type\x18\x03 \x01(\x0e\x32%.otg.IsisV4RouteRange.OriginType.EnumH\x01\x88\x01\x01\x12O\n\x13redistribution_type\x18\x04 \x01(\x0e\x32-.otg.IsisV4RouteRange.RedistributionType.EnumH\x02\x88\x01\x01\x12\x11\n\x04name\x18\x05 \x01(\tH\x03\x88\x01\x01\x12 \n\x13prefix_attr_enabled\x18\x06 \x01(\x08H\x04\x88\x01\x01\x12\x13\n\x06x_flag\x18\x07 \x01(\x08H\x05\x88\x01\x01\x12\x13\n\x06r_flag\x18\x08 \x01(\x08H\x06\x88\x01\x01\x12\x13\n\x06n_flag\x18\t \x01(\x08H\x07\x88\x01\x01\x1a\x41\n\nOriginType\"3\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\x0c\n\x08internal\x10\x01\x12\x0c\n\x08\x65xternal\x10\x02\x1a?\n\x12RedistributionType\")\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\x06\n\x02up\x10\x01\x12\x08\n\x04\x64own\x10\x02\x42\x0e\n\x0c_link_metricB\x0e\n\x0c_origin_typeB\x16\n\x14_redistribution_typeB\x07\n\x05_nameB\x16\n\x14_prefix_attr_enabledB\t\n\x07_x_flagB\t\n\x07_r_flagB\t\n\x07_n_flag\"\x8c\x01\n\x0eV4RouteAddress\x12\x14\n\x07\x61\x64\x64ress\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x13\n\x06prefix\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x12\n\x05\x63ount\x18\x03 \x01(\rH\x02\x88\x01\x01\x12\x11\n\x04step\x18\x04 \x01(\rH\x03\x88\x01\x01\x42\n\n\x08_addressB\t\n\x07_prefixB\x08\n\x06_countB\x07\n\x05_step\"\x8c\x01\n\x0eV6RouteAddress\x12\x14\n\x07\x61\x64\x64ress\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x13\n\x06prefix\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x12\n\x05\x63ount\x18\x03 \x01(\rH\x02\x88\x01\x01\x12\x11\n\x04step\x18\x04 \x01(\rH\x03\x88\x01\x01\x42\n\n\x08_addressB\t\n\x07_prefixB\x08\n\x06_countB\x07\n\x05_step\"\x8d\x01\n\x0fMACRouteAddress\x12\x14\n\x07\x61\x64\x64ress\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x13\n\x06prefix\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x12\n\x05\x63ount\x18\x03 \x01(\rH\x02\x88\x01\x01\x12\x11\n\x04step\x18\x04 \x01(\rH\x03\x88\x01\x01\x42\n\n\x08_addressB\t\n\x07_prefixB\x08\n\x06_countB\x07\n\x05_step\"\xd8\x04\n\x10IsisV6RouteRange\x12&\n\taddresses\x18\x01 \x03(\x0b\x32\x13.otg.V6RouteAddress\x12\x18\n\x0blink_metric\x18\x02 \x01(\rH\x00\x88\x01\x01\x12?\n\x0borigin_type\x18\x03 \x01(\x0e\x32%.otg.IsisV6RouteRange.OriginType.EnumH\x01\x88\x01\x01\x12O\n\x13redistribution_type\x18\x04 \x01(\x0e\x32-.otg.IsisV6RouteRange.RedistributionType.EnumH\x02\x88\x01\x01\x12\x11\n\x04name\x18\x05 \x01(\tH\x03\x88\x01\x01\x12 \n\x13prefix_attr_enabled\x18\x06 \x01(\x08H\x04\x88\x01\x01\x12\x13\n\x06x_flag\x18\x07 \x01(\x08H\x05\x88\x01\x01\x12\x13\n\x06r_flag\x18\x08 \x01(\x08H\x06\x88\x01\x01\x12\x13\n\x06n_flag\x18\t \x01(\x08H\x07\x88\x01\x01\x1a\x41\n\nOriginType\"3\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\x0c\n\x08internal\x10\x01\x12\x0c\n\x08\x65xternal\x10\x02\x1a?\n\x12RedistributionType\")\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\x06\n\x02up\x10\x01\x12\x08\n\x04\x64own\x10\x02\x42\x0e\n\x0c_link_metricB\x0e\n\x0c_origin_typeB\x16\n\x14_redistribution_typeB\x07\n\x05_nameB\x16\n\x14_prefix_attr_enabledB\t\n\x07_x_flagB\t\n\x07_r_flagB\t\n\x07_n_flag\"\x93\x01\n\x0f\x44\x65viceBgpRouter\x12\x16\n\trouter_id\x18\x01 \x01(\tH\x00\x88\x01\x01\x12,\n\x0fipv4_interfaces\x18\x02 \x03(\x0b\x32\x13.otg.BgpV4Interface\x12,\n\x0fipv6_interfaces\x18\x03 \x03(\x0b\x32\x13.otg.BgpV6InterfaceB\x0c\n\n_router_id\"\x90\x02\n\x1b\x44\x65viceBgpMessageHeaderError\x12\x43\n\x07subcode\x18\x01 \x01(\x0e\x32-.otg.DeviceBgpMessageHeaderError.Subcode.EnumH\x00\x88\x01\x01\x1a\x9f\x01\n\x07Subcode\"\x93\x01\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12.\n*connection_not_synchronized_code1_subcode1\x10\x01\x12%\n!bad_message_length_code1_subcode2\x10\x02\x12#\n\x1f\x62\x61\x64_message_type_code1_subcode3\x10\x03\x42\n\n\x08_subcode\"\xaa\x03\n\x19\x44\x65viceBgpOpenMessageError\x12\x41\n\x07subcode\x18\x01 \x01(\x0e\x32+.otg.DeviceBgpOpenMessageError.Subcode.EnumH\x00\x88\x01\x01\x1a\xbd\x02\n\x07Subcode\"\xb1\x02\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12-\n)unsupported_version_number_code2_subcode1\x10\x01\x12 \n\x1c\x65rror_peer_as_code2_subcode2\x10\x02\x12\x1f\n\x1b\x65rror_bgp_id_code2_subcode3\x10\x03\x12\x31\n-unsupported_optional_parameter_code2_subcode4\x10\x04\x12\x1e\n\x1a\x61uth_failed_code2_subcode5\x10\x05\x12(\n$unsupported_hold_time_code2_subcode6\x10\x06\x12)\n%unsupported_capability_code2_subcode7\x10\x07\x42\n\n\x08_subcode\"\xdc\x04\n\x1b\x44\x65viceBgpUpdateMessageError\x12\x43\n\x07subcode\x18\x01 \x01(\x0e\x32-.otg.DeviceBgpUpdateMessageError.Subcode.EnumH\x00\x88\x01\x01\x1a\xeb\x03\n\x07Subcode\"\xdf\x03\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12(\n$malformed_attrib_list_code3_subcode1\x10\x01\x12\x30\n,unrecognized_wellknown_attrib_code3_subcode2\x10\x02\x12+\n\'wellknown_attrib_missing_code3_subcode3\x10\x03\x12%\n!attrib_flags_error_code3_subcode4\x10\x04\x12&\n\"attrib_length_error_code3_subcode5\x10\x05\x12(\n$invalid_origin_attrib_code3_subcode6\x10\x06\x12\"\n\x1e\x61s_routing_loop_code3_subcode7\x10\x07\x12&\n\"invalid_nhop_attrib_code3_subcode8\x10\x08\x12(\n$error_optional_attrib_code3_subcode9\x10\t\x12)\n%invalid_network_field_code3_subcode10\x10\n\x12#\n\x1f\x61\x62normal_aspath_code3_subcode11\x10\x0b\x42\n\n\x08_subcode\"\x1b\n\x19\x44\x65viceBgpHoldTimerExpired\"\"\n DeviceBgpFiniteStateMachineError\"\xe3\x03\n\x13\x44\x65viceBgpCeaseError\x12;\n\x07subcode\x18\x01 \x01(\x0e\x32%.otg.DeviceBgpCeaseError.Subcode.EnumH\x00\x88\x01\x01\x1a\x82\x03\n\x07Subcode\"\xf6\x02\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12,\n(max_number_prefix_reached_code6_subcode1\x10\x01\x12!\n\x1d\x61\x64min_shutdown_code6_subcode2\x10\x02\x12\x1f\n\x1bpeer_deleted_code6_subcode3\x10\x03\x12\x1e\n\x1a\x61\x64min_reset_code6_subcode4\x10\x04\x12$\n connection_reject_code6_subcode5\x10\x05\x12\'\n#other_config_changes_code6_subcode6\x10\x06\x12\x32\n.connection_collision_resolution_code6_subcode7\x10\x07\x12#\n\x1fout_of_resources_code6_subcode8\x10\x08\x12#\n\x1f\x62\x66\x64_session_down_code6_subcode9\x10\tB\n\n\x08_subcode\"T\n\x14\x44\x65viceBgpCustomError\x12\x11\n\x04\x63ode\x18\x01 \x01(\rH\x00\x88\x01\x01\x12\x14\n\x07subcode\x18\x02 \x01(\rH\x01\x88\x01\x01\x42\x07\n\x05_codeB\n\n\x08_subcode\"\xb2\x06\n\tBgpV4Peer\x12\x19\n\x0cpeer_address\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x39\n\x16\x65vpn_ethernet_segments\x18\x02 \x03(\x0b\x32\x19.otg.BgpV4EthernetSegment\x12\x30\n\x07\x61s_type\x18\x03 \x01(\x0e\x32\x1a.otg.BgpV4Peer.AsType.EnumH\x01\x88\x01\x01\x12\x16\n\tas_number\x18\x04 \x01(\rH\x02\x88\x01\x01\x12?\n\x0f\x61s_number_width\x18\x05 \x01(\x0e\x32!.otg.BgpV4Peer.AsNumberWidth.EnumH\x03\x88\x01\x01\x12\"\n\x08\x61\x64vanced\x18\x06 \x01(\x0b\x32\x10.otg.BgpAdvanced\x12&\n\ncapability\x18\x07 \x01(\x0b\x32\x12.otg.BgpCapability\x12\x44\n\x1alearned_information_filter\x18\x08 \x01(\x0b\x32 .otg.BgpLearnedInformationFilter\x12\'\n\tv4_routes\x18\t \x03(\x0b\x32\x14.otg.BgpV4RouteRange\x12\'\n\tv6_routes\x18\n \x03(\x0b\x32\x14.otg.BgpV6RouteRange\x12.\n\x10v4_srte_policies\x18\x0b \x03(\x0b\x32\x14.otg.BgpSrteV4Policy\x12.\n\x10v6_srte_policies\x18\x0c \x03(\x0b\x32\x14.otg.BgpSrteV6Policy\x12\x11\n\x04name\x18\r \x01(\tH\x04\x88\x01\x01\x12\x31\n\x10graceful_restart\x18\x0e \x01(\x0b\x32\x17.otg.BgpGracefulRestart\x1a\x35\n\x06\x41sType\"+\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\x08\n\x04ibgp\x10\x01\x12\x08\n\x04\x65\x62gp\x10\x02\x1a;\n\rAsNumberWidth\"*\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\x07\n\x03two\x10\x01\x12\x08\n\x04\x66our\x10\x02\x42\x0f\n\r_peer_addressB\n\n\x08_as_typeB\x0c\n\n_as_numberB\x12\n\x10_as_number_widthB\x07\n\x05_name\"U\n\x0e\x42gpV4Interface\x12\x16\n\tipv4_name\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x1d\n\x05peers\x18\x02 \x03(\x0b\x32\x0e.otg.BgpV4PeerB\x0c\n\n_ipv4_name\"\xf0\x03\n\x14\x42gpV4EthernetSegment\x12\x36\n\x0b\x64\x66_election\x18\x01 \x01(\x0b\x32!.otg.BgpEthernetSegmentDfElection\x12 \n\x04\x65vis\x18\x02 \x03(\x0b\x32\x12.otg.BgpV4EvpnEvis\x12\x10\n\x03\x65si\x18\x03 \x01(\tH\x00\x88\x01\x01\x12\x43\n\x0b\x61\x63tive_mode\x18\x04 \x01(\x0e\x32).otg.BgpV4EthernetSegment.ActiveMode.EnumH\x01\x88\x01\x01\x12\x16\n\tesi_label\x18\x05 \x01(\rH\x02\x88\x01\x01\x12\'\n\x08\x61\x64vanced\x18\x06 \x01(\x0b\x32\x15.otg.BgpRouteAdvanced\x12&\n\x0b\x63ommunities\x18\x07 \x03(\x0b\x32\x11.otg.BgpCommunity\x12-\n\x0f\x65xt_communities\x18\x08 \x03(\x0b\x32\x14.otg.BgpExtCommunity\x12\x1f\n\x07\x61s_path\x18\t \x01(\x0b\x32\x0e.otg.BgpAsPath\x1aH\n\nActiveMode\":\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\x11\n\rsingle_active\x10\x01\x12\x0e\n\nall_active\x10\x02\x42\x06\n\x04_esiB\x0e\n\x0c_active_modeB\x0c\n\n_esi_label\"N\n\x1c\x42gpEthernetSegmentDfElection\x12\x1b\n\x0e\x65lection_timer\x18\x01 \x01(\rH\x00\x88\x01\x01\x42\x11\n\x0f_election_timer\"\xda\x03\n\x10\x42gpRouteAdvanced\x12-\n include_multi_exit_discriminator\x18\x03 \x01(\x08H\x00\x88\x01\x01\x12%\n\x18multi_exit_discriminator\x18\x01 \x01(\rH\x01\x88\x01\x01\x12\x1b\n\x0einclude_origin\x18\x04 \x01(\x08H\x02\x88\x01\x01\x12\x36\n\x06origin\x18\x02 \x01(\x0e\x32!.otg.BgpRouteAdvanced.Origin.EnumH\x03\x88\x01\x01\x12%\n\x18include_local_preference\x18\x05 \x01(\x08H\x04\x88\x01\x01\x12\x1d\n\x10local_preference\x18\x06 \x01(\rH\x05\x88\x01\x01\x1a\x43\n\x06Origin\"9\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\x07\n\x03igp\x10\x01\x12\x07\n\x03\x65gp\x10\x02\x12\x0e\n\nincomplete\x10\x03\x42#\n!_include_multi_exit_discriminatorB\x1b\n\x19_multi_exit_discriminatorB\x11\n\x0f_include_originB\t\n\x07_originB\x1b\n\x19_include_local_preferenceB\x13\n\x11_local_preference\"\xa4\x02\n\x0c\x42gpCommunity\x12.\n\x04type\x18\x01 \x01(\x0e\x32\x1b.otg.BgpCommunity.Type.EnumH\x00\x88\x01\x01\x12\x16\n\tas_number\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x16\n\tas_custom\x18\x03 \x01(\rH\x02\x88\x01\x01\x1a\x8e\x01\n\x04Type\"\x85\x01\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\x14\n\x10manual_as_number\x10\x01\x12\r\n\tno_export\x10\x02\x12\x11\n\rno_advertised\x10\x03\x12\x17\n\x13no_export_subconfed\x10\x04\x12\x0e\n\nllgr_stale\x10\x05\x12\x0b\n\x07no_llgr\x10\x06\x42\x07\n\x05_typeB\x0c\n\n_as_numberB\x0c\n\n_as_custom\"\xf9\x03\n\x0f\x42gpExtCommunity\x12\x31\n\x04type\x18\x01 \x01(\x0e\x32\x1e.otg.BgpExtCommunity.Type.EnumH\x00\x88\x01\x01\x12\x37\n\x07subtype\x18\x02 \x01(\x0e\x32!.otg.BgpExtCommunity.Subtype.EnumH\x01\x88\x01\x01\x12\x12\n\x05value\x18\x03 \x01(\tH\x02\x88\x01\x01\x1a\xbc\x01\n\x04Type\"\xb3\x01\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\x1b\n\x17\x61\x64ministrator_as_2octet\x10\x01\x12\x1e\n\x1a\x61\x64ministrator_ipv4_address\x10\x02\x12\x1b\n\x17\x61\x64ministrator_as_4octet\x10\x03\x12\n\n\x06opaque\x10\x04\x12\x08\n\x04\x65vpn\x10\x05\x12*\n&administrator_as_2octet_link_bandwidth\x10\x06\x1a\x87\x01\n\x07Subtype\"|\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\x10\n\x0croute_target\x10\x01\x12\n\n\x06origin\x10\x02\x12\x16\n\x12\x65xtended_bandwidth\x10\x03\x12\t\n\x05\x63olor\x10\x04\x12\x11\n\rencapsulation\x10\x05\x12\x0f\n\x0bmac_address\x10\x06\x42\x07\n\x05_typeB\n\n\x08_subtypeB\x08\n\x06_value\"\xbe\x02\n\tBgpAsPath\x12\x37\n\x0b\x61s_set_mode\x18\x01 \x01(\x0e\x32\x1d.otg.BgpAsPath.AsSetMode.EnumH\x00\x88\x01\x01\x12\'\n\x08segments\x18\x02 \x03(\x0b\x32\x15.otg.BgpAsPathSegment\x1a\xbe\x01\n\tAsSetMode\"\xb0\x01\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\x1b\n\x17\x64o_not_include_local_as\x10\x01\x12\x12\n\x0einclude_as_seq\x10\x02\x12\x12\n\x0einclude_as_set\x10\x03\x12\x19\n\x15include_as_confed_seq\x10\x04\x12\x19\n\x15include_as_confed_set\x10\x05\x12\x1c\n\x18prepend_to_first_segment\x10\x06\x42\x0e\n\x0c_as_set_mode\"\xc2\x01\n\x10\x42gpAsPathSegment\x12\x32\n\x04type\x18\x01 \x01(\x0e\x32\x1f.otg.BgpAsPathSegment.Type.EnumH\x00\x88\x01\x01\x12\x12\n\nas_numbers\x18\x02 \x03(\r\x1a]\n\x04Type\"U\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\n\n\x06\x61s_seq\x10\x01\x12\n\n\x06\x61s_set\x10\x02\x12\x11\n\ras_confed_seq\x10\x03\x12\x11\n\ras_confed_set\x10\x04\x42\x07\n\x05_type\"\xa8\x01\n\rBgpV4EvpnEvis\x12\x33\n\x06\x63hoice\x18\x01 \x01(\x0e\x32\x1e.otg.BgpV4EvpnEvis.Choice.EnumH\x00\x88\x01\x01\x12%\n\tevi_vxlan\x18\x02 \x01(\x0b\x32\x12.otg.BgpV4EviVxlan\x1a\x30\n\x06\x43hoice\"&\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\r\n\tevi_vxlan\x10\x01\x42\t\n\x07_choice\"\xe3\x05\n\rBgpV4EviVxlan\x12<\n\x11\x62roadcast_domains\x18\x01 \x03(\x0b\x32!.otg.BgpV4EviVxlanBroadcastDomain\x12\x46\n\x10replication_type\x18\x02 \x01(\x0e\x32\'.otg.BgpV4EviVxlan.ReplicationType.EnumH\x00\x88\x01\x01\x12\x17\n\npmsi_label\x18\x03 \x01(\rH\x01\x88\x01\x01\x12\x15\n\x08\x61\x64_label\x18\x04 \x01(\rH\x02\x88\x01\x01\x12\x37\n\x13route_distinguisher\x18\x05 \x01(\x0b\x32\x1a.otg.BgpRouteDistinguisher\x12\x30\n\x13route_target_export\x18\x06 \x03(\x0b\x32\x13.otg.BgpRouteTarget\x12\x30\n\x13route_target_import\x18\x07 \x03(\x0b\x32\x13.otg.BgpRouteTarget\x12\x33\n\x16l3_route_target_export\x18\x08 \x03(\x0b\x32\x13.otg.BgpRouteTarget\x12\x33\n\x16l3_route_target_import\x18\t \x03(\x0b\x32\x13.otg.BgpRouteTarget\x12\'\n\x08\x61\x64vanced\x18\n \x01(\x0b\x32\x15.otg.BgpRouteAdvanced\x12&\n\x0b\x63ommunities\x18\x0b \x03(\x0b\x32\x11.otg.BgpCommunity\x12-\n\x0f\x65xt_communities\x18\x0c \x03(\x0b\x32\x14.otg.BgpExtCommunity\x12\x1f\n\x07\x61s_path\x18\r \x01(\x0b\x32\x0e.otg.BgpAsPath\x1a\x43\n\x0fReplicationType\"0\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\x17\n\x13ingress_replication\x10\x01\x42\x13\n\x11_replication_typeB\r\n\x0b_pmsi_labelB\x0b\n\t_ad_label\"\xb4\x01\n\x1c\x42gpV4EviVxlanBroadcastDomain\x12*\n\rcmac_ip_range\x18\x01 \x03(\x0b\x32\x13.otg.BgpCMacIpRange\x12\x1c\n\x0f\x65thernet_tag_id\x18\x02 \x01(\rH\x00\x88\x01\x01\x12\x1f\n\x12vlan_aware_service\x18\x03 \x01(\x08H\x01\x88\x01\x01\x42\x12\n\x10_ethernet_tag_idB\x15\n\x13_vlan_aware_service\"\xd2\x03\n\x0e\x42gpCMacIpRange\x12+\n\rmac_addresses\x18\x01 \x01(\x0b\x32\x14.otg.MACRouteAddress\x12\x12\n\x05l2vni\x18\x02 \x01(\rH\x00\x88\x01\x01\x12+\n\x0eipv4_addresses\x18\x03 \x01(\x0b\x32\x13.otg.V4RouteAddress\x12+\n\x0eipv6_addresses\x18\x04 \x01(\x0b\x32\x13.otg.V6RouteAddress\x12\x12\n\x05l3vni\x18\x05 \x01(\rH\x01\x88\x01\x01\x12$\n\x17include_default_gateway\x18\x06 \x01(\x08H\x02\x88\x01\x01\x12\'\n\x08\x61\x64vanced\x18\x07 \x01(\x0b\x32\x15.otg.BgpRouteAdvanced\x12&\n\x0b\x63ommunities\x18\x08 \x03(\x0b\x32\x11.otg.BgpCommunity\x12-\n\x0f\x65xt_communities\x18\t \x03(\x0b\x32\x14.otg.BgpExtCommunity\x12\x1f\n\x07\x61s_path\x18\n \x01(\x0b\x32\x0e.otg.BgpAsPath\x12\x11\n\x04name\x18\x0b \x01(\tH\x03\x88\x01\x01\x42\x08\n\x06_l2vniB\x08\n\x06_l3vniB\x1a\n\x18_include_default_gatewayB\x07\n\x05_name\"\x98\x02\n\x15\x42gpRouteDistinguisher\x12<\n\x07rd_type\x18\x01 \x01(\x0e\x32&.otg.BgpRouteDistinguisher.RdType.EnumH\x00\x88\x01\x01\x12#\n\x16\x61uto_config_rd_ip_addr\x18\x02 \x01(\x08H\x01\x88\x01\x01\x12\x15\n\x08rd_value\x18\x03 \x01(\tH\x02\x88\x01\x01\x1aQ\n\x06RdType\"G\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\r\n\tas_2octet\x10\x01\x12\x10\n\x0cipv4_address\x10\x02\x12\r\n\tas_4octet\x10\x03\x42\n\n\x08_rd_typeB\x19\n\x17_auto_config_rd_ip_addrB\x0b\n\t_rd_value\"\xca\x01\n\x0e\x42gpRouteTarget\x12\x35\n\x07rt_type\x18\x01 \x01(\x0e\x32\x1f.otg.BgpRouteTarget.RtType.EnumH\x00\x88\x01\x01\x12\x15\n\x08rt_value\x18\x02 \x01(\tH\x01\x88\x01\x01\x1aQ\n\x06RtType\"G\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\r\n\tas_2octet\x10\x01\x12\x10\n\x0cipv4_address\x10\x02\x12\r\n\tas_4octet\x10\x03\x42\n\n\x08_rt_typeB\x0b\n\t_rt_value\"\x83\x03\n\x0b\x42gpAdvanced\x12\x1f\n\x12hold_time_interval\x18\x01 \x01(\rH\x00\x88\x01\x01\x12 \n\x13keep_alive_interval\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x1c\n\x0fupdate_interval\x18\x03 \x01(\rH\x02\x88\x01\x01\x12\x19\n\x0ctime_to_live\x18\x04 \x01(\rH\x03\x88\x01\x01\x12\x14\n\x07md5_key\x18\x05 \x01(\tH\x04\x88\x01\x01\x12\x19\n\x0cpassive_mode\x18\x06 \x01(\x08H\x05\x88\x01\x01\x12\x18\n\x0blisten_port\x18\x07 \x01(\rH\x06\x88\x01\x01\x12\x1a\n\rneighbor_port\x18\x08 \x01(\rH\x07\x88\x01\x01\x42\x15\n\x13_hold_time_intervalB\x16\n\x14_keep_alive_intervalB\x12\n\x10_update_intervalB\x0f\n\r_time_to_liveB\n\n\x08_md5_keyB\x0f\n\r_passive_modeB\x0e\n\x0c_listen_portB\x10\n\x0e_neighbor_port\"\x91\n\n\rBgpCapability\x12\x19\n\x0cipv4_unicast\x18\x01 \x01(\x08H\x00\x88\x01\x01\x12\x1b\n\x0eipv4_multicast\x18\x02 \x01(\x08H\x01\x88\x01\x01\x12\x19\n\x0cipv6_unicast\x18\x03 \x01(\x08H\x02\x88\x01\x01\x12\x1b\n\x0eipv6_multicast\x18\x04 \x01(\x08H\x03\x88\x01\x01\x12\x11\n\x04vpls\x18\x05 \x01(\x08H\x04\x88\x01\x01\x12\x1a\n\rroute_refresh\x18\x06 \x01(\x08H\x05\x88\x01\x01\x12\x1d\n\x10route_constraint\x18\x07 \x01(\x08H\x06\x88\x01\x01\x12\x1f\n\x12link_state_non_vpn\x18\x08 \x01(\x08H\x07\x88\x01\x01\x12\x1b\n\x0elink_state_vpn\x18\t \x01(\x08H\x08\x88\x01\x01\x12\x11\n\x04\x65vpn\x18\n \x01(\x08H\t\x88\x01\x01\x12\'\n\x1a\x65xtended_next_hop_encoding\x18\x0b \x01(\x08H\n\x88\x01\x01\x12\x1f\n\x12ipv4_multicast_vpn\x18\x0c \x01(\x08H\x0b\x88\x01\x01\x12\x1a\n\ripv4_mpls_vpn\x18\r \x01(\x08H\x0c\x88\x01\x01\x12\x15\n\x08ipv4_mdt\x18\x0e \x01(\x08H\r\x88\x01\x01\x12$\n\x17ipv4_multicast_mpls_vpn\x18\x0f \x01(\x08H\x0e\x88\x01\x01\x12#\n\x16ipv4_unicast_flow_spec\x18\x10 \x01(\x08H\x0f\x88\x01\x01\x12\x1e\n\x11ipv4_sr_te_policy\x18\x11 \x01(\x08H\x10\x88\x01\x01\x12\"\n\x15ipv4_unicast_add_path\x18\x12 \x01(\x08H\x11\x88\x01\x01\x12\x1f\n\x12ipv6_multicast_vpn\x18\x13 \x01(\x08H\x12\x88\x01\x01\x12\x1a\n\ripv6_mpls_vpn\x18\x14 \x01(\x08H\x13\x88\x01\x01\x12\x15\n\x08ipv6_mdt\x18\x15 \x01(\x08H\x14\x88\x01\x01\x12$\n\x17ipv6_multicast_mpls_vpn\x18\x16 \x01(\x08H\x15\x88\x01\x01\x12#\n\x16ipv6_unicast_flow_spec\x18\x17 \x01(\x08H\x16\x88\x01\x01\x12\x1e\n\x11ipv6_sr_te_policy\x18\x18 \x01(\x08H\x17\x88\x01\x01\x12\"\n\x15ipv6_unicast_add_path\x18\x19 \x01(\x08H\x18\x88\x01\x01\x42\x0f\n\r_ipv4_unicastB\x11\n\x0f_ipv4_multicastB\x0f\n\r_ipv6_unicastB\x11\n\x0f_ipv6_multicastB\x07\n\x05_vplsB\x10\n\x0e_route_refreshB\x13\n\x11_route_constraintB\x15\n\x13_link_state_non_vpnB\x11\n\x0f_link_state_vpnB\x07\n\x05_evpnB\x1d\n\x1b_extended_next_hop_encodingB\x15\n\x13_ipv4_multicast_vpnB\x10\n\x0e_ipv4_mpls_vpnB\x0b\n\t_ipv4_mdtB\x1a\n\x18_ipv4_multicast_mpls_vpnB\x19\n\x17_ipv4_unicast_flow_specB\x14\n\x12_ipv4_sr_te_policyB\x18\n\x16_ipv4_unicast_add_pathB\x15\n\x13_ipv6_multicast_vpnB\x10\n\x0e_ipv6_mpls_vpnB\x0b\n\t_ipv6_mdtB\x1a\n\x18_ipv6_multicast_mpls_vpnB\x19\n\x17_ipv6_unicast_flow_specB\x14\n\x12_ipv6_sr_te_policyB\x18\n\x16_ipv6_unicast_add_path\"\x91\x01\n\x1b\x42gpLearnedInformationFilter\x12 \n\x13unicast_ipv4_prefix\x18\x01 \x01(\x08H\x00\x88\x01\x01\x12 \n\x13unicast_ipv6_prefix\x18\x02 \x01(\x08H\x01\x88\x01\x01\x42\x16\n\x14_unicast_ipv4_prefixB\x16\n\x14_unicast_ipv6_prefix\"\x94\x06\n\x0f\x42gpV4RouteRange\x12&\n\taddresses\x18\x01 \x03(\x0b\x32\x13.otg.V4RouteAddress\x12\x41\n\rnext_hop_mode\x18\x02 \x01(\x0e\x32%.otg.BgpV4RouteRange.NextHopMode.EnumH\x00\x88\x01\x01\x12P\n\x15next_hop_address_type\x18\x03 \x01(\x0e\x32,.otg.BgpV4RouteRange.NextHopAddressType.EnumH\x01\x88\x01\x01\x12\"\n\x15next_hop_ipv4_address\x18\x04 \x01(\tH\x02\x88\x01\x01\x12\"\n\x15next_hop_ipv6_address\x18\x05 \x01(\tH\x03\x88\x01\x01\x12\'\n\x08\x61\x64vanced\x18\x06 \x01(\x0b\x32\x15.otg.BgpRouteAdvanced\x12&\n\x0b\x63ommunities\x18\x07 \x03(\x0b\x32\x11.otg.BgpCommunity\x12\x1f\n\x07\x61s_path\x18\x08 \x01(\x0b\x32\x0e.otg.BgpAsPath\x12!\n\x08\x61\x64\x64_path\x18\t \x01(\x0b\x32\x0f.otg.BgpAddPath\x12\x11\n\x04name\x18\n \x01(\tH\x04\x88\x01\x01\x12-\n\x0f\x65xt_communities\x18\x0b \x03(\x0b\x32\x14.otg.BgpExtCommunity\x12\x37\n\x14\x65xtended_communities\x18\x0c \x03(\x0b\x32\x19.otg.BgpExtendedCommunity\x1a@\n\x0bNextHopMode\"1\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\x0c\n\x08local_ip\x10\x01\x12\n\n\x06manual\x10\x02\x1a\x41\n\x12NextHopAddressType\"+\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\x08\n\x04ipv4\x10\x01\x12\x08\n\x04ipv6\x10\x02\x42\x10\n\x0e_next_hop_modeB\x18\n\x16_next_hop_address_typeB\x18\n\x16_next_hop_ipv4_addressB\x18\n\x16_next_hop_ipv6_addressB\x07\n\x05_name\".\n\nBgpAddPath\x12\x14\n\x07path_id\x18\x01 \x01(\rH\x00\x88\x01\x01\x42\n\n\x08_path_id\"\xf3\x06\n\x14\x42gpExtendedCommunity\x12:\n\x06\x63hoice\x18\x01 \x01(\x0e\x32%.otg.BgpExtendedCommunity.Choice.EnumH\x00\x88\x01\x01\x12R\n\x19transitive_2octet_as_type\x18\x02 \x01(\x0b\x32/.otg.BgpExtendedCommunityTransitive2OctetAsType\x12X\n\x1ctransitive_ipv4_address_type\x18\x03 \x01(\x0b\x32\x32.otg.BgpExtendedCommunityTransitiveIpv4AddressType\x12R\n\x19transitive_4octet_as_type\x18\x04 \x01(\x0b\x32/.otg.BgpExtendedCommunityTransitive4OctetAsType\x12M\n\x16transitive_opaque_type\x18\x05 \x01(\x0b\x32-.otg.BgpExtendedCommunityTransitiveOpaqueType\x12I\n\x14transitive_evpn_type\x18\x06 \x01(\x0b\x32+.otg.BgpExtendedCommunityTransitiveEvpnType\x12Y\n\x1dnon_transitive_2octet_as_type\x18\x07 \x01(\x0b\x32\x32.otg.BgpExtendedCommunityNonTransitive2OctetAsType\x12\x33\n\x06\x63ustom\x18\x08 \x01(\x0b\x32#.otg.BgpExtendedCommunityCustomType\x1a\xe7\x01\n\x06\x43hoice\"\xdc\x01\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\x1d\n\x19transitive_2octet_as_type\x10\x01\x12 \n\x1ctransitive_ipv4_address_type\x10\x02\x12\x1d\n\x19transitive_4octet_as_type\x10\x03\x12\x1a\n\x16transitive_opaque_type\x10\x04\x12\x18\n\x14transitive_evpn_type\x10\x05\x12!\n\x1dnon_transitive_2octet_as_type\x10\x06\x12\n\n\x06\x63ustom\x10\x07\x42\t\n\x07_choice\"\x9f\x01\n5BgpExtendedCommunityTransitive2OctetAsTypeRouteTarget\x12\x1c\n\x0fglobal_2byte_as\x18\x01 \x01(\rH\x00\x88\x01\x01\x12\x1e\n\x11local_4byte_admin\x18\x02 \x01(\rH\x01\x88\x01\x01\x42\x12\n\x10_global_2byte_asB\x14\n\x12_local_4byte_admin\"\x9f\x01\n5BgpExtendedCommunityTransitive2OctetAsTypeRouteOrigin\x12\x1c\n\x0fglobal_2byte_as\x18\x01 \x01(\rH\x00\x88\x01\x01\x12\x1e\n\x11local_4byte_admin\x18\x02 \x01(\rH\x01\x88\x01\x01\x42\x12\n\x10_global_2byte_asB\x14\n\x12_local_4byte_admin\"\x94\x03\n*BgpExtendedCommunityTransitive2OctetAsType\x12P\n\x06\x63hoice\x18\x01 \x01(\x0e\x32;.otg.BgpExtendedCommunityTransitive2OctetAsType.Choice.EnumH\x00\x88\x01\x01\x12X\n\x14route_target_subtype\x18\x02 \x01(\x0b\x32:.otg.BgpExtendedCommunityTransitive2OctetAsTypeRouteTarget\x12X\n\x14route_origin_subtype\x18\x03 \x01(\x0b\x32:.otg.BgpExtendedCommunityTransitive2OctetAsTypeRouteOrigin\x1aU\n\x06\x43hoice\"K\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\x18\n\x14route_target_subtype\x10\x01\x12\x18\n\x14route_origin_subtype\x10\x02\x42\t\n\x07_choice\"\xa6\x01\n8BgpExtendedCommunityTransitiveIpv4AddressTypeRouteOrigin\x12\x1e\n\x11global_ipv4_admin\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x1e\n\x11local_2byte_admin\x18\x02 \x01(\rH\x01\x88\x01\x01\x42\x14\n\x12_global_ipv4_adminB\x14\n\x12_local_2byte_admin\"\xa6\x01\n8BgpExtendedCommunityTransitiveIpv4AddressTypeRouteTarget\x12\x1e\n\x11global_ipv4_admin\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x1e\n\x11local_2byte_admin\x18\x02 \x01(\rH\x01\x88\x01\x01\x42\x14\n\x12_global_ipv4_adminB\x14\n\x12_local_2byte_admin\"\xa0\x03\n-BgpExtendedCommunityTransitiveIpv4AddressType\x12S\n\x06\x63hoice\x18\x01 \x01(\x0e\x32>.otg.BgpExtendedCommunityTransitiveIpv4AddressType.Choice.EnumH\x00\x88\x01\x01\x12[\n\x14route_target_subtype\x18\x02 \x01(\x0b\x32=.otg.BgpExtendedCommunityTransitiveIpv4AddressTypeRouteTarget\x12[\n\x14route_origin_subtype\x18\x03 \x01(\x0b\x32=.otg.BgpExtendedCommunityTransitiveIpv4AddressTypeRouteOrigin\x1aU\n\x06\x43hoice\"K\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\x18\n\x14route_target_subtype\x10\x01\x12\x18\n\x14route_origin_subtype\x10\x02\x42\t\n\x07_choice\"\x9f\x01\n5BgpExtendedCommunityTransitive4OctetAsTypeRouteTarget\x12\x1c\n\x0fglobal_4byte_as\x18\x01 \x01(\rH\x00\x88\x01\x01\x12\x1e\n\x11local_2byte_admin\x18\x02 \x01(\rH\x01\x88\x01\x01\x42\x12\n\x10_global_4byte_asB\x14\n\x12_local_2byte_admin\"\x9f\x01\n5BgpExtendedCommunityTransitive4OctetAsTypeRouteOrigin\x12\x1c\n\x0fglobal_4byte_as\x18\x01 \x01(\rH\x00\x88\x01\x01\x12\x1e\n\x11local_2byte_admin\x18\x02 \x01(\rH\x01\x88\x01\x01\x42\x12\n\x10_global_4byte_asB\x14\n\x12_local_2byte_admin\"\x94\x03\n*BgpExtendedCommunityTransitive4OctetAsType\x12P\n\x06\x63hoice\x18\x01 \x01(\x0e\x32;.otg.BgpExtendedCommunityTransitive4OctetAsType.Choice.EnumH\x00\x88\x01\x01\x12X\n\x14route_target_subtype\x18\x02 \x01(\x0b\x32:.otg.BgpExtendedCommunityTransitive4OctetAsTypeRouteTarget\x12X\n\x14route_origin_subtype\x18\x03 \x01(\x0b\x32:.otg.BgpExtendedCommunityTransitive4OctetAsTypeRouteOrigin\x1aU\n\x06\x43hoice\"K\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\x18\n\x14route_target_subtype\x10\x01\x12\x18\n\x14route_origin_subtype\x10\x02\x42\t\n\x07_choice\"k\n-BgpExtendedCommunityTransitiveOpaqueTypeColor\x12\x12\n\x05\x66lags\x18\x01 \x01(\rH\x00\x88\x01\x01\x12\x12\n\x05\x63olor\x18\x02 \x01(\rH\x01\x88\x01\x01\x42\x08\n\x06_flagsB\x08\n\x06_color\"\x85\x01\n5BgpExtendedCommunityTransitiveOpaqueTypeEncapsulation\x12\x15\n\x08reserved\x18\x01 \x01(\rH\x00\x88\x01\x01\x12\x18\n\x0btunnel_type\x18\x02 \x01(\rH\x01\x88\x01\x01\x42\x0b\n\t_reservedB\x0e\n\x0c_tunnel_type\"\xfc\x02\n(BgpExtendedCommunityTransitiveOpaqueType\x12N\n\x06\x63hoice\x18\x01 \x01(\x0e\x32\x39.otg.BgpExtendedCommunityTransitiveOpaqueType.Choice.EnumH\x00\x88\x01\x01\x12I\n\rcolor_subtype\x18\x02 \x01(\x0b\x32\x32.otg.BgpExtendedCommunityTransitiveOpaqueTypeColor\x12Y\n\x15\x65ncapsulation_subtype\x18\x03 \x01(\x0b\x32:.otg.BgpExtendedCommunityTransitiveOpaqueTypeEncapsulation\x1aO\n\x06\x43hoice\"E\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\x11\n\rcolor_subtype\x10\x01\x12\x19\n\x15\x65ncapsulation_subtype\x10\x02\x42\t\n\x07_choice\"Y\n/BgpExtendedCommunityTransitiveEvpnTypeRouterMac\x12\x17\n\nrouter_mac\x18\x01 \x01(\tH\x00\x88\x01\x01\x42\r\n\x0b_router_mac\"\x8e\x02\n&BgpExtendedCommunityTransitiveEvpnType\x12L\n\x06\x63hoice\x18\x01 \x01(\x0e\x32\x37.otg.BgpExtendedCommunityTransitiveEvpnType.Choice.EnumH\x00\x88\x01\x01\x12P\n\x12router_mac_subtype\x18\x02 \x01(\x0b\x32\x34.otg.BgpExtendedCommunityTransitiveEvpnTypeRouterMac\x1a\x39\n\x06\x43hoice\"/\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\x16\n\x12router_mac_subtype\x10\x01\x42\t\n\x07_choice\"\x94\x01\n:BgpExtendedCommunityNonTransitive2OctetAsTypeLinkBandwidth\x12\x1c\n\x0fglobal_2byte_as\x18\x01 \x01(\rH\x00\x88\x01\x01\x12\x16\n\tbandwidth\x18\x02 \x01(\x02H\x01\x88\x01\x01\x42\x12\n\x10_global_2byte_asB\x0c\n\n_bandwidth\"\xaf\x02\n-BgpExtendedCommunityNonTransitive2OctetAsType\x12S\n\x06\x63hoice\x18\x01 \x01(\x0e\x32>.otg.BgpExtendedCommunityNonTransitive2OctetAsType.Choice.EnumH\x00\x88\x01\x01\x12_\n\x16link_bandwidth_subtype\x18\x02 \x01(\x0b\x32?.otg.BgpExtendedCommunityNonTransitive2OctetAsTypeLinkBandwidth\x1a=\n\x06\x43hoice\"3\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\x1a\n\x16link_bandwidth_subtype\x10\x01\x42\t\n\x07_choice\"\xa4\x01\n\x1e\x42gpExtendedCommunityCustomType\x12\x1b\n\x0e\x63ommunity_type\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x1e\n\x11\x63ommunity_subtype\x18\x02 \x01(\tH\x01\x88\x01\x01\x12\x12\n\x05value\x18\x03 \x01(\tH\x02\x88\x01\x01\x42\x11\n\x0f_community_typeB\x14\n\x12_community_subtypeB\x08\n\x06_value\"\x94\x06\n\x0f\x42gpV6RouteRange\x12&\n\taddresses\x18\x01 \x03(\x0b\x32\x13.otg.V6RouteAddress\x12\x41\n\rnext_hop_mode\x18\x02 \x01(\x0e\x32%.otg.BgpV6RouteRange.NextHopMode.EnumH\x00\x88\x01\x01\x12P\n\x15next_hop_address_type\x18\x03 \x01(\x0e\x32,.otg.BgpV6RouteRange.NextHopAddressType.EnumH\x01\x88\x01\x01\x12\"\n\x15next_hop_ipv4_address\x18\x04 \x01(\tH\x02\x88\x01\x01\x12\"\n\x15next_hop_ipv6_address\x18\x05 \x01(\tH\x03\x88\x01\x01\x12\'\n\x08\x61\x64vanced\x18\x06 \x01(\x0b\x32\x15.otg.BgpRouteAdvanced\x12&\n\x0b\x63ommunities\x18\x07 \x03(\x0b\x32\x11.otg.BgpCommunity\x12\x1f\n\x07\x61s_path\x18\x08 \x01(\x0b\x32\x0e.otg.BgpAsPath\x12!\n\x08\x61\x64\x64_path\x18\t \x01(\x0b\x32\x0f.otg.BgpAddPath\x12\x11\n\x04name\x18\n \x01(\tH\x04\x88\x01\x01\x12-\n\x0f\x65xt_communities\x18\x0b \x03(\x0b\x32\x14.otg.BgpExtCommunity\x12\x37\n\x14\x65xtended_communities\x18\x0c \x03(\x0b\x32\x19.otg.BgpExtendedCommunity\x1a@\n\x0bNextHopMode\"1\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\x0c\n\x08local_ip\x10\x01\x12\n\n\x06manual\x10\x02\x1a\x41\n\x12NextHopAddressType\"+\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\x08\n\x04ipv4\x10\x01\x12\x08\n\x04ipv6\x10\x02\x42\x10\n\x0e_next_hop_modeB\x18\n\x16_next_hop_address_typeB\x18\n\x16_next_hop_ipv4_addressB\x18\n\x16_next_hop_ipv6_addressB\x07\n\x05_name\"\xfb\x06\n\x0f\x42gpSrteV4Policy\x12\x1a\n\rdistinguisher\x18\x01 \x01(\rH\x00\x88\x01\x01\x12\x12\n\x05\x63olor\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x1a\n\ripv4_endpoint\x18\x03 \x01(\tH\x02\x88\x01\x01\x12\x41\n\rnext_hop_mode\x18\x04 \x01(\x0e\x32%.otg.BgpSrteV4Policy.NextHopMode.EnumH\x03\x88\x01\x01\x12P\n\x15next_hop_address_type\x18\x05 \x01(\x0e\x32,.otg.BgpSrteV4Policy.NextHopAddressType.EnumH\x04\x88\x01\x01\x12\"\n\x15next_hop_ipv4_address\x18\x06 \x01(\tH\x05\x88\x01\x01\x12\"\n\x15next_hop_ipv6_address\x18\x07 \x01(\tH\x06\x88\x01\x01\x12\'\n\x08\x61\x64vanced\x18\x08 \x01(\x0b\x32\x15.otg.BgpRouteAdvanced\x12!\n\x08\x61\x64\x64_path\x18\t \x01(\x0b\x32\x0f.otg.BgpAddPath\x12\x1f\n\x07\x61s_path\x18\n \x01(\x0b\x32\x0e.otg.BgpAsPath\x12&\n\x0b\x63ommunities\x18\x0b \x03(\x0b\x32\x11.otg.BgpCommunity\x12-\n\x0f\x65xt_communities\x18\x0c \x03(\x0b\x32\x14.otg.BgpExtCommunity\x12,\n\x0btunnel_tlvs\x18\r \x03(\x0b\x32\x17.otg.BgpSrteV4TunnelTlv\x12\x11\n\x04name\x18\x0e \x01(\tH\x07\x88\x01\x01\x12\x13\n\x06\x61\x63tive\x18\x0f \x01(\x08H\x08\x88\x01\x01\x1a@\n\x0bNextHopMode\"1\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\x0c\n\x08local_ip\x10\x01\x12\n\n\x06manual\x10\x02\x1a\x41\n\x12NextHopAddressType\"+\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\x08\n\x04ipv4\x10\x01\x12\x08\n\x04ipv6\x10\x02\x42\x10\n\x0e_distinguisherB\x08\n\x06_colorB\x10\n\x0e_ipv4_endpointB\x10\n\x0e_next_hop_modeB\x18\n\x16_next_hop_address_typeB\x18\n\x16_next_hop_ipv4_addressB\x18\n\x16_next_hop_ipv6_addressB\x07\n\x05_nameB\t\n\x07_active\"\xb6\x04\n\x12\x42gpSrteV4TunnelTlv\x12\x41\n\x17remote_endpoint_sub_tlv\x18\x01 \x01(\x0b\x32 .otg.BgpSrteRemoteEndpointSubTlv\x12.\n\rcolor_sub_tlv\x18\x02 \x01(\x0b\x32\x17.otg.BgpSrteColorSubTlv\x12\x32\n\x0f\x62inding_sub_tlv\x18\x03 \x01(\x0b\x32\x19.otg.BgpSrteBindingSubTlv\x12\x38\n\x12preference_sub_tlv\x18\x04 \x01(\x0b\x32\x1c.otg.BgpSrtePreferenceSubTlv\x12\x41\n\x17policy_priority_sub_tlv\x18\x05 \x01(\x0b\x32 .otg.BgpSrtePolicyPrioritySubTlv\x12\x39\n\x13policy_name_sub_tlv\x18\x06 \x01(\x0b\x32\x1c.otg.BgpSrtePolicyNameSubTlv\x12U\n\"explicit_null_label_policy_sub_tlv\x18\x07 \x01(\x0b\x32).otg.BgpSrteExplicitNullLabelPolicySubTlv\x12.\n\rsegment_lists\x18\x08 \x03(\x0b\x32\x17.otg.BgpSrteSegmentList\x12\x11\n\x04name\x18\t \x01(\tH\x00\x88\x01\x01\x12\x13\n\x06\x61\x63tive\x18\n \x01(\x08H\x01\x88\x01\x01\x42\x07\n\x05_nameB\t\n\x07_active\"\xbe\x02\n\x1b\x42gpSrteRemoteEndpointSubTlv\x12\x16\n\tas_number\x18\x01 \x01(\rH\x00\x88\x01\x01\x12P\n\x0e\x61\x64\x64ress_family\x18\x02 \x01(\x0e\x32\x33.otg.BgpSrteRemoteEndpointSubTlv.AddressFamily.EnumH\x01\x88\x01\x01\x12\x19\n\x0cipv4_address\x18\x03 \x01(\tH\x02\x88\x01\x01\x12\x19\n\x0cipv6_address\x18\x04 \x01(\tH\x03\x88\x01\x01\x1a<\n\rAddressFamily\"+\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\x08\n\x04ipv4\x10\x01\x12\x08\n\x04ipv6\x10\x02\x42\x0c\n\n_as_numberB\x11\n\x0f_address_familyB\x0f\n\r_ipv4_addressB\x0f\n\r_ipv6_address\"2\n\x12\x42gpSrteColorSubTlv\x12\x12\n\x05\x63olor\x18\x01 \x01(\tH\x00\x88\x01\x01\x42\x08\n\x06_color\"\xea\x02\n\x14\x42gpSrteBindingSubTlv\x12L\n\x10\x62inding_sid_type\x18\x01 \x01(\x0e\x32-.otg.BgpSrteBindingSubTlv.BindingSidType.EnumH\x00\x88\x01\x01\x12\x1b\n\x0e\x66our_octet_sid\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x15\n\x08ipv6_sid\x18\x03 \x01(\tH\x02\x88\x01\x01\x12\x13\n\x06s_flag\x18\x04 \x01(\x08H\x03\x88\x01\x01\x12\x13\n\x06i_flag\x18\x05 \x01(\x08H\x04\x88\x01\x01\x1a[\n\x0e\x42indingSidType\"I\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\x0e\n\nno_binding\x10\x01\x12\x12\n\x0e\x66our_octet_sid\x10\x02\x12\x0c\n\x08ipv6_sid\x10\x03\x42\x13\n\x11_binding_sid_typeB\x11\n\x0f_four_octet_sidB\x0b\n\t_ipv6_sidB\t\n\x07_s_flagB\t\n\x07_i_flag\"A\n\x17\x42gpSrtePreferenceSubTlv\x12\x17\n\npreference\x18\x01 \x01(\rH\x00\x88\x01\x01\x42\r\n\x0b_preference\"O\n\x1b\x42gpSrtePolicyPrioritySubTlv\x12\x1c\n\x0fpolicy_priority\x18\x01 \x01(\rH\x00\x88\x01\x01\x42\x12\n\x10_policy_priority\"C\n\x17\x42gpSrtePolicyNameSubTlv\x12\x18\n\x0bpolicy_name\x18\x01 \x01(\tH\x00\x88\x01\x01\x42\x0e\n\x0c_policy_name\"\xd6\x02\n$BgpSrteExplicitNullLabelPolicySubTlv\x12o\n\x1a\x65xplicit_null_label_policy\x18\x01 \x01(\x0e\x32\x46.otg.BgpSrteExplicitNullLabelPolicySubTlv.ExplicitNullLabelPolicy.EnumH\x00\x88\x01\x01\x1a\x9d\x01\n\x17\x45xplicitNullLabelPolicy\"\x81\x01\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\x11\n\rreserved_enlp\x10\x01\x12\x12\n\x0epush_ipv4_enlp\x10\x02\x12\x12\n\x0epush_ipv6_enlp\x10\x03\x12\x17\n\x13push_ipv4_ipv6_enlp\x10\x04\x12\x14\n\x10\x64o_not_push_enlp\x10\x05\x42\x1d\n\x1b_explicit_null_label_policy\"\x97\x01\n\x12\x42gpSrteSegmentList\x12\x13\n\x06weight\x18\x01 \x01(\rH\x00\x88\x01\x01\x12%\n\x08segments\x18\x02 \x03(\x0b\x32\x13.otg.BgpSrteSegment\x12\x11\n\x04name\x18\x03 \x01(\tH\x01\x88\x01\x01\x12\x13\n\x06\x61\x63tive\x18\x04 \x01(\x08H\x02\x88\x01\x01\x42\t\n\x07_weightB\x07\n\x05_nameB\t\n\x07_active\"\xdc\x06\n\x0e\x42gpSrteSegment\x12?\n\x0csegment_type\x18\x01 \x01(\x0e\x32$.otg.BgpSrteSegment.SegmentType.EnumH\x00\x88\x01\x01\x12.\n\x06type_a\x18\x02 \x01(\x0b\x32\x1e.otg.BgpSrteSegmentATypeSubTlv\x12.\n\x06type_b\x18\x03 \x01(\x0b\x32\x1e.otg.BgpSrteSegmentBTypeSubTlv\x12.\n\x06type_c\x18\x04 \x01(\x0b\x32\x1e.otg.BgpSrteSegmentCTypeSubTlv\x12.\n\x06type_d\x18\x05 \x01(\x0b\x32\x1e.otg.BgpSrteSegmentDTypeSubTlv\x12.\n\x06type_e\x18\x06 \x01(\x0b\x32\x1e.otg.BgpSrteSegmentETypeSubTlv\x12.\n\x06type_f\x18\x07 \x01(\x0b\x32\x1e.otg.BgpSrteSegmentFTypeSubTlv\x12.\n\x06type_g\x18\x08 \x01(\x0b\x32\x1e.otg.BgpSrteSegmentGTypeSubTlv\x12.\n\x06type_h\x18\t \x01(\x0b\x32\x1e.otg.BgpSrteSegmentHTypeSubTlv\x12.\n\x06type_i\x18\n \x01(\x0b\x32\x1e.otg.BgpSrteSegmentITypeSubTlv\x12.\n\x06type_j\x18\x0b \x01(\x0b\x32\x1e.otg.BgpSrteSegmentJTypeSubTlv\x12.\n\x06type_k\x18\x0c \x01(\x0b\x32\x1e.otg.BgpSrteSegmentKTypeSubTlv\x12\x11\n\x04name\x18\r \x01(\tH\x01\x88\x01\x01\x12\x13\n\x06\x61\x63tive\x18\x0e \x01(\x08H\x02\x88\x01\x01\x1a\xab\x01\n\x0bSegmentType\"\x9b\x01\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\n\n\x06type_a\x10\x01\x12\n\n\x06type_b\x10\x02\x12\n\n\x06type_c\x10\x03\x12\n\n\x06type_d\x10\x04\x12\n\n\x06type_e\x10\x05\x12\n\n\x06type_f\x10\x06\x12\n\n\x06type_g\x10\x07\x12\n\n\x06type_h\x10\x08\x12\n\n\x06type_i\x10\t\x12\n\n\x06type_j\x10\n\x12\n\n\x06type_k\x10\x0b\x42\x0f\n\r_segment_typeB\x07\n\x05_nameB\t\n\x07_active\"\x80\x01\n\x10\x42gpSrteSrMplsSid\x12\x12\n\x05label\x18\x01 \x01(\rH\x00\x88\x01\x01\x12\x0f\n\x02tc\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x12\n\x05s_bit\x18\x03 \x01(\x08H\x02\x88\x01\x01\x12\x10\n\x03ttl\x18\x04 \x01(\rH\x03\x88\x01\x01\x42\x08\n\x06_labelB\x05\n\x03_tcB\x08\n\x06_s_bitB\x06\n\x04_ttl\"\xca\x01\n*BgpSrteSRv6SIDEndpointBehaviorAndStructure\x12\x16\n\tlb_length\x18\x01 \x01(\rH\x00\x88\x01\x01\x12\x16\n\tln_length\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x18\n\x0b\x66unc_length\x18\x03 \x01(\rH\x02\x88\x01\x01\x12\x17\n\narg_length\x18\x04 \x01(\rH\x03\x88\x01\x01\x42\x0c\n\n_lb_lengthB\x0c\n\n_ln_lengthB\x0e\n\x0c_func_lengthB\r\n\x0b_arg_length\"\xa7\x01\n\x19\x42gpSrteSegmentATypeSubTlv\x12\x12\n\x05\x66lags\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x12\n\x05label\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x0f\n\x02tc\x18\x03 \x01(\rH\x02\x88\x01\x01\x12\x12\n\x05s_bit\x18\x04 \x01(\x08H\x03\x88\x01\x01\x12\x10\n\x03ttl\x18\x05 \x01(\rH\x04\x88\x01\x01\x42\x08\n\x06_flagsB\x08\n\x06_labelB\x05\n\x03_tcB\x08\n\x06_s_bitB\x06\n\x04_ttl\"\xb2\x01\n\x19\x42gpSrteSegmentBTypeSubTlv\x12\x12\n\x05\x66lags\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x15\n\x08srv6_sid\x18\x02 \x01(\tH\x01\x88\x01\x01\x12S\n\x1asrv6_sid_endpoint_behavior\x18\x03 \x01(\x0b\x32/.otg.BgpSrteSRv6SIDEndpointBehaviorAndStructureB\x08\n\x06_flagsB\x0b\n\t_srv6_sid\"\xc7\x01\n\x19\x42gpSrteSegmentCTypeSubTlv\x12\x12\n\x05\x66lags\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x19\n\x0csr_algorithm\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x1e\n\x11ipv4_node_address\x18\x03 \x01(\tH\x02\x88\x01\x01\x12*\n\x0bsr_mpls_sid\x18\x04 \x01(\x0b\x32\x15.otg.BgpSrteSrMplsSidB\x08\n\x06_flagsB\x0f\n\r_sr_algorithmB\x14\n\x12_ipv4_node_address\"\xc7\x01\n\x19\x42gpSrteSegmentDTypeSubTlv\x12\x12\n\x05\x66lags\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x19\n\x0csr_algorithm\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x1e\n\x11ipv6_node_address\x18\x03 \x01(\tH\x02\x88\x01\x01\x12*\n\x0bsr_mpls_sid\x18\x04 \x01(\x0b\x32\x15.otg.BgpSrteSrMplsSidB\x08\n\x06_flagsB\x0f\n\r_sr_algorithmB\x14\n\x12_ipv6_node_address\"\xd3\x01\n\x19\x42gpSrteSegmentETypeSubTlv\x12\x12\n\x05\x66lags\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x1f\n\x12local_interface_id\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x1e\n\x11ipv4_node_address\x18\x03 \x01(\tH\x02\x88\x01\x01\x12*\n\x0bsr_mpls_sid\x18\x04 \x01(\x0b\x32\x15.otg.BgpSrteSrMplsSidB\x08\n\x06_flagsB\x15\n\x13_local_interface_idB\x14\n\x12_ipv4_node_address\"\xd7\x01\n\x19\x42gpSrteSegmentFTypeSubTlv\x12\x12\n\x05\x66lags\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x1f\n\x12local_ipv4_address\x18\x02 \x01(\tH\x01\x88\x01\x01\x12 \n\x13remote_ipv4_address\x18\x03 \x01(\tH\x02\x88\x01\x01\x12*\n\x0bsr_mpls_sid\x18\x04 \x01(\x0b\x32\x15.otg.BgpSrteSrMplsSidB\x08\n\x06_flagsB\x15\n\x13_local_ipv4_addressB\x16\n\x14_remote_ipv4_address\"\xdd\x02\n\x19\x42gpSrteSegmentGTypeSubTlv\x12\x12\n\x05\x66lags\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x1f\n\x12local_interface_id\x18\x02 \x01(\rH\x01\x88\x01\x01\x12$\n\x17local_ipv6_node_address\x18\x03 \x01(\tH\x02\x88\x01\x01\x12 \n\x13remote_interface_id\x18\x04 \x01(\rH\x03\x88\x01\x01\x12%\n\x18remote_ipv6_node_address\x18\x05 \x01(\tH\x04\x88\x01\x01\x12*\n\x0bsr_mpls_sid\x18\x06 \x01(\x0b\x32\x15.otg.BgpSrteSrMplsSidB\x08\n\x06_flagsB\x15\n\x13_local_interface_idB\x1a\n\x18_local_ipv6_node_addressB\x16\n\x14_remote_interface_idB\x1b\n\x19_remote_ipv6_node_address\"\xd7\x01\n\x19\x42gpSrteSegmentHTypeSubTlv\x12\x12\n\x05\x66lags\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x1f\n\x12local_ipv6_address\x18\x02 \x01(\tH\x01\x88\x01\x01\x12 \n\x13remote_ipv6_address\x18\x03 \x01(\tH\x02\x88\x01\x01\x12*\n\x0bsr_mpls_sid\x18\x04 \x01(\x0b\x32\x15.otg.BgpSrteSrMplsSidB\x08\n\x06_flagsB\x15\n\x13_local_ipv6_addressB\x16\n\x14_remote_ipv6_address\"\xe8\x01\n\x19\x42gpSrteSegmentITypeSubTlv\x12\x12\n\x05\x66lags\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x1e\n\x11ipv6_node_address\x18\x02 \x01(\tH\x01\x88\x01\x01\x12\x15\n\x08srv6_sid\x18\x03 \x01(\tH\x02\x88\x01\x01\x12S\n\x1asrv6_sid_endpoint_behavior\x18\x04 \x01(\x0b\x32/.otg.BgpSrteSRv6SIDEndpointBehaviorAndStructureB\x08\n\x06_flagsB\x14\n\x12_ipv6_node_addressB\x0b\n\t_srv6_sid\"\xd6\x03\n\x19\x42gpSrteSegmentJTypeSubTlv\x12\x12\n\x05\x66lags\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x19\n\x0csr_algorithm\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x1f\n\x12local_interface_id\x18\x03 \x01(\rH\x02\x88\x01\x01\x12$\n\x17local_ipv6_node_address\x18\x04 \x01(\tH\x03\x88\x01\x01\x12 \n\x13remote_interface_id\x18\x05 \x01(\rH\x04\x88\x01\x01\x12%\n\x18remote_ipv6_node_address\x18\x06 \x01(\tH\x05\x88\x01\x01\x12\x15\n\x08srv6_sid\x18\x07 \x01(\tH\x06\x88\x01\x01\x12S\n\x1asrv6_sid_endpoint_behavior\x18\x08 \x01(\x0b\x32/.otg.BgpSrteSRv6SIDEndpointBehaviorAndStructureB\x08\n\x06_flagsB\x0f\n\r_sr_algorithmB\x15\n\x13_local_interface_idB\x1a\n\x18_local_ipv6_node_addressB\x16\n\x14_remote_interface_idB\x1b\n\x19_remote_ipv6_node_addressB\x0b\n\t_srv6_sid\"\xd0\x02\n\x19\x42gpSrteSegmentKTypeSubTlv\x12\x12\n\x05\x66lags\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x19\n\x0csr_algorithm\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x1f\n\x12local_ipv6_address\x18\x03 \x01(\tH\x02\x88\x01\x01\x12 \n\x13remote_ipv6_address\x18\x04 \x01(\tH\x03\x88\x01\x01\x12\x15\n\x08srv6_sid\x18\x05 \x01(\tH\x04\x88\x01\x01\x12S\n\x1asrv6_sid_endpoint_behavior\x18\x06 \x01(\x0b\x32/.otg.BgpSrteSRv6SIDEndpointBehaviorAndStructureB\x08\n\x06_flagsB\x0f\n\r_sr_algorithmB\x15\n\x13_local_ipv6_addressB\x16\n\x14_remote_ipv6_addressB\x0b\n\t_srv6_sid\"\xfa\x06\n\x0f\x42gpSrteV6Policy\x12\x1a\n\rdistinguisher\x18\x01 \x01(\rH\x00\x88\x01\x01\x12\x12\n\x05\x63olor\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x1a\n\ripv6_endpoint\x18\x03 \x01(\tH\x02\x88\x01\x01\x12\x41\n\rnext_hop_mode\x18\x04 \x01(\x0e\x32%.otg.BgpSrteV6Policy.NextHopMode.EnumH\x03\x88\x01\x01\x12P\n\x15next_hop_address_type\x18\x05 \x01(\x0e\x32,.otg.BgpSrteV6Policy.NextHopAddressType.EnumH\x04\x88\x01\x01\x12\"\n\x15next_hop_ipv4_address\x18\x06 \x01(\tH\x05\x88\x01\x01\x12\"\n\x15next_hop_ipv6_address\x18\x07 \x01(\tH\x06\x88\x01\x01\x12\'\n\x08\x61\x64vanced\x18\x08 \x01(\x0b\x32\x15.otg.BgpRouteAdvanced\x12!\n\x08\x61\x64\x64_path\x18\t \x01(\x0b\x32\x0f.otg.BgpAddPath\x12\x1f\n\x07\x61s_path\x18\n \x01(\x0b\x32\x0e.otg.BgpAsPath\x12&\n\x0b\x63ommunities\x18\x0b \x03(\x0b\x32\x11.otg.BgpCommunity\x12,\n\x0e\x65xtcommunities\x18\x0c \x03(\x0b\x32\x14.otg.BgpExtCommunity\x12,\n\x0btunnel_tlvs\x18\r \x03(\x0b\x32\x17.otg.BgpSrteV6TunnelTlv\x12\x11\n\x04name\x18\x0e \x01(\tH\x07\x88\x01\x01\x12\x13\n\x06\x61\x63tive\x18\x0f \x01(\x08H\x08\x88\x01\x01\x1a@\n\x0bNextHopMode\"1\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\x0c\n\x08local_ip\x10\x01\x12\n\n\x06manual\x10\x02\x1a\x41\n\x12NextHopAddressType\"+\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\x08\n\x04ipv4\x10\x01\x12\x08\n\x04ipv6\x10\x02\x42\x10\n\x0e_distinguisherB\x08\n\x06_colorB\x10\n\x0e_ipv6_endpointB\x10\n\x0e_next_hop_modeB\x18\n\x16_next_hop_address_typeB\x18\n\x16_next_hop_ipv4_addressB\x18\n\x16_next_hop_ipv6_addressB\x07\n\x05_nameB\t\n\x07_active\"\xb6\x04\n\x12\x42gpSrteV6TunnelTlv\x12\x41\n\x17remote_endpoint_sub_tlv\x18\x01 \x01(\x0b\x32 .otg.BgpSrteRemoteEndpointSubTlv\x12.\n\rcolor_sub_tlv\x18\x02 \x01(\x0b\x32\x17.otg.BgpSrteColorSubTlv\x12\x32\n\x0f\x62inding_sub_tlv\x18\x03 \x01(\x0b\x32\x19.otg.BgpSrteBindingSubTlv\x12\x38\n\x12preference_sub_tlv\x18\x04 \x01(\x0b\x32\x1c.otg.BgpSrtePreferenceSubTlv\x12\x41\n\x17policy_priority_sub_tlv\x18\x05 \x01(\x0b\x32 .otg.BgpSrtePolicyPrioritySubTlv\x12\x39\n\x13policy_name_sub_tlv\x18\x06 \x01(\x0b\x32\x1c.otg.BgpSrtePolicyNameSubTlv\x12U\n\"explicit_null_label_policy_sub_tlv\x18\x07 \x01(\x0b\x32).otg.BgpSrteExplicitNullLabelPolicySubTlv\x12.\n\rsegment_lists\x18\x08 \x03(\x0b\x32\x17.otg.BgpSrteSegmentList\x12\x11\n\x04name\x18\t \x01(\tH\x00\x88\x01\x01\x12\x13\n\x06\x61\x63tive\x18\n \x01(\x08H\x01\x88\x01\x01\x42\x07\n\x05_nameB\t\n\x07_active\"\xb8\x01\n\x12\x42gpGracefulRestart\x12\x16\n\tenable_gr\x18\x01 \x01(\x08H\x00\x88\x01\x01\x12\x19\n\x0crestart_time\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x18\n\x0b\x65nable_llgr\x18\x03 \x01(\x08H\x02\x88\x01\x01\x12\x17\n\nstale_time\x18\x04 \x01(\rH\x03\x88\x01\x01\x42\x0c\n\n_enable_grB\x0f\n\r_restart_timeB\x0e\n\x0c_enable_llgrB\r\n\x0b_stale_time\"\xe5\x06\n\tBgpV6Peer\x12\x19\n\x0cpeer_address\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x31\n\x0fsegment_routing\x18\x02 \x01(\x0b\x32\x18.otg.BgpV6SegmentRouting\x12\x39\n\x16\x65vpn_ethernet_segments\x18\x03 \x03(\x0b\x32\x19.otg.BgpV6EthernetSegment\x12\x30\n\x07\x61s_type\x18\x04 \x01(\x0e\x32\x1a.otg.BgpV6Peer.AsType.EnumH\x01\x88\x01\x01\x12\x16\n\tas_number\x18\x05 \x01(\rH\x02\x88\x01\x01\x12?\n\x0f\x61s_number_width\x18\x06 \x01(\x0e\x32!.otg.BgpV6Peer.AsNumberWidth.EnumH\x03\x88\x01\x01\x12\"\n\x08\x61\x64vanced\x18\x07 \x01(\x0b\x32\x10.otg.BgpAdvanced\x12&\n\ncapability\x18\x08 \x01(\x0b\x32\x12.otg.BgpCapability\x12\x44\n\x1alearned_information_filter\x18\t \x01(\x0b\x32 .otg.BgpLearnedInformationFilter\x12\'\n\tv4_routes\x18\n \x03(\x0b\x32\x14.otg.BgpV4RouteRange\x12\'\n\tv6_routes\x18\x0b \x03(\x0b\x32\x14.otg.BgpV6RouteRange\x12.\n\x10v4_srte_policies\x18\x0c \x03(\x0b\x32\x14.otg.BgpSrteV4Policy\x12.\n\x10v6_srte_policies\x18\r \x03(\x0b\x32\x14.otg.BgpSrteV6Policy\x12\x11\n\x04name\x18\x0e \x01(\tH\x04\x88\x01\x01\x12\x31\n\x10graceful_restart\x18\x0f \x01(\x0b\x32\x17.otg.BgpGracefulRestart\x1a\x35\n\x06\x41sType\"+\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\x08\n\x04ibgp\x10\x01\x12\x08\n\x04\x65\x62gp\x10\x02\x1a;\n\rAsNumberWidth\"*\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\x07\n\x03two\x10\x01\x12\x08\n\x04\x66our\x10\x02\x42\x0f\n\r_peer_addressB\n\n\x08_as_typeB\x0c\n\n_as_numberB\x12\n\x10_as_number_widthB\x07\n\x05_name\"U\n\x0e\x42gpV6Interface\x12\x16\n\tipv6_name\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x1d\n\x05peers\x18\x02 \x03(\x0b\x32\x0e.otg.BgpV6PeerB\x0c\n\n_ipv6_name\"\xf1\x03\n\x13\x42gpV6SegmentRouting\x12!\n\x14ingress_supports_vpn\x18\x01 \x01(\x08H\x00\x88\x01\x01\x12\"\n\x15reduced_encapsulation\x18\x02 \x01(\x08H\x01\x88\x01\x01\x12\x1e\n\x11\x63opy_time_to_live\x18\x03 \x01(\x08H\x02\x88\x01\x01\x12\x19\n\x0ctime_to_live\x18\x04 \x01(\rH\x03\x88\x01\x01\x12\x1d\n\x10max_sids_per_srh\x18\x05 \x01(\rH\x04\x88\x01\x01\x12-\n auto_generate_segment_left_value\x18\x06 \x01(\x08H\x05\x88\x01\x01\x12\x1f\n\x12segment_left_value\x18\x07 \x01(\rH\x06\x88\x01\x01\x12#\n\x16\x61\x64vertise_sr_te_policy\x18\x08 \x01(\x08H\x07\x88\x01\x01\x42\x17\n\x15_ingress_supports_vpnB\x18\n\x16_reduced_encapsulationB\x14\n\x12_copy_time_to_liveB\x0f\n\r_time_to_liveB\x13\n\x11_max_sids_per_srhB#\n!_auto_generate_segment_left_valueB\x15\n\x13_segment_left_valueB\x19\n\x17_advertise_sr_te_policy\"\xf0\x03\n\x14\x42gpV6EthernetSegment\x12\x36\n\x0b\x64\x66_election\x18\x01 \x01(\x0b\x32!.otg.BgpEthernetSegmentDfElection\x12 \n\x04\x65vis\x18\x02 \x03(\x0b\x32\x12.otg.BgpV6EvpnEvis\x12\x10\n\x03\x65si\x18\x03 \x01(\tH\x00\x88\x01\x01\x12\x43\n\x0b\x61\x63tive_mode\x18\x04 \x01(\x0e\x32).otg.BgpV6EthernetSegment.ActiveMode.EnumH\x01\x88\x01\x01\x12\x16\n\tesi_label\x18\x05 \x01(\rH\x02\x88\x01\x01\x12\'\n\x08\x61\x64vanced\x18\x06 \x01(\x0b\x32\x15.otg.BgpRouteAdvanced\x12&\n\x0b\x63ommunities\x18\x07 \x03(\x0b\x32\x11.otg.BgpCommunity\x12-\n\x0f\x65xt_communities\x18\x08 \x03(\x0b\x32\x14.otg.BgpExtCommunity\x12\x1f\n\x07\x61s_path\x18\t \x01(\x0b\x32\x0e.otg.BgpAsPath\x1aH\n\nActiveMode\":\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\x11\n\rsingle_active\x10\x01\x12\x0e\n\nall_active\x10\x02\x42\x06\n\x04_esiB\x0e\n\x0c_active_modeB\x0c\n\n_esi_label\"\xa8\x01\n\rBgpV6EvpnEvis\x12\x33\n\x06\x63hoice\x18\x01 \x01(\x0e\x32\x1e.otg.BgpV6EvpnEvis.Choice.EnumH\x00\x88\x01\x01\x12%\n\tevi_vxlan\x18\x02 \x01(\x0b\x32\x12.otg.BgpV6EviVxlan\x1a\x30\n\x06\x43hoice\"&\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\r\n\tevi_vxlan\x10\x01\x42\t\n\x07_choice\"\xe3\x05\n\rBgpV6EviVxlan\x12<\n\x11\x62roadcast_domains\x18\x01 \x03(\x0b\x32!.otg.BgpV6EviVxlanBroadcastDomain\x12\x46\n\x10replication_type\x18\x02 \x01(\x0e\x32\'.otg.BgpV6EviVxlan.ReplicationType.EnumH\x00\x88\x01\x01\x12\x17\n\npmsi_label\x18\x03 \x01(\rH\x01\x88\x01\x01\x12\x15\n\x08\x61\x64_label\x18\x04 \x01(\rH\x02\x88\x01\x01\x12\x37\n\x13route_distinguisher\x18\x05 \x01(\x0b\x32\x1a.otg.BgpRouteDistinguisher\x12\x30\n\x13route_target_export\x18\x06 \x03(\x0b\x32\x13.otg.BgpRouteTarget\x12\x30\n\x13route_target_import\x18\x07 \x03(\x0b\x32\x13.otg.BgpRouteTarget\x12\x33\n\x16l3_route_target_export\x18\x08 \x03(\x0b\x32\x13.otg.BgpRouteTarget\x12\x33\n\x16l3_route_target_import\x18\t \x03(\x0b\x32\x13.otg.BgpRouteTarget\x12\'\n\x08\x61\x64vanced\x18\n \x01(\x0b\x32\x15.otg.BgpRouteAdvanced\x12&\n\x0b\x63ommunities\x18\x0b \x03(\x0b\x32\x11.otg.BgpCommunity\x12-\n\x0f\x65xt_communities\x18\x0c \x03(\x0b\x32\x14.otg.BgpExtCommunity\x12\x1f\n\x07\x61s_path\x18\r \x01(\x0b\x32\x0e.otg.BgpAsPath\x1a\x43\n\x0fReplicationType\"0\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\x17\n\x13ingress_replication\x10\x01\x42\x13\n\x11_replication_typeB\r\n\x0b_pmsi_labelB\x0b\n\t_ad_label\"\xb4\x01\n\x1c\x42gpV6EviVxlanBroadcastDomain\x12*\n\rcmac_ip_range\x18\x01 \x03(\x0b\x32\x13.otg.BgpCMacIpRange\x12\x1c\n\x0f\x65thernet_tag_id\x18\x02 \x01(\rH\x00\x88\x01\x01\x12\x1f\n\x12vlan_aware_service\x18\x03 \x01(\x08H\x01\x88\x01\x01\x42\x12\n\x10_ethernet_tag_idB\x15\n\x13_vlan_aware_service\"]\n\x0b\x44\x65viceVxlan\x12&\n\nv4_tunnels\x18\x01 \x03(\x0b\x32\x12.otg.VxlanV4Tunnel\x12&\n\nv6_tunnels\x18\x02 \x03(\x0b\x32\x12.otg.VxlanV6Tunnel\"\xbb\x01\n\rVxlanV4Tunnel\x12\x1d\n\x10source_interface\x18\x01 \x01(\tH\x00\x88\x01\x01\x12@\n\x13\x64\x65stination_ip_mode\x18\x02 \x01(\x0b\x32#.otg.VxlanV4TunnelDestinationIPMode\x12\x10\n\x03vni\x18\x03 \x01(\rH\x01\x88\x01\x01\x12\x11\n\x04name\x18\x04 \x01(\tH\x02\x88\x01\x01\x42\x13\n\x11_source_interfaceB\x06\n\x04_vniB\x07\n\x05_name\"\xbb\x01\n\rVxlanV6Tunnel\x12\x1d\n\x10source_interface\x18\x01 \x01(\tH\x00\x88\x01\x01\x12@\n\x13\x64\x65stination_ip_mode\x18\x02 \x01(\x0b\x32#.otg.VxlanV6TunnelDestinationIPMode\x12\x10\n\x03vni\x18\x03 \x01(\rH\x01\x88\x01\x01\x12\x11\n\x04name\x18\x04 \x01(\tH\x02\x88\x01\x01\x42\x13\n\x11_source_interfaceB\x06\n\x04_vniB\x07\n\x05_name\"\xae\x02\n\x1eVxlanV4TunnelDestinationIPMode\x12\x44\n\x06\x63hoice\x18\x01 \x01(\x0e\x32/.otg.VxlanV4TunnelDestinationIPMode.Choice.EnumH\x00\x88\x01\x01\x12;\n\x07unicast\x18\x02 \x01(\x0b\x32*.otg.VxlanV4TunnelDestinationIPModeUnicast\x12?\n\tmulticast\x18\x03 \x01(\x0b\x32,.otg.VxlanV4TunnelDestinationIPModeMulticast\x1a=\n\x06\x43hoice\"3\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\x0b\n\x07unicast\x10\x01\x12\r\n\tmulticast\x10\x02\x42\t\n\x07_choice\"\xae\x02\n\x1eVxlanV6TunnelDestinationIPMode\x12\x44\n\x06\x63hoice\x18\x01 \x01(\x0e\x32/.otg.VxlanV6TunnelDestinationIPMode.Choice.EnumH\x00\x88\x01\x01\x12;\n\x07unicast\x18\x02 \x01(\x0b\x32*.otg.VxlanV6TunnelDestinationIPModeUnicast\x12?\n\tmulticast\x18\x03 \x01(\x0b\x32,.otg.VxlanV6TunnelDestinationIPModeMulticast\x1a=\n\x06\x43hoice\"3\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\x0b\n\x07unicast\x10\x01\x12\r\n\tmulticast\x10\x02\x42\t\n\x07_choice\"f\n%VxlanV4TunnelDestinationIPModeUnicast\x12=\n\x05vteps\x18\x01 \x03(\x0b\x32..otg.VxlanV4TunnelDestinationIPModeUnicastVtep\"f\n%VxlanV6TunnelDestinationIPModeUnicast\x12=\n\x05vteps\x18\x01 \x03(\x0b\x32..otg.VxlanV6TunnelDestinationIPModeUnicastVtep\"\x96\x01\n6VxlanTunnelDestinationIPModeUnicastArpSuppressionCache\x12\x1a\n\rremote_vm_mac\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x1b\n\x0eremote_vm_ipv4\x18\x02 \x01(\tH\x01\x88\x01\x01\x42\x10\n\x0e_remote_vm_macB\x11\n\x0f_remote_vm_ipv4\"\xc1\x01\n)VxlanV4TunnelDestinationIPModeUnicastVtep\x12 \n\x13remote_vtep_address\x18\x01 \x01(\tH\x00\x88\x01\x01\x12Z\n\x15\x61rp_suppression_cache\x18\x02 \x03(\x0b\x32;.otg.VxlanTunnelDestinationIPModeUnicastArpSuppressionCacheB\x16\n\x14_remote_vtep_address\"\xc1\x01\n)VxlanV6TunnelDestinationIPModeUnicastVtep\x12 \n\x13remote_vtep_address\x18\x01 \x01(\tH\x00\x88\x01\x01\x12Z\n\x15\x61rp_suppression_cache\x18\x02 \x03(\x0b\x32;.otg.VxlanTunnelDestinationIPModeUnicastArpSuppressionCacheB\x16\n\x14_remote_vtep_address\"K\n\'VxlanV4TunnelDestinationIPModeMulticast\x12\x14\n\x07\x61\x64\x64ress\x18\x01 \x01(\tH\x00\x88\x01\x01\x42\n\n\x08_address\"K\n\'VxlanV6TunnelDestinationIPModeMulticast\x12\x14\n\x07\x61\x64\x64ress\x18\x01 \x01(\tH\x00\x88\x01\x01\x42\n\n\x08_address\"\x91\x01\n\nDeviceRsvp\x12/\n\x0fipv4_interfaces\x18\x01 \x03(\x0b\x32\x16.otg.RsvpIpv4Interface\x12\x36\n\x13lsp_ipv4_interfaces\x18\x02 \x03(\x0b\x32\x19.otg.RsvpLspIpv4Interface\x12\x11\n\x04name\x18\x03 \x01(\tH\x00\x88\x01\x01\x42\x07\n\x05_name\"\xc5\x04\n\x11RsvpIpv4Interface\x12\x16\n\tipv4_name\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x18\n\x0bneighbor_ip\x18\x02 \x01(\tH\x01\x88\x01\x01\x12\x1e\n\x11label_space_start\x18\x03 \x01(\rH\x02\x88\x01\x01\x12\x1c\n\x0flabel_space_end\x18\x04 \x01(\rH\x03\x88\x01\x01\x12%\n\x18\x65nable_refresh_reduction\x18\x05 \x01(\x08H\x04\x88\x01\x01\x12%\n\x18summary_refresh_interval\x18\x06 \x01(\rH\x05\x88\x01\x01\x12\x18\n\x0bsend_bundle\x18\x07 \x01(\x08H\x06\x88\x01\x01\x12\x1d\n\x10\x62undle_threshold\x18\x08 \x01(\rH\x07\x88\x01\x01\x12\x19\n\x0c\x65nable_hello\x18\t \x01(\x08H\x08\x88\x01\x01\x12\x1b\n\x0ehello_interval\x18\n \x01(\rH\t\x88\x01\x01\x12\x1f\n\x12timeout_multiplier\x18\x0b \x01(\rH\n\x88\x01\x01\x42\x0c\n\n_ipv4_nameB\x0e\n\x0c_neighbor_ipB\x14\n\x12_label_space_startB\x12\n\x10_label_space_endB\x1b\n\x19_enable_refresh_reductionB\x1b\n\x19_summary_refresh_intervalB\x0e\n\x0c_send_bundleB\x13\n\x11_bundle_thresholdB\x0f\n\r_enable_helloB\x11\n\x0f_hello_intervalB\x15\n\x13_timeout_multiplier\"\xd0\x01\n\x14RsvpLspIpv4Interface\x12\x16\n\tipv4_name\x18\x01 \x01(\tH\x00\x88\x01\x01\x12G\n\x14p2p_egress_ipv4_lsps\x18\x02 \x01(\x0b\x32).otg.RsvpLspIpv4InterfaceP2PEgressIpv4Lsp\x12I\n\x15p2p_ingress_ipv4_lsps\x18\x03 \x03(\x0b\x32*.otg.RsvpLspIpv4InterfaceP2PIngressIpv4LspB\x0c\n\n_ipv4_name\"\xf1\x03\n$RsvpLspIpv4InterfaceP2PEgressIpv4Lsp\x12\x11\n\x04name\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x1d\n\x10refresh_interval\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x1f\n\x12timeout_multiplier\x18\x03 \x01(\rH\x02\x88\x01\x01\x12_\n\x11reservation_style\x18\x04 \x01(\x0e\x32?.otg.RsvpLspIpv4InterfaceP2PEgressIpv4Lsp.ReservationStyle.EnumH\x03\x88\x01\x01\x12\x1f\n\x12\x65nable_fixed_label\x18\x05 \x01(\x08H\x04\x88\x01\x01\x12\x1e\n\x11\x66ixed_label_value\x18\x06 \x01(\rH\x05\x88\x01\x01\x1a\\\n\x10ReservationStyle\"H\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\x13\n\x0fshared_explicit\x10\x01\x12\x10\n\x0c\x66ixed_filter\x10\x02\x12\x08\n\x04\x61uto\x10\x03\x42\x07\n\x05_nameB\x13\n\x11_refresh_intervalB\x15\n\x13_timeout_multiplierB\x14\n\x12_reservation_styleB\x15\n\x13_enable_fixed_labelB\x14\n\x12_fixed_label_value\"\xab\x04\n%RsvpLspIpv4InterfaceP2PIngressIpv4Lsp\x12\x11\n\x04name\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x1b\n\x0eremote_address\x18\x02 \x01(\tH\x01\x88\x01\x01\x12\x16\n\ttunnel_id\x18\x03 \x01(\rH\x02\x88\x01\x01\x12\x13\n\x06lsp_id\x18\x04 \x01(\rH\x03\x88\x01\x01\x12\x1d\n\x10refresh_interval\x18\x05 \x01(\rH\x04\x88\x01\x01\x12\x1f\n\x12timeout_multiplier\x18\x06 \x01(\rH\x05\x88\x01\x01\x12\x1a\n\rbackup_lsp_id\x18\x07 \x01(\rH\x06\x88\x01\x01\x12!\n\x14lsp_switchover_delay\x18\x08 \x01(\rH\x07\x88\x01\x01\x12\x34\n\x11session_attribute\x18\t \x01(\x0b\x32\x19.otg.RsvpSessionAttribute\x12\x1d\n\x05tspec\x18\n \x01(\x0b\x32\x0e.otg.RsvpTspec\x12*\n\x0c\x66\x61st_reroute\x18\x0b \x01(\x0b\x32\x14.otg.RsvpFastReroute\x12\x19\n\x03\x65ro\x18\x0c \x01(\x0b\x32\x0c.otg.RsvpEroB\x07\n\x05_nameB\x11\n\x0f_remote_addressB\x0c\n\n_tunnel_idB\t\n\x07_lsp_idB\x13\n\x11_refresh_intervalB\x15\n\x13_timeout_multiplierB\x10\n\x0e_backup_lsp_idB\x17\n\x15_lsp_switchover_delay\"\xf0\x04\n\x14RsvpSessionAttribute\x12\'\n\x1a\x61uto_generate_session_name\x18\x01 \x01(\x08H\x00\x88\x01\x01\x12\x19\n\x0csession_name\x18\x02 \x01(\tH\x01\x88\x01\x01\x12\x1b\n\x0esetup_priority\x18\x03 \x01(\rH\x02\x88\x01\x01\x12\x1d\n\x10holding_priority\x18\x04 \x01(\rH\x03\x88\x01\x01\x12%\n\x18local_protection_desired\x18\x05 \x01(\x08H\x04\x88\x01\x01\x12$\n\x17label_recording_desired\x18\x06 \x01(\x08H\x05\x88\x01\x01\x12\x1d\n\x10se_style_desired\x18\x07 \x01(\x08H\x06\x88\x01\x01\x12)\n\x1c\x62\x61ndwidth_protection_desired\x18\x08 \x01(\x08H\x07\x88\x01\x01\x12$\n\x17node_protection_desired\x18\t \x01(\x08H\x08\x88\x01\x01\x12\x38\n\x13resource_affinities\x18\n \x01(\x0b\x32\x1b.otg.RsvpResourceAffinitiesB\x1d\n\x1b_auto_generate_session_nameB\x0f\n\r_session_nameB\x11\n\x0f_setup_priorityB\x13\n\x11_holding_priorityB\x1b\n\x19_local_protection_desiredB\x1a\n\x18_label_recording_desiredB\x13\n\x11_se_style_desiredB\x1f\n\x1d_bandwidth_protection_desiredB\x1a\n\x18_node_protection_desired\"\x96\x01\n\x16RsvpResourceAffinities\x12\x18\n\x0b\x65xclude_any\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x18\n\x0binclude_any\x18\x02 \x01(\tH\x01\x88\x01\x01\x12\x18\n\x0binclude_all\x18\x03 \x01(\tH\x02\x88\x01\x01\x42\x0e\n\x0c_exclude_anyB\x0e\n\x0c_include_anyB\x0e\n\x0c_include_all\"\x9f\x02\n\tRsvpTspec\x12\x1e\n\x11token_bucket_rate\x18\x01 \x01(\x02H\x00\x88\x01\x01\x12\x1e\n\x11token_bucket_size\x18\x02 \x01(\x02H\x01\x88\x01\x01\x12\x1b\n\x0epeak_data_rate\x18\x03 \x01(\x02H\x02\x88\x01\x01\x12!\n\x14minimum_policed_unit\x18\x04 \x01(\rH\x03\x88\x01\x01\x12!\n\x14maximum_policed_unit\x18\x05 \x01(\rH\x04\x88\x01\x01\x42\x14\n\x12_token_bucket_rateB\x14\n\x12_token_bucket_sizeB\x11\n\x0f_peak_data_rateB\x17\n\x15_minimum_policed_unitB\x17\n\x15_maximum_policed_unit\"\xc7\x03\n\x0fRsvpFastReroute\x12\x1b\n\x0esetup_priority\x18\x01 \x01(\rH\x00\x88\x01\x01\x12\x1d\n\x10holding_priority\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x16\n\thop_limit\x18\x03 \x01(\rH\x02\x88\x01\x01\x12\x16\n\tbandwidth\x18\x04 \x01(\x02H\x03\x88\x01\x01\x12\x18\n\x0b\x65xclude_any\x18\x05 \x01(\tH\x04\x88\x01\x01\x12\x18\n\x0binclude_any\x18\x06 \x01(\tH\x05\x88\x01\x01\x12\x18\n\x0binclude_all\x18\x07 \x01(\tH\x06\x88\x01\x01\x12&\n\x19one_to_one_backup_desired\x18\x08 \x01(\x08H\x07\x88\x01\x01\x12$\n\x17\x66\x61\x63ility_backup_desired\x18\t \x01(\x08H\x08\x88\x01\x01\x42\x11\n\x0f_setup_priorityB\x13\n\x11_holding_priorityB\x0c\n\n_hop_limitB\x0c\n\n_bandwidthB\x0e\n\x0c_exclude_anyB\x0e\n\x0c_include_anyB\x0e\n\x0c_include_allB\x1c\n\x1a_one_to_one_backup_desiredB\x1a\n\x18_facility_backup_desired\"\xa8\x02\n\x07RsvpEro\x12\x45\n\x13prepend_neighbor_ip\x18\x01 \x01(\x0e\x32#.otg.RsvpEro.PrependNeighborIp.EnumH\x00\x88\x01\x01\x12\x1a\n\rprefix_length\x18\x02 \x01(\rH\x01\x88\x01\x01\x12)\n\nsubobjects\x18\x03 \x03(\x0b\x32\x15.otg.RsvpEroSubobject\x1a\x65\n\x11PrependNeighborIp\"P\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\x10\n\x0c\x64ont_prepend\x10\x01\x12\x11\n\rprepend_loose\x10\x02\x12\x12\n\x0eprepend_strict\x10\x03\x42\x16\n\x14_prepend_neighbor_ipB\x10\n\x0e_prefix_length\"\x8c\x03\n\x10RsvpEroSubobject\x12\x32\n\x04type\x18\x01 \x01(\x0e\x32\x1f.otg.RsvpEroSubobject.Type.EnumH\x00\x88\x01\x01\x12\x19\n\x0cipv4_address\x18\x02 \x01(\tH\x01\x88\x01\x01\x12\x1a\n\rprefix_length\x18\x03 \x01(\rH\x02\x88\x01\x01\x12\x16\n\tas_number\x18\x04 \x01(\rH\x03\x88\x01\x01\x12\x39\n\x08hop_type\x18\x05 \x01(\x0e\x32\".otg.RsvpEroSubobject.HopType.EnumH\x04\x88\x01\x01\x1a\x38\n\x04Type\"0\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\x08\n\x04ipv4\x10\x01\x12\r\n\tas_number\x10\x02\x1a\x39\n\x07HopType\".\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\n\n\x06strict\x10\x01\x12\t\n\x05loose\x10\x02\x42\x07\n\x05_typeB\x0f\n\r_ipv4_addressB\x10\n\x0e_prefix_lengthB\x0c\n\n_as_numberB\x0b\n\t_hop_type\"\x8b\x02\n\x04\x46low\x12\x1c\n\x05tx_rx\x18\x01 \x01(\x0b\x32\r.otg.FlowTxRx\x12\x1f\n\x06packet\x18\x02 \x03(\x0b\x32\x0f.otg.FlowHeader\x12&\n\regress_packet\x18\t \x03(\x0b\x32\x0f.otg.FlowHeader\x12\x1b\n\x04size\x18\x03 \x01(\x0b\x32\r.otg.FlowSize\x12\x1b\n\x04rate\x18\x04 \x01(\x0b\x32\r.otg.FlowRate\x12#\n\x08\x64uration\x18\x05 \x01(\x0b\x32\x11.otg.FlowDuration\x12!\n\x07metrics\x18\x06 \x01(\x0b\x32\x10.otg.FlowMetrics\x12\x11\n\x04name\x18\x07 \x01(\tH\x00\x88\x01\x01\x42\x07\n\x05_name\"\xbc\x01\n\x08\x46lowTxRx\x12.\n\x06\x63hoice\x18\x01 \x01(\x0e\x32\x19.otg.FlowTxRx.Choice.EnumH\x00\x88\x01\x01\x12\x1b\n\x04port\x18\x02 \x01(\x0b\x32\r.otg.FlowPort\x12\x1f\n\x06\x64\x65vice\x18\x03 \x01(\x0b\x32\x0f.otg.FlowRouter\x1a\x37\n\x06\x43hoice\"-\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\x08\n\x04port\x10\x01\x12\n\n\x06\x64\x65vice\x10\x02\x42\t\n\x07_choice\"`\n\x08\x46lowPort\x12\x14\n\x07tx_name\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x14\n\x07rx_name\x18\x02 \x01(\tH\x01\x88\x01\x01\x12\x10\n\x08rx_names\x18\x03 \x03(\tB\n\n\x08_tx_nameB\n\n\x08_rx_name\"\xa2\x01\n\nFlowRouter\x12,\n\x04mode\x18\x01 \x01(\x0e\x32\x19.otg.FlowRouter.Mode.EnumH\x00\x88\x01\x01\x12\x10\n\x08tx_names\x18\x02 \x03(\t\x12\x10\n\x08rx_names\x18\x03 \x03(\t\x1a\x39\n\x04Mode\"1\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\x08\n\x04mesh\x10\x01\x12\x0e\n\none_to_one\x10\x02\x42\x07\n\x05_mode\"\xb9\x07\n\nFlowHeader\x12\x30\n\x06\x63hoice\x18\x01 \x01(\x0e\x32\x1b.otg.FlowHeader.Choice.EnumH\x00\x88\x01\x01\x12\x1f\n\x06\x63ustom\x18\x02 \x01(\x0b\x32\x0f.otg.FlowCustom\x12#\n\x08\x65thernet\x18\x03 \x01(\x0b\x32\x11.otg.FlowEthernet\x12\x1b\n\x04vlan\x18\x04 \x01(\x0b\x32\r.otg.FlowVlan\x12\x1d\n\x05vxlan\x18\x05 \x01(\x0b\x32\x0e.otg.FlowVxlan\x12\x1b\n\x04ipv4\x18\x06 \x01(\x0b\x32\r.otg.FlowIpv4\x12\x1b\n\x04ipv6\x18\x07 \x01(\x0b\x32\r.otg.FlowIpv6\x12#\n\x08pfcpause\x18\x08 \x01(\x0b\x32\x11.otg.FlowPfcPause\x12-\n\rethernetpause\x18\t \x01(\x0b\x32\x16.otg.FlowEthernetPause\x12\x19\n\x03tcp\x18\n \x01(\x0b\x32\x0c.otg.FlowTcp\x12\x19\n\x03udp\x18\x0b \x01(\x0b\x32\x0c.otg.FlowUdp\x12\x19\n\x03gre\x18\x0c \x01(\x0b\x32\x0c.otg.FlowGre\x12\x1d\n\x05gtpv1\x18\r \x01(\x0b\x32\x0e.otg.FlowGtpv1\x12\x1d\n\x05gtpv2\x18\x0e \x01(\x0b\x32\x0e.otg.FlowGtpv2\x12\x19\n\x03\x61rp\x18\x0f \x01(\x0b\x32\x0c.otg.FlowArp\x12\x1b\n\x04icmp\x18\x10 \x01(\x0b\x32\r.otg.FlowIcmp\x12\x1f\n\x06icmpv6\x18\x11 \x01(\x0b\x32\x0f.otg.FlowIcmpv6\x12\x19\n\x03ppp\x18\x12 \x01(\x0b\x32\x0c.otg.FlowPpp\x12\x1f\n\x06igmpv1\x18\x13 \x01(\x0b\x32\x0f.otg.FlowIgmpv1\x12\x1b\n\x04mpls\x18\x14 \x01(\x0b\x32\r.otg.FlowMpls\x12\x1b\n\x04rsvp\x18\x15 \x01(\x0b\x32\r.otg.FlowRsvp\x1a\xff\x01\n\x06\x43hoice\"\xf4\x01\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\n\n\x06\x63ustom\x10\x01\x12\x0c\n\x08\x65thernet\x10\x02\x12\x08\n\x04vlan\x10\x03\x12\t\n\x05vxlan\x10\x04\x12\x08\n\x04ipv4\x10\x05\x12\x08\n\x04ipv6\x10\x06\x12\x0c\n\x08pfcpause\x10\x07\x12\x11\n\rethernetpause\x10\x08\x12\x07\n\x03tcp\x10\t\x12\x07\n\x03udp\x10\n\x12\x07\n\x03gre\x10\x0b\x12\t\n\x05gtpv1\x10\x0c\x12\t\n\x05gtpv2\x10\r\x12\x07\n\x03\x61rp\x10\x0e\x12\x08\n\x04icmp\x10\x0f\x12\n\n\x06icmpv6\x10\x10\x12\x07\n\x03ppp\x10\x11\x12\n\n\x06igmpv1\x10\x12\x12\x08\n\x04mpls\x10\x13\x12\x08\n\x04rsvp\x10\x14\x42\t\n\x07_choice\"Y\n\nFlowCustom\x12\x12\n\x05\x62ytes\x18\x01 \x01(\tH\x00\x88\x01\x01\x12-\n\x0bmetric_tags\x18\x02 \x03(\x0b\x32\x18.otg.FlowCustomMetricTagB\x08\n\x06_bytes\"q\n\x13\x46lowCustomMetricTag\x12\x11\n\x04name\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x13\n\x06offset\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x13\n\x06length\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x07\n\x05_nameB\t\n\x07_offsetB\t\n\x07_length\"\xce\x01\n\x0c\x46lowEthernet\x12(\n\x03\x64st\x18\x01 \x01(\x0b\x32\x1b.otg.PatternFlowEthernetDst\x12(\n\x03src\x18\x02 \x01(\x0b\x32\x1b.otg.PatternFlowEthernetSrc\x12\x35\n\nether_type\x18\x03 \x01(\x0b\x32!.otg.PatternFlowEthernetEtherType\x12\x33\n\tpfc_queue\x18\x04 \x01(\x0b\x32 .otg.PatternFlowEthernetPfcQueue\"\xac\x01\n\x08\x46lowVlan\x12.\n\x08priority\x18\x01 \x01(\x0b\x32\x1c.otg.PatternFlowVlanPriority\x12$\n\x03\x63\x66i\x18\x02 \x01(\x0b\x32\x17.otg.PatternFlowVlanCfi\x12\"\n\x02id\x18\x03 \x01(\x0b\x32\x16.otg.PatternFlowVlanId\x12&\n\x04tpid\x18\x04 \x01(\x0b\x32\x18.otg.PatternFlowVlanTpid\"\xc3\x01\n\tFlowVxlan\x12)\n\x05\x66lags\x18\x01 \x01(\x0b\x32\x1a.otg.PatternFlowVxlanFlags\x12\x31\n\treserved0\x18\x02 \x01(\x0b\x32\x1e.otg.PatternFlowVxlanReserved0\x12%\n\x03vni\x18\x03 \x01(\x0b\x32\x18.otg.PatternFlowVxlanVni\x12\x31\n\treserved1\x18\x04 \x01(\x0b\x32\x1e.otg.PatternFlowVxlanReserved1\"\xdd\x05\n\x08\x46lowIpv4\x12,\n\x07version\x18\x01 \x01(\x0b\x32\x1b.otg.PatternFlowIpv4Version\x12\x37\n\rheader_length\x18\x02 \x01(\x0b\x32 .otg.PatternFlowIpv4HeaderLength\x12\'\n\x08priority\x18\x03 \x01(\x0b\x32\x15.otg.FlowIpv4Priority\x12\x35\n\x0ctotal_length\x18\x04 \x01(\x0b\x32\x1f.otg.PatternFlowIpv4TotalLength\x12:\n\x0eidentification\x18\x05 \x01(\x0b\x32\".otg.PatternFlowIpv4Identification\x12.\n\x08reserved\x18\x06 \x01(\x0b\x32\x1c.otg.PatternFlowIpv4Reserved\x12\x37\n\rdont_fragment\x18\x07 \x01(\x0b\x32 .otg.PatternFlowIpv4DontFragment\x12\x39\n\x0emore_fragments\x18\x08 \x01(\x0b\x32!.otg.PatternFlowIpv4MoreFragments\x12;\n\x0f\x66ragment_offset\x18\t \x01(\x0b\x32\".otg.PatternFlowIpv4FragmentOffset\x12\x34\n\x0ctime_to_live\x18\n \x01(\x0b\x32\x1e.otg.PatternFlowIpv4TimeToLive\x12.\n\x08protocol\x18\x0b \x01(\x0b\x32\x1c.otg.PatternFlowIpv4Protocol\x12;\n\x0fheader_checksum\x18\x0c \x01(\x0b\x32\".otg.PatternFlowIpv4HeaderChecksum\x12$\n\x03src\x18\r \x01(\x0b\x32\x17.otg.PatternFlowIpv4Src\x12$\n\x03\x64st\x18\x0e \x01(\x0b\x32\x17.otg.PatternFlowIpv4Dst\"\x82\x02\n\x10\x46lowIpv4Priority\x12\x36\n\x06\x63hoice\x18\x01 \x01(\x0e\x32!.otg.FlowIpv4Priority.Choice.EnumH\x00\x88\x01\x01\x12,\n\x03raw\x18\x02 \x01(\x0b\x32\x1f.otg.PatternFlowIpv4PriorityRaw\x12\x1d\n\x03tos\x18\x03 \x01(\x0b\x32\x10.otg.FlowIpv4Tos\x12\x1f\n\x04\x64scp\x18\x04 \x01(\x0b\x32\x11.otg.FlowIpv4Dscp\x1a=\n\x06\x43hoice\"3\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\x07\n\x03raw\x10\x01\x12\x07\n\x03tos\x10\x02\x12\x08\n\x04\x64scp\x10\x03\x42\t\n\x07_choice\"b\n\x0c\x46lowIpv4Dscp\x12(\n\x03phb\x18\x01 \x01(\x0b\x32\x1b.otg.PatternFlowIpv4DscpPhb\x12(\n\x03\x65\x63n\x18\x02 \x01(\x0b\x32\x1b.otg.PatternFlowIpv4DscpEcn\"\xc3\x02\n\x0b\x46lowIpv4Tos\x12\x35\n\nprecedence\x18\x01 \x01(\x0b\x32!.otg.PatternFlowIpv4TosPrecedence\x12+\n\x05\x64\x65lay\x18\x02 \x01(\x0b\x32\x1c.otg.PatternFlowIpv4TosDelay\x12\x35\n\nthroughput\x18\x03 \x01(\x0b\x32!.otg.PatternFlowIpv4TosThroughput\x12\x37\n\x0breliability\x18\x04 \x01(\x0b\x32\".otg.PatternFlowIpv4TosReliability\x12\x31\n\x08monetary\x18\x05 \x01(\x0b\x32\x1f.otg.PatternFlowIpv4TosMonetary\x12-\n\x06unused\x18\x06 \x01(\x0b\x32\x1d.otg.PatternFlowIpv4TosUnused\"\x91\x03\n\x08\x46lowIpv6\x12,\n\x07version\x18\x01 \x01(\x0b\x32\x1b.otg.PatternFlowIpv6Version\x12\x37\n\rtraffic_class\x18\x02 \x01(\x0b\x32 .otg.PatternFlowIpv6TrafficClass\x12\x31\n\nflow_label\x18\x03 \x01(\x0b\x32\x1d.otg.PatternFlowIpv6FlowLabel\x12\x39\n\x0epayload_length\x18\x04 \x01(\x0b\x32!.otg.PatternFlowIpv6PayloadLength\x12\x33\n\x0bnext_header\x18\x05 \x01(\x0b\x32\x1e.otg.PatternFlowIpv6NextHeader\x12/\n\thop_limit\x18\x06 \x01(\x0b\x32\x1c.otg.PatternFlowIpv6HopLimit\x12$\n\x03src\x18\x07 \x01(\x0b\x32\x17.otg.PatternFlowIpv6Src\x12$\n\x03\x64st\x18\x08 \x01(\x0b\x32\x17.otg.PatternFlowIpv6Dst\"\x81\x06\n\x0c\x46lowPfcPause\x12(\n\x03\x64st\x18\x01 \x01(\x0b\x32\x1b.otg.PatternFlowPfcPauseDst\x12(\n\x03src\x18\x02 \x01(\x0b\x32\x1b.otg.PatternFlowPfcPauseSrc\x12\x35\n\nether_type\x18\x03 \x01(\x0b\x32!.otg.PatternFlowPfcPauseEtherType\x12>\n\x0f\x63ontrol_op_code\x18\x04 \x01(\x0b\x32%.otg.PatternFlowPfcPauseControlOpCode\x12\x46\n\x13\x63lass_enable_vector\x18\x05 \x01(\x0b\x32).otg.PatternFlowPfcPauseClassEnableVector\x12:\n\rpause_class_0\x18\x06 \x01(\x0b\x32#.otg.PatternFlowPfcPausePauseClass0\x12:\n\rpause_class_1\x18\x07 \x01(\x0b\x32#.otg.PatternFlowPfcPausePauseClass1\x12:\n\rpause_class_2\x18\x08 \x01(\x0b\x32#.otg.PatternFlowPfcPausePauseClass2\x12:\n\rpause_class_3\x18\t \x01(\x0b\x32#.otg.PatternFlowPfcPausePauseClass3\x12:\n\rpause_class_4\x18\n \x01(\x0b\x32#.otg.PatternFlowPfcPausePauseClass4\x12:\n\rpause_class_5\x18\x0b \x01(\x0b\x32#.otg.PatternFlowPfcPausePauseClass5\x12:\n\rpause_class_6\x18\x0c \x01(\x0b\x32#.otg.PatternFlowPfcPausePauseClass6\x12:\n\rpause_class_7\x18\r \x01(\x0b\x32#.otg.PatternFlowPfcPausePauseClass7\"\xa3\x02\n\x11\x46lowEthernetPause\x12-\n\x03\x64st\x18\x01 \x01(\x0b\x32 .otg.PatternFlowEthernetPauseDst\x12-\n\x03src\x18\x02 \x01(\x0b\x32 .otg.PatternFlowEthernetPauseSrc\x12:\n\nether_type\x18\x03 \x01(\x0b\x32&.otg.PatternFlowEthernetPauseEtherType\x12\x43\n\x0f\x63ontrol_op_code\x18\x04 \x01(\x0b\x32*.otg.PatternFlowEthernetPauseControlOpCode\x12/\n\x04time\x18\x05 \x01(\x0b\x32!.otg.PatternFlowEthernetPauseTime\"\xa8\x05\n\x07\x46lowTcp\x12,\n\x08src_port\x18\x01 \x01(\x0b\x32\x1a.otg.PatternFlowTcpSrcPort\x12,\n\x08\x64st_port\x18\x02 \x01(\x0b\x32\x1a.otg.PatternFlowTcpDstPort\x12*\n\x07seq_num\x18\x03 \x01(\x0b\x32\x19.otg.PatternFlowTcpSeqNum\x12*\n\x07\x61\x63k_num\x18\x04 \x01(\x0b\x32\x19.otg.PatternFlowTcpAckNum\x12\x32\n\x0b\x64\x61ta_offset\x18\x05 \x01(\x0b\x32\x1d.otg.PatternFlowTcpDataOffset\x12(\n\x06\x65\x63n_ns\x18\x06 \x01(\x0b\x32\x18.otg.PatternFlowTcpEcnNs\x12*\n\x07\x65\x63n_cwr\x18\x07 \x01(\x0b\x32\x19.otg.PatternFlowTcpEcnCwr\x12,\n\x08\x65\x63n_echo\x18\x08 \x01(\x0b\x32\x1a.otg.PatternFlowTcpEcnEcho\x12*\n\x07\x63tl_urg\x18\t \x01(\x0b\x32\x19.otg.PatternFlowTcpCtlUrg\x12*\n\x07\x63tl_ack\x18\n \x01(\x0b\x32\x19.otg.PatternFlowTcpCtlAck\x12*\n\x07\x63tl_psh\x18\x0b \x01(\x0b\x32\x19.otg.PatternFlowTcpCtlPsh\x12*\n\x07\x63tl_rst\x18\x0c \x01(\x0b\x32\x19.otg.PatternFlowTcpCtlRst\x12*\n\x07\x63tl_syn\x18\r \x01(\x0b\x32\x19.otg.PatternFlowTcpCtlSyn\x12*\n\x07\x63tl_fin\x18\x0e \x01(\x0b\x32\x19.otg.PatternFlowTcpCtlFin\x12)\n\x06window\x18\x0f \x01(\x0b\x32\x19.otg.PatternFlowTcpWindow\"\xbf\x01\n\x07\x46lowUdp\x12,\n\x08src_port\x18\x01 \x01(\x0b\x32\x1a.otg.PatternFlowUdpSrcPort\x12,\n\x08\x64st_port\x18\x02 \x01(\x0b\x32\x1a.otg.PatternFlowUdpDstPort\x12)\n\x06length\x18\x03 \x01(\x0b\x32\x19.otg.PatternFlowUdpLength\x12-\n\x08\x63hecksum\x18\x04 \x01(\x0b\x32\x1b.otg.PatternFlowUdpChecksum\"\xb4\x02\n\x07\x46lowGre\x12<\n\x10\x63hecksum_present\x18\x01 \x01(\x0b\x32\".otg.PatternFlowGreChecksumPresent\x12/\n\treserved0\x18\x02 \x01(\x0b\x32\x1c.otg.PatternFlowGreReserved0\x12+\n\x07version\x18\x03 \x01(\x0b\x32\x1a.otg.PatternFlowGreVersion\x12-\n\x08protocol\x18\x04 \x01(\x0b\x32\x1b.otg.PatternFlowGreProtocol\x12-\n\x08\x63hecksum\x18\x05 \x01(\x0b\x32\x1b.otg.PatternFlowGreChecksum\x12/\n\treserved1\x18\x06 \x01(\x0b\x32\x1c.otg.PatternFlowGreReserved1\"\xbf\x05\n\tFlowGtpv1\x12-\n\x07version\x18\x01 \x01(\x0b\x32\x1c.otg.PatternFlowGtpv1Version\x12\x38\n\rprotocol_type\x18\x02 \x01(\x0b\x32!.otg.PatternFlowGtpv1ProtocolType\x12/\n\x08reserved\x18\x03 \x01(\x0b\x32\x1d.otg.PatternFlowGtpv1Reserved\x12*\n\x06\x65_flag\x18\x04 \x01(\x0b\x32\x1a.otg.PatternFlowGtpv1EFlag\x12*\n\x06s_flag\x18\x05 \x01(\x0b\x32\x1a.otg.PatternFlowGtpv1SFlag\x12,\n\x07pn_flag\x18\x06 \x01(\x0b\x32\x1b.otg.PatternFlowGtpv1PnFlag\x12\x36\n\x0cmessage_type\x18\x07 \x01(\x0b\x32 .otg.PatternFlowGtpv1MessageType\x12:\n\x0emessage_length\x18\x08 \x01(\x0b\x32\".otg.PatternFlowGtpv1MessageLength\x12\'\n\x04teid\x18\t \x01(\x0b\x32\x19.otg.PatternFlowGtpv1Teid\x12:\n\x0esquence_number\x18\n \x01(\x0b\x32\".otg.PatternFlowGtpv1SquenceNumber\x12\x35\n\x0cn_pdu_number\x18\x0b \x01(\x0b\x32\x1f.otg.PatternFlowGtpv1NPduNumber\x12P\n\x1anext_extension_header_type\x18\x0c \x01(\x0b\x32,.otg.PatternFlowGtpv1NextExtensionHeaderType\x12\x30\n\x11\x65xtension_headers\x18\r \x03(\x0b\x32\x15.otg.FlowGtpExtension\"\xe1\x01\n\x10\x46lowGtpExtension\x12\x45\n\x10\x65xtension_length\x18\x01 \x01(\x0b\x32+.otg.PatternFlowGtpExtensionExtensionLength\x12\x36\n\x08\x63ontents\x18\x02 \x01(\x0b\x32$.otg.PatternFlowGtpExtensionContents\x12N\n\x15next_extension_header\x18\x03 \x01(\x0b\x32/.otg.PatternFlowGtpExtensionNextExtensionHeader\"\xe3\x03\n\tFlowGtpv2\x12-\n\x07version\x18\x01 \x01(\x0b\x32\x1c.otg.PatternFlowGtpv2Version\x12@\n\x11piggybacking_flag\x18\x02 \x01(\x0b\x32%.otg.PatternFlowGtpv2PiggybackingFlag\x12\x30\n\tteid_flag\x18\x03 \x01(\x0b\x32\x1d.otg.PatternFlowGtpv2TeidFlag\x12+\n\x06spare1\x18\x04 \x01(\x0b\x32\x1b.otg.PatternFlowGtpv2Spare1\x12\x36\n\x0cmessage_type\x18\x05 \x01(\x0b\x32 .otg.PatternFlowGtpv2MessageType\x12:\n\x0emessage_length\x18\x06 \x01(\x0b\x32\".otg.PatternFlowGtpv2MessageLength\x12\'\n\x04teid\x18\x07 \x01(\x0b\x32\x19.otg.PatternFlowGtpv2Teid\x12<\n\x0fsequence_number\x18\x08 \x01(\x0b\x32#.otg.PatternFlowGtpv2SequenceNumber\x12+\n\x06spare2\x18\t \x01(\x0b\x32\x1b.otg.PatternFlowGtpv2Spare2\"\xb6\x04\n\x07\x46lowArp\x12\x36\n\rhardware_type\x18\x01 \x01(\x0b\x32\x1f.otg.PatternFlowArpHardwareType\x12\x36\n\rprotocol_type\x18\x02 \x01(\x0b\x32\x1f.otg.PatternFlowArpProtocolType\x12:\n\x0fhardware_length\x18\x03 \x01(\x0b\x32!.otg.PatternFlowArpHardwareLength\x12:\n\x0fprotocol_length\x18\x04 \x01(\x0b\x32!.otg.PatternFlowArpProtocolLength\x12/\n\toperation\x18\x05 \x01(\x0b\x32\x1c.otg.PatternFlowArpOperation\x12\x43\n\x14sender_hardware_addr\x18\x06 \x01(\x0b\x32%.otg.PatternFlowArpSenderHardwareAddr\x12\x43\n\x14sender_protocol_addr\x18\x07 \x01(\x0b\x32%.otg.PatternFlowArpSenderProtocolAddr\x12\x43\n\x14target_hardware_addr\x18\x08 \x01(\x0b\x32%.otg.PatternFlowArpTargetHardwareAddr\x12\x43\n\x14target_protocol_addr\x18\t \x01(\x0b\x32%.otg.PatternFlowArpTargetProtocolAddr\"\x93\x01\n\x08\x46lowIcmp\x12.\n\x06\x63hoice\x18\x01 \x01(\x0e\x32\x19.otg.FlowIcmp.Choice.EnumH\x00\x88\x01\x01\x12\x1f\n\x04\x65\x63ho\x18\x02 \x01(\x0b\x32\x11.otg.FlowIcmpEcho\x1a+\n\x06\x43hoice\"!\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\x08\n\x04\x65\x63ho\x10\x01\x42\t\n\x07_choice\"\x93\x02\n\x0c\x46lowIcmpEcho\x12*\n\x04type\x18\x01 \x01(\x0b\x32\x1c.otg.PatternFlowIcmpEchoType\x12*\n\x04\x63ode\x18\x02 \x01(\x0b\x32\x1c.otg.PatternFlowIcmpEchoCode\x12\x32\n\x08\x63hecksum\x18\x03 \x01(\x0b\x32 .otg.PatternFlowIcmpEchoChecksum\x12\x36\n\nidentifier\x18\x04 \x01(\x0b\x32\".otg.PatternFlowIcmpEchoIdentifier\x12?\n\x0fsequence_number\x18\x05 \x01(\x0b\x32&.otg.PatternFlowIcmpEchoSequenceNumber\"\x99\x01\n\nFlowIcmpv6\x12\x30\n\x06\x63hoice\x18\x01 \x01(\x0e\x32\x1b.otg.FlowIcmpv6.Choice.EnumH\x00\x88\x01\x01\x12!\n\x04\x65\x63ho\x18\x02 \x01(\x0b\x32\x13.otg.FlowIcmpv6Echo\x1a+\n\x06\x43hoice\"!\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\x08\n\x04\x65\x63ho\x10\x01\x42\t\n\x07_choice\"\x9f\x02\n\x0e\x46lowIcmpv6Echo\x12,\n\x04type\x18\x01 \x01(\x0b\x32\x1e.otg.PatternFlowIcmpv6EchoType\x12,\n\x04\x63ode\x18\x02 \x01(\x0b\x32\x1e.otg.PatternFlowIcmpv6EchoCode\x12\x38\n\nidentifier\x18\x03 \x01(\x0b\x32$.otg.PatternFlowIcmpv6EchoIdentifier\x12\x41\n\x0fsequence_number\x18\x04 \x01(\x0b\x32(.otg.PatternFlowIcmpv6EchoSequenceNumber\x12\x34\n\x08\x63hecksum\x18\x05 \x01(\x0b\x32\".otg.PatternFlowIcmpv6EchoChecksum\"\x9b\x01\n\x07\x46lowPpp\x12+\n\x07\x61\x64\x64ress\x18\x01 \x01(\x0b\x32\x1a.otg.PatternFlowPppAddress\x12+\n\x07\x63ontrol\x18\x02 \x01(\x0b\x32\x1a.otg.PatternFlowPppControl\x12\x36\n\rprotocol_type\x18\x03 \x01(\x0b\x32\x1f.otg.PatternFlowPppProtocolType\"\x81\x02\n\nFlowIgmpv1\x12.\n\x07version\x18\x01 \x01(\x0b\x32\x1d.otg.PatternFlowIgmpv1Version\x12(\n\x04type\x18\x02 \x01(\x0b\x32\x1a.otg.PatternFlowIgmpv1Type\x12,\n\x06unused\x18\x03 \x01(\x0b\x32\x1c.otg.PatternFlowIgmpv1Unused\x12\x30\n\x08\x63hecksum\x18\x04 \x01(\x0b\x32\x1e.otg.PatternFlowIgmpv1Checksum\x12\x39\n\rgroup_address\x18\x05 \x01(\x0b\x32\".otg.PatternFlowIgmpv1GroupAddress\"\xdf\x01\n\x08\x46lowMpls\x12(\n\x05label\x18\x01 \x01(\x0b\x32\x19.otg.PatternFlowMplsLabel\x12\x37\n\rtraffic_class\x18\x02 \x01(\x0b\x32 .otg.PatternFlowMplsTrafficClass\x12:\n\x0f\x62ottom_of_stack\x18\x03 \x01(\x0b\x32!.otg.PatternFlowMplsBottomOfStack\x12\x34\n\x0ctime_to_live\x18\x04 \x01(\x0b\x32\x1e.otg.PatternFlowMplsTimeToLive\"\xce\x02\n\x08\x46lowRsvp\x12,\n\x07version\x18\x01 \x01(\x0b\x32\x1b.otg.PatternFlowRsvpVersion\x12\x1f\n\x04\x66lag\x18\x02 \x01(\x0b\x32\x11.otg.FlowRSVPFlag\x12\x37\n\rrsvp_checksum\x18\x03 \x01(\x0b\x32 .otg.PatternFlowRsvpRsvpChecksum\x12\x34\n\x0ctime_to_live\x18\x04 \x01(\x0b\x32\x1e.otg.PatternFlowRsvpTimeToLive\x12.\n\x08reserved\x18\x05 \x01(\x0b\x32\x1c.otg.PatternFlowRsvpReserved\x12(\n\x0brsvp_length\x18\x06 \x01(\x0b\x32\x13.otg.FlowRSVPLength\x12*\n\x0cmessage_type\x18\x07 \x01(\x0b\x32\x14.otg.FlowRSVPMessage\"\xb2\x01\n\x0c\x46lowRSVPFlag\x12\x32\n\x06\x63hoice\x18\x01 \x01(\x0e\x32\x1d.otg.FlowRSVPFlag.Choice.EnumH\x00\x88\x01\x01\x1a\x63\n\x06\x43hoice\"Y\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12!\n\x1dnot_refresh_reduction_capable\x10\x01\x12\x1d\n\x19refresh_reduction_capable\x10\x02\x42\t\n\x07_choice\"\xc3\x01\n\x0e\x46lowRSVPLength\x12\x34\n\x06\x63hoice\x18\x01 \x01(\x0e\x32\x1f.otg.FlowRSVPLength.Choice.EnumH\x00\x88\x01\x01\x12\x11\n\x04\x61uto\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x12\n\x05value\x18\x03 \x01(\rH\x02\x88\x01\x01\x1a\x36\n\x06\x43hoice\",\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\x08\n\x04\x61uto\x10\x01\x12\t\n\x05value\x10\x02\x42\t\n\x07_choiceB\x07\n\x05_autoB\x08\n\x06_value\"\xa8\x01\n\x0f\x46lowRSVPMessage\x12\x35\n\x06\x63hoice\x18\x01 \x01(\x0e\x32 .otg.FlowRSVPMessage.Choice.EnumH\x00\x88\x01\x01\x12&\n\x04path\x18\x02 \x01(\x0b\x32\x18.otg.FlowRSVPPathMessage\x1a+\n\x06\x43hoice\"!\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\x08\n\x04path\x10\x01\x42\t\n\x07_choice\"@\n\x13\x46lowRSVPPathMessage\x12)\n\x07objects\x18\x01 \x03(\x0b\x32\x18.otg.FlowRSVPPathObjects\"v\n\x13\x46lowRSVPPathObjects\x12-\n\x06length\x18\x01 \x01(\x0b\x32\x1d.otg.FlowRSVPPathObjectLength\x12\x30\n\tclass_num\x18\x02 \x01(\x0b\x32\x1d.otg.FlowRSVPPathObjectsClass\"\xd7\x01\n\x18\x46lowRSVPPathObjectLength\x12>\n\x06\x63hoice\x18\x01 \x01(\x0e\x32).otg.FlowRSVPPathObjectLength.Choice.EnumH\x00\x88\x01\x01\x12\x11\n\x04\x61uto\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x12\n\x05value\x18\x03 \x01(\rH\x02\x88\x01\x01\x1a\x36\n\x06\x43hoice\",\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\x08\n\x04\x61uto\x10\x01\x12\t\n\x05value\x10\x02\x42\t\n\x07_choiceB\x07\n\x05_autoB\x08\n\x06_value\"\xac\x07\n\x18\x46lowRSVPPathObjectsClass\x12>\n\x06\x63hoice\x18\x01 \x01(\x0e\x32).otg.FlowRSVPPathObjectsClass.Choice.EnumH\x00\x88\x01\x01\x12\x35\n\x07session\x18\x02 \x01(\x0b\x32$.otg.FlowRSVPPathObjectsClassSession\x12\x36\n\x08rsvp_hop\x18\x03 \x01(\x0b\x32$.otg.FlowRSVPPathObjectsClassRsvpHop\x12<\n\x0btime_values\x18\x04 \x01(\x0b\x32\'.otg.FlowRSVPPathObjectsClassTimeValues\x12\x42\n\x0e\x65xplicit_route\x18\x05 \x01(\x0b\x32*.otg.FlowRSVPPathObjectsClassExplicitRoute\x12@\n\rlabel_request\x18\x06 \x01(\x0b\x32).otg.FlowRSVPPathObjectsClassLabelRequest\x12H\n\x11session_attribute\x18\x07 \x01(\x0b\x32-.otg.FlowRSVPPathObjectsClassSessionAttribute\x12\x44\n\x0fsender_template\x18\x08 \x01(\x0b\x32+.otg.FlowRSVPPathObjectsClassSenderTemplate\x12>\n\x0csender_tspec\x18\t \x01(\x0b\x32(.otg.FlowRSVPPathObjectsClassSenderTspec\x12>\n\x0crecord_route\x18\n \x01(\x0b\x32(.otg.FlowRSVPPathObjectsClassRecordRoute\x12.\n\x06\x63ustom\x18\x0b \x01(\x0b\x32\x1e.otg.FlowRSVPPathObjectsCustom\x1a\xd1\x01\n\x06\x43hoice\"\xc6\x01\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\x0b\n\x07session\x10\x01\x12\x0c\n\x08rsvp_hop\x10\x02\x12\x0f\n\x0btime_values\x10\x03\x12\x12\n\x0e\x65xplicit_route\x10\x04\x12\x11\n\rlabel_request\x10\x05\x12\x15\n\x11session_attribute\x10\x06\x12\x13\n\x0fsender_template\x10\x07\x12\x10\n\x0csender_tspec\x10\x08\x12\x10\n\x0crecord_route\x10\t\x12\n\n\x06\x63ustom\x10\nB\t\n\x07_choice\"W\n\x1f\x46lowRSVPPathObjectsClassSession\x12\x34\n\x06\x63_type\x18\x01 \x01(\x0b\x32$.otg.FlowRSVPPathObjectsSessionCType\"\xeb\x01\n\x1f\x46lowRSVPPathObjectsSessionCType\x12\x45\n\x06\x63hoice\x18\x01 \x01(\x0e\x32\x30.otg.FlowRSVPPathObjectsSessionCType.Choice.EnumH\x00\x88\x01\x01\x12>\n\x0flsp_tunnel_ipv4\x18\x02 \x01(\x0b\x32%.otg.FlowRSVPPathSessionLspTunnelIpv4\x1a\x36\n\x06\x43hoice\",\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\x13\n\x0flsp_tunnel_ipv4\x10\x01\x42\t\n\x07_choice\"\xfb\x02\n FlowRSVPPathSessionLspTunnelIpv4\x12l\n\x1dipv4_tunnel_end_point_address\x18\x01 \x01(\x0b\x32\x45.otg.PatternFlowRSVPPathSessionLspTunnelIpv4Ipv4TunnelEndPointAddress\x12\x46\n\x08reserved\x18\x02 \x01(\x0b\x32\x34.otg.PatternFlowRSVPPathSessionLspTunnelIpv4Reserved\x12G\n\ttunnel_id\x18\x03 \x01(\x0b\x32\x34.otg.PatternFlowRSVPPathSessionLspTunnelIpv4TunnelId\x12X\n\x12\x65xtended_tunnel_id\x18\x04 \x01(\x0b\x32<.otg.PatternFlowRSVPPathSessionLspTunnelIpv4ExtendedTunnelId\"W\n\x1f\x46lowRSVPPathObjectsClassRsvpHop\x12\x34\n\x06\x63_type\x18\x01 \x01(\x0b\x32$.otg.FlowRSVPPathObjectsRsvpHopCType\"\xcc\x01\n\x1f\x46lowRSVPPathObjectsRsvpHopCType\x12\x45\n\x06\x63hoice\x18\x01 \x01(\x0e\x32\x30.otg.FlowRSVPPathObjectsRsvpHopCType.Choice.EnumH\x00\x88\x01\x01\x12*\n\x04ipv4\x18\x02 \x01(\x0b\x32\x1c.otg.FlowRSVPPathRsvpHopIpv4\x1a+\n\x06\x43hoice\"!\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\x08\n\x04ipv4\x10\x01\x42\t\n\x07_choice\"\xdd\x01\n\x17\x46lowRSVPPathRsvpHopIpv4\x12\x65\n\x1eipv4_next_previous_hop_address\x18\x01 \x01(\x0b\x32=.otg.PatternFlowRSVPPathRsvpHopIpv4Ipv4NextPreviousHopAddress\x12[\n\x18logical_interface_handle\x18\x02 \x01(\x0b\x32\x39.otg.PatternFlowRSVPPathRsvpHopIpv4LogicalInterfaceHandle\"]\n\"FlowRSVPPathObjectsClassTimeValues\x12\x37\n\x06\x63_type\x18\x01 \x01(\x0b\x32\'.otg.FlowRSVPPathObjectsTimeValuesCType\"\xf0\x01\n\"FlowRSVPPathObjectsTimeValuesCType\x12H\n\x06\x63hoice\x18\x01 \x01(\x0e\x32\x33.otg.FlowRSVPPathObjectsTimeValuesCType.Choice.EnumH\x00\x88\x01\x01\x12;\n\x11type_1_time_value\x18\x02 \x01(\x0b\x32 .otg.FlowRSVPPathTimeValuesType1\x1a\x38\n\x06\x43hoice\".\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\x15\n\x11type_1_time_value\x10\x01\x42\t\n\x07_choice\"n\n\x1b\x46lowRSVPPathTimeValuesType1\x12O\n\x10refresh_period_r\x18\x01 \x01(\x0b\x32\x35.otg.PatternFlowRSVPPathTimeValuesType1RefreshPeriodR\"h\n%FlowRSVPPathObjectsClassExplicitRoute\x12?\n\x06\x63_type\x18\x01 \x01(\x0b\x32/.otg.FlowRSVPPathObjectsClassExplicitRouteCType\"\x8b\x02\n*FlowRSVPPathObjectsClassExplicitRouteCType\x12P\n\x06\x63hoice\x18\x01 \x01(\x0e\x32;.otg.FlowRSVPPathObjectsClassExplicitRouteCType.Choice.EnumH\x00\x88\x01\x01\x12\x42\n\x15type_1_explicit_route\x18\x02 \x01(\x0b\x32#.otg.FlowRSVPPathExplicitRouteType1\x1a<\n\x06\x43hoice\"2\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\x19\n\x15type_1_explicit_route\x10\x01\x42\t\n\x07_choice\"_\n\x1e\x46lowRSVPPathExplicitRouteType1\x12=\n\nsubobjects\x18\x01 \x03(\x0b\x32).otg.FlowRSVPType1ExplicitRouteSubobjects\"c\n$FlowRSVPType1ExplicitRouteSubobjects\x12;\n\x04type\x18\x01 \x01(\x0b\x32-.otg.FlowRSVPType1ExplicitRouteSubobjectsType\"\xe8\x02\n(FlowRSVPType1ExplicitRouteSubobjectsType\x12N\n\x06\x63hoice\x18\x01 \x01(\x0e\x32\x39.otg.FlowRSVPType1ExplicitRouteSubobjectsType.Choice.EnumH\x00\x88\x01\x01\x12\x42\n\x0bipv4_prefix\x18\x02 \x01(\x0b\x32-.otg.FlowRSVPPathExplicitRouteType1Ipv4Prefix\x12P\n\x13\x66our_byte_as_number\x18\x03 \x01(\x0b\x32\x33.otg.FlowRSVPPathExplicitRouteType1FourByteASNumber\x1aK\n\x06\x43hoice\"A\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\x0f\n\x0bipv4_prefix\x10\x01\x12\x17\n\x13\x66our_byte_as_number\x10\x02\x42\t\n\x07_choice\"\x9c\x02\n(FlowRSVPPathExplicitRouteType1Ipv4Prefix\x12G\n\x05l_bit\x18\x01 \x01(\x0b\x32\x38.otg.PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixLBit\x12\x30\n\x06length\x18\x02 \x01(\x0b\x32 .otg.FlowRSVPExplicitRouteLength\x12U\n\x0cipv4_address\x18\x03 \x01(\x0b\x32?.otg.PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixIpv4Address\x12\x13\n\x06prefix\x18\x04 \x01(\rH\x00\x88\x01\x01\x42\t\n\x07_prefix\"\xad\x02\n.FlowRSVPPathExplicitRouteType1FourByteASNumber\x12M\n\x05l_bit\x18\x01 \x01(\x0b\x32>.otg.PatternFlowRSVPPathExplicitRouteType1FourByteASNumberLBit\x12\x30\n\x06length\x18\x02 \x01(\x0b\x32 .otg.FlowRSVPExplicitRouteLength\x12T\n\x08reserved\x18\x03 \x01(\x0b\x32\x42.otg.PatternFlowRSVPPathExplicitRouteType1FourByteASNumberReserved\x12\x16\n\tas_number\x18\x04 \x01(\rH\x00\x88\x01\x01\x42\x0c\n\n_as_number\"\xdd\x01\n\x1b\x46lowRSVPExplicitRouteLength\x12\x41\n\x06\x63hoice\x18\x01 \x01(\x0e\x32,.otg.FlowRSVPExplicitRouteLength.Choice.EnumH\x00\x88\x01\x01\x12\x11\n\x04\x61uto\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x12\n\x05value\x18\x03 \x01(\rH\x02\x88\x01\x01\x1a\x36\n\x06\x43hoice\",\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\x08\n\x04\x61uto\x10\x01\x12\t\n\x05value\x10\x02\x42\t\n\x07_choiceB\x07\n\x05_autoB\x08\n\x06_value\"a\n$FlowRSVPPathObjectsClassLabelRequest\x12\x39\n\x06\x63_type\x18\x01 \x01(\x0b\x32).otg.FlowRSVPPathObjectsLabelRequestCType\"\x86\x02\n$FlowRSVPPathObjectsLabelRequestCType\x12J\n\x06\x63hoice\x18\x01 \x01(\x0e\x32\x35.otg.FlowRSVPPathObjectsLabelRequestCType.Choice.EnumH\x00\x88\x01\x01\x12K\n\x13without_label_range\x18\x02 \x01(\x0b\x32..otg.FlowRSVPPathLabelRequestWithoutLabelRange\x1a:\n\x06\x43hoice\"0\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\x17\n\x13without_label_range\x10\x01\x42\t\n\x07_choice\"\xc7\x01\n)FlowRSVPPathLabelRequestWithoutLabelRange\x12O\n\x08reserved\x18\x01 \x01(\x0b\x32=.otg.PatternFlowRSVPPathLabelRequestWithoutLabelRangeReserved\x12I\n\x05l3pid\x18\x02 \x01(\x0b\x32:.otg.PatternFlowRSVPPathLabelRequestWithoutLabelRangeL3pid\"i\n(FlowRSVPPathObjectsClassSessionAttribute\x12=\n\x06\x63_type\x18\x01 \x01(\x0b\x32-.otg.FlowRSVPPathObjectsSessionAttributeCType\"\xd0\x02\n(FlowRSVPPathObjectsSessionAttributeCType\x12N\n\x06\x63hoice\x18\x01 \x01(\x0e\x32\x39.otg.FlowRSVPPathObjectsSessionAttributeCType.Choice.EnumH\x00\x88\x01\x01\x12>\n\nlsp_tunnel\x18\x02 \x01(\x0b\x32*.otg.FlowRSVPPathSessionAttributeLspTunnel\x12\x43\n\rlsp_tunnel_ra\x18\x03 \x01(\x0b\x32,.otg.FlowRSVPPathSessionAttributeLspTunnelRa\x1a\x44\n\x06\x43hoice\":\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\x0e\n\nlsp_tunnel\x10\x01\x12\x11\n\rlsp_tunnel_ra\x10\x02\x42\t\n\x07_choice\"\x8c\x02\n%FlowRSVPPathSessionAttributeLspTunnel\x12\x1b\n\x0esetup_priority\x18\x01 \x01(\rH\x00\x88\x01\x01\x12\x1d\n\x10holding_priority\x18\x02 \x01(\rH\x01\x88\x01\x01\x12)\n\x05\x66lags\x18\x03 \x01(\x0b\x32\x1a.otg.FlowRSVPLspTunnelFlag\x12\x18\n\x0bname_length\x18\x04 \x01(\tH\x02\x88\x01\x01\x12\x19\n\x0csession_name\x18\x05 \x01(\tH\x03\x88\x01\x01\x42\x11\n\x0f_setup_priorityB\x13\n\x11_holding_priorityB\x0e\n\x0c_name_lengthB\x0f\n\r_session_name\"\x8c\x03\n\'FlowRSVPPathSessionAttributeLspTunnelRa\x12\x18\n\x0b\x65xclude_any\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x18\n\x0binclude_any\x18\x02 \x01(\tH\x01\x88\x01\x01\x12\x18\n\x0binclude_all\x18\x03 \x01(\tH\x02\x88\x01\x01\x12\x1b\n\x0esetup_priority\x18\x04 \x01(\rH\x03\x88\x01\x01\x12\x1d\n\x10holding_priority\x18\x05 \x01(\rH\x04\x88\x01\x01\x12)\n\x05\x66lags\x18\x06 \x01(\x0b\x32\x1a.otg.FlowRSVPLspTunnelFlag\x12\x18\n\x0bname_length\x18\x07 \x01(\tH\x05\x88\x01\x01\x12\x19\n\x0csession_name\x18\x08 \x01(\tH\x06\x88\x01\x01\x42\x0e\n\x0c_exclude_anyB\x0e\n\x0c_include_anyB\x0e\n\x0c_include_allB\x11\n\x0f_setup_priorityB\x13\n\x11_holding_priorityB\x0e\n\x0c_name_lengthB\x0f\n\r_session_name\"\xd3\x01\n\x15\x46lowRSVPLspTunnelFlag\x12;\n\x06\x63hoice\x18\x01 \x01(\x0e\x32&.otg.FlowRSVPLspTunnelFlag.Choice.EnumH\x00\x88\x01\x01\x1ar\n\x06\x43hoice\"h\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\x1c\n\x18local_protection_desired\x10\x01\x12\x1b\n\x17label_recording_desired\x10\x02\x12\x14\n\x10se_style_desired\x10\x03\x42\t\n\x07_choice\"e\n&FlowRSVPPathObjectsClassSenderTemplate\x12;\n\x06\x63_type\x18\x01 \x01(\x0b\x32+.otg.FlowRSVPPathObjectsSenderTemplateCType\"\x80\x02\n&FlowRSVPPathObjectsSenderTemplateCType\x12L\n\x06\x63hoice\x18\x01 \x01(\x0e\x32\x37.otg.FlowRSVPPathObjectsSenderTemplateCType.Choice.EnumH\x00\x88\x01\x01\x12\x45\n\x0flsp_tunnel_ipv4\x18\x02 \x01(\x0b\x32,.otg.FlowRSVPPathSenderTemplateLspTunnelIpv4\x1a\x36\n\x06\x43hoice\",\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\x13\n\x0flsp_tunnel_ipv4\x10\x01\x42\t\n\x07_choice\"\xb2\x02\n\'FlowRSVPPathSenderTemplateLspTunnelIpv4\x12n\n\x1aipv4_tunnel_sender_address\x18\x01 \x01(\x0b\x32J.otg.PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Ipv4TunnelSenderAddress\x12M\n\x08reserved\x18\x02 \x01(\x0b\x32;.otg.PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Reserved\x12H\n\x06lsp_id\x18\x03 \x01(\x0b\x32\x38.otg.PatternFlowRSVPPathSenderTemplateLspTunnelIpv4LspId\"_\n#FlowRSVPPathObjectsClassSenderTspec\x12\x38\n\x06\x63_type\x18\x01 \x01(\x0b\x32(.otg.FlowRSVPPathObjectsSenderTspecCType\"\xe3\x01\n#FlowRSVPPathObjectsSenderTspecCType\x12I\n\x06\x63hoice\x18\x01 \x01(\x0e\x32\x34.otg.FlowRSVPPathObjectsSenderTspecCType.Choice.EnumH\x00\x88\x01\x01\x12\x35\n\x08int_serv\x18\x02 \x01(\x0b\x32#.otg.FlowRSVPPathSenderTspecIntServ\x1a/\n\x06\x43hoice\"%\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\x0c\n\x08int_serv\x10\x01\x42\t\n\x07_choice\"\xb0\t\n\x1e\x46lowRSVPPathSenderTspecIntServ\x12\x42\n\x07version\x18\x01 \x01(\x0b\x32\x31.otg.PatternFlowRSVPPathSenderTspecIntServVersion\x12\x46\n\treserved1\x18\x02 \x01(\x0b\x32\x33.otg.PatternFlowRSVPPathSenderTspecIntServReserved1\x12O\n\x0eoverall_length\x18\x03 \x01(\x0b\x32\x37.otg.PatternFlowRSVPPathSenderTspecIntServOverallLength\x12O\n\x0eservice_header\x18\x04 \x01(\x0b\x32\x37.otg.PatternFlowRSVPPathSenderTspecIntServServiceHeader\x12\x43\n\x08zero_bit\x18\x05 \x01(\x0b\x32\x31.otg.PatternFlowRSVPPathSenderTspecIntServZeroBit\x12\x46\n\treserved2\x18\x06 \x01(\x0b\x32\x33.otg.PatternFlowRSVPPathSenderTspecIntServReserved2\x12]\n\x16length_of_service_data\x18\x07 \x01(\x0b\x32=.otg.PatternFlowRSVPPathSenderTspecIntServLengthOfServiceData\x12n\n\x1fparameter_id_token_bucket_tspec\x18\x08 \x01(\x0b\x32\x45.otg.PatternFlowRSVPPathSenderTspecIntServParameterIdTokenBucketTspec\x12V\n\x12parameter_127_flag\x18\t \x01(\x0b\x32:.otg.PatternFlowRSVPPathSenderTspecIntServParameter127Flag\x12Z\n\x14parameter_127_length\x18\n \x01(\x0b\x32<.otg.PatternFlowRSVPPathSenderTspecIntServParameter127Length\x12\x1e\n\x11token_bucket_rate\x18\x0b \x01(\x02H\x00\x88\x01\x01\x12\x1e\n\x11token_bucket_size\x18\x0c \x01(\x02H\x01\x88\x01\x01\x12\x1b\n\x0epeak_data_rate\x18\r \x01(\x02H\x02\x88\x01\x01\x12Z\n\x14minimum_policed_unit\x18\x0e \x01(\x0b\x32<.otg.PatternFlowRSVPPathSenderTspecIntServMinimumPolicedUnit\x12X\n\x13maximum_packet_size\x18\x0f \x01(\x0b\x32;.otg.PatternFlowRSVPPathSenderTspecIntServMaximumPacketSizeB\x14\n\x12_token_bucket_rateB\x14\n\x12_token_bucket_sizeB\x11\n\x0f_peak_data_rate\"_\n#FlowRSVPPathObjectsClassRecordRoute\x12\x38\n\x06\x63_type\x18\x01 \x01(\x0b\x32(.otg.FlowRSVPPathObjectsRecordRouteCType\"\xf7\x01\n#FlowRSVPPathObjectsRecordRouteCType\x12I\n\x06\x63hoice\x18\x01 \x01(\x0e\x32\x34.otg.FlowRSVPPathObjectsRecordRouteCType.Choice.EnumH\x00\x88\x01\x01\x12>\n\x13type_1_route_record\x18\x02 \x01(\x0b\x32!.otg.FlowRSVPPathRecordRouteType1\x1a:\n\x06\x43hoice\"0\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\x17\n\x13type_1_route_record\x10\x01\x42\t\n\x07_choice\"[\n\x1c\x46lowRSVPPathRecordRouteType1\x12;\n\nsubobjects\x18\x01 \x03(\x0b\x32\'.otg.FlowRSVPType1RecordRouteSubobjects\"d\n\"FlowRSVPType1RecordRouteSubobjects\x12>\n\x04type\x18\x01 \x01(\x0b\x32\x30.otg.FlowRSVPPathObjectsRecordRouteSubObjectType\"\xc6\x02\n+FlowRSVPPathObjectsRecordRouteSubObjectType\x12Q\n\x06\x63hoice\x18\x01 \x01(\x0e\x32<.otg.FlowRSVPPathObjectsRecordRouteSubObjectType.Choice.EnumH\x00\x88\x01\x01\x12\x42\n\x0cipv4_address\x18\x02 \x01(\x0b\x32,.otg.FlowRSVPPathRecordRouteType1Ipv4Address\x12\x35\n\x05label\x18\x03 \x01(\x0b\x32&.otg.FlowRSVPPathRecordRouteType1Label\x1a>\n\x06\x43hoice\"4\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\x10\n\x0cipv4_address\x10\x01\x12\t\n\x05label\x10\x02\x42\t\n\x07_choice\"\xb8\x02\n\'FlowRSVPPathRecordRouteType1Ipv4Address\x12.\n\x06length\x18\x01 \x01(\x0b\x32\x1e.otg.FlowRSVPRouteRecordLength\x12T\n\x0cipv4_address\x18\x02 \x01(\x0b\x32>.otg.PatternFlowRSVPPathRecordRouteType1Ipv4AddressIpv4Address\x12V\n\rprefix_length\x18\x03 \x01(\x0b\x32?.otg.PatternFlowRSVPPathRecordRouteType1Ipv4AddressPrefixLength\x12/\n\x05\x66lags\x18\x04 \x01(\x0b\x32 .otg.FlowRSVPRecordRouteIPv4Flag\"\xcb\x01\n\x1b\x46lowRSVPRecordRouteIPv4Flag\x12\x41\n\x06\x63hoice\x18\x01 \x01(\x0e\x32,.otg.FlowRSVPRecordRouteIPv4Flag.Choice.EnumH\x00\x88\x01\x01\x1a^\n\x06\x43hoice\"T\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\x1e\n\x1alocal_protection_available\x10\x01\x12\x1b\n\x17local_protection_in_use\x10\x02\x42\t\n\x07_choice\"\x9e\x02\n!FlowRSVPPathRecordRouteType1Label\x12.\n\x06length\x18\x01 \x01(\x0b\x32\x1e.otg.FlowRSVPRouteRecordLength\x12\x41\n\x05\x66lags\x18\x02 \x01(\x0b\x32\x32.otg.PatternFlowRSVPPathRecordRouteType1LabelFlags\x12\x42\n\x06\x63_type\x18\x03 \x01(\x0b\x32\x32.otg.PatternFlowRSVPPathRecordRouteType1LabelCType\x12%\n\x18\x63ontents_of_label_obejct\x18\x04 \x01(\tH\x00\x88\x01\x01\x42\x1b\n\x19_contents_of_label_obejct\"\xd9\x01\n\x19\x46lowRSVPRouteRecordLength\x12?\n\x06\x63hoice\x18\x01 \x01(\x0e\x32*.otg.FlowRSVPRouteRecordLength.Choice.EnumH\x00\x88\x01\x01\x12\x11\n\x04\x61uto\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x12\n\x05value\x18\x03 \x01(\rH\x02\x88\x01\x01\x1a\x36\n\x06\x43hoice\",\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\x08\n\x04\x61uto\x10\x01\x12\t\n\x05value\x10\x02\x42\t\n\x07_choiceB\x07\n\x05_autoB\x08\n\x06_value\"\xaa\x01\n\x19\x46lowRSVPPathObjectsCustom\x12\x37\n\x04type\x18\x01 \x01(\x0b\x32).otg.PatternFlowRSVPPathObjectsCustomType\x12\x36\n\x06length\x18\x02 \x01(\x0b\x32&.otg.FlowRSVPObjectOptionsCustomLength\x12\x12\n\x05\x62ytes\x18\x03 \x01(\tH\x00\x88\x01\x01\x42\x08\n\x06_bytes\"\xe9\x01\n!FlowRSVPObjectOptionsCustomLength\x12G\n\x06\x63hoice\x18\x01 \x01(\x0e\x32\x32.otg.FlowRSVPObjectOptionsCustomLength.Choice.EnumH\x00\x88\x01\x01\x12\x11\n\x04\x61uto\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x12\n\x05value\x18\x03 \x01(\rH\x02\x88\x01\x01\x1a\x36\n\x06\x43hoice\",\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\x08\n\x04\x61uto\x10\x01\x12\t\n\x05value\x10\x02\x42\t\n\x07_choiceB\x07\n\x05_autoB\x08\n\x06_value\"\xbe\x02\n\x08\x46lowSize\x12.\n\x06\x63hoice\x18\x01 \x01(\x0e\x32\x19.otg.FlowSize.Choice.EnumH\x00\x88\x01\x01\x12\x12\n\x05\x66ixed\x18\x02 \x01(\rH\x01\x88\x01\x01\x12)\n\tincrement\x18\x03 \x01(\x0b\x32\x16.otg.FlowSizeIncrement\x12#\n\x06random\x18\x04 \x01(\x0b\x32\x13.otg.FlowSizeRandom\x12.\n\x0cweight_pairs\x18\x05 \x01(\x0b\x32\x18.otg.FlowSizeWeightPairs\x1aY\n\x06\x43hoice\"O\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\t\n\x05\x66ixed\x10\x01\x12\r\n\tincrement\x10\x02\x12\n\n\x06random\x10\x03\x12\x10\n\x0cweight_pairs\x10\x04\x42\t\n\x07_choiceB\x08\n\x06_fixed\"g\n\x11\x46lowSizeIncrement\x12\x12\n\x05start\x18\x01 \x01(\rH\x00\x88\x01\x01\x12\x10\n\x03\x65nd\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x11\n\x04step\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x08\n\x06_startB\x06\n\x04_endB\x07\n\x05_step\"D\n\x0e\x46lowSizeRandom\x12\x10\n\x03min\x18\x01 \x01(\rH\x00\x88\x01\x01\x12\x10\n\x03max\x18\x02 \x01(\rH\x01\x88\x01\x01\x42\x06\n\x04_minB\x06\n\x04_max\"\x8d\x03\n\x13\x46lowSizeWeightPairs\x12\x39\n\x06\x63hoice\x18\x01 \x01(\x0e\x32$.otg.FlowSizeWeightPairs.Choice.EnumH\x00\x88\x01\x01\x12\x41\n\npredefined\x18\x02 \x01(\x0e\x32(.otg.FlowSizeWeightPairs.Predefined.EnumH\x01\x88\x01\x01\x12.\n\x06\x63ustom\x18\x03 \x03(\x0b\x32\x1e.otg.FlowSizeWeightPairsCustom\x1a=\n\x06\x43hoice\"3\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\x0e\n\npredefined\x10\x01\x12\n\n\x06\x63ustom\x10\x02\x1ao\n\nPredefined\"a\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\x08\n\x04imix\x10\x01\x12\x0e\n\nipsec_imix\x10\x02\x12\r\n\tipv6_imix\x10\x03\x12\x11\n\rstandard_imix\x10\x04\x12\x0c\n\x08tcp_imix\x10\x05\x42\t\n\x07_choiceB\r\n\x0b_predefined\"W\n\x19\x46lowSizeWeightPairsCustom\x12\x11\n\x04size\x18\x01 \x01(\rH\x00\x88\x01\x01\x12\x13\n\x06weight\x18\x02 \x01(\x02H\x01\x88\x01\x01\x42\x07\n\x05_sizeB\t\n\x07_weight\"\xd8\x02\n\x08\x46lowRate\x12.\n\x06\x63hoice\x18\x01 \x01(\x0e\x32\x19.otg.FlowRate.Choice.EnumH\x00\x88\x01\x01\x12\x10\n\x03pps\x18\x02 \x01(\x04H\x01\x88\x01\x01\x12\x10\n\x03\x62ps\x18\x03 \x01(\x04H\x02\x88\x01\x01\x12\x11\n\x04kbps\x18\x04 \x01(\x04H\x03\x88\x01\x01\x12\x11\n\x04mbps\x18\x05 \x01(\x04H\x04\x88\x01\x01\x12\x11\n\x04gbps\x18\x06 \x01(\rH\x05\x88\x01\x01\x12\x17\n\npercentage\x18\x07 \x01(\x02H\x06\x88\x01\x01\x1a\x61\n\x06\x43hoice\"W\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\x07\n\x03pps\x10\x01\x12\x07\n\x03\x62ps\x10\x02\x12\x08\n\x04kbps\x10\x03\x12\x08\n\x04mbps\x10\x04\x12\x08\n\x04gbps\x10\x05\x12\x0e\n\npercentage\x10\x06\x42\t\n\x07_choiceB\x06\n\x04_ppsB\x06\n\x04_bpsB\x07\n\x05_kbpsB\x07\n\x05_mbpsB\x07\n\x05_gbpsB\r\n\x0b_percentage\"\xd5\x02\n\x0c\x46lowDuration\x12\x32\n\x06\x63hoice\x18\x01 \x01(\x0e\x32\x1d.otg.FlowDuration.Choice.EnumH\x00\x88\x01\x01\x12,\n\rfixed_packets\x18\x02 \x01(\x0b\x32\x15.otg.FlowFixedPackets\x12,\n\rfixed_seconds\x18\x03 \x01(\x0b\x32\x15.otg.FlowFixedSeconds\x12\x1d\n\x05\x62urst\x18\x04 \x01(\x0b\x32\x0e.otg.FlowBurst\x12\'\n\ncontinuous\x18\x05 \x01(\x0b\x32\x13.otg.FlowContinuous\x1a\x62\n\x06\x43hoice\"X\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\x11\n\rfixed_packets\x10\x01\x12\x11\n\rfixed_seconds\x10\x02\x12\t\n\x05\x62urst\x10\x03\x12\x0e\n\ncontinuous\x10\x04\x42\t\n\x07_choice\"I\n\x0e\x46lowContinuous\x12\x10\n\x03gap\x18\x01 \x01(\rH\x00\x88\x01\x01\x12\x1d\n\x05\x64\x65lay\x18\x02 \x01(\x0b\x32\x0e.otg.FlowDelayB\x06\n\x04_gap\"\x8c\x02\n\tFlowDelay\x12/\n\x06\x63hoice\x18\x01 \x01(\x0e\x32\x1a.otg.FlowDelay.Choice.EnumH\x00\x88\x01\x01\x12\x12\n\x05\x62ytes\x18\x02 \x01(\x02H\x01\x88\x01\x01\x12\x18\n\x0bnanoseconds\x18\x03 \x01(\x02H\x02\x88\x01\x01\x12\x19\n\x0cmicroseconds\x18\x04 \x01(\x02H\x03\x88\x01\x01\x1aO\n\x06\x43hoice\"E\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\t\n\x05\x62ytes\x10\x01\x12\x0f\n\x0bnanoseconds\x10\x02\x12\x10\n\x0cmicroseconds\x10\x03\x42\t\n\x07_choiceB\x08\n\x06_bytesB\x0e\n\x0c_nanosecondsB\x0f\n\r_microseconds\"m\n\x10\x46lowFixedPackets\x12\x14\n\x07packets\x18\x01 \x01(\rH\x00\x88\x01\x01\x12\x10\n\x03gap\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x1d\n\x05\x64\x65lay\x18\x03 \x01(\x0b\x32\x0e.otg.FlowDelayB\n\n\x08_packetsB\x06\n\x04_gap\"m\n\x10\x46lowFixedSeconds\x12\x14\n\x07seconds\x18\x01 \x01(\x02H\x00\x88\x01\x01\x12\x10\n\x03gap\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x1d\n\x05\x64\x65lay\x18\x03 \x01(\x0b\x32\x0e.otg.FlowDelayB\n\n\x08_secondsB\x06\n\x04_gap\"\xa0\x01\n\tFlowBurst\x12\x13\n\x06\x62ursts\x18\x01 \x01(\rH\x00\x88\x01\x01\x12\x14\n\x07packets\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x10\n\x03gap\x18\x03 \x01(\rH\x02\x88\x01\x01\x12\x37\n\x0finter_burst_gap\x18\x04 \x01(\x0b\x32\x1e.otg.FlowDurationInterBurstGapB\t\n\x07_burstsB\n\n\x08_packetsB\x06\n\x04_gap\"\xac\x02\n\x19\x46lowDurationInterBurstGap\x12?\n\x06\x63hoice\x18\x01 \x01(\x0e\x32*.otg.FlowDurationInterBurstGap.Choice.EnumH\x00\x88\x01\x01\x12\x12\n\x05\x62ytes\x18\x02 \x01(\x01H\x01\x88\x01\x01\x12\x18\n\x0bnanoseconds\x18\x03 \x01(\x01H\x02\x88\x01\x01\x12\x19\n\x0cmicroseconds\x18\x04 \x01(\x01H\x03\x88\x01\x01\x1aO\n\x06\x43hoice\"E\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\t\n\x05\x62ytes\x10\x01\x12\x0f\n\x0bnanoseconds\x10\x02\x12\x10\n\x0cmicroseconds\x10\x03\x42\t\n\x07_choiceB\x08\n\x06_bytesB\x0e\n\x0c_nanosecondsB\x0f\n\r_microseconds\"\xfd\x01\n\x0b\x46lowMetrics\x12\x13\n\x06\x65nable\x18\x01 \x01(\x08H\x00\x88\x01\x01\x12\x11\n\x04loss\x18\x02 \x01(\x08H\x01\x88\x01\x01\x12\'\n\x0brx_tx_ratio\x18\x06 \x01(\x0b\x32\x12.otg.FlowRxTxRatio\x12\x17\n\ntimestamps\x18\x03 \x01(\x08H\x02\x88\x01\x01\x12(\n\x07latency\x18\x04 \x01(\x0b\x32\x17.otg.FlowLatencyMetrics\x12\x37\n\x16predefined_metric_tags\x18\x05 \x01(\x0b\x32\x17.otg.FlowPredefinedTagsB\t\n\x07_enableB\x07\n\x05_lossB\r\n\x0b_timestamps\"\xb8\x01\n\x12\x46lowLatencyMetrics\x12\x13\n\x06\x65nable\x18\x01 \x01(\x08H\x00\x88\x01\x01\x12\x34\n\x04mode\x18\x02 \x01(\x0e\x32!.otg.FlowLatencyMetrics.Mode.EnumH\x01\x88\x01\x01\x1a\x43\n\x04Mode\";\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\x11\n\rstore_forward\x10\x01\x12\x0f\n\x0b\x63ut_through\x10\x02\x42\t\n\x07_enableB\x07\n\x05_mode\"6\n\x12\x46lowPredefinedTags\x12\x14\n\x07rx_name\x18\x01 \x01(\x08H\x00\x88\x01\x01\x42\n\n\x08_rx_name\"\xd6\x01\n\rFlowRxTxRatio\x12\x33\n\x06\x63hoice\x18\x01 \x01(\x0e\x32\x1e.otg.FlowRxTxRatio.Choice.EnumH\x00\x88\x01\x01\x12+\n\x08rx_count\x18\x02 \x01(\x0b\x32\x19.otg.FlowRxTxRatioRxCount\x12\x12\n\x05value\x18\x03 \x01(\x02H\x01\x88\x01\x01\x1a:\n\x06\x43hoice\"0\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\x0c\n\x08rx_count\x10\x01\x12\t\n\x05value\x10\x02\x42\t\n\x07_choiceB\x08\n\x06_value\"\x16\n\x14\x46lowRxTxRatioRxCount\"\xbf\x01\n\x05\x45vent\x12\x13\n\x06\x65nable\x18\x01 \x01(\x08H\x00\x88\x01\x01\x12\x1c\n\x04link\x18\x02 \x01(\x0b\x32\x0e.otg.EventLink\x12\x34\n\x11rx_rate_threshold\x18\x03 \x01(\x0b\x32\x19.otg.EventRxRateThreshold\x12\x42\n\x18route_advertise_withdraw\x18\x04 \x01(\x0b\x32 .otg.EventRouteAdvertiseWithdrawB\t\n\x07_enable\"\\\n\x14\x45ventRxRateThreshold\x12\x13\n\x06\x65nable\x18\x01 \x01(\x08H\x00\x88\x01\x01\x12\x16\n\tthreshold\x18\x02 \x01(\x02H\x01\x88\x01\x01\x42\t\n\x07_enableB\x0c\n\n_threshold\"+\n\tEventLink\x12\x13\n\x06\x65nable\x18\x01 \x01(\x08H\x00\x88\x01\x01\x42\t\n\x07_enable\"=\n\x1b\x45ventRouteAdvertiseWithdraw\x12\x13\n\x06\x65nable\x18\x01 \x01(\x08H\x00\x88\x01\x01\x42\t\n\x07_enable\"\xf5\x01\n\x0c\x45ventRequest\x12)\n\x04type\x18\x01 \x03(\x0e\x32\x1b.otg.EventRequest.Type.Enum\x12\x0e\n\x06source\x18\x02 \x03(\t\x1a\xa9\x01\n\x04Type\"\xa0\x01\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\r\n\tlink_down\x10\x01\x12\x0b\n\x07link_up\x10\x02\x12\x12\n\x0eroute_withdraw\x10\x03\x12\x13\n\x0froute_advertise\x10\x04\x12 \n\x1c\x66low_rx_rate_above_threshold\x10\x05\x12 \n\x1c\x66low_rx_rate_below_threshold\x10\x06\"b\n\x11\x45ventSubscription\x12!\n\x06\x65vents\x18\x01 \x01(\x0b\x32\x11.otg.EventRequest\x12\x19\n\x0c\x63\x61llback_url\x18\x02 \x01(\tH\x00\x88\x01\x01\x42\x0f\n\r_callback_url\"\xa5\x02\n\x04Lldp\x12\'\n\nconnection\x18\x01 \x01(\x0b\x32\x13.otg.LldpConnection\x12&\n\nchassis_id\x18\x02 \x01(\x0b\x32\x12.otg.LldpChassisId\x12 \n\x07port_id\x18\x03 \x01(\x0b\x32\x0f.otg.LldpPortId\x12(\n\x0bsystem_name\x18\x04 \x01(\x0b\x32\x13.otg.LldpSystemName\x12\x16\n\thold_time\x18\x05 \x01(\rH\x00\x88\x01\x01\x12#\n\x16\x61\x64vertisement_interval\x18\x06 \x01(\rH\x01\x88\x01\x01\x12\x11\n\x04name\x18\x07 \x01(\tH\x02\x88\x01\x01\x42\x0c\n\n_hold_timeB\x19\n\x17_advertisement_intervalB\x07\n\x05_name\"\xa9\x01\n\x0eLldpConnection\x12\x34\n\x06\x63hoice\x18\x01 \x01(\x0e\x32\x1f.otg.LldpConnection.Choice.EnumH\x00\x88\x01\x01\x12\x16\n\tport_name\x18\x02 \x01(\tH\x01\x88\x01\x01\x1a\x30\n\x06\x43hoice\"&\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\r\n\tport_name\x10\x01\x42\t\n\x07_choiceB\x0c\n\n_port_name\"\xe1\x02\n\rLldpChassisId\x12\x33\n\x06\x63hoice\x18\x01 \x01(\x0e\x32\x1e.otg.LldpChassisId.Choice.EnumH\x00\x88\x01\x01\x12\x37\n\x13mac_address_subtype\x18\x02 \x01(\x0b\x32\x1a.otg.LldpChassisMacSubType\x12#\n\x16interface_name_subtype\x18\x03 \x01(\tH\x01\x88\x01\x01\x12\x1a\n\rlocal_subtype\x18\x04 \x01(\tH\x02\x88\x01\x01\x1ai\n\x06\x43hoice\"_\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\x17\n\x13mac_address_subtype\x10\x01\x12\x1a\n\x16interface_name_subtype\x10\x02\x12\x11\n\rlocal_subtype\x10\x03\x42\t\n\x07_choiceB\x19\n\x17_interface_name_subtypeB\x10\n\x0e_local_subtype\"\xdf\x02\n\nLldpPortId\x12\x30\n\x06\x63hoice\x18\x01 \x01(\x0e\x32\x1b.otg.LldpPortId.Choice.EnumH\x00\x88\x01\x01\x12 \n\x13mac_address_subtype\x18\x02 \x01(\tH\x01\x88\x01\x01\x12\x41\n\x16interface_name_subtype\x18\x03 \x01(\x0b\x32!.otg.LldpPortInterfaceNameSubType\x12\x1a\n\rlocal_subtype\x18\x04 \x01(\tH\x02\x88\x01\x01\x1ai\n\x06\x43hoice\"_\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\x17\n\x13mac_address_subtype\x10\x01\x12\x1a\n\x16interface_name_subtype\x10\x02\x12\x11\n\rlocal_subtype\x10\x03\x42\t\n\x07_choiceB\x16\n\x14_mac_address_subtypeB\x10\n\x0e_local_subtype\"\xd1\x01\n\x15LldpChassisMacSubType\x12;\n\x06\x63hoice\x18\x01 \x01(\x0e\x32&.otg.LldpChassisMacSubType.Choice.EnumH\x00\x88\x01\x01\x12\x11\n\x04\x61uto\x18\x02 \x01(\tH\x01\x88\x01\x01\x12\x12\n\x05value\x18\x03 \x01(\tH\x02\x88\x01\x01\x1a\x36\n\x06\x43hoice\",\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\x08\n\x04\x61uto\x10\x01\x12\t\n\x05value\x10\x02\x42\t\n\x07_choiceB\x07\n\x05_autoB\x08\n\x06_value\"\xdf\x01\n\x1cLldpPortInterfaceNameSubType\x12\x42\n\x06\x63hoice\x18\x01 \x01(\x0e\x32-.otg.LldpPortInterfaceNameSubType.Choice.EnumH\x00\x88\x01\x01\x12\x11\n\x04\x61uto\x18\x02 \x01(\tH\x01\x88\x01\x01\x12\x12\n\x05value\x18\x03 \x01(\tH\x02\x88\x01\x01\x1a\x36\n\x06\x43hoice\",\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\x08\n\x04\x61uto\x10\x01\x12\t\n\x05value\x10\x02\x42\t\n\x07_choiceB\x07\n\x05_autoB\x08\n\x06_value\"\xc3\x01\n\x0eLldpSystemName\x12\x34\n\x06\x63hoice\x18\x01 \x01(\x0e\x32\x1f.otg.LldpSystemName.Choice.EnumH\x00\x88\x01\x01\x12\x11\n\x04\x61uto\x18\x02 \x01(\tH\x01\x88\x01\x01\x12\x12\n\x05value\x18\x03 \x01(\tH\x02\x88\x01\x01\x1a\x36\n\x06\x43hoice\",\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\x08\n\x04\x61uto\x10\x01\x12\t\n\x05value\x10\x02\x42\t\n\x07_choiceB\x07\n\x05_autoB\x08\n\x06_value\"\xa4\x01\n\x05\x45rror\x12\x11\n\x04\x63ode\x18\x01 \x01(\x05H\x00\x88\x01\x01\x12\'\n\x04kind\x18\x02 \x01(\x0e\x32\x14.otg.Error.Kind.EnumH\x01\x88\x01\x01\x12\x0e\n\x06\x65rrors\x18\x03 \x03(\t\x1a=\n\x04Kind\"5\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\x0e\n\nvalidation\x10\x01\x12\x0c\n\x08internal\x10\x02\x42\x07\n\x05_codeB\x07\n\x05_kind\"\x1b\n\x07Warning\x12\x10\n\x08warnings\x18\x01 \x03(\t\"\x9c\x01\n\x0c\x43onfigUpdate\x12\x32\n\x06\x63hoice\x18\x01 \x01(\x0e\x32\x1d.otg.ConfigUpdate.Choice.EnumH\x00\x88\x01\x01\x12\x1f\n\x05\x66lows\x18\x02 \x01(\x0b\x32\x10.otg.FlowsUpdate\x1a,\n\x06\x43hoice\"\"\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\t\n\x05\x66lows\x10\x01\x42\t\n\x07_choice\"\xa2\x01\n\x0b\x46lowsUpdate\x12;\n\x0eproperty_names\x18\x01 \x03(\x0e\x32#.otg.FlowsUpdate.PropertyNames.Enum\x12\x18\n\x05\x66lows\x18\x02 \x03(\x0b\x32\t.otg.Flow\x1a<\n\rPropertyNames\"+\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\x08\n\x04rate\x10\x01\x12\x08\n\x04size\x10\x02\"\xfd\x01\n\x0c\x43ontrolState\x12\x32\n\x06\x63hoice\x18\x01 \x01(\x0e\x32\x1d.otg.ControlState.Choice.EnumH\x00\x88\x01\x01\x12\x1c\n\x04port\x18\x02 \x01(\x0b\x32\x0e.otg.StatePort\x12$\n\x08protocol\x18\x03 \x01(\x0b\x32\x12.otg.StateProtocol\x12\"\n\x07traffic\x18\x04 \x01(\x0b\x32\x11.otg.StateTraffic\x1a\x46\n\x06\x43hoice\"<\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\x08\n\x04port\x10\x01\x12\x0c\n\x08protocol\x10\x02\x12\x0b\n\x07traffic\x10\x03\x42\t\n\x07_choice\"\xcb\x01\n\tStatePort\x12/\n\x06\x63hoice\x18\x01 \x01(\x0e\x32\x1a.otg.StatePort.Choice.EnumH\x00\x88\x01\x01\x12 \n\x04link\x18\x02 \x01(\x0b\x32\x12.otg.StatePortLink\x12&\n\x07\x63\x61pture\x18\x03 \x01(\x0b\x32\x15.otg.StatePortCapture\x1a\x38\n\x06\x43hoice\".\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\x08\n\x04link\x10\x01\x12\x0b\n\x07\x63\x61pture\x10\x02\x42\t\n\x07_choice\"\xb9\x01\n\x0cStateTraffic\x12\x32\n\x06\x63hoice\x18\x01 \x01(\x0e\x32\x1d.otg.StateTraffic.Choice.EnumH\x00\x88\x01\x01\x12\x34\n\rflow_transmit\x18\x02 \x01(\x0b\x32\x1d.otg.StateTrafficFlowTransmit\x1a\x34\n\x06\x43hoice\"*\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\x11\n\rflow_transmit\x10\x01\x42\t\n\x07_choice\"\xdf\x02\n\rStateProtocol\x12\x33\n\x06\x63hoice\x18\x01 \x01(\x0e\x32\x1e.otg.StateProtocol.Choice.EnumH\x00\x88\x01\x01\x12\"\n\x03\x61ll\x18\x02 \x01(\x0b\x32\x15.otg.StateProtocolAll\x12&\n\x05route\x18\x03 \x01(\x0b\x32\x17.otg.StateProtocolRoute\x12$\n\x04lacp\x18\x04 \x01(\x0b\x32\x16.otg.StateProtocolLacp\x12\"\n\x03\x62gp\x18\x05 \x01(\x0b\x32\x15.otg.StateProtocolBgp\x12$\n\x04isis\x18\x06 \x01(\x0b\x32\x16.otg.StateProtocolIsis\x1aR\n\x06\x43hoice\"H\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\x07\n\x03\x61ll\x10\x01\x12\t\n\x05route\x10\x02\x12\x08\n\x04lacp\x10\x03\x12\x07\n\x03\x62gp\x10\x04\x12\x08\n\x04isis\x10\x05\x42\t\n\x07_choice\"\x94\x01\n\rStatePortLink\x12\x12\n\nport_names\x18\x01 \x03(\t\x12\x31\n\x05state\x18\x02 \x01(\x0e\x32\x1d.otg.StatePortLink.State.EnumH\x00\x88\x01\x01\x1a\x32\n\x05State\")\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\x06\n\x02up\x10\x01\x12\x08\n\x04\x64own\x10\x02\x42\x08\n\x06_state\"\x9d\x01\n\x10StatePortCapture\x12\x12\n\nport_names\x18\x01 \x03(\t\x12\x34\n\x05state\x18\x02 \x01(\x0e\x32 .otg.StatePortCapture.State.EnumH\x00\x88\x01\x01\x1a\x35\n\x05State\",\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\t\n\x05start\x10\x01\x12\x08\n\x04stop\x10\x02\x42\x08\n\x06_state\"\xc4\x01\n\x18StateTrafficFlowTransmit\x12\x12\n\nflow_names\x18\x01 \x03(\t\x12<\n\x05state\x18\x02 \x01(\x0e\x32(.otg.StateTrafficFlowTransmit.State.EnumH\x00\x88\x01\x01\x1aL\n\x05State\"C\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\t\n\x05start\x10\x01\x12\x08\n\x04stop\x10\x02\x12\t\n\x05pause\x10\x03\x12\n\n\x06resume\x10\x04\x42\x08\n\x06_state\"\x89\x01\n\x10StateProtocolAll\x12\x34\n\x05state\x18\x01 \x01(\x0e\x32 .otg.StateProtocolAll.State.EnumH\x00\x88\x01\x01\x1a\x35\n\x05State\",\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\t\n\x05start\x10\x01\x12\x08\n\x04stop\x10\x02\x42\x08\n\x06_state\"\xa4\x01\n\x12StateProtocolRoute\x12\r\n\x05names\x18\x01 \x03(\t\x12\x36\n\x05state\x18\x02 \x01(\x0e\x32\".otg.StateProtocolRoute.State.EnumH\x00\x88\x01\x01\x1a=\n\x05State\"4\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\x0c\n\x08withdraw\x10\x01\x12\r\n\tadvertise\x10\x02\x42\x08\n\x06_state\"\xfc\x01\n\x11StateProtocolLacp\x12\x37\n\x06\x63hoice\x18\x01 \x01(\x0e\x32\".otg.StateProtocolLacp.Choice.EnumH\x00\x88\x01\x01\x12*\n\x05\x61\x64min\x18\x02 \x01(\x0b\x32\x1b.otg.StateProtocolLacpAdmin\x12\x37\n\x0cmember_ports\x18\x03 \x01(\x0b\x32!.otg.StateProtocolLacpMemberPorts\x1a>\n\x06\x43hoice\"4\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\t\n\x05\x61\x64min\x10\x01\x12\x10\n\x0cmember_ports\x10\x02\x42\t\n\x07_choice\"\xac\x01\n\x16StateProtocolLacpAdmin\x12\x18\n\x10lag_member_names\x18\x01 \x03(\t\x12:\n\x05state\x18\x02 \x01(\x0e\x32&.otg.StateProtocolLacpAdmin.State.EnumH\x00\x88\x01\x01\x1a\x32\n\x05State\")\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\x06\n\x02up\x10\x01\x12\x08\n\x04\x64own\x10\x02\x42\x08\n\x06_state\"\xb8\x01\n\x1cStateProtocolLacpMemberPorts\x12\x18\n\x10lag_member_names\x18\x01 \x03(\t\x12@\n\x05state\x18\x02 \x01(\x0e\x32,.otg.StateProtocolLacpMemberPorts.State.EnumH\x00\x88\x01\x01\x1a\x32\n\x05State\")\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\x06\n\x02up\x10\x01\x12\x08\n\x04\x64own\x10\x02\x42\x08\n\x06_state\"\xae\x01\n\x10StateProtocolBgp\x12\x36\n\x06\x63hoice\x18\x01 \x01(\x0e\x32!.otg.StateProtocolBgp.Choice.EnumH\x00\x88\x01\x01\x12)\n\x05peers\x18\x02 \x01(\x0b\x32\x1a.otg.StateProtocolBgpPeers\x1a,\n\x06\x43hoice\"\"\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\t\n\x05peers\x10\x01\x42\t\n\x07_choice\"\xa4\x01\n\x15StateProtocolBgpPeers\x12\x12\n\npeer_names\x18\x01 \x03(\t\x12\x39\n\x05state\x18\x02 \x01(\x0e\x32%.otg.StateProtocolBgpPeers.State.EnumH\x00\x88\x01\x01\x1a\x32\n\x05State\")\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\x06\n\x02up\x10\x01\x12\x08\n\x04\x64own\x10\x02\x42\x08\n\x06_state\"\xb7\x01\n\x11StateProtocolIsis\x12\x37\n\x06\x63hoice\x18\x01 \x01(\x0e\x32\".otg.StateProtocolIsis.Choice.EnumH\x00\x88\x01\x01\x12.\n\x07routers\x18\x02 \x01(\x0b\x32\x1d.otg.StateProtocolIsisRouters\x1a.\n\x06\x43hoice\"$\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\x0b\n\x07routers\x10\x01\x42\t\n\x07_choice\"\xac\x01\n\x18StateProtocolIsisRouters\x12\x14\n\x0crouter_names\x18\x01 \x03(\t\x12<\n\x05state\x18\x02 \x01(\x0e\x32(.otg.StateProtocolIsisRouters.State.EnumH\x00\x88\x01\x01\x1a\x32\n\x05State\")\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\x06\n\x02up\x10\x01\x12\x08\n\x04\x64own\x10\x02\x42\x08\n\x06_state\"\xa7\x01\n\rControlAction\x12\x33\n\x06\x63hoice\x18\x01 \x01(\x0e\x32\x1e.otg.ControlAction.Choice.EnumH\x00\x88\x01\x01\x12%\n\x08protocol\x18\x02 \x01(\x0b\x32\x13.otg.ActionProtocol\x1a/\n\x06\x43hoice\"%\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\x0c\n\x08protocol\x10\x01\x42\t\n\x07_choice\"P\n\x15\x43ontrolActionResponse\x12\x10\n\x08warnings\x18\x01 \x03(\t\x12%\n\x08response\x18\x02 \x01(\x0b\x32\x13.otg.ActionResponse\"\xb1\x01\n\x0e\x41\x63tionResponse\x12\x34\n\x06\x63hoice\x18\x01 \x01(\x0e\x32\x1f.otg.ActionResponse.Choice.EnumH\x00\x88\x01\x01\x12-\n\x08protocol\x18\x02 \x01(\x0b\x32\x1b.otg.ActionResponseProtocol\x1a/\n\x06\x43hoice\"%\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\x0c\n\x08protocol\x10\x01\x42\t\n\x07_choice\"\x84\x02\n\x0e\x41\x63tionProtocol\x12\x34\n\x06\x63hoice\x18\x01 \x01(\x0e\x32\x1f.otg.ActionProtocol.Choice.EnumH\x00\x88\x01\x01\x12%\n\x04ipv4\x18\x02 \x01(\x0b\x32\x17.otg.ActionProtocolIpv4\x12%\n\x04ipv6\x18\x03 \x01(\x0b\x32\x17.otg.ActionProtocolIpv6\x12#\n\x03\x62gp\x18\x04 \x01(\x0b\x32\x16.otg.ActionProtocolBgp\x1a>\n\x06\x43hoice\"4\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\x08\n\x04ipv4\x10\x01\x12\x08\n\x04ipv6\x10\x02\x12\x07\n\x03\x62gp\x10\x03\x42\t\n\x07_choice\"\xf6\x01\n\x16\x41\x63tionResponseProtocol\x12<\n\x06\x63hoice\x18\x01 \x01(\x0e\x32\'.otg.ActionResponseProtocol.Choice.EnumH\x00\x88\x01\x01\x12-\n\x04ipv4\x18\x02 \x01(\x0b\x32\x1f.otg.ActionResponseProtocolIpv4\x12-\n\x04ipv6\x18\x03 \x01(\x0b\x32\x1f.otg.ActionResponseProtocolIpv6\x1a\x35\n\x06\x43hoice\"+\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\x08\n\x04ipv4\x10\x01\x12\x08\n\x04ipv6\x10\x02\x42\t\n\x07_choice\"\xb1\x01\n\x12\x41\x63tionProtocolIpv4\x12\x38\n\x06\x63hoice\x18\x01 \x01(\x0e\x32#.otg.ActionProtocolIpv4.Choice.EnumH\x00\x88\x01\x01\x12)\n\x04ping\x18\x02 \x01(\x0b\x32\x1b.otg.ActionProtocolIpv4Ping\x1a+\n\x06\x43hoice\"!\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\x08\n\x04ping\x10\x01\x42\t\n\x07_choice\"\xc9\x01\n\x1a\x41\x63tionResponseProtocolIpv4\x12@\n\x06\x63hoice\x18\x01 \x01(\x0e\x32+.otg.ActionResponseProtocolIpv4.Choice.EnumH\x00\x88\x01\x01\x12\x31\n\x04ping\x18\x02 \x01(\x0b\x32#.otg.ActionResponseProtocolIpv4Ping\x1a+\n\x06\x43hoice\"!\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\x08\n\x04ping\x10\x01\x42\t\n\x07_choice\"N\n\x16\x41\x63tionProtocolIpv4Ping\x12\x34\n\x08requests\x18\x01 \x03(\x0b\x32\".otg.ActionProtocolIpv4PingRequest\"c\n\x1d\x41\x63tionProtocolIpv4PingRequest\x12\x15\n\x08src_name\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x13\n\x06\x64st_ip\x18\x02 \x01(\tH\x01\x88\x01\x01\x42\x0b\n\t_src_nameB\t\n\x07_dst_ip\"`\n\x1e\x41\x63tionResponseProtocolIpv4Ping\x12>\n\tresponses\x18\x01 \x03(\x0b\x32+.otg.ActionResponseProtocolIpv4PingResponse\"\x83\x02\n&ActionResponseProtocolIpv4PingResponse\x12\x15\n\x08src_name\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x13\n\x06\x64st_ip\x18\x02 \x01(\tH\x01\x88\x01\x01\x12L\n\x06result\x18\x03 \x01(\x0e\x32\x37.otg.ActionResponseProtocolIpv4PingResponse.Result.EnumH\x02\x88\x01\x01\x1a<\n\x06Result\"2\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\r\n\tsucceeded\x10\x01\x12\n\n\x06\x66\x61iled\x10\x02\x42\x0b\n\t_src_nameB\t\n\x07_dst_ipB\t\n\x07_result\"\xb1\x01\n\x12\x41\x63tionProtocolIpv6\x12\x38\n\x06\x63hoice\x18\x01 \x01(\x0e\x32#.otg.ActionProtocolIpv6.Choice.EnumH\x00\x88\x01\x01\x12)\n\x04ping\x18\x02 \x01(\x0b\x32\x1b.otg.ActionProtocolIpv6Ping\x1a+\n\x06\x43hoice\"!\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\x08\n\x04ping\x10\x01\x42\t\n\x07_choice\"\xc9\x01\n\x1a\x41\x63tionResponseProtocolIpv6\x12@\n\x06\x63hoice\x18\x01 \x01(\x0e\x32+.otg.ActionResponseProtocolIpv6.Choice.EnumH\x00\x88\x01\x01\x12\x31\n\x04ping\x18\x02 \x01(\x0b\x32#.otg.ActionResponseProtocolIpv6Ping\x1a+\n\x06\x43hoice\"!\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\x08\n\x04ping\x10\x01\x42\t\n\x07_choice\"N\n\x16\x41\x63tionProtocolIpv6Ping\x12\x34\n\x08requests\x18\x01 \x03(\x0b\x32\".otg.ActionProtocolIpv6PingRequest\"c\n\x1d\x41\x63tionProtocolIpv6PingRequest\x12\x15\n\x08src_name\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x13\n\x06\x64st_ip\x18\x02 \x01(\tH\x01\x88\x01\x01\x42\x0b\n\t_src_nameB\t\n\x07_dst_ip\"`\n\x1e\x41\x63tionResponseProtocolIpv6Ping\x12>\n\tresponses\x18\x01 \x03(\x0b\x32+.otg.ActionResponseProtocolIpv6PingResponse\"\x83\x02\n&ActionResponseProtocolIpv6PingResponse\x12\x15\n\x08src_name\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x13\n\x06\x64st_ip\x18\x02 \x01(\tH\x01\x88\x01\x01\x12L\n\x06result\x18\x03 \x01(\x0e\x32\x37.otg.ActionResponseProtocolIpv6PingResponse.Result.EnumH\x02\x88\x01\x01\x1a<\n\x06Result\"2\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\r\n\tsucceeded\x10\x01\x12\n\n\x06\x66\x61iled\x10\x02\x42\x0b\n\t_src_nameB\t\n\x07_dst_ipB\t\n\x07_result\"\xb7\x02\n\x11\x41\x63tionProtocolBgp\x12\x37\n\x06\x63hoice\x18\x01 \x01(\x0e\x32\".otg.ActionProtocolBgp.Choice.EnumH\x00\x88\x01\x01\x12\x38\n\x0cnotification\x18\x02 \x01(\x0b\x32\".otg.ActionProtocolBgpNotification\x12P\n\x19initiate_graceful_restart\x18\x03 \x01(\x0b\x32-.otg.ActionProtocolBgpInitiateGracefulRestart\x1aR\n\x06\x43hoice\"H\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\x10\n\x0cnotification\x10\x01\x12\x1d\n\x19initiate_graceful_restart\x10\x02\x42\t\n\x07_choice\"\xd5\x05\n\x1d\x41\x63tionProtocolBgpNotification\x12\r\n\x05names\x18\x01 \x03(\t\x12\x43\n\x06\x63hoice\x18\x02 \x01(\x0e\x32..otg.ActionProtocolBgpNotification.Choice.EnumH\x00\x88\x01\x01\x12\'\n\x05\x63\x65\x61se\x18\x03 \x01(\x0b\x32\x18.otg.DeviceBgpCeaseError\x12>\n\x14message_header_error\x18\x04 \x01(\x0b\x32 .otg.DeviceBgpMessageHeaderError\x12:\n\x12open_message_error\x18\x05 \x01(\x0b\x32\x1e.otg.DeviceBgpOpenMessageError\x12>\n\x14update_message_error\x18\x06 \x01(\x0b\x32 .otg.DeviceBgpUpdateMessageError\x12:\n\x12hold_timer_expired\x18\x07 \x01(\x0b\x32\x1e.otg.DeviceBgpHoldTimerExpired\x12I\n\x1a\x66inite_state_machine_error\x18\x08 \x01(\x0b\x32%.otg.DeviceBgpFiniteStateMachineError\x12)\n\x06\x63ustom\x18\t \x01(\x0b\x32\x19.otg.DeviceBgpCustomError\x1a\xbd\x01\n\x06\x43hoice\"\xb2\x01\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\t\n\x05\x63\x65\x61se\x10\x01\x12\x18\n\x14message_header_error\x10\x02\x12\x16\n\x12open_message_error\x10\x03\x12\x18\n\x14update_message_error\x10\x04\x12\x16\n\x12hold_timer_expired\x10\x05\x12\x1e\n\x1a\x66inite_state_machine_error\x10\x06\x12\n\n\x06\x63ustom\x10\x07\x42\t\n\x07_choice\"l\n(ActionProtocolBgpInitiateGracefulRestart\x12\x12\n\npeer_names\x18\x01 \x03(\t\x12\x1a\n\rrestart_delay\x18\x02 \x01(\rH\x00\x88\x01\x01\x42\x10\n\x0e_restart_delay\"\xb0\x04\n\x0eMetricsRequest\x12\x34\n\x06\x63hoice\x18\x01 \x01(\x0e\x32\x1f.otg.MetricsRequest.Choice.EnumH\x00\x88\x01\x01\x12%\n\x04port\x18\x02 \x01(\x0b\x32\x17.otg.PortMetricsRequest\x12%\n\x04\x66low\x18\x03 \x01(\x0b\x32\x17.otg.FlowMetricsRequest\x12\'\n\x05\x62gpv4\x18\x04 \x01(\x0b\x32\x18.otg.Bgpv4MetricsRequest\x12\'\n\x05\x62gpv6\x18\x05 \x01(\x0b\x32\x18.otg.Bgpv6MetricsRequest\x12%\n\x04isis\x18\x06 \x01(\x0b\x32\x17.otg.IsisMetricsRequest\x12#\n\x03lag\x18\x07 \x01(\x0b\x32\x16.otg.LagMetricsRequest\x12%\n\x04lacp\x18\x08 \x01(\x0b\x32\x17.otg.LacpMetricsRequest\x12%\n\x04lldp\x18\t \x01(\x0b\x32\x17.otg.LldpMetricsRequest\x12%\n\x04rsvp\x18\n \x01(\x0b\x32\x17.otg.RsvpMetricsRequest\x1a|\n\x06\x43hoice\"r\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\x08\n\x04port\x10\x01\x12\x08\n\x04\x66low\x10\x02\x12\t\n\x05\x62gpv4\x10\x03\x12\t\n\x05\x62gpv6\x10\x04\x12\x08\n\x04isis\x10\x05\x12\x07\n\x03lag\x10\x06\x12\x08\n\x04lacp\x10\x07\x12\x08\n\x04lldp\x10\x08\x12\x08\n\x04rsvp\x10\tB\t\n\x07_choice\"\xfc\x04\n\x0fMetricsResponse\x12\x35\n\x06\x63hoice\x18\x01 \x01(\x0e\x32 .otg.MetricsResponse.Choice.EnumH\x00\x88\x01\x01\x12%\n\x0cport_metrics\x18\x02 \x03(\x0b\x32\x0f.otg.PortMetric\x12%\n\x0c\x66low_metrics\x18\x03 \x03(\x0b\x32\x0f.otg.FlowMetric\x12\'\n\rbgpv4_metrics\x18\x04 \x03(\x0b\x32\x10.otg.Bgpv4Metric\x12\'\n\rbgpv6_metrics\x18\x05 \x03(\x0b\x32\x10.otg.Bgpv6Metric\x12%\n\x0cisis_metrics\x18\x06 \x03(\x0b\x32\x0f.otg.IsisMetric\x12#\n\x0blag_metrics\x18\x07 \x03(\x0b\x32\x0e.otg.LagMetric\x12%\n\x0clacp_metrics\x18\x08 \x03(\x0b\x32\x0f.otg.LacpMetric\x12%\n\x0clldp_metrics\x18\t \x03(\x0b\x32\x0f.otg.LldpMetric\x12%\n\x0crsvp_metrics\x18\n \x03(\x0b\x32\x0f.otg.RsvpMetric\x1a\xc5\x01\n\x06\x43hoice\"\xba\x01\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\x10\n\x0c\x66low_metrics\x10\x01\x12\x10\n\x0cport_metrics\x10\x02\x12\x11\n\rbgpv4_metrics\x10\x03\x12\x11\n\rbgpv6_metrics\x10\x04\x12\x10\n\x0cisis_metrics\x10\x05\x12\x0f\n\x0blag_metrics\x10\x06\x12\x10\n\x0clacp_metrics\x10\x07\x12\x10\n\x0clldp_metrics\x10\x08\x12\x10\n\x0crsvp_metrics\x10\tB\t\n\x07_choice\"\xcd\x02\n\x12PortMetricsRequest\x12\x12\n\nport_names\x18\x01 \x03(\t\x12>\n\x0c\x63olumn_names\x18\x02 \x03(\x0e\x32(.otg.PortMetricsRequest.ColumnNames.Enum\x1a\xe2\x01\n\x0b\x43olumnNames\"\xd2\x01\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\x0c\n\x08transmit\x10\x01\x12\x0c\n\x08location\x10\x02\x12\x08\n\x04link\x10\x03\x12\x0b\n\x07\x63\x61pture\x10\x04\x12\r\n\tframes_tx\x10\x05\x12\r\n\tframes_rx\x10\x06\x12\x0c\n\x08\x62ytes_tx\x10\x07\x12\x0c\n\x08\x62ytes_rx\x10\x08\x12\x12\n\x0e\x66rames_tx_rate\x10\t\x12\x12\n\x0e\x66rames_rx_rate\x10\n\x12\x11\n\rbytes_tx_rate\x10\x0b\x12\x11\n\rbytes_rx_rate\x10\x0c\"\x86\x06\n\nPortMetric\x12\x11\n\x04name\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x15\n\x08location\x18\x02 \x01(\tH\x01\x88\x01\x01\x12,\n\x04link\x18\x03 \x01(\x0e\x32\x19.otg.PortMetric.Link.EnumH\x02\x88\x01\x01\x12\x32\n\x07\x63\x61pture\x18\x04 \x01(\x0e\x32\x1c.otg.PortMetric.Capture.EnumH\x03\x88\x01\x01\x12\x16\n\tframes_tx\x18\x05 \x01(\x04H\x04\x88\x01\x01\x12\x16\n\tframes_rx\x18\x06 \x01(\x04H\x05\x88\x01\x01\x12\x15\n\x08\x62ytes_tx\x18\x07 \x01(\x04H\x06\x88\x01\x01\x12\x15\n\x08\x62ytes_rx\x18\x08 \x01(\x04H\x07\x88\x01\x01\x12\x1b\n\x0e\x66rames_tx_rate\x18\t \x01(\x02H\x08\x88\x01\x01\x12\x1b\n\x0e\x66rames_rx_rate\x18\n \x01(\x02H\t\x88\x01\x01\x12\x1a\n\rbytes_tx_rate\x18\x0b \x01(\x02H\n\x88\x01\x01\x12\x1a\n\rbytes_rx_rate\x18\x0c \x01(\x02H\x0b\x88\x01\x01\x12\x34\n\x08transmit\x18\r \x01(\x0e\x32\x1d.otg.PortMetric.Transmit.EnumH\x0c\x88\x01\x01\x1a\x31\n\x04Link\")\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\x06\n\x02up\x10\x01\x12\x08\n\x04\x64own\x10\x02\x1a<\n\x07\x43\x61pture\"1\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\x0b\n\x07started\x10\x01\x12\x0b\n\x07stopped\x10\x02\x1a=\n\x08Transmit\"1\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\x0b\n\x07started\x10\x01\x12\x0b\n\x07stopped\x10\x02\x42\x07\n\x05_nameB\x0b\n\t_locationB\x07\n\x05_linkB\n\n\x08_captureB\x0c\n\n_frames_txB\x0c\n\n_frames_rxB\x0b\n\t_bytes_txB\x0b\n\t_bytes_rxB\x11\n\x0f_frames_tx_rateB\x11\n\x0f_frames_rx_rateB\x10\n\x0e_bytes_tx_rateB\x10\n\x0e_bytes_rx_rateB\x0b\n\t_transmit\"\xb8\x02\n\x12\x46lowMetricsRequest\x12\x12\n\nflow_names\x18\x01 \x03(\t\x12>\n\x0cmetric_names\x18\x03 \x03(\x0e\x32(.otg.FlowMetricsRequest.MetricNames.Enum\x12\x34\n\x0etagged_metrics\x18\x04 \x01(\x0b\x32\x1c.otg.FlowTaggedMetricsFilter\x1a\x97\x01\n\x0bMetricNames\"\x87\x01\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\x0c\n\x08transmit\x10\x01\x12\r\n\tframes_tx\x10\x02\x12\r\n\tframes_rx\x10\x03\x12\x0c\n\x08\x62ytes_tx\x10\x04\x12\x0c\n\x08\x62ytes_rx\x10\x05\x12\x12\n\x0e\x66rames_tx_rate\x10\x06\x12\x12\n\x0e\x66rames_rx_rate\x10\x07\"\xf4\x02\n\x17\x46lowTaggedMetricsFilter\x12\x14\n\x07include\x18\x01 \x01(\x08H\x00\x88\x01\x01\x12\"\n\x15include_empty_metrics\x18\x02 \x01(\x08H\x01\x88\x01\x01\x12\x43\n\x0cmetric_names\x18\x03 \x03(\x0e\x32-.otg.FlowTaggedMetricsFilter.MetricNames.Enum\x12)\n\x07\x66ilters\x18\x04 \x03(\x0b\x32\x18.otg.FlowMetricTagFilter\x1a\x88\x01\n\x0bMetricNames\"y\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\r\n\tframes_tx\x10\x01\x12\r\n\tframes_rx\x10\x02\x12\x0c\n\x08\x62ytes_tx\x10\x03\x12\x0c\n\x08\x62ytes_rx\x10\x04\x12\x12\n\x0e\x66rames_tx_rate\x10\x05\x12\x12\n\x0e\x66rames_rx_rate\x10\x06\x42\n\n\x08_includeB\x18\n\x16_include_empty_metrics\"A\n\x13\x46lowMetricTagFilter\x12\x11\n\x04name\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x0e\n\x06values\x18\x02 \x03(\tB\x07\n\x05_name\"\x88\x05\n\nFlowMetric\x12\x11\n\x04name\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x14\n\x07port_tx\x18\x02 \x01(\tH\x01\x88\x01\x01\x12\x14\n\x07port_rx\x18\x03 \x01(\tH\x02\x88\x01\x01\x12\x34\n\x08transmit\x18\x05 \x01(\x0e\x32\x1d.otg.FlowMetric.Transmit.EnumH\x03\x88\x01\x01\x12\x16\n\tframes_tx\x18\x06 \x01(\x04H\x04\x88\x01\x01\x12\x16\n\tframes_rx\x18\x07 \x01(\x04H\x05\x88\x01\x01\x12\x15\n\x08\x62ytes_tx\x18\x08 \x01(\x04H\x06\x88\x01\x01\x12\x15\n\x08\x62ytes_rx\x18\t \x01(\x04H\x07\x88\x01\x01\x12\x1b\n\x0e\x66rames_tx_rate\x18\n \x01(\x02H\x08\x88\x01\x01\x12\x1b\n\x0e\x66rames_rx_rate\x18\x0b \x01(\x02H\t\x88\x01\x01\x12\x11\n\x04loss\x18\x0c \x01(\x02H\n\x88\x01\x01\x12(\n\ntimestamps\x18\r \x01(\x0b\x32\x14.otg.MetricTimestamp\x12#\n\x07latency\x18\x0e \x01(\x0b\x32\x12.otg.MetricLatency\x12-\n\x0etagged_metrics\x18\x0f \x03(\x0b\x32\x15.otg.FlowTaggedMetric\x1aI\n\x08Transmit\"=\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\x0b\n\x07started\x10\x01\x12\x0b\n\x07stopped\x10\x02\x12\n\n\x06paused\x10\x03\x42\x07\n\x05_nameB\n\n\x08_port_txB\n\n\x08_port_rxB\x0b\n\t_transmitB\x0c\n\n_frames_txB\x0c\n\n_frames_rxB\x0b\n\t_bytes_txB\x0b\n\t_bytes_rxB\x11\n\x0f_frames_tx_rateB\x11\n\x0f_frames_rx_rateB\x07\n\x05_loss\"\x93\x03\n\x10\x46lowTaggedMetric\x12 \n\x04tags\x18\x01 \x03(\x0b\x32\x12.otg.FlowMetricTag\x12\x16\n\tframes_tx\x18\x02 \x01(\x04H\x00\x88\x01\x01\x12\x16\n\tframes_rx\x18\x03 \x01(\x04H\x01\x88\x01\x01\x12\x15\n\x08\x62ytes_tx\x18\x04 \x01(\x04H\x02\x88\x01\x01\x12\x15\n\x08\x62ytes_rx\x18\x05 \x01(\x04H\x03\x88\x01\x01\x12\x1b\n\x0e\x66rames_tx_rate\x18\x06 \x01(\x02H\x04\x88\x01\x01\x12\x1b\n\x0e\x66rames_rx_rate\x18\x07 \x01(\x02H\x05\x88\x01\x01\x12\x11\n\x04loss\x18\x08 \x01(\x02H\x06\x88\x01\x01\x12(\n\ntimestamps\x18\t \x01(\x0b\x32\x14.otg.MetricTimestamp\x12#\n\x07latency\x18\n \x01(\x0b\x32\x12.otg.MetricLatencyB\x0c\n\n_frames_txB\x0c\n\n_frames_rxB\x0b\n\t_bytes_txB\x0b\n\t_bytes_rxB\x11\n\x0f_frames_tx_rateB\x11\n\x0f_frames_rx_rateB\x07\n\x05_loss\"S\n\rFlowMetricTag\x12\x11\n\x04name\x18\x01 \x01(\tH\x00\x88\x01\x01\x12&\n\x05value\x18\x02 \x01(\x0b\x32\x17.otg.FlowMetricTagValueB\x07\n\x05_name\"\xc2\x01\n\x12\x46lowMetricTagValue\x12\x38\n\x06\x63hoice\x18\x01 \x01(\x0e\x32#.otg.FlowMetricTagValue.Choice.EnumH\x00\x88\x01\x01\x12\x10\n\x03hex\x18\x02 \x01(\tH\x01\x88\x01\x01\x12\x10\n\x03str\x18\x03 \x01(\tH\x02\x88\x01\x01\x1a\x33\n\x06\x43hoice\")\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\x07\n\x03hex\x10\x01\x12\x07\n\x03str\x10\x02\x42\t\n\x07_choiceB\x06\n\x04_hexB\x06\n\x04_str\"\x7f\n\x0fMetricTimestamp\x12\x1f\n\x12\x66irst_timestamp_ns\x18\x01 \x01(\x01H\x00\x88\x01\x01\x12\x1e\n\x11last_timestamp_ns\x18\x02 \x01(\x01H\x01\x88\x01\x01\x42\x15\n\x13_first_timestamp_nsB\x14\n\x12_last_timestamp_ns\"\x87\x01\n\rMetricLatency\x12\x17\n\nminimum_ns\x18\x01 \x01(\x01H\x00\x88\x01\x01\x12\x17\n\nmaximum_ns\x18\x02 \x01(\x01H\x01\x88\x01\x01\x12\x17\n\naverage_ns\x18\x03 \x01(\x01H\x02\x88\x01\x01\x42\r\n\x0b_minimum_nsB\r\n\x0b_maximum_nsB\r\n\x0b_average_ns\"\xf9\x03\n\x13\x42gpv4MetricsRequest\x12\x12\n\npeer_names\x18\x01 \x03(\t\x12?\n\x0c\x63olumn_names\x18\x02 \x03(\x0e\x32).otg.Bgpv4MetricsRequest.ColumnNames.Enum\x1a\x8c\x03\n\x0b\x43olumnNames\"\xfc\x02\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\x11\n\rsession_state\x10\x01\x12\x16\n\x12session_flap_count\x10\x02\x12\x15\n\x11routes_advertised\x10\x03\x12\x13\n\x0froutes_received\x10\x04\x12\x18\n\x14route_withdraws_sent\x10\x05\x12\x1c\n\x18route_withdraws_received\x10\x06\x12\x10\n\x0cupdates_sent\x10\x07\x12\x14\n\x10updates_received\x10\x08\x12\x0e\n\nopens_sent\x10\t\x12\x12\n\x0eopens_received\x10\n\x12\x13\n\x0fkeepalives_sent\x10\x0b\x12\x17\n\x13keepalives_received\x10\x0c\x12\x16\n\x12notifications_sent\x10\r\x12\x1a\n\x16notifications_received\x10\x0e\x12\r\n\tfsm_state\x10\x0f\x12\x17\n\x13\x65nd_of_rib_received\x10\x10\"\xea\x08\n\x0b\x42gpv4Metric\x12\x11\n\x04name\x18\x01 \x01(\tH\x00\x88\x01\x01\x12>\n\rsession_state\x18\x02 \x01(\x0e\x32\".otg.Bgpv4Metric.SessionState.EnumH\x01\x88\x01\x01\x12\x1f\n\x12session_flap_count\x18\x03 \x01(\x04H\x02\x88\x01\x01\x12\x1e\n\x11routes_advertised\x18\x04 \x01(\x04H\x03\x88\x01\x01\x12\x1c\n\x0froutes_received\x18\x05 \x01(\x04H\x04\x88\x01\x01\x12!\n\x14route_withdraws_sent\x18\x06 \x01(\x04H\x05\x88\x01\x01\x12%\n\x18route_withdraws_received\x18\x07 \x01(\x04H\x06\x88\x01\x01\x12\x19\n\x0cupdates_sent\x18\x08 \x01(\x04H\x07\x88\x01\x01\x12\x1d\n\x10updates_received\x18\t \x01(\x04H\x08\x88\x01\x01\x12\x17\n\nopens_sent\x18\n \x01(\x04H\t\x88\x01\x01\x12\x1b\n\x0eopens_received\x18\x0b \x01(\x04H\n\x88\x01\x01\x12\x1c\n\x0fkeepalives_sent\x18\x0c \x01(\x04H\x0b\x88\x01\x01\x12 \n\x13keepalives_received\x18\r \x01(\x04H\x0c\x88\x01\x01\x12\x1f\n\x12notifications_sent\x18\x0e \x01(\x04H\r\x88\x01\x01\x12#\n\x16notifications_received\x18\x0f \x01(\x04H\x0e\x88\x01\x01\x12\x36\n\tfsm_state\x18\x10 \x01(\x0e\x32\x1e.otg.Bgpv4Metric.FsmState.EnumH\x0f\x88\x01\x01\x12 \n\x13\x65nd_of_rib_received\x18\x11 \x01(\x04H\x10\x88\x01\x01\x1a\x39\n\x0cSessionState\")\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\x06\n\x02up\x10\x01\x12\x08\n\x04\x64own\x10\x02\x1av\n\x08\x46smState\"j\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\x08\n\x04idle\x10\x01\x12\x0b\n\x07\x63onnect\x10\x02\x12\n\n\x06\x61\x63tive\x10\x03\x12\x0c\n\x08opensent\x10\x04\x12\x0f\n\x0bopenconfirm\x10\x05\x12\x0f\n\x0b\x65stablished\x10\x06\x42\x07\n\x05_nameB\x10\n\x0e_session_stateB\x15\n\x13_session_flap_countB\x14\n\x12_routes_advertisedB\x12\n\x10_routes_receivedB\x17\n\x15_route_withdraws_sentB\x1b\n\x19_route_withdraws_receivedB\x0f\n\r_updates_sentB\x13\n\x11_updates_receivedB\r\n\x0b_opens_sentB\x11\n\x0f_opens_receivedB\x12\n\x10_keepalives_sentB\x16\n\x14_keepalives_receivedB\x15\n\x13_notifications_sentB\x19\n\x17_notifications_receivedB\x0c\n\n_fsm_stateB\x16\n\x14_end_of_rib_received\"\xf9\x03\n\x13\x42gpv6MetricsRequest\x12\x12\n\npeer_names\x18\x01 \x03(\t\x12?\n\x0c\x63olumn_names\x18\x02 \x03(\x0e\x32).otg.Bgpv6MetricsRequest.ColumnNames.Enum\x1a\x8c\x03\n\x0b\x43olumnNames\"\xfc\x02\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\x11\n\rsession_state\x10\x01\x12\x16\n\x12session_flap_count\x10\x02\x12\x15\n\x11routes_advertised\x10\x03\x12\x13\n\x0froutes_received\x10\x04\x12\x18\n\x14route_withdraws_sent\x10\x05\x12\x1c\n\x18route_withdraws_received\x10\x06\x12\x10\n\x0cupdates_sent\x10\x07\x12\x14\n\x10updates_received\x10\x08\x12\x0e\n\nopens_sent\x10\t\x12\x12\n\x0eopens_received\x10\n\x12\x13\n\x0fkeepalives_sent\x10\x0b\x12\x17\n\x13keepalives_received\x10\x0c\x12\x16\n\x12notifications_sent\x10\r\x12\x1a\n\x16notifications_received\x10\x0e\x12\r\n\tfsm_state\x10\x0f\x12\x17\n\x13\x65nd_of_rib_received\x10\x10\"\xea\x08\n\x0b\x42gpv6Metric\x12\x11\n\x04name\x18\x01 \x01(\tH\x00\x88\x01\x01\x12>\n\rsession_state\x18\x02 \x01(\x0e\x32\".otg.Bgpv6Metric.SessionState.EnumH\x01\x88\x01\x01\x12\x1f\n\x12session_flap_count\x18\x03 \x01(\x04H\x02\x88\x01\x01\x12\x1e\n\x11routes_advertised\x18\x04 \x01(\x04H\x03\x88\x01\x01\x12\x1c\n\x0froutes_received\x18\x05 \x01(\x04H\x04\x88\x01\x01\x12!\n\x14route_withdraws_sent\x18\x06 \x01(\x04H\x05\x88\x01\x01\x12%\n\x18route_withdraws_received\x18\x07 \x01(\x04H\x06\x88\x01\x01\x12\x19\n\x0cupdates_sent\x18\x08 \x01(\x04H\x07\x88\x01\x01\x12\x1d\n\x10updates_received\x18\t \x01(\x04H\x08\x88\x01\x01\x12\x17\n\nopens_sent\x18\n \x01(\x04H\t\x88\x01\x01\x12\x1b\n\x0eopens_received\x18\x0b \x01(\x04H\n\x88\x01\x01\x12\x1c\n\x0fkeepalives_sent\x18\x0c \x01(\x04H\x0b\x88\x01\x01\x12 \n\x13keepalives_received\x18\r \x01(\x04H\x0c\x88\x01\x01\x12\x1f\n\x12notifications_sent\x18\x0e \x01(\x04H\r\x88\x01\x01\x12#\n\x16notifications_received\x18\x0f \x01(\x04H\x0e\x88\x01\x01\x12\x36\n\tfsm_state\x18\x10 \x01(\x0e\x32\x1e.otg.Bgpv6Metric.FsmState.EnumH\x0f\x88\x01\x01\x12 \n\x13\x65nd_of_rib_received\x18\x11 \x01(\x04H\x10\x88\x01\x01\x1a\x39\n\x0cSessionState\")\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\x06\n\x02up\x10\x01\x12\x08\n\x04\x64own\x10\x02\x1av\n\x08\x46smState\"j\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\x08\n\x04idle\x10\x01\x12\x0b\n\x07\x63onnect\x10\x02\x12\n\n\x06\x61\x63tive\x10\x03\x12\x0c\n\x08opensent\x10\x04\x12\x0f\n\x0bopenconfirm\x10\x05\x12\x0f\n\x0b\x65stablished\x10\x06\x42\x07\n\x05_nameB\x10\n\x0e_session_stateB\x15\n\x13_session_flap_countB\x14\n\x12_routes_advertisedB\x12\n\x10_routes_receivedB\x17\n\x15_route_withdraws_sentB\x1b\n\x19_route_withdraws_receivedB\x0f\n\r_updates_sentB\x13\n\x11_updates_receivedB\r\n\x0b_opens_sentB\x11\n\x0f_opens_receivedB\x12\n\x10_keepalives_sentB\x16\n\x14_keepalives_receivedB\x15\n\x13_notifications_sentB\x19\n\x17_notifications_receivedB\x0c\n\n_fsm_stateB\x16\n\x14_end_of_rib_received\"\x92\x06\n\x12IsisMetricsRequest\x12\x14\n\x0crouter_names\x18\x01 \x03(\t\x12>\n\x0c\x63olumn_names\x18\x02 \x03(\x0e\x32(.otg.IsisMetricsRequest.ColumnNames.Enum\x1a\xa5\x05\n\x0b\x43olumnNames\"\x95\x05\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\x12\n\x0el1_sessions_up\x10\x01\x12\x13\n\x0fl1_session_flap\x10\x02\x12\x14\n\x10l1_database_size\x10\x03\x12\x1c\n\x18l1_broadcast_hellos_sent\x10\x04\x12 \n\x1cl1_broadcast_hellos_received\x10\x05\x12!\n\x1dl1_point_to_point_hellos_sent\x10\x06\x12%\n!l1_point_to_point_hellos_received\x10\x07\x12\x10\n\x0cl1_psnp_sent\x10\x08\x12\x14\n\x10l1_psnp_received\x10\t\x12\x10\n\x0cl1_csnp_sent\x10\n\x12\x14\n\x10l1_csnp_received\x10\x0b\x12\x0f\n\x0bl1_lsp_sent\x10\x0c\x12\x13\n\x0fl1_lsp_received\x10\r\x12\x12\n\x0el2_sessions_up\x10\x0e\x12\x13\n\x0fl2_session_flap\x10\x0f\x12\x14\n\x10l2_database_size\x10\x10\x12\x1c\n\x18l2_broadcast_hellos_sent\x10\x11\x12 \n\x1cl2_broadcast_hellos_received\x10\x12\x12!\n\x1dl2_point_to_point_hellos_sent\x10\x13\x12%\n!l2_point_to_point_hellos_received\x10\x14\x12\x10\n\x0cl2_psnp_sent\x10\x15\x12\x14\n\x10l2_psnp_received\x10\x16\x12\x10\n\x0cl2_csnp_sent\x10\x17\x12\x14\n\x10l2_csnp_received\x10\x18\x12\x0f\n\x0bl2_lsp_sent\x10\x19\x12\x13\n\x0fl2_lsp_received\x10\x1a\"\xf4\x0b\n\nIsisMetric\x12\x11\n\x04name\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x1b\n\x0el1_sessions_up\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x1c\n\x0fl1_session_flap\x18\x03 \x01(\x04H\x02\x88\x01\x01\x12%\n\x18l1_broadcast_hellos_sent\x18\x04 \x01(\x04H\x03\x88\x01\x01\x12)\n\x1cl1_broadcast_hellos_received\x18\x05 \x01(\x04H\x04\x88\x01\x01\x12*\n\x1dl1_point_to_point_hellos_sent\x18\x06 \x01(\x04H\x05\x88\x01\x01\x12.\n!l1_point_to_point_hellos_received\x18\x07 \x01(\x04H\x06\x88\x01\x01\x12\x1d\n\x10l1_database_size\x18\x08 \x01(\x04H\x07\x88\x01\x01\x12\x19\n\x0cl1_psnp_sent\x18\t \x01(\x04H\x08\x88\x01\x01\x12\x1d\n\x10l1_psnp_received\x18\n \x01(\x04H\t\x88\x01\x01\x12\x19\n\x0cl1_csnp_sent\x18\x0b \x01(\x04H\n\x88\x01\x01\x12\x1d\n\x10l1_csnp_received\x18\x0c \x01(\x04H\x0b\x88\x01\x01\x12\x18\n\x0bl1_lsp_sent\x18\r \x01(\x04H\x0c\x88\x01\x01\x12\x1c\n\x0fl1_lsp_received\x18\x0e \x01(\x04H\r\x88\x01\x01\x12\x1b\n\x0el2_sessions_up\x18\x0f \x01(\rH\x0e\x88\x01\x01\x12\x1c\n\x0fl2_session_flap\x18\x10 \x01(\x04H\x0f\x88\x01\x01\x12%\n\x18l2_broadcast_hellos_sent\x18\x11 \x01(\x04H\x10\x88\x01\x01\x12)\n\x1cl2_broadcast_hellos_received\x18\x12 \x01(\x04H\x11\x88\x01\x01\x12*\n\x1dl2_point_to_point_hellos_sent\x18\x13 \x01(\x04H\x12\x88\x01\x01\x12.\n!l2_point_to_point_hellos_received\x18\x14 \x01(\x04H\x13\x88\x01\x01\x12\x1d\n\x10l2_database_size\x18\x15 \x01(\x04H\x14\x88\x01\x01\x12\x19\n\x0cl2_psnp_sent\x18\x16 \x01(\x04H\x15\x88\x01\x01\x12\x1d\n\x10l2_psnp_received\x18\x17 \x01(\x04H\x16\x88\x01\x01\x12\x19\n\x0cl2_csnp_sent\x18\x18 \x01(\x04H\x17\x88\x01\x01\x12\x1d\n\x10l2_csnp_received\x18\x19 \x01(\x04H\x18\x88\x01\x01\x12\x18\n\x0bl2_lsp_sent\x18\x1a \x01(\x04H\x19\x88\x01\x01\x12\x1c\n\x0fl2_lsp_received\x18\x1b \x01(\x04H\x1a\x88\x01\x01\x42\x07\n\x05_nameB\x11\n\x0f_l1_sessions_upB\x12\n\x10_l1_session_flapB\x1b\n\x19_l1_broadcast_hellos_sentB\x1f\n\x1d_l1_broadcast_hellos_receivedB \n\x1e_l1_point_to_point_hellos_sentB$\n\"_l1_point_to_point_hellos_receivedB\x13\n\x11_l1_database_sizeB\x0f\n\r_l1_psnp_sentB\x13\n\x11_l1_psnp_receivedB\x0f\n\r_l1_csnp_sentB\x13\n\x11_l1_csnp_receivedB\x0e\n\x0c_l1_lsp_sentB\x12\n\x10_l1_lsp_receivedB\x11\n\x0f_l2_sessions_upB\x12\n\x10_l2_session_flapB\x1b\n\x19_l2_broadcast_hellos_sentB\x1f\n\x1d_l2_broadcast_hellos_receivedB \n\x1e_l2_point_to_point_hellos_sentB$\n\"_l2_point_to_point_hellos_receivedB\x13\n\x11_l2_database_sizeB\x0f\n\r_l2_psnp_sentB\x13\n\x11_l2_psnp_receivedB\x0f\n\r_l2_csnp_sentB\x13\n\x11_l2_csnp_receivedB\x0e\n\x0c_l2_lsp_sentB\x12\n\x10_l2_lsp_received\"\xbd\x02\n\x11LagMetricsRequest\x12\x11\n\tlag_names\x18\x01 \x03(\t\x12=\n\x0c\x63olumn_names\x18\x02 \x03(\x0e\x32\'.otg.LagMetricsRequest.ColumnNames.Enum\x1a\xd5\x01\n\x0b\x43olumnNames\"\xc5\x01\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\x0f\n\x0boper_status\x10\x01\x12\x13\n\x0fmember_ports_up\x10\x02\x12\r\n\tframes_tx\x10\x03\x12\r\n\tframes_rx\x10\x04\x12\x0c\n\x08\x62ytes_tx\x10\x05\x12\x0c\n\x08\x62ytes_rx\x10\x06\x12\x12\n\x0e\x66rames_tx_rate\x10\x07\x12\x12\n\x0e\x66rames_rx_rate\x10\x08\x12\x11\n\rbytes_tx_rate\x10\t\x12\x11\n\rbytes_rx_rate\x10\n\"\xac\x04\n\tLagMetric\x12\x11\n\x04name\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x38\n\x0boper_status\x18\x02 \x01(\x0e\x32\x1e.otg.LagMetric.OperStatus.EnumH\x01\x88\x01\x01\x12\x1c\n\x0fmember_ports_up\x18\x03 \x01(\rH\x02\x88\x01\x01\x12\x16\n\tframes_tx\x18\x04 \x01(\x04H\x03\x88\x01\x01\x12\x16\n\tframes_rx\x18\x05 \x01(\x04H\x04\x88\x01\x01\x12\x15\n\x08\x62ytes_tx\x18\x06 \x01(\x04H\x05\x88\x01\x01\x12\x15\n\x08\x62ytes_rx\x18\x07 \x01(\x04H\x06\x88\x01\x01\x12\x1b\n\x0e\x66rames_tx_rate\x18\x08 \x01(\x02H\x07\x88\x01\x01\x12\x1b\n\x0e\x66rames_rx_rate\x18\t \x01(\x02H\x08\x88\x01\x01\x12\x1a\n\rbytes_tx_rate\x18\n \x01(\x02H\t\x88\x01\x01\x12\x1a\n\rbytes_rx_rate\x18\x0b \x01(\x02H\n\x88\x01\x01\x1a\x37\n\nOperStatus\")\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\x06\n\x02up\x10\x01\x12\x08\n\x04\x64own\x10\x02\x42\x07\n\x05_nameB\x0e\n\x0c_oper_statusB\x12\n\x10_member_ports_upB\x0c\n\n_frames_txB\x0c\n\n_frames_rxB\x0b\n\t_bytes_txB\x0b\n\t_bytes_rxB\x11\n\x0f_frames_tx_rateB\x11\n\x0f_frames_rx_rateB\x10\n\x0e_bytes_tx_rateB\x10\n\x0e_bytes_rx_rate\"\xb4\x03\n\x12LacpMetricsRequest\x12\x11\n\tlag_names\x18\x01 \x03(\t\x12\x1d\n\x15lag_member_port_names\x18\x02 \x03(\t\x12>\n\x0c\x63olumn_names\x18\x03 \x03(\x0e\x32(.otg.LacpMetricsRequest.ColumnNames.Enum\x1a\xab\x02\n\x0b\x43olumnNames\"\x9b\x02\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\x13\n\x0flacp_packets_rx\x10\x01\x12\x13\n\x0flacp_packets_tx\x10\x02\x12\x12\n\x0elacp_rx_errors\x10\x03\x12\x0c\n\x08\x61\x63tivity\x10\x04\x12\x0b\n\x07timeout\x10\x05\x12\x13\n\x0fsynchronization\x10\x06\x12\x10\n\x0c\x61ggregatable\x10\x07\x12\x0e\n\ncollecting\x10\x08\x12\x10\n\x0c\x64istributing\x10\t\x12\r\n\tsystem_id\x10\n\x12\x0c\n\x08oper_key\x10\x0b\x12\x0e\n\npartner_id\x10\x0c\x12\x0f\n\x0bpartner_key\x10\r\x12\x0c\n\x08port_num\x10\x0e\x12\x14\n\x10partner_port_num\x10\x0f\"\x8d\x08\n\nLacpMetric\x12\x15\n\x08lag_name\x18\x01 \x01(\tH\x00\x88\x01\x01\x12!\n\x14lag_member_port_name\x18\x02 \x01(\tH\x01\x88\x01\x01\x12\x1c\n\x0flacp_packets_rx\x18\x03 \x01(\x04H\x02\x88\x01\x01\x12\x1c\n\x0flacp_packets_tx\x18\x04 \x01(\x04H\x03\x88\x01\x01\x12\x1b\n\x0elacp_rx_errors\x18\x05 \x01(\x04H\x04\x88\x01\x01\x12\x34\n\x08\x61\x63tivity\x18\x06 \x01(\x0e\x32\x1d.otg.LacpMetric.Activity.EnumH\x05\x88\x01\x01\x12\x32\n\x07timeout\x18\x07 \x01(\x0e\x32\x1c.otg.LacpMetric.Timeout.EnumH\x06\x88\x01\x01\x12\x42\n\x0fsynchronization\x18\x08 \x01(\x0e\x32$.otg.LacpMetric.Synchronization.EnumH\x07\x88\x01\x01\x12\x19\n\x0c\x61ggregatable\x18\t \x01(\x08H\x08\x88\x01\x01\x12\x17\n\ncollecting\x18\n \x01(\x08H\t\x88\x01\x01\x12\x19\n\x0c\x64istributing\x18\x0b \x01(\x08H\n\x88\x01\x01\x12\x16\n\tsystem_id\x18\x0c \x01(\tH\x0b\x88\x01\x01\x12\x15\n\x08oper_key\x18\r \x01(\rH\x0c\x88\x01\x01\x12\x17\n\npartner_id\x18\x0e \x01(\tH\r\x88\x01\x01\x12\x18\n\x0bpartner_key\x18\x0f \x01(\rH\x0e\x88\x01\x01\x12\x15\n\x08port_num\x18\x10 \x01(\rH\x0f\x88\x01\x01\x12\x1d\n\x10partner_port_num\x18\x11 \x01(\rH\x10\x88\x01\x01\x1a<\n\x08\x41\x63tivity\"0\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\n\n\x06\x61\x63tive\x10\x01\x12\x0b\n\x07passive\x10\x02\x1a\x37\n\x07Timeout\",\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\t\n\x05short\x10\x01\x12\x08\n\x04long\x10\x02\x1a\x45\n\x0fSynchronization\"2\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\x0b\n\x07in_sync\x10\x01\x12\x0c\n\x08out_sync\x10\x02\x42\x0b\n\t_lag_nameB\x17\n\x15_lag_member_port_nameB\x12\n\x10_lacp_packets_rxB\x12\n\x10_lacp_packets_txB\x11\n\x0f_lacp_rx_errorsB\x0b\n\t_activityB\n\n\x08_timeoutB\x12\n\x10_synchronizationB\x0f\n\r_aggregatableB\r\n\x0b_collectingB\x0f\n\r_distributingB\x0c\n\n_system_idB\x0b\n\t_oper_keyB\r\n\x0b_partner_idB\x0e\n\x0c_partner_keyB\x0b\n\t_port_numB\x13\n\x11_partner_port_num\"\xfd\x01\n\x12LldpMetricsRequest\x12\x12\n\nlldp_names\x18\x01 \x03(\t\x12>\n\x0c\x63olumn_names\x18\x02 \x03(\x0e\x32(.otg.LldpMetricsRequest.ColumnNames.Enum\x1a\x92\x01\n\x0b\x43olumnNames\"\x82\x01\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\r\n\tframes_rx\x10\x01\x12\r\n\tframes_tx\x10\x02\x12\x13\n\x0f\x66rames_error_rx\x10\x03\x12\x12\n\x0e\x66rames_discard\x10\x04\x12\x10\n\x0ctlvs_discard\x10\x05\x12\x10\n\x0ctlvs_unknown\x10\x06\"\xae\x02\n\nLldpMetric\x12\x11\n\x04name\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x16\n\tframes_rx\x18\x02 \x01(\x04H\x01\x88\x01\x01\x12\x16\n\tframes_tx\x18\x03 \x01(\x04H\x02\x88\x01\x01\x12\x1c\n\x0f\x66rames_error_rx\x18\x04 \x01(\x04H\x03\x88\x01\x01\x12\x1b\n\x0e\x66rames_discard\x18\x05 \x01(\x04H\x04\x88\x01\x01\x12\x19\n\x0ctlvs_discard\x18\x06 \x01(\x04H\x05\x88\x01\x01\x12\x19\n\x0ctlvs_unknown\x18\x07 \x01(\x04H\x06\x88\x01\x01\x42\x07\n\x05_nameB\x0c\n\n_frames_rxB\x0c\n\n_frames_txB\x12\n\x10_frames_error_rxB\x11\n\x0f_frames_discardB\x0f\n\r_tlvs_discardB\x0f\n\r_tlvs_unknown\"\xc2\x05\n\x12RsvpMetricsRequest\x12\x14\n\x0crouter_names\x18\x01 \x03(\t\x12>\n\x0c\x63olumn_names\x18\x02 \x03(\x0e\x32(.otg.RsvpMetricsRequest.ColumnNames.Enum\x1a\xd5\x04\n\x0b\x43olumnNames\"\xc5\x04\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\x1f\n\x1bingress_p2p_lsps_configured\x10\x01\x12\x17\n\x13ingress_p2p_lsps_up\x10\x02\x12\x16\n\x12\x65gress_p2p_lsps_up\x10\x03\x12\x12\n\x0elsp_flap_count\x10\x04\x12\x0c\n\x08paths_tx\x10\x05\x12\x0c\n\x08paths_rx\x10\x06\x12\x0c\n\x08resvs_tx\x10\x07\x12\x0c\n\x08resvs_rx\x10\x08\x12\x11\n\rpath_tears_tx\x10\t\x12\x11\n\rpath_tears_rx\x10\n\x12\x11\n\rresv_tears_tx\x10\x0b\x12\x11\n\rresv_tears_rx\x10\x0c\x12\x12\n\x0epath_errors_tx\x10\r\x12\x12\n\x0epath_errors_rx\x10\x0e\x12\x12\n\x0eresv_errors_tx\x10\x0f\x12\x12\n\x0eresv_errors_rx\x10\x10\x12\x10\n\x0cresv_conf_tx\x10\x11\x12\x10\n\x0cresv_conf_rx\x10\x12\x12\r\n\thellos_tx\x10\x13\x12\r\n\thellos_rx\x10\x14\x12\x0b\n\x07\x61\x63ks_tx\x10\x15\x12\x0b\n\x07\x61\x63ks_rx\x10\x16\x12\x0c\n\x08nacks_tx\x10\x17\x12\x0c\n\x08nacks_rx\x10\x18\x12\x0f\n\x0bsrefresh_tx\x10\x19\x12\x0f\n\x0bsrefresh_rx\x10\x1a\x12\r\n\tbundle_tx\x10\x1b\x12\r\n\tbundle_rx\x10\x1c\x12 \n\x1cpath_reevaluation_request_tx\x10\x1d\x12\x18\n\x14path_reoptimizations\x10\x1e\"\xf4\n\n\nRsvpMetric\x12\x11\n\x04name\x18\x01 \x01(\tH\x00\x88\x01\x01\x12(\n\x1bingress_p2p_lsps_configured\x18\x02 \x01(\rH\x01\x88\x01\x01\x12 \n\x13ingress_p2p_lsps_up\x18\x03 \x01(\rH\x02\x88\x01\x01\x12\x1f\n\x12\x65gress_p2p_lsps_up\x18\x04 \x01(\rH\x03\x88\x01\x01\x12\x1b\n\x0elsp_flap_count\x18\x05 \x01(\x04H\x04\x88\x01\x01\x12\x15\n\x08paths_tx\x18\x06 \x01(\x04H\x05\x88\x01\x01\x12\x15\n\x08paths_rx\x18\x07 \x01(\x04H\x06\x88\x01\x01\x12\x15\n\x08resvs_tx\x18\x08 \x01(\x04H\x07\x88\x01\x01\x12\x15\n\x08resvs_rx\x18\t \x01(\x04H\x08\x88\x01\x01\x12\x1a\n\rpath_tears_tx\x18\n \x01(\x04H\t\x88\x01\x01\x12\x1a\n\rpath_tears_rx\x18\x0b \x01(\x04H\n\x88\x01\x01\x12\x1a\n\rresv_tears_tx\x18\x0c \x01(\x04H\x0b\x88\x01\x01\x12\x1a\n\rresv_tears_rx\x18\r \x01(\x04H\x0c\x88\x01\x01\x12\x1b\n\x0epath_errors_tx\x18\x0e \x01(\x04H\r\x88\x01\x01\x12\x1b\n\x0epath_errors_rx\x18\x0f \x01(\x04H\x0e\x88\x01\x01\x12\x1b\n\x0eresv_errors_tx\x18\x10 \x01(\x04H\x0f\x88\x01\x01\x12\x1b\n\x0eresv_errors_rx\x18\x11 \x01(\x04H\x10\x88\x01\x01\x12\x19\n\x0cresv_conf_tx\x18\x12 \x01(\x04H\x11\x88\x01\x01\x12\x19\n\x0cresv_conf_rx\x18\x13 \x01(\x04H\x12\x88\x01\x01\x12\x16\n\thellos_tx\x18\x14 \x01(\x04H\x13\x88\x01\x01\x12\x16\n\thellos_rx\x18\x15 \x01(\x04H\x14\x88\x01\x01\x12\x14\n\x07\x61\x63ks_tx\x18\x16 \x01(\x04H\x15\x88\x01\x01\x12\x14\n\x07\x61\x63ks_rx\x18\x17 \x01(\x04H\x16\x88\x01\x01\x12\x15\n\x08nacks_tx\x18\x18 \x01(\x04H\x17\x88\x01\x01\x12\x15\n\x08nacks_rx\x18\x19 \x01(\x04H\x18\x88\x01\x01\x12\x18\n\x0bsrefresh_tx\x18\x1a \x01(\x04H\x19\x88\x01\x01\x12\x18\n\x0bsrefresh_rx\x18\x1b \x01(\x04H\x1a\x88\x01\x01\x12\x16\n\tbundle_tx\x18\x1c \x01(\x04H\x1b\x88\x01\x01\x12\x16\n\tbundle_rx\x18\x1d \x01(\x04H\x1c\x88\x01\x01\x12)\n\x1cpath_reevaluation_request_tx\x18\x1e \x01(\x04H\x1d\x88\x01\x01\x12!\n\x14path_reoptimizations\x18\x1f \x01(\x04H\x1e\x88\x01\x01\x42\x07\n\x05_nameB\x1e\n\x1c_ingress_p2p_lsps_configuredB\x16\n\x14_ingress_p2p_lsps_upB\x15\n\x13_egress_p2p_lsps_upB\x11\n\x0f_lsp_flap_countB\x0b\n\t_paths_txB\x0b\n\t_paths_rxB\x0b\n\t_resvs_txB\x0b\n\t_resvs_rxB\x10\n\x0e_path_tears_txB\x10\n\x0e_path_tears_rxB\x10\n\x0e_resv_tears_txB\x10\n\x0e_resv_tears_rxB\x11\n\x0f_path_errors_txB\x11\n\x0f_path_errors_rxB\x11\n\x0f_resv_errors_txB\x11\n\x0f_resv_errors_rxB\x0f\n\r_resv_conf_txB\x0f\n\r_resv_conf_rxB\x0c\n\n_hellos_txB\x0c\n\n_hellos_rxB\n\n\x08_acks_txB\n\n\x08_acks_rxB\x0b\n\t_nacks_txB\x0b\n\t_nacks_rxB\x0e\n\x0c_srefresh_txB\x0e\n\x0c_srefresh_rxB\x0c\n\n_bundle_txB\x0c\n\n_bundle_rxB\x1f\n\x1d_path_reevaluation_request_txB\x17\n\x15_path_reoptimizations\"\x94\x04\n\rStatesRequest\x12\x33\n\x06\x63hoice\x18\x01 \x01(\x0e\x32\x1e.otg.StatesRequest.Choice.EnumH\x00\x88\x01\x01\x12\x35\n\x0eipv4_neighbors\x18\x02 \x01(\x0b\x32\x1d.otg.Neighborsv4StatesRequest\x12\x35\n\x0eipv6_neighbors\x18\x03 \x01(\x0b\x32\x1d.otg.Neighborsv6StatesRequest\x12\x30\n\x0c\x62gp_prefixes\x18\x04 \x01(\x0b\x32\x1a.otg.BgpPrefixStateRequest\x12,\n\tisis_lsps\x18\x05 \x01(\x0b\x32\x19.otg.IsisLspsStateRequest\x12\x36\n\x0elldp_neighbors\x18\x06 \x01(\x0b\x32\x1e.otg.LldpNeighborsStateRequest\x12,\n\trsvp_lsps\x18\x07 \x01(\x0b\x32\x19.otg.RsvpLspsStateRequest\x1a\x8e\x01\n\x06\x43hoice\"\x83\x01\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\x12\n\x0eipv4_neighbors\x10\x01\x12\x12\n\x0eipv6_neighbors\x10\x02\x12\x10\n\x0c\x62gp_prefixes\x10\x03\x12\r\n\tisis_lsps\x10\x04\x12\x12\n\x0elldp_neighbors\x10\x05\x12\r\n\trsvp_lsps\x10\x06\x42\t\n\x07_choice\"\xec\x03\n\x0eStatesResponse\x12\x34\n\x06\x63hoice\x18\x01 \x01(\x0e\x32\x1f.otg.StatesResponse.Choice.EnumH\x00\x88\x01\x01\x12-\n\x0eipv4_neighbors\x18\x02 \x03(\x0b\x32\x15.otg.Neighborsv4State\x12-\n\x0eipv6_neighbors\x18\x03 \x03(\x0b\x32\x15.otg.Neighborsv6State\x12+\n\x0c\x62gp_prefixes\x18\x04 \x03(\x0b\x32\x15.otg.BgpPrefixesState\x12%\n\tisis_lsps\x18\x05 \x03(\x0b\x32\x12.otg.IsisLspsState\x12/\n\x0elldp_neighbors\x18\x06 \x03(\x0b\x32\x17.otg.LldpNeighborsState\x12%\n\trsvp_lsps\x18\x07 \x03(\x0b\x32\x12.otg.RsvpLspsState\x1a\x8e\x01\n\x06\x43hoice\"\x83\x01\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\x12\n\x0eipv4_neighbors\x10\x01\x12\x12\n\x0eipv6_neighbors\x10\x02\x12\x10\n\x0c\x62gp_prefixes\x10\x03\x12\r\n\tisis_lsps\x10\x04\x12\x12\n\x0elldp_neighbors\x10\x05\x12\r\n\trsvp_lsps\x10\x06\x42\t\n\x07_choice\"2\n\x18Neighborsv4StatesRequest\x12\x16\n\x0e\x65thernet_names\x18\x01 \x03(\t\"\xa4\x01\n\x10Neighborsv4State\x12\x1a\n\rethernet_name\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x19\n\x0cipv4_address\x18\x02 \x01(\tH\x01\x88\x01\x01\x12\x1f\n\x12link_layer_address\x18\x03 \x01(\tH\x02\x88\x01\x01\x42\x10\n\x0e_ethernet_nameB\x0f\n\r_ipv4_addressB\x15\n\x13_link_layer_address\"2\n\x18Neighborsv6StatesRequest\x12\x16\n\x0e\x65thernet_names\x18\x01 \x03(\t\"\xa4\x01\n\x10Neighborsv6State\x12\x1a\n\rethernet_name\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x19\n\x0cipv6_address\x18\x02 \x01(\tH\x01\x88\x01\x01\x12\x1f\n\x12link_layer_address\x18\x03 \x01(\tH\x02\x88\x01\x01\x42\x10\n\x0e_ethernet_nameB\x0f\n\r_ipv6_addressB\x15\n\x13_link_layer_address\"\xc2\x02\n\x15\x42gpPrefixStateRequest\x12\x16\n\x0e\x62gp_peer_names\x18\x01 \x03(\t\x12\x45\n\x0eprefix_filters\x18\x02 \x03(\x0e\x32-.otg.BgpPrefixStateRequest.PrefixFilters.Enum\x12=\n\x14ipv4_unicast_filters\x18\x03 \x03(\x0b\x32\x1f.otg.BgpPrefixIpv4UnicastFilter\x12=\n\x14ipv6_unicast_filters\x18\x04 \x03(\x0b\x32\x1f.otg.BgpPrefixIpv6UnicastFilter\x1aL\n\rPrefixFilters\";\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\x10\n\x0cipv4_unicast\x10\x01\x12\x10\n\x0cipv6_unicast\x10\x02\"\x91\x02\n\x1a\x42gpPrefixIpv4UnicastFilter\x12\x11\n\taddresses\x18\x01 \x03(\t\x12\x1a\n\rprefix_length\x18\x02 \x01(\rH\x00\x88\x01\x01\x12@\n\x06origin\x18\x03 \x01(\x0e\x32+.otg.BgpPrefixIpv4UnicastFilter.Origin.EnumH\x01\x88\x01\x01\x12\x14\n\x07path_id\x18\x04 \x01(\rH\x02\x88\x01\x01\x1a\x43\n\x06Origin\"9\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\x07\n\x03igp\x10\x01\x12\x07\n\x03\x65gp\x10\x02\x12\x0e\n\nincomplete\x10\x03\x42\x10\n\x0e_prefix_lengthB\t\n\x07_originB\n\n\x08_path_id\"\x91\x02\n\x1a\x42gpPrefixIpv6UnicastFilter\x12\x11\n\taddresses\x18\x01 \x03(\t\x12\x1a\n\rprefix_length\x18\x02 \x01(\rH\x00\x88\x01\x01\x12@\n\x06origin\x18\x03 \x01(\x0e\x32+.otg.BgpPrefixIpv6UnicastFilter.Origin.EnumH\x01\x88\x01\x01\x12\x14\n\x07path_id\x18\x04 \x01(\rH\x02\x88\x01\x01\x1a\x43\n\x06Origin\"9\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\x07\n\x03igp\x10\x01\x12\x07\n\x03\x65gp\x10\x02\x12\x0e\n\nincomplete\x10\x03\x42\x10\n\x0e_prefix_lengthB\t\n\x07_originB\n\n\x08_path_id\"\xbe\x01\n\x10\x42gpPrefixesState\x12\x1a\n\rbgp_peer_name\x18\x01 \x01(\tH\x00\x88\x01\x01\x12=\n\x15ipv4_unicast_prefixes\x18\x02 \x03(\x0b\x32\x1e.otg.BgpPrefixIpv4UnicastState\x12=\n\x15ipv6_unicast_prefixes\x18\x03 \x03(\x0b\x32\x1e.otg.BgpPrefixIpv6UnicastStateB\x10\n\x0e_bgp_peer_name\"\xd1\x04\n\x19\x42gpPrefixIpv4UnicastState\x12\x19\n\x0cipv4_address\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x1a\n\rprefix_length\x18\x02 \x01(\rH\x01\x88\x01\x01\x12?\n\x06origin\x18\x03 \x01(\x0e\x32*.otg.BgpPrefixIpv4UnicastState.Origin.EnumH\x02\x88\x01\x01\x12\x14\n\x07path_id\x18\x04 \x01(\rH\x03\x88\x01\x01\x12\x1a\n\ripv4_next_hop\x18\x05 \x01(\tH\x04\x88\x01\x01\x12\x1a\n\ripv6_next_hop\x18\x06 \x01(\tH\x05\x88\x01\x01\x12,\n\x0b\x63ommunities\x18\x07 \x03(\x0b\x32\x17.otg.ResultBgpCommunity\x12%\n\x07\x61s_path\x18\x08 \x01(\x0b\x32\x14.otg.ResultBgpAsPath\x12\x1d\n\x10local_preference\x18\t \x01(\rH\x06\x88\x01\x01\x12%\n\x18multi_exit_discriminator\x18\n \x01(\rH\x07\x88\x01\x01\x1a\x43\n\x06Origin\"9\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\x07\n\x03igp\x10\x01\x12\x07\n\x03\x65gp\x10\x02\x12\x0e\n\nincomplete\x10\x03\x42\x0f\n\r_ipv4_addressB\x10\n\x0e_prefix_lengthB\t\n\x07_originB\n\n\x08_path_idB\x10\n\x0e_ipv4_next_hopB\x10\n\x0e_ipv6_next_hopB\x13\n\x11_local_preferenceB\x1b\n\x19_multi_exit_discriminator\"\xd1\x04\n\x19\x42gpPrefixIpv6UnicastState\x12\x19\n\x0cipv6_address\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x1a\n\rprefix_length\x18\x02 \x01(\rH\x01\x88\x01\x01\x12?\n\x06origin\x18\x03 \x01(\x0e\x32*.otg.BgpPrefixIpv6UnicastState.Origin.EnumH\x02\x88\x01\x01\x12\x14\n\x07path_id\x18\x04 \x01(\rH\x03\x88\x01\x01\x12\x1a\n\ripv4_next_hop\x18\x05 \x01(\tH\x04\x88\x01\x01\x12\x1a\n\ripv6_next_hop\x18\x06 \x01(\tH\x05\x88\x01\x01\x12,\n\x0b\x63ommunities\x18\x07 \x03(\x0b\x32\x17.otg.ResultBgpCommunity\x12%\n\x07\x61s_path\x18\x08 \x01(\x0b\x32\x14.otg.ResultBgpAsPath\x12\x1d\n\x10local_preference\x18\t \x01(\rH\x06\x88\x01\x01\x12%\n\x18multi_exit_discriminator\x18\n \x01(\rH\x07\x88\x01\x01\x1a\x43\n\x06Origin\"9\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\x07\n\x03igp\x10\x01\x12\x07\n\x03\x65gp\x10\x02\x12\x0e\n\nincomplete\x10\x03\x42\x0f\n\r_ipv6_addressB\x10\n\x0e_prefix_lengthB\t\n\x07_originB\n\n\x08_path_idB\x10\n\x0e_ipv4_next_hopB\x10\n\x0e_ipv6_next_hopB\x13\n\x11_local_preferenceB\x1b\n\x19_multi_exit_discriminator\"\xb0\x02\n\x12ResultBgpCommunity\x12\x34\n\x04type\x18\x01 \x01(\x0e\x32!.otg.ResultBgpCommunity.Type.EnumH\x00\x88\x01\x01\x12\x16\n\tas_number\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x16\n\tas_custom\x18\x03 \x01(\rH\x02\x88\x01\x01\x1a\x8e\x01\n\x04Type\"\x85\x01\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\x14\n\x10manual_as_number\x10\x01\x12\r\n\tno_export\x10\x02\x12\x11\n\rno_advertised\x10\x03\x12\x17\n\x13no_export_subconfed\x10\x04\x12\x0e\n\nllgr_stale\x10\x05\x12\x0b\n\x07no_llgr\x10\x06\x42\x07\n\x05_typeB\x0c\n\n_as_numberB\x0c\n\n_as_custom\"@\n\x0fResultBgpAsPath\x12-\n\x08segments\x18\x01 \x03(\x0b\x32\x1b.otg.ResultBgpAsPathSegment\"\xce\x01\n\x16ResultBgpAsPathSegment\x12\x38\n\x04type\x18\x01 \x01(\x0e\x32%.otg.ResultBgpAsPathSegment.Type.EnumH\x00\x88\x01\x01\x12\x12\n\nas_numbers\x18\x02 \x03(\r\x1a]\n\x04Type\"U\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\n\n\x06\x61s_seq\x10\x01\x12\n\n\x06\x61s_set\x10\x02\x12\x11\n\ras_confed_seq\x10\x03\x12\x11\n\ras_confed_set\x10\x04\x42\x07\n\x05_type\"1\n\x14IsisLspsStateRequest\x12\x19\n\x11isis_router_names\x18\x01 \x03(\t\"d\n\rIsisLspsState\x12\x1d\n\x10isis_router_name\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x1f\n\x04lsps\x18\x02 \x03(\x0b\x32\x11.otg.IsisLspStateB\x13\n\x11_isis_router_name\"\xa6\x03\n\x0cIsisLspState\x12\x13\n\x06lsp_id\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x35\n\x08pdu_type\x18\x02 \x01(\x0e\x32\x1e.otg.IsisLspState.PduType.EnumH\x01\x88\x01\x01\x12\x1f\n\x12remaining_lifetime\x18\x03 \x01(\rH\x02\x88\x01\x01\x12\x1c\n\x0fsequence_number\x18\x04 \x01(\x04H\x03\x88\x01\x01\x12\x17\n\npdu_length\x18\x05 \x01(\rH\x04\x88\x01\x01\x12 \n\x05\x66lags\x18\x06 \x01(\x0b\x32\x11.otg.IsisLspFlags\x12\x14\n\x07is_type\x18\x07 \x01(\rH\x05\x88\x01\x01\x12\x1e\n\x04tlvs\x18\x08 \x01(\x0b\x32\x10.otg.IsisLspTlvs\x1a<\n\x07PduType\"1\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\x0b\n\x07level_1\x10\x01\x12\x0b\n\x07level_2\x10\x02\x42\t\n\x07_lsp_idB\x0b\n\t_pdu_typeB\x15\n\x13_remaining_lifetimeB\x12\n\x10_sequence_numberB\r\n\x0b_pdu_lengthB\n\n\x08_is_type\"\xfc\x03\n\x0bIsisLspTlvs\x12+\n\rhostname_tlvs\x18\x01 \x03(\x0b\x32\x14.otg.IsisLspHostname\x12;\n\x14is_reachability_tlvs\x18\x02 \x03(\x0b\x32\x1d.otg.IsisLspIsReachabilityTlv\x12L\n\x1d\x65xtended_is_reachability_tlvs\x18\x03 \x03(\x0b\x32%.otg.IsisLspExtendedIsReachabilityTlv\x12P\n\x1fipv4_internal_reachability_tlvs\x18\x04 \x03(\x0b\x32\'.otg.IsisLspIpv4InternalReachabilityTlv\x12P\n\x1fipv4_external_reachability_tlvs\x18\x05 \x03(\x0b\x32\'.otg.IsisLspIpv4ExternalReachabilityTlv\x12P\n\x1f\x65xtended_ipv4_reachability_tlvs\x18\x06 \x03(\x0b\x32\'.otg.IsisLspExtendedIpv4ReachabilityTlv\x12?\n\x16ipv6_reachability_tlvs\x18\x07 \x03(\x0b\x32\x1f.otg.IsisLspIpv6ReachabilityTlv\"5\n\x0fIsisLspHostname\x12\x15\n\x08hostname\x18\x01 \x01(\tH\x00\x88\x01\x01\x42\x0b\n\t_hostname\"\xae\x02\n\x0cIsisLspFlags\x12\x1d\n\x10partition_repair\x18\x01 \x01(\x08H\x00\x88\x01\x01\x12\x1b\n\x0e\x61ttached_error\x18\x02 \x01(\x08H\x01\x88\x01\x01\x12\x1d\n\x10\x61ttached_expense\x18\x03 \x01(\x08H\x02\x88\x01\x01\x12\x1b\n\x0e\x61ttached_delay\x18\x04 \x01(\x08H\x03\x88\x01\x01\x12\x1d\n\x10\x61ttached_default\x18\x05 \x01(\x08H\x04\x88\x01\x01\x12\x15\n\x08overload\x18\x06 \x01(\x08H\x05\x88\x01\x01\x42\x13\n\x11_partition_repairB\x11\n\x0f_attached_errorB\x13\n\x11_attached_expenseB\x11\n\x0f_attached_delayB\x13\n\x11_attached_defaultB\x0b\n\t_overload\"C\n\x18IsisLspIsReachabilityTlv\x12\'\n\tneighbors\x18\x01 \x03(\x0b\x32\x14.otg.IsisLspneighbor\"K\n IsisLspExtendedIsReachabilityTlv\x12\'\n\tneighbors\x18\x01 \x03(\x0b\x32\x14.otg.IsisLspneighbor\"7\n\x0fIsisLspneighbor\x12\x16\n\tsystem_id\x18\x01 \x01(\tH\x00\x88\x01\x01\x42\x0c\n\n_system_id\"L\n\"IsisLspIpv4InternalReachabilityTlv\x12&\n\x08prefixes\x18\x01 \x03(\x0b\x32\x14.otg.IsisLspV4Prefix\"L\n\"IsisLspIpv4ExternalReachabilityTlv\x12&\n\x08prefixes\x18\x01 \x03(\x0b\x32\x14.otg.IsisLspV4Prefix\"\xd7\x03\n\x0fIsisLspV4Prefix\x12\x19\n\x0cipv4_address\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x1a\n\rprefix_length\x18\x02 \x01(\rH\x01\x88\x01\x01\x12N\n\x13redistribution_type\x18\x03 \x01(\x0e\x32,.otg.IsisLspV4Prefix.RedistributionType.EnumH\x02\x88\x01\x01\x12\x1b\n\x0e\x64\x65\x66\x61ult_metric\x18\x04 \x01(\rH\x03\x88\x01\x01\x12>\n\x0borigin_type\x18\x05 \x01(\x0e\x32$.otg.IsisLspV4Prefix.OriginType.EnumH\x04\x88\x01\x01\x1a?\n\x12RedistributionType\")\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\x06\n\x02up\x10\x01\x12\x08\n\x04\x64own\x10\x02\x1a\x41\n\nOriginType\"3\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\x0c\n\x08internal\x10\x01\x12\x0c\n\x08\x65xternal\x10\x02\x42\x0f\n\r_ipv4_addressB\x10\n\x0e_prefix_lengthB\x16\n\x14_redistribution_typeB\x11\n\x0f_default_metricB\x0e\n\x0c_origin_type\"T\n\"IsisLspExtendedIpv4ReachabilityTlv\x12.\n\x08prefixes\x18\x01 \x03(\x0b\x32\x1c.otg.IsisLspExtendedV4Prefix\"\xfd\x02\n\x17IsisLspExtendedV4Prefix\x12\x19\n\x0cipv4_address\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x1a\n\rprefix_length\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x13\n\x06metric\x18\x03 \x01(\rH\x02\x88\x01\x01\x12V\n\x13redistribution_type\x18\x04 \x01(\x0e\x32\x34.otg.IsisLspExtendedV4Prefix.RedistributionType.EnumH\x03\x88\x01\x01\x12\x37\n\x11prefix_attributes\x18\x05 \x01(\x0b\x32\x1c.otg.IsisLspPrefixAttributes\x1a?\n\x12RedistributionType\")\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\x06\n\x02up\x10\x01\x12\x08\n\x04\x64own\x10\x02\x42\x0f\n\r_ipv4_addressB\x10\n\x0e_prefix_lengthB\t\n\x07_metricB\x16\n\x14_redistribution_type\"D\n\x1aIsisLspIpv6ReachabilityTlv\x12&\n\x08prefixes\x18\x01 \x03(\x0b\x32\x14.otg.IsisLspV6Prefix\"\x80\x04\n\x0fIsisLspV6Prefix\x12\x19\n\x0cipv6_address\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x1a\n\rprefix_length\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x13\n\x06metric\x18\x03 \x01(\rH\x02\x88\x01\x01\x12N\n\x13redistribution_type\x18\x04 \x01(\x0e\x32,.otg.IsisLspV6Prefix.RedistributionType.EnumH\x03\x88\x01\x01\x12>\n\x0borigin_type\x18\x05 \x01(\x0e\x32$.otg.IsisLspV6Prefix.OriginType.EnumH\x04\x88\x01\x01\x12\x37\n\x11prefix_attributes\x18\x06 \x01(\x0b\x32\x1c.otg.IsisLspPrefixAttributes\x1a?\n\x12RedistributionType\")\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\x06\n\x02up\x10\x01\x12\x08\n\x04\x64own\x10\x02\x1a\x41\n\nOriginType\"3\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\x0c\n\x08internal\x10\x01\x12\x0c\n\x08\x65xternal\x10\x02\x42\x0f\n\r_ipv6_addressB\x10\n\x0e_prefix_lengthB\t\n\x07_metricB\x16\n\x14_redistribution_typeB\x0e\n\x0c_origin_type\"y\n\x17IsisLspPrefixAttributes\x12\x13\n\x06x_flag\x18\x01 \x01(\x08H\x00\x88\x01\x01\x12\x13\n\x06r_flag\x18\x02 \x01(\x08H\x01\x88\x01\x01\x12\x13\n\x06n_flag\x18\x03 \x01(\x08H\x02\x88\x01\x01\x42\t\n\x07_x_flagB\t\n\x07_r_flagB\t\n\x07_n_flag\"L\n\x19LldpNeighborsStateRequest\x12\x12\n\nlldp_names\x18\x01 \x03(\t\x12\x1b\n\x13neighbor_id_filters\x18\x02 \x03(\t\"\x8b\t\n\x12LldpNeighborsState\x12\x16\n\tlldp_name\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x18\n\x0bsystem_name\x18\x02 \x01(\tH\x01\x88\x01\x01\x12\x1f\n\x12system_description\x18\x03 \x01(\tH\x02\x88\x01\x01\x12\x17\n\nchassis_id\x18\x04 \x01(\tH\x03\x88\x01\x01\x12H\n\x0f\x63hassis_id_type\x18\x05 \x01(\x0e\x32*.otg.LldpNeighborsState.ChassisIdType.EnumH\x04\x88\x01\x01\x12\x18\n\x0bneighbor_id\x18\x06 \x01(\tH\x05\x88\x01\x01\x12\x10\n\x03\x61ge\x18\x07 \x01(\rH\x06\x88\x01\x01\x12\x18\n\x0blast_update\x18\x08 \x01(\rH\x07\x88\x01\x01\x12\x10\n\x03ttl\x18\t \x01(\rH\x08\x88\x01\x01\x12\x14\n\x07port_id\x18\n \x01(\tH\t\x88\x01\x01\x12\x42\n\x0cport_id_type\x18\x0b \x01(\x0e\x32\'.otg.LldpNeighborsState.PortIdType.EnumH\n\x88\x01\x01\x12\x1d\n\x10port_description\x18\x0c \x01(\tH\x0b\x88\x01\x01\x12\x1f\n\x12management_address\x18\r \x01(\tH\x0c\x88\x01\x01\x12$\n\x17management_address_type\x18\x0e \x01(\tH\r\x88\x01\x01\x12,\n\x0b\x63ustom_tlvs\x18\x0f \x03(\x0b\x32\x17.otg.LldpCustomTLVState\x12.\n\x0c\x63\x61pabilities\x18\x10 \x03(\x0b\x32\x18.otg.LldpCapabilityState\x1a\xae\x01\n\rChassisIdType\"\x9c\x01\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\x12\n\x0eport_component\x10\x01\x12\x13\n\x0fnetwork_address\x10\x02\x12\x15\n\x11\x63hassis_component\x10\x03\x12\x0f\n\x0bmac_address\x10\x04\x12\x12\n\x0einterface_name\x10\x05\x12\t\n\x05local\x10\x06\x12\x13\n\x0finterface_alias\x10\x07\x1a\xaa\x01\n\nPortIdType\"\x9b\x01\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\x12\n\x0eport_component\x10\x01\x12\x13\n\x0fnetwork_address\x10\x02\x12\x14\n\x10\x61gent_circuit_id\x10\x03\x12\x0f\n\x0bmac_address\x10\x04\x12\x12\n\x0einterface_name\x10\x05\x12\t\n\x05local\x10\x06\x12\x13\n\x0finterface_alias\x10\x07\x42\x0c\n\n_lldp_nameB\x0e\n\x0c_system_nameB\x15\n\x13_system_descriptionB\r\n\x0b_chassis_idB\x12\n\x10_chassis_id_typeB\x0e\n\x0c_neighbor_idB\x06\n\x04_ageB\x0e\n\x0c_last_updateB\x06\n\x04_ttlB\n\n\x08_port_idB\x0f\n\r_port_id_typeB\x13\n\x11_port_descriptionB\x15\n\x13_management_addressB\x1a\n\x18_management_address_type\"\x82\x01\n\x12LldpCustomTLVState\x12\x18\n\x0b\x63ustom_type\x18\x01 \x01(\rH\x00\x88\x01\x01\x12\x10\n\x03oui\x18\x02 \x01(\tH\x01\x88\x01\x01\x12\x18\n\x0boui_subtype\x18\x03 \x01(\tH\x02\x88\x01\x01\x42\x0e\n\x0c_custom_typeB\x06\n\x04_ouiB\x0e\n\x0c_oui_subtype\"\x90\x03\n\x13LldpCapabilityState\x12J\n\x0f\x63\x61pability_name\x18\x01 \x01(\x0e\x32,.otg.LldpCapabilityState.CapabilityName.EnumH\x00\x88\x01\x01\x12\x1f\n\x12\x63\x61pability_enabled\x18\x02 \x01(\x08H\x01\x88\x01\x01\x1a\xe0\x01\n\x0e\x43\x61pabilityName\"\xcd\x01\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\x0e\n\nmac_bridge\x10\x01\x12\x16\n\x12two_port_mac_relay\x10\x02\x12\x0c\n\x08repeater\x10\x03\x12\x17\n\x13\x64ocsis_cable_device\x10\x04\x12\n\n\x06s_vlan\x10\x05\x12\r\n\ttelephone\x10\x06\x12\t\n\x05other\x10\x07\x12\n\n\x06router\x10\x08\x12\n\n\x06\x63_vlan\x10\t\x12\x10\n\x0cstation_only\x10\n\x12\x15\n\x11wlan_access_point\x10\x0b\x42\x12\n\x10_capability_nameB\x15\n\x13_capability_enabled\"1\n\x14RsvpLspsStateRequest\x12\x19\n\x11rsvp_router_names\x18\x01 \x03(\t\"m\n\rRsvpLspsState\x12\x1d\n\x10rsvp_router_name\x18\x01 \x01(\tH\x00\x88\x01\x01\x12(\n\tipv4_lsps\x18\x02 \x03(\x0b\x32\x15.otg.RsvpIPv4LspStateB\x13\n\x11_rsvp_router_name\"\xe2\x01\n\x10RsvpIPv4LspState\x12\x1b\n\x0esource_address\x18\x01 \x01(\tH\x00\x88\x01\x01\x12 \n\x13\x64\x65stination_address\x18\x02 \x01(\tH\x01\x88\x01\x01\x12\x1e\n\x03lsp\x18\x03 \x01(\x0b\x32\x11.otg.RsvpLspState\x12!\n\x04rros\x18\x04 \x03(\x0b\x32\x13.otg.RsvpLspIpv4Rro\x12!\n\x04\x65ros\x18\x05 \x03(\x0b\x32\x13.otg.RsvpLspIpv4EroB\x11\n\x0f_source_addressB\x16\n\x14_destination_address\"\xb4\x04\n\x0cRsvpLspState\x12\x16\n\ttunnel_id\x18\x01 \x01(\rH\x00\x88\x01\x01\x12\x13\n\x06lsp_id\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x19\n\x0csession_name\x18\x03 \x01(\tH\x02\x88\x01\x01\x12\x15\n\x08label_in\x18\x04 \x01(\rH\x03\x88\x01\x01\x12\x16\n\tlabel_out\x18\x05 \x01(\rH\x04\x88\x01\x01\x12\x41\n\x0esession_status\x18\x06 \x01(\x0e\x32$.otg.RsvpLspState.SessionStatus.EnumH\x05\x88\x01\x01\x12\x44\n\x10last_flap_reason\x18\x07 \x01(\x0e\x32%.otg.RsvpLspState.LastFlapReason.EnumH\x06\x88\x01\x01\x12\x14\n\x07up_time\x18\x08 \x01(\x04H\x07\x88\x01\x01\x1a:\n\rSessionStatus\")\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\x06\n\x02up\x10\x01\x12\x08\n\x04\x64own\x10\x02\x1aY\n\x0eLastFlapReason\"G\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\r\n\tresv_tear\x10\x01\x12\r\n\tpath_tear\x10\x02\x12\x10\n\x0cpath_timeout\x10\x03\x42\x0c\n\n_tunnel_idB\t\n\x07_lsp_idB\x0f\n\r_session_nameB\x0b\n\t_label_inB\x0c\n\n_label_outB\x11\n\x0f_session_statusB\x13\n\x11_last_flap_reasonB\n\n\x08_up_time\"b\n\x0eRsvpLspIpv4Rro\x12\x14\n\x07\x61\x64\x64ress\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x1b\n\x0ereported_label\x18\x02 \x01(\rH\x01\x88\x01\x01\x42\n\n\x08_addressB\x11\n\x0f_reported_label\"\xf2\x01\n\x0eRsvpLspIpv4Ero\x12\x13\n\x06prefix\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x10\n\x03\x61sn\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x30\n\x04type\x18\x03 \x01(\x0e\x32\x1d.otg.RsvpLspIpv4Ero.Type.EnumH\x02\x88\x01\x01\x1ak\n\x04Type\"c\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\x08\n\x04ipv4\x10\x01\x12\x08\n\x04ipv6\x10\x02\x12\x07\n\x03\x61sn\x10\x03\x12\x08\n\x04\x61sn4\x10\x04\x12\t\n\x05label\x10\x05\x12\x18\n\x14unnumbered_interface\x10\x06\x42\t\n\x07_prefixB\x06\n\x04_asnB\x07\n\x05_type\"6\n\x0e\x43\x61ptureRequest\x12\x16\n\tport_name\x18\x01 \x01(\tH\x00\x88\x01\x01\x42\x0c\n\n_port_name\"w\n\x1dPatternFlowEthernetDstCounter\x12\x12\n\x05start\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x11\n\x04step\x18\x02 \x01(\tH\x01\x88\x01\x01\x12\x12\n\x05\x63ount\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x08\n\x06_startB\x07\n\x05_stepB\x08\n\x06_count\"}\n\x1fPatternFlowEthernetDstMetricTag\x12\x11\n\x04name\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x13\n\x06offset\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x13\n\x06length\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x07\n\x05_nameB\t\n\x07_offsetB\t\n\x07_length\"\xb6\x03\n\x16PatternFlowEthernetDst\x12<\n\x06\x63hoice\x18\x01 \x01(\x0e\x32\'.otg.PatternFlowEthernetDst.Choice.EnumH\x00\x88\x01\x01\x12\x12\n\x05value\x18\x02 \x01(\tH\x01\x88\x01\x01\x12\x0e\n\x06values\x18\x03 \x03(\t\x12\x11\n\x04\x61uto\x18\x04 \x01(\tH\x02\x88\x01\x01\x12\x35\n\tincrement\x18\x06 \x01(\x0b\x32\".otg.PatternFlowEthernetDstCounter\x12\x35\n\tdecrement\x18\x07 \x01(\x0b\x32\".otg.PatternFlowEthernetDstCounter\x12\x39\n\x0bmetric_tags\x18\x08 \x03(\x0b\x32$.otg.PatternFlowEthernetDstMetricTag\x1a`\n\x06\x43hoice\"V\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\t\n\x05value\x10\x02\x12\n\n\x06values\x10\x03\x12\x08\n\x04\x61uto\x10\x01\x12\r\n\tincrement\x10\x04\x12\r\n\tdecrement\x10\x05\x42\t\n\x07_choiceB\x08\n\x06_valueB\x07\n\x05_auto\"w\n\x1dPatternFlowEthernetSrcCounter\x12\x12\n\x05start\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x11\n\x04step\x18\x02 \x01(\tH\x01\x88\x01\x01\x12\x12\n\x05\x63ount\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x08\n\x06_startB\x07\n\x05_stepB\x08\n\x06_count\"}\n\x1fPatternFlowEthernetSrcMetricTag\x12\x11\n\x04name\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x13\n\x06offset\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x13\n\x06length\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x07\n\x05_nameB\t\n\x07_offsetB\t\n\x07_length\"\x90\x03\n\x16PatternFlowEthernetSrc\x12<\n\x06\x63hoice\x18\x01 \x01(\x0e\x32\'.otg.PatternFlowEthernetSrc.Choice.EnumH\x00\x88\x01\x01\x12\x12\n\x05value\x18\x02 \x01(\tH\x01\x88\x01\x01\x12\x0e\n\x06values\x18\x03 \x03(\t\x12\x35\n\tincrement\x18\x05 \x01(\x0b\x32\".otg.PatternFlowEthernetSrcCounter\x12\x35\n\tdecrement\x18\x06 \x01(\x0b\x32\".otg.PatternFlowEthernetSrcCounter\x12\x39\n\x0bmetric_tags\x18\x07 \x03(\x0b\x32$.otg.PatternFlowEthernetSrcMetricTag\x1aV\n\x06\x43hoice\"L\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\t\n\x05value\x10\x02\x12\n\n\x06values\x10\x03\x12\r\n\tincrement\x10\x04\x12\r\n\tdecrement\x10\x05\x42\t\n\x07_choiceB\x08\n\x06_value\"}\n#PatternFlowEthernetEtherTypeCounter\x12\x12\n\x05start\x18\x01 \x01(\rH\x00\x88\x01\x01\x12\x11\n\x04step\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x12\n\x05\x63ount\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x08\n\x06_startB\x07\n\x05_stepB\x08\n\x06_count\"\x83\x01\n%PatternFlowEthernetEtherTypeMetricTag\x12\x11\n\x04name\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x13\n\x06offset\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x13\n\x06length\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x07\n\x05_nameB\t\n\x07_offsetB\t\n\x07_length\"\xd4\x03\n\x1cPatternFlowEthernetEtherType\x12\x42\n\x06\x63hoice\x18\x01 \x01(\x0e\x32-.otg.PatternFlowEthernetEtherType.Choice.EnumH\x00\x88\x01\x01\x12\x12\n\x05value\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x0e\n\x06values\x18\x03 \x03(\r\x12\x11\n\x04\x61uto\x18\x04 \x01(\rH\x02\x88\x01\x01\x12;\n\tincrement\x18\x06 \x01(\x0b\x32(.otg.PatternFlowEthernetEtherTypeCounter\x12;\n\tdecrement\x18\x07 \x01(\x0b\x32(.otg.PatternFlowEthernetEtherTypeCounter\x12?\n\x0bmetric_tags\x18\x08 \x03(\x0b\x32*.otg.PatternFlowEthernetEtherTypeMetricTag\x1a`\n\x06\x43hoice\"V\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\t\n\x05value\x10\x02\x12\n\n\x06values\x10\x03\x12\x08\n\x04\x61uto\x10\x01\x12\r\n\tincrement\x10\x04\x12\r\n\tdecrement\x10\x05\x42\t\n\x07_choiceB\x08\n\x06_valueB\x07\n\x05_auto\"|\n\"PatternFlowEthernetPfcQueueCounter\x12\x12\n\x05start\x18\x01 \x01(\rH\x00\x88\x01\x01\x12\x11\n\x04step\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x12\n\x05\x63ount\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x08\n\x06_startB\x07\n\x05_stepB\x08\n\x06_count\"\x82\x01\n$PatternFlowEthernetPfcQueueMetricTag\x12\x11\n\x04name\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x13\n\x06offset\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x13\n\x06length\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x07\n\x05_nameB\t\n\x07_offsetB\t\n\x07_length\"\xa9\x03\n\x1bPatternFlowEthernetPfcQueue\x12\x41\n\x06\x63hoice\x18\x01 \x01(\x0e\x32,.otg.PatternFlowEthernetPfcQueue.Choice.EnumH\x00\x88\x01\x01\x12\x12\n\x05value\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x0e\n\x06values\x18\x03 \x03(\r\x12:\n\tincrement\x18\x05 \x01(\x0b\x32\'.otg.PatternFlowEthernetPfcQueueCounter\x12:\n\tdecrement\x18\x06 \x01(\x0b\x32\'.otg.PatternFlowEthernetPfcQueueCounter\x12>\n\x0bmetric_tags\x18\x07 \x03(\x0b\x32).otg.PatternFlowEthernetPfcQueueMetricTag\x1aV\n\x06\x43hoice\"L\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\t\n\x05value\x10\x02\x12\n\n\x06values\x10\x03\x12\r\n\tincrement\x10\x04\x12\r\n\tdecrement\x10\x05\x42\t\n\x07_choiceB\x08\n\x06_value\"x\n\x1ePatternFlowVlanPriorityCounter\x12\x12\n\x05start\x18\x01 \x01(\rH\x00\x88\x01\x01\x12\x11\n\x04step\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x12\n\x05\x63ount\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x08\n\x06_startB\x07\n\x05_stepB\x08\n\x06_count\"~\n PatternFlowVlanPriorityMetricTag\x12\x11\n\x04name\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x13\n\x06offset\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x13\n\x06length\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x07\n\x05_nameB\t\n\x07_offsetB\t\n\x07_length\"\x95\x03\n\x17PatternFlowVlanPriority\x12=\n\x06\x63hoice\x18\x01 \x01(\x0e\x32(.otg.PatternFlowVlanPriority.Choice.EnumH\x00\x88\x01\x01\x12\x12\n\x05value\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x0e\n\x06values\x18\x03 \x03(\r\x12\x36\n\tincrement\x18\x05 \x01(\x0b\x32#.otg.PatternFlowVlanPriorityCounter\x12\x36\n\tdecrement\x18\x06 \x01(\x0b\x32#.otg.PatternFlowVlanPriorityCounter\x12:\n\x0bmetric_tags\x18\x07 \x03(\x0b\x32%.otg.PatternFlowVlanPriorityMetricTag\x1aV\n\x06\x43hoice\"L\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\t\n\x05value\x10\x02\x12\n\n\x06values\x10\x03\x12\r\n\tincrement\x10\x04\x12\r\n\tdecrement\x10\x05\x42\t\n\x07_choiceB\x08\n\x06_value\"s\n\x19PatternFlowVlanCfiCounter\x12\x12\n\x05start\x18\x01 \x01(\rH\x00\x88\x01\x01\x12\x11\n\x04step\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x12\n\x05\x63ount\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x08\n\x06_startB\x07\n\x05_stepB\x08\n\x06_count\"y\n\x1bPatternFlowVlanCfiMetricTag\x12\x11\n\x04name\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x13\n\x06offset\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x13\n\x06length\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x07\n\x05_nameB\t\n\x07_offsetB\t\n\x07_length\"\xfc\x02\n\x12PatternFlowVlanCfi\x12\x38\n\x06\x63hoice\x18\x01 \x01(\x0e\x32#.otg.PatternFlowVlanCfi.Choice.EnumH\x00\x88\x01\x01\x12\x12\n\x05value\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x0e\n\x06values\x18\x03 \x03(\r\x12\x31\n\tincrement\x18\x05 \x01(\x0b\x32\x1e.otg.PatternFlowVlanCfiCounter\x12\x31\n\tdecrement\x18\x06 \x01(\x0b\x32\x1e.otg.PatternFlowVlanCfiCounter\x12\x35\n\x0bmetric_tags\x18\x07 \x03(\x0b\x32 .otg.PatternFlowVlanCfiMetricTag\x1aV\n\x06\x43hoice\"L\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\t\n\x05value\x10\x02\x12\n\n\x06values\x10\x03\x12\r\n\tincrement\x10\x04\x12\r\n\tdecrement\x10\x05\x42\t\n\x07_choiceB\x08\n\x06_value\"r\n\x18PatternFlowVlanIdCounter\x12\x12\n\x05start\x18\x01 \x01(\rH\x00\x88\x01\x01\x12\x11\n\x04step\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x12\n\x05\x63ount\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x08\n\x06_startB\x07\n\x05_stepB\x08\n\x06_count\"x\n\x1aPatternFlowVlanIdMetricTag\x12\x11\n\x04name\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x13\n\x06offset\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x13\n\x06length\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x07\n\x05_nameB\t\n\x07_offsetB\t\n\x07_length\"\xf7\x02\n\x11PatternFlowVlanId\x12\x37\n\x06\x63hoice\x18\x01 \x01(\x0e\x32\".otg.PatternFlowVlanId.Choice.EnumH\x00\x88\x01\x01\x12\x12\n\x05value\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x0e\n\x06values\x18\x03 \x03(\r\x12\x30\n\tincrement\x18\x05 \x01(\x0b\x32\x1d.otg.PatternFlowVlanIdCounter\x12\x30\n\tdecrement\x18\x06 \x01(\x0b\x32\x1d.otg.PatternFlowVlanIdCounter\x12\x34\n\x0bmetric_tags\x18\x07 \x03(\x0b\x32\x1f.otg.PatternFlowVlanIdMetricTag\x1aV\n\x06\x43hoice\"L\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\t\n\x05value\x10\x02\x12\n\n\x06values\x10\x03\x12\r\n\tincrement\x10\x04\x12\r\n\tdecrement\x10\x05\x42\t\n\x07_choiceB\x08\n\x06_value\"t\n\x1aPatternFlowVlanTpidCounter\x12\x12\n\x05start\x18\x01 \x01(\rH\x00\x88\x01\x01\x12\x11\n\x04step\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x12\n\x05\x63ount\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x08\n\x06_startB\x07\n\x05_stepB\x08\n\x06_count\"z\n\x1cPatternFlowVlanTpidMetricTag\x12\x11\n\x04name\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x13\n\x06offset\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x13\n\x06length\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x07\n\x05_nameB\t\n\x07_offsetB\t\n\x07_length\"\x81\x03\n\x13PatternFlowVlanTpid\x12\x39\n\x06\x63hoice\x18\x01 \x01(\x0e\x32$.otg.PatternFlowVlanTpid.Choice.EnumH\x00\x88\x01\x01\x12\x12\n\x05value\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x0e\n\x06values\x18\x03 \x03(\r\x12\x32\n\tincrement\x18\x05 \x01(\x0b\x32\x1f.otg.PatternFlowVlanTpidCounter\x12\x32\n\tdecrement\x18\x06 \x01(\x0b\x32\x1f.otg.PatternFlowVlanTpidCounter\x12\x36\n\x0bmetric_tags\x18\x07 \x03(\x0b\x32!.otg.PatternFlowVlanTpidMetricTag\x1aV\n\x06\x43hoice\"L\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\t\n\x05value\x10\x02\x12\n\n\x06values\x10\x03\x12\r\n\tincrement\x10\x04\x12\r\n\tdecrement\x10\x05\x42\t\n\x07_choiceB\x08\n\x06_value\"v\n\x1cPatternFlowVxlanFlagsCounter\x12\x12\n\x05start\x18\x01 \x01(\rH\x00\x88\x01\x01\x12\x11\n\x04step\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x12\n\x05\x63ount\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x08\n\x06_startB\x07\n\x05_stepB\x08\n\x06_count\"|\n\x1ePatternFlowVxlanFlagsMetricTag\x12\x11\n\x04name\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x13\n\x06offset\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x13\n\x06length\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x07\n\x05_nameB\t\n\x07_offsetB\t\n\x07_length\"\x8b\x03\n\x15PatternFlowVxlanFlags\x12;\n\x06\x63hoice\x18\x01 \x01(\x0e\x32&.otg.PatternFlowVxlanFlags.Choice.EnumH\x00\x88\x01\x01\x12\x12\n\x05value\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x0e\n\x06values\x18\x03 \x03(\r\x12\x34\n\tincrement\x18\x05 \x01(\x0b\x32!.otg.PatternFlowVxlanFlagsCounter\x12\x34\n\tdecrement\x18\x06 \x01(\x0b\x32!.otg.PatternFlowVxlanFlagsCounter\x12\x38\n\x0bmetric_tags\x18\x07 \x03(\x0b\x32#.otg.PatternFlowVxlanFlagsMetricTag\x1aV\n\x06\x43hoice\"L\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\t\n\x05value\x10\x02\x12\n\n\x06values\x10\x03\x12\r\n\tincrement\x10\x04\x12\r\n\tdecrement\x10\x05\x42\t\n\x07_choiceB\x08\n\x06_value\"z\n PatternFlowVxlanReserved0Counter\x12\x12\n\x05start\x18\x01 \x01(\rH\x00\x88\x01\x01\x12\x11\n\x04step\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x12\n\x05\x63ount\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x08\n\x06_startB\x07\n\x05_stepB\x08\n\x06_count\"\x80\x01\n\"PatternFlowVxlanReserved0MetricTag\x12\x11\n\x04name\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x13\n\x06offset\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x13\n\x06length\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x07\n\x05_nameB\t\n\x07_offsetB\t\n\x07_length\"\x9f\x03\n\x19PatternFlowVxlanReserved0\x12?\n\x06\x63hoice\x18\x01 \x01(\x0e\x32*.otg.PatternFlowVxlanReserved0.Choice.EnumH\x00\x88\x01\x01\x12\x12\n\x05value\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x0e\n\x06values\x18\x03 \x03(\r\x12\x38\n\tincrement\x18\x05 \x01(\x0b\x32%.otg.PatternFlowVxlanReserved0Counter\x12\x38\n\tdecrement\x18\x06 \x01(\x0b\x32%.otg.PatternFlowVxlanReserved0Counter\x12<\n\x0bmetric_tags\x18\x07 \x03(\x0b\x32\'.otg.PatternFlowVxlanReserved0MetricTag\x1aV\n\x06\x43hoice\"L\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\t\n\x05value\x10\x02\x12\n\n\x06values\x10\x03\x12\r\n\tincrement\x10\x04\x12\r\n\tdecrement\x10\x05\x42\t\n\x07_choiceB\x08\n\x06_value\"t\n\x1aPatternFlowVxlanVniCounter\x12\x12\n\x05start\x18\x01 \x01(\rH\x00\x88\x01\x01\x12\x11\n\x04step\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x12\n\x05\x63ount\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x08\n\x06_startB\x07\n\x05_stepB\x08\n\x06_count\"z\n\x1cPatternFlowVxlanVniMetricTag\x12\x11\n\x04name\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x13\n\x06offset\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x13\n\x06length\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x07\n\x05_nameB\t\n\x07_offsetB\t\n\x07_length\"\xa7\x03\n\x13PatternFlowVxlanVni\x12\x39\n\x06\x63hoice\x18\x01 \x01(\x0e\x32$.otg.PatternFlowVxlanVni.Choice.EnumH\x00\x88\x01\x01\x12\x12\n\x05value\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x0e\n\x06values\x18\x03 \x03(\r\x12\x11\n\x04\x61uto\x18\x04 \x01(\rH\x02\x88\x01\x01\x12\x32\n\tincrement\x18\x06 \x01(\x0b\x32\x1f.otg.PatternFlowVxlanVniCounter\x12\x32\n\tdecrement\x18\x07 \x01(\x0b\x32\x1f.otg.PatternFlowVxlanVniCounter\x12\x36\n\x0bmetric_tags\x18\x08 \x03(\x0b\x32!.otg.PatternFlowVxlanVniMetricTag\x1a`\n\x06\x43hoice\"V\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\t\n\x05value\x10\x02\x12\n\n\x06values\x10\x03\x12\x08\n\x04\x61uto\x10\x01\x12\r\n\tincrement\x10\x04\x12\r\n\tdecrement\x10\x05\x42\t\n\x07_choiceB\x08\n\x06_valueB\x07\n\x05_auto\"z\n PatternFlowVxlanReserved1Counter\x12\x12\n\x05start\x18\x01 \x01(\rH\x00\x88\x01\x01\x12\x11\n\x04step\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x12\n\x05\x63ount\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x08\n\x06_startB\x07\n\x05_stepB\x08\n\x06_count\"\x80\x01\n\"PatternFlowVxlanReserved1MetricTag\x12\x11\n\x04name\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x13\n\x06offset\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x13\n\x06length\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x07\n\x05_nameB\t\n\x07_offsetB\t\n\x07_length\"\x9f\x03\n\x19PatternFlowVxlanReserved1\x12?\n\x06\x63hoice\x18\x01 \x01(\x0e\x32*.otg.PatternFlowVxlanReserved1.Choice.EnumH\x00\x88\x01\x01\x12\x12\n\x05value\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x0e\n\x06values\x18\x03 \x03(\r\x12\x38\n\tincrement\x18\x05 \x01(\x0b\x32%.otg.PatternFlowVxlanReserved1Counter\x12\x38\n\tdecrement\x18\x06 \x01(\x0b\x32%.otg.PatternFlowVxlanReserved1Counter\x12<\n\x0bmetric_tags\x18\x07 \x03(\x0b\x32\'.otg.PatternFlowVxlanReserved1MetricTag\x1aV\n\x06\x43hoice\"L\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\t\n\x05value\x10\x02\x12\n\n\x06values\x10\x03\x12\r\n\tincrement\x10\x04\x12\r\n\tdecrement\x10\x05\x42\t\n\x07_choiceB\x08\n\x06_value\"w\n\x1dPatternFlowIpv4VersionCounter\x12\x12\n\x05start\x18\x01 \x01(\rH\x00\x88\x01\x01\x12\x11\n\x04step\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x12\n\x05\x63ount\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x08\n\x06_startB\x07\n\x05_stepB\x08\n\x06_count\"}\n\x1fPatternFlowIpv4VersionMetricTag\x12\x11\n\x04name\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x13\n\x06offset\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x13\n\x06length\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x07\n\x05_nameB\t\n\x07_offsetB\t\n\x07_length\"\x90\x03\n\x16PatternFlowIpv4Version\x12<\n\x06\x63hoice\x18\x01 \x01(\x0e\x32\'.otg.PatternFlowIpv4Version.Choice.EnumH\x00\x88\x01\x01\x12\x12\n\x05value\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x0e\n\x06values\x18\x03 \x03(\r\x12\x35\n\tincrement\x18\x05 \x01(\x0b\x32\".otg.PatternFlowIpv4VersionCounter\x12\x35\n\tdecrement\x18\x06 \x01(\x0b\x32\".otg.PatternFlowIpv4VersionCounter\x12\x39\n\x0bmetric_tags\x18\x07 \x03(\x0b\x32$.otg.PatternFlowIpv4VersionMetricTag\x1aV\n\x06\x43hoice\"L\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\t\n\x05value\x10\x02\x12\n\n\x06values\x10\x03\x12\r\n\tincrement\x10\x04\x12\r\n\tdecrement\x10\x05\x42\t\n\x07_choiceB\x08\n\x06_value\"|\n\"PatternFlowIpv4HeaderLengthCounter\x12\x12\n\x05start\x18\x01 \x01(\rH\x00\x88\x01\x01\x12\x11\n\x04step\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x12\n\x05\x63ount\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x08\n\x06_startB\x07\n\x05_stepB\x08\n\x06_count\"\x82\x01\n$PatternFlowIpv4HeaderLengthMetricTag\x12\x11\n\x04name\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x13\n\x06offset\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x13\n\x06length\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x07\n\x05_nameB\t\n\x07_offsetB\t\n\x07_length\"\xcf\x03\n\x1bPatternFlowIpv4HeaderLength\x12\x41\n\x06\x63hoice\x18\x01 \x01(\x0e\x32,.otg.PatternFlowIpv4HeaderLength.Choice.EnumH\x00\x88\x01\x01\x12\x12\n\x05value\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x0e\n\x06values\x18\x03 \x03(\r\x12\x11\n\x04\x61uto\x18\x04 \x01(\rH\x02\x88\x01\x01\x12:\n\tincrement\x18\x06 \x01(\x0b\x32\'.otg.PatternFlowIpv4HeaderLengthCounter\x12:\n\tdecrement\x18\x07 \x01(\x0b\x32\'.otg.PatternFlowIpv4HeaderLengthCounter\x12>\n\x0bmetric_tags\x18\x08 \x03(\x0b\x32).otg.PatternFlowIpv4HeaderLengthMetricTag\x1a`\n\x06\x43hoice\"V\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\t\n\x05value\x10\x02\x12\n\n\x06values\x10\x03\x12\x08\n\x04\x61uto\x10\x01\x12\r\n\tincrement\x10\x04\x12\r\n\tdecrement\x10\x05\x42\t\n\x07_choiceB\x08\n\x06_valueB\x07\n\x05_auto\"{\n!PatternFlowIpv4TotalLengthCounter\x12\x12\n\x05start\x18\x01 \x01(\rH\x00\x88\x01\x01\x12\x11\n\x04step\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x12\n\x05\x63ount\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x08\n\x06_startB\x07\n\x05_stepB\x08\n\x06_count\"\x81\x01\n#PatternFlowIpv4TotalLengthMetricTag\x12\x11\n\x04name\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x13\n\x06offset\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x13\n\x06length\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x07\n\x05_nameB\t\n\x07_offsetB\t\n\x07_length\"\xca\x03\n\x1aPatternFlowIpv4TotalLength\x12@\n\x06\x63hoice\x18\x01 \x01(\x0e\x32+.otg.PatternFlowIpv4TotalLength.Choice.EnumH\x00\x88\x01\x01\x12\x12\n\x05value\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x0e\n\x06values\x18\x03 \x03(\r\x12\x11\n\x04\x61uto\x18\x04 \x01(\rH\x02\x88\x01\x01\x12\x39\n\tincrement\x18\x06 \x01(\x0b\x32&.otg.PatternFlowIpv4TotalLengthCounter\x12\x39\n\tdecrement\x18\x07 \x01(\x0b\x32&.otg.PatternFlowIpv4TotalLengthCounter\x12=\n\x0bmetric_tags\x18\x08 \x03(\x0b\x32(.otg.PatternFlowIpv4TotalLengthMetricTag\x1a`\n\x06\x43hoice\"V\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\t\n\x05value\x10\x02\x12\n\n\x06values\x10\x03\x12\x08\n\x04\x61uto\x10\x01\x12\r\n\tincrement\x10\x04\x12\r\n\tdecrement\x10\x05\x42\t\n\x07_choiceB\x08\n\x06_valueB\x07\n\x05_auto\"~\n$PatternFlowIpv4IdentificationCounter\x12\x12\n\x05start\x18\x01 \x01(\rH\x00\x88\x01\x01\x12\x11\n\x04step\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x12\n\x05\x63ount\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x08\n\x06_startB\x07\n\x05_stepB\x08\n\x06_count\"\x84\x01\n&PatternFlowIpv4IdentificationMetricTag\x12\x11\n\x04name\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x13\n\x06offset\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x13\n\x06length\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x07\n\x05_nameB\t\n\x07_offsetB\t\n\x07_length\"\xb3\x03\n\x1dPatternFlowIpv4Identification\x12\x43\n\x06\x63hoice\x18\x01 \x01(\x0e\x32..otg.PatternFlowIpv4Identification.Choice.EnumH\x00\x88\x01\x01\x12\x12\n\x05value\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x0e\n\x06values\x18\x03 \x03(\r\x12<\n\tincrement\x18\x05 \x01(\x0b\x32).otg.PatternFlowIpv4IdentificationCounter\x12<\n\tdecrement\x18\x06 \x01(\x0b\x32).otg.PatternFlowIpv4IdentificationCounter\x12@\n\x0bmetric_tags\x18\x07 \x03(\x0b\x32+.otg.PatternFlowIpv4IdentificationMetricTag\x1aV\n\x06\x43hoice\"L\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\t\n\x05value\x10\x02\x12\n\n\x06values\x10\x03\x12\r\n\tincrement\x10\x04\x12\r\n\tdecrement\x10\x05\x42\t\n\x07_choiceB\x08\n\x06_value\"x\n\x1ePatternFlowIpv4ReservedCounter\x12\x12\n\x05start\x18\x01 \x01(\rH\x00\x88\x01\x01\x12\x11\n\x04step\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x12\n\x05\x63ount\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x08\n\x06_startB\x07\n\x05_stepB\x08\n\x06_count\"~\n PatternFlowIpv4ReservedMetricTag\x12\x11\n\x04name\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x13\n\x06offset\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x13\n\x06length\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x07\n\x05_nameB\t\n\x07_offsetB\t\n\x07_length\"\x95\x03\n\x17PatternFlowIpv4Reserved\x12=\n\x06\x63hoice\x18\x01 \x01(\x0e\x32(.otg.PatternFlowIpv4Reserved.Choice.EnumH\x00\x88\x01\x01\x12\x12\n\x05value\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x0e\n\x06values\x18\x03 \x03(\r\x12\x36\n\tincrement\x18\x05 \x01(\x0b\x32#.otg.PatternFlowIpv4ReservedCounter\x12\x36\n\tdecrement\x18\x06 \x01(\x0b\x32#.otg.PatternFlowIpv4ReservedCounter\x12:\n\x0bmetric_tags\x18\x07 \x03(\x0b\x32%.otg.PatternFlowIpv4ReservedMetricTag\x1aV\n\x06\x43hoice\"L\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\t\n\x05value\x10\x02\x12\n\n\x06values\x10\x03\x12\r\n\tincrement\x10\x04\x12\r\n\tdecrement\x10\x05\x42\t\n\x07_choiceB\x08\n\x06_value\"|\n\"PatternFlowIpv4DontFragmentCounter\x12\x12\n\x05start\x18\x01 \x01(\rH\x00\x88\x01\x01\x12\x11\n\x04step\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x12\n\x05\x63ount\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x08\n\x06_startB\x07\n\x05_stepB\x08\n\x06_count\"\x82\x01\n$PatternFlowIpv4DontFragmentMetricTag\x12\x11\n\x04name\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x13\n\x06offset\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x13\n\x06length\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x07\n\x05_nameB\t\n\x07_offsetB\t\n\x07_length\"\xa9\x03\n\x1bPatternFlowIpv4DontFragment\x12\x41\n\x06\x63hoice\x18\x01 \x01(\x0e\x32,.otg.PatternFlowIpv4DontFragment.Choice.EnumH\x00\x88\x01\x01\x12\x12\n\x05value\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x0e\n\x06values\x18\x03 \x03(\r\x12:\n\tincrement\x18\x05 \x01(\x0b\x32\'.otg.PatternFlowIpv4DontFragmentCounter\x12:\n\tdecrement\x18\x06 \x01(\x0b\x32\'.otg.PatternFlowIpv4DontFragmentCounter\x12>\n\x0bmetric_tags\x18\x07 \x03(\x0b\x32).otg.PatternFlowIpv4DontFragmentMetricTag\x1aV\n\x06\x43hoice\"L\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\t\n\x05value\x10\x02\x12\n\n\x06values\x10\x03\x12\r\n\tincrement\x10\x04\x12\r\n\tdecrement\x10\x05\x42\t\n\x07_choiceB\x08\n\x06_value\"}\n#PatternFlowIpv4MoreFragmentsCounter\x12\x12\n\x05start\x18\x01 \x01(\rH\x00\x88\x01\x01\x12\x11\n\x04step\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x12\n\x05\x63ount\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x08\n\x06_startB\x07\n\x05_stepB\x08\n\x06_count\"\x83\x01\n%PatternFlowIpv4MoreFragmentsMetricTag\x12\x11\n\x04name\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x13\n\x06offset\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x13\n\x06length\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x07\n\x05_nameB\t\n\x07_offsetB\t\n\x07_length\"\xae\x03\n\x1cPatternFlowIpv4MoreFragments\x12\x42\n\x06\x63hoice\x18\x01 \x01(\x0e\x32-.otg.PatternFlowIpv4MoreFragments.Choice.EnumH\x00\x88\x01\x01\x12\x12\n\x05value\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x0e\n\x06values\x18\x03 \x03(\r\x12;\n\tincrement\x18\x05 \x01(\x0b\x32(.otg.PatternFlowIpv4MoreFragmentsCounter\x12;\n\tdecrement\x18\x06 \x01(\x0b\x32(.otg.PatternFlowIpv4MoreFragmentsCounter\x12?\n\x0bmetric_tags\x18\x07 \x03(\x0b\x32*.otg.PatternFlowIpv4MoreFragmentsMetricTag\x1aV\n\x06\x43hoice\"L\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\t\n\x05value\x10\x02\x12\n\n\x06values\x10\x03\x12\r\n\tincrement\x10\x04\x12\r\n\tdecrement\x10\x05\x42\t\n\x07_choiceB\x08\n\x06_value\"~\n$PatternFlowIpv4FragmentOffsetCounter\x12\x12\n\x05start\x18\x01 \x01(\rH\x00\x88\x01\x01\x12\x11\n\x04step\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x12\n\x05\x63ount\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x08\n\x06_startB\x07\n\x05_stepB\x08\n\x06_count\"\x84\x01\n&PatternFlowIpv4FragmentOffsetMetricTag\x12\x11\n\x04name\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x13\n\x06offset\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x13\n\x06length\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x07\n\x05_nameB\t\n\x07_offsetB\t\n\x07_length\"\xb3\x03\n\x1dPatternFlowIpv4FragmentOffset\x12\x43\n\x06\x63hoice\x18\x01 \x01(\x0e\x32..otg.PatternFlowIpv4FragmentOffset.Choice.EnumH\x00\x88\x01\x01\x12\x12\n\x05value\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x0e\n\x06values\x18\x03 \x03(\r\x12<\n\tincrement\x18\x05 \x01(\x0b\x32).otg.PatternFlowIpv4FragmentOffsetCounter\x12<\n\tdecrement\x18\x06 \x01(\x0b\x32).otg.PatternFlowIpv4FragmentOffsetCounter\x12@\n\x0bmetric_tags\x18\x07 \x03(\x0b\x32+.otg.PatternFlowIpv4FragmentOffsetMetricTag\x1aV\n\x06\x43hoice\"L\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\t\n\x05value\x10\x02\x12\n\n\x06values\x10\x03\x12\r\n\tincrement\x10\x04\x12\r\n\tdecrement\x10\x05\x42\t\n\x07_choiceB\x08\n\x06_value\"z\n PatternFlowIpv4TimeToLiveCounter\x12\x12\n\x05start\x18\x01 \x01(\rH\x00\x88\x01\x01\x12\x11\n\x04step\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x12\n\x05\x63ount\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x08\n\x06_startB\x07\n\x05_stepB\x08\n\x06_count\"\x80\x01\n\"PatternFlowIpv4TimeToLiveMetricTag\x12\x11\n\x04name\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x13\n\x06offset\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x13\n\x06length\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x07\n\x05_nameB\t\n\x07_offsetB\t\n\x07_length\"\x9f\x03\n\x19PatternFlowIpv4TimeToLive\x12?\n\x06\x63hoice\x18\x01 \x01(\x0e\x32*.otg.PatternFlowIpv4TimeToLive.Choice.EnumH\x00\x88\x01\x01\x12\x12\n\x05value\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x0e\n\x06values\x18\x03 \x03(\r\x12\x38\n\tincrement\x18\x05 \x01(\x0b\x32%.otg.PatternFlowIpv4TimeToLiveCounter\x12\x38\n\tdecrement\x18\x06 \x01(\x0b\x32%.otg.PatternFlowIpv4TimeToLiveCounter\x12<\n\x0bmetric_tags\x18\x07 \x03(\x0b\x32\'.otg.PatternFlowIpv4TimeToLiveMetricTag\x1aV\n\x06\x43hoice\"L\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\t\n\x05value\x10\x02\x12\n\n\x06values\x10\x03\x12\r\n\tincrement\x10\x04\x12\r\n\tdecrement\x10\x05\x42\t\n\x07_choiceB\x08\n\x06_value\"x\n\x1ePatternFlowIpv4ProtocolCounter\x12\x12\n\x05start\x18\x01 \x01(\rH\x00\x88\x01\x01\x12\x11\n\x04step\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x12\n\x05\x63ount\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x08\n\x06_startB\x07\n\x05_stepB\x08\n\x06_count\"~\n PatternFlowIpv4ProtocolMetricTag\x12\x11\n\x04name\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x13\n\x06offset\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x13\n\x06length\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x07\n\x05_nameB\t\n\x07_offsetB\t\n\x07_length\"\xbb\x03\n\x17PatternFlowIpv4Protocol\x12=\n\x06\x63hoice\x18\x01 \x01(\x0e\x32(.otg.PatternFlowIpv4Protocol.Choice.EnumH\x00\x88\x01\x01\x12\x12\n\x05value\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x0e\n\x06values\x18\x03 \x03(\r\x12\x11\n\x04\x61uto\x18\x04 \x01(\rH\x02\x88\x01\x01\x12\x36\n\tincrement\x18\x06 \x01(\x0b\x32#.otg.PatternFlowIpv4ProtocolCounter\x12\x36\n\tdecrement\x18\x07 \x01(\x0b\x32#.otg.PatternFlowIpv4ProtocolCounter\x12:\n\x0bmetric_tags\x18\x08 \x03(\x0b\x32%.otg.PatternFlowIpv4ProtocolMetricTag\x1a`\n\x06\x43hoice\"V\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\t\n\x05value\x10\x02\x12\n\n\x06values\x10\x03\x12\x08\n\x04\x61uto\x10\x01\x12\r\n\tincrement\x10\x04\x12\r\n\tdecrement\x10\x05\x42\t\n\x07_choiceB\x08\n\x06_valueB\x07\n\x05_auto\"\xdf\x02\n\x1dPatternFlowIpv4HeaderChecksum\x12\x43\n\x06\x63hoice\x18\x01 \x01(\x0e\x32..otg.PatternFlowIpv4HeaderChecksum.Choice.EnumH\x00\x88\x01\x01\x12I\n\tgenerated\x18\x02 \x01(\x0e\x32\x31.otg.PatternFlowIpv4HeaderChecksum.Generated.EnumH\x01\x88\x01\x01\x12\x13\n\x06\x63ustom\x18\x03 \x01(\rH\x02\x88\x01\x01\x1a<\n\x06\x43hoice\"2\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\r\n\tgenerated\x10\x01\x12\n\n\x06\x63ustom\x10\x02\x1a\x37\n\tGenerated\"*\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\x08\n\x04good\x10\x01\x12\x07\n\x03\x62\x61\x64\x10\x02\x42\t\n\x07_choiceB\x0c\n\n_generatedB\t\n\x07_custom\"s\n\x19PatternFlowIpv4SrcCounter\x12\x12\n\x05start\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x11\n\x04step\x18\x02 \x01(\tH\x01\x88\x01\x01\x12\x12\n\x05\x63ount\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x08\n\x06_startB\x07\n\x05_stepB\x08\n\x06_count\"y\n\x1bPatternFlowIpv4SrcMetricTag\x12\x11\n\x04name\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x13\n\x06offset\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x13\n\x06length\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x07\n\x05_nameB\t\n\x07_offsetB\t\n\x07_length\"\xfc\x02\n\x12PatternFlowIpv4Src\x12\x38\n\x06\x63hoice\x18\x01 \x01(\x0e\x32#.otg.PatternFlowIpv4Src.Choice.EnumH\x00\x88\x01\x01\x12\x12\n\x05value\x18\x02 \x01(\tH\x01\x88\x01\x01\x12\x0e\n\x06values\x18\x03 \x03(\t\x12\x31\n\tincrement\x18\x05 \x01(\x0b\x32\x1e.otg.PatternFlowIpv4SrcCounter\x12\x31\n\tdecrement\x18\x06 \x01(\x0b\x32\x1e.otg.PatternFlowIpv4SrcCounter\x12\x35\n\x0bmetric_tags\x18\x07 \x03(\x0b\x32 .otg.PatternFlowIpv4SrcMetricTag\x1aV\n\x06\x43hoice\"L\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\t\n\x05value\x10\x02\x12\n\n\x06values\x10\x03\x12\r\n\tincrement\x10\x04\x12\r\n\tdecrement\x10\x05\x42\t\n\x07_choiceB\x08\n\x06_value\"s\n\x19PatternFlowIpv4DstCounter\x12\x12\n\x05start\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x11\n\x04step\x18\x02 \x01(\tH\x01\x88\x01\x01\x12\x12\n\x05\x63ount\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x08\n\x06_startB\x07\n\x05_stepB\x08\n\x06_count\"y\n\x1bPatternFlowIpv4DstMetricTag\x12\x11\n\x04name\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x13\n\x06offset\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x13\n\x06length\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x07\n\x05_nameB\t\n\x07_offsetB\t\n\x07_length\"\xfc\x02\n\x12PatternFlowIpv4Dst\x12\x38\n\x06\x63hoice\x18\x01 \x01(\x0e\x32#.otg.PatternFlowIpv4Dst.Choice.EnumH\x00\x88\x01\x01\x12\x12\n\x05value\x18\x02 \x01(\tH\x01\x88\x01\x01\x12\x0e\n\x06values\x18\x03 \x03(\t\x12\x31\n\tincrement\x18\x05 \x01(\x0b\x32\x1e.otg.PatternFlowIpv4DstCounter\x12\x31\n\tdecrement\x18\x06 \x01(\x0b\x32\x1e.otg.PatternFlowIpv4DstCounter\x12\x35\n\x0bmetric_tags\x18\x07 \x03(\x0b\x32 .otg.PatternFlowIpv4DstMetricTag\x1aV\n\x06\x43hoice\"L\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\t\n\x05value\x10\x02\x12\n\n\x06values\x10\x03\x12\r\n\tincrement\x10\x04\x12\r\n\tdecrement\x10\x05\x42\t\n\x07_choiceB\x08\n\x06_value\"{\n!PatternFlowIpv4PriorityRawCounter\x12\x12\n\x05start\x18\x01 \x01(\rH\x00\x88\x01\x01\x12\x11\n\x04step\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x12\n\x05\x63ount\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x08\n\x06_startB\x07\n\x05_stepB\x08\n\x06_count\"\x81\x01\n#PatternFlowIpv4PriorityRawMetricTag\x12\x11\n\x04name\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x13\n\x06offset\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x13\n\x06length\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x07\n\x05_nameB\t\n\x07_offsetB\t\n\x07_length\"\xa4\x03\n\x1aPatternFlowIpv4PriorityRaw\x12@\n\x06\x63hoice\x18\x01 \x01(\x0e\x32+.otg.PatternFlowIpv4PriorityRaw.Choice.EnumH\x00\x88\x01\x01\x12\x12\n\x05value\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x0e\n\x06values\x18\x03 \x03(\r\x12\x39\n\tincrement\x18\x05 \x01(\x0b\x32&.otg.PatternFlowIpv4PriorityRawCounter\x12\x39\n\tdecrement\x18\x06 \x01(\x0b\x32&.otg.PatternFlowIpv4PriorityRawCounter\x12=\n\x0bmetric_tags\x18\x07 \x03(\x0b\x32(.otg.PatternFlowIpv4PriorityRawMetricTag\x1aV\n\x06\x43hoice\"L\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\t\n\x05value\x10\x02\x12\n\n\x06values\x10\x03\x12\r\n\tincrement\x10\x04\x12\r\n\tdecrement\x10\x05\x42\t\n\x07_choiceB\x08\n\x06_value\"w\n\x1dPatternFlowIpv4DscpPhbCounter\x12\x12\n\x05start\x18\x01 \x01(\rH\x00\x88\x01\x01\x12\x11\n\x04step\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x12\n\x05\x63ount\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x08\n\x06_startB\x07\n\x05_stepB\x08\n\x06_count\"}\n\x1fPatternFlowIpv4DscpPhbMetricTag\x12\x11\n\x04name\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x13\n\x06offset\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x13\n\x06length\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x07\n\x05_nameB\t\n\x07_offsetB\t\n\x07_length\"\x90\x03\n\x16PatternFlowIpv4DscpPhb\x12<\n\x06\x63hoice\x18\x01 \x01(\x0e\x32\'.otg.PatternFlowIpv4DscpPhb.Choice.EnumH\x00\x88\x01\x01\x12\x12\n\x05value\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x0e\n\x06values\x18\x03 \x03(\r\x12\x35\n\tincrement\x18\x05 \x01(\x0b\x32\".otg.PatternFlowIpv4DscpPhbCounter\x12\x35\n\tdecrement\x18\x06 \x01(\x0b\x32\".otg.PatternFlowIpv4DscpPhbCounter\x12\x39\n\x0bmetric_tags\x18\x07 \x03(\x0b\x32$.otg.PatternFlowIpv4DscpPhbMetricTag\x1aV\n\x06\x43hoice\"L\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\t\n\x05value\x10\x02\x12\n\n\x06values\x10\x03\x12\r\n\tincrement\x10\x04\x12\r\n\tdecrement\x10\x05\x42\t\n\x07_choiceB\x08\n\x06_value\"w\n\x1dPatternFlowIpv4DscpEcnCounter\x12\x12\n\x05start\x18\x01 \x01(\rH\x00\x88\x01\x01\x12\x11\n\x04step\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x12\n\x05\x63ount\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x08\n\x06_startB\x07\n\x05_stepB\x08\n\x06_count\"}\n\x1fPatternFlowIpv4DscpEcnMetricTag\x12\x11\n\x04name\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x13\n\x06offset\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x13\n\x06length\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x07\n\x05_nameB\t\n\x07_offsetB\t\n\x07_length\"\x90\x03\n\x16PatternFlowIpv4DscpEcn\x12<\n\x06\x63hoice\x18\x01 \x01(\x0e\x32\'.otg.PatternFlowIpv4DscpEcn.Choice.EnumH\x00\x88\x01\x01\x12\x12\n\x05value\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x0e\n\x06values\x18\x03 \x03(\r\x12\x35\n\tincrement\x18\x05 \x01(\x0b\x32\".otg.PatternFlowIpv4DscpEcnCounter\x12\x35\n\tdecrement\x18\x06 \x01(\x0b\x32\".otg.PatternFlowIpv4DscpEcnCounter\x12\x39\n\x0bmetric_tags\x18\x07 \x03(\x0b\x32$.otg.PatternFlowIpv4DscpEcnMetricTag\x1aV\n\x06\x43hoice\"L\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\t\n\x05value\x10\x02\x12\n\n\x06values\x10\x03\x12\r\n\tincrement\x10\x04\x12\r\n\tdecrement\x10\x05\x42\t\n\x07_choiceB\x08\n\x06_value\"}\n#PatternFlowIpv4TosPrecedenceCounter\x12\x12\n\x05start\x18\x01 \x01(\rH\x00\x88\x01\x01\x12\x11\n\x04step\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x12\n\x05\x63ount\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x08\n\x06_startB\x07\n\x05_stepB\x08\n\x06_count\"\x83\x01\n%PatternFlowIpv4TosPrecedenceMetricTag\x12\x11\n\x04name\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x13\n\x06offset\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x13\n\x06length\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x07\n\x05_nameB\t\n\x07_offsetB\t\n\x07_length\"\xae\x03\n\x1cPatternFlowIpv4TosPrecedence\x12\x42\n\x06\x63hoice\x18\x01 \x01(\x0e\x32-.otg.PatternFlowIpv4TosPrecedence.Choice.EnumH\x00\x88\x01\x01\x12\x12\n\x05value\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x0e\n\x06values\x18\x03 \x03(\r\x12;\n\tincrement\x18\x05 \x01(\x0b\x32(.otg.PatternFlowIpv4TosPrecedenceCounter\x12;\n\tdecrement\x18\x06 \x01(\x0b\x32(.otg.PatternFlowIpv4TosPrecedenceCounter\x12?\n\x0bmetric_tags\x18\x07 \x03(\x0b\x32*.otg.PatternFlowIpv4TosPrecedenceMetricTag\x1aV\n\x06\x43hoice\"L\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\t\n\x05value\x10\x02\x12\n\n\x06values\x10\x03\x12\r\n\tincrement\x10\x04\x12\r\n\tdecrement\x10\x05\x42\t\n\x07_choiceB\x08\n\x06_value\"x\n\x1ePatternFlowIpv4TosDelayCounter\x12\x12\n\x05start\x18\x01 \x01(\rH\x00\x88\x01\x01\x12\x11\n\x04step\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x12\n\x05\x63ount\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x08\n\x06_startB\x07\n\x05_stepB\x08\n\x06_count\"~\n PatternFlowIpv4TosDelayMetricTag\x12\x11\n\x04name\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x13\n\x06offset\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x13\n\x06length\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x07\n\x05_nameB\t\n\x07_offsetB\t\n\x07_length\"\x95\x03\n\x17PatternFlowIpv4TosDelay\x12=\n\x06\x63hoice\x18\x01 \x01(\x0e\x32(.otg.PatternFlowIpv4TosDelay.Choice.EnumH\x00\x88\x01\x01\x12\x12\n\x05value\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x0e\n\x06values\x18\x03 \x03(\r\x12\x36\n\tincrement\x18\x05 \x01(\x0b\x32#.otg.PatternFlowIpv4TosDelayCounter\x12\x36\n\tdecrement\x18\x06 \x01(\x0b\x32#.otg.PatternFlowIpv4TosDelayCounter\x12:\n\x0bmetric_tags\x18\x07 \x03(\x0b\x32%.otg.PatternFlowIpv4TosDelayMetricTag\x1aV\n\x06\x43hoice\"L\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\t\n\x05value\x10\x02\x12\n\n\x06values\x10\x03\x12\r\n\tincrement\x10\x04\x12\r\n\tdecrement\x10\x05\x42\t\n\x07_choiceB\x08\n\x06_value\"}\n#PatternFlowIpv4TosThroughputCounter\x12\x12\n\x05start\x18\x01 \x01(\rH\x00\x88\x01\x01\x12\x11\n\x04step\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x12\n\x05\x63ount\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x08\n\x06_startB\x07\n\x05_stepB\x08\n\x06_count\"\x83\x01\n%PatternFlowIpv4TosThroughputMetricTag\x12\x11\n\x04name\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x13\n\x06offset\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x13\n\x06length\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x07\n\x05_nameB\t\n\x07_offsetB\t\n\x07_length\"\xae\x03\n\x1cPatternFlowIpv4TosThroughput\x12\x42\n\x06\x63hoice\x18\x01 \x01(\x0e\x32-.otg.PatternFlowIpv4TosThroughput.Choice.EnumH\x00\x88\x01\x01\x12\x12\n\x05value\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x0e\n\x06values\x18\x03 \x03(\r\x12;\n\tincrement\x18\x05 \x01(\x0b\x32(.otg.PatternFlowIpv4TosThroughputCounter\x12;\n\tdecrement\x18\x06 \x01(\x0b\x32(.otg.PatternFlowIpv4TosThroughputCounter\x12?\n\x0bmetric_tags\x18\x07 \x03(\x0b\x32*.otg.PatternFlowIpv4TosThroughputMetricTag\x1aV\n\x06\x43hoice\"L\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\t\n\x05value\x10\x02\x12\n\n\x06values\x10\x03\x12\r\n\tincrement\x10\x04\x12\r\n\tdecrement\x10\x05\x42\t\n\x07_choiceB\x08\n\x06_value\"~\n$PatternFlowIpv4TosReliabilityCounter\x12\x12\n\x05start\x18\x01 \x01(\rH\x00\x88\x01\x01\x12\x11\n\x04step\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x12\n\x05\x63ount\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x08\n\x06_startB\x07\n\x05_stepB\x08\n\x06_count\"\x84\x01\n&PatternFlowIpv4TosReliabilityMetricTag\x12\x11\n\x04name\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x13\n\x06offset\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x13\n\x06length\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x07\n\x05_nameB\t\n\x07_offsetB\t\n\x07_length\"\xb3\x03\n\x1dPatternFlowIpv4TosReliability\x12\x43\n\x06\x63hoice\x18\x01 \x01(\x0e\x32..otg.PatternFlowIpv4TosReliability.Choice.EnumH\x00\x88\x01\x01\x12\x12\n\x05value\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x0e\n\x06values\x18\x03 \x03(\r\x12<\n\tincrement\x18\x05 \x01(\x0b\x32).otg.PatternFlowIpv4TosReliabilityCounter\x12<\n\tdecrement\x18\x06 \x01(\x0b\x32).otg.PatternFlowIpv4TosReliabilityCounter\x12@\n\x0bmetric_tags\x18\x07 \x03(\x0b\x32+.otg.PatternFlowIpv4TosReliabilityMetricTag\x1aV\n\x06\x43hoice\"L\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\t\n\x05value\x10\x02\x12\n\n\x06values\x10\x03\x12\r\n\tincrement\x10\x04\x12\r\n\tdecrement\x10\x05\x42\t\n\x07_choiceB\x08\n\x06_value\"{\n!PatternFlowIpv4TosMonetaryCounter\x12\x12\n\x05start\x18\x01 \x01(\rH\x00\x88\x01\x01\x12\x11\n\x04step\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x12\n\x05\x63ount\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x08\n\x06_startB\x07\n\x05_stepB\x08\n\x06_count\"\x81\x01\n#PatternFlowIpv4TosMonetaryMetricTag\x12\x11\n\x04name\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x13\n\x06offset\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x13\n\x06length\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x07\n\x05_nameB\t\n\x07_offsetB\t\n\x07_length\"\xa4\x03\n\x1aPatternFlowIpv4TosMonetary\x12@\n\x06\x63hoice\x18\x01 \x01(\x0e\x32+.otg.PatternFlowIpv4TosMonetary.Choice.EnumH\x00\x88\x01\x01\x12\x12\n\x05value\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x0e\n\x06values\x18\x03 \x03(\r\x12\x39\n\tincrement\x18\x05 \x01(\x0b\x32&.otg.PatternFlowIpv4TosMonetaryCounter\x12\x39\n\tdecrement\x18\x06 \x01(\x0b\x32&.otg.PatternFlowIpv4TosMonetaryCounter\x12=\n\x0bmetric_tags\x18\x07 \x03(\x0b\x32(.otg.PatternFlowIpv4TosMonetaryMetricTag\x1aV\n\x06\x43hoice\"L\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\t\n\x05value\x10\x02\x12\n\n\x06values\x10\x03\x12\r\n\tincrement\x10\x04\x12\r\n\tdecrement\x10\x05\x42\t\n\x07_choiceB\x08\n\x06_value\"y\n\x1fPatternFlowIpv4TosUnusedCounter\x12\x12\n\x05start\x18\x01 \x01(\rH\x00\x88\x01\x01\x12\x11\n\x04step\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x12\n\x05\x63ount\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x08\n\x06_startB\x07\n\x05_stepB\x08\n\x06_count\"\x7f\n!PatternFlowIpv4TosUnusedMetricTag\x12\x11\n\x04name\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x13\n\x06offset\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x13\n\x06length\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x07\n\x05_nameB\t\n\x07_offsetB\t\n\x07_length\"\x9a\x03\n\x18PatternFlowIpv4TosUnused\x12>\n\x06\x63hoice\x18\x01 \x01(\x0e\x32).otg.PatternFlowIpv4TosUnused.Choice.EnumH\x00\x88\x01\x01\x12\x12\n\x05value\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x0e\n\x06values\x18\x03 \x03(\r\x12\x37\n\tincrement\x18\x05 \x01(\x0b\x32$.otg.PatternFlowIpv4TosUnusedCounter\x12\x37\n\tdecrement\x18\x06 \x01(\x0b\x32$.otg.PatternFlowIpv4TosUnusedCounter\x12;\n\x0bmetric_tags\x18\x07 \x03(\x0b\x32&.otg.PatternFlowIpv4TosUnusedMetricTag\x1aV\n\x06\x43hoice\"L\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\t\n\x05value\x10\x02\x12\n\n\x06values\x10\x03\x12\r\n\tincrement\x10\x04\x12\r\n\tdecrement\x10\x05\x42\t\n\x07_choiceB\x08\n\x06_value\"w\n\x1dPatternFlowIpv6VersionCounter\x12\x12\n\x05start\x18\x01 \x01(\rH\x00\x88\x01\x01\x12\x11\n\x04step\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x12\n\x05\x63ount\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x08\n\x06_startB\x07\n\x05_stepB\x08\n\x06_count\"}\n\x1fPatternFlowIpv6VersionMetricTag\x12\x11\n\x04name\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x13\n\x06offset\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x13\n\x06length\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x07\n\x05_nameB\t\n\x07_offsetB\t\n\x07_length\"\x90\x03\n\x16PatternFlowIpv6Version\x12<\n\x06\x63hoice\x18\x01 \x01(\x0e\x32\'.otg.PatternFlowIpv6Version.Choice.EnumH\x00\x88\x01\x01\x12\x12\n\x05value\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x0e\n\x06values\x18\x03 \x03(\r\x12\x35\n\tincrement\x18\x05 \x01(\x0b\x32\".otg.PatternFlowIpv6VersionCounter\x12\x35\n\tdecrement\x18\x06 \x01(\x0b\x32\".otg.PatternFlowIpv6VersionCounter\x12\x39\n\x0bmetric_tags\x18\x07 \x03(\x0b\x32$.otg.PatternFlowIpv6VersionMetricTag\x1aV\n\x06\x43hoice\"L\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\t\n\x05value\x10\x02\x12\n\n\x06values\x10\x03\x12\r\n\tincrement\x10\x04\x12\r\n\tdecrement\x10\x05\x42\t\n\x07_choiceB\x08\n\x06_value\"|\n\"PatternFlowIpv6TrafficClassCounter\x12\x12\n\x05start\x18\x01 \x01(\rH\x00\x88\x01\x01\x12\x11\n\x04step\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x12\n\x05\x63ount\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x08\n\x06_startB\x07\n\x05_stepB\x08\n\x06_count\"\x82\x01\n$PatternFlowIpv6TrafficClassMetricTag\x12\x11\n\x04name\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x13\n\x06offset\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x13\n\x06length\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x07\n\x05_nameB\t\n\x07_offsetB\t\n\x07_length\"\xa9\x03\n\x1bPatternFlowIpv6TrafficClass\x12\x41\n\x06\x63hoice\x18\x01 \x01(\x0e\x32,.otg.PatternFlowIpv6TrafficClass.Choice.EnumH\x00\x88\x01\x01\x12\x12\n\x05value\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x0e\n\x06values\x18\x03 \x03(\r\x12:\n\tincrement\x18\x05 \x01(\x0b\x32\'.otg.PatternFlowIpv6TrafficClassCounter\x12:\n\tdecrement\x18\x06 \x01(\x0b\x32\'.otg.PatternFlowIpv6TrafficClassCounter\x12>\n\x0bmetric_tags\x18\x07 \x03(\x0b\x32).otg.PatternFlowIpv6TrafficClassMetricTag\x1aV\n\x06\x43hoice\"L\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\t\n\x05value\x10\x02\x12\n\n\x06values\x10\x03\x12\r\n\tincrement\x10\x04\x12\r\n\tdecrement\x10\x05\x42\t\n\x07_choiceB\x08\n\x06_value\"y\n\x1fPatternFlowIpv6FlowLabelCounter\x12\x12\n\x05start\x18\x01 \x01(\rH\x00\x88\x01\x01\x12\x11\n\x04step\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x12\n\x05\x63ount\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x08\n\x06_startB\x07\n\x05_stepB\x08\n\x06_count\"\x7f\n!PatternFlowIpv6FlowLabelMetricTag\x12\x11\n\x04name\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x13\n\x06offset\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x13\n\x06length\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x07\n\x05_nameB\t\n\x07_offsetB\t\n\x07_length\"\x9a\x03\n\x18PatternFlowIpv6FlowLabel\x12>\n\x06\x63hoice\x18\x01 \x01(\x0e\x32).otg.PatternFlowIpv6FlowLabel.Choice.EnumH\x00\x88\x01\x01\x12\x12\n\x05value\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x0e\n\x06values\x18\x03 \x03(\r\x12\x37\n\tincrement\x18\x05 \x01(\x0b\x32$.otg.PatternFlowIpv6FlowLabelCounter\x12\x37\n\tdecrement\x18\x06 \x01(\x0b\x32$.otg.PatternFlowIpv6FlowLabelCounter\x12;\n\x0bmetric_tags\x18\x07 \x03(\x0b\x32&.otg.PatternFlowIpv6FlowLabelMetricTag\x1aV\n\x06\x43hoice\"L\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\t\n\x05value\x10\x02\x12\n\n\x06values\x10\x03\x12\r\n\tincrement\x10\x04\x12\r\n\tdecrement\x10\x05\x42\t\n\x07_choiceB\x08\n\x06_value\"}\n#PatternFlowIpv6PayloadLengthCounter\x12\x12\n\x05start\x18\x01 \x01(\rH\x00\x88\x01\x01\x12\x11\n\x04step\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x12\n\x05\x63ount\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x08\n\x06_startB\x07\n\x05_stepB\x08\n\x06_count\"\x83\x01\n%PatternFlowIpv6PayloadLengthMetricTag\x12\x11\n\x04name\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x13\n\x06offset\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x13\n\x06length\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x07\n\x05_nameB\t\n\x07_offsetB\t\n\x07_length\"\xd4\x03\n\x1cPatternFlowIpv6PayloadLength\x12\x42\n\x06\x63hoice\x18\x01 \x01(\x0e\x32-.otg.PatternFlowIpv6PayloadLength.Choice.EnumH\x00\x88\x01\x01\x12\x12\n\x05value\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x0e\n\x06values\x18\x03 \x03(\r\x12\x11\n\x04\x61uto\x18\x04 \x01(\rH\x02\x88\x01\x01\x12;\n\tincrement\x18\x06 \x01(\x0b\x32(.otg.PatternFlowIpv6PayloadLengthCounter\x12;\n\tdecrement\x18\x07 \x01(\x0b\x32(.otg.PatternFlowIpv6PayloadLengthCounter\x12?\n\x0bmetric_tags\x18\x08 \x03(\x0b\x32*.otg.PatternFlowIpv6PayloadLengthMetricTag\x1a`\n\x06\x43hoice\"V\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\t\n\x05value\x10\x02\x12\n\n\x06values\x10\x03\x12\x08\n\x04\x61uto\x10\x01\x12\r\n\tincrement\x10\x04\x12\r\n\tdecrement\x10\x05\x42\t\n\x07_choiceB\x08\n\x06_valueB\x07\n\x05_auto\"z\n PatternFlowIpv6NextHeaderCounter\x12\x12\n\x05start\x18\x01 \x01(\rH\x00\x88\x01\x01\x12\x11\n\x04step\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x12\n\x05\x63ount\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x08\n\x06_startB\x07\n\x05_stepB\x08\n\x06_count\"\x80\x01\n\"PatternFlowIpv6NextHeaderMetricTag\x12\x11\n\x04name\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x13\n\x06offset\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x13\n\x06length\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x07\n\x05_nameB\t\n\x07_offsetB\t\n\x07_length\"\xc5\x03\n\x19PatternFlowIpv6NextHeader\x12?\n\x06\x63hoice\x18\x01 \x01(\x0e\x32*.otg.PatternFlowIpv6NextHeader.Choice.EnumH\x00\x88\x01\x01\x12\x12\n\x05value\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x0e\n\x06values\x18\x03 \x03(\r\x12\x11\n\x04\x61uto\x18\x04 \x01(\rH\x02\x88\x01\x01\x12\x38\n\tincrement\x18\x06 \x01(\x0b\x32%.otg.PatternFlowIpv6NextHeaderCounter\x12\x38\n\tdecrement\x18\x07 \x01(\x0b\x32%.otg.PatternFlowIpv6NextHeaderCounter\x12<\n\x0bmetric_tags\x18\x08 \x03(\x0b\x32\'.otg.PatternFlowIpv6NextHeaderMetricTag\x1a`\n\x06\x43hoice\"V\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\t\n\x05value\x10\x02\x12\n\n\x06values\x10\x03\x12\x08\n\x04\x61uto\x10\x01\x12\r\n\tincrement\x10\x04\x12\r\n\tdecrement\x10\x05\x42\t\n\x07_choiceB\x08\n\x06_valueB\x07\n\x05_auto\"x\n\x1ePatternFlowIpv6HopLimitCounter\x12\x12\n\x05start\x18\x01 \x01(\rH\x00\x88\x01\x01\x12\x11\n\x04step\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x12\n\x05\x63ount\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x08\n\x06_startB\x07\n\x05_stepB\x08\n\x06_count\"~\n PatternFlowIpv6HopLimitMetricTag\x12\x11\n\x04name\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x13\n\x06offset\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x13\n\x06length\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x07\n\x05_nameB\t\n\x07_offsetB\t\n\x07_length\"\x95\x03\n\x17PatternFlowIpv6HopLimit\x12=\n\x06\x63hoice\x18\x01 \x01(\x0e\x32(.otg.PatternFlowIpv6HopLimit.Choice.EnumH\x00\x88\x01\x01\x12\x12\n\x05value\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x0e\n\x06values\x18\x03 \x03(\r\x12\x36\n\tincrement\x18\x05 \x01(\x0b\x32#.otg.PatternFlowIpv6HopLimitCounter\x12\x36\n\tdecrement\x18\x06 \x01(\x0b\x32#.otg.PatternFlowIpv6HopLimitCounter\x12:\n\x0bmetric_tags\x18\x07 \x03(\x0b\x32%.otg.PatternFlowIpv6HopLimitMetricTag\x1aV\n\x06\x43hoice\"L\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\t\n\x05value\x10\x02\x12\n\n\x06values\x10\x03\x12\r\n\tincrement\x10\x04\x12\r\n\tdecrement\x10\x05\x42\t\n\x07_choiceB\x08\n\x06_value\"s\n\x19PatternFlowIpv6SrcCounter\x12\x12\n\x05start\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x11\n\x04step\x18\x02 \x01(\tH\x01\x88\x01\x01\x12\x12\n\x05\x63ount\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x08\n\x06_startB\x07\n\x05_stepB\x08\n\x06_count\"y\n\x1bPatternFlowIpv6SrcMetricTag\x12\x11\n\x04name\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x13\n\x06offset\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x13\n\x06length\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x07\n\x05_nameB\t\n\x07_offsetB\t\n\x07_length\"\xfc\x02\n\x12PatternFlowIpv6Src\x12\x38\n\x06\x63hoice\x18\x01 \x01(\x0e\x32#.otg.PatternFlowIpv6Src.Choice.EnumH\x00\x88\x01\x01\x12\x12\n\x05value\x18\x02 \x01(\tH\x01\x88\x01\x01\x12\x0e\n\x06values\x18\x03 \x03(\t\x12\x31\n\tincrement\x18\x05 \x01(\x0b\x32\x1e.otg.PatternFlowIpv6SrcCounter\x12\x31\n\tdecrement\x18\x06 \x01(\x0b\x32\x1e.otg.PatternFlowIpv6SrcCounter\x12\x35\n\x0bmetric_tags\x18\x07 \x03(\x0b\x32 .otg.PatternFlowIpv6SrcMetricTag\x1aV\n\x06\x43hoice\"L\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\t\n\x05value\x10\x02\x12\n\n\x06values\x10\x03\x12\r\n\tincrement\x10\x04\x12\r\n\tdecrement\x10\x05\x42\t\n\x07_choiceB\x08\n\x06_value\"s\n\x19PatternFlowIpv6DstCounter\x12\x12\n\x05start\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x11\n\x04step\x18\x02 \x01(\tH\x01\x88\x01\x01\x12\x12\n\x05\x63ount\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x08\n\x06_startB\x07\n\x05_stepB\x08\n\x06_count\"y\n\x1bPatternFlowIpv6DstMetricTag\x12\x11\n\x04name\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x13\n\x06offset\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x13\n\x06length\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x07\n\x05_nameB\t\n\x07_offsetB\t\n\x07_length\"\xfc\x02\n\x12PatternFlowIpv6Dst\x12\x38\n\x06\x63hoice\x18\x01 \x01(\x0e\x32#.otg.PatternFlowIpv6Dst.Choice.EnumH\x00\x88\x01\x01\x12\x12\n\x05value\x18\x02 \x01(\tH\x01\x88\x01\x01\x12\x0e\n\x06values\x18\x03 \x03(\t\x12\x31\n\tincrement\x18\x05 \x01(\x0b\x32\x1e.otg.PatternFlowIpv6DstCounter\x12\x31\n\tdecrement\x18\x06 \x01(\x0b\x32\x1e.otg.PatternFlowIpv6DstCounter\x12\x35\n\x0bmetric_tags\x18\x07 \x03(\x0b\x32 .otg.PatternFlowIpv6DstMetricTag\x1aV\n\x06\x43hoice\"L\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\t\n\x05value\x10\x02\x12\n\n\x06values\x10\x03\x12\r\n\tincrement\x10\x04\x12\r\n\tdecrement\x10\x05\x42\t\n\x07_choiceB\x08\n\x06_value\"w\n\x1dPatternFlowPfcPauseDstCounter\x12\x12\n\x05start\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x11\n\x04step\x18\x02 \x01(\tH\x01\x88\x01\x01\x12\x12\n\x05\x63ount\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x08\n\x06_startB\x07\n\x05_stepB\x08\n\x06_count\"}\n\x1fPatternFlowPfcPauseDstMetricTag\x12\x11\n\x04name\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x13\n\x06offset\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x13\n\x06length\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x07\n\x05_nameB\t\n\x07_offsetB\t\n\x07_length\"\x90\x03\n\x16PatternFlowPfcPauseDst\x12<\n\x06\x63hoice\x18\x01 \x01(\x0e\x32\'.otg.PatternFlowPfcPauseDst.Choice.EnumH\x00\x88\x01\x01\x12\x12\n\x05value\x18\x02 \x01(\tH\x01\x88\x01\x01\x12\x0e\n\x06values\x18\x03 \x03(\t\x12\x35\n\tincrement\x18\x05 \x01(\x0b\x32\".otg.PatternFlowPfcPauseDstCounter\x12\x35\n\tdecrement\x18\x06 \x01(\x0b\x32\".otg.PatternFlowPfcPauseDstCounter\x12\x39\n\x0bmetric_tags\x18\x07 \x03(\x0b\x32$.otg.PatternFlowPfcPauseDstMetricTag\x1aV\n\x06\x43hoice\"L\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\t\n\x05value\x10\x02\x12\n\n\x06values\x10\x03\x12\r\n\tincrement\x10\x04\x12\r\n\tdecrement\x10\x05\x42\t\n\x07_choiceB\x08\n\x06_value\"w\n\x1dPatternFlowPfcPauseSrcCounter\x12\x12\n\x05start\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x11\n\x04step\x18\x02 \x01(\tH\x01\x88\x01\x01\x12\x12\n\x05\x63ount\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x08\n\x06_startB\x07\n\x05_stepB\x08\n\x06_count\"}\n\x1fPatternFlowPfcPauseSrcMetricTag\x12\x11\n\x04name\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x13\n\x06offset\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x13\n\x06length\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x07\n\x05_nameB\t\n\x07_offsetB\t\n\x07_length\"\x90\x03\n\x16PatternFlowPfcPauseSrc\x12<\n\x06\x63hoice\x18\x01 \x01(\x0e\x32\'.otg.PatternFlowPfcPauseSrc.Choice.EnumH\x00\x88\x01\x01\x12\x12\n\x05value\x18\x02 \x01(\tH\x01\x88\x01\x01\x12\x0e\n\x06values\x18\x03 \x03(\t\x12\x35\n\tincrement\x18\x05 \x01(\x0b\x32\".otg.PatternFlowPfcPauseSrcCounter\x12\x35\n\tdecrement\x18\x06 \x01(\x0b\x32\".otg.PatternFlowPfcPauseSrcCounter\x12\x39\n\x0bmetric_tags\x18\x07 \x03(\x0b\x32$.otg.PatternFlowPfcPauseSrcMetricTag\x1aV\n\x06\x43hoice\"L\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\t\n\x05value\x10\x02\x12\n\n\x06values\x10\x03\x12\r\n\tincrement\x10\x04\x12\r\n\tdecrement\x10\x05\x42\t\n\x07_choiceB\x08\n\x06_value\"}\n#PatternFlowPfcPauseEtherTypeCounter\x12\x12\n\x05start\x18\x01 \x01(\rH\x00\x88\x01\x01\x12\x11\n\x04step\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x12\n\x05\x63ount\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x08\n\x06_startB\x07\n\x05_stepB\x08\n\x06_count\"\x83\x01\n%PatternFlowPfcPauseEtherTypeMetricTag\x12\x11\n\x04name\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x13\n\x06offset\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x13\n\x06length\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x07\n\x05_nameB\t\n\x07_offsetB\t\n\x07_length\"\xae\x03\n\x1cPatternFlowPfcPauseEtherType\x12\x42\n\x06\x63hoice\x18\x01 \x01(\x0e\x32-.otg.PatternFlowPfcPauseEtherType.Choice.EnumH\x00\x88\x01\x01\x12\x12\n\x05value\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x0e\n\x06values\x18\x03 \x03(\r\x12;\n\tincrement\x18\x05 \x01(\x0b\x32(.otg.PatternFlowPfcPauseEtherTypeCounter\x12;\n\tdecrement\x18\x06 \x01(\x0b\x32(.otg.PatternFlowPfcPauseEtherTypeCounter\x12?\n\x0bmetric_tags\x18\x07 \x03(\x0b\x32*.otg.PatternFlowPfcPauseEtherTypeMetricTag\x1aV\n\x06\x43hoice\"L\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\t\n\x05value\x10\x02\x12\n\n\x06values\x10\x03\x12\r\n\tincrement\x10\x04\x12\r\n\tdecrement\x10\x05\x42\t\n\x07_choiceB\x08\n\x06_value\"\x81\x01\n\'PatternFlowPfcPauseControlOpCodeCounter\x12\x12\n\x05start\x18\x01 \x01(\rH\x00\x88\x01\x01\x12\x11\n\x04step\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x12\n\x05\x63ount\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x08\n\x06_startB\x07\n\x05_stepB\x08\n\x06_count\"\x87\x01\n)PatternFlowPfcPauseControlOpCodeMetricTag\x12\x11\n\x04name\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x13\n\x06offset\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x13\n\x06length\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x07\n\x05_nameB\t\n\x07_offsetB\t\n\x07_length\"\xc2\x03\n PatternFlowPfcPauseControlOpCode\x12\x46\n\x06\x63hoice\x18\x01 \x01(\x0e\x32\x31.otg.PatternFlowPfcPauseControlOpCode.Choice.EnumH\x00\x88\x01\x01\x12\x12\n\x05value\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x0e\n\x06values\x18\x03 \x03(\r\x12?\n\tincrement\x18\x05 \x01(\x0b\x32,.otg.PatternFlowPfcPauseControlOpCodeCounter\x12?\n\tdecrement\x18\x06 \x01(\x0b\x32,.otg.PatternFlowPfcPauseControlOpCodeCounter\x12\x43\n\x0bmetric_tags\x18\x07 \x03(\x0b\x32..otg.PatternFlowPfcPauseControlOpCodeMetricTag\x1aV\n\x06\x43hoice\"L\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\t\n\x05value\x10\x02\x12\n\n\x06values\x10\x03\x12\r\n\tincrement\x10\x04\x12\r\n\tdecrement\x10\x05\x42\t\n\x07_choiceB\x08\n\x06_value\"\x85\x01\n+PatternFlowPfcPauseClassEnableVectorCounter\x12\x12\n\x05start\x18\x01 \x01(\rH\x00\x88\x01\x01\x12\x11\n\x04step\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x12\n\x05\x63ount\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x08\n\x06_startB\x07\n\x05_stepB\x08\n\x06_count\"\x8b\x01\n-PatternFlowPfcPauseClassEnableVectorMetricTag\x12\x11\n\x04name\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x13\n\x06offset\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x13\n\x06length\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x07\n\x05_nameB\t\n\x07_offsetB\t\n\x07_length\"\xd6\x03\n$PatternFlowPfcPauseClassEnableVector\x12J\n\x06\x63hoice\x18\x01 \x01(\x0e\x32\x35.otg.PatternFlowPfcPauseClassEnableVector.Choice.EnumH\x00\x88\x01\x01\x12\x12\n\x05value\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x0e\n\x06values\x18\x03 \x03(\r\x12\x43\n\tincrement\x18\x05 \x01(\x0b\x32\x30.otg.PatternFlowPfcPauseClassEnableVectorCounter\x12\x43\n\tdecrement\x18\x06 \x01(\x0b\x32\x30.otg.PatternFlowPfcPauseClassEnableVectorCounter\x12G\n\x0bmetric_tags\x18\x07 \x03(\x0b\x32\x32.otg.PatternFlowPfcPauseClassEnableVectorMetricTag\x1aV\n\x06\x43hoice\"L\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\t\n\x05value\x10\x02\x12\n\n\x06values\x10\x03\x12\r\n\tincrement\x10\x04\x12\r\n\tdecrement\x10\x05\x42\t\n\x07_choiceB\x08\n\x06_value\"\x7f\n%PatternFlowPfcPausePauseClass0Counter\x12\x12\n\x05start\x18\x01 \x01(\rH\x00\x88\x01\x01\x12\x11\n\x04step\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x12\n\x05\x63ount\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x08\n\x06_startB\x07\n\x05_stepB\x08\n\x06_count\"\x85\x01\n\'PatternFlowPfcPausePauseClass0MetricTag\x12\x11\n\x04name\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x13\n\x06offset\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x13\n\x06length\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x07\n\x05_nameB\t\n\x07_offsetB\t\n\x07_length\"\xb8\x03\n\x1ePatternFlowPfcPausePauseClass0\x12\x44\n\x06\x63hoice\x18\x01 \x01(\x0e\x32/.otg.PatternFlowPfcPausePauseClass0.Choice.EnumH\x00\x88\x01\x01\x12\x12\n\x05value\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x0e\n\x06values\x18\x03 \x03(\r\x12=\n\tincrement\x18\x05 \x01(\x0b\x32*.otg.PatternFlowPfcPausePauseClass0Counter\x12=\n\tdecrement\x18\x06 \x01(\x0b\x32*.otg.PatternFlowPfcPausePauseClass0Counter\x12\x41\n\x0bmetric_tags\x18\x07 \x03(\x0b\x32,.otg.PatternFlowPfcPausePauseClass0MetricTag\x1aV\n\x06\x43hoice\"L\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\t\n\x05value\x10\x02\x12\n\n\x06values\x10\x03\x12\r\n\tincrement\x10\x04\x12\r\n\tdecrement\x10\x05\x42\t\n\x07_choiceB\x08\n\x06_value\"\x7f\n%PatternFlowPfcPausePauseClass1Counter\x12\x12\n\x05start\x18\x01 \x01(\rH\x00\x88\x01\x01\x12\x11\n\x04step\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x12\n\x05\x63ount\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x08\n\x06_startB\x07\n\x05_stepB\x08\n\x06_count\"\x85\x01\n\'PatternFlowPfcPausePauseClass1MetricTag\x12\x11\n\x04name\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x13\n\x06offset\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x13\n\x06length\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x07\n\x05_nameB\t\n\x07_offsetB\t\n\x07_length\"\xb8\x03\n\x1ePatternFlowPfcPausePauseClass1\x12\x44\n\x06\x63hoice\x18\x01 \x01(\x0e\x32/.otg.PatternFlowPfcPausePauseClass1.Choice.EnumH\x00\x88\x01\x01\x12\x12\n\x05value\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x0e\n\x06values\x18\x03 \x03(\r\x12=\n\tincrement\x18\x05 \x01(\x0b\x32*.otg.PatternFlowPfcPausePauseClass1Counter\x12=\n\tdecrement\x18\x06 \x01(\x0b\x32*.otg.PatternFlowPfcPausePauseClass1Counter\x12\x41\n\x0bmetric_tags\x18\x07 \x03(\x0b\x32,.otg.PatternFlowPfcPausePauseClass1MetricTag\x1aV\n\x06\x43hoice\"L\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\t\n\x05value\x10\x02\x12\n\n\x06values\x10\x03\x12\r\n\tincrement\x10\x04\x12\r\n\tdecrement\x10\x05\x42\t\n\x07_choiceB\x08\n\x06_value\"\x7f\n%PatternFlowPfcPausePauseClass2Counter\x12\x12\n\x05start\x18\x01 \x01(\rH\x00\x88\x01\x01\x12\x11\n\x04step\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x12\n\x05\x63ount\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x08\n\x06_startB\x07\n\x05_stepB\x08\n\x06_count\"\x85\x01\n\'PatternFlowPfcPausePauseClass2MetricTag\x12\x11\n\x04name\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x13\n\x06offset\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x13\n\x06length\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x07\n\x05_nameB\t\n\x07_offsetB\t\n\x07_length\"\xb8\x03\n\x1ePatternFlowPfcPausePauseClass2\x12\x44\n\x06\x63hoice\x18\x01 \x01(\x0e\x32/.otg.PatternFlowPfcPausePauseClass2.Choice.EnumH\x00\x88\x01\x01\x12\x12\n\x05value\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x0e\n\x06values\x18\x03 \x03(\r\x12=\n\tincrement\x18\x05 \x01(\x0b\x32*.otg.PatternFlowPfcPausePauseClass2Counter\x12=\n\tdecrement\x18\x06 \x01(\x0b\x32*.otg.PatternFlowPfcPausePauseClass2Counter\x12\x41\n\x0bmetric_tags\x18\x07 \x03(\x0b\x32,.otg.PatternFlowPfcPausePauseClass2MetricTag\x1aV\n\x06\x43hoice\"L\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\t\n\x05value\x10\x02\x12\n\n\x06values\x10\x03\x12\r\n\tincrement\x10\x04\x12\r\n\tdecrement\x10\x05\x42\t\n\x07_choiceB\x08\n\x06_value\"\x7f\n%PatternFlowPfcPausePauseClass3Counter\x12\x12\n\x05start\x18\x01 \x01(\rH\x00\x88\x01\x01\x12\x11\n\x04step\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x12\n\x05\x63ount\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x08\n\x06_startB\x07\n\x05_stepB\x08\n\x06_count\"\x85\x01\n\'PatternFlowPfcPausePauseClass3MetricTag\x12\x11\n\x04name\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x13\n\x06offset\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x13\n\x06length\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x07\n\x05_nameB\t\n\x07_offsetB\t\n\x07_length\"\xb8\x03\n\x1ePatternFlowPfcPausePauseClass3\x12\x44\n\x06\x63hoice\x18\x01 \x01(\x0e\x32/.otg.PatternFlowPfcPausePauseClass3.Choice.EnumH\x00\x88\x01\x01\x12\x12\n\x05value\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x0e\n\x06values\x18\x03 \x03(\r\x12=\n\tincrement\x18\x05 \x01(\x0b\x32*.otg.PatternFlowPfcPausePauseClass3Counter\x12=\n\tdecrement\x18\x06 \x01(\x0b\x32*.otg.PatternFlowPfcPausePauseClass3Counter\x12\x41\n\x0bmetric_tags\x18\x07 \x03(\x0b\x32,.otg.PatternFlowPfcPausePauseClass3MetricTag\x1aV\n\x06\x43hoice\"L\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\t\n\x05value\x10\x02\x12\n\n\x06values\x10\x03\x12\r\n\tincrement\x10\x04\x12\r\n\tdecrement\x10\x05\x42\t\n\x07_choiceB\x08\n\x06_value\"\x7f\n%PatternFlowPfcPausePauseClass4Counter\x12\x12\n\x05start\x18\x01 \x01(\rH\x00\x88\x01\x01\x12\x11\n\x04step\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x12\n\x05\x63ount\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x08\n\x06_startB\x07\n\x05_stepB\x08\n\x06_count\"\x85\x01\n\'PatternFlowPfcPausePauseClass4MetricTag\x12\x11\n\x04name\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x13\n\x06offset\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x13\n\x06length\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x07\n\x05_nameB\t\n\x07_offsetB\t\n\x07_length\"\xb8\x03\n\x1ePatternFlowPfcPausePauseClass4\x12\x44\n\x06\x63hoice\x18\x01 \x01(\x0e\x32/.otg.PatternFlowPfcPausePauseClass4.Choice.EnumH\x00\x88\x01\x01\x12\x12\n\x05value\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x0e\n\x06values\x18\x03 \x03(\r\x12=\n\tincrement\x18\x05 \x01(\x0b\x32*.otg.PatternFlowPfcPausePauseClass4Counter\x12=\n\tdecrement\x18\x06 \x01(\x0b\x32*.otg.PatternFlowPfcPausePauseClass4Counter\x12\x41\n\x0bmetric_tags\x18\x07 \x03(\x0b\x32,.otg.PatternFlowPfcPausePauseClass4MetricTag\x1aV\n\x06\x43hoice\"L\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\t\n\x05value\x10\x02\x12\n\n\x06values\x10\x03\x12\r\n\tincrement\x10\x04\x12\r\n\tdecrement\x10\x05\x42\t\n\x07_choiceB\x08\n\x06_value\"\x7f\n%PatternFlowPfcPausePauseClass5Counter\x12\x12\n\x05start\x18\x01 \x01(\rH\x00\x88\x01\x01\x12\x11\n\x04step\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x12\n\x05\x63ount\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x08\n\x06_startB\x07\n\x05_stepB\x08\n\x06_count\"\x85\x01\n\'PatternFlowPfcPausePauseClass5MetricTag\x12\x11\n\x04name\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x13\n\x06offset\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x13\n\x06length\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x07\n\x05_nameB\t\n\x07_offsetB\t\n\x07_length\"\xb8\x03\n\x1ePatternFlowPfcPausePauseClass5\x12\x44\n\x06\x63hoice\x18\x01 \x01(\x0e\x32/.otg.PatternFlowPfcPausePauseClass5.Choice.EnumH\x00\x88\x01\x01\x12\x12\n\x05value\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x0e\n\x06values\x18\x03 \x03(\r\x12=\n\tincrement\x18\x05 \x01(\x0b\x32*.otg.PatternFlowPfcPausePauseClass5Counter\x12=\n\tdecrement\x18\x06 \x01(\x0b\x32*.otg.PatternFlowPfcPausePauseClass5Counter\x12\x41\n\x0bmetric_tags\x18\x07 \x03(\x0b\x32,.otg.PatternFlowPfcPausePauseClass5MetricTag\x1aV\n\x06\x43hoice\"L\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\t\n\x05value\x10\x02\x12\n\n\x06values\x10\x03\x12\r\n\tincrement\x10\x04\x12\r\n\tdecrement\x10\x05\x42\t\n\x07_choiceB\x08\n\x06_value\"\x7f\n%PatternFlowPfcPausePauseClass6Counter\x12\x12\n\x05start\x18\x01 \x01(\rH\x00\x88\x01\x01\x12\x11\n\x04step\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x12\n\x05\x63ount\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x08\n\x06_startB\x07\n\x05_stepB\x08\n\x06_count\"\x85\x01\n\'PatternFlowPfcPausePauseClass6MetricTag\x12\x11\n\x04name\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x13\n\x06offset\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x13\n\x06length\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x07\n\x05_nameB\t\n\x07_offsetB\t\n\x07_length\"\xb8\x03\n\x1ePatternFlowPfcPausePauseClass6\x12\x44\n\x06\x63hoice\x18\x01 \x01(\x0e\x32/.otg.PatternFlowPfcPausePauseClass6.Choice.EnumH\x00\x88\x01\x01\x12\x12\n\x05value\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x0e\n\x06values\x18\x03 \x03(\r\x12=\n\tincrement\x18\x05 \x01(\x0b\x32*.otg.PatternFlowPfcPausePauseClass6Counter\x12=\n\tdecrement\x18\x06 \x01(\x0b\x32*.otg.PatternFlowPfcPausePauseClass6Counter\x12\x41\n\x0bmetric_tags\x18\x07 \x03(\x0b\x32,.otg.PatternFlowPfcPausePauseClass6MetricTag\x1aV\n\x06\x43hoice\"L\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\t\n\x05value\x10\x02\x12\n\n\x06values\x10\x03\x12\r\n\tincrement\x10\x04\x12\r\n\tdecrement\x10\x05\x42\t\n\x07_choiceB\x08\n\x06_value\"\x7f\n%PatternFlowPfcPausePauseClass7Counter\x12\x12\n\x05start\x18\x01 \x01(\rH\x00\x88\x01\x01\x12\x11\n\x04step\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x12\n\x05\x63ount\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x08\n\x06_startB\x07\n\x05_stepB\x08\n\x06_count\"\x85\x01\n\'PatternFlowPfcPausePauseClass7MetricTag\x12\x11\n\x04name\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x13\n\x06offset\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x13\n\x06length\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x07\n\x05_nameB\t\n\x07_offsetB\t\n\x07_length\"\xb8\x03\n\x1ePatternFlowPfcPausePauseClass7\x12\x44\n\x06\x63hoice\x18\x01 \x01(\x0e\x32/.otg.PatternFlowPfcPausePauseClass7.Choice.EnumH\x00\x88\x01\x01\x12\x12\n\x05value\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x0e\n\x06values\x18\x03 \x03(\r\x12=\n\tincrement\x18\x05 \x01(\x0b\x32*.otg.PatternFlowPfcPausePauseClass7Counter\x12=\n\tdecrement\x18\x06 \x01(\x0b\x32*.otg.PatternFlowPfcPausePauseClass7Counter\x12\x41\n\x0bmetric_tags\x18\x07 \x03(\x0b\x32,.otg.PatternFlowPfcPausePauseClass7MetricTag\x1aV\n\x06\x43hoice\"L\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\t\n\x05value\x10\x02\x12\n\n\x06values\x10\x03\x12\r\n\tincrement\x10\x04\x12\r\n\tdecrement\x10\x05\x42\t\n\x07_choiceB\x08\n\x06_value\"|\n\"PatternFlowEthernetPauseDstCounter\x12\x12\n\x05start\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x11\n\x04step\x18\x02 \x01(\tH\x01\x88\x01\x01\x12\x12\n\x05\x63ount\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x08\n\x06_startB\x07\n\x05_stepB\x08\n\x06_count\"\x82\x01\n$PatternFlowEthernetPauseDstMetricTag\x12\x11\n\x04name\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x13\n\x06offset\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x13\n\x06length\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x07\n\x05_nameB\t\n\x07_offsetB\t\n\x07_length\"\xa9\x03\n\x1bPatternFlowEthernetPauseDst\x12\x41\n\x06\x63hoice\x18\x01 \x01(\x0e\x32,.otg.PatternFlowEthernetPauseDst.Choice.EnumH\x00\x88\x01\x01\x12\x12\n\x05value\x18\x02 \x01(\tH\x01\x88\x01\x01\x12\x0e\n\x06values\x18\x03 \x03(\t\x12:\n\tincrement\x18\x05 \x01(\x0b\x32\'.otg.PatternFlowEthernetPauseDstCounter\x12:\n\tdecrement\x18\x06 \x01(\x0b\x32\'.otg.PatternFlowEthernetPauseDstCounter\x12>\n\x0bmetric_tags\x18\x07 \x03(\x0b\x32).otg.PatternFlowEthernetPauseDstMetricTag\x1aV\n\x06\x43hoice\"L\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\t\n\x05value\x10\x02\x12\n\n\x06values\x10\x03\x12\r\n\tincrement\x10\x04\x12\r\n\tdecrement\x10\x05\x42\t\n\x07_choiceB\x08\n\x06_value\"|\n\"PatternFlowEthernetPauseSrcCounter\x12\x12\n\x05start\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x11\n\x04step\x18\x02 \x01(\tH\x01\x88\x01\x01\x12\x12\n\x05\x63ount\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x08\n\x06_startB\x07\n\x05_stepB\x08\n\x06_count\"\x82\x01\n$PatternFlowEthernetPauseSrcMetricTag\x12\x11\n\x04name\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x13\n\x06offset\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x13\n\x06length\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x07\n\x05_nameB\t\n\x07_offsetB\t\n\x07_length\"\xa9\x03\n\x1bPatternFlowEthernetPauseSrc\x12\x41\n\x06\x63hoice\x18\x01 \x01(\x0e\x32,.otg.PatternFlowEthernetPauseSrc.Choice.EnumH\x00\x88\x01\x01\x12\x12\n\x05value\x18\x02 \x01(\tH\x01\x88\x01\x01\x12\x0e\n\x06values\x18\x03 \x03(\t\x12:\n\tincrement\x18\x05 \x01(\x0b\x32\'.otg.PatternFlowEthernetPauseSrcCounter\x12:\n\tdecrement\x18\x06 \x01(\x0b\x32\'.otg.PatternFlowEthernetPauseSrcCounter\x12>\n\x0bmetric_tags\x18\x07 \x03(\x0b\x32).otg.PatternFlowEthernetPauseSrcMetricTag\x1aV\n\x06\x43hoice\"L\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\t\n\x05value\x10\x02\x12\n\n\x06values\x10\x03\x12\r\n\tincrement\x10\x04\x12\r\n\tdecrement\x10\x05\x42\t\n\x07_choiceB\x08\n\x06_value\"\x82\x01\n(PatternFlowEthernetPauseEtherTypeCounter\x12\x12\n\x05start\x18\x01 \x01(\rH\x00\x88\x01\x01\x12\x11\n\x04step\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x12\n\x05\x63ount\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x08\n\x06_startB\x07\n\x05_stepB\x08\n\x06_count\"\x88\x01\n*PatternFlowEthernetPauseEtherTypeMetricTag\x12\x11\n\x04name\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x13\n\x06offset\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x13\n\x06length\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x07\n\x05_nameB\t\n\x07_offsetB\t\n\x07_length\"\xc7\x03\n!PatternFlowEthernetPauseEtherType\x12G\n\x06\x63hoice\x18\x01 \x01(\x0e\x32\x32.otg.PatternFlowEthernetPauseEtherType.Choice.EnumH\x00\x88\x01\x01\x12\x12\n\x05value\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x0e\n\x06values\x18\x03 \x03(\r\x12@\n\tincrement\x18\x05 \x01(\x0b\x32-.otg.PatternFlowEthernetPauseEtherTypeCounter\x12@\n\tdecrement\x18\x06 \x01(\x0b\x32-.otg.PatternFlowEthernetPauseEtherTypeCounter\x12\x44\n\x0bmetric_tags\x18\x07 \x03(\x0b\x32/.otg.PatternFlowEthernetPauseEtherTypeMetricTag\x1aV\n\x06\x43hoice\"L\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\t\n\x05value\x10\x02\x12\n\n\x06values\x10\x03\x12\r\n\tincrement\x10\x04\x12\r\n\tdecrement\x10\x05\x42\t\n\x07_choiceB\x08\n\x06_value\"\x86\x01\n,PatternFlowEthernetPauseControlOpCodeCounter\x12\x12\n\x05start\x18\x01 \x01(\rH\x00\x88\x01\x01\x12\x11\n\x04step\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x12\n\x05\x63ount\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x08\n\x06_startB\x07\n\x05_stepB\x08\n\x06_count\"\x8c\x01\n.PatternFlowEthernetPauseControlOpCodeMetricTag\x12\x11\n\x04name\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x13\n\x06offset\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x13\n\x06length\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x07\n\x05_nameB\t\n\x07_offsetB\t\n\x07_length\"\xdb\x03\n%PatternFlowEthernetPauseControlOpCode\x12K\n\x06\x63hoice\x18\x01 \x01(\x0e\x32\x36.otg.PatternFlowEthernetPauseControlOpCode.Choice.EnumH\x00\x88\x01\x01\x12\x12\n\x05value\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x0e\n\x06values\x18\x03 \x03(\r\x12\x44\n\tincrement\x18\x05 \x01(\x0b\x32\x31.otg.PatternFlowEthernetPauseControlOpCodeCounter\x12\x44\n\tdecrement\x18\x06 \x01(\x0b\x32\x31.otg.PatternFlowEthernetPauseControlOpCodeCounter\x12H\n\x0bmetric_tags\x18\x07 \x03(\x0b\x32\x33.otg.PatternFlowEthernetPauseControlOpCodeMetricTag\x1aV\n\x06\x43hoice\"L\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\t\n\x05value\x10\x02\x12\n\n\x06values\x10\x03\x12\r\n\tincrement\x10\x04\x12\r\n\tdecrement\x10\x05\x42\t\n\x07_choiceB\x08\n\x06_value\"}\n#PatternFlowEthernetPauseTimeCounter\x12\x12\n\x05start\x18\x01 \x01(\rH\x00\x88\x01\x01\x12\x11\n\x04step\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x12\n\x05\x63ount\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x08\n\x06_startB\x07\n\x05_stepB\x08\n\x06_count\"\x83\x01\n%PatternFlowEthernetPauseTimeMetricTag\x12\x11\n\x04name\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x13\n\x06offset\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x13\n\x06length\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x07\n\x05_nameB\t\n\x07_offsetB\t\n\x07_length\"\xae\x03\n\x1cPatternFlowEthernetPauseTime\x12\x42\n\x06\x63hoice\x18\x01 \x01(\x0e\x32-.otg.PatternFlowEthernetPauseTime.Choice.EnumH\x00\x88\x01\x01\x12\x12\n\x05value\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x0e\n\x06values\x18\x03 \x03(\r\x12;\n\tincrement\x18\x05 \x01(\x0b\x32(.otg.PatternFlowEthernetPauseTimeCounter\x12;\n\tdecrement\x18\x06 \x01(\x0b\x32(.otg.PatternFlowEthernetPauseTimeCounter\x12?\n\x0bmetric_tags\x18\x07 \x03(\x0b\x32*.otg.PatternFlowEthernetPauseTimeMetricTag\x1aV\n\x06\x43hoice\"L\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\t\n\x05value\x10\x02\x12\n\n\x06values\x10\x03\x12\r\n\tincrement\x10\x04\x12\r\n\tdecrement\x10\x05\x42\t\n\x07_choiceB\x08\n\x06_value\"v\n\x1cPatternFlowTcpSrcPortCounter\x12\x12\n\x05start\x18\x01 \x01(\rH\x00\x88\x01\x01\x12\x11\n\x04step\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x12\n\x05\x63ount\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x08\n\x06_startB\x07\n\x05_stepB\x08\n\x06_count\"|\n\x1ePatternFlowTcpSrcPortMetricTag\x12\x11\n\x04name\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x13\n\x06offset\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x13\n\x06length\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x07\n\x05_nameB\t\n\x07_offsetB\t\n\x07_length\"\x8b\x03\n\x15PatternFlowTcpSrcPort\x12;\n\x06\x63hoice\x18\x01 \x01(\x0e\x32&.otg.PatternFlowTcpSrcPort.Choice.EnumH\x00\x88\x01\x01\x12\x12\n\x05value\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x0e\n\x06values\x18\x03 \x03(\r\x12\x34\n\tincrement\x18\x05 \x01(\x0b\x32!.otg.PatternFlowTcpSrcPortCounter\x12\x34\n\tdecrement\x18\x06 \x01(\x0b\x32!.otg.PatternFlowTcpSrcPortCounter\x12\x38\n\x0bmetric_tags\x18\x07 \x03(\x0b\x32#.otg.PatternFlowTcpSrcPortMetricTag\x1aV\n\x06\x43hoice\"L\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\t\n\x05value\x10\x02\x12\n\n\x06values\x10\x03\x12\r\n\tincrement\x10\x04\x12\r\n\tdecrement\x10\x05\x42\t\n\x07_choiceB\x08\n\x06_value\"v\n\x1cPatternFlowTcpDstPortCounter\x12\x12\n\x05start\x18\x01 \x01(\rH\x00\x88\x01\x01\x12\x11\n\x04step\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x12\n\x05\x63ount\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x08\n\x06_startB\x07\n\x05_stepB\x08\n\x06_count\"|\n\x1ePatternFlowTcpDstPortMetricTag\x12\x11\n\x04name\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x13\n\x06offset\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x13\n\x06length\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x07\n\x05_nameB\t\n\x07_offsetB\t\n\x07_length\"\x8b\x03\n\x15PatternFlowTcpDstPort\x12;\n\x06\x63hoice\x18\x01 \x01(\x0e\x32&.otg.PatternFlowTcpDstPort.Choice.EnumH\x00\x88\x01\x01\x12\x12\n\x05value\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x0e\n\x06values\x18\x03 \x03(\r\x12\x34\n\tincrement\x18\x05 \x01(\x0b\x32!.otg.PatternFlowTcpDstPortCounter\x12\x34\n\tdecrement\x18\x06 \x01(\x0b\x32!.otg.PatternFlowTcpDstPortCounter\x12\x38\n\x0bmetric_tags\x18\x07 \x03(\x0b\x32#.otg.PatternFlowTcpDstPortMetricTag\x1aV\n\x06\x43hoice\"L\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\t\n\x05value\x10\x02\x12\n\n\x06values\x10\x03\x12\r\n\tincrement\x10\x04\x12\r\n\tdecrement\x10\x05\x42\t\n\x07_choiceB\x08\n\x06_value\"u\n\x1bPatternFlowTcpSeqNumCounter\x12\x12\n\x05start\x18\x01 \x01(\rH\x00\x88\x01\x01\x12\x11\n\x04step\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x12\n\x05\x63ount\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x08\n\x06_startB\x07\n\x05_stepB\x08\n\x06_count\"{\n\x1dPatternFlowTcpSeqNumMetricTag\x12\x11\n\x04name\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x13\n\x06offset\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x13\n\x06length\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x07\n\x05_nameB\t\n\x07_offsetB\t\n\x07_length\"\x86\x03\n\x14PatternFlowTcpSeqNum\x12:\n\x06\x63hoice\x18\x01 \x01(\x0e\x32%.otg.PatternFlowTcpSeqNum.Choice.EnumH\x00\x88\x01\x01\x12\x12\n\x05value\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x0e\n\x06values\x18\x03 \x03(\r\x12\x33\n\tincrement\x18\x05 \x01(\x0b\x32 .otg.PatternFlowTcpSeqNumCounter\x12\x33\n\tdecrement\x18\x06 \x01(\x0b\x32 .otg.PatternFlowTcpSeqNumCounter\x12\x37\n\x0bmetric_tags\x18\x07 \x03(\x0b\x32\".otg.PatternFlowTcpSeqNumMetricTag\x1aV\n\x06\x43hoice\"L\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\t\n\x05value\x10\x02\x12\n\n\x06values\x10\x03\x12\r\n\tincrement\x10\x04\x12\r\n\tdecrement\x10\x05\x42\t\n\x07_choiceB\x08\n\x06_value\"u\n\x1bPatternFlowTcpAckNumCounter\x12\x12\n\x05start\x18\x01 \x01(\rH\x00\x88\x01\x01\x12\x11\n\x04step\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x12\n\x05\x63ount\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x08\n\x06_startB\x07\n\x05_stepB\x08\n\x06_count\"{\n\x1dPatternFlowTcpAckNumMetricTag\x12\x11\n\x04name\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x13\n\x06offset\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x13\n\x06length\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x07\n\x05_nameB\t\n\x07_offsetB\t\n\x07_length\"\x86\x03\n\x14PatternFlowTcpAckNum\x12:\n\x06\x63hoice\x18\x01 \x01(\x0e\x32%.otg.PatternFlowTcpAckNum.Choice.EnumH\x00\x88\x01\x01\x12\x12\n\x05value\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x0e\n\x06values\x18\x03 \x03(\r\x12\x33\n\tincrement\x18\x05 \x01(\x0b\x32 .otg.PatternFlowTcpAckNumCounter\x12\x33\n\tdecrement\x18\x06 \x01(\x0b\x32 .otg.PatternFlowTcpAckNumCounter\x12\x37\n\x0bmetric_tags\x18\x07 \x03(\x0b\x32\".otg.PatternFlowTcpAckNumMetricTag\x1aV\n\x06\x43hoice\"L\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\t\n\x05value\x10\x02\x12\n\n\x06values\x10\x03\x12\r\n\tincrement\x10\x04\x12\r\n\tdecrement\x10\x05\x42\t\n\x07_choiceB\x08\n\x06_value\"y\n\x1fPatternFlowTcpDataOffsetCounter\x12\x12\n\x05start\x18\x01 \x01(\rH\x00\x88\x01\x01\x12\x11\n\x04step\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x12\n\x05\x63ount\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x08\n\x06_startB\x07\n\x05_stepB\x08\n\x06_count\"\x7f\n!PatternFlowTcpDataOffsetMetricTag\x12\x11\n\x04name\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x13\n\x06offset\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x13\n\x06length\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x07\n\x05_nameB\t\n\x07_offsetB\t\n\x07_length\"\x9a\x03\n\x18PatternFlowTcpDataOffset\x12>\n\x06\x63hoice\x18\x01 \x01(\x0e\x32).otg.PatternFlowTcpDataOffset.Choice.EnumH\x00\x88\x01\x01\x12\x12\n\x05value\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x0e\n\x06values\x18\x03 \x03(\r\x12\x37\n\tincrement\x18\x05 \x01(\x0b\x32$.otg.PatternFlowTcpDataOffsetCounter\x12\x37\n\tdecrement\x18\x06 \x01(\x0b\x32$.otg.PatternFlowTcpDataOffsetCounter\x12;\n\x0bmetric_tags\x18\x07 \x03(\x0b\x32&.otg.PatternFlowTcpDataOffsetMetricTag\x1aV\n\x06\x43hoice\"L\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\t\n\x05value\x10\x02\x12\n\n\x06values\x10\x03\x12\r\n\tincrement\x10\x04\x12\r\n\tdecrement\x10\x05\x42\t\n\x07_choiceB\x08\n\x06_value\"t\n\x1aPatternFlowTcpEcnNsCounter\x12\x12\n\x05start\x18\x01 \x01(\rH\x00\x88\x01\x01\x12\x11\n\x04step\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x12\n\x05\x63ount\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x08\n\x06_startB\x07\n\x05_stepB\x08\n\x06_count\"z\n\x1cPatternFlowTcpEcnNsMetricTag\x12\x11\n\x04name\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x13\n\x06offset\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x13\n\x06length\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x07\n\x05_nameB\t\n\x07_offsetB\t\n\x07_length\"\x81\x03\n\x13PatternFlowTcpEcnNs\x12\x39\n\x06\x63hoice\x18\x01 \x01(\x0e\x32$.otg.PatternFlowTcpEcnNs.Choice.EnumH\x00\x88\x01\x01\x12\x12\n\x05value\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x0e\n\x06values\x18\x03 \x03(\r\x12\x32\n\tincrement\x18\x05 \x01(\x0b\x32\x1f.otg.PatternFlowTcpEcnNsCounter\x12\x32\n\tdecrement\x18\x06 \x01(\x0b\x32\x1f.otg.PatternFlowTcpEcnNsCounter\x12\x36\n\x0bmetric_tags\x18\x07 \x03(\x0b\x32!.otg.PatternFlowTcpEcnNsMetricTag\x1aV\n\x06\x43hoice\"L\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\t\n\x05value\x10\x02\x12\n\n\x06values\x10\x03\x12\r\n\tincrement\x10\x04\x12\r\n\tdecrement\x10\x05\x42\t\n\x07_choiceB\x08\n\x06_value\"u\n\x1bPatternFlowTcpEcnCwrCounter\x12\x12\n\x05start\x18\x01 \x01(\rH\x00\x88\x01\x01\x12\x11\n\x04step\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x12\n\x05\x63ount\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x08\n\x06_startB\x07\n\x05_stepB\x08\n\x06_count\"{\n\x1dPatternFlowTcpEcnCwrMetricTag\x12\x11\n\x04name\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x13\n\x06offset\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x13\n\x06length\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x07\n\x05_nameB\t\n\x07_offsetB\t\n\x07_length\"\x86\x03\n\x14PatternFlowTcpEcnCwr\x12:\n\x06\x63hoice\x18\x01 \x01(\x0e\x32%.otg.PatternFlowTcpEcnCwr.Choice.EnumH\x00\x88\x01\x01\x12\x12\n\x05value\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x0e\n\x06values\x18\x03 \x03(\r\x12\x33\n\tincrement\x18\x05 \x01(\x0b\x32 .otg.PatternFlowTcpEcnCwrCounter\x12\x33\n\tdecrement\x18\x06 \x01(\x0b\x32 .otg.PatternFlowTcpEcnCwrCounter\x12\x37\n\x0bmetric_tags\x18\x07 \x03(\x0b\x32\".otg.PatternFlowTcpEcnCwrMetricTag\x1aV\n\x06\x43hoice\"L\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\t\n\x05value\x10\x02\x12\n\n\x06values\x10\x03\x12\r\n\tincrement\x10\x04\x12\r\n\tdecrement\x10\x05\x42\t\n\x07_choiceB\x08\n\x06_value\"v\n\x1cPatternFlowTcpEcnEchoCounter\x12\x12\n\x05start\x18\x01 \x01(\rH\x00\x88\x01\x01\x12\x11\n\x04step\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x12\n\x05\x63ount\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x08\n\x06_startB\x07\n\x05_stepB\x08\n\x06_count\"|\n\x1ePatternFlowTcpEcnEchoMetricTag\x12\x11\n\x04name\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x13\n\x06offset\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x13\n\x06length\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x07\n\x05_nameB\t\n\x07_offsetB\t\n\x07_length\"\x8b\x03\n\x15PatternFlowTcpEcnEcho\x12;\n\x06\x63hoice\x18\x01 \x01(\x0e\x32&.otg.PatternFlowTcpEcnEcho.Choice.EnumH\x00\x88\x01\x01\x12\x12\n\x05value\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x0e\n\x06values\x18\x03 \x03(\r\x12\x34\n\tincrement\x18\x05 \x01(\x0b\x32!.otg.PatternFlowTcpEcnEchoCounter\x12\x34\n\tdecrement\x18\x06 \x01(\x0b\x32!.otg.PatternFlowTcpEcnEchoCounter\x12\x38\n\x0bmetric_tags\x18\x07 \x03(\x0b\x32#.otg.PatternFlowTcpEcnEchoMetricTag\x1aV\n\x06\x43hoice\"L\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\t\n\x05value\x10\x02\x12\n\n\x06values\x10\x03\x12\r\n\tincrement\x10\x04\x12\r\n\tdecrement\x10\x05\x42\t\n\x07_choiceB\x08\n\x06_value\"u\n\x1bPatternFlowTcpCtlUrgCounter\x12\x12\n\x05start\x18\x01 \x01(\rH\x00\x88\x01\x01\x12\x11\n\x04step\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x12\n\x05\x63ount\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x08\n\x06_startB\x07\n\x05_stepB\x08\n\x06_count\"{\n\x1dPatternFlowTcpCtlUrgMetricTag\x12\x11\n\x04name\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x13\n\x06offset\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x13\n\x06length\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x07\n\x05_nameB\t\n\x07_offsetB\t\n\x07_length\"\x86\x03\n\x14PatternFlowTcpCtlUrg\x12:\n\x06\x63hoice\x18\x01 \x01(\x0e\x32%.otg.PatternFlowTcpCtlUrg.Choice.EnumH\x00\x88\x01\x01\x12\x12\n\x05value\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x0e\n\x06values\x18\x03 \x03(\r\x12\x33\n\tincrement\x18\x05 \x01(\x0b\x32 .otg.PatternFlowTcpCtlUrgCounter\x12\x33\n\tdecrement\x18\x06 \x01(\x0b\x32 .otg.PatternFlowTcpCtlUrgCounter\x12\x37\n\x0bmetric_tags\x18\x07 \x03(\x0b\x32\".otg.PatternFlowTcpCtlUrgMetricTag\x1aV\n\x06\x43hoice\"L\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\t\n\x05value\x10\x02\x12\n\n\x06values\x10\x03\x12\r\n\tincrement\x10\x04\x12\r\n\tdecrement\x10\x05\x42\t\n\x07_choiceB\x08\n\x06_value\"u\n\x1bPatternFlowTcpCtlAckCounter\x12\x12\n\x05start\x18\x01 \x01(\rH\x00\x88\x01\x01\x12\x11\n\x04step\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x12\n\x05\x63ount\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x08\n\x06_startB\x07\n\x05_stepB\x08\n\x06_count\"{\n\x1dPatternFlowTcpCtlAckMetricTag\x12\x11\n\x04name\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x13\n\x06offset\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x13\n\x06length\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x07\n\x05_nameB\t\n\x07_offsetB\t\n\x07_length\"\x86\x03\n\x14PatternFlowTcpCtlAck\x12:\n\x06\x63hoice\x18\x01 \x01(\x0e\x32%.otg.PatternFlowTcpCtlAck.Choice.EnumH\x00\x88\x01\x01\x12\x12\n\x05value\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x0e\n\x06values\x18\x03 \x03(\r\x12\x33\n\tincrement\x18\x05 \x01(\x0b\x32 .otg.PatternFlowTcpCtlAckCounter\x12\x33\n\tdecrement\x18\x06 \x01(\x0b\x32 .otg.PatternFlowTcpCtlAckCounter\x12\x37\n\x0bmetric_tags\x18\x07 \x03(\x0b\x32\".otg.PatternFlowTcpCtlAckMetricTag\x1aV\n\x06\x43hoice\"L\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\t\n\x05value\x10\x02\x12\n\n\x06values\x10\x03\x12\r\n\tincrement\x10\x04\x12\r\n\tdecrement\x10\x05\x42\t\n\x07_choiceB\x08\n\x06_value\"u\n\x1bPatternFlowTcpCtlPshCounter\x12\x12\n\x05start\x18\x01 \x01(\rH\x00\x88\x01\x01\x12\x11\n\x04step\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x12\n\x05\x63ount\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x08\n\x06_startB\x07\n\x05_stepB\x08\n\x06_count\"{\n\x1dPatternFlowTcpCtlPshMetricTag\x12\x11\n\x04name\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x13\n\x06offset\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x13\n\x06length\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x07\n\x05_nameB\t\n\x07_offsetB\t\n\x07_length\"\x86\x03\n\x14PatternFlowTcpCtlPsh\x12:\n\x06\x63hoice\x18\x01 \x01(\x0e\x32%.otg.PatternFlowTcpCtlPsh.Choice.EnumH\x00\x88\x01\x01\x12\x12\n\x05value\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x0e\n\x06values\x18\x03 \x03(\r\x12\x33\n\tincrement\x18\x05 \x01(\x0b\x32 .otg.PatternFlowTcpCtlPshCounter\x12\x33\n\tdecrement\x18\x06 \x01(\x0b\x32 .otg.PatternFlowTcpCtlPshCounter\x12\x37\n\x0bmetric_tags\x18\x07 \x03(\x0b\x32\".otg.PatternFlowTcpCtlPshMetricTag\x1aV\n\x06\x43hoice\"L\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\t\n\x05value\x10\x02\x12\n\n\x06values\x10\x03\x12\r\n\tincrement\x10\x04\x12\r\n\tdecrement\x10\x05\x42\t\n\x07_choiceB\x08\n\x06_value\"u\n\x1bPatternFlowTcpCtlRstCounter\x12\x12\n\x05start\x18\x01 \x01(\rH\x00\x88\x01\x01\x12\x11\n\x04step\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x12\n\x05\x63ount\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x08\n\x06_startB\x07\n\x05_stepB\x08\n\x06_count\"{\n\x1dPatternFlowTcpCtlRstMetricTag\x12\x11\n\x04name\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x13\n\x06offset\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x13\n\x06length\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x07\n\x05_nameB\t\n\x07_offsetB\t\n\x07_length\"\x86\x03\n\x14PatternFlowTcpCtlRst\x12:\n\x06\x63hoice\x18\x01 \x01(\x0e\x32%.otg.PatternFlowTcpCtlRst.Choice.EnumH\x00\x88\x01\x01\x12\x12\n\x05value\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x0e\n\x06values\x18\x03 \x03(\r\x12\x33\n\tincrement\x18\x05 \x01(\x0b\x32 .otg.PatternFlowTcpCtlRstCounter\x12\x33\n\tdecrement\x18\x06 \x01(\x0b\x32 .otg.PatternFlowTcpCtlRstCounter\x12\x37\n\x0bmetric_tags\x18\x07 \x03(\x0b\x32\".otg.PatternFlowTcpCtlRstMetricTag\x1aV\n\x06\x43hoice\"L\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\t\n\x05value\x10\x02\x12\n\n\x06values\x10\x03\x12\r\n\tincrement\x10\x04\x12\r\n\tdecrement\x10\x05\x42\t\n\x07_choiceB\x08\n\x06_value\"u\n\x1bPatternFlowTcpCtlSynCounter\x12\x12\n\x05start\x18\x01 \x01(\rH\x00\x88\x01\x01\x12\x11\n\x04step\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x12\n\x05\x63ount\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x08\n\x06_startB\x07\n\x05_stepB\x08\n\x06_count\"{\n\x1dPatternFlowTcpCtlSynMetricTag\x12\x11\n\x04name\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x13\n\x06offset\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x13\n\x06length\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x07\n\x05_nameB\t\n\x07_offsetB\t\n\x07_length\"\x86\x03\n\x14PatternFlowTcpCtlSyn\x12:\n\x06\x63hoice\x18\x01 \x01(\x0e\x32%.otg.PatternFlowTcpCtlSyn.Choice.EnumH\x00\x88\x01\x01\x12\x12\n\x05value\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x0e\n\x06values\x18\x03 \x03(\r\x12\x33\n\tincrement\x18\x05 \x01(\x0b\x32 .otg.PatternFlowTcpCtlSynCounter\x12\x33\n\tdecrement\x18\x06 \x01(\x0b\x32 .otg.PatternFlowTcpCtlSynCounter\x12\x37\n\x0bmetric_tags\x18\x07 \x03(\x0b\x32\".otg.PatternFlowTcpCtlSynMetricTag\x1aV\n\x06\x43hoice\"L\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\t\n\x05value\x10\x02\x12\n\n\x06values\x10\x03\x12\r\n\tincrement\x10\x04\x12\r\n\tdecrement\x10\x05\x42\t\n\x07_choiceB\x08\n\x06_value\"u\n\x1bPatternFlowTcpCtlFinCounter\x12\x12\n\x05start\x18\x01 \x01(\rH\x00\x88\x01\x01\x12\x11\n\x04step\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x12\n\x05\x63ount\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x08\n\x06_startB\x07\n\x05_stepB\x08\n\x06_count\"{\n\x1dPatternFlowTcpCtlFinMetricTag\x12\x11\n\x04name\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x13\n\x06offset\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x13\n\x06length\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x07\n\x05_nameB\t\n\x07_offsetB\t\n\x07_length\"\x86\x03\n\x14PatternFlowTcpCtlFin\x12:\n\x06\x63hoice\x18\x01 \x01(\x0e\x32%.otg.PatternFlowTcpCtlFin.Choice.EnumH\x00\x88\x01\x01\x12\x12\n\x05value\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x0e\n\x06values\x18\x03 \x03(\r\x12\x33\n\tincrement\x18\x05 \x01(\x0b\x32 .otg.PatternFlowTcpCtlFinCounter\x12\x33\n\tdecrement\x18\x06 \x01(\x0b\x32 .otg.PatternFlowTcpCtlFinCounter\x12\x37\n\x0bmetric_tags\x18\x07 \x03(\x0b\x32\".otg.PatternFlowTcpCtlFinMetricTag\x1aV\n\x06\x43hoice\"L\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\t\n\x05value\x10\x02\x12\n\n\x06values\x10\x03\x12\r\n\tincrement\x10\x04\x12\r\n\tdecrement\x10\x05\x42\t\n\x07_choiceB\x08\n\x06_value\"u\n\x1bPatternFlowTcpWindowCounter\x12\x12\n\x05start\x18\x01 \x01(\rH\x00\x88\x01\x01\x12\x11\n\x04step\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x12\n\x05\x63ount\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x08\n\x06_startB\x07\n\x05_stepB\x08\n\x06_count\"{\n\x1dPatternFlowTcpWindowMetricTag\x12\x11\n\x04name\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x13\n\x06offset\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x13\n\x06length\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x07\n\x05_nameB\t\n\x07_offsetB\t\n\x07_length\"\x86\x03\n\x14PatternFlowTcpWindow\x12:\n\x06\x63hoice\x18\x01 \x01(\x0e\x32%.otg.PatternFlowTcpWindow.Choice.EnumH\x00\x88\x01\x01\x12\x12\n\x05value\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x0e\n\x06values\x18\x03 \x03(\r\x12\x33\n\tincrement\x18\x05 \x01(\x0b\x32 .otg.PatternFlowTcpWindowCounter\x12\x33\n\tdecrement\x18\x06 \x01(\x0b\x32 .otg.PatternFlowTcpWindowCounter\x12\x37\n\x0bmetric_tags\x18\x07 \x03(\x0b\x32\".otg.PatternFlowTcpWindowMetricTag\x1aV\n\x06\x43hoice\"L\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\t\n\x05value\x10\x02\x12\n\n\x06values\x10\x03\x12\r\n\tincrement\x10\x04\x12\r\n\tdecrement\x10\x05\x42\t\n\x07_choiceB\x08\n\x06_value\"v\n\x1cPatternFlowUdpSrcPortCounter\x12\x12\n\x05start\x18\x01 \x01(\rH\x00\x88\x01\x01\x12\x11\n\x04step\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x12\n\x05\x63ount\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x08\n\x06_startB\x07\n\x05_stepB\x08\n\x06_count\"|\n\x1ePatternFlowUdpSrcPortMetricTag\x12\x11\n\x04name\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x13\n\x06offset\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x13\n\x06length\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x07\n\x05_nameB\t\n\x07_offsetB\t\n\x07_length\"\x8b\x03\n\x15PatternFlowUdpSrcPort\x12;\n\x06\x63hoice\x18\x01 \x01(\x0e\x32&.otg.PatternFlowUdpSrcPort.Choice.EnumH\x00\x88\x01\x01\x12\x12\n\x05value\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x0e\n\x06values\x18\x03 \x03(\r\x12\x34\n\tincrement\x18\x05 \x01(\x0b\x32!.otg.PatternFlowUdpSrcPortCounter\x12\x34\n\tdecrement\x18\x06 \x01(\x0b\x32!.otg.PatternFlowUdpSrcPortCounter\x12\x38\n\x0bmetric_tags\x18\x07 \x03(\x0b\x32#.otg.PatternFlowUdpSrcPortMetricTag\x1aV\n\x06\x43hoice\"L\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\t\n\x05value\x10\x02\x12\n\n\x06values\x10\x03\x12\r\n\tincrement\x10\x04\x12\r\n\tdecrement\x10\x05\x42\t\n\x07_choiceB\x08\n\x06_value\"v\n\x1cPatternFlowUdpDstPortCounter\x12\x12\n\x05start\x18\x01 \x01(\rH\x00\x88\x01\x01\x12\x11\n\x04step\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x12\n\x05\x63ount\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x08\n\x06_startB\x07\n\x05_stepB\x08\n\x06_count\"|\n\x1ePatternFlowUdpDstPortMetricTag\x12\x11\n\x04name\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x13\n\x06offset\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x13\n\x06length\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x07\n\x05_nameB\t\n\x07_offsetB\t\n\x07_length\"\x8b\x03\n\x15PatternFlowUdpDstPort\x12;\n\x06\x63hoice\x18\x01 \x01(\x0e\x32&.otg.PatternFlowUdpDstPort.Choice.EnumH\x00\x88\x01\x01\x12\x12\n\x05value\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x0e\n\x06values\x18\x03 \x03(\r\x12\x34\n\tincrement\x18\x05 \x01(\x0b\x32!.otg.PatternFlowUdpDstPortCounter\x12\x34\n\tdecrement\x18\x06 \x01(\x0b\x32!.otg.PatternFlowUdpDstPortCounter\x12\x38\n\x0bmetric_tags\x18\x07 \x03(\x0b\x32#.otg.PatternFlowUdpDstPortMetricTag\x1aV\n\x06\x43hoice\"L\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\t\n\x05value\x10\x02\x12\n\n\x06values\x10\x03\x12\r\n\tincrement\x10\x04\x12\r\n\tdecrement\x10\x05\x42\t\n\x07_choiceB\x08\n\x06_value\"u\n\x1bPatternFlowUdpLengthCounter\x12\x12\n\x05start\x18\x01 \x01(\rH\x00\x88\x01\x01\x12\x11\n\x04step\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x12\n\x05\x63ount\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x08\n\x06_startB\x07\n\x05_stepB\x08\n\x06_count\"{\n\x1dPatternFlowUdpLengthMetricTag\x12\x11\n\x04name\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x13\n\x06offset\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x13\n\x06length\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x07\n\x05_nameB\t\n\x07_offsetB\t\n\x07_length\"\x86\x03\n\x14PatternFlowUdpLength\x12:\n\x06\x63hoice\x18\x01 \x01(\x0e\x32%.otg.PatternFlowUdpLength.Choice.EnumH\x00\x88\x01\x01\x12\x12\n\x05value\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x0e\n\x06values\x18\x03 \x03(\r\x12\x33\n\tincrement\x18\x05 \x01(\x0b\x32 .otg.PatternFlowUdpLengthCounter\x12\x33\n\tdecrement\x18\x06 \x01(\x0b\x32 .otg.PatternFlowUdpLengthCounter\x12\x37\n\x0bmetric_tags\x18\x07 \x03(\x0b\x32\".otg.PatternFlowUdpLengthMetricTag\x1aV\n\x06\x43hoice\"L\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\t\n\x05value\x10\x02\x12\n\n\x06values\x10\x03\x12\r\n\tincrement\x10\x04\x12\r\n\tdecrement\x10\x05\x42\t\n\x07_choiceB\x08\n\x06_value\"\xca\x02\n\x16PatternFlowUdpChecksum\x12<\n\x06\x63hoice\x18\x01 \x01(\x0e\x32\'.otg.PatternFlowUdpChecksum.Choice.EnumH\x00\x88\x01\x01\x12\x42\n\tgenerated\x18\x02 \x01(\x0e\x32*.otg.PatternFlowUdpChecksum.Generated.EnumH\x01\x88\x01\x01\x12\x13\n\x06\x63ustom\x18\x03 \x01(\rH\x02\x88\x01\x01\x1a<\n\x06\x43hoice\"2\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\r\n\tgenerated\x10\x01\x12\n\n\x06\x63ustom\x10\x02\x1a\x37\n\tGenerated\"*\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\x08\n\x04good\x10\x01\x12\x07\n\x03\x62\x61\x64\x10\x02\x42\t\n\x07_choiceB\x0c\n\n_generatedB\t\n\x07_custom\"~\n$PatternFlowGreChecksumPresentCounter\x12\x12\n\x05start\x18\x01 \x01(\rH\x00\x88\x01\x01\x12\x11\n\x04step\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x12\n\x05\x63ount\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x08\n\x06_startB\x07\n\x05_stepB\x08\n\x06_count\"\x84\x01\n&PatternFlowGreChecksumPresentMetricTag\x12\x11\n\x04name\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x13\n\x06offset\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x13\n\x06length\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x07\n\x05_nameB\t\n\x07_offsetB\t\n\x07_length\"\xb3\x03\n\x1dPatternFlowGreChecksumPresent\x12\x43\n\x06\x63hoice\x18\x01 \x01(\x0e\x32..otg.PatternFlowGreChecksumPresent.Choice.EnumH\x00\x88\x01\x01\x12\x12\n\x05value\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x0e\n\x06values\x18\x03 \x03(\r\x12<\n\tincrement\x18\x05 \x01(\x0b\x32).otg.PatternFlowGreChecksumPresentCounter\x12<\n\tdecrement\x18\x06 \x01(\x0b\x32).otg.PatternFlowGreChecksumPresentCounter\x12@\n\x0bmetric_tags\x18\x07 \x03(\x0b\x32+.otg.PatternFlowGreChecksumPresentMetricTag\x1aV\n\x06\x43hoice\"L\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\t\n\x05value\x10\x02\x12\n\n\x06values\x10\x03\x12\r\n\tincrement\x10\x04\x12\r\n\tdecrement\x10\x05\x42\t\n\x07_choiceB\x08\n\x06_value\"x\n\x1ePatternFlowGreReserved0Counter\x12\x12\n\x05start\x18\x01 \x01(\rH\x00\x88\x01\x01\x12\x11\n\x04step\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x12\n\x05\x63ount\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x08\n\x06_startB\x07\n\x05_stepB\x08\n\x06_count\"~\n PatternFlowGreReserved0MetricTag\x12\x11\n\x04name\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x13\n\x06offset\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x13\n\x06length\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x07\n\x05_nameB\t\n\x07_offsetB\t\n\x07_length\"\x95\x03\n\x17PatternFlowGreReserved0\x12=\n\x06\x63hoice\x18\x01 \x01(\x0e\x32(.otg.PatternFlowGreReserved0.Choice.EnumH\x00\x88\x01\x01\x12\x12\n\x05value\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x0e\n\x06values\x18\x03 \x03(\r\x12\x36\n\tincrement\x18\x05 \x01(\x0b\x32#.otg.PatternFlowGreReserved0Counter\x12\x36\n\tdecrement\x18\x06 \x01(\x0b\x32#.otg.PatternFlowGreReserved0Counter\x12:\n\x0bmetric_tags\x18\x07 \x03(\x0b\x32%.otg.PatternFlowGreReserved0MetricTag\x1aV\n\x06\x43hoice\"L\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\t\n\x05value\x10\x02\x12\n\n\x06values\x10\x03\x12\r\n\tincrement\x10\x04\x12\r\n\tdecrement\x10\x05\x42\t\n\x07_choiceB\x08\n\x06_value\"v\n\x1cPatternFlowGreVersionCounter\x12\x12\n\x05start\x18\x01 \x01(\rH\x00\x88\x01\x01\x12\x11\n\x04step\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x12\n\x05\x63ount\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x08\n\x06_startB\x07\n\x05_stepB\x08\n\x06_count\"|\n\x1ePatternFlowGreVersionMetricTag\x12\x11\n\x04name\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x13\n\x06offset\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x13\n\x06length\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x07\n\x05_nameB\t\n\x07_offsetB\t\n\x07_length\"\x8b\x03\n\x15PatternFlowGreVersion\x12;\n\x06\x63hoice\x18\x01 \x01(\x0e\x32&.otg.PatternFlowGreVersion.Choice.EnumH\x00\x88\x01\x01\x12\x12\n\x05value\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x0e\n\x06values\x18\x03 \x03(\r\x12\x34\n\tincrement\x18\x05 \x01(\x0b\x32!.otg.PatternFlowGreVersionCounter\x12\x34\n\tdecrement\x18\x06 \x01(\x0b\x32!.otg.PatternFlowGreVersionCounter\x12\x38\n\x0bmetric_tags\x18\x07 \x03(\x0b\x32#.otg.PatternFlowGreVersionMetricTag\x1aV\n\x06\x43hoice\"L\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\t\n\x05value\x10\x02\x12\n\n\x06values\x10\x03\x12\r\n\tincrement\x10\x04\x12\r\n\tdecrement\x10\x05\x42\t\n\x07_choiceB\x08\n\x06_value\"w\n\x1dPatternFlowGreProtocolCounter\x12\x12\n\x05start\x18\x01 \x01(\rH\x00\x88\x01\x01\x12\x11\n\x04step\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x12\n\x05\x63ount\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x08\n\x06_startB\x07\n\x05_stepB\x08\n\x06_count\"}\n\x1fPatternFlowGreProtocolMetricTag\x12\x11\n\x04name\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x13\n\x06offset\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x13\n\x06length\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x07\n\x05_nameB\t\n\x07_offsetB\t\n\x07_length\"\x90\x03\n\x16PatternFlowGreProtocol\x12<\n\x06\x63hoice\x18\x01 \x01(\x0e\x32\'.otg.PatternFlowGreProtocol.Choice.EnumH\x00\x88\x01\x01\x12\x12\n\x05value\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x0e\n\x06values\x18\x03 \x03(\r\x12\x35\n\tincrement\x18\x05 \x01(\x0b\x32\".otg.PatternFlowGreProtocolCounter\x12\x35\n\tdecrement\x18\x06 \x01(\x0b\x32\".otg.PatternFlowGreProtocolCounter\x12\x39\n\x0bmetric_tags\x18\x07 \x03(\x0b\x32$.otg.PatternFlowGreProtocolMetricTag\x1aV\n\x06\x43hoice\"L\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\t\n\x05value\x10\x02\x12\n\n\x06values\x10\x03\x12\r\n\tincrement\x10\x04\x12\r\n\tdecrement\x10\x05\x42\t\n\x07_choiceB\x08\n\x06_value\"\xca\x02\n\x16PatternFlowGreChecksum\x12<\n\x06\x63hoice\x18\x01 \x01(\x0e\x32\'.otg.PatternFlowGreChecksum.Choice.EnumH\x00\x88\x01\x01\x12\x42\n\tgenerated\x18\x02 \x01(\x0e\x32*.otg.PatternFlowGreChecksum.Generated.EnumH\x01\x88\x01\x01\x12\x13\n\x06\x63ustom\x18\x03 \x01(\rH\x02\x88\x01\x01\x1a<\n\x06\x43hoice\"2\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\r\n\tgenerated\x10\x01\x12\n\n\x06\x63ustom\x10\x02\x1a\x37\n\tGenerated\"*\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\x08\n\x04good\x10\x01\x12\x07\n\x03\x62\x61\x64\x10\x02\x42\t\n\x07_choiceB\x0c\n\n_generatedB\t\n\x07_custom\"x\n\x1ePatternFlowGreReserved1Counter\x12\x12\n\x05start\x18\x01 \x01(\rH\x00\x88\x01\x01\x12\x11\n\x04step\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x12\n\x05\x63ount\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x08\n\x06_startB\x07\n\x05_stepB\x08\n\x06_count\"~\n PatternFlowGreReserved1MetricTag\x12\x11\n\x04name\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x13\n\x06offset\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x13\n\x06length\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x07\n\x05_nameB\t\n\x07_offsetB\t\n\x07_length\"\x95\x03\n\x17PatternFlowGreReserved1\x12=\n\x06\x63hoice\x18\x01 \x01(\x0e\x32(.otg.PatternFlowGreReserved1.Choice.EnumH\x00\x88\x01\x01\x12\x12\n\x05value\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x0e\n\x06values\x18\x03 \x03(\r\x12\x36\n\tincrement\x18\x05 \x01(\x0b\x32#.otg.PatternFlowGreReserved1Counter\x12\x36\n\tdecrement\x18\x06 \x01(\x0b\x32#.otg.PatternFlowGreReserved1Counter\x12:\n\x0bmetric_tags\x18\x07 \x03(\x0b\x32%.otg.PatternFlowGreReserved1MetricTag\x1aV\n\x06\x43hoice\"L\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\t\n\x05value\x10\x02\x12\n\n\x06values\x10\x03\x12\r\n\tincrement\x10\x04\x12\r\n\tdecrement\x10\x05\x42\t\n\x07_choiceB\x08\n\x06_value\"x\n\x1ePatternFlowGtpv1VersionCounter\x12\x12\n\x05start\x18\x01 \x01(\rH\x00\x88\x01\x01\x12\x11\n\x04step\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x12\n\x05\x63ount\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x08\n\x06_startB\x07\n\x05_stepB\x08\n\x06_count\"~\n PatternFlowGtpv1VersionMetricTag\x12\x11\n\x04name\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x13\n\x06offset\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x13\n\x06length\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x07\n\x05_nameB\t\n\x07_offsetB\t\n\x07_length\"\x95\x03\n\x17PatternFlowGtpv1Version\x12=\n\x06\x63hoice\x18\x01 \x01(\x0e\x32(.otg.PatternFlowGtpv1Version.Choice.EnumH\x00\x88\x01\x01\x12\x12\n\x05value\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x0e\n\x06values\x18\x03 \x03(\r\x12\x36\n\tincrement\x18\x05 \x01(\x0b\x32#.otg.PatternFlowGtpv1VersionCounter\x12\x36\n\tdecrement\x18\x06 \x01(\x0b\x32#.otg.PatternFlowGtpv1VersionCounter\x12:\n\x0bmetric_tags\x18\x07 \x03(\x0b\x32%.otg.PatternFlowGtpv1VersionMetricTag\x1aV\n\x06\x43hoice\"L\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\t\n\x05value\x10\x02\x12\n\n\x06values\x10\x03\x12\r\n\tincrement\x10\x04\x12\r\n\tdecrement\x10\x05\x42\t\n\x07_choiceB\x08\n\x06_value\"}\n#PatternFlowGtpv1ProtocolTypeCounter\x12\x12\n\x05start\x18\x01 \x01(\rH\x00\x88\x01\x01\x12\x11\n\x04step\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x12\n\x05\x63ount\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x08\n\x06_startB\x07\n\x05_stepB\x08\n\x06_count\"\x83\x01\n%PatternFlowGtpv1ProtocolTypeMetricTag\x12\x11\n\x04name\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x13\n\x06offset\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x13\n\x06length\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x07\n\x05_nameB\t\n\x07_offsetB\t\n\x07_length\"\xae\x03\n\x1cPatternFlowGtpv1ProtocolType\x12\x42\n\x06\x63hoice\x18\x01 \x01(\x0e\x32-.otg.PatternFlowGtpv1ProtocolType.Choice.EnumH\x00\x88\x01\x01\x12\x12\n\x05value\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x0e\n\x06values\x18\x03 \x03(\r\x12;\n\tincrement\x18\x05 \x01(\x0b\x32(.otg.PatternFlowGtpv1ProtocolTypeCounter\x12;\n\tdecrement\x18\x06 \x01(\x0b\x32(.otg.PatternFlowGtpv1ProtocolTypeCounter\x12?\n\x0bmetric_tags\x18\x07 \x03(\x0b\x32*.otg.PatternFlowGtpv1ProtocolTypeMetricTag\x1aV\n\x06\x43hoice\"L\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\t\n\x05value\x10\x02\x12\n\n\x06values\x10\x03\x12\r\n\tincrement\x10\x04\x12\r\n\tdecrement\x10\x05\x42\t\n\x07_choiceB\x08\n\x06_value\"y\n\x1fPatternFlowGtpv1ReservedCounter\x12\x12\n\x05start\x18\x01 \x01(\rH\x00\x88\x01\x01\x12\x11\n\x04step\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x12\n\x05\x63ount\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x08\n\x06_startB\x07\n\x05_stepB\x08\n\x06_count\"\x7f\n!PatternFlowGtpv1ReservedMetricTag\x12\x11\n\x04name\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x13\n\x06offset\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x13\n\x06length\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x07\n\x05_nameB\t\n\x07_offsetB\t\n\x07_length\"\x9a\x03\n\x18PatternFlowGtpv1Reserved\x12>\n\x06\x63hoice\x18\x01 \x01(\x0e\x32).otg.PatternFlowGtpv1Reserved.Choice.EnumH\x00\x88\x01\x01\x12\x12\n\x05value\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x0e\n\x06values\x18\x03 \x03(\r\x12\x37\n\tincrement\x18\x05 \x01(\x0b\x32$.otg.PatternFlowGtpv1ReservedCounter\x12\x37\n\tdecrement\x18\x06 \x01(\x0b\x32$.otg.PatternFlowGtpv1ReservedCounter\x12;\n\x0bmetric_tags\x18\x07 \x03(\x0b\x32&.otg.PatternFlowGtpv1ReservedMetricTag\x1aV\n\x06\x43hoice\"L\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\t\n\x05value\x10\x02\x12\n\n\x06values\x10\x03\x12\r\n\tincrement\x10\x04\x12\r\n\tdecrement\x10\x05\x42\t\n\x07_choiceB\x08\n\x06_value\"v\n\x1cPatternFlowGtpv1EFlagCounter\x12\x12\n\x05start\x18\x01 \x01(\rH\x00\x88\x01\x01\x12\x11\n\x04step\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x12\n\x05\x63ount\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x08\n\x06_startB\x07\n\x05_stepB\x08\n\x06_count\"|\n\x1ePatternFlowGtpv1EFlagMetricTag\x12\x11\n\x04name\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x13\n\x06offset\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x13\n\x06length\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x07\n\x05_nameB\t\n\x07_offsetB\t\n\x07_length\"\x8b\x03\n\x15PatternFlowGtpv1EFlag\x12;\n\x06\x63hoice\x18\x01 \x01(\x0e\x32&.otg.PatternFlowGtpv1EFlag.Choice.EnumH\x00\x88\x01\x01\x12\x12\n\x05value\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x0e\n\x06values\x18\x03 \x03(\r\x12\x34\n\tincrement\x18\x05 \x01(\x0b\x32!.otg.PatternFlowGtpv1EFlagCounter\x12\x34\n\tdecrement\x18\x06 \x01(\x0b\x32!.otg.PatternFlowGtpv1EFlagCounter\x12\x38\n\x0bmetric_tags\x18\x07 \x03(\x0b\x32#.otg.PatternFlowGtpv1EFlagMetricTag\x1aV\n\x06\x43hoice\"L\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\t\n\x05value\x10\x02\x12\n\n\x06values\x10\x03\x12\r\n\tincrement\x10\x04\x12\r\n\tdecrement\x10\x05\x42\t\n\x07_choiceB\x08\n\x06_value\"v\n\x1cPatternFlowGtpv1SFlagCounter\x12\x12\n\x05start\x18\x01 \x01(\rH\x00\x88\x01\x01\x12\x11\n\x04step\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x12\n\x05\x63ount\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x08\n\x06_startB\x07\n\x05_stepB\x08\n\x06_count\"|\n\x1ePatternFlowGtpv1SFlagMetricTag\x12\x11\n\x04name\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x13\n\x06offset\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x13\n\x06length\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x07\n\x05_nameB\t\n\x07_offsetB\t\n\x07_length\"\x8b\x03\n\x15PatternFlowGtpv1SFlag\x12;\n\x06\x63hoice\x18\x01 \x01(\x0e\x32&.otg.PatternFlowGtpv1SFlag.Choice.EnumH\x00\x88\x01\x01\x12\x12\n\x05value\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x0e\n\x06values\x18\x03 \x03(\r\x12\x34\n\tincrement\x18\x05 \x01(\x0b\x32!.otg.PatternFlowGtpv1SFlagCounter\x12\x34\n\tdecrement\x18\x06 \x01(\x0b\x32!.otg.PatternFlowGtpv1SFlagCounter\x12\x38\n\x0bmetric_tags\x18\x07 \x03(\x0b\x32#.otg.PatternFlowGtpv1SFlagMetricTag\x1aV\n\x06\x43hoice\"L\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\t\n\x05value\x10\x02\x12\n\n\x06values\x10\x03\x12\r\n\tincrement\x10\x04\x12\r\n\tdecrement\x10\x05\x42\t\n\x07_choiceB\x08\n\x06_value\"w\n\x1dPatternFlowGtpv1PnFlagCounter\x12\x12\n\x05start\x18\x01 \x01(\rH\x00\x88\x01\x01\x12\x11\n\x04step\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x12\n\x05\x63ount\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x08\n\x06_startB\x07\n\x05_stepB\x08\n\x06_count\"}\n\x1fPatternFlowGtpv1PnFlagMetricTag\x12\x11\n\x04name\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x13\n\x06offset\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x13\n\x06length\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x07\n\x05_nameB\t\n\x07_offsetB\t\n\x07_length\"\x90\x03\n\x16PatternFlowGtpv1PnFlag\x12<\n\x06\x63hoice\x18\x01 \x01(\x0e\x32\'.otg.PatternFlowGtpv1PnFlag.Choice.EnumH\x00\x88\x01\x01\x12\x12\n\x05value\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x0e\n\x06values\x18\x03 \x03(\r\x12\x35\n\tincrement\x18\x05 \x01(\x0b\x32\".otg.PatternFlowGtpv1PnFlagCounter\x12\x35\n\tdecrement\x18\x06 \x01(\x0b\x32\".otg.PatternFlowGtpv1PnFlagCounter\x12\x39\n\x0bmetric_tags\x18\x07 \x03(\x0b\x32$.otg.PatternFlowGtpv1PnFlagMetricTag\x1aV\n\x06\x43hoice\"L\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\t\n\x05value\x10\x02\x12\n\n\x06values\x10\x03\x12\r\n\tincrement\x10\x04\x12\r\n\tdecrement\x10\x05\x42\t\n\x07_choiceB\x08\n\x06_value\"|\n\"PatternFlowGtpv1MessageTypeCounter\x12\x12\n\x05start\x18\x01 \x01(\rH\x00\x88\x01\x01\x12\x11\n\x04step\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x12\n\x05\x63ount\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x08\n\x06_startB\x07\n\x05_stepB\x08\n\x06_count\"\x82\x01\n$PatternFlowGtpv1MessageTypeMetricTag\x12\x11\n\x04name\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x13\n\x06offset\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x13\n\x06length\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x07\n\x05_nameB\t\n\x07_offsetB\t\n\x07_length\"\xa9\x03\n\x1bPatternFlowGtpv1MessageType\x12\x41\n\x06\x63hoice\x18\x01 \x01(\x0e\x32,.otg.PatternFlowGtpv1MessageType.Choice.EnumH\x00\x88\x01\x01\x12\x12\n\x05value\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x0e\n\x06values\x18\x03 \x03(\r\x12:\n\tincrement\x18\x05 \x01(\x0b\x32\'.otg.PatternFlowGtpv1MessageTypeCounter\x12:\n\tdecrement\x18\x06 \x01(\x0b\x32\'.otg.PatternFlowGtpv1MessageTypeCounter\x12>\n\x0bmetric_tags\x18\x07 \x03(\x0b\x32).otg.PatternFlowGtpv1MessageTypeMetricTag\x1aV\n\x06\x43hoice\"L\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\t\n\x05value\x10\x02\x12\n\n\x06values\x10\x03\x12\r\n\tincrement\x10\x04\x12\r\n\tdecrement\x10\x05\x42\t\n\x07_choiceB\x08\n\x06_value\"~\n$PatternFlowGtpv1MessageLengthCounter\x12\x12\n\x05start\x18\x01 \x01(\rH\x00\x88\x01\x01\x12\x11\n\x04step\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x12\n\x05\x63ount\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x08\n\x06_startB\x07\n\x05_stepB\x08\n\x06_count\"\x84\x01\n&PatternFlowGtpv1MessageLengthMetricTag\x12\x11\n\x04name\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x13\n\x06offset\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x13\n\x06length\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x07\n\x05_nameB\t\n\x07_offsetB\t\n\x07_length\"\xb3\x03\n\x1dPatternFlowGtpv1MessageLength\x12\x43\n\x06\x63hoice\x18\x01 \x01(\x0e\x32..otg.PatternFlowGtpv1MessageLength.Choice.EnumH\x00\x88\x01\x01\x12\x12\n\x05value\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x0e\n\x06values\x18\x03 \x03(\r\x12<\n\tincrement\x18\x05 \x01(\x0b\x32).otg.PatternFlowGtpv1MessageLengthCounter\x12<\n\tdecrement\x18\x06 \x01(\x0b\x32).otg.PatternFlowGtpv1MessageLengthCounter\x12@\n\x0bmetric_tags\x18\x07 \x03(\x0b\x32+.otg.PatternFlowGtpv1MessageLengthMetricTag\x1aV\n\x06\x43hoice\"L\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\t\n\x05value\x10\x02\x12\n\n\x06values\x10\x03\x12\r\n\tincrement\x10\x04\x12\r\n\tdecrement\x10\x05\x42\t\n\x07_choiceB\x08\n\x06_value\"u\n\x1bPatternFlowGtpv1TeidCounter\x12\x12\n\x05start\x18\x01 \x01(\rH\x00\x88\x01\x01\x12\x11\n\x04step\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x12\n\x05\x63ount\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x08\n\x06_startB\x07\n\x05_stepB\x08\n\x06_count\"{\n\x1dPatternFlowGtpv1TeidMetricTag\x12\x11\n\x04name\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x13\n\x06offset\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x13\n\x06length\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x07\n\x05_nameB\t\n\x07_offsetB\t\n\x07_length\"\x86\x03\n\x14PatternFlowGtpv1Teid\x12:\n\x06\x63hoice\x18\x01 \x01(\x0e\x32%.otg.PatternFlowGtpv1Teid.Choice.EnumH\x00\x88\x01\x01\x12\x12\n\x05value\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x0e\n\x06values\x18\x03 \x03(\r\x12\x33\n\tincrement\x18\x05 \x01(\x0b\x32 .otg.PatternFlowGtpv1TeidCounter\x12\x33\n\tdecrement\x18\x06 \x01(\x0b\x32 .otg.PatternFlowGtpv1TeidCounter\x12\x37\n\x0bmetric_tags\x18\x07 \x03(\x0b\x32\".otg.PatternFlowGtpv1TeidMetricTag\x1aV\n\x06\x43hoice\"L\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\t\n\x05value\x10\x02\x12\n\n\x06values\x10\x03\x12\r\n\tincrement\x10\x04\x12\r\n\tdecrement\x10\x05\x42\t\n\x07_choiceB\x08\n\x06_value\"~\n$PatternFlowGtpv1SquenceNumberCounter\x12\x12\n\x05start\x18\x01 \x01(\rH\x00\x88\x01\x01\x12\x11\n\x04step\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x12\n\x05\x63ount\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x08\n\x06_startB\x07\n\x05_stepB\x08\n\x06_count\"\x84\x01\n&PatternFlowGtpv1SquenceNumberMetricTag\x12\x11\n\x04name\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x13\n\x06offset\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x13\n\x06length\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x07\n\x05_nameB\t\n\x07_offsetB\t\n\x07_length\"\xb3\x03\n\x1dPatternFlowGtpv1SquenceNumber\x12\x43\n\x06\x63hoice\x18\x01 \x01(\x0e\x32..otg.PatternFlowGtpv1SquenceNumber.Choice.EnumH\x00\x88\x01\x01\x12\x12\n\x05value\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x0e\n\x06values\x18\x03 \x03(\r\x12<\n\tincrement\x18\x05 \x01(\x0b\x32).otg.PatternFlowGtpv1SquenceNumberCounter\x12<\n\tdecrement\x18\x06 \x01(\x0b\x32).otg.PatternFlowGtpv1SquenceNumberCounter\x12@\n\x0bmetric_tags\x18\x07 \x03(\x0b\x32+.otg.PatternFlowGtpv1SquenceNumberMetricTag\x1aV\n\x06\x43hoice\"L\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\t\n\x05value\x10\x02\x12\n\n\x06values\x10\x03\x12\r\n\tincrement\x10\x04\x12\r\n\tdecrement\x10\x05\x42\t\n\x07_choiceB\x08\n\x06_value\"{\n!PatternFlowGtpv1NPduNumberCounter\x12\x12\n\x05start\x18\x01 \x01(\rH\x00\x88\x01\x01\x12\x11\n\x04step\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x12\n\x05\x63ount\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x08\n\x06_startB\x07\n\x05_stepB\x08\n\x06_count\"\x81\x01\n#PatternFlowGtpv1NPduNumberMetricTag\x12\x11\n\x04name\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x13\n\x06offset\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x13\n\x06length\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x07\n\x05_nameB\t\n\x07_offsetB\t\n\x07_length\"\xa4\x03\n\x1aPatternFlowGtpv1NPduNumber\x12@\n\x06\x63hoice\x18\x01 \x01(\x0e\x32+.otg.PatternFlowGtpv1NPduNumber.Choice.EnumH\x00\x88\x01\x01\x12\x12\n\x05value\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x0e\n\x06values\x18\x03 \x03(\r\x12\x39\n\tincrement\x18\x05 \x01(\x0b\x32&.otg.PatternFlowGtpv1NPduNumberCounter\x12\x39\n\tdecrement\x18\x06 \x01(\x0b\x32&.otg.PatternFlowGtpv1NPduNumberCounter\x12=\n\x0bmetric_tags\x18\x07 \x03(\x0b\x32(.otg.PatternFlowGtpv1NPduNumberMetricTag\x1aV\n\x06\x43hoice\"L\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\t\n\x05value\x10\x02\x12\n\n\x06values\x10\x03\x12\r\n\tincrement\x10\x04\x12\r\n\tdecrement\x10\x05\x42\t\n\x07_choiceB\x08\n\x06_value\"\x88\x01\n.PatternFlowGtpv1NextExtensionHeaderTypeCounter\x12\x12\n\x05start\x18\x01 \x01(\rH\x00\x88\x01\x01\x12\x11\n\x04step\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x12\n\x05\x63ount\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x08\n\x06_startB\x07\n\x05_stepB\x08\n\x06_count\"\x8e\x01\n0PatternFlowGtpv1NextExtensionHeaderTypeMetricTag\x12\x11\n\x04name\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x13\n\x06offset\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x13\n\x06length\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x07\n\x05_nameB\t\n\x07_offsetB\t\n\x07_length\"\xe5\x03\n\'PatternFlowGtpv1NextExtensionHeaderType\x12M\n\x06\x63hoice\x18\x01 \x01(\x0e\x32\x38.otg.PatternFlowGtpv1NextExtensionHeaderType.Choice.EnumH\x00\x88\x01\x01\x12\x12\n\x05value\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x0e\n\x06values\x18\x03 \x03(\r\x12\x46\n\tincrement\x18\x05 \x01(\x0b\x32\x33.otg.PatternFlowGtpv1NextExtensionHeaderTypeCounter\x12\x46\n\tdecrement\x18\x06 \x01(\x0b\x32\x33.otg.PatternFlowGtpv1NextExtensionHeaderTypeCounter\x12J\n\x0bmetric_tags\x18\x07 \x03(\x0b\x32\x35.otg.PatternFlowGtpv1NextExtensionHeaderTypeMetricTag\x1aV\n\x06\x43hoice\"L\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\t\n\x05value\x10\x02\x12\n\n\x06values\x10\x03\x12\r\n\tincrement\x10\x04\x12\r\n\tdecrement\x10\x05\x42\t\n\x07_choiceB\x08\n\x06_value\"\x87\x01\n-PatternFlowGtpExtensionExtensionLengthCounter\x12\x12\n\x05start\x18\x01 \x01(\rH\x00\x88\x01\x01\x12\x11\n\x04step\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x12\n\x05\x63ount\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x08\n\x06_startB\x07\n\x05_stepB\x08\n\x06_count\"\x8d\x01\n/PatternFlowGtpExtensionExtensionLengthMetricTag\x12\x11\n\x04name\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x13\n\x06offset\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x13\n\x06length\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x07\n\x05_nameB\t\n\x07_offsetB\t\n\x07_length\"\xe0\x03\n&PatternFlowGtpExtensionExtensionLength\x12L\n\x06\x63hoice\x18\x01 \x01(\x0e\x32\x37.otg.PatternFlowGtpExtensionExtensionLength.Choice.EnumH\x00\x88\x01\x01\x12\x12\n\x05value\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x0e\n\x06values\x18\x03 \x03(\r\x12\x45\n\tincrement\x18\x05 \x01(\x0b\x32\x32.otg.PatternFlowGtpExtensionExtensionLengthCounter\x12\x45\n\tdecrement\x18\x06 \x01(\x0b\x32\x32.otg.PatternFlowGtpExtensionExtensionLengthCounter\x12I\n\x0bmetric_tags\x18\x07 \x03(\x0b\x32\x34.otg.PatternFlowGtpExtensionExtensionLengthMetricTag\x1aV\n\x06\x43hoice\"L\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\t\n\x05value\x10\x02\x12\n\n\x06values\x10\x03\x12\r\n\tincrement\x10\x04\x12\r\n\tdecrement\x10\x05\x42\t\n\x07_choiceB\x08\n\x06_value\"\x80\x01\n&PatternFlowGtpExtensionContentsCounter\x12\x12\n\x05start\x18\x01 \x01(\x04H\x00\x88\x01\x01\x12\x11\n\x04step\x18\x02 \x01(\x04H\x01\x88\x01\x01\x12\x12\n\x05\x63ount\x18\x03 \x01(\x04H\x02\x88\x01\x01\x42\x08\n\x06_startB\x07\n\x05_stepB\x08\n\x06_count\"\x86\x01\n(PatternFlowGtpExtensionContentsMetricTag\x12\x11\n\x04name\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x13\n\x06offset\x18\x02 \x01(\x04H\x01\x88\x01\x01\x12\x13\n\x06length\x18\x03 \x01(\x04H\x02\x88\x01\x01\x42\x07\n\x05_nameB\t\n\x07_offsetB\t\n\x07_length\"\xbd\x03\n\x1fPatternFlowGtpExtensionContents\x12\x45\n\x06\x63hoice\x18\x01 \x01(\x0e\x32\x30.otg.PatternFlowGtpExtensionContents.Choice.EnumH\x00\x88\x01\x01\x12\x12\n\x05value\x18\x02 \x01(\x04H\x01\x88\x01\x01\x12\x0e\n\x06values\x18\x03 \x03(\x04\x12>\n\tincrement\x18\x05 \x01(\x0b\x32+.otg.PatternFlowGtpExtensionContentsCounter\x12>\n\tdecrement\x18\x06 \x01(\x0b\x32+.otg.PatternFlowGtpExtensionContentsCounter\x12\x42\n\x0bmetric_tags\x18\x07 \x03(\x0b\x32-.otg.PatternFlowGtpExtensionContentsMetricTag\x1aV\n\x06\x43hoice\"L\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\t\n\x05value\x10\x02\x12\n\n\x06values\x10\x03\x12\r\n\tincrement\x10\x04\x12\r\n\tdecrement\x10\x05\x42\t\n\x07_choiceB\x08\n\x06_value\"\x8b\x01\n1PatternFlowGtpExtensionNextExtensionHeaderCounter\x12\x12\n\x05start\x18\x01 \x01(\rH\x00\x88\x01\x01\x12\x11\n\x04step\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x12\n\x05\x63ount\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x08\n\x06_startB\x07\n\x05_stepB\x08\n\x06_count\"\x91\x01\n3PatternFlowGtpExtensionNextExtensionHeaderMetricTag\x12\x11\n\x04name\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x13\n\x06offset\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x13\n\x06length\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x07\n\x05_nameB\t\n\x07_offsetB\t\n\x07_length\"\xf4\x03\n*PatternFlowGtpExtensionNextExtensionHeader\x12P\n\x06\x63hoice\x18\x01 \x01(\x0e\x32;.otg.PatternFlowGtpExtensionNextExtensionHeader.Choice.EnumH\x00\x88\x01\x01\x12\x12\n\x05value\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x0e\n\x06values\x18\x03 \x03(\r\x12I\n\tincrement\x18\x05 \x01(\x0b\x32\x36.otg.PatternFlowGtpExtensionNextExtensionHeaderCounter\x12I\n\tdecrement\x18\x06 \x01(\x0b\x32\x36.otg.PatternFlowGtpExtensionNextExtensionHeaderCounter\x12M\n\x0bmetric_tags\x18\x07 \x03(\x0b\x32\x38.otg.PatternFlowGtpExtensionNextExtensionHeaderMetricTag\x1aV\n\x06\x43hoice\"L\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\t\n\x05value\x10\x02\x12\n\n\x06values\x10\x03\x12\r\n\tincrement\x10\x04\x12\r\n\tdecrement\x10\x05\x42\t\n\x07_choiceB\x08\n\x06_value\"x\n\x1ePatternFlowGtpv2VersionCounter\x12\x12\n\x05start\x18\x01 \x01(\rH\x00\x88\x01\x01\x12\x11\n\x04step\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x12\n\x05\x63ount\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x08\n\x06_startB\x07\n\x05_stepB\x08\n\x06_count\"~\n PatternFlowGtpv2VersionMetricTag\x12\x11\n\x04name\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x13\n\x06offset\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x13\n\x06length\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x07\n\x05_nameB\t\n\x07_offsetB\t\n\x07_length\"\x95\x03\n\x17PatternFlowGtpv2Version\x12=\n\x06\x63hoice\x18\x01 \x01(\x0e\x32(.otg.PatternFlowGtpv2Version.Choice.EnumH\x00\x88\x01\x01\x12\x12\n\x05value\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x0e\n\x06values\x18\x03 \x03(\r\x12\x36\n\tincrement\x18\x05 \x01(\x0b\x32#.otg.PatternFlowGtpv2VersionCounter\x12\x36\n\tdecrement\x18\x06 \x01(\x0b\x32#.otg.PatternFlowGtpv2VersionCounter\x12:\n\x0bmetric_tags\x18\x07 \x03(\x0b\x32%.otg.PatternFlowGtpv2VersionMetricTag\x1aV\n\x06\x43hoice\"L\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\t\n\x05value\x10\x02\x12\n\n\x06values\x10\x03\x12\r\n\tincrement\x10\x04\x12\r\n\tdecrement\x10\x05\x42\t\n\x07_choiceB\x08\n\x06_value\"\x81\x01\n\'PatternFlowGtpv2PiggybackingFlagCounter\x12\x12\n\x05start\x18\x01 \x01(\rH\x00\x88\x01\x01\x12\x11\n\x04step\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x12\n\x05\x63ount\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x08\n\x06_startB\x07\n\x05_stepB\x08\n\x06_count\"\x87\x01\n)PatternFlowGtpv2PiggybackingFlagMetricTag\x12\x11\n\x04name\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x13\n\x06offset\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x13\n\x06length\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x07\n\x05_nameB\t\n\x07_offsetB\t\n\x07_length\"\xc2\x03\n PatternFlowGtpv2PiggybackingFlag\x12\x46\n\x06\x63hoice\x18\x01 \x01(\x0e\x32\x31.otg.PatternFlowGtpv2PiggybackingFlag.Choice.EnumH\x00\x88\x01\x01\x12\x12\n\x05value\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x0e\n\x06values\x18\x03 \x03(\r\x12?\n\tincrement\x18\x05 \x01(\x0b\x32,.otg.PatternFlowGtpv2PiggybackingFlagCounter\x12?\n\tdecrement\x18\x06 \x01(\x0b\x32,.otg.PatternFlowGtpv2PiggybackingFlagCounter\x12\x43\n\x0bmetric_tags\x18\x07 \x03(\x0b\x32..otg.PatternFlowGtpv2PiggybackingFlagMetricTag\x1aV\n\x06\x43hoice\"L\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\t\n\x05value\x10\x02\x12\n\n\x06values\x10\x03\x12\r\n\tincrement\x10\x04\x12\r\n\tdecrement\x10\x05\x42\t\n\x07_choiceB\x08\n\x06_value\"y\n\x1fPatternFlowGtpv2TeidFlagCounter\x12\x12\n\x05start\x18\x01 \x01(\rH\x00\x88\x01\x01\x12\x11\n\x04step\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x12\n\x05\x63ount\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x08\n\x06_startB\x07\n\x05_stepB\x08\n\x06_count\"\x7f\n!PatternFlowGtpv2TeidFlagMetricTag\x12\x11\n\x04name\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x13\n\x06offset\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x13\n\x06length\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x07\n\x05_nameB\t\n\x07_offsetB\t\n\x07_length\"\x9a\x03\n\x18PatternFlowGtpv2TeidFlag\x12>\n\x06\x63hoice\x18\x01 \x01(\x0e\x32).otg.PatternFlowGtpv2TeidFlag.Choice.EnumH\x00\x88\x01\x01\x12\x12\n\x05value\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x0e\n\x06values\x18\x03 \x03(\r\x12\x37\n\tincrement\x18\x05 \x01(\x0b\x32$.otg.PatternFlowGtpv2TeidFlagCounter\x12\x37\n\tdecrement\x18\x06 \x01(\x0b\x32$.otg.PatternFlowGtpv2TeidFlagCounter\x12;\n\x0bmetric_tags\x18\x07 \x03(\x0b\x32&.otg.PatternFlowGtpv2TeidFlagMetricTag\x1aV\n\x06\x43hoice\"L\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\t\n\x05value\x10\x02\x12\n\n\x06values\x10\x03\x12\r\n\tincrement\x10\x04\x12\r\n\tdecrement\x10\x05\x42\t\n\x07_choiceB\x08\n\x06_value\"w\n\x1dPatternFlowGtpv2Spare1Counter\x12\x12\n\x05start\x18\x01 \x01(\rH\x00\x88\x01\x01\x12\x11\n\x04step\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x12\n\x05\x63ount\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x08\n\x06_startB\x07\n\x05_stepB\x08\n\x06_count\"}\n\x1fPatternFlowGtpv2Spare1MetricTag\x12\x11\n\x04name\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x13\n\x06offset\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x13\n\x06length\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x07\n\x05_nameB\t\n\x07_offsetB\t\n\x07_length\"\x90\x03\n\x16PatternFlowGtpv2Spare1\x12<\n\x06\x63hoice\x18\x01 \x01(\x0e\x32\'.otg.PatternFlowGtpv2Spare1.Choice.EnumH\x00\x88\x01\x01\x12\x12\n\x05value\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x0e\n\x06values\x18\x03 \x03(\r\x12\x35\n\tincrement\x18\x05 \x01(\x0b\x32\".otg.PatternFlowGtpv2Spare1Counter\x12\x35\n\tdecrement\x18\x06 \x01(\x0b\x32\".otg.PatternFlowGtpv2Spare1Counter\x12\x39\n\x0bmetric_tags\x18\x07 \x03(\x0b\x32$.otg.PatternFlowGtpv2Spare1MetricTag\x1aV\n\x06\x43hoice\"L\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\t\n\x05value\x10\x02\x12\n\n\x06values\x10\x03\x12\r\n\tincrement\x10\x04\x12\r\n\tdecrement\x10\x05\x42\t\n\x07_choiceB\x08\n\x06_value\"|\n\"PatternFlowGtpv2MessageTypeCounter\x12\x12\n\x05start\x18\x01 \x01(\rH\x00\x88\x01\x01\x12\x11\n\x04step\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x12\n\x05\x63ount\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x08\n\x06_startB\x07\n\x05_stepB\x08\n\x06_count\"\x82\x01\n$PatternFlowGtpv2MessageTypeMetricTag\x12\x11\n\x04name\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x13\n\x06offset\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x13\n\x06length\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x07\n\x05_nameB\t\n\x07_offsetB\t\n\x07_length\"\xa9\x03\n\x1bPatternFlowGtpv2MessageType\x12\x41\n\x06\x63hoice\x18\x01 \x01(\x0e\x32,.otg.PatternFlowGtpv2MessageType.Choice.EnumH\x00\x88\x01\x01\x12\x12\n\x05value\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x0e\n\x06values\x18\x03 \x03(\r\x12:\n\tincrement\x18\x05 \x01(\x0b\x32\'.otg.PatternFlowGtpv2MessageTypeCounter\x12:\n\tdecrement\x18\x06 \x01(\x0b\x32\'.otg.PatternFlowGtpv2MessageTypeCounter\x12>\n\x0bmetric_tags\x18\x07 \x03(\x0b\x32).otg.PatternFlowGtpv2MessageTypeMetricTag\x1aV\n\x06\x43hoice\"L\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\t\n\x05value\x10\x02\x12\n\n\x06values\x10\x03\x12\r\n\tincrement\x10\x04\x12\r\n\tdecrement\x10\x05\x42\t\n\x07_choiceB\x08\n\x06_value\"~\n$PatternFlowGtpv2MessageLengthCounter\x12\x12\n\x05start\x18\x01 \x01(\rH\x00\x88\x01\x01\x12\x11\n\x04step\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x12\n\x05\x63ount\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x08\n\x06_startB\x07\n\x05_stepB\x08\n\x06_count\"\x84\x01\n&PatternFlowGtpv2MessageLengthMetricTag\x12\x11\n\x04name\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x13\n\x06offset\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x13\n\x06length\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x07\n\x05_nameB\t\n\x07_offsetB\t\n\x07_length\"\xb3\x03\n\x1dPatternFlowGtpv2MessageLength\x12\x43\n\x06\x63hoice\x18\x01 \x01(\x0e\x32..otg.PatternFlowGtpv2MessageLength.Choice.EnumH\x00\x88\x01\x01\x12\x12\n\x05value\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x0e\n\x06values\x18\x03 \x03(\r\x12<\n\tincrement\x18\x05 \x01(\x0b\x32).otg.PatternFlowGtpv2MessageLengthCounter\x12<\n\tdecrement\x18\x06 \x01(\x0b\x32).otg.PatternFlowGtpv2MessageLengthCounter\x12@\n\x0bmetric_tags\x18\x07 \x03(\x0b\x32+.otg.PatternFlowGtpv2MessageLengthMetricTag\x1aV\n\x06\x43hoice\"L\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\t\n\x05value\x10\x02\x12\n\n\x06values\x10\x03\x12\r\n\tincrement\x10\x04\x12\r\n\tdecrement\x10\x05\x42\t\n\x07_choiceB\x08\n\x06_value\"u\n\x1bPatternFlowGtpv2TeidCounter\x12\x12\n\x05start\x18\x01 \x01(\rH\x00\x88\x01\x01\x12\x11\n\x04step\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x12\n\x05\x63ount\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x08\n\x06_startB\x07\n\x05_stepB\x08\n\x06_count\"{\n\x1dPatternFlowGtpv2TeidMetricTag\x12\x11\n\x04name\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x13\n\x06offset\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x13\n\x06length\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x07\n\x05_nameB\t\n\x07_offsetB\t\n\x07_length\"\x86\x03\n\x14PatternFlowGtpv2Teid\x12:\n\x06\x63hoice\x18\x01 \x01(\x0e\x32%.otg.PatternFlowGtpv2Teid.Choice.EnumH\x00\x88\x01\x01\x12\x12\n\x05value\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x0e\n\x06values\x18\x03 \x03(\r\x12\x33\n\tincrement\x18\x05 \x01(\x0b\x32 .otg.PatternFlowGtpv2TeidCounter\x12\x33\n\tdecrement\x18\x06 \x01(\x0b\x32 .otg.PatternFlowGtpv2TeidCounter\x12\x37\n\x0bmetric_tags\x18\x07 \x03(\x0b\x32\".otg.PatternFlowGtpv2TeidMetricTag\x1aV\n\x06\x43hoice\"L\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\t\n\x05value\x10\x02\x12\n\n\x06values\x10\x03\x12\r\n\tincrement\x10\x04\x12\r\n\tdecrement\x10\x05\x42\t\n\x07_choiceB\x08\n\x06_value\"\x7f\n%PatternFlowGtpv2SequenceNumberCounter\x12\x12\n\x05start\x18\x01 \x01(\rH\x00\x88\x01\x01\x12\x11\n\x04step\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x12\n\x05\x63ount\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x08\n\x06_startB\x07\n\x05_stepB\x08\n\x06_count\"\x85\x01\n\'PatternFlowGtpv2SequenceNumberMetricTag\x12\x11\n\x04name\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x13\n\x06offset\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x13\n\x06length\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x07\n\x05_nameB\t\n\x07_offsetB\t\n\x07_length\"\xb8\x03\n\x1ePatternFlowGtpv2SequenceNumber\x12\x44\n\x06\x63hoice\x18\x01 \x01(\x0e\x32/.otg.PatternFlowGtpv2SequenceNumber.Choice.EnumH\x00\x88\x01\x01\x12\x12\n\x05value\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x0e\n\x06values\x18\x03 \x03(\r\x12=\n\tincrement\x18\x05 \x01(\x0b\x32*.otg.PatternFlowGtpv2SequenceNumberCounter\x12=\n\tdecrement\x18\x06 \x01(\x0b\x32*.otg.PatternFlowGtpv2SequenceNumberCounter\x12\x41\n\x0bmetric_tags\x18\x07 \x03(\x0b\x32,.otg.PatternFlowGtpv2SequenceNumberMetricTag\x1aV\n\x06\x43hoice\"L\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\t\n\x05value\x10\x02\x12\n\n\x06values\x10\x03\x12\r\n\tincrement\x10\x04\x12\r\n\tdecrement\x10\x05\x42\t\n\x07_choiceB\x08\n\x06_value\"w\n\x1dPatternFlowGtpv2Spare2Counter\x12\x12\n\x05start\x18\x01 \x01(\rH\x00\x88\x01\x01\x12\x11\n\x04step\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x12\n\x05\x63ount\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x08\n\x06_startB\x07\n\x05_stepB\x08\n\x06_count\"}\n\x1fPatternFlowGtpv2Spare2MetricTag\x12\x11\n\x04name\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x13\n\x06offset\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x13\n\x06length\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x07\n\x05_nameB\t\n\x07_offsetB\t\n\x07_length\"\x90\x03\n\x16PatternFlowGtpv2Spare2\x12<\n\x06\x63hoice\x18\x01 \x01(\x0e\x32\'.otg.PatternFlowGtpv2Spare2.Choice.EnumH\x00\x88\x01\x01\x12\x12\n\x05value\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x0e\n\x06values\x18\x03 \x03(\r\x12\x35\n\tincrement\x18\x05 \x01(\x0b\x32\".otg.PatternFlowGtpv2Spare2Counter\x12\x35\n\tdecrement\x18\x06 \x01(\x0b\x32\".otg.PatternFlowGtpv2Spare2Counter\x12\x39\n\x0bmetric_tags\x18\x07 \x03(\x0b\x32$.otg.PatternFlowGtpv2Spare2MetricTag\x1aV\n\x06\x43hoice\"L\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\t\n\x05value\x10\x02\x12\n\n\x06values\x10\x03\x12\r\n\tincrement\x10\x04\x12\r\n\tdecrement\x10\x05\x42\t\n\x07_choiceB\x08\n\x06_value\"{\n!PatternFlowArpHardwareTypeCounter\x12\x12\n\x05start\x18\x01 \x01(\rH\x00\x88\x01\x01\x12\x11\n\x04step\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x12\n\x05\x63ount\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x08\n\x06_startB\x07\n\x05_stepB\x08\n\x06_count\"\x81\x01\n#PatternFlowArpHardwareTypeMetricTag\x12\x11\n\x04name\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x13\n\x06offset\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x13\n\x06length\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x07\n\x05_nameB\t\n\x07_offsetB\t\n\x07_length\"\xa4\x03\n\x1aPatternFlowArpHardwareType\x12@\n\x06\x63hoice\x18\x01 \x01(\x0e\x32+.otg.PatternFlowArpHardwareType.Choice.EnumH\x00\x88\x01\x01\x12\x12\n\x05value\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x0e\n\x06values\x18\x03 \x03(\r\x12\x39\n\tincrement\x18\x05 \x01(\x0b\x32&.otg.PatternFlowArpHardwareTypeCounter\x12\x39\n\tdecrement\x18\x06 \x01(\x0b\x32&.otg.PatternFlowArpHardwareTypeCounter\x12=\n\x0bmetric_tags\x18\x07 \x03(\x0b\x32(.otg.PatternFlowArpHardwareTypeMetricTag\x1aV\n\x06\x43hoice\"L\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\t\n\x05value\x10\x02\x12\n\n\x06values\x10\x03\x12\r\n\tincrement\x10\x04\x12\r\n\tdecrement\x10\x05\x42\t\n\x07_choiceB\x08\n\x06_value\"{\n!PatternFlowArpProtocolTypeCounter\x12\x12\n\x05start\x18\x01 \x01(\rH\x00\x88\x01\x01\x12\x11\n\x04step\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x12\n\x05\x63ount\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x08\n\x06_startB\x07\n\x05_stepB\x08\n\x06_count\"\x81\x01\n#PatternFlowArpProtocolTypeMetricTag\x12\x11\n\x04name\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x13\n\x06offset\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x13\n\x06length\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x07\n\x05_nameB\t\n\x07_offsetB\t\n\x07_length\"\xa4\x03\n\x1aPatternFlowArpProtocolType\x12@\n\x06\x63hoice\x18\x01 \x01(\x0e\x32+.otg.PatternFlowArpProtocolType.Choice.EnumH\x00\x88\x01\x01\x12\x12\n\x05value\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x0e\n\x06values\x18\x03 \x03(\r\x12\x39\n\tincrement\x18\x05 \x01(\x0b\x32&.otg.PatternFlowArpProtocolTypeCounter\x12\x39\n\tdecrement\x18\x06 \x01(\x0b\x32&.otg.PatternFlowArpProtocolTypeCounter\x12=\n\x0bmetric_tags\x18\x07 \x03(\x0b\x32(.otg.PatternFlowArpProtocolTypeMetricTag\x1aV\n\x06\x43hoice\"L\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\t\n\x05value\x10\x02\x12\n\n\x06values\x10\x03\x12\r\n\tincrement\x10\x04\x12\r\n\tdecrement\x10\x05\x42\t\n\x07_choiceB\x08\n\x06_value\"}\n#PatternFlowArpHardwareLengthCounter\x12\x12\n\x05start\x18\x01 \x01(\rH\x00\x88\x01\x01\x12\x11\n\x04step\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x12\n\x05\x63ount\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x08\n\x06_startB\x07\n\x05_stepB\x08\n\x06_count\"\x83\x01\n%PatternFlowArpHardwareLengthMetricTag\x12\x11\n\x04name\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x13\n\x06offset\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x13\n\x06length\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x07\n\x05_nameB\t\n\x07_offsetB\t\n\x07_length\"\xae\x03\n\x1cPatternFlowArpHardwareLength\x12\x42\n\x06\x63hoice\x18\x01 \x01(\x0e\x32-.otg.PatternFlowArpHardwareLength.Choice.EnumH\x00\x88\x01\x01\x12\x12\n\x05value\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x0e\n\x06values\x18\x03 \x03(\r\x12;\n\tincrement\x18\x05 \x01(\x0b\x32(.otg.PatternFlowArpHardwareLengthCounter\x12;\n\tdecrement\x18\x06 \x01(\x0b\x32(.otg.PatternFlowArpHardwareLengthCounter\x12?\n\x0bmetric_tags\x18\x07 \x03(\x0b\x32*.otg.PatternFlowArpHardwareLengthMetricTag\x1aV\n\x06\x43hoice\"L\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\t\n\x05value\x10\x02\x12\n\n\x06values\x10\x03\x12\r\n\tincrement\x10\x04\x12\r\n\tdecrement\x10\x05\x42\t\n\x07_choiceB\x08\n\x06_value\"}\n#PatternFlowArpProtocolLengthCounter\x12\x12\n\x05start\x18\x01 \x01(\rH\x00\x88\x01\x01\x12\x11\n\x04step\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x12\n\x05\x63ount\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x08\n\x06_startB\x07\n\x05_stepB\x08\n\x06_count\"\x83\x01\n%PatternFlowArpProtocolLengthMetricTag\x12\x11\n\x04name\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x13\n\x06offset\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x13\n\x06length\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x07\n\x05_nameB\t\n\x07_offsetB\t\n\x07_length\"\xae\x03\n\x1cPatternFlowArpProtocolLength\x12\x42\n\x06\x63hoice\x18\x01 \x01(\x0e\x32-.otg.PatternFlowArpProtocolLength.Choice.EnumH\x00\x88\x01\x01\x12\x12\n\x05value\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x0e\n\x06values\x18\x03 \x03(\r\x12;\n\tincrement\x18\x05 \x01(\x0b\x32(.otg.PatternFlowArpProtocolLengthCounter\x12;\n\tdecrement\x18\x06 \x01(\x0b\x32(.otg.PatternFlowArpProtocolLengthCounter\x12?\n\x0bmetric_tags\x18\x07 \x03(\x0b\x32*.otg.PatternFlowArpProtocolLengthMetricTag\x1aV\n\x06\x43hoice\"L\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\t\n\x05value\x10\x02\x12\n\n\x06values\x10\x03\x12\r\n\tincrement\x10\x04\x12\r\n\tdecrement\x10\x05\x42\t\n\x07_choiceB\x08\n\x06_value\"x\n\x1ePatternFlowArpOperationCounter\x12\x12\n\x05start\x18\x01 \x01(\rH\x00\x88\x01\x01\x12\x11\n\x04step\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x12\n\x05\x63ount\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x08\n\x06_startB\x07\n\x05_stepB\x08\n\x06_count\"~\n PatternFlowArpOperationMetricTag\x12\x11\n\x04name\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x13\n\x06offset\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x13\n\x06length\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x07\n\x05_nameB\t\n\x07_offsetB\t\n\x07_length\"\x95\x03\n\x17PatternFlowArpOperation\x12=\n\x06\x63hoice\x18\x01 \x01(\x0e\x32(.otg.PatternFlowArpOperation.Choice.EnumH\x00\x88\x01\x01\x12\x12\n\x05value\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x0e\n\x06values\x18\x03 \x03(\r\x12\x36\n\tincrement\x18\x05 \x01(\x0b\x32#.otg.PatternFlowArpOperationCounter\x12\x36\n\tdecrement\x18\x06 \x01(\x0b\x32#.otg.PatternFlowArpOperationCounter\x12:\n\x0bmetric_tags\x18\x07 \x03(\x0b\x32%.otg.PatternFlowArpOperationMetricTag\x1aV\n\x06\x43hoice\"L\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\t\n\x05value\x10\x02\x12\n\n\x06values\x10\x03\x12\r\n\tincrement\x10\x04\x12\r\n\tdecrement\x10\x05\x42\t\n\x07_choiceB\x08\n\x06_value\"\x81\x01\n\'PatternFlowArpSenderHardwareAddrCounter\x12\x12\n\x05start\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x11\n\x04step\x18\x02 \x01(\tH\x01\x88\x01\x01\x12\x12\n\x05\x63ount\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x08\n\x06_startB\x07\n\x05_stepB\x08\n\x06_count\"\x87\x01\n)PatternFlowArpSenderHardwareAddrMetricTag\x12\x11\n\x04name\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x13\n\x06offset\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x13\n\x06length\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x07\n\x05_nameB\t\n\x07_offsetB\t\n\x07_length\"\xc2\x03\n PatternFlowArpSenderHardwareAddr\x12\x46\n\x06\x63hoice\x18\x01 \x01(\x0e\x32\x31.otg.PatternFlowArpSenderHardwareAddr.Choice.EnumH\x00\x88\x01\x01\x12\x12\n\x05value\x18\x02 \x01(\tH\x01\x88\x01\x01\x12\x0e\n\x06values\x18\x03 \x03(\t\x12?\n\tincrement\x18\x05 \x01(\x0b\x32,.otg.PatternFlowArpSenderHardwareAddrCounter\x12?\n\tdecrement\x18\x06 \x01(\x0b\x32,.otg.PatternFlowArpSenderHardwareAddrCounter\x12\x43\n\x0bmetric_tags\x18\x07 \x03(\x0b\x32..otg.PatternFlowArpSenderHardwareAddrMetricTag\x1aV\n\x06\x43hoice\"L\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\t\n\x05value\x10\x02\x12\n\n\x06values\x10\x03\x12\r\n\tincrement\x10\x04\x12\r\n\tdecrement\x10\x05\x42\t\n\x07_choiceB\x08\n\x06_value\"\x81\x01\n\'PatternFlowArpSenderProtocolAddrCounter\x12\x12\n\x05start\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x11\n\x04step\x18\x02 \x01(\tH\x01\x88\x01\x01\x12\x12\n\x05\x63ount\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x08\n\x06_startB\x07\n\x05_stepB\x08\n\x06_count\"\x87\x01\n)PatternFlowArpSenderProtocolAddrMetricTag\x12\x11\n\x04name\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x13\n\x06offset\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x13\n\x06length\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x07\n\x05_nameB\t\n\x07_offsetB\t\n\x07_length\"\xc2\x03\n PatternFlowArpSenderProtocolAddr\x12\x46\n\x06\x63hoice\x18\x01 \x01(\x0e\x32\x31.otg.PatternFlowArpSenderProtocolAddr.Choice.EnumH\x00\x88\x01\x01\x12\x12\n\x05value\x18\x02 \x01(\tH\x01\x88\x01\x01\x12\x0e\n\x06values\x18\x03 \x03(\t\x12?\n\tincrement\x18\x05 \x01(\x0b\x32,.otg.PatternFlowArpSenderProtocolAddrCounter\x12?\n\tdecrement\x18\x06 \x01(\x0b\x32,.otg.PatternFlowArpSenderProtocolAddrCounter\x12\x43\n\x0bmetric_tags\x18\x07 \x03(\x0b\x32..otg.PatternFlowArpSenderProtocolAddrMetricTag\x1aV\n\x06\x43hoice\"L\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\t\n\x05value\x10\x02\x12\n\n\x06values\x10\x03\x12\r\n\tincrement\x10\x04\x12\r\n\tdecrement\x10\x05\x42\t\n\x07_choiceB\x08\n\x06_value\"\x81\x01\n\'PatternFlowArpTargetHardwareAddrCounter\x12\x12\n\x05start\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x11\n\x04step\x18\x02 \x01(\tH\x01\x88\x01\x01\x12\x12\n\x05\x63ount\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x08\n\x06_startB\x07\n\x05_stepB\x08\n\x06_count\"\x87\x01\n)PatternFlowArpTargetHardwareAddrMetricTag\x12\x11\n\x04name\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x13\n\x06offset\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x13\n\x06length\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x07\n\x05_nameB\t\n\x07_offsetB\t\n\x07_length\"\xc2\x03\n PatternFlowArpTargetHardwareAddr\x12\x46\n\x06\x63hoice\x18\x01 \x01(\x0e\x32\x31.otg.PatternFlowArpTargetHardwareAddr.Choice.EnumH\x00\x88\x01\x01\x12\x12\n\x05value\x18\x02 \x01(\tH\x01\x88\x01\x01\x12\x0e\n\x06values\x18\x03 \x03(\t\x12?\n\tincrement\x18\x05 \x01(\x0b\x32,.otg.PatternFlowArpTargetHardwareAddrCounter\x12?\n\tdecrement\x18\x06 \x01(\x0b\x32,.otg.PatternFlowArpTargetHardwareAddrCounter\x12\x43\n\x0bmetric_tags\x18\x07 \x03(\x0b\x32..otg.PatternFlowArpTargetHardwareAddrMetricTag\x1aV\n\x06\x43hoice\"L\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\t\n\x05value\x10\x02\x12\n\n\x06values\x10\x03\x12\r\n\tincrement\x10\x04\x12\r\n\tdecrement\x10\x05\x42\t\n\x07_choiceB\x08\n\x06_value\"\x81\x01\n\'PatternFlowArpTargetProtocolAddrCounter\x12\x12\n\x05start\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x11\n\x04step\x18\x02 \x01(\tH\x01\x88\x01\x01\x12\x12\n\x05\x63ount\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x08\n\x06_startB\x07\n\x05_stepB\x08\n\x06_count\"\x87\x01\n)PatternFlowArpTargetProtocolAddrMetricTag\x12\x11\n\x04name\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x13\n\x06offset\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x13\n\x06length\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x07\n\x05_nameB\t\n\x07_offsetB\t\n\x07_length\"\xc2\x03\n PatternFlowArpTargetProtocolAddr\x12\x46\n\x06\x63hoice\x18\x01 \x01(\x0e\x32\x31.otg.PatternFlowArpTargetProtocolAddr.Choice.EnumH\x00\x88\x01\x01\x12\x12\n\x05value\x18\x02 \x01(\tH\x01\x88\x01\x01\x12\x0e\n\x06values\x18\x03 \x03(\t\x12?\n\tincrement\x18\x05 \x01(\x0b\x32,.otg.PatternFlowArpTargetProtocolAddrCounter\x12?\n\tdecrement\x18\x06 \x01(\x0b\x32,.otg.PatternFlowArpTargetProtocolAddrCounter\x12\x43\n\x0bmetric_tags\x18\x07 \x03(\x0b\x32..otg.PatternFlowArpTargetProtocolAddrMetricTag\x1aV\n\x06\x43hoice\"L\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\t\n\x05value\x10\x02\x12\n\n\x06values\x10\x03\x12\r\n\tincrement\x10\x04\x12\r\n\tdecrement\x10\x05\x42\t\n\x07_choiceB\x08\n\x06_value\"x\n\x1ePatternFlowIcmpEchoTypeCounter\x12\x12\n\x05start\x18\x01 \x01(\rH\x00\x88\x01\x01\x12\x11\n\x04step\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x12\n\x05\x63ount\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x08\n\x06_startB\x07\n\x05_stepB\x08\n\x06_count\"~\n PatternFlowIcmpEchoTypeMetricTag\x12\x11\n\x04name\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x13\n\x06offset\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x13\n\x06length\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x07\n\x05_nameB\t\n\x07_offsetB\t\n\x07_length\"\x95\x03\n\x17PatternFlowIcmpEchoType\x12=\n\x06\x63hoice\x18\x01 \x01(\x0e\x32(.otg.PatternFlowIcmpEchoType.Choice.EnumH\x00\x88\x01\x01\x12\x12\n\x05value\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x0e\n\x06values\x18\x03 \x03(\r\x12\x36\n\tincrement\x18\x05 \x01(\x0b\x32#.otg.PatternFlowIcmpEchoTypeCounter\x12\x36\n\tdecrement\x18\x06 \x01(\x0b\x32#.otg.PatternFlowIcmpEchoTypeCounter\x12:\n\x0bmetric_tags\x18\x07 \x03(\x0b\x32%.otg.PatternFlowIcmpEchoTypeMetricTag\x1aV\n\x06\x43hoice\"L\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\t\n\x05value\x10\x02\x12\n\n\x06values\x10\x03\x12\r\n\tincrement\x10\x04\x12\r\n\tdecrement\x10\x05\x42\t\n\x07_choiceB\x08\n\x06_value\"x\n\x1ePatternFlowIcmpEchoCodeCounter\x12\x12\n\x05start\x18\x01 \x01(\rH\x00\x88\x01\x01\x12\x11\n\x04step\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x12\n\x05\x63ount\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x08\n\x06_startB\x07\n\x05_stepB\x08\n\x06_count\"~\n PatternFlowIcmpEchoCodeMetricTag\x12\x11\n\x04name\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x13\n\x06offset\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x13\n\x06length\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x07\n\x05_nameB\t\n\x07_offsetB\t\n\x07_length\"\x95\x03\n\x17PatternFlowIcmpEchoCode\x12=\n\x06\x63hoice\x18\x01 \x01(\x0e\x32(.otg.PatternFlowIcmpEchoCode.Choice.EnumH\x00\x88\x01\x01\x12\x12\n\x05value\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x0e\n\x06values\x18\x03 \x03(\r\x12\x36\n\tincrement\x18\x05 \x01(\x0b\x32#.otg.PatternFlowIcmpEchoCodeCounter\x12\x36\n\tdecrement\x18\x06 \x01(\x0b\x32#.otg.PatternFlowIcmpEchoCodeCounter\x12:\n\x0bmetric_tags\x18\x07 \x03(\x0b\x32%.otg.PatternFlowIcmpEchoCodeMetricTag\x1aV\n\x06\x43hoice\"L\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\t\n\x05value\x10\x02\x12\n\n\x06values\x10\x03\x12\r\n\tincrement\x10\x04\x12\r\n\tdecrement\x10\x05\x42\t\n\x07_choiceB\x08\n\x06_value\"\xd9\x02\n\x1bPatternFlowIcmpEchoChecksum\x12\x41\n\x06\x63hoice\x18\x01 \x01(\x0e\x32,.otg.PatternFlowIcmpEchoChecksum.Choice.EnumH\x00\x88\x01\x01\x12G\n\tgenerated\x18\x02 \x01(\x0e\x32/.otg.PatternFlowIcmpEchoChecksum.Generated.EnumH\x01\x88\x01\x01\x12\x13\n\x06\x63ustom\x18\x03 \x01(\rH\x02\x88\x01\x01\x1a<\n\x06\x43hoice\"2\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\r\n\tgenerated\x10\x01\x12\n\n\x06\x63ustom\x10\x02\x1a\x37\n\tGenerated\"*\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\x08\n\x04good\x10\x01\x12\x07\n\x03\x62\x61\x64\x10\x02\x42\t\n\x07_choiceB\x0c\n\n_generatedB\t\n\x07_custom\"~\n$PatternFlowIcmpEchoIdentifierCounter\x12\x12\n\x05start\x18\x01 \x01(\rH\x00\x88\x01\x01\x12\x11\n\x04step\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x12\n\x05\x63ount\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x08\n\x06_startB\x07\n\x05_stepB\x08\n\x06_count\"\x84\x01\n&PatternFlowIcmpEchoIdentifierMetricTag\x12\x11\n\x04name\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x13\n\x06offset\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x13\n\x06length\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x07\n\x05_nameB\t\n\x07_offsetB\t\n\x07_length\"\xb3\x03\n\x1dPatternFlowIcmpEchoIdentifier\x12\x43\n\x06\x63hoice\x18\x01 \x01(\x0e\x32..otg.PatternFlowIcmpEchoIdentifier.Choice.EnumH\x00\x88\x01\x01\x12\x12\n\x05value\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x0e\n\x06values\x18\x03 \x03(\r\x12<\n\tincrement\x18\x05 \x01(\x0b\x32).otg.PatternFlowIcmpEchoIdentifierCounter\x12<\n\tdecrement\x18\x06 \x01(\x0b\x32).otg.PatternFlowIcmpEchoIdentifierCounter\x12@\n\x0bmetric_tags\x18\x07 \x03(\x0b\x32+.otg.PatternFlowIcmpEchoIdentifierMetricTag\x1aV\n\x06\x43hoice\"L\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\t\n\x05value\x10\x02\x12\n\n\x06values\x10\x03\x12\r\n\tincrement\x10\x04\x12\r\n\tdecrement\x10\x05\x42\t\n\x07_choiceB\x08\n\x06_value\"\x82\x01\n(PatternFlowIcmpEchoSequenceNumberCounter\x12\x12\n\x05start\x18\x01 \x01(\rH\x00\x88\x01\x01\x12\x11\n\x04step\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x12\n\x05\x63ount\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x08\n\x06_startB\x07\n\x05_stepB\x08\n\x06_count\"\x88\x01\n*PatternFlowIcmpEchoSequenceNumberMetricTag\x12\x11\n\x04name\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x13\n\x06offset\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x13\n\x06length\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x07\n\x05_nameB\t\n\x07_offsetB\t\n\x07_length\"\xc7\x03\n!PatternFlowIcmpEchoSequenceNumber\x12G\n\x06\x63hoice\x18\x01 \x01(\x0e\x32\x32.otg.PatternFlowIcmpEchoSequenceNumber.Choice.EnumH\x00\x88\x01\x01\x12\x12\n\x05value\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x0e\n\x06values\x18\x03 \x03(\r\x12@\n\tincrement\x18\x05 \x01(\x0b\x32-.otg.PatternFlowIcmpEchoSequenceNumberCounter\x12@\n\tdecrement\x18\x06 \x01(\x0b\x32-.otg.PatternFlowIcmpEchoSequenceNumberCounter\x12\x44\n\x0bmetric_tags\x18\x07 \x03(\x0b\x32/.otg.PatternFlowIcmpEchoSequenceNumberMetricTag\x1aV\n\x06\x43hoice\"L\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\t\n\x05value\x10\x02\x12\n\n\x06values\x10\x03\x12\r\n\tincrement\x10\x04\x12\r\n\tdecrement\x10\x05\x42\t\n\x07_choiceB\x08\n\x06_value\"\xdf\x02\n\x1dPatternFlowIcmpCommonChecksum\x12\x43\n\x06\x63hoice\x18\x01 \x01(\x0e\x32..otg.PatternFlowIcmpCommonChecksum.Choice.EnumH\x00\x88\x01\x01\x12I\n\tgenerated\x18\x02 \x01(\x0e\x32\x31.otg.PatternFlowIcmpCommonChecksum.Generated.EnumH\x01\x88\x01\x01\x12\x13\n\x06\x63ustom\x18\x03 \x01(\rH\x02\x88\x01\x01\x1a<\n\x06\x43hoice\"2\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\r\n\tgenerated\x10\x01\x12\n\n\x06\x63ustom\x10\x02\x1a\x37\n\tGenerated\"*\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\x08\n\x04good\x10\x01\x12\x07\n\x03\x62\x61\x64\x10\x02\x42\t\n\x07_choiceB\x0c\n\n_generatedB\t\n\x07_custom\"\x84\x01\n*PatternFlowIcmpNextFieldsIdentifierCounter\x12\x12\n\x05start\x18\x01 \x01(\rH\x00\x88\x01\x01\x12\x11\n\x04step\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x12\n\x05\x63ount\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x08\n\x06_startB\x07\n\x05_stepB\x08\n\x06_count\"\x8a\x01\n,PatternFlowIcmpNextFieldsIdentifierMetricTag\x12\x11\n\x04name\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x13\n\x06offset\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x13\n\x06length\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x07\n\x05_nameB\t\n\x07_offsetB\t\n\x07_length\"\xd1\x03\n#PatternFlowIcmpNextFieldsIdentifier\x12I\n\x06\x63hoice\x18\x01 \x01(\x0e\x32\x34.otg.PatternFlowIcmpNextFieldsIdentifier.Choice.EnumH\x00\x88\x01\x01\x12\x12\n\x05value\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x0e\n\x06values\x18\x03 \x03(\r\x12\x42\n\tincrement\x18\x05 \x01(\x0b\x32/.otg.PatternFlowIcmpNextFieldsIdentifierCounter\x12\x42\n\tdecrement\x18\x06 \x01(\x0b\x32/.otg.PatternFlowIcmpNextFieldsIdentifierCounter\x12\x46\n\x0bmetric_tags\x18\x07 \x03(\x0b\x32\x31.otg.PatternFlowIcmpNextFieldsIdentifierMetricTag\x1aV\n\x06\x43hoice\"L\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\t\n\x05value\x10\x02\x12\n\n\x06values\x10\x03\x12\r\n\tincrement\x10\x04\x12\r\n\tdecrement\x10\x05\x42\t\n\x07_choiceB\x08\n\x06_value\"\x88\x01\n.PatternFlowIcmpNextFieldsSequenceNumberCounter\x12\x12\n\x05start\x18\x01 \x01(\rH\x00\x88\x01\x01\x12\x11\n\x04step\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x12\n\x05\x63ount\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x08\n\x06_startB\x07\n\x05_stepB\x08\n\x06_count\"\x8e\x01\n0PatternFlowIcmpNextFieldsSequenceNumberMetricTag\x12\x11\n\x04name\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x13\n\x06offset\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x13\n\x06length\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x07\n\x05_nameB\t\n\x07_offsetB\t\n\x07_length\"\xe5\x03\n\'PatternFlowIcmpNextFieldsSequenceNumber\x12M\n\x06\x63hoice\x18\x01 \x01(\x0e\x32\x38.otg.PatternFlowIcmpNextFieldsSequenceNumber.Choice.EnumH\x00\x88\x01\x01\x12\x12\n\x05value\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x0e\n\x06values\x18\x03 \x03(\r\x12\x46\n\tincrement\x18\x05 \x01(\x0b\x32\x33.otg.PatternFlowIcmpNextFieldsSequenceNumberCounter\x12\x46\n\tdecrement\x18\x06 \x01(\x0b\x32\x33.otg.PatternFlowIcmpNextFieldsSequenceNumberCounter\x12J\n\x0bmetric_tags\x18\x07 \x03(\x0b\x32\x35.otg.PatternFlowIcmpNextFieldsSequenceNumberMetricTag\x1aV\n\x06\x43hoice\"L\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\t\n\x05value\x10\x02\x12\n\n\x06values\x10\x03\x12\r\n\tincrement\x10\x04\x12\r\n\tdecrement\x10\x05\x42\t\n\x07_choiceB\x08\n\x06_value\"z\n PatternFlowIcmpv6EchoTypeCounter\x12\x12\n\x05start\x18\x01 \x01(\rH\x00\x88\x01\x01\x12\x11\n\x04step\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x12\n\x05\x63ount\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x08\n\x06_startB\x07\n\x05_stepB\x08\n\x06_count\"\x80\x01\n\"PatternFlowIcmpv6EchoTypeMetricTag\x12\x11\n\x04name\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x13\n\x06offset\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x13\n\x06length\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x07\n\x05_nameB\t\n\x07_offsetB\t\n\x07_length\"\x9f\x03\n\x19PatternFlowIcmpv6EchoType\x12?\n\x06\x63hoice\x18\x01 \x01(\x0e\x32*.otg.PatternFlowIcmpv6EchoType.Choice.EnumH\x00\x88\x01\x01\x12\x12\n\x05value\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x0e\n\x06values\x18\x03 \x03(\r\x12\x38\n\tincrement\x18\x05 \x01(\x0b\x32%.otg.PatternFlowIcmpv6EchoTypeCounter\x12\x38\n\tdecrement\x18\x06 \x01(\x0b\x32%.otg.PatternFlowIcmpv6EchoTypeCounter\x12<\n\x0bmetric_tags\x18\x07 \x03(\x0b\x32\'.otg.PatternFlowIcmpv6EchoTypeMetricTag\x1aV\n\x06\x43hoice\"L\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\t\n\x05value\x10\x02\x12\n\n\x06values\x10\x03\x12\r\n\tincrement\x10\x04\x12\r\n\tdecrement\x10\x05\x42\t\n\x07_choiceB\x08\n\x06_value\"z\n PatternFlowIcmpv6EchoCodeCounter\x12\x12\n\x05start\x18\x01 \x01(\rH\x00\x88\x01\x01\x12\x11\n\x04step\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x12\n\x05\x63ount\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x08\n\x06_startB\x07\n\x05_stepB\x08\n\x06_count\"\x80\x01\n\"PatternFlowIcmpv6EchoCodeMetricTag\x12\x11\n\x04name\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x13\n\x06offset\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x13\n\x06length\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x07\n\x05_nameB\t\n\x07_offsetB\t\n\x07_length\"\x9f\x03\n\x19PatternFlowIcmpv6EchoCode\x12?\n\x06\x63hoice\x18\x01 \x01(\x0e\x32*.otg.PatternFlowIcmpv6EchoCode.Choice.EnumH\x00\x88\x01\x01\x12\x12\n\x05value\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x0e\n\x06values\x18\x03 \x03(\r\x12\x38\n\tincrement\x18\x05 \x01(\x0b\x32%.otg.PatternFlowIcmpv6EchoCodeCounter\x12\x38\n\tdecrement\x18\x06 \x01(\x0b\x32%.otg.PatternFlowIcmpv6EchoCodeCounter\x12<\n\x0bmetric_tags\x18\x07 \x03(\x0b\x32\'.otg.PatternFlowIcmpv6EchoCodeMetricTag\x1aV\n\x06\x43hoice\"L\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\t\n\x05value\x10\x02\x12\n\n\x06values\x10\x03\x12\r\n\tincrement\x10\x04\x12\r\n\tdecrement\x10\x05\x42\t\n\x07_choiceB\x08\n\x06_value\"\x80\x01\n&PatternFlowIcmpv6EchoIdentifierCounter\x12\x12\n\x05start\x18\x01 \x01(\rH\x00\x88\x01\x01\x12\x11\n\x04step\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x12\n\x05\x63ount\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x08\n\x06_startB\x07\n\x05_stepB\x08\n\x06_count\"\x86\x01\n(PatternFlowIcmpv6EchoIdentifierMetricTag\x12\x11\n\x04name\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x13\n\x06offset\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x13\n\x06length\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x07\n\x05_nameB\t\n\x07_offsetB\t\n\x07_length\"\xbd\x03\n\x1fPatternFlowIcmpv6EchoIdentifier\x12\x45\n\x06\x63hoice\x18\x01 \x01(\x0e\x32\x30.otg.PatternFlowIcmpv6EchoIdentifier.Choice.EnumH\x00\x88\x01\x01\x12\x12\n\x05value\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x0e\n\x06values\x18\x03 \x03(\r\x12>\n\tincrement\x18\x05 \x01(\x0b\x32+.otg.PatternFlowIcmpv6EchoIdentifierCounter\x12>\n\tdecrement\x18\x06 \x01(\x0b\x32+.otg.PatternFlowIcmpv6EchoIdentifierCounter\x12\x42\n\x0bmetric_tags\x18\x07 \x03(\x0b\x32-.otg.PatternFlowIcmpv6EchoIdentifierMetricTag\x1aV\n\x06\x43hoice\"L\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\t\n\x05value\x10\x02\x12\n\n\x06values\x10\x03\x12\r\n\tincrement\x10\x04\x12\r\n\tdecrement\x10\x05\x42\t\n\x07_choiceB\x08\n\x06_value\"\x84\x01\n*PatternFlowIcmpv6EchoSequenceNumberCounter\x12\x12\n\x05start\x18\x01 \x01(\rH\x00\x88\x01\x01\x12\x11\n\x04step\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x12\n\x05\x63ount\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x08\n\x06_startB\x07\n\x05_stepB\x08\n\x06_count\"\x8a\x01\n,PatternFlowIcmpv6EchoSequenceNumberMetricTag\x12\x11\n\x04name\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x13\n\x06offset\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x13\n\x06length\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x07\n\x05_nameB\t\n\x07_offsetB\t\n\x07_length\"\xd1\x03\n#PatternFlowIcmpv6EchoSequenceNumber\x12I\n\x06\x63hoice\x18\x01 \x01(\x0e\x32\x34.otg.PatternFlowIcmpv6EchoSequenceNumber.Choice.EnumH\x00\x88\x01\x01\x12\x12\n\x05value\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x0e\n\x06values\x18\x03 \x03(\r\x12\x42\n\tincrement\x18\x05 \x01(\x0b\x32/.otg.PatternFlowIcmpv6EchoSequenceNumberCounter\x12\x42\n\tdecrement\x18\x06 \x01(\x0b\x32/.otg.PatternFlowIcmpv6EchoSequenceNumberCounter\x12\x46\n\x0bmetric_tags\x18\x07 \x03(\x0b\x32\x31.otg.PatternFlowIcmpv6EchoSequenceNumberMetricTag\x1aV\n\x06\x43hoice\"L\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\t\n\x05value\x10\x02\x12\n\n\x06values\x10\x03\x12\r\n\tincrement\x10\x04\x12\r\n\tdecrement\x10\x05\x42\t\n\x07_choiceB\x08\n\x06_value\"\xdf\x02\n\x1dPatternFlowIcmpv6EchoChecksum\x12\x43\n\x06\x63hoice\x18\x01 \x01(\x0e\x32..otg.PatternFlowIcmpv6EchoChecksum.Choice.EnumH\x00\x88\x01\x01\x12I\n\tgenerated\x18\x02 \x01(\x0e\x32\x31.otg.PatternFlowIcmpv6EchoChecksum.Generated.EnumH\x01\x88\x01\x01\x12\x13\n\x06\x63ustom\x18\x03 \x01(\rH\x02\x88\x01\x01\x1a<\n\x06\x43hoice\"2\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\r\n\tgenerated\x10\x01\x12\n\n\x06\x63ustom\x10\x02\x1a\x37\n\tGenerated\"*\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\x08\n\x04good\x10\x01\x12\x07\n\x03\x62\x61\x64\x10\x02\x42\t\n\x07_choiceB\x0c\n\n_generatedB\t\n\x07_custom\"\xe5\x02\n\x1fPatternFlowIcmpv6CommonChecksum\x12\x45\n\x06\x63hoice\x18\x01 \x01(\x0e\x32\x30.otg.PatternFlowIcmpv6CommonChecksum.Choice.EnumH\x00\x88\x01\x01\x12K\n\tgenerated\x18\x02 \x01(\x0e\x32\x33.otg.PatternFlowIcmpv6CommonChecksum.Generated.EnumH\x01\x88\x01\x01\x12\x13\n\x06\x63ustom\x18\x03 \x01(\rH\x02\x88\x01\x01\x1a<\n\x06\x43hoice\"2\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\r\n\tgenerated\x10\x01\x12\n\n\x06\x63ustom\x10\x02\x1a\x37\n\tGenerated\"*\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\x08\n\x04good\x10\x01\x12\x07\n\x03\x62\x61\x64\x10\x02\x42\t\n\x07_choiceB\x0c\n\n_generatedB\t\n\x07_custom\"v\n\x1cPatternFlowPppAddressCounter\x12\x12\n\x05start\x18\x01 \x01(\rH\x00\x88\x01\x01\x12\x11\n\x04step\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x12\n\x05\x63ount\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x08\n\x06_startB\x07\n\x05_stepB\x08\n\x06_count\"|\n\x1ePatternFlowPppAddressMetricTag\x12\x11\n\x04name\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x13\n\x06offset\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x13\n\x06length\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x07\n\x05_nameB\t\n\x07_offsetB\t\n\x07_length\"\x8b\x03\n\x15PatternFlowPppAddress\x12;\n\x06\x63hoice\x18\x01 \x01(\x0e\x32&.otg.PatternFlowPppAddress.Choice.EnumH\x00\x88\x01\x01\x12\x12\n\x05value\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x0e\n\x06values\x18\x03 \x03(\r\x12\x34\n\tincrement\x18\x05 \x01(\x0b\x32!.otg.PatternFlowPppAddressCounter\x12\x34\n\tdecrement\x18\x06 \x01(\x0b\x32!.otg.PatternFlowPppAddressCounter\x12\x38\n\x0bmetric_tags\x18\x07 \x03(\x0b\x32#.otg.PatternFlowPppAddressMetricTag\x1aV\n\x06\x43hoice\"L\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\t\n\x05value\x10\x02\x12\n\n\x06values\x10\x03\x12\r\n\tincrement\x10\x04\x12\r\n\tdecrement\x10\x05\x42\t\n\x07_choiceB\x08\n\x06_value\"v\n\x1cPatternFlowPppControlCounter\x12\x12\n\x05start\x18\x01 \x01(\rH\x00\x88\x01\x01\x12\x11\n\x04step\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x12\n\x05\x63ount\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x08\n\x06_startB\x07\n\x05_stepB\x08\n\x06_count\"|\n\x1ePatternFlowPppControlMetricTag\x12\x11\n\x04name\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x13\n\x06offset\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x13\n\x06length\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x07\n\x05_nameB\t\n\x07_offsetB\t\n\x07_length\"\x8b\x03\n\x15PatternFlowPppControl\x12;\n\x06\x63hoice\x18\x01 \x01(\x0e\x32&.otg.PatternFlowPppControl.Choice.EnumH\x00\x88\x01\x01\x12\x12\n\x05value\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x0e\n\x06values\x18\x03 \x03(\r\x12\x34\n\tincrement\x18\x05 \x01(\x0b\x32!.otg.PatternFlowPppControlCounter\x12\x34\n\tdecrement\x18\x06 \x01(\x0b\x32!.otg.PatternFlowPppControlCounter\x12\x38\n\x0bmetric_tags\x18\x07 \x03(\x0b\x32#.otg.PatternFlowPppControlMetricTag\x1aV\n\x06\x43hoice\"L\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\t\n\x05value\x10\x02\x12\n\n\x06values\x10\x03\x12\r\n\tincrement\x10\x04\x12\r\n\tdecrement\x10\x05\x42\t\n\x07_choiceB\x08\n\x06_value\"{\n!PatternFlowPppProtocolTypeCounter\x12\x12\n\x05start\x18\x01 \x01(\rH\x00\x88\x01\x01\x12\x11\n\x04step\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x12\n\x05\x63ount\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x08\n\x06_startB\x07\n\x05_stepB\x08\n\x06_count\"\x81\x01\n#PatternFlowPppProtocolTypeMetricTag\x12\x11\n\x04name\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x13\n\x06offset\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x13\n\x06length\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x07\n\x05_nameB\t\n\x07_offsetB\t\n\x07_length\"\xca\x03\n\x1aPatternFlowPppProtocolType\x12@\n\x06\x63hoice\x18\x01 \x01(\x0e\x32+.otg.PatternFlowPppProtocolType.Choice.EnumH\x00\x88\x01\x01\x12\x12\n\x05value\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x0e\n\x06values\x18\x03 \x03(\r\x12\x11\n\x04\x61uto\x18\x04 \x01(\rH\x02\x88\x01\x01\x12\x39\n\tincrement\x18\x06 \x01(\x0b\x32&.otg.PatternFlowPppProtocolTypeCounter\x12\x39\n\tdecrement\x18\x07 \x01(\x0b\x32&.otg.PatternFlowPppProtocolTypeCounter\x12=\n\x0bmetric_tags\x18\x08 \x03(\x0b\x32(.otg.PatternFlowPppProtocolTypeMetricTag\x1a`\n\x06\x43hoice\"V\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\t\n\x05value\x10\x02\x12\n\n\x06values\x10\x03\x12\x08\n\x04\x61uto\x10\x01\x12\r\n\tincrement\x10\x04\x12\r\n\tdecrement\x10\x05\x42\t\n\x07_choiceB\x08\n\x06_valueB\x07\n\x05_auto\"y\n\x1fPatternFlowIgmpv1VersionCounter\x12\x12\n\x05start\x18\x01 \x01(\rH\x00\x88\x01\x01\x12\x11\n\x04step\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x12\n\x05\x63ount\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x08\n\x06_startB\x07\n\x05_stepB\x08\n\x06_count\"\x7f\n!PatternFlowIgmpv1VersionMetricTag\x12\x11\n\x04name\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x13\n\x06offset\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x13\n\x06length\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x07\n\x05_nameB\t\n\x07_offsetB\t\n\x07_length\"\x9a\x03\n\x18PatternFlowIgmpv1Version\x12>\n\x06\x63hoice\x18\x01 \x01(\x0e\x32).otg.PatternFlowIgmpv1Version.Choice.EnumH\x00\x88\x01\x01\x12\x12\n\x05value\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x0e\n\x06values\x18\x03 \x03(\r\x12\x37\n\tincrement\x18\x05 \x01(\x0b\x32$.otg.PatternFlowIgmpv1VersionCounter\x12\x37\n\tdecrement\x18\x06 \x01(\x0b\x32$.otg.PatternFlowIgmpv1VersionCounter\x12;\n\x0bmetric_tags\x18\x07 \x03(\x0b\x32&.otg.PatternFlowIgmpv1VersionMetricTag\x1aV\n\x06\x43hoice\"L\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\t\n\x05value\x10\x02\x12\n\n\x06values\x10\x03\x12\r\n\tincrement\x10\x04\x12\r\n\tdecrement\x10\x05\x42\t\n\x07_choiceB\x08\n\x06_value\"v\n\x1cPatternFlowIgmpv1TypeCounter\x12\x12\n\x05start\x18\x01 \x01(\rH\x00\x88\x01\x01\x12\x11\n\x04step\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x12\n\x05\x63ount\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x08\n\x06_startB\x07\n\x05_stepB\x08\n\x06_count\"|\n\x1ePatternFlowIgmpv1TypeMetricTag\x12\x11\n\x04name\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x13\n\x06offset\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x13\n\x06length\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x07\n\x05_nameB\t\n\x07_offsetB\t\n\x07_length\"\x8b\x03\n\x15PatternFlowIgmpv1Type\x12;\n\x06\x63hoice\x18\x01 \x01(\x0e\x32&.otg.PatternFlowIgmpv1Type.Choice.EnumH\x00\x88\x01\x01\x12\x12\n\x05value\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x0e\n\x06values\x18\x03 \x03(\r\x12\x34\n\tincrement\x18\x05 \x01(\x0b\x32!.otg.PatternFlowIgmpv1TypeCounter\x12\x34\n\tdecrement\x18\x06 \x01(\x0b\x32!.otg.PatternFlowIgmpv1TypeCounter\x12\x38\n\x0bmetric_tags\x18\x07 \x03(\x0b\x32#.otg.PatternFlowIgmpv1TypeMetricTag\x1aV\n\x06\x43hoice\"L\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\t\n\x05value\x10\x02\x12\n\n\x06values\x10\x03\x12\r\n\tincrement\x10\x04\x12\r\n\tdecrement\x10\x05\x42\t\n\x07_choiceB\x08\n\x06_value\"x\n\x1ePatternFlowIgmpv1UnusedCounter\x12\x12\n\x05start\x18\x01 \x01(\rH\x00\x88\x01\x01\x12\x11\n\x04step\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x12\n\x05\x63ount\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x08\n\x06_startB\x07\n\x05_stepB\x08\n\x06_count\"~\n PatternFlowIgmpv1UnusedMetricTag\x12\x11\n\x04name\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x13\n\x06offset\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x13\n\x06length\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x07\n\x05_nameB\t\n\x07_offsetB\t\n\x07_length\"\x95\x03\n\x17PatternFlowIgmpv1Unused\x12=\n\x06\x63hoice\x18\x01 \x01(\x0e\x32(.otg.PatternFlowIgmpv1Unused.Choice.EnumH\x00\x88\x01\x01\x12\x12\n\x05value\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x0e\n\x06values\x18\x03 \x03(\r\x12\x36\n\tincrement\x18\x05 \x01(\x0b\x32#.otg.PatternFlowIgmpv1UnusedCounter\x12\x36\n\tdecrement\x18\x06 \x01(\x0b\x32#.otg.PatternFlowIgmpv1UnusedCounter\x12:\n\x0bmetric_tags\x18\x07 \x03(\x0b\x32%.otg.PatternFlowIgmpv1UnusedMetricTag\x1aV\n\x06\x43hoice\"L\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\t\n\x05value\x10\x02\x12\n\n\x06values\x10\x03\x12\r\n\tincrement\x10\x04\x12\r\n\tdecrement\x10\x05\x42\t\n\x07_choiceB\x08\n\x06_value\"\xd3\x02\n\x19PatternFlowIgmpv1Checksum\x12?\n\x06\x63hoice\x18\x01 \x01(\x0e\x32*.otg.PatternFlowIgmpv1Checksum.Choice.EnumH\x00\x88\x01\x01\x12\x45\n\tgenerated\x18\x02 \x01(\x0e\x32-.otg.PatternFlowIgmpv1Checksum.Generated.EnumH\x01\x88\x01\x01\x12\x13\n\x06\x63ustom\x18\x03 \x01(\rH\x02\x88\x01\x01\x1a<\n\x06\x43hoice\"2\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\r\n\tgenerated\x10\x01\x12\n\n\x06\x63ustom\x10\x02\x1a\x37\n\tGenerated\"*\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\x08\n\x04good\x10\x01\x12\x07\n\x03\x62\x61\x64\x10\x02\x42\t\n\x07_choiceB\x0c\n\n_generatedB\t\n\x07_custom\"~\n$PatternFlowIgmpv1GroupAddressCounter\x12\x12\n\x05start\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x11\n\x04step\x18\x02 \x01(\tH\x01\x88\x01\x01\x12\x12\n\x05\x63ount\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x08\n\x06_startB\x07\n\x05_stepB\x08\n\x06_count\"\x84\x01\n&PatternFlowIgmpv1GroupAddressMetricTag\x12\x11\n\x04name\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x13\n\x06offset\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x13\n\x06length\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x07\n\x05_nameB\t\n\x07_offsetB\t\n\x07_length\"\xb3\x03\n\x1dPatternFlowIgmpv1GroupAddress\x12\x43\n\x06\x63hoice\x18\x01 \x01(\x0e\x32..otg.PatternFlowIgmpv1GroupAddress.Choice.EnumH\x00\x88\x01\x01\x12\x12\n\x05value\x18\x02 \x01(\tH\x01\x88\x01\x01\x12\x0e\n\x06values\x18\x03 \x03(\t\x12<\n\tincrement\x18\x05 \x01(\x0b\x32).otg.PatternFlowIgmpv1GroupAddressCounter\x12<\n\tdecrement\x18\x06 \x01(\x0b\x32).otg.PatternFlowIgmpv1GroupAddressCounter\x12@\n\x0bmetric_tags\x18\x07 \x03(\x0b\x32+.otg.PatternFlowIgmpv1GroupAddressMetricTag\x1aV\n\x06\x43hoice\"L\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\t\n\x05value\x10\x02\x12\n\n\x06values\x10\x03\x12\r\n\tincrement\x10\x04\x12\r\n\tdecrement\x10\x05\x42\t\n\x07_choiceB\x08\n\x06_value\"u\n\x1bPatternFlowMplsLabelCounter\x12\x12\n\x05start\x18\x01 \x01(\rH\x00\x88\x01\x01\x12\x11\n\x04step\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x12\n\x05\x63ount\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x08\n\x06_startB\x07\n\x05_stepB\x08\n\x06_count\"{\n\x1dPatternFlowMplsLabelMetricTag\x12\x11\n\x04name\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x13\n\x06offset\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x13\n\x06length\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x07\n\x05_nameB\t\n\x07_offsetB\t\n\x07_length\"\xac\x03\n\x14PatternFlowMplsLabel\x12:\n\x06\x63hoice\x18\x01 \x01(\x0e\x32%.otg.PatternFlowMplsLabel.Choice.EnumH\x00\x88\x01\x01\x12\x12\n\x05value\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x0e\n\x06values\x18\x03 \x03(\r\x12\x11\n\x04\x61uto\x18\x04 \x01(\rH\x02\x88\x01\x01\x12\x33\n\tincrement\x18\x06 \x01(\x0b\x32 .otg.PatternFlowMplsLabelCounter\x12\x33\n\tdecrement\x18\x07 \x01(\x0b\x32 .otg.PatternFlowMplsLabelCounter\x12\x37\n\x0bmetric_tags\x18\x08 \x03(\x0b\x32\".otg.PatternFlowMplsLabelMetricTag\x1a`\n\x06\x43hoice\"V\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\t\n\x05value\x10\x02\x12\n\n\x06values\x10\x03\x12\x08\n\x04\x61uto\x10\x01\x12\r\n\tincrement\x10\x04\x12\r\n\tdecrement\x10\x05\x42\t\n\x07_choiceB\x08\n\x06_valueB\x07\n\x05_auto\"|\n\"PatternFlowMplsTrafficClassCounter\x12\x12\n\x05start\x18\x01 \x01(\rH\x00\x88\x01\x01\x12\x11\n\x04step\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x12\n\x05\x63ount\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x08\n\x06_startB\x07\n\x05_stepB\x08\n\x06_count\"\x82\x01\n$PatternFlowMplsTrafficClassMetricTag\x12\x11\n\x04name\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x13\n\x06offset\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x13\n\x06length\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x07\n\x05_nameB\t\n\x07_offsetB\t\n\x07_length\"\xa9\x03\n\x1bPatternFlowMplsTrafficClass\x12\x41\n\x06\x63hoice\x18\x01 \x01(\x0e\x32,.otg.PatternFlowMplsTrafficClass.Choice.EnumH\x00\x88\x01\x01\x12\x12\n\x05value\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x0e\n\x06values\x18\x03 \x03(\r\x12:\n\tincrement\x18\x05 \x01(\x0b\x32\'.otg.PatternFlowMplsTrafficClassCounter\x12:\n\tdecrement\x18\x06 \x01(\x0b\x32\'.otg.PatternFlowMplsTrafficClassCounter\x12>\n\x0bmetric_tags\x18\x07 \x03(\x0b\x32).otg.PatternFlowMplsTrafficClassMetricTag\x1aV\n\x06\x43hoice\"L\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\t\n\x05value\x10\x02\x12\n\n\x06values\x10\x03\x12\r\n\tincrement\x10\x04\x12\r\n\tdecrement\x10\x05\x42\t\n\x07_choiceB\x08\n\x06_value\"}\n#PatternFlowMplsBottomOfStackCounter\x12\x12\n\x05start\x18\x01 \x01(\rH\x00\x88\x01\x01\x12\x11\n\x04step\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x12\n\x05\x63ount\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x08\n\x06_startB\x07\n\x05_stepB\x08\n\x06_count\"\x83\x01\n%PatternFlowMplsBottomOfStackMetricTag\x12\x11\n\x04name\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x13\n\x06offset\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x13\n\x06length\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x07\n\x05_nameB\t\n\x07_offsetB\t\n\x07_length\"\xd4\x03\n\x1cPatternFlowMplsBottomOfStack\x12\x42\n\x06\x63hoice\x18\x01 \x01(\x0e\x32-.otg.PatternFlowMplsBottomOfStack.Choice.EnumH\x00\x88\x01\x01\x12\x12\n\x05value\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x0e\n\x06values\x18\x03 \x03(\r\x12\x11\n\x04\x61uto\x18\x04 \x01(\rH\x02\x88\x01\x01\x12;\n\tincrement\x18\x06 \x01(\x0b\x32(.otg.PatternFlowMplsBottomOfStackCounter\x12;\n\tdecrement\x18\x07 \x01(\x0b\x32(.otg.PatternFlowMplsBottomOfStackCounter\x12?\n\x0bmetric_tags\x18\x08 \x03(\x0b\x32*.otg.PatternFlowMplsBottomOfStackMetricTag\x1a`\n\x06\x43hoice\"V\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\t\n\x05value\x10\x02\x12\n\n\x06values\x10\x03\x12\x08\n\x04\x61uto\x10\x01\x12\r\n\tincrement\x10\x04\x12\r\n\tdecrement\x10\x05\x42\t\n\x07_choiceB\x08\n\x06_valueB\x07\n\x05_auto\"z\n PatternFlowMplsTimeToLiveCounter\x12\x12\n\x05start\x18\x01 \x01(\rH\x00\x88\x01\x01\x12\x11\n\x04step\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x12\n\x05\x63ount\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x08\n\x06_startB\x07\n\x05_stepB\x08\n\x06_count\"\x80\x01\n\"PatternFlowMplsTimeToLiveMetricTag\x12\x11\n\x04name\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x13\n\x06offset\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x13\n\x06length\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x07\n\x05_nameB\t\n\x07_offsetB\t\n\x07_length\"\x9f\x03\n\x19PatternFlowMplsTimeToLive\x12?\n\x06\x63hoice\x18\x01 \x01(\x0e\x32*.otg.PatternFlowMplsTimeToLive.Choice.EnumH\x00\x88\x01\x01\x12\x12\n\x05value\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x0e\n\x06values\x18\x03 \x03(\r\x12\x38\n\tincrement\x18\x05 \x01(\x0b\x32%.otg.PatternFlowMplsTimeToLiveCounter\x12\x38\n\tdecrement\x18\x06 \x01(\x0b\x32%.otg.PatternFlowMplsTimeToLiveCounter\x12<\n\x0bmetric_tags\x18\x07 \x03(\x0b\x32\'.otg.PatternFlowMplsTimeToLiveMetricTag\x1aV\n\x06\x43hoice\"L\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\t\n\x05value\x10\x02\x12\n\n\x06values\x10\x03\x12\r\n\tincrement\x10\x04\x12\r\n\tdecrement\x10\x05\x42\t\n\x07_choiceB\x08\n\x06_value\"w\n\x1dPatternFlowRsvpVersionCounter\x12\x12\n\x05start\x18\x01 \x01(\rH\x00\x88\x01\x01\x12\x11\n\x04step\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x12\n\x05\x63ount\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x08\n\x06_startB\x07\n\x05_stepB\x08\n\x06_count\"\xd5\x02\n\x16PatternFlowRsvpVersion\x12<\n\x06\x63hoice\x18\x01 \x01(\x0e\x32\'.otg.PatternFlowRsvpVersion.Choice.EnumH\x00\x88\x01\x01\x12\x12\n\x05value\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x0e\n\x06values\x18\x03 \x03(\r\x12\x35\n\tincrement\x18\x05 \x01(\x0b\x32\".otg.PatternFlowRsvpVersionCounter\x12\x35\n\tdecrement\x18\x06 \x01(\x0b\x32\".otg.PatternFlowRsvpVersionCounter\x1aV\n\x06\x43hoice\"L\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\t\n\x05value\x10\x02\x12\n\n\x06values\x10\x03\x12\r\n\tincrement\x10\x04\x12\r\n\tdecrement\x10\x05\x42\t\n\x07_choiceB\x08\n\x06_value\"\xd9\x02\n\x1bPatternFlowRsvpRsvpChecksum\x12\x41\n\x06\x63hoice\x18\x01 \x01(\x0e\x32,.otg.PatternFlowRsvpRsvpChecksum.Choice.EnumH\x00\x88\x01\x01\x12G\n\tgenerated\x18\x02 \x01(\x0e\x32/.otg.PatternFlowRsvpRsvpChecksum.Generated.EnumH\x01\x88\x01\x01\x12\x13\n\x06\x63ustom\x18\x03 \x01(\rH\x02\x88\x01\x01\x1a<\n\x06\x43hoice\"2\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\r\n\tgenerated\x10\x01\x12\n\n\x06\x63ustom\x10\x02\x1a\x37\n\tGenerated\"*\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\x08\n\x04good\x10\x01\x12\x07\n\x03\x62\x61\x64\x10\x02\x42\t\n\x07_choiceB\x0c\n\n_generatedB\t\n\x07_custom\"z\n PatternFlowRsvpTimeToLiveCounter\x12\x12\n\x05start\x18\x01 \x01(\rH\x00\x88\x01\x01\x12\x11\n\x04step\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x12\n\x05\x63ount\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x08\n\x06_startB\x07\n\x05_stepB\x08\n\x06_count\"\xe1\x02\n\x19PatternFlowRsvpTimeToLive\x12?\n\x06\x63hoice\x18\x01 \x01(\x0e\x32*.otg.PatternFlowRsvpTimeToLive.Choice.EnumH\x00\x88\x01\x01\x12\x12\n\x05value\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x0e\n\x06values\x18\x03 \x03(\r\x12\x38\n\tincrement\x18\x05 \x01(\x0b\x32%.otg.PatternFlowRsvpTimeToLiveCounter\x12\x38\n\tdecrement\x18\x06 \x01(\x0b\x32%.otg.PatternFlowRsvpTimeToLiveCounter\x1aV\n\x06\x43hoice\"L\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\t\n\x05value\x10\x02\x12\n\n\x06values\x10\x03\x12\r\n\tincrement\x10\x04\x12\r\n\tdecrement\x10\x05\x42\t\n\x07_choiceB\x08\n\x06_value\"x\n\x1ePatternFlowRsvpReservedCounter\x12\x12\n\x05start\x18\x01 \x01(\rH\x00\x88\x01\x01\x12\x11\n\x04step\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x12\n\x05\x63ount\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x08\n\x06_startB\x07\n\x05_stepB\x08\n\x06_count\"\xd9\x02\n\x17PatternFlowRsvpReserved\x12=\n\x06\x63hoice\x18\x01 \x01(\x0e\x32(.otg.PatternFlowRsvpReserved.Choice.EnumH\x00\x88\x01\x01\x12\x12\n\x05value\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x0e\n\x06values\x18\x03 \x03(\r\x12\x36\n\tincrement\x18\x05 \x01(\x0b\x32#.otg.PatternFlowRsvpReservedCounter\x12\x36\n\tdecrement\x18\x06 \x01(\x0b\x32#.otg.PatternFlowRsvpReservedCounter\x1aV\n\x06\x43hoice\"L\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\t\n\x05value\x10\x02\x12\n\n\x06values\x10\x03\x12\r\n\tincrement\x10\x04\x12\r\n\tdecrement\x10\x05\x42\t\n\x07_choiceB\x08\n\x06_value\"\xa1\x01\nGPatternFlowRSVPPathSessionLspTunnelIpv4Ipv4TunnelEndPointAddressCounter\x12\x12\n\x05start\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x11\n\x04step\x18\x02 \x01(\tH\x01\x88\x01\x01\x12\x12\n\x05\x63ount\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x08\n\x06_startB\x07\n\x05_stepB\x08\n\x06_count\"\xfd\x03\n@PatternFlowRSVPPathSessionLspTunnelIpv4Ipv4TunnelEndPointAddress\x12\x66\n\x06\x63hoice\x18\x01 \x01(\x0e\x32Q.otg.PatternFlowRSVPPathSessionLspTunnelIpv4Ipv4TunnelEndPointAddress.Choice.EnumH\x00\x88\x01\x01\x12\x12\n\x05value\x18\x02 \x01(\tH\x01\x88\x01\x01\x12\x0e\n\x06values\x18\x03 \x03(\t\x12_\n\tincrement\x18\x05 \x01(\x0b\x32L.otg.PatternFlowRSVPPathSessionLspTunnelIpv4Ipv4TunnelEndPointAddressCounter\x12_\n\tdecrement\x18\x06 \x01(\x0b\x32L.otg.PatternFlowRSVPPathSessionLspTunnelIpv4Ipv4TunnelEndPointAddressCounter\x1aV\n\x06\x43hoice\"L\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\t\n\x05value\x10\x02\x12\n\n\x06values\x10\x03\x12\r\n\tincrement\x10\x04\x12\r\n\tdecrement\x10\x05\x42\t\n\x07_choiceB\x08\n\x06_value\"\x90\x01\n6PatternFlowRSVPPathSessionLspTunnelIpv4ReservedCounter\x12\x12\n\x05start\x18\x01 \x01(\rH\x00\x88\x01\x01\x12\x11\n\x04step\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x12\n\x05\x63ount\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x08\n\x06_startB\x07\n\x05_stepB\x08\n\x06_count\"\xb9\x03\n/PatternFlowRSVPPathSessionLspTunnelIpv4Reserved\x12U\n\x06\x63hoice\x18\x01 \x01(\x0e\x32@.otg.PatternFlowRSVPPathSessionLspTunnelIpv4Reserved.Choice.EnumH\x00\x88\x01\x01\x12\x12\n\x05value\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x0e\n\x06values\x18\x03 \x03(\r\x12N\n\tincrement\x18\x05 \x01(\x0b\x32;.otg.PatternFlowRSVPPathSessionLspTunnelIpv4ReservedCounter\x12N\n\tdecrement\x18\x06 \x01(\x0b\x32;.otg.PatternFlowRSVPPathSessionLspTunnelIpv4ReservedCounter\x1aV\n\x06\x43hoice\"L\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\t\n\x05value\x10\x02\x12\n\n\x06values\x10\x03\x12\r\n\tincrement\x10\x04\x12\r\n\tdecrement\x10\x05\x42\t\n\x07_choiceB\x08\n\x06_value\"\x90\x01\n6PatternFlowRSVPPathSessionLspTunnelIpv4TunnelIdCounter\x12\x12\n\x05start\x18\x01 \x01(\rH\x00\x88\x01\x01\x12\x11\n\x04step\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x12\n\x05\x63ount\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x08\n\x06_startB\x07\n\x05_stepB\x08\n\x06_count\"\xb9\x03\n/PatternFlowRSVPPathSessionLspTunnelIpv4TunnelId\x12U\n\x06\x63hoice\x18\x01 \x01(\x0e\x32@.otg.PatternFlowRSVPPathSessionLspTunnelIpv4TunnelId.Choice.EnumH\x00\x88\x01\x01\x12\x12\n\x05value\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x0e\n\x06values\x18\x03 \x03(\r\x12N\n\tincrement\x18\x05 \x01(\x0b\x32;.otg.PatternFlowRSVPPathSessionLspTunnelIpv4TunnelIdCounter\x12N\n\tdecrement\x18\x06 \x01(\x0b\x32;.otg.PatternFlowRSVPPathSessionLspTunnelIpv4TunnelIdCounter\x1aV\n\x06\x43hoice\"L\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\t\n\x05value\x10\x02\x12\n\n\x06values\x10\x03\x12\r\n\tincrement\x10\x04\x12\r\n\tdecrement\x10\x05\x42\t\n\x07_choiceB\x08\n\x06_value\"\x98\x01\n>PatternFlowRSVPPathSessionLspTunnelIpv4ExtendedTunnelIdCounter\x12\x12\n\x05start\x18\x01 \x01(\rH\x00\x88\x01\x01\x12\x11\n\x04step\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x12\n\x05\x63ount\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x08\n\x06_startB\x07\n\x05_stepB\x08\n\x06_count\"\xd9\x03\n7PatternFlowRSVPPathSessionLspTunnelIpv4ExtendedTunnelId\x12]\n\x06\x63hoice\x18\x01 \x01(\x0e\x32H.otg.PatternFlowRSVPPathSessionLspTunnelIpv4ExtendedTunnelId.Choice.EnumH\x00\x88\x01\x01\x12\x12\n\x05value\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x0e\n\x06values\x18\x03 \x03(\r\x12V\n\tincrement\x18\x05 \x01(\x0b\x32\x43.otg.PatternFlowRSVPPathSessionLspTunnelIpv4ExtendedTunnelIdCounter\x12V\n\tdecrement\x18\x06 \x01(\x0b\x32\x43.otg.PatternFlowRSVPPathSessionLspTunnelIpv4ExtendedTunnelIdCounter\x1aV\n\x06\x43hoice\"L\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\t\n\x05value\x10\x02\x12\n\n\x06values\x10\x03\x12\r\n\tincrement\x10\x04\x12\r\n\tdecrement\x10\x05\x42\t\n\x07_choiceB\x08\n\x06_value\"\x99\x01\n?PatternFlowRSVPPathRsvpHopIpv4Ipv4NextPreviousHopAddressCounter\x12\x12\n\x05start\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x11\n\x04step\x18\x02 \x01(\tH\x01\x88\x01\x01\x12\x12\n\x05\x63ount\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x08\n\x06_startB\x07\n\x05_stepB\x08\n\x06_count\"\xdd\x03\n8PatternFlowRSVPPathRsvpHopIpv4Ipv4NextPreviousHopAddress\x12^\n\x06\x63hoice\x18\x01 \x01(\x0e\x32I.otg.PatternFlowRSVPPathRsvpHopIpv4Ipv4NextPreviousHopAddress.Choice.EnumH\x00\x88\x01\x01\x12\x12\n\x05value\x18\x02 \x01(\tH\x01\x88\x01\x01\x12\x0e\n\x06values\x18\x03 \x03(\t\x12W\n\tincrement\x18\x05 \x01(\x0b\x32\x44.otg.PatternFlowRSVPPathRsvpHopIpv4Ipv4NextPreviousHopAddressCounter\x12W\n\tdecrement\x18\x06 \x01(\x0b\x32\x44.otg.PatternFlowRSVPPathRsvpHopIpv4Ipv4NextPreviousHopAddressCounter\x1aV\n\x06\x43hoice\"L\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\t\n\x05value\x10\x02\x12\n\n\x06values\x10\x03\x12\r\n\tincrement\x10\x04\x12\r\n\tdecrement\x10\x05\x42\t\n\x07_choiceB\x08\n\x06_value\"\x95\x01\n;PatternFlowRSVPPathRsvpHopIpv4LogicalInterfaceHandleCounter\x12\x12\n\x05start\x18\x01 \x01(\rH\x00\x88\x01\x01\x12\x11\n\x04step\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x12\n\x05\x63ount\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x08\n\x06_startB\x07\n\x05_stepB\x08\n\x06_count\"\xcd\x03\n4PatternFlowRSVPPathRsvpHopIpv4LogicalInterfaceHandle\x12Z\n\x06\x63hoice\x18\x01 \x01(\x0e\x32\x45.otg.PatternFlowRSVPPathRsvpHopIpv4LogicalInterfaceHandle.Choice.EnumH\x00\x88\x01\x01\x12\x12\n\x05value\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x0e\n\x06values\x18\x03 \x03(\r\x12S\n\tincrement\x18\x05 \x01(\x0b\x32@.otg.PatternFlowRSVPPathRsvpHopIpv4LogicalInterfaceHandleCounter\x12S\n\tdecrement\x18\x06 \x01(\x0b\x32@.otg.PatternFlowRSVPPathRsvpHopIpv4LogicalInterfaceHandleCounter\x1aV\n\x06\x43hoice\"L\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\t\n\x05value\x10\x02\x12\n\n\x06values\x10\x03\x12\r\n\tincrement\x10\x04\x12\r\n\tdecrement\x10\x05\x42\t\n\x07_choiceB\x08\n\x06_value\"\x91\x01\n7PatternFlowRSVPPathTimeValuesType1RefreshPeriodRCounter\x12\x12\n\x05start\x18\x01 \x01(\rH\x00\x88\x01\x01\x12\x11\n\x04step\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x12\n\x05\x63ount\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x08\n\x06_startB\x07\n\x05_stepB\x08\n\x06_count\"\xbd\x03\n0PatternFlowRSVPPathTimeValuesType1RefreshPeriodR\x12V\n\x06\x63hoice\x18\x01 \x01(\x0e\x32\x41.otg.PatternFlowRSVPPathTimeValuesType1RefreshPeriodR.Choice.EnumH\x00\x88\x01\x01\x12\x12\n\x05value\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x0e\n\x06values\x18\x03 \x03(\r\x12O\n\tincrement\x18\x05 \x01(\x0b\x32<.otg.PatternFlowRSVPPathTimeValuesType1RefreshPeriodRCounter\x12O\n\tdecrement\x18\x06 \x01(\x0b\x32<.otg.PatternFlowRSVPPathTimeValuesType1RefreshPeriodRCounter\x1aV\n\x06\x43hoice\"L\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\t\n\x05value\x10\x02\x12\n\n\x06values\x10\x03\x12\r\n\tincrement\x10\x04\x12\r\n\tdecrement\x10\x05\x42\t\n\x07_choiceB\x08\n\x06_value\"\x94\x01\n:PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixLBitCounter\x12\x12\n\x05start\x18\x01 \x01(\rH\x00\x88\x01\x01\x12\x11\n\x04step\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x12\n\x05\x63ount\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x08\n\x06_startB\x07\n\x05_stepB\x08\n\x06_count\"\xc9\x03\n3PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixLBit\x12Y\n\x06\x63hoice\x18\x01 \x01(\x0e\x32\x44.otg.PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixLBit.Choice.EnumH\x00\x88\x01\x01\x12\x12\n\x05value\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x0e\n\x06values\x18\x03 \x03(\r\x12R\n\tincrement\x18\x05 \x01(\x0b\x32?.otg.PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixLBitCounter\x12R\n\tdecrement\x18\x06 \x01(\x0b\x32?.otg.PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixLBitCounter\x1aV\n\x06\x43hoice\"L\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\t\n\x05value\x10\x02\x12\n\n\x06values\x10\x03\x12\r\n\tincrement\x10\x04\x12\r\n\tdecrement\x10\x05\x42\t\n\x07_choiceB\x08\n\x06_value\"\x9b\x01\nAPatternFlowRSVPPathExplicitRouteType1Ipv4PrefixIpv4AddressCounter\x12\x12\n\x05start\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x11\n\x04step\x18\x02 \x01(\tH\x01\x88\x01\x01\x12\x12\n\x05\x63ount\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x08\n\x06_startB\x07\n\x05_stepB\x08\n\x06_count\"\xe5\x03\n:PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixIpv4Address\x12`\n\x06\x63hoice\x18\x01 \x01(\x0e\x32K.otg.PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixIpv4Address.Choice.EnumH\x00\x88\x01\x01\x12\x12\n\x05value\x18\x02 \x01(\tH\x01\x88\x01\x01\x12\x0e\n\x06values\x18\x03 \x03(\t\x12Y\n\tincrement\x18\x05 \x01(\x0b\x32\x46.otg.PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixIpv4AddressCounter\x12Y\n\tdecrement\x18\x06 \x01(\x0b\x32\x46.otg.PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixIpv4AddressCounter\x1aV\n\x06\x43hoice\"L\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\t\n\x05value\x10\x02\x12\n\n\x06values\x10\x03\x12\r\n\tincrement\x10\x04\x12\r\n\tdecrement\x10\x05\x42\t\n\x07_choiceB\x08\n\x06_value\"\x9a\x01\n@PatternFlowRSVPPathExplicitRouteType1FourByteASNumberLBitCounter\x12\x12\n\x05start\x18\x01 \x01(\rH\x00\x88\x01\x01\x12\x11\n\x04step\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x12\n\x05\x63ount\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x08\n\x06_startB\x07\n\x05_stepB\x08\n\x06_count\"\xe1\x03\n9PatternFlowRSVPPathExplicitRouteType1FourByteASNumberLBit\x12_\n\x06\x63hoice\x18\x01 \x01(\x0e\x32J.otg.PatternFlowRSVPPathExplicitRouteType1FourByteASNumberLBit.Choice.EnumH\x00\x88\x01\x01\x12\x12\n\x05value\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x0e\n\x06values\x18\x03 \x03(\r\x12X\n\tincrement\x18\x05 \x01(\x0b\x32\x45.otg.PatternFlowRSVPPathExplicitRouteType1FourByteASNumberLBitCounter\x12X\n\tdecrement\x18\x06 \x01(\x0b\x32\x45.otg.PatternFlowRSVPPathExplicitRouteType1FourByteASNumberLBitCounter\x1aV\n\x06\x43hoice\"L\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\t\n\x05value\x10\x02\x12\n\n\x06values\x10\x03\x12\r\n\tincrement\x10\x04\x12\r\n\tdecrement\x10\x05\x42\t\n\x07_choiceB\x08\n\x06_value\"\x9e\x01\nDPatternFlowRSVPPathExplicitRouteType1FourByteASNumberReservedCounter\x12\x12\n\x05start\x18\x01 \x01(\rH\x00\x88\x01\x01\x12\x11\n\x04step\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x12\n\x05\x63ount\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x08\n\x06_startB\x07\n\x05_stepB\x08\n\x06_count\"\xf1\x03\n=PatternFlowRSVPPathExplicitRouteType1FourByteASNumberReserved\x12\x63\n\x06\x63hoice\x18\x01 \x01(\x0e\x32N.otg.PatternFlowRSVPPathExplicitRouteType1FourByteASNumberReserved.Choice.EnumH\x00\x88\x01\x01\x12\x12\n\x05value\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x0e\n\x06values\x18\x03 \x03(\r\x12\\\n\tincrement\x18\x05 \x01(\x0b\x32I.otg.PatternFlowRSVPPathExplicitRouteType1FourByteASNumberReservedCounter\x12\\\n\tdecrement\x18\x06 \x01(\x0b\x32I.otg.PatternFlowRSVPPathExplicitRouteType1FourByteASNumberReservedCounter\x1aV\n\x06\x43hoice\"L\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\t\n\x05value\x10\x02\x12\n\n\x06values\x10\x03\x12\r\n\tincrement\x10\x04\x12\r\n\tdecrement\x10\x05\x42\t\n\x07_choiceB\x08\n\x06_value\"\x99\x01\n?PatternFlowRSVPPathLabelRequestWithoutLabelRangeReservedCounter\x12\x12\n\x05start\x18\x01 \x01(\rH\x00\x88\x01\x01\x12\x11\n\x04step\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x12\n\x05\x63ount\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x08\n\x06_startB\x07\n\x05_stepB\x08\n\x06_count\"\xdd\x03\n8PatternFlowRSVPPathLabelRequestWithoutLabelRangeReserved\x12^\n\x06\x63hoice\x18\x01 \x01(\x0e\x32I.otg.PatternFlowRSVPPathLabelRequestWithoutLabelRangeReserved.Choice.EnumH\x00\x88\x01\x01\x12\x12\n\x05value\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x0e\n\x06values\x18\x03 \x03(\r\x12W\n\tincrement\x18\x05 \x01(\x0b\x32\x44.otg.PatternFlowRSVPPathLabelRequestWithoutLabelRangeReservedCounter\x12W\n\tdecrement\x18\x06 \x01(\x0b\x32\x44.otg.PatternFlowRSVPPathLabelRequestWithoutLabelRangeReservedCounter\x1aV\n\x06\x43hoice\"L\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\t\n\x05value\x10\x02\x12\n\n\x06values\x10\x03\x12\r\n\tincrement\x10\x04\x12\r\n\tdecrement\x10\x05\x42\t\n\x07_choiceB\x08\n\x06_value\"\x96\x01\n.otg.PatternFlowRSVPPathSenderTspecIntServOverallLengthCounter\x12Q\n\tdecrement\x18\x06 \x01(\x0b\x32>.otg.PatternFlowRSVPPathSenderTspecIntServOverallLengthCounter\x1aV\n\x06\x43hoice\"L\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\t\n\x05value\x10\x02\x12\n\n\x06values\x10\x03\x12\r\n\tincrement\x10\x04\x12\r\n\tdecrement\x10\x05\x42\t\n\x07_choiceB\x08\n\x06_value\"\x93\x01\n9PatternFlowRSVPPathSenderTspecIntServServiceHeaderCounter\x12\x12\n\x05start\x18\x01 \x01(\rH\x00\x88\x01\x01\x12\x11\n\x04step\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x12\n\x05\x63ount\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x08\n\x06_startB\x07\n\x05_stepB\x08\n\x06_count\"\xc5\x03\n2PatternFlowRSVPPathSenderTspecIntServServiceHeader\x12X\n\x06\x63hoice\x18\x01 \x01(\x0e\x32\x43.otg.PatternFlowRSVPPathSenderTspecIntServServiceHeader.Choice.EnumH\x00\x88\x01\x01\x12\x12\n\x05value\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x0e\n\x06values\x18\x03 \x03(\r\x12Q\n\tincrement\x18\x05 \x01(\x0b\x32>.otg.PatternFlowRSVPPathSenderTspecIntServServiceHeaderCounter\x12Q\n\tdecrement\x18\x06 \x01(\x0b\x32>.otg.PatternFlowRSVPPathSenderTspecIntServServiceHeaderCounter\x1aV\n\x06\x43hoice\"L\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\t\n\x05value\x10\x02\x12\n\n\x06values\x10\x03\x12\r\n\tincrement\x10\x04\x12\r\n\tdecrement\x10\x05\x42\t\n\x07_choiceB\x08\n\x06_value\"\x8d\x01\n3PatternFlowRSVPPathSenderTspecIntServZeroBitCounter\x12\x12\n\x05start\x18\x01 \x01(\rH\x00\x88\x01\x01\x12\x11\n\x04step\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x12\n\x05\x63ount\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x08\n\x06_startB\x07\n\x05_stepB\x08\n\x06_count\"\xad\x03\n,PatternFlowRSVPPathSenderTspecIntServZeroBit\x12R\n\x06\x63hoice\x18\x01 \x01(\x0e\x32=.otg.PatternFlowRSVPPathSenderTspecIntServZeroBit.Choice.EnumH\x00\x88\x01\x01\x12\x12\n\x05value\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x0e\n\x06values\x18\x03 \x03(\r\x12K\n\tincrement\x18\x05 \x01(\x0b\x32\x38.otg.PatternFlowRSVPPathSenderTspecIntServZeroBitCounter\x12K\n\tdecrement\x18\x06 \x01(\x0b\x32\x38.otg.PatternFlowRSVPPathSenderTspecIntServZeroBitCounter\x1aV\n\x06\x43hoice\"L\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\t\n\x05value\x10\x02\x12\n\n\x06values\x10\x03\x12\r\n\tincrement\x10\x04\x12\r\n\tdecrement\x10\x05\x42\t\n\x07_choiceB\x08\n\x06_value\"\x8f\x01\n5PatternFlowRSVPPathSenderTspecIntServReserved2Counter\x12\x12\n\x05start\x18\x01 \x01(\rH\x00\x88\x01\x01\x12\x11\n\x04step\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x12\n\x05\x63ount\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x08\n\x06_startB\x07\n\x05_stepB\x08\n\x06_count\"\xb5\x03\n.PatternFlowRSVPPathSenderTspecIntServReserved2\x12T\n\x06\x63hoice\x18\x01 \x01(\x0e\x32?.otg.PatternFlowRSVPPathSenderTspecIntServReserved2.Choice.EnumH\x00\x88\x01\x01\x12\x12\n\x05value\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x0e\n\x06values\x18\x03 \x03(\r\x12M\n\tincrement\x18\x05 \x01(\x0b\x32:.otg.PatternFlowRSVPPathSenderTspecIntServReserved2Counter\x12M\n\tdecrement\x18\x06 \x01(\x0b\x32:.otg.PatternFlowRSVPPathSenderTspecIntServReserved2Counter\x1aV\n\x06\x43hoice\"L\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\t\n\x05value\x10\x02\x12\n\n\x06values\x10\x03\x12\r\n\tincrement\x10\x04\x12\r\n\tdecrement\x10\x05\x42\t\n\x07_choiceB\x08\n\x06_value\"\x99\x01\n?PatternFlowRSVPPathSenderTspecIntServLengthOfServiceDataCounter\x12\x12\n\x05start\x18\x01 \x01(\rH\x00\x88\x01\x01\x12\x11\n\x04step\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x12\n\x05\x63ount\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x08\n\x06_startB\x07\n\x05_stepB\x08\n\x06_count\"\xdd\x03\n8PatternFlowRSVPPathSenderTspecIntServLengthOfServiceData\x12^\n\x06\x63hoice\x18\x01 \x01(\x0e\x32I.otg.PatternFlowRSVPPathSenderTspecIntServLengthOfServiceData.Choice.EnumH\x00\x88\x01\x01\x12\x12\n\x05value\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x0e\n\x06values\x18\x03 \x03(\r\x12W\n\tincrement\x18\x05 \x01(\x0b\x32\x44.otg.PatternFlowRSVPPathSenderTspecIntServLengthOfServiceDataCounter\x12W\n\tdecrement\x18\x06 \x01(\x0b\x32\x44.otg.PatternFlowRSVPPathSenderTspecIntServLengthOfServiceDataCounter\x1aV\n\x06\x43hoice\"L\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\t\n\x05value\x10\x02\x12\n\n\x06values\x10\x03\x12\r\n\tincrement\x10\x04\x12\r\n\tdecrement\x10\x05\x42\t\n\x07_choiceB\x08\n\x06_value\"\xa1\x01\nGPatternFlowRSVPPathSenderTspecIntServParameterIdTokenBucketTspecCounter\x12\x12\n\x05start\x18\x01 \x01(\rH\x00\x88\x01\x01\x12\x11\n\x04step\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x12\n\x05\x63ount\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x08\n\x06_startB\x07\n\x05_stepB\x08\n\x06_count\"\xfd\x03\n@PatternFlowRSVPPathSenderTspecIntServParameterIdTokenBucketTspec\x12\x66\n\x06\x63hoice\x18\x01 \x01(\x0e\x32Q.otg.PatternFlowRSVPPathSenderTspecIntServParameterIdTokenBucketTspec.Choice.EnumH\x00\x88\x01\x01\x12\x12\n\x05value\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x0e\n\x06values\x18\x03 \x03(\r\x12_\n\tincrement\x18\x05 \x01(\x0b\x32L.otg.PatternFlowRSVPPathSenderTspecIntServParameterIdTokenBucketTspecCounter\x12_\n\tdecrement\x18\x06 \x01(\x0b\x32L.otg.PatternFlowRSVPPathSenderTspecIntServParameterIdTokenBucketTspecCounter\x1aV\n\x06\x43hoice\"L\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\t\n\x05value\x10\x02\x12\n\n\x06values\x10\x03\x12\r\n\tincrement\x10\x04\x12\r\n\tdecrement\x10\x05\x42\t\n\x07_choiceB\x08\n\x06_value\"\x96\x01\nPatternFlowRSVPPathSenderTspecIntServParameter127LengthCounter\x12\x12\n\x05start\x18\x01 \x01(\rH\x00\x88\x01\x01\x12\x11\n\x04step\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x12\n\x05\x63ount\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x08\n\x06_startB\x07\n\x05_stepB\x08\n\x06_count\"\xd9\x03\n7PatternFlowRSVPPathSenderTspecIntServParameter127Length\x12]\n\x06\x63hoice\x18\x01 \x01(\x0e\x32H.otg.PatternFlowRSVPPathSenderTspecIntServParameter127Length.Choice.EnumH\x00\x88\x01\x01\x12\x12\n\x05value\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x0e\n\x06values\x18\x03 \x03(\r\x12V\n\tincrement\x18\x05 \x01(\x0b\x32\x43.otg.PatternFlowRSVPPathSenderTspecIntServParameter127LengthCounter\x12V\n\tdecrement\x18\x06 \x01(\x0b\x32\x43.otg.PatternFlowRSVPPathSenderTspecIntServParameter127LengthCounter\x1aV\n\x06\x43hoice\"L\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\t\n\x05value\x10\x02\x12\n\n\x06values\x10\x03\x12\r\n\tincrement\x10\x04\x12\r\n\tdecrement\x10\x05\x42\t\n\x07_choiceB\x08\n\x06_value\"\x98\x01\n>PatternFlowRSVPPathSenderTspecIntServMinimumPolicedUnitCounter\x12\x12\n\x05start\x18\x01 \x01(\rH\x00\x88\x01\x01\x12\x11\n\x04step\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x12\n\x05\x63ount\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x08\n\x06_startB\x07\n\x05_stepB\x08\n\x06_count\"\xd9\x03\n7PatternFlowRSVPPathSenderTspecIntServMinimumPolicedUnit\x12]\n\x06\x63hoice\x18\x01 \x01(\x0e\x32H.otg.PatternFlowRSVPPathSenderTspecIntServMinimumPolicedUnit.Choice.EnumH\x00\x88\x01\x01\x12\x12\n\x05value\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x0e\n\x06values\x18\x03 \x03(\r\x12V\n\tincrement\x18\x05 \x01(\x0b\x32\x43.otg.PatternFlowRSVPPathSenderTspecIntServMinimumPolicedUnitCounter\x12V\n\tdecrement\x18\x06 \x01(\x0b\x32\x43.otg.PatternFlowRSVPPathSenderTspecIntServMinimumPolicedUnitCounter\x1aV\n\x06\x43hoice\"L\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\t\n\x05value\x10\x02\x12\n\n\x06values\x10\x03\x12\r\n\tincrement\x10\x04\x12\r\n\tdecrement\x10\x05\x42\t\n\x07_choiceB\x08\n\x06_value\"\x97\x01\n=PatternFlowRSVPPathSenderTspecIntServMaximumPacketSizeCounter\x12\x12\n\x05start\x18\x01 \x01(\rH\x00\x88\x01\x01\x12\x11\n\x04step\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x12\n\x05\x63ount\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x08\n\x06_startB\x07\n\x05_stepB\x08\n\x06_count\"\xd5\x03\n6PatternFlowRSVPPathSenderTspecIntServMaximumPacketSize\x12\\\n\x06\x63hoice\x18\x01 \x01(\x0e\x32G.otg.PatternFlowRSVPPathSenderTspecIntServMaximumPacketSize.Choice.EnumH\x00\x88\x01\x01\x12\x12\n\x05value\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x0e\n\x06values\x18\x03 \x03(\r\x12U\n\tincrement\x18\x05 \x01(\x0b\x32\x42.otg.PatternFlowRSVPPathSenderTspecIntServMaximumPacketSizeCounter\x12U\n\tdecrement\x18\x06 \x01(\x0b\x32\x42.otg.PatternFlowRSVPPathSenderTspecIntServMaximumPacketSizeCounter\x1aV\n\x06\x43hoice\"L\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\t\n\x05value\x10\x02\x12\n\n\x06values\x10\x03\x12\r\n\tincrement\x10\x04\x12\r\n\tdecrement\x10\x05\x42\t\n\x07_choiceB\x08\n\x06_value\"\x9a\x01\n@PatternFlowRSVPPathRecordRouteType1Ipv4AddressIpv4AddressCounter\x12\x12\n\x05start\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x11\n\x04step\x18\x02 \x01(\tH\x01\x88\x01\x01\x12\x12\n\x05\x63ount\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x08\n\x06_startB\x07\n\x05_stepB\x08\n\x06_count\"\xe1\x03\n9PatternFlowRSVPPathRecordRouteType1Ipv4AddressIpv4Address\x12_\n\x06\x63hoice\x18\x01 \x01(\x0e\x32J.otg.PatternFlowRSVPPathRecordRouteType1Ipv4AddressIpv4Address.Choice.EnumH\x00\x88\x01\x01\x12\x12\n\x05value\x18\x02 \x01(\tH\x01\x88\x01\x01\x12\x0e\n\x06values\x18\x03 \x03(\t\x12X\n\tincrement\x18\x05 \x01(\x0b\x32\x45.otg.PatternFlowRSVPPathRecordRouteType1Ipv4AddressIpv4AddressCounter\x12X\n\tdecrement\x18\x06 \x01(\x0b\x32\x45.otg.PatternFlowRSVPPathRecordRouteType1Ipv4AddressIpv4AddressCounter\x1aV\n\x06\x43hoice\"L\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\t\n\x05value\x10\x02\x12\n\n\x06values\x10\x03\x12\r\n\tincrement\x10\x04\x12\r\n\tdecrement\x10\x05\x42\t\n\x07_choiceB\x08\n\x06_value\"\x9b\x01\nAPatternFlowRSVPPathRecordRouteType1Ipv4AddressPrefixLengthCounter\x12\x12\n\x05start\x18\x01 \x01(\rH\x00\x88\x01\x01\x12\x11\n\x04step\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x12\n\x05\x63ount\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x08\n\x06_startB\x07\n\x05_stepB\x08\n\x06_count\"\xe5\x03\n:PatternFlowRSVPPathRecordRouteType1Ipv4AddressPrefixLength\x12`\n\x06\x63hoice\x18\x01 \x01(\x0e\x32K.otg.PatternFlowRSVPPathRecordRouteType1Ipv4AddressPrefixLength.Choice.EnumH\x00\x88\x01\x01\x12\x12\n\x05value\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x0e\n\x06values\x18\x03 \x03(\r\x12Y\n\tincrement\x18\x05 \x01(\x0b\x32\x46.otg.PatternFlowRSVPPathRecordRouteType1Ipv4AddressPrefixLengthCounter\x12Y\n\tdecrement\x18\x06 \x01(\x0b\x32\x46.otg.PatternFlowRSVPPathRecordRouteType1Ipv4AddressPrefixLengthCounter\x1aV\n\x06\x43hoice\"L\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\t\n\x05value\x10\x02\x12\n\n\x06values\x10\x03\x12\r\n\tincrement\x10\x04\x12\r\n\tdecrement\x10\x05\x42\t\n\x07_choiceB\x08\n\x06_value\"\xf7\x01\n-PatternFlowRSVPPathRecordRouteType1LabelFlags\x12S\n\x06\x63hoice\x18\x01 \x01(\x0e\x32>.otg.PatternFlowRSVPPathRecordRouteType1LabelFlags.Choice.EnumH\x00\x88\x01\x01\x12\x12\n\x05value\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x0e\n\x06values\x18\x03 \x03(\r\x1a\x38\n\x06\x43hoice\".\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\t\n\x05value\x10\x02\x12\n\n\x06values\x10\x03\x42\t\n\x07_choiceB\x08\n\x06_value\"\xf7\x01\n-PatternFlowRSVPPathRecordRouteType1LabelCType\x12S\n\x06\x63hoice\x18\x01 \x01(\x0e\x32>.otg.PatternFlowRSVPPathRecordRouteType1LabelCType.Choice.EnumH\x00\x88\x01\x01\x12\x12\n\x05value\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x0e\n\x06values\x18\x03 \x03(\r\x1a\x38\n\x06\x43hoice\".\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\t\n\x05value\x10\x02\x12\n\n\x06values\x10\x03\x42\t\n\x07_choiceB\x08\n\x06_value\"\x85\x01\n+PatternFlowRSVPPathObjectsCustomTypeCounter\x12\x12\n\x05start\x18\x01 \x01(\rH\x00\x88\x01\x01\x12\x11\n\x04step\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x12\n\x05\x63ount\x18\x03 \x01(\rH\x02\x88\x01\x01\x42\x08\n\x06_startB\x07\n\x05_stepB\x08\n\x06_count\"\x8d\x03\n$PatternFlowRSVPPathObjectsCustomType\x12J\n\x06\x63hoice\x18\x01 \x01(\x0e\x32\x35.otg.PatternFlowRSVPPathObjectsCustomType.Choice.EnumH\x00\x88\x01\x01\x12\x12\n\x05value\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x0e\n\x06values\x18\x03 \x03(\r\x12\x43\n\tincrement\x18\x05 \x01(\x0b\x32\x30.otg.PatternFlowRSVPPathObjectsCustomTypeCounter\x12\x43\n\tdecrement\x18\x06 \x01(\x0b\x32\x30.otg.PatternFlowRSVPPathObjectsCustomTypeCounter\x1aV\n\x06\x43hoice\"L\n\x04\x45num\x12\x0f\n\x0bunspecified\x10\x00\x12\t\n\x05value\x10\x02\x12\n\n\x06values\x10\x03\x12\r\n\tincrement\x10\x04\x12\r\n\tdecrement\x10\x05\x42\t\n\x07_choiceB\x08\n\x06_value\"\x91\x01\n\x07Version\x12\x1d\n\x10\x61pi_spec_version\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x18\n\x0bsdk_version\x18\x02 \x01(\tH\x01\x88\x01\x01\x12\x18\n\x0b\x61pp_version\x18\x03 \x01(\tH\x02\x88\x01\x01\x42\x13\n\x11_api_spec_versionB\x0e\n\x0c_sdk_versionB\x0e\n\x0c_app_version\"(\n\x07Success\x12\x1d\n\x07warning\x18\x01 \x01(\x0b\x32\x0c.otg.Warning\"$\n\x07\x46\x61ilure\x12\x19\n\x05\x65rror\x18\x01 \x01(\x0b\x32\n.otg.Error\"/\n\x10SetConfigRequest\x12\x1b\n\x06\x63onfig\x18\x01 \x01(\x0b\x32\x0b.otg.Config\"?\n\x13UpdateConfigRequest\x12(\n\rconfig_update\x18\x01 \x01(\x0b\x32\x11.otg.ConfigUpdate\"2\n\x11SetConfigResponse\x12\x1d\n\x07warning\x18\x01 \x01(\x0b\x32\x0c.otg.Warning\"0\n\x11GetConfigResponse\x12\x1b\n\x06\x63onfig\x18\x01 \x01(\x0b\x32\x0b.otg.Config\"5\n\x14UpdateConfigResponse\x12\x1d\n\x07warning\x18\x01 \x01(\x0b\x32\x0c.otg.Warning\"B\n\x16SetControlStateRequest\x12(\n\rcontrol_state\x18\x01 \x01(\x0b\x32\x11.otg.ControlState\"8\n\x17SetControlStateResponse\x12\x1d\n\x07warning\x18\x01 \x01(\x0b\x32\x0c.otg.Warning\"E\n\x17SetControlActionRequest\x12*\n\x0e\x63ontrol_action\x18\x01 \x01(\x0b\x32\x12.otg.ControlAction\"W\n\x18SetControlActionResponse\x12;\n\x17\x63ontrol_action_response\x18\x01 \x01(\x0b\x32\x1a.otg.ControlActionResponse\"A\n\x11GetMetricsRequest\x12,\n\x0fmetrics_request\x18\x01 \x01(\x0b\x32\x13.otg.MetricsRequest\"D\n\x12GetMetricsResponse\x12.\n\x10metrics_response\x18\x01 \x01(\x0b\x32\x14.otg.MetricsResponse\">\n\x10GetStatesRequest\x12*\n\x0estates_request\x18\x01 \x01(\x0b\x32\x12.otg.StatesRequest\"A\n\x11GetStatesResponse\x12,\n\x0fstates_response\x18\x01 \x01(\x0b\x32\x13.otg.StatesResponse\"A\n\x11GetCaptureRequest\x12,\n\x0f\x63\x61pture_request\x18\x01 \x01(\x0b\x32\x13.otg.CaptureRequest\",\n\x12GetCaptureResponse\x12\x16\n\x0eresponse_bytes\x18\x01 \x01(\x0c\"3\n\x12GetVersionResponse\x12\x1d\n\x07version\x18\x01 \x01(\x0b\x32\x0c.otg.Version2\xdf\x04\n\x07Openapi\x12:\n\tSetConfig\x12\x15.otg.SetConfigRequest\x1a\x16.otg.SetConfigResponse\x12;\n\tGetConfig\x12\x16.google.protobuf.Empty\x1a\x16.otg.GetConfigResponse\x12\x43\n\x0cUpdateConfig\x12\x18.otg.UpdateConfigRequest\x1a\x19.otg.UpdateConfigResponse\x12L\n\x0fSetControlState\x12\x1b.otg.SetControlStateRequest\x1a\x1c.otg.SetControlStateResponse\x12O\n\x10SetControlAction\x12\x1c.otg.SetControlActionRequest\x1a\x1d.otg.SetControlActionResponse\x12=\n\nGetMetrics\x12\x16.otg.GetMetricsRequest\x1a\x17.otg.GetMetricsResponse\x12:\n\tGetStates\x12\x15.otg.GetStatesRequest\x1a\x16.otg.GetStatesResponse\x12=\n\nGetCapture\x12\x16.otg.GetCaptureRequest\x1a\x17.otg.GetCaptureResponse\x12=\n\nGetVersion\x12\x16.google.protobuf.Empty\x1a\x17.otg.GetVersionResponseB\x0bZ\t./otg;otgb\x06proto3') _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, globals()) _builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'otg_pb2', globals()) @@ -620,653 +620,837 @@ _FLOWROUTER_MODE_ENUM._serialized_start=47960 _FLOWROUTER_MODE_ENUM._serialized_end=48009 _FLOWHEADER._serialized_start=48021 - _FLOWHEADER._serialized_end=48935 - _FLOWHEADER_CHOICE._serialized_start=48679 - _FLOWHEADER_CHOICE._serialized_end=48924 - _FLOWHEADER_CHOICE_ENUM._serialized_start=48690 - _FLOWHEADER_CHOICE_ENUM._serialized_end=48924 - _FLOWCUSTOM._serialized_start=48937 - _FLOWCUSTOM._serialized_end=49026 - _FLOWCUSTOMMETRICTAG._serialized_start=49028 - _FLOWCUSTOMMETRICTAG._serialized_end=49141 - _FLOWETHERNET._serialized_start=49144 - _FLOWETHERNET._serialized_end=49350 - _FLOWVLAN._serialized_start=49353 - _FLOWVLAN._serialized_end=49525 - _FLOWVXLAN._serialized_start=49528 - _FLOWVXLAN._serialized_end=49723 - _FLOWIPV4._serialized_start=49726 - _FLOWIPV4._serialized_end=50459 - _FLOWIPV4PRIORITY._serialized_start=50462 - _FLOWIPV4PRIORITY._serialized_end=50720 - _FLOWIPV4PRIORITY_CHOICE._serialized_start=50648 - _FLOWIPV4PRIORITY_CHOICE._serialized_end=50709 - _FLOWIPV4PRIORITY_CHOICE_ENUM._serialized_start=50658 - _FLOWIPV4PRIORITY_CHOICE_ENUM._serialized_end=50709 - _FLOWIPV4DSCP._serialized_start=50722 - _FLOWIPV4DSCP._serialized_end=50820 - _FLOWIPV4TOS._serialized_start=50823 - _FLOWIPV4TOS._serialized_end=51146 - _FLOWIPV6._serialized_start=51149 - _FLOWIPV6._serialized_end=51550 - _FLOWPFCPAUSE._serialized_start=51553 - _FLOWPFCPAUSE._serialized_end=52322 - _FLOWETHERNETPAUSE._serialized_start=52325 - _FLOWETHERNETPAUSE._serialized_end=52616 - _FLOWTCP._serialized_start=52619 - _FLOWTCP._serialized_end=53299 - _FLOWUDP._serialized_start=53302 - _FLOWUDP._serialized_end=53493 - _FLOWGRE._serialized_start=53496 - _FLOWGRE._serialized_end=53804 - _FLOWGTPV1._serialized_start=53807 - _FLOWGTPV1._serialized_end=54510 - _FLOWGTPEXTENSION._serialized_start=54513 - _FLOWGTPEXTENSION._serialized_end=54738 - _FLOWGTPV2._serialized_start=54741 - _FLOWGTPV2._serialized_end=55224 - _FLOWARP._serialized_start=55227 - _FLOWARP._serialized_end=55793 - _FLOWICMP._serialized_start=55796 - _FLOWICMP._serialized_end=55943 - _FLOWICMP_CHOICE._serialized_start=55889 - _FLOWICMP_CHOICE._serialized_end=55932 - _FLOWICMP_CHOICE_ENUM._serialized_start=55899 - _FLOWICMP_CHOICE_ENUM._serialized_end=55932 - _FLOWICMPECHO._serialized_start=55946 - _FLOWICMPECHO._serialized_end=56221 - _FLOWICMPV6._serialized_start=56224 - _FLOWICMPV6._serialized_end=56377 - _FLOWICMPV6_CHOICE._serialized_start=55889 - _FLOWICMPV6_CHOICE._serialized_end=55932 - _FLOWICMPV6_CHOICE_ENUM._serialized_start=55899 - _FLOWICMPV6_CHOICE_ENUM._serialized_end=55932 - _FLOWICMPV6ECHO._serialized_start=56380 - _FLOWICMPV6ECHO._serialized_end=56667 - _FLOWPPP._serialized_start=56670 - _FLOWPPP._serialized_end=56825 - _FLOWIGMPV1._serialized_start=56828 - _FLOWIGMPV1._serialized_end=57085 - _FLOWMPLS._serialized_start=57088 - _FLOWMPLS._serialized_end=57311 - _FLOWSIZE._serialized_start=57314 - _FLOWSIZE._serialized_end=57632 - _FLOWSIZE_CHOICE._serialized_start=57522 - _FLOWSIZE_CHOICE._serialized_end=57611 - _FLOWSIZE_CHOICE_ENUM._serialized_start=57532 - _FLOWSIZE_CHOICE_ENUM._serialized_end=57611 - _FLOWSIZEINCREMENT._serialized_start=57634 - _FLOWSIZEINCREMENT._serialized_end=57737 - _FLOWSIZERANDOM._serialized_start=57739 - _FLOWSIZERANDOM._serialized_end=57807 - _FLOWSIZEWEIGHTPAIRS._serialized_start=57810 - _FLOWSIZEWEIGHTPAIRS._serialized_end=58207 - _FLOWSIZEWEIGHTPAIRS_CHOICE._serialized_start=58007 - _FLOWSIZEWEIGHTPAIRS_CHOICE._serialized_end=58068 - _FLOWSIZEWEIGHTPAIRS_CHOICE_ENUM._serialized_start=58017 - _FLOWSIZEWEIGHTPAIRS_CHOICE_ENUM._serialized_end=58068 - _FLOWSIZEWEIGHTPAIRS_PREDEFINED._serialized_start=58070 - _FLOWSIZEWEIGHTPAIRS_PREDEFINED._serialized_end=58181 - _FLOWSIZEWEIGHTPAIRS_PREDEFINED_ENUM._serialized_start=58084 - _FLOWSIZEWEIGHTPAIRS_PREDEFINED_ENUM._serialized_end=58181 - _FLOWSIZEWEIGHTPAIRSCUSTOM._serialized_start=58209 - _FLOWSIZEWEIGHTPAIRSCUSTOM._serialized_end=58296 - _FLOWRATE._serialized_start=58299 - _FLOWRATE._serialized_end=58643 - _FLOWRATE_CHOICE._serialized_start=58477 - _FLOWRATE_CHOICE._serialized_end=58574 - _FLOWRATE_CHOICE_ENUM._serialized_start=58487 - _FLOWRATE_CHOICE_ENUM._serialized_end=58574 - _FLOWDURATION._serialized_start=58646 - _FLOWDURATION._serialized_end=58987 - _FLOWDURATION_CHOICE._serialized_start=58878 - _FLOWDURATION_CHOICE._serialized_end=58976 - _FLOWDURATION_CHOICE_ENUM._serialized_start=58888 - _FLOWDURATION_CHOICE_ENUM._serialized_end=58976 - _FLOWCONTINUOUS._serialized_start=58989 - _FLOWCONTINUOUS._serialized_end=59062 - _FLOWDELAY._serialized_start=59065 - _FLOWDELAY._serialized_end=59333 - _FLOWDELAY_CHOICE._serialized_start=59200 - _FLOWDELAY_CHOICE._serialized_end=59279 - _FLOWDELAY_CHOICE_ENUM._serialized_start=59210 - _FLOWDELAY_CHOICE_ENUM._serialized_end=59279 - _FLOWFIXEDPACKETS._serialized_start=59335 - _FLOWFIXEDPACKETS._serialized_end=59444 - _FLOWFIXEDSECONDS._serialized_start=59446 - _FLOWFIXEDSECONDS._serialized_end=59555 - _FLOWBURST._serialized_start=59558 - _FLOWBURST._serialized_end=59718 - _FLOWDURATIONINTERBURSTGAP._serialized_start=59721 - _FLOWDURATIONINTERBURSTGAP._serialized_end=60021 - _FLOWDURATIONINTERBURSTGAP_CHOICE._serialized_start=59200 - _FLOWDURATIONINTERBURSTGAP_CHOICE._serialized_end=59279 - _FLOWDURATIONINTERBURSTGAP_CHOICE_ENUM._serialized_start=59210 - _FLOWDURATIONINTERBURSTGAP_CHOICE_ENUM._serialized_end=59279 - _FLOWMETRICS._serialized_start=60024 - _FLOWMETRICS._serialized_end=60277 - _FLOWLATENCYMETRICS._serialized_start=60280 - _FLOWLATENCYMETRICS._serialized_end=60464 - _FLOWLATENCYMETRICS_MODE._serialized_start=60377 - _FLOWLATENCYMETRICS_MODE._serialized_end=60444 - _FLOWLATENCYMETRICS_MODE_ENUM._serialized_start=60385 - _FLOWLATENCYMETRICS_MODE_ENUM._serialized_end=60444 - _FLOWPREDEFINEDTAGS._serialized_start=60466 - _FLOWPREDEFINEDTAGS._serialized_end=60520 - _FLOWRXTXRATIO._serialized_start=60523 - _FLOWRXTXRATIO._serialized_end=60737 - _FLOWRXTXRATIO_CHOICE._serialized_start=60658 - _FLOWRXTXRATIO_CHOICE._serialized_end=60716 - _FLOWRXTXRATIO_CHOICE_ENUM._serialized_start=60668 - _FLOWRXTXRATIO_CHOICE_ENUM._serialized_end=60716 - _FLOWRXTXRATIORXCOUNT._serialized_start=60739 - _FLOWRXTXRATIORXCOUNT._serialized_end=60761 - _EVENT._serialized_start=60764 - _EVENT._serialized_end=60955 - _EVENTRXRATETHRESHOLD._serialized_start=60957 - _EVENTRXRATETHRESHOLD._serialized_end=61049 - _EVENTLINK._serialized_start=61051 - _EVENTLINK._serialized_end=61094 - _EVENTROUTEADVERTISEWITHDRAW._serialized_start=61096 - _EVENTROUTEADVERTISEWITHDRAW._serialized_end=61157 - _EVENTREQUEST._serialized_start=61160 - _EVENTREQUEST._serialized_end=61405 - _EVENTREQUEST_TYPE._serialized_start=61236 - _EVENTREQUEST_TYPE._serialized_end=61405 - _EVENTREQUEST_TYPE_ENUM._serialized_start=61245 - _EVENTREQUEST_TYPE_ENUM._serialized_end=61405 - _EVENTSUBSCRIPTION._serialized_start=61407 - _EVENTSUBSCRIPTION._serialized_end=61505 - _LLDP._serialized_start=61508 - _LLDP._serialized_end=61801 - _LLDPCONNECTION._serialized_start=61804 - _LLDPCONNECTION._serialized_end=61973 - _LLDPCONNECTION_CHOICE._serialized_start=61900 - _LLDPCONNECTION_CHOICE._serialized_end=61948 + _FLOWHEADER._serialized_end=48974 + _FLOWHEADER_CHOICE._serialized_start=48708 + _FLOWHEADER_CHOICE._serialized_end=48963 + _FLOWHEADER_CHOICE_ENUM._serialized_start=48719 + _FLOWHEADER_CHOICE_ENUM._serialized_end=48963 + _FLOWCUSTOM._serialized_start=48976 + _FLOWCUSTOM._serialized_end=49065 + _FLOWCUSTOMMETRICTAG._serialized_start=49067 + _FLOWCUSTOMMETRICTAG._serialized_end=49180 + _FLOWETHERNET._serialized_start=49183 + _FLOWETHERNET._serialized_end=49389 + _FLOWVLAN._serialized_start=49392 + _FLOWVLAN._serialized_end=49564 + _FLOWVXLAN._serialized_start=49567 + _FLOWVXLAN._serialized_end=49762 + _FLOWIPV4._serialized_start=49765 + _FLOWIPV4._serialized_end=50498 + _FLOWIPV4PRIORITY._serialized_start=50501 + _FLOWIPV4PRIORITY._serialized_end=50759 + _FLOWIPV4PRIORITY_CHOICE._serialized_start=50687 + _FLOWIPV4PRIORITY_CHOICE._serialized_end=50748 + _FLOWIPV4PRIORITY_CHOICE_ENUM._serialized_start=50697 + _FLOWIPV4PRIORITY_CHOICE_ENUM._serialized_end=50748 + _FLOWIPV4DSCP._serialized_start=50761 + _FLOWIPV4DSCP._serialized_end=50859 + _FLOWIPV4TOS._serialized_start=50862 + _FLOWIPV4TOS._serialized_end=51185 + _FLOWIPV6._serialized_start=51188 + _FLOWIPV6._serialized_end=51589 + _FLOWPFCPAUSE._serialized_start=51592 + _FLOWPFCPAUSE._serialized_end=52361 + _FLOWETHERNETPAUSE._serialized_start=52364 + _FLOWETHERNETPAUSE._serialized_end=52655 + _FLOWTCP._serialized_start=52658 + _FLOWTCP._serialized_end=53338 + _FLOWUDP._serialized_start=53341 + _FLOWUDP._serialized_end=53532 + _FLOWGRE._serialized_start=53535 + _FLOWGRE._serialized_end=53843 + _FLOWGTPV1._serialized_start=53846 + _FLOWGTPV1._serialized_end=54549 + _FLOWGTPEXTENSION._serialized_start=54552 + _FLOWGTPEXTENSION._serialized_end=54777 + _FLOWGTPV2._serialized_start=54780 + _FLOWGTPV2._serialized_end=55263 + _FLOWARP._serialized_start=55266 + _FLOWARP._serialized_end=55832 + _FLOWICMP._serialized_start=55835 + _FLOWICMP._serialized_end=55982 + _FLOWICMP_CHOICE._serialized_start=55928 + _FLOWICMP_CHOICE._serialized_end=55971 + _FLOWICMP_CHOICE_ENUM._serialized_start=55938 + _FLOWICMP_CHOICE_ENUM._serialized_end=55971 + _FLOWICMPECHO._serialized_start=55985 + _FLOWICMPECHO._serialized_end=56260 + _FLOWICMPV6._serialized_start=56263 + _FLOWICMPV6._serialized_end=56416 + _FLOWICMPV6_CHOICE._serialized_start=55928 + _FLOWICMPV6_CHOICE._serialized_end=55971 + _FLOWICMPV6_CHOICE_ENUM._serialized_start=55938 + _FLOWICMPV6_CHOICE_ENUM._serialized_end=55971 + _FLOWICMPV6ECHO._serialized_start=56419 + _FLOWICMPV6ECHO._serialized_end=56706 + _FLOWPPP._serialized_start=56709 + _FLOWPPP._serialized_end=56864 + _FLOWIGMPV1._serialized_start=56867 + _FLOWIGMPV1._serialized_end=57124 + _FLOWMPLS._serialized_start=57127 + _FLOWMPLS._serialized_end=57350 + _FLOWRSVP._serialized_start=57353 + _FLOWRSVP._serialized_end=57687 + _FLOWRSVPFLAG._serialized_start=57690 + _FLOWRSVPFLAG._serialized_end=57868 + _FLOWRSVPFLAG_CHOICE._serialized_start=57758 + _FLOWRSVPFLAG_CHOICE._serialized_end=57857 + _FLOWRSVPFLAG_CHOICE_ENUM._serialized_start=57768 + _FLOWRSVPFLAG_CHOICE_ENUM._serialized_end=57857 + _FLOWRSVPLENGTH._serialized_start=57871 + _FLOWRSVPLENGTH._serialized_end=58066 + _FLOWRSVPLENGTH_CHOICE._serialized_start=3062 + _FLOWRSVPLENGTH_CHOICE._serialized_end=3116 + _FLOWRSVPLENGTH_CHOICE_ENUM._serialized_start=3072 + _FLOWRSVPLENGTH_CHOICE_ENUM._serialized_end=3116 + _FLOWRSVPMESSAGE._serialized_start=58069 + _FLOWRSVPMESSAGE._serialized_end=58237 + _FLOWRSVPMESSAGE_CHOICE._serialized_start=58183 + _FLOWRSVPMESSAGE_CHOICE._serialized_end=58226 + _FLOWRSVPMESSAGE_CHOICE_ENUM._serialized_start=58193 + _FLOWRSVPMESSAGE_CHOICE_ENUM._serialized_end=58226 + _FLOWRSVPPATHMESSAGE._serialized_start=58239 + _FLOWRSVPPATHMESSAGE._serialized_end=58303 + _FLOWRSVPPATHOBJECTS._serialized_start=58305 + _FLOWRSVPPATHOBJECTS._serialized_end=58423 + _FLOWRSVPPATHOBJECTLENGTH._serialized_start=58426 + _FLOWRSVPPATHOBJECTLENGTH._serialized_end=58641 + _FLOWRSVPPATHOBJECTLENGTH_CHOICE._serialized_start=3062 + _FLOWRSVPPATHOBJECTLENGTH_CHOICE._serialized_end=3116 + _FLOWRSVPPATHOBJECTLENGTH_CHOICE_ENUM._serialized_start=3072 + _FLOWRSVPPATHOBJECTLENGTH_CHOICE_ENUM._serialized_end=3116 + _FLOWRSVPPATHOBJECTSCLASS._serialized_start=58644 + _FLOWRSVPPATHOBJECTSCLASS._serialized_end=59584 + _FLOWRSVPPATHOBJECTSCLASS_CHOICE._serialized_start=59364 + _FLOWRSVPPATHOBJECTSCLASS_CHOICE._serialized_end=59573 + _FLOWRSVPPATHOBJECTSCLASS_CHOICE_ENUM._serialized_start=59375 + _FLOWRSVPPATHOBJECTSCLASS_CHOICE_ENUM._serialized_end=59573 + _FLOWRSVPPATHOBJECTSCLASSSESSION._serialized_start=59586 + _FLOWRSVPPATHOBJECTSCLASSSESSION._serialized_end=59673 + _FLOWRSVPPATHOBJECTSSESSIONCTYPE._serialized_start=59676 + _FLOWRSVPPATHOBJECTSSESSIONCTYPE._serialized_end=59911 + _FLOWRSVPPATHOBJECTSSESSIONCTYPE_CHOICE._serialized_start=59846 + _FLOWRSVPPATHOBJECTSSESSIONCTYPE_CHOICE._serialized_end=59900 + _FLOWRSVPPATHOBJECTSSESSIONCTYPE_CHOICE_ENUM._serialized_start=59856 + _FLOWRSVPPATHOBJECTSSESSIONCTYPE_CHOICE_ENUM._serialized_end=59900 + _FLOWRSVPPATHSESSIONLSPTUNNELIPV4._serialized_start=59914 + _FLOWRSVPPATHSESSIONLSPTUNNELIPV4._serialized_end=60293 + _FLOWRSVPPATHOBJECTSCLASSRSVPHOP._serialized_start=60295 + _FLOWRSVPPATHOBJECTSCLASSRSVPHOP._serialized_end=60382 + _FLOWRSVPPATHOBJECTSRSVPHOPCTYPE._serialized_start=60385 + _FLOWRSVPPATHOBJECTSRSVPHOPCTYPE._serialized_end=60589 + _FLOWRSVPPATHOBJECTSRSVPHOPCTYPE_CHOICE._serialized_start=60535 + _FLOWRSVPPATHOBJECTSRSVPHOPCTYPE_CHOICE._serialized_end=60578 + _FLOWRSVPPATHOBJECTSRSVPHOPCTYPE_CHOICE_ENUM._serialized_start=23744 + _FLOWRSVPPATHOBJECTSRSVPHOPCTYPE_CHOICE_ENUM._serialized_end=23777 + _FLOWRSVPPATHRSVPHOPIPV4._serialized_start=60592 + _FLOWRSVPPATHRSVPHOPIPV4._serialized_end=60813 + _FLOWRSVPPATHOBJECTSCLASSTIMEVALUES._serialized_start=60815 + _FLOWRSVPPATHOBJECTSCLASSTIMEVALUES._serialized_end=60908 + _FLOWRSVPPATHOBJECTSTIMEVALUESCTYPE._serialized_start=60911 + _FLOWRSVPPATHOBJECTSTIMEVALUESCTYPE._serialized_end=61151 + _FLOWRSVPPATHOBJECTSTIMEVALUESCTYPE_CHOICE._serialized_start=61084 + _FLOWRSVPPATHOBJECTSTIMEVALUESCTYPE_CHOICE._serialized_end=61140 + _FLOWRSVPPATHOBJECTSTIMEVALUESCTYPE_CHOICE_ENUM._serialized_start=61094 + _FLOWRSVPPATHOBJECTSTIMEVALUESCTYPE_CHOICE_ENUM._serialized_end=61140 + _FLOWRSVPPATHTIMEVALUESTYPE1._serialized_start=61153 + _FLOWRSVPPATHTIMEVALUESTYPE1._serialized_end=61263 + _FLOWRSVPPATHOBJECTSCLASSEXPLICITROUTE._serialized_start=61265 + _FLOWRSVPPATHOBJECTSCLASSEXPLICITROUTE._serialized_end=61369 + _FLOWRSVPPATHOBJECTSCLASSEXPLICITROUTECTYPE._serialized_start=61372 + _FLOWRSVPPATHOBJECTSCLASSEXPLICITROUTECTYPE._serialized_end=61639 + _FLOWRSVPPATHOBJECTSCLASSEXPLICITROUTECTYPE_CHOICE._serialized_start=61568 + _FLOWRSVPPATHOBJECTSCLASSEXPLICITROUTECTYPE_CHOICE._serialized_end=61628 + _FLOWRSVPPATHOBJECTSCLASSEXPLICITROUTECTYPE_CHOICE_ENUM._serialized_start=61578 + _FLOWRSVPPATHOBJECTSCLASSEXPLICITROUTECTYPE_CHOICE_ENUM._serialized_end=61628 + _FLOWRSVPPATHEXPLICITROUTETYPE1._serialized_start=61641 + _FLOWRSVPPATHEXPLICITROUTETYPE1._serialized_end=61736 + _FLOWRSVPTYPE1EXPLICITROUTESUBOBJECTS._serialized_start=61738 + _FLOWRSVPTYPE1EXPLICITROUTESUBOBJECTS._serialized_end=61837 + _FLOWRSVPTYPE1EXPLICITROUTESUBOBJECTSTYPE._serialized_start=61840 + _FLOWRSVPTYPE1EXPLICITROUTESUBOBJECTSTYPE._serialized_end=62200 + _FLOWRSVPTYPE1EXPLICITROUTESUBOBJECTSTYPE_CHOICE._serialized_start=62114 + _FLOWRSVPTYPE1EXPLICITROUTESUBOBJECTSTYPE_CHOICE._serialized_end=62189 + _FLOWRSVPTYPE1EXPLICITROUTESUBOBJECTSTYPE_CHOICE_ENUM._serialized_start=62124 + _FLOWRSVPTYPE1EXPLICITROUTESUBOBJECTSTYPE_CHOICE_ENUM._serialized_end=62189 + _FLOWRSVPPATHEXPLICITROUTETYPE1IPV4PREFIX._serialized_start=62203 + _FLOWRSVPPATHEXPLICITROUTETYPE1IPV4PREFIX._serialized_end=62487 + _FLOWRSVPPATHEXPLICITROUTETYPE1FOURBYTEASNUMBER._serialized_start=62490 + _FLOWRSVPPATHEXPLICITROUTETYPE1FOURBYTEASNUMBER._serialized_end=62791 + _FLOWRSVPEXPLICITROUTELENGTH._serialized_start=62794 + _FLOWRSVPEXPLICITROUTELENGTH._serialized_end=63015 + _FLOWRSVPEXPLICITROUTELENGTH_CHOICE._serialized_start=3062 + _FLOWRSVPEXPLICITROUTELENGTH_CHOICE._serialized_end=3116 + _FLOWRSVPEXPLICITROUTELENGTH_CHOICE_ENUM._serialized_start=3072 + _FLOWRSVPEXPLICITROUTELENGTH_CHOICE_ENUM._serialized_end=3116 + _FLOWRSVPPATHOBJECTSCLASSLABELREQUEST._serialized_start=63017 + _FLOWRSVPPATHOBJECTSCLASSLABELREQUEST._serialized_end=63114 + _FLOWRSVPPATHOBJECTSLABELREQUESTCTYPE._serialized_start=63117 + _FLOWRSVPPATHOBJECTSLABELREQUESTCTYPE._serialized_end=63379 + _FLOWRSVPPATHOBJECTSLABELREQUESTCTYPE_CHOICE._serialized_start=63310 + _FLOWRSVPPATHOBJECTSLABELREQUESTCTYPE_CHOICE._serialized_end=63368 + _FLOWRSVPPATHOBJECTSLABELREQUESTCTYPE_CHOICE_ENUM._serialized_start=63320 + _FLOWRSVPPATHOBJECTSLABELREQUESTCTYPE_CHOICE_ENUM._serialized_end=63368 + _FLOWRSVPPATHLABELREQUESTWITHOUTLABELRANGE._serialized_start=63382 + _FLOWRSVPPATHLABELREQUESTWITHOUTLABELRANGE._serialized_end=63581 + _FLOWRSVPPATHOBJECTSCLASSSESSIONATTRIBUTE._serialized_start=63583 + _FLOWRSVPPATHOBJECTSCLASSSESSIONATTRIBUTE._serialized_end=63688 + _FLOWRSVPPATHOBJECTSSESSIONATTRIBUTECTYPE._serialized_start=63691 + _FLOWRSVPPATHOBJECTSSESSIONATTRIBUTECTYPE._serialized_end=64027 + _FLOWRSVPPATHOBJECTSSESSIONATTRIBUTECTYPE_CHOICE._serialized_start=63948 + _FLOWRSVPPATHOBJECTSSESSIONATTRIBUTECTYPE_CHOICE._serialized_end=64016 + _FLOWRSVPPATHOBJECTSSESSIONATTRIBUTECTYPE_CHOICE_ENUM._serialized_start=63958 + _FLOWRSVPPATHOBJECTSSESSIONATTRIBUTECTYPE_CHOICE_ENUM._serialized_end=64016 + _FLOWRSVPPATHSESSIONATTRIBUTELSPTUNNEL._serialized_start=64030 + _FLOWRSVPPATHSESSIONATTRIBUTELSPTUNNEL._serialized_end=64298 + _FLOWRSVPPATHSESSIONATTRIBUTELSPTUNNELRA._serialized_start=64301 + _FLOWRSVPPATHSESSIONATTRIBUTELSPTUNNELRA._serialized_end=64697 + _FLOWRSVPLSPTUNNELFLAG._serialized_start=64700 + _FLOWRSVPLSPTUNNELFLAG._serialized_end=64911 + _FLOWRSVPLSPTUNNELFLAG_CHOICE._serialized_start=64786 + _FLOWRSVPLSPTUNNELFLAG_CHOICE._serialized_end=64900 + _FLOWRSVPLSPTUNNELFLAG_CHOICE_ENUM._serialized_start=64796 + _FLOWRSVPLSPTUNNELFLAG_CHOICE_ENUM._serialized_end=64900 + _FLOWRSVPPATHOBJECTSCLASSSENDERTEMPLATE._serialized_start=64913 + _FLOWRSVPPATHOBJECTSCLASSSENDERTEMPLATE._serialized_end=65014 + _FLOWRSVPPATHOBJECTSSENDERTEMPLATECTYPE._serialized_start=65017 + _FLOWRSVPPATHOBJECTSSENDERTEMPLATECTYPE._serialized_end=65273 + _FLOWRSVPPATHOBJECTSSENDERTEMPLATECTYPE_CHOICE._serialized_start=59846 + _FLOWRSVPPATHOBJECTSSENDERTEMPLATECTYPE_CHOICE._serialized_end=59900 + _FLOWRSVPPATHOBJECTSSENDERTEMPLATECTYPE_CHOICE_ENUM._serialized_start=59856 + _FLOWRSVPPATHOBJECTSSENDERTEMPLATECTYPE_CHOICE_ENUM._serialized_end=59900 + _FLOWRSVPPATHSENDERTEMPLATELSPTUNNELIPV4._serialized_start=65276 + _FLOWRSVPPATHSENDERTEMPLATELSPTUNNELIPV4._serialized_end=65582 + _FLOWRSVPPATHOBJECTSCLASSSENDERTSPEC._serialized_start=65584 + _FLOWRSVPPATHOBJECTSCLASSSENDERTSPEC._serialized_end=65679 + _FLOWRSVPPATHOBJECTSSENDERTSPECCTYPE._serialized_start=65682 + _FLOWRSVPPATHOBJECTSSENDERTSPECCTYPE._serialized_end=65909 + _FLOWRSVPPATHOBJECTSSENDERTSPECCTYPE_CHOICE._serialized_start=65851 + _FLOWRSVPPATHOBJECTSSENDERTSPECCTYPE_CHOICE._serialized_end=65898 + _FLOWRSVPPATHOBJECTSSENDERTSPECCTYPE_CHOICE_ENUM._serialized_start=65861 + _FLOWRSVPPATHOBJECTSSENDERTSPECCTYPE_CHOICE_ENUM._serialized_end=65898 + _FLOWRSVPPATHSENDERTSPECINTSERV._serialized_start=65912 + _FLOWRSVPPATHSENDERTSPECINTSERV._serialized_end=67112 + _FLOWRSVPPATHOBJECTSCLASSRECORDROUTE._serialized_start=67114 + _FLOWRSVPPATHOBJECTSCLASSRECORDROUTE._serialized_end=67209 + _FLOWRSVPPATHOBJECTSRECORDROUTECTYPE._serialized_start=67212 + _FLOWRSVPPATHOBJECTSRECORDROUTECTYPE._serialized_end=67459 + _FLOWRSVPPATHOBJECTSRECORDROUTECTYPE_CHOICE._serialized_start=67390 + _FLOWRSVPPATHOBJECTSRECORDROUTECTYPE_CHOICE._serialized_end=67448 + _FLOWRSVPPATHOBJECTSRECORDROUTECTYPE_CHOICE_ENUM._serialized_start=67400 + _FLOWRSVPPATHOBJECTSRECORDROUTECTYPE_CHOICE_ENUM._serialized_end=67448 + _FLOWRSVPPATHRECORDROUTETYPE1._serialized_start=67461 + _FLOWRSVPPATHRECORDROUTETYPE1._serialized_end=67552 + _FLOWRSVPTYPE1RECORDROUTESUBOBJECTS._serialized_start=67554 + _FLOWRSVPTYPE1RECORDROUTESUBOBJECTS._serialized_end=67654 + _FLOWRSVPPATHOBJECTSRECORDROUTESUBOBJECTTYPE._serialized_start=67657 + _FLOWRSVPPATHOBJECTSRECORDROUTESUBOBJECTTYPE._serialized_end=67983 + _FLOWRSVPPATHOBJECTSRECORDROUTESUBOBJECTTYPE_CHOICE._serialized_start=67910 + _FLOWRSVPPATHOBJECTSRECORDROUTESUBOBJECTTYPE_CHOICE._serialized_end=67972 + _FLOWRSVPPATHOBJECTSRECORDROUTESUBOBJECTTYPE_CHOICE_ENUM._serialized_start=67920 + _FLOWRSVPPATHOBJECTSRECORDROUTESUBOBJECTTYPE_CHOICE_ENUM._serialized_end=67972 + _FLOWRSVPPATHRECORDROUTETYPE1IPV4ADDRESS._serialized_start=67986 + _FLOWRSVPPATHRECORDROUTETYPE1IPV4ADDRESS._serialized_end=68298 + _FLOWRSVPRECORDROUTEIPV4FLAG._serialized_start=68301 + _FLOWRSVPRECORDROUTEIPV4FLAG._serialized_end=68504 + _FLOWRSVPRECORDROUTEIPV4FLAG_CHOICE._serialized_start=68399 + _FLOWRSVPRECORDROUTEIPV4FLAG_CHOICE._serialized_end=68493 + _FLOWRSVPRECORDROUTEIPV4FLAG_CHOICE_ENUM._serialized_start=68409 + _FLOWRSVPRECORDROUTEIPV4FLAG_CHOICE_ENUM._serialized_end=68493 + _FLOWRSVPPATHRECORDROUTETYPE1LABEL._serialized_start=68507 + _FLOWRSVPPATHRECORDROUTETYPE1LABEL._serialized_end=68793 + _FLOWRSVPROUTERECORDLENGTH._serialized_start=68796 + _FLOWRSVPROUTERECORDLENGTH._serialized_end=69013 + _FLOWRSVPROUTERECORDLENGTH_CHOICE._serialized_start=3062 + _FLOWRSVPROUTERECORDLENGTH_CHOICE._serialized_end=3116 + _FLOWRSVPROUTERECORDLENGTH_CHOICE_ENUM._serialized_start=3072 + _FLOWRSVPROUTERECORDLENGTH_CHOICE_ENUM._serialized_end=3116 + _FLOWRSVPPATHOBJECTSCUSTOM._serialized_start=69016 + _FLOWRSVPPATHOBJECTSCUSTOM._serialized_end=69186 + _FLOWRSVPOBJECTOPTIONSCUSTOMLENGTH._serialized_start=69189 + _FLOWRSVPOBJECTOPTIONSCUSTOMLENGTH._serialized_end=69422 + _FLOWRSVPOBJECTOPTIONSCUSTOMLENGTH_CHOICE._serialized_start=3062 + _FLOWRSVPOBJECTOPTIONSCUSTOMLENGTH_CHOICE._serialized_end=3116 + _FLOWRSVPOBJECTOPTIONSCUSTOMLENGTH_CHOICE_ENUM._serialized_start=3072 + _FLOWRSVPOBJECTOPTIONSCUSTOMLENGTH_CHOICE_ENUM._serialized_end=3116 + _FLOWSIZE._serialized_start=69425 + _FLOWSIZE._serialized_end=69743 + _FLOWSIZE_CHOICE._serialized_start=69633 + _FLOWSIZE_CHOICE._serialized_end=69722 + _FLOWSIZE_CHOICE_ENUM._serialized_start=69643 + _FLOWSIZE_CHOICE_ENUM._serialized_end=69722 + _FLOWSIZEINCREMENT._serialized_start=69745 + _FLOWSIZEINCREMENT._serialized_end=69848 + _FLOWSIZERANDOM._serialized_start=69850 + _FLOWSIZERANDOM._serialized_end=69918 + _FLOWSIZEWEIGHTPAIRS._serialized_start=69921 + _FLOWSIZEWEIGHTPAIRS._serialized_end=70318 + _FLOWSIZEWEIGHTPAIRS_CHOICE._serialized_start=70118 + _FLOWSIZEWEIGHTPAIRS_CHOICE._serialized_end=70179 + _FLOWSIZEWEIGHTPAIRS_CHOICE_ENUM._serialized_start=70128 + _FLOWSIZEWEIGHTPAIRS_CHOICE_ENUM._serialized_end=70179 + _FLOWSIZEWEIGHTPAIRS_PREDEFINED._serialized_start=70181 + _FLOWSIZEWEIGHTPAIRS_PREDEFINED._serialized_end=70292 + _FLOWSIZEWEIGHTPAIRS_PREDEFINED_ENUM._serialized_start=70195 + _FLOWSIZEWEIGHTPAIRS_PREDEFINED_ENUM._serialized_end=70292 + _FLOWSIZEWEIGHTPAIRSCUSTOM._serialized_start=70320 + _FLOWSIZEWEIGHTPAIRSCUSTOM._serialized_end=70407 + _FLOWRATE._serialized_start=70410 + _FLOWRATE._serialized_end=70754 + _FLOWRATE_CHOICE._serialized_start=70588 + _FLOWRATE_CHOICE._serialized_end=70685 + _FLOWRATE_CHOICE_ENUM._serialized_start=70598 + _FLOWRATE_CHOICE_ENUM._serialized_end=70685 + _FLOWDURATION._serialized_start=70757 + _FLOWDURATION._serialized_end=71098 + _FLOWDURATION_CHOICE._serialized_start=70989 + _FLOWDURATION_CHOICE._serialized_end=71087 + _FLOWDURATION_CHOICE_ENUM._serialized_start=70999 + _FLOWDURATION_CHOICE_ENUM._serialized_end=71087 + _FLOWCONTINUOUS._serialized_start=71100 + _FLOWCONTINUOUS._serialized_end=71173 + _FLOWDELAY._serialized_start=71176 + _FLOWDELAY._serialized_end=71444 + _FLOWDELAY_CHOICE._serialized_start=71311 + _FLOWDELAY_CHOICE._serialized_end=71390 + _FLOWDELAY_CHOICE_ENUM._serialized_start=71321 + _FLOWDELAY_CHOICE_ENUM._serialized_end=71390 + _FLOWFIXEDPACKETS._serialized_start=71446 + _FLOWFIXEDPACKETS._serialized_end=71555 + _FLOWFIXEDSECONDS._serialized_start=71557 + _FLOWFIXEDSECONDS._serialized_end=71666 + _FLOWBURST._serialized_start=71669 + _FLOWBURST._serialized_end=71829 + _FLOWDURATIONINTERBURSTGAP._serialized_start=71832 + _FLOWDURATIONINTERBURSTGAP._serialized_end=72132 + _FLOWDURATIONINTERBURSTGAP_CHOICE._serialized_start=71311 + _FLOWDURATIONINTERBURSTGAP_CHOICE._serialized_end=71390 + _FLOWDURATIONINTERBURSTGAP_CHOICE_ENUM._serialized_start=71321 + _FLOWDURATIONINTERBURSTGAP_CHOICE_ENUM._serialized_end=71390 + _FLOWMETRICS._serialized_start=72135 + _FLOWMETRICS._serialized_end=72388 + _FLOWLATENCYMETRICS._serialized_start=72391 + _FLOWLATENCYMETRICS._serialized_end=72575 + _FLOWLATENCYMETRICS_MODE._serialized_start=72488 + _FLOWLATENCYMETRICS_MODE._serialized_end=72555 + _FLOWLATENCYMETRICS_MODE_ENUM._serialized_start=72496 + _FLOWLATENCYMETRICS_MODE_ENUM._serialized_end=72555 + _FLOWPREDEFINEDTAGS._serialized_start=72577 + _FLOWPREDEFINEDTAGS._serialized_end=72631 + _FLOWRXTXRATIO._serialized_start=72634 + _FLOWRXTXRATIO._serialized_end=72848 + _FLOWRXTXRATIO_CHOICE._serialized_start=72769 + _FLOWRXTXRATIO_CHOICE._serialized_end=72827 + _FLOWRXTXRATIO_CHOICE_ENUM._serialized_start=72779 + _FLOWRXTXRATIO_CHOICE_ENUM._serialized_end=72827 + _FLOWRXTXRATIORXCOUNT._serialized_start=72850 + _FLOWRXTXRATIORXCOUNT._serialized_end=72872 + _EVENT._serialized_start=72875 + _EVENT._serialized_end=73066 + _EVENTRXRATETHRESHOLD._serialized_start=73068 + _EVENTRXRATETHRESHOLD._serialized_end=73160 + _EVENTLINK._serialized_start=73162 + _EVENTLINK._serialized_end=73205 + _EVENTROUTEADVERTISEWITHDRAW._serialized_start=73207 + _EVENTROUTEADVERTISEWITHDRAW._serialized_end=73268 + _EVENTREQUEST._serialized_start=73271 + _EVENTREQUEST._serialized_end=73516 + _EVENTREQUEST_TYPE._serialized_start=73347 + _EVENTREQUEST_TYPE._serialized_end=73516 + _EVENTREQUEST_TYPE_ENUM._serialized_start=73356 + _EVENTREQUEST_TYPE_ENUM._serialized_end=73516 + _EVENTSUBSCRIPTION._serialized_start=73518 + _EVENTSUBSCRIPTION._serialized_end=73616 + _LLDP._serialized_start=73619 + _LLDP._serialized_end=73912 + _LLDPCONNECTION._serialized_start=73915 + _LLDPCONNECTION._serialized_end=74084 + _LLDPCONNECTION_CHOICE._serialized_start=74011 + _LLDPCONNECTION_CHOICE._serialized_end=74059 _LLDPCONNECTION_CHOICE_ENUM._serialized_start=2258 _LLDPCONNECTION_CHOICE_ENUM._serialized_end=2296 - _LLDPCHASSISID._serialized_start=61976 - _LLDPCHASSISID._serialized_end=62329 - _LLDPCHASSISID_CHOICE._serialized_start=62168 - _LLDPCHASSISID_CHOICE._serialized_end=62273 - _LLDPCHASSISID_CHOICE_ENUM._serialized_start=62178 - _LLDPCHASSISID_CHOICE_ENUM._serialized_end=62273 - _LLDPPORTID._serialized_start=62332 - _LLDPPORTID._serialized_end=62683 - _LLDPPORTID_CHOICE._serialized_start=62168 - _LLDPPORTID_CHOICE._serialized_end=62273 - _LLDPPORTID_CHOICE_ENUM._serialized_start=62178 - _LLDPPORTID_CHOICE_ENUM._serialized_end=62273 - _LLDPCHASSISMACSUBTYPE._serialized_start=62686 - _LLDPCHASSISMACSUBTYPE._serialized_end=62895 + _LLDPCHASSISID._serialized_start=74087 + _LLDPCHASSISID._serialized_end=74440 + _LLDPCHASSISID_CHOICE._serialized_start=74279 + _LLDPCHASSISID_CHOICE._serialized_end=74384 + _LLDPCHASSISID_CHOICE_ENUM._serialized_start=74289 + _LLDPCHASSISID_CHOICE_ENUM._serialized_end=74384 + _LLDPPORTID._serialized_start=74443 + _LLDPPORTID._serialized_end=74794 + _LLDPPORTID_CHOICE._serialized_start=74279 + _LLDPPORTID_CHOICE._serialized_end=74384 + _LLDPPORTID_CHOICE_ENUM._serialized_start=74289 + _LLDPPORTID_CHOICE_ENUM._serialized_end=74384 + _LLDPCHASSISMACSUBTYPE._serialized_start=74797 + _LLDPCHASSISMACSUBTYPE._serialized_end=75006 _LLDPCHASSISMACSUBTYPE_CHOICE._serialized_start=3062 _LLDPCHASSISMACSUBTYPE_CHOICE._serialized_end=3116 _LLDPCHASSISMACSUBTYPE_CHOICE_ENUM._serialized_start=3072 _LLDPCHASSISMACSUBTYPE_CHOICE_ENUM._serialized_end=3116 - _LLDPPORTINTERFACENAMESUBTYPE._serialized_start=62898 - _LLDPPORTINTERFACENAMESUBTYPE._serialized_end=63121 + _LLDPPORTINTERFACENAMESUBTYPE._serialized_start=75009 + _LLDPPORTINTERFACENAMESUBTYPE._serialized_end=75232 _LLDPPORTINTERFACENAMESUBTYPE_CHOICE._serialized_start=3062 _LLDPPORTINTERFACENAMESUBTYPE_CHOICE._serialized_end=3116 _LLDPPORTINTERFACENAMESUBTYPE_CHOICE_ENUM._serialized_start=3072 _LLDPPORTINTERFACENAMESUBTYPE_CHOICE_ENUM._serialized_end=3116 - _LLDPSYSTEMNAME._serialized_start=63124 - _LLDPSYSTEMNAME._serialized_end=63319 + _LLDPSYSTEMNAME._serialized_start=75235 + _LLDPSYSTEMNAME._serialized_end=75430 _LLDPSYSTEMNAME_CHOICE._serialized_start=3062 _LLDPSYSTEMNAME_CHOICE._serialized_end=3116 _LLDPSYSTEMNAME_CHOICE_ENUM._serialized_start=3072 _LLDPSYSTEMNAME_CHOICE_ENUM._serialized_end=3116 - _ERROR._serialized_start=63322 - _ERROR._serialized_end=63486 - _ERROR_KIND._serialized_start=63407 - _ERROR_KIND._serialized_end=63468 - _ERROR_KIND_ENUM._serialized_start=63415 - _ERROR_KIND_ENUM._serialized_end=63468 - _WARNING._serialized_start=63488 - _WARNING._serialized_end=63515 - _CONFIGUPDATE._serialized_start=63518 - _CONFIGUPDATE._serialized_end=63674 - _CONFIGUPDATE_CHOICE._serialized_start=63619 - _CONFIGUPDATE_CHOICE._serialized_end=63663 - _CONFIGUPDATE_CHOICE_ENUM._serialized_start=63629 - _CONFIGUPDATE_CHOICE_ENUM._serialized_end=63663 - _FLOWSUPDATE._serialized_start=63677 - _FLOWSUPDATE._serialized_end=63839 - _FLOWSUPDATE_PROPERTYNAMES._serialized_start=63779 - _FLOWSUPDATE_PROPERTYNAMES._serialized_end=63839 - _FLOWSUPDATE_PROPERTYNAMES_ENUM._serialized_start=63796 - _FLOWSUPDATE_PROPERTYNAMES_ENUM._serialized_end=63839 - _CONTROLSTATE._serialized_start=63842 - _CONTROLSTATE._serialized_end=64095 - _CONTROLSTATE_CHOICE._serialized_start=64014 - _CONTROLSTATE_CHOICE._serialized_end=64084 - _CONTROLSTATE_CHOICE_ENUM._serialized_start=64024 - _CONTROLSTATE_CHOICE_ENUM._serialized_end=64084 - _STATEPORT._serialized_start=64098 - _STATEPORT._serialized_end=64301 - _STATEPORT_CHOICE._serialized_start=64234 - _STATEPORT_CHOICE._serialized_end=64290 - _STATEPORT_CHOICE_ENUM._serialized_start=64244 - _STATEPORT_CHOICE_ENUM._serialized_end=64290 - _STATETRAFFIC._serialized_start=64304 - _STATETRAFFIC._serialized_end=64489 - _STATETRAFFIC_CHOICE._serialized_start=64426 - _STATETRAFFIC_CHOICE._serialized_end=64478 - _STATETRAFFIC_CHOICE_ENUM._serialized_start=64436 - _STATETRAFFIC_CHOICE_ENUM._serialized_end=64478 - _STATEPROTOCOL._serialized_start=64492 - _STATEPROTOCOL._serialized_end=64843 - _STATEPROTOCOL_CHOICE._serialized_start=64750 - _STATEPROTOCOL_CHOICE._serialized_end=64832 - _STATEPROTOCOL_CHOICE_ENUM._serialized_start=64760 - _STATEPROTOCOL_CHOICE_ENUM._serialized_end=64832 - _STATEPORTLINK._serialized_start=64846 - _STATEPORTLINK._serialized_end=64994 - _STATEPORTLINK_STATE._serialized_start=64934 - _STATEPORTLINK_STATE._serialized_end=64984 + _ERROR._serialized_start=75433 + _ERROR._serialized_end=75597 + _ERROR_KIND._serialized_start=75518 + _ERROR_KIND._serialized_end=75579 + _ERROR_KIND_ENUM._serialized_start=75526 + _ERROR_KIND_ENUM._serialized_end=75579 + _WARNING._serialized_start=75599 + _WARNING._serialized_end=75626 + _CONFIGUPDATE._serialized_start=75629 + _CONFIGUPDATE._serialized_end=75785 + _CONFIGUPDATE_CHOICE._serialized_start=75730 + _CONFIGUPDATE_CHOICE._serialized_end=75774 + _CONFIGUPDATE_CHOICE_ENUM._serialized_start=75740 + _CONFIGUPDATE_CHOICE_ENUM._serialized_end=75774 + _FLOWSUPDATE._serialized_start=75788 + _FLOWSUPDATE._serialized_end=75950 + _FLOWSUPDATE_PROPERTYNAMES._serialized_start=75890 + _FLOWSUPDATE_PROPERTYNAMES._serialized_end=75950 + _FLOWSUPDATE_PROPERTYNAMES_ENUM._serialized_start=75907 + _FLOWSUPDATE_PROPERTYNAMES_ENUM._serialized_end=75950 + _CONTROLSTATE._serialized_start=75953 + _CONTROLSTATE._serialized_end=76206 + _CONTROLSTATE_CHOICE._serialized_start=76125 + _CONTROLSTATE_CHOICE._serialized_end=76195 + _CONTROLSTATE_CHOICE_ENUM._serialized_start=76135 + _CONTROLSTATE_CHOICE_ENUM._serialized_end=76195 + _STATEPORT._serialized_start=76209 + _STATEPORT._serialized_end=76412 + _STATEPORT_CHOICE._serialized_start=76345 + _STATEPORT_CHOICE._serialized_end=76401 + _STATEPORT_CHOICE_ENUM._serialized_start=76355 + _STATEPORT_CHOICE_ENUM._serialized_end=76401 + _STATETRAFFIC._serialized_start=76415 + _STATETRAFFIC._serialized_end=76600 + _STATETRAFFIC_CHOICE._serialized_start=76537 + _STATETRAFFIC_CHOICE._serialized_end=76589 + _STATETRAFFIC_CHOICE_ENUM._serialized_start=76547 + _STATETRAFFIC_CHOICE_ENUM._serialized_end=76589 + _STATEPROTOCOL._serialized_start=76603 + _STATEPROTOCOL._serialized_end=76954 + _STATEPROTOCOL_CHOICE._serialized_start=76861 + _STATEPROTOCOL_CHOICE._serialized_end=76943 + _STATEPROTOCOL_CHOICE_ENUM._serialized_start=76871 + _STATEPROTOCOL_CHOICE_ENUM._serialized_end=76943 + _STATEPORTLINK._serialized_start=76957 + _STATEPORTLINK._serialized_end=77105 + _STATEPORTLINK_STATE._serialized_start=77045 + _STATEPORTLINK_STATE._serialized_end=77095 _STATEPORTLINK_STATE_ENUM._serialized_start=12631 _STATEPORTLINK_STATE_ENUM._serialized_end=12672 - _STATEPORTCAPTURE._serialized_start=64997 - _STATEPORTCAPTURE._serialized_end=65154 - _STATEPORTCAPTURE_STATE._serialized_start=65091 - _STATEPORTCAPTURE_STATE._serialized_end=65144 - _STATEPORTCAPTURE_STATE_ENUM._serialized_start=65100 - _STATEPORTCAPTURE_STATE_ENUM._serialized_end=65144 - _STATETRAFFICFLOWTRANSMIT._serialized_start=65157 - _STATETRAFFICFLOWTRANSMIT._serialized_end=65353 - _STATETRAFFICFLOWTRANSMIT_STATE._serialized_start=65267 - _STATETRAFFICFLOWTRANSMIT_STATE._serialized_end=65343 - _STATETRAFFICFLOWTRANSMIT_STATE_ENUM._serialized_start=65276 - _STATETRAFFICFLOWTRANSMIT_STATE_ENUM._serialized_end=65343 - _STATEPROTOCOLALL._serialized_start=65356 - _STATEPROTOCOLALL._serialized_end=65493 - _STATEPROTOCOLALL_STATE._serialized_start=65091 - _STATEPROTOCOLALL_STATE._serialized_end=65144 - _STATEPROTOCOLALL_STATE_ENUM._serialized_start=65100 - _STATEPROTOCOLALL_STATE_ENUM._serialized_end=65144 - _STATEPROTOCOLROUTE._serialized_start=65496 - _STATEPROTOCOLROUTE._serialized_end=65660 - _STATEPROTOCOLROUTE_STATE._serialized_start=65589 - _STATEPROTOCOLROUTE_STATE._serialized_end=65650 - _STATEPROTOCOLROUTE_STATE_ENUM._serialized_start=65598 - _STATEPROTOCOLROUTE_STATE_ENUM._serialized_end=65650 - _STATEPROTOCOLLACP._serialized_start=65663 - _STATEPROTOCOLLACP._serialized_end=65915 - _STATEPROTOCOLLACP_CHOICE._serialized_start=65842 - _STATEPROTOCOLLACP_CHOICE._serialized_end=65904 - _STATEPROTOCOLLACP_CHOICE_ENUM._serialized_start=65852 - _STATEPROTOCOLLACP_CHOICE_ENUM._serialized_end=65904 - _STATEPROTOCOLLACPADMIN._serialized_start=65918 - _STATEPROTOCOLLACPADMIN._serialized_end=66090 - _STATEPROTOCOLLACPADMIN_STATE._serialized_start=64934 - _STATEPROTOCOLLACPADMIN_STATE._serialized_end=64984 + _STATEPORTCAPTURE._serialized_start=77108 + _STATEPORTCAPTURE._serialized_end=77265 + _STATEPORTCAPTURE_STATE._serialized_start=77202 + _STATEPORTCAPTURE_STATE._serialized_end=77255 + _STATEPORTCAPTURE_STATE_ENUM._serialized_start=77211 + _STATEPORTCAPTURE_STATE_ENUM._serialized_end=77255 + _STATETRAFFICFLOWTRANSMIT._serialized_start=77268 + _STATETRAFFICFLOWTRANSMIT._serialized_end=77464 + _STATETRAFFICFLOWTRANSMIT_STATE._serialized_start=77378 + _STATETRAFFICFLOWTRANSMIT_STATE._serialized_end=77454 + _STATETRAFFICFLOWTRANSMIT_STATE_ENUM._serialized_start=77387 + _STATETRAFFICFLOWTRANSMIT_STATE_ENUM._serialized_end=77454 + _STATEPROTOCOLALL._serialized_start=77467 + _STATEPROTOCOLALL._serialized_end=77604 + _STATEPROTOCOLALL_STATE._serialized_start=77202 + _STATEPROTOCOLALL_STATE._serialized_end=77255 + _STATEPROTOCOLALL_STATE_ENUM._serialized_start=77211 + _STATEPROTOCOLALL_STATE_ENUM._serialized_end=77255 + _STATEPROTOCOLROUTE._serialized_start=77607 + _STATEPROTOCOLROUTE._serialized_end=77771 + _STATEPROTOCOLROUTE_STATE._serialized_start=77700 + _STATEPROTOCOLROUTE_STATE._serialized_end=77761 + _STATEPROTOCOLROUTE_STATE_ENUM._serialized_start=77709 + _STATEPROTOCOLROUTE_STATE_ENUM._serialized_end=77761 + _STATEPROTOCOLLACP._serialized_start=77774 + _STATEPROTOCOLLACP._serialized_end=78026 + _STATEPROTOCOLLACP_CHOICE._serialized_start=77953 + _STATEPROTOCOLLACP_CHOICE._serialized_end=78015 + _STATEPROTOCOLLACP_CHOICE_ENUM._serialized_start=77963 + _STATEPROTOCOLLACP_CHOICE_ENUM._serialized_end=78015 + _STATEPROTOCOLLACPADMIN._serialized_start=78029 + _STATEPROTOCOLLACPADMIN._serialized_end=78201 + _STATEPROTOCOLLACPADMIN_STATE._serialized_start=77045 + _STATEPROTOCOLLACPADMIN_STATE._serialized_end=77095 _STATEPROTOCOLLACPADMIN_STATE_ENUM._serialized_start=12631 _STATEPROTOCOLLACPADMIN_STATE_ENUM._serialized_end=12672 - _STATEPROTOCOLLACPMEMBERPORTS._serialized_start=66093 - _STATEPROTOCOLLACPMEMBERPORTS._serialized_end=66277 - _STATEPROTOCOLLACPMEMBERPORTS_STATE._serialized_start=64934 - _STATEPROTOCOLLACPMEMBERPORTS_STATE._serialized_end=64984 + _STATEPROTOCOLLACPMEMBERPORTS._serialized_start=78204 + _STATEPROTOCOLLACPMEMBERPORTS._serialized_end=78388 + _STATEPROTOCOLLACPMEMBERPORTS_STATE._serialized_start=77045 + _STATEPROTOCOLLACPMEMBERPORTS_STATE._serialized_end=77095 _STATEPROTOCOLLACPMEMBERPORTS_STATE_ENUM._serialized_start=12631 _STATEPROTOCOLLACPMEMBERPORTS_STATE_ENUM._serialized_end=12672 - _STATEPROTOCOLBGP._serialized_start=66280 - _STATEPROTOCOLBGP._serialized_end=66454 - _STATEPROTOCOLBGP_CHOICE._serialized_start=66399 - _STATEPROTOCOLBGP_CHOICE._serialized_end=66443 - _STATEPROTOCOLBGP_CHOICE_ENUM._serialized_start=66409 - _STATEPROTOCOLBGP_CHOICE_ENUM._serialized_end=66443 - _STATEPROTOCOLBGPPEERS._serialized_start=66457 - _STATEPROTOCOLBGPPEERS._serialized_end=66621 - _STATEPROTOCOLBGPPEERS_STATE._serialized_start=64934 - _STATEPROTOCOLBGPPEERS_STATE._serialized_end=64984 + _STATEPROTOCOLBGP._serialized_start=78391 + _STATEPROTOCOLBGP._serialized_end=78565 + _STATEPROTOCOLBGP_CHOICE._serialized_start=78510 + _STATEPROTOCOLBGP_CHOICE._serialized_end=78554 + _STATEPROTOCOLBGP_CHOICE_ENUM._serialized_start=78520 + _STATEPROTOCOLBGP_CHOICE_ENUM._serialized_end=78554 + _STATEPROTOCOLBGPPEERS._serialized_start=78568 + _STATEPROTOCOLBGPPEERS._serialized_end=78732 + _STATEPROTOCOLBGPPEERS_STATE._serialized_start=77045 + _STATEPROTOCOLBGPPEERS_STATE._serialized_end=77095 _STATEPROTOCOLBGPPEERS_STATE_ENUM._serialized_start=12631 _STATEPROTOCOLBGPPEERS_STATE_ENUM._serialized_end=12672 - _STATEPROTOCOLISIS._serialized_start=66624 - _STATEPROTOCOLISIS._serialized_end=66807 - _STATEPROTOCOLISIS_CHOICE._serialized_start=66750 - _STATEPROTOCOLISIS_CHOICE._serialized_end=66796 - _STATEPROTOCOLISIS_CHOICE_ENUM._serialized_start=66760 - _STATEPROTOCOLISIS_CHOICE_ENUM._serialized_end=66796 - _STATEPROTOCOLISISROUTERS._serialized_start=66810 - _STATEPROTOCOLISISROUTERS._serialized_end=66982 - _STATEPROTOCOLISISROUTERS_STATE._serialized_start=64934 - _STATEPROTOCOLISISROUTERS_STATE._serialized_end=64984 + _STATEPROTOCOLISIS._serialized_start=78735 + _STATEPROTOCOLISIS._serialized_end=78918 + _STATEPROTOCOLISIS_CHOICE._serialized_start=78861 + _STATEPROTOCOLISIS_CHOICE._serialized_end=78907 + _STATEPROTOCOLISIS_CHOICE_ENUM._serialized_start=78871 + _STATEPROTOCOLISIS_CHOICE_ENUM._serialized_end=78907 + _STATEPROTOCOLISISROUTERS._serialized_start=78921 + _STATEPROTOCOLISISROUTERS._serialized_end=79093 + _STATEPROTOCOLISISROUTERS_STATE._serialized_start=77045 + _STATEPROTOCOLISISROUTERS_STATE._serialized_end=77095 _STATEPROTOCOLISISROUTERS_STATE_ENUM._serialized_start=12631 _STATEPROTOCOLISISROUTERS_STATE_ENUM._serialized_end=12672 - _CONTROLACTION._serialized_start=66985 - _CONTROLACTION._serialized_end=67152 - _CONTROLACTION_CHOICE._serialized_start=67094 - _CONTROLACTION_CHOICE._serialized_end=67141 - _CONTROLACTION_CHOICE_ENUM._serialized_start=67104 - _CONTROLACTION_CHOICE_ENUM._serialized_end=67141 - _CONTROLACTIONRESPONSE._serialized_start=67154 - _CONTROLACTIONRESPONSE._serialized_end=67234 - _ACTIONRESPONSE._serialized_start=67237 - _ACTIONRESPONSE._serialized_end=67414 - _ACTIONRESPONSE_CHOICE._serialized_start=67094 - _ACTIONRESPONSE_CHOICE._serialized_end=67141 - _ACTIONRESPONSE_CHOICE_ENUM._serialized_start=67104 - _ACTIONRESPONSE_CHOICE_ENUM._serialized_end=67141 - _ACTIONPROTOCOL._serialized_start=67417 - _ACTIONPROTOCOL._serialized_end=67677 - _ACTIONPROTOCOL_CHOICE._serialized_start=67604 - _ACTIONPROTOCOL_CHOICE._serialized_end=67666 - _ACTIONPROTOCOL_CHOICE_ENUM._serialized_start=67614 - _ACTIONPROTOCOL_CHOICE_ENUM._serialized_end=67666 - _ACTIONRESPONSEPROTOCOL._serialized_start=67680 - _ACTIONRESPONSEPROTOCOL._serialized_end=67926 - _ACTIONRESPONSEPROTOCOL_CHOICE._serialized_start=67862 - _ACTIONRESPONSEPROTOCOL_CHOICE._serialized_end=67915 + _CONTROLACTION._serialized_start=79096 + _CONTROLACTION._serialized_end=79263 + _CONTROLACTION_CHOICE._serialized_start=79205 + _CONTROLACTION_CHOICE._serialized_end=79252 + _CONTROLACTION_CHOICE_ENUM._serialized_start=79215 + _CONTROLACTION_CHOICE_ENUM._serialized_end=79252 + _CONTROLACTIONRESPONSE._serialized_start=79265 + _CONTROLACTIONRESPONSE._serialized_end=79345 + _ACTIONRESPONSE._serialized_start=79348 + _ACTIONRESPONSE._serialized_end=79525 + _ACTIONRESPONSE_CHOICE._serialized_start=79205 + _ACTIONRESPONSE_CHOICE._serialized_end=79252 + _ACTIONRESPONSE_CHOICE_ENUM._serialized_start=79215 + _ACTIONRESPONSE_CHOICE_ENUM._serialized_end=79252 + _ACTIONPROTOCOL._serialized_start=79528 + _ACTIONPROTOCOL._serialized_end=79788 + _ACTIONPROTOCOL_CHOICE._serialized_start=79715 + _ACTIONPROTOCOL_CHOICE._serialized_end=79777 + _ACTIONPROTOCOL_CHOICE_ENUM._serialized_start=79725 + _ACTIONPROTOCOL_CHOICE_ENUM._serialized_end=79777 + _ACTIONRESPONSEPROTOCOL._serialized_start=79791 + _ACTIONRESPONSEPROTOCOL._serialized_end=80037 + _ACTIONRESPONSEPROTOCOL_CHOICE._serialized_start=79973 + _ACTIONRESPONSEPROTOCOL_CHOICE._serialized_end=80026 _ACTIONRESPONSEPROTOCOL_CHOICE_ENUM._serialized_start=23744 _ACTIONRESPONSEPROTOCOL_CHOICE_ENUM._serialized_end=23787 - _ACTIONPROTOCOLIPV4._serialized_start=67929 - _ACTIONPROTOCOLIPV4._serialized_end=68106 - _ACTIONPROTOCOLIPV4_CHOICE._serialized_start=68052 - _ACTIONPROTOCOLIPV4_CHOICE._serialized_end=68095 - _ACTIONPROTOCOLIPV4_CHOICE_ENUM._serialized_start=68062 - _ACTIONPROTOCOLIPV4_CHOICE_ENUM._serialized_end=68095 - _ACTIONRESPONSEPROTOCOLIPV4._serialized_start=68109 - _ACTIONRESPONSEPROTOCOLIPV4._serialized_end=68310 - _ACTIONRESPONSEPROTOCOLIPV4_CHOICE._serialized_start=68052 - _ACTIONRESPONSEPROTOCOLIPV4_CHOICE._serialized_end=68095 - _ACTIONRESPONSEPROTOCOLIPV4_CHOICE_ENUM._serialized_start=68062 - _ACTIONRESPONSEPROTOCOLIPV4_CHOICE_ENUM._serialized_end=68095 - _ACTIONPROTOCOLIPV4PING._serialized_start=68312 - _ACTIONPROTOCOLIPV4PING._serialized_end=68390 - _ACTIONPROTOCOLIPV4PINGREQUEST._serialized_start=68392 - _ACTIONPROTOCOLIPV4PINGREQUEST._serialized_end=68491 - _ACTIONRESPONSEPROTOCOLIPV4PING._serialized_start=68493 - _ACTIONRESPONSEPROTOCOLIPV4PING._serialized_end=68589 - _ACTIONRESPONSEPROTOCOLIPV4PINGRESPONSE._serialized_start=68592 - _ACTIONRESPONSEPROTOCOLIPV4PINGRESPONSE._serialized_end=68851 - _ACTIONRESPONSEPROTOCOLIPV4PINGRESPONSE_RESULT._serialized_start=68756 - _ACTIONRESPONSEPROTOCOLIPV4PINGRESPONSE_RESULT._serialized_end=68816 - _ACTIONRESPONSEPROTOCOLIPV4PINGRESPONSE_RESULT_ENUM._serialized_start=68766 - _ACTIONRESPONSEPROTOCOLIPV4PINGRESPONSE_RESULT_ENUM._serialized_end=68816 - _ACTIONPROTOCOLIPV6._serialized_start=68854 - _ACTIONPROTOCOLIPV6._serialized_end=69031 - _ACTIONPROTOCOLIPV6_CHOICE._serialized_start=68052 - _ACTIONPROTOCOLIPV6_CHOICE._serialized_end=68095 - _ACTIONPROTOCOLIPV6_CHOICE_ENUM._serialized_start=68062 - _ACTIONPROTOCOLIPV6_CHOICE_ENUM._serialized_end=68095 - _ACTIONRESPONSEPROTOCOLIPV6._serialized_start=69034 - _ACTIONRESPONSEPROTOCOLIPV6._serialized_end=69235 - _ACTIONRESPONSEPROTOCOLIPV6_CHOICE._serialized_start=68052 - _ACTIONRESPONSEPROTOCOLIPV6_CHOICE._serialized_end=68095 - _ACTIONRESPONSEPROTOCOLIPV6_CHOICE_ENUM._serialized_start=68062 - _ACTIONRESPONSEPROTOCOLIPV6_CHOICE_ENUM._serialized_end=68095 - _ACTIONPROTOCOLIPV6PING._serialized_start=69237 - _ACTIONPROTOCOLIPV6PING._serialized_end=69315 - _ACTIONPROTOCOLIPV6PINGREQUEST._serialized_start=69317 - _ACTIONPROTOCOLIPV6PINGREQUEST._serialized_end=69416 - _ACTIONRESPONSEPROTOCOLIPV6PING._serialized_start=69418 - _ACTIONRESPONSEPROTOCOLIPV6PING._serialized_end=69514 - _ACTIONRESPONSEPROTOCOLIPV6PINGRESPONSE._serialized_start=69517 - _ACTIONRESPONSEPROTOCOLIPV6PINGRESPONSE._serialized_end=69776 - _ACTIONRESPONSEPROTOCOLIPV6PINGRESPONSE_RESULT._serialized_start=68756 - _ACTIONRESPONSEPROTOCOLIPV6PINGRESPONSE_RESULT._serialized_end=68816 - _ACTIONRESPONSEPROTOCOLIPV6PINGRESPONSE_RESULT_ENUM._serialized_start=68766 - _ACTIONRESPONSEPROTOCOLIPV6PINGRESPONSE_RESULT_ENUM._serialized_end=68816 - _ACTIONPROTOCOLBGP._serialized_start=69779 - _ACTIONPROTOCOLBGP._serialized_end=70090 - _ACTIONPROTOCOLBGP_CHOICE._serialized_start=69997 - _ACTIONPROTOCOLBGP_CHOICE._serialized_end=70079 - _ACTIONPROTOCOLBGP_CHOICE_ENUM._serialized_start=70007 - _ACTIONPROTOCOLBGP_CHOICE_ENUM._serialized_end=70079 - _ACTIONPROTOCOLBGPNOTIFICATION._serialized_start=70093 - _ACTIONPROTOCOLBGPNOTIFICATION._serialized_end=70818 - _ACTIONPROTOCOLBGPNOTIFICATION_CHOICE._serialized_start=70618 - _ACTIONPROTOCOLBGPNOTIFICATION_CHOICE._serialized_end=70807 - _ACTIONPROTOCOLBGPNOTIFICATION_CHOICE_ENUM._serialized_start=70629 - _ACTIONPROTOCOLBGPNOTIFICATION_CHOICE_ENUM._serialized_end=70807 - _ACTIONPROTOCOLBGPINITIATEGRACEFULRESTART._serialized_start=70820 - _ACTIONPROTOCOLBGPINITIATEGRACEFULRESTART._serialized_end=70928 - _METRICSREQUEST._serialized_start=70931 - _METRICSREQUEST._serialized_end=71491 - _METRICSREQUEST_CHOICE._serialized_start=71356 - _METRICSREQUEST_CHOICE._serialized_end=71480 - _METRICSREQUEST_CHOICE_ENUM._serialized_start=71366 - _METRICSREQUEST_CHOICE_ENUM._serialized_end=71480 - _METRICSRESPONSE._serialized_start=71494 - _METRICSRESPONSE._serialized_end=72130 - _METRICSRESPONSE_CHOICE._serialized_start=71922 - _METRICSRESPONSE_CHOICE._serialized_end=72119 - _METRICSRESPONSE_CHOICE_ENUM._serialized_start=71933 - _METRICSRESPONSE_CHOICE_ENUM._serialized_end=72119 - _PORTMETRICSREQUEST._serialized_start=72133 - _PORTMETRICSREQUEST._serialized_end=72466 - _PORTMETRICSREQUEST_COLUMNNAMES._serialized_start=72240 - _PORTMETRICSREQUEST_COLUMNNAMES._serialized_end=72466 - _PORTMETRICSREQUEST_COLUMNNAMES_ENUM._serialized_start=72256 - _PORTMETRICSREQUEST_COLUMNNAMES_ENUM._serialized_end=72466 - _PORTMETRIC._serialized_start=72469 - _PORTMETRIC._serialized_end=73243 - _PORTMETRIC_LINK._serialized_start=72885 - _PORTMETRIC_LINK._serialized_end=72934 + _ACTIONPROTOCOLIPV4._serialized_start=80040 + _ACTIONPROTOCOLIPV4._serialized_end=80217 + _ACTIONPROTOCOLIPV4_CHOICE._serialized_start=80163 + _ACTIONPROTOCOLIPV4_CHOICE._serialized_end=80206 + _ACTIONPROTOCOLIPV4_CHOICE_ENUM._serialized_start=80173 + _ACTIONPROTOCOLIPV4_CHOICE_ENUM._serialized_end=80206 + _ACTIONRESPONSEPROTOCOLIPV4._serialized_start=80220 + _ACTIONRESPONSEPROTOCOLIPV4._serialized_end=80421 + _ACTIONRESPONSEPROTOCOLIPV4_CHOICE._serialized_start=80163 + _ACTIONRESPONSEPROTOCOLIPV4_CHOICE._serialized_end=80206 + _ACTIONRESPONSEPROTOCOLIPV4_CHOICE_ENUM._serialized_start=80173 + _ACTIONRESPONSEPROTOCOLIPV4_CHOICE_ENUM._serialized_end=80206 + _ACTIONPROTOCOLIPV4PING._serialized_start=80423 + _ACTIONPROTOCOLIPV4PING._serialized_end=80501 + _ACTIONPROTOCOLIPV4PINGREQUEST._serialized_start=80503 + _ACTIONPROTOCOLIPV4PINGREQUEST._serialized_end=80602 + _ACTIONRESPONSEPROTOCOLIPV4PING._serialized_start=80604 + _ACTIONRESPONSEPROTOCOLIPV4PING._serialized_end=80700 + _ACTIONRESPONSEPROTOCOLIPV4PINGRESPONSE._serialized_start=80703 + _ACTIONRESPONSEPROTOCOLIPV4PINGRESPONSE._serialized_end=80962 + _ACTIONRESPONSEPROTOCOLIPV4PINGRESPONSE_RESULT._serialized_start=80867 + _ACTIONRESPONSEPROTOCOLIPV4PINGRESPONSE_RESULT._serialized_end=80927 + _ACTIONRESPONSEPROTOCOLIPV4PINGRESPONSE_RESULT_ENUM._serialized_start=80877 + _ACTIONRESPONSEPROTOCOLIPV4PINGRESPONSE_RESULT_ENUM._serialized_end=80927 + _ACTIONPROTOCOLIPV6._serialized_start=80965 + _ACTIONPROTOCOLIPV6._serialized_end=81142 + _ACTIONPROTOCOLIPV6_CHOICE._serialized_start=80163 + _ACTIONPROTOCOLIPV6_CHOICE._serialized_end=80206 + _ACTIONPROTOCOLIPV6_CHOICE_ENUM._serialized_start=80173 + _ACTIONPROTOCOLIPV6_CHOICE_ENUM._serialized_end=80206 + _ACTIONRESPONSEPROTOCOLIPV6._serialized_start=81145 + _ACTIONRESPONSEPROTOCOLIPV6._serialized_end=81346 + _ACTIONRESPONSEPROTOCOLIPV6_CHOICE._serialized_start=80163 + _ACTIONRESPONSEPROTOCOLIPV6_CHOICE._serialized_end=80206 + _ACTIONRESPONSEPROTOCOLIPV6_CHOICE_ENUM._serialized_start=80173 + _ACTIONRESPONSEPROTOCOLIPV6_CHOICE_ENUM._serialized_end=80206 + _ACTIONPROTOCOLIPV6PING._serialized_start=81348 + _ACTIONPROTOCOLIPV6PING._serialized_end=81426 + _ACTIONPROTOCOLIPV6PINGREQUEST._serialized_start=81428 + _ACTIONPROTOCOLIPV6PINGREQUEST._serialized_end=81527 + _ACTIONRESPONSEPROTOCOLIPV6PING._serialized_start=81529 + _ACTIONRESPONSEPROTOCOLIPV6PING._serialized_end=81625 + _ACTIONRESPONSEPROTOCOLIPV6PINGRESPONSE._serialized_start=81628 + _ACTIONRESPONSEPROTOCOLIPV6PINGRESPONSE._serialized_end=81887 + _ACTIONRESPONSEPROTOCOLIPV6PINGRESPONSE_RESULT._serialized_start=80867 + _ACTIONRESPONSEPROTOCOLIPV6PINGRESPONSE_RESULT._serialized_end=80927 + _ACTIONRESPONSEPROTOCOLIPV6PINGRESPONSE_RESULT_ENUM._serialized_start=80877 + _ACTIONRESPONSEPROTOCOLIPV6PINGRESPONSE_RESULT_ENUM._serialized_end=80927 + _ACTIONPROTOCOLBGP._serialized_start=81890 + _ACTIONPROTOCOLBGP._serialized_end=82201 + _ACTIONPROTOCOLBGP_CHOICE._serialized_start=82108 + _ACTIONPROTOCOLBGP_CHOICE._serialized_end=82190 + _ACTIONPROTOCOLBGP_CHOICE_ENUM._serialized_start=82118 + _ACTIONPROTOCOLBGP_CHOICE_ENUM._serialized_end=82190 + _ACTIONPROTOCOLBGPNOTIFICATION._serialized_start=82204 + _ACTIONPROTOCOLBGPNOTIFICATION._serialized_end=82929 + _ACTIONPROTOCOLBGPNOTIFICATION_CHOICE._serialized_start=82729 + _ACTIONPROTOCOLBGPNOTIFICATION_CHOICE._serialized_end=82918 + _ACTIONPROTOCOLBGPNOTIFICATION_CHOICE_ENUM._serialized_start=82740 + _ACTIONPROTOCOLBGPNOTIFICATION_CHOICE_ENUM._serialized_end=82918 + _ACTIONPROTOCOLBGPINITIATEGRACEFULRESTART._serialized_start=82931 + _ACTIONPROTOCOLBGPINITIATEGRACEFULRESTART._serialized_end=83039 + _METRICSREQUEST._serialized_start=83042 + _METRICSREQUEST._serialized_end=83602 + _METRICSREQUEST_CHOICE._serialized_start=83467 + _METRICSREQUEST_CHOICE._serialized_end=83591 + _METRICSREQUEST_CHOICE_ENUM._serialized_start=83477 + _METRICSREQUEST_CHOICE_ENUM._serialized_end=83591 + _METRICSRESPONSE._serialized_start=83605 + _METRICSRESPONSE._serialized_end=84241 + _METRICSRESPONSE_CHOICE._serialized_start=84033 + _METRICSRESPONSE_CHOICE._serialized_end=84230 + _METRICSRESPONSE_CHOICE_ENUM._serialized_start=84044 + _METRICSRESPONSE_CHOICE_ENUM._serialized_end=84230 + _PORTMETRICSREQUEST._serialized_start=84244 + _PORTMETRICSREQUEST._serialized_end=84577 + _PORTMETRICSREQUEST_COLUMNNAMES._serialized_start=84351 + _PORTMETRICSREQUEST_COLUMNNAMES._serialized_end=84577 + _PORTMETRICSREQUEST_COLUMNNAMES_ENUM._serialized_start=84367 + _PORTMETRICSREQUEST_COLUMNNAMES_ENUM._serialized_end=84577 + _PORTMETRIC._serialized_start=84580 + _PORTMETRIC._serialized_end=85354 + _PORTMETRIC_LINK._serialized_start=84996 + _PORTMETRIC_LINK._serialized_end=85045 _PORTMETRIC_LINK_ENUM._serialized_start=12631 _PORTMETRIC_LINK_ENUM._serialized_end=12672 - _PORTMETRIC_CAPTURE._serialized_start=72936 - _PORTMETRIC_CAPTURE._serialized_end=72996 - _PORTMETRIC_CAPTURE_ENUM._serialized_start=72947 - _PORTMETRIC_CAPTURE_ENUM._serialized_end=72996 - _PORTMETRIC_TRANSMIT._serialized_start=72998 - _PORTMETRIC_TRANSMIT._serialized_end=73059 - _PORTMETRIC_TRANSMIT_ENUM._serialized_start=72947 - _PORTMETRIC_TRANSMIT_ENUM._serialized_end=72996 - _FLOWMETRICSREQUEST._serialized_start=73246 - _FLOWMETRICSREQUEST._serialized_end=73558 - _FLOWMETRICSREQUEST_METRICNAMES._serialized_start=73407 - _FLOWMETRICSREQUEST_METRICNAMES._serialized_end=73558 - _FLOWMETRICSREQUEST_METRICNAMES_ENUM._serialized_start=73423 - _FLOWMETRICSREQUEST_METRICNAMES_ENUM._serialized_end=73558 - _FLOWTAGGEDMETRICSFILTER._serialized_start=73561 - _FLOWTAGGEDMETRICSFILTER._serialized_end=73933 - _FLOWTAGGEDMETRICSFILTER_METRICNAMES._serialized_start=73759 - _FLOWTAGGEDMETRICSFILTER_METRICNAMES._serialized_end=73895 - _FLOWTAGGEDMETRICSFILTER_METRICNAMES_ENUM._serialized_start=73774 - _FLOWTAGGEDMETRICSFILTER_METRICNAMES_ENUM._serialized_end=73895 - _FLOWMETRICTAGFILTER._serialized_start=73935 - _FLOWMETRICTAGFILTER._serialized_end=74000 - _FLOWMETRIC._serialized_start=74003 - _FLOWMETRIC._serialized_end=74651 - _FLOWMETRIC_TRANSMIT._serialized_start=74431 - _FLOWMETRIC_TRANSMIT._serialized_end=74504 - _FLOWMETRIC_TRANSMIT_ENUM._serialized_start=74443 - _FLOWMETRIC_TRANSMIT_ENUM._serialized_end=74504 - _FLOWTAGGEDMETRIC._serialized_start=74654 - _FLOWTAGGEDMETRIC._serialized_end=75057 - _FLOWMETRICTAG._serialized_start=75059 - _FLOWMETRICTAG._serialized_end=75142 - _FLOWMETRICTAGVALUE._serialized_start=75145 - _FLOWMETRICTAGVALUE._serialized_end=75339 - _FLOWMETRICTAGVALUE_CHOICE._serialized_start=75261 - _FLOWMETRICTAGVALUE_CHOICE._serialized_end=75312 - _FLOWMETRICTAGVALUE_CHOICE_ENUM._serialized_start=75271 - _FLOWMETRICTAGVALUE_CHOICE_ENUM._serialized_end=75312 - _METRICTIMESTAMP._serialized_start=75341 - _METRICTIMESTAMP._serialized_end=75468 - _METRICLATENCY._serialized_start=75471 - _METRICLATENCY._serialized_end=75606 - _BGPV4METRICSREQUEST._serialized_start=75609 - _BGPV4METRICSREQUEST._serialized_end=76114 - _BGPV4METRICSREQUEST_COLUMNNAMES._serialized_start=75718 - _BGPV4METRICSREQUEST_COLUMNNAMES._serialized_end=76114 - _BGPV4METRICSREQUEST_COLUMNNAMES_ENUM._serialized_start=75734 - _BGPV4METRICSREQUEST_COLUMNNAMES_ENUM._serialized_end=76114 - _BGPV4METRIC._serialized_start=76117 - _BGPV4METRIC._serialized_end=77247 - _BGPV4METRIC_SESSIONSTATE._serialized_start=76720 - _BGPV4METRIC_SESSIONSTATE._serialized_end=76777 + _PORTMETRIC_CAPTURE._serialized_start=85047 + _PORTMETRIC_CAPTURE._serialized_end=85107 + _PORTMETRIC_CAPTURE_ENUM._serialized_start=85058 + _PORTMETRIC_CAPTURE_ENUM._serialized_end=85107 + _PORTMETRIC_TRANSMIT._serialized_start=85109 + _PORTMETRIC_TRANSMIT._serialized_end=85170 + _PORTMETRIC_TRANSMIT_ENUM._serialized_start=85058 + _PORTMETRIC_TRANSMIT_ENUM._serialized_end=85107 + _FLOWMETRICSREQUEST._serialized_start=85357 + _FLOWMETRICSREQUEST._serialized_end=85669 + _FLOWMETRICSREQUEST_METRICNAMES._serialized_start=85518 + _FLOWMETRICSREQUEST_METRICNAMES._serialized_end=85669 + _FLOWMETRICSREQUEST_METRICNAMES_ENUM._serialized_start=85534 + _FLOWMETRICSREQUEST_METRICNAMES_ENUM._serialized_end=85669 + _FLOWTAGGEDMETRICSFILTER._serialized_start=85672 + _FLOWTAGGEDMETRICSFILTER._serialized_end=86044 + _FLOWTAGGEDMETRICSFILTER_METRICNAMES._serialized_start=85870 + _FLOWTAGGEDMETRICSFILTER_METRICNAMES._serialized_end=86006 + _FLOWTAGGEDMETRICSFILTER_METRICNAMES_ENUM._serialized_start=85885 + _FLOWTAGGEDMETRICSFILTER_METRICNAMES_ENUM._serialized_end=86006 + _FLOWMETRICTAGFILTER._serialized_start=86046 + _FLOWMETRICTAGFILTER._serialized_end=86111 + _FLOWMETRIC._serialized_start=86114 + _FLOWMETRIC._serialized_end=86762 + _FLOWMETRIC_TRANSMIT._serialized_start=86542 + _FLOWMETRIC_TRANSMIT._serialized_end=86615 + _FLOWMETRIC_TRANSMIT_ENUM._serialized_start=86554 + _FLOWMETRIC_TRANSMIT_ENUM._serialized_end=86615 + _FLOWTAGGEDMETRIC._serialized_start=86765 + _FLOWTAGGEDMETRIC._serialized_end=87168 + _FLOWMETRICTAG._serialized_start=87170 + _FLOWMETRICTAG._serialized_end=87253 + _FLOWMETRICTAGVALUE._serialized_start=87256 + _FLOWMETRICTAGVALUE._serialized_end=87450 + _FLOWMETRICTAGVALUE_CHOICE._serialized_start=87372 + _FLOWMETRICTAGVALUE_CHOICE._serialized_end=87423 + _FLOWMETRICTAGVALUE_CHOICE_ENUM._serialized_start=87382 + _FLOWMETRICTAGVALUE_CHOICE_ENUM._serialized_end=87423 + _METRICTIMESTAMP._serialized_start=87452 + _METRICTIMESTAMP._serialized_end=87579 + _METRICLATENCY._serialized_start=87582 + _METRICLATENCY._serialized_end=87717 + _BGPV4METRICSREQUEST._serialized_start=87720 + _BGPV4METRICSREQUEST._serialized_end=88225 + _BGPV4METRICSREQUEST_COLUMNNAMES._serialized_start=87829 + _BGPV4METRICSREQUEST_COLUMNNAMES._serialized_end=88225 + _BGPV4METRICSREQUEST_COLUMNNAMES_ENUM._serialized_start=87845 + _BGPV4METRICSREQUEST_COLUMNNAMES_ENUM._serialized_end=88225 + _BGPV4METRIC._serialized_start=88228 + _BGPV4METRIC._serialized_end=89358 + _BGPV4METRIC_SESSIONSTATE._serialized_start=88831 + _BGPV4METRIC_SESSIONSTATE._serialized_end=88888 _BGPV4METRIC_SESSIONSTATE_ENUM._serialized_start=12631 _BGPV4METRIC_SESSIONSTATE_ENUM._serialized_end=12672 - _BGPV4METRIC_FSMSTATE._serialized_start=76779 - _BGPV4METRIC_FSMSTATE._serialized_end=76897 - _BGPV4METRIC_FSMSTATE_ENUM._serialized_start=76791 - _BGPV4METRIC_FSMSTATE_ENUM._serialized_end=76897 - _BGPV6METRICSREQUEST._serialized_start=77250 - _BGPV6METRICSREQUEST._serialized_end=77755 - _BGPV6METRICSREQUEST_COLUMNNAMES._serialized_start=75718 - _BGPV6METRICSREQUEST_COLUMNNAMES._serialized_end=76114 - _BGPV6METRICSREQUEST_COLUMNNAMES_ENUM._serialized_start=75734 - _BGPV6METRICSREQUEST_COLUMNNAMES_ENUM._serialized_end=76114 - _BGPV6METRIC._serialized_start=77758 - _BGPV6METRIC._serialized_end=78888 - _BGPV6METRIC_SESSIONSTATE._serialized_start=76720 - _BGPV6METRIC_SESSIONSTATE._serialized_end=76777 + _BGPV4METRIC_FSMSTATE._serialized_start=88890 + _BGPV4METRIC_FSMSTATE._serialized_end=89008 + _BGPV4METRIC_FSMSTATE_ENUM._serialized_start=88902 + _BGPV4METRIC_FSMSTATE_ENUM._serialized_end=89008 + _BGPV6METRICSREQUEST._serialized_start=89361 + _BGPV6METRICSREQUEST._serialized_end=89866 + _BGPV6METRICSREQUEST_COLUMNNAMES._serialized_start=87829 + _BGPV6METRICSREQUEST_COLUMNNAMES._serialized_end=88225 + _BGPV6METRICSREQUEST_COLUMNNAMES_ENUM._serialized_start=87845 + _BGPV6METRICSREQUEST_COLUMNNAMES_ENUM._serialized_end=88225 + _BGPV6METRIC._serialized_start=89869 + _BGPV6METRIC._serialized_end=90999 + _BGPV6METRIC_SESSIONSTATE._serialized_start=88831 + _BGPV6METRIC_SESSIONSTATE._serialized_end=88888 _BGPV6METRIC_SESSIONSTATE_ENUM._serialized_start=12631 _BGPV6METRIC_SESSIONSTATE_ENUM._serialized_end=12672 - _BGPV6METRIC_FSMSTATE._serialized_start=76779 - _BGPV6METRIC_FSMSTATE._serialized_end=76897 - _BGPV6METRIC_FSMSTATE_ENUM._serialized_start=76791 - _BGPV6METRIC_FSMSTATE_ENUM._serialized_end=76897 - _ISISMETRICSREQUEST._serialized_start=78891 - _ISISMETRICSREQUEST._serialized_end=79677 - _ISISMETRICSREQUEST_COLUMNNAMES._serialized_start=79000 - _ISISMETRICSREQUEST_COLUMNNAMES._serialized_end=79677 - _ISISMETRICSREQUEST_COLUMNNAMES_ENUM._serialized_start=79016 - _ISISMETRICSREQUEST_COLUMNNAMES_ENUM._serialized_end=79677 - _ISISMETRIC._serialized_start=79680 - _ISISMETRIC._serialized_end=81204 - _LAGMETRICSREQUEST._serialized_start=81207 - _LAGMETRICSREQUEST._serialized_end=81524 - _LAGMETRICSREQUEST_COLUMNNAMES._serialized_start=81311 - _LAGMETRICSREQUEST_COLUMNNAMES._serialized_end=81524 - _LAGMETRICSREQUEST_COLUMNNAMES_ENUM._serialized_start=81327 - _LAGMETRICSREQUEST_COLUMNNAMES_ENUM._serialized_end=81524 - _LAGMETRIC._serialized_start=81527 - _LAGMETRIC._serialized_end=82083 - _LAGMETRIC_OPERSTATUS._serialized_start=81855 - _LAGMETRIC_OPERSTATUS._serialized_end=81910 + _BGPV6METRIC_FSMSTATE._serialized_start=88890 + _BGPV6METRIC_FSMSTATE._serialized_end=89008 + _BGPV6METRIC_FSMSTATE_ENUM._serialized_start=88902 + _BGPV6METRIC_FSMSTATE_ENUM._serialized_end=89008 + _ISISMETRICSREQUEST._serialized_start=91002 + _ISISMETRICSREQUEST._serialized_end=91788 + _ISISMETRICSREQUEST_COLUMNNAMES._serialized_start=91111 + _ISISMETRICSREQUEST_COLUMNNAMES._serialized_end=91788 + _ISISMETRICSREQUEST_COLUMNNAMES_ENUM._serialized_start=91127 + _ISISMETRICSREQUEST_COLUMNNAMES_ENUM._serialized_end=91788 + _ISISMETRIC._serialized_start=91791 + _ISISMETRIC._serialized_end=93315 + _LAGMETRICSREQUEST._serialized_start=93318 + _LAGMETRICSREQUEST._serialized_end=93635 + _LAGMETRICSREQUEST_COLUMNNAMES._serialized_start=93422 + _LAGMETRICSREQUEST_COLUMNNAMES._serialized_end=93635 + _LAGMETRICSREQUEST_COLUMNNAMES_ENUM._serialized_start=93438 + _LAGMETRICSREQUEST_COLUMNNAMES_ENUM._serialized_end=93635 + _LAGMETRIC._serialized_start=93638 + _LAGMETRIC._serialized_end=94194 + _LAGMETRIC_OPERSTATUS._serialized_start=93966 + _LAGMETRIC_OPERSTATUS._serialized_end=94021 _LAGMETRIC_OPERSTATUS_ENUM._serialized_start=12631 _LAGMETRIC_OPERSTATUS_ENUM._serialized_end=12672 - _LACPMETRICSREQUEST._serialized_start=82086 - _LACPMETRICSREQUEST._serialized_end=82522 - _LACPMETRICSREQUEST_COLUMNNAMES._serialized_start=82223 - _LACPMETRICSREQUEST_COLUMNNAMES._serialized_end=82522 - _LACPMETRICSREQUEST_COLUMNNAMES_ENUM._serialized_start=82239 - _LACPMETRICSREQUEST_COLUMNNAMES_ENUM._serialized_end=82522 - _LACPMETRIC._serialized_start=82525 - _LACPMETRIC._serialized_end=83562 - _LACPMETRIC_ACTIVITY._serialized_start=83091 - _LACPMETRIC_ACTIVITY._serialized_end=83151 - _LACPMETRIC_ACTIVITY_ENUM._serialized_start=83103 - _LACPMETRIC_ACTIVITY_ENUM._serialized_end=83151 - _LACPMETRIC_TIMEOUT._serialized_start=83153 - _LACPMETRIC_TIMEOUT._serialized_end=83208 - _LACPMETRIC_TIMEOUT_ENUM._serialized_start=83164 - _LACPMETRIC_TIMEOUT_ENUM._serialized_end=83208 - _LACPMETRIC_SYNCHRONIZATION._serialized_start=83210 - _LACPMETRIC_SYNCHRONIZATION._serialized_end=83279 - _LACPMETRIC_SYNCHRONIZATION_ENUM._serialized_start=83229 - _LACPMETRIC_SYNCHRONIZATION_ENUM._serialized_end=83279 - _LLDPMETRICSREQUEST._serialized_start=83565 - _LLDPMETRICSREQUEST._serialized_end=83818 - _LLDPMETRICSREQUEST_COLUMNNAMES._serialized_start=83672 - _LLDPMETRICSREQUEST_COLUMNNAMES._serialized_end=83818 - _LLDPMETRICSREQUEST_COLUMNNAMES_ENUM._serialized_start=83688 - _LLDPMETRICSREQUEST_COLUMNNAMES_ENUM._serialized_end=83818 - _LLDPMETRIC._serialized_start=83821 - _LLDPMETRIC._serialized_end=84123 - _RSVPMETRICSREQUEST._serialized_start=84126 - _RSVPMETRICSREQUEST._serialized_end=84832 - _RSVPMETRICSREQUEST_COLUMNNAMES._serialized_start=84235 - _RSVPMETRICSREQUEST_COLUMNNAMES._serialized_end=84832 - _RSVPMETRICSREQUEST_COLUMNNAMES_ENUM._serialized_start=84251 - _RSVPMETRICSREQUEST_COLUMNNAMES_ENUM._serialized_end=84832 - _RSVPMETRIC._serialized_start=84835 - _RSVPMETRIC._serialized_end=86231 - _STATESREQUEST._serialized_start=86234 - _STATESREQUEST._serialized_end=86766 - _STATESREQUEST_CHOICE._serialized_start=86613 - _STATESREQUEST_CHOICE._serialized_end=86755 - _STATESREQUEST_CHOICE_ENUM._serialized_start=86624 - _STATESREQUEST_CHOICE_ENUM._serialized_end=86755 - _STATESRESPONSE._serialized_start=86769 - _STATESRESPONSE._serialized_end=87261 - _STATESRESPONSE_CHOICE._serialized_start=86613 - _STATESRESPONSE_CHOICE._serialized_end=86755 - _STATESRESPONSE_CHOICE_ENUM._serialized_start=86624 - _STATESRESPONSE_CHOICE_ENUM._serialized_end=86755 - _NEIGHBORSV4STATESREQUEST._serialized_start=87263 - _NEIGHBORSV4STATESREQUEST._serialized_end=87313 - _NEIGHBORSV4STATE._serialized_start=87316 - _NEIGHBORSV4STATE._serialized_end=87480 - _NEIGHBORSV6STATESREQUEST._serialized_start=87482 - _NEIGHBORSV6STATESREQUEST._serialized_end=87532 - _NEIGHBORSV6STATE._serialized_start=87535 - _NEIGHBORSV6STATE._serialized_end=87699 - _BGPPREFIXSTATEREQUEST._serialized_start=87702 - _BGPPREFIXSTATEREQUEST._serialized_end=88024 - _BGPPREFIXSTATEREQUEST_PREFIXFILTERS._serialized_start=87948 - _BGPPREFIXSTATEREQUEST_PREFIXFILTERS._serialized_end=88024 - _BGPPREFIXSTATEREQUEST_PREFIXFILTERS_ENUM._serialized_start=87965 - _BGPPREFIXSTATEREQUEST_PREFIXFILTERS_ENUM._serialized_end=88024 - _BGPPREFIXIPV4UNICASTFILTER._serialized_start=88027 - _BGPPREFIXIPV4UNICASTFILTER._serialized_end=88300 + _LACPMETRICSREQUEST._serialized_start=94197 + _LACPMETRICSREQUEST._serialized_end=94633 + _LACPMETRICSREQUEST_COLUMNNAMES._serialized_start=94334 + _LACPMETRICSREQUEST_COLUMNNAMES._serialized_end=94633 + _LACPMETRICSREQUEST_COLUMNNAMES_ENUM._serialized_start=94350 + _LACPMETRICSREQUEST_COLUMNNAMES_ENUM._serialized_end=94633 + _LACPMETRIC._serialized_start=94636 + _LACPMETRIC._serialized_end=95673 + _LACPMETRIC_ACTIVITY._serialized_start=95202 + _LACPMETRIC_ACTIVITY._serialized_end=95262 + _LACPMETRIC_ACTIVITY_ENUM._serialized_start=95214 + _LACPMETRIC_ACTIVITY_ENUM._serialized_end=95262 + _LACPMETRIC_TIMEOUT._serialized_start=95264 + _LACPMETRIC_TIMEOUT._serialized_end=95319 + _LACPMETRIC_TIMEOUT_ENUM._serialized_start=95275 + _LACPMETRIC_TIMEOUT_ENUM._serialized_end=95319 + _LACPMETRIC_SYNCHRONIZATION._serialized_start=95321 + _LACPMETRIC_SYNCHRONIZATION._serialized_end=95390 + _LACPMETRIC_SYNCHRONIZATION_ENUM._serialized_start=95340 + _LACPMETRIC_SYNCHRONIZATION_ENUM._serialized_end=95390 + _LLDPMETRICSREQUEST._serialized_start=95676 + _LLDPMETRICSREQUEST._serialized_end=95929 + _LLDPMETRICSREQUEST_COLUMNNAMES._serialized_start=95783 + _LLDPMETRICSREQUEST_COLUMNNAMES._serialized_end=95929 + _LLDPMETRICSREQUEST_COLUMNNAMES_ENUM._serialized_start=95799 + _LLDPMETRICSREQUEST_COLUMNNAMES_ENUM._serialized_end=95929 + _LLDPMETRIC._serialized_start=95932 + _LLDPMETRIC._serialized_end=96234 + _RSVPMETRICSREQUEST._serialized_start=96237 + _RSVPMETRICSREQUEST._serialized_end=96943 + _RSVPMETRICSREQUEST_COLUMNNAMES._serialized_start=96346 + _RSVPMETRICSREQUEST_COLUMNNAMES._serialized_end=96943 + _RSVPMETRICSREQUEST_COLUMNNAMES_ENUM._serialized_start=96362 + _RSVPMETRICSREQUEST_COLUMNNAMES_ENUM._serialized_end=96943 + _RSVPMETRIC._serialized_start=96946 + _RSVPMETRIC._serialized_end=98342 + _STATESREQUEST._serialized_start=98345 + _STATESREQUEST._serialized_end=98877 + _STATESREQUEST_CHOICE._serialized_start=98724 + _STATESREQUEST_CHOICE._serialized_end=98866 + _STATESREQUEST_CHOICE_ENUM._serialized_start=98735 + _STATESREQUEST_CHOICE_ENUM._serialized_end=98866 + _STATESRESPONSE._serialized_start=98880 + _STATESRESPONSE._serialized_end=99372 + _STATESRESPONSE_CHOICE._serialized_start=98724 + _STATESRESPONSE_CHOICE._serialized_end=98866 + _STATESRESPONSE_CHOICE_ENUM._serialized_start=98735 + _STATESRESPONSE_CHOICE_ENUM._serialized_end=98866 + _NEIGHBORSV4STATESREQUEST._serialized_start=99374 + _NEIGHBORSV4STATESREQUEST._serialized_end=99424 + _NEIGHBORSV4STATE._serialized_start=99427 + _NEIGHBORSV4STATE._serialized_end=99591 + _NEIGHBORSV6STATESREQUEST._serialized_start=99593 + _NEIGHBORSV6STATESREQUEST._serialized_end=99643 + _NEIGHBORSV6STATE._serialized_start=99646 + _NEIGHBORSV6STATE._serialized_end=99810 + _BGPPREFIXSTATEREQUEST._serialized_start=99813 + _BGPPREFIXSTATEREQUEST._serialized_end=100135 + _BGPPREFIXSTATEREQUEST_PREFIXFILTERS._serialized_start=100059 + _BGPPREFIXSTATEREQUEST_PREFIXFILTERS._serialized_end=100135 + _BGPPREFIXSTATEREQUEST_PREFIXFILTERS_ENUM._serialized_start=100076 + _BGPPREFIXSTATEREQUEST_PREFIXFILTERS_ENUM._serialized_end=100135 + _BGPPREFIXIPV4UNICASTFILTER._serialized_start=100138 + _BGPPREFIXIPV4UNICASTFILTER._serialized_end=100411 _BGPPREFIXIPV4UNICASTFILTER_ORIGIN._serialized_start=17676 _BGPPREFIXIPV4UNICASTFILTER_ORIGIN._serialized_end=17743 _BGPPREFIXIPV4UNICASTFILTER_ORIGIN_ENUM._serialized_start=17686 _BGPPREFIXIPV4UNICASTFILTER_ORIGIN_ENUM._serialized_end=17743 - _BGPPREFIXIPV6UNICASTFILTER._serialized_start=88303 - _BGPPREFIXIPV6UNICASTFILTER._serialized_end=88576 + _BGPPREFIXIPV6UNICASTFILTER._serialized_start=100414 + _BGPPREFIXIPV6UNICASTFILTER._serialized_end=100687 _BGPPREFIXIPV6UNICASTFILTER_ORIGIN._serialized_start=17676 _BGPPREFIXIPV6UNICASTFILTER_ORIGIN._serialized_end=17743 _BGPPREFIXIPV6UNICASTFILTER_ORIGIN_ENUM._serialized_start=17686 _BGPPREFIXIPV6UNICASTFILTER_ORIGIN_ENUM._serialized_end=17743 - _BGPPREFIXESSTATE._serialized_start=88579 - _BGPPREFIXESSTATE._serialized_end=88769 - _BGPPREFIXIPV4UNICASTSTATE._serialized_start=88772 - _BGPPREFIXIPV4UNICASTSTATE._serialized_end=89365 + _BGPPREFIXESSTATE._serialized_start=100690 + _BGPPREFIXESSTATE._serialized_end=100880 + _BGPPREFIXIPV4UNICASTSTATE._serialized_start=100883 + _BGPPREFIXIPV4UNICASTSTATE._serialized_end=101476 _BGPPREFIXIPV4UNICASTSTATE_ORIGIN._serialized_start=17676 _BGPPREFIXIPV4UNICASTSTATE_ORIGIN._serialized_end=17743 _BGPPREFIXIPV4UNICASTSTATE_ORIGIN_ENUM._serialized_start=17686 _BGPPREFIXIPV4UNICASTSTATE_ORIGIN_ENUM._serialized_end=17743 - _BGPPREFIXIPV6UNICASTSTATE._serialized_start=89368 - _BGPPREFIXIPV6UNICASTSTATE._serialized_end=89961 + _BGPPREFIXIPV6UNICASTSTATE._serialized_start=101479 + _BGPPREFIXIPV6UNICASTSTATE._serialized_end=102072 _BGPPREFIXIPV6UNICASTSTATE_ORIGIN._serialized_start=17676 _BGPPREFIXIPV6UNICASTSTATE_ORIGIN._serialized_end=17743 _BGPPREFIXIPV6UNICASTSTATE_ORIGIN_ENUM._serialized_start=17686 _BGPPREFIXIPV6UNICASTSTATE_ORIGIN_ENUM._serialized_end=17743 - _RESULTBGPCOMMUNITY._serialized_start=89964 - _RESULTBGPCOMMUNITY._serialized_end=90268 + _RESULTBGPCOMMUNITY._serialized_start=102075 + _RESULTBGPCOMMUNITY._serialized_end=102379 _RESULTBGPCOMMUNITY_TYPE._serialized_start=18005 _RESULTBGPCOMMUNITY_TYPE._serialized_end=18147 _RESULTBGPCOMMUNITY_TYPE_ENUM._serialized_start=18014 _RESULTBGPCOMMUNITY_TYPE_ENUM._serialized_end=18147 - _RESULTBGPASPATH._serialized_start=90270 - _RESULTBGPASPATH._serialized_end=90334 - _RESULTBGPASPATHSEGMENT._serialized_start=90337 - _RESULTBGPASPATHSEGMENT._serialized_end=90543 + _RESULTBGPASPATH._serialized_start=102381 + _RESULTBGPASPATH._serialized_end=102445 + _RESULTBGPASPATHSEGMENT._serialized_start=102448 + _RESULTBGPASPATHSEGMENT._serialized_end=102654 _RESULTBGPASPATHSEGMENT_TYPE._serialized_start=19108 _RESULTBGPASPATHSEGMENT_TYPE._serialized_end=19201 _RESULTBGPASPATHSEGMENT_TYPE_ENUM._serialized_start=19116 _RESULTBGPASPATHSEGMENT_TYPE_ENUM._serialized_end=19201 - _ISISLSPSSTATEREQUEST._serialized_start=90545 - _ISISLSPSSTATEREQUEST._serialized_end=90594 - _ISISLSPSSTATE._serialized_start=90596 - _ISISLSPSSTATE._serialized_end=90696 - _ISISLSPSTATE._serialized_start=90699 - _ISISLSPSTATE._serialized_end=91121 - _ISISLSPSTATE_PDUTYPE._serialized_start=90967 - _ISISLSPSTATE_PDUTYPE._serialized_end=91027 + _ISISLSPSSTATEREQUEST._serialized_start=102656 + _ISISLSPSSTATEREQUEST._serialized_end=102705 + _ISISLSPSSTATE._serialized_start=102707 + _ISISLSPSSTATE._serialized_end=102807 + _ISISLSPSTATE._serialized_start=102810 + _ISISLSPSTATE._serialized_end=103232 + _ISISLSPSTATE_PDUTYPE._serialized_start=103078 + _ISISLSPSTATE_PDUTYPE._serialized_end=103138 _ISISLSPSTATE_PDUTYPE_ENUM._serialized_start=9182 _ISISLSPSTATE_PDUTYPE_ENUM._serialized_end=9231 - _ISISLSPTLVS._serialized_start=91124 - _ISISLSPTLVS._serialized_end=91632 - _ISISLSPHOSTNAME._serialized_start=91634 - _ISISLSPHOSTNAME._serialized_end=91687 - _ISISLSPFLAGS._serialized_start=91690 - _ISISLSPFLAGS._serialized_end=91992 - _ISISLSPISREACHABILITYTLV._serialized_start=91994 - _ISISLSPISREACHABILITYTLV._serialized_end=92061 - _ISISLSPEXTENDEDISREACHABILITYTLV._serialized_start=92063 - _ISISLSPEXTENDEDISREACHABILITYTLV._serialized_end=92138 - _ISISLSPNEIGHBOR._serialized_start=92140 - _ISISLSPNEIGHBOR._serialized_end=92195 - _ISISLSPIPV4INTERNALREACHABILITYTLV._serialized_start=92197 - _ISISLSPIPV4INTERNALREACHABILITYTLV._serialized_end=92273 - _ISISLSPIPV4EXTERNALREACHABILITYTLV._serialized_start=92275 - _ISISLSPIPV4EXTERNALREACHABILITYTLV._serialized_end=92351 - _ISISLSPV4PREFIX._serialized_start=92354 - _ISISLSPV4PREFIX._serialized_end=92825 + _ISISLSPTLVS._serialized_start=103235 + _ISISLSPTLVS._serialized_end=103743 + _ISISLSPHOSTNAME._serialized_start=103745 + _ISISLSPHOSTNAME._serialized_end=103798 + _ISISLSPFLAGS._serialized_start=103801 + _ISISLSPFLAGS._serialized_end=104103 + _ISISLSPISREACHABILITYTLV._serialized_start=104105 + _ISISLSPISREACHABILITYTLV._serialized_end=104172 + _ISISLSPEXTENDEDISREACHABILITYTLV._serialized_start=104174 + _ISISLSPEXTENDEDISREACHABILITYTLV._serialized_end=104249 + _ISISLSPNEIGHBOR._serialized_start=104251 + _ISISLSPNEIGHBOR._serialized_end=104306 + _ISISLSPIPV4INTERNALREACHABILITYTLV._serialized_start=104308 + _ISISLSPIPV4INTERNALREACHABILITYTLV._serialized_end=104384 + _ISISLSPIPV4EXTERNALREACHABILITYTLV._serialized_start=104386 + _ISISLSPIPV4EXTERNALREACHABILITYTLV._serialized_end=104462 + _ISISLSPV4PREFIX._serialized_start=104465 + _ISISLSPV4PREFIX._serialized_end=104936 _ISISLSPV4PREFIX_REDISTRIBUTIONTYPE._serialized_start=12609 _ISISLSPV4PREFIX_REDISTRIBUTIONTYPE._serialized_end=12672 _ISISLSPV4PREFIX_REDISTRIBUTIONTYPE_ENUM._serialized_start=12631 @@ -1275,18 +1459,18 @@ _ISISLSPV4PREFIX_ORIGINTYPE._serialized_end=12607 _ISISLSPV4PREFIX_ORIGINTYPE_ENUM._serialized_start=12556 _ISISLSPV4PREFIX_ORIGINTYPE_ENUM._serialized_end=12607 - _ISISLSPEXTENDEDIPV4REACHABILITYTLV._serialized_start=92827 - _ISISLSPEXTENDEDIPV4REACHABILITYTLV._serialized_end=92911 - _ISISLSPEXTENDEDV4PREFIX._serialized_start=92914 - _ISISLSPEXTENDEDV4PREFIX._serialized_end=93295 + _ISISLSPEXTENDEDIPV4REACHABILITYTLV._serialized_start=104938 + _ISISLSPEXTENDEDIPV4REACHABILITYTLV._serialized_end=105022 + _ISISLSPEXTENDEDV4PREFIX._serialized_start=105025 + _ISISLSPEXTENDEDV4PREFIX._serialized_end=105406 _ISISLSPEXTENDEDV4PREFIX_REDISTRIBUTIONTYPE._serialized_start=12609 _ISISLSPEXTENDEDV4PREFIX_REDISTRIBUTIONTYPE._serialized_end=12672 _ISISLSPEXTENDEDV4PREFIX_REDISTRIBUTIONTYPE_ENUM._serialized_start=12631 _ISISLSPEXTENDEDV4PREFIX_REDISTRIBUTIONTYPE_ENUM._serialized_end=12672 - _ISISLSPIPV6REACHABILITYTLV._serialized_start=93297 - _ISISLSPIPV6REACHABILITYTLV._serialized_end=93365 - _ISISLSPV6PREFIX._serialized_start=93368 - _ISISLSPV6PREFIX._serialized_end=93880 + _ISISLSPIPV6REACHABILITYTLV._serialized_start=105408 + _ISISLSPIPV6REACHABILITYTLV._serialized_end=105476 + _ISISLSPV6PREFIX._serialized_start=105479 + _ISISLSPV6PREFIX._serialized_end=105991 _ISISLSPV6PREFIX_REDISTRIBUTIONTYPE._serialized_start=12609 _ISISLSPV6PREFIX_REDISTRIBUTIONTYPE._serialized_end=12672 _ISISLSPV6PREFIX_REDISTRIBUTIONTYPE_ENUM._serialized_start=12631 @@ -1295,1532 +1479,1826 @@ _ISISLSPV6PREFIX_ORIGINTYPE._serialized_end=12607 _ISISLSPV6PREFIX_ORIGINTYPE_ENUM._serialized_start=12556 _ISISLSPV6PREFIX_ORIGINTYPE_ENUM._serialized_end=12607 - _ISISLSPPREFIXATTRIBUTES._serialized_start=93882 - _ISISLSPPREFIXATTRIBUTES._serialized_end=94003 - _LLDPNEIGHBORSSTATEREQUEST._serialized_start=94005 - _LLDPNEIGHBORSSTATEREQUEST._serialized_end=94081 - _LLDPNEIGHBORSSTATE._serialized_start=94084 - _LLDPNEIGHBORSSTATE._serialized_end=95247 - _LLDPNEIGHBORSSTATE_CHASSISIDTYPE._serialized_start=94663 - _LLDPNEIGHBORSSTATE_CHASSISIDTYPE._serialized_end=94837 - _LLDPNEIGHBORSSTATE_CHASSISIDTYPE_ENUM._serialized_start=94681 - _LLDPNEIGHBORSSTATE_CHASSISIDTYPE_ENUM._serialized_end=94837 - _LLDPNEIGHBORSSTATE_PORTIDTYPE._serialized_start=94840 - _LLDPNEIGHBORSSTATE_PORTIDTYPE._serialized_end=95010 - _LLDPNEIGHBORSSTATE_PORTIDTYPE_ENUM._serialized_start=94855 - _LLDPNEIGHBORSSTATE_PORTIDTYPE_ENUM._serialized_end=95010 - _LLDPCUSTOMTLVSTATE._serialized_start=95250 - _LLDPCUSTOMTLVSTATE._serialized_end=95380 - _LLDPCAPABILITYSTATE._serialized_start=95383 - _LLDPCAPABILITYSTATE._serialized_end=95783 - _LLDPCAPABILITYSTATE_CAPABILITYNAME._serialized_start=95516 - _LLDPCAPABILITYSTATE_CAPABILITYNAME._serialized_end=95740 - _LLDPCAPABILITYSTATE_CAPABILITYNAME_ENUM._serialized_start=95535 - _LLDPCAPABILITYSTATE_CAPABILITYNAME_ENUM._serialized_end=95740 - _RSVPLSPSSTATEREQUEST._serialized_start=95785 - _RSVPLSPSSTATEREQUEST._serialized_end=95834 - _RSVPLSPSSTATE._serialized_start=95836 - _RSVPLSPSSTATE._serialized_end=95945 - _RSVPIPV4LSPSTATE._serialized_start=95948 - _RSVPIPV4LSPSTATE._serialized_end=96174 - _RSVPLSPSTATE._serialized_start=96177 - _RSVPLSPSTATE._serialized_end=96741 - _RSVPLSPSTATE_SESSIONSTATUS._serialized_start=96471 - _RSVPLSPSTATE_SESSIONSTATUS._serialized_end=96529 + _ISISLSPPREFIXATTRIBUTES._serialized_start=105993 + _ISISLSPPREFIXATTRIBUTES._serialized_end=106114 + _LLDPNEIGHBORSSTATEREQUEST._serialized_start=106116 + _LLDPNEIGHBORSSTATEREQUEST._serialized_end=106192 + _LLDPNEIGHBORSSTATE._serialized_start=106195 + _LLDPNEIGHBORSSTATE._serialized_end=107358 + _LLDPNEIGHBORSSTATE_CHASSISIDTYPE._serialized_start=106774 + _LLDPNEIGHBORSSTATE_CHASSISIDTYPE._serialized_end=106948 + _LLDPNEIGHBORSSTATE_CHASSISIDTYPE_ENUM._serialized_start=106792 + _LLDPNEIGHBORSSTATE_CHASSISIDTYPE_ENUM._serialized_end=106948 + _LLDPNEIGHBORSSTATE_PORTIDTYPE._serialized_start=106951 + _LLDPNEIGHBORSSTATE_PORTIDTYPE._serialized_end=107121 + _LLDPNEIGHBORSSTATE_PORTIDTYPE_ENUM._serialized_start=106966 + _LLDPNEIGHBORSSTATE_PORTIDTYPE_ENUM._serialized_end=107121 + _LLDPCUSTOMTLVSTATE._serialized_start=107361 + _LLDPCUSTOMTLVSTATE._serialized_end=107491 + _LLDPCAPABILITYSTATE._serialized_start=107494 + _LLDPCAPABILITYSTATE._serialized_end=107894 + _LLDPCAPABILITYSTATE_CAPABILITYNAME._serialized_start=107627 + _LLDPCAPABILITYSTATE_CAPABILITYNAME._serialized_end=107851 + _LLDPCAPABILITYSTATE_CAPABILITYNAME_ENUM._serialized_start=107646 + _LLDPCAPABILITYSTATE_CAPABILITYNAME_ENUM._serialized_end=107851 + _RSVPLSPSSTATEREQUEST._serialized_start=107896 + _RSVPLSPSSTATEREQUEST._serialized_end=107945 + _RSVPLSPSSTATE._serialized_start=107947 + _RSVPLSPSSTATE._serialized_end=108056 + _RSVPIPV4LSPSTATE._serialized_start=108059 + _RSVPIPV4LSPSTATE._serialized_end=108285 + _RSVPLSPSTATE._serialized_start=108288 + _RSVPLSPSTATE._serialized_end=108852 + _RSVPLSPSTATE_SESSIONSTATUS._serialized_start=108582 + _RSVPLSPSTATE_SESSIONSTATUS._serialized_end=108640 _RSVPLSPSTATE_SESSIONSTATUS_ENUM._serialized_start=12631 _RSVPLSPSTATE_SESSIONSTATUS_ENUM._serialized_end=12672 - _RSVPLSPSTATE_LASTFLAPREASON._serialized_start=96531 - _RSVPLSPSTATE_LASTFLAPREASON._serialized_end=96620 - _RSVPLSPSTATE_LASTFLAPREASON_ENUM._serialized_start=96549 - _RSVPLSPSTATE_LASTFLAPREASON_ENUM._serialized_end=96620 - _RSVPLSPIPV4RRO._serialized_start=96743 - _RSVPLSPIPV4RRO._serialized_end=96841 - _RSVPLSPIPV4ERO._serialized_start=96844 - _RSVPLSPIPV4ERO._serialized_end=97086 - _RSVPLSPIPV4ERO_TYPE._serialized_start=96951 - _RSVPLSPIPV4ERO_TYPE._serialized_end=97058 - _RSVPLSPIPV4ERO_TYPE_ENUM._serialized_start=96959 - _RSVPLSPIPV4ERO_TYPE_ENUM._serialized_end=97058 - _CAPTUREREQUEST._serialized_start=97088 - _CAPTUREREQUEST._serialized_end=97142 - _PATTERNFLOWETHERNETDSTCOUNTER._serialized_start=97144 - _PATTERNFLOWETHERNETDSTCOUNTER._serialized_end=97263 - _PATTERNFLOWETHERNETDSTMETRICTAG._serialized_start=97265 - _PATTERNFLOWETHERNETDSTMETRICTAG._serialized_end=97390 - _PATTERNFLOWETHERNETDST._serialized_start=97393 - _PATTERNFLOWETHERNETDST._serialized_end=97831 - _PATTERNFLOWETHERNETDST_CHOICE._serialized_start=97705 - _PATTERNFLOWETHERNETDST_CHOICE._serialized_end=97801 - _PATTERNFLOWETHERNETDST_CHOICE_ENUM._serialized_start=97715 - _PATTERNFLOWETHERNETDST_CHOICE_ENUM._serialized_end=97801 - _PATTERNFLOWETHERNETSRCCOUNTER._serialized_start=97833 - _PATTERNFLOWETHERNETSRCCOUNTER._serialized_end=97952 - _PATTERNFLOWETHERNETSRCMETRICTAG._serialized_start=97954 - _PATTERNFLOWETHERNETSRCMETRICTAG._serialized_end=98079 - _PATTERNFLOWETHERNETSRC._serialized_start=98082 - _PATTERNFLOWETHERNETSRC._serialized_end=98482 - _PATTERNFLOWETHERNETSRC_CHOICE._serialized_start=98375 - _PATTERNFLOWETHERNETSRC_CHOICE._serialized_end=98461 - _PATTERNFLOWETHERNETSRC_CHOICE_ENUM._serialized_start=98385 - _PATTERNFLOWETHERNETSRC_CHOICE_ENUM._serialized_end=98461 - _PATTERNFLOWETHERNETETHERTYPECOUNTER._serialized_start=98484 - _PATTERNFLOWETHERNETETHERTYPECOUNTER._serialized_end=98609 - _PATTERNFLOWETHERNETETHERTYPEMETRICTAG._serialized_start=98612 - _PATTERNFLOWETHERNETETHERTYPEMETRICTAG._serialized_end=98743 - _PATTERNFLOWETHERNETETHERTYPE._serialized_start=98746 - _PATTERNFLOWETHERNETETHERTYPE._serialized_end=99214 - _PATTERNFLOWETHERNETETHERTYPE_CHOICE._serialized_start=97705 - _PATTERNFLOWETHERNETETHERTYPE_CHOICE._serialized_end=97801 - _PATTERNFLOWETHERNETETHERTYPE_CHOICE_ENUM._serialized_start=97715 - _PATTERNFLOWETHERNETETHERTYPE_CHOICE_ENUM._serialized_end=97801 - _PATTERNFLOWETHERNETPFCQUEUECOUNTER._serialized_start=99216 - _PATTERNFLOWETHERNETPFCQUEUECOUNTER._serialized_end=99340 - _PATTERNFLOWETHERNETPFCQUEUEMETRICTAG._serialized_start=99343 - _PATTERNFLOWETHERNETPFCQUEUEMETRICTAG._serialized_end=99473 - _PATTERNFLOWETHERNETPFCQUEUE._serialized_start=99476 - _PATTERNFLOWETHERNETPFCQUEUE._serialized_end=99901 - _PATTERNFLOWETHERNETPFCQUEUE_CHOICE._serialized_start=98375 - _PATTERNFLOWETHERNETPFCQUEUE_CHOICE._serialized_end=98461 - _PATTERNFLOWETHERNETPFCQUEUE_CHOICE_ENUM._serialized_start=98385 - _PATTERNFLOWETHERNETPFCQUEUE_CHOICE_ENUM._serialized_end=98461 - _PATTERNFLOWVLANPRIORITYCOUNTER._serialized_start=99903 - _PATTERNFLOWVLANPRIORITYCOUNTER._serialized_end=100023 - _PATTERNFLOWVLANPRIORITYMETRICTAG._serialized_start=100025 - _PATTERNFLOWVLANPRIORITYMETRICTAG._serialized_end=100151 - _PATTERNFLOWVLANPRIORITY._serialized_start=100154 - _PATTERNFLOWVLANPRIORITY._serialized_end=100559 - _PATTERNFLOWVLANPRIORITY_CHOICE._serialized_start=98375 - _PATTERNFLOWVLANPRIORITY_CHOICE._serialized_end=98461 - _PATTERNFLOWVLANPRIORITY_CHOICE_ENUM._serialized_start=98385 - _PATTERNFLOWVLANPRIORITY_CHOICE_ENUM._serialized_end=98461 - _PATTERNFLOWVLANCFICOUNTER._serialized_start=100561 - _PATTERNFLOWVLANCFICOUNTER._serialized_end=100676 - _PATTERNFLOWVLANCFIMETRICTAG._serialized_start=100678 - _PATTERNFLOWVLANCFIMETRICTAG._serialized_end=100799 - _PATTERNFLOWVLANCFI._serialized_start=100802 - _PATTERNFLOWVLANCFI._serialized_end=101182 - _PATTERNFLOWVLANCFI_CHOICE._serialized_start=98375 - _PATTERNFLOWVLANCFI_CHOICE._serialized_end=98461 - _PATTERNFLOWVLANCFI_CHOICE_ENUM._serialized_start=98385 - _PATTERNFLOWVLANCFI_CHOICE_ENUM._serialized_end=98461 - _PATTERNFLOWVLANIDCOUNTER._serialized_start=101184 - _PATTERNFLOWVLANIDCOUNTER._serialized_end=101298 - _PATTERNFLOWVLANIDMETRICTAG._serialized_start=101300 - _PATTERNFLOWVLANIDMETRICTAG._serialized_end=101420 - _PATTERNFLOWVLANID._serialized_start=101423 - _PATTERNFLOWVLANID._serialized_end=101798 - _PATTERNFLOWVLANID_CHOICE._serialized_start=98375 - _PATTERNFLOWVLANID_CHOICE._serialized_end=98461 - _PATTERNFLOWVLANID_CHOICE_ENUM._serialized_start=98385 - _PATTERNFLOWVLANID_CHOICE_ENUM._serialized_end=98461 - _PATTERNFLOWVLANTPIDCOUNTER._serialized_start=101800 - _PATTERNFLOWVLANTPIDCOUNTER._serialized_end=101916 - _PATTERNFLOWVLANTPIDMETRICTAG._serialized_start=101918 - _PATTERNFLOWVLANTPIDMETRICTAG._serialized_end=102040 - _PATTERNFLOWVLANTPID._serialized_start=102043 - _PATTERNFLOWVLANTPID._serialized_end=102428 - _PATTERNFLOWVLANTPID_CHOICE._serialized_start=98375 - _PATTERNFLOWVLANTPID_CHOICE._serialized_end=98461 - _PATTERNFLOWVLANTPID_CHOICE_ENUM._serialized_start=98385 - _PATTERNFLOWVLANTPID_CHOICE_ENUM._serialized_end=98461 - _PATTERNFLOWVXLANFLAGSCOUNTER._serialized_start=102430 - _PATTERNFLOWVXLANFLAGSCOUNTER._serialized_end=102548 - _PATTERNFLOWVXLANFLAGSMETRICTAG._serialized_start=102550 - _PATTERNFLOWVXLANFLAGSMETRICTAG._serialized_end=102674 - _PATTERNFLOWVXLANFLAGS._serialized_start=102677 - _PATTERNFLOWVXLANFLAGS._serialized_end=103072 - _PATTERNFLOWVXLANFLAGS_CHOICE._serialized_start=98375 - _PATTERNFLOWVXLANFLAGS_CHOICE._serialized_end=98461 - _PATTERNFLOWVXLANFLAGS_CHOICE_ENUM._serialized_start=98385 - _PATTERNFLOWVXLANFLAGS_CHOICE_ENUM._serialized_end=98461 - _PATTERNFLOWVXLANRESERVED0COUNTER._serialized_start=103074 - _PATTERNFLOWVXLANRESERVED0COUNTER._serialized_end=103196 - _PATTERNFLOWVXLANRESERVED0METRICTAG._serialized_start=103199 - _PATTERNFLOWVXLANRESERVED0METRICTAG._serialized_end=103327 - _PATTERNFLOWVXLANRESERVED0._serialized_start=103330 - _PATTERNFLOWVXLANRESERVED0._serialized_end=103745 - _PATTERNFLOWVXLANRESERVED0_CHOICE._serialized_start=98375 - _PATTERNFLOWVXLANRESERVED0_CHOICE._serialized_end=98461 - _PATTERNFLOWVXLANRESERVED0_CHOICE_ENUM._serialized_start=98385 - _PATTERNFLOWVXLANRESERVED0_CHOICE_ENUM._serialized_end=98461 - _PATTERNFLOWVXLANVNICOUNTER._serialized_start=103747 - _PATTERNFLOWVXLANVNICOUNTER._serialized_end=103863 - _PATTERNFLOWVXLANVNIMETRICTAG._serialized_start=103865 - _PATTERNFLOWVXLANVNIMETRICTAG._serialized_end=103987 - _PATTERNFLOWVXLANVNI._serialized_start=103990 - _PATTERNFLOWVXLANVNI._serialized_end=104413 - _PATTERNFLOWVXLANVNI_CHOICE._serialized_start=97705 - _PATTERNFLOWVXLANVNI_CHOICE._serialized_end=97801 - _PATTERNFLOWVXLANVNI_CHOICE_ENUM._serialized_start=97715 - _PATTERNFLOWVXLANVNI_CHOICE_ENUM._serialized_end=97801 - _PATTERNFLOWVXLANRESERVED1COUNTER._serialized_start=104415 - _PATTERNFLOWVXLANRESERVED1COUNTER._serialized_end=104537 - _PATTERNFLOWVXLANRESERVED1METRICTAG._serialized_start=104540 - _PATTERNFLOWVXLANRESERVED1METRICTAG._serialized_end=104668 - _PATTERNFLOWVXLANRESERVED1._serialized_start=104671 - _PATTERNFLOWVXLANRESERVED1._serialized_end=105086 - _PATTERNFLOWVXLANRESERVED1_CHOICE._serialized_start=98375 - _PATTERNFLOWVXLANRESERVED1_CHOICE._serialized_end=98461 - _PATTERNFLOWVXLANRESERVED1_CHOICE_ENUM._serialized_start=98385 - _PATTERNFLOWVXLANRESERVED1_CHOICE_ENUM._serialized_end=98461 - _PATTERNFLOWIPV4VERSIONCOUNTER._serialized_start=105088 - _PATTERNFLOWIPV4VERSIONCOUNTER._serialized_end=105207 - _PATTERNFLOWIPV4VERSIONMETRICTAG._serialized_start=105209 - _PATTERNFLOWIPV4VERSIONMETRICTAG._serialized_end=105334 - _PATTERNFLOWIPV4VERSION._serialized_start=105337 - _PATTERNFLOWIPV4VERSION._serialized_end=105737 - _PATTERNFLOWIPV4VERSION_CHOICE._serialized_start=98375 - _PATTERNFLOWIPV4VERSION_CHOICE._serialized_end=98461 - _PATTERNFLOWIPV4VERSION_CHOICE_ENUM._serialized_start=98385 - _PATTERNFLOWIPV4VERSION_CHOICE_ENUM._serialized_end=98461 - _PATTERNFLOWIPV4HEADERLENGTHCOUNTER._serialized_start=105739 - _PATTERNFLOWIPV4HEADERLENGTHCOUNTER._serialized_end=105863 - _PATTERNFLOWIPV4HEADERLENGTHMETRICTAG._serialized_start=105866 - _PATTERNFLOWIPV4HEADERLENGTHMETRICTAG._serialized_end=105996 - _PATTERNFLOWIPV4HEADERLENGTH._serialized_start=105999 - _PATTERNFLOWIPV4HEADERLENGTH._serialized_end=106462 - _PATTERNFLOWIPV4HEADERLENGTH_CHOICE._serialized_start=97705 - _PATTERNFLOWIPV4HEADERLENGTH_CHOICE._serialized_end=97801 - _PATTERNFLOWIPV4HEADERLENGTH_CHOICE_ENUM._serialized_start=97715 - _PATTERNFLOWIPV4HEADERLENGTH_CHOICE_ENUM._serialized_end=97801 - _PATTERNFLOWIPV4TOTALLENGTHCOUNTER._serialized_start=106464 - _PATTERNFLOWIPV4TOTALLENGTHCOUNTER._serialized_end=106587 - _PATTERNFLOWIPV4TOTALLENGTHMETRICTAG._serialized_start=106590 - _PATTERNFLOWIPV4TOTALLENGTHMETRICTAG._serialized_end=106719 - _PATTERNFLOWIPV4TOTALLENGTH._serialized_start=106722 - _PATTERNFLOWIPV4TOTALLENGTH._serialized_end=107180 - _PATTERNFLOWIPV4TOTALLENGTH_CHOICE._serialized_start=97705 - _PATTERNFLOWIPV4TOTALLENGTH_CHOICE._serialized_end=97801 - _PATTERNFLOWIPV4TOTALLENGTH_CHOICE_ENUM._serialized_start=97715 - _PATTERNFLOWIPV4TOTALLENGTH_CHOICE_ENUM._serialized_end=97801 - _PATTERNFLOWIPV4IDENTIFICATIONCOUNTER._serialized_start=107182 - _PATTERNFLOWIPV4IDENTIFICATIONCOUNTER._serialized_end=107308 - _PATTERNFLOWIPV4IDENTIFICATIONMETRICTAG._serialized_start=107311 - _PATTERNFLOWIPV4IDENTIFICATIONMETRICTAG._serialized_end=107443 - _PATTERNFLOWIPV4IDENTIFICATION._serialized_start=107446 - _PATTERNFLOWIPV4IDENTIFICATION._serialized_end=107881 - _PATTERNFLOWIPV4IDENTIFICATION_CHOICE._serialized_start=98375 - _PATTERNFLOWIPV4IDENTIFICATION_CHOICE._serialized_end=98461 - _PATTERNFLOWIPV4IDENTIFICATION_CHOICE_ENUM._serialized_start=98385 - _PATTERNFLOWIPV4IDENTIFICATION_CHOICE_ENUM._serialized_end=98461 - _PATTERNFLOWIPV4RESERVEDCOUNTER._serialized_start=107883 - _PATTERNFLOWIPV4RESERVEDCOUNTER._serialized_end=108003 - _PATTERNFLOWIPV4RESERVEDMETRICTAG._serialized_start=108005 - _PATTERNFLOWIPV4RESERVEDMETRICTAG._serialized_end=108131 - _PATTERNFLOWIPV4RESERVED._serialized_start=108134 - _PATTERNFLOWIPV4RESERVED._serialized_end=108539 - _PATTERNFLOWIPV4RESERVED_CHOICE._serialized_start=98375 - _PATTERNFLOWIPV4RESERVED_CHOICE._serialized_end=98461 - _PATTERNFLOWIPV4RESERVED_CHOICE_ENUM._serialized_start=98385 - _PATTERNFLOWIPV4RESERVED_CHOICE_ENUM._serialized_end=98461 - _PATTERNFLOWIPV4DONTFRAGMENTCOUNTER._serialized_start=108541 - _PATTERNFLOWIPV4DONTFRAGMENTCOUNTER._serialized_end=108665 - _PATTERNFLOWIPV4DONTFRAGMENTMETRICTAG._serialized_start=108668 - _PATTERNFLOWIPV4DONTFRAGMENTMETRICTAG._serialized_end=108798 - _PATTERNFLOWIPV4DONTFRAGMENT._serialized_start=108801 - _PATTERNFLOWIPV4DONTFRAGMENT._serialized_end=109226 - _PATTERNFLOWIPV4DONTFRAGMENT_CHOICE._serialized_start=98375 - _PATTERNFLOWIPV4DONTFRAGMENT_CHOICE._serialized_end=98461 - _PATTERNFLOWIPV4DONTFRAGMENT_CHOICE_ENUM._serialized_start=98385 - _PATTERNFLOWIPV4DONTFRAGMENT_CHOICE_ENUM._serialized_end=98461 - _PATTERNFLOWIPV4MOREFRAGMENTSCOUNTER._serialized_start=109228 - _PATTERNFLOWIPV4MOREFRAGMENTSCOUNTER._serialized_end=109353 - _PATTERNFLOWIPV4MOREFRAGMENTSMETRICTAG._serialized_start=109356 - _PATTERNFLOWIPV4MOREFRAGMENTSMETRICTAG._serialized_end=109487 - _PATTERNFLOWIPV4MOREFRAGMENTS._serialized_start=109490 - _PATTERNFLOWIPV4MOREFRAGMENTS._serialized_end=109920 - _PATTERNFLOWIPV4MOREFRAGMENTS_CHOICE._serialized_start=98375 - _PATTERNFLOWIPV4MOREFRAGMENTS_CHOICE._serialized_end=98461 - _PATTERNFLOWIPV4MOREFRAGMENTS_CHOICE_ENUM._serialized_start=98385 - _PATTERNFLOWIPV4MOREFRAGMENTS_CHOICE_ENUM._serialized_end=98461 - _PATTERNFLOWIPV4FRAGMENTOFFSETCOUNTER._serialized_start=109922 - _PATTERNFLOWIPV4FRAGMENTOFFSETCOUNTER._serialized_end=110048 - _PATTERNFLOWIPV4FRAGMENTOFFSETMETRICTAG._serialized_start=110051 - _PATTERNFLOWIPV4FRAGMENTOFFSETMETRICTAG._serialized_end=110183 - _PATTERNFLOWIPV4FRAGMENTOFFSET._serialized_start=110186 - _PATTERNFLOWIPV4FRAGMENTOFFSET._serialized_end=110621 - _PATTERNFLOWIPV4FRAGMENTOFFSET_CHOICE._serialized_start=98375 - _PATTERNFLOWIPV4FRAGMENTOFFSET_CHOICE._serialized_end=98461 - _PATTERNFLOWIPV4FRAGMENTOFFSET_CHOICE_ENUM._serialized_start=98385 - _PATTERNFLOWIPV4FRAGMENTOFFSET_CHOICE_ENUM._serialized_end=98461 - _PATTERNFLOWIPV4TIMETOLIVECOUNTER._serialized_start=110623 - _PATTERNFLOWIPV4TIMETOLIVECOUNTER._serialized_end=110745 - _PATTERNFLOWIPV4TIMETOLIVEMETRICTAG._serialized_start=110748 - _PATTERNFLOWIPV4TIMETOLIVEMETRICTAG._serialized_end=110876 - _PATTERNFLOWIPV4TIMETOLIVE._serialized_start=110879 - _PATTERNFLOWIPV4TIMETOLIVE._serialized_end=111294 - _PATTERNFLOWIPV4TIMETOLIVE_CHOICE._serialized_start=98375 - _PATTERNFLOWIPV4TIMETOLIVE_CHOICE._serialized_end=98461 - _PATTERNFLOWIPV4TIMETOLIVE_CHOICE_ENUM._serialized_start=98385 - _PATTERNFLOWIPV4TIMETOLIVE_CHOICE_ENUM._serialized_end=98461 - _PATTERNFLOWIPV4PROTOCOLCOUNTER._serialized_start=111296 - _PATTERNFLOWIPV4PROTOCOLCOUNTER._serialized_end=111416 - _PATTERNFLOWIPV4PROTOCOLMETRICTAG._serialized_start=111418 - _PATTERNFLOWIPV4PROTOCOLMETRICTAG._serialized_end=111544 - _PATTERNFLOWIPV4PROTOCOL._serialized_start=111547 - _PATTERNFLOWIPV4PROTOCOL._serialized_end=111990 - _PATTERNFLOWIPV4PROTOCOL_CHOICE._serialized_start=97705 - _PATTERNFLOWIPV4PROTOCOL_CHOICE._serialized_end=97801 - _PATTERNFLOWIPV4PROTOCOL_CHOICE_ENUM._serialized_start=97715 - _PATTERNFLOWIPV4PROTOCOL_CHOICE_ENUM._serialized_end=97801 - _PATTERNFLOWIPV4HEADERCHECKSUM._serialized_start=111993 - _PATTERNFLOWIPV4HEADERCHECKSUM._serialized_end=112344 - _PATTERNFLOWIPV4HEADERCHECKSUM_CHOICE._serialized_start=112191 - _PATTERNFLOWIPV4HEADERCHECKSUM_CHOICE._serialized_end=112251 - _PATTERNFLOWIPV4HEADERCHECKSUM_CHOICE_ENUM._serialized_start=112201 - _PATTERNFLOWIPV4HEADERCHECKSUM_CHOICE_ENUM._serialized_end=112251 - _PATTERNFLOWIPV4HEADERCHECKSUM_GENERATED._serialized_start=112253 - _PATTERNFLOWIPV4HEADERCHECKSUM_GENERATED._serialized_end=112308 - _PATTERNFLOWIPV4HEADERCHECKSUM_GENERATED_ENUM._serialized_start=112266 - _PATTERNFLOWIPV4HEADERCHECKSUM_GENERATED_ENUM._serialized_end=112308 - _PATTERNFLOWIPV4SRCCOUNTER._serialized_start=112346 - _PATTERNFLOWIPV4SRCCOUNTER._serialized_end=112461 - _PATTERNFLOWIPV4SRCMETRICTAG._serialized_start=112463 - _PATTERNFLOWIPV4SRCMETRICTAG._serialized_end=112584 - _PATTERNFLOWIPV4SRC._serialized_start=112587 - _PATTERNFLOWIPV4SRC._serialized_end=112967 - _PATTERNFLOWIPV4SRC_CHOICE._serialized_start=98375 - _PATTERNFLOWIPV4SRC_CHOICE._serialized_end=98461 - _PATTERNFLOWIPV4SRC_CHOICE_ENUM._serialized_start=98385 - _PATTERNFLOWIPV4SRC_CHOICE_ENUM._serialized_end=98461 - _PATTERNFLOWIPV4DSTCOUNTER._serialized_start=112969 - _PATTERNFLOWIPV4DSTCOUNTER._serialized_end=113084 - _PATTERNFLOWIPV4DSTMETRICTAG._serialized_start=113086 - _PATTERNFLOWIPV4DSTMETRICTAG._serialized_end=113207 - _PATTERNFLOWIPV4DST._serialized_start=113210 - _PATTERNFLOWIPV4DST._serialized_end=113590 - _PATTERNFLOWIPV4DST_CHOICE._serialized_start=98375 - _PATTERNFLOWIPV4DST_CHOICE._serialized_end=98461 - _PATTERNFLOWIPV4DST_CHOICE_ENUM._serialized_start=98385 - _PATTERNFLOWIPV4DST_CHOICE_ENUM._serialized_end=98461 - _PATTERNFLOWIPV4PRIORITYRAWCOUNTER._serialized_start=113592 - _PATTERNFLOWIPV4PRIORITYRAWCOUNTER._serialized_end=113715 - _PATTERNFLOWIPV4PRIORITYRAWMETRICTAG._serialized_start=113718 - _PATTERNFLOWIPV4PRIORITYRAWMETRICTAG._serialized_end=113847 - _PATTERNFLOWIPV4PRIORITYRAW._serialized_start=113850 - _PATTERNFLOWIPV4PRIORITYRAW._serialized_end=114270 - _PATTERNFLOWIPV4PRIORITYRAW_CHOICE._serialized_start=98375 - _PATTERNFLOWIPV4PRIORITYRAW_CHOICE._serialized_end=98461 - _PATTERNFLOWIPV4PRIORITYRAW_CHOICE_ENUM._serialized_start=98385 - _PATTERNFLOWIPV4PRIORITYRAW_CHOICE_ENUM._serialized_end=98461 - _PATTERNFLOWIPV4DSCPPHBCOUNTER._serialized_start=114272 - _PATTERNFLOWIPV4DSCPPHBCOUNTER._serialized_end=114391 - _PATTERNFLOWIPV4DSCPPHBMETRICTAG._serialized_start=114393 - _PATTERNFLOWIPV4DSCPPHBMETRICTAG._serialized_end=114518 - _PATTERNFLOWIPV4DSCPPHB._serialized_start=114521 - _PATTERNFLOWIPV4DSCPPHB._serialized_end=114921 - _PATTERNFLOWIPV4DSCPPHB_CHOICE._serialized_start=98375 - _PATTERNFLOWIPV4DSCPPHB_CHOICE._serialized_end=98461 - _PATTERNFLOWIPV4DSCPPHB_CHOICE_ENUM._serialized_start=98385 - _PATTERNFLOWIPV4DSCPPHB_CHOICE_ENUM._serialized_end=98461 - _PATTERNFLOWIPV4DSCPECNCOUNTER._serialized_start=114923 - _PATTERNFLOWIPV4DSCPECNCOUNTER._serialized_end=115042 - _PATTERNFLOWIPV4DSCPECNMETRICTAG._serialized_start=115044 - _PATTERNFLOWIPV4DSCPECNMETRICTAG._serialized_end=115169 - _PATTERNFLOWIPV4DSCPECN._serialized_start=115172 - _PATTERNFLOWIPV4DSCPECN._serialized_end=115572 - _PATTERNFLOWIPV4DSCPECN_CHOICE._serialized_start=98375 - _PATTERNFLOWIPV4DSCPECN_CHOICE._serialized_end=98461 - _PATTERNFLOWIPV4DSCPECN_CHOICE_ENUM._serialized_start=98385 - _PATTERNFLOWIPV4DSCPECN_CHOICE_ENUM._serialized_end=98461 - _PATTERNFLOWIPV4TOSPRECEDENCECOUNTER._serialized_start=115574 - _PATTERNFLOWIPV4TOSPRECEDENCECOUNTER._serialized_end=115699 - _PATTERNFLOWIPV4TOSPRECEDENCEMETRICTAG._serialized_start=115702 - _PATTERNFLOWIPV4TOSPRECEDENCEMETRICTAG._serialized_end=115833 - _PATTERNFLOWIPV4TOSPRECEDENCE._serialized_start=115836 - _PATTERNFLOWIPV4TOSPRECEDENCE._serialized_end=116266 - _PATTERNFLOWIPV4TOSPRECEDENCE_CHOICE._serialized_start=98375 - _PATTERNFLOWIPV4TOSPRECEDENCE_CHOICE._serialized_end=98461 - _PATTERNFLOWIPV4TOSPRECEDENCE_CHOICE_ENUM._serialized_start=98385 - _PATTERNFLOWIPV4TOSPRECEDENCE_CHOICE_ENUM._serialized_end=98461 - _PATTERNFLOWIPV4TOSDELAYCOUNTER._serialized_start=116268 - _PATTERNFLOWIPV4TOSDELAYCOUNTER._serialized_end=116388 - _PATTERNFLOWIPV4TOSDELAYMETRICTAG._serialized_start=116390 - _PATTERNFLOWIPV4TOSDELAYMETRICTAG._serialized_end=116516 - _PATTERNFLOWIPV4TOSDELAY._serialized_start=116519 - _PATTERNFLOWIPV4TOSDELAY._serialized_end=116924 - _PATTERNFLOWIPV4TOSDELAY_CHOICE._serialized_start=98375 - _PATTERNFLOWIPV4TOSDELAY_CHOICE._serialized_end=98461 - _PATTERNFLOWIPV4TOSDELAY_CHOICE_ENUM._serialized_start=98385 - _PATTERNFLOWIPV4TOSDELAY_CHOICE_ENUM._serialized_end=98461 - _PATTERNFLOWIPV4TOSTHROUGHPUTCOUNTER._serialized_start=116926 - _PATTERNFLOWIPV4TOSTHROUGHPUTCOUNTER._serialized_end=117051 - _PATTERNFLOWIPV4TOSTHROUGHPUTMETRICTAG._serialized_start=117054 - _PATTERNFLOWIPV4TOSTHROUGHPUTMETRICTAG._serialized_end=117185 - _PATTERNFLOWIPV4TOSTHROUGHPUT._serialized_start=117188 - _PATTERNFLOWIPV4TOSTHROUGHPUT._serialized_end=117618 - _PATTERNFLOWIPV4TOSTHROUGHPUT_CHOICE._serialized_start=98375 - _PATTERNFLOWIPV4TOSTHROUGHPUT_CHOICE._serialized_end=98461 - _PATTERNFLOWIPV4TOSTHROUGHPUT_CHOICE_ENUM._serialized_start=98385 - _PATTERNFLOWIPV4TOSTHROUGHPUT_CHOICE_ENUM._serialized_end=98461 - _PATTERNFLOWIPV4TOSRELIABILITYCOUNTER._serialized_start=117620 - _PATTERNFLOWIPV4TOSRELIABILITYCOUNTER._serialized_end=117746 - _PATTERNFLOWIPV4TOSRELIABILITYMETRICTAG._serialized_start=117749 - _PATTERNFLOWIPV4TOSRELIABILITYMETRICTAG._serialized_end=117881 - _PATTERNFLOWIPV4TOSRELIABILITY._serialized_start=117884 - _PATTERNFLOWIPV4TOSRELIABILITY._serialized_end=118319 - _PATTERNFLOWIPV4TOSRELIABILITY_CHOICE._serialized_start=98375 - _PATTERNFLOWIPV4TOSRELIABILITY_CHOICE._serialized_end=98461 - _PATTERNFLOWIPV4TOSRELIABILITY_CHOICE_ENUM._serialized_start=98385 - _PATTERNFLOWIPV4TOSRELIABILITY_CHOICE_ENUM._serialized_end=98461 - _PATTERNFLOWIPV4TOSMONETARYCOUNTER._serialized_start=118321 - _PATTERNFLOWIPV4TOSMONETARYCOUNTER._serialized_end=118444 - _PATTERNFLOWIPV4TOSMONETARYMETRICTAG._serialized_start=118447 - _PATTERNFLOWIPV4TOSMONETARYMETRICTAG._serialized_end=118576 - _PATTERNFLOWIPV4TOSMONETARY._serialized_start=118579 - _PATTERNFLOWIPV4TOSMONETARY._serialized_end=118999 - _PATTERNFLOWIPV4TOSMONETARY_CHOICE._serialized_start=98375 - _PATTERNFLOWIPV4TOSMONETARY_CHOICE._serialized_end=98461 - _PATTERNFLOWIPV4TOSMONETARY_CHOICE_ENUM._serialized_start=98385 - _PATTERNFLOWIPV4TOSMONETARY_CHOICE_ENUM._serialized_end=98461 - _PATTERNFLOWIPV4TOSUNUSEDCOUNTER._serialized_start=119001 - _PATTERNFLOWIPV4TOSUNUSEDCOUNTER._serialized_end=119122 - _PATTERNFLOWIPV4TOSUNUSEDMETRICTAG._serialized_start=119124 - _PATTERNFLOWIPV4TOSUNUSEDMETRICTAG._serialized_end=119251 - _PATTERNFLOWIPV4TOSUNUSED._serialized_start=119254 - _PATTERNFLOWIPV4TOSUNUSED._serialized_end=119664 - _PATTERNFLOWIPV4TOSUNUSED_CHOICE._serialized_start=98375 - _PATTERNFLOWIPV4TOSUNUSED_CHOICE._serialized_end=98461 - _PATTERNFLOWIPV4TOSUNUSED_CHOICE_ENUM._serialized_start=98385 - _PATTERNFLOWIPV4TOSUNUSED_CHOICE_ENUM._serialized_end=98461 - _PATTERNFLOWIPV6VERSIONCOUNTER._serialized_start=119666 - _PATTERNFLOWIPV6VERSIONCOUNTER._serialized_end=119785 - _PATTERNFLOWIPV6VERSIONMETRICTAG._serialized_start=119787 - _PATTERNFLOWIPV6VERSIONMETRICTAG._serialized_end=119912 - _PATTERNFLOWIPV6VERSION._serialized_start=119915 - _PATTERNFLOWIPV6VERSION._serialized_end=120315 - _PATTERNFLOWIPV6VERSION_CHOICE._serialized_start=98375 - _PATTERNFLOWIPV6VERSION_CHOICE._serialized_end=98461 - _PATTERNFLOWIPV6VERSION_CHOICE_ENUM._serialized_start=98385 - _PATTERNFLOWIPV6VERSION_CHOICE_ENUM._serialized_end=98461 - _PATTERNFLOWIPV6TRAFFICCLASSCOUNTER._serialized_start=120317 - _PATTERNFLOWIPV6TRAFFICCLASSCOUNTER._serialized_end=120441 - _PATTERNFLOWIPV6TRAFFICCLASSMETRICTAG._serialized_start=120444 - _PATTERNFLOWIPV6TRAFFICCLASSMETRICTAG._serialized_end=120574 - _PATTERNFLOWIPV6TRAFFICCLASS._serialized_start=120577 - _PATTERNFLOWIPV6TRAFFICCLASS._serialized_end=121002 - _PATTERNFLOWIPV6TRAFFICCLASS_CHOICE._serialized_start=98375 - _PATTERNFLOWIPV6TRAFFICCLASS_CHOICE._serialized_end=98461 - _PATTERNFLOWIPV6TRAFFICCLASS_CHOICE_ENUM._serialized_start=98385 - _PATTERNFLOWIPV6TRAFFICCLASS_CHOICE_ENUM._serialized_end=98461 - _PATTERNFLOWIPV6FLOWLABELCOUNTER._serialized_start=121004 - _PATTERNFLOWIPV6FLOWLABELCOUNTER._serialized_end=121125 - _PATTERNFLOWIPV6FLOWLABELMETRICTAG._serialized_start=121127 - _PATTERNFLOWIPV6FLOWLABELMETRICTAG._serialized_end=121254 - _PATTERNFLOWIPV6FLOWLABEL._serialized_start=121257 - _PATTERNFLOWIPV6FLOWLABEL._serialized_end=121667 - _PATTERNFLOWIPV6FLOWLABEL_CHOICE._serialized_start=98375 - _PATTERNFLOWIPV6FLOWLABEL_CHOICE._serialized_end=98461 - _PATTERNFLOWIPV6FLOWLABEL_CHOICE_ENUM._serialized_start=98385 - _PATTERNFLOWIPV6FLOWLABEL_CHOICE_ENUM._serialized_end=98461 - _PATTERNFLOWIPV6PAYLOADLENGTHCOUNTER._serialized_start=121669 - _PATTERNFLOWIPV6PAYLOADLENGTHCOUNTER._serialized_end=121794 - _PATTERNFLOWIPV6PAYLOADLENGTHMETRICTAG._serialized_start=121797 - _PATTERNFLOWIPV6PAYLOADLENGTHMETRICTAG._serialized_end=121928 - _PATTERNFLOWIPV6PAYLOADLENGTH._serialized_start=121931 - _PATTERNFLOWIPV6PAYLOADLENGTH._serialized_end=122399 - _PATTERNFLOWIPV6PAYLOADLENGTH_CHOICE._serialized_start=97705 - _PATTERNFLOWIPV6PAYLOADLENGTH_CHOICE._serialized_end=97801 - _PATTERNFLOWIPV6PAYLOADLENGTH_CHOICE_ENUM._serialized_start=97715 - _PATTERNFLOWIPV6PAYLOADLENGTH_CHOICE_ENUM._serialized_end=97801 - _PATTERNFLOWIPV6NEXTHEADERCOUNTER._serialized_start=122401 - _PATTERNFLOWIPV6NEXTHEADERCOUNTER._serialized_end=122523 - _PATTERNFLOWIPV6NEXTHEADERMETRICTAG._serialized_start=122526 - _PATTERNFLOWIPV6NEXTHEADERMETRICTAG._serialized_end=122654 - _PATTERNFLOWIPV6NEXTHEADER._serialized_start=122657 - _PATTERNFLOWIPV6NEXTHEADER._serialized_end=123110 - _PATTERNFLOWIPV6NEXTHEADER_CHOICE._serialized_start=97705 - _PATTERNFLOWIPV6NEXTHEADER_CHOICE._serialized_end=97801 - _PATTERNFLOWIPV6NEXTHEADER_CHOICE_ENUM._serialized_start=97715 - _PATTERNFLOWIPV6NEXTHEADER_CHOICE_ENUM._serialized_end=97801 - _PATTERNFLOWIPV6HOPLIMITCOUNTER._serialized_start=123112 - _PATTERNFLOWIPV6HOPLIMITCOUNTER._serialized_end=123232 - _PATTERNFLOWIPV6HOPLIMITMETRICTAG._serialized_start=123234 - _PATTERNFLOWIPV6HOPLIMITMETRICTAG._serialized_end=123360 - _PATTERNFLOWIPV6HOPLIMIT._serialized_start=123363 - _PATTERNFLOWIPV6HOPLIMIT._serialized_end=123768 - _PATTERNFLOWIPV6HOPLIMIT_CHOICE._serialized_start=98375 - _PATTERNFLOWIPV6HOPLIMIT_CHOICE._serialized_end=98461 - _PATTERNFLOWIPV6HOPLIMIT_CHOICE_ENUM._serialized_start=98385 - _PATTERNFLOWIPV6HOPLIMIT_CHOICE_ENUM._serialized_end=98461 - _PATTERNFLOWIPV6SRCCOUNTER._serialized_start=123770 - _PATTERNFLOWIPV6SRCCOUNTER._serialized_end=123885 - _PATTERNFLOWIPV6SRCMETRICTAG._serialized_start=123887 - _PATTERNFLOWIPV6SRCMETRICTAG._serialized_end=124008 - _PATTERNFLOWIPV6SRC._serialized_start=124011 - _PATTERNFLOWIPV6SRC._serialized_end=124391 - _PATTERNFLOWIPV6SRC_CHOICE._serialized_start=98375 - _PATTERNFLOWIPV6SRC_CHOICE._serialized_end=98461 - _PATTERNFLOWIPV6SRC_CHOICE_ENUM._serialized_start=98385 - _PATTERNFLOWIPV6SRC_CHOICE_ENUM._serialized_end=98461 - _PATTERNFLOWIPV6DSTCOUNTER._serialized_start=124393 - _PATTERNFLOWIPV6DSTCOUNTER._serialized_end=124508 - _PATTERNFLOWIPV6DSTMETRICTAG._serialized_start=124510 - _PATTERNFLOWIPV6DSTMETRICTAG._serialized_end=124631 - _PATTERNFLOWIPV6DST._serialized_start=124634 - _PATTERNFLOWIPV6DST._serialized_end=125014 - _PATTERNFLOWIPV6DST_CHOICE._serialized_start=98375 - _PATTERNFLOWIPV6DST_CHOICE._serialized_end=98461 - _PATTERNFLOWIPV6DST_CHOICE_ENUM._serialized_start=98385 - _PATTERNFLOWIPV6DST_CHOICE_ENUM._serialized_end=98461 - _PATTERNFLOWPFCPAUSEDSTCOUNTER._serialized_start=125016 - _PATTERNFLOWPFCPAUSEDSTCOUNTER._serialized_end=125135 - _PATTERNFLOWPFCPAUSEDSTMETRICTAG._serialized_start=125137 - _PATTERNFLOWPFCPAUSEDSTMETRICTAG._serialized_end=125262 - _PATTERNFLOWPFCPAUSEDST._serialized_start=125265 - _PATTERNFLOWPFCPAUSEDST._serialized_end=125665 - _PATTERNFLOWPFCPAUSEDST_CHOICE._serialized_start=98375 - _PATTERNFLOWPFCPAUSEDST_CHOICE._serialized_end=98461 - _PATTERNFLOWPFCPAUSEDST_CHOICE_ENUM._serialized_start=98385 - _PATTERNFLOWPFCPAUSEDST_CHOICE_ENUM._serialized_end=98461 - _PATTERNFLOWPFCPAUSESRCCOUNTER._serialized_start=125667 - _PATTERNFLOWPFCPAUSESRCCOUNTER._serialized_end=125786 - _PATTERNFLOWPFCPAUSESRCMETRICTAG._serialized_start=125788 - _PATTERNFLOWPFCPAUSESRCMETRICTAG._serialized_end=125913 - _PATTERNFLOWPFCPAUSESRC._serialized_start=125916 - _PATTERNFLOWPFCPAUSESRC._serialized_end=126316 - _PATTERNFLOWPFCPAUSESRC_CHOICE._serialized_start=98375 - _PATTERNFLOWPFCPAUSESRC_CHOICE._serialized_end=98461 - _PATTERNFLOWPFCPAUSESRC_CHOICE_ENUM._serialized_start=98385 - _PATTERNFLOWPFCPAUSESRC_CHOICE_ENUM._serialized_end=98461 - _PATTERNFLOWPFCPAUSEETHERTYPECOUNTER._serialized_start=126318 - _PATTERNFLOWPFCPAUSEETHERTYPECOUNTER._serialized_end=126443 - _PATTERNFLOWPFCPAUSEETHERTYPEMETRICTAG._serialized_start=126446 - _PATTERNFLOWPFCPAUSEETHERTYPEMETRICTAG._serialized_end=126577 - _PATTERNFLOWPFCPAUSEETHERTYPE._serialized_start=126580 - _PATTERNFLOWPFCPAUSEETHERTYPE._serialized_end=127010 - _PATTERNFLOWPFCPAUSEETHERTYPE_CHOICE._serialized_start=98375 - _PATTERNFLOWPFCPAUSEETHERTYPE_CHOICE._serialized_end=98461 - _PATTERNFLOWPFCPAUSEETHERTYPE_CHOICE_ENUM._serialized_start=98385 - _PATTERNFLOWPFCPAUSEETHERTYPE_CHOICE_ENUM._serialized_end=98461 - _PATTERNFLOWPFCPAUSECONTROLOPCODECOUNTER._serialized_start=127013 - _PATTERNFLOWPFCPAUSECONTROLOPCODECOUNTER._serialized_end=127142 - _PATTERNFLOWPFCPAUSECONTROLOPCODEMETRICTAG._serialized_start=127145 - _PATTERNFLOWPFCPAUSECONTROLOPCODEMETRICTAG._serialized_end=127280 - _PATTERNFLOWPFCPAUSECONTROLOPCODE._serialized_start=127283 - _PATTERNFLOWPFCPAUSECONTROLOPCODE._serialized_end=127733 - _PATTERNFLOWPFCPAUSECONTROLOPCODE_CHOICE._serialized_start=98375 - _PATTERNFLOWPFCPAUSECONTROLOPCODE_CHOICE._serialized_end=98461 - _PATTERNFLOWPFCPAUSECONTROLOPCODE_CHOICE_ENUM._serialized_start=98385 - _PATTERNFLOWPFCPAUSECONTROLOPCODE_CHOICE_ENUM._serialized_end=98461 - _PATTERNFLOWPFCPAUSECLASSENABLEVECTORCOUNTER._serialized_start=127736 - _PATTERNFLOWPFCPAUSECLASSENABLEVECTORCOUNTER._serialized_end=127869 - _PATTERNFLOWPFCPAUSECLASSENABLEVECTORMETRICTAG._serialized_start=127872 - _PATTERNFLOWPFCPAUSECLASSENABLEVECTORMETRICTAG._serialized_end=128011 - _PATTERNFLOWPFCPAUSECLASSENABLEVECTOR._serialized_start=128014 - _PATTERNFLOWPFCPAUSECLASSENABLEVECTOR._serialized_end=128484 - _PATTERNFLOWPFCPAUSECLASSENABLEVECTOR_CHOICE._serialized_start=98375 - _PATTERNFLOWPFCPAUSECLASSENABLEVECTOR_CHOICE._serialized_end=98461 - _PATTERNFLOWPFCPAUSECLASSENABLEVECTOR_CHOICE_ENUM._serialized_start=98385 - _PATTERNFLOWPFCPAUSECLASSENABLEVECTOR_CHOICE_ENUM._serialized_end=98461 - _PATTERNFLOWPFCPAUSEPAUSECLASS0COUNTER._serialized_start=128486 - _PATTERNFLOWPFCPAUSEPAUSECLASS0COUNTER._serialized_end=128613 - _PATTERNFLOWPFCPAUSEPAUSECLASS0METRICTAG._serialized_start=128616 - _PATTERNFLOWPFCPAUSEPAUSECLASS0METRICTAG._serialized_end=128749 - _PATTERNFLOWPFCPAUSEPAUSECLASS0._serialized_start=128752 - _PATTERNFLOWPFCPAUSEPAUSECLASS0._serialized_end=129192 - _PATTERNFLOWPFCPAUSEPAUSECLASS0_CHOICE._serialized_start=98375 - _PATTERNFLOWPFCPAUSEPAUSECLASS0_CHOICE._serialized_end=98461 - _PATTERNFLOWPFCPAUSEPAUSECLASS0_CHOICE_ENUM._serialized_start=98385 - _PATTERNFLOWPFCPAUSEPAUSECLASS0_CHOICE_ENUM._serialized_end=98461 - _PATTERNFLOWPFCPAUSEPAUSECLASS1COUNTER._serialized_start=129194 - _PATTERNFLOWPFCPAUSEPAUSECLASS1COUNTER._serialized_end=129321 - _PATTERNFLOWPFCPAUSEPAUSECLASS1METRICTAG._serialized_start=129324 - _PATTERNFLOWPFCPAUSEPAUSECLASS1METRICTAG._serialized_end=129457 - _PATTERNFLOWPFCPAUSEPAUSECLASS1._serialized_start=129460 - _PATTERNFLOWPFCPAUSEPAUSECLASS1._serialized_end=129900 - _PATTERNFLOWPFCPAUSEPAUSECLASS1_CHOICE._serialized_start=98375 - _PATTERNFLOWPFCPAUSEPAUSECLASS1_CHOICE._serialized_end=98461 - _PATTERNFLOWPFCPAUSEPAUSECLASS1_CHOICE_ENUM._serialized_start=98385 - _PATTERNFLOWPFCPAUSEPAUSECLASS1_CHOICE_ENUM._serialized_end=98461 - _PATTERNFLOWPFCPAUSEPAUSECLASS2COUNTER._serialized_start=129902 - _PATTERNFLOWPFCPAUSEPAUSECLASS2COUNTER._serialized_end=130029 - _PATTERNFLOWPFCPAUSEPAUSECLASS2METRICTAG._serialized_start=130032 - _PATTERNFLOWPFCPAUSEPAUSECLASS2METRICTAG._serialized_end=130165 - _PATTERNFLOWPFCPAUSEPAUSECLASS2._serialized_start=130168 - _PATTERNFLOWPFCPAUSEPAUSECLASS2._serialized_end=130608 - _PATTERNFLOWPFCPAUSEPAUSECLASS2_CHOICE._serialized_start=98375 - _PATTERNFLOWPFCPAUSEPAUSECLASS2_CHOICE._serialized_end=98461 - _PATTERNFLOWPFCPAUSEPAUSECLASS2_CHOICE_ENUM._serialized_start=98385 - _PATTERNFLOWPFCPAUSEPAUSECLASS2_CHOICE_ENUM._serialized_end=98461 - _PATTERNFLOWPFCPAUSEPAUSECLASS3COUNTER._serialized_start=130610 - _PATTERNFLOWPFCPAUSEPAUSECLASS3COUNTER._serialized_end=130737 - _PATTERNFLOWPFCPAUSEPAUSECLASS3METRICTAG._serialized_start=130740 - _PATTERNFLOWPFCPAUSEPAUSECLASS3METRICTAG._serialized_end=130873 - _PATTERNFLOWPFCPAUSEPAUSECLASS3._serialized_start=130876 - _PATTERNFLOWPFCPAUSEPAUSECLASS3._serialized_end=131316 - _PATTERNFLOWPFCPAUSEPAUSECLASS3_CHOICE._serialized_start=98375 - _PATTERNFLOWPFCPAUSEPAUSECLASS3_CHOICE._serialized_end=98461 - _PATTERNFLOWPFCPAUSEPAUSECLASS3_CHOICE_ENUM._serialized_start=98385 - _PATTERNFLOWPFCPAUSEPAUSECLASS3_CHOICE_ENUM._serialized_end=98461 - _PATTERNFLOWPFCPAUSEPAUSECLASS4COUNTER._serialized_start=131318 - _PATTERNFLOWPFCPAUSEPAUSECLASS4COUNTER._serialized_end=131445 - _PATTERNFLOWPFCPAUSEPAUSECLASS4METRICTAG._serialized_start=131448 - _PATTERNFLOWPFCPAUSEPAUSECLASS4METRICTAG._serialized_end=131581 - _PATTERNFLOWPFCPAUSEPAUSECLASS4._serialized_start=131584 - _PATTERNFLOWPFCPAUSEPAUSECLASS4._serialized_end=132024 - _PATTERNFLOWPFCPAUSEPAUSECLASS4_CHOICE._serialized_start=98375 - _PATTERNFLOWPFCPAUSEPAUSECLASS4_CHOICE._serialized_end=98461 - _PATTERNFLOWPFCPAUSEPAUSECLASS4_CHOICE_ENUM._serialized_start=98385 - _PATTERNFLOWPFCPAUSEPAUSECLASS4_CHOICE_ENUM._serialized_end=98461 - _PATTERNFLOWPFCPAUSEPAUSECLASS5COUNTER._serialized_start=132026 - _PATTERNFLOWPFCPAUSEPAUSECLASS5COUNTER._serialized_end=132153 - _PATTERNFLOWPFCPAUSEPAUSECLASS5METRICTAG._serialized_start=132156 - _PATTERNFLOWPFCPAUSEPAUSECLASS5METRICTAG._serialized_end=132289 - _PATTERNFLOWPFCPAUSEPAUSECLASS5._serialized_start=132292 - _PATTERNFLOWPFCPAUSEPAUSECLASS5._serialized_end=132732 - _PATTERNFLOWPFCPAUSEPAUSECLASS5_CHOICE._serialized_start=98375 - _PATTERNFLOWPFCPAUSEPAUSECLASS5_CHOICE._serialized_end=98461 - _PATTERNFLOWPFCPAUSEPAUSECLASS5_CHOICE_ENUM._serialized_start=98385 - _PATTERNFLOWPFCPAUSEPAUSECLASS5_CHOICE_ENUM._serialized_end=98461 - _PATTERNFLOWPFCPAUSEPAUSECLASS6COUNTER._serialized_start=132734 - _PATTERNFLOWPFCPAUSEPAUSECLASS6COUNTER._serialized_end=132861 - _PATTERNFLOWPFCPAUSEPAUSECLASS6METRICTAG._serialized_start=132864 - _PATTERNFLOWPFCPAUSEPAUSECLASS6METRICTAG._serialized_end=132997 - _PATTERNFLOWPFCPAUSEPAUSECLASS6._serialized_start=133000 - _PATTERNFLOWPFCPAUSEPAUSECLASS6._serialized_end=133440 - _PATTERNFLOWPFCPAUSEPAUSECLASS6_CHOICE._serialized_start=98375 - _PATTERNFLOWPFCPAUSEPAUSECLASS6_CHOICE._serialized_end=98461 - _PATTERNFLOWPFCPAUSEPAUSECLASS6_CHOICE_ENUM._serialized_start=98385 - _PATTERNFLOWPFCPAUSEPAUSECLASS6_CHOICE_ENUM._serialized_end=98461 - _PATTERNFLOWPFCPAUSEPAUSECLASS7COUNTER._serialized_start=133442 - _PATTERNFLOWPFCPAUSEPAUSECLASS7COUNTER._serialized_end=133569 - _PATTERNFLOWPFCPAUSEPAUSECLASS7METRICTAG._serialized_start=133572 - _PATTERNFLOWPFCPAUSEPAUSECLASS7METRICTAG._serialized_end=133705 - _PATTERNFLOWPFCPAUSEPAUSECLASS7._serialized_start=133708 - _PATTERNFLOWPFCPAUSEPAUSECLASS7._serialized_end=134148 - _PATTERNFLOWPFCPAUSEPAUSECLASS7_CHOICE._serialized_start=98375 - _PATTERNFLOWPFCPAUSEPAUSECLASS7_CHOICE._serialized_end=98461 - _PATTERNFLOWPFCPAUSEPAUSECLASS7_CHOICE_ENUM._serialized_start=98385 - _PATTERNFLOWPFCPAUSEPAUSECLASS7_CHOICE_ENUM._serialized_end=98461 - _PATTERNFLOWETHERNETPAUSEDSTCOUNTER._serialized_start=134150 - _PATTERNFLOWETHERNETPAUSEDSTCOUNTER._serialized_end=134274 - _PATTERNFLOWETHERNETPAUSEDSTMETRICTAG._serialized_start=134277 - _PATTERNFLOWETHERNETPAUSEDSTMETRICTAG._serialized_end=134407 - _PATTERNFLOWETHERNETPAUSEDST._serialized_start=134410 - _PATTERNFLOWETHERNETPAUSEDST._serialized_end=134835 - _PATTERNFLOWETHERNETPAUSEDST_CHOICE._serialized_start=98375 - _PATTERNFLOWETHERNETPAUSEDST_CHOICE._serialized_end=98461 - _PATTERNFLOWETHERNETPAUSEDST_CHOICE_ENUM._serialized_start=98385 - _PATTERNFLOWETHERNETPAUSEDST_CHOICE_ENUM._serialized_end=98461 - _PATTERNFLOWETHERNETPAUSESRCCOUNTER._serialized_start=134837 - _PATTERNFLOWETHERNETPAUSESRCCOUNTER._serialized_end=134961 - _PATTERNFLOWETHERNETPAUSESRCMETRICTAG._serialized_start=134964 - _PATTERNFLOWETHERNETPAUSESRCMETRICTAG._serialized_end=135094 - _PATTERNFLOWETHERNETPAUSESRC._serialized_start=135097 - _PATTERNFLOWETHERNETPAUSESRC._serialized_end=135522 - _PATTERNFLOWETHERNETPAUSESRC_CHOICE._serialized_start=98375 - _PATTERNFLOWETHERNETPAUSESRC_CHOICE._serialized_end=98461 - _PATTERNFLOWETHERNETPAUSESRC_CHOICE_ENUM._serialized_start=98385 - _PATTERNFLOWETHERNETPAUSESRC_CHOICE_ENUM._serialized_end=98461 - _PATTERNFLOWETHERNETPAUSEETHERTYPECOUNTER._serialized_start=135525 - _PATTERNFLOWETHERNETPAUSEETHERTYPECOUNTER._serialized_end=135655 - _PATTERNFLOWETHERNETPAUSEETHERTYPEMETRICTAG._serialized_start=135658 - _PATTERNFLOWETHERNETPAUSEETHERTYPEMETRICTAG._serialized_end=135794 - _PATTERNFLOWETHERNETPAUSEETHERTYPE._serialized_start=135797 - _PATTERNFLOWETHERNETPAUSEETHERTYPE._serialized_end=136252 - _PATTERNFLOWETHERNETPAUSEETHERTYPE_CHOICE._serialized_start=98375 - _PATTERNFLOWETHERNETPAUSEETHERTYPE_CHOICE._serialized_end=98461 - _PATTERNFLOWETHERNETPAUSEETHERTYPE_CHOICE_ENUM._serialized_start=98385 - _PATTERNFLOWETHERNETPAUSEETHERTYPE_CHOICE_ENUM._serialized_end=98461 - _PATTERNFLOWETHERNETPAUSECONTROLOPCODECOUNTER._serialized_start=136255 - _PATTERNFLOWETHERNETPAUSECONTROLOPCODECOUNTER._serialized_end=136389 - _PATTERNFLOWETHERNETPAUSECONTROLOPCODEMETRICTAG._serialized_start=136392 - _PATTERNFLOWETHERNETPAUSECONTROLOPCODEMETRICTAG._serialized_end=136532 - _PATTERNFLOWETHERNETPAUSECONTROLOPCODE._serialized_start=136535 - _PATTERNFLOWETHERNETPAUSECONTROLOPCODE._serialized_end=137010 - _PATTERNFLOWETHERNETPAUSECONTROLOPCODE_CHOICE._serialized_start=98375 - _PATTERNFLOWETHERNETPAUSECONTROLOPCODE_CHOICE._serialized_end=98461 - _PATTERNFLOWETHERNETPAUSECONTROLOPCODE_CHOICE_ENUM._serialized_start=98385 - _PATTERNFLOWETHERNETPAUSECONTROLOPCODE_CHOICE_ENUM._serialized_end=98461 - _PATTERNFLOWETHERNETPAUSETIMECOUNTER._serialized_start=137012 - _PATTERNFLOWETHERNETPAUSETIMECOUNTER._serialized_end=137137 - _PATTERNFLOWETHERNETPAUSETIMEMETRICTAG._serialized_start=137140 - _PATTERNFLOWETHERNETPAUSETIMEMETRICTAG._serialized_end=137271 - _PATTERNFLOWETHERNETPAUSETIME._serialized_start=137274 - _PATTERNFLOWETHERNETPAUSETIME._serialized_end=137704 - _PATTERNFLOWETHERNETPAUSETIME_CHOICE._serialized_start=98375 - _PATTERNFLOWETHERNETPAUSETIME_CHOICE._serialized_end=98461 - _PATTERNFLOWETHERNETPAUSETIME_CHOICE_ENUM._serialized_start=98385 - _PATTERNFLOWETHERNETPAUSETIME_CHOICE_ENUM._serialized_end=98461 - _PATTERNFLOWTCPSRCPORTCOUNTER._serialized_start=137706 - _PATTERNFLOWTCPSRCPORTCOUNTER._serialized_end=137824 - _PATTERNFLOWTCPSRCPORTMETRICTAG._serialized_start=137826 - _PATTERNFLOWTCPSRCPORTMETRICTAG._serialized_end=137950 - _PATTERNFLOWTCPSRCPORT._serialized_start=137953 - _PATTERNFLOWTCPSRCPORT._serialized_end=138348 - _PATTERNFLOWTCPSRCPORT_CHOICE._serialized_start=98375 - _PATTERNFLOWTCPSRCPORT_CHOICE._serialized_end=98461 - _PATTERNFLOWTCPSRCPORT_CHOICE_ENUM._serialized_start=98385 - _PATTERNFLOWTCPSRCPORT_CHOICE_ENUM._serialized_end=98461 - _PATTERNFLOWTCPDSTPORTCOUNTER._serialized_start=138350 - _PATTERNFLOWTCPDSTPORTCOUNTER._serialized_end=138468 - _PATTERNFLOWTCPDSTPORTMETRICTAG._serialized_start=138470 - _PATTERNFLOWTCPDSTPORTMETRICTAG._serialized_end=138594 - _PATTERNFLOWTCPDSTPORT._serialized_start=138597 - _PATTERNFLOWTCPDSTPORT._serialized_end=138992 - _PATTERNFLOWTCPDSTPORT_CHOICE._serialized_start=98375 - _PATTERNFLOWTCPDSTPORT_CHOICE._serialized_end=98461 - _PATTERNFLOWTCPDSTPORT_CHOICE_ENUM._serialized_start=98385 - _PATTERNFLOWTCPDSTPORT_CHOICE_ENUM._serialized_end=98461 - _PATTERNFLOWTCPSEQNUMCOUNTER._serialized_start=138994 - _PATTERNFLOWTCPSEQNUMCOUNTER._serialized_end=139111 - _PATTERNFLOWTCPSEQNUMMETRICTAG._serialized_start=139113 - _PATTERNFLOWTCPSEQNUMMETRICTAG._serialized_end=139236 - _PATTERNFLOWTCPSEQNUM._serialized_start=139239 - _PATTERNFLOWTCPSEQNUM._serialized_end=139629 - _PATTERNFLOWTCPSEQNUM_CHOICE._serialized_start=98375 - _PATTERNFLOWTCPSEQNUM_CHOICE._serialized_end=98461 - _PATTERNFLOWTCPSEQNUM_CHOICE_ENUM._serialized_start=98385 - _PATTERNFLOWTCPSEQNUM_CHOICE_ENUM._serialized_end=98461 - _PATTERNFLOWTCPACKNUMCOUNTER._serialized_start=139631 - _PATTERNFLOWTCPACKNUMCOUNTER._serialized_end=139748 - _PATTERNFLOWTCPACKNUMMETRICTAG._serialized_start=139750 - _PATTERNFLOWTCPACKNUMMETRICTAG._serialized_end=139873 - _PATTERNFLOWTCPACKNUM._serialized_start=139876 - _PATTERNFLOWTCPACKNUM._serialized_end=140266 - _PATTERNFLOWTCPACKNUM_CHOICE._serialized_start=98375 - _PATTERNFLOWTCPACKNUM_CHOICE._serialized_end=98461 - _PATTERNFLOWTCPACKNUM_CHOICE_ENUM._serialized_start=98385 - _PATTERNFLOWTCPACKNUM_CHOICE_ENUM._serialized_end=98461 - _PATTERNFLOWTCPDATAOFFSETCOUNTER._serialized_start=140268 - _PATTERNFLOWTCPDATAOFFSETCOUNTER._serialized_end=140389 - _PATTERNFLOWTCPDATAOFFSETMETRICTAG._serialized_start=140391 - _PATTERNFLOWTCPDATAOFFSETMETRICTAG._serialized_end=140518 - _PATTERNFLOWTCPDATAOFFSET._serialized_start=140521 - _PATTERNFLOWTCPDATAOFFSET._serialized_end=140931 - _PATTERNFLOWTCPDATAOFFSET_CHOICE._serialized_start=98375 - _PATTERNFLOWTCPDATAOFFSET_CHOICE._serialized_end=98461 - _PATTERNFLOWTCPDATAOFFSET_CHOICE_ENUM._serialized_start=98385 - _PATTERNFLOWTCPDATAOFFSET_CHOICE_ENUM._serialized_end=98461 - _PATTERNFLOWTCPECNNSCOUNTER._serialized_start=140933 - _PATTERNFLOWTCPECNNSCOUNTER._serialized_end=141049 - _PATTERNFLOWTCPECNNSMETRICTAG._serialized_start=141051 - _PATTERNFLOWTCPECNNSMETRICTAG._serialized_end=141173 - _PATTERNFLOWTCPECNNS._serialized_start=141176 - _PATTERNFLOWTCPECNNS._serialized_end=141561 - _PATTERNFLOWTCPECNNS_CHOICE._serialized_start=98375 - _PATTERNFLOWTCPECNNS_CHOICE._serialized_end=98461 - _PATTERNFLOWTCPECNNS_CHOICE_ENUM._serialized_start=98385 - _PATTERNFLOWTCPECNNS_CHOICE_ENUM._serialized_end=98461 - _PATTERNFLOWTCPECNCWRCOUNTER._serialized_start=141563 - _PATTERNFLOWTCPECNCWRCOUNTER._serialized_end=141680 - _PATTERNFLOWTCPECNCWRMETRICTAG._serialized_start=141682 - _PATTERNFLOWTCPECNCWRMETRICTAG._serialized_end=141805 - _PATTERNFLOWTCPECNCWR._serialized_start=141808 - _PATTERNFLOWTCPECNCWR._serialized_end=142198 - _PATTERNFLOWTCPECNCWR_CHOICE._serialized_start=98375 - _PATTERNFLOWTCPECNCWR_CHOICE._serialized_end=98461 - _PATTERNFLOWTCPECNCWR_CHOICE_ENUM._serialized_start=98385 - _PATTERNFLOWTCPECNCWR_CHOICE_ENUM._serialized_end=98461 - _PATTERNFLOWTCPECNECHOCOUNTER._serialized_start=142200 - _PATTERNFLOWTCPECNECHOCOUNTER._serialized_end=142318 - _PATTERNFLOWTCPECNECHOMETRICTAG._serialized_start=142320 - _PATTERNFLOWTCPECNECHOMETRICTAG._serialized_end=142444 - _PATTERNFLOWTCPECNECHO._serialized_start=142447 - _PATTERNFLOWTCPECNECHO._serialized_end=142842 - _PATTERNFLOWTCPECNECHO_CHOICE._serialized_start=98375 - _PATTERNFLOWTCPECNECHO_CHOICE._serialized_end=98461 - _PATTERNFLOWTCPECNECHO_CHOICE_ENUM._serialized_start=98385 - _PATTERNFLOWTCPECNECHO_CHOICE_ENUM._serialized_end=98461 - _PATTERNFLOWTCPCTLURGCOUNTER._serialized_start=142844 - _PATTERNFLOWTCPCTLURGCOUNTER._serialized_end=142961 - _PATTERNFLOWTCPCTLURGMETRICTAG._serialized_start=142963 - _PATTERNFLOWTCPCTLURGMETRICTAG._serialized_end=143086 - _PATTERNFLOWTCPCTLURG._serialized_start=143089 - _PATTERNFLOWTCPCTLURG._serialized_end=143479 - _PATTERNFLOWTCPCTLURG_CHOICE._serialized_start=98375 - _PATTERNFLOWTCPCTLURG_CHOICE._serialized_end=98461 - _PATTERNFLOWTCPCTLURG_CHOICE_ENUM._serialized_start=98385 - _PATTERNFLOWTCPCTLURG_CHOICE_ENUM._serialized_end=98461 - _PATTERNFLOWTCPCTLACKCOUNTER._serialized_start=143481 - _PATTERNFLOWTCPCTLACKCOUNTER._serialized_end=143598 - _PATTERNFLOWTCPCTLACKMETRICTAG._serialized_start=143600 - _PATTERNFLOWTCPCTLACKMETRICTAG._serialized_end=143723 - _PATTERNFLOWTCPCTLACK._serialized_start=143726 - _PATTERNFLOWTCPCTLACK._serialized_end=144116 - _PATTERNFLOWTCPCTLACK_CHOICE._serialized_start=98375 - _PATTERNFLOWTCPCTLACK_CHOICE._serialized_end=98461 - _PATTERNFLOWTCPCTLACK_CHOICE_ENUM._serialized_start=98385 - _PATTERNFLOWTCPCTLACK_CHOICE_ENUM._serialized_end=98461 - _PATTERNFLOWTCPCTLPSHCOUNTER._serialized_start=144118 - _PATTERNFLOWTCPCTLPSHCOUNTER._serialized_end=144235 - _PATTERNFLOWTCPCTLPSHMETRICTAG._serialized_start=144237 - _PATTERNFLOWTCPCTLPSHMETRICTAG._serialized_end=144360 - _PATTERNFLOWTCPCTLPSH._serialized_start=144363 - _PATTERNFLOWTCPCTLPSH._serialized_end=144753 - _PATTERNFLOWTCPCTLPSH_CHOICE._serialized_start=98375 - _PATTERNFLOWTCPCTLPSH_CHOICE._serialized_end=98461 - _PATTERNFLOWTCPCTLPSH_CHOICE_ENUM._serialized_start=98385 - _PATTERNFLOWTCPCTLPSH_CHOICE_ENUM._serialized_end=98461 - _PATTERNFLOWTCPCTLRSTCOUNTER._serialized_start=144755 - _PATTERNFLOWTCPCTLRSTCOUNTER._serialized_end=144872 - _PATTERNFLOWTCPCTLRSTMETRICTAG._serialized_start=144874 - _PATTERNFLOWTCPCTLRSTMETRICTAG._serialized_end=144997 - _PATTERNFLOWTCPCTLRST._serialized_start=145000 - _PATTERNFLOWTCPCTLRST._serialized_end=145390 - _PATTERNFLOWTCPCTLRST_CHOICE._serialized_start=98375 - _PATTERNFLOWTCPCTLRST_CHOICE._serialized_end=98461 - _PATTERNFLOWTCPCTLRST_CHOICE_ENUM._serialized_start=98385 - _PATTERNFLOWTCPCTLRST_CHOICE_ENUM._serialized_end=98461 - _PATTERNFLOWTCPCTLSYNCOUNTER._serialized_start=145392 - _PATTERNFLOWTCPCTLSYNCOUNTER._serialized_end=145509 - _PATTERNFLOWTCPCTLSYNMETRICTAG._serialized_start=145511 - _PATTERNFLOWTCPCTLSYNMETRICTAG._serialized_end=145634 - _PATTERNFLOWTCPCTLSYN._serialized_start=145637 - _PATTERNFLOWTCPCTLSYN._serialized_end=146027 - _PATTERNFLOWTCPCTLSYN_CHOICE._serialized_start=98375 - _PATTERNFLOWTCPCTLSYN_CHOICE._serialized_end=98461 - _PATTERNFLOWTCPCTLSYN_CHOICE_ENUM._serialized_start=98385 - _PATTERNFLOWTCPCTLSYN_CHOICE_ENUM._serialized_end=98461 - _PATTERNFLOWTCPCTLFINCOUNTER._serialized_start=146029 - _PATTERNFLOWTCPCTLFINCOUNTER._serialized_end=146146 - _PATTERNFLOWTCPCTLFINMETRICTAG._serialized_start=146148 - _PATTERNFLOWTCPCTLFINMETRICTAG._serialized_end=146271 - _PATTERNFLOWTCPCTLFIN._serialized_start=146274 - _PATTERNFLOWTCPCTLFIN._serialized_end=146664 - _PATTERNFLOWTCPCTLFIN_CHOICE._serialized_start=98375 - _PATTERNFLOWTCPCTLFIN_CHOICE._serialized_end=98461 - _PATTERNFLOWTCPCTLFIN_CHOICE_ENUM._serialized_start=98385 - _PATTERNFLOWTCPCTLFIN_CHOICE_ENUM._serialized_end=98461 - _PATTERNFLOWTCPWINDOWCOUNTER._serialized_start=146666 - _PATTERNFLOWTCPWINDOWCOUNTER._serialized_end=146783 - _PATTERNFLOWTCPWINDOWMETRICTAG._serialized_start=146785 - _PATTERNFLOWTCPWINDOWMETRICTAG._serialized_end=146908 - _PATTERNFLOWTCPWINDOW._serialized_start=146911 - _PATTERNFLOWTCPWINDOW._serialized_end=147301 - _PATTERNFLOWTCPWINDOW_CHOICE._serialized_start=98375 - _PATTERNFLOWTCPWINDOW_CHOICE._serialized_end=98461 - _PATTERNFLOWTCPWINDOW_CHOICE_ENUM._serialized_start=98385 - _PATTERNFLOWTCPWINDOW_CHOICE_ENUM._serialized_end=98461 - _PATTERNFLOWUDPSRCPORTCOUNTER._serialized_start=147303 - _PATTERNFLOWUDPSRCPORTCOUNTER._serialized_end=147421 - _PATTERNFLOWUDPSRCPORTMETRICTAG._serialized_start=147423 - _PATTERNFLOWUDPSRCPORTMETRICTAG._serialized_end=147547 - _PATTERNFLOWUDPSRCPORT._serialized_start=147550 - _PATTERNFLOWUDPSRCPORT._serialized_end=147945 - _PATTERNFLOWUDPSRCPORT_CHOICE._serialized_start=98375 - _PATTERNFLOWUDPSRCPORT_CHOICE._serialized_end=98461 - _PATTERNFLOWUDPSRCPORT_CHOICE_ENUM._serialized_start=98385 - _PATTERNFLOWUDPSRCPORT_CHOICE_ENUM._serialized_end=98461 - _PATTERNFLOWUDPDSTPORTCOUNTER._serialized_start=147947 - _PATTERNFLOWUDPDSTPORTCOUNTER._serialized_end=148065 - _PATTERNFLOWUDPDSTPORTMETRICTAG._serialized_start=148067 - _PATTERNFLOWUDPDSTPORTMETRICTAG._serialized_end=148191 - _PATTERNFLOWUDPDSTPORT._serialized_start=148194 - _PATTERNFLOWUDPDSTPORT._serialized_end=148589 - _PATTERNFLOWUDPDSTPORT_CHOICE._serialized_start=98375 - _PATTERNFLOWUDPDSTPORT_CHOICE._serialized_end=98461 - _PATTERNFLOWUDPDSTPORT_CHOICE_ENUM._serialized_start=98385 - _PATTERNFLOWUDPDSTPORT_CHOICE_ENUM._serialized_end=98461 - _PATTERNFLOWUDPLENGTHCOUNTER._serialized_start=148591 - _PATTERNFLOWUDPLENGTHCOUNTER._serialized_end=148708 - _PATTERNFLOWUDPLENGTHMETRICTAG._serialized_start=148710 - _PATTERNFLOWUDPLENGTHMETRICTAG._serialized_end=148833 - _PATTERNFLOWUDPLENGTH._serialized_start=148836 - _PATTERNFLOWUDPLENGTH._serialized_end=149226 - _PATTERNFLOWUDPLENGTH_CHOICE._serialized_start=98375 - _PATTERNFLOWUDPLENGTH_CHOICE._serialized_end=98461 - _PATTERNFLOWUDPLENGTH_CHOICE_ENUM._serialized_start=98385 - _PATTERNFLOWUDPLENGTH_CHOICE_ENUM._serialized_end=98461 - _PATTERNFLOWUDPCHECKSUM._serialized_start=149229 - _PATTERNFLOWUDPCHECKSUM._serialized_end=149559 - _PATTERNFLOWUDPCHECKSUM_CHOICE._serialized_start=112191 - _PATTERNFLOWUDPCHECKSUM_CHOICE._serialized_end=112251 - _PATTERNFLOWUDPCHECKSUM_CHOICE_ENUM._serialized_start=112201 - _PATTERNFLOWUDPCHECKSUM_CHOICE_ENUM._serialized_end=112251 - _PATTERNFLOWUDPCHECKSUM_GENERATED._serialized_start=112253 - _PATTERNFLOWUDPCHECKSUM_GENERATED._serialized_end=112308 - _PATTERNFLOWUDPCHECKSUM_GENERATED_ENUM._serialized_start=112266 - _PATTERNFLOWUDPCHECKSUM_GENERATED_ENUM._serialized_end=112308 - _PATTERNFLOWGRECHECKSUMPRESENTCOUNTER._serialized_start=149561 - _PATTERNFLOWGRECHECKSUMPRESENTCOUNTER._serialized_end=149687 - _PATTERNFLOWGRECHECKSUMPRESENTMETRICTAG._serialized_start=149690 - _PATTERNFLOWGRECHECKSUMPRESENTMETRICTAG._serialized_end=149822 - _PATTERNFLOWGRECHECKSUMPRESENT._serialized_start=149825 - _PATTERNFLOWGRECHECKSUMPRESENT._serialized_end=150260 - _PATTERNFLOWGRECHECKSUMPRESENT_CHOICE._serialized_start=98375 - _PATTERNFLOWGRECHECKSUMPRESENT_CHOICE._serialized_end=98461 - _PATTERNFLOWGRECHECKSUMPRESENT_CHOICE_ENUM._serialized_start=98385 - _PATTERNFLOWGRECHECKSUMPRESENT_CHOICE_ENUM._serialized_end=98461 - _PATTERNFLOWGRERESERVED0COUNTER._serialized_start=150262 - _PATTERNFLOWGRERESERVED0COUNTER._serialized_end=150382 - _PATTERNFLOWGRERESERVED0METRICTAG._serialized_start=150384 - _PATTERNFLOWGRERESERVED0METRICTAG._serialized_end=150510 - _PATTERNFLOWGRERESERVED0._serialized_start=150513 - _PATTERNFLOWGRERESERVED0._serialized_end=150918 - _PATTERNFLOWGRERESERVED0_CHOICE._serialized_start=98375 - _PATTERNFLOWGRERESERVED0_CHOICE._serialized_end=98461 - _PATTERNFLOWGRERESERVED0_CHOICE_ENUM._serialized_start=98385 - _PATTERNFLOWGRERESERVED0_CHOICE_ENUM._serialized_end=98461 - _PATTERNFLOWGREVERSIONCOUNTER._serialized_start=150920 - _PATTERNFLOWGREVERSIONCOUNTER._serialized_end=151038 - _PATTERNFLOWGREVERSIONMETRICTAG._serialized_start=151040 - _PATTERNFLOWGREVERSIONMETRICTAG._serialized_end=151164 - _PATTERNFLOWGREVERSION._serialized_start=151167 - _PATTERNFLOWGREVERSION._serialized_end=151562 - _PATTERNFLOWGREVERSION_CHOICE._serialized_start=98375 - _PATTERNFLOWGREVERSION_CHOICE._serialized_end=98461 - _PATTERNFLOWGREVERSION_CHOICE_ENUM._serialized_start=98385 - _PATTERNFLOWGREVERSION_CHOICE_ENUM._serialized_end=98461 - _PATTERNFLOWGREPROTOCOLCOUNTER._serialized_start=151564 - _PATTERNFLOWGREPROTOCOLCOUNTER._serialized_end=151683 - _PATTERNFLOWGREPROTOCOLMETRICTAG._serialized_start=151685 - _PATTERNFLOWGREPROTOCOLMETRICTAG._serialized_end=151810 - _PATTERNFLOWGREPROTOCOL._serialized_start=151813 - _PATTERNFLOWGREPROTOCOL._serialized_end=152213 - _PATTERNFLOWGREPROTOCOL_CHOICE._serialized_start=98375 - _PATTERNFLOWGREPROTOCOL_CHOICE._serialized_end=98461 - _PATTERNFLOWGREPROTOCOL_CHOICE_ENUM._serialized_start=98385 - _PATTERNFLOWGREPROTOCOL_CHOICE_ENUM._serialized_end=98461 - _PATTERNFLOWGRECHECKSUM._serialized_start=152216 - _PATTERNFLOWGRECHECKSUM._serialized_end=152546 - _PATTERNFLOWGRECHECKSUM_CHOICE._serialized_start=112191 - _PATTERNFLOWGRECHECKSUM_CHOICE._serialized_end=112251 - _PATTERNFLOWGRECHECKSUM_CHOICE_ENUM._serialized_start=112201 - _PATTERNFLOWGRECHECKSUM_CHOICE_ENUM._serialized_end=112251 - _PATTERNFLOWGRECHECKSUM_GENERATED._serialized_start=112253 - _PATTERNFLOWGRECHECKSUM_GENERATED._serialized_end=112308 - _PATTERNFLOWGRECHECKSUM_GENERATED_ENUM._serialized_start=112266 - _PATTERNFLOWGRECHECKSUM_GENERATED_ENUM._serialized_end=112308 - _PATTERNFLOWGRERESERVED1COUNTER._serialized_start=152548 - _PATTERNFLOWGRERESERVED1COUNTER._serialized_end=152668 - _PATTERNFLOWGRERESERVED1METRICTAG._serialized_start=152670 - _PATTERNFLOWGRERESERVED1METRICTAG._serialized_end=152796 - _PATTERNFLOWGRERESERVED1._serialized_start=152799 - _PATTERNFLOWGRERESERVED1._serialized_end=153204 - _PATTERNFLOWGRERESERVED1_CHOICE._serialized_start=98375 - _PATTERNFLOWGRERESERVED1_CHOICE._serialized_end=98461 - _PATTERNFLOWGRERESERVED1_CHOICE_ENUM._serialized_start=98385 - _PATTERNFLOWGRERESERVED1_CHOICE_ENUM._serialized_end=98461 - _PATTERNFLOWGTPV1VERSIONCOUNTER._serialized_start=153206 - _PATTERNFLOWGTPV1VERSIONCOUNTER._serialized_end=153326 - _PATTERNFLOWGTPV1VERSIONMETRICTAG._serialized_start=153328 - _PATTERNFLOWGTPV1VERSIONMETRICTAG._serialized_end=153454 - _PATTERNFLOWGTPV1VERSION._serialized_start=153457 - _PATTERNFLOWGTPV1VERSION._serialized_end=153862 - _PATTERNFLOWGTPV1VERSION_CHOICE._serialized_start=98375 - _PATTERNFLOWGTPV1VERSION_CHOICE._serialized_end=98461 - _PATTERNFLOWGTPV1VERSION_CHOICE_ENUM._serialized_start=98385 - _PATTERNFLOWGTPV1VERSION_CHOICE_ENUM._serialized_end=98461 - _PATTERNFLOWGTPV1PROTOCOLTYPECOUNTER._serialized_start=153864 - _PATTERNFLOWGTPV1PROTOCOLTYPECOUNTER._serialized_end=153989 - _PATTERNFLOWGTPV1PROTOCOLTYPEMETRICTAG._serialized_start=153992 - _PATTERNFLOWGTPV1PROTOCOLTYPEMETRICTAG._serialized_end=154123 - _PATTERNFLOWGTPV1PROTOCOLTYPE._serialized_start=154126 - _PATTERNFLOWGTPV1PROTOCOLTYPE._serialized_end=154556 - _PATTERNFLOWGTPV1PROTOCOLTYPE_CHOICE._serialized_start=98375 - _PATTERNFLOWGTPV1PROTOCOLTYPE_CHOICE._serialized_end=98461 - _PATTERNFLOWGTPV1PROTOCOLTYPE_CHOICE_ENUM._serialized_start=98385 - _PATTERNFLOWGTPV1PROTOCOLTYPE_CHOICE_ENUM._serialized_end=98461 - _PATTERNFLOWGTPV1RESERVEDCOUNTER._serialized_start=154558 - _PATTERNFLOWGTPV1RESERVEDCOUNTER._serialized_end=154679 - _PATTERNFLOWGTPV1RESERVEDMETRICTAG._serialized_start=154681 - _PATTERNFLOWGTPV1RESERVEDMETRICTAG._serialized_end=154808 - _PATTERNFLOWGTPV1RESERVED._serialized_start=154811 - _PATTERNFLOWGTPV1RESERVED._serialized_end=155221 - _PATTERNFLOWGTPV1RESERVED_CHOICE._serialized_start=98375 - _PATTERNFLOWGTPV1RESERVED_CHOICE._serialized_end=98461 - _PATTERNFLOWGTPV1RESERVED_CHOICE_ENUM._serialized_start=98385 - _PATTERNFLOWGTPV1RESERVED_CHOICE_ENUM._serialized_end=98461 - _PATTERNFLOWGTPV1EFLAGCOUNTER._serialized_start=155223 - _PATTERNFLOWGTPV1EFLAGCOUNTER._serialized_end=155341 - _PATTERNFLOWGTPV1EFLAGMETRICTAG._serialized_start=155343 - _PATTERNFLOWGTPV1EFLAGMETRICTAG._serialized_end=155467 - _PATTERNFLOWGTPV1EFLAG._serialized_start=155470 - _PATTERNFLOWGTPV1EFLAG._serialized_end=155865 - _PATTERNFLOWGTPV1EFLAG_CHOICE._serialized_start=98375 - _PATTERNFLOWGTPV1EFLAG_CHOICE._serialized_end=98461 - _PATTERNFLOWGTPV1EFLAG_CHOICE_ENUM._serialized_start=98385 - _PATTERNFLOWGTPV1EFLAG_CHOICE_ENUM._serialized_end=98461 - _PATTERNFLOWGTPV1SFLAGCOUNTER._serialized_start=155867 - _PATTERNFLOWGTPV1SFLAGCOUNTER._serialized_end=155985 - _PATTERNFLOWGTPV1SFLAGMETRICTAG._serialized_start=155987 - _PATTERNFLOWGTPV1SFLAGMETRICTAG._serialized_end=156111 - _PATTERNFLOWGTPV1SFLAG._serialized_start=156114 - _PATTERNFLOWGTPV1SFLAG._serialized_end=156509 - _PATTERNFLOWGTPV1SFLAG_CHOICE._serialized_start=98375 - _PATTERNFLOWGTPV1SFLAG_CHOICE._serialized_end=98461 - _PATTERNFLOWGTPV1SFLAG_CHOICE_ENUM._serialized_start=98385 - _PATTERNFLOWGTPV1SFLAG_CHOICE_ENUM._serialized_end=98461 - _PATTERNFLOWGTPV1PNFLAGCOUNTER._serialized_start=156511 - _PATTERNFLOWGTPV1PNFLAGCOUNTER._serialized_end=156630 - _PATTERNFLOWGTPV1PNFLAGMETRICTAG._serialized_start=156632 - _PATTERNFLOWGTPV1PNFLAGMETRICTAG._serialized_end=156757 - _PATTERNFLOWGTPV1PNFLAG._serialized_start=156760 - _PATTERNFLOWGTPV1PNFLAG._serialized_end=157160 - _PATTERNFLOWGTPV1PNFLAG_CHOICE._serialized_start=98375 - _PATTERNFLOWGTPV1PNFLAG_CHOICE._serialized_end=98461 - _PATTERNFLOWGTPV1PNFLAG_CHOICE_ENUM._serialized_start=98385 - _PATTERNFLOWGTPV1PNFLAG_CHOICE_ENUM._serialized_end=98461 - _PATTERNFLOWGTPV1MESSAGETYPECOUNTER._serialized_start=157162 - _PATTERNFLOWGTPV1MESSAGETYPECOUNTER._serialized_end=157286 - _PATTERNFLOWGTPV1MESSAGETYPEMETRICTAG._serialized_start=157289 - _PATTERNFLOWGTPV1MESSAGETYPEMETRICTAG._serialized_end=157419 - _PATTERNFLOWGTPV1MESSAGETYPE._serialized_start=157422 - _PATTERNFLOWGTPV1MESSAGETYPE._serialized_end=157847 - _PATTERNFLOWGTPV1MESSAGETYPE_CHOICE._serialized_start=98375 - _PATTERNFLOWGTPV1MESSAGETYPE_CHOICE._serialized_end=98461 - _PATTERNFLOWGTPV1MESSAGETYPE_CHOICE_ENUM._serialized_start=98385 - _PATTERNFLOWGTPV1MESSAGETYPE_CHOICE_ENUM._serialized_end=98461 - _PATTERNFLOWGTPV1MESSAGELENGTHCOUNTER._serialized_start=157849 - _PATTERNFLOWGTPV1MESSAGELENGTHCOUNTER._serialized_end=157975 - _PATTERNFLOWGTPV1MESSAGELENGTHMETRICTAG._serialized_start=157978 - _PATTERNFLOWGTPV1MESSAGELENGTHMETRICTAG._serialized_end=158110 - _PATTERNFLOWGTPV1MESSAGELENGTH._serialized_start=158113 - _PATTERNFLOWGTPV1MESSAGELENGTH._serialized_end=158548 - _PATTERNFLOWGTPV1MESSAGELENGTH_CHOICE._serialized_start=98375 - _PATTERNFLOWGTPV1MESSAGELENGTH_CHOICE._serialized_end=98461 - _PATTERNFLOWGTPV1MESSAGELENGTH_CHOICE_ENUM._serialized_start=98385 - _PATTERNFLOWGTPV1MESSAGELENGTH_CHOICE_ENUM._serialized_end=98461 - _PATTERNFLOWGTPV1TEIDCOUNTER._serialized_start=158550 - _PATTERNFLOWGTPV1TEIDCOUNTER._serialized_end=158667 - _PATTERNFLOWGTPV1TEIDMETRICTAG._serialized_start=158669 - _PATTERNFLOWGTPV1TEIDMETRICTAG._serialized_end=158792 - _PATTERNFLOWGTPV1TEID._serialized_start=158795 - _PATTERNFLOWGTPV1TEID._serialized_end=159185 - _PATTERNFLOWGTPV1TEID_CHOICE._serialized_start=98375 - _PATTERNFLOWGTPV1TEID_CHOICE._serialized_end=98461 - _PATTERNFLOWGTPV1TEID_CHOICE_ENUM._serialized_start=98385 - _PATTERNFLOWGTPV1TEID_CHOICE_ENUM._serialized_end=98461 - _PATTERNFLOWGTPV1SQUENCENUMBERCOUNTER._serialized_start=159187 - _PATTERNFLOWGTPV1SQUENCENUMBERCOUNTER._serialized_end=159313 - _PATTERNFLOWGTPV1SQUENCENUMBERMETRICTAG._serialized_start=159316 - _PATTERNFLOWGTPV1SQUENCENUMBERMETRICTAG._serialized_end=159448 - _PATTERNFLOWGTPV1SQUENCENUMBER._serialized_start=159451 - _PATTERNFLOWGTPV1SQUENCENUMBER._serialized_end=159886 - _PATTERNFLOWGTPV1SQUENCENUMBER_CHOICE._serialized_start=98375 - _PATTERNFLOWGTPV1SQUENCENUMBER_CHOICE._serialized_end=98461 - _PATTERNFLOWGTPV1SQUENCENUMBER_CHOICE_ENUM._serialized_start=98385 - _PATTERNFLOWGTPV1SQUENCENUMBER_CHOICE_ENUM._serialized_end=98461 - _PATTERNFLOWGTPV1NPDUNUMBERCOUNTER._serialized_start=159888 - _PATTERNFLOWGTPV1NPDUNUMBERCOUNTER._serialized_end=160011 - _PATTERNFLOWGTPV1NPDUNUMBERMETRICTAG._serialized_start=160014 - _PATTERNFLOWGTPV1NPDUNUMBERMETRICTAG._serialized_end=160143 - _PATTERNFLOWGTPV1NPDUNUMBER._serialized_start=160146 - _PATTERNFLOWGTPV1NPDUNUMBER._serialized_end=160566 - _PATTERNFLOWGTPV1NPDUNUMBER_CHOICE._serialized_start=98375 - _PATTERNFLOWGTPV1NPDUNUMBER_CHOICE._serialized_end=98461 - _PATTERNFLOWGTPV1NPDUNUMBER_CHOICE_ENUM._serialized_start=98385 - _PATTERNFLOWGTPV1NPDUNUMBER_CHOICE_ENUM._serialized_end=98461 - _PATTERNFLOWGTPV1NEXTEXTENSIONHEADERTYPECOUNTER._serialized_start=160569 - _PATTERNFLOWGTPV1NEXTEXTENSIONHEADERTYPECOUNTER._serialized_end=160705 - _PATTERNFLOWGTPV1NEXTEXTENSIONHEADERTYPEMETRICTAG._serialized_start=160708 - _PATTERNFLOWGTPV1NEXTEXTENSIONHEADERTYPEMETRICTAG._serialized_end=160850 - _PATTERNFLOWGTPV1NEXTEXTENSIONHEADERTYPE._serialized_start=160853 - _PATTERNFLOWGTPV1NEXTEXTENSIONHEADERTYPE._serialized_end=161338 - _PATTERNFLOWGTPV1NEXTEXTENSIONHEADERTYPE_CHOICE._serialized_start=98375 - _PATTERNFLOWGTPV1NEXTEXTENSIONHEADERTYPE_CHOICE._serialized_end=98461 - _PATTERNFLOWGTPV1NEXTEXTENSIONHEADERTYPE_CHOICE_ENUM._serialized_start=98385 - _PATTERNFLOWGTPV1NEXTEXTENSIONHEADERTYPE_CHOICE_ENUM._serialized_end=98461 - _PATTERNFLOWGTPEXTENSIONEXTENSIONLENGTHCOUNTER._serialized_start=161341 - _PATTERNFLOWGTPEXTENSIONEXTENSIONLENGTHCOUNTER._serialized_end=161476 - _PATTERNFLOWGTPEXTENSIONEXTENSIONLENGTHMETRICTAG._serialized_start=161479 - _PATTERNFLOWGTPEXTENSIONEXTENSIONLENGTHMETRICTAG._serialized_end=161620 - _PATTERNFLOWGTPEXTENSIONEXTENSIONLENGTH._serialized_start=161623 - _PATTERNFLOWGTPEXTENSIONEXTENSIONLENGTH._serialized_end=162103 - _PATTERNFLOWGTPEXTENSIONEXTENSIONLENGTH_CHOICE._serialized_start=98375 - _PATTERNFLOWGTPEXTENSIONEXTENSIONLENGTH_CHOICE._serialized_end=98461 - _PATTERNFLOWGTPEXTENSIONEXTENSIONLENGTH_CHOICE_ENUM._serialized_start=98385 - _PATTERNFLOWGTPEXTENSIONEXTENSIONLENGTH_CHOICE_ENUM._serialized_end=98461 - _PATTERNFLOWGTPEXTENSIONCONTENTSCOUNTER._serialized_start=162106 - _PATTERNFLOWGTPEXTENSIONCONTENTSCOUNTER._serialized_end=162234 - _PATTERNFLOWGTPEXTENSIONCONTENTSMETRICTAG._serialized_start=162237 - _PATTERNFLOWGTPEXTENSIONCONTENTSMETRICTAG._serialized_end=162371 - _PATTERNFLOWGTPEXTENSIONCONTENTS._serialized_start=162374 - _PATTERNFLOWGTPEXTENSIONCONTENTS._serialized_end=162819 - _PATTERNFLOWGTPEXTENSIONCONTENTS_CHOICE._serialized_start=98375 - _PATTERNFLOWGTPEXTENSIONCONTENTS_CHOICE._serialized_end=98461 - _PATTERNFLOWGTPEXTENSIONCONTENTS_CHOICE_ENUM._serialized_start=98385 - _PATTERNFLOWGTPEXTENSIONCONTENTS_CHOICE_ENUM._serialized_end=98461 - _PATTERNFLOWGTPEXTENSIONNEXTEXTENSIONHEADERCOUNTER._serialized_start=162822 - _PATTERNFLOWGTPEXTENSIONNEXTEXTENSIONHEADERCOUNTER._serialized_end=162961 - _PATTERNFLOWGTPEXTENSIONNEXTEXTENSIONHEADERMETRICTAG._serialized_start=162964 - _PATTERNFLOWGTPEXTENSIONNEXTEXTENSIONHEADERMETRICTAG._serialized_end=163109 - _PATTERNFLOWGTPEXTENSIONNEXTEXTENSIONHEADER._serialized_start=163112 - _PATTERNFLOWGTPEXTENSIONNEXTEXTENSIONHEADER._serialized_end=163612 - _PATTERNFLOWGTPEXTENSIONNEXTEXTENSIONHEADER_CHOICE._serialized_start=98375 - _PATTERNFLOWGTPEXTENSIONNEXTEXTENSIONHEADER_CHOICE._serialized_end=98461 - _PATTERNFLOWGTPEXTENSIONNEXTEXTENSIONHEADER_CHOICE_ENUM._serialized_start=98385 - _PATTERNFLOWGTPEXTENSIONNEXTEXTENSIONHEADER_CHOICE_ENUM._serialized_end=98461 - _PATTERNFLOWGTPV2VERSIONCOUNTER._serialized_start=163614 - _PATTERNFLOWGTPV2VERSIONCOUNTER._serialized_end=163734 - _PATTERNFLOWGTPV2VERSIONMETRICTAG._serialized_start=163736 - _PATTERNFLOWGTPV2VERSIONMETRICTAG._serialized_end=163862 - _PATTERNFLOWGTPV2VERSION._serialized_start=163865 - _PATTERNFLOWGTPV2VERSION._serialized_end=164270 - _PATTERNFLOWGTPV2VERSION_CHOICE._serialized_start=98375 - _PATTERNFLOWGTPV2VERSION_CHOICE._serialized_end=98461 - _PATTERNFLOWGTPV2VERSION_CHOICE_ENUM._serialized_start=98385 - _PATTERNFLOWGTPV2VERSION_CHOICE_ENUM._serialized_end=98461 - _PATTERNFLOWGTPV2PIGGYBACKINGFLAGCOUNTER._serialized_start=164273 - _PATTERNFLOWGTPV2PIGGYBACKINGFLAGCOUNTER._serialized_end=164402 - _PATTERNFLOWGTPV2PIGGYBACKINGFLAGMETRICTAG._serialized_start=164405 - _PATTERNFLOWGTPV2PIGGYBACKINGFLAGMETRICTAG._serialized_end=164540 - _PATTERNFLOWGTPV2PIGGYBACKINGFLAG._serialized_start=164543 - _PATTERNFLOWGTPV2PIGGYBACKINGFLAG._serialized_end=164993 - _PATTERNFLOWGTPV2PIGGYBACKINGFLAG_CHOICE._serialized_start=98375 - _PATTERNFLOWGTPV2PIGGYBACKINGFLAG_CHOICE._serialized_end=98461 - _PATTERNFLOWGTPV2PIGGYBACKINGFLAG_CHOICE_ENUM._serialized_start=98385 - _PATTERNFLOWGTPV2PIGGYBACKINGFLAG_CHOICE_ENUM._serialized_end=98461 - _PATTERNFLOWGTPV2TEIDFLAGCOUNTER._serialized_start=164995 - _PATTERNFLOWGTPV2TEIDFLAGCOUNTER._serialized_end=165116 - _PATTERNFLOWGTPV2TEIDFLAGMETRICTAG._serialized_start=165118 - _PATTERNFLOWGTPV2TEIDFLAGMETRICTAG._serialized_end=165245 - _PATTERNFLOWGTPV2TEIDFLAG._serialized_start=165248 - _PATTERNFLOWGTPV2TEIDFLAG._serialized_end=165658 - _PATTERNFLOWGTPV2TEIDFLAG_CHOICE._serialized_start=98375 - _PATTERNFLOWGTPV2TEIDFLAG_CHOICE._serialized_end=98461 - _PATTERNFLOWGTPV2TEIDFLAG_CHOICE_ENUM._serialized_start=98385 - _PATTERNFLOWGTPV2TEIDFLAG_CHOICE_ENUM._serialized_end=98461 - _PATTERNFLOWGTPV2SPARE1COUNTER._serialized_start=165660 - _PATTERNFLOWGTPV2SPARE1COUNTER._serialized_end=165779 - _PATTERNFLOWGTPV2SPARE1METRICTAG._serialized_start=165781 - _PATTERNFLOWGTPV2SPARE1METRICTAG._serialized_end=165906 - _PATTERNFLOWGTPV2SPARE1._serialized_start=165909 - _PATTERNFLOWGTPV2SPARE1._serialized_end=166309 - _PATTERNFLOWGTPV2SPARE1_CHOICE._serialized_start=98375 - _PATTERNFLOWGTPV2SPARE1_CHOICE._serialized_end=98461 - _PATTERNFLOWGTPV2SPARE1_CHOICE_ENUM._serialized_start=98385 - _PATTERNFLOWGTPV2SPARE1_CHOICE_ENUM._serialized_end=98461 - _PATTERNFLOWGTPV2MESSAGETYPECOUNTER._serialized_start=166311 - _PATTERNFLOWGTPV2MESSAGETYPECOUNTER._serialized_end=166435 - _PATTERNFLOWGTPV2MESSAGETYPEMETRICTAG._serialized_start=166438 - _PATTERNFLOWGTPV2MESSAGETYPEMETRICTAG._serialized_end=166568 - _PATTERNFLOWGTPV2MESSAGETYPE._serialized_start=166571 - _PATTERNFLOWGTPV2MESSAGETYPE._serialized_end=166996 - _PATTERNFLOWGTPV2MESSAGETYPE_CHOICE._serialized_start=98375 - _PATTERNFLOWGTPV2MESSAGETYPE_CHOICE._serialized_end=98461 - _PATTERNFLOWGTPV2MESSAGETYPE_CHOICE_ENUM._serialized_start=98385 - _PATTERNFLOWGTPV2MESSAGETYPE_CHOICE_ENUM._serialized_end=98461 - _PATTERNFLOWGTPV2MESSAGELENGTHCOUNTER._serialized_start=166998 - _PATTERNFLOWGTPV2MESSAGELENGTHCOUNTER._serialized_end=167124 - _PATTERNFLOWGTPV2MESSAGELENGTHMETRICTAG._serialized_start=167127 - _PATTERNFLOWGTPV2MESSAGELENGTHMETRICTAG._serialized_end=167259 - _PATTERNFLOWGTPV2MESSAGELENGTH._serialized_start=167262 - _PATTERNFLOWGTPV2MESSAGELENGTH._serialized_end=167697 - _PATTERNFLOWGTPV2MESSAGELENGTH_CHOICE._serialized_start=98375 - _PATTERNFLOWGTPV2MESSAGELENGTH_CHOICE._serialized_end=98461 - _PATTERNFLOWGTPV2MESSAGELENGTH_CHOICE_ENUM._serialized_start=98385 - _PATTERNFLOWGTPV2MESSAGELENGTH_CHOICE_ENUM._serialized_end=98461 - _PATTERNFLOWGTPV2TEIDCOUNTER._serialized_start=167699 - _PATTERNFLOWGTPV2TEIDCOUNTER._serialized_end=167816 - _PATTERNFLOWGTPV2TEIDMETRICTAG._serialized_start=167818 - _PATTERNFLOWGTPV2TEIDMETRICTAG._serialized_end=167941 - _PATTERNFLOWGTPV2TEID._serialized_start=167944 - _PATTERNFLOWGTPV2TEID._serialized_end=168334 - _PATTERNFLOWGTPV2TEID_CHOICE._serialized_start=98375 - _PATTERNFLOWGTPV2TEID_CHOICE._serialized_end=98461 - _PATTERNFLOWGTPV2TEID_CHOICE_ENUM._serialized_start=98385 - _PATTERNFLOWGTPV2TEID_CHOICE_ENUM._serialized_end=98461 - _PATTERNFLOWGTPV2SEQUENCENUMBERCOUNTER._serialized_start=168336 - _PATTERNFLOWGTPV2SEQUENCENUMBERCOUNTER._serialized_end=168463 - _PATTERNFLOWGTPV2SEQUENCENUMBERMETRICTAG._serialized_start=168466 - _PATTERNFLOWGTPV2SEQUENCENUMBERMETRICTAG._serialized_end=168599 - _PATTERNFLOWGTPV2SEQUENCENUMBER._serialized_start=168602 - _PATTERNFLOWGTPV2SEQUENCENUMBER._serialized_end=169042 - _PATTERNFLOWGTPV2SEQUENCENUMBER_CHOICE._serialized_start=98375 - _PATTERNFLOWGTPV2SEQUENCENUMBER_CHOICE._serialized_end=98461 - _PATTERNFLOWGTPV2SEQUENCENUMBER_CHOICE_ENUM._serialized_start=98385 - _PATTERNFLOWGTPV2SEQUENCENUMBER_CHOICE_ENUM._serialized_end=98461 - _PATTERNFLOWGTPV2SPARE2COUNTER._serialized_start=169044 - _PATTERNFLOWGTPV2SPARE2COUNTER._serialized_end=169163 - _PATTERNFLOWGTPV2SPARE2METRICTAG._serialized_start=169165 - _PATTERNFLOWGTPV2SPARE2METRICTAG._serialized_end=169290 - _PATTERNFLOWGTPV2SPARE2._serialized_start=169293 - _PATTERNFLOWGTPV2SPARE2._serialized_end=169693 - _PATTERNFLOWGTPV2SPARE2_CHOICE._serialized_start=98375 - _PATTERNFLOWGTPV2SPARE2_CHOICE._serialized_end=98461 - _PATTERNFLOWGTPV2SPARE2_CHOICE_ENUM._serialized_start=98385 - _PATTERNFLOWGTPV2SPARE2_CHOICE_ENUM._serialized_end=98461 - _PATTERNFLOWARPHARDWARETYPECOUNTER._serialized_start=169695 - _PATTERNFLOWARPHARDWARETYPECOUNTER._serialized_end=169818 - _PATTERNFLOWARPHARDWARETYPEMETRICTAG._serialized_start=169821 - _PATTERNFLOWARPHARDWARETYPEMETRICTAG._serialized_end=169950 - _PATTERNFLOWARPHARDWARETYPE._serialized_start=169953 - _PATTERNFLOWARPHARDWARETYPE._serialized_end=170373 - _PATTERNFLOWARPHARDWARETYPE_CHOICE._serialized_start=98375 - _PATTERNFLOWARPHARDWARETYPE_CHOICE._serialized_end=98461 - _PATTERNFLOWARPHARDWARETYPE_CHOICE_ENUM._serialized_start=98385 - _PATTERNFLOWARPHARDWARETYPE_CHOICE_ENUM._serialized_end=98461 - _PATTERNFLOWARPPROTOCOLTYPECOUNTER._serialized_start=170375 - _PATTERNFLOWARPPROTOCOLTYPECOUNTER._serialized_end=170498 - _PATTERNFLOWARPPROTOCOLTYPEMETRICTAG._serialized_start=170501 - _PATTERNFLOWARPPROTOCOLTYPEMETRICTAG._serialized_end=170630 - _PATTERNFLOWARPPROTOCOLTYPE._serialized_start=170633 - _PATTERNFLOWARPPROTOCOLTYPE._serialized_end=171053 - _PATTERNFLOWARPPROTOCOLTYPE_CHOICE._serialized_start=98375 - _PATTERNFLOWARPPROTOCOLTYPE_CHOICE._serialized_end=98461 - _PATTERNFLOWARPPROTOCOLTYPE_CHOICE_ENUM._serialized_start=98385 - _PATTERNFLOWARPPROTOCOLTYPE_CHOICE_ENUM._serialized_end=98461 - _PATTERNFLOWARPHARDWARELENGTHCOUNTER._serialized_start=171055 - _PATTERNFLOWARPHARDWARELENGTHCOUNTER._serialized_end=171180 - _PATTERNFLOWARPHARDWARELENGTHMETRICTAG._serialized_start=171183 - _PATTERNFLOWARPHARDWARELENGTHMETRICTAG._serialized_end=171314 - _PATTERNFLOWARPHARDWARELENGTH._serialized_start=171317 - _PATTERNFLOWARPHARDWARELENGTH._serialized_end=171747 - _PATTERNFLOWARPHARDWARELENGTH_CHOICE._serialized_start=98375 - _PATTERNFLOWARPHARDWARELENGTH_CHOICE._serialized_end=98461 - _PATTERNFLOWARPHARDWARELENGTH_CHOICE_ENUM._serialized_start=98385 - _PATTERNFLOWARPHARDWARELENGTH_CHOICE_ENUM._serialized_end=98461 - _PATTERNFLOWARPPROTOCOLLENGTHCOUNTER._serialized_start=171749 - _PATTERNFLOWARPPROTOCOLLENGTHCOUNTER._serialized_end=171874 - _PATTERNFLOWARPPROTOCOLLENGTHMETRICTAG._serialized_start=171877 - _PATTERNFLOWARPPROTOCOLLENGTHMETRICTAG._serialized_end=172008 - _PATTERNFLOWARPPROTOCOLLENGTH._serialized_start=172011 - _PATTERNFLOWARPPROTOCOLLENGTH._serialized_end=172441 - _PATTERNFLOWARPPROTOCOLLENGTH_CHOICE._serialized_start=98375 - _PATTERNFLOWARPPROTOCOLLENGTH_CHOICE._serialized_end=98461 - _PATTERNFLOWARPPROTOCOLLENGTH_CHOICE_ENUM._serialized_start=98385 - _PATTERNFLOWARPPROTOCOLLENGTH_CHOICE_ENUM._serialized_end=98461 - _PATTERNFLOWARPOPERATIONCOUNTER._serialized_start=172443 - _PATTERNFLOWARPOPERATIONCOUNTER._serialized_end=172563 - _PATTERNFLOWARPOPERATIONMETRICTAG._serialized_start=172565 - _PATTERNFLOWARPOPERATIONMETRICTAG._serialized_end=172691 - _PATTERNFLOWARPOPERATION._serialized_start=172694 - _PATTERNFLOWARPOPERATION._serialized_end=173099 - _PATTERNFLOWARPOPERATION_CHOICE._serialized_start=98375 - _PATTERNFLOWARPOPERATION_CHOICE._serialized_end=98461 - _PATTERNFLOWARPOPERATION_CHOICE_ENUM._serialized_start=98385 - _PATTERNFLOWARPOPERATION_CHOICE_ENUM._serialized_end=98461 - _PATTERNFLOWARPSENDERHARDWAREADDRCOUNTER._serialized_start=173102 - _PATTERNFLOWARPSENDERHARDWAREADDRCOUNTER._serialized_end=173231 - _PATTERNFLOWARPSENDERHARDWAREADDRMETRICTAG._serialized_start=173234 - _PATTERNFLOWARPSENDERHARDWAREADDRMETRICTAG._serialized_end=173369 - _PATTERNFLOWARPSENDERHARDWAREADDR._serialized_start=173372 - _PATTERNFLOWARPSENDERHARDWAREADDR._serialized_end=173822 - _PATTERNFLOWARPSENDERHARDWAREADDR_CHOICE._serialized_start=98375 - _PATTERNFLOWARPSENDERHARDWAREADDR_CHOICE._serialized_end=98461 - _PATTERNFLOWARPSENDERHARDWAREADDR_CHOICE_ENUM._serialized_start=98385 - _PATTERNFLOWARPSENDERHARDWAREADDR_CHOICE_ENUM._serialized_end=98461 - _PATTERNFLOWARPSENDERPROTOCOLADDRCOUNTER._serialized_start=173825 - _PATTERNFLOWARPSENDERPROTOCOLADDRCOUNTER._serialized_end=173954 - _PATTERNFLOWARPSENDERPROTOCOLADDRMETRICTAG._serialized_start=173957 - _PATTERNFLOWARPSENDERPROTOCOLADDRMETRICTAG._serialized_end=174092 - _PATTERNFLOWARPSENDERPROTOCOLADDR._serialized_start=174095 - _PATTERNFLOWARPSENDERPROTOCOLADDR._serialized_end=174545 - _PATTERNFLOWARPSENDERPROTOCOLADDR_CHOICE._serialized_start=98375 - _PATTERNFLOWARPSENDERPROTOCOLADDR_CHOICE._serialized_end=98461 - _PATTERNFLOWARPSENDERPROTOCOLADDR_CHOICE_ENUM._serialized_start=98385 - _PATTERNFLOWARPSENDERPROTOCOLADDR_CHOICE_ENUM._serialized_end=98461 - _PATTERNFLOWARPTARGETHARDWAREADDRCOUNTER._serialized_start=174548 - _PATTERNFLOWARPTARGETHARDWAREADDRCOUNTER._serialized_end=174677 - _PATTERNFLOWARPTARGETHARDWAREADDRMETRICTAG._serialized_start=174680 - _PATTERNFLOWARPTARGETHARDWAREADDRMETRICTAG._serialized_end=174815 - _PATTERNFLOWARPTARGETHARDWAREADDR._serialized_start=174818 - _PATTERNFLOWARPTARGETHARDWAREADDR._serialized_end=175268 - _PATTERNFLOWARPTARGETHARDWAREADDR_CHOICE._serialized_start=98375 - _PATTERNFLOWARPTARGETHARDWAREADDR_CHOICE._serialized_end=98461 - _PATTERNFLOWARPTARGETHARDWAREADDR_CHOICE_ENUM._serialized_start=98385 - _PATTERNFLOWARPTARGETHARDWAREADDR_CHOICE_ENUM._serialized_end=98461 - _PATTERNFLOWARPTARGETPROTOCOLADDRCOUNTER._serialized_start=175271 - _PATTERNFLOWARPTARGETPROTOCOLADDRCOUNTER._serialized_end=175400 - _PATTERNFLOWARPTARGETPROTOCOLADDRMETRICTAG._serialized_start=175403 - _PATTERNFLOWARPTARGETPROTOCOLADDRMETRICTAG._serialized_end=175538 - _PATTERNFLOWARPTARGETPROTOCOLADDR._serialized_start=175541 - _PATTERNFLOWARPTARGETPROTOCOLADDR._serialized_end=175991 - _PATTERNFLOWARPTARGETPROTOCOLADDR_CHOICE._serialized_start=98375 - _PATTERNFLOWARPTARGETPROTOCOLADDR_CHOICE._serialized_end=98461 - _PATTERNFLOWARPTARGETPROTOCOLADDR_CHOICE_ENUM._serialized_start=98385 - _PATTERNFLOWARPTARGETPROTOCOLADDR_CHOICE_ENUM._serialized_end=98461 - _PATTERNFLOWICMPECHOTYPECOUNTER._serialized_start=175993 - _PATTERNFLOWICMPECHOTYPECOUNTER._serialized_end=176113 - _PATTERNFLOWICMPECHOTYPEMETRICTAG._serialized_start=176115 - _PATTERNFLOWICMPECHOTYPEMETRICTAG._serialized_end=176241 - _PATTERNFLOWICMPECHOTYPE._serialized_start=176244 - _PATTERNFLOWICMPECHOTYPE._serialized_end=176649 - _PATTERNFLOWICMPECHOTYPE_CHOICE._serialized_start=98375 - _PATTERNFLOWICMPECHOTYPE_CHOICE._serialized_end=98461 - _PATTERNFLOWICMPECHOTYPE_CHOICE_ENUM._serialized_start=98385 - _PATTERNFLOWICMPECHOTYPE_CHOICE_ENUM._serialized_end=98461 - _PATTERNFLOWICMPECHOCODECOUNTER._serialized_start=176651 - _PATTERNFLOWICMPECHOCODECOUNTER._serialized_end=176771 - _PATTERNFLOWICMPECHOCODEMETRICTAG._serialized_start=176773 - _PATTERNFLOWICMPECHOCODEMETRICTAG._serialized_end=176899 - _PATTERNFLOWICMPECHOCODE._serialized_start=176902 - _PATTERNFLOWICMPECHOCODE._serialized_end=177307 - _PATTERNFLOWICMPECHOCODE_CHOICE._serialized_start=98375 - _PATTERNFLOWICMPECHOCODE_CHOICE._serialized_end=98461 - _PATTERNFLOWICMPECHOCODE_CHOICE_ENUM._serialized_start=98385 - _PATTERNFLOWICMPECHOCODE_CHOICE_ENUM._serialized_end=98461 - _PATTERNFLOWICMPECHOCHECKSUM._serialized_start=177310 - _PATTERNFLOWICMPECHOCHECKSUM._serialized_end=177655 - _PATTERNFLOWICMPECHOCHECKSUM_CHOICE._serialized_start=112191 - _PATTERNFLOWICMPECHOCHECKSUM_CHOICE._serialized_end=112251 - _PATTERNFLOWICMPECHOCHECKSUM_CHOICE_ENUM._serialized_start=112201 - _PATTERNFLOWICMPECHOCHECKSUM_CHOICE_ENUM._serialized_end=112251 - _PATTERNFLOWICMPECHOCHECKSUM_GENERATED._serialized_start=112253 - _PATTERNFLOWICMPECHOCHECKSUM_GENERATED._serialized_end=112308 - _PATTERNFLOWICMPECHOCHECKSUM_GENERATED_ENUM._serialized_start=112266 - _PATTERNFLOWICMPECHOCHECKSUM_GENERATED_ENUM._serialized_end=112308 - _PATTERNFLOWICMPECHOIDENTIFIERCOUNTER._serialized_start=177657 - _PATTERNFLOWICMPECHOIDENTIFIERCOUNTER._serialized_end=177783 - _PATTERNFLOWICMPECHOIDENTIFIERMETRICTAG._serialized_start=177786 - _PATTERNFLOWICMPECHOIDENTIFIERMETRICTAG._serialized_end=177918 - _PATTERNFLOWICMPECHOIDENTIFIER._serialized_start=177921 - _PATTERNFLOWICMPECHOIDENTIFIER._serialized_end=178356 - _PATTERNFLOWICMPECHOIDENTIFIER_CHOICE._serialized_start=98375 - _PATTERNFLOWICMPECHOIDENTIFIER_CHOICE._serialized_end=98461 - _PATTERNFLOWICMPECHOIDENTIFIER_CHOICE_ENUM._serialized_start=98385 - _PATTERNFLOWICMPECHOIDENTIFIER_CHOICE_ENUM._serialized_end=98461 - _PATTERNFLOWICMPECHOSEQUENCENUMBERCOUNTER._serialized_start=178359 - _PATTERNFLOWICMPECHOSEQUENCENUMBERCOUNTER._serialized_end=178489 - _PATTERNFLOWICMPECHOSEQUENCENUMBERMETRICTAG._serialized_start=178492 - _PATTERNFLOWICMPECHOSEQUENCENUMBERMETRICTAG._serialized_end=178628 - _PATTERNFLOWICMPECHOSEQUENCENUMBER._serialized_start=178631 - _PATTERNFLOWICMPECHOSEQUENCENUMBER._serialized_end=179086 - _PATTERNFLOWICMPECHOSEQUENCENUMBER_CHOICE._serialized_start=98375 - _PATTERNFLOWICMPECHOSEQUENCENUMBER_CHOICE._serialized_end=98461 - _PATTERNFLOWICMPECHOSEQUENCENUMBER_CHOICE_ENUM._serialized_start=98385 - _PATTERNFLOWICMPECHOSEQUENCENUMBER_CHOICE_ENUM._serialized_end=98461 - _PATTERNFLOWICMPCOMMONCHECKSUM._serialized_start=179089 - _PATTERNFLOWICMPCOMMONCHECKSUM._serialized_end=179440 - _PATTERNFLOWICMPCOMMONCHECKSUM_CHOICE._serialized_start=112191 - _PATTERNFLOWICMPCOMMONCHECKSUM_CHOICE._serialized_end=112251 - _PATTERNFLOWICMPCOMMONCHECKSUM_CHOICE_ENUM._serialized_start=112201 - _PATTERNFLOWICMPCOMMONCHECKSUM_CHOICE_ENUM._serialized_end=112251 - _PATTERNFLOWICMPCOMMONCHECKSUM_GENERATED._serialized_start=112253 - _PATTERNFLOWICMPCOMMONCHECKSUM_GENERATED._serialized_end=112308 - _PATTERNFLOWICMPCOMMONCHECKSUM_GENERATED_ENUM._serialized_start=112266 - _PATTERNFLOWICMPCOMMONCHECKSUM_GENERATED_ENUM._serialized_end=112308 - _PATTERNFLOWICMPNEXTFIELDSIDENTIFIERCOUNTER._serialized_start=179443 - _PATTERNFLOWICMPNEXTFIELDSIDENTIFIERCOUNTER._serialized_end=179575 - _PATTERNFLOWICMPNEXTFIELDSIDENTIFIERMETRICTAG._serialized_start=179578 - _PATTERNFLOWICMPNEXTFIELDSIDENTIFIERMETRICTAG._serialized_end=179716 - _PATTERNFLOWICMPNEXTFIELDSIDENTIFIER._serialized_start=179719 - _PATTERNFLOWICMPNEXTFIELDSIDENTIFIER._serialized_end=180184 - _PATTERNFLOWICMPNEXTFIELDSIDENTIFIER_CHOICE._serialized_start=98375 - _PATTERNFLOWICMPNEXTFIELDSIDENTIFIER_CHOICE._serialized_end=98461 - _PATTERNFLOWICMPNEXTFIELDSIDENTIFIER_CHOICE_ENUM._serialized_start=98385 - _PATTERNFLOWICMPNEXTFIELDSIDENTIFIER_CHOICE_ENUM._serialized_end=98461 - _PATTERNFLOWICMPNEXTFIELDSSEQUENCENUMBERCOUNTER._serialized_start=180187 - _PATTERNFLOWICMPNEXTFIELDSSEQUENCENUMBERCOUNTER._serialized_end=180323 - _PATTERNFLOWICMPNEXTFIELDSSEQUENCENUMBERMETRICTAG._serialized_start=180326 - _PATTERNFLOWICMPNEXTFIELDSSEQUENCENUMBERMETRICTAG._serialized_end=180468 - _PATTERNFLOWICMPNEXTFIELDSSEQUENCENUMBER._serialized_start=180471 - _PATTERNFLOWICMPNEXTFIELDSSEQUENCENUMBER._serialized_end=180956 - _PATTERNFLOWICMPNEXTFIELDSSEQUENCENUMBER_CHOICE._serialized_start=98375 - _PATTERNFLOWICMPNEXTFIELDSSEQUENCENUMBER_CHOICE._serialized_end=98461 - _PATTERNFLOWICMPNEXTFIELDSSEQUENCENUMBER_CHOICE_ENUM._serialized_start=98385 - _PATTERNFLOWICMPNEXTFIELDSSEQUENCENUMBER_CHOICE_ENUM._serialized_end=98461 - _PATTERNFLOWICMPV6ECHOTYPECOUNTER._serialized_start=180958 - _PATTERNFLOWICMPV6ECHOTYPECOUNTER._serialized_end=181080 - _PATTERNFLOWICMPV6ECHOTYPEMETRICTAG._serialized_start=181083 - _PATTERNFLOWICMPV6ECHOTYPEMETRICTAG._serialized_end=181211 - _PATTERNFLOWICMPV6ECHOTYPE._serialized_start=181214 - _PATTERNFLOWICMPV6ECHOTYPE._serialized_end=181629 - _PATTERNFLOWICMPV6ECHOTYPE_CHOICE._serialized_start=98375 - _PATTERNFLOWICMPV6ECHOTYPE_CHOICE._serialized_end=98461 - _PATTERNFLOWICMPV6ECHOTYPE_CHOICE_ENUM._serialized_start=98385 - _PATTERNFLOWICMPV6ECHOTYPE_CHOICE_ENUM._serialized_end=98461 - _PATTERNFLOWICMPV6ECHOCODECOUNTER._serialized_start=181631 - _PATTERNFLOWICMPV6ECHOCODECOUNTER._serialized_end=181753 - _PATTERNFLOWICMPV6ECHOCODEMETRICTAG._serialized_start=181756 - _PATTERNFLOWICMPV6ECHOCODEMETRICTAG._serialized_end=181884 - _PATTERNFLOWICMPV6ECHOCODE._serialized_start=181887 - _PATTERNFLOWICMPV6ECHOCODE._serialized_end=182302 - _PATTERNFLOWICMPV6ECHOCODE_CHOICE._serialized_start=98375 - _PATTERNFLOWICMPV6ECHOCODE_CHOICE._serialized_end=98461 - _PATTERNFLOWICMPV6ECHOCODE_CHOICE_ENUM._serialized_start=98385 - _PATTERNFLOWICMPV6ECHOCODE_CHOICE_ENUM._serialized_end=98461 - _PATTERNFLOWICMPV6ECHOIDENTIFIERCOUNTER._serialized_start=182305 - _PATTERNFLOWICMPV6ECHOIDENTIFIERCOUNTER._serialized_end=182433 - _PATTERNFLOWICMPV6ECHOIDENTIFIERMETRICTAG._serialized_start=182436 - _PATTERNFLOWICMPV6ECHOIDENTIFIERMETRICTAG._serialized_end=182570 - _PATTERNFLOWICMPV6ECHOIDENTIFIER._serialized_start=182573 - _PATTERNFLOWICMPV6ECHOIDENTIFIER._serialized_end=183018 - _PATTERNFLOWICMPV6ECHOIDENTIFIER_CHOICE._serialized_start=98375 - _PATTERNFLOWICMPV6ECHOIDENTIFIER_CHOICE._serialized_end=98461 - _PATTERNFLOWICMPV6ECHOIDENTIFIER_CHOICE_ENUM._serialized_start=98385 - _PATTERNFLOWICMPV6ECHOIDENTIFIER_CHOICE_ENUM._serialized_end=98461 - _PATTERNFLOWICMPV6ECHOSEQUENCENUMBERCOUNTER._serialized_start=183021 - _PATTERNFLOWICMPV6ECHOSEQUENCENUMBERCOUNTER._serialized_end=183153 - _PATTERNFLOWICMPV6ECHOSEQUENCENUMBERMETRICTAG._serialized_start=183156 - _PATTERNFLOWICMPV6ECHOSEQUENCENUMBERMETRICTAG._serialized_end=183294 - _PATTERNFLOWICMPV6ECHOSEQUENCENUMBER._serialized_start=183297 - _PATTERNFLOWICMPV6ECHOSEQUENCENUMBER._serialized_end=183762 - _PATTERNFLOWICMPV6ECHOSEQUENCENUMBER_CHOICE._serialized_start=98375 - _PATTERNFLOWICMPV6ECHOSEQUENCENUMBER_CHOICE._serialized_end=98461 - _PATTERNFLOWICMPV6ECHOSEQUENCENUMBER_CHOICE_ENUM._serialized_start=98385 - _PATTERNFLOWICMPV6ECHOSEQUENCENUMBER_CHOICE_ENUM._serialized_end=98461 - _PATTERNFLOWICMPV6ECHOCHECKSUM._serialized_start=183765 - _PATTERNFLOWICMPV6ECHOCHECKSUM._serialized_end=184116 - _PATTERNFLOWICMPV6ECHOCHECKSUM_CHOICE._serialized_start=112191 - _PATTERNFLOWICMPV6ECHOCHECKSUM_CHOICE._serialized_end=112251 - _PATTERNFLOWICMPV6ECHOCHECKSUM_CHOICE_ENUM._serialized_start=112201 - _PATTERNFLOWICMPV6ECHOCHECKSUM_CHOICE_ENUM._serialized_end=112251 - _PATTERNFLOWICMPV6ECHOCHECKSUM_GENERATED._serialized_start=112253 - _PATTERNFLOWICMPV6ECHOCHECKSUM_GENERATED._serialized_end=112308 - _PATTERNFLOWICMPV6ECHOCHECKSUM_GENERATED_ENUM._serialized_start=112266 - _PATTERNFLOWICMPV6ECHOCHECKSUM_GENERATED_ENUM._serialized_end=112308 - _PATTERNFLOWICMPV6COMMONCHECKSUM._serialized_start=184119 - _PATTERNFLOWICMPV6COMMONCHECKSUM._serialized_end=184476 - _PATTERNFLOWICMPV6COMMONCHECKSUM_CHOICE._serialized_start=112191 - _PATTERNFLOWICMPV6COMMONCHECKSUM_CHOICE._serialized_end=112251 - _PATTERNFLOWICMPV6COMMONCHECKSUM_CHOICE_ENUM._serialized_start=112201 - _PATTERNFLOWICMPV6COMMONCHECKSUM_CHOICE_ENUM._serialized_end=112251 - _PATTERNFLOWICMPV6COMMONCHECKSUM_GENERATED._serialized_start=112253 - _PATTERNFLOWICMPV6COMMONCHECKSUM_GENERATED._serialized_end=112308 - _PATTERNFLOWICMPV6COMMONCHECKSUM_GENERATED_ENUM._serialized_start=112266 - _PATTERNFLOWICMPV6COMMONCHECKSUM_GENERATED_ENUM._serialized_end=112308 - _PATTERNFLOWPPPADDRESSCOUNTER._serialized_start=184478 - _PATTERNFLOWPPPADDRESSCOUNTER._serialized_end=184596 - _PATTERNFLOWPPPADDRESSMETRICTAG._serialized_start=184598 - _PATTERNFLOWPPPADDRESSMETRICTAG._serialized_end=184722 - _PATTERNFLOWPPPADDRESS._serialized_start=184725 - _PATTERNFLOWPPPADDRESS._serialized_end=185120 - _PATTERNFLOWPPPADDRESS_CHOICE._serialized_start=98375 - _PATTERNFLOWPPPADDRESS_CHOICE._serialized_end=98461 - _PATTERNFLOWPPPADDRESS_CHOICE_ENUM._serialized_start=98385 - _PATTERNFLOWPPPADDRESS_CHOICE_ENUM._serialized_end=98461 - _PATTERNFLOWPPPCONTROLCOUNTER._serialized_start=185122 - _PATTERNFLOWPPPCONTROLCOUNTER._serialized_end=185240 - _PATTERNFLOWPPPCONTROLMETRICTAG._serialized_start=185242 - _PATTERNFLOWPPPCONTROLMETRICTAG._serialized_end=185366 - _PATTERNFLOWPPPCONTROL._serialized_start=185369 - _PATTERNFLOWPPPCONTROL._serialized_end=185764 - _PATTERNFLOWPPPCONTROL_CHOICE._serialized_start=98375 - _PATTERNFLOWPPPCONTROL_CHOICE._serialized_end=98461 - _PATTERNFLOWPPPCONTROL_CHOICE_ENUM._serialized_start=98385 - _PATTERNFLOWPPPCONTROL_CHOICE_ENUM._serialized_end=98461 - _PATTERNFLOWPPPPROTOCOLTYPECOUNTER._serialized_start=185766 - _PATTERNFLOWPPPPROTOCOLTYPECOUNTER._serialized_end=185889 - _PATTERNFLOWPPPPROTOCOLTYPEMETRICTAG._serialized_start=185892 - _PATTERNFLOWPPPPROTOCOLTYPEMETRICTAG._serialized_end=186021 - _PATTERNFLOWPPPPROTOCOLTYPE._serialized_start=186024 - _PATTERNFLOWPPPPROTOCOLTYPE._serialized_end=186482 - _PATTERNFLOWPPPPROTOCOLTYPE_CHOICE._serialized_start=97705 - _PATTERNFLOWPPPPROTOCOLTYPE_CHOICE._serialized_end=97801 - _PATTERNFLOWPPPPROTOCOLTYPE_CHOICE_ENUM._serialized_start=97715 - _PATTERNFLOWPPPPROTOCOLTYPE_CHOICE_ENUM._serialized_end=97801 - _PATTERNFLOWIGMPV1VERSIONCOUNTER._serialized_start=186484 - _PATTERNFLOWIGMPV1VERSIONCOUNTER._serialized_end=186605 - _PATTERNFLOWIGMPV1VERSIONMETRICTAG._serialized_start=186607 - _PATTERNFLOWIGMPV1VERSIONMETRICTAG._serialized_end=186734 - _PATTERNFLOWIGMPV1VERSION._serialized_start=186737 - _PATTERNFLOWIGMPV1VERSION._serialized_end=187147 - _PATTERNFLOWIGMPV1VERSION_CHOICE._serialized_start=98375 - _PATTERNFLOWIGMPV1VERSION_CHOICE._serialized_end=98461 - _PATTERNFLOWIGMPV1VERSION_CHOICE_ENUM._serialized_start=98385 - _PATTERNFLOWIGMPV1VERSION_CHOICE_ENUM._serialized_end=98461 - _PATTERNFLOWIGMPV1TYPECOUNTER._serialized_start=187149 - _PATTERNFLOWIGMPV1TYPECOUNTER._serialized_end=187267 - _PATTERNFLOWIGMPV1TYPEMETRICTAG._serialized_start=187269 - _PATTERNFLOWIGMPV1TYPEMETRICTAG._serialized_end=187393 - _PATTERNFLOWIGMPV1TYPE._serialized_start=187396 - _PATTERNFLOWIGMPV1TYPE._serialized_end=187791 - _PATTERNFLOWIGMPV1TYPE_CHOICE._serialized_start=98375 - _PATTERNFLOWIGMPV1TYPE_CHOICE._serialized_end=98461 - _PATTERNFLOWIGMPV1TYPE_CHOICE_ENUM._serialized_start=98385 - _PATTERNFLOWIGMPV1TYPE_CHOICE_ENUM._serialized_end=98461 - _PATTERNFLOWIGMPV1UNUSEDCOUNTER._serialized_start=187793 - _PATTERNFLOWIGMPV1UNUSEDCOUNTER._serialized_end=187913 - _PATTERNFLOWIGMPV1UNUSEDMETRICTAG._serialized_start=187915 - _PATTERNFLOWIGMPV1UNUSEDMETRICTAG._serialized_end=188041 - _PATTERNFLOWIGMPV1UNUSED._serialized_start=188044 - _PATTERNFLOWIGMPV1UNUSED._serialized_end=188449 - _PATTERNFLOWIGMPV1UNUSED_CHOICE._serialized_start=98375 - _PATTERNFLOWIGMPV1UNUSED_CHOICE._serialized_end=98461 - _PATTERNFLOWIGMPV1UNUSED_CHOICE_ENUM._serialized_start=98385 - _PATTERNFLOWIGMPV1UNUSED_CHOICE_ENUM._serialized_end=98461 - _PATTERNFLOWIGMPV1CHECKSUM._serialized_start=188452 - _PATTERNFLOWIGMPV1CHECKSUM._serialized_end=188791 - _PATTERNFLOWIGMPV1CHECKSUM_CHOICE._serialized_start=112191 - _PATTERNFLOWIGMPV1CHECKSUM_CHOICE._serialized_end=112251 - _PATTERNFLOWIGMPV1CHECKSUM_CHOICE_ENUM._serialized_start=112201 - _PATTERNFLOWIGMPV1CHECKSUM_CHOICE_ENUM._serialized_end=112251 - _PATTERNFLOWIGMPV1CHECKSUM_GENERATED._serialized_start=112253 - _PATTERNFLOWIGMPV1CHECKSUM_GENERATED._serialized_end=112308 - _PATTERNFLOWIGMPV1CHECKSUM_GENERATED_ENUM._serialized_start=112266 - _PATTERNFLOWIGMPV1CHECKSUM_GENERATED_ENUM._serialized_end=112308 - _PATTERNFLOWIGMPV1GROUPADDRESSCOUNTER._serialized_start=188793 - _PATTERNFLOWIGMPV1GROUPADDRESSCOUNTER._serialized_end=188919 - _PATTERNFLOWIGMPV1GROUPADDRESSMETRICTAG._serialized_start=188922 - _PATTERNFLOWIGMPV1GROUPADDRESSMETRICTAG._serialized_end=189054 - _PATTERNFLOWIGMPV1GROUPADDRESS._serialized_start=189057 - _PATTERNFLOWIGMPV1GROUPADDRESS._serialized_end=189492 - _PATTERNFLOWIGMPV1GROUPADDRESS_CHOICE._serialized_start=98375 - _PATTERNFLOWIGMPV1GROUPADDRESS_CHOICE._serialized_end=98461 - _PATTERNFLOWIGMPV1GROUPADDRESS_CHOICE_ENUM._serialized_start=98385 - _PATTERNFLOWIGMPV1GROUPADDRESS_CHOICE_ENUM._serialized_end=98461 - _PATTERNFLOWMPLSLABELCOUNTER._serialized_start=189494 - _PATTERNFLOWMPLSLABELCOUNTER._serialized_end=189611 - _PATTERNFLOWMPLSLABELMETRICTAG._serialized_start=189613 - _PATTERNFLOWMPLSLABELMETRICTAG._serialized_end=189736 - _PATTERNFLOWMPLSLABEL._serialized_start=189739 - _PATTERNFLOWMPLSLABEL._serialized_end=190167 - _PATTERNFLOWMPLSLABEL_CHOICE._serialized_start=97705 - _PATTERNFLOWMPLSLABEL_CHOICE._serialized_end=97801 - _PATTERNFLOWMPLSLABEL_CHOICE_ENUM._serialized_start=97715 - _PATTERNFLOWMPLSLABEL_CHOICE_ENUM._serialized_end=97801 - _PATTERNFLOWMPLSTRAFFICCLASSCOUNTER._serialized_start=190169 - _PATTERNFLOWMPLSTRAFFICCLASSCOUNTER._serialized_end=190293 - _PATTERNFLOWMPLSTRAFFICCLASSMETRICTAG._serialized_start=190296 - _PATTERNFLOWMPLSTRAFFICCLASSMETRICTAG._serialized_end=190426 - _PATTERNFLOWMPLSTRAFFICCLASS._serialized_start=190429 - _PATTERNFLOWMPLSTRAFFICCLASS._serialized_end=190854 - _PATTERNFLOWMPLSTRAFFICCLASS_CHOICE._serialized_start=98375 - _PATTERNFLOWMPLSTRAFFICCLASS_CHOICE._serialized_end=98461 - _PATTERNFLOWMPLSTRAFFICCLASS_CHOICE_ENUM._serialized_start=98385 - _PATTERNFLOWMPLSTRAFFICCLASS_CHOICE_ENUM._serialized_end=98461 - _PATTERNFLOWMPLSBOTTOMOFSTACKCOUNTER._serialized_start=190856 - _PATTERNFLOWMPLSBOTTOMOFSTACKCOUNTER._serialized_end=190981 - _PATTERNFLOWMPLSBOTTOMOFSTACKMETRICTAG._serialized_start=190984 - _PATTERNFLOWMPLSBOTTOMOFSTACKMETRICTAG._serialized_end=191115 - _PATTERNFLOWMPLSBOTTOMOFSTACK._serialized_start=191118 - _PATTERNFLOWMPLSBOTTOMOFSTACK._serialized_end=191586 - _PATTERNFLOWMPLSBOTTOMOFSTACK_CHOICE._serialized_start=97705 - _PATTERNFLOWMPLSBOTTOMOFSTACK_CHOICE._serialized_end=97801 - _PATTERNFLOWMPLSBOTTOMOFSTACK_CHOICE_ENUM._serialized_start=97715 - _PATTERNFLOWMPLSBOTTOMOFSTACK_CHOICE_ENUM._serialized_end=97801 - _PATTERNFLOWMPLSTIMETOLIVECOUNTER._serialized_start=191588 - _PATTERNFLOWMPLSTIMETOLIVECOUNTER._serialized_end=191710 - _PATTERNFLOWMPLSTIMETOLIVEMETRICTAG._serialized_start=191713 - _PATTERNFLOWMPLSTIMETOLIVEMETRICTAG._serialized_end=191841 - _PATTERNFLOWMPLSTIMETOLIVE._serialized_start=191844 - _PATTERNFLOWMPLSTIMETOLIVE._serialized_end=192259 - _PATTERNFLOWMPLSTIMETOLIVE_CHOICE._serialized_start=98375 - _PATTERNFLOWMPLSTIMETOLIVE_CHOICE._serialized_end=98461 - _PATTERNFLOWMPLSTIMETOLIVE_CHOICE_ENUM._serialized_start=98385 - _PATTERNFLOWMPLSTIMETOLIVE_CHOICE_ENUM._serialized_end=98461 - _VERSION._serialized_start=192262 - _VERSION._serialized_end=192407 - _SUCCESS._serialized_start=192409 - _SUCCESS._serialized_end=192449 - _FAILURE._serialized_start=192451 - _FAILURE._serialized_end=192487 - _SETCONFIGREQUEST._serialized_start=192489 - _SETCONFIGREQUEST._serialized_end=192536 - _UPDATECONFIGREQUEST._serialized_start=192538 - _UPDATECONFIGREQUEST._serialized_end=192601 - _SETCONFIGRESPONSE._serialized_start=192603 - _SETCONFIGRESPONSE._serialized_end=192653 - _GETCONFIGRESPONSE._serialized_start=192655 - _GETCONFIGRESPONSE._serialized_end=192703 - _UPDATECONFIGRESPONSE._serialized_start=192705 - _UPDATECONFIGRESPONSE._serialized_end=192758 - _SETCONTROLSTATEREQUEST._serialized_start=192760 - _SETCONTROLSTATEREQUEST._serialized_end=192826 - _SETCONTROLSTATERESPONSE._serialized_start=192828 - _SETCONTROLSTATERESPONSE._serialized_end=192884 - _SETCONTROLACTIONREQUEST._serialized_start=192886 - _SETCONTROLACTIONREQUEST._serialized_end=192955 - _SETCONTROLACTIONRESPONSE._serialized_start=192957 - _SETCONTROLACTIONRESPONSE._serialized_end=193044 - _GETMETRICSREQUEST._serialized_start=193046 - _GETMETRICSREQUEST._serialized_end=193111 - _GETMETRICSRESPONSE._serialized_start=193113 - _GETMETRICSRESPONSE._serialized_end=193181 - _GETSTATESREQUEST._serialized_start=193183 - _GETSTATESREQUEST._serialized_end=193245 - _GETSTATESRESPONSE._serialized_start=193247 - _GETSTATESRESPONSE._serialized_end=193312 - _GETCAPTUREREQUEST._serialized_start=193314 - _GETCAPTUREREQUEST._serialized_end=193379 - _GETCAPTURERESPONSE._serialized_start=193381 - _GETCAPTURERESPONSE._serialized_end=193425 - _GETVERSIONRESPONSE._serialized_start=193427 - _GETVERSIONRESPONSE._serialized_end=193478 - _OPENAPI._serialized_start=193481 - _OPENAPI._serialized_end=194088 + _RSVPLSPSTATE_LASTFLAPREASON._serialized_start=108642 + _RSVPLSPSTATE_LASTFLAPREASON._serialized_end=108731 + _RSVPLSPSTATE_LASTFLAPREASON_ENUM._serialized_start=108660 + _RSVPLSPSTATE_LASTFLAPREASON_ENUM._serialized_end=108731 + _RSVPLSPIPV4RRO._serialized_start=108854 + _RSVPLSPIPV4RRO._serialized_end=108952 + _RSVPLSPIPV4ERO._serialized_start=108955 + _RSVPLSPIPV4ERO._serialized_end=109197 + _RSVPLSPIPV4ERO_TYPE._serialized_start=109062 + _RSVPLSPIPV4ERO_TYPE._serialized_end=109169 + _RSVPLSPIPV4ERO_TYPE_ENUM._serialized_start=109070 + _RSVPLSPIPV4ERO_TYPE_ENUM._serialized_end=109169 + _CAPTUREREQUEST._serialized_start=109199 + _CAPTUREREQUEST._serialized_end=109253 + _PATTERNFLOWETHERNETDSTCOUNTER._serialized_start=109255 + _PATTERNFLOWETHERNETDSTCOUNTER._serialized_end=109374 + _PATTERNFLOWETHERNETDSTMETRICTAG._serialized_start=109376 + _PATTERNFLOWETHERNETDSTMETRICTAG._serialized_end=109501 + _PATTERNFLOWETHERNETDST._serialized_start=109504 + _PATTERNFLOWETHERNETDST._serialized_end=109942 + _PATTERNFLOWETHERNETDST_CHOICE._serialized_start=109816 + _PATTERNFLOWETHERNETDST_CHOICE._serialized_end=109912 + _PATTERNFLOWETHERNETDST_CHOICE_ENUM._serialized_start=109826 + _PATTERNFLOWETHERNETDST_CHOICE_ENUM._serialized_end=109912 + _PATTERNFLOWETHERNETSRCCOUNTER._serialized_start=109944 + _PATTERNFLOWETHERNETSRCCOUNTER._serialized_end=110063 + _PATTERNFLOWETHERNETSRCMETRICTAG._serialized_start=110065 + _PATTERNFLOWETHERNETSRCMETRICTAG._serialized_end=110190 + _PATTERNFLOWETHERNETSRC._serialized_start=110193 + _PATTERNFLOWETHERNETSRC._serialized_end=110593 + _PATTERNFLOWETHERNETSRC_CHOICE._serialized_start=110486 + _PATTERNFLOWETHERNETSRC_CHOICE._serialized_end=110572 + _PATTERNFLOWETHERNETSRC_CHOICE_ENUM._serialized_start=110496 + _PATTERNFLOWETHERNETSRC_CHOICE_ENUM._serialized_end=110572 + _PATTERNFLOWETHERNETETHERTYPECOUNTER._serialized_start=110595 + _PATTERNFLOWETHERNETETHERTYPECOUNTER._serialized_end=110720 + _PATTERNFLOWETHERNETETHERTYPEMETRICTAG._serialized_start=110723 + _PATTERNFLOWETHERNETETHERTYPEMETRICTAG._serialized_end=110854 + _PATTERNFLOWETHERNETETHERTYPE._serialized_start=110857 + _PATTERNFLOWETHERNETETHERTYPE._serialized_end=111325 + _PATTERNFLOWETHERNETETHERTYPE_CHOICE._serialized_start=109816 + _PATTERNFLOWETHERNETETHERTYPE_CHOICE._serialized_end=109912 + _PATTERNFLOWETHERNETETHERTYPE_CHOICE_ENUM._serialized_start=109826 + _PATTERNFLOWETHERNETETHERTYPE_CHOICE_ENUM._serialized_end=109912 + _PATTERNFLOWETHERNETPFCQUEUECOUNTER._serialized_start=111327 + _PATTERNFLOWETHERNETPFCQUEUECOUNTER._serialized_end=111451 + _PATTERNFLOWETHERNETPFCQUEUEMETRICTAG._serialized_start=111454 + _PATTERNFLOWETHERNETPFCQUEUEMETRICTAG._serialized_end=111584 + _PATTERNFLOWETHERNETPFCQUEUE._serialized_start=111587 + _PATTERNFLOWETHERNETPFCQUEUE._serialized_end=112012 + _PATTERNFLOWETHERNETPFCQUEUE_CHOICE._serialized_start=110486 + _PATTERNFLOWETHERNETPFCQUEUE_CHOICE._serialized_end=110572 + _PATTERNFLOWETHERNETPFCQUEUE_CHOICE_ENUM._serialized_start=110496 + _PATTERNFLOWETHERNETPFCQUEUE_CHOICE_ENUM._serialized_end=110572 + _PATTERNFLOWVLANPRIORITYCOUNTER._serialized_start=112014 + _PATTERNFLOWVLANPRIORITYCOUNTER._serialized_end=112134 + _PATTERNFLOWVLANPRIORITYMETRICTAG._serialized_start=112136 + _PATTERNFLOWVLANPRIORITYMETRICTAG._serialized_end=112262 + _PATTERNFLOWVLANPRIORITY._serialized_start=112265 + _PATTERNFLOWVLANPRIORITY._serialized_end=112670 + _PATTERNFLOWVLANPRIORITY_CHOICE._serialized_start=110486 + _PATTERNFLOWVLANPRIORITY_CHOICE._serialized_end=110572 + _PATTERNFLOWVLANPRIORITY_CHOICE_ENUM._serialized_start=110496 + _PATTERNFLOWVLANPRIORITY_CHOICE_ENUM._serialized_end=110572 + _PATTERNFLOWVLANCFICOUNTER._serialized_start=112672 + _PATTERNFLOWVLANCFICOUNTER._serialized_end=112787 + _PATTERNFLOWVLANCFIMETRICTAG._serialized_start=112789 + _PATTERNFLOWVLANCFIMETRICTAG._serialized_end=112910 + _PATTERNFLOWVLANCFI._serialized_start=112913 + _PATTERNFLOWVLANCFI._serialized_end=113293 + _PATTERNFLOWVLANCFI_CHOICE._serialized_start=110486 + _PATTERNFLOWVLANCFI_CHOICE._serialized_end=110572 + _PATTERNFLOWVLANCFI_CHOICE_ENUM._serialized_start=110496 + _PATTERNFLOWVLANCFI_CHOICE_ENUM._serialized_end=110572 + _PATTERNFLOWVLANIDCOUNTER._serialized_start=113295 + _PATTERNFLOWVLANIDCOUNTER._serialized_end=113409 + _PATTERNFLOWVLANIDMETRICTAG._serialized_start=113411 + _PATTERNFLOWVLANIDMETRICTAG._serialized_end=113531 + _PATTERNFLOWVLANID._serialized_start=113534 + _PATTERNFLOWVLANID._serialized_end=113909 + _PATTERNFLOWVLANID_CHOICE._serialized_start=110486 + _PATTERNFLOWVLANID_CHOICE._serialized_end=110572 + _PATTERNFLOWVLANID_CHOICE_ENUM._serialized_start=110496 + _PATTERNFLOWVLANID_CHOICE_ENUM._serialized_end=110572 + _PATTERNFLOWVLANTPIDCOUNTER._serialized_start=113911 + _PATTERNFLOWVLANTPIDCOUNTER._serialized_end=114027 + _PATTERNFLOWVLANTPIDMETRICTAG._serialized_start=114029 + _PATTERNFLOWVLANTPIDMETRICTAG._serialized_end=114151 + _PATTERNFLOWVLANTPID._serialized_start=114154 + _PATTERNFLOWVLANTPID._serialized_end=114539 + _PATTERNFLOWVLANTPID_CHOICE._serialized_start=110486 + _PATTERNFLOWVLANTPID_CHOICE._serialized_end=110572 + _PATTERNFLOWVLANTPID_CHOICE_ENUM._serialized_start=110496 + _PATTERNFLOWVLANTPID_CHOICE_ENUM._serialized_end=110572 + _PATTERNFLOWVXLANFLAGSCOUNTER._serialized_start=114541 + _PATTERNFLOWVXLANFLAGSCOUNTER._serialized_end=114659 + _PATTERNFLOWVXLANFLAGSMETRICTAG._serialized_start=114661 + _PATTERNFLOWVXLANFLAGSMETRICTAG._serialized_end=114785 + _PATTERNFLOWVXLANFLAGS._serialized_start=114788 + _PATTERNFLOWVXLANFLAGS._serialized_end=115183 + _PATTERNFLOWVXLANFLAGS_CHOICE._serialized_start=110486 + _PATTERNFLOWVXLANFLAGS_CHOICE._serialized_end=110572 + _PATTERNFLOWVXLANFLAGS_CHOICE_ENUM._serialized_start=110496 + _PATTERNFLOWVXLANFLAGS_CHOICE_ENUM._serialized_end=110572 + _PATTERNFLOWVXLANRESERVED0COUNTER._serialized_start=115185 + _PATTERNFLOWVXLANRESERVED0COUNTER._serialized_end=115307 + _PATTERNFLOWVXLANRESERVED0METRICTAG._serialized_start=115310 + _PATTERNFLOWVXLANRESERVED0METRICTAG._serialized_end=115438 + _PATTERNFLOWVXLANRESERVED0._serialized_start=115441 + _PATTERNFLOWVXLANRESERVED0._serialized_end=115856 + _PATTERNFLOWVXLANRESERVED0_CHOICE._serialized_start=110486 + _PATTERNFLOWVXLANRESERVED0_CHOICE._serialized_end=110572 + _PATTERNFLOWVXLANRESERVED0_CHOICE_ENUM._serialized_start=110496 + _PATTERNFLOWVXLANRESERVED0_CHOICE_ENUM._serialized_end=110572 + _PATTERNFLOWVXLANVNICOUNTER._serialized_start=115858 + _PATTERNFLOWVXLANVNICOUNTER._serialized_end=115974 + _PATTERNFLOWVXLANVNIMETRICTAG._serialized_start=115976 + _PATTERNFLOWVXLANVNIMETRICTAG._serialized_end=116098 + _PATTERNFLOWVXLANVNI._serialized_start=116101 + _PATTERNFLOWVXLANVNI._serialized_end=116524 + _PATTERNFLOWVXLANVNI_CHOICE._serialized_start=109816 + _PATTERNFLOWVXLANVNI_CHOICE._serialized_end=109912 + _PATTERNFLOWVXLANVNI_CHOICE_ENUM._serialized_start=109826 + _PATTERNFLOWVXLANVNI_CHOICE_ENUM._serialized_end=109912 + _PATTERNFLOWVXLANRESERVED1COUNTER._serialized_start=116526 + _PATTERNFLOWVXLANRESERVED1COUNTER._serialized_end=116648 + _PATTERNFLOWVXLANRESERVED1METRICTAG._serialized_start=116651 + _PATTERNFLOWVXLANRESERVED1METRICTAG._serialized_end=116779 + _PATTERNFLOWVXLANRESERVED1._serialized_start=116782 + _PATTERNFLOWVXLANRESERVED1._serialized_end=117197 + _PATTERNFLOWVXLANRESERVED1_CHOICE._serialized_start=110486 + _PATTERNFLOWVXLANRESERVED1_CHOICE._serialized_end=110572 + _PATTERNFLOWVXLANRESERVED1_CHOICE_ENUM._serialized_start=110496 + _PATTERNFLOWVXLANRESERVED1_CHOICE_ENUM._serialized_end=110572 + _PATTERNFLOWIPV4VERSIONCOUNTER._serialized_start=117199 + _PATTERNFLOWIPV4VERSIONCOUNTER._serialized_end=117318 + _PATTERNFLOWIPV4VERSIONMETRICTAG._serialized_start=117320 + _PATTERNFLOWIPV4VERSIONMETRICTAG._serialized_end=117445 + _PATTERNFLOWIPV4VERSION._serialized_start=117448 + _PATTERNFLOWIPV4VERSION._serialized_end=117848 + _PATTERNFLOWIPV4VERSION_CHOICE._serialized_start=110486 + _PATTERNFLOWIPV4VERSION_CHOICE._serialized_end=110572 + _PATTERNFLOWIPV4VERSION_CHOICE_ENUM._serialized_start=110496 + _PATTERNFLOWIPV4VERSION_CHOICE_ENUM._serialized_end=110572 + _PATTERNFLOWIPV4HEADERLENGTHCOUNTER._serialized_start=117850 + _PATTERNFLOWIPV4HEADERLENGTHCOUNTER._serialized_end=117974 + _PATTERNFLOWIPV4HEADERLENGTHMETRICTAG._serialized_start=117977 + _PATTERNFLOWIPV4HEADERLENGTHMETRICTAG._serialized_end=118107 + _PATTERNFLOWIPV4HEADERLENGTH._serialized_start=118110 + _PATTERNFLOWIPV4HEADERLENGTH._serialized_end=118573 + _PATTERNFLOWIPV4HEADERLENGTH_CHOICE._serialized_start=109816 + _PATTERNFLOWIPV4HEADERLENGTH_CHOICE._serialized_end=109912 + _PATTERNFLOWIPV4HEADERLENGTH_CHOICE_ENUM._serialized_start=109826 + _PATTERNFLOWIPV4HEADERLENGTH_CHOICE_ENUM._serialized_end=109912 + _PATTERNFLOWIPV4TOTALLENGTHCOUNTER._serialized_start=118575 + _PATTERNFLOWIPV4TOTALLENGTHCOUNTER._serialized_end=118698 + _PATTERNFLOWIPV4TOTALLENGTHMETRICTAG._serialized_start=118701 + _PATTERNFLOWIPV4TOTALLENGTHMETRICTAG._serialized_end=118830 + _PATTERNFLOWIPV4TOTALLENGTH._serialized_start=118833 + _PATTERNFLOWIPV4TOTALLENGTH._serialized_end=119291 + _PATTERNFLOWIPV4TOTALLENGTH_CHOICE._serialized_start=109816 + _PATTERNFLOWIPV4TOTALLENGTH_CHOICE._serialized_end=109912 + _PATTERNFLOWIPV4TOTALLENGTH_CHOICE_ENUM._serialized_start=109826 + _PATTERNFLOWIPV4TOTALLENGTH_CHOICE_ENUM._serialized_end=109912 + _PATTERNFLOWIPV4IDENTIFICATIONCOUNTER._serialized_start=119293 + _PATTERNFLOWIPV4IDENTIFICATIONCOUNTER._serialized_end=119419 + _PATTERNFLOWIPV4IDENTIFICATIONMETRICTAG._serialized_start=119422 + _PATTERNFLOWIPV4IDENTIFICATIONMETRICTAG._serialized_end=119554 + _PATTERNFLOWIPV4IDENTIFICATION._serialized_start=119557 + _PATTERNFLOWIPV4IDENTIFICATION._serialized_end=119992 + _PATTERNFLOWIPV4IDENTIFICATION_CHOICE._serialized_start=110486 + _PATTERNFLOWIPV4IDENTIFICATION_CHOICE._serialized_end=110572 + _PATTERNFLOWIPV4IDENTIFICATION_CHOICE_ENUM._serialized_start=110496 + _PATTERNFLOWIPV4IDENTIFICATION_CHOICE_ENUM._serialized_end=110572 + _PATTERNFLOWIPV4RESERVEDCOUNTER._serialized_start=119994 + _PATTERNFLOWIPV4RESERVEDCOUNTER._serialized_end=120114 + _PATTERNFLOWIPV4RESERVEDMETRICTAG._serialized_start=120116 + _PATTERNFLOWIPV4RESERVEDMETRICTAG._serialized_end=120242 + _PATTERNFLOWIPV4RESERVED._serialized_start=120245 + _PATTERNFLOWIPV4RESERVED._serialized_end=120650 + _PATTERNFLOWIPV4RESERVED_CHOICE._serialized_start=110486 + _PATTERNFLOWIPV4RESERVED_CHOICE._serialized_end=110572 + _PATTERNFLOWIPV4RESERVED_CHOICE_ENUM._serialized_start=110496 + _PATTERNFLOWIPV4RESERVED_CHOICE_ENUM._serialized_end=110572 + _PATTERNFLOWIPV4DONTFRAGMENTCOUNTER._serialized_start=120652 + _PATTERNFLOWIPV4DONTFRAGMENTCOUNTER._serialized_end=120776 + _PATTERNFLOWIPV4DONTFRAGMENTMETRICTAG._serialized_start=120779 + _PATTERNFLOWIPV4DONTFRAGMENTMETRICTAG._serialized_end=120909 + _PATTERNFLOWIPV4DONTFRAGMENT._serialized_start=120912 + _PATTERNFLOWIPV4DONTFRAGMENT._serialized_end=121337 + _PATTERNFLOWIPV4DONTFRAGMENT_CHOICE._serialized_start=110486 + _PATTERNFLOWIPV4DONTFRAGMENT_CHOICE._serialized_end=110572 + _PATTERNFLOWIPV4DONTFRAGMENT_CHOICE_ENUM._serialized_start=110496 + _PATTERNFLOWIPV4DONTFRAGMENT_CHOICE_ENUM._serialized_end=110572 + _PATTERNFLOWIPV4MOREFRAGMENTSCOUNTER._serialized_start=121339 + _PATTERNFLOWIPV4MOREFRAGMENTSCOUNTER._serialized_end=121464 + _PATTERNFLOWIPV4MOREFRAGMENTSMETRICTAG._serialized_start=121467 + _PATTERNFLOWIPV4MOREFRAGMENTSMETRICTAG._serialized_end=121598 + _PATTERNFLOWIPV4MOREFRAGMENTS._serialized_start=121601 + _PATTERNFLOWIPV4MOREFRAGMENTS._serialized_end=122031 + _PATTERNFLOWIPV4MOREFRAGMENTS_CHOICE._serialized_start=110486 + _PATTERNFLOWIPV4MOREFRAGMENTS_CHOICE._serialized_end=110572 + _PATTERNFLOWIPV4MOREFRAGMENTS_CHOICE_ENUM._serialized_start=110496 + _PATTERNFLOWIPV4MOREFRAGMENTS_CHOICE_ENUM._serialized_end=110572 + _PATTERNFLOWIPV4FRAGMENTOFFSETCOUNTER._serialized_start=122033 + _PATTERNFLOWIPV4FRAGMENTOFFSETCOUNTER._serialized_end=122159 + _PATTERNFLOWIPV4FRAGMENTOFFSETMETRICTAG._serialized_start=122162 + _PATTERNFLOWIPV4FRAGMENTOFFSETMETRICTAG._serialized_end=122294 + _PATTERNFLOWIPV4FRAGMENTOFFSET._serialized_start=122297 + _PATTERNFLOWIPV4FRAGMENTOFFSET._serialized_end=122732 + _PATTERNFLOWIPV4FRAGMENTOFFSET_CHOICE._serialized_start=110486 + _PATTERNFLOWIPV4FRAGMENTOFFSET_CHOICE._serialized_end=110572 + _PATTERNFLOWIPV4FRAGMENTOFFSET_CHOICE_ENUM._serialized_start=110496 + _PATTERNFLOWIPV4FRAGMENTOFFSET_CHOICE_ENUM._serialized_end=110572 + _PATTERNFLOWIPV4TIMETOLIVECOUNTER._serialized_start=122734 + _PATTERNFLOWIPV4TIMETOLIVECOUNTER._serialized_end=122856 + _PATTERNFLOWIPV4TIMETOLIVEMETRICTAG._serialized_start=122859 + _PATTERNFLOWIPV4TIMETOLIVEMETRICTAG._serialized_end=122987 + _PATTERNFLOWIPV4TIMETOLIVE._serialized_start=122990 + _PATTERNFLOWIPV4TIMETOLIVE._serialized_end=123405 + _PATTERNFLOWIPV4TIMETOLIVE_CHOICE._serialized_start=110486 + _PATTERNFLOWIPV4TIMETOLIVE_CHOICE._serialized_end=110572 + _PATTERNFLOWIPV4TIMETOLIVE_CHOICE_ENUM._serialized_start=110496 + _PATTERNFLOWIPV4TIMETOLIVE_CHOICE_ENUM._serialized_end=110572 + _PATTERNFLOWIPV4PROTOCOLCOUNTER._serialized_start=123407 + _PATTERNFLOWIPV4PROTOCOLCOUNTER._serialized_end=123527 + _PATTERNFLOWIPV4PROTOCOLMETRICTAG._serialized_start=123529 + _PATTERNFLOWIPV4PROTOCOLMETRICTAG._serialized_end=123655 + _PATTERNFLOWIPV4PROTOCOL._serialized_start=123658 + _PATTERNFLOWIPV4PROTOCOL._serialized_end=124101 + _PATTERNFLOWIPV4PROTOCOL_CHOICE._serialized_start=109816 + _PATTERNFLOWIPV4PROTOCOL_CHOICE._serialized_end=109912 + _PATTERNFLOWIPV4PROTOCOL_CHOICE_ENUM._serialized_start=109826 + _PATTERNFLOWIPV4PROTOCOL_CHOICE_ENUM._serialized_end=109912 + _PATTERNFLOWIPV4HEADERCHECKSUM._serialized_start=124104 + _PATTERNFLOWIPV4HEADERCHECKSUM._serialized_end=124455 + _PATTERNFLOWIPV4HEADERCHECKSUM_CHOICE._serialized_start=124302 + _PATTERNFLOWIPV4HEADERCHECKSUM_CHOICE._serialized_end=124362 + _PATTERNFLOWIPV4HEADERCHECKSUM_CHOICE_ENUM._serialized_start=124312 + _PATTERNFLOWIPV4HEADERCHECKSUM_CHOICE_ENUM._serialized_end=124362 + _PATTERNFLOWIPV4HEADERCHECKSUM_GENERATED._serialized_start=124364 + _PATTERNFLOWIPV4HEADERCHECKSUM_GENERATED._serialized_end=124419 + _PATTERNFLOWIPV4HEADERCHECKSUM_GENERATED_ENUM._serialized_start=124377 + _PATTERNFLOWIPV4HEADERCHECKSUM_GENERATED_ENUM._serialized_end=124419 + _PATTERNFLOWIPV4SRCCOUNTER._serialized_start=124457 + _PATTERNFLOWIPV4SRCCOUNTER._serialized_end=124572 + _PATTERNFLOWIPV4SRCMETRICTAG._serialized_start=124574 + _PATTERNFLOWIPV4SRCMETRICTAG._serialized_end=124695 + _PATTERNFLOWIPV4SRC._serialized_start=124698 + _PATTERNFLOWIPV4SRC._serialized_end=125078 + _PATTERNFLOWIPV4SRC_CHOICE._serialized_start=110486 + _PATTERNFLOWIPV4SRC_CHOICE._serialized_end=110572 + _PATTERNFLOWIPV4SRC_CHOICE_ENUM._serialized_start=110496 + _PATTERNFLOWIPV4SRC_CHOICE_ENUM._serialized_end=110572 + _PATTERNFLOWIPV4DSTCOUNTER._serialized_start=125080 + _PATTERNFLOWIPV4DSTCOUNTER._serialized_end=125195 + _PATTERNFLOWIPV4DSTMETRICTAG._serialized_start=125197 + _PATTERNFLOWIPV4DSTMETRICTAG._serialized_end=125318 + _PATTERNFLOWIPV4DST._serialized_start=125321 + _PATTERNFLOWIPV4DST._serialized_end=125701 + _PATTERNFLOWIPV4DST_CHOICE._serialized_start=110486 + _PATTERNFLOWIPV4DST_CHOICE._serialized_end=110572 + _PATTERNFLOWIPV4DST_CHOICE_ENUM._serialized_start=110496 + _PATTERNFLOWIPV4DST_CHOICE_ENUM._serialized_end=110572 + _PATTERNFLOWIPV4PRIORITYRAWCOUNTER._serialized_start=125703 + _PATTERNFLOWIPV4PRIORITYRAWCOUNTER._serialized_end=125826 + _PATTERNFLOWIPV4PRIORITYRAWMETRICTAG._serialized_start=125829 + _PATTERNFLOWIPV4PRIORITYRAWMETRICTAG._serialized_end=125958 + _PATTERNFLOWIPV4PRIORITYRAW._serialized_start=125961 + _PATTERNFLOWIPV4PRIORITYRAW._serialized_end=126381 + _PATTERNFLOWIPV4PRIORITYRAW_CHOICE._serialized_start=110486 + _PATTERNFLOWIPV4PRIORITYRAW_CHOICE._serialized_end=110572 + _PATTERNFLOWIPV4PRIORITYRAW_CHOICE_ENUM._serialized_start=110496 + _PATTERNFLOWIPV4PRIORITYRAW_CHOICE_ENUM._serialized_end=110572 + _PATTERNFLOWIPV4DSCPPHBCOUNTER._serialized_start=126383 + _PATTERNFLOWIPV4DSCPPHBCOUNTER._serialized_end=126502 + _PATTERNFLOWIPV4DSCPPHBMETRICTAG._serialized_start=126504 + _PATTERNFLOWIPV4DSCPPHBMETRICTAG._serialized_end=126629 + _PATTERNFLOWIPV4DSCPPHB._serialized_start=126632 + _PATTERNFLOWIPV4DSCPPHB._serialized_end=127032 + _PATTERNFLOWIPV4DSCPPHB_CHOICE._serialized_start=110486 + _PATTERNFLOWIPV4DSCPPHB_CHOICE._serialized_end=110572 + _PATTERNFLOWIPV4DSCPPHB_CHOICE_ENUM._serialized_start=110496 + _PATTERNFLOWIPV4DSCPPHB_CHOICE_ENUM._serialized_end=110572 + _PATTERNFLOWIPV4DSCPECNCOUNTER._serialized_start=127034 + _PATTERNFLOWIPV4DSCPECNCOUNTER._serialized_end=127153 + _PATTERNFLOWIPV4DSCPECNMETRICTAG._serialized_start=127155 + _PATTERNFLOWIPV4DSCPECNMETRICTAG._serialized_end=127280 + _PATTERNFLOWIPV4DSCPECN._serialized_start=127283 + _PATTERNFLOWIPV4DSCPECN._serialized_end=127683 + _PATTERNFLOWIPV4DSCPECN_CHOICE._serialized_start=110486 + _PATTERNFLOWIPV4DSCPECN_CHOICE._serialized_end=110572 + _PATTERNFLOWIPV4DSCPECN_CHOICE_ENUM._serialized_start=110496 + _PATTERNFLOWIPV4DSCPECN_CHOICE_ENUM._serialized_end=110572 + _PATTERNFLOWIPV4TOSPRECEDENCECOUNTER._serialized_start=127685 + _PATTERNFLOWIPV4TOSPRECEDENCECOUNTER._serialized_end=127810 + _PATTERNFLOWIPV4TOSPRECEDENCEMETRICTAG._serialized_start=127813 + _PATTERNFLOWIPV4TOSPRECEDENCEMETRICTAG._serialized_end=127944 + _PATTERNFLOWIPV4TOSPRECEDENCE._serialized_start=127947 + _PATTERNFLOWIPV4TOSPRECEDENCE._serialized_end=128377 + _PATTERNFLOWIPV4TOSPRECEDENCE_CHOICE._serialized_start=110486 + _PATTERNFLOWIPV4TOSPRECEDENCE_CHOICE._serialized_end=110572 + _PATTERNFLOWIPV4TOSPRECEDENCE_CHOICE_ENUM._serialized_start=110496 + _PATTERNFLOWIPV4TOSPRECEDENCE_CHOICE_ENUM._serialized_end=110572 + _PATTERNFLOWIPV4TOSDELAYCOUNTER._serialized_start=128379 + _PATTERNFLOWIPV4TOSDELAYCOUNTER._serialized_end=128499 + _PATTERNFLOWIPV4TOSDELAYMETRICTAG._serialized_start=128501 + _PATTERNFLOWIPV4TOSDELAYMETRICTAG._serialized_end=128627 + _PATTERNFLOWIPV4TOSDELAY._serialized_start=128630 + _PATTERNFLOWIPV4TOSDELAY._serialized_end=129035 + _PATTERNFLOWIPV4TOSDELAY_CHOICE._serialized_start=110486 + _PATTERNFLOWIPV4TOSDELAY_CHOICE._serialized_end=110572 + _PATTERNFLOWIPV4TOSDELAY_CHOICE_ENUM._serialized_start=110496 + _PATTERNFLOWIPV4TOSDELAY_CHOICE_ENUM._serialized_end=110572 + _PATTERNFLOWIPV4TOSTHROUGHPUTCOUNTER._serialized_start=129037 + _PATTERNFLOWIPV4TOSTHROUGHPUTCOUNTER._serialized_end=129162 + _PATTERNFLOWIPV4TOSTHROUGHPUTMETRICTAG._serialized_start=129165 + _PATTERNFLOWIPV4TOSTHROUGHPUTMETRICTAG._serialized_end=129296 + _PATTERNFLOWIPV4TOSTHROUGHPUT._serialized_start=129299 + _PATTERNFLOWIPV4TOSTHROUGHPUT._serialized_end=129729 + _PATTERNFLOWIPV4TOSTHROUGHPUT_CHOICE._serialized_start=110486 + _PATTERNFLOWIPV4TOSTHROUGHPUT_CHOICE._serialized_end=110572 + _PATTERNFLOWIPV4TOSTHROUGHPUT_CHOICE_ENUM._serialized_start=110496 + _PATTERNFLOWIPV4TOSTHROUGHPUT_CHOICE_ENUM._serialized_end=110572 + _PATTERNFLOWIPV4TOSRELIABILITYCOUNTER._serialized_start=129731 + _PATTERNFLOWIPV4TOSRELIABILITYCOUNTER._serialized_end=129857 + _PATTERNFLOWIPV4TOSRELIABILITYMETRICTAG._serialized_start=129860 + _PATTERNFLOWIPV4TOSRELIABILITYMETRICTAG._serialized_end=129992 + _PATTERNFLOWIPV4TOSRELIABILITY._serialized_start=129995 + _PATTERNFLOWIPV4TOSRELIABILITY._serialized_end=130430 + _PATTERNFLOWIPV4TOSRELIABILITY_CHOICE._serialized_start=110486 + _PATTERNFLOWIPV4TOSRELIABILITY_CHOICE._serialized_end=110572 + _PATTERNFLOWIPV4TOSRELIABILITY_CHOICE_ENUM._serialized_start=110496 + _PATTERNFLOWIPV4TOSRELIABILITY_CHOICE_ENUM._serialized_end=110572 + _PATTERNFLOWIPV4TOSMONETARYCOUNTER._serialized_start=130432 + _PATTERNFLOWIPV4TOSMONETARYCOUNTER._serialized_end=130555 + _PATTERNFLOWIPV4TOSMONETARYMETRICTAG._serialized_start=130558 + _PATTERNFLOWIPV4TOSMONETARYMETRICTAG._serialized_end=130687 + _PATTERNFLOWIPV4TOSMONETARY._serialized_start=130690 + _PATTERNFLOWIPV4TOSMONETARY._serialized_end=131110 + _PATTERNFLOWIPV4TOSMONETARY_CHOICE._serialized_start=110486 + _PATTERNFLOWIPV4TOSMONETARY_CHOICE._serialized_end=110572 + _PATTERNFLOWIPV4TOSMONETARY_CHOICE_ENUM._serialized_start=110496 + _PATTERNFLOWIPV4TOSMONETARY_CHOICE_ENUM._serialized_end=110572 + _PATTERNFLOWIPV4TOSUNUSEDCOUNTER._serialized_start=131112 + _PATTERNFLOWIPV4TOSUNUSEDCOUNTER._serialized_end=131233 + _PATTERNFLOWIPV4TOSUNUSEDMETRICTAG._serialized_start=131235 + _PATTERNFLOWIPV4TOSUNUSEDMETRICTAG._serialized_end=131362 + _PATTERNFLOWIPV4TOSUNUSED._serialized_start=131365 + _PATTERNFLOWIPV4TOSUNUSED._serialized_end=131775 + _PATTERNFLOWIPV4TOSUNUSED_CHOICE._serialized_start=110486 + _PATTERNFLOWIPV4TOSUNUSED_CHOICE._serialized_end=110572 + _PATTERNFLOWIPV4TOSUNUSED_CHOICE_ENUM._serialized_start=110496 + _PATTERNFLOWIPV4TOSUNUSED_CHOICE_ENUM._serialized_end=110572 + _PATTERNFLOWIPV6VERSIONCOUNTER._serialized_start=131777 + _PATTERNFLOWIPV6VERSIONCOUNTER._serialized_end=131896 + _PATTERNFLOWIPV6VERSIONMETRICTAG._serialized_start=131898 + _PATTERNFLOWIPV6VERSIONMETRICTAG._serialized_end=132023 + _PATTERNFLOWIPV6VERSION._serialized_start=132026 + _PATTERNFLOWIPV6VERSION._serialized_end=132426 + _PATTERNFLOWIPV6VERSION_CHOICE._serialized_start=110486 + _PATTERNFLOWIPV6VERSION_CHOICE._serialized_end=110572 + _PATTERNFLOWIPV6VERSION_CHOICE_ENUM._serialized_start=110496 + _PATTERNFLOWIPV6VERSION_CHOICE_ENUM._serialized_end=110572 + _PATTERNFLOWIPV6TRAFFICCLASSCOUNTER._serialized_start=132428 + _PATTERNFLOWIPV6TRAFFICCLASSCOUNTER._serialized_end=132552 + _PATTERNFLOWIPV6TRAFFICCLASSMETRICTAG._serialized_start=132555 + _PATTERNFLOWIPV6TRAFFICCLASSMETRICTAG._serialized_end=132685 + _PATTERNFLOWIPV6TRAFFICCLASS._serialized_start=132688 + _PATTERNFLOWIPV6TRAFFICCLASS._serialized_end=133113 + _PATTERNFLOWIPV6TRAFFICCLASS_CHOICE._serialized_start=110486 + _PATTERNFLOWIPV6TRAFFICCLASS_CHOICE._serialized_end=110572 + _PATTERNFLOWIPV6TRAFFICCLASS_CHOICE_ENUM._serialized_start=110496 + _PATTERNFLOWIPV6TRAFFICCLASS_CHOICE_ENUM._serialized_end=110572 + _PATTERNFLOWIPV6FLOWLABELCOUNTER._serialized_start=133115 + _PATTERNFLOWIPV6FLOWLABELCOUNTER._serialized_end=133236 + _PATTERNFLOWIPV6FLOWLABELMETRICTAG._serialized_start=133238 + _PATTERNFLOWIPV6FLOWLABELMETRICTAG._serialized_end=133365 + _PATTERNFLOWIPV6FLOWLABEL._serialized_start=133368 + _PATTERNFLOWIPV6FLOWLABEL._serialized_end=133778 + _PATTERNFLOWIPV6FLOWLABEL_CHOICE._serialized_start=110486 + _PATTERNFLOWIPV6FLOWLABEL_CHOICE._serialized_end=110572 + _PATTERNFLOWIPV6FLOWLABEL_CHOICE_ENUM._serialized_start=110496 + _PATTERNFLOWIPV6FLOWLABEL_CHOICE_ENUM._serialized_end=110572 + _PATTERNFLOWIPV6PAYLOADLENGTHCOUNTER._serialized_start=133780 + _PATTERNFLOWIPV6PAYLOADLENGTHCOUNTER._serialized_end=133905 + _PATTERNFLOWIPV6PAYLOADLENGTHMETRICTAG._serialized_start=133908 + _PATTERNFLOWIPV6PAYLOADLENGTHMETRICTAG._serialized_end=134039 + _PATTERNFLOWIPV6PAYLOADLENGTH._serialized_start=134042 + _PATTERNFLOWIPV6PAYLOADLENGTH._serialized_end=134510 + _PATTERNFLOWIPV6PAYLOADLENGTH_CHOICE._serialized_start=109816 + _PATTERNFLOWIPV6PAYLOADLENGTH_CHOICE._serialized_end=109912 + _PATTERNFLOWIPV6PAYLOADLENGTH_CHOICE_ENUM._serialized_start=109826 + _PATTERNFLOWIPV6PAYLOADLENGTH_CHOICE_ENUM._serialized_end=109912 + _PATTERNFLOWIPV6NEXTHEADERCOUNTER._serialized_start=134512 + _PATTERNFLOWIPV6NEXTHEADERCOUNTER._serialized_end=134634 + _PATTERNFLOWIPV6NEXTHEADERMETRICTAG._serialized_start=134637 + _PATTERNFLOWIPV6NEXTHEADERMETRICTAG._serialized_end=134765 + _PATTERNFLOWIPV6NEXTHEADER._serialized_start=134768 + _PATTERNFLOWIPV6NEXTHEADER._serialized_end=135221 + _PATTERNFLOWIPV6NEXTHEADER_CHOICE._serialized_start=109816 + _PATTERNFLOWIPV6NEXTHEADER_CHOICE._serialized_end=109912 + _PATTERNFLOWIPV6NEXTHEADER_CHOICE_ENUM._serialized_start=109826 + _PATTERNFLOWIPV6NEXTHEADER_CHOICE_ENUM._serialized_end=109912 + _PATTERNFLOWIPV6HOPLIMITCOUNTER._serialized_start=135223 + _PATTERNFLOWIPV6HOPLIMITCOUNTER._serialized_end=135343 + _PATTERNFLOWIPV6HOPLIMITMETRICTAG._serialized_start=135345 + _PATTERNFLOWIPV6HOPLIMITMETRICTAG._serialized_end=135471 + _PATTERNFLOWIPV6HOPLIMIT._serialized_start=135474 + _PATTERNFLOWIPV6HOPLIMIT._serialized_end=135879 + _PATTERNFLOWIPV6HOPLIMIT_CHOICE._serialized_start=110486 + _PATTERNFLOWIPV6HOPLIMIT_CHOICE._serialized_end=110572 + _PATTERNFLOWIPV6HOPLIMIT_CHOICE_ENUM._serialized_start=110496 + _PATTERNFLOWIPV6HOPLIMIT_CHOICE_ENUM._serialized_end=110572 + _PATTERNFLOWIPV6SRCCOUNTER._serialized_start=135881 + _PATTERNFLOWIPV6SRCCOUNTER._serialized_end=135996 + _PATTERNFLOWIPV6SRCMETRICTAG._serialized_start=135998 + _PATTERNFLOWIPV6SRCMETRICTAG._serialized_end=136119 + _PATTERNFLOWIPV6SRC._serialized_start=136122 + _PATTERNFLOWIPV6SRC._serialized_end=136502 + _PATTERNFLOWIPV6SRC_CHOICE._serialized_start=110486 + _PATTERNFLOWIPV6SRC_CHOICE._serialized_end=110572 + _PATTERNFLOWIPV6SRC_CHOICE_ENUM._serialized_start=110496 + _PATTERNFLOWIPV6SRC_CHOICE_ENUM._serialized_end=110572 + _PATTERNFLOWIPV6DSTCOUNTER._serialized_start=136504 + _PATTERNFLOWIPV6DSTCOUNTER._serialized_end=136619 + _PATTERNFLOWIPV6DSTMETRICTAG._serialized_start=136621 + _PATTERNFLOWIPV6DSTMETRICTAG._serialized_end=136742 + _PATTERNFLOWIPV6DST._serialized_start=136745 + _PATTERNFLOWIPV6DST._serialized_end=137125 + _PATTERNFLOWIPV6DST_CHOICE._serialized_start=110486 + _PATTERNFLOWIPV6DST_CHOICE._serialized_end=110572 + _PATTERNFLOWIPV6DST_CHOICE_ENUM._serialized_start=110496 + _PATTERNFLOWIPV6DST_CHOICE_ENUM._serialized_end=110572 + _PATTERNFLOWPFCPAUSEDSTCOUNTER._serialized_start=137127 + _PATTERNFLOWPFCPAUSEDSTCOUNTER._serialized_end=137246 + _PATTERNFLOWPFCPAUSEDSTMETRICTAG._serialized_start=137248 + _PATTERNFLOWPFCPAUSEDSTMETRICTAG._serialized_end=137373 + _PATTERNFLOWPFCPAUSEDST._serialized_start=137376 + _PATTERNFLOWPFCPAUSEDST._serialized_end=137776 + _PATTERNFLOWPFCPAUSEDST_CHOICE._serialized_start=110486 + _PATTERNFLOWPFCPAUSEDST_CHOICE._serialized_end=110572 + _PATTERNFLOWPFCPAUSEDST_CHOICE_ENUM._serialized_start=110496 + _PATTERNFLOWPFCPAUSEDST_CHOICE_ENUM._serialized_end=110572 + _PATTERNFLOWPFCPAUSESRCCOUNTER._serialized_start=137778 + _PATTERNFLOWPFCPAUSESRCCOUNTER._serialized_end=137897 + _PATTERNFLOWPFCPAUSESRCMETRICTAG._serialized_start=137899 + _PATTERNFLOWPFCPAUSESRCMETRICTAG._serialized_end=138024 + _PATTERNFLOWPFCPAUSESRC._serialized_start=138027 + _PATTERNFLOWPFCPAUSESRC._serialized_end=138427 + _PATTERNFLOWPFCPAUSESRC_CHOICE._serialized_start=110486 + _PATTERNFLOWPFCPAUSESRC_CHOICE._serialized_end=110572 + _PATTERNFLOWPFCPAUSESRC_CHOICE_ENUM._serialized_start=110496 + _PATTERNFLOWPFCPAUSESRC_CHOICE_ENUM._serialized_end=110572 + _PATTERNFLOWPFCPAUSEETHERTYPECOUNTER._serialized_start=138429 + _PATTERNFLOWPFCPAUSEETHERTYPECOUNTER._serialized_end=138554 + _PATTERNFLOWPFCPAUSEETHERTYPEMETRICTAG._serialized_start=138557 + _PATTERNFLOWPFCPAUSEETHERTYPEMETRICTAG._serialized_end=138688 + _PATTERNFLOWPFCPAUSEETHERTYPE._serialized_start=138691 + _PATTERNFLOWPFCPAUSEETHERTYPE._serialized_end=139121 + _PATTERNFLOWPFCPAUSEETHERTYPE_CHOICE._serialized_start=110486 + _PATTERNFLOWPFCPAUSEETHERTYPE_CHOICE._serialized_end=110572 + _PATTERNFLOWPFCPAUSEETHERTYPE_CHOICE_ENUM._serialized_start=110496 + _PATTERNFLOWPFCPAUSEETHERTYPE_CHOICE_ENUM._serialized_end=110572 + _PATTERNFLOWPFCPAUSECONTROLOPCODECOUNTER._serialized_start=139124 + _PATTERNFLOWPFCPAUSECONTROLOPCODECOUNTER._serialized_end=139253 + _PATTERNFLOWPFCPAUSECONTROLOPCODEMETRICTAG._serialized_start=139256 + _PATTERNFLOWPFCPAUSECONTROLOPCODEMETRICTAG._serialized_end=139391 + _PATTERNFLOWPFCPAUSECONTROLOPCODE._serialized_start=139394 + _PATTERNFLOWPFCPAUSECONTROLOPCODE._serialized_end=139844 + _PATTERNFLOWPFCPAUSECONTROLOPCODE_CHOICE._serialized_start=110486 + _PATTERNFLOWPFCPAUSECONTROLOPCODE_CHOICE._serialized_end=110572 + _PATTERNFLOWPFCPAUSECONTROLOPCODE_CHOICE_ENUM._serialized_start=110496 + _PATTERNFLOWPFCPAUSECONTROLOPCODE_CHOICE_ENUM._serialized_end=110572 + _PATTERNFLOWPFCPAUSECLASSENABLEVECTORCOUNTER._serialized_start=139847 + _PATTERNFLOWPFCPAUSECLASSENABLEVECTORCOUNTER._serialized_end=139980 + _PATTERNFLOWPFCPAUSECLASSENABLEVECTORMETRICTAG._serialized_start=139983 + _PATTERNFLOWPFCPAUSECLASSENABLEVECTORMETRICTAG._serialized_end=140122 + _PATTERNFLOWPFCPAUSECLASSENABLEVECTOR._serialized_start=140125 + _PATTERNFLOWPFCPAUSECLASSENABLEVECTOR._serialized_end=140595 + _PATTERNFLOWPFCPAUSECLASSENABLEVECTOR_CHOICE._serialized_start=110486 + _PATTERNFLOWPFCPAUSECLASSENABLEVECTOR_CHOICE._serialized_end=110572 + _PATTERNFLOWPFCPAUSECLASSENABLEVECTOR_CHOICE_ENUM._serialized_start=110496 + _PATTERNFLOWPFCPAUSECLASSENABLEVECTOR_CHOICE_ENUM._serialized_end=110572 + _PATTERNFLOWPFCPAUSEPAUSECLASS0COUNTER._serialized_start=140597 + _PATTERNFLOWPFCPAUSEPAUSECLASS0COUNTER._serialized_end=140724 + _PATTERNFLOWPFCPAUSEPAUSECLASS0METRICTAG._serialized_start=140727 + _PATTERNFLOWPFCPAUSEPAUSECLASS0METRICTAG._serialized_end=140860 + _PATTERNFLOWPFCPAUSEPAUSECLASS0._serialized_start=140863 + _PATTERNFLOWPFCPAUSEPAUSECLASS0._serialized_end=141303 + _PATTERNFLOWPFCPAUSEPAUSECLASS0_CHOICE._serialized_start=110486 + _PATTERNFLOWPFCPAUSEPAUSECLASS0_CHOICE._serialized_end=110572 + _PATTERNFLOWPFCPAUSEPAUSECLASS0_CHOICE_ENUM._serialized_start=110496 + _PATTERNFLOWPFCPAUSEPAUSECLASS0_CHOICE_ENUM._serialized_end=110572 + _PATTERNFLOWPFCPAUSEPAUSECLASS1COUNTER._serialized_start=141305 + _PATTERNFLOWPFCPAUSEPAUSECLASS1COUNTER._serialized_end=141432 + _PATTERNFLOWPFCPAUSEPAUSECLASS1METRICTAG._serialized_start=141435 + _PATTERNFLOWPFCPAUSEPAUSECLASS1METRICTAG._serialized_end=141568 + _PATTERNFLOWPFCPAUSEPAUSECLASS1._serialized_start=141571 + _PATTERNFLOWPFCPAUSEPAUSECLASS1._serialized_end=142011 + _PATTERNFLOWPFCPAUSEPAUSECLASS1_CHOICE._serialized_start=110486 + _PATTERNFLOWPFCPAUSEPAUSECLASS1_CHOICE._serialized_end=110572 + _PATTERNFLOWPFCPAUSEPAUSECLASS1_CHOICE_ENUM._serialized_start=110496 + _PATTERNFLOWPFCPAUSEPAUSECLASS1_CHOICE_ENUM._serialized_end=110572 + _PATTERNFLOWPFCPAUSEPAUSECLASS2COUNTER._serialized_start=142013 + _PATTERNFLOWPFCPAUSEPAUSECLASS2COUNTER._serialized_end=142140 + _PATTERNFLOWPFCPAUSEPAUSECLASS2METRICTAG._serialized_start=142143 + _PATTERNFLOWPFCPAUSEPAUSECLASS2METRICTAG._serialized_end=142276 + _PATTERNFLOWPFCPAUSEPAUSECLASS2._serialized_start=142279 + _PATTERNFLOWPFCPAUSEPAUSECLASS2._serialized_end=142719 + _PATTERNFLOWPFCPAUSEPAUSECLASS2_CHOICE._serialized_start=110486 + _PATTERNFLOWPFCPAUSEPAUSECLASS2_CHOICE._serialized_end=110572 + _PATTERNFLOWPFCPAUSEPAUSECLASS2_CHOICE_ENUM._serialized_start=110496 + _PATTERNFLOWPFCPAUSEPAUSECLASS2_CHOICE_ENUM._serialized_end=110572 + _PATTERNFLOWPFCPAUSEPAUSECLASS3COUNTER._serialized_start=142721 + _PATTERNFLOWPFCPAUSEPAUSECLASS3COUNTER._serialized_end=142848 + _PATTERNFLOWPFCPAUSEPAUSECLASS3METRICTAG._serialized_start=142851 + _PATTERNFLOWPFCPAUSEPAUSECLASS3METRICTAG._serialized_end=142984 + _PATTERNFLOWPFCPAUSEPAUSECLASS3._serialized_start=142987 + _PATTERNFLOWPFCPAUSEPAUSECLASS3._serialized_end=143427 + _PATTERNFLOWPFCPAUSEPAUSECLASS3_CHOICE._serialized_start=110486 + _PATTERNFLOWPFCPAUSEPAUSECLASS3_CHOICE._serialized_end=110572 + _PATTERNFLOWPFCPAUSEPAUSECLASS3_CHOICE_ENUM._serialized_start=110496 + _PATTERNFLOWPFCPAUSEPAUSECLASS3_CHOICE_ENUM._serialized_end=110572 + _PATTERNFLOWPFCPAUSEPAUSECLASS4COUNTER._serialized_start=143429 + _PATTERNFLOWPFCPAUSEPAUSECLASS4COUNTER._serialized_end=143556 + _PATTERNFLOWPFCPAUSEPAUSECLASS4METRICTAG._serialized_start=143559 + _PATTERNFLOWPFCPAUSEPAUSECLASS4METRICTAG._serialized_end=143692 + _PATTERNFLOWPFCPAUSEPAUSECLASS4._serialized_start=143695 + _PATTERNFLOWPFCPAUSEPAUSECLASS4._serialized_end=144135 + _PATTERNFLOWPFCPAUSEPAUSECLASS4_CHOICE._serialized_start=110486 + _PATTERNFLOWPFCPAUSEPAUSECLASS4_CHOICE._serialized_end=110572 + _PATTERNFLOWPFCPAUSEPAUSECLASS4_CHOICE_ENUM._serialized_start=110496 + _PATTERNFLOWPFCPAUSEPAUSECLASS4_CHOICE_ENUM._serialized_end=110572 + _PATTERNFLOWPFCPAUSEPAUSECLASS5COUNTER._serialized_start=144137 + _PATTERNFLOWPFCPAUSEPAUSECLASS5COUNTER._serialized_end=144264 + _PATTERNFLOWPFCPAUSEPAUSECLASS5METRICTAG._serialized_start=144267 + _PATTERNFLOWPFCPAUSEPAUSECLASS5METRICTAG._serialized_end=144400 + _PATTERNFLOWPFCPAUSEPAUSECLASS5._serialized_start=144403 + _PATTERNFLOWPFCPAUSEPAUSECLASS5._serialized_end=144843 + _PATTERNFLOWPFCPAUSEPAUSECLASS5_CHOICE._serialized_start=110486 + _PATTERNFLOWPFCPAUSEPAUSECLASS5_CHOICE._serialized_end=110572 + _PATTERNFLOWPFCPAUSEPAUSECLASS5_CHOICE_ENUM._serialized_start=110496 + _PATTERNFLOWPFCPAUSEPAUSECLASS5_CHOICE_ENUM._serialized_end=110572 + _PATTERNFLOWPFCPAUSEPAUSECLASS6COUNTER._serialized_start=144845 + _PATTERNFLOWPFCPAUSEPAUSECLASS6COUNTER._serialized_end=144972 + _PATTERNFLOWPFCPAUSEPAUSECLASS6METRICTAG._serialized_start=144975 + _PATTERNFLOWPFCPAUSEPAUSECLASS6METRICTAG._serialized_end=145108 + _PATTERNFLOWPFCPAUSEPAUSECLASS6._serialized_start=145111 + _PATTERNFLOWPFCPAUSEPAUSECLASS6._serialized_end=145551 + _PATTERNFLOWPFCPAUSEPAUSECLASS6_CHOICE._serialized_start=110486 + _PATTERNFLOWPFCPAUSEPAUSECLASS6_CHOICE._serialized_end=110572 + _PATTERNFLOWPFCPAUSEPAUSECLASS6_CHOICE_ENUM._serialized_start=110496 + _PATTERNFLOWPFCPAUSEPAUSECLASS6_CHOICE_ENUM._serialized_end=110572 + _PATTERNFLOWPFCPAUSEPAUSECLASS7COUNTER._serialized_start=145553 + _PATTERNFLOWPFCPAUSEPAUSECLASS7COUNTER._serialized_end=145680 + _PATTERNFLOWPFCPAUSEPAUSECLASS7METRICTAG._serialized_start=145683 + _PATTERNFLOWPFCPAUSEPAUSECLASS7METRICTAG._serialized_end=145816 + _PATTERNFLOWPFCPAUSEPAUSECLASS7._serialized_start=145819 + _PATTERNFLOWPFCPAUSEPAUSECLASS7._serialized_end=146259 + _PATTERNFLOWPFCPAUSEPAUSECLASS7_CHOICE._serialized_start=110486 + _PATTERNFLOWPFCPAUSEPAUSECLASS7_CHOICE._serialized_end=110572 + _PATTERNFLOWPFCPAUSEPAUSECLASS7_CHOICE_ENUM._serialized_start=110496 + _PATTERNFLOWPFCPAUSEPAUSECLASS7_CHOICE_ENUM._serialized_end=110572 + _PATTERNFLOWETHERNETPAUSEDSTCOUNTER._serialized_start=146261 + _PATTERNFLOWETHERNETPAUSEDSTCOUNTER._serialized_end=146385 + _PATTERNFLOWETHERNETPAUSEDSTMETRICTAG._serialized_start=146388 + _PATTERNFLOWETHERNETPAUSEDSTMETRICTAG._serialized_end=146518 + _PATTERNFLOWETHERNETPAUSEDST._serialized_start=146521 + _PATTERNFLOWETHERNETPAUSEDST._serialized_end=146946 + _PATTERNFLOWETHERNETPAUSEDST_CHOICE._serialized_start=110486 + _PATTERNFLOWETHERNETPAUSEDST_CHOICE._serialized_end=110572 + _PATTERNFLOWETHERNETPAUSEDST_CHOICE_ENUM._serialized_start=110496 + _PATTERNFLOWETHERNETPAUSEDST_CHOICE_ENUM._serialized_end=110572 + _PATTERNFLOWETHERNETPAUSESRCCOUNTER._serialized_start=146948 + _PATTERNFLOWETHERNETPAUSESRCCOUNTER._serialized_end=147072 + _PATTERNFLOWETHERNETPAUSESRCMETRICTAG._serialized_start=147075 + _PATTERNFLOWETHERNETPAUSESRCMETRICTAG._serialized_end=147205 + _PATTERNFLOWETHERNETPAUSESRC._serialized_start=147208 + _PATTERNFLOWETHERNETPAUSESRC._serialized_end=147633 + _PATTERNFLOWETHERNETPAUSESRC_CHOICE._serialized_start=110486 + _PATTERNFLOWETHERNETPAUSESRC_CHOICE._serialized_end=110572 + _PATTERNFLOWETHERNETPAUSESRC_CHOICE_ENUM._serialized_start=110496 + _PATTERNFLOWETHERNETPAUSESRC_CHOICE_ENUM._serialized_end=110572 + _PATTERNFLOWETHERNETPAUSEETHERTYPECOUNTER._serialized_start=147636 + _PATTERNFLOWETHERNETPAUSEETHERTYPECOUNTER._serialized_end=147766 + _PATTERNFLOWETHERNETPAUSEETHERTYPEMETRICTAG._serialized_start=147769 + _PATTERNFLOWETHERNETPAUSEETHERTYPEMETRICTAG._serialized_end=147905 + _PATTERNFLOWETHERNETPAUSEETHERTYPE._serialized_start=147908 + _PATTERNFLOWETHERNETPAUSEETHERTYPE._serialized_end=148363 + _PATTERNFLOWETHERNETPAUSEETHERTYPE_CHOICE._serialized_start=110486 + _PATTERNFLOWETHERNETPAUSEETHERTYPE_CHOICE._serialized_end=110572 + _PATTERNFLOWETHERNETPAUSEETHERTYPE_CHOICE_ENUM._serialized_start=110496 + _PATTERNFLOWETHERNETPAUSEETHERTYPE_CHOICE_ENUM._serialized_end=110572 + _PATTERNFLOWETHERNETPAUSECONTROLOPCODECOUNTER._serialized_start=148366 + _PATTERNFLOWETHERNETPAUSECONTROLOPCODECOUNTER._serialized_end=148500 + _PATTERNFLOWETHERNETPAUSECONTROLOPCODEMETRICTAG._serialized_start=148503 + _PATTERNFLOWETHERNETPAUSECONTROLOPCODEMETRICTAG._serialized_end=148643 + _PATTERNFLOWETHERNETPAUSECONTROLOPCODE._serialized_start=148646 + _PATTERNFLOWETHERNETPAUSECONTROLOPCODE._serialized_end=149121 + _PATTERNFLOWETHERNETPAUSECONTROLOPCODE_CHOICE._serialized_start=110486 + _PATTERNFLOWETHERNETPAUSECONTROLOPCODE_CHOICE._serialized_end=110572 + _PATTERNFLOWETHERNETPAUSECONTROLOPCODE_CHOICE_ENUM._serialized_start=110496 + _PATTERNFLOWETHERNETPAUSECONTROLOPCODE_CHOICE_ENUM._serialized_end=110572 + _PATTERNFLOWETHERNETPAUSETIMECOUNTER._serialized_start=149123 + _PATTERNFLOWETHERNETPAUSETIMECOUNTER._serialized_end=149248 + _PATTERNFLOWETHERNETPAUSETIMEMETRICTAG._serialized_start=149251 + _PATTERNFLOWETHERNETPAUSETIMEMETRICTAG._serialized_end=149382 + _PATTERNFLOWETHERNETPAUSETIME._serialized_start=149385 + _PATTERNFLOWETHERNETPAUSETIME._serialized_end=149815 + _PATTERNFLOWETHERNETPAUSETIME_CHOICE._serialized_start=110486 + _PATTERNFLOWETHERNETPAUSETIME_CHOICE._serialized_end=110572 + _PATTERNFLOWETHERNETPAUSETIME_CHOICE_ENUM._serialized_start=110496 + _PATTERNFLOWETHERNETPAUSETIME_CHOICE_ENUM._serialized_end=110572 + _PATTERNFLOWTCPSRCPORTCOUNTER._serialized_start=149817 + _PATTERNFLOWTCPSRCPORTCOUNTER._serialized_end=149935 + _PATTERNFLOWTCPSRCPORTMETRICTAG._serialized_start=149937 + _PATTERNFLOWTCPSRCPORTMETRICTAG._serialized_end=150061 + _PATTERNFLOWTCPSRCPORT._serialized_start=150064 + _PATTERNFLOWTCPSRCPORT._serialized_end=150459 + _PATTERNFLOWTCPSRCPORT_CHOICE._serialized_start=110486 + _PATTERNFLOWTCPSRCPORT_CHOICE._serialized_end=110572 + _PATTERNFLOWTCPSRCPORT_CHOICE_ENUM._serialized_start=110496 + _PATTERNFLOWTCPSRCPORT_CHOICE_ENUM._serialized_end=110572 + _PATTERNFLOWTCPDSTPORTCOUNTER._serialized_start=150461 + _PATTERNFLOWTCPDSTPORTCOUNTER._serialized_end=150579 + _PATTERNFLOWTCPDSTPORTMETRICTAG._serialized_start=150581 + _PATTERNFLOWTCPDSTPORTMETRICTAG._serialized_end=150705 + _PATTERNFLOWTCPDSTPORT._serialized_start=150708 + _PATTERNFLOWTCPDSTPORT._serialized_end=151103 + _PATTERNFLOWTCPDSTPORT_CHOICE._serialized_start=110486 + _PATTERNFLOWTCPDSTPORT_CHOICE._serialized_end=110572 + _PATTERNFLOWTCPDSTPORT_CHOICE_ENUM._serialized_start=110496 + _PATTERNFLOWTCPDSTPORT_CHOICE_ENUM._serialized_end=110572 + _PATTERNFLOWTCPSEQNUMCOUNTER._serialized_start=151105 + _PATTERNFLOWTCPSEQNUMCOUNTER._serialized_end=151222 + _PATTERNFLOWTCPSEQNUMMETRICTAG._serialized_start=151224 + _PATTERNFLOWTCPSEQNUMMETRICTAG._serialized_end=151347 + _PATTERNFLOWTCPSEQNUM._serialized_start=151350 + _PATTERNFLOWTCPSEQNUM._serialized_end=151740 + _PATTERNFLOWTCPSEQNUM_CHOICE._serialized_start=110486 + _PATTERNFLOWTCPSEQNUM_CHOICE._serialized_end=110572 + _PATTERNFLOWTCPSEQNUM_CHOICE_ENUM._serialized_start=110496 + _PATTERNFLOWTCPSEQNUM_CHOICE_ENUM._serialized_end=110572 + _PATTERNFLOWTCPACKNUMCOUNTER._serialized_start=151742 + _PATTERNFLOWTCPACKNUMCOUNTER._serialized_end=151859 + _PATTERNFLOWTCPACKNUMMETRICTAG._serialized_start=151861 + _PATTERNFLOWTCPACKNUMMETRICTAG._serialized_end=151984 + _PATTERNFLOWTCPACKNUM._serialized_start=151987 + _PATTERNFLOWTCPACKNUM._serialized_end=152377 + _PATTERNFLOWTCPACKNUM_CHOICE._serialized_start=110486 + _PATTERNFLOWTCPACKNUM_CHOICE._serialized_end=110572 + _PATTERNFLOWTCPACKNUM_CHOICE_ENUM._serialized_start=110496 + _PATTERNFLOWTCPACKNUM_CHOICE_ENUM._serialized_end=110572 + _PATTERNFLOWTCPDATAOFFSETCOUNTER._serialized_start=152379 + _PATTERNFLOWTCPDATAOFFSETCOUNTER._serialized_end=152500 + _PATTERNFLOWTCPDATAOFFSETMETRICTAG._serialized_start=152502 + _PATTERNFLOWTCPDATAOFFSETMETRICTAG._serialized_end=152629 + _PATTERNFLOWTCPDATAOFFSET._serialized_start=152632 + _PATTERNFLOWTCPDATAOFFSET._serialized_end=153042 + _PATTERNFLOWTCPDATAOFFSET_CHOICE._serialized_start=110486 + _PATTERNFLOWTCPDATAOFFSET_CHOICE._serialized_end=110572 + _PATTERNFLOWTCPDATAOFFSET_CHOICE_ENUM._serialized_start=110496 + _PATTERNFLOWTCPDATAOFFSET_CHOICE_ENUM._serialized_end=110572 + _PATTERNFLOWTCPECNNSCOUNTER._serialized_start=153044 + _PATTERNFLOWTCPECNNSCOUNTER._serialized_end=153160 + _PATTERNFLOWTCPECNNSMETRICTAG._serialized_start=153162 + _PATTERNFLOWTCPECNNSMETRICTAG._serialized_end=153284 + _PATTERNFLOWTCPECNNS._serialized_start=153287 + _PATTERNFLOWTCPECNNS._serialized_end=153672 + _PATTERNFLOWTCPECNNS_CHOICE._serialized_start=110486 + _PATTERNFLOWTCPECNNS_CHOICE._serialized_end=110572 + _PATTERNFLOWTCPECNNS_CHOICE_ENUM._serialized_start=110496 + _PATTERNFLOWTCPECNNS_CHOICE_ENUM._serialized_end=110572 + _PATTERNFLOWTCPECNCWRCOUNTER._serialized_start=153674 + _PATTERNFLOWTCPECNCWRCOUNTER._serialized_end=153791 + _PATTERNFLOWTCPECNCWRMETRICTAG._serialized_start=153793 + _PATTERNFLOWTCPECNCWRMETRICTAG._serialized_end=153916 + _PATTERNFLOWTCPECNCWR._serialized_start=153919 + _PATTERNFLOWTCPECNCWR._serialized_end=154309 + _PATTERNFLOWTCPECNCWR_CHOICE._serialized_start=110486 + _PATTERNFLOWTCPECNCWR_CHOICE._serialized_end=110572 + _PATTERNFLOWTCPECNCWR_CHOICE_ENUM._serialized_start=110496 + _PATTERNFLOWTCPECNCWR_CHOICE_ENUM._serialized_end=110572 + _PATTERNFLOWTCPECNECHOCOUNTER._serialized_start=154311 + _PATTERNFLOWTCPECNECHOCOUNTER._serialized_end=154429 + _PATTERNFLOWTCPECNECHOMETRICTAG._serialized_start=154431 + _PATTERNFLOWTCPECNECHOMETRICTAG._serialized_end=154555 + _PATTERNFLOWTCPECNECHO._serialized_start=154558 + _PATTERNFLOWTCPECNECHO._serialized_end=154953 + _PATTERNFLOWTCPECNECHO_CHOICE._serialized_start=110486 + _PATTERNFLOWTCPECNECHO_CHOICE._serialized_end=110572 + _PATTERNFLOWTCPECNECHO_CHOICE_ENUM._serialized_start=110496 + _PATTERNFLOWTCPECNECHO_CHOICE_ENUM._serialized_end=110572 + _PATTERNFLOWTCPCTLURGCOUNTER._serialized_start=154955 + _PATTERNFLOWTCPCTLURGCOUNTER._serialized_end=155072 + _PATTERNFLOWTCPCTLURGMETRICTAG._serialized_start=155074 + _PATTERNFLOWTCPCTLURGMETRICTAG._serialized_end=155197 + _PATTERNFLOWTCPCTLURG._serialized_start=155200 + _PATTERNFLOWTCPCTLURG._serialized_end=155590 + _PATTERNFLOWTCPCTLURG_CHOICE._serialized_start=110486 + _PATTERNFLOWTCPCTLURG_CHOICE._serialized_end=110572 + _PATTERNFLOWTCPCTLURG_CHOICE_ENUM._serialized_start=110496 + _PATTERNFLOWTCPCTLURG_CHOICE_ENUM._serialized_end=110572 + _PATTERNFLOWTCPCTLACKCOUNTER._serialized_start=155592 + _PATTERNFLOWTCPCTLACKCOUNTER._serialized_end=155709 + _PATTERNFLOWTCPCTLACKMETRICTAG._serialized_start=155711 + _PATTERNFLOWTCPCTLACKMETRICTAG._serialized_end=155834 + _PATTERNFLOWTCPCTLACK._serialized_start=155837 + _PATTERNFLOWTCPCTLACK._serialized_end=156227 + _PATTERNFLOWTCPCTLACK_CHOICE._serialized_start=110486 + _PATTERNFLOWTCPCTLACK_CHOICE._serialized_end=110572 + _PATTERNFLOWTCPCTLACK_CHOICE_ENUM._serialized_start=110496 + _PATTERNFLOWTCPCTLACK_CHOICE_ENUM._serialized_end=110572 + _PATTERNFLOWTCPCTLPSHCOUNTER._serialized_start=156229 + _PATTERNFLOWTCPCTLPSHCOUNTER._serialized_end=156346 + _PATTERNFLOWTCPCTLPSHMETRICTAG._serialized_start=156348 + _PATTERNFLOWTCPCTLPSHMETRICTAG._serialized_end=156471 + _PATTERNFLOWTCPCTLPSH._serialized_start=156474 + _PATTERNFLOWTCPCTLPSH._serialized_end=156864 + _PATTERNFLOWTCPCTLPSH_CHOICE._serialized_start=110486 + _PATTERNFLOWTCPCTLPSH_CHOICE._serialized_end=110572 + _PATTERNFLOWTCPCTLPSH_CHOICE_ENUM._serialized_start=110496 + _PATTERNFLOWTCPCTLPSH_CHOICE_ENUM._serialized_end=110572 + _PATTERNFLOWTCPCTLRSTCOUNTER._serialized_start=156866 + _PATTERNFLOWTCPCTLRSTCOUNTER._serialized_end=156983 + _PATTERNFLOWTCPCTLRSTMETRICTAG._serialized_start=156985 + _PATTERNFLOWTCPCTLRSTMETRICTAG._serialized_end=157108 + _PATTERNFLOWTCPCTLRST._serialized_start=157111 + _PATTERNFLOWTCPCTLRST._serialized_end=157501 + _PATTERNFLOWTCPCTLRST_CHOICE._serialized_start=110486 + _PATTERNFLOWTCPCTLRST_CHOICE._serialized_end=110572 + _PATTERNFLOWTCPCTLRST_CHOICE_ENUM._serialized_start=110496 + _PATTERNFLOWTCPCTLRST_CHOICE_ENUM._serialized_end=110572 + _PATTERNFLOWTCPCTLSYNCOUNTER._serialized_start=157503 + _PATTERNFLOWTCPCTLSYNCOUNTER._serialized_end=157620 + _PATTERNFLOWTCPCTLSYNMETRICTAG._serialized_start=157622 + _PATTERNFLOWTCPCTLSYNMETRICTAG._serialized_end=157745 + _PATTERNFLOWTCPCTLSYN._serialized_start=157748 + _PATTERNFLOWTCPCTLSYN._serialized_end=158138 + _PATTERNFLOWTCPCTLSYN_CHOICE._serialized_start=110486 + _PATTERNFLOWTCPCTLSYN_CHOICE._serialized_end=110572 + _PATTERNFLOWTCPCTLSYN_CHOICE_ENUM._serialized_start=110496 + _PATTERNFLOWTCPCTLSYN_CHOICE_ENUM._serialized_end=110572 + _PATTERNFLOWTCPCTLFINCOUNTER._serialized_start=158140 + _PATTERNFLOWTCPCTLFINCOUNTER._serialized_end=158257 + _PATTERNFLOWTCPCTLFINMETRICTAG._serialized_start=158259 + _PATTERNFLOWTCPCTLFINMETRICTAG._serialized_end=158382 + _PATTERNFLOWTCPCTLFIN._serialized_start=158385 + _PATTERNFLOWTCPCTLFIN._serialized_end=158775 + _PATTERNFLOWTCPCTLFIN_CHOICE._serialized_start=110486 + _PATTERNFLOWTCPCTLFIN_CHOICE._serialized_end=110572 + _PATTERNFLOWTCPCTLFIN_CHOICE_ENUM._serialized_start=110496 + _PATTERNFLOWTCPCTLFIN_CHOICE_ENUM._serialized_end=110572 + _PATTERNFLOWTCPWINDOWCOUNTER._serialized_start=158777 + _PATTERNFLOWTCPWINDOWCOUNTER._serialized_end=158894 + _PATTERNFLOWTCPWINDOWMETRICTAG._serialized_start=158896 + _PATTERNFLOWTCPWINDOWMETRICTAG._serialized_end=159019 + _PATTERNFLOWTCPWINDOW._serialized_start=159022 + _PATTERNFLOWTCPWINDOW._serialized_end=159412 + _PATTERNFLOWTCPWINDOW_CHOICE._serialized_start=110486 + _PATTERNFLOWTCPWINDOW_CHOICE._serialized_end=110572 + _PATTERNFLOWTCPWINDOW_CHOICE_ENUM._serialized_start=110496 + _PATTERNFLOWTCPWINDOW_CHOICE_ENUM._serialized_end=110572 + _PATTERNFLOWUDPSRCPORTCOUNTER._serialized_start=159414 + _PATTERNFLOWUDPSRCPORTCOUNTER._serialized_end=159532 + _PATTERNFLOWUDPSRCPORTMETRICTAG._serialized_start=159534 + _PATTERNFLOWUDPSRCPORTMETRICTAG._serialized_end=159658 + _PATTERNFLOWUDPSRCPORT._serialized_start=159661 + _PATTERNFLOWUDPSRCPORT._serialized_end=160056 + _PATTERNFLOWUDPSRCPORT_CHOICE._serialized_start=110486 + _PATTERNFLOWUDPSRCPORT_CHOICE._serialized_end=110572 + _PATTERNFLOWUDPSRCPORT_CHOICE_ENUM._serialized_start=110496 + _PATTERNFLOWUDPSRCPORT_CHOICE_ENUM._serialized_end=110572 + _PATTERNFLOWUDPDSTPORTCOUNTER._serialized_start=160058 + _PATTERNFLOWUDPDSTPORTCOUNTER._serialized_end=160176 + _PATTERNFLOWUDPDSTPORTMETRICTAG._serialized_start=160178 + _PATTERNFLOWUDPDSTPORTMETRICTAG._serialized_end=160302 + _PATTERNFLOWUDPDSTPORT._serialized_start=160305 + _PATTERNFLOWUDPDSTPORT._serialized_end=160700 + _PATTERNFLOWUDPDSTPORT_CHOICE._serialized_start=110486 + _PATTERNFLOWUDPDSTPORT_CHOICE._serialized_end=110572 + _PATTERNFLOWUDPDSTPORT_CHOICE_ENUM._serialized_start=110496 + _PATTERNFLOWUDPDSTPORT_CHOICE_ENUM._serialized_end=110572 + _PATTERNFLOWUDPLENGTHCOUNTER._serialized_start=160702 + _PATTERNFLOWUDPLENGTHCOUNTER._serialized_end=160819 + _PATTERNFLOWUDPLENGTHMETRICTAG._serialized_start=160821 + _PATTERNFLOWUDPLENGTHMETRICTAG._serialized_end=160944 + _PATTERNFLOWUDPLENGTH._serialized_start=160947 + _PATTERNFLOWUDPLENGTH._serialized_end=161337 + _PATTERNFLOWUDPLENGTH_CHOICE._serialized_start=110486 + _PATTERNFLOWUDPLENGTH_CHOICE._serialized_end=110572 + _PATTERNFLOWUDPLENGTH_CHOICE_ENUM._serialized_start=110496 + _PATTERNFLOWUDPLENGTH_CHOICE_ENUM._serialized_end=110572 + _PATTERNFLOWUDPCHECKSUM._serialized_start=161340 + _PATTERNFLOWUDPCHECKSUM._serialized_end=161670 + _PATTERNFLOWUDPCHECKSUM_CHOICE._serialized_start=124302 + _PATTERNFLOWUDPCHECKSUM_CHOICE._serialized_end=124362 + _PATTERNFLOWUDPCHECKSUM_CHOICE_ENUM._serialized_start=124312 + _PATTERNFLOWUDPCHECKSUM_CHOICE_ENUM._serialized_end=124362 + _PATTERNFLOWUDPCHECKSUM_GENERATED._serialized_start=124364 + _PATTERNFLOWUDPCHECKSUM_GENERATED._serialized_end=124419 + _PATTERNFLOWUDPCHECKSUM_GENERATED_ENUM._serialized_start=124377 + _PATTERNFLOWUDPCHECKSUM_GENERATED_ENUM._serialized_end=124419 + _PATTERNFLOWGRECHECKSUMPRESENTCOUNTER._serialized_start=161672 + _PATTERNFLOWGRECHECKSUMPRESENTCOUNTER._serialized_end=161798 + _PATTERNFLOWGRECHECKSUMPRESENTMETRICTAG._serialized_start=161801 + _PATTERNFLOWGRECHECKSUMPRESENTMETRICTAG._serialized_end=161933 + _PATTERNFLOWGRECHECKSUMPRESENT._serialized_start=161936 + _PATTERNFLOWGRECHECKSUMPRESENT._serialized_end=162371 + _PATTERNFLOWGRECHECKSUMPRESENT_CHOICE._serialized_start=110486 + _PATTERNFLOWGRECHECKSUMPRESENT_CHOICE._serialized_end=110572 + _PATTERNFLOWGRECHECKSUMPRESENT_CHOICE_ENUM._serialized_start=110496 + _PATTERNFLOWGRECHECKSUMPRESENT_CHOICE_ENUM._serialized_end=110572 + _PATTERNFLOWGRERESERVED0COUNTER._serialized_start=162373 + _PATTERNFLOWGRERESERVED0COUNTER._serialized_end=162493 + _PATTERNFLOWGRERESERVED0METRICTAG._serialized_start=162495 + _PATTERNFLOWGRERESERVED0METRICTAG._serialized_end=162621 + _PATTERNFLOWGRERESERVED0._serialized_start=162624 + _PATTERNFLOWGRERESERVED0._serialized_end=163029 + _PATTERNFLOWGRERESERVED0_CHOICE._serialized_start=110486 + _PATTERNFLOWGRERESERVED0_CHOICE._serialized_end=110572 + _PATTERNFLOWGRERESERVED0_CHOICE_ENUM._serialized_start=110496 + _PATTERNFLOWGRERESERVED0_CHOICE_ENUM._serialized_end=110572 + _PATTERNFLOWGREVERSIONCOUNTER._serialized_start=163031 + _PATTERNFLOWGREVERSIONCOUNTER._serialized_end=163149 + _PATTERNFLOWGREVERSIONMETRICTAG._serialized_start=163151 + _PATTERNFLOWGREVERSIONMETRICTAG._serialized_end=163275 + _PATTERNFLOWGREVERSION._serialized_start=163278 + _PATTERNFLOWGREVERSION._serialized_end=163673 + _PATTERNFLOWGREVERSION_CHOICE._serialized_start=110486 + _PATTERNFLOWGREVERSION_CHOICE._serialized_end=110572 + _PATTERNFLOWGREVERSION_CHOICE_ENUM._serialized_start=110496 + _PATTERNFLOWGREVERSION_CHOICE_ENUM._serialized_end=110572 + _PATTERNFLOWGREPROTOCOLCOUNTER._serialized_start=163675 + _PATTERNFLOWGREPROTOCOLCOUNTER._serialized_end=163794 + _PATTERNFLOWGREPROTOCOLMETRICTAG._serialized_start=163796 + _PATTERNFLOWGREPROTOCOLMETRICTAG._serialized_end=163921 + _PATTERNFLOWGREPROTOCOL._serialized_start=163924 + _PATTERNFLOWGREPROTOCOL._serialized_end=164324 + _PATTERNFLOWGREPROTOCOL_CHOICE._serialized_start=110486 + _PATTERNFLOWGREPROTOCOL_CHOICE._serialized_end=110572 + _PATTERNFLOWGREPROTOCOL_CHOICE_ENUM._serialized_start=110496 + _PATTERNFLOWGREPROTOCOL_CHOICE_ENUM._serialized_end=110572 + _PATTERNFLOWGRECHECKSUM._serialized_start=164327 + _PATTERNFLOWGRECHECKSUM._serialized_end=164657 + _PATTERNFLOWGRECHECKSUM_CHOICE._serialized_start=124302 + _PATTERNFLOWGRECHECKSUM_CHOICE._serialized_end=124362 + _PATTERNFLOWGRECHECKSUM_CHOICE_ENUM._serialized_start=124312 + _PATTERNFLOWGRECHECKSUM_CHOICE_ENUM._serialized_end=124362 + _PATTERNFLOWGRECHECKSUM_GENERATED._serialized_start=124364 + _PATTERNFLOWGRECHECKSUM_GENERATED._serialized_end=124419 + _PATTERNFLOWGRECHECKSUM_GENERATED_ENUM._serialized_start=124377 + _PATTERNFLOWGRECHECKSUM_GENERATED_ENUM._serialized_end=124419 + _PATTERNFLOWGRERESERVED1COUNTER._serialized_start=164659 + _PATTERNFLOWGRERESERVED1COUNTER._serialized_end=164779 + _PATTERNFLOWGRERESERVED1METRICTAG._serialized_start=164781 + _PATTERNFLOWGRERESERVED1METRICTAG._serialized_end=164907 + _PATTERNFLOWGRERESERVED1._serialized_start=164910 + _PATTERNFLOWGRERESERVED1._serialized_end=165315 + _PATTERNFLOWGRERESERVED1_CHOICE._serialized_start=110486 + _PATTERNFLOWGRERESERVED1_CHOICE._serialized_end=110572 + _PATTERNFLOWGRERESERVED1_CHOICE_ENUM._serialized_start=110496 + _PATTERNFLOWGRERESERVED1_CHOICE_ENUM._serialized_end=110572 + _PATTERNFLOWGTPV1VERSIONCOUNTER._serialized_start=165317 + _PATTERNFLOWGTPV1VERSIONCOUNTER._serialized_end=165437 + _PATTERNFLOWGTPV1VERSIONMETRICTAG._serialized_start=165439 + _PATTERNFLOWGTPV1VERSIONMETRICTAG._serialized_end=165565 + _PATTERNFLOWGTPV1VERSION._serialized_start=165568 + _PATTERNFLOWGTPV1VERSION._serialized_end=165973 + _PATTERNFLOWGTPV1VERSION_CHOICE._serialized_start=110486 + _PATTERNFLOWGTPV1VERSION_CHOICE._serialized_end=110572 + _PATTERNFLOWGTPV1VERSION_CHOICE_ENUM._serialized_start=110496 + _PATTERNFLOWGTPV1VERSION_CHOICE_ENUM._serialized_end=110572 + _PATTERNFLOWGTPV1PROTOCOLTYPECOUNTER._serialized_start=165975 + _PATTERNFLOWGTPV1PROTOCOLTYPECOUNTER._serialized_end=166100 + _PATTERNFLOWGTPV1PROTOCOLTYPEMETRICTAG._serialized_start=166103 + _PATTERNFLOWGTPV1PROTOCOLTYPEMETRICTAG._serialized_end=166234 + _PATTERNFLOWGTPV1PROTOCOLTYPE._serialized_start=166237 + _PATTERNFLOWGTPV1PROTOCOLTYPE._serialized_end=166667 + _PATTERNFLOWGTPV1PROTOCOLTYPE_CHOICE._serialized_start=110486 + _PATTERNFLOWGTPV1PROTOCOLTYPE_CHOICE._serialized_end=110572 + _PATTERNFLOWGTPV1PROTOCOLTYPE_CHOICE_ENUM._serialized_start=110496 + _PATTERNFLOWGTPV1PROTOCOLTYPE_CHOICE_ENUM._serialized_end=110572 + _PATTERNFLOWGTPV1RESERVEDCOUNTER._serialized_start=166669 + _PATTERNFLOWGTPV1RESERVEDCOUNTER._serialized_end=166790 + _PATTERNFLOWGTPV1RESERVEDMETRICTAG._serialized_start=166792 + _PATTERNFLOWGTPV1RESERVEDMETRICTAG._serialized_end=166919 + _PATTERNFLOWGTPV1RESERVED._serialized_start=166922 + _PATTERNFLOWGTPV1RESERVED._serialized_end=167332 + _PATTERNFLOWGTPV1RESERVED_CHOICE._serialized_start=110486 + _PATTERNFLOWGTPV1RESERVED_CHOICE._serialized_end=110572 + _PATTERNFLOWGTPV1RESERVED_CHOICE_ENUM._serialized_start=110496 + _PATTERNFLOWGTPV1RESERVED_CHOICE_ENUM._serialized_end=110572 + _PATTERNFLOWGTPV1EFLAGCOUNTER._serialized_start=167334 + _PATTERNFLOWGTPV1EFLAGCOUNTER._serialized_end=167452 + _PATTERNFLOWGTPV1EFLAGMETRICTAG._serialized_start=167454 + _PATTERNFLOWGTPV1EFLAGMETRICTAG._serialized_end=167578 + _PATTERNFLOWGTPV1EFLAG._serialized_start=167581 + _PATTERNFLOWGTPV1EFLAG._serialized_end=167976 + _PATTERNFLOWGTPV1EFLAG_CHOICE._serialized_start=110486 + _PATTERNFLOWGTPV1EFLAG_CHOICE._serialized_end=110572 + _PATTERNFLOWGTPV1EFLAG_CHOICE_ENUM._serialized_start=110496 + _PATTERNFLOWGTPV1EFLAG_CHOICE_ENUM._serialized_end=110572 + _PATTERNFLOWGTPV1SFLAGCOUNTER._serialized_start=167978 + _PATTERNFLOWGTPV1SFLAGCOUNTER._serialized_end=168096 + _PATTERNFLOWGTPV1SFLAGMETRICTAG._serialized_start=168098 + _PATTERNFLOWGTPV1SFLAGMETRICTAG._serialized_end=168222 + _PATTERNFLOWGTPV1SFLAG._serialized_start=168225 + _PATTERNFLOWGTPV1SFLAG._serialized_end=168620 + _PATTERNFLOWGTPV1SFLAG_CHOICE._serialized_start=110486 + _PATTERNFLOWGTPV1SFLAG_CHOICE._serialized_end=110572 + _PATTERNFLOWGTPV1SFLAG_CHOICE_ENUM._serialized_start=110496 + _PATTERNFLOWGTPV1SFLAG_CHOICE_ENUM._serialized_end=110572 + _PATTERNFLOWGTPV1PNFLAGCOUNTER._serialized_start=168622 + _PATTERNFLOWGTPV1PNFLAGCOUNTER._serialized_end=168741 + _PATTERNFLOWGTPV1PNFLAGMETRICTAG._serialized_start=168743 + _PATTERNFLOWGTPV1PNFLAGMETRICTAG._serialized_end=168868 + _PATTERNFLOWGTPV1PNFLAG._serialized_start=168871 + _PATTERNFLOWGTPV1PNFLAG._serialized_end=169271 + _PATTERNFLOWGTPV1PNFLAG_CHOICE._serialized_start=110486 + _PATTERNFLOWGTPV1PNFLAG_CHOICE._serialized_end=110572 + _PATTERNFLOWGTPV1PNFLAG_CHOICE_ENUM._serialized_start=110496 + _PATTERNFLOWGTPV1PNFLAG_CHOICE_ENUM._serialized_end=110572 + _PATTERNFLOWGTPV1MESSAGETYPECOUNTER._serialized_start=169273 + _PATTERNFLOWGTPV1MESSAGETYPECOUNTER._serialized_end=169397 + _PATTERNFLOWGTPV1MESSAGETYPEMETRICTAG._serialized_start=169400 + _PATTERNFLOWGTPV1MESSAGETYPEMETRICTAG._serialized_end=169530 + _PATTERNFLOWGTPV1MESSAGETYPE._serialized_start=169533 + _PATTERNFLOWGTPV1MESSAGETYPE._serialized_end=169958 + _PATTERNFLOWGTPV1MESSAGETYPE_CHOICE._serialized_start=110486 + _PATTERNFLOWGTPV1MESSAGETYPE_CHOICE._serialized_end=110572 + _PATTERNFLOWGTPV1MESSAGETYPE_CHOICE_ENUM._serialized_start=110496 + _PATTERNFLOWGTPV1MESSAGETYPE_CHOICE_ENUM._serialized_end=110572 + _PATTERNFLOWGTPV1MESSAGELENGTHCOUNTER._serialized_start=169960 + _PATTERNFLOWGTPV1MESSAGELENGTHCOUNTER._serialized_end=170086 + _PATTERNFLOWGTPV1MESSAGELENGTHMETRICTAG._serialized_start=170089 + _PATTERNFLOWGTPV1MESSAGELENGTHMETRICTAG._serialized_end=170221 + _PATTERNFLOWGTPV1MESSAGELENGTH._serialized_start=170224 + _PATTERNFLOWGTPV1MESSAGELENGTH._serialized_end=170659 + _PATTERNFLOWGTPV1MESSAGELENGTH_CHOICE._serialized_start=110486 + _PATTERNFLOWGTPV1MESSAGELENGTH_CHOICE._serialized_end=110572 + _PATTERNFLOWGTPV1MESSAGELENGTH_CHOICE_ENUM._serialized_start=110496 + _PATTERNFLOWGTPV1MESSAGELENGTH_CHOICE_ENUM._serialized_end=110572 + _PATTERNFLOWGTPV1TEIDCOUNTER._serialized_start=170661 + _PATTERNFLOWGTPV1TEIDCOUNTER._serialized_end=170778 + _PATTERNFLOWGTPV1TEIDMETRICTAG._serialized_start=170780 + _PATTERNFLOWGTPV1TEIDMETRICTAG._serialized_end=170903 + _PATTERNFLOWGTPV1TEID._serialized_start=170906 + _PATTERNFLOWGTPV1TEID._serialized_end=171296 + _PATTERNFLOWGTPV1TEID_CHOICE._serialized_start=110486 + _PATTERNFLOWGTPV1TEID_CHOICE._serialized_end=110572 + _PATTERNFLOWGTPV1TEID_CHOICE_ENUM._serialized_start=110496 + _PATTERNFLOWGTPV1TEID_CHOICE_ENUM._serialized_end=110572 + _PATTERNFLOWGTPV1SQUENCENUMBERCOUNTER._serialized_start=171298 + _PATTERNFLOWGTPV1SQUENCENUMBERCOUNTER._serialized_end=171424 + _PATTERNFLOWGTPV1SQUENCENUMBERMETRICTAG._serialized_start=171427 + _PATTERNFLOWGTPV1SQUENCENUMBERMETRICTAG._serialized_end=171559 + _PATTERNFLOWGTPV1SQUENCENUMBER._serialized_start=171562 + _PATTERNFLOWGTPV1SQUENCENUMBER._serialized_end=171997 + _PATTERNFLOWGTPV1SQUENCENUMBER_CHOICE._serialized_start=110486 + _PATTERNFLOWGTPV1SQUENCENUMBER_CHOICE._serialized_end=110572 + _PATTERNFLOWGTPV1SQUENCENUMBER_CHOICE_ENUM._serialized_start=110496 + _PATTERNFLOWGTPV1SQUENCENUMBER_CHOICE_ENUM._serialized_end=110572 + _PATTERNFLOWGTPV1NPDUNUMBERCOUNTER._serialized_start=171999 + _PATTERNFLOWGTPV1NPDUNUMBERCOUNTER._serialized_end=172122 + _PATTERNFLOWGTPV1NPDUNUMBERMETRICTAG._serialized_start=172125 + _PATTERNFLOWGTPV1NPDUNUMBERMETRICTAG._serialized_end=172254 + _PATTERNFLOWGTPV1NPDUNUMBER._serialized_start=172257 + _PATTERNFLOWGTPV1NPDUNUMBER._serialized_end=172677 + _PATTERNFLOWGTPV1NPDUNUMBER_CHOICE._serialized_start=110486 + _PATTERNFLOWGTPV1NPDUNUMBER_CHOICE._serialized_end=110572 + _PATTERNFLOWGTPV1NPDUNUMBER_CHOICE_ENUM._serialized_start=110496 + _PATTERNFLOWGTPV1NPDUNUMBER_CHOICE_ENUM._serialized_end=110572 + _PATTERNFLOWGTPV1NEXTEXTENSIONHEADERTYPECOUNTER._serialized_start=172680 + _PATTERNFLOWGTPV1NEXTEXTENSIONHEADERTYPECOUNTER._serialized_end=172816 + _PATTERNFLOWGTPV1NEXTEXTENSIONHEADERTYPEMETRICTAG._serialized_start=172819 + _PATTERNFLOWGTPV1NEXTEXTENSIONHEADERTYPEMETRICTAG._serialized_end=172961 + _PATTERNFLOWGTPV1NEXTEXTENSIONHEADERTYPE._serialized_start=172964 + _PATTERNFLOWGTPV1NEXTEXTENSIONHEADERTYPE._serialized_end=173449 + _PATTERNFLOWGTPV1NEXTEXTENSIONHEADERTYPE_CHOICE._serialized_start=110486 + _PATTERNFLOWGTPV1NEXTEXTENSIONHEADERTYPE_CHOICE._serialized_end=110572 + _PATTERNFLOWGTPV1NEXTEXTENSIONHEADERTYPE_CHOICE_ENUM._serialized_start=110496 + _PATTERNFLOWGTPV1NEXTEXTENSIONHEADERTYPE_CHOICE_ENUM._serialized_end=110572 + _PATTERNFLOWGTPEXTENSIONEXTENSIONLENGTHCOUNTER._serialized_start=173452 + _PATTERNFLOWGTPEXTENSIONEXTENSIONLENGTHCOUNTER._serialized_end=173587 + _PATTERNFLOWGTPEXTENSIONEXTENSIONLENGTHMETRICTAG._serialized_start=173590 + _PATTERNFLOWGTPEXTENSIONEXTENSIONLENGTHMETRICTAG._serialized_end=173731 + _PATTERNFLOWGTPEXTENSIONEXTENSIONLENGTH._serialized_start=173734 + _PATTERNFLOWGTPEXTENSIONEXTENSIONLENGTH._serialized_end=174214 + _PATTERNFLOWGTPEXTENSIONEXTENSIONLENGTH_CHOICE._serialized_start=110486 + _PATTERNFLOWGTPEXTENSIONEXTENSIONLENGTH_CHOICE._serialized_end=110572 + _PATTERNFLOWGTPEXTENSIONEXTENSIONLENGTH_CHOICE_ENUM._serialized_start=110496 + _PATTERNFLOWGTPEXTENSIONEXTENSIONLENGTH_CHOICE_ENUM._serialized_end=110572 + _PATTERNFLOWGTPEXTENSIONCONTENTSCOUNTER._serialized_start=174217 + _PATTERNFLOWGTPEXTENSIONCONTENTSCOUNTER._serialized_end=174345 + _PATTERNFLOWGTPEXTENSIONCONTENTSMETRICTAG._serialized_start=174348 + _PATTERNFLOWGTPEXTENSIONCONTENTSMETRICTAG._serialized_end=174482 + _PATTERNFLOWGTPEXTENSIONCONTENTS._serialized_start=174485 + _PATTERNFLOWGTPEXTENSIONCONTENTS._serialized_end=174930 + _PATTERNFLOWGTPEXTENSIONCONTENTS_CHOICE._serialized_start=110486 + _PATTERNFLOWGTPEXTENSIONCONTENTS_CHOICE._serialized_end=110572 + _PATTERNFLOWGTPEXTENSIONCONTENTS_CHOICE_ENUM._serialized_start=110496 + _PATTERNFLOWGTPEXTENSIONCONTENTS_CHOICE_ENUM._serialized_end=110572 + _PATTERNFLOWGTPEXTENSIONNEXTEXTENSIONHEADERCOUNTER._serialized_start=174933 + _PATTERNFLOWGTPEXTENSIONNEXTEXTENSIONHEADERCOUNTER._serialized_end=175072 + _PATTERNFLOWGTPEXTENSIONNEXTEXTENSIONHEADERMETRICTAG._serialized_start=175075 + _PATTERNFLOWGTPEXTENSIONNEXTEXTENSIONHEADERMETRICTAG._serialized_end=175220 + _PATTERNFLOWGTPEXTENSIONNEXTEXTENSIONHEADER._serialized_start=175223 + _PATTERNFLOWGTPEXTENSIONNEXTEXTENSIONHEADER._serialized_end=175723 + _PATTERNFLOWGTPEXTENSIONNEXTEXTENSIONHEADER_CHOICE._serialized_start=110486 + _PATTERNFLOWGTPEXTENSIONNEXTEXTENSIONHEADER_CHOICE._serialized_end=110572 + _PATTERNFLOWGTPEXTENSIONNEXTEXTENSIONHEADER_CHOICE_ENUM._serialized_start=110496 + _PATTERNFLOWGTPEXTENSIONNEXTEXTENSIONHEADER_CHOICE_ENUM._serialized_end=110572 + _PATTERNFLOWGTPV2VERSIONCOUNTER._serialized_start=175725 + _PATTERNFLOWGTPV2VERSIONCOUNTER._serialized_end=175845 + _PATTERNFLOWGTPV2VERSIONMETRICTAG._serialized_start=175847 + _PATTERNFLOWGTPV2VERSIONMETRICTAG._serialized_end=175973 + _PATTERNFLOWGTPV2VERSION._serialized_start=175976 + _PATTERNFLOWGTPV2VERSION._serialized_end=176381 + _PATTERNFLOWGTPV2VERSION_CHOICE._serialized_start=110486 + _PATTERNFLOWGTPV2VERSION_CHOICE._serialized_end=110572 + _PATTERNFLOWGTPV2VERSION_CHOICE_ENUM._serialized_start=110496 + _PATTERNFLOWGTPV2VERSION_CHOICE_ENUM._serialized_end=110572 + _PATTERNFLOWGTPV2PIGGYBACKINGFLAGCOUNTER._serialized_start=176384 + _PATTERNFLOWGTPV2PIGGYBACKINGFLAGCOUNTER._serialized_end=176513 + _PATTERNFLOWGTPV2PIGGYBACKINGFLAGMETRICTAG._serialized_start=176516 + _PATTERNFLOWGTPV2PIGGYBACKINGFLAGMETRICTAG._serialized_end=176651 + _PATTERNFLOWGTPV2PIGGYBACKINGFLAG._serialized_start=176654 + _PATTERNFLOWGTPV2PIGGYBACKINGFLAG._serialized_end=177104 + _PATTERNFLOWGTPV2PIGGYBACKINGFLAG_CHOICE._serialized_start=110486 + _PATTERNFLOWGTPV2PIGGYBACKINGFLAG_CHOICE._serialized_end=110572 + _PATTERNFLOWGTPV2PIGGYBACKINGFLAG_CHOICE_ENUM._serialized_start=110496 + _PATTERNFLOWGTPV2PIGGYBACKINGFLAG_CHOICE_ENUM._serialized_end=110572 + _PATTERNFLOWGTPV2TEIDFLAGCOUNTER._serialized_start=177106 + _PATTERNFLOWGTPV2TEIDFLAGCOUNTER._serialized_end=177227 + _PATTERNFLOWGTPV2TEIDFLAGMETRICTAG._serialized_start=177229 + _PATTERNFLOWGTPV2TEIDFLAGMETRICTAG._serialized_end=177356 + _PATTERNFLOWGTPV2TEIDFLAG._serialized_start=177359 + _PATTERNFLOWGTPV2TEIDFLAG._serialized_end=177769 + _PATTERNFLOWGTPV2TEIDFLAG_CHOICE._serialized_start=110486 + _PATTERNFLOWGTPV2TEIDFLAG_CHOICE._serialized_end=110572 + _PATTERNFLOWGTPV2TEIDFLAG_CHOICE_ENUM._serialized_start=110496 + _PATTERNFLOWGTPV2TEIDFLAG_CHOICE_ENUM._serialized_end=110572 + _PATTERNFLOWGTPV2SPARE1COUNTER._serialized_start=177771 + _PATTERNFLOWGTPV2SPARE1COUNTER._serialized_end=177890 + _PATTERNFLOWGTPV2SPARE1METRICTAG._serialized_start=177892 + _PATTERNFLOWGTPV2SPARE1METRICTAG._serialized_end=178017 + _PATTERNFLOWGTPV2SPARE1._serialized_start=178020 + _PATTERNFLOWGTPV2SPARE1._serialized_end=178420 + _PATTERNFLOWGTPV2SPARE1_CHOICE._serialized_start=110486 + _PATTERNFLOWGTPV2SPARE1_CHOICE._serialized_end=110572 + _PATTERNFLOWGTPV2SPARE1_CHOICE_ENUM._serialized_start=110496 + _PATTERNFLOWGTPV2SPARE1_CHOICE_ENUM._serialized_end=110572 + _PATTERNFLOWGTPV2MESSAGETYPECOUNTER._serialized_start=178422 + _PATTERNFLOWGTPV2MESSAGETYPECOUNTER._serialized_end=178546 + _PATTERNFLOWGTPV2MESSAGETYPEMETRICTAG._serialized_start=178549 + _PATTERNFLOWGTPV2MESSAGETYPEMETRICTAG._serialized_end=178679 + _PATTERNFLOWGTPV2MESSAGETYPE._serialized_start=178682 + _PATTERNFLOWGTPV2MESSAGETYPE._serialized_end=179107 + _PATTERNFLOWGTPV2MESSAGETYPE_CHOICE._serialized_start=110486 + _PATTERNFLOWGTPV2MESSAGETYPE_CHOICE._serialized_end=110572 + _PATTERNFLOWGTPV2MESSAGETYPE_CHOICE_ENUM._serialized_start=110496 + _PATTERNFLOWGTPV2MESSAGETYPE_CHOICE_ENUM._serialized_end=110572 + _PATTERNFLOWGTPV2MESSAGELENGTHCOUNTER._serialized_start=179109 + _PATTERNFLOWGTPV2MESSAGELENGTHCOUNTER._serialized_end=179235 + _PATTERNFLOWGTPV2MESSAGELENGTHMETRICTAG._serialized_start=179238 + _PATTERNFLOWGTPV2MESSAGELENGTHMETRICTAG._serialized_end=179370 + _PATTERNFLOWGTPV2MESSAGELENGTH._serialized_start=179373 + _PATTERNFLOWGTPV2MESSAGELENGTH._serialized_end=179808 + _PATTERNFLOWGTPV2MESSAGELENGTH_CHOICE._serialized_start=110486 + _PATTERNFLOWGTPV2MESSAGELENGTH_CHOICE._serialized_end=110572 + _PATTERNFLOWGTPV2MESSAGELENGTH_CHOICE_ENUM._serialized_start=110496 + _PATTERNFLOWGTPV2MESSAGELENGTH_CHOICE_ENUM._serialized_end=110572 + _PATTERNFLOWGTPV2TEIDCOUNTER._serialized_start=179810 + _PATTERNFLOWGTPV2TEIDCOUNTER._serialized_end=179927 + _PATTERNFLOWGTPV2TEIDMETRICTAG._serialized_start=179929 + _PATTERNFLOWGTPV2TEIDMETRICTAG._serialized_end=180052 + _PATTERNFLOWGTPV2TEID._serialized_start=180055 + _PATTERNFLOWGTPV2TEID._serialized_end=180445 + _PATTERNFLOWGTPV2TEID_CHOICE._serialized_start=110486 + _PATTERNFLOWGTPV2TEID_CHOICE._serialized_end=110572 + _PATTERNFLOWGTPV2TEID_CHOICE_ENUM._serialized_start=110496 + _PATTERNFLOWGTPV2TEID_CHOICE_ENUM._serialized_end=110572 + _PATTERNFLOWGTPV2SEQUENCENUMBERCOUNTER._serialized_start=180447 + _PATTERNFLOWGTPV2SEQUENCENUMBERCOUNTER._serialized_end=180574 + _PATTERNFLOWGTPV2SEQUENCENUMBERMETRICTAG._serialized_start=180577 + _PATTERNFLOWGTPV2SEQUENCENUMBERMETRICTAG._serialized_end=180710 + _PATTERNFLOWGTPV2SEQUENCENUMBER._serialized_start=180713 + _PATTERNFLOWGTPV2SEQUENCENUMBER._serialized_end=181153 + _PATTERNFLOWGTPV2SEQUENCENUMBER_CHOICE._serialized_start=110486 + _PATTERNFLOWGTPV2SEQUENCENUMBER_CHOICE._serialized_end=110572 + _PATTERNFLOWGTPV2SEQUENCENUMBER_CHOICE_ENUM._serialized_start=110496 + _PATTERNFLOWGTPV2SEQUENCENUMBER_CHOICE_ENUM._serialized_end=110572 + _PATTERNFLOWGTPV2SPARE2COUNTER._serialized_start=181155 + _PATTERNFLOWGTPV2SPARE2COUNTER._serialized_end=181274 + _PATTERNFLOWGTPV2SPARE2METRICTAG._serialized_start=181276 + _PATTERNFLOWGTPV2SPARE2METRICTAG._serialized_end=181401 + _PATTERNFLOWGTPV2SPARE2._serialized_start=181404 + _PATTERNFLOWGTPV2SPARE2._serialized_end=181804 + _PATTERNFLOWGTPV2SPARE2_CHOICE._serialized_start=110486 + _PATTERNFLOWGTPV2SPARE2_CHOICE._serialized_end=110572 + _PATTERNFLOWGTPV2SPARE2_CHOICE_ENUM._serialized_start=110496 + _PATTERNFLOWGTPV2SPARE2_CHOICE_ENUM._serialized_end=110572 + _PATTERNFLOWARPHARDWARETYPECOUNTER._serialized_start=181806 + _PATTERNFLOWARPHARDWARETYPECOUNTER._serialized_end=181929 + _PATTERNFLOWARPHARDWARETYPEMETRICTAG._serialized_start=181932 + _PATTERNFLOWARPHARDWARETYPEMETRICTAG._serialized_end=182061 + _PATTERNFLOWARPHARDWARETYPE._serialized_start=182064 + _PATTERNFLOWARPHARDWARETYPE._serialized_end=182484 + _PATTERNFLOWARPHARDWARETYPE_CHOICE._serialized_start=110486 + _PATTERNFLOWARPHARDWARETYPE_CHOICE._serialized_end=110572 + _PATTERNFLOWARPHARDWARETYPE_CHOICE_ENUM._serialized_start=110496 + _PATTERNFLOWARPHARDWARETYPE_CHOICE_ENUM._serialized_end=110572 + _PATTERNFLOWARPPROTOCOLTYPECOUNTER._serialized_start=182486 + _PATTERNFLOWARPPROTOCOLTYPECOUNTER._serialized_end=182609 + _PATTERNFLOWARPPROTOCOLTYPEMETRICTAG._serialized_start=182612 + _PATTERNFLOWARPPROTOCOLTYPEMETRICTAG._serialized_end=182741 + _PATTERNFLOWARPPROTOCOLTYPE._serialized_start=182744 + _PATTERNFLOWARPPROTOCOLTYPE._serialized_end=183164 + _PATTERNFLOWARPPROTOCOLTYPE_CHOICE._serialized_start=110486 + _PATTERNFLOWARPPROTOCOLTYPE_CHOICE._serialized_end=110572 + _PATTERNFLOWARPPROTOCOLTYPE_CHOICE_ENUM._serialized_start=110496 + _PATTERNFLOWARPPROTOCOLTYPE_CHOICE_ENUM._serialized_end=110572 + _PATTERNFLOWARPHARDWARELENGTHCOUNTER._serialized_start=183166 + _PATTERNFLOWARPHARDWARELENGTHCOUNTER._serialized_end=183291 + _PATTERNFLOWARPHARDWARELENGTHMETRICTAG._serialized_start=183294 + _PATTERNFLOWARPHARDWARELENGTHMETRICTAG._serialized_end=183425 + _PATTERNFLOWARPHARDWARELENGTH._serialized_start=183428 + _PATTERNFLOWARPHARDWARELENGTH._serialized_end=183858 + _PATTERNFLOWARPHARDWARELENGTH_CHOICE._serialized_start=110486 + _PATTERNFLOWARPHARDWARELENGTH_CHOICE._serialized_end=110572 + _PATTERNFLOWARPHARDWARELENGTH_CHOICE_ENUM._serialized_start=110496 + _PATTERNFLOWARPHARDWARELENGTH_CHOICE_ENUM._serialized_end=110572 + _PATTERNFLOWARPPROTOCOLLENGTHCOUNTER._serialized_start=183860 + _PATTERNFLOWARPPROTOCOLLENGTHCOUNTER._serialized_end=183985 + _PATTERNFLOWARPPROTOCOLLENGTHMETRICTAG._serialized_start=183988 + _PATTERNFLOWARPPROTOCOLLENGTHMETRICTAG._serialized_end=184119 + _PATTERNFLOWARPPROTOCOLLENGTH._serialized_start=184122 + _PATTERNFLOWARPPROTOCOLLENGTH._serialized_end=184552 + _PATTERNFLOWARPPROTOCOLLENGTH_CHOICE._serialized_start=110486 + _PATTERNFLOWARPPROTOCOLLENGTH_CHOICE._serialized_end=110572 + _PATTERNFLOWARPPROTOCOLLENGTH_CHOICE_ENUM._serialized_start=110496 + _PATTERNFLOWARPPROTOCOLLENGTH_CHOICE_ENUM._serialized_end=110572 + _PATTERNFLOWARPOPERATIONCOUNTER._serialized_start=184554 + _PATTERNFLOWARPOPERATIONCOUNTER._serialized_end=184674 + _PATTERNFLOWARPOPERATIONMETRICTAG._serialized_start=184676 + _PATTERNFLOWARPOPERATIONMETRICTAG._serialized_end=184802 + _PATTERNFLOWARPOPERATION._serialized_start=184805 + _PATTERNFLOWARPOPERATION._serialized_end=185210 + _PATTERNFLOWARPOPERATION_CHOICE._serialized_start=110486 + _PATTERNFLOWARPOPERATION_CHOICE._serialized_end=110572 + _PATTERNFLOWARPOPERATION_CHOICE_ENUM._serialized_start=110496 + _PATTERNFLOWARPOPERATION_CHOICE_ENUM._serialized_end=110572 + _PATTERNFLOWARPSENDERHARDWAREADDRCOUNTER._serialized_start=185213 + _PATTERNFLOWARPSENDERHARDWAREADDRCOUNTER._serialized_end=185342 + _PATTERNFLOWARPSENDERHARDWAREADDRMETRICTAG._serialized_start=185345 + _PATTERNFLOWARPSENDERHARDWAREADDRMETRICTAG._serialized_end=185480 + _PATTERNFLOWARPSENDERHARDWAREADDR._serialized_start=185483 + _PATTERNFLOWARPSENDERHARDWAREADDR._serialized_end=185933 + _PATTERNFLOWARPSENDERHARDWAREADDR_CHOICE._serialized_start=110486 + _PATTERNFLOWARPSENDERHARDWAREADDR_CHOICE._serialized_end=110572 + _PATTERNFLOWARPSENDERHARDWAREADDR_CHOICE_ENUM._serialized_start=110496 + _PATTERNFLOWARPSENDERHARDWAREADDR_CHOICE_ENUM._serialized_end=110572 + _PATTERNFLOWARPSENDERPROTOCOLADDRCOUNTER._serialized_start=185936 + _PATTERNFLOWARPSENDERPROTOCOLADDRCOUNTER._serialized_end=186065 + _PATTERNFLOWARPSENDERPROTOCOLADDRMETRICTAG._serialized_start=186068 + _PATTERNFLOWARPSENDERPROTOCOLADDRMETRICTAG._serialized_end=186203 + _PATTERNFLOWARPSENDERPROTOCOLADDR._serialized_start=186206 + _PATTERNFLOWARPSENDERPROTOCOLADDR._serialized_end=186656 + _PATTERNFLOWARPSENDERPROTOCOLADDR_CHOICE._serialized_start=110486 + _PATTERNFLOWARPSENDERPROTOCOLADDR_CHOICE._serialized_end=110572 + _PATTERNFLOWARPSENDERPROTOCOLADDR_CHOICE_ENUM._serialized_start=110496 + _PATTERNFLOWARPSENDERPROTOCOLADDR_CHOICE_ENUM._serialized_end=110572 + _PATTERNFLOWARPTARGETHARDWAREADDRCOUNTER._serialized_start=186659 + _PATTERNFLOWARPTARGETHARDWAREADDRCOUNTER._serialized_end=186788 + _PATTERNFLOWARPTARGETHARDWAREADDRMETRICTAG._serialized_start=186791 + _PATTERNFLOWARPTARGETHARDWAREADDRMETRICTAG._serialized_end=186926 + _PATTERNFLOWARPTARGETHARDWAREADDR._serialized_start=186929 + _PATTERNFLOWARPTARGETHARDWAREADDR._serialized_end=187379 + _PATTERNFLOWARPTARGETHARDWAREADDR_CHOICE._serialized_start=110486 + _PATTERNFLOWARPTARGETHARDWAREADDR_CHOICE._serialized_end=110572 + _PATTERNFLOWARPTARGETHARDWAREADDR_CHOICE_ENUM._serialized_start=110496 + _PATTERNFLOWARPTARGETHARDWAREADDR_CHOICE_ENUM._serialized_end=110572 + _PATTERNFLOWARPTARGETPROTOCOLADDRCOUNTER._serialized_start=187382 + _PATTERNFLOWARPTARGETPROTOCOLADDRCOUNTER._serialized_end=187511 + _PATTERNFLOWARPTARGETPROTOCOLADDRMETRICTAG._serialized_start=187514 + _PATTERNFLOWARPTARGETPROTOCOLADDRMETRICTAG._serialized_end=187649 + _PATTERNFLOWARPTARGETPROTOCOLADDR._serialized_start=187652 + _PATTERNFLOWARPTARGETPROTOCOLADDR._serialized_end=188102 + _PATTERNFLOWARPTARGETPROTOCOLADDR_CHOICE._serialized_start=110486 + _PATTERNFLOWARPTARGETPROTOCOLADDR_CHOICE._serialized_end=110572 + _PATTERNFLOWARPTARGETPROTOCOLADDR_CHOICE_ENUM._serialized_start=110496 + _PATTERNFLOWARPTARGETPROTOCOLADDR_CHOICE_ENUM._serialized_end=110572 + _PATTERNFLOWICMPECHOTYPECOUNTER._serialized_start=188104 + _PATTERNFLOWICMPECHOTYPECOUNTER._serialized_end=188224 + _PATTERNFLOWICMPECHOTYPEMETRICTAG._serialized_start=188226 + _PATTERNFLOWICMPECHOTYPEMETRICTAG._serialized_end=188352 + _PATTERNFLOWICMPECHOTYPE._serialized_start=188355 + _PATTERNFLOWICMPECHOTYPE._serialized_end=188760 + _PATTERNFLOWICMPECHOTYPE_CHOICE._serialized_start=110486 + _PATTERNFLOWICMPECHOTYPE_CHOICE._serialized_end=110572 + _PATTERNFLOWICMPECHOTYPE_CHOICE_ENUM._serialized_start=110496 + _PATTERNFLOWICMPECHOTYPE_CHOICE_ENUM._serialized_end=110572 + _PATTERNFLOWICMPECHOCODECOUNTER._serialized_start=188762 + _PATTERNFLOWICMPECHOCODECOUNTER._serialized_end=188882 + _PATTERNFLOWICMPECHOCODEMETRICTAG._serialized_start=188884 + _PATTERNFLOWICMPECHOCODEMETRICTAG._serialized_end=189010 + _PATTERNFLOWICMPECHOCODE._serialized_start=189013 + _PATTERNFLOWICMPECHOCODE._serialized_end=189418 + _PATTERNFLOWICMPECHOCODE_CHOICE._serialized_start=110486 + _PATTERNFLOWICMPECHOCODE_CHOICE._serialized_end=110572 + _PATTERNFLOWICMPECHOCODE_CHOICE_ENUM._serialized_start=110496 + _PATTERNFLOWICMPECHOCODE_CHOICE_ENUM._serialized_end=110572 + _PATTERNFLOWICMPECHOCHECKSUM._serialized_start=189421 + _PATTERNFLOWICMPECHOCHECKSUM._serialized_end=189766 + _PATTERNFLOWICMPECHOCHECKSUM_CHOICE._serialized_start=124302 + _PATTERNFLOWICMPECHOCHECKSUM_CHOICE._serialized_end=124362 + _PATTERNFLOWICMPECHOCHECKSUM_CHOICE_ENUM._serialized_start=124312 + _PATTERNFLOWICMPECHOCHECKSUM_CHOICE_ENUM._serialized_end=124362 + _PATTERNFLOWICMPECHOCHECKSUM_GENERATED._serialized_start=124364 + _PATTERNFLOWICMPECHOCHECKSUM_GENERATED._serialized_end=124419 + _PATTERNFLOWICMPECHOCHECKSUM_GENERATED_ENUM._serialized_start=124377 + _PATTERNFLOWICMPECHOCHECKSUM_GENERATED_ENUM._serialized_end=124419 + _PATTERNFLOWICMPECHOIDENTIFIERCOUNTER._serialized_start=189768 + _PATTERNFLOWICMPECHOIDENTIFIERCOUNTER._serialized_end=189894 + _PATTERNFLOWICMPECHOIDENTIFIERMETRICTAG._serialized_start=189897 + _PATTERNFLOWICMPECHOIDENTIFIERMETRICTAG._serialized_end=190029 + _PATTERNFLOWICMPECHOIDENTIFIER._serialized_start=190032 + _PATTERNFLOWICMPECHOIDENTIFIER._serialized_end=190467 + _PATTERNFLOWICMPECHOIDENTIFIER_CHOICE._serialized_start=110486 + _PATTERNFLOWICMPECHOIDENTIFIER_CHOICE._serialized_end=110572 + _PATTERNFLOWICMPECHOIDENTIFIER_CHOICE_ENUM._serialized_start=110496 + _PATTERNFLOWICMPECHOIDENTIFIER_CHOICE_ENUM._serialized_end=110572 + _PATTERNFLOWICMPECHOSEQUENCENUMBERCOUNTER._serialized_start=190470 + _PATTERNFLOWICMPECHOSEQUENCENUMBERCOUNTER._serialized_end=190600 + _PATTERNFLOWICMPECHOSEQUENCENUMBERMETRICTAG._serialized_start=190603 + _PATTERNFLOWICMPECHOSEQUENCENUMBERMETRICTAG._serialized_end=190739 + _PATTERNFLOWICMPECHOSEQUENCENUMBER._serialized_start=190742 + _PATTERNFLOWICMPECHOSEQUENCENUMBER._serialized_end=191197 + _PATTERNFLOWICMPECHOSEQUENCENUMBER_CHOICE._serialized_start=110486 + _PATTERNFLOWICMPECHOSEQUENCENUMBER_CHOICE._serialized_end=110572 + _PATTERNFLOWICMPECHOSEQUENCENUMBER_CHOICE_ENUM._serialized_start=110496 + _PATTERNFLOWICMPECHOSEQUENCENUMBER_CHOICE_ENUM._serialized_end=110572 + _PATTERNFLOWICMPCOMMONCHECKSUM._serialized_start=191200 + _PATTERNFLOWICMPCOMMONCHECKSUM._serialized_end=191551 + _PATTERNFLOWICMPCOMMONCHECKSUM_CHOICE._serialized_start=124302 + _PATTERNFLOWICMPCOMMONCHECKSUM_CHOICE._serialized_end=124362 + _PATTERNFLOWICMPCOMMONCHECKSUM_CHOICE_ENUM._serialized_start=124312 + _PATTERNFLOWICMPCOMMONCHECKSUM_CHOICE_ENUM._serialized_end=124362 + _PATTERNFLOWICMPCOMMONCHECKSUM_GENERATED._serialized_start=124364 + _PATTERNFLOWICMPCOMMONCHECKSUM_GENERATED._serialized_end=124419 + _PATTERNFLOWICMPCOMMONCHECKSUM_GENERATED_ENUM._serialized_start=124377 + _PATTERNFLOWICMPCOMMONCHECKSUM_GENERATED_ENUM._serialized_end=124419 + _PATTERNFLOWICMPNEXTFIELDSIDENTIFIERCOUNTER._serialized_start=191554 + _PATTERNFLOWICMPNEXTFIELDSIDENTIFIERCOUNTER._serialized_end=191686 + _PATTERNFLOWICMPNEXTFIELDSIDENTIFIERMETRICTAG._serialized_start=191689 + _PATTERNFLOWICMPNEXTFIELDSIDENTIFIERMETRICTAG._serialized_end=191827 + _PATTERNFLOWICMPNEXTFIELDSIDENTIFIER._serialized_start=191830 + _PATTERNFLOWICMPNEXTFIELDSIDENTIFIER._serialized_end=192295 + _PATTERNFLOWICMPNEXTFIELDSIDENTIFIER_CHOICE._serialized_start=110486 + _PATTERNFLOWICMPNEXTFIELDSIDENTIFIER_CHOICE._serialized_end=110572 + _PATTERNFLOWICMPNEXTFIELDSIDENTIFIER_CHOICE_ENUM._serialized_start=110496 + _PATTERNFLOWICMPNEXTFIELDSIDENTIFIER_CHOICE_ENUM._serialized_end=110572 + _PATTERNFLOWICMPNEXTFIELDSSEQUENCENUMBERCOUNTER._serialized_start=192298 + _PATTERNFLOWICMPNEXTFIELDSSEQUENCENUMBERCOUNTER._serialized_end=192434 + _PATTERNFLOWICMPNEXTFIELDSSEQUENCENUMBERMETRICTAG._serialized_start=192437 + _PATTERNFLOWICMPNEXTFIELDSSEQUENCENUMBERMETRICTAG._serialized_end=192579 + _PATTERNFLOWICMPNEXTFIELDSSEQUENCENUMBER._serialized_start=192582 + _PATTERNFLOWICMPNEXTFIELDSSEQUENCENUMBER._serialized_end=193067 + _PATTERNFLOWICMPNEXTFIELDSSEQUENCENUMBER_CHOICE._serialized_start=110486 + _PATTERNFLOWICMPNEXTFIELDSSEQUENCENUMBER_CHOICE._serialized_end=110572 + _PATTERNFLOWICMPNEXTFIELDSSEQUENCENUMBER_CHOICE_ENUM._serialized_start=110496 + _PATTERNFLOWICMPNEXTFIELDSSEQUENCENUMBER_CHOICE_ENUM._serialized_end=110572 + _PATTERNFLOWICMPV6ECHOTYPECOUNTER._serialized_start=193069 + _PATTERNFLOWICMPV6ECHOTYPECOUNTER._serialized_end=193191 + _PATTERNFLOWICMPV6ECHOTYPEMETRICTAG._serialized_start=193194 + _PATTERNFLOWICMPV6ECHOTYPEMETRICTAG._serialized_end=193322 + _PATTERNFLOWICMPV6ECHOTYPE._serialized_start=193325 + _PATTERNFLOWICMPV6ECHOTYPE._serialized_end=193740 + _PATTERNFLOWICMPV6ECHOTYPE_CHOICE._serialized_start=110486 + _PATTERNFLOWICMPV6ECHOTYPE_CHOICE._serialized_end=110572 + _PATTERNFLOWICMPV6ECHOTYPE_CHOICE_ENUM._serialized_start=110496 + _PATTERNFLOWICMPV6ECHOTYPE_CHOICE_ENUM._serialized_end=110572 + _PATTERNFLOWICMPV6ECHOCODECOUNTER._serialized_start=193742 + _PATTERNFLOWICMPV6ECHOCODECOUNTER._serialized_end=193864 + _PATTERNFLOWICMPV6ECHOCODEMETRICTAG._serialized_start=193867 + _PATTERNFLOWICMPV6ECHOCODEMETRICTAG._serialized_end=193995 + _PATTERNFLOWICMPV6ECHOCODE._serialized_start=193998 + _PATTERNFLOWICMPV6ECHOCODE._serialized_end=194413 + _PATTERNFLOWICMPV6ECHOCODE_CHOICE._serialized_start=110486 + _PATTERNFLOWICMPV6ECHOCODE_CHOICE._serialized_end=110572 + _PATTERNFLOWICMPV6ECHOCODE_CHOICE_ENUM._serialized_start=110496 + _PATTERNFLOWICMPV6ECHOCODE_CHOICE_ENUM._serialized_end=110572 + _PATTERNFLOWICMPV6ECHOIDENTIFIERCOUNTER._serialized_start=194416 + _PATTERNFLOWICMPV6ECHOIDENTIFIERCOUNTER._serialized_end=194544 + _PATTERNFLOWICMPV6ECHOIDENTIFIERMETRICTAG._serialized_start=194547 + _PATTERNFLOWICMPV6ECHOIDENTIFIERMETRICTAG._serialized_end=194681 + _PATTERNFLOWICMPV6ECHOIDENTIFIER._serialized_start=194684 + _PATTERNFLOWICMPV6ECHOIDENTIFIER._serialized_end=195129 + _PATTERNFLOWICMPV6ECHOIDENTIFIER_CHOICE._serialized_start=110486 + _PATTERNFLOWICMPV6ECHOIDENTIFIER_CHOICE._serialized_end=110572 + _PATTERNFLOWICMPV6ECHOIDENTIFIER_CHOICE_ENUM._serialized_start=110496 + _PATTERNFLOWICMPV6ECHOIDENTIFIER_CHOICE_ENUM._serialized_end=110572 + _PATTERNFLOWICMPV6ECHOSEQUENCENUMBERCOUNTER._serialized_start=195132 + _PATTERNFLOWICMPV6ECHOSEQUENCENUMBERCOUNTER._serialized_end=195264 + _PATTERNFLOWICMPV6ECHOSEQUENCENUMBERMETRICTAG._serialized_start=195267 + _PATTERNFLOWICMPV6ECHOSEQUENCENUMBERMETRICTAG._serialized_end=195405 + _PATTERNFLOWICMPV6ECHOSEQUENCENUMBER._serialized_start=195408 + _PATTERNFLOWICMPV6ECHOSEQUENCENUMBER._serialized_end=195873 + _PATTERNFLOWICMPV6ECHOSEQUENCENUMBER_CHOICE._serialized_start=110486 + _PATTERNFLOWICMPV6ECHOSEQUENCENUMBER_CHOICE._serialized_end=110572 + _PATTERNFLOWICMPV6ECHOSEQUENCENUMBER_CHOICE_ENUM._serialized_start=110496 + _PATTERNFLOWICMPV6ECHOSEQUENCENUMBER_CHOICE_ENUM._serialized_end=110572 + _PATTERNFLOWICMPV6ECHOCHECKSUM._serialized_start=195876 + _PATTERNFLOWICMPV6ECHOCHECKSUM._serialized_end=196227 + _PATTERNFLOWICMPV6ECHOCHECKSUM_CHOICE._serialized_start=124302 + _PATTERNFLOWICMPV6ECHOCHECKSUM_CHOICE._serialized_end=124362 + _PATTERNFLOWICMPV6ECHOCHECKSUM_CHOICE_ENUM._serialized_start=124312 + _PATTERNFLOWICMPV6ECHOCHECKSUM_CHOICE_ENUM._serialized_end=124362 + _PATTERNFLOWICMPV6ECHOCHECKSUM_GENERATED._serialized_start=124364 + _PATTERNFLOWICMPV6ECHOCHECKSUM_GENERATED._serialized_end=124419 + _PATTERNFLOWICMPV6ECHOCHECKSUM_GENERATED_ENUM._serialized_start=124377 + _PATTERNFLOWICMPV6ECHOCHECKSUM_GENERATED_ENUM._serialized_end=124419 + _PATTERNFLOWICMPV6COMMONCHECKSUM._serialized_start=196230 + _PATTERNFLOWICMPV6COMMONCHECKSUM._serialized_end=196587 + _PATTERNFLOWICMPV6COMMONCHECKSUM_CHOICE._serialized_start=124302 + _PATTERNFLOWICMPV6COMMONCHECKSUM_CHOICE._serialized_end=124362 + _PATTERNFLOWICMPV6COMMONCHECKSUM_CHOICE_ENUM._serialized_start=124312 + _PATTERNFLOWICMPV6COMMONCHECKSUM_CHOICE_ENUM._serialized_end=124362 + _PATTERNFLOWICMPV6COMMONCHECKSUM_GENERATED._serialized_start=124364 + _PATTERNFLOWICMPV6COMMONCHECKSUM_GENERATED._serialized_end=124419 + _PATTERNFLOWICMPV6COMMONCHECKSUM_GENERATED_ENUM._serialized_start=124377 + _PATTERNFLOWICMPV6COMMONCHECKSUM_GENERATED_ENUM._serialized_end=124419 + _PATTERNFLOWPPPADDRESSCOUNTER._serialized_start=196589 + _PATTERNFLOWPPPADDRESSCOUNTER._serialized_end=196707 + _PATTERNFLOWPPPADDRESSMETRICTAG._serialized_start=196709 + _PATTERNFLOWPPPADDRESSMETRICTAG._serialized_end=196833 + _PATTERNFLOWPPPADDRESS._serialized_start=196836 + _PATTERNFLOWPPPADDRESS._serialized_end=197231 + _PATTERNFLOWPPPADDRESS_CHOICE._serialized_start=110486 + _PATTERNFLOWPPPADDRESS_CHOICE._serialized_end=110572 + _PATTERNFLOWPPPADDRESS_CHOICE_ENUM._serialized_start=110496 + _PATTERNFLOWPPPADDRESS_CHOICE_ENUM._serialized_end=110572 + _PATTERNFLOWPPPCONTROLCOUNTER._serialized_start=197233 + _PATTERNFLOWPPPCONTROLCOUNTER._serialized_end=197351 + _PATTERNFLOWPPPCONTROLMETRICTAG._serialized_start=197353 + _PATTERNFLOWPPPCONTROLMETRICTAG._serialized_end=197477 + _PATTERNFLOWPPPCONTROL._serialized_start=197480 + _PATTERNFLOWPPPCONTROL._serialized_end=197875 + _PATTERNFLOWPPPCONTROL_CHOICE._serialized_start=110486 + _PATTERNFLOWPPPCONTROL_CHOICE._serialized_end=110572 + _PATTERNFLOWPPPCONTROL_CHOICE_ENUM._serialized_start=110496 + _PATTERNFLOWPPPCONTROL_CHOICE_ENUM._serialized_end=110572 + _PATTERNFLOWPPPPROTOCOLTYPECOUNTER._serialized_start=197877 + _PATTERNFLOWPPPPROTOCOLTYPECOUNTER._serialized_end=198000 + _PATTERNFLOWPPPPROTOCOLTYPEMETRICTAG._serialized_start=198003 + _PATTERNFLOWPPPPROTOCOLTYPEMETRICTAG._serialized_end=198132 + _PATTERNFLOWPPPPROTOCOLTYPE._serialized_start=198135 + _PATTERNFLOWPPPPROTOCOLTYPE._serialized_end=198593 + _PATTERNFLOWPPPPROTOCOLTYPE_CHOICE._serialized_start=109816 + _PATTERNFLOWPPPPROTOCOLTYPE_CHOICE._serialized_end=109912 + _PATTERNFLOWPPPPROTOCOLTYPE_CHOICE_ENUM._serialized_start=109826 + _PATTERNFLOWPPPPROTOCOLTYPE_CHOICE_ENUM._serialized_end=109912 + _PATTERNFLOWIGMPV1VERSIONCOUNTER._serialized_start=198595 + _PATTERNFLOWIGMPV1VERSIONCOUNTER._serialized_end=198716 + _PATTERNFLOWIGMPV1VERSIONMETRICTAG._serialized_start=198718 + _PATTERNFLOWIGMPV1VERSIONMETRICTAG._serialized_end=198845 + _PATTERNFLOWIGMPV1VERSION._serialized_start=198848 + _PATTERNFLOWIGMPV1VERSION._serialized_end=199258 + _PATTERNFLOWIGMPV1VERSION_CHOICE._serialized_start=110486 + _PATTERNFLOWIGMPV1VERSION_CHOICE._serialized_end=110572 + _PATTERNFLOWIGMPV1VERSION_CHOICE_ENUM._serialized_start=110496 + _PATTERNFLOWIGMPV1VERSION_CHOICE_ENUM._serialized_end=110572 + _PATTERNFLOWIGMPV1TYPECOUNTER._serialized_start=199260 + _PATTERNFLOWIGMPV1TYPECOUNTER._serialized_end=199378 + _PATTERNFLOWIGMPV1TYPEMETRICTAG._serialized_start=199380 + _PATTERNFLOWIGMPV1TYPEMETRICTAG._serialized_end=199504 + _PATTERNFLOWIGMPV1TYPE._serialized_start=199507 + _PATTERNFLOWIGMPV1TYPE._serialized_end=199902 + _PATTERNFLOWIGMPV1TYPE_CHOICE._serialized_start=110486 + _PATTERNFLOWIGMPV1TYPE_CHOICE._serialized_end=110572 + _PATTERNFLOWIGMPV1TYPE_CHOICE_ENUM._serialized_start=110496 + _PATTERNFLOWIGMPV1TYPE_CHOICE_ENUM._serialized_end=110572 + _PATTERNFLOWIGMPV1UNUSEDCOUNTER._serialized_start=199904 + _PATTERNFLOWIGMPV1UNUSEDCOUNTER._serialized_end=200024 + _PATTERNFLOWIGMPV1UNUSEDMETRICTAG._serialized_start=200026 + _PATTERNFLOWIGMPV1UNUSEDMETRICTAG._serialized_end=200152 + _PATTERNFLOWIGMPV1UNUSED._serialized_start=200155 + _PATTERNFLOWIGMPV1UNUSED._serialized_end=200560 + _PATTERNFLOWIGMPV1UNUSED_CHOICE._serialized_start=110486 + _PATTERNFLOWIGMPV1UNUSED_CHOICE._serialized_end=110572 + _PATTERNFLOWIGMPV1UNUSED_CHOICE_ENUM._serialized_start=110496 + _PATTERNFLOWIGMPV1UNUSED_CHOICE_ENUM._serialized_end=110572 + _PATTERNFLOWIGMPV1CHECKSUM._serialized_start=200563 + _PATTERNFLOWIGMPV1CHECKSUM._serialized_end=200902 + _PATTERNFLOWIGMPV1CHECKSUM_CHOICE._serialized_start=124302 + _PATTERNFLOWIGMPV1CHECKSUM_CHOICE._serialized_end=124362 + _PATTERNFLOWIGMPV1CHECKSUM_CHOICE_ENUM._serialized_start=124312 + _PATTERNFLOWIGMPV1CHECKSUM_CHOICE_ENUM._serialized_end=124362 + _PATTERNFLOWIGMPV1CHECKSUM_GENERATED._serialized_start=124364 + _PATTERNFLOWIGMPV1CHECKSUM_GENERATED._serialized_end=124419 + _PATTERNFLOWIGMPV1CHECKSUM_GENERATED_ENUM._serialized_start=124377 + _PATTERNFLOWIGMPV1CHECKSUM_GENERATED_ENUM._serialized_end=124419 + _PATTERNFLOWIGMPV1GROUPADDRESSCOUNTER._serialized_start=200904 + _PATTERNFLOWIGMPV1GROUPADDRESSCOUNTER._serialized_end=201030 + _PATTERNFLOWIGMPV1GROUPADDRESSMETRICTAG._serialized_start=201033 + _PATTERNFLOWIGMPV1GROUPADDRESSMETRICTAG._serialized_end=201165 + _PATTERNFLOWIGMPV1GROUPADDRESS._serialized_start=201168 + _PATTERNFLOWIGMPV1GROUPADDRESS._serialized_end=201603 + _PATTERNFLOWIGMPV1GROUPADDRESS_CHOICE._serialized_start=110486 + _PATTERNFLOWIGMPV1GROUPADDRESS_CHOICE._serialized_end=110572 + _PATTERNFLOWIGMPV1GROUPADDRESS_CHOICE_ENUM._serialized_start=110496 + _PATTERNFLOWIGMPV1GROUPADDRESS_CHOICE_ENUM._serialized_end=110572 + _PATTERNFLOWMPLSLABELCOUNTER._serialized_start=201605 + _PATTERNFLOWMPLSLABELCOUNTER._serialized_end=201722 + _PATTERNFLOWMPLSLABELMETRICTAG._serialized_start=201724 + _PATTERNFLOWMPLSLABELMETRICTAG._serialized_end=201847 + _PATTERNFLOWMPLSLABEL._serialized_start=201850 + _PATTERNFLOWMPLSLABEL._serialized_end=202278 + _PATTERNFLOWMPLSLABEL_CHOICE._serialized_start=109816 + _PATTERNFLOWMPLSLABEL_CHOICE._serialized_end=109912 + _PATTERNFLOWMPLSLABEL_CHOICE_ENUM._serialized_start=109826 + _PATTERNFLOWMPLSLABEL_CHOICE_ENUM._serialized_end=109912 + _PATTERNFLOWMPLSTRAFFICCLASSCOUNTER._serialized_start=202280 + _PATTERNFLOWMPLSTRAFFICCLASSCOUNTER._serialized_end=202404 + _PATTERNFLOWMPLSTRAFFICCLASSMETRICTAG._serialized_start=202407 + _PATTERNFLOWMPLSTRAFFICCLASSMETRICTAG._serialized_end=202537 + _PATTERNFLOWMPLSTRAFFICCLASS._serialized_start=202540 + _PATTERNFLOWMPLSTRAFFICCLASS._serialized_end=202965 + _PATTERNFLOWMPLSTRAFFICCLASS_CHOICE._serialized_start=110486 + _PATTERNFLOWMPLSTRAFFICCLASS_CHOICE._serialized_end=110572 + _PATTERNFLOWMPLSTRAFFICCLASS_CHOICE_ENUM._serialized_start=110496 + _PATTERNFLOWMPLSTRAFFICCLASS_CHOICE_ENUM._serialized_end=110572 + _PATTERNFLOWMPLSBOTTOMOFSTACKCOUNTER._serialized_start=202967 + _PATTERNFLOWMPLSBOTTOMOFSTACKCOUNTER._serialized_end=203092 + _PATTERNFLOWMPLSBOTTOMOFSTACKMETRICTAG._serialized_start=203095 + _PATTERNFLOWMPLSBOTTOMOFSTACKMETRICTAG._serialized_end=203226 + _PATTERNFLOWMPLSBOTTOMOFSTACK._serialized_start=203229 + _PATTERNFLOWMPLSBOTTOMOFSTACK._serialized_end=203697 + _PATTERNFLOWMPLSBOTTOMOFSTACK_CHOICE._serialized_start=109816 + _PATTERNFLOWMPLSBOTTOMOFSTACK_CHOICE._serialized_end=109912 + _PATTERNFLOWMPLSBOTTOMOFSTACK_CHOICE_ENUM._serialized_start=109826 + _PATTERNFLOWMPLSBOTTOMOFSTACK_CHOICE_ENUM._serialized_end=109912 + _PATTERNFLOWMPLSTIMETOLIVECOUNTER._serialized_start=203699 + _PATTERNFLOWMPLSTIMETOLIVECOUNTER._serialized_end=203821 + _PATTERNFLOWMPLSTIMETOLIVEMETRICTAG._serialized_start=203824 + _PATTERNFLOWMPLSTIMETOLIVEMETRICTAG._serialized_end=203952 + _PATTERNFLOWMPLSTIMETOLIVE._serialized_start=203955 + _PATTERNFLOWMPLSTIMETOLIVE._serialized_end=204370 + _PATTERNFLOWMPLSTIMETOLIVE_CHOICE._serialized_start=110486 + _PATTERNFLOWMPLSTIMETOLIVE_CHOICE._serialized_end=110572 + _PATTERNFLOWMPLSTIMETOLIVE_CHOICE_ENUM._serialized_start=110496 + _PATTERNFLOWMPLSTIMETOLIVE_CHOICE_ENUM._serialized_end=110572 + _PATTERNFLOWRSVPVERSIONCOUNTER._serialized_start=204372 + _PATTERNFLOWRSVPVERSIONCOUNTER._serialized_end=204491 + _PATTERNFLOWRSVPVERSION._serialized_start=204494 + _PATTERNFLOWRSVPVERSION._serialized_end=204835 + _PATTERNFLOWRSVPVERSION_CHOICE._serialized_start=110486 + _PATTERNFLOWRSVPVERSION_CHOICE._serialized_end=110572 + _PATTERNFLOWRSVPVERSION_CHOICE_ENUM._serialized_start=110496 + _PATTERNFLOWRSVPVERSION_CHOICE_ENUM._serialized_end=110572 + _PATTERNFLOWRSVPRSVPCHECKSUM._serialized_start=204838 + _PATTERNFLOWRSVPRSVPCHECKSUM._serialized_end=205183 + _PATTERNFLOWRSVPRSVPCHECKSUM_CHOICE._serialized_start=124302 + _PATTERNFLOWRSVPRSVPCHECKSUM_CHOICE._serialized_end=124362 + _PATTERNFLOWRSVPRSVPCHECKSUM_CHOICE_ENUM._serialized_start=124312 + _PATTERNFLOWRSVPRSVPCHECKSUM_CHOICE_ENUM._serialized_end=124362 + _PATTERNFLOWRSVPRSVPCHECKSUM_GENERATED._serialized_start=124364 + _PATTERNFLOWRSVPRSVPCHECKSUM_GENERATED._serialized_end=124419 + _PATTERNFLOWRSVPRSVPCHECKSUM_GENERATED_ENUM._serialized_start=124377 + _PATTERNFLOWRSVPRSVPCHECKSUM_GENERATED_ENUM._serialized_end=124419 + _PATTERNFLOWRSVPTIMETOLIVECOUNTER._serialized_start=205185 + _PATTERNFLOWRSVPTIMETOLIVECOUNTER._serialized_end=205307 + _PATTERNFLOWRSVPTIMETOLIVE._serialized_start=205310 + _PATTERNFLOWRSVPTIMETOLIVE._serialized_end=205663 + _PATTERNFLOWRSVPTIMETOLIVE_CHOICE._serialized_start=110486 + _PATTERNFLOWRSVPTIMETOLIVE_CHOICE._serialized_end=110572 + _PATTERNFLOWRSVPTIMETOLIVE_CHOICE_ENUM._serialized_start=110496 + _PATTERNFLOWRSVPTIMETOLIVE_CHOICE_ENUM._serialized_end=110572 + _PATTERNFLOWRSVPRESERVEDCOUNTER._serialized_start=205665 + _PATTERNFLOWRSVPRESERVEDCOUNTER._serialized_end=205785 + _PATTERNFLOWRSVPRESERVED._serialized_start=205788 + _PATTERNFLOWRSVPRESERVED._serialized_end=206133 + _PATTERNFLOWRSVPRESERVED_CHOICE._serialized_start=110486 + _PATTERNFLOWRSVPRESERVED_CHOICE._serialized_end=110572 + _PATTERNFLOWRSVPRESERVED_CHOICE_ENUM._serialized_start=110496 + _PATTERNFLOWRSVPRESERVED_CHOICE_ENUM._serialized_end=110572 + _PATTERNFLOWRSVPPATHSESSIONLSPTUNNELIPV4IPV4TUNNELENDPOINTADDRESSCOUNTER._serialized_start=206136 + _PATTERNFLOWRSVPPATHSESSIONLSPTUNNELIPV4IPV4TUNNELENDPOINTADDRESSCOUNTER._serialized_end=206297 + _PATTERNFLOWRSVPPATHSESSIONLSPTUNNELIPV4IPV4TUNNELENDPOINTADDRESS._serialized_start=206300 + _PATTERNFLOWRSVPPATHSESSIONLSPTUNNELIPV4IPV4TUNNELENDPOINTADDRESS._serialized_end=206809 + _PATTERNFLOWRSVPPATHSESSIONLSPTUNNELIPV4IPV4TUNNELENDPOINTADDRESS_CHOICE._serialized_start=110486 + _PATTERNFLOWRSVPPATHSESSIONLSPTUNNELIPV4IPV4TUNNELENDPOINTADDRESS_CHOICE._serialized_end=110572 + _PATTERNFLOWRSVPPATHSESSIONLSPTUNNELIPV4IPV4TUNNELENDPOINTADDRESS_CHOICE_ENUM._serialized_start=110496 + _PATTERNFLOWRSVPPATHSESSIONLSPTUNNELIPV4IPV4TUNNELENDPOINTADDRESS_CHOICE_ENUM._serialized_end=110572 + _PATTERNFLOWRSVPPATHSESSIONLSPTUNNELIPV4RESERVEDCOUNTER._serialized_start=206812 + _PATTERNFLOWRSVPPATHSESSIONLSPTUNNELIPV4RESERVEDCOUNTER._serialized_end=206956 + _PATTERNFLOWRSVPPATHSESSIONLSPTUNNELIPV4RESERVED._serialized_start=206959 + _PATTERNFLOWRSVPPATHSESSIONLSPTUNNELIPV4RESERVED._serialized_end=207400 + _PATTERNFLOWRSVPPATHSESSIONLSPTUNNELIPV4RESERVED_CHOICE._serialized_start=110486 + _PATTERNFLOWRSVPPATHSESSIONLSPTUNNELIPV4RESERVED_CHOICE._serialized_end=110572 + _PATTERNFLOWRSVPPATHSESSIONLSPTUNNELIPV4RESERVED_CHOICE_ENUM._serialized_start=110496 + _PATTERNFLOWRSVPPATHSESSIONLSPTUNNELIPV4RESERVED_CHOICE_ENUM._serialized_end=110572 + _PATTERNFLOWRSVPPATHSESSIONLSPTUNNELIPV4TUNNELIDCOUNTER._serialized_start=207403 + _PATTERNFLOWRSVPPATHSESSIONLSPTUNNELIPV4TUNNELIDCOUNTER._serialized_end=207547 + _PATTERNFLOWRSVPPATHSESSIONLSPTUNNELIPV4TUNNELID._serialized_start=207550 + _PATTERNFLOWRSVPPATHSESSIONLSPTUNNELIPV4TUNNELID._serialized_end=207991 + _PATTERNFLOWRSVPPATHSESSIONLSPTUNNELIPV4TUNNELID_CHOICE._serialized_start=110486 + _PATTERNFLOWRSVPPATHSESSIONLSPTUNNELIPV4TUNNELID_CHOICE._serialized_end=110572 + _PATTERNFLOWRSVPPATHSESSIONLSPTUNNELIPV4TUNNELID_CHOICE_ENUM._serialized_start=110496 + _PATTERNFLOWRSVPPATHSESSIONLSPTUNNELIPV4TUNNELID_CHOICE_ENUM._serialized_end=110572 + _PATTERNFLOWRSVPPATHSESSIONLSPTUNNELIPV4EXTENDEDTUNNELIDCOUNTER._serialized_start=207994 + _PATTERNFLOWRSVPPATHSESSIONLSPTUNNELIPV4EXTENDEDTUNNELIDCOUNTER._serialized_end=208146 + _PATTERNFLOWRSVPPATHSESSIONLSPTUNNELIPV4EXTENDEDTUNNELID._serialized_start=208149 + _PATTERNFLOWRSVPPATHSESSIONLSPTUNNELIPV4EXTENDEDTUNNELID._serialized_end=208622 + _PATTERNFLOWRSVPPATHSESSIONLSPTUNNELIPV4EXTENDEDTUNNELID_CHOICE._serialized_start=110486 + _PATTERNFLOWRSVPPATHSESSIONLSPTUNNELIPV4EXTENDEDTUNNELID_CHOICE._serialized_end=110572 + _PATTERNFLOWRSVPPATHSESSIONLSPTUNNELIPV4EXTENDEDTUNNELID_CHOICE_ENUM._serialized_start=110496 + _PATTERNFLOWRSVPPATHSESSIONLSPTUNNELIPV4EXTENDEDTUNNELID_CHOICE_ENUM._serialized_end=110572 + _PATTERNFLOWRSVPPATHRSVPHOPIPV4IPV4NEXTPREVIOUSHOPADDRESSCOUNTER._serialized_start=208625 + _PATTERNFLOWRSVPPATHRSVPHOPIPV4IPV4NEXTPREVIOUSHOPADDRESSCOUNTER._serialized_end=208778 + _PATTERNFLOWRSVPPATHRSVPHOPIPV4IPV4NEXTPREVIOUSHOPADDRESS._serialized_start=208781 + _PATTERNFLOWRSVPPATHRSVPHOPIPV4IPV4NEXTPREVIOUSHOPADDRESS._serialized_end=209258 + _PATTERNFLOWRSVPPATHRSVPHOPIPV4IPV4NEXTPREVIOUSHOPADDRESS_CHOICE._serialized_start=110486 + _PATTERNFLOWRSVPPATHRSVPHOPIPV4IPV4NEXTPREVIOUSHOPADDRESS_CHOICE._serialized_end=110572 + _PATTERNFLOWRSVPPATHRSVPHOPIPV4IPV4NEXTPREVIOUSHOPADDRESS_CHOICE_ENUM._serialized_start=110496 + _PATTERNFLOWRSVPPATHRSVPHOPIPV4IPV4NEXTPREVIOUSHOPADDRESS_CHOICE_ENUM._serialized_end=110572 + _PATTERNFLOWRSVPPATHRSVPHOPIPV4LOGICALINTERFACEHANDLECOUNTER._serialized_start=209261 + _PATTERNFLOWRSVPPATHRSVPHOPIPV4LOGICALINTERFACEHANDLECOUNTER._serialized_end=209410 + _PATTERNFLOWRSVPPATHRSVPHOPIPV4LOGICALINTERFACEHANDLE._serialized_start=209413 + _PATTERNFLOWRSVPPATHRSVPHOPIPV4LOGICALINTERFACEHANDLE._serialized_end=209874 + _PATTERNFLOWRSVPPATHRSVPHOPIPV4LOGICALINTERFACEHANDLE_CHOICE._serialized_start=110486 + _PATTERNFLOWRSVPPATHRSVPHOPIPV4LOGICALINTERFACEHANDLE_CHOICE._serialized_end=110572 + _PATTERNFLOWRSVPPATHRSVPHOPIPV4LOGICALINTERFACEHANDLE_CHOICE_ENUM._serialized_start=110496 + _PATTERNFLOWRSVPPATHRSVPHOPIPV4LOGICALINTERFACEHANDLE_CHOICE_ENUM._serialized_end=110572 + _PATTERNFLOWRSVPPATHTIMEVALUESTYPE1REFRESHPERIODRCOUNTER._serialized_start=209877 + _PATTERNFLOWRSVPPATHTIMEVALUESTYPE1REFRESHPERIODRCOUNTER._serialized_end=210022 + _PATTERNFLOWRSVPPATHTIMEVALUESTYPE1REFRESHPERIODR._serialized_start=210025 + _PATTERNFLOWRSVPPATHTIMEVALUESTYPE1REFRESHPERIODR._serialized_end=210470 + _PATTERNFLOWRSVPPATHTIMEVALUESTYPE1REFRESHPERIODR_CHOICE._serialized_start=110486 + _PATTERNFLOWRSVPPATHTIMEVALUESTYPE1REFRESHPERIODR_CHOICE._serialized_end=110572 + _PATTERNFLOWRSVPPATHTIMEVALUESTYPE1REFRESHPERIODR_CHOICE_ENUM._serialized_start=110496 + _PATTERNFLOWRSVPPATHTIMEVALUESTYPE1REFRESHPERIODR_CHOICE_ENUM._serialized_end=110572 + _PATTERNFLOWRSVPPATHEXPLICITROUTETYPE1IPV4PREFIXLBITCOUNTER._serialized_start=210473 + _PATTERNFLOWRSVPPATHEXPLICITROUTETYPE1IPV4PREFIXLBITCOUNTER._serialized_end=210621 + _PATTERNFLOWRSVPPATHEXPLICITROUTETYPE1IPV4PREFIXLBIT._serialized_start=210624 + _PATTERNFLOWRSVPPATHEXPLICITROUTETYPE1IPV4PREFIXLBIT._serialized_end=211081 + _PATTERNFLOWRSVPPATHEXPLICITROUTETYPE1IPV4PREFIXLBIT_CHOICE._serialized_start=110486 + _PATTERNFLOWRSVPPATHEXPLICITROUTETYPE1IPV4PREFIXLBIT_CHOICE._serialized_end=110572 + _PATTERNFLOWRSVPPATHEXPLICITROUTETYPE1IPV4PREFIXLBIT_CHOICE_ENUM._serialized_start=110496 + _PATTERNFLOWRSVPPATHEXPLICITROUTETYPE1IPV4PREFIXLBIT_CHOICE_ENUM._serialized_end=110572 + _PATTERNFLOWRSVPPATHEXPLICITROUTETYPE1IPV4PREFIXIPV4ADDRESSCOUNTER._serialized_start=211084 + _PATTERNFLOWRSVPPATHEXPLICITROUTETYPE1IPV4PREFIXIPV4ADDRESSCOUNTER._serialized_end=211239 + _PATTERNFLOWRSVPPATHEXPLICITROUTETYPE1IPV4PREFIXIPV4ADDRESS._serialized_start=211242 + _PATTERNFLOWRSVPPATHEXPLICITROUTETYPE1IPV4PREFIXIPV4ADDRESS._serialized_end=211727 + _PATTERNFLOWRSVPPATHEXPLICITROUTETYPE1IPV4PREFIXIPV4ADDRESS_CHOICE._serialized_start=110486 + _PATTERNFLOWRSVPPATHEXPLICITROUTETYPE1IPV4PREFIXIPV4ADDRESS_CHOICE._serialized_end=110572 + _PATTERNFLOWRSVPPATHEXPLICITROUTETYPE1IPV4PREFIXIPV4ADDRESS_CHOICE_ENUM._serialized_start=110496 + _PATTERNFLOWRSVPPATHEXPLICITROUTETYPE1IPV4PREFIXIPV4ADDRESS_CHOICE_ENUM._serialized_end=110572 + _PATTERNFLOWRSVPPATHEXPLICITROUTETYPE1FOURBYTEASNUMBERLBITCOUNTER._serialized_start=211730 + _PATTERNFLOWRSVPPATHEXPLICITROUTETYPE1FOURBYTEASNUMBERLBITCOUNTER._serialized_end=211884 + _PATTERNFLOWRSVPPATHEXPLICITROUTETYPE1FOURBYTEASNUMBERLBIT._serialized_start=211887 + _PATTERNFLOWRSVPPATHEXPLICITROUTETYPE1FOURBYTEASNUMBERLBIT._serialized_end=212368 + _PATTERNFLOWRSVPPATHEXPLICITROUTETYPE1FOURBYTEASNUMBERLBIT_CHOICE._serialized_start=110486 + _PATTERNFLOWRSVPPATHEXPLICITROUTETYPE1FOURBYTEASNUMBERLBIT_CHOICE._serialized_end=110572 + _PATTERNFLOWRSVPPATHEXPLICITROUTETYPE1FOURBYTEASNUMBERLBIT_CHOICE_ENUM._serialized_start=110496 + _PATTERNFLOWRSVPPATHEXPLICITROUTETYPE1FOURBYTEASNUMBERLBIT_CHOICE_ENUM._serialized_end=110572 + _PATTERNFLOWRSVPPATHEXPLICITROUTETYPE1FOURBYTEASNUMBERRESERVEDCOUNTER._serialized_start=212371 + _PATTERNFLOWRSVPPATHEXPLICITROUTETYPE1FOURBYTEASNUMBERRESERVEDCOUNTER._serialized_end=212529 + _PATTERNFLOWRSVPPATHEXPLICITROUTETYPE1FOURBYTEASNUMBERRESERVED._serialized_start=212532 + _PATTERNFLOWRSVPPATHEXPLICITROUTETYPE1FOURBYTEASNUMBERRESERVED._serialized_end=213029 + _PATTERNFLOWRSVPPATHEXPLICITROUTETYPE1FOURBYTEASNUMBERRESERVED_CHOICE._serialized_start=110486 + _PATTERNFLOWRSVPPATHEXPLICITROUTETYPE1FOURBYTEASNUMBERRESERVED_CHOICE._serialized_end=110572 + _PATTERNFLOWRSVPPATHEXPLICITROUTETYPE1FOURBYTEASNUMBERRESERVED_CHOICE_ENUM._serialized_start=110496 + _PATTERNFLOWRSVPPATHEXPLICITROUTETYPE1FOURBYTEASNUMBERRESERVED_CHOICE_ENUM._serialized_end=110572 + _PATTERNFLOWRSVPPATHLABELREQUESTWITHOUTLABELRANGERESERVEDCOUNTER._serialized_start=213032 + _PATTERNFLOWRSVPPATHLABELREQUESTWITHOUTLABELRANGERESERVEDCOUNTER._serialized_end=213185 + _PATTERNFLOWRSVPPATHLABELREQUESTWITHOUTLABELRANGERESERVED._serialized_start=213188 + _PATTERNFLOWRSVPPATHLABELREQUESTWITHOUTLABELRANGERESERVED._serialized_end=213665 + _PATTERNFLOWRSVPPATHLABELREQUESTWITHOUTLABELRANGERESERVED_CHOICE._serialized_start=110486 + _PATTERNFLOWRSVPPATHLABELREQUESTWITHOUTLABELRANGERESERVED_CHOICE._serialized_end=110572 + _PATTERNFLOWRSVPPATHLABELREQUESTWITHOUTLABELRANGERESERVED_CHOICE_ENUM._serialized_start=110496 + _PATTERNFLOWRSVPPATHLABELREQUESTWITHOUTLABELRANGERESERVED_CHOICE_ENUM._serialized_end=110572 + _PATTERNFLOWRSVPPATHLABELREQUESTWITHOUTLABELRANGEL3PIDCOUNTER._serialized_start=213668 + _PATTERNFLOWRSVPPATHLABELREQUESTWITHOUTLABELRANGEL3PIDCOUNTER._serialized_end=213818 + _PATTERNFLOWRSVPPATHLABELREQUESTWITHOUTLABELRANGEL3PID._serialized_start=213821 + _PATTERNFLOWRSVPPATHLABELREQUESTWITHOUTLABELRANGEL3PID._serialized_end=214286 + _PATTERNFLOWRSVPPATHLABELREQUESTWITHOUTLABELRANGEL3PID_CHOICE._serialized_start=110486 + _PATTERNFLOWRSVPPATHLABELREQUESTWITHOUTLABELRANGEL3PID_CHOICE._serialized_end=110572 + _PATTERNFLOWRSVPPATHLABELREQUESTWITHOUTLABELRANGEL3PID_CHOICE_ENUM._serialized_start=110496 + _PATTERNFLOWRSVPPATHLABELREQUESTWITHOUTLABELRANGEL3PID_CHOICE_ENUM._serialized_end=110572 + _PATTERNFLOWRSVPPATHSENDERTEMPLATELSPTUNNELIPV4IPV4TUNNELSENDERADDRESSCOUNTER._serialized_start=214289 + _PATTERNFLOWRSVPPATHSENDERTEMPLATELSPTUNNELIPV4IPV4TUNNELSENDERADDRESSCOUNTER._serialized_end=214455 + _PATTERNFLOWRSVPPATHSENDERTEMPLATELSPTUNNELIPV4IPV4TUNNELSENDERADDRESS._serialized_start=214458 + _PATTERNFLOWRSVPPATHSENDERTEMPLATELSPTUNNELIPV4IPV4TUNNELSENDERADDRESS._serialized_end=214987 + _PATTERNFLOWRSVPPATHSENDERTEMPLATELSPTUNNELIPV4IPV4TUNNELSENDERADDRESS_CHOICE._serialized_start=110486 + _PATTERNFLOWRSVPPATHSENDERTEMPLATELSPTUNNELIPV4IPV4TUNNELSENDERADDRESS_CHOICE._serialized_end=110572 + _PATTERNFLOWRSVPPATHSENDERTEMPLATELSPTUNNELIPV4IPV4TUNNELSENDERADDRESS_CHOICE_ENUM._serialized_start=110496 + _PATTERNFLOWRSVPPATHSENDERTEMPLATELSPTUNNELIPV4IPV4TUNNELSENDERADDRESS_CHOICE_ENUM._serialized_end=110572 + _PATTERNFLOWRSVPPATHSENDERTEMPLATELSPTUNNELIPV4RESERVEDCOUNTER._serialized_start=214990 + _PATTERNFLOWRSVPPATHSENDERTEMPLATELSPTUNNELIPV4RESERVEDCOUNTER._serialized_end=215141 + _PATTERNFLOWRSVPPATHSENDERTEMPLATELSPTUNNELIPV4RESERVED._serialized_start=215144 + _PATTERNFLOWRSVPPATHSENDERTEMPLATELSPTUNNELIPV4RESERVED._serialized_end=215613 + _PATTERNFLOWRSVPPATHSENDERTEMPLATELSPTUNNELIPV4RESERVED_CHOICE._serialized_start=110486 + _PATTERNFLOWRSVPPATHSENDERTEMPLATELSPTUNNELIPV4RESERVED_CHOICE._serialized_end=110572 + _PATTERNFLOWRSVPPATHSENDERTEMPLATELSPTUNNELIPV4RESERVED_CHOICE_ENUM._serialized_start=110496 + _PATTERNFLOWRSVPPATHSENDERTEMPLATELSPTUNNELIPV4RESERVED_CHOICE_ENUM._serialized_end=110572 + _PATTERNFLOWRSVPPATHSENDERTEMPLATELSPTUNNELIPV4LSPIDCOUNTER._serialized_start=215616 + _PATTERNFLOWRSVPPATHSENDERTEMPLATELSPTUNNELIPV4LSPIDCOUNTER._serialized_end=215764 + _PATTERNFLOWRSVPPATHSENDERTEMPLATELSPTUNNELIPV4LSPID._serialized_start=215767 + _PATTERNFLOWRSVPPATHSENDERTEMPLATELSPTUNNELIPV4LSPID._serialized_end=216224 + _PATTERNFLOWRSVPPATHSENDERTEMPLATELSPTUNNELIPV4LSPID_CHOICE._serialized_start=110486 + _PATTERNFLOWRSVPPATHSENDERTEMPLATELSPTUNNELIPV4LSPID_CHOICE._serialized_end=110572 + _PATTERNFLOWRSVPPATHSENDERTEMPLATELSPTUNNELIPV4LSPID_CHOICE_ENUM._serialized_start=110496 + _PATTERNFLOWRSVPPATHSENDERTEMPLATELSPTUNNELIPV4LSPID_CHOICE_ENUM._serialized_end=110572 + _PATTERNFLOWRSVPPATHSENDERTSPECINTSERVVERSIONCOUNTER._serialized_start=216227 + _PATTERNFLOWRSVPPATHSENDERTSPECINTSERVVERSIONCOUNTER._serialized_end=216368 + _PATTERNFLOWRSVPPATHSENDERTSPECINTSERVVERSION._serialized_start=216371 + _PATTERNFLOWRSVPPATHSENDERTSPECINTSERVVERSION._serialized_end=216800 + _PATTERNFLOWRSVPPATHSENDERTSPECINTSERVVERSION_CHOICE._serialized_start=110486 + _PATTERNFLOWRSVPPATHSENDERTSPECINTSERVVERSION_CHOICE._serialized_end=110572 + _PATTERNFLOWRSVPPATHSENDERTSPECINTSERVVERSION_CHOICE_ENUM._serialized_start=110496 + _PATTERNFLOWRSVPPATHSENDERTSPECINTSERVVERSION_CHOICE_ENUM._serialized_end=110572 + _PATTERNFLOWRSVPPATHSENDERTSPECINTSERVRESERVED1COUNTER._serialized_start=216803 + _PATTERNFLOWRSVPPATHSENDERTSPECINTSERVRESERVED1COUNTER._serialized_end=216946 + _PATTERNFLOWRSVPPATHSENDERTSPECINTSERVRESERVED1._serialized_start=216949 + _PATTERNFLOWRSVPPATHSENDERTSPECINTSERVRESERVED1._serialized_end=217386 + _PATTERNFLOWRSVPPATHSENDERTSPECINTSERVRESERVED1_CHOICE._serialized_start=110486 + _PATTERNFLOWRSVPPATHSENDERTSPECINTSERVRESERVED1_CHOICE._serialized_end=110572 + _PATTERNFLOWRSVPPATHSENDERTSPECINTSERVRESERVED1_CHOICE_ENUM._serialized_start=110496 + _PATTERNFLOWRSVPPATHSENDERTSPECINTSERVRESERVED1_CHOICE_ENUM._serialized_end=110572 + _PATTERNFLOWRSVPPATHSENDERTSPECINTSERVOVERALLLENGTHCOUNTER._serialized_start=217389 + _PATTERNFLOWRSVPPATHSENDERTSPECINTSERVOVERALLLENGTHCOUNTER._serialized_end=217536 + _PATTERNFLOWRSVPPATHSENDERTSPECINTSERVOVERALLLENGTH._serialized_start=217539 + _PATTERNFLOWRSVPPATHSENDERTSPECINTSERVOVERALLLENGTH._serialized_end=217992 + _PATTERNFLOWRSVPPATHSENDERTSPECINTSERVOVERALLLENGTH_CHOICE._serialized_start=110486 + _PATTERNFLOWRSVPPATHSENDERTSPECINTSERVOVERALLLENGTH_CHOICE._serialized_end=110572 + _PATTERNFLOWRSVPPATHSENDERTSPECINTSERVOVERALLLENGTH_CHOICE_ENUM._serialized_start=110496 + _PATTERNFLOWRSVPPATHSENDERTSPECINTSERVOVERALLLENGTH_CHOICE_ENUM._serialized_end=110572 + _PATTERNFLOWRSVPPATHSENDERTSPECINTSERVSERVICEHEADERCOUNTER._serialized_start=217995 + _PATTERNFLOWRSVPPATHSENDERTSPECINTSERVSERVICEHEADERCOUNTER._serialized_end=218142 + _PATTERNFLOWRSVPPATHSENDERTSPECINTSERVSERVICEHEADER._serialized_start=218145 + _PATTERNFLOWRSVPPATHSENDERTSPECINTSERVSERVICEHEADER._serialized_end=218598 + _PATTERNFLOWRSVPPATHSENDERTSPECINTSERVSERVICEHEADER_CHOICE._serialized_start=110486 + _PATTERNFLOWRSVPPATHSENDERTSPECINTSERVSERVICEHEADER_CHOICE._serialized_end=110572 + _PATTERNFLOWRSVPPATHSENDERTSPECINTSERVSERVICEHEADER_CHOICE_ENUM._serialized_start=110496 + _PATTERNFLOWRSVPPATHSENDERTSPECINTSERVSERVICEHEADER_CHOICE_ENUM._serialized_end=110572 + _PATTERNFLOWRSVPPATHSENDERTSPECINTSERVZEROBITCOUNTER._serialized_start=218601 + _PATTERNFLOWRSVPPATHSENDERTSPECINTSERVZEROBITCOUNTER._serialized_end=218742 + _PATTERNFLOWRSVPPATHSENDERTSPECINTSERVZEROBIT._serialized_start=218745 + _PATTERNFLOWRSVPPATHSENDERTSPECINTSERVZEROBIT._serialized_end=219174 + _PATTERNFLOWRSVPPATHSENDERTSPECINTSERVZEROBIT_CHOICE._serialized_start=110486 + _PATTERNFLOWRSVPPATHSENDERTSPECINTSERVZEROBIT_CHOICE._serialized_end=110572 + _PATTERNFLOWRSVPPATHSENDERTSPECINTSERVZEROBIT_CHOICE_ENUM._serialized_start=110496 + _PATTERNFLOWRSVPPATHSENDERTSPECINTSERVZEROBIT_CHOICE_ENUM._serialized_end=110572 + _PATTERNFLOWRSVPPATHSENDERTSPECINTSERVRESERVED2COUNTER._serialized_start=219177 + _PATTERNFLOWRSVPPATHSENDERTSPECINTSERVRESERVED2COUNTER._serialized_end=219320 + _PATTERNFLOWRSVPPATHSENDERTSPECINTSERVRESERVED2._serialized_start=219323 + _PATTERNFLOWRSVPPATHSENDERTSPECINTSERVRESERVED2._serialized_end=219760 + _PATTERNFLOWRSVPPATHSENDERTSPECINTSERVRESERVED2_CHOICE._serialized_start=110486 + _PATTERNFLOWRSVPPATHSENDERTSPECINTSERVRESERVED2_CHOICE._serialized_end=110572 + _PATTERNFLOWRSVPPATHSENDERTSPECINTSERVRESERVED2_CHOICE_ENUM._serialized_start=110496 + _PATTERNFLOWRSVPPATHSENDERTSPECINTSERVRESERVED2_CHOICE_ENUM._serialized_end=110572 + _PATTERNFLOWRSVPPATHSENDERTSPECINTSERVLENGTHOFSERVICEDATACOUNTER._serialized_start=219763 + _PATTERNFLOWRSVPPATHSENDERTSPECINTSERVLENGTHOFSERVICEDATACOUNTER._serialized_end=219916 + _PATTERNFLOWRSVPPATHSENDERTSPECINTSERVLENGTHOFSERVICEDATA._serialized_start=219919 + _PATTERNFLOWRSVPPATHSENDERTSPECINTSERVLENGTHOFSERVICEDATA._serialized_end=220396 + _PATTERNFLOWRSVPPATHSENDERTSPECINTSERVLENGTHOFSERVICEDATA_CHOICE._serialized_start=110486 + _PATTERNFLOWRSVPPATHSENDERTSPECINTSERVLENGTHOFSERVICEDATA_CHOICE._serialized_end=110572 + _PATTERNFLOWRSVPPATHSENDERTSPECINTSERVLENGTHOFSERVICEDATA_CHOICE_ENUM._serialized_start=110496 + _PATTERNFLOWRSVPPATHSENDERTSPECINTSERVLENGTHOFSERVICEDATA_CHOICE_ENUM._serialized_end=110572 + _PATTERNFLOWRSVPPATHSENDERTSPECINTSERVPARAMETERIDTOKENBUCKETTSPECCOUNTER._serialized_start=220399 + _PATTERNFLOWRSVPPATHSENDERTSPECINTSERVPARAMETERIDTOKENBUCKETTSPECCOUNTER._serialized_end=220560 + _PATTERNFLOWRSVPPATHSENDERTSPECINTSERVPARAMETERIDTOKENBUCKETTSPEC._serialized_start=220563 + _PATTERNFLOWRSVPPATHSENDERTSPECINTSERVPARAMETERIDTOKENBUCKETTSPEC._serialized_end=221072 + _PATTERNFLOWRSVPPATHSENDERTSPECINTSERVPARAMETERIDTOKENBUCKETTSPEC_CHOICE._serialized_start=110486 + _PATTERNFLOWRSVPPATHSENDERTSPECINTSERVPARAMETERIDTOKENBUCKETTSPEC_CHOICE._serialized_end=110572 + _PATTERNFLOWRSVPPATHSENDERTSPECINTSERVPARAMETERIDTOKENBUCKETTSPEC_CHOICE_ENUM._serialized_start=110496 + _PATTERNFLOWRSVPPATHSENDERTSPECINTSERVPARAMETERIDTOKENBUCKETTSPEC_CHOICE_ENUM._serialized_end=110572 + _PATTERNFLOWRSVPPATHSENDERTSPECINTSERVPARAMETER127FLAGCOUNTER._serialized_start=221075 + _PATTERNFLOWRSVPPATHSENDERTSPECINTSERVPARAMETER127FLAGCOUNTER._serialized_end=221225 + _PATTERNFLOWRSVPPATHSENDERTSPECINTSERVPARAMETER127FLAG._serialized_start=221228 + _PATTERNFLOWRSVPPATHSENDERTSPECINTSERVPARAMETER127FLAG._serialized_end=221693 + _PATTERNFLOWRSVPPATHSENDERTSPECINTSERVPARAMETER127FLAG_CHOICE._serialized_start=110486 + _PATTERNFLOWRSVPPATHSENDERTSPECINTSERVPARAMETER127FLAG_CHOICE._serialized_end=110572 + _PATTERNFLOWRSVPPATHSENDERTSPECINTSERVPARAMETER127FLAG_CHOICE_ENUM._serialized_start=110496 + _PATTERNFLOWRSVPPATHSENDERTSPECINTSERVPARAMETER127FLAG_CHOICE_ENUM._serialized_end=110572 + _PATTERNFLOWRSVPPATHSENDERTSPECINTSERVPARAMETER127LENGTHCOUNTER._serialized_start=221696 + _PATTERNFLOWRSVPPATHSENDERTSPECINTSERVPARAMETER127LENGTHCOUNTER._serialized_end=221848 + _PATTERNFLOWRSVPPATHSENDERTSPECINTSERVPARAMETER127LENGTH._serialized_start=221851 + _PATTERNFLOWRSVPPATHSENDERTSPECINTSERVPARAMETER127LENGTH._serialized_end=222324 + _PATTERNFLOWRSVPPATHSENDERTSPECINTSERVPARAMETER127LENGTH_CHOICE._serialized_start=110486 + _PATTERNFLOWRSVPPATHSENDERTSPECINTSERVPARAMETER127LENGTH_CHOICE._serialized_end=110572 + _PATTERNFLOWRSVPPATHSENDERTSPECINTSERVPARAMETER127LENGTH_CHOICE_ENUM._serialized_start=110496 + _PATTERNFLOWRSVPPATHSENDERTSPECINTSERVPARAMETER127LENGTH_CHOICE_ENUM._serialized_end=110572 + _PATTERNFLOWRSVPPATHSENDERTSPECINTSERVMINIMUMPOLICEDUNITCOUNTER._serialized_start=222327 + _PATTERNFLOWRSVPPATHSENDERTSPECINTSERVMINIMUMPOLICEDUNITCOUNTER._serialized_end=222479 + _PATTERNFLOWRSVPPATHSENDERTSPECINTSERVMINIMUMPOLICEDUNIT._serialized_start=222482 + _PATTERNFLOWRSVPPATHSENDERTSPECINTSERVMINIMUMPOLICEDUNIT._serialized_end=222955 + _PATTERNFLOWRSVPPATHSENDERTSPECINTSERVMINIMUMPOLICEDUNIT_CHOICE._serialized_start=110486 + _PATTERNFLOWRSVPPATHSENDERTSPECINTSERVMINIMUMPOLICEDUNIT_CHOICE._serialized_end=110572 + _PATTERNFLOWRSVPPATHSENDERTSPECINTSERVMINIMUMPOLICEDUNIT_CHOICE_ENUM._serialized_start=110496 + _PATTERNFLOWRSVPPATHSENDERTSPECINTSERVMINIMUMPOLICEDUNIT_CHOICE_ENUM._serialized_end=110572 + _PATTERNFLOWRSVPPATHSENDERTSPECINTSERVMAXIMUMPACKETSIZECOUNTER._serialized_start=222958 + _PATTERNFLOWRSVPPATHSENDERTSPECINTSERVMAXIMUMPACKETSIZECOUNTER._serialized_end=223109 + _PATTERNFLOWRSVPPATHSENDERTSPECINTSERVMAXIMUMPACKETSIZE._serialized_start=223112 + _PATTERNFLOWRSVPPATHSENDERTSPECINTSERVMAXIMUMPACKETSIZE._serialized_end=223581 + _PATTERNFLOWRSVPPATHSENDERTSPECINTSERVMAXIMUMPACKETSIZE_CHOICE._serialized_start=110486 + _PATTERNFLOWRSVPPATHSENDERTSPECINTSERVMAXIMUMPACKETSIZE_CHOICE._serialized_end=110572 + _PATTERNFLOWRSVPPATHSENDERTSPECINTSERVMAXIMUMPACKETSIZE_CHOICE_ENUM._serialized_start=110496 + _PATTERNFLOWRSVPPATHSENDERTSPECINTSERVMAXIMUMPACKETSIZE_CHOICE_ENUM._serialized_end=110572 + _PATTERNFLOWRSVPPATHRECORDROUTETYPE1IPV4ADDRESSIPV4ADDRESSCOUNTER._serialized_start=223584 + _PATTERNFLOWRSVPPATHRECORDROUTETYPE1IPV4ADDRESSIPV4ADDRESSCOUNTER._serialized_end=223738 + _PATTERNFLOWRSVPPATHRECORDROUTETYPE1IPV4ADDRESSIPV4ADDRESS._serialized_start=223741 + _PATTERNFLOWRSVPPATHRECORDROUTETYPE1IPV4ADDRESSIPV4ADDRESS._serialized_end=224222 + _PATTERNFLOWRSVPPATHRECORDROUTETYPE1IPV4ADDRESSIPV4ADDRESS_CHOICE._serialized_start=110486 + _PATTERNFLOWRSVPPATHRECORDROUTETYPE1IPV4ADDRESSIPV4ADDRESS_CHOICE._serialized_end=110572 + _PATTERNFLOWRSVPPATHRECORDROUTETYPE1IPV4ADDRESSIPV4ADDRESS_CHOICE_ENUM._serialized_start=110496 + _PATTERNFLOWRSVPPATHRECORDROUTETYPE1IPV4ADDRESSIPV4ADDRESS_CHOICE_ENUM._serialized_end=110572 + _PATTERNFLOWRSVPPATHRECORDROUTETYPE1IPV4ADDRESSPREFIXLENGTHCOUNTER._serialized_start=224225 + _PATTERNFLOWRSVPPATHRECORDROUTETYPE1IPV4ADDRESSPREFIXLENGTHCOUNTER._serialized_end=224380 + _PATTERNFLOWRSVPPATHRECORDROUTETYPE1IPV4ADDRESSPREFIXLENGTH._serialized_start=224383 + _PATTERNFLOWRSVPPATHRECORDROUTETYPE1IPV4ADDRESSPREFIXLENGTH._serialized_end=224868 + _PATTERNFLOWRSVPPATHRECORDROUTETYPE1IPV4ADDRESSPREFIXLENGTH_CHOICE._serialized_start=110486 + _PATTERNFLOWRSVPPATHRECORDROUTETYPE1IPV4ADDRESSPREFIXLENGTH_CHOICE._serialized_end=110572 + _PATTERNFLOWRSVPPATHRECORDROUTETYPE1IPV4ADDRESSPREFIXLENGTH_CHOICE_ENUM._serialized_start=110496 + _PATTERNFLOWRSVPPATHRECORDROUTETYPE1IPV4ADDRESSPREFIXLENGTH_CHOICE_ENUM._serialized_end=110572 + _PATTERNFLOWRSVPPATHRECORDROUTETYPE1LABELFLAGS._serialized_start=224871 + _PATTERNFLOWRSVPPATHRECORDROUTETYPE1LABELFLAGS._serialized_end=225118 + _PATTERNFLOWRSVPPATHRECORDROUTETYPE1LABELFLAGS_CHOICE._serialized_start=225041 + _PATTERNFLOWRSVPPATHRECORDROUTETYPE1LABELFLAGS_CHOICE._serialized_end=225097 + _PATTERNFLOWRSVPPATHRECORDROUTETYPE1LABELFLAGS_CHOICE_ENUM._serialized_start=109826 + _PATTERNFLOWRSVPPATHRECORDROUTETYPE1LABELFLAGS_CHOICE_ENUM._serialized_end=109872 + _PATTERNFLOWRSVPPATHRECORDROUTETYPE1LABELCTYPE._serialized_start=225121 + _PATTERNFLOWRSVPPATHRECORDROUTETYPE1LABELCTYPE._serialized_end=225368 + _PATTERNFLOWRSVPPATHRECORDROUTETYPE1LABELCTYPE_CHOICE._serialized_start=225041 + _PATTERNFLOWRSVPPATHRECORDROUTETYPE1LABELCTYPE_CHOICE._serialized_end=225097 + _PATTERNFLOWRSVPPATHRECORDROUTETYPE1LABELCTYPE_CHOICE_ENUM._serialized_start=109826 + _PATTERNFLOWRSVPPATHRECORDROUTETYPE1LABELCTYPE_CHOICE_ENUM._serialized_end=109872 + _PATTERNFLOWRSVPPATHOBJECTSCUSTOMTYPECOUNTER._serialized_start=225371 + _PATTERNFLOWRSVPPATHOBJECTSCUSTOMTYPECOUNTER._serialized_end=225504 + _PATTERNFLOWRSVPPATHOBJECTSCUSTOMTYPE._serialized_start=225507 + _PATTERNFLOWRSVPPATHOBJECTSCUSTOMTYPE._serialized_end=225904 + _PATTERNFLOWRSVPPATHOBJECTSCUSTOMTYPE_CHOICE._serialized_start=110486 + _PATTERNFLOWRSVPPATHOBJECTSCUSTOMTYPE_CHOICE._serialized_end=110572 + _PATTERNFLOWRSVPPATHOBJECTSCUSTOMTYPE_CHOICE_ENUM._serialized_start=110496 + _PATTERNFLOWRSVPPATHOBJECTSCUSTOMTYPE_CHOICE_ENUM._serialized_end=110572 + _VERSION._serialized_start=225907 + _VERSION._serialized_end=226052 + _SUCCESS._serialized_start=226054 + _SUCCESS._serialized_end=226094 + _FAILURE._serialized_start=226096 + _FAILURE._serialized_end=226132 + _SETCONFIGREQUEST._serialized_start=226134 + _SETCONFIGREQUEST._serialized_end=226181 + _UPDATECONFIGREQUEST._serialized_start=226183 + _UPDATECONFIGREQUEST._serialized_end=226246 + _SETCONFIGRESPONSE._serialized_start=226248 + _SETCONFIGRESPONSE._serialized_end=226298 + _GETCONFIGRESPONSE._serialized_start=226300 + _GETCONFIGRESPONSE._serialized_end=226348 + _UPDATECONFIGRESPONSE._serialized_start=226350 + _UPDATECONFIGRESPONSE._serialized_end=226403 + _SETCONTROLSTATEREQUEST._serialized_start=226405 + _SETCONTROLSTATEREQUEST._serialized_end=226471 + _SETCONTROLSTATERESPONSE._serialized_start=226473 + _SETCONTROLSTATERESPONSE._serialized_end=226529 + _SETCONTROLACTIONREQUEST._serialized_start=226531 + _SETCONTROLACTIONREQUEST._serialized_end=226600 + _SETCONTROLACTIONRESPONSE._serialized_start=226602 + _SETCONTROLACTIONRESPONSE._serialized_end=226689 + _GETMETRICSREQUEST._serialized_start=226691 + _GETMETRICSREQUEST._serialized_end=226756 + _GETMETRICSRESPONSE._serialized_start=226758 + _GETMETRICSRESPONSE._serialized_end=226826 + _GETSTATESREQUEST._serialized_start=226828 + _GETSTATESREQUEST._serialized_end=226890 + _GETSTATESRESPONSE._serialized_start=226892 + _GETSTATESRESPONSE._serialized_end=226957 + _GETCAPTUREREQUEST._serialized_start=226959 + _GETCAPTUREREQUEST._serialized_end=227024 + _GETCAPTURERESPONSE._serialized_start=227026 + _GETCAPTURERESPONSE._serialized_end=227070 + _GETVERSIONRESPONSE._serialized_start=227072 + _GETVERSIONRESPONSE._serialized_end=227123 + _OPENAPI._serialized_start=227126 + _OPENAPI._serialized_end=227733 # @@protoc_insertion_point(module_scope) diff --git a/snappi/snappi.py b/snappi/snappi.py index 6c96cba5..6e4b1d4c 100644 --- a/snappi/snappi.py +++ b/snappi/snappi.py @@ -1476,7 +1476,7 @@ def port_name(self): # type: () -> str """port_name getter - The name of port object that will be part of the LAG. . x-constraint:. /components/schemas/Port/properties/name. . x-constraint:. /components/schemas/Port/properties/name. + The name of port object that will be part of the LAG. . x-constraint:. /components/schemas/Port/properties/name. Returns: str """ @@ -1486,7 +1486,7 @@ def port_name(self): def port_name(self, value): """port_name setter - The name of port object that will be part of the LAG. . x-constraint:. /components/schemas/Port/properties/name. . x-constraint:. /components/schemas/Port/properties/name. + The name of port object that will be part of the LAG. . x-constraint:. /components/schemas/Port/properties/name. value: str """ @@ -2502,7 +2502,7 @@ def port_names(self): # type: () -> List[str] """port_names getter - A list of unique names of port objects that will share the. choice settings. . x-constraint:. /components/schemas/Port/properties/name. . x-constraint:. /components/schemas/Port/properties/name. + A list of unique names of port objects that will share the. choice settings. . x-constraint:. /components/schemas/Port/properties/name. Returns: List[str] """ @@ -2512,7 +2512,7 @@ def port_names(self): def port_names(self, value): """port_names setter - A list of unique names of port objects that will share the. choice settings. . x-constraint:. /components/schemas/Port/properties/name. . x-constraint:. /components/schemas/Port/properties/name. + A list of unique names of port objects that will share the. choice settings. . x-constraint:. /components/schemas/Port/properties/name. value: List[str] """ @@ -2609,7 +2609,7 @@ def ieee_media_defaults(self): # type: () -> bool """ieee_media_defaults getter - Under Review: This field is currently under review for pending exploration on use cases. Under Review: This field is currently under review for pending exploration on use cases. Set to true to override the auto_negotiate, link_training. and rs_fec settings for gigabit ethernet interfaces. + Under Review: This field is currently under review for pending exploration on use cases. Set to true to override the auto_negotiate, link_training. and rs_fec settings for gigabit ethernet interfaces. Returns: bool """ @@ -2619,7 +2619,7 @@ def ieee_media_defaults(self): def ieee_media_defaults(self, value): """ieee_media_defaults setter - Under Review: This field is currently under review for pending exploration on use cases. Under Review: This field is currently under review for pending exploration on use cases. Set to true to override the auto_negotiate, link_training. and rs_fec settings for gigabit ethernet interfaces. + Under Review: This field is currently under review for pending exploration on use cases. Set to true to override the auto_negotiate, link_training. and rs_fec settings for gigabit ethernet interfaces. value: bool """ @@ -2630,7 +2630,7 @@ def auto_negotiate(self): # type: () -> bool """auto_negotiate getter - Under Review: This field is currently under review for pending exploration on use cases, given that separate configuration called `AutoNegotiation` already exists.. Under Review: This field is currently under review for pending exploration on use cases, given that separate configuration called `AutoNegotiation` already exists.. Enable/disable auto negotiation. + Under Review: This field is currently under review for pending exploration on use cases, given that separate configuration called `AutoNegotiation` already exists.. Enable/disable auto negotiation. Returns: bool """ @@ -2640,7 +2640,7 @@ def auto_negotiate(self): def auto_negotiate(self, value): """auto_negotiate setter - Under Review: This field is currently under review for pending exploration on use cases, given that separate configuration called `AutoNegotiation` already exists.. Under Review: This field is currently under review for pending exploration on use cases, given that separate configuration called `AutoNegotiation` already exists.. Enable/disable auto negotiation. + Under Review: This field is currently under review for pending exploration on use cases, given that separate configuration called `AutoNegotiation` already exists.. Enable/disable auto negotiation. value: bool """ @@ -3495,7 +3495,7 @@ def port_names(self): # type: () -> List[str] """port_names getter - The unique names of ports that the capture settings will apply to. Port_names cannot be duplicated between capture objects.. x-constraint:. /components/schemas/Port/properties/name. . x-constraint:. /components/schemas/Port/properties/name. + The unique names of ports that the capture settings will apply to. Port_names cannot be duplicated between capture objects.. x-constraint:. /components/schemas/Port/properties/name. Returns: List[str] """ @@ -3505,7 +3505,7 @@ def port_names(self): def port_names(self, value): """port_names setter - The unique names of ports that the capture settings will apply to. Port_names cannot be duplicated between capture objects.. x-constraint:. /components/schemas/Port/properties/name. . x-constraint:. /components/schemas/Port/properties/name. + The unique names of ports that the capture settings will apply to. Port_names cannot be duplicated between capture objects.. x-constraint:. /components/schemas/Port/properties/name. value: List[str] """ @@ -4594,7 +4594,7 @@ def capture( # type: (List[str],bool,int,Union[Literal["pcap"], Literal["pcapng"]],str) -> CaptureIter """Factory method that creates an instance of the Capture class - Under Review: There may be changes in filter configuration. Under Review: There may be changes in filter configuration. Configuration for capture settings. + Under Review: There may be changes in filter configuration. Configuration for capture settings. Returns: CaptureIter """ @@ -4620,7 +4620,7 @@ def add( # type: (List[str],bool,int,Union[Literal["pcap"], Literal["pcapng"]],str) -> Capture """Add method that creates and returns an instance of the Capture class - Under Review: There may be changes in filter configuration. Under Review: There may be changes in filter configuration. Configuration for capture settings. + Under Review: There may be changes in filter configuration. Configuration for capture settings. Returns: Capture """ @@ -5004,7 +5004,7 @@ def port_name(self): # type: () -> str """port_name getter - Name of the port that the Ethernet interface is configured on.. x-constraint:. /components/schemas/Port/properties/name. . x-constraint:. /components/schemas/Port/properties/name. + Name of the port that the Ethernet interface is configured on.. x-constraint:. /components/schemas/Port/properties/name. Returns: str """ @@ -5014,7 +5014,7 @@ def port_name(self): def port_name(self, value): """port_name setter - Name of the port that the Ethernet interface is configured on.. x-constraint:. /components/schemas/Port/properties/name. . x-constraint:. /components/schemas/Port/properties/name. + Name of the port that the Ethernet interface is configured on.. x-constraint:. /components/schemas/Port/properties/name. value: str """ @@ -5025,7 +5025,7 @@ def lag_name(self): # type: () -> str """lag_name getter - Name of the LAG that the Ethernet interface is configured on.. x-constraint:. /components/schemas/Lag/properties/name. . x-constraint:. /components/schemas/Lag/properties/name. + Name of the LAG that the Ethernet interface is configured on.. x-constraint:. /components/schemas/Lag/properties/name. Returns: str """ @@ -5035,7 +5035,7 @@ def lag_name(self): def lag_name(self, value): """lag_name setter - Name of the LAG that the Ethernet interface is configured on.. x-constraint:. /components/schemas/Lag/properties/name. . x-constraint:. /components/schemas/Lag/properties/name. + Name of the LAG that the Ethernet interface is configured on.. x-constraint:. /components/schemas/Lag/properties/name. value: str """ @@ -5046,7 +5046,7 @@ def vxlan_name(self): # type: () -> str """vxlan_name getter - Name of the VXLAN instance (or VXLAN tunnel) that this Ethernet interface is connected to.. x-constraint:. #/components/schemas/Vxlan.V4Tunnel/properties/name. #/components/schemas/Vxlan.V6Tunnel/properties/name. . x-constraint:. #/components/schemas/Vxlan.V4Tunnel/properties/name. #/components/schemas/Vxlan.V6Tunnel/properties/name. + Name of the VXLAN instance (or VXLAN tunnel) that this Ethernet interface is connected to.. x-constraint:. #/components/schemas/Vxlan.V4Tunnel/properties/name. #/components/schemas/Vxlan.V6Tunnel/properties/name. Returns: str """ @@ -5056,7 +5056,7 @@ def vxlan_name(self): def vxlan_name(self, value): """vxlan_name setter - Name of the VXLAN instance (or VXLAN tunnel) that this Ethernet interface is connected to.. x-constraint:. #/components/schemas/Vxlan.V4Tunnel/properties/name. #/components/schemas/Vxlan.V6Tunnel/properties/name. . x-constraint:. #/components/schemas/Vxlan.V4Tunnel/properties/name. #/components/schemas/Vxlan.V6Tunnel/properties/name. + Name of the VXLAN instance (or VXLAN tunnel) that this Ethernet interface is connected to.. x-constraint:. #/components/schemas/Vxlan.V4Tunnel/properties/name. #/components/schemas/Vxlan.V6Tunnel/properties/name. value: str """ @@ -5805,7 +5805,7 @@ def eth_name(self): # type: () -> str """eth_name getter - The unique name of the Ethernet interface behind which this Loopback interface will be created.. x-constraint:. /components/schemas/Device.Ethernet/properties/name. . x-constraint:. /components/schemas/Device.Ethernet/properties/name. + The unique name of the Ethernet interface behind which this Loopback interface will be created.. x-constraint:. /components/schemas/Device.Ethernet/properties/name. Returns: str """ @@ -5815,7 +5815,7 @@ def eth_name(self): def eth_name(self, value): """eth_name setter - The unique name of the Ethernet interface behind which this Loopback interface will be created.. x-constraint:. /components/schemas/Device.Ethernet/properties/name. . x-constraint:. /components/schemas/Device.Ethernet/properties/name. + The unique name of the Ethernet interface behind which this Loopback interface will be created.. x-constraint:. /components/schemas/Device.Ethernet/properties/name. value: str """ @@ -5964,7 +5964,7 @@ def eth_name(self): # type: () -> str """eth_name getter - The unique name of the Ethernet interface behind which this Loopback interface will be created.. x-constraint:. /components/schemas/Device.Ethernet/properties/name. . x-constraint:. /components/schemas/Device.Ethernet/properties/name. + The unique name of the Ethernet interface behind which this Loopback interface will be created.. x-constraint:. /components/schemas/Device.Ethernet/properties/name. Returns: str """ @@ -5974,7 +5974,7 @@ def eth_name(self): def eth_name(self, value): """eth_name setter - The unique name of the Ethernet interface behind which this Loopback interface will be created.. x-constraint:. /components/schemas/Device.Ethernet/properties/name. . x-constraint:. /components/schemas/Device.Ethernet/properties/name. + The unique name of the Ethernet interface behind which this Loopback interface will be created.. x-constraint:. /components/schemas/Device.Ethernet/properties/name. value: str """ @@ -6425,7 +6425,7 @@ def eth_name(self): # type: () -> str """eth_name getter - The unique name of the Ethernet interface on which ISIS is running. Two ISIS interfaces cannot share the same Ethernet. . x-constraint:. /components/schemas/Device.Ethernet/properties/name. . x-constraint:. /components/schemas/Device.Ethernet/properties/name. + The unique name of the Ethernet interface on which ISIS is running. Two ISIS interfaces cannot share the same Ethernet. . x-constraint:. /components/schemas/Device.Ethernet/properties/name. Returns: str """ @@ -6435,7 +6435,7 @@ def eth_name(self): def eth_name(self, value): """eth_name setter - The unique name of the Ethernet interface on which ISIS is running. Two ISIS interfaces cannot share the same Ethernet. . x-constraint:. /components/schemas/Device.Ethernet/properties/name. . x-constraint:. /components/schemas/Device.Ethernet/properties/name. + The unique name of the Ethernet interface on which ISIS is running. Two ISIS interfaces cannot share the same Ethernet. . x-constraint:. /components/schemas/Device.Ethernet/properties/name. value: str """ @@ -9829,7 +9829,7 @@ def ipv4_name(self): # type: () -> str """ipv4_name getter - The unique name of the IPv4 or Loopback IPv4 interface used as the source IP for this list of BGP peers.. x-constraint:. /components/schemas/Device.Ipv4/properties/name. /components/schemas/Device.Ipv4Loopback/properties/name. . x-constraint:. /components/schemas/Device.Ipv4/properties/name. /components/schemas/Device.Ipv4Loopback/properties/name. + The unique name of the IPv4 or Loopback IPv4 interface used as the source IP for this list of BGP peers.. x-constraint:. /components/schemas/Device.Ipv4/properties/name. /components/schemas/Device.Ipv4Loopback/properties/name. Returns: str """ @@ -9839,7 +9839,7 @@ def ipv4_name(self): def ipv4_name(self, value): """ipv4_name setter - The unique name of the IPv4 or Loopback IPv4 interface used as the source IP for this list of BGP peers.. x-constraint:. /components/schemas/Device.Ipv4/properties/name. /components/schemas/Device.Ipv4Loopback/properties/name. . x-constraint:. /components/schemas/Device.Ipv4/properties/name. /components/schemas/Device.Ipv4Loopback/properties/name. + The unique name of the IPv4 or Loopback IPv4 interface used as the source IP for this list of BGP peers.. x-constraint:. /components/schemas/Device.Ipv4/properties/name. /components/schemas/Device.Ipv4Loopback/properties/name. value: str """ @@ -13733,7 +13733,7 @@ def ext_communities(self): # type: () -> BgpExtCommunityIter """ext_communities getter - Deprecated: This property is deprecated in favor of property extended_communities. Deprecated: This property is deprecated in favor of property extended_communities. Optional Extended Community settings. The Extended Communities Attribute is transitive optional BGP attribute, with the Type Code 16. Community and Extended Communities attributes are utilized to trigger routing decisions, such as acceptance, rejection, preference, or redistribution. An extended community is an 8-Bytes value. It is divided into two main parts. The first Bytes of the community encode type and sub-type fields and the last Bytes carry unique set of data in format defined by the type and sub-type field. Extended communities provide larger range for grouping or categorizing communities. When type is administrator_as_2octet or administrator_as_4octet, the valid sub types are route target and origin. The valid value for administrator_as_2octet and administrator_as_4octet type is either two byte AS followed by four byte local administrator id or four byte AS followed by two byte local administrator id. When type is administrator_ipv4_address the valid sub types are route target and origin. The valid value for administrator_ipv4_address is four byte IPv4 address followed by two byte local administrator id. When type is opaque, valid sub types are color and encapsulation. When sub type is color, first two bytes of the value field contain flags and last four bytes contains the value of the color. When sub type is encapsulation the first four bytes of value field are reserved and last two bytes carries the tunnel type from IANA's "ETHER TYPES" registry e.g IPv4 (protocol type 0x0800), IPv6 (protocol type 0x86dd), and MPLS (protocol type 0x8847). When type is administrator_as_2octet_link_bandwidth the valid sub type is extended_bandwidth. The first two bytes of the value field contains the AS number and the last four bytes contains the bandwidth in IEEE floating point format. When type is evpn the valid subtype is mac_address. In the value field the low-order bit of the first byte(Flags) is defined as the "Sticky/static" flag and may be set to 1, indicating the MAC address is static and cannot move. The second byte is reserved and the last four bytes contain the sequence number which is used to ensure that PEs retain the correct MAC/IP Advertisement route when multiple updates occur for the same MAC address. Note evpn type is defined mainly for use with evpn route updates and not for IPv4 and IPv6 route updates. + Deprecated: This property is deprecated in favor of property extended_communities. Optional Extended Community settings. The Extended Communities Attribute is transitive optional BGP attribute, with the Type Code 16. Community and Extended Communities attributes are utilized to trigger routing decisions, such as acceptance, rejection, preference, or redistribution. An extended community is an 8-Bytes value. It is divided into two main parts. The first Bytes of the community encode type and sub-type fields and the last Bytes carry unique set of data in format defined by the type and sub-type field. Extended communities provide larger range for grouping or categorizing communities. When type is administrator_as_2octet or administrator_as_4octet, the valid sub types are route target and origin. The valid value for administrator_as_2octet and administrator_as_4octet type is either two byte AS followed by four byte local administrator id or four byte AS followed by two byte local administrator id. When type is administrator_ipv4_address the valid sub types are route target and origin. The valid value for administrator_ipv4_address is four byte IPv4 address followed by two byte local administrator id. When type is opaque, valid sub types are color and encapsulation. When sub type is color, first two bytes of the value field contain flags and last four bytes contains the value of the color. When sub type is encapsulation the first four bytes of value field are reserved and last two bytes carries the tunnel type from IANA's "ETHER TYPES" registry e.g IPv4 (protocol type 0x0800), IPv6 (protocol type 0x86dd), and MPLS (protocol type 0x8847). When type is administrator_as_2octet_link_bandwidth the valid sub type is extended_bandwidth. The first two bytes of the value field contains the AS number and the last four bytes contains the bandwidth in IEEE floating point format. When type is evpn the valid subtype is mac_address. In the value field the low-order bit of the first byte(Flags) is defined as the "Sticky/static" flag and may be set to 1, indicating the MAC address is static and cannot move. The second byte is reserved and the last four bytes contain the sequence number which is used to ensure that PEs retain the correct MAC/IP Advertisement route when multiple updates occur for the same MAC address. Note evpn type is defined mainly for use with evpn route updates and not for IPv4 and IPv6 route updates. Returns: BgpExtCommunityIter """ @@ -15887,7 +15887,7 @@ def ext_communities(self): # type: () -> BgpExtCommunityIter """ext_communities getter - Deprecated: This property is deprecated in favor of property extended_communities. Deprecated: This property is deprecated in favor of property extended_communities. Optional Extended Community settings. The Extended Communities Attribute is transitive optional BGP attribute, with the Type Code 16. Community and Extended Communities attributes are utilized to trigger routing decisions, such as acceptance, rejection, preference, or redistribution. An extended community is an 8-Bytes value. It is divided into two main parts. The first Bytes of the community encode type and sub-type fields and the last Bytes carry unique set of data in format defined by the type and sub-type field. Extended communities provide larger range for grouping or categorizing communities. When type is administrator_as_2octet or administrator_as_4octet, the valid sub types are route target and origin. The valid value for administrator_as_2octet and administrator_as_4octet type is either two byte AS followed by four byte local administrator id or four byte AS followed by two byte local administrator id. When type is administrator_ipv4_address the valid sub types are route target and origin. The valid value for administrator_ipv4_address is four byte IPv4 address followed by two byte local administrator id. When type is opaque, valid sub types are color and encapsulation. When sub type is color, first two bytes of the value field contain flags and last four bytes contains the value of the color. When sub type is encapsulation the first four bytes of value field are reserved and last two bytes carries the tunnel type from IANA's "ETHER TYPES" registry e.g IPv4 (protocol type 0x0800), IPv6 (protocol type 0x86dd), and MPLS (protocol type 0x8847). When type is administrator_as_2octet_link_bandwidth the valid sub type is extended_bandwidth. The first two bytes of the value field contains the AS number and the last four bytes contains the bandwidth in IEEE floating point format. When type is evpn the valid subtype is mac_address. In the value field the low-order bit of the first byte(Flags) is defined as the "Sticky/static" flag and may be set to 1, indicating the MAC address is static and cannot move. The second byte is reserved and the last four bytes contain the sequence number which is used to ensure that PEs retain the correct MAC/IP Advertisement route when multiple updates occur for the same MAC address. Note evpn type is defined mainly for use with evpn route updates and not for IPv4 and IPv6 route updates. + Deprecated: This property is deprecated in favor of property extended_communities. Optional Extended Community settings. The Extended Communities Attribute is transitive optional BGP attribute, with the Type Code 16. Community and Extended Communities attributes are utilized to trigger routing decisions, such as acceptance, rejection, preference, or redistribution. An extended community is an 8-Bytes value. It is divided into two main parts. The first Bytes of the community encode type and sub-type fields and the last Bytes carry unique set of data in format defined by the type and sub-type field. Extended communities provide larger range for grouping or categorizing communities. When type is administrator_as_2octet or administrator_as_4octet, the valid sub types are route target and origin. The valid value for administrator_as_2octet and administrator_as_4octet type is either two byte AS followed by four byte local administrator id or four byte AS followed by two byte local administrator id. When type is administrator_ipv4_address the valid sub types are route target and origin. The valid value for administrator_ipv4_address is four byte IPv4 address followed by two byte local administrator id. When type is opaque, valid sub types are color and encapsulation. When sub type is color, first two bytes of the value field contain flags and last four bytes contains the value of the color. When sub type is encapsulation the first four bytes of value field are reserved and last two bytes carries the tunnel type from IANA's "ETHER TYPES" registry e.g IPv4 (protocol type 0x0800), IPv6 (protocol type 0x86dd), and MPLS (protocol type 0x8847). When type is administrator_as_2octet_link_bandwidth the valid sub type is extended_bandwidth. The first two bytes of the value field contains the AS number and the last four bytes contains the bandwidth in IEEE floating point format. When type is evpn the valid subtype is mac_address. In the value field the low-order bit of the first byte(Flags) is defined as the "Sticky/static" flag and may be set to 1, indicating the MAC address is static and cannot move. The second byte is reserved and the last four bytes contain the sequence number which is used to ensure that PEs retain the correct MAC/IP Advertisement route when multiple updates occur for the same MAC address. Note evpn type is defined mainly for use with evpn route updates and not for IPv4 and IPv6 route updates. Returns: BgpExtCommunityIter """ @@ -20620,7 +20620,7 @@ def ipv6_name(self): # type: () -> str """ipv6_name getter - The unique name of IPv6 or Loopback IPv6 interface used as the source IP for this list of BGP peers.. x-constraint:. /components/schemas/Device.Ipv6/properties/name. /components/schemas/Device.Ipv6Loopback/properties/name. . x-constraint:. /components/schemas/Device.Ipv6/properties/name. /components/schemas/Device.Ipv6Loopback/properties/name. + The unique name of IPv6 or Loopback IPv6 interface used as the source IP for this list of BGP peers.. x-constraint:. /components/schemas/Device.Ipv6/properties/name. /components/schemas/Device.Ipv6Loopback/properties/name. Returns: str """ @@ -20630,7 +20630,7 @@ def ipv6_name(self): def ipv6_name(self, value): """ipv6_name setter - The unique name of IPv6 or Loopback IPv6 interface used as the source IP for this list of BGP peers.. x-constraint:. /components/schemas/Device.Ipv6/properties/name. /components/schemas/Device.Ipv6Loopback/properties/name. . x-constraint:. /components/schemas/Device.Ipv6/properties/name. /components/schemas/Device.Ipv6Loopback/properties/name. + The unique name of IPv6 or Loopback IPv6 interface used as the source IP for this list of BGP peers.. x-constraint:. /components/schemas/Device.Ipv6/properties/name. /components/schemas/Device.Ipv6Loopback/properties/name. value: str """ @@ -22237,7 +22237,7 @@ def source_interface(self): # type: () -> str """source_interface getter - Determines the source interface.. x-constraint:. /components/schemas/Device.Ipv4/properties/name. /components/schemas/Device.Ipv4Loopback/properties/name. . x-constraint:. /components/schemas/Device.Ipv4/properties/name. /components/schemas/Device.Ipv4Loopback/properties/name. + Determines the source interface.. x-constraint:. /components/schemas/Device.Ipv4/properties/name. /components/schemas/Device.Ipv4Loopback/properties/name. Returns: str """ @@ -22247,7 +22247,7 @@ def source_interface(self): def source_interface(self, value): """source_interface setter - Determines the source interface.. x-constraint:. /components/schemas/Device.Ipv4/properties/name. /components/schemas/Device.Ipv4Loopback/properties/name. . x-constraint:. /components/schemas/Device.Ipv4/properties/name. /components/schemas/Device.Ipv4Loopback/properties/name. + Determines the source interface.. x-constraint:. /components/schemas/Device.Ipv4/properties/name. /components/schemas/Device.Ipv4Loopback/properties/name. value: str """ @@ -22847,7 +22847,7 @@ def source_interface(self): # type: () -> str """source_interface getter - Determines the source interface.. x-constraint:. /components/schemas/Device.Ipv6/properties/name. /components/schemas/Device.Ipv6Loopback/properties/name. . x-constraint:. /components/schemas/Device.Ipv6/properties/name. /components/schemas/Device.Ipv6Loopback/properties/name. + Determines the source interface.. x-constraint:. /components/schemas/Device.Ipv6/properties/name. /components/schemas/Device.Ipv6Loopback/properties/name. Returns: str """ @@ -22857,7 +22857,7 @@ def source_interface(self): def source_interface(self, value): """source_interface setter - Determines the source interface.. x-constraint:. /components/schemas/Device.Ipv6/properties/name. /components/schemas/Device.Ipv6Loopback/properties/name. . x-constraint:. /components/schemas/Device.Ipv6/properties/name. /components/schemas/Device.Ipv6Loopback/properties/name. + Determines the source interface.. x-constraint:. /components/schemas/Device.Ipv6/properties/name. /components/schemas/Device.Ipv6Loopback/properties/name. value: str """ @@ -23463,7 +23463,7 @@ def ipv4_name(self): # type: () -> str """ipv4_name getter - The globally unique name of the IPv4 interface connected to the DUT. This name must match the "name" field of the "ipv4_addresses" on top which this RSVP interface is configured. . x-constraint:. /components/schemas/Device.Ipv4/properties/name. . x-constraint:. /components/schemas/Device.Ipv4/properties/name. + The globally unique name of the IPv4 interface connected to the DUT. This name must match the "name" field of the "ipv4_addresses" on top which this RSVP interface is configured. . x-constraint:. /components/schemas/Device.Ipv4/properties/name. Returns: str """ @@ -23473,7 +23473,7 @@ def ipv4_name(self): def ipv4_name(self, value): """ipv4_name setter - The globally unique name of the IPv4 interface connected to the DUT. This name must match the "name" field of the "ipv4_addresses" on top which this RSVP interface is configured. . x-constraint:. /components/schemas/Device.Ipv4/properties/name. . x-constraint:. /components/schemas/Device.Ipv4/properties/name. + The globally unique name of the IPv4 interface connected to the DUT. This name must match the "name" field of the "ipv4_addresses" on top which this RSVP interface is configured. . x-constraint:. /components/schemas/Device.Ipv4/properties/name. value: str """ @@ -23831,7 +23831,7 @@ def ipv4_name(self): # type: () -> str """ipv4_name getter - The globally unique name of the IPv4 or Loopback IPv4 interface acting as the RSVP ingress and egress endpoint for the LSPs configured on this interface. This must match the "name" field of either "ipv4_addresses" or "ipv4_loopbacks" on which this LSP interface is configured.. x-constraint:. /components/schemas/Device.Ipv4/properties/name. /components/schemas/Device.Ipv4Loopback/properties/name. . x-constraint:. /components/schemas/Device.Ipv4/properties/name. /components/schemas/Device.Ipv4Loopback/properties/name. + The globally unique name of the IPv4 or Loopback IPv4 interface acting as the RSVP ingress and egress endpoint for the LSPs configured on this interface. This must match the "name" field of either "ipv4_addresses" or "ipv4_loopbacks" on which this LSP interface is configured.. x-constraint:. /components/schemas/Device.Ipv4/properties/name. /components/schemas/Device.Ipv4Loopback/properties/name. Returns: str """ @@ -23841,7 +23841,7 @@ def ipv4_name(self): def ipv4_name(self, value): """ipv4_name setter - The globally unique name of the IPv4 or Loopback IPv4 interface acting as the RSVP ingress and egress endpoint for the LSPs configured on this interface. This must match the "name" field of either "ipv4_addresses" or "ipv4_loopbacks" on which this LSP interface is configured.. x-constraint:. /components/schemas/Device.Ipv4/properties/name. /components/schemas/Device.Ipv4Loopback/properties/name. . x-constraint:. /components/schemas/Device.Ipv4/properties/name. /components/schemas/Device.Ipv4Loopback/properties/name. + The globally unique name of the IPv4 or Loopback IPv4 interface acting as the RSVP ingress and egress endpoint for the LSPs configured on this interface. This must match the "name" field of either "ipv4_addresses" or "ipv4_loopbacks" on which this LSP interface is configured.. x-constraint:. /components/schemas/Device.Ipv4/properties/name. /components/schemas/Device.Ipv4Loopback/properties/name. value: str """ @@ -25906,7 +25906,7 @@ def egress_packet(self): # type: () -> FlowHeaderIter """egress_packet getter - Under Review: The packet header schema for egress tracking currently exposes unwanted fields. The query structure for tagged metrics inside flows metrics requires documenting expected response format.. Under Review: The packet header schema for egress tracking currently exposes unwanted fields. The query structure for tagged metrics inside flows metrics requires documenting expected response format.. The list of protocol headers defining the shape of all intended packets in corresponding flow as it is received. by traffic-generator port.. For all protocol headers, only the `metric_tags` property is configurable. + Under Review: The packet header schema for egress tracking currently exposes unwanted fields. The query structure for tagged metrics inside flows metrics requires documenting expected response format.. The list of protocol headers defining the shape of all intended packets in corresponding flow as it is received. by traffic-generator port.. For all protocol headers, only the `metric_tags` property is configurable. Returns: FlowHeaderIter """ @@ -26101,7 +26101,7 @@ def tx_name(self): # type: () -> str """tx_name getter - The unique name of port that is the transmit port.. x-constraint:. /components/schemas/Port/properties/name. /components/schemas/Lag/properties/name. . x-constraint:. /components/schemas/Port/properties/name. /components/schemas/Lag/properties/name. + The unique name of port that is the transmit port.. x-constraint:. /components/schemas/Port/properties/name. /components/schemas/Lag/properties/name. Returns: str """ @@ -26111,7 +26111,7 @@ def tx_name(self): def tx_name(self, value): """tx_name setter - The unique name of port that is the transmit port.. x-constraint:. /components/schemas/Port/properties/name. /components/schemas/Lag/properties/name. . x-constraint:. /components/schemas/Port/properties/name. /components/schemas/Lag/properties/name. + The unique name of port that is the transmit port.. x-constraint:. /components/schemas/Port/properties/name. /components/schemas/Lag/properties/name. value: str """ @@ -26124,7 +26124,7 @@ def rx_name(self): # type: () -> str """rx_name getter - Deprecated: This property is deprecated in favor of property rx_names. Deprecated: This property is deprecated in favor of property rx_names. The unique name of port that is the intended receive port.. x-constraint:. /components/schemas/Port/properties/name. /components/schemas/Lag/properties/name. . x-constraint:. /components/schemas/Port/properties/name. /components/schemas/Lag/properties/name. + Deprecated: This property is deprecated in favor of property rx_names. The unique name of port that is the intended receive port.. x-constraint:. /components/schemas/Port/properties/name. /components/schemas/Lag/properties/name. Returns: str """ @@ -26134,7 +26134,7 @@ def rx_name(self): def rx_name(self, value): """rx_name setter - Deprecated: This property is deprecated in favor of property rx_names. Deprecated: This property is deprecated in favor of property rx_names. The unique name of port that is the intended receive port.. x-constraint:. /components/schemas/Port/properties/name. /components/schemas/Lag/properties/name. . x-constraint:. /components/schemas/Port/properties/name. /components/schemas/Lag/properties/name. + Deprecated: This property is deprecated in favor of property rx_names. The unique name of port that is the intended receive port.. x-constraint:. /components/schemas/Port/properties/name. /components/schemas/Lag/properties/name. value: str """ @@ -26145,7 +26145,7 @@ def rx_names(self): # type: () -> List[str] """rx_names getter - Unique name of ports or lags that are intended receive endpoints.. x-constraint:. /components/schemas/Port/properties/name. /components/schemas/Lag/properties/name. . x-constraint:. /components/schemas/Port/properties/name. /components/schemas/Lag/properties/name. + Unique name of ports or lags that are intended receive endpoints.. x-constraint:. /components/schemas/Port/properties/name. /components/schemas/Lag/properties/name. Returns: List[str] """ @@ -26155,7 +26155,7 @@ def rx_names(self): def rx_names(self, value): """rx_names setter - Unique name of ports or lags that are intended receive endpoints.. x-constraint:. /components/schemas/Port/properties/name. /components/schemas/Lag/properties/name. . x-constraint:. /components/schemas/Port/properties/name. /components/schemas/Lag/properties/name. + Unique name of ports or lags that are intended receive endpoints.. x-constraint:. /components/schemas/Port/properties/name. /components/schemas/Lag/properties/name. value: List[str] """ @@ -26232,7 +26232,7 @@ def tx_names(self): # type: () -> List[str] """tx_names getter - TBD. x-constraint:. /components/schemas/Device.Ethernet/properties/name. /components/schemas/Device.Ipv4/properties/name. /components/schemas/Device.Ipv6/properties/name. /components/schemas/Bgp.V4RouteRange/properties/name. /components/schemas/Bgp.V6RouteRange/properties/name. /components/schemas/Bgp.CMacIpRange/properties/name. /components/schemas/Rsvp.LspIpv4Interface.P2PIngressIpv4Lsp/properties/name. /components/schemas/Isis.V4RouteRange/properties/name. /components/schemas/Isis.V6RouteRange/properties/name. . x-constraint:. /components/schemas/Device.Ethernet/properties/name. /components/schemas/Device.Ipv4/properties/name. /components/schemas/Device.Ipv6/properties/name. /components/schemas/Bgp.V4RouteRange/properties/name. /components/schemas/Bgp.V6RouteRange/properties/name. /components/schemas/Bgp.CMacIpRange/properties/name. /components/schemas/Rsvp.LspIpv4Interface.P2PIngressIpv4Lsp/properties/name. /components/schemas/Isis.V4RouteRange/properties/name. /components/schemas/Isis.V6RouteRange/properties/name. + TBD. x-constraint:. /components/schemas/Device.Ethernet/properties/name. /components/schemas/Device.Ipv4/properties/name. /components/schemas/Device.Ipv6/properties/name. /components/schemas/Bgp.V4RouteRange/properties/name. /components/schemas/Bgp.V6RouteRange/properties/name. /components/schemas/Bgp.CMacIpRange/properties/name. /components/schemas/Rsvp.LspIpv4Interface.P2PIngressIpv4Lsp/properties/name. /components/schemas/Isis.V4RouteRange/properties/name. /components/schemas/Isis.V6RouteRange/properties/name. Returns: List[str] """ @@ -26242,7 +26242,7 @@ def tx_names(self): def tx_names(self, value): """tx_names setter - TBD. x-constraint:. /components/schemas/Device.Ethernet/properties/name. /components/schemas/Device.Ipv4/properties/name. /components/schemas/Device.Ipv6/properties/name. /components/schemas/Bgp.V4RouteRange/properties/name. /components/schemas/Bgp.V6RouteRange/properties/name. /components/schemas/Bgp.CMacIpRange/properties/name. /components/schemas/Rsvp.LspIpv4Interface.P2PIngressIpv4Lsp/properties/name. /components/schemas/Isis.V4RouteRange/properties/name. /components/schemas/Isis.V6RouteRange/properties/name. . x-constraint:. /components/schemas/Device.Ethernet/properties/name. /components/schemas/Device.Ipv4/properties/name. /components/schemas/Device.Ipv6/properties/name. /components/schemas/Bgp.V4RouteRange/properties/name. /components/schemas/Bgp.V6RouteRange/properties/name. /components/schemas/Bgp.CMacIpRange/properties/name. /components/schemas/Rsvp.LspIpv4Interface.P2PIngressIpv4Lsp/properties/name. /components/schemas/Isis.V4RouteRange/properties/name. /components/schemas/Isis.V6RouteRange/properties/name. + TBD. x-constraint:. /components/schemas/Device.Ethernet/properties/name. /components/schemas/Device.Ipv4/properties/name. /components/schemas/Device.Ipv6/properties/name. /components/schemas/Bgp.V4RouteRange/properties/name. /components/schemas/Bgp.V6RouteRange/properties/name. /components/schemas/Bgp.CMacIpRange/properties/name. /components/schemas/Rsvp.LspIpv4Interface.P2PIngressIpv4Lsp/properties/name. /components/schemas/Isis.V4RouteRange/properties/name. /components/schemas/Isis.V6RouteRange/properties/name. value: List[str] """ @@ -26255,7 +26255,7 @@ def rx_names(self): # type: () -> List[str] """rx_names getter - TBD. x-constraint:. /components/schemas/Device.Ethernet/properties/name. /components/schemas/Device.Ipv4/properties/name. /components/schemas/Device.Ipv6/properties/name. /components/schemas/Bgp.V4RouteRange/properties/name. /components/schemas/Bgp.V6RouteRange/properties/name. /components/schemas/Bgp.CMacIpRange/properties/name. /components/schemas/Rsvp.LspIpv4Interface.P2PEgressIpv4Lsp/properties/name. /components/schemas/Isis.V4RouteRange/properties/name. /components/schemas/Isis.V6RouteRange/properties/name. . x-constraint:. /components/schemas/Device.Ethernet/properties/name. /components/schemas/Device.Ipv4/properties/name. /components/schemas/Device.Ipv6/properties/name. /components/schemas/Bgp.V4RouteRange/properties/name. /components/schemas/Bgp.V6RouteRange/properties/name. /components/schemas/Bgp.CMacIpRange/properties/name. /components/schemas/Rsvp.LspIpv4Interface.P2PEgressIpv4Lsp/properties/name. /components/schemas/Isis.V4RouteRange/properties/name. /components/schemas/Isis.V6RouteRange/properties/name. + TBD. x-constraint:. /components/schemas/Device.Ethernet/properties/name. /components/schemas/Device.Ipv4/properties/name. /components/schemas/Device.Ipv6/properties/name. /components/schemas/Bgp.V4RouteRange/properties/name. /components/schemas/Bgp.V6RouteRange/properties/name. /components/schemas/Bgp.CMacIpRange/properties/name. /components/schemas/Rsvp.LspIpv4Interface.P2PEgressIpv4Lsp/properties/name. /components/schemas/Isis.V4RouteRange/properties/name. /components/schemas/Isis.V6RouteRange/properties/name. Returns: List[str] """ @@ -26265,7 +26265,7 @@ def rx_names(self): def rx_names(self, value): """rx_names setter - TBD. x-constraint:. /components/schemas/Device.Ethernet/properties/name. /components/schemas/Device.Ipv4/properties/name. /components/schemas/Device.Ipv6/properties/name. /components/schemas/Bgp.V4RouteRange/properties/name. /components/schemas/Bgp.V6RouteRange/properties/name. /components/schemas/Bgp.CMacIpRange/properties/name. /components/schemas/Rsvp.LspIpv4Interface.P2PEgressIpv4Lsp/properties/name. /components/schemas/Isis.V4RouteRange/properties/name. /components/schemas/Isis.V6RouteRange/properties/name. . x-constraint:. /components/schemas/Device.Ethernet/properties/name. /components/schemas/Device.Ipv4/properties/name. /components/schemas/Device.Ipv6/properties/name. /components/schemas/Bgp.V4RouteRange/properties/name. /components/schemas/Bgp.V6RouteRange/properties/name. /components/schemas/Bgp.CMacIpRange/properties/name. /components/schemas/Rsvp.LspIpv4Interface.P2PEgressIpv4Lsp/properties/name. /components/schemas/Isis.V4RouteRange/properties/name. /components/schemas/Isis.V6RouteRange/properties/name. + TBD. x-constraint:. /components/schemas/Device.Ethernet/properties/name. /components/schemas/Device.Ipv4/properties/name. /components/schemas/Device.Ipv6/properties/name. /components/schemas/Bgp.V4RouteRange/properties/name. /components/schemas/Bgp.V6RouteRange/properties/name. /components/schemas/Bgp.CMacIpRange/properties/name. /components/schemas/Rsvp.LspIpv4Interface.P2PEgressIpv4Lsp/properties/name. /components/schemas/Isis.V4RouteRange/properties/name. /components/schemas/Isis.V6RouteRange/properties/name. value: List[str] """ @@ -26300,6 +26300,7 @@ class FlowHeader(OpenApiObject): "ppp", "igmpv1", "mpls", + "rsvp", ], }, "custom": {"type": "FlowCustom"}, @@ -26321,6 +26322,7 @@ class FlowHeader(OpenApiObject): "ppp": {"type": "FlowPpp"}, "igmpv1": {"type": "FlowIgmpv1"}, "mpls": {"type": "FlowMpls"}, + "rsvp": {"type": "FlowRsvp"}, } # type: Dict[str, str] _REQUIRED = () # type: tuple(str) @@ -26348,6 +26350,7 @@ class FlowHeader(OpenApiObject): PPP = "ppp" # type: str IGMPV1 = "igmpv1" # type: str MPLS = "mpls" # type: str + RSVP = "rsvp" # type: str _STATUS = {} # type: Dict[str, Union(type)] @@ -26574,14 +26577,25 @@ def mpls(self): """ return self._get_property("mpls", FlowMpls, self, "mpls") + @property + def rsvp(self): + # type: () -> FlowRsvp + """Factory property that returns an instance of the FlowRsvp class + + RSVP packet header as defined in RFC2205 and RFC3209. Currently only supported message type is "path" with mandatory objects and sub-objects. + + Returns: FlowRsvp + """ + return self._get_property("rsvp", FlowRsvp, self, "rsvp") + @property def choice(self): - # type: () -> Union[Literal["arp"], Literal["custom"], Literal["ethernet"], Literal["ethernetpause"], Literal["gre"], Literal["gtpv1"], Literal["gtpv2"], Literal["icmp"], Literal["icmpv6"], Literal["igmpv1"], Literal["ipv4"], Literal["ipv6"], Literal["mpls"], Literal["pfcpause"], Literal["ppp"], Literal["tcp"], Literal["udp"], Literal["vlan"], Literal["vxlan"]] + # type: () -> Union[Literal["arp"], Literal["custom"], Literal["ethernet"], Literal["ethernetpause"], Literal["gre"], Literal["gtpv1"], Literal["gtpv2"], Literal["icmp"], Literal["icmpv6"], Literal["igmpv1"], Literal["ipv4"], Literal["ipv6"], Literal["mpls"], Literal["pfcpause"], Literal["ppp"], Literal["rsvp"], Literal["tcp"], Literal["udp"], Literal["vlan"], Literal["vxlan"]] """choice getter The available types of flow headers. If one is not provided the default ethernet packet header MUST be provided. - Returns: Union[Literal["arp"], Literal["custom"], Literal["ethernet"], Literal["ethernetpause"], Literal["gre"], Literal["gtpv1"], Literal["gtpv2"], Literal["icmp"], Literal["icmpv6"], Literal["igmpv1"], Literal["ipv4"], Literal["ipv6"], Literal["mpls"], Literal["pfcpause"], Literal["ppp"], Literal["tcp"], Literal["udp"], Literal["vlan"], Literal["vxlan"]] + Returns: Union[Literal["arp"], Literal["custom"], Literal["ethernet"], Literal["ethernetpause"], Literal["gre"], Literal["gtpv1"], Literal["gtpv2"], Literal["icmp"], Literal["icmpv6"], Literal["igmpv1"], Literal["ipv4"], Literal["ipv6"], Literal["mpls"], Literal["pfcpause"], Literal["ppp"], Literal["rsvp"], Literal["tcp"], Literal["udp"], Literal["vlan"], Literal["vxlan"]] """ return self._get_property("choice") @@ -26591,7 +26605,7 @@ def choice(self, value): The available types of flow headers. If one is not provided the default ethernet packet header MUST be provided. - value: Union[Literal["arp"], Literal["custom"], Literal["ethernet"], Literal["ethernetpause"], Literal["gre"], Literal["gtpv1"], Literal["gtpv2"], Literal["icmp"], Literal["icmpv6"], Literal["igmpv1"], Literal["ipv4"], Literal["ipv6"], Literal["mpls"], Literal["pfcpause"], Literal["ppp"], Literal["tcp"], Literal["udp"], Literal["vlan"], Literal["vxlan"]] + value: Union[Literal["arp"], Literal["custom"], Literal["ethernet"], Literal["ethernetpause"], Literal["gre"], Literal["gtpv1"], Literal["gtpv2"], Literal["icmp"], Literal["icmpv6"], Literal["igmpv1"], Literal["ipv4"], Literal["ipv6"], Literal["mpls"], Literal["pfcpause"], Literal["ppp"], Literal["rsvp"], Literal["tcp"], Literal["udp"], Literal["vlan"], Literal["vxlan"]] """ self._set_property("choice", value) @@ -89417,323 +89431,13784 @@ def add(self, name=None, offset=0, length=8): return item -class FlowHeaderIter(OpenApiIter): - __slots__ = ("_parent", "_choice") +class FlowRsvp(OpenApiObject): + __slots__ = "_parent" - _GETITEM_RETURNS_CHOICE_OBJECT = True + _TYPES = { + "version": {"type": "PatternFlowRsvpVersion"}, + "flag": {"type": "FlowRSVPFlag"}, + "rsvp_checksum": {"type": "PatternFlowRsvpRsvpChecksum"}, + "time_to_live": {"type": "PatternFlowRsvpTimeToLive"}, + "reserved": {"type": "PatternFlowRsvpReserved"}, + "rsvp_length": {"type": "FlowRSVPLength"}, + "message_type": {"type": "FlowRSVPMessage"}, + } # type: Dict[str, str] - def __init__(self, parent=None, choice=None): - super(FlowHeaderIter, self).__init__() + _REQUIRED = () # type: tuple(str) + + _DEFAULTS = {} # type: Dict[str, Union(type)] + + _STATUS = {} # type: Dict[str, Union(type)] + + def __init__(self, parent=None): + super(FlowRsvp, self).__init__() self._parent = parent - self._choice = choice - def __getitem__(self, key): - # type: (str) -> Union[FlowArp, FlowCustom, FlowEthernet, FlowEthernetPause, FlowGre, FlowGtpv1, FlowGtpv2, FlowHeader, FlowIcmp, FlowIcmpv6, FlowIgmpv1, FlowIpv4, FlowIpv6, FlowMpls, FlowPfcPause, FlowPpp, FlowTcp, FlowUdp, FlowVlan, FlowVxlan] - return self._getitem(key) + @property + def version(self): + # type: () -> PatternFlowRsvpVersion + """version getter - def __iter__(self): - # type: () -> FlowHeaderIter - return self._iter() + Protocol Version number. Protocol Version number. Protocol Version number. Protocol Version number. - def __next__(self): - # type: () -> FlowHeader - return self._next() + Returns: PatternFlowRsvpVersion + """ + return self._get_property("version", PatternFlowRsvpVersion) - def next(self): - # type: () -> FlowHeader - return self._next() + @property + def flag(self): + # type: () -> FlowRSVPFlag + """flag getter - def _instanceOf(self, item): - if not isinstance(item, FlowHeader): - raise Exception("Item is not an instance of FlowHeader") + Flag, 0x01-0x08: Reserved. - def header(self): - # type: () -> FlowHeaderIter - """Factory method that creates an instance of the FlowHeader class + Returns: FlowRSVPFlag + """ + return self._get_property("flag", FlowRSVPFlag) - Configuration for all traffic packet headers + @property + def rsvp_checksum(self): + # type: () -> PatternFlowRsvpRsvpChecksum + """rsvp_checksum getter - Returns: FlowHeaderIter + The one's complement of the one's complement sum of the message, with the checksum field replaced by zero for the purpose of computing the checksum. An all-zero value means that no checksum was transmitted.The one's complement of the one's complement sum of the message, with the checksum field replaced by zero for the purpose of computing the checksum. An all-zero value means that no checksum was transmitted.The one's complement of the one's complement sum of the message, with the checksum field replaced by zero for the purpose of computing the checksum. An all-zero value means that no checksum was transmitted.The one's complement of the one's complement sum of the message, with the checksum field replaced by zero for the purpose of computing the checksum. An all-zero value means that no checksum was transmitted. + + Returns: PatternFlowRsvpRsvpChecksum """ - item = FlowHeader(parent=self._parent, choice=self._choice) - self._add(item) - return self + return self._get_property("rsvp_checksum", PatternFlowRsvpRsvpChecksum) - def add(self): - # type: () -> FlowHeader - """Add method that creates and returns an instance of the FlowHeader class + @property + def time_to_live(self): + # type: () -> PatternFlowRsvpTimeToLive + """time_to_live getter - Configuration for all traffic packet headers + The IP time-to-live(TTL) value with which the message was sent.The IP time-to-live(TTL) value with which the message was sent.The IP time-to-live(TTL) value with which the message was sent.The IP time-to-live(TTL) value with which the message was sent. - Returns: FlowHeader + Returns: PatternFlowRsvpTimeToLive """ - item = FlowHeader(parent=self._parent, choice=self._choice) - self._add(item) - return item + return self._get_property("time_to_live", PatternFlowRsvpTimeToLive) - def custom(self, bytes=None): - # type: (str) -> FlowHeaderIter - """Factory method that creates an instance of the FlowCustom class + @property + def reserved(self): + # type: () -> PatternFlowRsvpReserved + """reserved getter - Custom packet header + Reserved Reserved Reserved Reserved - Returns: FlowHeaderIter + Returns: PatternFlowRsvpReserved """ - item = FlowHeader() - item.custom - item.choice = "custom" - self._add(item) - return self + return self._get_property("reserved", PatternFlowRsvpReserved) - def ethernet(self): - # type: () -> FlowHeaderIter - """Factory method that creates an instance of the FlowEthernet class + @property + def rsvp_length(self): + # type: () -> FlowRSVPLength + """rsvp_length getter - Ethernet packet header + The sum of the lengths of the common header and all objects included in the message. - Returns: FlowHeaderIter + Returns: FlowRSVPLength """ - item = FlowHeader() - item.ethernet - item.choice = "ethernet" - self._add(item) - return self + return self._get_property("rsvp_length", FlowRSVPLength) - def vlan(self): - # type: () -> FlowHeaderIter - """Factory method that creates an instance of the FlowVlan class + @property + def message_type(self): + # type: () -> FlowRSVPMessage + """message_type getter - VLAN packet header + An 8-bit number that identifies the function of the RSVP message. There are aound 20 message types is defined https://www.iana.org/assignments/rsvp-parameters/rsvp-parameters.xhtml#rsvp-parameters-2 Among Those we are presently supporting "path"(value: 1) message type. - Returns: FlowHeaderIter + Returns: FlowRSVPMessage """ - item = FlowHeader() - item.vlan - item.choice = "vlan" - self._add(item) - return self + return self._get_property("message_type", FlowRSVPMessage) - def vxlan(self): - # type: () -> FlowHeaderIter - """Factory method that creates an instance of the FlowVxlan class - VXLAN packet header +class PatternFlowRsvpVersion(OpenApiObject): + __slots__ = ("_parent", "_choice") - Returns: FlowHeaderIter + _TYPES = { + "choice": { + "type": str, + "enum": [ + "value", + "values", + "increment", + "decrement", + ], + }, + "value": { + "type": int, + "format": "uint32", + "maximum": 15, + }, + "values": { + "type": list, + "itemtype": int, + "itemformat": "uint32", + "maximum": 15, + }, + "increment": {"type": "PatternFlowRsvpVersionCounter"}, + "decrement": {"type": "PatternFlowRsvpVersionCounter"}, + } # type: Dict[str, str] + + _REQUIRED = () # type: tuple(str) + + _DEFAULTS = { + "choice": "value", + "value": 1, + "values": [1], + } # type: Dict[str, Union(type)] + + VALUE = "value" # type: str + VALUES = "values" # type: str + INCREMENT = "increment" # type: str + DECREMENT = "decrement" # type: str + + _STATUS = {} # type: Dict[str, Union(type)] + + def __init__(self, parent=None, choice=None, value=1, values=[1]): + super(PatternFlowRsvpVersion, self).__init__() + self._parent = parent + self._set_property("value", value) + self._set_property("values", values) + if ( + "choice" in self._DEFAULTS + and choice is None + and self._DEFAULTS["choice"] in self._TYPES + ): + getattr(self, self._DEFAULTS["choice"]) + else: + self._set_property("choice", choice) + + def set(self, value=None, values=None): + for property_name, property_value in locals().items(): + if property_name != "self" and property_value is not None: + self._set_property(property_name, property_value) + + @property + def increment(self): + # type: () -> PatternFlowRsvpVersionCounter + """Factory property that returns an instance of the PatternFlowRsvpVersionCounter class + + integer counter pattern + + Returns: PatternFlowRsvpVersionCounter """ - item = FlowHeader() - item.vxlan - item.choice = "vxlan" - self._add(item) - return self + return self._get_property( + "increment", PatternFlowRsvpVersionCounter, self, "increment" + ) - def ipv4(self): - # type: () -> FlowHeaderIter - """Factory method that creates an instance of the FlowIpv4 class + @property + def decrement(self): + # type: () -> PatternFlowRsvpVersionCounter + """Factory property that returns an instance of the PatternFlowRsvpVersionCounter class - IPv4 packet header + integer counter pattern - Returns: FlowHeaderIter + Returns: PatternFlowRsvpVersionCounter """ - item = FlowHeader() - item.ipv4 - item.choice = "ipv4" - self._add(item) - return self + return self._get_property( + "decrement", PatternFlowRsvpVersionCounter, self, "decrement" + ) - def ipv6(self): - # type: () -> FlowHeaderIter - """Factory method that creates an instance of the FlowIpv6 class + @property + def choice(self): + # type: () -> Union[Literal["decrement"], Literal["increment"], Literal["value"], Literal["values"]] + """choice getter - IPv6 packet header + TBD - Returns: FlowHeaderIter + Returns: Union[Literal["decrement"], Literal["increment"], Literal["value"], Literal["values"]] """ - item = FlowHeader() - item.ipv6 - item.choice = "ipv6" - self._add(item) - return self + return self._get_property("choice") - def pfcpause(self): - # type: () -> FlowHeaderIter - """Factory method that creates an instance of the FlowPfcPause class + @choice.setter + def choice(self, value): + """choice setter - IEEE 802.1Qbb PFC Pause packet header. + TBD - Returns: FlowHeaderIter + value: Union[Literal["decrement"], Literal["increment"], Literal["value"], Literal["values"]] """ - item = FlowHeader() - item.pfcpause - item.choice = "pfcpause" - self._add(item) - return self + self._set_property("choice", value) - def ethernetpause(self): - # type: () -> FlowHeaderIter - """Factory method that creates an instance of the FlowEthernetPause class + @property + def value(self): + # type: () -> int + """value getter - IEEE 802.3x global ethernet pause packet header + TBD - Returns: FlowHeaderIter + Returns: int """ - item = FlowHeader() - item.ethernetpause - item.choice = "ethernetpause" - self._add(item) - return self + return self._get_property("value") - def tcp(self): - # type: () -> FlowHeaderIter - """Factory method that creates an instance of the FlowTcp class + @value.setter + def value(self, value): + """value setter - TCP packet header + TBD - Returns: FlowHeaderIter + value: int """ - item = FlowHeader() - item.tcp - item.choice = "tcp" - self._add(item) - return self + self._set_property("value", value, "value") - def udp(self): - # type: () -> FlowHeaderIter - """Factory method that creates an instance of the FlowUdp class + @property + def values(self): + # type: () -> List[int] + """values getter - UDP packet header + TBD - Returns: FlowHeaderIter + Returns: List[int] """ - item = FlowHeader() - item.udp - item.choice = "udp" - self._add(item) - return self + return self._get_property("values") - def gre(self): - # type: () -> FlowHeaderIter - """Factory method that creates an instance of the FlowGre class + @values.setter + def values(self, value): + """values setter - Standard GRE packet header (RFC2784) + TBD - Returns: FlowHeaderIter + value: List[int] """ - item = FlowHeader() - item.gre - item.choice = "gre" - self._add(item) - return self + self._set_property("values", value, "values") - def gtpv1(self): - # type: () -> FlowHeaderIter - """Factory method that creates an instance of the FlowGtpv1 class - GTPv1 packet header +class PatternFlowRsvpVersionCounter(OpenApiObject): + __slots__ = "_parent" - Returns: FlowHeaderIter + _TYPES = { + "start": { + "type": int, + "format": "uint32", + "maximum": 15, + }, + "step": { + "type": int, + "format": "uint32", + "maximum": 15, + }, + "count": { + "type": int, + "format": "uint32", + "maximum": 15, + }, + } # type: Dict[str, str] + + _REQUIRED = () # type: tuple(str) + + _DEFAULTS = { + "start": 1, + "step": 1, + "count": 1, + } # type: Dict[str, Union(type)] + + _STATUS = {} # type: Dict[str, Union(type)] + + def __init__(self, parent=None, start=1, step=1, count=1): + super(PatternFlowRsvpVersionCounter, self).__init__() + self._parent = parent + self._set_property("start", start) + self._set_property("step", step) + self._set_property("count", count) + + def set(self, start=None, step=None, count=None): + for property_name, property_value in locals().items(): + if property_name != "self" and property_value is not None: + self._set_property(property_name, property_value) + + @property + def start(self): + # type: () -> int + """start getter + + TBD + + Returns: int """ - item = FlowHeader() - item.gtpv1 - item.choice = "gtpv1" - self._add(item) - return self + return self._get_property("start") - def gtpv2(self): - # type: () -> FlowHeaderIter - """Factory method that creates an instance of the FlowGtpv2 class + @start.setter + def start(self, value): + """start setter - GTPv2 packet header + TBD - Returns: FlowHeaderIter + value: int """ - item = FlowHeader() - item.gtpv2 - item.choice = "gtpv2" - self._add(item) - return self + self._set_property("start", value) - def arp(self): - # type: () -> FlowHeaderIter - """Factory method that creates an instance of the FlowArp class + @property + def step(self): + # type: () -> int + """step getter - ARP packet header + TBD - Returns: FlowHeaderIter + Returns: int """ - item = FlowHeader() - item.arp - item.choice = "arp" - self._add(item) - return self + return self._get_property("step") - def icmp(self): - # type: () -> FlowHeaderIter - """Factory method that creates an instance of the FlowIcmp class + @step.setter + def step(self, value): + """step setter - ICMP packet header + TBD - Returns: FlowHeaderIter + value: int """ - item = FlowHeader() - item.icmp - item.choice = "icmp" - self._add(item) - return self + self._set_property("step", value) - def icmpv6(self): - # type: () -> FlowHeaderIter - """Factory method that creates an instance of the FlowIcmpv6 class + @property + def count(self): + # type: () -> int + """count getter - ICMPv6 packet header + TBD - Returns: FlowHeaderIter + Returns: int """ - item = FlowHeader() - item.icmpv6 - item.choice = "icmpv6" - self._add(item) - return self + return self._get_property("count") - def ppp(self): - # type: () -> FlowHeaderIter - """Factory method that creates an instance of the FlowPpp class + @count.setter + def count(self, value): + """count setter - PPP packet header + TBD - Returns: FlowHeaderIter + value: int """ - item = FlowHeader() - item.ppp - item.choice = "ppp" - self._add(item) - return self + self._set_property("count", value) - def igmpv1(self): - # type: () -> FlowHeaderIter - """Factory method that creates an instance of the FlowIgmpv1 class - IGMPv1 packet header +class FlowRSVPFlag(OpenApiObject): + __slots__ = ("_parent", "_choice") - Returns: FlowHeaderIter + _TYPES = { + "choice": { + "type": str, + "enum": [ + "not_refresh_reduction_capable", + "refresh_reduction_capable", + ], + }, + } # type: Dict[str, str] + + _REQUIRED = () # type: tuple(str) + + _DEFAULTS = { + "choice": "not_refresh_reduction_capable", + } # type: Dict[str, Union(type)] + + NOT_REFRESH_REDUCTION_CAPABLE = "not_refresh_reduction_capable" # type: str + REFRESH_REDUCTION_CAPABLE = "refresh_reduction_capable" # type: str + + _STATUS = {} # type: Dict[str, Union(type)] + + def __init__(self, parent=None, choice=None): + super(FlowRSVPFlag, self).__init__() + self._parent = parent + if ( + "choice" in self._DEFAULTS + and choice is None + and self._DEFAULTS["choice"] in self._TYPES + ): + getattr(self, self._DEFAULTS["choice"]) + else: + self._set_property("choice", choice) + + @property + def choice(self): + # type: () -> Union[Literal["not_refresh_reduction_capable"], Literal["refresh_reduction_capable"]] + """choice getter + + TBD + + Returns: Union[Literal["not_refresh_reduction_capable"], Literal["refresh_reduction_capable"]] """ - item = FlowHeader() - item.igmpv1 - item.choice = "igmpv1" - self._add(item) - return self + return self._get_property("choice") - def mpls(self): - # type: () -> FlowHeaderIter - """Factory method that creates an instance of the FlowMpls class + @choice.setter + def choice(self, value): + """choice setter - MPLS packet header; When configuring multiple such headers, the count shall not exceed 20. + TBD - Returns: FlowHeaderIter + value: Union[Literal["not_refresh_reduction_capable"], Literal["refresh_reduction_capable"]] """ - item = FlowHeader() - item.mpls - item.choice = "mpls" + self._set_property("choice", value) + + +class PatternFlowRsvpRsvpChecksum(OpenApiObject): + __slots__ = ("_parent", "_choice") + + _TYPES = { + "choice": { + "type": str, + "enum": [ + "generated", + "custom", + ], + }, + "generated": { + "type": str, + "enum": [ + "good", + "bad", + ], + }, + "custom": { + "type": int, + "format": "uint32", + "maximum": 65535, + }, + } # type: Dict[str, str] + + _REQUIRED = () # type: tuple(str) + + _DEFAULTS = { + "choice": "generated", + "generated": "good", + } # type: Dict[str, Union(type)] + + GENERATED = "generated" # type: str + CUSTOM = "custom" # type: str + + GOOD = "good" # type: str + BAD = "bad" # type: str + + _STATUS = {} # type: Dict[str, Union(type)] + + def __init__(self, parent=None, choice=None, generated="good", custom=None): + super(PatternFlowRsvpRsvpChecksum, self).__init__() + self._parent = parent + self._set_property("generated", generated) + self._set_property("custom", custom) + if ( + "choice" in self._DEFAULTS + and choice is None + and self._DEFAULTS["choice"] in self._TYPES + ): + getattr(self, self._DEFAULTS["choice"]) + else: + self._set_property("choice", choice) + + def set(self, generated=None, custom=None): + for property_name, property_value in locals().items(): + if property_name != "self" and property_value is not None: + self._set_property(property_name, property_value) + + @property + def choice(self): + # type: () -> Union[Literal["custom"], Literal["generated"]] + """choice getter + + The type of checksum + + Returns: Union[Literal["custom"], Literal["generated"]] + """ + return self._get_property("choice") + + @choice.setter + def choice(self, value): + """choice setter + + The type of checksum + + value: Union[Literal["custom"], Literal["generated"]] + """ + self._set_property("choice", value) + + @property + def generated(self): + # type: () -> Union[Literal["bad"], Literal["good"]] + """generated getter + + A system generated checksum value + + Returns: Union[Literal["bad"], Literal["good"]] + """ + return self._get_property("generated") + + @generated.setter + def generated(self, value): + """generated setter + + A system generated checksum value + + value: Union[Literal["bad"], Literal["good"]] + """ + self._set_property("generated", value, "generated") + + @property + def custom(self): + # type: () -> int + """custom getter + + A custom checksum value + + Returns: int + """ + return self._get_property("custom") + + @custom.setter + def custom(self, value): + """custom setter + + A custom checksum value + + value: int + """ + self._set_property("custom", value, "custom") + + +class PatternFlowRsvpTimeToLive(OpenApiObject): + __slots__ = ("_parent", "_choice") + + _TYPES = { + "choice": { + "type": str, + "enum": [ + "value", + "values", + "increment", + "decrement", + ], + }, + "value": { + "type": int, + "format": "uint32", + "maximum": 255, + }, + "values": { + "type": list, + "itemtype": int, + "itemformat": "uint32", + "maximum": 255, + }, + "increment": {"type": "PatternFlowRsvpTimeToLiveCounter"}, + "decrement": {"type": "PatternFlowRsvpTimeToLiveCounter"}, + } # type: Dict[str, str] + + _REQUIRED = () # type: tuple(str) + + _DEFAULTS = { + "choice": "value", + "value": 0, + "values": [0], + } # type: Dict[str, Union(type)] + + VALUE = "value" # type: str + VALUES = "values" # type: str + INCREMENT = "increment" # type: str + DECREMENT = "decrement" # type: str + + _STATUS = {} # type: Dict[str, Union(type)] + + def __init__(self, parent=None, choice=None, value=0, values=[0]): + super(PatternFlowRsvpTimeToLive, self).__init__() + self._parent = parent + self._set_property("value", value) + self._set_property("values", values) + if ( + "choice" in self._DEFAULTS + and choice is None + and self._DEFAULTS["choice"] in self._TYPES + ): + getattr(self, self._DEFAULTS["choice"]) + else: + self._set_property("choice", choice) + + def set(self, value=None, values=None): + for property_name, property_value in locals().items(): + if property_name != "self" and property_value is not None: + self._set_property(property_name, property_value) + + @property + def increment(self): + # type: () -> PatternFlowRsvpTimeToLiveCounter + """Factory property that returns an instance of the PatternFlowRsvpTimeToLiveCounter class + + integer counter pattern + + Returns: PatternFlowRsvpTimeToLiveCounter + """ + return self._get_property( + "increment", PatternFlowRsvpTimeToLiveCounter, self, "increment" + ) + + @property + def decrement(self): + # type: () -> PatternFlowRsvpTimeToLiveCounter + """Factory property that returns an instance of the PatternFlowRsvpTimeToLiveCounter class + + integer counter pattern + + Returns: PatternFlowRsvpTimeToLiveCounter + """ + return self._get_property( + "decrement", PatternFlowRsvpTimeToLiveCounter, self, "decrement" + ) + + @property + def choice(self): + # type: () -> Union[Literal["decrement"], Literal["increment"], Literal["value"], Literal["values"]] + """choice getter + + TBD + + Returns: Union[Literal["decrement"], Literal["increment"], Literal["value"], Literal["values"]] + """ + return self._get_property("choice") + + @choice.setter + def choice(self, value): + """choice setter + + TBD + + value: Union[Literal["decrement"], Literal["increment"], Literal["value"], Literal["values"]] + """ + self._set_property("choice", value) + + @property + def value(self): + # type: () -> int + """value getter + + TBD + + Returns: int + """ + return self._get_property("value") + + @value.setter + def value(self, value): + """value setter + + TBD + + value: int + """ + self._set_property("value", value, "value") + + @property + def values(self): + # type: () -> List[int] + """values getter + + TBD + + Returns: List[int] + """ + return self._get_property("values") + + @values.setter + def values(self, value): + """values setter + + TBD + + value: List[int] + """ + self._set_property("values", value, "values") + + +class PatternFlowRsvpTimeToLiveCounter(OpenApiObject): + __slots__ = "_parent" + + _TYPES = { + "start": { + "type": int, + "format": "uint32", + "maximum": 255, + }, + "step": { + "type": int, + "format": "uint32", + "maximum": 255, + }, + "count": { + "type": int, + "format": "uint32", + "maximum": 255, + }, + } # type: Dict[str, str] + + _REQUIRED = () # type: tuple(str) + + _DEFAULTS = { + "start": 0, + "step": 1, + "count": 1, + } # type: Dict[str, Union(type)] + + _STATUS = {} # type: Dict[str, Union(type)] + + def __init__(self, parent=None, start=0, step=1, count=1): + super(PatternFlowRsvpTimeToLiveCounter, self).__init__() + self._parent = parent + self._set_property("start", start) + self._set_property("step", step) + self._set_property("count", count) + + def set(self, start=None, step=None, count=None): + for property_name, property_value in locals().items(): + if property_name != "self" and property_value is not None: + self._set_property(property_name, property_value) + + @property + def start(self): + # type: () -> int + """start getter + + TBD + + Returns: int + """ + return self._get_property("start") + + @start.setter + def start(self, value): + """start setter + + TBD + + value: int + """ + self._set_property("start", value) + + @property + def step(self): + # type: () -> int + """step getter + + TBD + + Returns: int + """ + return self._get_property("step") + + @step.setter + def step(self, value): + """step setter + + TBD + + value: int + """ + self._set_property("step", value) + + @property + def count(self): + # type: () -> int + """count getter + + TBD + + Returns: int + """ + return self._get_property("count") + + @count.setter + def count(self, value): + """count setter + + TBD + + value: int + """ + self._set_property("count", value) + + +class PatternFlowRsvpReserved(OpenApiObject): + __slots__ = ("_parent", "_choice") + + _TYPES = { + "choice": { + "type": str, + "enum": [ + "value", + "values", + "increment", + "decrement", + ], + }, + "value": { + "type": int, + "format": "uint32", + "maximum": 255, + }, + "values": { + "type": list, + "itemtype": int, + "itemformat": "uint32", + "maximum": 255, + }, + "increment": {"type": "PatternFlowRsvpReservedCounter"}, + "decrement": {"type": "PatternFlowRsvpReservedCounter"}, + } # type: Dict[str, str] + + _REQUIRED = () # type: tuple(str) + + _DEFAULTS = { + "choice": "value", + "value": 0, + "values": [0], + } # type: Dict[str, Union(type)] + + VALUE = "value" # type: str + VALUES = "values" # type: str + INCREMENT = "increment" # type: str + DECREMENT = "decrement" # type: str + + _STATUS = {} # type: Dict[str, Union(type)] + + def __init__(self, parent=None, choice=None, value=0, values=[0]): + super(PatternFlowRsvpReserved, self).__init__() + self._parent = parent + self._set_property("value", value) + self._set_property("values", values) + if ( + "choice" in self._DEFAULTS + and choice is None + and self._DEFAULTS["choice"] in self._TYPES + ): + getattr(self, self._DEFAULTS["choice"]) + else: + self._set_property("choice", choice) + + def set(self, value=None, values=None): + for property_name, property_value in locals().items(): + if property_name != "self" and property_value is not None: + self._set_property(property_name, property_value) + + @property + def increment(self): + # type: () -> PatternFlowRsvpReservedCounter + """Factory property that returns an instance of the PatternFlowRsvpReservedCounter class + + integer counter pattern + + Returns: PatternFlowRsvpReservedCounter + """ + return self._get_property( + "increment", PatternFlowRsvpReservedCounter, self, "increment" + ) + + @property + def decrement(self): + # type: () -> PatternFlowRsvpReservedCounter + """Factory property that returns an instance of the PatternFlowRsvpReservedCounter class + + integer counter pattern + + Returns: PatternFlowRsvpReservedCounter + """ + return self._get_property( + "decrement", PatternFlowRsvpReservedCounter, self, "decrement" + ) + + @property + def choice(self): + # type: () -> Union[Literal["decrement"], Literal["increment"], Literal["value"], Literal["values"]] + """choice getter + + TBD + + Returns: Union[Literal["decrement"], Literal["increment"], Literal["value"], Literal["values"]] + """ + return self._get_property("choice") + + @choice.setter + def choice(self, value): + """choice setter + + TBD + + value: Union[Literal["decrement"], Literal["increment"], Literal["value"], Literal["values"]] + """ + self._set_property("choice", value) + + @property + def value(self): + # type: () -> int + """value getter + + TBD + + Returns: int + """ + return self._get_property("value") + + @value.setter + def value(self, value): + """value setter + + TBD + + value: int + """ + self._set_property("value", value, "value") + + @property + def values(self): + # type: () -> List[int] + """values getter + + TBD + + Returns: List[int] + """ + return self._get_property("values") + + @values.setter + def values(self, value): + """values setter + + TBD + + value: List[int] + """ + self._set_property("values", value, "values") + + +class PatternFlowRsvpReservedCounter(OpenApiObject): + __slots__ = "_parent" + + _TYPES = { + "start": { + "type": int, + "format": "uint32", + "maximum": 255, + }, + "step": { + "type": int, + "format": "uint32", + "maximum": 255, + }, + "count": { + "type": int, + "format": "uint32", + "maximum": 255, + }, + } # type: Dict[str, str] + + _REQUIRED = () # type: tuple(str) + + _DEFAULTS = { + "start": 0, + "step": 1, + "count": 1, + } # type: Dict[str, Union(type)] + + _STATUS = {} # type: Dict[str, Union(type)] + + def __init__(self, parent=None, start=0, step=1, count=1): + super(PatternFlowRsvpReservedCounter, self).__init__() + self._parent = parent + self._set_property("start", start) + self._set_property("step", step) + self._set_property("count", count) + + def set(self, start=None, step=None, count=None): + for property_name, property_value in locals().items(): + if property_name != "self" and property_value is not None: + self._set_property(property_name, property_value) + + @property + def start(self): + # type: () -> int + """start getter + + TBD + + Returns: int + """ + return self._get_property("start") + + @start.setter + def start(self, value): + """start setter + + TBD + + value: int + """ + self._set_property("start", value) + + @property + def step(self): + # type: () -> int + """step getter + + TBD + + Returns: int + """ + return self._get_property("step") + + @step.setter + def step(self, value): + """step setter + + TBD + + value: int + """ + self._set_property("step", value) + + @property + def count(self): + # type: () -> int + """count getter + + TBD + + Returns: int + """ + return self._get_property("count") + + @count.setter + def count(self, value): + """count setter + + TBD + + value: int + """ + self._set_property("count", value) + + +class FlowRSVPLength(OpenApiObject): + __slots__ = ("_parent", "_choice") + + _TYPES = { + "choice": { + "type": str, + "enum": [ + "auto", + "value", + ], + }, + "auto": { + "type": int, + "format": "uint32", + "maximum": 65535, + }, + "value": { + "type": int, + "format": "uint32", + "maximum": 65535, + }, + } # type: Dict[str, str] + + _REQUIRED = () # type: tuple(str) + + _DEFAULTS = { + "choice": "auto", + "auto": 0, + "value": 0, + } # type: Dict[str, Union(type)] + + AUTO = "auto" # type: str + VALUE = "value" # type: str + + _STATUS = {} # type: Dict[str, Union(type)] + + def __init__(self, parent=None, choice=None, auto=0, value=0): + super(FlowRSVPLength, self).__init__() + self._parent = parent + self._set_property("auto", auto) + self._set_property("value", value) + if ( + "choice" in self._DEFAULTS + and choice is None + and self._DEFAULTS["choice"] in self._TYPES + ): + getattr(self, self._DEFAULTS["choice"]) + else: + self._set_property("choice", choice) + + def set(self, auto=None, value=None): + for property_name, property_value in locals().items(): + if property_name != "self" and property_value is not None: + self._set_property(property_name, property_value) + + @property + def choice(self): + # type: () -> Union[Literal["auto"], Literal["value"]] + """choice getter + + auto or configured value. + + Returns: Union[Literal["auto"], Literal["value"]] + """ + return self._get_property("choice") + + @choice.setter + def choice(self, value): + """choice setter + + auto or configured value. + + value: Union[Literal["auto"], Literal["value"]] + """ + self._set_property("choice", value) + + @property + def auto(self): + # type: () -> int + """auto getter + + The OTG implementation can provide system generated value for this property. If the OTG is unable to generate value the default value must be used. + + Returns: int + """ + return self._get_property("auto") + + @property + def value(self): + # type: () -> int + """value getter + + TBD + + Returns: int + """ + return self._get_property("value") + + @value.setter + def value(self, value): + """value setter + + TBD + + value: int + """ + self._set_property("value", value, "value") + + +class FlowRSVPMessage(OpenApiObject): + __slots__ = ("_parent", "_choice") + + _TYPES = { + "choice": { + "type": str, + "enum": [ + "path", + ], + }, + "path": {"type": "FlowRSVPPathMessage"}, + } # type: Dict[str, str] + + _REQUIRED = () # type: tuple(str) + + _DEFAULTS = { + "choice": "path", + } # type: Dict[str, Union(type)] + + PATH = "path" # type: str + + _STATUS = {} # type: Dict[str, Union(type)] + + def __init__(self, parent=None, choice=None): + super(FlowRSVPMessage, self).__init__() + self._parent = parent + if ( + "choice" in self._DEFAULTS + and choice is None + and self._DEFAULTS["choice"] in self._TYPES + ): + getattr(self, self._DEFAULTS["choice"]) + else: + self._set_property("choice", choice) + + @property + def path(self): + # type: () -> FlowRSVPPathMessage + """Factory property that returns an instance of the FlowRSVPPathMessage class + + "path" message required the follwoing list of objects in order as defined in https://www.rfc-editor.org/rfc/rfc3209.html#page-15: 1. SESSION 2. RSVP_HOP 3. TIME_VALUES 4. EXPLICIT_ROUTE [optional] 5. LABEL_REQUEST 6. SESSION_ATTRIBUTE [optional] 7. SENDER_TEMPLATE 8. SENDER_TSPEC 9. RECORD_ROUTE [optional] + + Returns: FlowRSVPPathMessage + """ + return self._get_property("path", FlowRSVPPathMessage, self, "path") + + @property + def choice(self): + # type: () -> Union[Literal["path"]] + """choice getter + + TBD + + Returns: Union[Literal["path"]] + """ + return self._get_property("choice") + + @choice.setter + def choice(self, value): + """choice setter + + TBD + + value: Union[Literal["path"]] + """ + self._set_property("choice", value) + + +class FlowRSVPPathMessage(OpenApiObject): + __slots__ = "_parent" + + _TYPES = { + "objects": {"type": "FlowRSVPPathObjectsIter"}, + } # type: Dict[str, str] + + _REQUIRED = () # type: tuple(str) + + _DEFAULTS = {} # type: Dict[str, Union(type)] + + _STATUS = {} # type: Dict[str, Union(type)] + + def __init__(self, parent=None): + super(FlowRSVPPathMessage, self).__init__() + self._parent = parent + + @property + def objects(self): + # type: () -> FlowRSVPPathObjectsIter + """objects getter + + "path" message required atleast SESSION, RSVP_HOP, TIME_VALUES, LABEL_REQUEST, SENDER_TEMPLATE and SENDER_TSPEC objects in order. + + Returns: FlowRSVPPathObjectsIter + """ + return self._get_property( + "objects", FlowRSVPPathObjectsIter, self._parent, self._choice + ) + + +class FlowRSVPPathObjects(OpenApiObject): + __slots__ = "_parent" + + _TYPES = { + "length": {"type": "FlowRSVPPathObjectLength"}, + "class_num": {"type": "FlowRSVPPathObjectsClass"}, + } # type: Dict[str, str] + + _REQUIRED = () # type: tuple(str) + + _DEFAULTS = {} # type: Dict[str, Union(type)] + + _STATUS = {} # type: Dict[str, Union(type)] + + def __init__(self, parent=None): + super(FlowRSVPPathObjects, self).__init__() + self._parent = parent + + @property + def length(self): + # type: () -> FlowRSVPPathObjectLength + """length getter + + A 16-bit field containing the total object length in bytes. Must always be multiple of 4, and at least 4. + + Returns: FlowRSVPPathObjectLength + """ + return self._get_property("length", FlowRSVPPathObjectLength) + + @property + def class_num(self): + # type: () -> FlowRSVPPathObjectsClass + """class_num getter + + The class number is used to identify the class of an object. Defined in https://www.iana.org/assignments/rsvp-parameters/rsvp-parameters.xhtml#rsvp-parameters-4 Curently supported class numbers are for "path" message type. "path" message: Supported Class numbers and it's value: SESSION: 1, RSVP_HOP: 3, TIME_VALUES: 5, EXPLICIT_ROUTE: 20, LABEL_REQUEST: 19, SESSION_ATTRIBUTE: 207, SENDER_TEMPLATE: 11, SENDER_TSPEC: 12, RECORD_ROUTE: 21, Custom: User defined bytes based on class and c-types not suppored in above options.The class number is used to identify the class of an object. Defined in https://www.iana.org/assignments/rsvp-parameters/rsvp-parameters.xhtml#rsvp-parameters-4 Curently supported class numbers are for "path" message type. "path" message: Supported Class numbers and it's value: SESSION: 1, RSVP_HOP: 3, TIME_VALUES: 5, EXPLICIT_ROUTE: 20, LABEL_REQUEST: 19, SESSION_ATTRIBUTE: 207, SENDER_TEMPLATE: 11, SENDER_TSPEC: 12, RECORD_ROUTE: 21, Custom: User defined bytes based on class and c-types not suppored in above options.The class number is used to identify the class of an object. Defined in https://www.iana.org/assignments/rsvp-parameters/rsvp-parameters.xhtml#rsvp-parameters-4 Curently supported class numbers are for "path" message type. "path" message: Supported Class numbers and it's value: SESSION: 1, RSVP_HOP: 3, TIME_VALUES: 5, EXPLICIT_ROUTE: 20, LABEL_REQUEST: 19, SESSION_ATTRIBUTE: 207, SENDER_TEMPLATE: 11, SENDER_TSPEC: 12, RECORD_ROUTE: 21, Custom: User defined bytes based on class and c-types not suppored in above options. + + Returns: FlowRSVPPathObjectsClass + """ + return self._get_property("class_num", FlowRSVPPathObjectsClass) + + +class FlowRSVPPathObjectLength(OpenApiObject): + __slots__ = ("_parent", "_choice") + + _TYPES = { + "choice": { + "type": str, + "enum": [ + "auto", + "value", + ], + }, + "auto": { + "type": int, + "format": "uint32", + "minimum": 4, + "maximum": 65535, + }, + "value": { + "type": int, + "format": "uint32", + "minimum": 4, + "maximum": 65535, + }, + } # type: Dict[str, str] + + _REQUIRED = () # type: tuple(str) + + _DEFAULTS = { + "choice": "auto", + "auto": 4, + "value": 4, + } # type: Dict[str, Union(type)] + + AUTO = "auto" # type: str + VALUE = "value" # type: str + + _STATUS = {} # type: Dict[str, Union(type)] + + def __init__(self, parent=None, choice=None, auto=4, value=4): + super(FlowRSVPPathObjectLength, self).__init__() + self._parent = parent + self._set_property("auto", auto) + self._set_property("value", value) + if ( + "choice" in self._DEFAULTS + and choice is None + and self._DEFAULTS["choice"] in self._TYPES + ): + getattr(self, self._DEFAULTS["choice"]) + else: + self._set_property("choice", choice) + + def set(self, auto=None, value=None): + for property_name, property_value in locals().items(): + if property_name != "self" and property_value is not None: + self._set_property(property_name, property_value) + + @property + def choice(self): + # type: () -> Union[Literal["auto"], Literal["value"]] + """choice getter + + auto or configured value. + + Returns: Union[Literal["auto"], Literal["value"]] + """ + return self._get_property("choice") + + @choice.setter + def choice(self, value): + """choice setter + + auto or configured value. + + value: Union[Literal["auto"], Literal["value"]] + """ + self._set_property("choice", value) + + @property + def auto(self): + # type: () -> int + """auto getter + + The OTG implementation can provide system generated value for this property. If the OTG is unable to generate value the default value must be used. + + Returns: int + """ + return self._get_property("auto") + + @property + def value(self): + # type: () -> int + """value getter + + TBD + + Returns: int + """ + return self._get_property("value") + + @value.setter + def value(self, value): + """value setter + + TBD + + value: int + """ + self._set_property("value", value, "value") + + +class FlowRSVPPathObjectsClass(OpenApiObject): + __slots__ = ("_parent", "_choice") + + _TYPES = { + "choice": { + "type": str, + "enum": [ + "session", + "rsvp_hop", + "time_values", + "explicit_route", + "label_request", + "session_attribute", + "sender_template", + "sender_tspec", + "record_route", + "custom", + ], + }, + "session": {"type": "FlowRSVPPathObjectsClassSession"}, + "rsvp_hop": {"type": "FlowRSVPPathObjectsClassRsvpHop"}, + "time_values": {"type": "FlowRSVPPathObjectsClassTimeValues"}, + "explicit_route": {"type": "FlowRSVPPathObjectsClassExplicitRoute"}, + "label_request": {"type": "FlowRSVPPathObjectsClassLabelRequest"}, + "session_attribute": {"type": "FlowRSVPPathObjectsClassSessionAttribute"}, + "sender_template": {"type": "FlowRSVPPathObjectsClassSenderTemplate"}, + "sender_tspec": {"type": "FlowRSVPPathObjectsClassSenderTspec"}, + "record_route": {"type": "FlowRSVPPathObjectsClassRecordRoute"}, + "custom": {"type": "FlowRSVPPathObjectsCustom"}, + } # type: Dict[str, str] + + _REQUIRED = ("choice",) # type: tuple(str) + + _DEFAULTS = {} # type: Dict[str, Union(type)] + + SESSION = "session" # type: str + RSVP_HOP = "rsvp_hop" # type: str + TIME_VALUES = "time_values" # type: str + EXPLICIT_ROUTE = "explicit_route" # type: str + LABEL_REQUEST = "label_request" # type: str + SESSION_ATTRIBUTE = "session_attribute" # type: str + SENDER_TEMPLATE = "sender_template" # type: str + SENDER_TSPEC = "sender_tspec" # type: str + RECORD_ROUTE = "record_route" # type: str + CUSTOM = "custom" # type: str + + _STATUS = {} # type: Dict[str, Union(type)] + + def __init__(self, parent=None, choice=None): + super(FlowRSVPPathObjectsClass, self).__init__() + self._parent = parent + if ( + "choice" in self._DEFAULTS + and choice is None + and self._DEFAULTS["choice"] in self._TYPES + ): + getattr(self, self._DEFAULTS["choice"]) + else: + self._set_property("choice", choice) + + @property + def session(self): + # type: () -> FlowRSVPPathObjectsClassSession + """Factory property that returns an instance of the FlowRSVPPathObjectsClassSession class + + C-Type is specific to class num. + + Returns: FlowRSVPPathObjectsClassSession + """ + return self._get_property( + "session", FlowRSVPPathObjectsClassSession, self, "session" + ) + + @property + def rsvp_hop(self): + # type: () -> FlowRSVPPathObjectsClassRsvpHop + """Factory property that returns an instance of the FlowRSVPPathObjectsClassRsvpHop class + + C-Type is specific to class num. + + Returns: FlowRSVPPathObjectsClassRsvpHop + """ + return self._get_property( + "rsvp_hop", FlowRSVPPathObjectsClassRsvpHop, self, "rsvp_hop" + ) + + @property + def time_values(self): + # type: () -> FlowRSVPPathObjectsClassTimeValues + """Factory property that returns an instance of the FlowRSVPPathObjectsClassTimeValues class + + C-Type is specific to class num. + + Returns: FlowRSVPPathObjectsClassTimeValues + """ + return self._get_property( + "time_values", FlowRSVPPathObjectsClassTimeValues, self, "time_values" + ) + + @property + def explicit_route(self): + # type: () -> FlowRSVPPathObjectsClassExplicitRoute + """Factory property that returns an instance of the FlowRSVPPathObjectsClassExplicitRoute class + + C-Type is specific to class num. + + Returns: FlowRSVPPathObjectsClassExplicitRoute + """ + return self._get_property( + "explicit_route", + FlowRSVPPathObjectsClassExplicitRoute, + self, + "explicit_route", + ) + + @property + def label_request(self): + # type: () -> FlowRSVPPathObjectsClassLabelRequest + """Factory property that returns an instance of the FlowRSVPPathObjectsClassLabelRequest class + + C-Type is specific to class num. + + Returns: FlowRSVPPathObjectsClassLabelRequest + """ + return self._get_property( + "label_request", FlowRSVPPathObjectsClassLabelRequest, self, "label_request" + ) + + @property + def session_attribute(self): + # type: () -> FlowRSVPPathObjectsClassSessionAttribute + """Factory property that returns an instance of the FlowRSVPPathObjectsClassSessionAttribute class + + C-Type is specific to class num. + + Returns: FlowRSVPPathObjectsClassSessionAttribute + """ + return self._get_property( + "session_attribute", + FlowRSVPPathObjectsClassSessionAttribute, + self, + "session_attribute", + ) + + @property + def sender_template(self): + # type: () -> FlowRSVPPathObjectsClassSenderTemplate + """Factory property that returns an instance of the FlowRSVPPathObjectsClassSenderTemplate class + + C-Type is specific to class num. + + Returns: FlowRSVPPathObjectsClassSenderTemplate + """ + return self._get_property( + "sender_template", + FlowRSVPPathObjectsClassSenderTemplate, + self, + "sender_template", + ) + + @property + def sender_tspec(self): + # type: () -> FlowRSVPPathObjectsClassSenderTspec + """Factory property that returns an instance of the FlowRSVPPathObjectsClassSenderTspec class + + C-Type is specific to class num. + + Returns: FlowRSVPPathObjectsClassSenderTspec + """ + return self._get_property( + "sender_tspec", FlowRSVPPathObjectsClassSenderTspec, self, "sender_tspec" + ) + + @property + def record_route(self): + # type: () -> FlowRSVPPathObjectsClassRecordRoute + """Factory property that returns an instance of the FlowRSVPPathObjectsClassRecordRoute class + + C-Type is specific to class num. + + Returns: FlowRSVPPathObjectsClassRecordRoute + """ + return self._get_property( + "record_route", FlowRSVPPathObjectsClassRecordRoute, self, "record_route" + ) + + @property + def custom(self): + # type: () -> FlowRSVPPathObjectsCustom + """Factory property that returns an instance of the FlowRSVPPathObjectsCustom class + + Custom packet header + + Returns: FlowRSVPPathObjectsCustom + """ + return self._get_property("custom", FlowRSVPPathObjectsCustom, self, "custom") + + @property + def choice(self): + # type: () -> Union[Literal["custom"], Literal["explicit_route"], Literal["label_request"], Literal["record_route"], Literal["rsvp_hop"], Literal["sender_template"], Literal["sender_tspec"], Literal["session"], Literal["session_attribute"], Literal["time_values"]] + """choice getter + + TBD + + Returns: Union[Literal["custom"], Literal["explicit_route"], Literal["label_request"], Literal["record_route"], Literal["rsvp_hop"], Literal["sender_template"], Literal["sender_tspec"], Literal["session"], Literal["session_attribute"], Literal["time_values"]] + """ + return self._get_property("choice") + + @choice.setter + def choice(self, value): + """choice setter + + TBD + + value: Union[Literal["custom"], Literal["explicit_route"], Literal["label_request"], Literal["record_route"], Literal["rsvp_hop"], Literal["sender_template"], Literal["sender_tspec"], Literal["session"], Literal["session_attribute"], Literal["time_values"]] + """ + if value is None: + raise TypeError("Cannot set required property choice as None") + self._set_property("choice", value) + + +class FlowRSVPPathObjectsClassSession(OpenApiObject): + __slots__ = "_parent" + + _TYPES = { + "c_type": {"type": "FlowRSVPPathObjectsSessionCType"}, + } # type: Dict[str, str] + + _REQUIRED = () # type: tuple(str) + + _DEFAULTS = {} # type: Dict[str, Union(type)] + + _STATUS = {} # type: Dict[str, Union(type)] + + def __init__(self, parent=None): + super(FlowRSVPPathObjectsClassSession, self).__init__() + self._parent = parent + + @property + def c_type(self): + # type: () -> FlowRSVPPathObjectsSessionCType + """c_type getter + + The body of an object corresponding to the class number and c-type. Currently supported c-type for SESSION object is LSP Tunnel IPv4 (7).The body of an object corresponding to the class number and c-type. Currently supported c-type for SESSION object is LSP Tunnel IPv4 (7).The body of an object corresponding to the class number and c-type. Currently supported c-type for SESSION object is LSP Tunnel IPv4 (7).The body of an object corresponding to the class number and c-type. Currently supported c-type for SESSION object is LSP Tunnel IPv4 (7). + + Returns: FlowRSVPPathObjectsSessionCType + """ + return self._get_property("c_type", FlowRSVPPathObjectsSessionCType) + + +class FlowRSVPPathObjectsSessionCType(OpenApiObject): + __slots__ = ("_parent", "_choice") + + _TYPES = { + "choice": { + "type": str, + "enum": [ + "lsp_tunnel_ipv4", + ], + }, + "lsp_tunnel_ipv4": {"type": "FlowRSVPPathSessionLspTunnelIpv4"}, + } # type: Dict[str, str] + + _REQUIRED = () # type: tuple(str) + + _DEFAULTS = { + "choice": "lsp_tunnel_ipv4", + } # type: Dict[str, Union(type)] + + LSP_TUNNEL_IPV4 = "lsp_tunnel_ipv4" # type: str + + _STATUS = {} # type: Dict[str, Union(type)] + + def __init__(self, parent=None, choice=None): + super(FlowRSVPPathObjectsSessionCType, self).__init__() + self._parent = parent + if ( + "choice" in self._DEFAULTS + and choice is None + and self._DEFAULTS["choice"] in self._TYPES + ): + getattr(self, self._DEFAULTS["choice"]) + else: + self._set_property("choice", choice) + + @property + def lsp_tunnel_ipv4(self): + # type: () -> FlowRSVPPathSessionLspTunnelIpv4 + """Factory property that returns an instance of the FlowRSVPPathSessionLspTunnelIpv4 class + + Class SESSION, LSP_TUNNEL_IPv4 C-Type 7. + + Returns: FlowRSVPPathSessionLspTunnelIpv4 + """ + return self._get_property( + "lsp_tunnel_ipv4", FlowRSVPPathSessionLspTunnelIpv4, self, "lsp_tunnel_ipv4" + ) + + @property + def choice(self): + # type: () -> Union[Literal["lsp_tunnel_ipv4"]] + """choice getter + + TBD + + Returns: Union[Literal["lsp_tunnel_ipv4"]] + """ + return self._get_property("choice") + + @choice.setter + def choice(self, value): + """choice setter + + TBD + + value: Union[Literal["lsp_tunnel_ipv4"]] + """ + self._set_property("choice", value) + + +class FlowRSVPPathSessionLspTunnelIpv4(OpenApiObject): + __slots__ = "_parent" + + _TYPES = { + "ipv4_tunnel_end_point_address": { + "type": "PatternFlowRSVPPathSessionLspTunnelIpv4Ipv4TunnelEndPointAddress" + }, + "reserved": {"type": "PatternFlowRSVPPathSessionLspTunnelIpv4Reserved"}, + "tunnel_id": {"type": "PatternFlowRSVPPathSessionLspTunnelIpv4TunnelId"}, + "extended_tunnel_id": { + "type": "PatternFlowRSVPPathSessionLspTunnelIpv4ExtendedTunnelId" + }, + } # type: Dict[str, str] + + _REQUIRED = () # type: tuple(str) + + _DEFAULTS = {} # type: Dict[str, Union(type)] + + _STATUS = {} # type: Dict[str, Union(type)] + + def __init__(self, parent=None): + super(FlowRSVPPathSessionLspTunnelIpv4, self).__init__() + self._parent = parent + + @property + def ipv4_tunnel_end_point_address(self): + # type: () -> PatternFlowRSVPPathSessionLspTunnelIpv4Ipv4TunnelEndPointAddress + """ipv4_tunnel_end_point_address getter + + IPv4 address of the egress node for the tunnel.IPv4 address of the egress node for the tunnel.IPv4 address of the egress node for the tunnel.IPv4 address of the egress node for the tunnel. + + Returns: PatternFlowRSVPPathSessionLspTunnelIpv4Ipv4TunnelEndPointAddress + """ + return self._get_property( + "ipv4_tunnel_end_point_address", + PatternFlowRSVPPathSessionLspTunnelIpv4Ipv4TunnelEndPointAddress, + ) + + @property + def reserved(self): + # type: () -> PatternFlowRSVPPathSessionLspTunnelIpv4Reserved + """reserved getter + + Reserved field, MUST be zero.Reserved field, MUST be zero.Reserved field, MUST be zero.Reserved field, MUST be zero. + + Returns: PatternFlowRSVPPathSessionLspTunnelIpv4Reserved + """ + return self._get_property( + "reserved", PatternFlowRSVPPathSessionLspTunnelIpv4Reserved + ) + + @property + def tunnel_id(self): + # type: () -> PatternFlowRSVPPathSessionLspTunnelIpv4TunnelId + """tunnel_id getter + + A 16-bit identifier used in the SESSION that remains constant over the life of the tunnel.A 16-bit identifier used in the SESSION that remains constant over the life of the tunnel.A 16-bit identifier used in the SESSION that remains constant over the life of the tunnel.A 16-bit identifier used in the SESSION that remains constant over the life of the tunnel. + + Returns: PatternFlowRSVPPathSessionLspTunnelIpv4TunnelId + """ + return self._get_property( + "tunnel_id", PatternFlowRSVPPathSessionLspTunnelIpv4TunnelId + ) + + @property + def extended_tunnel_id(self): + # type: () -> PatternFlowRSVPPathSessionLspTunnelIpv4ExtendedTunnelId + """extended_tunnel_id getter + + A 32-bit identifier used in the SESSION that remains constant over the life of the tunnel. Normally set to all zeros. Ingress nodes that wish to narrow the scope of SESSION to the ingress-egress pair may place their IPv4 address here as globally unique identifier.A 32-bit identifier used in the SESSION that remains constant over the life of the tunnel. Normally set to all zeros. Ingress nodes that wish to narrow the scope of SESSION to the ingress-egress pair may place their IPv4 address here as globally unique identifier.A 32-bit identifier used in the SESSION that remains constant over the life of the tunnel. Normally set to all zeros. Ingress nodes that wish to narrow the scope of SESSION to the ingress-egress pair may place their IPv4 address here as globally unique identifier.A 32-bit identifier used in the SESSION that remains constant over the life of the tunnel. Normally set to all zeros. Ingress nodes that wish to narrow the scope of SESSION to the ingress-egress pair may place their IPv4 address here as globally unique identifier. + + Returns: PatternFlowRSVPPathSessionLspTunnelIpv4ExtendedTunnelId + """ + return self._get_property( + "extended_tunnel_id", + PatternFlowRSVPPathSessionLspTunnelIpv4ExtendedTunnelId, + ) + + +class PatternFlowRSVPPathSessionLspTunnelIpv4Ipv4TunnelEndPointAddress(OpenApiObject): + __slots__ = ("_parent", "_choice") + + _TYPES = { + "choice": { + "type": str, + "enum": [ + "value", + "values", + "increment", + "decrement", + ], + }, + "value": { + "type": str, + "format": "ipv4", + }, + "values": { + "type": list, + "itemtype": str, + "itemformat": "ipv4", + }, + "increment": { + "type": "PatternFlowRSVPPathSessionLspTunnelIpv4Ipv4TunnelEndPointAddressCounter" + }, + "decrement": { + "type": "PatternFlowRSVPPathSessionLspTunnelIpv4Ipv4TunnelEndPointAddressCounter" + }, + } # type: Dict[str, str] + + _REQUIRED = () # type: tuple(str) + + _DEFAULTS = { + "choice": "value", + "value": "0.0.0.0", + "values": ["0.0.0.0"], + } # type: Dict[str, Union(type)] + + VALUE = "value" # type: str + VALUES = "values" # type: str + INCREMENT = "increment" # type: str + DECREMENT = "decrement" # type: str + + _STATUS = {} # type: Dict[str, Union(type)] + + def __init__(self, parent=None, choice=None, value="0.0.0.0", values=["0.0.0.0"]): + super( + PatternFlowRSVPPathSessionLspTunnelIpv4Ipv4TunnelEndPointAddress, self + ).__init__() + self._parent = parent + self._set_property("value", value) + self._set_property("values", values) + if ( + "choice" in self._DEFAULTS + and choice is None + and self._DEFAULTS["choice"] in self._TYPES + ): + getattr(self, self._DEFAULTS["choice"]) + else: + self._set_property("choice", choice) + + def set(self, value=None, values=None): + for property_name, property_value in locals().items(): + if property_name != "self" and property_value is not None: + self._set_property(property_name, property_value) + + @property + def increment(self): + # type: () -> PatternFlowRSVPPathSessionLspTunnelIpv4Ipv4TunnelEndPointAddressCounter + """Factory property that returns an instance of the PatternFlowRSVPPathSessionLspTunnelIpv4Ipv4TunnelEndPointAddressCounter class + + ipv4 counter pattern + + Returns: PatternFlowRSVPPathSessionLspTunnelIpv4Ipv4TunnelEndPointAddressCounter + """ + return self._get_property( + "increment", + PatternFlowRSVPPathSessionLspTunnelIpv4Ipv4TunnelEndPointAddressCounter, + self, + "increment", + ) + + @property + def decrement(self): + # type: () -> PatternFlowRSVPPathSessionLspTunnelIpv4Ipv4TunnelEndPointAddressCounter + """Factory property that returns an instance of the PatternFlowRSVPPathSessionLspTunnelIpv4Ipv4TunnelEndPointAddressCounter class + + ipv4 counter pattern + + Returns: PatternFlowRSVPPathSessionLspTunnelIpv4Ipv4TunnelEndPointAddressCounter + """ + return self._get_property( + "decrement", + PatternFlowRSVPPathSessionLspTunnelIpv4Ipv4TunnelEndPointAddressCounter, + self, + "decrement", + ) + + @property + def choice(self): + # type: () -> Union[Literal["decrement"], Literal["increment"], Literal["value"], Literal["values"]] + """choice getter + + TBD + + Returns: Union[Literal["decrement"], Literal["increment"], Literal["value"], Literal["values"]] + """ + return self._get_property("choice") + + @choice.setter + def choice(self, value): + """choice setter + + TBD + + value: Union[Literal["decrement"], Literal["increment"], Literal["value"], Literal["values"]] + """ + self._set_property("choice", value) + + @property + def value(self): + # type: () -> str + """value getter + + TBD + + Returns: str + """ + return self._get_property("value") + + @value.setter + def value(self, value): + """value setter + + TBD + + value: str + """ + self._set_property("value", value, "value") + + @property + def values(self): + # type: () -> List[str] + """values getter + + TBD + + Returns: List[str] + """ + return self._get_property("values") + + @values.setter + def values(self, value): + """values setter + + TBD + + value: List[str] + """ + self._set_property("values", value, "values") + + +class PatternFlowRSVPPathSessionLspTunnelIpv4Ipv4TunnelEndPointAddressCounter( + OpenApiObject +): + __slots__ = "_parent" + + _TYPES = { + "start": { + "type": str, + "format": "ipv4", + }, + "step": { + "type": str, + "format": "ipv4", + }, + "count": { + "type": int, + "format": "uint32", + }, + } # type: Dict[str, str] + + _REQUIRED = () # type: tuple(str) + + _DEFAULTS = { + "start": "0.0.0.0", + "step": "0.0.0.1", + "count": 1, + } # type: Dict[str, Union(type)] + + _STATUS = {} # type: Dict[str, Union(type)] + + def __init__(self, parent=None, start="0.0.0.0", step="0.0.0.1", count=1): + super( + PatternFlowRSVPPathSessionLspTunnelIpv4Ipv4TunnelEndPointAddressCounter, + self, + ).__init__() + self._parent = parent + self._set_property("start", start) + self._set_property("step", step) + self._set_property("count", count) + + def set(self, start=None, step=None, count=None): + for property_name, property_value in locals().items(): + if property_name != "self" and property_value is not None: + self._set_property(property_name, property_value) + + @property + def start(self): + # type: () -> str + """start getter + + TBD + + Returns: str + """ + return self._get_property("start") + + @start.setter + def start(self, value): + """start setter + + TBD + + value: str + """ + self._set_property("start", value) + + @property + def step(self): + # type: () -> str + """step getter + + TBD + + Returns: str + """ + return self._get_property("step") + + @step.setter + def step(self, value): + """step setter + + TBD + + value: str + """ + self._set_property("step", value) + + @property + def count(self): + # type: () -> int + """count getter + + TBD + + Returns: int + """ + return self._get_property("count") + + @count.setter + def count(self, value): + """count setter + + TBD + + value: int + """ + self._set_property("count", value) + + +class PatternFlowRSVPPathSessionLspTunnelIpv4Reserved(OpenApiObject): + __slots__ = ("_parent", "_choice") + + _TYPES = { + "choice": { + "type": str, + "enum": [ + "value", + "values", + "increment", + "decrement", + ], + }, + "value": { + "type": int, + "format": "uint32", + "maximum": 65535, + }, + "values": { + "type": list, + "itemtype": int, + "itemformat": "uint32", + "maximum": 65535, + }, + "increment": {"type": "PatternFlowRSVPPathSessionLspTunnelIpv4ReservedCounter"}, + "decrement": {"type": "PatternFlowRSVPPathSessionLspTunnelIpv4ReservedCounter"}, + } # type: Dict[str, str] + + _REQUIRED = () # type: tuple(str) + + _DEFAULTS = { + "choice": "value", + "value": 0, + "values": [0], + } # type: Dict[str, Union(type)] + + VALUE = "value" # type: str + VALUES = "values" # type: str + INCREMENT = "increment" # type: str + DECREMENT = "decrement" # type: str + + _STATUS = {} # type: Dict[str, Union(type)] + + def __init__(self, parent=None, choice=None, value=0, values=[0]): + super(PatternFlowRSVPPathSessionLspTunnelIpv4Reserved, self).__init__() + self._parent = parent + self._set_property("value", value) + self._set_property("values", values) + if ( + "choice" in self._DEFAULTS + and choice is None + and self._DEFAULTS["choice"] in self._TYPES + ): + getattr(self, self._DEFAULTS["choice"]) + else: + self._set_property("choice", choice) + + def set(self, value=None, values=None): + for property_name, property_value in locals().items(): + if property_name != "self" and property_value is not None: + self._set_property(property_name, property_value) + + @property + def increment(self): + # type: () -> PatternFlowRSVPPathSessionLspTunnelIpv4ReservedCounter + """Factory property that returns an instance of the PatternFlowRSVPPathSessionLspTunnelIpv4ReservedCounter class + + integer counter pattern + + Returns: PatternFlowRSVPPathSessionLspTunnelIpv4ReservedCounter + """ + return self._get_property( + "increment", + PatternFlowRSVPPathSessionLspTunnelIpv4ReservedCounter, + self, + "increment", + ) + + @property + def decrement(self): + # type: () -> PatternFlowRSVPPathSessionLspTunnelIpv4ReservedCounter + """Factory property that returns an instance of the PatternFlowRSVPPathSessionLspTunnelIpv4ReservedCounter class + + integer counter pattern + + Returns: PatternFlowRSVPPathSessionLspTunnelIpv4ReservedCounter + """ + return self._get_property( + "decrement", + PatternFlowRSVPPathSessionLspTunnelIpv4ReservedCounter, + self, + "decrement", + ) + + @property + def choice(self): + # type: () -> Union[Literal["decrement"], Literal["increment"], Literal["value"], Literal["values"]] + """choice getter + + TBD + + Returns: Union[Literal["decrement"], Literal["increment"], Literal["value"], Literal["values"]] + """ + return self._get_property("choice") + + @choice.setter + def choice(self, value): + """choice setter + + TBD + + value: Union[Literal["decrement"], Literal["increment"], Literal["value"], Literal["values"]] + """ + self._set_property("choice", value) + + @property + def value(self): + # type: () -> int + """value getter + + TBD + + Returns: int + """ + return self._get_property("value") + + @value.setter + def value(self, value): + """value setter + + TBD + + value: int + """ + self._set_property("value", value, "value") + + @property + def values(self): + # type: () -> List[int] + """values getter + + TBD + + Returns: List[int] + """ + return self._get_property("values") + + @values.setter + def values(self, value): + """values setter + + TBD + + value: List[int] + """ + self._set_property("values", value, "values") + + +class PatternFlowRSVPPathSessionLspTunnelIpv4ReservedCounter(OpenApiObject): + __slots__ = "_parent" + + _TYPES = { + "start": { + "type": int, + "format": "uint32", + "maximum": 65535, + }, + "step": { + "type": int, + "format": "uint32", + "maximum": 65535, + }, + "count": { + "type": int, + "format": "uint32", + "maximum": 65535, + }, + } # type: Dict[str, str] + + _REQUIRED = () # type: tuple(str) + + _DEFAULTS = { + "start": 0, + "step": 1, + "count": 1, + } # type: Dict[str, Union(type)] + + _STATUS = {} # type: Dict[str, Union(type)] + + def __init__(self, parent=None, start=0, step=1, count=1): + super(PatternFlowRSVPPathSessionLspTunnelIpv4ReservedCounter, self).__init__() + self._parent = parent + self._set_property("start", start) + self._set_property("step", step) + self._set_property("count", count) + + def set(self, start=None, step=None, count=None): + for property_name, property_value in locals().items(): + if property_name != "self" and property_value is not None: + self._set_property(property_name, property_value) + + @property + def start(self): + # type: () -> int + """start getter + + TBD + + Returns: int + """ + return self._get_property("start") + + @start.setter + def start(self, value): + """start setter + + TBD + + value: int + """ + self._set_property("start", value) + + @property + def step(self): + # type: () -> int + """step getter + + TBD + + Returns: int + """ + return self._get_property("step") + + @step.setter + def step(self, value): + """step setter + + TBD + + value: int + """ + self._set_property("step", value) + + @property + def count(self): + # type: () -> int + """count getter + + TBD + + Returns: int + """ + return self._get_property("count") + + @count.setter + def count(self, value): + """count setter + + TBD + + value: int + """ + self._set_property("count", value) + + +class PatternFlowRSVPPathSessionLspTunnelIpv4TunnelId(OpenApiObject): + __slots__ = ("_parent", "_choice") + + _TYPES = { + "choice": { + "type": str, + "enum": [ + "value", + "values", + "increment", + "decrement", + ], + }, + "value": { + "type": int, + "format": "uint32", + "maximum": 65535, + }, + "values": { + "type": list, + "itemtype": int, + "itemformat": "uint32", + "maximum": 65535, + }, + "increment": {"type": "PatternFlowRSVPPathSessionLspTunnelIpv4TunnelIdCounter"}, + "decrement": {"type": "PatternFlowRSVPPathSessionLspTunnelIpv4TunnelIdCounter"}, + } # type: Dict[str, str] + + _REQUIRED = () # type: tuple(str) + + _DEFAULTS = { + "choice": "value", + "value": 0, + "values": [0], + } # type: Dict[str, Union(type)] + + VALUE = "value" # type: str + VALUES = "values" # type: str + INCREMENT = "increment" # type: str + DECREMENT = "decrement" # type: str + + _STATUS = {} # type: Dict[str, Union(type)] + + def __init__(self, parent=None, choice=None, value=0, values=[0]): + super(PatternFlowRSVPPathSessionLspTunnelIpv4TunnelId, self).__init__() + self._parent = parent + self._set_property("value", value) + self._set_property("values", values) + if ( + "choice" in self._DEFAULTS + and choice is None + and self._DEFAULTS["choice"] in self._TYPES + ): + getattr(self, self._DEFAULTS["choice"]) + else: + self._set_property("choice", choice) + + def set(self, value=None, values=None): + for property_name, property_value in locals().items(): + if property_name != "self" and property_value is not None: + self._set_property(property_name, property_value) + + @property + def increment(self): + # type: () -> PatternFlowRSVPPathSessionLspTunnelIpv4TunnelIdCounter + """Factory property that returns an instance of the PatternFlowRSVPPathSessionLspTunnelIpv4TunnelIdCounter class + + integer counter pattern + + Returns: PatternFlowRSVPPathSessionLspTunnelIpv4TunnelIdCounter + """ + return self._get_property( + "increment", + PatternFlowRSVPPathSessionLspTunnelIpv4TunnelIdCounter, + self, + "increment", + ) + + @property + def decrement(self): + # type: () -> PatternFlowRSVPPathSessionLspTunnelIpv4TunnelIdCounter + """Factory property that returns an instance of the PatternFlowRSVPPathSessionLspTunnelIpv4TunnelIdCounter class + + integer counter pattern + + Returns: PatternFlowRSVPPathSessionLspTunnelIpv4TunnelIdCounter + """ + return self._get_property( + "decrement", + PatternFlowRSVPPathSessionLspTunnelIpv4TunnelIdCounter, + self, + "decrement", + ) + + @property + def choice(self): + # type: () -> Union[Literal["decrement"], Literal["increment"], Literal["value"], Literal["values"]] + """choice getter + + TBD + + Returns: Union[Literal["decrement"], Literal["increment"], Literal["value"], Literal["values"]] + """ + return self._get_property("choice") + + @choice.setter + def choice(self, value): + """choice setter + + TBD + + value: Union[Literal["decrement"], Literal["increment"], Literal["value"], Literal["values"]] + """ + self._set_property("choice", value) + + @property + def value(self): + # type: () -> int + """value getter + + TBD + + Returns: int + """ + return self._get_property("value") + + @value.setter + def value(self, value): + """value setter + + TBD + + value: int + """ + self._set_property("value", value, "value") + + @property + def values(self): + # type: () -> List[int] + """values getter + + TBD + + Returns: List[int] + """ + return self._get_property("values") + + @values.setter + def values(self, value): + """values setter + + TBD + + value: List[int] + """ + self._set_property("values", value, "values") + + +class PatternFlowRSVPPathSessionLspTunnelIpv4TunnelIdCounter(OpenApiObject): + __slots__ = "_parent" + + _TYPES = { + "start": { + "type": int, + "format": "uint32", + "maximum": 65535, + }, + "step": { + "type": int, + "format": "uint32", + "maximum": 65535, + }, + "count": { + "type": int, + "format": "uint32", + "maximum": 65535, + }, + } # type: Dict[str, str] + + _REQUIRED = () # type: tuple(str) + + _DEFAULTS = { + "start": 0, + "step": 1, + "count": 1, + } # type: Dict[str, Union(type)] + + _STATUS = {} # type: Dict[str, Union(type)] + + def __init__(self, parent=None, start=0, step=1, count=1): + super(PatternFlowRSVPPathSessionLspTunnelIpv4TunnelIdCounter, self).__init__() + self._parent = parent + self._set_property("start", start) + self._set_property("step", step) + self._set_property("count", count) + + def set(self, start=None, step=None, count=None): + for property_name, property_value in locals().items(): + if property_name != "self" and property_value is not None: + self._set_property(property_name, property_value) + + @property + def start(self): + # type: () -> int + """start getter + + TBD + + Returns: int + """ + return self._get_property("start") + + @start.setter + def start(self, value): + """start setter + + TBD + + value: int + """ + self._set_property("start", value) + + @property + def step(self): + # type: () -> int + """step getter + + TBD + + Returns: int + """ + return self._get_property("step") + + @step.setter + def step(self, value): + """step setter + + TBD + + value: int + """ + self._set_property("step", value) + + @property + def count(self): + # type: () -> int + """count getter + + TBD + + Returns: int + """ + return self._get_property("count") + + @count.setter + def count(self, value): + """count setter + + TBD + + value: int + """ + self._set_property("count", value) + + +class PatternFlowRSVPPathSessionLspTunnelIpv4ExtendedTunnelId(OpenApiObject): + __slots__ = ("_parent", "_choice") + + _TYPES = { + "choice": { + "type": str, + "enum": [ + "value", + "values", + "increment", + "decrement", + ], + }, + "value": { + "type": int, + "format": "uint32", + }, + "values": { + "type": list, + "itemtype": int, + "itemformat": "uint32", + }, + "increment": { + "type": "PatternFlowRSVPPathSessionLspTunnelIpv4ExtendedTunnelIdCounter" + }, + "decrement": { + "type": "PatternFlowRSVPPathSessionLspTunnelIpv4ExtendedTunnelIdCounter" + }, + } # type: Dict[str, str] + + _REQUIRED = () # type: tuple(str) + + _DEFAULTS = { + "choice": "value", + "value": 0, + "values": [0], + } # type: Dict[str, Union(type)] + + VALUE = "value" # type: str + VALUES = "values" # type: str + INCREMENT = "increment" # type: str + DECREMENT = "decrement" # type: str + + _STATUS = {} # type: Dict[str, Union(type)] + + def __init__(self, parent=None, choice=None, value=0, values=[0]): + super(PatternFlowRSVPPathSessionLspTunnelIpv4ExtendedTunnelId, self).__init__() + self._parent = parent + self._set_property("value", value) + self._set_property("values", values) + if ( + "choice" in self._DEFAULTS + and choice is None + and self._DEFAULTS["choice"] in self._TYPES + ): + getattr(self, self._DEFAULTS["choice"]) + else: + self._set_property("choice", choice) + + def set(self, value=None, values=None): + for property_name, property_value in locals().items(): + if property_name != "self" and property_value is not None: + self._set_property(property_name, property_value) + + @property + def increment(self): + # type: () -> PatternFlowRSVPPathSessionLspTunnelIpv4ExtendedTunnelIdCounter + """Factory property that returns an instance of the PatternFlowRSVPPathSessionLspTunnelIpv4ExtendedTunnelIdCounter class + + integer counter pattern + + Returns: PatternFlowRSVPPathSessionLspTunnelIpv4ExtendedTunnelIdCounter + """ + return self._get_property( + "increment", + PatternFlowRSVPPathSessionLspTunnelIpv4ExtendedTunnelIdCounter, + self, + "increment", + ) + + @property + def decrement(self): + # type: () -> PatternFlowRSVPPathSessionLspTunnelIpv4ExtendedTunnelIdCounter + """Factory property that returns an instance of the PatternFlowRSVPPathSessionLspTunnelIpv4ExtendedTunnelIdCounter class + + integer counter pattern + + Returns: PatternFlowRSVPPathSessionLspTunnelIpv4ExtendedTunnelIdCounter + """ + return self._get_property( + "decrement", + PatternFlowRSVPPathSessionLspTunnelIpv4ExtendedTunnelIdCounter, + self, + "decrement", + ) + + @property + def choice(self): + # type: () -> Union[Literal["decrement"], Literal["increment"], Literal["value"], Literal["values"]] + """choice getter + + TBD + + Returns: Union[Literal["decrement"], Literal["increment"], Literal["value"], Literal["values"]] + """ + return self._get_property("choice") + + @choice.setter + def choice(self, value): + """choice setter + + TBD + + value: Union[Literal["decrement"], Literal["increment"], Literal["value"], Literal["values"]] + """ + self._set_property("choice", value) + + @property + def value(self): + # type: () -> int + """value getter + + TBD + + Returns: int + """ + return self._get_property("value") + + @value.setter + def value(self, value): + """value setter + + TBD + + value: int + """ + self._set_property("value", value, "value") + + @property + def values(self): + # type: () -> List[int] + """values getter + + TBD + + Returns: List[int] + """ + return self._get_property("values") + + @values.setter + def values(self, value): + """values setter + + TBD + + value: List[int] + """ + self._set_property("values", value, "values") + + +class PatternFlowRSVPPathSessionLspTunnelIpv4ExtendedTunnelIdCounter(OpenApiObject): + __slots__ = "_parent" + + _TYPES = { + "start": { + "type": int, + "format": "uint32", + }, + "step": { + "type": int, + "format": "uint32", + }, + "count": { + "type": int, + "format": "uint32", + }, + } # type: Dict[str, str] + + _REQUIRED = () # type: tuple(str) + + _DEFAULTS = { + "start": 0, + "step": 1, + "count": 1, + } # type: Dict[str, Union(type)] + + _STATUS = {} # type: Dict[str, Union(type)] + + def __init__(self, parent=None, start=0, step=1, count=1): + super( + PatternFlowRSVPPathSessionLspTunnelIpv4ExtendedTunnelIdCounter, self + ).__init__() + self._parent = parent + self._set_property("start", start) + self._set_property("step", step) + self._set_property("count", count) + + def set(self, start=None, step=None, count=None): + for property_name, property_value in locals().items(): + if property_name != "self" and property_value is not None: + self._set_property(property_name, property_value) + + @property + def start(self): + # type: () -> int + """start getter + + TBD + + Returns: int + """ + return self._get_property("start") + + @start.setter + def start(self, value): + """start setter + + TBD + + value: int + """ + self._set_property("start", value) + + @property + def step(self): + # type: () -> int + """step getter + + TBD + + Returns: int + """ + return self._get_property("step") + + @step.setter + def step(self, value): + """step setter + + TBD + + value: int + """ + self._set_property("step", value) + + @property + def count(self): + # type: () -> int + """count getter + + TBD + + Returns: int + """ + return self._get_property("count") + + @count.setter + def count(self, value): + """count setter + + TBD + + value: int + """ + self._set_property("count", value) + + +class FlowRSVPPathObjectsClassRsvpHop(OpenApiObject): + __slots__ = "_parent" + + _TYPES = { + "c_type": {"type": "FlowRSVPPathObjectsRsvpHopCType"}, + } # type: Dict[str, str] + + _REQUIRED = () # type: tuple(str) + + _DEFAULTS = {} # type: Dict[str, Union(type)] + + _STATUS = {} # type: Dict[str, Union(type)] + + def __init__(self, parent=None): + super(FlowRSVPPathObjectsClassRsvpHop, self).__init__() + self._parent = parent + + @property + def c_type(self): + # type: () -> FlowRSVPPathObjectsRsvpHopCType + """c_type getter + + Object for RSVP_HOP class. Currently supported c-type is IPv4 (1).Object for RSVP_HOP class. Currently supported c-type is IPv4 (1).Object for RSVP_HOP class. Currently supported c-type is IPv4 (1).Object for RSVP_HOP class. Currently supported c-type is IPv4 (1). + + Returns: FlowRSVPPathObjectsRsvpHopCType + """ + return self._get_property("c_type", FlowRSVPPathObjectsRsvpHopCType) + + +class FlowRSVPPathObjectsRsvpHopCType(OpenApiObject): + __slots__ = ("_parent", "_choice") + + _TYPES = { + "choice": { + "type": str, + "enum": [ + "ipv4", + ], + }, + "ipv4": {"type": "FlowRSVPPathRsvpHopIpv4"}, + } # type: Dict[str, str] + + _REQUIRED = () # type: tuple(str) + + _DEFAULTS = { + "choice": "ipv4", + } # type: Dict[str, Union(type)] + + IPV4 = "ipv4" # type: str + + _STATUS = {} # type: Dict[str, Union(type)] + + def __init__(self, parent=None, choice=None): + super(FlowRSVPPathObjectsRsvpHopCType, self).__init__() + self._parent = parent + if ( + "choice" in self._DEFAULTS + and choice is None + and self._DEFAULTS["choice"] in self._TYPES + ): + getattr(self, self._DEFAULTS["choice"]) + else: + self._set_property("choice", choice) + + @property + def ipv4(self): + # type: () -> FlowRSVPPathRsvpHopIpv4 + """Factory property that returns an instance of the FlowRSVPPathRsvpHopIpv4 class + + IPv4 RSVP_HOP object: Class 3, C-Type 1 + + Returns: FlowRSVPPathRsvpHopIpv4 + """ + return self._get_property("ipv4", FlowRSVPPathRsvpHopIpv4, self, "ipv4") + + @property + def choice(self): + # type: () -> Union[Literal["ipv4"]] + """choice getter + + TBD + + Returns: Union[Literal["ipv4"]] + """ + return self._get_property("choice") + + @choice.setter + def choice(self, value): + """choice setter + + TBD + + value: Union[Literal["ipv4"]] + """ + self._set_property("choice", value) + + +class FlowRSVPPathRsvpHopIpv4(OpenApiObject): + __slots__ = "_parent" + + _TYPES = { + "ipv4_next_previous_hop_address": { + "type": "PatternFlowRSVPPathRsvpHopIpv4Ipv4NextPreviousHopAddress" + }, + "logical_interface_handle": { + "type": "PatternFlowRSVPPathRsvpHopIpv4LogicalInterfaceHandle" + }, + } # type: Dict[str, str] + + _REQUIRED = () # type: tuple(str) + + _DEFAULTS = {} # type: Dict[str, Union(type)] + + _STATUS = {} # type: Dict[str, Union(type)] + + def __init__(self, parent=None): + super(FlowRSVPPathRsvpHopIpv4, self).__init__() + self._parent = parent + + @property + def ipv4_next_previous_hop_address(self): + # type: () -> PatternFlowRSVPPathRsvpHopIpv4Ipv4NextPreviousHopAddress + """ipv4_next_previous_hop_address getter + + The IPv4 address of the interface through which the last RSVP-knowledgeable hop forwarded this message.The IPv4 address of the interface through which the last RSVP-knowledgeable hop forwarded this message.The IPv4 address of the interface through which the last RSVP-knowledgeable hop forwarded this message.The IPv4 address of the interface through which the last RSVP-knowledgeable hop forwarded this message. + + Returns: PatternFlowRSVPPathRsvpHopIpv4Ipv4NextPreviousHopAddress + """ + return self._get_property( + "ipv4_next_previous_hop_address", + PatternFlowRSVPPathRsvpHopIpv4Ipv4NextPreviousHopAddress, + ) + + @property + def logical_interface_handle(self): + # type: () -> PatternFlowRSVPPathRsvpHopIpv4LogicalInterfaceHandle + """logical_interface_handle getter + + Logical Interface Handle (LIH) is used to distinguish logical outgoing interfaces. node receiving an LIH in Path message saves its value and returns it in the HOP objects of subsequent Resv messages sent to the node that originated the LIH. The LIH should be identically zero if there is no logical interface handle.Logical Interface Handle (LIH) is used to distinguish logical outgoing interfaces. node receiving an LIH in Path message saves its value and returns it in the HOP objects of subsequent Resv messages sent to the node that originated the LIH. The LIH should be identically zero if there is no logical interface handle.Logical Interface Handle (LIH) is used to distinguish logical outgoing interfaces. node receiving an LIH in Path message saves its value and returns it in the HOP objects of subsequent Resv messages sent to the node that originated the LIH. The LIH should be identically zero if there is no logical interface handle.Logical Interface Handle (LIH) is used to distinguish logical outgoing interfaces. node receiving an LIH in Path message saves its value and returns it in the HOP objects of subsequent Resv messages sent to the node that originated the LIH. The LIH should be identically zero if there is no logical interface handle. + + Returns: PatternFlowRSVPPathRsvpHopIpv4LogicalInterfaceHandle + """ + return self._get_property( + "logical_interface_handle", + PatternFlowRSVPPathRsvpHopIpv4LogicalInterfaceHandle, + ) + + +class PatternFlowRSVPPathRsvpHopIpv4Ipv4NextPreviousHopAddress(OpenApiObject): + __slots__ = ("_parent", "_choice") + + _TYPES = { + "choice": { + "type": str, + "enum": [ + "value", + "values", + "increment", + "decrement", + ], + }, + "value": { + "type": str, + "format": "ipv4", + }, + "values": { + "type": list, + "itemtype": str, + "itemformat": "ipv4", + }, + "increment": { + "type": "PatternFlowRSVPPathRsvpHopIpv4Ipv4NextPreviousHopAddressCounter" + }, + "decrement": { + "type": "PatternFlowRSVPPathRsvpHopIpv4Ipv4NextPreviousHopAddressCounter" + }, + } # type: Dict[str, str] + + _REQUIRED = () # type: tuple(str) + + _DEFAULTS = { + "choice": "value", + "value": "0.0.0.0", + "values": ["0.0.0.0"], + } # type: Dict[str, Union(type)] + + VALUE = "value" # type: str + VALUES = "values" # type: str + INCREMENT = "increment" # type: str + DECREMENT = "decrement" # type: str + + _STATUS = {} # type: Dict[str, Union(type)] + + def __init__(self, parent=None, choice=None, value="0.0.0.0", values=["0.0.0.0"]): + super(PatternFlowRSVPPathRsvpHopIpv4Ipv4NextPreviousHopAddress, self).__init__() + self._parent = parent + self._set_property("value", value) + self._set_property("values", values) + if ( + "choice" in self._DEFAULTS + and choice is None + and self._DEFAULTS["choice"] in self._TYPES + ): + getattr(self, self._DEFAULTS["choice"]) + else: + self._set_property("choice", choice) + + def set(self, value=None, values=None): + for property_name, property_value in locals().items(): + if property_name != "self" and property_value is not None: + self._set_property(property_name, property_value) + + @property + def increment(self): + # type: () -> PatternFlowRSVPPathRsvpHopIpv4Ipv4NextPreviousHopAddressCounter + """Factory property that returns an instance of the PatternFlowRSVPPathRsvpHopIpv4Ipv4NextPreviousHopAddressCounter class + + ipv4 counter pattern + + Returns: PatternFlowRSVPPathRsvpHopIpv4Ipv4NextPreviousHopAddressCounter + """ + return self._get_property( + "increment", + PatternFlowRSVPPathRsvpHopIpv4Ipv4NextPreviousHopAddressCounter, + self, + "increment", + ) + + @property + def decrement(self): + # type: () -> PatternFlowRSVPPathRsvpHopIpv4Ipv4NextPreviousHopAddressCounter + """Factory property that returns an instance of the PatternFlowRSVPPathRsvpHopIpv4Ipv4NextPreviousHopAddressCounter class + + ipv4 counter pattern + + Returns: PatternFlowRSVPPathRsvpHopIpv4Ipv4NextPreviousHopAddressCounter + """ + return self._get_property( + "decrement", + PatternFlowRSVPPathRsvpHopIpv4Ipv4NextPreviousHopAddressCounter, + self, + "decrement", + ) + + @property + def choice(self): + # type: () -> Union[Literal["decrement"], Literal["increment"], Literal["value"], Literal["values"]] + """choice getter + + TBD + + Returns: Union[Literal["decrement"], Literal["increment"], Literal["value"], Literal["values"]] + """ + return self._get_property("choice") + + @choice.setter + def choice(self, value): + """choice setter + + TBD + + value: Union[Literal["decrement"], Literal["increment"], Literal["value"], Literal["values"]] + """ + self._set_property("choice", value) + + @property + def value(self): + # type: () -> str + """value getter + + TBD + + Returns: str + """ + return self._get_property("value") + + @value.setter + def value(self, value): + """value setter + + TBD + + value: str + """ + self._set_property("value", value, "value") + + @property + def values(self): + # type: () -> List[str] + """values getter + + TBD + + Returns: List[str] + """ + return self._get_property("values") + + @values.setter + def values(self, value): + """values setter + + TBD + + value: List[str] + """ + self._set_property("values", value, "values") + + +class PatternFlowRSVPPathRsvpHopIpv4Ipv4NextPreviousHopAddressCounter(OpenApiObject): + __slots__ = "_parent" + + _TYPES = { + "start": { + "type": str, + "format": "ipv4", + }, + "step": { + "type": str, + "format": "ipv4", + }, + "count": { + "type": int, + "format": "uint32", + }, + } # type: Dict[str, str] + + _REQUIRED = () # type: tuple(str) + + _DEFAULTS = { + "start": "0.0.0.0", + "step": "0.0.0.1", + "count": 1, + } # type: Dict[str, Union(type)] + + _STATUS = {} # type: Dict[str, Union(type)] + + def __init__(self, parent=None, start="0.0.0.0", step="0.0.0.1", count=1): + super( + PatternFlowRSVPPathRsvpHopIpv4Ipv4NextPreviousHopAddressCounter, self + ).__init__() + self._parent = parent + self._set_property("start", start) + self._set_property("step", step) + self._set_property("count", count) + + def set(self, start=None, step=None, count=None): + for property_name, property_value in locals().items(): + if property_name != "self" and property_value is not None: + self._set_property(property_name, property_value) + + @property + def start(self): + # type: () -> str + """start getter + + TBD + + Returns: str + """ + return self._get_property("start") + + @start.setter + def start(self, value): + """start setter + + TBD + + value: str + """ + self._set_property("start", value) + + @property + def step(self): + # type: () -> str + """step getter + + TBD + + Returns: str + """ + return self._get_property("step") + + @step.setter + def step(self, value): + """step setter + + TBD + + value: str + """ + self._set_property("step", value) + + @property + def count(self): + # type: () -> int + """count getter + + TBD + + Returns: int + """ + return self._get_property("count") + + @count.setter + def count(self, value): + """count setter + + TBD + + value: int + """ + self._set_property("count", value) + + +class PatternFlowRSVPPathRsvpHopIpv4LogicalInterfaceHandle(OpenApiObject): + __slots__ = ("_parent", "_choice") + + _TYPES = { + "choice": { + "type": str, + "enum": [ + "value", + "values", + "increment", + "decrement", + ], + }, + "value": { + "type": int, + "format": "uint32", + }, + "values": { + "type": list, + "itemtype": int, + "itemformat": "uint32", + }, + "increment": { + "type": "PatternFlowRSVPPathRsvpHopIpv4LogicalInterfaceHandleCounter" + }, + "decrement": { + "type": "PatternFlowRSVPPathRsvpHopIpv4LogicalInterfaceHandleCounter" + }, + } # type: Dict[str, str] + + _REQUIRED = () # type: tuple(str) + + _DEFAULTS = { + "choice": "value", + "value": 0, + "values": [0], + } # type: Dict[str, Union(type)] + + VALUE = "value" # type: str + VALUES = "values" # type: str + INCREMENT = "increment" # type: str + DECREMENT = "decrement" # type: str + + _STATUS = {} # type: Dict[str, Union(type)] + + def __init__(self, parent=None, choice=None, value=0, values=[0]): + super(PatternFlowRSVPPathRsvpHopIpv4LogicalInterfaceHandle, self).__init__() + self._parent = parent + self._set_property("value", value) + self._set_property("values", values) + if ( + "choice" in self._DEFAULTS + and choice is None + and self._DEFAULTS["choice"] in self._TYPES + ): + getattr(self, self._DEFAULTS["choice"]) + else: + self._set_property("choice", choice) + + def set(self, value=None, values=None): + for property_name, property_value in locals().items(): + if property_name != "self" and property_value is not None: + self._set_property(property_name, property_value) + + @property + def increment(self): + # type: () -> PatternFlowRSVPPathRsvpHopIpv4LogicalInterfaceHandleCounter + """Factory property that returns an instance of the PatternFlowRSVPPathRsvpHopIpv4LogicalInterfaceHandleCounter class + + integer counter pattern + + Returns: PatternFlowRSVPPathRsvpHopIpv4LogicalInterfaceHandleCounter + """ + return self._get_property( + "increment", + PatternFlowRSVPPathRsvpHopIpv4LogicalInterfaceHandleCounter, + self, + "increment", + ) + + @property + def decrement(self): + # type: () -> PatternFlowRSVPPathRsvpHopIpv4LogicalInterfaceHandleCounter + """Factory property that returns an instance of the PatternFlowRSVPPathRsvpHopIpv4LogicalInterfaceHandleCounter class + + integer counter pattern + + Returns: PatternFlowRSVPPathRsvpHopIpv4LogicalInterfaceHandleCounter + """ + return self._get_property( + "decrement", + PatternFlowRSVPPathRsvpHopIpv4LogicalInterfaceHandleCounter, + self, + "decrement", + ) + + @property + def choice(self): + # type: () -> Union[Literal["decrement"], Literal["increment"], Literal["value"], Literal["values"]] + """choice getter + + TBD + + Returns: Union[Literal["decrement"], Literal["increment"], Literal["value"], Literal["values"]] + """ + return self._get_property("choice") + + @choice.setter + def choice(self, value): + """choice setter + + TBD + + value: Union[Literal["decrement"], Literal["increment"], Literal["value"], Literal["values"]] + """ + self._set_property("choice", value) + + @property + def value(self): + # type: () -> int + """value getter + + TBD + + Returns: int + """ + return self._get_property("value") + + @value.setter + def value(self, value): + """value setter + + TBD + + value: int + """ + self._set_property("value", value, "value") + + @property + def values(self): + # type: () -> List[int] + """values getter + + TBD + + Returns: List[int] + """ + return self._get_property("values") + + @values.setter + def values(self, value): + """values setter + + TBD + + value: List[int] + """ + self._set_property("values", value, "values") + + +class PatternFlowRSVPPathRsvpHopIpv4LogicalInterfaceHandleCounter(OpenApiObject): + __slots__ = "_parent" + + _TYPES = { + "start": { + "type": int, + "format": "uint32", + }, + "step": { + "type": int, + "format": "uint32", + }, + "count": { + "type": int, + "format": "uint32", + }, + } # type: Dict[str, str] + + _REQUIRED = () # type: tuple(str) + + _DEFAULTS = { + "start": 0, + "step": 1, + "count": 1, + } # type: Dict[str, Union(type)] + + _STATUS = {} # type: Dict[str, Union(type)] + + def __init__(self, parent=None, start=0, step=1, count=1): + super( + PatternFlowRSVPPathRsvpHopIpv4LogicalInterfaceHandleCounter, self + ).__init__() + self._parent = parent + self._set_property("start", start) + self._set_property("step", step) + self._set_property("count", count) + + def set(self, start=None, step=None, count=None): + for property_name, property_value in locals().items(): + if property_name != "self" and property_value is not None: + self._set_property(property_name, property_value) + + @property + def start(self): + # type: () -> int + """start getter + + TBD + + Returns: int + """ + return self._get_property("start") + + @start.setter + def start(self, value): + """start setter + + TBD + + value: int + """ + self._set_property("start", value) + + @property + def step(self): + # type: () -> int + """step getter + + TBD + + Returns: int + """ + return self._get_property("step") + + @step.setter + def step(self, value): + """step setter + + TBD + + value: int + """ + self._set_property("step", value) + + @property + def count(self): + # type: () -> int + """count getter + + TBD + + Returns: int + """ + return self._get_property("count") + + @count.setter + def count(self, value): + """count setter + + TBD + + value: int + """ + self._set_property("count", value) + + +class FlowRSVPPathObjectsClassTimeValues(OpenApiObject): + __slots__ = "_parent" + + _TYPES = { + "c_type": {"type": "FlowRSVPPathObjectsTimeValuesCType"}, + } # type: Dict[str, str] + + _REQUIRED = () # type: tuple(str) + + _DEFAULTS = {} # type: Dict[str, Union(type)] + + _STATUS = {} # type: Dict[str, Union(type)] + + def __init__(self, parent=None): + super(FlowRSVPPathObjectsClassTimeValues, self).__init__() + self._parent = parent + + @property + def c_type(self): + # type: () -> FlowRSVPPathObjectsTimeValuesCType + """c_type getter + + Object for TIME_VALUES class. Currently supported c-type is Type Time Value (1).Object for TIME_VALUES class. Currently supported c-type is Type Time Value (1).Object for TIME_VALUES class. Currently supported c-type is Type Time Value (1).Object for TIME_VALUES class. Currently supported c-type is Type Time Value (1). + + Returns: FlowRSVPPathObjectsTimeValuesCType + """ + return self._get_property("c_type", FlowRSVPPathObjectsTimeValuesCType) + + +class FlowRSVPPathObjectsTimeValuesCType(OpenApiObject): + __slots__ = ("_parent", "_choice") + + _TYPES = { + "choice": { + "type": str, + "enum": [ + "type_1_time_value", + ], + }, + "type_1_time_value": {"type": "FlowRSVPPathTimeValuesType1"}, + } # type: Dict[str, str] + + _REQUIRED = () # type: tuple(str) + + _DEFAULTS = { + "choice": "type_1_time_value", + } # type: Dict[str, Union(type)] + + TYPE_1_TIME_VALUE = "type_1_time_value" # type: str + + _STATUS = {} # type: Dict[str, Union(type)] + + def __init__(self, parent=None, choice=None): + super(FlowRSVPPathObjectsTimeValuesCType, self).__init__() + self._parent = parent + if ( + "choice" in self._DEFAULTS + and choice is None + and self._DEFAULTS["choice"] in self._TYPES + ): + getattr(self, self._DEFAULTS["choice"]) + else: + self._set_property("choice", choice) + + @property + def type_1_time_value(self): + # type: () -> FlowRSVPPathTimeValuesType1 + """Factory property that returns an instance of the FlowRSVPPathTimeValuesType1 class + + TIME_VALUES Object: Class 5, C-Type 1 + + Returns: FlowRSVPPathTimeValuesType1 + """ + return self._get_property( + "type_1_time_value", FlowRSVPPathTimeValuesType1, self, "type_1_time_value" + ) + + @property + def choice(self): + # type: () -> Union[Literal["type_1_time_value"]] + """choice getter + + TBD + + Returns: Union[Literal["type_1_time_value"]] + """ + return self._get_property("choice") + + @choice.setter + def choice(self, value): + """choice setter + + TBD + + value: Union[Literal["type_1_time_value"]] + """ + self._set_property("choice", value) + + +class FlowRSVPPathTimeValuesType1(OpenApiObject): + __slots__ = "_parent" + + _TYPES = { + "refresh_period_r": { + "type": "PatternFlowRSVPPathTimeValuesType1RefreshPeriodR" + }, + } # type: Dict[str, str] + + _REQUIRED = () # type: tuple(str) + + _DEFAULTS = {} # type: Dict[str, Union(type)] + + _STATUS = {} # type: Dict[str, Union(type)] + + def __init__(self, parent=None): + super(FlowRSVPPathTimeValuesType1, self).__init__() + self._parent = parent + + @property + def refresh_period_r(self): + # type: () -> PatternFlowRSVPPathTimeValuesType1RefreshPeriodR + """refresh_period_r getter + + The refresh timeout period used to generate this message;in milliseconds.The refresh timeout period used to generate this message;in milliseconds.The refresh timeout period used to generate this message;in milliseconds.The refresh timeout period used to generate this message;in milliseconds. + + Returns: PatternFlowRSVPPathTimeValuesType1RefreshPeriodR + """ + return self._get_property( + "refresh_period_r", PatternFlowRSVPPathTimeValuesType1RefreshPeriodR + ) + + +class PatternFlowRSVPPathTimeValuesType1RefreshPeriodR(OpenApiObject): + __slots__ = ("_parent", "_choice") + + _TYPES = { + "choice": { + "type": str, + "enum": [ + "value", + "values", + "increment", + "decrement", + ], + }, + "value": { + "type": int, + "format": "uint32", + }, + "values": { + "type": list, + "itemtype": int, + "itemformat": "uint32", + }, + "increment": { + "type": "PatternFlowRSVPPathTimeValuesType1RefreshPeriodRCounter" + }, + "decrement": { + "type": "PatternFlowRSVPPathTimeValuesType1RefreshPeriodRCounter" + }, + } # type: Dict[str, str] + + _REQUIRED = () # type: tuple(str) + + _DEFAULTS = { + "choice": "value", + "value": 0, + "values": [0], + } # type: Dict[str, Union(type)] + + VALUE = "value" # type: str + VALUES = "values" # type: str + INCREMENT = "increment" # type: str + DECREMENT = "decrement" # type: str + + _STATUS = {} # type: Dict[str, Union(type)] + + def __init__(self, parent=None, choice=None, value=0, values=[0]): + super(PatternFlowRSVPPathTimeValuesType1RefreshPeriodR, self).__init__() + self._parent = parent + self._set_property("value", value) + self._set_property("values", values) + if ( + "choice" in self._DEFAULTS + and choice is None + and self._DEFAULTS["choice"] in self._TYPES + ): + getattr(self, self._DEFAULTS["choice"]) + else: + self._set_property("choice", choice) + + def set(self, value=None, values=None): + for property_name, property_value in locals().items(): + if property_name != "self" and property_value is not None: + self._set_property(property_name, property_value) + + @property + def increment(self): + # type: () -> PatternFlowRSVPPathTimeValuesType1RefreshPeriodRCounter + """Factory property that returns an instance of the PatternFlowRSVPPathTimeValuesType1RefreshPeriodRCounter class + + integer counter pattern + + Returns: PatternFlowRSVPPathTimeValuesType1RefreshPeriodRCounter + """ + return self._get_property( + "increment", + PatternFlowRSVPPathTimeValuesType1RefreshPeriodRCounter, + self, + "increment", + ) + + @property + def decrement(self): + # type: () -> PatternFlowRSVPPathTimeValuesType1RefreshPeriodRCounter + """Factory property that returns an instance of the PatternFlowRSVPPathTimeValuesType1RefreshPeriodRCounter class + + integer counter pattern + + Returns: PatternFlowRSVPPathTimeValuesType1RefreshPeriodRCounter + """ + return self._get_property( + "decrement", + PatternFlowRSVPPathTimeValuesType1RefreshPeriodRCounter, + self, + "decrement", + ) + + @property + def choice(self): + # type: () -> Union[Literal["decrement"], Literal["increment"], Literal["value"], Literal["values"]] + """choice getter + + TBD + + Returns: Union[Literal["decrement"], Literal["increment"], Literal["value"], Literal["values"]] + """ + return self._get_property("choice") + + @choice.setter + def choice(self, value): + """choice setter + + TBD + + value: Union[Literal["decrement"], Literal["increment"], Literal["value"], Literal["values"]] + """ + self._set_property("choice", value) + + @property + def value(self): + # type: () -> int + """value getter + + TBD + + Returns: int + """ + return self._get_property("value") + + @value.setter + def value(self, value): + """value setter + + TBD + + value: int + """ + self._set_property("value", value, "value") + + @property + def values(self): + # type: () -> List[int] + """values getter + + TBD + + Returns: List[int] + """ + return self._get_property("values") + + @values.setter + def values(self, value): + """values setter + + TBD + + value: List[int] + """ + self._set_property("values", value, "values") + + +class PatternFlowRSVPPathTimeValuesType1RefreshPeriodRCounter(OpenApiObject): + __slots__ = "_parent" + + _TYPES = { + "start": { + "type": int, + "format": "uint32", + }, + "step": { + "type": int, + "format": "uint32", + }, + "count": { + "type": int, + "format": "uint32", + }, + } # type: Dict[str, str] + + _REQUIRED = () # type: tuple(str) + + _DEFAULTS = { + "start": 0, + "step": 1, + "count": 1, + } # type: Dict[str, Union(type)] + + _STATUS = {} # type: Dict[str, Union(type)] + + def __init__(self, parent=None, start=0, step=1, count=1): + super(PatternFlowRSVPPathTimeValuesType1RefreshPeriodRCounter, self).__init__() + self._parent = parent + self._set_property("start", start) + self._set_property("step", step) + self._set_property("count", count) + + def set(self, start=None, step=None, count=None): + for property_name, property_value in locals().items(): + if property_name != "self" and property_value is not None: + self._set_property(property_name, property_value) + + @property + def start(self): + # type: () -> int + """start getter + + TBD + + Returns: int + """ + return self._get_property("start") + + @start.setter + def start(self, value): + """start setter + + TBD + + value: int + """ + self._set_property("start", value) + + @property + def step(self): + # type: () -> int + """step getter + + TBD + + Returns: int + """ + return self._get_property("step") + + @step.setter + def step(self, value): + """step setter + + TBD + + value: int + """ + self._set_property("step", value) + + @property + def count(self): + # type: () -> int + """count getter + + TBD + + Returns: int + """ + return self._get_property("count") + + @count.setter + def count(self, value): + """count setter + + TBD + + value: int + """ + self._set_property("count", value) + + +class FlowRSVPPathObjectsClassExplicitRoute(OpenApiObject): + __slots__ = "_parent" + + _TYPES = { + "c_type": {"type": "FlowRSVPPathObjectsClassExplicitRouteCType"}, + } # type: Dict[str, str] + + _REQUIRED = () # type: tuple(str) + + _DEFAULTS = {} # type: Dict[str, Union(type)] + + _STATUS = {} # type: Dict[str, Union(type)] + + def __init__(self, parent=None): + super(FlowRSVPPathObjectsClassExplicitRoute, self).__init__() + self._parent = parent + + @property + def c_type(self): + # type: () -> FlowRSVPPathObjectsClassExplicitRouteCType + """c_type getter + + Object for EXPLICIT_ROUTE class and c-type is Type Explicit Route (1).Object for EXPLICIT_ROUTE class and c-type is Type Explicit Route (1).Object for EXPLICIT_ROUTE class and c-type is Type Explicit Route (1).Object for EXPLICIT_ROUTE class and c-type is Type Explicit Route (1). + + Returns: FlowRSVPPathObjectsClassExplicitRouteCType + """ + return self._get_property("c_type", FlowRSVPPathObjectsClassExplicitRouteCType) + + +class FlowRSVPPathObjectsClassExplicitRouteCType(OpenApiObject): + __slots__ = ("_parent", "_choice") + + _TYPES = { + "choice": { + "type": str, + "enum": [ + "type_1_explicit_route", + ], + }, + "type_1_explicit_route": {"type": "FlowRSVPPathExplicitRouteType1"}, + } # type: Dict[str, str] + + _REQUIRED = () # type: tuple(str) + + _DEFAULTS = { + "choice": "type_1_explicit_route", + } # type: Dict[str, Union(type)] + + TYPE_1_EXPLICIT_ROUTE = "type_1_explicit_route" # type: str + + _STATUS = {} # type: Dict[str, Union(type)] + + def __init__(self, parent=None, choice=None): + super(FlowRSVPPathObjectsClassExplicitRouteCType, self).__init__() + self._parent = parent + if ( + "choice" in self._DEFAULTS + and choice is None + and self._DEFAULTS["choice"] in self._TYPES + ): + getattr(self, self._DEFAULTS["choice"]) + else: + self._set_property("choice", choice) + + @property + def type_1_explicit_route(self): + # type: () -> FlowRSVPPathExplicitRouteType1 + """Factory property that returns an instance of the FlowRSVPPathExplicitRouteType1 class + + Type1 Explicit Route has subobjects. Currently supported subobjects are IPv4 prefix and 4-byte AS number. + + Returns: FlowRSVPPathExplicitRouteType1 + """ + return self._get_property( + "type_1_explicit_route", + FlowRSVPPathExplicitRouteType1, + self, + "type_1_explicit_route", + ) + + @property + def choice(self): + # type: () -> Union[Literal["type_1_explicit_route"]] + """choice getter + + TBD + + Returns: Union[Literal["type_1_explicit_route"]] + """ + return self._get_property("choice") + + @choice.setter + def choice(self, value): + """choice setter + + TBD + + value: Union[Literal["type_1_explicit_route"]] + """ + self._set_property("choice", value) + + +class FlowRSVPPathExplicitRouteType1(OpenApiObject): + __slots__ = "_parent" + + _TYPES = { + "subobjects": {"type": "FlowRSVPType1ExplicitRouteSubobjectsIter"}, + } # type: Dict[str, str] + + _REQUIRED = () # type: tuple(str) + + _DEFAULTS = {} # type: Dict[str, Union(type)] + + _STATUS = {} # type: Dict[str, Union(type)] + + def __init__(self, parent=None): + super(FlowRSVPPathExplicitRouteType1, self).__init__() + self._parent = parent + + @property + def subobjects(self): + # type: () -> FlowRSVPType1ExplicitRouteSubobjectsIter + """subobjects getter + + TBD + + Returns: FlowRSVPType1ExplicitRouteSubobjectsIter + """ + return self._get_property( + "subobjects", + FlowRSVPType1ExplicitRouteSubobjectsIter, + self._parent, + self._choice, + ) + + +class FlowRSVPType1ExplicitRouteSubobjects(OpenApiObject): + __slots__ = "_parent" + + _TYPES = { + "type": {"type": "FlowRSVPType1ExplicitRouteSubobjectsType"}, + } # type: Dict[str, str] + + _REQUIRED = () # type: tuple(str) + + _DEFAULTS = {} # type: Dict[str, Union(type)] + + _STATUS = {} # type: Dict[str, Union(type)] + + def __init__(self, parent=None): + super(FlowRSVPType1ExplicitRouteSubobjects, self).__init__() + self._parent = parent + + @property + def type(self): + # type: () -> FlowRSVPType1ExplicitRouteSubobjectsType + """type getter + + Currently supported subobjects are IPv4 address(1) and 4-byte AS number(5).Currently supported subobjects are IPv4 address(1) and 4-byte AS number(5).Currently supported subobjects are IPv4 address(1) and 4-byte AS number(5). + + Returns: FlowRSVPType1ExplicitRouteSubobjectsType + """ + return self._get_property("type", FlowRSVPType1ExplicitRouteSubobjectsType) + + +class FlowRSVPType1ExplicitRouteSubobjectsType(OpenApiObject): + __slots__ = ("_parent", "_choice") + + _TYPES = { + "choice": { + "type": str, + "enum": [ + "ipv4_prefix", + "four_byte_as_number", + ], + }, + "ipv4_prefix": {"type": "FlowRSVPPathExplicitRouteType1Ipv4Prefix"}, + "four_byte_as_number": { + "type": "FlowRSVPPathExplicitRouteType1FourByteASNumber" + }, + } # type: Dict[str, str] + + _REQUIRED = () # type: tuple(str) + + _DEFAULTS = { + "choice": "ipv4_prefix", + } # type: Dict[str, Union(type)] + + IPV4_PREFIX = "ipv4_prefix" # type: str + FOUR_BYTE_AS_NUMBER = "four_byte_as_number" # type: str + + _STATUS = {} # type: Dict[str, Union(type)] + + def __init__(self, parent=None, choice=None): + super(FlowRSVPType1ExplicitRouteSubobjectsType, self).__init__() + self._parent = parent + if ( + "choice" in self._DEFAULTS + and choice is None + and self._DEFAULTS["choice"] in self._TYPES + ): + getattr(self, self._DEFAULTS["choice"]) + else: + self._set_property("choice", choice) + + @property + def ipv4_prefix(self): + # type: () -> FlowRSVPPathExplicitRouteType1Ipv4Prefix + """Factory property that returns an instance of the FlowRSVPPathExplicitRouteType1Ipv4Prefix class + + Class EXPLICIT_ROUTE, Type1 ROUTE_RECORD C-Type 1 Subobject: IPv4 Prefix, C-Type: 1 + + Returns: FlowRSVPPathExplicitRouteType1Ipv4Prefix + """ + return self._get_property( + "ipv4_prefix", FlowRSVPPathExplicitRouteType1Ipv4Prefix, self, "ipv4_prefix" + ) + + @property + def four_byte_as_number(self): + # type: () -> FlowRSVPPathExplicitRouteType1FourByteASNumber + """Factory property that returns an instance of the FlowRSVPPathExplicitRouteType1FourByteASNumber class + + Class EXPLICIT_ROUTE, Type1 ROUTE_RECORD C-Type 1 Subobject: 4-byte AS number, C-Type: 32 + + Returns: FlowRSVPPathExplicitRouteType1FourByteASNumber + """ + return self._get_property( + "four_byte_as_number", + FlowRSVPPathExplicitRouteType1FourByteASNumber, + self, + "four_byte_as_number", + ) + + @property + def choice(self): + # type: () -> Union[Literal["four_byte_as_number"], Literal["ipv4_prefix"]] + """choice getter + + TBD + + Returns: Union[Literal["four_byte_as_number"], Literal["ipv4_prefix"]] + """ + return self._get_property("choice") + + @choice.setter + def choice(self, value): + """choice setter + + TBD + + value: Union[Literal["four_byte_as_number"], Literal["ipv4_prefix"]] + """ + self._set_property("choice", value) + + +class FlowRSVPPathExplicitRouteType1Ipv4Prefix(OpenApiObject): + __slots__ = "_parent" + + _TYPES = { + "l_bit": {"type": "PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixLBit"}, + "length": {"type": "FlowRSVPExplicitRouteLength"}, + "ipv4_address": { + "type": "PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixIpv4Address" + }, + "prefix": { + "type": int, + "format": "uint32", + "minimum": 1, + "maximum": 32, + }, + } # type: Dict[str, str] + + _REQUIRED = () # type: tuple(str) + + _DEFAULTS = { + "prefix": 32, + } # type: Dict[str, Union(type)] + + _STATUS = {} # type: Dict[str, Union(type)] + + def __init__(self, parent=None, prefix=32): + super(FlowRSVPPathExplicitRouteType1Ipv4Prefix, self).__init__() + self._parent = parent + self._set_property("prefix", prefix) + + def set(self, prefix=None): + for property_name, property_value in locals().items(): + if property_name != "self" and property_value is not None: + self._set_property(property_name, property_value) + + @property + def l_bit(self): + # type: () -> PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixLBit + """l_bit getter + + The bit is an attribute of the subobject.The bit is set if the subobject represents loose hop in the explicit route. If the bit is not set, the subobject represents strict hop in the explicit route.The bit is an attribute of the subobject.The bit is set if the subobject represents loose hop in the explicit route. If the bit is not set, the subobject represents strict hop in the explicit route.The bit is an attribute of the subobject.The bit is set if the subobject represents loose hop in the explicit route. If the bit is not set, the subobject represents strict hop in the explicit route.The bit is an attribute of the subobject.The bit is set if the subobject represents loose hop in the explicit route. If the bit is not set, the subobject represents strict hop in the explicit route. + + Returns: PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixLBit + """ + return self._get_property( + "l_bit", PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixLBit + ) + + @property + def length(self): + # type: () -> FlowRSVPExplicitRouteLength + """length getter + + The Length contains the total length of the subobject in bytes,including ,Type and Length fields. The Length MUST be atleast 4, and MUST be multiple of 4. + + Returns: FlowRSVPExplicitRouteLength + """ + return self._get_property("length", FlowRSVPExplicitRouteLength) + + @property + def ipv4_address(self): + # type: () -> PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixIpv4Address + """ipv4_address getter + + This IPv4 address is treated as prefix based on the prefix length value below. Bits beyond the prefix are ignored on receipt and SHOULD be set to zero on transmission.This IPv4 address is treated as prefix based on the prefix length value below. Bits beyond the prefix are ignored on receipt and SHOULD be set to zero on transmission.This IPv4 address is treated as prefix based on the prefix length value below. Bits beyond the prefix are ignored on receipt and SHOULD be set to zero on transmission.This IPv4 address is treated as prefix based on the prefix length value below. Bits beyond the prefix are ignored on receipt and SHOULD be set to zero on transmission. + + Returns: PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixIpv4Address + """ + return self._get_property( + "ipv4_address", PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixIpv4Address + ) + + @property + def prefix(self): + # type: () -> int + """prefix getter + + The prefix of the IPv4 address. + + Returns: int + """ + return self._get_property("prefix") + + @prefix.setter + def prefix(self, value): + """prefix setter + + The prefix of the IPv4 address. + + value: int + """ + self._set_property("prefix", value) + + +class PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixLBit(OpenApiObject): + __slots__ = ("_parent", "_choice") + + _TYPES = { + "choice": { + "type": str, + "enum": [ + "value", + "values", + "increment", + "decrement", + ], + }, + "value": { + "type": int, + "format": "uint32", + "maximum": 1, + }, + "values": { + "type": list, + "itemtype": int, + "itemformat": "uint32", + "maximum": 1, + }, + "increment": { + "type": "PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixLBitCounter" + }, + "decrement": { + "type": "PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixLBitCounter" + }, + } # type: Dict[str, str] + + _REQUIRED = () # type: tuple(str) + + _DEFAULTS = { + "choice": "value", + "value": 0, + "values": [0], + } # type: Dict[str, Union(type)] + + VALUE = "value" # type: str + VALUES = "values" # type: str + INCREMENT = "increment" # type: str + DECREMENT = "decrement" # type: str + + _STATUS = {} # type: Dict[str, Union(type)] + + def __init__(self, parent=None, choice=None, value=0, values=[0]): + super(PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixLBit, self).__init__() + self._parent = parent + self._set_property("value", value) + self._set_property("values", values) + if ( + "choice" in self._DEFAULTS + and choice is None + and self._DEFAULTS["choice"] in self._TYPES + ): + getattr(self, self._DEFAULTS["choice"]) + else: + self._set_property("choice", choice) + + def set(self, value=None, values=None): + for property_name, property_value in locals().items(): + if property_name != "self" and property_value is not None: + self._set_property(property_name, property_value) + + @property + def increment(self): + # type: () -> PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixLBitCounter + """Factory property that returns an instance of the PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixLBitCounter class + + integer counter pattern + + Returns: PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixLBitCounter + """ + return self._get_property( + "increment", + PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixLBitCounter, + self, + "increment", + ) + + @property + def decrement(self): + # type: () -> PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixLBitCounter + """Factory property that returns an instance of the PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixLBitCounter class + + integer counter pattern + + Returns: PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixLBitCounter + """ + return self._get_property( + "decrement", + PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixLBitCounter, + self, + "decrement", + ) + + @property + def choice(self): + # type: () -> Union[Literal["decrement"], Literal["increment"], Literal["value"], Literal["values"]] + """choice getter + + TBD + + Returns: Union[Literal["decrement"], Literal["increment"], Literal["value"], Literal["values"]] + """ + return self._get_property("choice") + + @choice.setter + def choice(self, value): + """choice setter + + TBD + + value: Union[Literal["decrement"], Literal["increment"], Literal["value"], Literal["values"]] + """ + self._set_property("choice", value) + + @property + def value(self): + # type: () -> int + """value getter + + TBD + + Returns: int + """ + return self._get_property("value") + + @value.setter + def value(self, value): + """value setter + + TBD + + value: int + """ + self._set_property("value", value, "value") + + @property + def values(self): + # type: () -> List[int] + """values getter + + TBD + + Returns: List[int] + """ + return self._get_property("values") + + @values.setter + def values(self, value): + """values setter + + TBD + + value: List[int] + """ + self._set_property("values", value, "values") + + +class PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixLBitCounter(OpenApiObject): + __slots__ = "_parent" + + _TYPES = { + "start": { + "type": int, + "format": "uint32", + "maximum": 1, + }, + "step": { + "type": int, + "format": "uint32", + "maximum": 1, + }, + "count": { + "type": int, + "format": "uint32", + "maximum": 1, + }, + } # type: Dict[str, str] + + _REQUIRED = () # type: tuple(str) + + _DEFAULTS = { + "start": 0, + "step": 1, + "count": 1, + } # type: Dict[str, Union(type)] + + _STATUS = {} # type: Dict[str, Union(type)] + + def __init__(self, parent=None, start=0, step=1, count=1): + super( + PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixLBitCounter, self + ).__init__() + self._parent = parent + self._set_property("start", start) + self._set_property("step", step) + self._set_property("count", count) + + def set(self, start=None, step=None, count=None): + for property_name, property_value in locals().items(): + if property_name != "self" and property_value is not None: + self._set_property(property_name, property_value) + + @property + def start(self): + # type: () -> int + """start getter + + TBD + + Returns: int + """ + return self._get_property("start") + + @start.setter + def start(self, value): + """start setter + + TBD + + value: int + """ + self._set_property("start", value) + + @property + def step(self): + # type: () -> int + """step getter + + TBD + + Returns: int + """ + return self._get_property("step") + + @step.setter + def step(self, value): + """step setter + + TBD + + value: int + """ + self._set_property("step", value) + + @property + def count(self): + # type: () -> int + """count getter + + TBD + + Returns: int + """ + return self._get_property("count") + + @count.setter + def count(self, value): + """count setter + + TBD + + value: int + """ + self._set_property("count", value) + + +class FlowRSVPExplicitRouteLength(OpenApiObject): + __slots__ = ("_parent", "_choice") + + _TYPES = { + "choice": { + "type": str, + "enum": [ + "auto", + "value", + ], + }, + "auto": { + "type": int, + "format": "uint32", + "maximum": 256, + }, + "value": { + "type": int, + "format": "uint32", + "maximum": 256, + }, + } # type: Dict[str, str] + + _REQUIRED = () # type: tuple(str) + + _DEFAULTS = { + "choice": "auto", + "auto": 8, + "value": 8, + } # type: Dict[str, Union(type)] + + AUTO = "auto" # type: str + VALUE = "value" # type: str + + _STATUS = {} # type: Dict[str, Union(type)] + + def __init__(self, parent=None, choice=None, auto=8, value=8): + super(FlowRSVPExplicitRouteLength, self).__init__() + self._parent = parent + self._set_property("auto", auto) + self._set_property("value", value) + if ( + "choice" in self._DEFAULTS + and choice is None + and self._DEFAULTS["choice"] in self._TYPES + ): + getattr(self, self._DEFAULTS["choice"]) + else: + self._set_property("choice", choice) + + def set(self, auto=None, value=None): + for property_name, property_value in locals().items(): + if property_name != "self" and property_value is not None: + self._set_property(property_name, property_value) + + @property + def choice(self): + # type: () -> Union[Literal["auto"], Literal["value"]] + """choice getter + + auto or configured value. + + Returns: Union[Literal["auto"], Literal["value"]] + """ + return self._get_property("choice") + + @choice.setter + def choice(self, value): + """choice setter + + auto or configured value. + + value: Union[Literal["auto"], Literal["value"]] + """ + self._set_property("choice", value) + + @property + def auto(self): + # type: () -> int + """auto getter + + The OTG implementation can provide system generated value for this property. If the OTG is unable to generate value the default value must be used. + + Returns: int + """ + return self._get_property("auto") + + @property + def value(self): + # type: () -> int + """value getter + + TBD + + Returns: int + """ + return self._get_property("value") + + @value.setter + def value(self, value): + """value setter + + TBD + + value: int + """ + self._set_property("value", value, "value") + + +class PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixIpv4Address(OpenApiObject): + __slots__ = ("_parent", "_choice") + + _TYPES = { + "choice": { + "type": str, + "enum": [ + "value", + "values", + "increment", + "decrement", + ], + }, + "value": { + "type": str, + "format": "ipv4", + }, + "values": { + "type": list, + "itemtype": str, + "itemformat": "ipv4", + }, + "increment": { + "type": "PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixIpv4AddressCounter" + }, + "decrement": { + "type": "PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixIpv4AddressCounter" + }, + } # type: Dict[str, str] + + _REQUIRED = () # type: tuple(str) + + _DEFAULTS = { + "choice": "value", + "value": "0.0.0.0", + "values": ["0.0.0.0"], + } # type: Dict[str, Union(type)] + + VALUE = "value" # type: str + VALUES = "values" # type: str + INCREMENT = "increment" # type: str + DECREMENT = "decrement" # type: str + + _STATUS = {} # type: Dict[str, Union(type)] + + def __init__(self, parent=None, choice=None, value="0.0.0.0", values=["0.0.0.0"]): + super( + PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixIpv4Address, self + ).__init__() + self._parent = parent + self._set_property("value", value) + self._set_property("values", values) + if ( + "choice" in self._DEFAULTS + and choice is None + and self._DEFAULTS["choice"] in self._TYPES + ): + getattr(self, self._DEFAULTS["choice"]) + else: + self._set_property("choice", choice) + + def set(self, value=None, values=None): + for property_name, property_value in locals().items(): + if property_name != "self" and property_value is not None: + self._set_property(property_name, property_value) + + @property + def increment(self): + # type: () -> PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixIpv4AddressCounter + """Factory property that returns an instance of the PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixIpv4AddressCounter class + + ipv4 counter pattern + + Returns: PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixIpv4AddressCounter + """ + return self._get_property( + "increment", + PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixIpv4AddressCounter, + self, + "increment", + ) + + @property + def decrement(self): + # type: () -> PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixIpv4AddressCounter + """Factory property that returns an instance of the PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixIpv4AddressCounter class + + ipv4 counter pattern + + Returns: PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixIpv4AddressCounter + """ + return self._get_property( + "decrement", + PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixIpv4AddressCounter, + self, + "decrement", + ) + + @property + def choice(self): + # type: () -> Union[Literal["decrement"], Literal["increment"], Literal["value"], Literal["values"]] + """choice getter + + TBD + + Returns: Union[Literal["decrement"], Literal["increment"], Literal["value"], Literal["values"]] + """ + return self._get_property("choice") + + @choice.setter + def choice(self, value): + """choice setter + + TBD + + value: Union[Literal["decrement"], Literal["increment"], Literal["value"], Literal["values"]] + """ + self._set_property("choice", value) + + @property + def value(self): + # type: () -> str + """value getter + + TBD + + Returns: str + """ + return self._get_property("value") + + @value.setter + def value(self, value): + """value setter + + TBD + + value: str + """ + self._set_property("value", value, "value") + + @property + def values(self): + # type: () -> List[str] + """values getter + + TBD + + Returns: List[str] + """ + return self._get_property("values") + + @values.setter + def values(self, value): + """values setter + + TBD + + value: List[str] + """ + self._set_property("values", value, "values") + + +class PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixIpv4AddressCounter(OpenApiObject): + __slots__ = "_parent" + + _TYPES = { + "start": { + "type": str, + "format": "ipv4", + }, + "step": { + "type": str, + "format": "ipv4", + }, + "count": { + "type": int, + "format": "uint32", + }, + } # type: Dict[str, str] + + _REQUIRED = () # type: tuple(str) + + _DEFAULTS = { + "start": "0.0.0.0", + "step": "0.0.0.1", + "count": 1, + } # type: Dict[str, Union(type)] + + _STATUS = {} # type: Dict[str, Union(type)] + + def __init__(self, parent=None, start="0.0.0.0", step="0.0.0.1", count=1): + super( + PatternFlowRSVPPathExplicitRouteType1Ipv4PrefixIpv4AddressCounter, self + ).__init__() + self._parent = parent + self._set_property("start", start) + self._set_property("step", step) + self._set_property("count", count) + + def set(self, start=None, step=None, count=None): + for property_name, property_value in locals().items(): + if property_name != "self" and property_value is not None: + self._set_property(property_name, property_value) + + @property + def start(self): + # type: () -> str + """start getter + + TBD + + Returns: str + """ + return self._get_property("start") + + @start.setter + def start(self, value): + """start setter + + TBD + + value: str + """ + self._set_property("start", value) + + @property + def step(self): + # type: () -> str + """step getter + + TBD + + Returns: str + """ + return self._get_property("step") + + @step.setter + def step(self, value): + """step setter + + TBD + + value: str + """ + self._set_property("step", value) + + @property + def count(self): + # type: () -> int + """count getter + + TBD + + Returns: int + """ + return self._get_property("count") + + @count.setter + def count(self, value): + """count setter + + TBD + + value: int + """ + self._set_property("count", value) + + +class FlowRSVPPathExplicitRouteType1FourByteASNumber(OpenApiObject): + __slots__ = "_parent" + + _TYPES = { + "l_bit": {"type": "PatternFlowRSVPPathExplicitRouteType1FourByteASNumberLBit"}, + "length": {"type": "FlowRSVPExplicitRouteLength"}, + "reserved": { + "type": "PatternFlowRSVPPathExplicitRouteType1FourByteASNumberReserved" + }, + "as_number": { + "type": int, + "format": "uint32", + "maximum": 65535, + }, + } # type: Dict[str, str] + + _REQUIRED = () # type: tuple(str) + + _DEFAULTS = { + "as_number": 0, + } # type: Dict[str, Union(type)] + + _STATUS = {} # type: Dict[str, Union(type)] + + def __init__(self, parent=None, as_number=0): + super(FlowRSVPPathExplicitRouteType1FourByteASNumber, self).__init__() + self._parent = parent + self._set_property("as_number", as_number) + + def set(self, as_number=None): + for property_name, property_value in locals().items(): + if property_name != "self" and property_value is not None: + self._set_property(property_name, property_value) + + @property + def l_bit(self): + # type: () -> PatternFlowRSVPPathExplicitRouteType1FourByteASNumberLBit + """l_bit getter + + The bit is an attribute of the subobject.The bit is set if the subobject represents loose hop in the explicit route. If the bit is not set, the subobject represents strict hop in the explicit route.The bit is an attribute of the subobject.The bit is set if the subobject represents loose hop in the explicit route. If the bit is not set, the subobject represents strict hop in the explicit route.The bit is an attribute of the subobject.The bit is set if the subobject represents loose hop in the explicit route. If the bit is not set, the subobject represents strict hop in the explicit route.The bit is an attribute of the subobject.The bit is set if the subobject represents loose hop in the explicit route. If the bit is not set, the subobject represents strict hop in the explicit route. + + Returns: PatternFlowRSVPPathExplicitRouteType1FourByteASNumberLBit + """ + return self._get_property( + "l_bit", PatternFlowRSVPPathExplicitRouteType1FourByteASNumberLBit + ) + + @property + def length(self): + # type: () -> FlowRSVPExplicitRouteLength + """length getter + + The Length contains the total length of the subobject in bytes,including ,Type and Length fields. The Length MUST be atleast 4, and MUST be multiple of 4. + + Returns: FlowRSVPExplicitRouteLength + """ + return self._get_property("length", FlowRSVPExplicitRouteLength) + + @property + def reserved(self): + # type: () -> PatternFlowRSVPPathExplicitRouteType1FourByteASNumberReserved + """reserved getter + + Reserved.Reserved.Reserved.Reserved. + + Returns: PatternFlowRSVPPathExplicitRouteType1FourByteASNumberReserved + """ + return self._get_property( + "reserved", PatternFlowRSVPPathExplicitRouteType1FourByteASNumberReserved + ) + + @property + def as_number(self): + # type: () -> int + """as_number getter + + Autonomous System number to be set in the ERO sub-object that this LSP should traverse through. This field is applicable only if the value of 'type' is set to 'as_number'. Note that as per RFC3209, 4-byte AS encoding is not supported. + + Returns: int + """ + return self._get_property("as_number") + + @as_number.setter + def as_number(self, value): + """as_number setter + + Autonomous System number to be set in the ERO sub-object that this LSP should traverse through. This field is applicable only if the value of 'type' is set to 'as_number'. Note that as per RFC3209, 4-byte AS encoding is not supported. + + value: int + """ + self._set_property("as_number", value) + + +class PatternFlowRSVPPathExplicitRouteType1FourByteASNumberLBit(OpenApiObject): + __slots__ = ("_parent", "_choice") + + _TYPES = { + "choice": { + "type": str, + "enum": [ + "value", + "values", + "increment", + "decrement", + ], + }, + "value": { + "type": int, + "format": "uint32", + "maximum": 1, + }, + "values": { + "type": list, + "itemtype": int, + "itemformat": "uint32", + "maximum": 1, + }, + "increment": { + "type": "PatternFlowRSVPPathExplicitRouteType1FourByteASNumberLBitCounter" + }, + "decrement": { + "type": "PatternFlowRSVPPathExplicitRouteType1FourByteASNumberLBitCounter" + }, + } # type: Dict[str, str] + + _REQUIRED = () # type: tuple(str) + + _DEFAULTS = { + "choice": "value", + "value": 0, + "values": [0], + } # type: Dict[str, Union(type)] + + VALUE = "value" # type: str + VALUES = "values" # type: str + INCREMENT = "increment" # type: str + DECREMENT = "decrement" # type: str + + _STATUS = {} # type: Dict[str, Union(type)] + + def __init__(self, parent=None, choice=None, value=0, values=[0]): + super( + PatternFlowRSVPPathExplicitRouteType1FourByteASNumberLBit, self + ).__init__() + self._parent = parent + self._set_property("value", value) + self._set_property("values", values) + if ( + "choice" in self._DEFAULTS + and choice is None + and self._DEFAULTS["choice"] in self._TYPES + ): + getattr(self, self._DEFAULTS["choice"]) + else: + self._set_property("choice", choice) + + def set(self, value=None, values=None): + for property_name, property_value in locals().items(): + if property_name != "self" and property_value is not None: + self._set_property(property_name, property_value) + + @property + def increment(self): + # type: () -> PatternFlowRSVPPathExplicitRouteType1FourByteASNumberLBitCounter + """Factory property that returns an instance of the PatternFlowRSVPPathExplicitRouteType1FourByteASNumberLBitCounter class + + integer counter pattern + + Returns: PatternFlowRSVPPathExplicitRouteType1FourByteASNumberLBitCounter + """ + return self._get_property( + "increment", + PatternFlowRSVPPathExplicitRouteType1FourByteASNumberLBitCounter, + self, + "increment", + ) + + @property + def decrement(self): + # type: () -> PatternFlowRSVPPathExplicitRouteType1FourByteASNumberLBitCounter + """Factory property that returns an instance of the PatternFlowRSVPPathExplicitRouteType1FourByteASNumberLBitCounter class + + integer counter pattern + + Returns: PatternFlowRSVPPathExplicitRouteType1FourByteASNumberLBitCounter + """ + return self._get_property( + "decrement", + PatternFlowRSVPPathExplicitRouteType1FourByteASNumberLBitCounter, + self, + "decrement", + ) + + @property + def choice(self): + # type: () -> Union[Literal["decrement"], Literal["increment"], Literal["value"], Literal["values"]] + """choice getter + + TBD + + Returns: Union[Literal["decrement"], Literal["increment"], Literal["value"], Literal["values"]] + """ + return self._get_property("choice") + + @choice.setter + def choice(self, value): + """choice setter + + TBD + + value: Union[Literal["decrement"], Literal["increment"], Literal["value"], Literal["values"]] + """ + self._set_property("choice", value) + + @property + def value(self): + # type: () -> int + """value getter + + TBD + + Returns: int + """ + return self._get_property("value") + + @value.setter + def value(self, value): + """value setter + + TBD + + value: int + """ + self._set_property("value", value, "value") + + @property + def values(self): + # type: () -> List[int] + """values getter + + TBD + + Returns: List[int] + """ + return self._get_property("values") + + @values.setter + def values(self, value): + """values setter + + TBD + + value: List[int] + """ + self._set_property("values", value, "values") + + +class PatternFlowRSVPPathExplicitRouteType1FourByteASNumberLBitCounter(OpenApiObject): + __slots__ = "_parent" + + _TYPES = { + "start": { + "type": int, + "format": "uint32", + "maximum": 1, + }, + "step": { + "type": int, + "format": "uint32", + "maximum": 1, + }, + "count": { + "type": int, + "format": "uint32", + "maximum": 1, + }, + } # type: Dict[str, str] + + _REQUIRED = () # type: tuple(str) + + _DEFAULTS = { + "start": 0, + "step": 1, + "count": 1, + } # type: Dict[str, Union(type)] + + _STATUS = {} # type: Dict[str, Union(type)] + + def __init__(self, parent=None, start=0, step=1, count=1): + super( + PatternFlowRSVPPathExplicitRouteType1FourByteASNumberLBitCounter, self + ).__init__() + self._parent = parent + self._set_property("start", start) + self._set_property("step", step) + self._set_property("count", count) + + def set(self, start=None, step=None, count=None): + for property_name, property_value in locals().items(): + if property_name != "self" and property_value is not None: + self._set_property(property_name, property_value) + + @property + def start(self): + # type: () -> int + """start getter + + TBD + + Returns: int + """ + return self._get_property("start") + + @start.setter + def start(self, value): + """start setter + + TBD + + value: int + """ + self._set_property("start", value) + + @property + def step(self): + # type: () -> int + """step getter + + TBD + + Returns: int + """ + return self._get_property("step") + + @step.setter + def step(self, value): + """step setter + + TBD + + value: int + """ + self._set_property("step", value) + + @property + def count(self): + # type: () -> int + """count getter + + TBD + + Returns: int + """ + return self._get_property("count") + + @count.setter + def count(self, value): + """count setter + + TBD + + value: int + """ + self._set_property("count", value) + + +class PatternFlowRSVPPathExplicitRouteType1FourByteASNumberReserved(OpenApiObject): + __slots__ = ("_parent", "_choice") + + _TYPES = { + "choice": { + "type": str, + "enum": [ + "value", + "values", + "increment", + "decrement", + ], + }, + "value": { + "type": int, + "format": "uint32", + "maximum": 255, + }, + "values": { + "type": list, + "itemtype": int, + "itemformat": "uint32", + "maximum": 255, + }, + "increment": { + "type": "PatternFlowRSVPPathExplicitRouteType1FourByteASNumberReservedCounter" + }, + "decrement": { + "type": "PatternFlowRSVPPathExplicitRouteType1FourByteASNumberReservedCounter" + }, + } # type: Dict[str, str] + + _REQUIRED = () # type: tuple(str) + + _DEFAULTS = { + "choice": "value", + "value": 0, + "values": [0], + } # type: Dict[str, Union(type)] + + VALUE = "value" # type: str + VALUES = "values" # type: str + INCREMENT = "increment" # type: str + DECREMENT = "decrement" # type: str + + _STATUS = {} # type: Dict[str, Union(type)] + + def __init__(self, parent=None, choice=None, value=0, values=[0]): + super( + PatternFlowRSVPPathExplicitRouteType1FourByteASNumberReserved, self + ).__init__() + self._parent = parent + self._set_property("value", value) + self._set_property("values", values) + if ( + "choice" in self._DEFAULTS + and choice is None + and self._DEFAULTS["choice"] in self._TYPES + ): + getattr(self, self._DEFAULTS["choice"]) + else: + self._set_property("choice", choice) + + def set(self, value=None, values=None): + for property_name, property_value in locals().items(): + if property_name != "self" and property_value is not None: + self._set_property(property_name, property_value) + + @property + def increment(self): + # type: () -> PatternFlowRSVPPathExplicitRouteType1FourByteASNumberReservedCounter + """Factory property that returns an instance of the PatternFlowRSVPPathExplicitRouteType1FourByteASNumberReservedCounter class + + integer counter pattern + + Returns: PatternFlowRSVPPathExplicitRouteType1FourByteASNumberReservedCounter + """ + return self._get_property( + "increment", + PatternFlowRSVPPathExplicitRouteType1FourByteASNumberReservedCounter, + self, + "increment", + ) + + @property + def decrement(self): + # type: () -> PatternFlowRSVPPathExplicitRouteType1FourByteASNumberReservedCounter + """Factory property that returns an instance of the PatternFlowRSVPPathExplicitRouteType1FourByteASNumberReservedCounter class + + integer counter pattern + + Returns: PatternFlowRSVPPathExplicitRouteType1FourByteASNumberReservedCounter + """ + return self._get_property( + "decrement", + PatternFlowRSVPPathExplicitRouteType1FourByteASNumberReservedCounter, + self, + "decrement", + ) + + @property + def choice(self): + # type: () -> Union[Literal["decrement"], Literal["increment"], Literal["value"], Literal["values"]] + """choice getter + + TBD + + Returns: Union[Literal["decrement"], Literal["increment"], Literal["value"], Literal["values"]] + """ + return self._get_property("choice") + + @choice.setter + def choice(self, value): + """choice setter + + TBD + + value: Union[Literal["decrement"], Literal["increment"], Literal["value"], Literal["values"]] + """ + self._set_property("choice", value) + + @property + def value(self): + # type: () -> int + """value getter + + TBD + + Returns: int + """ + return self._get_property("value") + + @value.setter + def value(self, value): + """value setter + + TBD + + value: int + """ + self._set_property("value", value, "value") + + @property + def values(self): + # type: () -> List[int] + """values getter + + TBD + + Returns: List[int] + """ + return self._get_property("values") + + @values.setter + def values(self, value): + """values setter + + TBD + + value: List[int] + """ + self._set_property("values", value, "values") + + +class PatternFlowRSVPPathExplicitRouteType1FourByteASNumberReservedCounter( + OpenApiObject +): + __slots__ = "_parent" + + _TYPES = { + "start": { + "type": int, + "format": "uint32", + "maximum": 255, + }, + "step": { + "type": int, + "format": "uint32", + "maximum": 255, + }, + "count": { + "type": int, + "format": "uint32", + "maximum": 255, + }, + } # type: Dict[str, str] + + _REQUIRED = () # type: tuple(str) + + _DEFAULTS = { + "start": 0, + "step": 1, + "count": 1, + } # type: Dict[str, Union(type)] + + _STATUS = {} # type: Dict[str, Union(type)] + + def __init__(self, parent=None, start=0, step=1, count=1): + super( + PatternFlowRSVPPathExplicitRouteType1FourByteASNumberReservedCounter, self + ).__init__() + self._parent = parent + self._set_property("start", start) + self._set_property("step", step) + self._set_property("count", count) + + def set(self, start=None, step=None, count=None): + for property_name, property_value in locals().items(): + if property_name != "self" and property_value is not None: + self._set_property(property_name, property_value) + + @property + def start(self): + # type: () -> int + """start getter + + TBD + + Returns: int + """ + return self._get_property("start") + + @start.setter + def start(self, value): + """start setter + + TBD + + value: int + """ + self._set_property("start", value) + + @property + def step(self): + # type: () -> int + """step getter + + TBD + + Returns: int + """ + return self._get_property("step") + + @step.setter + def step(self, value): + """step setter + + TBD + + value: int + """ + self._set_property("step", value) + + @property + def count(self): + # type: () -> int + """count getter + + TBD + + Returns: int + """ + return self._get_property("count") + + @count.setter + def count(self, value): + """count setter + + TBD + + value: int + """ + self._set_property("count", value) + + +class FlowRSVPType1ExplicitRouteSubobjectsIter(OpenApiIter): + __slots__ = ("_parent", "_choice") + + _GETITEM_RETURNS_CHOICE_OBJECT = False + + def __init__(self, parent=None, choice=None): + super(FlowRSVPType1ExplicitRouteSubobjectsIter, self).__init__() + self._parent = parent + self._choice = choice + + def __getitem__(self, key): + # type: (str) -> Union[FlowRSVPType1ExplicitRouteSubobjects] + return self._getitem(key) + + def __iter__(self): + # type: () -> FlowRSVPType1ExplicitRouteSubobjectsIter + return self._iter() + + def __next__(self): + # type: () -> FlowRSVPType1ExplicitRouteSubobjects + return self._next() + + def next(self): + # type: () -> FlowRSVPType1ExplicitRouteSubobjects + return self._next() + + def _instanceOf(self, item): + if not isinstance(item, FlowRSVPType1ExplicitRouteSubobjects): + raise Exception( + "Item is not an instance of FlowRSVPType1ExplicitRouteSubobjects" + ) + + def type1explicitroutesubobjects(self): + # type: () -> FlowRSVPType1ExplicitRouteSubobjectsIter + """Factory method that creates an instance of the FlowRSVPType1ExplicitRouteSubobjects class + + Type is specific to subobject. + + Returns: FlowRSVPType1ExplicitRouteSubobjectsIter + """ + item = FlowRSVPType1ExplicitRouteSubobjects(parent=self._parent) + self._add(item) + return self + + def add(self): + # type: () -> FlowRSVPType1ExplicitRouteSubobjects + """Add method that creates and returns an instance of the FlowRSVPType1ExplicitRouteSubobjects class + + Type is specific to subobject. + + Returns: FlowRSVPType1ExplicitRouteSubobjects + """ + item = FlowRSVPType1ExplicitRouteSubobjects(parent=self._parent) + self._add(item) + return item + + +class FlowRSVPPathObjectsClassLabelRequest(OpenApiObject): + __slots__ = "_parent" + + _TYPES = { + "c_type": {"type": "FlowRSVPPathObjectsLabelRequestCType"}, + } # type: Dict[str, str] + + _REQUIRED = () # type: tuple(str) + + _DEFAULTS = {} # type: Dict[str, Union(type)] + + _STATUS = {} # type: Dict[str, Union(type)] + + def __init__(self, parent=None): + super(FlowRSVPPathObjectsClassLabelRequest, self).__init__() + self._parent = parent + + @property + def c_type(self): + # type: () -> FlowRSVPPathObjectsLabelRequestCType + """c_type getter + + Object for LABEL_REQUEST class. Currently supported c-type is Without Label Range (1).Object for LABEL_REQUEST class. Currently supported c-type is Without Label Range (1).Object for LABEL_REQUEST class. Currently supported c-type is Without Label Range (1).Object for LABEL_REQUEST class. Currently supported c-type is Without Label Range (1). + + Returns: FlowRSVPPathObjectsLabelRequestCType + """ + return self._get_property("c_type", FlowRSVPPathObjectsLabelRequestCType) + + +class FlowRSVPPathObjectsLabelRequestCType(OpenApiObject): + __slots__ = ("_parent", "_choice") + + _TYPES = { + "choice": { + "type": str, + "enum": [ + "without_label_range", + ], + }, + "without_label_range": {"type": "FlowRSVPPathLabelRequestWithoutLabelRange"}, + } # type: Dict[str, str] + + _REQUIRED = () # type: tuple(str) + + _DEFAULTS = { + "choice": "without_label_range", + } # type: Dict[str, Union(type)] + + WITHOUT_LABEL_RANGE = "without_label_range" # type: str + + _STATUS = {} # type: Dict[str, Union(type)] + + def __init__(self, parent=None, choice=None): + super(FlowRSVPPathObjectsLabelRequestCType, self).__init__() + self._parent = parent + if ( + "choice" in self._DEFAULTS + and choice is None + and self._DEFAULTS["choice"] in self._TYPES + ): + getattr(self, self._DEFAULTS["choice"]) + else: + self._set_property("choice", choice) + + @property + def without_label_range(self): + # type: () -> FlowRSVPPathLabelRequestWithoutLabelRange + """Factory property that returns an instance of the FlowRSVPPathLabelRequestWithoutLabelRange class + + Class LABEL_REQUEST, Without Label Range C-Type 1 + + Returns: FlowRSVPPathLabelRequestWithoutLabelRange + """ + return self._get_property( + "without_label_range", + FlowRSVPPathLabelRequestWithoutLabelRange, + self, + "without_label_range", + ) + + @property + def choice(self): + # type: () -> Union[Literal["without_label_range"]] + """choice getter + + TBD + + Returns: Union[Literal["without_label_range"]] + """ + return self._get_property("choice") + + @choice.setter + def choice(self, value): + """choice setter + + TBD + + value: Union[Literal["without_label_range"]] + """ + self._set_property("choice", value) + + +class FlowRSVPPathLabelRequestWithoutLabelRange(OpenApiObject): + __slots__ = "_parent" + + _TYPES = { + "reserved": { + "type": "PatternFlowRSVPPathLabelRequestWithoutLabelRangeReserved" + }, + "l3pid": {"type": "PatternFlowRSVPPathLabelRequestWithoutLabelRangeL3pid"}, + } # type: Dict[str, str] + + _REQUIRED = () # type: tuple(str) + + _DEFAULTS = {} # type: Dict[str, Union(type)] + + _STATUS = {} # type: Dict[str, Union(type)] + + def __init__(self, parent=None): + super(FlowRSVPPathLabelRequestWithoutLabelRange, self).__init__() + self._parent = parent + + @property + def reserved(self): + # type: () -> PatternFlowRSVPPathLabelRequestWithoutLabelRangeReserved + """reserved getter + + This field is reserved. It MUST be set to zero on transmission and MUST be ignored on receipt. This field is reserved. It MUST be set to zero on transmission and MUST be ignored on receipt. This field is reserved. It MUST be set to zero on transmission and MUST be ignored on receipt. This field is reserved. It MUST be set to zero on transmission and MUST be ignored on receipt. + + Returns: PatternFlowRSVPPathLabelRequestWithoutLabelRangeReserved + """ + return self._get_property( + "reserved", PatternFlowRSVPPathLabelRequestWithoutLabelRangeReserved + ) + + @property + def l3pid(self): + # type: () -> PatternFlowRSVPPathLabelRequestWithoutLabelRangeL3pid + """l3pid getter + + An identifier of the layer protocol using this path. Standard Ethertype values are used. An identifier of the layer protocol using this path. Standard Ethertype values are used. An identifier of the layer protocol using this path. Standard Ethertype values are used. An identifier of the layer protocol using this path. Standard Ethertype values are used. + + Returns: PatternFlowRSVPPathLabelRequestWithoutLabelRangeL3pid + """ + return self._get_property( + "l3pid", PatternFlowRSVPPathLabelRequestWithoutLabelRangeL3pid + ) + + +class PatternFlowRSVPPathLabelRequestWithoutLabelRangeReserved(OpenApiObject): + __slots__ = ("_parent", "_choice") + + _TYPES = { + "choice": { + "type": str, + "enum": [ + "value", + "values", + "increment", + "decrement", + ], + }, + "value": { + "type": int, + "format": "uint32", + "maximum": 65535, + }, + "values": { + "type": list, + "itemtype": int, + "itemformat": "uint32", + "maximum": 65535, + }, + "increment": { + "type": "PatternFlowRSVPPathLabelRequestWithoutLabelRangeReservedCounter" + }, + "decrement": { + "type": "PatternFlowRSVPPathLabelRequestWithoutLabelRangeReservedCounter" + }, + } # type: Dict[str, str] + + _REQUIRED = () # type: tuple(str) + + _DEFAULTS = { + "choice": "value", + "value": 0, + "values": [0], + } # type: Dict[str, Union(type)] + + VALUE = "value" # type: str + VALUES = "values" # type: str + INCREMENT = "increment" # type: str + DECREMENT = "decrement" # type: str + + _STATUS = {} # type: Dict[str, Union(type)] + + def __init__(self, parent=None, choice=None, value=0, values=[0]): + super(PatternFlowRSVPPathLabelRequestWithoutLabelRangeReserved, self).__init__() + self._parent = parent + self._set_property("value", value) + self._set_property("values", values) + if ( + "choice" in self._DEFAULTS + and choice is None + and self._DEFAULTS["choice"] in self._TYPES + ): + getattr(self, self._DEFAULTS["choice"]) + else: + self._set_property("choice", choice) + + def set(self, value=None, values=None): + for property_name, property_value in locals().items(): + if property_name != "self" and property_value is not None: + self._set_property(property_name, property_value) + + @property + def increment(self): + # type: () -> PatternFlowRSVPPathLabelRequestWithoutLabelRangeReservedCounter + """Factory property that returns an instance of the PatternFlowRSVPPathLabelRequestWithoutLabelRangeReservedCounter class + + integer counter pattern + + Returns: PatternFlowRSVPPathLabelRequestWithoutLabelRangeReservedCounter + """ + return self._get_property( + "increment", + PatternFlowRSVPPathLabelRequestWithoutLabelRangeReservedCounter, + self, + "increment", + ) + + @property + def decrement(self): + # type: () -> PatternFlowRSVPPathLabelRequestWithoutLabelRangeReservedCounter + """Factory property that returns an instance of the PatternFlowRSVPPathLabelRequestWithoutLabelRangeReservedCounter class + + integer counter pattern + + Returns: PatternFlowRSVPPathLabelRequestWithoutLabelRangeReservedCounter + """ + return self._get_property( + "decrement", + PatternFlowRSVPPathLabelRequestWithoutLabelRangeReservedCounter, + self, + "decrement", + ) + + @property + def choice(self): + # type: () -> Union[Literal["decrement"], Literal["increment"], Literal["value"], Literal["values"]] + """choice getter + + TBD + + Returns: Union[Literal["decrement"], Literal["increment"], Literal["value"], Literal["values"]] + """ + return self._get_property("choice") + + @choice.setter + def choice(self, value): + """choice setter + + TBD + + value: Union[Literal["decrement"], Literal["increment"], Literal["value"], Literal["values"]] + """ + self._set_property("choice", value) + + @property + def value(self): + # type: () -> int + """value getter + + TBD + + Returns: int + """ + return self._get_property("value") + + @value.setter + def value(self, value): + """value setter + + TBD + + value: int + """ + self._set_property("value", value, "value") + + @property + def values(self): + # type: () -> List[int] + """values getter + + TBD + + Returns: List[int] + """ + return self._get_property("values") + + @values.setter + def values(self, value): + """values setter + + TBD + + value: List[int] + """ + self._set_property("values", value, "values") + + +class PatternFlowRSVPPathLabelRequestWithoutLabelRangeReservedCounter(OpenApiObject): + __slots__ = "_parent" + + _TYPES = { + "start": { + "type": int, + "format": "uint32", + "maximum": 65535, + }, + "step": { + "type": int, + "format": "uint32", + "maximum": 65535, + }, + "count": { + "type": int, + "format": "uint32", + "maximum": 65535, + }, + } # type: Dict[str, str] + + _REQUIRED = () # type: tuple(str) + + _DEFAULTS = { + "start": 0, + "step": 1, + "count": 1, + } # type: Dict[str, Union(type)] + + _STATUS = {} # type: Dict[str, Union(type)] + + def __init__(self, parent=None, start=0, step=1, count=1): + super( + PatternFlowRSVPPathLabelRequestWithoutLabelRangeReservedCounter, self + ).__init__() + self._parent = parent + self._set_property("start", start) + self._set_property("step", step) + self._set_property("count", count) + + def set(self, start=None, step=None, count=None): + for property_name, property_value in locals().items(): + if property_name != "self" and property_value is not None: + self._set_property(property_name, property_value) + + @property + def start(self): + # type: () -> int + """start getter + + TBD + + Returns: int + """ + return self._get_property("start") + + @start.setter + def start(self, value): + """start setter + + TBD + + value: int + """ + self._set_property("start", value) + + @property + def step(self): + # type: () -> int + """step getter + + TBD + + Returns: int + """ + return self._get_property("step") + + @step.setter + def step(self, value): + """step setter + + TBD + + value: int + """ + self._set_property("step", value) + + @property + def count(self): + # type: () -> int + """count getter + + TBD + + Returns: int + """ + return self._get_property("count") + + @count.setter + def count(self, value): + """count setter + + TBD + + value: int + """ + self._set_property("count", value) + + +class PatternFlowRSVPPathLabelRequestWithoutLabelRangeL3pid(OpenApiObject): + __slots__ = ("_parent", "_choice") + + _TYPES = { + "choice": { + "type": str, + "enum": [ + "value", + "values", + "increment", + "decrement", + ], + }, + "value": { + "type": int, + "format": "uint32", + "maximum": 65535, + }, + "values": { + "type": list, + "itemtype": int, + "itemformat": "uint32", + "maximum": 65535, + }, + "increment": { + "type": "PatternFlowRSVPPathLabelRequestWithoutLabelRangeL3pidCounter" + }, + "decrement": { + "type": "PatternFlowRSVPPathLabelRequestWithoutLabelRangeL3pidCounter" + }, + } # type: Dict[str, str] + + _REQUIRED = () # type: tuple(str) + + _DEFAULTS = { + "choice": "value", + "value": 0, + "values": [0], + } # type: Dict[str, Union(type)] + + VALUE = "value" # type: str + VALUES = "values" # type: str + INCREMENT = "increment" # type: str + DECREMENT = "decrement" # type: str + + _STATUS = {} # type: Dict[str, Union(type)] + + def __init__(self, parent=None, choice=None, value=0, values=[0]): + super(PatternFlowRSVPPathLabelRequestWithoutLabelRangeL3pid, self).__init__() + self._parent = parent + self._set_property("value", value) + self._set_property("values", values) + if ( + "choice" in self._DEFAULTS + and choice is None + and self._DEFAULTS["choice"] in self._TYPES + ): + getattr(self, self._DEFAULTS["choice"]) + else: + self._set_property("choice", choice) + + def set(self, value=None, values=None): + for property_name, property_value in locals().items(): + if property_name != "self" and property_value is not None: + self._set_property(property_name, property_value) + + @property + def increment(self): + # type: () -> PatternFlowRSVPPathLabelRequestWithoutLabelRangeL3pidCounter + """Factory property that returns an instance of the PatternFlowRSVPPathLabelRequestWithoutLabelRangeL3pidCounter class + + integer counter pattern + + Returns: PatternFlowRSVPPathLabelRequestWithoutLabelRangeL3pidCounter + """ + return self._get_property( + "increment", + PatternFlowRSVPPathLabelRequestWithoutLabelRangeL3pidCounter, + self, + "increment", + ) + + @property + def decrement(self): + # type: () -> PatternFlowRSVPPathLabelRequestWithoutLabelRangeL3pidCounter + """Factory property that returns an instance of the PatternFlowRSVPPathLabelRequestWithoutLabelRangeL3pidCounter class + + integer counter pattern + + Returns: PatternFlowRSVPPathLabelRequestWithoutLabelRangeL3pidCounter + """ + return self._get_property( + "decrement", + PatternFlowRSVPPathLabelRequestWithoutLabelRangeL3pidCounter, + self, + "decrement", + ) + + @property + def choice(self): + # type: () -> Union[Literal["decrement"], Literal["increment"], Literal["value"], Literal["values"]] + """choice getter + + TBD + + Returns: Union[Literal["decrement"], Literal["increment"], Literal["value"], Literal["values"]] + """ + return self._get_property("choice") + + @choice.setter + def choice(self, value): + """choice setter + + TBD + + value: Union[Literal["decrement"], Literal["increment"], Literal["value"], Literal["values"]] + """ + self._set_property("choice", value) + + @property + def value(self): + # type: () -> int + """value getter + + TBD + + Returns: int + """ + return self._get_property("value") + + @value.setter + def value(self, value): + """value setter + + TBD + + value: int + """ + self._set_property("value", value, "value") + + @property + def values(self): + # type: () -> List[int] + """values getter + + TBD + + Returns: List[int] + """ + return self._get_property("values") + + @values.setter + def values(self, value): + """values setter + + TBD + + value: List[int] + """ + self._set_property("values", value, "values") + + +class PatternFlowRSVPPathLabelRequestWithoutLabelRangeL3pidCounter(OpenApiObject): + __slots__ = "_parent" + + _TYPES = { + "start": { + "type": int, + "format": "uint32", + "maximum": 65535, + }, + "step": { + "type": int, + "format": "uint32", + "maximum": 65535, + }, + "count": { + "type": int, + "format": "uint32", + "maximum": 65535, + }, + } # type: Dict[str, str] + + _REQUIRED = () # type: tuple(str) + + _DEFAULTS = { + "start": 0, + "step": 1, + "count": 1, + } # type: Dict[str, Union(type)] + + _STATUS = {} # type: Dict[str, Union(type)] + + def __init__(self, parent=None, start=0, step=1, count=1): + super( + PatternFlowRSVPPathLabelRequestWithoutLabelRangeL3pidCounter, self + ).__init__() + self._parent = parent + self._set_property("start", start) + self._set_property("step", step) + self._set_property("count", count) + + def set(self, start=None, step=None, count=None): + for property_name, property_value in locals().items(): + if property_name != "self" and property_value is not None: + self._set_property(property_name, property_value) + + @property + def start(self): + # type: () -> int + """start getter + + TBD + + Returns: int + """ + return self._get_property("start") + + @start.setter + def start(self, value): + """start setter + + TBD + + value: int + """ + self._set_property("start", value) + + @property + def step(self): + # type: () -> int + """step getter + + TBD + + Returns: int + """ + return self._get_property("step") + + @step.setter + def step(self, value): + """step setter + + TBD + + value: int + """ + self._set_property("step", value) + + @property + def count(self): + # type: () -> int + """count getter + + TBD + + Returns: int + """ + return self._get_property("count") + + @count.setter + def count(self, value): + """count setter + + TBD + + value: int + """ + self._set_property("count", value) + + +class FlowRSVPPathObjectsClassSessionAttribute(OpenApiObject): + __slots__ = "_parent" + + _TYPES = { + "c_type": {"type": "FlowRSVPPathObjectsSessionAttributeCType"}, + } # type: Dict[str, str] + + _REQUIRED = () # type: tuple(str) + + _DEFAULTS = {} # type: Dict[str, Union(type)] + + _STATUS = {} # type: Dict[str, Union(type)] + + def __init__(self, parent=None): + super(FlowRSVPPathObjectsClassSessionAttribute, self).__init__() + self._parent = parent + + @property + def c_type(self): + # type: () -> FlowRSVPPathObjectsSessionAttributeCType + """c_type getter + + Object for SESSION_ATTRIBUTE class. Currently supported c-type is LSP_Tunnel (1) and LSP_Tunnel (7).Object for SESSION_ATTRIBUTE class. Currently supported c-type is LSP_Tunnel (1) and LSP_Tunnel (7).Object for SESSION_ATTRIBUTE class. Currently supported c-type is LSP_Tunnel (1) and LSP_Tunnel (7).Object for SESSION_ATTRIBUTE class. Currently supported c-type is LSP_Tunnel (1) and LSP_Tunnel (7). + + Returns: FlowRSVPPathObjectsSessionAttributeCType + """ + return self._get_property("c_type", FlowRSVPPathObjectsSessionAttributeCType) + + +class FlowRSVPPathObjectsSessionAttributeCType(OpenApiObject): + __slots__ = ("_parent", "_choice") + + _TYPES = { + "choice": { + "type": str, + "enum": [ + "lsp_tunnel", + "lsp_tunnel_ra", + ], + }, + "lsp_tunnel": {"type": "FlowRSVPPathSessionAttributeLspTunnel"}, + "lsp_tunnel_ra": {"type": "FlowRSVPPathSessionAttributeLspTunnelRa"}, + } # type: Dict[str, str] + + _REQUIRED = () # type: tuple(str) + + _DEFAULTS = { + "choice": "lsp_tunnel", + } # type: Dict[str, Union(type)] + + LSP_TUNNEL = "lsp_tunnel" # type: str + LSP_TUNNEL_RA = "lsp_tunnel_ra" # type: str + + _STATUS = {} # type: Dict[str, Union(type)] + + def __init__(self, parent=None, choice=None): + super(FlowRSVPPathObjectsSessionAttributeCType, self).__init__() + self._parent = parent + if ( + "choice" in self._DEFAULTS + and choice is None + and self._DEFAULTS["choice"] in self._TYPES + ): + getattr(self, self._DEFAULTS["choice"]) + else: + self._set_property("choice", choice) + + @property + def lsp_tunnel(self): + # type: () -> FlowRSVPPathSessionAttributeLspTunnel + """Factory property that returns an instance of the FlowRSVPPathSessionAttributeLspTunnel class + + SESSION_ATTRIBUTE class 207, LSP_TUNNEL_RA C-Type 7, resource affinity information. + + Returns: FlowRSVPPathSessionAttributeLspTunnel + """ + return self._get_property( + "lsp_tunnel", FlowRSVPPathSessionAttributeLspTunnel, self, "lsp_tunnel" + ) + + @property + def lsp_tunnel_ra(self): + # type: () -> FlowRSVPPathSessionAttributeLspTunnelRa + """Factory property that returns an instance of the FlowRSVPPathSessionAttributeLspTunnelRa class + + SESSION_ATTRIBUTE class 207, LSP_TUNNEL_RA C-Type 1, it carries resource affinity information. + + Returns: FlowRSVPPathSessionAttributeLspTunnelRa + """ + return self._get_property( + "lsp_tunnel_ra", + FlowRSVPPathSessionAttributeLspTunnelRa, + self, + "lsp_tunnel_ra", + ) + + @property + def choice(self): + # type: () -> Union[Literal["lsp_tunnel"], Literal["lsp_tunnel_ra"]] + """choice getter + + TBD + + Returns: Union[Literal["lsp_tunnel"], Literal["lsp_tunnel_ra"]] + """ + return self._get_property("choice") + + @choice.setter + def choice(self, value): + """choice setter + + TBD + + value: Union[Literal["lsp_tunnel"], Literal["lsp_tunnel_ra"]] + """ + self._set_property("choice", value) + + +class FlowRSVPPathSessionAttributeLspTunnel(OpenApiObject): + __slots__ = "_parent" + + _TYPES = { + "setup_priority": { + "type": int, + "format": "uint32", + "maximum": 7, + }, + "holding_priority": { + "type": int, + "format": "uint32", + "maximum": 7, + }, + "flags": {"type": "FlowRSVPLspTunnelFlag"}, + "name_length": { + "type": str, + "format": "hex", + "maxLength": 2, + }, + "session_name": { + "type": str, + "minLength": 0, + "maxLength": 254, + }, + } # type: Dict[str, str] + + _REQUIRED = () # type: tuple(str) + + _DEFAULTS = { + "setup_priority": 7, + "holding_priority": 7, + "name_length": "0", + } # type: Dict[str, Union(type)] + + _STATUS = {} # type: Dict[str, Union(type)] + + def __init__( + self, + parent=None, + setup_priority=7, + holding_priority=7, + name_length="0", + session_name=None, + ): + super(FlowRSVPPathSessionAttributeLspTunnel, self).__init__() + self._parent = parent + self._set_property("setup_priority", setup_priority) + self._set_property("holding_priority", holding_priority) + self._set_property("name_length", name_length) + self._set_property("session_name", session_name) + + def set( + self, + setup_priority=None, + holding_priority=None, + name_length=None, + session_name=None, + ): + for property_name, property_value in locals().items(): + if property_name != "self" and property_value is not None: + self._set_property(property_name, property_value) + + @property + def setup_priority(self): + # type: () -> int + """setup_priority getter + + The priority of the session with respect to taking resources,in the range of to 7. The value is the highest priority. The Setup Priority is used in deciding whether this session can preempt another session. + + Returns: int + """ + return self._get_property("setup_priority") + + @setup_priority.setter + def setup_priority(self, value): + """setup_priority setter + + The priority of the session with respect to taking resources,in the range of to 7. The value is the highest priority. The Setup Priority is used in deciding whether this session can preempt another session. + + value: int + """ + self._set_property("setup_priority", value) + + @property + def holding_priority(self): + # type: () -> int + """holding_priority getter + + The priority of the session with respect to holding resources,in the range of to 7. The value is the highest priority. The Setup Priority is used in deciding whether this session can preempt another session. + + Returns: int + """ + return self._get_property("holding_priority") + + @holding_priority.setter + def holding_priority(self, value): + """holding_priority setter + + The priority of the session with respect to holding resources,in the range of to 7. The value is the highest priority. The Setup Priority is used in deciding whether this session can preempt another session. + + value: int + """ + self._set_property("holding_priority", value) + + @property + def flags(self): + # type: () -> FlowRSVPLspTunnelFlag + """flags getter + + 0x01 Local protection desired, 0x02 Label recording desired, 0x04 SE Style desired + + Returns: FlowRSVPLspTunnelFlag + """ + return self._get_property("flags", FlowRSVPLspTunnelFlag) + + @property + def name_length(self): + # type: () -> str + """name_length getter + + The length of the display string before padding, in bytes. + + Returns: str + """ + return self._get_property("name_length") + + @name_length.setter + def name_length(self, value): + """name_length setter + + The length of the display string before padding, in bytes. + + value: str + """ + self._set_property("name_length", value) + + @property + def session_name(self): + # type: () -> str + """session_name getter + + A null padded string of characters. + + Returns: str + """ + return self._get_property("session_name") + + @session_name.setter + def session_name(self, value): + """session_name setter + + A null padded string of characters. + + value: str + """ + self._set_property("session_name", value) + + +class FlowRSVPLspTunnelFlag(OpenApiObject): + __slots__ = ("_parent", "_choice") + + _TYPES = { + "choice": { + "type": str, + "enum": [ + "local_protection_desired", + "label_recording_desired", + "se_style_desired", + ], + }, + } # type: Dict[str, str] + + _REQUIRED = () # type: tuple(str) + + _DEFAULTS = { + "choice": "local_protection_desired", + } # type: Dict[str, Union(type)] + + LOCAL_PROTECTION_DESIRED = "local_protection_desired" # type: str + LABEL_RECORDING_DESIRED = "label_recording_desired" # type: str + SE_STYLE_DESIRED = "se_style_desired" # type: str + + _STATUS = {} # type: Dict[str, Union(type)] + + def __init__(self, parent=None, choice=None): + super(FlowRSVPLspTunnelFlag, self).__init__() + self._parent = parent + if ( + "choice" in self._DEFAULTS + and choice is None + and self._DEFAULTS["choice"] in self._TYPES + ): + getattr(self, self._DEFAULTS["choice"]) + else: + self._set_property("choice", choice) + + @property + def choice(self): + # type: () -> Union[Literal["label_recording_desired"], Literal["local_protection_desired"], Literal["se_style_desired"]] + """choice getter + + TBD + + Returns: Union[Literal["label_recording_desired"], Literal["local_protection_desired"], Literal["se_style_desired"]] + """ + return self._get_property("choice") + + @choice.setter + def choice(self, value): + """choice setter + + TBD + + value: Union[Literal["label_recording_desired"], Literal["local_protection_desired"], Literal["se_style_desired"]] + """ + self._set_property("choice", value) + + +class FlowRSVPPathSessionAttributeLspTunnelRa(OpenApiObject): + __slots__ = "_parent" + + _TYPES = { + "exclude_any": { + "type": str, + "format": "hex", + "minLength": 0, + "maxLength": 8, + }, + "include_any": { + "type": str, + "format": "hex", + "minLength": 0, + "maxLength": 8, + }, + "include_all": { + "type": str, + "format": "hex", + "minLength": 0, + "maxLength": 8, + }, + "setup_priority": { + "type": int, + "format": "uint32", + "maximum": 7, + }, + "holding_priority": { + "type": int, + "format": "uint32", + "maximum": 7, + }, + "flags": {"type": "FlowRSVPLspTunnelFlag"}, + "name_length": { + "type": str, + "format": "hex", + "maxLength": 2, + }, + "session_name": { + "type": str, + "minLength": 0, + "maxLength": 254, + }, + } # type: Dict[str, str] + + _REQUIRED = () # type: tuple(str) + + _DEFAULTS = { + "exclude_any": "0", + "include_any": "0", + "include_all": "0", + "setup_priority": 7, + "holding_priority": 7, + "name_length": "0", + } # type: Dict[str, Union(type)] + + _STATUS = {} # type: Dict[str, Union(type)] + + def __init__( + self, + parent=None, + exclude_any="0", + include_any="0", + include_all="0", + setup_priority=7, + holding_priority=7, + name_length="0", + session_name=None, + ): + super(FlowRSVPPathSessionAttributeLspTunnelRa, self).__init__() + self._parent = parent + self._set_property("exclude_any", exclude_any) + self._set_property("include_any", include_any) + self._set_property("include_all", include_all) + self._set_property("setup_priority", setup_priority) + self._set_property("holding_priority", holding_priority) + self._set_property("name_length", name_length) + self._set_property("session_name", session_name) + + def set( + self, + exclude_any=None, + include_any=None, + include_all=None, + setup_priority=None, + holding_priority=None, + name_length=None, + session_name=None, + ): + for property_name, property_value in locals().items(): + if property_name != "self" and property_value is not None: + self._set_property(property_name, property_value) + + @property + def exclude_any(self): + # type: () -> str + """exclude_any getter + + A 32-bit vector representing set of attribute filters associated with tunnel any of which renders link unacceptable. null set (all bits set to zero) doesn't render the link unacceptable. The most significant byte in the hex-string is the farthest to the left in the byte sequence. Leading zero bytes in the configured value may be omitted for brevity. + + Returns: str + """ + return self._get_property("exclude_any") + + @exclude_any.setter + def exclude_any(self, value): + """exclude_any setter + + A 32-bit vector representing set of attribute filters associated with tunnel any of which renders link unacceptable. null set (all bits set to zero) doesn't render the link unacceptable. The most significant byte in the hex-string is the farthest to the left in the byte sequence. Leading zero bytes in the configured value may be omitted for brevity. + + value: str + """ + self._set_property("exclude_any", value) + + @property + def include_any(self): + # type: () -> str + """include_any getter + + A 32-bit vector representing set of attribute filters associated with tunnel any of which renders link acceptable. null set (all bits set to zero) automatically passes. The most significant byte in the hex-string is the farthest to the left in the byte sequence. Leading zero bytes in the configured value may be omitted for brevity. + + Returns: str + """ + return self._get_property("include_any") + + @include_any.setter + def include_any(self, value): + """include_any setter + + A 32-bit vector representing set of attribute filters associated with tunnel any of which renders link acceptable. null set (all bits set to zero) automatically passes. The most significant byte in the hex-string is the farthest to the left in the byte sequence. Leading zero bytes in the configured value may be omitted for brevity. + + value: str + """ + self._set_property("include_any", value) + + @property + def include_all(self): + # type: () -> str + """include_all getter + + A 32-bit vector representing set of attribute filters associated with tunnel all of which must be present for link to be acceptable. null set (all bits set to zero) automatically passes. The most significant byte in the hex-string is the farthest to the left in the byte sequence. Leading zero bytes in the configured value may be omitted for brevity. + + Returns: str + """ + return self._get_property("include_all") + + @include_all.setter + def include_all(self, value): + """include_all setter + + A 32-bit vector representing set of attribute filters associated with tunnel all of which must be present for link to be acceptable. null set (all bits set to zero) automatically passes. The most significant byte in the hex-string is the farthest to the left in the byte sequence. Leading zero bytes in the configured value may be omitted for brevity. + + value: str + """ + self._set_property("include_all", value) + + @property + def setup_priority(self): + # type: () -> int + """setup_priority getter + + The priority of the session with respect to taking resources,in the range of to 7. The value is the highest priority. The Setup Priority is used in deciding whether this session can preempt another session. + + Returns: int + """ + return self._get_property("setup_priority") + + @setup_priority.setter + def setup_priority(self, value): + """setup_priority setter + + The priority of the session with respect to taking resources,in the range of to 7. The value is the highest priority. The Setup Priority is used in deciding whether this session can preempt another session. + + value: int + """ + self._set_property("setup_priority", value) + + @property + def holding_priority(self): + # type: () -> int + """holding_priority getter + + The priority of the session with respect to holding resources,in the range of to 7. The value is the highest priority. The Setup Priority is used in deciding whether this session can preempt another session. + + Returns: int + """ + return self._get_property("holding_priority") + + @holding_priority.setter + def holding_priority(self, value): + """holding_priority setter + + The priority of the session with respect to holding resources,in the range of to 7. The value is the highest priority. The Setup Priority is used in deciding whether this session can preempt another session. + + value: int + """ + self._set_property("holding_priority", value) + + @property + def flags(self): + # type: () -> FlowRSVPLspTunnelFlag + """flags getter + + 0x01 Local protection desired, 0x02 Label recording desired, 0x04 SE Style desired + + Returns: FlowRSVPLspTunnelFlag + """ + return self._get_property("flags", FlowRSVPLspTunnelFlag) + + @property + def name_length(self): + # type: () -> str + """name_length getter + + The length of the display string before padding, in bytes. + + Returns: str + """ + return self._get_property("name_length") + + @name_length.setter + def name_length(self, value): + """name_length setter + + The length of the display string before padding, in bytes. + + value: str + """ + self._set_property("name_length", value) + + @property + def session_name(self): + # type: () -> str + """session_name getter + + A null padded string of characters. + + Returns: str + """ + return self._get_property("session_name") + + @session_name.setter + def session_name(self, value): + """session_name setter + + A null padded string of characters. + + value: str + """ + self._set_property("session_name", value) + + +class FlowRSVPPathObjectsClassSenderTemplate(OpenApiObject): + __slots__ = "_parent" + + _TYPES = { + "c_type": {"type": "FlowRSVPPathObjectsSenderTemplateCType"}, + } # type: Dict[str, str] + + _REQUIRED = () # type: tuple(str) + + _DEFAULTS = {} # type: Dict[str, Union(type)] + + _STATUS = {} # type: Dict[str, Union(type)] + + def __init__(self, parent=None): + super(FlowRSVPPathObjectsClassSenderTemplate, self).__init__() + self._parent = parent + + @property + def c_type(self): + # type: () -> FlowRSVPPathObjectsSenderTemplateCType + """c_type getter + + Object for SENDER_TEMPLATE class. Currently supported c-type is LSP Tunnel IPv4 (7).Object for SENDER_TEMPLATE class. Currently supported c-type is LSP Tunnel IPv4 (7).Object for SENDER_TEMPLATE class. Currently supported c-type is LSP Tunnel IPv4 (7).Object for SENDER_TEMPLATE class. Currently supported c-type is LSP Tunnel IPv4 (7). + + Returns: FlowRSVPPathObjectsSenderTemplateCType + """ + return self._get_property("c_type", FlowRSVPPathObjectsSenderTemplateCType) + + +class FlowRSVPPathObjectsSenderTemplateCType(OpenApiObject): + __slots__ = ("_parent", "_choice") + + _TYPES = { + "choice": { + "type": str, + "enum": [ + "lsp_tunnel_ipv4", + ], + }, + "lsp_tunnel_ipv4": {"type": "FlowRSVPPathSenderTemplateLspTunnelIpv4"}, + } # type: Dict[str, str] + + _REQUIRED = () # type: tuple(str) + + _DEFAULTS = { + "choice": "lsp_tunnel_ipv4", + } # type: Dict[str, Union(type)] + + LSP_TUNNEL_IPV4 = "lsp_tunnel_ipv4" # type: str + + _STATUS = {} # type: Dict[str, Union(type)] + + def __init__(self, parent=None, choice=None): + super(FlowRSVPPathObjectsSenderTemplateCType, self).__init__() + self._parent = parent + if ( + "choice" in self._DEFAULTS + and choice is None + and self._DEFAULTS["choice"] in self._TYPES + ): + getattr(self, self._DEFAULTS["choice"]) + else: + self._set_property("choice", choice) + + @property + def lsp_tunnel_ipv4(self): + # type: () -> FlowRSVPPathSenderTemplateLspTunnelIpv4 + """Factory property that returns an instance of the FlowRSVPPathSenderTemplateLspTunnelIpv4 class + + Class SENDER_TEMPLATE, LSP_TUNNEL_IPv4 C-Type 7 + + Returns: FlowRSVPPathSenderTemplateLspTunnelIpv4 + """ + return self._get_property( + "lsp_tunnel_ipv4", + FlowRSVPPathSenderTemplateLspTunnelIpv4, + self, + "lsp_tunnel_ipv4", + ) + + @property + def choice(self): + # type: () -> Union[Literal["lsp_tunnel_ipv4"]] + """choice getter + + TBD + + Returns: Union[Literal["lsp_tunnel_ipv4"]] + """ + return self._get_property("choice") + + @choice.setter + def choice(self, value): + """choice setter + + TBD + + value: Union[Literal["lsp_tunnel_ipv4"]] + """ + self._set_property("choice", value) + + +class FlowRSVPPathSenderTemplateLspTunnelIpv4(OpenApiObject): + __slots__ = "_parent" + + _TYPES = { + "ipv4_tunnel_sender_address": { + "type": "PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Ipv4TunnelSenderAddress" + }, + "reserved": {"type": "PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Reserved"}, + "lsp_id": {"type": "PatternFlowRSVPPathSenderTemplateLspTunnelIpv4LspId"}, + } # type: Dict[str, str] + + _REQUIRED = () # type: tuple(str) + + _DEFAULTS = {} # type: Dict[str, Union(type)] + + _STATUS = {} # type: Dict[str, Union(type)] + + def __init__(self, parent=None): + super(FlowRSVPPathSenderTemplateLspTunnelIpv4, self).__init__() + self._parent = parent + + @property + def ipv4_tunnel_sender_address(self): + # type: () -> PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Ipv4TunnelSenderAddress + """ipv4_tunnel_sender_address getter + + IPv4 address for sender node.IPv4 address for sender node.IPv4 address for sender node.IPv4 address for sender node. + + Returns: PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Ipv4TunnelSenderAddress + """ + return self._get_property( + "ipv4_tunnel_sender_address", + PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Ipv4TunnelSenderAddress, + ) + + @property + def reserved(self): + # type: () -> PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Reserved + """reserved getter + + Reserved field, MUST be zero.Reserved field, MUST be zero.Reserved field, MUST be zero.Reserved field, MUST be zero. + + Returns: PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Reserved + """ + return self._get_property( + "reserved", PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Reserved + ) + + @property + def lsp_id(self): + # type: () -> PatternFlowRSVPPathSenderTemplateLspTunnelIpv4LspId + """lsp_id getter + + A 16-bit identifier used in the SENDER_TEMPLATE that can be changed to allow sender to share resources with itself.A 16-bit identifier used in the SENDER_TEMPLATE that can be changed to allow sender to share resources with itself.A 16-bit identifier used in the SENDER_TEMPLATE that can be changed to allow sender to share resources with itself.A 16-bit identifier used in the SENDER_TEMPLATE that can be changed to allow sender to share resources with itself. + + Returns: PatternFlowRSVPPathSenderTemplateLspTunnelIpv4LspId + """ + return self._get_property( + "lsp_id", PatternFlowRSVPPathSenderTemplateLspTunnelIpv4LspId + ) + + +class PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Ipv4TunnelSenderAddress( + OpenApiObject +): + __slots__ = ("_parent", "_choice") + + _TYPES = { + "choice": { + "type": str, + "enum": [ + "value", + "values", + "increment", + "decrement", + ], + }, + "value": { + "type": str, + "format": "ipv4", + }, + "values": { + "type": list, + "itemtype": str, + "itemformat": "ipv4", + }, + "increment": { + "type": "PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Ipv4TunnelSenderAddressCounter" + }, + "decrement": { + "type": "PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Ipv4TunnelSenderAddressCounter" + }, + } # type: Dict[str, str] + + _REQUIRED = () # type: tuple(str) + + _DEFAULTS = { + "choice": "value", + "value": "0.0.0.0", + "values": ["0.0.0.0"], + } # type: Dict[str, Union(type)] + + VALUE = "value" # type: str + VALUES = "values" # type: str + INCREMENT = "increment" # type: str + DECREMENT = "decrement" # type: str + + _STATUS = {} # type: Dict[str, Union(type)] + + def __init__(self, parent=None, choice=None, value="0.0.0.0", values=["0.0.0.0"]): + super( + PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Ipv4TunnelSenderAddress, self + ).__init__() + self._parent = parent + self._set_property("value", value) + self._set_property("values", values) + if ( + "choice" in self._DEFAULTS + and choice is None + and self._DEFAULTS["choice"] in self._TYPES + ): + getattr(self, self._DEFAULTS["choice"]) + else: + self._set_property("choice", choice) + + def set(self, value=None, values=None): + for property_name, property_value in locals().items(): + if property_name != "self" and property_value is not None: + self._set_property(property_name, property_value) + + @property + def increment(self): + # type: () -> PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Ipv4TunnelSenderAddressCounter + """Factory property that returns an instance of the PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Ipv4TunnelSenderAddressCounter class + + ipv4 counter pattern + + Returns: PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Ipv4TunnelSenderAddressCounter + """ + return self._get_property( + "increment", + PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Ipv4TunnelSenderAddressCounter, + self, + "increment", + ) + + @property + def decrement(self): + # type: () -> PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Ipv4TunnelSenderAddressCounter + """Factory property that returns an instance of the PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Ipv4TunnelSenderAddressCounter class + + ipv4 counter pattern + + Returns: PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Ipv4TunnelSenderAddressCounter + """ + return self._get_property( + "decrement", + PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Ipv4TunnelSenderAddressCounter, + self, + "decrement", + ) + + @property + def choice(self): + # type: () -> Union[Literal["decrement"], Literal["increment"], Literal["value"], Literal["values"]] + """choice getter + + TBD + + Returns: Union[Literal["decrement"], Literal["increment"], Literal["value"], Literal["values"]] + """ + return self._get_property("choice") + + @choice.setter + def choice(self, value): + """choice setter + + TBD + + value: Union[Literal["decrement"], Literal["increment"], Literal["value"], Literal["values"]] + """ + self._set_property("choice", value) + + @property + def value(self): + # type: () -> str + """value getter + + TBD + + Returns: str + """ + return self._get_property("value") + + @value.setter + def value(self, value): + """value setter + + TBD + + value: str + """ + self._set_property("value", value, "value") + + @property + def values(self): + # type: () -> List[str] + """values getter + + TBD + + Returns: List[str] + """ + return self._get_property("values") + + @values.setter + def values(self, value): + """values setter + + TBD + + value: List[str] + """ + self._set_property("values", value, "values") + + +class PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Ipv4TunnelSenderAddressCounter( + OpenApiObject +): + __slots__ = "_parent" + + _TYPES = { + "start": { + "type": str, + "format": "ipv4", + }, + "step": { + "type": str, + "format": "ipv4", + }, + "count": { + "type": int, + "format": "uint32", + }, + } # type: Dict[str, str] + + _REQUIRED = () # type: tuple(str) + + _DEFAULTS = { + "start": "0.0.0.0", + "step": "0.0.0.1", + "count": 1, + } # type: Dict[str, Union(type)] + + _STATUS = {} # type: Dict[str, Union(type)] + + def __init__(self, parent=None, start="0.0.0.0", step="0.0.0.1", count=1): + super( + PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Ipv4TunnelSenderAddressCounter, + self, + ).__init__() + self._parent = parent + self._set_property("start", start) + self._set_property("step", step) + self._set_property("count", count) + + def set(self, start=None, step=None, count=None): + for property_name, property_value in locals().items(): + if property_name != "self" and property_value is not None: + self._set_property(property_name, property_value) + + @property + def start(self): + # type: () -> str + """start getter + + TBD + + Returns: str + """ + return self._get_property("start") + + @start.setter + def start(self, value): + """start setter + + TBD + + value: str + """ + self._set_property("start", value) + + @property + def step(self): + # type: () -> str + """step getter + + TBD + + Returns: str + """ + return self._get_property("step") + + @step.setter + def step(self, value): + """step setter + + TBD + + value: str + """ + self._set_property("step", value) + + @property + def count(self): + # type: () -> int + """count getter + + TBD + + Returns: int + """ + return self._get_property("count") + + @count.setter + def count(self, value): + """count setter + + TBD + + value: int + """ + self._set_property("count", value) + + +class PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Reserved(OpenApiObject): + __slots__ = ("_parent", "_choice") + + _TYPES = { + "choice": { + "type": str, + "enum": [ + "value", + "values", + "increment", + "decrement", + ], + }, + "value": { + "type": int, + "format": "uint32", + "maximum": 65535, + }, + "values": { + "type": list, + "itemtype": int, + "itemformat": "uint32", + "maximum": 65535, + }, + "increment": { + "type": "PatternFlowRSVPPathSenderTemplateLspTunnelIpv4ReservedCounter" + }, + "decrement": { + "type": "PatternFlowRSVPPathSenderTemplateLspTunnelIpv4ReservedCounter" + }, + } # type: Dict[str, str] + + _REQUIRED = () # type: tuple(str) + + _DEFAULTS = { + "choice": "value", + "value": 0, + "values": [0], + } # type: Dict[str, Union(type)] + + VALUE = "value" # type: str + VALUES = "values" # type: str + INCREMENT = "increment" # type: str + DECREMENT = "decrement" # type: str + + _STATUS = {} # type: Dict[str, Union(type)] + + def __init__(self, parent=None, choice=None, value=0, values=[0]): + super(PatternFlowRSVPPathSenderTemplateLspTunnelIpv4Reserved, self).__init__() + self._parent = parent + self._set_property("value", value) + self._set_property("values", values) + if ( + "choice" in self._DEFAULTS + and choice is None + and self._DEFAULTS["choice"] in self._TYPES + ): + getattr(self, self._DEFAULTS["choice"]) + else: + self._set_property("choice", choice) + + def set(self, value=None, values=None): + for property_name, property_value in locals().items(): + if property_name != "self" and property_value is not None: + self._set_property(property_name, property_value) + + @property + def increment(self): + # type: () -> PatternFlowRSVPPathSenderTemplateLspTunnelIpv4ReservedCounter + """Factory property that returns an instance of the PatternFlowRSVPPathSenderTemplateLspTunnelIpv4ReservedCounter class + + integer counter pattern + + Returns: PatternFlowRSVPPathSenderTemplateLspTunnelIpv4ReservedCounter + """ + return self._get_property( + "increment", + PatternFlowRSVPPathSenderTemplateLspTunnelIpv4ReservedCounter, + self, + "increment", + ) + + @property + def decrement(self): + # type: () -> PatternFlowRSVPPathSenderTemplateLspTunnelIpv4ReservedCounter + """Factory property that returns an instance of the PatternFlowRSVPPathSenderTemplateLspTunnelIpv4ReservedCounter class + + integer counter pattern + + Returns: PatternFlowRSVPPathSenderTemplateLspTunnelIpv4ReservedCounter + """ + return self._get_property( + "decrement", + PatternFlowRSVPPathSenderTemplateLspTunnelIpv4ReservedCounter, + self, + "decrement", + ) + + @property + def choice(self): + # type: () -> Union[Literal["decrement"], Literal["increment"], Literal["value"], Literal["values"]] + """choice getter + + TBD + + Returns: Union[Literal["decrement"], Literal["increment"], Literal["value"], Literal["values"]] + """ + return self._get_property("choice") + + @choice.setter + def choice(self, value): + """choice setter + + TBD + + value: Union[Literal["decrement"], Literal["increment"], Literal["value"], Literal["values"]] + """ + self._set_property("choice", value) + + @property + def value(self): + # type: () -> int + """value getter + + TBD + + Returns: int + """ + return self._get_property("value") + + @value.setter + def value(self, value): + """value setter + + TBD + + value: int + """ + self._set_property("value", value, "value") + + @property + def values(self): + # type: () -> List[int] + """values getter + + TBD + + Returns: List[int] + """ + return self._get_property("values") + + @values.setter + def values(self, value): + """values setter + + TBD + + value: List[int] + """ + self._set_property("values", value, "values") + + +class PatternFlowRSVPPathSenderTemplateLspTunnelIpv4ReservedCounter(OpenApiObject): + __slots__ = "_parent" + + _TYPES = { + "start": { + "type": int, + "format": "uint32", + "maximum": 65535, + }, + "step": { + "type": int, + "format": "uint32", + "maximum": 65535, + }, + "count": { + "type": int, + "format": "uint32", + "maximum": 65535, + }, + } # type: Dict[str, str] + + _REQUIRED = () # type: tuple(str) + + _DEFAULTS = { + "start": 0, + "step": 1, + "count": 1, + } # type: Dict[str, Union(type)] + + _STATUS = {} # type: Dict[str, Union(type)] + + def __init__(self, parent=None, start=0, step=1, count=1): + super( + PatternFlowRSVPPathSenderTemplateLspTunnelIpv4ReservedCounter, self + ).__init__() + self._parent = parent + self._set_property("start", start) + self._set_property("step", step) + self._set_property("count", count) + + def set(self, start=None, step=None, count=None): + for property_name, property_value in locals().items(): + if property_name != "self" and property_value is not None: + self._set_property(property_name, property_value) + + @property + def start(self): + # type: () -> int + """start getter + + TBD + + Returns: int + """ + return self._get_property("start") + + @start.setter + def start(self, value): + """start setter + + TBD + + value: int + """ + self._set_property("start", value) + + @property + def step(self): + # type: () -> int + """step getter + + TBD + + Returns: int + """ + return self._get_property("step") + + @step.setter + def step(self, value): + """step setter + + TBD + + value: int + """ + self._set_property("step", value) + + @property + def count(self): + # type: () -> int + """count getter + + TBD + + Returns: int + """ + return self._get_property("count") + + @count.setter + def count(self, value): + """count setter + + TBD + + value: int + """ + self._set_property("count", value) + + +class PatternFlowRSVPPathSenderTemplateLspTunnelIpv4LspId(OpenApiObject): + __slots__ = ("_parent", "_choice") + + _TYPES = { + "choice": { + "type": str, + "enum": [ + "value", + "values", + "increment", + "decrement", + ], + }, + "value": { + "type": int, + "format": "uint32", + "maximum": 65535, + }, + "values": { + "type": list, + "itemtype": int, + "itemformat": "uint32", + "maximum": 65535, + }, + "increment": { + "type": "PatternFlowRSVPPathSenderTemplateLspTunnelIpv4LspIdCounter" + }, + "decrement": { + "type": "PatternFlowRSVPPathSenderTemplateLspTunnelIpv4LspIdCounter" + }, + } # type: Dict[str, str] + + _REQUIRED = () # type: tuple(str) + + _DEFAULTS = { + "choice": "value", + "value": 0, + "values": [0], + } # type: Dict[str, Union(type)] + + VALUE = "value" # type: str + VALUES = "values" # type: str + INCREMENT = "increment" # type: str + DECREMENT = "decrement" # type: str + + _STATUS = {} # type: Dict[str, Union(type)] + + def __init__(self, parent=None, choice=None, value=0, values=[0]): + super(PatternFlowRSVPPathSenderTemplateLspTunnelIpv4LspId, self).__init__() + self._parent = parent + self._set_property("value", value) + self._set_property("values", values) + if ( + "choice" in self._DEFAULTS + and choice is None + and self._DEFAULTS["choice"] in self._TYPES + ): + getattr(self, self._DEFAULTS["choice"]) + else: + self._set_property("choice", choice) + + def set(self, value=None, values=None): + for property_name, property_value in locals().items(): + if property_name != "self" and property_value is not None: + self._set_property(property_name, property_value) + + @property + def increment(self): + # type: () -> PatternFlowRSVPPathSenderTemplateLspTunnelIpv4LspIdCounter + """Factory property that returns an instance of the PatternFlowRSVPPathSenderTemplateLspTunnelIpv4LspIdCounter class + + integer counter pattern + + Returns: PatternFlowRSVPPathSenderTemplateLspTunnelIpv4LspIdCounter + """ + return self._get_property( + "increment", + PatternFlowRSVPPathSenderTemplateLspTunnelIpv4LspIdCounter, + self, + "increment", + ) + + @property + def decrement(self): + # type: () -> PatternFlowRSVPPathSenderTemplateLspTunnelIpv4LspIdCounter + """Factory property that returns an instance of the PatternFlowRSVPPathSenderTemplateLspTunnelIpv4LspIdCounter class + + integer counter pattern + + Returns: PatternFlowRSVPPathSenderTemplateLspTunnelIpv4LspIdCounter + """ + return self._get_property( + "decrement", + PatternFlowRSVPPathSenderTemplateLspTunnelIpv4LspIdCounter, + self, + "decrement", + ) + + @property + def choice(self): + # type: () -> Union[Literal["decrement"], Literal["increment"], Literal["value"], Literal["values"]] + """choice getter + + TBD + + Returns: Union[Literal["decrement"], Literal["increment"], Literal["value"], Literal["values"]] + """ + return self._get_property("choice") + + @choice.setter + def choice(self, value): + """choice setter + + TBD + + value: Union[Literal["decrement"], Literal["increment"], Literal["value"], Literal["values"]] + """ + self._set_property("choice", value) + + @property + def value(self): + # type: () -> int + """value getter + + TBD + + Returns: int + """ + return self._get_property("value") + + @value.setter + def value(self, value): + """value setter + + TBD + + value: int + """ + self._set_property("value", value, "value") + + @property + def values(self): + # type: () -> List[int] + """values getter + + TBD + + Returns: List[int] + """ + return self._get_property("values") + + @values.setter + def values(self, value): + """values setter + + TBD + + value: List[int] + """ + self._set_property("values", value, "values") + + +class PatternFlowRSVPPathSenderTemplateLspTunnelIpv4LspIdCounter(OpenApiObject): + __slots__ = "_parent" + + _TYPES = { + "start": { + "type": int, + "format": "uint32", + "maximum": 65535, + }, + "step": { + "type": int, + "format": "uint32", + "maximum": 65535, + }, + "count": { + "type": int, + "format": "uint32", + "maximum": 65535, + }, + } # type: Dict[str, str] + + _REQUIRED = () # type: tuple(str) + + _DEFAULTS = { + "start": 0, + "step": 1, + "count": 1, + } # type: Dict[str, Union(type)] + + _STATUS = {} # type: Dict[str, Union(type)] + + def __init__(self, parent=None, start=0, step=1, count=1): + super( + PatternFlowRSVPPathSenderTemplateLspTunnelIpv4LspIdCounter, self + ).__init__() + self._parent = parent + self._set_property("start", start) + self._set_property("step", step) + self._set_property("count", count) + + def set(self, start=None, step=None, count=None): + for property_name, property_value in locals().items(): + if property_name != "self" and property_value is not None: + self._set_property(property_name, property_value) + + @property + def start(self): + # type: () -> int + """start getter + + TBD + + Returns: int + """ + return self._get_property("start") + + @start.setter + def start(self, value): + """start setter + + TBD + + value: int + """ + self._set_property("start", value) + + @property + def step(self): + # type: () -> int + """step getter + + TBD + + Returns: int + """ + return self._get_property("step") + + @step.setter + def step(self, value): + """step setter + + TBD + + value: int + """ + self._set_property("step", value) + + @property + def count(self): + # type: () -> int + """count getter + + TBD + + Returns: int + """ + return self._get_property("count") + + @count.setter + def count(self, value): + """count setter + + TBD + + value: int + """ + self._set_property("count", value) + + +class FlowRSVPPathObjectsClassSenderTspec(OpenApiObject): + __slots__ = "_parent" + + _TYPES = { + "c_type": {"type": "FlowRSVPPathObjectsSenderTspecCType"}, + } # type: Dict[str, str] + + _REQUIRED = () # type: tuple(str) + + _DEFAULTS = {} # type: Dict[str, Union(type)] + + _STATUS = {} # type: Dict[str, Union(type)] + + def __init__(self, parent=None): + super(FlowRSVPPathObjectsClassSenderTspec, self).__init__() + self._parent = parent + + @property + def c_type(self): + # type: () -> FlowRSVPPathObjectsSenderTspecCType + """c_type getter + + Object for SENDER_TSPEC class. Currently supported c-type is int-serv (2).Object for SENDER_TSPEC class. Currently supported c-type is int-serv (2).Object for SENDER_TSPEC class. Currently supported c-type is int-serv (2).Object for SENDER_TSPEC class. Currently supported c-type is int-serv (2). + + Returns: FlowRSVPPathObjectsSenderTspecCType + """ + return self._get_property("c_type", FlowRSVPPathObjectsSenderTspecCType) + + +class FlowRSVPPathObjectsSenderTspecCType(OpenApiObject): + __slots__ = ("_parent", "_choice") + + _TYPES = { + "choice": { + "type": str, + "enum": [ + "int_serv", + ], + }, + "int_serv": {"type": "FlowRSVPPathSenderTspecIntServ"}, + } # type: Dict[str, str] + + _REQUIRED = () # type: tuple(str) + + _DEFAULTS = { + "choice": "int_serv", + } # type: Dict[str, Union(type)] + + INT_SERV = "int_serv" # type: str + + _STATUS = {} # type: Dict[str, Union(type)] + + def __init__(self, parent=None, choice=None): + super(FlowRSVPPathObjectsSenderTspecCType, self).__init__() + self._parent = parent + if ( + "choice" in self._DEFAULTS + and choice is None + and self._DEFAULTS["choice"] in self._TYPES + ): + getattr(self, self._DEFAULTS["choice"]) + else: + self._set_property("choice", choice) + + @property + def int_serv(self): + # type: () -> FlowRSVPPathSenderTspecIntServ + """Factory property that returns an instance of the FlowRSVPPathSenderTspecIntServ class + + int-serv SENDER_TSPEC object: Class 12, C-Type 2 + + Returns: FlowRSVPPathSenderTspecIntServ + """ + return self._get_property( + "int_serv", FlowRSVPPathSenderTspecIntServ, self, "int_serv" + ) + + @property + def choice(self): + # type: () -> Union[Literal["int_serv"]] + """choice getter + + TBD + + Returns: Union[Literal["int_serv"]] + """ + return self._get_property("choice") + + @choice.setter + def choice(self, value): + """choice setter + + TBD + + value: Union[Literal["int_serv"]] + """ + self._set_property("choice", value) + + +class FlowRSVPPathSenderTspecIntServ(OpenApiObject): + __slots__ = "_parent" + + _TYPES = { + "version": {"type": "PatternFlowRSVPPathSenderTspecIntServVersion"}, + "reserved1": {"type": "PatternFlowRSVPPathSenderTspecIntServReserved1"}, + "overall_length": { + "type": "PatternFlowRSVPPathSenderTspecIntServOverallLength" + }, + "service_header": { + "type": "PatternFlowRSVPPathSenderTspecIntServServiceHeader" + }, + "zero_bit": {"type": "PatternFlowRSVPPathSenderTspecIntServZeroBit"}, + "reserved2": {"type": "PatternFlowRSVPPathSenderTspecIntServReserved2"}, + "length_of_service_data": { + "type": "PatternFlowRSVPPathSenderTspecIntServLengthOfServiceData" + }, + "parameter_id_token_bucket_tspec": { + "type": "PatternFlowRSVPPathSenderTspecIntServParameterIdTokenBucketTspec" + }, + "parameter_127_flag": { + "type": "PatternFlowRSVPPathSenderTspecIntServParameter127Flag" + }, + "parameter_127_length": { + "type": "PatternFlowRSVPPathSenderTspecIntServParameter127Length" + }, + "token_bucket_rate": { + "type": float, + "format": "float", + }, + "token_bucket_size": { + "type": float, + "format": "float", + }, + "peak_data_rate": { + "type": float, + "format": "float", + }, + "minimum_policed_unit": { + "type": "PatternFlowRSVPPathSenderTspecIntServMinimumPolicedUnit" + }, + "maximum_packet_size": { + "type": "PatternFlowRSVPPathSenderTspecIntServMaximumPacketSize" + }, + } # type: Dict[str, str] + + _REQUIRED = () # type: tuple(str) + + _DEFAULTS = { + "token_bucket_rate": 0.0, + "token_bucket_size": 0.0, + "peak_data_rate": 0.0, + } # type: Dict[str, Union(type)] + + _STATUS = {} # type: Dict[str, Union(type)] + + def __init__( + self, parent=None, token_bucket_rate=0, token_bucket_size=0, peak_data_rate=0 + ): + super(FlowRSVPPathSenderTspecIntServ, self).__init__() + self._parent = parent + self._set_property("token_bucket_rate", token_bucket_rate) + self._set_property("token_bucket_size", token_bucket_size) + self._set_property("peak_data_rate", peak_data_rate) + + def set(self, token_bucket_rate=None, token_bucket_size=None, peak_data_rate=None): + for property_name, property_value in locals().items(): + if property_name != "self" and property_value is not None: + self._set_property(property_name, property_value) + + @property + def version(self): + # type: () -> PatternFlowRSVPPathSenderTspecIntServVersion + """version getter + + Message format version number.Message format version number.Message format version number.Message format version number. + + Returns: PatternFlowRSVPPathSenderTspecIntServVersion + """ + return self._get_property( + "version", PatternFlowRSVPPathSenderTspecIntServVersion + ) + + @property + def reserved1(self): + # type: () -> PatternFlowRSVPPathSenderTspecIntServReserved1 + """reserved1 getter + + Reserved.Reserved.Reserved.Reserved. + + Returns: PatternFlowRSVPPathSenderTspecIntServReserved1 + """ + return self._get_property( + "reserved1", PatternFlowRSVPPathSenderTspecIntServReserved1 + ) + + @property + def overall_length(self): + # type: () -> PatternFlowRSVPPathSenderTspecIntServOverallLength + """overall_length getter + + Overall length (7 words not including header).Overall length (7 words not including header).Overall length (7 words not including header).Overall length (7 words not including header). + + Returns: PatternFlowRSVPPathSenderTspecIntServOverallLength + """ + return self._get_property( + "overall_length", PatternFlowRSVPPathSenderTspecIntServOverallLength + ) + + @property + def service_header(self): + # type: () -> PatternFlowRSVPPathSenderTspecIntServServiceHeader + """service_header getter + + Service header, service number '1' (Generic information) if in PATH message.Service header, service number '1' (Generic information) if in PATH message.Service header, service number '1' (Generic information) if in PATH message.Service header, service number '1' (Generic information) if in PATH message. + + Returns: PatternFlowRSVPPathSenderTspecIntServServiceHeader + """ + return self._get_property( + "service_header", PatternFlowRSVPPathSenderTspecIntServServiceHeader + ) + + @property + def zero_bit(self): + # type: () -> PatternFlowRSVPPathSenderTspecIntServZeroBit + """zero_bit getter + + MUST be 0.MUST be 0.MUST be 0.MUST be 0. + + Returns: PatternFlowRSVPPathSenderTspecIntServZeroBit + """ + return self._get_property( + "zero_bit", PatternFlowRSVPPathSenderTspecIntServZeroBit + ) + + @property + def reserved2(self): + # type: () -> PatternFlowRSVPPathSenderTspecIntServReserved2 + """reserved2 getter + + Reserved.Reserved.Reserved.Reserved. + + Returns: PatternFlowRSVPPathSenderTspecIntServReserved2 + """ + return self._get_property( + "reserved2", PatternFlowRSVPPathSenderTspecIntServReserved2 + ) + + @property + def length_of_service_data(self): + # type: () -> PatternFlowRSVPPathSenderTspecIntServLengthOfServiceData + """length_of_service_data getter + + Length of service data, words not including per-service header.Length of service data, words not including per-service header.Length of service data, words not including per-service header.Length of service data, words not including per-service header. + + Returns: PatternFlowRSVPPathSenderTspecIntServLengthOfServiceData + """ + return self._get_property( + "length_of_service_data", + PatternFlowRSVPPathSenderTspecIntServLengthOfServiceData, + ) + + @property + def parameter_id_token_bucket_tspec(self): + # type: () -> PatternFlowRSVPPathSenderTspecIntServParameterIdTokenBucketTspec + """parameter_id_token_bucket_tspec getter + + Parameter ID, parameter 127 (Token Bucket TSpec)Parameter ID, parameter 127 (Token Bucket TSpec)Parameter ID, parameter 127 (Token Bucket TSpec)Parameter ID, parameter 127 (Token Bucket TSpec) + + Returns: PatternFlowRSVPPathSenderTspecIntServParameterIdTokenBucketTspec + """ + return self._get_property( + "parameter_id_token_bucket_tspec", + PatternFlowRSVPPathSenderTspecIntServParameterIdTokenBucketTspec, + ) + + @property + def parameter_127_flag(self): + # type: () -> PatternFlowRSVPPathSenderTspecIntServParameter127Flag + """parameter_127_flag getter + + Parameter 127 flags (none set)Parameter 127 flags (none set)Parameter 127 flags (none set)Parameter 127 flags (none set) + + Returns: PatternFlowRSVPPathSenderTspecIntServParameter127Flag + """ + return self._get_property( + "parameter_127_flag", PatternFlowRSVPPathSenderTspecIntServParameter127Flag + ) + + @property + def parameter_127_length(self): + # type: () -> PatternFlowRSVPPathSenderTspecIntServParameter127Length + """parameter_127_length getter + + Parameter 127 length, words not including per-service headerParameter 127 length, words not including per-service headerParameter 127 length, words not including per-service headerParameter 127 length, words not including per-service header + + Returns: PatternFlowRSVPPathSenderTspecIntServParameter127Length + """ + return self._get_property( + "parameter_127_length", + PatternFlowRSVPPathSenderTspecIntServParameter127Length, + ) + + @property + def token_bucket_rate(self): + # type: () -> float + """token_bucket_rate getter + + Token bucket rate is set to sender's view of its generated traffic. + + Returns: float + """ + return self._get_property("token_bucket_rate") + + @token_bucket_rate.setter + def token_bucket_rate(self, value): + """token_bucket_rate setter + + Token bucket rate is set to sender's view of its generated traffic. + + value: float + """ + self._set_property("token_bucket_rate", value) + + @property + def token_bucket_size(self): + # type: () -> float + """token_bucket_size getter + + Token bucket size is set to sender's view of its generated traffic. + + Returns: float + """ + return self._get_property("token_bucket_size") + + @token_bucket_size.setter + def token_bucket_size(self, value): + """token_bucket_size setter + + Token bucket size is set to sender's view of its generated traffic. + + value: float + """ + self._set_property("token_bucket_size", value) + + @property + def peak_data_rate(self): + # type: () -> float + """peak_data_rate getter + + The peak rate may be set to the sender's peak traffic generation rate (if known and controlled), the physical interface line rate (if known), or positive infinity (if no better value is available). + + Returns: float + """ + return self._get_property("peak_data_rate") + + @peak_data_rate.setter + def peak_data_rate(self, value): + """peak_data_rate setter + + The peak rate may be set to the sender's peak traffic generation rate (if known and controlled), the physical interface line rate (if known), or positive infinity (if no better value is available). + + value: float + """ + self._set_property("peak_data_rate", value) + + @property + def minimum_policed_unit(self): + # type: () -> PatternFlowRSVPPathSenderTspecIntServMinimumPolicedUnit + """minimum_policed_unit getter + + The minimum policed unit parameter should generally be set equal to the size of the smallest packet generated by the application.The minimum policed unit parameter should generally be set equal to the size of the smallest packet generated by the application.The minimum policed unit parameter should generally be set equal to the size of the smallest packet generated by the application.The minimum policed unit parameter should generally be set equal to the size of the smallest packet generated by the application. + + Returns: PatternFlowRSVPPathSenderTspecIntServMinimumPolicedUnit + """ + return self._get_property( + "minimum_policed_unit", + PatternFlowRSVPPathSenderTspecIntServMinimumPolicedUnit, + ) + + @property + def maximum_packet_size(self): + # type: () -> PatternFlowRSVPPathSenderTspecIntServMaximumPacketSize + """maximum_packet_size getter + + The maximum packet size parameter should be set to the size of the largest packet the application might wish to generate. This value must, by definition, be equal to or larger than the value of The minimum policed unit.The maximum packet size parameter should be set to the size of the largest packet the application might wish to generate. This value must, by definition, be equal to or larger than the value of The minimum policed unit.The maximum packet size parameter should be set to the size of the largest packet the application might wish to generate. This value must, by definition, be equal to or larger than the value of The minimum policed unit.The maximum packet size parameter should be set to the size of the largest packet the application might wish to generate. This value must, by definition, be equal to or larger than the value of The minimum policed unit. + + Returns: PatternFlowRSVPPathSenderTspecIntServMaximumPacketSize + """ + return self._get_property( + "maximum_packet_size", + PatternFlowRSVPPathSenderTspecIntServMaximumPacketSize, + ) + + +class PatternFlowRSVPPathSenderTspecIntServVersion(OpenApiObject): + __slots__ = ("_parent", "_choice") + + _TYPES = { + "choice": { + "type": str, + "enum": [ + "value", + "values", + "increment", + "decrement", + ], + }, + "value": { + "type": int, + "format": "uint32", + "maximum": 15, + }, + "values": { + "type": list, + "itemtype": int, + "itemformat": "uint32", + "maximum": 15, + }, + "increment": {"type": "PatternFlowRSVPPathSenderTspecIntServVersionCounter"}, + "decrement": {"type": "PatternFlowRSVPPathSenderTspecIntServVersionCounter"}, + } # type: Dict[str, str] + + _REQUIRED = () # type: tuple(str) + + _DEFAULTS = { + "choice": "value", + "value": 0, + "values": [0], + } # type: Dict[str, Union(type)] + + VALUE = "value" # type: str + VALUES = "values" # type: str + INCREMENT = "increment" # type: str + DECREMENT = "decrement" # type: str + + _STATUS = {} # type: Dict[str, Union(type)] + + def __init__(self, parent=None, choice=None, value=0, values=[0]): + super(PatternFlowRSVPPathSenderTspecIntServVersion, self).__init__() + self._parent = parent + self._set_property("value", value) + self._set_property("values", values) + if ( + "choice" in self._DEFAULTS + and choice is None + and self._DEFAULTS["choice"] in self._TYPES + ): + getattr(self, self._DEFAULTS["choice"]) + else: + self._set_property("choice", choice) + + def set(self, value=None, values=None): + for property_name, property_value in locals().items(): + if property_name != "self" and property_value is not None: + self._set_property(property_name, property_value) + + @property + def increment(self): + # type: () -> PatternFlowRSVPPathSenderTspecIntServVersionCounter + """Factory property that returns an instance of the PatternFlowRSVPPathSenderTspecIntServVersionCounter class + + integer counter pattern + + Returns: PatternFlowRSVPPathSenderTspecIntServVersionCounter + """ + return self._get_property( + "increment", + PatternFlowRSVPPathSenderTspecIntServVersionCounter, + self, + "increment", + ) + + @property + def decrement(self): + # type: () -> PatternFlowRSVPPathSenderTspecIntServVersionCounter + """Factory property that returns an instance of the PatternFlowRSVPPathSenderTspecIntServVersionCounter class + + integer counter pattern + + Returns: PatternFlowRSVPPathSenderTspecIntServVersionCounter + """ + return self._get_property( + "decrement", + PatternFlowRSVPPathSenderTspecIntServVersionCounter, + self, + "decrement", + ) + + @property + def choice(self): + # type: () -> Union[Literal["decrement"], Literal["increment"], Literal["value"], Literal["values"]] + """choice getter + + TBD + + Returns: Union[Literal["decrement"], Literal["increment"], Literal["value"], Literal["values"]] + """ + return self._get_property("choice") + + @choice.setter + def choice(self, value): + """choice setter + + TBD + + value: Union[Literal["decrement"], Literal["increment"], Literal["value"], Literal["values"]] + """ + self._set_property("choice", value) + + @property + def value(self): + # type: () -> int + """value getter + + TBD + + Returns: int + """ + return self._get_property("value") + + @value.setter + def value(self, value): + """value setter + + TBD + + value: int + """ + self._set_property("value", value, "value") + + @property + def values(self): + # type: () -> List[int] + """values getter + + TBD + + Returns: List[int] + """ + return self._get_property("values") + + @values.setter + def values(self, value): + """values setter + + TBD + + value: List[int] + """ + self._set_property("values", value, "values") + + +class PatternFlowRSVPPathSenderTspecIntServVersionCounter(OpenApiObject): + __slots__ = "_parent" + + _TYPES = { + "start": { + "type": int, + "format": "uint32", + "maximum": 15, + }, + "step": { + "type": int, + "format": "uint32", + "maximum": 15, + }, + "count": { + "type": int, + "format": "uint32", + "maximum": 15, + }, + } # type: Dict[str, str] + + _REQUIRED = () # type: tuple(str) + + _DEFAULTS = { + "start": 0, + "step": 1, + "count": 1, + } # type: Dict[str, Union(type)] + + _STATUS = {} # type: Dict[str, Union(type)] + + def __init__(self, parent=None, start=0, step=1, count=1): + super(PatternFlowRSVPPathSenderTspecIntServVersionCounter, self).__init__() + self._parent = parent + self._set_property("start", start) + self._set_property("step", step) + self._set_property("count", count) + + def set(self, start=None, step=None, count=None): + for property_name, property_value in locals().items(): + if property_name != "self" and property_value is not None: + self._set_property(property_name, property_value) + + @property + def start(self): + # type: () -> int + """start getter + + TBD + + Returns: int + """ + return self._get_property("start") + + @start.setter + def start(self, value): + """start setter + + TBD + + value: int + """ + self._set_property("start", value) + + @property + def step(self): + # type: () -> int + """step getter + + TBD + + Returns: int + """ + return self._get_property("step") + + @step.setter + def step(self, value): + """step setter + + TBD + + value: int + """ + self._set_property("step", value) + + @property + def count(self): + # type: () -> int + """count getter + + TBD + + Returns: int + """ + return self._get_property("count") + + @count.setter + def count(self, value): + """count setter + + TBD + + value: int + """ + self._set_property("count", value) + + +class PatternFlowRSVPPathSenderTspecIntServReserved1(OpenApiObject): + __slots__ = ("_parent", "_choice") + + _TYPES = { + "choice": { + "type": str, + "enum": [ + "value", + "values", + "increment", + "decrement", + ], + }, + "value": { + "type": int, + "format": "uint32", + "maximum": 4095, + }, + "values": { + "type": list, + "itemtype": int, + "itemformat": "uint32", + "maximum": 4095, + }, + "increment": {"type": "PatternFlowRSVPPathSenderTspecIntServReserved1Counter"}, + "decrement": {"type": "PatternFlowRSVPPathSenderTspecIntServReserved1Counter"}, + } # type: Dict[str, str] + + _REQUIRED = () # type: tuple(str) + + _DEFAULTS = { + "choice": "value", + "value": 0, + "values": [0], + } # type: Dict[str, Union(type)] + + VALUE = "value" # type: str + VALUES = "values" # type: str + INCREMENT = "increment" # type: str + DECREMENT = "decrement" # type: str + + _STATUS = {} # type: Dict[str, Union(type)] + + def __init__(self, parent=None, choice=None, value=0, values=[0]): + super(PatternFlowRSVPPathSenderTspecIntServReserved1, self).__init__() + self._parent = parent + self._set_property("value", value) + self._set_property("values", values) + if ( + "choice" in self._DEFAULTS + and choice is None + and self._DEFAULTS["choice"] in self._TYPES + ): + getattr(self, self._DEFAULTS["choice"]) + else: + self._set_property("choice", choice) + + def set(self, value=None, values=None): + for property_name, property_value in locals().items(): + if property_name != "self" and property_value is not None: + self._set_property(property_name, property_value) + + @property + def increment(self): + # type: () -> PatternFlowRSVPPathSenderTspecIntServReserved1Counter + """Factory property that returns an instance of the PatternFlowRSVPPathSenderTspecIntServReserved1Counter class + + integer counter pattern + + Returns: PatternFlowRSVPPathSenderTspecIntServReserved1Counter + """ + return self._get_property( + "increment", + PatternFlowRSVPPathSenderTspecIntServReserved1Counter, + self, + "increment", + ) + + @property + def decrement(self): + # type: () -> PatternFlowRSVPPathSenderTspecIntServReserved1Counter + """Factory property that returns an instance of the PatternFlowRSVPPathSenderTspecIntServReserved1Counter class + + integer counter pattern + + Returns: PatternFlowRSVPPathSenderTspecIntServReserved1Counter + """ + return self._get_property( + "decrement", + PatternFlowRSVPPathSenderTspecIntServReserved1Counter, + self, + "decrement", + ) + + @property + def choice(self): + # type: () -> Union[Literal["decrement"], Literal["increment"], Literal["value"], Literal["values"]] + """choice getter + + TBD + + Returns: Union[Literal["decrement"], Literal["increment"], Literal["value"], Literal["values"]] + """ + return self._get_property("choice") + + @choice.setter + def choice(self, value): + """choice setter + + TBD + + value: Union[Literal["decrement"], Literal["increment"], Literal["value"], Literal["values"]] + """ + self._set_property("choice", value) + + @property + def value(self): + # type: () -> int + """value getter + + TBD + + Returns: int + """ + return self._get_property("value") + + @value.setter + def value(self, value): + """value setter + + TBD + + value: int + """ + self._set_property("value", value, "value") + + @property + def values(self): + # type: () -> List[int] + """values getter + + TBD + + Returns: List[int] + """ + return self._get_property("values") + + @values.setter + def values(self, value): + """values setter + + TBD + + value: List[int] + """ + self._set_property("values", value, "values") + + +class PatternFlowRSVPPathSenderTspecIntServReserved1Counter(OpenApiObject): + __slots__ = "_parent" + + _TYPES = { + "start": { + "type": int, + "format": "uint32", + "maximum": 4095, + }, + "step": { + "type": int, + "format": "uint32", + "maximum": 4095, + }, + "count": { + "type": int, + "format": "uint32", + "maximum": 4095, + }, + } # type: Dict[str, str] + + _REQUIRED = () # type: tuple(str) + + _DEFAULTS = { + "start": 0, + "step": 1, + "count": 1, + } # type: Dict[str, Union(type)] + + _STATUS = {} # type: Dict[str, Union(type)] + + def __init__(self, parent=None, start=0, step=1, count=1): + super(PatternFlowRSVPPathSenderTspecIntServReserved1Counter, self).__init__() + self._parent = parent + self._set_property("start", start) + self._set_property("step", step) + self._set_property("count", count) + + def set(self, start=None, step=None, count=None): + for property_name, property_value in locals().items(): + if property_name != "self" and property_value is not None: + self._set_property(property_name, property_value) + + @property + def start(self): + # type: () -> int + """start getter + + TBD + + Returns: int + """ + return self._get_property("start") + + @start.setter + def start(self, value): + """start setter + + TBD + + value: int + """ + self._set_property("start", value) + + @property + def step(self): + # type: () -> int + """step getter + + TBD + + Returns: int + """ + return self._get_property("step") + + @step.setter + def step(self, value): + """step setter + + TBD + + value: int + """ + self._set_property("step", value) + + @property + def count(self): + # type: () -> int + """count getter + + TBD + + Returns: int + """ + return self._get_property("count") + + @count.setter + def count(self, value): + """count setter + + TBD + + value: int + """ + self._set_property("count", value) + + +class PatternFlowRSVPPathSenderTspecIntServOverallLength(OpenApiObject): + __slots__ = ("_parent", "_choice") + + _TYPES = { + "choice": { + "type": str, + "enum": [ + "value", + "values", + "increment", + "decrement", + ], + }, + "value": { + "type": int, + "format": "uint32", + "maximum": 65535, + }, + "values": { + "type": list, + "itemtype": int, + "itemformat": "uint32", + "maximum": 65535, + }, + "increment": { + "type": "PatternFlowRSVPPathSenderTspecIntServOverallLengthCounter" + }, + "decrement": { + "type": "PatternFlowRSVPPathSenderTspecIntServOverallLengthCounter" + }, + } # type: Dict[str, str] + + _REQUIRED = () # type: tuple(str) + + _DEFAULTS = { + "choice": "value", + "value": 7, + "values": [7], + } # type: Dict[str, Union(type)] + + VALUE = "value" # type: str + VALUES = "values" # type: str + INCREMENT = "increment" # type: str + DECREMENT = "decrement" # type: str + + _STATUS = {} # type: Dict[str, Union(type)] + + def __init__(self, parent=None, choice=None, value=7, values=[7]): + super(PatternFlowRSVPPathSenderTspecIntServOverallLength, self).__init__() + self._parent = parent + self._set_property("value", value) + self._set_property("values", values) + if ( + "choice" in self._DEFAULTS + and choice is None + and self._DEFAULTS["choice"] in self._TYPES + ): + getattr(self, self._DEFAULTS["choice"]) + else: + self._set_property("choice", choice) + + def set(self, value=None, values=None): + for property_name, property_value in locals().items(): + if property_name != "self" and property_value is not None: + self._set_property(property_name, property_value) + + @property + def increment(self): + # type: () -> PatternFlowRSVPPathSenderTspecIntServOverallLengthCounter + """Factory property that returns an instance of the PatternFlowRSVPPathSenderTspecIntServOverallLengthCounter class + + integer counter pattern + + Returns: PatternFlowRSVPPathSenderTspecIntServOverallLengthCounter + """ + return self._get_property( + "increment", + PatternFlowRSVPPathSenderTspecIntServOverallLengthCounter, + self, + "increment", + ) + + @property + def decrement(self): + # type: () -> PatternFlowRSVPPathSenderTspecIntServOverallLengthCounter + """Factory property that returns an instance of the PatternFlowRSVPPathSenderTspecIntServOverallLengthCounter class + + integer counter pattern + + Returns: PatternFlowRSVPPathSenderTspecIntServOverallLengthCounter + """ + return self._get_property( + "decrement", + PatternFlowRSVPPathSenderTspecIntServOverallLengthCounter, + self, + "decrement", + ) + + @property + def choice(self): + # type: () -> Union[Literal["decrement"], Literal["increment"], Literal["value"], Literal["values"]] + """choice getter + + TBD + + Returns: Union[Literal["decrement"], Literal["increment"], Literal["value"], Literal["values"]] + """ + return self._get_property("choice") + + @choice.setter + def choice(self, value): + """choice setter + + TBD + + value: Union[Literal["decrement"], Literal["increment"], Literal["value"], Literal["values"]] + """ + self._set_property("choice", value) + + @property + def value(self): + # type: () -> int + """value getter + + TBD + + Returns: int + """ + return self._get_property("value") + + @value.setter + def value(self, value): + """value setter + + TBD + + value: int + """ + self._set_property("value", value, "value") + + @property + def values(self): + # type: () -> List[int] + """values getter + + TBD + + Returns: List[int] + """ + return self._get_property("values") + + @values.setter + def values(self, value): + """values setter + + TBD + + value: List[int] + """ + self._set_property("values", value, "values") + + +class PatternFlowRSVPPathSenderTspecIntServOverallLengthCounter(OpenApiObject): + __slots__ = "_parent" + + _TYPES = { + "start": { + "type": int, + "format": "uint32", + "maximum": 65535, + }, + "step": { + "type": int, + "format": "uint32", + "maximum": 65535, + }, + "count": { + "type": int, + "format": "uint32", + "maximum": 65535, + }, + } # type: Dict[str, str] + + _REQUIRED = () # type: tuple(str) + + _DEFAULTS = { + "start": 7, + "step": 1, + "count": 1, + } # type: Dict[str, Union(type)] + + _STATUS = {} # type: Dict[str, Union(type)] + + def __init__(self, parent=None, start=7, step=1, count=1): + super( + PatternFlowRSVPPathSenderTspecIntServOverallLengthCounter, self + ).__init__() + self._parent = parent + self._set_property("start", start) + self._set_property("step", step) + self._set_property("count", count) + + def set(self, start=None, step=None, count=None): + for property_name, property_value in locals().items(): + if property_name != "self" and property_value is not None: + self._set_property(property_name, property_value) + + @property + def start(self): + # type: () -> int + """start getter + + TBD + + Returns: int + """ + return self._get_property("start") + + @start.setter + def start(self, value): + """start setter + + TBD + + value: int + """ + self._set_property("start", value) + + @property + def step(self): + # type: () -> int + """step getter + + TBD + + Returns: int + """ + return self._get_property("step") + + @step.setter + def step(self, value): + """step setter + + TBD + + value: int + """ + self._set_property("step", value) + + @property + def count(self): + # type: () -> int + """count getter + + TBD + + Returns: int + """ + return self._get_property("count") + + @count.setter + def count(self, value): + """count setter + + TBD + + value: int + """ + self._set_property("count", value) + + +class PatternFlowRSVPPathSenderTspecIntServServiceHeader(OpenApiObject): + __slots__ = ("_parent", "_choice") + + _TYPES = { + "choice": { + "type": str, + "enum": [ + "value", + "values", + "increment", + "decrement", + ], + }, + "value": { + "type": int, + "format": "uint32", + "maximum": 255, + }, + "values": { + "type": list, + "itemtype": int, + "itemformat": "uint32", + "maximum": 255, + }, + "increment": { + "type": "PatternFlowRSVPPathSenderTspecIntServServiceHeaderCounter" + }, + "decrement": { + "type": "PatternFlowRSVPPathSenderTspecIntServServiceHeaderCounter" + }, + } # type: Dict[str, str] + + _REQUIRED = () # type: tuple(str) + + _DEFAULTS = { + "choice": "value", + "value": 1, + "values": [1], + } # type: Dict[str, Union(type)] + + VALUE = "value" # type: str + VALUES = "values" # type: str + INCREMENT = "increment" # type: str + DECREMENT = "decrement" # type: str + + _STATUS = {} # type: Dict[str, Union(type)] + + def __init__(self, parent=None, choice=None, value=1, values=[1]): + super(PatternFlowRSVPPathSenderTspecIntServServiceHeader, self).__init__() + self._parent = parent + self._set_property("value", value) + self._set_property("values", values) + if ( + "choice" in self._DEFAULTS + and choice is None + and self._DEFAULTS["choice"] in self._TYPES + ): + getattr(self, self._DEFAULTS["choice"]) + else: + self._set_property("choice", choice) + + def set(self, value=None, values=None): + for property_name, property_value in locals().items(): + if property_name != "self" and property_value is not None: + self._set_property(property_name, property_value) + + @property + def increment(self): + # type: () -> PatternFlowRSVPPathSenderTspecIntServServiceHeaderCounter + """Factory property that returns an instance of the PatternFlowRSVPPathSenderTspecIntServServiceHeaderCounter class + + integer counter pattern + + Returns: PatternFlowRSVPPathSenderTspecIntServServiceHeaderCounter + """ + return self._get_property( + "increment", + PatternFlowRSVPPathSenderTspecIntServServiceHeaderCounter, + self, + "increment", + ) + + @property + def decrement(self): + # type: () -> PatternFlowRSVPPathSenderTspecIntServServiceHeaderCounter + """Factory property that returns an instance of the PatternFlowRSVPPathSenderTspecIntServServiceHeaderCounter class + + integer counter pattern + + Returns: PatternFlowRSVPPathSenderTspecIntServServiceHeaderCounter + """ + return self._get_property( + "decrement", + PatternFlowRSVPPathSenderTspecIntServServiceHeaderCounter, + self, + "decrement", + ) + + @property + def choice(self): + # type: () -> Union[Literal["decrement"], Literal["increment"], Literal["value"], Literal["values"]] + """choice getter + + TBD + + Returns: Union[Literal["decrement"], Literal["increment"], Literal["value"], Literal["values"]] + """ + return self._get_property("choice") + + @choice.setter + def choice(self, value): + """choice setter + + TBD + + value: Union[Literal["decrement"], Literal["increment"], Literal["value"], Literal["values"]] + """ + self._set_property("choice", value) + + @property + def value(self): + # type: () -> int + """value getter + + TBD + + Returns: int + """ + return self._get_property("value") + + @value.setter + def value(self, value): + """value setter + + TBD + + value: int + """ + self._set_property("value", value, "value") + + @property + def values(self): + # type: () -> List[int] + """values getter + + TBD + + Returns: List[int] + """ + return self._get_property("values") + + @values.setter + def values(self, value): + """values setter + + TBD + + value: List[int] + """ + self._set_property("values", value, "values") + + +class PatternFlowRSVPPathSenderTspecIntServServiceHeaderCounter(OpenApiObject): + __slots__ = "_parent" + + _TYPES = { + "start": { + "type": int, + "format": "uint32", + "maximum": 255, + }, + "step": { + "type": int, + "format": "uint32", + "maximum": 255, + }, + "count": { + "type": int, + "format": "uint32", + "maximum": 255, + }, + } # type: Dict[str, str] + + _REQUIRED = () # type: tuple(str) + + _DEFAULTS = { + "start": 1, + "step": 1, + "count": 1, + } # type: Dict[str, Union(type)] + + _STATUS = {} # type: Dict[str, Union(type)] + + def __init__(self, parent=None, start=1, step=1, count=1): + super( + PatternFlowRSVPPathSenderTspecIntServServiceHeaderCounter, self + ).__init__() + self._parent = parent + self._set_property("start", start) + self._set_property("step", step) + self._set_property("count", count) + + def set(self, start=None, step=None, count=None): + for property_name, property_value in locals().items(): + if property_name != "self" and property_value is not None: + self._set_property(property_name, property_value) + + @property + def start(self): + # type: () -> int + """start getter + + TBD + + Returns: int + """ + return self._get_property("start") + + @start.setter + def start(self, value): + """start setter + + TBD + + value: int + """ + self._set_property("start", value) + + @property + def step(self): + # type: () -> int + """step getter + + TBD + + Returns: int + """ + return self._get_property("step") + + @step.setter + def step(self, value): + """step setter + + TBD + + value: int + """ + self._set_property("step", value) + + @property + def count(self): + # type: () -> int + """count getter + + TBD + + Returns: int + """ + return self._get_property("count") + + @count.setter + def count(self, value): + """count setter + + TBD + + value: int + """ + self._set_property("count", value) + + +class PatternFlowRSVPPathSenderTspecIntServZeroBit(OpenApiObject): + __slots__ = ("_parent", "_choice") + + _TYPES = { + "choice": { + "type": str, + "enum": [ + "value", + "values", + "increment", + "decrement", + ], + }, + "value": { + "type": int, + "format": "uint32", + "maximum": 1, + }, + "values": { + "type": list, + "itemtype": int, + "itemformat": "uint32", + "maximum": 1, + }, + "increment": {"type": "PatternFlowRSVPPathSenderTspecIntServZeroBitCounter"}, + "decrement": {"type": "PatternFlowRSVPPathSenderTspecIntServZeroBitCounter"}, + } # type: Dict[str, str] + + _REQUIRED = () # type: tuple(str) + + _DEFAULTS = { + "choice": "value", + "value": 0, + "values": [0], + } # type: Dict[str, Union(type)] + + VALUE = "value" # type: str + VALUES = "values" # type: str + INCREMENT = "increment" # type: str + DECREMENT = "decrement" # type: str + + _STATUS = {} # type: Dict[str, Union(type)] + + def __init__(self, parent=None, choice=None, value=0, values=[0]): + super(PatternFlowRSVPPathSenderTspecIntServZeroBit, self).__init__() + self._parent = parent + self._set_property("value", value) + self._set_property("values", values) + if ( + "choice" in self._DEFAULTS + and choice is None + and self._DEFAULTS["choice"] in self._TYPES + ): + getattr(self, self._DEFAULTS["choice"]) + else: + self._set_property("choice", choice) + + def set(self, value=None, values=None): + for property_name, property_value in locals().items(): + if property_name != "self" and property_value is not None: + self._set_property(property_name, property_value) + + @property + def increment(self): + # type: () -> PatternFlowRSVPPathSenderTspecIntServZeroBitCounter + """Factory property that returns an instance of the PatternFlowRSVPPathSenderTspecIntServZeroBitCounter class + + integer counter pattern + + Returns: PatternFlowRSVPPathSenderTspecIntServZeroBitCounter + """ + return self._get_property( + "increment", + PatternFlowRSVPPathSenderTspecIntServZeroBitCounter, + self, + "increment", + ) + + @property + def decrement(self): + # type: () -> PatternFlowRSVPPathSenderTspecIntServZeroBitCounter + """Factory property that returns an instance of the PatternFlowRSVPPathSenderTspecIntServZeroBitCounter class + + integer counter pattern + + Returns: PatternFlowRSVPPathSenderTspecIntServZeroBitCounter + """ + return self._get_property( + "decrement", + PatternFlowRSVPPathSenderTspecIntServZeroBitCounter, + self, + "decrement", + ) + + @property + def choice(self): + # type: () -> Union[Literal["decrement"], Literal["increment"], Literal["value"], Literal["values"]] + """choice getter + + TBD + + Returns: Union[Literal["decrement"], Literal["increment"], Literal["value"], Literal["values"]] + """ + return self._get_property("choice") + + @choice.setter + def choice(self, value): + """choice setter + + TBD + + value: Union[Literal["decrement"], Literal["increment"], Literal["value"], Literal["values"]] + """ + self._set_property("choice", value) + + @property + def value(self): + # type: () -> int + """value getter + + TBD + + Returns: int + """ + return self._get_property("value") + + @value.setter + def value(self, value): + """value setter + + TBD + + value: int + """ + self._set_property("value", value, "value") + + @property + def values(self): + # type: () -> List[int] + """values getter + + TBD + + Returns: List[int] + """ + return self._get_property("values") + + @values.setter + def values(self, value): + """values setter + + TBD + + value: List[int] + """ + self._set_property("values", value, "values") + + +class PatternFlowRSVPPathSenderTspecIntServZeroBitCounter(OpenApiObject): + __slots__ = "_parent" + + _TYPES = { + "start": { + "type": int, + "format": "uint32", + "maximum": 1, + }, + "step": { + "type": int, + "format": "uint32", + "maximum": 1, + }, + "count": { + "type": int, + "format": "uint32", + "maximum": 1, + }, + } # type: Dict[str, str] + + _REQUIRED = () # type: tuple(str) + + _DEFAULTS = { + "start": 0, + "step": 1, + "count": 1, + } # type: Dict[str, Union(type)] + + _STATUS = {} # type: Dict[str, Union(type)] + + def __init__(self, parent=None, start=0, step=1, count=1): + super(PatternFlowRSVPPathSenderTspecIntServZeroBitCounter, self).__init__() + self._parent = parent + self._set_property("start", start) + self._set_property("step", step) + self._set_property("count", count) + + def set(self, start=None, step=None, count=None): + for property_name, property_value in locals().items(): + if property_name != "self" and property_value is not None: + self._set_property(property_name, property_value) + + @property + def start(self): + # type: () -> int + """start getter + + TBD + + Returns: int + """ + return self._get_property("start") + + @start.setter + def start(self, value): + """start setter + + TBD + + value: int + """ + self._set_property("start", value) + + @property + def step(self): + # type: () -> int + """step getter + + TBD + + Returns: int + """ + return self._get_property("step") + + @step.setter + def step(self, value): + """step setter + + TBD + + value: int + """ + self._set_property("step", value) + + @property + def count(self): + # type: () -> int + """count getter + + TBD + + Returns: int + """ + return self._get_property("count") + + @count.setter + def count(self, value): + """count setter + + TBD + + value: int + """ + self._set_property("count", value) + + +class PatternFlowRSVPPathSenderTspecIntServReserved2(OpenApiObject): + __slots__ = ("_parent", "_choice") + + _TYPES = { + "choice": { + "type": str, + "enum": [ + "value", + "values", + "increment", + "decrement", + ], + }, + "value": { + "type": int, + "format": "uint32", + "maximum": 127, + }, + "values": { + "type": list, + "itemtype": int, + "itemformat": "uint32", + "maximum": 127, + }, + "increment": {"type": "PatternFlowRSVPPathSenderTspecIntServReserved2Counter"}, + "decrement": {"type": "PatternFlowRSVPPathSenderTspecIntServReserved2Counter"}, + } # type: Dict[str, str] + + _REQUIRED = () # type: tuple(str) + + _DEFAULTS = { + "choice": "value", + "value": 0, + "values": [0], + } # type: Dict[str, Union(type)] + + VALUE = "value" # type: str + VALUES = "values" # type: str + INCREMENT = "increment" # type: str + DECREMENT = "decrement" # type: str + + _STATUS = {} # type: Dict[str, Union(type)] + + def __init__(self, parent=None, choice=None, value=0, values=[0]): + super(PatternFlowRSVPPathSenderTspecIntServReserved2, self).__init__() + self._parent = parent + self._set_property("value", value) + self._set_property("values", values) + if ( + "choice" in self._DEFAULTS + and choice is None + and self._DEFAULTS["choice"] in self._TYPES + ): + getattr(self, self._DEFAULTS["choice"]) + else: + self._set_property("choice", choice) + + def set(self, value=None, values=None): + for property_name, property_value in locals().items(): + if property_name != "self" and property_value is not None: + self._set_property(property_name, property_value) + + @property + def increment(self): + # type: () -> PatternFlowRSVPPathSenderTspecIntServReserved2Counter + """Factory property that returns an instance of the PatternFlowRSVPPathSenderTspecIntServReserved2Counter class + + integer counter pattern + + Returns: PatternFlowRSVPPathSenderTspecIntServReserved2Counter + """ + return self._get_property( + "increment", + PatternFlowRSVPPathSenderTspecIntServReserved2Counter, + self, + "increment", + ) + + @property + def decrement(self): + # type: () -> PatternFlowRSVPPathSenderTspecIntServReserved2Counter + """Factory property that returns an instance of the PatternFlowRSVPPathSenderTspecIntServReserved2Counter class + + integer counter pattern + + Returns: PatternFlowRSVPPathSenderTspecIntServReserved2Counter + """ + return self._get_property( + "decrement", + PatternFlowRSVPPathSenderTspecIntServReserved2Counter, + self, + "decrement", + ) + + @property + def choice(self): + # type: () -> Union[Literal["decrement"], Literal["increment"], Literal["value"], Literal["values"]] + """choice getter + + TBD + + Returns: Union[Literal["decrement"], Literal["increment"], Literal["value"], Literal["values"]] + """ + return self._get_property("choice") + + @choice.setter + def choice(self, value): + """choice setter + + TBD + + value: Union[Literal["decrement"], Literal["increment"], Literal["value"], Literal["values"]] + """ + self._set_property("choice", value) + + @property + def value(self): + # type: () -> int + """value getter + + TBD + + Returns: int + """ + return self._get_property("value") + + @value.setter + def value(self, value): + """value setter + + TBD + + value: int + """ + self._set_property("value", value, "value") + + @property + def values(self): + # type: () -> List[int] + """values getter + + TBD + + Returns: List[int] + """ + return self._get_property("values") + + @values.setter + def values(self, value): + """values setter + + TBD + + value: List[int] + """ + self._set_property("values", value, "values") + + +class PatternFlowRSVPPathSenderTspecIntServReserved2Counter(OpenApiObject): + __slots__ = "_parent" + + _TYPES = { + "start": { + "type": int, + "format": "uint32", + "maximum": 127, + }, + "step": { + "type": int, + "format": "uint32", + "maximum": 127, + }, + "count": { + "type": int, + "format": "uint32", + "maximum": 127, + }, + } # type: Dict[str, str] + + _REQUIRED = () # type: tuple(str) + + _DEFAULTS = { + "start": 0, + "step": 1, + "count": 1, + } # type: Dict[str, Union(type)] + + _STATUS = {} # type: Dict[str, Union(type)] + + def __init__(self, parent=None, start=0, step=1, count=1): + super(PatternFlowRSVPPathSenderTspecIntServReserved2Counter, self).__init__() + self._parent = parent + self._set_property("start", start) + self._set_property("step", step) + self._set_property("count", count) + + def set(self, start=None, step=None, count=None): + for property_name, property_value in locals().items(): + if property_name != "self" and property_value is not None: + self._set_property(property_name, property_value) + + @property + def start(self): + # type: () -> int + """start getter + + TBD + + Returns: int + """ + return self._get_property("start") + + @start.setter + def start(self, value): + """start setter + + TBD + + value: int + """ + self._set_property("start", value) + + @property + def step(self): + # type: () -> int + """step getter + + TBD + + Returns: int + """ + return self._get_property("step") + + @step.setter + def step(self, value): + """step setter + + TBD + + value: int + """ + self._set_property("step", value) + + @property + def count(self): + # type: () -> int + """count getter + + TBD + + Returns: int + """ + return self._get_property("count") + + @count.setter + def count(self, value): + """count setter + + TBD + + value: int + """ + self._set_property("count", value) + + +class PatternFlowRSVPPathSenderTspecIntServLengthOfServiceData(OpenApiObject): + __slots__ = ("_parent", "_choice") + + _TYPES = { + "choice": { + "type": str, + "enum": [ + "value", + "values", + "increment", + "decrement", + ], + }, + "value": { + "type": int, + "format": "uint32", + "maximum": 65535, + }, + "values": { + "type": list, + "itemtype": int, + "itemformat": "uint32", + "maximum": 65535, + }, + "increment": { + "type": "PatternFlowRSVPPathSenderTspecIntServLengthOfServiceDataCounter" + }, + "decrement": { + "type": "PatternFlowRSVPPathSenderTspecIntServLengthOfServiceDataCounter" + }, + } # type: Dict[str, str] + + _REQUIRED = () # type: tuple(str) + + _DEFAULTS = { + "choice": "value", + "value": 6, + "values": [6], + } # type: Dict[str, Union(type)] + + VALUE = "value" # type: str + VALUES = "values" # type: str + INCREMENT = "increment" # type: str + DECREMENT = "decrement" # type: str + + _STATUS = {} # type: Dict[str, Union(type)] + + def __init__(self, parent=None, choice=None, value=6, values=[6]): + super(PatternFlowRSVPPathSenderTspecIntServLengthOfServiceData, self).__init__() + self._parent = parent + self._set_property("value", value) + self._set_property("values", values) + if ( + "choice" in self._DEFAULTS + and choice is None + and self._DEFAULTS["choice"] in self._TYPES + ): + getattr(self, self._DEFAULTS["choice"]) + else: + self._set_property("choice", choice) + + def set(self, value=None, values=None): + for property_name, property_value in locals().items(): + if property_name != "self" and property_value is not None: + self._set_property(property_name, property_value) + + @property + def increment(self): + # type: () -> PatternFlowRSVPPathSenderTspecIntServLengthOfServiceDataCounter + """Factory property that returns an instance of the PatternFlowRSVPPathSenderTspecIntServLengthOfServiceDataCounter class + + integer counter pattern + + Returns: PatternFlowRSVPPathSenderTspecIntServLengthOfServiceDataCounter + """ + return self._get_property( + "increment", + PatternFlowRSVPPathSenderTspecIntServLengthOfServiceDataCounter, + self, + "increment", + ) + + @property + def decrement(self): + # type: () -> PatternFlowRSVPPathSenderTspecIntServLengthOfServiceDataCounter + """Factory property that returns an instance of the PatternFlowRSVPPathSenderTspecIntServLengthOfServiceDataCounter class + + integer counter pattern + + Returns: PatternFlowRSVPPathSenderTspecIntServLengthOfServiceDataCounter + """ + return self._get_property( + "decrement", + PatternFlowRSVPPathSenderTspecIntServLengthOfServiceDataCounter, + self, + "decrement", + ) + + @property + def choice(self): + # type: () -> Union[Literal["decrement"], Literal["increment"], Literal["value"], Literal["values"]] + """choice getter + + TBD + + Returns: Union[Literal["decrement"], Literal["increment"], Literal["value"], Literal["values"]] + """ + return self._get_property("choice") + + @choice.setter + def choice(self, value): + """choice setter + + TBD + + value: Union[Literal["decrement"], Literal["increment"], Literal["value"], Literal["values"]] + """ + self._set_property("choice", value) + + @property + def value(self): + # type: () -> int + """value getter + + TBD + + Returns: int + """ + return self._get_property("value") + + @value.setter + def value(self, value): + """value setter + + TBD + + value: int + """ + self._set_property("value", value, "value") + + @property + def values(self): + # type: () -> List[int] + """values getter + + TBD + + Returns: List[int] + """ + return self._get_property("values") + + @values.setter + def values(self, value): + """values setter + + TBD + + value: List[int] + """ + self._set_property("values", value, "values") + + +class PatternFlowRSVPPathSenderTspecIntServLengthOfServiceDataCounter(OpenApiObject): + __slots__ = "_parent" + + _TYPES = { + "start": { + "type": int, + "format": "uint32", + "maximum": 65535, + }, + "step": { + "type": int, + "format": "uint32", + "maximum": 65535, + }, + "count": { + "type": int, + "format": "uint32", + "maximum": 65535, + }, + } # type: Dict[str, str] + + _REQUIRED = () # type: tuple(str) + + _DEFAULTS = { + "start": 6, + "step": 1, + "count": 1, + } # type: Dict[str, Union(type)] + + _STATUS = {} # type: Dict[str, Union(type)] + + def __init__(self, parent=None, start=6, step=1, count=1): + super( + PatternFlowRSVPPathSenderTspecIntServLengthOfServiceDataCounter, self + ).__init__() + self._parent = parent + self._set_property("start", start) + self._set_property("step", step) + self._set_property("count", count) + + def set(self, start=None, step=None, count=None): + for property_name, property_value in locals().items(): + if property_name != "self" and property_value is not None: + self._set_property(property_name, property_value) + + @property + def start(self): + # type: () -> int + """start getter + + TBD + + Returns: int + """ + return self._get_property("start") + + @start.setter + def start(self, value): + """start setter + + TBD + + value: int + """ + self._set_property("start", value) + + @property + def step(self): + # type: () -> int + """step getter + + TBD + + Returns: int + """ + return self._get_property("step") + + @step.setter + def step(self, value): + """step setter + + TBD + + value: int + """ + self._set_property("step", value) + + @property + def count(self): + # type: () -> int + """count getter + + TBD + + Returns: int + """ + return self._get_property("count") + + @count.setter + def count(self, value): + """count setter + + TBD + + value: int + """ + self._set_property("count", value) + + +class PatternFlowRSVPPathSenderTspecIntServParameterIdTokenBucketTspec(OpenApiObject): + __slots__ = ("_parent", "_choice") + + _TYPES = { + "choice": { + "type": str, + "enum": [ + "value", + "values", + "increment", + "decrement", + ], + }, + "value": { + "type": int, + "format": "uint32", + "maximum": 255, + }, + "values": { + "type": list, + "itemtype": int, + "itemformat": "uint32", + "maximum": 255, + }, + "increment": { + "type": "PatternFlowRSVPPathSenderTspecIntServParameterIdTokenBucketTspecCounter" + }, + "decrement": { + "type": "PatternFlowRSVPPathSenderTspecIntServParameterIdTokenBucketTspecCounter" + }, + } # type: Dict[str, str] + + _REQUIRED = () # type: tuple(str) + + _DEFAULTS = { + "choice": "value", + "value": 127, + "values": [127], + } # type: Dict[str, Union(type)] + + VALUE = "value" # type: str + VALUES = "values" # type: str + INCREMENT = "increment" # type: str + DECREMENT = "decrement" # type: str + + _STATUS = {} # type: Dict[str, Union(type)] + + def __init__(self, parent=None, choice=None, value=127, values=[127]): + super( + PatternFlowRSVPPathSenderTspecIntServParameterIdTokenBucketTspec, self + ).__init__() + self._parent = parent + self._set_property("value", value) + self._set_property("values", values) + if ( + "choice" in self._DEFAULTS + and choice is None + and self._DEFAULTS["choice"] in self._TYPES + ): + getattr(self, self._DEFAULTS["choice"]) + else: + self._set_property("choice", choice) + + def set(self, value=None, values=None): + for property_name, property_value in locals().items(): + if property_name != "self" and property_value is not None: + self._set_property(property_name, property_value) + + @property + def increment(self): + # type: () -> PatternFlowRSVPPathSenderTspecIntServParameterIdTokenBucketTspecCounter + """Factory property that returns an instance of the PatternFlowRSVPPathSenderTspecIntServParameterIdTokenBucketTspecCounter class + + integer counter pattern + + Returns: PatternFlowRSVPPathSenderTspecIntServParameterIdTokenBucketTspecCounter + """ + return self._get_property( + "increment", + PatternFlowRSVPPathSenderTspecIntServParameterIdTokenBucketTspecCounter, + self, + "increment", + ) + + @property + def decrement(self): + # type: () -> PatternFlowRSVPPathSenderTspecIntServParameterIdTokenBucketTspecCounter + """Factory property that returns an instance of the PatternFlowRSVPPathSenderTspecIntServParameterIdTokenBucketTspecCounter class + + integer counter pattern + + Returns: PatternFlowRSVPPathSenderTspecIntServParameterIdTokenBucketTspecCounter + """ + return self._get_property( + "decrement", + PatternFlowRSVPPathSenderTspecIntServParameterIdTokenBucketTspecCounter, + self, + "decrement", + ) + + @property + def choice(self): + # type: () -> Union[Literal["decrement"], Literal["increment"], Literal["value"], Literal["values"]] + """choice getter + + TBD + + Returns: Union[Literal["decrement"], Literal["increment"], Literal["value"], Literal["values"]] + """ + return self._get_property("choice") + + @choice.setter + def choice(self, value): + """choice setter + + TBD + + value: Union[Literal["decrement"], Literal["increment"], Literal["value"], Literal["values"]] + """ + self._set_property("choice", value) + + @property + def value(self): + # type: () -> int + """value getter + + TBD + + Returns: int + """ + return self._get_property("value") + + @value.setter + def value(self, value): + """value setter + + TBD + + value: int + """ + self._set_property("value", value, "value") + + @property + def values(self): + # type: () -> List[int] + """values getter + + TBD + + Returns: List[int] + """ + return self._get_property("values") + + @values.setter + def values(self, value): + """values setter + + TBD + + value: List[int] + """ + self._set_property("values", value, "values") + + +class PatternFlowRSVPPathSenderTspecIntServParameterIdTokenBucketTspecCounter( + OpenApiObject +): + __slots__ = "_parent" + + _TYPES = { + "start": { + "type": int, + "format": "uint32", + "maximum": 255, + }, + "step": { + "type": int, + "format": "uint32", + "maximum": 255, + }, + "count": { + "type": int, + "format": "uint32", + "maximum": 255, + }, + } # type: Dict[str, str] + + _REQUIRED = () # type: tuple(str) + + _DEFAULTS = { + "start": 127, + "step": 1, + "count": 1, + } # type: Dict[str, Union(type)] + + _STATUS = {} # type: Dict[str, Union(type)] + + def __init__(self, parent=None, start=127, step=1, count=1): + super( + PatternFlowRSVPPathSenderTspecIntServParameterIdTokenBucketTspecCounter, + self, + ).__init__() + self._parent = parent + self._set_property("start", start) + self._set_property("step", step) + self._set_property("count", count) + + def set(self, start=None, step=None, count=None): + for property_name, property_value in locals().items(): + if property_name != "self" and property_value is not None: + self._set_property(property_name, property_value) + + @property + def start(self): + # type: () -> int + """start getter + + TBD + + Returns: int + """ + return self._get_property("start") + + @start.setter + def start(self, value): + """start setter + + TBD + + value: int + """ + self._set_property("start", value) + + @property + def step(self): + # type: () -> int + """step getter + + TBD + + Returns: int + """ + return self._get_property("step") + + @step.setter + def step(self, value): + """step setter + + TBD + + value: int + """ + self._set_property("step", value) + + @property + def count(self): + # type: () -> int + """count getter + + TBD + + Returns: int + """ + return self._get_property("count") + + @count.setter + def count(self, value): + """count setter + + TBD + + value: int + """ + self._set_property("count", value) + + +class PatternFlowRSVPPathSenderTspecIntServParameter127Flag(OpenApiObject): + __slots__ = ("_parent", "_choice") + + _TYPES = { + "choice": { + "type": str, + "enum": [ + "value", + "values", + "increment", + "decrement", + ], + }, + "value": { + "type": int, + "format": "uint32", + "maximum": 255, + }, + "values": { + "type": list, + "itemtype": int, + "itemformat": "uint32", + "maximum": 255, + }, + "increment": { + "type": "PatternFlowRSVPPathSenderTspecIntServParameter127FlagCounter" + }, + "decrement": { + "type": "PatternFlowRSVPPathSenderTspecIntServParameter127FlagCounter" + }, + } # type: Dict[str, str] + + _REQUIRED = () # type: tuple(str) + + _DEFAULTS = { + "choice": "value", + "value": 0, + "values": [0], + } # type: Dict[str, Union(type)] + + VALUE = "value" # type: str + VALUES = "values" # type: str + INCREMENT = "increment" # type: str + DECREMENT = "decrement" # type: str + + _STATUS = {} # type: Dict[str, Union(type)] + + def __init__(self, parent=None, choice=None, value=0, values=[0]): + super(PatternFlowRSVPPathSenderTspecIntServParameter127Flag, self).__init__() + self._parent = parent + self._set_property("value", value) + self._set_property("values", values) + if ( + "choice" in self._DEFAULTS + and choice is None + and self._DEFAULTS["choice"] in self._TYPES + ): + getattr(self, self._DEFAULTS["choice"]) + else: + self._set_property("choice", choice) + + def set(self, value=None, values=None): + for property_name, property_value in locals().items(): + if property_name != "self" and property_value is not None: + self._set_property(property_name, property_value) + + @property + def increment(self): + # type: () -> PatternFlowRSVPPathSenderTspecIntServParameter127FlagCounter + """Factory property that returns an instance of the PatternFlowRSVPPathSenderTspecIntServParameter127FlagCounter class + + integer counter pattern + + Returns: PatternFlowRSVPPathSenderTspecIntServParameter127FlagCounter + """ + return self._get_property( + "increment", + PatternFlowRSVPPathSenderTspecIntServParameter127FlagCounter, + self, + "increment", + ) + + @property + def decrement(self): + # type: () -> PatternFlowRSVPPathSenderTspecIntServParameter127FlagCounter + """Factory property that returns an instance of the PatternFlowRSVPPathSenderTspecIntServParameter127FlagCounter class + + integer counter pattern + + Returns: PatternFlowRSVPPathSenderTspecIntServParameter127FlagCounter + """ + return self._get_property( + "decrement", + PatternFlowRSVPPathSenderTspecIntServParameter127FlagCounter, + self, + "decrement", + ) + + @property + def choice(self): + # type: () -> Union[Literal["decrement"], Literal["increment"], Literal["value"], Literal["values"]] + """choice getter + + TBD + + Returns: Union[Literal["decrement"], Literal["increment"], Literal["value"], Literal["values"]] + """ + return self._get_property("choice") + + @choice.setter + def choice(self, value): + """choice setter + + TBD + + value: Union[Literal["decrement"], Literal["increment"], Literal["value"], Literal["values"]] + """ + self._set_property("choice", value) + + @property + def value(self): + # type: () -> int + """value getter + + TBD + + Returns: int + """ + return self._get_property("value") + + @value.setter + def value(self, value): + """value setter + + TBD + + value: int + """ + self._set_property("value", value, "value") + + @property + def values(self): + # type: () -> List[int] + """values getter + + TBD + + Returns: List[int] + """ + return self._get_property("values") + + @values.setter + def values(self, value): + """values setter + + TBD + + value: List[int] + """ + self._set_property("values", value, "values") + + +class PatternFlowRSVPPathSenderTspecIntServParameter127FlagCounter(OpenApiObject): + __slots__ = "_parent" + + _TYPES = { + "start": { + "type": int, + "format": "uint32", + "maximum": 255, + }, + "step": { + "type": int, + "format": "uint32", + "maximum": 255, + }, + "count": { + "type": int, + "format": "uint32", + "maximum": 255, + }, + } # type: Dict[str, str] + + _REQUIRED = () # type: tuple(str) + + _DEFAULTS = { + "start": 0, + "step": 1, + "count": 1, + } # type: Dict[str, Union(type)] + + _STATUS = {} # type: Dict[str, Union(type)] + + def __init__(self, parent=None, start=0, step=1, count=1): + super( + PatternFlowRSVPPathSenderTspecIntServParameter127FlagCounter, self + ).__init__() + self._parent = parent + self._set_property("start", start) + self._set_property("step", step) + self._set_property("count", count) + + def set(self, start=None, step=None, count=None): + for property_name, property_value in locals().items(): + if property_name != "self" and property_value is not None: + self._set_property(property_name, property_value) + + @property + def start(self): + # type: () -> int + """start getter + + TBD + + Returns: int + """ + return self._get_property("start") + + @start.setter + def start(self, value): + """start setter + + TBD + + value: int + """ + self._set_property("start", value) + + @property + def step(self): + # type: () -> int + """step getter + + TBD + + Returns: int + """ + return self._get_property("step") + + @step.setter + def step(self, value): + """step setter + + TBD + + value: int + """ + self._set_property("step", value) + + @property + def count(self): + # type: () -> int + """count getter + + TBD + + Returns: int + """ + return self._get_property("count") + + @count.setter + def count(self, value): + """count setter + + TBD + + value: int + """ + self._set_property("count", value) + + +class PatternFlowRSVPPathSenderTspecIntServParameter127Length(OpenApiObject): + __slots__ = ("_parent", "_choice") + + _TYPES = { + "choice": { + "type": str, + "enum": [ + "value", + "values", + "increment", + "decrement", + ], + }, + "value": { + "type": int, + "format": "uint32", + "maximum": 65535, + }, + "values": { + "type": list, + "itemtype": int, + "itemformat": "uint32", + "maximum": 65535, + }, + "increment": { + "type": "PatternFlowRSVPPathSenderTspecIntServParameter127LengthCounter" + }, + "decrement": { + "type": "PatternFlowRSVPPathSenderTspecIntServParameter127LengthCounter" + }, + } # type: Dict[str, str] + + _REQUIRED = () # type: tuple(str) + + _DEFAULTS = { + "choice": "value", + "value": 0, + "values": [0], + } # type: Dict[str, Union(type)] + + VALUE = "value" # type: str + VALUES = "values" # type: str + INCREMENT = "increment" # type: str + DECREMENT = "decrement" # type: str + + _STATUS = {} # type: Dict[str, Union(type)] + + def __init__(self, parent=None, choice=None, value=0, values=[0]): + super(PatternFlowRSVPPathSenderTspecIntServParameter127Length, self).__init__() + self._parent = parent + self._set_property("value", value) + self._set_property("values", values) + if ( + "choice" in self._DEFAULTS + and choice is None + and self._DEFAULTS["choice"] in self._TYPES + ): + getattr(self, self._DEFAULTS["choice"]) + else: + self._set_property("choice", choice) + + def set(self, value=None, values=None): + for property_name, property_value in locals().items(): + if property_name != "self" and property_value is not None: + self._set_property(property_name, property_value) + + @property + def increment(self): + # type: () -> PatternFlowRSVPPathSenderTspecIntServParameter127LengthCounter + """Factory property that returns an instance of the PatternFlowRSVPPathSenderTspecIntServParameter127LengthCounter class + + integer counter pattern + + Returns: PatternFlowRSVPPathSenderTspecIntServParameter127LengthCounter + """ + return self._get_property( + "increment", + PatternFlowRSVPPathSenderTspecIntServParameter127LengthCounter, + self, + "increment", + ) + + @property + def decrement(self): + # type: () -> PatternFlowRSVPPathSenderTspecIntServParameter127LengthCounter + """Factory property that returns an instance of the PatternFlowRSVPPathSenderTspecIntServParameter127LengthCounter class + + integer counter pattern + + Returns: PatternFlowRSVPPathSenderTspecIntServParameter127LengthCounter + """ + return self._get_property( + "decrement", + PatternFlowRSVPPathSenderTspecIntServParameter127LengthCounter, + self, + "decrement", + ) + + @property + def choice(self): + # type: () -> Union[Literal["decrement"], Literal["increment"], Literal["value"], Literal["values"]] + """choice getter + + TBD + + Returns: Union[Literal["decrement"], Literal["increment"], Literal["value"], Literal["values"]] + """ + return self._get_property("choice") + + @choice.setter + def choice(self, value): + """choice setter + + TBD + + value: Union[Literal["decrement"], Literal["increment"], Literal["value"], Literal["values"]] + """ + self._set_property("choice", value) + + @property + def value(self): + # type: () -> int + """value getter + + TBD + + Returns: int + """ + return self._get_property("value") + + @value.setter + def value(self, value): + """value setter + + TBD + + value: int + """ + self._set_property("value", value, "value") + + @property + def values(self): + # type: () -> List[int] + """values getter + + TBD + + Returns: List[int] + """ + return self._get_property("values") + + @values.setter + def values(self, value): + """values setter + + TBD + + value: List[int] + """ + self._set_property("values", value, "values") + + +class PatternFlowRSVPPathSenderTspecIntServParameter127LengthCounter(OpenApiObject): + __slots__ = "_parent" + + _TYPES = { + "start": { + "type": int, + "format": "uint32", + "maximum": 65535, + }, + "step": { + "type": int, + "format": "uint32", + "maximum": 65535, + }, + "count": { + "type": int, + "format": "uint32", + "maximum": 65535, + }, + } # type: Dict[str, str] + + _REQUIRED = () # type: tuple(str) + + _DEFAULTS = { + "start": 0, + "step": 1, + "count": 1, + } # type: Dict[str, Union(type)] + + _STATUS = {} # type: Dict[str, Union(type)] + + def __init__(self, parent=None, start=0, step=1, count=1): + super( + PatternFlowRSVPPathSenderTspecIntServParameter127LengthCounter, self + ).__init__() + self._parent = parent + self._set_property("start", start) + self._set_property("step", step) + self._set_property("count", count) + + def set(self, start=None, step=None, count=None): + for property_name, property_value in locals().items(): + if property_name != "self" and property_value is not None: + self._set_property(property_name, property_value) + + @property + def start(self): + # type: () -> int + """start getter + + TBD + + Returns: int + """ + return self._get_property("start") + + @start.setter + def start(self, value): + """start setter + + TBD + + value: int + """ + self._set_property("start", value) + + @property + def step(self): + # type: () -> int + """step getter + + TBD + + Returns: int + """ + return self._get_property("step") + + @step.setter + def step(self, value): + """step setter + + TBD + + value: int + """ + self._set_property("step", value) + + @property + def count(self): + # type: () -> int + """count getter + + TBD + + Returns: int + """ + return self._get_property("count") + + @count.setter + def count(self, value): + """count setter + + TBD + + value: int + """ + self._set_property("count", value) + + +class PatternFlowRSVPPathSenderTspecIntServMinimumPolicedUnit(OpenApiObject): + __slots__ = ("_parent", "_choice") + + _TYPES = { + "choice": { + "type": str, + "enum": [ + "value", + "values", + "increment", + "decrement", + ], + }, + "value": { + "type": int, + "format": "uint32", + }, + "values": { + "type": list, + "itemtype": int, + "itemformat": "uint32", + }, + "increment": { + "type": "PatternFlowRSVPPathSenderTspecIntServMinimumPolicedUnitCounter" + }, + "decrement": { + "type": "PatternFlowRSVPPathSenderTspecIntServMinimumPolicedUnitCounter" + }, + } # type: Dict[str, str] + + _REQUIRED = () # type: tuple(str) + + _DEFAULTS = { + "choice": "value", + "value": 0, + "values": [0], + } # type: Dict[str, Union(type)] + + VALUE = "value" # type: str + VALUES = "values" # type: str + INCREMENT = "increment" # type: str + DECREMENT = "decrement" # type: str + + _STATUS = {} # type: Dict[str, Union(type)] + + def __init__(self, parent=None, choice=None, value=0, values=[0]): + super(PatternFlowRSVPPathSenderTspecIntServMinimumPolicedUnit, self).__init__() + self._parent = parent + self._set_property("value", value) + self._set_property("values", values) + if ( + "choice" in self._DEFAULTS + and choice is None + and self._DEFAULTS["choice"] in self._TYPES + ): + getattr(self, self._DEFAULTS["choice"]) + else: + self._set_property("choice", choice) + + def set(self, value=None, values=None): + for property_name, property_value in locals().items(): + if property_name != "self" and property_value is not None: + self._set_property(property_name, property_value) + + @property + def increment(self): + # type: () -> PatternFlowRSVPPathSenderTspecIntServMinimumPolicedUnitCounter + """Factory property that returns an instance of the PatternFlowRSVPPathSenderTspecIntServMinimumPolicedUnitCounter class + + integer counter pattern + + Returns: PatternFlowRSVPPathSenderTspecIntServMinimumPolicedUnitCounter + """ + return self._get_property( + "increment", + PatternFlowRSVPPathSenderTspecIntServMinimumPolicedUnitCounter, + self, + "increment", + ) + + @property + def decrement(self): + # type: () -> PatternFlowRSVPPathSenderTspecIntServMinimumPolicedUnitCounter + """Factory property that returns an instance of the PatternFlowRSVPPathSenderTspecIntServMinimumPolicedUnitCounter class + + integer counter pattern + + Returns: PatternFlowRSVPPathSenderTspecIntServMinimumPolicedUnitCounter + """ + return self._get_property( + "decrement", + PatternFlowRSVPPathSenderTspecIntServMinimumPolicedUnitCounter, + self, + "decrement", + ) + + @property + def choice(self): + # type: () -> Union[Literal["decrement"], Literal["increment"], Literal["value"], Literal["values"]] + """choice getter + + TBD + + Returns: Union[Literal["decrement"], Literal["increment"], Literal["value"], Literal["values"]] + """ + return self._get_property("choice") + + @choice.setter + def choice(self, value): + """choice setter + + TBD + + value: Union[Literal["decrement"], Literal["increment"], Literal["value"], Literal["values"]] + """ + self._set_property("choice", value) + + @property + def value(self): + # type: () -> int + """value getter + + TBD + + Returns: int + """ + return self._get_property("value") + + @value.setter + def value(self, value): + """value setter + + TBD + + value: int + """ + self._set_property("value", value, "value") + + @property + def values(self): + # type: () -> List[int] + """values getter + + TBD + + Returns: List[int] + """ + return self._get_property("values") + + @values.setter + def values(self, value): + """values setter + + TBD + + value: List[int] + """ + self._set_property("values", value, "values") + + +class PatternFlowRSVPPathSenderTspecIntServMinimumPolicedUnitCounter(OpenApiObject): + __slots__ = "_parent" + + _TYPES = { + "start": { + "type": int, + "format": "uint32", + }, + "step": { + "type": int, + "format": "uint32", + }, + "count": { + "type": int, + "format": "uint32", + }, + } # type: Dict[str, str] + + _REQUIRED = () # type: tuple(str) + + _DEFAULTS = { + "start": 0, + "step": 1, + "count": 1, + } # type: Dict[str, Union(type)] + + _STATUS = {} # type: Dict[str, Union(type)] + + def __init__(self, parent=None, start=0, step=1, count=1): + super( + PatternFlowRSVPPathSenderTspecIntServMinimumPolicedUnitCounter, self + ).__init__() + self._parent = parent + self._set_property("start", start) + self._set_property("step", step) + self._set_property("count", count) + + def set(self, start=None, step=None, count=None): + for property_name, property_value in locals().items(): + if property_name != "self" and property_value is not None: + self._set_property(property_name, property_value) + + @property + def start(self): + # type: () -> int + """start getter + + TBD + + Returns: int + """ + return self._get_property("start") + + @start.setter + def start(self, value): + """start setter + + TBD + + value: int + """ + self._set_property("start", value) + + @property + def step(self): + # type: () -> int + """step getter + + TBD + + Returns: int + """ + return self._get_property("step") + + @step.setter + def step(self, value): + """step setter + + TBD + + value: int + """ + self._set_property("step", value) + + @property + def count(self): + # type: () -> int + """count getter + + TBD + + Returns: int + """ + return self._get_property("count") + + @count.setter + def count(self, value): + """count setter + + TBD + + value: int + """ + self._set_property("count", value) + + +class PatternFlowRSVPPathSenderTspecIntServMaximumPacketSize(OpenApiObject): + __slots__ = ("_parent", "_choice") + + _TYPES = { + "choice": { + "type": str, + "enum": [ + "value", + "values", + "increment", + "decrement", + ], + }, + "value": { + "type": int, + "format": "uint32", + }, + "values": { + "type": list, + "itemtype": int, + "itemformat": "uint32", + }, + "increment": { + "type": "PatternFlowRSVPPathSenderTspecIntServMaximumPacketSizeCounter" + }, + "decrement": { + "type": "PatternFlowRSVPPathSenderTspecIntServMaximumPacketSizeCounter" + }, + } # type: Dict[str, str] + + _REQUIRED = () # type: tuple(str) + + _DEFAULTS = { + "choice": "value", + "value": 0, + "values": [0], + } # type: Dict[str, Union(type)] + + VALUE = "value" # type: str + VALUES = "values" # type: str + INCREMENT = "increment" # type: str + DECREMENT = "decrement" # type: str + + _STATUS = {} # type: Dict[str, Union(type)] + + def __init__(self, parent=None, choice=None, value=0, values=[0]): + super(PatternFlowRSVPPathSenderTspecIntServMaximumPacketSize, self).__init__() + self._parent = parent + self._set_property("value", value) + self._set_property("values", values) + if ( + "choice" in self._DEFAULTS + and choice is None + and self._DEFAULTS["choice"] in self._TYPES + ): + getattr(self, self._DEFAULTS["choice"]) + else: + self._set_property("choice", choice) + + def set(self, value=None, values=None): + for property_name, property_value in locals().items(): + if property_name != "self" and property_value is not None: + self._set_property(property_name, property_value) + + @property + def increment(self): + # type: () -> PatternFlowRSVPPathSenderTspecIntServMaximumPacketSizeCounter + """Factory property that returns an instance of the PatternFlowRSVPPathSenderTspecIntServMaximumPacketSizeCounter class + + integer counter pattern + + Returns: PatternFlowRSVPPathSenderTspecIntServMaximumPacketSizeCounter + """ + return self._get_property( + "increment", + PatternFlowRSVPPathSenderTspecIntServMaximumPacketSizeCounter, + self, + "increment", + ) + + @property + def decrement(self): + # type: () -> PatternFlowRSVPPathSenderTspecIntServMaximumPacketSizeCounter + """Factory property that returns an instance of the PatternFlowRSVPPathSenderTspecIntServMaximumPacketSizeCounter class + + integer counter pattern + + Returns: PatternFlowRSVPPathSenderTspecIntServMaximumPacketSizeCounter + """ + return self._get_property( + "decrement", + PatternFlowRSVPPathSenderTspecIntServMaximumPacketSizeCounter, + self, + "decrement", + ) + + @property + def choice(self): + # type: () -> Union[Literal["decrement"], Literal["increment"], Literal["value"], Literal["values"]] + """choice getter + + TBD + + Returns: Union[Literal["decrement"], Literal["increment"], Literal["value"], Literal["values"]] + """ + return self._get_property("choice") + + @choice.setter + def choice(self, value): + """choice setter + + TBD + + value: Union[Literal["decrement"], Literal["increment"], Literal["value"], Literal["values"]] + """ + self._set_property("choice", value) + + @property + def value(self): + # type: () -> int + """value getter + + TBD + + Returns: int + """ + return self._get_property("value") + + @value.setter + def value(self, value): + """value setter + + TBD + + value: int + """ + self._set_property("value", value, "value") + + @property + def values(self): + # type: () -> List[int] + """values getter + + TBD + + Returns: List[int] + """ + return self._get_property("values") + + @values.setter + def values(self, value): + """values setter + + TBD + + value: List[int] + """ + self._set_property("values", value, "values") + + +class PatternFlowRSVPPathSenderTspecIntServMaximumPacketSizeCounter(OpenApiObject): + __slots__ = "_parent" + + _TYPES = { + "start": { + "type": int, + "format": "uint32", + }, + "step": { + "type": int, + "format": "uint32", + }, + "count": { + "type": int, + "format": "uint32", + }, + } # type: Dict[str, str] + + _REQUIRED = () # type: tuple(str) + + _DEFAULTS = { + "start": 0, + "step": 1, + "count": 1, + } # type: Dict[str, Union(type)] + + _STATUS = {} # type: Dict[str, Union(type)] + + def __init__(self, parent=None, start=0, step=1, count=1): + super( + PatternFlowRSVPPathSenderTspecIntServMaximumPacketSizeCounter, self + ).__init__() + self._parent = parent + self._set_property("start", start) + self._set_property("step", step) + self._set_property("count", count) + + def set(self, start=None, step=None, count=None): + for property_name, property_value in locals().items(): + if property_name != "self" and property_value is not None: + self._set_property(property_name, property_value) + + @property + def start(self): + # type: () -> int + """start getter + + TBD + + Returns: int + """ + return self._get_property("start") + + @start.setter + def start(self, value): + """start setter + + TBD + + value: int + """ + self._set_property("start", value) + + @property + def step(self): + # type: () -> int + """step getter + + TBD + + Returns: int + """ + return self._get_property("step") + + @step.setter + def step(self, value): + """step setter + + TBD + + value: int + """ + self._set_property("step", value) + + @property + def count(self): + # type: () -> int + """count getter + + TBD + + Returns: int + """ + return self._get_property("count") + + @count.setter + def count(self, value): + """count setter + + TBD + + value: int + """ + self._set_property("count", value) + + +class FlowRSVPPathObjectsClassRecordRoute(OpenApiObject): + __slots__ = "_parent" + + _TYPES = { + "c_type": {"type": "FlowRSVPPathObjectsRecordRouteCType"}, + } # type: Dict[str, str] + + _REQUIRED = () # type: tuple(str) + + _DEFAULTS = {} # type: Dict[str, Union(type)] + + _STATUS = {} # type: Dict[str, Union(type)] + + def __init__(self, parent=None): + super(FlowRSVPPathObjectsClassRecordRoute, self).__init__() + self._parent = parent + + @property + def c_type(self): + # type: () -> FlowRSVPPathObjectsRecordRouteCType + """c_type getter + + Object for RECORD_ROUTE class. c-type is Type Route Record (1).Object for RECORD_ROUTE class. c-type is Type Route Record (1).Object for RECORD_ROUTE class. c-type is Type Route Record (1).Object for RECORD_ROUTE class. c-type is Type Route Record (1). + + Returns: FlowRSVPPathObjectsRecordRouteCType + """ + return self._get_property("c_type", FlowRSVPPathObjectsRecordRouteCType) + + +class FlowRSVPPathObjectsRecordRouteCType(OpenApiObject): + __slots__ = ("_parent", "_choice") + + _TYPES = { + "choice": { + "type": str, + "enum": [ + "type_1_route_record", + ], + }, + "type_1_route_record": {"type": "FlowRSVPPathRecordRouteType1"}, + } # type: Dict[str, str] + + _REQUIRED = () # type: tuple(str) + + _DEFAULTS = { + "choice": "type_1_route_record", + } # type: Dict[str, Union(type)] + + TYPE_1_ROUTE_RECORD = "type_1_route_record" # type: str + + _STATUS = {} # type: Dict[str, Union(type)] + + def __init__(self, parent=None, choice=None): + super(FlowRSVPPathObjectsRecordRouteCType, self).__init__() + self._parent = parent + if ( + "choice" in self._DEFAULTS + and choice is None + and self._DEFAULTS["choice"] in self._TYPES + ): + getattr(self, self._DEFAULTS["choice"]) + else: + self._set_property("choice", choice) + + @property + def type_1_route_record(self): + # type: () -> FlowRSVPPathRecordRouteType1 + """Factory property that returns an instance of the FlowRSVPPathRecordRouteType1 class + + Type1 record route has list of subobjects. Currently supported subobjects are IPv4 address(1) and Label(3). + + Returns: FlowRSVPPathRecordRouteType1 + """ + return self._get_property( + "type_1_route_record", + FlowRSVPPathRecordRouteType1, + self, + "type_1_route_record", + ) + + @property + def choice(self): + # type: () -> Union[Literal["type_1_route_record"]] + """choice getter + + TBD + + Returns: Union[Literal["type_1_route_record"]] + """ + return self._get_property("choice") + + @choice.setter + def choice(self, value): + """choice setter + + TBD + + value: Union[Literal["type_1_route_record"]] + """ + self._set_property("choice", value) + + +class FlowRSVPPathRecordRouteType1(OpenApiObject): + __slots__ = "_parent" + + _TYPES = { + "subobjects": {"type": "FlowRSVPType1RecordRouteSubobjectsIter"}, + } # type: Dict[str, str] + + _REQUIRED = () # type: tuple(str) + + _DEFAULTS = {} # type: Dict[str, Union(type)] + + _STATUS = {} # type: Dict[str, Union(type)] + + def __init__(self, parent=None): + super(FlowRSVPPathRecordRouteType1, self).__init__() + self._parent = parent + + @property + def subobjects(self): + # type: () -> FlowRSVPType1RecordRouteSubobjectsIter + """subobjects getter + + TBD + + Returns: FlowRSVPType1RecordRouteSubobjectsIter + """ + return self._get_property( + "subobjects", + FlowRSVPType1RecordRouteSubobjectsIter, + self._parent, + self._choice, + ) + + +class FlowRSVPType1RecordRouteSubobjects(OpenApiObject): + __slots__ = "_parent" + + _TYPES = { + "type": {"type": "FlowRSVPPathObjectsRecordRouteSubObjectType"}, + } # type: Dict[str, str] + + _REQUIRED = () # type: tuple(str) + + _DEFAULTS = {} # type: Dict[str, Union(type)] + + _STATUS = {} # type: Dict[str, Union(type)] + + def __init__(self, parent=None): + super(FlowRSVPType1RecordRouteSubobjects, self).__init__() + self._parent = parent + + @property + def type(self): + # type: () -> FlowRSVPPathObjectsRecordRouteSubObjectType + """type getter + + Currently supported subobjects are IPv4 address(1) and Label(3).Currently supported subobjects are IPv4 address(1) and Label(3).Currently supported subobjects are IPv4 address(1) and Label(3). + + Returns: FlowRSVPPathObjectsRecordRouteSubObjectType + """ + return self._get_property("type", FlowRSVPPathObjectsRecordRouteSubObjectType) + + +class FlowRSVPPathObjectsRecordRouteSubObjectType(OpenApiObject): + __slots__ = ("_parent", "_choice") + + _TYPES = { + "choice": { + "type": str, + "enum": [ + "ipv4_address", + "label", + ], + }, + "ipv4_address": {"type": "FlowRSVPPathRecordRouteType1Ipv4Address"}, + "label": {"type": "FlowRSVPPathRecordRouteType1Label"}, + } # type: Dict[str, str] + + _REQUIRED = () # type: tuple(str) + + _DEFAULTS = { + "choice": "ipv4_address", + } # type: Dict[str, Union(type)] + + IPV4_ADDRESS = "ipv4_address" # type: str + LABEL = "label" # type: str + + _STATUS = {} # type: Dict[str, Union(type)] + + def __init__(self, parent=None, choice=None): + super(FlowRSVPPathObjectsRecordRouteSubObjectType, self).__init__() + self._parent = parent + if ( + "choice" in self._DEFAULTS + and choice is None + and self._DEFAULTS["choice"] in self._TYPES + ): + getattr(self, self._DEFAULTS["choice"]) + else: + self._set_property("choice", choice) + + @property + def ipv4_address(self): + # type: () -> FlowRSVPPathRecordRouteType1Ipv4Address + """Factory property that returns an instance of the FlowRSVPPathRecordRouteType1Ipv4Address class + + Class RECORD_ROUTE, Type1 ROUTE_RECORD C-Type 1 Subobject: IPv4 Address, C-Type: 1 + + Returns: FlowRSVPPathRecordRouteType1Ipv4Address + """ + return self._get_property( + "ipv4_address", + FlowRSVPPathRecordRouteType1Ipv4Address, + self, + "ipv4_address", + ) + + @property + def label(self): + # type: () -> FlowRSVPPathRecordRouteType1Label + """Factory property that returns an instance of the FlowRSVPPathRecordRouteType1Label class + + Class RECORD_ROUTE, Type1 ROUTE_RECORD C-Type 1 Subobject: Label, C-Type: 3 + + Returns: FlowRSVPPathRecordRouteType1Label + """ + return self._get_property( + "label", FlowRSVPPathRecordRouteType1Label, self, "label" + ) + + @property + def choice(self): + # type: () -> Union[Literal["ipv4_address"], Literal["label"]] + """choice getter + + TBD + + Returns: Union[Literal["ipv4_address"], Literal["label"]] + """ + return self._get_property("choice") + + @choice.setter + def choice(self, value): + """choice setter + + TBD + + value: Union[Literal["ipv4_address"], Literal["label"]] + """ + self._set_property("choice", value) + + +class FlowRSVPPathRecordRouteType1Ipv4Address(OpenApiObject): + __slots__ = "_parent" + + _TYPES = { + "length": {"type": "FlowRSVPRouteRecordLength"}, + "ipv4_address": { + "type": "PatternFlowRSVPPathRecordRouteType1Ipv4AddressIpv4Address" + }, + "prefix_length": { + "type": "PatternFlowRSVPPathRecordRouteType1Ipv4AddressPrefixLength" + }, + "flags": {"type": "FlowRSVPRecordRouteIPv4Flag"}, + } # type: Dict[str, str] + + _REQUIRED = () # type: tuple(str) + + _DEFAULTS = {} # type: Dict[str, Union(type)] + + _STATUS = {} # type: Dict[str, Union(type)] + + def __init__(self, parent=None): + super(FlowRSVPPathRecordRouteType1Ipv4Address, self).__init__() + self._parent = parent + + @property + def length(self): + # type: () -> FlowRSVPRouteRecordLength + """length getter + + The Length contains the total length of the subobject in bytes, including the Type and Length fields. The Length MUST be atleast 4, and MUST be multiple of 4. + + Returns: FlowRSVPRouteRecordLength + """ + return self._get_property("length", FlowRSVPRouteRecordLength) + + @property + def ipv4_address(self): + # type: () -> PatternFlowRSVPPathRecordRouteType1Ipv4AddressIpv4Address + """ipv4_address getter + + A 32-bit unicast, host address. Any network-reachable interface address is allowed here. Illegal addresses, such as certain loopback addresses, SHOULD NOT be used.A 32-bit unicast, host address. Any network-reachable interface address is allowed here. Illegal addresses, such as certain loopback addresses, SHOULD NOT be used.A 32-bit unicast, host address. Any network-reachable interface address is allowed here. Illegal addresses, such as certain loopback addresses, SHOULD NOT be used.A 32-bit unicast, host address. Any network-reachable interface address is allowed here. Illegal addresses, such as certain loopback addresses, SHOULD NOT be used. + + Returns: PatternFlowRSVPPathRecordRouteType1Ipv4AddressIpv4Address + """ + return self._get_property( + "ipv4_address", PatternFlowRSVPPathRecordRouteType1Ipv4AddressIpv4Address + ) + + @property + def prefix_length(self): + # type: () -> PatternFlowRSVPPathRecordRouteType1Ipv4AddressPrefixLength + """prefix_length getter + + Prefix-length of ipv4 address.Prefix-length of ipv4 address.Prefix-length of ipv4 address.Prefix-length of ipv4 address. + + Returns: PatternFlowRSVPPathRecordRouteType1Ipv4AddressPrefixLength + """ + return self._get_property( + "prefix_length", PatternFlowRSVPPathRecordRouteType1Ipv4AddressPrefixLength + ) + + @property + def flags(self): + # type: () -> FlowRSVPRecordRouteIPv4Flag + """flags getter + + 0x01 local_protection_available, 0x02 local_protection_in_use + + Returns: FlowRSVPRecordRouteIPv4Flag + """ + return self._get_property("flags", FlowRSVPRecordRouteIPv4Flag) + + +class FlowRSVPRouteRecordLength(OpenApiObject): + __slots__ = ("_parent", "_choice") + + _TYPES = { + "choice": { + "type": str, + "enum": [ + "auto", + "value", + ], + }, + "auto": { + "type": int, + "format": "uint32", + "maximum": 256, + }, + "value": { + "type": int, + "format": "uint32", + "maximum": 256, + }, + } # type: Dict[str, str] + + _REQUIRED = () # type: tuple(str) + + _DEFAULTS = { + "choice": "auto", + "auto": 8, + "value": 8, + } # type: Dict[str, Union(type)] + + AUTO = "auto" # type: str + VALUE = "value" # type: str + + _STATUS = {} # type: Dict[str, Union(type)] + + def __init__(self, parent=None, choice=None, auto=8, value=8): + super(FlowRSVPRouteRecordLength, self).__init__() + self._parent = parent + self._set_property("auto", auto) + self._set_property("value", value) + if ( + "choice" in self._DEFAULTS + and choice is None + and self._DEFAULTS["choice"] in self._TYPES + ): + getattr(self, self._DEFAULTS["choice"]) + else: + self._set_property("choice", choice) + + def set(self, auto=None, value=None): + for property_name, property_value in locals().items(): + if property_name != "self" and property_value is not None: + self._set_property(property_name, property_value) + + @property + def choice(self): + # type: () -> Union[Literal["auto"], Literal["value"]] + """choice getter + + auto or configured value. + + Returns: Union[Literal["auto"], Literal["value"]] + """ + return self._get_property("choice") + + @choice.setter + def choice(self, value): + """choice setter + + auto or configured value. + + value: Union[Literal["auto"], Literal["value"]] + """ + self._set_property("choice", value) + + @property + def auto(self): + # type: () -> int + """auto getter + + The OTG implementation can provide system generated value for this property. If the OTG is unable to generate value the default value must be used. + + Returns: int + """ + return self._get_property("auto") + + @property + def value(self): + # type: () -> int + """value getter + + TBD + + Returns: int + """ + return self._get_property("value") + + @value.setter + def value(self, value): + """value setter + + TBD + + value: int + """ + self._set_property("value", value, "value") + + +class PatternFlowRSVPPathRecordRouteType1Ipv4AddressIpv4Address(OpenApiObject): + __slots__ = ("_parent", "_choice") + + _TYPES = { + "choice": { + "type": str, + "enum": [ + "value", + "values", + "increment", + "decrement", + ], + }, + "value": { + "type": str, + "format": "ipv4", + }, + "values": { + "type": list, + "itemtype": str, + "itemformat": "ipv4", + }, + "increment": { + "type": "PatternFlowRSVPPathRecordRouteType1Ipv4AddressIpv4AddressCounter" + }, + "decrement": { + "type": "PatternFlowRSVPPathRecordRouteType1Ipv4AddressIpv4AddressCounter" + }, + } # type: Dict[str, str] + + _REQUIRED = () # type: tuple(str) + + _DEFAULTS = { + "choice": "value", + "value": "0.0.0.0", + "values": ["0.0.0.0"], + } # type: Dict[str, Union(type)] + + VALUE = "value" # type: str + VALUES = "values" # type: str + INCREMENT = "increment" # type: str + DECREMENT = "decrement" # type: str + + _STATUS = {} # type: Dict[str, Union(type)] + + def __init__(self, parent=None, choice=None, value="0.0.0.0", values=["0.0.0.0"]): + super( + PatternFlowRSVPPathRecordRouteType1Ipv4AddressIpv4Address, self + ).__init__() + self._parent = parent + self._set_property("value", value) + self._set_property("values", values) + if ( + "choice" in self._DEFAULTS + and choice is None + and self._DEFAULTS["choice"] in self._TYPES + ): + getattr(self, self._DEFAULTS["choice"]) + else: + self._set_property("choice", choice) + + def set(self, value=None, values=None): + for property_name, property_value in locals().items(): + if property_name != "self" and property_value is not None: + self._set_property(property_name, property_value) + + @property + def increment(self): + # type: () -> PatternFlowRSVPPathRecordRouteType1Ipv4AddressIpv4AddressCounter + """Factory property that returns an instance of the PatternFlowRSVPPathRecordRouteType1Ipv4AddressIpv4AddressCounter class + + ipv4 counter pattern + + Returns: PatternFlowRSVPPathRecordRouteType1Ipv4AddressIpv4AddressCounter + """ + return self._get_property( + "increment", + PatternFlowRSVPPathRecordRouteType1Ipv4AddressIpv4AddressCounter, + self, + "increment", + ) + + @property + def decrement(self): + # type: () -> PatternFlowRSVPPathRecordRouteType1Ipv4AddressIpv4AddressCounter + """Factory property that returns an instance of the PatternFlowRSVPPathRecordRouteType1Ipv4AddressIpv4AddressCounter class + + ipv4 counter pattern + + Returns: PatternFlowRSVPPathRecordRouteType1Ipv4AddressIpv4AddressCounter + """ + return self._get_property( + "decrement", + PatternFlowRSVPPathRecordRouteType1Ipv4AddressIpv4AddressCounter, + self, + "decrement", + ) + + @property + def choice(self): + # type: () -> Union[Literal["decrement"], Literal["increment"], Literal["value"], Literal["values"]] + """choice getter + + TBD + + Returns: Union[Literal["decrement"], Literal["increment"], Literal["value"], Literal["values"]] + """ + return self._get_property("choice") + + @choice.setter + def choice(self, value): + """choice setter + + TBD + + value: Union[Literal["decrement"], Literal["increment"], Literal["value"], Literal["values"]] + """ + self._set_property("choice", value) + + @property + def value(self): + # type: () -> str + """value getter + + TBD + + Returns: str + """ + return self._get_property("value") + + @value.setter + def value(self, value): + """value setter + + TBD + + value: str + """ + self._set_property("value", value, "value") + + @property + def values(self): + # type: () -> List[str] + """values getter + + TBD + + Returns: List[str] + """ + return self._get_property("values") + + @values.setter + def values(self, value): + """values setter + + TBD + + value: List[str] + """ + self._set_property("values", value, "values") + + +class PatternFlowRSVPPathRecordRouteType1Ipv4AddressIpv4AddressCounter(OpenApiObject): + __slots__ = "_parent" + + _TYPES = { + "start": { + "type": str, + "format": "ipv4", + }, + "step": { + "type": str, + "format": "ipv4", + }, + "count": { + "type": int, + "format": "uint32", + }, + } # type: Dict[str, str] + + _REQUIRED = () # type: tuple(str) + + _DEFAULTS = { + "start": "0.0.0.0", + "step": "0.0.0.1", + "count": 1, + } # type: Dict[str, Union(type)] + + _STATUS = {} # type: Dict[str, Union(type)] + + def __init__(self, parent=None, start="0.0.0.0", step="0.0.0.1", count=1): + super( + PatternFlowRSVPPathRecordRouteType1Ipv4AddressIpv4AddressCounter, self + ).__init__() + self._parent = parent + self._set_property("start", start) + self._set_property("step", step) + self._set_property("count", count) + + def set(self, start=None, step=None, count=None): + for property_name, property_value in locals().items(): + if property_name != "self" and property_value is not None: + self._set_property(property_name, property_value) + + @property + def start(self): + # type: () -> str + """start getter + + TBD + + Returns: str + """ + return self._get_property("start") + + @start.setter + def start(self, value): + """start setter + + TBD + + value: str + """ + self._set_property("start", value) + + @property + def step(self): + # type: () -> str + """step getter + + TBD + + Returns: str + """ + return self._get_property("step") + + @step.setter + def step(self, value): + """step setter + + TBD + + value: str + """ + self._set_property("step", value) + + @property + def count(self): + # type: () -> int + """count getter + + TBD + + Returns: int + """ + return self._get_property("count") + + @count.setter + def count(self, value): + """count setter + + TBD + + value: int + """ + self._set_property("count", value) + + +class PatternFlowRSVPPathRecordRouteType1Ipv4AddressPrefixLength(OpenApiObject): + __slots__ = ("_parent", "_choice") + + _TYPES = { + "choice": { + "type": str, + "enum": [ + "value", + "values", + "increment", + "decrement", + ], + }, + "value": { + "type": int, + "format": "uint32", + "maximum": 255, + }, + "values": { + "type": list, + "itemtype": int, + "itemformat": "uint32", + "maximum": 255, + }, + "increment": { + "type": "PatternFlowRSVPPathRecordRouteType1Ipv4AddressPrefixLengthCounter" + }, + "decrement": { + "type": "PatternFlowRSVPPathRecordRouteType1Ipv4AddressPrefixLengthCounter" + }, + } # type: Dict[str, str] + + _REQUIRED = () # type: tuple(str) + + _DEFAULTS = { + "choice": "value", + "value": 32, + "values": [32], + } # type: Dict[str, Union(type)] + + VALUE = "value" # type: str + VALUES = "values" # type: str + INCREMENT = "increment" # type: str + DECREMENT = "decrement" # type: str + + _STATUS = {} # type: Dict[str, Union(type)] + + def __init__(self, parent=None, choice=None, value=32, values=[32]): + super( + PatternFlowRSVPPathRecordRouteType1Ipv4AddressPrefixLength, self + ).__init__() + self._parent = parent + self._set_property("value", value) + self._set_property("values", values) + if ( + "choice" in self._DEFAULTS + and choice is None + and self._DEFAULTS["choice"] in self._TYPES + ): + getattr(self, self._DEFAULTS["choice"]) + else: + self._set_property("choice", choice) + + def set(self, value=None, values=None): + for property_name, property_value in locals().items(): + if property_name != "self" and property_value is not None: + self._set_property(property_name, property_value) + + @property + def increment(self): + # type: () -> PatternFlowRSVPPathRecordRouteType1Ipv4AddressPrefixLengthCounter + """Factory property that returns an instance of the PatternFlowRSVPPathRecordRouteType1Ipv4AddressPrefixLengthCounter class + + integer counter pattern + + Returns: PatternFlowRSVPPathRecordRouteType1Ipv4AddressPrefixLengthCounter + """ + return self._get_property( + "increment", + PatternFlowRSVPPathRecordRouteType1Ipv4AddressPrefixLengthCounter, + self, + "increment", + ) + + @property + def decrement(self): + # type: () -> PatternFlowRSVPPathRecordRouteType1Ipv4AddressPrefixLengthCounter + """Factory property that returns an instance of the PatternFlowRSVPPathRecordRouteType1Ipv4AddressPrefixLengthCounter class + + integer counter pattern + + Returns: PatternFlowRSVPPathRecordRouteType1Ipv4AddressPrefixLengthCounter + """ + return self._get_property( + "decrement", + PatternFlowRSVPPathRecordRouteType1Ipv4AddressPrefixLengthCounter, + self, + "decrement", + ) + + @property + def choice(self): + # type: () -> Union[Literal["decrement"], Literal["increment"], Literal["value"], Literal["values"]] + """choice getter + + TBD + + Returns: Union[Literal["decrement"], Literal["increment"], Literal["value"], Literal["values"]] + """ + return self._get_property("choice") + + @choice.setter + def choice(self, value): + """choice setter + + TBD + + value: Union[Literal["decrement"], Literal["increment"], Literal["value"], Literal["values"]] + """ + self._set_property("choice", value) + + @property + def value(self): + # type: () -> int + """value getter + + TBD + + Returns: int + """ + return self._get_property("value") + + @value.setter + def value(self, value): + """value setter + + TBD + + value: int + """ + self._set_property("value", value, "value") + + @property + def values(self): + # type: () -> List[int] + """values getter + + TBD + + Returns: List[int] + """ + return self._get_property("values") + + @values.setter + def values(self, value): + """values setter + + TBD + + value: List[int] + """ + self._set_property("values", value, "values") + + +class PatternFlowRSVPPathRecordRouteType1Ipv4AddressPrefixLengthCounter(OpenApiObject): + __slots__ = "_parent" + + _TYPES = { + "start": { + "type": int, + "format": "uint32", + "maximum": 255, + }, + "step": { + "type": int, + "format": "uint32", + "maximum": 255, + }, + "count": { + "type": int, + "format": "uint32", + "maximum": 255, + }, + } # type: Dict[str, str] + + _REQUIRED = () # type: tuple(str) + + _DEFAULTS = { + "start": 32, + "step": 1, + "count": 1, + } # type: Dict[str, Union(type)] + + _STATUS = {} # type: Dict[str, Union(type)] + + def __init__(self, parent=None, start=32, step=1, count=1): + super( + PatternFlowRSVPPathRecordRouteType1Ipv4AddressPrefixLengthCounter, self + ).__init__() + self._parent = parent + self._set_property("start", start) + self._set_property("step", step) + self._set_property("count", count) + + def set(self, start=None, step=None, count=None): + for property_name, property_value in locals().items(): + if property_name != "self" and property_value is not None: + self._set_property(property_name, property_value) + + @property + def start(self): + # type: () -> int + """start getter + + TBD + + Returns: int + """ + return self._get_property("start") + + @start.setter + def start(self, value): + """start setter + + TBD + + value: int + """ + self._set_property("start", value) + + @property + def step(self): + # type: () -> int + """step getter + + TBD + + Returns: int + """ + return self._get_property("step") + + @step.setter + def step(self, value): + """step setter + + TBD + + value: int + """ + self._set_property("step", value) + + @property + def count(self): + # type: () -> int + """count getter + + TBD + + Returns: int + """ + return self._get_property("count") + + @count.setter + def count(self, value): + """count setter + + TBD + + value: int + """ + self._set_property("count", value) + + +class FlowRSVPRecordRouteIPv4Flag(OpenApiObject): + __slots__ = ("_parent", "_choice") + + _TYPES = { + "choice": { + "type": str, + "enum": [ + "local_protection_available", + "local_protection_in_use", + ], + }, + } # type: Dict[str, str] + + _REQUIRED = () # type: tuple(str) + + _DEFAULTS = { + "choice": "local_protection_available", + } # type: Dict[str, Union(type)] + + LOCAL_PROTECTION_AVAILABLE = "local_protection_available" # type: str + LOCAL_PROTECTION_IN_USE = "local_protection_in_use" # type: str + + _STATUS = {} # type: Dict[str, Union(type)] + + def __init__(self, parent=None, choice=None): + super(FlowRSVPRecordRouteIPv4Flag, self).__init__() + self._parent = parent + if ( + "choice" in self._DEFAULTS + and choice is None + and self._DEFAULTS["choice"] in self._TYPES + ): + getattr(self, self._DEFAULTS["choice"]) + else: + self._set_property("choice", choice) + + @property + def choice(self): + # type: () -> Union[Literal["local_protection_available"], Literal["local_protection_in_use"]] + """choice getter + + TBD + + Returns: Union[Literal["local_protection_available"], Literal["local_protection_in_use"]] + """ + return self._get_property("choice") + + @choice.setter + def choice(self, value): + """choice setter + + TBD + + value: Union[Literal["local_protection_available"], Literal["local_protection_in_use"]] + """ + self._set_property("choice", value) + + +class FlowRSVPPathRecordRouteType1Label(OpenApiObject): + __slots__ = "_parent" + + _TYPES = { + "length": {"type": "FlowRSVPRouteRecordLength"}, + "flags": {"type": "PatternFlowRSVPPathRecordRouteType1LabelFlags"}, + "c_type": {"type": "PatternFlowRSVPPathRecordRouteType1LabelCType"}, + "contents_of_label_obejct": { + "type": str, + "format": "hex", + }, + } # type: Dict[str, str] + + _REQUIRED = () # type: tuple(str) + + _DEFAULTS = { + "contents_of_label_obejct": "00", + } # type: Dict[str, Union(type)] + + _STATUS = {} # type: Dict[str, Union(type)] + + def __init__(self, parent=None, contents_of_label_obejct="00"): + super(FlowRSVPPathRecordRouteType1Label, self).__init__() + self._parent = parent + self._set_property("contents_of_label_obejct", contents_of_label_obejct) + + def set(self, contents_of_label_obejct=None): + for property_name, property_value in locals().items(): + if property_name != "self" and property_value is not None: + self._set_property(property_name, property_value) + + @property + def length(self): + # type: () -> FlowRSVPRouteRecordLength + """length getter + + The Length contains the total length of the subobject in bytes, including the Type and Length fields. The Length MUST be atleast 4, and MUST be multiple of 4. + + Returns: FlowRSVPRouteRecordLength + """ + return self._get_property("length", FlowRSVPRouteRecordLength) + + @property + def flags(self): + # type: () -> PatternFlowRSVPPathRecordRouteType1LabelFlags + """flags getter + + 0x01 Global label. This flag indicates that the label will be understood if received on any interface.0x01 Global label. This flag indicates that the label will be understood if received on any interface.0x01 Global label. This flag indicates that the label will be understood if received on any interface.0x01 Global label. This flag indicates that the label will be understood if received on any interface. + + Returns: PatternFlowRSVPPathRecordRouteType1LabelFlags + """ + return self._get_property( + "flags", PatternFlowRSVPPathRecordRouteType1LabelFlags + ) + + @property + def c_type(self): + # type: () -> PatternFlowRSVPPathRecordRouteType1LabelCType + """c_type getter + + The C-Type of the included Label Object. Copied from the Label object.The C-Type of the included Label Object. Copied from the Label object.The C-Type of the included Label Object. Copied from the Label object.The C-Type of the included Label Object. Copied from the Label object. + + Returns: PatternFlowRSVPPathRecordRouteType1LabelCType + """ + return self._get_property( + "c_type", PatternFlowRSVPPathRecordRouteType1LabelCType + ) + + @property + def contents_of_label_obejct(self): + # type: () -> str + """contents_of_label_obejct getter + + The contents of the Label Object. Copied from the Label Object. + + Returns: str + """ + return self._get_property("contents_of_label_obejct") + + @contents_of_label_obejct.setter + def contents_of_label_obejct(self, value): + """contents_of_label_obejct setter + + The contents of the Label Object. Copied from the Label Object. + + value: str + """ + self._set_property("contents_of_label_obejct", value) + + +class PatternFlowRSVPPathRecordRouteType1LabelFlags(OpenApiObject): + __slots__ = ("_parent", "_choice") + + _TYPES = { + "choice": { + "type": str, + "enum": [ + "value", + "values", + ], + }, + "value": { + "type": int, + "format": "uint32", + "maximum": 255, + }, + "values": { + "type": list, + "itemtype": int, + "itemformat": "uint32", + "maximum": 255, + }, + } # type: Dict[str, str] + + _REQUIRED = () # type: tuple(str) + + _DEFAULTS = { + "choice": "value", + "value": 1, + "values": [1], + } # type: Dict[str, Union(type)] + + VALUE = "value" # type: str + VALUES = "values" # type: str + + _STATUS = {} # type: Dict[str, Union(type)] + + def __init__(self, parent=None, choice=None, value=1, values=[1]): + super(PatternFlowRSVPPathRecordRouteType1LabelFlags, self).__init__() + self._parent = parent + self._set_property("value", value) + self._set_property("values", values) + if ( + "choice" in self._DEFAULTS + and choice is None + and self._DEFAULTS["choice"] in self._TYPES + ): + getattr(self, self._DEFAULTS["choice"]) + else: + self._set_property("choice", choice) + + def set(self, value=None, values=None): + for property_name, property_value in locals().items(): + if property_name != "self" and property_value is not None: + self._set_property(property_name, property_value) + + @property + def choice(self): + # type: () -> Union[Literal["value"], Literal["values"]] + """choice getter + + TBD + + Returns: Union[Literal["value"], Literal["values"]] + """ + return self._get_property("choice") + + @choice.setter + def choice(self, value): + """choice setter + + TBD + + value: Union[Literal["value"], Literal["values"]] + """ + self._set_property("choice", value) + + @property + def value(self): + # type: () -> int + """value getter + + TBD + + Returns: int + """ + return self._get_property("value") + + @value.setter + def value(self, value): + """value setter + + TBD + + value: int + """ + self._set_property("value", value, "value") + + @property + def values(self): + # type: () -> List[int] + """values getter + + TBD + + Returns: List[int] + """ + return self._get_property("values") + + @values.setter + def values(self, value): + """values setter + + TBD + + value: List[int] + """ + self._set_property("values", value, "values") + + +class PatternFlowRSVPPathRecordRouteType1LabelCType(OpenApiObject): + __slots__ = ("_parent", "_choice") + + _TYPES = { + "choice": { + "type": str, + "enum": [ + "value", + "values", + ], + }, + "value": { + "type": int, + "format": "uint32", + "maximum": 255, + }, + "values": { + "type": list, + "itemtype": int, + "itemformat": "uint32", + "maximum": 255, + }, + } # type: Dict[str, str] + + _REQUIRED = () # type: tuple(str) + + _DEFAULTS = { + "choice": "value", + "value": 0, + "values": [0], + } # type: Dict[str, Union(type)] + + VALUE = "value" # type: str + VALUES = "values" # type: str + + _STATUS = {} # type: Dict[str, Union(type)] + + def __init__(self, parent=None, choice=None, value=0, values=[0]): + super(PatternFlowRSVPPathRecordRouteType1LabelCType, self).__init__() + self._parent = parent + self._set_property("value", value) + self._set_property("values", values) + if ( + "choice" in self._DEFAULTS + and choice is None + and self._DEFAULTS["choice"] in self._TYPES + ): + getattr(self, self._DEFAULTS["choice"]) + else: + self._set_property("choice", choice) + + def set(self, value=None, values=None): + for property_name, property_value in locals().items(): + if property_name != "self" and property_value is not None: + self._set_property(property_name, property_value) + + @property + def choice(self): + # type: () -> Union[Literal["value"], Literal["values"]] + """choice getter + + TBD + + Returns: Union[Literal["value"], Literal["values"]] + """ + return self._get_property("choice") + + @choice.setter + def choice(self, value): + """choice setter + + TBD + + value: Union[Literal["value"], Literal["values"]] + """ + self._set_property("choice", value) + + @property + def value(self): + # type: () -> int + """value getter + + TBD + + Returns: int + """ + return self._get_property("value") + + @value.setter + def value(self, value): + """value setter + + TBD + + value: int + """ + self._set_property("value", value, "value") + + @property + def values(self): + # type: () -> List[int] + """values getter + + TBD + + Returns: List[int] + """ + return self._get_property("values") + + @values.setter + def values(self, value): + """values setter + + TBD + + value: List[int] + """ + self._set_property("values", value, "values") + + +class FlowRSVPType1RecordRouteSubobjectsIter(OpenApiIter): + __slots__ = ("_parent", "_choice") + + _GETITEM_RETURNS_CHOICE_OBJECT = False + + def __init__(self, parent=None, choice=None): + super(FlowRSVPType1RecordRouteSubobjectsIter, self).__init__() + self._parent = parent + self._choice = choice + + def __getitem__(self, key): + # type: (str) -> Union[FlowRSVPType1RecordRouteSubobjects] + return self._getitem(key) + + def __iter__(self): + # type: () -> FlowRSVPType1RecordRouteSubobjectsIter + return self._iter() + + def __next__(self): + # type: () -> FlowRSVPType1RecordRouteSubobjects + return self._next() + + def next(self): + # type: () -> FlowRSVPType1RecordRouteSubobjects + return self._next() + + def _instanceOf(self, item): + if not isinstance(item, FlowRSVPType1RecordRouteSubobjects): + raise Exception( + "Item is not an instance of FlowRSVPType1RecordRouteSubobjects" + ) + + def type1recordroutesubobjects(self): + # type: () -> FlowRSVPType1RecordRouteSubobjectsIter + """Factory method that creates an instance of the FlowRSVPType1RecordRouteSubobjects class + + Type is specific to subobject. + + Returns: FlowRSVPType1RecordRouteSubobjectsIter + """ + item = FlowRSVPType1RecordRouteSubobjects(parent=self._parent) + self._add(item) + return self + + def add(self): + # type: () -> FlowRSVPType1RecordRouteSubobjects + """Add method that creates and returns an instance of the FlowRSVPType1RecordRouteSubobjects class + + Type is specific to subobject. + + Returns: FlowRSVPType1RecordRouteSubobjects + """ + item = FlowRSVPType1RecordRouteSubobjects(parent=self._parent) + self._add(item) + return item + + +class FlowRSVPPathObjectsCustom(OpenApiObject): + __slots__ = "_parent" + + _TYPES = { + "type": {"type": "PatternFlowRSVPPathObjectsCustomType"}, + "length": {"type": "FlowRSVPObjectOptionsCustomLength"}, + "bytes": {"type": str}, + } # type: Dict[str, str] + + _REQUIRED = ("bytes",) # type: tuple(str) + + _DEFAULTS = {} # type: Dict[str, Union(type)] + + _STATUS = {} # type: Dict[str, Union(type)] + + def __init__(self, parent=None, bytes=None): + super(FlowRSVPPathObjectsCustom, self).__init__() + self._parent = parent + self._set_property("bytes", bytes) + + def set(self, bytes=None): + for property_name, property_value in locals().items(): + if property_name != "self" and property_value is not None: + self._set_property(property_name, property_value) + + @property + def type(self): + # type: () -> PatternFlowRSVPPathObjectsCustomType + """type getter + + User defined object type.User defined object type.User defined object type.User defined object type. + + Returns: PatternFlowRSVPPathObjectsCustomType + """ + return self._get_property("type", PatternFlowRSVPPathObjectsCustomType) + + @property + def length(self): + # type: () -> FlowRSVPObjectOptionsCustomLength + """length getter + + Length for custom options.Length for custom options.Length for custom options.Length for custom options. + + Returns: FlowRSVPObjectOptionsCustomLength + """ + return self._get_property("length", FlowRSVPObjectOptionsCustomLength) + + @property + def bytes(self): + # type: () -> str + """bytes getter + + A custom packet header defined as string of hex bytes. The string MUST contain sequence of valid hex bytes. Spaces or colons can be part of the bytes but will be discarded. This packet header can be used in multiple places in the packet. + + Returns: str + """ + return self._get_property("bytes") + + @bytes.setter + def bytes(self, value): + """bytes setter + + A custom packet header defined as string of hex bytes. The string MUST contain sequence of valid hex bytes. Spaces or colons can be part of the bytes but will be discarded. This packet header can be used in multiple places in the packet. + + value: str + """ + if value is None: + raise TypeError("Cannot set required property bytes as None") + self._set_property("bytes", value) + + +class PatternFlowRSVPPathObjectsCustomType(OpenApiObject): + __slots__ = ("_parent", "_choice") + + _TYPES = { + "choice": { + "type": str, + "enum": [ + "value", + "values", + "increment", + "decrement", + ], + }, + "value": { + "type": int, + "format": "uint32", + "maximum": 255, + }, + "values": { + "type": list, + "itemtype": int, + "itemformat": "uint32", + "maximum": 255, + }, + "increment": {"type": "PatternFlowRSVPPathObjectsCustomTypeCounter"}, + "decrement": {"type": "PatternFlowRSVPPathObjectsCustomTypeCounter"}, + } # type: Dict[str, str] + + _REQUIRED = () # type: tuple(str) + + _DEFAULTS = { + "choice": "value", + "value": 0, + "values": [0], + } # type: Dict[str, Union(type)] + + VALUE = "value" # type: str + VALUES = "values" # type: str + INCREMENT = "increment" # type: str + DECREMENT = "decrement" # type: str + + _STATUS = {} # type: Dict[str, Union(type)] + + def __init__(self, parent=None, choice=None, value=0, values=[0]): + super(PatternFlowRSVPPathObjectsCustomType, self).__init__() + self._parent = parent + self._set_property("value", value) + self._set_property("values", values) + if ( + "choice" in self._DEFAULTS + and choice is None + and self._DEFAULTS["choice"] in self._TYPES + ): + getattr(self, self._DEFAULTS["choice"]) + else: + self._set_property("choice", choice) + + def set(self, value=None, values=None): + for property_name, property_value in locals().items(): + if property_name != "self" and property_value is not None: + self._set_property(property_name, property_value) + + @property + def increment(self): + # type: () -> PatternFlowRSVPPathObjectsCustomTypeCounter + """Factory property that returns an instance of the PatternFlowRSVPPathObjectsCustomTypeCounter class + + integer counter pattern + + Returns: PatternFlowRSVPPathObjectsCustomTypeCounter + """ + return self._get_property( + "increment", PatternFlowRSVPPathObjectsCustomTypeCounter, self, "increment" + ) + + @property + def decrement(self): + # type: () -> PatternFlowRSVPPathObjectsCustomTypeCounter + """Factory property that returns an instance of the PatternFlowRSVPPathObjectsCustomTypeCounter class + + integer counter pattern + + Returns: PatternFlowRSVPPathObjectsCustomTypeCounter + """ + return self._get_property( + "decrement", PatternFlowRSVPPathObjectsCustomTypeCounter, self, "decrement" + ) + + @property + def choice(self): + # type: () -> Union[Literal["decrement"], Literal["increment"], Literal["value"], Literal["values"]] + """choice getter + + TBD + + Returns: Union[Literal["decrement"], Literal["increment"], Literal["value"], Literal["values"]] + """ + return self._get_property("choice") + + @choice.setter + def choice(self, value): + """choice setter + + TBD + + value: Union[Literal["decrement"], Literal["increment"], Literal["value"], Literal["values"]] + """ + self._set_property("choice", value) + + @property + def value(self): + # type: () -> int + """value getter + + TBD + + Returns: int + """ + return self._get_property("value") + + @value.setter + def value(self, value): + """value setter + + TBD + + value: int + """ + self._set_property("value", value, "value") + + @property + def values(self): + # type: () -> List[int] + """values getter + + TBD + + Returns: List[int] + """ + return self._get_property("values") + + @values.setter + def values(self, value): + """values setter + + TBD + + value: List[int] + """ + self._set_property("values", value, "values") + + +class PatternFlowRSVPPathObjectsCustomTypeCounter(OpenApiObject): + __slots__ = "_parent" + + _TYPES = { + "start": { + "type": int, + "format": "uint32", + "maximum": 255, + }, + "step": { + "type": int, + "format": "uint32", + "maximum": 255, + }, + "count": { + "type": int, + "format": "uint32", + "maximum": 255, + }, + } # type: Dict[str, str] + + _REQUIRED = () # type: tuple(str) + + _DEFAULTS = { + "start": 0, + "step": 1, + "count": 1, + } # type: Dict[str, Union(type)] + + _STATUS = {} # type: Dict[str, Union(type)] + + def __init__(self, parent=None, start=0, step=1, count=1): + super(PatternFlowRSVPPathObjectsCustomTypeCounter, self).__init__() + self._parent = parent + self._set_property("start", start) + self._set_property("step", step) + self._set_property("count", count) + + def set(self, start=None, step=None, count=None): + for property_name, property_value in locals().items(): + if property_name != "self" and property_value is not None: + self._set_property(property_name, property_value) + + @property + def start(self): + # type: () -> int + """start getter + + TBD + + Returns: int + """ + return self._get_property("start") + + @start.setter + def start(self, value): + """start setter + + TBD + + value: int + """ + self._set_property("start", value) + + @property + def step(self): + # type: () -> int + """step getter + + TBD + + Returns: int + """ + return self._get_property("step") + + @step.setter + def step(self, value): + """step setter + + TBD + + value: int + """ + self._set_property("step", value) + + @property + def count(self): + # type: () -> int + """count getter + + TBD + + Returns: int + """ + return self._get_property("count") + + @count.setter + def count(self, value): + """count setter + + TBD + + value: int + """ + self._set_property("count", value) + + +class FlowRSVPObjectOptionsCustomLength(OpenApiObject): + __slots__ = ("_parent", "_choice") + + _TYPES = { + "choice": { + "type": str, + "enum": [ + "auto", + "value", + ], + }, + "auto": { + "type": int, + "format": "uint32", + }, + "value": { + "type": int, + "format": "uint32", + }, + } # type: Dict[str, str] + + _REQUIRED = () # type: tuple(str) + + _DEFAULTS = { + "choice": "auto", + "auto": 4, + "value": 4, + } # type: Dict[str, Union(type)] + + AUTO = "auto" # type: str + VALUE = "value" # type: str + + _STATUS = {} # type: Dict[str, Union(type)] + + def __init__(self, parent=None, choice=None, auto=4, value=4): + super(FlowRSVPObjectOptionsCustomLength, self).__init__() + self._parent = parent + self._set_property("auto", auto) + self._set_property("value", value) + if ( + "choice" in self._DEFAULTS + and choice is None + and self._DEFAULTS["choice"] in self._TYPES + ): + getattr(self, self._DEFAULTS["choice"]) + else: + self._set_property("choice", choice) + + def set(self, auto=None, value=None): + for property_name, property_value in locals().items(): + if property_name != "self" and property_value is not None: + self._set_property(property_name, property_value) + + @property + def choice(self): + # type: () -> Union[Literal["auto"], Literal["value"]] + """choice getter + + auto or configured value. + + Returns: Union[Literal["auto"], Literal["value"]] + """ + return self._get_property("choice") + + @choice.setter + def choice(self, value): + """choice setter + + auto or configured value. + + value: Union[Literal["auto"], Literal["value"]] + """ + self._set_property("choice", value) + + @property + def auto(self): + # type: () -> int + """auto getter + + The OTG implementation can provide system generated value for this property. If the OTG is unable to generate value the default value must be used. + + Returns: int + """ + return self._get_property("auto") + + @property + def value(self): + # type: () -> int + """value getter + + TBD + + Returns: int + """ + return self._get_property("value") + + @value.setter + def value(self, value): + """value setter + + TBD + + value: int + """ + self._set_property("value", value, "value") + + +class FlowRSVPPathObjectsIter(OpenApiIter): + __slots__ = ("_parent", "_choice") + + _GETITEM_RETURNS_CHOICE_OBJECT = False + + def __init__(self, parent=None, choice=None): + super(FlowRSVPPathObjectsIter, self).__init__() + self._parent = parent + self._choice = choice + + def __getitem__(self, key): + # type: (str) -> Union[FlowRSVPPathObjects] + return self._getitem(key) + + def __iter__(self): + # type: () -> FlowRSVPPathObjectsIter + return self._iter() + + def __next__(self): + # type: () -> FlowRSVPPathObjects + return self._next() + + def next(self): + # type: () -> FlowRSVPPathObjects + return self._next() + + def _instanceOf(self, item): + if not isinstance(item, FlowRSVPPathObjects): + raise Exception("Item is not an instance of FlowRSVPPathObjects") + + def pathobjects(self): + # type: () -> FlowRSVPPathObjectsIter + """Factory method that creates an instance of the FlowRSVPPathObjects class + + Every RSVP object encapsulated in an RSVP message consists of 32-bit word header and the object's contents. + + Returns: FlowRSVPPathObjectsIter + """ + item = FlowRSVPPathObjects(parent=self._parent) + self._add(item) + return self + + def add(self): + # type: () -> FlowRSVPPathObjects + """Add method that creates and returns an instance of the FlowRSVPPathObjects class + + Every RSVP object encapsulated in an RSVP message consists of 32-bit word header and the object's contents. + + Returns: FlowRSVPPathObjects + """ + item = FlowRSVPPathObjects(parent=self._parent) + self._add(item) + return item + + +class FlowHeaderIter(OpenApiIter): + __slots__ = ("_parent", "_choice") + + _GETITEM_RETURNS_CHOICE_OBJECT = True + + def __init__(self, parent=None, choice=None): + super(FlowHeaderIter, self).__init__() + self._parent = parent + self._choice = choice + + def __getitem__(self, key): + # type: (str) -> Union[FlowArp, FlowCustom, FlowEthernet, FlowEthernetPause, FlowGre, FlowGtpv1, FlowGtpv2, FlowHeader, FlowIcmp, FlowIcmpv6, FlowIgmpv1, FlowIpv4, FlowIpv6, FlowMpls, FlowPfcPause, FlowPpp, FlowRsvp, FlowTcp, FlowUdp, FlowVlan, FlowVxlan] + return self._getitem(key) + + def __iter__(self): + # type: () -> FlowHeaderIter + return self._iter() + + def __next__(self): + # type: () -> FlowHeader + return self._next() + + def next(self): + # type: () -> FlowHeader + return self._next() + + def _instanceOf(self, item): + if not isinstance(item, FlowHeader): + raise Exception("Item is not an instance of FlowHeader") + + def header(self): + # type: () -> FlowHeaderIter + """Factory method that creates an instance of the FlowHeader class + + Configuration for all traffic packet headers + + Returns: FlowHeaderIter + """ + item = FlowHeader(parent=self._parent, choice=self._choice) + self._add(item) + return self + + def add(self): + # type: () -> FlowHeader + """Add method that creates and returns an instance of the FlowHeader class + + Configuration for all traffic packet headers + + Returns: FlowHeader + """ + item = FlowHeader(parent=self._parent, choice=self._choice) + self._add(item) + return item + + def custom(self, bytes=None): + # type: (str) -> FlowHeaderIter + """Factory method that creates an instance of the FlowCustom class + + Custom packet header + + Returns: FlowHeaderIter + """ + item = FlowHeader() + item.custom + item.choice = "custom" + self._add(item) + return self + + def ethernet(self): + # type: () -> FlowHeaderIter + """Factory method that creates an instance of the FlowEthernet class + + Ethernet packet header + + Returns: FlowHeaderIter + """ + item = FlowHeader() + item.ethernet + item.choice = "ethernet" + self._add(item) + return self + + def vlan(self): + # type: () -> FlowHeaderIter + """Factory method that creates an instance of the FlowVlan class + + VLAN packet header + + Returns: FlowHeaderIter + """ + item = FlowHeader() + item.vlan + item.choice = "vlan" + self._add(item) + return self + + def vxlan(self): + # type: () -> FlowHeaderIter + """Factory method that creates an instance of the FlowVxlan class + + VXLAN packet header + + Returns: FlowHeaderIter + """ + item = FlowHeader() + item.vxlan + item.choice = "vxlan" + self._add(item) + return self + + def ipv4(self): + # type: () -> FlowHeaderIter + """Factory method that creates an instance of the FlowIpv4 class + + IPv4 packet header + + Returns: FlowHeaderIter + """ + item = FlowHeader() + item.ipv4 + item.choice = "ipv4" + self._add(item) + return self + + def ipv6(self): + # type: () -> FlowHeaderIter + """Factory method that creates an instance of the FlowIpv6 class + + IPv6 packet header + + Returns: FlowHeaderIter + """ + item = FlowHeader() + item.ipv6 + item.choice = "ipv6" + self._add(item) + return self + + def pfcpause(self): + # type: () -> FlowHeaderIter + """Factory method that creates an instance of the FlowPfcPause class + + IEEE 802.1Qbb PFC Pause packet header. + + Returns: FlowHeaderIter + """ + item = FlowHeader() + item.pfcpause + item.choice = "pfcpause" + self._add(item) + return self + + def ethernetpause(self): + # type: () -> FlowHeaderIter + """Factory method that creates an instance of the FlowEthernetPause class + + IEEE 802.3x global ethernet pause packet header + + Returns: FlowHeaderIter + """ + item = FlowHeader() + item.ethernetpause + item.choice = "ethernetpause" + self._add(item) + return self + + def tcp(self): + # type: () -> FlowHeaderIter + """Factory method that creates an instance of the FlowTcp class + + TCP packet header + + Returns: FlowHeaderIter + """ + item = FlowHeader() + item.tcp + item.choice = "tcp" + self._add(item) + return self + + def udp(self): + # type: () -> FlowHeaderIter + """Factory method that creates an instance of the FlowUdp class + + UDP packet header + + Returns: FlowHeaderIter + """ + item = FlowHeader() + item.udp + item.choice = "udp" + self._add(item) + return self + + def gre(self): + # type: () -> FlowHeaderIter + """Factory method that creates an instance of the FlowGre class + + Standard GRE packet header (RFC2784) + + Returns: FlowHeaderIter + """ + item = FlowHeader() + item.gre + item.choice = "gre" + self._add(item) + return self + + def gtpv1(self): + # type: () -> FlowHeaderIter + """Factory method that creates an instance of the FlowGtpv1 class + + GTPv1 packet header + + Returns: FlowHeaderIter + """ + item = FlowHeader() + item.gtpv1 + item.choice = "gtpv1" + self._add(item) + return self + + def gtpv2(self): + # type: () -> FlowHeaderIter + """Factory method that creates an instance of the FlowGtpv2 class + + GTPv2 packet header + + Returns: FlowHeaderIter + """ + item = FlowHeader() + item.gtpv2 + item.choice = "gtpv2" + self._add(item) + return self + + def arp(self): + # type: () -> FlowHeaderIter + """Factory method that creates an instance of the FlowArp class + + ARP packet header + + Returns: FlowHeaderIter + """ + item = FlowHeader() + item.arp + item.choice = "arp" + self._add(item) + return self + + def icmp(self): + # type: () -> FlowHeaderIter + """Factory method that creates an instance of the FlowIcmp class + + ICMP packet header + + Returns: FlowHeaderIter + """ + item = FlowHeader() + item.icmp + item.choice = "icmp" + self._add(item) + return self + + def icmpv6(self): + # type: () -> FlowHeaderIter + """Factory method that creates an instance of the FlowIcmpv6 class + + ICMPv6 packet header + + Returns: FlowHeaderIter + """ + item = FlowHeader() + item.icmpv6 + item.choice = "icmpv6" + self._add(item) + return self + + def ppp(self): + # type: () -> FlowHeaderIter + """Factory method that creates an instance of the FlowPpp class + + PPP packet header + + Returns: FlowHeaderIter + """ + item = FlowHeader() + item.ppp + item.choice = "ppp" + self._add(item) + return self + + def igmpv1(self): + # type: () -> FlowHeaderIter + """Factory method that creates an instance of the FlowIgmpv1 class + + IGMPv1 packet header + + Returns: FlowHeaderIter + """ + item = FlowHeader() + item.igmpv1 + item.choice = "igmpv1" + self._add(item) + return self + + def mpls(self): + # type: () -> FlowHeaderIter + """Factory method that creates an instance of the FlowMpls class + + MPLS packet header; When configuring multiple such headers, the count shall not exceed 20. + + Returns: FlowHeaderIter + """ + item = FlowHeader() + item.mpls + item.choice = "mpls" + self._add(item) + return self + + def rsvp(self): + # type: () -> FlowHeaderIter + """Factory method that creates an instance of the FlowRsvp class + + RSVP packet header as defined in RFC2205 and RFC3209. Currently only supported message type is "path" with mandatory objects and sub-objects. + + Returns: FlowHeaderIter + """ + item = FlowHeader() + item.rsvp + item.choice = "rsvp" self._add(item) return self @@ -92369,7 +105844,7 @@ def port_name(self): # type: () -> str """port_name getter - Name of the test port on which LLDP is configured on.. x-constraint:. /components/schemas/Port/properties/name. . x-constraint:. /components/schemas/Port/properties/name. + Name of the test port on which LLDP is configured on.. x-constraint:. /components/schemas/Port/properties/name. Returns: str """ @@ -92379,7 +105854,7 @@ def port_name(self): def port_name(self, value): """port_name setter - Name of the test port on which LLDP is configured on.. x-constraint:. /components/schemas/Port/properties/name. . x-constraint:. /components/schemas/Port/properties/name. + Name of the test port on which LLDP is configured on.. x-constraint:. /components/schemas/Port/properties/name. value: str """ @@ -93524,7 +106999,7 @@ def port_names(self): # type: () -> List[str] """port_names getter - The names of target ports. An empty or null list will target all ports.. x-constraint:. /components/schemas/Port/properties/name. . x-constraint:. /components/schemas/Port/properties/name. + The names of target ports. An empty or null list will target all ports.. x-constraint:. /components/schemas/Port/properties/name. Returns: List[str] """ @@ -93534,7 +107009,7 @@ def port_names(self): def port_names(self, value): """port_names setter - The names of target ports. An empty or null list will target all ports.. x-constraint:. /components/schemas/Port/properties/name. . x-constraint:. /components/schemas/Port/properties/name. + The names of target ports. An empty or null list will target all ports.. x-constraint:. /components/schemas/Port/properties/name. value: List[str] """ @@ -93606,7 +107081,7 @@ def port_names(self): # type: () -> List[str] """port_names getter - The names of ports to which the capture state will be applied to. If the list of port_names is empty or null the state will be applied to all configured ports.. If the list is not empty any port that is not included in the list of port_names MUST be ignored and not included in the state change.. x-constraint:. /components/schemas/Port/properties/name. . x-constraint:. /components/schemas/Port/properties/name. + The names of ports to which the capture state will be applied to. If the list of port_names is empty or null the state will be applied to all configured ports.. If the list is not empty any port that is not included in the list of port_names MUST be ignored and not included in the state change.. x-constraint:. /components/schemas/Port/properties/name. Returns: List[str] """ @@ -93616,7 +107091,7 @@ def port_names(self): def port_names(self, value): """port_names setter - The names of ports to which the capture state will be applied to. If the list of port_names is empty or null the state will be applied to all configured ports.. If the list is not empty any port that is not included in the list of port_names MUST be ignored and not included in the state change.. x-constraint:. /components/schemas/Port/properties/name. . x-constraint:. /components/schemas/Port/properties/name. + The names of ports to which the capture state will be applied to. If the list of port_names is empty or null the state will be applied to all configured ports.. If the list is not empty any port that is not included in the list of port_names MUST be ignored and not included in the state change.. x-constraint:. /components/schemas/Port/properties/name. value: List[str] """ @@ -93868,7 +107343,7 @@ def names(self): # type: () -> List[str] """names getter - The names of device route objects to control. If no names are specified then all route objects that match the x-constraint will be affected.. x-constraint:. /components/schemas/Bgp.V4RouteRange/properties/name. /components/schemas/Bgp.V6RouteRange/properties/name. /components/schemas/Isis.V4RouteRange/properties/name. /components/schemas/Isis.V6RouteRange/properties/name. . x-constraint:. /components/schemas/Bgp.V4RouteRange/properties/name. /components/schemas/Bgp.V6RouteRange/properties/name. /components/schemas/Isis.V4RouteRange/properties/name. /components/schemas/Isis.V6RouteRange/properties/name. + The names of device route objects to control. If no names are specified then all route objects that match the x-constraint will be affected.. x-constraint:. /components/schemas/Bgp.V4RouteRange/properties/name. /components/schemas/Bgp.V6RouteRange/properties/name. /components/schemas/Isis.V4RouteRange/properties/name. /components/schemas/Isis.V6RouteRange/properties/name. Returns: List[str] """ @@ -93878,7 +107353,7 @@ def names(self): def names(self, value): """names setter - The names of device route objects to control. If no names are specified then all route objects that match the x-constraint will be affected.. x-constraint:. /components/schemas/Bgp.V4RouteRange/properties/name. /components/schemas/Bgp.V6RouteRange/properties/name. /components/schemas/Isis.V4RouteRange/properties/name. /components/schemas/Isis.V6RouteRange/properties/name. . x-constraint:. /components/schemas/Bgp.V4RouteRange/properties/name. /components/schemas/Bgp.V6RouteRange/properties/name. /components/schemas/Isis.V4RouteRange/properties/name. /components/schemas/Isis.V6RouteRange/properties/name. + The names of device route objects to control. If no names are specified then all route objects that match the x-constraint will be affected.. x-constraint:. /components/schemas/Bgp.V4RouteRange/properties/name. /components/schemas/Bgp.V6RouteRange/properties/name. /components/schemas/Isis.V4RouteRange/properties/name. /components/schemas/Isis.V6RouteRange/properties/name. value: List[str] """ @@ -94034,7 +107509,7 @@ def lag_member_names(self): # type: () -> List[str] """lag_member_names getter - The names of LAG members (ports) for which the state has to be applied. An empty or null list will control all LAG members.. x-constraint:. /components/schemas/Port/properties/name. . x-constraint:. /components/schemas/Port/properties/name. + The names of LAG members (ports) for which the state has to be applied. An empty or null list will control all LAG members.. x-constraint:. /components/schemas/Port/properties/name. Returns: List[str] """ @@ -94044,7 +107519,7 @@ def lag_member_names(self): def lag_member_names(self, value): """lag_member_names setter - The names of LAG members (ports) for which the state has to be applied. An empty or null list will control all LAG members.. x-constraint:. /components/schemas/Port/properties/name. . x-constraint:. /components/schemas/Port/properties/name. + The names of LAG members (ports) for which the state has to be applied. An empty or null list will control all LAG members.. x-constraint:. /components/schemas/Port/properties/name. value: List[str] """ @@ -94116,7 +107591,7 @@ def lag_member_names(self): # type: () -> List[str] """lag_member_names getter - The names of LAG members (ports) for which the state has to be applied. An empty or null list will control all LAG members.. x-constraint:. /components/schemas/Port/properties/name. . x-constraint:. /components/schemas/Port/properties/name. + The names of LAG members (ports) for which the state has to be applied. An empty or null list will control all LAG members.. x-constraint:. /components/schemas/Port/properties/name. Returns: List[str] """ @@ -94126,7 +107601,7 @@ def lag_member_names(self): def lag_member_names(self, value): """lag_member_names setter - The names of LAG members (ports) for which the state has to be applied. An empty or null list will control all LAG members.. x-constraint:. /components/schemas/Port/properties/name. . x-constraint:. /components/schemas/Port/properties/name. + The names of LAG members (ports) for which the state has to be applied. An empty or null list will control all LAG members.. x-constraint:. /components/schemas/Port/properties/name. value: List[str] """ @@ -94266,7 +107741,7 @@ def peer_names(self): # type: () -> List[str] """peer_names getter - The names of BGP peers for which the state has to be applied. An empty or null list will control all BGP peers.. x-constraint:. /components/schemas/Bgp.V4Peer/properties/name. /components/schemas/Bgp.V6Peer/properties/name. . x-constraint:. /components/schemas/Bgp.V4Peer/properties/name. /components/schemas/Bgp.V6Peer/properties/name. + The names of BGP peers for which the state has to be applied. An empty or null list will control all BGP peers.. x-constraint:. /components/schemas/Bgp.V4Peer/properties/name. /components/schemas/Bgp.V6Peer/properties/name. Returns: List[str] """ @@ -94276,7 +107751,7 @@ def peer_names(self): def peer_names(self, value): """peer_names setter - The names of BGP peers for which the state has to be applied. An empty or null list will control all BGP peers.. x-constraint:. /components/schemas/Bgp.V4Peer/properties/name. /components/schemas/Bgp.V6Peer/properties/name. . x-constraint:. /components/schemas/Bgp.V4Peer/properties/name. /components/schemas/Bgp.V6Peer/properties/name. + The names of BGP peers for which the state has to be applied. An empty or null list will control all BGP peers.. x-constraint:. /components/schemas/Bgp.V4Peer/properties/name. /components/schemas/Bgp.V6Peer/properties/name. value: List[str] """ @@ -94416,7 +107891,7 @@ def router_names(self): # type: () -> List[str] """router_names getter - The names of ISIS routers for which the state has to be applied. An empty or null list will control all ISIS routers.. x-constraint:. /components/schemas/Device.IsisRouter/properties/name. . x-constraint:. /components/schemas/Device.IsisRouter/properties/name. + The names of ISIS routers for which the state has to be applied. An empty or null list will control all ISIS routers.. x-constraint:. /components/schemas/Device.IsisRouter/properties/name. Returns: List[str] """ @@ -94426,7 +107901,7 @@ def router_names(self): def router_names(self, value): """router_names setter - The names of ISIS routers for which the state has to be applied. An empty or null list will control all ISIS routers.. x-constraint:. /components/schemas/Device.IsisRouter/properties/name. . x-constraint:. /components/schemas/Device.IsisRouter/properties/name. + The names of ISIS routers for which the state has to be applied. An empty or null list will control all ISIS routers.. x-constraint:. /components/schemas/Device.IsisRouter/properties/name. value: List[str] """ @@ -94572,7 +108047,7 @@ def flow_names(self): # type: () -> List[str] """flow_names getter - The names of flows to which the transmit state will be applied to. If the list of flow_names is empty or null the state will be applied to all configured flows.. If the list is not empty any flow that is not included in the list of flow_names MUST be ignored and not included in the state change.. x-constraint:. /components/schemas/Flow/properties/name. . x-constraint:. /components/schemas/Flow/properties/name. + The names of flows to which the transmit state will be applied to. If the list of flow_names is empty or null the state will be applied to all configured flows.. If the list is not empty any flow that is not included in the list of flow_names MUST be ignored and not included in the state change.. x-constraint:. /components/schemas/Flow/properties/name. Returns: List[str] """ @@ -94582,7 +108057,7 @@ def flow_names(self): def flow_names(self, value): """flow_names setter - The names of flows to which the transmit state will be applied to. If the list of flow_names is empty or null the state will be applied to all configured flows.. If the list is not empty any flow that is not included in the list of flow_names MUST be ignored and not included in the state change.. x-constraint:. /components/schemas/Flow/properties/name. . x-constraint:. /components/schemas/Flow/properties/name. + The names of flows to which the transmit state will be applied to. If the list of flow_names is empty or null the state will be applied to all configured flows.. If the list is not empty any flow that is not included in the list of flow_names MUST be ignored and not included in the state change.. x-constraint:. /components/schemas/Flow/properties/name. value: List[str] """ @@ -94910,7 +108385,7 @@ def src_name(self): # type: () -> str """src_name getter - Name of source IPv4 interface to be used.. x-constraint:. /components/schemas/Device.Ipv4/properties/name. . x-constraint:. /components/schemas/Device.Ipv4/properties/name. + Name of source IPv4 interface to be used.. x-constraint:. /components/schemas/Device.Ipv4/properties/name. Returns: str """ @@ -94920,7 +108395,7 @@ def src_name(self): def src_name(self, value): """src_name setter - Name of source IPv4 interface to be used.. x-constraint:. /components/schemas/Device.Ipv4/properties/name. . x-constraint:. /components/schemas/Device.Ipv4/properties/name. + Name of source IPv4 interface to be used.. x-constraint:. /components/schemas/Device.Ipv4/properties/name. value: str """ @@ -94982,7 +108457,7 @@ def pingrequest(self, src_name=None, dst_ip=None): # type: (str,str) -> ActionProtocolIpv4PingRequestIter """Factory method that creates an instance of the ActionProtocolIpv4PingRequest class - Under Review: Most ping request parameters are still TBD.. Under Review: Most ping request parameters are still TBD.. Request for initiating ping between single source and destination pair.. For ping request, IPv4 ICMP Echo Request shall be sent and wait for ping response to either succeed or time out. The API wait timeout for each request shall be 300ms. + Under Review: Most ping request parameters are still TBD.. Request for initiating ping between single source and destination pair.. For ping request, IPv4 ICMP Echo Request shall be sent and wait for ping response to either succeed or time out. The API wait timeout for each request shall be 300ms. Returns: ActionProtocolIpv4PingRequestIter """ @@ -94996,7 +108471,7 @@ def add(self, src_name=None, dst_ip=None): # type: (str,str) -> ActionProtocolIpv4PingRequest """Add method that creates and returns an instance of the ActionProtocolIpv4PingRequest class - Under Review: Most ping request parameters are still TBD.. Under Review: Most ping request parameters are still TBD.. Request for initiating ping between single source and destination pair.. For ping request, IPv4 ICMP Echo Request shall be sent and wait for ping response to either succeed or time out. The API wait timeout for each request shall be 300ms. + Under Review: Most ping request parameters are still TBD.. Request for initiating ping between single source and destination pair.. For ping request, IPv4 ICMP Echo Request shall be sent and wait for ping response to either succeed or time out. The API wait timeout for each request shall be 300ms. Returns: ActionProtocolIpv4PingRequest """ @@ -95141,7 +108616,7 @@ def src_name(self): # type: () -> str """src_name getter - Name of source IPv6 interface to be used.. x-constraint:. /components/schemas/Device.Ipv6/properties/name. . x-constraint:. /components/schemas/Device.Ipv6/properties/name. + Name of source IPv6 interface to be used.. x-constraint:. /components/schemas/Device.Ipv6/properties/name. Returns: str """ @@ -95151,7 +108626,7 @@ def src_name(self): def src_name(self, value): """src_name setter - Name of source IPv6 interface to be used.. x-constraint:. /components/schemas/Device.Ipv6/properties/name. . x-constraint:. /components/schemas/Device.Ipv6/properties/name. + Name of source IPv6 interface to be used.. x-constraint:. /components/schemas/Device.Ipv6/properties/name. value: str """ @@ -95213,7 +108688,7 @@ def pingrequest(self, src_name=None, dst_ip=None): # type: (str,str) -> ActionProtocolIpv6PingRequestIter """Factory method that creates an instance of the ActionProtocolIpv6PingRequest class - Under Review: Most ping request parameters are still TBD.. Under Review: Most ping request parameters are still TBD.. Request for initiating ping between single source and destination pair.. For ping request, IPv6 ICMP Echo Request shall be sent and wait for ping response to either succeed or time out. The API wait timeout for each request shall be 300ms. + Under Review: Most ping request parameters are still TBD.. Request for initiating ping between single source and destination pair.. For ping request, IPv6 ICMP Echo Request shall be sent and wait for ping response to either succeed or time out. The API wait timeout for each request shall be 300ms. Returns: ActionProtocolIpv6PingRequestIter """ @@ -95227,7 +108702,7 @@ def add(self, src_name=None, dst_ip=None): # type: (str,str) -> ActionProtocolIpv6PingRequest """Add method that creates and returns an instance of the ActionProtocolIpv6PingRequest class - Under Review: Most ping request parameters are still TBD.. Under Review: Most ping request parameters are still TBD.. Request for initiating ping between single source and destination pair.. For ping request, IPv6 ICMP Echo Request shall be sent and wait for ping response to either succeed or time out. The API wait timeout for each request shall be 300ms. + Under Review: Most ping request parameters are still TBD.. Request for initiating ping between single source and destination pair.. For ping request, IPv6 ICMP Echo Request shall be sent and wait for ping response to either succeed or time out. The API wait timeout for each request shall be 300ms. Returns: ActionProtocolIpv6PingRequest """ @@ -95493,7 +108968,7 @@ def names(self): # type: () -> List[str] """names getter - The names of BGP Peers to send NOTIFICATION to. If no name is specified then NOTIFICATION will be sent to all configured BGP peers.. x-constraint:. /components/schemas/Device.Bgp/properties/name. . x-constraint:. /components/schemas/Device.Bgp/properties/name. + The names of BGP Peers to send NOTIFICATION to. If no name is specified then NOTIFICATION will be sent to all configured BGP peers.. x-constraint:. /components/schemas/Device.Bgp/properties/name. Returns: List[str] """ @@ -95503,7 +108978,7 @@ def names(self): def names(self, value): """names setter - The names of BGP Peers to send NOTIFICATION to. If no name is specified then NOTIFICATION will be sent to all configured BGP peers.. x-constraint:. /components/schemas/Device.Bgp/properties/name. . x-constraint:. /components/schemas/Device.Bgp/properties/name. + The names of BGP Peers to send NOTIFICATION to. If no name is specified then NOTIFICATION will be sent to all configured BGP peers.. x-constraint:. /components/schemas/Device.Bgp/properties/name. value: List[str] """ @@ -95980,7 +109455,7 @@ def peer_names(self): # type: () -> List[str] """peer_names getter - The names of device BGP peers objects to control.. x-constraint:. /components/schemas/Device.Bgp/properties/name. . x-constraint:. /components/schemas/Device.Bgp/properties/name. + The names of device BGP peers objects to control.. x-constraint:. /components/schemas/Device.Bgp/properties/name. Returns: List[str] """ @@ -95990,7 +109465,7 @@ def peer_names(self): def peer_names(self, value): """peer_names setter - The names of device BGP peers objects to control.. x-constraint:. /components/schemas/Device.Bgp/properties/name. . x-constraint:. /components/schemas/Device.Bgp/properties/name. + The names of device BGP peers objects to control.. x-constraint:. /components/schemas/Device.Bgp/properties/name. value: List[str] """ @@ -96374,7 +109849,7 @@ def src_name(self): # type: () -> str """src_name getter - Name of source IPv4 interface used for ping.. x-constraint:. /components/schemas/Device.Ipv4/properties/name. . x-constraint:. /components/schemas/Device.Ipv4/properties/name. + Name of source IPv4 interface used for ping.. x-constraint:. /components/schemas/Device.Ipv4/properties/name. Returns: str """ @@ -96384,7 +109859,7 @@ def src_name(self): def src_name(self, value): """src_name setter - Name of source IPv4 interface used for ping.. x-constraint:. /components/schemas/Device.Ipv4/properties/name. . x-constraint:. /components/schemas/Device.Ipv4/properties/name. + Name of source IPv4 interface used for ping.. x-constraint:. /components/schemas/Device.Ipv4/properties/name. value: str """ @@ -96646,7 +110121,7 @@ def src_name(self): # type: () -> str """src_name getter - Name of source IPv6 interface used for ping.. x-constraint:. /components/schemas/Device.Ipv6/properties/name. . x-constraint:. /components/schemas/Device.Ipv6/properties/name. + Name of source IPv6 interface used for ping.. x-constraint:. /components/schemas/Device.Ipv6/properties/name. Returns: str """ @@ -96656,7 +110131,7 @@ def src_name(self): def src_name(self, value): """src_name setter - Name of source IPv6 interface used for ping.. x-constraint:. /components/schemas/Device.Ipv6/properties/name. . x-constraint:. /components/schemas/Device.Ipv6/properties/name. + Name of source IPv6 interface used for ping.. x-constraint:. /components/schemas/Device.Ipv6/properties/name. value: str """ @@ -97015,7 +110490,7 @@ def port_names(self): # type: () -> List[str] """port_names getter - The names of objects to return results for. An empty list will return all port row results.. x-constraint:. /components/schemas/Port/properties/name. . x-constraint:. /components/schemas/Port/properties/name. + The names of objects to return results for. An empty list will return all port row results.. x-constraint:. /components/schemas/Port/properties/name. Returns: List[str] """ @@ -97025,7 +110500,7 @@ def port_names(self): def port_names(self, value): """port_names setter - The names of objects to return results for. An empty list will return all port row results.. x-constraint:. /components/schemas/Port/properties/name. . x-constraint:. /components/schemas/Port/properties/name. + The names of objects to return results for. An empty list will return all port row results.. x-constraint:. /components/schemas/Port/properties/name. value: List[str] """ @@ -97107,7 +110582,7 @@ def flow_names(self): # type: () -> List[str] """flow_names getter - Flow metrics will be retrieved for these flow names.. If no flow names are specified then all flows will be returned.. x-constraint:. /components/schemas/Flow/properties/name. . x-constraint:. /components/schemas/Flow/properties/name. + Flow metrics will be retrieved for these flow names.. If no flow names are specified then all flows will be returned.. x-constraint:. /components/schemas/Flow/properties/name. Returns: List[str] """ @@ -97117,7 +110592,7 @@ def flow_names(self): def flow_names(self, value): """flow_names setter - Flow metrics will be retrieved for these flow names.. If no flow names are specified then all flows will be returned.. x-constraint:. /components/schemas/Flow/properties/name. . x-constraint:. /components/schemas/Flow/properties/name. + Flow metrics will be retrieved for these flow names.. If no flow names are specified then all flows will be returned.. x-constraint:. /components/schemas/Flow/properties/name. value: List[str] """ @@ -97481,7 +110956,7 @@ def peer_names(self): # type: () -> List[str] """peer_names getter - The names of BGPv4 peers to return results for. An empty list will return results for all BGPv4 peers.. x-constraint:. /components/schemas/Bgp.V4peer/properties/name. . x-constraint:. /components/schemas/Bgp.V4peer/properties/name. + The names of BGPv4 peers to return results for. An empty list will return results for all BGPv4 peers.. x-constraint:. /components/schemas/Bgp.V4peer/properties/name. Returns: List[str] """ @@ -97491,7 +110966,7 @@ def peer_names(self): def peer_names(self, value): """peer_names setter - The names of BGPv4 peers to return results for. An empty list will return results for all BGPv4 peers.. x-constraint:. /components/schemas/Bgp.V4peer/properties/name. . x-constraint:. /components/schemas/Bgp.V4peer/properties/name. + The names of BGPv4 peers to return results for. An empty list will return results for all BGPv4 peers.. x-constraint:. /components/schemas/Bgp.V4peer/properties/name. value: List[str] """ @@ -97590,7 +111065,7 @@ def peer_names(self): # type: () -> List[str] """peer_names getter - The names of BGPv6 peers to return results for. An empty list will return results for all BGPv6 peers.. x-constraint:. /components/schemas/Bgp.V6peer/properties/name. . x-constraint:. /components/schemas/Bgp.V6peer/properties/name. + The names of BGPv6 peers to return results for. An empty list will return results for all BGPv6 peers.. x-constraint:. /components/schemas/Bgp.V6peer/properties/name. Returns: List[str] """ @@ -97600,7 +111075,7 @@ def peer_names(self): def peer_names(self, value): """peer_names setter - The names of BGPv6 peers to return results for. An empty list will return results for all BGPv6 peers.. x-constraint:. /components/schemas/Bgp.V6peer/properties/name. . x-constraint:. /components/schemas/Bgp.V6peer/properties/name. + The names of BGPv6 peers to return results for. An empty list will return results for all BGPv6 peers.. x-constraint:. /components/schemas/Bgp.V6peer/properties/name. value: List[str] """ @@ -97719,7 +111194,7 @@ def router_names(self): # type: () -> List[str] """router_names getter - The names of ISIS Routers to return results for. An empty list will return results for all ISIS router.. x-constraint:. /components/schemas/Device.IsisRouter/properties/name. . x-constraint:. /components/schemas/Device.IsisRouter/properties/name. + The names of ISIS Routers to return results for. An empty list will return results for all ISIS router.. x-constraint:. /components/schemas/Device.IsisRouter/properties/name. Returns: List[str] """ @@ -97729,7 +111204,7 @@ def router_names(self): def router_names(self, value): """router_names setter - The names of ISIS Routers to return results for. An empty list will return results for all ISIS router.. x-constraint:. /components/schemas/Device.IsisRouter/properties/name. . x-constraint:. /components/schemas/Device.IsisRouter/properties/name. + The names of ISIS Routers to return results for. An empty list will return results for all ISIS router.. x-constraint:. /components/schemas/Device.IsisRouter/properties/name. value: List[str] """ @@ -97816,7 +111291,7 @@ def lag_names(self): # type: () -> List[str] """lag_names getter - The names of LAGs to return results for. An empty list will return results for all LAGs.. x-constraint:. /components/schemas/Lag/properties/name. . x-constraint:. /components/schemas/Lag/properties/name. + The names of LAGs to return results for. An empty list will return results for all LAGs.. x-constraint:. /components/schemas/Lag/properties/name. Returns: List[str] """ @@ -97826,7 +111301,7 @@ def lag_names(self): def lag_names(self, value): """lag_names setter - The names of LAGs to return results for. An empty list will return results for all LAGs.. x-constraint:. /components/schemas/Lag/properties/name. . x-constraint:. /components/schemas/Lag/properties/name. + The names of LAGs to return results for. An empty list will return results for all LAGs.. x-constraint:. /components/schemas/Lag/properties/name. value: List[str] """ @@ -97930,7 +111405,7 @@ def lag_names(self): # type: () -> List[str] """lag_names getter - The names of LAG (ports group) for which LACP metrics to be returned. An empty list will return metrics for all LAGs.. x-constraint:. /components/schemas/Lag/properties/name. . x-constraint:. /components/schemas/Lag/properties/name. + The names of LAG (ports group) for which LACP metrics to be returned. An empty list will return metrics for all LAGs.. x-constraint:. /components/schemas/Lag/properties/name. Returns: List[str] """ @@ -97940,7 +111415,7 @@ def lag_names(self): def lag_names(self, value): """lag_names setter - The names of LAG (ports group) for which LACP metrics to be returned. An empty list will return metrics for all LAGs.. x-constraint:. /components/schemas/Lag/properties/name. . x-constraint:. /components/schemas/Lag/properties/name. + The names of LAG (ports group) for which LACP metrics to be returned. An empty list will return metrics for all LAGs.. x-constraint:. /components/schemas/Lag/properties/name. value: List[str] """ @@ -97951,7 +111426,7 @@ def lag_member_port_names(self): # type: () -> List[str] """lag_member_port_names getter - The names of LAG members (ports) for which LACP metrics to be returned. An empty list will return metrics for all LAG members.. x-constraint:. /components/schemas/Port/properties/name. . x-constraint:. /components/schemas/Port/properties/name. + The names of LAG members (ports) for which LACP metrics to be returned. An empty list will return metrics for all LAG members.. x-constraint:. /components/schemas/Port/properties/name. Returns: List[str] """ @@ -97961,7 +111436,7 @@ def lag_member_port_names(self): def lag_member_port_names(self, value): """lag_member_port_names setter - The names of LAG members (ports) for which LACP metrics to be returned. An empty list will return metrics for all LAG members.. x-constraint:. /components/schemas/Port/properties/name. . x-constraint:. /components/schemas/Port/properties/name. + The names of LAG members (ports) for which LACP metrics to be returned. An empty list will return metrics for all LAG members.. x-constraint:. /components/schemas/Port/properties/name. value: List[str] """ @@ -98040,7 +111515,7 @@ def lldp_names(self): # type: () -> List[str] """lldp_names getter - The names of LLDP instances to return results for. An empty list will return results for all LLDP instances.. x-constraint:. /components/schemas/Lldp/properties/name. . x-constraint:. /components/schemas/Lldp/properties/name. + The names of LLDP instances to return results for. An empty list will return results for all LLDP instances.. x-constraint:. /components/schemas/Lldp/properties/name. Returns: List[str] """ @@ -98050,7 +111525,7 @@ def lldp_names(self): def lldp_names(self, value): """lldp_names setter - The names of LLDP instances to return results for. An empty list will return results for all LLDP instances.. x-constraint:. /components/schemas/Lldp/properties/name. . x-constraint:. /components/schemas/Lldp/properties/name. + The names of LLDP instances to return results for. An empty list will return results for all LLDP instances.. x-constraint:. /components/schemas/Lldp/properties/name. value: List[str] """ @@ -98177,7 +111652,7 @@ def router_names(self): # type: () -> List[str] """router_names getter - The names of RSVP-TE Routers to return results for. An empty list as input will return results for all RSVP-TE routers.. x-constraint:. /components/schemas/Device.Rsvp/properties/name. . x-constraint:. /components/schemas/Device.Rsvp/properties/name. + The names of RSVP-TE Routers to return results for. An empty list as input will return results for all RSVP-TE routers.. x-constraint:. /components/schemas/Device.Rsvp/properties/name. Returns: List[str] """ @@ -98187,7 +111662,7 @@ def router_names(self): def router_names(self, value): """router_names setter - The names of RSVP-TE Routers to return results for. An empty list as input will return results for all RSVP-TE routers.. x-constraint:. /components/schemas/Device.Rsvp/properties/name. . x-constraint:. /components/schemas/Device.Rsvp/properties/name. + The names of RSVP-TE Routers to return results for. An empty list as input will return results for all RSVP-TE routers.. x-constraint:. /components/schemas/Device.Rsvp/properties/name. value: List[str] """ @@ -98535,7 +112010,7 @@ def name(self): # type: () -> str """name getter - The name of configured port. x-constraint:. /components/schemas/Port/properties/name. . x-constraint:. /components/schemas/Port/properties/name. + The name of configured port. x-constraint:. /components/schemas/Port/properties/name. Returns: str """ @@ -98545,7 +112020,7 @@ def name(self): def name(self, value): """name setter - The name of configured port. x-constraint:. /components/schemas/Port/properties/name. . x-constraint:. /components/schemas/Port/properties/name. + The name of configured port. x-constraint:. /components/schemas/Port/properties/name. value: str """ @@ -102489,7 +115964,7 @@ def name(self): # type: () -> str """name getter - The name of configured LAG. x-constraint:. /components/schemas/Lag/properties/name. . x-constraint:. /components/schemas/Lag/properties/name. + The name of configured LAG. x-constraint:. /components/schemas/Lag/properties/name. Returns: str """ @@ -102499,7 +115974,7 @@ def name(self): def name(self, value): """name setter - The name of configured LAG. x-constraint:. /components/schemas/Lag/properties/name. . x-constraint:. /components/schemas/Lag/properties/name. + The name of configured LAG. x-constraint:. /components/schemas/Lag/properties/name. value: str """ @@ -105027,7 +118502,7 @@ def ethernet_names(self): # type: () -> List[str] """ethernet_names getter - The names of Ethernet interfaces for which Neighbor state (ARP cache entries) will be retrieved. If no names are specified then the results will contain Neighbor state (ARP cache entries) for all available Ethernet interfaces.. x-constraint:. /components/schemas/Device.Ethernet/properties/name. . x-constraint:. /components/schemas/Device.Ethernet/properties/name. + The names of Ethernet interfaces for which Neighbor state (ARP cache entries) will be retrieved. If no names are specified then the results will contain Neighbor state (ARP cache entries) for all available Ethernet interfaces.. x-constraint:. /components/schemas/Device.Ethernet/properties/name. Returns: List[str] """ @@ -105037,7 +118512,7 @@ def ethernet_names(self): def ethernet_names(self, value): """ethernet_names setter - The names of Ethernet interfaces for which Neighbor state (ARP cache entries) will be retrieved. If no names are specified then the results will contain Neighbor state (ARP cache entries) for all available Ethernet interfaces.. x-constraint:. /components/schemas/Device.Ethernet/properties/name. . x-constraint:. /components/schemas/Device.Ethernet/properties/name. + The names of Ethernet interfaces for which Neighbor state (ARP cache entries) will be retrieved. If no names are specified then the results will contain Neighbor state (ARP cache entries) for all available Ethernet interfaces.. x-constraint:. /components/schemas/Device.Ethernet/properties/name. value: List[str] """ @@ -105075,7 +118550,7 @@ def ethernet_names(self): # type: () -> List[str] """ethernet_names getter - The names of Ethernet interfaces for which Neighbor state (NDISC cache entries) will be retrieved. If no names are specified then the results will contain Neighbor state (NDISC cache entries) for all available Ethernet interfaces.. x-constraint:. /components/schemas/Device.Ethernet/properties/name. . x-constraint:. /components/schemas/Device.Ethernet/properties/name. + The names of Ethernet interfaces for which Neighbor state (NDISC cache entries) will be retrieved. If no names are specified then the results will contain Neighbor state (NDISC cache entries) for all available Ethernet interfaces.. x-constraint:. /components/schemas/Device.Ethernet/properties/name. Returns: List[str] """ @@ -105085,7 +118560,7 @@ def ethernet_names(self): def ethernet_names(self, value): """ethernet_names setter - The names of Ethernet interfaces for which Neighbor state (NDISC cache entries) will be retrieved. If no names are specified then the results will contain Neighbor state (NDISC cache entries) for all available Ethernet interfaces.. x-constraint:. /components/schemas/Device.Ethernet/properties/name. . x-constraint:. /components/schemas/Device.Ethernet/properties/name. + The names of Ethernet interfaces for which Neighbor state (NDISC cache entries) will be retrieved. If no names are specified then the results will contain Neighbor state (NDISC cache entries) for all available Ethernet interfaces.. x-constraint:. /components/schemas/Device.Ethernet/properties/name. value: List[str] """ @@ -105137,7 +118612,7 @@ def bgp_peer_names(self): # type: () -> List[str] """bgp_peer_names getter - The names of BGP peers for which prefix information will be retrieved. If no names are specified then the results will contain prefix information for all configured BGP peers.. x-constraint:. /components/schemas/Bgp.V4Peer/properties/name. /components/schemas/Bgp.V6Peer/properties/name. . x-constraint:. /components/schemas/Bgp.V4Peer/properties/name. /components/schemas/Bgp.V6Peer/properties/name. + The names of BGP peers for which prefix information will be retrieved. If no names are specified then the results will contain prefix information for all configured BGP peers.. x-constraint:. /components/schemas/Bgp.V4Peer/properties/name. /components/schemas/Bgp.V6Peer/properties/name. Returns: List[str] """ @@ -105147,7 +118622,7 @@ def bgp_peer_names(self): def bgp_peer_names(self, value): """bgp_peer_names setter - The names of BGP peers for which prefix information will be retrieved. If no names are specified then the results will contain prefix information for all configured BGP peers.. x-constraint:. /components/schemas/Bgp.V4Peer/properties/name. /components/schemas/Bgp.V6Peer/properties/name. . x-constraint:. /components/schemas/Bgp.V4Peer/properties/name. /components/schemas/Bgp.V6Peer/properties/name. + The names of BGP peers for which prefix information will be retrieved. If no names are specified then the results will contain prefix information for all configured BGP peers.. x-constraint:. /components/schemas/Bgp.V4Peer/properties/name. /components/schemas/Bgp.V6Peer/properties/name. value: List[str] """ @@ -105648,7 +119123,7 @@ def isis_router_names(self): # type: () -> List[str] """isis_router_names getter - The names of ISIS routers for which learned information is requested. An empty list will return results for all ISIS routers.. x-constraint:. /components/schemas/Device.IsisRouter/properties/name. . x-constraint:. /components/schemas/Device.IsisRouter/properties/name. + The names of ISIS routers for which learned information is requested. An empty list will return results for all ISIS routers.. x-constraint:. /components/schemas/Device.IsisRouter/properties/name. Returns: List[str] """ @@ -105658,7 +119133,7 @@ def isis_router_names(self): def isis_router_names(self, value): """isis_router_names setter - The names of ISIS routers for which learned information is requested. An empty list will return results for all ISIS routers.. x-constraint:. /components/schemas/Device.IsisRouter/properties/name. . x-constraint:. /components/schemas/Device.IsisRouter/properties/name. + The names of ISIS routers for which learned information is requested. An empty list will return results for all ISIS routers.. x-constraint:. /components/schemas/Device.IsisRouter/properties/name. value: List[str] """ @@ -105701,7 +119176,7 @@ def lldp_names(self): # type: () -> List[str] """lldp_names getter - The names of LLDP instances for which neighbor information will be retrieved. If no names are specified then the results will contain neighbor information for all configured LLDP instances.. x-constraint:. /components/schemas/Lldp/properties/name. . x-constraint:. /components/schemas/Lldp/properties/name. + The names of LLDP instances for which neighbor information will be retrieved. If no names are specified then the results will contain neighbor information for all configured LLDP instances.. x-constraint:. /components/schemas/Lldp/properties/name. Returns: List[str] """ @@ -105711,7 +119186,7 @@ def lldp_names(self): def lldp_names(self, value): """lldp_names setter - The names of LLDP instances for which neighbor information will be retrieved. If no names are specified then the results will contain neighbor information for all configured LLDP instances.. x-constraint:. /components/schemas/Lldp/properties/name. . x-constraint:. /components/schemas/Lldp/properties/name. + The names of LLDP instances for which neighbor information will be retrieved. If no names are specified then the results will contain neighbor information for all configured LLDP instances.. x-constraint:. /components/schemas/Lldp/properties/name. value: List[str] """ @@ -105770,7 +119245,7 @@ def rsvp_router_names(self): # type: () -> List[str] """rsvp_router_names getter - The names of RSVP-TE routers for which learned information is requested. An empty list will return results for all RSVP=TE routers.. x-constraint:. /components/schemas/Device.Rsvp/properties/name. . x-constraint:. /components/schemas/Device.Rsvp/properties/name. + The names of RSVP-TE routers for which learned information is requested. An empty list will return results for all RSVP=TE routers.. x-constraint:. /components/schemas/Device.Rsvp/properties/name. Returns: List[str] """ @@ -105780,7 +119255,7 @@ def rsvp_router_names(self): def rsvp_router_names(self, value): """rsvp_router_names setter - The names of RSVP-TE routers for which learned information is requested. An empty list will return results for all RSVP=TE routers.. x-constraint:. /components/schemas/Device.Rsvp/properties/name. . x-constraint:. /components/schemas/Device.Rsvp/properties/name. + The names of RSVP-TE routers for which learned information is requested. An empty list will return results for all RSVP=TE routers.. x-constraint:. /components/schemas/Device.Rsvp/properties/name. value: List[str] """ @@ -111625,7 +125100,7 @@ def port_name(self): # type: () -> str """port_name getter - The name of port capture is started on.. x-constraint:. /components/schemas/Port/properties/name. . x-constraint:. /components/schemas/Port/properties/name. + The name of port capture is started on.. x-constraint:. /components/schemas/Port/properties/name. Returns: str """ @@ -111635,7 +125110,7 @@ def port_name(self): def port_name(self, value): """port_name setter - The name of port capture is started on.. x-constraint:. /components/schemas/Port/properties/name. . x-constraint:. /components/schemas/Port/properties/name. + The name of port capture is started on.. x-constraint:. /components/schemas/Port/properties/name. value: str """